From a213674a98bf9ae48ac4ef0c527e9f00340049d1 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 22 Jul 2019 15:23:05 +0000 Subject: [PATCH 0001/3421] Update pandas from 0.24.2 to 0.25.0 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 52442fb19..fef8f06f3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,5 +2,5 @@ -r requirements-common.txt numpy==1.16.4 -pandas==0.24.2 +pandas==0.25.0 scipy==1.3.0 From d6b6e59ab8d92a8f388ea556831e829821893a47 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 22 Jul 2019 15:23:06 +0000 Subject: [PATCH 0002/3421] Update ccxt from 1.18.860 to 1.18.965 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 409c979b5..5f549e245 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.860 +ccxt==1.18.965 SQLAlchemy==1.3.5 python-telegram-bot==11.1.0 arrow==0.14.2 From 7add015a758a69a0434c36589c99c18dbe17b14a Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 22 Jul 2019 15:23:07 +0000 Subject: [PATCH 0003/3421] Update sqlalchemy from 1.3.5 to 1.3.6 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 5f549e245..4c8bab90d 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.18.965 -SQLAlchemy==1.3.5 +SQLAlchemy==1.3.6 python-telegram-bot==11.1.0 arrow==0.14.2 cachetools==3.1.1 From 6c41ca4b8cb00984c111d6a987072d5cf3f21219 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 22 Jul 2019 15:23:08 +0000 Subject: [PATCH 0004/3421] Update flask from 1.0.3 to 1.1.1 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 4c8bab90d..3cf34ad61 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -29,4 +29,4 @@ python-rapidjson==0.7.2 sdnotify==0.3.2 # Api server -flask==1.0.3 +flask==1.1.1 From e0cd34c9e1d32e7017acb22fdac6bdfc763cb432 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 22 Jul 2019 15:23:09 +0000 Subject: [PATCH 0005/3421] Update flake8 from 3.7.7 to 3.7.8 --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 83fec3b8a..28fd19ce4 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,7 +2,7 @@ -r requirements.txt -r requirements-plot.txt -flake8==3.7.7 +flake8==3.7.8 flake8-type-annotations==0.1.0 flake8-tidy-imports==2.0.0 pytest==5.0.0 From bd0faaf70291b7f8e8b1fb4fe9d42197fd2102c3 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 22 Jul 2019 15:23:11 +0000 Subject: [PATCH 0006/3421] Update pytest from 5.0.0 to 5.0.1 --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 28fd19ce4..e6f7bde1c 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -5,7 +5,7 @@ flake8==3.7.8 flake8-type-annotations==0.1.0 flake8-tidy-imports==2.0.0 -pytest==5.0.0 +pytest==5.0.1 pytest-mock==1.10.4 pytest-asyncio==0.10.0 pytest-cov==2.7.1 From 76b9d781ee9b028b12e78409444b6f34ab0f1a41 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 22 Jul 2019 15:23:12 +0000 Subject: [PATCH 0007/3421] Update mypy from 0.711 to 0.720 --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index e6f7bde1c..946d63039 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,4 +11,4 @@ pytest-asyncio==0.10.0 pytest-cov==2.7.1 pytest-random-order==1.0.4 coveralls==1.8.1 -mypy==0.711 +mypy==0.720 From 44b2261c347eb4757e3a6976e340e7e23f8c34dd Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 22 Jul 2019 15:23:13 +0000 Subject: [PATCH 0008/3421] Update plotly from 3.10.0 to 4.0.0 --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index d4e4fc165..a6753fc3f 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==3.10.0 +plotly==4.0.0 From 04382d4b44c867034ff4c1dd21e49d432879baf3 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 22 Jul 2019 19:37:34 +0300 Subject: [PATCH 0009/3421] add --hyperopt-path option --- docs/bot-usage.md | 5 ++++- freqtrade/configuration/arguments.py | 8 +++++++- freqtrade/configuration/configuration.py | 7 +++++-- freqtrade/resolvers/hyperopt_resolver.py | 4 ++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index c643ecace..8031a2072 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -201,7 +201,8 @@ to find optimal parameter values for your stategy. usage: freqtrade hyperopt [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE] [--max_open_trades INT] [--stake_amount STAKE_AMOUNT] [-r] - [--customhyperopt NAME] [--eps] [-e INT] + [--customhyperopt NAME] [--hyperopt-path PATH] + [--eps] [-e INT] [-s {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...]] [--dmmp] [--print-all] [-j JOBS] [--random-state INT] [--min-trades INT] [--continue] @@ -225,6 +226,8 @@ optional arguments: --customhyperopt NAME Specify hyperopt class name (default: `DefaultHyperOpts`). + --hyperopt-path PATH Specify additional lookup path for Hyperopts and + Hyperopt Loss functions. --eps, --enable-position-stacking Allow buying the same pair multiple times (position stacking). diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 3bbdc4bc2..c70d1b4d2 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -168,6 +168,11 @@ AVAILABLE_CLI_OPTIONS = { metavar='NAME', default=constants.DEFAULT_HYPEROPT, ), + "hyperopt_path": Arg( + '--hyperopt-path', + help='Specify additional lookup path for Hyperopts and Hyperopt Loss functions.', + metavar='PATH', + ), "epochs": Arg( '-e', '--epochs', help='Specify number of epochs (default: %(default)d).', @@ -312,7 +317,8 @@ ARGS_COMMON_OPTIMIZE = ["ticker_interval", "timerange", ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + ["position_stacking", "use_max_market_positions", "live", "strategy_list", "export", "exportfilename"] -ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + ["hyperopt", "position_stacking", "epochs", "spaces", +ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + ["hyperopt", "hyperopt_path", + "position_stacking", "epochs", "spaces", "use_max_market_positions", "print_all", "hyperopt_jobs", "hyperopt_random_state", "hyperopt_min_trades", "hyperopt_continue", "hyperopt_loss"] diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 737eb0900..c97bd277a 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -129,8 +129,8 @@ class Configuration(object): if self.args.strategy != constants.DEFAULT_STRATEGY or not config.get('strategy'): config.update({'strategy': self.args.strategy}) - if self.args.strategy_path: - config.update({'strategy_path': self.args.strategy_path}) + self._args_to_config(config, argname='strategy_path', + logstring='Using additional Strategy lookup path: {}') def _process_common_options(self, config: Dict[str, Any]) -> None: @@ -239,6 +239,9 @@ class Configuration(object): self._args_to_config(config, argname='hyperopt', logstring='Using Hyperopt file {}') + self._args_to_config(config, argname='hyperopt_path', + logstring='Using additional Hyperopt lookup path: {}') + self._args_to_config(config, argname='epochs', logstring='Parameter --epochs detected ... ' 'Will run Hyperopt with for {} epochs ...' diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 74412e738..5027d7ddf 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -60,7 +60,7 @@ class HyperOptResolver(IResolver): if extra_dir: # Add extra hyperopt directory on top of search paths - abs_paths.insert(0, Path(extra_dir)) + abs_paths.insert(0, Path(extra_dir).resolve()) hyperopt = self._load_object(paths=abs_paths, object_type=IHyperOpt, object_name=hyperopt_name) @@ -115,7 +115,7 @@ class HyperOptLossResolver(IResolver): if extra_dir: # Add extra hyperopt directory on top of search paths - abs_paths.insert(0, Path(extra_dir)) + abs_paths.insert(0, Path(extra_dir).resolve()) hyperoptloss = self._load_object(paths=abs_paths, object_type=IHyperOptLoss, object_name=hyper_loss_name) From 482f5f7a26c95a2d215e0b98edb817b169317d96 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 22 Jul 2019 20:39:38 +0200 Subject: [PATCH 0010/3421] Update plotly dependencies (will break 3.x installations) --- freqtrade/plot/plotting.py | 36 ++++++++++++++++---------------- freqtrade/resolvers/iresolver.py | 2 +- freqtrade/tests/test_plotting.py | 6 +++--- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index dde6f78f0..5c9c6e457 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -15,9 +15,9 @@ logger = logging.getLogger(__name__) try: - from plotly import tools + from plotly.subplots import make_subplots from plotly.offline import plot - import plotly.graph_objs as go + import plotly.graph_objects as go except ImportError: logger.exception("Module plotly not found \n Please install using `pip install plotly`") exit(1) @@ -62,7 +62,7 @@ def init_plotscript(config): } -def add_indicators(fig, row, indicators: List[str], data: pd.DataFrame) -> tools.make_subplots: +def add_indicators(fig, row, indicators: List[str], data: pd.DataFrame) -> make_subplots: """ Generator all the indicator selected by the user for a specific row :param fig: Plot figure to append to @@ -79,7 +79,7 @@ def add_indicators(fig, row, indicators: List[str], data: pd.DataFrame) -> tools mode='lines', name=indicator ) - fig.append_trace(scattergl, row, 1) + fig.add_trace(scattergl, row, 1) else: logger.info( 'Indicator "%s" ignored. Reason: This indicator is not found ' @@ -90,7 +90,7 @@ def add_indicators(fig, row, indicators: List[str], data: pd.DataFrame) -> tools return fig -def add_profit(fig, row, data: pd.DataFrame, column: str, name: str) -> tools.make_subplots: +def add_profit(fig, row, data: pd.DataFrame, column: str, name: str) -> make_subplots: """ Add profit-plot :param fig: Plot figure to append to @@ -105,12 +105,12 @@ def add_profit(fig, row, data: pd.DataFrame, column: str, name: str) -> tools.ma y=data[column], name=name, ) - fig.append_trace(profit, row, 1) + fig.add_trace(profit, row, 1) return fig -def plot_trades(fig, trades: pd.DataFrame) -> tools.make_subplots: +def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: """ Add trades to "fig" """ @@ -145,8 +145,8 @@ def plot_trades(fig, trades: pd.DataFrame) -> tools.make_subplots: color='red' ) ) - fig.append_trace(trade_buys, 1, 1) - fig.append_trace(trade_sells, 1, 1) + fig.add_trace(trade_buys, 1, 1) + fig.add_trace(trade_sells, 1, 1) else: logger.warning("No trades found.") return fig @@ -167,7 +167,7 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra """ # Define the graph - fig = tools.make_subplots( + fig = make_subplots( rows=3, cols=1, shared_xaxes=True, @@ -189,7 +189,7 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra close=data.close, name='Price' ) - fig.append_trace(candles, 1, 1) + fig.add_trace(candles, 1, 1) if 'buy' in data.columns: df_buy = data[data['buy'] == 1] @@ -206,7 +206,7 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra color='green', ) ) - fig.append_trace(buys, 1, 1) + fig.add_trace(buys, 1, 1) else: logger.warning("No buy-signals found.") @@ -225,7 +225,7 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra color='red', ) ) - fig.append_trace(sells, 1, 1) + fig.add_trace(sells, 1, 1) else: logger.warning("No sell-signals found.") @@ -244,8 +244,8 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra fillcolor="rgba(0,176,246,0.2)", line={'color': 'rgba(255,255,255,0)'}, ) - fig.append_trace(bb_lower, 1, 1) - fig.append_trace(bb_upper, 1, 1) + fig.add_trace(bb_lower, 1, 1) + fig.add_trace(bb_upper, 1, 1) # Add indicators to main plot fig = add_indicators(fig=fig, row=1, indicators=indicators1, data=data) @@ -258,7 +258,7 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra y=data['volume'], name='Volume' ) - fig.append_trace(volume, 2, 1) + fig.add_trace(volume, 2, 1) # Add indicators to seperate row fig = add_indicators(fig=fig, row=3, indicators=indicators2, data=data) @@ -281,10 +281,10 @@ def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame], name='Avg close price', ) - fig = tools.make_subplots(rows=3, cols=1, shared_xaxes=True, row_width=[1, 1, 1]) + fig = make_subplots(rows=3, cols=1, shared_xaxes=True, row_width=[1, 1, 1]) fig['layout'].update(title="Profit plot") - fig.append_trace(avgclose, 1, 1) + fig.add_trace(avgclose, 1, 1) fig = add_profit(fig, 2, df_comb, 'cum_profit', 'Profit') for pair in pairs: diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 9d0c97917..841c3cf43 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -84,6 +84,6 @@ class IResolver(object): f"from '{module_path}'...") return module except FileNotFoundError: - logger.warning('Path "%s" does not exist.', _path.relative_to(Path.cwd())) + logger.warning('Path "%s" does not exist.', _path.resolve()) return None diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index 0ebadf720..509bf7880 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -2,8 +2,8 @@ from copy import deepcopy from unittest.mock import MagicMock -import plotly.graph_objs as go -from plotly import tools +import plotly.graph_objects as go +from plotly.subplots import make_subplots from freqtrade.configuration import Arguments, TimeRange from freqtrade.data import history @@ -28,7 +28,7 @@ def find_trace_in_fig_data(data, search_string: str): def generage_empty_figure(): - return tools.make_subplots( + return make_subplots( rows=3, cols=1, shared_xaxes=True, From 60cf56e23582fd7a0e06db0ce080640670cef836 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 22 Jul 2019 20:57:40 +0200 Subject: [PATCH 0011/3421] Adapt tests to always provide message for ccxt exceptions Changes introduced in https://github.com/ccxt/ccxt/pull/5470 --- freqtrade/tests/exchange/test_exchange.py | 54 +++++++++++------------ 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index a4f1bca18..a5cdf0a82 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -33,13 +33,13 @@ def get_mock_coro(return_value): def ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, fun, mock_ccxt_fun, **kwargs): with pytest.raises(TemporaryError): - api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.NetworkError) + api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.NetworkError("DeaDBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) getattr(exchange, fun)(**kwargs) assert api_mock.__dict__[mock_ccxt_fun].call_count == API_RETRY_COUNT + 1 with pytest.raises(OperationalException): - api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.BaseError) + api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) getattr(exchange, fun)(**kwargs) assert api_mock.__dict__[mock_ccxt_fun].call_count == 1 @@ -47,13 +47,13 @@ def ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, async def async_ccxt_exception(mocker, default_conf, api_mock, fun, mock_ccxt_fun, **kwargs): with pytest.raises(TemporaryError): - api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.NetworkError) + api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.NetworkError("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock) await getattr(exchange, fun)(**kwargs) assert api_mock.__dict__[mock_ccxt_fun].call_count == API_RETRY_COUNT + 1 with pytest.raises(OperationalException): - api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.BaseError) + api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock) await getattr(exchange, fun)(**kwargs) assert api_mock.__dict__[mock_ccxt_fun].call_count == 1 @@ -256,13 +256,13 @@ def test__load_async_markets(default_conf, mocker, caplog): def test__load_markets(default_conf, mocker, caplog): caplog.set_level(logging.INFO) api_mock = MagicMock() - api_mock.load_markets = MagicMock(side_effect=ccxt.BaseError()) + api_mock.load_markets = MagicMock(side_effect=ccxt.BaseError("SomeError")) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) Exchange(default_conf) - assert log_has('Unable to initialize markets. Reason: ', caplog.record_tuples) + assert log_has('Unable to initialize markets. Reason: SomeError', caplog.record_tuples) expected_return = {'ETH/BTC': 'available'} api_mock = MagicMock() @@ -305,7 +305,7 @@ def test__reload_markets_exception(default_conf, mocker, caplog): caplog.set_level(logging.DEBUG) api_mock = MagicMock() - api_mock.load_markets = MagicMock(side_effect=ccxt.NetworkError) + api_mock.load_markets = MagicMock(side_effect=ccxt.NetworkError("LoadError")) default_conf['exchange']['markets_refresh_interval'] = 10 exchange = get_patched_exchange(mocker, default_conf, api_mock, id="binance") @@ -634,25 +634,25 @@ def test_buy_prod(default_conf, mocker, exchange_name): # test exception handling with pytest.raises(DependencyException): - api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds) + api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds("Not enough funds")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.buy(pair='ETH/BTC', ordertype=order_type, amount=1, rate=200, time_in_force=time_in_force) with pytest.raises(DependencyException): - api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder) + api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.buy(pair='ETH/BTC', ordertype=order_type, amount=1, rate=200, time_in_force=time_in_force) with pytest.raises(TemporaryError): - api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError) + api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("Network disconnect")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.buy(pair='ETH/BTC', ordertype=order_type, amount=1, rate=200, time_in_force=time_in_force) with pytest.raises(OperationalException): - api_mock.create_order = MagicMock(side_effect=ccxt.BaseError) + api_mock.create_order = MagicMock(side_effect=ccxt.BaseError("Unknown error")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.buy(pair='ETH/BTC', ordertype=order_type, amount=1, rate=200, time_in_force=time_in_force) @@ -758,22 +758,22 @@ def test_sell_prod(default_conf, mocker, exchange_name): # test exception handling with pytest.raises(DependencyException): - api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds) + api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds("0 balance")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.sell(pair='ETH/BTC', ordertype=order_type, amount=1, rate=200) with pytest.raises(DependencyException): - api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder) + api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.sell(pair='ETH/BTC', ordertype=order_type, amount=1, rate=200) with pytest.raises(TemporaryError): - api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError) + api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No Connection")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.sell(pair='ETH/BTC', ordertype=order_type, amount=1, rate=200) with pytest.raises(OperationalException): - api_mock.create_order = MagicMock(side_effect=ccxt.BaseError) + api_mock.create_order = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.sell(pair='ETH/BTC', ordertype=order_type, amount=1, rate=200) @@ -846,7 +846,7 @@ def test_get_balance_prod(default_conf, mocker, exchange_name): assert exchange.get_balance(currency='BTC') == 123.4 with pytest.raises(OperationalException): - api_mock.fetch_balance = MagicMock(side_effect=ccxt.BaseError) + api_mock.fetch_balance = MagicMock(side_effect=ccxt.BaseError("Unknown error")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.get_balance(currency='BTC') @@ -919,7 +919,7 @@ def test_get_tickers(default_conf, mocker, exchange_name): "get_tickers", "fetch_tickers") with pytest.raises(OperationalException): - api_mock.fetch_tickers = MagicMock(side_effect=ccxt.NotSupported) + api_mock.fetch_tickers = MagicMock(side_effect=ccxt.NotSupported("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.get_tickers() @@ -1101,7 +1101,7 @@ async def test__async_get_candle_history(default_conf, mocker, caplog, exchange_ api_mock = MagicMock() with pytest.raises(OperationalException, match=r'Could not fetch ticker data*'): - api_mock.fetch_ohlcv = MagicMock(side_effect=ccxt.BaseError) + api_mock.fetch_ohlcv = MagicMock(side_effect=ccxt.BaseError("Unknown error")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) await exchange._async_get_candle_history(pair, "5m", (arrow.utcnow().timestamp - 2000) * 1000) @@ -1173,15 +1173,15 @@ def test_get_order_book(default_conf, mocker, order_book_l2, exchange_name): def test_get_order_book_exception(default_conf, mocker, exchange_name): api_mock = MagicMock() with pytest.raises(OperationalException): - api_mock.fetch_l2_order_book = MagicMock(side_effect=ccxt.NotSupported) + api_mock.fetch_l2_order_book = MagicMock(side_effect=ccxt.NotSupported("Not supported")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.get_order_book(pair='ETH/BTC', limit=50) with pytest.raises(TemporaryError): - api_mock.fetch_l2_order_book = MagicMock(side_effect=ccxt.NetworkError) + api_mock.fetch_l2_order_book = MagicMock(side_effect=ccxt.NetworkError("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.get_order_book(pair='ETH/BTC', limit=50) with pytest.raises(OperationalException): - api_mock.fetch_l2_order_book = MagicMock(side_effect=ccxt.BaseError) + api_mock.fetch_l2_order_book = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.get_order_book(pair='ETH/BTC', limit=50) @@ -1294,7 +1294,7 @@ def test_cancel_order(default_conf, mocker, exchange_name): assert exchange.cancel_order(order_id='_', pair='TKN/BTC') == 123 with pytest.raises(InvalidOrderException): - api_mock.cancel_order = MagicMock(side_effect=ccxt.InvalidOrder) + api_mock.cancel_order = MagicMock(side_effect=ccxt.InvalidOrder("Did not find order")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.cancel_order(order_id='_', pair='TKN/BTC') assert api_mock.cancel_order.call_count == 1 @@ -1321,7 +1321,7 @@ def test_get_order(default_conf, mocker, exchange_name): assert exchange.get_order('X', 'TKN/BTC') == 456 with pytest.raises(InvalidOrderException): - api_mock.fetch_order = MagicMock(side_effect=ccxt.InvalidOrder) + api_mock.fetch_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) exchange.get_order(order_id='_', pair='TKN/BTC') assert api_mock.fetch_order.call_count == 1 @@ -1437,22 +1437,22 @@ def test_stoploss_limit_order(default_conf, mocker): # test exception handling with pytest.raises(DependencyException): - api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds) + api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds("0 balance")) exchange = get_patched_exchange(mocker, default_conf, api_mock) exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) with pytest.raises(DependencyException): - api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder) + api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) exchange = get_patched_exchange(mocker, default_conf, api_mock) exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) with pytest.raises(TemporaryError): - api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError) + api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No connection")) exchange = get_patched_exchange(mocker, default_conf, api_mock) exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) with pytest.raises(OperationalException): - api_mock.create_order = MagicMock(side_effect=ccxt.BaseError) + api_mock.create_order = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock) exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) From 0c2c094db6233383079c54b42eae296daf4fb5d9 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 23 Jul 2019 18:51:24 +0300 Subject: [PATCH 0012/3421] minor: add OnlyProfitHyperOptLoss --- freqtrade/optimize/default_hyperopt_loss.py | 11 +++--- .../optimize/hyperopt_loss_onlyprofit.py | 34 +++++++++++++++++++ freqtrade/optimize/hyperopt_loss_sharpe.py | 17 ++++++---- 3 files changed, 49 insertions(+), 13 deletions(-) create mode 100644 freqtrade/optimize/hyperopt_loss_onlyprofit.py diff --git a/freqtrade/optimize/default_hyperopt_loss.py b/freqtrade/optimize/default_hyperopt_loss.py index 2879c4091..4ab9fbe44 100644 --- a/freqtrade/optimize/default_hyperopt_loss.py +++ b/freqtrade/optimize/default_hyperopt_loss.py @@ -3,27 +3,26 @@ DefaultHyperOptLoss This module defines the default HyperoptLoss class which is being used for Hyperoptimization. """ - from math import exp from pandas import DataFrame from freqtrade.optimize.hyperopt import IHyperOptLoss -# Define some constants: -# set TARGET_TRADES to suit your number concurrent trades so its realistic +# Set TARGET_TRADES to suit your number concurrent trades so its realistic # to the number of days TARGET_TRADES = 600 + # This is assumed to be expected avg profit * expected trade count. # For example, for 0.35% avg per trade (or 0.0035 as ratio) and 1100 trades, -# self.expected_max_profit = 3.85 +# expected max profit = 3.85 # Check that the reported Σ% values do not exceed this! # Note, this is ratio. 3.85 stated above means 385Σ%. EXPECTED_MAX_PROFIT = 3.0 -# max average trade duration in minutes -# if eval ends with higher value, we consider it a failed eval +# Max average trade duration in minutes. +# If eval ends with higher value, we consider it a failed eval. MAX_ACCEPTED_TRADE_DURATION = 300 diff --git a/freqtrade/optimize/hyperopt_loss_onlyprofit.py b/freqtrade/optimize/hyperopt_loss_onlyprofit.py new file mode 100644 index 000000000..4a1fabe35 --- /dev/null +++ b/freqtrade/optimize/hyperopt_loss_onlyprofit.py @@ -0,0 +1,34 @@ +""" +OnlyProfitHyperOptLoss + +This module defines the alternative HyperOptLoss class which can be used for +Hyperoptimization. +""" +from pandas import DataFrame + +from freqtrade.optimize.hyperopt import IHyperOptLoss + + +# This is assumed to be expected avg profit * expected trade count. +# For example, for 0.35% avg per trade (or 0.0035 as ratio) and 1100 trades, +# expected max profit = 3.85 +# Check that the reported Σ% values do not exceed this! +# Note, this is ratio. 3.85 stated above means 385Σ%. +EXPECTED_MAX_PROFIT = 3.0 + + +class OnlyProfitHyperOptLoss(IHyperOptLoss): + """ + Defines the loss function for hyperopt. + + This implementation takes only profit into account. + """ + + @staticmethod + def hyperopt_loss_function(results: DataFrame, trade_count: int, + *args, **kwargs) -> float: + """ + Objective function, returns smaller number for better results. + """ + total_profit = results.profit_percent.sum() + return max(0, 1 - total_profit / EXPECTED_MAX_PROFIT) diff --git a/freqtrade/optimize/hyperopt_loss_sharpe.py b/freqtrade/optimize/hyperopt_loss_sharpe.py index be1a3d4b4..f74b27744 100644 --- a/freqtrade/optimize/hyperopt_loss_sharpe.py +++ b/freqtrade/optimize/hyperopt_loss_sharpe.py @@ -1,8 +1,9 @@ """ -IHyperOptLoss interface -This module defines the interface for the loss-function for hyperopts -""" +SharpeHyperOptLoss +This module defines the alternative HyperOptLoss class which can be used for +Hyperoptimization. +""" from datetime import datetime from pandas import DataFrame @@ -13,8 +14,9 @@ from freqtrade.optimize.hyperopt import IHyperOptLoss class SharpeHyperOptLoss(IHyperOptLoss): """ - Defines the a loss function for hyperopt. - This implementation uses the sharpe ratio calculation. + Defines the loss function for hyperopt. + + This implementation uses the Sharpe Ratio calculation. """ @staticmethod @@ -22,8 +24,9 @@ class SharpeHyperOptLoss(IHyperOptLoss): min_date: datetime, max_date: datetime, *args, **kwargs) -> float: """ - Objective function, returns smaller number for more optimal results - Using sharpe ratio calculation + Objective function, returns smaller number for more optimal results. + + Uses Sharpe Ratio calculation. """ total_profit = results.profit_percent days_period = (max_date - min_date).days From cf6113068cdf1c9458a9491854df01e66306bf4b Mon Sep 17 00:00:00 2001 From: Leif Segen Date: Tue, 23 Jul 2019 22:52:42 -0500 Subject: [PATCH 0013/3421] Resolve issue #2042 Issue #2042 noted that the terminal output from `setup.sh` regarding an option use the bot was missing from the documentation. This has been added. --- docs/bot-usage.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index c643ecace..b29b046e5 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -2,6 +2,8 @@ This page explains the different parameters of the bot and how to run it. +Note: You can now use the bot by executing `source .env/bin/activate; freqtrade`. + ## Bot commands From a0cecc6c522700e0884474d1f456fa03a3a22e01 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 24 Jul 2019 06:29:50 +0200 Subject: [PATCH 0014/3421] Fix test after pandas 0.25.0 update --- freqtrade/data/btanalysis.py | 1 - 1 file changed, 1 deletion(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index dcd544d00..f2356c34b 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -67,7 +67,6 @@ def evaluate_result_multi(results: pd.DataFrame, freq: str, max_open_trades: int dates = pd.Series(pd.concat(dates).values, name='date') df2 = pd.DataFrame(np.repeat(results.values, deltas, axis=0), columns=results.columns) - df2 = df2.astype(dtype={"open_time": "datetime64", "close_time": "datetime64"}) df2 = pd.concat([dates, df2], axis=1) df2 = df2.set_index('date') df_final = df2.resample(freq)[['pair']].count() From e9b77298a7ccb289da21c7eff311d3119619e1e2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 25 Jul 2019 08:17:41 +0300 Subject: [PATCH 0015/3421] max() removed --- freqtrade/optimize/hyperopt_loss_onlyprofit.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/hyperopt_loss_onlyprofit.py b/freqtrade/optimize/hyperopt_loss_onlyprofit.py index 4a1fabe35..a1c50e727 100644 --- a/freqtrade/optimize/hyperopt_loss_onlyprofit.py +++ b/freqtrade/optimize/hyperopt_loss_onlyprofit.py @@ -12,8 +12,12 @@ from freqtrade.optimize.hyperopt import IHyperOptLoss # This is assumed to be expected avg profit * expected trade count. # For example, for 0.35% avg per trade (or 0.0035 as ratio) and 1100 trades, # expected max profit = 3.85 -# Check that the reported Σ% values do not exceed this! -# Note, this is ratio. 3.85 stated above means 385Σ%. +# +# Note, this is ratio. 3.85 stated above means 385Σ%, 3.0 means 300Σ%. +# +# In this implementation it's only used in calculation of the resulting value +# of the objective function as a normalization coefficient and does not +# represent any limit for profits as in the Freqtrade legacy default loss function. EXPECTED_MAX_PROFIT = 3.0 @@ -31,4 +35,4 @@ class OnlyProfitHyperOptLoss(IHyperOptLoss): Objective function, returns smaller number for better results. """ total_profit = results.profit_percent.sum() - return max(0, 1 - total_profit / EXPECTED_MAX_PROFIT) + return 1 - total_profit / EXPECTED_MAX_PROFIT From 05be16e9e1dee7510bcf5ba1d5d9eadb53cca2a2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 25 Jul 2019 08:49:33 +0300 Subject: [PATCH 0016/3421] helpstring alignment fixed --- docs/bot-usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 8031a2072..4462b63c6 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -201,7 +201,7 @@ to find optimal parameter values for your stategy. usage: freqtrade hyperopt [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE] [--max_open_trades INT] [--stake_amount STAKE_AMOUNT] [-r] - [--customhyperopt NAME] [--hyperopt-path PATH] + [--customhyperopt NAME] [--hyperopt-path PATH] [--eps] [-e INT] [-s {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...]] [--dmmp] [--print-all] [-j JOBS] From f58668fd67f971cb6b1b0074363112becb7da1f7 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 25 Jul 2019 20:54:12 +0300 Subject: [PATCH 0017/3421] test added --- freqtrade/tests/optimize/test_hyperopt.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index a588bab64..fc71200a5 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -337,6 +337,24 @@ def test_sharpe_loss_prefers_higher_profits(default_conf, hyperopt_results) -> N assert under > correct +def test_onlyprofit_loss_prefers_higher_profits(default_conf, hyperopt_results) -> None: + results_over = hyperopt_results.copy() + results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 + results_under = hyperopt_results.copy() + results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 + + default_conf.update({'hyperopt_loss': 'OnlyProfitHyperOptLoss'}) + hl = HyperOptLossResolver(default_conf).hyperoptloss + correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + assert over < correct + assert under > correct + + def test_log_results_if_loss_improves(hyperopt, capsys) -> None: hyperopt.current_best_loss = 2 hyperopt.log_results( From 05b185494650c1cab2a94f08b7fb7780de2b9db6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 25 Jul 2019 19:56:59 +0200 Subject: [PATCH 0018/3421] Gracefully handle InvalidOrderException. --- freqtrade/freqtradebot.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index b103d73a7..d52165e0a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -524,7 +524,11 @@ class FreqtradeBot(object): if trade.open_order_id: # Update trade with order values logger.info('Found open order for %s', trade) - order = action_order or self.exchange.get_order(trade.open_order_id, trade.pair) + try: + order = action_order or self.exchange.get_order(trade.open_order_id, trade.pair) + except InvalidOrderException as exception: + logger.warning('Unable to fetch order %s: %s', trade.open_order_id, exception) + return # Try update amount (binance-fix) try: new_amount = self.get_real_amount(trade, order) @@ -749,7 +753,7 @@ class FreqtradeBot(object): if not trade.open_order_id: continue order = self.exchange.get_order(trade.open_order_id, trade.pair) - except (RequestException, DependencyException): + except (RequestException, DependencyException, InvalidOrderException): logger.info( 'Cannot query order for %s due to %s', trade, From e1b8ff798fb007ea75be49d69ce69cd2971d5d44 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 25 Jul 2019 20:05:48 +0200 Subject: [PATCH 0019/3421] Add test to verify that get_order was successfully cought --- freqtrade/tests/test_freqtradebot.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 9a22a4f94..1a4c5159c 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -1460,6 +1460,22 @@ def test_update_trade_state_exception(mocker, default_conf, assert log_has('Could not update trade amount: ', caplog.record_tuples) +def test_update_trade_state_orderexception(mocker, default_conf, caplog) -> None: + freqtrade = get_patched_freqtradebot(mocker, default_conf) + mocker.patch('freqtrade.exchange.Exchange.get_order', + MagicMock(side_effect=InvalidOrderException)) + + trade = MagicMock() + trade.open_order_id = '123' + trade.open_fee = 0.001 + + # Test raise of OperationalException exception + grm_mock = mocker.patch("freqtrade.freqtradebot.FreqtradeBot.get_real_amount", MagicMock()) + freqtrade.update_trade_state(trade) + assert grm_mock.call_count == 0 + assert log_has(f'Unable to fetch order {trade.open_order_id}: ', caplog.record_tuples) + + def test_update_trade_state_sell(default_conf, trades_for_order, limit_sell_order, mocker): mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) # get_order should not be called!! From 4b8b2f7c5bcde38c234eca6f8d2b9f073ead3df8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 25 Jul 2019 20:06:20 +0200 Subject: [PATCH 0020/3421] Use raise xxx from e to have a nicer traceback --- freqtrade/exchange/exchange.py | 62 +++++++++++++++++----------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 65f013a03..a7c76e635 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -174,10 +174,10 @@ class Exchange(object): try: api = getattr(ccxt_module, name.lower())(ex_config) - except (KeyError, AttributeError): - raise OperationalException(f'Exchange {name} is not supported') + except (KeyError, AttributeError) as e: + raise OperationalException(f'Exchange {name} is not supported') from e except ccxt.BaseError as e: - raise OperationalException(f"Initialization of ccxt failed. Reason: {e}") + raise OperationalException(f"Initialization of ccxt failed. Reason: {e}") from e self.set_sandbox(api, exchange_config, name) @@ -398,17 +398,17 @@ class Exchange(object): raise DependencyException( f'Insufficient funds to create {ordertype} {side} order on market {pair}.' f'Tried to {side} amount {amount} at rate {rate} (total {rate * amount}).' - f'Message: {e}') + f'Message: {e}') from e except ccxt.InvalidOrder as e: raise DependencyException( f'Could not create {ordertype} {side} order on market {pair}.' f'Tried to {side} amount {amount} at rate {rate} (total {rate * amount}).' - f'Message: {e}') + f'Message: {e}') from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( - f'Could not place {side} order due to {e.__class__.__name__}. Message: {e}') + f'Could not place {side} order due to {e.__class__.__name__}. Message: {e}') from e except ccxt.BaseError as e: - raise OperationalException(e) + raise OperationalException(e) from e def buy(self, pair: str, ordertype: str, amount: float, rate: float, time_in_force) -> Dict: @@ -493,9 +493,9 @@ class Exchange(object): return balances except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( - f'Could not get balance due to {e.__class__.__name__}. Message: {e}') + f'Could not get balance due to {e.__class__.__name__}. Message: {e}') from e except ccxt.BaseError as e: - raise OperationalException(e) + raise OperationalException(e) from e @retrier def get_tickers(self) -> Dict: @@ -504,12 +504,12 @@ class Exchange(object): except ccxt.NotSupported as e: raise OperationalException( f'Exchange {self._api.name} does not support fetching tickers in batch.' - f'Message: {e}') + f'Message: {e}') from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( - f'Could not load tickers due to {e.__class__.__name__}. Message: {e}') + f'Could not load tickers due to {e.__class__.__name__}. Message: {e}') from e except ccxt.BaseError as e: - raise OperationalException(e) + raise OperationalException(e) from e @retrier def get_ticker(self, pair: str, refresh: Optional[bool] = True) -> dict: @@ -528,9 +528,9 @@ class Exchange(object): return data except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( - f'Could not load ticker due to {e.__class__.__name__}. Message: {e}') + f'Could not load ticker due to {e.__class__.__name__}. Message: {e}') from e except ccxt.BaseError as e: - raise OperationalException(e) + raise OperationalException(e) from e else: logger.info("returning cached ticker-data for %s", pair) return self._cached_ticker[pair] @@ -651,12 +651,12 @@ class Exchange(object): except ccxt.NotSupported as e: raise OperationalException( f'Exchange {self._api.name} does not support fetching historical candlestick data.' - f'Message: {e}') + f'Message: {e}') from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: - raise TemporaryError( - f'Could not load ticker history due to {e.__class__.__name__}. Message: {e}') + raise TemporaryError(f'Could not load ticker history due to {e.__class__.__name__}. ' + f'Message: {e}') from e except ccxt.BaseError as e: - raise OperationalException(f'Could not fetch ticker data. Msg: {e}') + raise OperationalException(f'Could not fetch ticker data. Msg: {e}') from e @retrier def cancel_order(self, order_id: str, pair: str) -> None: @@ -667,12 +667,12 @@ class Exchange(object): return self._api.cancel_order(order_id, pair) except ccxt.InvalidOrder as e: raise InvalidOrderException( - f'Could not cancel order. Message: {e}') + f'Could not cancel order. Message: {e}') from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( - f'Could not cancel order due to {e.__class__.__name__}. Message: {e}') + f'Could not cancel order due to {e.__class__.__name__}. Message: {e}') from e except ccxt.BaseError as e: - raise OperationalException(e) + raise OperationalException(e) from e @retrier def get_order(self, order_id: str, pair: str) -> Dict: @@ -683,12 +683,12 @@ class Exchange(object): return self._api.fetch_order(order_id, pair) except ccxt.InvalidOrder as e: raise InvalidOrderException( - f'Tried to get an invalid order (id: {order_id}). Message: {e}') + f'Tried to get an invalid order (id: {order_id}). Message: {e}') from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( - f'Could not get order due to {e.__class__.__name__}. Message: {e}') + f'Could not get order due to {e.__class__.__name__}. Message: {e}') from e except ccxt.BaseError as e: - raise OperationalException(e) + raise OperationalException(e) from e @retrier def get_order_book(self, pair: str, limit: int = 100) -> dict: @@ -704,12 +704,12 @@ class Exchange(object): except ccxt.NotSupported as e: raise OperationalException( f'Exchange {self._api.name} does not support fetching order book.' - f'Message: {e}') + f'Message: {e}') from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( - f'Could not get order book due to {e.__class__.__name__}. Message: {e}') + f'Could not get order book due to {e.__class__.__name__}. Message: {e}') from e except ccxt.BaseError as e: - raise OperationalException(e) + raise OperationalException(e) from e @retrier def get_trades_for_order(self, order_id: str, pair: str, since: datetime) -> List: @@ -726,9 +726,9 @@ class Exchange(object): except ccxt.NetworkError as e: raise TemporaryError( - f'Could not get trades due to networking error. Message: {e}') + f'Could not get trades due to networking error. Message: {e}') from e except ccxt.BaseError as e: - raise OperationalException(e) + raise OperationalException(e) from e @retrier def get_fee(self, symbol='ETH/BTC', type='', side='', amount=1, @@ -742,9 +742,9 @@ class Exchange(object): price=price, takerOrMaker=taker_or_maker)['rate'] except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( - f'Could not get fee info due to {e.__class__.__name__}. Message: {e}') + f'Could not get fee info due to {e.__class__.__name__}. Message: {e}') from e except ccxt.BaseError as e: - raise OperationalException(e) + raise OperationalException(e) from e def is_exchange_bad(exchange: str) -> bool: From 10c69387fd7b86560082bcda2df92e48421a3304 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 25 Jul 2019 21:06:41 +0300 Subject: [PATCH 0021/3421] docs adjusted --- docs/hyperopt.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index ef3d28188..2755cae2d 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -156,10 +156,10 @@ Each hyperparameter tuning requires a target. This is usually defined as a loss By default, FreqTrade uses a loss function, which has been with freqtrade since the beginning and optimizes mostly for short trade duration and avoiding losses. -A different version this can be used by using the `--hyperopt-loss ` argument. -This class should be in it's own file within the `user_data/hyperopts/` directory. +A different loss function can be specified by using the `--hyperopt-loss ` argument. +This class should be in its own file within the `user_data/hyperopts/` directory. -Currently, the following loss functions are builtin: `SharpeHyperOptLoss` and `DefaultHyperOptLoss`. +Currently, the following loss functions are builtin: `DefaultHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function), `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on the trade returns) and `OnlyProfitHyperOptLoss` (which takes only amount of profit into consideration). ### Creating and using a custom loss function From 7ee971c3e3a0b6b3b2bfb87806949e455fbacc17 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 25 Jul 2019 20:35:20 +0200 Subject: [PATCH 0022/3421] Add simple method to add deprecations to cmd line options --- freqtrade/configuration/configuration.py | 10 +++++--- freqtrade/tests/test_configuration.py | 29 +++++++++++++++++++++++- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index c97bd277a..17ad37d6a 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -4,6 +4,7 @@ This module contains the configuration class import json import logging import sys +import warnings from argparse import Namespace from typing import Any, Callable, Dict, Optional @@ -15,7 +16,6 @@ from freqtrade.loggers import setup_logging from freqtrade.misc import deep_merge_dicts from freqtrade.state import RunMode - logger = logging.getLogger(__name__) @@ -187,7 +187,8 @@ class Configuration(object): 'Using ticker_interval: {} ...') self._args_to_config(config, argname='live', - logstring='Parameter -l/--live detected ...') + logstring='Parameter -l/--live detected ...', + deprecated_msg='--live will be removed soon.') self._args_to_config(config, argname='position_stacking', logstring='Parameter --enable-position-stacking detected ...') @@ -323,7 +324,8 @@ class Configuration(object): 'to be greater than trailing_stop_positive_offset in your config.') def _args_to_config(self, config: Dict[str, Any], argname: str, - logstring: str, logfun: Optional[Callable] = None) -> None: + logstring: str, logfun: Optional[Callable] = None, + deprecated_msg: Optional[str] = None) -> None: """ :param config: Configuration dictionary :param argname: Argumentname in self.args - will be copied to config dict. @@ -340,3 +342,5 @@ class Configuration(object): logger.info(logstring.format(logfun(config[argname]))) else: logger.info(logstring.format(config[argname])) + if deprecated_msg: + warnings.warn(f"DEPRECATED: {deprecated_msg}", DeprecationWarning) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index d3567e943..56ff79625 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -1,10 +1,11 @@ # pragma pylint: disable=missing-docstring, protected-access, invalid-name import json import logging +import warnings from argparse import Namespace from copy import deepcopy -from unittest.mock import MagicMock from pathlib import Path +from unittest.mock import MagicMock import pytest from jsonschema import Draft4Validator, ValidationError, validate @@ -62,6 +63,32 @@ def test_load_config_file(default_conf, mocker, caplog) -> None: assert validated_conf.items() >= default_conf.items() +def test__args_to_config(caplog): + + arg_list = ['--strategy-path', 'TestTest'] + args = Arguments(arg_list, '').get_parsed_arg() + configuration = Configuration(args) + config = {} + with warnings.catch_warnings(record=True) as w: + # No warnings ... + configuration._args_to_config(config, argname="strategy_path", logstring="DeadBeef") + assert len(w) == 0 + assert log_has("DeadBeef", caplog.record_tuples) + assert config['strategy_path'] == "TestTest" + + configuration = Configuration(args) + config = {} + with warnings.catch_warnings(record=True) as w: + # Deprecation warnings! + configuration._args_to_config(config, argname="strategy_path", logstring="DeadBeef", + deprecated_msg="Going away soon!") + assert len(w) == 1 + assert issubclass(w[-1].category, DeprecationWarning) + assert "DEPRECATED: Going away soon!" in str(w[-1].message) + assert log_has("DeadBeef", caplog.record_tuples) + assert config['strategy_path'] == "TestTest" + + def test_load_config_max_open_trades_zero(default_conf, mocker, caplog) -> None: default_conf['max_open_trades'] = 0 patched_configuration_load_config_file(mocker, default_conf) From 0c14176cd7a32abf76cf3448e2ec93c9e5f9f33a Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 25 Jul 2019 20:36:19 +0200 Subject: [PATCH 0023/3421] Deprecate --live --- docs/deprecated.md | 33 +++++++++------------------------ 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/docs/deprecated.md b/docs/deprecated.md index c1582ce31..2bf655191 100644 --- a/docs/deprecated.md +++ b/docs/deprecated.md @@ -4,31 +4,16 @@ This page contains description of the command line arguments, configuration para and the bot features that were declared as DEPRECATED by the bot development team and are no longer supported. Please avoid their usage in your configuration. +### the `--live` command line option + +`--live` in the context of backtesting allows to download the latest tick data for backtesting. +Since this only downloads one set of data (by default 500 candles) - this is not really suitable for extendet backtesting, and has therefore been deprecated. + +This command was deprecated in `2019.6-dev` and will be removed after the next release. + +## Removed features + ### The **--dynamic-whitelist** command line option This command line option was deprecated in 2018 and removed freqtrade 2019.6-dev (develop branch) and in freqtrade 2019.7 (master branch). - -Per default `--dynamic-whitelist` will retrieve the 20 currencies based -on BaseVolume. This value can be changed when you run the script. - -**By Default** -Get the 20 currencies based on BaseVolume. - -```bash -freqtrade --dynamic-whitelist -``` - -**Customize the number of currencies to retrieve** -Get the 30 currencies based on BaseVolume. - -```bash -freqtrade --dynamic-whitelist 30 -``` - -**Exception** -`--dynamic-whitelist` must be greater than 0. If you enter 0 or a -negative value (e.g -2), `--dynamic-whitelist` will use the default -value (20). - - From 3c3a902a69fbeecdf544a10b83babb8ce424230e Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 25 Jul 2019 20:42:08 +0200 Subject: [PATCH 0024/3421] Move argument definitions to their own file --- freqtrade/configuration/arguments.py | 300 +----------------------- freqtrade/configuration/cli_options.py | 302 +++++++++++++++++++++++++ 2 files changed, 304 insertions(+), 298 deletions(-) create mode 100644 freqtrade/configuration/cli_options.py diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index c70d1b4d2..988f485dc 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -2,308 +2,12 @@ This module contains the argument manager class """ import argparse -import os import re from typing import List, NamedTuple, Optional import arrow -from freqtrade import __version__, constants - - -def check_int_positive(value: str) -> int: - try: - uint = int(value) - if uint <= 0: - raise ValueError - except ValueError: - raise argparse.ArgumentTypeError( - f"{value} is invalid for this parameter, should be a positive integer value" - ) - return uint - - -class Arg: - # Optional CLI arguments - def __init__(self, *args, **kwargs): - self.cli = args - self.kwargs = kwargs - - -# List of available command line options -AVAILABLE_CLI_OPTIONS = { - # Common options - "verbosity": Arg( - '-v', '--verbose', - help='Verbose mode (-vv for more, -vvv to get all messages).', - action='count', - default=0, - ), - "logfile": Arg( - '--logfile', - help='Log to the file specified.', - metavar='FILE', - ), - "version": Arg( - '-V', '--version', - action='version', - version=f'%(prog)s {__version__}', - ), - "config": Arg( - '-c', '--config', - help=f'Specify configuration file (default: `{constants.DEFAULT_CONFIG}`). ' - f'Multiple --config options may be used. ' - f'Can be set to `-` to read config from stdin.', - action='append', - metavar='PATH', - ), - "datadir": Arg( - '-d', '--datadir', - help='Path to backtest data.', - metavar='PATH', - ), - # Main options - "strategy": Arg( - '-s', '--strategy', - help='Specify strategy class name (default: `%(default)s`).', - metavar='NAME', - default='DefaultStrategy', - ), - "strategy_path": Arg( - '--strategy-path', - help='Specify additional strategy lookup path.', - metavar='PATH', - ), - "db_url": Arg( - '--db-url', - help=f'Override trades database URL, this is useful in custom deployments ' - f'(default: `{constants.DEFAULT_DB_PROD_URL}` for Live Run mode, ' - f'`{constants.DEFAULT_DB_DRYRUN_URL}` for Dry Run).', - metavar='PATH', - ), - "sd_notify": Arg( - '--sd-notify', - help='Notify systemd service manager.', - action='store_true', - ), - # Optimize common - "ticker_interval": Arg( - '-i', '--ticker-interval', - help='Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`).', - ), - "timerange": Arg( - '--timerange', - help='Specify what timerange of data to use.', - ), - "max_open_trades": Arg( - '--max_open_trades', - help='Specify max_open_trades to use.', - type=int, - metavar='INT', - ), - "stake_amount": Arg( - '--stake_amount', - help='Specify stake_amount.', - type=float, - ), - "refresh_pairs": Arg( - '-r', '--refresh-pairs-cached', - help='Refresh the pairs files in tests/testdata with the latest data from the ' - 'exchange. Use it if you want to run your optimization commands with ' - 'up-to-date data.', - action='store_true', - ), - # Backtesting - "position_stacking": Arg( - '--eps', '--enable-position-stacking', - help='Allow buying the same pair multiple times (position stacking).', - action='store_true', - default=False, - ), - "use_max_market_positions": Arg( - '--dmmp', '--disable-max-market-positions', - help='Disable applying `max_open_trades` during backtest ' - '(same as setting `max_open_trades` to a very high number).', - action='store_false', - default=True, - ), - "live": Arg( - '-l', '--live', - help='Use live data.', - action='store_true', - ), - "strategy_list": Arg( - '--strategy-list', - help='Provide a comma-separated list of strategies to backtest. ' - 'Please note that ticker-interval needs to be set either in config ' - 'or via command line. When using this together with `--export trades`, ' - 'the strategy-name is injected into the filename ' - '(so `backtest-data.json` becomes `backtest-data-DefaultStrategy.json`', - nargs='+', - ), - "export": Arg( - '--export', - help='Export backtest results, argument are: trades. ' - 'Example: `--export=trades`', - ), - "exportfilename": Arg( - '--export-filename', - help='Save backtest results to the file with this filename (default: `%(default)s`). ' - 'Requires `--export` to be set as well. ' - 'Example: `--export-filename=user_data/backtest_data/backtest_today.json`', - metavar='PATH', - default=os.path.join('user_data', 'backtest_data', - 'backtest-result.json'), - ), - # Edge - "stoploss_range": Arg( - '--stoplosses', - help='Defines a range of stoploss values against which edge will assess the strategy. ' - 'The format is "min,max,step" (without any space). ' - 'Example: `--stoplosses=-0.01,-0.1,-0.001`', - ), - # Hyperopt - "hyperopt": Arg( - '--customhyperopt', - help='Specify hyperopt class name (default: `%(default)s`).', - metavar='NAME', - default=constants.DEFAULT_HYPEROPT, - ), - "hyperopt_path": Arg( - '--hyperopt-path', - help='Specify additional lookup path for Hyperopts and Hyperopt Loss functions.', - metavar='PATH', - ), - "epochs": Arg( - '-e', '--epochs', - help='Specify number of epochs (default: %(default)d).', - type=check_int_positive, - metavar='INT', - default=constants.HYPEROPT_EPOCH, - ), - "spaces": Arg( - '-s', '--spaces', - help='Specify which parameters to hyperopt. Space-separated list. ' - 'Default: `%(default)s`.', - choices=['all', 'buy', 'sell', 'roi', 'stoploss'], - nargs='+', - default='all', - ), - "print_all": Arg( - '--print-all', - help='Print all results, not only the best ones.', - action='store_true', - default=False, - ), - "hyperopt_jobs": Arg( - '-j', '--job-workers', - help='The number of concurrently running jobs for hyperoptimization ' - '(hyperopt worker processes). ' - 'If -1 (default), all CPUs are used, for -2, all CPUs but one are used, etc. ' - 'If 1 is given, no parallel computing code is used at all.', - type=int, - metavar='JOBS', - default=-1, - ), - "hyperopt_random_state": Arg( - '--random-state', - help='Set random state to some positive integer for reproducible hyperopt results.', - type=check_int_positive, - metavar='INT', - ), - "hyperopt_min_trades": Arg( - '--min-trades', - help="Set minimal desired number of trades for evaluations in the hyperopt " - "optimization path (default: 1).", - type=check_int_positive, - metavar='INT', - default=1, - ), - "hyperopt_continue": Arg( - "--continue", - help="Continue hyperopt from previous runs. " - "By default, temporary files will be removed and hyperopt will start from scratch.", - default=False, - action='store_true', - ), - "hyperopt_loss": Arg( - '--hyperopt-loss', - help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). ' - 'Different functions can generate completely different results, ' - 'since the target for optimization is different. (default: `%(default)s`).', - metavar='NAME', - default=constants.DEFAULT_HYPEROPT_LOSS, - ), - # List exchanges - "print_one_column": Arg( - '-1', '--one-column', - help='Print exchanges in one column.', - action='store_true', - ), - # Script options - "pairs": Arg( - '-p', '--pairs', - help='Show profits for only these pairs. Pairs are comma-separated.', - ), - # Download data - "pairs_file": Arg( - '--pairs-file', - help='File containing a list of pairs to download.', - metavar='FILE', - ), - "days": Arg( - '--days', - help='Download data for given number of days.', - type=check_int_positive, - metavar='INT', - ), - "exchange": Arg( - '--exchange', - help=f'Exchange name (default: `{constants.DEFAULT_EXCHANGE}`). ' - f'Only valid if no config is provided.', - ), - "timeframes": Arg( - '-t', '--timeframes', - help=f'Specify which tickers to download. Space-separated list. ' - f'Default: `{constants.DEFAULT_DOWNLOAD_TICKER_INTERVALS}`.', - choices=['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', - '6h', '8h', '12h', '1d', '3d', '1w'], - nargs='+', - ), - "erase": Arg( - '--erase', - help='Clean all existing data for the selected exchange/pairs/timeframes.', - action='store_true', - ), - # Plot dataframe - "indicators1": Arg( - '--indicators1', - help='Set indicators from your strategy you want in the first row of the graph. ' - 'Comma-separated list. Example: `ema3,ema5`. Default: `%(default)s`.', - default='sma,ema3,ema5', - ), - "indicators2": Arg( - '--indicators2', - help='Set indicators from your strategy you want in the third row of the graph. ' - 'Comma-separated list. Example: `fastd,fastk`. Default: `%(default)s`.', - default='macd,macdsignal', - ), - "plot_limit": Arg( - '--plot-limit', - help='Specify tick limit for plotting. Notice: too high values cause huge files. ' - 'Default: %(default)s.', - type=check_int_positive, - metavar='INT', - default=750, - ), - "trade_source": Arg( - '--trade-source', - help='Specify the source for trades (Can be DB or file (backtest file)) ' - 'Default: %(default)s', - choices=["DB", "file"], - default="file", - ), -} - +from freqtrade.arguments.cli_options import AVAILABLE_CLI_OPTIONS +from freqtrade import constants ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir"] diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py new file mode 100644 index 000000000..04fde2051 --- /dev/null +++ b/freqtrade/configuration/cli_options.py @@ -0,0 +1,302 @@ +""" +Definition of cli arguments used in arguments.py +""" +import argparse +import os + +from freqtrade import __version__, constants + + +def check_int_positive(value: str) -> int: + try: + uint = int(value) + if uint <= 0: + raise ValueError + except ValueError: + raise argparse.ArgumentTypeError( + f"{value} is invalid for this parameter, should be a positive integer value" + ) + return uint + + +class Arg: + # Optional CLI arguments + def __init__(self, *args, **kwargs): + self.cli = args + self.kwargs = kwargs + + +# List of available command line options +AVAILABLE_CLI_OPTIONS = { + # Common options + "verbosity": Arg( + '-v', '--verbose', + help='Verbose mode (-vv for more, -vvv to get all messages).', + action='count', + default=0, + ), + "logfile": Arg( + '--logfile', + help='Log to the file specified.', + metavar='FILE', + ), + "version": Arg( + '-V', '--version', + action='version', + version=f'%(prog)s {__version__}', + ), + "config": Arg( + '-c', '--config', + help=f'Specify configuration file (default: `{constants.DEFAULT_CONFIG}`). ' + f'Multiple --config options may be used. ' + f'Can be set to `-` to read config from stdin.', + action='append', + metavar='PATH', + ), + "datadir": Arg( + '-d', '--datadir', + help='Path to backtest data.', + metavar='PATH', + ), + # Main options + "strategy": Arg( + '-s', '--strategy', + help='Specify strategy class name (default: `%(default)s`).', + metavar='NAME', + default='DefaultStrategy', + ), + "strategy_path": Arg( + '--strategy-path', + help='Specify additional strategy lookup path.', + metavar='PATH', + ), + "db_url": Arg( + '--db-url', + help=f'Override trades database URL, this is useful in custom deployments ' + f'(default: `{constants.DEFAULT_DB_PROD_URL}` for Live Run mode, ' + f'`{constants.DEFAULT_DB_DRYRUN_URL}` for Dry Run).', + metavar='PATH', + ), + "sd_notify": Arg( + '--sd-notify', + help='Notify systemd service manager.', + action='store_true', + ), + # Optimize common + "ticker_interval": Arg( + '-i', '--ticker-interval', + help='Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`).', + ), + "timerange": Arg( + '--timerange', + help='Specify what timerange of data to use.', + ), + "max_open_trades": Arg( + '--max_open_trades', + help='Specify max_open_trades to use.', + type=int, + metavar='INT', + ), + "stake_amount": Arg( + '--stake_amount', + help='Specify stake_amount.', + type=float, + ), + "refresh_pairs": Arg( + '-r', '--refresh-pairs-cached', + help='Refresh the pairs files in tests/testdata with the latest data from the ' + 'exchange. Use it if you want to run your optimization commands with ' + 'up-to-date data.', + action='store_true', + ), + # Backtesting + "position_stacking": Arg( + '--eps', '--enable-position-stacking', + help='Allow buying the same pair multiple times (position stacking).', + action='store_true', + default=False, + ), + "use_max_market_positions": Arg( + '--dmmp', '--disable-max-market-positions', + help='Disable applying `max_open_trades` during backtest ' + '(same as setting `max_open_trades` to a very high number).', + action='store_false', + default=True, + ), + "live": Arg( + '-l', '--live', + help='Use live data.', + action='store_true', + ), + "strategy_list": Arg( + '--strategy-list', + help='Provide a comma-separated list of strategies to backtest. ' + 'Please note that ticker-interval needs to be set either in config ' + 'or via command line. When using this together with `--export trades`, ' + 'the strategy-name is injected into the filename ' + '(so `backtest-data.json` becomes `backtest-data-DefaultStrategy.json`', + nargs='+', + ), + "export": Arg( + '--export', + help='Export backtest results, argument are: trades. ' + 'Example: `--export=trades`', + ), + "exportfilename": Arg( + '--export-filename', + help='Save backtest results to the file with this filename (default: `%(default)s`). ' + 'Requires `--export` to be set as well. ' + 'Example: `--export-filename=user_data/backtest_data/backtest_today.json`', + metavar='PATH', + default=os.path.join('user_data', 'backtest_data', + 'backtest-result.json'), + ), + # Edge + "stoploss_range": Arg( + '--stoplosses', + help='Defines a range of stoploss values against which edge will assess the strategy. ' + 'The format is "min,max,step" (without any space). ' + 'Example: `--stoplosses=-0.01,-0.1,-0.001`', + ), + # Hyperopt + "hyperopt": Arg( + '--customhyperopt', + help='Specify hyperopt class name (default: `%(default)s`).', + metavar='NAME', + default=constants.DEFAULT_HYPEROPT, + ), + "hyperopt_path": Arg( + '--hyperopt-path', + help='Specify additional lookup path for Hyperopts and Hyperopt Loss functions.', + metavar='PATH', + ), + "epochs": Arg( + '-e', '--epochs', + help='Specify number of epochs (default: %(default)d).', + type=check_int_positive, + metavar='INT', + default=constants.HYPEROPT_EPOCH, + ), + "spaces": Arg( + '-s', '--spaces', + help='Specify which parameters to hyperopt. Space-separated list. ' + 'Default: `%(default)s`.', + choices=['all', 'buy', 'sell', 'roi', 'stoploss'], + nargs='+', + default='all', + ), + "print_all": Arg( + '--print-all', + help='Print all results, not only the best ones.', + action='store_true', + default=False, + ), + "hyperopt_jobs": Arg( + '-j', '--job-workers', + help='The number of concurrently running jobs for hyperoptimization ' + '(hyperopt worker processes). ' + 'If -1 (default), all CPUs are used, for -2, all CPUs but one are used, etc. ' + 'If 1 is given, no parallel computing code is used at all.', + type=int, + metavar='JOBS', + default=-1, + ), + "hyperopt_random_state": Arg( + '--random-state', + help='Set random state to some positive integer for reproducible hyperopt results.', + type=check_int_positive, + metavar='INT', + ), + "hyperopt_min_trades": Arg( + '--min-trades', + help="Set minimal desired number of trades for evaluations in the hyperopt " + "optimization path (default: 1).", + type=check_int_positive, + metavar='INT', + default=1, + ), + "hyperopt_continue": Arg( + "--continue", + help="Continue hyperopt from previous runs. " + "By default, temporary files will be removed and hyperopt will start from scratch.", + default=False, + action='store_true', + ), + "hyperopt_loss": Arg( + '--hyperopt-loss', + help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). ' + 'Different functions can generate completely different results, ' + 'since the target for optimization is different. (default: `%(default)s`).', + metavar='NAME', + default=constants.DEFAULT_HYPEROPT_LOSS, + ), + # List exchanges + "print_one_column": Arg( + '-1', '--one-column', + help='Print exchanges in one column.', + action='store_true', + ), + # Script options + "pairs": Arg( + '-p', '--pairs', + help='Show profits for only these pairs. Pairs are comma-separated.', + ), + # Download data + "pairs_file": Arg( + '--pairs-file', + help='File containing a list of pairs to download.', + metavar='FILE', + ), + "days": Arg( + '--days', + help='Download data for given number of days.', + type=check_int_positive, + metavar='INT', + ), + "exchange": Arg( + '--exchange', + help=f'Exchange name (default: `{constants.DEFAULT_EXCHANGE}`). ' + f'Only valid if no config is provided.', + ), + "timeframes": Arg( + '-t', '--timeframes', + help=f'Specify which tickers to download. Space-separated list. ' + f'Default: `{constants.DEFAULT_DOWNLOAD_TICKER_INTERVALS}`.', + choices=['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', + '6h', '8h', '12h', '1d', '3d', '1w'], + nargs='+', + ), + "erase": Arg( + '--erase', + help='Clean all existing data for the selected exchange/pairs/timeframes.', + action='store_true', + ), + # Plot dataframe + "indicators1": Arg( + '--indicators1', + help='Set indicators from your strategy you want in the first row of the graph. ' + 'Comma-separated list. Example: `ema3,ema5`. Default: `%(default)s`.', + default='sma,ema3,ema5', + ), + "indicators2": Arg( + '--indicators2', + help='Set indicators from your strategy you want in the third row of the graph. ' + 'Comma-separated list. Example: `fastd,fastk`. Default: `%(default)s`.', + default='macd,macdsignal', + ), + "plot_limit": Arg( + '--plot-limit', + help='Specify tick limit for plotting. Notice: too high values cause huge files. ' + 'Default: %(default)s.', + type=check_int_positive, + metavar='INT', + default=750, + ), + "trade_source": Arg( + '--trade-source', + help='Specify the source for trades (Can be DB or file (backtest file)) ' + 'Default: %(default)s', + choices=["DB", "file"], + default="file", + ), +} From bf1c197a37ac73a4ba96797f8c3d5f7b01c648a0 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 26 Jul 2019 02:21:31 +0300 Subject: [PATCH 0025/3421] import errors fixed --- freqtrade/configuration/arguments.py | 2 +- freqtrade/tests/test_arguments.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 988f485dc..4f0c3d31b 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -6,7 +6,7 @@ import re from typing import List, NamedTuple, Optional import arrow -from freqtrade.arguments.cli_options import AVAILABLE_CLI_OPTIONS +from freqtrade.configuration.cli_options import AVAILABLE_CLI_OPTIONS from freqtrade import constants ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir"] diff --git a/freqtrade/tests/test_arguments.py b/freqtrade/tests/test_arguments.py index 3de71a621..bf744f72b 100644 --- a/freqtrade/tests/test_arguments.py +++ b/freqtrade/tests/test_arguments.py @@ -5,7 +5,7 @@ import pytest from freqtrade.configuration import Arguments, TimeRange from freqtrade.configuration.arguments import ARGS_DOWNLOADER, ARGS_PLOT_DATAFRAME -from freqtrade.configuration.arguments import check_int_positive +from freqtrade.configuration.cli_options import check_int_positive # Parse common command-line-arguments. Used for all tools From 327e505273830f80280867bf6a9d572310b3e7b4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 26 Jul 2019 02:57:51 +0300 Subject: [PATCH 0026/3421] non-working link to misc.py removed --- docs/bot-usage.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 4462b63c6..9af3692f8 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -294,11 +294,6 @@ optional arguments: To understand edge and how to read the results, please read the [edge documentation](edge.md). -## A parameter missing in the configuration? - -All parameters for `main.py`, `backtesting`, `hyperopt` are referenced -in [misc.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/misc.py#L84) - ## Next step The optimal strategy of the bot will change with time depending of the market trends. The next step is to From 1ac4a7e11609e0ece9640dd60013730169751310 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 26 Jul 2019 02:59:10 +0300 Subject: [PATCH 0027/3421] rendering for a Note fixed --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 657273e2f..74b3a3202 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -215,7 +215,7 @@ The `freqtrade.service.watchdog` file contains an example of the service unit co as the watchdog. !!! Note - The sd_notify communication between the bot and the systemd service manager will not work if the bot runs in a Docker container. + The sd_notify communication between the bot and the systemd service manager will not work if the bot runs in a Docker container. ------ From 785a7a22bca50e645b831caf67815db1fbc09b1e Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 26 Jul 2019 04:02:34 +0300 Subject: [PATCH 0028/3421] output divider in logs between throttles --- freqtrade/worker.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index c224b4ee5..db0dba0e8 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -128,6 +128,7 @@ class Worker(object): return result def _process(self) -> bool: + logger.debug("========================================") state_changed = False try: state_changed = self.freqtrade.process() From c2deb1db255e5a091daa38460212b8a593141ef4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 26 Jul 2019 02:05:20 +0300 Subject: [PATCH 0029/3421] eliminate warnings in pytest when testing handling of the deprecated strategy interfaces --- freqtrade/tests/strategy/test_strategy.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/tests/strategy/test_strategy.py b/freqtrade/tests/strategy/test_strategy.py index 609cc58ff..df8c0f126 100644 --- a/freqtrade/tests/strategy/test_strategy.py +++ b/freqtrade/tests/strategy/test_strategy.py @@ -366,6 +366,7 @@ def test_strategy_override_use_sell_profit_only(caplog): ) in caplog.record_tuples +@pytest.mark.filterwarnings("ignore:deprecated") def test_deprecate_populate_indicators(result): default_location = path.join(path.dirname(path.realpath(__file__))) resolver = StrategyResolver({'strategy': 'TestStrategyLegacy', @@ -398,6 +399,7 @@ def test_deprecate_populate_indicators(result): in str(w[-1].message) +@pytest.mark.filterwarnings("ignore:deprecated") def test_call_deprecated_function(result, monkeypatch): default_location = path.join(path.dirname(path.realpath(__file__))) resolver = StrategyResolver({'strategy': 'TestStrategyLegacy', From bc299067aa2d8f42e9dbc2bb178083f19c09410d Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 27 Jul 2019 23:24:06 +0300 Subject: [PATCH 0030/3421] get rid of pandas warning in pytest --- freqtrade/tests/optimize/test_hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index fc71200a5..fad89e877 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -297,7 +297,7 @@ def test_loss_calculation_prefer_correct_trade_count(default_conf, hyperopt_resu def test_loss_calculation_prefer_shorter_trades(default_conf, hyperopt_results) -> None: resultsb = hyperopt_results.copy() - resultsb['trade_duration'][1] = 20 + resultsb.loc[1, 'trade_duration'] = 20 hl = HyperOptLossResolver(default_conf).hyperoptloss longer = hl.hyperopt_loss_function(hyperopt_results, 100) From 08a3d2632859c07ceaf9be05dc668799be5dd73e Mon Sep 17 00:00:00 2001 From: Leif Segen Date: Sat, 27 Jul 2019 18:35:21 -0500 Subject: [PATCH 0031/3421] Update bot-usage.md Update in response to feedback. --- docs/bot-usage.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index b29b046e5..bc0d0a87c 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -2,7 +2,8 @@ This page explains the different parameters of the bot and how to run it. -Note: You can now use the bot by executing `source .env/bin/activate; freqtrade`. +!Note: + If you've used `setup.sh`, don't forget to activate your virtual environment (`source .env/bin/activate`) before running freqtrade commands. ## Bot commands From c85cd13ca1a5bdbba07659d989a3f09de9464456 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Jul 2019 13:31:42 +0200 Subject: [PATCH 0032/3421] Change default backtest result to "backtest_results" - backtest_data is misleading --- docs/backtesting.md | 2 +- docs/bot-usage.md | 4 ++-- docs/data-analysis.md | 2 +- docs/plotting.md | 2 +- freqtrade/configuration/cli_options.py | 4 ++-- user_data/backtest_results/.gitkeep | 0 6 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 user_data/backtest_results/.gitkeep diff --git a/docs/backtesting.md b/docs/backtesting.md index 179bcee15..57f9f6296 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -237,7 +237,7 @@ All listed Strategies need to be in the same directory. freqtrade backtesting --timerange 20180401-20180410 --ticker-interval 5m --strategy-list Strategy001 Strategy002 --export trades ``` -This will save the results to `user_data/backtest_data/backtest-result-.json`, injecting the strategy-name into the target filename. +This will save the results to `user_data/backtest_results/backtest-result-.json`, injecting the strategy-name into the target filename. There will be an additional table comparing win/losses of the different strategies (identical to the "Total" row in the first table). Detailed output for all strategies one after the other will be available, so make sure to scroll up. diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 8877ed010..ef28eb60c 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -176,8 +176,8 @@ optional arguments: --export-filename PATH Save backtest results to this filename requires --export to be set as well Example --export- - filename=user_data/backtest_data/backtest_today.json - (default: user_data/backtest_data/backtest- + filename=user_data/backtest_results/backtest_today.json + (default: user_data/backtest_results/backtest- result.json) ``` diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 1940fa3e6..cda7a9a57 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -15,7 +15,7 @@ Freqtrade provides the `load_backtest_data()` helper function to easily load the ``` python from freqtrade.data.btanalysis import load_backtest_data -df = load_backtest_data("user_data/backtest-result.json") +df = load_backtest_data("user_data/backtest_results/backtest-result.json") # Show value-counts per pair df.groupby("pair")["sell_reason"].value_counts() diff --git a/docs/plotting.md b/docs/plotting.md index b8e041d61..acab60b23 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -64,7 +64,7 @@ python3 scripts/plot_dataframe.py --db-url sqlite:///tradesv3.dry_run.sqlite -p To plot trades from a backtesting result, use `--export-filename ` ``` bash -python3 scripts/plot_dataframe.py --export-filename user_data/backtest_data/backtest-result.json -p BTC/ETH +python3 scripts/plot_dataframe.py --export-filename user_data/backtest_results/backtest-result.json -p BTC/ETH ``` To plot a custom strategy the strategy should have first be backtested. diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 04fde2051..4ec280d0f 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -146,9 +146,9 @@ AVAILABLE_CLI_OPTIONS = { '--export-filename', help='Save backtest results to the file with this filename (default: `%(default)s`). ' 'Requires `--export` to be set as well. ' - 'Example: `--export-filename=user_data/backtest_data/backtest_today.json`', + 'Example: `--export-filename=user_data/backtest_results/backtest_today.json`', metavar='PATH', - default=os.path.join('user_data', 'backtest_data', + default=os.path.join('user_data', 'backtest_results', 'backtest-result.json'), ), # Edge diff --git a/user_data/backtest_results/.gitkeep b/user_data/backtest_results/.gitkeep new file mode 100644 index 000000000..e69de29bb From 6c3a0eb1d6a29df271bf0a32fa8baddec591acd4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Jul 2019 13:42:56 +0200 Subject: [PATCH 0033/3421] add create_userdir function --- freqtrade/configuration/configuration.py | 2 +- ...create_datadir.py => folder_operations.py} | 14 +++++++++++++ freqtrade/tests/test_configuration.py | 20 ++++++++++++++++++- 3 files changed, 34 insertions(+), 2 deletions(-) rename freqtrade/configuration/{create_datadir.py => folder_operations.py} (56%) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 17ad37d6a..d96a291e2 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -10,7 +10,7 @@ from typing import Any, Callable, Dict, Optional from freqtrade import OperationalException, constants from freqtrade.configuration.check_exchange import check_exchange -from freqtrade.configuration.create_datadir import create_datadir +from freqtrade.configuration.folder_operations import create_datadir from freqtrade.configuration.json_schema import validate_config_schema from freqtrade.loggers import setup_logging from freqtrade.misc import deep_merge_dicts diff --git a/freqtrade/configuration/create_datadir.py b/freqtrade/configuration/folder_operations.py similarity index 56% rename from freqtrade/configuration/create_datadir.py rename to freqtrade/configuration/folder_operations.py index acc3a29ca..f402f91e0 100644 --- a/freqtrade/configuration/create_datadir.py +++ b/freqtrade/configuration/folder_operations.py @@ -18,3 +18,17 @@ def create_datadir(config: Dict[str, Any], datadir: Optional[str] = None) -> str folder.mkdir(parents=True) logger.info(f'Created data directory: {datadir}') return str(folder) + + +def create_userdata_dir(directory: str): + sub_dirs = ["backtest_results", "data", "hyperopts", "plots", "strategies", ] + folder = Path(directory) + if not folder.is_dir(): + folder.mkdir(parents=True) + logger.info(f'Created user-data directory: {folder}') + + # Create required subdirectories + for f in sub_dirs: + subfolder = folder / f + if not subfolder.is_dir(): + subfolder.mkdir(parents=False) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 56ff79625..21df8d4e5 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -13,7 +13,7 @@ from jsonschema import Draft4Validator, ValidationError, validate from freqtrade import OperationalException, constants from freqtrade.configuration import Arguments, Configuration from freqtrade.configuration.check_exchange import check_exchange -from freqtrade.configuration.create_datadir import create_datadir +from freqtrade.configuration.folder_operations import create_datadir, create_userdata_dir from freqtrade.configuration.json_schema import validate_config_schema from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL from freqtrade.loggers import _set_loggers @@ -609,6 +609,24 @@ def test_create_datadir(mocker, default_conf, caplog) -> None: assert log_has('Created data directory: /foo/bar', caplog.record_tuples) +def test_create_userdata_dir(mocker, default_conf, caplog) -> None: + mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) + md = mocker.patch.object(Path, 'mkdir', MagicMock()) + + create_userdata_dir('/tmp/bar') + assert md.call_count == 6 + assert md.call_args[1]['parents'] is False + assert log_has('Created user-data directory: /tmp/bar', caplog.record_tuples) + + +def test_create_userdata_dir_exists(mocker, default_conf, caplog) -> None: + mocker.patch.object(Path, "is_dir", MagicMock(return_value=True)) + md = mocker.patch.object(Path, 'mkdir', MagicMock()) + + create_userdata_dir('/tmp/bar') + assert md.call_count == 0 + + def test_validate_tsl(default_conf): default_conf['trailing_stop'] = True default_conf['trailing_stop_positive'] = 0 From 23435512c461a0b3331314f4e06911d90fe94497 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Jul 2019 14:13:38 +0200 Subject: [PATCH 0034/3421] Add create-userdir command to initialize a user directory --- freqtrade/configuration/arguments.py | 10 ++++++++-- freqtrade/configuration/cli_options.py | 5 +++++ freqtrade/configuration/configuration.py | 9 ++++++++- freqtrade/tests/conftest.py | 1 + freqtrade/utils.py | 16 +++++++++++++++- 5 files changed, 37 insertions(+), 4 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 4f0c3d31b..0651d9544 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -31,6 +31,8 @@ ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"] ARGS_LIST_EXCHANGES = ["print_one_column"] +ARGS_CREATE_USERDIR = ["user_data_dir"] + ARGS_DOWNLOADER = ARGS_COMMON + ["pairs", "pairs_file", "days", "exchange", "timeframes", "erase"] ARGS_PLOT_DATAFRAME = (ARGS_COMMON + ARGS_STRATEGY + @@ -106,8 +108,7 @@ class Arguments(object): :return: None """ from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge - from freqtrade.utils import start_list_exchanges - + from freqtrade.utils import start_create_userdir, start_list_exchanges subparsers = self.parser.add_subparsers(dest='subparser') # Add backtesting subcommand @@ -125,6 +126,11 @@ class Arguments(object): hyperopt_cmd.set_defaults(func=start_hyperopt) self._build_args(optionlist=ARGS_HYPEROPT, parser=hyperopt_cmd) + create_userdir_cmd = subparsers.add_parser('create-userdir', + help="Create user-data directory.") + create_userdir_cmd.set_defaults(func=start_create_userdir) + self._build_args(optionlist=ARGS_CREATE_USERDIR, parser=create_userdir_cmd) + # Add list-exchanges subcommand list_exchanges_cmd = subparsers.add_parser( 'list-exchanges', diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 4ec280d0f..00c28ed07 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -58,6 +58,11 @@ AVAILABLE_CLI_OPTIONS = { help='Path to backtest data.', metavar='PATH', ), + "user_data_dir": Arg( + '--userdir', '--user-data-dir', + help='Path to Userdata Directory.', + metavar='PATH', + ), # Main options "strategy": Arg( '-s', '--strategy', diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index d96a291e2..0fd092728 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -6,11 +6,12 @@ import logging import sys import warnings from argparse import Namespace +from pathlib import Path from typing import Any, Callable, Dict, Optional from freqtrade import OperationalException, constants from freqtrade.configuration.check_exchange import check_exchange -from freqtrade.configuration.folder_operations import create_datadir +from freqtrade.configuration.folder_operations import create_datadir, create_userdata_dir from freqtrade.configuration.json_schema import validate_config_schema from freqtrade.loggers import setup_logging from freqtrade.misc import deep_merge_dicts @@ -173,6 +174,12 @@ class Configuration(object): Extract information for sys.argv and load datadir configuration: the --datadir option """ + if 'user_data_dir' in self.args and self.args.user_data_dir: + config.update({'user_data_dir': self.args.user_data_dir}) + create_userdata_dir(config['user_data_dir']) + elif 'user_data_dir' not in config: + config.update({'user_data_dir': str(Path.cwd() / "user_data")}) + if 'datadir' in self.args and self.args.datadir: config.update({'datadir': create_datadir(config, self.args.datadir)}) else: diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py index 5862a2e89..de3b2e4d9 100644 --- a/freqtrade/tests/conftest.py +++ b/freqtrade/tests/conftest.py @@ -234,6 +234,7 @@ def default_conf(): }, "initial_state": "running", "db_url": "sqlite://", + "user_data_dir": "user_data", "verbosity": 3, } return configuration diff --git a/freqtrade/utils.py b/freqtrade/utils.py index d550ef43c..53325b70b 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -1,12 +1,13 @@ import logging +import sys from argparse import Namespace from typing import Any, Dict from freqtrade.configuration import Configuration +from freqtrade.configuration.folder_operations import create_userdata_dir from freqtrade.exchange import available_exchanges from freqtrade.state import RunMode - logger = logging.getLogger(__name__) @@ -39,3 +40,16 @@ def start_list_exchanges(args: Namespace) -> None: else: print(f"Exchanges supported by ccxt and available for Freqtrade: " f"{', '.join(available_exchanges())}") + + +def start_create_userdir(args: Namespace) -> None: + """ + Create "user_data" directory to contain user data strategies, hyperopts, ...) + :param args: Cli args from Arguments() + :return: None + """ + if "user_data_dir" in args and args.user_data_dir: + create_userdata_dir(args.user_data_dir) + else: + logger.warning("`create-userdir` requires --userdir to be set.") + sys.exit(1) From 56c8bdbaa24b72d64d260a2dc1dcee030f65f478 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Jul 2019 14:32:00 +0200 Subject: [PATCH 0035/3421] Test create-userdir command line option --- freqtrade/tests/test_utils.py | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/freqtrade/tests/test_utils.py b/freqtrade/tests/test_utils.py index a12b709d7..2bbece33f 100644 --- a/freqtrade/tests/test_utils.py +++ b/freqtrade/tests/test_utils.py @@ -1,8 +1,12 @@ -from freqtrade.utils import setup_utils_configuration, start_list_exchanges -from freqtrade.tests.conftest import get_args -from freqtrade.state import RunMode - import re +from unittest.mock import MagicMock + +import pytest + +from freqtrade.state import RunMode +from freqtrade.tests.conftest import get_args, log_has +from freqtrade.utils import (setup_utils_configuration, start_create_userdir, + start_list_exchanges) def test_setup_utils_configuration(): @@ -40,3 +44,26 @@ def test_list_exchanges(capsys): assert not re.match(r"Exchanges supported by ccxt and available.*", captured.out) assert re.search(r"^binance$", captured.out, re.MULTILINE) assert re.search(r"^bittrex$", captured.out, re.MULTILINE) + + +def test_create_datadir_failed(caplog): + + args = [ + "create-userdir", + ] + with pytest.raises(SystemExit): + start_create_userdir(get_args(args)) + assert log_has("`create-userdir` requires --userdir to be set.", caplog.record_tuples) + + +def test_create_datadir(caplog, mocker): + cud = mocker.patch("freqtrade.utils.create_userdata_dir", MagicMock()) + args = [ + "create-userdir", + "--userdir", + "/temp/freqtrade/test" + ] + start_create_userdir(get_args(args)) + + assert cud.call_count == 1 + assert len(caplog.record_tuples) == 0 From 1b2581f0cb7c4ed9f15619533592fa9a9aad915d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Jul 2019 14:32:29 +0200 Subject: [PATCH 0036/3421] Add user_data_dir to configuration --- freqtrade/configuration/arguments.py | 2 +- freqtrade/configuration/configuration.py | 6 +++++- freqtrade/configuration/folder_operations.py | 6 ++++-- freqtrade/tests/test_configuration.py | 16 +++++++++++++--- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 0651d9544..ef19d121e 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -9,7 +9,7 @@ import arrow from freqtrade.configuration.cli_options import AVAILABLE_CLI_OPTIONS from freqtrade import constants -ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir"] +ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir", "user_data_dir"] ARGS_STRATEGY = ["strategy", "strategy_path"] diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 0fd092728..78584ce6a 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -176,9 +176,13 @@ class Configuration(object): """ if 'user_data_dir' in self.args and self.args.user_data_dir: config.update({'user_data_dir': self.args.user_data_dir}) - create_userdata_dir(config['user_data_dir']) elif 'user_data_dir' not in config: + # Default to cwd/user_data (legacy option ...) config.update({'user_data_dir': str(Path.cwd() / "user_data")}) + # reset to user_data_dir so this contains the absolute path. + config['user_data_dir'] = create_userdata_dir(config['user_data_dir']) + + logger.info('Using user-data directory: %s ...', config['user_data_dir']) if 'datadir' in self.args and self.args.datadir: config.update({'datadir': create_datadir(config, self.args.datadir)}) diff --git a/freqtrade/configuration/folder_operations.py b/freqtrade/configuration/folder_operations.py index f402f91e0..d43dd1bf1 100644 --- a/freqtrade/configuration/folder_operations.py +++ b/freqtrade/configuration/folder_operations.py @@ -8,7 +8,7 @@ logger = logging.getLogger(__name__) def create_datadir(config: Dict[str, Any], datadir: Optional[str] = None) -> str: - folder = Path(datadir) if datadir else Path('user_data/data') + folder = Path(datadir) if datadir else Path(f"{config['user_data_dir']}/data") if not datadir: # set datadir exchange_name = config.get('exchange', {}).get('name').lower() @@ -20,7 +20,7 @@ def create_datadir(config: Dict[str, Any], datadir: Optional[str] = None) -> str return str(folder) -def create_userdata_dir(directory: str): +def create_userdata_dir(directory: str) -> str: sub_dirs = ["backtest_results", "data", "hyperopts", "plots", "strategies", ] folder = Path(directory) if not folder.is_dir(): @@ -32,3 +32,5 @@ def create_userdata_dir(directory: str): subfolder = folder / f if not subfolder.is_dir(): subfolder.mkdir(parents=False) + # TODO: convert this to return Path + return str(folder.resolve()) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 21df8d4e5..4d1acc8d2 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -331,11 +331,15 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non 'freqtrade.configuration.configuration.create_datadir', lambda c, x: x ) - + mocker.patch( + 'freqtrade.configuration.configuration.create_userdata_dir', + lambda x: x + ) arglist = [ '--config', 'config.json', '--strategy', 'DefaultStrategy', '--datadir', '/foo/bar', + '--userdir', "/tmp/freqtrade", 'backtesting', '--ticker-interval', '1m', '--live', @@ -357,7 +361,11 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config assert log_has( - 'Using data directory: {} ...'.format(config['datadir']), + 'Using data directory: {} ...'.format("/foo/bar"), + caplog.record_tuples + ) + assert log_has( + 'Using user-data directory: {} ...'.format("/tmp/freqtrade"), caplog.record_tuples ) assert 'ticker_interval' in config @@ -613,10 +621,12 @@ def test_create_userdata_dir(mocker, default_conf, caplog) -> None: mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) md = mocker.patch.object(Path, 'mkdir', MagicMock()) - create_userdata_dir('/tmp/bar') + x = create_userdata_dir('/tmp/bar') assert md.call_count == 6 assert md.call_args[1]['parents'] is False assert log_has('Created user-data directory: /tmp/bar', caplog.record_tuples) + assert isinstance(x, str) + assert x == "/tmp/bar" def test_create_userdata_dir_exists(mocker, default_conf, caplog) -> None: From da755d1c83389a9d242923f480fcb23ae8f05a57 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Jul 2019 15:37:52 +0200 Subject: [PATCH 0037/3421] Remove obsolete variable --- scripts/download_backtest_data.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/download_backtest_data.py b/scripts/download_backtest_data.py index ed96cec71..e721d77ba 100755 --- a/scripts/download_backtest_data.py +++ b/scripts/download_backtest_data.py @@ -20,8 +20,6 @@ import logging logger = logging.getLogger('download_backtest_data') -DEFAULT_DL_PATH = 'user_data/data' - # Do not read the default config if config is not specified # in the command line options explicitely arguments = Arguments(sys.argv[1:], 'Download backtest data', From eab82fdec7ea73fa53e8a7f348e38a0414537046 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Jul 2019 15:49:52 +0200 Subject: [PATCH 0038/3421] plot-scripts use user_data_dir --- freqtrade/configuration/folder_operations.py | 2 +- freqtrade/plot/plotting.py | 6 +++--- freqtrade/tests/test_plotting.py | 4 +++- scripts/plot_dataframe.py | 3 ++- scripts/plot_profit.py | 3 ++- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/freqtrade/configuration/folder_operations.py b/freqtrade/configuration/folder_operations.py index d43dd1bf1..2ea9cd268 100644 --- a/freqtrade/configuration/folder_operations.py +++ b/freqtrade/configuration/folder_operations.py @@ -33,4 +33,4 @@ def create_userdata_dir(directory: str) -> str: if not subfolder.is_dir(): subfolder.mkdir(parents=False) # TODO: convert this to return Path - return str(folder.resolve()) + return folder diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index dde6f78f0..948964462 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -308,7 +308,7 @@ def generate_plot_filename(pair, ticker_interval) -> str: return file_name -def store_plot_file(fig, filename: str, auto_open: bool = False) -> None: +def store_plot_file(fig, filename: str, folder: Path, auto_open: bool = False) -> None: """ Generate a plot html file from pre populated fig plotly object :param fig: Plotly Figure to plot @@ -317,7 +317,7 @@ def store_plot_file(fig, filename: str, auto_open: bool = False) -> None: :return: None """ - Path("user_data/plots").mkdir(parents=True, exist_ok=True) + folder.mkdir(parents=True, exist_ok=True) - plot(fig, filename=str(Path('user_data/plots').joinpath(filename)), + plot(fig, filename=str(folder.joinpath(filename)), auto_open=auto_open) diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index 0ebadf720..c80d0e780 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -1,5 +1,6 @@ from copy import deepcopy +from pathlib import Path from unittest.mock import MagicMock import plotly.graph_objs as go @@ -209,7 +210,8 @@ def test_generate_Plot_filename(): def test_generate_plot_file(mocker, caplog): fig = generage_empty_figure() plot_mock = mocker.patch("freqtrade.plot.plotting.plot", MagicMock()) - store_plot_file(fig, filename="freqtrade-plot-UNITTEST_BTC-5m.html") + store_plot_file(fig, filename="freqtrade-plot-UNITTEST_BTC-5m.html", + folder=Path("user_data/plots")) assert plot_mock.call_count == 1 assert plot_mock.call_args[0][0] == fig diff --git a/scripts/plot_dataframe.py b/scripts/plot_dataframe.py index 034a6f448..04911f93e 100755 --- a/scripts/plot_dataframe.py +++ b/scripts/plot_dataframe.py @@ -77,7 +77,8 @@ def analyse_and_plot_pairs(config: Dict[str, Any]): indicators2=config["indicators2"].split(",") ) - store_plot_file(fig, generate_plot_filename(pair, config['ticker_interval'])) + store_plot_file(fig, filename=generate_plot_filename(pair, config['ticker_interval']), + folder=config['user_data_dir'] / "plot") logger.info('End of ploting process %s plots generated', pair_counter) diff --git a/scripts/plot_profit.py b/scripts/plot_profit.py index 4290bca45..c83ad1088 100755 --- a/scripts/plot_profit.py +++ b/scripts/plot_profit.py @@ -32,7 +32,8 @@ def plot_profit(config: Dict[str, Any]) -> None: # Create an average close price of all the pairs that were involved. # this could be useful to gauge the overall market trend fig = generate_profit_graph(plot_elements["pairs"], plot_elements["tickers"], trades) - store_plot_file(fig, filename='freqtrade-profit-plot.html', auto_open=True) + store_plot_file(fig, filename='freqtrade-profit-plot.html', + folder=config['user_data_dir'] / "plot", auto_open=True) def plot_parse_args(args: List[str]) -> Dict[str, Any]: From ae0e00118736de14cb5337174d5865c5986e4c6e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Jul 2019 15:56:32 +0200 Subject: [PATCH 0039/3421] Fix some bugs in tests --- freqtrade/tests/test_configuration.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 4d1acc8d2..15a2a3271 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -305,6 +305,7 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert 'exchange' in config assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config + assert 'user_data_dir' in config assert log_has( 'Using data directory: {} ...'.format(config['datadir']), caplog.record_tuples @@ -333,7 +334,7 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non ) mocker.patch( 'freqtrade.configuration.configuration.create_userdata_dir', - lambda x: x + lambda x: Path(x) ) arglist = [ '--config', 'config.json', @@ -368,6 +369,8 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non 'Using user-data directory: {} ...'.format("/tmp/freqtrade"), caplog.record_tuples ) + assert 'user_data_dir' in config + assert 'ticker_interval' in config assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', caplog.record_tuples) @@ -625,8 +628,8 @@ def test_create_userdata_dir(mocker, default_conf, caplog) -> None: assert md.call_count == 6 assert md.call_args[1]['parents'] is False assert log_has('Created user-data directory: /tmp/bar', caplog.record_tuples) - assert isinstance(x, str) - assert x == "/tmp/bar" + assert isinstance(x, Path) + assert str(x) == "/tmp/bar" def test_create_userdata_dir_exists(mocker, default_conf, caplog) -> None: From 0a253d66d07c4bb4090a981a6a9a57756060c4eb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Jul 2019 15:56:44 +0200 Subject: [PATCH 0040/3421] Remove os.path from hyperopt --- freqtrade/optimize/hyperopt.py | 11 +++++------ freqtrade/tests/optimize/test_hyperopt.py | 14 +++++++++----- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 759ceffbe..a1ec43c14 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -5,7 +5,6 @@ This module contains the hyperopt logic """ import logging -import os import sys from operator import itemgetter @@ -31,9 +30,9 @@ logger = logging.getLogger(__name__) INITIAL_POINTS = 30 MAX_LOSS = 100000 # just a big enough number to be bad result in loss optimization -TICKERDATA_PICKLE = os.path.join('user_data', 'hyperopt_tickerdata.pkl') -TRIALSDATA_PICKLE = os.path.join('user_data', 'hyperopt_results.pickle') -HYPEROPT_LOCKFILE = os.path.join('user_data', 'hyperopt.lock') +TICKERDATA_PICKLE = Path.cwd() / 'user_data' / 'hyperopt_tickerdata.pkl' +TRIALSDATA_PICKLE = Path.cwd() / 'user_data' / 'hyperopt_results.pickle' +HYPEROPT_LOCKFILE = Path.cwd() / 'user_data' / 'hyperopt.lock' class Hyperopt(Backtesting): @@ -115,7 +114,7 @@ class Hyperopt(Backtesting): """ logger.info('Reading Trials from \'%s\'', self.trials_file) trials = load(self.trials_file) - os.remove(self.trials_file) + self.trials_file.unlink() return trials def log_trials_result(self) -> None: @@ -269,7 +268,7 @@ class Hyperopt(Backtesting): def load_previous_results(self): """ read trials file if we have one """ - if os.path.exists(self.trials_file) and os.path.getsize(self.trials_file) > 0: + if self.trials_file.is_file() and self.trials_file.stat().st_size > 0: self.trials = self.read_trials() logger.info( 'Loaded %d previous evaluations from disk.', diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index fad89e877..2370e145e 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -1,12 +1,13 @@ # pragma pylint: disable=missing-docstring,W0212,C0103 import os from datetime import datetime -from unittest.mock import MagicMock +from unittest.mock import MagicMock, PropertyMock import pandas as pd import pytest from arrow import Arrow from filelock import Timeout +from pathlib import Path from freqtrade import DependencyException from freqtrade.data.converter import parse_ticker_dataframe @@ -53,11 +54,14 @@ def create_trials(mocker, hyperopt) -> None: - we might have a pickle'd file so make sure that we return false when looking for it """ - hyperopt.trials_file = os.path.join('freqtrade', 'tests', 'optimize', 'ut_trials.pickle') + hyperopt.trials_file = Path('freqtrade/tests/optimize/ut_trials.pickle') - mocker.patch('freqtrade.optimize.hyperopt.os.path.exists', return_value=False) - mocker.patch('freqtrade.optimize.hyperopt.os.path.getsize', return_value=1) - mocker.patch('freqtrade.optimize.hyperopt.os.remove', return_value=True) + mocker.patch.object(Path, "is_file", MagicMock(return_value=False)) + stat_mock = MagicMock() + stat_mock.st_size = PropertyMock(return_value=1) + mocker.patch.object(Path, "stat", MagicMock(return_value=False)) + + mocker.patch.object(Path, "unlink", MagicMock(return_value=True)) mocker.patch('freqtrade.optimize.hyperopt.dump', return_value=None) return [{'loss': 1, 'result': 'foo', 'params': {}}] From 113947132c0a6740ef6e8b19a37759a0b0715a57 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Jul 2019 16:06:44 +0200 Subject: [PATCH 0041/3421] user_data_dir is PATH in config, not str --- freqtrade/tests/conftest.py | 2 +- freqtrade/tests/test_configuration.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py index de3b2e4d9..0aaf28d96 100644 --- a/freqtrade/tests/conftest.py +++ b/freqtrade/tests/conftest.py @@ -234,7 +234,7 @@ def default_conf(): }, "initial_state": "running", "db_url": "sqlite://", - "user_data_dir": "user_data", + "user_data_dir": Path("user_data"), "verbosity": 3, } return configuration diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 15a2a3271..3d75818d4 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -53,6 +53,7 @@ def test_load_config_incorrect_stake_amount(default_conf) -> None: def test_load_config_file(default_conf, mocker, caplog) -> None: + del default_conf['user_data_dir'] file_mock = mocker.patch('freqtrade.configuration.configuration.open', mocker.mock_open( read_data=json.dumps(default_conf) )) From 2c7a248307356fb6170ac2aa79c7f9e5443e0066 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Jul 2019 16:07:06 +0200 Subject: [PATCH 0042/3421] Use user_data_dir in hyperopt --- freqtrade/optimize/__init__.py | 4 ++-- freqtrade/optimize/hyperopt.py | 17 ++++++++++------- freqtrade/tests/optimize/test_hyperopt.py | 9 ++++----- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/freqtrade/optimize/__init__.py b/freqtrade/optimize/__init__.py index 8b548eefe..2c7c42c4d 100644 --- a/freqtrade/optimize/__init__.py +++ b/freqtrade/optimize/__init__.py @@ -64,14 +64,14 @@ def start_hyperopt(args: Namespace) -> None: :return: None """ # Import here to avoid loading hyperopt module when it's not used - from freqtrade.optimize.hyperopt import Hyperopt, HYPEROPT_LOCKFILE + from freqtrade.optimize.hyperopt import Hyperopt # Initialize configuration config = setup_configuration(args, RunMode.HYPEROPT) logger.info('Starting freqtrade in Hyperopt mode') - lock = FileLock(HYPEROPT_LOCKFILE) + lock = FileLock(Hyperopt.get_lock_filename(config)) try: with lock.acquire(timeout=1): diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index a1ec43c14..2fff91e58 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -30,9 +30,6 @@ logger = logging.getLogger(__name__) INITIAL_POINTS = 30 MAX_LOSS = 100000 # just a big enough number to be bad result in loss optimization -TICKERDATA_PICKLE = Path.cwd() / 'user_data' / 'hyperopt_tickerdata.pkl' -TRIALSDATA_PICKLE = Path.cwd() / 'user_data' / 'hyperopt_results.pickle' -HYPEROPT_LOCKFILE = Path.cwd() / 'user_data' / 'hyperopt.lock' class Hyperopt(Backtesting): @@ -50,6 +47,8 @@ class Hyperopt(Backtesting): self.custom_hyperoptloss = HyperOptLossResolver(self.config).hyperoptloss self.calculate_loss = self.custom_hyperoptloss.hyperopt_loss_function + self.trials_file = self.config['user_data_dir'] / 'hyperopt_results.pickle' + self.tickerdata_pickle = self.config['user_data_dir'] / 'hyperopt_tickerdata.pkl' self.total_tries = config.get('epochs', 0) self.current_best_loss = 100 @@ -59,7 +58,6 @@ class Hyperopt(Backtesting): logger.info("Continuing on previous hyperopt results.") # Previous evaluations - self.trials_file = TRIALSDATA_PICKLE self.trials: List = [] # Populate functions here (hasattr is slow so should not be run during "regular" operations) @@ -77,11 +75,16 @@ class Hyperopt(Backtesting): self.max_open_trades = 0 self.position_stacking = self.config.get('position_stacking', False), + @staticmethod + def get_lock_filename(config) -> str: + + return str(config['user_data_dir'] / 'hyperopt.lock') + def clean_hyperopt(self): """ Remove hyperopt pickle files to restart hyperopt. """ - for f in [TICKERDATA_PICKLE, TRIALSDATA_PICKLE]: + for f in [self.tickerdata_pickle, self.trials_file]: p = Path(f) if p.is_file(): logger.info(f"Removing `{p}`.") @@ -199,7 +202,7 @@ class Hyperopt(Backtesting): if self.has_space('stoploss'): self.strategy.stoploss = params['stoploss'] - processed = load(TICKERDATA_PICKLE) + processed = load(self.tickerdata_pickle) min_date, max_date = get_timeframe(processed) @@ -305,7 +308,7 @@ class Hyperopt(Backtesting): preprocessed = self.strategy.tickerdata_to_dataframe(data) - dump(preprocessed, TICKERDATA_PICKLE) + dump(preprocessed, self.tickerdata_pickle) # We don't need exchange instance anymore while running hyperopt self.exchange = None # type: ignore diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index 2370e145e..dc34198cf 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -15,8 +15,7 @@ from freqtrade.data.history import load_tickerdata_file from freqtrade.optimize import setup_configuration, start_hyperopt from freqtrade.optimize.default_hyperopt import DefaultHyperOpts from freqtrade.optimize.default_hyperopt_loss import DefaultHyperOptLoss -from freqtrade.optimize.hyperopt import (HYPEROPT_LOCKFILE, TICKERDATA_PICKLE, - Hyperopt) +from freqtrade.optimize.hyperopt import Hyperopt from freqtrade.resolvers.hyperopt_resolver import HyperOptResolver, HyperOptLossResolver from freqtrade.state import RunMode from freqtrade.strategy.interface import SellType @@ -272,7 +271,7 @@ def test_start_failure(mocker, default_conf, caplog) -> None: def test_start_filelock(mocker, default_conf, caplog) -> None: - start_mock = MagicMock(side_effect=Timeout(HYPEROPT_LOCKFILE)) + start_mock = MagicMock(side_effect=Timeout(Hyperopt.get_lock_filename(default_conf))) patched_configuration_load_config_file(mocker, default_conf) mocker.patch('freqtrade.optimize.hyperopt.Hyperopt.start', start_mock) patch_exchange(mocker) @@ -609,10 +608,10 @@ def test_clean_hyperopt(mocker, default_conf, caplog): }) mocker.patch("freqtrade.optimize.hyperopt.Path.is_file", MagicMock(return_value=True)) unlinkmock = mocker.patch("freqtrade.optimize.hyperopt.Path.unlink", MagicMock()) - Hyperopt(default_conf) + h = Hyperopt(default_conf) assert unlinkmock.call_count == 2 - assert log_has(f"Removing `{TICKERDATA_PICKLE}`.", caplog.record_tuples) + assert log_has(f"Removing `{h.tickerdata_pickle}`.", caplog.record_tuples) def test_continue_hyperopt(mocker, default_conf, caplog): From 432b106d58182688606a558de62f1899f1394e0a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 21 Jul 2019 16:19:31 +0200 Subject: [PATCH 0043/3421] Improve docstring, remove unneeded method --- freqtrade/configuration/configuration.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 78584ce6a..a957e6e2a 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -124,7 +124,9 @@ class Configuration(object): setup_logging(config) - def _process_strategy_options(self, config: Dict[str, Any]) -> None: + def _process_common_options(self, config: Dict[str, Any]) -> None: + + self._process_logging_options(config) # Set strategy if not specified in config and or if it's non default if self.args.strategy != constants.DEFAULT_STRATEGY or not config.get('strategy'): @@ -133,11 +135,6 @@ class Configuration(object): self._args_to_config(config, argname='strategy_path', logstring='Using additional Strategy lookup path: {}') - def _process_common_options(self, config: Dict[str, Any]) -> None: - - self._process_logging_options(config) - self._process_strategy_options(config) - if ('db_url' in self.args and self.args.db_url and self.args.db_url != constants.DEFAULT_DB_PROD_URL): config.update({'db_url': self.args.db_url}) @@ -171,8 +168,8 @@ class Configuration(object): def _process_datadir_options(self, config: Dict[str, Any]) -> None: """ - Extract information for sys.argv and load datadir configuration: - the --datadir option + Extract information for sys.argv and load directory configurations + --user-data, --datadir """ if 'user_data_dir' in self.args and self.args.user_data_dir: config.update({'user_data_dir': self.args.user_data_dir}) @@ -181,7 +178,6 @@ class Configuration(object): config.update({'user_data_dir': str(Path.cwd() / "user_data")}) # reset to user_data_dir so this contains the absolute path. config['user_data_dir'] = create_userdata_dir(config['user_data_dir']) - logger.info('Using user-data directory: %s ...', config['user_data_dir']) if 'datadir' in self.args and self.args.datadir: From 9de8d7276e170325a0cb75442b131dd95e12a1f8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 25 Jul 2019 07:16:52 +0200 Subject: [PATCH 0044/3421] have strategyresolver use user_data_dir --- freqtrade/resolvers/iresolver.py | 4 ++-- freqtrade/resolvers/strategy_resolver.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 9d0c97917..5a62d448f 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -57,7 +57,7 @@ class IResolver(object): if not str(entry).endswith('.py'): logger.debug('Ignoring %s', entry) continue - module_path = Path.resolve(directory.joinpath(entry)) + module_path = entry.resolve() obj = IResolver._get_valid_object( object_type, module_path, object_name ) @@ -84,6 +84,6 @@ class IResolver(object): f"from '{module_path}'...") return module except FileNotFoundError: - logger.warning('Path "%s" does not exist.', _path.relative_to(Path.cwd())) + logger.warning('Path "%s" does not exist.', _path.resolve()) return None diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index aa73327ff..37aa96b68 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -123,7 +123,7 @@ class StrategyResolver(IResolver): current_path = Path(__file__).parent.parent.joinpath('strategy').resolve() abs_paths = [ - Path.cwd().joinpath('user_data/strategies'), + config['user_data_dir'].joinpath('strategies'), current_path, ] From 333413d29846b4f505f580096ba1b916e7b0006f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 25 Jul 2019 07:17:25 +0200 Subject: [PATCH 0045/3421] Add default_conf to strategy tests --- freqtrade/tests/strategy/test_strategy.py | 166 +++++++++++----------- 1 file changed, 85 insertions(+), 81 deletions(-) diff --git a/freqtrade/tests/strategy/test_strategy.py b/freqtrade/tests/strategy/test_strategy.py index df8c0f126..c5fcd46d9 100644 --- a/freqtrade/tests/strategy/test_strategy.py +++ b/freqtrade/tests/strategy/test_strategy.py @@ -64,15 +64,18 @@ def test_search_strategy(): assert s is None -def test_load_strategy(result): - resolver = StrategyResolver({'strategy': 'TestStrategy'}) +def test_load_strategy(default_conf, result): + default_conf.update({'strategy': 'TestStrategy'}) + resolver = StrategyResolver(default_conf) assert 'adx' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) -def test_load_strategy_base64(result, caplog): +def test_load_strategy_base64(result, caplog, default_conf): with open("user_data/strategies/test_strategy.py", "rb") as file: encoded_string = urlsafe_b64encode(file.read()).decode("utf-8") - resolver = StrategyResolver({'strategy': 'TestStrategy:{}'.format(encoded_string)}) + default_conf.update({'strategy': 'TestStrategy:{}'.format(encoded_string)}) + + resolver = StrategyResolver(default_conf) assert 'adx' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) # Make sure strategy was loaded from base64 (using temp directory)!! assert log_has_re(r"Using resolved strategy TestStrategy from '" @@ -80,47 +83,47 @@ def test_load_strategy_base64(result, caplog): caplog.record_tuples) -def test_load_strategy_invalid_directory(result, caplog): - resolver = StrategyResolver() +def test_load_strategy_invalid_directory(result, caplog, default_conf): + resolver = StrategyResolver(default_conf) extra_dir = Path.cwd() / 'some/path' - resolver._load_strategy('TestStrategy', config={}, extra_dir=extra_dir) + resolver._load_strategy('TestStrategy', config=default_conf, extra_dir=extra_dir) assert log_has_re(r'Path .*' + r'some.*path.*' + r'.* does not exist', caplog.record_tuples) assert 'adx' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) -def test_load_not_found_strategy(): - strategy = StrategyResolver() +def test_load_not_found_strategy(default_conf): + strategy = StrategyResolver(default_conf) with pytest.raises(OperationalException, match=r"Impossible to load Strategy 'NotFoundStrategy'. " r"This class does not exist or contains Python code errors."): - strategy._load_strategy(strategy_name='NotFoundStrategy', config={}) + strategy._load_strategy(strategy_name='NotFoundStrategy', config=default_conf) -def test_load_staticmethod_importerror(mocker, caplog): +def test_load_staticmethod_importerror(mocker, caplog, default_conf): mocker.patch("freqtrade.resolvers.strategy_resolver.import_strategy", Mock( side_effect=TypeError("can't pickle staticmethod objects"))) with pytest.raises(OperationalException, match=r"Impossible to load Strategy 'DefaultStrategy'. " r"This class does not exist or contains Python code errors."): - StrategyResolver() + StrategyResolver(default_conf) assert log_has_re(r".*Error: can't pickle staticmethod objects", caplog.record_tuples) -def test_strategy(result): - config = {'strategy': 'DefaultStrategy'} +def test_strategy(result, default_conf): + default_conf.update({'strategy': 'DefaultStrategy'}) - resolver = StrategyResolver(config) + resolver = StrategyResolver(default_conf) metadata = {'pair': 'ETH/BTC'} assert resolver.strategy.minimal_roi[0] == 0.04 - assert config["minimal_roi"]['0'] == 0.04 + assert default_conf["minimal_roi"]['0'] == 0.04 assert resolver.strategy.stoploss == -0.10 - assert config['stoploss'] == -0.10 + assert default_conf['stoploss'] == -0.10 assert resolver.strategy.ticker_interval == '5m' - assert config['ticker_interval'] == '5m' + assert default_conf['ticker_interval'] == '5m' df_indicators = resolver.strategy.advise_indicators(result, metadata=metadata) assert 'adx' in df_indicators @@ -132,15 +135,15 @@ def test_strategy(result): assert 'sell' in dataframe.columns -def test_strategy_override_minimal_roi(caplog): +def test_strategy_override_minimal_roi(caplog, default_conf): caplog.set_level(logging.INFO) - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', 'minimal_roi': { "0": 0.5 } - } - resolver = StrategyResolver(config) + }) + resolver = StrategyResolver(default_conf) assert resolver.strategy.minimal_roi[0] == 0.5 assert ('freqtrade.resolvers.strategy_resolver', @@ -149,13 +152,13 @@ def test_strategy_override_minimal_roi(caplog): ) in caplog.record_tuples -def test_strategy_override_stoploss(caplog): +def test_strategy_override_stoploss(caplog, default_conf): caplog.set_level(logging.INFO) - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', 'stoploss': -0.5 - } - resolver = StrategyResolver(config) + }) + resolver = StrategyResolver(default_conf) assert resolver.strategy.stoploss == -0.5 assert ('freqtrade.resolvers.strategy_resolver', @@ -164,13 +167,13 @@ def test_strategy_override_stoploss(caplog): ) in caplog.record_tuples -def test_strategy_override_trailing_stop(caplog): +def test_strategy_override_trailing_stop(caplog, default_conf): caplog.set_level(logging.INFO) - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', 'trailing_stop': True - } - resolver = StrategyResolver(config) + }) + resolver = StrategyResolver(default_conf) assert resolver.strategy.trailing_stop assert isinstance(resolver.strategy.trailing_stop, bool) @@ -180,15 +183,15 @@ def test_strategy_override_trailing_stop(caplog): ) in caplog.record_tuples -def test_strategy_override_trailing_stop_positive(caplog): +def test_strategy_override_trailing_stop_positive(caplog, default_conf): caplog.set_level(logging.INFO) - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', 'trailing_stop_positive': -0.1, 'trailing_stop_positive_offset': -0.2 - } - resolver = StrategyResolver(config) + }) + resolver = StrategyResolver(default_conf) assert resolver.strategy.trailing_stop_positive == -0.1 assert ('freqtrade.resolvers.strategy_resolver', @@ -203,15 +206,15 @@ def test_strategy_override_trailing_stop_positive(caplog): ) in caplog.record_tuples -def test_strategy_override_ticker_interval(caplog): +def test_strategy_override_ticker_interval(caplog, default_conf): caplog.set_level(logging.INFO) - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', 'ticker_interval': 60, 'stake_currency': 'ETH' - } - resolver = StrategyResolver(config) + }) + resolver = StrategyResolver(default_conf) assert resolver.strategy.ticker_interval == 60 assert resolver.strategy.stake_currency == 'ETH' @@ -221,14 +224,14 @@ def test_strategy_override_ticker_interval(caplog): ) in caplog.record_tuples -def test_strategy_override_process_only_new_candles(caplog): +def test_strategy_override_process_only_new_candles(caplog, default_conf): caplog.set_level(logging.INFO) - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', 'process_only_new_candles': True - } - resolver = StrategyResolver(config) + }) + resolver = StrategyResolver(default_conf) assert resolver.strategy.process_only_new_candles assert ('freqtrade.resolvers.strategy_resolver', @@ -237,7 +240,7 @@ def test_strategy_override_process_only_new_candles(caplog): ) in caplog.record_tuples -def test_strategy_override_order_types(caplog): +def test_strategy_override_order_types(caplog, default_conf): caplog.set_level(logging.INFO) order_types = { @@ -246,12 +249,11 @@ def test_strategy_override_order_types(caplog): 'stoploss': 'limit', 'stoploss_on_exchange': True, } - - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', 'order_types': order_types - } - resolver = StrategyResolver(config) + }) + resolver = StrategyResolver(default_conf) assert resolver.strategy.order_types for method in ['buy', 'sell', 'stoploss', 'stoploss_on_exchange']: @@ -264,18 +266,18 @@ def test_strategy_override_order_types(caplog): " 'stoploss_on_exchange': True}." ) in caplog.record_tuples - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', 'order_types': {'buy': 'market'} - } + }) # Raise error for invalid configuration with pytest.raises(ImportError, match=r"Impossible to load Strategy 'DefaultStrategy'. " r"Order-types mapping is incomplete."): - StrategyResolver(config) + StrategyResolver(default_conf) -def test_strategy_override_order_tif(caplog): +def test_strategy_override_order_tif(caplog, default_conf): caplog.set_level(logging.INFO) order_time_in_force = { @@ -283,11 +285,11 @@ def test_strategy_override_order_tif(caplog): 'sell': 'gtc', } - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', 'order_time_in_force': order_time_in_force - } - resolver = StrategyResolver(config) + }) + resolver = StrategyResolver(default_conf) assert resolver.strategy.order_time_in_force for method in ['buy', 'sell']: @@ -299,36 +301,36 @@ def test_strategy_override_order_tif(caplog): " {'buy': 'fok', 'sell': 'gtc'}." ) in caplog.record_tuples - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', 'order_time_in_force': {'buy': 'fok'} - } + }) # Raise error for invalid configuration with pytest.raises(ImportError, match=r"Impossible to load Strategy 'DefaultStrategy'. " r"Order-time-in-force mapping is incomplete."): - StrategyResolver(config) + StrategyResolver(default_conf) -def test_strategy_override_use_sell_signal(caplog): +def test_strategy_override_use_sell_signal(caplog, default_conf): caplog.set_level(logging.INFO) - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', - } - resolver = StrategyResolver(config) + }) + resolver = StrategyResolver(default_conf) assert not resolver.strategy.use_sell_signal assert isinstance(resolver.strategy.use_sell_signal, bool) # must be inserted to configuration - assert 'use_sell_signal' in config['experimental'] - assert not config['experimental']['use_sell_signal'] + assert 'use_sell_signal' in default_conf['experimental'] + assert not default_conf['experimental']['use_sell_signal'] - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', 'experimental': { 'use_sell_signal': True, }, - } - resolver = StrategyResolver(config) + }) + resolver = StrategyResolver(default_conf) assert resolver.strategy.use_sell_signal assert isinstance(resolver.strategy.use_sell_signal, bool) @@ -338,25 +340,25 @@ def test_strategy_override_use_sell_signal(caplog): ) in caplog.record_tuples -def test_strategy_override_use_sell_profit_only(caplog): +def test_strategy_override_use_sell_profit_only(caplog, default_conf): caplog.set_level(logging.INFO) - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', - } - resolver = StrategyResolver(config) + }) + resolver = StrategyResolver(default_conf) assert not resolver.strategy.sell_profit_only assert isinstance(resolver.strategy.sell_profit_only, bool) # must be inserted to configuration - assert 'sell_profit_only' in config['experimental'] - assert not config['experimental']['sell_profit_only'] + assert 'sell_profit_only' in default_conf['experimental'] + assert not default_conf['experimental']['sell_profit_only'] - config = { + default_conf.update({ 'strategy': 'DefaultStrategy', 'experimental': { 'sell_profit_only': True, }, - } - resolver = StrategyResolver(config) + }) + resolver = StrategyResolver(default_conf) assert resolver.strategy.sell_profit_only assert isinstance(resolver.strategy.sell_profit_only, bool) @@ -367,10 +369,11 @@ def test_strategy_override_use_sell_profit_only(caplog): @pytest.mark.filterwarnings("ignore:deprecated") -def test_deprecate_populate_indicators(result): +def test_deprecate_populate_indicators(result, default_conf): default_location = path.join(path.dirname(path.realpath(__file__))) - resolver = StrategyResolver({'strategy': 'TestStrategyLegacy', - 'strategy_path': default_location}) + default_conf.update({'strategy': 'TestStrategyLegacy', + 'strategy_path': default_location}) + resolver = StrategyResolver(default_conf) with warnings.catch_warnings(record=True) as w: # Cause all warnings to always be triggered. warnings.simplefilter("always") @@ -400,10 +403,11 @@ def test_deprecate_populate_indicators(result): @pytest.mark.filterwarnings("ignore:deprecated") -def test_call_deprecated_function(result, monkeypatch): +def test_call_deprecated_function(result, monkeypatch, default_conf): default_location = path.join(path.dirname(path.realpath(__file__))) - resolver = StrategyResolver({'strategy': 'TestStrategyLegacy', - 'strategy_path': default_location}) + default_conf.update({'strategy': 'TestStrategyLegacy', + 'strategy_path': default_location}) + resolver = StrategyResolver(default_conf) metadata = {'pair': 'ETH/BTC'} # Make sure we are using a legacy function From a3c605f147d6c88dd027d2ba4f4b2758a75370ec Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jul 2019 14:49:34 +0200 Subject: [PATCH 0046/3421] PairListResovler to use user_data_dir --- freqtrade/resolvers/pairlist_resolver.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index 3d95c0295..2c88f27a3 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -25,11 +25,11 @@ class PairListResolver(IResolver): Load the custom class from config parameter :param config: configuration dictionary or None """ - self.pairlist = self._load_pairlist(pairlist_name, kwargs={'freqtrade': freqtrade, - 'config': config}) + self.pairlist = self._load_pairlist(pairlist_name, config, kwargs={'freqtrade': freqtrade, + 'config': config}) def _load_pairlist( - self, pairlist_name: str, kwargs: dict) -> IPairList: + self, pairlist_name: str, config: dict, kwargs: dict) -> IPairList: """ Search and loads the specified pairlist. :param pairlist_name: name of the module to import @@ -39,7 +39,7 @@ class PairListResolver(IResolver): current_path = Path(__file__).parent.parent.joinpath('pairlist').resolve() abs_paths = [ - Path.cwd().joinpath('user_data/pairlist'), + config['user_data_dir'].joinpath('user_data/pairlist'), current_path, ] From 14b43b504b8e672e7b7be17c91b2bb1e06880232 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jul 2019 15:02:11 +0200 Subject: [PATCH 0047/3421] Use user_data_dir for hyperopt --- freqtrade/resolvers/hyperopt_resolver.py | 18 +++++++++++------- freqtrade/resolvers/pairlist_resolver.py | 3 ++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 5027d7ddf..15d1997ef 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -31,7 +31,8 @@ class HyperOptResolver(IResolver): # Verify the hyperopt is in the configuration, otherwise fallback to the default hyperopt hyperopt_name = config.get('hyperopt') or DEFAULT_HYPEROPT - self.hyperopt = self._load_hyperopt(hyperopt_name, extra_dir=config.get('hyperopt_path')) + self.hyperopt = self._load_hyperopt(hyperopt_name, config, + extra_dir=config.get('hyperopt_path')) # Assign ticker_interval to be used in hyperopt self.hyperopt.__class__.ticker_interval = str(config['ticker_interval']) @@ -44,17 +45,18 @@ class HyperOptResolver(IResolver): "Using populate_sell_trend from DefaultStrategy.") def _load_hyperopt( - self, hyperopt_name: str, extra_dir: Optional[str] = None) -> IHyperOpt: + self, hyperopt_name: str, config: Dict, extra_dir: Optional[str] = None) -> IHyperOpt: """ Search and loads the specified hyperopt. :param hyperopt_name: name of the module to import + :param config: configuration dictionary :param extra_dir: additional directory to search for the given hyperopt :return: HyperOpt instance or None """ current_path = Path(__file__).parent.parent.joinpath('optimize').resolve() abs_paths = [ - Path.cwd().joinpath('user_data/hyperopts'), + config['user_data_dir'].joinpath('hyperopts'), current_path, ] @@ -79,7 +81,7 @@ class HyperOptLossResolver(IResolver): __slots__ = ['hyperoptloss'] - def __init__(self, config: Optional[Dict] = None) -> None: + def __init__(self, config: Dict = None) -> None: """ Load the custom class from config parameter :param config: configuration dictionary or None @@ -89,7 +91,7 @@ class HyperOptLossResolver(IResolver): # Verify the hyperopt is in the configuration, otherwise fallback to the default hyperopt hyperopt_name = config.get('hyperopt_loss') or DEFAULT_HYPEROPT_LOSS self.hyperoptloss = self._load_hyperoptloss( - hyperopt_name, extra_dir=config.get('hyperopt_path')) + hyperopt_name, config, extra_dir=config.get('hyperopt_path')) # Assign ticker_interval to be used in hyperopt self.hyperoptloss.__class__.ticker_interval = str(config['ticker_interval']) @@ -99,17 +101,19 @@ class HyperOptLossResolver(IResolver): f"Found hyperopt {hyperopt_name} does not implement `hyperopt_loss_function`.") def _load_hyperoptloss( - self, hyper_loss_name: str, extra_dir: Optional[str] = None) -> IHyperOptLoss: + self, hyper_loss_name: str, config: Dict, + extra_dir: Optional[str] = None) -> IHyperOptLoss: """ Search and loads the specified hyperopt loss class. :param hyper_loss_name: name of the module to import + :param config: configuration dictionary :param extra_dir: additional directory to search for the given hyperopt :return: HyperOptLoss instance or None """ current_path = Path(__file__).parent.parent.joinpath('optimize').resolve() abs_paths = [ - Path.cwd().joinpath('user_data/hyperopts'), + config['user_data_dir'].joinpath('hyperopts'), current_path, ] diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index 2c88f27a3..f38253155 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -33,13 +33,14 @@ class PairListResolver(IResolver): """ Search and loads the specified pairlist. :param pairlist_name: name of the module to import + :param config: configuration dictionary :param extra_dir: additional directory to search for the given pairlist :return: PairList instance or None """ current_path = Path(__file__).parent.parent.joinpath('pairlist').resolve() abs_paths = [ - config['user_data_dir'].joinpath('user_data/pairlist'), + config['user_data_dir'].joinpath('pairlist'), current_path, ] From 73ac98da8053202a39822f7b01d98f276045d03a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jul 2019 15:11:41 +0200 Subject: [PATCH 0048/3421] Small fixes while tsting --- freqtrade/configuration/configuration.py | 1 + freqtrade/configuration/folder_operations.py | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index a957e6e2a..cb383d8b6 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -176,6 +176,7 @@ class Configuration(object): elif 'user_data_dir' not in config: # Default to cwd/user_data (legacy option ...) config.update({'user_data_dir': str(Path.cwd() / "user_data")}) + # reset to user_data_dir so this contains the absolute path. config['user_data_dir'] = create_userdata_dir(config['user_data_dir']) logger.info('Using user-data directory: %s ...', config['user_data_dir']) diff --git a/freqtrade/configuration/folder_operations.py b/freqtrade/configuration/folder_operations.py index 2ea9cd268..fc516a8cc 100644 --- a/freqtrade/configuration/folder_operations.py +++ b/freqtrade/configuration/folder_operations.py @@ -20,8 +20,8 @@ def create_datadir(config: Dict[str, Any], datadir: Optional[str] = None) -> str return str(folder) -def create_userdata_dir(directory: str) -> str: - sub_dirs = ["backtest_results", "data", "hyperopts", "plots", "strategies", ] +def create_userdata_dir(directory: str) -> Path: + sub_dirs = ["backtest_results", "data", "hyperopts", "plot", "strategies", ] folder = Path(directory) if not folder.is_dir(): folder.mkdir(parents=True) @@ -32,5 +32,4 @@ def create_userdata_dir(directory: str) -> str: subfolder = folder / f if not subfolder.is_dir(): subfolder.mkdir(parents=False) - # TODO: convert this to return Path return folder From b691fb7f2dc04b9def11a56e6746381622d144aa Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jul 2019 15:19:17 +0200 Subject: [PATCH 0049/3421] Fix some hyperopt tests --- freqtrade/tests/optimize/test_hyperopt.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index fad89e877..065b4c41b 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -8,7 +8,7 @@ import pytest from arrow import Arrow from filelock import Timeout -from freqtrade import DependencyException +from freqtrade import DependencyException, OperationalException from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.history import load_tickerdata_file from freqtrade.optimize import setup_configuration, start_hyperopt @@ -186,6 +186,13 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None: assert hasattr(x, "ticker_interval") +def test_hyperoptresolver_wrongname(mocker, default_conf, caplog) -> None: + default_conf.update({'hyperopt': "NonExistingHyperoptClass"}) + + with pytest.raises(OperationalException, match=r'Impossible to load Hyperopt.*'): + HyperOptResolver(default_conf, ).hyperopt + + def test_hyperoptlossresolver(mocker, default_conf, caplog) -> None: hl = DefaultHyperOptLoss @@ -193,9 +200,15 @@ def test_hyperoptlossresolver(mocker, default_conf, caplog) -> None: 'freqtrade.resolvers.hyperopt_resolver.HyperOptLossResolver._load_hyperoptloss', MagicMock(return_value=hl) ) - x = HyperOptResolver(default_conf, ).hyperopt - assert hasattr(x, "populate_indicators") - assert hasattr(x, "ticker_interval") + x = HyperOptLossResolver(default_conf, ).hyperoptloss + assert hasattr(x, "hyperopt_loss_function") + + +def test_hyperoptlossresolver_wrongname(mocker, default_conf, caplog) -> None: + default_conf.update({'hyperopt_loss': "NonExistingLossClass"}) + + with pytest.raises(OperationalException, match=r'Impossible to load HyperoptLoss.*'): + HyperOptLossResolver(default_conf, ).hyperopt def test_start(mocker, default_conf, caplog) -> None: From c1bc1e31373f2159c650a1f0d7580f0ddf26f675 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jul 2019 15:34:49 +0200 Subject: [PATCH 0050/3421] Add documentation for user_data_dir --- docs/bot-usage.md | 50 ++++++++++++++++++++++++++++++++----------- docs/configuration.md | 1 + 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index ef28eb60c..f407e6a23 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -9,38 +9,43 @@ This page explains the different parameters of the bot and how to run it. ## Bot commands ``` -usage: freqtrade [-h] [-v] [--logfile FILE] [--version] [-c PATH] [-d PATH] - [-s NAME] [--strategy-path PATH] [--db-url PATH] - [--sd-notify] - {backtesting,edge,hyperopt} ... +usage: freqtrade [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] + [--userdir PATH] [-s NAME] [--strategy-path PATH] + [--db-url PATH] [--sd-notify] + {backtesting,edge,hyperopt,create-userdir,list-exchanges} ... Free, open source crypto trading bot positional arguments: - {backtesting,edge,hyperopt} + {backtesting,edge,hyperopt,create-userdir,list-exchanges} backtesting Backtesting module. edge Edge module. hyperopt Hyperopt module. + create-userdir Create user-data directory. + list-exchanges Print available exchanges. optional arguments: -h, --help show this help message and exit -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified + --logfile FILE Log to the file specified. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: None). Multiple - --config options may be used. Can be set to '-' to - read config from stdin. + Specify configuration file (default: `config.json`). + Multiple --config options may be used. Can be set to + `-` to read config from stdin. -d PATH, --datadir PATH Path to backtest data. + --userdir PATH, --user-data-dir PATH + Path to Userdata Directory. -s NAME, --strategy NAME Specify strategy class name (default: - DefaultStrategy). + `DefaultStrategy`). --strategy-path PATH Specify additional strategy lookup path. - --db-url PATH Override trades database URL, this is useful if - dry_run is enabled or in custom deployments (default: - None). + --db-url PATH Override trades database URL, this is useful in custom + deployments (default: `sqlite:///tradesv3.sqlite` for + Live Run mode, `sqlite://` for Dry Run). --sd-notify Notify systemd service manager. + ``` ### How to use a different configuration file? @@ -82,6 +87,25 @@ of your configuration in the project issues or in the Internet. See more details on this technique with examples in the documentation page on [configuration](configuration.md). +### Where to store custom data + +Freqtrade allows the creation of a user-data directory using `freqtrade create-userdir --userdir someDirectory`. +This directory will look as follows: + +user_data/ +├── backtest_results +├── data +├── hyperopts +├── plot +└── strategies + +You can add the entry "user_data_dir" to your configuration, to always point your bot to this folder. +Alternatively, pass in `--userdir` to every command. + +This directory should contain your custom strategies, custom hyperopts, backtest data (downloaded using either backtesting or the download script) and plot outputs. + +It is reccomendet to use version control to keep track of changes to your strategies. + ### How to use **--strategy**? This parameter will allow you to load your custom strategy class. diff --git a/docs/configuration.md b/docs/configuration.md index f8dbbbbbb..34d0e110f 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -71,6 +71,7 @@ Mandatory Parameters are marked as **Required**. | `internals.process_throttle_secs` | 5 | **Required.** Set the process throttle. Value in second. | `internals.sd_notify` | false | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. | `logfile` | | Specify Logfile. Uses a rolling strategy of 10 files, with 1Mb per file. +| `user_data_dir` | cwd()/user_data | Folder containing user data. Defaults to `./user_data/`. ### Parameters in the strategy From 03e60b9ea490d852bea26797a575d82dd6d49b7d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 29 Jul 2019 06:15:49 +0200 Subject: [PATCH 0051/3421] Rename folder_Operations to directory_operations --- freqtrade/configuration/configuration.py | 2 +- .../{folder_operations.py => directory_operations.py} | 0 freqtrade/tests/test_configuration.py | 2 +- freqtrade/utils.py | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename freqtrade/configuration/{folder_operations.py => directory_operations.py} (100%) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index cb383d8b6..e56c2c06a 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -11,7 +11,7 @@ from typing import Any, Callable, Dict, Optional from freqtrade import OperationalException, constants from freqtrade.configuration.check_exchange import check_exchange -from freqtrade.configuration.folder_operations import create_datadir, create_userdata_dir +from freqtrade.configuration.directory_operations import create_datadir, create_userdata_dir from freqtrade.configuration.json_schema import validate_config_schema from freqtrade.loggers import setup_logging from freqtrade.misc import deep_merge_dicts diff --git a/freqtrade/configuration/folder_operations.py b/freqtrade/configuration/directory_operations.py similarity index 100% rename from freqtrade/configuration/folder_operations.py rename to freqtrade/configuration/directory_operations.py diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 3d75818d4..2b967a859 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -13,7 +13,7 @@ from jsonschema import Draft4Validator, ValidationError, validate from freqtrade import OperationalException, constants from freqtrade.configuration import Arguments, Configuration from freqtrade.configuration.check_exchange import check_exchange -from freqtrade.configuration.folder_operations import create_datadir, create_userdata_dir +from freqtrade.configuration.directory_operations import create_datadir, create_userdata_dir from freqtrade.configuration.json_schema import validate_config_schema from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL from freqtrade.loggers import _set_loggers diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 53325b70b..fa6bc2d1d 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -4,7 +4,7 @@ from argparse import Namespace from typing import Any, Dict from freqtrade.configuration import Configuration -from freqtrade.configuration.folder_operations import create_userdata_dir +from freqtrade.configuration.directory_operations import create_userdata_dir from freqtrade.exchange import available_exchanges from freqtrade.state import RunMode From 02bfe2dad3d9ad8c3f1aeba2023c703a20f2e9e2 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 29 Jul 2019 15:25:06 +0000 Subject: [PATCH 0052/3421] Update numpy from 1.16.4 to 1.17.0 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 52442fb19..be1495d08 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ # Load common requirements -r requirements-common.txt -numpy==1.16.4 +numpy==1.17.0 pandas==0.24.2 scipy==1.3.0 From 5a6e20a6aaa3174623db908a6ab8007143f554a5 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 29 Jul 2019 15:25:07 +0000 Subject: [PATCH 0053/3421] Update pandas from 0.24.2 to 0.25.0 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index be1495d08..6420c7879 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,5 +2,5 @@ -r requirements-common.txt numpy==1.17.0 -pandas==0.24.2 +pandas==0.25.0 scipy==1.3.0 From fe088dc8c32bfe2f1378b5a361e198bcd8fbd042 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 29 Jul 2019 15:25:08 +0000 Subject: [PATCH 0054/3421] Update ccxt from 1.18.860 to 1.18.992 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 409c979b5..0d6c3f217 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.860 +ccxt==1.18.992 SQLAlchemy==1.3.5 python-telegram-bot==11.1.0 arrow==0.14.2 From 0fd91e4450e97acb05635aac63e62fe6311dc926 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 29 Jul 2019 15:25:09 +0000 Subject: [PATCH 0055/3421] Update sqlalchemy from 1.3.5 to 1.3.6 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 0d6c3f217..a1cdbc6c0 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.18.992 -SQLAlchemy==1.3.5 +SQLAlchemy==1.3.6 python-telegram-bot==11.1.0 arrow==0.14.2 cachetools==3.1.1 From 9f70ebecf16fd7afaa51ddfec57796d706cc7e82 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 29 Jul 2019 15:25:10 +0000 Subject: [PATCH 0056/3421] Update arrow from 0.14.2 to 0.14.3 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index a1cdbc6c0..b79c700c8 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -3,7 +3,7 @@ ccxt==1.18.992 SQLAlchemy==1.3.6 python-telegram-bot==11.1.0 -arrow==0.14.2 +arrow==0.14.3 cachetools==3.1.1 requests==2.22.0 urllib3==1.24.2 # pyup: ignore From a3620c60adbbed1de171bbbaf03174cf973d7cc4 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 29 Jul 2019 15:25:11 +0000 Subject: [PATCH 0057/3421] Update flask from 1.0.3 to 1.1.1 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index b79c700c8..2e52b84ad 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -29,4 +29,4 @@ python-rapidjson==0.7.2 sdnotify==0.3.2 # Api server -flask==1.0.3 +flask==1.1.1 From ebca1e435745c2c7c72805c25d6629fe0cc0df92 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 29 Jul 2019 15:25:12 +0000 Subject: [PATCH 0058/3421] Update flake8 from 3.7.7 to 3.7.8 --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 83fec3b8a..28fd19ce4 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,7 +2,7 @@ -r requirements.txt -r requirements-plot.txt -flake8==3.7.7 +flake8==3.7.8 flake8-type-annotations==0.1.0 flake8-tidy-imports==2.0.0 pytest==5.0.0 From 0f632201e07c06f2f95cd48661857b79a00b488f Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 29 Jul 2019 15:25:14 +0000 Subject: [PATCH 0059/3421] Update pytest from 5.0.0 to 5.0.1 --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 28fd19ce4..e6f7bde1c 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -5,7 +5,7 @@ flake8==3.7.8 flake8-type-annotations==0.1.0 flake8-tidy-imports==2.0.0 -pytest==5.0.0 +pytest==5.0.1 pytest-mock==1.10.4 pytest-asyncio==0.10.0 pytest-cov==2.7.1 From 3e95b7d8a51c2a12d074223eecc9ab90ecd2f913 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 29 Jul 2019 15:25:15 +0000 Subject: [PATCH 0060/3421] Update mypy from 0.711 to 0.720 --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index e6f7bde1c..946d63039 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,4 +11,4 @@ pytest-asyncio==0.10.0 pytest-cov==2.7.1 pytest-random-order==1.0.4 coveralls==1.8.1 -mypy==0.711 +mypy==0.720 From 5ba0aa8082b1c801f7cd99dca8356e32f25ff23d Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 29 Jul 2019 15:25:16 +0000 Subject: [PATCH 0061/3421] Update plotly from 3.10.0 to 4.0.0 --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index d4e4fc165..a6753fc3f 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==3.10.0 +plotly==4.0.0 From e64509f1b42d95c4a86a6b6663dbf15c27bae6ec Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 29 Jul 2019 20:27:50 +0200 Subject: [PATCH 0062/3421] Version bump to 2019.7 --- freqtrade/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/__init__.py b/freqtrade/__init__.py index 2fdcccea5..10900bee9 100644 --- a/freqtrade/__init__.py +++ b/freqtrade/__init__.py @@ -1,5 +1,5 @@ """ FreqTrade bot """ -__version__ = '2019.6-dev' +__version__ = '2019.7' class DependencyException(Exception): From 7a97995d81d25f6f9928c82a31d8de57c36e6a8e Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 29 Jul 2019 20:30:14 +0200 Subject: [PATCH 0063/3421] 2017.7-dev version bump --- freqtrade/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/__init__.py b/freqtrade/__init__.py index 10900bee9..14f0bb819 100644 --- a/freqtrade/__init__.py +++ b/freqtrade/__init__.py @@ -1,5 +1,5 @@ """ FreqTrade bot """ -__version__ = '2019.7' +__version__ = '2019.7-dev' class DependencyException(Exception): From e14dd4974f0ebfeb07a302064cc2fc5cd615019d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 29 Jul 2019 20:32:28 +0200 Subject: [PATCH 0064/3421] Improve release documentation --- docs/developer.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/developer.md b/docs/developer.md index f58e0597d..f50625111 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -156,6 +156,8 @@ git log --oneline --no-decorate --no-merges master..develop ### Create github release / tag +Once the PR against master is merged (best right after merging): + * Use the button "Draft a new release" in the Github UI (subsection releases) * Use the version-number specified as tag. * Use "master" as reference (this step comes after the above PR is merged). From 8dd8addd3aeadfd652f65a3a141491e263dcd79b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 29 Jul 2019 20:52:38 +0200 Subject: [PATCH 0065/3421] Sort requirements-dev file --- requirements-dev.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 946d63039..f54b38a57 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,13 +2,13 @@ -r requirements.txt -r requirements-plot.txt +coveralls==1.8.1 flake8==3.7.8 flake8-type-annotations==0.1.0 flake8-tidy-imports==2.0.0 +mypy==0.720 pytest==5.0.1 -pytest-mock==1.10.4 pytest-asyncio==0.10.0 pytest-cov==2.7.1 +pytest-mock==1.10.4 pytest-random-order==1.0.4 -coveralls==1.8.1 -mypy==0.720 From 7bea0007c7b6ef253a5e7903728ac556f5c2e0e1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 29 Jul 2019 20:53:26 +0200 Subject: [PATCH 0066/3421] Allow installing via submodules freqtrade can be installed using `pip install -e .[all]` to include all dependencies --- setup.py | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/setup.py b/setup.py index ca2f81d1f..1ae395295 100644 --- a/setup.py +++ b/setup.py @@ -8,6 +8,24 @@ if version_info.major == 3 and version_info.minor < 6 or \ from freqtrade import __version__ +# Requirements used for submodules +api = ['flask'] +plot = ['plotly>=4.0'] + +develop = [ + 'coveralls', + 'flake8', + 'flake8-type-annotations', + 'flake8-tidy-imports', + 'mypy', + 'pytest', + 'pytest-asyncio', + 'pytest-cov', + 'pytest-mock', + 'pytest-random-order', +] + +all_extra = api + plot + develop setup(name='freqtrade', version=__version__, @@ -20,26 +38,37 @@ setup(name='freqtrade', setup_requires=['pytest-runner', 'numpy'], tests_require=['pytest', 'pytest-mock', 'pytest-cov'], install_requires=[ - 'ccxt', + # from requirements-common.txt + 'ccxt>=1.18', 'SQLAlchemy', 'python-telegram-bot', 'arrow', + 'cachetools', 'requests', 'urllib3', 'wrapt', - 'pandas', 'scikit-learn', - 'scipy', 'joblib', 'jsonschema', 'TA-Lib', 'tabulate', - 'cachetools', 'coinmarketcap', 'scikit-optimize', + 'filelock', + 'py_find_1st', 'python-rapidjson', - 'py_find_1st' + 'sdnotify', + # from requirements.txt + 'numpy', + 'pandas', + 'scipy', ], + extras_require={ + 'api': api, + 'dev': develop, + 'plot': plot, + 'all': all_extra, + }, include_package_data=True, zip_safe=False, entry_points={ From f825e81d0eba06b58adc721715d7bbc545413ee4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 29 Jul 2019 20:54:35 +0200 Subject: [PATCH 0067/3421] developers need all dependencies! --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1ae395295..202e3fd0d 100644 --- a/setup.py +++ b/setup.py @@ -65,7 +65,7 @@ setup(name='freqtrade', ], extras_require={ 'api': api, - 'dev': develop, + 'dev': all_extra, 'plot': plot, 'all': all_extra, }, From 59caff8fb1d49bf26b29cb3855354d0eed7d2aa9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 29 Jul 2019 20:57:57 +0200 Subject: [PATCH 0068/3421] UPdate developer docs --- docs/developer.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/developer.md b/docs/developer.md index f58e0597d..2895db7e8 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -12,8 +12,8 @@ Special fields for the documentation (like Note boxes, ...) can be found [here]( ## Developer setup -To configure a development environment, use best use the `setup.sh` script and answer "y" when asked "Do you want to install dependencies for dev [y/N]? ". -Alternatively (if your system is not supported by the setup.sh script), follow the manual installation process and run `pip3 install -r requirements-dev.txt`. +To configure a development environment, best use the `setup.sh` script and answer "y" when asked "Do you want to install dependencies for dev [y/N]? ". +Alternatively (if your system is not supported by the setup.sh script), follow the manual installation process and run `pip3 install -e .[all]`. This will install all required tools for development, including `pytest`, `flake8`, `mypy`, and `coveralls`. From 8f1f416a52b2381d6c2958a905eb4716dae1d037 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 30 Jul 2019 11:47:28 +0300 Subject: [PATCH 0069/3421] hyperopt cleanup and output improvements --- freqtrade/optimize/hyperopt.py | 65 ++++++++++++++++------------------ 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 759ceffbe..842a111ca 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -51,7 +51,7 @@ class Hyperopt(Backtesting): self.custom_hyperoptloss = HyperOptLossResolver(self.config).hyperoptloss self.calculate_loss = self.custom_hyperoptloss.hyperopt_loss_function - self.total_tries = config.get('epochs', 0) + self.total_epochs = config.get('epochs', 0) self.current_best_loss = 100 if not self.config.get('hyperopt_continue'): @@ -124,13 +124,12 @@ class Hyperopt(Backtesting): """ results = sorted(self.trials, key=itemgetter('loss')) best_result = results[0] - logger.info( - 'Best result:\n%s\nwith values:\n', - best_result['result'] - ) + + log_str = self.format_results_logstring(best_result) + print(f"\nBest result:\n{log_str}\nwith values:") pprint(best_result['params'], indent=4) if 'roi_t1' in best_result['params']: - logger.info('ROI table:') + print("ROI table:") pprint(self.custom_hyperopt.generate_roi_table(best_result['params']), indent=4) def log_results(self, results) -> None: @@ -139,22 +138,26 @@ class Hyperopt(Backtesting): """ print_all = self.config.get('print_all', False) if print_all or results['loss'] < self.current_best_loss: - # Output human-friendly index here (starting from 1) - current = results['current_tries'] + 1 - total = results['total_tries'] - res = results['result'] - loss = results['loss'] - self.current_best_loss = results['loss'] - log_msg = f'{current:5d}/{total}: {res} Objective: {loss:.5f}' - log_msg = f'*{log_msg}' if results['initial_point'] else f' {log_msg}' + log_str = self.format_results_logstring(results) if print_all: - print(log_msg) + print(log_str) else: - print('\n' + log_msg) + print('\n' + log_str) else: print('.', end='') sys.stdout.flush() + def format_results_logstring(self, results) -> str: + # Output human-friendly index here (starting from 1) + current = results['current_epoch'] + 1 + total = self.total_epochs + res = results['results_explanation'] + loss = results['loss'] + self.current_best_loss = results['loss'] + log_str = f'{current:5d}/{total}: {res} Objective: {loss:.5f}' + log_str = f'*{log_str}' if results['is_initial_point'] else f' {log_str}' + return log_str + def has_space(self, space: str) -> bool: """ Tell if a space value is contained in the configuration @@ -214,7 +217,7 @@ class Hyperopt(Backtesting): 'end_date': max_date, } ) - result_explanation = self.format_results(results) + results_explanation = self.format_results(results) trade_count = len(results.index) @@ -226,7 +229,7 @@ class Hyperopt(Backtesting): return { 'loss': MAX_LOSS, 'params': params, - 'result': result_explanation, + 'results_explanation': results_explanation, } loss = self.calculate_loss(results=results, trade_count=trade_count, @@ -235,12 +238,12 @@ class Hyperopt(Backtesting): return { 'loss': loss, 'params': params, - 'result': result_explanation, + 'results_explanation': results_explanation, } def format_results(self, results: DataFrame) -> str: """ - Return the format result in a string + Return the formatted results explanation in a string """ trades = len(results.index) avg_profit = results.profit_percent.mean() * 100.0 @@ -323,25 +326,19 @@ class Hyperopt(Backtesting): with Parallel(n_jobs=config_jobs) as parallel: jobs = parallel._effective_n_jobs() logger.info(f'Effective number of parallel workers used: {jobs}') - EVALS = max(self.total_tries // jobs, 1) + EVALS = max(self.total_epochs // jobs, 1) for i in range(EVALS): asked = opt.ask(n_points=jobs) f_val = self.run_optimizer_parallel(parallel, asked) - opt.tell(asked, [i['loss'] for i in f_val]) - - self.trials += f_val + opt.tell(asked, [v['loss'] for v in f_val]) for j in range(jobs): current = i * jobs + j - self.log_results({ - 'loss': f_val[j]['loss'], - 'current_tries': current, - 'initial_point': current < INITIAL_POINTS, - 'total_tries': self.total_tries, - 'result': f_val[j]['result'], - }) - logger.debug(f"Optimizer params: {f_val[j]['params']}") - for j in range(jobs): - logger.debug(f"Optimizer state: Xi: {opt.Xi[-j-1]}, yi: {opt.yi[-j-1]}") + val = f_val[j] + val['current_epoch'] = current + val['is_initial_point'] = current < INITIAL_POINTS + self.log_results(val) + self.trials.append(val) + logger.debug(f"Optimizer epoch evaluated: {val}") except KeyboardInterrupt: print('User interrupted..') From b976f24672fd8f0118d94a5890925fc404998abc Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 30 Jul 2019 11:47:46 +0300 Subject: [PATCH 0070/3421] tests adjusted --- freqtrade/tests/optimize/test_hyperopt.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index 065b4c41b..5d6128e7c 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -370,13 +370,13 @@ def test_onlyprofit_loss_prefers_higher_profits(default_conf, hyperopt_results) def test_log_results_if_loss_improves(hyperopt, capsys) -> None: hyperopt.current_best_loss = 2 + hyperopt.total_epochs = 2 hyperopt.log_results( { 'loss': 1, - 'current_tries': 1, - 'total_tries': 2, - 'result': 'foo.', - 'initial_point': False + 'current_epoch': 1, + 'results_explanation': 'foo.', + 'is_initial_point': False } ) out, err = capsys.readouterr() @@ -433,7 +433,7 @@ def test_roi_table_generation(hyperopt) -> None: assert hyperopt.custom_hyperopt.generate_roi_table(params) == {0: 6, 15: 3, 25: 1, 30: 0} -def test_start_calls_optimizer(mocker, default_conf, caplog) -> None: +def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) mocker.patch( @@ -443,7 +443,7 @@ def test_start_calls_optimizer(mocker, default_conf, caplog) -> None: parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', - MagicMock(return_value=[{'loss': 1, 'result': 'foo result', 'params': {}}]) + MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}]) ) patch_exchange(mocker) @@ -457,8 +457,11 @@ def test_start_calls_optimizer(mocker, default_conf, caplog) -> None: hyperopt.strategy.tickerdata_to_dataframe = MagicMock() hyperopt.start() + parallel.assert_called_once() - assert log_has('Best result:\nfoo result\nwith values:\n', caplog.record_tuples) + + out, err = capsys.readouterr() + assert 'Best result:\n* 1/1: foo result Objective: 1.00000\nwith values:\n' in out assert dumper.called # Should be called twice, once for tickerdata, once to save evaluations assert dumper.call_count == 2 @@ -598,8 +601,8 @@ def test_generate_optimizer(mocker, default_conf) -> None: } response_expected = { 'loss': 1.9840569076926293, - 'result': ' 1 trades. Avg profit 2.31%. Total profit 0.00023300 BTC ' - '( 2.31Σ%). Avg duration 100.0 mins.', + 'results_explanation': ' 1 trades. Avg profit 2.31%. Total profit 0.00023300 BTC ' + '( 2.31Σ%). Avg duration 100.0 mins.', 'params': optimizer_param } From 0488525888d391a651fd4dcb60ded8c799a4c6ea Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 31 Jul 2019 06:49:25 +0200 Subject: [PATCH 0071/3421] Fix some documentation errors --- docs/bot-usage.md | 12 +++++++----- freqtrade/configuration/cli_options.py | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index f407e6a23..1b66cd840 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -34,9 +34,9 @@ optional arguments: Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH - Path to backtest data. + Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH - Path to Userdata Directory. + Path to userdata directory. -s NAME, --strategy NAME Specify strategy class name (default: `DefaultStrategy`). @@ -92,19 +92,21 @@ See more details on this technique with examples in the documentation page on Freqtrade allows the creation of a user-data directory using `freqtrade create-userdir --userdir someDirectory`. This directory will look as follows: +``` user_data/ ├── backtest_results ├── data ├── hyperopts ├── plot └── strategies +``` -You can add the entry "user_data_dir" to your configuration, to always point your bot to this folder. +You can add the entry "user_data_dir" setting to your configuration, to always point your bot to this directory. Alternatively, pass in `--userdir` to every command. -This directory should contain your custom strategies, custom hyperopts, backtest data (downloaded using either backtesting or the download script) and plot outputs. +This directory should contain your custom strategies, custom hyperopts and hyperopt loss functions, backtesting historical data (downloaded using either backtesting command or the download script) and plot outputs. -It is reccomendet to use version control to keep track of changes to your strategies. +It is recommended to use version control to keep track of changes to your strategies. ### How to use **--strategy**? diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 00c28ed07..438e6c5bc 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -55,12 +55,12 @@ AVAILABLE_CLI_OPTIONS = { ), "datadir": Arg( '-d', '--datadir', - help='Path to backtest data.', + help='Path to directory with historical backtesting data.', metavar='PATH', ), "user_data_dir": Arg( '--userdir', '--user-data-dir', - help='Path to Userdata Directory.', + help='Path to userdata directory.', metavar='PATH', ), # Main options From c3d14ab9b93071a0167a544d7e2cf4a0bf2ae282 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 31 Jul 2019 06:54:45 +0200 Subject: [PATCH 0072/3421] don't use "folder" ... --- docs/configuration.md | 2 +- freqtrade/plot/plotting.py | 6 +++--- scripts/plot_dataframe.py | 2 +- scripts/plot_profit.py | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 34d0e110f..dfe191b10 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -71,7 +71,7 @@ Mandatory Parameters are marked as **Required**. | `internals.process_throttle_secs` | 5 | **Required.** Set the process throttle. Value in second. | `internals.sd_notify` | false | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. | `logfile` | | Specify Logfile. Uses a rolling strategy of 10 files, with 1Mb per file. -| `user_data_dir` | cwd()/user_data | Folder containing user data. Defaults to `./user_data/`. +| `user_data_dir` | cwd()/user_data | Directory containing user data. Defaults to `./user_data/`. ### Parameters in the strategy diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 948964462..f2c999369 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -308,7 +308,7 @@ def generate_plot_filename(pair, ticker_interval) -> str: return file_name -def store_plot_file(fig, filename: str, folder: Path, auto_open: bool = False) -> None: +def store_plot_file(fig, filename: str, directory: Path, auto_open: bool = False) -> None: """ Generate a plot html file from pre populated fig plotly object :param fig: Plotly Figure to plot @@ -317,7 +317,7 @@ def store_plot_file(fig, filename: str, folder: Path, auto_open: bool = False) - :return: None """ - folder.mkdir(parents=True, exist_ok=True) + directory.mkdir(parents=True, exist_ok=True) - plot(fig, filename=str(folder.joinpath(filename)), + plot(fig, filename=str(directory.joinpath(filename)), auto_open=auto_open) diff --git a/scripts/plot_dataframe.py b/scripts/plot_dataframe.py index 04911f93e..e1548754a 100755 --- a/scripts/plot_dataframe.py +++ b/scripts/plot_dataframe.py @@ -78,7 +78,7 @@ def analyse_and_plot_pairs(config: Dict[str, Any]): ) store_plot_file(fig, filename=generate_plot_filename(pair, config['ticker_interval']), - folder=config['user_data_dir'] / "plot") + directory=config['user_data_dir'] / "plot") logger.info('End of ploting process %s plots generated', pair_counter) diff --git a/scripts/plot_profit.py b/scripts/plot_profit.py index c83ad1088..578ddf15f 100755 --- a/scripts/plot_profit.py +++ b/scripts/plot_profit.py @@ -33,7 +33,7 @@ def plot_profit(config: Dict[str, Any]) -> None: # this could be useful to gauge the overall market trend fig = generate_profit_graph(plot_elements["pairs"], plot_elements["tickers"], trades) store_plot_file(fig, filename='freqtrade-profit-plot.html', - folder=config['user_data_dir'] / "plot", auto_open=True) + directory=config['user_data_dir'] / "plot", auto_open=True) def plot_parse_args(args: List[str]) -> Dict[str, Any]: From 5d22d541f21e67045ca2c125f88d5e1f9652b653 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 31 Jul 2019 06:58:26 +0200 Subject: [PATCH 0073/3421] Add forgotten directory --- freqtrade/tests/test_plotting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index c80d0e780..83a561110 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -211,7 +211,7 @@ def test_generate_plot_file(mocker, caplog): fig = generage_empty_figure() plot_mock = mocker.patch("freqtrade.plot.plotting.plot", MagicMock()) store_plot_file(fig, filename="freqtrade-plot-UNITTEST_BTC-5m.html", - folder=Path("user_data/plots")) + directory=Path("user_data/plots")) assert plot_mock.call_count == 1 assert plot_mock.call_args[0][0] == fig From 8cef567abcfea2fd3a1e0fac09e62f411696f817 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 31 Jul 2019 07:07:46 +0200 Subject: [PATCH 0074/3421] create and use hyperopt-results folder --- docs/bot-usage.md | 1 + freqtrade/configuration/directory_operations.py | 2 +- freqtrade/optimize/hyperopt.py | 6 ++++-- freqtrade/tests/test_configuration.py | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 1b66cd840..130c55518 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -97,6 +97,7 @@ user_data/ ├── backtest_results ├── data ├── hyperopts +├── hyperopts_results ├── plot └── strategies ``` diff --git a/freqtrade/configuration/directory_operations.py b/freqtrade/configuration/directory_operations.py index fc516a8cc..7542c2b80 100644 --- a/freqtrade/configuration/directory_operations.py +++ b/freqtrade/configuration/directory_operations.py @@ -21,7 +21,7 @@ def create_datadir(config: Dict[str, Any], datadir: Optional[str] = None) -> str def create_userdata_dir(directory: str) -> Path: - sub_dirs = ["backtest_results", "data", "hyperopts", "plot", "strategies", ] + sub_dirs = ["backtest_results", "data", "hyperopts", "hyperopt_results", "plot", "strategies", ] folder = Path(directory) if not folder.is_dir(): folder.mkdir(parents=True) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 2fff91e58..ecf14def9 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -47,8 +47,10 @@ class Hyperopt(Backtesting): self.custom_hyperoptloss = HyperOptLossResolver(self.config).hyperoptloss self.calculate_loss = self.custom_hyperoptloss.hyperopt_loss_function - self.trials_file = self.config['user_data_dir'] / 'hyperopt_results.pickle' - self.tickerdata_pickle = self.config['user_data_dir'] / 'hyperopt_tickerdata.pkl' + self.trials_file = (self.config['user_data_dir'] / + 'hyperopt_results' / 'hyperopt_results.pickle') + self.tickerdata_pickle = (self.config['user_data_dir'] / + 'hyperopt_results' / 'hyperopt_tickerdata.pkl') self.total_tries = config.get('epochs', 0) self.current_best_loss = 100 diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 2b967a859..4dd3760db 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -626,7 +626,7 @@ def test_create_userdata_dir(mocker, default_conf, caplog) -> None: md = mocker.patch.object(Path, 'mkdir', MagicMock()) x = create_userdata_dir('/tmp/bar') - assert md.call_count == 6 + assert md.call_count == 7 assert md.call_args[1]['parents'] is False assert log_has('Created user-data directory: /tmp/bar', caplog.record_tuples) assert isinstance(x, Path) From 2a141af42e538c825c28bc51c9cd303eb3c9feea Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 31 Jul 2019 19:39:54 +0200 Subject: [PATCH 0075/3421] Only create userdir when explicitly requested --- docs/bot-usage.md | 1 + freqtrade/configuration/configuration.py | 2 +- .../configuration/directory_operations.py | 21 ++++++++++++++++--- freqtrade/tests/test_configuration.py | 13 ++++++++++-- freqtrade/utils.py | 2 +- 5 files changed, 32 insertions(+), 7 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 130c55518..647531d3a 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -104,6 +104,7 @@ user_data/ You can add the entry "user_data_dir" setting to your configuration, to always point your bot to this directory. Alternatively, pass in `--userdir` to every command. +The bot will fail to start if the directory does not exist, but will create necessary subdirectories. This directory should contain your custom strategies, custom hyperopts and hyperopt loss functions, backtesting historical data (downloaded using either backtesting command or the download script) and plot outputs. diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index e56c2c06a..a2ce54e8b 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -178,7 +178,7 @@ class Configuration(object): config.update({'user_data_dir': str(Path.cwd() / "user_data")}) # reset to user_data_dir so this contains the absolute path. - config['user_data_dir'] = create_userdata_dir(config['user_data_dir']) + config['user_data_dir'] = create_userdata_dir(config['user_data_dir'], create_dir=False) logger.info('Using user-data directory: %s ...', config['user_data_dir']) if 'datadir' in self.args and self.args.datadir: diff --git a/freqtrade/configuration/directory_operations.py b/freqtrade/configuration/directory_operations.py index 7542c2b80..395accd90 100644 --- a/freqtrade/configuration/directory_operations.py +++ b/freqtrade/configuration/directory_operations.py @@ -2,6 +2,7 @@ import logging from typing import Any, Dict, Optional from pathlib import Path +from freqtrade import OperationalException logger = logging.getLogger(__name__) @@ -20,12 +21,26 @@ def create_datadir(config: Dict[str, Any], datadir: Optional[str] = None) -> str return str(folder) -def create_userdata_dir(directory: str) -> Path: +def create_userdata_dir(directory: str, create_dir=False) -> Path: + """ + Create userdata directory structure. + if create_dir is True, then the parent-directory will be created if it does not exist. + Sub-directories will always be created if the parent directory exists. + Raises OperationalException if given a non-existing directory. + :param directory: Directory to check + :param create_dir: Create directory if it does not exist. + :return: Path object containing the directory + """ sub_dirs = ["backtest_results", "data", "hyperopts", "hyperopt_results", "plot", "strategies", ] folder = Path(directory) if not folder.is_dir(): - folder.mkdir(parents=True) - logger.info(f'Created user-data directory: {folder}') + if create_dir: + folder.mkdir(parents=True) + logger.info(f'Created user-data directory: {folder}') + else: + raise OperationalException( + f"Directory `{folder}` does not exist. " + "Please use `freqtrade create-userdir` to create a user directory") # Create required subdirectories for f in sub_dirs: diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 4dd3760db..838578e25 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -335,7 +335,7 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non ) mocker.patch( 'freqtrade.configuration.configuration.create_userdata_dir', - lambda x: Path(x) + lambda x, *args, **kwargs: Path(x) ) arglist = [ '--config', 'config.json', @@ -625,7 +625,7 @@ def test_create_userdata_dir(mocker, default_conf, caplog) -> None: mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) md = mocker.patch.object(Path, 'mkdir', MagicMock()) - x = create_userdata_dir('/tmp/bar') + x = create_userdata_dir('/tmp/bar', create_dir=True) assert md.call_count == 7 assert md.call_args[1]['parents'] is False assert log_has('Created user-data directory: /tmp/bar', caplog.record_tuples) @@ -641,6 +641,15 @@ def test_create_userdata_dir_exists(mocker, default_conf, caplog) -> None: assert md.call_count == 0 +def test_create_userdata_dir_exists_exception(mocker, default_conf, caplog) -> None: + mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) + md = mocker.patch.object(Path, 'mkdir', MagicMock()) + + with pytest.raises(OperationalException, match=r'Directory `/tmp/bar` does not exist.*'): + create_userdata_dir('/tmp/bar', create_dir=False) + assert md.call_count == 0 + + def test_validate_tsl(default_conf): default_conf['trailing_stop'] = True default_conf['trailing_stop_positive'] = 0 diff --git a/freqtrade/utils.py b/freqtrade/utils.py index fa6bc2d1d..2c7902ebd 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -49,7 +49,7 @@ def start_create_userdir(args: Namespace) -> None: :return: None """ if "user_data_dir" in args and args.user_data_dir: - create_userdata_dir(args.user_data_dir) + create_userdata_dir(args.user_data_dir, create_dir=True) else: logger.warning("`create-userdir` requires --userdir to be set.") sys.exit(1) From 065ebd39ef9fae6c57f133bbf4c41ee46e3e6be1 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 1 Aug 2019 23:57:26 +0300 Subject: [PATCH 0076/3421] cleanup in hyperopt --- freqtrade/optimize/hyperopt.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 842a111ca..479f8c70a 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -78,6 +78,12 @@ class Hyperopt(Backtesting): self.max_open_trades = 0 self.position_stacking = self.config.get('position_stacking', False), + if self.has_space('sell'): + # Make sure experimental is enabled + if 'experimental' not in self.config: + self.config['experimental'] = {} + self.config['experimental']['use_sell_signal'] = True + def clean_hyperopt(self): """ Remove hyperopt pickle files to restart hyperopt. @@ -124,13 +130,14 @@ class Hyperopt(Backtesting): """ results = sorted(self.trials, key=itemgetter('loss')) best_result = results[0] + params = best_result['params'] log_str = self.format_results_logstring(best_result) print(f"\nBest result:\n{log_str}\nwith values:") - pprint(best_result['params'], indent=4) - if 'roi_t1' in best_result['params']: + pprint(params, indent=4) + if self.has_space('roi'): print("ROI table:") - pprint(self.custom_hyperopt.generate_roi_table(best_result['params']), indent=4) + pprint(self.custom_hyperopt.generate_roi_table(params), indent=4) def log_results(self, results) -> None: """ @@ -162,9 +169,7 @@ class Hyperopt(Backtesting): """ Tell if a space value is contained in the configuration """ - if space in self.config['spaces'] or 'all' in self.config['spaces']: - return True - return False + return any(s in self.config['spaces'] for s in [space, 'all']) def hyperopt_space(self) -> List[Dimension]: """ @@ -172,16 +177,16 @@ class Hyperopt(Backtesting): """ spaces: List[Dimension] = [] if self.has_space('buy'): + logger.debug("Hyperopt has 'buy' space") spaces += self.custom_hyperopt.indicator_space() if self.has_space('sell'): + logger.debug("Hyperopt has 'sell' space") spaces += self.custom_hyperopt.sell_indicator_space() - # Make sure experimental is enabled - if 'experimental' not in self.config: - self.config['experimental'] = {} - self.config['experimental']['use_sell_signal'] = True if self.has_space('roi'): + logger.debug("Hyperopt has 'roi' space") spaces += self.custom_hyperopt.roi_space() if self.has_space('stoploss'): + logger.debug("Hyperopt has 'stoploss' space") spaces += self.custom_hyperopt.stoploss_space() return spaces From 3ccfe88ad86d57bd3c16dab2c18b4ea2cd61db81 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 1 Aug 2019 23:57:50 +0300 Subject: [PATCH 0077/3421] tests adjusted --- freqtrade/tests/optimize/test_hyperopt.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index 5d6128e7c..e114dceaf 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -26,6 +26,7 @@ from freqtrade.tests.conftest import (get_args, log_has, log_has_re, @pytest.fixture(scope='function') def hyperopt(default_conf, mocker): + default_conf.update({'spaces': ['all']}) patch_exchange(mocker) return Hyperopt(default_conf) @@ -455,6 +456,7 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: hyperopt = Hyperopt(default_conf) hyperopt.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) hyperopt.start() From 0413598d7bdd655e4d0d8ac88351d0b3b7aa5cf9 Mon Sep 17 00:00:00 2001 From: Jonathan Raviotta Date: Tue, 30 Jul 2019 21:04:05 -0400 Subject: [PATCH 0078/3421] adding environment.yml for conda builds --- environment.yml | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 environment.yml diff --git a/environment.yml b/environment.yml new file mode 100644 index 000000000..8f43b6991 --- /dev/null +++ b/environment.yml @@ -0,0 +1,58 @@ +name: freqtrade +channels: + - defaults + - conda-forge +dependencies: + # Required for app + - python>=3.6 + - pip + - wheel + - numpy + - pandas + - scipy + - SQLAlchemy + - scikit-learn + - arrow + - requests + - urllib3 + - wrapt + - joblib + - jsonschema + - tabulate + - python-rapidjson + - filelock + - flask + - python-dotenv + - cachetools + - scikit-optimize + - python-telegram-bot + # Optional for plotting + - plotly + # Optional for development + - flake8 + - pytest + - pytest-mock + - pytest-asyncio + - pytest-cov + - coveralls + - mypy + # Useful for jupyter + - ipykernel + - isort + - yapf + - pip: + # Required for app + - cython + - coinmarketcap + - ccxt + - TA-Lib + - py_find_1st + - sdnotify + # Optional for develpment + - flake8-tidy-imports + - flake8-type-annotations + - pytest-random-order + - -e . + + + From fceb41115448b4e7c776412094491ffce32926ab Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 1 Aug 2019 20:08:30 +0200 Subject: [PATCH 0079/3421] Create detailed section about strategy problem analysis --- docs/data-analysis.md | 119 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 1940fa3e6..76fedf475 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -6,6 +6,125 @@ A good way for this is using Jupyter (notebook or lab) - which provides an inter The following helpers will help you loading the data into Pandas DataFrames, and may also give you some starting points in analyzing the results. +## Strategy development problem analysis + +Debugging a strategy (are there no buy signals, ...) can be very time-consuming. +FreqTrade tries to help you by exposing a few helper-functions, which can be very handy. + +I recommend using Juptyer Notebooks for this analysis, since it offers a dynamic way to rerun certain parts. + +The following is a full code-snippet, which will be explained by both comments, and step by step below. + +```python +# Some necessary imports +from pathlib import Path + +from freqtrade.data.history import load_pair_history +from freqtrade.resolvers import StrategyResolver +# Define some constants +ticker_interval = "5m" + +# Name of the strategy class +strategyname = 'Awesomestrategy' +# Location of the strategy +strategy_location = '../xmatt/strategies' +# Location of the data +data_location = '../freqtrade/user_data/data/binance/' +# Only use one pair here +pair = "XRP_ETH" + +# Load data +bt_data = load_pair_history(datadir=Path(data_location), + ticker_interval = ticker_interval, + pair=pair) +print(len(bt_data)) + + +# Load strategy - best done in a new cell +# Needs to be ran each time the strategy-file is changed. +strategy = StrategyResolver({'strategy': strategyname, + 'user_data_dir': Path.cwd(), + 'strategy_path': location}).strategy + +# Run strategy (just like in backtesting) +df = strategy.analyze_ticker(bt_data, {'pair': pair}) +print(f"Generated {df['buy'].sum()} buy signals") + +# Reindex data to be "nicer" and show data +data = df.set_index('date', drop=True) +data.tail() + +``` + +### Explanation + +#### Imports and constant definition + +``` python +# Some necessary imports +from pathlib import Path + +from freqtrade.data.history import load_pair_history +from freqtrade.resolvers import StrategyResolver +# Define some constants +ticker_interval = "5m" + +# Name of the strategy class +strategyname = 'Awesomestrategy' +# Location of the strategy +strategy_location = 'user_data/strategies' +# Location of the data +data_location = 'user_data/data/binance' +# Only use one pair here +pair = "XRP_ETH" +``` + +This first section imports necessary modules, and defines some constants you'll probably need differently + +#### Load candles + +``` python +# Load data +bt_data = load_pair_history(datadir=Path(data_location), + ticker_interval = ticker_interval, + pair=pair) +print(len(bt_data)) +``` + +This second section loads the historic data and prints the amount of candles in the data. + +#### Run strategy and analyze results + +Now, it's time to load and run your strategy. +For this, I recommend using a new cell in your notebook, since you'll want to repeat this until you're satisfied with your strategy. + +``` python +# Load strategy - best done in a new cell +# Needs to be ran each time the strategy-file is changed. +strategy = StrategyResolver({'strategy': strategyname, + 'user_data_dir': Path.cwd(), + 'strategy_path': location}).strategy + +# Run strategy (just like in backtesting) +df = strategy.analyze_ticker(bt_data, {'pair': pair}) +print(f"Generated {df['buy'].sum()} buy signals") + +# Reindex data to be "nicer" and show data +data = df.set_index('date', drop=True) +data.tail() +``` + +The code snippet loads and analyzes the strategy, prints the number of buy signals. + +The last 2 lines serve to analyze the dataframe in detail. +This can be important if your strategy did not generate any buy signals. +Note that using `data.head()` would also work, however this is misleading since most indicators have some "startup" time at the start of a backtested dataframe. + +There can be many things wrong, some signs to look for are: + +* Columns with NaN values at the end of the dataframe +* Columns used in `crossed*()` functions with completely different units + ## Backtesting To analyze your backtest results, you can [export the trades](#exporting-trades-to-file). From 01cd30984b1e166ab59b446521350b74fa83eb12 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 2 Aug 2019 06:47:03 +0200 Subject: [PATCH 0080/3421] Improve wording --- docs/data-analysis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 76fedf475..2c5cc8842 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -79,7 +79,7 @@ data_location = 'user_data/data/binance' pair = "XRP_ETH" ``` -This first section imports necessary modules, and defines some constants you'll probably need differently +This first section imports necessary modules, and defines some constants you'll probably need to adjust for your case. #### Load candles From 76d22bc743f5e697b87e4991e6233c2a99b5e057 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 2 Aug 2019 09:37:59 +0200 Subject: [PATCH 0081/3421] Show correct valueerror message --- freqtrade/data/btanalysis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index f2356c34b..5865d56a7 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -30,7 +30,7 @@ def load_backtest_data(filename) -> pd.DataFrame: filename = Path(filename) if not filename.is_file(): - raise ValueError("File {filename} does not exist.") + raise ValueError(f"File {filename} does not exist.") with filename.open() as file: data = json_load(file) From 0b9b5f39936967ad1e014d06032df14c18d6d31f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 2 Aug 2019 19:50:12 +0200 Subject: [PATCH 0082/3421] Improve document wording --- docs/data-analysis.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 2c5cc8842..68e085ff3 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -11,7 +11,7 @@ The following helpers will help you loading the data into Pandas DataFrames, and Debugging a strategy (are there no buy signals, ...) can be very time-consuming. FreqTrade tries to help you by exposing a few helper-functions, which can be very handy. -I recommend using Juptyer Notebooks for this analysis, since it offers a dynamic way to rerun certain parts. +It's recommendet using Juptyer Notebooks for analysis, since it offers a dynamic way to rerun certain parts of the code. The following is a full code-snippet, which will be explained by both comments, and step by step below. @@ -33,6 +33,8 @@ data_location = '../freqtrade/user_data/data/binance/' # Only use one pair here pair = "XRP_ETH" +### End constants + # Load data bt_data = load_pair_history(datadir=Path(data_location), ticker_interval = ticker_interval, @@ -91,7 +93,8 @@ bt_data = load_pair_history(datadir=Path(data_location), print(len(bt_data)) ``` -This second section loads the historic data and prints the amount of candles in the data. +This second section loads the historic data and prints the amount of candles in the DataFrame. +You can also inspect this dataframe by using `bt_data.head()` or `bt_data.tail()`. #### Run strategy and analyze results @@ -114,7 +117,7 @@ data = df.set_index('date', drop=True) data.tail() ``` -The code snippet loads and analyzes the strategy, prints the number of buy signals. +The code snippet loads and analyzes the strategy, calculates and prints the number of buy signals. The last 2 lines serve to analyze the dataframe in detail. This can be important if your strategy did not generate any buy signals. From 32605fa10aea008c5332c7369d10df77e568db64 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 2 Aug 2019 19:52:56 +0200 Subject: [PATCH 0083/3421] small improvements --- docs/data-analysis.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 68e085ff3..5099e1013 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -41,9 +41,9 @@ bt_data = load_pair_history(datadir=Path(data_location), pair=pair) print(len(bt_data)) - +### Start strategy reload # Load strategy - best done in a new cell -# Needs to be ran each time the strategy-file is changed. +# Rerun each time the strategy-file is changed. strategy = StrategyResolver({'strategy': strategyname, 'user_data_dir': Path.cwd(), 'strategy_path': location}).strategy From 3eb571f34c1ae12a33dd2dfc6f2f7a85f398898a Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 2 Aug 2019 20:04:18 +0200 Subject: [PATCH 0084/3421] recommended ... --- docs/data-analysis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 5099e1013..2b6d6ed58 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -11,7 +11,7 @@ The following helpers will help you loading the data into Pandas DataFrames, and Debugging a strategy (are there no buy signals, ...) can be very time-consuming. FreqTrade tries to help you by exposing a few helper-functions, which can be very handy. -It's recommendet using Juptyer Notebooks for analysis, since it offers a dynamic way to rerun certain parts of the code. +It's recommended using Juptyer Notebooks for analysis, since it offers a dynamic way to rerun certain parts of the code. The following is a full code-snippet, which will be explained by both comments, and step by step below. From aa8f44f68c428962485231628a38dc9820009280 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 2 Aug 2019 22:22:58 +0300 Subject: [PATCH 0085/3421] improvements to hyperopt output --- freqtrade/optimize/hyperopt.py | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 479f8c70a..b68b1ac4f 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -11,7 +11,7 @@ import sys from operator import itemgetter from pathlib import Path from pprint import pprint -from typing import Any, Dict, List +from typing import Any, Dict, List, Optional from joblib import Parallel, delayed, dump, load, wrap_non_picklable_objects, cpu_count from pandas import DataFrame @@ -70,7 +70,7 @@ class Hyperopt(Backtesting): if hasattr(self.custom_hyperopt, 'populate_sell_trend'): self.advise_sell = self.custom_hyperopt.populate_sell_trend # type: ignore - # Use max_open_trades for hyperopt as well, except --disable-max-market-positions is set + # Use max_open_trades for hyperopt as well, except --disable-max-market-positions is set if self.config.get('use_max_market_positions', True): self.max_open_trades = self.config['max_open_trades'] else: @@ -134,10 +134,19 @@ class Hyperopt(Backtesting): log_str = self.format_results_logstring(best_result) print(f"\nBest result:\n{log_str}\nwith values:") - pprint(params, indent=4) + if self.has_space('buy'): + print('Buy hyperspace params:') + pprint({p.name: params.get(p.name) for p in self.hyperopt_space('buy')}, + indent=4) + if self.has_space('sell'): + print('Sell hyperspace params:') + pprint({p.name: params.get(p.name) for p in self.hyperopt_space('sell')}, + indent=4) if self.has_space('roi'): print("ROI table:") pprint(self.custom_hyperopt.generate_roi_table(params), indent=4) + if self.has_space('stoploss'): + print(f"Stoploss: {params.get('stoploss')}") def log_results(self, results) -> None: """ @@ -171,21 +180,24 @@ class Hyperopt(Backtesting): """ return any(s in self.config['spaces'] for s in [space, 'all']) - def hyperopt_space(self) -> List[Dimension]: + def hyperopt_space(self, space: Optional[str] = None) -> List[Dimension]: """ - Return the space to use during Hyperopt + Return the dimentions in the hyperoptimization space. + :param space: Defines hyperspace to return dimentions for. + If None, then the self.has_space() will be used to return dimentions + for all hyperspaces used. """ spaces: List[Dimension] = [] - if self.has_space('buy'): + if space == 'buy' or (space is None and self.has_space('buy')): logger.debug("Hyperopt has 'buy' space") spaces += self.custom_hyperopt.indicator_space() - if self.has_space('sell'): + if space == 'sell' or (space is None and self.has_space('sell')): logger.debug("Hyperopt has 'sell' space") spaces += self.custom_hyperopt.sell_indicator_space() - if self.has_space('roi'): + if space == 'roi' or (space is None and self.has_space('roi')): logger.debug("Hyperopt has 'roi' space") spaces += self.custom_hyperopt.roi_space() - if self.has_space('stoploss'): + if space == 'stoploss' or (space is None and self.has_space('stoploss')): logger.debug("Hyperopt has 'stoploss' space") spaces += self.custom_hyperopt.stoploss_space() return spaces From b152d1a7abd09774a6b3367b28a89bfeae4e4a47 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 2 Aug 2019 22:23:48 +0300 Subject: [PATCH 0086/3421] docs agjusted, plus minor fixes --- docs/hyperopt.md | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 2755cae2d..fbd00bcbd 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -303,8 +303,9 @@ Given the following result from hyperopt: ``` Best result: - 135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins. + 44/100: 135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins. Objective: 1.94367 with values: +Buy hyperspace params: { 'adx-value': 44, 'rsi-value': 29, 'adx-enabled': False, @@ -347,21 +348,14 @@ If you are optimizing ROI, you're result will look as follows and include a ROI ``` Best result: - 135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins. + 44/100: 135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins. Objective: 1.94367 with values: +Buy hyperspace params: { 'adx-value': 44, 'rsi-value': 29, - 'adx-enabled': false, + 'adx-enabled': False, 'rsi-enabled': True, - 'trigger': 'bb_lower', - 'roi_t1': 40, - 'roi_t2': 57, - 'roi_t3': 21, - 'roi_p1': 0.03634636907306948, - 'roi_p2': 0.055237357937802885, - 'roi_p3': 0.015163796015548354, - 'stoploss': -0.37996664668703606 -} + 'trigger': 'bb_lower'} ROI table: { 0: 0.10674752302642071, 21: 0.09158372701087236, @@ -372,9 +366,9 @@ ROI table: This would translate to the following ROI table: ``` python - minimal_roi = { +minimal_roi = { "118": 0, - "78": 0.0363463, + "78": 0.0363, "21": 0.0915, "0": 0.106 } From cad7d9135a3c2a926993d43710dfb5fe2585858f Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 3 Aug 2019 09:24:27 +0300 Subject: [PATCH 0087/3421] tests: hide deprecation warning due to use of --live --- freqtrade/tests/optimize/test_backtesting.py | 3 +++ freqtrade/tests/test_configuration.py | 1 + 2 files changed, 4 insertions(+) diff --git a/freqtrade/tests/optimize/test_backtesting.py b/freqtrade/tests/optimize/test_backtesting.py index 9304871a8..37757743e 100644 --- a/freqtrade/tests/optimize/test_backtesting.py +++ b/freqtrade/tests/optimize/test_backtesting.py @@ -202,6 +202,7 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert config['runmode'] == RunMode.BACKTEST +@pytest.mark.filterwarnings("ignore:DEPRECATED") def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) mocker.patch( @@ -812,6 +813,7 @@ def test_backtest_record(default_conf, fee, mocker): assert dur > 0 +@pytest.mark.filterwarnings("ignore:DEPRECATED") def test_backtest_start_live(default_conf, mocker, caplog): default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] @@ -858,6 +860,7 @@ def test_backtest_start_live(default_conf, mocker, caplog): assert log_has(line, caplog.record_tuples) +@pytest.mark.filterwarnings("ignore:DEPRECATED") def test_backtest_start_multi_strat(default_conf, mocker, caplog): default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 56ff79625..1e76297a6 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -325,6 +325,7 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert 'export' not in config +@pytest.mark.filterwarnings("ignore:DEPRECATED") def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) mocker.patch( From 3b65c986eea10e68da391997831a4d1a769aff2c Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 3 Aug 2019 10:20:20 +0300 Subject: [PATCH 0088/3421] wordings fixed --- freqtrade/optimize/hyperopt.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index b68b1ac4f..8767ed9a7 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -182,9 +182,9 @@ class Hyperopt(Backtesting): def hyperopt_space(self, space: Optional[str] = None) -> List[Dimension]: """ - Return the dimentions in the hyperoptimization space. - :param space: Defines hyperspace to return dimentions for. - If None, then the self.has_space() will be used to return dimentions + Return the dimensions in the hyperoptimization space. + :param space: Defines hyperspace to return dimensions for. + If None, then the self.has_space() will be used to return dimensions for all hyperspaces used. """ spaces: List[Dimension] = [] From 13620df717bf73e38e3ac974dfca8d31cdd53178 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 3 Aug 2019 11:05:05 +0300 Subject: [PATCH 0089/3421] 'with values:' line removed --- docs/hyperopt.md | 6 ++++-- freqtrade/optimize/hyperopt.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index fbd00bcbd..0b5d1a50e 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -303,8 +303,9 @@ Given the following result from hyperopt: ``` Best result: + 44/100: 135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins. Objective: 1.94367 -with values: + Buy hyperspace params: { 'adx-value': 44, 'rsi-value': 29, @@ -348,8 +349,9 @@ If you are optimizing ROI, you're result will look as follows and include a ROI ``` Best result: + 44/100: 135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins. Objective: 1.94367 -with values: + Buy hyperspace params: { 'adx-value': 44, 'rsi-value': 29, diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 8767ed9a7..427b17cb8 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -133,7 +133,7 @@ class Hyperopt(Backtesting): params = best_result['params'] log_str = self.format_results_logstring(best_result) - print(f"\nBest result:\n{log_str}\nwith values:") + print(f"\nBest result:\n\n{log_str}\n") if self.has_space('buy'): print('Buy hyperspace params:') pprint({p.name: params.get(p.name) for p in self.hyperopt_space('buy')}, From e8b2ae0b85c1e311a87c037b3852fadb60d60dff Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 3 Aug 2019 11:19:36 +0300 Subject: [PATCH 0090/3421] tests adjusted --- freqtrade/tests/optimize/test_hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index e114dceaf..e3b049c06 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -463,7 +463,7 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: parallel.assert_called_once() out, err = capsys.readouterr() - assert 'Best result:\n* 1/1: foo result Objective: 1.00000\nwith values:\n' in out + assert 'Best result:\n\n* 1/1: foo result Objective: 1.00000\n' in out assert dumper.called # Should be called twice, once for tickerdata, once to save evaluations assert dumper.call_count == 2 From bbd58e772eaa003aa18ce28c5fe2a15818f5d76f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 3 Aug 2019 13:11:51 +0200 Subject: [PATCH 0091/3421] Warn when using restricted pairs As noted in https://github.com/ccxt/ccxt/issues/5624, there is currently no way to detect if a user is impacted by this or not prior to creating a order. --- freqtrade/exchange/exchange.py | 8 +++++++- freqtrade/tests/conftest.py | 18 +++++++++--------- freqtrade/tests/exchange/test_exchange.py | 21 +++++++++++++++++++-- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index a7c76e635..37bbb778e 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -260,7 +260,7 @@ class Exchange(object): if not self.markets: logger.warning('Unable to validate pairs (assuming they are correct).') - # return + return for pair in pairs: # Note: ccxt has BaseCurrency/QuoteCurrency format for pairs @@ -269,6 +269,12 @@ class Exchange(object): raise OperationalException( f'Pair {pair} is not available on {self.name}. ' f'Please remove {pair} from your whitelist.') + elif self.markets[pair].get('info', {}).get('IsRestricted', False): + # Warn users about restricted pairs in whitelist. + # We cannot determine reliably if Users are affected. + logger.warning(f"Pair {pair} is restricted for some users on this exchange." + f"Please check if you are impacted by this restriction " + f"on the exchange and eventually remove {pair} from your whitelist.") def get_valid_pair_combination(self, curr_1, curr_2) -> str: """ diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py index 5862a2e89..71ed23901 100644 --- a/freqtrade/tests/conftest.py +++ b/freqtrade/tests/conftest.py @@ -304,7 +304,7 @@ def markets(): 'max': 500000, }, }, - 'info': '', + 'info': {}, }, 'TKN/BTC': { 'id': 'tknbtc', @@ -329,7 +329,7 @@ def markets(): 'max': 500000, }, }, - 'info': '', + 'info': {}, }, 'BLK/BTC': { 'id': 'blkbtc', @@ -354,7 +354,7 @@ def markets(): 'max': 500000, }, }, - 'info': '', + 'info': {}, }, 'LTC/BTC': { 'id': 'ltcbtc', @@ -379,7 +379,7 @@ def markets(): 'max': 500000, }, }, - 'info': '', + 'info': {}, }, 'XRP/BTC': { 'id': 'xrpbtc', @@ -404,7 +404,7 @@ def markets(): 'max': 500000, }, }, - 'info': '', + 'info': {}, }, 'NEO/BTC': { 'id': 'neobtc', @@ -429,7 +429,7 @@ def markets(): 'max': 500000, }, }, - 'info': '', + 'info': {}, }, 'BTT/BTC': { 'id': 'BTTBTC', @@ -457,7 +457,7 @@ def markets(): 'max': None } }, - 'info': "", + 'info': {}, }, 'ETH/USDT': { 'id': 'USDT-ETH', @@ -479,7 +479,7 @@ def markets(): } }, 'active': True, - 'info': "" + 'info': {}, }, 'LTC/USDT': { 'id': 'USDT-LTC', @@ -501,7 +501,7 @@ def markets(): 'max': None } }, - 'info': "" + 'info': {}, } } diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index a5cdf0a82..67a4bbeeb 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -318,7 +318,7 @@ def test__reload_markets_exception(default_conf, mocker, caplog): def test_validate_pairs(default_conf, mocker): # test exchange.validate_pairs directly api_mock = MagicMock() type(api_mock).markets = PropertyMock(return_value={ - 'ETH/BTC': '', 'LTC/BTC': '', 'XRP/BTC': '', 'NEO/BTC': '' + 'ETH/BTC': {}, 'LTC/BTC': {}, 'XRP/BTC': {}, 'NEO/BTC': {} }) id_mock = PropertyMock(return_value='test_exchange') type(api_mock).id = id_mock @@ -332,7 +332,7 @@ def test_validate_pairs(default_conf, mocker): # test exchange.validate_pairs d def test_validate_pairs_not_available(default_conf, mocker): api_mock = MagicMock() type(api_mock).markets = PropertyMock(return_value={ - 'XRP/BTC': 'inactive' + 'XRP/BTC': {'inactive'} }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) @@ -361,6 +361,23 @@ def test_validate_pairs_exception(default_conf, mocker, caplog): caplog.record_tuples) +def test_validate_pairs_restricted(default_conf, mocker, caplog): + api_mock = MagicMock() + type(api_mock).markets = PropertyMock(return_value={ + 'ETH/BTC': {}, 'LTC/BTC': {}, 'NEO/BTC': {}, + 'XRP/BTC': {'info': {'IsRestricted': True}} + }) + mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) + + Exchange(default_conf) + assert log_has(f"Pair XRP/BTC is restricted for some users on this exchange." + f"Please check if you are impacted by this restriction " + f"on the exchange and eventually remove XRP/BTC from your whitelist.", + caplog.record_tuples) + + def test_validate_timeframes(default_conf, mocker): default_conf["ticker_interval"] = "5m" api_mock = MagicMock() From ad55faafa899fefc828bddd2e08a7f4a4f52749d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 3 Aug 2019 13:18:37 +0200 Subject: [PATCH 0092/3421] Fix odd test --- freqtrade/tests/exchange/test_exchange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index 67a4bbeeb..2f9e525dd 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -332,7 +332,7 @@ def test_validate_pairs(default_conf, mocker): # test exchange.validate_pairs d def test_validate_pairs_not_available(default_conf, mocker): api_mock = MagicMock() type(api_mock).markets = PropertyMock(return_value={ - 'XRP/BTC': {'inactive'} + 'XRP/BTC': {'inactive': True} }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) From 8ab07e0451d1205eb4ebee2f2043f9df56cc2e13 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 3 Aug 2019 13:22:44 +0200 Subject: [PATCH 0093/3421] Add FAQ section about restricted markets --- docs/faq.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/faq.md b/docs/faq.md index 83576af4d..fe6f66130 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -45,6 +45,16 @@ the tutorial [here|Testing-new-strategies-with-Hyperopt](bot-usage.md#hyperopt-c You can use the `/forcesell all` command from Telegram. +### I get the message "RESTRICTED_MARKET" + +Currently known to happen for US Bittrex users. +Bittrex split it's exchange into an US and an International verssion. +The International version has more pairs available, however the API always returns all pairs, so there is currently no automated way to detect if you're affected by the restriction. + +If you have restricted pairs in your whitelist, you'll get a Warning-message on startup for each restricted pair. +If you're an "International" Customer on the Bittrex exchange, then this warning will not impact you. +If you're a US customer, the bot will fail to create orders for these pairs, and you should remove them from your Whitelist. + ## Hyperopt module ### How many epoch do I need to get a good Hyperopt result? From d59608f7649ba5fc352c7a12d89b9466cbd11b2f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 3 Aug 2019 17:19:37 +0200 Subject: [PATCH 0094/3421] adjust some documentation wordings --- docs/faq.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index fe6f66130..e8367608f 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -48,11 +48,11 @@ You can use the `/forcesell all` command from Telegram. ### I get the message "RESTRICTED_MARKET" Currently known to happen for US Bittrex users. -Bittrex split it's exchange into an US and an International verssion. +Bittrex split it's exchange into US and International versions. The International version has more pairs available, however the API always returns all pairs, so there is currently no automated way to detect if you're affected by the restriction. -If you have restricted pairs in your whitelist, you'll get a Warning-message on startup for each restricted pair. -If you're an "International" Customer on the Bittrex exchange, then this warning will not impact you. +If you have restricted pairs in your whitelist, you'll get a warning message in the log on FreqTrade startup for each restricted pair. +If you're an "International" Customer on the Bittrex exchange, then this warning will probably not impact you. If you're a US customer, the bot will fail to create orders for these pairs, and you should remove them from your Whitelist. ## Hyperopt module From f200f52a163b67348a1e41c4cb5026e59c21d5d2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 3 Aug 2019 19:09:42 +0300 Subject: [PATCH 0095/3421] hyperopt print colorized results --- docs/hyperopt.md | 4 ++++ freqtrade/configuration/arguments.py | 3 ++- freqtrade/configuration/cli_options.py | 6 ++++++ freqtrade/configuration/configuration.py | 3 +++ freqtrade/misc.py | 12 ++++++++++++ freqtrade/optimize/hyperopt.py | 18 ++++++++++++++++-- 6 files changed, 43 insertions(+), 3 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 0b5d1a50e..2826dfc3b 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -343,6 +343,10 @@ def populate_buy_trend(self, dataframe: DataFrame) -> DataFrame: return dataframe ``` +You can use the `--print-all` command line option if you would like to see all results in the hyperopt output, not only the best ones. + +When the `--color/--print-colorized` command line option is used, the results are colorized -- bad results (with zero trades or limited by the `--min-trades` option) are red, currest bests -- in green, results with positive total profit are printed in bold. + ### Understand Hyperopt ROI results If you are optimizing ROI, you're result will look as follows and include a ROI table. diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 4f0c3d31b..dd5a4290e 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -23,7 +23,8 @@ ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + ["position_stacking", "use_max_market_pos ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + ["hyperopt", "hyperopt_path", "position_stacking", "epochs", "spaces", - "use_max_market_positions", "print_all", "hyperopt_jobs", + "use_max_market_positions", "print_all", + "print_colorized", "hyperopt_jobs", "hyperopt_random_state", "hyperopt_min_trades", "hyperopt_continue", "hyperopt_loss"] diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 04fde2051..aab3c12b3 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -191,6 +191,12 @@ AVAILABLE_CLI_OPTIONS = { action='store_true', default=False, ), + "print_colorized": Arg( + '--color', '--print-colorized', + help='Print colorized hyperopt results.', + action='store_true', + default=False + ), "hyperopt_jobs": Arg( '-j', '--job-workers', help='The number of concurrently running jobs for hyperoptimization ' diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 17ad37d6a..01732ca9e 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -254,6 +254,9 @@ class Configuration(object): self._args_to_config(config, argname='print_all', logstring='Parameter --print-all detected ...') + self._args_to_config(config, argname='print_colorized', + logstring='Parameter --color/--print-colorized detected ...') + self._args_to_config(config, argname='hyperopt_jobs', logstring='Parameter -j/--job-workers detected: {}') diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 05946e008..eadfc7490 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -113,3 +113,15 @@ def deep_merge_dicts(source, destination): destination[key] = value return destination + + +def green(s): + return '\033[92m' + s + '\033[0m' + + +def red(s): + return '\033[91m' + s + '\033[0m' + + +def bold(s): + return '\033[1m' + s + '\033[0m' diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 427b17cb8..e62cbe66b 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -20,6 +20,7 @@ from skopt.space import Dimension from freqtrade.configuration import Arguments from freqtrade.data.history import load_data, get_timeframe +from freqtrade.misc import green, red, bold from freqtrade.optimize.backtesting import Backtesting # Import IHyperOptLoss to allow users import from this file from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss # noqa: F4 @@ -153,8 +154,19 @@ class Hyperopt(Backtesting): Log results if it is better than any previous evaluation """ print_all = self.config.get('print_all', False) - if print_all or results['loss'] < self.current_best_loss: + is_best_loss = results['loss'] < self.current_best_loss + if print_all or is_best_loss: + if is_best_loss: + self.current_best_loss = results['loss'] log_str = self.format_results_logstring(results) + # Colorize output + if self.config.get('print_colorized', False): + if results['total_profit'] > 0: + log_str = bold(log_str) + if results['loss'] >= MAX_LOSS: + log_str = red(log_str) + elif is_best_loss: + log_str = green(log_str) if print_all: print(log_str) else: @@ -169,7 +181,6 @@ class Hyperopt(Backtesting): total = self.total_epochs res = results['results_explanation'] loss = results['loss'] - self.current_best_loss = results['loss'] log_str = f'{current:5d}/{total}: {res} Objective: {loss:.5f}' log_str = f'*{log_str}' if results['is_initial_point'] else f' {log_str}' return log_str @@ -237,6 +248,7 @@ class Hyperopt(Backtesting): results_explanation = self.format_results(results) trade_count = len(results.index) + total_profit = results.profit_abs.sum() # If this evaluation contains too short amount of trades to be # interesting -- consider it as 'bad' (assigned max. loss value) @@ -247,6 +259,7 @@ class Hyperopt(Backtesting): 'loss': MAX_LOSS, 'params': params, 'results_explanation': results_explanation, + 'total_profit': total_profit, } loss = self.calculate_loss(results=results, trade_count=trade_count, @@ -256,6 +269,7 @@ class Hyperopt(Backtesting): 'loss': loss, 'params': params, 'results_explanation': results_explanation, + 'total_profit': total_profit, } def format_results(self, results: DataFrame) -> str: From fe796c46c329d51c36761ef74ec24a53fc4dbf3e Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 3 Aug 2019 19:13:18 +0300 Subject: [PATCH 0096/3421] test adjusted --- freqtrade/tests/optimize/test_hyperopt.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index e3b049c06..4fb08181a 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -605,7 +605,8 @@ def test_generate_optimizer(mocker, default_conf) -> None: 'loss': 1.9840569076926293, 'results_explanation': ' 1 trades. Avg profit 2.31%. Total profit 0.00023300 BTC ' '( 2.31Σ%). Avg duration 100.0 mins.', - 'params': optimizer_param + 'params': optimizer_param, + 'total_profit': 0.00023300 } hyperopt = Hyperopt(default_conf) From 3dd6fe2703a4884eaa43443980e523465b381435 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 3 Aug 2019 19:44:32 +0300 Subject: [PATCH 0097/3421] wording --- docs/hyperopt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 2826dfc3b..16e2212d5 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -345,7 +345,7 @@ def populate_buy_trend(self, dataframe: DataFrame) -> DataFrame: You can use the `--print-all` command line option if you would like to see all results in the hyperopt output, not only the best ones. -When the `--color/--print-colorized` command line option is used, the results are colorized -- bad results (with zero trades or limited by the `--min-trades` option) are red, currest bests -- in green, results with positive total profit are printed in bold. +When the `--color/--print-colorized` command line option is used, the results are colorized -- bad results (with zero trades or limited by the `--min-trades` option) are red, current bests -- in green, results with positive total profit are printed in bold. ### Understand Hyperopt ROI results From c4e30862eeda84a1aa7f4e587c6851bf05905b4b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 3 Aug 2019 19:55:54 +0200 Subject: [PATCH 0098/3421] load_trades_db should give as many columns as possible --- freqtrade/data/btanalysis.py | 21 ++++++++++++++++----- freqtrade/tests/data/test_btanalysis.py | 5 +++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 5865d56a7..6568fe31e 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -81,19 +81,30 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: """ trades: pd.DataFrame = pd.DataFrame([], columns=BT_DATA_COLUMNS) persistence.init(db_url, clean_open_orders=False) - columns = ["pair", "profit", "open_time", "close_time", - "open_rate", "close_rate", "duration", "sell_reason", - "max_rate", "min_rate"] - trades = pd.DataFrame([(t.pair, t.calc_profit(), + columns = ["pair", "open_time", "close_time", "profit", "profitperc", + "open_rate", "close_rate", "amount", "duration", "sell_reason", + "fee_open", "fee_close", "open_rate_requested", "close_rate_requested", + "stake_amount", "max_rate", "min_rate", "id", "exchange", + "stop_loss", "initial_stop_loss", "strategy", "ticker_interval"] + + trades = pd.DataFrame([(t.pair, t.open_date.replace(tzinfo=pytz.UTC), t.close_date.replace(tzinfo=pytz.UTC) if t.close_date else None, - t.open_rate, t.close_rate, + t.calc_profit(), t.calc_profit_percent(), + t.open_rate, t.close_rate, t.amount, t.close_date.timestamp() - t.open_date.timestamp() if t.close_date else None, t.sell_reason, + t.fee_open, t.fee_close, + t.open_rate_requested, + t.close_rate_requested, + t.stake_amount, t.max_rate, t.min_rate, + t.id, t.exchange, + t.stop_loss, t.initial_stop_loss, + t.strategy, t.ticker_interval ) for t in Trade.query.all()], columns=columns) diff --git a/freqtrade/tests/data/test_btanalysis.py b/freqtrade/tests/data/test_btanalysis.py index e80840009..bad8db66f 100644 --- a/freqtrade/tests/data/test_btanalysis.py +++ b/freqtrade/tests/data/test_btanalysis.py @@ -45,6 +45,11 @@ def test_load_trades_db(default_conf, fee, mocker): assert isinstance(trades, DataFrame) assert "pair" in trades.columns assert "open_time" in trades.columns + assert "profitperc" in trades.columns + + for col in BT_DATA_COLUMNS: + if col not in ['index', 'open_at_end']: + assert col in trades.columns def test_extract_trades_of_period(): From d51fd1a5d0bec672fcadd92fcc38cf15add751ca Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 3 Aug 2019 19:56:41 +0200 Subject: [PATCH 0099/3421] fix typo --- docs/faq.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/faq.md b/docs/faq.md index e8367608f..a441ffacd 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -48,7 +48,7 @@ You can use the `/forcesell all` command from Telegram. ### I get the message "RESTRICTED_MARKET" Currently known to happen for US Bittrex users. -Bittrex split it's exchange into US and International versions. +Bittrex split its exchange into US and International versions. The International version has more pairs available, however the API always returns all pairs, so there is currently no automated way to detect if you're affected by the restriction. If you have restricted pairs in your whitelist, you'll get a warning message in the log on FreqTrade startup for each restricted pair. From c6bd14378502aeccf4ee2b6af120ca90922e61be Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 3 Aug 2019 20:04:49 +0200 Subject: [PATCH 0100/3421] add Operating system to issue template --- .github/ISSUE_TEMPLATE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 94d998310..ae5375f43 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -5,6 +5,7 @@ If it hasn't been reported, please create a new issue. ## Step 2: Describe your environment + * Operating system: ____ * Python Version: _____ (`python -V`) * CCXT version: _____ (`pip freeze | grep ccxt`) * Branch: Master | Develop From 52d92cba90cd3e9baa1c48da8e47c8ddb68a4fb3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 4 Aug 2019 10:20:31 +0200 Subject: [PATCH 0101/3421] Split analyze_ticker and _analyze_ticker_int --- freqtrade/strategy/interface.py | 22 +++++++++++++++++----- freqtrade/tests/strategy/test_interface.py | 20 ++++++++++---------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 2a28bcd22..5bd183fa9 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -158,6 +158,21 @@ class IStrategy(ABC): """ Parses the given ticker history and returns a populated DataFrame add several TA indicators and buy signal to it + :param dataframe: Dataframe containing ticker data + :param metadata: Metadata dictionary with additional data (e.g. 'pair') + :return: DataFrame with ticker data and indicator data + """ + logger.debug("TA Analysis Launched") + dataframe = self.advise_indicators(dataframe, metadata) + dataframe = self.advise_buy(dataframe, metadata) + dataframe = self.advise_sell(dataframe, metadata) + return dataframe + + def _analyze_ticker_int(self, dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + Parses the given ticker history and returns a populated DataFrame + add several TA indicators and buy signal to it + Used internally, may skip analysis if `process_only_new_candles` is set. :return: DataFrame with ticker data and indicator data """ @@ -168,10 +183,7 @@ class IStrategy(ABC): if (not self.process_only_new_candles or self._last_candle_seen_per_pair.get(pair, None) != dataframe.iloc[-1]['date']): # Defs that only make change on new candle data. - logger.debug("TA Analysis Launched") - dataframe = self.advise_indicators(dataframe, metadata) - dataframe = self.advise_buy(dataframe, metadata) - dataframe = self.advise_sell(dataframe, metadata) + dataframe = self.analyze_ticker(dataframe, metadata) self._last_candle_seen_per_pair[pair] = dataframe.iloc[-1]['date'] else: logger.debug("Skipping TA Analysis for already analyzed candle") @@ -198,7 +210,7 @@ class IStrategy(ABC): return False, False try: - dataframe = self.analyze_ticker(dataframe, {'pair': pair}) + dataframe = self._analyze_ticker_int(dataframe, {'pair': pair}) except ValueError as error: logger.warning( 'Unable to analyze ticker for pair %s: %s', diff --git a/freqtrade/tests/strategy/test_interface.py b/freqtrade/tests/strategy/test_interface.py index ee8c8ddd4..6bf3770c5 100644 --- a/freqtrade/tests/strategy/test_interface.py +++ b/freqtrade/tests/strategy/test_interface.py @@ -19,13 +19,13 @@ _STRATEGY = DefaultStrategy(config={}) def test_returns_latest_buy_signal(mocker, default_conf, ticker_history): mocker.patch.object( - _STRATEGY, 'analyze_ticker', + _STRATEGY, '_analyze_ticker_int', return_value=DataFrame([{'buy': 1, 'sell': 0, 'date': arrow.utcnow()}]) ) assert _STRATEGY.get_signal('ETH/BTC', '5m', ticker_history) == (True, False) mocker.patch.object( - _STRATEGY, 'analyze_ticker', + _STRATEGY, '_analyze_ticker_int', return_value=DataFrame([{'buy': 0, 'sell': 1, 'date': arrow.utcnow()}]) ) assert _STRATEGY.get_signal('ETH/BTC', '5m', ticker_history) == (False, True) @@ -33,14 +33,14 @@ def test_returns_latest_buy_signal(mocker, default_conf, ticker_history): def test_returns_latest_sell_signal(mocker, default_conf, ticker_history): mocker.patch.object( - _STRATEGY, 'analyze_ticker', + _STRATEGY, '_analyze_ticker_int', return_value=DataFrame([{'sell': 1, 'buy': 0, 'date': arrow.utcnow()}]) ) assert _STRATEGY.get_signal('ETH/BTC', '5m', ticker_history) == (False, True) mocker.patch.object( - _STRATEGY, 'analyze_ticker', + _STRATEGY, '_analyze_ticker_int', return_value=DataFrame([{'sell': 0, 'buy': 1, 'date': arrow.utcnow()}]) ) assert _STRATEGY.get_signal('ETH/BTC', '5m', ticker_history) == (True, False) @@ -60,7 +60,7 @@ def test_get_signal_empty(default_conf, mocker, caplog): def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ticker_history): caplog.set_level(logging.INFO) mocker.patch.object( - _STRATEGY, 'analyze_ticker', + _STRATEGY, '_analyze_ticker_int', side_effect=ValueError('xyz') ) assert (False, False) == _STRATEGY.get_signal('foo', default_conf['ticker_interval'], @@ -71,7 +71,7 @@ def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ticker_hi def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ticker_history): caplog.set_level(logging.INFO) mocker.patch.object( - _STRATEGY, 'analyze_ticker', + _STRATEGY, '_analyze_ticker_int', return_value=DataFrame([]) ) assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], @@ -86,7 +86,7 @@ def test_get_signal_old_dataframe(default_conf, mocker, caplog, ticker_history): oldtime = arrow.utcnow().shift(minutes=-16) ticks = DataFrame([{'buy': 1, 'date': oldtime}]) mocker.patch.object( - _STRATEGY, 'analyze_ticker', + _STRATEGY, '_analyze_ticker_int', return_value=DataFrame(ticks) ) assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], @@ -252,7 +252,7 @@ def test_analyze_ticker_default(ticker_history, mocker, caplog) -> None: caplog.record_tuples) -def test_analyze_ticker_skip_analyze(ticker_history, mocker, caplog) -> None: +def test__analyze_ticker_int_skip_analyze(ticker_history, mocker, caplog) -> None: caplog.set_level(logging.DEBUG) ind_mock = MagicMock(side_effect=lambda x, meta: x) buy_mock = MagicMock(side_effect=lambda x, meta: x) @@ -267,7 +267,7 @@ def test_analyze_ticker_skip_analyze(ticker_history, mocker, caplog) -> None: strategy = DefaultStrategy({}) strategy.process_only_new_candles = True - ret = strategy.analyze_ticker(ticker_history, {'pair': 'ETH/BTC'}) + ret = strategy._analyze_ticker_int(ticker_history, {'pair': 'ETH/BTC'}) assert 'high' in ret.columns assert 'low' in ret.columns assert 'close' in ret.columns @@ -280,7 +280,7 @@ def test_analyze_ticker_skip_analyze(ticker_history, mocker, caplog) -> None: caplog.record_tuples) caplog.clear() - ret = strategy.analyze_ticker(ticker_history, {'pair': 'ETH/BTC'}) + ret = strategy._analyze_ticker_int(ticker_history, {'pair': 'ETH/BTC'}) # No analysis happens as process_only_new_candles is true assert ind_mock.call_count == 1 assert buy_mock.call_count == 1 From 62262d0bb50a398c09e4d9f31f5f6ab9176f972c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 4 Aug 2019 10:21:22 +0200 Subject: [PATCH 0102/3421] improve docstring of _analyze_ticker_int --- freqtrade/strategy/interface.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 5bd183fa9..48a4f96a2 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -172,7 +172,9 @@ class IStrategy(ABC): """ Parses the given ticker history and returns a populated DataFrame add several TA indicators and buy signal to it - Used internally, may skip analysis if `process_only_new_candles` is set. + WARNING: Used internally only, may skip analysis if `process_only_new_candles` is set. + :param dataframe: Dataframe containing ticker data + :param metadata: Metadata dictionary with additional data (e.g. 'pair') :return: DataFrame with ticker data and indicator data """ From e4380b533bc4515cd6fc227690d7efb77b945d12 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 4 Aug 2019 10:25:46 +0200 Subject: [PATCH 0103/3421] Print plot filename so it can be easily opened --- freqtrade/plot/plotting.py | 5 +++-- freqtrade/tests/test_plotting.py | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 5c9c6e457..d03d3ae53 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -318,6 +318,7 @@ def store_plot_file(fig, filename: str, auto_open: bool = False) -> None: """ Path("user_data/plots").mkdir(parents=True, exist_ok=True) - - plot(fig, filename=str(Path('user_data/plots').joinpath(filename)), + _filename = Path('user_data/plots').joinpath(filename) + plot(fig, filename=str(_filename), auto_open=auto_open) + logger.info(f"Stored plot as {_filename}") diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index 509bf7880..f9da773fe 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -215,6 +215,8 @@ def test_generate_plot_file(mocker, caplog): assert plot_mock.call_args[0][0] == fig assert (plot_mock.call_args_list[0][1]['filename'] == "user_data/plots/freqtrade-plot-UNITTEST_BTC-5m.html") + assert log_has("Stored plot as user_data/plots/freqtrade-plot-UNITTEST_BTC-5m.html", + caplog.record_tuples) def test_add_profit(): From c5ccf44750d70cc670671ea50af19d710468b97e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 4 Aug 2019 10:26:04 +0200 Subject: [PATCH 0104/3421] Remove generate_dataframe from plot_dataframe script --- scripts/plot_dataframe.py | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/scripts/plot_dataframe.py b/scripts/plot_dataframe.py index 034a6f448..6412c45a4 100755 --- a/scripts/plot_dataframe.py +++ b/scripts/plot_dataframe.py @@ -16,8 +16,6 @@ import logging import sys from typing import Any, Dict, List -import pandas as pd - from freqtrade.configuration import Arguments from freqtrade.configuration.arguments import ARGS_PLOT_DATAFRAME from freqtrade.data.btanalysis import extract_trades_of_period @@ -30,20 +28,6 @@ from freqtrade.state import RunMode logger = logging.getLogger(__name__) -def generate_dataframe(strategy, tickers, pair) -> pd.DataFrame: - """ - Get tickers then Populate strategy indicators and signals, then return the full dataframe - :return: the DataFrame of a pair - """ - - dataframes = strategy.tickerdata_to_dataframe(tickers) - dataframe = dataframes[pair] - dataframe = strategy.advise_buy(dataframe, {'pair': pair}) - dataframe = strategy.advise_sell(dataframe, {'pair': pair}) - - return dataframe - - def analyse_and_plot_pairs(config: Dict[str, Any]): """ From arguments provided in cli: @@ -57,6 +41,7 @@ def analyse_and_plot_pairs(config: Dict[str, Any]): """ plot_elements = init_plotscript(config) trades = plot_elements['trades'] + strategy = plot_elements["strategy"] pair_counter = 0 for pair, data in plot_elements["tickers"].items(): @@ -64,7 +49,8 @@ def analyse_and_plot_pairs(config: Dict[str, Any]): logger.info("analyse pair %s", pair) tickers = {} tickers[pair] = data - dataframe = generate_dataframe(plot_elements["strategy"], tickers, pair) + + dataframe = strategy.analyze_ticker(tickers[pair], {'pair': pair}) trades_pair = trades.loc[trades['pair'] == pair] trades_pair = extract_trades_of_period(dataframe, trades_pair) From 4d1ce8178c8abc55488932f07b20055c08497312 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 4 Aug 2019 10:38:37 +0200 Subject: [PATCH 0105/3421] intend if to be clearer --- freqtrade/data/btanalysis.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 6568fe31e..36d8aedbb 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -93,8 +93,8 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: t.close_date.replace(tzinfo=pytz.UTC) if t.close_date else None, t.calc_profit(), t.calc_profit_percent(), t.open_rate, t.close_rate, t.amount, - t.close_date.timestamp() - t.open_date.timestamp() - if t.close_date else None, + (t.close_date.timestamp() - t.open_date.timestamp() + if t.close_date else None), t.sell_reason, t.fee_open, t.fee_close, t.open_rate_requested, From 2af663dccbd4fe395984125778729d5c968df087 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 4 Aug 2019 12:55:03 +0200 Subject: [PATCH 0106/3421] rename _analyze_ticker_int to _analyze_ticker_internal --- freqtrade/strategy/interface.py | 4 ++-- freqtrade/tests/strategy/test_interface.py | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 48a4f96a2..37aa97bb1 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -168,7 +168,7 @@ class IStrategy(ABC): dataframe = self.advise_sell(dataframe, metadata) return dataframe - def _analyze_ticker_int(self, dataframe: DataFrame, metadata: dict) -> DataFrame: + def _analyze_ticker_internal(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Parses the given ticker history and returns a populated DataFrame add several TA indicators and buy signal to it @@ -212,7 +212,7 @@ class IStrategy(ABC): return False, False try: - dataframe = self._analyze_ticker_int(dataframe, {'pair': pair}) + dataframe = self._analyze_ticker_internal(dataframe, {'pair': pair}) except ValueError as error: logger.warning( 'Unable to analyze ticker for pair %s: %s', diff --git a/freqtrade/tests/strategy/test_interface.py b/freqtrade/tests/strategy/test_interface.py index 6bf3770c5..9f5ab70e3 100644 --- a/freqtrade/tests/strategy/test_interface.py +++ b/freqtrade/tests/strategy/test_interface.py @@ -19,13 +19,13 @@ _STRATEGY = DefaultStrategy(config={}) def test_returns_latest_buy_signal(mocker, default_conf, ticker_history): mocker.patch.object( - _STRATEGY, '_analyze_ticker_int', + _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame([{'buy': 1, 'sell': 0, 'date': arrow.utcnow()}]) ) assert _STRATEGY.get_signal('ETH/BTC', '5m', ticker_history) == (True, False) mocker.patch.object( - _STRATEGY, '_analyze_ticker_int', + _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame([{'buy': 0, 'sell': 1, 'date': arrow.utcnow()}]) ) assert _STRATEGY.get_signal('ETH/BTC', '5m', ticker_history) == (False, True) @@ -33,14 +33,14 @@ def test_returns_latest_buy_signal(mocker, default_conf, ticker_history): def test_returns_latest_sell_signal(mocker, default_conf, ticker_history): mocker.patch.object( - _STRATEGY, '_analyze_ticker_int', + _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame([{'sell': 1, 'buy': 0, 'date': arrow.utcnow()}]) ) assert _STRATEGY.get_signal('ETH/BTC', '5m', ticker_history) == (False, True) mocker.patch.object( - _STRATEGY, '_analyze_ticker_int', + _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame([{'sell': 0, 'buy': 1, 'date': arrow.utcnow()}]) ) assert _STRATEGY.get_signal('ETH/BTC', '5m', ticker_history) == (True, False) @@ -60,7 +60,7 @@ def test_get_signal_empty(default_conf, mocker, caplog): def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ticker_history): caplog.set_level(logging.INFO) mocker.patch.object( - _STRATEGY, '_analyze_ticker_int', + _STRATEGY, '_analyze_ticker_internal', side_effect=ValueError('xyz') ) assert (False, False) == _STRATEGY.get_signal('foo', default_conf['ticker_interval'], @@ -71,7 +71,7 @@ def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ticker_hi def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ticker_history): caplog.set_level(logging.INFO) mocker.patch.object( - _STRATEGY, '_analyze_ticker_int', + _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame([]) ) assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], @@ -86,7 +86,7 @@ def test_get_signal_old_dataframe(default_conf, mocker, caplog, ticker_history): oldtime = arrow.utcnow().shift(minutes=-16) ticks = DataFrame([{'buy': 1, 'date': oldtime}]) mocker.patch.object( - _STRATEGY, '_analyze_ticker_int', + _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame(ticks) ) assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], @@ -252,7 +252,7 @@ def test_analyze_ticker_default(ticker_history, mocker, caplog) -> None: caplog.record_tuples) -def test__analyze_ticker_int_skip_analyze(ticker_history, mocker, caplog) -> None: +def test__analyze_ticker_internal_skip_analyze(ticker_history, mocker, caplog) -> None: caplog.set_level(logging.DEBUG) ind_mock = MagicMock(side_effect=lambda x, meta: x) buy_mock = MagicMock(side_effect=lambda x, meta: x) @@ -267,7 +267,7 @@ def test__analyze_ticker_int_skip_analyze(ticker_history, mocker, caplog) -> Non strategy = DefaultStrategy({}) strategy.process_only_new_candles = True - ret = strategy._analyze_ticker_int(ticker_history, {'pair': 'ETH/BTC'}) + ret = strategy._analyze_ticker_internal(ticker_history, {'pair': 'ETH/BTC'}) assert 'high' in ret.columns assert 'low' in ret.columns assert 'close' in ret.columns @@ -280,7 +280,7 @@ def test__analyze_ticker_int_skip_analyze(ticker_history, mocker, caplog) -> Non caplog.record_tuples) caplog.clear() - ret = strategy._analyze_ticker_int(ticker_history, {'pair': 'ETH/BTC'}) + ret = strategy._analyze_ticker_internal(ticker_history, {'pair': 'ETH/BTC'}) # No analysis happens as process_only_new_candles is true assert ind_mock.call_count == 1 assert buy_mock.call_count == 1 From 9cbab35de01db7338563d4a029d4c62d7cbd9fe7 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 4 Aug 2019 22:54:19 +0300 Subject: [PATCH 0107/3421] colorization by means of termcolor and colorama --- freqtrade/misc.py | 12 ------------ freqtrade/optimize/hyperopt.py | 12 ++++++++---- requirements-common.txt | 4 ++++ 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index eadfc7490..05946e008 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -113,15 +113,3 @@ def deep_merge_dicts(source, destination): destination[key] = value return destination - - -def green(s): - return '\033[92m' + s + '\033[0m' - - -def red(s): - return '\033[91m' + s + '\033[0m' - - -def bold(s): - return '\033[1m' + s + '\033[0m' diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index e62cbe66b..fc0fb56b2 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -13,14 +13,15 @@ from pathlib import Path from pprint import pprint from typing import Any, Dict, List, Optional +from colorama import init as colorama_init from joblib import Parallel, delayed, dump, load, wrap_non_picklable_objects, cpu_count from pandas import DataFrame from skopt import Optimizer from skopt.space import Dimension +from termcolor import colored from freqtrade.configuration import Arguments from freqtrade.data.history import load_data, get_timeframe -from freqtrade.misc import green, red, bold from freqtrade.optimize.backtesting import Backtesting # Import IHyperOptLoss to allow users import from this file from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss # noqa: F4 @@ -162,11 +163,11 @@ class Hyperopt(Backtesting): # Colorize output if self.config.get('print_colorized', False): if results['total_profit'] > 0: - log_str = bold(log_str) + log_str = colored(log_str, attrs=['bold']) if results['loss'] >= MAX_LOSS: - log_str = red(log_str) + log_str = colored(log_str, 'red') elif is_best_loss: - log_str = green(log_str) + log_str = colored(log_str, 'green') if print_all: print(log_str) else: @@ -353,6 +354,9 @@ class Hyperopt(Backtesting): logger.info(f'Number of parallel jobs set as: {config_jobs}') opt = self.get_optimizer(config_jobs) + + colorama_init() + try: with Parallel(n_jobs=config_jobs) as parallel: jobs = parallel._effective_n_jobs() diff --git a/requirements-common.txt b/requirements-common.txt index 2e52b84ad..b0c4c6729 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -30,3 +30,7 @@ sdnotify==0.3.2 # Api server flask==1.1.1 + +# Support for colorized terminal output +termcolor==1.1.0 +colorama==0.4.1 From c6444a10a8463530a75dfaa8d4a2f94fee849e38 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 5 Aug 2019 17:54:53 +0300 Subject: [PATCH 0108/3421] move roi_space, stoploss_space, generate_roi_table to IHyperOpt --- docs/hyperopt.md | 56 ++++++++++++++++++++---- freqtrade/optimize/default_hyperopt.py | 38 +--------------- freqtrade/optimize/hyperopt_interface.py | 52 ++++++++++++++++------ user_data/hyperopts/sample_hyperopt.py | 55 +++++------------------ 4 files changed, 99 insertions(+), 102 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 0b5d1a50e..0304c3188 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -18,19 +18,24 @@ Configuring hyperopt is similar to writing your own strategy, and many tasks wil ### Checklist on all tasks / possibilities in hyperopt -Depending on the space you want to optimize, only some of the below are required. +Depending on the space you want to optimize, only some of the below are required: * fill `populate_indicators` - probably a copy from your strategy * fill `buy_strategy_generator` - for buy signal optimization * fill `indicator_space` - for buy signal optimzation * fill `sell_strategy_generator` - for sell signal optimization * fill `sell_indicator_space` - for sell signal optimzation -* fill `roi_space` - for ROI optimization -* fill `generate_roi_table` - for ROI optimization (if you need more than 3 entries) -* fill `stoploss_space` - stoploss optimization -* Optional but recommended - * copy `populate_buy_trend` from your strategy - otherwise default-strategy will be used - * copy `populate_sell_trend` from your strategy - otherwise default-strategy will be used + +Optional, but recommended: + +* copy `populate_buy_trend` from your strategy - otherwise default-strategy will be used +* copy `populate_sell_trend` from your strategy - otherwise default-strategy will be used + +Rarely you may also need to override: + +* `roi_space` - for custom ROI optimization (if you need the ranges for the ROI parameters in the optimization hyperspace that differ from default) +* `generate_roi_table` - for custom ROI optimization (if you need more than 4 entries in the ROI table) +* `stoploss_space` - for custom stoploss optimization (if you need the range for the stoploss parameter in the optimization hyperspace that differs from default) ### 1. Install a Custom Hyperopt File @@ -345,7 +350,7 @@ def populate_buy_trend(self, dataframe: DataFrame) -> DataFrame: ### Understand Hyperopt ROI results -If you are optimizing ROI, you're result will look as follows and include a ROI table. +If you are optimizing ROI, your result will look as follows and include a ROI table: ``` Best result: @@ -376,6 +381,41 @@ minimal_roi = { } ``` +If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps) with the values that can vary in the following ranges: + +| # | minutes | ROI percentage | +|---|---|---| +| 1 | always 0 | 0.03...0.31 | +| 2 | 10...40 | 0.02...0.11 | +| 3 | 20...100 | 0.01...0.04 | +| 4 | 30...220 | always 0 | + +This structure of the ROI table is sufficient in most cases. Override the `roi_space()` method defining the ranges desired if you need components of the ROI tables to vary in other ranges. + +Override the `generate_roi_table()` and `roi_space()` methods and implement your own custom approach for generation of the ROI tables during hyperoptimization in these methods if you need a different structure of the ROI table or other amount of rows (steps) in the ROI tables. + +### Understand Hyperopt Stoploss results + +If you are optimizing stoploss values, your result will look as follows and include stoploss: + +``` +Best result: + + 44/100: 135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins. Objective: 1.94367 + +Buy hyperspace params: +{ 'adx-value': 44, + 'rsi-value': 29, + 'adx-enabled': False, + 'rsi-enabled': True, + 'trigger': 'bb_lower'} +Stoploss: -0.37996664668703606 +``` + +If you are optimizing stoploss values, Freqtrade creates the 'stoploss' optimization hyperspace for you. By default, the stoploss values in that hyperspace can vary in the range -0.5...-0.02, which is sufficient in most cases. + +Override the `stoploss_space()` method and define the desired range in it if you need stoploss values to vary in other range during hyperoptimization. + ### Validate backtesting results Once the optimized strategy has been implemented into your strategy, you should backtest this strategy to make sure everything is working as expected. diff --git a/freqtrade/optimize/default_hyperopt.py b/freqtrade/optimize/default_hyperopt.py index ad76ff786..1d4c40916 100644 --- a/freqtrade/optimize/default_hyperopt.py +++ b/freqtrade/optimize/default_hyperopt.py @@ -5,7 +5,7 @@ from typing import Any, Callable, Dict, List import talib.abstract as ta from pandas import DataFrame -from skopt.space import Categorical, Dimension, Integer, Real +from skopt.space import Categorical, Dimension, Integer import freqtrade.vendor.qtpylib.indicators as qtpylib from freqtrade.optimize.hyperopt_interface import IHyperOpt @@ -156,42 +156,6 @@ class DefaultHyperOpts(IHyperOpt): 'sell-sar_reversal'], name='sell-trigger') ] - @staticmethod - def generate_roi_table(params: Dict) -> Dict[int, float]: - """ - Generate the ROI table that will be used by Hyperopt - """ - roi_table = {} - roi_table[0] = params['roi_p1'] + params['roi_p2'] + params['roi_p3'] - roi_table[params['roi_t3']] = params['roi_p1'] + params['roi_p2'] - roi_table[params['roi_t3'] + params['roi_t2']] = params['roi_p1'] - roi_table[params['roi_t3'] + params['roi_t2'] + params['roi_t1']] = 0 - - return roi_table - - @staticmethod - def stoploss_space() -> List[Dimension]: - """ - Stoploss Value to search - """ - return [ - Real(-0.5, -0.02, name='stoploss'), - ] - - @staticmethod - def roi_space() -> List[Dimension]: - """ - Values to search for each ROI steps - """ - return [ - Integer(10, 120, name='roi_t1'), - Integer(10, 60, name='roi_t2'), - Integer(10, 40, name='roi_t3'), - Real(0.01, 0.04, name='roi_p1'), - Real(0.01, 0.07, name='roi_p2'), - Real(0.01, 0.20, name='roi_p3'), - ] - def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Based on TA indicators. Should be a copy of from strategy diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 08823ece0..f1f123653 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -7,7 +7,7 @@ from abc import ABC, abstractmethod from typing import Dict, Any, Callable, List from pandas import DataFrame -from skopt.space import Dimension +from skopt.space import Dimension, Integer, Real class IHyperOpt(ABC): @@ -26,56 +26,80 @@ class IHyperOpt(ABC): @abstractmethod def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Populate indicators that will be used in the Buy and Sell strategy - :param dataframe: Raw data from the exchange and parsed by parse_ticker_dataframe() - :return: a Dataframe with all mandatory indicators for the strategies + Populate indicators that will be used in the Buy and Sell strategy. + :param dataframe: Raw data from the exchange and parsed by parse_ticker_dataframe(). + :return: A Dataframe with all mandatory indicators for the strategies. """ @staticmethod @abstractmethod def buy_strategy_generator(params: Dict[str, Any]) -> Callable: """ - Create a buy strategy generator + Create a buy strategy generator. """ @staticmethod @abstractmethod def sell_strategy_generator(params: Dict[str, Any]) -> Callable: """ - Create a sell strategy generator + Create a sell strategy generator. """ @staticmethod @abstractmethod def indicator_space() -> List[Dimension]: """ - Create an indicator space + Create an indicator space. """ @staticmethod @abstractmethod def sell_indicator_space() -> List[Dimension]: """ - Create a sell indicator space + Create a sell indicator space. """ @staticmethod - @abstractmethod def generate_roi_table(params: Dict) -> Dict[int, float]: """ - Create an roi table + Create a ROI table. + + Generates the ROI table that will be used by Hyperopt. + You may override it in your custom Hyperopt class. """ + roi_table = {} + roi_table[0] = params['roi_p1'] + params['roi_p2'] + params['roi_p3'] + roi_table[params['roi_t3']] = params['roi_p1'] + params['roi_p2'] + roi_table[params['roi_t3'] + params['roi_t2']] = params['roi_p1'] + roi_table[params['roi_t3'] + params['roi_t2'] + params['roi_t1']] = 0 + + return roi_table @staticmethod - @abstractmethod def stoploss_space() -> List[Dimension]: """ - Create a stoploss space + Create a stoploss space. + + Defines range of stoploss values to search. + You may override it in your custom Hyperopt class. """ + return [ + Real(-0.5, -0.02, name='stoploss'), + ] @staticmethod - @abstractmethod def roi_space() -> List[Dimension]: """ - Create a roi space + Create a ROI space. + + Defines values to search for each ROI steps. + You may override it in your custom Hyperopt class. """ + return [ + Integer(10, 120, name='roi_t1'), + Integer(10, 60, name='roi_t2'), + Integer(10, 40, name='roi_t3'), + Real(0.01, 0.04, name='roi_p1'), + Real(0.01, 0.07, name='roi_p2'), + Real(0.01, 0.20, name='roi_p3'), + ] diff --git a/user_data/hyperopts/sample_hyperopt.py b/user_data/hyperopts/sample_hyperopt.py index a78906cf3..9a755e52e 100644 --- a/user_data/hyperopts/sample_hyperopt.py +++ b/user_data/hyperopts/sample_hyperopt.py @@ -18,14 +18,19 @@ from freqtrade.optimize.hyperopt_interface import IHyperOpt class SampleHyperOpts(IHyperOpt): """ This is a test hyperopt to inspire you. + More information in https://github.com/freqtrade/freqtrade/blob/develop/docs/hyperopt.md - You can: - - Rename the class name (Do not forget to update class_name) - - Add any methods you want to build your hyperopt - - Add any lib you need to build your hyperopt - You must keep: - - the prototype for the methods: populate_indicators, indicator_space, buy_strategy_generator, - roi_space, generate_roi_table, stoploss_space + + You can: + - Rename the class name. + - Add any methods you want to build your hyperopt. + - Add any lib you need to build your hyperopt. + + You must keep: + - The prototypes for the methods: populate_indicators, indicator_space, buy_strategy_generator. + + The roi_space, generate_roi_table, stoploss_space methods were moved to the parent class, you may + override them here if you need it. """ @staticmethod @@ -167,42 +172,6 @@ class SampleHyperOpts(IHyperOpt): 'sell-sar_reversal'], name='sell-trigger') ] - @staticmethod - def generate_roi_table(params: Dict) -> Dict[int, float]: - """ - Generate the ROI table that will be used by Hyperopt - """ - roi_table = {} - roi_table[0] = params['roi_p1'] + params['roi_p2'] + params['roi_p3'] - roi_table[params['roi_t3']] = params['roi_p1'] + params['roi_p2'] - roi_table[params['roi_t3'] + params['roi_t2']] = params['roi_p1'] - roi_table[params['roi_t3'] + params['roi_t2'] + params['roi_t1']] = 0 - - return roi_table - - @staticmethod - def stoploss_space() -> List[Dimension]: - """ - Stoploss Value to search - """ - return [ - Real(-0.5, -0.02, name='stoploss'), - ] - - @staticmethod - def roi_space() -> List[Dimension]: - """ - Values to search for each ROI steps - """ - return [ - Integer(10, 120, name='roi_t1'), - Integer(10, 60, name='roi_t2'), - Integer(10, 40, name='roi_t3'), - Real(0.01, 0.04, name='roi_p1'), - Real(0.01, 0.07, name='roi_p2'), - Real(0.01, 0.20, name='roi_p3'), - ] - def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Based on TA indicators. Should be a copy of from strategy From 9914198a6c90bcd92b5702115c984ec66cb7faa5 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 5 Aug 2019 15:26:09 +0000 Subject: [PATCH 0109/3421] Update ccxt from 1.18.992 to 1.18.1008 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 2e52b84ad..dcc3be754 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.992 +ccxt==1.18.1008 SQLAlchemy==1.3.6 python-telegram-bot==11.1.0 arrow==0.14.3 From 187d029d204adf2403d02d57781a94772d6b2891 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 5 Aug 2019 15:26:10 +0000 Subject: [PATCH 0110/3421] Update arrow from 0.14.3 to 0.14.4 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index dcc3be754..675a28d6a 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -3,7 +3,7 @@ ccxt==1.18.1008 SQLAlchemy==1.3.6 python-telegram-bot==11.1.0 -arrow==0.14.3 +arrow==0.14.4 cachetools==3.1.1 requests==2.22.0 urllib3==1.24.2 # pyup: ignore From 930c25f7f113f1354b056eea772af36cdcf988cb Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 5 Aug 2019 15:26:11 +0000 Subject: [PATCH 0111/3421] Update scikit-learn from 0.21.2 to 0.21.3 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 675a28d6a..f03a90927 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -8,7 +8,7 @@ cachetools==3.1.1 requests==2.22.0 urllib3==1.24.2 # pyup: ignore wrapt==1.11.2 -scikit-learn==0.21.2 +scikit-learn==0.21.3 joblib==0.13.2 jsonschema==3.0.1 TA-Lib==0.4.17 From 403f7668d5e300db1c3a7f26d65a781be3a3dcaf Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 5 Aug 2019 15:26:16 +0000 Subject: [PATCH 0112/3421] Update jsonschema from 3.0.1 to 3.0.2 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index f03a90927..b90c13cec 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -10,7 +10,7 @@ urllib3==1.24.2 # pyup: ignore wrapt==1.11.2 scikit-learn==0.21.3 joblib==0.13.2 -jsonschema==3.0.1 +jsonschema==3.0.2 TA-Lib==0.4.17 tabulate==0.8.3 coinmarketcap==5.0.3 From d71102c45ad89a62ec6423a53d6f092f628262cc Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 5 Aug 2019 15:26:17 +0000 Subject: [PATCH 0113/3421] Update py_find_1st from 1.1.3 to 1.1.4 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index b90c13cec..7280dfc6e 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -20,7 +20,7 @@ scikit-optimize==0.5.2 filelock==3.0.12 # find first, C search in arrays -py_find_1st==1.1.3 +py_find_1st==1.1.4 #Load ticker files 30% faster python-rapidjson==0.7.2 From 5e64d629a3c338ff9684c60bb7ec612c47a7a362 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 5 Aug 2019 15:26:19 +0000 Subject: [PATCH 0114/3421] Update coveralls from 1.8.1 to 1.8.2 --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index f54b38a57..03b37417e 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,7 +2,7 @@ -r requirements.txt -r requirements-plot.txt -coveralls==1.8.1 +coveralls==1.8.2 flake8==3.7.8 flake8-type-annotations==0.1.0 flake8-tidy-imports==2.0.0 From 904381058c2394248238f2d9aed5c86c9f271ab1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Aug 2019 19:25:43 +0200 Subject: [PATCH 0115/3421] Add documentation for conda install --- docs/installation.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/installation.md b/docs/installation.md index 74b3a3202..589d3fe7f 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -219,6 +219,17 @@ as the watchdog. ------ +## Using Conda + +Freqtrade can also be installed using Anaconda (or Miniconda). + +``` bash +conda env create -f environment.yml +``` + +!!! Note: + This requires the [ta-lib](#1-install-ta-lib) C-library to be installed first. + ## Windows We recommend that Windows users use [Docker](docker.md) as this will work much easier and smoother (also more secure). From 3721610a6321f3ec423a4ccf3968b1b64214e260 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Aug 2019 20:06:42 +0200 Subject: [PATCH 0116/3421] Add new detailed trade-scenario tests covers cases raised in #1971 --- .../tests/optimize/test_backtest_detail.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/freqtrade/tests/optimize/test_backtest_detail.py b/freqtrade/tests/optimize/test_backtest_detail.py index 402e22391..bc58b5ae4 100644 --- a/freqtrade/tests/optimize/test_backtest_detail.py +++ b/freqtrade/tests/optimize/test_backtest_detail.py @@ -224,6 +224,53 @@ tc12 = BTContainer(data=[ trades=[BTrade(sell_reason=SellType.TRAILING_STOP_LOSS, open_tick=1, close_tick=2)] ) +# Test 13 - Buy and sell ROI on same candle +# Set stop-loss at 10% (should not apply), ROI at 1% +tc13 = BTContainer(data=[ + # D O H L C V B S + [0, 5000, 5050, 4950, 5000, 6172, 1, 0], + [1, 5000, 5100, 4950, 5100, 6172, 0, 0], + [2, 5100, 5251, 4850, 5100, 6172, 0, 0], + [3, 4850, 5050, 4850, 4750, 6172, 0, 0], + [4, 4750, 4950, 4850, 4750, 6172, 0, 0]], + stop_loss=-0.10, roi=0.01, profit_perc=0.01, trailing_stop=False, + trailing_only_offset_is_reached=False, trailing_stop_positive_offset=0.05, + trailing_stop_positive=0.03, + trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=1)] +) + +# Test 14 - Buy and Stoploss on same candle +# Set stop-loss at 5%, ROI at 10% (should not apply) +tc14 = BTContainer(data=[ + # D O H L C V B S + [0, 5000, 5050, 4950, 5000, 6172, 1, 0], + [1, 5000, 5100, 4600, 5100, 6172, 0, 0], + [2, 5100, 5251, 4850, 5100, 6172, 0, 0], + [3, 4850, 5050, 4850, 4750, 6172, 0, 0], + [4, 4750, 4950, 4350, 4750, 6172, 0, 0]], + stop_loss=-0.05, roi=0.10, profit_perc=-0.05, trailing_stop=False, + trailing_only_offset_is_reached=False, trailing_stop_positive_offset=0.05, + trailing_stop_positive=0.03, + trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=1)] +) + + +# Test 15 - Buy and ROI on same candle, followed by buy and Stoploss on next candle +# Set stop-loss at 5%, ROI at 10% (should not apply) +tc15 = BTContainer(data=[ + # D O H L C V B S + [0, 5000, 5050, 4950, 5000, 6172, 1, 0], + [1, 5000, 5100, 4900, 5100, 6172, 1, 0], + [2, 5100, 5251, 4650, 5100, 6172, 0, 0], + [3, 4850, 5050, 4850, 4750, 6172, 0, 0], + [4, 4750, 4950, 4350, 4750, 6172, 0, 0]], + stop_loss=-0.05, roi=0.01, profit_perc=-0.04, trailing_stop=False, + trailing_only_offset_is_reached=False, trailing_stop_positive_offset=0.05, + trailing_stop_positive=0.03, + trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=1), + BTrade(sell_reason=SellType.STOP_LOSS, open_tick=2, close_tick=2)] +) + TESTS = [ tc0, tc1, @@ -238,6 +285,9 @@ TESTS = [ tc10, tc11, tc12, + tc13, + tc14, + tc15, ] From bc2e920ae2bde9fc0483cc336402507a147dad84 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Aug 2019 20:07:29 +0200 Subject: [PATCH 0117/3421] Adjust code to verify "current" candle for buy/sells --- freqtrade/optimize/backtesting.py | 4 +++- freqtrade/tests/optimize/test_backtesting.py | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 429633f31..dcccd36a3 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -373,7 +373,9 @@ class Backtesting(object): continue trade_count_lock[row.date] = trade_count_lock.get(row.date, 0) + 1 - trade_entry = self._get_sell_trade_entry(pair, row, ticker[pair][indexes[pair]:], + # since indexes has been incremented before, we need to go one step back to + # also check the buying candle for sell conditions. + trade_entry = self._get_sell_trade_entry(pair, row, ticker[pair][indexes[pair]-1:], trade_count_lock, stake_amount, max_open_trades) diff --git a/freqtrade/tests/optimize/test_backtesting.py b/freqtrade/tests/optimize/test_backtesting.py index 37757743e..59679d1a2 100644 --- a/freqtrade/tests/optimize/test_backtesting.py +++ b/freqtrade/tests/optimize/test_backtesting.py @@ -618,8 +618,9 @@ def test_processed(default_conf, mocker) -> None: def test_backtest_pricecontours(default_conf, fee, mocker) -> None: + # TODO: Evaluate usefullness of this, the patterns and buy-signls are unrealistic mocker.patch('freqtrade.exchange.Exchange.get_fee', fee) - tests = [['raise', 19], ['lower', 0], ['sine', 18]] + tests = [['raise', 19], ['lower', 0], ['sine', 35]] # We need to enable sell-signal - otherwise it sells on ROI!! default_conf['experimental'] = {"use_sell_signal": True} From c7d032975471072932ebfdaa169a10a2a7b4ec86 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Aug 2019 20:19:19 +0200 Subject: [PATCH 0118/3421] Clean up comments of detail-backtests --- .../tests/optimize/test_backtest_detail.py | 86 ++++++++----------- 1 file changed, 34 insertions(+), 52 deletions(-) diff --git a/freqtrade/tests/optimize/test_backtest_detail.py b/freqtrade/tests/optimize/test_backtest_detail.py index bc58b5ae4..87f567b4f 100644 --- a/freqtrade/tests/optimize/test_backtest_detail.py +++ b/freqtrade/tests/optimize/test_backtest_detail.py @@ -14,9 +14,8 @@ from freqtrade.tests.optimize import (BTContainer, BTrade, _get_frame_time_from_offset, tests_ticker_interval) -# Test 0 Sell signal sell +# Test 0: Sell with signal sell in candle 3 # Test with Stop-loss at 1% -# TC0: Sell signal in candle 3 tc0 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5025, 4975, 4987, 6172, 1, 0], @@ -29,9 +28,8 @@ tc0 = BTContainer(data=[ trades=[BTrade(sell_reason=SellType.SELL_SIGNAL, open_tick=1, close_tick=4)] ) -# Test 1 Minus 8% Close +# Test 1: Stop-Loss Triggered 1% loss # Test with Stop-loss at 1% -# TC1: Stop-Loss Triggered 1% loss tc1 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5025, 4975, 4987, 6172, 1, 0], @@ -45,9 +43,8 @@ tc1 = BTContainer(data=[ ) -# Test 2 Minus 4% Low, minus 1% close +# Test 2: Minus 4% Low, minus 1% close # Test with Stop-Loss at 3% -# TC2: Stop-Loss Triggered 3% Loss tc2 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5025, 4975, 4987, 6172, 1, 0], @@ -61,12 +58,12 @@ tc2 = BTContainer(data=[ ) -# Test 3 Candle drops 4%, Recovers 1%. -# Entry Criteria Met -# Candle drops 20% -# Test with Stop-Loss at 2% -# TC3: Trade-A: Stop-Loss Triggered 2% Loss -# Trade-B: Stop-Loss Triggered 2% Loss +# Test 3: Multiple trades. +# Candle drops 4%, Recovers 1%. +# Entry Criteria Met +# Candle drops 20% +# Trade-A: Stop-Loss Triggered 2% Loss +# Trade-B: Stop-Loss Triggered 2% Loss tc3 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5025, 4975, 4987, 6172, 1, 0], @@ -81,10 +78,10 @@ tc3 = BTContainer(data=[ BTrade(sell_reason=SellType.STOP_LOSS, open_tick=4, close_tick=5)] ) -# Test 4 Minus 3% / recovery +15% +# Test 4: Minus 3% / recovery +15% # Candle Data for test 3 – Candle drops 3% Closed 15% up # Test with Stop-loss at 2% ROI 6% -# TC4: Stop-Loss Triggered 2% Loss +# Stop-Loss Triggered 2% Loss tc4 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5025, 4975, 4987, 6172, 1, 0], @@ -97,9 +94,8 @@ tc4 = BTContainer(data=[ trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=2)] ) -# Test 5 / Drops 0.5% Closes +20% -# Set stop-loss at 1% ROI 3% -# TC5: ROI triggers 3% Gain +# Test 5: Drops 0.5% Closes +20%, ROI triggers 3% Gain +# stop-loss: 1%, ROI: 3% tc5 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5025, 4980, 4987, 6172, 1, 0], @@ -112,9 +108,8 @@ tc5 = BTContainer(data=[ trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=3)] ) -# Test 6 / Drops 3% / Recovers 6% Positive / Closes 1% positve -# Set stop-loss at 2% ROI at 5% -# TC6: Stop-Loss triggers 2% Loss +# Test 6: Drops 3% / Recovers 6% Positive / Closes 1% positve, Stop-Loss triggers 2% Loss +# stop-loss: 2% ROI: 5% tc6 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5025, 4975, 4987, 6172, 1, 0], @@ -127,9 +122,8 @@ tc6 = BTContainer(data=[ trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=2)] ) -# Test 7 - 6% Positive / 1% Negative / Close 1% Positve -# Set stop-loss at 2% ROI at 3% -# TC7: ROI Triggers 3% Gain +# Test 7: 6% Positive / 1% Negative / Close 1% Positve, ROI Triggers 3% Gain +# stop-loss: 2% ROI: 3% tc7 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5025, 4975, 4987, 6172, 1, 0], @@ -143,9 +137,8 @@ tc7 = BTContainer(data=[ ) -# Test 8 - trailing_stop should raise so candle 3 causes a stoploss. -# Set stop-loss at 10%, ROI at 10% (should not apply) -# TC8: Trailing stoploss - stoploss should be adjusted candle 2 +# Test 8: trailing_stop should raise so candle 3 causes a stoploss. +# stop-loss: 10%, ROI: 10% (should not apply), stoploss adjusted in candle 2 tc8 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5050, 4950, 5000, 6172, 1, 0], @@ -158,10 +151,8 @@ tc8 = BTContainer(data=[ ) -# Test 9 - trailing_stop should raise - high and low in same candle. -# Candle Data for test 9 -# Set stop-loss at 10%, ROI at 10% (should not apply) -# TC9: Trailing stoploss - stoploss should be adjusted candle 3 +# Test 9: trailing_stop should raise - high and low in same candle. +# stop-loss: 10%, ROI: 10% (should not apply), stoploss adjusted in candle 3 tc9 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5050, 4950, 5000, 6172, 1, 0], @@ -173,10 +164,9 @@ tc9 = BTContainer(data=[ trades=[BTrade(sell_reason=SellType.TRAILING_STOP_LOSS, open_tick=1, close_tick=3)] ) -# Test 10 - trailing_stop should raise so candle 3 causes a stoploss +# Test 10: trailing_stop should raise so candle 3 causes a stoploss # without applying trailing_stop_positive since stoploss_offset is at 10%. -# Set stop-loss at 10%, ROI at 10% (should not apply) -# TC10: Trailing stoploss - stoploss should be adjusted candle 2 +# stop-loss: 10%, ROI: 10% (should not apply), stoploss adjusted candle 2 tc10 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5050, 4950, 5000, 6172, 1, 0], @@ -190,10 +180,9 @@ tc10 = BTContainer(data=[ trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=4)] ) -# Test 11 - trailing_stop should raise so candle 3 causes a stoploss +# Test 11: trailing_stop should raise so candle 3 causes a stoploss # applying a positive trailing stop of 3% since stop_positive_offset is reached. -# Set stop-loss at 10%, ROI at 10% (should not apply) -# TC11: Trailing stoploss - stoploss should be adjusted candle 2, +# stop-loss: 10%, ROI: 10% (should not apply), stoploss adjusted candle 2 tc11 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5050, 4950, 5000, 6172, 1, 0], @@ -207,10 +196,9 @@ tc11 = BTContainer(data=[ trades=[BTrade(sell_reason=SellType.TRAILING_STOP_LOSS, open_tick=1, close_tick=3)] ) -# Test 12 - trailing_stop should raise in candle 2 and cause a stoploss in the same candle +# Test 12: trailing_stop should raise in candle 2 and cause a stoploss in the same candle # applying a positive trailing stop of 3% since stop_positive_offset is reached. -# Set stop-loss at 10%, ROI at 10% (should not apply) -# TC12: Trailing stoploss - stoploss should be adjusted candle 2, +# stop-loss: 10%, ROI: 10% (should not apply), stoploss adjusted candle 2 tc12 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5050, 4950, 5000, 6172, 1, 0], @@ -224,8 +212,8 @@ tc12 = BTContainer(data=[ trades=[BTrade(sell_reason=SellType.TRAILING_STOP_LOSS, open_tick=1, close_tick=2)] ) -# Test 13 - Buy and sell ROI on same candle -# Set stop-loss at 10% (should not apply), ROI at 1% +# Test 13: Buy and sell ROI on same candle +# stop-loss: 10% (should not apply), ROI: 1% tc13 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5050, 4950, 5000, 6172, 1, 0], @@ -233,14 +221,12 @@ tc13 = BTContainer(data=[ [2, 5100, 5251, 4850, 5100, 6172, 0, 0], [3, 4850, 5050, 4850, 4750, 6172, 0, 0], [4, 4750, 4950, 4850, 4750, 6172, 0, 0]], - stop_loss=-0.10, roi=0.01, profit_perc=0.01, trailing_stop=False, - trailing_only_offset_is_reached=False, trailing_stop_positive_offset=0.05, - trailing_stop_positive=0.03, + stop_loss=-0.10, roi=0.01, profit_perc=0.01, trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=1)] ) # Test 14 - Buy and Stoploss on same candle -# Set stop-loss at 5%, ROI at 10% (should not apply) +# stop-loss: 5%, ROI: 10% (should not apply) tc14 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5050, 4950, 5000, 6172, 1, 0], @@ -248,15 +234,13 @@ tc14 = BTContainer(data=[ [2, 5100, 5251, 4850, 5100, 6172, 0, 0], [3, 4850, 5050, 4850, 4750, 6172, 0, 0], [4, 4750, 4950, 4350, 4750, 6172, 0, 0]], - stop_loss=-0.05, roi=0.10, profit_perc=-0.05, trailing_stop=False, - trailing_only_offset_is_reached=False, trailing_stop_positive_offset=0.05, - trailing_stop_positive=0.03, + stop_loss=-0.05, roi=0.10, profit_perc=-0.05, trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=1)] ) # Test 15 - Buy and ROI on same candle, followed by buy and Stoploss on next candle -# Set stop-loss at 5%, ROI at 10% (should not apply) +# stop-loss: 5%, ROI: 10% (should not apply) tc15 = BTContainer(data=[ # D O H L C V B S [0, 5000, 5050, 4950, 5000, 6172, 1, 0], @@ -264,9 +248,7 @@ tc15 = BTContainer(data=[ [2, 5100, 5251, 4650, 5100, 6172, 0, 0], [3, 4850, 5050, 4850, 4750, 6172, 0, 0], [4, 4750, 4950, 4350, 4750, 6172, 0, 0]], - stop_loss=-0.05, roi=0.01, profit_perc=-0.04, trailing_stop=False, - trailing_only_offset_is_reached=False, trailing_stop_positive_offset=0.05, - trailing_stop_positive=0.03, + stop_loss=-0.05, roi=0.01, profit_perc=-0.04, trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=1), BTrade(sell_reason=SellType.STOP_LOSS, open_tick=2, close_tick=2)] ) From 0376630f7ad156ec631d9da7ee03fa078022a922 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Aug 2019 20:25:20 +0200 Subject: [PATCH 0119/3421] Update urllib to latest version --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 2e52b84ad..475031660 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -6,7 +6,7 @@ python-telegram-bot==11.1.0 arrow==0.14.3 cachetools==3.1.1 requests==2.22.0 -urllib3==1.24.2 # pyup: ignore +urllib3==1.25.3 wrapt==1.11.2 scikit-learn==0.21.2 joblib==0.13.2 From 988a0245c28ca402186cd99c6f428eafaa719026 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 4 Jul 2019 20:27:42 +0200 Subject: [PATCH 0120/3421] Update install-script to use parameter Use --prefix /usr/local for install-script too --- .travis.yml | 14 +++++--------- build_helpers/install_ta-lib.sh | 10 ++++++++-- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/.travis.yml b/.travis.yml index b44fef7a1..a452d245b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,15 +10,11 @@ services: env: global: - IMAGE_NAME=freqtradeorg/freqtrade -addons: - apt: - packages: - - libelf-dev - - libdw-dev - - binutils-dev install: -- cd build_helpers && ./install_ta-lib.sh; cd .. -- export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH +- cd build_helpers && ./install_ta-lib.sh ${HOME}/dependencies/; cd .. +- export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH +- export TA_LIBRARY_PATH=${HOME}/dependencies/lib +- export TA_INCLUDE_PATH=${HOME}/dependencies/lib/include - pip install -r requirements-dev.txt - pip install -e . jobs: @@ -55,4 +51,4 @@ notifications: cache: pip: True directories: - - /usr/local/lib/ + - $HOME/dependencies diff --git a/build_helpers/install_ta-lib.sh b/build_helpers/install_ta-lib.sh index 9fe341bba..cb86e5f64 100755 --- a/build_helpers/install_ta-lib.sh +++ b/build_helpers/install_ta-lib.sh @@ -1,8 +1,14 @@ -if [ ! -f "/usr/local/lib/libta_lib.a" ]; then +if [ -z "$1" ]; then + INSTALL_LOC=/usr/local +else + INSTALL_LOC=${1} +fi +echo "Installing to ${INSTALL_LOC}" +if [ ! -f "${INSTALL_LOC}/lib/libta_lib.a" ]; then tar zxvf ta-lib-0.4.0-src.tar.gz cd ta-lib \ && sed -i.bak "s|0.00000001|0.000000000000000001 |g" src/ta_func/ta_utility.h \ - && ./configure \ + && ./configure --prefix=${INSTALL_LOC}/ \ && make \ && which sudo && sudo make install || make install \ && cd .. From 9d471f3c9a2260bfac1be01e4655fdf0226fe4f3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 6 Aug 2019 06:27:38 +0200 Subject: [PATCH 0121/3421] Fix documentation for strategy-list --- docs/backtesting.md | 10 +++++++++- docs/bot-usage.md | 2 +- freqtrade/configuration/cli_options.py | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 179bcee15..7e9f7ff53 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -57,7 +57,15 @@ freqtrade backtesting --datadir freqtrade/tests/testdata-20180101 freqtrade -s TestStrategy backtesting ``` -Where `-s TestStrategy` refers to the class name within the strategy file `test_strategy.py` found in the `freqtrade/user_data/strategies` directory +Where `-s TestStrategy` refers to the class name within the strategy file `test_strategy.py` found in the `freqtrade/user_data/strategies` directory. + +#### Comparing multiple Strategies + +```bash +freqtrade backtesting --strategy-list TestStrategy1 AwesomeStrategy --ticker-interval 5m +``` + +Where `TestStrategy1` and `AwesomeStrategy` refer to class names of strategies. #### Exporting trades to file diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 8877ed010..0ca2f3cc5 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -165,7 +165,7 @@ optional arguments: number). -l, --live Use live data. --strategy-list STRATEGY_LIST [STRATEGY_LIST ...] - Provide a commaseparated list of strategies to + Provide a space-separated list of strategies to backtest Please note that ticker-interval needs to be set either in config or via command line. When using this together with --export trades, the strategy-name diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 04fde2051..04554c386 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -130,7 +130,7 @@ AVAILABLE_CLI_OPTIONS = { ), "strategy_list": Arg( '--strategy-list', - help='Provide a comma-separated list of strategies to backtest. ' + help='Provide a space-separated list of strategies to backtest. ' 'Please note that ticker-interval needs to be set either in config ' 'or via command line. When using this together with `--export trades`, ' 'the strategy-name is injected into the filename ' From 7e91a0f4a85c0a6e66222e7a9245cf9a011eb755 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 6 Aug 2019 06:45:44 +0200 Subject: [PATCH 0122/3421] Fail gracefully if ticker-interval is not set --- freqtrade/optimize/backtesting.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 429633f31..43b44e376 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -10,8 +10,8 @@ from pathlib import Path from typing import Any, Dict, List, NamedTuple, Optional from pandas import DataFrame -from tabulate import tabulate +from freqtrade import OperationalException from freqtrade.configuration import Arguments from freqtrade.data import history from freqtrade.data.dataprovider import DataProvider @@ -21,6 +21,7 @@ from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.state import RunMode from freqtrade.strategy.interface import IStrategy, SellType +from tabulate import tabulate logger = logging.getLogger(__name__) @@ -88,6 +89,9 @@ class Backtesting(object): Load strategy into backtesting """ self.strategy = strategy + if "ticker_interval" not in self.config: + raise OperationalException("Ticker-interval needs to be set in either configuration " + "or as cli argument `--ticker-interval 5m`") self.ticker_interval = self.config.get('ticker_interval') self.ticker_interval_mins = timeframe_to_minutes(self.ticker_interval) From 81f773054de3e314908654a777c41f980eb2e8b6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 6 Aug 2019 06:56:08 +0200 Subject: [PATCH 0123/3421] Add test to verify ticker_inteval is set --- freqtrade/tests/optimize/test_backtesting.py | 22 ++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/freqtrade/tests/optimize/test_backtesting.py b/freqtrade/tests/optimize/test_backtesting.py index 37757743e..1ae1969f4 100644 --- a/freqtrade/tests/optimize/test_backtesting.py +++ b/freqtrade/tests/optimize/test_backtesting.py @@ -9,7 +9,7 @@ import pandas as pd import pytest from arrow import Arrow -from freqtrade import DependencyException, constants +from freqtrade import DependencyException, OperationalException, constants from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import evaluate_result_multi @@ -21,7 +21,8 @@ from freqtrade.optimize.backtesting import Backtesting from freqtrade.state import RunMode from freqtrade.strategy.default_strategy import DefaultStrategy from freqtrade.strategy.interface import SellType -from freqtrade.tests.conftest import (get_args, log_has, log_has_re, patch_exchange, +from freqtrade.tests.conftest import (get_args, log_has, log_has_re, + patch_exchange, patched_configuration_load_config_file) @@ -345,6 +346,23 @@ def test_backtesting_init(mocker, default_conf, order_types) -> None: assert not backtesting.strategy.order_types["stoploss_on_exchange"] +def test_backtesting_init_no_ticker_interval(mocker, default_conf, caplog) -> None: + """ + Check that stoploss_on_exchange is set to False while backtesting + since backtesting assumes a perfect stoploss anyway. + """ + patch_exchange(mocker) + del default_conf['ticker_interval'] + default_conf['strategy_list'] = ['DefaultStrategy', + 'TestStrategy'] + + mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.5)) + with pytest.raises(OperationalException): + Backtesting(default_conf) + log_has("Ticker-interval needs to be set in either configuration " + "or as cli argument `--ticker-interval 5m`", caplog.record_tuples) + + def test_tickerdata_to_dataframe_bt(default_conf, mocker) -> None: patch_exchange(mocker) timerange = TimeRange(None, 'line', 0, -100) From a90ced1f381391a9a7b69d2098460ebd88c27e0b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 6 Aug 2019 20:09:09 +0200 Subject: [PATCH 0124/3421] Since arguments are in milliseconds integer throughout ccxt. Explained here: https://github.com/ccxt/ccxt/issues/5636 fixes #2093 --- freqtrade/exchange/exchange.py | 3 ++- freqtrade/tests/exchange/test_exchange.py | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 37bbb778e..657f382d8 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -725,7 +725,8 @@ class Exchange(object): return [] try: # Allow 5s offset to catch slight time offsets (discovered in #1185) - my_trades = self._api.fetch_my_trades(pair, since.timestamp() - 5) + # since needs to be int in milliseconds + my_trades = self._api.fetch_my_trades(pair, int((since.timestamp() - 5) * 1000)) matched_trades = [trade for trade in my_trades if trade['order'] == order_id] return matched_trades diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index 2f9e525dd..559a3bd50 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -1391,6 +1391,13 @@ def test_get_trades_for_order(default_conf, mocker, exchange_name): orders = exchange.get_trades_for_order(order_id, 'LTC/BTC', since) assert len(orders) == 1 assert orders[0]['price'] == 165 + assert api_mock.fetch_my_trades.call_count == 1 + # since argument should be + assert isinstance(api_mock.fetch_my_trades.call_args[0][1], int) + assert api_mock.fetch_my_trades.call_args[0][0] == 'LTC/BTC' + # Same test twice, hardcoded number and doing the same calculation + assert api_mock.fetch_my_trades.call_args[0][1] == 1525471195000 + assert api_mock.fetch_my_trades.call_args[0][1] == int(since.timestamp() - 5) * 1000 ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, 'get_trades_for_order', 'fetch_my_trades', From caf4580346ef654d58421c4dd02a1eefb58f0264 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 6 Aug 2019 20:23:32 +0200 Subject: [PATCH 0125/3421] Use UTC Timezone for test --- freqtrade/tests/exchange/test_exchange.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index 559a3bd50..ebe5ad9df 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -2,7 +2,7 @@ # pragma pylint: disable=protected-access import copy import logging -from datetime import datetime +from datetime import datetime, timezone from random import randint from unittest.mock import MagicMock, Mock, PropertyMock @@ -11,8 +11,8 @@ import ccxt import pytest from pandas import DataFrame -from freqtrade import (DependencyException, OperationalException, - TemporaryError, InvalidOrderException) +from freqtrade import (DependencyException, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.exchange import Binance, Exchange, Kraken from freqtrade.exchange.exchange import API_RETRY_COUNT from freqtrade.resolvers.exchange_resolver import ExchangeResolver @@ -1361,7 +1361,7 @@ def test_name(default_conf, mocker, exchange_name): @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_get_trades_for_order(default_conf, mocker, exchange_name): order_id = 'ABCD-ABCD' - since = datetime(2018, 5, 5) + since = datetime(2018, 5, 5, tzinfo=timezone.utc) default_conf["dry_run"] = False mocker.patch('freqtrade.exchange.Exchange.exchange_has', return_value=True) api_mock = MagicMock() @@ -1396,7 +1396,7 @@ def test_get_trades_for_order(default_conf, mocker, exchange_name): assert isinstance(api_mock.fetch_my_trades.call_args[0][1], int) assert api_mock.fetch_my_trades.call_args[0][0] == 'LTC/BTC' # Same test twice, hardcoded number and doing the same calculation - assert api_mock.fetch_my_trades.call_args[0][1] == 1525471195000 + assert api_mock.fetch_my_trades.call_args[0][1] == 1525478395000 assert api_mock.fetch_my_trades.call_args[0][1] == int(since.timestamp() - 5) * 1000 ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, From 8418dfbaed20a4794addff924585e1c2149cfbf3 Mon Sep 17 00:00:00 2001 From: Jonathan Raviotta Date: Tue, 6 Aug 2019 22:35:14 -0400 Subject: [PATCH 0126/3421] edits for jupyter notebook example --- .gitignore | 4 +- docs/data-analysis.md | 168 ++++++------------ environment.yml | 1 + user_data/notebooks/.gitkeep | 0 user_data/notebooks/analysis_example.ipynb | 187 +++++++++++++++++++++ 5 files changed, 239 insertions(+), 121 deletions(-) create mode 100644 user_data/notebooks/.gitkeep create mode 100644 user_data/notebooks/analysis_example.ipynb diff --git a/.gitignore b/.gitignore index 9ed046c40..3a9df9852 100644 --- a/.gitignore +++ b/.gitignore @@ -81,7 +81,6 @@ target/ # Jupyter Notebook .ipynb_checkpoints -*.ipynb # pyenv .python-version @@ -93,3 +92,6 @@ target/ .pytest_cache/ .mypy_cache/ + +#exceptions +!user_data/noteboks/*example.ipynb diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 2b6d6ed58..826c34747 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -1,164 +1,92 @@ # Analyzing bot data -After performing backtests, or after running the bot for some time, it will be interesting to analyze the results your bot generated. +You can analyze the results of backtests and trading history easily using Jupyter notebooks. A sample notebook is located at `user_data/notebooks/analysis_example.ipynb`. For usage instructions, see [jupyter.org](https://jupyter.org/documentation). -A good way for this is using Jupyter (notebook or lab) - which provides an interactive environment to analyze the data. +## Strategy debugging example -The following helpers will help you loading the data into Pandas DataFrames, and may also give you some starting points in analyzing the results. +Debugging a strategy can be time-consuming. FreqTrade offers helper functions to visualize raw data. -## Strategy development problem analysis - -Debugging a strategy (are there no buy signals, ...) can be very time-consuming. -FreqTrade tries to help you by exposing a few helper-functions, which can be very handy. - -It's recommended using Juptyer Notebooks for analysis, since it offers a dynamic way to rerun certain parts of the code. - -The following is a full code-snippet, which will be explained by both comments, and step by step below. +### Import requirements and define variables used in the script ```python -# Some necessary imports +# Imports from pathlib import Path - +import os from freqtrade.data.history import load_pair_history from freqtrade.resolvers import StrategyResolver +from freqtrade.data.btanalysis import load_backtest_data +from freqtrade.data.btanalysis import load_trades_from_db + # Define some constants -ticker_interval = "5m" - +ticker_interval = "1m" # Name of the strategy class -strategyname = 'Awesomestrategy' +strategy_name = 'NewStrategy' +# Path to user data +user_data_dir = 'user_data' # Location of the strategy -strategy_location = '../xmatt/strategies' +strategy_location = os.path.join(user_data_dir, 'strategies') # Location of the data -data_location = '../freqtrade/user_data/data/binance/' +data_location = os.path.join(user_data_dir, 'data', 'binance') +# Pair to analyze # Only use one pair here -pair = "XRP_ETH" +pair = "BTC_USDT" +``` -### End constants +### Load exchange data -# Load data +```python +# Load data using values set above bt_data = load_pair_history(datadir=Path(data_location), - ticker_interval = ticker_interval, + ticker_interval=ticker_interval, pair=pair) -print(len(bt_data)) - -### Start strategy reload -# Load strategy - best done in a new cell -# Rerun each time the strategy-file is changed. -strategy = StrategyResolver({'strategy': strategyname, - 'user_data_dir': Path.cwd(), - 'strategy_path': location}).strategy - -# Run strategy (just like in backtesting) -df = strategy.analyze_ticker(bt_data, {'pair': pair}) -print(f"Generated {df['buy'].sum()} buy signals") - -# Reindex data to be "nicer" and show data -data = df.set_index('date', drop=True) -data.tail() +# Confirm success +print("Loaded " + str(len(bt_data)) + f" rows of data for {pair} from {data_location}") ``` -### Explanation +### Load and run strategy -#### Imports and constant definition +* Rerun each time the strategy file is changed +* Display the trade details. Note that using `data.head()` would also work, however most indicators have some "startup" data at the top of the dataframe. -``` python -# Some necessary imports -from pathlib import Path - -from freqtrade.data.history import load_pair_history -from freqtrade.resolvers import StrategyResolver -# Define some constants -ticker_interval = "5m" - -# Name of the strategy class -strategyname = 'Awesomestrategy' -# Location of the strategy -strategy_location = 'user_data/strategies' -# Location of the data -data_location = 'user_data/data/binance' -# Only use one pair here -pair = "XRP_ETH" -``` - -This first section imports necessary modules, and defines some constants you'll probably need to adjust for your case. - -#### Load candles - -``` python -# Load data -bt_data = load_pair_history(datadir=Path(data_location), - ticker_interval = ticker_interval, - pair=pair) -print(len(bt_data)) -``` - -This second section loads the historic data and prints the amount of candles in the DataFrame. -You can also inspect this dataframe by using `bt_data.head()` or `bt_data.tail()`. - -#### Run strategy and analyze results - -Now, it's time to load and run your strategy. -For this, I recommend using a new cell in your notebook, since you'll want to repeat this until you're satisfied with your strategy. - -``` python -# Load strategy - best done in a new cell -# Needs to be ran each time the strategy-file is changed. -strategy = StrategyResolver({'strategy': strategyname, - 'user_data_dir': Path.cwd(), - 'strategy_path': location}).strategy - -# Run strategy (just like in backtesting) -df = strategy.analyze_ticker(bt_data, {'pair': pair}) -print(f"Generated {df['buy'].sum()} buy signals") - -# Reindex data to be "nicer" and show data -data = df.set_index('date', drop=True) -data.tail() -``` - -The code snippet loads and analyzes the strategy, calculates and prints the number of buy signals. - -The last 2 lines serve to analyze the dataframe in detail. -This can be important if your strategy did not generate any buy signals. -Note that using `data.head()` would also work, however this is misleading since most indicators have some "startup" time at the start of a backtested dataframe. - -There can be many things wrong, some signs to look for are: +Some possible problems: * Columns with NaN values at the end of the dataframe * Columns used in `crossed*()` functions with completely different units -## Backtesting +```python +# Load strategy using values set above +strategy = StrategyResolver({'strategy': strategy_name, + 'user_data_dir': user_data_dir, + 'strategy_path': strategy_location}).strategy -To analyze your backtest results, you can [export the trades](#exporting-trades-to-file). -You can then load the trades to perform further analysis. +# Run strategy (just like in backtesting) +df = strategy.analyze_ticker(bt_data, {'pair': pair}) -Freqtrade provides the `load_backtest_data()` helper function to easily load the backtest results, which takes the path to the the backtest-results file as parameter. +# Report results +print(f"Generated {df['buy'].sum()} buy signals") +data = df.set_index('date', drop=True) +data.tail() +``` -``` python -from freqtrade.data.btanalysis import load_backtest_data -df = load_backtest_data("user_data/backtest-result.json") +### Load backtest results into a pandas dataframe + +```python +# Load backtest results +df = load_backtest_data("user_data/backtest_data/backtest-result.json") # Show value-counts per pair df.groupby("pair")["sell_reason"].value_counts() - ``` -This will allow you to drill deeper into your backtest results, and perform analysis which otherwise would make the regular backtest-output very difficult to digest due to information overload. - -If you have some ideas for interesting / helpful backtest data analysis ideas, please submit a Pull Request so the community can benefit from it. - -## Live data - -To analyze the trades your bot generated, you can load them to a DataFrame as follows: +### Load live trading results into a pandas dataframe ``` python -from freqtrade.data.btanalysis import load_trades_from_db - +# Fetch trades from database df = load_trades_from_db("sqlite:///tradesv3.sqlite") +# Display results df.groupby("pair")["sell_reason"].value_counts() - ``` Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data. diff --git a/environment.yml b/environment.yml index 8f43b6991..cd3350fd5 100644 --- a/environment.yml +++ b/environment.yml @@ -37,6 +37,7 @@ dependencies: - coveralls - mypy # Useful for jupyter + - jupyter - ipykernel - isort - yapf diff --git a/user_data/notebooks/.gitkeep b/user_data/notebooks/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/user_data/notebooks/analysis_example.ipynb b/user_data/notebooks/analysis_example.ipynb new file mode 100644 index 000000000..f9c9b27bc --- /dev/null +++ b/user_data/notebooks/analysis_example.ipynb @@ -0,0 +1,187 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Strategy debugging example" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Change directory\n", + "# Define all paths relative to the project root shown in the cell output\n", + "import os\n", + "try:\n", + "\tos.chdir(os.path.join(os.getcwd(), '../..'))\n", + "\tprint(os.getcwd())\n", + "except:\n", + "\tpass\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Import requirements and define variables used in the script" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Imports\n", + "from pathlib import Path\n", + "import os\n", + "from freqtrade.data.history import load_pair_history\n", + "from freqtrade.resolvers import StrategyResolver\n", + "from freqtrade.data.btanalysis import load_backtest_data\n", + "from freqtrade.data.btanalysis import load_trades_from_db\n", + "\n", + "# Define some constants\n", + "ticker_interval = \"1m\"\n", + "# Name of the strategy class\n", + "strategy_name = 'NewStrategy'\n", + "# Path to user data\n", + "user_data_dir = 'user_data'\n", + "# Location of the strategy\n", + "strategy_location = os.path.join(user_data_dir, 'strategies')\n", + "# Location of the data\n", + "data_location = os.path.join(user_data_dir, 'data', 'binance')\n", + "# Pair to analyze \n", + "# Only use one pair here\n", + "pair = \"BTC_USDT\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load exchange data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load data using values set above\n", + "bt_data = load_pair_history(datadir=Path(data_location),\n", + " ticker_interval=ticker_interval,\n", + " pair=pair)\n", + "\n", + "# Confirm success\n", + "print(\"Loaded \" + str(len(bt_data)) + f\" rows of data for {pair} from {data_location}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load and run strategy \n", + "\n", + "* Rerun each time the strategy file is changed\n", + "* Display the trade details. Note that using `data.head()` would also work, however most indicators have some \"startup\" data at the top of the dataframe.\n", + "\n", + "Some possible problems:\n", + "\n", + "* Columns with NaN values at the end of the dataframe\n", + "* Columns used in `crossed*()` functions with completely different units" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load strategy using values set above\n", + "strategy = StrategyResolver({'strategy': strategy_name,\n", + " 'user_data_dir': user_data_dir,\n", + " 'strategy_path': strategy_location}).strategy\n", + "\n", + "# Run strategy (just like in backtesting)\n", + "df = strategy.analyze_ticker(bt_data, {'pair': pair})\n", + "\n", + "# Report results\n", + "print(f\"Generated {df['buy'].sum()} buy signals\")\n", + "data = df.set_index('date', drop=True)\n", + "data.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load backtest results into a pandas dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load backtest results\n", + "df = load_backtest_data(\"user_data/backtest_data/backtest-result.json\")\n", + "\n", + "# Show value-counts per pair\n", + "df.groupby(\"pair\")[\"sell_reason\"].value_counts()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load live trading results into a pandas dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Fetch trades from database\n", + "df = load_trades_from_db(\"sqlite:///tradesv3.sqlite\")\n", + "\n", + "# Display results\n", + "df.groupby(\"pair\")[\"sell_reason\"].value_counts()" + ] + } + ], + "metadata": { + "file_extension": ".py", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "mimetype": "text/x-python", + "name": "python", + "npconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": 3 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From dfce20203436e01cf666b89f56a16e6e95f7e1a1 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Wed, 7 Aug 2019 07:02:15 +0000 Subject: [PATCH 0127/3421] Update mkdocs-material from 3.1.0 to 4.4.0 --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index c4d8c2cae..ce76d52e5 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1 +1 @@ -mkdocs-material==3.1.0 \ No newline at end of file +mkdocs-material==4.4.0 \ No newline at end of file From 33bc8a24049836d9dadafec80f9212f964f84c03 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Wed, 7 Aug 2019 07:02:19 +0000 Subject: [PATCH 0128/3421] Update ccxt from 1.18.1008 to 1.18.1021 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index e5ef27a38..1413539c3 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.1008 +ccxt==1.18.1021 SQLAlchemy==1.3.6 python-telegram-bot==11.1.0 arrow==0.14.4 From 5864968ce91882fa45a311c447ac4bc4c9f446d4 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Wed, 7 Aug 2019 07:02:25 +0000 Subject: [PATCH 0129/3421] Update plotly from 4.0.0 to 4.1.0 --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index a6753fc3f..f10bfac3f 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.0.0 +plotly==4.1.0 From 7d02580a2bb359ea1c793c658dbbe857cf0a5a0b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 7 Aug 2019 21:03:03 +0200 Subject: [PATCH 0130/3421] setup.sh script shall fail if venv initialization fails --- setup.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/setup.sh b/setup.sh index fe7110ef6..908e77767 100755 --- a/setup.sh +++ b/setup.sh @@ -39,15 +39,13 @@ function updateenv() { echo "-------------------------" source .env/bin/activate echo "pip install in-progress. Please wait..." - # Install numpy first to have py_find_1st install clean - ${PYTHON} -m pip install --upgrade pip numpy - ${PYTHON} -m pip install --upgrade -r requirements.txt - + ${PYTHON} -m pip install --upgrade pip read -p "Do you want to install dependencies for dev [y/N]? " if [[ $REPLY =~ ^[Yy]$ ]] then ${PYTHON} -m pip install --upgrade -r requirements-dev.txt else + ${PYTHON} -m pip install --upgrade -r requirements.txt echo "Dev dependencies ignored." fi @@ -90,7 +88,7 @@ function install_macos() { # Install bot Debian_ubuntu function install_debian() { sudo apt-get update - sudo apt-get install build-essential autoconf libtool pkg-config make wget git + sudo apt-get install -y build-essential autoconf libtool pkg-config make wget git install_talib } @@ -129,6 +127,10 @@ function reset() { echo ${PYTHON} -m venv .env + if [ $? -ne 0 ]; then + echo "Could not create virtual environment. Leaving now" + exit 1 + fi updateenv } From cc4900f66cc8cc6298fe6b3dde250ed67e783b0f Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 7 Aug 2019 21:19:16 +0200 Subject: [PATCH 0131/3421] Doublecheck if virtualenv IS present --- setup.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/setup.sh b/setup.sh index 908e77767..2ca6e4460 100755 --- a/setup.sh +++ b/setup.sh @@ -37,6 +37,10 @@ function updateenv() { echo "-------------------------" echo "Updating your virtual env" echo "-------------------------" + if [ ! -f .env/bin/activate ]; then + echo "Something went wrong, no virtual environment found." + exit 1 + fi source .env/bin/activate echo "pip install in-progress. Please wait..." ${PYTHON} -m pip install --upgrade pip From 757538f1147a605f1f246821abdbfee0ac50bb9b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 7 Aug 2019 21:35:52 +0200 Subject: [PATCH 0132/3421] Run ldconfig to add /usr/local/lib to path --- setup.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/setup.sh b/setup.sh index 2ca6e4460..9bdafec0d 100755 --- a/setup.sh +++ b/setup.sh @@ -72,6 +72,10 @@ function install_talib() { ./configure --prefix=/usr/local make sudo make install + if [ -x "$(command -v apt-get)" ]; then + echo "Updating library path using ldconfig" + sudo ldconfig + fi cd .. && rm -rf ./ta-lib/ cd .. } From 831e708897edf62f2950f97aa67d1ac89b2cdfdb Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 7 Aug 2019 21:44:47 +0200 Subject: [PATCH 0133/3421] Detect virtualenv and quit in that case --- setup.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/setup.sh b/setup.sh index 9bdafec0d..d936e20f1 100755 --- a/setup.sh +++ b/setup.sh @@ -11,6 +11,12 @@ function check_installed_pip() { # Check which python version is installed function check_installed_python() { + if [ -n "${VIRTUAL_ENV}" ]; then + echo "Please deactivate your virtual environment before running setup.sh." + echo "You can do this by running 'deactivate'." + exit 2 + fi + which python3.7 if [ $? -eq 0 ]; then echo "using Python 3.7" From 7a47d81b7b75f42480bf8af7b4e2f440ae6fe67a Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 7 Aug 2019 21:45:58 +0200 Subject: [PATCH 0134/3421] Ensure git reset --hard is realy desired --- setup.sh | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/setup.sh b/setup.sh index d936e20f1..c4b6e074a 100755 --- a/setup.sh +++ b/setup.sh @@ -117,28 +117,33 @@ function reset() { echo "----------------------------" echo "Reseting branch and virtual env" echo "----------------------------" + if [ "1" == $(git branch -vv |grep -cE "\* develop|\* master") ] then - if [ -d ".env" ]; then - echo "- Delete your previous virtual env" - rm -rf .env - fi - git fetch -a + read -p "Reset git branch? (This will remove all changes you made!) [y/N]? " + if [[ $REPLY =~ ^[Yy]$ ]]; then - if [ "1" == $(git branch -vv |grep -c "* develop") ] - then - echo "- Hard resetting of 'develop' branch." - git reset --hard origin/develop - elif [ "1" == $(git branch -vv |grep -c "* master") ] - then - echo "- Hard resetting of 'master' branch." - git reset --hard origin/master + git fetch -a + + if [ "1" == $(git branch -vv |grep -c "* develop") ] + then + echo "- Hard resetting of 'develop' branch." + git reset --hard origin/develop + elif [ "1" == $(git branch -vv |grep -c "* master") ] + then + echo "- Hard resetting of 'master' branch." + git reset --hard origin/master + fi fi else echo "Reset ignored because you are not on 'master' or 'develop'." fi + if [ -d ".env" ]; then + echo "- Delete your previous virtual env" + rm -rf .env + fi echo ${PYTHON} -m venv .env if [ $? -ne 0 ]; then From 9df1c23c71639bd95a171b861ac604ae58d769a4 Mon Sep 17 00:00:00 2001 From: Jonathan Raviotta Date: Wed, 7 Aug 2019 19:48:55 -0400 Subject: [PATCH 0135/3421] changed Path, added jupyter --- setup.py | 2 ++ user_data/notebooks/analysis_example.ipynb | 7 +++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 202e3fd0d..b46101c0f 100644 --- a/setup.py +++ b/setup.py @@ -68,6 +68,8 @@ setup(name='freqtrade', 'dev': all_extra, 'plot': plot, 'all': all_extra, + 'jupyter': [], + }, include_package_data=True, zip_safe=False, diff --git a/user_data/notebooks/analysis_example.ipynb b/user_data/notebooks/analysis_example.ipynb index f9c9b27bc..298269c7a 100644 --- a/user_data/notebooks/analysis_example.ipynb +++ b/user_data/notebooks/analysis_example.ipynb @@ -20,7 +20,7 @@ "\tos.chdir(os.path.join(os.getcwd(), '../..'))\n", "\tprint(os.getcwd())\n", "except:\n", - "\tpass\n" + "\tpass" ] }, { @@ -38,7 +38,6 @@ "source": [ "# Imports\n", "from pathlib import Path\n", - "import os\n", "from freqtrade.data.history import load_pair_history\n", "from freqtrade.resolvers import StrategyResolver\n", "from freqtrade.data.btanalysis import load_backtest_data\n", @@ -51,9 +50,9 @@ "# Path to user data\n", "user_data_dir = 'user_data'\n", "# Location of the strategy\n", - "strategy_location = os.path.join(user_data_dir, 'strategies')\n", + "strategy_location = Path(user_data_dir, 'strategies')\n", "# Location of the data\n", - "data_location = os.path.join(user_data_dir, 'data', 'binance')\n", + "data_location = Path(user_data_dir, 'data', 'binance')\n", "# Pair to analyze \n", "# Only use one pair here\n", "pair = \"BTC_USDT\"" From 2bc67b4a96876cefd55efc6ded6363e94968c670 Mon Sep 17 00:00:00 2001 From: Jonathan Raviotta Date: Wed, 7 Aug 2019 20:47:37 -0400 Subject: [PATCH 0136/3421] missed a call of os.path. removed it. --- user_data/notebooks/analysis_example.ipynb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/user_data/notebooks/analysis_example.ipynb b/user_data/notebooks/analysis_example.ipynb index 298269c7a..d14575e97 100644 --- a/user_data/notebooks/analysis_example.ipynb +++ b/user_data/notebooks/analysis_example.ipynb @@ -16,8 +16,9 @@ "# Change directory\n", "# Define all paths relative to the project root shown in the cell output\n", "import os\n", + "from pathlib import Path\n", "try:\n", - "\tos.chdir(os.path.join(os.getcwd(), '../..'))\n", + "\tos.chdir(Path(os.getcwd(), '../..'))\n", "\tprint(os.getcwd())\n", "except:\n", "\tpass" From 0d4a2c6c3af13d614cca871661fd2a4daeab4f64 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 8 Aug 2019 22:45:37 +0300 Subject: [PATCH 0137/3421] advanced sample hyperopt added; changes to helpstrings --- freqtrade/optimize/default_hyperopt.py | 3 +- user_data/hyperopts/sample_hyperopt.py | 16 +- .../hyperopts/sample_hyperopt_advanced.py | 261 ++++++++++++++++++ 3 files changed, 271 insertions(+), 9 deletions(-) create mode 100644 user_data/hyperopts/sample_hyperopt_advanced.py diff --git a/freqtrade/optimize/default_hyperopt.py b/freqtrade/optimize/default_hyperopt.py index 1d4c40916..e05dfc95c 100644 --- a/freqtrade/optimize/default_hyperopt.py +++ b/freqtrade/optimize/default_hyperopt.py @@ -13,10 +13,9 @@ from freqtrade.optimize.hyperopt_interface import IHyperOpt class DefaultHyperOpts(IHyperOpt): """ - Default hyperopt provided by freqtrade bot. + Default hyperopt provided by the Freqtrade bot. You can override it with your own hyperopt """ - @staticmethod def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame: dataframe['adx'] = ta.ADX(dataframe) diff --git a/user_data/hyperopts/sample_hyperopt.py b/user_data/hyperopts/sample_hyperopt.py index 9a755e52e..1a3823afa 100644 --- a/user_data/hyperopts/sample_hyperopt.py +++ b/user_data/hyperopts/sample_hyperopt.py @@ -14,25 +14,27 @@ import freqtrade.vendor.qtpylib.indicators as qtpylib from freqtrade.optimize.hyperopt_interface import IHyperOpt -# This class is a sample. Feel free to customize it. class SampleHyperOpts(IHyperOpt): """ - This is a test hyperopt to inspire you. + This is a sample hyperopt to inspire you. + Feel free to customize it. More information in https://github.com/freqtrade/freqtrade/blob/develop/docs/hyperopt.md - You can: - - Rename the class name. + You should: + - Rename the class name to some unique name. - Add any methods you want to build your hyperopt. - Add any lib you need to build your hyperopt. You must keep: - The prototypes for the methods: populate_indicators, indicator_space, buy_strategy_generator. - The roi_space, generate_roi_table, stoploss_space methods were moved to the parent class, you may - override them here if you need it. + The roi_space, generate_roi_table, stoploss_space methods are no longer required to be + copied in every custom hyperopt. However, you may override them if you need the + 'roi' and the 'stoploss' spaces that differ from the defaults offered by Freqtrade. + Sample implementation of these methods can be found in + https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py """ - @staticmethod def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame: dataframe['adx'] = ta.ADX(dataframe) diff --git a/user_data/hyperopts/sample_hyperopt_advanced.py b/user_data/hyperopts/sample_hyperopt_advanced.py new file mode 100644 index 000000000..00062a58d --- /dev/null +++ b/user_data/hyperopts/sample_hyperopt_advanced.py @@ -0,0 +1,261 @@ +# pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement + +from functools import reduce +from math import exp +from typing import Any, Callable, Dict, List +from datetime import datetime + +import numpy as np# noqa F401 +import talib.abstract as ta +from pandas import DataFrame +from skopt.space import Categorical, Dimension, Integer, Real + +import freqtrade.vendor.qtpylib.indicators as qtpylib +from freqtrade.optimize.hyperopt_interface import IHyperOpt + + +class AdvancedSampleHyperOpts(IHyperOpt): + """ + This is a sample hyperopt to inspire you. + Feel free to customize it. + + More information in https://github.com/freqtrade/freqtrade/blob/develop/docs/hyperopt.md + + You should: + - Rename the class name to some unique name. + - Add any methods you want to build your hyperopt. + - Add any lib you need to build your hyperopt. + + You must keep: + - The prototypes for the methods: populate_indicators, indicator_space, buy_strategy_generator. + + The roi_space, generate_roi_table, stoploss_space methods are no longer required to be + copied in every custom hyperopt. However, you may override them if you need the + 'roi' and the 'stoploss' spaces that differ from the defaults offered by Freqtrade. + + This sample illustrates how to override these methods. + """ + @staticmethod + def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame: + dataframe['adx'] = ta.ADX(dataframe) + macd = ta.MACD(dataframe) + dataframe['macd'] = macd['macd'] + dataframe['macdsignal'] = macd['macdsignal'] + dataframe['mfi'] = ta.MFI(dataframe) + dataframe['rsi'] = ta.RSI(dataframe) + stoch_fast = ta.STOCHF(dataframe) + dataframe['fastd'] = stoch_fast['fastd'] + dataframe['minus_di'] = ta.MINUS_DI(dataframe) + # Bollinger bands + bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2) + dataframe['bb_lowerband'] = bollinger['lower'] + dataframe['bb_upperband'] = bollinger['upper'] + dataframe['sar'] = ta.SAR(dataframe) + return dataframe + + @staticmethod + def buy_strategy_generator(params: Dict[str, Any]) -> Callable: + """ + Define the buy strategy parameters to be used by hyperopt + """ + def populate_buy_trend(dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + Buy strategy Hyperopt will build and use + """ + conditions = [] + # GUARDS AND TRENDS + if 'mfi-enabled' in params and params['mfi-enabled']: + conditions.append(dataframe['mfi'] < params['mfi-value']) + if 'fastd-enabled' in params and params['fastd-enabled']: + conditions.append(dataframe['fastd'] < params['fastd-value']) + if 'adx-enabled' in params and params['adx-enabled']: + conditions.append(dataframe['adx'] > params['adx-value']) + if 'rsi-enabled' in params and params['rsi-enabled']: + conditions.append(dataframe['rsi'] < params['rsi-value']) + + # TRIGGERS + if 'trigger' in params: + if params['trigger'] == 'bb_lower': + conditions.append(dataframe['close'] < dataframe['bb_lowerband']) + if params['trigger'] == 'macd_cross_signal': + conditions.append(qtpylib.crossed_above( + dataframe['macd'], dataframe['macdsignal'] + )) + if params['trigger'] == 'sar_reversal': + conditions.append(qtpylib.crossed_above( + dataframe['close'], dataframe['sar'] + )) + + if conditions: + dataframe.loc[ + reduce(lambda x, y: x & y, conditions), + 'buy'] = 1 + + return dataframe + + return populate_buy_trend + + @staticmethod + def indicator_space() -> List[Dimension]: + """ + Define your Hyperopt space for searching strategy parameters + """ + return [ + Integer(10, 25, name='mfi-value'), + Integer(15, 45, name='fastd-value'), + Integer(20, 50, name='adx-value'), + Integer(20, 40, name='rsi-value'), + Categorical([True, False], name='mfi-enabled'), + Categorical([True, False], name='fastd-enabled'), + Categorical([True, False], name='adx-enabled'), + Categorical([True, False], name='rsi-enabled'), + Categorical(['bb_lower', 'macd_cross_signal', 'sar_reversal'], name='trigger') + ] + + @staticmethod + def sell_strategy_generator(params: Dict[str, Any]) -> Callable: + """ + Define the sell strategy parameters to be used by hyperopt + """ + def populate_sell_trend(dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + Sell strategy Hyperopt will build and use + """ + # print(params) + conditions = [] + # GUARDS AND TRENDS + if 'sell-mfi-enabled' in params and params['sell-mfi-enabled']: + conditions.append(dataframe['mfi'] > params['sell-mfi-value']) + if 'sell-fastd-enabled' in params and params['sell-fastd-enabled']: + conditions.append(dataframe['fastd'] > params['sell-fastd-value']) + if 'sell-adx-enabled' in params and params['sell-adx-enabled']: + conditions.append(dataframe['adx'] < params['sell-adx-value']) + if 'sell-rsi-enabled' in params and params['sell-rsi-enabled']: + conditions.append(dataframe['rsi'] > params['sell-rsi-value']) + + # TRIGGERS + if 'sell-trigger' in params: + if params['sell-trigger'] == 'sell-bb_upper': + conditions.append(dataframe['close'] > dataframe['bb_upperband']) + if params['sell-trigger'] == 'sell-macd_cross_signal': + conditions.append(qtpylib.crossed_above( + dataframe['macdsignal'], dataframe['macd'] + )) + if params['sell-trigger'] == 'sell-sar_reversal': + conditions.append(qtpylib.crossed_above( + dataframe['sar'], dataframe['close'] + )) + + if conditions: + dataframe.loc[ + reduce(lambda x, y: x & y, conditions), + 'sell'] = 1 + + return dataframe + + return populate_sell_trend + + @staticmethod + def sell_indicator_space() -> List[Dimension]: + """ + Define your Hyperopt space for searching sell strategy parameters + """ + return [ + Integer(75, 100, name='sell-mfi-value'), + Integer(50, 100, name='sell-fastd-value'), + Integer(50, 100, name='sell-adx-value'), + Integer(60, 100, name='sell-rsi-value'), + Categorical([True, False], name='sell-mfi-enabled'), + Categorical([True, False], name='sell-fastd-enabled'), + Categorical([True, False], name='sell-adx-enabled'), + Categorical([True, False], name='sell-rsi-enabled'), + Categorical(['sell-bb_upper', + 'sell-macd_cross_signal', + 'sell-sar_reversal'], name='sell-trigger') + ] + + @staticmethod + def generate_roi_table(params: Dict) -> Dict[int, float]: + """ + Generate the ROI table that will be used by Hyperopt + + This implementation generates the default legacy Freqtrade ROI tables. + + Change it if you need different number of steps in the generated + ROI tables or other structure of the ROI tables. + + Please keep it aligned with parameters in the 'roi' optimization + hyperspace defined by the roi_space method. + """ + roi_table = {} + roi_table[0] = params['roi_p1'] + params['roi_p2'] + params['roi_p3'] + roi_table[params['roi_t3']] = params['roi_p1'] + params['roi_p2'] + roi_table[params['roi_t3'] + params['roi_t2']] = params['roi_p1'] + roi_table[params['roi_t3'] + params['roi_t2'] + params['roi_t1']] = 0 + + return roi_table + + @staticmethod + def roi_space() -> List[Dimension]: + """ + Values to search for each ROI steps + + Override it if you need some different ranges for the parameters in the + 'roi' optimization hyperspace. + + Please keep it aligned with the implementation of the + generate_roi_table method. + """ + return [ + Integer(10, 120, name='roi_t1'), + Integer(10, 60, name='roi_t2'), + Integer(10, 40, name='roi_t3'), + Real(0.01, 0.04, name='roi_p1'), + Real(0.01, 0.07, name='roi_p2'), + Real(0.01, 0.20, name='roi_p3'), + ] + + @staticmethod + def stoploss_space() -> List[Dimension]: + """ + Stoploss Value to search + + Override it if you need some different range for the parameter in the + 'stoploss' optimization hyperspace. + """ + return [ + Real(-0.5, -0.02, name='stoploss'), + ] + + def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + Based on TA indicators. Should be a copy of from strategy + must align to populate_indicators in this file + Only used when --spaces does not include buy + """ + dataframe.loc[ + ( + (dataframe['close'] < dataframe['bb_lowerband']) & + (dataframe['mfi'] < 16) & + (dataframe['adx'] > 25) & + (dataframe['rsi'] < 21) + ), + 'buy'] = 1 + + return dataframe + + def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + Based on TA indicators. Should be a copy of from strategy + must align to populate_indicators in this file + Only used when --spaces does not include sell + """ + dataframe.loc[ + ( + (qtpylib.crossed_above( + dataframe['macdsignal'], dataframe['macd'] + )) & + (dataframe['fastd'] > 54) + ), + 'sell'] = 1 + return dataframe From 8ad5afd3a1057ec4d118aef9ce21eb9d08851603 Mon Sep 17 00:00:00 2001 From: Cedric Schmeits Date: Thu, 8 Aug 2019 22:10:51 +0200 Subject: [PATCH 0138/3421] As -sharp_ratio is returned the value should be nagative. This leads in a high positive result of the loss function, as it is a minimal optimizer --- freqtrade/optimize/hyperopt_loss_sharpe.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt_loss_sharpe.py b/freqtrade/optimize/hyperopt_loss_sharpe.py index f74b27744..5631a75de 100644 --- a/freqtrade/optimize/hyperopt_loss_sharpe.py +++ b/freqtrade/optimize/hyperopt_loss_sharpe.py @@ -39,7 +39,7 @@ class SharpeHyperOptLoss(IHyperOptLoss): sharp_ratio = expected_yearly_return / np.std(total_profit) * np.sqrt(365) else: # Define high (negative) sharpe ratio to be clear that this is NOT optimal. - sharp_ratio = 20. + sharp_ratio = -20. # print(expected_yearly_return, np.std(total_profit), sharp_ratio) return -sharp_ratio From ccf3c6987435827af3649d19909fe78a0a3f4f25 Mon Sep 17 00:00:00 2001 From: Jonathan Raviotta Date: Thu, 8 Aug 2019 22:09:15 -0400 Subject: [PATCH 0139/3421] edits to clarify backtesting analysis --- docs/data-analysis.md | 70 +++++--- setup.py | 12 +- user_data/notebooks/analysis_example.ipynb | 195 +++++++++++++-------- 3 files changed, 176 insertions(+), 101 deletions(-) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 826c34747..3b07d77a6 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -2,11 +2,33 @@ You can analyze the results of backtests and trading history easily using Jupyter notebooks. A sample notebook is located at `user_data/notebooks/analysis_example.ipynb`. For usage instructions, see [jupyter.org](https://jupyter.org/documentation). +## Example snippets + +### Load backtest results into a pandas dataframe + +```python +# Load backtest results +df = load_backtest_data("user_data/backtest_data/backtest-result.json") + +# Show value-counts per pair +df.groupby("pair")["sell_reason"].value_counts() +``` + +### Load live trading results into a pandas dataframe + +``` python +# Fetch trades from database +df = load_trades_from_db("sqlite:///tradesv3.sqlite") + +# Display results +df.groupby("pair")["sell_reason"].value_counts() +``` + ## Strategy debugging example Debugging a strategy can be time-consuming. FreqTrade offers helper functions to visualize raw data. -### Import requirements and define variables used in the script +### Import requirements and define variables used in analyses ```python # Imports @@ -47,12 +69,6 @@ print("Loaded " + str(len(bt_data)) + f" rows of data for {pair} from {data_loca ### Load and run strategy * Rerun each time the strategy file is changed -* Display the trade details. Note that using `data.head()` would also work, however most indicators have some "startup" data at the top of the dataframe. - -Some possible problems: - -* Columns with NaN values at the end of the dataframe -* Columns used in `crossed*()` functions with completely different units ```python # Load strategy using values set above @@ -60,33 +76,31 @@ strategy = StrategyResolver({'strategy': strategy_name, 'user_data_dir': user_data_dir, 'strategy_path': strategy_location}).strategy -# Run strategy (just like in backtesting) +# Generate buy/sell signals using strategy df = strategy.analyze_ticker(bt_data, {'pair': pair}) +``` +### Display the trade details + +* Note that using `data.head()` would also work, however most indicators have some "startup" data at the top of the dataframe. + +#### Some possible problems + +* Columns with NaN values at the end of the dataframe +* Columns used in `crossed*()` functions with completely different units + +#### Comparison with full backtest + +having 200 buy signals as output for one pair from `analyze_ticker()` does not necessarily mean that 200 trades will be made during backtesting. + +Assuming you use only one condition such as, `df['rsi'] < 30` as buy condition, this will generate multiple "buy" signals for each pair in sequence (until rsi returns > 29). +The bot will only buy on the first of these signals (and also only if a trade-slot ("max_open_trades") is still available), or on one of the middle signals, as soon as a "slot" becomes available. + +```python # Report results print(f"Generated {df['buy'].sum()} buy signals") data = df.set_index('date', drop=True) data.tail() ``` -### Load backtest results into a pandas dataframe - -```python -# Load backtest results -df = load_backtest_data("user_data/backtest_data/backtest-result.json") - -# Show value-counts per pair -df.groupby("pair")["sell_reason"].value_counts() -``` - -### Load live trading results into a pandas dataframe - -``` python -# Fetch trades from database -df = load_trades_from_db("sqlite:///tradesv3.sqlite") - -# Display results -df.groupby("pair")["sell_reason"].value_counts() -``` - Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data. diff --git a/setup.py b/setup.py index b46101c0f..6ac7a117f 100644 --- a/setup.py +++ b/setup.py @@ -25,7 +25,15 @@ develop = [ 'pytest-random-order', ] -all_extra = api + plot + develop +jupyter = [ + 'jupyter', + 'nbstripout', + 'ipykernel', + 'isort', + 'yapf', + ] + +all_extra = api + plot + develop + jupyter setup(name='freqtrade', version=__version__, @@ -68,7 +76,7 @@ setup(name='freqtrade', 'dev': all_extra, 'plot': plot, 'all': all_extra, - 'jupyter': [], + 'jupyter': jupyter, }, include_package_data=True, diff --git a/user_data/notebooks/analysis_example.ipynb b/user_data/notebooks/analysis_example.ipynb index d14575e97..b3a61bc51 100644 --- a/user_data/notebooks/analysis_example.ipynb +++ b/user_data/notebooks/analysis_example.ipynb @@ -4,31 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Strategy debugging example" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Change directory\n", - "# Define all paths relative to the project root shown in the cell output\n", - "import os\n", - "from pathlib import Path\n", - "try:\n", - "\tos.chdir(Path(os.getcwd(), '../..'))\n", - "\tprint(os.getcwd())\n", - "except:\n", - "\tpass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Import requirements and define variables used in the script" + "# Analyzing bot data\n", + "\n", + "You can analyze the results of backtests and trading history easily using Jupyter notebooks. A sample notebook is located at `user_data/notebooks/analysis_example.ipynb`. For usage instructions, see [jupyter.org](https://jupyter.org/documentation)." ] }, { @@ -39,11 +17,97 @@ "source": [ "# Imports\n", "from pathlib import Path\n", + "import os\n", "from freqtrade.data.history import load_pair_history\n", "from freqtrade.resolvers import StrategyResolver\n", "from freqtrade.data.btanalysis import load_backtest_data\n", - "from freqtrade.data.btanalysis import load_trades_from_db\n", + "from freqtrade.data.btanalysis import load_trades_from_db" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Change directory\n", + "# Define all paths relative to the project root shown in the cell output\n", + "try:\n", + "\tos.chdir(Path(Path.cwd(), '../..'))\n", + "\tprint(Path.cwd())\n", + "except:\n", + "\tpass" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example snippets" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load backtest results into a pandas dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load backtest results\n", + "df = load_backtest_data(\"user_data/backtest_data/backtest-result.json\")\n", "\n", + "# Show value-counts per pair\n", + "df.groupby(\"pair\")[\"sell_reason\"].value_counts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load live trading results into a pandas dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Fetch trades from database\n", + "df = load_trades_from_db(\"sqlite:///tradesv3.sqlite\")\n", + "\n", + "# Display results\n", + "df.groupby(\"pair\")[\"sell_reason\"].value_counts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Strategy debugging example\n", + "\n", + "Debugging a strategy can be time-consuming. FreqTrade offers helper functions to visualize raw data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Import requirements and define variables used in analyses" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ "# Define some constants\n", "ticker_interval = \"1m\"\n", "# Name of the strategy class\n", @@ -51,9 +115,9 @@ "# Path to user data\n", "user_data_dir = 'user_data'\n", "# Location of the strategy\n", - "strategy_location = Path(user_data_dir, 'strategies')\n", + "strategy_location = os.path.join(user_data_dir, 'strategies')\n", "# Location of the data\n", - "data_location = Path(user_data_dir, 'data', 'binance')\n", + "data_location = os.path.join(user_data_dir, 'data', 'binance')\n", "# Pair to analyze \n", "# Only use one pair here\n", "pair = \"BTC_USDT\"" @@ -85,15 +149,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Load and run strategy \n", - "\n", - "* Rerun each time the strategy file is changed\n", - "* Display the trade details. Note that using `data.head()` would also work, however most indicators have some \"startup\" data at the top of the dataframe.\n", - "\n", - "Some possible problems:\n", - "\n", - "* Columns with NaN values at the end of the dataframe\n", - "* Columns used in `crossed*()` functions with completely different units" + "### Load and run strategy\n", + "* Rerun each time the strategy file is changed" ] }, { @@ -107,53 +164,49 @@ " 'user_data_dir': user_data_dir,\n", " 'strategy_path': strategy_location}).strategy\n", "\n", - "# Run strategy (just like in backtesting)\n", - "df = strategy.analyze_ticker(bt_data, {'pair': pair})\n", + "# Generate buy/sell signals using strategy\n", + "df = strategy.analyze_ticker(bt_data, {'pair': pair})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Display the trade details\n", + "* Note that using `data.head()` would also work, however most indicators have some \"startup\" data at the top of the dataframe.\n", "\n", + "#### Some possible problems\n", + "\n", + "* Columns with NaN values at the end of the dataframe\n", + "* Columns used in `crossed*()` functions with completely different units\n", + "\n", + "#### Comparison with full backtest\n", + "\n", + "having 200 buy signals as output for one pair from `analyze_ticker()` does not necessarily mean that 200 trades will be made during backtesting.\n", + "\n", + "Assuming you use only one condition such as, `df['rsi'] < 30` as buy condition, this will generate multiple \"buy\" signals for each pair in sequence (until rsi returns > 29).\n", + "The bot will only buy on the first of these signals (and also only if a trade-slot (\"max_open_trades\") is still available), or on one of the middle signals, as soon as a \"slot\" becomes available.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ "# Report results\n", "print(f\"Generated {df['buy'].sum()} buy signals\")\n", "data = df.set_index('date', drop=True)\n", "data.tail()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load backtest results into a pandas dataframe" - ] - }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "# Load backtest results\n", - "df = load_backtest_data(\"user_data/backtest_data/backtest-result.json\")\n", - "\n", - "# Show value-counts per pair\n", - "df.groupby(\"pair\")[\"sell_reason\"].value_counts()\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load live trading results into a pandas dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Fetch trades from database\n", - "df = load_trades_from_db(\"sqlite:///tradesv3.sqlite\")\n", - "\n", - "# Display results\n", - "df.groupby(\"pair\")[\"sell_reason\"].value_counts()" + "Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data." ] } ], From 15cf5ac2d74a05cf83df56a4f9a9978e6e5f78bf Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 9 Aug 2019 09:31:30 +0300 Subject: [PATCH 0140/3421] docs improved --- docs/hyperopt.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 0304c3188..6ef68d82f 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -350,7 +350,7 @@ def populate_buy_trend(self, dataframe: DataFrame) -> DataFrame: ### Understand Hyperopt ROI results -If you are optimizing ROI, your result will look as follows and include a ROI table: +If you are optimizing ROI (i.e. if optimization search-space contains 'all' or 'roi'), your result will look as follows and include a ROI table: ``` Best result: @@ -396,7 +396,7 @@ Override the `generate_roi_table()` and `roi_space()` methods and implement your ### Understand Hyperopt Stoploss results -If you are optimizing stoploss values, your result will look as follows and include stoploss: +If you are optimizing stoploss values (i.e. if optimization search-space contains 'all' or 'stoploss'), your result will look as follows and include stoploss: ``` Best result: From ae39f6fba510bf1d285433e18a91b75ecd996dc2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 9 Aug 2019 14:48:57 +0300 Subject: [PATCH 0141/3421] use of termcolor eliminated --- freqtrade/optimize/hyperopt.py | 11 ++++++----- requirements-common.txt | 1 - 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index fc0fb56b2..802c848f1 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -14,11 +14,11 @@ from pprint import pprint from typing import Any, Dict, List, Optional from colorama import init as colorama_init +from colorama import Fore, Style from joblib import Parallel, delayed, dump, load, wrap_non_picklable_objects, cpu_count from pandas import DataFrame from skopt import Optimizer from skopt.space import Dimension -from termcolor import colored from freqtrade.configuration import Arguments from freqtrade.data.history import load_data, get_timeframe @@ -163,11 +163,11 @@ class Hyperopt(Backtesting): # Colorize output if self.config.get('print_colorized', False): if results['total_profit'] > 0: - log_str = colored(log_str, attrs=['bold']) + log_str = Style.BRIGHT + log_str if results['loss'] >= MAX_LOSS: - log_str = colored(log_str, 'red') + log_str = Fore.RED + log_str elif is_best_loss: - log_str = colored(log_str, 'green') + log_str = Fore.GREEN + log_str if print_all: print(log_str) else: @@ -355,7 +355,8 @@ class Hyperopt(Backtesting): opt = self.get_optimizer(config_jobs) - colorama_init() + if self.config.get('print_colorized', False): + colorama_init(autoreset=True) try: with Parallel(n_jobs=config_jobs) as parallel: diff --git a/requirements-common.txt b/requirements-common.txt index b0c4c6729..9b62cae5c 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -32,5 +32,4 @@ sdnotify==0.3.2 flask==1.1.1 # Support for colorized terminal output -termcolor==1.1.0 colorama==0.4.1 From 51d59e673b277c5bd0fa4bb343b99feea8c6453c Mon Sep 17 00:00:00 2001 From: Jonathan Raviotta Date: Fri, 9 Aug 2019 11:36:53 -0400 Subject: [PATCH 0142/3421] fixed another instance of Path in docs and nb --- docs/data-analysis.md | 4 ++-- user_data/notebooks/analysis_example.ipynb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 3b07d77a6..f79d1674e 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -46,9 +46,9 @@ strategy_name = 'NewStrategy' # Path to user data user_data_dir = 'user_data' # Location of the strategy -strategy_location = os.path.join(user_data_dir, 'strategies') +strategy_location = Path(user_data_dir, 'strategies') # Location of the data -data_location = os.path.join(user_data_dir, 'data', 'binance') +data_location = Path(user_data_dir, 'data', 'binance') # Pair to analyze # Only use one pair here pair = "BTC_USDT" diff --git a/user_data/notebooks/analysis_example.ipynb b/user_data/notebooks/analysis_example.ipynb index b3a61bc51..b8bcdd7bf 100644 --- a/user_data/notebooks/analysis_example.ipynb +++ b/user_data/notebooks/analysis_example.ipynb @@ -115,9 +115,9 @@ "# Path to user data\n", "user_data_dir = 'user_data'\n", "# Location of the strategy\n", - "strategy_location = os.path.join(user_data_dir, 'strategies')\n", + "strategy_location = Path(user_data_dir, 'strategies')\n", "# Location of the data\n", - "data_location = os.path.join(user_data_dir, 'data', 'binance')\n", + "data_location = Path(user_data_dir, 'data', 'binance')\n", "# Pair to analyze \n", "# Only use one pair here\n", "pair = \"BTC_USDT\"" From 247d7475e17cff5f18e3dc8e31667cbeac44e3a9 Mon Sep 17 00:00:00 2001 From: Jonathan Raviotta Date: Fri, 9 Aug 2019 11:41:05 -0400 Subject: [PATCH 0143/3421] fixes to example notebook. --- user_data/notebooks/analysis_example.ipynb | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/user_data/notebooks/analysis_example.ipynb b/user_data/notebooks/analysis_example.ipynb index b8bcdd7bf..a92855add 100644 --- a/user_data/notebooks/analysis_example.ipynb +++ b/user_data/notebooks/analysis_example.ipynb @@ -33,10 +33,10 @@ "# Change directory\n", "# Define all paths relative to the project root shown in the cell output\n", "try:\n", - "\tos.chdir(Path(Path.cwd(), '../..'))\n", - "\tprint(Path.cwd())\n", + " os.chdir(Path(Path.cwd(), '../..'))\n", + " print(Path.cwd())\n", "except:\n", - "\tpass" + " pass" ] }, { @@ -109,7 +109,7 @@ "outputs": [], "source": [ "# Define some constants\n", - "ticker_interval = \"1m\"\n", + "ticker_interval = \"5m\"\n", "# Name of the strategy class\n", "strategy_name = 'NewStrategy'\n", "# Path to user data\n", @@ -201,10 +201,8 @@ ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ "Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data." ] From 3cc772c8e9eead8a11cc7208a84bdaca6f580240 Mon Sep 17 00:00:00 2001 From: Jonathan Raviotta Date: Fri, 9 Aug 2019 11:53:29 -0400 Subject: [PATCH 0144/3421] added reminders --- docs/data-analysis.md | 2 ++ user_data/notebooks/analysis_example.ipynb | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index f79d1674e..2e2ebc3c6 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -2,6 +2,8 @@ You can analyze the results of backtests and trading history easily using Jupyter notebooks. A sample notebook is located at `user_data/notebooks/analysis_example.ipynb`. For usage instructions, see [jupyter.org](https://jupyter.org/documentation). +*Pro tip - Don't forget to start a jupyter notbook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)* + ## Example snippets ### Load backtest results into a pandas dataframe diff --git a/user_data/notebooks/analysis_example.ipynb b/user_data/notebooks/analysis_example.ipynb index a92855add..30e9e1a97 100644 --- a/user_data/notebooks/analysis_example.ipynb +++ b/user_data/notebooks/analysis_example.ipynb @@ -6,7 +6,12 @@ "source": [ "# Analyzing bot data\n", "\n", - "You can analyze the results of backtests and trading history easily using Jupyter notebooks. A sample notebook is located at `user_data/notebooks/analysis_example.ipynb`. For usage instructions, see [jupyter.org](https://jupyter.org/documentation)." + "You can analyze the results of backtests and trading history easily using Jupyter notebooks. \n", + "**Copy this file so your changes don't get clobbered with the next freqtrade update!** \n", + "For usage instructions, see [jupyter.org](https://jupyter.org/documentation). \n", + "*Pro tip - Don't forget to start a jupyter notbook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)*\n", + "\n", + "\n" ] }, { From dd35ba5e812589ec1da130681df2fb38ba87cd26 Mon Sep 17 00:00:00 2001 From: Jonathan Raviotta Date: Fri, 9 Aug 2019 17:06:19 -0400 Subject: [PATCH 0145/3421] added imports to doc code blocks. --- docs/data-analysis.md | 9 +++++---- user_data/notebooks/analysis_example.ipynb | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 2e2ebc3c6..5db9e6c3b 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -9,6 +9,7 @@ You can analyze the results of backtests and trading history easily using Jupyte ### Load backtest results into a pandas dataframe ```python +from freqtrade.data.btanalysis import load_backtest_data # Load backtest results df = load_backtest_data("user_data/backtest_data/backtest-result.json") @@ -19,6 +20,8 @@ df.groupby("pair")["sell_reason"].value_counts() ### Load live trading results into a pandas dataframe ``` python +from freqtrade.data.btanalysis import load_trades_from_db + # Fetch trades from database df = load_trades_from_db("sqlite:///tradesv3.sqlite") @@ -38,13 +41,11 @@ from pathlib import Path import os from freqtrade.data.history import load_pair_history from freqtrade.resolvers import StrategyResolver -from freqtrade.data.btanalysis import load_backtest_data -from freqtrade.data.btanalysis import load_trades_from_db # Define some constants -ticker_interval = "1m" +ticker_interval = "5m" # Name of the strategy class -strategy_name = 'NewStrategy' +strategy_name = 'AwesomeStrategy' # Path to user data user_data_dir = 'user_data' # Location of the strategy diff --git a/user_data/notebooks/analysis_example.ipynb b/user_data/notebooks/analysis_example.ipynb index 30e9e1a97..f5e2c12d7 100644 --- a/user_data/notebooks/analysis_example.ipynb +++ b/user_data/notebooks/analysis_example.ipynb @@ -116,7 +116,7 @@ "# Define some constants\n", "ticker_interval = \"5m\"\n", "# Name of the strategy class\n", - "strategy_name = 'NewStrategy'\n", + "strategy_name = 'AwesomeStrategy'\n", "# Path to user data\n", "user_data_dir = 'user_data'\n", "# Location of the strategy\n", From 8eb39178ea2668af09a272128e3823d30910d059 Mon Sep 17 00:00:00 2001 From: Jonathan Raviotta Date: Fri, 9 Aug 2019 17:24:17 -0400 Subject: [PATCH 0146/3421] code block instructions. removed extra packages --- docs/data-analysis.md | 5 ++++- setup.py | 2 -- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 5db9e6c3b..66bb50694 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -42,6 +42,9 @@ import os from freqtrade.data.history import load_pair_history from freqtrade.resolvers import StrategyResolver +# You can override strategy settings as demonstrated below. +# Customize these according to your needs. + # Define some constants ticker_interval = "5m" # Name of the strategy class @@ -66,7 +69,7 @@ bt_data = load_pair_history(datadir=Path(data_location), pair=pair) # Confirm success -print("Loaded " + str(len(bt_data)) + f" rows of data for {pair} from {data_location}") +print(f"Loaded {len(bt_data)} rows of data for {pair} from {data_location}") ``` ### Load and run strategy diff --git a/setup.py b/setup.py index 6ac7a117f..41e1b8f45 100644 --- a/setup.py +++ b/setup.py @@ -29,8 +29,6 @@ jupyter = [ 'jupyter', 'nbstripout', 'ipykernel', - 'isort', - 'yapf', ] all_extra = api + plot + develop + jupyter From 50c9679e23d9d2fe219d7cc09e5256ffebc66b4b Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 10 Aug 2019 14:24:14 +0300 Subject: [PATCH 0147/3421] move load_config_file() to separate module --- freqtrade/configuration/configuration.py | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 17ad37d6a..e564c79ce 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -1,9 +1,7 @@ """ This module contains the configuration class """ -import json import logging -import sys import warnings from argparse import Namespace from typing import Any, Callable, Dict, Optional @@ -12,6 +10,7 @@ from freqtrade import OperationalException, constants from freqtrade.configuration.check_exchange import check_exchange from freqtrade.configuration.create_datadir import create_datadir from freqtrade.configuration.json_schema import validate_config_schema +from freqtrade.configuration.load_config import load_config_file from freqtrade.loggers import setup_logging from freqtrade.misc import deep_merge_dicts from freqtrade.state import RunMode @@ -52,24 +51,7 @@ class Configuration(object): logger.info('Using config: %s ...', path) # Merge config options, overwriting old values - config = deep_merge_dicts(self._load_config_file(path), config) - - return config - - def _load_config_file(self, path: str) -> Dict[str, Any]: - """ - Loads a config file from the given path - :param path: path as str - :return: configuration as dictionary - """ - try: - # Read config from stdin if requested in the options - with open(path) if path != '-' else sys.stdin as file: - config = json.load(file) - except FileNotFoundError: - raise OperationalException( - f'Config file "{path}" not found!' - ' Please create a config file or check whether it exists.') + config = deep_merge_dicts(load_config_file(path), config) return config From ad6a249832e2c0429fb534fa648607a705ee0f7d Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 10 Aug 2019 15:14:37 +0300 Subject: [PATCH 0148/3421] download_backtest_data.py adjusted --- scripts/download_backtest_data.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/download_backtest_data.py b/scripts/download_backtest_data.py index ed96cec71..580592294 100755 --- a/scripts/download_backtest_data.py +++ b/scripts/download_backtest_data.py @@ -12,6 +12,7 @@ from freqtrade.configuration import Arguments, TimeRange from freqtrade.configuration import Configuration from freqtrade.configuration.arguments import ARGS_DOWNLOADER from freqtrade.configuration.check_exchange import check_exchange +from freqtrade.configuration.load_config import load_config_file from freqtrade.data.history import download_pair_history from freqtrade.exchange import Exchange from freqtrade.misc import deep_merge_dicts @@ -42,7 +43,7 @@ if args.config: for path in args.config: logger.info(f"Using config: {path}...") # Merge config options, overwriting old values - config = deep_merge_dicts(configuration._load_config_file(path), config) + config = deep_merge_dicts(load_config_file(path), config) config['stake_currency'] = '' # Ensure we do not use Exchange credentials From 28d8fc871a14418a44521f2635809ad66dbbff3f Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 10 Aug 2019 15:15:09 +0300 Subject: [PATCH 0149/3421] tests adjusted --- freqtrade/configuration/load_config.py | 30 ++++++++++++++++++++++++++ freqtrade/tests/conftest.py | 2 +- freqtrade/tests/test_configuration.py | 14 ++++++------ 3 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 freqtrade/configuration/load_config.py diff --git a/freqtrade/configuration/load_config.py b/freqtrade/configuration/load_config.py new file mode 100644 index 000000000..25504144f --- /dev/null +++ b/freqtrade/configuration/load_config.py @@ -0,0 +1,30 @@ +""" +This module contain functions to load the configuration file +""" +import json +import logging +import sys +from typing import Any, Dict + +from freqtrade import OperationalException + + +logger = logging.getLogger(__name__) + + +def load_config_file(path: str) -> Dict[str, Any]: + """ + Loads a config file from the given path + :param path: path as str + :return: configuration as dictionary + """ + try: + # Read config from stdin if requested in the options + with open(path) if path != '-' else sys.stdin as file: + config = json.load(file) + except FileNotFoundError: + raise OperationalException( + f'Config file "{path}" not found!' + ' Please create a config file or check whether it exists.') + + return config diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py index 71ed23901..88257bcae 100644 --- a/freqtrade/tests/conftest.py +++ b/freqtrade/tests/conftest.py @@ -45,7 +45,7 @@ def get_args(args): def patched_configuration_load_config_file(mocker, config) -> None: mocker.patch( - 'freqtrade.configuration.configuration.Configuration._load_config_file', + 'freqtrade.configuration.load_config.load_config_file', lambda *args, **kwargs: config ) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 1e76297a6..d4c8704be 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -15,6 +15,7 @@ from freqtrade.configuration import Arguments, Configuration from freqtrade.configuration.check_exchange import check_exchange from freqtrade.configuration.create_datadir import create_datadir from freqtrade.configuration.json_schema import validate_config_schema +from freqtrade.configuration.load_config import load_config_file from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL from freqtrade.loggers import _set_loggers from freqtrade.state import RunMode @@ -26,8 +27,7 @@ from freqtrade.tests.conftest import (log_has, log_has_re, def all_conf(): config_file = Path(__file__).parents[2] / "config_full.json.example" print(config_file) - configuration = Configuration(Namespace()) - conf = configuration._load_config_file(str(config_file)) + conf = load_config_file(str(config_file)) return conf @@ -53,12 +53,11 @@ def test_load_config_incorrect_stake_amount(default_conf) -> None: def test_load_config_file(default_conf, mocker, caplog) -> None: - file_mock = mocker.patch('freqtrade.configuration.configuration.open', mocker.mock_open( + file_mock = mocker.patch('freqtrade.configuration.load_config.open', mocker.mock_open( read_data=json.dumps(default_conf) )) - configuration = Configuration(Namespace()) - validated_conf = configuration._load_config_file('somefile') + validated_conf = load_config_file('somefile') assert file_mock.call_count == 1 assert validated_conf.items() >= default_conf.items() @@ -114,7 +113,7 @@ def test_load_config_combine_dicts(default_conf, mocker, caplog) -> None: configsmock = MagicMock(side_effect=config_files) mocker.patch( - 'freqtrade.configuration.configuration.Configuration._load_config_file', + 'freqtrade.configuration.load_config.load_config_file', configsmock ) @@ -154,10 +153,9 @@ def test_load_config_file_exception(mocker) -> None: 'freqtrade.configuration.configuration.open', MagicMock(side_effect=FileNotFoundError('File not found')) ) - configuration = Configuration(Namespace()) with pytest.raises(OperationalException, match=r'.*Config file "somefile" not found!*'): - configuration._load_config_file('somefile') + load_config_file('somefile') def test_load_config(default_conf, mocker) -> None: From ab092fc77f291e1b5de9356729bf692803d59ca3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 10 Aug 2019 15:45:41 +0200 Subject: [PATCH 0150/3421] Reinstate comment on backesting data --- docs/data-analysis.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 66bb50694..ecd94445b 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -17,6 +17,8 @@ df = load_backtest_data("user_data/backtest_data/backtest-result.json") df.groupby("pair")["sell_reason"].value_counts() ``` +This will allow you to drill deeper into your backtest results, and perform analysis which otherwise would make the regular backtest-output very difficult to digest due to information overload. + ### Load live trading results into a pandas dataframe ``` python From 48d83768787a7222b30b04b3d40289df143f24ab Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 10 Aug 2019 18:47:58 +0300 Subject: [PATCH 0151/3421] tests fixed --- freqtrade/tests/conftest.py | 2 +- freqtrade/tests/test_configuration.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py index 88257bcae..4b9bf6cd8 100644 --- a/freqtrade/tests/conftest.py +++ b/freqtrade/tests/conftest.py @@ -45,7 +45,7 @@ def get_args(args): def patched_configuration_load_config_file(mocker, config) -> None: mocker.patch( - 'freqtrade.configuration.load_config.load_config_file', + 'freqtrade.configuration.configuration.load_config_file', lambda *args, **kwargs: config ) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index d4c8704be..e325a0de2 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -113,7 +113,7 @@ def test_load_config_combine_dicts(default_conf, mocker, caplog) -> None: configsmock = MagicMock(side_effect=config_files) mocker.patch( - 'freqtrade.configuration.load_config.load_config_file', + 'freqtrade.configuration.configuration.load_config_file', configsmock ) From c4cbe79b48795fd7f045f330e76f17d37ab18cd1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 10 Aug 2019 19:55:33 +0200 Subject: [PATCH 0152/3421] Adjust documentation --- docs/bot-usage.md | 4 ++-- docs/data-analysis.md | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 0ca2f3cc5..4e3f55d91 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -56,8 +56,8 @@ freqtrade -c path/far/far/away/config.json The bot allows you to use multiple configuration files by specifying multiple `-c/--config` configuration options in the command line. Configuration parameters -defined in the last configuration file override parameters with the same name -defined in the previous configuration file specified in the command line. +defined in latter configuration files override parameters with the same name +defined in the earlier configuration files specified in the command line. For example, you can make a separate configuration file with your key and secrete for the Exchange you use for trading, specify default configuration file with diff --git a/docs/data-analysis.md b/docs/data-analysis.md index ecd94445b..c89353cc8 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -31,6 +31,16 @@ df = load_trades_from_db("sqlite:///tradesv3.sqlite") df.groupby("pair")["sell_reason"].value_counts() ``` +### Load multiple configuration files + +This option can be usefull to inspect the results of passing in multiple configs in case of problems + +``` python +from freqtrade.configuration import Configuration +config = Configuration.from_files(["config1.json", "config2.json"]) +print(config) +``` + ## Strategy debugging example Debugging a strategy can be time-consuming. FreqTrade offers helper functions to visualize raw data. From afba31c3f996c5885fcddf9d572e3a645f3aa026 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 10 Aug 2019 19:57:49 +0200 Subject: [PATCH 0153/3421] change method from _load_config_Files to from_files() --- freqtrade/configuration/configuration.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index e564c79ce..85a156fab 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -4,7 +4,7 @@ This module contains the configuration class import logging import warnings from argparse import Namespace -from typing import Any, Callable, Dict, Optional +from typing import Any, Callable, Dict, Optional, List from freqtrade import OperationalException, constants from freqtrade.configuration.check_exchange import check_exchange @@ -39,16 +39,22 @@ class Configuration(object): return self.config - def _load_config_files(self) -> Dict[str, Any]: + @staticmethod + def from_files(files: List[str]) -> Dict[str, Any]: """ - Iterate through the config files passed in the args, - loading all of them and merging their contents. + Iterate through the config files passed in, loading all of them + and merging their contents. + Files are loaded in sequence, parameters in later configuration files + override the same parameter from an earlier file (last definition wins). + :param files: List of file paths + :return: configuration dictionary """ + # Keep this method as staticmethod, so it can be used from interactive environments config: Dict[str, Any] = {} # We expect here a list of config filenames - for path in self.args.config: - logger.info('Using config: %s ...', path) + for path in files: + logger.info(f'Using config: {path} ...') # Merge config options, overwriting old values config = deep_merge_dicts(load_config_file(path), config) @@ -69,7 +75,7 @@ class Configuration(object): :return: Configuration dictionary """ # Load all configs - config: Dict[str, Any] = self._load_config_files() + config: Dict[str, Any] = Configuration.from_files(self.args.config) # Make resulting config more canonical self._normalize_config(config) From eb328037b74847c5e911886249191be1a4c30d8b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 10 Aug 2019 19:58:04 +0200 Subject: [PATCH 0154/3421] combine normalize method and config validation to in_files --- freqtrade/configuration/configuration.py | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 85a156fab..237346e37 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -4,7 +4,7 @@ This module contains the configuration class import logging import warnings from argparse import Namespace -from typing import Any, Callable, Dict, Optional, List +from typing import Any, Callable, Dict, List, Optional from freqtrade import OperationalException, constants from freqtrade.configuration.check_exchange import check_exchange @@ -59,16 +59,16 @@ class Configuration(object): # Merge config options, overwriting old values config = deep_merge_dicts(load_config_file(path), config) - return config - - def _normalize_config(self, config: Dict[str, Any]) -> None: - """ - Make config more canonical -- i.e. for example add missing parts that we expect - to be normally in it... - """ + # Normalize config if 'internals' not in config: config['internals'] = {} + # validate configuration before returning + logger.info('Validating configuration ...') + validate_config_schema(config) + + return config + def load_config(self) -> Dict[str, Any]: """ Extract information for sys.argv and load the bot configuration @@ -77,12 +77,6 @@ class Configuration(object): # Load all configs config: Dict[str, Any] = Configuration.from_files(self.args.config) - # Make resulting config more canonical - self._normalize_config(config) - - logger.info('Validating configuration ...') - validate_config_schema(config) - self._validate_config_consistency(config) self._process_common_options(config) From 6d89da45b0fe2c4db46ebf3e229ebc8b056527f1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 10 Aug 2019 20:02:11 +0200 Subject: [PATCH 0155/3421] Add test for from_config --- freqtrade/tests/test_configuration.py | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index e325a0de2..667bd042e 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -133,6 +133,35 @@ def test_load_config_combine_dicts(default_conf, mocker, caplog) -> None: assert log_has('Validating configuration ...', caplog.record_tuples) +def test_from_config(default_conf, mocker, caplog) -> None: + conf1 = deepcopy(default_conf) + conf2 = deepcopy(default_conf) + del conf1['exchange']['key'] + del conf1['exchange']['secret'] + del conf2['exchange']['name'] + conf2['exchange']['pair_whitelist'] += ['NANO/BTC'] + conf2['fiat_display_currency'] = "EUR" + config_files = [conf1, conf2] + + configsmock = MagicMock(side_effect=config_files) + mocker.patch( + 'freqtrade.configuration.configuration.load_config_file', + configsmock + ) + + validated_conf = Configuration.from_files(['test_conf.json', 'test2_conf.json']) + + exchange_conf = default_conf['exchange'] + assert validated_conf['exchange']['name'] == exchange_conf['name'] + assert validated_conf['exchange']['key'] == exchange_conf['key'] + assert validated_conf['exchange']['secret'] == exchange_conf['secret'] + assert validated_conf['exchange']['pair_whitelist'] != conf1['exchange']['pair_whitelist'] + assert validated_conf['exchange']['pair_whitelist'] == conf2['exchange']['pair_whitelist'] + assert validated_conf['fiat_display_currency'] == "EUR" + assert 'internals' in validated_conf + assert log_has('Validating configuration ...', caplog.record_tuples) + + def test_load_config_max_open_trades_minus_one(default_conf, mocker, caplog) -> None: default_conf['max_open_trades'] = -1 patched_configuration_load_config_file(mocker, default_conf) From 5209ce5bfac246a3ecd44d9976e49ddbb68282e5 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 26 Jul 2019 16:30:14 +0300 Subject: [PATCH 0156/3421] tests: don't mask numpy errors as warnings in tests --- freqtrade/tests/conftest.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py index 4b9bf6cd8..8c995b7c0 100644 --- a/freqtrade/tests/conftest.py +++ b/freqtrade/tests/conftest.py @@ -10,6 +10,7 @@ from unittest.mock import MagicMock, PropertyMock import arrow import pytest +import numpy as np from telegram import Chat, Message, Update from freqtrade import constants, persistence @@ -25,6 +26,10 @@ from freqtrade.worker import Worker logging.getLogger('').setLevel(logging.INFO) +# Do not mask numpy errors as warnings that no one read, raise the exсeption +np.seterr(all='raise') + + def log_has(line, logs): # caplog mocker returns log as a tuple: ('freqtrade.something', logging.WARNING, 'foobar') # and we want to match line against foobar in the tuple From 1a85e3b4cd8ec9412a6d24454b14c489189676ec Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Aug 2019 13:46:32 +0200 Subject: [PATCH 0157/3421] Fix numpy warning --- freqtrade/rpc/rpc.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index f77e0eddb..7b811cadc 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -10,7 +10,7 @@ from typing import Dict, Any, List, Optional import arrow import sqlalchemy as sql -from numpy import mean, nan_to_num, NAN +from numpy import mean, NAN from pandas import DataFrame from freqtrade import TemporaryError, DependencyException @@ -195,9 +195,9 @@ class RPC(object): trades = Trade.query.order_by(Trade.id).all() profit_all_coin = [] - profit_all_percent = [] + profit_all_perc = [] profit_closed_coin = [] - profit_closed_percent = [] + profit_closed_perc = [] durations = [] for trade in trades: @@ -211,7 +211,7 @@ class RPC(object): if not trade.is_open: profit_percent = trade.calc_profit_percent() profit_closed_coin.append(trade.calc_profit()) - profit_closed_percent.append(profit_percent) + profit_closed_perc.append(profit_percent) else: # Get current rate try: @@ -223,7 +223,7 @@ class RPC(object): profit_all_coin.append( trade.calc_profit(rate=Decimal(trade.close_rate or current_rate)) ) - profit_all_percent.append(profit_percent) + profit_all_perc.append(profit_percent) best_pair = Trade.session.query( Trade.pair, sql.func.sum(Trade.close_profit).label('profit_sum') @@ -238,7 +238,8 @@ class RPC(object): # Prepare data to display profit_closed_coin_sum = round(sum(profit_closed_coin), 8) - profit_closed_percent = round(nan_to_num(mean(profit_closed_percent)) * 100, 2) + profit_closed_percent = (round(mean(profit_closed_perc) * 100, 2) if profit_closed_perc + else 0.0) profit_closed_fiat = self._fiat_converter.convert_amount( profit_closed_coin_sum, stake_currency, @@ -246,7 +247,7 @@ class RPC(object): ) if self._fiat_converter else 0 profit_all_coin_sum = round(sum(profit_all_coin), 8) - profit_all_percent = round(nan_to_num(mean(profit_all_percent)) * 100, 2) + profit_all_percent = round(mean(profit_all_perc) * 100, 2) if profit_all_perc else 0.0 profit_all_fiat = self._fiat_converter.convert_amount( profit_all_coin_sum, stake_currency, From 176beefa88e27ccda79bada82a0143ef7e39c3de Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Aug 2019 14:14:51 +0200 Subject: [PATCH 0158/3421] Disable stoploss on exchange for dry-runs --- freqtrade/resolvers/strategy_resolver.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index aa73327ff..4c521e2f4 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -81,7 +81,7 @@ class StrategyResolver(IResolver): key=lambda t: t[0])) self.strategy.stoploss = float(self.strategy.stoploss) - self._strategy_sanity_validations() + self._strategy_sanity_validations(config) def _override_attribute_helper(self, config, attribute: str, default): """ @@ -102,7 +102,7 @@ class StrategyResolver(IResolver): setattr(self.strategy, attribute, default) config[attribute] = default - def _strategy_sanity_validations(self): + def _strategy_sanity_validations(self, config): if not all(k in self.strategy.order_types for k in constants.REQUIRED_ORDERTYPES): raise ImportError(f"Impossible to load Strategy '{self.strategy.__class__.__name__}'. " f"Order-types mapping is incomplete.") @@ -111,6 +111,12 @@ class StrategyResolver(IResolver): raise ImportError(f"Impossible to load Strategy '{self.strategy.__class__.__name__}'. " f"Order-time-in-force mapping is incomplete.") + # Stoploss on exchange does not make sense, therefore we need to disable that. + if config.get('dry_run'): + logger.info("Disabling stoploss_on_exchange during dry-run.") + self.strategy.order_types['stoploss_on_exchange'] = False + config['order_types']['stoploss_on_exchange'] = False + def _load_strategy( self, strategy_name: str, config: dict, extra_dir: Optional[str] = None) -> IStrategy: """ From e02e64fc0756d719a65ac914cc859f9410fd8e48 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Aug 2019 14:15:04 +0200 Subject: [PATCH 0159/3421] Add test to make sure dry-run disables stoploss on exchange --- freqtrade/tests/strategy/test_strategy.py | 39 +++++++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/freqtrade/tests/strategy/test_strategy.py b/freqtrade/tests/strategy/test_strategy.py index df8c0f126..aa386fa6c 100644 --- a/freqtrade/tests/strategy/test_strategy.py +++ b/freqtrade/tests/strategy/test_strategy.py @@ -15,7 +15,7 @@ from freqtrade.resolvers import StrategyResolver from freqtrade.strategy import import_strategy from freqtrade.strategy.default_strategy import DefaultStrategy from freqtrade.strategy.interface import IStrategy -from freqtrade.tests.conftest import log_has_re +from freqtrade.tests.conftest import log_has_re, log_has def test_import_strategy(caplog): @@ -257,12 +257,9 @@ def test_strategy_override_order_types(caplog): for method in ['buy', 'sell', 'stoploss', 'stoploss_on_exchange']: assert resolver.strategy.order_types[method] == order_types[method] - assert ('freqtrade.resolvers.strategy_resolver', - logging.INFO, - "Override strategy 'order_types' with value in config file:" - " {'buy': 'market', 'sell': 'limit', 'stoploss': 'limit'," - " 'stoploss_on_exchange': True}." - ) in caplog.record_tuples + assert log_has("Override strategy 'order_types' with value in config file:" + " {'buy': 'market', 'sell': 'limit', 'stoploss': 'limit'," + " 'stoploss_on_exchange': True}.", caplog.record_tuples) config = { 'strategy': 'DefaultStrategy', @@ -275,6 +272,34 @@ def test_strategy_override_order_types(caplog): StrategyResolver(config) +def test_strategy_override_order_types_dryrun(caplog): + caplog.set_level(logging.INFO) + + order_types = { + 'buy': 'market', + 'sell': 'limit', + 'stoploss': 'limit', + 'stoploss_on_exchange': True, + } + + config = { + 'strategy': 'DefaultStrategy', + 'order_types': order_types, + 'dry_run': True, + } + resolver = StrategyResolver(config) + + assert resolver.strategy.order_types + for method in ['buy', 'sell', 'stoploss', 'stoploss_on_exchange']: + assert resolver.strategy.order_types[method] == order_types[method] + + assert log_has("Disabling stoploss_on_exchange during dry-run.", caplog.record_tuples) + + assert log_has("Override strategy 'order_types' with value in config file:" + " {'buy': 'market', 'sell': 'limit', 'stoploss': 'limit'," + " 'stoploss_on_exchange': False}.", caplog.record_tuples) + + def test_strategy_override_order_tif(caplog): caplog.set_level(logging.INFO) From 4b4fcc703471890c3bb584f9a47b04402750c9f2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Aug 2019 19:43:57 +0200 Subject: [PATCH 0160/3421] Change stoploss_on_exchange in freqtradebot --- freqtrade/freqtradebot.py | 8 ++++++- freqtrade/resolvers/strategy_resolver.py | 10 ++------ freqtrade/tests/strategy/test_strategy.py | 28 ----------------------- 3 files changed, 9 insertions(+), 37 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d52165e0a..603b0631f 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -20,7 +20,7 @@ from freqtrade.exchange import timeframe_to_minutes from freqtrade.persistence import Trade from freqtrade.rpc import RPCManager, RPCMessageType from freqtrade.resolvers import ExchangeResolver, StrategyResolver, PairListResolver -from freqtrade.state import State +from freqtrade.state import State, RunMode from freqtrade.strategy.interface import SellType, IStrategy from freqtrade.wallets import Wallets @@ -75,6 +75,12 @@ class FreqtradeBot(object): persistence.init(self.config.get('db_url', None), clean_open_orders=self.config.get('dry_run', False)) + # Stoploss on exchange does not make sense, therefore we need to disable that. + if (self.dataprovider.runmode == RunMode.DRY_RUN and + self.strategy.order_types.get('stoploss_on_exchange', False)): + logger.info("Disabling stoploss_on_exchange during dry-run.") + self.strategy.order_types['stoploss_on_exchange'] = False + config['order_types']['stoploss_on_exchange'] = False # Set initial bot state from config initial_state = self.config.get('initial_state') self.state = State[initial_state.upper()] if initial_state else State.STOPPED diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 4c521e2f4..aa73327ff 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -81,7 +81,7 @@ class StrategyResolver(IResolver): key=lambda t: t[0])) self.strategy.stoploss = float(self.strategy.stoploss) - self._strategy_sanity_validations(config) + self._strategy_sanity_validations() def _override_attribute_helper(self, config, attribute: str, default): """ @@ -102,7 +102,7 @@ class StrategyResolver(IResolver): setattr(self.strategy, attribute, default) config[attribute] = default - def _strategy_sanity_validations(self, config): + def _strategy_sanity_validations(self): if not all(k in self.strategy.order_types for k in constants.REQUIRED_ORDERTYPES): raise ImportError(f"Impossible to load Strategy '{self.strategy.__class__.__name__}'. " f"Order-types mapping is incomplete.") @@ -111,12 +111,6 @@ class StrategyResolver(IResolver): raise ImportError(f"Impossible to load Strategy '{self.strategy.__class__.__name__}'. " f"Order-time-in-force mapping is incomplete.") - # Stoploss on exchange does not make sense, therefore we need to disable that. - if config.get('dry_run'): - logger.info("Disabling stoploss_on_exchange during dry-run.") - self.strategy.order_types['stoploss_on_exchange'] = False - config['order_types']['stoploss_on_exchange'] = False - def _load_strategy( self, strategy_name: str, config: dict, extra_dir: Optional[str] = None) -> IStrategy: """ diff --git a/freqtrade/tests/strategy/test_strategy.py b/freqtrade/tests/strategy/test_strategy.py index aa386fa6c..93c0a9e8a 100644 --- a/freqtrade/tests/strategy/test_strategy.py +++ b/freqtrade/tests/strategy/test_strategy.py @@ -272,34 +272,6 @@ def test_strategy_override_order_types(caplog): StrategyResolver(config) -def test_strategy_override_order_types_dryrun(caplog): - caplog.set_level(logging.INFO) - - order_types = { - 'buy': 'market', - 'sell': 'limit', - 'stoploss': 'limit', - 'stoploss_on_exchange': True, - } - - config = { - 'strategy': 'DefaultStrategy', - 'order_types': order_types, - 'dry_run': True, - } - resolver = StrategyResolver(config) - - assert resolver.strategy.order_types - for method in ['buy', 'sell', 'stoploss', 'stoploss_on_exchange']: - assert resolver.strategy.order_types[method] == order_types[method] - - assert log_has("Disabling stoploss_on_exchange during dry-run.", caplog.record_tuples) - - assert log_has("Override strategy 'order_types' with value in config file:" - " {'buy': 'market', 'sell': 'limit', 'stoploss': 'limit'," - " 'stoploss_on_exchange': False}.", caplog.record_tuples) - - def test_strategy_override_order_tif(caplog): caplog.set_level(logging.INFO) From a225672c8776f848597546fe945bb124f3fc4782 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Aug 2019 19:44:15 +0200 Subject: [PATCH 0161/3421] Add tests for dry-run stoposs_on_exchange --- freqtrade/tests/test_freqtradebot.py | 74 +++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 1a4c5159c..7ed918318 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -16,7 +16,7 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import Trade from freqtrade.rpc import RPCMessageType -from freqtrade.state import State +from freqtrade.state import State, RunMode from freqtrade.strategy.interface import SellCheckTuple, SellType from freqtrade.tests.conftest import (get_patched_freqtradebot, get_patched_worker, log_has, log_has_re, @@ -130,7 +130,77 @@ def test_throttle_with_assets(mocker, default_conf) -> None: assert result == -1 -def test_get_trade_stake_amount(default_conf, ticker, limit_buy_order, fee, mocker) -> None: +def test_order_dict_dry_run(default_conf, mocker, caplog) -> None: + patch_RPCManager(mocker) + patch_exchange(mocker) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_balance=MagicMock(return_value=default_conf['stake_amount'] * 2) + ) + conf = default_conf.copy() + conf['runmode'] = RunMode.DRY_RUN + conf['order_types'] = { + 'buy': 'market', + 'sell': 'limit', + 'stoploss': 'limit', + 'stoploss_on_exchange': True, + } + + freqtrade = FreqtradeBot(conf) + assert log_has("Disabling stoploss_on_exchange during dry-run.", caplog.record_tuples) + assert not freqtrade.strategy.order_types['stoploss_on_exchange'] + + caplog.clear() + # is left untouched + conf = default_conf.copy() + conf['runmode'] = RunMode.DRY_RUN + conf['order_types'] = { + 'buy': 'market', + 'sell': 'limit', + 'stoploss': 'limit', + 'stoploss_on_exchange': False, + } + freqtrade = FreqtradeBot(conf) + assert not freqtrade.strategy.order_types['stoploss_on_exchange'] + assert not log_has_re(".*stoploss_on_exchange .* dry-run", caplog.record_tuples) + + +def test_order_dict_live(default_conf, mocker, caplog) -> None: + patch_RPCManager(mocker) + patch_exchange(mocker) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_balance=MagicMock(return_value=default_conf['stake_amount'] * 2) + ) + conf = default_conf.copy() + conf['runmode'] = RunMode.LIVE + conf['order_types'] = { + 'buy': 'market', + 'sell': 'limit', + 'stoploss': 'limit', + 'stoploss_on_exchange': True, + } + + freqtrade = FreqtradeBot(conf) + assert not log_has_re(".*stoploss_on_exchange .* dry-run", caplog.record_tuples) + assert freqtrade.strategy.order_types['stoploss_on_exchange'] + + caplog.clear() + # is left untouched + conf = default_conf.copy() + conf['runmode'] = RunMode.LIVE + conf['order_types'] = { + 'buy': 'market', + 'sell': 'limit', + 'stoploss': 'limit', + 'stoploss_on_exchange': False, + } + freqtrade = FreqtradeBot(conf) + assert not freqtrade.strategy.order_types['stoploss_on_exchange'] + assert not log_has_re(".*stoploss_on_exchange .* dry-run", caplog.record_tuples) + + +def test_get_trade_stake_amount(default_conf, ticker, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( From a1b5c7242e05aa702fc23900ae5401acceb858f8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Aug 2019 20:14:58 +0200 Subject: [PATCH 0162/3421] Change log-has to use record_tuples itself --- freqtrade/tests/conftest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py index 4b9bf6cd8..fdccad02f 100644 --- a/freqtrade/tests/conftest.py +++ b/freqtrade/tests/conftest.py @@ -29,13 +29,13 @@ def log_has(line, logs): # caplog mocker returns log as a tuple: ('freqtrade.something', logging.WARNING, 'foobar') # and we want to match line against foobar in the tuple return reduce(lambda a, b: a or b, - filter(lambda x: x[2] == line, logs), + filter(lambda x: x[2] == line, logs.record_tuples), False) def log_has_re(line, logs): return reduce(lambda a, b: a or b, - filter(lambda x: re.match(line, x[2]), logs), + filter(lambda x: re.match(line, x[2]), logs.record_tuples), False) From 02216073186caaa10561dc258c3cacf2685faa35 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Aug 2019 20:16:34 +0200 Subject: [PATCH 0163/3421] Change log_has for some tests --- freqtrade/tests/data/test_converter.py | 12 +++++------- freqtrade/tests/data/test_history.py | 26 ++++++++++---------------- 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/freqtrade/tests/data/test_converter.py b/freqtrade/tests/data/test_converter.py index f68224e0e..39462bdd8 100644 --- a/freqtrade/tests/data/test_converter.py +++ b/freqtrade/tests/data/test_converter.py @@ -18,7 +18,7 @@ def test_parse_ticker_dataframe(ticker_history_list, caplog): dataframe = parse_ticker_dataframe(ticker_history_list, '5m', pair="UNITTEST/BTC", fill_missing=True) assert dataframe.columns.tolist() == columns - assert log_has('Parsing tickerlist to dataframe', caplog.record_tuples) + assert log_has('Parsing tickerlist to dataframe', caplog) def test_ohlcv_fill_up_missing_data(caplog): @@ -34,8 +34,7 @@ def test_ohlcv_fill_up_missing_data(caplog): assert (data.columns == data2.columns).all() assert log_has(f"Missing data fillup for UNITTEST/BTC: before: " - f"{len(data)} - after: {len(data2)}", - caplog.record_tuples) + f"{len(data)} - after: {len(data2)}", caplog) # Test fillup actually fixes invalid backtest data min_date, max_date = get_timeframe({'UNITTEST/BTC': data}) @@ -97,8 +96,7 @@ def test_ohlcv_fill_up_missing_data2(caplog): assert (data.columns == data2.columns).all() assert log_has(f"Missing data fillup for UNITTEST/BTC: before: " - f"{len(data)} - after: {len(data2)}", - caplog.record_tuples) + f"{len(data)} - after: {len(data2)}", caplog) def test_ohlcv_drop_incomplete(caplog): @@ -140,11 +138,11 @@ def test_ohlcv_drop_incomplete(caplog): data = parse_ticker_dataframe(ticks, ticker_interval, pair="UNITTEST/BTC", fill_missing=False, drop_incomplete=False) assert len(data) == 4 - assert not log_has("Dropping last candle", caplog.record_tuples) + assert not log_has("Dropping last candle", caplog) # Drop last candle data = parse_ticker_dataframe(ticks, ticker_interval, pair="UNITTEST/BTC", fill_missing=False, drop_incomplete=True) assert len(data) == 3 - assert log_has("Dropping last candle", caplog.record_tuples) + assert log_has("Dropping last candle", caplog) diff --git a/freqtrade/tests/data/test_history.py b/freqtrade/tests/data/test_history.py index 424333e99..00f4738f7 100644 --- a/freqtrade/tests/data/test_history.py +++ b/freqtrade/tests/data/test_history.py @@ -64,8 +64,7 @@ def test_load_data_30min_ticker(mocker, caplog, default_conf) -> None: assert isinstance(ld, DataFrame) assert not log_has( 'Download history data for pair: "UNITTEST/BTC", interval: 30m ' - 'and store in None.', - caplog.record_tuples + 'and store in None.', caplog ) @@ -76,8 +75,7 @@ def test_load_data_7min_ticker(mocker, caplog, default_conf) -> None: assert log_has( 'No history data for pair: "UNITTEST/BTC", interval: 7m. ' 'Use --refresh-pairs-cached option or download_backtest_data.py ' - 'script to download the data', - caplog.record_tuples + 'script to download the data', caplog ) @@ -89,8 +87,7 @@ def test_load_data_1min_ticker(ticker_history, mocker, caplog) -> None: assert os.path.isfile(file) is True assert not log_has( 'Download history data for pair: "UNITTEST/BTC", interval: 1m ' - 'and store in None.', - caplog.record_tuples + 'and store in None.', caplog ) _clean_test_file(file) @@ -113,8 +110,7 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, defau assert log_has( 'No history data for pair: "MEME/BTC", interval: 1m. ' 'Use --refresh-pairs-cached option or download_backtest_data.py ' - 'script to download the data', - caplog.record_tuples + 'script to download the data', caplog ) # download a new pair if refresh_pairs is set @@ -126,8 +122,7 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, defau assert os.path.isfile(file) is True assert log_has( 'Download history data for pair: "MEME/BTC", interval: 1m ' - 'and store in None.', - caplog.record_tuples + 'and store in None.', caplog ) with pytest.raises(OperationalException, match=r'Exchange needs to be initialized when.*'): history.load_pair_history(datadir=None, @@ -149,7 +144,7 @@ def test_load_data_live(default_conf, mocker, caplog) -> None: exchange=exchange) assert refresh_mock.call_count == 1 assert len(refresh_mock.call_args_list[0][0][0]) == 2 - assert log_has('Live: Downloading data for all defined pairs ...', caplog.record_tuples) + assert log_has('Live: Downloading data for all defined pairs ...', caplog) def test_load_data_live_noexchange(default_conf, mocker, caplog) -> None: @@ -350,8 +345,7 @@ def test_download_backtesting_data_exception(ticker_history, mocker, caplog, def _clean_test_file(file1_5) assert log_has( 'Failed to download history data for pair: "MEME/BTC", interval: 1m. ' - 'Error: File Error', - caplog.record_tuples + 'Error: File Error', caplog ) @@ -380,7 +374,7 @@ def test_load_partial_missing(caplog) -> None: start_real = tickerdata['UNITTEST/BTC'].iloc[0, 0] assert log_has(f'Missing data at start for pair ' f'UNITTEST/BTC, data starts at {start_real.strftime("%Y-%m-%d %H:%M:%S")}', - caplog.record_tuples) + caplog) # Make sure we start fresh - test missing data at end caplog.clear() start = arrow.get('2018-01-10T00:00:00') @@ -396,7 +390,7 @@ def test_load_partial_missing(caplog) -> None: end_real = arrow.get(tickerdata['UNITTEST/BTC'].iloc[-1, 0]).shift(minutes=5) assert log_has(f'Missing data at end for pair ' f'UNITTEST/BTC, data ends at {end_real.strftime("%Y-%m-%d %H:%M:%S")}', - caplog.record_tuples) + caplog) def test_init(default_conf, mocker) -> None: @@ -560,7 +554,7 @@ def test_validate_backtest_data_warn(default_conf, mocker, caplog) -> None: assert len(caplog.record_tuples) == 1 assert log_has( "UNITTEST/BTC has missing frames: expected 14396, got 13680, that's 716 missing values", - caplog.record_tuples) + caplog) def test_validate_backtest_data(default_conf, mocker, caplog) -> None: From d53f63023ab23536438db8f0dd4d7df46473cf6d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Aug 2019 20:16:52 +0200 Subject: [PATCH 0164/3421] Change log_has to get caplog instead of caplog.record_tuples in more tests --- freqtrade/tests/edge/test_edge.py | 4 +- freqtrade/tests/optimize/test_backtesting.py | 60 ++++++--------- freqtrade/tests/optimize/test_edge_cli.py | 28 ++----- freqtrade/tests/optimize/test_hyperopt.py | 77 +++++++------------- freqtrade/tests/strategy/test_interface.py | 33 ++++----- freqtrade/tests/strategy/test_strategy.py | 7 +- 6 files changed, 72 insertions(+), 137 deletions(-) diff --git a/freqtrade/tests/edge/test_edge.py b/freqtrade/tests/edge/test_edge.py index 45b8e609e..09fa1d93e 100644 --- a/freqtrade/tests/edge/test_edge.py +++ b/freqtrade/tests/edge/test_edge.py @@ -311,7 +311,7 @@ def test_edge_process_no_data(mocker, edge_conf, caplog): assert not edge.calculate() assert len(edge._cached_pairs) == 0 - assert log_has("No data found. Edge is stopped ...", caplog.record_tuples) + assert log_has("No data found. Edge is stopped ...", caplog) assert edge._last_updated == 0 @@ -326,7 +326,7 @@ def test_edge_process_no_trades(mocker, edge_conf, caplog): assert not edge.calculate() assert len(edge._cached_pairs) == 0 - assert log_has("No trades found.", caplog.record_tuples) + assert log_has("No trades found.", caplog) def test_edge_init_error(mocker, edge_conf,): diff --git a/freqtrade/tests/optimize/test_backtesting.py b/freqtrade/tests/optimize/test_backtesting.py index 71d460621..9ed7e7296 100644 --- a/freqtrade/tests/optimize/test_backtesting.py +++ b/freqtrade/tests/optimize/test_backtesting.py @@ -181,21 +181,18 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert 'exchange' in config assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config - assert log_has( - 'Using data directory: {} ...'.format(config['datadir']), - caplog.record_tuples - ) + assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) assert 'ticker_interval' in config - assert not log_has_re('Parameter -i/--ticker-interval detected .*', caplog.record_tuples) + assert not log_has_re('Parameter -i/--ticker-interval detected .*', caplog) assert 'live' not in config - assert not log_has('Parameter -l/--live detected ...', caplog.record_tuples) + assert not log_has('Parameter -l/--live detected ...', caplog) assert 'position_stacking' not in config - assert not log_has('Parameter --enable-position-stacking detected ...', caplog.record_tuples) + assert not log_has('Parameter --enable-position-stacking detected ...', caplog) assert 'refresh_pairs' not in config - assert not log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog.record_tuples) + assert not log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog) assert 'timerange' not in config assert 'export' not in config @@ -235,43 +232,31 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> assert 'datadir' in config assert config['runmode'] == RunMode.BACKTEST - assert log_has( - 'Using data directory: {} ...'.format(config['datadir']), - caplog.record_tuples - ) + assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) assert 'ticker_interval' in config assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', - caplog.record_tuples) + caplog) assert 'live' in config - assert log_has('Parameter -l/--live detected ...', caplog.record_tuples) + assert log_has('Parameter -l/--live detected ...', caplog) assert 'position_stacking' in config - assert log_has('Parameter --enable-position-stacking detected ...', caplog.record_tuples) + assert log_has('Parameter --enable-position-stacking detected ...', caplog) assert 'use_max_market_positions' in config - assert log_has('Parameter --disable-max-market-positions detected ...', caplog.record_tuples) - assert log_has('max_open_trades set to unlimited ...', caplog.record_tuples) + assert log_has('Parameter --disable-max-market-positions detected ...', caplog) + assert log_has('max_open_trades set to unlimited ...', caplog) assert 'refresh_pairs' in config - assert log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog.record_tuples) + assert log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog) assert 'timerange' in config - assert log_has( - 'Parameter --timerange detected: {} ...'.format(config['timerange']), - caplog.record_tuples - ) + assert log_has('Parameter --timerange detected: {} ...'.format(config['timerange']), caplog) assert 'export' in config - assert log_has( - 'Parameter --export detected: {} ...'.format(config['export']), - caplog.record_tuples - ) + assert log_has('Parameter --export detected: {} ...'.format(config['export']), caplog) assert 'exportfilename' in config - assert log_has( - 'Storing backtest results to {} ...'.format(config['exportfilename']), - caplog.record_tuples - ) + assert log_has('Storing backtest results to {} ...'.format(config['exportfilename']), caplog) def test_setup_configuration_unlimited_stake_amount(mocker, default_conf, caplog) -> None: @@ -303,10 +288,7 @@ def test_start(mocker, fee, default_conf, caplog) -> None: ] args = get_args(args) start_backtesting(args) - assert log_has( - 'Starting freqtrade in Backtesting mode', - caplog.record_tuples - ) + assert log_has('Starting freqtrade in Backtesting mode', caplog) assert start_mock.call_count == 1 @@ -360,7 +342,7 @@ def test_backtesting_init_no_ticker_interval(mocker, default_conf, caplog) -> No with pytest.raises(OperationalException): Backtesting(default_conf) log_has("Ticker-interval needs to be set in either configuration " - "or as cli argument `--ticker-interval 5m`", caplog.record_tuples) + "or as cli argument `--ticker-interval 5m`", caplog) def test_tickerdata_to_dataframe_bt(default_conf, mocker) -> None: @@ -511,7 +493,7 @@ def test_backtesting_start(default_conf, mocker, caplog) -> None: 'up to 2017-11-14T22:59:00+00:00 (0 days)..' ] for line in exists: - assert log_has(line, caplog.record_tuples) + assert log_has(line, caplog) def test_backtesting_start_no_data(default_conf, mocker, caplog) -> None: @@ -539,7 +521,7 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog) -> None: backtesting.start() # check the logs, that will contain the backtest result - assert log_has('No data found. Terminating.', caplog.record_tuples) + assert log_has('No data found. Terminating.', caplog) def test_backtest(default_conf, fee, mocker) -> None: @@ -876,7 +858,7 @@ def test_backtest_start_live(default_conf, mocker, caplog): ] for line in exists: - assert log_has(line, caplog.record_tuples) + assert log_has(line, caplog) @pytest.mark.filterwarnings("ignore:DEPRECATED") @@ -936,4 +918,4 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog): ] for line in exists: - assert log_has(line, caplog.record_tuples) + assert log_has(line, caplog) diff --git a/freqtrade/tests/optimize/test_edge_cli.py b/freqtrade/tests/optimize/test_edge_cli.py index badaa5c45..cdc724db2 100644 --- a/freqtrade/tests/optimize/test_edge_cli.py +++ b/freqtrade/tests/optimize/test_edge_cli.py @@ -29,15 +29,12 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert 'exchange' in config assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config - assert log_has( - 'Using data directory: {} ...'.format(config['datadir']), - caplog.record_tuples - ) + assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) assert 'ticker_interval' in config - assert not log_has_re('Parameter -i/--ticker-interval detected .*', caplog.record_tuples) + assert not log_has_re('Parameter -i/--ticker-interval detected .*', caplog) assert 'refresh_pairs' not in config - assert not log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog.record_tuples) + assert not log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog) assert 'timerange' not in config assert 'stoploss_range' not in config @@ -69,21 +66,15 @@ def test_setup_edge_configuration_with_arguments(mocker, edge_conf, caplog) -> N assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config assert config['runmode'] == RunMode.EDGE - assert log_has( - 'Using data directory: {} ...'.format(config['datadir']), - caplog.record_tuples - ) + assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) assert 'ticker_interval' in config assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', - caplog.record_tuples) + caplog) assert 'refresh_pairs' in config - assert log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog.record_tuples) + assert log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog) assert 'timerange' in config - assert log_has( - 'Parameter --timerange detected: {} ...'.format(config['timerange']), - caplog.record_tuples - ) + assert log_has('Parameter --timerange detected: {} ...'.format(config['timerange']), caplog) def test_start(mocker, fee, edge_conf, caplog) -> None: @@ -100,10 +91,7 @@ def test_start(mocker, fee, edge_conf, caplog) -> None: ] args = get_args(args) start_edge(args) - assert log_has( - 'Starting freqtrade in Edge mode', - caplog.record_tuples - ) + assert log_has('Starting freqtrade in Edge mode', caplog) assert start_mock.call_count == 1 diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index e3b049c06..cff1315a0 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -79,21 +79,18 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca assert 'exchange' in config assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config - assert log_has( - 'Using data directory: {} ...'.format(config['datadir']), - caplog.record_tuples - ) + assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) assert 'ticker_interval' in config - assert not log_has_re('Parameter -i/--ticker-interval detected .*', caplog.record_tuples) + assert not log_has_re('Parameter -i/--ticker-interval detected .*', caplog) assert 'live' not in config - assert not log_has('Parameter -l/--live detected ...', caplog.record_tuples) + assert not log_has('Parameter -l/--live detected ...', caplog) assert 'position_stacking' not in config - assert not log_has('Parameter --enable-position-stacking detected ...', caplog.record_tuples) + assert not log_has('Parameter --enable-position-stacking detected ...', caplog) assert 'refresh_pairs' not in config - assert not log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog.record_tuples) + assert not log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog) assert 'timerange' not in config assert 'runmode' in config @@ -130,41 +127,32 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo assert 'datadir' in config assert config['runmode'] == RunMode.HYPEROPT - assert log_has( - 'Using data directory: {} ...'.format(config['datadir']), - caplog.record_tuples - ) + assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) assert 'ticker_interval' in config assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', - caplog.record_tuples) + caplog) assert 'position_stacking' in config - assert log_has('Parameter --enable-position-stacking detected ...', caplog.record_tuples) + assert log_has('Parameter --enable-position-stacking detected ...', caplog) assert 'use_max_market_positions' in config - assert log_has('Parameter --disable-max-market-positions detected ...', caplog.record_tuples) - assert log_has('max_open_trades set to unlimited ...', caplog.record_tuples) + assert log_has('Parameter --disable-max-market-positions detected ...', caplog) + assert log_has('max_open_trades set to unlimited ...', caplog) assert 'refresh_pairs' in config - assert log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog.record_tuples) + assert log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog) assert 'timerange' in config - assert log_has( - 'Parameter --timerange detected: {} ...'.format(config['timerange']), - caplog.record_tuples - ) + assert log_has('Parameter --timerange detected: {} ...'.format(config['timerange']), caplog) assert 'epochs' in config assert log_has('Parameter --epochs detected ... Will run Hyperopt with for 1000 epochs ...', - caplog.record_tuples) + caplog) assert 'spaces' in config - assert log_has( - 'Parameter -s/--spaces detected: {}'.format(config['spaces']), - caplog.record_tuples - ) + assert log_has('Parameter -s/--spaces detected: {}'.format(config['spaces']), caplog) assert 'print_all' in config - assert log_has('Parameter --print-all detected ...', caplog.record_tuples) + assert log_has('Parameter --print-all detected ...', caplog) def test_hyperoptresolver(mocker, default_conf, caplog) -> None: @@ -181,9 +169,9 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None: assert not hasattr(x, 'populate_buy_trend') assert not hasattr(x, 'populate_sell_trend') assert log_has("Custom Hyperopt does not provide populate_sell_trend. " - "Using populate_sell_trend from DefaultStrategy.", caplog.record_tuples) + "Using populate_sell_trend from DefaultStrategy.", caplog) assert log_has("Custom Hyperopt does not provide populate_buy_trend. " - "Using populate_buy_trend from DefaultStrategy.", caplog.record_tuples) + "Using populate_buy_trend from DefaultStrategy.", caplog) assert hasattr(x, "ticker_interval") @@ -229,10 +217,7 @@ def test_start(mocker, default_conf, caplog) -> None: import pprint pprint.pprint(caplog.record_tuples) - assert log_has( - 'Starting freqtrade in Hyperopt mode', - caplog.record_tuples - ) + assert log_has('Starting freqtrade in Hyperopt mode', caplog) assert start_mock.call_count == 1 @@ -257,7 +242,7 @@ def test_start_no_data(mocker, default_conf, caplog) -> None: import pprint pprint.pprint(caplog.record_tuples) - assert log_has('No data found. Terminating.', caplog.record_tuples) + assert log_has('No data found. Terminating.', caplog) def test_start_failure(mocker, default_conf, caplog) -> None: @@ -275,10 +260,7 @@ def test_start_failure(mocker, default_conf, caplog) -> None: args = get_args(args) with pytest.raises(DependencyException): start_hyperopt(args) - assert log_has( - "Please don't use --strategy for hyperopt.", - caplog.record_tuples - ) + assert log_has("Please don't use --strategy for hyperopt.", caplog) def test_start_filelock(mocker, default_conf, caplog) -> None: @@ -294,10 +276,7 @@ def test_start_filelock(mocker, default_conf, caplog) -> None: ] args = get_args(args) start_hyperopt(args) - assert log_has( - "Another running instance of freqtrade Hyperopt detected.", - caplog.record_tuples - ) + assert log_has("Another running instance of freqtrade Hyperopt detected.", caplog) def test_loss_calculation_prefer_correct_trade_count(default_conf, hyperopt_results) -> None: @@ -401,10 +380,7 @@ def test_save_trials_saves_trials(mocker, hyperopt, caplog) -> None: hyperopt.save_trials() trials_file = os.path.join('freqtrade', 'tests', 'optimize', 'ut_trials.pickle') - assert log_has( - 'Saving 1 evaluations to \'{}\''.format(trials_file), - caplog.record_tuples - ) + assert log_has('Saving 1 evaluations to \'{}\''.format(trials_file), caplog) mock_dump.assert_called_once() @@ -413,10 +389,7 @@ def test_read_trials_returns_trials_file(mocker, hyperopt, caplog) -> None: mock_load = mocker.patch('freqtrade.optimize.hyperopt.load', return_value=trials) hyperopt_trial = hyperopt.read_trials() trials_file = os.path.join('freqtrade', 'tests', 'optimize', 'ut_trials.pickle') - assert log_has( - 'Reading Trials from \'{}\''.format(trials_file), - caplog.record_tuples - ) + assert log_has('Reading Trials from \'{}\''.format(trials_file), caplog) assert hyperopt_trial == trials mock_load.assert_called_once() @@ -626,7 +599,7 @@ def test_clean_hyperopt(mocker, default_conf, caplog): Hyperopt(default_conf) assert unlinkmock.call_count == 2 - assert log_has(f"Removing `{TICKERDATA_PICKLE}`.", caplog.record_tuples) + assert log_has(f"Removing `{TICKERDATA_PICKLE}`.", caplog) def test_continue_hyperopt(mocker, default_conf, caplog): @@ -643,4 +616,4 @@ def test_continue_hyperopt(mocker, default_conf, caplog): Hyperopt(default_conf) assert unlinkmock.call_count == 0 - assert log_has(f"Continuing on previous hyperopt results.", caplog.record_tuples) + assert log_has(f"Continuing on previous hyperopt results.", caplog) diff --git a/freqtrade/tests/strategy/test_interface.py b/freqtrade/tests/strategy/test_interface.py index 9f5ab70e3..0eb7630a1 100644 --- a/freqtrade/tests/strategy/test_interface.py +++ b/freqtrade/tests/strategy/test_interface.py @@ -49,12 +49,12 @@ def test_returns_latest_sell_signal(mocker, default_conf, ticker_history): def test_get_signal_empty(default_conf, mocker, caplog): assert (False, False) == _STRATEGY.get_signal('foo', default_conf['ticker_interval'], DataFrame()) - assert log_has('Empty ticker history for pair foo', caplog.record_tuples) + assert log_has('Empty ticker history for pair foo', caplog) caplog.clear() assert (False, False) == _STRATEGY.get_signal('bar', default_conf['ticker_interval'], []) - assert log_has('Empty ticker history for pair bar', caplog.record_tuples) + assert log_has('Empty ticker history for pair bar', caplog) def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ticker_history): @@ -65,7 +65,7 @@ def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ticker_hi ) assert (False, False) == _STRATEGY.get_signal('foo', default_conf['ticker_interval'], ticker_history) - assert log_has('Unable to analyze ticker for pair foo: xyz', caplog.record_tuples) + assert log_has('Unable to analyze ticker for pair foo: xyz', caplog) def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ticker_history): @@ -76,7 +76,7 @@ def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ticker_history ) assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], ticker_history) - assert log_has('Empty dataframe for pair xyz', caplog.record_tuples) + assert log_has('Empty dataframe for pair xyz', caplog) def test_get_signal_old_dataframe(default_conf, mocker, caplog, ticker_history): @@ -91,10 +91,7 @@ def test_get_signal_old_dataframe(default_conf, mocker, caplog, ticker_history): ) assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], ticker_history) - assert log_has( - 'Outdated history for pair xyz. Last tick is 16 minutes old', - caplog.record_tuples - ) + assert log_has('Outdated history for pair xyz. Last tick is 16 minutes old', caplog) def test_get_signal_handles_exceptions(mocker, default_conf): @@ -237,9 +234,8 @@ def test_analyze_ticker_default(ticker_history, mocker, caplog) -> None: assert buy_mock.call_count == 1 assert buy_mock.call_count == 1 - assert log_has('TA Analysis Launched', caplog.record_tuples) - assert not log_has('Skipping TA Analysis for already analyzed candle', - caplog.record_tuples) + assert log_has('TA Analysis Launched', caplog) + assert not log_has('Skipping TA Analysis for already analyzed candle', caplog) caplog.clear() strategy.analyze_ticker(ticker_history, {'pair': 'ETH/BTC'}) @@ -247,9 +243,8 @@ def test_analyze_ticker_default(ticker_history, mocker, caplog) -> None: assert ind_mock.call_count == 2 assert buy_mock.call_count == 2 assert buy_mock.call_count == 2 - assert log_has('TA Analysis Launched', caplog.record_tuples) - assert not log_has('Skipping TA Analysis for already analyzed candle', - caplog.record_tuples) + assert log_has('TA Analysis Launched', caplog) + assert not log_has('Skipping TA Analysis for already analyzed candle', caplog) def test__analyze_ticker_internal_skip_analyze(ticker_history, mocker, caplog) -> None: @@ -275,9 +270,8 @@ def test__analyze_ticker_internal_skip_analyze(ticker_history, mocker, caplog) - assert ind_mock.call_count == 1 assert buy_mock.call_count == 1 assert buy_mock.call_count == 1 - assert log_has('TA Analysis Launched', caplog.record_tuples) - assert not log_has('Skipping TA Analysis for already analyzed candle', - caplog.record_tuples) + assert log_has('TA Analysis Launched', caplog) + assert not log_has('Skipping TA Analysis for already analyzed candle', caplog) caplog.clear() ret = strategy._analyze_ticker_internal(ticker_history, {'pair': 'ETH/BTC'}) @@ -290,6 +284,5 @@ def test__analyze_ticker_internal_skip_analyze(ticker_history, mocker, caplog) - assert 'sell' in ret.columns assert ret['buy'].sum() == 0 assert ret['sell'].sum() == 0 - assert not log_has('TA Analysis Launched', caplog.record_tuples) - assert log_has('Skipping TA Analysis for already analyzed candle', - caplog.record_tuples) + assert not log_has('TA Analysis Launched', caplog) + assert log_has('Skipping TA Analysis for already analyzed candle', caplog) diff --git a/freqtrade/tests/strategy/test_strategy.py b/freqtrade/tests/strategy/test_strategy.py index df8c0f126..8f690193b 100644 --- a/freqtrade/tests/strategy/test_strategy.py +++ b/freqtrade/tests/strategy/test_strategy.py @@ -76,8 +76,7 @@ def test_load_strategy_base64(result, caplog): assert 'adx' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) # Make sure strategy was loaded from base64 (using temp directory)!! assert log_has_re(r"Using resolved strategy TestStrategy from '" - + tempfile.gettempdir() + r"/.*/TestStrategy\.py'\.\.\.", - caplog.record_tuples) + + tempfile.gettempdir() + r"/.*/TestStrategy\.py'\.\.\.", caplog) def test_load_strategy_invalid_directory(result, caplog): @@ -85,7 +84,7 @@ def test_load_strategy_invalid_directory(result, caplog): extra_dir = Path.cwd() / 'some/path' resolver._load_strategy('TestStrategy', config={}, extra_dir=extra_dir) - assert log_has_re(r'Path .*' + r'some.*path.*' + r'.* does not exist', caplog.record_tuples) + assert log_has_re(r'Path .*' + r'some.*path.*' + r'.* does not exist', caplog) assert 'adx' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) @@ -105,7 +104,7 @@ def test_load_staticmethod_importerror(mocker, caplog): match=r"Impossible to load Strategy 'DefaultStrategy'. " r"This class does not exist or contains Python code errors."): StrategyResolver() - assert log_has_re(r".*Error: can't pickle staticmethod objects", caplog.record_tuples) + assert log_has_re(r".*Error: can't pickle staticmethod objects", caplog) def test_strategy(result): From dc5719e1f4a51d054d6ff43cbd2d243474eb8220 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Aug 2019 20:17:22 +0200 Subject: [PATCH 0165/3421] Adapt rpc to new log_has method --- freqtrade/tests/rpc/test_fiat_convert.py | 4 +- freqtrade/tests/rpc/test_rpc_apiserver.py | 20 ++++----- freqtrade/tests/rpc/test_rpc_manager.py | 20 ++++----- freqtrade/tests/rpc/test_rpc_telegram.py | 52 +++++------------------ freqtrade/tests/rpc/test_rpc_webhook.py | 6 +-- 5 files changed, 35 insertions(+), 67 deletions(-) diff --git a/freqtrade/tests/rpc/test_fiat_convert.py b/freqtrade/tests/rpc/test_fiat_convert.py index 66870efcc..1689ecac6 100644 --- a/freqtrade/tests/rpc/test_fiat_convert.py +++ b/freqtrade/tests/rpc/test_fiat_convert.py @@ -91,7 +91,7 @@ def test_fiat_convert_unsupported_crypto(mocker, caplog): mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter._cryptomap', return_value=[]) fiat_convert = CryptoToFiatConverter() assert fiat_convert._find_price(crypto_symbol='CRYPTO_123', fiat_symbol='EUR') == 0.0 - assert log_has('unsupported crypto-symbol CRYPTO_123 - returning 0.0', caplog.record_tuples) + assert log_has('unsupported crypto-symbol CRYPTO_123 - returning 0.0', caplog) def test_fiat_convert_get_price(mocker): @@ -190,7 +190,7 @@ def test_fiat_invalid_response(mocker, caplog): length_cryptomap = len(fiat_convert._cryptomap) assert length_cryptomap == 0 assert log_has('Could not load FIAT Cryptocurrency map for the following problem: TypeError', - caplog.record_tuples) + caplog) def test_convert_amount(mocker): diff --git a/freqtrade/tests/rpc/test_rpc_apiserver.py b/freqtrade/tests/rpc/test_rpc_apiserver.py index bd420ada6..a218d5622 100644 --- a/freqtrade/tests/rpc/test_rpc_apiserver.py +++ b/freqtrade/tests/rpc/test_rpc_apiserver.py @@ -148,8 +148,8 @@ def test_api_run(default_conf, mocker, caplog): assert isinstance(server_mock.call_args_list[0][0][2], Flask) assert hasattr(apiserver, "srv") - assert log_has("Starting HTTP Server at 127.0.0.1:8080", caplog.record_tuples) - assert log_has("Starting Local Rest Server.", caplog.record_tuples) + assert log_has("Starting HTTP Server at 127.0.0.1:8080", caplog) + assert log_has("Starting Local Rest Server.", caplog) # Test binding to public caplog.clear() @@ -165,22 +165,20 @@ def test_api_run(default_conf, mocker, caplog): assert server_mock.call_args_list[0][0][0] == "0.0.0.0" assert server_mock.call_args_list[0][0][1] == "8089" assert isinstance(server_mock.call_args_list[0][0][2], Flask) - assert log_has("Starting HTTP Server at 0.0.0.0:8089", caplog.record_tuples) - assert log_has("Starting Local Rest Server.", caplog.record_tuples) + assert log_has("Starting HTTP Server at 0.0.0.0:8089", caplog) + assert log_has("Starting Local Rest Server.", caplog) assert log_has("SECURITY WARNING - Local Rest Server listening to external connections", - caplog.record_tuples) + caplog) assert log_has("SECURITY WARNING - This is insecure please set to your loopback," - "e.g 127.0.0.1 in config.json", - caplog.record_tuples) + "e.g 127.0.0.1 in config.json", caplog) assert log_has("SECURITY WARNING - No password for local REST Server defined. " - "Please make sure that this is intentional!", - caplog.record_tuples) + "Please make sure that this is intentional!", caplog) # Test crashing flask caplog.clear() mocker.patch('freqtrade.rpc.api_server.make_server', MagicMock(side_effect=Exception)) apiserver.run() - assert log_has("Api server failed to start.", caplog.record_tuples) + assert log_has("Api server failed to start.", caplog) def test_api_cleanup(default_conf, mocker, caplog): @@ -199,7 +197,7 @@ def test_api_cleanup(default_conf, mocker, caplog): apiserver.cleanup() assert stop_mock.shutdown.call_count == 1 - assert log_has("Stopping API Server", caplog.record_tuples) + assert log_has("Stopping API Server", caplog) def test_api_reloadconf(botclient): diff --git a/freqtrade/tests/rpc/test_rpc_manager.py b/freqtrade/tests/rpc/test_rpc_manager.py index 91fd2297f..468e3e8e5 100644 --- a/freqtrade/tests/rpc/test_rpc_manager.py +++ b/freqtrade/tests/rpc/test_rpc_manager.py @@ -19,7 +19,7 @@ def test_init_telegram_disabled(mocker, default_conf, caplog) -> None: default_conf['telegram']['enabled'] = False rpc_manager = RPCManager(get_patched_freqtradebot(mocker, default_conf)) - assert not log_has('Enabling rpc.telegram ...', caplog.record_tuples) + assert not log_has('Enabling rpc.telegram ...', caplog) assert rpc_manager.registered_modules == [] @@ -28,7 +28,7 @@ def test_init_telegram_enabled(mocker, default_conf, caplog) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock()) rpc_manager = RPCManager(get_patched_freqtradebot(mocker, default_conf)) - assert log_has('Enabling rpc.telegram ...', caplog.record_tuples) + assert log_has('Enabling rpc.telegram ...', caplog) len_modules = len(rpc_manager.registered_modules) assert len_modules == 1 assert 'telegram' in [mod.name for mod in rpc_manager.registered_modules] @@ -43,7 +43,7 @@ def test_cleanup_telegram_disabled(mocker, default_conf, caplog) -> None: rpc_manager = RPCManager(freqtradebot) rpc_manager.cleanup() - assert not log_has('Cleaning up rpc.telegram ...', caplog.record_tuples) + assert not log_has('Cleaning up rpc.telegram ...', caplog) assert telegram_mock.call_count == 0 @@ -59,7 +59,7 @@ def test_cleanup_telegram_enabled(mocker, default_conf, caplog) -> None: assert 'telegram' in [mod.name for mod in rpc_manager.registered_modules] rpc_manager.cleanup() - assert log_has('Cleaning up rpc.telegram ...', caplog.record_tuples) + assert log_has('Cleaning up rpc.telegram ...', caplog) assert 'telegram' not in [mod.name for mod in rpc_manager.registered_modules] assert telegram_mock.call_count == 1 @@ -75,7 +75,7 @@ def test_send_msg_telegram_disabled(mocker, default_conf, caplog) -> None: 'status': 'test' }) - assert log_has("Sending rpc message: {'type': status, 'status': 'test'}", caplog.record_tuples) + assert log_has("Sending rpc message: {'type': status, 'status': 'test'}", caplog) assert telegram_mock.call_count == 0 @@ -90,7 +90,7 @@ def test_send_msg_telegram_enabled(mocker, default_conf, caplog) -> None: 'status': 'test' }) - assert log_has("Sending rpc message: {'type': status, 'status': 'test'}", caplog.record_tuples) + assert log_has("Sending rpc message: {'type': status, 'status': 'test'}", caplog) assert telegram_mock.call_count == 1 @@ -100,7 +100,7 @@ def test_init_webhook_disabled(mocker, default_conf, caplog) -> None: default_conf['webhook'] = {'enabled': False} rpc_manager = RPCManager(get_patched_freqtradebot(mocker, default_conf)) - assert not log_has('Enabling rpc.webhook ...', caplog.record_tuples) + assert not log_has('Enabling rpc.webhook ...', caplog) assert rpc_manager.registered_modules == [] @@ -110,7 +110,7 @@ def test_init_webhook_enabled(mocker, default_conf, caplog) -> None: default_conf['webhook'] = {'enabled': True, 'url': "https://DEADBEEF.com"} rpc_manager = RPCManager(get_patched_freqtradebot(mocker, default_conf)) - assert log_has('Enabling rpc.webhook ...', caplog.record_tuples) + assert log_has('Enabling rpc.webhook ...', caplog) assert len(rpc_manager.registered_modules) == 1 assert 'webhook' in [mod.name for mod in rpc_manager.registered_modules] @@ -144,7 +144,7 @@ def test_init_apiserver_disabled(mocker, default_conf, caplog) -> None: default_conf['telegram']['enabled'] = False rpc_manager = RPCManager(get_patched_freqtradebot(mocker, default_conf)) - assert not log_has('Enabling rpc.api_server', caplog.record_tuples) + assert not log_has('Enabling rpc.api_server', caplog) assert rpc_manager.registered_modules == [] assert run_mock.call_count == 0 @@ -160,7 +160,7 @@ def test_init_apiserver_enabled(mocker, default_conf, caplog) -> None: "listen_port": "8080"} rpc_manager = RPCManager(get_patched_freqtradebot(mocker, default_conf)) - assert log_has('Enabling rpc.api_server', caplog.record_tuples) + assert log_has('Enabling rpc.api_server', caplog) assert len(rpc_manager.registered_modules) == 1 assert 'apiserver' in [mod.name for mod in rpc_manager.registered_modules] assert run_mock.call_count == 1 diff --git a/freqtrade/tests/rpc/test_rpc_telegram.py b/freqtrade/tests/rpc/test_rpc_telegram.py index 1bee5bff3..3575520ad 100644 --- a/freqtrade/tests/rpc/test_rpc_telegram.py +++ b/freqtrade/tests/rpc/test_rpc_telegram.py @@ -76,7 +76,7 @@ def test_init(default_conf, mocker, caplog) -> None: "['performance'], ['daily'], ['count'], ['reload_conf'], " \ "['stopbuy'], ['whitelist'], ['blacklist'], ['edge'], ['help'], ['version']]" - assert log_has(message_str, caplog.record_tuples) + assert log_has(message_str, caplog) def test_cleanup(default_conf, mocker) -> None: @@ -102,18 +102,9 @@ def test_authorized_only(default_conf, mocker, caplog) -> None: dummy = DummyCls(bot) dummy.dummy_handler(bot=MagicMock(), update=update) assert dummy.state['called'] is True - assert log_has( - 'Executing handler: dummy_handler for chat_id: 0', - caplog.record_tuples - ) - assert not log_has( - 'Rejected unauthorized message from: 0', - caplog.record_tuples - ) - assert not log_has( - 'Exception occurred within Telegram module', - caplog.record_tuples - ) + assert log_has('Executing handler: dummy_handler for chat_id: 0', caplog) + assert not log_has('Rejected unauthorized message from: 0', caplog) + assert not log_has('Exception occurred within Telegram module', caplog) def test_authorized_only_unauthorized(default_conf, mocker, caplog) -> None: @@ -128,18 +119,9 @@ def test_authorized_only_unauthorized(default_conf, mocker, caplog) -> None: dummy = DummyCls(bot) dummy.dummy_handler(bot=MagicMock(), update=update) assert dummy.state['called'] is False - assert not log_has( - 'Executing handler: dummy_handler for chat_id: 3735928559', - caplog.record_tuples - ) - assert log_has( - 'Rejected unauthorized message from: 3735928559', - caplog.record_tuples - ) - assert not log_has( - 'Exception occurred within Telegram module', - caplog.record_tuples - ) + assert not log_has('Executing handler: dummy_handler for chat_id: 3735928559', caplog) + assert log_has('Rejected unauthorized message from: 3735928559', caplog) + assert not log_has('Exception occurred within Telegram module', caplog) def test_authorized_only_exception(default_conf, mocker, caplog) -> None: @@ -156,18 +138,9 @@ def test_authorized_only_exception(default_conf, mocker, caplog) -> None: dummy.dummy_exception(bot=MagicMock(), update=update) assert dummy.state['called'] is False - assert not log_has( - 'Executing handler: dummy_handler for chat_id: 0', - caplog.record_tuples - ) - assert not log_has( - 'Rejected unauthorized message from: 0', - caplog.record_tuples - ) - assert log_has( - 'Exception occurred within Telegram module', - caplog.record_tuples - ) + assert not log_has('Executing handler: dummy_handler for chat_id: 0', caplog) + assert not log_has('Rejected unauthorized message from: 0', caplog) + assert log_has('Exception occurred within Telegram module', caplog) def test_status(default_conf, update, mocker, fee, ticker, markets) -> None: @@ -1440,7 +1413,4 @@ def test__send_msg_network_error(default_conf, mocker, caplog) -> None: # Bot should've tried to send it twice assert len(bot.method_calls) == 2 - assert log_has( - 'Telegram NetworkError: Oh snap! Trying one more time.', - caplog.record_tuples - ) + assert log_has('Telegram NetworkError: Oh snap! Trying one more time.', caplog) diff --git a/freqtrade/tests/rpc/test_rpc_webhook.py b/freqtrade/tests/rpc/test_rpc_webhook.py index a2dcd9b31..cc491d4dd 100644 --- a/freqtrade/tests/rpc/test_rpc_webhook.py +++ b/freqtrade/tests/rpc/test_rpc_webhook.py @@ -115,7 +115,7 @@ def test_exception_send_msg(default_conf, mocker, caplog): webhook = Webhook(get_patched_freqtradebot(mocker, default_conf)) webhook.send_msg({'type': RPCMessageType.BUY_NOTIFICATION}) assert log_has(f"Message type {RPCMessageType.BUY_NOTIFICATION} not configured for webhooks", - caplog.record_tuples) + caplog) default_conf["webhook"] = get_webhook_dict() default_conf["webhook"]["webhookbuy"]["value1"] = "{DEADBEEF:8f}" @@ -135,7 +135,7 @@ def test_exception_send_msg(default_conf, mocker, caplog): } webhook.send_msg(msg) assert log_has("Problem calling Webhook. Please check your webhook configuration. " - "Exception: 'DEADBEEF'", caplog.record_tuples) + "Exception: 'DEADBEEF'", caplog) msg_mock = MagicMock() mocker.patch("freqtrade.rpc.webhook.Webhook._send_msg", msg_mock) @@ -164,4 +164,4 @@ def test__send_msg(default_conf, mocker, caplog): post = MagicMock(side_effect=RequestException) mocker.patch("freqtrade.rpc.webhook.post", post) webhook._send_msg(msg) - assert log_has('Could not call webhook url. Exception: ', caplog.record_tuples) + assert log_has('Could not call webhook url. Exception: ', caplog) From a636dda07d20addd1b4f80df943c3701d5192cd0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Aug 2019 20:17:39 +0200 Subject: [PATCH 0166/3421] Fix remaining tests using log_has --- freqtrade/tests/exchange/test_exchange.py | 45 +++++------ freqtrade/tests/test_configuration.py | 91 +++++++++-------------- freqtrade/tests/test_freqtradebot.py | 86 ++++++++++----------- freqtrade/tests/test_main.py | 14 ++-- freqtrade/tests/test_persistence.py | 20 +++-- freqtrade/tests/test_plotting.py | 10 +-- 6 files changed, 114 insertions(+), 152 deletions(-) diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index ebe5ad9df..e8a7201f1 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -62,7 +62,7 @@ async def async_ccxt_exception(mocker, default_conf, api_mock, fun, mock_ccxt_fu def test_init(default_conf, mocker, caplog): caplog.set_level(logging.INFO) get_patched_exchange(mocker, default_conf) - assert log_has('Instance is running with dry_run enabled', caplog.record_tuples) + assert log_has('Instance is running with dry_run enabled', caplog) def test_init_ccxt_kwargs(default_conf, mocker, caplog): @@ -71,8 +71,7 @@ def test_init_ccxt_kwargs(default_conf, mocker, caplog): conf = copy.deepcopy(default_conf) conf['exchange']['ccxt_async_config'] = {'aiohttp_trust_env': True} ex = Exchange(conf) - assert log_has("Applying additional ccxt config: {'aiohttp_trust_env': True}", - caplog.record_tuples) + assert log_has("Applying additional ccxt config: {'aiohttp_trust_env': True}", caplog) assert ex._api_async.aiohttp_trust_env assert not ex._api.aiohttp_trust_env @@ -81,20 +80,18 @@ def test_init_ccxt_kwargs(default_conf, mocker, caplog): conf = copy.deepcopy(default_conf) conf['exchange']['ccxt_config'] = {'TestKWARG': 11} ex = Exchange(conf) - assert not log_has("Applying additional ccxt config: {'aiohttp_trust_env': True}", - caplog.record_tuples) + assert not log_has("Applying additional ccxt config: {'aiohttp_trust_env': True}", caplog) assert not ex._api_async.aiohttp_trust_env assert hasattr(ex._api, 'TestKWARG') assert ex._api.TestKWARG == 11 assert not hasattr(ex._api_async, 'TestKWARG') - assert log_has("Applying additional ccxt config: {'TestKWARG': 11}", - caplog.record_tuples) + assert log_has("Applying additional ccxt config: {'TestKWARG': 11}", caplog) def test_destroy(default_conf, mocker, caplog): caplog.set_level(logging.DEBUG) get_patched_exchange(mocker, default_conf) - assert log_has('Exchange object destroyed, closing async loop', caplog.record_tuples) + assert log_has('Exchange object destroyed, closing async loop', caplog) def test_init_exception(default_conf, mocker): @@ -120,8 +117,7 @@ def test_exchange_resolver(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) exchange = ExchangeResolver('Bittrex', default_conf).exchange assert isinstance(exchange, Exchange) - assert log_has_re(r"No .* specific subclass found. Using the generic class instead.", - caplog.record_tuples) + assert log_has_re(r"No .* specific subclass found. Using the generic class instead.", caplog) caplog.clear() exchange = ExchangeResolver('kraken', default_conf).exchange @@ -129,7 +125,7 @@ def test_exchange_resolver(default_conf, mocker, caplog): assert isinstance(exchange, Kraken) assert not isinstance(exchange, Binance) assert not log_has_re(r"No .* specific subclass found. Using the generic class instead.", - caplog.record_tuples) + caplog) exchange = ExchangeResolver('binance', default_conf).exchange assert isinstance(exchange, Exchange) @@ -137,7 +133,7 @@ def test_exchange_resolver(default_conf, mocker, caplog): assert not isinstance(exchange, Kraken) assert not log_has_re(r"No .* specific subclass found. Using the generic class instead.", - caplog.record_tuples) + caplog) def test_validate_order_time_in_force(default_conf, mocker, caplog): @@ -249,8 +245,7 @@ def test__load_async_markets(default_conf, mocker, caplog): exchange._api_async.load_markets = Mock(side_effect=ccxt.BaseError("deadbeef")) exchange._load_async_markets() - assert log_has('Could not load async markets. Reason: deadbeef', - caplog.record_tuples) + assert log_has('Could not load async markets. Reason: deadbeef', caplog) def test__load_markets(default_conf, mocker, caplog): @@ -262,7 +257,7 @@ def test__load_markets(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) Exchange(default_conf) - assert log_has('Unable to initialize markets. Reason: SomeError', caplog.record_tuples) + assert log_has('Unable to initialize markets. Reason: SomeError', caplog) expected_return = {'ETH/BTC': 'available'} api_mock = MagicMock() @@ -298,7 +293,7 @@ def test__reload_markets(default_conf, mocker, caplog): exchange._last_markets_refresh = arrow.utcnow().timestamp - 15 * 60 exchange._reload_markets() assert exchange.markets == updated_markets - assert log_has('Performing scheduled market reload..', caplog.record_tuples) + assert log_has('Performing scheduled market reload..', caplog) def test__reload_markets_exception(default_conf, mocker, caplog): @@ -312,7 +307,7 @@ def test__reload_markets_exception(default_conf, mocker, caplog): # less than 10 minutes have passed, no reload exchange._reload_markets() assert exchange._last_markets_refresh == 0 - assert log_has_re(r"Could not reload markets.*", caplog.record_tuples) + assert log_has_re(r"Could not reload markets.*", caplog) def test_validate_pairs(default_conf, mocker): # test exchange.validate_pairs directly @@ -357,8 +352,7 @@ def test_validate_pairs_exception(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value={})) Exchange(default_conf) - assert log_has('Unable to validate pairs (assuming they are correct).', - caplog.record_tuples) + assert log_has('Unable to validate pairs (assuming they are correct).', caplog) def test_validate_pairs_restricted(default_conf, mocker, caplog): @@ -374,8 +368,7 @@ def test_validate_pairs_restricted(default_conf, mocker, caplog): Exchange(default_conf) assert log_has(f"Pair XRP/BTC is restricted for some users on this exchange." f"Please check if you are impacted by this restriction " - f"on the exchange and eventually remove XRP/BTC from your whitelist.", - caplog.record_tuples) + f"on the exchange and eventually remove XRP/BTC from your whitelist.", caplog) def test_validate_timeframes(default_conf, mocker): @@ -1060,7 +1053,7 @@ def test_refresh_latest_ohlcv(mocker, default_conf, caplog) -> None: assert not exchange._klines exchange.refresh_latest_ohlcv(pairs) - assert log_has(f'Refreshing ohlcv data for {len(pairs)} pairs', caplog.record_tuples) + assert log_has(f'Refreshing ohlcv data for {len(pairs)} pairs', caplog) assert exchange._klines assert exchange._api_async.fetch_ohlcv.call_count == 2 for pair in pairs: @@ -1079,7 +1072,7 @@ def test_refresh_latest_ohlcv(mocker, default_conf, caplog) -> None: assert exchange._api_async.fetch_ohlcv.call_count == 2 assert log_has(f"Using cached ohlcv data for pair {pairs[0][0]}, interval {pairs[0][1]} ...", - caplog.record_tuples) + caplog) @pytest.mark.asyncio @@ -1109,7 +1102,7 @@ async def test__async_get_candle_history(default_conf, mocker, caplog, exchange_ assert res[1] == "5m" assert res[2] == tick assert exchange._api_async.fetch_ohlcv.call_count == 1 - assert not log_has(f"Using cached ohlcv data for {pair} ...", caplog.record_tuples) + assert not log_has(f"Using cached ohlcv data for {pair} ...", caplog) # exchange = Exchange(default_conf) await async_ccxt_exception(mocker, default_conf, MagicMock(), @@ -1168,8 +1161,8 @@ def test_refresh_latest_ohlcv_inv_result(default_conf, mocker, caplog): # Test that each is in list at least once as order is not guaranteed assert type(res[0]) is tuple or type(res[1]) is tuple assert type(res[0]) is TypeError or type(res[1]) is TypeError - assert log_has("Error loading ETH/BTC. Result was [[]].", caplog.record_tuples) - assert log_has("Async code raised an exception: TypeError", caplog.record_tuples) + assert log_has("Error loading ETH/BTC. Result was [[]].", caplog) + assert log_has("Async code raised an exception: TypeError", caplog) @pytest.mark.parametrize("exchange_name", EXCHANGES) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index e325a0de2..55df3acf7 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -72,7 +72,7 @@ def test__args_to_config(caplog): # No warnings ... configuration._args_to_config(config, argname="strategy_path", logstring="DeadBeef") assert len(w) == 0 - assert log_has("DeadBeef", caplog.record_tuples) + assert log_has("DeadBeef", caplog) assert config['strategy_path'] == "TestTest" configuration = Configuration(args) @@ -84,7 +84,7 @@ def test__args_to_config(caplog): assert len(w) == 1 assert issubclass(w[-1].category, DeprecationWarning) assert "DEPRECATED: Going away soon!" in str(w[-1].message) - assert log_has("DeadBeef", caplog.record_tuples) + assert log_has("DeadBeef", caplog) assert config['strategy_path'] == "TestTest" @@ -98,7 +98,7 @@ def test_load_config_max_open_trades_zero(default_conf, mocker, caplog) -> None: assert validated_conf['max_open_trades'] == 0 assert 'internals' in validated_conf - assert log_has('Validating configuration ...', caplog.record_tuples) + assert log_has('Validating configuration ...', caplog) def test_load_config_combine_dicts(default_conf, mocker, caplog) -> None: @@ -130,7 +130,7 @@ def test_load_config_combine_dicts(default_conf, mocker, caplog) -> None: assert validated_conf['exchange']['pair_whitelist'] == conf2['exchange']['pair_whitelist'] assert 'internals' in validated_conf - assert log_has('Validating configuration ...', caplog.record_tuples) + assert log_has('Validating configuration ...', caplog) def test_load_config_max_open_trades_minus_one(default_conf, mocker, caplog) -> None: @@ -143,7 +143,7 @@ def test_load_config_max_open_trades_minus_one(default_conf, mocker, caplog) -> assert validated_conf['max_open_trades'] > 999999999 assert validated_conf['max_open_trades'] == float('inf') - assert log_has('Validating configuration ...', caplog.record_tuples) + assert log_has('Validating configuration ...', caplog) assert "runmode" in validated_conf assert validated_conf['runmode'] == RunMode.DRY_RUN @@ -280,8 +280,8 @@ def test_show_info(default_conf, mocker, caplog) -> None: configuration = Configuration(args) configuration.get_config() - assert log_has('Using DB: "sqlite:///tmp/testdb"', caplog.record_tuples) - assert log_has('Dry run is enabled', caplog.record_tuples) + assert log_has('Using DB: "sqlite:///tmp/testdb"', caplog) + assert log_has('Dry run is enabled', caplog) def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> None: @@ -303,21 +303,18 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert 'exchange' in config assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config - assert log_has( - 'Using data directory: {} ...'.format(config['datadir']), - caplog.record_tuples - ) + assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) assert 'ticker_interval' in config - assert not log_has('Parameter -i/--ticker-interval detected ...', caplog.record_tuples) + assert not log_has('Parameter -i/--ticker-interval detected ...', caplog) assert 'live' not in config - assert not log_has('Parameter -l/--live detected ...', caplog.record_tuples) + assert not log_has('Parameter -l/--live detected ...', caplog) assert 'position_stacking' not in config - assert not log_has('Parameter --enable-position-stacking detected ...', caplog.record_tuples) + assert not log_has('Parameter --enable-position-stacking detected ...', caplog) assert 'refresh_pairs' not in config - assert not log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog.record_tuples) + assert not log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog) assert 'timerange' not in config assert 'export' not in config @@ -355,37 +352,28 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non assert 'exchange' in config assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config - assert log_has( - 'Using data directory: {} ...'.format(config['datadir']), - caplog.record_tuples - ) + assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) assert 'ticker_interval' in config assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', - caplog.record_tuples) + caplog) assert 'live' in config - assert log_has('Parameter -l/--live detected ...', caplog.record_tuples) + assert log_has('Parameter -l/--live detected ...', caplog) assert 'position_stacking'in config - assert log_has('Parameter --enable-position-stacking detected ...', caplog.record_tuples) + assert log_has('Parameter --enable-position-stacking detected ...', caplog) assert 'use_max_market_positions' in config - assert log_has('Parameter --disable-max-market-positions detected ...', caplog.record_tuples) - assert log_has('max_open_trades set to unlimited ...', caplog.record_tuples) + assert log_has('Parameter --disable-max-market-positions detected ...', caplog) + assert log_has('max_open_trades set to unlimited ...', caplog) assert 'refresh_pairs'in config - assert log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog.record_tuples) + assert log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog) assert 'timerange' in config - assert log_has( - 'Parameter --timerange detected: {} ...'.format(config['timerange']), - caplog.record_tuples - ) + assert log_has('Parameter --timerange detected: {} ...'.format(config['timerange']), caplog) assert 'export' in config - assert log_has( - 'Parameter --export detected: {} ...'.format(config['export']), - caplog.record_tuples - ) + assert log_has('Parameter --export detected: {} ...'.format(config['export']), caplog) def test_setup_configuration_with_stratlist(mocker, default_conf, caplog) -> None: @@ -415,16 +403,13 @@ def test_setup_configuration_with_stratlist(mocker, default_conf, caplog) -> Non assert 'exchange' in config assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config - assert log_has( - 'Using data directory: {} ...'.format(config['datadir']), - caplog.record_tuples - ) + assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) assert 'ticker_interval' in config assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', - caplog.record_tuples) + caplog) assert 'strategy_list' in config - assert log_has('Using strategy list of 2 Strategies', caplog.record_tuples) + assert log_has('Using strategy list of 2 Strategies', caplog) assert 'position_stacking' not in config @@ -433,10 +418,7 @@ def test_setup_configuration_with_stratlist(mocker, default_conf, caplog) -> Non assert 'timerange' not in config assert 'export' in config - assert log_has( - 'Parameter --export detected: {} ...'.format(config['export']), - caplog.record_tuples - ) + assert log_has('Parameter --export detected: {} ...'.format(config['export']), caplog) def test_hyperopt_with_arguments(mocker, default_conf, caplog) -> None: @@ -455,11 +437,11 @@ def test_hyperopt_with_arguments(mocker, default_conf, caplog) -> None: assert 'epochs' in config assert int(config['epochs']) == 10 assert log_has('Parameter --epochs detected ... Will run Hyperopt with for 10 epochs ...', - caplog.record_tuples) + caplog) assert 'spaces' in config assert config['spaces'] == ['all'] - assert log_has('Parameter -s/--spaces detected: [\'all\']', caplog.record_tuples) + assert log_has('Parameter -s/--spaces detected: [\'all\']', caplog) assert "runmode" in config assert config['runmode'] == RunMode.HYPEROPT @@ -469,38 +451,35 @@ def test_check_exchange(default_conf, caplog) -> None: default_conf.get('exchange').update({'name': 'BITTREX'}) assert check_exchange(default_conf) assert log_has_re(r"Exchange .* is officially supported by the Freqtrade development team\.", - caplog.record_tuples) + caplog) caplog.clear() # Test an officially supported by Freqtrade team exchange default_conf.get('exchange').update({'name': 'binance'}) assert check_exchange(default_conf) assert log_has_re(r"Exchange .* is officially supported by the Freqtrade development team\.", - caplog.record_tuples) + caplog) caplog.clear() # Test an available exchange, supported by ccxt default_conf.get('exchange').update({'name': 'kraken'}) assert check_exchange(default_conf) assert log_has_re(r"Exchange .* is supported by ccxt and .* not officially supported " - r"by the Freqtrade development team\. .*", - caplog.record_tuples) + r"by the Freqtrade development team\. .*", caplog) caplog.clear() # Test a 'bad' exchange, which known to have serious problems default_conf.get('exchange').update({'name': 'bitmex'}) assert not check_exchange(default_conf) assert log_has_re(r"Exchange .* is known to not work with the bot yet\. " - r"Use it only for development and testing purposes\.", - caplog.record_tuples) + r"Use it only for development and testing purposes\.", caplog) caplog.clear() # Test a 'bad' exchange with check_for_bad=False default_conf.get('exchange').update({'name': 'bitmex'}) assert check_exchange(default_conf, False) assert log_has_re(r"Exchange .* is supported by ccxt and .* not officially supported " - r"by the Freqtrade development team\. .*", - caplog.record_tuples) + r"by the Freqtrade development team\. .*", caplog) caplog.clear() # Test an invalid exchange @@ -526,7 +505,7 @@ def test_cli_verbose_with_params(default_conf, mocker, caplog) -> None: validated_conf = configuration.load_config() assert validated_conf.get('verbosity') == 3 - assert log_has('Verbosity set to 3', caplog.record_tuples) + assert log_has('Verbosity set to 3', caplog) def test_set_loggers() -> None: @@ -592,7 +571,7 @@ def test_load_config_warn_forcebuy(default_conf, mocker, caplog) -> None: validated_conf = configuration.load_config() assert validated_conf.get('forcebuy_enable') - assert log_has('`forcebuy` RPC message enabled.', caplog.record_tuples) + assert log_has('`forcebuy` RPC message enabled.', caplog) def test_validate_default_conf(default_conf) -> None: @@ -605,7 +584,7 @@ def test_create_datadir(mocker, default_conf, caplog) -> None: create_datadir(default_conf, '/foo/bar') assert md.call_args[1]['parents'] is True - assert log_has('Created data directory: /foo/bar', caplog.record_tuples) + assert log_has('Created data directory: /foo/bar', caplog) def test_validate_tsl(default_conf): diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 1a4c5159c..cf9a4fa29 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -63,7 +63,7 @@ def test_cleanup(mocker, default_conf, caplog) -> None: mocker.patch('freqtrade.persistence.cleanup', mock_cleanup) freqtrade = get_patched_freqtradebot(mocker, default_conf) freqtrade.cleanup() - assert log_has('Cleaning up modules ...', caplog.record_tuples) + assert log_has('Cleaning up modules ...', caplog) assert mock_cleanup.call_count == 1 @@ -76,7 +76,7 @@ def test_worker_running(mocker, default_conf, caplog) -> None: state = worker._worker(old_state=None) assert state is State.RUNNING - assert log_has('Changing state to: RUNNING', caplog.record_tuples) + assert log_has('Changing state to: RUNNING', caplog) assert mock_throttle.call_count == 1 # Check strategy is loaded, and received a dataprovider object assert worker.freqtrade.strategy @@ -93,7 +93,7 @@ def test_worker_stopped(mocker, default_conf, caplog) -> None: worker.state = State.STOPPED state = worker._worker(old_state=State.RUNNING) assert state is State.STOPPED - assert log_has('Changing state to: STOPPED', caplog.record_tuples) + assert log_has('Changing state to: STOPPED', caplog) assert mock_throttle.call_count == 0 assert mock_sleep.call_count == 1 @@ -111,7 +111,7 @@ def test_throttle(mocker, default_conf, caplog) -> None: assert result == 42 assert end - start > 0.1 - assert log_has('Throttling throttled_func for 0.10 seconds', caplog.record_tuples) + assert log_has('Throttling throttled_func for 0.10 seconds', caplog) result = worker._throttle(throttled_func, min_secs=-1) assert result == 42 @@ -262,7 +262,7 @@ def test_edge_overrides_stoploss(limit_buy_order, fee, markets, caplog, mocker, # stoploss shoud be hit assert freqtrade.handle_trade(trade) is True - assert log_has('executed sell, reason: SellType.STOP_LOSS', caplog.record_tuples) + assert log_has('executed sell, reason: SellType.STOP_LOSS', caplog) assert trade.sell_reason == SellType.STOP_LOSS.value @@ -582,8 +582,7 @@ def test_create_trade_no_pairs_let(default_conf, ticker, limit_buy_order, fee, assert freqtrade.create_trade() assert not freqtrade.create_trade() - assert log_has("No currency pair in whitelist, but checking to sell open trades.", - caplog.record_tuples) + assert log_has("No currency pair in whitelist, but checking to sell open trades.", caplog) def test_create_trade_no_pairs_in_whitelist(default_conf, ticker, limit_buy_order, fee, @@ -602,7 +601,7 @@ def test_create_trade_no_pairs_in_whitelist(default_conf, ticker, limit_buy_orde patch_get_signal(freqtrade) assert not freqtrade.create_trade() - assert log_has("Whitelist is empty.", caplog.record_tuples) + assert log_has("Whitelist is empty.", caplog) def test_create_trade_no_signal(default_conf, fee, mocker) -> None: @@ -657,8 +656,7 @@ def test_process_trade_creation(default_conf, ticker, limit_buy_order, assert trade.amount == 90.99181073703367 assert log_has( - 'Buy signal found: about create a new trade with stake_amount: 0.001 ...', - caplog.record_tuples + 'Buy signal found: about create a new trade with stake_amount: 0.001 ...', caplog ) @@ -1025,7 +1023,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, }) mocker.patch('freqtrade.exchange.Exchange.get_order', stoploss_order_hit) assert freqtrade.handle_stoploss_on_exchange(trade) is True - assert log_has('STOP_LOSS_LIMIT is hit for {}.'.format(trade), caplog.record_tuples) + assert log_has('STOP_LOSS_LIMIT is hit for {}.'.format(trade), caplog) assert trade.stoploss_order_id is None assert trade.is_open is False @@ -1034,7 +1032,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, side_effect=DependencyException() ) freqtrade.handle_stoploss_on_exchange(trade) - assert log_has('Unable to place a stoploss order on exchange: ', caplog.record_tuples) + assert log_has('Unable to place a stoploss order on exchange: ', caplog) # Fifth case: get_order returns InvalidOrder # It should try to add stoploss order @@ -1196,8 +1194,7 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c mocker.patch('freqtrade.exchange.Exchange.cancel_order', side_effect=InvalidOrderException()) mocker.patch('freqtrade.exchange.Exchange.get_order', stoploss_order_hanging) freqtrade.handle_trailing_stoploss_on_exchange(trade, stoploss_order_hanging) - assert log_has_re(r"Could not cancel stoploss order abcd for pair ETH/BTC.*", - caplog.record_tuples) + assert log_has_re(r"Could not cancel stoploss order abcd for pair ETH/BTC.*", caplog) # Still try to create order assert stoploss_limit.call_count == 1 @@ -1208,8 +1205,7 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c mocker.patch("freqtrade.exchange.Exchange.stoploss_limit", side_effect=DependencyException()) freqtrade.handle_trailing_stoploss_on_exchange(trade, stoploss_order_hanging) assert cancel_mock.call_count == 1 - assert log_has_re(r"Could create trailing stoploss order for pair ETH/BTC\..*", - caplog.record_tuples) + assert log_has_re(r"Could create trailing stoploss order for pair ETH/BTC\..*", caplog) def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, @@ -1340,7 +1336,7 @@ def test_process_maybe_execute_buy_exception(mocker, default_conf, caplog) -> No MagicMock(side_effect=DependencyException) ) freqtrade.process_maybe_execute_buy() - log_has('Unable to create trade:', caplog.record_tuples) + assert log_has('Unable to create trade: ', caplog) def test_process_maybe_execute_sell(mocker, default_conf, limit_buy_order, caplog) -> None: @@ -1358,8 +1354,7 @@ def test_process_maybe_execute_sell(mocker, default_conf, limit_buy_order, caplo assert not freqtrade.process_maybe_execute_sell(trade) # Test amount not modified by fee-logic assert not log_has( - 'Applying fee to amount for Trade {} from 90.99181073 to 90.81'.format(trade), - caplog.record_tuples + 'Applying fee to amount for Trade {} from 90.99181073 to 90.81'.format(trade), caplog ) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_real_amount', return_value=90.81) @@ -1382,7 +1377,7 @@ def test_process_maybe_execute_sell_exception(mocker, default_conf, side_effect=DependencyException() ) freqtrade.process_maybe_execute_sell(trade) - assert log_has('Unable to sell trade: ', caplog.record_tuples) + assert log_has('Unable to sell trade: ', caplog) def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> None: @@ -1401,7 +1396,7 @@ def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> No trade.open_fee = 0.001 freqtrade.update_trade_state(trade) # Test amount not modified by fee-logic - assert not log_has_re(r'Applying fee to .*', caplog.record_tuples) + assert not log_has_re(r'Applying fee to .*', caplog) assert trade.open_order_id is None assert trade.amount == limit_buy_order['amount'] @@ -1418,7 +1413,7 @@ def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> No # Assert we call handle_trade() if trade is feasible for execution freqtrade.update_trade_state(trade) - assert log_has_re('Found open order for.*', caplog.record_tuples) + assert log_has_re('Found open order for.*', caplog) def test_update_trade_state_withorderdict(default_conf, trades_for_order, limit_buy_order, mocker): @@ -1457,7 +1452,7 @@ def test_update_trade_state_exception(mocker, default_conf, side_effect=OperationalException() ) freqtrade.update_trade_state(trade) - assert log_has('Could not update trade amount: ', caplog.record_tuples) + assert log_has('Could not update trade amount: ', caplog) def test_update_trade_state_orderexception(mocker, default_conf, caplog) -> None: @@ -1473,7 +1468,7 @@ def test_update_trade_state_orderexception(mocker, default_conf, caplog) -> None grm_mock = mocker.patch("freqtrade.freqtradebot.FreqtradeBot.get_real_amount", MagicMock()) freqtrade.update_trade_state(trade) assert grm_mock.call_count == 0 - assert log_has(f'Unable to fetch order {trade.open_order_id}: ', caplog.record_tuples) + assert log_has(f'Unable to fetch order {trade.open_order_id}: ', caplog) def test_update_trade_state_sell(default_conf, trades_for_order, limit_sell_order, mocker): @@ -1632,7 +1627,7 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order, # if ROI is reached we must sell patch_get_signal(freqtrade, value=(False, True)) assert freqtrade.handle_trade(trade) - assert log_has('Required profit reached. Selling..', caplog.record_tuples) + assert log_has('Required profit reached. Selling..', caplog) def test_handle_trade_experimental( @@ -1662,7 +1657,7 @@ def test_handle_trade_experimental( patch_get_signal(freqtrade, value=(False, True)) assert freqtrade.handle_trade(trade) - assert log_has('Sell signal received. Selling..', caplog.record_tuples) + assert log_has('Sell signal received. Selling..', caplog) def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order, @@ -1768,7 +1763,7 @@ def test_check_handle_cancelled_buy(default_conf, ticker, limit_buy_order_old, trades = Trade.query.filter(Trade.open_order_id.is_(trade_buy.open_order_id)).all() nb_trades = len(trades) assert nb_trades == 0 - assert log_has_re("Buy order canceled on Exchange for Trade.*", caplog.record_tuples) + assert log_has_re("Buy order canceled on Exchange for Trade.*", caplog) def test_check_handle_timedout_buy_exception(default_conf, ticker, limit_buy_order_old, @@ -1881,7 +1876,7 @@ def test_check_handle_cancelled_sell(default_conf, ticker, limit_sell_order_old, assert cancel_order_mock.call_count == 0 assert rpc_mock.call_count == 1 assert trade_sell.is_open is True - assert log_has_re("Sell order canceled on exchange for Trade.*", caplog.record_tuples) + assert log_has_re("Sell order canceled on exchange for Trade.*", caplog) def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old_partial, @@ -1959,7 +1954,7 @@ def test_check_handle_timedout_exception(default_conf, ticker, mocker, caplog) - freqtrade.check_handle_timedout() assert log_has_re(r'Cannot query order for Trade\(id=1, pair=ETH/BTC, amount=90.99181073, ' r'open_rate=0.00001099, open_since=10 hours ago\) due to Traceback \(most ' - r'recent call last\):\n.*', caplog.record_tuples) + r'recent call last\):\n.*', caplog) def test_handle_timedout_limit_buy(mocker, default_conf) -> None: @@ -2183,7 +2178,7 @@ def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee, freqtrade.execute_sell(trade=trade, limit=1234, sell_reason=SellType.STOP_LOSS) assert sellmock.call_count == 1 - assert log_has('Could not cancel stoploss order abcd', caplog.record_tuples) + assert log_has('Could not cancel stoploss order abcd', caplog) def test_execute_sell_with_stoploss_on_exchange(default_conf, @@ -2609,7 +2604,7 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, markets, caplog, assert freqtrade.handle_trade(trade) is True assert log_has( f'HIT STOP: current price at 0.000012, stop loss is 0.000015, ' - f'initial stop loss was at 0.000010, trade opened at 0.000011', caplog.record_tuples) + f'initial stop loss was at 0.000010, trade opened at 0.000011', caplog) assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value @@ -2651,9 +2646,8 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, markets })) # stop-loss not reached, adjusted stoploss assert freqtrade.handle_trade(trade) is False - assert log_has(f'using positive stop loss: 0.01 offset: 0 profit: 0.2666%', - caplog.record_tuples) - assert log_has(f'adjusted stop loss', caplog.record_tuples) + assert log_has(f'using positive stop loss: 0.01 offset: 0 profit: 0.2666%', caplog) + assert log_has(f'adjusted stop loss', caplog) assert trade.stop_loss == 0.0000138501 mocker.patch('freqtrade.exchange.Exchange.get_ticker', @@ -2667,7 +2661,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, markets assert log_has( f'HIT STOP: current price at {buy_price + 0.000002:.6f}, ' f'stop loss is {trade.stop_loss:.6f}, ' - f'initial stop loss was at 0.000010, trade opened at 0.000011', caplog.record_tuples) + f'initial stop loss was at 0.000010, trade opened at 0.000011', caplog) def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, @@ -2710,9 +2704,8 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, })) # stop-loss not reached, adjusted stoploss assert freqtrade.handle_trade(trade) is False - assert log_has(f'using positive stop loss: 0.01 offset: 0.011 profit: 0.2666%', - caplog.record_tuples) - assert log_has(f'adjusted stop loss', caplog.record_tuples) + assert log_has(f'using positive stop loss: 0.01 offset: 0.011 profit: 0.2666%', caplog) + assert log_has(f'adjusted stop loss', caplog) assert trade.stop_loss == 0.0000138501 mocker.patch('freqtrade.exchange.Exchange.get_ticker', @@ -2726,7 +2719,7 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, assert log_has( f'HIT STOP: current price at {buy_price + 0.000002:.6f}, ' f'stop loss is {trade.stop_loss:.6f}, ' - f'initial stop loss was at 0.000010, trade opened at 0.000011', caplog.record_tuples) + f'initial stop loss was at 0.000010, trade opened at 0.000011', caplog) assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value @@ -2777,7 +2770,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, # stop-loss should not be adjusted as offset is not reached yet assert freqtrade.handle_trade(trade) is False - assert not log_has(f'adjusted stop loss', caplog.record_tuples) + assert not log_has(f'adjusted stop loss', caplog) assert trade.stop_loss == 0.0000098910 # price rises above the offset (rises 12% when the offset is 5.5%) @@ -2789,9 +2782,8 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, })) assert freqtrade.handle_trade(trade) is False - assert log_has(f'using positive stop loss: 0.05 offset: 0.055 profit: 0.1218%', - caplog.record_tuples) - assert log_has(f'adjusted stop loss', caplog.record_tuples) + assert log_has(f'using positive stop loss: 0.05 offset: 0.055 profit: 0.1218%', caplog) + assert log_has(f'adjusted stop loss', caplog) assert trade.stop_loss == 0.0000117705 @@ -2850,7 +2842,7 @@ def test_get_real_amount_quote(default_conf, trades_for_order, buy_order_fee, ca assert freqtrade.get_real_amount(trade, buy_order_fee) == amount - (amount * 0.001) assert log_has('Applying fee on amount for Trade(id=None, pair=LTC/ETH, amount=8.00000000, ' 'open_rate=0.24544100, open_since=closed) (from 8.0 to 7.992) from Trades', - caplog.record_tuples) + caplog) def test_get_real_amount_no_trade(default_conf, buy_order_fee, caplog, mocker): @@ -2873,7 +2865,7 @@ def test_get_real_amount_no_trade(default_conf, buy_order_fee, caplog, mocker): assert freqtrade.get_real_amount(trade, buy_order_fee) == amount assert log_has('Applying fee on amount for Trade(id=None, pair=LTC/ETH, amount=8.00000000, ' 'open_rate=0.24544100, open_since=closed) failed: myTrade-Dict empty found', - caplog.record_tuples) + caplog) def test_get_real_amount_stake(default_conf, trades_for_order, buy_order_fee, mocker): @@ -2962,7 +2954,7 @@ def test_get_real_amount_multi(default_conf, trades_for_order2, buy_order_fee, c assert freqtrade.get_real_amount(trade, buy_order_fee) == amount - (amount * 0.001) assert log_has('Applying fee on amount for Trade(id=None, pair=LTC/ETH, amount=8.00000000, ' 'open_rate=0.24544100, open_since=closed) (from 8.0 to 7.992) from Trades', - caplog.record_tuples) + caplog) def test_get_real_amount_fromorder(default_conf, trades_for_order, buy_order_fee, caplog, mocker): @@ -2988,7 +2980,7 @@ def test_get_real_amount_fromorder(default_conf, trades_for_order, buy_order_fee assert freqtrade.get_real_amount(trade, limit_buy_order) == amount - 0.004 assert log_has('Applying fee on amount for Trade(id=None, pair=LTC/ETH, amount=8.00000000, ' 'open_rate=0.24544100, open_since=closed) (from 8.0 to 7.996) from Order', - caplog.record_tuples) + caplog) def test_get_real_amount_invalid_order(default_conf, trades_for_order, buy_order_fee, mocker): diff --git a/freqtrade/tests/test_main.py b/freqtrade/tests/test_main.py index bcaad4d7d..d8ec532b0 100644 --- a/freqtrade/tests/test_main.py +++ b/freqtrade/tests/test_main.py @@ -60,8 +60,8 @@ def test_main_fatal_exception(mocker, default_conf, caplog) -> None: # Test Main + the KeyboardInterrupt exception with pytest.raises(SystemExit): main(args) - assert log_has('Using config: config.json.example ...', caplog.record_tuples) - assert log_has('Fatal exception!', caplog.record_tuples) + assert log_has('Using config: config.json.example ...', caplog) + assert log_has('Fatal exception!', caplog) def test_main_keyboard_interrupt(mocker, default_conf, caplog) -> None: @@ -77,8 +77,8 @@ def test_main_keyboard_interrupt(mocker, default_conf, caplog) -> None: # Test Main + the KeyboardInterrupt exception with pytest.raises(SystemExit): main(args) - assert log_has('Using config: config.json.example ...', caplog.record_tuples) - assert log_has('SIGINT received, aborting ...', caplog.record_tuples) + assert log_has('Using config: config.json.example ...', caplog) + assert log_has('SIGINT received, aborting ...', caplog) def test_main_operational_exception(mocker, default_conf, caplog) -> None: @@ -97,8 +97,8 @@ def test_main_operational_exception(mocker, default_conf, caplog) -> None: # Test Main + the KeyboardInterrupt exception with pytest.raises(SystemExit): main(args) - assert log_has('Using config: config.json.example ...', caplog.record_tuples) - assert log_has('Oh snap!', caplog.record_tuples) + assert log_has('Using config: config.json.example ...', caplog) + assert log_has('Oh snap!', caplog) def test_main_reload_conf(mocker, default_conf, caplog) -> None: @@ -121,7 +121,7 @@ def test_main_reload_conf(mocker, default_conf, caplog) -> None: with pytest.raises(SystemExit): main(['-c', 'config.json.example']) - assert log_has('Using config: config.json.example ...', caplog.record_tuples) + assert log_has('Using config: config.json.example ...', caplog) assert worker_mock.call_count == 4 assert reconfigure_mock.call_count == 1 assert isinstance(worker.freqtrade, FreqtradeBot) diff --git a/freqtrade/tests/test_persistence.py b/freqtrade/tests/test_persistence.py index 32425ef7b..c3ab7c128 100644 --- a/freqtrade/tests/test_persistence.py +++ b/freqtrade/tests/test_persistence.py @@ -151,7 +151,7 @@ def test_update_with_bittrex(limit_buy_order, limit_sell_order, fee, caplog): assert trade.close_date is None assert log_has("LIMIT_BUY has been fulfilled for Trade(id=2, " "pair=ETH/BTC, amount=90.99181073, open_rate=0.00001099, open_since=closed).", - caplog.record_tuples) + caplog) caplog.clear() trade.open_order_id = 'something' @@ -162,7 +162,7 @@ def test_update_with_bittrex(limit_buy_order, limit_sell_order, fee, caplog): assert trade.close_date is not None assert log_has("LIMIT_SELL has been fulfilled for Trade(id=2, " "pair=ETH/BTC, amount=90.99181073, open_rate=0.00001099, open_since=closed).", - caplog.record_tuples) + caplog) @pytest.mark.usefixtures("init_persistence") @@ -184,7 +184,7 @@ def test_update_market_order(market_buy_order, market_sell_order, fee, caplog): assert trade.close_date is None assert log_has("MARKET_BUY has been fulfilled for Trade(id=1, " "pair=ETH/BTC, amount=91.99181073, open_rate=0.00004099, open_since=closed).", - caplog.record_tuples) + caplog) caplog.clear() trade.open_order_id = 'something' @@ -195,7 +195,7 @@ def test_update_market_order(market_buy_order, market_sell_order, fee, caplog): assert trade.close_date is not None assert log_has("MARKET_SELL has been fulfilled for Trade(id=1, " "pair=ETH/BTC, amount=91.99181073, open_rate=0.00004099, open_since=closed).", - caplog.record_tuples) + caplog) @pytest.mark.usefixtures("init_persistence") @@ -558,10 +558,9 @@ def test_migrate_new(mocker, default_conf, fee, caplog): assert trade.ticker_interval is None assert trade.stoploss_order_id is None assert trade.stoploss_last_update is None - assert log_has("trying trades_bak1", caplog.record_tuples) - assert log_has("trying trades_bak2", caplog.record_tuples) - assert log_has("Running database migration - backup available as trades_bak2", - caplog.record_tuples) + assert log_has("trying trades_bak1", caplog) + assert log_has("trying trades_bak2", caplog) + assert log_has("Running database migration - backup available as trades_bak2", caplog) def test_migrate_mid_state(mocker, default_conf, fee, caplog): @@ -621,9 +620,8 @@ def test_migrate_mid_state(mocker, default_conf, fee, caplog): assert trade.max_rate == 0.0 assert trade.stop_loss == 0.0 assert trade.initial_stop_loss == 0.0 - assert log_has("trying trades_bak0", caplog.record_tuples) - assert log_has("Running database migration - backup available as trades_bak0", - caplog.record_tuples) + assert log_has("trying trades_bak0", caplog) + assert log_has("Running database migration - backup available as trades_bak0", caplog) def test_adjust_stop_loss(fee): diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index f9da773fe..bfdd72215 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -87,7 +87,7 @@ def test_add_indicators(default_conf, caplog): # No indicator found fig3 = add_indicators(fig=deepcopy(fig), row=3, indicators=['no_indicator'], data=data) assert fig == fig3 - assert log_has_re(r'Indicator "no_indicator" ignored\..*', caplog.record_tuples) + assert log_has_re(r'Indicator "no_indicator" ignored\..*', caplog) def test_plot_trades(caplog): @@ -95,7 +95,7 @@ def test_plot_trades(caplog): # nothing happens when no trades are available fig = plot_trades(fig1, None) assert fig == fig1 - assert log_has("No trades found.", caplog.record_tuples) + assert log_has("No trades found.", caplog) pair = "ADA/BTC" filename = history.make_testdata_path(None) / "backtest-result_test.json" trades = load_backtest_data(filename) @@ -150,8 +150,8 @@ def test_generate_candlestick_graph_no_signals_no_trades(default_conf, mocker, c assert row_mock.call_count == 2 assert trades_mock.call_count == 1 - assert log_has("No buy-signals found.", caplog.record_tuples) - assert log_has("No sell-signals found.", caplog.record_tuples) + assert log_has("No buy-signals found.", caplog) + assert log_has("No sell-signals found.", caplog) def test_generate_candlestick_graph_no_trades(default_conf, mocker): @@ -216,7 +216,7 @@ def test_generate_plot_file(mocker, caplog): assert (plot_mock.call_args_list[0][1]['filename'] == "user_data/plots/freqtrade-plot-UNITTEST_BTC-5m.html") assert log_has("Stored plot as user_data/plots/freqtrade-plot-UNITTEST_BTC-5m.html", - caplog.record_tuples) + caplog) def test_add_profit(): From b77c0d28131fb4e14a1606c23dc81a51b0e53a69 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Aug 2019 20:22:50 +0200 Subject: [PATCH 0167/3421] Replace all "logentry" in caplog_record_tuples use log_has to have checking log-entries standardized. --- freqtrade/tests/strategy/test_strategy.py | 75 +++++++---------------- 1 file changed, 21 insertions(+), 54 deletions(-) diff --git a/freqtrade/tests/strategy/test_strategy.py b/freqtrade/tests/strategy/test_strategy.py index 8f690193b..6c2f6f78b 100644 --- a/freqtrade/tests/strategy/test_strategy.py +++ b/freqtrade/tests/strategy/test_strategy.py @@ -15,7 +15,7 @@ from freqtrade.resolvers import StrategyResolver from freqtrade.strategy import import_strategy from freqtrade.strategy.default_strategy import DefaultStrategy from freqtrade.strategy.interface import IStrategy -from freqtrade.tests.conftest import log_has_re +from freqtrade.tests.conftest import log_has, log_has_re def test_import_strategy(caplog): @@ -35,12 +35,8 @@ def test_import_strategy(caplog): assert imported_strategy.__module__ == 'freqtrade.strategy' assert imported_strategy.some_method() == 42 - assert ( - 'freqtrade.strategy', - logging.DEBUG, - 'Imported strategy freqtrade.strategy.default_strategy.DefaultStrategy ' - 'as freqtrade.strategy.DefaultStrategy', - ) in caplog.record_tuples + assert log_has('Imported strategy freqtrade.strategy.default_strategy.DefaultStrategy ' + 'as freqtrade.strategy.DefaultStrategy', caplog) def test_search_strategy(): @@ -142,10 +138,7 @@ def test_strategy_override_minimal_roi(caplog): resolver = StrategyResolver(config) assert resolver.strategy.minimal_roi[0] == 0.5 - assert ('freqtrade.resolvers.strategy_resolver', - logging.INFO, - "Override strategy 'minimal_roi' with value in config file: {'0': 0.5}." - ) in caplog.record_tuples + assert log_has("Override strategy 'minimal_roi' with value in config file: {'0': 0.5}.", caplog) def test_strategy_override_stoploss(caplog): @@ -157,10 +150,7 @@ def test_strategy_override_stoploss(caplog): resolver = StrategyResolver(config) assert resolver.strategy.stoploss == -0.5 - assert ('freqtrade.resolvers.strategy_resolver', - logging.INFO, - "Override strategy 'stoploss' with value in config file: -0.5." - ) in caplog.record_tuples + assert log_has("Override strategy 'stoploss' with value in config file: -0.5.", caplog) def test_strategy_override_trailing_stop(caplog): @@ -173,10 +163,7 @@ def test_strategy_override_trailing_stop(caplog): assert resolver.strategy.trailing_stop assert isinstance(resolver.strategy.trailing_stop, bool) - assert ('freqtrade.resolvers.strategy_resolver', - logging.INFO, - "Override strategy 'trailing_stop' with value in config file: True." - ) in caplog.record_tuples + assert log_has("Override strategy 'trailing_stop' with value in config file: True.", caplog) def test_strategy_override_trailing_stop_positive(caplog): @@ -190,16 +177,12 @@ def test_strategy_override_trailing_stop_positive(caplog): resolver = StrategyResolver(config) assert resolver.strategy.trailing_stop_positive == -0.1 - assert ('freqtrade.resolvers.strategy_resolver', - logging.INFO, - "Override strategy 'trailing_stop_positive' with value in config file: -0.1." - ) in caplog.record_tuples + assert log_has("Override strategy 'trailing_stop_positive' with value in config file: -0.1.", + caplog) assert resolver.strategy.trailing_stop_positive_offset == -0.2 - assert ('freqtrade.resolvers.strategy_resolver', - logging.INFO, - "Override strategy 'trailing_stop_positive' with value in config file: -0.1." - ) in caplog.record_tuples + assert log_has("Override strategy 'trailing_stop_positive' with value in config file: -0.1.", + caplog) def test_strategy_override_ticker_interval(caplog): @@ -214,10 +197,8 @@ def test_strategy_override_ticker_interval(caplog): assert resolver.strategy.ticker_interval == 60 assert resolver.strategy.stake_currency == 'ETH' - assert ('freqtrade.resolvers.strategy_resolver', - logging.INFO, - "Override strategy 'ticker_interval' with value in config file: 60." - ) in caplog.record_tuples + assert log_has("Override strategy 'ticker_interval' with value in config file: 60.", + caplog) def test_strategy_override_process_only_new_candles(caplog): @@ -230,10 +211,8 @@ def test_strategy_override_process_only_new_candles(caplog): resolver = StrategyResolver(config) assert resolver.strategy.process_only_new_candles - assert ('freqtrade.resolvers.strategy_resolver', - logging.INFO, - "Override strategy 'process_only_new_candles' with value in config file: True." - ) in caplog.record_tuples + assert log_has("Override strategy 'process_only_new_candles' with value in config file: True.", + caplog) def test_strategy_override_order_types(caplog): @@ -256,12 +235,9 @@ def test_strategy_override_order_types(caplog): for method in ['buy', 'sell', 'stoploss', 'stoploss_on_exchange']: assert resolver.strategy.order_types[method] == order_types[method] - assert ('freqtrade.resolvers.strategy_resolver', - logging.INFO, - "Override strategy 'order_types' with value in config file:" - " {'buy': 'market', 'sell': 'limit', 'stoploss': 'limit'," - " 'stoploss_on_exchange': True}." - ) in caplog.record_tuples + assert log_has("Override strategy 'order_types' with value in config file:" + " {'buy': 'market', 'sell': 'limit', 'stoploss': 'limit'," + " 'stoploss_on_exchange': True}.", caplog) config = { 'strategy': 'DefaultStrategy', @@ -292,11 +268,8 @@ def test_strategy_override_order_tif(caplog): for method in ['buy', 'sell']: assert resolver.strategy.order_time_in_force[method] == order_time_in_force[method] - assert ('freqtrade.resolvers.strategy_resolver', - logging.INFO, - "Override strategy 'order_time_in_force' with value in config file:" - " {'buy': 'fok', 'sell': 'gtc'}." - ) in caplog.record_tuples + assert log_has("Override strategy 'order_time_in_force' with value in config file:" + " {'buy': 'fok', 'sell': 'gtc'}.", caplog) config = { 'strategy': 'DefaultStrategy', @@ -331,10 +304,7 @@ def test_strategy_override_use_sell_signal(caplog): assert resolver.strategy.use_sell_signal assert isinstance(resolver.strategy.use_sell_signal, bool) - assert ('freqtrade.resolvers.strategy_resolver', - logging.INFO, - "Override strategy 'use_sell_signal' with value in config file: True." - ) in caplog.record_tuples + assert log_has("Override strategy 'use_sell_signal' with value in config file: True.", caplog) def test_strategy_override_use_sell_profit_only(caplog): @@ -359,10 +329,7 @@ def test_strategy_override_use_sell_profit_only(caplog): assert resolver.strategy.sell_profit_only assert isinstance(resolver.strategy.sell_profit_only, bool) - assert ('freqtrade.resolvers.strategy_resolver', - logging.INFO, - "Override strategy 'sell_profit_only' with value in config file: True." - ) in caplog.record_tuples + assert log_has("Override strategy 'sell_profit_only' with value in config file: True.", caplog) @pytest.mark.filterwarnings("ignore:deprecated") From c5d8499ad2c70847975f96393cfaf242d75640e1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Aug 2019 20:30:15 +0200 Subject: [PATCH 0168/3421] Improve documentation regarding tests --- docs/developer.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/developer.md b/docs/developer.md index 28369bb73..259bfafd8 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -17,6 +17,29 @@ Alternatively (if your system is not supported by the setup.sh script), follow t This will install all required tools for development, including `pytest`, `flake8`, `mypy`, and `coveralls`. +### Tests + +New code should be covered by basic unittests. Depending on the complexity of the feature, Reviewers may request more in-depth unittests. +If necessary, the Freqtrade team can assist and give guidance with writing good tests (however please don't expect anyone to write the tests for you). + +#### Checking log content in tests + +Freqtrade uses 2 main methods to check log content in tests, `log_has()` and `log_has_re()` (to check using regex, in case of dynamic log-messages). +These are available from `conftest.py` and can be imported in any test module. + +A sample check looks as follows: + +``` python +from freqtrade.tests.conftest import log_has, log_has_re + +def test_method_to_test(caplog): + method_to_test() + + assert log_has("This event happened", caplog) + # Check regex with trailing number ... + assert log_has_re(r"This dynamic event happened and produced \d+", caplog) +``` + ## Modules ### Dynamic Pairlist From 2d60e4b18b2c982c88578cdd6ff81f0c6b993396 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 12 Aug 2019 00:32:03 +0300 Subject: [PATCH 0169/3421] allow comments and trailing commas in config files --- freqtrade/configuration/load_config.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/freqtrade/configuration/load_config.py b/freqtrade/configuration/load_config.py index 25504144f..7a3ca1798 100644 --- a/freqtrade/configuration/load_config.py +++ b/freqtrade/configuration/load_config.py @@ -1,7 +1,7 @@ """ This module contain functions to load the configuration file """ -import json +import rapidjson import logging import sys from typing import Any, Dict @@ -12,6 +12,9 @@ from freqtrade import OperationalException logger = logging.getLogger(__name__) +CONFIG_PARSE_MODE = rapidjson.PM_COMMENTS | rapidjson.PM_TRAILING_COMMAS + + def load_config_file(path: str) -> Dict[str, Any]: """ Loads a config file from the given path @@ -21,7 +24,7 @@ def load_config_file(path: str) -> Dict[str, Any]: try: # Read config from stdin if requested in the options with open(path) if path != '-' else sys.stdin as file: - config = json.load(file) + config = rapidjson.load(file, parse_mode=CONFIG_PARSE_MODE) except FileNotFoundError: raise OperationalException( f'Config file "{path}" not found!' From 90b75afdb1373ee3c38eeeb495f053d4f3306abd Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 12 Aug 2019 00:33:34 +0300 Subject: [PATCH 0170/3421] test added to load config with comments and trailing commas --- freqtrade/tests/config_test_comments.json | 133 ++++++++++++++++++++++ freqtrade/tests/test_configuration.py | 11 ++ 2 files changed, 144 insertions(+) create mode 100644 freqtrade/tests/config_test_comments.json diff --git a/freqtrade/tests/config_test_comments.json b/freqtrade/tests/config_test_comments.json new file mode 100644 index 000000000..85becc3e8 --- /dev/null +++ b/freqtrade/tests/config_test_comments.json @@ -0,0 +1,133 @@ +{ + /* Single-line C-style comment */ + "max_open_trades": 3, + /* + * Multi-line C-style comment + */ + "stake_currency": "BTC", + "stake_amount": 0.05, + "fiat_display_currency": "USD", // C++-style comment + "amount_reserve_percent" : 0.05, // And more, tabs before this comment + "dry_run": false, + "ticker_interval": "5m", + "trailing_stop": false, + "trailing_stop_positive": 0.005, + "trailing_stop_positive_offset": 0.0051, + "trailing_only_offset_is_reached": false, + "minimal_roi": { + "40": 0.0, + "30": 0.01, + "20": 0.02, + "0": 0.04 + }, + "stoploss": -0.10, + "unfilledtimeout": { + "buy": 10, + "sell": 30, // Trailing comma should also be accepted now + }, + "bid_strategy": { + "use_order_book": false, + "ask_last_balance": 0.0, + "order_book_top": 1, + "check_depth_of_market": { + "enabled": false, + "bids_to_ask_delta": 1 + } + }, + "ask_strategy":{ + "use_order_book": false, + "order_book_min": 1, + "order_book_max": 9 + }, + "order_types": { + "buy": "limit", + "sell": "limit", + "stoploss": "market", + "stoploss_on_exchange": false, + "stoploss_on_exchange_interval": 60 + }, + "order_time_in_force": { + "buy": "gtc", + "sell": "gtc" + }, + "pairlist": { + "method": "VolumePairList", + "config": { + "number_assets": 20, + "sort_key": "quoteVolume", + "precision_filter": false + } + }, + "exchange": { + "name": "bittrex", + "sandbox": false, + "key": "your_exchange_key", + "secret": "your_exchange_secret", + "password": "", + "ccxt_config": {"enableRateLimit": true}, + "ccxt_async_config": { + "enableRateLimit": false, + "rateLimit": 500, + "aiohttp_trust_env": false + }, + "pair_whitelist": [ + "ETH/BTC", + "LTC/BTC", + "ETC/BTC", + "DASH/BTC", + "ZEC/BTC", + "XLM/BTC", + "NXT/BTC", + "POWR/BTC", + "ADA/BTC", + "XMR/BTC" + ], + "pair_blacklist": [ + "DOGE/BTC" + ], + "outdated_offset": 5, + "markets_refresh_interval": 60 + }, + "edge": { + "enabled": false, + "process_throttle_secs": 3600, + "calculate_since_number_of_days": 7, + "capital_available_percentage": 0.5, + "allowed_risk": 0.01, + "stoploss_range_min": -0.01, + "stoploss_range_max": -0.1, + "stoploss_range_step": -0.01, + "minimum_winrate": 0.60, + "minimum_expectancy": 0.20, + "min_trade_number": 10, + "max_trade_duration_minute": 1440, + "remove_pumps": false + }, + "experimental": { + "use_sell_signal": false, + "sell_profit_only": false, + "ignore_roi_if_buy_signal": false + }, + "telegram": { +// We can now comment out some settings +// "enabled": true, + "enabled": false, + "token": "your_telegram_token", + "chat_id": "your_telegram_chat_id" + }, + "api_server": { + "enabled": false, + "listen_ip_address": "127.0.0.1", + "listen_port": 8080, + "username": "freqtrader", + "password": "SuperSecurePassword" + }, + "db_url": "sqlite:///tradesv3.sqlite", + "initial_state": "running", + "forcebuy_enable": false, + "internals": { + "process_throttle_secs": 5 + }, + "strategy": "DefaultStrategy", + "strategy_path": "user_data/strategies/" +} diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index e325a0de2..0a8381089 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -634,6 +634,17 @@ def test_validate_tsl(default_conf): configuration._validate_config_consistency(default_conf) +def test_load_config_test_comments() -> None: + """ + Load config with comments + """ + config_file = Path(__file__).parents[0] / "config_test_comments.json" + print(config_file) + conf = load_config_file(str(config_file)) + + assert conf + + def test_load_config_default_exchange(all_conf) -> None: """ config['exchange'] subtree has required options in it From e5dcd520bae7516c37eba0cd3c12484e1a0210f4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 12 Aug 2019 02:19:50 +0300 Subject: [PATCH 0171/3421] cosmetics in sample_hyperopt and default_hyperopt --- freqtrade/optimize/default_hyperopt.py | 41 ++++++++++++++++-------- user_data/hyperopts/sample_hyperopt.py | 44 ++++++++++++++++---------- 2 files changed, 55 insertions(+), 30 deletions(-) diff --git a/freqtrade/optimize/default_hyperopt.py b/freqtrade/optimize/default_hyperopt.py index e05dfc95c..2554982ad 100644 --- a/freqtrade/optimize/default_hyperopt.py +++ b/freqtrade/optimize/default_hyperopt.py @@ -14,36 +14,48 @@ from freqtrade.optimize.hyperopt_interface import IHyperOpt class DefaultHyperOpts(IHyperOpt): """ Default hyperopt provided by the Freqtrade bot. - You can override it with your own hyperopt + You can override it with your own Hyperopt """ @staticmethod def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + Add several indicators needed for buy and sell strategies defined below. + """ + # ADX dataframe['adx'] = ta.ADX(dataframe) + # MACD macd = ta.MACD(dataframe) dataframe['macd'] = macd['macd'] dataframe['macdsignal'] = macd['macdsignal'] + # MFI dataframe['mfi'] = ta.MFI(dataframe) + # RSI dataframe['rsi'] = ta.RSI(dataframe) + # Stochastic Fast stoch_fast = ta.STOCHF(dataframe) dataframe['fastd'] = stoch_fast['fastd'] + # Minus-DI dataframe['minus_di'] = ta.MINUS_DI(dataframe) # Bollinger bands bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2) dataframe['bb_lowerband'] = bollinger['lower'] dataframe['bb_upperband'] = bollinger['upper'] + # SAR dataframe['sar'] = ta.SAR(dataframe) + return dataframe @staticmethod def buy_strategy_generator(params: Dict[str, Any]) -> Callable: """ - Define the buy strategy parameters to be used by hyperopt + Define the buy strategy parameters to be used by Hyperopt. """ def populate_buy_trend(dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Buy strategy Hyperopt will build and use + Buy strategy Hyperopt will build and use. """ conditions = [] + # GUARDS AND TRENDS if 'mfi-enabled' in params and params['mfi-enabled']: conditions.append(dataframe['mfi'] < params['mfi-value']) @@ -79,7 +91,7 @@ class DefaultHyperOpts(IHyperOpt): @staticmethod def indicator_space() -> List[Dimension]: """ - Define your Hyperopt space for searching strategy parameters + Define your Hyperopt space for searching buy strategy parameters. """ return [ Integer(10, 25, name='mfi-value'), @@ -96,14 +108,14 @@ class DefaultHyperOpts(IHyperOpt): @staticmethod def sell_strategy_generator(params: Dict[str, Any]) -> Callable: """ - Define the sell strategy parameters to be used by hyperopt + Define the sell strategy parameters to be used by Hyperopt. """ def populate_sell_trend(dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Sell strategy Hyperopt will build and use + Sell strategy Hyperopt will build and use. """ - # print(params) conditions = [] + # GUARDS AND TRENDS if 'sell-mfi-enabled' in params and params['sell-mfi-enabled']: conditions.append(dataframe['mfi'] > params['sell-mfi-value']) @@ -139,7 +151,7 @@ class DefaultHyperOpts(IHyperOpt): @staticmethod def sell_indicator_space() -> List[Dimension]: """ - Define your Hyperopt space for searching sell strategy parameters + Define your Hyperopt space for searching sell strategy parameters. """ return [ Integer(75, 100, name='sell-mfi-value'), @@ -157,9 +169,9 @@ class DefaultHyperOpts(IHyperOpt): def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Based on TA indicators. Should be a copy of from strategy - must align to populate_indicators in this file - Only used when --spaces does not include buy + Based on TA indicators. Should be a copy of same method from strategy. + Must align to populate_indicators in this file. + Only used when --spaces does not include buy space. """ dataframe.loc[ ( @@ -174,9 +186,9 @@ class DefaultHyperOpts(IHyperOpt): def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Based on TA indicators. Should be a copy of from strategy - must align to populate_indicators in this file - Only used when --spaces does not include sell + Based on TA indicators. Should be a copy of same method from strategy. + Must align to populate_indicators in this file. + Only used when --spaces does not include sell space. """ dataframe.loc[ ( @@ -186,4 +198,5 @@ class DefaultHyperOpts(IHyperOpt): (dataframe['fastd'] > 54) ), 'sell'] = 1 + return dataframe diff --git a/user_data/hyperopts/sample_hyperopt.py b/user_data/hyperopts/sample_hyperopt.py index 1a3823afa..fabfdb23e 100644 --- a/user_data/hyperopts/sample_hyperopt.py +++ b/user_data/hyperopts/sample_hyperopt.py @@ -1,11 +1,10 @@ # pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement from functools import reduce -from math import exp from typing import Any, Callable, Dict, List from datetime import datetime -import numpy as np# noqa F401 +import numpy as np import talib.abstract as ta from pandas import DataFrame from skopt.space import Categorical, Dimension, Integer, Real @@ -16,7 +15,7 @@ from freqtrade.optimize.hyperopt_interface import IHyperOpt class SampleHyperOpts(IHyperOpt): """ - This is a sample hyperopt to inspire you. + This is a sample Hyperopt to inspire you. Feel free to customize it. More information in https://github.com/freqtrade/freqtrade/blob/develop/docs/hyperopt.md @@ -37,32 +36,44 @@ class SampleHyperOpts(IHyperOpt): """ @staticmethod def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + Add several indicators needed for buy and sell strategies defined below. + """ + # ADX dataframe['adx'] = ta.ADX(dataframe) + # MACD macd = ta.MACD(dataframe) dataframe['macd'] = macd['macd'] dataframe['macdsignal'] = macd['macdsignal'] + # MFI dataframe['mfi'] = ta.MFI(dataframe) + # RSI dataframe['rsi'] = ta.RSI(dataframe) + # Stochastic Fast stoch_fast = ta.STOCHF(dataframe) dataframe['fastd'] = stoch_fast['fastd'] + # Minus-DI dataframe['minus_di'] = ta.MINUS_DI(dataframe) # Bollinger bands bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2) dataframe['bb_lowerband'] = bollinger['lower'] dataframe['bb_upperband'] = bollinger['upper'] + # SAR dataframe['sar'] = ta.SAR(dataframe) + return dataframe @staticmethod def buy_strategy_generator(params: Dict[str, Any]) -> Callable: """ - Define the buy strategy parameters to be used by hyperopt + Define the buy strategy parameters to be used by Hyperopt. """ def populate_buy_trend(dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Buy strategy Hyperopt will build and use + Buy strategy Hyperopt will build and use. """ conditions = [] + # GUARDS AND TRENDS if 'mfi-enabled' in params and params['mfi-enabled']: conditions.append(dataframe['mfi'] < params['mfi-value']) @@ -98,7 +109,7 @@ class SampleHyperOpts(IHyperOpt): @staticmethod def indicator_space() -> List[Dimension]: """ - Define your Hyperopt space for searching strategy parameters + Define your Hyperopt space for searching buy strategy parameters. """ return [ Integer(10, 25, name='mfi-value'), @@ -115,14 +126,14 @@ class SampleHyperOpts(IHyperOpt): @staticmethod def sell_strategy_generator(params: Dict[str, Any]) -> Callable: """ - Define the sell strategy parameters to be used by hyperopt + Define the sell strategy parameters to be used by Hyperopt. """ def populate_sell_trend(dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Sell strategy Hyperopt will build and use + Sell strategy Hyperopt will build and use. """ - # print(params) conditions = [] + # GUARDS AND TRENDS if 'sell-mfi-enabled' in params and params['sell-mfi-enabled']: conditions.append(dataframe['mfi'] > params['sell-mfi-value']) @@ -158,7 +169,7 @@ class SampleHyperOpts(IHyperOpt): @staticmethod def sell_indicator_space() -> List[Dimension]: """ - Define your Hyperopt space for searching sell strategy parameters + Define your Hyperopt space for searching sell strategy parameters. """ return [ Integer(75, 100, name='sell-mfi-value'), @@ -176,9 +187,9 @@ class SampleHyperOpts(IHyperOpt): def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Based on TA indicators. Should be a copy of from strategy - must align to populate_indicators in this file - Only used when --spaces does not include buy + Based on TA indicators. Should be a copy of same method from strategy. + Must align to populate_indicators in this file. + Only used when --spaces does not include buy space. """ dataframe.loc[ ( @@ -193,9 +204,9 @@ class SampleHyperOpts(IHyperOpt): def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Based on TA indicators. Should be a copy of from strategy - must align to populate_indicators in this file - Only used when --spaces does not include sell + Based on TA indicators. Should be a copy of same method from strategy. + Must align to populate_indicators in this file. + Only used when --spaces does not include sell space. """ dataframe.loc[ ( @@ -205,4 +216,5 @@ class SampleHyperOpts(IHyperOpt): (dataframe['fastd'] > 54) ), 'sell'] = 1 + return dataframe From 197ce0b67002161557ea4e8bd0ea62f44655f32c Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 06:35:47 +0200 Subject: [PATCH 0172/3421] Improve documentation wording for multiconfig files --- docs/bot-usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 4e3f55d91..988e08029 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -57,7 +57,7 @@ freqtrade -c path/far/far/away/config.json The bot allows you to use multiple configuration files by specifying multiple `-c/--config` configuration options in the command line. Configuration parameters defined in latter configuration files override parameters with the same name -defined in the earlier configuration files specified in the command line. +defined in the previous configuration files specified in the command line earlier. For example, you can make a separate configuration file with your key and secrete for the Exchange you use for trading, specify default configuration file with From 43b41324e2517924ae24e9eca35d0568bcf4bd87 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 06:45:27 +0200 Subject: [PATCH 0173/3421] Improve hyperopt-loss docs --- docs/bot-usage.md | 9 +++++---- docs/hyperopt.md | 6 +++++- freqtrade/configuration/cli_options.py | 4 +++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 0ca2f3cc5..9833bb43d 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -256,12 +256,13 @@ optional arguments: --continue Continue hyperopt from previous runs. By default, temporary files will be removed and hyperopt will start from scratch. - --hyperopt-loss NAME - Specify the class name of the hyperopt loss function + --hyperopt-loss NAME Specify the class name of the hyperopt loss function class (IHyperOptLoss). Different functions can generate completely different results, since the - target for optimization is different. (default: - `DefaultHyperOptLoss`). + target for optimization is different. Built-in + Hyperopt-loss-functions are: DefaultHyperOptLoss, + OnlyProfitHyperOptLoss, SharpeHyperOptLoss. + (default: `DefaultHyperOptLoss`). ``` ## Edge commands diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 6ef68d82f..918361c52 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -164,7 +164,11 @@ By default, FreqTrade uses a loss function, which has been with freqtrade since A different loss function can be specified by using the `--hyperopt-loss ` argument. This class should be in its own file within the `user_data/hyperopts/` directory. -Currently, the following loss functions are builtin: `DefaultHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function), `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on the trade returns) and `OnlyProfitHyperOptLoss` (which takes only amount of profit into consideration). +Currently, the following loss functions are builtin: + +* `DefaultHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function) +* `OnlyProfitHyperOptLoss` (which takes only amount of profit into consideration) +* `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on the trade returns) ### Creating and using a custom loss function diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 04554c386..771cdfb80 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -226,7 +226,9 @@ AVAILABLE_CLI_OPTIONS = { '--hyperopt-loss', help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). ' 'Different functions can generate completely different results, ' - 'since the target for optimization is different. (default: `%(default)s`).', + 'since the target for optimization is different. Built-in Hyperopt-loss-functions are: ' + 'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss.' + '(default: `%(default)s`).', metavar='NAME', default=constants.DEFAULT_HYPEROPT_LOSS, ), From af67bbde311b249910da29ed09fca1f5ec688639 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 15:43:10 +0200 Subject: [PATCH 0174/3421] Test timeframe_to_x --- freqtrade/tests/exchange/test_exchange.py | 25 ++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index e8a7201f1..245814a36 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -14,7 +14,9 @@ from pandas import DataFrame from freqtrade import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange import Binance, Exchange, Kraken -from freqtrade.exchange.exchange import API_RETRY_COUNT +from freqtrade.exchange.exchange import (API_RETRY_COUNT, timeframe_to_minutes, + timeframe_to_msecs, + timeframe_to_seconds) from freqtrade.resolvers.exchange_resolver import ExchangeResolver from freqtrade.tests.conftest import get_patched_exchange, log_has, log_has_re @@ -1540,3 +1542,24 @@ def test_get_valid_pair_combination(default_conf, mocker, markets): assert ex.get_valid_pair_combination("BTC", "ETH") == "ETH/BTC" with pytest.raises(DependencyException, match=r"Could not combine.* to get a valid pair."): ex.get_valid_pair_combination("NOPAIR", "ETH") + + +def test_timeframe_to_minutes(): + assert timeframe_to_minutes("5m") == 5 + assert timeframe_to_minutes("10m") == 10 + assert timeframe_to_minutes("1h") == 60 + assert timeframe_to_minutes("1d") == 1440 + + +def test_timeframe_to_seconds(): + assert timeframe_to_seconds("5m") == 300 + assert timeframe_to_seconds("10m") == 600 + assert timeframe_to_seconds("1h") == 3600 + assert timeframe_to_seconds("1d") == 86400 + + +def test_timeframe_to_msecs(): + assert timeframe_to_msecs("5m") == 300000 + assert timeframe_to_msecs("10m") == 600000 + assert timeframe_to_msecs("1h") == 3600000 + assert timeframe_to_msecs("1d") == 86400000 From 933a553dd436eeadf1b7a65b2120a5fea0211779 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 16:07:19 +0200 Subject: [PATCH 0175/3421] Convert timeframe to next date --- freqtrade/exchange/exchange.py | 18 ++++++++++++--- freqtrade/tests/exchange/test_exchange.py | 28 ++++++++++++++++++++++- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 657f382d8..3d2bf07c7 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -6,7 +6,7 @@ import asyncio import inspect import logging from copy import deepcopy -from datetime import datetime +from datetime import datetime, timezone from math import ceil, floor from random import randint from typing import Any, Dict, List, Optional, Tuple @@ -781,13 +781,25 @@ def timeframe_to_seconds(ticker_interval: str) -> int: def timeframe_to_minutes(ticker_interval: str) -> int: """ - Same as above, but returns minutes. + Same as timeframe_to_seconds, but returns minutes. """ return ccxt.Exchange.parse_timeframe(ticker_interval) // 60 def timeframe_to_msecs(ticker_interval: str) -> int: """ - Same as above, but returns milliseconds. + Same as timeframe_to_seconds, but returns milliseconds. """ return ccxt.Exchange.parse_timeframe(ticker_interval) * 1000 + + +def timeframe_to_next_date(timeframe: str, date: datetime = None): + """ + Use Timeframe and determine next candle. + """ + if not date: + date = datetime.utcnow() + timeframe_secs = timeframe_to_seconds(timeframe) + offset = date.timestamp() % timeframe_secs + new_timestamp = date.timestamp() + (timeframe_secs - offset) + return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index 245814a36..23384aebe 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -14,7 +14,9 @@ from pandas import DataFrame from freqtrade import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange import Binance, Exchange, Kraken -from freqtrade.exchange.exchange import (API_RETRY_COUNT, timeframe_to_minutes, +from freqtrade.exchange.exchange import (API_RETRY_COUNT, + timeframe_to_next_date, + timeframe_to_minutes, timeframe_to_msecs, timeframe_to_seconds) from freqtrade.resolvers.exchange_resolver import ExchangeResolver @@ -1563,3 +1565,27 @@ def test_timeframe_to_msecs(): assert timeframe_to_msecs("10m") == 600000 assert timeframe_to_msecs("1h") == 3600000 assert timeframe_to_msecs("1d") == 86400000 + + +def test_timeframe_to_next_date(): + # 2019-08-12 13:22:08 + date = datetime.fromtimestamp(1565616128, tz=timezone.utc) + + # 5m -> 2019-08-12 13:25:00 + assert timeframe_to_next_date("5m", date) == datetime( + 2019, 8, 12, 13, 25, 0, tzinfo=timezone.utc) + # 10m -> 2019-08-12 13:30:00 + assert timeframe_to_next_date("10m", date) == datetime( + 2019, 8, 12, 13, 30, 0, tzinfo=timezone.utc) + # 1h -> 2019-08-12 14:00:00 + assert timeframe_to_next_date("1h", date) == datetime( + 2019, 8, 12, 14, 00, 0, tzinfo=timezone.utc) + # 2h -> 2019-08-12 14:00:00 + assert timeframe_to_next_date("2h", date) == datetime( + 2019, 8, 12, 14, 00, 0, tzinfo=timezone.utc) + # 4h -> 2019-08-12 14:00:00 + assert timeframe_to_next_date("4h", date) == datetime( + 2019, 8, 12, 16, 00, 0, tzinfo=timezone.utc) + # 1d -> 2019-08-13 00:00:00 + assert timeframe_to_next_date("1d", date) == datetime( + 2019, 8, 13, 0, 0, 0, tzinfo=timezone.utc) From dd0ba183f88538f51aabc5db677d374a5ee12401 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 16:11:43 +0200 Subject: [PATCH 0176/3421] Add timeframe_to_prev_candle --- freqtrade/exchange/exchange.py | 16 ++++++++++++ freqtrade/tests/exchange/test_exchange.py | 30 ++++++++++++++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 3d2bf07c7..abb03b86d 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -793,6 +793,20 @@ def timeframe_to_msecs(ticker_interval: str) -> int: return ccxt.Exchange.parse_timeframe(ticker_interval) * 1000 +def timeframe_to_prev_date(timeframe: str, date: datetime = None): + """ + Use Timeframe and determine last possible candle. + """ + if not date: + date = datetime.utcnow() + timeframe_secs = timeframe_to_seconds(timeframe) + # Get offset based on timerame_secs + offset = date.timestamp() % timeframe_secs + # Subtract seconds passed since last offset + new_timestamp = date.timestamp() - offset + return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) + + def timeframe_to_next_date(timeframe: str, date: datetime = None): """ Use Timeframe and determine next candle. @@ -800,6 +814,8 @@ def timeframe_to_next_date(timeframe: str, date: datetime = None): if not date: date = datetime.utcnow() timeframe_secs = timeframe_to_seconds(timeframe) + # Get offset to prev timeframe offset = date.timestamp() % timeframe_secs + # Add remaining seconds to next timeframe new_timestamp = date.timestamp() + (timeframe_secs - offset) return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index 23384aebe..e342af604 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -14,10 +14,10 @@ from pandas import DataFrame from freqtrade import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange import Binance, Exchange, Kraken -from freqtrade.exchange.exchange import (API_RETRY_COUNT, - timeframe_to_next_date, - timeframe_to_minutes, +from freqtrade.exchange.exchange import (API_RETRY_COUNT, timeframe_to_minutes, timeframe_to_msecs, + timeframe_to_next_date, + timeframe_to_prev_date, timeframe_to_seconds) from freqtrade.resolvers.exchange_resolver import ExchangeResolver from freqtrade.tests.conftest import get_patched_exchange, log_has, log_has_re @@ -1567,6 +1567,30 @@ def test_timeframe_to_msecs(): assert timeframe_to_msecs("1d") == 86400000 +def test_timeframe_to_prev_date(): + # 2019-08-12 13:22:08 + date = datetime.fromtimestamp(1565616128, tz=timezone.utc) + + # 5m -> 2019-08-12 13:20:00 + assert timeframe_to_prev_date("5m", date) == datetime( + 2019, 8, 12, 13, 20, 0, tzinfo=timezone.utc) + # 10m -> 2019-08-12 13:20:00 + assert timeframe_to_prev_date("10m", date) == datetime( + 2019, 8, 12, 13, 20, 0, tzinfo=timezone.utc) + # 1h -> 2019-08-12 13:00:00 + assert timeframe_to_prev_date("1h", date) == datetime( + 2019, 8, 12, 13, 00, 0, tzinfo=timezone.utc) + # 2h -> 2019-08-12 12:00:00 + assert timeframe_to_prev_date("2h", date) == datetime( + 2019, 8, 12, 12, 00, 0, tzinfo=timezone.utc) + # 4h -> 2019-08-12 12:00:00 + assert timeframe_to_prev_date("4h", date) == datetime( + 2019, 8, 12, 12, 00, 0, tzinfo=timezone.utc) + # 1d -> 2019-08-12 00:00:00 + assert timeframe_to_prev_date("1d", date) == datetime( + 2019, 8, 12, 0, 0, 0, tzinfo=timezone.utc) + + def test_timeframe_to_next_date(): # 2019-08-12 13:22:08 date = datetime.fromtimestamp(1565616128, tz=timezone.utc) From 1ce63b5b423e8dfa55be28ff9c614b84a6a8cef9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 16:17:06 +0200 Subject: [PATCH 0177/3421] Reformat tests to be easier readable --- freqtrade/exchange/exchange.py | 10 +++- freqtrade/tests/exchange/test_exchange.py | 68 +++++++++++------------ 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index abb03b86d..fe5561be2 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -793,9 +793,12 @@ def timeframe_to_msecs(ticker_interval: str) -> int: return ccxt.Exchange.parse_timeframe(ticker_interval) * 1000 -def timeframe_to_prev_date(timeframe: str, date: datetime = None): +def timeframe_to_prev_date(timeframe: str, date: datetime = None) -> datetime: """ Use Timeframe and determine last possible candle. + :param timeframe: timeframe in string format (e.g. "5m") + :param date: date to use. Defaults to utcnow() + :returns: date of previous candle (with utc timezone) """ if not date: date = datetime.utcnow() @@ -807,9 +810,12 @@ def timeframe_to_prev_date(timeframe: str, date: datetime = None): return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) -def timeframe_to_next_date(timeframe: str, date: datetime = None): +def timeframe_to_next_date(timeframe: str, date: datetime = None) -> datetime: """ Use Timeframe and determine next candle. + :param timeframe: timeframe in string format (e.g. "5m") + :param date: date to use. Defaults to utcnow() + :returns: date of next candle (with utc timezone) """ if not date: date = datetime.utcnow() diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index e342af604..23604f44f 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -1571,45 +1571,41 @@ def test_timeframe_to_prev_date(): # 2019-08-12 13:22:08 date = datetime.fromtimestamp(1565616128, tz=timezone.utc) - # 5m -> 2019-08-12 13:20:00 - assert timeframe_to_prev_date("5m", date) == datetime( - 2019, 8, 12, 13, 20, 0, tzinfo=timezone.utc) - # 10m -> 2019-08-12 13:20:00 - assert timeframe_to_prev_date("10m", date) == datetime( - 2019, 8, 12, 13, 20, 0, tzinfo=timezone.utc) - # 1h -> 2019-08-12 13:00:00 - assert timeframe_to_prev_date("1h", date) == datetime( - 2019, 8, 12, 13, 00, 0, tzinfo=timezone.utc) - # 2h -> 2019-08-12 12:00:00 - assert timeframe_to_prev_date("2h", date) == datetime( - 2019, 8, 12, 12, 00, 0, tzinfo=timezone.utc) - # 4h -> 2019-08-12 12:00:00 - assert timeframe_to_prev_date("4h", date) == datetime( - 2019, 8, 12, 12, 00, 0, tzinfo=timezone.utc) - # 1d -> 2019-08-12 00:00:00 - assert timeframe_to_prev_date("1d", date) == datetime( - 2019, 8, 12, 0, 0, 0, tzinfo=timezone.utc) + tf_list = [ + # 5m -> 2019-08-12 13:20:00 + ("5m", datetime(2019, 8, 12, 13, 20, 0, tzinfo=timezone.utc)), + # 10m -> 2019-08-12 13:20:00 + ("10m", datetime(2019, 8, 12, 13, 20, 0, tzinfo=timezone.utc)), + # 1h -> 2019-08-12 13:00:00 + ("1h", datetime(2019, 8, 12, 13, 00, 0, tzinfo=timezone.utc)), + # 2h -> 2019-08-12 12:00:00 + ("2h", datetime(2019, 8, 12, 12, 00, 0, tzinfo=timezone.utc)), + # 4h -> 2019-08-12 12:00:00 + ("4h", datetime(2019, 8, 12, 12, 00, 0, tzinfo=timezone.utc)), + # 1d -> 2019-08-12 00:00:00 + ("1d", datetime(2019, 8, 12, 00, 00, 0, tzinfo=timezone.utc)), + ] + for interval, result in tf_list: + assert timeframe_to_prev_date(interval, date) == result def test_timeframe_to_next_date(): # 2019-08-12 13:22:08 date = datetime.fromtimestamp(1565616128, tz=timezone.utc) + tf_list = [ + # 5m -> 2019-08-12 13:25:00 + ("5m", datetime(2019, 8, 12, 13, 25, 0, tzinfo=timezone.utc)), + # 10m -> 2019-08-12 13:30:00 + ("10m", datetime(2019, 8, 12, 13, 30, 0, tzinfo=timezone.utc)), + # 1h -> 2019-08-12 14:00:00 + ("1h", datetime(2019, 8, 12, 14, 00, 0, tzinfo=timezone.utc)), + # 2h -> 2019-08-12 14:00:00 + ("2h", datetime(2019, 8, 12, 14, 00, 0, tzinfo=timezone.utc)), + # 4h -> 2019-08-12 14:00:00 + ("4h", datetime(2019, 8, 12, 16, 00, 0, tzinfo=timezone.utc)), + # 1d -> 2019-08-13 00:00:00 + ("1d", datetime(2019, 8, 13, 0, 0, 0, tzinfo=timezone.utc)), + ] - # 5m -> 2019-08-12 13:25:00 - assert timeframe_to_next_date("5m", date) == datetime( - 2019, 8, 12, 13, 25, 0, tzinfo=timezone.utc) - # 10m -> 2019-08-12 13:30:00 - assert timeframe_to_next_date("10m", date) == datetime( - 2019, 8, 12, 13, 30, 0, tzinfo=timezone.utc) - # 1h -> 2019-08-12 14:00:00 - assert timeframe_to_next_date("1h", date) == datetime( - 2019, 8, 12, 14, 00, 0, tzinfo=timezone.utc) - # 2h -> 2019-08-12 14:00:00 - assert timeframe_to_next_date("2h", date) == datetime( - 2019, 8, 12, 14, 00, 0, tzinfo=timezone.utc) - # 4h -> 2019-08-12 14:00:00 - assert timeframe_to_next_date("4h", date) == datetime( - 2019, 8, 12, 16, 00, 0, tzinfo=timezone.utc) - # 1d -> 2019-08-13 00:00:00 - assert timeframe_to_next_date("1d", date) == datetime( - 2019, 8, 13, 0, 0, 0, tzinfo=timezone.utc) + for interval, result in tf_list: + assert timeframe_to_next_date(interval, date) == result From c042d08bb73bbb00be88fb1afed5b2f147972035 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 16:29:09 +0200 Subject: [PATCH 0178/3421] Add lock_pairs to interface --- freqtrade/strategy/interface.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 37aa97bb1..363b0739a 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -107,6 +107,7 @@ class IStrategy(ABC): self.config = config # Dict to determine if analysis is necessary self._last_candle_seen_per_pair: Dict[str, datetime] = {} + self._pair_locked_until: Dict[str, datetime] = {} @abstractmethod def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: @@ -154,6 +155,13 @@ class IStrategy(ABC): """ return self.__class__.__name__ + def lock_pair(self, pair: str, until: datetime) -> None: + """ + Locks pair until a given timestamp happens. + Locked pairs are not analyzed, and are prevented from opening new trades. + """ + self._pair_locked_until['pair'] = until + def analyze_ticker(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Parses the given ticker history and returns a populated DataFrame From 241d5100965ab0180a3393e06f37354c040ab2cf Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 16:34:55 +0200 Subject: [PATCH 0179/3421] Handle and update sell-orders immediately if they are closed --- freqtrade/freqtradebot.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 603b0631f..b384902b2 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -875,15 +875,18 @@ class FreqtradeBot(object): logger.exception(f"Could not cancel stoploss order {trade.stoploss_order_id}") # Execute sell and update trade record - order_id = self.exchange.sell(pair=str(trade.pair), - ordertype=self.strategy.order_types[sell_type], - amount=trade.amount, rate=limit, - time_in_force=self.strategy.order_time_in_force['sell'] - )['id'] + order = self.exchange.sell(pair=str(trade.pair), + ordertype=self.strategy.order_types[sell_type], + amount=trade.amount, rate=limit, + time_in_force=self.strategy.order_time_in_force['sell'] + ) - trade.open_order_id = order_id + trade.open_order_id = order['id'] trade.close_rate_requested = limit trade.sell_reason = sell_reason.value + # In case of market sell orders the order can be closed immediately + if order.get('status', 'unknown') == 'closed': + trade.update(order) Trade.session.flush() self._notify_sell(trade) From bb0b1600016b87796d4949c1dae5ecd4d10c7e18 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 16:39:21 +0200 Subject: [PATCH 0180/3421] Remove duplicate test --- freqtrade/tests/test_freqtradebot.py | 47 ---------------------------- 1 file changed, 47 deletions(-) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 4e649250a..8c241197b 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -2374,53 +2374,6 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, assert rpc_mock.call_count == 2 -def test_execute_sell_without_conf_sell_up(default_conf, ticker, fee, - ticker_sell_up, markets, mocker) -> None: - rpc_mock = patch_RPCManager(mocker) - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - _load_markets=MagicMock(return_value={}), - get_ticker=ticker, - get_fee=fee, - markets=PropertyMock(return_value=markets) - ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) - - # Create some test data - freqtrade.create_trade() - - trade = Trade.query.first() - assert trade - - # Increase the price and sell it - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_up - ) - freqtrade.config = {} - - freqtrade.execute_sell(trade=trade, limit=ticker_sell_up()['bid'], sell_reason=SellType.ROI) - - assert rpc_mock.call_count == 2 - last_msg = rpc_mock.call_args_list[-1][0][0] - assert { - 'type': RPCMessageType.SELL_NOTIFICATION, - 'exchange': 'Bittrex', - 'pair': 'ETH/BTC', - 'gain': 'profit', - 'limit': 1.172e-05, - 'amount': 90.99181073703367, - 'order_type': 'limit', - 'open_rate': 1.099e-05, - 'current_rate': 1.172e-05, - 'profit_amount': 6.126e-05, - 'profit_percent': 0.0611052, - 'sell_reason': SellType.ROI.value - - } == last_msg - - def test_execute_sell_without_conf_sell_down(default_conf, ticker, fee, ticker_sell_down, markets, mocker) -> None: rpc_mock = patch_RPCManager(mocker) From 444ee274d727cfe280d03f115b56226556a70d64 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 16:46:34 +0200 Subject: [PATCH 0181/3421] close dry-run orders in case of market orders --- freqtrade/exchange/exchange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 657f382d8..5bde4ce98 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -371,7 +371,7 @@ class Exchange(object): 'side': side, 'remaining': amount, 'datetime': arrow.utcnow().isoformat(), - 'status': "open", + 'status': "closed" if ordertype == "market" else "open", 'fee': None, "info": {} } From feced71a6d8fff0bf4fdd5d1a5db45b948d3182c Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 16:47:00 +0200 Subject: [PATCH 0182/3421] Test closing sell-orders immediately --- freqtrade/tests/test_freqtradebot.py | 52 ++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 8c241197b..9ced5c5a1 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -2374,6 +2374,58 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, assert rpc_mock.call_count == 2 +def test_execute_sell_market_order(default_conf, ticker, fee, + ticker_sell_up, markets, mocker) -> None: + rpc_mock = patch_RPCManager(mocker) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + _load_markets=MagicMock(return_value={}), + get_ticker=ticker, + get_fee=fee, + markets=PropertyMock(return_value=markets) + ) + freqtrade = FreqtradeBot(default_conf) + patch_get_signal(freqtrade) + + # Create some test data + freqtrade.create_trade() + + trade = Trade.query.first() + assert trade + + # Increase the price and sell it + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_ticker=ticker_sell_up + ) + freqtrade.config['order_types']['sell'] = 'market' + + freqtrade.execute_sell(trade=trade, limit=ticker_sell_up()['bid'], sell_reason=SellType.ROI) + + assert not trade.is_open + assert trade.close_profit == 0.0611052 + + assert rpc_mock.call_count == 2 + last_msg = rpc_mock.call_args_list[-1][0][0] + assert { + 'type': RPCMessageType.SELL_NOTIFICATION, + 'exchange': 'Bittrex', + 'pair': 'ETH/BTC', + 'gain': 'profit', + 'limit': 1.172e-05, + 'amount': 90.99181073703367, + 'order_type': 'market', + 'open_rate': 1.099e-05, + 'current_rate': 1.172e-05, + 'profit_amount': 6.126e-05, + 'profit_percent': 0.0611052, + 'stake_currency': 'BTC', + 'fiat_currency': 'USD', + 'sell_reason': SellType.ROI.value + + } == last_msg + + def test_execute_sell_without_conf_sell_down(default_conf, ticker, fee, ticker_sell_down, markets, mocker) -> None: rpc_mock = patch_RPCManager(mocker) From 0bd71db5df0c66762bd32b01ef9f3a4d3017140d Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 12 Aug 2019 15:25:05 +0000 Subject: [PATCH 0183/3421] Update scipy from 1.3.0 to 1.3.1 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 6420c7879..9d558b5b8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,4 +3,4 @@ numpy==1.17.0 pandas==0.25.0 -scipy==1.3.0 +scipy==1.3.1 From c4cdd85e807aa763fbf9271d3035fa40e4a40e62 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 12 Aug 2019 15:25:06 +0000 Subject: [PATCH 0184/3421] Update ccxt from 1.18.1021 to 1.18.1043 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 1413539c3..8eabfc5ea 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.1021 +ccxt==1.18.1043 SQLAlchemy==1.3.6 python-telegram-bot==11.1.0 arrow==0.14.4 From 6f42d6658fcc99b6f5f98ed6aee2778118c5ce0e Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 12 Aug 2019 15:25:08 +0000 Subject: [PATCH 0185/3421] Update arrow from 0.14.4 to 0.14.5 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 8eabfc5ea..52b5cc590 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -3,7 +3,7 @@ ccxt==1.18.1043 SQLAlchemy==1.3.6 python-telegram-bot==11.1.0 -arrow==0.14.4 +arrow==0.14.5 cachetools==3.1.1 requests==2.22.0 urllib3==1.25.3 From dd30d746884fd805fc89520c90dba79c61cdd03c Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 12 Aug 2019 15:25:09 +0000 Subject: [PATCH 0186/3421] Update python-rapidjson from 0.7.2 to 0.8.0 --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 52b5cc590..19beec64b 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -23,7 +23,7 @@ filelock==3.0.12 py_find_1st==1.1.4 #Load ticker files 30% faster -python-rapidjson==0.7.2 +python-rapidjson==0.8.0 # Notify systemd sdnotify==0.3.2 From 200b6ea10faccbe0ce8f57aa221bf8301cfd8eda Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 19:50:22 +0200 Subject: [PATCH 0187/3421] Add is_pair_locked --- freqtrade/strategy/interface.py | 19 +++++++++++++++---- freqtrade/tests/strategy/test_interface.py | 16 ++++++++++++++++ 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 363b0739a..e887da43b 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -4,7 +4,7 @@ This module defines the interface to apply for strategies """ import logging from abc import ABC, abstractmethod -from datetime import datetime +from datetime import datetime, timezone from enum import Enum from typing import Dict, List, NamedTuple, Optional, Tuple import warnings @@ -159,8 +159,19 @@ class IStrategy(ABC): """ Locks pair until a given timestamp happens. Locked pairs are not analyzed, and are prevented from opening new trades. + :param pair: Pair to lock + :param until: datetime in UTC until the pair should be blocked from opening new trades. + Needs to be timezone aware `datetime.now(timezone.utc)` """ - self._pair_locked_until['pair'] = until + self._pair_locked_until[pair] = until + + def is_pair_locked(self, pair: str) -> bool: + """ + Checks if a pair is currently locked + """ + if pair not in self._pair_locked_until: + return False + return self._pair_locked_until[pair] >= datetime.now(timezone.utc) def analyze_ticker(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ @@ -268,8 +279,8 @@ class IStrategy(ABC): sell: bool, low: float = None, high: float = None, force_stoploss: float = 0) -> SellCheckTuple: """ - This function evaluate if on the condition required to trigger a sell has been reached - if the threshold is reached and updates the trade record. + This function evaluate if one of the conditions required to trigger a sell + has been reached, which can either be a stop-loss, ROI or sell-signal. :param low: Only used during backtesting to simulate stoploss :param high: Only used during backtesting, to simulate ROI :param force_stoploss: Externally provided stoploss diff --git a/freqtrade/tests/strategy/test_interface.py b/freqtrade/tests/strategy/test_interface.py index 0eb7630a1..36c9ffcd4 100644 --- a/freqtrade/tests/strategy/test_interface.py +++ b/freqtrade/tests/strategy/test_interface.py @@ -286,3 +286,19 @@ def test__analyze_ticker_internal_skip_analyze(ticker_history, mocker, caplog) - assert ret['sell'].sum() == 0 assert not log_has('TA Analysis Launched', caplog) assert log_has('Skipping TA Analysis for already analyzed candle', caplog) + + +def test_is_pair_locked(default_conf): + strategy = DefaultStrategy(default_conf) + # dict should be empty + assert not strategy._pair_locked_until + + pair = 'ETH/BTC' + assert not strategy.is_pair_locked(pair) + strategy.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime) + # ETH/BTC locked for 4 minutes + assert strategy.is_pair_locked(pair) + + # XRP/BTC should not be locked now + pair = 'XRP/BTC' + assert not strategy.is_pair_locked(pair) From 2600cb7b641dd6ce0ab5da9aafb5ba3056ad8274 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 20:04:19 +0200 Subject: [PATCH 0188/3421] simplify timeframe_next_date calculation --- freqtrade/exchange/__init__.py | 4 +++- freqtrade/exchange/exchange.py | 10 ++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index 5c58320f6..828042911 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -5,6 +5,8 @@ from freqtrade.exchange.exchange import (is_exchange_bad, # noqa: F401 available_exchanges) from freqtrade.exchange.exchange import (timeframe_to_seconds, # noqa: F401 timeframe_to_minutes, - timeframe_to_msecs) + timeframe_to_msecs, + timeframe_to_next_date, + timeframe_to_prev_date) from freqtrade.exchange.kraken import Kraken # noqa: F401 from freqtrade.exchange.binance import Binance # noqa: F401 diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index fe5561be2..d0432a060 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -817,11 +817,9 @@ def timeframe_to_next_date(timeframe: str, date: datetime = None) -> datetime: :param date: date to use. Defaults to utcnow() :returns: date of next candle (with utc timezone) """ - if not date: - date = datetime.utcnow() + prevdate = timeframe_to_prev_date(timeframe, date) timeframe_secs = timeframe_to_seconds(timeframe) - # Get offset to prev timeframe - offset = date.timestamp() % timeframe_secs - # Add remaining seconds to next timeframe - new_timestamp = date.timestamp() + (timeframe_secs - offset) + + # Add one interval to previous candle + new_timestamp = prevdate.timestamp() + timeframe_secs return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) From 8f9291285238037d5483807e479741cde9f3de33 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 10 Aug 2019 21:59:44 +0300 Subject: [PATCH 0189/3421] final colorization schema colorization schema-2: red, green, bright/dim colorization schema-3: red, green, bright only green bests colorization schema-4: no red, green for profit, bright for bests --- freqtrade/optimize/hyperopt.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 802c848f1..550f13e28 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -163,11 +163,9 @@ class Hyperopt(Backtesting): # Colorize output if self.config.get('print_colorized', False): if results['total_profit'] > 0: - log_str = Style.BRIGHT + log_str - if results['loss'] >= MAX_LOSS: - log_str = Fore.RED + log_str - elif is_best_loss: log_str = Fore.GREEN + log_str + if print_all and is_best_loss: + log_str = Style.BRIGHT + log_str if print_all: print(log_str) else: From 1a34b9b61ca481b5a7472723c8a780ce45c4a194 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 12 Aug 2019 21:07:29 +0300 Subject: [PATCH 0190/3421] --no-color option introduced --- freqtrade/configuration/cli_options.py | 9 +++++---- freqtrade/configuration/configuration.py | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index aab3c12b3..a5784b0c1 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -192,10 +192,11 @@ AVAILABLE_CLI_OPTIONS = { default=False, ), "print_colorized": Arg( - '--color', '--print-colorized', - help='Print colorized hyperopt results.', - action='store_true', - default=False + '--no-color', + help='Disable colorization of hyperopt results. May be useful if you are ' + 'redirecting output to a file.', + action='store_false', + default=True, ), "hyperopt_jobs": Arg( '-j', '--job-workers', diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 01732ca9e..4d85d5c28 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -254,8 +254,9 @@ class Configuration(object): self._args_to_config(config, argname='print_all', logstring='Parameter --print-all detected ...') - self._args_to_config(config, argname='print_colorized', - logstring='Parameter --color/--print-colorized detected ...') + if 'print_colorized' in self.args and not self.args.print_colorized: + logger.info('Parameter --no-color detected ...') + config.update({'print_colorized': getattr(self.args, 'print_colorized')}) self._args_to_config(config, argname='hyperopt_jobs', logstring='Parameter -j/--job-workers detected: {}') From 23a70932d299b00f6d3f44e5c95676adfca8b71c Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 20:36:45 +0200 Subject: [PATCH 0191/3421] Remove pointless tests (without config?? really?) --- freqtrade/tests/test_freqtradebot.py | 94 ---------------------------- 1 file changed, 94 deletions(-) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 4e649250a..41ce661b9 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -2374,100 +2374,6 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, assert rpc_mock.call_count == 2 -def test_execute_sell_without_conf_sell_up(default_conf, ticker, fee, - ticker_sell_up, markets, mocker) -> None: - rpc_mock = patch_RPCManager(mocker) - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - _load_markets=MagicMock(return_value={}), - get_ticker=ticker, - get_fee=fee, - markets=PropertyMock(return_value=markets) - ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) - - # Create some test data - freqtrade.create_trade() - - trade = Trade.query.first() - assert trade - - # Increase the price and sell it - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_up - ) - freqtrade.config = {} - - freqtrade.execute_sell(trade=trade, limit=ticker_sell_up()['bid'], sell_reason=SellType.ROI) - - assert rpc_mock.call_count == 2 - last_msg = rpc_mock.call_args_list[-1][0][0] - assert { - 'type': RPCMessageType.SELL_NOTIFICATION, - 'exchange': 'Bittrex', - 'pair': 'ETH/BTC', - 'gain': 'profit', - 'limit': 1.172e-05, - 'amount': 90.99181073703367, - 'order_type': 'limit', - 'open_rate': 1.099e-05, - 'current_rate': 1.172e-05, - 'profit_amount': 6.126e-05, - 'profit_percent': 0.0611052, - 'sell_reason': SellType.ROI.value - - } == last_msg - - -def test_execute_sell_without_conf_sell_down(default_conf, ticker, fee, - ticker_sell_down, markets, mocker) -> None: - rpc_mock = patch_RPCManager(mocker) - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - _load_markets=MagicMock(return_value={}), - get_ticker=ticker, - get_fee=fee, - markets=PropertyMock(return_value=markets) - ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) - - # Create some test data - freqtrade.create_trade() - - trade = Trade.query.first() - assert trade - - # Decrease the price and sell it - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_down - ) - - freqtrade.config = {} - freqtrade.execute_sell(trade=trade, limit=ticker_sell_down()['bid'], - sell_reason=SellType.STOP_LOSS) - - assert rpc_mock.call_count == 2 - last_msg = rpc_mock.call_args_list[-1][0][0] - assert { - 'type': RPCMessageType.SELL_NOTIFICATION, - 'exchange': 'Bittrex', - 'pair': 'ETH/BTC', - 'gain': 'loss', - 'limit': 1.044e-05, - 'amount': 90.99181073703367, - 'order_type': 'limit', - 'open_rate': 1.099e-05, - 'current_rate': 1.044e-05, - 'profit_amount': -5.492e-05, - 'profit_percent': -0.05478342, - 'sell_reason': SellType.STOP_LOSS.value - } == last_msg - - def test_sell_profit_only_enable_profit(default_conf, limit_buy_order, fee, markets, mocker) -> None: patch_RPCManager(mocker) From ca739f71fb17b0c0437745ab257f67afc3b9823a Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 20:37:11 +0200 Subject: [PATCH 0192/3421] Fix default argument handling for timeframe_to_nextdate --- freqtrade/exchange/exchange.py | 2 +- freqtrade/tests/exchange/test_exchange.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index d0432a060..e36032c49 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -801,7 +801,7 @@ def timeframe_to_prev_date(timeframe: str, date: datetime = None) -> datetime: :returns: date of previous candle (with utc timezone) """ if not date: - date = datetime.utcnow() + date = datetime.now(timezone.utc) timeframe_secs = timeframe_to_seconds(timeframe) # Get offset based on timerame_secs offset = date.timestamp() % timeframe_secs diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index 23604f44f..3747a2ad3 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -1588,6 +1588,9 @@ def test_timeframe_to_prev_date(): for interval, result in tf_list: assert timeframe_to_prev_date(interval, date) == result + date = datetime.now(tz=timezone.utc) + assert timeframe_to_prev_date("5m", date) < date + def test_timeframe_to_next_date(): # 2019-08-12 13:22:08 @@ -1609,3 +1612,6 @@ def test_timeframe_to_next_date(): for interval, result in tf_list: assert timeframe_to_next_date(interval, date) == result + + date = datetime.now(tz=timezone.utc) + assert timeframe_to_next_date("5m", date) > date From 59acd5ec7c0b5927f1386ab6a10ee948b9ad9612 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 20:39:34 +0200 Subject: [PATCH 0193/3421] Lock pair for the rest of the candle in case of sells --- freqtrade/freqtradebot.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 603b0631f..c14392752 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -16,7 +16,7 @@ from freqtrade import (DependencyException, OperationalException, InvalidOrderEx from freqtrade.data.converter import order_book_to_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.edge import Edge -from freqtrade.exchange import timeframe_to_minutes +from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date from freqtrade.persistence import Trade from freqtrade.rpc import RPCManager, RPCMessageType from freqtrade.resolvers import ExchangeResolver, StrategyResolver, PairListResolver @@ -284,6 +284,9 @@ class FreqtradeBot(object): # running get_signal on historical data fetched for _pair in whitelist: + if self.strategy.is_pair_locked(_pair): + logger.info(f"Pair {_pair} is currently locked.") + continue (buy, sell) = self.strategy.get_signal( _pair, interval, self.dataprovider.ohlcv(_pair, self.strategy.ticker_interval)) @@ -885,6 +888,10 @@ class FreqtradeBot(object): trade.close_rate_requested = limit trade.sell_reason = sell_reason.value Trade.session.flush() + + # Lock pair for one candle to prevent immediate rebuys + self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['ticker_interval'])) + self._notify_sell(trade) def _notify_sell(self, trade: Trade): From 58d308fd05cef7339445fb91226ff6f052021ca0 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 12 Aug 2019 23:13:04 +0300 Subject: [PATCH 0194/3421] fix handling --no-color for edge and backtesting --- freqtrade/configuration/configuration.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 4d85d5c28..a2e16d5d9 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -256,7 +256,9 @@ class Configuration(object): if 'print_colorized' in self.args and not self.args.print_colorized: logger.info('Parameter --no-color detected ...') - config.update({'print_colorized': getattr(self.args, 'print_colorized')}) + config.update({'print_colorized': False}) + else: + config.update({'print_colorized': True}) self._args_to_config(config, argname='hyperopt_jobs', logstring='Parameter -j/--job-workers detected: {}') From 482847a99417a9c582492d685e5a225ad326150d Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 13 Aug 2019 00:10:33 +0300 Subject: [PATCH 0195/3421] docs adjusted; various fixes to bot-usage.md and configuration.md --- docs/bot-usage.md | 15 +++++++++------ docs/configuration.md | 19 ++++++++++++++----- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 0ca2f3cc5..f720bf554 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -2,7 +2,7 @@ This page explains the different parameters of the bot and how to run it. -!Note: +!!! Note: If you've used `setup.sh`, don't forget to activate your virtual environment (`source .env/bin/activate`) before running freqtrade commands. @@ -43,19 +43,22 @@ optional arguments: --sd-notify Notify systemd service manager. ``` -### How to use a different configuration file? +### How to specify which configuration file be used? -The bot allows you to select which configuration file you want to use. Per -default, the bot will load the file `./config.json` +The bot allows you to select which configuration file you want to use by means of +the `-c/--config` command line option: ```bash freqtrade -c path/far/far/away/config.json ``` +Per default, the bot loads the `config.json` configuration file from the current +working directory. + ### How to use multiple configuration files? The bot allows you to use multiple configuration files by specifying multiple -`-c/--config` configuration options in the command line. Configuration parameters +`-c/--config` options in the command line. Configuration parameters defined in the last configuration file override parameters with the same name defined in the previous configuration file specified in the command line. @@ -266,7 +269,7 @@ optional arguments: ## Edge commands -To know your trade expectacny and winrate against historical data, you can use Edge. +To know your trade expectancy and winrate against historical data, you can use Edge. ``` usage: freqtrade edge [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE] diff --git a/docs/configuration.md b/docs/configuration.md index f8dbbbbbb..b48e23eee 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1,15 +1,24 @@ # Configure the bot -This page explains how to configure your `config.json` file. +This page explains how to configure your configuration file. -## Setup config.json +Per default, the bot loads configuration from the `config.json` file located in the current working directory. +You can change the configuration file used by the bot with the `-c/--config` option. -We recommend to copy and use the `config.json.example` as a template +If you used the [Quick start](installation.md/#quick-start) method for installing +the bot, the installation script should have already created the default configuration file (`config.json`) for you. + +We recommend you to copy and use the `config.json.example` as a template for your bot configuration. -The table below will list all configuration parameters. +The configuration file defines the set of configuration parameters for the bot written in the JSON format. +Additionally, you may use one-line `// ...` and multi-line `/* ... */` comments. -Mandatory Parameters are marked as **Required**. +## Configuration parameters + +The table below will list all configuration parameters available. + +Mandatory parameters are marked as **Required**. | Command | Default | Description | |----------|---------|-------------| From de802341651109b31884d3af3931123d16fe590b Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 13 Aug 2019 00:23:41 +0300 Subject: [PATCH 0196/3421] hyperopt options updated in bot-usage.md --- docs/bot-usage.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 8877ed010..e3db2ab33 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -207,7 +207,7 @@ usage: freqtrade hyperopt [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE] [--customhyperopt NAME] [--hyperopt-path PATH] [--eps] [-e INT] [-s {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...]] - [--dmmp] [--print-all] [-j JOBS] + [--dmmp] [--print-all] [--no-color] [-j JOBS] [--random-state INT] [--min-trades INT] [--continue] [--hyperopt-loss NAME] @@ -243,6 +243,8 @@ optional arguments: (same as setting `max_open_trades` to a very high number). --print-all Print all results, not only the best ones. + --no-color Disable colorization of hyperopt results. May be + useful if you are redirecting output to a file. -j JOBS, --job-workers JOBS The number of concurrently running jobs for hyperoptimization (hyperopt worker processes). If -1 @@ -256,8 +258,7 @@ optional arguments: --continue Continue hyperopt from previous runs. By default, temporary files will be removed and hyperopt will start from scratch. - --hyperopt-loss NAME - Specify the class name of the hyperopt loss function + --hyperopt-loss NAME Specify the class name of the hyperopt loss function class (IHyperOptLoss). Different functions can generate completely different results, since the target for optimization is different. (default: From f960ea039e472e3b29d6b3bd69842f9d7e524097 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 08:05:51 +0200 Subject: [PATCH 0197/3421] Remove duplicate test --- freqtrade/tests/test_freqtradebot.py | 47 ---------------------------- 1 file changed, 47 deletions(-) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 9ced5c5a1..a1d5f691e 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -2426,53 +2426,6 @@ def test_execute_sell_market_order(default_conf, ticker, fee, } == last_msg -def test_execute_sell_without_conf_sell_down(default_conf, ticker, fee, - ticker_sell_down, markets, mocker) -> None: - rpc_mock = patch_RPCManager(mocker) - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - _load_markets=MagicMock(return_value={}), - get_ticker=ticker, - get_fee=fee, - markets=PropertyMock(return_value=markets) - ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) - - # Create some test data - freqtrade.create_trade() - - trade = Trade.query.first() - assert trade - - # Decrease the price and sell it - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_down - ) - - freqtrade.config = {} - freqtrade.execute_sell(trade=trade, limit=ticker_sell_down()['bid'], - sell_reason=SellType.STOP_LOSS) - - assert rpc_mock.call_count == 2 - last_msg = rpc_mock.call_args_list[-1][0][0] - assert { - 'type': RPCMessageType.SELL_NOTIFICATION, - 'exchange': 'Bittrex', - 'pair': 'ETH/BTC', - 'gain': 'loss', - 'limit': 1.044e-05, - 'amount': 90.99181073703367, - 'order_type': 'limit', - 'open_rate': 1.099e-05, - 'current_rate': 1.044e-05, - 'profit_amount': -5.492e-05, - 'profit_percent': -0.05478342, - 'sell_reason': SellType.STOP_LOSS.value - } == last_msg - - def test_sell_profit_only_enable_profit(default_conf, limit_buy_order, fee, markets, mocker) -> None: patch_RPCManager(mocker) From d8dbea9d5b958f14f49677565363f8dde16fa3da Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 08:20:35 +0200 Subject: [PATCH 0198/3421] Add exchange_reasons to bad exchanges --- freqtrade/exchange/__init__.py | 3 ++- freqtrade/exchange/exchange.py | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index 5c58320f6..cbf851fc2 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -1,5 +1,6 @@ from freqtrade.exchange.exchange import Exchange # noqa: F401 -from freqtrade.exchange.exchange import (is_exchange_bad, # noqa: F401 +from freqtrade.exchange.exchange import (get_exchange_bad_reason, # noqa: F401 + is_exchange_bad, is_exchange_available, is_exchange_officially_supported, available_exchanges) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 657f382d8..9f363c799 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -25,6 +25,10 @@ logger = logging.getLogger(__name__) API_RETRY_COUNT = 4 +BAD_EXCHANGES = { + "bitmex": "Various reasons", + "bitstamp": "Does not provide history. Details in https://github.com/freqtrade/freqtrade/issues/1983", + } def retrier_async(f): @@ -755,7 +759,11 @@ class Exchange(object): def is_exchange_bad(exchange: str) -> bool: - return exchange in ['bitmex', 'bitstamp'] + return exchange in BAD_EXCHANGES + + +def get_exchange_bad_reason(exchange: str) -> str: + return BAD_EXCHANGES.get(exchange) def is_exchange_available(exchange: str, ccxt_module=None) -> bool: From 3c589bb877c3c938cd0156dd231a1a6dc274a24d Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 08:26:10 +0200 Subject: [PATCH 0199/3421] fail if known bad exchanges are detcted --- docs/configuration.md | 1 + freqtrade/configuration/check_exchange.py | 11 +++++------ freqtrade/configuration/configuration.py | 2 +- freqtrade/exchange/exchange.py | 5 +++-- freqtrade/tests/test_configuration.py | 6 +++--- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index f8dbbbbbb..fc450bd82 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -53,6 +53,7 @@ Mandatory Parameters are marked as **Required**. | `experimental.use_sell_signal` | false | Use your sell strategy in addition of the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy). | `experimental.sell_profit_only` | false | Waits until you have made a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy). | `experimental.ignore_roi_if_buy_signal` | false | Does not sell if the buy-signal is still active. Takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy). +| `experimental.block_bad_exchanges` | true | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now. | `pairlist.method` | StaticPairList | Use static or dynamic volume-based pairlist. [More information below](#dynamic-pairlists). | `pairlist.config` | None | Additional configuration for dynamic pairlists. [More information below](#dynamic-pairlists). | `telegram.enabled` | true | **Required.** Enable or not the usage of Telegram. diff --git a/freqtrade/configuration/check_exchange.py b/freqtrade/configuration/check_exchange.py index 8dae06f7a..70f4cfa33 100644 --- a/freqtrade/configuration/check_exchange.py +++ b/freqtrade/configuration/check_exchange.py @@ -2,9 +2,9 @@ import logging from typing import Any, Dict from freqtrade import OperationalException -from freqtrade.exchange import (is_exchange_bad, is_exchange_available, - is_exchange_officially_supported, available_exchanges) - +from freqtrade.exchange import (available_exchanges, get_exchange_bad_reason, + is_exchange_available, is_exchange_bad, + is_exchange_officially_supported) logger = logging.getLogger(__name__) @@ -31,9 +31,8 @@ def check_exchange(config: Dict[str, Any], check_for_bad: bool = True) -> bool: ) if check_for_bad and is_exchange_bad(exchange): - logger.warning(f'Exchange "{exchange}" is known to not work with the bot yet. ' - f'Use it only for development and testing purposes.') - return False + raise OperationalException(f'Exchange "{exchange}" is known to not work with the bot yet. ' + f'Reason: {get_exchange_bad_reason(exchange)}') if is_exchange_officially_supported(exchange): logger.info(f'Exchange "{exchange}" is officially supported ' diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 237346e37..4bbf4ddd6 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -148,7 +148,7 @@ class Configuration(object): config['internals'].update({'sd_notify': True}) # Check if the exchange set by the user is supported - check_exchange(config) + check_exchange(config, config.get('experimental', {}).get('block_bad_exchanges', True)) def _process_datadir_options(self, config: Dict[str, Any]) -> None: """ diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 9f363c799..0e23cf8b8 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -27,7 +27,8 @@ logger = logging.getLogger(__name__) API_RETRY_COUNT = 4 BAD_EXCHANGES = { "bitmex": "Various reasons", - "bitstamp": "Does not provide history. Details in https://github.com/freqtrade/freqtrade/issues/1983", + "bitstamp": "Does not provide history. " + "Details in https://github.com/freqtrade/freqtrade/issues/1983", } @@ -763,7 +764,7 @@ def is_exchange_bad(exchange: str) -> bool: def get_exchange_bad_reason(exchange: str) -> str: - return BAD_EXCHANGES.get(exchange) + return BAD_EXCHANGES.get(exchange, "") def is_exchange_available(exchange: str, ccxt_module=None) -> bool: diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 132dd334e..2bc561b7d 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -499,9 +499,9 @@ def test_check_exchange(default_conf, caplog) -> None: # Test a 'bad' exchange, which known to have serious problems default_conf.get('exchange').update({'name': 'bitmex'}) - assert not check_exchange(default_conf) - assert log_has_re(r"Exchange .* is known to not work with the bot yet\. " - r"Use it only for development and testing purposes\.", caplog) + with pytest.raises(OperationalException, + match=r"Exchange .* is known to not work with the bot yet.*"): + check_exchange(default_conf) caplog.clear() # Test a 'bad' exchange with check_for_bad=False From 2961efdc1802bba064d9ead55df125fa2c0816a5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Aug 2019 20:48:21 +0200 Subject: [PATCH 0200/3421] Initial test for locked pair --- freqtrade/tests/test_freqtradebot.py | 37 ++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 41ce661b9..6f6a539eb 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -2499,6 +2499,43 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, marke assert trade.sell_reason == SellType.SELL_SIGNAL.value +def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, markets, mocker, caplog) -> None: + patch_RPCManager(mocker) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + _load_markets=MagicMock(return_value={}), + get_ticker=ticker, + get_fee=fee, + markets=PropertyMock(return_value=markets) + ) + freqtrade = FreqtradeBot(default_conf) + patch_get_signal(freqtrade) + + # Create some test data + freqtrade.create_trade() + + trade = Trade.query.first() + assert trade + + # Decrease the price and sell it + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_ticker=ticker_sell_down + ) + + freqtrade.execute_sell(trade=trade, limit=ticker_sell_down()['bid'], + sell_reason=SellType.STOP_LOSS) + trade.close(ticker_sell_down()['bid']) + assert trade.pair in freqtrade.strategy._pair_locked_until + assert freqtrade.strategy.is_pair_locked(trade.pair) + + # reinit - should buy other pair. + caplog.clear() + freqtrade.create_trade() + + assert log_has(f"Pair {trade.pair} is currently locked.", caplog) + + def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, markets, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) From 28e318b6466845900d52f73e5d07c0d25d05f7ef Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 08:47:11 +0200 Subject: [PATCH 0201/3421] Lock pairs for stoploss_on_exchange fills too --- freqtrade/freqtradebot.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c14392752..2d1c1f566 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -681,6 +681,9 @@ class FreqtradeBot(object): if stoploss_order and stoploss_order['status'] == 'closed': trade.sell_reason = SellType.STOPLOSS_ON_EXCHANGE.value trade.update(stoploss_order) + # Lock pair for one candle to prevent immediate rebuys + self.strategy.lock_pair(trade.pair, + timeframe_to_next_date(self.config['ticker_interval'])) self._notify_sell(trade) return True From 8d813fa728a4d454aaa8cf95a84e507513ca5aa6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 09:36:52 +0200 Subject: [PATCH 0202/3421] Remove return-value for _process --- freqtrade/tests/test_freqtradebot.py | 15 +++++++-------- freqtrade/worker.py | 9 ++------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 4e649250a..883e4f050 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -744,8 +744,7 @@ def test_process_exchange_failures(default_conf, ticker, markets, mocker) -> Non worker = Worker(args=None, config=default_conf) patch_get_signal(worker.freqtrade) - result = worker._process() - assert result is False + worker._process() assert sleep_mock.has_calls() @@ -763,8 +762,7 @@ def test_process_operational_exception(default_conf, ticker, markets, mocker) -> assert worker.state == State.RUNNING - result = worker._process() - assert result is False + worker._process() assert worker.state == State.STOPPED assert 'OperationalException' in msg_mock.call_args_list[-1][0][0]['status'] @@ -786,13 +784,14 @@ def test_process_trade_handling( trades = Trade.query.filter(Trade.is_open.is_(True)).all() assert not trades - result = freqtrade.process() - assert result is True + freqtrade.process() + trades = Trade.query.filter(Trade.is_open.is_(True)).all() assert len(trades) == 1 - result = freqtrade.process() - assert result is False + # Nothing happened ... + freqtrade.process() + assert len(trades) == 1 def test_process_trade_no_whitelist_pair( diff --git a/freqtrade/worker.py b/freqtrade/worker.py index db0dba0e8..df792e35e 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -127,11 +127,10 @@ class Worker(object): time.sleep(duration) return result - def _process(self) -> bool: + def _process(self) -> None: logger.debug("========================================") - state_changed = False try: - state_changed = self.freqtrade.process() + self.freqtrade.process() except TemporaryError as error: logger.warning(f"Error: {error}, retrying in {constants.RETRY_TIMEOUT} seconds...") time.sleep(constants.RETRY_TIMEOUT) @@ -144,10 +143,6 @@ class Worker(object): }) logger.exception('OperationalException. Stopping trader ...') self.freqtrade.state = State.STOPPED - # TODO: The return value of _process() is not used apart tests - # and should (could) be eliminated later. See PR #1689. -# state_changed = True - return state_changed def _reconfigure(self) -> None: """ From 4b8eaaf7aa97c6bf2a0cf339ca980978f34f84a0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 09:37:56 +0200 Subject: [PATCH 0203/3421] freqtradebot.process() does not need to return anything --- freqtrade/freqtradebot.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 603b0631f..c4792a275 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -105,13 +105,12 @@ class FreqtradeBot(object): # Adjust stoploss if it was changed Trade.stoploss_reinitialization(self.strategy.stoploss) - def process(self) -> bool: + def process(self) -> None: """ Queries the persistence layer for open trades and handles them, otherwise a new trade is created. :return: True if one or more trades has been created or closed, False otherwise """ - state_changed = False # Check whether markets have to be reloaded self.exchange._reload_markets() @@ -138,19 +137,17 @@ class FreqtradeBot(object): # First process current opened trades for trade in trades: - state_changed |= self.process_maybe_execute_sell(trade) + self.process_maybe_execute_sell(trade) # Then looking for buy opportunities if len(trades) < self.config['max_open_trades']: - state_changed = self.process_maybe_execute_buy() + self.process_maybe_execute_buy() if 'unfilledtimeout' in self.config: # Check and handle any timed out open orders self.check_handle_timedout() Trade.session.flush() - return state_changed - def _extend_whitelist_with_trades(self, whitelist: List[str], trades: List[Any]): """ Extend whitelist with pairs from open trades From c29389f5f397156819e79055e4bdf21b0b64d2d6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 09:38:21 +0200 Subject: [PATCH 0204/3421] Remove process() checks from tests --- freqtrade/tests/test_freqtradebot.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 883e4f050..7ad9cba7a 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -711,8 +711,7 @@ def test_process_trade_creation(default_conf, ticker, limit_buy_order, trades = Trade.query.filter(Trade.is_open.is_(True)).all() assert not trades - result = freqtrade.process() - assert result is True + freqtrade.process() trades = Trade.query.filter(Trade.is_open.is_(True)).all() assert len(trades) == 1 @@ -833,11 +832,10 @@ def test_process_trade_no_whitelist_pair( )) assert pair not in freqtrade.active_pair_whitelist - result = freqtrade.process() + freqtrade.process() assert pair in freqtrade.active_pair_whitelist # Make sure each pair is only in the list once assert len(freqtrade.active_pair_whitelist) == len(set(freqtrade.active_pair_whitelist)) - assert result is True def test_process_informative_pairs_added(default_conf, ticker, markets, mocker) -> None: From 8873e0072c81d27015d2e0e936f509c6c7690d83 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 09:42:22 +0200 Subject: [PATCH 0205/3421] process_maybe_execute_buy does not need to return bool --- freqtrade/freqtradebot.py | 10 +++------- freqtrade/tests/test_freqtradebot.py | 8 +++----- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c4792a275..b18b8eac5 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -426,21 +426,17 @@ class FreqtradeBot(object): return True - def process_maybe_execute_buy(self) -> bool: + def process_maybe_execute_buy(self) -> None: """ Tries to execute a buy trade in a safe way :return: True if executed """ try: # Create entity and execute trade - if self.create_trade(): - return True - - logger.info('Found no buy signals for whitelisted currencies. Trying again..') - return False + if not self.create_trade(): + logger.info('Found no buy signals for whitelisted currencies. Trying again...') except DependencyException as exception: logger.warning('Unable to create trade: %s', exception) - return False def process_maybe_execute_sell(self, trade: Trade) -> bool: """ diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 7ad9cba7a..f70b5374e 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -1385,14 +1385,12 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, stop_price=0.00002344 * 0.99) -def test_process_maybe_execute_buy(mocker, default_conf) -> None: +def test_process_maybe_execute_buy(mocker, default_conf, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.freqtradebot.FreqtradeBot.create_trade', MagicMock(return_value=True)) - assert freqtrade.process_maybe_execute_buy() - mocker.patch('freqtrade.freqtradebot.FreqtradeBot.create_trade', MagicMock(return_value=False)) - assert not freqtrade.process_maybe_execute_buy() + freqtrade.process_maybe_execute_buy() + assert log_has('Found no buy signals for whitelisted currencies. Trying again...', caplog) def test_process_maybe_execute_buy_exception(mocker, default_conf, caplog) -> None: From 997eb7574aba223f5d25e060b8bd3c488882efc6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 10:01:29 +0200 Subject: [PATCH 0206/3421] Support creating multiple trades in one iteration --- freqtrade/freqtradebot.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index b18b8eac5..f5ea131e4 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -279,15 +279,16 @@ class FreqtradeBot(object): logger.info("No currency pair in whitelist, but checking to sell open trades.") return False + buycount = 0 # running get_signal on historical data fetched for _pair in whitelist: (buy, sell) = self.strategy.get_signal( _pair, interval, self.dataprovider.ohlcv(_pair, self.strategy.ticker_interval)) - if buy and not sell: + if buy and not sell and len(Trade.get_open_trades()) < self.config['max_open_trades']: stake_amount = self._get_trade_stake_amount(_pair) if not stake_amount: - return False + continue logger.info(f"Buy signal found: about create a new trade with stake_amount: " f"{stake_amount} ...") @@ -297,12 +298,11 @@ class FreqtradeBot(object): if (bidstrat_check_depth_of_market.get('enabled', False)) and\ (bidstrat_check_depth_of_market.get('bids_to_ask_delta', 0) > 0): if self._check_depth_of_market_buy(_pair, bidstrat_check_depth_of_market): - return self.execute_buy(_pair, stake_amount) - else: - return False - return self.execute_buy(_pair, stake_amount) + buycount += self.execute_buy(_pair, stake_amount) - return False + buycount += self.execute_buy(_pair, stake_amount) + + return buycount > 0 def _check_depth_of_market_buy(self, pair: str, conf: Dict) -> bool: """ From a325f1ce2bb05df4d7e086c7b7fe0d8da21f9763 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 10:01:43 +0200 Subject: [PATCH 0207/3421] adapt some tests since create_trade() can now buy multiple times, we need to use execute_buy() to create a single trade --- freqtrade/tests/test_freqtradebot.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index f70b5374e..ba978e7ad 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -253,13 +253,14 @@ def test_get_trade_stake_amount_unlimited_amount(default_conf, assert result == default_conf['stake_amount'] / conf['max_open_trades'] # create one trade, order amount should be 'balance / (max_open_trades - num_open_trades)' - freqtrade.create_trade() + # freqtrade.create_trade() + freqtrade.execute_buy('ETH/BTC', result) result = freqtrade._get_trade_stake_amount('LTC/BTC') assert result == default_conf['stake_amount'] / (conf['max_open_trades'] - 1) # create 2 trades, order amount should be None - freqtrade.create_trade() + freqtrade.execute_buy('LTC/BTC', result) result = freqtrade._get_trade_stake_amount('XRP/BTC') assert result is None From 6948e0ba847bd73eafb8e47a64369c9218815706 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 10:12:02 +0200 Subject: [PATCH 0208/3421] Handle orderbook_depth check correctly --- freqtrade/freqtradebot.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index f5ea131e4..699500628 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -299,6 +299,8 @@ class FreqtradeBot(object): (bidstrat_check_depth_of_market.get('bids_to_ask_delta', 0) > 0): if self._check_depth_of_market_buy(_pair, bidstrat_check_depth_of_market): buycount += self.execute_buy(_pair, stake_amount) + else: + continue buycount += self.execute_buy(_pair, stake_amount) From 974d899b337e83066ab4c52bae99d65a4f9b5543 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 10:12:12 +0200 Subject: [PATCH 0209/3421] Adapt some more tests --- freqtrade/tests/test_freqtradebot.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index ba978e7ad..43982fa5c 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -302,6 +302,7 @@ def test_edge_overrides_stoploss(limit_buy_order, fee, markets, caplog, mocker, patch_RPCManager(mocker) patch_exchange(mocker) patch_edge(mocker) + edge_conf['max_open_trades'] = float('inf') # Strategy stoploss is -0.1 but Edge imposes a stoploss at -0.2 # Thus, if price falls 21%, stoploss should be triggered @@ -342,6 +343,7 @@ def test_edge_should_ignore_strategy_stoploss(limit_buy_order, fee, markets, patch_RPCManager(mocker) patch_exchange(mocker) patch_edge(mocker) + edge_conf['max_open_trades'] = float('inf') # Strategy stoploss is -0.1 but Edge imposes a stoploss at -0.2 # Thus, if price falls 15%, stoploss should not be triggered @@ -380,6 +382,7 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, patch_RPCManager(mocker) patch_exchange(mocker) default_conf['stake_amount'] = 0.0000098751 + default_conf['max_open_trades'] = 2 mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, @@ -1284,7 +1287,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, patch_RPCManager(mocker) patch_exchange(mocker) patch_edge(mocker) - + edge_conf['max_open_trades'] = float('inf') mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=MagicMock(return_value={ From d69f7ae471ccb359aa41ba80a57c60d910b1be00 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 10:15:31 +0200 Subject: [PATCH 0210/3421] Adapt final tests to support multi-trade creation --- freqtrade/tests/rpc/test_rpc_telegram.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/tests/rpc/test_rpc_telegram.py b/freqtrade/tests/rpc/test_rpc_telegram.py index 3575520ad..e00903947 100644 --- a/freqtrade/tests/rpc/test_rpc_telegram.py +++ b/freqtrade/tests/rpc/test_rpc_telegram.py @@ -308,6 +308,7 @@ def test_status_table_handle(default_conf, update, ticker, fee, markets, mocker) def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, limit_sell_order, markets, mocker) -> None: patch_exchange(mocker) + default_conf['max_open_trades'] = 1 mocker.patch( 'freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0 @@ -357,9 +358,9 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, # Reset msg_mock msg_mock.reset_mock() + freqtradebot.config['max_open_trades'] = 2 # Add two other trades freqtradebot.create_trade() - freqtradebot.create_trade() trades = Trade.query.all() for trade in trades: @@ -832,14 +833,13 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, markets, mocker markets=PropertyMock(return_value=markets), validate_pairs=MagicMock(return_value={}) ) - + default_conf['max_open_trades'] = 4 freqtradebot = FreqtradeBot(default_conf) patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) # Create some test data - for _ in range(4): - freqtradebot.create_trade() + freqtradebot.create_trade() rpc_mock.reset_mock() update.message.text = '/forcesell all' From 0a07dfc5cf7bad17af06c1e873e363fe72dd2d46 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 10:20:32 +0200 Subject: [PATCH 0211/3421] Add test verifying that multiple trades are opened in one iteration --- freqtrade/tests/test_freqtradebot.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 43982fa5c..e8245d60b 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -697,6 +697,28 @@ def test_create_trade_no_signal(default_conf, fee, mocker) -> None: assert not freqtrade.create_trade() +@pytest.mark.parametrize("max_open", range(1, 5)) +def test_create_trade_multiple_trades(default_conf, ticker, + fee, markets, mocker, max_open) -> None: + patch_RPCManager(mocker) + patch_exchange(mocker) + default_conf['max_open_trades'] = max_open + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_ticker=ticker, + buy=MagicMock(return_value={'id': "12355555"}), + get_fee=fee, + markets=PropertyMock(return_value=markets) + ) + freqtrade = FreqtradeBot(default_conf) + patch_get_signal(freqtrade) + + freqtrade.create_trade() + + trades = Trade.get_open_trades() + assert len(trades) == max_open + + def test_process_trade_creation(default_conf, ticker, limit_buy_order, markets, fee, mocker, caplog) -> None: patch_RPCManager(mocker) From 9d476b5ab267f4bc829f00b3de05a4b97e54e249 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Aug 2019 10:34:27 +0200 Subject: [PATCH 0212/3421] Also check 0 open trades --- freqtrade/tests/test_freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index e8245d60b..acab74233 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -697,7 +697,7 @@ def test_create_trade_no_signal(default_conf, fee, mocker) -> None: assert not freqtrade.create_trade() -@pytest.mark.parametrize("max_open", range(1, 5)) +@pytest.mark.parametrize("max_open", range(0, 5)) def test_create_trade_multiple_trades(default_conf, ticker, fee, markets, mocker, max_open) -> None: patch_RPCManager(mocker) From 94196c84e9f2354163d47b57009793c7ea39e730 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 13 Aug 2019 14:25:56 +0300 Subject: [PATCH 0213/3421] docs: explanation for --no-color and colorization schema for results --- docs/hyperopt.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 16e2212d5..db6dbb343 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -343,9 +343,9 @@ def populate_buy_trend(self, dataframe: DataFrame) -> DataFrame: return dataframe ``` -You can use the `--print-all` command line option if you would like to see all results in the hyperopt output, not only the best ones. +By default, hyperopt prints colorized results -- epochs with positive profit are printed in the green color. This highlighting helps you find epochs that can be interesting for later analysis. Epochs with zero total profit or with negative profits (losses) are printed in the normal color. If you do not need colorization of results (for instance, when you are redirecting hyperopt output to a file) you can switch colorization off by specifying the `--no-color` option in the command line. -When the `--color/--print-colorized` command line option is used, the results are colorized -- bad results (with zero trades or limited by the `--min-trades` option) are red, current bests -- in green, results with positive total profit are printed in bold. +You can use the `--print-all` command line option if you would like to see all results in the hyperopt output, not only the best ones. When `--print-all` is used, current best results are also colorized by default -- they are printed in bold (bright) style. This can also be switched off with the `--no-color` command line option. ### Understand Hyperopt ROI results From 4c4ba08e854bd49b56fbc243f65534fa5ddc3dad Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 13 Aug 2019 19:47:38 +0300 Subject: [PATCH 0214/3421] colorama added to install_requires --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 202e3fd0d..572a32ccb 100644 --- a/setup.py +++ b/setup.py @@ -58,6 +58,7 @@ setup(name='freqtrade', 'py_find_1st', 'python-rapidjson', 'sdnotify', + 'colorama', # from requirements.txt 'numpy', 'pandas', From 3d36747b920ed70e366b4ab0143c445078e4ce5d Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 13 Aug 2019 21:52:50 +0300 Subject: [PATCH 0215/3421] preface in configuration.md reworked --- docs/configuration.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index b48e23eee..66b4b6da2 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1,18 +1,28 @@ # Configure the bot -This page explains how to configure your configuration file. +This page explains how to configure the bot. + +## The Freqtrade configuration file + +The bot uses a set of configuration parameters during its operation that all together conform the bot configuration. It normally reads its configuration from a file (Freqtrade configuration file). Per default, the bot loads configuration from the `config.json` file located in the current working directory. -You can change the configuration file used by the bot with the `-c/--config` option. + +You can change the name of the configuration file used by the bot with the `-c/--config` command line option. + +In some advanced use cases, multiple configuration files can be specified and used by the bot or the bot can read its configuration parameters from the process standard input stream. If you used the [Quick start](installation.md/#quick-start) method for installing the bot, the installation script should have already created the default configuration file (`config.json`) for you. -We recommend you to copy and use the `config.json.example` as a template +If default configuration file is not created we recommend you to copy and use the `config.json.example` as a template for your bot configuration. -The configuration file defines the set of configuration parameters for the bot written in the JSON format. -Additionally, you may use one-line `// ...` and multi-line `/* ... */` comments. +The Freqtrade configuration file is to be written in the JSON format. + +Additionally to the standard JSON syntax, you may use one-line `// ...` and multi-line `/* ... */` comments in your configuration files and trailing commas in the lists of parameters. + +Do not worry if you are not familiar with JSON format -- simply open the configuration file with an editor of your choice, make some changes to the parameters you need, save your changes and, finally, restart the bot or, if it was previously stopped, run it again with the changes you made to the configuration. The bot validates syntax of the configuration file at startup and will warn you if you made any errors editing it. ## Configuration parameters From e35a3492299fd4961585a38b9a3dfedcf920a05b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 06:07:03 +0200 Subject: [PATCH 0216/3421] Fix spelling of interface.py docstring --- freqtrade/strategy/interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index e887da43b..99f5f26de 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -279,7 +279,7 @@ class IStrategy(ABC): sell: bool, low: float = None, high: float = None, force_stoploss: float = 0) -> SellCheckTuple: """ - This function evaluate if one of the conditions required to trigger a sell + This function evaluates if one of the conditions required to trigger a sell has been reached, which can either be a stop-loss, ROI or sell-signal. :param low: Only used during backtesting to simulate stoploss :param high: Only used during backtesting, to simulate ROI From a76136c0102cffbe3e1ca24c2b8ca88e81146558 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 06:16:43 +0200 Subject: [PATCH 0217/3421] Rename create_trade to create_trades --- freqtrade/freqtradebot.py | 4 +- freqtrade/tests/rpc/test_rpc.py | 22 ++-- freqtrade/tests/rpc/test_rpc_apiserver.py | 8 +- freqtrade/tests/rpc/test_rpc_telegram.py | 22 ++-- freqtrade/tests/test_freqtradebot.py | 127 +++++++++++----------- 5 files changed, 91 insertions(+), 92 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 699500628..e67a8687f 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -256,7 +256,7 @@ class FreqtradeBot(object): amount_reserve_percent = max(amount_reserve_percent, 0.5) return min(min_stake_amounts) / amount_reserve_percent - def create_trade(self) -> bool: + def create_trades(self) -> bool: """ Checks the implemented trading indicator(s) for a randomly picked pair, if one pair triggers the buy_signal a new trade record gets created @@ -435,7 +435,7 @@ class FreqtradeBot(object): """ try: # Create entity and execute trade - if not self.create_trade(): + if not self.create_trades(): logger.info('Found no buy signals for whitelisted currencies. Trying again...') except DependencyException as exception: logger.warning('Unable to create trade: %s', exception) diff --git a/freqtrade/tests/rpc/test_rpc.py b/freqtrade/tests/rpc/test_rpc.py index d273244b0..5d3fb7920 100644 --- a/freqtrade/tests/rpc/test_rpc.py +++ b/freqtrade/tests/rpc/test_rpc.py @@ -44,7 +44,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, markets, mocker) -> None: with pytest.raises(RPCException, match=r'.*no active trade*'): rpc._rpc_trade_status() - freqtradebot.create_trade() + freqtradebot.create_trades() results = rpc._rpc_trade_status() assert { 'trade_id': 1, @@ -116,7 +116,7 @@ def test_rpc_status_table(default_conf, ticker, fee, markets, mocker) -> None: with pytest.raises(RPCException, match=r'.*no active order*'): rpc._rpc_status_table() - freqtradebot.create_trade() + freqtradebot.create_trades() result = rpc._rpc_status_table() assert 'instantly' in result['Since'].all() assert 'ETH/BTC' in result['Pair'].all() @@ -151,7 +151,7 @@ def test_rpc_daily_profit(default_conf, update, ticker, fee, rpc = RPC(freqtradebot) rpc._fiat_converter = CryptoToFiatConverter() # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() trade = Trade.query.first() assert trade @@ -208,7 +208,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, rpc._rpc_trade_statistics(stake_currency, fiat_display_currency) # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) @@ -222,7 +222,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, trade.close_date = datetime.utcnow() trade.is_open = False - freqtradebot.create_trade() + freqtradebot.create_trades() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) @@ -292,7 +292,7 @@ def test_rpc_trade_statistics_closed(mocker, default_conf, ticker, fee, markets, rpc = RPC(freqtradebot) # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) @@ -536,7 +536,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker, markets) -> None: msg = rpc._rpc_forcesell('all') assert msg == {'result': 'Created sell orders for all open trades.'} - freqtradebot.create_trade() + freqtradebot.create_trades() msg = rpc._rpc_forcesell('all') assert msg == {'result': 'Created sell orders for all open trades.'} @@ -570,7 +570,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker, markets) -> None: assert cancel_order_mock.call_count == 1 assert trade.amount == filled_amount - freqtradebot.create_trade() + freqtradebot.create_trades() trade = Trade.query.filter(Trade.id == '2').first() amount = trade.amount # make an limit-buy open trade, if there is no 'filled', don't sell it @@ -589,7 +589,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker, markets) -> None: assert cancel_order_mock.call_count == 2 assert trade.amount == amount - freqtradebot.create_trade() + freqtradebot.create_trades() # make an limit-sell open trade mocker.patch( 'freqtrade.exchange.Exchange.get_order', @@ -622,7 +622,7 @@ def test_performance_handle(default_conf, ticker, limit_buy_order, fee, rpc = RPC(freqtradebot) # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() trade = Trade.query.first() assert trade @@ -660,7 +660,7 @@ def test_rpc_count(mocker, default_conf, ticker, fee, markets) -> None: assert counts["current"] == 0 # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() counts = rpc._rpc_count() assert counts["current"] == 1 diff --git a/freqtrade/tests/rpc/test_rpc_apiserver.py b/freqtrade/tests/rpc/test_rpc_apiserver.py index a218d5622..794343a98 100644 --- a/freqtrade/tests/rpc/test_rpc_apiserver.py +++ b/freqtrade/tests/rpc/test_rpc_apiserver.py @@ -275,7 +275,7 @@ def test_api_count(botclient, mocker, ticker, fee, markets): assert rc.json["max"] == 1.0 # Create some test data - ftbot.create_trade() + ftbot.create_trades() rc = client_get(client, f"{BASE_URI}/count") assert_response(rc) assert rc.json["current"] == 1.0 @@ -329,7 +329,7 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li assert len(rc.json) == 1 assert rc.json == {"error": "Error querying _profit: no closed trade"} - ftbot.create_trade() + ftbot.create_trades() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade @@ -418,7 +418,7 @@ def test_api_status(botclient, mocker, ticker, fee, markets): assert_response(rc, 502) assert rc.json == {'error': 'Error querying _status: no active trade'} - ftbot.create_trade() + ftbot.create_trades() rc = client_get(client, f"{BASE_URI}/status") assert_response(rc) assert len(rc.json) == 1 @@ -548,7 +548,7 @@ def test_api_forcesell(botclient, mocker, ticker, fee, markets): assert_response(rc, 502) assert rc.json == {"error": "Error querying _forcesell: invalid argument"} - ftbot.create_trade() + ftbot.create_trades() rc = client_post(client, f"{BASE_URI}/forcesell", data='{"tradeid": "1"}') diff --git a/freqtrade/tests/rpc/test_rpc_telegram.py b/freqtrade/tests/rpc/test_rpc_telegram.py index e00903947..2f469643f 100644 --- a/freqtrade/tests/rpc/test_rpc_telegram.py +++ b/freqtrade/tests/rpc/test_rpc_telegram.py @@ -192,7 +192,7 @@ def test_status(default_conf, update, mocker, fee, ticker, markets) -> None: # Create some test data for _ in range(3): - freqtradebot.create_trade() + freqtradebot.create_trades() telegram._status(bot=MagicMock(), update=update) assert msg_mock.call_count == 1 @@ -240,7 +240,7 @@ def test_status_handle(default_conf, update, ticker, fee, markets, mocker) -> No msg_mock.reset_mock() # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() # Trigger status while we have a fulfilled order for the open trade telegram._status(bot=MagicMock(), update=update) @@ -292,7 +292,7 @@ def test_status_table_handle(default_conf, update, ticker, fee, markets, mocker) msg_mock.reset_mock() # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() telegram._status_table(bot=MagicMock(), update=update) @@ -332,7 +332,7 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() trade = Trade.query.first() assert trade @@ -360,7 +360,7 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, msg_mock.reset_mock() freqtradebot.config['max_open_trades'] = 2 # Add two other trades - freqtradebot.create_trade() + freqtradebot.create_trades() trades = Trade.query.all() for trade in trades: @@ -439,7 +439,7 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, msg_mock.reset_mock() # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade @@ -734,7 +734,7 @@ def test_forcesell_handle(default_conf, update, ticker, fee, telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() trade = Trade.query.first() assert trade @@ -785,7 +785,7 @@ def test_forcesell_down_handle(default_conf, update, ticker, fee, telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() # Decrease the price and sell it mocker.patch.multiple( @@ -839,7 +839,7 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, markets, mocker telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() rpc_mock.reset_mock() update.message.text = '/forcesell all' @@ -983,7 +983,7 @@ def test_performance_handle(default_conf, update, ticker, fee, telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() trade = Trade.query.first() assert trade @@ -1028,7 +1028,7 @@ def test_count_handle(default_conf, update, ticker, fee, markets, mocker) -> Non freqtradebot.state = State.RUNNING # Create some test data - freqtradebot.create_trade() + freqtradebot.create_trades() msg_mock.reset_mock() telegram._count(bot=MagicMock(), update=update) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index acab74233..d74615d6b 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -253,7 +253,6 @@ def test_get_trade_stake_amount_unlimited_amount(default_conf, assert result == default_conf['stake_amount'] / conf['max_open_trades'] # create one trade, order amount should be 'balance / (max_open_trades - num_open_trades)' - # freqtrade.create_trade() freqtrade.execute_buy('ETH/BTC', result) result = freqtrade._get_trade_stake_amount('LTC/BTC') @@ -327,7 +326,7 @@ def test_edge_overrides_stoploss(limit_buy_order, fee, markets, caplog, mocker, freqtrade.active_pair_whitelist = ['NEO/BTC'] patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.update(limit_buy_order) ############################################# @@ -368,7 +367,7 @@ def test_edge_should_ignore_strategy_stoploss(limit_buy_order, fee, markets, freqtrade.active_pair_whitelist = ['NEO/BTC'] patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.update(limit_buy_order) ############################################# @@ -392,7 +391,7 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade is not None @@ -400,7 +399,7 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, assert trade.is_open assert trade.open_date is not None - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.order_by(Trade.id.desc()).first() assert trade is not None @@ -523,7 +522,7 @@ def test_get_min_pair_stake_amount(mocker, default_conf) -> None: assert result == min(8, 2 * 2) / 0.9 -def test_create_trade(default_conf, ticker, limit_buy_order, fee, markets, mocker) -> None: +def test_create_trades(default_conf, ticker, limit_buy_order, fee, markets, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -538,7 +537,7 @@ def test_create_trade(default_conf, ticker, limit_buy_order, fee, markets, mocke whitelist = deepcopy(default_conf['exchange']['pair_whitelist']) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade is not None @@ -556,8 +555,8 @@ def test_create_trade(default_conf, ticker, limit_buy_order, fee, markets, mocke assert whitelist == default_conf['exchange']['pair_whitelist'] -def test_create_trade_no_stake_amount(default_conf, ticker, limit_buy_order, - fee, markets, mocker) -> None: +def test_create_trades_no_stake_amount(default_conf, ticker, limit_buy_order, + fee, markets, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) patch_wallet(mocker, free=default_conf['stake_amount'] * 0.5) @@ -572,11 +571,11 @@ def test_create_trade_no_stake_amount(default_conf, ticker, limit_buy_order, patch_get_signal(freqtrade) with pytest.raises(DependencyException, match=r'.*stake amount.*'): - freqtrade.create_trade() + freqtrade.create_trades() -def test_create_trade_minimal_amount(default_conf, ticker, limit_buy_order, - fee, markets, mocker) -> None: +def test_create_trades_minimal_amount(default_conf, ticker, limit_buy_order, + fee, markets, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) buy_mock = MagicMock(return_value={'id': limit_buy_order['id']}) @@ -591,13 +590,13 @@ def test_create_trade_minimal_amount(default_conf, ticker, limit_buy_order, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trade() + freqtrade.create_trades() rate, amount = buy_mock.call_args[1]['rate'], buy_mock.call_args[1]['amount'] assert rate * amount >= default_conf['stake_amount'] -def test_create_trade_too_small_stake_amount(default_conf, ticker, limit_buy_order, - fee, markets, mocker) -> None: +def test_create_trades_too_small_stake_amount(default_conf, ticker, limit_buy_order, + fee, markets, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) buy_mock = MagicMock(return_value={'id': limit_buy_order['id']}) @@ -613,11 +612,11 @@ def test_create_trade_too_small_stake_amount(default_conf, ticker, limit_buy_ord freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - assert not freqtrade.create_trade() + assert not freqtrade.create_trades() -def test_create_trade_limit_reached(default_conf, ticker, limit_buy_order, - fee, markets, mocker) -> None: +def test_create_trades_limit_reached(default_conf, ticker, limit_buy_order, + fee, markets, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -634,12 +633,12 @@ def test_create_trade_limit_reached(default_conf, ticker, limit_buy_order, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - assert not freqtrade.create_trade() + assert not freqtrade.create_trades() assert freqtrade._get_trade_stake_amount('ETH/BTC') is None -def test_create_trade_no_pairs_let(default_conf, ticker, limit_buy_order, fee, - markets, mocker, caplog) -> None: +def test_create_trades_no_pairs_let(default_conf, ticker, limit_buy_order, fee, + markets, mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -654,13 +653,13 @@ def test_create_trade_no_pairs_let(default_conf, ticker, limit_buy_order, fee, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - assert freqtrade.create_trade() - assert not freqtrade.create_trade() + assert freqtrade.create_trades() + assert not freqtrade.create_trades() assert log_has("No currency pair in whitelist, but checking to sell open trades.", caplog) -def test_create_trade_no_pairs_in_whitelist(default_conf, ticker, limit_buy_order, fee, - markets, mocker, caplog) -> None: +def test_create_trades_no_pairs_in_whitelist(default_conf, ticker, limit_buy_order, fee, + markets, mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -674,11 +673,11 @@ def test_create_trade_no_pairs_in_whitelist(default_conf, ticker, limit_buy_orde freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - assert not freqtrade.create_trade() + assert not freqtrade.create_trades() assert log_has("Whitelist is empty.", caplog) -def test_create_trade_no_signal(default_conf, fee, mocker) -> None: +def test_create_trades_no_signal(default_conf, fee, mocker) -> None: default_conf['dry_run'] = True patch_RPCManager(mocker) @@ -694,12 +693,12 @@ def test_create_trade_no_signal(default_conf, fee, mocker) -> None: Trade.query = MagicMock() Trade.query.filter = MagicMock() - assert not freqtrade.create_trade() + assert not freqtrade.create_trades() @pytest.mark.parametrize("max_open", range(0, 5)) -def test_create_trade_multiple_trades(default_conf, ticker, - fee, markets, mocker, max_open) -> None: +def test_create_trades_multiple_trades(default_conf, ticker, + fee, markets, mocker, max_open) -> None: patch_RPCManager(mocker) patch_exchange(mocker) default_conf['max_open_trades'] = max_open @@ -713,7 +712,7 @@ def test_create_trade_multiple_trades(default_conf, ticker, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trade() + freqtrade.create_trades() trades = Trade.get_open_trades() assert len(trades) == max_open @@ -1101,7 +1100,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, # Fourth case: when stoploss is set and it is hit # should unset stoploss_order_id and return true # as a trade actually happened - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.is_open = True trade.open_order_id = None @@ -1176,7 +1175,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, patch_get_signal(freqtrade) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.is_open = True trade.open_order_id = None @@ -1266,7 +1265,7 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c # setting stoploss_on_exchange_interval to 60 seconds freqtrade.strategy.order_types['stoploss_on_exchange_interval'] = 60 patch_get_signal(freqtrade) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.is_open = True trade.open_order_id = None @@ -1347,7 +1346,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, freqtrade.active_pair_whitelist = freqtrade.edge.adjust(freqtrade.active_pair_whitelist) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.is_open = True trade.open_order_id = None @@ -1414,7 +1413,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, def test_process_maybe_execute_buy(mocker, default_conf, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.freqtradebot.FreqtradeBot.create_trade', MagicMock(return_value=False)) + mocker.patch('freqtrade.freqtradebot.FreqtradeBot.create_trades', MagicMock(return_value=False)) freqtrade.process_maybe_execute_buy() assert log_has('Found no buy signals for whitelisted currencies. Trying again...', caplog) @@ -1423,7 +1422,7 @@ def test_process_maybe_execute_buy_exception(mocker, default_conf, caplog) -> No freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch( - 'freqtrade.freqtradebot.FreqtradeBot.create_trade', + 'freqtrade.freqtradebot.FreqtradeBot.create_trades', MagicMock(side_effect=DependencyException) ) freqtrade.process_maybe_execute_buy() @@ -1610,7 +1609,7 @@ def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade @@ -1650,7 +1649,7 @@ def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order, patch_get_signal(freqtrade, value=(True, True)) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trade() + freqtrade.create_trades() # Buy and Sell triggering, so doing nothing ... trades = Trade.query.all() @@ -1659,7 +1658,7 @@ def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order, # Buy is triggering, so buying ... patch_get_signal(freqtrade, value=(True, False)) - freqtrade.create_trade() + freqtrade.create_trades() trades = Trade.query.all() nb_trades = len(trades) assert nb_trades == 1 @@ -1706,7 +1705,7 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order, patch_get_signal(freqtrade, value=(True, False)) freqtrade.strategy.min_roi_reached = MagicMock(return_value=True) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.is_open = True @@ -1738,7 +1737,7 @@ def test_handle_trade_experimental( freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.is_open = True @@ -1766,7 +1765,7 @@ def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order, patch_get_signal(freqtrade) # Create trade and sell it - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade @@ -2106,7 +2105,7 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, markets, moc patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade @@ -2152,7 +2151,7 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, markets, patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade @@ -2201,7 +2200,7 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade @@ -2258,7 +2257,7 @@ def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee, freqtrade.strategy.order_types['stoploss_on_exchange'] = True patch_get_signal(freqtrade) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() Trade.session = MagicMock() @@ -2305,7 +2304,7 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade @@ -2357,7 +2356,7 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() freqtrade.process_maybe_execute_sell(trade) assert trade @@ -2409,7 +2408,7 @@ def test_execute_sell_without_conf_sell_up(default_conf, ticker, fee, patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade @@ -2456,7 +2455,7 @@ def test_execute_sell_without_conf_sell_down(default_conf, ticker, fee, patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade @@ -2512,7 +2511,7 @@ def test_sell_profit_only_enable_profit(default_conf, limit_buy_order, patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2543,7 +2542,7 @@ def test_sell_profit_only_disable_profit(default_conf, limit_buy_order, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2574,7 +2573,7 @@ def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, market patch_get_signal(freqtrade) freqtrade.strategy.stop_loss_reached = MagicMock(return_value=SellCheckTuple( sell_flag=False, sell_type=SellType.NONE)) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2605,7 +2604,7 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, marke patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2635,7 +2634,7 @@ def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, markets, m patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=True) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2667,7 +2666,7 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, markets, caplog, patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert freqtrade.handle_trade(trade) is False @@ -2720,7 +2719,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, markets freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2778,7 +2777,7 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2841,7 +2840,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2900,7 +2899,7 @@ def test_disable_ignore_roi_if_buy_signal(default_conf, limit_buy_order, patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=True) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() trade.update(limit_buy_order) @@ -3157,7 +3156,7 @@ def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee, whitelist = deepcopy(default_conf['exchange']['pair_whitelist']) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade is not None @@ -3191,7 +3190,7 @@ def test_order_book_depth_of_market_high_delta(default_conf, ticker, limit_buy_o # Save state of current whitelist freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade is None @@ -3297,7 +3296,7 @@ def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade From a4ab42560f9494b69432addeaab5cf8eb4dc3b82 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 06:16:59 +0200 Subject: [PATCH 0218/3421] improve docstring for create_trades --- freqtrade/freqtradebot.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e67a8687f..e2c88376e 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -258,9 +258,10 @@ class FreqtradeBot(object): def create_trades(self) -> bool: """ - Checks the implemented trading indicator(s) for a randomly picked pair, - if one pair triggers the buy_signal a new trade record gets created - :return: True if a trade object has been created and persisted, False otherwise + Checks the implemented trading strategy for buy-signals, using the active pair whitelist. + If a pair triggers the buy_signal a new trade record gets created. + Checks pairs as long as the open trade count is below `max_open_trades`. + :return: True if at least one trade has been created. """ interval = self.strategy.ticker_interval whitelist = copy.deepcopy(self.active_pair_whitelist) From d6f5f6b7ba0577b65b22216cac558a565a68051b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 06:21:15 +0200 Subject: [PATCH 0219/3421] Add test with preexisting trades --- freqtrade/tests/test_freqtradebot.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index d74615d6b..868cda4df 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -718,6 +718,33 @@ def test_create_trades_multiple_trades(default_conf, ticker, assert len(trades) == max_open +def test_create_trades_preopen(default_conf, ticker, fee, markets, mocker) -> None: + patch_RPCManager(mocker) + patch_exchange(mocker) + default_conf['max_open_trades'] = 4 + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_ticker=ticker, + buy=MagicMock(return_value={'id': "12355555"}), + get_fee=fee, + markets=PropertyMock(return_value=markets) + ) + freqtrade = FreqtradeBot(default_conf) + patch_get_signal(freqtrade) + + # Create 2 existing trades + freqtrade.execute_buy('ETH/BTC', default_conf['stake_amount']) + freqtrade.execute_buy('NEO/BTC', default_conf['stake_amount']) + + assert len(Trade.get_open_trades()) == 2 + + # Create 2 new trades using create_trades + assert freqtrade.create_trades() + + trades = Trade.get_open_trades() + assert len(trades) == 4 + + def test_process_trade_creation(default_conf, ticker, limit_buy_order, markets, fee, mocker, caplog) -> None: patch_RPCManager(mocker) From 4da2bfefb73d7a9158e2979f941a3c9209c5a581 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 09:36:28 +0200 Subject: [PATCH 0220/3421] Improve docstring for some downloading methods --- freqtrade/exchange/exchange.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 0e23cf8b8..33b250955 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -551,6 +551,11 @@ class Exchange(object): """ Gets candle history using asyncio and returns the list of candles. Handles all async doing. + Async over one pair, assuming we get `_ohlcv_candle_limit` candles per call. + :param pair: Pair to download + :param ticker_interval: Interval to get + :param since_ms: Timestamp in milliseconds to get history from + :returns List of tickers """ return asyncio.get_event_loop().run_until_complete( self._async_get_history(pair=pair, ticker_interval=ticker_interval, @@ -585,6 +590,9 @@ class Exchange(object): def refresh_latest_ohlcv(self, pair_list: List[Tuple[str, str]]) -> List[Tuple[str, List]]: """ Refresh in-memory ohlcv asyncronously and set `_klines` with the result + Loops asyncroneously over pair_list and dowloads all pairs async (semi-parallel). + :param pair_list: List of 2 element tuples containing pair,interval to refresh + :return: Returns a List of ticker-dataframes. """ logger.debug("Refreshing ohlcv data for %d pairs", len(pair_list)) From 06fa07e73e998b208c8af7b2ea9d26f36d36fed6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 10:07:14 +0200 Subject: [PATCH 0221/3421] Move parse_timerange to TimeRange class --- freqtrade/configuration/arguments.py | 58 +------------------------ freqtrade/configuration/timerange.py | 65 ++++++++++++++++++++++++++++ freqtrade/tests/test_arguments.py | 26 +---------- freqtrade/tests/test_timerange.py | 28 ++++++++++++ 4 files changed, 95 insertions(+), 82 deletions(-) create mode 100644 freqtrade/configuration/timerange.py create mode 100644 freqtrade/tests/test_timerange.py diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index dd5a4290e..c129a7e47 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -2,10 +2,8 @@ This module contains the argument manager class """ import argparse -import re -from typing import List, NamedTuple, Optional +from typing import List, Optional -import arrow from freqtrade.configuration.cli_options import AVAILABLE_CLI_OPTIONS from freqtrade import constants @@ -43,18 +41,6 @@ ARGS_PLOT_PROFIT = (ARGS_COMMON + ARGS_STRATEGY + ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source"]) -class TimeRange(NamedTuple): - """ - NamedTuple defining timerange inputs. - [start/stop]type defines if [start/stop]ts shall be used. - if *type is None, don't use corresponding startvalue. - """ - starttype: Optional[str] = None - stoptype: Optional[str] = None - startts: int = 0 - stopts: int = 0 - - class Arguments(object): """ Arguments Class. Manage the arguments received by the cli @@ -133,45 +119,3 @@ class Arguments(object): ) list_exchanges_cmd.set_defaults(func=start_list_exchanges) self._build_args(optionlist=ARGS_LIST_EXCHANGES, parser=list_exchanges_cmd) - - @staticmethod - def parse_timerange(text: Optional[str]) -> TimeRange: - """ - Parse the value of the argument --timerange to determine what is the range desired - :param text: value from --timerange - :return: Start and End range period - """ - if text is None: - return TimeRange(None, None, 0, 0) - syntax = [(r'^-(\d{8})$', (None, 'date')), - (r'^(\d{8})-$', ('date', None)), - (r'^(\d{8})-(\d{8})$', ('date', 'date')), - (r'^-(\d{10})$', (None, 'date')), - (r'^(\d{10})-$', ('date', None)), - (r'^(\d{10})-(\d{10})$', ('date', 'date')), - (r'^(-\d+)$', (None, 'line')), - (r'^(\d+)-$', ('line', None)), - (r'^(\d+)-(\d+)$', ('index', 'index'))] - for rex, stype in syntax: - # Apply the regular expression to text - match = re.match(rex, text) - if match: # Regex has matched - rvals = match.groups() - index = 0 - start: int = 0 - stop: int = 0 - if stype[0]: - starts = rvals[index] - if stype[0] == 'date' and len(starts) == 8: - start = arrow.get(starts, 'YYYYMMDD').timestamp - else: - start = int(starts) - index += 1 - if stype[1]: - stops = rvals[index] - if stype[1] == 'date' and len(stops) == 8: - stop = arrow.get(stops, 'YYYYMMDD').timestamp - else: - stop = int(stops) - return TimeRange(stype[0], stype[1], start, stop) - raise Exception('Incorrect syntax for timerange "%s"' % text) diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py new file mode 100644 index 000000000..b44704682 --- /dev/null +++ b/freqtrade/configuration/timerange.py @@ -0,0 +1,65 @@ +""" +This module contains the argument manager class +""" +import re +from typing import Optional + +import arrow + + +class TimeRange(): + """ + object defining timerange inputs. + [start/stop]type defines if [start/stop]ts shall be used. + if *type is None, don't use corresponding startvalue. + """ + + def __init__(self, starttype: Optional[str], stoptype: Optional[str], + startts: int, stopts: int): + + self.starttype: Optional[str] = starttype + self.stoptype: Optional[str] = stoptype + self.startts: int = startts + self.stopts: int = stopts + + @staticmethod + def parse_timerange(text: Optional[str]): + """ + Parse the value of the argument --timerange to determine what is the range desired + :param text: value from --timerange + :return: Start and End range period + """ + if text is None: + return TimeRange(None, None, 0, 0) + syntax = [(r'^-(\d{8})$', (None, 'date')), + (r'^(\d{8})-$', ('date', None)), + (r'^(\d{8})-(\d{8})$', ('date', 'date')), + (r'^-(\d{10})$', (None, 'date')), + (r'^(\d{10})-$', ('date', None)), + (r'^(\d{10})-(\d{10})$', ('date', 'date')), + (r'^(-\d+)$', (None, 'line')), + (r'^(\d+)-$', ('line', None)), + (r'^(\d+)-(\d+)$', ('index', 'index'))] + for rex, stype in syntax: + # Apply the regular expression to text + match = re.match(rex, text) + if match: # Regex has matched + rvals = match.groups() + index = 0 + start: int = 0 + stop: int = 0 + if stype[0]: + starts = rvals[index] + if stype[0] == 'date' and len(starts) == 8: + start = arrow.get(starts, 'YYYYMMDD').timestamp + else: + start = int(starts) + index += 1 + if stype[1]: + stops = rvals[index] + if stype[1] == 'date' and len(stops) == 8: + stop = arrow.get(stops, 'YYYYMMDD').timestamp + else: + stop = int(stops) + return TimeRange(stype[0], stype[1], start, stop) + raise Exception('Incorrect syntax for timerange "%s"' % text) diff --git a/freqtrade/tests/test_arguments.py b/freqtrade/tests/test_arguments.py index bf744f72b..2cb7ff6d7 100644 --- a/freqtrade/tests/test_arguments.py +++ b/freqtrade/tests/test_arguments.py @@ -3,7 +3,7 @@ import argparse import pytest -from freqtrade.configuration import Arguments, TimeRange +from freqtrade.configuration import Arguments from freqtrade.configuration.arguments import ARGS_DOWNLOADER, ARGS_PLOT_DATAFRAME from freqtrade.configuration.cli_options import check_int_positive @@ -86,30 +86,6 @@ def test_parse_args_strategy_path_invalid() -> None: Arguments(['--strategy-path'], '').get_parsed_arg() -def test_parse_timerange_incorrect() -> None: - assert TimeRange(None, 'line', 0, -200) == Arguments.parse_timerange('-200') - assert TimeRange('line', None, 200, 0) == Arguments.parse_timerange('200-') - assert TimeRange('index', 'index', 200, 500) == Arguments.parse_timerange('200-500') - - assert TimeRange('date', None, 1274486400, 0) == Arguments.parse_timerange('20100522-') - assert TimeRange(None, 'date', 0, 1274486400) == Arguments.parse_timerange('-20100522') - timerange = Arguments.parse_timerange('20100522-20150730') - assert timerange == TimeRange('date', 'date', 1274486400, 1438214400) - - # Added test for unix timestamp - BTC genesis date - assert TimeRange('date', None, 1231006505, 0) == Arguments.parse_timerange('1231006505-') - assert TimeRange(None, 'date', 0, 1233360000) == Arguments.parse_timerange('-1233360000') - timerange = Arguments.parse_timerange('1231006505-1233360000') - assert TimeRange('date', 'date', 1231006505, 1233360000) == timerange - - # TODO: Find solution for the following case (passing timestamp in ms) - timerange = Arguments.parse_timerange('1231006505000-1233360000000') - assert TimeRange('date', 'date', 1231006505, 1233360000) != timerange - - with pytest.raises(Exception, match=r'Incorrect syntax.*'): - Arguments.parse_timerange('-') - - def test_parse_args_backtesting_invalid() -> None: with pytest.raises(SystemExit, match=r'2'): Arguments(['backtesting --ticker-interval'], '').get_parsed_arg() diff --git a/freqtrade/tests/test_timerange.py b/freqtrade/tests/test_timerange.py new file mode 100644 index 000000000..6599472fb --- /dev/null +++ b/freqtrade/tests/test_timerange.py @@ -0,0 +1,28 @@ +# pragma pylint: disable=missing-docstring, C0103 +import pytest + +from freqtrade.configuration import TimeRange + + +def test_parse_timerange_incorrect() -> None: + assert TimeRange(None, 'line', 0, -200) == TimeRange.parse_timerange('-200') + assert TimeRange('line', None, 200, 0) == TimeRange.parse_timerange('200-') + assert TimeRange('index', 'index', 200, 500) == TimeRange.parse_timerange('200-500') + + assert TimeRange('date', None, 1274486400, 0) == TimeRange.parse_timerange('20100522-') + assert TimeRange(None, 'date', 0, 1274486400) == TimeRange.parse_timerange('-20100522') + timerange = TimeRange.parse_timerange('20100522-20150730') + assert timerange == TimeRange('date', 'date', 1274486400, 1438214400) + + # Added test for unix timestamp - BTC genesis date + assert TimeRange('date', None, 1231006505, 0) == TimeRange.parse_timerange('1231006505-') + assert TimeRange(None, 'date', 0, 1233360000) == TimeRange.parse_timerange('-1233360000') + timerange = TimeRange.parse_timerange('1231006505-1233360000') + assert TimeRange('date', 'date', 1231006505, 1233360000) == timerange + + # TODO: Find solution for the following case (passing timestamp in ms) + timerange = TimeRange.parse_timerange('1231006505000-1233360000000') + assert TimeRange('date', 'date', 1231006505, 1233360000) != timerange + + with pytest.raises(Exception, match=r'Incorrect syntax.*'): + TimeRange.parse_timerange('-') From 51c3a31bb58c01696634360b5547fa09b3fc0341 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 10:07:32 +0200 Subject: [PATCH 0222/3421] Correct imports and calls to parse_timerange --- freqtrade/configuration/__init__.py | 3 ++- freqtrade/edge/__init__.py | 4 ++-- freqtrade/optimize/backtesting.py | 4 ++-- freqtrade/optimize/edge_cli.py | 4 ++-- freqtrade/optimize/hyperopt.py | 4 ++-- freqtrade/plot/plotting.py | 4 ++-- freqtrade/tests/data/test_btanalysis.py | 4 ++-- freqtrade/tests/test_plotting.py | 6 +++--- scripts/download_backtest_data.py | 2 +- 9 files changed, 18 insertions(+), 17 deletions(-) diff --git a/freqtrade/configuration/__init__.py b/freqtrade/configuration/__init__.py index 548b508a7..7b476d173 100644 --- a/freqtrade/configuration/__init__.py +++ b/freqtrade/configuration/__init__.py @@ -1,2 +1,3 @@ -from freqtrade.configuration.arguments import Arguments, TimeRange # noqa: F401 +from freqtrade.configuration.arguments import Arguments # noqa: F401 +from freqtrade.configuration.timerange import TimeRange # noqa: F401 from freqtrade.configuration.configuration import Configuration # noqa: F401 diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index 7085663d6..2d3097ec4 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -10,7 +10,7 @@ import utils_find_1st as utf1st from pandas import DataFrame from freqtrade import constants, OperationalException -from freqtrade.configuration import Arguments, TimeRange +from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.strategy.interface import SellType @@ -75,7 +75,7 @@ class Edge(): self._stoploss_range_step ) - self._timerange: TimeRange = Arguments.parse_timerange("%s-" % arrow.now().shift( + self._timerange: TimeRange = TimeRange.parse_timerange("%s-" % arrow.now().shift( days=-1 * self._since_number_of_days).format('YYYYMMDD')) self.fee = self.exchange.get_fee() diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 252175269..8f40a6582 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -12,7 +12,7 @@ from typing import Any, Dict, List, NamedTuple, Optional from pandas import DataFrame from freqtrade import OperationalException -from freqtrade.configuration import Arguments +from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.dataprovider import DataProvider from freqtrade.exchange import timeframe_to_minutes @@ -404,7 +404,7 @@ class Backtesting(object): logger.info('Using stake_currency: %s ...', self.config['stake_currency']) logger.info('Using stake_amount: %s ...', self.config['stake_amount']) - timerange = Arguments.parse_timerange(None if self.config.get( + timerange = TimeRange.parse_timerange(None if self.config.get( 'timerange') is None else str(self.config.get('timerange'))) data = history.load_data( datadir=Path(self.config['datadir']) if self.config.get('datadir') else None, diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py index 8d1fa381b..7e0d60843 100644 --- a/freqtrade/optimize/edge_cli.py +++ b/freqtrade/optimize/edge_cli.py @@ -9,7 +9,7 @@ from tabulate import tabulate from freqtrade import constants from freqtrade.edge import Edge -from freqtrade.configuration import Arguments +from freqtrade.configuration import TimeRange from freqtrade.exchange import Exchange from freqtrade.resolvers import StrategyResolver @@ -41,7 +41,7 @@ class EdgeCli(object): self.edge = Edge(config, self.exchange, self.strategy) self.edge._refresh_pairs = self.config.get('refresh_pairs', False) - self.timerange = Arguments.parse_timerange(None if self.config.get( + self.timerange = TimeRange.parse_timerange(None if self.config.get( 'timerange') is None else str(self.config.get('timerange'))) self.edge._timerange = self.timerange diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 550f13e28..772b4a10f 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -20,7 +20,7 @@ from pandas import DataFrame from skopt import Optimizer from skopt.space import Dimension -from freqtrade.configuration import Arguments +from freqtrade.configuration import TimeRange from freqtrade.data.history import load_data, get_timeframe from freqtrade.optimize.backtesting import Backtesting # Import IHyperOptLoss to allow users import from this file @@ -310,7 +310,7 @@ class Hyperopt(Backtesting): ) def start(self) -> None: - timerange = Arguments.parse_timerange(None if self.config.get( + timerange = TimeRange.parse_timerange(None if self.config.get( 'timerange') is None else str(self.config.get('timerange'))) data = load_data( datadir=Path(self.config['datadir']) if self.config.get('datadir') else None, diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index d03d3ae53..947b3003c 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -4,7 +4,7 @@ from typing import Dict, List, Optional import pandas as pd -from freqtrade.configuration import Arguments +from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import (combine_tickers_with_mean, create_cum_profit, load_trades) @@ -42,7 +42,7 @@ def init_plotscript(config): pairs = config["exchange"]["pair_whitelist"] # Set timerange to use - timerange = Arguments.parse_timerange(config.get("timerange")) + timerange = TimeRange.parse_timerange(config.get("timerange")) tickers = history.load_data( datadir=Path(str(config.get("datadir"))), diff --git a/freqtrade/tests/data/test_btanalysis.py b/freqtrade/tests/data/test_btanalysis.py index bad8db66f..cf8cae566 100644 --- a/freqtrade/tests/data/test_btanalysis.py +++ b/freqtrade/tests/data/test_btanalysis.py @@ -4,7 +4,7 @@ import pytest from arrow import Arrow from pandas import DataFrame, to_datetime -from freqtrade.configuration import Arguments, TimeRange +from freqtrade.configuration import TimeRange from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, combine_tickers_with_mean, create_cum_profit, @@ -121,7 +121,7 @@ def test_combine_tickers_with_mean(): def test_create_cum_profit(): filename = make_testdata_path(None) / "backtest-result_test.json" bt_data = load_backtest_data(filename) - timerange = Arguments.parse_timerange("20180110-20180112") + timerange = TimeRange.parse_timerange("20180110-20180112") df = load_pair_history(pair="POWR/BTC", ticker_interval='5m', datadir=None, timerange=timerange) diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index bfdd72215..cd72160f8 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -5,7 +5,7 @@ from unittest.mock import MagicMock import plotly.graph_objects as go from plotly.subplots import make_subplots -from freqtrade.configuration import Arguments, TimeRange +from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import create_cum_profit, load_backtest_data from freqtrade.plot.plotting import (add_indicators, add_profit, @@ -222,7 +222,7 @@ def test_generate_plot_file(mocker, caplog): def test_add_profit(): filename = history.make_testdata_path(None) / "backtest-result_test.json" bt_data = load_backtest_data(filename) - timerange = Arguments.parse_timerange("20180110-20180112") + timerange = TimeRange.parse_timerange("20180110-20180112") df = history.load_pair_history(pair="POWR/BTC", ticker_interval='5m', datadir=None, timerange=timerange) @@ -242,7 +242,7 @@ def test_add_profit(): def test_generate_profit_graph(): filename = history.make_testdata_path(None) / "backtest-result_test.json" trades = load_backtest_data(filename) - timerange = Arguments.parse_timerange("20180110-20180112") + timerange = TimeRange.parse_timerange("20180110-20180112") pairs = ["POWR/BTC", "XLM/BTC"] tickers = history.load_data(datadir=None, diff --git a/scripts/download_backtest_data.py b/scripts/download_backtest_data.py index 580592294..f77ad7422 100755 --- a/scripts/download_backtest_data.py +++ b/scripts/download_backtest_data.py @@ -105,7 +105,7 @@ if not pairs or args.pairs_file: timerange = TimeRange() if args.days: time_since = arrow.utcnow().shift(days=-args.days).strftime("%Y%m%d") - timerange = arguments.parse_timerange(f'{time_since}-') + timerange = TimeRange.parse_timerange(f'{time_since}-') logger.info(f'About to download pairs: {pairs}, intervals: {timeframes} to {dl_path}') From 84baef922c131f17532ecf3637ee618a5e2e57d3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 10:14:54 +0200 Subject: [PATCH 0223/3421] Rename get_history to get_historic_ohlcv --- freqtrade/data/history.py | 9 +++++---- freqtrade/exchange/exchange.py | 14 +++++++------- freqtrade/tests/data/test_history.py | 10 +++++----- freqtrade/tests/exchange/test_exchange.py | 4 ++-- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index f600615df..899c6d0c8 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -252,10 +252,11 @@ def download_pair_history(datadir: Optional[Path], logger.debug("Current End: %s", misc.format_ms_time(data[-1][0]) if data else 'None') # Default since_ms to 30 days if nothing is given - new_data = exchange.get_history(pair=pair, ticker_interval=ticker_interval, - since_ms=since_ms if since_ms - else - int(arrow.utcnow().shift(days=-30).float_timestamp) * 1000) + new_data = exchange.get_historic_ohlcv(pair=pair, ticker_interval=ticker_interval, + since_ms=since_ms if since_ms + else + int(arrow.utcnow().shift( + days=-30).float_timestamp) * 1000) data.extend(new_data) logger.debug("New Start: %s", misc.format_ms_time(data[0][0])) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 33b250955..65cb409dc 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -546,8 +546,8 @@ class Exchange(object): logger.info("returning cached ticker-data for %s", pair) return self._cached_ticker[pair] - def get_history(self, pair: str, ticker_interval: str, - since_ms: int) -> List: + def get_historic_ohlcv(self, pair: str, ticker_interval: str, + since_ms: int) -> List: """ Gets candle history using asyncio and returns the list of candles. Handles all async doing. @@ -558,12 +558,12 @@ class Exchange(object): :returns List of tickers """ return asyncio.get_event_loop().run_until_complete( - self._async_get_history(pair=pair, ticker_interval=ticker_interval, - since_ms=since_ms)) + self._async_get_historic_ohlcv(pair=pair, ticker_interval=ticker_interval, + since_ms=since_ms)) - async def _async_get_history(self, pair: str, - ticker_interval: str, - since_ms: int) -> List: + async def _async_get_historic_ohlcv(self, pair: str, + ticker_interval: str, + since_ms: int) -> List: one_call = timeframe_to_msecs(ticker_interval) * self._ohlcv_candle_limit logger.debug( diff --git a/freqtrade/tests/data/test_history.py b/freqtrade/tests/data/test_history.py index 00f4738f7..4ba65e470 100644 --- a/freqtrade/tests/data/test_history.py +++ b/freqtrade/tests/data/test_history.py @@ -80,7 +80,7 @@ def test_load_data_7min_ticker(mocker, caplog, default_conf) -> None: def test_load_data_1min_ticker(ticker_history, mocker, caplog) -> None: - mocker.patch('freqtrade.exchange.Exchange.get_history', return_value=ticker_history) + mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history) file = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'UNITTEST_BTC-1m.json') _backup_file(file, copy_file=True) history.load_data(datadir=None, ticker_interval='1m', pairs=['UNITTEST/BTC']) @@ -96,7 +96,7 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, defau """ Test load_pair_history() with 1 min ticker """ - mocker.patch('freqtrade.exchange.Exchange.get_history', return_value=ticker_history_list) + mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history_list) exchange = get_patched_exchange(mocker, default_conf) file = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'MEME_BTC-1m.json') @@ -266,7 +266,7 @@ def test_load_cached_data_for_updating(mocker) -> None: def test_download_pair_history(ticker_history_list, mocker, default_conf) -> None: - mocker.patch('freqtrade.exchange.Exchange.get_history', return_value=ticker_history_list) + mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history_list) exchange = get_patched_exchange(mocker, default_conf) file1_1 = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'MEME_BTC-1m.json') file1_5 = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'MEME_BTC-5m.json') @@ -319,7 +319,7 @@ def test_download_pair_history2(mocker, default_conf) -> None: [1509836580000, 0.00161, 0.00161, 0.00161, 0.00161, 82.390199] ] json_dump_mock = mocker.patch('freqtrade.misc.file_dump_json', return_value=None) - mocker.patch('freqtrade.exchange.Exchange.get_history', return_value=tick) + mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=tick) exchange = get_patched_exchange(mocker, default_conf) download_pair_history(None, exchange, pair="UNITTEST/BTC", ticker_interval='1m') download_pair_history(None, exchange, pair="UNITTEST/BTC", ticker_interval='3m') @@ -327,7 +327,7 @@ def test_download_pair_history2(mocker, default_conf) -> None: def test_download_backtesting_data_exception(ticker_history, mocker, caplog, default_conf) -> None: - mocker.patch('freqtrade.exchange.Exchange.get_history', + mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', side_effect=Exception('File Error')) exchange = get_patched_exchange(mocker, default_conf) diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index e8a7201f1..ed80edfce 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -996,7 +996,7 @@ def test_get_ticker(default_conf, mocker, exchange_name): @pytest.mark.parametrize("exchange_name", EXCHANGES) -def test_get_history(default_conf, mocker, caplog, exchange_name): +def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name): exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) tick = [ [ @@ -1017,7 +1017,7 @@ def test_get_history(default_conf, mocker, caplog, exchange_name): # one_call calculation * 1.8 should do 2 calls since = 5 * 60 * 500 * 1.8 print(f"since = {since}") - ret = exchange.get_history(pair, "5m", int((arrow.utcnow().timestamp - since) * 1000)) + ret = exchange.get_historic_ohlcv(pair, "5m", int((arrow.utcnow().timestamp - since) * 1000)) assert exchange._async_get_candle_history.call_count == 2 # Returns twice the above tick From 096a6426dbf1142c5443371f9569e4f51870d148 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 10:22:54 +0200 Subject: [PATCH 0224/3421] Override equality operator --- freqtrade/configuration/timerange.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py index b44704682..f980b71ea 100644 --- a/freqtrade/configuration/timerange.py +++ b/freqtrade/configuration/timerange.py @@ -14,14 +14,19 @@ class TimeRange(): if *type is None, don't use corresponding startvalue. """ - def __init__(self, starttype: Optional[str], stoptype: Optional[str], - startts: int, stopts: int): + def __init__(self, starttype: Optional[str] = None, stoptype: Optional[str] = None, + startts: int = 0, stopts: int = 0): self.starttype: Optional[str] = starttype self.stoptype: Optional[str] = stoptype self.startts: int = startts self.stopts: int = stopts + def __eq__(self, other): + """Override the default Equals behavior""" + return (self.starttype == other.starttype and self.stoptype == other.stoptype + and self.startts == other.startts and self.stopts == other.stopts) + @staticmethod def parse_timerange(text: Optional[str]): """ From 5b9711c00259de9eb587f6ab864a1d9a71878410 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 14 Aug 2019 13:25:49 +0300 Subject: [PATCH 0225/3421] adaptive roi_space --- freqtrade/optimize/hyperopt.py | 3 +- freqtrade/optimize/hyperopt_interface.py | 115 +++++++++++++++++++---- freqtrade/resolvers/hyperopt_resolver.py | 2 +- 3 files changed, 99 insertions(+), 21 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 550f13e28..89e1accdd 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -23,7 +23,8 @@ from skopt.space import Dimension from freqtrade.configuration import Arguments from freqtrade.data.history import load_data, get_timeframe from freqtrade.optimize.backtesting import Backtesting -# Import IHyperOptLoss to allow users import from this file +# Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules +from freqtrade.optimize.hyperopt_interface import IHyperOpt # noqa: F4 from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss # noqa: F4 from freqtrade.resolvers.hyperopt_resolver import HyperOptResolver, HyperOptLossResolver diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index f1f123653..b81dc25e3 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -2,6 +2,8 @@ IHyperOpt interface This module defines the interface to apply for hyperopts """ +import logging +import math from abc import ABC, abstractmethod from typing import Dict, Any, Callable, List @@ -9,15 +11,18 @@ from typing import Dict, Any, Callable, List from pandas import DataFrame from skopt.space import Dimension, Integer, Real +from freqtrade.exchange import timeframe_to_minutes + + +logger = logging.getLogger(__name__) + class IHyperOpt(ABC): """ Interface for freqtrade hyperopts - Defines the mandatory structure must follow any custom strategies + Defines the mandatory structure must follow any custom hyperopts - Attributes you can use: - minimal_roi -> Dict: Minimal ROI designed for the strategy - stoploss -> float: optimal stoploss designed for the strategy + Class attributes you can use: ticker_interval -> int: value of the ticker interval to use for the strategy """ ticker_interval: str @@ -75,6 +80,83 @@ class IHyperOpt(ABC): return roi_table + @staticmethod + def roi_space() -> List[Dimension]: + """ + Create a ROI space. + + Defines values to search for each ROI steps. + + This method implements adaptive roi hyperspace with varied + ranges for parameters which automatically adapts to the + ticker interval used. + + It's used by Freqtrade by default, if no custom roi_space method is defined. + """ + + # Default scaling coefficients for the roi hyperspace. Can be changed + # to adjust resulting ranges of the ROI tables. + # Increase if you need wider ranges in the roi hyperspace, decrease if shorter + # ranges are needed. + roi_t_alpha = 1.0 + roi_p_alpha = 1.0 + + ticker_interval_mins = timeframe_to_minutes(IHyperOpt.ticker_interval) + + # We define here limits for the ROI space parameters automagically adapted to the + # ticker_interval used by the bot: + # + # * 'roi_t' (limits for the time intervals in the ROI tables) components + # are scaled linearly. + # * 'roi_p' (limits for the ROI value steps) components are scaled logarithmically. + # + # The scaling is designed so that it maps exactly to the legacy Freqtrade roi_space() + # method for the 5m ticker interval. + roi_t_scale = ticker_interval_mins / 5 + roi_p_scale = math.log1p(ticker_interval_mins) / math.log1p(5) + roi_limits = { + 'roi_t1_min': int(10 * roi_t_scale * roi_t_alpha), + 'roi_t1_max': int(120 * roi_t_scale * roi_t_alpha), + 'roi_t2_min': int(10 * roi_t_scale * roi_t_alpha), + 'roi_t2_max': int(60 * roi_t_scale * roi_t_alpha), + 'roi_t3_min': int(10 * roi_t_scale * roi_t_alpha), + 'roi_t3_max': int(40 * roi_t_scale * roi_t_alpha), + 'roi_p1_min': 0.01 * roi_p_scale * roi_p_alpha, + 'roi_p1_max': 0.04 * roi_p_scale * roi_p_alpha, + 'roi_p2_min': 0.01 * roi_p_scale * roi_p_alpha, + 'roi_p2_max': 0.07 * roi_p_scale * roi_p_alpha, + 'roi_p3_min': 0.01 * roi_p_scale * roi_p_alpha, + 'roi_p3_max': 0.20 * roi_p_scale * roi_p_alpha, + } + logger.debug(f"Using roi space limits: {roi_limits}") + p = { + 'roi_t1': roi_limits['roi_t1_min'], + 'roi_t2': roi_limits['roi_t2_min'], + 'roi_t3': roi_limits['roi_t3_min'], + 'roi_p1': roi_limits['roi_p1_min'], + 'roi_p2': roi_limits['roi_p2_min'], + 'roi_p3': roi_limits['roi_p3_min'], + } + logger.info(f"Min roi table: {IHyperOpt.generate_roi_table(p)}") + p = { + 'roi_t1': roi_limits['roi_t1_max'], + 'roi_t2': roi_limits['roi_t2_max'], + 'roi_t3': roi_limits['roi_t3_max'], + 'roi_p1': roi_limits['roi_p1_max'], + 'roi_p2': roi_limits['roi_p2_max'], + 'roi_p3': roi_limits['roi_p3_max'], + } + logger.info(f"Max roi table: {IHyperOpt.generate_roi_table(p)}") + + return [ + Integer(roi_limits['roi_t1_min'], roi_limits['roi_t1_max'], name='roi_t1'), + Integer(roi_limits['roi_t2_min'], roi_limits['roi_t2_max'], name='roi_t2'), + Integer(roi_limits['roi_t3_min'], roi_limits['roi_t3_max'], name='roi_t3'), + Real(roi_limits['roi_p1_min'], roi_limits['roi_p1_max'], name='roi_p1'), + Real(roi_limits['roi_p2_min'], roi_limits['roi_p2_max'], name='roi_p2'), + Real(roi_limits['roi_p3_min'], roi_limits['roi_p3_max'], name='roi_p3'), + ] + @staticmethod def stoploss_space() -> List[Dimension]: """ @@ -87,19 +169,14 @@ class IHyperOpt(ABC): Real(-0.5, -0.02, name='stoploss'), ] - @staticmethod - def roi_space() -> List[Dimension]: - """ - Create a ROI space. + # This is needed for proper unpickling the class attribute ticker_interval + # which is set to the actual value by the resolver. + # Why do I still need such shamanic mantras in modern python? + def __getstate__(self): + state = self.__dict__.copy() + state['ticker_interval'] = self.ticker_interval + return state - Defines values to search for each ROI steps. - You may override it in your custom Hyperopt class. - """ - return [ - Integer(10, 120, name='roi_t1'), - Integer(10, 60, name='roi_t2'), - Integer(10, 40, name='roi_t3'), - Real(0.01, 0.04, name='roi_p1'), - Real(0.01, 0.07, name='roi_p2'), - Real(0.01, 0.20, name='roi_p3'), - ] + def __setstate__(self, state): + self.__dict__.update(state) + IHyperOpt.ticker_interval = state['ticker_interval'] diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 5027d7ddf..540e1ca55 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -34,7 +34,7 @@ class HyperOptResolver(IResolver): self.hyperopt = self._load_hyperopt(hyperopt_name, extra_dir=config.get('hyperopt_path')) # Assign ticker_interval to be used in hyperopt - self.hyperopt.__class__.ticker_interval = str(config['ticker_interval']) + IHyperOpt.ticker_interval = str(config['ticker_interval']) if not hasattr(self.hyperopt, 'populate_buy_trend'): logger.warning("Custom Hyperopt does not provide populate_buy_trend. " From 0ffb184ebad3631320e7f3279746e441d3c591a0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 20:45:24 +0200 Subject: [PATCH 0226/3421] Change some docstrings and formatting from history --- freqtrade/data/history.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index f600615df..363495796 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -57,10 +57,8 @@ def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]: return tickerlist[start_index:stop_index] -def load_tickerdata_file( - datadir: Optional[Path], pair: str, - ticker_interval: str, - timerange: Optional[TimeRange] = None) -> Optional[list]: +def load_tickerdata_file(datadir: Optional[Path], pair: str, ticker_interval: str, + timerange: Optional[TimeRange] = None) -> Optional[list]: """ Load a pair from file, either .json.gz or .json :return: tickerlist or None if unsuccesful @@ -68,7 +66,7 @@ def load_tickerdata_file( filename = pair_data_filename(datadir, pair, ticker_interval) pairdata = misc.file_load_json(filename) if not pairdata: - return None + return [] if timerange: pairdata = trim_tickerlist(pairdata, timerange) @@ -182,6 +180,7 @@ def load_cached_data_for_updating(filename: Path, ticker_interval: str, Optional[int]]: """ Load cached data and choose what part of the data should be updated + Only used by download_pair_history(). """ since_ms = None From 91d1061c7304a598caa1be3a38c055530920956d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 20:48:42 +0200 Subject: [PATCH 0227/3421] Abstract tickerdata storing --- freqtrade/data/history.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 363495796..849b882b2 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -73,6 +73,15 @@ def load_tickerdata_file(datadir: Optional[Path], pair: str, ticker_interval: st return pairdata +def store_tickerdata_file(datadir: Optional[Path], pair: str, + ticker_interval: str, data: list, is_zip: bool = False): + """ + Stores tickerdata to file + """ + filename = pair_data_filename(datadir, pair, ticker_interval) + misc.file_dump_json(filename, data, is_zip=is_zip) + + def load_pair_history(pair: str, ticker_interval: str, datadir: Optional[Path], @@ -175,7 +184,7 @@ def pair_data_filename(datadir: Optional[Path], pair: str, ticker_interval: str) return filename -def load_cached_data_for_updating(filename: Path, ticker_interval: str, +def load_cached_data_for_updating(datadir: Path, pair: str, ticker_interval: str, timerange: Optional[TimeRange]) -> Tuple[List[Any], Optional[int]]: """ @@ -194,12 +203,10 @@ def load_cached_data_for_updating(filename: Path, ticker_interval: str, since_ms = arrow.utcnow().shift(minutes=num_minutes).timestamp * 1000 # read the cached file - if filename.is_file(): - with open(filename, "rt") as file: - data = misc.json_load(file) - # remove the last item, could be incomplete candle - if data: - data.pop() + data = load_tickerdata_file(datadir, pair, ticker_interval, TimeRange) + # remove the last item, could be incomplete candle + if data: + data.pop() else: data = [] @@ -238,14 +245,12 @@ def download_pair_history(datadir: Optional[Path], ) try: - filename = pair_data_filename(datadir, pair, ticker_interval) - logger.info( f'Download history data for pair: "{pair}", interval: {ticker_interval} ' f'and store in {datadir}.' ) - data, since_ms = load_cached_data_for_updating(filename, ticker_interval, timerange) + data, since_ms = load_cached_data_for_updating(datadir, pair, ticker_interval, timerange) logger.debug("Current Start: %s", misc.format_ms_time(data[1][0]) if data else 'None') logger.debug("Current End: %s", misc.format_ms_time(data[-1][0]) if data else 'None') @@ -260,7 +265,7 @@ def download_pair_history(datadir: Optional[Path], logger.debug("New Start: %s", misc.format_ms_time(data[0][0])) logger.debug("New End: %s", misc.format_ms_time(data[-1][0])) - misc.file_dump_json(filename, data) + store_tickerdata_file(datadir, pair, ticker_interval, data=data) return True except Exception as e: From 9d3322df8c00d4d18f4b182ff0d494055c002013 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 20:49:13 +0200 Subject: [PATCH 0228/3421] Adapt history-tests to new load_cached_data header --- freqtrade/tests/data/test_history.py | 40 +++++++--------------------- 1 file changed, 10 insertions(+), 30 deletions(-) diff --git a/freqtrade/tests/data/test_history.py b/freqtrade/tests/data/test_history.py index 00f4738f7..a06c5aa23 100644 --- a/freqtrade/tests/data/test_history.py +++ b/freqtrade/tests/data/test_history.py @@ -178,53 +178,41 @@ def test_load_cached_data_for_updating(mocker) -> None: # timeframe starts earlier than the cached data # should fully update data timerange = TimeRange('date', None, test_data[0][0] / 1000 - 1, 0) - data, start_ts = load_cached_data_for_updating(test_filename, - '1m', - timerange) + data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) assert data == [] assert start_ts == test_data[0][0] - 1000 # same with 'line' timeframe num_lines = (test_data[-1][0] - test_data[1][0]) / 1000 / 60 + 120 - data, start_ts = load_cached_data_for_updating(test_filename, - '1m', - TimeRange(None, 'line', 0, -num_lines)) + data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', TimeRange(None, 'line', 0, -num_lines)) assert data == [] assert start_ts < test_data[0][0] - 1 # timeframe starts in the center of the cached data # should return the chached data w/o the last item timerange = TimeRange('date', None, test_data[0][0] / 1000 + 1, 0) - data, start_ts = load_cached_data_for_updating(test_filename, - '1m', - timerange) + data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) assert data == test_data[:-1] assert test_data[-2][0] < start_ts < test_data[-1][0] # same with 'line' timeframe num_lines = (test_data[-1][0] - test_data[1][0]) / 1000 / 60 + 30 timerange = TimeRange(None, 'line', 0, -num_lines) - data, start_ts = load_cached_data_for_updating(test_filename, - '1m', - timerange) + data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) assert data == test_data[:-1] assert test_data[-2][0] < start_ts < test_data[-1][0] # timeframe starts after the chached data # should return the chached data w/o the last item timerange = TimeRange('date', None, test_data[-1][0] / 1000 + 1, 0) - data, start_ts = load_cached_data_for_updating(test_filename, - '1m', - timerange) + data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) assert data == test_data[:-1] assert test_data[-2][0] < start_ts < test_data[-1][0] # same with 'line' timeframe num_lines = 30 timerange = TimeRange(None, 'line', 0, -num_lines) - data, start_ts = load_cached_data_for_updating(test_filename, - '1m', - timerange) + data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) assert data == test_data[:-1] assert test_data[-2][0] < start_ts < test_data[-1][0] @@ -232,35 +220,27 @@ def test_load_cached_data_for_updating(mocker) -> None: # should return the chached data w/o the last item num_lines = 30 timerange = TimeRange(None, 'line', 0, -num_lines) - data, start_ts = load_cached_data_for_updating(test_filename, - '1m', - timerange) + data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) assert data == test_data[:-1] assert test_data[-2][0] < start_ts < test_data[-1][0] # no datafile exist # should return timestamp start time timerange = TimeRange('date', None, now_ts - 10000, 0) - data, start_ts = load_cached_data_for_updating(test_filename.with_name('unexist'), - '1m', - timerange) + data, start_ts = load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', timerange) assert data == [] assert start_ts == (now_ts - 10000) * 1000 # same with 'line' timeframe num_lines = 30 timerange = TimeRange(None, 'line', 0, -num_lines) - data, start_ts = load_cached_data_for_updating(test_filename.with_name('unexist'), - '1m', - timerange) + data, start_ts = load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', timerange) assert data == [] assert start_ts == (now_ts - num_lines * 60) * 1000 # no datafile exist, no timeframe is set # should return an empty array and None - data, start_ts = load_cached_data_for_updating(test_filename.with_name('unexist'), - '1m', - None) + data, start_ts = load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', None) assert data == [] assert start_ts is None From b2a22f1afb4e10d635c33623acddd22a8dc4d9ae Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 14 Aug 2019 21:39:53 +0200 Subject: [PATCH 0229/3421] Fix samll errors --- freqtrade/data/history.py | 4 ++-- freqtrade/tests/data/test_history.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 849b882b2..c6d731afa 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -184,7 +184,7 @@ def pair_data_filename(datadir: Optional[Path], pair: str, ticker_interval: str) return filename -def load_cached_data_for_updating(datadir: Path, pair: str, ticker_interval: str, +def load_cached_data_for_updating(datadir: Optional[Path], pair: str, ticker_interval: str, timerange: Optional[TimeRange]) -> Tuple[List[Any], Optional[int]]: """ @@ -203,7 +203,7 @@ def load_cached_data_for_updating(datadir: Path, pair: str, ticker_interval: str since_ms = arrow.utcnow().shift(minutes=num_minutes).timestamp * 1000 # read the cached file - data = load_tickerdata_file(datadir, pair, ticker_interval, TimeRange) + data = load_tickerdata_file(datadir, pair, ticker_interval, timerange) # remove the last item, could be incomplete candle if data: data.pop() diff --git a/freqtrade/tests/data/test_history.py b/freqtrade/tests/data/test_history.py index a06c5aa23..164ebe01a 100644 --- a/freqtrade/tests/data/test_history.py +++ b/freqtrade/tests/data/test_history.py @@ -184,7 +184,8 @@ def test_load_cached_data_for_updating(mocker) -> None: # same with 'line' timeframe num_lines = (test_data[-1][0] - test_data[1][0]) / 1000 / 60 + 120 - data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', TimeRange(None, 'line', 0, -num_lines)) + data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', + TimeRange(None, 'line', 0, -num_lines)) assert data == [] assert start_ts < test_data[0][0] - 1 From f3e6bcb20c166bc7287caced4e3559604a39f0c4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 15 Aug 2019 06:35:50 +0200 Subject: [PATCH 0230/3421] Avoid using negative indexes --- freqtrade/data/history.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index c6d731afa..5471767f6 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -43,7 +43,7 @@ def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]: start_index += 1 if timerange.stoptype == 'line': - start_index = len(tickerlist) + timerange.stopts + start_index = max(len(tickerlist) + timerange.stopts, 0) if timerange.stoptype == 'index': stop_index = timerange.stopts elif timerange.stoptype == 'date': From 11790fbf0174f565a1a86dda2eb4fb283ea5d93d Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 15 Aug 2019 06:37:26 +0200 Subject: [PATCH 0231/3421] Fix typos in docstrings --- freqtrade/exchange/exchange.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 65cb409dc..a2558d3d8 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -589,9 +589,9 @@ class Exchange(object): def refresh_latest_ohlcv(self, pair_list: List[Tuple[str, str]]) -> List[Tuple[str, List]]: """ - Refresh in-memory ohlcv asyncronously and set `_klines` with the result - Loops asyncroneously over pair_list and dowloads all pairs async (semi-parallel). - :param pair_list: List of 2 element tuples containing pair,interval to refresh + Refresh in-memory ohlcv asynchronously and set `_klines` with the result + Loops asynchronously over pair_list and downloads all pairs async (semi-parallel). + :param pair_list: List of 2 element tuples containing pair, interval to refresh :return: Returns a List of ticker-dataframes. """ logger.debug("Refreshing ohlcv data for %d pairs", len(pair_list)) @@ -640,7 +640,7 @@ class Exchange(object): async def _async_get_candle_history(self, pair: str, ticker_interval: str, since_ms: Optional[int] = None) -> Tuple[str, str, List]: """ - Asyncronously gets candle histories using fetch_ohlcv + Asynchronously gets candle histories using fetch_ohlcv returns tuple: (pair, ticker_interval, ohlcv_list) """ try: From f5e437d8c789dc9e383ae2dddfe1c249ffbc956c Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 15 Aug 2019 06:59:45 +0200 Subject: [PATCH 0232/3421] Change create_trade to create_trades for new test --- freqtrade/tests/test_freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index d6d547c29..24d070d2d 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -2611,7 +2611,7 @@ def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, markets, mock patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trade() + freqtrade.create_trades() trade = Trade.query.first() assert trade @@ -2630,7 +2630,7 @@ def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, markets, mock # reinit - should buy other pair. caplog.clear() - freqtrade.create_trade() + freqtrade.create_trades() assert log_has(f"Pair {trade.pair} is currently locked.", caplog) From fd77f699dfbda3bf72ea9c42de13abc46531809a Mon Sep 17 00:00:00 2001 From: Ashton Honnecke Date: Thu, 15 Aug 2019 10:41:02 -0600 Subject: [PATCH 0233/3421] f the string --- freqtrade/configuration/configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 17ad37d6a..046a4320b 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -290,7 +290,7 @@ class Configuration(object): if not self.runmode: # Handle real mode, infer dry/live from config self.runmode = RunMode.DRY_RUN if config.get('dry_run', True) else RunMode.LIVE - logger.info("Runmode set to {self.runmode}.") + logger.info(f"Runmode set to {self.runmode}.") config.update({'runmode': self.runmode}) From a94a89086f7b37638a4eec19c93482db9d05a731 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 15 Aug 2019 20:09:00 +0200 Subject: [PATCH 0234/3421] Don't forward timerange to load_ticker_file when loading cached data for updating. We always want to get all data, not just a fraction (we would end up overwriting the non-loaded part of the data). --- freqtrade/data/history.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 5471767f6..14749925f 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -203,7 +203,8 @@ def load_cached_data_for_updating(datadir: Optional[Path], pair: str, ticker_int since_ms = arrow.utcnow().shift(minutes=num_minutes).timestamp * 1000 # read the cached file - data = load_tickerdata_file(datadir, pair, ticker_interval, timerange) + # Intentionally don't pass timerange in - since we need to load the full dataset. + data = load_tickerdata_file(datadir, pair, ticker_interval) # remove the last item, could be incomplete candle if data: data.pop() From 12677f2d42f8d3f789cd84b42f693bb142c6f9ad Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 15 Aug 2019 20:13:19 +0200 Subject: [PATCH 0235/3421] Adjust docstring to match functioning of load_cached_data --- freqtrade/data/history.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 14749925f..af7d8cc7c 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -188,7 +188,9 @@ def load_cached_data_for_updating(datadir: Optional[Path], pair: str, ticker_int timerange: Optional[TimeRange]) -> Tuple[List[Any], Optional[int]]: """ - Load cached data and choose what part of the data should be updated + Load cached data to download more data. + If timerange is passed in, checks wether data from an before the stored data will be downloaded. + If that's the case than what's available should be completely overwritten. Only used by download_pair_history(). """ From 69eff890496df3cc374ae1f8eb260aa2d421db52 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 15 Aug 2019 20:28:32 +0200 Subject: [PATCH 0236/3421] Improve comment in test_history to explain what is tested --- freqtrade/tests/data/test_history.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/tests/data/test_history.py b/freqtrade/tests/data/test_history.py index 164ebe01a..f238046d7 100644 --- a/freqtrade/tests/data/test_history.py +++ b/freqtrade/tests/data/test_history.py @@ -210,7 +210,8 @@ def test_load_cached_data_for_updating(mocker) -> None: assert data == test_data[:-1] assert test_data[-2][0] < start_ts < test_data[-1][0] - # same with 'line' timeframe + # Try loading last 30 lines. + # Not supported by load_cached_data_for_updating, we always need to get the full data. num_lines = 30 timerange = TimeRange(None, 'line', 0, -num_lines) data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) From 4fa92ec0fa468f759d1d8b602cfbcbfd881b35de Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 15 Aug 2019 21:39:04 +0300 Subject: [PATCH 0237/3421] hyperopt: --print-json option added --- freqtrade/configuration/arguments.py | 2 +- freqtrade/configuration/cli_options.py | 6 +++ freqtrade/configuration/configuration.py | 3 ++ freqtrade/optimize/hyperopt.py | 53 +++++++++++++++++------- 4 files changed, 49 insertions(+), 15 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index c129a7e47..926d02f8f 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -22,7 +22,7 @@ ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + ["position_stacking", "use_max_market_pos ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + ["hyperopt", "hyperopt_path", "position_stacking", "epochs", "spaces", "use_max_market_positions", "print_all", - "print_colorized", "hyperopt_jobs", + "print_colorized", "print_json", "hyperopt_jobs", "hyperopt_random_state", "hyperopt_min_trades", "hyperopt_continue", "hyperopt_loss"] diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index b098fa8bc..84686d1e6 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -198,6 +198,12 @@ AVAILABLE_CLI_OPTIONS = { action='store_false', default=True, ), + "print_json": Arg( + '--print-json', + help='Print best result detailization in JSON format.', + action='store_true', + default=False, + ), "hyperopt_jobs": Arg( '-j', '--job-workers', help='The number of concurrently running jobs for hyperoptimization ' diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 587c8757e..eaba0b4da 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -242,6 +242,9 @@ class Configuration(object): else: config.update({'print_colorized': True}) + self._args_to_config(config, argname='print_json', + logstring='Parameter --print-json detected ...') + self._args_to_config(config, argname='hyperopt_jobs', logstring='Parameter -j/--job-workers detected: {}') diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 772b4a10f..7664608ce 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -8,11 +8,14 @@ import logging import os import sys +from collections import OrderedDict from operator import itemgetter from pathlib import Path from pprint import pprint from typing import Any, Dict, List, Optional +import rapidjson + from colorama import init as colorama_init from colorama import Fore, Style from joblib import Parallel, delayed, dump, load, wrap_non_picklable_objects, cpu_count @@ -133,22 +136,44 @@ class Hyperopt(Backtesting): results = sorted(self.trials, key=itemgetter('loss')) best_result = results[0] params = best_result['params'] - log_str = self.format_results_logstring(best_result) print(f"\nBest result:\n\n{log_str}\n") - if self.has_space('buy'): - print('Buy hyperspace params:') - pprint({p.name: params.get(p.name) for p in self.hyperopt_space('buy')}, - indent=4) - if self.has_space('sell'): - print('Sell hyperspace params:') - pprint({p.name: params.get(p.name) for p in self.hyperopt_space('sell')}, - indent=4) - if self.has_space('roi'): - print("ROI table:") - pprint(self.custom_hyperopt.generate_roi_table(params), indent=4) - if self.has_space('stoploss'): - print(f"Stoploss: {params.get('stoploss')}") + + if self.config.get('print_json'): + result_dict = {} + if self.has_space('buy') or self.has_space('sell'): + result_dict['params'] = {} + if self.has_space('buy'): + result_dict['params'].update({p.name: params.get(p.name) + for p in self.hyperopt_space('buy')}) + if self.has_space('sell'): + result_dict['params'].update({p.name: params.get(p.name) + for p in self.hyperopt_space('sell')}) + if self.has_space('roi'): + min_roi = self.custom_hyperopt.generate_roi_table(params) + # Convert keys in min_roi dict to strings because + # rapidjson cannot dump dicts with integer keys... + # OrderedDict is used to keep the numeric order of the items + # in the dict. + min_roi = OrderedDict((str(k),v) for k,v in min_roi.items()) + result_dict['minimal_roi'] = min_roi + if self.has_space('stoploss'): + result_dict['stoploss'] = params.get('stoploss') + print(rapidjson.dumps(result_dict, default=str, number_mode=rapidjson.NM_NATIVE)) + else: + if self.has_space('buy'): + print('Buy hyperspace params:') + pprint({p.name: params.get(p.name) for p in self.hyperopt_space('buy')}, + indent=4) + if self.has_space('sell'): + print('Sell hyperspace params:') + pprint({p.name: params.get(p.name) for p in self.hyperopt_space('sell')}, + indent=4) + if self.has_space('roi'): + print("ROI table:") + pprint(self.custom_hyperopt.generate_roi_table(params), indent=4) + if self.has_space('stoploss'): + print(f"Stoploss: {params.get('stoploss')}") def log_results(self, results) -> None: """ From e525275d102872a68c323000d0ab5d1fd69f5740 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 15 Aug 2019 23:13:46 +0300 Subject: [PATCH 0238/3421] make flake and mypy happy --- freqtrade/optimize/hyperopt.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 7664608ce..05b12e653 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -140,23 +140,23 @@ class Hyperopt(Backtesting): print(f"\nBest result:\n\n{log_str}\n") if self.config.get('print_json'): - result_dict = {} + result_dict: Dict = {} if self.has_space('buy') or self.has_space('sell'): result_dict['params'] = {} if self.has_space('buy'): result_dict['params'].update({p.name: params.get(p.name) - for p in self.hyperopt_space('buy')}) + for p in self.hyperopt_space('buy')}) if self.has_space('sell'): result_dict['params'].update({p.name: params.get(p.name) - for p in self.hyperopt_space('sell')}) + for p in self.hyperopt_space('sell')}) if self.has_space('roi'): - min_roi = self.custom_hyperopt.generate_roi_table(params) # Convert keys in min_roi dict to strings because # rapidjson cannot dump dicts with integer keys... # OrderedDict is used to keep the numeric order of the items # in the dict. - min_roi = OrderedDict((str(k),v) for k,v in min_roi.items()) - result_dict['minimal_roi'] = min_roi + result_dict['minimal_roi'] = OrderedDict( + (str(k), v) for k, v in self.custom_hyperopt.generate_roi_table(params).items() + ) if self.has_space('stoploss'): result_dict['stoploss'] = params.get('stoploss') print(rapidjson.dumps(result_dict, default=str, number_mode=rapidjson.NM_NATIVE)) From 2a842778e36bdef97af38ba955b0baad71cdd624 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 16 Aug 2019 00:49:49 +0300 Subject: [PATCH 0239/3421] tests added --- freqtrade/tests/optimize/test_hyperopt.py | 66 +++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index 0317bb37d..b77ea1c84 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -618,3 +618,69 @@ def test_continue_hyperopt(mocker, default_conf, caplog): assert unlinkmock.call_count == 0 assert log_has(f"Continuing on previous hyperopt results.", caplog) + + +def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: + mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) + mocker.patch( + 'freqtrade.optimize.hyperopt.get_timeframe', + MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) + ) + + parallel = mocker.patch( + 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', + MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}]) + ) + patch_exchange(mocker) + + default_conf.update({'config': 'config.json.example', + 'epochs': 1, + 'timerange': None, + 'spaces': 'all', + 'hyperopt_jobs': 1, + 'print_json': True, + }) + + hyperopt = Hyperopt(default_conf) + hyperopt.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) + + hyperopt.start() + + parallel.assert_called_once() + + out, err = capsys.readouterr() + assert '{"params":{"mfi-value":null,"fastd-value":null,"adx-value":null,"rsi-value":null,"mfi-enabled":null,"fastd-enabled":null,"adx-enabled":null,"rsi-enabled":null,"trigger":null,"sell-mfi-value":null,"sell-fastd-value":null,"sell-adx-value":null,"sell-rsi-value":null,"sell-mfi-enabled":null,"sell-fastd-enabled":null,"sell-adx-enabled":null,"sell-rsi-enabled":null,"sell-trigger":null},"minimal_roi":{},"stoploss":null}' in out # noqa: E501 + + +def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> None: + mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) + mocker.patch( + 'freqtrade.optimize.hyperopt.get_timeframe', + MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) + ) + + parallel = mocker.patch( + 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', + MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}]) + ) + patch_exchange(mocker) + + default_conf.update({'config': 'config.json.example', + 'epochs': 1, + 'timerange': None, + 'spaces': 'roi stoploss', + 'hyperopt_jobs': 1, + 'print_json': True, + }) + + hyperopt = Hyperopt(default_conf) + hyperopt.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) + + hyperopt.start() + + parallel.assert_called_once() + + out, err = capsys.readouterr() + assert '{"minimal_roi":{},"stoploss":null}' in out From b94f3e80c40d4d817a32e13e63f467763d2a9eed Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 16 Aug 2019 04:20:12 +0300 Subject: [PATCH 0240/3421] tests fixed --- freqtrade/tests/optimize/test_hyperopt.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index b77ea1c84..1c4e2445c 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -621,6 +621,7 @@ def test_continue_hyperopt(mocker, default_conf, caplog): def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: + dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) mocker.patch( 'freqtrade.optimize.hyperopt.get_timeframe', @@ -651,9 +652,13 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: out, err = capsys.readouterr() assert '{"params":{"mfi-value":null,"fastd-value":null,"adx-value":null,"rsi-value":null,"mfi-enabled":null,"fastd-enabled":null,"adx-enabled":null,"rsi-enabled":null,"trigger":null,"sell-mfi-value":null,"sell-fastd-value":null,"sell-adx-value":null,"sell-rsi-value":null,"sell-mfi-enabled":null,"sell-fastd-enabled":null,"sell-adx-enabled":null,"sell-rsi-enabled":null,"sell-trigger":null},"minimal_roi":{},"stoploss":null}' in out # noqa: E501 + assert dumper.called + # Should be called twice, once for tickerdata, once to save evaluations + assert dumper.call_count == 2 def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> None: + dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) mocker.patch( 'freqtrade.optimize.hyperopt.get_timeframe', @@ -684,3 +689,6 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> out, err = capsys.readouterr() assert '{"minimal_roi":{},"stoploss":null}' in out + assert dumper.called + # Should be called twice, once for tickerdata, once to save evaluations + assert dumper.call_count == 2 From 8d206f83083fe880293c035ff6019ccc1cb50113 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 06:29:19 +0200 Subject: [PATCH 0241/3421] Fix wrong warning box --- docs/strategy-customization.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 15f44955b..0d08bdd02 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -309,8 +309,10 @@ if self.dp: dataframe['best_bid'] = ob['bids'][0][0] dataframe['best_ask'] = ob['asks'][0][0] ``` -!Warning The order book is not part of the historic data which means backtesting and hyperopt will not work if this - method is used. + +!!! Warning + The order book is not part of the historic data which means backtesting and hyperopt will not work if this + method is used. #### Available Pairs From 53db382695b236d404a9557b05200e1bd9616e12 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 10:19:06 +0200 Subject: [PATCH 0242/3421] Update dockerfile python version --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7a0298719..8677b54de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.7.3-slim-stretch +FROM python:3.7.4-slim-stretch RUN apt-get update \ && apt-get -y install curl build-essential libssl-dev \ From 09286d49182fb98553dd2d137fc85b3d6b742a50 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 13:04:07 +0200 Subject: [PATCH 0243/3421] file_dump_json accepts Path - so we should feed it that --- freqtrade/misc.py | 8 ++++---- freqtrade/optimize/backtesting.py | 12 ++++++------ freqtrade/tests/optimize/test_backtesting.py | 5 +++-- freqtrade/tests/test_misc.py | 5 +++-- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 05946e008..d01d6a254 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -5,11 +5,11 @@ import gzip import logging import re from datetime import datetime +from pathlib import Path import numpy as np import rapidjson - logger = logging.getLogger(__name__) @@ -39,7 +39,7 @@ def datesarray_to_datetimearray(dates: np.ndarray) -> np.ndarray: return dates.dt.to_pydatetime() -def file_dump_json(filename, data, is_zip=False) -> None: +def file_dump_json(filename: Path, data, is_zip=False) -> None: """ Dump JSON data into a file :param filename: file to create @@ -49,8 +49,8 @@ def file_dump_json(filename, data, is_zip=False) -> None: logger.info(f'dumping json to "{filename}"') if is_zip: - if not filename.endswith('.gz'): - filename = filename + '.gz' + if filename.suffix != '.gz': + filename = filename.with_suffix('.gz') with gzip.open(filename, 'w') as fp: rapidjson.dump(data, fp, default=str, number_mode=rapidjson.NM_NATIVE) else: diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 252175269..d321affeb 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -190,7 +190,7 @@ class Backtesting(object): return tabulate(tabular_data, headers=headers, # type: ignore floatfmt=floatfmt, tablefmt="pipe") - def _store_backtest_result(self, recordfilename: str, results: DataFrame, + def _store_backtest_result(self, recordfilename: Path, results: DataFrame, strategyname: Optional[str] = None) -> None: records = [(t.pair, t.profit_percent, t.open_time.timestamp(), @@ -201,10 +201,10 @@ class Backtesting(object): if records: if strategyname: # Inject strategyname to filename - recname = Path(recordfilename) - recordfilename = str(Path.joinpath( - recname.parent, f'{recname.stem}-{strategyname}').with_suffix(recname.suffix)) - logger.info('Dumping backtest results to %s', recordfilename) + recordfilename = Path.joinpath( + recordfilename.parent, + f'{recordfilename.stem}-{strategyname}').with_suffix(recordfilename.suffix) + logger.info(f'Dumping backtest results to {recordfilename}') file_dump_json(recordfilename, records) def _get_ticker_list(self, processed) -> Dict[str, DataFrame]: @@ -458,7 +458,7 @@ class Backtesting(object): for strategy, results in all_results.items(): if self.config.get('export', False): - self._store_backtest_result(self.config['exportfilename'], results, + self._store_backtest_result(Path(self.config['exportfilename']), results, strategy if len(self.strategylist) > 1 else None) print(f"Result for strategy {strategy}") diff --git a/freqtrade/tests/optimize/test_backtesting.py b/freqtrade/tests/optimize/test_backtesting.py index 9ed7e7296..02e9a9c28 100644 --- a/freqtrade/tests/optimize/test_backtesting.py +++ b/freqtrade/tests/optimize/test_backtesting.py @@ -2,6 +2,7 @@ import math import random +from pathlib import Path from unittest.mock import MagicMock import numpy as np @@ -785,10 +786,10 @@ def test_backtest_record(default_conf, fee, mocker): # reset test to test with strategy name names = [] records = [] - backtesting._store_backtest_result("backtest-result.json", results, "DefStrat") + backtesting._store_backtest_result(Path("backtest-result.json"), results, "DefStrat") assert len(results) == 4 # Assert file_dump_json was only called once - assert names == ['backtest-result-DefStrat.json'] + assert names == [Path('backtest-result-DefStrat.json')] records = records[0] # Ensure records are of correct type assert len(records) == 4 diff --git a/freqtrade/tests/test_misc.py b/freqtrade/tests/test_misc.py index 1a6b2a92d..c55083e64 100644 --- a/freqtrade/tests/test_misc.py +++ b/freqtrade/tests/test_misc.py @@ -1,6 +1,7 @@ # pragma pylint: disable=missing-docstring,C0103 import datetime +from pathlib import Path from unittest.mock import MagicMock from freqtrade.data.converter import parse_ticker_dataframe @@ -34,12 +35,12 @@ def test_datesarray_to_datetimearray(ticker_history_list): def test_file_dump_json(mocker) -> None: file_open = mocker.patch('freqtrade.misc.open', MagicMock()) json_dump = mocker.patch('rapidjson.dump', MagicMock()) - file_dump_json('somefile', [1, 2, 3]) + file_dump_json(Path('somefile'), [1, 2, 3]) assert file_open.call_count == 1 assert json_dump.call_count == 1 file_open = mocker.patch('freqtrade.misc.gzip.open', MagicMock()) json_dump = mocker.patch('rapidjson.dump', MagicMock()) - file_dump_json('somefile', [1, 2, 3], True) + file_dump_json(Path('somefile'), [1, 2, 3], True) assert file_open.call_count == 1 assert json_dump.call_count == 1 From 91886120a7d17071a4663cd39c36d378b7d563c1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 14:37:10 +0200 Subject: [PATCH 0244/3421] use nargs for --pairs argument --- freqtrade/configuration/cli_options.py | 6 ++++-- freqtrade/constants.py | 1 - freqtrade/plot/plotting.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 84686d1e6..d39013737 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -254,7 +254,8 @@ AVAILABLE_CLI_OPTIONS = { # Script options "pairs": Arg( '-p', '--pairs', - help='Show profits for only these pairs. Pairs are comma-separated.', + help='Show profits for only these pairs. Pairs are space-separated.', + nargs='+', ), # Download data "pairs_file": Arg( @@ -276,9 +277,10 @@ AVAILABLE_CLI_OPTIONS = { "timeframes": Arg( '-t', '--timeframes', help=f'Specify which tickers to download. Space-separated list. ' - f'Default: `{constants.DEFAULT_DOWNLOAD_TICKER_INTERVALS}`.', + f'Default: `1m 5m`.', choices=['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', '6h', '8h', '12h', '1d', '3d', '1w'], + default=['1m', '5m'], nargs='+', ), "erase": Arg( diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 9b73adcfe..fbf44dec8 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -23,7 +23,6 @@ ORDERTYPE_POSSIBILITIES = ['limit', 'market'] ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc'] AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList'] DRY_RUN_WALLET = 999.9 -DEFAULT_DOWNLOAD_TICKER_INTERVALS = '1m 5m' TICKER_INTERVALS = [ '1m', '3m', '5m', '15m', '30m', diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 947b3003c..e6da581a4 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -37,7 +37,7 @@ def init_plotscript(config): strategy = StrategyResolver(config).strategy if "pairs" in config: - pairs = config["pairs"].split(',') + pairs = config["pairs"] else: pairs = config["exchange"]["pair_whitelist"] From 05deb9e09bdccd0c19904ed2687cc6bd8f2bf29f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 14:42:44 +0200 Subject: [PATCH 0245/3421] Migrate download-script logic to utils.py --- freqtrade/configuration/arguments.py | 19 ++++++-- freqtrade/tests/test_arguments.py | 18 ++++---- freqtrade/utils.py | 66 ++++++++++++++++++++++++++-- 3 files changed, 87 insertions(+), 16 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 926d02f8f..8fa16318a 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -30,7 +30,7 @@ ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"] ARGS_LIST_EXCHANGES = ["print_one_column"] -ARGS_DOWNLOADER = ARGS_COMMON + ["pairs", "pairs_file", "days", "exchange", "timeframes", "erase"] +ARGS_DOWNLOADER = ["pairs", "pairs_file", "days", "exchange", "timeframes", "erase"] ARGS_PLOT_DATAFRAME = (ARGS_COMMON + ARGS_STRATEGY + ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", @@ -40,6 +40,8 @@ ARGS_PLOT_DATAFRAME = (ARGS_COMMON + ARGS_STRATEGY + ARGS_PLOT_PROFIT = (ARGS_COMMON + ARGS_STRATEGY + ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source"]) +NO_CONF_REQURIED = ["start_download_data"] + class Arguments(object): """ @@ -75,7 +77,10 @@ class Arguments(object): # Workaround issue in argparse with action='append' and default value # (see https://bugs.python.org/issue16399) - if not self._no_default_config and parsed_arg.config is None: + # Allow no-config for certain commands (like downloading / plotting) + if (not self._no_default_config and parsed_arg.config is None + and not (hasattr(parsed_arg, 'func') + and parsed_arg.func.__name__ in NO_CONF_REQURIED)): parsed_arg.config = [constants.DEFAULT_CONFIG] return parsed_arg @@ -93,7 +98,7 @@ class Arguments(object): :return: None """ from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge - from freqtrade.utils import start_list_exchanges + from freqtrade.utils import start_download_data, start_list_exchanges subparsers = self.parser.add_subparsers(dest='subparser') @@ -119,3 +124,11 @@ class Arguments(object): ) list_exchanges_cmd.set_defaults(func=start_list_exchanges) self._build_args(optionlist=ARGS_LIST_EXCHANGES, parser=list_exchanges_cmd) + + # Add download-data subcommand + download_data_cmd = subparsers.add_parser( + 'download-data', + help='Download backtesting data.' + ) + download_data_cmd.set_defaults(func=start_download_data) + self._build_args(optionlist=ARGS_DOWNLOADER, parser=download_data_cmd) diff --git a/freqtrade/tests/test_arguments.py b/freqtrade/tests/test_arguments.py index 2cb7ff6d7..31ab9dea8 100644 --- a/freqtrade/tests/test_arguments.py +++ b/freqtrade/tests/test_arguments.py @@ -50,10 +50,10 @@ def test_parse_args_verbose() -> None: def test_common_scripts_options() -> None: - arguments = Arguments(['-p', 'ETH/BTC'], '') - arguments._build_args(ARGS_DOWNLOADER) - args = arguments._parse_args() - assert args.pairs == 'ETH/BTC' + args = Arguments(['download-data', '-p', 'ETH/BTC', 'XRP/BTC'], '').get_parsed_arg() + + assert args.pairs == ['ETH/BTC', 'XRP/BTC'] + assert hasattr(args, "func") def test_parse_args_version() -> None: @@ -135,14 +135,14 @@ def test_parse_args_hyperopt_custom() -> None: def test_download_data_options() -> None: args = [ - '--pairs-file', 'file_with_pairs', '--datadir', 'datadir/directory', + 'download-data', + '--pairs-file', 'file_with_pairs', '--days', '30', '--exchange', 'binance' ] - arguments = Arguments(args, '') - arguments._build_args(ARGS_DOWNLOADER) - args = arguments._parse_args() + args = Arguments(args, '').get_parsed_arg() + assert args.pairs_file == 'file_with_pairs' assert args.datadir == 'datadir/directory' assert args.days == 30 @@ -162,7 +162,7 @@ def test_plot_dataframe_options() -> None: assert pargs.indicators1 == "sma10,sma100" assert pargs.indicators2 == "macd,fastd,fastk" assert pargs.plot_limit == 30 - assert pargs.pairs == "UNITTEST/BTC" + assert pargs.pairs == ["UNITTEST/BTC"] def test_check_int_positive() -> None: diff --git a/freqtrade/utils.py b/freqtrade/utils.py index d550ef43c..d2770ba1a 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -1,11 +1,16 @@ import logging +import sys from argparse import Namespace +from pathlib import Path from typing import Any, Dict -from freqtrade.configuration import Configuration -from freqtrade.exchange import available_exchanges -from freqtrade.state import RunMode +import arrow +from freqtrade.configuration import Configuration, TimeRange +from freqtrade.data.history import download_pair_history +from freqtrade.exchange import available_exchanges +from freqtrade.resolvers import ExchangeResolver +from freqtrade.state import RunMode logger = logging.getLogger(__name__) @@ -17,7 +22,7 @@ def setup_utils_configuration(args: Namespace, method: RunMode) -> Dict[str, Any :return: Configuration """ configuration = Configuration(args, method) - config = configuration.load_config() + config = configuration.get_config() config['exchange']['dry_run'] = True # Ensure we do not use Exchange credentials @@ -39,3 +44,56 @@ def start_list_exchanges(args: Namespace) -> None: else: print(f"Exchanges supported by ccxt and available for Freqtrade: " f"{', '.join(available_exchanges())}") + + +def start_download_data(args: Namespace) -> None: + """ + Download data based + """ + config = setup_utils_configuration(args, RunMode.OTHER) + + timerange = TimeRange() + if 'days' in config: + time_since = arrow.utcnow().shift(days=-config['days']).strftime("%Y%m%d") + timerange = TimeRange.parse_timerange(f'{time_since}-') + + dl_path = Path(config['datadir']) + logger.info(f'About to download pairs: {config["pairs"]}, ' + f'intervals: {config["timeframes"]} to {dl_path}') + + pairs_not_available = [] + + try: + # Init exchange + exchange = ExchangeResolver(config['exchange']['name'], config).exchange + + for pair in config["pairs"]: + if pair not in exchange._api.markets: + pairs_not_available.append(pair) + logger.info(f"Skipping pair {pair}...") + continue + for ticker_interval in config["timeframes"]: + pair_print = pair.replace('/', '_') + filename = f'{pair_print}-{ticker_interval}.json' + dl_file = dl_path.joinpath(filename) + if args.erase and dl_file.exists(): + logger.info( + f'Deleting existing data for pair {pair}, interval {ticker_interval}.') + dl_file.unlink() + + logger.info(f'Downloading pair {pair}, interval {ticker_interval}.') + download_pair_history(datadir=dl_path, exchange=exchange, + pair=pair, ticker_interval=str(ticker_interval), + timerange=timerange) + + except KeyboardInterrupt: + sys.exit("SIGINT received, aborting ...") + + finally: + if pairs_not_available: + logger.info( + f"Pairs [{','.join(pairs_not_available)}] not available " + f"on exchange {config['exchange']['name']}.") + + # configuration.resolve_pairs_list() + print(config) From 8655e521d7c64812ffda7f69e95e4959a6fcf6f2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 14:53:46 +0200 Subject: [PATCH 0246/3421] Adapt some tests --- freqtrade/tests/test_arguments.py | 2 +- freqtrade/tests/test_main.py | 4 +++- freqtrade/tests/test_plotting.py | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/freqtrade/tests/test_arguments.py b/freqtrade/tests/test_arguments.py index 31ab9dea8..601f41e63 100644 --- a/freqtrade/tests/test_arguments.py +++ b/freqtrade/tests/test_arguments.py @@ -4,7 +4,7 @@ import argparse import pytest from freqtrade.configuration import Arguments -from freqtrade.configuration.arguments import ARGS_DOWNLOADER, ARGS_PLOT_DATAFRAME +from freqtrade.configuration.arguments import ARGS_PLOT_DATAFRAME from freqtrade.configuration.cli_options import check_int_positive diff --git a/freqtrade/tests/test_main.py b/freqtrade/tests/test_main.py index d8ec532b0..409025a3c 100644 --- a/freqtrade/tests/test_main.py +++ b/freqtrade/tests/test_main.py @@ -1,7 +1,7 @@ # pragma pylint: disable=missing-docstring from copy import deepcopy -from unittest.mock import MagicMock +from unittest.mock import MagicMock, PropertyMock import pytest @@ -21,6 +21,7 @@ def test_parse_args_backtesting(mocker) -> None: further argument parsing is done in test_arguments.py """ backtesting_mock = mocker.patch('freqtrade.optimize.start_backtesting', MagicMock()) + backtesting_mock.__name__ = PropertyMock("start_backtesting") # it's sys.exit(0) at the end of backtesting with pytest.raises(SystemExit): main(['backtesting']) @@ -36,6 +37,7 @@ def test_parse_args_backtesting(mocker) -> None: def test_main_start_hyperopt(mocker) -> None: hyperopt_mock = mocker.patch('freqtrade.optimize.start_hyperopt', MagicMock()) + hyperopt_mock.__name__ = PropertyMock("start_hyperopt") # it's sys.exit(0) at the end of hyperopt with pytest.raises(SystemExit): main(['hyperopt']) diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index cd72160f8..94d40ab84 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -50,7 +50,7 @@ def test_init_plotscript(default_conf, mocker): assert "pairs" in ret assert "strategy" in ret - default_conf['pairs'] = "POWR/BTC,XLM/BTC" + default_conf['pairs'] = ["POWR/BTC", "XLM/BTC"] ret = init_plotscript(default_conf) assert "tickers" in ret assert "POWR/BTC" in ret["tickers"] From 3c15e3ebddd07d14ba085f4d226d5bea2d7a97a9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 14:56:38 +0200 Subject: [PATCH 0247/3421] Default load minimal config --- freqtrade/configuration/configuration.py | 13 +++++++++++++ freqtrade/constants.py | 14 ++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index c95246fc0..e24ace34b 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -52,6 +52,9 @@ class Configuration(object): # Keep this method as staticmethod, so it can be used from interactive environments config: Dict[str, Any] = {} + if not files: + return constants.MINIMAL_CONFIG + # We expect here a list of config filenames for path in files: logger.info(f'Using config: {path} ...') @@ -276,6 +279,16 @@ class Configuration(object): self._args_to_config(config, argname='trade_source', logstring='Using trades from: {}') + self._args_to_config(config, argname='timeframes', + logstring='timeframes --timeframes: {}') + + self._args_to_config(config, argname='days', + logstring='Detected --days: {}') + + if "exchange" in self.args and self.args.exchange: + config['exchange']['name'] = self.args.exchange + logger.info(f"Using exchange {config['exchange']['name']}") + def _process_runmode(self, config: Dict[str, Any]) -> None: if not self.runmode: diff --git a/freqtrade/constants.py b/freqtrade/constants.py index fbf44dec8..b73a723eb 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -38,6 +38,20 @@ SUPPORTED_FIAT = [ "BTC", "XBT", "ETH", "XRP", "LTC", "BCH", "USDT" ] +MINIMAL_CONFIG = { + 'stake_currency': '', + 'dry_run': True, + 'exchange': { + 'name': '', + 'key': '', + 'secret': '', + 'pair_whitelist': [], + 'ccxt_async_config': { + 'enableRateLimit': True, + } + } +} + # Required json-schema for user specified config CONF_SCHEMA = { 'type': 'object', From 4e308a1a3e4aef76c809e53f1d60953399fb8655 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 14:56:57 +0200 Subject: [PATCH 0248/3421] Resolve pairlist in configuration --- freqtrade/configuration/configuration.py | 37 ++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index e24ace34b..ed12b6501 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -90,6 +90,11 @@ class Configuration(object): self._process_runmode(config) + # Check if the exchange set by the user is supported + check_exchange(config, config.get('experimental', {}).get('block_bad_exchanges', True)) + + self._resolve_pairs_list(config) + return config def _process_logging_options(self, config: Dict[str, Any]) -> None: @@ -150,9 +155,6 @@ class Configuration(object): if 'sd_notify' in self.args and self.args.sd_notify: config['internals'].update({'sd_notify': True}) - # Check if the exchange set by the user is supported - check_exchange(config, config.get('experimental', {}).get('block_bad_exchanges', True)) - def _process_datadir_options(self, config: Dict[str, Any]) -> None: """ Extract information for sys.argv and load datadir configuration: @@ -348,3 +350,32 @@ class Configuration(object): logger.info(logstring.format(config[argname])) if deprecated_msg: warnings.warn(f"DEPRECATED: {deprecated_msg}", DeprecationWarning) + + def _resolve_pairs_list(self, config: Dict[str, Any]) -> None: + """ + Helper for download script. + Takes first found: + * -p (pairs argument) + * --pairs-file + * whitelist from config + """ + + if "pairs" in self.args and self.args.pairs: + return + + if "pairs_file" in self.args and self.args.pairs_file: + pairs_file = self.args.pairs_file + logger.info(f'Reading pairs file "{pairs_file}".') + # Download pairs from the pairs file if no config is specified + # or if pairs file is specified explicitely + if not pairs_file.exists(): + OperationalException(f'No pairs file found with path "{pairs_file}".') + + # with pairs_file.open() as file: + # pairs = list(set(json.load(file))) + + # pairs.sort() + + if "config" in self.args: + logger.info("Using pairlist from configuration.") + config['pairs'] = config.get('exchange', {}).get('pair_whitelist') From 219d0b7fb016f51f90f5778941d6aba72f907910 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 15:27:33 +0200 Subject: [PATCH 0249/3421] Adjust documentation to removed download-script --- docs/backtesting.md | 67 +++++++++++++----------- freqtrade/configuration/configuration.py | 3 ++ freqtrade/data/history.py | 2 +- freqtrade/tests/data/test_history.py | 4 +- freqtrade/utils.py | 4 +- 5 files changed, 43 insertions(+), 37 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 7e9f7ff53..f666c5b49 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -3,9 +3,43 @@ This page explains how to validate your strategy performance by using Backtesting. +## Getting data for backtesting / hyperopt + +To download backtesting data (candles / OHLCV), we recommend using the `freqtrade download-data` command. + +If no additional parameter is specified, freqtrade will download data for `"1m"` and `"5m"` timeframes. +Exchange and pairs will come from `config.json` (if specified using `-c/--config`). Otherwise `--exchange` becomes mandatory. + +Alternatively, a `pairs.json` file can be used. + +If you are using Binance for example: + +- create a directory `user_data/data/binance` and copy `pairs.json` in that directory. +- update the `pairs.json` to contain the currency pairs you are interested in. + +```bash +mkdir -p user_data/data/binance +cp freqtrade/tests/testdata/pairs.json user_data/data/binance +``` + +Then run: + +```bash +freqtrade download-data --exchange binance +``` + +This will download ticker data for all the currency pairs you defined in `pairs.json`. + +- To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`. +- To change the exchange used to download the tickers, please use a different configuration file (you'll probably need to adjust ratelimits etc.) +- To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`. +- To download ticker data for only 10 days, use `--days 10` (defaults to 30 days). +- Use `--timeframes` to specify which tickers to download. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute tickers. +- To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options. + ## Test your strategy with Backtesting -Now you have good Buy and Sell strategies, you want to test it against +Now you have good Buy and Sell strategies and some historic data, you want to test it against real data. This is what we call [backtesting](https://en.wikipedia.org/wiki/Backtesting). @@ -109,37 +143,6 @@ The full timerange specification: - Use tickframes between POSIX timestamps 1527595200 1527618600: `--timerange=1527595200-1527618600` -#### Downloading new set of ticker data - -To download new set of backtesting ticker data, you can use a download script. - -If you are using Binance for example: - -- create a directory `user_data/data/binance` and copy `pairs.json` in that directory. -- update the `pairs.json` to contain the currency pairs you are interested in. - -```bash -mkdir -p user_data/data/binance -cp freqtrade/tests/testdata/pairs.json user_data/data/binance -``` - -Then run: - -```bash -python scripts/download_backtest_data.py --exchange binance -``` - -This will download ticker data for all the currency pairs you defined in `pairs.json`. - -- To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`. -- To change the exchange used to download the tickers, use `--exchange`. Default is `bittrex`. -- To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`. -- To download ticker data for only 10 days, use `--days 10`. -- Use `--timeframes` to specify which tickers to download. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute tickers. -- To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with other options. - -For help about backtesting usage, please refer to [Backtesting commands](#backtesting-commands). - ## Understand the backtesting result The most important in the backtesting is to understand the result. diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index ed12b6501..f7c393b60 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -281,6 +281,9 @@ class Configuration(object): self._args_to_config(config, argname='trade_source', logstring='Using trades from: {}') + self._args_to_config(config, argname='erase', + logstring='Erase detected. Deleting existing data.') + self._args_to_config(config, argname='timeframes', logstring='timeframes --timeframes: {}') diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 899c6d0c8..c7b3a28b0 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -122,7 +122,7 @@ def load_pair_history(pair: str, else: logger.warning( f'No history data for pair: "{pair}", interval: {ticker_interval}. ' - 'Use --refresh-pairs-cached option or download_backtest_data.py ' + 'Use --refresh-pairs-cached option or `freqtrade download-data` ' 'script to download the data' ) return None diff --git a/freqtrade/tests/data/test_history.py b/freqtrade/tests/data/test_history.py index 4ba65e470..ea56b4bec 100644 --- a/freqtrade/tests/data/test_history.py +++ b/freqtrade/tests/data/test_history.py @@ -74,7 +74,7 @@ def test_load_data_7min_ticker(mocker, caplog, default_conf) -> None: assert ld is None assert log_has( 'No history data for pair: "UNITTEST/BTC", interval: 7m. ' - 'Use --refresh-pairs-cached option or download_backtest_data.py ' + 'Use --refresh-pairs-cached option or `freqtrade download-data` ' 'script to download the data', caplog ) @@ -109,7 +109,7 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, defau assert os.path.isfile(file) is False assert log_has( 'No history data for pair: "MEME/BTC", interval: 1m. ' - 'Use --refresh-pairs-cached option or download_backtest_data.py ' + 'Use --refresh-pairs-cached option or `freqtrade download-data` ' 'script to download the data', caplog ) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index d2770ba1a..7ccbae81a 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -48,7 +48,7 @@ def start_list_exchanges(args: Namespace) -> None: def start_download_data(args: Namespace) -> None: """ - Download data based + Download data (former download_backtest_data.py script) """ config = setup_utils_configuration(args, RunMode.OTHER) @@ -76,7 +76,7 @@ def start_download_data(args: Namespace) -> None: pair_print = pair.replace('/', '_') filename = f'{pair_print}-{ticker_interval}.json' dl_file = dl_path.joinpath(filename) - if args.erase and dl_file.exists(): + if config.get("erase") and dl_file.exists(): logger.info( f'Deleting existing data for pair {pair}, interval {ticker_interval}.') dl_file.unlink() From 89257832d721cb06c7e2f80f860f8006fc856fc8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 15:27:59 +0200 Subject: [PATCH 0250/3421] Don't use internal _API methods --- freqtrade/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 7ccbae81a..002d89738 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -68,7 +68,7 @@ def start_download_data(args: Namespace) -> None: exchange = ExchangeResolver(config['exchange']['name'], config).exchange for pair in config["pairs"]: - if pair not in exchange._api.markets: + if pair not in exchange.markets: pairs_not_available.append(pair) logger.info(f"Skipping pair {pair}...") continue From b2c215029d4937223b88b39a7d37c2373896be0d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 15:28:11 +0200 Subject: [PATCH 0251/3421] Add tests for download_data entrypoint --- freqtrade/tests/test_utils.py | 51 ++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/freqtrade/tests/test_utils.py b/freqtrade/tests/test_utils.py index a12b709d7..8d0e76cde 100644 --- a/freqtrade/tests/test_utils.py +++ b/freqtrade/tests/test_utils.py @@ -1,8 +1,11 @@ -from freqtrade.utils import setup_utils_configuration, start_list_exchanges -from freqtrade.tests.conftest import get_args -from freqtrade.state import RunMode - import re +from pathlib import Path +from unittest.mock import MagicMock, PropertyMock + +from freqtrade.state import RunMode +from freqtrade.tests.conftest import get_args, log_has, patch_exchange +from freqtrade.utils import (setup_utils_configuration, start_download_data, + start_list_exchanges) def test_setup_utils_configuration(): @@ -40,3 +43,43 @@ def test_list_exchanges(capsys): assert not re.match(r"Exchanges supported by ccxt and available.*", captured.out) assert re.search(r"^binance$", captured.out, re.MULTILINE) assert re.search(r"^bittrex$", captured.out, re.MULTILINE) + + +def test_download_data(mocker, markets, caplog): + dl_mock = mocker.patch('freqtrade.utils.download_pair_history', MagicMock()) + patch_exchange(mocker) + mocker.patch( + 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets) + ) + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + mocker.patch.object(Path, "unlink", MagicMock()) + + args = [ + "download-data", + "--exchange", "binance", + "--pairs", "ETH/BTC", "XRP/BTC", + "--erase" + ] + start_download_data(get_args(args)) + + assert dl_mock.call_count == 4 + assert log_has("Deleting existing data for pair ETH/BTC, interval 1m.", caplog) + assert log_has("Downloading pair ETH/BTC, interval 1m.", caplog) + + +def test_download_data_no_markets(mocker, caplog): + dl_mock = mocker.patch('freqtrade.utils.download_pair_history', MagicMock()) + patch_exchange(mocker) + mocker.patch( + 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value={}) + ) + args = [ + "download-data", + "--exchange", "binance", + "--pairs", "ETH/BTC", "XRP/BTC" + ] + start_download_data(get_args(args)) + + assert dl_mock.call_count == 0 + assert log_has("Skipping pair ETH/BTC...", caplog) + assert log_has("Pairs [ETH/BTC,XRP/BTC] not available on exchange binance.", caplog) From 132f28ad44be07194ee68cda69a488c75d1b7b8b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 15:52:59 +0200 Subject: [PATCH 0252/3421] Add tests to correctly load / override pair-lists --- freqtrade/configuration/configuration.py | 21 ++++-- freqtrade/tests/test_configuration.py | 88 ++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 7 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index f7c393b60..cb698544d 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -4,6 +4,7 @@ This module contains the configuration class import logging import warnings from argparse import Namespace +from pathlib import Path from typing import Any, Callable, Dict, List, Optional from freqtrade import OperationalException, constants @@ -12,7 +13,7 @@ from freqtrade.configuration.create_datadir import create_datadir from freqtrade.configuration.json_schema import validate_config_schema from freqtrade.configuration.load_config import load_config_file from freqtrade.loggers import setup_logging -from freqtrade.misc import deep_merge_dicts +from freqtrade.misc import deep_merge_dicts, json_load from freqtrade.state import RunMode logger = logging.getLogger(__name__) @@ -363,22 +364,28 @@ class Configuration(object): * whitelist from config """ - if "pairs" in self.args and self.args.pairs: + if "pairs" in config: return if "pairs_file" in self.args and self.args.pairs_file: - pairs_file = self.args.pairs_file + pairs_file = Path(self.args.pairs_file) logger.info(f'Reading pairs file "{pairs_file}".') # Download pairs from the pairs file if no config is specified # or if pairs file is specified explicitely if not pairs_file.exists(): - OperationalException(f'No pairs file found with path "{pairs_file}".') + raise OperationalException(f'No pairs file found with path "{pairs_file}".') - # with pairs_file.open() as file: - # pairs = list(set(json.load(file))) + config['pairs'] = json_load(pairs_file) - # pairs.sort() + config['pairs'].sort() + return if "config" in self.args: logger.info("Using pairlist from configuration.") config['pairs'] = config.get('exchange', {}).get('pair_whitelist') + else: + # Fall back to /dl_path/pairs.json + pairs_file = Path(config['datadir']) / "pairs.json" + if pairs_file.exists(): + config['pairs'] = json_load(pairs_file) + diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 8cbd02ece..c351b9b72 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -704,3 +704,91 @@ def test_load_config_default_subkeys(all_conf, keys) -> None: validate_config_schema(all_conf) assert subkey in all_conf[key] assert all_conf[key][subkey] == keys[2] + + +def test_pairlist_resolving(): + arglist = [ + 'download-data', + '--pairs', 'ETH/BTC', 'XRP/BTC', + '--exchange', 'binance' + ] + + args = Arguments(arglist, '').get_parsed_arg() + + configuration = Configuration(args) + config = configuration.get_config() + + assert config['pairs'] == ['ETH/BTC', 'XRP/BTC'] + assert config['exchange']['name'] == 'binance' + + +def test_pairlist_resolving_with_config(mocker, default_conf): + patched_configuration_load_config_file(mocker, default_conf) + arglist = [ + '--config', 'config.json', + 'download-data', + ] + + args = Arguments(arglist, '').get_parsed_arg() + + configuration = Configuration(args) + config = configuration.get_config() + + assert config['pairs'] == default_conf['exchange']['pair_whitelist'] + assert config['exchange']['name'] == default_conf['exchange']['name'] + + # Override pairs + arglist = [ + '--config', 'config.json', + 'download-data', + '--pairs', 'ETH/BTC', 'XRP/BTC', + ] + + args = Arguments(arglist, '').get_parsed_arg() + + configuration = Configuration(args) + config = configuration.get_config() + + assert config['pairs'] == ['ETH/BTC', 'XRP/BTC'] + assert config['exchange']['name'] == default_conf['exchange']['name'] + + +def test_pairlist_resolving_with_config_pl(mocker, default_conf): + patched_configuration_load_config_file(mocker, default_conf) + load_mock = mocker.patch("freqtrade.configuration.configuration.json_load", + MagicMock(return_value=['XRP/BTC', 'ETH/BTC'])) + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + + arglist = [ + '--config', 'config.json', + 'download-data', + '--pairs-file', 'pairs.json', + ] + + args = Arguments(arglist, '').get_parsed_arg() + + configuration = Configuration(args) + config = configuration.get_config() + + assert load_mock.call_count == 1 + assert config['pairs'] == ['ETH/BTC', 'XRP/BTC'] + assert config['exchange']['name'] == default_conf['exchange']['name'] + + +def test_pairlist_resolving_with_config_pl_not_exists(mocker, default_conf): + patched_configuration_load_config_file(mocker, default_conf) + mocker.patch("freqtrade.configuration.configuration.json_load", + MagicMock(return_value=['XRP/BTC', 'ETH/BTC'])) + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + + arglist = [ + '--config', 'config.json', + 'download-data', + '--pairs-file', 'pairs.json', + ] + + args = Arguments(arglist, '').get_parsed_arg() + + with pytest.raises(OperationalException, match=r"No pairs file found with path.*"): + configuration = Configuration(args) + configuration.get_config() From c9207bcc0070bd574bc301f984955bbf3cdda0cf Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Aug 2019 16:01:30 +0200 Subject: [PATCH 0253/3421] Remove blank line at end --- freqtrade/configuration/configuration.py | 1 - 1 file changed, 1 deletion(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index cb698544d..c51153f4b 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -388,4 +388,3 @@ class Configuration(object): pairs_file = Path(config['datadir']) / "pairs.json" if pairs_file.exists(): config['pairs'] = json_load(pairs_file) - From 29c56f4447ad53cb1d9dc157227be4ea09b4ab29 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Aug 2019 06:47:53 +0200 Subject: [PATCH 0254/3421] Replace download_backtest_data script with warning message --- scripts/download_backtest_data.py | 145 ++---------------------------- 1 file changed, 5 insertions(+), 140 deletions(-) diff --git a/scripts/download_backtest_data.py b/scripts/download_backtest_data.py index f77ad7422..496f83c7d 100755 --- a/scripts/download_backtest_data.py +++ b/scripts/download_backtest_data.py @@ -1,144 +1,9 @@ -#!/usr/bin/env python3 -""" -This script generates json files with pairs history data -""" -import arrow -import json import sys -from pathlib import Path -from typing import Any, Dict, List -from freqtrade.configuration import Arguments, TimeRange -from freqtrade.configuration import Configuration -from freqtrade.configuration.arguments import ARGS_DOWNLOADER -from freqtrade.configuration.check_exchange import check_exchange -from freqtrade.configuration.load_config import load_config_file -from freqtrade.data.history import download_pair_history -from freqtrade.exchange import Exchange -from freqtrade.misc import deep_merge_dicts -import logging +print("This script has been integrated into freqtrade " + "and it's functionality is available by calling `freqtrade download-data`.") +print("Please check the documentation on https://www.freqtrade.io/en/latest/backtesting/ " + "for details.") -logger = logging.getLogger('download_backtest_data') - -DEFAULT_DL_PATH = 'user_data/data' - -# Do not read the default config if config is not specified -# in the command line options explicitely -arguments = Arguments(sys.argv[1:], 'Download backtest data', - no_default_config=True) -arguments._build_args(optionlist=ARGS_DOWNLOADER) -args = arguments._parse_args() - -# Use bittrex as default exchange -exchange_name = args.exchange or 'bittrex' - -pairs: List = [] - -configuration = Configuration(args) -config: Dict[str, Any] = {} - -if args.config: - # Now expecting a list of config filenames here, not a string - for path in args.config: - logger.info(f"Using config: {path}...") - # Merge config options, overwriting old values - config = deep_merge_dicts(load_config_file(path), config) - - config['stake_currency'] = '' - # Ensure we do not use Exchange credentials - config['exchange']['dry_run'] = True - config['exchange']['key'] = '' - config['exchange']['secret'] = '' - - pairs = config['exchange']['pair_whitelist'] - - if config.get('ticker_interval'): - timeframes = args.timeframes or [config.get('ticker_interval')] - else: - timeframes = args.timeframes or ['1m', '5m'] - -else: - config = { - 'stake_currency': '', - 'dry_run': True, - 'exchange': { - 'name': exchange_name, - 'key': '', - 'secret': '', - 'pair_whitelist': [], - 'ccxt_async_config': { - 'enableRateLimit': True, - 'rateLimit': 200 - } - } - } - timeframes = args.timeframes or ['1m', '5m'] - -configuration._process_logging_options(config) - -if args.config and args.exchange: - logger.warning("The --exchange option is ignored, " - "using exchange settings from the configuration file.") - -# Check if the exchange set by the user is supported -check_exchange(config) - -configuration._process_datadir_options(config) - -dl_path = Path(config['datadir']) - -pairs_file = Path(args.pairs_file) if args.pairs_file else dl_path.joinpath('pairs.json') - -if not pairs or args.pairs_file: - logger.info(f'Reading pairs file "{pairs_file}".') - # Download pairs from the pairs file if no config is specified - # or if pairs file is specified explicitely - if not pairs_file.exists(): - sys.exit(f'No pairs file found with path "{pairs_file}".') - - with pairs_file.open() as file: - pairs = list(set(json.load(file))) - - pairs.sort() - -timerange = TimeRange() -if args.days: - time_since = arrow.utcnow().shift(days=-args.days).strftime("%Y%m%d") - timerange = TimeRange.parse_timerange(f'{time_since}-') - -logger.info(f'About to download pairs: {pairs}, intervals: {timeframes} to {dl_path}') - -pairs_not_available = [] - -try: - # Init exchange - exchange = Exchange(config) - - for pair in pairs: - if pair not in exchange._api.markets: - pairs_not_available.append(pair) - logger.info(f"Skipping pair {pair}...") - continue - for ticker_interval in timeframes: - pair_print = pair.replace('/', '_') - filename = f'{pair_print}-{ticker_interval}.json' - dl_file = dl_path.joinpath(filename) - if args.erase and dl_file.exists(): - logger.info( - f'Deleting existing data for pair {pair}, interval {ticker_interval}.') - dl_file.unlink() - - logger.info(f'Downloading pair {pair}, interval {ticker_interval}.') - download_pair_history(datadir=dl_path, exchange=exchange, - pair=pair, ticker_interval=str(ticker_interval), - timerange=timerange) - -except KeyboardInterrupt: - sys.exit("SIGINT received, aborting ...") - -finally: - if pairs_not_available: - logger.info( - f"Pairs [{','.join(pairs_not_available)}] not available " - f"on exchange {config['exchange']['name']}.") +sys.exit(1) From f7d5280f47ced954a57536cde7dc1cc6561f7203 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Aug 2019 06:48:34 +0200 Subject: [PATCH 0255/3421] Replace ARGS_DOWNLOADER with ARGS_DOWNLOAD_DATA --- freqtrade/configuration/arguments.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 8fa16318a..c45e3d7ba 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -30,7 +30,7 @@ ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"] ARGS_LIST_EXCHANGES = ["print_one_column"] -ARGS_DOWNLOADER = ["pairs", "pairs_file", "days", "exchange", "timeframes", "erase"] +ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "exchange", "timeframes", "erase"] ARGS_PLOT_DATAFRAME = (ARGS_COMMON + ARGS_STRATEGY + ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", @@ -131,4 +131,4 @@ class Arguments(object): help='Download backtesting data.' ) download_data_cmd.set_defaults(func=start_download_data) - self._build_args(optionlist=ARGS_DOWNLOADER, parser=download_data_cmd) + self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd) From a53e9e3a98cf440d1f14a9d55d907a4139e46b97 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Aug 2019 06:58:38 +0200 Subject: [PATCH 0256/3421] improve tests for download_module --- freqtrade/tests/test_utils.py | 50 +++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/freqtrade/tests/test_utils.py b/freqtrade/tests/test_utils.py index 8d0e76cde..003b3b286 100644 --- a/freqtrade/tests/test_utils.py +++ b/freqtrade/tests/test_utils.py @@ -2,6 +2,8 @@ import re from pathlib import Path from unittest.mock import MagicMock, PropertyMock +import pytest + from freqtrade.state import RunMode from freqtrade.tests.conftest import get_args, log_has, patch_exchange from freqtrade.utils import (setup_utils_configuration, start_download_data, @@ -58,15 +60,41 @@ def test_download_data(mocker, markets, caplog): "download-data", "--exchange", "binance", "--pairs", "ETH/BTC", "XRP/BTC", - "--erase" + "--erase", ] start_download_data(get_args(args)) assert dl_mock.call_count == 4 + assert dl_mock.call_args[1]['timerange'].starttype is None + assert dl_mock.call_args[1]['timerange'].stoptype is None assert log_has("Deleting existing data for pair ETH/BTC, interval 1m.", caplog) assert log_has("Downloading pair ETH/BTC, interval 1m.", caplog) +def test_download_data_days(mocker, markets, caplog): + dl_mock = mocker.patch('freqtrade.utils.download_pair_history', MagicMock()) + patch_exchange(mocker) + mocker.patch( + 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets) + ) + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + mocker.patch.object(Path, "unlink", MagicMock()) + + args = [ + "download-data", + "--exchange", "binance", + "--pairs", "ETH/BTC", "XRP/BTC", + "--days", "20", + ] + + start_download_data(get_args(args)) + + assert dl_mock.call_count == 4 + assert dl_mock.call_args[1]['timerange'].starttype == 'date' + + assert log_has("Downloading pair ETH/BTC, interval 1m.", caplog) + + def test_download_data_no_markets(mocker, caplog): dl_mock = mocker.patch('freqtrade.utils.download_pair_history', MagicMock()) patch_exchange(mocker) @@ -76,10 +104,28 @@ def test_download_data_no_markets(mocker, caplog): args = [ "download-data", "--exchange", "binance", - "--pairs", "ETH/BTC", "XRP/BTC" + "--pairs", "ETH/BTC", "XRP/BTC", ] start_download_data(get_args(args)) assert dl_mock.call_count == 0 assert log_has("Skipping pair ETH/BTC...", caplog) assert log_has("Pairs [ETH/BTC,XRP/BTC] not available on exchange binance.", caplog) + + +def test_download_data_keyboardInterrupt(mocker, caplog, markets): + dl_mock = mocker.patch('freqtrade.utils.download_pair_history', + MagicMock(side_effect=KeyboardInterrupt)) + patch_exchange(mocker) + mocker.patch( + 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets) + ) + args = [ + "download-data", + "--exchange", "binance", + "--pairs", "ETH/BTC", "XRP/BTC", + ] + with pytest.raises(SystemExit): + start_download_data(get_args(args)) + + assert dl_mock.call_count == 1 From 7a79b292e46dfab4e19e4635c8720bac8cde7676 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Aug 2019 07:05:42 +0200 Subject: [PATCH 0257/3421] Fix bug in pairs fallback resolving --- freqtrade/configuration/configuration.py | 3 ++- freqtrade/tests/test_configuration.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index c51153f4b..676b0c594 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -380,7 +380,7 @@ class Configuration(object): config['pairs'].sort() return - if "config" in self.args: + if "config" in self.args and self.args.config: logger.info("Using pairlist from configuration.") config['pairs'] = config.get('exchange', {}).get('pair_whitelist') else: @@ -388,3 +388,4 @@ class Configuration(object): pairs_file = Path(config['datadir']) / "pairs.json" if pairs_file.exists(): config['pairs'] = json_load(pairs_file) + config['pairs'].sort() diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index c351b9b72..b6e8a76d9 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -792,3 +792,21 @@ def test_pairlist_resolving_with_config_pl_not_exists(mocker, default_conf): with pytest.raises(OperationalException, match=r"No pairs file found with path.*"): configuration = Configuration(args) configuration.get_config() + + +def test_pairlist_resolving_fallback(mocker): + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + mocker.patch("freqtrade.configuration.configuration.json_load", + MagicMock(return_value=['XRP/BTC', 'ETH/BTC'])) + arglist = [ + 'download-data', + '--exchange', 'binance' + ] + + args = Arguments(arglist, '').get_parsed_arg() + + configuration = Configuration(args) + config = configuration.get_config() + + assert config['pairs'] == ['ETH/BTC', 'XRP/BTC'] + assert config['exchange']['name'] == 'binance' From 08fa5136e11843c7ea3da2c464f1a0e77d921f03 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Aug 2019 07:19:46 +0200 Subject: [PATCH 0258/3421] use copy of minimal_config ... --- freqtrade/configuration/configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 676b0c594..75319ac47 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -54,7 +54,7 @@ class Configuration(object): config: Dict[str, Any] = {} if not files: - return constants.MINIMAL_CONFIG + return constants.MINIMAL_CONFIG.copy() # We expect here a list of config filenames for path in files: From 84a0f9ea42518d9e1dced4e027044365ec00a01c Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 17 Aug 2019 11:43:36 +0300 Subject: [PATCH 0259/3421] get_pair_dataframe helper method added --- freqtrade/data/dataprovider.py | 46 ++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index b87589df7..e806f5aa7 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -44,36 +44,50 @@ class DataProvider(): def ohlcv(self, pair: str, ticker_interval: str = None, copy: bool = True) -> DataFrame: """ - get ohlcv data for the given pair as DataFrame - Please check `available_pairs` to verify which pairs are currently cached. + Get ohlcv data for the given pair as DataFrame + Please check `self.available_pairs` to verify which pairs are currently cached. :param pair: pair to get the data for - :param ticker_interval: ticker_interval to get pair for - :param copy: copy dataframe before returning. - Use false only for RO operations (where the dataframe is not modified) + :param ticker_interval: ticker interval to get data for + :param copy: copy dataframe before returning if True. + Use False only for read-only operations (where the dataframe is not modified) """ if self.runmode in (RunMode.DRY_RUN, RunMode.LIVE): - if ticker_interval: - pairtick = (pair, ticker_interval) - else: - pairtick = (pair, self._config['ticker_interval']) + pairtick = (pair, ticker_interval or self._config['ticker_interval']) + if pairtick in self.available_pairs: + return self._exchange.klines(pairtick, copy=copy) - return self._exchange.klines(pairtick, copy=copy) - else: - return DataFrame() + return DataFrame() - def historic_ohlcv(self, pair: str, ticker_interval: str) -> DataFrame: + def historic_ohlcv(self, pair: str, ticker_interval: str = None) -> DataFrame: """ - get stored historic ohlcv data + Get stored historic ohlcv data :param pair: pair to get the data for - :param ticker_interval: ticker_interval to get pair for + :param ticker_interval: ticker interval to get data for """ return load_pair_history(pair=pair, - ticker_interval=ticker_interval, + ticker_interval=ticker_interval or self._config['ticker_interval'], refresh_pairs=False, datadir=Path(self._config['datadir']) if self._config.get( 'datadir') else None ) + def get_pair_dataframe(self, pair: str, ticker_interval: str = None) -> DataFrame: + """ + Return pair ohlcv data, either live or cached historical -- depending + on the runmode. + :param pair: pair to get the data for + :param ticker_interval: ticker interval to get data for + """ + if self.runmode in (RunMode.DRY_RUN, RunMode.LIVE): + # Get live ohlcv data. + data = self.ohlcv(pair=pair, ticker_interval=ticker_interval) + else: + # Get historic ohlcv data (cached on disk). + data = self.historic_ohlcv(pair=pair, ticker_interval=ticker_interval) + if len(data) == 0: + logger.warning(f"No data found for pair {pair}") + return data + def ticker(self, pair: str): """ Return last ticker data From cda912bd8cc060b09168b68194b3a042b8f879ab Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 17 Aug 2019 12:59:27 +0300 Subject: [PATCH 0260/3421] test added --- freqtrade/tests/data/test_dataprovider.py | 33 +++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/freqtrade/tests/data/test_dataprovider.py b/freqtrade/tests/data/test_dataprovider.py index 993f0b59b..54aab7052 100644 --- a/freqtrade/tests/data/test_dataprovider.py +++ b/freqtrade/tests/data/test_dataprovider.py @@ -51,6 +51,39 @@ def test_historic_ohlcv(mocker, default_conf, ticker_history): assert historymock.call_args_list[0][1]["ticker_interval"] == "5m" +def test_get_pair_dataframe(mocker, default_conf, ticker_history): + default_conf["runmode"] = RunMode.DRY_RUN + ticker_interval = default_conf["ticker_interval"] + exchange = get_patched_exchange(mocker, default_conf) + exchange._klines[("XRP/BTC", ticker_interval)] = ticker_history + exchange._klines[("UNITTEST/BTC", ticker_interval)] = ticker_history + dp = DataProvider(default_conf, exchange) + assert dp.runmode == RunMode.DRY_RUN + assert ticker_history.equals(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval)) + assert isinstance(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval), DataFrame) + assert dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval) is not ticker_history + assert not dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval).empty + assert dp.get_pair_dataframe("NONESENSE/AAA", ticker_interval).empty + + # Test with and without parameter + assert dp.get_pair_dataframe("UNITTEST/BTC", + ticker_interval).equals(dp.get_pair_dataframe("UNITTEST/BTC")) + + default_conf["runmode"] = RunMode.LIVE + dp = DataProvider(default_conf, exchange) + assert dp.runmode == RunMode.LIVE + assert isinstance(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval), DataFrame) + assert dp.get_pair_dataframe("NONESENSE/AAA", ticker_interval).empty + + historymock = MagicMock(return_value=ticker_history) + mocker.patch("freqtrade.data.dataprovider.load_pair_history", historymock) + default_conf["runmode"] = RunMode.BACKTEST + dp = DataProvider(default_conf, exchange) + assert dp.runmode == RunMode.BACKTEST + assert isinstance(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval), DataFrame) + # assert dp.get_pair_dataframe("NONESENSE/AAA", ticker_interval).empty + + def test_available_pairs(mocker, default_conf, ticker_history): exchange = get_patched_exchange(mocker, default_conf) From fce3d7586f320b1fc391d6a52b757f54ed3438d3 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sat, 17 Aug 2019 15:13:39 +0000 Subject: [PATCH 0261/3421] Bump pytest from 5.0.1 to 5.1.0 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.0.1 to 5.1.0. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.0.1...5.1.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 03b37417e..6436c60e4 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ flake8==3.7.8 flake8-type-annotations==0.1.0 flake8-tidy-imports==2.0.0 mypy==0.720 -pytest==5.0.1 +pytest==5.1.0 pytest-asyncio==0.10.0 pytest-cov==2.7.1 pytest-mock==1.10.4 From 4ce3cc66d5ea41be0bfbf4c6a1a1b64c5117efd7 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sat, 17 Aug 2019 15:14:01 +0000 Subject: [PATCH 0262/3421] Bump sqlalchemy from 1.3.6 to 1.3.7 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.6 to 1.3.7. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 651be7611..91da6e45c 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.18.1043 -SQLAlchemy==1.3.6 +SQLAlchemy==1.3.7 python-telegram-bot==11.1.0 arrow==0.14.5 cachetools==3.1.1 From e0335705b2a95387f32d692f6417f55ccaf070b3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Aug 2019 17:19:02 +0200 Subject: [PATCH 0263/3421] Add dependabot config yaml --- .dependabot/config.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .dependabot/config.yml diff --git a/.dependabot/config.yml b/.dependabot/config.yml new file mode 100644 index 000000000..66b91e99f --- /dev/null +++ b/.dependabot/config.yml @@ -0,0 +1,17 @@ +version: 1 + +update_configs: + - package_manager: "python" + directory: "/" + update_schedule: "weekly" + allowed_updates: + - match: + update_type: "all" + target_branch: "develop" + + - package_manager: "docker" + directory: "/" + update_schedule: "daily" + allowed_updates: + - match: + update_type: "all" From 9143ea13adbeeee2fad130debaf1d0ebbd9e8a2c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sat, 17 Aug 2019 15:26:07 +0000 Subject: [PATCH 0264/3421] Bump ccxt from 1.18.1043 to 1.18.1063 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1043 to 1.18.1063. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.18.1043...1.18.1063) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 91da6e45c..4666fc053 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.1043 +ccxt==1.18.1063 SQLAlchemy==1.3.7 python-telegram-bot==11.1.0 arrow==0.14.5 From 351740fc80761176891fb7bbe463672c540e8384 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Aug 2019 17:27:14 +0200 Subject: [PATCH 0265/3421] Change pyup to every month (should ideally not find anything ...) --- .pyup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pyup.yml b/.pyup.yml index b1b721113..7ab3e5eca 100644 --- a/.pyup.yml +++ b/.pyup.yml @@ -14,7 +14,7 @@ pin: True # update schedule # default: empty # allowed: "every day", "every week", .. -schedule: "every week" +schedule: "every month" search: False From 0e87cc8c84c72a75d7889f02fb584f46036400b0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Aug 2019 19:30:03 +0200 Subject: [PATCH 0266/3421] Remove pyup.yml --- .pyup.yml | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 .pyup.yml diff --git a/.pyup.yml b/.pyup.yml deleted file mode 100644 index 7ab3e5eca..000000000 --- a/.pyup.yml +++ /dev/null @@ -1,37 +0,0 @@ -# autogenerated pyup.io config file -# see https://pyup.io/docs/configuration/ for all available options - -# configure updates globally -# default: all -# allowed: all, insecure, False -update: all - -# configure dependency pinning globally -# default: True -# allowed: True, False -pin: True - -# update schedule -# default: empty -# allowed: "every day", "every week", .. -schedule: "every month" - - -search: False -# Specify requirement files by hand, default is empty -# default: empty -# allowed: list -requirements: - - requirements.txt - - requirements-dev.txt - - requirements-plot.txt - - requirements-common.txt - - -# configure the branch prefix the bot is using -# default: pyup- -branch_prefix: pyup/ - -# allow to close stale PRs -# default: True -close_prs: True From 7fa6d804ce5a7352ec92f6114279acc90118aab6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Aug 2019 19:48:55 +0200 Subject: [PATCH 0267/3421] Add note explaining how / when docker images are rebuild --- docs/docker.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/docker.md b/docs/docker.md index 615d31796..923dec1e2 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -26,6 +26,10 @@ To update the image, simply run the above commands again and restart your runnin Should you require additional libraries, please [build the image yourself](#build-your-own-docker-image). +!!! Note Docker image update frequency + The official docker images with tags `master`, `develop` and `latest` are automatically rebuild once a week to keep the base image uptodate. + In addition to that, every merge to `develop` will trigger a rebuild for `develop` and `latest`. + ### Prepare the configuration files Even though you will use docker, you'll still need some files from the github repository. From 2cffc3228a0e12ec1667c0f17c8ede0bd286a541 Mon Sep 17 00:00:00 2001 From: Jonathan Raviotta Date: Sun, 11 Aug 2019 12:52:37 -0400 Subject: [PATCH 0268/3421] split example notebooks --- .gitignore | 9 +- docs/data-analysis.md | 161 +++++++--- .../notebooks/jupyter_snippets_example.ipynb | 289 ++++++++++++++++++ ....ipynb => strategy_analysis_example.ipynb} | 215 ++++++------- 4 files changed, 514 insertions(+), 160 deletions(-) create mode 100644 user_data/notebooks/jupyter_snippets_example.ipynb rename user_data/notebooks/{analysis_example.ipynb => strategy_analysis_example.ipynb} (51%) diff --git a/.gitignore b/.gitignore index 3a9df9852..1664ad7eb 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,10 @@ config*.json .hyperopt logfile.txt hyperopt_trials.pickle -user_data/ +user_data/* +!user_data/notebooks +user_data/notebooks/* +!user_data/notebooks/*example.ipynb freqtrade-plot.html freqtrade-profit-plot.html @@ -80,7 +83,7 @@ docs/_build/ target/ # Jupyter Notebook -.ipynb_checkpoints +*.ipynb_checkpoints # pyenv .python-version @@ -94,4 +97,4 @@ target/ .mypy_cache/ #exceptions -!user_data/noteboks/*example.ipynb +!*.gitkeep diff --git a/docs/data-analysis.md b/docs/data-analysis.md index c89353cc8..8d4cc63c0 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -1,30 +1,96 @@ -# Analyzing bot data +# Analyzing bot data with Jupyter notebooks -You can analyze the results of backtests and trading history easily using Jupyter notebooks. A sample notebook is located at `user_data/notebooks/analysis_example.ipynb`. For usage instructions, see [jupyter.org](https://jupyter.org/documentation). +You can analyze the results of backtests and trading history easily using Jupyter notebooks. Sample notebooks are located at `user_data/notebooks/`. -*Pro tip - Don't forget to start a jupyter notbook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)* +## Pro tips -## Example snippets +* See [jupyter.org](https://jupyter.org/documentation) for usage instructions. +* Don't forget to start a jupyter notbook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)* +* Copy the example notebook so your changes don't get clobbered with the next freqtrade update. + +## Fine print + +Some tasks don't work especially well in notebooks. For example, anything using asyncronous exectution is a problem for Jupyter. Also, freqtrade's primary entry point is the shell cli, so using pure python in a notebook bypasses arguments that provide required parameters to functions. + +## Recommended workflow + +| Task | Tool | + --- | --- +Bot operations | CLI +Repetative tasks | shell scripts +Data analysis & visualization | Notebook + +1. Use the CLI to + * download historical data + * run a backtest + * run with real-time data + * export results + +1. Collect these actions in shell scripts + * save complicated commands with arguments + * execute mult-step operations + * automate testing strategies and prepareing data for analysis + +1. Use a notebook to + * import data + * munge and plot to generate insights + +## Example utility snippets for Jupyter notebooks + +### Change directory to root + +Jupyter notebooks execute from the notebook directory. The following snippet searches for the project root, so relative paths remain consistant. + +```python +# Change directory +# Modify this cell to insure that the output shows the correct path. +# Define all paths relative to the project root shown in the cell output +import os +from pathlib import Path + +project_root = "somedir/freqtrade" +i=0 +try: + os.chdirdir(project_root) + assert Path('LICENSE').is_file() +except: + while i<4 and (not Path('LICENSE').is_file()): + os.chdir(Path(Path.cwd(), '../')) + i+=1 + project_root = Path.cwd() +print(Path.cwd()) +``` + +### Watch project for changes to code + +This scans the project for changes to code before Jupyter runs cells. + +```python +# Reloads local code changes +%load_ext autoreload +%autoreload 2 +``` + +## Load existing objects into a Jupyter notebook + +These examples assume that you have already generated data using the cli. These examples will allow you to drill deeper into your results, and perform analysis which otherwise would make the output very difficult to digest due to information overload. ### Load backtest results into a pandas dataframe ```python -from freqtrade.data.btanalysis import load_backtest_data # Load backtest results +from freqtrade.data.btanalysis import load_backtest_data df = load_backtest_data("user_data/backtest_data/backtest-result.json") # Show value-counts per pair df.groupby("pair")["sell_reason"].value_counts() ``` -This will allow you to drill deeper into your backtest results, and perform analysis which otherwise would make the regular backtest-output very difficult to digest due to information overload. - ### Load live trading results into a pandas dataframe ``` python -from freqtrade.data.btanalysis import load_trades_from_db - # Fetch trades from database +from freqtrade.data.btanalysis import load_trades_from_db df = load_trades_from_db("sqlite:///tradesv3.sqlite") # Display results @@ -33,42 +99,61 @@ df.groupby("pair")["sell_reason"].value_counts() ### Load multiple configuration files -This option can be usefull to inspect the results of passing in multiple configs in case of problems +This option can be useful to inspect the results of passing in multiple configs ``` python +# Load config from multiple files from freqtrade.configuration import Configuration config = Configuration.from_files(["config1.json", "config2.json"]) -print(config) + +# Show the config in memory +import json +print(json.dumps(config, indent=1)) ``` -## Strategy debugging example +### Load exchange data to a pandas dataframe + +This loads candle data to a dataframe + +```python +# Load data using values passed to function +from pathlib import Path +from freqtrade.data.history import load_pair_history + +ticker_interval = "5m" +data_location = Path('user_data', 'data', 'bitrex') +pair = "BTC_USDT" +candles = load_pair_history(datadir=data_location, + ticker_interval=ticker_interval, + pair=pair) + +# Confirm success +print("Loaded " + str(len(candles)) + f" rows of data for {pair} from {data_location}") +display(candles.head()) +``` + +## Strategy debugging example Debugging a strategy can be time-consuming. FreqTrade offers helper functions to visualize raw data. -### Import requirements and define variables used in analyses +### Define variables used in analyses + +You can override strategy settings as demonstrated below. ```python -# Imports -from pathlib import Path -import os -from freqtrade.data.history import load_pair_history -from freqtrade.resolvers import StrategyResolver - -# You can override strategy settings as demonstrated below. # Customize these according to your needs. # Define some constants ticker_interval = "5m" # Name of the strategy class -strategy_name = 'AwesomeStrategy' +strategy_name = 'TestStrategy' # Path to user data user_data_dir = 'user_data' # Location of the strategy strategy_location = Path(user_data_dir, 'strategies') # Location of the data data_location = Path(user_data_dir, 'data', 'binance') -# Pair to analyze -# Only use one pair here +# Pair to analyze - Only use one pair here pair = "BTC_USDT" ``` @@ -76,12 +161,16 @@ pair = "BTC_USDT" ```python # Load data using values set above -bt_data = load_pair_history(datadir=Path(data_location), +from pathlib import Path +from freqtrade.data.history import load_pair_history + +candles = load_pair_history(datadir=data_location, ticker_interval=ticker_interval, pair=pair) # Confirm success -print(f"Loaded {len(bt_data)} rows of data for {pair} from {data_location}") +print("Loaded " + str(len(candles)) + f" rows of data for {pair} from {data_location}") +display(candles.head()) ``` ### Load and run strategy @@ -90,31 +179,27 @@ print(f"Loaded {len(bt_data)} rows of data for {pair} from {data_location}") ```python # Load strategy using values set above +from freqtrade.resolvers import StrategyResolver strategy = StrategyResolver({'strategy': strategy_name, 'user_data_dir': user_data_dir, 'strategy_path': strategy_location}).strategy # Generate buy/sell signals using strategy -df = strategy.analyze_ticker(bt_data, {'pair': pair}) +df = strategy.analyze_ticker(candles, {'pair': pair}) ``` ### Display the trade details * Note that using `data.head()` would also work, however most indicators have some "startup" data at the top of the dataframe. - -#### Some possible problems - -* Columns with NaN values at the end of the dataframe -* Columns used in `crossed*()` functions with completely different units - -#### Comparison with full backtest - -having 200 buy signals as output for one pair from `analyze_ticker()` does not necessarily mean that 200 trades will be made during backtesting. - -Assuming you use only one condition such as, `df['rsi'] < 30` as buy condition, this will generate multiple "buy" signals for each pair in sequence (until rsi returns > 29). -The bot will only buy on the first of these signals (and also only if a trade-slot ("max_open_trades") is still available), or on one of the middle signals, as soon as a "slot" becomes available. +* Some possible problems + * Columns with NaN values at the end of the dataframe + * Columns used in `crossed*()` functions with completely different units +* Comparison with full backtest + * having 200 buy signals as output for one pair from `analyze_ticker()` does not necessarily mean that 200 trades will be made during backtesting. + * Assuming you use only one condition such as, `df['rsi'] < 30` as buy condition, this will generate multiple "buy" signals for each pair in sequence (until rsi returns > 29). The bot will only buy on the first of these signals (and also only if a trade-slot ("max_open_trades") is still available), or on one of the middle signals, as soon as a "slot" becomes available. ```python + # Report results print(f"Generated {df['buy'].sum()} buy signals") data = df.set_index('date', drop=True) diff --git a/user_data/notebooks/jupyter_snippets_example.ipynb b/user_data/notebooks/jupyter_snippets_example.ipynb new file mode 100644 index 000000000..9d4ae467a --- /dev/null +++ b/user_data/notebooks/jupyter_snippets_example.ipynb @@ -0,0 +1,289 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Analyzing bot data with Jupyter notebooks \n", + "\n", + "You can analyze the results of backtests and trading history easily using Jupyter notebooks. A sample notebook is located at `user_data/notebooks/analysis_example.ipynb`. \n", + "\n", + "## Pro tips \n", + "\n", + "* See [jupyter.org](https://jupyter.org/documentation) for usage instructions.\n", + "* Don't forget to start a jupyter notbook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)*\n", + "* Copy the example notebook so your changes don't get clobbered with the next freqtrade update.\n", + "\n", + "## Fine print \n", + "\n", + "Some tasks don't work especially well in notebooks. For example, anything using asyncronous exectution is a problem for Jupyter. Also, freqtrade's primary entry point is the shell cli, so using pure python in a notebook bypasses arguments that provide required parameters to functions.\n", + "\n", + "## Recommended workflow \n", + "\n", + "| Task | Tool | \n", + " --- | --- \n", + "Bot operations | CLI \n", + "Repetative tasks | shell scripts\n", + "Data analysis & visualization | Notebook \n", + "\n", + "1. Use the CLI to\n", + " * download historical data\n", + " * run a backtest\n", + " * run with real-time data\n", + " * export results \n", + "\n", + "1. Collect these actions in shell scripts\n", + " * save complicated commands with arguments\n", + " * execute mult-step operations \n", + " * automate testing strategies and prepareing data for analysis\n", + "\n", + "1. Use a notebook to\n", + " * import data\n", + " * munge and plot to generate insights" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example utility snippets for Jupyter notebooks" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Change directory to root \n", + "\n", + "Jupyter notebooks execute from the notebook directory. The following snippet searches for the project root, so relative paths remain consistant." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Change directory\n", + "# Modify this cell to insure that the output shows the correct path.\n", + "# Define all paths relative to the project root shown in the cell output\n", + "import os\n", + "from pathlib import Path\n", + "\n", + "project_root = \"somedir/freqtrade\"\n", + "i=0\n", + "try:\n", + " os.chdirdir(project_root)\n", + " assert Path('LICENSE').is_file()\n", + "except:\n", + " while i<4 and (not Path('LICENSE').is_file()):\n", + " os.chdir(Path(Path.cwd(), '../'))\n", + " i+=1\n", + " project_root = Path.cwd()\n", + "print(Path.cwd())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Watch project for changes to code\n", + "This scans the project for changes to code before Jupyter runs cells." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Reloads local code changes\n", + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load existing objects into a Jupyter notebook\n", + "\n", + "These examples assume that you have already generated data using the cli. These examples will allow you to drill deeper into your results, and perform analysis which otherwise would make the output very difficult to digest due to information overload." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load backtest results into a pandas dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load backtest results\n", + "from freqtrade.data.btanalysis import load_backtest_data\n", + "df = load_backtest_data(\"user_data/backtest_data/backtest-result.json\")\n", + "\n", + "# Show value-counts per pair\n", + "df.groupby(\"pair\")[\"sell_reason\"].value_counts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load live trading results into a pandas dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Fetch trades from database\n", + "from freqtrade.data.btanalysis import load_trades_from_db\n", + "df = load_trades_from_db(\"sqlite:///tradesv3.sqlite\")\n", + "\n", + "# Display results\n", + "df.groupby(\"pair\")[\"sell_reason\"].value_counts()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load multiple configuration files\n", + "This option can be useful to inspect the results of passing in multiple configs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load config from multiple files\n", + "from freqtrade.configuration import Configuration\n", + "config = Configuration.from_files([\"config1.json\", \"config2.json\"])\n", + "\n", + "# Show the config in memory\n", + "import json\n", + "print(json.dumps(config, indent=1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load exchange data to a pandas dataframe\n", + "\n", + "This loads candle data to a dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Load data using values passed to function\n", + "from pathlib import Path\n", + "from freqtrade.data.history import load_pair_history\n", + "\n", + "ticker_interval = \"5m\"\n", + "data_location = Path('user_data', 'data', 'bitrex')\n", + "pair = \"BTC_USDT\"\n", + "candles = load_pair_history(datadir=data_location,\n", + " ticker_interval=ticker_interval,\n", + " pair=pair)\n", + "\n", + "# Confirm success\n", + "print(\"Loaded \" + str(len(candles)) + f\" rows of data for {pair} from {data_location}\")\n", + "display(candles.head())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data." + ] + } + ], + "metadata": { + "file_extension": ".py", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "mimetype": "text/x-python", + "name": "python", + "npconvert_exporter": "python", + "pygments_lexer": "ipython3", + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + }, + "version": 3 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/user_data/notebooks/analysis_example.ipynb b/user_data/notebooks/strategy_analysis_example.ipynb similarity index 51% rename from user_data/notebooks/analysis_example.ipynb rename to user_data/notebooks/strategy_analysis_example.ipynb index f5e2c12d7..2b8b74fe6 100644 --- a/user_data/notebooks/analysis_example.ipynb +++ b/user_data/notebooks/strategy_analysis_example.ipynb @@ -1,96 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Analyzing bot data\n", - "\n", - "You can analyze the results of backtests and trading history easily using Jupyter notebooks. \n", - "**Copy this file so your changes don't get clobbered with the next freqtrade update!** \n", - "For usage instructions, see [jupyter.org](https://jupyter.org/documentation). \n", - "*Pro tip - Don't forget to start a jupyter notbook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)*\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Imports\n", - "from pathlib import Path\n", - "import os\n", - "from freqtrade.data.history import load_pair_history\n", - "from freqtrade.resolvers import StrategyResolver\n", - "from freqtrade.data.btanalysis import load_backtest_data\n", - "from freqtrade.data.btanalysis import load_trades_from_db" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Change directory\n", - "# Define all paths relative to the project root shown in the cell output\n", - "try:\n", - " os.chdir(Path(Path.cwd(), '../..'))\n", - " print(Path.cwd())\n", - "except:\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example snippets" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load backtest results into a pandas dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load backtest results\n", - "df = load_backtest_data(\"user_data/backtest_data/backtest-result.json\")\n", - "\n", - "# Show value-counts per pair\n", - "df.groupby(\"pair\")[\"sell_reason\"].value_counts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load live trading results into a pandas dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Fetch trades from database\n", - "df = load_trades_from_db(\"sqlite:///tradesv3.sqlite\")\n", - "\n", - "# Display results\n", - "df.groupby(\"pair\")[\"sell_reason\"].value_counts()" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -104,7 +13,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Import requirements and define variables used in analyses" + "## Setup" ] }, { @@ -113,28 +22,51 @@ "metadata": {}, "outputs": [], "source": [ + "# Change directory\n", + "# Modify this cell to insure that the output shows the correct path.\n", + "# Define all paths relative to the project root shown in the cell output\n", + "import os\n", + "from pathlib import Path\n", + "\n", + "project_root = \"somedir/freqtrade\"\n", + "i=0\n", + "try:\n", + " os.chdirdir(project_root)\n", + " assert Path('LICENSE').is_file()\n", + "except:\n", + " while i<4 and (not Path('LICENSE').is_file()):\n", + " os.chdir(Path(Path.cwd(), '../'))\n", + " i+=1\n", + " project_root = Path.cwd()\n", + "print(Path.cwd())\n", + "\n", + "# Reloads local code changes\n", + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Customize these according to your needs.\n", + "\n", "# Define some constants\n", "ticker_interval = \"5m\"\n", "# Name of the strategy class\n", - "strategy_name = 'AwesomeStrategy'\n", + "strategy_name = 'TestStrategy'\n", "# Path to user data\n", "user_data_dir = 'user_data'\n", "# Location of the strategy\n", "strategy_location = Path(user_data_dir, 'strategies')\n", "# Location of the data\n", "data_location = Path(user_data_dir, 'data', 'binance')\n", - "# Pair to analyze \n", - "# Only use one pair here\n", + "# Pair to analyze - Only use one pair here\n", "pair = \"BTC_USDT\"" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load exchange data" - ] - }, { "cell_type": "code", "execution_count": null, @@ -142,35 +74,43 @@ "outputs": [], "source": [ "# Load data using values set above\n", - "bt_data = load_pair_history(datadir=Path(data_location),\n", + "from pathlib import Path\n", + "from freqtrade.data.history import load_pair_history\n", + "\n", + "candles = load_pair_history(datadir=data_location,\n", " ticker_interval=ticker_interval,\n", " pair=pair)\n", "\n", "# Confirm success\n", - "print(\"Loaded \" + str(len(bt_data)) + f\" rows of data for {pair} from {data_location}\")" + "print(\"Loaded \" + str(len(candles)) + f\" rows of data for {pair} from {data_location}\")\n", + "display(candles.head())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Load and run strategy\n", + "## Load and run strategy\n", "* Rerun each time the strategy file is changed" ] }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [], "source": [ "# Load strategy using values set above\n", + "from freqtrade.resolvers import StrategyResolver\n", "strategy = StrategyResolver({'strategy': strategy_name,\n", " 'user_data_dir': user_data_dir,\n", " 'strategy_path': strategy_location}).strategy\n", "\n", "# Generate buy/sell signals using strategy\n", - "df = strategy.analyze_ticker(bt_data, {'pair': pair})" + "df = strategy.analyze_ticker(candles, {'pair': pair})\n", + "df.tail()" ] }, { @@ -178,19 +118,14 @@ "metadata": {}, "source": [ "### Display the trade details\n", + "\n", "* Note that using `data.head()` would also work, however most indicators have some \"startup\" data at the top of the dataframe.\n", - "\n", - "#### Some possible problems\n", - "\n", - "* Columns with NaN values at the end of the dataframe\n", - "* Columns used in `crossed*()` functions with completely different units\n", - "\n", - "#### Comparison with full backtest\n", - "\n", - "having 200 buy signals as output for one pair from `analyze_ticker()` does not necessarily mean that 200 trades will be made during backtesting.\n", - "\n", - "Assuming you use only one condition such as, `df['rsi'] < 30` as buy condition, this will generate multiple \"buy\" signals for each pair in sequence (until rsi returns > 29).\n", - "The bot will only buy on the first of these signals (and also only if a trade-slot (\"max_open_trades\") is still available), or on one of the middle signals, as soon as a \"slot\" becomes available.\n" + "* Some possible problems\n", + " * Columns with NaN values at the end of the dataframe\n", + " * Columns used in `crossed*()` functions with completely different units\n", + "* Comparison with full backtest\n", + " * having 200 buy signals as output for one pair from `analyze_ticker()` does not necessarily mean that 200 trades will be made during backtesting.\n", + " * Assuming you use only one condition such as, `df['rsi'] < 30` as buy condition, this will generate multiple \"buy\" signals for each pair in sequence (until rsi returns > 29). The bot will only buy on the first of these signals (and also only if a trade-slot (\"max_open_trades\") is still available), or on one of the middle signals, as soon as a \"slot\" becomes available. \n" ] }, { @@ -236,6 +171,48 @@ "name": "python", "npconvert_exporter": "python", "pygments_lexer": "ipython3", + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + }, "version": 3 }, "nbformat": 4, From 5e440a4cdc6baa4ecadcc37593f373fe06aeb257 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 06:55:19 +0200 Subject: [PATCH 0269/3421] Improve docs to point to `freqtrade download-data` --- docs/backtesting.md | 2 +- docs/bot-usage.md | 16 ++++------------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index f666c5b49..543422fee 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -3,7 +3,7 @@ This page explains how to validate your strategy performance by using Backtesting. -## Getting data for backtesting / hyperopt +## Getting data for backtesting and hyperopt To download backtesting data (candles / OHLCV), we recommend using the `freqtrade download-data` command. diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 31c5812ad..2873f5e8f 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -184,19 +184,11 @@ optional arguments: result.json) ``` -### How to use **--refresh-pairs-cached** parameter? +### Getting historic data for backtesting -The first time your run Backtesting, it will take the pairs you have -set in your config file and download data from the Exchange. - -If for any reason you want to update your data set, you use -`--refresh-pairs-cached` to force Backtesting to update the data it has. - -!!! Note - Use it only if you want to update your data set. You will not be able to come back to the previous version. - -To test your strategy with latest data, we recommend continuing using -the parameter `-l` or `--live`. +The first time your run Backtesting, you will need to download some historic data first. +This can be accomplished by using `freqtrade download-data`. +Check the corresponding [help page section](backtesting.md#Getting-data-for-backtesting-and-hyperopt) for more details ## Hyperopt commands From 8a2a8ab8b5da8392857898684cf8d983e3cd1881 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 18 Aug 2019 12:47:19 +0300 Subject: [PATCH 0270/3421] docstring for ohlcv improved --- freqtrade/data/dataprovider.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index e806f5aa7..b67aba045 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -45,7 +45,7 @@ class DataProvider(): def ohlcv(self, pair: str, ticker_interval: str = None, copy: bool = True) -> DataFrame: """ Get ohlcv data for the given pair as DataFrame - Please check `self.available_pairs` to verify which pairs are currently cached. + Please use the `available_pairs` method to verify which pairs are currently cached. :param pair: pair to get the data for :param ticker_interval: ticker interval to get data for :param copy: copy dataframe before returning if True. From 310e4387065bf1407c8226a0bec9f79dc62e98ec Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 18 Aug 2019 12:55:31 +0300 Subject: [PATCH 0271/3421] logging message improved --- freqtrade/data/dataprovider.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index b67aba045..b904ba985 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -85,7 +85,7 @@ class DataProvider(): # Get historic ohlcv data (cached on disk). data = self.historic_ohlcv(pair=pair, ticker_interval=ticker_interval) if len(data) == 0: - logger.warning(f"No data found for pair {pair}") + logger.warning(f"No data found for ({pair}, {ticker_interval}).") return data def ticker(self, pair: str): From 407a3bca6222bd820d55656e73398dc4e6bef102 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 18 Aug 2019 13:00:37 +0300 Subject: [PATCH 0272/3421] implementation of ohlcv optimized --- freqtrade/data/dataprovider.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index b904ba985..5b71c21a8 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -52,11 +52,10 @@ class DataProvider(): Use False only for read-only operations (where the dataframe is not modified) """ if self.runmode in (RunMode.DRY_RUN, RunMode.LIVE): - pairtick = (pair, ticker_interval or self._config['ticker_interval']) - if pairtick in self.available_pairs: - return self._exchange.klines(pairtick, copy=copy) - - return DataFrame() + return self._exchange.klines((pair, ticker_interval or self._config['ticker_interval']), + copy=copy) + else: + return DataFrame() def historic_ohlcv(self, pair: str, ticker_interval: str = None) -> DataFrame: """ From d300964691977d34bc3618a8e75bb48b6ce863ae Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 18 Aug 2019 13:06:21 +0300 Subject: [PATCH 0273/3421] code formatting in test_dataprovider.py --- freqtrade/tests/data/test_dataprovider.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/freqtrade/tests/data/test_dataprovider.py b/freqtrade/tests/data/test_dataprovider.py index 54aab7052..2272f69a3 100644 --- a/freqtrade/tests/data/test_dataprovider.py +++ b/freqtrade/tests/data/test_dataprovider.py @@ -13,6 +13,7 @@ def test_ohlcv(mocker, default_conf, ticker_history): exchange = get_patched_exchange(mocker, default_conf) exchange._klines[("XRP/BTC", ticker_interval)] = ticker_history exchange._klines[("UNITTEST/BTC", ticker_interval)] = ticker_history + dp = DataProvider(default_conf, exchange) assert dp.runmode == RunMode.DRY_RUN assert ticker_history.equals(dp.ohlcv("UNITTEST/BTC", ticker_interval)) @@ -37,11 +38,9 @@ def test_ohlcv(mocker, default_conf, ticker_history): def test_historic_ohlcv(mocker, default_conf, ticker_history): - historymock = MagicMock(return_value=ticker_history) mocker.patch("freqtrade.data.dataprovider.load_pair_history", historymock) - # exchange = get_patched_exchange(mocker, default_conf) dp = DataProvider(default_conf, None) data = dp.historic_ohlcv("UNITTEST/BTC", "5m") assert isinstance(data, DataFrame) @@ -57,6 +56,7 @@ def test_get_pair_dataframe(mocker, default_conf, ticker_history): exchange = get_patched_exchange(mocker, default_conf) exchange._klines[("XRP/BTC", ticker_interval)] = ticker_history exchange._klines[("UNITTEST/BTC", ticker_interval)] = ticker_history + dp = DataProvider(default_conf, exchange) assert dp.runmode == RunMode.DRY_RUN assert ticker_history.equals(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval)) @@ -86,12 +86,11 @@ def test_get_pair_dataframe(mocker, default_conf, ticker_history): def test_available_pairs(mocker, default_conf, ticker_history): exchange = get_patched_exchange(mocker, default_conf) - ticker_interval = default_conf["ticker_interval"] exchange._klines[("XRP/BTC", ticker_interval)] = ticker_history exchange._klines[("UNITTEST/BTC", ticker_interval)] = ticker_history - dp = DataProvider(default_conf, exchange) + dp = DataProvider(default_conf, exchange) assert len(dp.available_pairs) == 2 assert dp.available_pairs == [ ("XRP/BTC", ticker_interval), From acf1e734ecb71ad79a0bcc84dc55964d36530a4c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 15:09:44 +0200 Subject: [PATCH 0274/3421] Adapt lg_has calls to new standard --- freqtrade/tests/test_configuration.py | 2 +- freqtrade/tests/test_utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 083be3e6e..9641d0a51 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -632,7 +632,7 @@ def test_create_userdata_dir(mocker, default_conf, caplog) -> None: x = create_userdata_dir('/tmp/bar', create_dir=True) assert md.call_count == 7 assert md.call_args[1]['parents'] is False - assert log_has('Created user-data directory: /tmp/bar', caplog.record_tuples) + assert log_has('Created user-data directory: /tmp/bar', caplog) assert isinstance(x, Path) assert str(x) == "/tmp/bar" diff --git a/freqtrade/tests/test_utils.py b/freqtrade/tests/test_utils.py index 2bbece33f..8e364f3e5 100644 --- a/freqtrade/tests/test_utils.py +++ b/freqtrade/tests/test_utils.py @@ -53,7 +53,7 @@ def test_create_datadir_failed(caplog): ] with pytest.raises(SystemExit): start_create_userdir(get_args(args)) - assert log_has("`create-userdir` requires --userdir to be set.", caplog.record_tuples) + assert log_has("`create-userdir` requires --userdir to be set.", caplog) def test_create_datadir(caplog, mocker): From 8e96ac876597b686e66df3e4a238f324a9be95d8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 15:45:30 +0200 Subject: [PATCH 0275/3421] Split exception tests for create_order --- freqtrade/tests/exchange/test_exchange.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index 6b833054d..123f1fcfd 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -779,7 +779,13 @@ def test_sell_prod(default_conf, mocker, exchange_name): with pytest.raises(DependencyException): api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) - exchange.sell(pair='ETH/BTC', ordertype=order_type, amount=1, rate=200) + exchange.sell(pair='ETH/BTC', ordertype='limit', amount=1, rate=200) + + # Market orders don't require price, so the behaviour is slightly different + with pytest.raises(DependencyException): + api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) + exchange.sell(pair='ETH/BTC', ordertype='market', amount=1, rate=200) with pytest.raises(TemporaryError): api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No Connection")) From ee7ba96e8524558d8d7ed068fb939d18aac0a711 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 15:46:10 +0200 Subject: [PATCH 0276/3421] Don't do calculations in exception handlers when one element can be None fixes #2011 --- freqtrade/exchange/exchange.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 5119e0fcd..67a79178f 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -408,12 +408,12 @@ class Exchange(object): except ccxt.InsufficientFunds as e: raise DependencyException( f'Insufficient funds to create {ordertype} {side} order on market {pair}.' - f'Tried to {side} amount {amount} at rate {rate} (total {rate * amount}).' + f'Tried to {side} amount {amount} at rate {rate}.' f'Message: {e}') from e except ccxt.InvalidOrder as e: raise DependencyException( f'Could not create {ordertype} {side} order on market {pair}.' - f'Tried to {side} amount {amount} at rate {rate} (total {rate * amount}).' + f'Tried to {side} amount {amount} at rate {rate}.' f'Message: {e}') from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( From 045ac1019e37359bf6d04f9989af50493122b434 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 15:48:20 +0200 Subject: [PATCH 0277/3421] Split test for buy-orders too --- freqtrade/exchange/exchange.py | 2 +- freqtrade/tests/exchange/test_exchange.py | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 67a79178f..6e281b9b2 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -472,7 +472,7 @@ class Exchange(object): order = self.create_order(pair, ordertype, 'sell', amount, rate, params) logger.info('stoploss limit order added for %s. ' - 'stop price: %s. limit: %s' % (pair, stop_price, rate)) + 'stop price: %s. limit: %s', pair, stop_price, rate) return order @retrier diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index 123f1fcfd..397326258 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -656,7 +656,13 @@ def test_buy_prod(default_conf, mocker, exchange_name): with pytest.raises(DependencyException): api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) - exchange.buy(pair='ETH/BTC', ordertype=order_type, + exchange.buy(pair='ETH/BTC', ordertype='limit', + amount=1, rate=200, time_in_force=time_in_force) + + with pytest.raises(DependencyException): + api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) + exchange.buy(pair='ETH/BTC', ordertype='market', amount=1, rate=200, time_in_force=time_in_force) with pytest.raises(TemporaryError): From ddfadbb69ee2bf18191d94d053d3ef2301286030 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 16:10:10 +0200 Subject: [PATCH 0278/3421] Validate configuration consistency after loading strategy --- freqtrade/configuration/__init__.py | 1 + .../{json_schema.py => config_validation.py} | 35 ++++++++++++++++- freqtrade/configuration/configuration.py | 38 +++---------------- freqtrade/freqtradebot.py | 2 + freqtrade/tests/test_configuration.py | 14 +++---- 5 files changed, 47 insertions(+), 43 deletions(-) rename freqtrade/configuration/{json_schema.py => config_validation.py} (53%) diff --git a/freqtrade/configuration/__init__.py b/freqtrade/configuration/__init__.py index 7b476d173..ac59421a7 100644 --- a/freqtrade/configuration/__init__.py +++ b/freqtrade/configuration/__init__.py @@ -1,3 +1,4 @@ from freqtrade.configuration.arguments import Arguments # noqa: F401 from freqtrade.configuration.timerange import TimeRange # noqa: F401 from freqtrade.configuration.configuration import Configuration # noqa: F401 +from freqtrade.configuration.config_validation import validate_config_consistency # noqa: F401 diff --git a/freqtrade/configuration/json_schema.py b/freqtrade/configuration/config_validation.py similarity index 53% rename from freqtrade/configuration/json_schema.py rename to freqtrade/configuration/config_validation.py index 4c6f4a4a0..bda60f90b 100644 --- a/freqtrade/configuration/json_schema.py +++ b/freqtrade/configuration/config_validation.py @@ -4,7 +4,7 @@ from typing import Any, Dict from jsonschema import Draft4Validator, validators from jsonschema.exceptions import ValidationError, best_match -from freqtrade import constants +from freqtrade import constants, OperationalException logger = logging.getLogger(__name__) @@ -51,3 +51,36 @@ def validate_config_schema(conf: Dict[str, Any]) -> Dict[str, Any]: raise ValidationError( best_match(Draft4Validator(constants.CONF_SCHEMA).iter_errors(conf)).message ) + + +def validate_config_consistency(conf: Dict[str, Any]) -> None: + """ + Validate the configuration consistency. + Should be ran after loading both configuration and strategy, + since strategies can set certain configuration settings too. + :param conf: Config in JSON format + :return: Returns None if everything is ok, otherwise throw an OperationalException + """ + # validating trailing stoploss + _validate_trailing_stoploss(conf) + + +def _validate_trailing_stoploss(conf: Dict[str, Any]) -> None: + + # Skip if trailing stoploss is not activated + if not conf.get('trailing_stop', False): + return + + tsl_positive = float(conf.get('trailing_stop_positive', 0)) + tsl_offset = float(conf.get('trailing_stop_positive_offset', 0)) + tsl_only_offset = conf.get('trailing_only_offset_is_reached', False) + + if tsl_only_offset: + if tsl_positive == 0.0: + raise OperationalException( + f'The config trailing_only_offset_is_reached needs ' + 'trailing_stop_positive_offset to be more than 0 in your config.') + if tsl_positive > 0 and 0 < tsl_offset <= tsl_positive: + raise OperationalException( + f'The config trailing_stop_positive_offset needs ' + 'to be greater than trailing_stop_positive_offset in your config.') diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index c95246fc0..486857153 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -6,10 +6,11 @@ import warnings from argparse import Namespace from typing import Any, Callable, Dict, List, Optional -from freqtrade import OperationalException, constants +from freqtrade import constants from freqtrade.configuration.check_exchange import check_exchange from freqtrade.configuration.create_datadir import create_datadir -from freqtrade.configuration.json_schema import validate_config_schema +from freqtrade.configuration.config_validation import (validate_config_schema, + validate_config_consistency) from freqtrade.configuration.load_config import load_config_file from freqtrade.loggers import setup_logging from freqtrade.misc import deep_merge_dicts @@ -77,8 +78,6 @@ class Configuration(object): # Load all configs config: Dict[str, Any] = Configuration.from_files(self.args.config) - self._validate_config_consistency(config) - self._process_common_options(config) self._process_optimize_options(config) @@ -87,6 +86,8 @@ class Configuration(object): self._process_runmode(config) + validate_config_consistency(config) + return config def _process_logging_options(self, config: Dict[str, Any]) -> None: @@ -285,35 +286,6 @@ class Configuration(object): config.update({'runmode': self.runmode}) - def _validate_config_consistency(self, conf: Dict[str, Any]) -> None: - """ - Validate the configuration consistency - :param conf: Config in JSON format - :return: Returns None if everything is ok, otherwise throw an OperationalException - """ - # validating trailing stoploss - self._validate_trailing_stoploss(conf) - - def _validate_trailing_stoploss(self, conf: Dict[str, Any]) -> None: - - # Skip if trailing stoploss is not activated - if not conf.get('trailing_stop', False): - return - - tsl_positive = float(conf.get('trailing_stop_positive', 0)) - tsl_offset = float(conf.get('trailing_stop_positive_offset', 0)) - tsl_only_offset = conf.get('trailing_only_offset_is_reached', False) - - if tsl_only_offset: - if tsl_positive == 0.0: - raise OperationalException( - f'The config trailing_only_offset_is_reached needs ' - 'trailing_stop_positive_offset to be more than 0 in your config.') - if tsl_positive > 0 and 0 < tsl_offset <= tsl_positive: - raise OperationalException( - f'The config trailing_stop_positive_offset needs ' - 'to be greater than trailing_stop_positive_offset in your config.') - def _args_to_config(self, config: Dict[str, Any], argname: str, logstring: str, logfun: Optional[Callable] = None, deprecated_msg: Optional[str] = None) -> None: diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 68b45d96f..af29604f5 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -16,6 +16,7 @@ from freqtrade import (DependencyException, OperationalException, InvalidOrderEx from freqtrade.data.converter import order_book_to_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.edge import Edge +from freqtrade.configuration import validate_config_consistency from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date from freqtrade.persistence import Trade from freqtrade.rpc import RPCManager, RPCMessageType @@ -50,6 +51,7 @@ class FreqtradeBot(object): self.config = config self.strategy: IStrategy = StrategyResolver(self.config).strategy + validate_config_consistency(config) self.rpc: RPCManager = RPCManager(self) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 8cbd02ece..3a0077ef2 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -2,7 +2,6 @@ import json import logging import warnings -from argparse import Namespace from copy import deepcopy from pathlib import Path from unittest.mock import MagicMock @@ -11,10 +10,10 @@ import pytest from jsonschema import Draft4Validator, ValidationError, validate from freqtrade import OperationalException, constants -from freqtrade.configuration import Arguments, Configuration +from freqtrade.configuration import Arguments, Configuration, validate_config_consistency from freqtrade.configuration.check_exchange import check_exchange +from freqtrade.configuration.config_validation import validate_config_schema from freqtrade.configuration.create_datadir import create_datadir -from freqtrade.configuration.json_schema import validate_config_schema from freqtrade.configuration.load_config import load_config_file from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL from freqtrade.loggers import _set_loggers @@ -625,21 +624,18 @@ def test_validate_tsl(default_conf): with pytest.raises(OperationalException, match=r'The config trailing_only_offset_is_reached needs ' 'trailing_stop_positive_offset to be more than 0 in your config.'): - configuration = Configuration(Namespace()) - configuration._validate_config_consistency(default_conf) + validate_config_consistency(default_conf) default_conf['trailing_stop_positive_offset'] = 0.01 default_conf['trailing_stop_positive'] = 0.015 with pytest.raises(OperationalException, match=r'The config trailing_stop_positive_offset needs ' 'to be greater than trailing_stop_positive_offset in your config.'): - configuration = Configuration(Namespace()) - configuration._validate_config_consistency(default_conf) + validate_config_consistency(default_conf) default_conf['trailing_stop_positive'] = 0.01 default_conf['trailing_stop_positive_offset'] = 0.015 - Configuration(Namespace()) - configuration._validate_config_consistency(default_conf) + validate_config_consistency(default_conf) def test_load_config_test_comments() -> None: From 611850bf91a343d056259f3bb6ab7bc9b683c59f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 16:19:24 +0200 Subject: [PATCH 0279/3421] Add edge/dynamic_whitelist validation --- freqtrade/configuration/config_validation.py | 16 ++++++++++++++++ freqtrade/tests/test_configuration.py | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index bda60f90b..92846b704 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -63,6 +63,7 @@ def validate_config_consistency(conf: Dict[str, Any]) -> None: """ # validating trailing stoploss _validate_trailing_stoploss(conf) + _validate_edge(conf) def _validate_trailing_stoploss(conf: Dict[str, Any]) -> None: @@ -84,3 +85,18 @@ def _validate_trailing_stoploss(conf: Dict[str, Any]) -> None: raise OperationalException( f'The config trailing_stop_positive_offset needs ' 'to be greater than trailing_stop_positive_offset in your config.') + + +def _validate_edge(conf: Dict[str, Any]) -> None: + """ + Edge and Dynamic whitelist should not both be enabled, since edge overrides dynamic whitelists. + """ + + if not conf.get('edge', {}).get('enabled'): + return + + if conf.get('pairlist', {}).get('method') == 'VolumePairList': + raise OperationalException( + "Edge and VolumePairList are incompatible, " + "Edge will override whatever pairs VolumePairlist selects." + ) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 3a0077ef2..19d2a28ee 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -638,6 +638,22 @@ def test_validate_tsl(default_conf): validate_config_consistency(default_conf) +def test_validate_edge(edge_conf): + edge_conf.update({"pairlist": { + "method": "VolumePairList", + }}) + + with pytest.raises(OperationalException, + match="Edge and VolumePairList are incompatible, " + "Edge will override whatever pairs VolumePairlist selects."): + validate_config_consistency(edge_conf) + + edge_conf.update({"pairlist": { + "method": "StaticPairList", + }}) + validate_config_consistency(edge_conf) + + def test_load_config_test_comments() -> None: """ Load config with comments From b6462cd51f707f4160fa77d8bf2eb36c73a7695e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 16:22:18 +0200 Subject: [PATCH 0280/3421] Add explaining comment --- freqtrade/freqtradebot.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index af29604f5..e5ecef8bf 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -51,6 +51,8 @@ class FreqtradeBot(object): self.config = config self.strategy: IStrategy = StrategyResolver(self.config).strategy + + # Check config consistency here since strategies can set certain options validate_config_consistency(config) self.rpc: RPCManager = RPCManager(self) From d785d7637085edcaf382a26df2d71cb8612f6a7e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 18:06:36 +0200 Subject: [PATCH 0281/3421] make VolumePairlist less verbose no need to print the full whitelist on every iteration --- freqtrade/constants.py | 1 - freqtrade/pairlist/VolumePairList.py | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 9b73adcfe..bd3ba21fd 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -5,7 +5,6 @@ bot constants """ DEFAULT_CONFIG = 'config.json' DEFAULT_EXCHANGE = 'bittrex' -DYNAMIC_WHITELIST = 20 # pairs PROCESS_THROTTLE_SECS = 5 # sec DEFAULT_TICKER_INTERVAL = 5 # min HYPEROPT_EPOCH = 100 # epochs diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 9a2e2eac4..b9b7977ab 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -55,7 +55,6 @@ class VolumePairList(IPairList): # Generate dynamic whitelist self._whitelist = self._gen_pair_whitelist( self._config['stake_currency'], self._sort_key)[:self._number_pairs] - logger.info(f"Searching pairs: {self._whitelist}") @cached(TTLCache(maxsize=1, ttl=1800)) def _gen_pair_whitelist(self, base_currency: str, key: str) -> List[str]: @@ -92,4 +91,6 @@ class VolumePairList(IPairList): valid_tickers.remove(t) pairs = [s['symbol'] for s in valid_tickers] + logger.info(f"Searching pairs: {self._whitelist}") + return pairs From ea4db0ffb6dd0007b4df471a3e3f8f90d9e3599d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 18:06:57 +0200 Subject: [PATCH 0282/3421] Pass object-name to loader to fix logging --- freqtrade/resolvers/iresolver.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 841c3cf43..310c54015 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -29,7 +29,8 @@ class IResolver(object): """ # Generate spec based on absolute path - spec = importlib.util.spec_from_file_location('unknown', str(module_path)) + # Pass object_name as first argument to have logging print a reasonable name. + spec = importlib.util.spec_from_file_location(object_name, str(module_path)) module = importlib.util.module_from_spec(spec) try: spec.loader.exec_module(module) # type: ignore # importlib does not use typehints From a4ede02cedd22ddc1147f1fcffd224b554af970d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 19:38:23 +0200 Subject: [PATCH 0283/3421] Gracefully handle problems with dry-run orders --- freqtrade/exchange/exchange.py | 9 +++++++-- freqtrade/tests/exchange/test_exchange.py | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 5119e0fcd..7ae40381d 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -696,8 +696,13 @@ class Exchange(object): @retrier def get_order(self, order_id: str, pair: str) -> Dict: if self._config['dry_run']: - order = self._dry_run_open_orders[order_id] - return order + try: + order = self._dry_run_open_orders[order_id] + return order + except KeyError as e: + # Gracefully handle errors with dry-run orders. + raise InvalidOrderException( + f'Tried to get an invalid dry-run-order (id: {order_id}). Message: {e}') from e try: return self._api.fetch_order(order_id, pair) except ccxt.InvalidOrder as e: diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index 6b833054d..6a7dfa04b 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -1328,6 +1328,9 @@ def test_get_order(default_conf, mocker, exchange_name): print(exchange.get_order('X', 'TKN/BTC')) assert exchange.get_order('X', 'TKN/BTC').myid == 123 + with pytest.raises(InvalidOrderException, match=r'Tried to get an invalid dry-run-order.*'): + exchange.get_order('Y', 'TKN/BTC') + default_conf['dry_run'] = False api_mock = MagicMock() api_mock.fetch_order = MagicMock(return_value=456) From 9ad9ce0da1b46a0822cba4f100257a177211530f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2019 10:52:53 +0000 Subject: [PATCH 0284/3421] Bump ccxt from 1.18.1063 to 1.18.1068 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1063 to 1.18.1068. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.18.1063...1.18.1068) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 4666fc053..3d80c3ef5 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.1063 +ccxt==1.18.1068 SQLAlchemy==1.3.7 python-telegram-bot==11.1.0 arrow==0.14.5 From 70b1a05d976aad8a7c808ba7ee8a27156081b7b8 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 20 Aug 2019 01:32:02 +0300 Subject: [PATCH 0285/3421] example in the docs changed --- docs/strategy-customization.md | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 0d08bdd02..d71ebfded 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -274,27 +274,24 @@ Please always check the mode of operation to select the correct method to get da #### Possible options for DataProvider -- `available_pairs` - Property with tuples listing cached pairs with their intervals. (pair, interval) -- `ohlcv(pair, ticker_interval)` - Currently cached ticker data for all pairs in the whitelist, returns DataFrame or empty DataFrame -- `historic_ohlcv(pair, ticker_interval)` - Data stored on disk +- `available_pairs` - Property with tuples listing cached pairs with their intervals (pair, interval). +- `ohlcv(pair, ticker_interval)` - Currently cached ticker data for the pair, returns DataFrame or empty DataFrame. +- `historic_ohlcv(pair, ticker_interval)` - Returns historical data stored on disk. +- `get_pair_dataframe(pair, ticker_interval)` - This is a universal method, which returns either historical data (for backtesting) or cached live data (for the Dry-Run and Live-Run modes). - `runmode` - Property containing the current runmode. -#### ohlcv / historic_ohlcv +#### Example: fetch live ohlcv / historic data for the first informative pair ``` python if self.dp: - if self.dp.runmode in ('live', 'dry_run'): - if (f'{self.stake_currency}/BTC', self.ticker_interval) in self.dp.available_pairs: - data_eth = self.dp.ohlcv(pair='{self.stake_currency}/BTC', - ticker_interval=self.ticker_interval) - else: - # Get historic ohlcv data (cached on disk). - history_eth = self.dp.historic_ohlcv(pair='{self.stake_currency}/BTC', - ticker_interval='1h') + inf_pair, inf_timeframe = self.informative_pairs()[0] + informative = self.dp.get_pair_dataframe(pair=inf_pair, + ticker_interval=inf_timeframe) ``` !!! Warning Warning about backtesting - Be carefull when using dataprovider in backtesting. `historic_ohlcv()` provides the full time-range in one go, + Be carefull when using dataprovider in backtesting. `historic_ohlcv()` (and `get_pair_dataframe()` + for the backtesting runmode) provides the full time-range in one go, so please be aware of it and make sure to not "look into the future" to avoid surprises when running in dry/live mode). !!! Warning Warning in hyperopt From 8d1a575a9b975e1753d312fbf72d8e4f640354f1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 20 Aug 2019 06:39:28 +0200 Subject: [PATCH 0286/3421] Reword documentation --- docs/backtesting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 543422fee..3712fddce 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -5,7 +5,7 @@ Backtesting. ## Getting data for backtesting and hyperopt -To download backtesting data (candles / OHLCV), we recommend using the `freqtrade download-data` command. +To download backtesting data (candles / OHLCV) and hyperoptimization using the `freqtrade download-data` command. If no additional parameter is specified, freqtrade will download data for `"1m"` and `"5m"` timeframes. Exchange and pairs will come from `config.json` (if specified using `-c/--config`). Otherwise `--exchange` becomes mandatory. From 8cc477f3533aeebe1ded157298a415d2fbbcc719 Mon Sep 17 00:00:00 2001 From: Jonathan Raviotta Date: Tue, 20 Aug 2019 00:47:10 -0400 Subject: [PATCH 0287/3421] edits --- docs/data-analysis.md | 65 ++-- .../notebooks/jupyter_snippets_example.ipynb | 289 ------------------ .../notebooks/strategy_analysis_example.ipynb | 42 ++- 3 files changed, 60 insertions(+), 336 deletions(-) delete mode 100644 user_data/notebooks/jupyter_snippets_example.ipynb diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 8d4cc63c0..4387dd892 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -5,19 +5,19 @@ You can analyze the results of backtests and trading history easily using Jupyte ## Pro tips * See [jupyter.org](https://jupyter.org/documentation) for usage instructions. -* Don't forget to start a jupyter notbook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)* -* Copy the example notebook so your changes don't get clobbered with the next freqtrade update. +* Don't forget to start a Jupyter notebook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)* +* Copy the example notebook before use so your changes don't get clobbered with the next freqtrade update. ## Fine print -Some tasks don't work especially well in notebooks. For example, anything using asyncronous exectution is a problem for Jupyter. Also, freqtrade's primary entry point is the shell cli, so using pure python in a notebook bypasses arguments that provide required parameters to functions. +Some tasks don't work especially well in notebooks. For example, anything using asynchronous execution is a problem for Jupyter. Also, freqtrade's primary entry point is the shell cli, so using pure python in a notebook bypasses arguments that provide required objects and parameters to helper functions. You may need to set those values or create expected objects manually. ## Recommended workflow | Task | Tool | --- | --- Bot operations | CLI -Repetative tasks | shell scripts +Repetitive tasks | Shell scripts Data analysis & visualization | Notebook 1. Use the CLI to @@ -28,26 +28,26 @@ Data analysis & visualization | Notebook 1. Collect these actions in shell scripts * save complicated commands with arguments - * execute mult-step operations - * automate testing strategies and prepareing data for analysis + * execute multi-step operations + * automate testing strategies and preparing data for analysis 1. Use a notebook to - * import data + * visualize data * munge and plot to generate insights -## Example utility snippets for Jupyter notebooks +## Example utility snippets ### Change directory to root -Jupyter notebooks execute from the notebook directory. The following snippet searches for the project root, so relative paths remain consistant. +Jupyter notebooks execute from the notebook directory. The following snippet searches for the project root, so relative paths remain consistent. ```python -# Change directory -# Modify this cell to insure that the output shows the correct path. -# Define all paths relative to the project root shown in the cell output import os from pathlib import Path +# Change directory +# Modify this cell to insure that the output shows the correct path. +# Define all paths relative to the project root shown in the cell output project_root = "somedir/freqtrade" i=0 try: @@ -61,25 +61,16 @@ except: print(Path.cwd()) ``` -### Watch project for changes to code - -This scans the project for changes to code before Jupyter runs cells. - -```python -# Reloads local code changes -%load_ext autoreload -%autoreload 2 -``` - ## Load existing objects into a Jupyter notebook -These examples assume that you have already generated data using the cli. These examples will allow you to drill deeper into your results, and perform analysis which otherwise would make the output very difficult to digest due to information overload. +These examples assume that you have already generated data using the cli. They will allow you to drill deeper into your results, and perform analysis which otherwise would make the output very difficult to digest due to information overload. ### Load backtest results into a pandas dataframe ```python -# Load backtest results from freqtrade.data.btanalysis import load_backtest_data + +# Load backtest results df = load_backtest_data("user_data/backtest_data/backtest-result.json") # Show value-counts per pair @@ -89,8 +80,9 @@ df.groupby("pair")["sell_reason"].value_counts() ### Load live trading results into a pandas dataframe ``` python -# Fetch trades from database from freqtrade.data.btanalysis import load_trades_from_db + +# Fetch trades from database df = load_trades_from_db("sqlite:///tradesv3.sqlite") # Display results @@ -102,12 +94,13 @@ df.groupby("pair")["sell_reason"].value_counts() This option can be useful to inspect the results of passing in multiple configs ``` python -# Load config from multiple files +import json from freqtrade.configuration import Configuration + +# Load config from multiple files config = Configuration.from_files(["config1.json", "config2.json"]) # Show the config in memory -import json print(json.dumps(config, indent=1)) ``` @@ -116,10 +109,10 @@ print(json.dumps(config, indent=1)) This loads candle data to a dataframe ```python -# Load data using values passed to function from pathlib import Path from freqtrade.data.history import load_pair_history +# Load data using values passed to function ticker_interval = "5m" data_location = Path('user_data', 'data', 'bitrex') pair = "BTC_USDT" @@ -128,8 +121,8 @@ candles = load_pair_history(datadir=data_location, pair=pair) # Confirm success -print("Loaded " + str(len(candles)) + f" rows of data for {pair} from {data_location}") -display(candles.head()) +print(f"Loaded len(candles) rows of data for {pair} from {data_location}") +candles.head() ``` ## Strategy debugging example @@ -160,17 +153,17 @@ pair = "BTC_USDT" ### Load exchange data ```python -# Load data using values set above from pathlib import Path from freqtrade.data.history import load_pair_history +# Load data using values set above candles = load_pair_history(datadir=data_location, ticker_interval=ticker_interval, pair=pair) # Confirm success -print("Loaded " + str(len(candles)) + f" rows of data for {pair} from {data_location}") -display(candles.head()) +print(f"Loaded {len(candles)} rows of data for {pair} from {data_location}") +candles.head() ``` ### Load and run strategy @@ -178,8 +171,9 @@ display(candles.head()) * Rerun each time the strategy file is changed ```python -# Load strategy using values set above from freqtrade.resolvers import StrategyResolver + +# Load strategy using values set above strategy = StrategyResolver({'strategy': strategy_name, 'user_data_dir': user_data_dir, 'strategy_path': strategy_location}).strategy @@ -190,7 +184,7 @@ df = strategy.analyze_ticker(candles, {'pair': pair}) ### Display the trade details -* Note that using `data.head()` would also work, however most indicators have some "startup" data at the top of the dataframe. +* Note that using `data.tail()` is preferable to `data.head()` as most indicators have some "startup" data at the top of the dataframe. * Some possible problems * Columns with NaN values at the end of the dataframe * Columns used in `crossed*()` functions with completely different units @@ -199,7 +193,6 @@ df = strategy.analyze_ticker(candles, {'pair': pair}) * Assuming you use only one condition such as, `df['rsi'] < 30` as buy condition, this will generate multiple "buy" signals for each pair in sequence (until rsi returns > 29). The bot will only buy on the first of these signals (and also only if a trade-slot ("max_open_trades") is still available), or on one of the middle signals, as soon as a "slot" becomes available. ```python - # Report results print(f"Generated {df['buy'].sum()} buy signals") data = df.set_index('date', drop=True) diff --git a/user_data/notebooks/jupyter_snippets_example.ipynb b/user_data/notebooks/jupyter_snippets_example.ipynb deleted file mode 100644 index 9d4ae467a..000000000 --- a/user_data/notebooks/jupyter_snippets_example.ipynb +++ /dev/null @@ -1,289 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Analyzing bot data with Jupyter notebooks \n", - "\n", - "You can analyze the results of backtests and trading history easily using Jupyter notebooks. A sample notebook is located at `user_data/notebooks/analysis_example.ipynb`. \n", - "\n", - "## Pro tips \n", - "\n", - "* See [jupyter.org](https://jupyter.org/documentation) for usage instructions.\n", - "* Don't forget to start a jupyter notbook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)*\n", - "* Copy the example notebook so your changes don't get clobbered with the next freqtrade update.\n", - "\n", - "## Fine print \n", - "\n", - "Some tasks don't work especially well in notebooks. For example, anything using asyncronous exectution is a problem for Jupyter. Also, freqtrade's primary entry point is the shell cli, so using pure python in a notebook bypasses arguments that provide required parameters to functions.\n", - "\n", - "## Recommended workflow \n", - "\n", - "| Task | Tool | \n", - " --- | --- \n", - "Bot operations | CLI \n", - "Repetative tasks | shell scripts\n", - "Data analysis & visualization | Notebook \n", - "\n", - "1. Use the CLI to\n", - " * download historical data\n", - " * run a backtest\n", - " * run with real-time data\n", - " * export results \n", - "\n", - "1. Collect these actions in shell scripts\n", - " * save complicated commands with arguments\n", - " * execute mult-step operations \n", - " * automate testing strategies and prepareing data for analysis\n", - "\n", - "1. Use a notebook to\n", - " * import data\n", - " * munge and plot to generate insights" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example utility snippets for Jupyter notebooks" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Change directory to root \n", - "\n", - "Jupyter notebooks execute from the notebook directory. The following snippet searches for the project root, so relative paths remain consistant." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Change directory\n", - "# Modify this cell to insure that the output shows the correct path.\n", - "# Define all paths relative to the project root shown in the cell output\n", - "import os\n", - "from pathlib import Path\n", - "\n", - "project_root = \"somedir/freqtrade\"\n", - "i=0\n", - "try:\n", - " os.chdirdir(project_root)\n", - " assert Path('LICENSE').is_file()\n", - "except:\n", - " while i<4 and (not Path('LICENSE').is_file()):\n", - " os.chdir(Path(Path.cwd(), '../'))\n", - " i+=1\n", - " project_root = Path.cwd()\n", - "print(Path.cwd())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Watch project for changes to code\n", - "This scans the project for changes to code before Jupyter runs cells." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Reloads local code changes\n", - "%load_ext autoreload\n", - "%autoreload 2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Load existing objects into a Jupyter notebook\n", - "\n", - "These examples assume that you have already generated data using the cli. These examples will allow you to drill deeper into your results, and perform analysis which otherwise would make the output very difficult to digest due to information overload." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load backtest results into a pandas dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load backtest results\n", - "from freqtrade.data.btanalysis import load_backtest_data\n", - "df = load_backtest_data(\"user_data/backtest_data/backtest-result.json\")\n", - "\n", - "# Show value-counts per pair\n", - "df.groupby(\"pair\")[\"sell_reason\"].value_counts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load live trading results into a pandas dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Fetch trades from database\n", - "from freqtrade.data.btanalysis import load_trades_from_db\n", - "df = load_trades_from_db(\"sqlite:///tradesv3.sqlite\")\n", - "\n", - "# Display results\n", - "df.groupby(\"pair\")[\"sell_reason\"].value_counts()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load multiple configuration files\n", - "This option can be useful to inspect the results of passing in multiple configs" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load config from multiple files\n", - "from freqtrade.configuration import Configuration\n", - "config = Configuration.from_files([\"config1.json\", \"config2.json\"])\n", - "\n", - "# Show the config in memory\n", - "import json\n", - "print(json.dumps(config, indent=1))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load exchange data to a pandas dataframe\n", - "\n", - "This loads candle data to a dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# Load data using values passed to function\n", - "from pathlib import Path\n", - "from freqtrade.data.history import load_pair_history\n", - "\n", - "ticker_interval = \"5m\"\n", - "data_location = Path('user_data', 'data', 'bitrex')\n", - "pair = \"BTC_USDT\"\n", - "candles = load_pair_history(datadir=data_location,\n", - " ticker_interval=ticker_interval,\n", - " pair=pair)\n", - "\n", - "# Confirm success\n", - "print(\"Loaded \" + str(len(candles)) + f\" rows of data for {pair} from {data_location}\")\n", - "display(candles.head())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data." - ] - } - ], - "metadata": { - "file_extension": ".py", - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - }, - "mimetype": "text/x-python", - "name": "python", - "npconvert_exporter": "python", - "pygments_lexer": "ipython3", - "toc": { - "base_numbering": 1, - "nav_menu": {}, - "number_sections": true, - "sideBar": true, - "skip_h1_title": false, - "title_cell": "Table of Contents", - "title_sidebar": "Contents", - "toc_cell": false, - "toc_position": {}, - "toc_section_display": true, - "toc_window_display": false - }, - "varInspector": { - "cols": { - "lenName": 16, - "lenType": 16, - "lenVar": 40 - }, - "kernels_config": { - "python": { - "delete_cmd_postfix": "", - "delete_cmd_prefix": "del ", - "library": "var_list.py", - "varRefreshCmd": "print(var_dic_list())" - }, - "r": { - "delete_cmd_postfix": ") ", - "delete_cmd_prefix": "rm(", - "library": "var_list.r", - "varRefreshCmd": "cat(var_dic_list()) " - } - }, - "types_to_exclude": [ - "module", - "function", - "builtin_function_or_method", - "instance", - "_Feature" - ], - "window_display": false - }, - "version": 3 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/user_data/notebooks/strategy_analysis_example.ipynb b/user_data/notebooks/strategy_analysis_example.ipynb index 2b8b74fe6..bb35d3e91 100644 --- a/user_data/notebooks/strategy_analysis_example.ipynb +++ b/user_data/notebooks/strategy_analysis_example.ipynb @@ -24,10 +24,10 @@ "source": [ "# Change directory\n", "# Modify this cell to insure that the output shows the correct path.\n", - "# Define all paths relative to the project root shown in the cell output\n", "import os\n", "from pathlib import Path\n", "\n", + "# Define all paths relative to the project root shown in the cell output\n", "project_root = \"somedir/freqtrade\"\n", "i=0\n", "try:\n", @@ -38,11 +38,7 @@ " os.chdir(Path(Path.cwd(), '../'))\n", " i+=1\n", " project_root = Path.cwd()\n", - "print(Path.cwd())\n", - "\n", - "# Reloads local code changes\n", - "%load_ext autoreload\n", - "%autoreload 2" + "print(Path.cwd())" ] }, { @@ -69,9 +65,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'freqtrade'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Load data using values set above\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpathlib\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPath\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mfreqtrade\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mload_pair_history\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m candles = load_pair_history(datadir=data_location,\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'freqtrade'" + ] + } + ], "source": [ "# Load data using values set above\n", "from pathlib import Path\n", @@ -83,7 +91,7 @@ "\n", "# Confirm success\n", "print(\"Loaded \" + str(len(candles)) + f\" rows of data for {pair} from {data_location}\")\n", - "display(candles.head())" + "candles.head()" ] }, { @@ -96,11 +104,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'freqtrade'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Load strategy using values set above\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mfreqtrade\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresolvers\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mStrategyResolver\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m strategy = StrategyResolver({'strategy': strategy_name,\n\u001b[1;32m 4\u001b[0m \u001b[0;34m'user_data_dir'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0muser_data_dir\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m 'strategy_path': strategy_location}).strategy\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'freqtrade'" + ] + } + ], "source": [ "# Load strategy using values set above\n", "from freqtrade.resolvers import StrategyResolver\n", From e9e2a8343692e80307d555d8fe19227556f276f4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 06:59:56 +0200 Subject: [PATCH 0288/3421] remove `--live` references --- docs/backtesting.md | 14 +------------ docs/bot-usage.md | 1 - docs/plotting.md | 8 +------ freqtrade/configuration/arguments.py | 4 ++-- freqtrade/configuration/cli_options.py | 5 ----- freqtrade/configuration/configuration.py | 4 ---- freqtrade/tests/optimize/test_backtesting.py | 22 +++----------------- freqtrade/tests/optimize/test_hyperopt.py | 3 --- freqtrade/tests/test_arguments.py | 2 -- freqtrade/tests/test_configuration.py | 8 ------- freqtrade/tests/test_main.py | 1 - 11 files changed, 7 insertions(+), 65 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 3712fddce..5e7cb93dc 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -67,22 +67,10 @@ freqtrade backtesting freqtrade backtesting --ticker-interval 1m ``` -#### Update cached pairs with the latest data - -```bash -freqtrade backtesting --refresh-pairs-cached -``` - -#### With live data (do not alter your testdata files) - -```bash -freqtrade backtesting --live -``` - #### Using a different on-disk ticker-data source ```bash -freqtrade backtesting --datadir freqtrade/tests/testdata-20180101 +freqtrade backtesting --datadir user_data/data/bittrex-20180101 ``` #### With a (custom) strategy file diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 2873f5e8f..b8068d96d 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -166,7 +166,6 @@ optional arguments: Disable applying `max_open_trades` during backtest (same as setting `max_open_trades` to a very high number). - -l, --live Use live data. --strategy-list STRATEGY_LIST [STRATEGY_LIST ...] Provide a space-separated list of strategies to backtest Please note that ticker-interval needs to be diff --git a/docs/plotting.md b/docs/plotting.md index b8e041d61..ac0b1f7cf 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -15,7 +15,7 @@ pip install -U -r requirements-plot.txt Usage for the price plotter: ``` bash -python3 script/plot_dataframe.py [-h] [-p pairs] [--live] +python3 script/plot_dataframe.py [-h] [-p pairs] ``` Example @@ -41,12 +41,6 @@ To plot multiple pairs, separate them with a comma: python3 scripts/plot_dataframe.py -p BTC/ETH,XRP/ETH ``` -To plot the current live price use the `--live` flag: - -``` bash -python3 scripts/plot_dataframe.py -p BTC/ETH --live -``` - To plot a timerange (to zoom in): ``` bash diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index c45e3d7ba..f7a63adc8 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -17,7 +17,7 @@ ARGS_COMMON_OPTIMIZE = ["ticker_interval", "timerange", "max_open_trades", "stake_amount", "refresh_pairs"] ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + ["position_stacking", "use_max_market_positions", - "live", "strategy_list", "export", "exportfilename"] + "strategy_list", "export", "exportfilename"] ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + ["hyperopt", "hyperopt_path", "position_stacking", "epochs", "spaces", @@ -35,7 +35,7 @@ ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "exchange", "timeframes", " ARGS_PLOT_DATAFRAME = (ARGS_COMMON + ARGS_STRATEGY + ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", "trade_source", "export", "exportfilename", "timerange", - "refresh_pairs", "live"]) + "refresh_pairs"]) ARGS_PLOT_PROFIT = (ARGS_COMMON + ARGS_STRATEGY + ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source"]) diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index d39013737..1240f6ec5 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -123,11 +123,6 @@ AVAILABLE_CLI_OPTIONS = { action='store_false', default=True, ), - "live": Arg( - '-l', '--live', - help='Use live data.', - action='store_true', - ), "strategy_list": Arg( '--strategy-list', help='Provide a space-separated list of strategies to backtest. ' diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 329058cef..784600dfb 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -175,10 +175,6 @@ class Configuration(object): logstring='Parameter -i/--ticker-interval detected ... ' 'Using ticker_interval: {} ...') - self._args_to_config(config, argname='live', - logstring='Parameter -l/--live detected ...', - deprecated_msg='--live will be removed soon.') - self._args_to_config(config, argname='position_stacking', logstring='Parameter --enable-position-stacking detected ...') diff --git a/freqtrade/tests/optimize/test_backtesting.py b/freqtrade/tests/optimize/test_backtesting.py index 02e9a9c28..a39f57eaf 100644 --- a/freqtrade/tests/optimize/test_backtesting.py +++ b/freqtrade/tests/optimize/test_backtesting.py @@ -186,9 +186,6 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert 'ticker_interval' in config assert not log_has_re('Parameter -i/--ticker-interval detected .*', caplog) - assert 'live' not in config - assert not log_has('Parameter -l/--live detected ...', caplog) - assert 'position_stacking' not in config assert not log_has('Parameter --enable-position-stacking detected ...', caplog) @@ -201,7 +198,6 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert config['runmode'] == RunMode.BACKTEST -@pytest.mark.filterwarnings("ignore:DEPRECATED") def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) mocker.patch( @@ -215,7 +211,6 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> '--datadir', '/foo/bar', 'backtesting', '--ticker-interval', '1m', - '--live', '--enable-position-stacking', '--disable-max-market-positions', '--refresh-pairs-cached', @@ -238,9 +233,6 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', caplog) - assert 'live' in config - assert log_has('Parameter -l/--live detected ...', caplog) - assert 'position_stacking' in config assert log_has('Parameter --enable-position-stacking detected ...', caplog) @@ -815,8 +807,7 @@ def test_backtest_record(default_conf, fee, mocker): assert dur > 0 -@pytest.mark.filterwarnings("ignore:DEPRECATED") -def test_backtest_start_live(default_conf, mocker, caplog): +def test_backtest_start_timerange(default_conf, mocker, caplog): default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] async def load_pairs(pair, timeframe, since): @@ -836,7 +827,6 @@ def test_backtest_start_live(default_conf, mocker, caplog): '--datadir', 'freqtrade/tests/testdata', 'backtesting', '--ticker-interval', '1m', - '--live', '--timerange', '-100', '--enable-position-stacking', '--disable-max-market-positions' @@ -846,14 +836,12 @@ def test_backtest_start_live(default_conf, mocker, caplog): # check the logs, that will contain the backtest result exists = [ 'Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', - 'Parameter -l/--live detected ...', 'Ignoring max_open_trades (--disable-max-market-positions was used) ...', 'Parameter --timerange detected: -100 ...', 'Using data directory: freqtrade/tests/testdata ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', - 'Live: Downloading data for all defined pairs ...', - 'Backtesting with data from 2017-11-14T19:31:00+00:00 ' + 'Backtesting with data from 2017-11-14T21:17:00+00:00 ' 'up to 2017-11-14T22:58:00+00:00 (0 days)..', 'Parameter --enable-position-stacking detected ...' ] @@ -862,7 +850,6 @@ def test_backtest_start_live(default_conf, mocker, caplog): assert log_has(line, caplog) -@pytest.mark.filterwarnings("ignore:DEPRECATED") def test_backtest_start_multi_strat(default_conf, mocker, caplog): default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] @@ -886,7 +873,6 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog): '--datadir', 'freqtrade/tests/testdata', 'backtesting', '--ticker-interval', '1m', - '--live', '--timerange', '-100', '--enable-position-stacking', '--disable-max-market-positions', @@ -904,14 +890,12 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog): # check the logs, that will contain the backtest result exists = [ 'Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', - 'Parameter -l/--live detected ...', 'Ignoring max_open_trades (--disable-max-market-positions was used) ...', 'Parameter --timerange detected: -100 ...', 'Using data directory: freqtrade/tests/testdata ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', - 'Live: Downloading data for all defined pairs ...', - 'Backtesting with data from 2017-11-14T19:31:00+00:00 ' + 'Backtesting with data from 2017-11-14T21:17:00+00:00 ' 'up to 2017-11-14T22:58:00+00:00 (0 days)..', 'Parameter --enable-position-stacking detected ...', 'Running backtesting for Strategy DefaultStrategy', diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index 1c4e2445c..dd39981e5 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -83,9 +83,6 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca assert 'ticker_interval' in config assert not log_has_re('Parameter -i/--ticker-interval detected .*', caplog) - assert 'live' not in config - assert not log_has('Parameter -l/--live detected ...', caplog) - assert 'position_stacking' not in config assert not log_has('Parameter --enable-position-stacking detected ...', caplog) diff --git a/freqtrade/tests/test_arguments.py b/freqtrade/tests/test_arguments.py index 601f41e63..24f11e32e 100644 --- a/freqtrade/tests/test_arguments.py +++ b/freqtrade/tests/test_arguments.py @@ -98,7 +98,6 @@ def test_parse_args_backtesting_custom() -> None: args = [ '-c', 'test_conf.json', 'backtesting', - '--live', '--ticker-interval', '1m', '--refresh-pairs-cached', '--strategy-list', @@ -107,7 +106,6 @@ def test_parse_args_backtesting_custom() -> None: ] call_args = Arguments(args, '').get_parsed_arg() assert call_args.config == ['test_conf.json'] - assert call_args.live is True assert call_args.verbosity == 0 assert call_args.subparser == 'backtesting' assert call_args.func is not None diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 5cfee0698..6a3655f88 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -335,9 +335,6 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert 'ticker_interval' in config assert not log_has('Parameter -i/--ticker-interval detected ...', caplog) - assert 'live' not in config - assert not log_has('Parameter -l/--live detected ...', caplog) - assert 'position_stacking' not in config assert not log_has('Parameter --enable-position-stacking detected ...', caplog) @@ -348,7 +345,6 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert 'export' not in config -@pytest.mark.filterwarnings("ignore:DEPRECATED") def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) mocker.patch( @@ -362,7 +358,6 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non '--datadir', '/foo/bar', 'backtesting', '--ticker-interval', '1m', - '--live', '--enable-position-stacking', '--disable-max-market-positions', '--refresh-pairs-cached', @@ -385,9 +380,6 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', caplog) - assert 'live' in config - assert log_has('Parameter -l/--live detected ...', caplog) - assert 'position_stacking'in config assert log_has('Parameter --enable-position-stacking detected ...', caplog) diff --git a/freqtrade/tests/test_main.py b/freqtrade/tests/test_main.py index 409025a3c..db5a438d0 100644 --- a/freqtrade/tests/test_main.py +++ b/freqtrade/tests/test_main.py @@ -28,7 +28,6 @@ def test_parse_args_backtesting(mocker) -> None: assert backtesting_mock.call_count == 1 call_args = backtesting_mock.call_args[0][0] assert call_args.config == ['config.json'] - assert call_args.live is False assert call_args.verbosity == 0 assert call_args.subparser == 'backtesting' assert call_args.func is not None From 9e249928357544e49a2548f4d463f37764ae0ee4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 07:09:02 +0200 Subject: [PATCH 0289/3421] Remove calls to load_data using live= --- freqtrade/optimize/backtesting.py | 1 - freqtrade/plot/plotting.py | 3 +-- freqtrade/tests/optimize/test_backtesting.py | 2 -- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 3878d7603..568615b53 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -413,7 +413,6 @@ class Backtesting(object): refresh_pairs=self.config.get('refresh_pairs', False), exchange=self.exchange, timerange=timerange, - live=self.config.get('live', False) ) if not data: diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index e6da581a4..2f09bd986 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -31,7 +31,7 @@ def init_plotscript(config): exchange: Optional[Exchange] = None # Exchange is only needed when downloading data! - if config.get("live", False) or config.get("refresh_pairs", False): + if config.get("refresh_pairs", False): exchange = ExchangeResolver(config.get('exchange', {}).get('name'), config).exchange @@ -51,7 +51,6 @@ def init_plotscript(config): refresh_pairs=config.get('refresh_pairs', False), timerange=timerange, exchange=exchange, - live=config.get("live", False), ) trades = load_trades(config) diff --git a/freqtrade/tests/optimize/test_backtesting.py b/freqtrade/tests/optimize/test_backtesting.py index a39f57eaf..c7dead1eb 100644 --- a/freqtrade/tests/optimize/test_backtesting.py +++ b/freqtrade/tests/optimize/test_backtesting.py @@ -471,7 +471,6 @@ def test_backtesting_start(default_conf, mocker, caplog) -> None: default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] default_conf['ticker_interval'] = '1m' - default_conf['live'] = False default_conf['datadir'] = None default_conf['export'] = None default_conf['timerange'] = '-100' @@ -505,7 +504,6 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog) -> None: default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] default_conf['ticker_interval'] = "1m" - default_conf['live'] = False default_conf['datadir'] = None default_conf['export'] = None default_conf['timerange'] = '20180101-20180102' From f02adf2a45f5808a0f192f77c5d66841431d8d9b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 07:18:21 +0200 Subject: [PATCH 0290/3421] Deprecate --refresh-pairs-cached --- freqtrade/configuration/configuration.py | 3 ++- freqtrade/tests/optimize/test_backtesting.py | 1 + freqtrade/tests/optimize/test_edge_cli.py | 6 +++++- freqtrade/tests/optimize/test_hyperopt.py | 1 + freqtrade/tests/test_configuration.py | 1 + 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 784600dfb..95110a280 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -199,7 +199,8 @@ class Configuration(object): self._process_datadir_options(config) self._args_to_config(config, argname='refresh_pairs', - logstring='Parameter -r/--refresh-pairs-cached detected ...') + logstring='Parameter -r/--refresh-pairs-cached detected ...', + deprecated_msg='-r/--refresh-pairs-cached will be removed soon.') self._args_to_config(config, argname='strategy_list', logstring='Using strategy list of {} Strategies', logfun=len) diff --git a/freqtrade/tests/optimize/test_backtesting.py b/freqtrade/tests/optimize/test_backtesting.py index c7dead1eb..5c942ab72 100644 --- a/freqtrade/tests/optimize/test_backtesting.py +++ b/freqtrade/tests/optimize/test_backtesting.py @@ -198,6 +198,7 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert config['runmode'] == RunMode.BACKTEST +@pytest.mark.filterwarnings("ignore:DEPRECATED") def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) mocker.patch( diff --git a/freqtrade/tests/optimize/test_edge_cli.py b/freqtrade/tests/optimize/test_edge_cli.py index cdc724db2..25ad48e43 100644 --- a/freqtrade/tests/optimize/test_edge_cli.py +++ b/freqtrade/tests/optimize/test_edge_cli.py @@ -3,11 +3,14 @@ from unittest.mock import MagicMock +import pytest + from freqtrade.edge import PairInfo from freqtrade.optimize import setup_configuration, start_edge from freqtrade.optimize.edge_cli import EdgeCli from freqtrade.state import RunMode -from freqtrade.tests.conftest import (get_args, log_has, log_has_re, patch_exchange, +from freqtrade.tests.conftest import (get_args, log_has, log_has_re, + patch_exchange, patched_configuration_load_config_file) @@ -40,6 +43,7 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert 'stoploss_range' not in config +@pytest.mark.filterwarnings("ignore:DEPRECATED") def test_setup_edge_configuration_with_arguments(mocker, edge_conf, caplog) -> None: patched_configuration_load_config_file(mocker, edge_conf) mocker.patch( diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index dd39981e5..d233f96b8 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -94,6 +94,7 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca assert config['runmode'] == RunMode.HYPEROPT +@pytest.mark.filterwarnings("ignore:DEPRECATED") def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) mocker.patch( diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 6a3655f88..2ae936416 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -345,6 +345,7 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert 'export' not in config +@pytest.mark.filterwarnings("ignore:DEPRECATED") def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) mocker.patch( From 11dab2b9ca0f12cdaf45bf70428771cb99748c51 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Aug 2019 07:22:03 +0200 Subject: [PATCH 0291/3421] Deprecate documentation for --refresh-pairs-cached --- docs/deprecated.md | 9 +++++---- docs/edge.md | 5 ++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/deprecated.md b/docs/deprecated.md index 2bf655191..9fd27c3f9 100644 --- a/docs/deprecated.md +++ b/docs/deprecated.md @@ -4,12 +4,13 @@ This page contains description of the command line arguments, configuration para and the bot features that were declared as DEPRECATED by the bot development team and are no longer supported. Please avoid their usage in your configuration. -### the `--live` command line option +### the `--refresh-pairs-cached` command line option -`--live` in the context of backtesting allows to download the latest tick data for backtesting. -Since this only downloads one set of data (by default 500 candles) - this is not really suitable for extendet backtesting, and has therefore been deprecated. +`--refresh-pairs-cached` in the context of backtesting, hyperopt and edge allowes to refresh candle data for backtesting. +Since this leads to much confusion, and slows down backtesting (while not beeing part of backtesting) this has been singled out +as a seperate freqtrade subcommand `freqtrade download-data`. -This command was deprecated in `2019.6-dev` and will be removed after the next release. +This command was deprecated in `2019.7-dev` and will be removed after the next release. ## Removed features diff --git a/docs/edge.md b/docs/edge.md index 9047758f4..60cdfd830 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -234,9 +234,8 @@ An example of its output: ### Update cached pairs with the latest data -```bash -freqtrade edge --refresh-pairs-cached -``` +Edge requires historic data the same way than backtesting does. +Please refer to the [download section](backtesting.md#Getting-data-for-backtesting-and-hyperopt) of the documentation for details. ### Precising stoploss range From 4ee35438a78fe0543609b8fb8e67cafb39509838 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 20 Aug 2019 07:05:17 +0200 Subject: [PATCH 0292/3421] Improve deprecated docs --- docs/backtesting.md | 3 +++ docs/deprecated.md | 12 +++++++++--- docs/edge.md | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 5e7cb93dc..f74d07df1 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -69,6 +69,9 @@ freqtrade backtesting --ticker-interval 1m #### Using a different on-disk ticker-data source +Assume you downloaded the history data from the Bittrex exchange and kept it in the `user_data/data/bittrex-20180101` directory. +You can then use this data for backtesting as follows: + ```bash freqtrade backtesting --datadir user_data/data/bittrex-20180101 ``` diff --git a/docs/deprecated.md b/docs/deprecated.md index 9fd27c3f9..3ddddc868 100644 --- a/docs/deprecated.md +++ b/docs/deprecated.md @@ -6,11 +6,11 @@ and are no longer supported. Please avoid their usage in your configuration. ### the `--refresh-pairs-cached` command line option -`--refresh-pairs-cached` in the context of backtesting, hyperopt and edge allowes to refresh candle data for backtesting. -Since this leads to much confusion, and slows down backtesting (while not beeing part of backtesting) this has been singled out +`--refresh-pairs-cached` in the context of backtesting, hyperopt and edge allows to refresh candle data for backtesting. +Since this leads to much confusion, and slows down backtesting (while not being part of backtesting) this has been singled out as a seperate freqtrade subcommand `freqtrade download-data`. -This command was deprecated in `2019.7-dev` and will be removed after the next release. +This command line option was deprecated in `2019.7-dev` and will be removed after the next release. ## Removed features @@ -18,3 +18,9 @@ This command was deprecated in `2019.7-dev` and will be removed after the next r This command line option was deprecated in 2018 and removed freqtrade 2019.6-dev (develop branch) and in freqtrade 2019.7 (master branch). + +### the `--live` command line option + +`--live` in the context of backtesting allowed to download the latest tick data for backtesting. +Did only download the latest 500 candles, so was ineffective in getting good backtest data. +Removed in `2019-7-dev` (develop branch) and in freqtrade 2019-8 (master branch) diff --git a/docs/edge.md b/docs/edge.md index 60cdfd830..d91522770 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -234,7 +234,7 @@ An example of its output: ### Update cached pairs with the latest data -Edge requires historic data the same way than backtesting does. +Edge requires historic data the same way as backtesting does. Please refer to the [download section](backtesting.md#Getting-data-for-backtesting-and-hyperopt) of the documentation for details. ### Precising stoploss range From be308ff91428d8b4b53cc3f5a199289d5652279e Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 20 Aug 2019 09:45:28 +0200 Subject: [PATCH 0293/3421] Fix grammar error in documentation --- docs/backtesting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 3712fddce..48f658ab9 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -5,7 +5,7 @@ Backtesting. ## Getting data for backtesting and hyperopt -To download backtesting data (candles / OHLCV) and hyperoptimization using the `freqtrade download-data` command. +To download backtesting data (candles / OHLCV) and hyperoptimization use the `freqtrade download-data` command. If no additional parameter is specified, freqtrade will download data for `"1m"` and `"5m"` timeframes. Exchange and pairs will come from `config.json` (if specified using `-c/--config`). Otherwise `--exchange` becomes mandatory. From 91e72ba081855851eee76df99989ddfd181134ae Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 20 Aug 2019 19:32:26 +0200 Subject: [PATCH 0294/3421] small formatting issue --- docs/deprecated.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/deprecated.md b/docs/deprecated.md index 3ddddc868..1460ace33 100644 --- a/docs/deprecated.md +++ b/docs/deprecated.md @@ -23,4 +23,4 @@ and in freqtrade 2019.7 (master branch). `--live` in the context of backtesting allowed to download the latest tick data for backtesting. Did only download the latest 500 candles, so was ineffective in getting good backtest data. -Removed in `2019-7-dev` (develop branch) and in freqtrade 2019-8 (master branch) +Removed in 2019-7-dev (develop branch) and in freqtrade 2019-8 (master branch) From 210f66e48bbbd654f61d566eca9224121c9ef147 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 20 Aug 2019 19:34:18 +0200 Subject: [PATCH 0295/3421] Improve wording --- docs/backtesting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 48f658ab9..90256283e 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -5,7 +5,7 @@ Backtesting. ## Getting data for backtesting and hyperopt -To download backtesting data (candles / OHLCV) and hyperoptimization use the `freqtrade download-data` command. +To download data (candles / OHLCV) needed for backtesting and hyperoptimization use the `freqtrade download-data` command. If no additional parameter is specified, freqtrade will download data for `"1m"` and `"5m"` timeframes. Exchange and pairs will come from `config.json` (if specified using `-c/--config`). Otherwise `--exchange` becomes mandatory. From a12876da92e1f2db9c29cbdb91c30250de897cf5 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 20 Aug 2019 22:17:21 +0300 Subject: [PATCH 0296/3421] fine printing for floats in the roi tables (round to 5 digits after the decimal point) --- freqtrade/misc.py | 7 +++++++ freqtrade/optimize/hyperopt.py | 4 +++- freqtrade/optimize/hyperopt_interface.py | 7 ++++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 05946e008..ed9f5c1e9 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -113,3 +113,10 @@ def deep_merge_dicts(source, destination): destination[key] = value return destination + + +def round_dict(d, n): + """ + Rounds float values in the dict to n digits after the decimal point. + """ + return {k: (round(v, n) if isinstance(v, float) else v) for k, v in d.items()} diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 89e1accdd..d20134e0d 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -22,6 +22,7 @@ from skopt.space import Dimension from freqtrade.configuration import Arguments from freqtrade.data.history import load_data, get_timeframe +from freqtrade.misc import round_dict from freqtrade.optimize.backtesting import Backtesting # Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules from freqtrade.optimize.hyperopt_interface import IHyperOpt # noqa: F4 @@ -147,7 +148,8 @@ class Hyperopt(Backtesting): indent=4) if self.has_space('roi'): print("ROI table:") - pprint(self.custom_hyperopt.generate_roi_table(params), indent=4) + # Round printed values to 5 digits after the decimal point + pprint(round_dict(self.custom_hyperopt.generate_roi_table(params), 5), indent=4) if self.has_space('stoploss'): print(f"Stoploss: {params.get('stoploss')}") diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index b81dc25e3..4202e5325 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -12,6 +12,7 @@ from pandas import DataFrame from skopt.space import Dimension, Integer, Real from freqtrade.exchange import timeframe_to_minutes +from freqtrade.misc import round_dict logger = logging.getLogger(__name__) @@ -128,7 +129,7 @@ class IHyperOpt(ABC): 'roi_p3_min': 0.01 * roi_p_scale * roi_p_alpha, 'roi_p3_max': 0.20 * roi_p_scale * roi_p_alpha, } - logger.debug(f"Using roi space limits: {roi_limits}") + logger.debug(f"Using roi space limits: {round_dict(roi_limits, 5)}") p = { 'roi_t1': roi_limits['roi_t1_min'], 'roi_t2': roi_limits['roi_t2_min'], @@ -137,7 +138,7 @@ class IHyperOpt(ABC): 'roi_p2': roi_limits['roi_p2_min'], 'roi_p3': roi_limits['roi_p3_min'], } - logger.info(f"Min roi table: {IHyperOpt.generate_roi_table(p)}") + logger.info(f"Min roi table: {round_dict(IHyperOpt.generate_roi_table(p), 5)}") p = { 'roi_t1': roi_limits['roi_t1_max'], 'roi_t2': roi_limits['roi_t2_max'], @@ -146,7 +147,7 @@ class IHyperOpt(ABC): 'roi_p2': roi_limits['roi_p2_max'], 'roi_p3': roi_limits['roi_p3_max'], } - logger.info(f"Max roi table: {IHyperOpt.generate_roi_table(p)}") + logger.info(f"Max roi table: {round_dict(IHyperOpt.generate_roi_table(p), 5)}") return [ Integer(roi_limits['roi_t1_min'], roi_limits['roi_t1_max'], name='roi_t1'), From cadf573170c8f4a9a541a500d9a70404d1eff6ec Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 20 Aug 2019 22:24:59 +0300 Subject: [PATCH 0297/3421] round printed stoploss value as well --- freqtrade/optimize/hyperopt.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index d20134e0d..eaa3a7e1d 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -151,7 +151,8 @@ class Hyperopt(Backtesting): # Round printed values to 5 digits after the decimal point pprint(round_dict(self.custom_hyperopt.generate_roi_table(params), 5), indent=4) if self.has_space('stoploss'): - print(f"Stoploss: {params.get('stoploss')}") + # Also round to 5 digits after the decimal point + print(f"Stoploss: {round(params.get('stoploss'), 5)}") def log_results(self, results) -> None: """ From 31669fde03f86f197d1d8d804aa1a7b84dfcd2e9 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 20 Aug 2019 23:28:16 +0300 Subject: [PATCH 0298/3421] test adjusted --- freqtrade/tests/optimize/test_hyperopt.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index 1c4e2445c..72c2741fd 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -417,7 +417,8 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', - MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}]) + MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', + 'params': {'buy': {}, 'sell': {}, 'roi': {}, 'stoploss': 0.0}}]) ) patch_exchange(mocker) From fcb0ff1b60fa196e6244d68a8c3470d0fdd546e0 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 20 Aug 2019 23:42:44 +0300 Subject: [PATCH 0299/3421] do not round values in the debug message --- freqtrade/optimize/hyperopt_interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 4202e5325..2b86e018e 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -129,7 +129,7 @@ class IHyperOpt(ABC): 'roi_p3_min': 0.01 * roi_p_scale * roi_p_alpha, 'roi_p3_max': 0.20 * roi_p_scale * roi_p_alpha, } - logger.debug(f"Using roi space limits: {round_dict(roi_limits, 5)}") + logger.debug(f"Using roi space limits: {roi_limits}") p = { 'roi_t1': roi_limits['roi_t1_min'], 'roi_t2': roi_limits['roi_t2_min'], From 14aaf8976f6aefc48f99018cc7bc732339151f74 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 21 Aug 2019 02:26:58 +0300 Subject: [PATCH 0300/3421] fix download replacement script --- scripts/download_backtest_data.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/download_backtest_data.py b/scripts/download_backtest_data.py index 496f83c7d..a8f919a10 100755 --- a/scripts/download_backtest_data.py +++ b/scripts/download_backtest_data.py @@ -1,8 +1,10 @@ +#!/usr/bin/env python3 + import sys print("This script has been integrated into freqtrade " - "and it's functionality is available by calling `freqtrade download-data`.") + "and its functionality is available by calling `freqtrade download-data`.") print("Please check the documentation on https://www.freqtrade.io/en/latest/backtesting/ " "for details.") From 75b2db4424dc40e1c9dccfb582479a08bf1aa964 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 21 Aug 2019 06:58:56 +0200 Subject: [PATCH 0301/3421] FIx loading pairs-list --- freqtrade/configuration/configuration.py | 16 +++++++++------- freqtrade/misc.py | 3 ++- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 329058cef..b3f54d59e 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -346,10 +346,9 @@ class Configuration(object): # or if pairs file is specified explicitely if not pairs_file.exists(): raise OperationalException(f'No pairs file found with path "{pairs_file}".') - - config['pairs'] = json_load(pairs_file) - - config['pairs'].sort() + with pairs_file.open('r') as f: + config['pairs'] = json_load(f) + config['pairs'].sort() return if "config" in self.args and self.args.config: @@ -357,7 +356,10 @@ class Configuration(object): config['pairs'] = config.get('exchange', {}).get('pair_whitelist') else: # Fall back to /dl_path/pairs.json - pairs_file = Path(config['datadir']) / "pairs.json" + pairs_file = Path(config['datadir']) / config['exchange']['name'].lower() / "pairs.json" + print(config['datadir']) if pairs_file.exists(): - config['pairs'] = json_load(pairs_file) - config['pairs'].sort() + with pairs_file.open('r') as f: + config['pairs'] = json_load(f) + if 'pairs' in config: + config['pairs'].sort() diff --git a/freqtrade/misc.py b/freqtrade/misc.py index d01d6a254..12a90a14d 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -6,6 +6,7 @@ import logging import re from datetime import datetime from pathlib import Path +from typing.io import IO import numpy as np import rapidjson @@ -60,7 +61,7 @@ def file_dump_json(filename: Path, data, is_zip=False) -> None: logger.debug(f'done json to "{filename}"') -def json_load(datafile): +def json_load(datafile: IO): """ load data with rapidjson Use this to have a consistent experience, From 13ffb392457269bee56977dbc73d70752b76d531 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 21 Aug 2019 06:59:07 +0200 Subject: [PATCH 0302/3421] Adjust tests to fixed loading method --- freqtrade/tests/test_configuration.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 5cfee0698..fc3adad44 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -770,6 +770,7 @@ def test_pairlist_resolving_with_config_pl(mocker, default_conf): load_mock = mocker.patch("freqtrade.configuration.configuration.json_load", MagicMock(return_value=['XRP/BTC', 'ETH/BTC'])) mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + mocker.patch.object(Path, "open", MagicMock(return_value=MagicMock())) arglist = [ '--config', 'config.json', @@ -808,6 +809,7 @@ def test_pairlist_resolving_with_config_pl_not_exists(mocker, default_conf): def test_pairlist_resolving_fallback(mocker): mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + mocker.patch.object(Path, "open", MagicMock(return_value=MagicMock())) mocker.patch("freqtrade.configuration.configuration.json_load", MagicMock(return_value=['XRP/BTC', 'ETH/BTC'])) arglist = [ From 949ca1abf831bdc0f63165f428651fd813d4d16d Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 06:53:51 +0200 Subject: [PATCH 0303/3421] Fail travis if doc-test fails --- .travis.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a452d245b..308895591 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,7 +34,11 @@ jobs: - cp config.json.example config.json - freqtrade --datadir freqtrade/tests/testdata hyperopt -e 5 name: hyperopt - - script: flake8 freqtrade scripts + - script: + - flake8 freqtrade scripts + # Test Documentation boxes - + # !!! : is not allowed! + - grep -Er '^!!!\s\S+:' docs/*; test $? -ne 0 name: flake8 - script: mypy freqtrade scripts name: mypy From df1f57392c986963bfda7e835c1119a6cc4367bb Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 06:56:41 +0200 Subject: [PATCH 0304/3421] use seperate job for doc test --- .travis.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 308895591..c75049276 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,12 +34,13 @@ jobs: - cp config.json.example config.json - freqtrade --datadir freqtrade/tests/testdata hyperopt -e 5 name: hyperopt + - script: flake8 freqtrade scripts + name: flake8 - script: - - flake8 freqtrade scripts # Test Documentation boxes - # !!! : is not allowed! - - grep -Er '^!!!\s\S+:' docs/*; test $? -ne 0 - name: flake8 + - grep -Er '^!{3}\s\S+:' docs/*; test $? -ne 0 + name: doc syntax - script: mypy freqtrade scripts name: mypy From fe12d2e3b705ea1acc8973ee1f3fa21855d914da Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 06:57:32 +0200 Subject: [PATCH 0305/3421] Fix documentation syntax --- docs/bot-usage.md | 3 ++- docs/installation.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 27451bcdb..49b152ae6 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -2,7 +2,7 @@ This page explains the different parameters of the bot and how to run it. -!!! Note: +!!! Note If you've used `setup.sh`, don't forget to activate your virtual environment (`source .env/bin/activate`) before running freqtrade commands. @@ -141,6 +141,7 @@ Learn more about strategy file in This parameter allows you to add an additional strategy lookup path, which gets checked before the default locations (The passed path must be a directory!): + ```bash freqtrade --strategy AwesomeStrategy --strategy-path /some/directory ``` diff --git a/docs/installation.md b/docs/installation.md index 589d3fe7f..f15cc356c 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -227,7 +227,7 @@ Freqtrade can also be installed using Anaconda (or Miniconda). conda env create -f environment.yml ``` -!!! Note: +!!! Note This requires the [ta-lib](#1-install-ta-lib) C-library to be installed first. ## Windows From 81925dfadf1317962143491926133521f509dd82 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 13:01:10 +0200 Subject: [PATCH 0306/3421] Fix some doc inconsistencies --- docs/plotting.md | 4 +--- docs/strategy-customization.md | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/plotting.md b/docs/plotting.md index ac0b1f7cf..c727913b0 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -44,11 +44,9 @@ python3 scripts/plot_dataframe.py -p BTC/ETH,XRP/ETH To plot a timerange (to zoom in): ``` bash -python3 scripts/plot_dataframe.py -p BTC/ETH --timerange=100-200 +python3 scripts/plot_dataframe.py -p BTC/ETH --timerange=20180801-20180805 ``` -Timerange doesn't work with live data. - To plot trades stored in a database use `--db-url` argument: ``` bash diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index d71ebfded..9e32ded18 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -319,7 +319,6 @@ if self.dp: print(f"available {pair}, {ticker}") ``` - #### Get data for non-tradeable pairs Data for additional, informative pairs (reference pairs) can be beneficial for some strategies. From b2ef8f4e14e30629941467e6b496378dc12ea243 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 15:26:18 +0200 Subject: [PATCH 0307/3421] Add additional header --- docs/deprecated.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/deprecated.md b/docs/deprecated.md index 1460ace33..ed70b1936 100644 --- a/docs/deprecated.md +++ b/docs/deprecated.md @@ -4,6 +4,8 @@ This page contains description of the command line arguments, configuration para and the bot features that were declared as DEPRECATED by the bot development team and are no longer supported. Please avoid their usage in your configuration. +## Deprecated + ### the `--refresh-pairs-cached` command line option `--refresh-pairs-cached` in the context of backtesting, hyperopt and edge allows to refresh candle data for backtesting. From 0e81d7204c763ecea58378b727aa678f916902bc Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 15:43:39 +0200 Subject: [PATCH 0308/3421] Clense jupyter notebook --- .../notebooks/strategy_analysis_example.ipynb | 32 +++---------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/user_data/notebooks/strategy_analysis_example.ipynb b/user_data/notebooks/strategy_analysis_example.ipynb index bb35d3e91..014f4ca90 100644 --- a/user_data/notebooks/strategy_analysis_example.ipynb +++ b/user_data/notebooks/strategy_analysis_example.ipynb @@ -65,21 +65,9 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'freqtrade'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Load data using values set above\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpathlib\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPath\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mfreqtrade\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mload_pair_history\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m candles = load_pair_history(datadir=data_location,\n", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'freqtrade'" - ] - } - ], + "outputs": [], "source": [ "# Load data using values set above\n", "from pathlib import Path\n", @@ -104,23 +92,11 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'freqtrade'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Load strategy using values set above\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mfreqtrade\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresolvers\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mStrategyResolver\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m strategy = StrategyResolver({'strategy': strategy_name,\n\u001b[1;32m 4\u001b[0m \u001b[0;34m'user_data_dir'\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0muser_data_dir\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m 'strategy_path': strategy_location}).strategy\n", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'freqtrade'" - ] - } - ], + "outputs": [], "source": [ "# Load strategy using values set above\n", "from freqtrade.resolvers import StrategyResolver\n", From d19b11a00f135225022f02d87ac486abac32fd28 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 22 Aug 2019 20:01:41 +0300 Subject: [PATCH 0309/3421] exchange cosmetics --- freqtrade/exchange/exchange.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 7aafff96a..a8e974991 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -772,20 +772,20 @@ class Exchange(object): raise OperationalException(e) from e -def is_exchange_bad(exchange: str) -> bool: - return exchange in BAD_EXCHANGES +def is_exchange_bad(exchange_name: str) -> bool: + return exchange_name in BAD_EXCHANGES -def get_exchange_bad_reason(exchange: str) -> str: - return BAD_EXCHANGES.get(exchange, "") +def get_exchange_bad_reason(exchange_name: str) -> str: + return BAD_EXCHANGES.get(exchange_name, "") -def is_exchange_available(exchange: str, ccxt_module=None) -> bool: - return exchange in available_exchanges(ccxt_module) +def is_exchange_available(exchange_name: str, ccxt_module=None) -> bool: + return exchange_name in available_exchanges(ccxt_module) -def is_exchange_officially_supported(exchange: str) -> bool: - return exchange in ['bittrex', 'binance'] +def is_exchange_officially_supported(exchange_name: str) -> bool: + return exchange_name in ['bittrex', 'binance'] def available_exchanges(ccxt_module=None) -> List[str]: From 782f4112cd33b1ae4a86eac58fd57bf1d8db1c5d Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 19:49:30 +0200 Subject: [PATCH 0310/3421] Add test checking stoploss == 0 values --- freqtrade/tests/test_configuration.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index a2a87c2cf..838f0372f 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -648,6 +648,12 @@ def test_create_userdata_dir_exists_exception(mocker, default_conf, caplog) -> N def test_validate_tsl(default_conf): + default_conf['stoploss'] = 0.0 + with pytest.raises(OperationalException, match='The config stoploss needs to be more ' + 'than 0 to avoid problems with sell orders.'): + validate_config_consistency(default_conf) + default_conf['stoploss'] = -0.10 + default_conf['trailing_stop'] = True default_conf['trailing_stop_positive'] = 0 default_conf['trailing_stop_positive_offset'] = 0 @@ -669,6 +675,15 @@ def test_validate_tsl(default_conf): default_conf['trailing_stop_positive_offset'] = 0.015 validate_config_consistency(default_conf) + # 0 trailing stop positive - results in "Order would trigger immediately" + default_conf['trailing_stop_positive'] = 0 + default_conf['trailing_stop_positive_offset'] = 0.02 + default_conf['trailing_only_offset_is_reached'] = False + with pytest.raises(OperationalException, + match='The config trailing_stop_positive needs to be more than 0' + 'to avoid problems with sell orders'): + validate_config_consistency(default_conf) + def test_validate_edge(edge_conf): edge_conf.update({"pairlist": { From 70ebd09de4ac628bed224fcadc7a52c4bd9898d6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 19:49:50 +0200 Subject: [PATCH 0311/3421] Add checks verifying that stoploss is not 0 (and positive-stoploss is also not 0). --- freqtrade/configuration/config_validation.py | 15 +++++++++++++-- freqtrade/tests/test_configuration.py | 6 +++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 92846b704..338b8959a 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -68,6 +68,10 @@ def validate_config_consistency(conf: Dict[str, Any]) -> None: def _validate_trailing_stoploss(conf: Dict[str, Any]) -> None: + if conf.get('stoploss') == 0.0: + raise OperationalException( + 'The config stoploss needs to be different from 0 to avoid problems with sell orders.' + ) # Skip if trailing stoploss is not activated if not conf.get('trailing_stop', False): return @@ -79,13 +83,20 @@ def _validate_trailing_stoploss(conf: Dict[str, Any]) -> None: if tsl_only_offset: if tsl_positive == 0.0: raise OperationalException( - f'The config trailing_only_offset_is_reached needs ' + 'The config trailing_only_offset_is_reached needs ' 'trailing_stop_positive_offset to be more than 0 in your config.') if tsl_positive > 0 and 0 < tsl_offset <= tsl_positive: raise OperationalException( - f'The config trailing_stop_positive_offset needs ' + 'The config trailing_stop_positive_offset needs ' 'to be greater than trailing_stop_positive_offset in your config.') + # Fetch again without default + if 'trailing_stop_positive' in conf and float(conf['trailing_stop_positive']) == 0.0: + raise OperationalException( + 'The config trailing_stop_positive needs to be different from 0 ' + 'to avoid problems with sell orders.' + ) + def _validate_edge(conf: Dict[str, Any]) -> None: """ diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 838f0372f..618bd69cf 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -649,8 +649,8 @@ def test_create_userdata_dir_exists_exception(mocker, default_conf, caplog) -> N def test_validate_tsl(default_conf): default_conf['stoploss'] = 0.0 - with pytest.raises(OperationalException, match='The config stoploss needs to be more ' - 'than 0 to avoid problems with sell orders.'): + with pytest.raises(OperationalException, match='The config stoploss needs to be different ' + 'from 0 to avoid problems with sell orders.'): validate_config_consistency(default_conf) default_conf['stoploss'] = -0.10 @@ -680,7 +680,7 @@ def test_validate_tsl(default_conf): default_conf['trailing_stop_positive_offset'] = 0.02 default_conf['trailing_only_offset_is_reached'] = False with pytest.raises(OperationalException, - match='The config trailing_stop_positive needs to be more than 0' + match='The config trailing_stop_positive needs to be different from 0 ' 'to avoid problems with sell orders'): validate_config_consistency(default_conf) From 067208bc9dab1f58c40c7abeab67ab1a11ac1ac6 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 24 Aug 2019 00:10:35 +0300 Subject: [PATCH 0312/3421] make backtesting an attribute of Hyperopt --- freqtrade/optimize/hyperopt.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index cf4740f1c..62a6ab27b 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -37,7 +37,7 @@ INITIAL_POINTS = 30 MAX_LOSS = 100000 # just a big enough number to be bad result in loss optimization -class Hyperopt(Backtesting): +class Hyperopt: """ Hyperopt class, this class contains all the logic to run a hyperopt simulation @@ -46,7 +46,9 @@ class Hyperopt(Backtesting): hyperopt.start() """ def __init__(self, config: Dict[str, Any]) -> None: - super().__init__(config) + self.config = config + self.backtesting = Backtesting(self.config) + self.custom_hyperopt = HyperOptResolver(self.config).hyperopt self.custom_hyperoptloss = HyperOptLossResolver(self.config).hyperoptloss @@ -70,10 +72,10 @@ class Hyperopt(Backtesting): # Populate functions here (hasattr is slow so should not be run during "regular" operations) if hasattr(self.custom_hyperopt, 'populate_buy_trend'): - self.advise_buy = self.custom_hyperopt.populate_buy_trend # type: ignore + self.backtesting.advise_buy = self.custom_hyperopt.populate_buy_trend # type: ignore if hasattr(self.custom_hyperopt, 'populate_sell_trend'): - self.advise_sell = self.custom_hyperopt.populate_sell_trend # type: ignore + self.backtesting.advise_sell = self.custom_hyperopt.populate_sell_trend # type: ignore # Use max_open_trades for hyperopt as well, except --disable-max-market-positions is set if self.config.get('use_max_market_positions', True): @@ -249,22 +251,22 @@ class Hyperopt(Backtesting): """ params = self.get_args(_params) if self.has_space('roi'): - self.strategy.minimal_roi = self.custom_hyperopt.generate_roi_table(params) + self.backtesting.strategy.minimal_roi = self.custom_hyperopt.generate_roi_table(params) if self.has_space('buy'): - self.advise_buy = self.custom_hyperopt.buy_strategy_generator(params) + self.backtesting.advise_buy = self.custom_hyperopt.buy_strategy_generator(params) if self.has_space('sell'): - self.advise_sell = self.custom_hyperopt.sell_strategy_generator(params) + self.backtesting.advise_sell = self.custom_hyperopt.sell_strategy_generator(params) if self.has_space('stoploss'): - self.strategy.stoploss = params['stoploss'] + self.backtesting.strategy.stoploss = params['stoploss'] processed = load(self.tickerdata_pickle) min_date, max_date = get_timeframe(processed) - results = self.backtest( + results = self.backtesting.backtest( { 'stake_amount': self.config['stake_amount'], 'processed': processed, @@ -345,9 +347,9 @@ class Hyperopt(Backtesting): data = load_data( datadir=Path(self.config['datadir']) if self.config.get('datadir') else None, pairs=self.config['exchange']['pair_whitelist'], - ticker_interval=self.ticker_interval, + ticker_interval=self.backtesting.ticker_interval, refresh_pairs=self.config.get('refresh_pairs', False), - exchange=self.exchange, + exchange=self.backtesting.exchange, timerange=timerange ) @@ -364,15 +366,15 @@ class Hyperopt(Backtesting): (max_date - min_date).days ) - self.strategy.advise_indicators = \ + self.backtesting.strategy.advise_indicators = \ self.custom_hyperopt.populate_indicators # type: ignore - preprocessed = self.strategy.tickerdata_to_dataframe(data) + preprocessed = self.backtesting.strategy.tickerdata_to_dataframe(data) dump(preprocessed, self.tickerdata_pickle) # We don't need exchange instance anymore while running hyperopt - self.exchange = None # type: ignore + self.backtesting.exchange = None # type: ignore self.load_previous_results() From 667a6233108ab2a9ae53865493ee267d7b77921f Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 24 Aug 2019 00:10:55 +0300 Subject: [PATCH 0313/3421] adjust tests --- freqtrade/tests/optimize/test_hyperopt.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index cfd75fd9d..7b525454c 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -429,7 +429,7 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: 'hyperopt_jobs': 1, }) hyperopt = Hyperopt(default_conf) - hyperopt.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) hyperopt.start() @@ -441,8 +441,8 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: assert dumper.called # Should be called twice, once for tickerdata, once to save evaluations assert dumper.call_count == 2 - assert hasattr(hyperopt, "advise_sell") - assert hasattr(hyperopt, "advise_buy") + assert hasattr(hyperopt.backtesting, "advise_sell") + assert hasattr(hyperopt.backtesting, "advise_buy") assert hasattr(hyperopt, "max_open_trades") assert hyperopt.max_open_trades == default_conf['max_open_trades'] assert hasattr(hyperopt, "position_stacking") @@ -488,7 +488,7 @@ def test_populate_indicators(hyperopt) -> None: tick = load_tickerdata_file(None, 'UNITTEST/BTC', '1m') tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", fill_missing=True)} - dataframes = hyperopt.strategy.tickerdata_to_dataframe(tickerlist) + dataframes = hyperopt.backtesting.strategy.tickerdata_to_dataframe(tickerlist) dataframe = hyperopt.custom_hyperopt.populate_indicators(dataframes['UNITTEST/BTC'], {'pair': 'UNITTEST/BTC'}) @@ -502,7 +502,7 @@ def test_buy_strategy_generator(hyperopt) -> None: tick = load_tickerdata_file(None, 'UNITTEST/BTC', '1m') tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", fill_missing=True)} - dataframes = hyperopt.strategy.tickerdata_to_dataframe(tickerlist) + dataframes = hyperopt.backtesting.strategy.tickerdata_to_dataframe(tickerlist) dataframe = hyperopt.custom_hyperopt.populate_indicators(dataframes['UNITTEST/BTC'], {'pair': 'UNITTEST/BTC'}) @@ -538,7 +538,7 @@ def test_generate_optimizer(mocker, default_conf) -> None: backtest_result = pd.DataFrame.from_records(trades, columns=labels) mocker.patch( - 'freqtrade.optimize.hyperopt.Hyperopt.backtest', + 'freqtrade.optimize.hyperopt.Backtesting.backtest', MagicMock(return_value=backtest_result) ) mocker.patch( @@ -644,7 +644,7 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: }) hyperopt = Hyperopt(default_conf) - hyperopt.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) hyperopt.start() @@ -681,7 +681,7 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> }) hyperopt = Hyperopt(default_conf) - hyperopt.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) hyperopt.start() From a8842f38ca12f6ebc59f6039206e91079297e13d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 24 Aug 2019 09:08:08 +0200 Subject: [PATCH 0314/3421] Fix wrong exception message --- freqtrade/configuration/config_validation.py | 2 +- freqtrade/tests/test_configuration.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 338b8959a..6a8374e6d 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -88,7 +88,7 @@ def _validate_trailing_stoploss(conf: Dict[str, Any]) -> None: if tsl_positive > 0 and 0 < tsl_offset <= tsl_positive: raise OperationalException( 'The config trailing_stop_positive_offset needs ' - 'to be greater than trailing_stop_positive_offset in your config.') + 'to be greater than trailing_stop_positive in your config.') # Fetch again without default if 'trailing_stop_positive' in conf and float(conf['trailing_stop_positive']) == 0.0: diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 618bd69cf..10ce7e8cf 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -668,7 +668,7 @@ def test_validate_tsl(default_conf): default_conf['trailing_stop_positive'] = 0.015 with pytest.raises(OperationalException, match=r'The config trailing_stop_positive_offset needs ' - 'to be greater than trailing_stop_positive_offset in your config.'): + 'to be greater than trailing_stop_positive in your config.'): validate_config_consistency(default_conf) default_conf['trailing_stop_positive'] = 0.01 From 69c2b12879d05dba7867240ddb52897c0c3f54d4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 16:02:03 +0200 Subject: [PATCH 0315/3421] Move plot_dataframe as freqtrade submodule --- freqtrade/configuration/arguments.py | 10 ++++++ freqtrade/plot/plot_utils.py | 15 +++++++++ freqtrade/plot/plotting.py | 46 ++++++++++++++++++++++++++-- freqtrade/utils.py | 3 -- 4 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 freqtrade/plot/plot_utils.py diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 2c76afa8f..61c899f93 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -119,6 +119,7 @@ class Arguments(object): hyperopt_cmd.set_defaults(func=start_hyperopt) self._build_args(optionlist=ARGS_HYPEROPT, parser=hyperopt_cmd) + # Create userdir subcommand create_userdir_cmd = subparsers.add_parser('create-userdir', help="Create user-data directory.") create_userdir_cmd.set_defaults(func=start_create_userdir) @@ -139,3 +140,12 @@ class Arguments(object): ) download_data_cmd.set_defaults(func=start_download_data) self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd) + + # Add Plotting subcommand + from freqtrade.plot.plot_utils import start_plot_dataframe + plot_dataframe_cmd = subparsers.add_parser( + 'plot-dataframe', + help='Plot candles with indicators.' + ) + plot_dataframe_cmd.set_defaults(func=start_plot_dataframe) + self._build_args(optionlist=ARGS_PLOT_DATAFRAME, parser=plot_dataframe_cmd) diff --git a/freqtrade/plot/plot_utils.py b/freqtrade/plot/plot_utils.py new file mode 100644 index 000000000..2a06ca185 --- /dev/null +++ b/freqtrade/plot/plot_utils.py @@ -0,0 +1,15 @@ +from argparse import Namespace + +from freqtrade.state import RunMode +from freqtrade.utils import setup_utils_configuration + + +def start_plot_dataframe(args: Namespace) -> None: + """ + Plotting dataframe + """ + # Import here to avoid errors if plot-dependencies are not installed. + from freqtrade.plot.plotting import analyse_and_plot_pairs + config = setup_utils_configuration(args, RunMode.OTHER) + + analyse_and_plot_pairs(config) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 9dc6b9551..f50987972 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -1,13 +1,14 @@ import logging from pathlib import Path -from typing import Dict, List, Optional +from typing import Any, Dict, List, Optional import pandas as pd from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import (combine_tickers_with_mean, - create_cum_profit, load_trades) + create_cum_profit, + extract_trades_of_period, load_trades) from freqtrade.exchange import Exchange from freqtrade.resolvers import ExchangeResolver, StrategyResolver @@ -321,3 +322,44 @@ def store_plot_file(fig, filename: str, directory: Path, auto_open: bool = False plot(fig, filename=str(_filename), auto_open=auto_open) logger.info(f"Stored plot as {_filename}") + + +def analyse_and_plot_pairs(config: Dict[str, Any]): + """ + From configuration provided + - Initializes plot-script + -Get tickers data + -Generate Dafaframes populated with indicators and signals + -Load trades excecuted on same periods + -Generate Plotly plot objects + -Generate plot files + :return: None + """ + plot_elements = init_plotscript(config) + trades = plot_elements['trades'] + strategy = plot_elements["strategy"] + + pair_counter = 0 + for pair, data in plot_elements["tickers"].items(): + pair_counter += 1 + logger.info("analyse pair %s", pair) + tickers = {} + tickers[pair] = data + + dataframe = strategy.analyze_ticker(tickers[pair], {'pair': pair}) + + trades_pair = trades.loc[trades['pair'] == pair] + trades_pair = extract_trades_of_period(dataframe, trades_pair) + + fig = generate_candlestick_graph( + pair=pair, + data=dataframe, + trades=trades_pair, + indicators1=config["indicators1"].split(","), + indicators2=config["indicators2"].split(",") + ) + + store_plot_file(fig, filename=generate_plot_filename(pair, config['ticker_interval']), + directory=config['user_data_dir'] / "plot") + + logger.info('End of ploting process %s plots generated', pair_counter) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 56e60ec82..07daaf074 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -108,6 +108,3 @@ def start_download_data(args: Namespace) -> None: logger.info( f"Pairs [{','.join(pairs_not_available)}] not available " f"on exchange {config['exchange']['name']}.") - - # configuration.resolve_pairs_list() - print(config) From f8c72feea8d8bcafc6dbe165a8548cd16b103aaf Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 16:21:48 +0200 Subject: [PATCH 0316/3421] Add some initial tests for plot_dataframe --- freqtrade/configuration/arguments.py | 6 ++---- freqtrade/plot/plot_utils.py | 2 +- freqtrade/plot/plotting.py | 10 +++++----- freqtrade/tests/test_plotting.py | 18 +++++++++++++++++- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 61c899f93..7b4a6f63f 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -34,10 +34,8 @@ ARGS_CREATE_USERDIR = ["user_data_dir"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "exchange", "timeframes", "erase"] -ARGS_PLOT_DATAFRAME = (ARGS_COMMON + ARGS_STRATEGY + - ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", - "trade_source", "export", "exportfilename", "timerange", - "refresh_pairs"]) +ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", + "trade_source", "export", "exportfilename", "timerange", "refresh_pairs"] ARGS_PLOT_PROFIT = (ARGS_COMMON + ARGS_STRATEGY + ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source"]) diff --git a/freqtrade/plot/plot_utils.py b/freqtrade/plot/plot_utils.py index 2a06ca185..125a1f46c 100644 --- a/freqtrade/plot/plot_utils.py +++ b/freqtrade/plot/plot_utils.py @@ -6,7 +6,7 @@ from freqtrade.utils import setup_utils_configuration def start_plot_dataframe(args: Namespace) -> None: """ - Plotting dataframe + Plotting dataframe helper """ # Import here to avoid errors if plot-dependencies are not installed. from freqtrade.plot.plotting import analyse_and_plot_pairs diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index f50987972..cb13e3147 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -328,11 +328,11 @@ def analyse_and_plot_pairs(config: Dict[str, Any]): """ From configuration provided - Initializes plot-script - -Get tickers data - -Generate Dafaframes populated with indicators and signals - -Load trades excecuted on same periods - -Generate Plotly plot objects - -Generate plot files + - Get tickers data + - Generate Dafaframes populated with indicators and signals based on configured strategy + - Load trades excecuted during the selected period + - Generate Plotly plot objects + - Generate plot files :return: None """ plot_elements = init_plotscript(config) diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index a78e38c1f..02660341e 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -9,13 +9,14 @@ from plotly.subplots import make_subplots from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import create_cum_profit, load_backtest_data +from freqtrade.plot.plot_utils import start_plot_dataframe from freqtrade.plot.plotting import (add_indicators, add_profit, generate_candlestick_graph, generate_plot_filename, generate_profit_graph, init_plotscript, plot_trades, store_plot_file) from freqtrade.strategy.default_strategy import DefaultStrategy -from freqtrade.tests.conftest import log_has, log_has_re +from freqtrade.tests.conftest import get_args, log_has, log_has_re def fig_generating_mock(fig, *args, **kwargs): @@ -270,3 +271,18 @@ def test_generate_profit_graph(): for pair in pairs: profit_pair = find_trace_in_fig_data(figure.data, f"Profit {pair}") assert isinstance(profit_pair, go.Scattergl) + + +def test_start_plot_dataframe(mocker): + aup = mocker.patch("freqtrade.plot.plotting.analyse_and_plot_pairs", MagicMock()) + args = [ + "--config", "config.json.example", + "plot-dataframe", + "--pairs", "ETH/BTC" + ] + start_plot_dataframe(get_args(args)) + + assert aup.call_count == 1 + called_config = aup.call_args_list[0][0][0] + assert "pairs" in called_config + assert called_config['pairs'] == ["ETH/BTC"] From 99b2be90fd19b4344c35256c25e998c0e307c624 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 16:24:57 +0200 Subject: [PATCH 0317/3421] Cleanup plotting (if you have backtest results, no need to download data!) --- freqtrade/configuration/arguments.py | 2 +- freqtrade/plot/plotting.py | 13 ++----------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 7b4a6f63f..da231dd32 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -35,7 +35,7 @@ ARGS_CREATE_USERDIR = ["user_data_dir"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "exchange", "timeframes", "erase"] ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", - "trade_source", "export", "exportfilename", "timerange", "refresh_pairs"] + "trade_source", "export", "exportfilename", "timerange"] ARGS_PLOT_PROFIT = (ARGS_COMMON + ARGS_STRATEGY + ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source"]) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index cb13e3147..02c341869 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -1,6 +1,6 @@ import logging from pathlib import Path -from typing import Any, Dict, List, Optional +from typing import Any, Dict, List import pandas as pd @@ -9,8 +9,7 @@ from freqtrade.data import history from freqtrade.data.btanalysis import (combine_tickers_with_mean, create_cum_profit, extract_trades_of_period, load_trades) -from freqtrade.exchange import Exchange -from freqtrade.resolvers import ExchangeResolver, StrategyResolver +from freqtrade.resolvers import StrategyResolver logger = logging.getLogger(__name__) @@ -29,12 +28,6 @@ def init_plotscript(config): Initialize objects needed for plotting :return: Dict with tickers, trades, pairs and strategy """ - exchange: Optional[Exchange] = None - - # Exchange is only needed when downloading data! - if config.get("refresh_pairs", False): - exchange = ExchangeResolver(config.get('exchange', {}).get('name'), - config).exchange strategy = StrategyResolver(config).strategy if "pairs" in config: @@ -49,9 +42,7 @@ def init_plotscript(config): datadir=Path(str(config.get("datadir"))), pairs=pairs, ticker_interval=config['ticker_interval'], - refresh_pairs=config.get('refresh_pairs', False), timerange=timerange, - exchange=exchange, ) trades = load_trades(config) From 29076acc699cf17a164d2671029f52c9754f7d29 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 16:43:28 +0200 Subject: [PATCH 0318/3421] Add test for analyse_and_plot --- freqtrade/plot/plotting.py | 2 +- freqtrade/tests/test_plotting.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 02c341869..a475fd18c 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -353,4 +353,4 @@ def analyse_and_plot_pairs(config: Dict[str, Any]): store_plot_file(fig, filename=generate_plot_filename(pair, config['ticker_interval']), directory=config['user_data_dir'] / "plot") - logger.info('End of ploting process %s plots generated', pair_counter) + logger.info('End of plotting process. %s plots generated', pair_counter) diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index 02660341e..39578d441 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -11,6 +11,7 @@ from freqtrade.data import history from freqtrade.data.btanalysis import create_cum_profit, load_backtest_data from freqtrade.plot.plot_utils import start_plot_dataframe from freqtrade.plot.plotting import (add_indicators, add_profit, + analyse_and_plot_pairs, generate_candlestick_graph, generate_plot_filename, generate_profit_graph, init_plotscript, @@ -286,3 +287,31 @@ def test_start_plot_dataframe(mocker): called_config = aup.call_args_list[0][0][0] assert "pairs" in called_config assert called_config['pairs'] == ["ETH/BTC"] + + +def test_analyse_and_plot_pairs(default_conf, mocker, caplog): + default_conf['trade_source'] = 'file' + default_conf["datadir"] = history.make_testdata_path(None) + default_conf['exportfilename'] = str( + history.make_testdata_path(None) / "backtest-result_test.json") + default_conf['indicators1'] = "sma5,ema10" + default_conf['indicators2'] = "macd" + default_conf['pairs'] = ["ETH/BTC", "LTC/BTC"] + + candle_mock = MagicMock() + store_mock = MagicMock() + mocker.patch.multiple( + "freqtrade.plot.plotting", + generate_candlestick_graph=candle_mock, + store_plot_file=store_mock + ) + analyse_and_plot_pairs(default_conf) + + # Both mocks should be called once per pair + assert candle_mock.call_count == 2 + assert store_mock.call_count == 2 + + assert candle_mock.call_args_list[0][1]['indicators1'] == ['sma5', 'ema10'] + assert candle_mock.call_args_list[0][1]['indicators2'] == ['macd'] + + assert log_has("End of plotting process. 2 plots generated", caplog) From f7cb75ff9362a8c955a0f1c73926781b72a3a2e9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 16:51:00 +0200 Subject: [PATCH 0319/3421] Add plot-profit command --- freqtrade/configuration/arguments.py | 13 ++++++++++--- freqtrade/plot/plot_utils.py | 13 ++++++++++++- freqtrade/plot/plotting.py | 21 ++++++++++++++++++++- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index da231dd32..794e8466d 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -37,8 +37,7 @@ ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "exchange", "timeframes", " ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", "trade_source", "export", "exportfilename", "timerange"] -ARGS_PLOT_PROFIT = (ARGS_COMMON + ARGS_STRATEGY + - ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source"]) +ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source"] NO_CONF_REQURIED = ["start_download_data"] @@ -140,10 +139,18 @@ class Arguments(object): self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd) # Add Plotting subcommand - from freqtrade.plot.plot_utils import start_plot_dataframe + from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit plot_dataframe_cmd = subparsers.add_parser( 'plot-dataframe', help='Plot candles with indicators.' ) plot_dataframe_cmd.set_defaults(func=start_plot_dataframe) self._build_args(optionlist=ARGS_PLOT_DATAFRAME, parser=plot_dataframe_cmd) + + # Plot profit + plot_profit_cmd = subparsers.add_parser( + 'plot-profit', + help='Generate plot showing profits.' + ) + plot_profit_cmd.set_defaults(func=start_plot_profit) + self._build_args(optionlist=ARGS_PLOT_PROFIT, parser=plot_profit_cmd) diff --git a/freqtrade/plot/plot_utils.py b/freqtrade/plot/plot_utils.py index 125a1f46c..11bc9f552 100644 --- a/freqtrade/plot/plot_utils.py +++ b/freqtrade/plot/plot_utils.py @@ -6,10 +6,21 @@ from freqtrade.utils import setup_utils_configuration def start_plot_dataframe(args: Namespace) -> None: """ - Plotting dataframe helper + Entrypoint for dataframe plotting """ # Import here to avoid errors if plot-dependencies are not installed. from freqtrade.plot.plotting import analyse_and_plot_pairs config = setup_utils_configuration(args, RunMode.OTHER) analyse_and_plot_pairs(config) + + +def start_plot_profit(args: Namespace) -> None: + """ + Entrypoint for plot_profit + """ + # Import here to avoid errors if plot-dependencies are not installed. + from freqtrade.plot.plotting import plot_profit + config = setup_utils_configuration(args, RunMode.OTHER) + + plot_profit(config) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index a475fd18c..62cbf0baa 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -19,7 +19,7 @@ try: from plotly.offline import plot import plotly.graph_objects as go except ImportError: - logger.exception("Module plotly not found \n Please install using `pip install plotly`") + logger.exception("Module plotly not found \n Please install using `pip3 install plotly`") exit(1) @@ -354,3 +354,22 @@ def analyse_and_plot_pairs(config: Dict[str, Any]): directory=config['user_data_dir'] / "plot") logger.info('End of plotting process. %s plots generated', pair_counter) + + +def plot_profit(config: Dict[str, Any]) -> None: + """ + Plots the total profit for all pairs. + Note, the profit calculation isn't realistic. + But should be somewhat proportional, and therefor useful + in helping out to find a good algorithm. + """ + plot_elements = init_plotscript(config) + trades = plot_elements['trades'] + # Filter trades to relevant pairs + trades = trades[trades['pair'].isin(plot_elements["pairs"])] + + # Create an average close price of all the pairs that were involved. + # this could be useful to gauge the overall market trend + fig = generate_profit_graph(plot_elements["pairs"], plot_elements["tickers"], trades) + store_plot_file(fig, filename='freqtrade-profit-plot.html', + directory=config['user_data_dir'] / "plot", auto_open=True) From c559f957030d87e312ad4c3f283fe6527d946852 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 16:51:09 +0200 Subject: [PATCH 0320/3421] Add test for plot-profit --- freqtrade/tests/test_plotting.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index 39578d441..705cde975 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -315,3 +315,18 @@ def test_analyse_and_plot_pairs(default_conf, mocker, caplog): assert candle_mock.call_args_list[0][1]['indicators2'] == ['macd'] assert log_has("End of plotting process. 2 plots generated", caplog) + + +def start_plot_profit(mocker): + aup = mocker.patch("freqtrade.plot.plotting.plot_profit", MagicMock()) + args = [ + "--config", "config.json.example", + "plot-profit", + "--pairs", "ETH/BTC" + ] + start_plot_profit(get_args(args)) + + assert aup.call_count == 1 + called_config = aup.call_args_list[0][0][0] + assert "pairs" in called_config + assert called_config['pairs'] == ["ETH/BTC"] From 0ef13be577b2bcbddcb61eea3122d5da7a7d5953 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 17:02:22 +0200 Subject: [PATCH 0321/3421] Test plot_profit --- freqtrade/tests/test_plotting.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index 705cde975..90306ffdb 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -15,7 +15,7 @@ from freqtrade.plot.plotting import (add_indicators, add_profit, generate_candlestick_graph, generate_plot_filename, generate_profit_graph, init_plotscript, - plot_trades, store_plot_file) + plot_profit, plot_trades, store_plot_file) from freqtrade.strategy.default_strategy import DefaultStrategy from freqtrade.tests.conftest import get_args, log_has, log_has_re @@ -330,3 +330,27 @@ def start_plot_profit(mocker): called_config = aup.call_args_list[0][0][0] assert "pairs" in called_config assert called_config['pairs'] == ["ETH/BTC"] + + +def test_plot_profit(default_conf, mocker, caplog): + default_conf['trade_source'] = 'file' + default_conf["datadir"] = history.make_testdata_path(None) + default_conf['exportfilename'] = str( + history.make_testdata_path(None) / "backtest-result_test.json") + default_conf['pairs'] = ["ETH/BTC", "LTC/BTC"] + + profit_mock = MagicMock() + store_mock = MagicMock() + mocker.patch.multiple( + "freqtrade.plot.plotting", + generate_profit_graph=profit_mock, + store_plot_file=store_mock + ) + plot_profit(default_conf) + + # Plot-profit generates one combined plot + assert profit_mock.call_count == 1 + assert store_mock.call_count == 1 + + assert profit_mock.call_args_list[0][0][0] == default_conf['pairs'] + assert store_mock.call_args_list[0][1]['auto_open'] == True From f8ddb1060725482dc914f2065a092ae4ec482b6a Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 17:09:58 +0200 Subject: [PATCH 0322/3421] switch indicators to nargs argument type --- freqtrade/configuration/cli_options.py | 10 ++++++---- freqtrade/plot/plotting.py | 4 ++-- freqtrade/tests/test_plotting.py | 6 +++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index d7e4e61b1..bf1ec3620 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -292,14 +292,16 @@ AVAILABLE_CLI_OPTIONS = { "indicators1": Arg( '--indicators1', help='Set indicators from your strategy you want in the first row of the graph. ' - 'Comma-separated list. Example: `ema3,ema5`. Default: `%(default)s`.', - default='sma,ema3,ema5', + 'Space-separated list. Example: `ema3 ema5`. Default: `%(default)s`.', + default=['sma', 'ema3', 'ema5'], + nargs='+', ), "indicators2": Arg( '--indicators2', help='Set indicators from your strategy you want in the third row of the graph. ' - 'Comma-separated list. Example: `fastd,fastk`. Default: `%(default)s`.', - default='macd,macdsignal', + 'Space-separated list. Example: `fastd fastk`. Default: `%(default)s`.', + default=['macd', 'macdsignal'], + nargs='+', ), "plot_limit": Arg( '--plot-limit', diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 62cbf0baa..a057d3d94 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -346,8 +346,8 @@ def analyse_and_plot_pairs(config: Dict[str, Any]): pair=pair, data=dataframe, trades=trades_pair, - indicators1=config["indicators1"].split(","), - indicators2=config["indicators2"].split(",") + indicators1=config["indicators1"], + indicators2=config["indicators2"], ) store_plot_file(fig, filename=generate_plot_filename(pair, config['ticker_interval']), diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index 90306ffdb..2790fc7db 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -294,8 +294,8 @@ def test_analyse_and_plot_pairs(default_conf, mocker, caplog): default_conf["datadir"] = history.make_testdata_path(None) default_conf['exportfilename'] = str( history.make_testdata_path(None) / "backtest-result_test.json") - default_conf['indicators1'] = "sma5,ema10" - default_conf['indicators2'] = "macd" + default_conf['indicators1'] = ["sma5", "ema10"] + default_conf['indicators2'] = ["macd"] default_conf['pairs'] = ["ETH/BTC", "LTC/BTC"] candle_mock = MagicMock() @@ -353,4 +353,4 @@ def test_plot_profit(default_conf, mocker, caplog): assert store_mock.call_count == 1 assert profit_mock.call_args_list[0][0][0] == default_conf['pairs'] - assert store_mock.call_args_list[0][1]['auto_open'] == True + assert store_mock.call_args_list[0][1]['auto_open'] is True From 518d7dfde8d9f858945fa52b6d7d79d2d1e23d5b Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 17:11:16 +0200 Subject: [PATCH 0323/3421] Replace plot-scripts with pointers to the new commands --- scripts/plot_dataframe.py | 99 ++------------------------------------- scripts/plot_profit.py | 65 ++----------------------- 2 files changed, 10 insertions(+), 154 deletions(-) diff --git a/scripts/plot_dataframe.py b/scripts/plot_dataframe.py index db4f99d61..62c4bc39f 100755 --- a/scripts/plot_dataframe.py +++ b/scripts/plot_dataframe.py @@ -1,100 +1,11 @@ #!/usr/bin/env python3 -""" -Script to display when the bot will buy on specific pair(s) -Use `python plot_dataframe.py --help` to display the command line arguments - -Indicators recommended -Row 1: sma, ema3, ema5, ema10, ema50 -Row 3: macd, rsi, fisher_rsi, mfi, slowd, slowk, fastd, fastk - -Example of usage: -> python3 scripts/plot_dataframe.py --pairs BTC/EUR,XRP/BTC -d user_data/data/ - --indicators1 sma,ema3 --indicators2 fastk,fastd -""" -import logging import sys -from typing import Any, Dict, List - -from freqtrade.configuration import Arguments -from freqtrade.configuration.arguments import ARGS_PLOT_DATAFRAME -from freqtrade.data.btanalysis import extract_trades_of_period -from freqtrade.optimize import setup_configuration -from freqtrade.plot.plotting import (init_plotscript, generate_candlestick_graph, - store_plot_file, - generate_plot_filename) -from freqtrade.state import RunMode - -logger = logging.getLogger(__name__) -def analyse_and_plot_pairs(config: Dict[str, Any]): - """ - From arguments provided in cli: - -Initialise backtest env - -Get tickers data - -Generate Dafaframes populated with indicators and signals - -Load trades excecuted on same periods - -Generate Plotly plot objects - -Generate plot files - :return: None - """ - plot_elements = init_plotscript(config) - trades = plot_elements['trades'] - strategy = plot_elements["strategy"] +print("This script has been integrated into freqtrade " + "and its functionality is available by calling `freqtrade plot-dataframe`.") +print("Please check the documentation on https://www.freqtrade.io/en/latest/plotting/ " + "for details.") - pair_counter = 0 - for pair, data in plot_elements["tickers"].items(): - pair_counter += 1 - logger.info("analyse pair %s", pair) - tickers = {} - tickers[pair] = data - - dataframe = strategy.analyze_ticker(tickers[pair], {'pair': pair}) - - trades_pair = trades.loc[trades['pair'] == pair] - trades_pair = extract_trades_of_period(dataframe, trades_pair) - - fig = generate_candlestick_graph( - pair=pair, - data=dataframe, - trades=trades_pair, - indicators1=config["indicators1"].split(","), - indicators2=config["indicators2"].split(",") - ) - - store_plot_file(fig, filename=generate_plot_filename(pair, config['ticker_interval']), - directory=config['user_data_dir'] / "plot") - - logger.info('End of ploting process %s plots generated', pair_counter) - - -def plot_parse_args(args: List[str]) -> Dict[str, Any]: - """ - Parse args passed to the script - :param args: Cli arguments - :return: args: Array with all arguments - """ - arguments = Arguments(args, 'Graph dataframe') - arguments._build_args(optionlist=ARGS_PLOT_DATAFRAME) - parsed_args = arguments._parse_args() - - # Load the configuration - config = setup_configuration(parsed_args, RunMode.OTHER) - return config - - -def main(sysargv: List[str]) -> None: - """ - This function will initiate the bot and start the trading loop. - :return: None - """ - logger.info('Starting Plot Dataframe') - analyse_and_plot_pairs( - plot_parse_args(sysargv) - ) - exit() - - -if __name__ == '__main__': - main(sys.argv[1:]) +sys.exit(1) diff --git a/scripts/plot_profit.py b/scripts/plot_profit.py index 578ddf15f..c9a23c1ee 100755 --- a/scripts/plot_profit.py +++ b/scripts/plot_profit.py @@ -1,66 +1,11 @@ #!/usr/bin/env python3 -""" -Script to display profits -Use `python plot_profit.py --help` to display the command line arguments -""" -import logging import sys -from typing import Any, Dict, List - -from freqtrade.configuration import Arguments -from freqtrade.configuration.arguments import ARGS_PLOT_PROFIT -from freqtrade.optimize import setup_configuration -from freqtrade.plot.plotting import init_plotscript, generate_profit_graph, store_plot_file -from freqtrade.state import RunMode - -logger = logging.getLogger(__name__) -def plot_profit(config: Dict[str, Any]) -> None: - """ - Plots the total profit for all pairs. - Note, the profit calculation isn't realistic. - But should be somewhat proportional, and therefor useful - in helping out to find a good algorithm. - """ - plot_elements = init_plotscript(config) - trades = plot_elements['trades'] - # Filter trades to relevant pairs - trades = trades[trades['pair'].isin(plot_elements["pairs"])] +print("This script has been integrated into freqtrade " + "and its functionality is available by calling `freqtrade plot-profit`.") +print("Please check the documentation on https://www.freqtrade.io/en/latest/plotting/ " + "for details.") - # Create an average close price of all the pairs that were involved. - # this could be useful to gauge the overall market trend - fig = generate_profit_graph(plot_elements["pairs"], plot_elements["tickers"], trades) - store_plot_file(fig, filename='freqtrade-profit-plot.html', - directory=config['user_data_dir'] / "plot", auto_open=True) - - -def plot_parse_args(args: List[str]) -> Dict[str, Any]: - """ - Parse args passed to the script - :param args: Cli arguments - :return: args: Array with all arguments - """ - arguments = Arguments(args, 'Graph profits') - arguments._build_args(optionlist=ARGS_PLOT_PROFIT) - parsed_args = arguments._parse_args() - - # Load the configuration - config = setup_configuration(parsed_args, RunMode.OTHER) - return config - - -def main(sysargv: List[str]) -> None: - """ - This function will initiate the bot and start the trading loop. - :return: None - """ - logger.info('Starting Plot Dataframe') - plot_profit( - plot_parse_args(sysargv) - ) - - -if __name__ == '__main__': - main(sys.argv[1:]) +sys.exit(1) From 1b374fcf7e8271fc600fc4959e70b2f33c3da26f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 17:16:33 +0200 Subject: [PATCH 0324/3421] Improve plotting documentation --- docs/plotting.md | 104 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 85 insertions(+), 19 deletions(-) diff --git a/docs/plotting.md b/docs/plotting.md index 5a1e9757a..5e3b47311 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -12,25 +12,67 @@ pip install -U -r requirements-plot.txt ## Plot price and indicators -Usage for the price plotter: +Usage for the candlestick plotting: + +``` +usage: freqtrade plot-dataframe [-h] [-p PAIRS [PAIRS ...]] + [--indicators1 INDICATORS1 [INDICATORS1 ...]] + [--indicators2 INDICATORS2 [INDICATORS2 ...]] + [--plot-limit INT] [--db-url PATH] + [--trade-source {DB,file}] [--export EXPORT] + [--export-filename PATH] + [--timerange TIMERANGE] + +optional arguments: + -h, --help show this help message and exit + -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] + Show profits for only these pairs. Pairs are space- + separated. + --indicators1 INDICATORS1 [INDICATORS1 ...] + Set indicators from your strategy you want in the + first row of the graph. Space-separated list. Example: + `ema3 ema5`. Default: `['sma', 'ema3', 'ema5']`. + --indicators2 INDICATORS2 [INDICATORS2 ...] + Set indicators from your strategy you want in the + third row of the graph. Space-separated list. Example: + `fastd fastk`. Default: `['macd', 'macdsignal']`. + --plot-limit INT Specify tick limit for plotting. Notice: too high + values cause huge files. Default: 750. + --db-url PATH Override trades database URL, this is useful in custom + deployments (default: `sqlite:///tradesv3.sqlite` for + Live Run mode, `sqlite://` for Dry Run). + --trade-source {DB,file} + Specify the source for trades (Can be DB or file + (backtest file)) Default: file + --export EXPORT Export backtest results, argument are: trades. + Example: `--export=trades` + --export-filename PATH + Save backtest results to the file with this filename + (default: `user_data/backtest_results/backtest- + result.json`). Requires `--export` to be set as well. + Example: `--export-filename=user_data/backtest_results + /backtest_today.json` + --timerange TIMERANGE + Specify what timerange of data to use. -``` bash -python3 script/plot_dataframe.py [-h] [-p pairs] ``` Example ``` bash -python3 scripts/plot_dataframe.py -p BTC/ETH +freqtrade plot-dataframe -p BTC/ETH ``` -The `-p` pairs argument can be used to specify pairs you would like to plot. +The `--pairs` argument can be used to specify pairs you would like to plot. + +!!! Note + Generates one plot-file per pair. Specify custom indicators. Use `--indicators1` for the main plot and `--indicators2` for the subplot below (if values are in a different range than prices). ``` bash -python3 scripts/plot_dataframe.py -p BTC/ETH --indicators1 sma,ema --indicators2 macd +freqtrade plot-dataframe -p BTC/ETH --indicators1 sma ema --indicators2 macd ``` ### Advanced use @@ -38,32 +80,32 @@ python3 scripts/plot_dataframe.py -p BTC/ETH --indicators1 sma,ema --indicators2 To plot multiple pairs, separate them with a comma: ``` bash -python3 scripts/plot_dataframe.py -p BTC/ETH,XRP/ETH +freqtrade plot-dataframe -p BTC/ETH XRP/ETH ``` To plot a timerange (to zoom in): ``` bash -python3 scripts/plot_dataframe.py -p BTC/ETH --timerange=20180801-20180805 +freqtrade plot-dataframe -p BTC/ETH --timerange=20180801-20180805 ``` To plot trades stored in a database use `--db-url` argument: ``` bash -python3 scripts/plot_dataframe.py --db-url sqlite:///tradesv3.dry_run.sqlite -p BTC/ETH --trade-source DB +freqtrade plot-dataframe --db-url sqlite:///tradesv3.dry_run.sqlite -p BTC/ETH --trade-source DB ``` To plot trades from a backtesting result, use `--export-filename ` ``` bash -python3 scripts/plot_dataframe.py --export-filename user_data/backtest_results/backtest-result.json -p BTC/ETH +freqtrade plot-dataframe --export-filename user_data/backtest_results/backtest-result.json -p BTC/ETH ``` To plot a custom strategy the strategy should have first be backtested. The results may then be plotted with the -s argument: ``` bash -python3 scripts/plot_dataframe.py -s Strategy_Name -p BTC/ETH --datadir user_data/data// +freqtrade plot-dataframe -s Strategy_Name -p BTC/ETH --datadir user_data/data// ``` ## Plot profit @@ -76,26 +118,50 @@ The profit plotter shows a picture with three plots: more of an estimate. 3) Each pair individually profit -The first graph is good to get a grip of how the overall market -progresses. +The first graph is good to get a grip of how the overall market progresses. The second graph will show how your algorithm works or doesn't. Perhaps you want an algorithm that steadily makes small profits, or one that acts less seldom, but makes big swings. -The third graph can be useful to spot outliers, events in pairs -that makes profit spikes. +The third graph can be useful to spot outliers, events in pairs that makes profit spikes. Usage for the profit plotter: -``` bash -python3 script/plot_profit.py [-h] [-p pair] [--datadir directory] [--ticker_interval num] +``` +usage: freqtrade plot-profit [-h] [-p PAIRS [PAIRS ...]] + [--timerange TIMERANGE] [--export EXPORT] + [--export-filename PATH] [--db-url PATH] + [--trade-source {DB,file}] + +optional arguments: + -h, --help show this help message and exit + -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] + Show profits for only these pairs. Pairs are space- + separated. + --timerange TIMERANGE + Specify what timerange of data to use. + --export EXPORT Export backtest results, argument are: trades. + Example: `--export=trades` + --export-filename PATH + Save backtest results to the file with this filename + (default: `user_data/backtest_results/backtest- + result.json`). Requires `--export` to be set as well. + Example: `--export-filename=user_data/backtest_results + /backtest_today.json` + --db-url PATH Override trades database URL, this is useful in custom + deployments (default: `sqlite:///tradesv3.sqlite` for + Live Run mode, `sqlite://` for Dry Run). + --trade-source {DB,file} + Specify the source for trades (Can be DB or file + (backtest file)) Default: file + ``` -The `-p` pair argument, can be used to plot a single pair +The `--pairs` argument, can be used to limit the pairs that are considered for this calculation. Example ``` bash -python3 scripts/plot_profit.py --datadir ../freqtrade/freqtrade/tests/testdata-20171221/ -p LTC/BTC +freqtrade plot-profit --datadir ../freqtrade/freqtrade/tests/testdata-20171221/ -p LTC/BTC ``` From 545e5c5bc6f1589770d2b8305133f6cfaf2c1a17 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 20:17:36 +0200 Subject: [PATCH 0325/3421] simplify load_trades call --- freqtrade/data/btanalysis.py | 10 +++++----- freqtrade/plot/plotting.py | 5 ++++- freqtrade/tests/data/test_btanalysis.py | 11 +++++++---- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 36d8aedbb..992100cbd 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -112,16 +112,16 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: return trades -def load_trades(config) -> pd.DataFrame: +def load_trades(source: str, db_url: str, exportfilename: str) -> pd.DataFrame: """ Based on configuration option "trade_source": * loads data from DB (using `db_url`) * loads data from backtestfile (using `exportfilename`) """ - if config["trade_source"] == "DB": - return load_trades_from_db(config["db_url"]) - elif config["trade_source"] == "file": - return load_backtest_data(Path(config["exportfilename"])) + if source == "DB": + return load_trades_from_db(db_url) + elif source == "file": + return load_backtest_data(Path(exportfilename)) def extract_trades_of_period(dataframe: pd.DataFrame, trades: pd.DataFrame) -> pd.DataFrame: diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index a057d3d94..900e9e90c 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -45,7 +45,10 @@ def init_plotscript(config): timerange=timerange, ) - trades = load_trades(config) + trades = load_trades(config['trade_source'], + db_url=config.get('db_url'), + exportfilename=config.get('exportfilename'), + ) return {"tickers": tickers, "trades": trades, "pairs": pairs, diff --git a/freqtrade/tests/data/test_btanalysis.py b/freqtrade/tests/data/test_btanalysis.py index cf8cae566..90602b4fc 100644 --- a/freqtrade/tests/data/test_btanalysis.py +++ b/freqtrade/tests/data/test_btanalysis.py @@ -89,17 +89,20 @@ def test_load_trades(default_conf, mocker): db_mock = mocker.patch("freqtrade.data.btanalysis.load_trades_from_db", MagicMock()) bt_mock = mocker.patch("freqtrade.data.btanalysis.load_backtest_data", MagicMock()) - default_conf['trade_source'] = "DB" - load_trades(default_conf) + load_trades("DB", + db_url=default_conf.get('db_url'), + exportfilename=default_conf.get('exportfilename'), + ) assert db_mock.call_count == 1 assert bt_mock.call_count == 0 db_mock.reset_mock() bt_mock.reset_mock() - default_conf['trade_source'] = "file" default_conf['exportfilename'] = "testfile.json" - load_trades(default_conf) + load_trades("file", + db_url=default_conf.get('db_url'), + exportfilename=default_conf.get('exportfilename'),) assert db_mock.call_count == 0 assert bt_mock.call_count == 1 From 9f29ad77bd45efc8d53421d726f45f59fbb4d256 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 20:23:38 +0200 Subject: [PATCH 0326/3421] fix test after plot_dataframe change --- freqtrade/tests/test_arguments.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/freqtrade/tests/test_arguments.py b/freqtrade/tests/test_arguments.py index 24f11e32e..e80703418 100644 --- a/freqtrade/tests/test_arguments.py +++ b/freqtrade/tests/test_arguments.py @@ -4,7 +4,6 @@ import argparse import pytest from freqtrade.configuration import Arguments -from freqtrade.configuration.arguments import ARGS_PLOT_DATAFRAME from freqtrade.configuration.cli_options import check_int_positive @@ -149,16 +148,17 @@ def test_download_data_options() -> None: def test_plot_dataframe_options() -> None: args = [ - '--indicators1', 'sma10,sma100', - '--indicators2', 'macd,fastd,fastk', + '-c', 'config.json.example', + 'plot-dataframe', + '--indicators1', 'sma10', 'sma100', + '--indicators2', 'macd', 'fastd', 'fastk', '--plot-limit', '30', '-p', 'UNITTEST/BTC', ] - arguments = Arguments(args, '') - arguments._build_args(ARGS_PLOT_DATAFRAME) - pargs = arguments._parse_args() - assert pargs.indicators1 == "sma10,sma100" - assert pargs.indicators2 == "macd,fastd,fastk" + pargs = Arguments(args, '').get_parsed_arg() + + assert pargs.indicators1 == ["sma10", "sma100"] + assert pargs.indicators2 == ["macd", "fastd", "fastk"] assert pargs.plot_limit == 30 assert pargs.pairs == ["UNITTEST/BTC"] From 395414ccde7a426ea9d696ef902bbaacc8587937 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Aug 2019 20:32:06 +0200 Subject: [PATCH 0327/3421] Refactor init_plotscript a bit (strategy is not needed for plot_profit) --- freqtrade/configuration/arguments.py | 5 +++-- freqtrade/plot/plotting.py | 15 +++++++++------ freqtrade/tests/test_plotting.py | 1 - 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 794e8466d..4bd4410a6 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -35,9 +35,10 @@ ARGS_CREATE_USERDIR = ["user_data_dir"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "exchange", "timeframes", "erase"] ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", - "trade_source", "export", "exportfilename", "timerange"] + "trade_source", "export", "exportfilename", "timerange", "ticker_interval"] -ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source"] +ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", + "trade_source", "ticker_interval"] NO_CONF_REQURIED = ["start_download_data"] diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 900e9e90c..5966f8ae9 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -26,10 +26,9 @@ except ImportError: def init_plotscript(config): """ Initialize objects needed for plotting - :return: Dict with tickers, trades, pairs and strategy + :return: Dict with tickers, trades and pairs """ - strategy = StrategyResolver(config).strategy if "pairs" in config: pairs = config["pairs"] else: @@ -41,7 +40,7 @@ def init_plotscript(config): tickers = history.load_data( datadir=Path(str(config.get("datadir"))), pairs=pairs, - ticker_interval=config['ticker_interval'], + ticker_interval=config.get('ticker_interval', '5m'), timerange=timerange, ) @@ -49,10 +48,10 @@ def init_plotscript(config): db_url=config.get('db_url'), exportfilename=config.get('exportfilename'), ) + return {"tickers": tickers, "trades": trades, "pairs": pairs, - "strategy": strategy, } @@ -329,9 +328,10 @@ def analyse_and_plot_pairs(config: Dict[str, Any]): - Generate plot files :return: None """ + strategy = StrategyResolver(config).strategy + plot_elements = init_plotscript(config) trades = plot_elements['trades'] - strategy = plot_elements["strategy"] pair_counter = 0 for pair, data in plot_elements["tickers"].items(): @@ -367,7 +367,10 @@ def plot_profit(config: Dict[str, Any]) -> None: in helping out to find a good algorithm. """ plot_elements = init_plotscript(config) - trades = plot_elements['trades'] + trades = load_trades(config['trade_source'], + db_url=config.get('db_url'), + exportfilename=config.get('exportfilename'), + ) # Filter trades to relevant pairs trades = trades[trades['pair'].isin(plot_elements["pairs"])] diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index 2790fc7db..9f53809d1 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -51,7 +51,6 @@ def test_init_plotscript(default_conf, mocker): assert "tickers" in ret assert "trades" in ret assert "pairs" in ret - assert "strategy" in ret default_conf['pairs'] = ["POWR/BTC", "XLM/BTC"] ret = init_plotscript(default_conf) From d711b8c0e9851bddb7a509a426765bafd85d58d7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 23 Aug 2019 20:42:59 +0200 Subject: [PATCH 0328/3421] Plot-profit should have subtitles per subplot --- freqtrade/plot/plotting.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 5966f8ae9..1cc63ba1b 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -274,7 +274,8 @@ def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame], name='Avg close price', ) - fig = make_subplots(rows=3, cols=1, shared_xaxes=True, row_width=[1, 1, 1]) + fig = make_subplots(rows=3, cols=1, shared_xaxes=True, row_width=[1, 1, 1], + subplot_titles=["AVG Close Price", "Combined Profit", "Protit per pair"]) fig['layout'].update(title="Profit plot") fig.add_trace(avgclose, 1, 1) From 2ae398913d0fbfe232dec90fd8c3aa76c78dd124 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 23 Aug 2019 20:43:39 +0200 Subject: [PATCH 0329/3421] Fix bug in bt-analysis when multiple trades sell at the same time --- freqtrade/data/btanalysis.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 992100cbd..b03bdb74d 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -157,7 +157,8 @@ def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str) -> :param trades: DataFrame containing trades (requires columns close_time and profitperc) :return: Returns df with one additional column, col_name, containing the cumulative profit. """ - df[col_name] = trades.set_index('close_time')['profitperc'].cumsum() + # Use groupby/sum().cumsum() to avoid errors when multiple trades sold at the same candle. + df[col_name] = trades.groupby('close_time')['profitperc'].sum().cumsum() # Set first value to 0 df.loc[df.iloc[0].name, col_name] = 0 # FFill to get continuous From fb498795ad2de3bdca74e0719e68d4e980b49134 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 24 Aug 2019 14:49:35 +0200 Subject: [PATCH 0330/3421] Improve profit-plot styling --- freqtrade/plot/plotting.py | 10 ++++++++-- freqtrade/tests/test_plotting.py | 4 ++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 1cc63ba1b..d65e8c69d 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -274,9 +274,15 @@ def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame], name='Avg close price', ) - fig = make_subplots(rows=3, cols=1, shared_xaxes=True, row_width=[1, 1, 1], - subplot_titles=["AVG Close Price", "Combined Profit", "Protit per pair"]) + fig = make_subplots(rows=3, cols=1, shared_xaxes=True, + row_width=[1, 1, 1], + vertical_spacing=0.05, + subplot_titles=["AVG Close Price", "Combined Profit", "Profit per pair"]) fig['layout'].update(title="Profit plot") + fig['layout']['yaxis1'].update(title='Price') + fig['layout']['yaxis2'].update(title='Profit') + fig['layout']['yaxis3'].update(title='Profit') + fig['layout']['xaxis']['rangeslider'].update(visible=False) fig.add_trace(avgclose, 1, 1) fig = add_profit(fig, 2, df_comb, 'cum_profit', 'Profit') diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index 9f53809d1..52ed6f3e7 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -259,6 +259,10 @@ def test_generate_profit_graph(): assert isinstance(fig, go.Figure) assert fig.layout.title.text == "Profit plot" + assert fig.layout.yaxis.title.text == "Price" + assert fig.layout.yaxis2.title.text == "Profit" + assert fig.layout.yaxis3.title.text == "Profit" + figure = fig.layout.figure assert len(figure.data) == 4 From 661cd65bdddca204676f812d49f29d0e6f562f49 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 24 Aug 2019 15:09:33 +0200 Subject: [PATCH 0331/3421] Improvements to plot documentation --- docs/assets/plot-dataframe.png | Bin 0 -> 177349 bytes docs/assets/plot-profit.png | Bin 0 -> 119925 bytes docs/plotting.md | 76 ++++++++++++++++++++------------- 3 files changed, 46 insertions(+), 30 deletions(-) create mode 100644 docs/assets/plot-dataframe.png create mode 100644 docs/assets/plot-profit.png diff --git a/docs/assets/plot-dataframe.png b/docs/assets/plot-dataframe.png new file mode 100644 index 0000000000000000000000000000000000000000..eb90a173469bafbd11afd28c31c8e3eccd9b9e5b GIT binary patch literal 177349 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

y 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

CLz8o1U8Dr=!D`r6ufzSh$S!FWYCieMFEQ`j3 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 literal 0 HcmV?d00001 diff --git a/docs/plotting.md b/docs/plotting.md index 5e3b47311..00fdd33a4 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -2,9 +2,9 @@ This page explains how to plot prices, indicators and profits. -## Installation +## Installation / Setup -Plotting scripts use Plotly library. Install/upgrade it with: +Plotting modules use the Plotly library. You can install / upgrade this by running the following command: ``` bash pip install -U -r requirements-plot.txt @@ -12,7 +12,15 @@ pip install -U -r requirements-plot.txt ## Plot price and indicators -Usage for the candlestick plotting: +Plot dataframe shows an interactive graph with three subplots: + +* Main plot with candlestics and indicators following price (sma/ema) +* Volume bars +* Additional indicators as specified by `--indicators2` + +![plot-dataframe](assets/plot-dataframe.png) + +Possible arguments: ``` usage: freqtrade plot-dataframe [-h] [-p PAIRS [PAIRS ...]] @@ -57,7 +65,7 @@ optional arguments: ``` -Example +Example: ``` bash freqtrade plot-dataframe -p BTC/ETH @@ -71,62 +79,58 @@ The `--pairs` argument can be used to specify pairs you would like to plot. Specify custom indicators. Use `--indicators1` for the main plot and `--indicators2` for the subplot below (if values are in a different range than prices). +!!! tip + You will almost certainly want to specify a custom strategy! This can be done by adding `--strategy ClassName` to the command. + ``` bash -freqtrade plot-dataframe -p BTC/ETH --indicators1 sma ema --indicators2 macd +freqtrade --strategy AwesomeStrategy plot-dataframe -p BTC/ETH --indicators1 sma ema --indicators2 macd ``` -### Advanced use +### Further usage examples -To plot multiple pairs, separate them with a comma: +To plot multiple pairs, separate them with a space: ``` bash -freqtrade plot-dataframe -p BTC/ETH XRP/ETH +freqtrade --strategy AwesomeStrategy plot-dataframe -p BTC/ETH XRP/ETH ``` -To plot a timerange (to zoom in): +To plot a timerange (to zoom in) ``` bash -freqtrade plot-dataframe -p BTC/ETH --timerange=20180801-20180805 +freqtrade --strategy AwesomeStrategy plot-dataframe -p BTC/ETH --timerange=20180801-20180805 ``` -To plot trades stored in a database use `--db-url` argument: +To plot trades stored in a database use `--db-url` in combination with `--trade-source DB`: ``` bash -freqtrade plot-dataframe --db-url sqlite:///tradesv3.dry_run.sqlite -p BTC/ETH --trade-source DB +freqtrade --strategy AwesomeStrategy plot-dataframe --db-url sqlite:///tradesv3.dry_run.sqlite -p BTC/ETH --trade-source DB ``` To plot trades from a backtesting result, use `--export-filename ` ``` bash -freqtrade plot-dataframe --export-filename user_data/backtest_results/backtest-result.json -p BTC/ETH -``` - -To plot a custom strategy the strategy should have first be backtested. -The results may then be plotted with the -s argument: - -``` bash -freqtrade plot-dataframe -s Strategy_Name -p BTC/ETH --datadir user_data/data// +freqtrade --strategy AwesomeStrategy plot-dataframe --export-filename user_data/backtest_results/backtest-result.json -p BTC/ETH ``` ## Plot profit -The profit plotter shows a picture with three plots: +![plot-profit](assets/plot-profit.png) + +Plot profit shows an interactive graph with three plots: 1) Average closing price for all pairs 2) The summarized profit made by backtesting. - Note that this is not the real-world profit, but - more of an estimate. -3) Each pair individually profit + Note that this is not the real-world profit, but more of an estimate. +3) Profit for each individual pair The first graph is good to get a grip of how the overall market progresses. -The second graph will show how your algorithm works or doesn't. -Perhaps you want an algorithm that steadily makes small profits, -or one that acts less seldom, but makes big swings. +The second graph will show if your algorithm works or doesn't. +Perhaps you want an algorithm that steadily makes small profits, or one that acts less often, but makes big swings. -The third graph can be useful to spot outliers, events in pairs that makes profit spikes. +The third graph can be useful to spot outliers, events in pairs that cause profit spikes. -Usage for the profit plotter: +Usage for the plot-profit module: ``` usage: freqtrade plot-profit [-h] [-p PAIRS [PAIRS ...]] @@ -160,7 +164,19 @@ optional arguments: The `--pairs` argument, can be used to limit the pairs that are considered for this calculation. -Example +Examples: + +Use custom backtest-export file + +``` bash +freqtrade plot-profit -p LTC/BTC --export-filename user_data/backtest_results/backtest-result-Strategy005.json +``` + +Use custom database + +``` bash +freqtrade plot-profit -p LTC/BTC --db-url sqlite:///tradesv3.sqlite --trade-source DB +``` ``` bash freqtrade plot-profit --datadir ../freqtrade/freqtrade/tests/testdata-20171221/ -p LTC/BTC From 1336781f8f0261308ba935b56d8402acf434a4f7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 24 Aug 2019 15:09:43 +0200 Subject: [PATCH 0332/3421] Reorder points in documentation to group analysis points --- mkdocs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index b5e759432..869c6565c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -14,12 +14,12 @@ nav: - Backtesting: backtesting.md - Hyperopt: hyperopt.md - Edge positioning: edge.md - - Plotting: plotting.md - - Deprecated features: deprecated.md - FAQ: faq.md - Data Analysis: data-analysis.md + - Plotting: plotting.md - SQL Cheatsheet: sql_cheatsheet.md - Sandbox testing: sandbox-testing.md + - Deprecated features: deprecated.md - Contributors guide: developer.md theme: name: material From 240936eb1981985b0c7a9fbf5ee7cc05f1a3799d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 24 Aug 2019 15:21:16 +0200 Subject: [PATCH 0333/3421] Small fixes --- docs/assets/plot-profit.png | Bin 119925 -> 123698 bytes freqtrade/plot/plotting.py | 6 +++--- freqtrade/tests/test_plotting.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/assets/plot-profit.png b/docs/assets/plot-profit.png index 6e8664a1e273f197f39db42e6072bd6745d98d97..88d69a2d479f8c1d42744567acf028cd8c36ced0 100644 GIT binary patch literal 123698 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%0Dm%EnmKHbxml|J(ADtNd=d`eTZdDC5bcanVG*V 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 diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index d65e8c69d..b0b8e3df9 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -278,7 +278,7 @@ def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame], row_width=[1, 1, 1], vertical_spacing=0.05, subplot_titles=["AVG Close Price", "Combined Profit", "Profit per pair"]) - fig['layout'].update(title="Profit plot") + fig['layout'].update(title="Freqtrade Profit plot") fig['layout']['yaxis1'].update(title='Price') fig['layout']['yaxis2'].update(title='Profit') fig['layout']['yaxis3'].update(title='Profit') @@ -375,8 +375,8 @@ def plot_profit(config: Dict[str, Any]) -> None: """ plot_elements = init_plotscript(config) trades = load_trades(config['trade_source'], - db_url=config.get('db_url'), - exportfilename=config.get('exportfilename'), + db_url=str(config.get('db_url')), + exportfilename=str(config.get('exportfilename')), ) # Filter trades to relevant pairs trades = trades[trades['pair'].isin(plot_elements["pairs"])] diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index 52ed6f3e7..cc9625e3f 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -258,7 +258,7 @@ def test_generate_profit_graph(): fig = generate_profit_graph(pairs, tickers, trades) assert isinstance(fig, go.Figure) - assert fig.layout.title.text == "Profit plot" + assert fig.layout.title.text == "Freqtrade Profit plot" assert fig.layout.yaxis.title.text == "Price" assert fig.layout.yaxis2.title.text == "Profit" assert fig.layout.yaxis3.title.text == "Profit" From 3121206afe547ad9ead3267e0d33a456493c837c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 24 Aug 2019 15:35:43 +0200 Subject: [PATCH 0334/3421] correct wrongly named test --- freqtrade/tests/test_plotting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py index cc9625e3f..df208d4d2 100644 --- a/freqtrade/tests/test_plotting.py +++ b/freqtrade/tests/test_plotting.py @@ -9,7 +9,7 @@ from plotly.subplots import make_subplots from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import create_cum_profit, load_backtest_data -from freqtrade.plot.plot_utils import start_plot_dataframe +from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit from freqtrade.plot.plotting import (add_indicators, add_profit, analyse_and_plot_pairs, generate_candlestick_graph, @@ -320,7 +320,7 @@ def test_analyse_and_plot_pairs(default_conf, mocker, caplog): assert log_has("End of plotting process. 2 plots generated", caplog) -def start_plot_profit(mocker): +def test_start_plot_profit(mocker): aup = mocker.patch("freqtrade.plot.plotting.plot_profit", MagicMock()) args = [ "--config", "config.json.example", From 3f6eeda3f0e76627e9b62b672d59e7be46ef64f5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 24 Aug 2019 18:06:14 +0200 Subject: [PATCH 0335/3421] Reset stoploss_order_id when recreating fails --- freqtrade/freqtradebot.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e5ecef8bf..e88b9db6a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -662,6 +662,7 @@ class FreqtradeBot(object): return False except DependencyException as exception: + trade.stoploss_order_id = None logger.warning('Unable to place a stoploss order on exchange: %s', exception) # If stoploss order is canceled for some reason we add it @@ -674,6 +675,7 @@ class FreqtradeBot(object): trade.stoploss_order_id = str(stoploss_order_id) return False except DependencyException as exception: + trade.stoploss_order_id = None logger.warning('Stoploss order was cancelled, ' 'but unable to recreate one: %s', exception) @@ -726,7 +728,8 @@ class FreqtradeBot(object): )['id'] trade.stoploss_order_id = str(stoploss_order_id) except DependencyException: - logger.exception(f"Could create trailing stoploss order " + trade.stoploss_order_id = None + logger.exception(f"Could not create trailing stoploss order " f"for pair {trade.pair}.") def _check_and_execute_sell(self, trade: Trade, sell_rate: float, From 365b9c3e9c0f74de5a2ad7eacabd1c325396788a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 24 Aug 2019 18:06:33 +0200 Subject: [PATCH 0336/3421] Add test to correctly handle unsuccessfull ordercreation --- freqtrade/tests/test_freqtradebot.py | 40 +++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 24d070d2d..dab7a9ff7 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -1112,6 +1112,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, # Third case: when stoploss was set but it was canceled for some reason # should set a stoploss immediately and return False + caplog.clear() trade.is_open = True trade.open_order_id = None trade.stoploss_order_id = 100 @@ -1127,6 +1128,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, # Fourth case: when stoploss is set and it is hit # should unset stoploss_order_id and return true # as a trade actually happened + caplog.clear() freqtrade.create_trades() trade = Trade.query.first() trade.is_open = True @@ -1152,6 +1154,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, ) freqtrade.handle_stoploss_on_exchange(trade) assert log_has('Unable to place a stoploss order on exchange: ', caplog) + assert trade.stoploss_order_id is None # Fifth case: get_order returns InvalidOrder # It should try to add stoploss order @@ -1163,6 +1166,41 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, assert stoploss_limit.call_count == 1 +def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, + markets, limit_buy_order, limit_sell_order) -> None: + # Sixth case: stoploss order was cancelled but couldn't create new one + patch_RPCManager(mocker) + patch_exchange(mocker) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_ticker=MagicMock(return_value={ + 'bid': 0.00001172, + 'ask': 0.00001173, + 'last': 0.00001172 + }), + buy=MagicMock(return_value={'id': limit_buy_order['id']}), + sell=MagicMock(return_value={'id': limit_sell_order['id']}), + get_fee=fee, + markets=PropertyMock(return_value=markets), + get_order=MagicMock(return_value={'status': 'canceled'}), + stoploss_limit=MagicMock(side_effect=DependencyException()), + ) + freqtrade = FreqtradeBot(default_conf) + patch_get_signal(freqtrade) + + freqtrade.create_trades() + trade = Trade.query.first() + trade.is_open = True + trade.open_order_id = '12345' + trade.stoploss_order_id = 100 + assert trade + + assert freqtrade.handle_stoploss_on_exchange(trade) is False + assert log_has_re(r'Stoploss order was cancelled, but unable to recreate one.*', caplog) + assert trade.stoploss_order_id is None + assert trade.is_open is True + + def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, markets, limit_buy_order, limit_sell_order) -> None: # When trailing stoploss is set @@ -1324,7 +1362,7 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c mocker.patch("freqtrade.exchange.Exchange.stoploss_limit", side_effect=DependencyException()) freqtrade.handle_trailing_stoploss_on_exchange(trade, stoploss_order_hanging) assert cancel_mock.call_count == 1 - assert log_has_re(r"Could create trailing stoploss order for pair ETH/BTC\..*", caplog) + assert log_has_re(r"Could not create trailing stoploss order for pair ETH/BTC\..*", caplog) def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, From 8a17615b5a96fd59ed39ba317e4acb741d0f881b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 24 Aug 2019 19:41:11 +0200 Subject: [PATCH 0337/3421] move exceptionhandling from create_order() to calling functions --- freqtrade/exchange/exchange.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index a8e974991..53723ad51 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -320,7 +320,7 @@ class Exchange(object): if (order_types.get("stoploss_on_exchange") and not self._ft_has.get("stoploss_on_exchange", False)): raise OperationalException( - 'On exchange stoploss is not supported for %s.' % self.name + f'On exchange stoploss is not supported for {self.name}.' ) def validate_order_time_in_force(self, order_time_in_force: Dict) -> None: @@ -469,11 +469,26 @@ class Exchange(object): params = self._params.copy() params.update({'stopPrice': stop_price}) - - order = self.create_order(pair, ordertype, 'sell', amount, rate, params) - logger.info('stoploss limit order added for %s. ' - 'stop price: %s. limit: %s', pair, stop_price, rate) - return order + try: + order = self.create_order(pair, ordertype, 'sell', amount, rate, params) + logger.info('stoploss limit order added for %s. ' + 'stop price: %s. limit: %s', pair, stop_price, rate) + return order + except ccxt.InsufficientFunds as e: + raise DependencyException( + f'Insufficient funds to create {ordertype} sell order on market {pair}.' + f'Tried to sell amount {amount} at rate {rate}.' + f'Message: {e}') from e + except ccxt.InvalidOrder as e: + raise DependencyException( + f'Could not create {ordertype} sell order on market {pair}. ' + f'Tried to sell amount {amount} at rate {rate}.' + f'Message: {e}') from e + except (ccxt.NetworkError, ccxt.ExchangeError) as e: + raise TemporaryError( + f'Could not place sell order due to {e.__class__.__name__}. Message: {e}') from e + except ccxt.BaseError as e: + raise OperationalException(e) from e @retrier def get_balance(self, currency: str) -> float: From ea179a8e38a2dbaaf38e7b6a1904c174215aab83 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 09:43:10 +0200 Subject: [PATCH 0338/3421] stoploss_limit shall not use `create_order()` It needs to handle exceptions differently --- freqtrade/exchange/exchange.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 53723ad51..7a384b7cc 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -470,7 +470,12 @@ class Exchange(object): params = self._params.copy() params.update({'stopPrice': stop_price}) try: - order = self.create_order(pair, ordertype, 'sell', amount, rate, params) + amount = self.symbol_amount_prec(pair, amount) + + rate = self.symbol_price_prec(pair, rate) + + order = self._api.create_order(pair, ordertype, 'sell', + amount, rate, params) logger.info('stoploss limit order added for %s. ' 'stop price: %s. limit: %s', pair, stop_price, rate) return order From defa1c027d911c348586fbf7c0419113a122d796 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 09:50:37 +0200 Subject: [PATCH 0339/3421] Move stoploss_limit to binance subclass --- freqtrade/exchange/binance.py | 52 ++++++++++++++++++++++++++++++++++ freqtrade/exchange/exchange.py | 48 ++++--------------------------- 2 files changed, 58 insertions(+), 42 deletions(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 18e754e3f..b63ef59c8 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -2,6 +2,9 @@ import logging from typing import Dict +import ccxt + +from freqtrade import DependencyException, OperationalException, TemporaryError from freqtrade.exchange import Exchange logger = logging.getLogger(__name__) @@ -25,3 +28,52 @@ class Binance(Exchange): limit = min(list(filter(lambda x: limit <= x, limit_range))) return super().get_order_book(pair, limit) + + def stoploss_limit(self, pair: str, amount: float, stop_price: float, rate: float) -> Dict: + """ + creates a stoploss limit order. + this stoploss-limit is binance-specific. + It may work with a limited number of other exchanges, but this has not been tested yet. + + """ + ordertype = "stop_loss_limit" + + stop_price = self.symbol_price_prec(pair, stop_price) + + # Ensure rate is less than stop price + if stop_price <= rate: + raise OperationalException( + 'In stoploss limit order, stop price should be more than limit price') + + if self._config['dry_run']: + dry_order = self.dry_run_order( + pair, ordertype, "sell", amount, stop_price) + return dry_order + + params = self._params.copy() + params.update({'stopPrice': stop_price}) + try: + amount = self.symbol_amount_prec(pair, amount) + + rate = self.symbol_price_prec(pair, rate) + + order = self._api.create_order(pair, ordertype, 'sell', + amount, rate, params) + logger.info('stoploss limit order added for %s. ' + 'stop price: %s. limit: %s', pair, stop_price, rate) + return order + except ccxt.InsufficientFunds as e: + raise DependencyException( + f'Insufficient funds to create {ordertype} sell order on market {pair}.' + f'Tried to sell amount {amount} at rate {rate}.' + f'Message: {e}') from e + except ccxt.InvalidOrder as e: + raise DependencyException( + f'Could not create {ordertype} sell order on market {pair}. ' + f'Tried to sell amount {amount} at rate {rate}.' + f'Message: {e}') from e + except (ccxt.NetworkError, ccxt.ExchangeError) as e: + raise TemporaryError( + f'Could not place sell order due to {e.__class__.__name__}. Message: {e}') from e + except ccxt.BaseError as e: + raise OperationalException(e) from e diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 7a384b7cc..534e2ea65 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -450,50 +450,14 @@ class Exchange(object): def stoploss_limit(self, pair: str, amount: float, stop_price: float, rate: float) -> Dict: """ creates a stoploss limit order. - NOTICE: it is not supported by all exchanges. only binance is tested for now. - TODO: implementation maybe needs to be moved to the binance subclass + Since ccxt does not unify stoploss-limit orders yet, this needs to be implemented in each + exchange's subclass. + The exception below should never raise, since we disallow + starting the bot in validate_ordertypes() + Note: Changes to this interface need to be applied to all sub-classes too. """ - ordertype = "stop_loss_limit" - stop_price = self.symbol_price_prec(pair, stop_price) - - # Ensure rate is less than stop price - if stop_price <= rate: - raise OperationalException( - 'In stoploss limit order, stop price should be more than limit price') - - if self._config['dry_run']: - dry_order = self.dry_run_order( - pair, ordertype, "sell", amount, stop_price) - return dry_order - - params = self._params.copy() - params.update({'stopPrice': stop_price}) - try: - amount = self.symbol_amount_prec(pair, amount) - - rate = self.symbol_price_prec(pair, rate) - - order = self._api.create_order(pair, ordertype, 'sell', - amount, rate, params) - logger.info('stoploss limit order added for %s. ' - 'stop price: %s. limit: %s', pair, stop_price, rate) - return order - except ccxt.InsufficientFunds as e: - raise DependencyException( - f'Insufficient funds to create {ordertype} sell order on market {pair}.' - f'Tried to sell amount {amount} at rate {rate}.' - f'Message: {e}') from e - except ccxt.InvalidOrder as e: - raise DependencyException( - f'Could not create {ordertype} sell order on market {pair}. ' - f'Tried to sell amount {amount} at rate {rate}.' - f'Message: {e}') from e - except (ccxt.NetworkError, ccxt.ExchangeError) as e: - raise TemporaryError( - f'Could not place sell order due to {e.__class__.__name__}. Message: {e}') from e - except ccxt.BaseError as e: - raise OperationalException(e) from e + raise OperationalException(f"stoploss_limit not implemented for {self.name}.") @retrier def get_balance(self, currency: str) -> float: From 067c122bf3e4e53d45eee4b48e6083a531ef5e66 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 09:52:14 +0200 Subject: [PATCH 0340/3421] Adapt test to use Binance class --- freqtrade/tests/test_freqtradebot.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index dab7a9ff7..1119157c4 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -2414,7 +2414,7 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) - mocker.patch('freqtrade.exchange.Exchange.stoploss_limit', stoploss_limit) + mocker.patch('freqtrade.exchange.Binance.stoploss_limit', stoploss_limit) freqtrade = FreqtradeBot(default_conf) freqtrade.strategy.order_types['stoploss_on_exchange'] = True @@ -2454,7 +2454,6 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, freqtrade.process_maybe_execute_sell(trade) assert trade.stoploss_order_id is None assert trade.is_open is False - print(trade.sell_reason) assert trade.sell_reason == SellType.STOPLOSS_ON_EXCHANGE.value assert rpc_mock.call_count == 2 From 2c66b33fd107e0829cba668002d549a56bac4c56 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 09:57:21 +0200 Subject: [PATCH 0341/3421] Adapt some tests to use Binance subclass for stoplosslimit --- freqtrade/exchange/exchange.py | 2 +- freqtrade/tests/exchange/test_exchange.py | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 534e2ea65..6c93f9128 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -457,7 +457,7 @@ class Exchange(object): Note: Changes to this interface need to be applied to all sub-classes too. """ - raise OperationalException(f"stoploss_limit not implemented for {self.name}.") + raise OperationalException(f"stoploss_limit is not implemented for {self.name}.") @retrier def get_balance(self, currency: str) -> float: diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index e453b5dca..0dc07e409 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -1474,17 +1474,17 @@ def test_stoploss_limit_order(default_conf, mocker): # test exception handling with pytest.raises(DependencyException): api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds("0 balance")) - exchange = get_patched_exchange(mocker, default_conf, api_mock) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) with pytest.raises(DependencyException): api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) - exchange = get_patched_exchange(mocker, default_conf, api_mock) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) with pytest.raises(TemporaryError): api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No connection")) - exchange = get_patched_exchange(mocker, default_conf, api_mock) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) with pytest.raises(OperationalException): @@ -1493,6 +1493,12 @@ def test_stoploss_limit_order(default_conf, mocker): exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) +def test_stoploss_limit_order_unsupported_exchange(default_conf, mocker): + exchange = get_patched_exchange(mocker, default_conf, 'bittrex') + with pytest.raises(OperationalException, match=r"stoploss_limit is not implemented .*"): + exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + + def test_stoploss_limit_order_dry_run(default_conf, mocker): api_mock = MagicMock() order_type = 'stop_loss_limit' From cbf09b5ad9781f42b0b836d45fbbd3936576c59f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 10:07:47 +0200 Subject: [PATCH 0342/3421] Improve docstring for Exception --- freqtrade/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/__init__.py b/freqtrade/__init__.py index 14f0bb819..5ccc2ff3c 100644 --- a/freqtrade/__init__.py +++ b/freqtrade/__init__.py @@ -11,7 +11,7 @@ class DependencyException(Exception): class OperationalException(Exception): """ - Requires manual intervention. + Requires manual intervention and will usually stop the bot. This happens when an exchange returns an unexpected error during runtime or given configuration is invalid. """ From a4c8b5bf5da8228c3300e3d4c83c763e290b0a57 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 10:08:06 +0200 Subject: [PATCH 0343/3421] Move binance-specific test to test_binance.py --- freqtrade/exchange/binance.py | 5 +- freqtrade/tests/exchange/test_binance.py | 90 +++++++++++++++++++++++ freqtrade/tests/exchange/test_exchange.py | 78 -------------------- 3 files changed, 93 insertions(+), 80 deletions(-) create mode 100644 freqtrade/tests/exchange/test_binance.py diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index b63ef59c8..5834f26cd 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -50,9 +50,10 @@ class Binance(Exchange): pair, ordertype, "sell", amount, stop_price) return dry_order - params = self._params.copy() - params.update({'stopPrice': stop_price}) try: + params = self._params.copy() + params.update({'stopPrice': stop_price}) + amount = self.symbol_amount_prec(pair, amount) rate = self.symbol_price_prec(pair, rate) diff --git a/freqtrade/tests/exchange/test_binance.py b/freqtrade/tests/exchange/test_binance.py new file mode 100644 index 000000000..4afb7fcc4 --- /dev/null +++ b/freqtrade/tests/exchange/test_binance.py @@ -0,0 +1,90 @@ +from random import randint +from unittest.mock import MagicMock + +import ccxt +import pytest + +from freqtrade import DependencyException, OperationalException, TemporaryError +from freqtrade.tests.conftest import get_patched_exchange + + +def test_stoploss_limit_order(default_conf, mocker): + api_mock = MagicMock() + order_id = 'test_prod_buy_{}'.format(randint(0, 10 ** 6)) + order_type = 'stop_loss_limit' + + api_mock.create_order = MagicMock(return_value={ + 'id': order_id, + 'info': { + 'foo': 'bar' + } + }) + + default_conf['dry_run'] = False + mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) + + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') + + with pytest.raises(OperationalException): + order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=190, rate=200) + + api_mock.create_order.reset_mock() + + order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + + assert 'id' in order + assert 'info' in order + assert order['id'] == order_id + assert api_mock.create_order.call_args[0][0] == 'ETH/BTC' + assert api_mock.create_order.call_args[0][1] == order_type + assert api_mock.create_order.call_args[0][2] == 'sell' + assert api_mock.create_order.call_args[0][3] == 1 + assert api_mock.create_order.call_args[0][4] == 200 + assert api_mock.create_order.call_args[0][5] == {'stopPrice': 220} + + # test exception handling + with pytest.raises(DependencyException): + api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds("0 balance")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') + exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + + with pytest.raises(DependencyException): + api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') + exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + + with pytest.raises(TemporaryError): + api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No connection")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') + exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + + with pytest.raises(OperationalException, match=r".*DeadBeef.*"): + api_mock.create_order = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') + exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + + +def test_stoploss_limit_order_dry_run(default_conf, mocker): + api_mock = MagicMock() + order_type = 'stop_loss_limit' + default_conf['dry_run'] = True + mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) + + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') + + with pytest.raises(OperationalException): + order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=190, rate=200) + + api_mock.create_order.reset_mock() + + order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + + assert 'id' in order + assert 'info' in order + assert 'type' in order + + assert order['type'] == order_type + assert order['price'] == 220 + assert order['amount'] == 1 diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index 0dc07e409..afd7b441a 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -1436,62 +1436,6 @@ def test_get_fee(default_conf, mocker, exchange_name): 'get_fee', 'calculate_fee') -def test_stoploss_limit_order(default_conf, mocker): - api_mock = MagicMock() - order_id = 'test_prod_buy_{}'.format(randint(0, 10 ** 6)) - order_type = 'stop_loss_limit' - - api_mock.create_order = MagicMock(return_value={ - 'id': order_id, - 'info': { - 'foo': 'bar' - } - }) - - default_conf['dry_run'] = False - mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) - mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) - - exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - - with pytest.raises(OperationalException): - order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=190, rate=200) - - api_mock.create_order.reset_mock() - - order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) - - assert 'id' in order - assert 'info' in order - assert order['id'] == order_id - assert api_mock.create_order.call_args[0][0] == 'ETH/BTC' - assert api_mock.create_order.call_args[0][1] == order_type - assert api_mock.create_order.call_args[0][2] == 'sell' - assert api_mock.create_order.call_args[0][3] == 1 - assert api_mock.create_order.call_args[0][4] == 200 - assert api_mock.create_order.call_args[0][5] == {'stopPrice': 220} - - # test exception handling - with pytest.raises(DependencyException): - api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds("0 balance")) - exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) - - with pytest.raises(DependencyException): - api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) - exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) - - with pytest.raises(TemporaryError): - api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No connection")) - exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) - - with pytest.raises(OperationalException): - api_mock.create_order = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) - exchange = get_patched_exchange(mocker, default_conf, api_mock) - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) - def test_stoploss_limit_order_unsupported_exchange(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, 'bittrex') @@ -1499,29 +1443,7 @@ def test_stoploss_limit_order_unsupported_exchange(default_conf, mocker): exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) -def test_stoploss_limit_order_dry_run(default_conf, mocker): - api_mock = MagicMock() - order_type = 'stop_loss_limit' - default_conf['dry_run'] = True - mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) - mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) - exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - - with pytest.raises(OperationalException): - order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=190, rate=200) - - api_mock.create_order.reset_mock() - - order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) - - assert 'id' in order - assert 'info' in order - assert 'type' in order - - assert order['type'] == order_type - assert order['price'] == 220 - assert order['amount'] == 1 def test_merge_ft_has_dict(default_conf, mocker): From 5e12b05424df197a5d724d9bb164b139f775076a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 10:13:35 +0200 Subject: [PATCH 0344/3421] Improve test coverage --- freqtrade/tests/exchange/test_exchange.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index afd7b441a..d9f350c7b 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -101,18 +101,21 @@ def test_destroy(default_conf, mocker, caplog): def test_init_exception(default_conf, mocker): default_conf['exchange']['name'] = 'wrong_exchange_name' - with pytest.raises( - OperationalException, - match='Exchange {} is not supported'.format(default_conf['exchange']['name'])): + with pytest.raises(OperationalException, + match=f"Exchange {default_conf['exchange']['name']} is not supported"): Exchange(default_conf) default_conf['exchange']['name'] = 'binance' - with pytest.raises( - OperationalException, - match='Exchange {} is not supported'.format(default_conf['exchange']['name'])): + with pytest.raises(OperationalException, + match=f"Exchange {default_conf['exchange']['name']} is not supported"): mocker.patch("ccxt.binance", MagicMock(side_effect=AttributeError)) Exchange(default_conf) + with pytest.raises(OperationalException, + match=r"Initialization of ccxt failed. Reason: DeadBeef"): + mocker.patch("ccxt.binance", MagicMock(side_effect=ccxt.BaseError("DeadBeef"))) + Exchange(default_conf) + def test_exchange_resolver(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=MagicMock())) @@ -1436,16 +1439,12 @@ def test_get_fee(default_conf, mocker, exchange_name): 'get_fee', 'calculate_fee') - def test_stoploss_limit_order_unsupported_exchange(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, 'bittrex') with pytest.raises(OperationalException, match=r"stoploss_limit is not implemented .*"): exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) - - - def test_merge_ft_has_dict(default_conf, mocker): mocker.patch.multiple('freqtrade.exchange.Exchange', _init_ccxt=MagicMock(return_value=MagicMock()), From 565a543b7b58437f5ecdca63bc96702b0f8c50f9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 10:34:56 +0200 Subject: [PATCH 0345/3421] Use ccxt base methods to round timeframe --- freqtrade/exchange/exchange.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index a8e974991..6abf1f270 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -14,6 +14,7 @@ from typing import Any, Dict, List, Optional, Tuple import arrow import ccxt import ccxt.async_support as ccxt_async +from ccxt.base.decimal_to_precision import ROUND_UP, ROUND_DOWN from pandas import DataFrame from freqtrade import (DependencyException, InvalidOrderException, @@ -824,11 +825,9 @@ def timeframe_to_prev_date(timeframe: str, date: datetime = None) -> datetime: """ if not date: date = datetime.now(timezone.utc) - timeframe_secs = timeframe_to_seconds(timeframe) - # Get offset based on timerame_secs - offset = date.timestamp() % timeframe_secs - # Subtract seconds passed since last offset - new_timestamp = date.timestamp() - offset + + new_timestamp = ccxt.Exchange.round_timeframe(timeframe, date.timestamp() * 1000, + ROUND_DOWN) // 1000 return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) @@ -839,9 +838,8 @@ def timeframe_to_next_date(timeframe: str, date: datetime = None) -> datetime: :param date: date to use. Defaults to utcnow() :returns: date of next candle (with utc timezone) """ - prevdate = timeframe_to_prev_date(timeframe, date) - timeframe_secs = timeframe_to_seconds(timeframe) - - # Add one interval to previous candle - new_timestamp = prevdate.timestamp() + timeframe_secs + if not date: + date = datetime.now(timezone.utc) + new_timestamp = ccxt.Exchange.round_timeframe(timeframe, date.timestamp() * 1000, + ROUND_UP) // 1000 return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) From 8f8acf5b06410b0c425aa6e66bb9f4de695ef320 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 10:43:37 +0200 Subject: [PATCH 0346/3421] Update ccxt to have this implemented --- requirements-common.txt | 2 +- setup.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements-common.txt b/requirements-common.txt index 3d80c3ef5..bd3afd8de 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.1068 +ccxt==1.18.1084 SQLAlchemy==1.3.7 python-telegram-bot==11.1.0 arrow==0.14.5 diff --git a/setup.py b/setup.py index 631c8b654..b48bddd56 100644 --- a/setup.py +++ b/setup.py @@ -45,7 +45,7 @@ setup(name='freqtrade', tests_require=['pytest', 'pytest-mock', 'pytest-cov'], install_requires=[ # from requirements-common.txt - 'ccxt>=1.18', + 'ccxt>=1.18.1080', 'SQLAlchemy', 'python-telegram-bot', 'arrow', @@ -76,7 +76,7 @@ setup(name='freqtrade', 'plot': plot, 'all': all_extra, 'jupyter': jupyter, - + }, include_package_data=True, zip_safe=False, From e603cca7a590b8cd5229a0c827bf5f812eab0fbc Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 10:53:56 +0200 Subject: [PATCH 0347/3421] Testing with now() should not pass in date/time --- freqtrade/tests/exchange/test_exchange.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/tests/exchange/test_exchange.py b/freqtrade/tests/exchange/test_exchange.py index e453b5dca..dad2d9c37 100644 --- a/freqtrade/tests/exchange/test_exchange.py +++ b/freqtrade/tests/exchange/test_exchange.py @@ -1604,7 +1604,7 @@ def test_timeframe_to_prev_date(): assert timeframe_to_prev_date(interval, date) == result date = datetime.now(tz=timezone.utc) - assert timeframe_to_prev_date("5m", date) < date + assert timeframe_to_prev_date("5m") < date def test_timeframe_to_next_date(): @@ -1629,4 +1629,4 @@ def test_timeframe_to_next_date(): assert timeframe_to_next_date(interval, date) == result date = datetime.now(tz=timezone.utc) - assert timeframe_to_next_date("5m", date) > date + assert timeframe_to_next_date("5m") > date From 3232251fea8f05c309169c9449261dc720ea5366 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 15:01:27 +0200 Subject: [PATCH 0348/3421] Refactor downloading ohlcv from utils to history --- freqtrade/data/history.py | 29 +++++++++++++++++++++++++++++ freqtrade/utils.py | 32 ++++++++------------------------ 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 007357d9a..aff9f5c74 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -280,6 +280,35 @@ def download_pair_history(datadir: Optional[Path], return False +def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes: List[str], + dl_path: Path, timerange: TimeRange, + erase=False) -> List[str]: + """ + Refresh stored ohlcv data for backtesting and hyperopt operations. + Used by freqtrade download-data + :return: Pairs not available + """ + pairs_not_available = [] + for pair in pairs: + if pair not in exchange.markets: + pairs_not_available.append(pair) + logger.info(f"Skipping pair {pair}...") + continue + for ticker_interval in timeframes: + + dl_file = pair_data_filename(dl_path, pair, ticker_interval) + if erase and dl_file.exists(): + logger.info( + f'Deleting existing data for pair {pair}, interval {ticker_interval}.') + dl_file.unlink() + + logger.info(f'Downloading pair {pair}, interval {ticker_interval}.') + download_pair_history(datadir=dl_path, exchange=exchange, + pair=pair, ticker_interval=str(ticker_interval), + timerange=timerange) + return pairs_not_available + + def get_timeframe(data: Dict[str, DataFrame]) -> Tuple[arrow.Arrow, arrow.Arrow]: """ Get the maximum timeframe for the given backtest data diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 56e60ec82..162493a3f 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -2,13 +2,13 @@ import logging import sys from argparse import Namespace from pathlib import Path -from typing import Any, Dict +from typing import Any, Dict, List import arrow from freqtrade.configuration import Configuration, TimeRange from freqtrade.configuration.directory_operations import create_userdata_dir -from freqtrade.data.history import download_pair_history +from freqtrade.data.history import refresh_backtest_ohlcv_data from freqtrade.exchange import available_exchanges from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode @@ -75,39 +75,23 @@ def start_download_data(args: Namespace) -> None: logger.info(f'About to download pairs: {config["pairs"]}, ' f'intervals: {config["timeframes"]} to {dl_path}') - pairs_not_available = [] + pairs_not_available: List[str] = [] try: # Init exchange exchange = ExchangeResolver(config['exchange']['name'], config).exchange - for pair in config["pairs"]: - if pair not in exchange.markets: - pairs_not_available.append(pair) - logger.info(f"Skipping pair {pair}...") - continue - for ticker_interval in config["timeframes"]: - pair_print = pair.replace('/', '_') - filename = f'{pair_print}-{ticker_interval}.json' - dl_file = dl_path.joinpath(filename) - if config.get("erase") and dl_file.exists(): - logger.info( - f'Deleting existing data for pair {pair}, interval {ticker_interval}.') - dl_file.unlink() - - logger.info(f'Downloading pair {pair}, interval {ticker_interval}.') - download_pair_history(datadir=dl_path, exchange=exchange, - pair=pair, ticker_interval=str(ticker_interval), - timerange=timerange) + pairs_not_available = refresh_backtest_ohlcv_data( + exchange, pairs=config["pairs"], timeframes=config["timeframes"], + dl_path=Path(config['datadir']), timerange=timerange, erase=config.get("erase")) except KeyboardInterrupt: sys.exit("SIGINT received, aborting ...") finally: if pairs_not_available: - logger.info( - f"Pairs [{','.join(pairs_not_available)}] not available " - f"on exchange {config['exchange']['name']}.") + logger.info(f"Pairs [{','.join(pairs_not_available)}] not available " + f"on exchange {config['exchange']['name']}.") # configuration.resolve_pairs_list() print(config) From da7da2ce524e0bd41576251af7d1a48ee71184ee Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 15:02:40 +0200 Subject: [PATCH 0349/3421] Change tests to split function --- freqtrade/tests/data/test_history.py | 43 +++++++++++++- freqtrade/tests/test_utils.py | 87 ++++++---------------------- 2 files changed, 61 insertions(+), 69 deletions(-) diff --git a/freqtrade/tests/data/test_history.py b/freqtrade/tests/data/test_history.py index 7360f3c1c..ec4a05e63 100644 --- a/freqtrade/tests/data/test_history.py +++ b/freqtrade/tests/data/test_history.py @@ -5,7 +5,7 @@ import os import uuid from pathlib import Path from shutil import copyfile -from unittest.mock import MagicMock +from unittest.mock import MagicMock, PropertyMock import arrow import pytest @@ -17,6 +17,7 @@ from freqtrade.data import history from freqtrade.data.history import (download_pair_history, load_cached_data_for_updating, load_tickerdata_file, make_testdata_path, + refresh_backtest_ohlcv_data, trim_tickerlist) from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import file_dump_json @@ -558,3 +559,43 @@ def test_validate_backtest_data(default_conf, mocker, caplog) -> None: assert not history.validate_backtest_data(data['UNITTEST/BTC'], 'UNITTEST/BTC', min_date, max_date, timeframe_to_minutes('5m')) assert len(caplog.record_tuples) == 0 + + +def test_refresh_backtest_ohlcv_data(mocker, default_conf, markets, caplog): + dl_mock = mocker.patch('freqtrade.data.history.download_pair_history', MagicMock()) + mocker.patch( + 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets) + ) + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + mocker.patch.object(Path, "unlink", MagicMock()) + + ex = get_patched_exchange(mocker, default_conf) + timerange = TimeRange.parse_timerange("20190101-20190102") + refresh_backtest_ohlcv_data(exchange=ex, pairs=["ETH/BTC", "XRP/BTC"], + timeframes=["1m", "5m"], dl_path=make_testdata_path(None), + timerange=timerange, erase=True + ) + + assert dl_mock.call_count == 4 + assert dl_mock.call_args[1]['timerange'].starttype == 'date' + + assert log_has("Downloading pair ETH/BTC, interval 1m.", caplog) + + +def test_download_data_no_markets(mocker, default_conf, caplog): + dl_mock = mocker.patch('freqtrade.data.history.download_pair_history', MagicMock()) + mocker.patch( + 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value={}) + ) + ex = get_patched_exchange(mocker, default_conf) + timerange = TimeRange.parse_timerange("20190101-20190102") + unav_pairs = refresh_backtest_ohlcv_data(exchange=ex, pairs=["ETH/BTC", "XRP/BTC"], + timeframes=["1m", "5m"], + dl_path=make_testdata_path(None), + timerange=timerange, erase=False + ) + + assert dl_mock.call_count == 0 + assert "ETH/BTC" in unav_pairs + assert "XRP/BTC" in unav_pairs + assert log_has("Skipping pair ETH/BTC...", caplog) diff --git a/freqtrade/tests/test_utils.py b/freqtrade/tests/test_utils.py index d04e62b28..9e09fd298 100644 --- a/freqtrade/tests/test_utils.py +++ b/freqtrade/tests/test_utils.py @@ -1,5 +1,4 @@ import re -from pathlib import Path from unittest.mock import MagicMock, PropertyMock import pytest @@ -70,74 +69,8 @@ def test_create_datadir(caplog, mocker): assert len(caplog.record_tuples) == 0 -def test_download_data(mocker, markets, caplog): - dl_mock = mocker.patch('freqtrade.utils.download_pair_history', MagicMock()) - patch_exchange(mocker) - mocker.patch( - 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets) - ) - mocker.patch.object(Path, "exists", MagicMock(return_value=True)) - mocker.patch.object(Path, "unlink", MagicMock()) - - args = [ - "download-data", - "--exchange", "binance", - "--pairs", "ETH/BTC", "XRP/BTC", - "--erase", - ] - start_download_data(get_args(args)) - - assert dl_mock.call_count == 4 - assert dl_mock.call_args[1]['timerange'].starttype is None - assert dl_mock.call_args[1]['timerange'].stoptype is None - assert log_has("Deleting existing data for pair ETH/BTC, interval 1m.", caplog) - assert log_has("Downloading pair ETH/BTC, interval 1m.", caplog) - - -def test_download_data_days(mocker, markets, caplog): - dl_mock = mocker.patch('freqtrade.utils.download_pair_history', MagicMock()) - patch_exchange(mocker) - mocker.patch( - 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets) - ) - mocker.patch.object(Path, "exists", MagicMock(return_value=True)) - mocker.patch.object(Path, "unlink", MagicMock()) - - args = [ - "download-data", - "--exchange", "binance", - "--pairs", "ETH/BTC", "XRP/BTC", - "--days", "20", - ] - - start_download_data(get_args(args)) - - assert dl_mock.call_count == 4 - assert dl_mock.call_args[1]['timerange'].starttype == 'date' - - assert log_has("Downloading pair ETH/BTC, interval 1m.", caplog) - - -def test_download_data_no_markets(mocker, caplog): - dl_mock = mocker.patch('freqtrade.utils.download_pair_history', MagicMock()) - patch_exchange(mocker) - mocker.patch( - 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value={}) - ) - args = [ - "download-data", - "--exchange", "binance", - "--pairs", "ETH/BTC", "XRP/BTC", - ] - start_download_data(get_args(args)) - - assert dl_mock.call_count == 0 - assert log_has("Skipping pair ETH/BTC...", caplog) - assert log_has("Pairs [ETH/BTC,XRP/BTC] not available on exchange binance.", caplog) - - def test_download_data_keyboardInterrupt(mocker, caplog, markets): - dl_mock = mocker.patch('freqtrade.utils.download_pair_history', + dl_mock = mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data', MagicMock(side_effect=KeyboardInterrupt)) patch_exchange(mocker) mocker.patch( @@ -152,3 +85,21 @@ def test_download_data_keyboardInterrupt(mocker, caplog, markets): start_download_data(get_args(args)) assert dl_mock.call_count == 1 + + +def test_download_data_no_markets(mocker, caplog): + dl_mock = mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data', + MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) + patch_exchange(mocker) + mocker.patch( + 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value={}) + ) + args = [ + "download-data", + "--exchange", "binance", + "--pairs", "ETH/BTC", "XRP/BTC", + "--days", "20" + ] + start_download_data(get_args(args)) + assert dl_mock.call_args[1]['timerange'].starttype == "date" + assert log_has("Pairs [ETH/BTC,XRP/BTC] not available on exchange binance.", caplog) From 513e84880e4a0e60b3f1e04edd8637908c874818 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 20:38:51 +0200 Subject: [PATCH 0350/3421] Don't escape ticks where it's not needed --- freqtrade/freqtradebot.py | 6 +++--- freqtrade/optimize/hyperopt.py | 6 +++--- freqtrade/persistence.py | 4 ++-- freqtrade/tests/optimize/test_hyperopt.py | 4 ++-- freqtrade/tests/test_configuration.py | 10 +++++----- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e88b9db6a..8857b95da 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -216,7 +216,7 @@ class FreqtradeBot(object): if stake_amount == constants.UNLIMITED_STAKE_AMOUNT: open_trades = len(Trade.get_open_trades()) if open_trades >= self.config['max_open_trades']: - logger.warning('Can\'t open a new trade: max number of trades is reached') + logger.warning("Can't open a new trade: max number of trades is reached") return None return available_amount / (self.config['max_open_trades'] - open_trades) @@ -351,8 +351,8 @@ class FreqtradeBot(object): min_stake_amount = self._get_min_pair_stake_amount(pair_s, buy_limit_requested) if min_stake_amount is not None and min_stake_amount > stake_amount: logger.warning( - f'Can\'t open a new trade for {pair_s}: stake amount ' - f'is too small ({stake_amount} < {min_stake_amount})' + f"Can't open a new trade for {pair_s}: stake amount " + f"is too small ({stake_amount} < {min_stake_amount})" ) return False diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 62a6ab27b..9c3f085b6 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -124,14 +124,14 @@ class Hyperopt: Save hyperopt trials to file """ if self.trials: - logger.info('Saving %d evaluations to \'%s\'', len(self.trials), self.trials_file) + logger.info("Saving %d evaluations to '%s'", len(self.trials), self.trials_file) dump(self.trials, self.trials_file) def read_trials(self) -> List: """ Read hyperopt trials file """ - logger.info('Reading Trials from \'%s\'', self.trials_file) + logger.info("Reading Trials from '%s'", self.trials_file) trials = load(self.trials_file) self.trials_file.unlink() return trials @@ -379,7 +379,7 @@ class Hyperopt: self.load_previous_results() cpus = cpu_count() - logger.info(f'Found {cpus} CPU cores. Let\'s make them scream!') + logger.info(f"Found {cpus} CPU cores. Let's make them scream!") config_jobs = self.config.get('hyperopt_jobs', -1) logger.info(f'Number of parallel jobs set as: {config_jobs}') diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index c844bbc4c..dff7e4ff6 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -48,8 +48,8 @@ def init(db_url: str, clean_open_orders: bool = False) -> None: try: engine = create_engine(db_url, **kwargs) except NoSuchModuleError: - raise OperationalException(f'Given value for db_url: \'{db_url}\' ' - f'is no valid database URL! (See {_SQL_DOCS_URL})') + raise OperationalException(f"Given value for db_url: '{db_url}' " + f"is no valid database URL! (See {_SQL_DOCS_URL})") session = scoped_session(sessionmaker(bind=engine, autoflush=True, autocommit=True)) Trade.session = session() diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index 7b525454c..f9ebf552d 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -381,7 +381,7 @@ def test_save_trials_saves_trials(mocker, hyperopt, caplog) -> None: hyperopt.save_trials() trials_file = os.path.join('freqtrade', 'tests', 'optimize', 'ut_trials.pickle') - assert log_has('Saving 1 evaluations to \'{}\''.format(trials_file), caplog) + assert log_has("Saving 1 evaluations to '{}'".format(trials_file), caplog) mock_dump.assert_called_once() @@ -390,7 +390,7 @@ def test_read_trials_returns_trials_file(mocker, hyperopt, caplog) -> None: mock_load = mocker.patch('freqtrade.optimize.hyperopt.load', return_value=trials) hyperopt_trial = hyperopt.read_trials() trials_file = os.path.join('freqtrade', 'tests', 'optimize', 'ut_trials.pickle') - assert log_has('Reading Trials from \'{}\''.format(trials_file), caplog) + assert log_has("Reading Trials from '{}'".format(trials_file), caplog) assert hyperopt_trial == trials mock_load.assert_called_once() diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index 10ce7e8cf..d98ff9ad0 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -41,14 +41,14 @@ def test_load_config_invalid_pair(default_conf) -> None: def test_load_config_missing_attributes(default_conf) -> None: default_conf.pop('exchange') - with pytest.raises(ValidationError, match=r'.*\'exchange\' is a required property.*'): + with pytest.raises(ValidationError, match=r".*'exchange' is a required property.*"): validate_config_schema(default_conf) def test_load_config_incorrect_stake_amount(default_conf) -> None: default_conf['stake_amount'] = 'fake' - with pytest.raises(ValidationError, match=r'.*\'fake\' does not match \'unlimited\'.*'): + with pytest.raises(ValidationError, match=r".*'fake' does not match 'unlimited'.*"): validate_config_schema(default_conf) @@ -472,7 +472,7 @@ def test_hyperopt_with_arguments(mocker, default_conf, caplog) -> None: assert 'spaces' in config assert config['spaces'] == ['all'] - assert log_has('Parameter -s/--spaces detected: [\'all\']', caplog) + assert log_has("Parameter -s/--spaces detected: ['all']", caplog) assert "runmode" in config assert config['runmode'] == RunMode.HYPEROPT @@ -722,7 +722,7 @@ def test_load_config_default_exchange(all_conf) -> None: assert 'exchange' not in all_conf with pytest.raises(ValidationError, - match=r'\'exchange\' is a required property'): + match=r"'exchange' is a required property"): validate_config_schema(all_conf) @@ -736,7 +736,7 @@ def test_load_config_default_exchange_name(all_conf) -> None: assert 'name' not in all_conf['exchange'] with pytest.raises(ValidationError, - match=r'\'name\' is a required property'): + match=r"'name' is a required property"): validate_config_schema(all_conf) From bfc68ec792dd230eda42bd6b55c2014c6d9631e1 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 25 Aug 2019 23:36:42 +0300 Subject: [PATCH 0351/3421] minor cleanup in Backtesting --- freqtrade/optimize/backtesting.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 568615b53..f558c82f7 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -64,6 +64,12 @@ class Backtesting(object): self.config['dry_run'] = True self.strategylist: List[IStrategy] = [] + if "ticker_interval" not in self.config: + raise OperationalException("Ticker-interval needs to be set in either configuration " + "or as cli argument `--ticker-interval 5m`") + self.ticker_interval = str(self.config.get('ticker_interval')) + self.ticker_interval_mins = timeframe_to_minutes(self.ticker_interval) + self.exchange = ExchangeResolver(self.config['exchange']['name'], self.config).exchange self.fee = self.exchange.get_fee() @@ -89,12 +95,6 @@ class Backtesting(object): Load strategy into backtesting """ self.strategy = strategy - if "ticker_interval" not in self.config: - raise OperationalException("Ticker-interval needs to be set in either configuration " - "or as cli argument `--ticker-interval 5m`") - - self.ticker_interval = self.config.get('ticker_interval') - self.ticker_interval_mins = timeframe_to_minutes(self.ticker_interval) self.advise_buy = strategy.advise_buy self.advise_sell = strategy.advise_sell # Set stoploss_on_exchange to false for backtesting, From e5da5f7fe79e7ae2a2957f22bce426b97445dd20 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2019 08:07:03 +0000 Subject: [PATCH 0352/3421] Bump mkdocs-material from 4.4.0 to 4.4.1 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.4.0 to 4.4.1. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.4.0...4.4.1) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index ce76d52e5..10ea068ad 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1 +1 @@ -mkdocs-material==4.4.0 \ No newline at end of file +mkdocs-material==4.4.1 \ No newline at end of file From 75e3d22043abb0e96a03e2f2201c39261b970de2 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2019 08:07:07 +0000 Subject: [PATCH 0353/3421] Bump pytest from 5.1.0 to 5.1.1 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.1.0 to 5.1.1. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.1.0...5.1.1) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 6436c60e4..a7b0d358d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ flake8==3.7.8 flake8-type-annotations==0.1.0 flake8-tidy-imports==2.0.0 mypy==0.720 -pytest==5.1.0 +pytest==5.1.1 pytest-asyncio==0.10.0 pytest-cov==2.7.1 pytest-mock==1.10.4 From 6b233eb862d79eaca0dd9a6734d4e6e287bbb3da Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2019 08:07:24 +0000 Subject: [PATCH 0354/3421] Bump ccxt from 1.18.1068 to 1.18.1085 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1068 to 1.18.1085. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.18.1068...1.18.1085) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 3d80c3ef5..c8a9c2f74 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.1068 +ccxt==1.18.1085 SQLAlchemy==1.3.7 python-telegram-bot==11.1.0 arrow==0.14.5 From 6af51358025a9a318cc04c2122b856485ac9f3ce Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2019 08:07:30 +0000 Subject: [PATCH 0355/3421] Bump pandas from 0.25.0 to 0.25.1 Bumps [pandas](https://github.com/pandas-dev/pandas) from 0.25.0 to 0.25.1. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v0.25.0...v0.25.1) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 9d558b5b8..e5015d620 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,5 +2,5 @@ -r requirements-common.txt numpy==1.17.0 -pandas==0.25.0 +pandas==0.25.1 scipy==1.3.1 From 92011f82945f2e36fa73d0bcaaa1ea13fa20a301 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 26 Aug 2019 19:44:33 +0200 Subject: [PATCH 0356/3421] Introduce strategy_version variable --- freqtrade/resolvers/strategy_resolver.py | 4 ++++ freqtrade/strategy/default_strategy.py | 1 + freqtrade/strategy/interface.py | 5 +++++ freqtrade/tests/strategy/test_strategy.py | 25 +++++++++++++++++++++++ user_data/strategies/test_strategy.py | 7 +++++-- 5 files changed, 40 insertions(+), 2 deletions(-) diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 37aa96b68..4e6ef154b 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -153,6 +153,10 @@ class StrategyResolver(IResolver): strategy._populate_fun_len = len(getfullargspec(strategy.populate_indicators).args) strategy._buy_fun_len = len(getfullargspec(strategy.populate_buy_trend).args) strategy._sell_fun_len = len(getfullargspec(strategy.populate_sell_trend).args) + if any([x == 2 for x in [strategy._populate_fun_len, + strategy._buy_fun_len, + strategy._sell_fun_len]]): + strategy.strategy_version = 1 try: return import_strategy(strategy, config=config) diff --git a/freqtrade/strategy/default_strategy.py b/freqtrade/strategy/default_strategy.py index 5c7d50a65..51ef49193 100644 --- a/freqtrade/strategy/default_strategy.py +++ b/freqtrade/strategy/default_strategy.py @@ -13,6 +13,7 @@ class DefaultStrategy(IStrategy): Default Strategy provided by freqtrade bot. You can override it with your own strategy """ + strategy_version: int = 2 # Minimal ROI designed for the strategy minimal_roi = { diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 99f5f26de..4133d31a9 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -60,6 +60,11 @@ class IStrategy(ABC): stoploss -> float: optimal stoploss designed for the strategy ticker_interval -> str: value of the ticker interval to use for the strategy """ + # Strategy interface version + # Default to version 2 + # version 1 is the initial interface without metadata dict + # Version 2 populate_* include metadata dict + strategy_version: int = 2 _populate_fun_len: int = 0 _buy_fun_len: int = 0 diff --git a/freqtrade/tests/strategy/test_strategy.py b/freqtrade/tests/strategy/test_strategy.py index 240b83b8b..28acdea61 100644 --- a/freqtrade/tests/strategy/test_strategy.py +++ b/freqtrade/tests/strategy/test_strategy.py @@ -380,6 +380,31 @@ def test_call_deprecated_function(result, monkeypatch, default_conf): assert resolver.strategy._populate_fun_len == 2 assert resolver.strategy._buy_fun_len == 2 assert resolver.strategy._sell_fun_len == 2 + assert resolver.strategy.strategy_version == 1 + + indicator_df = resolver.strategy.advise_indicators(result, metadata=metadata) + assert isinstance(indicator_df, DataFrame) + assert 'adx' in indicator_df.columns + + buydf = resolver.strategy.advise_buy(result, metadata=metadata) + assert isinstance(buydf, DataFrame) + assert 'buy' in buydf.columns + + selldf = resolver.strategy.advise_sell(result, metadata=metadata) + assert isinstance(selldf, DataFrame) + assert 'sell' in selldf + + +def test_strategy_versioning(result, monkeypatch, default_conf): + default_conf.update({'strategy': 'DefaultStrategy'}) + resolver = StrategyResolver(default_conf) + metadata = {'pair': 'ETH/BTC'} + + # Make sure we are using a legacy function + assert resolver.strategy._populate_fun_len == 3 + assert resolver.strategy._buy_fun_len == 3 + assert resolver.strategy._sell_fun_len == 3 + assert resolver.strategy.strategy_version == 2 indicator_df = resolver.strategy.advise_indicators(result, metadata=metadata) assert isinstance(indicator_df, DataFrame) diff --git a/user_data/strategies/test_strategy.py b/user_data/strategies/test_strategy.py index d8ff790b2..876a2845a 100644 --- a/user_data/strategies/test_strategy.py +++ b/user_data/strategies/test_strategy.py @@ -28,6 +28,9 @@ class TestStrategy(IStrategy): - the prototype for the methods: minimal_roi, stoploss, populate_indicators, populate_buy_trend, populate_sell_trend, hyperopt_space, buy_strategy_generator """ + # Strategy intervace version - allow new iterations of the strategy interface. + # Check the documentation or the Sample strategy to get the latest version. + strategy_version: int = 2 # Minimal ROI designed for the strategy. # This attribute will be overridden if the config file contains "minimal_roi" @@ -256,14 +259,14 @@ class TestStrategy(IStrategy): # Retrieve best bid and best ask # ------------------------------------ """ - # first check if dataprovider is available + # first check if dataprovider is available if self.dp: if self.dp.runmode in ('live', 'dry_run'): ob = self.dp.orderbook(metadata['pair'], 1) dataframe['best_bid'] = ob['bids'][0][0] dataframe['best_ask'] = ob['asks'][0][0] """ - + return dataframe def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: From 0e62b8bd8502d70c9675bcbf0327fde076494461 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 26 Aug 2019 20:16:03 +0200 Subject: [PATCH 0357/3421] Update strategy_version to INTERFACE_VERSION --- freqtrade/resolvers/strategy_resolver.py | 2 +- freqtrade/strategy/default_strategy.py | 2 +- freqtrade/strategy/interface.py | 4 ++-- freqtrade/tests/strategy/test_strategy.py | 6 +++--- user_data/strategies/test_strategy.py | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 4e6ef154b..514e9f22b 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -156,7 +156,7 @@ class StrategyResolver(IResolver): if any([x == 2 for x in [strategy._populate_fun_len, strategy._buy_fun_len, strategy._sell_fun_len]]): - strategy.strategy_version = 1 + strategy.INTERFACE_VERSION = 1 try: return import_strategy(strategy, config=config) diff --git a/freqtrade/strategy/default_strategy.py b/freqtrade/strategy/default_strategy.py index 51ef49193..4907f20ed 100644 --- a/freqtrade/strategy/default_strategy.py +++ b/freqtrade/strategy/default_strategy.py @@ -13,7 +13,7 @@ class DefaultStrategy(IStrategy): Default Strategy provided by freqtrade bot. You can override it with your own strategy """ - strategy_version: int = 2 + INTERFACE_VERSION = 2 # Minimal ROI designed for the strategy minimal_roi = { diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 4133d31a9..3f2478cc0 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -62,9 +62,9 @@ class IStrategy(ABC): """ # Strategy interface version # Default to version 2 - # version 1 is the initial interface without metadata dict + # Version 1 is the initial interface without metadata dict # Version 2 populate_* include metadata dict - strategy_version: int = 2 + INTERFACE_VERSION: int = 2 _populate_fun_len: int = 0 _buy_fun_len: int = 0 diff --git a/freqtrade/tests/strategy/test_strategy.py b/freqtrade/tests/strategy/test_strategy.py index 28acdea61..b1a6a6548 100644 --- a/freqtrade/tests/strategy/test_strategy.py +++ b/freqtrade/tests/strategy/test_strategy.py @@ -380,7 +380,7 @@ def test_call_deprecated_function(result, monkeypatch, default_conf): assert resolver.strategy._populate_fun_len == 2 assert resolver.strategy._buy_fun_len == 2 assert resolver.strategy._sell_fun_len == 2 - assert resolver.strategy.strategy_version == 1 + assert resolver.strategy.INTERFACE_VERSION == 1 indicator_df = resolver.strategy.advise_indicators(result, metadata=metadata) assert isinstance(indicator_df, DataFrame) @@ -395,7 +395,7 @@ def test_call_deprecated_function(result, monkeypatch, default_conf): assert 'sell' in selldf -def test_strategy_versioning(result, monkeypatch, default_conf): +def test_strategy_interface_versioning(result, monkeypatch, default_conf): default_conf.update({'strategy': 'DefaultStrategy'}) resolver = StrategyResolver(default_conf) metadata = {'pair': 'ETH/BTC'} @@ -404,7 +404,7 @@ def test_strategy_versioning(result, monkeypatch, default_conf): assert resolver.strategy._populate_fun_len == 3 assert resolver.strategy._buy_fun_len == 3 assert resolver.strategy._sell_fun_len == 3 - assert resolver.strategy.strategy_version == 2 + assert resolver.strategy.INTERFACE_VERSION == 2 indicator_df = resolver.strategy.advise_indicators(result, metadata=metadata) assert isinstance(indicator_df, DataFrame) diff --git a/user_data/strategies/test_strategy.py b/user_data/strategies/test_strategy.py index 876a2845a..8e2bf8973 100644 --- a/user_data/strategies/test_strategy.py +++ b/user_data/strategies/test_strategy.py @@ -30,7 +30,7 @@ class TestStrategy(IStrategy): """ # Strategy intervace version - allow new iterations of the strategy interface. # Check the documentation or the Sample strategy to get the latest version. - strategy_version: int = 2 + INTERFACE_VERSION = 2 # Minimal ROI designed for the strategy. # This attribute will be overridden if the config file contains "minimal_roi" From d9c2b7d460dbb9a1eeee7fc53aa43822ecc420e3 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 26 Aug 2019 22:31:24 +0300 Subject: [PATCH 0358/3421] fix fetching ticker_interval from strategy --- freqtrade/optimize/backtesting.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index f558c82f7..4fba47243 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -64,12 +64,6 @@ class Backtesting(object): self.config['dry_run'] = True self.strategylist: List[IStrategy] = [] - if "ticker_interval" not in self.config: - raise OperationalException("Ticker-interval needs to be set in either configuration " - "or as cli argument `--ticker-interval 5m`") - self.ticker_interval = str(self.config.get('ticker_interval')) - self.ticker_interval_mins = timeframe_to_minutes(self.ticker_interval) - self.exchange = ExchangeResolver(self.config['exchange']['name'], self.config).exchange self.fee = self.exchange.get_fee() @@ -87,6 +81,12 @@ class Backtesting(object): # No strategy list specified, only one strategy self.strategylist.append(StrategyResolver(self.config).strategy) + if "ticker_interval" not in self.config: + raise OperationalException("Ticker-interval needs to be set in either configuration " + "or as cli argument `--ticker-interval 5m`") + self.ticker_interval = str(self.config.get('ticker_interval')) + self.ticker_interval_mins = timeframe_to_minutes(self.ticker_interval) + # Load one (first) strategy self._set_strategy(self.strategylist[0]) From a504abf00c67d9f79904d265ddca3d5d72d9a305 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 27 Aug 2019 04:12:00 +0300 Subject: [PATCH 0359/3421] minor: improvements in confuguration.md --- docs/configuration.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 2d21de942..22b112627 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -61,8 +61,9 @@ Mandatory parameters are marked as **Required**. | `order_time_in_force` | None | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy). | `exchange.name` | | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename). | `exchange.sandbox` | false | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details. -| `exchange.key` | '' | API key to use for the exchange. Only required when you are in production mode. -| `exchange.secret` | '' | API secret to use for the exchange. Only required when you are in production mode. +| `exchange.key` | '' | API key to use for the exchange. Only required when you are in production mode. Keep it in secrete, do not disclose publicly. +| `exchange.secret` | '' | API secret to use for the exchange. Only required when you are in production mode. Keep it in secrete, do not disclose publicly. +| `exchange.password` | '' | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. Keep it in secrete, do not disclose publicly. | `exchange.pair_whitelist` | [] | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Can be overriden by dynamic pairlists (see [below](#dynamic-pairlists)). | `exchange.pair_blacklist` | [] | List of pairs the bot must absolutely avoid for trading and backtesting. Can be overriden by dynamic pairlists (see [below](#dynamic-pairlists)). | `exchange.ccxt_config` | None | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) @@ -76,8 +77,8 @@ Mandatory parameters are marked as **Required**. | `pairlist.method` | StaticPairList | Use static or dynamic volume-based pairlist. [More information below](#dynamic-pairlists). | `pairlist.config` | None | Additional configuration for dynamic pairlists. [More information below](#dynamic-pairlists). | `telegram.enabled` | true | **Required.** Enable or not the usage of Telegram. -| `telegram.token` | token | Your Telegram bot token. Only required if `telegram.enabled` is `true`. -| `telegram.chat_id` | chat_id | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. +| `telegram.token` | token | Your Telegram bot token. Only required if `telegram.enabled` is `true`. Keep it in secrete, do not disclose publicly. +| `telegram.chat_id` | chat_id | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. Keep it in secrete, do not disclose publicly. | `webhook.enabled` | false | Enable usage of Webhook notifications | `webhook.url` | false | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. | `webhook.webhookbuy` | false | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. From d66fb86449eccca42637177d0764f1a2eebe5ae2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 27 Aug 2019 06:32:01 +0200 Subject: [PATCH 0360/3421] Add documentation for interface_version --- docs/strategy-customization.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 9e32ded18..5cf3784ef 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -36,9 +36,14 @@ A strategy file contains all the information needed to build a good strategy: - Minimal ROI recommended - Stoploss strongly recommended -The bot also include a sample strategy called `TestStrategy` you can update: `user_data/strategies/test_strategy.py`. +The bot includes a sample strategy called `TestStrategy` you can update: `user_data/strategies/test_strategy.py`. You can test it with the parameter: `--strategy TestStrategy` +Additionally, there is an attribute called `INTERFACE_VERSION`, which defines the version of the strategy interface the bot should use. +The current version is 2 - which is also the default when it's not set explicitly in the strategy. + +Future versions will require this to be set. + ```bash freqtrade --strategy AwesomeStrategy ``` From 51fbeed71f882902254b23d2459a92cffd35f1f7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 27 Aug 2019 06:41:07 +0200 Subject: [PATCH 0361/3421] Rename TestStrategy to SampleStrategy --- docs/backtesting.md | 10 +++++----- docs/data-analysis.md | 2 +- docs/strategy-customization.md | 15 +++++++-------- freqtrade/tests/optimize/test_backtesting.py | 6 +++--- freqtrade/tests/optimize/test_hyperopt.py | 2 +- freqtrade/tests/strategy/legacy_strategy.py | 2 +- freqtrade/tests/strategy/test_strategy.py | 12 ++++++------ freqtrade/tests/test_arguments.py | 2 +- .../notebooks/strategy_analysis_example.ipynb | 2 +- .../{test_strategy.py => sample_strategy.py} | 9 ++++----- 10 files changed, 30 insertions(+), 32 deletions(-) rename user_data/strategies/{test_strategy.py => sample_strategy.py} (98%) diff --git a/docs/backtesting.md b/docs/backtesting.md index 13d19f0ca..3da76c0ce 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -79,18 +79,18 @@ freqtrade backtesting --datadir user_data/data/bittrex-20180101 #### With a (custom) strategy file ```bash -freqtrade -s TestStrategy backtesting +freqtrade -s SampleStrategy backtesting ``` -Where `-s TestStrategy` refers to the class name within the strategy file `test_strategy.py` found in the `freqtrade/user_data/strategies` directory. +Where `-s SampleStrategy` refers to the class name within the strategy file `sample_strategy.py` found in the `freqtrade/user_data/strategies` directory. #### Comparing multiple Strategies ```bash -freqtrade backtesting --strategy-list TestStrategy1 AwesomeStrategy --ticker-interval 5m +freqtrade backtesting --strategy-list SampleStrategy1 AwesomeStrategy --ticker-interval 5m ``` -Where `TestStrategy1` and `AwesomeStrategy` refer to class names of strategies. +Where `SampleStrategy1` and `AwesomeStrategy` refer to class names of strategies. #### Exporting trades to file @@ -103,7 +103,7 @@ The exported trades can be used for [further analysis](#further-backtest-result- #### Exporting trades to file specifying a custom filename ```bash -freqtrade backtesting --export trades --export-filename=backtest_teststrategy.json +freqtrade backtesting --export trades --export-filename=backtest_samplestrategy.json ``` #### Running backtest with smaller testset diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 2f077edb7..f6277cac2 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -139,7 +139,7 @@ You can override strategy settings as demonstrated below. # Define some constants ticker_interval = "5m" # Name of the strategy class -strategy_name = 'TestStrategy' +strategy_name = 'SampleStrategy' # Path to user data user_data_dir = 'user_data' # Location of the strategy diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 9e32ded18..a08304abb 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -24,7 +24,7 @@ strategy file will be updated on Github. Put your custom strategy file into the directory `user_data/strategies`. Best copy the test-strategy and modify this copy to avoid having bot-updates override your changes. -`cp user_data/strategies/test_strategy.py user_data/strategies/awesome-strategy.py` +`cp user_data/strategies/sample_strategy.py user_data/strategies/awesome-strategy.py` ### Anatomy of a strategy @@ -36,14 +36,14 @@ A strategy file contains all the information needed to build a good strategy: - Minimal ROI recommended - Stoploss strongly recommended -The bot also include a sample strategy called `TestStrategy` you can update: `user_data/strategies/test_strategy.py`. -You can test it with the parameter: `--strategy TestStrategy` +The bot also include a sample strategy called `SampleStrategy` you can update: `user_data/strategies/sample_strategy.py`. +You can test it with the parameter: `--strategy SampleStrategy` ```bash freqtrade --strategy AwesomeStrategy ``` -**For the following section we will use the [user_data/strategies/test_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/test_strategy.py) +**For the following section we will use the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/sample_strategy.py) file as reference.** !!! Note Strategies and Backtesting @@ -109,9 +109,8 @@ def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame return dataframe ``` - !!! Note "Want more indicator examples?" - Look into the [user_data/strategies/test_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/test_strategy.py).
+ Look into the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/sample_strategy.py). Then uncomment indicators you need. ### Buy signal rules @@ -122,7 +121,7 @@ It's important to always return the dataframe without removing/modifying the col This will method will also define a new column, `"buy"`, which needs to contain 1 for buys, and 0 for "no action". -Sample from `user_data/strategies/test_strategy.py`: +Sample from `user_data/strategies/sample_strategy.py`: ```python def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: @@ -152,7 +151,7 @@ It's important to always return the dataframe without removing/modifying the col This will method will also define a new column, `"sell"`, which needs to contain 1 for sells, and 0 for "no action". -Sample from `user_data/strategies/test_strategy.py`: +Sample from `user_data/strategies/sample_strategy.py`: ```python def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: diff --git a/freqtrade/tests/optimize/test_backtesting.py b/freqtrade/tests/optimize/test_backtesting.py index 5c942ab72..52eae9df0 100644 --- a/freqtrade/tests/optimize/test_backtesting.py +++ b/freqtrade/tests/optimize/test_backtesting.py @@ -330,7 +330,7 @@ def test_backtesting_init_no_ticker_interval(mocker, default_conf, caplog) -> No patch_exchange(mocker) del default_conf['ticker_interval'] default_conf['strategy_list'] = ['DefaultStrategy', - 'TestStrategy'] + 'SampleStrategy'] mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.5)) with pytest.raises(OperationalException): @@ -877,7 +877,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog): '--disable-max-market-positions', '--strategy-list', 'DefaultStrategy', - 'TestStrategy', + 'SampleStrategy', ] args = get_args(args) start_backtesting(args) @@ -898,7 +898,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog): 'up to 2017-11-14T22:58:00+00:00 (0 days)..', 'Parameter --enable-position-stacking detected ...', 'Running backtesting for Strategy DefaultStrategy', - 'Running backtesting for Strategy TestStrategy', + 'Running backtesting for Strategy SampleStrategy', ] for line in exists: diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py index f9ebf552d..9583de510 100644 --- a/freqtrade/tests/optimize/test_hyperopt.py +++ b/freqtrade/tests/optimize/test_hyperopt.py @@ -254,7 +254,7 @@ def test_start_failure(mocker, default_conf, caplog) -> None: args = [ '--config', 'config.json', - '--strategy', 'TestStrategy', + '--strategy', 'SampleStrategy', 'hyperopt', '--epochs', '5' ] diff --git a/freqtrade/tests/strategy/legacy_strategy.py b/freqtrade/tests/strategy/legacy_strategy.py index 2cd13b791..af1b617a6 100644 --- a/freqtrade/tests/strategy/legacy_strategy.py +++ b/freqtrade/tests/strategy/legacy_strategy.py @@ -15,7 +15,7 @@ class TestStrategyLegacy(IStrategy): """ This is a test strategy using the legacy function headers, which will be removed in a future update. - Please do not use this as a template, but refer to user_data/strategy/TestStrategy.py + Please do not use this as a template, but refer to user_data/strategy/sample_strategy.py for a uptodate version of this template. """ diff --git a/freqtrade/tests/strategy/test_strategy.py b/freqtrade/tests/strategy/test_strategy.py index 240b83b8b..33c6e1128 100644 --- a/freqtrade/tests/strategy/test_strategy.py +++ b/freqtrade/tests/strategy/test_strategy.py @@ -61,27 +61,27 @@ def test_search_strategy(): def test_load_strategy(default_conf, result): - default_conf.update({'strategy': 'TestStrategy'}) + default_conf.update({'strategy': 'SampleStrategy'}) resolver = StrategyResolver(default_conf) assert 'adx' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) def test_load_strategy_base64(result, caplog, default_conf): - with open("user_data/strategies/test_strategy.py", "rb") as file: + with open("user_data/strategies/sample_strategy.py", "rb") as file: encoded_string = urlsafe_b64encode(file.read()).decode("utf-8") - default_conf.update({'strategy': 'TestStrategy:{}'.format(encoded_string)}) + default_conf.update({'strategy': 'SampleStrategy:{}'.format(encoded_string)}) resolver = StrategyResolver(default_conf) assert 'adx' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) # Make sure strategy was loaded from base64 (using temp directory)!! - assert log_has_re(r"Using resolved strategy TestStrategy from '" - + tempfile.gettempdir() + r"/.*/TestStrategy\.py'\.\.\.", caplog) + assert log_has_re(r"Using resolved strategy SampleStrategy from '" + + tempfile.gettempdir() + r"/.*/SampleStrategy\.py'\.\.\.", caplog) def test_load_strategy_invalid_directory(result, caplog, default_conf): resolver = StrategyResolver(default_conf) extra_dir = Path.cwd() / 'some/path' - resolver._load_strategy('TestStrategy', config=default_conf, extra_dir=extra_dir) + resolver._load_strategy('SampleStrategy', config=default_conf, extra_dir=extra_dir) assert log_has_re(r'Path .*' + r'some.*path.*' + r'.* does not exist', caplog) diff --git a/freqtrade/tests/test_arguments.py b/freqtrade/tests/test_arguments.py index 24f11e32e..381457bbd 100644 --- a/freqtrade/tests/test_arguments.py +++ b/freqtrade/tests/test_arguments.py @@ -102,7 +102,7 @@ def test_parse_args_backtesting_custom() -> None: '--refresh-pairs-cached', '--strategy-list', 'DefaultStrategy', - 'TestStrategy' + 'SampleStrategy' ] call_args = Arguments(args, '').get_parsed_arg() assert call_args.config == ['test_conf.json'] diff --git a/user_data/notebooks/strategy_analysis_example.ipynb b/user_data/notebooks/strategy_analysis_example.ipynb index 014f4ca90..89d71fe9d 100644 --- a/user_data/notebooks/strategy_analysis_example.ipynb +++ b/user_data/notebooks/strategy_analysis_example.ipynb @@ -52,7 +52,7 @@ "# Define some constants\n", "ticker_interval = \"5m\"\n", "# Name of the strategy class\n", - "strategy_name = 'TestStrategy'\n", + "strategy_name = 'SampleStrategy'\n", "# Path to user data\n", "user_data_dir = 'user_data'\n", "# Location of the strategy\n", diff --git a/user_data/strategies/test_strategy.py b/user_data/strategies/sample_strategy.py similarity index 98% rename from user_data/strategies/test_strategy.py rename to user_data/strategies/sample_strategy.py index d8ff790b2..db16dff79 100644 --- a/user_data/strategies/test_strategy.py +++ b/user_data/strategies/sample_strategy.py @@ -11,10 +11,9 @@ import numpy # noqa # This class is a sample. Feel free to customize it. -class TestStrategy(IStrategy): - __test__ = False # pytest expects to find tests here because of the name +class SampleStrategy(IStrategy): """ - This is a test strategy to inspire you. + This is an example strategy to inspire you. More information in https://github.com/freqtrade/freqtrade/blob/develop/docs/bot-optimization.md You can: @@ -256,14 +255,14 @@ class TestStrategy(IStrategy): # Retrieve best bid and best ask # ------------------------------------ """ - # first check if dataprovider is available + # first check if dataprovider is available if self.dp: if self.dp.runmode in ('live', 'dry_run'): ob = self.dp.orderbook(metadata['pair'], 1) dataframe['best_bid'] = ob['bids'][0][0] dataframe['best_ask'] = ob['asks'][0][0] """ - + return dataframe def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: From 756f44fcbdb0395025468d4b3f4806fff99a5918 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 28 Aug 2019 00:20:32 +0300 Subject: [PATCH 0362/3421] highlight really important notifications --- docs/configuration.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 22b112627..fcd6c2bf6 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -61,9 +61,9 @@ Mandatory parameters are marked as **Required**. | `order_time_in_force` | None | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy). | `exchange.name` | | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename). | `exchange.sandbox` | false | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details. -| `exchange.key` | '' | API key to use for the exchange. Only required when you are in production mode. Keep it in secrete, do not disclose publicly. -| `exchange.secret` | '' | API secret to use for the exchange. Only required when you are in production mode. Keep it in secrete, do not disclose publicly. -| `exchange.password` | '' | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. Keep it in secrete, do not disclose publicly. +| `exchange.key` | '' | API key to use for the exchange. Only required when you are in production mode. ***Keep it in secrete, do not disclose publicly.*** +| `exchange.secret` | '' | API secret to use for the exchange. Only required when you are in production mode. ***Keep it in secrete, do not disclose publicly.*** +| `exchange.password` | '' | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. ***Keep it in secrete, do not disclose publicly.*** | `exchange.pair_whitelist` | [] | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Can be overriden by dynamic pairlists (see [below](#dynamic-pairlists)). | `exchange.pair_blacklist` | [] | List of pairs the bot must absolutely avoid for trading and backtesting. Can be overriden by dynamic pairlists (see [below](#dynamic-pairlists)). | `exchange.ccxt_config` | None | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) @@ -77,8 +77,8 @@ Mandatory parameters are marked as **Required**. | `pairlist.method` | StaticPairList | Use static or dynamic volume-based pairlist. [More information below](#dynamic-pairlists). | `pairlist.config` | None | Additional configuration for dynamic pairlists. [More information below](#dynamic-pairlists). | `telegram.enabled` | true | **Required.** Enable or not the usage of Telegram. -| `telegram.token` | token | Your Telegram bot token. Only required if `telegram.enabled` is `true`. Keep it in secrete, do not disclose publicly. -| `telegram.chat_id` | chat_id | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. Keep it in secrete, do not disclose publicly. +| `telegram.token` | token | Your Telegram bot token. Only required if `telegram.enabled` is `true`. ***Keep it in secrete, do not disclose publicly.*** +| `telegram.chat_id` | chat_id | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. ***Keep it in secrete, do not disclose publicly.*** | `webhook.enabled` | false | Enable usage of Webhook notifications | `webhook.url` | false | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. | `webhook.webhookbuy` | false | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. From 8923c02222d3887ac10b012a5825cedb19c13e5c Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 28 Aug 2019 06:07:18 +0200 Subject: [PATCH 0363/3421] docstring wording --- user_data/strategies/sample_strategy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_data/strategies/sample_strategy.py b/user_data/strategies/sample_strategy.py index db16dff79..4610a2e41 100644 --- a/user_data/strategies/sample_strategy.py +++ b/user_data/strategies/sample_strategy.py @@ -13,7 +13,7 @@ import numpy # noqa # This class is a sample. Feel free to customize it. class SampleStrategy(IStrategy): """ - This is an example strategy to inspire you. + This is a sample strategy to inspire you. More information in https://github.com/freqtrade/freqtrade/blob/develop/docs/bot-optimization.md You can: From c38f3a2b9a89fe2e6c76a8e098aa4d11b31c5614 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 28 Aug 2019 07:05:48 +0200 Subject: [PATCH 0364/3421] Apply dynamic versioning to develop --- freqtrade/__init__.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/freqtrade/__init__.py b/freqtrade/__init__.py index 5ccc2ff3c..175b689f9 100644 --- a/freqtrade/__init__.py +++ b/freqtrade/__init__.py @@ -1,5 +1,15 @@ """ FreqTrade bot """ -__version__ = '2019.7-dev' +__version__ = 'develop' + +if __version__ == 'develop': + + try: + import subprocess + __version__ = str(subprocess.check_output( + ["git", "describe"], stderr=subprocess.DEVNULL).rstrip()) + except Exception: + # git not available, ignore + pass class DependencyException(Exception): From 68adfc6607ba790ad3d26d8b1ef332d3190f886c Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 29 Aug 2019 06:42:56 +0200 Subject: [PATCH 0365/3421] Init exchange before datadir ... --- freqtrade/configuration/configuration.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index f5480c53a..e58ce0de1 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -160,6 +160,11 @@ class Configuration(object): Extract information for sys.argv and load directory configurations --user-data, --datadir """ + # Check exchange parameter here - otherwise `datadir` might be wrong. + if "exchange" in self.args and self.args.exchange: + config['exchange']['name'] = self.args.exchange + logger.info(f"Using exchange {config['exchange']['name']}") + if 'user_data_dir' in self.args and self.args.user_data_dir: config.update({'user_data_dir': self.args.user_data_dir}) elif 'user_data_dir' not in config: @@ -297,10 +302,6 @@ class Configuration(object): self._args_to_config(config, argname='days', logstring='Detected --days: {}') - if "exchange" in self.args and self.args.exchange: - config['exchange']['name'] = self.args.exchange - logger.info(f"Using exchange {config['exchange']['name']}") - def _process_runmode(self, config: Dict[str, Any]) -> None: if not self.runmode: @@ -361,7 +362,7 @@ class Configuration(object): config['pairs'] = config.get('exchange', {}).get('pair_whitelist') else: # Fall back to /dl_path/pairs.json - pairs_file = Path(config['datadir']) / config['exchange']['name'].lower() / "pairs.json" + pairs_file = Path(config['datadir']) / "pairs.json" if pairs_file.exists(): with pairs_file.open('r') as f: config['pairs'] = json_load(f) From 6b3d25b54b4f47ebd3b658aeaee3ff2501a23d14 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 29 Aug 2019 06:45:20 +0200 Subject: [PATCH 0366/3421] Fix datadir init when used wiht --exchange --- freqtrade/tests/test_configuration.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index d98ff9ad0..b8bc62eb6 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -871,3 +871,4 @@ def test_pairlist_resolving_fallback(mocker): assert config['pairs'] == ['ETH/BTC', 'XRP/BTC'] assert config['exchange']['name'] == 'binance' + assert config['datadir'] == str(Path.cwd() / "user_data/data/binance") From cabe2910062610ee91768f7d111c9e8e1894705e Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 29 Aug 2019 06:54:28 +0200 Subject: [PATCH 0367/3421] Fix test-leakage by not copying config correctly --- freqtrade/configuration/configuration.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index e58ce0de1..b1bd3ef1c 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -4,6 +4,7 @@ This module contains the configuration class import logging import warnings from argparse import Namespace +from copy import deepcopy from pathlib import Path from typing import Any, Callable, Dict, List, Optional @@ -56,7 +57,7 @@ class Configuration(object): config: Dict[str, Any] = {} if not files: - return constants.MINIMAL_CONFIG.copy() + return deepcopy(constants.MINIMAL_CONFIG) # We expect here a list of config filenames for path in files: From b6b7dcd61c28722f87f34bffefd84c0982b995ce Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 30 Aug 2019 06:59:19 +0200 Subject: [PATCH 0368/3421] Test NotImplemented is cought correctly --- freqtrade/tests/rpc/test_rpc_manager.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/freqtrade/tests/rpc/test_rpc_manager.py b/freqtrade/tests/rpc/test_rpc_manager.py index 468e3e8e5..d34d76524 100644 --- a/freqtrade/tests/rpc/test_rpc_manager.py +++ b/freqtrade/tests/rpc/test_rpc_manager.py @@ -115,6 +115,22 @@ def test_init_webhook_enabled(mocker, default_conf, caplog) -> None: assert 'webhook' in [mod.name for mod in rpc_manager.registered_modules] +def test_send_msg_webhook_CustomMessagetype(mocker, default_conf, caplog) -> None: + caplog.set_level(logging.DEBUG) + default_conf['telegram']['enabled'] = False + default_conf['webhook'] = {'enabled': True, 'url': "https://DEADBEEF.com"} + mocker.patch('freqtrade.rpc.webhook.Webhook.send_msg', + MagicMock(side_effect=NotImplementedError)) + rpc_manager = RPCManager(get_patched_freqtradebot(mocker, default_conf)) + + assert 'webhook' in [mod.name for mod in rpc_manager.registered_modules] + rpc_manager.send_msg({'type': RPCMessageType.CUSTOM_NOTIFICATION, + 'status': 'TestMessage'}) + assert log_has( + "Message type RPCMessageType.CUSTOM_NOTIFICATION not implemented by handler webhook.", + caplog) + + def test_startupmessages_telegram_enabled(mocker, default_conf, caplog) -> None: telegram_mock = mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg', MagicMock()) mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock()) From d977695d48594f7f7c10610ad9798398b2e9eae0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 30 Aug 2019 07:02:26 +0200 Subject: [PATCH 0369/3421] Catch NotImplementedError when sending messages (RPC should not crash your bot!) --- freqtrade/rpc/rpc_manager.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc_manager.py b/freqtrade/rpc/rpc_manager.py index fad532aa0..d6e7b174d 100644 --- a/freqtrade/rpc/rpc_manager.py +++ b/freqtrade/rpc/rpc_manager.py @@ -56,7 +56,10 @@ class RPCManager(object): logger.info('Sending rpc message: %s', msg) for mod in self.registered_modules: logger.debug('Forwarding message to rpc.%s', mod.name) - mod.send_msg(msg) + try: + mod.send_msg(msg) + except NotImplementedError: + logger.error(f"Message type {msg['type']} not implemented by handler {mod.name}.") def startup_messages(self, config, pairlist) -> None: if config.get('dry_run', False): From 75dc174c76992ae7d762e2183acd798f111435be Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 30 Aug 2019 07:02:57 +0200 Subject: [PATCH 0370/3421] support all messagetypes in webhook --- freqtrade/rpc/webhook.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/webhook.py b/freqtrade/rpc/webhook.py index bfc82b8d6..37ca466de 100644 --- a/freqtrade/rpc/webhook.py +++ b/freqtrade/rpc/webhook.py @@ -43,7 +43,9 @@ class Webhook(RPC): valuedict = self._config['webhook'].get('webhookbuy', None) elif msg['type'] == RPCMessageType.SELL_NOTIFICATION: valuedict = self._config['webhook'].get('webhooksell', None) - elif msg['type'] == RPCMessageType.STATUS_NOTIFICATION: + elif msg['type'] in(RPCMessageType.STATUS_NOTIFICATION, + RPCMessageType.CUSTOM_NOTIFICATION, + RPCMessageType.WARNING_NOTIFICATION): valuedict = self._config['webhook'].get('webhookstatus', None) else: raise NotImplementedError('Unknown message type: {}'.format(msg['type'])) From d060d277457b26e1e7229e04ccb3d6a95ef6e90d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 30 Aug 2019 07:05:22 +0200 Subject: [PATCH 0371/3421] Add test for all messagetypes --- freqtrade/tests/rpc/test_rpc_webhook.py | 33 ++++++++++++++----------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/freqtrade/tests/rpc/test_rpc_webhook.py b/freqtrade/tests/rpc/test_rpc_webhook.py index cc491d4dd..1c6c07e16 100644 --- a/freqtrade/tests/rpc/test_rpc_webhook.py +++ b/freqtrade/tests/rpc/test_rpc_webhook.py @@ -91,21 +91,24 @@ def test_send_msg(default_conf, mocker): assert (msg_mock.call_args[0][0]["value3"] == default_conf["webhook"]["webhooksell"]["value3"].format(**msg)) - # Test notification - msg = { - 'type': RPCMessageType.STATUS_NOTIFICATION, - 'status': 'Unfilled sell order for BTC cancelled due to timeout' - } - msg_mock = MagicMock() - mocker.patch("freqtrade.rpc.webhook.Webhook._send_msg", msg_mock) - webhook.send_msg(msg) - assert msg_mock.call_count == 1 - assert (msg_mock.call_args[0][0]["value1"] == - default_conf["webhook"]["webhookstatus"]["value1"].format(**msg)) - assert (msg_mock.call_args[0][0]["value2"] == - default_conf["webhook"]["webhookstatus"]["value2"].format(**msg)) - assert (msg_mock.call_args[0][0]["value3"] == - default_conf["webhook"]["webhookstatus"]["value3"].format(**msg)) + for msgtype in [RPCMessageType.STATUS_NOTIFICATION, + RPCMessageType.WARNING_NOTIFICATION, + RPCMessageType.CUSTOM_NOTIFICATION]: + # Test notification + msg = { + 'type': msgtype, + 'status': 'Unfilled sell order for BTC cancelled due to timeout' + } + msg_mock = MagicMock() + mocker.patch("freqtrade.rpc.webhook.Webhook._send_msg", msg_mock) + webhook.send_msg(msg) + assert msg_mock.call_count == 1 + assert (msg_mock.call_args[0][0]["value1"] == + default_conf["webhook"]["webhookstatus"]["value1"].format(**msg)) + assert (msg_mock.call_args[0][0]["value2"] == + default_conf["webhook"]["webhookstatus"]["value2"].format(**msg)) + assert (msg_mock.call_args[0][0]["value3"] == + default_conf["webhook"]["webhookstatus"]["value3"].format(**msg)) def test_exception_send_msg(default_conf, mocker, caplog): From 423805c9caac2a0754b2cdbbbd9aab85abfce654 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 30 Aug 2019 20:42:14 +0200 Subject: [PATCH 0372/3421] Small documentation improvements --- docs/plotting.md | 12 ++++++------ freqtrade/configuration/arguments.py | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/plotting.md b/docs/plotting.md index 00fdd33a4..d3247488c 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -12,7 +12,7 @@ pip install -U -r requirements-plot.txt ## Plot price and indicators -Plot dataframe shows an interactive graph with three subplots: +The `freqtrade plot-dataframe` subcommand shows an interactive graph with three subplots: * Main plot with candlestics and indicators following price (sma/ema) * Volume bars @@ -71,10 +71,10 @@ Example: freqtrade plot-dataframe -p BTC/ETH ``` -The `--pairs` argument can be used to specify pairs you would like to plot. +The `-p/--pairs` argument can be used to specify pairs you would like to plot. !!! Note - Generates one plot-file per pair. + The `freqtrade plot-dataframe` subcommand generates one plot-file per pair. Specify custom indicators. Use `--indicators1` for the main plot and `--indicators2` for the subplot below (if values are in a different range than prices). @@ -116,7 +116,7 @@ freqtrade --strategy AwesomeStrategy plot-dataframe --export-filename user_data/ ![plot-profit](assets/plot-profit.png) -Plot profit shows an interactive graph with three plots: +The `freqtrade plot-profit` subcommand shows an interactive graph with three plots: 1) Average closing price for all pairs 2) The summarized profit made by backtesting. @@ -130,7 +130,7 @@ Perhaps you want an algorithm that steadily makes small profits, or one that act The third graph can be useful to spot outliers, events in pairs that cause profit spikes. -Usage for the plot-profit module: +Possible options for the `freqtrade plot-profit` subcommand: ``` usage: freqtrade plot-profit [-h] [-p PAIRS [PAIRS ...]] @@ -162,7 +162,7 @@ optional arguments: ``` -The `--pairs` argument, can be used to limit the pairs that are considered for this calculation. +The `-p/--pairs` argument, can be used to limit the pairs that are considered for this calculation. Examples: diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 4bd4410a6..f77832387 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -117,7 +117,7 @@ class Arguments(object): hyperopt_cmd.set_defaults(func=start_hyperopt) self._build_args(optionlist=ARGS_HYPEROPT, parser=hyperopt_cmd) - # Create userdir subcommand + # add create-userdir subcommand create_userdir_cmd = subparsers.add_parser('create-userdir', help="Create user-data directory.") create_userdir_cmd.set_defaults(func=start_create_userdir) From f278fcfc3fb41b2cc9be482824699bc875bd8bfa Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 31 Aug 2019 15:14:57 +0200 Subject: [PATCH 0373/3421] Use plot-runmode for plot scripts --- freqtrade/plot/plot_utils.py | 4 ++-- freqtrade/state.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/plot/plot_utils.py b/freqtrade/plot/plot_utils.py index 11bc9f552..507e86d9d 100644 --- a/freqtrade/plot/plot_utils.py +++ b/freqtrade/plot/plot_utils.py @@ -10,7 +10,7 @@ def start_plot_dataframe(args: Namespace) -> None: """ # Import here to avoid errors if plot-dependencies are not installed. from freqtrade.plot.plotting import analyse_and_plot_pairs - config = setup_utils_configuration(args, RunMode.OTHER) + config = setup_utils_configuration(args, RunMode.PLOT) analyse_and_plot_pairs(config) @@ -21,6 +21,6 @@ def start_plot_profit(args: Namespace) -> None: """ # Import here to avoid errors if plot-dependencies are not installed. from freqtrade.plot.plotting import plot_profit - config = setup_utils_configuration(args, RunMode.OTHER) + config = setup_utils_configuration(args, RunMode.PLOT) plot_profit(config) diff --git a/freqtrade/state.py b/freqtrade/state.py index ce2683a77..d4a2adba0 100644 --- a/freqtrade/state.py +++ b/freqtrade/state.py @@ -25,4 +25,5 @@ class RunMode(Enum): BACKTEST = "backtest" EDGE = "edge" HYPEROPT = "hyperopt" + PLOT = "plot" OTHER = "other" # Used for plotting scripts and test From 1760a8dfbc16d3dcb2e94878c47214f860094dfd Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 31 Aug 2019 15:15:10 +0200 Subject: [PATCH 0374/3421] Use subparser-name to exclude from config requires --- freqtrade/configuration/arguments.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index f77832387..2c814b342 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -40,7 +40,7 @@ ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_ ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source", "ticker_interval"] -NO_CONF_REQURIED = ["start_download_data"] +NO_CONF_REQURIED = ["download-data", "plot-dataframe", "plot-profit"] class Arguments(object): @@ -79,8 +79,7 @@ class Arguments(object): # (see https://bugs.python.org/issue16399) # Allow no-config for certain commands (like downloading / plotting) if (not self._no_default_config and parsed_arg.config is None - and not (hasattr(parsed_arg, 'func') - and parsed_arg.func.__name__ in NO_CONF_REQURIED)): + and not ('subparser' in parsed_arg and parsed_arg.subparser in NO_CONF_REQURIED)): parsed_arg.config = [constants.DEFAULT_CONFIG] return parsed_arg From d48f03c32e1e5ec722bed20efb1d621d4476a3cd Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 31 Aug 2019 15:15:30 +0200 Subject: [PATCH 0375/3421] check_exchange is not required for plotting --- freqtrade/configuration/check_exchange.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/freqtrade/configuration/check_exchange.py b/freqtrade/configuration/check_exchange.py index 70f4cfa33..61e862a9c 100644 --- a/freqtrade/configuration/check_exchange.py +++ b/freqtrade/configuration/check_exchange.py @@ -5,6 +5,7 @@ from freqtrade import OperationalException from freqtrade.exchange import (available_exchanges, get_exchange_bad_reason, is_exchange_available, is_exchange_bad, is_exchange_officially_supported) +from freqtrade.state import RunMode logger = logging.getLogger(__name__) @@ -19,6 +20,10 @@ def check_exchange(config: Dict[str, Any], check_for_bad: bool = True) -> bool: raises an exception if the exchange if not supported by ccxt and thus is not known for the Freqtrade at all. """ + + if config['runmode'] in [RunMode.PLOT] and not config.get('exchange', {}).get('name'): + # Skip checking exchange in plot mode, since it requires no exchange + return True logger.info("Checking exchange...") exchange = config.get('exchange', {}).get('name').lower() From c9e15c2f86b7e7b1c8a2ae26d3c303f35f6bb70d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 31 Aug 2019 15:19:59 +0200 Subject: [PATCH 0376/3421] Add test for new check_exchange branch --- freqtrade/tests/test_configuration.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py index b8bc62eb6..5a70715a4 100644 --- a/freqtrade/tests/test_configuration.py +++ b/freqtrade/tests/test_configuration.py @@ -479,6 +479,7 @@ def test_hyperopt_with_arguments(mocker, default_conf, caplog) -> None: def test_check_exchange(default_conf, caplog) -> None: # Test an officially supported by Freqtrade team exchange + default_conf['runmode'] = RunMode.DRY_RUN default_conf.get('exchange').update({'name': 'BITTREX'}) assert check_exchange(default_conf) assert log_has_re(r"Exchange .* is officially supported by the Freqtrade development team\.", @@ -523,6 +524,11 @@ def test_check_exchange(default_conf, caplog) -> None: ): check_exchange(default_conf) + # Test no exchange... + default_conf.get('exchange').update({'name': ''}) + default_conf['runmode'] = RunMode.PLOT + assert check_exchange(default_conf) + def test_cli_verbose_with_params(default_conf, mocker, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) From 736deaae32dc5c462345c95c988000ce2f02a7f8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 31 Aug 2019 15:26:34 +0200 Subject: [PATCH 0377/3421] Add test with plot command without configuration --- freqtrade/tests/test_arguments.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/freqtrade/tests/test_arguments.py b/freqtrade/tests/test_arguments.py index fd984a504..558642894 100644 --- a/freqtrade/tests/test_arguments.py +++ b/freqtrade/tests/test_arguments.py @@ -163,6 +163,20 @@ def test_plot_dataframe_options() -> None: assert pargs.pairs == ["UNITTEST/BTC"] +def test_plot_profit_options() -> None: + args = [ + 'plot-profit', + '-p', 'UNITTEST/BTC', + '--trade-source', 'DB', + "--db-url", "sqlite:///whatever.sqlite", + ] + pargs = Arguments(args, '').get_parsed_arg() + + assert pargs.trade_source == "DB" + assert pargs.pairs == ["UNITTEST/BTC"] + assert pargs.db_url == "sqlite:///whatever.sqlite" + + def test_check_int_positive() -> None: assert check_int_positive("3") == 3 assert check_int_positive("1") == 1 From 2886fa288ad073ed7aeb5507c8dab35a00836320 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 31 Aug 2019 15:31:47 +0200 Subject: [PATCH 0378/3421] fix documentation --- docs/plotting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plotting.md b/docs/plotting.md index d3247488c..61bf7b74a 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -80,7 +80,7 @@ Specify custom indicators. Use `--indicators1` for the main plot and `--indicators2` for the subplot below (if values are in a different range than prices). !!! tip - You will almost certainly want to specify a custom strategy! This can be done by adding `--strategy ClassName` to the command. + You will almost certainly want to specify a custom strategy! This can be done by adding `-s Classname` / `--strategy ClassName` to the command. ``` bash freqtrade --strategy AwesomeStrategy plot-dataframe -p BTC/ETH --indicators1 sma ema --indicators2 macd From f0c0f5618b1614978b9003be6165035c7e50ef34 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 31 Aug 2019 16:11:04 +0200 Subject: [PATCH 0379/3421] Abstract creating stoploss-orders from stoploss-logic --- freqtrade/freqtradebot.py | 67 +++++++++++++--------------- freqtrade/tests/test_freqtradebot.py | 2 +- 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 8857b95da..1d78f0a21 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -617,6 +617,26 @@ class FreqtradeBot(object): logger.debug('Found no sell signal for %s.', trade) return False + def create_stoploss_order(self, trade: Trade, stop_price: float, rate: float) -> bool: + """ + Abstracts creating stoploss orders from the logic. + Handles errors and updates the trade database object. + :return: True if the order succeeded, and False in case of problems. + """ + # Limit price threshold: As limit price should always be below price + LIMIT_PRICE_PCT = 0.99 + + try: + stoploss_order = self.exchange.stoploss_limit(pair=trade.pair, amount=trade.amount, + stop_price=stop_price, + rate=rate * LIMIT_PRICE_PCT) + trade.stoploss_order_id = str(stoploss_order['id']) + return True + except DependencyException: + trade.stoploss_order_id = None + logger.exception('Unable to place a stoploss order on exchange.') + return False + def handle_stoploss_on_exchange(self, trade: Trade) -> bool: """ Check if trade is fulfilled in which case the stoploss @@ -638,9 +658,6 @@ class FreqtradeBot(object): # If trade open order id does not exist: buy order is fulfilled buy_order_fulfilled = not trade.open_order_id - # Limit price threshold: As limit price should always be below price - limit_price_pct = 0.99 - # If buy order is fulfilled but there is no stoploss, we add a stoploss on exchange if (buy_order_fulfilled and not stoploss_order): if self.edge: @@ -650,34 +667,18 @@ class FreqtradeBot(object): stop_price = trade.open_rate * (1 + stoploss) - # limit price should be less than stop price. - limit_price = stop_price * limit_price_pct - - try: - stoploss_order_id = self.exchange.stoploss_limit( - pair=trade.pair, amount=trade.amount, stop_price=stop_price, rate=limit_price - )['id'] - trade.stoploss_order_id = str(stoploss_order_id) + if self.create_stoploss_order(trade=trade, stop_price=stop_price, rate=stop_price): trade.stoploss_last_update = datetime.now() return False - except DependencyException as exception: - trade.stoploss_order_id = None - logger.warning('Unable to place a stoploss order on exchange: %s', exception) - # If stoploss order is canceled for some reason we add it if stoploss_order and stoploss_order['status'] == 'canceled': - try: - stoploss_order_id = self.exchange.stoploss_limit( - pair=trade.pair, amount=trade.amount, - stop_price=trade.stop_loss, rate=trade.stop_loss * limit_price_pct - )['id'] - trade.stoploss_order_id = str(stoploss_order_id) + if self.create_stoploss_order(trade=trade, stop_price=trade.stop_loss, + rate=trade.stop_loss): return False - except DependencyException as exception: + else: trade.stoploss_order_id = None - logger.warning('Stoploss order was cancelled, ' - 'but unable to recreate one: %s', exception) + logger.warning('Stoploss order was cancelled, but unable to recreate one.') # We check if stoploss order is fulfilled if stoploss_order and stoploss_order['status'] == 'closed': @@ -720,17 +721,13 @@ class FreqtradeBot(object): logger.exception(f"Could not cancel stoploss order {order['id']} " f"for pair {trade.pair}") - try: - # creating the new one - stoploss_order_id = self.exchange.stoploss_limit( - pair=trade.pair, amount=trade.amount, - stop_price=trade.stop_loss, rate=trade.stop_loss * 0.99 - )['id'] - trade.stoploss_order_id = str(stoploss_order_id) - except DependencyException: - trade.stoploss_order_id = None - logger.exception(f"Could not create trailing stoploss order " - f"for pair {trade.pair}.") + # Create new stoploss order + if self.create_stoploss_order(trade=trade, stop_price=trade.stop_loss, + rate=trade.stop_loss): + return False + else: + logger.warning(f"Could not create trailing stoploss order " + f"for pair {trade.pair}.") def _check_and_execute_sell(self, trade: Trade, sell_rate: float, buy: bool, sell: bool) -> bool: diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 1119157c4..7b4023065 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -1153,7 +1153,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, side_effect=DependencyException() ) freqtrade.handle_stoploss_on_exchange(trade) - assert log_has('Unable to place a stoploss order on exchange: ', caplog) + assert log_has('Unable to place a stoploss order on exchange.', caplog) assert trade.stoploss_order_id is None # Fifth case: get_order returns InvalidOrder From 7fc156648a88f974d278af8be947877fb92739c8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 31 Aug 2019 16:15:39 +0200 Subject: [PATCH 0380/3421] simplify stoploss_oe code --- freqtrade/freqtradebot.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 1d78f0a21..881e489be 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -655,15 +655,10 @@ class FreqtradeBot(object): except InvalidOrderException as exception: logger.warning('Unable to fetch stoploss order: %s', exception) - # If trade open order id does not exist: buy order is fulfilled - buy_order_fulfilled = not trade.open_order_id - # If buy order is fulfilled but there is no stoploss, we add a stoploss on exchange - if (buy_order_fulfilled and not stoploss_order): - if self.edge: - stoploss = self.edge.stoploss(pair=trade.pair) - else: - stoploss = self.strategy.stoploss + if (not trade.open_order_id and not stoploss_order): + + stoploss = self.edge.stoploss(pair=trade.pair) if self.edge else self.strategy.stoploss stop_price = trade.open_rate * (1 + stoploss) From ee808abfea45c594334e8c14540a2842df520073 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Sep 2019 09:07:09 +0200 Subject: [PATCH 0381/3421] Add emergency_sell as sell reason --- config_full.json.example | 1 + docs/configuration.md | 3 +++ freqtrade/constants.py | 1 + freqtrade/strategy/interface.py | 1 + 4 files changed, 6 insertions(+) diff --git a/config_full.json.example b/config_full.json.example index b6451859c..957967042 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -38,6 +38,7 @@ "order_types": { "buy": "limit", "sell": "limit", + "emergencysell": "market", "stoploss": "market", "stoploss_on_exchange": false, "stoploss_on_exchange_interval": 60 diff --git a/docs/configuration.md b/docs/configuration.md index fcd6c2bf6..dc4c365f6 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -205,6 +205,7 @@ Values set in the configuration file overwrites values set in the strategy. If this is configured, all 4 values (`buy`, `sell`, `stoploss` and `stoploss_on_exchange`) need to be present, otherwise the bot will warn about it and fail to start. +`emergencysell` is an optional value, which defaults to `market` and is used when creating stoploss on exchange orders fails. The below is the default which is used if this is not configured in either strategy or configuration file. Syntax for Strategy: @@ -213,6 +214,7 @@ Syntax for Strategy: order_types = { "buy": "limit", "sell": "limit", + "emergencysell": "market", "stoploss": "market", "stoploss_on_exchange": False, "stoploss_on_exchange_interval": 60 @@ -225,6 +227,7 @@ Configuration: "order_types": { "buy": "limit", "sell": "limit", + "emergencysell": "market", "stoploss": "market", "stoploss_on_exchange": false, "stoploss_on_exchange_interval": 60 diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 05ee99c1b..d7ace131c 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -121,6 +121,7 @@ CONF_SCHEMA = { 'properties': { 'buy': {'type': 'string', 'enum': ORDERTYPE_POSSIBILITIES}, 'sell': {'type': 'string', 'enum': ORDERTYPE_POSSIBILITIES}, + 'emergencysell': {'type': 'string', 'enum': ORDERTYPE_POSSIBILITIES}, 'stoploss': {'type': 'string', 'enum': ORDERTYPE_POSSIBILITIES}, 'stoploss_on_exchange': {'type': 'boolean'}, 'stoploss_on_exchange_interval': {'type': 'number'} diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 3f2478cc0..6c6593a53 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -39,6 +39,7 @@ class SellType(Enum): TRAILING_STOP_LOSS = "trailing_stop_loss" SELL_SIGNAL = "sell_signal" FORCE_SELL = "force_sell" + EMERGENCY_SELL = "emergency_sell" NONE = "" From 9f53e9f5dde06f2edcd9eb8fa9399daaa3e96f8b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Sep 2019 09:08:35 +0200 Subject: [PATCH 0382/3421] Raise InvalidOrder error when stoploss-creation fails --- freqtrade/exchange/binance.py | 7 +++++-- freqtrade/freqtradebot.py | 6 ++++++ freqtrade/tests/exchange/test_binance.py | 8 +++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 5834f26cd..c3021c50b 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -4,7 +4,8 @@ from typing import Dict import ccxt -from freqtrade import DependencyException, OperationalException, TemporaryError +from freqtrade import (DependencyException, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.exchange import Exchange logger = logging.getLogger(__name__) @@ -69,7 +70,9 @@ class Binance(Exchange): f'Tried to sell amount {amount} at rate {rate}.' f'Message: {e}') from e except ccxt.InvalidOrder as e: - raise DependencyException( + # Errors: + # `binance Order would trigger immediately.` + raise InvalidOrderException( f'Could not create {ordertype} sell order on market {pair}. ' f'Tried to sell amount {amount} at rate {rate}.' f'Message: {e}') from e diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 881e489be..ebc1fd4e8 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -632,6 +632,12 @@ class FreqtradeBot(object): rate=rate * LIMIT_PRICE_PCT) trade.stoploss_order_id = str(stoploss_order['id']) return True + except InvalidOrderException: + trade.stoploss_order_id = None + logger.exception('Unable to place a stoploss order on exchange.') + logger.warning('Selling the trade forcefully') + self.execute_sell(trade, trade.stop_loss, sell_reason=SellType.EMERGENCY_SELL) + except DependencyException: trade.stoploss_order_id = None logger.exception('Unable to place a stoploss order on exchange.') diff --git a/freqtrade/tests/exchange/test_binance.py b/freqtrade/tests/exchange/test_binance.py index 4afb7fcc4..6518c8523 100644 --- a/freqtrade/tests/exchange/test_binance.py +++ b/freqtrade/tests/exchange/test_binance.py @@ -4,7 +4,8 @@ from unittest.mock import MagicMock import ccxt import pytest -from freqtrade import DependencyException, OperationalException, TemporaryError +from freqtrade import (DependencyException, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.tests.conftest import get_patched_exchange @@ -49,8 +50,9 @@ def test_stoploss_limit_order(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) - with pytest.raises(DependencyException): - api_mock.create_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) + with pytest.raises(InvalidOrderException): + api_mock.create_order = MagicMock( + side_effect=ccxt.InvalidOrder("binance Order would trigger immediately.")) exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) From 292df115e86b144db713566fea31b57f2d572f68 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Sep 2019 09:09:07 +0200 Subject: [PATCH 0383/3421] Support selling via emergencysell --- freqtrade/freqtradebot.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ebc1fd4e8..cd0ea289a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -881,9 +881,14 @@ class FreqtradeBot(object): except InvalidOrderException: logger.exception(f"Could not cancel stoploss order {trade.stoploss_order_id}") + ordertype = self.strategy.order_types[sell_type] + if sell_reason == SellType.EMERGENCY_SELL: + # Emergencysells (default to market!) + ordertype = self.strategy.order_types.get("emergencysell", "market") + # Execute sell and update trade record order = self.exchange.sell(pair=str(trade.pair), - ordertype=self.strategy.order_types[sell_type], + ordertype=ordertype, amount=trade.amount, rate=limit, time_in_force=self.strategy.order_time_in_force['sell'] ) From 7c0a49a6f9c04418f0b8f94fc8cf7cf67e6377ef Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Sep 2019 09:17:58 +0200 Subject: [PATCH 0384/3421] _notify_sell needs ordertype seperately --- freqtrade/freqtradebot.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index cd0ea289a..6fe2c7f15 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -688,7 +688,7 @@ class FreqtradeBot(object): # Lock pair for one candle to prevent immediate rebuys self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['ticker_interval'])) - self._notify_sell(trade) + self._notify_sell(trade, "stoploss") return True # Finally we check if stoploss on exchange should be moved up because of trailing. @@ -904,9 +904,9 @@ class FreqtradeBot(object): # Lock pair for one candle to prevent immediate rebuys self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['ticker_interval'])) - self._notify_sell(trade) + self._notify_sell(trade, ordertype) - def _notify_sell(self, trade: Trade): + def _notify_sell(self, trade: Trade, order_type: str): """ Sends rpc notification when a sell occured. """ @@ -923,7 +923,7 @@ class FreqtradeBot(object): 'pair': trade.pair, 'gain': gain, 'limit': trade.close_rate_requested, - 'order_type': self.strategy.order_types['sell'], + 'order_type': order_type, 'amount': trade.amount, 'open_rate': trade.open_rate, 'current_rate': current_rate, From 6aab3fe25acab7998eeed07ff7ab58620c5e409a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Sep 2019 09:18:15 +0200 Subject: [PATCH 0385/3421] Add test for stoploss order handling behaviour --- freqtrade/tests/test_freqtradebot.py | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 7b4023065..e4e5104d0 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -1201,6 +1201,50 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, assert trade.is_open is True +def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, + markets, limit_buy_order, limit_sell_order): + rpc_mock = patch_RPCManager(mocker) + patch_exchange(mocker) + sell_mock = MagicMock(return_value={'id': limit_sell_order['id']}) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_ticker=MagicMock(return_value={ + 'bid': 0.00001172, + 'ask': 0.00001173, + 'last': 0.00001172 + }), + buy=MagicMock(return_value={'id': limit_buy_order['id']}), + sell=sell_mock, + get_fee=fee, + markets=PropertyMock(return_value=markets), + get_order=MagicMock(return_value={'status': 'canceled'}), + stoploss_limit=MagicMock(side_effect=InvalidOrderException()), + ) + freqtrade = FreqtradeBot(default_conf) + patch_get_signal(freqtrade) + freqtrade.strategy.order_types['stoploss_on_exchange'] = True + + freqtrade.create_trades() + trade = Trade.query.first() + caplog.clear() + freqtrade.create_stoploss_order(trade, 200, 199) + assert trade.stoploss_order_id is None + assert trade.sell_reason == SellType.EMERGENCY_SELL.value + assert log_has("Unable to place a stoploss order on exchange.", caplog) + assert log_has("Selling the trade forcefully", caplog) + + # Should call a market sell + assert sell_mock.call_count == 1 + assert sell_mock.call_args[1]['ordertype'] == 'market' + assert sell_mock.call_args[1]['pair'] == trade.pair + assert sell_mock.call_args[1]['amount'] == trade.amount + + # Rpc is sending first buy, then sell + assert rpc_mock.call_count == 2 + assert rpc_mock.call_args_list[1][0][0]['sell_reason'] == SellType.EMERGENCY_SELL.value + assert rpc_mock.call_args_list[1][0][0]['order_type'] == 'market' + + def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, markets, limit_buy_order, limit_sell_order) -> None: # When trailing stoploss is set From 9d7ebc65e734a7cbcf14e54fe8dc458f2137c97f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Sep 2019 09:21:45 +0200 Subject: [PATCH 0386/3421] Move return statement to correct intend --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 6fe2c7f15..ab3a1df28 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -641,7 +641,7 @@ class FreqtradeBot(object): except DependencyException: trade.stoploss_order_id = None logger.exception('Unable to place a stoploss order on exchange.') - return False + return False def handle_stoploss_on_exchange(self, trade: Trade) -> bool: """ From 514860ac3b5700f33b3e786893e916761a47541f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Sep 2019 10:17:02 +0200 Subject: [PATCH 0387/3421] Improve documentation --- docs/configuration.md | 27 +++++++++++++++------------ docs/strategy-customization.md | 2 +- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index dc4c365f6..1f64da306 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -192,19 +192,20 @@ end up paying more then would probably have been necessary. ### Understand order_types -The `order_types` configuration parameter contains a dict mapping order-types to -market-types as well as stoploss on or off exchange type and stoploss on exchange -update interval in seconds. This allows to buy using limit orders, sell using +The `order_types` configuration parameter maps actions (`buy`, `sell`, `stoploss`) to order-types (`market`, `limit`, ...) as well as configures stoploss to be on the exchange and stoploss on exchange update interval in seconds. + +This allows to buy using limit orders, sell using limit-orders, and create stoploss orders using market. It also allows to set the stoploss "on exchange" which means stoploss order would be placed immediately once the buy order is fulfilled. In case stoploss on exchange and `trailing_stop` are -both set, then the bot will use `stoploss_on_exchange_interval` to check it periodically -and update it if necessary (e.x. in case of trailing stoploss). -This can be set in the configuration file or in the strategy. -Values set in the configuration file overwrites values set in the strategy. +both set, then the bot will use `stoploss_on_exchange_interval` to check the stoploss periodically +and update it if necessary (e.g. in case of trailing stoploss). +`order_types` can be set in the configuration file or in the strategy. +`order_types` set in the configuration file overwrites values set in the strategy as a whole, so you need to configure the whole `order_types` dictionary in one place. + +If this is configured, the following 4 values (`buy`, `sell`, `stoploss` and +`stoploss_on_exchange`) need to be present, otherwise the bot will fail to start. -If this is configured, all 4 values (`buy`, `sell`, `stoploss` and -`stoploss_on_exchange`) need to be present, otherwise the bot will warn about it and fail to start. `emergencysell` is an optional value, which defaults to `market` and is used when creating stoploss on exchange orders fails. The below is the default which is used if this is not configured in either strategy or configuration file. @@ -242,11 +243,13 @@ Configuration: !!! Note Stoploss on exchange interval is not mandatory. Do not change its value if you are unsure of what you are doing. For more information about how stoploss works please - read [the stoploss documentation](stoploss.md). + refer to [the stoploss documentation](stoploss.md). !!! Note - In case of stoploss on exchange if the stoploss is cancelled manually then - the bot would recreate one. + If `stoploss_on_exchange` is enabled and the stoploss is cancelled manually on the exchange, then the bot wil create a new order. + +!!! Warning stoploss_on_exchange failures + If stoploss on exchange creation fails for some reason, then an "emergency sell" is initiated. By default, this will sell the asset using a market order. The order-type for the emergency-sell can be changed by setting `emergencysell` - however this is not advised. ### Understand order_time_in_force diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index c7da19659..e07585800 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -224,7 +224,7 @@ This would signify a stoploss of -10%. For the full documentation on stoploss features, look at the dedicated [stoploss page](stoploss.md). -If your exchange supports it, it's recommended to also set `"stoploss_on_exchange"` in the order dict, so your stoploss is on the exchange and cannot be missed for network-problems (or other problems). +If your exchange supports it, it's recommended to also set `"stoploss_on_exchange"` in the order_types dictionary, so your stoploss is on the exchange and cannot be missed due to network-problems (or other problems). For more information on order_types please look [here](configuration.md#understand-order_types). From f91557f549f21e56136c358b782e759a1f4233cd Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Sep 2019 10:17:17 +0200 Subject: [PATCH 0388/3421] Add space to exception message --- freqtrade/exchange/binance.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index c3021c50b..14f409659 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -67,14 +67,14 @@ class Binance(Exchange): except ccxt.InsufficientFunds as e: raise DependencyException( f'Insufficient funds to create {ordertype} sell order on market {pair}.' - f'Tried to sell amount {amount} at rate {rate}.' + f'Tried to sell amount {amount} at rate {rate}. ' f'Message: {e}') from e except ccxt.InvalidOrder as e: # Errors: # `binance Order would trigger immediately.` raise InvalidOrderException( f'Could not create {ordertype} sell order on market {pair}. ' - f'Tried to sell amount {amount} at rate {rate}.' + f'Tried to sell amount {amount} at rate {rate}. ' f'Message: {e}') from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( From 771519e311170ca82de985c871a0f8f7db6870d1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Sep 2019 10:17:36 +0200 Subject: [PATCH 0389/3421] Don't show stacktrace in case of invalidorder Error This is handled gracefully by emergency-selling --- freqtrade/freqtradebot.py | 4 ++-- freqtrade/tests/test_freqtradebot.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ab3a1df28..7c403a29b 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -632,9 +632,9 @@ class FreqtradeBot(object): rate=rate * LIMIT_PRICE_PCT) trade.stoploss_order_id = str(stoploss_order['id']) return True - except InvalidOrderException: + except InvalidOrderException as e: trade.stoploss_order_id = None - logger.exception('Unable to place a stoploss order on exchange.') + logger.error(f'Unable to place a stoploss order on exchange. {e}') logger.warning('Selling the trade forcefully') self.execute_sell(trade, trade.stop_loss, sell_reason=SellType.EMERGENCY_SELL) diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index e4e5104d0..af69600b8 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -1230,7 +1230,7 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, freqtrade.create_stoploss_order(trade, 200, 199) assert trade.stoploss_order_id is None assert trade.sell_reason == SellType.EMERGENCY_SELL.value - assert log_has("Unable to place a stoploss order on exchange.", caplog) + assert log_has("Unable to place a stoploss order on exchange. ", caplog) assert log_has("Selling the trade forcefully", caplog) # Should call a market sell From 20c9c93b3e197fe9fcfdce1e09599d163e1e4ba1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Sep 2019 10:25:05 +0200 Subject: [PATCH 0390/3421] Improve docstring --- freqtrade/freqtradebot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 7c403a29b..53f052f76 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -621,6 +621,7 @@ class FreqtradeBot(object): """ Abstracts creating stoploss orders from the logic. Handles errors and updates the trade database object. + Force-sells the pair (using EmergencySell reason) in case of Problems creating the order. :return: True if the order succeeded, and False in case of problems. """ # Limit price threshold: As limit price should always be below price From aae9c3194fe937c9785ef6bce2c22d8d05b7ee9c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Sep 2019 17:48:06 +0200 Subject: [PATCH 0391/3421] Reenable stoploss_on_exchange for dry-run --- freqtrade/exchange/exchange.py | 5 ++++- freqtrade/freqtradebot.py | 8 +------- freqtrade/tests/test_freqtradebot.py | 3 +-- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index e20546856..d48d18ebf 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -367,7 +367,7 @@ class Exchange(object): def dry_run_order(self, pair: str, ordertype: str, side: str, amount: float, rate: float, params: Dict = {}) -> Dict[str, Any]: order_id = f'dry_run_{side}_{randint(0, 10**6)}' - dry_order = { # TODO: additional entry should be added for stoploss limit + dry_order = { "id": order_id, 'pair': pair, 'price': rate, @@ -382,6 +382,7 @@ class Exchange(object): "info": {} } self._store_dry_order(dry_order) + # Copy order and close it - so the returned order is open unless it's a market order return dry_order def _store_dry_order(self, dry_order: Dict) -> None: @@ -392,6 +393,8 @@ class Exchange(object): "filled": closed_order["amount"], "remaining": 0 }) + if closed_order["type"] in ["stop_loss_limit"]: + closed_order["info"].update({"stopPrice": closed_order["price"]}) self._dry_run_open_orders[closed_order["id"]] = closed_order def create_order(self, pair: str, ordertype: str, side: str, amount: float, diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 8857b95da..440f64766 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -21,7 +21,7 @@ from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date from freqtrade.persistence import Trade from freqtrade.rpc import RPCManager, RPCMessageType from freqtrade.resolvers import ExchangeResolver, StrategyResolver, PairListResolver -from freqtrade.state import State, RunMode +from freqtrade.state import State from freqtrade.strategy.interface import SellType, IStrategy from freqtrade.wallets import Wallets @@ -79,12 +79,6 @@ class FreqtradeBot(object): persistence.init(self.config.get('db_url', None), clean_open_orders=self.config.get('dry_run', False)) - # Stoploss on exchange does not make sense, therefore we need to disable that. - if (self.dataprovider.runmode == RunMode.DRY_RUN and - self.strategy.order_types.get('stoploss_on_exchange', False)): - logger.info("Disabling stoploss_on_exchange during dry-run.") - self.strategy.order_types['stoploss_on_exchange'] = False - config['order_types']['stoploss_on_exchange'] = False # Set initial bot state from config initial_state = self.config.get('initial_state') self.state = State[initial_state.upper()] if initial_state else State.STOPPED diff --git a/freqtrade/tests/test_freqtradebot.py b/freqtrade/tests/test_freqtradebot.py index 1119157c4..871432a44 100644 --- a/freqtrade/tests/test_freqtradebot.py +++ b/freqtrade/tests/test_freqtradebot.py @@ -147,8 +147,7 @@ def test_order_dict_dry_run(default_conf, mocker, caplog) -> None: } freqtrade = FreqtradeBot(conf) - assert log_has("Disabling stoploss_on_exchange during dry-run.", caplog) - assert not freqtrade.strategy.order_types['stoploss_on_exchange'] + assert freqtrade.strategy.order_types['stoploss_on_exchange'] caplog.clear() # is left untouched From 949ab2a17c725fe6ae611cba68e37cd929d46a97 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2019 08:27:37 +0000 Subject: [PATCH 0392/3421] Bump mkdocs-material from 4.4.1 to 4.4.2 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.4.1 to 4.4.2. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.4.1...4.4.2) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 10ea068ad..28ebc5916 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1 +1 @@ -mkdocs-material==4.4.1 \ No newline at end of file +mkdocs-material==4.4.2 \ No newline at end of file From 89f5cf8291a57b72376319a67770f417d1df353a Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2019 08:28:47 +0000 Subject: [PATCH 0393/3421] Bump numpy from 1.17.0 to 1.17.1 Bumps [numpy](https://github.com/numpy/numpy) from 1.17.0 to 1.17.1. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.17.0...v1.17.1) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e5015d620..cf264ee81 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ # Load common requirements -r requirements-common.txt -numpy==1.17.0 +numpy==1.17.1 pandas==0.25.1 scipy==1.3.1 From 51ad05efdbb5f331499eeb2663d5a1c7d20388c3 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2019 08:29:07 +0000 Subject: [PATCH 0394/3421] Bump pytest from 5.1.1 to 5.1.2 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.1.1 to 5.1.2. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.1.1...5.1.2) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index a7b0d358d..1b9bf7570 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ flake8==3.7.8 flake8-type-annotations==0.1.0 flake8-tidy-imports==2.0.0 mypy==0.720 -pytest==5.1.1 +pytest==5.1.2 pytest-asyncio==0.10.0 pytest-cov==2.7.1 pytest-mock==1.10.4 From bf4e3f55f463bb9327c3f16e32e54545e5ca88cb Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2019 08:29:26 +0000 Subject: [PATCH 0395/3421] Bump sqlalchemy from 1.3.7 to 1.3.8 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.7 to 1.3.8. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index c8a9c2f74..3aacd3766 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.18.1085 -SQLAlchemy==1.3.7 +SQLAlchemy==1.3.8 python-telegram-bot==11.1.0 arrow==0.14.5 cachetools==3.1.1 From 3f6c0ba6d6369489f0d0f2eb24be453b85718faf Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2019 11:56:28 +0000 Subject: [PATCH 0396/3421] Bump arrow from 0.14.5 to 0.14.6 Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.14.5 to 0.14.6. - [Release notes](https://github.com/crsmithdev/arrow/releases) - [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.md) - [Commits](https://github.com/crsmithdev/arrow/compare/0.14.5...0.14.6) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 3aacd3766..1cae33a5e 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -3,7 +3,7 @@ ccxt==1.18.1085 SQLAlchemy==1.3.8 python-telegram-bot==11.1.0 -arrow==0.14.5 +arrow==0.14.6 cachetools==3.1.1 requests==2.22.0 urllib3==1.25.3 From 04335ddd8970a3c6d21b0de7985923a1784bcf6c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2019 12:42:07 +0000 Subject: [PATCH 0397/3421] Bump ccxt from 1.18.1085 to 1.18.1115 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1085 to 1.18.1115. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.18.1085...1.18.1115) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 1cae33a5e..92e4f42ef 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.1085 +ccxt==1.18.1115 SQLAlchemy==1.3.8 python-telegram-bot==11.1.0 arrow==0.14.6 From 05789c4b925d7c4b6c674be57335ccfb1134b5d5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2019 13:44:52 +0000 Subject: [PATCH 0398/3421] Bump python-telegram-bot from 11.1.0 to 12.0.0 Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 11.1.0 to 12.0.0. - [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases) - [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst) - [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v11.1.0...v12.0.0) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 92e4f42ef..7b6befaf6 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -2,7 +2,7 @@ # mainly used for Raspberry pi installs ccxt==1.18.1115 SQLAlchemy==1.3.8 -python-telegram-bot==11.1.0 +python-telegram-bot==12.0.0 arrow==0.14.6 cachetools==3.1.1 requests==2.22.0 From 9c60ab796df28f114405d7ba0cf8dda5307fe1a2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 2 Sep 2019 20:14:41 +0200 Subject: [PATCH 0399/3421] Adapt telegram api to new interface of telegram-bot-12.0.0 --- freqtrade/rpc/telegram.py | 101 +++++++++++++++++++------------------- 1 file changed, 50 insertions(+), 51 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index fe4929780..a5e8265da 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -31,7 +31,7 @@ def authorized_only(command_handler: Callable[..., None]) -> Callable[..., Any]: """ def wrapper(self, *args, **kwargs): """ Decorator logic """ - update = kwargs.get('update') or args[1] + update = kwargs.get('update') or args[0] # Reject unauthorized messages chat_id = int(self._config['telegram']['chat_id']) @@ -79,7 +79,8 @@ class Telegram(RPC): registers all known command handlers and starts polling for message updates """ - self._updater = Updater(token=self._config['telegram']['token'], workers=0) + self._updater = Updater(token=self._config['telegram']['token'], workers=0, + use_context=True) # Register command handler and start telegram message polling handles = [ @@ -175,7 +176,7 @@ class Telegram(RPC): self._send_msg(message) @authorized_only - def _status(self, bot: Bot, update: Update) -> None: + def _status(self, update: Update, context: CallbackContext) -> None: """ Handler for /status. Returns the current TradeThread status @@ -221,13 +222,13 @@ class Telegram(RPC): messages.append("\n".join([l for l in lines if l]).format(**r)) for msg in messages: - self._send_msg(msg, bot=bot) + self._send_msg(msg) except RPCException as e: - self._send_msg(str(e), bot=bot) + self._send_msg(str(e)) @authorized_only - def _status_table(self, bot: Bot, update: Update) -> None: + def _status_table(self, update: Update, context: CallbackContext) -> None: """ Handler for /status table. Returns the current TradeThread status in table format @@ -240,10 +241,10 @@ class Telegram(RPC): message = tabulate(df_statuses, headers='keys', tablefmt='simple') self._send_msg(f"

{message}
", parse_mode=ParseMode.HTML) except RPCException as e: - self._send_msg(str(e), bot=bot) + self._send_msg(str(e)) @authorized_only - def _daily(self, bot: Bot, update: Update) -> None: + def _daily(self, update: Update, context: CallbackContext) -> None: """ Handler for /daily Returns a daily profit (in BTC) over the last n days. @@ -272,12 +273,12 @@ class Telegram(RPC): ], tablefmt='simple') message = f'Daily Profit over the last {timescale} days:\n
{stats_tab}
' - self._send_msg(message, bot=bot, parse_mode=ParseMode.HTML) + self._send_msg(message, parse_mode=ParseMode.HTML) except RPCException as e: - self._send_msg(str(e), bot=bot) + self._send_msg(str(e)) @authorized_only - def _profit(self, bot: Bot, update: Update) -> None: + def _profit(self, update: Update, context: CallbackContext) -> None: """ Handler for /profit. Returns a cumulative profit statistics. @@ -317,12 +318,12 @@ class Telegram(RPC): f"*Latest Trade opened:* `{latest_trade_date}`\n" \ f"*Avg. Duration:* `{avg_duration}`\n" \ f"*Best Performing:* `{best_pair}: {best_rate:.2f}%`" - self._send_msg(markdown_msg, bot=bot) + self._send_msg(markdown_msg) except RPCException as e: - self._send_msg(str(e), bot=bot) + self._send_msg(str(e)) @authorized_only - def _balance(self, bot: Bot, update: Update) -> None: + def _balance(self, update: Update, context: CallbackContext) -> None: """ Handler for /balance """ try: result = self._rpc_balance(self._config.get('fiat_display_currency', '')) @@ -339,7 +340,7 @@ class Telegram(RPC): # Handle overflowing messsage length if len(output + curr_output) >= MAX_TELEGRAM_MESSAGE_LENGTH: - self._send_msg(output, bot=bot) + self._send_msg(output) output = curr_output else: output += curr_output @@ -347,12 +348,12 @@ class Telegram(RPC): output += "\n*Estimated Value*:\n" \ "\t`BTC: {total: .8f}`\n" \ "\t`{symbol}: {value: .2f}`\n".format(**result) - self._send_msg(output, bot=bot) + self._send_msg(output) except RPCException as e: - self._send_msg(str(e), bot=bot) + self._send_msg(str(e)) @authorized_only - def _start(self, bot: Bot, update: Update) -> None: + def _start(self, update: Update, context: CallbackContext) -> None: """ Handler for /start. Starts TradeThread @@ -361,10 +362,10 @@ class Telegram(RPC): :return: None """ msg = self._rpc_start() - self._send_msg('Status: `{status}`'.format(**msg), bot=bot) + self._send_msg('Status: `{status}`'.format(**msg)) @authorized_only - def _stop(self, bot: Bot, update: Update) -> None: + def _stop(self, update: Update, context: CallbackContext) -> None: """ Handler for /stop. Stops TradeThread @@ -373,10 +374,10 @@ class Telegram(RPC): :return: None """ msg = self._rpc_stop() - self._send_msg('Status: `{status}`'.format(**msg), bot=bot) + self._send_msg('Status: `{status}`'.format(**msg)) @authorized_only - def _reload_conf(self, bot: Bot, update: Update) -> None: + def _reload_conf(self, update: Update, context: CallbackContext) -> None: """ Handler for /reload_conf. Triggers a config file reload @@ -385,10 +386,10 @@ class Telegram(RPC): :return: None """ msg = self._rpc_reload_conf() - self._send_msg('Status: `{status}`'.format(**msg), bot=bot) + self._send_msg('Status: `{status}`'.format(**msg)) @authorized_only - def _stopbuy(self, bot: Bot, update: Update) -> None: + def _stopbuy(self, update: Update, context: CallbackContext) -> None: """ Handler for /stop_buy. Sets max_open_trades to 0 and gracefully sells all open trades @@ -397,10 +398,10 @@ class Telegram(RPC): :return: None """ msg = self._rpc_stopbuy() - self._send_msg('Status: `{status}`'.format(**msg), bot=bot) + self._send_msg('Status: `{status}`'.format(**msg)) @authorized_only - def _forcesell(self, bot: Bot, update: Update) -> None: + def _forcesell(self, update: Update, context: CallbackContext) -> None: """ Handler for /forcesell . Sells the given trade at current price @@ -412,13 +413,13 @@ class Telegram(RPC): trade_id = update.message.text.replace('/forcesell', '').strip() try: msg = self._rpc_forcesell(trade_id) - self._send_msg('Forcesell Result: `{result}`'.format(**msg), bot=bot) + self._send_msg('Forcesell Result: `{result}`'.format(**msg)) except RPCException as e: - self._send_msg(str(e), bot=bot) + self._send_msg(str(e)) @authorized_only - def _forcebuy(self, bot: Bot, update: Update) -> None: + def _forcebuy(self, update: Update, context: CallbackContext) -> None: """ Handler for /forcebuy . Buys a pair trade at the given or current price @@ -433,10 +434,10 @@ class Telegram(RPC): try: self._rpc_forcebuy(pair, price) except RPCException as e: - self._send_msg(str(e), bot=bot) + self._send_msg(str(e)) @authorized_only - def _performance(self, bot: Bot, update: Update) -> None: + def _performance(self, update: Update, context: CallbackContext) -> None: """ Handler for /performance. Shows a performance statistic from finished trades @@ -455,10 +456,10 @@ class Telegram(RPC): message = 'Performance:\n{}'.format(stats) self._send_msg(message, parse_mode=ParseMode.HTML) except RPCException as e: - self._send_msg(str(e), bot=bot) + self._send_msg(str(e)) @authorized_only - def _count(self, bot: Bot, update: Update) -> None: + def _count(self, update: Update, context: CallbackContext) -> None: """ Handler for /count. Returns the number of trades running @@ -475,10 +476,10 @@ class Telegram(RPC): logger.debug(message) self._send_msg(message, parse_mode=ParseMode.HTML) except RPCException as e: - self._send_msg(str(e), bot=bot) + self._send_msg(str(e)) @authorized_only - def _whitelist(self, bot: Bot, update: Update) -> None: + def _whitelist(self, update: Update, context: CallbackContext) -> None: """ Handler for /whitelist Shows the currently active whitelist @@ -492,17 +493,17 @@ class Telegram(RPC): logger.debug(message) self._send_msg(message) except RPCException as e: - self._send_msg(str(e), bot=bot) + self._send_msg(str(e)) @authorized_only - def _blacklist(self, bot: Bot, update: Update, args: List[str]) -> None: + def _blacklist(self, update: Update, context: CallbackContext) -> None: """ Handler for /blacklist Shows the currently active blacklist """ try: - blacklist = self._rpc_blacklist(args) + blacklist = self._rpc_blacklist(context.args) message = f"Blacklist contains {blacklist['length']} pairs\n" message += f"`{', '.join(blacklist['blacklist'])}`" @@ -510,10 +511,10 @@ class Telegram(RPC): logger.debug(message) self._send_msg(message) except RPCException as e: - self._send_msg(str(e), bot=bot) + self._send_msg(str(e)) @authorized_only - def _edge(self, bot: Bot, update: Update) -> None: + def _edge(self, update: Update, context: CallbackContext) -> None: """ Handler for /edge Shows information related to Edge @@ -522,12 +523,12 @@ class Telegram(RPC): edge_pairs = self._rpc_edge() edge_pairs_tab = tabulate(edge_pairs, headers='keys', tablefmt='simple') message = f'Edge only validated following pairs:\n
{edge_pairs_tab}
' - self._send_msg(message, bot=bot, parse_mode=ParseMode.HTML) + self._send_msg(message, parse_mode=ParseMode.HTML) except RPCException as e: - self._send_msg(str(e), bot=bot) + self._send_msg(str(e)) @authorized_only - def _help(self, bot: Bot, update: Update) -> None: + def _help(self, update: Update, context: CallbackContext) -> None: """ Handler for /help. Show commands of the bot @@ -559,10 +560,10 @@ class Telegram(RPC): "*/help:* `This help message`\n" \ "*/version:* `Show version`" - self._send_msg(message, bot=bot) + self._send_msg(message) @authorized_only - def _version(self, bot: Bot, update: Update) -> None: + def _version(self, update: Update, context: CallbackContext) -> None: """ Handler for /version. Show version information @@ -570,10 +571,9 @@ class Telegram(RPC): :param update: message update :return: None """ - self._send_msg('*Version:* `{}`'.format(__version__), bot=bot) + self._send_msg('*Version:* `{}`'.format(__version__)) - def _send_msg(self, msg: str, bot: Bot = None, - parse_mode: ParseMode = ParseMode.MARKDOWN) -> None: + def _send_msg(self, msg: str, parse_mode: ParseMode = ParseMode.MARKDOWN) -> None: """ Send given markdown message :param msg: message @@ -581,7 +581,6 @@ class Telegram(RPC): :param parse_mode: telegram parse mode :return: None """ - bot = bot or self._updater.bot keyboard = [['/daily', '/profit', '/balance'], ['/status', '/status table', '/performance'], @@ -591,7 +590,7 @@ class Telegram(RPC): try: try: - bot.send_message( + self._updater.bot.send_message( self._config['telegram']['chat_id'], text=msg, parse_mode=parse_mode, @@ -604,7 +603,7 @@ class Telegram(RPC): 'Telegram NetworkError: %s! Trying one more time.', network_err.message ) - bot.send_message( + self._updater.bot.send_message( self._config['telegram']['chat_id'], text=msg, parse_mode=parse_mode, From 8cad90f9e6b884a04b9813814e730e864c8ba0da Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 2 Sep 2019 20:17:23 +0200 Subject: [PATCH 0400/3421] Adapt to new api --- freqtrade/rpc/telegram.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index a5e8265da..4b64ee31e 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -4,12 +4,12 @@ This module manage Telegram communication """ import logging -from typing import Any, Callable, Dict, List +from typing import Any, Callable, Dict from tabulate import tabulate -from telegram import Bot, ParseMode, ReplyKeyboardMarkup, Update +from telegram import ParseMode, ReplyKeyboardMarkup, Update from telegram.error import NetworkError, TelegramError -from telegram.ext import CommandHandler, Updater +from telegram.ext import CommandHandler, Updater, CallbackContext from freqtrade.__init__ import __version__ from freqtrade.rpc import RPC, RPCException, RPCMessageType @@ -97,7 +97,7 @@ class Telegram(RPC): CommandHandler('reload_conf', self._reload_conf), CommandHandler('stopbuy', self._stopbuy), CommandHandler('whitelist', self._whitelist), - CommandHandler('blacklist', self._blacklist, pass_args=True), + CommandHandler('blacklist', self._blacklist), CommandHandler('edge', self._edge), CommandHandler('help', self._help), CommandHandler('version', self._version), @@ -185,11 +185,8 @@ class Telegram(RPC): :return: None """ - # Check if additional parameters are passed - params = update.message.text.replace('/status', '').split(' ') \ - if update.message.text else [] - if 'table' in params: - self._status_table(bot, update) + if 'table' in context.args: + self._status_table(update, context) return try: @@ -255,8 +252,8 @@ class Telegram(RPC): stake_cur = self._config['stake_currency'] fiat_disp_cur = self._config.get('fiat_display_currency', '') try: - timescale = int(update.message.text.replace('/daily', '').strip()) - except (TypeError, ValueError): + timescale = int(context.args[0]) + except (TypeError, ValueError, IndexError): timescale = 7 try: stats = self._rpc_daily_profit( From 3b15cce07a33d2bf2d27649a929e9f62ab310aec Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 2 Sep 2019 20:17:47 +0200 Subject: [PATCH 0401/3421] Handle arguments uniformly (by using context.args) --- freqtrade/rpc/telegram.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 4b64ee31e..d11fc02ab 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -407,7 +407,7 @@ class Telegram(RPC): :return: None """ - trade_id = update.message.text.replace('/forcesell', '').strip() + trade_id = context.args[0] if len(context.args) > 0 else None try: msg = self._rpc_forcesell(trade_id) self._send_msg('Forcesell Result: `{result}`'.format(**msg)) @@ -425,9 +425,8 @@ class Telegram(RPC): :return: None """ - message = update.message.text.replace('/forcebuy', '').strip().split() - pair = message[0] - price = float(message[1]) if len(message) > 1 else None + pair = context.args[0] + price = float(context.args[1]) if len(context.args) > 1 else None try: self._rpc_forcebuy(pair, price) except RPCException as e: From dc9fda76f351bf145b08445c964a8b4884e1663a Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 2 Sep 2019 20:42:39 +0200 Subject: [PATCH 0402/3421] Fix tests to adapt to new telegram-bot interface --- freqtrade/tests/rpc/test_rpc_telegram.py | 161 ++++++++++++++--------- 1 file changed, 96 insertions(+), 65 deletions(-) diff --git a/freqtrade/tests/rpc/test_rpc_telegram.py b/freqtrade/tests/rpc/test_rpc_telegram.py index 2f469643f..3820332b8 100644 --- a/freqtrade/tests/rpc/test_rpc_telegram.py +++ b/freqtrade/tests/rpc/test_rpc_telegram.py @@ -100,7 +100,7 @@ def test_authorized_only(default_conf, mocker, caplog) -> None: bot = FreqtradeBot(default_conf) patch_get_signal(bot, (True, False)) dummy = DummyCls(bot) - dummy.dummy_handler(bot=MagicMock(), update=update) + dummy.dummy_handler(update=update, context=MagicMock()) assert dummy.state['called'] is True assert log_has('Executing handler: dummy_handler for chat_id: 0', caplog) assert not log_has('Rejected unauthorized message from: 0', caplog) @@ -117,7 +117,7 @@ def test_authorized_only_unauthorized(default_conf, mocker, caplog) -> None: bot = FreqtradeBot(default_conf) patch_get_signal(bot, (True, False)) dummy = DummyCls(bot) - dummy.dummy_handler(bot=MagicMock(), update=update) + dummy.dummy_handler(update=update, context=MagicMock()) assert dummy.state['called'] is False assert not log_has('Executing handler: dummy_handler for chat_id: 3735928559', caplog) assert log_has('Rejected unauthorized message from: 3735928559', caplog) @@ -136,7 +136,7 @@ def test_authorized_only_exception(default_conf, mocker, caplog) -> None: patch_get_signal(bot, (True, False)) dummy = DummyCls(bot) - dummy.dummy_exception(bot=MagicMock(), update=update) + dummy.dummy_exception(update=update, context=MagicMock()) assert dummy.state['called'] is False assert not log_has('Executing handler: dummy_handler for chat_id: 0', caplog) assert not log_has('Rejected unauthorized message from: 0', caplog) @@ -194,12 +194,13 @@ def test_status(default_conf, update, mocker, fee, ticker, markets) -> None: for _ in range(3): freqtradebot.create_trades() - telegram._status(bot=MagicMock(), update=update) + telegram._status(update=update, context=MagicMock()) assert msg_mock.call_count == 1 - update.message.text = MagicMock() - update.message.text.replace = MagicMock(return_value='table 2 3') - telegram._status(bot=MagicMock(), update=update) + context = MagicMock() + # /status table 2 3 + context.args = ["table", "2", "3"] + telegram._status(update=update, context=context) assert status_table.call_count == 1 @@ -228,13 +229,13 @@ def test_status_handle(default_conf, update, ticker, fee, markets, mocker) -> No freqtradebot.state = State.STOPPED # Status is also enabled when stopped - telegram._status(bot=MagicMock(), update=update) + telegram._status(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert 'no active trade' in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() freqtradebot.state = State.RUNNING - telegram._status(bot=MagicMock(), update=update) + telegram._status(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert 'no active trade' in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() @@ -242,7 +243,7 @@ def test_status_handle(default_conf, update, ticker, fee, markets, mocker) -> No # Create some test data freqtradebot.create_trades() # Trigger status while we have a fulfilled order for the open trade - telegram._status(bot=MagicMock(), update=update) + telegram._status(update=update, context=MagicMock()) # close_rate should not be included in the message as the trade is not closed # and no line should be empty @@ -280,13 +281,13 @@ def test_status_table_handle(default_conf, update, ticker, fee, markets, mocker) freqtradebot.state = State.STOPPED # Status table is also enabled when stopped - telegram._status_table(bot=MagicMock(), update=update) + telegram._status_table(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert 'no active order' in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() freqtradebot.state = State.RUNNING - telegram._status_table(bot=MagicMock(), update=update) + telegram._status_table(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert 'no active order' in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() @@ -294,7 +295,7 @@ def test_status_table_handle(default_conf, update, ticker, fee, markets, mocker) # Create some test data freqtradebot.create_trades() - telegram._status_table(bot=MagicMock(), update=update) + telegram._status_table(update=update, context=MagicMock()) text = re.sub('', '', msg_mock.call_args_list[-1][0][0]) line = text.split("\n") @@ -346,8 +347,10 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, trade.is_open = False # Try valid data - update.message.text = '/daily 2' - telegram._daily(bot=MagicMock(), update=update) + # /daily 2 + context = MagicMock() + context.args = ["2"] + telegram._daily(update=update, context=context) assert msg_mock.call_count == 1 assert 'Daily' in msg_mock.call_args_list[0][0][0] assert str(datetime.utcnow().date()) in msg_mock.call_args_list[0][0][0] @@ -369,9 +372,10 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, trade.close_date = datetime.utcnow() trade.is_open = False - update.message.text = '/daily 1' - - telegram._daily(bot=MagicMock(), update=update) + # /daily 1 + context = MagicMock() + context.args = ["1"] + telegram._daily(update=update, context=context) assert str(' 0.00018651 BTC') in msg_mock.call_args_list[0][0][0] assert str(' 2.798 USD') in msg_mock.call_args_list[0][0][0] assert str(' 3 trades') in msg_mock.call_args_list[0][0][0] @@ -398,16 +402,20 @@ def test_daily_wrong_input(default_conf, update, ticker, mocker) -> None: # Try invalid data msg_mock.reset_mock() freqtradebot.state = State.RUNNING - update.message.text = '/daily -2' - telegram._daily(bot=MagicMock(), update=update) + # /daily -2 + context = MagicMock() + context.args = ["-2"] + telegram._daily(update=update, context=context) assert msg_mock.call_count == 1 assert 'must be an integer greater than 0' in msg_mock.call_args_list[0][0][0] # Try invalid data msg_mock.reset_mock() freqtradebot.state = State.RUNNING - update.message.text = '/daily today' - telegram._daily(bot=MagicMock(), update=update) + # /daily today + context = MagicMock() + context.args = ["today"] + telegram._daily(update=update, context=context) assert str('Daily Profit over the last 7 days') in msg_mock.call_args_list[0][0][0] @@ -433,7 +441,7 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) - telegram._profit(bot=MagicMock(), update=update) + telegram._profit(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert 'no closed trade' in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() @@ -445,7 +453,7 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) - telegram._profit(bot=MagicMock(), update=update) + telegram._profit(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert 'no closed trade' in msg_mock.call_args_list[-1][0][0] msg_mock.reset_mock() @@ -457,7 +465,7 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, trade.close_date = datetime.utcnow() trade.is_open = False - telegram._profit(bot=MagicMock(), update=update) + telegram._profit(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert '*ROI:* Close trades' in msg_mock.call_args_list[-1][0][0] assert '∙ `0.00006217 BTC (6.20%)`' in msg_mock.call_args_list[-1][0][0] @@ -507,7 +515,7 @@ def test_telegram_balance_handle(default_conf, update, mocker, rpc_balance) -> N telegram = Telegram(freqtradebot) - telegram._balance(bot=MagicMock(), update=update) + telegram._balance(update=update, context=MagicMock()) result = msg_mock.call_args_list[0][0][0] assert msg_mock.call_count == 1 assert '*BTC:*' in result @@ -536,7 +544,7 @@ def test_balance_handle_empty_response(default_conf, update, mocker) -> None: telegram = Telegram(freqtradebot) freqtradebot.config['dry_run'] = False - telegram._balance(bot=MagicMock(), update=update) + telegram._balance(update=update, context=MagicMock()) result = msg_mock.call_args_list[0][0][0] assert msg_mock.call_count == 1 assert 'All balances are zero.' in result @@ -557,7 +565,7 @@ def test_balance_handle_empty_response_dry(default_conf, update, mocker) -> None telegram = Telegram(freqtradebot) - telegram._balance(bot=MagicMock(), update=update) + telegram._balance(update=update, context=MagicMock()) result = msg_mock.call_args_list[0][0][0] assert msg_mock.call_count == 1 assert "Running in Dry Run, balances are not available." in result @@ -593,7 +601,7 @@ def test_balance_handle_too_large_response(default_conf, update, mocker) -> None telegram = Telegram(freqtradebot) - telegram._balance(bot=MagicMock(), update=update) + telegram._balance(update=update, context=MagicMock()) assert msg_mock.call_count > 1 # Test if wrap happens around 4000 - # and each single currency-output is around 120 characters long so we need @@ -615,7 +623,7 @@ def test_start_handle(default_conf, update, mocker) -> None: freqtradebot.state = State.STOPPED assert freqtradebot.state == State.STOPPED - telegram._start(bot=MagicMock(), update=update) + telegram._start(update=update, context=MagicMock()) assert freqtradebot.state == State.RUNNING assert msg_mock.call_count == 1 @@ -633,7 +641,7 @@ def test_start_handle_already_running(default_conf, update, mocker) -> None: freqtradebot.state = State.RUNNING assert freqtradebot.state == State.RUNNING - telegram._start(bot=MagicMock(), update=update) + telegram._start(update=update, context=MagicMock()) assert freqtradebot.state == State.RUNNING assert msg_mock.call_count == 1 assert 'already running' in msg_mock.call_args_list[0][0][0] @@ -652,7 +660,7 @@ def test_stop_handle(default_conf, update, mocker) -> None: freqtradebot.state = State.RUNNING assert freqtradebot.state == State.RUNNING - telegram._stop(bot=MagicMock(), update=update) + telegram._stop(update=update, context=MagicMock()) assert freqtradebot.state == State.STOPPED assert msg_mock.call_count == 1 assert 'stopping trader' in msg_mock.call_args_list[0][0][0] @@ -671,7 +679,7 @@ def test_stop_handle_already_stopped(default_conf, update, mocker) -> None: freqtradebot.state = State.STOPPED assert freqtradebot.state == State.STOPPED - telegram._stop(bot=MagicMock(), update=update) + telegram._stop(update=update, context=MagicMock()) assert freqtradebot.state == State.STOPPED assert msg_mock.call_count == 1 assert 'already stopped' in msg_mock.call_args_list[0][0][0] @@ -689,7 +697,7 @@ def test_stopbuy_handle(default_conf, update, mocker) -> None: telegram = Telegram(freqtradebot) assert freqtradebot.config['max_open_trades'] != 0 - telegram._stopbuy(bot=MagicMock(), update=update) + telegram._stopbuy(update=update, context=MagicMock()) assert freqtradebot.config['max_open_trades'] == 0 assert msg_mock.call_count == 1 assert 'No more buy will occur from now. Run /reload_conf to reset.' \ @@ -709,7 +717,7 @@ def test_reload_conf_handle(default_conf, update, mocker) -> None: freqtradebot.state = State.RUNNING assert freqtradebot.state == State.RUNNING - telegram._reload_conf(bot=MagicMock(), update=update) + telegram._reload_conf(update=update, context=MagicMock()) assert freqtradebot.state == State.RELOAD_CONF assert msg_mock.call_count == 1 assert 'reloading config' in msg_mock.call_args_list[0][0][0] @@ -742,8 +750,10 @@ def test_forcesell_handle(default_conf, update, ticker, fee, # Increase the price and sell it mocker.patch('freqtrade.exchange.Exchange.get_ticker', ticker_sell_up) - update.message.text = '/forcesell 1' - telegram._forcesell(bot=MagicMock(), update=update) + # /forcesell 1 + context = MagicMock() + context.args = ["1"] + telegram._forcesell(update=update, context=context) assert rpc_mock.call_count == 2 last_msg = rpc_mock.call_args_list[-1][0][0] @@ -796,8 +806,10 @@ def test_forcesell_down_handle(default_conf, update, ticker, fee, trade = Trade.query.first() assert trade - update.message.text = '/forcesell 1' - telegram._forcesell(bot=MagicMock(), update=update) + # /forcesell 1 + context = MagicMock() + context.args = ["1"] + telegram._forcesell(update=update, context=context) assert rpc_mock.call_count == 2 @@ -842,8 +854,10 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, markets, mocker freqtradebot.create_trades() rpc_mock.reset_mock() - update.message.text = '/forcesell all' - telegram._forcesell(bot=MagicMock(), update=update) + # /forcesell all + context = MagicMock() + context.args = ["all"] + telegram._forcesell(update=update, context=context) assert rpc_mock.call_count == 4 msg = rpc_mock.call_args_list[0][0][0] @@ -882,24 +896,29 @@ def test_forcesell_handle_invalid(default_conf, update, mocker) -> None: # Trader is not running freqtradebot.state = State.STOPPED - update.message.text = '/forcesell 1' - telegram._forcesell(bot=MagicMock(), update=update) + # /forcesell 1 + context = MagicMock() + context.args = ["1"] + telegram._forcesell(update=update, context=context) assert msg_mock.call_count == 1 assert 'not running' in msg_mock.call_args_list[0][0][0] # No argument msg_mock.reset_mock() freqtradebot.state = State.RUNNING - update.message.text = '/forcesell' - telegram._forcesell(bot=MagicMock(), update=update) + context = MagicMock() + context.args = [] + telegram._forcesell(update=update, context=context) assert msg_mock.call_count == 1 assert 'invalid argument' in msg_mock.call_args_list[0][0][0] # Invalid argument msg_mock.reset_mock() freqtradebot.state = State.RUNNING - update.message.text = '/forcesell 123456' - telegram._forcesell(bot=MagicMock(), update=update) + # /forcesell 123456 + context = MagicMock() + context.args = ["123456"] + telegram._forcesell(update=update, context=context) assert msg_mock.call_count == 1 assert 'invalid argument' in msg_mock.call_args_list[0][0][0] @@ -921,8 +940,10 @@ def test_forcebuy_handle(default_conf, update, markets, mocker) -> None: patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) - update.message.text = '/forcebuy ETH/BTC' - telegram._forcebuy(bot=MagicMock(), update=update) + # /forcebuy ETH/BTC + context = MagicMock() + context.args = ["ETH/BTC"] + telegram._forcebuy(update=update, context=context) assert fbuy_mock.call_count == 1 assert fbuy_mock.call_args_list[0][0][0] == 'ETH/BTC' @@ -931,8 +952,10 @@ def test_forcebuy_handle(default_conf, update, markets, mocker) -> None: # Reset and retry with specified price fbuy_mock = MagicMock(return_value=None) mocker.patch('freqtrade.rpc.RPC._rpc_forcebuy', fbuy_mock) - update.message.text = '/forcebuy ETH/BTC 0.055' - telegram._forcebuy(bot=MagicMock(), update=update) + # /forcebuy ETH/BTC 0.055 + context = MagicMock() + context.args = ["ETH/BTC", "0.055"] + telegram._forcebuy(update=update, context=context) assert fbuy_mock.call_count == 1 assert fbuy_mock.call_args_list[0][0][0] == 'ETH/BTC' @@ -955,7 +978,7 @@ def test_forcebuy_handle_exception(default_conf, update, markets, mocker) -> Non telegram = Telegram(freqtradebot) update.message.text = '/forcebuy ETH/Nonepair' - telegram._forcebuy(bot=MagicMock(), update=update) + telegram._forcebuy(update=update, context=MagicMock()) assert rpc_mock.call_count == 1 assert rpc_mock.call_args_list[0][0][0] == 'Forcebuy not enabled.' @@ -995,7 +1018,7 @@ def test_performance_handle(default_conf, update, ticker, fee, trade.close_date = datetime.utcnow() trade.is_open = False - telegram._performance(bot=MagicMock(), update=update) + telegram._performance(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert 'Performance' in msg_mock.call_args_list[0][0][0] assert 'ETH/BTC\t6.20% (1)' in msg_mock.call_args_list[0][0][0] @@ -1021,7 +1044,7 @@ def test_count_handle(default_conf, update, ticker, fee, markets, mocker) -> Non telegram = Telegram(freqtradebot) freqtradebot.state = State.STOPPED - telegram._count(bot=MagicMock(), update=update) + telegram._count(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert 'not running' in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() @@ -1030,7 +1053,7 @@ def test_count_handle(default_conf, update, ticker, fee, markets, mocker) -> Non # Create some test data freqtradebot.create_trades() msg_mock.reset_mock() - telegram._count(bot=MagicMock(), update=update) + telegram._count(update=update, context=MagicMock()) msg = '
  current    max    total stake\n---------  -----  -------------\n' \
           '        1      {}          {}
'\ @@ -1052,7 +1075,7 @@ def test_whitelist_static(default_conf, update, mocker) -> None: telegram = Telegram(freqtradebot) - telegram._whitelist(bot=MagicMock(), update=update) + telegram._whitelist(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert ('Using whitelist `StaticPairList` with 4 pairs\n`ETH/BTC, LTC/BTC, XRP/BTC, NEO/BTC`' in msg_mock.call_args_list[0][0][0]) @@ -1073,7 +1096,7 @@ def test_whitelist_dynamic(default_conf, update, mocker) -> None: telegram = Telegram(freqtradebot) - telegram._whitelist(bot=MagicMock(), update=update) + telegram._whitelist(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert ('Using whitelist `VolumePairList` with 4 pairs\n`ETH/BTC, LTC/BTC, XRP/BTC, NEO/BTC`' in msg_mock.call_args_list[0][0][0]) @@ -1090,13 +1113,17 @@ def test_blacklist_static(default_conf, update, mocker) -> None: telegram = Telegram(freqtradebot) - telegram._blacklist(bot=MagicMock(), update=update, args=[]) + telegram._blacklist(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert ("Blacklist contains 2 pairs\n`DOGE/BTC, HOT/BTC`" in msg_mock.call_args_list[0][0][0]) msg_mock.reset_mock() - telegram._blacklist(bot=MagicMock(), update=update, args=["ETH/BTC"]) + + # /blacklist ETH/BTC + context = MagicMock() + context.args = ["ETH/BTC"] + telegram._blacklist(update=update, context=context) assert msg_mock.call_count == 1 assert ("Blacklist contains 3 pairs\n`DOGE/BTC, HOT/BTC, ETH/BTC`" in msg_mock.call_args_list[0][0][0]) @@ -1115,7 +1142,7 @@ def test_edge_disabled(default_conf, update, mocker) -> None: telegram = Telegram(freqtradebot) - telegram._edge(bot=MagicMock(), update=update) + telegram._edge(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert "Edge is not enabled." in msg_mock.call_args_list[0][0][0] @@ -1137,7 +1164,7 @@ def test_edge_enabled(edge_conf, update, mocker) -> None: telegram = Telegram(freqtradebot) - telegram._edge(bot=MagicMock(), update=update) + telegram._edge(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert 'Edge only validated following pairs:\n
' in msg_mock.call_args_list[0][0][0]
     assert 'Pair      Winrate    Expectancy    Stoploss' in msg_mock.call_args_list[0][0][0]
@@ -1154,7 +1181,7 @@ def test_help_handle(default_conf, update, mocker) -> None:
 
     telegram = Telegram(freqtradebot)
 
-    telegram._help(bot=MagicMock(), update=update)
+    telegram._help(update=update, context=MagicMock())
     assert msg_mock.call_count == 1
     assert '*/help:* `This help message`' in msg_mock.call_args_list[0][0][0]
 
@@ -1169,7 +1196,7 @@ def test_version_handle(default_conf, update, mocker) -> None:
     freqtradebot = get_patched_freqtradebot(mocker, default_conf)
     telegram = Telegram(freqtradebot)
 
-    telegram._version(bot=MagicMock(), update=update)
+    telegram._version(update=update, context=MagicMock())
     assert msg_mock.call_count == 1
     assert '*Version:* `{}`'.format(__version__) in msg_mock.call_args_list[0][0][0]
 
@@ -1395,9 +1422,11 @@ def test__send_msg(default_conf, mocker) -> None:
     bot = MagicMock()
     freqtradebot = get_patched_freqtradebot(mocker, default_conf)
     telegram = Telegram(freqtradebot)
+    telegram._updater = MagicMock()
+    telegram._updater.bot = bot
 
     telegram._config['telegram']['enabled'] = True
-    telegram._send_msg('test', bot)
+    telegram._send_msg('test')
     assert len(bot.method_calls) == 1
 
 
@@ -1407,9 +1436,11 @@ def test__send_msg_network_error(default_conf, mocker, caplog) -> None:
     bot.send_message = MagicMock(side_effect=NetworkError('Oh snap'))
     freqtradebot = get_patched_freqtradebot(mocker, default_conf)
     telegram = Telegram(freqtradebot)
+    telegram._updater = MagicMock()
+    telegram._updater.bot = bot
 
     telegram._config['telegram']['enabled'] = True
-    telegram._send_msg('test', bot)
+    telegram._send_msg('test')
 
     # Bot should've tried to send it twice
     assert len(bot.method_calls) == 2

From 87ae2430df83e8497cfe0b6f7bd81b337208c053 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 3 Sep 2019 11:32:18 +0300
Subject: [PATCH 0403/3421] ranges for ROI tables for different
 ticker_intervals in docs

---
 docs/hyperopt.md | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/docs/hyperopt.md b/docs/hyperopt.md
index c1bf56a3d..fa3f3584d 100644
--- a/docs/hyperopt.md
+++ b/docs/hyperopt.md
@@ -389,16 +389,20 @@ minimal_roi = {
     }
 ```
 
-If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps) with the values that can vary in the following ranges:
+If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the ticker_interval used. By default the values can vary in the following ranges:
 
-| # | minutes | ROI percentage |
-|---|---|---|
-| 1 | always 0 | 0.03...0.31 |
-| 2 | 10...40 | 0.02...0.11 |
-| 3 | 20...100 | 0.01...0.04 |
-| 4 | 30...220 | always 0 |
+5m ticker_interval:
 
-This structure of the ROI table is sufficient in most cases. Override the `roi_space()` method defining the ranges desired if you need components of the ROI tables to vary in other ranges.
+| # | minutes / ROI percentage |
+||---|---|---|---|
+|| 1m | 5m | 1h | 1d |
+|---|---|---|---|---|
+| 1 | always 0 / 0.01161...0.11992 | always 0 / 0.03...0.31 | always 0 / 0.06883...0.71124 | always 0 / 0.12178...1.25835 |
+| 2 | 2...8 / 0.00774...0.04255 | 10...40 / 0.02...0.11 | 120...480 / 0.04589...0.25238 | 2880...11520 / 0.08118...0.44651 |
+| 3 | 4...20 / 0.00387...0.01547 | 20...100 / 0.01...0.04 | 240...1200 / 0.02294...0.09177 | 5760...28800 / 0.04059...0.16237 |
+| 4 | 6...44 / always 0.0 | 30...220 / always 0.0 | 360...2640 / always 0.0 | 8640...63360 / always 0.0 |
+
+These ranges should be sufficient in most cases. Override the `roi_space()` method defining the ranges desired if you need components of the ROI tables to vary in other ranges.
 
 Override the `generate_roi_table()` and `roi_space()` methods and implement your own custom approach for generation of the ROI tables during hyperoptimization in these methods if you need a different structure of the ROI table or other amount of rows (steps) in the ROI tables.
 

From e8614abc5d0fc7278ac0229a8802e9da1c321804 Mon Sep 17 00:00:00 2001
From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
Date: Tue, 3 Sep 2019 16:52:55 +0300
Subject: [PATCH 0404/3421] update table md formatting, enhance description

---
 docs/hyperopt.md | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/docs/hyperopt.md b/docs/hyperopt.md
index fa3f3584d..c7544df5b 100644
--- a/docs/hyperopt.md
+++ b/docs/hyperopt.md
@@ -389,22 +389,20 @@ minimal_roi = {
     }
 ```
 
-If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the ticker_interval used. By default the values can vary in the following ranges:
+If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the ticker_interval used. By default the values can vary in the following ranges (for some of the most used ticker intervals, values are rounded to 5 digits after the decimal point):
 
-5m ticker_interval:
+| # step  1m  5m  1h  1d |
+|---|---|---|---|---|---|---|---|---|
+| 1 | 0 | 0.01161...0.11992 | 0 | 0.03...0.31 | 0 | 0.06883...0.71124 | 0 | 0.12178...1.25835 |
+| 2 | 2...8 | 0.00774...0.04255 | 10...40 | 0.02...0.11 | 120...480 | 0.04589...0.25238 | 2880...11520 | 0.08118...0.44651 |
+| 3 | 4...20 | 0.00387...0.01547 | 20...100 | 0.01...0.04 | 240...1200 | 0.02294...0.09177 | 5760...28800 | 0.04059...0.16237 |
+| 4 | 6...44 | 0.0 | 30...220 | 0.0 | 360...2640 | 0.0 | 8640...63360 | 0.0 |
 
-| # | minutes / ROI percentage |
-||---|---|---|---|
-|| 1m | 5m | 1h | 1d |
-|---|---|---|---|---|
-| 1 | always 0 / 0.01161...0.11992 | always 0 / 0.03...0.31 | always 0 / 0.06883...0.71124 | always 0 / 0.12178...1.25835 |
-| 2 | 2...8 / 0.00774...0.04255 | 10...40 / 0.02...0.11 | 120...480 / 0.04589...0.25238 | 2880...11520 / 0.08118...0.44651 |
-| 3 | 4...20 / 0.00387...0.01547 | 20...100 / 0.01...0.04 | 240...1200 / 0.02294...0.09177 | 5760...28800 / 0.04059...0.16237 |
-| 4 | 6...44 / always 0.0 | 30...220 / always 0.0 | 360...2640 / always 0.0 | 8640...63360 / always 0.0 |
+These ranges should be sufficient in most cases. The minutes in the steps (ROI dict keys) are scaled linearly depending on the ticker interval used. The ROI values in the steps (ROI dict values) are scaled logarithmically depending on the ticker interval used.
 
-These ranges should be sufficient in most cases. Override the `roi_space()` method defining the ranges desired if you need components of the ROI tables to vary in other ranges.
+If you use legacy freqtrade HyperOpts class samples where the `generate_roi_table()` and `roi_space()` methods were copied in each custom hyperopt file, simply remove them in order to utilize these adaptive ROI tables and the ROI hyperoptimization space generated by freqtrade by default.
 
-Override the `generate_roi_table()` and `roi_space()` methods and implement your own custom approach for generation of the ROI tables during hyperoptimization in these methods if you need a different structure of the ROI table or other amount of rows (steps) in the ROI tables.
+Override the `roi_space()` method if you need components of the ROI tables to vary in other ranges. Override the `generate_roi_table()` and `roi_space()` methods and implement your own custom approach for generation of the ROI tables during hyperoptimization if you need a different structure of the ROI tables or other amount of rows (steps).
 
 ### Understand Hyperopt Stoploss results
 
@@ -426,6 +424,8 @@ Stoploss: -0.37996664668703606
 
 If you are optimizing stoploss values, Freqtrade creates the 'stoploss' optimization hyperspace for you. By default, the stoploss values in that hyperspace can vary in the range -0.5...-0.02, which is sufficient in most cases.
 
+If you use legacy freqtrade HyperOpts class samples where `stoploss_space()` method was copied in each custom hyperopt file, simply remove it in order to utilize Stoploss hyperoptimization space generated by freqtrade by default.
+
 Override the `stoploss_space()` method and define the desired range in it if you need stoploss values to vary in other range during hyperoptimization.
 
 ### Validate backtesting results

From 9a6a89c238629cdb8e8695dc5efff2f305076e49 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 3 Sep 2019 19:54:28 +0300
Subject: [PATCH 0405/3421] allow simplified hyperopt interface

---
 freqtrade/optimize/hyperopt_interface.py | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py
index f1f123653..2642e9de8 100644
--- a/freqtrade/optimize/hyperopt_interface.py
+++ b/freqtrade/optimize/hyperopt_interface.py
@@ -9,6 +9,15 @@ from typing import Dict, Any, Callable, List
 from pandas import DataFrame
 from skopt.space import Dimension, Integer, Real
 
+from freqtrade import OperationalException
+
+
+def _format_exception_message(method: str, space: str) -> str:
+    return (f"The '{space}' space is included into the hyperoptimization "
+            f"but {method}() method is not found in your "
+            f"custom Hyperopt class. You should either implement this "
+            f"method or remove the '{space}' space from hyperoptimization.")
+
 
 class IHyperOpt(ABC):
     """
@@ -32,32 +41,32 @@ class IHyperOpt(ABC):
         """
 
     @staticmethod
-    @abstractmethod
     def buy_strategy_generator(params: Dict[str, Any]) -> Callable:
         """
         Create a buy strategy generator.
         """
+        raise OperationalException(_format_exception_message('buy_strategy_generator', 'buy'))
 
     @staticmethod
-    @abstractmethod
     def sell_strategy_generator(params: Dict[str, Any]) -> Callable:
         """
         Create a sell strategy generator.
         """
+        raise OperationalException(_format_exception_message('sell_strategy_generator', 'sell'))
 
     @staticmethod
-    @abstractmethod
     def indicator_space() -> List[Dimension]:
         """
         Create an indicator space.
         """
+        raise OperationalException(_format_exception_message('indicator_space', 'buy'))
 
     @staticmethod
-    @abstractmethod
     def sell_indicator_space() -> List[Dimension]:
         """
         Create a sell indicator space.
         """
+        raise OperationalException(_format_exception_message('sell_indicator_space', 'sell'))
 
     @staticmethod
     def generate_roi_table(params: Dict) -> Dict[int, float]:

From 88f823f899dd3d4f5ed1ff05c3f647d3390af004 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 4 Sep 2019 06:56:25 +0200
Subject: [PATCH 0406/3421] Improvements to documentation

---
 docs/configuration.md          | 13 ++++++-------
 docs/strategy-customization.md |  2 +-
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/docs/configuration.md b/docs/configuration.md
index 1f64da306..a1c0d1a75 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -192,14 +192,13 @@ end up paying more then would probably have been necessary.
 
 ### Understand order_types
 
-The `order_types` configuration parameter maps actions (`buy`, `sell`, `stoploss`) to order-types (`market`, `limit`, ...) as well as configures stoploss to be on the exchange and stoploss on exchange update interval in seconds.
+The `order_types` configuration parameter maps actions (`buy`, `sell`, `stoploss`) to order-types (`market`, `limit`, ...) as well as configures stoploss to be on the exchange and defines stoploss on exchange update interval in seconds.
 
 This allows to buy using limit orders, sell using
-limit-orders, and create stoploss orders using market. It also allows to set the
+limit-orders, and create stoplosses using using market orders. It also allows to set the
 stoploss "on exchange" which means stoploss order would be placed immediately once
-the buy order is fulfilled. In case stoploss on exchange and `trailing_stop` are
-both set, then the bot will use `stoploss_on_exchange_interval` to check the stoploss periodically
-and update it if necessary (e.g. in case of trailing stoploss).
+the buy order is fulfilled.
+If `stoploss_on_exchange` and `trailing_stop` are both set, then the bot will use `stoploss_on_exchange_interval` to check and update the stoploss on exchange periodically.
 `order_types` can be set in the configuration file or in the strategy.
 `order_types` set in the configuration file overwrites values set in the strategy as a whole, so you need to configure the whole `order_types` dictionary in one place.
 
@@ -246,10 +245,10 @@ Configuration:
     refer to [the stoploss documentation](stoploss.md).
 
 !!! Note
-    If `stoploss_on_exchange` is enabled and the stoploss is cancelled manually on the exchange, then the bot wil create a new order.
+    If `stoploss_on_exchange` is enabled and the stoploss is cancelled manually on the exchange, then the bot will create a new order.
 
 !!! Warning stoploss_on_exchange failures
-    If stoploss on exchange creation fails for some reason, then an "emergency sell" is initiated. By default, this will sell the asset using a market order. The order-type for the emergency-sell can be changed by setting `emergencysell` - however this is not advised.
+    If stoploss on exchange creation fails for some reason, then an "emergency sell" is initiated. By default, this will sell the asset using a market order. The order-type for the emergency-sell can be changed by setting the `emergencysell` value in the `order_types` dictionary - however this is not advised.
 
 ### Understand order_time_in_force
 
diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md
index e07585800..85cab987a 100644
--- a/docs/strategy-customization.md
+++ b/docs/strategy-customization.md
@@ -224,7 +224,7 @@ This would signify a stoploss of -10%.
 
 For the full documentation on stoploss features, look at the dedicated [stoploss page](stoploss.md).
 
-If your exchange supports it, it's recommended to also set `"stoploss_on_exchange"` in the order_types dictionary, so your stoploss is on the exchange and cannot be missed due to network-problems (or other problems).
+If your exchange supports it, it's recommended to also set `"stoploss_on_exchange"` in the order_types dictionary, so your stoploss is on the exchange and cannot be missed due to network problems, high load or other reasons.
 
 For more information on order_types please look [here](configuration.md#understand-order_types).
 

From 03f3d0dc8bbff3cbe51da4438badeeed03a44850 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 4 Sep 2019 16:38:33 +0200
Subject: [PATCH 0407/3421] Remove desc from Arguments header

---
 freqtrade/configuration/arguments.py  |  5 ++-
 freqtrade/main.py                     |  5 +--
 freqtrade/tests/conftest.py           |  2 +-
 freqtrade/tests/test_arguments.py     | 47 +++++++++++++------------
 freqtrade/tests/test_configuration.py | 50 +++++++++++++--------------
 freqtrade/tests/test_main.py          |  4 +--
 6 files changed, 55 insertions(+), 58 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index 2c814b342..a8cd6686b 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -47,11 +47,10 @@ class Arguments(object):
     """
     Arguments Class. Manage the arguments received by the cli
     """
-    def __init__(self, args: Optional[List[str]], description: str,
-                 no_default_config: bool = False) -> None:
+    def __init__(self, args: Optional[List[str]], no_default_config: bool = False) -> None:
         self.args = args
         self._parsed_arg: Optional[argparse.Namespace] = None
-        self.parser = argparse.ArgumentParser(description=description)
+        self.parser = argparse.ArgumentParser(description='Free, open source crypto trading bot')
         self._no_default_config = no_default_config
 
     def _load_args(self) -> None:
diff --git a/freqtrade/main.py b/freqtrade/main.py
index a96fd43c5..e65aa5fbb 100755
--- a/freqtrade/main.py
+++ b/freqtrade/main.py
@@ -31,10 +31,7 @@ def main(sysargv: List[str] = None) -> None:
     return_code: Any = 1
     worker = None
     try:
-        arguments = Arguments(
-            sysargv,
-            'Free, open source crypto trading bot'
-        )
+        arguments = Arguments(sysargv)
         args: Namespace = arguments.get_parsed_arg()
 
         # A subcommand has been issued.
diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py
index 654b959ca..79b03b057 100644
--- a/freqtrade/tests/conftest.py
+++ b/freqtrade/tests/conftest.py
@@ -45,7 +45,7 @@ def log_has_re(line, logs):
 
 
 def get_args(args):
-    return Arguments(args, '').get_parsed_arg()
+    return Arguments(args).get_parsed_arg()
 
 
 def patched_configuration_load_config_file(mocker, config) -> None:
diff --git a/freqtrade/tests/test_arguments.py b/freqtrade/tests/test_arguments.py
index 558642894..174038eff 100644
--- a/freqtrade/tests/test_arguments.py
+++ b/freqtrade/tests/test_arguments.py
@@ -9,13 +9,15 @@ from freqtrade.configuration.cli_options import check_int_positive
 
 # Parse common command-line-arguments. Used for all tools
 def test_parse_args_none() -> None:
-    arguments = Arguments([], '')
+    arguments = Arguments([])
     assert isinstance(arguments, Arguments)
+    x = arguments.get_parsed_arg()
+    assert isinstance(x, argparse.Namespace)
     assert isinstance(arguments.parser, argparse.ArgumentParser)
 
 
 def test_parse_args_defaults() -> None:
-    args = Arguments([], '').get_parsed_arg()
+    args = Arguments([]).get_parsed_arg()
     assert args.config == ['config.json']
     assert args.strategy_path is None
     assert args.datadir is None
@@ -23,33 +25,32 @@ def test_parse_args_defaults() -> None:
 
 
 def test_parse_args_config() -> None:
-    args = Arguments(['-c', '/dev/null'], '').get_parsed_arg()
+    args = Arguments(['-c', '/dev/null']).get_parsed_arg()
     assert args.config == ['/dev/null']
 
-    args = Arguments(['--config', '/dev/null'], '').get_parsed_arg()
+    args = Arguments(['--config', '/dev/null']).get_parsed_arg()
     assert args.config == ['/dev/null']
 
     args = Arguments(['--config', '/dev/null',
-                      '--config', '/dev/zero'],
-                     '').get_parsed_arg()
+                      '--config', '/dev/zero'],).get_parsed_arg()
     assert args.config == ['/dev/null', '/dev/zero']
 
 
 def test_parse_args_db_url() -> None:
-    args = Arguments(['--db-url', 'sqlite:///test.sqlite'], '').get_parsed_arg()
+    args = Arguments(['--db-url', 'sqlite:///test.sqlite']).get_parsed_arg()
     assert args.db_url == 'sqlite:///test.sqlite'
 
 
 def test_parse_args_verbose() -> None:
-    args = Arguments(['-v'], '').get_parsed_arg()
+    args = Arguments(['-v']).get_parsed_arg()
     assert args.verbosity == 1
 
-    args = Arguments(['--verbose'], '').get_parsed_arg()
+    args = Arguments(['--verbose']).get_parsed_arg()
     assert args.verbosity == 1
 
 
 def test_common_scripts_options() -> None:
-    args = Arguments(['download-data', '-p', 'ETH/BTC', 'XRP/BTC'], '').get_parsed_arg()
+    args = Arguments(['download-data', '-p', 'ETH/BTC', 'XRP/BTC']).get_parsed_arg()
 
     assert args.pairs == ['ETH/BTC', 'XRP/BTC']
     assert hasattr(args, "func")
@@ -57,40 +58,40 @@ def test_common_scripts_options() -> None:
 
 def test_parse_args_version() -> None:
     with pytest.raises(SystemExit, match=r'0'):
-        Arguments(['--version'], '').get_parsed_arg()
+        Arguments(['--version']).get_parsed_arg()
 
 
 def test_parse_args_invalid() -> None:
     with pytest.raises(SystemExit, match=r'2'):
-        Arguments(['-c'], '').get_parsed_arg()
+        Arguments(['-c']).get_parsed_arg()
 
 
 def test_parse_args_strategy() -> None:
-    args = Arguments(['--strategy', 'SomeStrategy'], '').get_parsed_arg()
+    args = Arguments(['--strategy', 'SomeStrategy']).get_parsed_arg()
     assert args.strategy == 'SomeStrategy'
 
 
 def test_parse_args_strategy_invalid() -> None:
     with pytest.raises(SystemExit, match=r'2'):
-        Arguments(['--strategy'], '').get_parsed_arg()
+        Arguments(['--strategy']).get_parsed_arg()
 
 
 def test_parse_args_strategy_path() -> None:
-    args = Arguments(['--strategy-path', '/some/path'], '').get_parsed_arg()
+    args = Arguments(['--strategy-path', '/some/path']).get_parsed_arg()
     assert args.strategy_path == '/some/path'
 
 
 def test_parse_args_strategy_path_invalid() -> None:
     with pytest.raises(SystemExit, match=r'2'):
-        Arguments(['--strategy-path'], '').get_parsed_arg()
+        Arguments(['--strategy-path']).get_parsed_arg()
 
 
 def test_parse_args_backtesting_invalid() -> None:
     with pytest.raises(SystemExit, match=r'2'):
-        Arguments(['backtesting --ticker-interval'], '').get_parsed_arg()
+        Arguments(['backtesting --ticker-interval']).get_parsed_arg()
 
     with pytest.raises(SystemExit, match=r'2'):
-        Arguments(['backtesting --ticker-interval', 'abc'], '').get_parsed_arg()
+        Arguments(['backtesting --ticker-interval', 'abc']).get_parsed_arg()
 
 
 def test_parse_args_backtesting_custom() -> None:
@@ -103,7 +104,7 @@ def test_parse_args_backtesting_custom() -> None:
         'DefaultStrategy',
         'SampleStrategy'
         ]
-    call_args = Arguments(args, '').get_parsed_arg()
+    call_args = Arguments(args).get_parsed_arg()
     assert call_args.config == ['test_conf.json']
     assert call_args.verbosity == 0
     assert call_args.subparser == 'backtesting'
@@ -121,7 +122,7 @@ def test_parse_args_hyperopt_custom() -> None:
         '--epochs', '20',
         '--spaces', 'buy'
     ]
-    call_args = Arguments(args, '').get_parsed_arg()
+    call_args = Arguments(args).get_parsed_arg()
     assert call_args.config == ['test_conf.json']
     assert call_args.epochs == 20
     assert call_args.verbosity == 0
@@ -138,7 +139,7 @@ def test_download_data_options() -> None:
         '--days', '30',
         '--exchange', 'binance'
     ]
-    args = Arguments(args, '').get_parsed_arg()
+    args = Arguments(args).get_parsed_arg()
 
     assert args.pairs_file == 'file_with_pairs'
     assert args.datadir == 'datadir/directory'
@@ -155,7 +156,7 @@ def test_plot_dataframe_options() -> None:
         '--plot-limit', '30',
         '-p', 'UNITTEST/BTC',
     ]
-    pargs = Arguments(args, '').get_parsed_arg()
+    pargs = Arguments(args).get_parsed_arg()
 
     assert pargs.indicators1 == ["sma10", "sma100"]
     assert pargs.indicators2 == ["macd", "fastd", "fastk"]
@@ -170,7 +171,7 @@ def test_plot_profit_options() -> None:
         '--trade-source', 'DB',
         "--db-url", "sqlite:///whatever.sqlite",
     ]
-    pargs = Arguments(args, '').get_parsed_arg()
+    pargs = Arguments(args).get_parsed_arg()
 
     assert pargs.trade_source == "DB"
     assert pargs.pairs == ["UNITTEST/BTC"]
diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py
index 5a70715a4..177d365d6 100644
--- a/freqtrade/tests/test_configuration.py
+++ b/freqtrade/tests/test_configuration.py
@@ -66,7 +66,7 @@ def test_load_config_file(default_conf, mocker, caplog) -> None:
 def test__args_to_config(caplog):
 
     arg_list = ['--strategy-path', 'TestTest']
-    args = Arguments(arg_list, '').get_parsed_arg()
+    args = Arguments(arg_list).get_parsed_arg()
     configuration = Configuration(args)
     config = {}
     with warnings.catch_warnings(record=True) as w:
@@ -93,7 +93,7 @@ def test_load_config_max_open_trades_zero(default_conf, mocker, caplog) -> None:
     default_conf['max_open_trades'] = 0
     patched_configuration_load_config_file(mocker, default_conf)
 
-    args = Arguments([], '').get_parsed_arg()
+    args = Arguments([]).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
@@ -119,7 +119,7 @@ def test_load_config_combine_dicts(default_conf, mocker, caplog) -> None:
     )
 
     arg_list = ['-c', 'test_conf.json', '--config', 'test2_conf.json', ]
-    args = Arguments(arg_list, '').get_parsed_arg()
+    args = Arguments(arg_list).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
@@ -167,7 +167,7 @@ def test_load_config_max_open_trades_minus_one(default_conf, mocker, caplog) ->
     default_conf['max_open_trades'] = -1
     patched_configuration_load_config_file(mocker, default_conf)
 
-    args = Arguments([], '').get_parsed_arg()
+    args = Arguments([]).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
@@ -191,7 +191,7 @@ def test_load_config_file_exception(mocker) -> None:
 def test_load_config(default_conf, mocker) -> None:
     patched_configuration_load_config_file(mocker, default_conf)
 
-    args = Arguments([], '').get_parsed_arg()
+    args = Arguments([]).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
@@ -208,7 +208,7 @@ def test_load_config_with_params(default_conf, mocker) -> None:
         '--strategy-path', '/some/path',
         '--db-url', 'sqlite:///someurl',
     ]
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
@@ -226,7 +226,7 @@ def test_load_config_with_params(default_conf, mocker) -> None:
         '--strategy', 'TestStrategy',
         '--strategy-path', '/some/path'
     ]
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
@@ -242,7 +242,7 @@ def test_load_config_with_params(default_conf, mocker) -> None:
         '--strategy', 'TestStrategy',
         '--strategy-path', '/some/path'
     ]
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
@@ -258,7 +258,7 @@ def test_load_config_with_params(default_conf, mocker) -> None:
         '--strategy', 'TestStrategy',
         '--strategy-path', '/some/path'
     ]
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
@@ -276,7 +276,7 @@ def test_load_config_with_params(default_conf, mocker) -> None:
         '--strategy', 'TestStrategy',
         '--strategy-path', '/some/path'
     ]
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
@@ -290,7 +290,7 @@ def test_load_custom_strategy(default_conf, mocker) -> None:
     })
     patched_configuration_load_config_file(mocker, default_conf)
 
-    args = Arguments([], '').get_parsed_arg()
+    args = Arguments([]).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
@@ -305,7 +305,7 @@ def test_show_info(default_conf, mocker, caplog) -> None:
         '--strategy', 'TestStrategy',
         '--db-url', 'sqlite:///tmp/testdb',
     ]
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     configuration.get_config()
@@ -323,7 +323,7 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) ->
         'backtesting'
     ]
 
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     config = configuration.get_config()
@@ -373,7 +373,7 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non
         '--export', '/bar/foo'
     ]
 
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     config = configuration.get_config()
@@ -423,7 +423,7 @@ def test_setup_configuration_with_stratlist(mocker, default_conf, caplog) -> Non
         'TestStrategy'
     ]
 
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args, RunMode.BACKTEST)
     config = configuration.get_config()
@@ -460,7 +460,7 @@ def test_hyperopt_with_arguments(mocker, default_conf, caplog) -> None:
         '--epochs', '10',
         '--spaces', 'all',
     ]
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args, RunMode.HYPEROPT)
     config = configuration.get_config()
@@ -536,7 +536,7 @@ def test_cli_verbose_with_params(default_conf, mocker, caplog) -> None:
     # Prevent setting loggers
     mocker.patch('freqtrade.loggers._set_loggers', MagicMock)
     arglist = ['-vvv']
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
@@ -589,7 +589,7 @@ def test_set_logfile(default_conf, mocker):
     arglist = [
         '--logfile', 'test_file.log',
     ]
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
@@ -603,7 +603,7 @@ def test_load_config_warn_forcebuy(default_conf, mocker, caplog) -> None:
     default_conf['forcebuy_enable'] = True
     patched_configuration_load_config_file(mocker, default_conf)
 
-    args = Arguments([], '').get_parsed_arg()
+    args = Arguments([]).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
@@ -778,7 +778,7 @@ def test_pairlist_resolving():
         '--exchange', 'binance'
     ]
 
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     config = configuration.get_config()
@@ -794,7 +794,7 @@ def test_pairlist_resolving_with_config(mocker, default_conf):
         'download-data',
     ]
 
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     config = configuration.get_config()
@@ -809,7 +809,7 @@ def test_pairlist_resolving_with_config(mocker, default_conf):
         '--pairs', 'ETH/BTC', 'XRP/BTC',
     ]
 
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     config = configuration.get_config()
@@ -831,7 +831,7 @@ def test_pairlist_resolving_with_config_pl(mocker, default_conf):
         '--pairs-file', 'pairs.json',
     ]
 
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     config = configuration.get_config()
@@ -853,7 +853,7 @@ def test_pairlist_resolving_with_config_pl_not_exists(mocker, default_conf):
         '--pairs-file', 'pairs.json',
     ]
 
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     with pytest.raises(OperationalException, match=r"No pairs file found with path.*"):
         configuration = Configuration(args)
@@ -870,7 +870,7 @@ def test_pairlist_resolving_fallback(mocker):
         '--exchange', 'binance'
     ]
 
-    args = Arguments(arglist, '').get_parsed_arg()
+    args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
     config = configuration.get_config()
diff --git a/freqtrade/tests/test_main.py b/freqtrade/tests/test_main.py
index db5a438d0..a0fd8218b 100644
--- a/freqtrade/tests/test_main.py
+++ b/freqtrade/tests/test_main.py
@@ -117,7 +117,7 @@ def test_main_reload_conf(mocker, default_conf, caplog) -> None:
     mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock())
     mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock())
 
-    args = Arguments(['-c', 'config.json.example'], '').get_parsed_arg()
+    args = Arguments(['-c', 'config.json.example']).get_parsed_arg()
     worker = Worker(args=args, config=default_conf)
     with pytest.raises(SystemExit):
         main(['-c', 'config.json.example'])
@@ -139,7 +139,7 @@ def test_reconfigure(mocker, default_conf) -> None:
     mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock())
     mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock())
 
-    args = Arguments(['-c', 'config.json.example'], '').get_parsed_arg()
+    args = Arguments(['-c', 'config.json.example']).get_parsed_arg()
     worker = Worker(args=args, config=default_conf)
     freqtrade = worker.freqtrade
 

From 5ce63cd54a33098b298da5b8d4c9177828a8e025 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 4 Sep 2019 16:39:23 +0200
Subject: [PATCH 0408/3421] Remove no_config_ argument from Arguments

---
 freqtrade/configuration/arguments.py | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index a8cd6686b..addbfcf67 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -47,11 +47,10 @@ class Arguments(object):
     """
     Arguments Class. Manage the arguments received by the cli
     """
-    def __init__(self, args: Optional[List[str]], no_default_config: bool = False) -> None:
+    def __init__(self, args: Optional[List[str]]) -> None:
         self.args = args
         self._parsed_arg: Optional[argparse.Namespace] = None
         self.parser = argparse.ArgumentParser(description='Free, open source crypto trading bot')
-        self._no_default_config = no_default_config
 
     def _load_args(self) -> None:
         self._build_args(optionlist=ARGS_MAIN)
@@ -77,7 +76,7 @@ class Arguments(object):
         # Workaround issue in argparse with action='append' and default value
         # (see https://bugs.python.org/issue16399)
         # Allow no-config for certain commands (like downloading / plotting)
-        if (not self._no_default_config and parsed_arg.config is None
+        if (parsed_arg.config is None
                 and not ('subparser' in parsed_arg and parsed_arg.subparser in NO_CONF_REQURIED)):
             parsed_arg.config = [constants.DEFAULT_CONFIG]
 

From 1b66f01ec0af11fa3914f89ca750834c55ae6757 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 3 Sep 2019 06:48:51 +0200
Subject: [PATCH 0409/3421] Always use config.json if it's available

---
 freqtrade/configuration/arguments.py  | 7 +++++--
 freqtrade/tests/test_configuration.py | 2 ++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index addbfcf67..10350d886 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -3,6 +3,7 @@ This module contains the argument manager class
 """
 import argparse
 from typing import List, Optional
+from pathlib import Path
 
 from freqtrade.configuration.cli_options import AVAILABLE_CLI_OPTIONS
 from freqtrade import constants
@@ -73,11 +74,13 @@ class Arguments(object):
         """
         parsed_arg = self.parser.parse_args(self.args)
 
+        # When no config is provided, but a config exists, use that configuration!
+
         # Workaround issue in argparse with action='append' and default value
         # (see https://bugs.python.org/issue16399)
         # Allow no-config for certain commands (like downloading / plotting)
-        if (parsed_arg.config is None
-                and not ('subparser' in parsed_arg and parsed_arg.subparser in NO_CONF_REQURIED)):
+        if (parsed_arg.config is None and ((Path.cwd() / constants.DEFAULT_CONFIG).is_file() or
+           not ('subparser' in parsed_arg and parsed_arg.subparser in NO_CONF_REQURIED))):
             parsed_arg.config = [constants.DEFAULT_CONFIG]
 
         return parsed_arg
diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py
index 177d365d6..7b489eba7 100644
--- a/freqtrade/tests/test_configuration.py
+++ b/freqtrade/tests/test_configuration.py
@@ -871,6 +871,8 @@ def test_pairlist_resolving_fallback(mocker):
     ]
 
     args = Arguments(arglist).get_parsed_arg()
+    # Fix flaky tests if config.json exists
+    args.config = None
 
     configuration = Configuration(args)
     config = configuration.get_config()

From e107290230fb95e8b9bba1935c4050da1da505a7 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 3 Sep 2019 07:05:48 +0200
Subject: [PATCH 0410/3421] Validate plot arguments

---
 freqtrade/plot/plot_utils.py     | 12 +++++++++++-
 freqtrade/tests/test_plotting.py | 11 +++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/freqtrade/plot/plot_utils.py b/freqtrade/plot/plot_utils.py
index 507e86d9d..d7d8919d5 100644
--- a/freqtrade/plot/plot_utils.py
+++ b/freqtrade/plot/plot_utils.py
@@ -1,15 +1,24 @@
 from argparse import Namespace
-
+from freqtrade import OperationalException
 from freqtrade.state import RunMode
 from freqtrade.utils import setup_utils_configuration
 
 
+def validate_plot_args(args: Namespace):
+    args_tmp = vars(args)
+    if not args_tmp.get('datadir') and not args_tmp.get('config'):
+        raise OperationalException(
+            "You need to specify either `--datadir` or `--config` "
+            "for plot-profit and plot-dataframe.")
+
+
 def start_plot_dataframe(args: Namespace) -> None:
     """
     Entrypoint for dataframe plotting
     """
     # Import here to avoid errors if plot-dependencies are not installed.
     from freqtrade.plot.plotting import analyse_and_plot_pairs
+    validate_plot_args(args)
     config = setup_utils_configuration(args, RunMode.PLOT)
 
     analyse_and_plot_pairs(config)
@@ -21,6 +30,7 @@ def start_plot_profit(args: Namespace) -> None:
     """
     # Import here to avoid errors if plot-dependencies are not installed.
     from freqtrade.plot.plotting import plot_profit
+    validate_plot_args(args)
     config = setup_utils_configuration(args, RunMode.PLOT)
 
     plot_profit(config)
diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py
index df208d4d2..f1785b63f 100644
--- a/freqtrade/tests/test_plotting.py
+++ b/freqtrade/tests/test_plotting.py
@@ -4,8 +4,10 @@ from pathlib import Path
 from unittest.mock import MagicMock
 
 import plotly.graph_objects as go
+import pytest
 from plotly.subplots import make_subplots
 
+from freqtrade import OperationalException
 from freqtrade.configuration import TimeRange
 from freqtrade.data import history
 from freqtrade.data.btanalysis import create_cum_profit, load_backtest_data
@@ -335,6 +337,15 @@ def test_start_plot_profit(mocker):
     assert called_config['pairs'] == ["ETH/BTC"]
 
 
+def test_start_plot_profit_error(mocker):
+    args = [
+        "plot-profit",
+        "--pairs", "ETH/BTC"
+    ]
+    with pytest.raises(OperationalException):
+        start_plot_profit(get_args(args))
+
+
 def test_plot_profit(default_conf, mocker, caplog):
     default_conf['trade_source'] = 'file'
     default_conf["datadir"] = history.make_testdata_path(None)

From 3343b34725b6c0cbf3c79fbacf5f60f50606b30a Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 5 Sep 2019 00:38:15 +0300
Subject: [PATCH 0411/3421] Add tests for simplified hyperopt interface

---
 freqtrade/tests/optimize/test_hyperopt.py | 268 ++++++++++++++++++++++
 1 file changed, 268 insertions(+)

diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py
index 9583de510..fd79a38f2 100644
--- a/freqtrade/tests/optimize/test_hyperopt.py
+++ b/freqtrade/tests/optimize/test_hyperopt.py
@@ -693,3 +693,271 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) ->
     assert dumper.called
     # Should be called twice, once for tickerdata, once to save evaluations
     assert dumper.call_count == 2
+
+
+def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys) -> None:
+    dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
+    mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
+    mocker.patch(
+        'freqtrade.optimize.hyperopt.get_timeframe',
+        MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13)))
+    )
+
+    parallel = mocker.patch(
+        'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel',
+        MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}])
+    )
+    patch_exchange(mocker)
+
+    default_conf.update({'config': 'config.json.example',
+                         'epochs': 1,
+                         'timerange': None,
+                         'spaces': 'roi stoploss',
+                         'hyperopt_jobs': 1, })
+
+    hyperopt = Hyperopt(default_conf)
+    hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock()
+    hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
+
+    del hyperopt.custom_hyperopt.__class__.buy_strategy_generator
+    del hyperopt.custom_hyperopt.__class__.sell_strategy_generator
+    del hyperopt.custom_hyperopt.__class__.indicator_space
+    del hyperopt.custom_hyperopt.__class__.sell_indicator_space
+
+    hyperopt.start()
+
+    parallel.assert_called_once()
+
+    out, err = capsys.readouterr()
+    assert 'Best result:\n\n*    1/1: foo result Objective: 1.00000\n' in out
+    assert dumper.called
+    # Should be called twice, once for tickerdata, once to save evaluations
+    assert dumper.call_count == 2
+    assert hasattr(hyperopt.backtesting, "advise_sell")
+    assert hasattr(hyperopt.backtesting, "advise_buy")
+    assert hasattr(hyperopt, "max_open_trades")
+    assert hyperopt.max_open_trades == default_conf['max_open_trades']
+    assert hasattr(hyperopt, "position_stacking")
+
+
+def test_simplified_interface_all_failed(mocker, default_conf, caplog, capsys) -> None:
+    mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
+    mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
+    mocker.patch(
+        'freqtrade.optimize.hyperopt.get_timeframe',
+        MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13)))
+    )
+
+    patch_exchange(mocker)
+
+    default_conf.update({'config': 'config.json.example',
+                         'epochs': 1,
+                         'timerange': None,
+                         'spaces': 'all',
+                         'hyperopt_jobs': 1, })
+
+    hyperopt = Hyperopt(default_conf)
+    hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock()
+    hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
+
+    del hyperopt.custom_hyperopt.__class__.buy_strategy_generator
+    del hyperopt.custom_hyperopt.__class__.sell_strategy_generator
+    del hyperopt.custom_hyperopt.__class__.indicator_space
+    del hyperopt.custom_hyperopt.__class__.sell_indicator_space
+
+    with pytest.raises(OperationalException, match=r"The 'buy' space is included into *"):
+        hyperopt.start()
+
+
+def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None:
+    dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
+    mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
+    mocker.patch(
+        'freqtrade.optimize.hyperopt.get_timeframe',
+        MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13)))
+    )
+
+    parallel = mocker.patch(
+        'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel',
+        MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}])
+    )
+    patch_exchange(mocker)
+
+    default_conf.update({'config': 'config.json.example',
+                         'epochs': 1,
+                         'timerange': None,
+                         'spaces': 'buy',
+                         'hyperopt_jobs': 1, })
+
+    hyperopt = Hyperopt(default_conf)
+    hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock()
+    hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
+
+    # TODO: sell_strategy_generator() is actually not called because
+    # run_optimizer_parallel() is mocked
+    del hyperopt.custom_hyperopt.__class__.sell_strategy_generator
+    del hyperopt.custom_hyperopt.__class__.sell_indicator_space
+
+    hyperopt.start()
+
+    parallel.assert_called_once()
+
+    out, err = capsys.readouterr()
+    assert 'Best result:\n\n*    1/1: foo result Objective: 1.00000\n' in out
+    assert dumper.called
+    # Should be called twice, once for tickerdata, once to save evaluations
+    assert dumper.call_count == 2
+    assert hasattr(hyperopt.backtesting, "advise_sell")
+    assert hasattr(hyperopt.backtesting, "advise_buy")
+    assert hasattr(hyperopt, "max_open_trades")
+    assert hyperopt.max_open_trades == default_conf['max_open_trades']
+    assert hasattr(hyperopt, "position_stacking")
+
+
+def test_simplified_interface_buy_failed_1(mocker, default_conf, caplog, capsys) -> None:
+    mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
+    mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
+    mocker.patch(
+        'freqtrade.optimize.hyperopt.get_timeframe',
+        MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13)))
+    )
+
+    patch_exchange(mocker)
+
+    default_conf.update({'config': 'config.json.example',
+                         'epochs': 1,
+                         'timerange': None,
+                         'spaces': 'buy',
+                         'hyperopt_jobs': 1, })
+
+    hyperopt = Hyperopt(default_conf)
+    hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock()
+    hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
+
+    del hyperopt.custom_hyperopt.__class__.buy_strategy_generator
+
+    with pytest.raises(OperationalException, match=r"The 'buy' space is included into *"):
+        hyperopt.start()
+
+
+def test_simplified_interface_buy_failed_2(mocker, default_conf, caplog, capsys) -> None:
+    mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
+    mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
+    mocker.patch(
+        'freqtrade.optimize.hyperopt.get_timeframe',
+        MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13)))
+    )
+
+    patch_exchange(mocker)
+
+    default_conf.update({'config': 'config.json.example',
+                         'epochs': 1,
+                         'timerange': None,
+                         'spaces': 'buy',
+                         'hyperopt_jobs': 1, })
+
+    hyperopt = Hyperopt(default_conf)
+    hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock()
+    hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
+
+    del hyperopt.custom_hyperopt.__class__.indicator_space
+
+    with pytest.raises(OperationalException, match=r"The 'buy' space is included into *"):
+        hyperopt.start()
+
+
+def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None:
+    dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
+    mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
+    mocker.patch(
+        'freqtrade.optimize.hyperopt.get_timeframe',
+        MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13)))
+    )
+
+    parallel = mocker.patch(
+        'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel',
+        MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}])
+    )
+    patch_exchange(mocker)
+
+    default_conf.update({'config': 'config.json.example',
+                         'epochs': 1,
+                         'timerange': None,
+                         'spaces': 'sell',
+                         'hyperopt_jobs': 1, })
+
+    hyperopt = Hyperopt(default_conf)
+    hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock()
+    hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
+
+    # TODO: buy_strategy_generator() is actually not called because
+    # run_optimizer_parallel() is mocked
+    del hyperopt.custom_hyperopt.__class__.buy_strategy_generator
+    del hyperopt.custom_hyperopt.__class__.indicator_space
+
+    hyperopt.start()
+
+    parallel.assert_called_once()
+
+    out, err = capsys.readouterr()
+    assert 'Best result:\n\n*    1/1: foo result Objective: 1.00000\n' in out
+    assert dumper.called
+    # Should be called twice, once for tickerdata, once to save evaluations
+    assert dumper.call_count == 2
+    assert hasattr(hyperopt.backtesting, "advise_sell")
+    assert hasattr(hyperopt.backtesting, "advise_buy")
+    assert hasattr(hyperopt, "max_open_trades")
+    assert hyperopt.max_open_trades == default_conf['max_open_trades']
+    assert hasattr(hyperopt, "position_stacking")
+
+
+def test_simplified_interface_sell_failed_1(mocker, default_conf, caplog, capsys) -> None:
+    mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
+    mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
+    mocker.patch(
+        'freqtrade.optimize.hyperopt.get_timeframe',
+        MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13)))
+    )
+
+    patch_exchange(mocker)
+
+    default_conf.update({'config': 'config.json.example',
+                         'epochs': 1,
+                         'timerange': None,
+                         'spaces': 'sell',
+                         'hyperopt_jobs': 1, })
+
+    hyperopt = Hyperopt(default_conf)
+    hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock()
+    hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
+
+    del hyperopt.custom_hyperopt.__class__.sell_strategy_generator
+
+    with pytest.raises(OperationalException, match=r"The 'sell' space is included into *"):
+        hyperopt.start()
+
+
+def test_simplified_interface_sell_failed_2(mocker, default_conf, caplog, capsys) -> None:
+    mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
+    mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
+    mocker.patch(
+        'freqtrade.optimize.hyperopt.get_timeframe',
+        MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13)))
+    )
+
+    patch_exchange(mocker)
+
+    default_conf.update({'config': 'config.json.example',
+                         'epochs': 1,
+                         'timerange': None,
+                         'spaces': 'sell',
+                         'hyperopt_jobs': 1, })
+
+    hyperopt = Hyperopt(default_conf)
+    hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock()
+    hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
+
+    del hyperopt.custom_hyperopt.__class__.sell_indicator_space
+
+    with pytest.raises(OperationalException, match=r"The 'sell' space is included into *"):
+        hyperopt.start()

From e2e00151194f43d98dc857cf5d321c2fed86c712 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 5 Sep 2019 20:02:01 +0200
Subject: [PATCH 0412/3421] Don't rename dict ... we can use it as is

---
 freqtrade/rpc/rpc.py                      |  4 ++--
 freqtrade/rpc/telegram.py                 |  4 ++--
 freqtrade/tests/rpc/test_rpc.py           | 16 ++++++++--------
 freqtrade/tests/rpc/test_rpc_apiserver.py |  4 ++--
 freqtrade/tests/rpc/test_rpc_telegram.py  |  4 ++--
 5 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py
index 7b811cadc..8112b33bf 100644
--- a/freqtrade/rpc/rpc.py
+++ b/freqtrade/rpc/rpc.py
@@ -294,9 +294,9 @@ class RPC(object):
             total = total + est_btc
             output.append({
                 'currency': coin,
-                'available': balance['free'],
+                'free': balance['free'],
                 'balance': balance['total'],
-                'pending': balance['used'],
+                'used': balance['used'],
                 'est_btc': est_btc,
             })
         if total == 0.0:
diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py
index d11fc02ab..80582a0ce 100644
--- a/freqtrade/rpc/telegram.py
+++ b/freqtrade/rpc/telegram.py
@@ -328,9 +328,9 @@ class Telegram(RPC):
             for currency in result['currencies']:
                 if currency['est_btc'] > 0.0001:
                     curr_output = "*{currency}:*\n" \
-                            "\t`Available: {available: .8f}`\n" \
+                            "\t`Available: {free: .8f}`\n" \
                             "\t`Balance: {balance: .8f}`\n" \
-                            "\t`Pending: {pending: .8f}`\n" \
+                            "\t`Pending: {used: .8f}`\n" \
                             "\t`Est. BTC: {est_btc: .8f}`\n".format(**currency)
                 else:
                     curr_output = "*{currency}:* not showing <1$ amount \n".format(**currency)
diff --git a/freqtrade/tests/rpc/test_rpc.py b/freqtrade/tests/rpc/test_rpc.py
index 5d3fb7920..47ed34a58 100644
--- a/freqtrade/tests/rpc/test_rpc.py
+++ b/freqtrade/tests/rpc/test_rpc.py
@@ -363,9 +363,9 @@ def test_rpc_balance_handle_error(default_conf, mocker):
     assert 'USD' == result['symbol']
     assert result['currencies'] == [{
         'currency': 'BTC',
-        'available': 10.0,
+        'free': 10.0,
         'balance': 12.0,
-        'pending': 2.0,
+        'used': 2.0,
         'est_btc': 12.0,
     }]
     assert result['total'] == 12.0
@@ -417,22 +417,22 @@ def test_rpc_balance_handle(default_conf, mocker):
     assert 'USD' == result['symbol']
     assert result['currencies'] == [
         {'currency': 'BTC',
-            'available': 10.0,
+            'free': 10.0,
             'balance': 12.0,
-            'pending': 2.0,
+            'used': 2.0,
             'est_btc': 12.0,
          },
-        {'available': 1.0,
+        {'free': 1.0,
          'balance': 5.0,
          'currency': 'ETH',
          'est_btc': 0.05,
-         'pending': 4.0
+         'used': 4.0
          },
-        {'available': 5.0,
+        {'free': 5.0,
          'balance': 10.0,
          'currency': 'PAX',
          'est_btc': 0.1,
-         'pending': 5.0}
+         'used': 5.0}
     ]
     assert result['total'] == 12.15
 
diff --git a/freqtrade/tests/rpc/test_rpc_apiserver.py b/freqtrade/tests/rpc/test_rpc_apiserver.py
index 794343a98..bcbbb228f 100644
--- a/freqtrade/tests/rpc/test_rpc_apiserver.py
+++ b/freqtrade/tests/rpc/test_rpc_apiserver.py
@@ -251,9 +251,9 @@ def test_api_balance(botclient, mocker, rpc_balance):
     assert len(rc.json["currencies"]) == 5
     assert rc.json['currencies'][0] == {
         'currency': 'BTC',
-        'available': 12.0,
+        'free': 12.0,
         'balance': 12.0,
-        'pending': 0.0,
+        'used': 0.0,
         'est_btc': 12.0,
     }
 
diff --git a/freqtrade/tests/rpc/test_rpc_telegram.py b/freqtrade/tests/rpc/test_rpc_telegram.py
index 3820332b8..3930b110d 100644
--- a/freqtrade/tests/rpc/test_rpc_telegram.py
+++ b/freqtrade/tests/rpc/test_rpc_telegram.py
@@ -577,8 +577,8 @@ def test_balance_handle_too_large_response(default_conf, update, mocker) -> None
         curr = choice(ascii_uppercase) + choice(ascii_uppercase) + choice(ascii_uppercase)
         balances.append({
             'currency': curr,
-            'available': 1.0,
-            'pending': 0.5,
+            'free': 1.0,
+            'used': 0.5,
             'balance': i,
             'est_btc': 1
         })

From e8f37666ea2223d43c675bb4d002e3a2af40614d Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 5 Sep 2019 20:02:18 +0200
Subject: [PATCH 0413/3421] Fix Problem when ccxt reports None as values

---
 freqtrade/rpc/rpc.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py
index 8112b33bf..213812a70 100644
--- a/freqtrade/rpc/rpc.py
+++ b/freqtrade/rpc/rpc.py
@@ -294,9 +294,9 @@ class RPC(object):
             total = total + est_btc
             output.append({
                 'currency': coin,
-                'free': balance['free'],
-                'balance': balance['total'],
-                'used': balance['used'],
+                'free': balance['free'] if balance['free'] is not None else 0,
+                'balance': balance['total'] if balance['total'] is not None else 0,
+                'used': balance['used'] if balance['used'] is not None else 0,
                 'est_btc': est_btc,
             })
         if total == 0.0:

From 48ac37a1b83a017aafed7d09e50a10fb78cd2b57 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 5 Sep 2019 20:16:09 +0200
Subject: [PATCH 0414/3421] BLock kraken trading - it's not working at the
 moment

---
 freqtrade/exchange/exchange.py        | 3 +++
 freqtrade/tests/test_configuration.py | 2 +-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index d48d18ebf..d5c4a6b1c 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -30,6 +30,9 @@ BAD_EXCHANGES = {
     "bitmex": "Various reasons",
     "bitstamp": "Does not provide history. "
                 "Details in https://github.com/freqtrade/freqtrade/issues/1983",
+    "kraken": "TEMPORARY: Balance does not report free balance, so freqtrade will not know "
+              "if enough balance is available."
+              "Details in https://github.com/freqtrade/freqtrade/issues/1687#issuecomment-528509266"
     }
 
 
diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py
index 177d365d6..a93f0c49e 100644
--- a/freqtrade/tests/test_configuration.py
+++ b/freqtrade/tests/test_configuration.py
@@ -494,7 +494,7 @@ def test_check_exchange(default_conf, caplog) -> None:
     caplog.clear()
 
     # Test an available exchange, supported by ccxt
-    default_conf.get('exchange').update({'name': 'kraken'})
+    default_conf.get('exchange').update({'name': 'huobipro'})
     assert check_exchange(default_conf)
     assert log_has_re(r"Exchange .* is supported by ccxt and .* not officially supported "
                       r"by the Freqtrade development team\. .*", caplog)

From e39d9111770a9bd7b73aa1addc5b7d14649c7d1a Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 5 Sep 2019 23:31:07 +0300
Subject: [PATCH 0415/3421] Improve wordings in hyperopt.md

---
 docs/hyperopt.md | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/docs/hyperopt.md b/docs/hyperopt.md
index c7544df5b..95bec8715 100644
--- a/docs/hyperopt.md
+++ b/docs/hyperopt.md
@@ -400,9 +400,9 @@ If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace f
 
 These ranges should be sufficient in most cases. The minutes in the steps (ROI dict keys) are scaled linearly depending on the ticker interval used. The ROI values in the steps (ROI dict values) are scaled logarithmically depending on the ticker interval used.
 
-If you use legacy freqtrade HyperOpts class samples where the `generate_roi_table()` and `roi_space()` methods were copied in each custom hyperopt file, simply remove them in order to utilize these adaptive ROI tables and the ROI hyperoptimization space generated by freqtrade by default.
+If you have the `generate_roi_table()` and `roi_space()` methods in your custom hyperopt file, remove them in order to utilize these adaptive ROI tables and the ROI hyperoptimization space generated by Freqtrade by default.
 
-Override the `roi_space()` method if you need components of the ROI tables to vary in other ranges. Override the `generate_roi_table()` and `roi_space()` methods and implement your own custom approach for generation of the ROI tables during hyperoptimization if you need a different structure of the ROI tables or other amount of rows (steps).
+Override the `roi_space()` method if you need components of the ROI tables to vary in other ranges. Override the `generate_roi_table()` and `roi_space()` methods and implement your own custom approach for generation of the ROI tables during hyperoptimization if you need a different structure of the ROI tables or other amount of rows (steps). A sample for these methods can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py).
 
 ### Understand Hyperopt Stoploss results
 
@@ -424,9 +424,9 @@ Stoploss: -0.37996664668703606
 
 If you are optimizing stoploss values, Freqtrade creates the 'stoploss' optimization hyperspace for you. By default, the stoploss values in that hyperspace can vary in the range -0.5...-0.02, which is sufficient in most cases.
 
-If you use legacy freqtrade HyperOpts class samples where `stoploss_space()` method was copied in each custom hyperopt file, simply remove it in order to utilize Stoploss hyperoptimization space generated by freqtrade by default.
+If you have the `stoploss_space()` method in your custom hyperopt file, remove it in order to utilize Stoploss hyperoptimization space generated by Freqtrade by default.
 
-Override the `stoploss_space()` method and define the desired range in it if you need stoploss values to vary in other range during hyperoptimization.
+Override the `stoploss_space()` method and define the desired range in it if you need stoploss values to vary in other range during hyperoptimization. A sample for this method can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py).
 
 ### Validate backtesting results
 

From ef8386c06501374dca28f8f3dec8b6d5a3226a2c Mon Sep 17 00:00:00 2001
From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
Date: Fri, 6 Sep 2019 11:55:07 +0300
Subject: [PATCH 0416/3421] Fix table with ROI limits

---
 docs/hyperopt.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/hyperopt.md b/docs/hyperopt.md
index 95bec8715..becf572ee 100644
--- a/docs/hyperopt.md
+++ b/docs/hyperopt.md
@@ -391,7 +391,7 @@ minimal_roi = {
 
 If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the ticker_interval used. By default the values can vary in the following ranges (for some of the most used ticker intervals, values are rounded to 5 digits after the decimal point):
 
-| # step  1m  5m  1h  1d |
+| # step | 1m |  | 5m |  | 1h |  | 1d |  |
 |---|---|---|---|---|---|---|---|---|
 | 1 | 0 | 0.01161...0.11992 | 0 | 0.03...0.31 | 0 | 0.06883...0.71124 | 0 | 0.12178...1.25835 |
 | 2 | 2...8 | 0.00774...0.04255 | 10...40 | 0.02...0.11 | 120...480 | 0.04589...0.25238 | 2880...11520 | 0.08118...0.44651 |

From 7e56704767932fa1ac1ccb4a505ee3cc73568ff1 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Fri, 6 Sep 2019 15:08:44 +0300
Subject: [PATCH 0417/3421] Parametrize tests for hyperopt simplified failed

---
 freqtrade/tests/optimize/test_hyperopt.py | 92 +++--------------------
 1 file changed, 10 insertions(+), 82 deletions(-)

diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py
index fd79a38f2..6fba59be9 100644
--- a/freqtrade/tests/optimize/test_hyperopt.py
+++ b/freqtrade/tests/optimize/test_hyperopt.py
@@ -814,58 +814,6 @@ def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None:
     assert hasattr(hyperopt, "position_stacking")
 
 
-def test_simplified_interface_buy_failed_1(mocker, default_conf, caplog, capsys) -> None:
-    mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
-    mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
-    mocker.patch(
-        'freqtrade.optimize.hyperopt.get_timeframe',
-        MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13)))
-    )
-
-    patch_exchange(mocker)
-
-    default_conf.update({'config': 'config.json.example',
-                         'epochs': 1,
-                         'timerange': None,
-                         'spaces': 'buy',
-                         'hyperopt_jobs': 1, })
-
-    hyperopt = Hyperopt(default_conf)
-    hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock()
-    hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
-
-    del hyperopt.custom_hyperopt.__class__.buy_strategy_generator
-
-    with pytest.raises(OperationalException, match=r"The 'buy' space is included into *"):
-        hyperopt.start()
-
-
-def test_simplified_interface_buy_failed_2(mocker, default_conf, caplog, capsys) -> None:
-    mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
-    mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
-    mocker.patch(
-        'freqtrade.optimize.hyperopt.get_timeframe',
-        MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13)))
-    )
-
-    patch_exchange(mocker)
-
-    default_conf.update({'config': 'config.json.example',
-                         'epochs': 1,
-                         'timerange': None,
-                         'spaces': 'buy',
-                         'hyperopt_jobs': 1, })
-
-    hyperopt = Hyperopt(default_conf)
-    hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock()
-    hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
-
-    del hyperopt.custom_hyperopt.__class__.indicator_space
-
-    with pytest.raises(OperationalException, match=r"The 'buy' space is included into *"):
-        hyperopt.start()
-
-
 def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None:
     dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
     mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
@@ -911,7 +859,13 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None
     assert hasattr(hyperopt, "position_stacking")
 
 
-def test_simplified_interface_sell_failed_1(mocker, default_conf, caplog, capsys) -> None:
+@pytest.mark.parametrize("method,space", [
+    ('buy_strategy_generator', 'buy'),
+    ('indicator_space', 'buy'),
+    ('sell_strategy_generator', 'sell'),
+    ('sell_indicator_space', 'sell'),
+])
+def test_simplified_interface_failed(mocker, default_conf, caplog, capsys, method, space) -> None:
     mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
     mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
     mocker.patch(
@@ -924,40 +878,14 @@ def test_simplified_interface_sell_failed_1(mocker, default_conf, caplog, capsys
     default_conf.update({'config': 'config.json.example',
                          'epochs': 1,
                          'timerange': None,
-                         'spaces': 'sell',
+                         'spaces': space,
                          'hyperopt_jobs': 1, })
 
     hyperopt = Hyperopt(default_conf)
     hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock()
     hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
 
-    del hyperopt.custom_hyperopt.__class__.sell_strategy_generator
+    delattr(hyperopt.custom_hyperopt.__class__, method)
 
-    with pytest.raises(OperationalException, match=r"The 'sell' space is included into *"):
-        hyperopt.start()
-
-
-def test_simplified_interface_sell_failed_2(mocker, default_conf, caplog, capsys) -> None:
-    mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
-    mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock())
-    mocker.patch(
-        'freqtrade.optimize.hyperopt.get_timeframe',
-        MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13)))
-    )
-
-    patch_exchange(mocker)
-
-    default_conf.update({'config': 'config.json.example',
-                         'epochs': 1,
-                         'timerange': None,
-                         'spaces': 'sell',
-                         'hyperopt_jobs': 1, })
-
-    hyperopt = Hyperopt(default_conf)
-    hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock()
-    hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
-
-    del hyperopt.custom_hyperopt.__class__.sell_indicator_space
-
-    with pytest.raises(OperationalException, match=r"The 'sell' space is included into *"):
+    with pytest.raises(OperationalException, match=f"The '{space}' space is included into *"):
         hyperopt.start()

From 4fdf8a75cd6e5f4fd1a6eff0c671a907527b65a4 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Fri, 6 Sep 2019 16:09:03 +0300
Subject: [PATCH 0418/3421] Adjust hyperopt tests after the merge with develop

---
 freqtrade/tests/optimize/test_hyperopt.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py
index a8b2f2e67..976cb3d53 100644
--- a/freqtrade/tests/optimize/test_hyperopt.py
+++ b/freqtrade/tests/optimize/test_hyperopt.py
@@ -706,7 +706,8 @@ def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys)
 
     parallel = mocker.patch(
         'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel',
-        MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}])
+        MagicMock(return_value=[{
+            'loss': 1, 'results_explanation': 'foo result', 'params': {'stoploss': 0.0}}])
     )
     patch_exchange(mocker)
 

From bde82e965463e77c3d82d8df47cb9ac3769c2732 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 7 Sep 2019 20:34:25 +0200
Subject: [PATCH 0419/3421] Move make_testdata_path to conftest

---
 freqtrade/tests/conftest.py             |  5 +++++
 freqtrade/tests/data/test_btanalysis.py |  4 ++--
 freqtrade/tests/data/test_history.py    |  4 ++--
 freqtrade/tests/test_plotting.py        | 24 +++++++++++-------------
 4 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py
index 79b03b057..f09181b0f 100644
--- a/freqtrade/tests/conftest.py
+++ b/freqtrade/tests/conftest.py
@@ -1047,3 +1047,8 @@ def rpc_balance():
             'used': 0.0
         },
     }
+
+
+def make_testdata_path(datadir) -> Path:
+    """Return the path where testdata files are stored"""
+    return (Path(__file__).parent / "testdata").resolve()
diff --git a/freqtrade/tests/data/test_btanalysis.py b/freqtrade/tests/data/test_btanalysis.py
index 90602b4fc..26eff3614 100644
--- a/freqtrade/tests/data/test_btanalysis.py
+++ b/freqtrade/tests/data/test_btanalysis.py
@@ -11,8 +11,8 @@ from freqtrade.data.btanalysis import (BT_DATA_COLUMNS,
                                        extract_trades_of_period,
                                        load_backtest_data, load_trades,
                                        load_trades_from_db)
-from freqtrade.data.history import (load_data, load_pair_history,
-                                    make_testdata_path)
+from freqtrade.data.history import load_data, load_pair_history
+from freqtrade.tests.conftest import make_testdata_path
 from freqtrade.tests.test_persistence import create_mock_trades
 
 
diff --git a/freqtrade/tests/data/test_history.py b/freqtrade/tests/data/test_history.py
index ec4a05e63..35b3d949b 100644
--- a/freqtrade/tests/data/test_history.py
+++ b/freqtrade/tests/data/test_history.py
@@ -16,14 +16,14 @@ from freqtrade.configuration import TimeRange
 from freqtrade.data import history
 from freqtrade.data.history import (download_pair_history,
                                     load_cached_data_for_updating,
-                                    load_tickerdata_file, make_testdata_path,
+                                    load_tickerdata_file,
                                     refresh_backtest_ohlcv_data,
                                     trim_tickerlist)
 from freqtrade.exchange import timeframe_to_minutes
 from freqtrade.misc import file_dump_json
 from freqtrade.strategy.default_strategy import DefaultStrategy
 from freqtrade.tests.conftest import (get_patched_exchange, log_has,
-                                      patch_exchange)
+                                      patch_exchange, make_testdata_path)
 
 # Change this if modifying UNITTEST/BTC testdatafile
 _BTC_UNITTEST_LENGTH = 13681
diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py
index f1785b63f..e9079fff4 100644
--- a/freqtrade/tests/test_plotting.py
+++ b/freqtrade/tests/test_plotting.py
@@ -19,7 +19,8 @@ from freqtrade.plot.plotting import (add_indicators, add_profit,
                                      generate_profit_graph, init_plotscript,
                                      plot_profit, plot_trades, store_plot_file)
 from freqtrade.strategy.default_strategy import DefaultStrategy
-from freqtrade.tests.conftest import get_args, log_has, log_has_re
+from freqtrade.tests.conftest import (get_args, log_has, log_has_re,
+                                      make_testdata_path)
 
 
 def fig_generating_mock(fig, *args, **kwargs):
@@ -46,9 +47,8 @@ def test_init_plotscript(default_conf, mocker):
     default_conf['timerange'] = "20180110-20180112"
     default_conf['trade_source'] = "file"
     default_conf['ticker_interval'] = "5m"
-    default_conf["datadir"] = history.make_testdata_path(None)
-    default_conf['exportfilename'] = str(
-        history.make_testdata_path(None) / "backtest-result_test.json")
+    default_conf["datadir"] = make_testdata_path(None)
+    default_conf['exportfilename'] = str(make_testdata_path(None) / "backtest-result_test.json")
     ret = init_plotscript(default_conf)
     assert "tickers" in ret
     assert "trades" in ret
@@ -101,7 +101,7 @@ def test_plot_trades(caplog):
     assert fig == fig1
     assert log_has("No trades found.", caplog)
     pair = "ADA/BTC"
-    filename = history.make_testdata_path(None) / "backtest-result_test.json"
+    filename = make_testdata_path(None) / "backtest-result_test.json"
     trades = load_backtest_data(filename)
     trades = trades.loc[trades['pair'] == pair]
 
@@ -225,7 +225,7 @@ def test_generate_plot_file(mocker, caplog):
 
 
 def test_add_profit():
-    filename = history.make_testdata_path(None) / "backtest-result_test.json"
+    filename = make_testdata_path(None) / "backtest-result_test.json"
     bt_data = load_backtest_data(filename)
     timerange = TimeRange.parse_timerange("20180110-20180112")
 
@@ -245,7 +245,7 @@ def test_add_profit():
 
 
 def test_generate_profit_graph():
-    filename = history.make_testdata_path(None) / "backtest-result_test.json"
+    filename = make_testdata_path(None) / "backtest-result_test.json"
     trades = load_backtest_data(filename)
     timerange = TimeRange.parse_timerange("20180110-20180112")
     pairs = ["POWR/BTC", "XLM/BTC"]
@@ -296,9 +296,8 @@ def test_start_plot_dataframe(mocker):
 
 def test_analyse_and_plot_pairs(default_conf, mocker, caplog):
     default_conf['trade_source'] = 'file'
-    default_conf["datadir"] = history.make_testdata_path(None)
-    default_conf['exportfilename'] = str(
-        history.make_testdata_path(None) / "backtest-result_test.json")
+    default_conf["datadir"] = make_testdata_path(None)
+    default_conf['exportfilename'] = str(make_testdata_path(None) / "backtest-result_test.json")
     default_conf['indicators1'] = ["sma5", "ema10"]
     default_conf['indicators2'] = ["macd"]
     default_conf['pairs'] = ["ETH/BTC", "LTC/BTC"]
@@ -348,9 +347,8 @@ def test_start_plot_profit_error(mocker):
 
 def test_plot_profit(default_conf, mocker, caplog):
     default_conf['trade_source'] = 'file'
-    default_conf["datadir"] = history.make_testdata_path(None)
-    default_conf['exportfilename'] = str(
-        history.make_testdata_path(None) / "backtest-result_test.json")
+    default_conf["datadir"] = make_testdata_path(None)
+    default_conf['exportfilename'] = str(make_testdata_path(None) / "backtest-result_test.json")
     default_conf['pairs'] = ["ETH/BTC", "LTC/BTC"]
 
     profit_mock = MagicMock()

From fe631ffd04f3cf42ee8b28135786e7eb3b41c638 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 7 Sep 2019 20:56:03 +0200
Subject: [PATCH 0420/3421] Use fixture to determine test_data_dir

---
 freqtrade/tests/conftest.py                  |  3 +-
 freqtrade/tests/data/test_btanalysis.py      | 19 ++---
 freqtrade/tests/data/test_converter.py       |  4 +-
 freqtrade/tests/data/test_history.py         | 87 ++++++++++----------
 freqtrade/tests/optimize/test_backtesting.py | 53 ++++++------
 freqtrade/tests/optimize/test_hyperopt.py    |  8 +-
 freqtrade/tests/strategy/test_interface.py   |  4 +-
 freqtrade/tests/test_misc.py                 |  8 +-
 freqtrade/tests/test_plotting.py             | 49 ++++++-----
 9 files changed, 118 insertions(+), 117 deletions(-)

diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py
index f09181b0f..e7b8b386a 100644
--- a/freqtrade/tests/conftest.py
+++ b/freqtrade/tests/conftest.py
@@ -1049,6 +1049,7 @@ def rpc_balance():
     }
 
 
-def make_testdata_path(datadir) -> Path:
+@pytest.fixture
+def testdatadir() -> Path:
     """Return the path where testdata files are stored"""
     return (Path(__file__).parent / "testdata").resolve()
diff --git a/freqtrade/tests/data/test_btanalysis.py b/freqtrade/tests/data/test_btanalysis.py
index 26eff3614..e95757d4e 100644
--- a/freqtrade/tests/data/test_btanalysis.py
+++ b/freqtrade/tests/data/test_btanalysis.py
@@ -12,13 +12,12 @@ from freqtrade.data.btanalysis import (BT_DATA_COLUMNS,
                                        load_backtest_data, load_trades,
                                        load_trades_from_db)
 from freqtrade.data.history import load_data, load_pair_history
-from freqtrade.tests.conftest import make_testdata_path
 from freqtrade.tests.test_persistence import create_mock_trades
 
 
-def test_load_backtest_data():
+def test_load_backtest_data(testdatadir):
 
-    filename = make_testdata_path(None) / "backtest-result_test.json"
+    filename = testdatadir / "backtest-result_test.json"
     bt_data = load_backtest_data(filename)
     assert isinstance(bt_data, DataFrame)
     assert list(bt_data.columns) == BT_DATA_COLUMNS + ["profitabs"]
@@ -52,12 +51,12 @@ def test_load_trades_db(default_conf, fee, mocker):
             assert col in trades.columns
 
 
-def test_extract_trades_of_period():
+def test_extract_trades_of_period(testdatadir):
     pair = "UNITTEST/BTC"
     timerange = TimeRange(None, 'line', 0, -1000)
 
     data = load_pair_history(pair=pair, ticker_interval='1m',
-                             datadir=None, timerange=timerange)
+                             datadir=testdatadir, timerange=timerange)
 
     # timerange = 2017-11-14 06:07 - 2017-11-14 22:58:00
     trades = DataFrame(
@@ -108,9 +107,9 @@ def test_load_trades(default_conf, mocker):
     assert bt_mock.call_count == 1
 
 
-def test_combine_tickers_with_mean():
+def test_combine_tickers_with_mean(testdatadir):
     pairs = ["ETH/BTC", "XLM/BTC"]
-    tickers = load_data(datadir=None,
+    tickers = load_data(datadir=testdatadir,
                         pairs=pairs,
                         ticker_interval='5m'
                         )
@@ -121,13 +120,13 @@ def test_combine_tickers_with_mean():
     assert "mean" in df.columns
 
 
-def test_create_cum_profit():
-    filename = make_testdata_path(None) / "backtest-result_test.json"
+def test_create_cum_profit(testdatadir):
+    filename = testdatadir / "backtest-result_test.json"
     bt_data = load_backtest_data(filename)
     timerange = TimeRange.parse_timerange("20180110-20180112")
 
     df = load_pair_history(pair="POWR/BTC", ticker_interval='5m',
-                           datadir=None, timerange=timerange)
+                           datadir=testdatadir, timerange=timerange)
 
     cum_profits = create_cum_profit(df.set_index('date'),
                                     bt_data[bt_data["pair"] == 'POWR/BTC'],
diff --git a/freqtrade/tests/data/test_converter.py b/freqtrade/tests/data/test_converter.py
index 39462bdd8..d47c3ee92 100644
--- a/freqtrade/tests/data/test_converter.py
+++ b/freqtrade/tests/data/test_converter.py
@@ -21,8 +21,8 @@ def test_parse_ticker_dataframe(ticker_history_list, caplog):
     assert log_has('Parsing tickerlist to dataframe', caplog)
 
 
-def test_ohlcv_fill_up_missing_data(caplog):
-    data = load_pair_history(datadir=None,
+def test_ohlcv_fill_up_missing_data(testdatadir, caplog):
+    data = load_pair_history(datadir=testdatadir,
                              ticker_interval='1m',
                              refresh_pairs=False,
                              pair='UNITTEST/BTC',
diff --git a/freqtrade/tests/data/test_history.py b/freqtrade/tests/data/test_history.py
index 35b3d949b..43429031c 100644
--- a/freqtrade/tests/data/test_history.py
+++ b/freqtrade/tests/data/test_history.py
@@ -22,8 +22,7 @@ from freqtrade.data.history import (download_pair_history,
 from freqtrade.exchange import timeframe_to_minutes
 from freqtrade.misc import file_dump_json
 from freqtrade.strategy.default_strategy import DefaultStrategy
-from freqtrade.tests.conftest import (get_patched_exchange, log_has,
-                                      patch_exchange, make_testdata_path)
+from freqtrade.tests.conftest import get_patched_exchange, log_has, log_has_re, patch_exchange
 
 # Change this if modifying UNITTEST/BTC testdatafile
 _BTC_UNITTEST_LENGTH = 13681
@@ -60,8 +59,8 @@ def _clean_test_file(file: str) -> None:
         os.rename(file_swp, file)
 
 
-def test_load_data_30min_ticker(mocker, caplog, default_conf) -> None:
-    ld = history.load_pair_history(pair='UNITTEST/BTC', ticker_interval='30m', datadir=None)
+def test_load_data_30min_ticker(mocker, caplog, default_conf, testdatadir) -> None:
+    ld = history.load_pair_history(pair='UNITTEST/BTC', ticker_interval='30m', datadir=testdatadir)
     assert isinstance(ld, DataFrame)
     assert not log_has(
         'Download history data for pair: "UNITTEST/BTC", interval: 30m '
@@ -69,8 +68,8 @@ def test_load_data_30min_ticker(mocker, caplog, default_conf) -> None:
     )
 
 
-def test_load_data_7min_ticker(mocker, caplog, default_conf) -> None:
-    ld = history.load_pair_history(pair='UNITTEST/BTC', ticker_interval='7m', datadir=None)
+def test_load_data_7min_ticker(mocker, caplog, default_conf, testdatadir) -> None:
+    ld = history.load_pair_history(pair='UNITTEST/BTC', ticker_interval='7m', datadir=testdatadir)
     assert not isinstance(ld, DataFrame)
     assert ld is None
     assert log_has(
@@ -80,11 +79,11 @@ def test_load_data_7min_ticker(mocker, caplog, default_conf) -> None:
     )
 
 
-def test_load_data_1min_ticker(ticker_history, mocker, caplog) -> None:
+def test_load_data_1min_ticker(ticker_history, mocker, caplog, testdatadir) -> None:
     mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history)
     file = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'UNITTEST_BTC-1m.json')
     _backup_file(file, copy_file=True)
-    history.load_data(datadir=None, ticker_interval='1m', pairs=['UNITTEST/BTC'])
+    history.load_data(datadir=testdatadir, ticker_interval='1m', pairs=['UNITTEST/BTC'])
     assert os.path.isfile(file) is True
     assert not log_has(
         'Download history data for pair: "UNITTEST/BTC", interval: 1m '
@@ -93,7 +92,8 @@ def test_load_data_1min_ticker(ticker_history, mocker, caplog) -> None:
     _clean_test_file(file)
 
 
-def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, default_conf) -> None:
+def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog,
+                                      default_conf, testdatadir) -> None:
     """
     Test load_pair_history() with 1 min ticker
     """
@@ -103,7 +103,7 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, defau
 
     _backup_file(file)
     # do not download a new pair if refresh_pairs isn't set
-    history.load_pair_history(datadir=None,
+    history.load_pair_history(datadir=testdatadir,
                               ticker_interval='1m',
                               refresh_pairs=False,
                               pair='MEME/BTC')
@@ -115,18 +115,18 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, defau
     )
 
     # download a new pair if refresh_pairs is set
-    history.load_pair_history(datadir=None,
+    history.load_pair_history(datadir=testdatadir,
                               ticker_interval='1m',
                               refresh_pairs=True,
                               exchange=exchange,
                               pair='MEME/BTC')
     assert os.path.isfile(file) is True
-    assert log_has(
+    assert log_has_re(
         'Download history data for pair: "MEME/BTC", interval: 1m '
-        'and store in None.', caplog
+        'and store in .*', caplog
     )
     with pytest.raises(OperationalException, match=r'Exchange needs to be initialized when.*'):
-        history.load_pair_history(datadir=None,
+        history.load_pair_history(datadir=testdatadir,
                                   ticker_interval='1m',
                                   refresh_pairs=True,
                                   exchange=None,
@@ -159,8 +159,8 @@ def test_load_data_live_noexchange(default_conf, mocker, caplog) -> None:
                           )
 
 
-def test_testdata_path() -> None:
-    assert str(Path('freqtrade') / 'tests' / 'testdata') in str(make_testdata_path(None))
+def test_testdata_path(testdatadir) -> None:
+    assert str(Path('freqtrade') / 'tests' / 'testdata') in str(testdatadir)
 
 
 def test_load_cached_data_for_updating(mocker) -> None:
@@ -248,7 +248,7 @@ def test_load_cached_data_for_updating(mocker) -> None:
     assert start_ts is None
 
 
-def test_download_pair_history(ticker_history_list, mocker, default_conf) -> None:
+def test_download_pair_history(ticker_history_list, mocker, default_conf, testdatadir) -> None:
     mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history_list)
     exchange = get_patched_exchange(mocker, default_conf)
     file1_1 = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'MEME_BTC-1m.json')
@@ -264,10 +264,10 @@ def test_download_pair_history(ticker_history_list, mocker, default_conf) -> Non
     assert os.path.isfile(file1_1) is False
     assert os.path.isfile(file2_1) is False
 
-    assert download_pair_history(datadir=None, exchange=exchange,
+    assert download_pair_history(datadir=testdatadir, exchange=exchange,
                                  pair='MEME/BTC',
                                  ticker_interval='1m')
-    assert download_pair_history(datadir=None, exchange=exchange,
+    assert download_pair_history(datadir=testdatadir, exchange=exchange,
                                  pair='CFI/BTC',
                                  ticker_interval='1m')
     assert not exchange._pairs_last_refresh_time
@@ -281,10 +281,10 @@ def test_download_pair_history(ticker_history_list, mocker, default_conf) -> Non
     assert os.path.isfile(file1_5) is False
     assert os.path.isfile(file2_5) is False
 
-    assert download_pair_history(datadir=None, exchange=exchange,
+    assert download_pair_history(datadir=testdatadir, exchange=exchange,
                                  pair='MEME/BTC',
                                  ticker_interval='5m')
-    assert download_pair_history(datadir=None, exchange=exchange,
+    assert download_pair_history(datadir=testdatadir, exchange=exchange,
                                  pair='CFI/BTC',
                                  ticker_interval='5m')
     assert not exchange._pairs_last_refresh_time
@@ -296,7 +296,7 @@ def test_download_pair_history(ticker_history_list, mocker, default_conf) -> Non
     _clean_test_file(file2_5)
 
 
-def test_download_pair_history2(mocker, default_conf) -> None:
+def test_download_pair_history2(mocker, default_conf, testdatadir) -> None:
     tick = [
         [1509836520000, 0.00162008, 0.00162008, 0.00162008, 0.00162008, 108.14853839],
         [1509836580000, 0.00161, 0.00161, 0.00161, 0.00161, 82.390199]
@@ -304,12 +304,13 @@ def test_download_pair_history2(mocker, default_conf) -> None:
     json_dump_mock = mocker.patch('freqtrade.misc.file_dump_json', return_value=None)
     mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=tick)
     exchange = get_patched_exchange(mocker, default_conf)
-    download_pair_history(None, exchange, pair="UNITTEST/BTC", ticker_interval='1m')
-    download_pair_history(None, exchange, pair="UNITTEST/BTC", ticker_interval='3m')
+    download_pair_history(testdatadir, exchange, pair="UNITTEST/BTC", ticker_interval='1m')
+    download_pair_history(testdatadir, exchange, pair="UNITTEST/BTC", ticker_interval='3m')
     assert json_dump_mock.call_count == 2
 
 
-def test_download_backtesting_data_exception(ticker_history, mocker, caplog, default_conf) -> None:
+def test_download_backtesting_data_exception(ticker_history, mocker, caplog,
+                                             default_conf, testdatadir) -> None:
     mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv',
                  side_effect=Exception('File Error'))
 
@@ -320,7 +321,7 @@ def test_download_backtesting_data_exception(ticker_history, mocker, caplog, def
     _backup_file(file1_1)
     _backup_file(file1_5)
 
-    assert not download_pair_history(datadir=None, exchange=exchange,
+    assert not download_pair_history(datadir=testdatadir, exchange=exchange,
                                      pair='MEME/BTC',
                                      ticker_interval='1m')
     # clean files freshly downloaded
@@ -332,22 +333,22 @@ def test_download_backtesting_data_exception(ticker_history, mocker, caplog, def
     )
 
 
-def test_load_tickerdata_file() -> None:
+def test_load_tickerdata_file(testdatadir) -> None:
     # 7 does not exist in either format.
-    assert not load_tickerdata_file(None, 'UNITTEST/BTC', '7m')
+    assert not load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '7m')
     # 1 exists only as a .json
-    tickerdata = load_tickerdata_file(None, 'UNITTEST/BTC', '1m')
+    tickerdata = load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m')
     assert _BTC_UNITTEST_LENGTH == len(tickerdata)
     # 8 .json is empty and will fail if it's loaded. .json.gz is a copy of 1.json
-    tickerdata = load_tickerdata_file(None, 'UNITTEST/BTC', '8m')
+    tickerdata = load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '8m')
     assert _BTC_UNITTEST_LENGTH == len(tickerdata)
 
 
-def test_load_partial_missing(caplog) -> None:
+def test_load_partial_missing(testdatadir, caplog) -> None:
     # Make sure we start fresh - test missing data at start
     start = arrow.get('2018-01-01T00:00:00')
     end = arrow.get('2018-01-11T00:00:00')
-    tickerdata = history.load_data(None, '5m', ['UNITTEST/BTC'],
+    tickerdata = history.load_data(testdatadir, '5m', ['UNITTEST/BTC'],
                                    refresh_pairs=False,
                                    timerange=TimeRange('date', 'date',
                                                        start.timestamp, end.timestamp))
@@ -362,7 +363,7 @@ def test_load_partial_missing(caplog) -> None:
     caplog.clear()
     start = arrow.get('2018-01-10T00:00:00')
     end = arrow.get('2018-02-20T00:00:00')
-    tickerdata = history.load_data(datadir=None, ticker_interval='5m',
+    tickerdata = history.load_data(datadir=testdatadir, ticker_interval='5m',
                                    pairs=['UNITTEST/BTC'], refresh_pairs=False,
                                    timerange=TimeRange('date', 'date',
                                                        start.timestamp, end.timestamp))
@@ -502,13 +503,13 @@ def test_file_dump_json_tofile() -> None:
     _clean_test_file(file)
 
 
-def test_get_timeframe(default_conf, mocker) -> None:
+def test_get_timeframe(default_conf, mocker, testdatadir) -> None:
     patch_exchange(mocker)
     strategy = DefaultStrategy(default_conf)
 
     data = strategy.tickerdata_to_dataframe(
         history.load_data(
-            datadir=None,
+            datadir=testdatadir,
             ticker_interval='1m',
             pairs=['UNITTEST/BTC']
         )
@@ -518,13 +519,13 @@ def test_get_timeframe(default_conf, mocker) -> None:
     assert max_date.isoformat() == '2017-11-14T22:58:00+00:00'
 
 
-def test_validate_backtest_data_warn(default_conf, mocker, caplog) -> None:
+def test_validate_backtest_data_warn(default_conf, mocker, caplog, testdatadir) -> None:
     patch_exchange(mocker)
     strategy = DefaultStrategy(default_conf)
 
     data = strategy.tickerdata_to_dataframe(
         history.load_data(
-            datadir=None,
+            datadir=testdatadir,
             ticker_interval='1m',
             pairs=['UNITTEST/BTC'],
             fill_up_missing=False
@@ -540,14 +541,14 @@ def test_validate_backtest_data_warn(default_conf, mocker, caplog) -> None:
         caplog)
 
 
-def test_validate_backtest_data(default_conf, mocker, caplog) -> None:
+def test_validate_backtest_data(default_conf, mocker, caplog, testdatadir) -> None:
     patch_exchange(mocker)
     strategy = DefaultStrategy(default_conf)
 
     timerange = TimeRange('index', 'index', 200, 250)
     data = strategy.tickerdata_to_dataframe(
         history.load_data(
-            datadir=None,
+            datadir=testdatadir,
             ticker_interval='5m',
             pairs=['UNITTEST/BTC'],
             timerange=timerange
@@ -561,7 +562,7 @@ def test_validate_backtest_data(default_conf, mocker, caplog) -> None:
     assert len(caplog.record_tuples) == 0
 
 
-def test_refresh_backtest_ohlcv_data(mocker, default_conf, markets, caplog):
+def test_refresh_backtest_ohlcv_data(mocker, default_conf, markets, caplog, testdatadir):
     dl_mock = mocker.patch('freqtrade.data.history.download_pair_history', MagicMock())
     mocker.patch(
         'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)
@@ -572,7 +573,7 @@ def test_refresh_backtest_ohlcv_data(mocker, default_conf, markets, caplog):
     ex = get_patched_exchange(mocker, default_conf)
     timerange = TimeRange.parse_timerange("20190101-20190102")
     refresh_backtest_ohlcv_data(exchange=ex, pairs=["ETH/BTC", "XRP/BTC"],
-                                timeframes=["1m", "5m"], dl_path=make_testdata_path(None),
+                                timeframes=["1m", "5m"], dl_path=testdatadir,
                                 timerange=timerange, erase=True
                                 )
 
@@ -582,7 +583,7 @@ def test_refresh_backtest_ohlcv_data(mocker, default_conf, markets, caplog):
     assert log_has("Downloading pair ETH/BTC, interval 1m.", caplog)
 
 
-def test_download_data_no_markets(mocker, default_conf, caplog):
+def test_download_data_no_markets(mocker, default_conf, caplog, testdatadir):
     dl_mock = mocker.patch('freqtrade.data.history.download_pair_history', MagicMock())
     mocker.patch(
         'freqtrade.exchange.Exchange.markets', PropertyMock(return_value={})
@@ -591,7 +592,7 @@ def test_download_data_no_markets(mocker, default_conf, caplog):
     timerange = TimeRange.parse_timerange("20190101-20190102")
     unav_pairs = refresh_backtest_ohlcv_data(exchange=ex, pairs=["ETH/BTC", "XRP/BTC"],
                                              timeframes=["1m", "5m"],
-                                             dl_path=make_testdata_path(None),
+                                             dl_path=testdatadir,
                                              timerange=timerange, erase=False
                                              )
 
diff --git a/freqtrade/tests/optimize/test_backtesting.py b/freqtrade/tests/optimize/test_backtesting.py
index 52eae9df0..8e6459d8a 100644
--- a/freqtrade/tests/optimize/test_backtesting.py
+++ b/freqtrade/tests/optimize/test_backtesting.py
@@ -34,9 +34,9 @@ def trim_dictlist(dict_list, num):
     return new
 
 
-def load_data_test(what):
+def load_data_test(what, testdatadir):
     timerange = TimeRange(None, 'line', 0, -101)
-    pair = history.load_tickerdata_file(None, ticker_interval='1m',
+    pair = history.load_tickerdata_file(testdatadir, ticker_interval='1m',
                                         pair='UNITTEST/BTC', timerange=timerange)
     datalen = len(pair)
 
@@ -79,12 +79,12 @@ def load_data_test(what):
                                                    fill_missing=True)}
 
 
-def simple_backtest(config, contour, num_results, mocker) -> None:
+def simple_backtest(config, contour, num_results, mocker, testdatadir) -> None:
     patch_exchange(mocker)
     config['ticker_interval'] = '1m'
     backtesting = Backtesting(config)
 
-    data = load_data_test(contour)
+    data = load_data_test(contour, testdatadir)
     processed = backtesting.strategy.tickerdata_to_dataframe(data)
     min_date, max_date = get_timeframe(processed)
     assert isinstance(processed, dict)
@@ -118,8 +118,8 @@ def _load_pair_as_ticks(pair, tickfreq):
 
 
 # FIX: fixturize this?
-def _make_backtest_conf(mocker, conf=None, pair='UNITTEST/BTC', record=None):
-    data = history.load_data(datadir=None, ticker_interval='1m', pairs=[pair])
+def _make_backtest_conf(mocker, datadir, conf=None, pair='UNITTEST/BTC', record=None):
+    data = history.load_data(datadir=datadir, ticker_interval='1m', pairs=[pair])
     data = trim_dictlist(data, -201)
     patch_exchange(mocker)
     backtesting = Backtesting(conf)
@@ -339,10 +339,10 @@ def test_backtesting_init_no_ticker_interval(mocker, default_conf, caplog) -> No
             "or as cli argument `--ticker-interval 5m`", caplog)
 
 
-def test_tickerdata_to_dataframe_bt(default_conf, mocker) -> None:
+def test_tickerdata_to_dataframe_bt(default_conf, mocker, testdatadir) -> None:
     patch_exchange(mocker)
     timerange = TimeRange(None, 'line', 0, -100)
-    tick = history.load_tickerdata_file(None, 'UNITTEST/BTC', '1m', timerange=timerange)
+    tick = history.load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m', timerange=timerange)
     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC",
                                                          fill_missing=True)}
 
@@ -456,7 +456,7 @@ def test_generate_text_table_strategyn(default_conf, mocker):
     assert backtesting._generate_text_table_strategy(all_results=results) == result_str
 
 
-def test_backtesting_start(default_conf, mocker, caplog) -> None:
+def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None:
     def get_timeframe(input1):
         return Arrow(2017, 11, 14, 21, 17), Arrow(2017, 11, 14, 22, 59)
 
@@ -472,7 +472,7 @@ def test_backtesting_start(default_conf, mocker, caplog) -> None:
 
     default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC']
     default_conf['ticker_interval'] = '1m'
-    default_conf['datadir'] = None
+    default_conf['datadir'] = testdatadir
     default_conf['export'] = None
     default_conf['timerange'] = '-100'
 
@@ -516,13 +516,13 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog) -> None:
     assert log_has('No data found. Terminating.', caplog)
 
 
-def test_backtest(default_conf, fee, mocker) -> None:
+def test_backtest(default_conf, fee, mocker, testdatadir) -> None:
     mocker.patch('freqtrade.exchange.Exchange.get_fee', fee)
     patch_exchange(mocker)
     backtesting = Backtesting(default_conf)
     pair = 'UNITTEST/BTC'
     timerange = TimeRange(None, 'line', 0, -201)
-    data = history.load_data(datadir=None, ticker_interval='5m', pairs=['UNITTEST/BTC'],
+    data = history.load_data(datadir=testdatadir, ticker_interval='5m', pairs=['UNITTEST/BTC'],
                              timerange=timerange)
     data_processed = backtesting.strategy.tickerdata_to_dataframe(data)
     min_date, max_date = get_timeframe(data_processed)
@@ -570,14 +570,14 @@ def test_backtest(default_conf, fee, mocker) -> None:
                 t["close_rate"], 6) < round(ln.iloc[0]["high"], 6))
 
 
-def test_backtest_1min_ticker_interval(default_conf, fee, mocker) -> None:
+def test_backtest_1min_ticker_interval(default_conf, fee, mocker, testdatadir) -> None:
     mocker.patch('freqtrade.exchange.Exchange.get_fee', fee)
     patch_exchange(mocker)
     backtesting = Backtesting(default_conf)
 
     # Run a backtesting for an exiting 1min ticker_interval
     timerange = TimeRange(None, 'line', 0, -200)
-    data = history.load_data(datadir=None, ticker_interval='1m', pairs=['UNITTEST/BTC'],
+    data = history.load_data(datadir=testdatadir, ticker_interval='1m', pairs=['UNITTEST/BTC'],
                              timerange=timerange)
     processed = backtesting.strategy.tickerdata_to_dataframe(data)
     min_date, max_date = get_timeframe(processed)
@@ -595,11 +595,11 @@ def test_backtest_1min_ticker_interval(default_conf, fee, mocker) -> None:
     assert len(results) == 1
 
 
-def test_processed(default_conf, mocker) -> None:
+def test_processed(default_conf, mocker, testdatadir) -> None:
     patch_exchange(mocker)
     backtesting = Backtesting(default_conf)
 
-    dict_of_tickerrows = load_data_test('raise')
+    dict_of_tickerrows = load_data_test('raise', testdatadir)
     dataframes = backtesting.strategy.tickerdata_to_dataframe(dict_of_tickerrows)
     dataframe = dataframes['UNITTEST/BTC']
     cols = dataframe.columns
@@ -609,7 +609,7 @@ def test_processed(default_conf, mocker) -> None:
         assert col in cols
 
 
-def test_backtest_pricecontours(default_conf, fee, mocker) -> None:
+def test_backtest_pricecontours(default_conf, fee, mocker, testdatadir) -> None:
     # TODO: Evaluate usefullness of this, the patterns and buy-signls are unrealistic
     mocker.patch('freqtrade.exchange.Exchange.get_fee', fee)
     tests = [['raise', 19], ['lower', 0], ['sine', 35]]
@@ -617,17 +617,17 @@ def test_backtest_pricecontours(default_conf, fee, mocker) -> None:
     default_conf['experimental'] = {"use_sell_signal": True}
 
     for [contour, numres] in tests:
-        simple_backtest(default_conf, contour, numres, mocker)
+        simple_backtest(default_conf, contour, numres, mocker, testdatadir)
 
 
-def test_backtest_clash_buy_sell(mocker, default_conf):
+def test_backtest_clash_buy_sell(mocker, default_conf, testdatadir):
     # Override the default buy trend function in our default_strategy
     def fun(dataframe=None, pair=None):
         buy_value = 1
         sell_value = 1
         return _trend(dataframe, buy_value, sell_value)
 
-    backtest_conf = _make_backtest_conf(mocker, conf=default_conf)
+    backtest_conf = _make_backtest_conf(mocker, conf=default_conf, datadir=testdatadir)
     backtesting = Backtesting(default_conf)
     backtesting.advise_buy = fun  # Override
     backtesting.advise_sell = fun  # Override
@@ -635,14 +635,14 @@ def test_backtest_clash_buy_sell(mocker, default_conf):
     assert results.empty
 
 
-def test_backtest_only_sell(mocker, default_conf):
+def test_backtest_only_sell(mocker, default_conf, testdatadir):
     # Override the default buy trend function in our default_strategy
     def fun(dataframe=None, pair=None):
         buy_value = 0
         sell_value = 1
         return _trend(dataframe, buy_value, sell_value)
 
-    backtest_conf = _make_backtest_conf(mocker, conf=default_conf)
+    backtest_conf = _make_backtest_conf(mocker, conf=default_conf, datadir=testdatadir)
     backtesting = Backtesting(default_conf)
     backtesting.advise_buy = fun  # Override
     backtesting.advise_sell = fun  # Override
@@ -650,10 +650,11 @@ def test_backtest_only_sell(mocker, default_conf):
     assert results.empty
 
 
-def test_backtest_alternate_buy_sell(default_conf, fee, mocker):
+def test_backtest_alternate_buy_sell(default_conf, fee, mocker, testdatadir):
     mocker.patch('freqtrade.exchange.Exchange.get_fee', fee)
     mocker.patch('freqtrade.optimize.backtesting.file_dump_json', MagicMock())
-    backtest_conf = _make_backtest_conf(mocker, conf=default_conf, pair='UNITTEST/BTC')
+    backtest_conf = _make_backtest_conf(mocker, conf=default_conf,
+                                        pair='UNITTEST/BTC', datadir=testdatadir)
     # We need to enable sell-signal - otherwise it sells on ROI!!
     default_conf['experimental'] = {"use_sell_signal": True}
     default_conf['ticker_interval'] = '1m'
@@ -672,7 +673,7 @@ def test_backtest_alternate_buy_sell(default_conf, fee, mocker):
 
 @pytest.mark.parametrize("pair", ['ADA/BTC', 'LTC/BTC'])
 @pytest.mark.parametrize("tres", [0, 20, 30])
-def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair):
+def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir):
 
     def _trend_alternate_hold(dataframe=None, metadata=None):
         """
@@ -690,7 +691,7 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair):
     patch_exchange(mocker)
 
     pairs = ['ADA/BTC', 'DASH/BTC', 'ETH/BTC', 'LTC/BTC', 'NXT/BTC']
-    data = history.load_data(datadir=None, ticker_interval='5m', pairs=pairs)
+    data = history.load_data(datadir=testdatadir, ticker_interval='5m', pairs=pairs)
     # Only use 500 lines to increase performance
     data = trim_dictlist(data, -500)
 
diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py
index 976cb3d53..4e26a71f7 100644
--- a/freqtrade/tests/optimize/test_hyperopt.py
+++ b/freqtrade/tests/optimize/test_hyperopt.py
@@ -485,8 +485,8 @@ def test_has_space(hyperopt):
     assert hyperopt.has_space('buy')
 
 
-def test_populate_indicators(hyperopt) -> None:
-    tick = load_tickerdata_file(None, 'UNITTEST/BTC', '1m')
+def test_populate_indicators(hyperopt, testdatadir) -> None:
+    tick = load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m')
     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC",
                                                          fill_missing=True)}
     dataframes = hyperopt.backtesting.strategy.tickerdata_to_dataframe(tickerlist)
@@ -499,8 +499,8 @@ def test_populate_indicators(hyperopt) -> None:
     assert 'rsi' in dataframe
 
 
-def test_buy_strategy_generator(hyperopt) -> None:
-    tick = load_tickerdata_file(None, 'UNITTEST/BTC', '1m')
+def test_buy_strategy_generator(hyperopt, testdatadir) -> None:
+    tick = load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m')
     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC",
                                                          fill_missing=True)}
     dataframes = hyperopt.backtesting.strategy.tickerdata_to_dataframe(tickerlist)
diff --git a/freqtrade/tests/strategy/test_interface.py b/freqtrade/tests/strategy/test_interface.py
index 36c9ffcd4..1bd571870 100644
--- a/freqtrade/tests/strategy/test_interface.py
+++ b/freqtrade/tests/strategy/test_interface.py
@@ -103,11 +103,11 @@ def test_get_signal_handles_exceptions(mocker, default_conf):
     assert _STRATEGY.get_signal(exchange, 'ETH/BTC', '5m') == (False, False)
 
 
-def test_tickerdata_to_dataframe(default_conf) -> None:
+def test_tickerdata_to_dataframe(default_conf, testdatadir) -> None:
     strategy = DefaultStrategy(default_conf)
 
     timerange = TimeRange(None, 'line', 0, -100)
-    tick = load_tickerdata_file(None, 'UNITTEST/BTC', '1m', timerange=timerange)
+    tick = load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m', timerange=timerange)
     tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC",
                                                          fill_missing=True)}
     data = strategy.tickerdata_to_dataframe(tickerlist)
diff --git a/freqtrade/tests/test_misc.py b/freqtrade/tests/test_misc.py
index c55083e64..320ed208c 100644
--- a/freqtrade/tests/test_misc.py
+++ b/freqtrade/tests/test_misc.py
@@ -45,16 +45,16 @@ def test_file_dump_json(mocker) -> None:
     assert json_dump.call_count == 1
 
 
-def test_file_load_json(mocker) -> None:
+def test_file_load_json(mocker, testdatadir) -> None:
 
     # 7m .json does not exist
-    ret = file_load_json(pair_data_filename(None, 'UNITTEST/BTC', '7m'))
+    ret = file_load_json(pair_data_filename(testdatadir, 'UNITTEST/BTC', '7m'))
     assert not ret
     # 1m json exists (but no .gz exists)
-    ret = file_load_json(pair_data_filename(None, 'UNITTEST/BTC', '1m'))
+    ret = file_load_json(pair_data_filename(testdatadir, 'UNITTEST/BTC', '1m'))
     assert ret
     # 8 .json is empty and will fail if it's loaded. .json.gz is a copy of 1.json
-    ret = file_load_json(pair_data_filename(None, 'UNITTEST/BTC', '8m'))
+    ret = file_load_json(pair_data_filename(testdatadir, 'UNITTEST/BTC', '8m'))
     assert ret
 
 
diff --git a/freqtrade/tests/test_plotting.py b/freqtrade/tests/test_plotting.py
index e9079fff4..a4abda98b 100644
--- a/freqtrade/tests/test_plotting.py
+++ b/freqtrade/tests/test_plotting.py
@@ -19,8 +19,7 @@ from freqtrade.plot.plotting import (add_indicators, add_profit,
                                      generate_profit_graph, init_plotscript,
                                      plot_profit, plot_trades, store_plot_file)
 from freqtrade.strategy.default_strategy import DefaultStrategy
-from freqtrade.tests.conftest import (get_args, log_has, log_has_re,
-                                      make_testdata_path)
+from freqtrade.tests.conftest import get_args, log_has, log_has_re
 
 
 def fig_generating_mock(fig, *args, **kwargs):
@@ -43,12 +42,12 @@ def generage_empty_figure():
     )
 
 
-def test_init_plotscript(default_conf, mocker):
+def test_init_plotscript(default_conf, mocker, testdatadir):
     default_conf['timerange'] = "20180110-20180112"
     default_conf['trade_source'] = "file"
     default_conf['ticker_interval'] = "5m"
-    default_conf["datadir"] = make_testdata_path(None)
-    default_conf['exportfilename'] = str(make_testdata_path(None) / "backtest-result_test.json")
+    default_conf["datadir"] = testdatadir
+    default_conf['exportfilename'] = str(testdatadir / "backtest-result_test.json")
     ret = init_plotscript(default_conf)
     assert "tickers" in ret
     assert "trades" in ret
@@ -61,12 +60,12 @@ def test_init_plotscript(default_conf, mocker):
     assert "XLM/BTC" in ret["tickers"]
 
 
-def test_add_indicators(default_conf, caplog):
+def test_add_indicators(default_conf, testdatadir, caplog):
     pair = "UNITTEST/BTC"
     timerange = TimeRange(None, 'line', 0, -1000)
 
     data = history.load_pair_history(pair=pair, ticker_interval='1m',
-                                     datadir=None, timerange=timerange)
+                                     datadir=testdatadir, timerange=timerange)
     indicators1 = ["ema10"]
     indicators2 = ["macd"]
 
@@ -94,14 +93,14 @@ def test_add_indicators(default_conf, caplog):
     assert log_has_re(r'Indicator "no_indicator" ignored\..*', caplog)
 
 
-def test_plot_trades(caplog):
+def test_plot_trades(testdatadir, caplog):
     fig1 = generage_empty_figure()
     # nothing happens when no trades are available
     fig = plot_trades(fig1, None)
     assert fig == fig1
     assert log_has("No trades found.", caplog)
     pair = "ADA/BTC"
-    filename = make_testdata_path(None) / "backtest-result_test.json"
+    filename = testdatadir / "backtest-result_test.json"
     trades = load_backtest_data(filename)
     trades = trades.loc[trades['pair'] == pair]
 
@@ -122,7 +121,7 @@ def test_plot_trades(caplog):
     assert trade_sell.marker.color == 'red'
 
 
-def test_generate_candlestick_graph_no_signals_no_trades(default_conf, mocker, caplog):
+def test_generate_candlestick_graph_no_signals_no_trades(default_conf, mocker, testdatadir, caplog):
     row_mock = mocker.patch('freqtrade.plot.plotting.add_indicators',
                             MagicMock(side_effect=fig_generating_mock))
     trades_mock = mocker.patch('freqtrade.plot.plotting.plot_trades',
@@ -131,7 +130,7 @@ def test_generate_candlestick_graph_no_signals_no_trades(default_conf, mocker, c
     pair = "UNITTEST/BTC"
     timerange = TimeRange(None, 'line', 0, -1000)
     data = history.load_pair_history(pair=pair, ticker_interval='1m',
-                                     datadir=None, timerange=timerange)
+                                     datadir=testdatadir, timerange=timerange)
     data['buy'] = 0
     data['sell'] = 0
 
@@ -158,7 +157,7 @@ def test_generate_candlestick_graph_no_signals_no_trades(default_conf, mocker, c
     assert log_has("No sell-signals found.", caplog)
 
 
-def test_generate_candlestick_graph_no_trades(default_conf, mocker):
+def test_generate_candlestick_graph_no_trades(default_conf, mocker, testdatadir):
     row_mock = mocker.patch('freqtrade.plot.plotting.add_indicators',
                             MagicMock(side_effect=fig_generating_mock))
     trades_mock = mocker.patch('freqtrade.plot.plotting.plot_trades',
@@ -166,7 +165,7 @@ def test_generate_candlestick_graph_no_trades(default_conf, mocker):
     pair = 'UNITTEST/BTC'
     timerange = TimeRange(None, 'line', 0, -1000)
     data = history.load_pair_history(pair=pair, ticker_interval='1m',
-                                     datadir=None, timerange=timerange)
+                                     datadir=testdatadir, timerange=timerange)
 
     # Generate buy/sell signals and indicators
     strat = DefaultStrategy(default_conf)
@@ -224,13 +223,13 @@ def test_generate_plot_file(mocker, caplog):
                    caplog)
 
 
-def test_add_profit():
-    filename = make_testdata_path(None) / "backtest-result_test.json"
+def test_add_profit(testdatadir):
+    filename = testdatadir / "backtest-result_test.json"
     bt_data = load_backtest_data(filename)
     timerange = TimeRange.parse_timerange("20180110-20180112")
 
     df = history.load_pair_history(pair="POWR/BTC", ticker_interval='5m',
-                                   datadir=None, timerange=timerange)
+                                   datadir=testdatadir, timerange=timerange)
     fig = generage_empty_figure()
 
     cum_profits = create_cum_profit(df.set_index('date'),
@@ -244,13 +243,13 @@ def test_add_profit():
     assert profits.yaxis == "y2"
 
 
-def test_generate_profit_graph():
-    filename = make_testdata_path(None) / "backtest-result_test.json"
+def test_generate_profit_graph(testdatadir):
+    filename = testdatadir / "backtest-result_test.json"
     trades = load_backtest_data(filename)
     timerange = TimeRange.parse_timerange("20180110-20180112")
     pairs = ["POWR/BTC", "XLM/BTC"]
 
-    tickers = history.load_data(datadir=None,
+    tickers = history.load_data(datadir=testdatadir,
                                 pairs=pairs,
                                 ticker_interval='5m',
                                 timerange=timerange
@@ -294,10 +293,10 @@ def test_start_plot_dataframe(mocker):
     assert called_config['pairs'] == ["ETH/BTC"]
 
 
-def test_analyse_and_plot_pairs(default_conf, mocker, caplog):
+def test_analyse_and_plot_pairs(default_conf, mocker, caplog, testdatadir):
     default_conf['trade_source'] = 'file'
-    default_conf["datadir"] = make_testdata_path(None)
-    default_conf['exportfilename'] = str(make_testdata_path(None) / "backtest-result_test.json")
+    default_conf["datadir"] = testdatadir
+    default_conf['exportfilename'] = str(testdatadir / "backtest-result_test.json")
     default_conf['indicators1'] = ["sma5", "ema10"]
     default_conf['indicators2'] = ["macd"]
     default_conf['pairs'] = ["ETH/BTC", "LTC/BTC"]
@@ -345,10 +344,10 @@ def test_start_plot_profit_error(mocker):
         start_plot_profit(get_args(args))
 
 
-def test_plot_profit(default_conf, mocker, caplog):
+def test_plot_profit(default_conf, mocker, testdatadir, caplog):
     default_conf['trade_source'] = 'file'
-    default_conf["datadir"] = make_testdata_path(None)
-    default_conf['exportfilename'] = str(make_testdata_path(None) / "backtest-result_test.json")
+    default_conf["datadir"] = testdatadir
+    default_conf['exportfilename'] = str(testdatadir / "backtest-result_test.json")
     default_conf['pairs'] = ["ETH/BTC", "LTC/BTC"]
 
     profit_mock = MagicMock()

From 972b8a17264770963d48c333a7fd92c69a61d2ee Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 7 Sep 2019 21:06:20 +0200
Subject: [PATCH 0421/3421] Remove defaulting to test_data folder when no
 datadir is present

---
 freqtrade/data/dataprovider.py               |  3 +--
 freqtrade/data/history.py                    | 22 +++++++-------------
 freqtrade/edge/__init__.py                   |  2 +-
 freqtrade/optimize/backtesting.py            |  2 +-
 freqtrade/optimize/hyperopt.py               |  2 +-
 freqtrade/tests/conftest.py                  |  3 ++-
 freqtrade/tests/data/test_dataprovider.py    |  1 -
 freqtrade/tests/edge/test_edge.py            |  3 ---
 freqtrade/tests/optimize/test_backtesting.py |  4 ++--
 9 files changed, 16 insertions(+), 26 deletions(-)

diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py
index 5b71c21a8..7e2a6b407 100644
--- a/freqtrade/data/dataprovider.py
+++ b/freqtrade/data/dataprovider.py
@@ -66,8 +66,7 @@ class DataProvider():
         return load_pair_history(pair=pair,
                                  ticker_interval=ticker_interval or self._config['ticker_interval'],
                                  refresh_pairs=False,
-                                 datadir=Path(self._config['datadir']) if self._config.get(
-                                     'datadir') else None
+                                 datadir=Path(self._config['datadir'])
                                  )
 
     def get_pair_dataframe(self, pair: str, ticker_interval: str = None) -> DataFrame:
diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index aff9f5c74..a71dc373c 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -57,7 +57,7 @@ def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]:
     return tickerlist[start_index:stop_index]
 
 
-def load_tickerdata_file(datadir: Optional[Path], pair: str, ticker_interval: str,
+def load_tickerdata_file(datadir: Path, pair: str, ticker_interval: str,
                          timerange: Optional[TimeRange] = None) -> Optional[list]:
     """
     Load a pair from file, either .json.gz or .json
@@ -73,7 +73,7 @@ def load_tickerdata_file(datadir: Optional[Path], pair: str, ticker_interval: st
     return pairdata
 
 
-def store_tickerdata_file(datadir: Optional[Path], pair: str,
+def store_tickerdata_file(datadir: Path, pair: str,
                           ticker_interval: str, data: list, is_zip: bool = False):
     """
     Stores tickerdata to file
@@ -84,7 +84,7 @@ def store_tickerdata_file(datadir: Optional[Path], pair: str,
 
 def load_pair_history(pair: str,
                       ticker_interval: str,
-                      datadir: Optional[Path],
+                      datadir: Path,
                       timerange: TimeRange = TimeRange(None, None, 0, 0),
                       refresh_pairs: bool = False,
                       exchange: Optional[Exchange] = None,
@@ -135,7 +135,7 @@ def load_pair_history(pair: str,
         return None
 
 
-def load_data(datadir: Optional[Path],
+def load_data(datadir: Path,
               ticker_interval: str,
               pairs: List[str],
               refresh_pairs: bool = False,
@@ -172,19 +172,13 @@ def load_data(datadir: Optional[Path],
     return result
 
 
-def make_testdata_path(datadir: Optional[Path]) -> Path:
-    """Return the path where testdata files are stored"""
-    return datadir or (Path(__file__).parent.parent / "tests" / "testdata").resolve()
-
-
-def pair_data_filename(datadir: Optional[Path], pair: str, ticker_interval: str) -> Path:
-    path = make_testdata_path(datadir)
+def pair_data_filename(datadir: Path, pair: str, ticker_interval: str) -> Path:
     pair_s = pair.replace("/", "_")
-    filename = path.joinpath(f'{pair_s}-{ticker_interval}.json')
+    filename = datadir.joinpath(f'{pair_s}-{ticker_interval}.json')
     return filename
 
 
-def load_cached_data_for_updating(datadir: Optional[Path], pair: str, ticker_interval: str,
+def load_cached_data_for_updating(datadir: Path, pair: str, ticker_interval: str,
                                   timerange: Optional[TimeRange]) -> Tuple[List[Any],
                                                                            Optional[int]]:
     """
@@ -224,7 +218,7 @@ def load_cached_data_for_updating(datadir: Optional[Path], pair: str, ticker_int
     return (data, since_ms)
 
 
-def download_pair_history(datadir: Optional[Path],
+def download_pair_history(datadir: Path,
                           exchange: Optional[Exchange],
                           pair: str,
                           ticker_interval: str = '5m',
diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py
index 2d3097ec4..807fd8825 100644
--- a/freqtrade/edge/__init__.py
+++ b/freqtrade/edge/__init__.py
@@ -93,7 +93,7 @@ class Edge():
         logger.info('Using local backtesting data (using whitelist in given config) ...')
 
         data = history.load_data(
-            datadir=Path(self.config['datadir']) if self.config.get('datadir') else None,
+            datadir=Path(self.config['datadir']),
             pairs=pairs,
             ticker_interval=self.strategy.ticker_interval,
             refresh_pairs=self._refresh_pairs,
diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py
index 4fba47243..708b60144 100644
--- a/freqtrade/optimize/backtesting.py
+++ b/freqtrade/optimize/backtesting.py
@@ -407,7 +407,7 @@ class Backtesting(object):
         timerange = TimeRange.parse_timerange(None if self.config.get(
             'timerange') is None else str(self.config.get('timerange')))
         data = history.load_data(
-            datadir=Path(self.config['datadir']) if self.config.get('datadir') else None,
+            datadir=Path(self.config['datadir']),
             pairs=pairs,
             ticker_interval=self.ticker_interval,
             refresh_pairs=self.config.get('refresh_pairs', False),
diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py
index eaa9ced7d..bdd0ba258 100644
--- a/freqtrade/optimize/hyperopt.py
+++ b/freqtrade/optimize/hyperopt.py
@@ -349,7 +349,7 @@ class Hyperopt:
         timerange = TimeRange.parse_timerange(None if self.config.get(
             'timerange') is None else str(self.config.get('timerange')))
         data = load_data(
-            datadir=Path(self.config['datadir']) if self.config.get('datadir') else None,
+            datadir=Path(self.config['datadir']),
             pairs=self.config['exchange']['pair_whitelist'],
             ticker_interval=self.backtesting.ticker_interval,
             refresh_pairs=self.config.get('refresh_pairs', False),
diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py
index e7b8b386a..81358e003 100644
--- a/freqtrade/tests/conftest.py
+++ b/freqtrade/tests/conftest.py
@@ -182,7 +182,7 @@ def init_persistence(default_conf):
 
 
 @pytest.fixture(scope="function")
-def default_conf():
+def default_conf(testdatadir):
     """ Returns validated configuration suitable for most tests """
     configuration = {
         "max_open_trades": 1,
@@ -237,6 +237,7 @@ def default_conf():
             "token": "token",
             "chat_id": "0"
         },
+        "datadir": str(testdatadir),
         "initial_state": "running",
         "db_url": "sqlite://",
         "user_data_dir": Path("user_data"),
diff --git a/freqtrade/tests/data/test_dataprovider.py b/freqtrade/tests/data/test_dataprovider.py
index 2272f69a3..441e242f8 100644
--- a/freqtrade/tests/data/test_dataprovider.py
+++ b/freqtrade/tests/data/test_dataprovider.py
@@ -45,7 +45,6 @@ def test_historic_ohlcv(mocker, default_conf, ticker_history):
     data = dp.historic_ohlcv("UNITTEST/BTC", "5m")
     assert isinstance(data, DataFrame)
     assert historymock.call_count == 1
-    assert historymock.call_args_list[0][1]["datadir"] is None
     assert historymock.call_args_list[0][1]["refresh_pairs"] is False
     assert historymock.call_args_list[0][1]["ticker_interval"] == "5m"
 
diff --git a/freqtrade/tests/edge/test_edge.py b/freqtrade/tests/edge/test_edge.py
index 09fa1d93e..d30285a95 100644
--- a/freqtrade/tests/edge/test_edge.py
+++ b/freqtrade/tests/edge/test_edge.py
@@ -291,7 +291,6 @@ def mocked_load_data(datadir, pairs=[], ticker_interval='0m', refresh_pairs=Fals
 
 
 def test_edge_process_downloaded_data(mocker, edge_conf):
-    edge_conf['datadir'] = None
     freqtrade = get_patched_freqtradebot(mocker, edge_conf)
     mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.001))
     mocker.patch('freqtrade.data.history.load_data', mocked_load_data)
@@ -303,7 +302,6 @@ def test_edge_process_downloaded_data(mocker, edge_conf):
 
 
 def test_edge_process_no_data(mocker, edge_conf, caplog):
-    edge_conf['datadir'] = None
     freqtrade = get_patched_freqtradebot(mocker, edge_conf)
     mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.001))
     mocker.patch('freqtrade.data.history.load_data', MagicMock(return_value={}))
@@ -316,7 +314,6 @@ def test_edge_process_no_data(mocker, edge_conf, caplog):
 
 
 def test_edge_process_no_trades(mocker, edge_conf, caplog):
-    edge_conf['datadir'] = None
     freqtrade = get_patched_freqtradebot(mocker, edge_conf)
     mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.001))
     mocker.patch('freqtrade.data.history.load_data', mocked_load_data)
diff --git a/freqtrade/tests/optimize/test_backtesting.py b/freqtrade/tests/optimize/test_backtesting.py
index 8e6459d8a..b1b6dfa06 100644
--- a/freqtrade/tests/optimize/test_backtesting.py
+++ b/freqtrade/tests/optimize/test_backtesting.py
@@ -489,7 +489,7 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None:
         assert log_has(line, caplog)
 
 
-def test_backtesting_start_no_data(default_conf, mocker, caplog) -> None:
+def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> None:
     def get_timeframe(input1):
         return Arrow(2017, 11, 14, 21, 17), Arrow(2017, 11, 14, 22, 59)
 
@@ -505,7 +505,7 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog) -> None:
 
     default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC']
     default_conf['ticker_interval'] = "1m"
-    default_conf['datadir'] = None
+    default_conf['datadir'] = testdatadir
     default_conf['export'] = None
     default_conf['timerange'] = '20180101-20180102'
 

From bd2ecf8ce3e0f1a46be38a77b11b2ece2e9c9548 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 7 Sep 2019 21:13:05 +0200
Subject: [PATCH 0422/3421] Add testdatadir to missed test

---
 freqtrade/tests/data/test_history.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/freqtrade/tests/data/test_history.py b/freqtrade/tests/data/test_history.py
index 43429031c..252c73a4e 100644
--- a/freqtrade/tests/data/test_history.py
+++ b/freqtrade/tests/data/test_history.py
@@ -134,12 +134,12 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog,
     _clean_test_file(file)
 
 
-def test_load_data_live(default_conf, mocker, caplog) -> None:
+def test_load_data_live(default_conf, mocker, caplog, testdatadir) -> None:
     refresh_mock = MagicMock()
     mocker.patch("freqtrade.exchange.Exchange.refresh_latest_ohlcv", refresh_mock)
     exchange = get_patched_exchange(mocker, default_conf)
 
-    history.load_data(datadir=None, ticker_interval='5m',
+    history.load_data(datadir=testdatadir, ticker_interval='5m',
                       pairs=['UNITTEST/BTC', 'UNITTEST2/BTC'],
                       live=True,
                       exchange=exchange)
@@ -148,11 +148,11 @@ def test_load_data_live(default_conf, mocker, caplog) -> None:
     assert log_has('Live: Downloading data for all defined pairs ...', caplog)
 
 
-def test_load_data_live_noexchange(default_conf, mocker, caplog) -> None:
+def test_load_data_live_noexchange(default_conf, mocker, caplog, testdatadir) -> None:
 
     with pytest.raises(OperationalException,
                        match=r'Exchange needs to be initialized when using live data.'):
-        history.load_data(datadir=None, ticker_interval='5m',
+        history.load_data(datadir=testdatadir, ticker_interval='5m',
                           pairs=['UNITTEST/BTC', 'UNITTEST2/BTC'],
                           exchange=None,
                           live=True,

From 2b00a5d90a168df621731ea30687597ef2f44b12 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Sun, 8 Sep 2019 02:43:02 +0300
Subject: [PATCH 0423/3421] Get rid of import_strategy()

---
 freqtrade/optimize/__init__.py           | 10 ------
 freqtrade/resolvers/strategy_resolver.py |  8 +----
 freqtrade/strategy/__init__.py           | 42 ------------------------
 3 files changed, 1 insertion(+), 59 deletions(-)

diff --git a/freqtrade/optimize/__init__.py b/freqtrade/optimize/__init__.py
index 2c7c42c4d..973ea1ff5 100644
--- a/freqtrade/optimize/__init__.py
+++ b/freqtrade/optimize/__init__.py
@@ -25,16 +25,6 @@ def setup_configuration(args: Namespace, method: RunMode) -> Dict[str, Any]:
             raise DependencyException('stake amount could not be "%s" for backtesting' %
                                       constants.UNLIMITED_STAKE_AMOUNT)
 
-    if method == RunMode.HYPEROPT:
-        # Special cases for Hyperopt
-        if config.get('strategy') and config.get('strategy') != 'DefaultStrategy':
-            logger.error("Please don't use --strategy for hyperopt.")
-            logger.error(
-                "Read the documentation at "
-                "https://github.com/freqtrade/freqtrade/blob/develop/docs/hyperopt.md "
-                "to understand how to configure hyperopt.")
-            raise DependencyException("--strategy configured but not supported for hyperopt")
-
     return config
 
 
diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py
index 514e9f22b..ca7e1165b 100644
--- a/freqtrade/resolvers/strategy_resolver.py
+++ b/freqtrade/resolvers/strategy_resolver.py
@@ -13,7 +13,6 @@ from typing import Dict, Optional
 
 from freqtrade import constants, OperationalException
 from freqtrade.resolvers import IResolver
-from freqtrade.strategy import import_strategy
 from freqtrade.strategy.interface import IStrategy
 
 logger = logging.getLogger(__name__)
@@ -158,12 +157,7 @@ class StrategyResolver(IResolver):
                                      strategy._sell_fun_len]]):
                 strategy.INTERFACE_VERSION = 1
 
-            try:
-                return import_strategy(strategy, config=config)
-            except TypeError as e:
-                logger.warning(
-                    f"Impossible to load strategy '{strategy_name}'. "
-                    f"Error: {e}")
+            return strategy
 
         raise OperationalException(
             f"Impossible to load Strategy '{strategy_name}'. This class does not exist "
diff --git a/freqtrade/strategy/__init__.py b/freqtrade/strategy/__init__.py
index c62bfe5dc..3fcc87ff3 100644
--- a/freqtrade/strategy/__init__.py
+++ b/freqtrade/strategy/__init__.py
@@ -1,45 +1,3 @@
-import logging
-import sys
-from copy import deepcopy
-
 from freqtrade.strategy.interface import IStrategy
 # Import Default-Strategy to have hyperopt correctly resolve
 from freqtrade.strategy.default_strategy import DefaultStrategy  # noqa: F401
-
-
-logger = logging.getLogger(__name__)
-
-
-def import_strategy(strategy: IStrategy, config: dict) -> IStrategy:
-    """
-    Imports given Strategy instance to global scope
-    of freqtrade.strategy and returns an instance of it
-    """
-
-    # Copy all attributes from base class and class
-    comb = {**strategy.__class__.__dict__, **strategy.__dict__}
-
-    # Delete '_abc_impl' from dict as deepcopy fails on 3.7 with
-    # `TypeError: can't pickle _abc_data objects``
-    # This will only apply to python 3.7
-    if sys.version_info.major == 3 and sys.version_info.minor == 7 and '_abc_impl' in comb:
-        del comb['_abc_impl']
-
-    attr = deepcopy(comb)
-
-    # Adjust module name
-    attr['__module__'] = 'freqtrade.strategy'
-
-    name = strategy.__class__.__name__
-    clazz = type(name, (IStrategy,), attr)
-
-    logger.debug(
-        'Imported strategy %s.%s as %s.%s',
-        strategy.__module__, strategy.__class__.__name__,
-        clazz.__module__, strategy.__class__.__name__,
-    )
-
-    # Modify global scope to declare class
-    globals()[name] = clazz
-
-    return clazz(config)

From 45cfdbbda7dc05f38cde8d411bde69838fcf1b9e Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Sun, 8 Sep 2019 03:10:01 +0300
Subject: [PATCH 0424/3421] Make flake happy

---
 freqtrade/strategy/__init__.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/freqtrade/strategy/__init__.py b/freqtrade/strategy/__init__.py
index 3fcc87ff3..8e5dab975 100644
--- a/freqtrade/strategy/__init__.py
+++ b/freqtrade/strategy/__init__.py
@@ -1,3 +1,3 @@
-from freqtrade.strategy.interface import IStrategy
+from freqtrade.strategy.interface import IStrategy  # noqa: F401
 # Import Default-Strategy to have hyperopt correctly resolve
 from freqtrade.strategy.default_strategy import DefaultStrategy  # noqa: F401

From 865e0d3af94ddbfa9195373ed9949bdb31659862 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Sun, 8 Sep 2019 03:19:21 +0300
Subject: [PATCH 0425/3421] Adjust tests: removed tests for/with
 import_strategy()

---
 freqtrade/tests/optimize/test_hyperopt.py | 20 +------------
 freqtrade/tests/strategy/test_strategy.py | 34 -----------------------
 2 files changed, 1 insertion(+), 53 deletions(-)

diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/freqtrade/tests/optimize/test_hyperopt.py
index 976cb3d53..fe7d9ccc4 100644
--- a/freqtrade/tests/optimize/test_hyperopt.py
+++ b/freqtrade/tests/optimize/test_hyperopt.py
@@ -9,7 +9,7 @@ from arrow import Arrow
 from filelock import Timeout
 from pathlib import Path
 
-from freqtrade import DependencyException, OperationalException
+from freqtrade import OperationalException
 from freqtrade.data.converter import parse_ticker_dataframe
 from freqtrade.data.history import load_tickerdata_file
 from freqtrade.optimize import setup_configuration, start_hyperopt
@@ -246,24 +246,6 @@ def test_start_no_data(mocker, default_conf, caplog) -> None:
     assert log_has('No data found. Terminating.', caplog)
 
 
-def test_start_failure(mocker, default_conf, caplog) -> None:
-    start_mock = MagicMock()
-    patched_configuration_load_config_file(mocker, default_conf)
-    mocker.patch('freqtrade.optimize.hyperopt.Hyperopt.start', start_mock)
-    patch_exchange(mocker)
-
-    args = [
-        '--config', 'config.json',
-        '--strategy', 'SampleStrategy',
-        'hyperopt',
-        '--epochs', '5'
-    ]
-    args = get_args(args)
-    with pytest.raises(DependencyException):
-        start_hyperopt(args)
-    assert log_has("Please don't use --strategy for hyperopt.", caplog)
-
-
 def test_start_filelock(mocker, default_conf, caplog) -> None:
     start_mock = MagicMock(side_effect=Timeout(Hyperopt.get_lock_filename(default_conf)))
     patched_configuration_load_config_file(mocker, default_conf)
diff --git a/freqtrade/tests/strategy/test_strategy.py b/freqtrade/tests/strategy/test_strategy.py
index cd1102ead..24ec830a0 100644
--- a/freqtrade/tests/strategy/test_strategy.py
+++ b/freqtrade/tests/strategy/test_strategy.py
@@ -5,40 +5,16 @@ import warnings
 from base64 import urlsafe_b64encode
 from os import path
 from pathlib import Path
-from unittest.mock import Mock
 
 import pytest
 from pandas import DataFrame
 
 from freqtrade import OperationalException
 from freqtrade.resolvers import StrategyResolver
-from freqtrade.strategy import import_strategy
-from freqtrade.strategy.default_strategy import DefaultStrategy
 from freqtrade.strategy.interface import IStrategy
 from freqtrade.tests.conftest import log_has, log_has_re
 
 
-def test_import_strategy(caplog):
-    caplog.set_level(logging.DEBUG)
-    default_config = {}
-
-    strategy = DefaultStrategy(default_config)
-    strategy.some_method = lambda *args, **kwargs: 42
-
-    assert strategy.__module__ == 'freqtrade.strategy.default_strategy'
-    assert strategy.some_method() == 42
-
-    imported_strategy = import_strategy(strategy, default_config)
-
-    assert dir(strategy) == dir(imported_strategy)
-
-    assert imported_strategy.__module__ == 'freqtrade.strategy'
-    assert imported_strategy.some_method() == 42
-
-    assert log_has('Imported strategy freqtrade.strategy.default_strategy.DefaultStrategy '
-                   'as freqtrade.strategy.DefaultStrategy', caplog)
-
-
 def test_search_strategy():
     default_config = {}
     default_location = Path(__file__).parent.parent.parent.joinpath('strategy').resolve()
@@ -96,16 +72,6 @@ def test_load_not_found_strategy(default_conf):
         strategy._load_strategy(strategy_name='NotFoundStrategy', config=default_conf)
 
 
-def test_load_staticmethod_importerror(mocker, caplog, default_conf):
-    mocker.patch("freqtrade.resolvers.strategy_resolver.import_strategy", Mock(
-        side_effect=TypeError("can't pickle staticmethod objects")))
-    with pytest.raises(OperationalException,
-                       match=r"Impossible to load Strategy 'DefaultStrategy'. "
-                             r"This class does not exist or contains Python code errors."):
-        StrategyResolver(default_conf)
-    assert log_has_re(r".*Error: can't pickle staticmethod objects", caplog)
-
-
 def test_strategy(result, default_conf):
     default_conf.update({'strategy': 'DefaultStrategy'})
 

From bb2d8fefd74ee09304dbe22f4ff64ed3e684aa00 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 13 Dec 2018 19:28:20 +0100
Subject: [PATCH 0426/3421] Enhance setup.py

---
 setup.py | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/setup.py b/setup.py
index b48bddd56..307be079f 100644
--- a/setup.py
+++ b/setup.py
@@ -6,7 +6,14 @@ if version_info.major == 3 and version_info.minor < 6 or \
     print('Your Python interpreter must be 3.6 or greater!')
     exit(1)
 
-from freqtrade import __version__
+from pathlib import Path  # noqa: E402
+from freqtrade import __version__  # noqa: E402
+
+
+readme_file = Path(__file__).parent / "README.md"
+readme_long = "Crypto Trading Bot"
+if readme_file.is_file():
+    readme_long = (Path(__file__).parent / "README.md").read_text()
 
 # Requirements used for submodules
 api = ['flask']
@@ -36,6 +43,8 @@ all_extra = api + plot + develop + jupyter
 setup(name='freqtrade',
       version=__version__,
       description='Crypto Trading Bot',
+      long_description=readme_long,
+      long_description_content_type="text/markdown",
       url='https://github.com/freqtrade/freqtrade',
       author='gcarq and contributors',
       author_email='michael.egger@tsn.at',

From 13932f55f576b5f31198f290310c3e07357611e5 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 8 Sep 2019 14:02:32 +0200
Subject: [PATCH 0427/3421] Fix random test failures

---
 freqtrade/strategy/__init__.py | 2 --
 1 file changed, 2 deletions(-)

diff --git a/freqtrade/strategy/__init__.py b/freqtrade/strategy/__init__.py
index 8e5dab975..40a4a0bea 100644
--- a/freqtrade/strategy/__init__.py
+++ b/freqtrade/strategy/__init__.py
@@ -1,3 +1 @@
 from freqtrade.strategy.interface import IStrategy  # noqa: F401
-# Import Default-Strategy to have hyperopt correctly resolve
-from freqtrade.strategy.default_strategy import DefaultStrategy  # noqa: F401

From 65a516e2298089fd50798dc5445f8c0f0e23609c Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 8 Sep 2019 09:42:28 +0200
Subject: [PATCH 0428/3421] Move tests out of freqtrade module

---
 {freqtrade/tests => tests}/__init__.py              |   0
 .../tests => tests}/config_test_comments.json       |   0
 {freqtrade/tests => tests}/conftest.py              |   0
 {freqtrade/tests => tests}/data/__init__.py         |   0
 {freqtrade/tests => tests}/data/test_btanalysis.py  |   0
 {freqtrade/tests => tests}/data/test_converter.py   |   0
 .../tests => tests}/data/test_dataprovider.py       |   0
 {freqtrade/tests => tests}/data/test_history.py     |   0
 {freqtrade/tests => tests}/edge/__init__.py         |   0
 {freqtrade/tests => tests}/edge/test_edge.py        |   0
 {freqtrade/tests => tests}/exchange/__init__.py     |   0
 {freqtrade/tests => tests}/exchange/test_binance.py |   0
 .../tests => tests}/exchange/test_exchange.py       |   0
 {freqtrade/tests => tests}/exchange/test_kraken.py  |   0
 {freqtrade/tests => tests}/optimize/__init__.py     |   0
 .../optimize/test_backtest_detail.py                |   0
 .../tests => tests}/optimize/test_backtesting.py    |   0
 .../tests => tests}/optimize/test_edge_cli.py       |   0
 .../tests => tests}/optimize/test_hyperopt.py       |   0
 {freqtrade/tests => tests}/pairlist/__init__.py     |   0
 .../tests => tests}/pairlist/test_pairlist.py       |   0
 {freqtrade/tests => tests}/rpc/__init__.py          |   0
 {freqtrade/tests => tests}/rpc/test_fiat_convert.py |   0
 {freqtrade/tests => tests}/rpc/test_rpc.py          |   0
 .../tests => tests}/rpc/test_rpc_apiserver.py       |   0
 {freqtrade/tests => tests}/rpc/test_rpc_manager.py  |   0
 {freqtrade/tests => tests}/rpc/test_rpc_telegram.py |   0
 {freqtrade/tests => tests}/rpc/test_rpc_webhook.py  |   0
 {freqtrade/tests => tests}/strategy/__init__.py     |   0
 .../tests => tests}/strategy/legacy_strategy.py     |   0
 .../strategy/test_default_strategy.py               |   0
 .../tests => tests}/strategy/test_interface.py      |   0
 .../tests => tests}/strategy/test_strategy.py       |   0
 {freqtrade/tests => tests}/test_arguments.py        |   0
 {freqtrade/tests => tests}/test_configuration.py    |   0
 {freqtrade/tests => tests}/test_freqtradebot.py     |   0
 .../tests => tests}/test_indicator_helpers.py       |   0
 {freqtrade/tests => tests}/test_main.py             |   0
 {freqtrade/tests => tests}/test_misc.py             |   0
 {freqtrade/tests => tests}/test_persistence.py      |   0
 {freqtrade/tests => tests}/test_plotting.py         |   0
 {freqtrade/tests => tests}/test_talib.py            |   0
 {freqtrade/tests => tests}/test_timerange.py        |   0
 {freqtrade/tests => tests}/test_utils.py            |   0
 {freqtrade/tests => tests}/test_wallets.py          |   0
 {freqtrade/tests => tests}/testdata/ADA_BTC-1m.json |   0
 {freqtrade/tests => tests}/testdata/ADA_BTC-5m.json |   0
 .../tests => tests}/testdata/DASH_BTC-1m.json       |   0
 .../tests => tests}/testdata/DASH_BTC-5m.json       |   0
 {freqtrade/tests => tests}/testdata/ETC_BTC-1m.json |   0
 {freqtrade/tests => tests}/testdata/ETC_BTC-5m.json |   0
 {freqtrade/tests => tests}/testdata/ETH_BTC-1m.json |   0
 {freqtrade/tests => tests}/testdata/ETH_BTC-5m.json |   0
 {freqtrade/tests => tests}/testdata/LTC_BTC-1m.json |   0
 {freqtrade/tests => tests}/testdata/LTC_BTC-5m.json |   0
 {freqtrade/tests => tests}/testdata/NXT_BTC-1m.json |   0
 {freqtrade/tests => tests}/testdata/NXT_BTC-5m.json |   0
 .../tests => tests}/testdata/POWR_BTC-1m.json       |   0
 .../tests => tests}/testdata/POWR_BTC-5m.json       |   0
 .../tests => tests}/testdata/UNITTEST_BTC-1m.json   |   0
 .../tests => tests}/testdata/UNITTEST_BTC-30m.json  |   0
 .../tests => tests}/testdata/UNITTEST_BTC-5m.json   |   0
 .../tests => tests}/testdata/UNITTEST_BTC-8m.json   |   0
 .../testdata/UNITTEST_BTC-8m.json.gz                | Bin
 {freqtrade/tests => tests}/testdata/XLM_BTC-1m.json |   0
 {freqtrade/tests => tests}/testdata/XLM_BTC-5m.json |   0
 {freqtrade/tests => tests}/testdata/XMR_BTC-1m.json |   0
 {freqtrade/tests => tests}/testdata/XMR_BTC-5m.json |   0
 {freqtrade/tests => tests}/testdata/ZEC_BTC-1m.json |   0
 {freqtrade/tests => tests}/testdata/ZEC_BTC-5m.json |   0
 .../testdata/backtest-result_test.json              |   0
 {freqtrade/tests => tests}/testdata/pairs.json      |   0
 72 files changed, 0 insertions(+), 0 deletions(-)
 rename {freqtrade/tests => tests}/__init__.py (100%)
 rename {freqtrade/tests => tests}/config_test_comments.json (100%)
 rename {freqtrade/tests => tests}/conftest.py (100%)
 rename {freqtrade/tests => tests}/data/__init__.py (100%)
 rename {freqtrade/tests => tests}/data/test_btanalysis.py (100%)
 rename {freqtrade/tests => tests}/data/test_converter.py (100%)
 rename {freqtrade/tests => tests}/data/test_dataprovider.py (100%)
 rename {freqtrade/tests => tests}/data/test_history.py (100%)
 rename {freqtrade/tests => tests}/edge/__init__.py (100%)
 rename {freqtrade/tests => tests}/edge/test_edge.py (100%)
 rename {freqtrade/tests => tests}/exchange/__init__.py (100%)
 rename {freqtrade/tests => tests}/exchange/test_binance.py (100%)
 rename {freqtrade/tests => tests}/exchange/test_exchange.py (100%)
 rename {freqtrade/tests => tests}/exchange/test_kraken.py (100%)
 rename {freqtrade/tests => tests}/optimize/__init__.py (100%)
 rename {freqtrade/tests => tests}/optimize/test_backtest_detail.py (100%)
 rename {freqtrade/tests => tests}/optimize/test_backtesting.py (100%)
 rename {freqtrade/tests => tests}/optimize/test_edge_cli.py (100%)
 rename {freqtrade/tests => tests}/optimize/test_hyperopt.py (100%)
 rename {freqtrade/tests => tests}/pairlist/__init__.py (100%)
 rename {freqtrade/tests => tests}/pairlist/test_pairlist.py (100%)
 rename {freqtrade/tests => tests}/rpc/__init__.py (100%)
 rename {freqtrade/tests => tests}/rpc/test_fiat_convert.py (100%)
 rename {freqtrade/tests => tests}/rpc/test_rpc.py (100%)
 rename {freqtrade/tests => tests}/rpc/test_rpc_apiserver.py (100%)
 rename {freqtrade/tests => tests}/rpc/test_rpc_manager.py (100%)
 rename {freqtrade/tests => tests}/rpc/test_rpc_telegram.py (100%)
 rename {freqtrade/tests => tests}/rpc/test_rpc_webhook.py (100%)
 rename {freqtrade/tests => tests}/strategy/__init__.py (100%)
 rename {freqtrade/tests => tests}/strategy/legacy_strategy.py (100%)
 rename {freqtrade/tests => tests}/strategy/test_default_strategy.py (100%)
 rename {freqtrade/tests => tests}/strategy/test_interface.py (100%)
 rename {freqtrade/tests => tests}/strategy/test_strategy.py (100%)
 rename {freqtrade/tests => tests}/test_arguments.py (100%)
 rename {freqtrade/tests => tests}/test_configuration.py (100%)
 rename {freqtrade/tests => tests}/test_freqtradebot.py (100%)
 rename {freqtrade/tests => tests}/test_indicator_helpers.py (100%)
 rename {freqtrade/tests => tests}/test_main.py (100%)
 rename {freqtrade/tests => tests}/test_misc.py (100%)
 rename {freqtrade/tests => tests}/test_persistence.py (100%)
 rename {freqtrade/tests => tests}/test_plotting.py (100%)
 rename {freqtrade/tests => tests}/test_talib.py (100%)
 rename {freqtrade/tests => tests}/test_timerange.py (100%)
 rename {freqtrade/tests => tests}/test_utils.py (100%)
 rename {freqtrade/tests => tests}/test_wallets.py (100%)
 rename {freqtrade/tests => tests}/testdata/ADA_BTC-1m.json (100%)
 rename {freqtrade/tests => tests}/testdata/ADA_BTC-5m.json (100%)
 rename {freqtrade/tests => tests}/testdata/DASH_BTC-1m.json (100%)
 rename {freqtrade/tests => tests}/testdata/DASH_BTC-5m.json (100%)
 rename {freqtrade/tests => tests}/testdata/ETC_BTC-1m.json (100%)
 rename {freqtrade/tests => tests}/testdata/ETC_BTC-5m.json (100%)
 rename {freqtrade/tests => tests}/testdata/ETH_BTC-1m.json (100%)
 rename {freqtrade/tests => tests}/testdata/ETH_BTC-5m.json (100%)
 rename {freqtrade/tests => tests}/testdata/LTC_BTC-1m.json (100%)
 rename {freqtrade/tests => tests}/testdata/LTC_BTC-5m.json (100%)
 rename {freqtrade/tests => tests}/testdata/NXT_BTC-1m.json (100%)
 rename {freqtrade/tests => tests}/testdata/NXT_BTC-5m.json (100%)
 rename {freqtrade/tests => tests}/testdata/POWR_BTC-1m.json (100%)
 rename {freqtrade/tests => tests}/testdata/POWR_BTC-5m.json (100%)
 rename {freqtrade/tests => tests}/testdata/UNITTEST_BTC-1m.json (100%)
 rename {freqtrade/tests => tests}/testdata/UNITTEST_BTC-30m.json (100%)
 rename {freqtrade/tests => tests}/testdata/UNITTEST_BTC-5m.json (100%)
 rename {freqtrade/tests => tests}/testdata/UNITTEST_BTC-8m.json (100%)
 rename {freqtrade/tests => tests}/testdata/UNITTEST_BTC-8m.json.gz (100%)
 rename {freqtrade/tests => tests}/testdata/XLM_BTC-1m.json (100%)
 rename {freqtrade/tests => tests}/testdata/XLM_BTC-5m.json (100%)
 rename {freqtrade/tests => tests}/testdata/XMR_BTC-1m.json (100%)
 rename {freqtrade/tests => tests}/testdata/XMR_BTC-5m.json (100%)
 rename {freqtrade/tests => tests}/testdata/ZEC_BTC-1m.json (100%)
 rename {freqtrade/tests => tests}/testdata/ZEC_BTC-5m.json (100%)
 rename {freqtrade/tests => tests}/testdata/backtest-result_test.json (100%)
 rename {freqtrade/tests => tests}/testdata/pairs.json (100%)

diff --git a/freqtrade/tests/__init__.py b/tests/__init__.py
similarity index 100%
rename from freqtrade/tests/__init__.py
rename to tests/__init__.py
diff --git a/freqtrade/tests/config_test_comments.json b/tests/config_test_comments.json
similarity index 100%
rename from freqtrade/tests/config_test_comments.json
rename to tests/config_test_comments.json
diff --git a/freqtrade/tests/conftest.py b/tests/conftest.py
similarity index 100%
rename from freqtrade/tests/conftest.py
rename to tests/conftest.py
diff --git a/freqtrade/tests/data/__init__.py b/tests/data/__init__.py
similarity index 100%
rename from freqtrade/tests/data/__init__.py
rename to tests/data/__init__.py
diff --git a/freqtrade/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py
similarity index 100%
rename from freqtrade/tests/data/test_btanalysis.py
rename to tests/data/test_btanalysis.py
diff --git a/freqtrade/tests/data/test_converter.py b/tests/data/test_converter.py
similarity index 100%
rename from freqtrade/tests/data/test_converter.py
rename to tests/data/test_converter.py
diff --git a/freqtrade/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py
similarity index 100%
rename from freqtrade/tests/data/test_dataprovider.py
rename to tests/data/test_dataprovider.py
diff --git a/freqtrade/tests/data/test_history.py b/tests/data/test_history.py
similarity index 100%
rename from freqtrade/tests/data/test_history.py
rename to tests/data/test_history.py
diff --git a/freqtrade/tests/edge/__init__.py b/tests/edge/__init__.py
similarity index 100%
rename from freqtrade/tests/edge/__init__.py
rename to tests/edge/__init__.py
diff --git a/freqtrade/tests/edge/test_edge.py b/tests/edge/test_edge.py
similarity index 100%
rename from freqtrade/tests/edge/test_edge.py
rename to tests/edge/test_edge.py
diff --git a/freqtrade/tests/exchange/__init__.py b/tests/exchange/__init__.py
similarity index 100%
rename from freqtrade/tests/exchange/__init__.py
rename to tests/exchange/__init__.py
diff --git a/freqtrade/tests/exchange/test_binance.py b/tests/exchange/test_binance.py
similarity index 100%
rename from freqtrade/tests/exchange/test_binance.py
rename to tests/exchange/test_binance.py
diff --git a/freqtrade/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
similarity index 100%
rename from freqtrade/tests/exchange/test_exchange.py
rename to tests/exchange/test_exchange.py
diff --git a/freqtrade/tests/exchange/test_kraken.py b/tests/exchange/test_kraken.py
similarity index 100%
rename from freqtrade/tests/exchange/test_kraken.py
rename to tests/exchange/test_kraken.py
diff --git a/freqtrade/tests/optimize/__init__.py b/tests/optimize/__init__.py
similarity index 100%
rename from freqtrade/tests/optimize/__init__.py
rename to tests/optimize/__init__.py
diff --git a/freqtrade/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py
similarity index 100%
rename from freqtrade/tests/optimize/test_backtest_detail.py
rename to tests/optimize/test_backtest_detail.py
diff --git a/freqtrade/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py
similarity index 100%
rename from freqtrade/tests/optimize/test_backtesting.py
rename to tests/optimize/test_backtesting.py
diff --git a/freqtrade/tests/optimize/test_edge_cli.py b/tests/optimize/test_edge_cli.py
similarity index 100%
rename from freqtrade/tests/optimize/test_edge_cli.py
rename to tests/optimize/test_edge_cli.py
diff --git a/freqtrade/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
similarity index 100%
rename from freqtrade/tests/optimize/test_hyperopt.py
rename to tests/optimize/test_hyperopt.py
diff --git a/freqtrade/tests/pairlist/__init__.py b/tests/pairlist/__init__.py
similarity index 100%
rename from freqtrade/tests/pairlist/__init__.py
rename to tests/pairlist/__init__.py
diff --git a/freqtrade/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py
similarity index 100%
rename from freqtrade/tests/pairlist/test_pairlist.py
rename to tests/pairlist/test_pairlist.py
diff --git a/freqtrade/tests/rpc/__init__.py b/tests/rpc/__init__.py
similarity index 100%
rename from freqtrade/tests/rpc/__init__.py
rename to tests/rpc/__init__.py
diff --git a/freqtrade/tests/rpc/test_fiat_convert.py b/tests/rpc/test_fiat_convert.py
similarity index 100%
rename from freqtrade/tests/rpc/test_fiat_convert.py
rename to tests/rpc/test_fiat_convert.py
diff --git a/freqtrade/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py
similarity index 100%
rename from freqtrade/tests/rpc/test_rpc.py
rename to tests/rpc/test_rpc.py
diff --git a/freqtrade/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py
similarity index 100%
rename from freqtrade/tests/rpc/test_rpc_apiserver.py
rename to tests/rpc/test_rpc_apiserver.py
diff --git a/freqtrade/tests/rpc/test_rpc_manager.py b/tests/rpc/test_rpc_manager.py
similarity index 100%
rename from freqtrade/tests/rpc/test_rpc_manager.py
rename to tests/rpc/test_rpc_manager.py
diff --git a/freqtrade/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py
similarity index 100%
rename from freqtrade/tests/rpc/test_rpc_telegram.py
rename to tests/rpc/test_rpc_telegram.py
diff --git a/freqtrade/tests/rpc/test_rpc_webhook.py b/tests/rpc/test_rpc_webhook.py
similarity index 100%
rename from freqtrade/tests/rpc/test_rpc_webhook.py
rename to tests/rpc/test_rpc_webhook.py
diff --git a/freqtrade/tests/strategy/__init__.py b/tests/strategy/__init__.py
similarity index 100%
rename from freqtrade/tests/strategy/__init__.py
rename to tests/strategy/__init__.py
diff --git a/freqtrade/tests/strategy/legacy_strategy.py b/tests/strategy/legacy_strategy.py
similarity index 100%
rename from freqtrade/tests/strategy/legacy_strategy.py
rename to tests/strategy/legacy_strategy.py
diff --git a/freqtrade/tests/strategy/test_default_strategy.py b/tests/strategy/test_default_strategy.py
similarity index 100%
rename from freqtrade/tests/strategy/test_default_strategy.py
rename to tests/strategy/test_default_strategy.py
diff --git a/freqtrade/tests/strategy/test_interface.py b/tests/strategy/test_interface.py
similarity index 100%
rename from freqtrade/tests/strategy/test_interface.py
rename to tests/strategy/test_interface.py
diff --git a/freqtrade/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py
similarity index 100%
rename from freqtrade/tests/strategy/test_strategy.py
rename to tests/strategy/test_strategy.py
diff --git a/freqtrade/tests/test_arguments.py b/tests/test_arguments.py
similarity index 100%
rename from freqtrade/tests/test_arguments.py
rename to tests/test_arguments.py
diff --git a/freqtrade/tests/test_configuration.py b/tests/test_configuration.py
similarity index 100%
rename from freqtrade/tests/test_configuration.py
rename to tests/test_configuration.py
diff --git a/freqtrade/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
similarity index 100%
rename from freqtrade/tests/test_freqtradebot.py
rename to tests/test_freqtradebot.py
diff --git a/freqtrade/tests/test_indicator_helpers.py b/tests/test_indicator_helpers.py
similarity index 100%
rename from freqtrade/tests/test_indicator_helpers.py
rename to tests/test_indicator_helpers.py
diff --git a/freqtrade/tests/test_main.py b/tests/test_main.py
similarity index 100%
rename from freqtrade/tests/test_main.py
rename to tests/test_main.py
diff --git a/freqtrade/tests/test_misc.py b/tests/test_misc.py
similarity index 100%
rename from freqtrade/tests/test_misc.py
rename to tests/test_misc.py
diff --git a/freqtrade/tests/test_persistence.py b/tests/test_persistence.py
similarity index 100%
rename from freqtrade/tests/test_persistence.py
rename to tests/test_persistence.py
diff --git a/freqtrade/tests/test_plotting.py b/tests/test_plotting.py
similarity index 100%
rename from freqtrade/tests/test_plotting.py
rename to tests/test_plotting.py
diff --git a/freqtrade/tests/test_talib.py b/tests/test_talib.py
similarity index 100%
rename from freqtrade/tests/test_talib.py
rename to tests/test_talib.py
diff --git a/freqtrade/tests/test_timerange.py b/tests/test_timerange.py
similarity index 100%
rename from freqtrade/tests/test_timerange.py
rename to tests/test_timerange.py
diff --git a/freqtrade/tests/test_utils.py b/tests/test_utils.py
similarity index 100%
rename from freqtrade/tests/test_utils.py
rename to tests/test_utils.py
diff --git a/freqtrade/tests/test_wallets.py b/tests/test_wallets.py
similarity index 100%
rename from freqtrade/tests/test_wallets.py
rename to tests/test_wallets.py
diff --git a/freqtrade/tests/testdata/ADA_BTC-1m.json b/tests/testdata/ADA_BTC-1m.json
similarity index 100%
rename from freqtrade/tests/testdata/ADA_BTC-1m.json
rename to tests/testdata/ADA_BTC-1m.json
diff --git a/freqtrade/tests/testdata/ADA_BTC-5m.json b/tests/testdata/ADA_BTC-5m.json
similarity index 100%
rename from freqtrade/tests/testdata/ADA_BTC-5m.json
rename to tests/testdata/ADA_BTC-5m.json
diff --git a/freqtrade/tests/testdata/DASH_BTC-1m.json b/tests/testdata/DASH_BTC-1m.json
similarity index 100%
rename from freqtrade/tests/testdata/DASH_BTC-1m.json
rename to tests/testdata/DASH_BTC-1m.json
diff --git a/freqtrade/tests/testdata/DASH_BTC-5m.json b/tests/testdata/DASH_BTC-5m.json
similarity index 100%
rename from freqtrade/tests/testdata/DASH_BTC-5m.json
rename to tests/testdata/DASH_BTC-5m.json
diff --git a/freqtrade/tests/testdata/ETC_BTC-1m.json b/tests/testdata/ETC_BTC-1m.json
similarity index 100%
rename from freqtrade/tests/testdata/ETC_BTC-1m.json
rename to tests/testdata/ETC_BTC-1m.json
diff --git a/freqtrade/tests/testdata/ETC_BTC-5m.json b/tests/testdata/ETC_BTC-5m.json
similarity index 100%
rename from freqtrade/tests/testdata/ETC_BTC-5m.json
rename to tests/testdata/ETC_BTC-5m.json
diff --git a/freqtrade/tests/testdata/ETH_BTC-1m.json b/tests/testdata/ETH_BTC-1m.json
similarity index 100%
rename from freqtrade/tests/testdata/ETH_BTC-1m.json
rename to tests/testdata/ETH_BTC-1m.json
diff --git a/freqtrade/tests/testdata/ETH_BTC-5m.json b/tests/testdata/ETH_BTC-5m.json
similarity index 100%
rename from freqtrade/tests/testdata/ETH_BTC-5m.json
rename to tests/testdata/ETH_BTC-5m.json
diff --git a/freqtrade/tests/testdata/LTC_BTC-1m.json b/tests/testdata/LTC_BTC-1m.json
similarity index 100%
rename from freqtrade/tests/testdata/LTC_BTC-1m.json
rename to tests/testdata/LTC_BTC-1m.json
diff --git a/freqtrade/tests/testdata/LTC_BTC-5m.json b/tests/testdata/LTC_BTC-5m.json
similarity index 100%
rename from freqtrade/tests/testdata/LTC_BTC-5m.json
rename to tests/testdata/LTC_BTC-5m.json
diff --git a/freqtrade/tests/testdata/NXT_BTC-1m.json b/tests/testdata/NXT_BTC-1m.json
similarity index 100%
rename from freqtrade/tests/testdata/NXT_BTC-1m.json
rename to tests/testdata/NXT_BTC-1m.json
diff --git a/freqtrade/tests/testdata/NXT_BTC-5m.json b/tests/testdata/NXT_BTC-5m.json
similarity index 100%
rename from freqtrade/tests/testdata/NXT_BTC-5m.json
rename to tests/testdata/NXT_BTC-5m.json
diff --git a/freqtrade/tests/testdata/POWR_BTC-1m.json b/tests/testdata/POWR_BTC-1m.json
similarity index 100%
rename from freqtrade/tests/testdata/POWR_BTC-1m.json
rename to tests/testdata/POWR_BTC-1m.json
diff --git a/freqtrade/tests/testdata/POWR_BTC-5m.json b/tests/testdata/POWR_BTC-5m.json
similarity index 100%
rename from freqtrade/tests/testdata/POWR_BTC-5m.json
rename to tests/testdata/POWR_BTC-5m.json
diff --git a/freqtrade/tests/testdata/UNITTEST_BTC-1m.json b/tests/testdata/UNITTEST_BTC-1m.json
similarity index 100%
rename from freqtrade/tests/testdata/UNITTEST_BTC-1m.json
rename to tests/testdata/UNITTEST_BTC-1m.json
diff --git a/freqtrade/tests/testdata/UNITTEST_BTC-30m.json b/tests/testdata/UNITTEST_BTC-30m.json
similarity index 100%
rename from freqtrade/tests/testdata/UNITTEST_BTC-30m.json
rename to tests/testdata/UNITTEST_BTC-30m.json
diff --git a/freqtrade/tests/testdata/UNITTEST_BTC-5m.json b/tests/testdata/UNITTEST_BTC-5m.json
similarity index 100%
rename from freqtrade/tests/testdata/UNITTEST_BTC-5m.json
rename to tests/testdata/UNITTEST_BTC-5m.json
diff --git a/freqtrade/tests/testdata/UNITTEST_BTC-8m.json b/tests/testdata/UNITTEST_BTC-8m.json
similarity index 100%
rename from freqtrade/tests/testdata/UNITTEST_BTC-8m.json
rename to tests/testdata/UNITTEST_BTC-8m.json
diff --git a/freqtrade/tests/testdata/UNITTEST_BTC-8m.json.gz b/tests/testdata/UNITTEST_BTC-8m.json.gz
similarity index 100%
rename from freqtrade/tests/testdata/UNITTEST_BTC-8m.json.gz
rename to tests/testdata/UNITTEST_BTC-8m.json.gz
diff --git a/freqtrade/tests/testdata/XLM_BTC-1m.json b/tests/testdata/XLM_BTC-1m.json
similarity index 100%
rename from freqtrade/tests/testdata/XLM_BTC-1m.json
rename to tests/testdata/XLM_BTC-1m.json
diff --git a/freqtrade/tests/testdata/XLM_BTC-5m.json b/tests/testdata/XLM_BTC-5m.json
similarity index 100%
rename from freqtrade/tests/testdata/XLM_BTC-5m.json
rename to tests/testdata/XLM_BTC-5m.json
diff --git a/freqtrade/tests/testdata/XMR_BTC-1m.json b/tests/testdata/XMR_BTC-1m.json
similarity index 100%
rename from freqtrade/tests/testdata/XMR_BTC-1m.json
rename to tests/testdata/XMR_BTC-1m.json
diff --git a/freqtrade/tests/testdata/XMR_BTC-5m.json b/tests/testdata/XMR_BTC-5m.json
similarity index 100%
rename from freqtrade/tests/testdata/XMR_BTC-5m.json
rename to tests/testdata/XMR_BTC-5m.json
diff --git a/freqtrade/tests/testdata/ZEC_BTC-1m.json b/tests/testdata/ZEC_BTC-1m.json
similarity index 100%
rename from freqtrade/tests/testdata/ZEC_BTC-1m.json
rename to tests/testdata/ZEC_BTC-1m.json
diff --git a/freqtrade/tests/testdata/ZEC_BTC-5m.json b/tests/testdata/ZEC_BTC-5m.json
similarity index 100%
rename from freqtrade/tests/testdata/ZEC_BTC-5m.json
rename to tests/testdata/ZEC_BTC-5m.json
diff --git a/freqtrade/tests/testdata/backtest-result_test.json b/tests/testdata/backtest-result_test.json
similarity index 100%
rename from freqtrade/tests/testdata/backtest-result_test.json
rename to tests/testdata/backtest-result_test.json
diff --git a/freqtrade/tests/testdata/pairs.json b/tests/testdata/pairs.json
similarity index 100%
rename from freqtrade/tests/testdata/pairs.json
rename to tests/testdata/pairs.json

From 26d76cdb196ec01e89d487610120c173d89879b2 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 8 Sep 2019 09:54:15 +0200
Subject: [PATCH 0429/3421] Adjust imports in tests to new path

---
 tests/conftest.py                       |  4 ++--
 tests/data/test_btanalysis.py           |  2 +-
 tests/data/test_converter.py            |  2 +-
 tests/data/test_dataprovider.py         |  2 +-
 tests/data/test_history.py              |  2 +-
 tests/edge/test_edge.py                 |  7 +++----
 tests/exchange/test_binance.py          |  2 +-
 tests/exchange/test_exchange.py         |  2 +-
 tests/exchange/test_kraken.py           |  2 +-
 tests/optimize/test_backtest_detail.py  |  8 +++-----
 tests/optimize/test_backtesting.py      | 17 ++++++++---------
 tests/optimize/test_edge_cli.py         |  5 ++---
 tests/optimize/test_hyperopt.py         | 14 +++++++-------
 tests/pairlist/test_pairlist.py         |  2 +-
 tests/rpc/test_fiat_convert.py          |  2 +-
 tests/rpc/test_rpc.py                   |  2 +-
 tests/rpc/test_rpc_apiserver.py         |  4 +---
 tests/rpc/test_rpc_manager.py           |  2 +-
 tests/rpc/test_rpc_telegram.py          |  4 ++--
 tests/rpc/test_rpc_webhook.py           |  2 +-
 tests/strategy/test_default_strategy.py | 11 -----------
 tests/strategy/test_interface.py        |  2 +-
 tests/strategy/test_strategy.py         |  4 ++--
 tests/test_configuration.py             |  7 ++++---
 tests/test_freqtradebot.py              |  9 ++++-----
 tests/test_main.py                      |  2 +-
 tests/test_persistence.py               |  2 +-
 tests/test_plotting.py                  |  2 +-
 tests/test_utils.py                     |  2 +-
 tests/test_wallets.py                   |  2 +-
 30 files changed, 56 insertions(+), 74 deletions(-)

diff --git a/tests/conftest.py b/tests/conftest.py
index 81358e003..a007aeb7e 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -891,8 +891,8 @@ def tickers():
 
 
 @pytest.fixture
-def result():
-    with Path('freqtrade/tests/testdata/UNITTEST_BTC-1m.json').open('r') as data_file:
+def result(testdatadir):
+    with (testdatadir / 'UNITTEST_BTC-1m.json').open('r') as data_file:
         return parse_ticker_dataframe(json.load(data_file), '1m', pair="UNITTEST/BTC",
                                       fill_missing=True)
 
diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py
index e95757d4e..18326226c 100644
--- a/tests/data/test_btanalysis.py
+++ b/tests/data/test_btanalysis.py
@@ -12,7 +12,7 @@ from freqtrade.data.btanalysis import (BT_DATA_COLUMNS,
                                        load_backtest_data, load_trades,
                                        load_trades_from_db)
 from freqtrade.data.history import load_data, load_pair_history
-from freqtrade.tests.test_persistence import create_mock_trades
+from tests.test_persistence import create_mock_trades
 
 
 def test_load_backtest_data(testdatadir):
diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py
index d47c3ee92..72da47e76 100644
--- a/tests/data/test_converter.py
+++ b/tests/data/test_converter.py
@@ -3,7 +3,7 @@ import logging
 
 from freqtrade.data.converter import parse_ticker_dataframe, ohlcv_fill_up_missing_data
 from freqtrade.data.history import load_pair_history, validate_backtest_data, get_timeframe
-from freqtrade.tests.conftest import log_has
+from tests.conftest import log_has
 
 
 def test_dataframe_correct_columns(result):
diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py
index 441e242f8..ec176d889 100644
--- a/tests/data/test_dataprovider.py
+++ b/tests/data/test_dataprovider.py
@@ -4,7 +4,7 @@ from pandas import DataFrame
 
 from freqtrade.data.dataprovider import DataProvider
 from freqtrade.state import RunMode
-from freqtrade.tests.conftest import get_patched_exchange
+from tests.conftest import get_patched_exchange
 
 
 def test_ohlcv(mocker, default_conf, ticker_history):
diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index 252c73a4e..857967f39 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -22,7 +22,7 @@ from freqtrade.data.history import (download_pair_history,
 from freqtrade.exchange import timeframe_to_minutes
 from freqtrade.misc import file_dump_json
 from freqtrade.strategy.default_strategy import DefaultStrategy
-from freqtrade.tests.conftest import get_patched_exchange, log_has, log_has_re, patch_exchange
+from tests.conftest import get_patched_exchange, log_has, log_has_re, patch_exchange
 
 # Change this if modifying UNITTEST/BTC testdatafile
 _BTC_UNITTEST_LENGTH = 13681
diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py
index d30285a95..d5f282d7b 100644
--- a/tests/edge/test_edge.py
+++ b/tests/edge/test_edge.py
@@ -14,10 +14,9 @@ from freqtrade import OperationalException
 from freqtrade.data.converter import parse_ticker_dataframe
 from freqtrade.edge import Edge, PairInfo
 from freqtrade.strategy.interface import SellType
-from freqtrade.tests.conftest import get_patched_freqtradebot, log_has
-from freqtrade.tests.optimize import (BTContainer, BTrade,
-                                      _build_backtest_dataframe,
-                                      _get_frame_time_from_offset)
+from tests.conftest import get_patched_freqtradebot, log_has
+from tests.optimize import (BTContainer, BTrade, _build_backtest_dataframe,
+                            _get_frame_time_from_offset)
 
 # Cases to be tested:
 # 1) Open trade should be removed from the end
diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py
index 6518c8523..7720a7d2e 100644
--- a/tests/exchange/test_binance.py
+++ b/tests/exchange/test_binance.py
@@ -6,7 +6,7 @@ import pytest
 
 from freqtrade import (DependencyException, InvalidOrderException,
                        OperationalException, TemporaryError)
-from freqtrade.tests.conftest import get_patched_exchange
+from tests.conftest import get_patched_exchange
 
 
 def test_stoploss_limit_order(default_conf, mocker):
diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index 1fd045f54..e23db42d2 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -20,7 +20,7 @@ from freqtrade.exchange.exchange import (API_RETRY_COUNT, timeframe_to_minutes,
                                          timeframe_to_prev_date,
                                          timeframe_to_seconds)
 from freqtrade.resolvers.exchange_resolver import ExchangeResolver
-from freqtrade.tests.conftest import get_patched_exchange, log_has, log_has_re
+from tests.conftest import get_patched_exchange, log_has, log_has_re
 
 # Make sure to always keep one exchange here which is NOT subclassed!!
 EXCHANGES = ['bittrex', 'binance', 'kraken', ]
diff --git a/tests/exchange/test_kraken.py b/tests/exchange/test_kraken.py
index 8f476affb..ba94f8b45 100644
--- a/tests/exchange/test_kraken.py
+++ b/tests/exchange/test_kraken.py
@@ -3,7 +3,7 @@
 from random import randint
 from unittest.mock import MagicMock
 
-from freqtrade.tests.conftest import get_patched_exchange
+from tests.conftest import get_patched_exchange
 
 
 def test_buy_kraken_trading_agreement(default_conf, mocker):
diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py
index 87f567b4f..8cd88a479 100644
--- a/tests/optimize/test_backtest_detail.py
+++ b/tests/optimize/test_backtest_detail.py
@@ -8,11 +8,9 @@ from pandas import DataFrame
 from freqtrade.data.history import get_timeframe
 from freqtrade.optimize.backtesting import Backtesting
 from freqtrade.strategy.interface import SellType
-from freqtrade.tests.conftest import patch_exchange
-from freqtrade.tests.optimize import (BTContainer, BTrade,
-                                      _build_backtest_dataframe,
-                                      _get_frame_time_from_offset,
-                                      tests_ticker_interval)
+from tests.conftest import patch_exchange
+from tests.optimize import (BTContainer, BTrade, _build_backtest_dataframe,
+                            _get_frame_time_from_offset, tests_ticker_interval)
 
 # Test 0: Sell with signal sell in candle 3
 # Test with Stop-loss at 1%
diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py
index b1b6dfa06..34c0322cb 100644
--- a/tests/optimize/test_backtesting.py
+++ b/tests/optimize/test_backtesting.py
@@ -22,9 +22,8 @@ from freqtrade.optimize.backtesting import Backtesting
 from freqtrade.state import RunMode
 from freqtrade.strategy.default_strategy import DefaultStrategy
 from freqtrade.strategy.interface import SellType
-from freqtrade.tests.conftest import (get_args, log_has, log_has_re,
-                                      patch_exchange,
-                                      patched_configuration_load_config_file)
+from tests.conftest import (get_args, log_has, log_has_re, patch_exchange,
+                            patched_configuration_load_config_file)
 
 
 def trim_dictlist(dict_list, num):
@@ -807,7 +806,7 @@ def test_backtest_record(default_conf, fee, mocker):
         assert dur > 0
 
 
-def test_backtest_start_timerange(default_conf, mocker, caplog):
+def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir):
     default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC']
 
     async def load_pairs(pair, timeframe, since):
@@ -824,7 +823,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog):
     args = [
         '--config', 'config.json',
         '--strategy', 'DefaultStrategy',
-        '--datadir', 'freqtrade/tests/testdata',
+        '--datadir', str(testdatadir),
         'backtesting',
         '--ticker-interval', '1m',
         '--timerange', '-100',
@@ -838,7 +837,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog):
         'Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...',
         'Ignoring max_open_trades (--disable-max-market-positions was used) ...',
         'Parameter --timerange detected: -100 ...',
-        'Using data directory: freqtrade/tests/testdata ...',
+        f'Using data directory: {testdatadir} ...',
         'Using stake_currency: BTC ...',
         'Using stake_amount: 0.001 ...',
         'Backtesting with data from 2017-11-14T21:17:00+00:00 '
@@ -850,7 +849,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog):
         assert log_has(line, caplog)
 
 
-def test_backtest_start_multi_strat(default_conf, mocker, caplog):
+def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir):
     default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC']
 
     async def load_pairs(pair, timeframe, since):
@@ -870,7 +869,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog):
 
     args = [
         '--config', 'config.json',
-        '--datadir', 'freqtrade/tests/testdata',
+        '--datadir', str(testdatadir),
         'backtesting',
         '--ticker-interval', '1m',
         '--timerange', '-100',
@@ -892,7 +891,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog):
         'Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...',
         'Ignoring max_open_trades (--disable-max-market-positions was used) ...',
         'Parameter --timerange detected: -100 ...',
-        'Using data directory: freqtrade/tests/testdata ...',
+        f'Using data directory: {testdatadir} ...',
         'Using stake_currency: BTC ...',
         'Using stake_amount: 0.001 ...',
         'Backtesting with data from 2017-11-14T21:17:00+00:00 '
diff --git a/tests/optimize/test_edge_cli.py b/tests/optimize/test_edge_cli.py
index 25ad48e43..f312bba2c 100644
--- a/tests/optimize/test_edge_cli.py
+++ b/tests/optimize/test_edge_cli.py
@@ -9,9 +9,8 @@ from freqtrade.edge import PairInfo
 from freqtrade.optimize import setup_configuration, start_edge
 from freqtrade.optimize.edge_cli import EdgeCli
 from freqtrade.state import RunMode
-from freqtrade.tests.conftest import (get_args, log_has, log_has_re,
-                                      patch_exchange,
-                                      patched_configuration_load_config_file)
+from tests.conftest import (get_args, log_has, log_has_re, patch_exchange,
+                            patched_configuration_load_config_file)
 
 
 def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> None:
diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index a6f0e47e7..eec9e7c19 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -1,13 +1,13 @@
 # pragma pylint: disable=missing-docstring,W0212,C0103
 import os
 from datetime import datetime
+from pathlib import Path
 from unittest.mock import MagicMock, PropertyMock
 
 import pandas as pd
 import pytest
 from arrow import Arrow
 from filelock import Timeout
-from pathlib import Path
 
 from freqtrade import OperationalException
 from freqtrade.data.converter import parse_ticker_dataframe
@@ -16,12 +16,12 @@ from freqtrade.optimize import setup_configuration, start_hyperopt
 from freqtrade.optimize.default_hyperopt import DefaultHyperOpts
 from freqtrade.optimize.default_hyperopt_loss import DefaultHyperOptLoss
 from freqtrade.optimize.hyperopt import Hyperopt
-from freqtrade.resolvers.hyperopt_resolver import HyperOptResolver, HyperOptLossResolver
+from freqtrade.resolvers.hyperopt_resolver import (HyperOptLossResolver,
+                                                   HyperOptResolver)
 from freqtrade.state import RunMode
 from freqtrade.strategy.interface import SellType
-from freqtrade.tests.conftest import (get_args, log_has, log_has_re,
-                                      patch_exchange,
-                                      patched_configuration_load_config_file)
+from tests.conftest import (get_args, log_has, log_has_re, patch_exchange,
+                            patched_configuration_load_config_file)
 
 
 @pytest.fixture(scope='function')
@@ -47,14 +47,14 @@ def hyperopt_results():
 
 
 # Functions for recurrent object patching
-def create_trials(mocker, hyperopt) -> None:
+def create_trials(mocker, hyperopt, testdatadir) -> None:
     """
     When creating trials, mock the hyperopt Trials so that *by default*
       - we don't create any pickle'd files in the filesystem
       - we might have a pickle'd file so make sure that we return
         false when looking for it
     """
-    hyperopt.trials_file = Path('freqtrade/tests/optimize/ut_trials.pickle')
+    hyperopt.trials_file = testdatadir / '/optimize/ut_trials.pickle'
 
     mocker.patch.object(Path, "is_file", MagicMock(return_value=False))
     stat_mock = MagicMock()
diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py
index e7439bb51..411ae60a3 100644
--- a/tests/pairlist/test_pairlist.py
+++ b/tests/pairlist/test_pairlist.py
@@ -5,7 +5,7 @@ from unittest.mock import MagicMock, PropertyMock
 from freqtrade import OperationalException
 from freqtrade.constants import AVAILABLE_PAIRLISTS
 from freqtrade.resolvers import PairListResolver
-from freqtrade.tests.conftest import get_patched_freqtradebot
+from tests.conftest import get_patched_freqtradebot
 import pytest
 
 # whitelist, blacklist
diff --git a/tests/rpc/test_fiat_convert.py b/tests/rpc/test_fiat_convert.py
index 1689ecac6..8f6b2eb93 100644
--- a/tests/rpc/test_fiat_convert.py
+++ b/tests/rpc/test_fiat_convert.py
@@ -8,7 +8,7 @@ import pytest
 from requests.exceptions import RequestException
 
 from freqtrade.rpc.fiat_convert import CryptoFiat, CryptoToFiatConverter
-from freqtrade.tests.conftest import log_has
+from tests.conftest import log_has
 
 
 def test_pair_convertion_object():
diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py
index 47ed34a58..ff5869009 100644
--- a/tests/rpc/test_rpc.py
+++ b/tests/rpc/test_rpc.py
@@ -14,7 +14,7 @@ from freqtrade.persistence import Trade
 from freqtrade.rpc import RPC, RPCException
 from freqtrade.rpc.fiat_convert import CryptoToFiatConverter
 from freqtrade.state import State
-from freqtrade.tests.conftest import patch_exchange, patch_get_signal
+from tests.conftest import patch_exchange, patch_get_signal
 
 
 # Functions for recurrent object patching
diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py
index bcbbb228f..b572a0514 100644
--- a/tests/rpc/test_rpc_apiserver.py
+++ b/tests/rpc/test_rpc_apiserver.py
@@ -13,9 +13,7 @@ from freqtrade.__init__ import __version__
 from freqtrade.persistence import Trade
 from freqtrade.rpc.api_server import BASE_URI, ApiServer
 from freqtrade.state import State
-from freqtrade.tests.conftest import (get_patched_freqtradebot, log_has,
-                                      patch_get_signal)
-
+from tests.conftest import get_patched_freqtradebot, log_has, patch_get_signal
 
 _TEST_USER = "FreqTrader"
 _TEST_PASS = "SuperSecurePassword1!"
diff --git a/tests/rpc/test_rpc_manager.py b/tests/rpc/test_rpc_manager.py
index d34d76524..7278f0671 100644
--- a/tests/rpc/test_rpc_manager.py
+++ b/tests/rpc/test_rpc_manager.py
@@ -4,7 +4,7 @@ import logging
 from unittest.mock import MagicMock
 
 from freqtrade.rpc import RPCMessageType, RPCManager
-from freqtrade.tests.conftest import log_has, get_patched_freqtradebot
+from tests.conftest import log_has, get_patched_freqtradebot
 
 
 def test__init__(mocker, default_conf) -> None:
diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py
index 3930b110d..cf741a7ea 100644
--- a/tests/rpc/test_rpc_telegram.py
+++ b/tests/rpc/test_rpc_telegram.py
@@ -21,8 +21,8 @@ from freqtrade.rpc import RPCMessageType
 from freqtrade.rpc.telegram import Telegram, authorized_only
 from freqtrade.state import State
 from freqtrade.strategy.interface import SellType
-from freqtrade.tests.conftest import (get_patched_freqtradebot, log_has,
-                                      patch_exchange, patch_get_signal)
+from tests.conftest import (get_patched_freqtradebot, log_has, patch_exchange,
+                            patch_get_signal)
 
 
 class DummyCls(Telegram):
diff --git a/tests/rpc/test_rpc_webhook.py b/tests/rpc/test_rpc_webhook.py
index 1c6c07e16..dbbc4cefb 100644
--- a/tests/rpc/test_rpc_webhook.py
+++ b/tests/rpc/test_rpc_webhook.py
@@ -8,7 +8,7 @@ from requests import RequestException
 from freqtrade.rpc import RPCMessageType
 from freqtrade.rpc.webhook import Webhook
 from freqtrade.strategy.interface import SellType
-from freqtrade.tests.conftest import get_patched_freqtradebot, log_has
+from tests.conftest import get_patched_freqtradebot, log_has
 
 
 def get_webhook_dict() -> dict:
diff --git a/tests/strategy/test_default_strategy.py b/tests/strategy/test_default_strategy.py
index 74c81882a..17d6b8ee0 100644
--- a/tests/strategy/test_default_strategy.py
+++ b/tests/strategy/test_default_strategy.py
@@ -1,19 +1,8 @@
-import json
-
-import pytest
 from pandas import DataFrame
 
-from freqtrade.data.converter import parse_ticker_dataframe
 from freqtrade.strategy.default_strategy import DefaultStrategy
 
 
-@pytest.fixture
-def result():
-    with open('freqtrade/tests/testdata/ETH_BTC-1m.json') as data_file:
-        return parse_ticker_dataframe(json.load(data_file), '1m', pair="UNITTEST/BTC",
-                                      fill_missing=True)
-
-
 def test_default_strategy_structure():
     assert hasattr(DefaultStrategy, 'minimal_roi')
     assert hasattr(DefaultStrategy, 'stoploss')
diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py
index 1bd571870..094cd41a1 100644
--- a/tests/strategy/test_interface.py
+++ b/tests/strategy/test_interface.py
@@ -10,7 +10,7 @@ from freqtrade.configuration import TimeRange
 from freqtrade.data.converter import parse_ticker_dataframe
 from freqtrade.data.history import load_tickerdata_file
 from freqtrade.persistence import Trade
-from freqtrade.tests.conftest import get_patched_exchange, log_has
+from tests.conftest import get_patched_exchange, log_has
 from freqtrade.strategy.default_strategy import DefaultStrategy
 
 # Avoid to reinit the same object again and again
diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py
index 24ec830a0..6992d1aa5 100644
--- a/tests/strategy/test_strategy.py
+++ b/tests/strategy/test_strategy.py
@@ -12,12 +12,12 @@ from pandas import DataFrame
 from freqtrade import OperationalException
 from freqtrade.resolvers import StrategyResolver
 from freqtrade.strategy.interface import IStrategy
-from freqtrade.tests.conftest import log_has, log_has_re
+from tests.conftest import log_has, log_has_re
 
 
 def test_search_strategy():
     default_config = {}
-    default_location = Path(__file__).parent.parent.parent.joinpath('strategy').resolve()
+    default_location = Path(__file__).parent.parent.joinpath('strategy').resolve()
 
     s, _ = StrategyResolver._search_object(
         directory=default_location,
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index faf0e4c5f..e6532cecc 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -10,7 +10,8 @@ import pytest
 from jsonschema import Draft4Validator, ValidationError, validate
 
 from freqtrade import OperationalException, constants
-from freqtrade.configuration import Arguments, Configuration, validate_config_consistency
+from freqtrade.configuration import (Arguments, Configuration,
+                                     validate_config_consistency)
 from freqtrade.configuration.check_exchange import check_exchange
 from freqtrade.configuration.config_validation import validate_config_schema
 from freqtrade.configuration.directory_operations import (create_datadir,
@@ -19,8 +20,8 @@ from freqtrade.configuration.load_config import load_config_file
 from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL
 from freqtrade.loggers import _set_loggers
 from freqtrade.state import RunMode
-from freqtrade.tests.conftest import (log_has, log_has_re,
-                                      patched_configuration_load_config_file)
+from tests.conftest import (log_has, log_has_re,
+                            patched_configuration_load_config_file)
 
 
 @pytest.fixture(scope="function")
diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index 83b1d3107..4ffa863e6 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -16,13 +16,12 @@ from freqtrade.data.dataprovider import DataProvider
 from freqtrade.freqtradebot import FreqtradeBot
 from freqtrade.persistence import Trade
 from freqtrade.rpc import RPCMessageType
-from freqtrade.state import State, RunMode
+from freqtrade.state import RunMode, State
 from freqtrade.strategy.interface import SellCheckTuple, SellType
-from freqtrade.tests.conftest import (get_patched_freqtradebot,
-                                      get_patched_worker, log_has, log_has_re,
-                                      patch_edge, patch_exchange,
-                                      patch_get_signal, patch_wallet)
 from freqtrade.worker import Worker
+from tests.conftest import (get_patched_freqtradebot, get_patched_worker,
+                            log_has, log_has_re, patch_edge, patch_exchange,
+                            patch_get_signal, patch_wallet)
 
 
 def patch_RPCManager(mocker) -> MagicMock:
diff --git a/tests/test_main.py b/tests/test_main.py
index a0fd8218b..d6fafe09b 100644
--- a/tests/test_main.py
+++ b/tests/test_main.py
@@ -10,7 +10,7 @@ from freqtrade.configuration import Arguments
 from freqtrade.freqtradebot import FreqtradeBot
 from freqtrade.main import main
 from freqtrade.state import State
-from freqtrade.tests.conftest import (log_has, patch_exchange,
+from tests.conftest import (log_has, patch_exchange,
                                       patched_configuration_load_config_file)
 from freqtrade.worker import Worker
 
diff --git a/tests/test_persistence.py b/tests/test_persistence.py
index c3ab7c128..85c244f7a 100644
--- a/tests/test_persistence.py
+++ b/tests/test_persistence.py
@@ -8,7 +8,7 @@ from sqlalchemy import create_engine
 
 from freqtrade import OperationalException, constants
 from freqtrade.persistence import Trade, clean_dry_run_db, init
-from freqtrade.tests.conftest import log_has
+from tests.conftest import log_has
 
 
 def create_mock_trades(fee):
diff --git a/tests/test_plotting.py b/tests/test_plotting.py
index a4abda98b..465e3462d 100644
--- a/tests/test_plotting.py
+++ b/tests/test_plotting.py
@@ -19,7 +19,7 @@ from freqtrade.plot.plotting import (add_indicators, add_profit,
                                      generate_profit_graph, init_plotscript,
                                      plot_profit, plot_trades, store_plot_file)
 from freqtrade.strategy.default_strategy import DefaultStrategy
-from freqtrade.tests.conftest import get_args, log_has, log_has_re
+from tests.conftest import get_args, log_has, log_has_re
 
 
 def fig_generating_mock(fig, *args, **kwargs):
diff --git a/tests/test_utils.py b/tests/test_utils.py
index 9e09fd298..386efb5ec 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -4,7 +4,7 @@ from unittest.mock import MagicMock, PropertyMock
 import pytest
 
 from freqtrade.state import RunMode
-from freqtrade.tests.conftest import get_args, log_has, patch_exchange
+from tests.conftest import get_args, log_has, patch_exchange
 from freqtrade.utils import (setup_utils_configuration, start_create_userdir,
                              start_download_data, start_list_exchanges)
 
diff --git a/tests/test_wallets.py b/tests/test_wallets.py
index 2c493cfc3..ae2810a2d 100644
--- a/tests/test_wallets.py
+++ b/tests/test_wallets.py
@@ -1,5 +1,5 @@
 # pragma pylint: disable=missing-docstring
-from freqtrade.tests.conftest import get_patched_freqtradebot
+from tests.conftest import get_patched_freqtradebot
 from unittest.mock import MagicMock
 
 

From f2cbc5fb8ffb3847df0bfbaa9b0e101c06ab9a0e Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 8 Sep 2019 09:55:02 +0200
Subject: [PATCH 0430/3421] Fix documentation references to tests folder

---
 CONTRIBUTING.md   | 6 +++---
 docs/developer.md | 2 +-
 docs/plotting.md  | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e15059f56..aac25a423 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -28,19 +28,19 @@ make it pass. It means you have introduced a regression.
 #### Test the whole project
 
 ```bash
-pytest freqtrade
+pytest
 ```
 
 #### Test only one file
 
 ```bash
-pytest freqtrade/tests/test_.py
+pytest tests/test_.py
 ```
 
 #### Test only one method from one file
 
 ```bash
-pytest freqtrade/tests/test_.py::test_
+pytest tests/test_.py::test_
 ```
 
 ### 2. Test if your code is PEP8 compliant
diff --git a/docs/developer.md b/docs/developer.md
index 259bfafd8..b048cf93f 100644
--- a/docs/developer.md
+++ b/docs/developer.md
@@ -30,7 +30,7 @@ These are available from `conftest.py` and can be imported in any test module.
 A sample check looks as follows:
 
 ``` python
-from freqtrade.tests.conftest import log_has, log_has_re
+from tests.conftest import log_has, log_has_re
 
 def test_method_to_test(caplog):
     method_to_test()
diff --git a/docs/plotting.md b/docs/plotting.md
index 61bf7b74a..4deb6db12 100644
--- a/docs/plotting.md
+++ b/docs/plotting.md
@@ -179,5 +179,5 @@ freqtrade plot-profit  -p LTC/BTC --db-url sqlite:///tradesv3.sqlite --trade-sou
 ```
 
 ``` bash
-freqtrade plot-profit --datadir ../freqtrade/freqtrade/tests/testdata-20171221/ -p LTC/BTC
+freqtrade plot-profit --datadir user_data/data/binance_save/ -p LTC/BTC
 ```

From 9513115ce0aa671e5a021b1b81f1be8a9b2381ca Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 8 Sep 2019 10:07:09 +0200
Subject: [PATCH 0431/3421] Fix paths in tests

---
 tests/data/test_history.py      |  2 +-
 tests/optimize/test_hyperopt.py | 19 +++++++++----------
 tests/test_configuration.py     |  2 +-
 tests/test_main.py              |  4 ++--
 4 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index 857967f39..e747794e5 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -160,7 +160,7 @@ def test_load_data_live_noexchange(default_conf, mocker, caplog, testdatadir) ->
 
 
 def test_testdata_path(testdatadir) -> None:
-    assert str(Path('freqtrade') / 'tests' / 'testdata') in str(testdatadir)
+    assert str(Path('tests') / 'testdata') in str(testdatadir)
 
 
 def test_load_cached_data_for_updating(mocker) -> None:
diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index eec9e7c19..900405f03 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -1,5 +1,4 @@
 # pragma pylint: disable=missing-docstring,W0212,C0103
-import os
 from datetime import datetime
 from pathlib import Path
 from unittest.mock import MagicMock, PropertyMock
@@ -54,7 +53,7 @@ def create_trials(mocker, hyperopt, testdatadir) -> None:
       - we might have a pickle'd file so make sure that we return
         false when looking for it
     """
-    hyperopt.trials_file = testdatadir / '/optimize/ut_trials.pickle'
+    hyperopt.trials_file = testdatadir / 'optimize/ut_trials.pickle'
 
     mocker.patch.object(Path, "is_file", MagicMock(return_value=False))
     stat_mock = MagicMock()
@@ -356,23 +355,23 @@ def test_no_log_if_loss_does_not_improve(hyperopt, caplog) -> None:
     assert caplog.record_tuples == []
 
 
-def test_save_trials_saves_trials(mocker, hyperopt, caplog) -> None:
-    trials = create_trials(mocker, hyperopt)
+def test_save_trials_saves_trials(mocker, hyperopt, testdatadir, caplog) -> None:
+    trials = create_trials(mocker, hyperopt, testdatadir)
     mock_dump = mocker.patch('freqtrade.optimize.hyperopt.dump', return_value=None)
     hyperopt.trials = trials
     hyperopt.save_trials()
 
-    trials_file = os.path.join('freqtrade', 'tests', 'optimize', 'ut_trials.pickle')
-    assert log_has("Saving 1 evaluations to '{}'".format(trials_file), caplog)
+    trials_file = testdatadir / 'optimize' / 'ut_trials.pickle'
+    assert log_has(f"Saving 1 evaluations to '{trials_file}'", caplog)
     mock_dump.assert_called_once()
 
 
-def test_read_trials_returns_trials_file(mocker, hyperopt, caplog) -> None:
-    trials = create_trials(mocker, hyperopt)
+def test_read_trials_returns_trials_file(mocker, hyperopt, testdatadir, caplog) -> None:
+    trials = create_trials(mocker, hyperopt, testdatadir)
     mock_load = mocker.patch('freqtrade.optimize.hyperopt.load', return_value=trials)
     hyperopt_trial = hyperopt.read_trials()
-    trials_file = os.path.join('freqtrade', 'tests', 'optimize', 'ut_trials.pickle')
-    assert log_has("Reading Trials from '{}'".format(trials_file), caplog)
+    trials_file = testdatadir / 'optimize' / 'ut_trials.pickle'
+    assert log_has(f"Reading Trials from '{trials_file}'", caplog)
     assert hyperopt_trial == trials
     mock_load.assert_called_once()
 
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index e6532cecc..20ebda440 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -26,7 +26,7 @@ from tests.conftest import (log_has, log_has_re,
 
 @pytest.fixture(scope="function")
 def all_conf():
-    config_file = Path(__file__).parents[2] / "config_full.json.example"
+    config_file = Path(__file__).parents[1] / "config_full.json.example"
     print(config_file)
     conf = load_config_file(str(config_file))
     return conf
diff --git a/tests/test_main.py b/tests/test_main.py
index d6fafe09b..eec81ee18 100644
--- a/tests/test_main.py
+++ b/tests/test_main.py
@@ -10,9 +10,9 @@ from freqtrade.configuration import Arguments
 from freqtrade.freqtradebot import FreqtradeBot
 from freqtrade.main import main
 from freqtrade.state import State
-from tests.conftest import (log_has, patch_exchange,
-                                      patched_configuration_load_config_file)
 from freqtrade.worker import Worker
+from tests.conftest import (log_has, patch_exchange,
+                            patched_configuration_load_config_file)
 
 
 def test_parse_args_backtesting(mocker) -> None:

From 9d2c6c8de27b6ea2b0a8740c52b7c9ee2e434778 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 8 Sep 2019 10:17:44 +0200
Subject: [PATCH 0432/3421] Fix paths in setup and travis

---
 .coveragerc | 2 +-
 .travis.yml | 8 ++++----
 MANIFEST.in | 1 -
 setup.cfg   | 7 ++++++-
 4 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/.coveragerc b/.coveragerc
index 4bd5b63fa..96ad6b09b 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -1,6 +1,6 @@
 [run]
 omit =
     scripts/*
-    freqtrade/tests/*
     freqtrade/vendor/*
     freqtrade/__main__.py
+    tests/*
diff --git a/.travis.yml b/.travis.yml
index c75049276..405228ab8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,19 +22,19 @@ jobs:
   include:
     - stage: tests
       script:
-      - pytest --random-order --cov=freqtrade --cov-config=.coveragerc freqtrade/tests/
+      - pytest --random-order --cov=freqtrade --cov-config=.coveragerc
       # Allow failure for coveralls
       - coveralls || true
       name: pytest
     - script:
       - cp config.json.example config.json
-      - freqtrade --datadir freqtrade/tests/testdata backtesting
+      - freqtrade --datadir tests/testdata backtesting
       name: backtest
     - script:
       - cp config.json.example config.json
-      - freqtrade --datadir freqtrade/tests/testdata hyperopt -e 5
+      - freqtrade --datadir tests/testdata hyperopt -e 5
       name: hyperopt
-    - script: flake8 freqtrade scripts
+    - script: flake8
       name: flake8
     - script:
       # Test Documentation boxes -
diff --git a/MANIFEST.in b/MANIFEST.in
index 63508c05d..7529152a0 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -2,4 +2,3 @@ include LICENSE
 include README.md
 include config.json.example
 recursive-include freqtrade *.py
-include freqtrade/tests/testdata/*.json
diff --git a/setup.cfg b/setup.cfg
index 473f50639..34f25482b 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -2,9 +2,14 @@
 #ignore =
 max-line-length = 100
 max-complexity = 12
+exclude =
+    .git,
+    __pycache__,
+    .eggs,
+    user_data,
 
 [mypy]
 ignore_missing_imports = True
 
-[mypy-freqtrade.tests.*]
+[mypy-tests.*]
 ignore_errors = True

From 0bb1127cb6dcdb3142a22029bc3048f569add92c Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 8 Sep 2019 10:19:00 +0200
Subject: [PATCH 0433/3421] update .gitignore

things we no longer use should not be excluded
---
 .gitignore | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/.gitignore b/.gitignore
index 1664ad7eb..e0b7a7b8f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,7 @@
 # Freqtrade rules
-freqtrade/tests/testdata/*.json
-hyperopt_conf.py
 config*.json
 *.sqlite
-.hyperopt
 logfile.txt
-hyperopt_trials.pickle
 user_data/*
 !user_data/notebooks
 user_data/notebooks/*

From 3e0edc7ee2b88bcab7234fb261a61c67f93fb79f Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 8 Sep 2019 10:28:55 +0200
Subject: [PATCH 0434/3421] Update backtesting section about correct data used

---
 docs/backtesting.md | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/docs/backtesting.md b/docs/backtesting.md
index 3da76c0ce..45d5f486f 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -43,12 +43,11 @@ Now you have good Buy and Sell strategies and some historic data, you want to te
 real data. This is what we call
 [backtesting](https://en.wikipedia.org/wiki/Backtesting).
 
-Backtesting will use the crypto-currencies (pair) from your config file
-and load static tickers located in
-[/freqtrade/tests/testdata](https://github.com/freqtrade/freqtrade/tree/develop/freqtrade/tests/testdata).
-If the 5 min and 1 min ticker for the crypto-currencies to test is not
-already in the `testdata` directory, backtesting will download them
-automatically. Testdata files will not be updated until you specify it.
+Backtesting will use the crypto-currencies (pairs) from your config file
+and load ticker data from `user_data/data/` by default.
+If no data is available for the exchange / pair / ticker interval combination, backtesting will
+ask you to download them first using `freqtrade download-data`. 
+For details on downloading, please refer to the [relevant section](#Getting-data-for-backtesting-and-hyperopt) in the documentation.
 
 The result of backtesting will confirm you if your bot has better odds of making a profit than a loss.
 

From 2a236db18f6fc263a2917d44aaa3c9e2551a609d Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 8 Sep 2019 19:27:42 +0200
Subject: [PATCH 0435/3421] Pass test-data to dockerized backtest

---
 build_helpers/publish_docker.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build_helpers/publish_docker.sh b/build_helpers/publish_docker.sh
index 7a8127c44..839ca0876 100755
--- a/build_helpers/publish_docker.sh
+++ b/build_helpers/publish_docker.sh
@@ -23,7 +23,7 @@ if [ $? -ne 0 ]; then
 fi
 
 # Run backtest
-docker run --rm -it -v $(pwd)/config.json.example:/freqtrade/config.json:ro freqtrade:${TAG} --datadir freqtrade/tests/testdata backtesting
+docker run --rm -it -v $(pwd)/config.json.example:/freqtrade/config.json:ro -v $(pwd)/tests:/tests freqtrade:${TAG} --datadir /tests/testdata backtesting
 
 if [ $? -ne 0 ]; then
     echo "failed running backtest"

From 867a3273ced30d090cae402aa9f9363144f2a27b Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 8 Sep 2019 19:38:16 +0200
Subject: [PATCH 0436/3421] Fix random failure if config.json exists

---
 tests/test_plotting.py | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tests/test_plotting.py b/tests/test_plotting.py
index 465e3462d..a30d7d04a 100644
--- a/tests/test_plotting.py
+++ b/tests/test_plotting.py
@@ -336,12 +336,17 @@ def test_start_plot_profit(mocker):
 
 
 def test_start_plot_profit_error(mocker):
+
     args = [
         "plot-profit",
         "--pairs", "ETH/BTC"
     ]
+    argsp = get_args(args)
+    # Make sure we use no config. Details: #2241
+    # not resetting config causes random failures if config.json exists
+    argsp.config = []
     with pytest.raises(OperationalException):
-        start_plot_profit(get_args(args))
+        start_plot_profit(argsp)
 
 
 def test_plot_profit(default_conf, mocker, testdatadir, caplog):

From c5726e88e8bf90416d05a69c446f704c92911931 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 8 Sep 2019 19:45:50 +0200
Subject: [PATCH 0437/3421] Don't gitignore sample_strategy

---
 .gitignore | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.gitignore b/.gitignore
index e0b7a7b8f..9ac2c9d5d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@ config*.json
 *.sqlite
 logfile.txt
 user_data/*
+!user_data/strategy/sample_strategy.py
 !user_data/notebooks
 user_data/notebooks/*
 !user_data/notebooks/*example.ipynb

From 34308504214e9edae4bc3e13bc326f5f521a0c28 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 8 Sep 2019 19:47:16 +0200
Subject: [PATCH 0438/3421] don't print in tests

---
 tests/edge/test_edge.py                | 2 --
 tests/exchange/test_exchange.py        | 2 --
 tests/optimize/test_backtest_detail.py | 1 -
 tests/optimize/test_backtesting.py     | 1 -
 tests/optimize/test_hyperopt.py        | 6 ------
 tests/test_configuration.py            | 2 --
 tests/test_freqtradebot.py             | 1 -
 tests/test_persistence.py              | 1 -
 8 files changed, 16 deletions(-)

diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py
index d5f282d7b..4fab68591 100644
--- a/tests/edge/test_edge.py
+++ b/tests/edge/test_edge.py
@@ -155,8 +155,6 @@ def test_edge_results(edge_conf, mocker, caplog, data) -> None:
     trades = edge._find_trades_for_stoploss_range(frame, 'TEST/BTC', [data.stop_loss])
     results = edge._fill_calculable_fields(DataFrame(trades)) if trades else DataFrame()
 
-    print(results)
-
     assert len(trades) == len(data.trades)
 
     if not results.empty:
diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index e23db42d2..5ab7cdb47 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -1035,7 +1035,6 @@ def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name):
     exchange._async_get_candle_history = Mock(wraps=mock_candle_hist)
     # one_call calculation * 1.8 should do 2 calls
     since = 5 * 60 * 500 * 1.8
-    print(f"since = {since}")
     ret = exchange.get_historic_ohlcv(pair, "5m", int((arrow.utcnow().timestamp - since) * 1000))
 
     assert exchange._async_get_candle_history.call_count == 2
@@ -1340,7 +1339,6 @@ def test_get_order(default_conf, mocker, exchange_name):
     order.myid = 123
     exchange = get_patched_exchange(mocker, default_conf, id=exchange_name)
     exchange._dry_run_open_orders['X'] = order
-    print(exchange.get_order('X', 'TKN/BTC'))
     assert exchange.get_order('X', 'TKN/BTC').myid == 123
 
     with pytest.raises(InvalidOrderException, match=r'Tried to get an invalid dry-run-order.*'):
diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py
index 8cd88a479..1bcd9b08e 100644
--- a/tests/optimize/test_backtest_detail.py
+++ b/tests/optimize/test_backtest_detail.py
@@ -308,7 +308,6 @@ def test_backtest_results(default_conf, fee, mocker, caplog, data) -> None:
             'end_date': max_date,
         }
     )
-    print(results.T)
 
     assert len(results) == len(data.trades)
     assert round(results["profit_percent"].sum(), 3) == round(data.profit_perc, 3)
diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py
index 34c0322cb..770f6c4ba 100644
--- a/tests/optimize/test_backtesting.py
+++ b/tests/optimize/test_backtesting.py
@@ -451,7 +451,6 @@ def test_generate_text_table_strategyn(default_conf, mocker):
         '| LTC/BTC    |           3 |          30.00 |          90.00 '
         '|       1.30000000 |          45.00 | 0:20:00        |        3 |      0 |'
     )
-    print(backtesting._generate_text_table_strategy(all_results=results))
     assert backtesting._generate_text_table_strategy(all_results=results) == result_str
 
 
diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index 900405f03..f5c8bf0ae 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -214,9 +214,6 @@ def test_start(mocker, default_conf, caplog) -> None:
     args = get_args(args)
     start_hyperopt(args)
 
-    import pprint
-    pprint.pprint(caplog.record_tuples)
-
     assert log_has('Starting freqtrade in Hyperopt mode', caplog)
     assert start_mock.call_count == 1
 
@@ -239,9 +236,6 @@ def test_start_no_data(mocker, default_conf, caplog) -> None:
     args = get_args(args)
     start_hyperopt(args)
 
-    import pprint
-    pprint.pprint(caplog.record_tuples)
-
     assert log_has('No data found. Terminating.', caplog)
 
 
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 20ebda440..3717f4d1b 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -27,7 +27,6 @@ from tests.conftest import (log_has, log_has_re,
 @pytest.fixture(scope="function")
 def all_conf():
     config_file = Path(__file__).parents[1] / "config_full.json.example"
-    print(config_file)
     conf = load_config_file(str(config_file))
     return conf
 
@@ -713,7 +712,6 @@ def test_load_config_test_comments() -> None:
     Load config with comments
     """
     config_file = Path(__file__).parents[0] / "config_test_comments.json"
-    print(config_file)
     conf = load_config_file(str(config_file))
 
     assert conf
diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index 4ffa863e6..a67659d8c 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -970,7 +970,6 @@ def test_execute_buy(mocker, default_conf, fee, markets, limit_buy_order) -> Non
         markets=PropertyMock(return_value=markets)
     )
     pair = 'ETH/BTC'
-    print(buy_mm.call_args_list)
 
     assert freqtrade.execute_buy(pair, stake_amount)
     assert get_bid.call_count == 1
diff --git a/tests/test_persistence.py b/tests/test_persistence.py
index 85c244f7a..6bd223a9b 100644
--- a/tests/test_persistence.py
+++ b/tests/test_persistence.py
@@ -729,7 +729,6 @@ def test_to_json(default_conf, fee):
     )
     result = trade.to_json()
     assert isinstance(result, dict)
-    print(result)
 
     assert result == {'trade_id': None,
                       'pair': 'ETH/BTC',

From a5510d14e93ebd801fc093259ac47a362da7a3e8 Mon Sep 17 00:00:00 2001
From: Jonathan Raviotta 
Date: Thu, 5 Sep 2019 16:00:16 -0400
Subject: [PATCH 0439/3421] de-mangling

---
 freqtrade/data/history.py    | 2 +-
 freqtrade/plot/plot_utils.py | 4 ++--
 freqtrade/plot/plotting.py   | 5 +----
 tests/test_plotting.py       | 6 +++---
 4 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index a71dc373c..b4776fab0 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -61,7 +61,7 @@ def load_tickerdata_file(datadir: Path, pair: str, ticker_interval: str,
                          timerange: Optional[TimeRange] = None) -> Optional[list]:
     """
     Load a pair from file, either .json.gz or .json
-    :return: tickerlist or None if unsuccesful
+    :return: tickerlist or None if unsuccessful
     """
     filename = pair_data_filename(datadir, pair, ticker_interval)
     pairdata = misc.file_load_json(filename)
diff --git a/freqtrade/plot/plot_utils.py b/freqtrade/plot/plot_utils.py
index d7d8919d5..d7fb326d1 100644
--- a/freqtrade/plot/plot_utils.py
+++ b/freqtrade/plot/plot_utils.py
@@ -17,11 +17,11 @@ def start_plot_dataframe(args: Namespace) -> None:
     Entrypoint for dataframe plotting
     """
     # Import here to avoid errors if plot-dependencies are not installed.
-    from freqtrade.plot.plotting import analyse_and_plot_pairs
+    from freqtrade.plot.plotting import load_and_plot_trades
     validate_plot_args(args)
     config = setup_utils_configuration(args, RunMode.PLOT)
 
-    analyse_and_plot_pairs(config)
+    load_and_plot_trades(config)
 
 
 def start_plot_profit(args: Namespace) -> None:
diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py
index b0b8e3df9..1627959f9 100644
--- a/freqtrade/plot/plotting.py
+++ b/freqtrade/plot/plotting.py
@@ -3,7 +3,6 @@ from pathlib import Path
 from typing import Any, Dict, List
 
 import pandas as pd
-
 from freqtrade.configuration import TimeRange
 from freqtrade.data import history
 from freqtrade.data.btanalysis import (combine_tickers_with_mean,
@@ -324,7 +323,7 @@ def store_plot_file(fig, filename: str, directory: Path, auto_open: bool = False
     logger.info(f"Stored plot as {_filename}")
 
 
-def analyse_and_plot_pairs(config: Dict[str, Any]):
+def load_and_plot_trades(config: Dict[str, Any]):
     """
     From configuration provided
     - Initializes plot-script
@@ -339,7 +338,6 @@ def analyse_and_plot_pairs(config: Dict[str, Any]):
 
     plot_elements = init_plotscript(config)
     trades = plot_elements['trades']
-
     pair_counter = 0
     for pair, data in plot_elements["tickers"].items():
         pair_counter += 1
@@ -348,7 +346,6 @@ def analyse_and_plot_pairs(config: Dict[str, Any]):
         tickers[pair] = data
 
         dataframe = strategy.analyze_ticker(tickers[pair], {'pair': pair})
-
         trades_pair = trades.loc[trades['pair'] == pair]
         trades_pair = extract_trades_of_period(dataframe, trades_pair)
 
diff --git a/tests/test_plotting.py b/tests/test_plotting.py
index a30d7d04a..7debff071 100644
--- a/tests/test_plotting.py
+++ b/tests/test_plotting.py
@@ -32,7 +32,7 @@ def find_trace_in_fig_data(data, search_string: str):
     return next(matches)
 
 
-def generage_empty_figure():
+def generate_empty_figure():
     return make_subplots(
         rows=3,
         cols=1,
@@ -72,7 +72,7 @@ def test_add_indicators(default_conf, testdatadir, caplog):
     # Generate buy/sell signals and indicators
     strat = DefaultStrategy(default_conf)
     data = strat.analyze_ticker(data, {'pair': pair})
-    fig = generage_empty_figure()
+    fig = generate_empty_figure()
 
     # Row 1
     fig1 = add_indicators(fig=deepcopy(fig), row=1, indicators=indicators1, data=data)
@@ -210,7 +210,7 @@ def test_generate_Plot_filename():
 
 
 def test_generate_plot_file(mocker, caplog):
-    fig = generage_empty_figure()
+    fig = generate_empty_figure()
     plot_mock = mocker.patch("freqtrade.plot.plotting.plot", MagicMock())
     store_plot_file(fig, filename="freqtrade-plot-UNITTEST_BTC-5m.html",
                     directory=Path("user_data/plots"))

From adbc0159aec0f5d82cda1e16bb138c3cc57349c8 Mon Sep 17 00:00:00 2001
From: Jonathan Raviotta 
Date: Fri, 6 Sep 2019 18:59:42 -0400
Subject: [PATCH 0440/3421] changed more occuranes of function

---
 tests/test_plotting.py | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/tests/test_plotting.py b/tests/test_plotting.py
index 7debff071..2c3b8a339 100644
--- a/tests/test_plotting.py
+++ b/tests/test_plotting.py
@@ -13,7 +13,7 @@ from freqtrade.data import history
 from freqtrade.data.btanalysis import create_cum_profit, load_backtest_data
 from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit
 from freqtrade.plot.plotting import (add_indicators, add_profit,
-                                     analyse_and_plot_pairs,
+                                     load_and_plot_trades,
                                      generate_candlestick_graph,
                                      generate_plot_filename,
                                      generate_profit_graph, init_plotscript,
@@ -94,7 +94,7 @@ def test_add_indicators(default_conf, testdatadir, caplog):
 
 
 def test_plot_trades(testdatadir, caplog):
-    fig1 = generage_empty_figure()
+    fig1 = generate_empty_figure()
     # nothing happens when no trades are available
     fig = plot_trades(fig1, None)
     assert fig == fig1
@@ -230,7 +230,7 @@ def test_add_profit(testdatadir):
 
     df = history.load_pair_history(pair="POWR/BTC", ticker_interval='5m',
                                    datadir=testdatadir, timerange=timerange)
-    fig = generage_empty_figure()
+    fig = generate_empty_figure()
 
     cum_profits = create_cum_profit(df.set_index('date'),
                                     bt_data[bt_data["pair"] == 'POWR/BTC'],
@@ -279,7 +279,7 @@ def test_generate_profit_graph(testdatadir):
 
 
 def test_start_plot_dataframe(mocker):
-    aup = mocker.patch("freqtrade.plot.plotting.analyse_and_plot_pairs", MagicMock())
+    aup = mocker.patch("freqtrade.plot.plotting.load_and_plot_trades", MagicMock())
     args = [
         "--config", "config.json.example",
         "plot-dataframe",
@@ -293,7 +293,7 @@ def test_start_plot_dataframe(mocker):
     assert called_config['pairs'] == ["ETH/BTC"]
 
 
-def test_analyse_and_plot_pairs(default_conf, mocker, caplog, testdatadir):
+def test_load_and_plot_trades(default_conf, mocker, caplog, testdatadir):
     default_conf['trade_source'] = 'file'
     default_conf["datadir"] = testdatadir
     default_conf['exportfilename'] = str(testdatadir / "backtest-result_test.json")
@@ -308,7 +308,7 @@ def test_analyse_and_plot_pairs(default_conf, mocker, caplog, testdatadir):
         generate_candlestick_graph=candle_mock,
         store_plot_file=store_mock
         )
-    analyse_and_plot_pairs(default_conf)
+    load_and_plot_trades(default_conf)
 
     # Both mocks should be called once per pair
     assert candle_mock.call_count == 2

From edba5a001415b0c95adb79b089e4cb8d96210a5f Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 9 Sep 2019 08:21:22 +0000
Subject: [PATCH 0441/3421] Bump numpy from 1.17.1 to 1.17.2

Bumps [numpy](https://github.com/numpy/numpy) from 1.17.1 to 1.17.2.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt)
- [Commits](https://github.com/numpy/numpy/compare/v1.17.1...v1.17.2)

Signed-off-by: dependabot-preview[bot] 
---
 requirements.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements.txt b/requirements.txt
index cf264ee81..9a723fee4 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,6 @@
 # Load common requirements
 -r requirements-common.txt
 
-numpy==1.17.1
+numpy==1.17.2
 pandas==0.25.1
 scipy==1.3.1

From 3c869a8032f1c99cf1c5e8e5501d7e7b37a86a88 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 9 Sep 2019 08:21:33 +0000
Subject: [PATCH 0442/3421] Bump arrow from 0.14.6 to 0.15.0

Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.14.6 to 0.15.0.
- [Release notes](https://github.com/crsmithdev/arrow/releases)
- [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.md)
- [Commits](https://github.com/crsmithdev/arrow/compare/0.14.6...0.15.0)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index 7b6befaf6..a8d6c9eb4 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -3,7 +3,7 @@
 ccxt==1.18.1115
 SQLAlchemy==1.3.8
 python-telegram-bot==12.0.0
-arrow==0.14.6
+arrow==0.15.0
 cachetools==3.1.1
 requests==2.22.0
 urllib3==1.25.3

From 7dc3e67bbae48edbea465f806f481d2129218dfe Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 9 Sep 2019 08:21:55 +0000
Subject: [PATCH 0443/3421] Bump plotly from 4.1.0 to 4.1.1

Bumps [plotly](https://github.com/plotly/plotly.py) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v4.1.0...v4.1.1)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-plot.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-plot.txt b/requirements-plot.txt
index f10bfac3f..1f1df4ecc 100644
--- a/requirements-plot.txt
+++ b/requirements-plot.txt
@@ -1,5 +1,5 @@
 # Include all requirements to run the bot.
 -r requirements.txt
 
-plotly==4.1.0
+plotly==4.1.1
 

From e8e05b687671d222a99e2b937077b364c6ed3649 Mon Sep 17 00:00:00 2001
From: Ashton Honnecke 
Date: Mon, 9 Sep 2019 09:24:40 -0600
Subject: [PATCH 0444/3421] split docker composes

---
 docker-compose.develop.yml | 19 +++++++++++++++++++
 docker-compose.prod.yml    |  8 ++++++++
 docker-compose.yml         |  1 +
 scripts/pytest.sh          |  5 +++++
 4 files changed, 33 insertions(+)
 create mode 100644 docker-compose.develop.yml
 create mode 100644 docker-compose.prod.yml
 create mode 120000 docker-compose.yml
 create mode 100755 scripts/pytest.sh

diff --git a/docker-compose.develop.yml b/docker-compose.develop.yml
new file mode 100644
index 000000000..4dfdb9357
--- /dev/null
+++ b/docker-compose.develop.yml
@@ -0,0 +1,19 @@
+---
+version: '3'
+services:
+  freqtrade_develop:
+    build:
+      context: .
+      dockerfile: "./Dockerfile"
+    volumes:
+      - ".:/freqtrade"
+
+  pytest:
+    build:
+      context: .
+      dockerfile: "./Dockerfile.develop"
+    volumes:
+      - ".:/freqtrade"
+    command:
+      ["./scripts/pytest.sh"]
+
diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml
new file mode 100644
index 000000000..cae98c3ee
--- /dev/null
+++ b/docker-compose.prod.yml
@@ -0,0 +1,8 @@
+---
+version: '3'
+services:
+  freqtrade:
+    image: freqtradeorg/freqtrade:master
+    volumes:
+      - "./user_data:/freqtrade/user_data"
+      - "./config.json:/freqtrade/config.json"
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 120000
index 000000000..945318087
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1 @@
+docker-compose.prod.yml
\ No newline at end of file
diff --git a/scripts/pytest.sh b/scripts/pytest.sh
new file mode 100755
index 000000000..e05ff1ad0
--- /dev/null
+++ b/scripts/pytest.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+echo "Running Unit tests"
+
+pytest --random-order --cov=freqtrade --cov-config=.coveragerc freqtrade/tests/

From 3398f31b871badd1c5c9f2abf0bf7b51e17c1d08 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 9 Sep 2019 17:40:31 +0000
Subject: [PATCH 0445/3421] Bump ccxt from 1.18.1115 to 1.18.1124

Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1115 to 1.18.1124.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1115...1.18.1124)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index a8d6c9eb4..30c93950a 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -1,6 +1,6 @@
 # requirements without requirements installable via conda
 # mainly used for Raspberry pi installs
-ccxt==1.18.1115
+ccxt==1.18.1124
 SQLAlchemy==1.3.8
 python-telegram-bot==12.0.0
 arrow==0.15.0

From 9aa7db103d3197ce5a190ece2d0190db2990ae51 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Mon, 9 Sep 2019 19:59:41 +0200
Subject: [PATCH 0446/3421] Add test for failing case

---
 tests/rpc/test_fiat_convert.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/tests/rpc/test_fiat_convert.py b/tests/rpc/test_fiat_convert.py
index 8f6b2eb93..05760ce25 100644
--- a/tests/rpc/test_fiat_convert.py
+++ b/tests/rpc/test_fiat_convert.py
@@ -210,3 +210,10 @@ def test_convert_amount(mocker):
         fiat_symbol="BTC"
     )
     assert result == 1.23
+
+    result = fiat_convert.convert_amount(
+        crypto_amount="1.23",
+        crypto_symbol="BTC",
+        fiat_symbol="BTC"
+    )
+    assert result == 1.23

From 94d2790ab5df93b703b8da45a9e16caea2c4abc9 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Mon, 9 Sep 2019 20:00:13 +0200
Subject: [PATCH 0447/3421] Fix #2239 -

return float even if fiat/crypto are identical
---
 freqtrade/rpc/fiat_convert.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/freqtrade/rpc/fiat_convert.py b/freqtrade/rpc/fiat_convert.py
index 6812bf77f..74ccc62ed 100644
--- a/freqtrade/rpc/fiat_convert.py
+++ b/freqtrade/rpc/fiat_convert.py
@@ -104,7 +104,7 @@ class CryptoToFiatConverter(object):
         :return: float, value in fiat of the crypto-currency amount
         """
         if crypto_symbol == fiat_symbol:
-            return crypto_amount
+            return float(crypto_amount)
         price = self.get_price(crypto_symbol=crypto_symbol, fiat_symbol=fiat_symbol)
         return float(crypto_amount) * float(price)
 

From 85f1291597b507a997b62e750c66444afad2ece5 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Mon, 9 Sep 2019 20:18:47 +0200
Subject: [PATCH 0448/3421] use git log to print version

---
 freqtrade/__init__.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/freqtrade/__init__.py b/freqtrade/__init__.py
index 175b689f9..83fee0b0d 100644
--- a/freqtrade/__init__.py
+++ b/freqtrade/__init__.py
@@ -5,8 +5,9 @@ if __version__ == 'develop':
 
     try:
         import subprocess
-        __version__ = str(subprocess.check_output(
-            ["git", "describe"], stderr=subprocess.DEVNULL).rstrip())
+        __version__ = 'develop-' + subprocess.check_output(
+            ['git', 'log', '--format="%h"', '-n 1'],
+            stderr=subprocess.DEVNULL).decode("utf-8").rstrip().strip('"')
     except Exception:
         # git not available, ignore
         pass

From 35580b135a1ab2fa04bc046b93ba6aa28edf0bb2 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 10 Sep 2019 10:42:45 +0300
Subject: [PATCH 0449/3421] Improve backtesting logs

---
 freqtrade/optimize/backtesting.py | 44 +++++++++++++++-----------
 freqtrade/persistence.py          | 52 +++++++++++++------------------
 freqtrade/strategy/interface.py   | 39 +++++++++++++----------
 3 files changed, 69 insertions(+), 66 deletions(-)

diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py
index 708b60144..752a83d2d 100644
--- a/freqtrade/optimize/backtesting.py
+++ b/freqtrade/optimize/backtesting.py
@@ -239,14 +239,16 @@ class Backtesting(object):
             stake_amount: float, max_open_trades: int) -> Optional[BacktestResult]:
 
         trade = Trade(
+            pair=pair,
             open_rate=buy_row.open,
             open_date=buy_row.date,
             stake_amount=stake_amount,
             amount=stake_amount / buy_row.open,
             fee_open=self.fee,
-            fee_close=self.fee
+            fee_close=self.fee,
+            is_open=True,
         )
-
+        logger.debug(f"'{pair}' - Backtesting emulates creation of new trade: {trade}.")
         # calculate win/lose forwards from buy point
         for sell_row in partial_ticker:
             if max_open_trades > 0:
@@ -289,23 +291,25 @@ class Backtesting(object):
         if partial_ticker:
             # no sell condition found - trade stil open at end of backtest period
             sell_row = partial_ticker[-1]
-            btr = BacktestResult(pair=pair,
-                                 profit_percent=trade.calc_profit_percent(rate=sell_row.open),
-                                 profit_abs=trade.calc_profit(rate=sell_row.open),
-                                 open_time=buy_row.date,
-                                 close_time=sell_row.date,
-                                 trade_duration=int((
-                                     sell_row.date - buy_row.date).total_seconds() // 60),
-                                 open_index=buy_row.Index,
-                                 close_index=sell_row.Index,
-                                 open_at_end=True,
-                                 open_rate=buy_row.open,
-                                 close_rate=sell_row.open,
-                                 sell_reason=SellType.FORCE_SELL
-                                 )
-            logger.debug('Force_selling still open trade %s with %s perc - %s', btr.pair,
-                         btr.profit_percent, btr.profit_abs)
-            return btr
+            bt_res = BacktestResult(pair=pair,
+                                    profit_percent=trade.calc_profit_percent(rate=sell_row.open),
+                                    profit_abs=trade.calc_profit(rate=sell_row.open),
+                                    open_time=buy_row.date,
+                                    close_time=sell_row.date,
+                                    trade_duration=int((
+                                        sell_row.date - buy_row.date).total_seconds() // 60),
+                                    open_index=buy_row.Index,
+                                    close_index=sell_row.Index,
+                                    open_at_end=True,
+                                    open_rate=buy_row.open,
+                                    close_rate=sell_row.open,
+                                    sell_reason=SellType.FORCE_SELL
+                                    )
+            logger.debug(f"'{pair}' - Force selling still open trade, "
+                         f"profit percent: {bt_res.profit_percent}, "
+                         f"profit abs: {bt_res.profit_abs}")
+
+            return bt_res
         return None
 
     def backtest(self, args: Dict) -> DataFrame:
@@ -384,6 +388,8 @@ class Backtesting(object):
                                                          max_open_trades)
 
                 if trade_entry:
+                    logger.debug(f"'{pair}' - Locking pair till "
+                                 f"close_time={trade_entry.close_time}")
                     lock_pair_until[pair] = trade_entry.close_time
                     trades.append(trade_entry)
                 else:
diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py
index dff7e4ff6..608243d54 100644
--- a/freqtrade/persistence.py
+++ b/freqtrade/persistence.py
@@ -1,7 +1,6 @@
 """
 This module contains the class to persist trades into SQLite
 """
-
 import logging
 from datetime import datetime
 from decimal import Decimal
@@ -19,8 +18,10 @@ from sqlalchemy.pool import StaticPool
 
 from freqtrade import OperationalException
 
+
 logger = logging.getLogger(__name__)
 
+
 _DECL_BASE: Any = declarative_base()
 _SQL_DOCS_URL = 'http://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls'
 
@@ -209,7 +210,8 @@ class Trade(_DECL_BASE):
     ticker_interval = Column(Integer, nullable=True)
 
     def __repr__(self):
-        open_since = arrow.get(self.open_date).humanize() if self.is_open else 'closed'
+        open_since = (f"{arrow.get(self.open_date).strftime('%Y-%m-%d %H:%M:%S')} "
+                     f"({arrow.get(self.open_date).humanize()})" ) if self.is_open else 'closed'
 
         return (f'Trade(id={self.id}, pair={self.pair}, amount={self.amount:.8f}, '
                 f'open_rate={self.open_rate:.8f}, open_since={open_since})')
@@ -250,7 +252,6 @@ class Trade(_DECL_BASE):
         :param initial: Called to initiate stop_loss.
             Skips everything if self.stop_loss is already set.
         """
-
         if initial and not (self.stop_loss is None or self.stop_loss == 0):
             # Don't modify if called with initial and nothing to do
             return
@@ -259,7 +260,7 @@ class Trade(_DECL_BASE):
 
         # no stop loss assigned yet
         if not self.stop_loss:
-            logger.debug("assigning new stop loss")
+            logger.debug(f"'{self.pair}' - Assigning new stoploss...")
             self.stop_loss = new_loss
             self.stop_loss_pct = -1 * abs(stoploss)
             self.initial_stop_loss = new_loss
@@ -269,21 +270,21 @@ class Trade(_DECL_BASE):
         # evaluate if the stop loss needs to be updated
         else:
             if new_loss > self.stop_loss:  # stop losses only walk up, never down!
+                logger.debug(f"'{self.pair}' - Adjusting stoploss...")
                 self.stop_loss = new_loss
                 self.stop_loss_pct = -1 * abs(stoploss)
                 self.stoploss_last_update = datetime.utcnow()
-                logger.debug("adjusted stop loss")
             else:
-                logger.debug("keeping current stop loss")
+                logger.debug(f"'{self.pair}' - Keeping current stoploss...")
 
         logger.debug(
-            f"{self.pair} - current price {current_price:.8f}, "
+            f"'{self.pair}' - Stoploss adjusted. Current price {current_price:.8f}, "
             f"bought at {self.open_rate:.8f} and calculated "
-            f"stop loss is at: {self.initial_stop_loss:.8f} initial "
-            f"stop at {self.stop_loss:.8f}. "
-            f"trailing stop loss saved us: "
+            f"stoploss is at: {self.initial_stop_loss:.8f}, "
+            f"initial stop at {self.stop_loss:.8f}. "
+            f"Trailing stoploss saved us: "
             f"{float(self.stop_loss) - float(self.initial_stop_loss):.8f} "
-            f"and max observed rate was {self.max_rate:.8f}")
+            f"and max observed rate was {self.max_rate:.8f}.")
 
     def update(self, order: Dict) -> None:
         """
@@ -331,24 +332,19 @@ class Trade(_DECL_BASE):
             self
         )
 
-    def calc_open_trade_price(
-            self,
-            fee: Optional[float] = None) -> float:
+    def calc_open_trade_price(self, fee: Optional[float] = None) -> float:
         """
         Calculate the open_rate including fee.
         :param fee: fee to use on the open rate (optional).
         If rate is not set self.fee will be used
         :return: Price in of the open trade incl. Fees
         """
-
         buy_trade = (Decimal(self.amount) * Decimal(self.open_rate))
         fees = buy_trade * Decimal(fee or self.fee_open)
         return float(buy_trade + fees)
 
-    def calc_close_trade_price(
-            self,
-            rate: Optional[float] = None,
-            fee: Optional[float] = None) -> float:
+    def calc_close_trade_price(self, rate: Optional[float] = None,
+                               fee: Optional[float] = None) -> float:
         """
         Calculate the close_rate including fee
         :param fee: fee to use on the close rate (optional).
@@ -357,7 +353,6 @@ class Trade(_DECL_BASE):
         If rate is not set self.close_rate will be used
         :return: Price in BTC of the open trade
         """
-
         if rate is None and not self.close_rate:
             return 0.0
 
@@ -365,10 +360,8 @@ class Trade(_DECL_BASE):
         fees = sell_trade * Decimal(fee or self.fee_close)
         return float(sell_trade - fees)
 
-    def calc_profit(
-            self,
-            rate: Optional[float] = None,
-            fee: Optional[float] = None) -> float:
+    def calc_profit(self, rate: Optional[float] = None,
+                    fee: Optional[float] = None) -> float:
         """
         Calculate the absolute profit in stake currency between Close and Open trade
         :param fee: fee to use on the close rate (optional).
@@ -385,10 +378,8 @@ class Trade(_DECL_BASE):
         profit = close_trade_price - open_trade_price
         return float(f"{profit:.8f}")
 
-    def calc_profit_percent(
-            self,
-            rate: Optional[float] = None,
-            fee: Optional[float] = None) -> float:
+    def calc_profit_percent(self, rate: Optional[float] = None,
+                            fee: Optional[float] = None) -> float:
         """
         Calculates the profit in percentage (including fee).
         :param rate: rate to compare with (optional).
@@ -396,7 +387,6 @@ class Trade(_DECL_BASE):
         :param fee: fee to use on the close rate (optional).
         :return: profit in percentage as float
         """
-
         open_trade_price = self.calc_open_trade_price()
         close_trade_price = self.calc_close_trade_price(
             rate=(rate or self.close_rate),
@@ -436,8 +426,8 @@ class Trade(_DECL_BASE):
                and trade.initial_stop_loss_pct != desired_stoploss):
                 # Stoploss value got changed
 
-                logger.info(f"Stoploss for {trade} needs adjustment.")
+                logger.info(f"Stoploss for {trade} needs adjustment...")
                 # Force reset of stoploss
                 trade.stop_loss = None
                 trade.adjust_stop_loss(trade.open_rate, desired_stoploss)
-                logger.info(f"new stoploss: {trade.stop_loss}, ")
+                logger.info(f"New stoploss: {trade.stop_loss}.")
diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py
index 6c6593a53..d4b89a3ae 100644
--- a/freqtrade/strategy/interface.py
+++ b/freqtrade/strategy/interface.py
@@ -202,7 +202,6 @@ class IStrategy(ABC):
         :param metadata: Metadata dictionary with additional data (e.g. 'pair')
         :return: DataFrame with ticker data and indicator data
         """
-
         pair = str(metadata.get('pair'))
 
         # Test if seen this pair and last candle before.
@@ -292,7 +291,6 @@ class IStrategy(ABC):
         :param force_stoploss: Externally provided stoploss
         :return: True if trade should be sold, False otherwise
         """
-
         # Set current rate to low for backtesting sell
         current_rate = low or rate
         current_profit = trade.calc_profit_percent(current_rate)
@@ -304,6 +302,8 @@ class IStrategy(ABC):
                                               force_stoploss=force_stoploss, high=high)
 
         if stoplossflag.sell_flag:
+            logger.debug(f"'{trade.pair}' - Stoploss hit. Selling "
+                         f"(sell_type={stoplossflag.sell_type})...")
             return stoplossflag
 
         # Set current rate to high for backtesting sell
@@ -312,22 +312,30 @@ class IStrategy(ABC):
         experimental = self.config.get('experimental', {})
 
         if buy and experimental.get('ignore_roi_if_buy_signal', False):
-            logger.debug('Buy signal still active - not selling.')
+            logger.debug(f"'{trade.pair}' - Buy signal still active. Not selling "
+                         f"(sell_type=SellType.NONE)...")
             return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 
         # Check if minimal roi has been reached and no longer in buy conditions (avoiding a fee)
         if self.min_roi_reached(trade=trade, current_profit=current_profit, current_time=date):
-            logger.debug('Required profit reached. Selling..')
+            logger.debug(f"'{trade.pair}' - Required profit reached. Selling "
+                         f"(sell_type=SellType.ROI)...")
             return SellCheckTuple(sell_flag=True, sell_type=SellType.ROI)
 
         if experimental.get('sell_profit_only', False):
-            logger.debug('Checking if trade is profitable..')
+            logger.debug(f"'{trade.pair}' - Checking if trade is profitable...")
             if trade.calc_profit(rate=rate) <= 0:
+                logger.debug(f"'{trade.pair}' - Trade is not profitable. Not selling "
+                             f"(sell_type=SellType.NONE)...")
                 return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
+
         if sell and not buy and experimental.get('use_sell_signal', False):
-            logger.debug('Sell signal received. Selling..')
+            logger.debug(f"'{trade.pair}' - Sell signal received. Selling "
+                         f"(sell_type=SellType.SELL_SIGNAL)...")
             return SellCheckTuple(sell_flag=True, sell_type=SellType.SELL_SIGNAL)
 
+        # This one is noisy, commented out...
+#        logger.debug(f"'{trade.pair}' - Not selling (sell_type=SellType.NONE)...")
         return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 
     def stop_loss_reached(self, current_rate: float, trade: Trade,
@@ -338,7 +346,6 @@ class IStrategy(ABC):
         decides to sell or not
         :param current_profit: current profit in percent
         """
-
         trailing_stop = self.config.get('trailing_stop', False)
         stop_loss_value = force_stoploss if force_stoploss else self.stoploss
 
@@ -359,7 +366,7 @@ class IStrategy(ABC):
                 if 'trailing_stop_positive' in self.config and high_profit > sl_offset:
                     # Ignore mypy error check in configuration that this is a float
                     stop_loss_value = self.config.get('trailing_stop_positive')  # type: ignore
-                    logger.debug(f"using positive stop loss: {stop_loss_value} "
+                    logger.debug(f"'{trade.pair}' - Using positive stoploss: {stop_loss_value} "
                                  f"offset: {sl_offset:.4g} profit: {current_profit:.4f}%")
 
                 trade.adjust_stop_loss(high or current_rate, stop_loss_value)
@@ -369,20 +376,20 @@ class IStrategy(ABC):
             (trade.stop_loss >= current_rate) and
                 (not self.order_types.get('stoploss_on_exchange'))):
 
-            selltype = SellType.STOP_LOSS
+            sell_type = SellType.STOP_LOSS
 
             # If initial stoploss is not the same as current one then it is trailing.
             if trade.initial_stop_loss != trade.stop_loss:
-                selltype = SellType.TRAILING_STOP_LOSS
+                sell_type = SellType.TRAILING_STOP_LOSS
                 logger.debug(
-                    f"HIT STOP: current price at {current_rate:.6f}, "
-                    f"stop loss is {trade.stop_loss:.6f}, "
-                    f"initial stop loss was at {trade.initial_stop_loss:.6f}, "
+                    f"'{trade.pair}' - HIT STOP: current price at {current_rate:.6f}, "
+                    f"stoploss is {trade.stop_loss:.6f}, "
+                    f"initial stoploss was at {trade.initial_stop_loss:.6f}, "
                     f"trade opened at {trade.open_rate:.6f}")
-                logger.debug(f"trailing stop saved {trade.stop_loss - trade.initial_stop_loss:.6f}")
+                logger.debug(f"'{trade.pair}' - Trailing stop saved "
+                             f"{trade.stop_loss - trade.initial_stop_loss:.6f}")
 
-            logger.debug('Stop loss hit.')
-            return SellCheckTuple(sell_flag=True, sell_type=selltype)
+            return SellCheckTuple(sell_flag=True, sell_type=sell_type)
 
         return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 

From e298e773198150a0ec9fdd4d36b4f16001b87f65 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 10 Sep 2019 10:43:15 +0300
Subject: [PATCH 0450/3421] Adjust tests

---
 tests/test_freqtradebot.py | 44 ++++++++++++++++++++------------------
 1 file changed, 23 insertions(+), 21 deletions(-)

diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index a67659d8c..388553dc5 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -1823,7 +1823,7 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order,
     # if ROI is reached we must sell
     patch_get_signal(freqtrade, value=(False, True))
     assert freqtrade.handle_trade(trade)
-    assert log_has('Required profit reached. Selling..', caplog)
+    assert log_has("'ETH/BTC' - Required profit reached. Selling (sell_type=SellType.ROI)...", caplog)
 
 
 def test_handle_trade_experimental(
@@ -1853,7 +1853,7 @@ def test_handle_trade_experimental(
 
     patch_get_signal(freqtrade, value=(False, True))
     assert freqtrade.handle_trade(trade)
-    assert log_has('Sell signal received. Selling..', caplog)
+    assert log_has("'ETH/BTC' - Sell signal received. Selling (sell_type=SellType.SELL_SIGNAL)...", caplog)
 
 
 def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order,
@@ -2132,6 +2132,7 @@ def test_check_handle_timedout_exception(default_conf, ticker, mocker, caplog) -
     )
     freqtrade = FreqtradeBot(default_conf)
 
+    open_date = arrow.utcnow().shift(minutes=-601)
     trade_buy = Trade(
         pair='ETH/BTC',
         open_rate=0.00001099,
@@ -2141,16 +2142,16 @@ def test_check_handle_timedout_exception(default_conf, ticker, mocker, caplog) -
         fee_open=0.0,
         fee_close=0.0,
         stake_amount=1,
-        open_date=arrow.utcnow().shift(minutes=-601).datetime,
+        open_date=open_date.datetime,
         is_open=True
     )
 
     Trade.session.add(trade_buy)
 
     freqtrade.check_handle_timedout()
-    assert log_has_re(r'Cannot query order for Trade\(id=1, pair=ETH/BTC, amount=90.99181073, '
-                      r'open_rate=0.00001099, open_since=10 hours ago\) due to Traceback \(most '
-                      r'recent call last\):\n.*', caplog)
+    assert log_has_re(f"Cannot query order for Trade\(id=1, pair=ETH/BTC, amount=90.99181073, "
+                      f"open_rate=0.00001099, open_since={open_date.strftime('%Y-%m-%d %H:%M:%S')} "
+                      f"\(10 hours ago\)\) due to Traceback \(most recent call last\):\n*", caplog)
 
 
 def test_handle_timedout_limit_buy(mocker, default_conf) -> None:
@@ -2793,8 +2794,9 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, markets, caplog,
     # Sell as trailing-stop is reached
     assert freqtrade.handle_trade(trade) is True
     assert log_has(
-        f'HIT STOP: current price at 0.000012, stop loss is 0.000015, '
-        f'initial stop loss was at 0.000010, trade opened at 0.000011', caplog)
+        f"'ETH/BTC' - HIT STOP: current price at 0.000012, "
+        f"stoploss is 0.000015, "
+        f"initial stoploss was at 0.000010, trade opened at 0.000011", caplog)
     assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value
 
 
@@ -2836,8 +2838,8 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, markets
                  }))
     # stop-loss not reached, adjusted stoploss
     assert freqtrade.handle_trade(trade) is False
-    assert log_has(f'using positive stop loss: 0.01 offset: 0 profit: 0.2666%', caplog)
-    assert log_has(f'adjusted stop loss', caplog)
+    assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.01 offset: 0 profit: 0.2666%", caplog)
+    assert log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog)
     assert trade.stop_loss == 0.0000138501
 
     mocker.patch('freqtrade.exchange.Exchange.get_ticker',
@@ -2849,9 +2851,9 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, markets
     # Lower price again (but still positive)
     assert freqtrade.handle_trade(trade) is True
     assert log_has(
-        f'HIT STOP: current price at {buy_price + 0.000002:.6f}, '
-        f'stop loss is {trade.stop_loss:.6f}, '
-        f'initial stop loss was at 0.000010, trade opened at 0.000011', caplog)
+        f"'ETH/BTC' - HIT STOP: current price at {buy_price + 0.000002:.6f}, "
+        f"stoploss is {trade.stop_loss:.6f}, "
+        f"initial stoploss was at 0.000010, trade opened at 0.000011", caplog)
 
 
 def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee,
@@ -2894,8 +2896,8 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee,
                  }))
     # stop-loss not reached, adjusted stoploss
     assert freqtrade.handle_trade(trade) is False
-    assert log_has(f'using positive stop loss: 0.01 offset: 0.011 profit: 0.2666%', caplog)
-    assert log_has(f'adjusted stop loss', caplog)
+    assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.01 offset: 0.011 profit: 0.2666%", caplog)
+    assert log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog)
     assert trade.stop_loss == 0.0000138501
 
     mocker.patch('freqtrade.exchange.Exchange.get_ticker',
@@ -2907,9 +2909,9 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee,
     # Lower price again (but still positive)
     assert freqtrade.handle_trade(trade) is True
     assert log_has(
-        f'HIT STOP: current price at {buy_price + 0.000002:.6f}, '
-        f'stop loss is {trade.stop_loss:.6f}, '
-        f'initial stop loss was at 0.000010, trade opened at 0.000011', caplog)
+        f"'ETH/BTC' - HIT STOP: current price at {buy_price + 0.000002:.6f}, "
+        f"stoploss is {trade.stop_loss:.6f}, "
+        f"initial stoploss was at 0.000010, trade opened at 0.000011", caplog)
     assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value
 
 
@@ -2960,7 +2962,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee,
     # stop-loss should not be adjusted as offset is not reached yet
     assert freqtrade.handle_trade(trade) is False
 
-    assert not log_has(f'adjusted stop loss', caplog)
+    assert not log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog)
     assert trade.stop_loss == 0.0000098910
 
     # price rises above the offset (rises 12% when the offset is 5.5%)
@@ -2972,8 +2974,8 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee,
                  }))
 
     assert freqtrade.handle_trade(trade) is False
-    assert log_has(f'using positive stop loss: 0.05 offset: 0.055 profit: 0.1218%', caplog)
-    assert log_has(f'adjusted stop loss', caplog)
+    assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.05 offset: 0.055 profit: 0.1218%", caplog)
+    assert log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog)
     assert trade.stop_loss == 0.0000117705
 
 

From 2081d7552f9b92dd2ec2f8d996d6a8c645965381 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 10 Sep 2019 12:37:15 +0300
Subject: [PATCH 0451/3421] Make flake happy

---
 freqtrade/persistence.py   |  2 +-
 tests/test_freqtradebot.py | 20 +++++++++++++-------
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py
index 608243d54..be9374ebe 100644
--- a/freqtrade/persistence.py
+++ b/freqtrade/persistence.py
@@ -211,7 +211,7 @@ class Trade(_DECL_BASE):
 
     def __repr__(self):
         open_since = (f"{arrow.get(self.open_date).strftime('%Y-%m-%d %H:%M:%S')} "
-                     f"({arrow.get(self.open_date).humanize()})" ) if self.is_open else 'closed'
+                      f"({arrow.get(self.open_date).humanize()})") if self.is_open else 'closed'
 
         return (f'Trade(id={self.id}, pair={self.pair}, amount={self.amount:.8f}, '
                 f'open_rate={self.open_rate:.8f}, open_since={open_since})')
diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index 388553dc5..cb6259c22 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -1823,7 +1823,8 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order,
     # if ROI is reached we must sell
     patch_get_signal(freqtrade, value=(False, True))
     assert freqtrade.handle_trade(trade)
-    assert log_has("'ETH/BTC' - Required profit reached. Selling (sell_type=SellType.ROI)...", caplog)
+    assert log_has("'ETH/BTC' - Required profit reached. Selling (sell_type=SellType.ROI)...",
+                   caplog)
 
 
 def test_handle_trade_experimental(
@@ -1853,7 +1854,8 @@ def test_handle_trade_experimental(
 
     patch_get_signal(freqtrade, value=(False, True))
     assert freqtrade.handle_trade(trade)
-    assert log_has("'ETH/BTC' - Sell signal received. Selling (sell_type=SellType.SELL_SIGNAL)...", caplog)
+    assert log_has("'ETH/BTC' - Sell signal received. Selling (sell_type=SellType.SELL_SIGNAL)...",
+                   caplog)
 
 
 def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order,
@@ -2149,9 +2151,11 @@ def test_check_handle_timedout_exception(default_conf, ticker, mocker, caplog) -
     Trade.session.add(trade_buy)
 
     freqtrade.check_handle_timedout()
-    assert log_has_re(f"Cannot query order for Trade\(id=1, pair=ETH/BTC, amount=90.99181073, "
-                      f"open_rate=0.00001099, open_since={open_date.strftime('%Y-%m-%d %H:%M:%S')} "
-                      f"\(10 hours ago\)\) due to Traceback \(most recent call last\):\n*", caplog)
+    assert log_has_re(f"Cannot query order for Trade\\(id=1, pair=ETH/BTC, amount=90.99181073, "
+                      f"open_rate=0.00001099, open_since="
+                      f"{open_date.strftime('%Y-%m-%d %H:%M:%S')} "
+                      f"\\(10 hours ago\\)\\) due to Traceback \\(most recent call last\\):\n*",
+                      caplog)
 
 
 def test_handle_timedout_limit_buy(mocker, default_conf) -> None:
@@ -2896,7 +2900,8 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee,
                  }))
     # stop-loss not reached, adjusted stoploss
     assert freqtrade.handle_trade(trade) is False
-    assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.01 offset: 0.011 profit: 0.2666%", caplog)
+    assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.01 offset: 0.011 profit: 0.2666%",
+                   caplog)
     assert log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog)
     assert trade.stop_loss == 0.0000138501
 
@@ -2974,7 +2979,8 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee,
                  }))
 
     assert freqtrade.handle_trade(trade) is False
-    assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.05 offset: 0.055 profit: 0.1218%", caplog)
+    assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.05 offset: 0.055 profit: 0.1218%",
+                   caplog)
     assert log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog)
     assert trade.stop_loss == 0.0000117705
 

From 869a5b4901a27283c11b0f12be45f91915538fda Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 10 Sep 2019 13:45:30 +0300
Subject: [PATCH 0452/3421] Eliminate asyncio warnings in tests

---
 tests/exchange/test_exchange.py |  6 +++--
 tests/rpc/test_rpc.py           |  3 ++-
 tests/rpc/test_rpc_telegram.py  | 16 +++++++++-----
 tests/test_freqtradebot.py      | 39 ++++++++++++++++++++-------------
 4 files changed, 40 insertions(+), 24 deletions(-)

diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index 5ab7cdb47..9279e0026 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -69,7 +69,8 @@ def test_init(default_conf, mocker, caplog):
     assert log_has('Instance is running with dry_run enabled', caplog)
 
 
-def test_init_ccxt_kwargs(default_conf, mocker, caplog):
+@pytest.mark.asyncio
+async def test_init_ccxt_kwargs(default_conf, mocker, caplog):
     mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={}))
     caplog.set_level(logging.INFO)
     conf = copy.deepcopy(default_conf)
@@ -1362,7 +1363,8 @@ def test_get_order(default_conf, mocker, exchange_name):
 
 
 @pytest.mark.parametrize("exchange_name", EXCHANGES)
-def test_name(default_conf, mocker, exchange_name):
+@pytest.mark.asyncio
+async def test_name(default_conf, mocker, exchange_name):
     mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={}))
     default_conf['exchange']['name'] = exchange_name
     exchange = Exchange(default_conf)
diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py
index ff5869009..265f24ab9 100644
--- a/tests/rpc/test_rpc.py
+++ b/tests/rpc/test_rpc.py
@@ -26,7 +26,8 @@ def prec_satoshi(a, b) -> float:
 
 
 # Unit tests
-def test_rpc_trade_status(default_conf, ticker, fee, markets, mocker) -> None:
+@pytest.mark.asyncio
+async def test_rpc_trade_status(default_conf, ticker, fee, markets, mocker) -> None:
     mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock())
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py
index cf741a7ea..4f1409362 100644
--- a/tests/rpc/test_rpc_telegram.py
+++ b/tests/rpc/test_rpc_telegram.py
@@ -723,8 +723,9 @@ def test_reload_conf_handle(default_conf, update, mocker) -> None:
     assert 'reloading config' in msg_mock.call_args_list[0][0][0]
 
 
-def test_forcesell_handle(default_conf, update, ticker, fee,
-                          ticker_sell_up, markets, mocker) -> None:
+@pytest.mark.asyncio
+async def test_forcesell_handle(default_conf, update, ticker, fee,
+                                ticker_sell_up, markets, mocker) -> None:
     mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0)
     rpc_mock = mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg', MagicMock())
     mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock())
@@ -775,8 +776,9 @@ def test_forcesell_handle(default_conf, update, ticker, fee,
     } == last_msg
 
 
-def test_forcesell_down_handle(default_conf, update, ticker, fee,
-                               ticker_sell_down, markets, mocker) -> None:
+@pytest.mark.asyncio
+async def test_forcesell_down_handle(default_conf, update, ticker, fee,
+                                     ticker_sell_down, markets, mocker) -> None:
     mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter._find_price',
                  return_value=15000.0)
     rpc_mock = mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg', MagicMock())
@@ -923,7 +925,8 @@ def test_forcesell_handle_invalid(default_conf, update, mocker) -> None:
     assert 'invalid argument' in msg_mock.call_args_list[0][0][0]
 
 
-def test_forcebuy_handle(default_conf, update, markets, mocker) -> None:
+@pytest.mark.asyncio
+async def test_forcebuy_handle(default_conf, update, markets, mocker) -> None:
     mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0)
     mocker.patch('freqtrade.rpc.telegram.Telegram._send_msg', MagicMock())
     mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock())
@@ -963,7 +966,8 @@ def test_forcebuy_handle(default_conf, update, markets, mocker) -> None:
     assert fbuy_mock.call_args_list[0][0][1] == 0.055
 
 
-def test_forcebuy_handle_exception(default_conf, update, markets, mocker) -> None:
+@pytest.mark.asyncio
+async def test_forcebuy_handle_exception(default_conf, update, markets, mocker) -> None:
     mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0)
     rpc_mock = mocker.patch('freqtrade.rpc.telegram.Telegram._send_msg', MagicMock())
     mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock())
diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index a67659d8c..4f68e6397 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -2198,7 +2198,8 @@ def test_handle_timedout_limit_sell(mocker, default_conf) -> None:
     assert cancel_order_mock.call_count == 1
 
 
-def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, markets, mocker) -> None:
+@pytest.mark.asyncio
+async def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, markets, mocker) -> None:
     rpc_mock = patch_RPCManager(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
@@ -2244,7 +2245,9 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, markets, moc
     } == last_msg
 
 
-def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, markets, mocker) -> None:
+@pytest.mark.asyncio
+async def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down,
+                                 markets, mocker) -> None:
     rpc_mock = patch_RPCManager(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
@@ -2291,9 +2294,10 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, markets,
     } == last_msg
 
 
-def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fee,
-                                                        ticker_sell_down,
-                                                        markets, mocker) -> None:
+@pytest.mark.asyncio
+async def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fee,
+                                                              ticker_sell_down,
+                                                              markets, mocker) -> None:
     rpc_mock = patch_RPCManager(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
@@ -2377,9 +2381,10 @@ def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee,
     assert log_has('Could not cancel stoploss order abcd', caplog)
 
 
-def test_execute_sell_with_stoploss_on_exchange(default_conf,
-                                                ticker, fee, ticker_sell_up,
-                                                markets, mocker) -> None:
+@pytest.mark.asyncio
+async def test_execute_sell_with_stoploss_on_exchange(default_conf,
+                                                      ticker, fee, ticker_sell_up,
+                                                      markets, mocker) -> None:
 
     default_conf['exchange']['name'] = 'binance'
     rpc_mock = patch_RPCManager(mocker)
@@ -2432,10 +2437,11 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf,
     assert rpc_mock.call_count == 2
 
 
-def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf,
-                                                         ticker, fee,
-                                                         limit_buy_order,
-                                                         markets, mocker) -> None:
+@pytest.mark.asyncio
+async def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf,
+                                                               ticker, fee,
+                                                               limit_buy_order,
+                                                               markets, mocker) -> None:
     default_conf['exchange']['name'] = 'binance'
     rpc_mock = patch_RPCManager(mocker)
     mocker.patch.multiple(
@@ -2499,8 +2505,9 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf,
     assert rpc_mock.call_count == 2
 
 
-def test_execute_sell_market_order(default_conf, ticker, fee,
-                                   ticker_sell_up, markets, mocker) -> None:
+@pytest.mark.asyncio
+async def test_execute_sell_market_order(default_conf, ticker, fee,
+                                         ticker_sell_up, markets, mocker) -> None:
     rpc_mock = patch_RPCManager(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
@@ -2676,7 +2683,9 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, marke
     assert trade.sell_reason == SellType.SELL_SIGNAL.value
 
 
-def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, markets, mocker, caplog) -> None:
+@pytest.mark.asyncio
+async def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down,
+                            markets, mocker, caplog) -> None:
     patch_RPCManager(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',

From a9ecdc7764b81cccd401b98c47b695b4edeb7e73 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 11 Sep 2019 00:18:07 +0300
Subject: [PATCH 0453/3421] Use patched exchange instead

---
 tests/exchange/test_exchange.py | 10 ++----
 tests/rpc/test_rpc.py           |  5 ++-
 tests/rpc/test_rpc_telegram.py  | 30 ++++++------------
 tests/test_freqtradebot.py      | 55 ++++++++++++++-------------------
 4 files changed, 38 insertions(+), 62 deletions(-)

diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index 9279e0026..694a2228e 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -69,8 +69,7 @@ def test_init(default_conf, mocker, caplog):
     assert log_has('Instance is running with dry_run enabled', caplog)
 
 
-@pytest.mark.asyncio
-async def test_init_ccxt_kwargs(default_conf, mocker, caplog):
+def test_init_ccxt_kwargs(default_conf, mocker, caplog):
     mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={}))
     caplog.set_level(logging.INFO)
     conf = copy.deepcopy(default_conf)
@@ -1363,11 +1362,8 @@ def test_get_order(default_conf, mocker, exchange_name):
 
 
 @pytest.mark.parametrize("exchange_name", EXCHANGES)
-@pytest.mark.asyncio
-async def test_name(default_conf, mocker, exchange_name):
-    mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={}))
-    default_conf['exchange']['name'] = exchange_name
-    exchange = Exchange(default_conf)
+def test_name(default_conf, mocker, exchange_name):
+    exchange = get_patched_exchange(mocker, default_conf, id=exchange_name)
 
     assert exchange.name == exchange_name.title()
     assert exchange.id == exchange_name
diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py
index 265f24ab9..66468927f 100644
--- a/tests/rpc/test_rpc.py
+++ b/tests/rpc/test_rpc.py
@@ -26,12 +26,11 @@ def prec_satoshi(a, b) -> float:
 
 
 # Unit tests
-@pytest.mark.asyncio
-async def test_rpc_trade_status(default_conf, ticker, fee, markets, mocker) -> None:
+def test_rpc_trade_status(default_conf, ticker, fee, markets, mocker) -> None:
     mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock())
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py
index 4f1409362..1e392703b 100644
--- a/tests/rpc/test_rpc_telegram.py
+++ b/tests/rpc/test_rpc_telegram.py
@@ -723,19 +723,17 @@ def test_reload_conf_handle(default_conf, update, mocker) -> None:
     assert 'reloading config' in msg_mock.call_args_list[0][0][0]
 
 
-@pytest.mark.asyncio
-async def test_forcesell_handle(default_conf, update, ticker, fee,
-                                ticker_sell_up, markets, mocker) -> None:
+def test_forcesell_handle(default_conf, update, ticker, fee,
+                          ticker_sell_up, markets, mocker) -> None:
     mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0)
     rpc_mock = mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg', MagicMock())
     mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock())
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(return_value=markets),
-        validate_pairs=MagicMock(return_value={})
     )
 
     freqtradebot = FreqtradeBot(default_conf)
@@ -776,20 +774,18 @@ async def test_forcesell_handle(default_conf, update, ticker, fee,
     } == last_msg
 
 
-@pytest.mark.asyncio
-async def test_forcesell_down_handle(default_conf, update, ticker, fee,
-                                     ticker_sell_down, markets, mocker) -> None:
+def test_forcesell_down_handle(default_conf, update, ticker, fee,
+                               ticker_sell_down, markets, mocker) -> None:
     mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter._find_price',
                  return_value=15000.0)
     rpc_mock = mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg', MagicMock())
     mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock())
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(return_value=markets),
-        validate_pairs=MagicMock(return_value={})
     )
 
     freqtradebot = FreqtradeBot(default_conf)
@@ -845,7 +841,6 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, markets, mocker
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(return_value=markets),
-        validate_pairs=MagicMock(return_value={})
     )
     default_conf['max_open_trades'] = 4
     freqtradebot = FreqtradeBot(default_conf)
@@ -925,16 +920,14 @@ def test_forcesell_handle_invalid(default_conf, update, mocker) -> None:
     assert 'invalid argument' in msg_mock.call_args_list[0][0][0]
 
 
-@pytest.mark.asyncio
-async def test_forcebuy_handle(default_conf, update, markets, mocker) -> None:
+def test_forcebuy_handle(default_conf, update, markets, mocker) -> None:
     mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0)
     mocker.patch('freqtrade.rpc.telegram.Telegram._send_msg', MagicMock())
     mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock())
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         markets=PropertyMock(markets),
-        validate_pairs=MagicMock(return_value={})
         )
     fbuy_mock = MagicMock(return_value=None)
     mocker.patch('freqtrade.rpc.RPC._rpc_forcebuy', fbuy_mock)
@@ -966,16 +959,14 @@ async def test_forcebuy_handle(default_conf, update, markets, mocker) -> None:
     assert fbuy_mock.call_args_list[0][0][1] == 0.055
 
 
-@pytest.mark.asyncio
-async def test_forcebuy_handle_exception(default_conf, update, markets, mocker) -> None:
+def test_forcebuy_handle_exception(default_conf, update, markets, mocker) -> None:
     mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0)
     rpc_mock = mocker.patch('freqtrade.rpc.telegram.Telegram._send_msg', MagicMock())
     mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock())
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         markets=PropertyMock(markets),
-        validate_pairs=MagicMock(return_value={})
     )
     freqtradebot = FreqtradeBot(default_conf)
     patch_get_signal(freqtradebot, (True, False))
@@ -1002,7 +993,6 @@ def test_performance_handle(default_conf, update, ticker, fee,
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(markets),
-        validate_pairs=MagicMock(return_value={})
     )
     mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock())
     freqtradebot = FreqtradeBot(default_conf)
diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index 4f68e6397..2e5014e0c 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -2198,12 +2198,11 @@ def test_handle_timedout_limit_sell(mocker, default_conf) -> None:
     assert cancel_order_mock.call_count == 1
 
 
-@pytest.mark.asyncio
-async def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, markets, mocker) -> None:
+def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, markets, mocker) -> None:
     rpc_mock = patch_RPCManager(mocker)
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
@@ -2245,13 +2244,11 @@ async def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, market
     } == last_msg
 
 
-@pytest.mark.asyncio
-async def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down,
-                                 markets, mocker) -> None:
+def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, markets, mocker) -> None:
     rpc_mock = patch_RPCManager(mocker)
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
@@ -2294,14 +2291,13 @@ async def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down,
     } == last_msg
 
 
-@pytest.mark.asyncio
-async def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fee,
-                                                              ticker_sell_down,
-                                                              markets, mocker) -> None:
+def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fee,
+                                                        ticker_sell_down,
+                                                        markets, mocker) -> None:
     rpc_mock = patch_RPCManager(mocker)
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
@@ -2356,9 +2352,9 @@ def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee,
     freqtrade = get_patched_freqtradebot(mocker, default_conf)
     mocker.patch('freqtrade.exchange.Exchange.cancel_order', side_effect=InvalidOrderException())
     sellmock = MagicMock()
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(return_value=markets),
@@ -2381,16 +2377,15 @@ def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee,
     assert log_has('Could not cancel stoploss order abcd', caplog)
 
 
-@pytest.mark.asyncio
-async def test_execute_sell_with_stoploss_on_exchange(default_conf,
-                                                      ticker, fee, ticker_sell_up,
-                                                      markets, mocker) -> None:
+def test_execute_sell_with_stoploss_on_exchange(default_conf,
+                                                ticker, fee, ticker_sell_up,
+                                                markets, mocker) -> None:
 
     default_conf['exchange']['name'] = 'binance'
     rpc_mock = patch_RPCManager(mocker)
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
@@ -2437,16 +2432,15 @@ async def test_execute_sell_with_stoploss_on_exchange(default_conf,
     assert rpc_mock.call_count == 2
 
 
-@pytest.mark.asyncio
-async def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf,
-                                                               ticker, fee,
-                                                               limit_buy_order,
-                                                               markets, mocker) -> None:
+def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf,
+                                                         ticker, fee,
+                                                         limit_buy_order,
+                                                         markets, mocker) -> None:
     default_conf['exchange']['name'] = 'binance'
     rpc_mock = patch_RPCManager(mocker)
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
@@ -2505,13 +2499,12 @@ async def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf,
     assert rpc_mock.call_count == 2
 
 
-@pytest.mark.asyncio
-async def test_execute_sell_market_order(default_conf, ticker, fee,
-                                         ticker_sell_up, markets, mocker) -> None:
+def test_execute_sell_market_order(default_conf, ticker, fee,
+                                   ticker_sell_up, markets, mocker) -> None:
     rpc_mock = patch_RPCManager(mocker)
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
@@ -2683,13 +2676,11 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, marke
     assert trade.sell_reason == SellType.SELL_SIGNAL.value
 
 
-@pytest.mark.asyncio
-async def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down,
-                            markets, mocker, caplog) -> None:
+def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, markets, mocker, caplog) -> None:
     patch_RPCManager(mocker)
+    patch_exchange(mocker)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
-        _load_markets=MagicMock(return_value={}),
         get_ticker=ticker,
         get_fee=fee,
         markets=PropertyMock(return_value=markets)

From c01953daf2a68f9e51fade461f87151c65255c81 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 11 Sep 2019 06:57:58 +0200
Subject: [PATCH 0454/3421] Remove kraken block

---
 freqtrade/exchange/exchange.py | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index d5c4a6b1c..d48d18ebf 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -30,9 +30,6 @@ BAD_EXCHANGES = {
     "bitmex": "Various reasons",
     "bitstamp": "Does not provide history. "
                 "Details in https://github.com/freqtrade/freqtrade/issues/1983",
-    "kraken": "TEMPORARY: Balance does not report free balance, so freqtrade will not know "
-              "if enough balance is available."
-              "Details in https://github.com/freqtrade/freqtrade/issues/1687#issuecomment-528509266"
     }
 
 

From ac413c65dcc7839fdb8458cd324ce1794b11d352 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 11 Sep 2019 09:52:09 +0300
Subject: [PATCH 0455/3421] Clean up the use of patch_exchange

---
 tests/conftest.py              | 2 +-
 tests/rpc/test_rpc_telegram.py | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/conftest.py b/tests/conftest.py
index a007aeb7e..8a5ba6683 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -117,7 +117,7 @@ def patch_freqtradebot(mocker, config) -> None:
     """
     mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock())
     persistence.init(config['db_url'])
-    patch_exchange(mocker, None)
+    patch_exchange(mocker)
     mocker.patch('freqtrade.freqtradebot.RPCManager._init', MagicMock())
     mocker.patch('freqtrade.freqtradebot.RPCManager.send_msg', MagicMock())
 
diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py
index 1e392703b..a776ad5df 100644
--- a/tests/rpc/test_rpc_telegram.py
+++ b/tests/rpc/test_rpc_telegram.py
@@ -90,7 +90,7 @@ def test_cleanup(default_conf, mocker) -> None:
 
 
 def test_authorized_only(default_conf, mocker, caplog) -> None:
-    patch_exchange(mocker, None)
+    patch_exchange(mocker)
 
     chat = Chat(0, 0)
     update = Update(randint(1, 100))
@@ -108,7 +108,7 @@ def test_authorized_only(default_conf, mocker, caplog) -> None:
 
 
 def test_authorized_only_unauthorized(default_conf, mocker, caplog) -> None:
-    patch_exchange(mocker, None)
+    patch_exchange(mocker)
     chat = Chat(0xdeadbeef, 0)
     update = Update(randint(1, 100))
     update.message = Message(randint(1, 100), 0, datetime.utcnow(), chat)

From 2bd59de00243bb30ebbf24692963c002f5b566eb Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 11 Sep 2019 10:56:02 +0300
Subject: [PATCH 0456/3421] Cleanup log_has_re regexp string

---
 tests/test_freqtradebot.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index cb6259c22..ac2014cd5 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -2151,10 +2151,10 @@ def test_check_handle_timedout_exception(default_conf, ticker, mocker, caplog) -
     Trade.session.add(trade_buy)
 
     freqtrade.check_handle_timedout()
-    assert log_has_re(f"Cannot query order for Trade\\(id=1, pair=ETH/BTC, amount=90.99181073, "
-                      f"open_rate=0.00001099, open_since="
+    assert log_has_re(r"Cannot query order for Trade\(id=1, pair=ETH/BTC, amount=90.99181073, "
+                      r"open_rate=0.00001099, open_since="
                       f"{open_date.strftime('%Y-%m-%d %H:%M:%S')} "
-                      f"\\(10 hours ago\\)\\) due to Traceback \\(most recent call last\\):\n*",
+                      r"\(10 hours ago\)\) due to Traceback \(most recent call last\):\n*",
                       caplog)
 
 

From 3b4bbe7a18718fa00f4aa7161ad7261da97d2677 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 11 Sep 2019 06:58:10 +0200
Subject: [PATCH 0457/3421] Implement get_balances which uses open_orders

---
 freqtrade/exchange/kraken.py | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py
index 91b41a159..df74a762d 100644
--- a/freqtrade/exchange/kraken.py
+++ b/freqtrade/exchange/kraken.py
@@ -2,7 +2,11 @@
 import logging
 from typing import Dict
 
+import ccxt
+
+from freqtrade import OperationalException, TemporaryError
 from freqtrade.exchange import Exchange
+from freqtrade.exchange.exchange import retrier
 
 logger = logging.getLogger(__name__)
 
@@ -10,3 +14,30 @@ logger = logging.getLogger(__name__)
 class Kraken(Exchange):
 
     _params: Dict = {"trading_agreement": "agree"}
+
+    @retrier
+    def get_balances(self) -> dict:
+        if self._config['dry_run']:
+            return {}
+
+        try:
+            balances = self._api.fetch_balance()
+            # Remove additional info from ccxt results
+            balances.pop("info", None)
+            balances.pop("free", None)
+            balances.pop("total", None)
+            balances.pop("used", None)
+
+            orders = self._api.fetch_open_orders()
+            order_list = [[x["symbol"].split("/")[0 if x["side"] == "sell" else 1],
+                           x["remaining"], x["side"], x["amount"], ] for x in orders]
+            for bal in balances:
+                balances[bal]['used'] = sum(order[1] for order in order_list if order[0] == bal)
+                balances[bal]['free'] = balances[bal]['total'] - balances[bal]['used']
+
+            return balances
+        except (ccxt.NetworkError, ccxt.ExchangeError) as e:
+            raise TemporaryError(
+                f'Could not get balance due to {e.__class__.__name__}. Message: {e}') from e
+        except ccxt.BaseError as e:
+            raise OperationalException(e) from e

From f8eb1cd58a47ac6ca6fa21a5ebe8502013cb8796 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 11 Sep 2019 19:43:29 +0200
Subject: [PATCH 0458/3421] Add tests for kraken balance implementation

---
 tests/exchange/test_exchange.py |  3 +-
 tests/exchange/test_kraken.py   | 82 +++++++++++++++++++++++++++++++++
 2 files changed, 84 insertions(+), 1 deletion(-)

diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index 5ab7cdb47..72b3af206 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -867,7 +867,7 @@ def test_get_balance_dry_run(default_conf, mocker):
 @pytest.mark.parametrize("exchange_name", EXCHANGES)
 def test_get_balance_prod(default_conf, mocker, exchange_name):
     api_mock = MagicMock()
-    api_mock.fetch_balance = MagicMock(return_value={'BTC': {'free': 123.4}})
+    api_mock.fetch_balance = MagicMock(return_value={'BTC': {'free': 123.4, 'total': 123.4}})
     default_conf['dry_run'] = False
 
     exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name)
@@ -883,6 +883,7 @@ def test_get_balance_prod(default_conf, mocker, exchange_name):
     with pytest.raises(TemporaryError, match=r'.*balance due to malformed exchange response:.*'):
         exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name)
         mocker.patch('freqtrade.exchange.Exchange.get_balances', MagicMock(return_value={}))
+        mocker.patch('freqtrade.exchange.Kraken.get_balances', MagicMock(return_value={}))
         exchange.get_balance(currency='BTC')
 
 
diff --git a/tests/exchange/test_kraken.py b/tests/exchange/test_kraken.py
index ba94f8b45..3ad62d85a 100644
--- a/tests/exchange/test_kraken.py
+++ b/tests/exchange/test_kraken.py
@@ -4,6 +4,7 @@ from random import randint
 from unittest.mock import MagicMock
 
 from tests.conftest import get_patched_exchange
+from tests.exchange.test_exchange import ccxt_exceptionhandlers
 
 
 def test_buy_kraken_trading_agreement(default_conf, mocker):
@@ -67,3 +68,84 @@ def test_sell_kraken_trading_agreement(default_conf, mocker):
     assert api_mock.create_order.call_args[0][3] == 1
     assert api_mock.create_order.call_args[0][4] is None
     assert api_mock.create_order.call_args[0][5] == {'trading_agreement': 'agree'}
+
+
+def test_get_balances_prod(default_conf, mocker):
+    balance_item = {
+        'free': None,
+        'total': 10.0,
+        'used': 0.0
+    }
+
+    api_mock = MagicMock()
+    api_mock.fetch_balance = MagicMock(return_value={
+        '1ST': balance_item.copy(),
+        '2ST': balance_item.copy(),
+        '3ST': balance_item.copy(),
+        '4ST': balance_item.copy(),
+    })
+    kraken_open_orders = [{'symbol': '1ST/EUR',
+                           'type': 'limit',
+                           'side': 'sell',
+                           'price': 20,
+                           'cost': 0.0,
+                           'amount': 1.0,
+                           'filled': 0.0,
+                           'average': 0.0,
+                           'remaining': 1.0,
+                           },
+                          {'status': 'open',
+                           'symbol': '2ST/EUR',
+                           'type': 'limit',
+                           'side': 'sell',
+                           'price': 20.0,
+                           'cost': 0.0,
+                           'amount': 2.0,
+                           'filled': 0.0,
+                           'average': 0.0,
+                           'remaining': 2.0,
+                           },
+                          {'status': 'open',
+                           'symbol': '2ST/USD',
+                           'type': 'limit',
+                           'side': 'sell',
+                           'price': 20.0,
+                           'cost': 0.0,
+                           'amount': 2.0,
+                           'filled': 0.0,
+                           'average': 0.0,
+                           'remaining': 2.0,
+                           },
+                          {'status': 'open',
+                           'symbol': 'BTC/3ST',
+                           'type': 'limit',
+                           'side': 'buy',
+                           'price': 20,
+                           'cost': 0.0,
+                           'amount': 3.0,
+                           'filled': 0.0,
+                           'average': 0.0,
+                           'remaining': 3.0,
+                           }]
+    api_mock.fetch_open_orders = MagicMock(return_value=kraken_open_orders)
+    default_conf['dry_run'] = False
+    exchange = get_patched_exchange(mocker, default_conf, api_mock, id="kraken")
+    balances = exchange.get_balances()
+    assert len(balances) == 4
+    assert balances['1ST']['free'] == 9.0
+    assert balances['1ST']['total'] == 10.0
+    assert balances['1ST']['used'] == 1.0
+
+    assert balances['2ST']['free'] == 6.0
+    assert balances['2ST']['total'] == 10.0
+    assert balances['2ST']['used'] == 4.0
+
+    assert balances['3ST']['free'] == 7.0
+    assert balances['3ST']['total'] == 10.0
+    assert balances['3ST']['used'] == 3.0
+
+    assert balances['4ST']['free'] == 10.0
+    assert balances['4ST']['total'] == 10.0
+    assert balances['4ST']['used'] == 0.0
+    ccxt_exceptionhandlers(mocker, default_conf, api_mock, "kraken",
+                           "get_balances", "fetch_balance")

From 9bdfaf3803f17588bcb1546770da3bbac0cafd79 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 11 Sep 2019 23:32:08 +0300
Subject: [PATCH 0459/3421] Remove quotes around the pairs

---
 freqtrade/optimize/backtesting.py |  6 +++---
 freqtrade/persistence.py          |  8 ++++----
 freqtrade/strategy/interface.py   | 20 ++++++++++----------
 tests/test_freqtradebot.py        | 28 ++++++++++++++--------------
 4 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py
index 752a83d2d..acfe8392a 100644
--- a/freqtrade/optimize/backtesting.py
+++ b/freqtrade/optimize/backtesting.py
@@ -248,7 +248,7 @@ class Backtesting(object):
             fee_close=self.fee,
             is_open=True,
         )
-        logger.debug(f"'{pair}' - Backtesting emulates creation of new trade: {trade}.")
+        logger.debug(f"{pair} - Backtesting emulates creation of new trade: {trade}.")
         # calculate win/lose forwards from buy point
         for sell_row in partial_ticker:
             if max_open_trades > 0:
@@ -305,7 +305,7 @@ class Backtesting(object):
                                     close_rate=sell_row.open,
                                     sell_reason=SellType.FORCE_SELL
                                     )
-            logger.debug(f"'{pair}' - Force selling still open trade, "
+            logger.debug(f"{pair} - Force selling still open trade, "
                          f"profit percent: {bt_res.profit_percent}, "
                          f"profit abs: {bt_res.profit_abs}")
 
@@ -388,7 +388,7 @@ class Backtesting(object):
                                                          max_open_trades)
 
                 if trade_entry:
-                    logger.debug(f"'{pair}' - Locking pair till "
+                    logger.debug(f"{pair} - Locking pair till "
                                  f"close_time={trade_entry.close_time}")
                     lock_pair_until[pair] = trade_entry.close_time
                     trades.append(trade_entry)
diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py
index be9374ebe..ea5188e0c 100644
--- a/freqtrade/persistence.py
+++ b/freqtrade/persistence.py
@@ -260,7 +260,7 @@ class Trade(_DECL_BASE):
 
         # no stop loss assigned yet
         if not self.stop_loss:
-            logger.debug(f"'{self.pair}' - Assigning new stoploss...")
+            logger.debug(f"{self.pair} - Assigning new stoploss...")
             self.stop_loss = new_loss
             self.stop_loss_pct = -1 * abs(stoploss)
             self.initial_stop_loss = new_loss
@@ -270,15 +270,15 @@ class Trade(_DECL_BASE):
         # evaluate if the stop loss needs to be updated
         else:
             if new_loss > self.stop_loss:  # stop losses only walk up, never down!
-                logger.debug(f"'{self.pair}' - Adjusting stoploss...")
+                logger.debug(f"{self.pair} - Adjusting stoploss...")
                 self.stop_loss = new_loss
                 self.stop_loss_pct = -1 * abs(stoploss)
                 self.stoploss_last_update = datetime.utcnow()
             else:
-                logger.debug(f"'{self.pair}' - Keeping current stoploss...")
+                logger.debug(f"{self.pair} - Keeping current stoploss...")
 
         logger.debug(
-            f"'{self.pair}' - Stoploss adjusted. Current price {current_price:.8f}, "
+            f"{self.pair} - Stoploss adjusted. Current price {current_price:.8f}, "
             f"bought at {self.open_rate:.8f} and calculated "
             f"stoploss is at: {self.initial_stop_loss:.8f}, "
             f"initial stop at {self.stop_loss:.8f}. "
diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py
index d4b89a3ae..1c4b8e669 100644
--- a/freqtrade/strategy/interface.py
+++ b/freqtrade/strategy/interface.py
@@ -302,7 +302,7 @@ class IStrategy(ABC):
                                               force_stoploss=force_stoploss, high=high)
 
         if stoplossflag.sell_flag:
-            logger.debug(f"'{trade.pair}' - Stoploss hit. Selling "
+            logger.debug(f"{trade.pair} - Stoploss hit. Selling "
                          f"(sell_type={stoplossflag.sell_type})...")
             return stoplossflag
 
@@ -312,30 +312,30 @@ class IStrategy(ABC):
         experimental = self.config.get('experimental', {})
 
         if buy and experimental.get('ignore_roi_if_buy_signal', False):
-            logger.debug(f"'{trade.pair}' - Buy signal still active. Not selling "
+            logger.debug(f"{trade.pair} - Buy signal still active. Not selling "
                          f"(sell_type=SellType.NONE)...")
             return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 
         # Check if minimal roi has been reached and no longer in buy conditions (avoiding a fee)
         if self.min_roi_reached(trade=trade, current_profit=current_profit, current_time=date):
-            logger.debug(f"'{trade.pair}' - Required profit reached. Selling "
+            logger.debug(f"{trade.pair} - Required profit reached. Selling "
                          f"(sell_type=SellType.ROI)...")
             return SellCheckTuple(sell_flag=True, sell_type=SellType.ROI)
 
         if experimental.get('sell_profit_only', False):
-            logger.debug(f"'{trade.pair}' - Checking if trade is profitable...")
+            logger.debug(f"{trade.pair} - Checking if trade is profitable...")
             if trade.calc_profit(rate=rate) <= 0:
-                logger.debug(f"'{trade.pair}' - Trade is not profitable. Not selling "
+                logger.debug(f"{trade.pair} - Trade is not profitable. Not selling "
                              f"(sell_type=SellType.NONE)...")
                 return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 
         if sell and not buy and experimental.get('use_sell_signal', False):
-            logger.debug(f"'{trade.pair}' - Sell signal received. Selling "
+            logger.debug(f"{trade.pair} - Sell signal received. Selling "
                          f"(sell_type=SellType.SELL_SIGNAL)...")
             return SellCheckTuple(sell_flag=True, sell_type=SellType.SELL_SIGNAL)
 
         # This one is noisy, commented out...
-#        logger.debug(f"'{trade.pair}' - Not selling (sell_type=SellType.NONE)...")
+#        logger.debug(f"{trade.pair} - Not selling (sell_type=SellType.NONE)...")
         return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 
     def stop_loss_reached(self, current_rate: float, trade: Trade,
@@ -366,7 +366,7 @@ class IStrategy(ABC):
                 if 'trailing_stop_positive' in self.config and high_profit > sl_offset:
                     # Ignore mypy error check in configuration that this is a float
                     stop_loss_value = self.config.get('trailing_stop_positive')  # type: ignore
-                    logger.debug(f"'{trade.pair}' - Using positive stoploss: {stop_loss_value} "
+                    logger.debug(f"{trade.pair} - Using positive stoploss: {stop_loss_value} "
                                  f"offset: {sl_offset:.4g} profit: {current_profit:.4f}%")
 
                 trade.adjust_stop_loss(high or current_rate, stop_loss_value)
@@ -382,11 +382,11 @@ class IStrategy(ABC):
             if trade.initial_stop_loss != trade.stop_loss:
                 sell_type = SellType.TRAILING_STOP_LOSS
                 logger.debug(
-                    f"'{trade.pair}' - HIT STOP: current price at {current_rate:.6f}, "
+                    f"{trade.pair} - HIT STOP: current price at {current_rate:.6f}, "
                     f"stoploss is {trade.stop_loss:.6f}, "
                     f"initial stoploss was at {trade.initial_stop_loss:.6f}, "
                     f"trade opened at {trade.open_rate:.6f}")
-                logger.debug(f"'{trade.pair}' - Trailing stop saved "
+                logger.debug(f"{trade.pair} - Trailing stop saved "
                              f"{trade.stop_loss - trade.initial_stop_loss:.6f}")
 
             return SellCheckTuple(sell_flag=True, sell_type=sell_type)
diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index ac2014cd5..7a74fc333 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -1823,7 +1823,7 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order,
     # if ROI is reached we must sell
     patch_get_signal(freqtrade, value=(False, True))
     assert freqtrade.handle_trade(trade)
-    assert log_has("'ETH/BTC' - Required profit reached. Selling (sell_type=SellType.ROI)...",
+    assert log_has("ETH/BTC - Required profit reached. Selling (sell_type=SellType.ROI)...",
                    caplog)
 
 
@@ -1854,7 +1854,7 @@ def test_handle_trade_experimental(
 
     patch_get_signal(freqtrade, value=(False, True))
     assert freqtrade.handle_trade(trade)
-    assert log_has("'ETH/BTC' - Sell signal received. Selling (sell_type=SellType.SELL_SIGNAL)...",
+    assert log_has("ETH/BTC - Sell signal received. Selling (sell_type=SellType.SELL_SIGNAL)...",
                    caplog)
 
 
@@ -2798,7 +2798,7 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, markets, caplog,
     # Sell as trailing-stop is reached
     assert freqtrade.handle_trade(trade) is True
     assert log_has(
-        f"'ETH/BTC' - HIT STOP: current price at 0.000012, "
+        f"ETH/BTC - HIT STOP: current price at 0.000012, "
         f"stoploss is 0.000015, "
         f"initial stoploss was at 0.000010, trade opened at 0.000011", caplog)
     assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value
@@ -2842,8 +2842,8 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, markets
                  }))
     # stop-loss not reached, adjusted stoploss
     assert freqtrade.handle_trade(trade) is False
-    assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.01 offset: 0 profit: 0.2666%", caplog)
-    assert log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog)
+    assert log_has(f"ETH/BTC - Using positive stoploss: 0.01 offset: 0 profit: 0.2666%", caplog)
+    assert log_has(f"ETH/BTC - Adjusting stoploss...", caplog)
     assert trade.stop_loss == 0.0000138501
 
     mocker.patch('freqtrade.exchange.Exchange.get_ticker',
@@ -2855,7 +2855,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, markets
     # Lower price again (but still positive)
     assert freqtrade.handle_trade(trade) is True
     assert log_has(
-        f"'ETH/BTC' - HIT STOP: current price at {buy_price + 0.000002:.6f}, "
+        f"ETH/BTC - HIT STOP: current price at {buy_price + 0.000002:.6f}, "
         f"stoploss is {trade.stop_loss:.6f}, "
         f"initial stoploss was at 0.000010, trade opened at 0.000011", caplog)
 
@@ -2900,9 +2900,9 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee,
                  }))
     # stop-loss not reached, adjusted stoploss
     assert freqtrade.handle_trade(trade) is False
-    assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.01 offset: 0.011 profit: 0.2666%",
+    assert log_has(f"ETH/BTC - Using positive stoploss: 0.01 offset: 0.011 profit: 0.2666%",
                    caplog)
-    assert log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog)
+    assert log_has(f"ETH/BTC - Adjusting stoploss...", caplog)
     assert trade.stop_loss == 0.0000138501
 
     mocker.patch('freqtrade.exchange.Exchange.get_ticker',
@@ -2914,7 +2914,7 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee,
     # Lower price again (but still positive)
     assert freqtrade.handle_trade(trade) is True
     assert log_has(
-        f"'ETH/BTC' - HIT STOP: current price at {buy_price + 0.000002:.6f}, "
+        f"ETH/BTC - HIT STOP: current price at {buy_price + 0.000002:.6f}, "
         f"stoploss is {trade.stop_loss:.6f}, "
         f"initial stoploss was at 0.000010, trade opened at 0.000011", caplog)
     assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value
@@ -2967,7 +2967,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee,
     # stop-loss should not be adjusted as offset is not reached yet
     assert freqtrade.handle_trade(trade) is False
 
-    assert not log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog)
+    assert not log_has(f"ETH/BTC - Adjusting stoploss...", caplog)
     assert trade.stop_loss == 0.0000098910
 
     # price rises above the offset (rises 12% when the offset is 5.5%)
@@ -2979,9 +2979,9 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee,
                  }))
 
     assert freqtrade.handle_trade(trade) is False
-    assert log_has(f"'ETH/BTC' - Using positive stoploss: 0.05 offset: 0.055 profit: 0.1218%",
+    assert log_has(f"ETH/BTC - Using positive stoploss: 0.05 offset: 0.055 profit: 0.1218%",
                    caplog)
-    assert log_has(f"'ETH/BTC' - Adjusting stoploss...", caplog)
+    assert log_has(f"ETH/BTC - Adjusting stoploss...", caplog)
     assert trade.stop_loss == 0.0000117705
 
 
@@ -3350,8 +3350,8 @@ def test_order_book_bid_strategy2(mocker, default_conf, order_book_l2, markets)
     default_conf['telegram']['enabled'] = False
 
     freqtrade = FreqtradeBot(default_conf)
-    # ordrebook shall be used even if tickers would be lower.
-    assert freqtrade.get_target_bid('ETH/BTC', ) != 0.042
+    # orderbook shall be used even if tickers would be lower.
+    assert freqtrade.get_target_bid('ETH/BTC') != 0.042
     assert ticker_mock.call_count == 0
 
 

From acf3b751f01e6d76722c31ed3d94c5d1140a5b24 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 12 Sep 2019 01:21:14 +0300
Subject: [PATCH 0460/3421] Log sell_flag, do not log sell_type=SellType.NONE

---
 freqtrade/strategy/interface.py | 20 +++++++++-----------
 tests/test_freqtradebot.py      |  4 ++--
 2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py
index 1c4b8e669..3c1df276c 100644
--- a/freqtrade/strategy/interface.py
+++ b/freqtrade/strategy/interface.py
@@ -302,8 +302,8 @@ class IStrategy(ABC):
                                               force_stoploss=force_stoploss, high=high)
 
         if stoplossflag.sell_flag:
-            logger.debug(f"{trade.pair} - Stoploss hit. Selling "
-                         f"(sell_type={stoplossflag.sell_type})...")
+            logger.debug(f"{trade.pair} - Stoploss hit. sell_flag=True, "
+                         f"sell_type={stoplossflag.sell_type}")
             return stoplossflag
 
         # Set current rate to high for backtesting sell
@@ -312,30 +312,28 @@ class IStrategy(ABC):
         experimental = self.config.get('experimental', {})
 
         if buy and experimental.get('ignore_roi_if_buy_signal', False):
-            logger.debug(f"{trade.pair} - Buy signal still active. Not selling "
-                         f"(sell_type=SellType.NONE)...")
+            logger.debug(f"{trade.pair} - Buy signal still active. sell_flag=False")
             return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 
         # Check if minimal roi has been reached and no longer in buy conditions (avoiding a fee)
         if self.min_roi_reached(trade=trade, current_profit=current_profit, current_time=date):
-            logger.debug(f"{trade.pair} - Required profit reached. Selling "
-                         f"(sell_type=SellType.ROI)...")
+            logger.debug(f"{trade.pair} - Required profit reached. sell_flag=True, "
+                         f"sell_type=SellType.ROI")
             return SellCheckTuple(sell_flag=True, sell_type=SellType.ROI)
 
         if experimental.get('sell_profit_only', False):
             logger.debug(f"{trade.pair} - Checking if trade is profitable...")
             if trade.calc_profit(rate=rate) <= 0:
-                logger.debug(f"{trade.pair} - Trade is not profitable. Not selling "
-                             f"(sell_type=SellType.NONE)...")
+                logger.debug(f"{trade.pair} - Trade is not profitable. sell_flag=False")
                 return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 
         if sell and not buy and experimental.get('use_sell_signal', False):
-            logger.debug(f"{trade.pair} - Sell signal received. Selling "
-                         f"(sell_type=SellType.SELL_SIGNAL)...")
+            logger.debug(f"{trade.pair} - Sell signal received. sell_flag=True, "
+                         f"sell_type=SellType.SELL_SIGNAL")
             return SellCheckTuple(sell_flag=True, sell_type=SellType.SELL_SIGNAL)
 
         # This one is noisy, commented out...
-#        logger.debug(f"{trade.pair} - Not selling (sell_type=SellType.NONE)...")
+#        logger.debug(f"{trade.pair} - No sell signal. sell_flag=False")
         return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 
     def stop_loss_reached(self, current_rate: float, trade: Trade,
diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index 7a74fc333..d34197519 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -1823,7 +1823,7 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order,
     # if ROI is reached we must sell
     patch_get_signal(freqtrade, value=(False, True))
     assert freqtrade.handle_trade(trade)
-    assert log_has("ETH/BTC - Required profit reached. Selling (sell_type=SellType.ROI)...",
+    assert log_has("ETH/BTC - Required profit reached. sell_flag=True, sell_type=SellType.ROI",
                    caplog)
 
 
@@ -1854,7 +1854,7 @@ def test_handle_trade_experimental(
 
     patch_get_signal(freqtrade, value=(False, True))
     assert freqtrade.handle_trade(trade)
-    assert log_has("ETH/BTC - Sell signal received. Selling (sell_type=SellType.SELL_SIGNAL)...",
+    assert log_has("ETH/BTC - Sell signal received. sell_flag=True, sell_type=SellType.SELL_SIGNAL",
                    caplog)
 
 

From 1d781ea9e0591f3589e11c42612380681119bb77 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 12 Sep 2019 02:29:47 +0300
Subject: [PATCH 0461/3421] Refine 'stoploss adjusted' log message

---
 freqtrade/persistence.py | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py
index ea5188e0c..e497a16c7 100644
--- a/freqtrade/persistence.py
+++ b/freqtrade/persistence.py
@@ -278,13 +278,12 @@ class Trade(_DECL_BASE):
                 logger.debug(f"{self.pair} - Keeping current stoploss...")
 
         logger.debug(
-            f"{self.pair} - Stoploss adjusted. Current price {current_price:.8f}, "
-            f"bought at {self.open_rate:.8f} and calculated "
-            f"stoploss is at: {self.initial_stop_loss:.8f}, "
-            f"initial stop at {self.stop_loss:.8f}. "
+            f"{self.pair} - Stoploss adjusted. current_price={current_price:.8f}, "
+            f"open_rate={self.open_rate:.8f}, max_rate={self.max_rate:.8f}, "
+            f"initial_stop_loss={self.initial_stop_loss:.8f}, "
+            f"stop_loss={self.stop_loss:.8f}. "
             f"Trailing stoploss saved us: "
-            f"{float(self.stop_loss) - float(self.initial_stop_loss):.8f} "
-            f"and max observed rate was {self.max_rate:.8f}.")
+            f"{float(self.stop_loss) - float(self.initial_stop_loss):.8f}.")
 
     def update(self, order: Dict) -> None:
         """

From 849d694c27f0a996ce128d36b4bf9a26a8c54cdd Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 12 Sep 2019 04:39:52 +0300
Subject: [PATCH 0462/3421] Don't inherit from object

---
 freqtrade/configuration/arguments.py     | 2 +-
 freqtrade/configuration/configuration.py | 2 +-
 freqtrade/exchange/exchange.py           | 2 +-
 freqtrade/freqtradebot.py                | 2 +-
 freqtrade/optimize/backtesting.py        | 2 +-
 freqtrade/optimize/edge_cli.py           | 2 +-
 freqtrade/resolvers/iresolver.py         | 2 +-
 freqtrade/rpc/fiat_convert.py            | 4 ++--
 freqtrade/rpc/rpc.py                     | 2 +-
 freqtrade/rpc/rpc_manager.py             | 2 +-
 freqtrade/wallets.py                     | 2 +-
 freqtrade/worker.py                      | 2 +-
 12 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index 10350d886..befa42cd1 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -44,7 +44,7 @@ ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url",
 NO_CONF_REQURIED = ["download-data", "plot-dataframe", "plot-profit"]
 
 
-class Arguments(object):
+class Arguments:
     """
     Arguments Class. Manage the arguments received by the cli
     """
diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py
index b1bd3ef1c..8871d1113 100644
--- a/freqtrade/configuration/configuration.py
+++ b/freqtrade/configuration/configuration.py
@@ -22,7 +22,7 @@ from freqtrade.state import RunMode
 logger = logging.getLogger(__name__)
 
 
-class Configuration(object):
+class Configuration:
     """
     Class to read and init the bot configuration
     Reuse this class for the bot, backtesting, hyperopt and every script that required configuration
diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index d5c4a6b1c..63039e69a 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -72,7 +72,7 @@ def retrier(f):
     return wrapper
 
 
-class Exchange(object):
+class Exchange:
 
     _config: Dict = {}
     _params: Dict = {}
diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
index e889402f0..f56b1f2ea 100644
--- a/freqtrade/freqtradebot.py
+++ b/freqtrade/freqtradebot.py
@@ -29,7 +29,7 @@ from freqtrade.wallets import Wallets
 logger = logging.getLogger(__name__)
 
 
-class FreqtradeBot(object):
+class FreqtradeBot:
     """
     Freqtrade is the main class of the bot.
     This is from here the bot start its logic.
diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py
index 708b60144..d8dc971c7 100644
--- a/freqtrade/optimize/backtesting.py
+++ b/freqtrade/optimize/backtesting.py
@@ -44,7 +44,7 @@ class BacktestResult(NamedTuple):
     sell_reason: SellType
 
 
-class Backtesting(object):
+class Backtesting:
     """
     Backtesting class, this class contains all the logic to run a backtest
 
diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py
index 7e0d60843..f22bcb642 100644
--- a/freqtrade/optimize/edge_cli.py
+++ b/freqtrade/optimize/edge_cli.py
@@ -16,7 +16,7 @@ from freqtrade.resolvers import StrategyResolver
 logger = logging.getLogger(__name__)
 
 
-class EdgeCli(object):
+class EdgeCli:
     """
     EdgeCli class, this class contains all the logic to run edge backtesting
 
diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py
index 8d93af568..6303d4801 100644
--- a/freqtrade/resolvers/iresolver.py
+++ b/freqtrade/resolvers/iresolver.py
@@ -12,7 +12,7 @@ from typing import Any, List, Optional, Tuple, Type, Union
 logger = logging.getLogger(__name__)
 
 
-class IResolver(object):
+class IResolver:
     """
     This class contains all the logic to load custom classes
     """
diff --git a/freqtrade/rpc/fiat_convert.py b/freqtrade/rpc/fiat_convert.py
index 74ccc62ed..d40f9221e 100644
--- a/freqtrade/rpc/fiat_convert.py
+++ b/freqtrade/rpc/fiat_convert.py
@@ -15,7 +15,7 @@ from freqtrade.constants import SUPPORTED_FIAT
 logger = logging.getLogger(__name__)
 
 
-class CryptoFiat(object):
+class CryptoFiat:
     """
     Object to describe what is the price of Crypto-currency in a FIAT
     """
@@ -60,7 +60,7 @@ class CryptoFiat(object):
         return self._expiration - time.time() <= 0
 
 
-class CryptoToFiatConverter(object):
+class CryptoToFiatConverter:
     """
     Main class to initiate Crypto to FIAT.
     This object contains a list of pair Crypto, FIAT
diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py
index 213812a70..f994ac006 100644
--- a/freqtrade/rpc/rpc.py
+++ b/freqtrade/rpc/rpc.py
@@ -54,7 +54,7 @@ class RPCException(Exception):
         }
 
 
-class RPC(object):
+class RPC:
     """
     RPC class can be used to have extra feature, like bot data, and access to DB data
     """
diff --git a/freqtrade/rpc/rpc_manager.py b/freqtrade/rpc/rpc_manager.py
index d6e7b174d..802550b94 100644
--- a/freqtrade/rpc/rpc_manager.py
+++ b/freqtrade/rpc/rpc_manager.py
@@ -9,7 +9,7 @@ from freqtrade.rpc import RPC, RPCMessageType
 logger = logging.getLogger(__name__)
 
 
-class RPCManager(object):
+class RPCManager:
     """
     Class to manage RPC objects (Telegram, Slack, ...)
     """
diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py
index c8ab90276..90b68c49d 100644
--- a/freqtrade/wallets.py
+++ b/freqtrade/wallets.py
@@ -17,7 +17,7 @@ class Wallet(NamedTuple):
     total: float = 0
 
 
-class Wallets(object):
+class Wallets:
 
     def __init__(self, config: dict, exchange: Exchange) -> None:
         self._config = config
diff --git a/freqtrade/worker.py b/freqtrade/worker.py
index df792e35e..7a5360824 100755
--- a/freqtrade/worker.py
+++ b/freqtrade/worker.py
@@ -19,7 +19,7 @@ from freqtrade.rpc import RPCMessageType
 logger = logging.getLogger(__name__)
 
 
-class Worker(object):
+class Worker:
     """
     Freqtradebot worker class
     """

From 6c5eff4a7c68d6bfeb9f6a0ed3cfdba9dc7bd833 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 12 Sep 2019 07:03:52 +0200
Subject: [PATCH 0463/3421] Use List of Tuples, remove unused columns

---
 freqtrade/exchange/kraken.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py
index df74a762d..6d3e82eca 100644
--- a/freqtrade/exchange/kraken.py
+++ b/freqtrade/exchange/kraken.py
@@ -29,8 +29,11 @@ class Kraken(Exchange):
             balances.pop("used", None)
 
             orders = self._api.fetch_open_orders()
-            order_list = [[x["symbol"].split("/")[0 if x["side"] == "sell" else 1],
-                           x["remaining"], x["side"], x["amount"], ] for x in orders]
+            order_list = [(x["symbol"].split("/")[0 if x["side"] == "sell" else 1],
+                           x["remaining"],
+                           # Don't remove the below comment, this can be important for debuggung
+                           # x["side"], x["amount"],
+                           ) for x in orders]
             for bal in balances:
                 balances[bal]['used'] = sum(order[1] for order in order_list if order[0] == bal)
                 balances[bal]['free'] = balances[bal]['total'] - balances[bal]['used']

From dda513c9237628a87294acaecf48368ae4637cd5 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 12 Sep 2019 12:13:20 +0300
Subject: [PATCH 0464/3421] Minor class cosmetics

---
 freqtrade/configuration/timerange.py | 2 +-
 freqtrade/data/dataprovider.py       | 2 +-
 freqtrade/edge/__init__.py           | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py
index f980b71ea..ec6eb75e6 100644
--- a/freqtrade/configuration/timerange.py
+++ b/freqtrade/configuration/timerange.py
@@ -7,7 +7,7 @@ from typing import Optional
 import arrow
 
 
-class TimeRange():
+class TimeRange:
     """
     object defining timerange inputs.
     [start/stop]type defines if [start/stop]ts shall be used.
diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py
index 7e2a6b407..eb6ec0f2a 100644
--- a/freqtrade/data/dataprovider.py
+++ b/freqtrade/data/dataprovider.py
@@ -17,7 +17,7 @@ from freqtrade.state import RunMode
 logger = logging.getLogger(__name__)
 
 
-class DataProvider():
+class DataProvider:
 
     def __init__(self, config: dict, exchange: Exchange) -> None:
         self._config = config
diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py
index 807fd8825..66a777ce5 100644
--- a/freqtrade/edge/__init__.py
+++ b/freqtrade/edge/__init__.py
@@ -28,7 +28,7 @@ class PairInfo(NamedTuple):
     avg_trade_duration: float
 
 
-class Edge():
+class Edge:
     """
     Calculates Win Rate, Risk Reward Ratio, Expectancy
     against historical data for a give set of markets and a strategy

From 045ca8739dc5c35101e06906632d54865f79c7a3 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 12 Sep 2019 20:56:00 +0300
Subject: [PATCH 0465/3421] Do not print humanized datetime in the log message

---
 freqtrade/persistence.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py
index e497a16c7..1850aafd9 100644
--- a/freqtrade/persistence.py
+++ b/freqtrade/persistence.py
@@ -210,8 +210,7 @@ class Trade(_DECL_BASE):
     ticker_interval = Column(Integer, nullable=True)
 
     def __repr__(self):
-        open_since = (f"{arrow.get(self.open_date).strftime('%Y-%m-%d %H:%M:%S')} "
-                      f"({arrow.get(self.open_date).humanize()})") if self.is_open else 'closed'
+        open_since = self.open_date.strftime('%Y-%m-%d %H:%M:%S') if self.is_open else 'closed'
 
         return (f'Trade(id={self.id}, pair={self.pair}, amount={self.amount:.8f}, '
                 f'open_rate={self.open_rate:.8f}, open_since={open_since})')

From 67ff48ce3e9dbca1fac36109d5cbb2ab66c03f7f Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 12 Sep 2019 20:58:10 +0300
Subject: [PATCH 0466/3421] Comment out noisy log messages

---
 freqtrade/strategy/interface.py | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py
index 3c1df276c..17246ecf7 100644
--- a/freqtrade/strategy/interface.py
+++ b/freqtrade/strategy/interface.py
@@ -312,7 +312,8 @@ class IStrategy(ABC):
         experimental = self.config.get('experimental', {})
 
         if buy and experimental.get('ignore_roi_if_buy_signal', False):
-            logger.debug(f"{trade.pair} - Buy signal still active. sell_flag=False")
+            # This one is noisy, commented out
+            # logger.debug(f"{trade.pair} - Buy signal still active. sell_flag=False")
             return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 
         # Check if minimal roi has been reached and no longer in buy conditions (avoiding a fee)
@@ -322,9 +323,11 @@ class IStrategy(ABC):
             return SellCheckTuple(sell_flag=True, sell_type=SellType.ROI)
 
         if experimental.get('sell_profit_only', False):
-            logger.debug(f"{trade.pair} - Checking if trade is profitable...")
+            # This one is noisy, commented out
+            # logger.debug(f"{trade.pair} - Checking if trade is profitable...")
             if trade.calc_profit(rate=rate) <= 0:
-                logger.debug(f"{trade.pair} - Trade is not profitable. sell_flag=False")
+                # This one is noisy, commented out
+                # logger.debug(f"{trade.pair} - Trade is not profitable. sell_flag=False")
                 return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 
         if sell and not buy and experimental.get('use_sell_signal', False):
@@ -333,7 +336,7 @@ class IStrategy(ABC):
             return SellCheckTuple(sell_flag=True, sell_type=SellType.SELL_SIGNAL)
 
         # This one is noisy, commented out...
-#        logger.debug(f"{trade.pair} - No sell signal. sell_flag=False")
+        # logger.debug(f"{trade.pair} - No sell signal. sell_flag=False")
         return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 
     def stop_loss_reached(self, current_rate: float, trade: Trade,

From 52b186eabe5b37cf70642d324b37b9c7fe192d5e Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 12 Sep 2019 20:14:58 +0200
Subject: [PATCH 0467/3421] Create-userdir does not need a configuration

---
 freqtrade/configuration/arguments.py | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index befa42cd1..bb961173b 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -2,11 +2,11 @@
 This module contains the argument manager class
 """
 import argparse
-from typing import List, Optional
 from pathlib import Path
+from typing import Any, Dict, List, Optional
 
-from freqtrade.configuration.cli_options import AVAILABLE_CLI_OPTIONS
 from freqtrade import constants
+from freqtrade.configuration.cli_options import AVAILABLE_CLI_OPTIONS
 
 ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir", "user_data_dir"]
 
@@ -41,7 +41,7 @@ ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_
 ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url",
                     "trade_source", "ticker_interval"]
 
-NO_CONF_REQURIED = ["download-data", "plot-dataframe", "plot-profit"]
+NO_CONF_REQURIED = ["create-userdir", "download-data", "plot-dataframe", "plot-profit"]
 
 
 class Arguments:
@@ -57,7 +57,7 @@ class Arguments:
         self._build_args(optionlist=ARGS_MAIN)
         self._build_subcommands()
 
-    def get_parsed_arg(self) -> argparse.Namespace:
+    def get_parsed_arg(self) -> Dict[str, Any]:
         """
         Return the list of arguments
         :return: List[str] List of arguments
@@ -66,7 +66,7 @@ class Arguments:
             self._load_args()
             self._parsed_arg = self._parse_args()
 
-        return self._parsed_arg
+        return vars(self._parsed_arg)
 
     def _parse_args(self) -> argparse.Namespace:
         """

From e6ccc1427cac52eda2af9ef92ba420633e75c898 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 12 Sep 2019 20:16:39 +0200
Subject: [PATCH 0468/3421] have Arguments return a dict instead of Namespace

---
 freqtrade/configuration/configuration.py | 61 ++++++++++++------------
 freqtrade/main.py                        |  6 +--
 freqtrade/optimize/__init__.py           |  9 ++--
 freqtrade/plot/plot_utils.py             | 12 ++---
 freqtrade/utils.py                       | 15 +++---
 freqtrade/worker.py                      | 13 +++--
 6 files changed, 56 insertions(+), 60 deletions(-)

diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py
index 8871d1113..1811cc6ed 100644
--- a/freqtrade/configuration/configuration.py
+++ b/freqtrade/configuration/configuration.py
@@ -3,7 +3,6 @@ This module contains the configuration class
 """
 import logging
 import warnings
-from argparse import Namespace
 from copy import deepcopy
 from pathlib import Path
 from typing import Any, Callable, Dict, List, Optional
@@ -28,7 +27,7 @@ class Configuration:
     Reuse this class for the bot, backtesting, hyperopt and every script that required configuration
     """
 
-    def __init__(self, args: Namespace, runmode: RunMode = None) -> None:
+    def __init__(self, args: Dict[str, Any], runmode: RunMode = None) -> None:
         self.args = args
         self.config: Optional[Dict[str, Any]] = None
         self.runmode = runmode
@@ -82,7 +81,7 @@ class Configuration:
         :return: Configuration dictionary
         """
         # Load all configs
-        config: Dict[str, Any] = Configuration.from_files(self.args.config)
+        config: Dict[str, Any] = Configuration.from_files(self.args["config"])
 
         self._process_common_options(config)
 
@@ -107,13 +106,13 @@ class Configuration:
         the -v/--verbose, --logfile options
         """
         # Log level
-        if 'verbosity' in self.args and self.args.verbosity:
-            config.update({'verbosity': self.args.verbosity})
+        if 'verbosity' in self.args and self.args["verbosity"]:
+            config.update({'verbosity': self.args["verbosity"]})
         else:
             config.update({'verbosity': 0})
 
-        if 'logfile' in self.args and self.args.logfile:
-            config.update({'logfile': self.args.logfile})
+        if 'logfile' in self.args and self.args["logfile"]:
+            config.update({'logfile': self.args["logfile"]})
 
         setup_logging(config)
 
@@ -122,15 +121,15 @@ class Configuration:
         self._process_logging_options(config)
 
         # Set strategy if not specified in config and or if it's non default
-        if self.args.strategy != constants.DEFAULT_STRATEGY or not config.get('strategy'):
-            config.update({'strategy': self.args.strategy})
+        if self.args["strategy"] != constants.DEFAULT_STRATEGY or not config.get('strategy'):
+            config.update({'strategy': self.args["strategy"]})
 
         self._args_to_config(config, argname='strategy_path',
                              logstring='Using additional Strategy lookup path: {}')
 
-        if ('db_url' in self.args and self.args.db_url and
-                self.args.db_url != constants.DEFAULT_DB_PROD_URL):
-            config.update({'db_url': self.args.db_url})
+        if ('db_url' in self.args and self.args["db_url"] and
+                self.args["db_url"] != constants.DEFAULT_DB_PROD_URL):
+            config.update({'db_url': self.args["db_url"]})
             logger.info('Parameter --db-url detected ...')
 
         if config.get('dry_run', False):
@@ -153,7 +152,7 @@ class Configuration:
             config['max_open_trades'] = float('inf')
 
         # Support for sd_notify
-        if 'sd_notify' in self.args and self.args.sd_notify:
+        if 'sd_notify' in self.args and self.args["sd_notify"]:
             config['internals'].update({'sd_notify': True})
 
     def _process_datadir_options(self, config: Dict[str, Any]) -> None:
@@ -162,12 +161,12 @@ class Configuration:
         --user-data, --datadir
         """
         # Check exchange parameter here - otherwise `datadir` might be wrong.
-        if "exchange" in self.args and self.args.exchange:
-            config['exchange']['name'] = self.args.exchange
+        if "exchange" in self.args and self.args["exchange"]:
+            config['exchange']['name'] = self.args["exchange"]
             logger.info(f"Using exchange {config['exchange']['name']}")
 
-        if 'user_data_dir' in self.args and self.args.user_data_dir:
-            config.update({'user_data_dir': self.args.user_data_dir})
+        if 'user_data_dir' in self.args and self.args["user_data_dir"]:
+            config.update({'user_data_dir': self.args["user_data_dir"]})
         elif 'user_data_dir' not in config:
             # Default to cwd/user_data (legacy option ...)
             config.update({'user_data_dir': str(Path.cwd() / "user_data")})
@@ -176,8 +175,8 @@ class Configuration:
         config['user_data_dir'] = create_userdata_dir(config['user_data_dir'], create_dir=False)
         logger.info('Using user-data directory: %s ...', config['user_data_dir'])
 
-        if 'datadir' in self.args and self.args.datadir:
-            config.update({'datadir': create_datadir(config, self.args.datadir)})
+        if 'datadir' in self.args and self.args["datadir"]:
+            config.update({'datadir': create_datadir(config, self.args["datadir"])})
         else:
             config.update({'datadir': create_datadir(config, None)})
         logger.info('Using data directory: %s ...', config.get('datadir'))
@@ -192,12 +191,12 @@ class Configuration:
         self._args_to_config(config, argname='position_stacking',
                              logstring='Parameter --enable-position-stacking detected ...')
 
-        if 'use_max_market_positions' in self.args and not self.args.use_max_market_positions:
+        if 'use_max_market_positions' in self.args and not self.args["use_max_market_positions"]:
             config.update({'use_max_market_positions': False})
             logger.info('Parameter --disable-max-market-positions detected ...')
             logger.info('max_open_trades set to unlimited ...')
-        elif 'max_open_trades' in self.args and self.args.max_open_trades:
-            config.update({'max_open_trades': self.args.max_open_trades})
+        elif 'max_open_trades' in self.args and self.args["max_open_trades"]:
+            config.update({'max_open_trades': self.args["max_open_trades"]})
             logger.info('Parameter --max_open_trades detected, '
                         'overriding max_open_trades to: %s ...', config.get('max_open_trades'))
         else:
@@ -229,12 +228,12 @@ class Configuration:
                              logstring='Storing backtest results to {} ...')
 
         # Edge section:
-        if 'stoploss_range' in self.args and self.args.stoploss_range:
-            txt_range = eval(self.args.stoploss_range)
+        if 'stoploss_range' in self.args and self.args["stoploss_range"]:
+            txt_range = eval(self.args["stoploss_range"])
             config['edge'].update({'stoploss_range_min': txt_range[0]})
             config['edge'].update({'stoploss_range_max': txt_range[1]})
             config['edge'].update({'stoploss_range_step': txt_range[2]})
-            logger.info('Parameter --stoplosses detected: %s ...', self.args.stoploss_range)
+            logger.info('Parameter --stoplosses detected: %s ...', self.args["stoploss_range"])
 
         # Hyperopt section
         self._args_to_config(config, argname='hyperopt',
@@ -254,7 +253,7 @@ class Configuration:
         self._args_to_config(config, argname='print_all',
                              logstring='Parameter --print-all detected ...')
 
-        if 'print_colorized' in self.args and not self.args.print_colorized:
+        if 'print_colorized' in self.args and not self.args["print_colorized"]:
             logger.info('Parameter --no-color detected ...')
             config.update({'print_colorized': False})
         else:
@@ -324,9 +323,9 @@ class Configuration:
                         sample: logfun=len (prints the length of the found
                         configuration instead of the content)
         """
-        if argname in self.args and getattr(self.args, argname):
+        if argname in self.args and self.args[argname]:
 
-            config.update({argname: getattr(self.args, argname)})
+            config.update({argname: self.args[argname]})
             if logfun:
                 logger.info(logstring.format(logfun(config[argname])))
             else:
@@ -346,8 +345,8 @@ class Configuration:
         if "pairs" in config:
             return
 
-        if "pairs_file" in self.args and self.args.pairs_file:
-            pairs_file = Path(self.args.pairs_file)
+        if "pairs_file" in self.args and self.args["pairs_file"]:
+            pairs_file = Path(self.args["pairs_file"])
             logger.info(f'Reading pairs file "{pairs_file}".')
             # Download pairs from the pairs file if no config is specified
             # or if pairs file is specified explicitely
@@ -358,7 +357,7 @@ class Configuration:
                 config['pairs'].sort()
             return
 
-        if "config" in self.args and self.args.config:
+        if "config" in self.args and self.args["config"]:
             logger.info("Using pairlist from configuration.")
             config['pairs'] = config.get('exchange', {}).get('pair_whitelist')
         else:
diff --git a/freqtrade/main.py b/freqtrade/main.py
index e65aa5fbb..b8a22490c 100755
--- a/freqtrade/main.py
+++ b/freqtrade/main.py
@@ -32,12 +32,12 @@ def main(sysargv: List[str] = None) -> None:
     worker = None
     try:
         arguments = Arguments(sysargv)
-        args: Namespace = arguments.get_parsed_arg()
+        args = arguments.get_parsed_arg()
 
         # A subcommand has been issued.
         # Means if Backtesting or Hyperopt have been called we exit the bot
-        if hasattr(args, 'func'):
-            args.func(args)
+        if 'func' in args:
+            args['func'](args)
             # TODO: fetch return_code as returned by the command function here
             return_code = 0
         else:
diff --git a/freqtrade/optimize/__init__.py b/freqtrade/optimize/__init__.py
index 973ea1ff5..7a3c290bf 100644
--- a/freqtrade/optimize/__init__.py
+++ b/freqtrade/optimize/__init__.py
@@ -1,5 +1,4 @@
 import logging
-from argparse import Namespace
 from typing import Any, Dict
 
 from filelock import FileLock, Timeout
@@ -12,7 +11,7 @@ from freqtrade.utils import setup_utils_configuration
 logger = logging.getLogger(__name__)
 
 
-def setup_configuration(args: Namespace, method: RunMode) -> Dict[str, Any]:
+def setup_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str, Any]:
     """
     Prepare the configuration for the Hyperopt module
     :param args: Cli args from Arguments()
@@ -28,7 +27,7 @@ def setup_configuration(args: Namespace, method: RunMode) -> Dict[str, Any]:
     return config
 
 
-def start_backtesting(args: Namespace) -> None:
+def start_backtesting(args: Dict[str, Any]) -> None:
     """
     Start Backtesting script
     :param args: Cli args from Arguments()
@@ -47,7 +46,7 @@ def start_backtesting(args: Namespace) -> None:
     backtesting.start()
 
 
-def start_hyperopt(args: Namespace) -> None:
+def start_hyperopt(args: Dict[str, Any]) -> None:
     """
     Start hyperopt script
     :param args: Cli args from Arguments()
@@ -85,7 +84,7 @@ def start_hyperopt(args: Namespace) -> None:
         # Same in Edge and Backtesting start() functions.
 
 
-def start_edge(args: Namespace) -> None:
+def start_edge(args: Dict[str, Any]) -> None:
     """
     Start Edge script
     :param args: Cli args from Arguments()
diff --git a/freqtrade/plot/plot_utils.py b/freqtrade/plot/plot_utils.py
index d7fb326d1..8de0eb9e7 100644
--- a/freqtrade/plot/plot_utils.py
+++ b/freqtrade/plot/plot_utils.py
@@ -1,18 +1,18 @@
-from argparse import Namespace
+from typing import Any, Dict
+
 from freqtrade import OperationalException
 from freqtrade.state import RunMode
 from freqtrade.utils import setup_utils_configuration
 
 
-def validate_plot_args(args: Namespace):
-    args_tmp = vars(args)
-    if not args_tmp.get('datadir') and not args_tmp.get('config'):
+def validate_plot_args(args: Dict[str, Any]):
+    if not args.get('datadir') and not args.get('config'):
         raise OperationalException(
             "You need to specify either `--datadir` or `--config` "
             "for plot-profit and plot-dataframe.")
 
 
-def start_plot_dataframe(args: Namespace) -> None:
+def start_plot_dataframe(args: Dict[str, Any]) -> None:
     """
     Entrypoint for dataframe plotting
     """
@@ -24,7 +24,7 @@ def start_plot_dataframe(args: Namespace) -> None:
     load_and_plot_trades(config)
 
 
-def start_plot_profit(args: Namespace) -> None:
+def start_plot_profit(args: Dict[str, Any]) -> None:
     """
     Entrypoint for plot_profit
     """
diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index e32c8f12e..5b2b08357 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -1,6 +1,5 @@
 import logging
 import sys
-from argparse import Namespace
 from pathlib import Path
 from typing import Any, Dict, List
 
@@ -16,7 +15,7 @@ from freqtrade.state import RunMode
 logger = logging.getLogger(__name__)
 
 
-def setup_utils_configuration(args: Namespace, method: RunMode) -> Dict[str, Any]:
+def setup_utils_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str, Any]:
     """
     Prepare the configuration for utils subcommands
     :param args: Cli args from Arguments()
@@ -33,34 +32,34 @@ def setup_utils_configuration(args: Namespace, method: RunMode) -> Dict[str, Any
     return config
 
 
-def start_list_exchanges(args: Namespace) -> None:
+def start_list_exchanges(args: Dict[str, Any]) -> None:
     """
     Print available exchanges
     :param args: Cli args from Arguments()
     :return: None
     """
 
-    if args.print_one_column:
+    if args['print_one_column']:
         print('\n'.join(available_exchanges()))
     else:
         print(f"Exchanges supported by ccxt and available for Freqtrade: "
               f"{', '.join(available_exchanges())}")
 
 
-def start_create_userdir(args: Namespace) -> None:
+def start_create_userdir(args: Dict[str, Any]) -> None:
     """
     Create "user_data" directory to contain user data strategies, hyperopts, ...)
     :param args: Cli args from Arguments()
     :return: None
     """
-    if "user_data_dir" in args and args.user_data_dir:
-        create_userdata_dir(args.user_data_dir, create_dir=True)
+    if "user_data_dir" in args and args["user_data_dir"]:
+        create_userdata_dir(args["user_data_dir"], create_dir=True)
     else:
         logger.warning("`create-userdir` requires --userdir to be set.")
         sys.exit(1)
 
 
-def start_download_data(args: Namespace) -> None:
+def start_download_data(args: Dict[str, Any]) -> None:
     """
     Download data (former download_backtest_data.py script)
     """
diff --git a/freqtrade/worker.py b/freqtrade/worker.py
index 7a5360824..8e4be9d43 100755
--- a/freqtrade/worker.py
+++ b/freqtrade/worker.py
@@ -4,17 +4,16 @@ Main Freqtrade worker class.
 import logging
 import time
 import traceback
-from argparse import Namespace
-from typing import Any, Callable, Optional
+from typing import Any, Callable, Dict, Optional
+
 import sdnotify
 
-from freqtrade import (constants, OperationalException, TemporaryError,
-                       __version__)
+from freqtrade import (OperationalException, TemporaryError, __version__,
+                       constants)
 from freqtrade.configuration import Configuration
 from freqtrade.freqtradebot import FreqtradeBot
-from freqtrade.state import State
 from freqtrade.rpc import RPCMessageType
-
+from freqtrade.state import State
 
 logger = logging.getLogger(__name__)
 
@@ -24,7 +23,7 @@ class Worker:
     Freqtradebot worker class
     """
 
-    def __init__(self, args: Namespace, config=None) -> None:
+    def __init__(self, args: Dict[str, Any], config=None) -> None:
         """
         Init all variables and objects the bot needs to work
         """

From 4d566e8badf264d0608d12566ec230aa2f34a3d6 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 12 Sep 2019 20:25:27 +0200
Subject: [PATCH 0469/3421] Update tests to not use Namespace

---
 freqtrade/main.py           |  1 -
 tests/test_arguments.py     | 83 +++++++++++++++++++------------------
 tests/test_configuration.py |  2 +-
 tests/test_main.py          | 20 +++++----
 tests/test_plotting.py      |  2 +-
 5 files changed, 55 insertions(+), 53 deletions(-)

diff --git a/freqtrade/main.py b/freqtrade/main.py
index b8a22490c..4d6f0dce7 100755
--- a/freqtrade/main.py
+++ b/freqtrade/main.py
@@ -11,7 +11,6 @@ if sys.version_info < (3, 6):
 
 # flake8: noqa E402
 import logging
-from argparse import Namespace
 from typing import Any, List
 
 from freqtrade import OperationalException
diff --git a/tests/test_arguments.py b/tests/test_arguments.py
index 174038eff..7b18aa356 100644
--- a/tests/test_arguments.py
+++ b/tests/test_arguments.py
@@ -12,48 +12,48 @@ def test_parse_args_none() -> None:
     arguments = Arguments([])
     assert isinstance(arguments, Arguments)
     x = arguments.get_parsed_arg()
-    assert isinstance(x, argparse.Namespace)
+    assert isinstance(x, dict)
     assert isinstance(arguments.parser, argparse.ArgumentParser)
 
 
 def test_parse_args_defaults() -> None:
     args = Arguments([]).get_parsed_arg()
-    assert args.config == ['config.json']
-    assert args.strategy_path is None
-    assert args.datadir is None
-    assert args.verbosity == 0
+    assert args["config"] == ['config.json']
+    assert args["strategy_path"] is None
+    assert args["datadir"] is None
+    assert args["verbosity"] == 0
 
 
 def test_parse_args_config() -> None:
     args = Arguments(['-c', '/dev/null']).get_parsed_arg()
-    assert args.config == ['/dev/null']
+    assert args["config"] == ['/dev/null']
 
     args = Arguments(['--config', '/dev/null']).get_parsed_arg()
-    assert args.config == ['/dev/null']
+    assert args["config"] == ['/dev/null']
 
     args = Arguments(['--config', '/dev/null',
                       '--config', '/dev/zero'],).get_parsed_arg()
-    assert args.config == ['/dev/null', '/dev/zero']
+    assert args["config"] == ['/dev/null', '/dev/zero']
 
 
 def test_parse_args_db_url() -> None:
     args = Arguments(['--db-url', 'sqlite:///test.sqlite']).get_parsed_arg()
-    assert args.db_url == 'sqlite:///test.sqlite'
+    assert args["db_url"] == 'sqlite:///test.sqlite'
 
 
 def test_parse_args_verbose() -> None:
     args = Arguments(['-v']).get_parsed_arg()
-    assert args.verbosity == 1
+    assert args["verbosity"] == 1
 
     args = Arguments(['--verbose']).get_parsed_arg()
-    assert args.verbosity == 1
+    assert args["verbosity"] == 1
 
 
 def test_common_scripts_options() -> None:
     args = Arguments(['download-data', '-p', 'ETH/BTC', 'XRP/BTC']).get_parsed_arg()
 
-    assert args.pairs == ['ETH/BTC', 'XRP/BTC']
-    assert hasattr(args, "func")
+    assert args["pairs"] == ['ETH/BTC', 'XRP/BTC']
+    assert "func" in args
 
 
 def test_parse_args_version() -> None:
@@ -68,7 +68,7 @@ def test_parse_args_invalid() -> None:
 
 def test_parse_args_strategy() -> None:
     args = Arguments(['--strategy', 'SomeStrategy']).get_parsed_arg()
-    assert args.strategy == 'SomeStrategy'
+    assert args["strategy"] == 'SomeStrategy'
 
 
 def test_parse_args_strategy_invalid() -> None:
@@ -78,7 +78,7 @@ def test_parse_args_strategy_invalid() -> None:
 
 def test_parse_args_strategy_path() -> None:
     args = Arguments(['--strategy-path', '/some/path']).get_parsed_arg()
-    assert args.strategy_path == '/some/path'
+    assert args["strategy_path"] == '/some/path'
 
 
 def test_parse_args_strategy_path_invalid() -> None:
@@ -105,14 +105,14 @@ def test_parse_args_backtesting_custom() -> None:
         'SampleStrategy'
         ]
     call_args = Arguments(args).get_parsed_arg()
-    assert call_args.config == ['test_conf.json']
-    assert call_args.verbosity == 0
-    assert call_args.subparser == 'backtesting'
-    assert call_args.func is not None
-    assert call_args.ticker_interval == '1m'
-    assert call_args.refresh_pairs is True
-    assert type(call_args.strategy_list) is list
-    assert len(call_args.strategy_list) == 2
+    assert call_args["config"] == ['test_conf.json']
+    assert call_args["verbosity"] == 0
+    assert call_args["subparser"] == 'backtesting'
+    assert call_args["func"] is not None
+    assert call_args["ticker_interval"] == '1m'
+    assert call_args["refresh_pairs"] is True
+    assert type(call_args["strategy_list"]) is list
+    assert len(call_args["strategy_list"]) == 2
 
 
 def test_parse_args_hyperopt_custom() -> None:
@@ -123,12 +123,13 @@ def test_parse_args_hyperopt_custom() -> None:
         '--spaces', 'buy'
     ]
     call_args = Arguments(args).get_parsed_arg()
-    assert call_args.config == ['test_conf.json']
-    assert call_args.epochs == 20
-    assert call_args.verbosity == 0
-    assert call_args.subparser == 'hyperopt'
-    assert call_args.spaces == ['buy']
-    assert call_args.func is not None
+    assert call_args["config"] == ['test_conf.json']
+    assert call_args["epochs"] == 20
+    assert call_args["verbosity"] == 0
+    assert call_args["subparser"] == 'hyperopt'
+    assert call_args["spaces"] == ['buy']
+    assert call_args["func"] is not None
+    assert callable(call_args["func"])
 
 
 def test_download_data_options() -> None:
@@ -139,12 +140,12 @@ def test_download_data_options() -> None:
         '--days', '30',
         '--exchange', 'binance'
     ]
-    args = Arguments(args).get_parsed_arg()
+    pargs = Arguments(args).get_parsed_arg()
 
-    assert args.pairs_file == 'file_with_pairs'
-    assert args.datadir == 'datadir/directory'
-    assert args.days == 30
-    assert args.exchange == 'binance'
+    assert pargs["pairs_file"] == 'file_with_pairs'
+    assert pargs["datadir"] == 'datadir/directory'
+    assert pargs["days"] == 30
+    assert pargs["exchange"] == 'binance'
 
 
 def test_plot_dataframe_options() -> None:
@@ -158,10 +159,10 @@ def test_plot_dataframe_options() -> None:
     ]
     pargs = Arguments(args).get_parsed_arg()
 
-    assert pargs.indicators1 == ["sma10", "sma100"]
-    assert pargs.indicators2 == ["macd", "fastd", "fastk"]
-    assert pargs.plot_limit == 30
-    assert pargs.pairs == ["UNITTEST/BTC"]
+    assert pargs["indicators1"] == ["sma10", "sma100"]
+    assert pargs["indicators2"] == ["macd", "fastd", "fastk"]
+    assert pargs["plot_limit"] == 30
+    assert pargs["pairs"] == ["UNITTEST/BTC"]
 
 
 def test_plot_profit_options() -> None:
@@ -173,9 +174,9 @@ def test_plot_profit_options() -> None:
     ]
     pargs = Arguments(args).get_parsed_arg()
 
-    assert pargs.trade_source == "DB"
-    assert pargs.pairs == ["UNITTEST/BTC"]
-    assert pargs.db_url == "sqlite:///whatever.sqlite"
+    assert pargs["trade_source"] == "DB"
+    assert pargs["pairs"] == ["UNITTEST/BTC"]
+    assert pargs["db_url"] == "sqlite:///whatever.sqlite"
 
 
 def test_check_int_positive() -> None:
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 3717f4d1b..67bde50fa 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -871,7 +871,7 @@ def test_pairlist_resolving_fallback(mocker):
 
     args = Arguments(arglist).get_parsed_arg()
     # Fix flaky tests if config.json exists
-    args.config = None
+    args["config"] = None
 
     configuration = Configuration(args)
     config = configuration.get_config()
diff --git a/tests/test_main.py b/tests/test_main.py
index eec81ee18..d73edc0da 100644
--- a/tests/test_main.py
+++ b/tests/test_main.py
@@ -27,11 +27,12 @@ def test_parse_args_backtesting(mocker) -> None:
         main(['backtesting'])
     assert backtesting_mock.call_count == 1
     call_args = backtesting_mock.call_args[0][0]
-    assert call_args.config == ['config.json']
-    assert call_args.verbosity == 0
-    assert call_args.subparser == 'backtesting'
-    assert call_args.func is not None
-    assert call_args.ticker_interval is None
+    assert call_args["config"] == ['config.json']
+    assert call_args["verbosity"] == 0
+    assert call_args["subparser"] == 'backtesting'
+    assert call_args["func"] is not None
+    assert callable(call_args["func"])
+    assert call_args["ticker_interval"] is None
 
 
 def test_main_start_hyperopt(mocker) -> None:
@@ -42,10 +43,11 @@ def test_main_start_hyperopt(mocker) -> None:
         main(['hyperopt'])
     assert hyperopt_mock.call_count == 1
     call_args = hyperopt_mock.call_args[0][0]
-    assert call_args.config == ['config.json']
-    assert call_args.verbosity == 0
-    assert call_args.subparser == 'hyperopt'
-    assert call_args.func is not None
+    assert call_args["config"] == ['config.json']
+    assert call_args["verbosity"] == 0
+    assert call_args["subparser"] == 'hyperopt'
+    assert call_args["func"] is not None
+    assert callable(call_args["func"])
 
 
 def test_main_fatal_exception(mocker, default_conf, caplog) -> None:
diff --git a/tests/test_plotting.py b/tests/test_plotting.py
index 2c3b8a339..9028ab961 100644
--- a/tests/test_plotting.py
+++ b/tests/test_plotting.py
@@ -344,7 +344,7 @@ def test_start_plot_profit_error(mocker):
     argsp = get_args(args)
     # Make sure we use no config. Details: #2241
     # not resetting config causes random failures if config.json exists
-    argsp.config = []
+    argsp["config"] = []
     with pytest.raises(OperationalException):
         start_plot_profit(argsp)
 

From e6ec8f9f30138e5eb63666dd0cad5d73c48a6324 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 12 Sep 2019 21:28:51 +0300
Subject: [PATCH 0470/3421] Fix tests: Change condition for printing 'close'

---
 freqtrade/persistence.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py
index 1850aafd9..bccbce931 100644
--- a/freqtrade/persistence.py
+++ b/freqtrade/persistence.py
@@ -210,7 +210,7 @@ class Trade(_DECL_BASE):
     ticker_interval = Column(Integer, nullable=True)
 
     def __repr__(self):
-        open_since = self.open_date.strftime('%Y-%m-%d %H:%M:%S') if self.is_open else 'closed'
+        open_since = self.open_date.strftime('%Y-%m-%d %H:%M:%S') if self.open_date else 'closed'
 
         return (f'Trade(id={self.id}, pair={self.pair}, amount={self.amount:.8f}, '
                 f'open_rate={self.open_rate:.8f}, open_since={open_since})')

From c8d191a5c9ca63661276e1c6585e2b29be3bf71f Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 12 Sep 2019 22:53:54 +0300
Subject: [PATCH 0471/3421] Adjust test

---
 tests/test_freqtradebot.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index d34197519..d39c9aaef 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -2153,8 +2153,8 @@ def test_check_handle_timedout_exception(default_conf, ticker, mocker, caplog) -
     freqtrade.check_handle_timedout()
     assert log_has_re(r"Cannot query order for Trade\(id=1, pair=ETH/BTC, amount=90.99181073, "
                       r"open_rate=0.00001099, open_since="
-                      f"{open_date.strftime('%Y-%m-%d %H:%M:%S')} "
-                      r"\(10 hours ago\)\) due to Traceback \(most recent call last\):\n*",
+                      f"{open_date.strftime('%Y-%m-%d %H:%M:%S')}"
+                      r"\) due to Traceback \(most recent call last\):\n*",
                       caplog)
 
 

From f16324071054f35f3e04543810558699e13eba2a Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 13 Sep 2019 07:02:36 +0200
Subject: [PATCH 0472/3421] Simplify configuration init  where possible

---
 freqtrade/configuration/configuration.py | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py
index 1811cc6ed..547bfc135 100644
--- a/freqtrade/configuration/configuration.py
+++ b/freqtrade/configuration/configuration.py
@@ -106,10 +106,7 @@ class Configuration:
         the -v/--verbose, --logfile options
         """
         # Log level
-        if 'verbosity' in self.args and self.args["verbosity"]:
-            config.update({'verbosity': self.args["verbosity"]})
-        else:
-            config.update({'verbosity': 0})
+        config.update({'verbosity': self.args.get("verbosity", 0)})
 
         if 'logfile' in self.args and self.args["logfile"]:
             config.update({'logfile': self.args["logfile"]})
@@ -121,8 +118,8 @@ class Configuration:
         self._process_logging_options(config)
 
         # Set strategy if not specified in config and or if it's non default
-        if self.args["strategy"] != constants.DEFAULT_STRATEGY or not config.get('strategy'):
-            config.update({'strategy': self.args["strategy"]})
+        if self.args.get("strategy") != constants.DEFAULT_STRATEGY or not config.get('strategy'):
+            config.update({'strategy': self.args.get("strategy")})
 
         self._args_to_config(config, argname='strategy_path',
                              logstring='Using additional Strategy lookup path: {}')
@@ -175,10 +172,7 @@ class Configuration:
         config['user_data_dir'] = create_userdata_dir(config['user_data_dir'], create_dir=False)
         logger.info('Using user-data directory: %s ...', config['user_data_dir'])
 
-        if 'datadir' in self.args and self.args["datadir"]:
-            config.update({'datadir': create_datadir(config, self.args["datadir"])})
-        else:
-            config.update({'datadir': create_datadir(config, None)})
+        config.update({'datadir': create_datadir(config, self.args.get("datadir", None))})
         logger.info('Using data directory: %s ...', config.get('datadir'))
 
     def _process_optimize_options(self, config: Dict[str, Any]) -> None:

From a5f3b68bff86e45e6ac1bae1472e3b026ad94bb4 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 13 Sep 2019 07:08:22 +0200
Subject: [PATCH 0473/3421] Allow loading of fully initialized config from
 jupyter notbooks

---
 freqtrade/configuration/configuration.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py
index 547bfc135..dba94abc8 100644
--- a/freqtrade/configuration/configuration.py
+++ b/freqtrade/configuration/configuration.py
@@ -49,9 +49,16 @@ class Configuration:
         and merging their contents.
         Files are loaded in sequence, parameters in later configuration files
         override the same parameter from an earlier file (last definition wins).
+        Runs through the whole Configuration initialization, so all expected config entries
+        are available to interactive environments.
         :param files: List of file paths
         :return: configuration dictionary
         """
+        c = Configuration({"config": files}, RunMode.OTHER)
+        return c.get_config()
+
+    def load_from_files(self, files: List[str]) -> Dict[str, Any]:
+
         # Keep this method as staticmethod, so it can be used from interactive environments
         config: Dict[str, Any] = {}
 
@@ -81,7 +88,7 @@ class Configuration:
         :return: Configuration dictionary
         """
         # Load all configs
-        config: Dict[str, Any] = Configuration.from_files(self.args["config"])
+        config: Dict[str, Any] = self.load_from_files(self.args["config"])
 
         self._process_common_options(config)
 

From 16b4ae8396903752838aa8c17c3ff1dd7effa29f Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 13 Sep 2019 07:08:42 +0200
Subject: [PATCH 0474/3421] Document this new behaviour

---
 docs/data-analysis.md | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/docs/data-analysis.md b/docs/data-analysis.md
index f6277cac2..d02a00ad9 100644
--- a/docs/data-analysis.md
+++ b/docs/data-analysis.md
@@ -91,7 +91,8 @@ df.groupby("pair")["sell_reason"].value_counts()
 
 ### Load multiple configuration files
 
-This option can be useful to inspect the results of passing in multiple configs
+This option can be useful to inspect the results of passing in multiple configs.
+This will also run through the whole Configuration initialization, so the configuration is completely initialized to be passed to other methods.
 
 ``` python
 import json
@@ -101,7 +102,16 @@ from freqtrade.configuration import Configuration
 config = Configuration.from_files(["config1.json", "config2.json"])
 
 # Show the config in memory
-print(json.dumps(config, indent=1))
+print(json.dumps(config, indent=2))
+```
+
+For Interactive environments, have an additional configuration specifying `user_data_dir` and pass this in last, so you don't have to change directories while running the bot.
+Best avoid relative paths, since this starts at the storage location of the jupyter notebook, unless the folder is changed.
+
+``` json
+{
+    "user_data_dir": "~/.freqtrade/"
+}
 ```
 
 ### Load exchange data to a pandas dataframe

From 5e654620b791b3f1b218a40ec1b699a492f41ae5 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 13 Sep 2019 19:49:13 +0200
Subject: [PATCH 0475/3421] Use available indicators in tests where possible

---
 tests/optimize/test_backtesting.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py
index 770f6c4ba..99fb30cbd 100644
--- a/tests/optimize/test_backtesting.py
+++ b/tests/optimize/test_backtesting.py
@@ -603,7 +603,7 @@ def test_processed(default_conf, mocker, testdatadir) -> None:
     cols = dataframe.columns
     # assert the dataframe got some of the indicator columns
     for col in ['close', 'high', 'low', 'open', 'date',
-                'ema50', 'ao', 'macd', 'plus_dm']:
+                'ema10', 'rsi', 'fastd', 'plus_di']:
         assert col in cols
 
 

From 01357845891ba0629f8352115a8725b07e965d5a Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 13 Sep 2019 19:49:34 +0200
Subject: [PATCH 0476/3421] remove unused indicators from default_strategy

---
 freqtrade/strategy/default_strategy.py | 38 ++++++++++++++------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/freqtrade/strategy/default_strategy.py b/freqtrade/strategy/default_strategy.py
index 4907f20ed..caf1bb82d 100644
--- a/freqtrade/strategy/default_strategy.py
+++ b/freqtrade/strategy/default_strategy.py
@@ -4,7 +4,6 @@ import talib.abstract as ta
 from pandas import DataFrame
 
 import freqtrade.vendor.qtpylib.indicators as qtpylib
-from freqtrade.indicator_helpers import fishers_inverse
 from freqtrade.strategy.interface import IStrategy
 
 
@@ -75,7 +74,8 @@ class DefaultStrategy(IStrategy):
         dataframe['adx'] = ta.ADX(dataframe)
 
         # Awesome oscillator
-        dataframe['ao'] = qtpylib.awesome_oscillator(dataframe)
+        # dataframe['ao'] = qtpylib.awesome_oscillator(dataframe)
+
         """
         # Commodity Channel Index: values Oversold:<-100, Overbought:>100
         dataframe['cci'] = ta.CCI(dataframe)
@@ -87,16 +87,15 @@ class DefaultStrategy(IStrategy):
         dataframe['macdhist'] = macd['macdhist']
 
         # MFI
-        dataframe['mfi'] = ta.MFI(dataframe)
+        # dataframe['mfi'] = ta.MFI(dataframe)
 
         # Minus Directional Indicator / Movement
-        dataframe['minus_dm'] = ta.MINUS_DM(dataframe)
+        # dataframe['minus_dm'] = ta.MINUS_DM(dataframe)
         dataframe['minus_di'] = ta.MINUS_DI(dataframe)
 
         # Plus Directional Indicator / Movement
-        dataframe['plus_dm'] = ta.PLUS_DM(dataframe)
+        # dataframe['plus_dm'] = ta.PLUS_DM(dataframe)
         dataframe['plus_di'] = ta.PLUS_DI(dataframe)
-        dataframe['minus_di'] = ta.MINUS_DI(dataframe)
 
         """
         # ROC
@@ -106,15 +105,15 @@ class DefaultStrategy(IStrategy):
         dataframe['rsi'] = ta.RSI(dataframe)
 
         # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy)
-        dataframe['fisher_rsi'] = fishers_inverse(dataframe['rsi'])
+        # dataframe['fisher_rsi'] = fishers_inverse(dataframe['rsi'])
 
         # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy)
-        dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1)
+        # dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1)
 
         # Stoch
-        stoch = ta.STOCH(dataframe)
-        dataframe['slowd'] = stoch['slowd']
-        dataframe['slowk'] = stoch['slowk']
+        # stoch = ta.STOCH(dataframe)
+        # dataframe['slowd'] = stoch['slowd']
+        # dataframe['slowk'] = stoch['slowk']
 
         # Stoch fast
         stoch_fast = ta.STOCHF(dataframe)
@@ -134,37 +133,39 @@ class DefaultStrategy(IStrategy):
         # Because ta.BBANDS implementation is broken with small numbers, it actually
         # returns middle band for all the three bands. Switch to qtpylib.bollinger_bands
         # and use middle band instead.
-        dataframe['blower'] = ta.BBANDS(dataframe, nbdevup=2, nbdevdn=2)['lowerband']
+        # dataframe['blower'] = ta.BBANDS(dataframe, nbdevup=2, nbdevdn=2)['lowerband']
 
         # Bollinger bands
         bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2)
         dataframe['bb_lowerband'] = bollinger['lower']
         dataframe['bb_middleband'] = bollinger['mid']
         dataframe['bb_upperband'] = bollinger['upper']
-
+        """
         # EMA - Exponential Moving Average
         dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3)
         dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5)
-        dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10)
         dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50)
         dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100)
+        """
+        dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10)
 
         # SAR Parabol
-        dataframe['sar'] = ta.SAR(dataframe)
+        # dataframe['sar'] = ta.SAR(dataframe)
 
         # SMA - Simple Moving Average
         dataframe['sma'] = ta.SMA(dataframe, timeperiod=40)
 
         # TEMA - Triple Exponential Moving Average
-        dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9)
+        # dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9)
 
+        """
         # Cycle Indicator
         # ------------------------------------
         # Hilbert Transform Indicator - SineWave
         hilbert = ta.HT_SINE(dataframe)
         dataframe['htsine'] = hilbert['sine']
         dataframe['htleadsine'] = hilbert['leadsine']
-
+        """
         # Pattern Recognition - Bullish candlestick patterns
         # ------------------------------------
         """
@@ -216,6 +217,7 @@ class DefaultStrategy(IStrategy):
         dataframe['CDL3INSIDE'] = ta.CDL3INSIDE(dataframe) # values [0, -100, 100]
         """
 
+        """
         # Chart type
         # ------------------------------------
         # Heikinashi stategy
@@ -224,7 +226,7 @@ class DefaultStrategy(IStrategy):
         dataframe['ha_close'] = heikinashi['close']
         dataframe['ha_high'] = heikinashi['high']
         dataframe['ha_low'] = heikinashi['low']
-
+        """
         return dataframe
 
     def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:

From eda1ec652f99f8210916c19f678df441db01921b Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Fri, 13 Sep 2019 23:00:09 +0300
Subject: [PATCH 0477/3421] Revert back condition for open_since in
 Trade.__repr__

---
 freqtrade/persistence.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py
index bccbce931..1850aafd9 100644
--- a/freqtrade/persistence.py
+++ b/freqtrade/persistence.py
@@ -210,7 +210,7 @@ class Trade(_DECL_BASE):
     ticker_interval = Column(Integer, nullable=True)
 
     def __repr__(self):
-        open_since = self.open_date.strftime('%Y-%m-%d %H:%M:%S') if self.open_date else 'closed'
+        open_since = self.open_date.strftime('%Y-%m-%d %H:%M:%S') if self.is_open else 'closed'
 
         return (f'Trade(id={self.id}, pair={self.pair}, amount={self.amount:.8f}, '
                 f'open_rate={self.open_rate:.8f}, open_since={open_since})')

From e2a100c9257f81f235666f41c99b4f5303ee6276 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 09:54:40 +0200
Subject: [PATCH 0478/3421] Directory / folder

---
 docs/data-analysis.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/data-analysis.md b/docs/data-analysis.md
index d02a00ad9..1bf781c4d 100644
--- a/docs/data-analysis.md
+++ b/docs/data-analysis.md
@@ -106,7 +106,7 @@ print(json.dumps(config, indent=2))
 ```
 
 For Interactive environments, have an additional configuration specifying `user_data_dir` and pass this in last, so you don't have to change directories while running the bot.
-Best avoid relative paths, since this starts at the storage location of the jupyter notebook, unless the folder is changed.
+Best avoid relative paths, since this starts at the storage location of the jupyter notebook, unless the directory is changed.
 
 ``` json
 {

From 2cf045c53ea9cec1ee8216730d87a3c2eab7d7d9 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 10:00:32 +0200
Subject: [PATCH 0479/3421] Remove commented indicators from DefaultStrategy

---
 freqtrade/strategy/default_strategy.py | 131 ++-----------------------
 1 file changed, 6 insertions(+), 125 deletions(-)

diff --git a/freqtrade/strategy/default_strategy.py b/freqtrade/strategy/default_strategy.py
index caf1bb82d..b839a9618 100644
--- a/freqtrade/strategy/default_strategy.py
+++ b/freqtrade/strategy/default_strategy.py
@@ -10,7 +10,10 @@ from freqtrade.strategy.interface import IStrategy
 class DefaultStrategy(IStrategy):
     """
     Default Strategy provided by freqtrade bot.
-    You can override it with your own strategy
+    Please do not modify this strategy, it's  intended for internal use only.
+    Please look at the SampleStrategy in the user_data/strategy directory
+    or strategy repository https://github.com/freqtrade/freqtrade-strategies
+    for samples and inspiration.
     """
     INTERFACE_VERSION = 2
 
@@ -73,160 +76,38 @@ class DefaultStrategy(IStrategy):
         # ADX
         dataframe['adx'] = ta.ADX(dataframe)
 
-        # Awesome oscillator
-        # dataframe['ao'] = qtpylib.awesome_oscillator(dataframe)
-
-        """
-        # Commodity Channel Index: values Oversold:<-100, Overbought:>100
-        dataframe['cci'] = ta.CCI(dataframe)
-        """
         # MACD
         macd = ta.MACD(dataframe)
         dataframe['macd'] = macd['macd']
         dataframe['macdsignal'] = macd['macdsignal']
         dataframe['macdhist'] = macd['macdhist']
 
-        # MFI
-        # dataframe['mfi'] = ta.MFI(dataframe)
-
         # Minus Directional Indicator / Movement
-        # dataframe['minus_dm'] = ta.MINUS_DM(dataframe)
         dataframe['minus_di'] = ta.MINUS_DI(dataframe)
 
         # Plus Directional Indicator / Movement
-        # dataframe['plus_dm'] = ta.PLUS_DM(dataframe)
         dataframe['plus_di'] = ta.PLUS_DI(dataframe)
 
-        """
-        # ROC
-        dataframe['roc'] = ta.ROC(dataframe)
-        """
         # RSI
         dataframe['rsi'] = ta.RSI(dataframe)
 
-        # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy)
-        # dataframe['fisher_rsi'] = fishers_inverse(dataframe['rsi'])
-
-        # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy)
-        # dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1)
-
-        # Stoch
-        # stoch = ta.STOCH(dataframe)
-        # dataframe['slowd'] = stoch['slowd']
-        # dataframe['slowk'] = stoch['slowk']
-
         # Stoch fast
         stoch_fast = ta.STOCHF(dataframe)
         dataframe['fastd'] = stoch_fast['fastd']
         dataframe['fastk'] = stoch_fast['fastk']
-        """
-        # Stoch RSI
-        stoch_rsi = ta.STOCHRSI(dataframe)
-        dataframe['fastd_rsi'] = stoch_rsi['fastd']
-        dataframe['fastk_rsi'] = stoch_rsi['fastk']
-        """
-
-        # Overlap Studies
-        # ------------------------------------
-
-        # Previous Bollinger bands
-        # Because ta.BBANDS implementation is broken with small numbers, it actually
-        # returns middle band for all the three bands. Switch to qtpylib.bollinger_bands
-        # and use middle band instead.
-        # dataframe['blower'] = ta.BBANDS(dataframe, nbdevup=2, nbdevdn=2)['lowerband']
 
         # Bollinger bands
         bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2)
         dataframe['bb_lowerband'] = bollinger['lower']
         dataframe['bb_middleband'] = bollinger['mid']
         dataframe['bb_upperband'] = bollinger['upper']
-        """
-        # EMA - Exponential Moving Average
-        dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3)
-        dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5)
-        dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50)
-        dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100)
-        """
-        dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10)
 
-        # SAR Parabol
-        # dataframe['sar'] = ta.SAR(dataframe)
+        # EMA - Exponential Moving Average
+        dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10)
 
         # SMA - Simple Moving Average
         dataframe['sma'] = ta.SMA(dataframe, timeperiod=40)
 
-        # TEMA - Triple Exponential Moving Average
-        # dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9)
-
-        """
-        # Cycle Indicator
-        # ------------------------------------
-        # Hilbert Transform Indicator - SineWave
-        hilbert = ta.HT_SINE(dataframe)
-        dataframe['htsine'] = hilbert['sine']
-        dataframe['htleadsine'] = hilbert['leadsine']
-        """
-        # Pattern Recognition - Bullish candlestick patterns
-        # ------------------------------------
-        """
-        # Hammer: values [0, 100]
-        dataframe['CDLHAMMER'] = ta.CDLHAMMER(dataframe)
-        # Inverted Hammer: values [0, 100]
-        dataframe['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(dataframe)
-        # Dragonfly Doji: values [0, 100]
-        dataframe['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(dataframe)
-        # Piercing Line: values [0, 100]
-        dataframe['CDLPIERCING'] = ta.CDLPIERCING(dataframe) # values [0, 100]
-        # Morningstar: values [0, 100]
-        dataframe['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(dataframe) # values [0, 100]
-        # Three White Soldiers: values [0, 100]
-        dataframe['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(dataframe) # values [0, 100]
-        """
-
-        # Pattern Recognition - Bearish candlestick patterns
-        # ------------------------------------
-        """
-        # Hanging Man: values [0, 100]
-        dataframe['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(dataframe)
-        # Shooting Star: values [0, 100]
-        dataframe['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(dataframe)
-        # Gravestone Doji: values [0, 100]
-        dataframe['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(dataframe)
-        # Dark Cloud Cover: values [0, 100]
-        dataframe['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(dataframe)
-        # Evening Doji Star: values [0, 100]
-        dataframe['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(dataframe)
-        # Evening Star: values [0, 100]
-        dataframe['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(dataframe)
-        """
-
-        # Pattern Recognition - Bullish/Bearish candlestick patterns
-        # ------------------------------------
-        """
-        # Three Line Strike: values [0, -100, 100]
-        dataframe['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(dataframe)
-        # Spinning Top: values [0, -100, 100]
-        dataframe['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(dataframe) # values [0, -100, 100]
-        # Engulfing: values [0, -100, 100]
-        dataframe['CDLENGULFING'] = ta.CDLENGULFING(dataframe) # values [0, -100, 100]
-        # Harami: values [0, -100, 100]
-        dataframe['CDLHARAMI'] = ta.CDLHARAMI(dataframe) # values [0, -100, 100]
-        # Three Outside Up/Down: values [0, -100, 100]
-        dataframe['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(dataframe) # values [0, -100, 100]
-        # Three Inside Up/Down: values [0, -100, 100]
-        dataframe['CDL3INSIDE'] = ta.CDL3INSIDE(dataframe) # values [0, -100, 100]
-        """
-
-        """
-        # Chart type
-        # ------------------------------------
-        # Heikinashi stategy
-        heikinashi = qtpylib.heikinashi(dataframe)
-        dataframe['ha_open'] = heikinashi['open']
-        dataframe['ha_close'] = heikinashi['close']
-        dataframe['ha_high'] = heikinashi['high']
-        dataframe['ha_low'] = heikinashi['low']
-        """
         return dataframe
 
     def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:

From b00467c8efaa61c2556d6e88c446c3dcd3230dd6 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 10:07:23 +0200
Subject: [PATCH 0480/3421] Fix test failure

---
 tests/test_freqtradebot.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index d39c9aaef..a595e0ce6 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -1590,6 +1590,8 @@ def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> No
     Trade.session = MagicMock()
     trade.open_order_id = '123'
     trade.open_fee = 0.001
+    # Add datetime explicitly since sqlalchemy defaults apply only once written to database
+    trade.open_date = arrow.utcnow().datetime
     freqtrade.update_trade_state(trade)
     # Test amount not modified by fee-logic
     assert not log_has_re(r'Applying fee to .*', caplog)

From c2462ee87b87814918bbd6788ce25a98dce67555 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 16 Sep 2019 08:49:41 +0000
Subject: [PATCH 0481/3421] Bump arrow from 0.15.0 to 0.15.2

Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.15.0 to 0.15.2.
- [Release notes](https://github.com/crsmithdev/arrow/releases)
- [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/crsmithdev/arrow/compare/0.15.0...0.15.2)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index 30c93950a..62a886637 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -3,7 +3,7 @@
 ccxt==1.18.1124
 SQLAlchemy==1.3.8
 python-telegram-bot==12.0.0
-arrow==0.15.0
+arrow==0.15.2
 cachetools==3.1.1
 requests==2.22.0
 urllib3==1.25.3

From cab394a0584e31cc9c7fd9ade087902546583f69 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 16 Sep 2019 09:31:10 +0000
Subject: [PATCH 0482/3421] Bump python-telegram-bot from 12.0.0 to 12.1.0

Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.0.0 to 12.1.0.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.0.0...v12.1.0)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index 62a886637..e6d8e8977 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -2,7 +2,7 @@
 # mainly used for Raspberry pi installs
 ccxt==1.18.1124
 SQLAlchemy==1.3.8
-python-telegram-bot==12.0.0
+python-telegram-bot==12.1.0
 arrow==0.15.2
 cachetools==3.1.1
 requests==2.22.0

From 9c1cce6fe2e112af1f84cefe28f162d18f6323fa Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 16 Sep 2019 09:31:14 +0000
Subject: [PATCH 0483/3421] Bump ccxt from 1.18.1124 to 1.18.1149

Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1124 to 1.18.1149.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1124...1.18.1149)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index 62a886637..eb0e9f3c1 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -1,6 +1,6 @@
 # requirements without requirements installable via conda
 # mainly used for Raspberry pi installs
-ccxt==1.18.1124
+ccxt==1.18.1149
 SQLAlchemy==1.3.8
 python-telegram-bot==12.0.0
 arrow==0.15.2

From f3e3a8fcbe962ac5da0491fcbf970defd3a72fc6 Mon Sep 17 00:00:00 2001
From: Pialat 
Date: Mon, 16 Sep 2019 14:04:10 +0200
Subject: [PATCH 0484/3421] unused in tests

---
 tests/optimize/test_hyperopt.py | 2 --
 1 file changed, 2 deletions(-)

diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index f5c8bf0ae..90b7953d0 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -38,8 +38,6 @@ def hyperopt_results():
             'profit_percent': [0.1, 0.2, 0.3],
             'profit_abs': [0.2, 0.4, 0.5],
             'trade_duration': [10, 30, 10],
-            'profit': [2, 0, 0],
-            'loss': [0, 0, 1],
             'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS]
         }
     )

From b7da02aab4adb6908b8abb3747515ed3a43d4ba6 Mon Sep 17 00:00:00 2001
From: Pialat 
Date: Mon, 16 Sep 2019 14:05:39 +0200
Subject: [PATCH 0485/3421] realistic fixture datas

---
 tests/optimize/test_hyperopt.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index 90b7953d0..e2f953485 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -35,10 +35,10 @@ def hyperopt_results():
     return pd.DataFrame(
         {
             'pair': ['ETH/BTC', 'ETH/BTC', 'ETH/BTC'],
-            'profit_percent': [0.1, 0.2, 0.3],
-            'profit_abs': [0.2, 0.4, 0.5],
+            'profit_percent': [-0.1, 0.2, 0.3],
+            'profit_abs': [-0.2, 0.4, 0.6],
             'trade_duration': [10, 30, 10],
-            'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS]
+            'sell_reason': [SellType.STOP_LOSS, SellType.ROI, SellType.ROI]
         }
     )
 

From 5cbc073dd1adcec6bd8f9fd24b6570e67adc37e8 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Mon, 16 Sep 2019 21:22:07 +0300
Subject: [PATCH 0486/3421] minor: Cleanup hyperopt

---
 freqtrade/optimize/hyperopt.py | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py
index bdd0ba258..6dbcf8765 100644
--- a/freqtrade/optimize/hyperopt.py
+++ b/freqtrade/optimize/hyperopt.py
@@ -73,9 +73,11 @@ class Hyperopt:
         self.trials: List = []
 
         # Populate functions here (hasattr is slow so should not be run during "regular" operations)
+        if hasattr(self.custom_hyperopt, 'populate_indicators'):
+            self.backtesting.strategy.advise_indicators = \
+                    self.custom_hyperopt.populate_indicators  # type: ignore
         if hasattr(self.custom_hyperopt, 'populate_buy_trend'):
             self.backtesting.advise_buy = self.custom_hyperopt.populate_buy_trend  # type: ignore
-
         if hasattr(self.custom_hyperopt, 'populate_sell_trend'):
             self.backtesting.advise_sell = self.custom_hyperopt.populate_sell_trend  # type: ignore
 
@@ -109,7 +111,9 @@ class Hyperopt:
                 p.unlink()
 
     def get_args(self, params):
-        dimensions = self.hyperopt_space()
+
+        dimensions = self.dimensions
+
         # Ensure the number of dimensions match
         # the number of parameters in the list x.
         if len(params) != len(dimensions):
@@ -322,9 +326,9 @@ class Hyperopt:
                 f'Total profit {total_profit: 11.8f} {stake_cur} '
                 f'({profit: 7.2f}Σ%). Avg duration {duration:5.1f} mins.')
 
-    def get_optimizer(self, cpu_count) -> Optimizer:
+    def get_optimizer(self, dimensions, cpu_count) -> Optimizer:
         return Optimizer(
-            self.hyperopt_space(),
+            dimensions,
             base_estimator="ET",
             acq_optimizer="auto",
             n_initial_points=INITIAL_POINTS,
@@ -370,9 +374,6 @@ class Hyperopt:
             (max_date - min_date).days
         )
 
-        self.backtesting.strategy.advise_indicators = \
-            self.custom_hyperopt.populate_indicators  # type: ignore
-
         preprocessed = self.backtesting.strategy.tickerdata_to_dataframe(data)
 
         dump(preprocessed, self.tickerdata_pickle)
@@ -387,7 +388,8 @@ class Hyperopt:
         config_jobs = self.config.get('hyperopt_jobs', -1)
         logger.info(f'Number of parallel jobs set as: {config_jobs}')
 
-        opt = self.get_optimizer(config_jobs)
+        self.dimensions = self.hyperopt_space()
+        self.opt = self.get_optimizer(self.dimensions, config_jobs)
 
         if self.config.get('print_colorized', False):
             colorama_init(autoreset=True)
@@ -398,9 +400,9 @@ class Hyperopt:
                 logger.info(f'Effective number of parallel workers used: {jobs}')
                 EVALS = max(self.total_epochs // jobs, 1)
                 for i in range(EVALS):
-                    asked = opt.ask(n_points=jobs)
+                    asked = self.opt.ask(n_points=jobs)
                     f_val = self.run_optimizer_parallel(parallel, asked)
-                    opt.tell(asked, [v['loss'] for v in f_val])
+                    self.opt.tell(asked, [v['loss'] for v in f_val])
                     for j in range(jobs):
                         current = i * jobs + j
                         val = f_val[j]

From e9a75e57b8140029d23d79160bb4c7daac3d10af Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Mon, 16 Sep 2019 21:53:19 +0300
Subject: [PATCH 0487/3421] test adjusted

---
 tests/optimize/test_hyperopt.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index f5c8bf0ae..d388a38ae 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -560,6 +560,7 @@ def test_generate_optimizer(mocker, default_conf) -> None:
     }
 
     hyperopt = Hyperopt(default_conf)
+    hyperopt.dimensions = hyperopt.hyperopt_space()
     generate_optimizer_value = hyperopt.generate_optimizer(list(optimizer_param.values()))
     assert generate_optimizer_value == response_expected
 

From a42000e1ddca8e4e1f8341cb27fe15582fae7e12 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 18 Sep 2019 11:36:16 +0200
Subject: [PATCH 0488/3421] Change package author to "freqtrade team"

---
 setup.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/setup.py b/setup.py
index 307be079f..ca94dd338 100644
--- a/setup.py
+++ b/setup.py
@@ -46,7 +46,7 @@ setup(name='freqtrade',
       long_description=readme_long,
       long_description_content_type="text/markdown",
       url='https://github.com/freqtrade/freqtrade',
-      author='gcarq and contributors',
+      author='Freqtrade Team',
       author_email='michael.egger@tsn.at',
       license='GPLv3',
       packages=['freqtrade'],

From ee6ad51a44d530926172ca514c2eefa850d791c2 Mon Sep 17 00:00:00 2001
From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
Date: Wed, 18 Sep 2019 22:41:25 +0300
Subject: [PATCH 0489/3421] Manual bump to ccxt 1.18.1159

(support for binance.us)
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index 53f98af3f..363890a4d 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -1,6 +1,6 @@
 # requirements without requirements installable via conda
 # mainly used for Raspberry pi installs
-ccxt==1.18.1149
+ccxt==1.18.1159
 SQLAlchemy==1.3.8
 python-telegram-bot==12.1.0
 arrow==0.15.2

From 69f29e89070c0164bd43f5af8206cc178a5d77ab Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 18 Sep 2019 22:57:17 +0300
Subject: [PATCH 0490/3421] minor: Cleanup for backtesting

---
 freqtrade/configuration/configuration.py |  6 +++---
 freqtrade/optimize/backtesting.py        |  6 ++----
 freqtrade/optimize/hyperopt.py           | 18 ++++++++++++------
 freqtrade/resolvers/hyperopt_resolver.py |  8 ++++----
 4 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py
index dba94abc8..1aed32e50 100644
--- a/freqtrade/configuration/configuration.py
+++ b/freqtrade/configuration/configuration.py
@@ -217,7 +217,7 @@ class Configuration:
                              deprecated_msg='-r/--refresh-pairs-cached will be removed soon.')
 
         self._args_to_config(config, argname='strategy_list',
-                             logstring='Using strategy list of {} Strategies', logfun=len)
+                             logstring='Using strategy list of {} strategies', logfun=len)
 
         self._args_to_config(config, argname='ticker_interval',
                              logstring='Overriding ticker interval with Command line argument')
@@ -238,7 +238,7 @@ class Configuration:
 
         # Hyperopt section
         self._args_to_config(config, argname='hyperopt',
-                             logstring='Using Hyperopt file {}')
+                             logstring='Using Hyperopt class name: {}')
 
         self._args_to_config(config, argname='hyperopt_path',
                              logstring='Using additional Hyperopt lookup path: {}')
@@ -276,7 +276,7 @@ class Configuration:
                              logstring='Hyperopt continue: {}')
 
         self._args_to_config(config, argname='hyperopt_loss',
-                             logstring='Using loss function: {}')
+                             logstring='Using Hyperopt loss class name: {}')
 
     def _process_plot_options(self, config: Dict[str, Any]) -> None:
 
diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py
index 300cef82f..4956907fb 100644
--- a/freqtrade/optimize/backtesting.py
+++ b/freqtrade/optimize/backtesting.py
@@ -95,8 +95,6 @@ class Backtesting:
         Load strategy into backtesting
         """
         self.strategy = strategy
-        self.advise_buy = strategy.advise_buy
-        self.advise_sell = strategy.advise_sell
         # Set stoploss_on_exchange to false for backtesting,
         # since a "perfect" stoploss-sell is assumed anyway
         # And the regular "stoploss" function would not apply to that case
@@ -219,8 +217,8 @@ class Backtesting:
         for pair, pair_data in processed.items():
             pair_data['buy'], pair_data['sell'] = 0, 0  # cleanup from previous run
 
-            ticker_data = self.advise_sell(
-                self.advise_buy(pair_data, {'pair': pair}), {'pair': pair})[headers].copy()
+            ticker_data = self.strategy.advise_sell(
+                self.strategy.advise_buy(pair_data, {'pair': pair}), {'pair': pair})[headers].copy()
 
             # to avoid using data from future, we buy/sell with signal from previous candle
             ticker_data.loc[:, 'buy'] = ticker_data['buy'].shift(1)
diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py
index 6dbcf8765..c511aa5ac 100644
--- a/freqtrade/optimize/hyperopt.py
+++ b/freqtrade/optimize/hyperopt.py
@@ -49,10 +49,11 @@ class Hyperopt:
     """
     def __init__(self, config: Dict[str, Any]) -> None:
         self.config = config
-        self.backtesting = Backtesting(self.config)
 
         self.custom_hyperopt = HyperOptResolver(self.config).hyperopt
 
+        self.backtesting = Backtesting(self.config)
+
         self.custom_hyperoptloss = HyperOptLossResolver(self.config).hyperoptloss
         self.calculate_loss = self.custom_hyperoptloss.hyperopt_loss_function
 
@@ -77,9 +78,11 @@ class Hyperopt:
             self.backtesting.strategy.advise_indicators = \
                     self.custom_hyperopt.populate_indicators  # type: ignore
         if hasattr(self.custom_hyperopt, 'populate_buy_trend'):
-            self.backtesting.advise_buy = self.custom_hyperopt.populate_buy_trend  # type: ignore
+            self.backtesting.strategy.advise_buy = \
+                    self.custom_hyperopt.populate_buy_trend  # type: ignore
         if hasattr(self.custom_hyperopt, 'populate_sell_trend'):
-            self.backtesting.advise_sell = self.custom_hyperopt.populate_sell_trend  # type: ignore
+            self.backtesting.strategy.advise_sell = \
+                    self.custom_hyperopt.populate_sell_trend  # type: ignore
 
         # Use max_open_trades for hyperopt as well, except --disable-max-market-positions is set
         if self.config.get('use_max_market_positions', True):
@@ -259,13 +262,16 @@ class Hyperopt:
         """
         params = self.get_args(_params)
         if self.has_space('roi'):
-            self.backtesting.strategy.minimal_roi = self.custom_hyperopt.generate_roi_table(params)
+            self.backtesting.strategy.minimal_roi = \
+                    self.custom_hyperopt.generate_roi_table(params)
 
         if self.has_space('buy'):
-            self.backtesting.advise_buy = self.custom_hyperopt.buy_strategy_generator(params)
+            self.backtesting.strategy.advise_buy = \
+                    self.custom_hyperopt.buy_strategy_generator(params)
 
         if self.has_space('sell'):
-            self.backtesting.advise_sell = self.custom_hyperopt.sell_strategy_generator(params)
+            self.backtesting.strategy.advise_sell = \
+                    self.custom_hyperopt.sell_strategy_generator(params)
 
         if self.has_space('stoploss'):
             self.backtesting.strategy.stoploss = params['stoploss']
diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py
index f808ca0d9..3ffdc5e1f 100644
--- a/freqtrade/resolvers/hyperopt_resolver.py
+++ b/freqtrade/resolvers/hyperopt_resolver.py
@@ -38,11 +38,11 @@ class HyperOptResolver(IResolver):
         IHyperOpt.ticker_interval = str(config['ticker_interval'])
 
         if not hasattr(self.hyperopt, 'populate_buy_trend'):
-            logger.warning("Custom Hyperopt does not provide populate_buy_trend. "
-                           "Using populate_buy_trend from DefaultStrategy.")
+            logger.warning("Hyperopt class does not provide populate_buy_trend() method. "
+                           "Using populate_buy_trend from the strategy.")
         if not hasattr(self.hyperopt, 'populate_sell_trend'):
-            logger.warning("Custom Hyperopt does not provide populate_sell_trend. "
-                           "Using populate_sell_trend from DefaultStrategy.")
+            logger.warning("Hyperopt class does not provide populate_sell_trend() method. "
+                           "Using populate_sell_trend from the strategy.")
 
     def _load_hyperopt(
             self, hyperopt_name: str, config: Dict, extra_dir: Optional[str] = None) -> IHyperOpt:

From 50b45639124ae418a4383164ce6d08b16cb506f6 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 18 Sep 2019 22:57:37 +0300
Subject: [PATCH 0491/3421] Tests adjusted

---
 tests/optimize/test_backtest_detail.py |  4 ++--
 tests/optimize/test_backtesting.py     | 20 ++++++++++----------
 tests/optimize/test_hyperopt.py        | 24 ++++++++++++------------
 tests/test_configuration.py            |  2 +-
 4 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py
index 1bcd9b08e..d8a4190e2 100644
--- a/tests/optimize/test_backtest_detail.py
+++ b/tests/optimize/test_backtest_detail.py
@@ -291,8 +291,8 @@ def test_backtest_results(default_conf, fee, mocker, caplog, data) -> None:
     patch_exchange(mocker)
     frame = _build_backtest_dataframe(data.data)
     backtesting = Backtesting(default_conf)
-    backtesting.advise_buy = lambda a, m: frame
-    backtesting.advise_sell = lambda a, m: frame
+    backtesting.strategy.advise_buy = lambda a, m: frame
+    backtesting.strategy.advise_sell = lambda a, m: frame
     caplog.set_level(logging.DEBUG)
 
     pair = "UNITTEST/BTC"
diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py
index 99fb30cbd..7b50f2b18 100644
--- a/tests/optimize/test_backtesting.py
+++ b/tests/optimize/test_backtesting.py
@@ -313,8 +313,8 @@ def test_backtesting_init(mocker, default_conf, order_types) -> None:
     assert backtesting.config == default_conf
     assert backtesting.ticker_interval == '5m'
     assert callable(backtesting.strategy.tickerdata_to_dataframe)
-    assert callable(backtesting.advise_buy)
-    assert callable(backtesting.advise_sell)
+    assert callable(backtesting.strategy.advise_buy)
+    assert callable(backtesting.strategy.advise_sell)
     assert isinstance(backtesting.strategy.dp, DataProvider)
     get_fee.assert_called()
     assert backtesting.fee == 0.5
@@ -627,8 +627,8 @@ def test_backtest_clash_buy_sell(mocker, default_conf, testdatadir):
 
     backtest_conf = _make_backtest_conf(mocker, conf=default_conf, datadir=testdatadir)
     backtesting = Backtesting(default_conf)
-    backtesting.advise_buy = fun  # Override
-    backtesting.advise_sell = fun  # Override
+    backtesting.strategy.advise_buy = fun  # Override
+    backtesting.strategy.advise_sell = fun  # Override
     results = backtesting.backtest(backtest_conf)
     assert results.empty
 
@@ -642,8 +642,8 @@ def test_backtest_only_sell(mocker, default_conf, testdatadir):
 
     backtest_conf = _make_backtest_conf(mocker, conf=default_conf, datadir=testdatadir)
     backtesting = Backtesting(default_conf)
-    backtesting.advise_buy = fun  # Override
-    backtesting.advise_sell = fun  # Override
+    backtesting.strategy.advise_buy = fun  # Override
+    backtesting.strategy.advise_sell = fun  # Override
     results = backtesting.backtest(backtest_conf)
     assert results.empty
 
@@ -657,8 +657,8 @@ def test_backtest_alternate_buy_sell(default_conf, fee, mocker, testdatadir):
     default_conf['experimental'] = {"use_sell_signal": True}
     default_conf['ticker_interval'] = '1m'
     backtesting = Backtesting(default_conf)
-    backtesting.advise_buy = _trend_alternate  # Override
-    backtesting.advise_sell = _trend_alternate  # Override
+    backtesting.strategy.advise_buy = _trend_alternate  # Override
+    backtesting.strategy.advise_sell = _trend_alternate  # Override
     results = backtesting.backtest(backtest_conf)
     backtesting._store_backtest_result("test_.json", results)
     # 200 candles in backtest data
@@ -700,8 +700,8 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir)
     default_conf['ticker_interval'] = '5m'
 
     backtesting = Backtesting(default_conf)
-    backtesting.advise_buy = _trend_alternate_hold  # Override
-    backtesting.advise_sell = _trend_alternate_hold  # Override
+    backtesting.strategy.advise_buy = _trend_alternate_hold  # Override
+    backtesting.strategy.advise_sell = _trend_alternate_hold  # Override
 
     data_processed = backtesting.strategy.tickerdata_to_dataframe(data)
     min_date, max_date = get_timeframe(data_processed)
diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index 15ecb92d8..2e383c839 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -166,10 +166,10 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None:
     x = HyperOptResolver(default_conf, ).hyperopt
     assert not hasattr(x, 'populate_buy_trend')
     assert not hasattr(x, 'populate_sell_trend')
-    assert log_has("Custom Hyperopt does not provide populate_sell_trend. "
-                   "Using populate_sell_trend from DefaultStrategy.", caplog)
-    assert log_has("Custom Hyperopt does not provide populate_buy_trend. "
-                   "Using populate_buy_trend from DefaultStrategy.", caplog)
+    assert log_has("Hyperopt class does not provide populate_sell_trend() method. "
+                   "Using populate_sell_trend from the strategy.", caplog)
+    assert log_has("Hyperopt class does not provide populate_buy_trend() method. "
+                   "Using populate_buy_trend from the strategy.", caplog)
     assert hasattr(x, "ticker_interval")
 
 
@@ -415,8 +415,8 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None:
     assert dumper.called
     # Should be called twice, once for tickerdata, once to save evaluations
     assert dumper.call_count == 2
-    assert hasattr(hyperopt.backtesting, "advise_sell")
-    assert hasattr(hyperopt.backtesting, "advise_buy")
+    assert hasattr(hyperopt.backtesting.strategy, "advise_sell")
+    assert hasattr(hyperopt.backtesting.strategy, "advise_buy")
     assert hasattr(hyperopt, "max_open_trades")
     assert hyperopt.max_open_trades == default_conf['max_open_trades']
     assert hasattr(hyperopt, "position_stacking")
@@ -709,8 +709,8 @@ def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys)
     assert dumper.called
     # Should be called twice, once for tickerdata, once to save evaluations
     assert dumper.call_count == 2
-    assert hasattr(hyperopt.backtesting, "advise_sell")
-    assert hasattr(hyperopt.backtesting, "advise_buy")
+    assert hasattr(hyperopt.backtesting.strategy, "advise_sell")
+    assert hasattr(hyperopt.backtesting.strategy, "advise_buy")
     assert hasattr(hyperopt, "max_open_trades")
     assert hyperopt.max_open_trades == default_conf['max_open_trades']
     assert hasattr(hyperopt, "position_stacking")
@@ -783,8 +783,8 @@ def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None:
     assert dumper.called
     # Should be called twice, once for tickerdata, once to save evaluations
     assert dumper.call_count == 2
-    assert hasattr(hyperopt.backtesting, "advise_sell")
-    assert hasattr(hyperopt.backtesting, "advise_buy")
+    assert hasattr(hyperopt.backtesting.strategy, "advise_sell")
+    assert hasattr(hyperopt.backtesting.strategy, "advise_buy")
     assert hasattr(hyperopt, "max_open_trades")
     assert hyperopt.max_open_trades == default_conf['max_open_trades']
     assert hasattr(hyperopt, "position_stacking")
@@ -828,8 +828,8 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None
     assert dumper.called
     # Should be called twice, once for tickerdata, once to save evaluations
     assert dumper.call_count == 2
-    assert hasattr(hyperopt.backtesting, "advise_sell")
-    assert hasattr(hyperopt.backtesting, "advise_buy")
+    assert hasattr(hyperopt.backtesting.strategy, "advise_sell")
+    assert hasattr(hyperopt.backtesting.strategy, "advise_buy")
     assert hasattr(hyperopt, "max_open_trades")
     assert hyperopt.max_open_trades == default_conf['max_open_trades']
     assert hasattr(hyperopt, "position_stacking")
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 67bde50fa..53f46fe2e 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -440,7 +440,7 @@ def test_setup_configuration_with_stratlist(mocker, default_conf, caplog) -> Non
                    caplog)
 
     assert 'strategy_list' in config
-    assert log_has('Using strategy list of 2 Strategies', caplog)
+    assert log_has('Using strategy list of 2 strategies', caplog)
 
     assert 'position_stacking' not in config
 

From f0cf8d6a8133cc5a16a39523e1dccc0054d7a64d Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 20 Sep 2019 07:02:54 +0200
Subject: [PATCH 0492/3421] Allow easy printing of loaded configuration

(beforechanging types and applying defaults)
---
 docs/data-analysis.md                    |  2 +-
 freqtrade/configuration/configuration.py |  3 +++
 tests/test_configuration.py              | 21 +++++++++++++++++++++
 3 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/docs/data-analysis.md b/docs/data-analysis.md
index 1bf781c4d..cf292cacd 100644
--- a/docs/data-analysis.md
+++ b/docs/data-analysis.md
@@ -102,7 +102,7 @@ from freqtrade.configuration import Configuration
 config = Configuration.from_files(["config1.json", "config2.json"])
 
 # Show the config in memory
-print(json.dumps(config, indent=2))
+print(json.dumps(config['original_config'], indent=2))
 ```
 
 For Interactive environments, have an additional configuration specifying `user_data_dir` and pass this in last, so you don't have to change directories while running the bot.
diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py
index dba94abc8..424fdb67e 100644
--- a/freqtrade/configuration/configuration.py
+++ b/freqtrade/configuration/configuration.py
@@ -90,6 +90,9 @@ class Configuration:
         # Load all configs
         config: Dict[str, Any] = self.load_from_files(self.args["config"])
 
+        # Keep a copy of the original configuration file
+        config['original_config'] = deepcopy(config)
+
         self._process_common_options(config)
 
         self._process_optimize_options(config)
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 67bde50fa..87f021df4 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -161,6 +161,27 @@ def test_from_config(default_conf, mocker, caplog) -> None:
     assert validated_conf['fiat_display_currency'] == "EUR"
     assert 'internals' in validated_conf
     assert log_has('Validating configuration ...', caplog)
+    assert isinstance(validated_conf['user_data_dir'], Path)
+
+
+def test_print_config(default_conf, mocker, caplog) -> None:
+    conf1 = deepcopy(default_conf)
+    # Delete non-json elements from default_conf
+    del conf1['user_data_dir']
+    config_files = [conf1]
+
+    configsmock = MagicMock(side_effect=config_files)
+    mocker.patch(
+        'freqtrade.configuration.configuration.load_config_file',
+        configsmock
+    )
+
+    validated_conf = Configuration.from_files(['test_conf.json'])
+
+    assert isinstance(validated_conf['user_data_dir'], Path)
+    assert "user_data_dir" in validated_conf
+    assert "original_config" in validated_conf
+    assert isinstance(json.dumps(validated_conf['original_config']), str)
 
 
 def test_load_config_max_open_trades_minus_one(default_conf, mocker, caplog) -> None:

From 15a4df4c49f1518e42151755374cdd6f73792c32 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 20 Sep 2019 08:34:18 +0200
Subject: [PATCH 0493/3421] Mock create_datadir to make sure no folders are
 left behind

---
 tests/test_configuration.py | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 87f021df4..0cf8590cb 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -143,12 +143,10 @@ def test_from_config(default_conf, mocker, caplog) -> None:
     conf2['exchange']['pair_whitelist'] += ['NANO/BTC']
     conf2['fiat_display_currency'] = "EUR"
     config_files = [conf1, conf2]
+    mocker.patch('freqtrade.configuration.configuration.create_datadir', lambda c, x: x)
 
     configsmock = MagicMock(side_effect=config_files)
-    mocker.patch(
-        'freqtrade.configuration.configuration.load_config_file',
-        configsmock
-    )
+    mocker.patch('freqtrade.configuration.configuration.load_config_file',configsmock)
 
     validated_conf = Configuration.from_files(['test_conf.json', 'test2_conf.json'])
 
@@ -171,10 +169,8 @@ def test_print_config(default_conf, mocker, caplog) -> None:
     config_files = [conf1]
 
     configsmock = MagicMock(side_effect=config_files)
-    mocker.patch(
-        'freqtrade.configuration.configuration.load_config_file',
-        configsmock
-    )
+    mocker.patch('freqtrade.configuration.configuration.create_datadir', lambda c, x: x)
+    mocker.patch('freqtrade.configuration.configuration.load_config_file', configsmock)
 
     validated_conf = Configuration.from_files(['test_conf.json'])
 

From dc825c249c2fb1e34ec21f0a4eeafbb9eabf9e43 Mon Sep 17 00:00:00 2001
From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
Date: Fri, 20 Sep 2019 20:51:31 +0300
Subject: [PATCH 0494/3421] Make flake happy

---
 tests/test_configuration.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 0cf8590cb..7cb7f12da 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -146,7 +146,7 @@ def test_from_config(default_conf, mocker, caplog) -> None:
     mocker.patch('freqtrade.configuration.configuration.create_datadir', lambda c, x: x)
 
     configsmock = MagicMock(side_effect=config_files)
-    mocker.patch('freqtrade.configuration.configuration.load_config_file',configsmock)
+    mocker.patch('freqtrade.configuration.configuration.load_config_file', configsmock)
 
     validated_conf = Configuration.from_files(['test_conf.json', 'test2_conf.json'])
 

From 1cd8ed0c1afec3236e1f0e0bc0a198c33ca32357 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 20 Sep 2019 20:02:07 +0200
Subject: [PATCH 0495/3421] Remove --refresh-pairs

---
 freqtrade/configuration/arguments.py     | 2 +-
 freqtrade/configuration/cli_options.py   | 7 -------
 freqtrade/configuration/configuration.py | 4 ----
 freqtrade/data/dataprovider.py           | 1 -
 freqtrade/optimize/backtesting.py        | 2 --
 freqtrade/optimize/edge_cli.py           | 2 +-
 freqtrade/optimize/hyperopt.py           | 2 --
 7 files changed, 2 insertions(+), 18 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index bb961173b..6e2ecea2e 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -15,7 +15,7 @@ ARGS_STRATEGY = ["strategy", "strategy_path"]
 ARGS_MAIN = ARGS_COMMON + ARGS_STRATEGY + ["db_url", "sd_notify"]
 
 ARGS_COMMON_OPTIMIZE = ["ticker_interval", "timerange",
-                        "max_open_trades", "stake_amount", "refresh_pairs"]
+                        "max_open_trades", "stake_amount"]
 
 ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + ["position_stacking", "use_max_market_positions",
                                         "strategy_list", "export", "exportfilename"]
diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py
index bf1ec3620..cb07dbdba 100644
--- a/freqtrade/configuration/cli_options.py
+++ b/freqtrade/configuration/cli_options.py
@@ -107,13 +107,6 @@ AVAILABLE_CLI_OPTIONS = {
         help='Specify stake_amount.',
         type=float,
     ),
-    "refresh_pairs": Arg(
-        '-r', '--refresh-pairs-cached',
-        help='Refresh the pairs files in tests/testdata with the latest data from the '
-        'exchange. Use it if you want to run your optimization commands with '
-        'up-to-date data.',
-        action='store_true',
-    ),
     # Backtesting
     "position_stacking": Arg(
         '--eps', '--enable-position-stacking',
diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py
index 1aed32e50..af9e420f8 100644
--- a/freqtrade/configuration/configuration.py
+++ b/freqtrade/configuration/configuration.py
@@ -212,10 +212,6 @@ class Configuration:
 
         self._process_datadir_options(config)
 
-        self._args_to_config(config, argname='refresh_pairs',
-                             logstring='Parameter -r/--refresh-pairs-cached detected ...',
-                             deprecated_msg='-r/--refresh-pairs-cached will be removed soon.')
-
         self._args_to_config(config, argname='strategy_list',
                              logstring='Using strategy list of {} strategies', logfun=len)
 
diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py
index eb6ec0f2a..7d5e4540b 100644
--- a/freqtrade/data/dataprovider.py
+++ b/freqtrade/data/dataprovider.py
@@ -65,7 +65,6 @@ class DataProvider:
         """
         return load_pair_history(pair=pair,
                                  ticker_interval=ticker_interval or self._config['ticker_interval'],
-                                 refresh_pairs=False,
                                  datadir=Path(self._config['datadir'])
                                  )
 
diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py
index 4956907fb..6074b281b 100644
--- a/freqtrade/optimize/backtesting.py
+++ b/freqtrade/optimize/backtesting.py
@@ -414,8 +414,6 @@ class Backtesting:
             datadir=Path(self.config['datadir']),
             pairs=pairs,
             ticker_interval=self.ticker_interval,
-            refresh_pairs=self.config.get('refresh_pairs', False),
-            exchange=self.exchange,
             timerange=timerange,
         )
 
diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py
index f22bcb642..6484a5328 100644
--- a/freqtrade/optimize/edge_cli.py
+++ b/freqtrade/optimize/edge_cli.py
@@ -39,7 +39,7 @@ class EdgeCli:
         self.strategy = StrategyResolver(self.config).strategy
 
         self.edge = Edge(config, self.exchange, self.strategy)
-        self.edge._refresh_pairs = self.config.get('refresh_pairs', False)
+        self.edge._refresh_pairs = False
 
         self.timerange = TimeRange.parse_timerange(None if self.config.get(
             'timerange') is None else str(self.config.get('timerange')))
diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py
index c511aa5ac..61623d3df 100644
--- a/freqtrade/optimize/hyperopt.py
+++ b/freqtrade/optimize/hyperopt.py
@@ -362,8 +362,6 @@ class Hyperopt:
             datadir=Path(self.config['datadir']),
             pairs=self.config['exchange']['pair_whitelist'],
             ticker_interval=self.backtesting.ticker_interval,
-            refresh_pairs=self.config.get('refresh_pairs', False),
-            exchange=self.backtesting.exchange,
             timerange=timerange
         )
 

From e66fa1cec69732670b93b1e8edbee4b34537cbe1 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 20 Sep 2019 20:12:35 +0200
Subject: [PATCH 0496/3421] Adjust tests to not use --refresh-pairs

---
 tests/data/test_dataprovider.py    | 1 -
 tests/data/test_history.py         | 7 ++-----
 tests/optimize/test_backtesting.py | 5 -----
 tests/optimize/test_edge_cli.py    | 9 ---------
 tests/optimize/test_hyperopt.py    | 5 -----
 tests/test_arguments.py            | 2 --
 tests/test_configuration.py        | 7 -------
 7 files changed, 2 insertions(+), 34 deletions(-)

diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py
index ec176d889..39e2f7d2e 100644
--- a/tests/data/test_dataprovider.py
+++ b/tests/data/test_dataprovider.py
@@ -45,7 +45,6 @@ def test_historic_ohlcv(mocker, default_conf, ticker_history):
     data = dp.historic_ohlcv("UNITTEST/BTC", "5m")
     assert isinstance(data, DataFrame)
     assert historymock.call_count == 1
-    assert historymock.call_args_list[0][1]["refresh_pairs"] is False
     assert historymock.call_args_list[0][1]["ticker_interval"] == "5m"
 
 
diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index e747794e5..abe3f0886 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -74,8 +74,7 @@ def test_load_data_7min_ticker(mocker, caplog, default_conf, testdatadir) -> Non
     assert ld is None
     assert log_has(
         'No history data for pair: "UNITTEST/BTC", interval: 7m. '
-        'Use --refresh-pairs-cached option or `freqtrade download-data` '
-        'script to download the data', caplog
+        'Use `freqtrade download-data` to download the data', caplog
     )
 
 
@@ -105,13 +104,11 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog,
     # do not download a new pair if refresh_pairs isn't set
     history.load_pair_history(datadir=testdatadir,
                               ticker_interval='1m',
-                              refresh_pairs=False,
                               pair='MEME/BTC')
     assert os.path.isfile(file) is False
     assert log_has(
         'No history data for pair: "MEME/BTC", interval: 1m. '
-        'Use --refresh-pairs-cached option or `freqtrade download-data` '
-        'script to download the data', caplog
+        'Use `freqtrade download-data` to download the data', caplog
     )
 
     # download a new pair if refresh_pairs is set
diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py
index 7b50f2b18..d06116755 100644
--- a/tests/optimize/test_backtesting.py
+++ b/tests/optimize/test_backtesting.py
@@ -197,7 +197,6 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) ->
     assert config['runmode'] == RunMode.BACKTEST
 
 
-@pytest.mark.filterwarnings("ignore:DEPRECATED")
 def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> None:
     patched_configuration_load_config_file(mocker, default_conf)
     mocker.patch(
@@ -213,7 +212,6 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) ->
         '--ticker-interval', '1m',
         '--enable-position-stacking',
         '--disable-max-market-positions',
-        '--refresh-pairs-cached',
         '--timerange', ':100',
         '--export', '/bar/foo',
         '--export-filename', 'foo_bar.json'
@@ -240,9 +238,6 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) ->
     assert log_has('Parameter --disable-max-market-positions detected ...', caplog)
     assert log_has('max_open_trades set to unlimited ...', caplog)
 
-    assert 'refresh_pairs' in config
-    assert log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog)
-
     assert 'timerange' in config
     assert log_has('Parameter --timerange detected: {} ...'.format(config['timerange']), caplog)
 
diff --git a/tests/optimize/test_edge_cli.py b/tests/optimize/test_edge_cli.py
index f312bba2c..97103da55 100644
--- a/tests/optimize/test_edge_cli.py
+++ b/tests/optimize/test_edge_cli.py
@@ -3,8 +3,6 @@
 
 from unittest.mock import MagicMock
 
-import pytest
-
 from freqtrade.edge import PairInfo
 from freqtrade.optimize import setup_configuration, start_edge
 from freqtrade.optimize.edge_cli import EdgeCli
@@ -35,14 +33,10 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) ->
     assert 'ticker_interval' in config
     assert not log_has_re('Parameter -i/--ticker-interval detected .*', caplog)
 
-    assert 'refresh_pairs' not in config
-    assert not log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog)
-
     assert 'timerange' not in config
     assert 'stoploss_range' not in config
 
 
-@pytest.mark.filterwarnings("ignore:DEPRECATED")
 def test_setup_edge_configuration_with_arguments(mocker, edge_conf, caplog) -> None:
     patched_configuration_load_config_file(mocker, edge_conf)
     mocker.patch(
@@ -56,7 +50,6 @@ def test_setup_edge_configuration_with_arguments(mocker, edge_conf, caplog) -> N
         '--datadir', '/foo/bar',
         'edge',
         '--ticker-interval', '1m',
-        '--refresh-pairs-cached',
         '--timerange', ':100',
         '--stoplosses=-0.01,-0.10,-0.001'
     ]
@@ -74,8 +67,6 @@ def test_setup_edge_configuration_with_arguments(mocker, edge_conf, caplog) -> N
     assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...',
                    caplog)
 
-    assert 'refresh_pairs' in config
-    assert log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog)
     assert 'timerange' in config
     assert log_has('Parameter --timerange detected: {} ...'.format(config['timerange']), caplog)
 
diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index 2e383c839..543acbde6 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -94,7 +94,6 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca
     assert config['runmode'] == RunMode.HYPEROPT
 
 
-@pytest.mark.filterwarnings("ignore:DEPRECATED")
 def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplog) -> None:
     patched_configuration_load_config_file(mocker, default_conf)
     mocker.patch(
@@ -108,7 +107,6 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo
         'hyperopt',
         '--ticker-interval', '1m',
         '--timerange', ':100',
-        '--refresh-pairs-cached',
         '--enable-position-stacking',
         '--disable-max-market-positions',
         '--epochs', '1000',
@@ -137,9 +135,6 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo
     assert log_has('Parameter --disable-max-market-positions detected ...', caplog)
     assert log_has('max_open_trades set to unlimited ...', caplog)
 
-    assert 'refresh_pairs' in config
-    assert log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog)
-
     assert 'timerange' in config
     assert log_has('Parameter --timerange detected: {} ...'.format(config['timerange']), caplog)
 
diff --git a/tests/test_arguments.py b/tests/test_arguments.py
index 7b18aa356..cf0104c01 100644
--- a/tests/test_arguments.py
+++ b/tests/test_arguments.py
@@ -99,7 +99,6 @@ def test_parse_args_backtesting_custom() -> None:
         '-c', 'test_conf.json',
         'backtesting',
         '--ticker-interval', '1m',
-        '--refresh-pairs-cached',
         '--strategy-list',
         'DefaultStrategy',
         'SampleStrategy'
@@ -110,7 +109,6 @@ def test_parse_args_backtesting_custom() -> None:
     assert call_args["subparser"] == 'backtesting'
     assert call_args["func"] is not None
     assert call_args["ticker_interval"] == '1m'
-    assert call_args["refresh_pairs"] is True
     assert type(call_args["strategy_list"]) is list
     assert len(call_args["strategy_list"]) == 2
 
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 53f46fe2e..6cd38bb6d 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -341,14 +341,10 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) ->
     assert 'position_stacking' not in config
     assert not log_has('Parameter --enable-position-stacking detected ...', caplog)
 
-    assert 'refresh_pairs' not in config
-    assert not log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog)
-
     assert 'timerange' not in config
     assert 'export' not in config
 
 
-@pytest.mark.filterwarnings("ignore:DEPRECATED")
 def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> None:
     patched_configuration_load_config_file(mocker, default_conf)
     mocker.patch(
@@ -368,7 +364,6 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non
         '--ticker-interval', '1m',
         '--enable-position-stacking',
         '--disable-max-market-positions',
-        '--refresh-pairs-cached',
         '--timerange', ':100',
         '--export', '/bar/foo'
     ]
@@ -398,8 +393,6 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non
     assert log_has('Parameter --disable-max-market-positions detected ...', caplog)
     assert log_has('max_open_trades set to unlimited ...', caplog)
 
-    assert 'refresh_pairs'in config
-    assert log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog)
     assert 'timerange' in config
     assert log_has('Parameter --timerange detected: {} ...'.format(config['timerange']), caplog)
 

From 9cedbc13455df7b8c763dd0357dd3155d04a2b12 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 20 Sep 2019 20:16:49 +0200
Subject: [PATCH 0497/3421] Cleanup history.py and update documentation

---
 docs/bot-usage.md          | 12 ------------
 docs/deprecated.md         |  6 ++----
 freqtrade/data/history.py  | 31 +++++++++----------------------
 tests/data/test_history.py | 25 -------------------------
 4 files changed, 11 insertions(+), 63 deletions(-)

diff --git a/docs/bot-usage.md b/docs/bot-usage.md
index 0b0561d3d..f44400e32 100644
--- a/docs/bot-usage.md
+++ b/docs/bot-usage.md
@@ -184,10 +184,6 @@ optional arguments:
                         Specify max_open_trades to use.
   --stake_amount STAKE_AMOUNT
                         Specify stake_amount.
-  -r, --refresh-pairs-cached
-                        Refresh the pairs files in tests/testdata with the
-                        latest data from the exchange. Use it if you want to
-                        run your optimization commands with up-to-date data.
   --eps, --enable-position-stacking
                         Allow buying the same pair multiple times (position
                         stacking).
@@ -245,10 +241,6 @@ optional arguments:
                         Specify max_open_trades to use.
   --stake_amount STAKE_AMOUNT
                         Specify stake_amount.
-  -r, --refresh-pairs-cached
-                        Refresh the pairs files in tests/testdata with the
-                        latest data from the exchange. Use it if you want to
-                        run your optimization commands with up-to-date data.
   --customhyperopt NAME
                         Specify hyperopt class name (default:
                         `DefaultHyperOpts`).
@@ -310,10 +302,6 @@ optional arguments:
                         Specify max_open_trades to use.
   --stake_amount STAKE_AMOUNT
                         Specify stake_amount.
-  -r, --refresh-pairs-cached
-                        Refresh the pairs files in tests/testdata with the
-                        latest data from the exchange. Use it if you want to
-                        run your optimization commands with up-to-date data.
   --stoplosses STOPLOSS_RANGE
                         Defines a range of stoploss against which edge will
                         assess the strategy the format is "min,max,step"
diff --git a/docs/deprecated.md b/docs/deprecated.md
index ed70b1936..24c2bb1e3 100644
--- a/docs/deprecated.md
+++ b/docs/deprecated.md
@@ -4,7 +4,7 @@ This page contains description of the command line arguments, configuration para
 and the bot features that were declared as DEPRECATED by the bot development team
 and are no longer supported. Please avoid their usage in your configuration.
 
-## Deprecated
+## Removed features
 
 ### the `--refresh-pairs-cached` command line option
 
@@ -12,9 +12,7 @@ and are no longer supported. Please avoid their usage in your configuration.
 Since this leads to much confusion, and slows down backtesting (while not being part of backtesting) this has been singled out 
 as a seperate freqtrade subcommand `freqtrade download-data`.
 
-This command line option was deprecated in `2019.7-dev` and will be removed after the next release.
-
-## Removed features
+This command line option was deprecated in `2019.7-dev` and removed in `2019-9`
 
 ### The **--dynamic-whitelist** command line option
 
diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index b4776fab0..981a398da 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -129,8 +129,7 @@ def load_pair_history(pair: str,
     else:
         logger.warning(
             f'No history data for pair: "{pair}", interval: {ticker_interval}. '
-            'Use --refresh-pairs-cached option or `freqtrade download-data` '
-            'script to download the data'
+            'Use `freqtrade download-data` to download the data'
         )
         return None
 
@@ -142,33 +141,21 @@ def load_data(datadir: Path,
               exchange: Optional[Exchange] = None,
               timerange: TimeRange = TimeRange(None, None, 0, 0),
               fill_up_missing: bool = True,
-              live: bool = False
               ) -> Dict[str, DataFrame]:
     """
     Loads ticker history data for a list of pairs the given parameters
     :return: dict(:)
     """
     result: Dict[str, DataFrame] = {}
-    if live:
-        if exchange:
-            logger.info('Live: Downloading data for all defined pairs ...')
-            exchange.refresh_latest_ohlcv([(pair, ticker_interval) for pair in pairs])
-            result = {key[0]: value for key, value in exchange._klines.items() if value is not None}
-        else:
-            raise OperationalException(
-                "Exchange needs to be initialized when using live data."
-            )
-    else:
-        logger.info('Using local backtesting data ...')
 
-        for pair in pairs:
-            hist = load_pair_history(pair=pair, ticker_interval=ticker_interval,
-                                     datadir=datadir, timerange=timerange,
-                                     refresh_pairs=refresh_pairs,
-                                     exchange=exchange,
-                                     fill_up_missing=fill_up_missing)
-            if hist is not None:
-                result[pair] = hist
+    for pair in pairs:
+        hist = load_pair_history(pair=pair, ticker_interval=ticker_interval,
+                                 datadir=datadir, timerange=timerange,
+                                 refresh_pairs=refresh_pairs,
+                                 exchange=exchange,
+                                 fill_up_missing=fill_up_missing)
+        if hist is not None:
+            result[pair] = hist
     return result
 
 
diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index abe3f0886..1983c2a9f 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -131,31 +131,6 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog,
     _clean_test_file(file)
 
 
-def test_load_data_live(default_conf, mocker, caplog, testdatadir) -> None:
-    refresh_mock = MagicMock()
-    mocker.patch("freqtrade.exchange.Exchange.refresh_latest_ohlcv", refresh_mock)
-    exchange = get_patched_exchange(mocker, default_conf)
-
-    history.load_data(datadir=testdatadir, ticker_interval='5m',
-                      pairs=['UNITTEST/BTC', 'UNITTEST2/BTC'],
-                      live=True,
-                      exchange=exchange)
-    assert refresh_mock.call_count == 1
-    assert len(refresh_mock.call_args_list[0][0][0]) == 2
-    assert log_has('Live: Downloading data for all defined pairs ...', caplog)
-
-
-def test_load_data_live_noexchange(default_conf, mocker, caplog, testdatadir) -> None:
-
-    with pytest.raises(OperationalException,
-                       match=r'Exchange needs to be initialized when using live data.'):
-        history.load_data(datadir=testdatadir, ticker_interval='5m',
-                          pairs=['UNITTEST/BTC', 'UNITTEST2/BTC'],
-                          exchange=None,
-                          live=True,
-                          )
-
-
 def test_testdata_path(testdatadir) -> None:
     assert str(Path('tests') / 'testdata') in str(testdatadir)
 

From 508a35fc2067ef6123fe3aadfe58c5954ece79a4 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 20 Sep 2019 20:20:16 +0200
Subject: [PATCH 0498/3421] Update comment as to why certain points have not
 been removed

---
 freqtrade/data/history.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index 981a398da..865289f38 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -143,8 +143,12 @@ def load_data(datadir: Path,
               fill_up_missing: bool = True,
               ) -> Dict[str, DataFrame]:
     """
-    Loads ticker history data for a list of pairs the given parameters
+    Loads ticker history data for a list of pairs
     :return: dict(:)
+    TODO: refresh_pairs is still used by edge to keep the data uptodate.
+        This should be replaced in the future. Instead, writing the current candles to disk
+        from dataprovider should be implemented, as this would avoid loading ohlcv data twice.
+        exchange and refresh_pairs are then not needed here nor in load_pair_history.
     """
     result: Dict[str, DataFrame] = {}
 

From 313091eb1caf6a2ce2d4838fcccd863cbbc9a582 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 20 Sep 2019 20:22:51 +0200
Subject: [PATCH 0499/3421] some more refresh_pairs cleanups

---
 freqtrade/optimize/edge_cli.py     | 1 +
 tests/data/test_converter.py       | 1 -
 tests/data/test_history.py         | 3 +--
 tests/optimize/test_backtesting.py | 3 ---
 tests/optimize/test_hyperopt.py    | 3 ---
 5 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py
index 6484a5328..0cf5a009b 100644
--- a/freqtrade/optimize/edge_cli.py
+++ b/freqtrade/optimize/edge_cli.py
@@ -39,6 +39,7 @@ class EdgeCli:
         self.strategy = StrategyResolver(self.config).strategy
 
         self.edge = Edge(config, self.exchange, self.strategy)
+        # Set refresh_pairs to false for edge-cli (it must be true for edge)
         self.edge._refresh_pairs = False
 
         self.timerange = TimeRange.parse_timerange(None if self.config.get(
diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py
index 72da47e76..e773a970e 100644
--- a/tests/data/test_converter.py
+++ b/tests/data/test_converter.py
@@ -24,7 +24,6 @@ def test_parse_ticker_dataframe(ticker_history_list, caplog):
 def test_ohlcv_fill_up_missing_data(testdatadir, caplog):
     data = load_pair_history(datadir=testdatadir,
                              ticker_interval='1m',
-                             refresh_pairs=False,
                              pair='UNITTEST/BTC',
                              fill_up_missing=False)
     caplog.set_level(logging.DEBUG)
diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index 1983c2a9f..e386c3506 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -321,7 +321,6 @@ def test_load_partial_missing(testdatadir, caplog) -> None:
     start = arrow.get('2018-01-01T00:00:00')
     end = arrow.get('2018-01-11T00:00:00')
     tickerdata = history.load_data(testdatadir, '5m', ['UNITTEST/BTC'],
-                                   refresh_pairs=False,
                                    timerange=TimeRange('date', 'date',
                                                        start.timestamp, end.timestamp))
     # timedifference in 5 minutes
@@ -336,7 +335,7 @@ def test_load_partial_missing(testdatadir, caplog) -> None:
     start = arrow.get('2018-01-10T00:00:00')
     end = arrow.get('2018-02-20T00:00:00')
     tickerdata = history.load_data(datadir=testdatadir, ticker_interval='5m',
-                                   pairs=['UNITTEST/BTC'], refresh_pairs=False,
+                                   pairs=['UNITTEST/BTC'],
                                    timerange=TimeRange('date', 'date',
                                                        start.timestamp, end.timestamp))
     # timedifference in 5 minutes
diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py
index d06116755..fa40809d8 100644
--- a/tests/optimize/test_backtesting.py
+++ b/tests/optimize/test_backtesting.py
@@ -188,9 +188,6 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) ->
     assert 'position_stacking' not in config
     assert not log_has('Parameter --enable-position-stacking detected ...', caplog)
 
-    assert 'refresh_pairs' not in config
-    assert not log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog)
-
     assert 'timerange' not in config
     assert 'export' not in config
     assert 'runmode' in config
diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index 543acbde6..0888c79d4 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -86,9 +86,6 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca
     assert 'position_stacking' not in config
     assert not log_has('Parameter --enable-position-stacking detected ...', caplog)
 
-    assert 'refresh_pairs' not in config
-    assert not log_has('Parameter -r/--refresh-pairs-cached detected ...', caplog)
-
     assert 'timerange' not in config
     assert 'runmode' in config
     assert config['runmode'] == RunMode.HYPEROPT

From 2fcddfc8666f982627b55188a6b502c98dcf1577 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 20 Sep 2019 20:29:26 +0200
Subject: [PATCH 0500/3421] Clarify updating existing data

---
 docs/backtesting.md | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/docs/backtesting.md b/docs/backtesting.md
index 45d5f486f..879cf78a3 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -7,7 +7,7 @@ Backtesting.
 
 To download data (candles / OHLCV) needed for backtesting and hyperoptimization use the `freqtrade download-data` command.
 
-If no additional parameter is specified, freqtrade will download data for `"1m"` and `"5m"` timeframes.
+If no additional parameter is specified, freqtrade will download data for `"1m"` and `"5m"` timeframes for 30 days.
 Exchange and pairs will come from `config.json` (if specified using `-c/--config`). Otherwise `--exchange` becomes mandatory.
 
 Alternatively, a `pairs.json` file can be used.
@@ -37,6 +37,10 @@ This will download ticker data for all the currency pairs you defined in `pairs.
 - Use `--timeframes` to specify which tickers to download. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute tickers.
 - To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options.
 
+!!! Tip Updating existing data
+    If you already have backtesting data available in your data-directory and would like to refresh this data up to today, use `--days xx` with a number slightly higher than the missing number of days. Freqtrade will load the available data and only download the missing data.
+    Be carefull though: If the number is too small (which would result in a few missing days), the whole dataset will be removed and only xx days will be downloaded.
+
 ## Test your strategy with Backtesting
 
 Now you have good Buy and Sell strategies and some historic data, you want to test it against

From b1a3e213ae9eab1479ba852589593591f425a485 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 21 Sep 2019 10:09:14 +0200
Subject: [PATCH 0501/3421] Improve backtesting docs

---
 docs/backtesting.md   | 117 +++++++++++++++++-------------------------
 docs/data-download.md |  39 ++++++++++++++
 docs/hyperopt.md      |   3 ++
 mkdocs.yml            |   1 +
 4 files changed, 89 insertions(+), 71 deletions(-)
 create mode 100644 docs/data-download.md

diff --git a/docs/backtesting.md b/docs/backtesting.md
index 45d5f486f..b3f22c664 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -1,41 +1,9 @@
 # Backtesting
 
-This page explains how to validate your strategy performance by using
-Backtesting.
+This page explains how to validate your strategy performance by using Backtesting.
 
-## Getting data for backtesting and hyperopt
-
-To download data (candles / OHLCV) needed for backtesting and hyperoptimization use the `freqtrade download-data` command.
-
-If no additional parameter is specified, freqtrade will download data for `"1m"` and `"5m"` timeframes.
-Exchange and pairs will come from `config.json` (if specified using `-c/--config`). Otherwise `--exchange` becomes mandatory.
-
-Alternatively, a `pairs.json` file can be used.
-
-If you are using Binance for example:
-
-- create a directory `user_data/data/binance` and copy `pairs.json` in that directory.
-- update the `pairs.json` to contain the currency pairs you are interested in.
-
-```bash
-mkdir -p user_data/data/binance
-cp freqtrade/tests/testdata/pairs.json user_data/data/binance
-```
-
-Then run:
-
-```bash
-freqtrade download-data --exchange binance
-```
-
-This will download ticker data for all the currency pairs you defined in `pairs.json`.
-
-- To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`.
-- To change the exchange used to download the tickers, please use a different configuration file (you'll probably need to adjust ratelimits etc.)
-- To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`.
-- To download ticker data for only 10 days, use `--days 10` (defaults to 30 days).
-- Use `--timeframes` to specify which tickers to download. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute tickers.
-- To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options.
+Backtesting requires historic data to be available.
+To learn how to get data for the pairs and exchange you're interrested in, head over to the [Data downloading](data-download.md) section of the documentation.
 
 ## Test your strategy with Backtesting
 
@@ -46,14 +14,13 @@ real data. This is what we call
 Backtesting will use the crypto-currencies (pairs) from your config file
 and load ticker data from `user_data/data/` by default.
 If no data is available for the exchange / pair / ticker interval combination, backtesting will
-ask you to download them first using `freqtrade download-data`. 
-For details on downloading, please refer to the [relevant section](#Getting-data-for-backtesting-and-hyperopt) in the documentation.
+ask you to download them first using `freqtrade download-data`.
+For details on downloading, please refer to the [Downloading data](data-download.md) section in the documentation.
 
-The result of backtesting will confirm you if your bot has better odds of making a profit than a loss.
-
-The backtesting is very easy with freqtrade.
+The result of backtesting will confirm if your bot has better odds of making a profit than a loss.
 
 ### Run a backtesting against the currencies listed in your config file
+
 #### With 5 min tickers (Per default)
 
 ```bash
@@ -107,31 +74,33 @@ freqtrade backtesting --export trades --export-filename=backtest_samplestrategy.
 
 #### Running backtest with smaller testset
 
-Use the `--timerange` argument to change how much of the testset
-you want to use. The last N ticks/timeframes will be used.
+Use the `--timerange` argument to change how much of the testset you want to use.
 
 Example:
 
 ```bash
-freqtrade backtesting --timerange=-200
+freqtrade backtesting --timerange=20190501-
 ```
 
 #### Advanced use of timerange
 
-Doing `--timerange=-200` will get the last 200 timeframes
-from your inputdata. You can also specify specific dates,
-or a range span indexed by start and stop.
+Doing `--timerange=20190101-` will all available data starting with January 1st, 2019 from your inputdata.
+You can also specify specific dates, or a range span indexed by start and stop.
 
 The full timerange specification:
 
-- Use last 123 tickframes of data: `--timerange=-123`
-- Use first 123 tickframes of data: `--timerange=123-`
-- Use tickframes from line 123 through 456: `--timerange=123-456`
+
 - Use tickframes till 2018/01/31: `--timerange=-20180131`
 - Use tickframes since 2018/01/31: `--timerange=20180131-`
 - Use tickframes since 2018/01/31 till 2018/03/01 : `--timerange=20180131-20180301`
 - Use tickframes between POSIX timestamps 1527595200 1527618600:
                                                 `--timerange=1527595200-1527618600`
+- Use last 123 tickframes of data: `--timerange=-123`
+- Use first 123 tickframes of data: `--timerange=123-`
+- Use tickframes from line 123 through 456: `--timerange=123-456`
+
+!!! warning
+    Be carefull when using non-date functions - these do not allow you to specify precise dates, so if you updated the test-data it will probably use a different dataset.
 
 ## Understand the backtesting result
 
@@ -177,11 +146,12 @@ A backtesting result will look like that:
 | TOTAL    |           2 |           0.78 |           1.57 |       0.00007855 |           0.78 | 4:00:00        |        2 |      0 |
 ```
 
-The 1st table will contain all trades the bot made.
+The 1st table contains all trades the bot made, including "left open trades".
 
-The 2nd table will contain a recap of sell reasons.
+The 2nd table contains a recap of sell reasons.
 
-The 3rd table will contain all trades the bot had to `forcesell` at the end of the backtest period to present a full picture.
+The 3rd table contains all trades the bot had to `forcesell` at the end of the backtest period to present a full picture.
+This is necessary to simulate realistic behaviour, since the backtest period has to end at some point, while realistically, you could leave the bot running forever.
 These trades are also included in the first table, but are extracted separately for clarity.
 
 The last line will give you the overall performance of your strategy,
@@ -191,22 +161,16 @@ here:
 | TOTAL    |         429 |           0.36 |         152.41 |       0.00762792 |          76.20 | 4:12:00        |      186 |    243 |
 ```
 
-We understand the bot has made `429` trades for an average duration of
-`4:12:00`, with a performance of `76.20%` (profit), that means it has
+The bot has made `429` trades for an average duration of `4:12:00`, with a performance of `76.20%` (profit), that means it has
 earned a total of `0.00762792 BTC` starting with a capital of 0.01 BTC.
 
-The column `avg profit %` shows the average profit for all trades made while the column `cum profit %` sums all the profits/losses. 
-The column `tot profit %` shows instead the total profit % in relation to allocated capital 
-(`max_open_trades * stake_amount`). In the above results we have `max_open_trades=2 stake_amount=0.005` in config 
-so `(76.20/100) * (0.005 * 2) =~ 0.00762792 BTC`.
+The column `avg profit %` shows the average profit for all trades made while the column `cum profit %` sums all the profits/losses.
+The column `tot profit %` shows instead the total profit % in relation to allocated capital (`max_open_trades * stake_amount`).
+In the above results we have `max_open_trades=2 stake_amount=0.005` in config  so `(76.20/100) * (0.005 * 2) =~ 0.00762792 BTC`.
 
-As you will see your strategy performance will be influenced by your buy
-strategy, your sell strategy, and also by the `minimal_roi` and
-`stop_loss` you have set.
+Your strategy performance is influenced by your buy strategy, your sell strategy, and also by the `minimal_roi` and `stop_loss` you have set.
 
-As for an example if your minimal_roi is only `"0":  0.01`. You cannot
-expect the bot to make more profit than 1% (because it will sell every
-time a trade will reach 1%).
+For example, if your minimal_roi is only `"0":  0.01`. You cannot expect the bot to make more profit than 1% (because it will sell every time a trade will reach 1%).
 
 ```json
 "minimal_roi": {
@@ -215,22 +179,33 @@ time a trade will reach 1%).
 ```
 
 On the other hand, if you set a too high `minimal_roi` like `"0":  0.55`
-(55%), there is a lot of chance that the bot will never reach this
-profit. Hence, keep in mind that your performance is a mix of your
-strategies, your configuration, and the crypto-currency you have set up.
+(55%), there is almost no chance that the bot will never reach this profit.
+Hence, keep in mind that your performance is a mix of the different elements of the strategy, your configuration, and the crypto-currency pairs you have set up.
+
+### Assumptions made by backtesting
+
+Since backtesting lacks some detailed information about what happens within a candle, it needs to take a few assumptions:
+
+- Buys happen at open-price
+- Low happens before high for stoploss, protecting capital first.
+- ROI sells are compared to high - but the ROI value is used (e.g. ROI = 2%, high=5% - so the sell will be at 2%)
+- Stoploss sells happen exactly at stoploss price, even if low was lower
+- Trailing stoploss
+  - High happens first - adjusting stoploss
+  - Low uses the adjusted stoploss (so sells with large high-low difference are backtested correctly)
+- Sell-reason does not explain if a trade was positive or negative, just what triggered the sell (this can look odd if negative ROI values are used)
 
 ### Further backtest-result analysis
 
 To further analyze your backtest results, you can [export the trades](#exporting-trades-to-file).
 You can then load the trades to perform further analysis as shown in our [data analysis](data-analysis.md#backtesting) backtesting section.
 
-
 ## Backtesting multiple strategies
 
-To backtest multiple strategies, a list of Strategies can be provided.
+To compare multiple strategies, a list of Strategies can be provided to backtesting.
 
 This is limited to 1 ticker-interval per run, however, data is only loaded once from disk so if you have multiple
-strategies you'd like to compare, this should give a nice runtime boost.
+strategies you'd like to compare, this will give a nice runtime boost.
 
 All listed Strategies need to be in the same directory.
 
@@ -240,7 +215,7 @@ freqtrade backtesting --timerange 20180401-20180410 --ticker-interval 5m --strat
 
 This will save the results to `user_data/backtest_results/backtest-result-.json`, injecting the strategy-name into the target filename.
 There will be an additional table comparing win/losses of the different strategies (identical to the "Total" row in the first table).
-Detailed output for all strategies one after the other will be available, so make sure to scroll up.
+Detailed output for all strategies one after the other will be available, so make sure to scroll up to see the details per strategy.
 
 ```
 =========================================================== Strategy Summary ===========================================================
diff --git a/docs/data-download.md b/docs/data-download.md
new file mode 100644
index 000000000..f6b1e9904
--- /dev/null
+++ b/docs/data-download.md
@@ -0,0 +1,39 @@
+# Data download
+
+## Getting data for backtesting and hyperopt
+
+To download data (candles / OHLCV) needed for backtesting and hyperoptimization use the `freqtrade download-data` command.
+
+If no additional parameter is specified, freqtrade will download data for `"1m"` and `"5m"` timeframes.
+Exchange and pairs will come from `config.json` (if specified using `-c/--config`). Otherwise `--exchange` becomes mandatory.
+
+Alternatively, a `pairs.json` file can be used.
+
+If you are using Binance for example:
+
+- create a directory `user_data/data/binance` and copy `pairs.json` in that directory.
+- update the `pairs.json` to contain the currency pairs you are interested in.
+
+```bash
+mkdir -p user_data/data/binance
+cp freqtrade/tests/testdata/pairs.json user_data/data/binance
+```
+
+Then run:
+
+```bash
+freqtrade download-data --exchange binance
+```
+
+This will download ticker data for all the currency pairs you defined in `pairs.json`.
+
+- To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`.
+- To change the exchange used to download the tickers, please use a different configuration file (you'll probably need to adjust ratelimits etc.)
+- To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`.
+- To download ticker data for only 10 days, use `--days 10` (defaults to 30 days).
+- Use `--timeframes` to specify which tickers to download. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute tickers.
+- To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options.
+
+## Next step
+
+Great, you now have backtest data downloaded, so you can now start [backtesting](backtesting.md) your strategy.
diff --git a/docs/hyperopt.md b/docs/hyperopt.md
index becf572ee..00aec458c 100644
--- a/docs/hyperopt.md
+++ b/docs/hyperopt.md
@@ -6,6 +6,9 @@ algorithms included in the `scikit-optimize` package to accomplish this. The
 search will burn all your CPU cores, make your laptop sound like a fighter jet
 and still take a long time.
 
+Hyperopt requires historic data to be available, just as backtesting does.
+To learn how to get data for the pairs and exchange you're interrested in, head over to the [Data downloading](data-download.md) section of the documentation.
+
 !!! Bug
     Hyperopt will crash when used with only 1 CPU Core as found out in [Issue #1133](https://github.com/freqtrade/freqtrade/issues/1133)
 
diff --git a/mkdocs.yml b/mkdocs.yml
index 869c6565c..069f060db 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -11,6 +11,7 @@ nav:
         - Telegram: telegram-usage.md
         - Web Hook: webhook-config.md
         - REST API: rest-api.md
+    - Data Download: data-download.md
     - Backtesting: backtesting.md
     - Hyperopt: hyperopt.md
     - Edge positioning: edge.md

From 9a3bad291aa70cec5aaf5e86ae11563dd255fc46 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 21 Sep 2019 10:27:43 +0200
Subject: [PATCH 0502/3421] Automatically generate documentation from jupyter
 notebook

---
 docs/data-analysis.md             | 75 +-----------------------
 docs/developer.md                 |  8 +++
 docs/strategy_analysis_example.md | 95 +++++++++++++++++++++++++++++++
 mkdocs.yml                        |  6 +-
 requirements-dev.txt              |  3 +
 setup.py                          |  1 +
 6 files changed, 114 insertions(+), 74 deletions(-)
 create mode 100644 docs/strategy_analysis_example.md

diff --git a/docs/data-analysis.md b/docs/data-analysis.md
index cf292cacd..bc4f2e006 100644
--- a/docs/data-analysis.md
+++ b/docs/data-analysis.md
@@ -135,78 +135,9 @@ print(f"Loaded len(candles) rows of data for {pair} from {data_location}")
 candles.head()
 ```
 
-## Strategy debugging example  
+Further Data analysis documents:
 
-Debugging a strategy can be time-consuming. FreqTrade offers helper functions to visualize raw data.
-
-### Define variables used in analyses  
-
-You can override strategy settings as demonstrated below.
-
-```python
-# Customize these according to your needs.
-
-# Define some constants
-ticker_interval = "5m"
-# Name of the strategy class
-strategy_name = 'SampleStrategy'
-# Path to user data
-user_data_dir = 'user_data'
-# Location of the strategy
-strategy_location = Path(user_data_dir, 'strategies')
-# Location of the data
-data_location = Path(user_data_dir, 'data', 'binance')
-# Pair to analyze - Only use one pair here
-pair = "BTC_USDT"
-```
-
-### Load exchange data
-
-```python
-from pathlib import Path
-from freqtrade.data.history import load_pair_history
-
-# Load data using values set above
-candles = load_pair_history(datadir=data_location,
-                            ticker_interval=ticker_interval,
-                            pair=pair)
-
-# Confirm success
-print(f"Loaded {len(candles)} rows of data for {pair} from {data_location}")
-candles.head()
-```
-
-### Load and run strategy  
-
-* Rerun each time the strategy file is changed
-
-```python
-from freqtrade.resolvers import StrategyResolver
-
-# Load strategy using values set above
-strategy = StrategyResolver({'strategy': strategy_name,
-                            'user_data_dir': user_data_dir,
-                            'strategy_path': strategy_location}).strategy
-
-# Generate buy/sell signals using strategy
-df = strategy.analyze_ticker(candles, {'pair': pair})
-```
-
-### Display the trade details
-
-* Note that using `data.tail()` is preferable to `data.head()` as most indicators have some "startup" data at the top of the dataframe.
-* Some possible problems
-    * Columns with NaN values at the end of the dataframe
-    * Columns used in `crossed*()` functions with completely different units
-* Comparison with full backtest
-    * having 200 buy signals as output for one pair from `analyze_ticker()` does not necessarily mean that 200 trades will be made during backtesting.
-    * Assuming you use only one condition such as, `df['rsi'] < 30` as buy condition, this will generate multiple "buy" signals for each pair in sequence (until rsi returns > 29). The bot will only buy on the first of these signals (and also only if a trade-slot ("max_open_trades") is still available), or on one of the middle signals, as soon as a "slot" becomes available.  
-
-```python
-# Report results
-print(f"Generated {df['buy'].sum()} buy signals")
-data = df.set_index('date', drop=True)
-data.tail()
-```
+* [Strategy debugging](strategy_analysis_example.md)
+* [Plotting](plotting.md)
 
 Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data.
diff --git a/docs/developer.md b/docs/developer.md
index b048cf93f..4a3522147 100644
--- a/docs/developer.md
+++ b/docs/developer.md
@@ -149,6 +149,14 @@ print(datetime.utcnow())
 The output will show the last entry from the Exchange as well as the current UTC date.
 If the day shows the same day, then the last candle can be assumed as incomplete and should be dropped (leave the setting `"ohlcv_partial_candle"` from the exchange-class untouched / True). Otherwise, set `"ohlcv_partial_candle"` to `False` to not drop Candles (shown in the example above).
 
+## Updating example notebooks
+
+To keep the jupyter notebooks aligned with the documentation, the following should be ran after updating a example notebook.
+
+``` bash
+jupyter nbconvert --to markdown user_data/notebooks/strategy_analysis_example.ipynb --stdout > docs/strategy_analysis_example.md
+```
+
 ## Creating a release
 
 This part of the documentation is aimed at maintainers, and shows how to create a release.
diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md
new file mode 100644
index 000000000..a685f5d52
--- /dev/null
+++ b/docs/strategy_analysis_example.md
@@ -0,0 +1,95 @@
+## Strategy debugging example
+
+Debugging a strategy can be time-consuming. FreqTrade offers helper functions to visualize raw data.
+
+## Setup
+
+```python
+# Change directory
+# Modify this cell to insure that the output shows the correct path.
+import os
+from pathlib import Path
+
+# Define all paths relative to the project root shown in the cell output
+project_root = "somedir/freqtrade"
+i=0
+try:
+    os.chdirdir(project_root)
+    assert Path('LICENSE').is_file()
+except:
+    while i<4 and (not Path('LICENSE').is_file()):
+        os.chdir(Path(Path.cwd(), '../'))
+        i+=1
+    project_root = Path.cwd()
+print(Path.cwd())
+```
+
+
+```python
+# Customize these according to your needs.
+
+# Define some constants
+ticker_interval = "5m"
+# Name of the strategy class
+strategy_name = 'SampleStrategy'
+# Path to user data
+user_data_dir = 'user_data'
+# Location of the strategy
+strategy_location = Path(user_data_dir, 'strategies')
+# Location of the data
+data_location = Path(user_data_dir, 'data', 'binance')
+# Pair to analyze - Only use one pair here
+pair = "BTC_USDT"
+```
+
+
+```python
+# Load data using values set above
+from pathlib import Path
+from freqtrade.data.history import load_pair_history
+
+candles = load_pair_history(datadir=data_location,
+                            ticker_interval=ticker_interval,
+                            pair=pair)
+
+# Confirm success
+print("Loaded " + str(len(candles)) + f" rows of data for {pair} from {data_location}")
+candles.head()
+```
+
+## Load and run strategy
+* Rerun each time the strategy file is changed
+
+
+```python
+# Load strategy using values set above
+from freqtrade.resolvers import StrategyResolver
+strategy = StrategyResolver({'strategy': strategy_name,
+                            'user_data_dir': user_data_dir,
+                            'strategy_path': strategy_location}).strategy
+
+# Generate buy/sell signals using strategy
+df = strategy.analyze_ticker(candles, {'pair': pair})
+df.tail()
+```
+
+### Display the trade details
+
+* Note that using `data.head()` would also work, however most indicators have some "startup" data at the top of the dataframe.
+* Some possible problems
+    * Columns with NaN values at the end of the dataframe
+    * Columns used in `crossed*()` functions with completely different units
+* Comparison with full backtest
+    * having 200 buy signals as output for one pair from `analyze_ticker()` does not necessarily mean that 200 trades will be made during backtesting.
+    * Assuming you use only one condition such as, `df['rsi'] < 30` as buy condition, this will generate multiple "buy" signals for each pair in sequence (until rsi returns > 29). The bot will only buy on the first of these signals (and also only if a trade-slot ("max_open_trades") is still available), or on one of the middle signals, as soon as a "slot" becomes available.  
+
+
+
+```python
+# Report results
+print(f"Generated {df['buy'].sum()} buy signals")
+data = df.set_index('date', drop=True)
+data.tail()
+```
+
+Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data.
diff --git a/mkdocs.yml b/mkdocs.yml
index 869c6565c..027b009bc 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -15,8 +15,10 @@ nav:
     - Hyperopt: hyperopt.md
     - Edge positioning: edge.md
     - FAQ: faq.md
-    - Data Analysis: data-analysis.md
-    - Plotting: plotting.md
+    - Data Analysis:
+        - Jupyter Notebooks: data-analysis.md
+        - Strategy analysis: strategy_analysis_example.md
+        - Plotting: plotting.md
     - SQL Cheatsheet: sql_cheatsheet.md
     - Sandbox testing: sandbox-testing.md
     - Deprecated features: deprecated.md
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 1b9bf7570..908ba2349 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -12,3 +12,6 @@ pytest-asyncio==0.10.0
 pytest-cov==2.7.1
 pytest-mock==1.10.4
 pytest-random-order==1.0.4
+
+# Convert jupyter notebooks to markdown documents
+nbconvert==5.6.0
diff --git a/setup.py b/setup.py
index ca94dd338..c4d8a3887 100644
--- a/setup.py
+++ b/setup.py
@@ -36,6 +36,7 @@ jupyter = [
     'jupyter',
     'nbstripout',
     'ipykernel',
+    'nbconvert',
     ]
 
 all_extra = api + plot + develop + jupyter

From 5234f8bf289ad1eff22aa0c5de33240cf8a2aa58 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 21 Sep 2019 10:41:58 +0200
Subject: [PATCH 0503/3421] Update jupyter notebook slightly

---
 docs/developer.md                             |  3 +-
 docs/strategy_analysis_example.md             | 28 +++------------
 .../notebooks/strategy_analysis_example.ipynb | 35 +++----------------
 3 files changed, 11 insertions(+), 55 deletions(-)

diff --git a/docs/developer.md b/docs/developer.md
index 4a3522147..027ea44ac 100644
--- a/docs/developer.md
+++ b/docs/developer.md
@@ -154,7 +154,8 @@ If the day shows the same day, then the last candle can be assumed as incomplete
 To keep the jupyter notebooks aligned with the documentation, the following should be ran after updating a example notebook.
 
 ``` bash
-jupyter nbconvert --to markdown user_data/notebooks/strategy_analysis_example.ipynb --stdout > docs/strategy_analysis_example.md
+jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace user_data/notebooks/strategy_analysis_example.ipynb
+jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to markdown user_data/notebooks/strategy_analysis_example.ipynb --stdout > docs/strategy_analysis_example.md
 ```
 
 ## Creating a release
diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md
index a685f5d52..da698254a 100644
--- a/docs/strategy_analysis_example.md
+++ b/docs/strategy_analysis_example.md
@@ -1,31 +1,12 @@
-## Strategy debugging example
+# Strategy analysis example
 
 Debugging a strategy can be time-consuming. FreqTrade offers helper functions to visualize raw data.
 
 ## Setup
 
+
 ```python
-# Change directory
-# Modify this cell to insure that the output shows the correct path.
-import os
 from pathlib import Path
-
-# Define all paths relative to the project root shown in the cell output
-project_root = "somedir/freqtrade"
-i=0
-try:
-    os.chdirdir(project_root)
-    assert Path('LICENSE').is_file()
-except:
-    while i<4 and (not Path('LICENSE').is_file()):
-        os.chdir(Path(Path.cwd(), '../'))
-        i+=1
-    project_root = Path.cwd()
-print(Path.cwd())
-```
-
-
-```python
 # Customize these according to your needs.
 
 # Define some constants
@@ -33,9 +14,9 @@ ticker_interval = "5m"
 # Name of the strategy class
 strategy_name = 'SampleStrategy'
 # Path to user data
-user_data_dir = 'user_data'
+user_data_dir = Path('user_data')
 # Location of the strategy
-strategy_location = Path(user_data_dir, 'strategies')
+strategy_location = user_data_dir / 'strategies'
 # Location of the data
 data_location = Path(user_data_dir, 'data', 'binance')
 # Pair to analyze - Only use one pair here
@@ -45,7 +26,6 @@ pair = "BTC_USDT"
 
 ```python
 # Load data using values set above
-from pathlib import Path
 from freqtrade.data.history import load_pair_history
 
 candles = load_pair_history(datadir=data_location,
diff --git a/user_data/notebooks/strategy_analysis_example.ipynb b/user_data/notebooks/strategy_analysis_example.ipynb
index 89d71fe9d..868ca5611 100644
--- a/user_data/notebooks/strategy_analysis_example.ipynb
+++ b/user_data/notebooks/strategy_analysis_example.ipynb
@@ -4,7 +4,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "## Strategy debugging example\n",
+    "# Strategy analysis example\n",
     "\n",
     "Debugging a strategy can be time-consuming. FreqTrade offers helper functions to visualize raw data."
    ]
@@ -22,31 +22,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "# Change directory\n",
-    "# Modify this cell to insure that the output shows the correct path.\n",
-    "import os\n",
     "from pathlib import Path\n",
-    "\n",
-    "# Define all paths relative to the project root shown in the cell output\n",
-    "project_root = \"somedir/freqtrade\"\n",
-    "i=0\n",
-    "try:\n",
-    "    os.chdirdir(project_root)\n",
-    "    assert Path('LICENSE').is_file()\n",
-    "except:\n",
-    "    while i<4 and (not Path('LICENSE').is_file()):\n",
-    "        os.chdir(Path(Path.cwd(), '../'))\n",
-    "        i+=1\n",
-    "    project_root = Path.cwd()\n",
-    "print(Path.cwd())"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
     "# Customize these according to your needs.\n",
     "\n",
     "# Define some constants\n",
@@ -54,9 +30,9 @@
     "# Name of the strategy class\n",
     "strategy_name = 'SampleStrategy'\n",
     "# Path to user data\n",
-    "user_data_dir = 'user_data'\n",
+    "user_data_dir = Path('user_data')\n",
     "# Location of the strategy\n",
-    "strategy_location = Path(user_data_dir, 'strategies')\n",
+    "strategy_location = user_data_dir / 'strategies'\n",
     "# Location of the data\n",
     "data_location = Path(user_data_dir, 'data', 'binance')\n",
     "# Pair to analyze - Only use one pair here\n",
@@ -70,7 +46,6 @@
    "outputs": [],
    "source": [
     "# Load data using values set above\n",
-    "from pathlib import Path\n",
     "from freqtrade.data.history import load_pair_history\n",
     "\n",
     "candles = load_pair_history(datadir=data_location,\n",
@@ -161,7 +136,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.7.3"
+   "version": "3.7.4"
   },
   "mimetype": "text/x-python",
   "name": "python",
@@ -212,5 +187,5 @@
   "version": 3
  },
  "nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
 }

From 359b0ba0884bdb1a83a393b5773c08077046ef0f Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 21 Sep 2019 10:57:16 +0200
Subject: [PATCH 0504/3421] Add samples for plotting to jupyter documentation

---
 docs/data-analysis.md                         |  53 +--------
 docs/strategy_analysis_example.md             |  69 +++++++++++-
 .../notebooks/strategy_analysis_example.ipynb | 103 +++++++++++++++++-
 3 files changed, 172 insertions(+), 53 deletions(-)

diff --git a/docs/data-analysis.md b/docs/data-analysis.md
index bc4f2e006..115ce1916 100644
--- a/docs/data-analysis.md
+++ b/docs/data-analysis.md
@@ -61,34 +61,6 @@ except:
 print(Path.cwd())
 ```
 
-## Load existing objects into a Jupyter notebook
-
-These examples assume that you have already generated data using the cli. They will allow you to drill deeper into your results, and perform analysis which otherwise would make the output very difficult to digest due to information overload.
-
-### Load backtest results into a pandas dataframe
-
-```python
-from freqtrade.data.btanalysis import load_backtest_data
-
-# Load backtest results
-df = load_backtest_data("user_data/backtest_results/backtest-result.json")
-
-# Show value-counts per pair
-df.groupby("pair")["sell_reason"].value_counts()
-```
-
-### Load live trading results into a pandas dataframe
-
-``` python
-from freqtrade.data.btanalysis import load_trades_from_db
-
-# Fetch trades from database
-df = load_trades_from_db("sqlite:///tradesv3.sqlite")
-
-# Display results
-df.groupby("pair")["sell_reason"].value_counts()
-```
-
 ### Load multiple configuration files
 
 This option can be useful to inspect the results of passing in multiple configs.
@@ -114,30 +86,9 @@ Best avoid relative paths, since this starts at the storage location of the jupy
 }
 ```
 
-### Load exchange data to a pandas dataframe
+### Further Data analysis documentation
 
-This loads candle data to a dataframe
-
-```python
-from pathlib import Path
-from freqtrade.data.history import load_pair_history
-
-# Load data using values passed to function
-ticker_interval = "5m"
-data_location = Path('user_data', 'data', 'bitrex')
-pair = "BTC_USDT"
-candles = load_pair_history(datadir=data_location,
-                            ticker_interval=ticker_interval,
-                            pair=pair)
-
-# Confirm success
-print(f"Loaded len(candles) rows of data for {pair} from {data_location}")
-candles.head()
-```
-
-Further Data analysis documents:
-
-* [Strategy debugging](strategy_analysis_example.md)
+* [Strategy debugging](strategy_analysis_example.md) - also available as Jupyter notebook (`user_data/notebooks/strategy_analysis_example.ipynb`)
 * [Plotting](plotting.md)
 
 Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data.
diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md
index da698254a..49800bbb3 100644
--- a/docs/strategy_analysis_example.md
+++ b/docs/strategy_analysis_example.md
@@ -68,8 +68,75 @@ df.tail()
 ```python
 # Report results
 print(f"Generated {df['buy'].sum()} buy signals")
-data = df.set_index('date', drop=True)
+data = df.set_index('date', drop=False)
 data.tail()
 ```
 
+## Load existing objects into a Jupyter notebook
+
+The following cells assume that you have already generated data using the cli.  
+They will allow you to drill deeper into your results, and perform analysis which otherwise would make the output very difficult to digest due to information overload.
+
+### Load backtest results to pandas dataframe
+
+Analyze a trades dataframe (also used below for plotting)
+
+
+```python
+from freqtrade.data.btanalysis import load_backtest_data
+
+# Load backtest results
+trades = load_backtest_data(user_data_dir / "backtest_results/backtest-result.json")
+
+# Show value-counts per pair
+trades.groupby("pair")["sell_reason"].value_counts()
+```
+
+### Load live trading results into a pandas dataframe
+
+In case you did already some trading and want to analyze your performance
+
+
+```python
+from freqtrade.data.btanalysis import load_trades_from_db
+
+# Fetch trades from database
+trades = load_trades_from_db("sqlite:///tradesv3.sqlite")
+
+# Display results
+trades.groupby("pair")["sell_reason"].value_counts()
+```
+
+## Plot results
+
+Freqtrade offers interactive plotting capabilities based on plotly.
+
+
+```python
+from freqtrade.plot.plotting import  generate_candlestick_graph
+# Limit graph period to keep plotly quick and reactive
+
+data_red = data['2019-06-01':'2019-06-10']
+# Generate candlestick graph
+graph = generate_candlestick_graph(pair=pair,
+                                   data=data_red,
+                                   trades=trades,
+                                   indicators1=['sma20', 'ema50', 'ema55'],
+                                   indicators2=['rsi', 'macd', 'macdsignal', 'macdhist']
+                                  )
+
+
+
+```
+
+
+```python
+# Show graph inline
+# graph.show()
+
+# Render graph in a seperate window
+graph.show(renderer="browser")
+
+```
+
 Feel free to submit an issue or Pull Request enhancing this document if you would like to share ideas on how to best analyze the data.
diff --git a/user_data/notebooks/strategy_analysis_example.ipynb b/user_data/notebooks/strategy_analysis_example.ipynb
index 868ca5611..b9576e0bb 100644
--- a/user_data/notebooks/strategy_analysis_example.ipynb
+++ b/user_data/notebooks/strategy_analysis_example.ipynb
@@ -107,10 +107,111 @@
    "source": [
     "# Report results\n",
     "print(f\"Generated {df['buy'].sum()} buy signals\")\n",
-    "data = df.set_index('date', drop=True)\n",
+    "data = df.set_index('date', drop=False)\n",
     "data.tail()"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Load existing objects into a Jupyter notebook\n",
+    "\n",
+    "The following cells assume that you have already generated data using the cli.  \n",
+    "They will allow you to drill deeper into your results, and perform analysis which otherwise would make the output very difficult to digest due to information overload."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Load backtest results to pandas dataframe\n",
+    "\n",
+    "Analyze a trades dataframe (also used below for plotting)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from freqtrade.data.btanalysis import load_backtest_data\n",
+    "\n",
+    "# Load backtest results\n",
+    "trades = load_backtest_data(user_data_dir / \"backtest_results/backtest-result.json\")\n",
+    "\n",
+    "# Show value-counts per pair\n",
+    "trades.groupby(\"pair\")[\"sell_reason\"].value_counts()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Load live trading results into a pandas dataframe\n",
+    "\n",
+    "In case you did already some trading and want to analyze your performance"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from freqtrade.data.btanalysis import load_trades_from_db\n",
+    "\n",
+    "# Fetch trades from database\n",
+    "trades = load_trades_from_db(\"sqlite:///tradesv3.sqlite\")\n",
+    "\n",
+    "# Display results\n",
+    "trades.groupby(\"pair\")[\"sell_reason\"].value_counts()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Plot results\n",
+    "\n",
+    "Freqtrade offers interactive plotting capabilities based on plotly."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from freqtrade.plot.plotting import  generate_candlestick_graph\n",
+    "# Limit graph period to keep plotly quick and reactive\n",
+    "\n",
+    "data_red = data['2019-06-01':'2019-06-10']\n",
+    "# Generate candlestick graph\n",
+    "graph = generate_candlestick_graph(pair=pair,\n",
+    "                                   data=data_red,\n",
+    "                                   trades=trades,\n",
+    "                                   indicators1=['sma20', 'ema50', 'ema55'],\n",
+    "                                   indicators2=['rsi', 'macd', 'macdsignal', 'macdhist']\n",
+    "                                  )\n",
+    "\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Show graph inline\n",
+    "# graph.show()\n",
+    "\n",
+    "# Render graph in a seperate window\n",
+    "graph.show(renderer=\"browser\")\n"
+   ]
+  },
   {
    "cell_type": "markdown",
    "metadata": {},

From 3245ebccd473082de40de8901eb1705752b1889d Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 21 Sep 2019 11:24:51 +0200
Subject: [PATCH 0505/3421] Fix problme when no exchange is given to
 download-data

---
 freqtrade/configuration/check_exchange.py |  8 ++++++++
 tests/test_configuration.py               |  7 +++++++
 tests/test_utils.py                       | 18 +++++++++++++++++-
 3 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/freqtrade/configuration/check_exchange.py b/freqtrade/configuration/check_exchange.py
index 61e862a9c..019081def 100644
--- a/freqtrade/configuration/check_exchange.py
+++ b/freqtrade/configuration/check_exchange.py
@@ -27,6 +27,14 @@ def check_exchange(config: Dict[str, Any], check_for_bad: bool = True) -> bool:
     logger.info("Checking exchange...")
 
     exchange = config.get('exchange', {}).get('name').lower()
+    if not exchange:
+        raise OperationalException(
+            f'This command requires a configured exchange. You can use either '
+            f'`--exchange  None:
     default_conf['runmode'] = RunMode.PLOT
     assert check_exchange(default_conf)
 
+    # Test no exchange...
+    default_conf.get('exchange').update({'name': ''})
+    default_conf['runmode'] = RunMode.OTHER
+    with pytest.raises(OperationalException,
+                       match=r'This command requires a configured exchange.*'):
+        check_exchange(default_conf)
+
 
 def test_cli_verbose_with_params(default_conf, mocker, caplog) -> None:
     patched_configuration_load_config_file(mocker, default_conf)
diff --git a/tests/test_utils.py b/tests/test_utils.py
index 386efb5ec..8126e5055 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -3,10 +3,11 @@ from unittest.mock import MagicMock, PropertyMock
 
 import pytest
 
+from freqtrade import OperationalException
 from freqtrade.state import RunMode
-from tests.conftest import get_args, log_has, patch_exchange
 from freqtrade.utils import (setup_utils_configuration, start_create_userdir,
                              start_download_data, start_list_exchanges)
+from tests.conftest import get_args, log_has, log_has_re, patch_exchange
 
 
 def test_setup_utils_configuration():
@@ -103,3 +104,18 @@ def test_download_data_no_markets(mocker, caplog):
     start_download_data(get_args(args))
     assert dl_mock.call_args[1]['timerange'].starttype == "date"
     assert log_has("Pairs [ETH/BTC,XRP/BTC] not available on exchange binance.", caplog)
+
+
+def test_download_data_no_exchange(mocker, caplog):
+    mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data',
+                 MagicMock(return_value=["ETH/BTC", "XRP/BTC"]))
+    patch_exchange(mocker)
+    mocker.patch(
+        'freqtrade.exchange.Exchange.markets', PropertyMock(return_value={})
+    )
+    args = [
+        "download-data"
+        ]
+    with pytest.raises(OperationalException,
+                       match=r"This command requires a configured exchange.*"):
+        start_download_data(get_args(args))

From 7aa42f8868a0afaa81b3d1a6d632c4c01a246bb6 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 21 Sep 2019 12:53:15 +0200
Subject: [PATCH 0506/3421] Fail download-data gracefully if no pairs-file
 exists

---
 freqtrade/utils.py  |  6 ++++++
 tests/test_utils.py | 24 ++++++++++++++++++++++--
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index 5b2b08357..276c7267b 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -5,6 +5,7 @@ from typing import Any, Dict, List
 
 import arrow
 
+from freqtrade import OperationalException
 from freqtrade.configuration import Configuration, TimeRange
 from freqtrade.configuration.directory_operations import create_userdata_dir
 from freqtrade.data.history import refresh_backtest_ohlcv_data
@@ -70,6 +71,11 @@ def start_download_data(args: Dict[str, Any]) -> None:
         time_since = arrow.utcnow().shift(days=-config['days']).strftime("%Y%m%d")
         timerange = TimeRange.parse_timerange(f'{time_since}-')
 
+    if 'pairs' not in config:
+        raise OperationalException(
+            "Downloading data requires a list of pairs."
+            "Please check the documentation on how to configure this.")
+
     dl_path = Path(config['datadir'])
     logger.info(f'About to download pairs: {config["pairs"]}, '
                 f'intervals: {config["timeframes"]} to {dl_path}')
diff --git a/tests/test_utils.py b/tests/test_utils.py
index 8126e5055..dc0badd01 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -1,4 +1,5 @@
 import re
+from pathlib import Path
 from unittest.mock import MagicMock, PropertyMock
 
 import pytest
@@ -7,7 +8,7 @@ from freqtrade import OperationalException
 from freqtrade.state import RunMode
 from freqtrade.utils import (setup_utils_configuration, start_create_userdir,
                              start_download_data, start_list_exchanges)
-from tests.conftest import get_args, log_has, log_has_re, patch_exchange
+from tests.conftest import get_args, log_has, patch_exchange
 
 
 def test_setup_utils_configuration():
@@ -114,8 +115,27 @@ def test_download_data_no_exchange(mocker, caplog):
         'freqtrade.exchange.Exchange.markets', PropertyMock(return_value={})
     )
     args = [
-        "download-data"
+        "download-data",
         ]
     with pytest.raises(OperationalException,
                        match=r"This command requires a configured exchange.*"):
         start_download_data(get_args(args))
+
+
+def test_download_data_no_pairs(mocker, caplog):
+    mocker.patch.object(Path, "exists", MagicMock(return_value=False))
+
+    mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data',
+                 MagicMock(return_value=["ETH/BTC", "XRP/BTC"]))
+    patch_exchange(mocker)
+    mocker.patch(
+        'freqtrade.exchange.Exchange.markets', PropertyMock(return_value={})
+    )
+    args = [
+        "download-data",
+        "--exchange",
+        "binance",
+    ]
+    with pytest.raises(OperationalException,
+                       match=r"Downloading data requires a list of pairs\..*"):
+        start_download_data(get_args(args))

From ba4db0da493e501ea56cffe20767cf81c67fce15 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 21 Sep 2019 13:16:53 +0200
Subject: [PATCH 0507/3421] Improve configuration documentation

---
 docs/configuration.md | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/docs/configuration.md b/docs/configuration.md
index a1c0d1a75..08137fe79 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -1,14 +1,15 @@
 # Configure the bot
 
-This page explains how to configure the bot.
+Freqtrade has many configurable options and possibilities.
+By default, these options are configured via the configuration file (see below).
 
 ## The Freqtrade configuration file
 
 The bot uses a set of configuration parameters during its operation that all together conform the bot configuration. It normally reads its configuration from a file (Freqtrade configuration file).
 
-Per default, the bot loads configuration from the `config.json` file located in the current working directory.
+Per default, the bot loads the configuration from the file `config.json`, located in the current working directory.
 
-You can change the name of the configuration file used by the bot with the `-c/--config` command line option.
+You can use a different configuration file used by the bot with the `-c/--config` command line option.
 
 In some advanced use cases, multiple configuration files can be specified and used by the bot or the bot can read its configuration parameters from the process standard input stream.
 
@@ -22,19 +23,26 @@ The Freqtrade configuration file is to be written in the JSON format.
 
 Additionally to the standard JSON syntax, you may use one-line `// ...` and multi-line `/* ... */` comments in your configuration files and trailing commas in the lists of parameters.
 
-Do not worry if you are not familiar with JSON format -- simply open the configuration file with an editor of your choice, make some changes to the parameters you need, save your changes and, finally, restart the bot or, if it was previously stopped, run it again with the changes you made to the configuration. The bot validates syntax of the configuration file at startup and will warn you if you made any errors editing it.
+Do not worry if you are not familiar with JSON format -- simply open the configuration file with an editor of your choice, make some changes to the parameters you need, save your changes and, finally, restart the bot or, if it was previously stopped, run it again with the changes you made to the configuration. The bot validates syntax of the configuration file at startup and will warn you if you made any errors editing it, pointing out problematic lines.
 
 ## Configuration parameters
 
 The table below will list all configuration parameters available.
 
-Mandatory parameters are marked as **Required**.
+Freqtrade can also load many options via command line arguments (check out the commands `--help` output for details).
+The prevelance for all Options is as follows:
+
+- CLI arguments override any other option
+- Configuration files are used in sequence (last file wins), and override Strategy configurations.
+- Strategy configurations are only used if they are not set via configuration or via command line arguments. These options are market with [Strategy Override](#parameters-in-the-strategy) in the below table.
+
+Mandatory parameters are marked as **Required**, which means that they are required to be set in one of the possible ways.
 
 |  Command | Default | Description |
 |----------|---------|-------------|
 | `max_open_trades` | 3 | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades)
-| `stake_currency` | BTC | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
-| `stake_amount` | 0.05 | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance. [Strategy Override](#parameters-in-the-strategy).
+| `stake_currency` | BTC | **Required.** Crypto-currency used for trading.
+| `stake_amount` | 0.05 | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance.
 | `amount_reserve_percent` | 0.05 | Reserve some amount in min pair stake amount. Default is 5%. The bot will reserve `amount_reserve_percent` + stop-loss value when calculating min pair stake amount in order to avoid possible trade refusals.
 | `ticker_interval` | [1m, 5m, 15m, 30m, 1h, 1d, ...] | The ticker interval to use (1min, 5 min, 15 min, 30 min, 1 hour or 1 day). Default is 5 minutes. [Strategy Override](#parameters-in-the-strategy).
 | `fiat_display_currency` | USD | **Required.** Fiat currency used to show your profits. More information below.
@@ -99,8 +107,6 @@ Mandatory parameters are marked as **Required**.
 The following parameters can be set in either configuration file or strategy.
 Values set in the configuration file always overwrite values set in the strategy.
 
-* `stake_currency`
-* `stake_amount`
 * `ticker_interval`
 * `minimal_roi`
 * `stoploss`

From ab0adabd39ff057a85c97ecf3a2426b6ef68f9fc Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 23 Sep 2019 08:54:11 +0000
Subject: [PATCH 0508/3421] Bump urllib3 from 1.25.3 to 1.25.5

Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.3 to 1.25.5.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.25.3...1.25.5)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index 363890a4d..fe995836c 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -6,7 +6,7 @@ python-telegram-bot==12.1.0
 arrow==0.15.2
 cachetools==3.1.1
 requests==2.22.0
-urllib3==1.25.3
+urllib3==1.25.5
 wrapt==1.11.2
 scikit-learn==0.21.3
 joblib==0.13.2

From 242ff26e215c29933bd647d2c713775270d4988d Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 23 Sep 2019 08:54:57 +0000
Subject: [PATCH 0509/3421] Bump pytest from 5.1.2 to 5.1.3

Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.1.2 to 5.1.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.1.2...5.1.3)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-dev.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-dev.txt b/requirements-dev.txt
index 1b9bf7570..2678130f3 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -7,7 +7,7 @@ flake8==3.7.8
 flake8-type-annotations==0.1.0
 flake8-tidy-imports==2.0.0
 mypy==0.720
-pytest==5.1.2
+pytest==5.1.3
 pytest-asyncio==0.10.0
 pytest-cov==2.7.1
 pytest-mock==1.10.4

From d8bc350445ba404bdbb0217184d7cf26aa2fd475 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 23 Sep 2019 08:55:31 +0000
Subject: [PATCH 0510/3421] Bump python-telegram-bot from 12.1.0 to 12.1.1

Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.1.0 to 12.1.1.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.1.0...v12.1.1)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index 363890a4d..c4b5383ae 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -2,7 +2,7 @@
 # mainly used for Raspberry pi installs
 ccxt==1.18.1159
 SQLAlchemy==1.3.8
-python-telegram-bot==12.1.0
+python-telegram-bot==12.1.1
 arrow==0.15.2
 cachetools==3.1.1
 requests==2.22.0

From 0c6164df7eaa59c438279e44e03ba34614b1b36a Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Mon, 23 Sep 2019 11:59:34 +0300
Subject: [PATCH 0511/3421] Fix memory exhaustion in skopt models list

---
 freqtrade/optimize/hyperopt.py | 31 +++++++++++++++++++++++++++----
 1 file changed, 27 insertions(+), 4 deletions(-)

diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py
index c511aa5ac..04a05dc8f 100644
--- a/freqtrade/optimize/hyperopt.py
+++ b/freqtrade/optimize/hyperopt.py
@@ -36,6 +36,11 @@ logger = logging.getLogger(__name__)
 
 
 INITIAL_POINTS = 30
+
+# Keep no more than 2*SKOPT_MODELS_MAX_NUM models
+# in the skopt models list
+SKOPT_MODELS_MAX_NUM = 10
+
 MAX_LOSS = 100000  # just a big enough number to be bad result in loss optimization
 
 
@@ -255,12 +260,13 @@ class Hyperopt:
             spaces += self.custom_hyperopt.stoploss_space()
         return spaces
 
-    def generate_optimizer(self, _params: Dict) -> Dict:
+    def generate_optimizer(self, _params: Dict, iteration=None) -> Dict:
         """
         Used Optimize function. Called once per epoch to optimize whatever is configured.
         Keep this function as optimized as possible!
         """
         params = self.get_args(_params)
+
         if self.has_space('roi'):
             self.backtesting.strategy.minimal_roi = \
                     self.custom_hyperopt.generate_roi_table(params)
@@ -342,9 +348,25 @@ class Hyperopt:
             random_state=self.config.get('hyperopt_random_state', None)
         )
 
-    def run_optimizer_parallel(self, parallel, asked) -> List:
+    def fix_optimizer_models_list(self):
+        """
+        WORKAROUND: Since skopt is not actively supported, this resolves problems with skopt
+        memory usage, see also: https://github.com/scikit-optimize/scikit-optimize/pull/746
+
+        This may cease working when skopt updates if implementation of this intrinsic
+        part changes.
+        """
+        n = len(self.opt.models) - SKOPT_MODELS_MAX_NUM
+        # Keep no more than 2*SKOPT_MODELS_MAX_NUM models in the skopt models list,
+        # remove the old ones. These are no really needed, the current model
+        # from the estimator is only used.
+        if n >= SKOPT_MODELS_MAX_NUM:
+            logger.debug(f"Fixing skopt models list, removing {n} old items...")
+            del self.opt.models[0:n]
+
+    def run_optimizer_parallel(self, parallel, asked, i) -> List:
         return parallel(delayed(
-                        wrap_non_picklable_objects(self.generate_optimizer))(v) for v in asked)
+                        wrap_non_picklable_objects(self.generate_optimizer))(v, i) for v in asked)
 
     def load_previous_results(self):
         """ read trials file if we have one """
@@ -407,8 +429,9 @@ class Hyperopt:
                 EVALS = max(self.total_epochs // jobs, 1)
                 for i in range(EVALS):
                     asked = self.opt.ask(n_points=jobs)
-                    f_val = self.run_optimizer_parallel(parallel, asked)
+                    f_val = self.run_optimizer_parallel(parallel, asked, i)
                     self.opt.tell(asked, [v['loss'] for v in f_val])
+                    self.fix_optimizer_models_list()
                     for j in range(jobs):
                         current = i * jobs + j
                         val = f_val[j]

From 95e725c2b62c7752b92d61a270b85acfec87860a Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 23 Sep 2019 10:15:28 +0000
Subject: [PATCH 0512/3421] Bump ccxt from 1.18.1159 to 1.18.1180

Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1159 to 1.18.1180.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1159...1.18.1180)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index c4b5383ae..cdaafd818 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -1,6 +1,6 @@
 # requirements without requirements installable via conda
 # mainly used for Raspberry pi installs
-ccxt==1.18.1159
+ccxt==1.18.1180
 SQLAlchemy==1.3.8
 python-telegram-bot==12.1.1
 arrow==0.15.2

From 6ffb8b7a7017b834420a8de2f75a753a54a8f9c1 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Mon, 23 Sep 2019 13:25:31 +0300
Subject: [PATCH 0513/3421] Fix wordings in comment

---
 freqtrade/optimize/hyperopt.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py
index 04a05dc8f..09d821962 100644
--- a/freqtrade/optimize/hyperopt.py
+++ b/freqtrade/optimize/hyperopt.py
@@ -358,8 +358,9 @@ class Hyperopt:
         """
         n = len(self.opt.models) - SKOPT_MODELS_MAX_NUM
         # Keep no more than 2*SKOPT_MODELS_MAX_NUM models in the skopt models list,
-        # remove the old ones. These are no really needed, the current model
-        # from the estimator is only used.
+        # remove the old ones. These are actually of no use, the current model
+        # from the estimator is the only one used in the skopt optimizer.
+        # Freqtrade code also does not inspect details of the models.
         if n >= SKOPT_MODELS_MAX_NUM:
             logger.debug(f"Fixing skopt models list, removing {n} old items...")
             del self.opt.models[0:n]

From 7c6921c743c3f6b17a9e3a4b8c5c49e8d3d23535 Mon Sep 17 00:00:00 2001
From: Ashton Honnecke 
Date: Mon, 23 Sep 2019 13:17:20 -0600
Subject: [PATCH 0514/3421] pr feedback regarding docker-compose naming

---
 LOCAL.md                   | 30 ++++++++++++++++++++++++++++++
 docker-compose.develop.yml | 10 ----------
 docker-compose.prod.yml    |  8 --------
 docker-compose.yml         |  9 ++++++++-
 4 files changed, 38 insertions(+), 19 deletions(-)
 create mode 100644 LOCAL.md
 delete mode 100644 docker-compose.prod.yml
 mode change 120000 => 100644 docker-compose.yml

diff --git a/LOCAL.md b/LOCAL.md
new file mode 100644
index 000000000..9172520b1
--- /dev/null
+++ b/LOCAL.md
@@ -0,0 +1,30 @@
+# Local development
+
+The fastest and easiest way to start up is to use docker-compose.develop which gives developers the ability to start the bot up with all the required dependencies, *without* needing to install any freqtrade specific dependencies on your local machine.
+
+# Install
+## git
+``` bash
+sudo apt install git
+```
+
+## docker
+``` bash
+sudo apt install docker
+```
+
+## docker-compose
+``` bash
+sudo apt install docker-compose
+```
+# Starting the bot
+## Develop dockerfile
+``` bash
+rm docker-compose.yml && mv docker-compose.develop.yml docker-compose.yml
+```
+
+## Docker Compose up
+
+``` bash
+docker-compose up
+```
diff --git a/docker-compose.develop.yml b/docker-compose.develop.yml
index 4dfdb9357..bbf20b3f3 100644
--- a/docker-compose.develop.yml
+++ b/docker-compose.develop.yml
@@ -2,18 +2,8 @@
 version: '3'
 services:
   freqtrade_develop:
-    build:
-      context: .
-      dockerfile: "./Dockerfile"
-    volumes:
-      - ".:/freqtrade"
-
-  pytest:
     build:
       context: .
       dockerfile: "./Dockerfile.develop"
     volumes:
       - ".:/freqtrade"
-    command:
-      ["./scripts/pytest.sh"]
-
diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml
deleted file mode 100644
index cae98c3ee..000000000
--- a/docker-compose.prod.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-version: '3'
-services:
-  freqtrade:
-    image: freqtradeorg/freqtrade:master
-    volumes:
-      - "./user_data:/freqtrade/user_data"
-      - "./config.json:/freqtrade/config.json"
diff --git a/docker-compose.yml b/docker-compose.yml
deleted file mode 120000
index 945318087..000000000
--- a/docker-compose.yml
+++ /dev/null
@@ -1 +0,0 @@
-docker-compose.prod.yml
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 000000000..cae98c3ee
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,8 @@
+---
+version: '3'
+services:
+  freqtrade:
+    image: freqtradeorg/freqtrade:master
+    volumes:
+      - "./user_data:/freqtrade/user_data"
+      - "./config.json:/freqtrade/config.json"

From 5c3fb4d5b3d6f2463cfd8665ff139d43aab02f70 Mon Sep 17 00:00:00 2001
From: Ashton Honnecke 
Date: Mon, 23 Sep 2019 13:30:55 -0600
Subject: [PATCH 0515/3421] docs for running docker-compose locally

---
 LOCAL.md | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/LOCAL.md b/LOCAL.md
index 9172520b1..db0f66d66 100644
--- a/LOCAL.md
+++ b/LOCAL.md
@@ -23,8 +23,16 @@ sudo apt install docker-compose
 rm docker-compose.yml && mv docker-compose.develop.yml docker-compose.yml
 ```
 
-## Docker Compose up
+## Docker Compose
+
+## Starting
 
 ``` bash
 docker-compose up
 ```
+![Docker compose up](https://user-images.githubusercontent.com/419355/65456322-47f63a80-de06-11e9-90c6-3c74d1bad0b8.png)
+
+### Rebuilding
+``` bash
+docker-compose build
+```

From cb6e136893afec50d9c148fc3d34ed5b38d74cab Mon Sep 17 00:00:00 2001
From: Ashton Honnecke 
Date: Mon, 23 Sep 2019 13:35:18 -0600
Subject: [PATCH 0516/3421] how to exec

---
 LOCAL.md | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/LOCAL.md b/LOCAL.md
index db0f66d66..ce9808034 100644
--- a/LOCAL.md
+++ b/LOCAL.md
@@ -36,3 +36,13 @@ docker-compose up
 ``` bash
 docker-compose build
 ```
+
+### Execing (effectively SSH into the container)
+
+The `exec` command requires that the container already be running, if you want to start it
+that can be effected by `docker-compose up` or `docker-compose run freqtrade_develop`
+
+``` bash
+docker-compose exec freqtrade_develop /bin/bash
+```
+![image](https://user-images.githubusercontent.com/419355/65456522-ba671a80-de06-11e9-9598-df9ca0d8dcac.png)

From 0f97a999fb7f49bb6de05fa4ba6c4a733cc45cc1 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 24 Sep 2019 06:35:41 +0200
Subject: [PATCH 0517/3421] Improve wording

---
 freqtrade/configuration/check_exchange.py | 4 ++--
 freqtrade/utils.py                        | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/freqtrade/configuration/check_exchange.py b/freqtrade/configuration/check_exchange.py
index 019081def..19c377732 100644
--- a/freqtrade/configuration/check_exchange.py
+++ b/freqtrade/configuration/check_exchange.py
@@ -29,8 +29,8 @@ def check_exchange(config: Dict[str, Any], check_for_bad: bool = True) -> bool:
     exchange = config.get('exchange', {}).get('name').lower()
     if not exchange:
         raise OperationalException(
-            f'This command requires a configured exchange. You can use either '
-            f'`--exchange ` or specify a configuration file via `--config`.\n'
             f'The following exchanges are supported by ccxt: '
             f'{", ".join(available_exchanges())}'
         )
diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index 276c7267b..6ce5e888c 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -73,7 +73,7 @@ def start_download_data(args: Dict[str, Any]) -> None:
 
     if 'pairs' not in config:
         raise OperationalException(
-            "Downloading data requires a list of pairs."
+            "Downloading data requires a list of pairs. "
             "Please check the documentation on how to configure this.")
 
     dl_path = Path(config['datadir'])

From 577b1fd965b7b8167b332ee3f30b5062eb556830 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 24 Sep 2019 06:39:00 +0200
Subject: [PATCH 0518/3421] Improve documentation wording

---
 docs/backtesting.md | 2 +-
 docs/deprecated.md  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/backtesting.md b/docs/backtesting.md
index 879cf78a3..004425323 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -38,7 +38,7 @@ This will download ticker data for all the currency pairs you defined in `pairs.
 - To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options.
 
 !!! Tip Updating existing data
-    If you already have backtesting data available in your data-directory and would like to refresh this data up to today, use `--days xx` with a number slightly higher than the missing number of days. Freqtrade will load the available data and only download the missing data.
+    If you already have backtesting data available in your data-directory and would like to refresh this data up to today, use `--days xx` with a number slightly higher than the missing number of days. Freqtrade will keep the available data and only download the missing data.
     Be carefull though: If the number is too small (which would result in a few missing days), the whole dataset will be removed and only xx days will be downloaded.
 
 ## Test your strategy with Backtesting
diff --git a/docs/deprecated.md b/docs/deprecated.md
index 24c2bb1e3..349d41a09 100644
--- a/docs/deprecated.md
+++ b/docs/deprecated.md
@@ -12,7 +12,7 @@ and are no longer supported. Please avoid their usage in your configuration.
 Since this leads to much confusion, and slows down backtesting (while not being part of backtesting) this has been singled out 
 as a seperate freqtrade subcommand `freqtrade download-data`.
 
-This command line option was deprecated in `2019.7-dev` and removed in `2019-9`
+This command line option was deprecated in 2019.7-dev (develop branch) and removed in 2019.9 (master branch).
 
 ### The **--dynamic-whitelist** command line option
 

From fe40636ae10717a4e35ba8e104bd5f4f46333da5 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 24 Sep 2019 06:42:44 +0200
Subject: [PATCH 0519/3421] Improve wordings

---
 docs/configuration.md | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/docs/configuration.md b/docs/configuration.md
index 08137fe79..0d902766a 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -1,15 +1,15 @@
 # Configure the bot
 
-Freqtrade has many configurable options and possibilities.
-By default, these options are configured via the configuration file (see below).
+Freqtrade has many configurable features and possibilities.
+By default, these settings are configured via the configuration file (see below).
 
 ## The Freqtrade configuration file
 
 The bot uses a set of configuration parameters during its operation that all together conform the bot configuration. It normally reads its configuration from a file (Freqtrade configuration file).
 
-Per default, the bot loads the configuration from the file `config.json`, located in the current working directory.
+Per default, the bot loads the configuration from the `config.json` file, located in the current working directory.
 
-You can use a different configuration file used by the bot with the `-c/--config` command line option.
+You can specify a different configuration file used by the bot with the `-c/--config` command line option.
 
 In some advanced use cases, multiple configuration files can be specified and used by the bot or the bot can read its configuration parameters from the process standard input stream.
 
@@ -29,7 +29,7 @@ Do not worry if you are not familiar with JSON format -- simply open the configu
 
 The table below will list all configuration parameters available.
 
-Freqtrade can also load many options via command line arguments (check out the commands `--help` output for details).
+Freqtrade can also load many options via command line (CLI) arguments (check out the commands `--help` output for details).
 The prevelance for all Options is as follows:
 
 - CLI arguments override any other option

From cc9fc413188105f1af6e87df38406bf031481c8a Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 24 Sep 2019 06:56:19 +0200
Subject: [PATCH 0520/3421] Rename section to data-downloading, implement some
 feedback

---
 docs/backtesting.md | 12 ++++++------
 docs/hyperopt.md    |  2 +-
 mkdocs.yml          |  2 +-
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/docs/backtesting.md b/docs/backtesting.md
index b3f22c664..9ddc6bbb3 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -3,7 +3,7 @@
 This page explains how to validate your strategy performance by using Backtesting.
 
 Backtesting requires historic data to be available.
-To learn how to get data for the pairs and exchange you're interrested in, head over to the [Data downloading](data-download.md) section of the documentation.
+To learn how to get data for the pairs and exchange you're interrested in, head over to the [Data Downloading](data-download.md) section of the documentation.
 
 ## Test your strategy with Backtesting
 
@@ -164,13 +164,13 @@ here:
 The bot has made `429` trades for an average duration of `4:12:00`, with a performance of `76.20%` (profit), that means it has
 earned a total of `0.00762792 BTC` starting with a capital of 0.01 BTC.
 
-The column `avg profit %` shows the average profit for all trades made while the column `cum profit %` sums all the profits/losses.
+The column `avg profit %` shows the average profit for all trades made while the column `cum profit %` sums up all the profits/losses.
 The column `tot profit %` shows instead the total profit % in relation to allocated capital (`max_open_trades * stake_amount`).
-In the above results we have `max_open_trades=2 stake_amount=0.005` in config  so `(76.20/100) * (0.005 * 2) =~ 0.00762792 BTC`.
+In the above results we have `max_open_trades=2` and `stake_amount=0.005` in config  so `tot_profit %` will be `(76.20/100) * (0.005 * 2) =~ 0.00762792 BTC`.
 
 Your strategy performance is influenced by your buy strategy, your sell strategy, and also by the `minimal_roi` and `stop_loss` you have set.
 
-For example, if your minimal_roi is only `"0":  0.01`. You cannot expect the bot to make more profit than 1% (because it will sell every time a trade will reach 1%).
+For example, if your `minimal_roi` is only `"0":  0.01` you cannot expect the bot to make more profit than 1% (because it will sell every time a trade reaches 1%).
 
 ```json
 "minimal_roi": {
@@ -179,8 +179,8 @@ For example, if your minimal_roi is only `"0":  0.01`. You cannot expect the bot
 ```
 
 On the other hand, if you set a too high `minimal_roi` like `"0":  0.55`
-(55%), there is almost no chance that the bot will never reach this profit.
-Hence, keep in mind that your performance is a mix of the different elements of the strategy, your configuration, and the crypto-currency pairs you have set up.
+(55%), there is almost no chance that the bot will ever reach this profit.
+Hence, keep in mind that your performance is an integral mix of all different elements of the strategy, your configuration, and the crypto-currency pairs you have set up.
 
 ### Assumptions made by backtesting
 
diff --git a/docs/hyperopt.md b/docs/hyperopt.md
index 00aec458c..9542d5725 100644
--- a/docs/hyperopt.md
+++ b/docs/hyperopt.md
@@ -7,7 +7,7 @@ search will burn all your CPU cores, make your laptop sound like a fighter jet
 and still take a long time.
 
 Hyperopt requires historic data to be available, just as backtesting does.
-To learn how to get data for the pairs and exchange you're interrested in, head over to the [Data downloading](data-download.md) section of the documentation.
+To learn how to get data for the pairs and exchange you're interrested in, head over to the [Data Downloading](data-download.md) section of the documentation.
 
 !!! Bug
     Hyperopt will crash when used with only 1 CPU Core as found out in [Issue #1133](https://github.com/freqtrade/freqtrade/issues/1133)
diff --git a/mkdocs.yml b/mkdocs.yml
index 069f060db..7aedb4bba 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -11,7 +11,7 @@ nav:
         - Telegram: telegram-usage.md
         - Web Hook: webhook-config.md
         - REST API: rest-api.md
-    - Data Download: data-download.md
+    - Data Downloading: data-download.md
     - Backtesting: backtesting.md
     - Hyperopt: hyperopt.md
     - Edge positioning: edge.md

From 6aa1ec2a4ce054f174c668f00b624257913be1ac Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 24 Sep 2019 07:05:30 +0200
Subject: [PATCH 0521/3421] Some small restructuring

---
 docs/backtesting.md   |  8 ++++----
 docs/data-download.md | 17 ++++++++++++-----
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/docs/backtesting.md b/docs/backtesting.md
index 9ddc6bbb3..24df545fd 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -3,7 +3,7 @@
 This page explains how to validate your strategy performance by using Backtesting.
 
 Backtesting requires historic data to be available.
-To learn how to get data for the pairs and exchange you're interrested in, head over to the [Data Downloading](data-download.md) section of the documentation.
+To learn how to get data for the pairs and exchange you're interested in, head over to the [Data Downloading](data-download.md) section of the documentation.
 
 ## Test your strategy with Backtesting
 
@@ -15,7 +15,7 @@ Backtesting will use the crypto-currencies (pairs) from your config file
 and load ticker data from `user_data/data/` by default.
 If no data is available for the exchange / pair / ticker interval combination, backtesting will
 ask you to download them first using `freqtrade download-data`.
-For details on downloading, please refer to the [Downloading data](data-download.md) section in the documentation.
+For details on downloading, please refer to the [Data Downloading](data-download.md) section in the documentation.
 
 The result of backtesting will confirm if your bot has better odds of making a profit than a loss.
 
@@ -84,8 +84,8 @@ freqtrade backtesting --timerange=20190501-
 
 #### Advanced use of timerange
 
-Doing `--timerange=20190101-` will all available data starting with January 1st, 2019 from your inputdata.
-You can also specify specific dates, or a range span indexed by start and stop.
+Using `--timerange=20190101-` will use all available data starting with January 1st, 2019 from your inputdata.
+You can also specify particular dates or a range span indexed by start and stop.
 
 The full timerange specification:
 
diff --git a/docs/data-download.md b/docs/data-download.md
index f6b1e9904..b576e5c01 100644
--- a/docs/data-download.md
+++ b/docs/data-download.md
@@ -4,21 +4,26 @@
 
 To download data (candles / OHLCV) needed for backtesting and hyperoptimization use the `freqtrade download-data` command.
 
-If no additional parameter is specified, freqtrade will download data for `"1m"` and `"5m"` timeframes.
-Exchange and pairs will come from `config.json` (if specified using `-c/--config`). Otherwise `--exchange` becomes mandatory.
+If no additional parameter is specified, freqtrade will download data for `"1m"` and `"5m"` timeframes for the last 30 days.
+Exchange and pairs will come from `config.json` (if specified using `-c/--config`).
+Otherwise `--exchange` becomes mandatory.
 
-Alternatively, a `pairs.json` file can be used.
+### Pairs file
+
+In alternative to the whitelist from `config.json`, a `pairs.json` file can be used.
 
 If you are using Binance for example:
 
-- create a directory `user_data/data/binance` and copy `pairs.json` in that directory.
-- update the `pairs.json` to contain the currency pairs you are interested in.
+- create a directory `user_data/data/binance` and copy or create the `pairs.json` file in that directory.
+- update the `pairs.json` file to contain the currency pairs you are interested in.
 
 ```bash
 mkdir -p user_data/data/binance
 cp freqtrade/tests/testdata/pairs.json user_data/data/binance
 ```
 
+### start download
+
 Then run:
 
 ```bash
@@ -27,6 +32,8 @@ freqtrade download-data --exchange binance
 
 This will download ticker data for all the currency pairs you defined in `pairs.json`.
 
+### Other Notes
+
 - To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`.
 - To change the exchange used to download the tickers, please use a different configuration file (you'll probably need to adjust ratelimits etc.)
 - To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`.

From 93b262165161089583d2ab02a5bb37bab464d995 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 24 Sep 2019 07:07:06 +0200
Subject: [PATCH 0522/3421] Add format description for pairs.json file

---
 docs/data-download.md | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/docs/data-download.md b/docs/data-download.md
index b576e5c01..17565bb98 100644
--- a/docs/data-download.md
+++ b/docs/data-download.md
@@ -22,6 +22,18 @@ mkdir -p user_data/data/binance
 cp freqtrade/tests/testdata/pairs.json user_data/data/binance
 ```
 
+The format of the `pairs.json` file is a simple json list.
+Mixing different stake-currencies is allowed for this file, since it's only used for downloading.
+
+``` json
+[
+    "ETH/BTC",
+    "ETH/USDT",
+    "BTC/USDT",
+    "XRP/ETH"
+]
+```
+
 ### start download
 
 Then run:

From 6c0a1fc42cd279c0d7f4293b9e7fbe5d8919ae5b Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 24 Sep 2019 11:07:12 +0200
Subject: [PATCH 0523/3421] Fix tests that fail when config.json is present

---
 tests/test_utils.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/tests/test_utils.py b/tests/test_utils.py
index dc0badd01..c99044610 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -117,12 +117,15 @@ def test_download_data_no_exchange(mocker, caplog):
     args = [
         "download-data",
         ]
+    pargs = get_args(args)
+    pargs['config'] = None
     with pytest.raises(OperationalException,
                        match=r"This command requires a configured exchange.*"):
-        start_download_data(get_args(args))
+        start_download_data(pargs)
 
 
 def test_download_data_no_pairs(mocker, caplog):
+
     mocker.patch.object(Path, "exists", MagicMock(return_value=False))
 
     mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data',
@@ -136,6 +139,8 @@ def test_download_data_no_pairs(mocker, caplog):
         "--exchange",
         "binance",
     ]
+    pargs = get_args(args)
+    pargs['config'] = None
     with pytest.raises(OperationalException,
                        match=r"Downloading data requires a list of pairs\..*"):
-        start_download_data(get_args(args))
+        start_download_data(pargs)

From fe483ad011804644921702c5ee97aa3f91ea3715 Mon Sep 17 00:00:00 2001
From: Ashton Honnecke 
Date: Tue, 24 Sep 2019 09:03:44 -0600
Subject: [PATCH 0524/3421] Don't use the develop dockerfile for local

---
 docker-compose.develop.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docker-compose.develop.yml b/docker-compose.develop.yml
index bbf20b3f3..3e3bf4833 100644
--- a/docker-compose.develop.yml
+++ b/docker-compose.develop.yml
@@ -4,6 +4,6 @@ services:
   freqtrade_develop:
     build:
       context: .
-      dockerfile: "./Dockerfile.develop"
+      dockerfile: "./Dockerfile"
     volumes:
       - ".:/freqtrade"

From 9391c27b801f1d53e5105a547546725116cb94a5 Mon Sep 17 00:00:00 2001
From: Jonathan Raviotta 
Date: Mon, 23 Sep 2019 20:00:07 -0400
Subject: [PATCH 0525/3421] Enhancements to BB plotting

---
 freqtrade/plot/plotting.py | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py
index 1627959f9..99d3d8088 100644
--- a/freqtrade/plot/plotting.py
+++ b/freqtrade/plot/plotting.py
@@ -64,14 +64,14 @@ def add_indicators(fig, row, indicators: List[str], data: pd.DataFrame) -> make_
     """
     for indicator in indicators:
         if indicator in data:
-            # TODO: Figure out why scattergl causes problems
-            scattergl = go.Scatter(
+            # TODO: Figure out why scattergl causes problems plotly/plotly.js#2284
+            scatter = go.Scatter(
                 x=data['date'],
                 y=data[indicator].values,
                 mode='lines',
                 name=indicator
             )
-            fig.add_trace(scattergl, row, 1)
+            fig.add_trace(scatter, row, 1)
         else:
             logger.info(
                 'Indicator "%s" ignored. Reason: This indicator is not found '
@@ -92,7 +92,7 @@ def add_profit(fig, row, data: pd.DataFrame, column: str, name: str) -> make_sub
     :param name: Name to use
     :return: fig with added profit plot
     """
-    profit = go.Scattergl(
+    profit = go.Scatter(
         x=data.index,
         y=data[column],
         name=name,
@@ -222,23 +222,26 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra
             logger.warning("No sell-signals found.")
 
     if 'bb_lowerband' in data and 'bb_upperband' in data:
-        bb_lower = go.Scattergl(
+        bb_lower = go.Scatter(
             x=data.date,
             y=data.bb_lowerband,
-            name='BB lower',
+            showlegend=False,
             line={'color': 'rgba(255,255,255,0)'},
         )
-        bb_upper = go.Scattergl(
+        bb_upper = go.Scatter(
             x=data.date,
             y=data.bb_upperband,
-            name='BB upper',
+            name='Bollinger Band',
             fill="tonexty",
             fillcolor="rgba(0,176,246,0.2)",
             line={'color': 'rgba(255,255,255,0)'},
         )
         fig.add_trace(bb_lower, 1, 1)
         fig.add_trace(bb_upper, 1, 1)
-
+        if 'bb_upperband' in indicators1 and 'bb_lowerband' in indicators1:
+            indicators1.remove('bb_upperband')
+            indicators1.remove('bb_lowerband')
+            
     # Add indicators to main plot
     fig = add_indicators(fig=fig, row=1, indicators=indicators1, data=data)
 
@@ -252,7 +255,7 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra
     )
     fig.add_trace(volume, 2, 1)
 
-    # Add indicators to seperate row
+    # Add indicators to separate row
     fig = add_indicators(fig=fig, row=3, indicators=indicators2, data=data)
 
     return fig
@@ -267,7 +270,7 @@ def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame],
     df_comb = create_cum_profit(df_comb, trades, 'cum_profit')
 
     # Plot the pairs average close prices, and total profit growth
-    avgclose = go.Scattergl(
+    avgclose = go.Scatter(
         x=df_comb.index,
         y=df_comb['mean'],
         name='Avg close price',

From 665e0570ae9d2977e9cd67514213591cab3e50cc Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 25 Sep 2019 03:41:22 +0300
Subject: [PATCH 0526/3421] Fix hyperopt position stacking

---
 freqtrade/optimize/hyperopt.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py
index 61623d3df..f2984c111 100644
--- a/freqtrade/optimize/hyperopt.py
+++ b/freqtrade/optimize/hyperopt.py
@@ -90,7 +90,7 @@ class Hyperopt:
         else:
             logger.debug('Ignoring max_open_trades (--disable-max-market-positions was used) ...')
             self.max_open_trades = 0
-        self.position_stacking = self.config.get('position_stacking', False),
+        self.position_stacking = self.config.get('position_stacking', False)
 
         if self.has_space('sell'):
             # Make sure experimental is enabled

From cc91ccad3ee39ec0a501878132219492df332a25 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 25 Sep 2019 06:26:28 +0200
Subject: [PATCH 0527/3421] Improve documentation wording

---
 docs/backtesting.md   | 2 +-
 docs/data-download.md | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/backtesting.md b/docs/backtesting.md
index 24df545fd..041a47ba2 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -84,7 +84,7 @@ freqtrade backtesting --timerange=20190501-
 
 #### Advanced use of timerange
 
-Using `--timerange=20190101-` will use all available data starting with January 1st, 2019 from your inputdata.
+For Example, running backtesting with the `--timerange=20190101-` option will use all available data starting with January 1st, 2019 from your inputdata.
 You can also specify particular dates or a range span indexed by start and stop.
 
 The full timerange specification:
diff --git a/docs/data-download.md b/docs/data-download.md
index 17565bb98..c370b3919 100644
--- a/docs/data-download.md
+++ b/docs/data-download.md
@@ -1,4 +1,4 @@
-# Data download
+# Data Downloading
 
 ## Getting data for backtesting and hyperopt
 

From 27cc73f47ed2936f3f3e2a98eee3095af302b3f2 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 24 Sep 2019 14:39:28 +0200
Subject: [PATCH 0528/3421] Dynamically import hyperopt modules

---
 freqtrade/optimize/__init__.py  | 12 +++++++-----
 tests/optimize/test_hyperopt.py | 31 +++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/freqtrade/optimize/__init__.py b/freqtrade/optimize/__init__.py
index 7a3c290bf..3adf5eb43 100644
--- a/freqtrade/optimize/__init__.py
+++ b/freqtrade/optimize/__init__.py
@@ -1,9 +1,7 @@
 import logging
 from typing import Any, Dict
 
-from filelock import FileLock, Timeout
-
-from freqtrade import DependencyException, constants
+from freqtrade import DependencyException, constants, OperationalException
 from freqtrade.state import RunMode
 from freqtrade.utils import setup_utils_configuration
 
@@ -53,8 +51,12 @@ def start_hyperopt(args: Dict[str, Any]) -> None:
     :return: None
     """
     # Import here to avoid loading hyperopt module when it's not used
-    from freqtrade.optimize.hyperopt import Hyperopt
-
+    try:
+        from filelock import FileLock, Timeout
+        from freqtrade.optimize.hyperopt import Hyperopt
+    except ImportError as e:
+        raise OperationalException(
+            f"{e}. Please ensure that the hyperopt dependencies are installed.") from e
     # Initialize configuration
     config = setup_configuration(args, RunMode.HYPEROPT)
 
diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index 0888c79d4..8ceea6caa 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -190,6 +190,37 @@ def test_hyperoptlossresolver_wrongname(mocker, default_conf, caplog) -> None:
         HyperOptLossResolver(default_conf, ).hyperopt
 
 
+def test_start_not_installed(mocker, default_conf, caplog) -> None:
+    start_mock = MagicMock()
+    patched_configuration_load_config_file(mocker, default_conf)
+    # Source of this test-method: https://stackoverflow.com/questions/2481511/mocking-importerror-in-python
+    import builtins
+    realimport = builtins.__import__
+
+    def mockedimport(name, *args, **kwargs):
+        if name == "filelock":
+            raise ImportError("No module named 'filelock'")
+        return realimport(name, *args, **kwargs)
+
+    builtins.__import__ = mockedimport
+
+    mocker.patch('freqtrade.optimize.hyperopt.Hyperopt.start', start_mock)
+    patch_exchange(mocker)
+
+    args = [
+        '--config', 'config.json',
+        'hyperopt',
+        '--epochs', '5'
+    ]
+    args = get_args(args)
+
+    with pytest.raises(OperationalException, match=r"Please ensure that the hyperopt dependencies"):
+        start_hyperopt(args)
+
+    # restore previous importfunction
+    builtins.__import__ = realimport
+
+
 def test_start(mocker, default_conf, caplog) -> None:
     start_mock = MagicMock()
     patched_configuration_load_config_file(mocker, default_conf)

From 47b6b56566bd90752b44df044eaa66c5ca9c601f Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 24 Sep 2019 14:53:36 +0200
Subject: [PATCH 0529/3421] Reorg dependencies to have hyperopt seperated

---
 environment.yml           | 11 ++++++-----
 requirements-common.txt   |  8 +-------
 requirements-dev.txt      |  1 +
 requirements-hyperopt.txt |  9 +++++++++
 requirements.txt          |  1 -
 5 files changed, 17 insertions(+), 13 deletions(-)
 create mode 100644 requirements-hyperopt.txt

diff --git a/environment.yml b/environment.yml
index cd3350fd5..4e8c1efcc 100644
--- a/environment.yml
+++ b/environment.yml
@@ -9,25 +9,26 @@ dependencies:
   - wheel
   - numpy
   - pandas
-  - scipy
   - SQLAlchemy
-  - scikit-learn
   - arrow
   - requests
   - urllib3
   - wrapt
-  - joblib
   - jsonschema
   - tabulate
   - python-rapidjson
-  - filelock
   - flask
   - python-dotenv
   - cachetools
-  - scikit-optimize
   - python-telegram-bot
   # Optional for plotting
   - plotly
+  # Optional for hyperopt
+  - scipy
+  - scikit-optimize
+  - scikit-learn
+  - filelock
+  - joblib
   # Optional for development
   - flake8
   - pytest
diff --git a/requirements-common.txt b/requirements-common.txt
index 70a37e695..f10134203 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -8,21 +8,15 @@ cachetools==3.1.1
 requests==2.22.0
 urllib3==1.25.5
 wrapt==1.11.2
-scikit-learn==0.21.3
-joblib==0.13.2
 jsonschema==3.0.2
 TA-Lib==0.4.17
 tabulate==0.8.3
 coinmarketcap==5.0.3
 
-# Required for hyperopt
-scikit-optimize==0.5.2
-filelock==3.0.12
-
 # find first, C search in arrays
 py_find_1st==1.1.4
 
-#Load ticker files 30% faster
+# Load ticker files 30% faster
 python-rapidjson==0.8.0
 
 # Notify systemd
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 2678130f3..dcf2c7217 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -1,6 +1,7 @@
 # Include all requirements to run the bot.
 -r requirements.txt
 -r requirements-plot.txt
+-r requirements-hyperopt.txt
 
 coveralls==1.8.2
 flake8==3.7.8
diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt
new file mode 100644
index 000000000..bb0ad60f0
--- /dev/null
+++ b/requirements-hyperopt.txt
@@ -0,0 +1,9 @@
+# Include all requirements to run the bot.
+# -r requirements.txt
+
+# Required for hyperopt
+scipy==1.3.1
+scikit-learn==0.21.3
+scikit-optimize==0.5.2
+filelock==3.0.12
+joblib==0.13.2
diff --git a/requirements.txt b/requirements.txt
index 9a723fee4..2767180ac 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,4 +3,3 @@
 
 numpy==1.17.2
 pandas==0.25.1
-scipy==1.3.1

From d2f247307092e5df9c67107f491655e991163d04 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 24 Sep 2019 15:03:40 +0200
Subject: [PATCH 0530/3421] install hyperopt seperately ([hyperopt])

---
 setup.py | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/setup.py b/setup.py
index ca94dd338..2eb09e589 100644
--- a/setup.py
+++ b/setup.py
@@ -18,6 +18,13 @@ if readme_file.is_file():
 # Requirements used for submodules
 api = ['flask']
 plot = ['plotly>=4.0']
+hyperopt = [
+    'scipy',
+    'scikit-learn',
+    'scikit-optimize',
+    'filelock',
+    'joblib',
+    ]
 
 develop = [
     'coveralls',
@@ -38,7 +45,7 @@ jupyter = [
     'ipykernel',
     ]
 
-all_extra = api + plot + develop + jupyter
+all_extra = api + plot + develop + jupyter + hyperopt
 
 setup(name='freqtrade',
       version=__version__,
@@ -62,14 +69,10 @@ setup(name='freqtrade',
           'requests',
           'urllib3',
           'wrapt',
-          'scikit-learn',
-          'joblib',
           'jsonschema',
           'TA-Lib',
           'tabulate',
           'coinmarketcap',
-          'scikit-optimize',
-          'filelock',
           'py_find_1st',
           'python-rapidjson',
           'sdnotify',
@@ -77,15 +80,14 @@ setup(name='freqtrade',
           # from requirements.txt
           'numpy',
           'pandas',
-          'scipy',
       ],
       extras_require={
           'api': api,
           'dev': all_extra,
           'plot': plot,
-          'all': all_extra,
           'jupyter': jupyter,
-
+          'hyperopt': hyperopt,
+          'all': all_extra,
       },
       include_package_data=True,
       zip_safe=False,

From d05db077e29666e4539bd929d67edb252be3b2dc Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 25 Sep 2019 08:56:06 +0200
Subject: [PATCH 0531/3421] Update PI install documentation  and dockerfile

---
 Dockerfile.pi        |  4 ++--
 docs/installation.md | 11 +++++++----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/Dockerfile.pi b/Dockerfile.pi
index 1b9c4c579..85ba5892f 100644
--- a/Dockerfile.pi
+++ b/Dockerfile.pi
@@ -22,13 +22,13 @@ RUN tar -xzf /freqtrade/ta-lib-0.4.0-src.tar.gz \
 ENV LD_LIBRARY_PATH /usr/local/lib
 
 # Install berryconda
-RUN wget https://github.com/jjhelmus/berryconda/releases/download/v2.0.0/Berryconda3-2.0.0-Linux-armv7l.sh \
+RUN wget -q https://github.com/jjhelmus/berryconda/releases/download/v2.0.0/Berryconda3-2.0.0-Linux-armv7l.sh \
  && bash ./Berryconda3-2.0.0-Linux-armv7l.sh -b \
  && rm Berryconda3-2.0.0-Linux-armv7l.sh
 
 # Install dependencies
 COPY requirements-common.txt /freqtrade/
-RUN ~/berryconda3/bin/conda install -y numpy pandas scipy \
+RUN ~/berryconda3/bin/conda install -y numpy pandas \
  && ~/berryconda3/bin/pip install -r requirements-common.txt --no-cache-dir
 
 # Install and execute
diff --git a/docs/installation.md b/docs/installation.md
index f15cc356c..641879ff1 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -99,8 +99,8 @@ sudo apt-get install build-essential git
 
 Before installing FreqTrade on a Raspberry Pi running the official Raspbian Image, make sure you have at least Python 3.6 installed. The default image only provides Python 3.5. Probably the easiest way to get a recent version of python is [miniconda](https://repo.continuum.io/miniconda/).
 
-The following assumes that miniconda3 is installed and available in your environment. Last miniconda3 installation file use python 3.4, we will update to python 3.6 on this installation.
-It's recommended to use (mini)conda for this as installation/compilation of `numpy`, `scipy` and `pandas` takes a long time.
+The following assumes that miniconda3 is installed and available in your environment. Since the last miniconda3 installation file uses python 3.4, we will update to python 3.6 on this installation.
+It's recommended to use (mini)conda for this as installation/compilation of `numpy` and `pandas` takes a long time.
 
 Additional package to install on your Raspbian, `libffi-dev` required by cryptography (from python-telegram-bot).
 
@@ -109,13 +109,17 @@ conda config --add channels rpi
 conda install python=3.6
 conda create -n freqtrade python=3.6
 conda activate freqtrade
-conda install scipy pandas numpy
+conda install pandas numpy
 
 sudo apt install libffi-dev
 python3 -m pip install -r requirements-common.txt
 python3 -m pip install -e .
 ```
 
+!!! Note
+    This does not install hyperopt dependencies. To install these, please use `python3 -m pip install -e .[hyperopt]`.
+    We do not advise to run hyperopt on a Raspberry Pi, since this is a very resource-heavy operation, which should be done on powerfull machine.
+
 ### Common
 
 #### 1. Install TA-Lib
@@ -175,7 +179,6 @@ cp config.json.example config.json
 
 ``` bash
 python3 -m pip install --upgrade pip
-python3 -m pip install -r requirements.txt
 python3 -m pip install -e .
 ```
 

From e9de088209736e1f1f255c4339575ff7b34c38f2 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 25 Sep 2019 11:54:57 +0200
Subject: [PATCH 0532/3421] Add import-fails code as a fixture

---
 tests/conftest.py               | 21 +++++++++++++++++++++
 tests/optimize/test_hyperopt.py | 15 +--------------
 2 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/tests/conftest.py b/tests/conftest.py
index 8a5ba6683..6a0a74b5b 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1054,3 +1054,24 @@ def rpc_balance():
 def testdatadir() -> Path:
     """Return the path where testdata files are stored"""
     return (Path(__file__).parent / "testdata").resolve()
+
+
+@pytest.fixture(scope="function")
+def import_fails() -> None:
+    # Source of this test-method:
+    # https://stackoverflow.com/questions/2481511/mocking-importerror-in-python
+    import builtins
+    realimport = builtins.__import__
+
+    def mockedimport(name, *args, **kwargs):
+        if name in ["filelock"]:
+            raise ImportError(f"No module named '{name}'")
+        return realimport(name, *args, **kwargs)
+
+    builtins.__import__ = mockedimport
+
+    # Run test - then cleanup
+    yield
+
+    # restore previous importfunction
+    builtins.__import__ = realimport
diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index 8ceea6caa..55f94f572 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -190,19 +190,9 @@ def test_hyperoptlossresolver_wrongname(mocker, default_conf, caplog) -> None:
         HyperOptLossResolver(default_conf, ).hyperopt
 
 
-def test_start_not_installed(mocker, default_conf, caplog) -> None:
+def test_start_not_installed(mocker, default_conf, caplog, import_fails) -> None:
     start_mock = MagicMock()
     patched_configuration_load_config_file(mocker, default_conf)
-    # Source of this test-method: https://stackoverflow.com/questions/2481511/mocking-importerror-in-python
-    import builtins
-    realimport = builtins.__import__
-
-    def mockedimport(name, *args, **kwargs):
-        if name == "filelock":
-            raise ImportError("No module named 'filelock'")
-        return realimport(name, *args, **kwargs)
-
-    builtins.__import__ = mockedimport
 
     mocker.patch('freqtrade.optimize.hyperopt.Hyperopt.start', start_mock)
     patch_exchange(mocker)
@@ -217,9 +207,6 @@ def test_start_not_installed(mocker, default_conf, caplog) -> None:
     with pytest.raises(OperationalException, match=r"Please ensure that the hyperopt dependencies"):
         start_hyperopt(args)
 
-    # restore previous importfunction
-    builtins.__import__ = realimport
-
 
 def test_start(mocker, default_conf, caplog) -> None:
     start_mock = MagicMock()

From 0268bfdbd4ac5aba98fde16a89256e11fdb558b7 Mon Sep 17 00:00:00 2001
From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
Date: Thu, 26 Sep 2019 02:04:48 +0300
Subject: [PATCH 0533/3421] Minor: fix typo in comment

Minor cosmetics. typo caught.
---
 freqtrade/data/__init__.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/freqtrade/data/__init__.py b/freqtrade/data/__init__.py
index 0a31d095c..0e7eea0d0 100644
--- a/freqtrade/data/__init__.py
+++ b/freqtrade/data/__init__.py
@@ -2,7 +2,7 @@
 Module to handle data operations for freqtrade
 """
 
-# limit what's imported when using `from freqtrad.data import *``
+# limit what's imported when using `from freqtrade.data import *`
 __all__ = [
     'converter'
 ]

From 83e596c06f7edb4038d0c657d3ebc858dcb6197f Mon Sep 17 00:00:00 2001
From: Jonathan Raviotta 
Date: Wed, 25 Sep 2019 23:09:50 -0400
Subject: [PATCH 0534/3421] chart styling

---
 freqtrade/plot/plotting.py | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py
index 99d3d8088..d59509d5c 100644
--- a/freqtrade/plot/plotting.py
+++ b/freqtrade/plot/plotting.py
@@ -64,7 +64,6 @@ def add_indicators(fig, row, indicators: List[str], data: pd.DataFrame) -> make_
     """
     for indicator in indicators:
         if indicator in data:
-            # TODO: Figure out why scattergl causes problems plotly/plotly.js#2284
             scatter = go.Scatter(
                 x=data['date'],
                 y=data[indicator].values,
@@ -92,7 +91,7 @@ def add_profit(fig, row, data: pd.DataFrame, column: str, name: str) -> make_sub
     :param name: Name to use
     :return: fig with added profit plot
     """
-    profit = go.Scatter(
+    profit = go.Scattergl(
         x=data.index,
         y=data[column],
         name=name,
@@ -221,6 +220,7 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra
         else:
             logger.warning("No sell-signals found.")
 
+    # TODO: Figure out why scattergl causes problems plotly/plotly.js#2284
     if 'bb_lowerband' in data and 'bb_upperband' in data:
         bb_lower = go.Scatter(
             x=data.date,
@@ -251,8 +251,10 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra
     volume = go.Bar(
         x=data['date'],
         y=data['volume'],
-        name='Volume'
-    )
+        name='Volume',
+        marker_color='DarkSlateGrey',
+        marker_line_color='DarkSlateGrey'
+        )
     fig.add_trace(volume, 2, 1)
 
     # Add indicators to separate row
@@ -270,7 +272,7 @@ def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame],
     df_comb = create_cum_profit(df_comb, trades, 'cum_profit')
 
     # Plot the pairs average close prices, and total profit growth
-    avgclose = go.Scatter(
+    avgclose = go.Scattergl(
         x=df_comb.index,
         y=df_comb['mean'],
         name='Avg close price',

From 5978b7bb93ca46c8d8e62f0168c7f43e7efc690d Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 26 Sep 2019 06:26:25 +0200
Subject: [PATCH 0535/3421] Add explicit test for halfbought fee adjustment

---
 tests/test_freqtradebot.py | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index c26186e9d..45a2960e1 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -3205,6 +3205,30 @@ def test_get_real_amount_invalid_order(default_conf, trades_for_order, buy_order
     assert freqtrade.get_real_amount(trade, limit_buy_order) == amount
 
 
+def test_get_real_amount_wrong_amount(default_conf, trades_for_order, buy_order_fee, mocker):
+    limit_buy_order = deepcopy(buy_order_fee)
+    limit_buy_order['fee'] = {'cost': 0.004}
+    limit_buy_order['amount'] = limit_buy_order['amount'] + 0.1
+
+    patch_RPCManager(mocker)
+    patch_exchange(mocker)
+    mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order)
+    amount = float(sum(x['amount'] for x in trades_for_order))
+    trade = Trade(
+        pair='LTC/ETH',
+        amount=amount,
+        exchange='binance',
+        open_rate=0.245441,
+        open_order_id="123456"
+    )
+    freqtrade = FreqtradeBot(default_conf)
+    patch_get_signal(freqtrade)
+
+    # Amount does not change
+    with pytest.raises(OperationalException, match=r"Half bought\? Amounts don't match"):
+        freqtrade.get_real_amount(trade, limit_buy_order)
+
+
 def test_get_real_amount_invalid(default_conf, trades_for_order, buy_order_fee, mocker):
     # Remove "Currency" from fee dict
     trades_for_order[0]['fee'] = {'cost': 0.008}

From 49f0a721213cbdf1a6bca8c27b61e17432dbc4a8 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 26 Sep 2019 06:48:46 +0200
Subject: [PATCH 0536/3421] Add test for rounding error on fload aggregation

---
 freqtrade/constants.py     |  1 +
 tests/test_freqtradebot.py | 55 ++++++++++++++++++++++++++++++++++++--
 2 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/freqtrade/constants.py b/freqtrade/constants.py
index d7ace131c..abf43b24d 100644
--- a/freqtrade/constants.py
+++ b/freqtrade/constants.py
@@ -22,6 +22,7 @@ ORDERTYPE_POSSIBILITIES = ['limit', 'market']
 ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc']
 AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList']
 DRY_RUN_WALLET = 999.9
+MATH_CLOSE_PREC = 1e-14  # Precision used for float comparisons
 
 TICKER_INTERVALS = [
     '1m', '3m', '5m', '15m', '30m',
diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index 45a2960e1..dd535a0b0 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -4,6 +4,7 @@
 import logging
 import time
 from copy import deepcopy
+from math import isclose
 from unittest.mock import MagicMock, PropertyMock
 
 import arrow
@@ -12,6 +13,7 @@ import requests
 
 from freqtrade import (DependencyException, InvalidOrderException,
                        OperationalException, TemporaryError, constants)
+from freqtrade.constants import MATH_CLOSE_PREC
 from freqtrade.data.dataprovider import DataProvider
 from freqtrade.freqtradebot import FreqtradeBot
 from freqtrade.persistence import Trade
@@ -1635,6 +1637,31 @@ def test_update_trade_state_withorderdict(default_conf, trades_for_order, limit_
     assert trade.amount == limit_buy_order['amount']
 
 
+def test_update_trade_state_withorderdict_rounding_fee(default_conf, trades_for_order,
+                                                       limit_buy_order, mocker, caplog):
+    trades_for_order[0]['amount'] = limit_buy_order['amount'] + 1e-14
+    mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order)
+    # get_order should not be called!!
+    mocker.patch('freqtrade.exchange.Exchange.get_order', MagicMock(side_effect=ValueError))
+    patch_exchange(mocker)
+    Trade.session = MagicMock()
+    amount = sum(x['amount'] for x in trades_for_order)
+    freqtrade = get_patched_freqtradebot(mocker, default_conf)
+    trade = Trade(
+        pair='LTC/ETH',
+        amount=amount,
+        exchange='binance',
+        open_rate=0.245441,
+        open_order_id="123456",
+        is_open=True,
+        open_date=arrow.utcnow().datetime,
+    )
+    freqtrade.update_trade_state(trade, limit_buy_order)
+    assert trade.amount != amount
+    assert trade.amount == limit_buy_order['amount']
+    assert log_has_re(r'Applying fee on amount for .*', caplog)
+
+
 def test_update_trade_state_exception(mocker, default_conf,
                                       limit_buy_order, caplog) -> None:
     freqtrade = get_patched_freqtradebot(mocker, default_conf)
@@ -3207,8 +3234,7 @@ def test_get_real_amount_invalid_order(default_conf, trades_for_order, buy_order
 
 def test_get_real_amount_wrong_amount(default_conf, trades_for_order, buy_order_fee, mocker):
     limit_buy_order = deepcopy(buy_order_fee)
-    limit_buy_order['fee'] = {'cost': 0.004}
-    limit_buy_order['amount'] = limit_buy_order['amount'] + 0.1
+    limit_buy_order['amount'] = limit_buy_order['amount'] - 0.001
 
     patch_RPCManager(mocker)
     patch_exchange(mocker)
@@ -3229,6 +3255,31 @@ def test_get_real_amount_wrong_amount(default_conf, trades_for_order, buy_order_
         freqtrade.get_real_amount(trade, limit_buy_order)
 
 
+def test_get_real_amount_wrong_amount_rounding(default_conf, trades_for_order, buy_order_fee,
+                                               mocker):
+    # Floats should not be compared directly.
+    limit_buy_order = deepcopy(buy_order_fee)
+    trades_for_order[0]['amount'] = trades_for_order[0]['amount'] + 1e-15
+
+    patch_RPCManager(mocker)
+    patch_exchange(mocker)
+    mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order)
+    amount = float(sum(x['amount'] for x in trades_for_order))
+    trade = Trade(
+        pair='LTC/ETH',
+        amount=amount,
+        exchange='binance',
+        open_rate=0.245441,
+        open_order_id="123456"
+    )
+    freqtrade = FreqtradeBot(default_conf)
+    patch_get_signal(freqtrade)
+
+    # Amount changes by fee amount.
+    assert isclose(freqtrade.get_real_amount(trade, limit_buy_order), amount - (amount * 0.001),
+                   rel_tol=MATH_CLOSE_PREC,)
+
+
 def test_get_real_amount_invalid(default_conf, trades_for_order, buy_order_fee, mocker):
     # Remove "Currency" from fee dict
     trades_for_order[0]['fee'] = {'cost': 0.008}

From 8d92f8b3624555bf50f8463ebe961653a1db2435 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 26 Sep 2019 07:04:56 +0200
Subject: [PATCH 0537/3421] Compare floats via isclose instead of ==

---
 freqtrade/freqtradebot.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
index f56b1f2ea..c6d3d0f44 100644
--- a/freqtrade/freqtradebot.py
+++ b/freqtrade/freqtradebot.py
@@ -6,6 +6,7 @@ import copy
 import logging
 import traceback
 from datetime import datetime
+from math import isclose
 from typing import Any, Dict, List, Optional, Tuple
 
 import arrow
@@ -510,7 +511,7 @@ class FreqtradeBot:
                         trade.pair.startswith(exectrade['fee']['currency'])):
                     fee_abs += exectrade['fee']['cost']
 
-        if amount != order_amount:
+        if not isclose(amount, order_amount, rel_tol=constants.MATH_CLOSE_PREC):
             logger.warning(f"Amount {amount} does not match amount {trade.amount}")
             raise OperationalException("Half bought? Amounts don't match")
         real_amount = amount - fee_abs
@@ -535,7 +536,7 @@ class FreqtradeBot:
             # Try update amount (binance-fix)
             try:
                 new_amount = self.get_real_amount(trade, order)
-                if order['amount'] != new_amount:
+                if not isclose(order['amount'], new_amount, rel_tol=constants.MATH_CLOSE_PREC):
                     order['amount'] = new_amount
                     # Fee was applied, so set to 0
                     trade.fee_open = 0

From eb07f1fee9b5763a0e635c586b55e5d4d5243325 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 26 Sep 2019 09:31:31 +0200
Subject: [PATCH 0538/3421] Fix typo

---
 docs/installation.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/installation.md b/docs/installation.md
index 641879ff1..081d7e0cf 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -118,7 +118,7 @@ python3 -m pip install -e .
 
 !!! Note
     This does not install hyperopt dependencies. To install these, please use `python3 -m pip install -e .[hyperopt]`.
-    We do not advise to run hyperopt on a Raspberry Pi, since this is a very resource-heavy operation, which should be done on powerfull machine.
+    We do not advise to run hyperopt on a Raspberry Pi, since this is a very resource-heavy operation, which should be done on powerful machine.
 
 ### Common
 

From 9db915853ab4b9d454f618eda68ccb3a4ad02e2d Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 26 Sep 2019 11:59:21 +0300
Subject: [PATCH 0539/3421] Allow use of config in custom hyperopt methods

---
 freqtrade/optimize/hyperopt_interface.py | 6 ++++++
 freqtrade/resolvers/hyperopt_resolver.py | 5 +----
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py
index 0e2e75d2e..9973739e8 100644
--- a/freqtrade/optimize/hyperopt_interface.py
+++ b/freqtrade/optimize/hyperopt_interface.py
@@ -36,6 +36,12 @@ class IHyperOpt(ABC):
     """
     ticker_interval: str
 
+    def __init__(self, config: dict) -> None:
+        self.config = config
+
+        # Assign ticker_interval to be used in hyperopt
+        IHyperOpt.ticker_interval = str(config['ticker_interval'])
+
     @staticmethod
     @abstractmethod
     def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame:
diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py
index 3ffdc5e1f..e96394d69 100644
--- a/freqtrade/resolvers/hyperopt_resolver.py
+++ b/freqtrade/resolvers/hyperopt_resolver.py
@@ -34,9 +34,6 @@ class HyperOptResolver(IResolver):
         self.hyperopt = self._load_hyperopt(hyperopt_name, config,
                                             extra_dir=config.get('hyperopt_path'))
 
-        # Assign ticker_interval to be used in hyperopt
-        IHyperOpt.ticker_interval = str(config['ticker_interval'])
-
         if not hasattr(self.hyperopt, 'populate_buy_trend'):
             logger.warning("Hyperopt class does not provide populate_buy_trend() method. "
                            "Using populate_buy_trend from the strategy.")
@@ -65,7 +62,7 @@ class HyperOptResolver(IResolver):
             abs_paths.insert(0, Path(extra_dir).resolve())
 
         hyperopt = self._load_object(paths=abs_paths, object_type=IHyperOpt,
-                                     object_name=hyperopt_name)
+                                     object_name=hyperopt_name, kwargs={'config': config})
         if hyperopt:
             return hyperopt
         raise OperationalException(

From 60e3e626e4744172469a576dceec497086f7820a Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 26 Sep 2019 11:00:26 +0200
Subject: [PATCH 0540/3421] Improve timerange section of the docs

---
 docs/backtesting.md | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/docs/backtesting.md b/docs/backtesting.md
index 041a47ba2..75aba6c73 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -72,24 +72,21 @@ The exported trades can be used for [further analysis](#further-backtest-result-
 freqtrade backtesting --export trades --export-filename=backtest_samplestrategy.json
 ```
 
-#### Running backtest with smaller testset
+#### Running backtest with smaller testset by using timerange
 
 Use the `--timerange` argument to change how much of the testset you want to use.
 
-Example:
+
+For example, running backtesting with the `--timerange=20190501-` option will use all available data starting with May 1st, 2019 from your inputdata.
 
 ```bash
 freqtrade backtesting --timerange=20190501-
 ```
 
-#### Advanced use of timerange
-
-For Example, running backtesting with the `--timerange=20190101-` option will use all available data starting with January 1st, 2019 from your inputdata.
 You can also specify particular dates or a range span indexed by start and stop.
 
 The full timerange specification:
 
-
 - Use tickframes till 2018/01/31: `--timerange=-20180131`
 - Use tickframes since 2018/01/31: `--timerange=20180131-`
 - Use tickframes since 2018/01/31 till 2018/03/01 : `--timerange=20180131-20180301`

From 11bb7e520c1ad1dfa3775b1a3834007a251e8300 Mon Sep 17 00:00:00 2001
From: Ashton Honnecke 
Date: Thu, 26 Sep 2019 09:22:49 -0600
Subject: [PATCH 0541/3421] use .develop dockerfile, move docs to develop.md,
 add freqtrade_bash

---
 LOCAL.md                   | 48 --------------------------------------
 docker-compose.develop.yml | 13 ++++++++++-
 docs/developer.md          | 42 ++++++++++++++++++++++++++++++++-
 3 files changed, 53 insertions(+), 50 deletions(-)
 delete mode 100644 LOCAL.md

diff --git a/LOCAL.md b/LOCAL.md
deleted file mode 100644
index ce9808034..000000000
--- a/LOCAL.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# Local development
-
-The fastest and easiest way to start up is to use docker-compose.develop which gives developers the ability to start the bot up with all the required dependencies, *without* needing to install any freqtrade specific dependencies on your local machine.
-
-# Install
-## git
-``` bash
-sudo apt install git
-```
-
-## docker
-``` bash
-sudo apt install docker
-```
-
-## docker-compose
-``` bash
-sudo apt install docker-compose
-```
-# Starting the bot
-## Develop dockerfile
-``` bash
-rm docker-compose.yml && mv docker-compose.develop.yml docker-compose.yml
-```
-
-## Docker Compose
-
-## Starting
-
-``` bash
-docker-compose up
-```
-![Docker compose up](https://user-images.githubusercontent.com/419355/65456322-47f63a80-de06-11e9-90c6-3c74d1bad0b8.png)
-
-### Rebuilding
-``` bash
-docker-compose build
-```
-
-### Execing (effectively SSH into the container)
-
-The `exec` command requires that the container already be running, if you want to start it
-that can be effected by `docker-compose up` or `docker-compose run freqtrade_develop`
-
-``` bash
-docker-compose exec freqtrade_develop /bin/bash
-```
-![image](https://user-images.githubusercontent.com/419355/65456522-ba671a80-de06-11e9-9598-df9ca0d8dcac.png)
diff --git a/docker-compose.develop.yml b/docker-compose.develop.yml
index 3e3bf4833..562b5960a 100644
--- a/docker-compose.develop.yml
+++ b/docker-compose.develop.yml
@@ -4,6 +4,17 @@ services:
   freqtrade_develop:
     build:
       context: .
-      dockerfile: "./Dockerfile"
+      dockerfile: "./Dockerfile.develop"
     volumes:
       - ".:/freqtrade"
+    entrypoint:
+      - "freqtrade"
+
+  freqtrade_bash:
+    build:
+      context: .
+      dockerfile: "./Dockerfile.develop"
+    volumes:
+      - ".:/freqtrade"
+    entrypoint:
+      - "/bin/bash"
diff --git a/docs/developer.md b/docs/developer.md
index b048cf93f..926b8e3d8 100644
--- a/docs/developer.md
+++ b/docs/developer.md
@@ -38,8 +38,48 @@ def test_method_to_test(caplog):
     assert log_has("This event happened", caplog)
     # Check regex with trailing number ...
     assert log_has_re(r"This dynamic event happened and produced \d+", caplog)
+
 ```
 
+### Local docker usage
+
+The fastest and easiest way to start up is to use docker-compose.develop which gives developers the ability to start the bot up with all the required dependencies, *without* needing to install any freqtrade specific dependencies on your local machine.
+
+#### Install
+* [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
+* [docker](https://docs.docker.com/install/)
+* [docker-compose](https://docs.docker.com/compose/install/)
+
+#### Starting the bot
+##### Use the develop dockerfile
+``` bash
+rm docker-compose.yml && mv docker-compose.develop.yml docker-compose.yml
+```
+#### Docker Compose
+
+##### Starting
+
+``` bash
+docker-compose up
+```
+![Docker compose up](https://user-images.githubusercontent.com/419355/65456322-47f63a80-de06-11e9-90c6-3c74d1bad0b8.png)
+
+##### Rebuilding
+``` bash
+docker-compose build
+```
+
+##### Execing (effectively SSH into the container)
+
+The `exec` command requires that the container already be running, if you want to start it
+that can be effected by `docker-compose up` or `docker-compose run freqtrade_develop`
+
+``` bash
+docker-compose exec freqtrade_develop /bin/bash
+```
+![image](https://user-images.githubusercontent.com/419355/65456522-ba671a80-de06-11e9-9598-df9ca0d8dcac.png)
+
+
 ## Modules
 
 ### Dynamic Pairlist
@@ -182,7 +222,7 @@ git log --oneline --no-decorate --no-merges master..develop
 Once the PR against master is merged (best right after merging):
 
 * Use the button "Draft a new release" in the Github UI (subsection releases)
-* Use the version-number specified as tag. 
+* Use the version-number specified as tag.
 * Use "master" as reference (this step comes after the above PR is merged).
 * Use the above changelog as release comment (as codeblock)
 

From 637ec60644c2a31722c03ba3722c4153d66b899b Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 26 Sep 2019 19:36:09 +0200
Subject: [PATCH 0542/3421] Update slack link

---
 CONTRIBUTING.md                | 2 +-
 README.md                      | 4 ++--
 docs/developer.md              | 2 +-
 docs/index.md                  | 2 +-
 docs/strategy-customization.md | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index aac25a423..72c04e151 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -11,7 +11,7 @@ Few pointers for contributions:
 - Create your PR against the `develop` branch, not `master`.
 - New features need to contain unit tests and must be PEP8 conformant (max-line-length = 100).
 
-If you are unsure, discuss the feature on our [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LWEyODBiNzkzNzcyNzU0MWYyYzE5NjIyOTQxMzBmMGUxOTIzM2YyN2Y4NWY1YTEwZDgwYTRmMzE2NmM5ZmY2MTg)
+If you are unsure, discuss the feature on our [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE)
 or in a [issue](https://github.com/freqtrade/freqtrade/issues) before a PR.
 
 ## Getting started
diff --git a/README.md b/README.md
index 240b4f917..6d57dcd89 100644
--- a/README.md
+++ b/README.md
@@ -141,7 +141,7 @@ Accounts having BNB accounts use this to pay for fees - if your first trade happ
 For any questions not covered by the documentation or for further
 information about the bot, we encourage you to join our slack channel.
 
-- [Click here to join Slack channel](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LWEyODBiNzkzNzcyNzU0MWYyYzE5NjIyOTQxMzBmMGUxOTIzM2YyN2Y4NWY1YTEwZDgwYTRmMzE2NmM5ZmY2MTg).
+- [Click here to join Slack channel](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE).
 
 ### [Bugs / Issues](https://github.com/freqtrade/freqtrade/issues?q=is%3Aissue)
 
@@ -172,7 +172,7 @@ to understand the requirements before sending your pull-requests.
 Coding is not a neccessity to contribute - maybe start with improving our documentation?
 Issues labeled [good first issue](https://github.com/freqtrade/freqtrade/labels/good%20first%20issue) can be good first contributions, and will help get you familiar with the codebase.
 
-**Note** before starting any major new feature work, *please open an issue describing what you are planning to do* or talk to us on [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LWEyODBiNzkzNzcyNzU0MWYyYzE5NjIyOTQxMzBmMGUxOTIzM2YyN2Y4NWY1YTEwZDgwYTRmMzE2NmM5ZmY2MTg). This will ensure that interested parties can give valuable feedback on the feature, and let others know that you are working on it.
+**Note** before starting any major new feature work, *please open an issue describing what you are planning to do* or talk to us on [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE). This will ensure that interested parties can give valuable feedback on the feature, and let others know that you are working on it.
 
 **Important:** Always create your PR against the `develop` branch, not `master`.
 
diff --git a/docs/developer.md b/docs/developer.md
index b048cf93f..627627b07 100644
--- a/docs/developer.md
+++ b/docs/developer.md
@@ -2,7 +2,7 @@
 
 This page is intended for developers of FreqTrade, people who want to contribute to the FreqTrade codebase or documentation, or people who want to understand the source code of the application they're running.
 
-All contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas are welcome. We [track issues](https://github.com/freqtrade/freqtrade/issues) on [GitHub](https://github.com) and also have a dev channel in [slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LWEyODBiNzkzNzcyNzU0MWYyYzE5NjIyOTQxMzBmMGUxOTIzM2YyN2Y4NWY1YTEwZDgwYTRmMzE2NmM5ZmY2MTg) where you can ask questions.
+All contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas are welcome. We [track issues](https://github.com/freqtrade/freqtrade/issues) on [GitHub](https://github.com) and also have a dev channel in [slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) where you can ask questions.
 
 ## Documentation
 
diff --git a/docs/index.md b/docs/index.md
index 63d6be75e..206d635c6 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -64,7 +64,7 @@ To run this bot we recommend you a cloud instance with a minimum of:
 Help / Slack
 For any questions not covered by the documentation or for further information about the bot, we encourage you to join our Slack channel.
 
-Click [here](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LWEyODBiNzkzNzcyNzU0MWYyYzE5NjIyOTQxMzBmMGUxOTIzM2YyN2Y4NWY1YTEwZDgwYTRmMzE2NmM5ZmY2MTg) to join Slack channel.
+Click [here](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) to join Slack channel.
 
 ## Ready to try?
 
diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md
index 85cab987a..b927e5aad 100644
--- a/docs/strategy-customization.md
+++ b/docs/strategy-customization.md
@@ -411,7 +411,7 @@ To get additional Ideas for strategies, head over to our [strategy repository](h
 Feel free to use any of them as inspiration for your own strategies.
 We're happy to accept Pull Requests containing new Strategies to that repo.
 
-We also got a *strategy-sharing* channel in our [Slack community](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LWEyODBiNzkzNzcyNzU0MWYyYzE5NjIyOTQxMzBmMGUxOTIzM2YyN2Y4NWY1YTEwZDgwYTRmMzE2NmM5ZmY2MTg) which is a great place to get and/or share ideas.
+We also got a *strategy-sharing* channel in our [Slack community](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) which is a great place to get and/or share ideas.
 
 ## Next step
 

From 4ac53f154908557959cbdea2eeed1c43be063db8 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Sat, 28 Sep 2019 04:13:53 +0300
Subject: [PATCH 0543/3421] Shorten the default hyperopt stoploss space

---
 freqtrade/optimize/hyperopt_interface.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py
index 0e2e75d2e..7b0e956b9 100644
--- a/freqtrade/optimize/hyperopt_interface.py
+++ b/freqtrade/optimize/hyperopt_interface.py
@@ -175,7 +175,7 @@ class IHyperOpt(ABC):
         You may override it in your custom Hyperopt class.
         """
         return [
-            Real(-0.5, -0.02, name='stoploss'),
+            Real(-0.35, -0.02, name='stoploss'),
         ]
 
     # This is needed for proper unpickling the class attribute ticker_interval

From 42b5a0977e2b7b03917bbcbb12c1961c7c4c77bc Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 28 Sep 2019 10:14:38 +0200
Subject: [PATCH 0544/3421] fix failing test

---
 tests/optimize/test_hyperopt.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index 0888c79d4..1a22d116d 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -153,7 +153,7 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None:
     delattr(hyperopts, 'populate_sell_trend')
     mocker.patch(
         'freqtrade.resolvers.hyperopt_resolver.HyperOptResolver._load_hyperopt',
-        MagicMock(return_value=hyperopts)
+        MagicMock(return_value=hyperopts(default_conf))
     )
     x = HyperOptResolver(default_conf, ).hyperopt
     assert not hasattr(x, 'populate_buy_trend')

From 43f2ef226c969894d6a9a3487a52eeef95f7f5a7 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 28 Sep 2019 10:30:12 +0200
Subject: [PATCH 0545/3421] Change rel_tol to abs_tol to avoid surprises with
 high priced pairs

---
 freqtrade/freqtradebot.py  | 4 ++--
 tests/test_freqtradebot.py | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
index c6d3d0f44..3f7eab27a 100644
--- a/freqtrade/freqtradebot.py
+++ b/freqtrade/freqtradebot.py
@@ -511,7 +511,7 @@ class FreqtradeBot:
                         trade.pair.startswith(exectrade['fee']['currency'])):
                     fee_abs += exectrade['fee']['cost']
 
-        if not isclose(amount, order_amount, rel_tol=constants.MATH_CLOSE_PREC):
+        if not isclose(amount, order_amount, abs_tol=constants.MATH_CLOSE_PREC):
             logger.warning(f"Amount {amount} does not match amount {trade.amount}")
             raise OperationalException("Half bought? Amounts don't match")
         real_amount = amount - fee_abs
@@ -536,7 +536,7 @@ class FreqtradeBot:
             # Try update amount (binance-fix)
             try:
                 new_amount = self.get_real_amount(trade, order)
-                if not isclose(order['amount'], new_amount, rel_tol=constants.MATH_CLOSE_PREC):
+                if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC):
                     order['amount'] = new_amount
                     # Fee was applied, so set to 0
                     trade.fee_open = 0
diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index dd535a0b0..ee28f2e58 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -3277,7 +3277,7 @@ def test_get_real_amount_wrong_amount_rounding(default_conf, trades_for_order, b
 
     # Amount changes by fee amount.
     assert isclose(freqtrade.get_real_amount(trade, limit_buy_order), amount - (amount * 0.001),
-                   rel_tol=MATH_CLOSE_PREC,)
+                   abs_tol=MATH_CLOSE_PREC,)
 
 
 def test_get_real_amount_invalid(default_conf, trades_for_order, buy_order_fee, mocker):

From 7e214d8e4c14fb640a1b4c417c78b07381aaa4b7 Mon Sep 17 00:00:00 2001
From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
Date: Sat, 28 Sep 2019 11:50:15 +0300
Subject: [PATCH 0546/3421] minor: change default stoploss space

---
 docs/hyperopt.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/hyperopt.md b/docs/hyperopt.md
index 9542d5725..b31e515ab 100644
--- a/docs/hyperopt.md
+++ b/docs/hyperopt.md
@@ -425,7 +425,7 @@ Buy hyperspace params:
 Stoploss: -0.37996664668703606
 ```
 
-If you are optimizing stoploss values, Freqtrade creates the 'stoploss' optimization hyperspace for you. By default, the stoploss values in that hyperspace can vary in the range -0.5...-0.02, which is sufficient in most cases.
+If you are optimizing stoploss values, Freqtrade creates the 'stoploss' optimization hyperspace for you. By default, the stoploss values in that hyperspace can vary in the range -0.35...-0.02, which is sufficient in most cases.
 
 If you have the `stoploss_space()` method in your custom hyperopt file, remove it in order to utilize Stoploss hyperoptimization space generated by Freqtrade by default.
 

From 45f5394d799190edf023bbe493bc3964cd0aebb2 Mon Sep 17 00:00:00 2001
From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
Date: Sat, 28 Sep 2019 11:54:26 +0300
Subject: [PATCH 0547/3421] Align example in the docs

---
 docs/hyperopt.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/hyperopt.md b/docs/hyperopt.md
index b31e515ab..45528edab 100644
--- a/docs/hyperopt.md
+++ b/docs/hyperopt.md
@@ -422,7 +422,7 @@ Buy hyperspace params:
     'adx-enabled': False,
     'rsi-enabled': True,
     'trigger': 'bb_lower'}
-Stoploss: -0.37996664668703606
+Stoploss: -0.27996
 ```
 
 If you are optimizing stoploss values, Freqtrade creates the 'stoploss' optimization hyperspace for you. By default, the stoploss values in that hyperspace can vary in the range -0.35...-0.02, which is sufficient in most cases.

From 2f005d6be96dcc8d98abcca813a9c10eb5a99eb9 Mon Sep 17 00:00:00 2001
From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
Date: Sat, 28 Sep 2019 11:56:19 +0300
Subject: [PATCH 0548/3421] Align example of ROI in the docs

---
 docs/hyperopt.md | 17 +++--------------
 1 file changed, 3 insertions(+), 14 deletions(-)

diff --git a/docs/hyperopt.md b/docs/hyperopt.md
index 45528edab..beef414bf 100644
--- a/docs/hyperopt.md
+++ b/docs/hyperopt.md
@@ -375,23 +375,12 @@ Buy hyperspace params:
     'rsi-enabled': True,
     'trigger': 'bb_lower'}
 ROI table:
-{   0: 0.10674752302642071,
-    21: 0.09158372701087236,
-    78: 0.03634636907306948,
+{   0: 0.10674,
+    21: 0.09158,
+    78: 0.03634,
     118: 0}
 ```
 
-This would translate to the following ROI table:
-
-``` python
-minimal_roi = {
-        "118": 0,
-        "78": 0.0363,
-        "21": 0.0915,
-        "0": 0.106
-    }
-```
-
 If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the ticker_interval used. By default the values can vary in the following ranges (for some of the most used ticker intervals, values are rounded to 5 digits after the decimal point):
 
 | # step | 1m |  | 5m |  | 1h |  | 1d |  |

From 6a397f579e449e40c18584d45ee318b1603ac7b5 Mon Sep 17 00:00:00 2001
From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
Date: Sun, 29 Sep 2019 00:43:27 +0300
Subject: [PATCH 0549/3421] Add description of usage

---
 docs/hyperopt.md | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/docs/hyperopt.md b/docs/hyperopt.md
index beef414bf..1ca371e3d 100644
--- a/docs/hyperopt.md
+++ b/docs/hyperopt.md
@@ -381,6 +381,22 @@ ROI table:
     118: 0}
 ```
 
+In order to use this best ROI table found by Hyperopt in backtesting and for live trades/dry-run, copy-paste it as the value of the `minimal_roi` attribute of your custom strategy:
+
+```
+    # Minimal ROI designed for the strategy.
+    # This attribute will be overridden if the config file contains "minimal_roi"
+    minimal_roi = {
+        0: 0.10674,
+        21: 0.09158,
+        78: 0.03634,
+        118: 0
+    }
+```
+As stated in the comment, you can also use it as the value of the `minimal_roi` setting in the configuration file.
+
+#### Default ROI Search Space
+
 If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the ticker_interval used. By default the values can vary in the following ranges (for some of the most used ticker intervals, values are rounded to 5 digits after the decimal point):
 
 | # step | 1m |  | 5m |  | 1h |  | 1d |  |
@@ -414,6 +430,17 @@ Buy hyperspace params:
 Stoploss: -0.27996
 ```
 
+In order to use this best stoploss value found by Hyperopt in backtesting and for live trades/dry-run, copy-paste it as the value of the `stoploss` attribute of your custom strategy:
+
+```
+    # Optimal stoploss designed for the strategy
+    # This attribute will be overridden if the config file contains "stoploss"
+    stoploss = -0.27996
+```
+As stated in the comment, you can also use it as the value of the `stoploss` setting in the configuration file.
+
+#### Default Stoploss Search Space
+
 If you are optimizing stoploss values, Freqtrade creates the 'stoploss' optimization hyperspace for you. By default, the stoploss values in that hyperspace can vary in the range -0.35...-0.02, which is sufficient in most cases.
 
 If you have the `stoploss_space()` method in your custom hyperopt file, remove it in order to utilize Stoploss hyperoptimization space generated by Freqtrade by default.

From 23665c7731846741070a958c16bd8f27501e4ecc Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 29 Sep 2019 10:25:47 +0200
Subject: [PATCH 0550/3421] Don't use main.py as entry point in documentation

---
 docs/installation.md | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/docs/installation.md b/docs/installation.md
index 081d7e0cf..68348d4b0 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -257,14 +257,12 @@ As compiling from source on windows has heavy dependencies (requires a partial v
 ```cmd
 >cd \path\freqtrade-develop
 >python -m venv .env
->cd .env\Scripts
->activate.bat
->cd \path\freqtrade-develop
+>.env\Scripts\activate.bat
 REM optionally install ta-lib from wheel
 REM >pip install TA_Lib‑0.4.17‑cp36‑cp36m‑win32.whl
 >pip install -r requirements.txt
 >pip install -e .
->python freqtrade\main.py
+>freqtrade
 ```
 
 > Thanks [Owdr](https://github.com/Owdr) for the commands. Source: [Issue #222](https://github.com/freqtrade/freqtrade/issues/222)

From 448b09d7b68ef7ae25e33757e3472c8cb7dc60aa Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Sun, 29 Sep 2019 11:54:20 +0300
Subject: [PATCH 0551/3421] Add list-timeframes subcommand

---
 freqtrade/configuration/arguments.py | 16 ++++++++++++++--
 freqtrade/utils.py                   | 23 +++++++++++++++++++++++
 2 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index 6e2ecea2e..c2cde6090 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -31,6 +31,8 @@ ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"]
 
 ARGS_LIST_EXCHANGES = ["print_one_column"]
 
+ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"]
+
 ARGS_CREATE_USERDIR = ["user_data_dir"]
 
 ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "exchange", "timeframes", "erase"]
@@ -41,7 +43,8 @@ ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_
 ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url",
                     "trade_source", "ticker_interval"]
 
-NO_CONF_REQURIED = ["create-userdir", "download-data", "plot-dataframe", "plot-profit"]
+NO_CONF_REQURIED = ["create-userdir", "download-data", "list-timeframes", "plot-dataframe",
+                    "plot-profit"]
 
 
 class Arguments:
@@ -98,7 +101,8 @@ class Arguments:
         :return: None
         """
         from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge
-        from freqtrade.utils import start_create_userdir, start_download_data, start_list_exchanges
+        from freqtrade.utils import (start_create_userdir, start_download_data,
+                                     start_list_exchanges, start_list_timeframes)
 
         subparsers = self.parser.add_subparsers(dest='subparser')
 
@@ -131,6 +135,14 @@ class Arguments:
         list_exchanges_cmd.set_defaults(func=start_list_exchanges)
         self._build_args(optionlist=ARGS_LIST_EXCHANGES, parser=list_exchanges_cmd)
 
+        # Add list-timeframes subcommand
+        list_timeframes_cmd = subparsers.add_parser(
+            'list-timeframes',
+            help='Print available ticker intervals (timeframes) for the exchange.'
+        )
+        list_timeframes_cmd.set_defaults(func=start_list_timeframes)
+        self._build_args(optionlist=ARGS_LIST_TIMEFRAMES, parser=list_timeframes_cmd)
+
         # Add download-data subcommand
         download_data_cmd = subparsers.add_parser(
             'download-data',
diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index 6ce5e888c..559fef0a5 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -97,3 +97,26 @@ def start_download_data(args: Dict[str, Any]) -> None:
         if pairs_not_available:
             logger.info(f"Pairs [{','.join(pairs_not_available)}] not available "
                         f"on exchange {config['exchange']['name']}.")
+
+
+def start_list_timeframes(args: Dict[str, Any]) -> None:
+    """
+    Print ticker intervals (timeframes) available on Exchange
+    """
+    config = setup_utils_configuration(args, RunMode.OTHER)
+
+    # Init exchange
+    exchange = ExchangeResolver(config['exchange']['name'], config).exchange
+
+    timeframes = list((exchange._api.timeframes or {}).keys())
+
+    if not timeframes:
+        logger.warning("List of timeframes available for exchange "
+                       f"`{config['exchange']['name']}` is empty. "
+                       "This exchange does not support fetching OHLCV data.")
+    else:
+        if args['print_one_column']:
+            print('\n'.join(timeframes))
+        else:
+            print(f"Timeframes available for the exchange `{config['exchange']['name']}`: "
+                  f"{', '.join(timeframes)}")

From cd2336887cc74b6a518d84f32d7aa6f1691b4824 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 4 Sep 2019 17:14:04 +0200
Subject: [PATCH 0552/3421] Add first version with shared parent parsers

---
 freqtrade/configuration/arguments.py | 65 ++++++++++++++++------------
 1 file changed, 37 insertions(+), 28 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index 6e2ecea2e..124bf3b75 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -12,7 +12,7 @@ ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir", "user_dat
 
 ARGS_STRATEGY = ["strategy", "strategy_path"]
 
-ARGS_MAIN = ARGS_COMMON + ARGS_STRATEGY + ["db_url", "sd_notify"]
+ARGS_MAIN = ARGS_STRATEGY + ["db_url", "sd_notify"]
 
 ARGS_COMMON_OPTIMIZE = ["ticker_interval", "timerange",
                         "max_open_trades", "stake_amount"]
@@ -51,11 +51,6 @@ class Arguments:
     def __init__(self, args: Optional[List[str]]) -> None:
         self.args = args
         self._parsed_arg: Optional[argparse.Namespace] = None
-        self.parser = argparse.ArgumentParser(description='Free, open source crypto trading bot')
-
-    def _load_args(self) -> None:
-        self._build_args(optionlist=ARGS_MAIN)
-        self._build_subcommands()
 
     def get_parsed_arg(self) -> Dict[str, Any]:
         """
@@ -63,7 +58,7 @@ class Arguments:
         :return: List[str] List of arguments
         """
         if self._parsed_arg is None:
-            self._load_args()
+            self._build_subcommands()
             self._parsed_arg = self._parse_args()
 
         return vars(self._parsed_arg)
@@ -86,7 +81,6 @@ class Arguments:
         return parsed_arg
 
     def _build_args(self, optionlist, parser=None):
-        parser = parser or self.parser
 
         for val in optionlist:
             opt = AVAILABLE_CLI_OPTIONS[val]
@@ -97,61 +91,76 @@ class Arguments:
         Builds and attaches all subcommands.
         :return: None
         """
+        # Build shared arguments (as group Common Options)
+        _common_parser = argparse.ArgumentParser(add_help=False)
+        group = _common_parser.add_argument_group("Common Options")
+        self._build_args(optionlist=ARGS_COMMON, parser=group)
+
+        # Build main command
+        self.parser = argparse.ArgumentParser(description='Free, open source crypto trading bot',
+                                              parents=[_common_parser])
+        self._build_args(optionlist=ARGS_MAIN, parser=self.parser)
+
         from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge
         from freqtrade.utils import start_create_userdir, start_download_data, start_list_exchanges
 
         subparsers = self.parser.add_subparsers(dest='subparser')
 
         # Add backtesting subcommand
-        backtesting_cmd = subparsers.add_parser('backtesting', help='Backtesting module.')
+        backtesting_cmd = subparsers.add_parser('backtesting', help='Backtesting module.',
+                                                parents=[_common_parser])
         backtesting_cmd.set_defaults(func=start_backtesting)
         self._build_args(optionlist=ARGS_BACKTEST, parser=backtesting_cmd)
 
         # Add edge subcommand
-        edge_cmd = subparsers.add_parser('edge', help='Edge module.')
+        edge_cmd = subparsers.add_parser('edge', help='Edge module.', parents=[_common_parser])
         edge_cmd.set_defaults(func=start_edge)
         self._build_args(optionlist=ARGS_EDGE, parser=edge_cmd)
 
         # Add hyperopt subcommand
-        hyperopt_cmd = subparsers.add_parser('hyperopt', help='Hyperopt module.')
+        hyperopt_cmd = subparsers.add_parser('hyperopt', help='Hyperopt module.',
+                                             parents=[_common_parser],
+                                             )
         hyperopt_cmd.set_defaults(func=start_hyperopt)
         self._build_args(optionlist=ARGS_HYPEROPT, parser=hyperopt_cmd)
 
         # add create-userdir subcommand
         create_userdir_cmd = subparsers.add_parser('create-userdir',
-                                                   help="Create user-data directory.")
+                                                   help="Create user-data directory.",
+
+                                                   )
         create_userdir_cmd.set_defaults(func=start_create_userdir)
         self._build_args(optionlist=ARGS_CREATE_USERDIR, parser=create_userdir_cmd)
 
         # Add list-exchanges subcommand
-        list_exchanges_cmd = subparsers.add_parser(
-            'list-exchanges',
-            help='Print available exchanges.'
-        )
+        list_exchanges_cmd = subparsers.add_parser('list-exchanges',
+                                                   help='Print available exchanges.',
+                                                   parents=[_common_parser],
+                                                   )
         list_exchanges_cmd.set_defaults(func=start_list_exchanges)
         self._build_args(optionlist=ARGS_LIST_EXCHANGES, parser=list_exchanges_cmd)
 
         # Add download-data subcommand
-        download_data_cmd = subparsers.add_parser(
-            'download-data',
-            help='Download backtesting data.'
-        )
+        download_data_cmd = subparsers.add_parser('download-data',
+                                                  help='Download backtesting data.',
+                                                  parents=[_common_parser],
+                                                  )
         download_data_cmd.set_defaults(func=start_download_data)
         self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd)
 
         # Add Plotting subcommand
         from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit
-        plot_dataframe_cmd = subparsers.add_parser(
-            'plot-dataframe',
-            help='Plot candles with indicators.'
-        )
+        plot_dataframe_cmd = subparsers.add_parser('plot-dataframe',
+                                                   help='Plot candles with indicators.',
+                                                   parents=[_common_parser],
+                                                   )
         plot_dataframe_cmd.set_defaults(func=start_plot_dataframe)
         self._build_args(optionlist=ARGS_PLOT_DATAFRAME, parser=plot_dataframe_cmd)
 
         # Plot profit
-        plot_profit_cmd = subparsers.add_parser(
-            'plot-profit',
-            help='Generate plot showing profits.'
-        )
+        plot_profit_cmd = subparsers.add_parser('plot-profit',
+                                                help='Generate plot showing profits.',
+                                                parents=[_common_parser],
+                                                )
         plot_profit_cmd.set_defaults(func=start_plot_profit)
         self._build_args(optionlist=ARGS_PLOT_PROFIT, parser=plot_profit_cmd)

From 2a535b72ff6e79b9bc5c218ce97d4b7ec40aede1 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 11:15:51 +0200
Subject: [PATCH 0553/3421] Parser should not have default

---
 freqtrade/configuration/arguments.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index 124bf3b75..d26d64c40 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -80,7 +80,7 @@ class Arguments:
 
         return parsed_arg
 
-    def _build_args(self, optionlist, parser=None):
+    def _build_args(self, optionlist, parser):
 
         for val in optionlist:
             opt = AVAILABLE_CLI_OPTIONS[val]

From cb37f43277bb4d3f81d867888ba7bd63550c2df5 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 11:16:14 +0200
Subject: [PATCH 0554/3421] Add trade subparser (and make subparser a
 requirement)

---
 freqtrade/configuration/arguments.py | 14 ++++++++++----
 freqtrade/utils.py                   | 15 +++++++++++++--
 2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index d26d64c40..ff28a6406 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -99,12 +99,19 @@ class Arguments:
         # Build main command
         self.parser = argparse.ArgumentParser(description='Free, open source crypto trading bot',
                                               parents=[_common_parser])
-        self._build_args(optionlist=ARGS_MAIN, parser=self.parser)
 
         from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge
-        from freqtrade.utils import start_create_userdir, start_download_data, start_list_exchanges
+        from freqtrade.utils import (start_create_userdir, start_download_data,
+                                     start_list_exchanges, start_trading)
+        from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit
 
-        subparsers = self.parser.add_subparsers(dest='subparser')
+        subparsers = self.parser.add_subparsers(dest='subparser', required=True)
+
+        # Add trade subcommand
+        trade_cmd = subparsers.add_parser('trade', help='Trade module.',
+                                          parents=[_common_parser])
+        trade_cmd.set_defaults(func=start_trading)
+        self._build_args(optionlist=ARGS_MAIN, parser=trade_cmd)
 
         # Add backtesting subcommand
         backtesting_cmd = subparsers.add_parser('backtesting', help='Backtesting module.',
@@ -149,7 +156,6 @@ class Arguments:
         self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd)
 
         # Add Plotting subcommand
-        from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit
         plot_dataframe_cmd = subparsers.add_parser('plot-dataframe',
                                                    help='Plot candles with indicators.',
                                                    parents=[_common_parser],
diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index 6ce5e888c..8e57606da 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -33,6 +33,17 @@ def setup_utils_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str
     return config
 
 
+def start_trading(args: Dict[str, Any]) -> int:
+    """
+    Main entry point for trading mode
+    """
+    from freqtrade.worker import Worker
+    # Load and run worker
+    worker = Worker(args)
+    worker.run()
+    return 0
+
+
 def start_list_exchanges(args: Dict[str, Any]) -> None:
     """
     Print available exchanges
@@ -47,7 +58,7 @@ def start_list_exchanges(args: Dict[str, Any]) -> None:
               f"{', '.join(available_exchanges())}")
 
 
-def start_create_userdir(args: Dict[str, Any]) -> None:
+def start_create_userdir(args: Dict[str, Any]) -> int:
     """
     Create "user_data" directory to contain user data strategies, hyperopts, ...)
     :param args: Cli args from Arguments()
@@ -57,7 +68,7 @@ def start_create_userdir(args: Dict[str, Any]) -> None:
         create_userdata_dir(args["user_data_dir"], create_dir=True)
     else:
         logger.warning("`create-userdir` requires --userdir to be set.")
-        sys.exit(1)
+        return 1
 
 
 def start_download_data(args: Dict[str, Any]) -> None:

From 8664e7f7d35d85dae15862d6d42bf292446bd198 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 11:19:08 +0200
Subject: [PATCH 0555/3421] Have main.py support only subcommand mode

---
 freqtrade/main.py | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/freqtrade/main.py b/freqtrade/main.py
index 4d6f0dce7..543aab169 100755
--- a/freqtrade/main.py
+++ b/freqtrade/main.py
@@ -15,7 +15,6 @@ from typing import Any, List
 
 from freqtrade import OperationalException
 from freqtrade.configuration import Arguments
-from freqtrade.worker import Worker
 
 
 logger = logging.getLogger('freqtrade')
@@ -33,16 +32,9 @@ def main(sysargv: List[str] = None) -> None:
         arguments = Arguments(sysargv)
         args = arguments.get_parsed_arg()
 
-        # A subcommand has been issued.
-        # Means if Backtesting or Hyperopt have been called we exit the bot
+        # Call subcommand.
         if 'func' in args:
-            args['func'](args)
-            # TODO: fetch return_code as returned by the command function here
-            return_code = 0
-        else:
-            # Load and run worker
-            worker = Worker(args)
-            worker.run()
+            return_code = args['func'](args)
 
     except SystemExit as e:
         return_code = e

From 0f2e277f80b68a82272e62348f59a17418894c9c Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 11:19:42 +0200
Subject: [PATCH 0556/3421] Rename subparser variable to command

---
 freqtrade/configuration/arguments.py | 2 +-
 tests/test_arguments.py              | 4 ++--
 tests/test_main.py                   | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index ff28a6406..8f6924032 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -105,7 +105,7 @@ class Arguments:
                                      start_list_exchanges, start_trading)
         from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit
 
-        subparsers = self.parser.add_subparsers(dest='subparser', required=True)
+        subparsers = self.parser.add_subparsers(dest='command', required=True)
 
         # Add trade subcommand
         trade_cmd = subparsers.add_parser('trade', help='Trade module.',
diff --git a/tests/test_arguments.py b/tests/test_arguments.py
index cf0104c01..1b04d9419 100644
--- a/tests/test_arguments.py
+++ b/tests/test_arguments.py
@@ -106,7 +106,7 @@ def test_parse_args_backtesting_custom() -> None:
     call_args = Arguments(args).get_parsed_arg()
     assert call_args["config"] == ['test_conf.json']
     assert call_args["verbosity"] == 0
-    assert call_args["subparser"] == 'backtesting'
+    assert call_args["command"] == 'backtesting'
     assert call_args["func"] is not None
     assert call_args["ticker_interval"] == '1m'
     assert type(call_args["strategy_list"]) is list
@@ -124,7 +124,7 @@ def test_parse_args_hyperopt_custom() -> None:
     assert call_args["config"] == ['test_conf.json']
     assert call_args["epochs"] == 20
     assert call_args["verbosity"] == 0
-    assert call_args["subparser"] == 'hyperopt'
+    assert call_args["command"] == 'hyperopt'
     assert call_args["spaces"] == ['buy']
     assert call_args["func"] is not None
     assert callable(call_args["func"])
diff --git a/tests/test_main.py b/tests/test_main.py
index d73edc0da..10d7d3216 100644
--- a/tests/test_main.py
+++ b/tests/test_main.py
@@ -29,7 +29,7 @@ def test_parse_args_backtesting(mocker) -> None:
     call_args = backtesting_mock.call_args[0][0]
     assert call_args["config"] == ['config.json']
     assert call_args["verbosity"] == 0
-    assert call_args["subparser"] == 'backtesting'
+    assert call_args["command"] == 'backtesting'
     assert call_args["func"] is not None
     assert callable(call_args["func"])
     assert call_args["ticker_interval"] is None
@@ -45,7 +45,7 @@ def test_main_start_hyperopt(mocker) -> None:
     call_args = hyperopt_mock.call_args[0][0]
     assert call_args["config"] == ['config.json']
     assert call_args["verbosity"] == 0
-    assert call_args["subparser"] == 'hyperopt'
+    assert call_args["command"] == 'hyperopt'
     assert call_args["func"] is not None
     assert callable(call_args["func"])
 

From 03add90c9494e0a848b73b31e73ecaa05763cfcd Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 13:18:52 +0200
Subject: [PATCH 0557/3421] Adjust some tests to new call-method

---
 tests/optimize/test_backtesting.py | 12 ++++++------
 tests/test_main.py                 | 14 +++++++-------
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py
index fa40809d8..1a52f851e 100644
--- a/tests/optimize/test_backtesting.py
+++ b/tests/optimize/test_backtesting.py
@@ -169,9 +169,9 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) ->
     patched_configuration_load_config_file(mocker, default_conf)
 
     args = [
+        'backtesting',
         '--config', 'config.json',
         '--strategy', 'DefaultStrategy',
-        'backtesting'
     ]
 
     config = setup_configuration(get_args(args), RunMode.BACKTEST)
@@ -202,10 +202,10 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) ->
     )
 
     args = [
+        'backtesting',
         '--config', 'config.json',
         '--strategy', 'DefaultStrategy',
         '--datadir', '/foo/bar',
-        'backtesting',
         '--ticker-interval', '1m',
         '--enable-position-stacking',
         '--disable-max-market-positions',
@@ -250,9 +250,9 @@ def test_setup_configuration_unlimited_stake_amount(mocker, default_conf, caplog
     patched_configuration_load_config_file(mocker, default_conf)
 
     args = [
+        'backtesting',
         '--config', 'config.json',
         '--strategy', 'DefaultStrategy',
-        'backtesting'
     ]
 
     with pytest.raises(DependencyException, match=r'.*stake amount.*'):
@@ -267,9 +267,9 @@ def test_start(mocker, fee, default_conf, caplog) -> None:
     patched_configuration_load_config_file(mocker, default_conf)
 
     args = [
+        'backtesting',
         '--config', 'config.json',
         '--strategy', 'DefaultStrategy',
-        'backtesting'
     ]
     args = get_args(args)
     start_backtesting(args)
@@ -812,10 +812,10 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir):
     patched_configuration_load_config_file(mocker, default_conf)
 
     args = [
+        'backtesting',
         '--config', 'config.json',
         '--strategy', 'DefaultStrategy',
         '--datadir', str(testdatadir),
-        'backtesting',
         '--ticker-interval', '1m',
         '--timerange', '-100',
         '--enable-position-stacking',
@@ -859,9 +859,9 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir):
     patched_configuration_load_config_file(mocker, default_conf)
 
     args = [
+        'backtesting',
         '--config', 'config.json',
         '--datadir', str(testdatadir),
-        'backtesting',
         '--ticker-interval', '1m',
         '--timerange', '-100',
         '--enable-position-stacking',
diff --git a/tests/test_main.py b/tests/test_main.py
index 10d7d3216..c5e1c8901 100644
--- a/tests/test_main.py
+++ b/tests/test_main.py
@@ -58,7 +58,7 @@ def test_main_fatal_exception(mocker, default_conf, caplog) -> None:
     mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock())
     mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock())
 
-    args = ['-c', 'config.json.example']
+    args = ['trade', '-c', 'config.json.example']
 
     # Test Main + the KeyboardInterrupt exception
     with pytest.raises(SystemExit):
@@ -75,7 +75,7 @@ def test_main_keyboard_interrupt(mocker, default_conf, caplog) -> None:
     mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock())
     mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock())
 
-    args = ['-c', 'config.json.example']
+    args = ['trade', '-c', 'config.json.example']
 
     # Test Main + the KeyboardInterrupt exception
     with pytest.raises(SystemExit):
@@ -95,7 +95,7 @@ def test_main_operational_exception(mocker, default_conf, caplog) -> None:
     mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock())
     mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock())
 
-    args = ['-c', 'config.json.example']
+    args = ['trade', '-c', 'config.json.example']
 
     # Test Main + the KeyboardInterrupt exception
     with pytest.raises(SystemExit):
@@ -114,15 +114,15 @@ def test_main_reload_conf(mocker, default_conf, caplog) -> None:
                                          OperationalException("Oh snap!")])
     mocker.patch('freqtrade.worker.Worker._worker', worker_mock)
     patched_configuration_load_config_file(mocker, default_conf)
-    reconfigure_mock = mocker.patch('freqtrade.main.Worker._reconfigure', MagicMock())
+    reconfigure_mock = mocker.patch('freqtrade.worker.Worker._reconfigure', MagicMock())
 
     mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock())
     mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock())
 
-    args = Arguments(['-c', 'config.json.example']).get_parsed_arg()
+    args = Arguments(['trade', '-c', 'config.json.example']).get_parsed_arg()
     worker = Worker(args=args, config=default_conf)
     with pytest.raises(SystemExit):
-        main(['-c', 'config.json.example'])
+        main(['trade', '-c', 'config.json.example'])
 
     assert log_has('Using config: config.json.example ...', caplog)
     assert worker_mock.call_count == 4
@@ -141,7 +141,7 @@ def test_reconfigure(mocker, default_conf) -> None:
     mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock())
     mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock())
 
-    args = Arguments(['-c', 'config.json.example']).get_parsed_arg()
+    args = Arguments(['trade', '-c', 'config.json.example']).get_parsed_arg()
     worker = Worker(args=args, config=default_conf)
     freqtrade = worker.freqtrade
 

From 1b25b5f590e3d50678b853003c9ca06e77ef2a82 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 13:19:05 +0200
Subject: [PATCH 0558/3421] Remove duplicate short-form `-s`

---
 freqtrade/configuration/cli_options.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py
index cb07dbdba..24230f1b3 100644
--- a/freqtrade/configuration/cli_options.py
+++ b/freqtrade/configuration/cli_options.py
@@ -171,7 +171,7 @@ AVAILABLE_CLI_OPTIONS = {
         default=constants.HYPEROPT_EPOCH,
     ),
     "spaces": Arg(
-        '-s', '--spaces',
+        '--spaces',
         help='Specify which parameters to hyperopt. Space-separated list. '
         'Default: `%(default)s`.',
         choices=['all', 'buy', 'sell', 'roi', 'stoploss'],

From d62a4d3566eee173e923f51d76cf1d2e5c0e914b Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 13:19:21 +0200
Subject: [PATCH 0559/3421] Fix some minor problems

---
 freqtrade/configuration/arguments.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index 8f6924032..d0db162b9 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -14,8 +14,8 @@ ARGS_STRATEGY = ["strategy", "strategy_path"]
 
 ARGS_MAIN = ARGS_STRATEGY + ["db_url", "sd_notify"]
 
-ARGS_COMMON_OPTIMIZE = ["ticker_interval", "timerange",
-                        "max_open_trades", "stake_amount"]
+ARGS_COMMON_OPTIMIZE = ARGS_STRATEGY + ["ticker_interval", "timerange",
+                                        "max_open_trades", "stake_amount"]
 
 ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + ["position_stacking", "use_max_market_positions",
                                         "strategy_list", "export", "exportfilename"]
@@ -75,7 +75,7 @@ class Arguments:
         # (see https://bugs.python.org/issue16399)
         # Allow no-config for certain commands (like downloading / plotting)
         if (parsed_arg.config is None and ((Path.cwd() / constants.DEFAULT_CONFIG).is_file() or
-           not ('subparser' in parsed_arg and parsed_arg.subparser in NO_CONF_REQURIED))):
+           not ('command' in parsed_arg and parsed_arg.command in NO_CONF_REQURIED))):
             parsed_arg.config = [constants.DEFAULT_CONFIG]
 
         return parsed_arg
@@ -120,7 +120,8 @@ class Arguments:
         self._build_args(optionlist=ARGS_BACKTEST, parser=backtesting_cmd)
 
         # Add edge subcommand
-        edge_cmd = subparsers.add_parser('edge', help='Edge module.', parents=[_common_parser])
+        edge_cmd = subparsers.add_parser('edge', help='Edge module.',
+                                         parents=[_common_parser])
         edge_cmd.set_defaults(func=start_edge)
         self._build_args(optionlist=ARGS_EDGE, parser=edge_cmd)
 

From db3b974479976273ba54ce919ed07521d3c1311c Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 13:19:40 +0200
Subject: [PATCH 0560/3421] Fix calling sequence

---
 tests/optimize/test_edge_cli.py | 6 +++---
 tests/test_configuration.py     | 8 ++++----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/tests/optimize/test_edge_cli.py b/tests/optimize/test_edge_cli.py
index 97103da55..1d2faead0 100644
--- a/tests/optimize/test_edge_cli.py
+++ b/tests/optimize/test_edge_cli.py
@@ -15,9 +15,9 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) ->
     patched_configuration_load_config_file(mocker, default_conf)
 
     args = [
+        'edge',
         '--config', 'config.json',
         '--strategy', 'DefaultStrategy',
-        'edge'
     ]
 
     config = setup_configuration(get_args(args), RunMode.EDGE)
@@ -45,10 +45,10 @@ def test_setup_edge_configuration_with_arguments(mocker, edge_conf, caplog) -> N
     )
 
     args = [
+        'edge',
         '--config', 'config.json',
         '--strategy', 'DefaultStrategy',
         '--datadir', '/foo/bar',
-        'edge',
         '--ticker-interval', '1m',
         '--timerange', ':100',
         '--stoplosses=-0.01,-0.10,-0.001'
@@ -79,9 +79,9 @@ def test_start(mocker, fee, edge_conf, caplog) -> None:
     patched_configuration_load_config_file(mocker, edge_conf)
 
     args = [
+        'edge',
         '--config', 'config.json',
         '--strategy', 'DefaultStrategy',
-        'edge'
     ]
     args = get_args(args)
     start_edge(args)
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 330b82d39..522b1c1ee 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -806,8 +806,8 @@ def test_pairlist_resolving():
 def test_pairlist_resolving_with_config(mocker, default_conf):
     patched_configuration_load_config_file(mocker, default_conf)
     arglist = [
-        '--config', 'config.json',
         'download-data',
+        '--config', 'config.json',
     ]
 
     args = Arguments(arglist).get_parsed_arg()
@@ -820,8 +820,8 @@ def test_pairlist_resolving_with_config(mocker, default_conf):
 
     # Override pairs
     arglist = [
-        '--config', 'config.json',
         'download-data',
+        '--config', 'config.json',
         '--pairs', 'ETH/BTC', 'XRP/BTC',
     ]
 
@@ -842,8 +842,8 @@ def test_pairlist_resolving_with_config_pl(mocker, default_conf):
     mocker.patch.object(Path, "open", MagicMock(return_value=MagicMock()))
 
     arglist = [
-        '--config', 'config.json',
         'download-data',
+        '--config', 'config.json',
         '--pairs-file', 'pairs.json',
     ]
 
@@ -864,8 +864,8 @@ def test_pairlist_resolving_with_config_pl_not_exists(mocker, default_conf):
     mocker.patch.object(Path, "exists", MagicMock(return_value=False))
 
     arglist = [
-        '--config', 'config.json',
         'download-data',
+        '--config', 'config.json',
         '--pairs-file', 'pairs.json',
     ]
 

From e8106f379222e9353bdb93dcc1504cc8d5f2b809 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 13:38:26 +0200
Subject: [PATCH 0561/3421] Fix most tests to have trade as default argument

---
 tests/test_arguments.py     | 22 +++++++++++-----------
 tests/test_configuration.py | 30 ++++++++++++++++++------------
 tests/test_plotting.py      |  4 ++--
 3 files changed, 31 insertions(+), 25 deletions(-)

diff --git a/tests/test_arguments.py b/tests/test_arguments.py
index 1b04d9419..53602574e 100644
--- a/tests/test_arguments.py
+++ b/tests/test_arguments.py
@@ -25,27 +25,27 @@ def test_parse_args_defaults() -> None:
 
 
 def test_parse_args_config() -> None:
-    args = Arguments(['-c', '/dev/null']).get_parsed_arg()
+    args = Arguments(['trade', '-c', '/dev/null']).get_parsed_arg()
     assert args["config"] == ['/dev/null']
 
-    args = Arguments(['--config', '/dev/null']).get_parsed_arg()
+    args = Arguments(['trade', '--config', '/dev/null']).get_parsed_arg()
     assert args["config"] == ['/dev/null']
 
-    args = Arguments(['--config', '/dev/null',
+    args = Arguments(['trade', '--config', '/dev/null',
                       '--config', '/dev/zero'],).get_parsed_arg()
     assert args["config"] == ['/dev/null', '/dev/zero']
 
 
 def test_parse_args_db_url() -> None:
-    args = Arguments(['--db-url', 'sqlite:///test.sqlite']).get_parsed_arg()
+    args = Arguments(['trade', '--db-url', 'sqlite:///test.sqlite']).get_parsed_arg()
     assert args["db_url"] == 'sqlite:///test.sqlite'
 
 
 def test_parse_args_verbose() -> None:
-    args = Arguments(['-v']).get_parsed_arg()
+    args = Arguments(['trade', '-v']).get_parsed_arg()
     assert args["verbosity"] == 1
 
-    args = Arguments(['--verbose']).get_parsed_arg()
+    args = Arguments(['trade', '--verbose']).get_parsed_arg()
     assert args["verbosity"] == 1
 
 
@@ -67,7 +67,7 @@ def test_parse_args_invalid() -> None:
 
 
 def test_parse_args_strategy() -> None:
-    args = Arguments(['--strategy', 'SomeStrategy']).get_parsed_arg()
+    args = Arguments(['trade', '--strategy', 'SomeStrategy']).get_parsed_arg()
     assert args["strategy"] == 'SomeStrategy'
 
 
@@ -77,7 +77,7 @@ def test_parse_args_strategy_invalid() -> None:
 
 
 def test_parse_args_strategy_path() -> None:
-    args = Arguments(['--strategy-path', '/some/path']).get_parsed_arg()
+    args = Arguments(['trade', '--strategy-path', '/some/path']).get_parsed_arg()
     assert args["strategy_path"] == '/some/path'
 
 
@@ -96,8 +96,8 @@ def test_parse_args_backtesting_invalid() -> None:
 
 def test_parse_args_backtesting_custom() -> None:
     args = [
-        '-c', 'test_conf.json',
         'backtesting',
+        '-c', 'test_conf.json',
         '--ticker-interval', '1m',
         '--strategy-list',
         'DefaultStrategy',
@@ -115,8 +115,8 @@ def test_parse_args_backtesting_custom() -> None:
 
 def test_parse_args_hyperopt_custom() -> None:
     args = [
-        '-c', 'test_conf.json',
         'hyperopt',
+        '-c', 'test_conf.json',
         '--epochs', '20',
         '--spaces', 'buy'
     ]
@@ -132,8 +132,8 @@ def test_parse_args_hyperopt_custom() -> None:
 
 def test_download_data_options() -> None:
     args = [
-        '--datadir', 'datadir/directory',
         'download-data',
+        '--datadir', 'datadir/directory',
         '--pairs-file', 'file_with_pairs',
         '--days', '30',
         '--exchange', 'binance'
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 522b1c1ee..3c3ad3026 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -65,7 +65,7 @@ def test_load_config_file(default_conf, mocker, caplog) -> None:
 
 def test__args_to_config(caplog):
 
-    arg_list = ['--strategy-path', 'TestTest']
+    arg_list = ['trade', '--strategy-path', 'TestTest']
     args = Arguments(arg_list).get_parsed_arg()
     configuration = Configuration(args)
     config = {}
@@ -93,7 +93,7 @@ def test_load_config_max_open_trades_zero(default_conf, mocker, caplog) -> None:
     default_conf['max_open_trades'] = 0
     patched_configuration_load_config_file(mocker, default_conf)
 
-    args = Arguments([]).get_parsed_arg()
+    args = Arguments(['trade']).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
@@ -118,7 +118,7 @@ def test_load_config_combine_dicts(default_conf, mocker, caplog) -> None:
         configsmock
     )
 
-    arg_list = ['-c', 'test_conf.json', '--config', 'test2_conf.json', ]
+    arg_list = ['trade', '-c', 'test_conf.json', '--config', 'test2_conf.json', ]
     args = Arguments(arg_list).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
@@ -184,7 +184,7 @@ def test_load_config_max_open_trades_minus_one(default_conf, mocker, caplog) ->
     default_conf['max_open_trades'] = -1
     patched_configuration_load_config_file(mocker, default_conf)
 
-    args = Arguments([]).get_parsed_arg()
+    args = Arguments(['trade']).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
@@ -208,7 +208,7 @@ def test_load_config_file_exception(mocker) -> None:
 def test_load_config(default_conf, mocker) -> None:
     patched_configuration_load_config_file(mocker, default_conf)
 
-    args = Arguments([]).get_parsed_arg()
+    args = Arguments(['trade']).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
@@ -221,6 +221,7 @@ def test_load_config_with_params(default_conf, mocker) -> None:
     patched_configuration_load_config_file(mocker, default_conf)
 
     arglist = [
+        'trade',
         '--strategy', 'TestStrategy',
         '--strategy-path', '/some/path',
         '--db-url', 'sqlite:///someurl',
@@ -240,6 +241,7 @@ def test_load_config_with_params(default_conf, mocker) -> None:
     patched_configuration_load_config_file(mocker, conf)
 
     arglist = [
+        'trade',
         '--strategy', 'TestStrategy',
         '--strategy-path', '/some/path'
     ]
@@ -256,6 +258,7 @@ def test_load_config_with_params(default_conf, mocker) -> None:
     patched_configuration_load_config_file(mocker, conf)
 
     arglist = [
+        'trade',
         '--strategy', 'TestStrategy',
         '--strategy-path', '/some/path'
     ]
@@ -272,6 +275,7 @@ def test_load_config_with_params(default_conf, mocker) -> None:
     patched_configuration_load_config_file(mocker, conf)
 
     arglist = [
+        'trade',
         '--strategy', 'TestStrategy',
         '--strategy-path', '/some/path'
     ]
@@ -290,6 +294,7 @@ def test_load_config_with_params(default_conf, mocker) -> None:
     patched_configuration_load_config_file(mocker, conf)
 
     arglist = [
+        'trade',
         '--strategy', 'TestStrategy',
         '--strategy-path', '/some/path'
     ]
@@ -307,7 +312,7 @@ def test_load_custom_strategy(default_conf, mocker) -> None:
     })
     patched_configuration_load_config_file(mocker, default_conf)
 
-    args = Arguments([]).get_parsed_arg()
+    args = Arguments(['trade']).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
@@ -319,6 +324,7 @@ def test_show_info(default_conf, mocker, caplog) -> None:
     patched_configuration_load_config_file(mocker, default_conf)
 
     arglist = [
+        'trade',
         '--strategy', 'TestStrategy',
         '--db-url', 'sqlite:///tmp/testdb',
     ]
@@ -335,9 +341,9 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) ->
     patched_configuration_load_config_file(mocker, default_conf)
 
     arglist = [
+        'backtesting',
         '--config', 'config.json',
         '--strategy', 'DefaultStrategy',
-        'backtesting'
     ]
 
     args = Arguments(arglist).get_parsed_arg()
@@ -373,11 +379,11 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non
         lambda x, *args, **kwargs: Path(x)
     )
     arglist = [
+        'backtesting',
         '--config', 'config.json',
         '--strategy', 'DefaultStrategy',
         '--datadir', '/foo/bar',
         '--userdir', "/tmp/freqtrade",
-        'backtesting',
         '--ticker-interval', '1m',
         '--enable-position-stacking',
         '--disable-max-market-positions',
@@ -424,8 +430,8 @@ def test_setup_configuration_with_stratlist(mocker, default_conf, caplog) -> Non
     patched_configuration_load_config_file(mocker, default_conf)
 
     arglist = [
-        '--config', 'config.json',
         'backtesting',
+        '--config', 'config.json',
         '--ticker-interval', '1m',
         '--export', '/bar/foo',
         '--strategy-list',
@@ -552,7 +558,7 @@ def test_cli_verbose_with_params(default_conf, mocker, caplog) -> None:
 
     # Prevent setting loggers
     mocker.patch('freqtrade.loggers._set_loggers', MagicMock)
-    arglist = ['-vvv']
+    arglist = ['trade', '-vvv']
     args = Arguments(arglist).get_parsed_arg()
 
     configuration = Configuration(args)
@@ -604,7 +610,7 @@ def test_set_logfile(default_conf, mocker):
     patched_configuration_load_config_file(mocker, default_conf)
 
     arglist = [
-        '--logfile', 'test_file.log',
+        'trade', '--logfile', 'test_file.log',
     ]
     args = Arguments(arglist).get_parsed_arg()
     configuration = Configuration(args)
@@ -620,7 +626,7 @@ def test_load_config_warn_forcebuy(default_conf, mocker, caplog) -> None:
     default_conf['forcebuy_enable'] = True
     patched_configuration_load_config_file(mocker, default_conf)
 
-    args = Arguments([]).get_parsed_arg()
+    args = Arguments(['trade']).get_parsed_arg()
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
diff --git a/tests/test_plotting.py b/tests/test_plotting.py
index 9028ab961..cf5a22973 100644
--- a/tests/test_plotting.py
+++ b/tests/test_plotting.py
@@ -281,8 +281,8 @@ def test_generate_profit_graph(testdatadir):
 def test_start_plot_dataframe(mocker):
     aup = mocker.patch("freqtrade.plot.plotting.load_and_plot_trades", MagicMock())
     args = [
-        "--config", "config.json.example",
         "plot-dataframe",
+        "--config", "config.json.example",
         "--pairs", "ETH/BTC"
     ]
     start_plot_dataframe(get_args(args))
@@ -323,8 +323,8 @@ def test_load_and_plot_trades(default_conf, mocker, caplog, testdatadir):
 def test_start_plot_profit(mocker):
     aup = mocker.patch("freqtrade.plot.plotting.plot_profit", MagicMock())
     args = [
-        "--config", "config.json.example",
         "plot-profit",
+        "--config", "config.json.example",
         "--pairs", "ETH/BTC"
     ]
     start_plot_profit(get_args(args))

From ad2fa61765f80e79d8014255887c79343e642117 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 13:40:28 +0200
Subject: [PATCH 0562/3421] Fix utils test

---
 freqtrade/utils.py  | 2 +-
 tests/test_utils.py | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index 8e57606da..de167671f 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -68,7 +68,7 @@ def start_create_userdir(args: Dict[str, Any]) -> int:
         create_userdata_dir(args["user_data_dir"], create_dir=True)
     else:
         logger.warning("`create-userdir` requires --userdir to be set.")
-        return 1
+        sys.exit(1)
 
 
 def start_download_data(args: Dict[str, Any]) -> None:
diff --git a/tests/test_utils.py b/tests/test_utils.py
index c99044610..7922bb624 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -13,7 +13,7 @@ from tests.conftest import get_args, log_has, patch_exchange
 
 def test_setup_utils_configuration():
     args = [
-        '--config', 'config.json.example',
+        'list-exchanges', '--config', 'config.json.example',
     ]
 
     config = setup_utils_configuration(get_args(args), RunMode.OTHER)

From 0aa73d5b35b09e088e1ab06dfe148702513de964 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 14 Sep 2019 13:47:33 +0200
Subject: [PATCH 0563/3421] Add test for failing case

---
 tests/test_arguments.py | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/tests/test_arguments.py b/tests/test_arguments.py
index 53602574e..8ea55dd6a 100644
--- a/tests/test_arguments.py
+++ b/tests/test_arguments.py
@@ -1,5 +1,6 @@
 # pragma pylint: disable=missing-docstring, C0103
 import argparse
+import re
 
 import pytest
 
@@ -8,8 +9,16 @@ from freqtrade.configuration.cli_options import check_int_positive
 
 
 # Parse common command-line-arguments. Used for all tools
-def test_parse_args_none() -> None:
+def test_parse_args_error(capsys) -> None:
     arguments = Arguments([])
+    with pytest.raises(SystemExit):
+        arguments.get_parsed_arg()
+    captured = capsys.readouterr()
+    assert re.search(r".*the following arguments are required.*", captured.err)
+
+
+def test_parse_args_none() -> None:
+    arguments = Arguments(['trade'])
     assert isinstance(arguments, Arguments)
     x = arguments.get_parsed_arg()
     assert isinstance(x, dict)
@@ -17,7 +26,7 @@ def test_parse_args_none() -> None:
 
 
 def test_parse_args_defaults() -> None:
-    args = Arguments([]).get_parsed_arg()
+    args = Arguments(['trade']).get_parsed_arg()
     assert args["config"] == ['config.json']
     assert args["strategy_path"] is None
     assert args["datadir"] is None

From 9ef874e979c064d3423f6dd1b75dc971dd96be34 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Mon, 16 Sep 2019 06:35:37 +0200
Subject: [PATCH 0564/3421] Add Custom message during transition period

---
 freqtrade/configuration/arguments.py | 14 +++++++++-----
 freqtrade/main.py                    |  7 +++++++
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index d0db162b9..4fa493eea 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -74,8 +74,9 @@ class Arguments:
         # Workaround issue in argparse with action='append' and default value
         # (see https://bugs.python.org/issue16399)
         # Allow no-config for certain commands (like downloading / plotting)
-        if (parsed_arg.config is None and ((Path.cwd() / constants.DEFAULT_CONFIG).is_file() or
-           not ('command' in parsed_arg and parsed_arg.command in NO_CONF_REQURIED))):
+        if ('config' in parsed_arg and parsed_arg.config is None and
+            ((Path.cwd() / constants.DEFAULT_CONFIG).is_file() or
+             not ('command' in parsed_arg and parsed_arg.command in NO_CONF_REQURIED))):
             parsed_arg.config = [constants.DEFAULT_CONFIG]
 
         return parsed_arg
@@ -97,15 +98,18 @@ class Arguments:
         self._build_args(optionlist=ARGS_COMMON, parser=group)
 
         # Build main command
-        self.parser = argparse.ArgumentParser(description='Free, open source crypto trading bot',
-                                              parents=[_common_parser])
+        self.parser = argparse.ArgumentParser(description='Free, open source crypto trading bot')
 
         from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge
         from freqtrade.utils import (start_create_userdir, start_download_data,
                                      start_list_exchanges, start_trading)
         from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit
 
-        subparsers = self.parser.add_subparsers(dest='command', required=True)
+        subparsers = self.parser.add_subparsers(dest='command',
+                                                # Use custom message when no subhandler is added
+                                                # shown from `main.py`
+                                                # required=True
+                                                )
 
         # Add trade subcommand
         trade_cmd = subparsers.add_parser('trade', help='Trade module.',
diff --git a/freqtrade/main.py b/freqtrade/main.py
index 543aab169..d984ff487 100755
--- a/freqtrade/main.py
+++ b/freqtrade/main.py
@@ -35,6 +35,13 @@ def main(sysargv: List[str] = None) -> None:
         # Call subcommand.
         if 'func' in args:
             return_code = args['func'](args)
+        else:
+            # No subcommand was issued.
+            raise OperationalException(
+                "Usage of freqtrade requires a subcommand.\n"
+                "To use the previous behaviour, run freqtrade with `freqtrade trade [...]`.\n"
+                "To see a full list of options, please use `freqtrade --help`"
+                )
 
     except SystemExit as e:
         return_code = e

From 09f18d07b06ac4e7d08a902ea2e84e9dc91f31fe Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Mon, 16 Sep 2019 06:44:07 +0200
Subject: [PATCH 0565/3421] Adjust some hyperopt tests

---
 tests/optimize/test_hyperopt.py | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index c9a112422..8a8e31df3 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -68,8 +68,8 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca
     patched_configuration_load_config_file(mocker, default_conf)
 
     args = [
+        'hyperopt',
         '--config', 'config.json',
-        'hyperopt'
     ]
 
     config = setup_configuration(get_args(args), RunMode.HYPEROPT)
@@ -99,9 +99,9 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo
     )
 
     args = [
+        'hyperopt',
         '--config', 'config.json',
         '--datadir', '/foo/bar',
-        'hyperopt',
         '--ticker-interval', '1m',
         '--timerange', ':100',
         '--enable-position-stacking',
@@ -215,8 +215,8 @@ def test_start(mocker, default_conf, caplog) -> None:
     patch_exchange(mocker)
 
     args = [
-        '--config', 'config.json',
         'hyperopt',
+        '--config', 'config.json',
         '--epochs', '5'
     ]
     args = get_args(args)
@@ -237,8 +237,8 @@ def test_start_no_data(mocker, default_conf, caplog) -> None:
     patch_exchange(mocker)
 
     args = [
-        '--config', 'config.json',
         'hyperopt',
+        '--config', 'config.json',
         '--epochs', '5'
     ]
     args = get_args(args)
@@ -254,8 +254,8 @@ def test_start_filelock(mocker, default_conf, caplog) -> None:
     patch_exchange(mocker)
 
     args = [
-        '--config', 'config.json',
         'hyperopt',
+        '--config', 'config.json',
         '--epochs', '5'
     ]
     args = get_args(args)

From 67b82638dbda9d879987f2012c2d1847c7364c61 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Mon, 16 Sep 2019 06:44:20 +0200
Subject: [PATCH 0566/3421] Move test without command to test_main

---
 tests/test_arguments.py | 11 ++---------
 tests/test_main.py      |  8 +++++++-
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/tests/test_arguments.py b/tests/test_arguments.py
index 8ea55dd6a..8cd24fe55 100644
--- a/tests/test_arguments.py
+++ b/tests/test_arguments.py
@@ -4,19 +4,12 @@ import re
 
 import pytest
 
+from freqtrade import OperationalException
 from freqtrade.configuration import Arguments
 from freqtrade.configuration.cli_options import check_int_positive
 
 
 # Parse common command-line-arguments. Used for all tools
-def test_parse_args_error(capsys) -> None:
-    arguments = Arguments([])
-    with pytest.raises(SystemExit):
-        arguments.get_parsed_arg()
-    captured = capsys.readouterr()
-    assert re.search(r".*the following arguments are required.*", captured.err)
-
-
 def test_parse_args_none() -> None:
     arguments = Arguments(['trade'])
     assert isinstance(arguments, Arguments)
@@ -157,8 +150,8 @@ def test_download_data_options() -> None:
 
 def test_plot_dataframe_options() -> None:
     args = [
-        '-c', 'config.json.example',
         'plot-dataframe',
+        '-c', 'config.json.example',
         '--indicators1', 'sma10', 'sma100',
         '--indicators2', 'macd', 'fastd', 'fastk',
         '--plot-limit', '30',
diff --git a/tests/test_main.py b/tests/test_main.py
index c5e1c8901..dac960886 100644
--- a/tests/test_main.py
+++ b/tests/test_main.py
@@ -11,10 +11,16 @@ from freqtrade.freqtradebot import FreqtradeBot
 from freqtrade.main import main
 from freqtrade.state import State
 from freqtrade.worker import Worker
-from tests.conftest import (log_has, patch_exchange,
+from tests.conftest import (log_has, log_has_re, patch_exchange,
                             patched_configuration_load_config_file)
 
 
+def test_parse_args_None(caplog) -> None:
+    with pytest.raises(SystemExit):
+        main([])
+    assert log_has_re(r"Usage of freqtrade requires a subcommand\.", caplog)
+
+
 def test_parse_args_backtesting(mocker) -> None:
     """
     Test that main() can start backtesting and also ensure we can pass some specific arguments

From 014881e5504ad7b7ca02aa262e007ed23affc22c Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Mon, 16 Sep 2019 06:44:39 +0200
Subject: [PATCH 0567/3421] Allow query version without subcommand

---
 freqtrade/configuration/arguments.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index 4fa493eea..fecf1da07 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -99,6 +99,7 @@ class Arguments:
 
         # Build main command
         self.parser = argparse.ArgumentParser(description='Free, open source crypto trading bot')
+        self._build_args(optionlist=['version'], parser=self.parser)
 
         from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge
         from freqtrade.utils import (start_create_userdir, start_download_data,

From 0d13e2cb2eabac2011b156d7a6c454c7defde9f7 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Mon, 16 Sep 2019 11:34:44 +0200
Subject: [PATCH 0568/3421] Update travis to run new methods

---
 .travis.yml             | 4 ++--
 freqtrade/utils.py      | 2 +-
 tests/test_arguments.py | 2 --
 3 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 405228ab8..81c3de2fb 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -28,11 +28,11 @@ jobs:
       name: pytest
     - script:
       - cp config.json.example config.json
-      - freqtrade --datadir tests/testdata backtesting
+      - freqtrade backtesting --datadir tests/testdata
       name: backtest
     - script:
       - cp config.json.example config.json
-      - freqtrade --datadir tests/testdata hyperopt -e 5
+      - freqtrade hyperopt --datadir tests/testdata -e 5
       name: hyperopt
     - script: flake8
       name: flake8
diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index de167671f..6b2b5314b 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -58,7 +58,7 @@ def start_list_exchanges(args: Dict[str, Any]) -> None:
               f"{', '.join(available_exchanges())}")
 
 
-def start_create_userdir(args: Dict[str, Any]) -> int:
+def start_create_userdir(args: Dict[str, Any]) -> None:
     """
     Create "user_data" directory to contain user data strategies, hyperopts, ...)
     :param args: Cli args from Arguments()
diff --git a/tests/test_arguments.py b/tests/test_arguments.py
index 8cd24fe55..4e01732b3 100644
--- a/tests/test_arguments.py
+++ b/tests/test_arguments.py
@@ -1,10 +1,8 @@
 # pragma pylint: disable=missing-docstring, C0103
 import argparse
-import re
 
 import pytest
 
-from freqtrade import OperationalException
 from freqtrade.configuration import Arguments
 from freqtrade.configuration.cli_options import check_int_positive
 

From 52523bcd8bd9cd6c5b4a02730bb6d8ca50904793 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 29 Sep 2019 16:25:25 +0200
Subject: [PATCH 0569/3421] Use strategy child parser

---
 freqtrade/configuration/arguments.py | 29 +++++++++++++++-------------
 tests/optimize/test_hyperopt.py      |  2 +-
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index fecf1da07..d2e5d1fc5 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -12,10 +12,9 @@ ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir", "user_dat
 
 ARGS_STRATEGY = ["strategy", "strategy_path"]
 
-ARGS_MAIN = ARGS_STRATEGY + ["db_url", "sd_notify"]
+ARGS_TRADE = ["db_url", "sd_notify"]
 
-ARGS_COMMON_OPTIMIZE = ARGS_STRATEGY + ["ticker_interval", "timerange",
-                                        "max_open_trades", "stake_amount"]
+ARGS_COMMON_OPTIMIZE = ["ticker_interval", "timerange", "max_open_trades", "stake_amount"]
 
 ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + ["position_stacking", "use_max_market_positions",
                                         "strategy_list", "export", "exportfilename"]
@@ -35,8 +34,9 @@ ARGS_CREATE_USERDIR = ["user_data_dir"]
 
 ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "exchange", "timeframes", "erase"]
 
-ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url",
-                       "trade_source", "export", "exportfilename", "timerange", "ticker_interval"]
+ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit",
+                       "db_url", "trade_source", "export", "exportfilename",
+                       "timerange", "ticker_interval"]
 
 ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url",
                     "trade_source", "ticker_interval"]
@@ -94,9 +94,13 @@ class Arguments:
         """
         # Build shared arguments (as group Common Options)
         _common_parser = argparse.ArgumentParser(add_help=False)
-        group = _common_parser.add_argument_group("Common Options")
+        group = _common_parser.add_argument_group("Common arguments")
         self._build_args(optionlist=ARGS_COMMON, parser=group)
 
+        _strategy_parser = argparse.ArgumentParser(add_help=False)
+        strategy_group = _common_parser.add_argument_group("Strategy arguments")
+        self._build_args(optionlist=ARGS_STRATEGY, parser=strategy_group)
+
         # Build main command
         self.parser = argparse.ArgumentParser(description='Free, open source crypto trading bot')
         self._build_args(optionlist=['version'], parser=self.parser)
@@ -114,25 +118,25 @@ class Arguments:
 
         # Add trade subcommand
         trade_cmd = subparsers.add_parser('trade', help='Trade module.',
-                                          parents=[_common_parser])
+                                          parents=[_common_parser, _strategy_parser])
         trade_cmd.set_defaults(func=start_trading)
-        self._build_args(optionlist=ARGS_MAIN, parser=trade_cmd)
+        self._build_args(optionlist=ARGS_TRADE, parser=trade_cmd)
 
         # Add backtesting subcommand
         backtesting_cmd = subparsers.add_parser('backtesting', help='Backtesting module.',
-                                                parents=[_common_parser])
+                                                parents=[_common_parser, _strategy_parser])
         backtesting_cmd.set_defaults(func=start_backtesting)
         self._build_args(optionlist=ARGS_BACKTEST, parser=backtesting_cmd)
 
         # Add edge subcommand
         edge_cmd = subparsers.add_parser('edge', help='Edge module.',
-                                         parents=[_common_parser])
+                                         parents=[_common_parser, _strategy_parser])
         edge_cmd.set_defaults(func=start_edge)
         self._build_args(optionlist=ARGS_EDGE, parser=edge_cmd)
 
         # Add hyperopt subcommand
         hyperopt_cmd = subparsers.add_parser('hyperopt', help='Hyperopt module.',
-                                             parents=[_common_parser],
+                                             parents=[_common_parser, _strategy_parser],
                                              )
         hyperopt_cmd.set_defaults(func=start_hyperopt)
         self._build_args(optionlist=ARGS_HYPEROPT, parser=hyperopt_cmd)
@@ -140,7 +144,6 @@ class Arguments:
         # add create-userdir subcommand
         create_userdir_cmd = subparsers.add_parser('create-userdir',
                                                    help="Create user-data directory.",
-
                                                    )
         create_userdir_cmd.set_defaults(func=start_create_userdir)
         self._build_args(optionlist=ARGS_CREATE_USERDIR, parser=create_userdir_cmd)
@@ -164,7 +167,7 @@ class Arguments:
         # Add Plotting subcommand
         plot_dataframe_cmd = subparsers.add_parser('plot-dataframe',
                                                    help='Plot candles with indicators.',
-                                                   parents=[_common_parser],
+                                                   parents=[_common_parser, _strategy_parser],
                                                    )
         plot_dataframe_cmd.set_defaults(func=start_plot_dataframe)
         self._build_args(optionlist=ARGS_PLOT_DATAFRAME, parser=plot_dataframe_cmd)
diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index 8a8e31df3..5ff11d5ea 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -198,8 +198,8 @@ def test_start_not_installed(mocker, default_conf, caplog, import_fails) -> None
     patch_exchange(mocker)
 
     args = [
-        '--config', 'config.json',
         'hyperopt',
+        '--config', 'config.json',
         '--epochs', '5'
     ]
     args = get_args(args)

From 381b0d3d07f127ac4f1a27b31ccf997947dba103 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 29 Sep 2019 16:28:14 +0200
Subject: [PATCH 0570/3421] Fix typo with new parser

---
 freqtrade/configuration/arguments.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index d2e5d1fc5..a8d4b48f1 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -98,7 +98,7 @@ class Arguments:
         self._build_args(optionlist=ARGS_COMMON, parser=group)
 
         _strategy_parser = argparse.ArgumentParser(add_help=False)
-        strategy_group = _common_parser.add_argument_group("Strategy arguments")
+        strategy_group = _strategy_parser.add_argument_group("Strategy arguments")
         self._build_args(optionlist=ARGS_STRATEGY, parser=strategy_group)
 
         # Build main command

From 2710226326f71eaaaf07830f64b33b905c180224 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 29 Sep 2019 19:18:02 +0200
Subject: [PATCH 0571/3421] Update documentation to use subcommands

---
 docs/backtesting.md            |   2 +-
 docs/bot-usage.md              | 188 ++++++++++++++++++++++++---------
 docs/docker.md                 |   4 +-
 docs/edge.md                   |   2 +-
 docs/faq.md                    |   2 +-
 docs/plotting.md               |  59 +++++++++--
 docs/rest-api.md               |   2 +-
 docs/strategy-customization.md |   6 +-
 freqtrade.service              |   2 +-
 freqtrade.service.watchdog     |   2 +-
 10 files changed, 198 insertions(+), 71 deletions(-)

diff --git a/docs/backtesting.md b/docs/backtesting.md
index 75aba6c73..6383b1855 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -45,7 +45,7 @@ freqtrade backtesting --datadir user_data/data/bittrex-20180101
 #### With a (custom) strategy file
 
 ```bash
-freqtrade -s SampleStrategy backtesting
+freqtrade backtesting -s SampleStrategy
 ```
 
 Where `-s SampleStrategy` refers to the class name within the strategy file `sample_strategy.py` found in the `freqtrade/user_data/strategies` directory.
diff --git a/docs/bot-usage.md b/docs/bot-usage.md
index f44400e32..ee01780a0 100644
--- a/docs/bot-usage.md
+++ b/docs/bot-usage.md
@@ -5,27 +5,47 @@ This page explains the different parameters of the bot and how to run it.
 !!! Note
     If you've used `setup.sh`, don't forget to activate your virtual environment (`source .env/bin/activate`) before running freqtrade commands.
 
-
 ## Bot commands
 
 ```
-usage: freqtrade [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
-                 [--userdir PATH] [-s NAME] [--strategy-path PATH]
-                 [--db-url PATH] [--sd-notify]
-                 {backtesting,edge,hyperopt,create-userdir,list-exchanges} ...
+usage: freqtrade [-h] [-V]
+                 {trade,backtesting,edge,hyperopt,create-userdir,list-exchanges,download-data,plot-dataframe,plot-profit}
+                 ...
 
 Free, open source crypto trading bot
 
 positional arguments:
-  {backtesting,edge,hyperopt,create-userdir,list-exchanges}
+  {trade,backtesting,edge,hyperopt,create-userdir,list-exchanges,download-data,plot-dataframe,plot-profit}
+    trade               Trade module.
     backtesting         Backtesting module.
     edge                Edge module.
     hyperopt            Hyperopt module.
     create-userdir      Create user-data directory.
     list-exchanges      Print available exchanges.
+    download-data       Download backtesting data.
+    plot-dataframe      Plot candles with indicators.
+    plot-profit         Generate plot showing profits.
 
 optional arguments:
   -h, --help            show this help message and exit
+  -V, --version         show program's version number and exit
+```
+
+### Bot trading commands
+
+```
+usage: freqtrade trade [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
+                       [--userdir PATH] [-s NAME] [--strategy-path PATH]
+                       [--db-url PATH] [--sd-notify]
+
+optional arguments:
+  -h, --help            show this help message and exit
+  --db-url PATH         Override trades database URL, this is useful in custom
+                        deployments (default: `sqlite:///tradesv3.sqlite` for
+                        Live Run mode, `sqlite://` for Dry Run).
+  --sd-notify           Notify systemd service manager.
+
+Common arguments:
   -v, --verbose         Verbose mode (-vv for more, -vvv to get all messages).
   --logfile FILE        Log to the file specified.
   -V, --version         show program's version number and exit
@@ -37,14 +57,12 @@ optional arguments:
                         Path to directory with historical backtesting data.
   --userdir PATH, --user-data-dir PATH
                         Path to userdata directory.
+
+Strategy arguments:
   -s NAME, --strategy NAME
                         Specify strategy class name (default:
                         `DefaultStrategy`).
   --strategy-path PATH  Specify additional strategy lookup path.
-  --db-url PATH         Override trades database URL, this is useful in custom
-                        deployments (default: `sqlite:///tradesv3.sqlite` for
-                        Live Run mode, `sqlite://` for Dry Run).
-  --sd-notify           Notify systemd service manager.
 
 ```
 
@@ -128,7 +146,7 @@ In `user_data/strategies` you have a file `my_awesome_strategy.py` which has
 a strategy class called `AwesomeStrategy` to load it:
 
 ```bash
-freqtrade --strategy AwesomeStrategy
+freqtrade trade --strategy AwesomeStrategy
 ```
 
 If the bot does not find your strategy file, it will display in an error
@@ -143,7 +161,7 @@ This parameter allows you to add an additional strategy lookup path, which gets
 checked before the default locations (The passed path must be a directory!):
 
 ```bash
-freqtrade --strategy AwesomeStrategy --strategy-path /some/directory
+freqtrade trade --strategy AwesomeStrategy --strategy-path /some/directory
 ```
 
 #### How to install a strategy?
@@ -167,20 +185,22 @@ freqtrade -c config.json --db-url sqlite:///tradesv3.dry_run.sqlite
 Backtesting also uses the config specified via `-c/--config`.
 
 ```
-usage: freqtrade backtesting [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE]
-                           [--max_open_trades MAX_OPEN_TRADES]
-                           [--stake_amount STAKE_AMOUNT] [-r] [--eps] [--dmmp]
-                           [-l]
-                           [--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
-                           [--export EXPORT] [--export-filename PATH]
+usage: freqtrade backtesting [-h] [-v] [--logfile FILE] [-V] [-c PATH]
+                             [-d PATH] [--userdir PATH] [-s NAME]
+                             [--strategy-path PATH] [-i TICKER_INTERVAL]
+                             [--timerange TIMERANGE] [--max_open_trades INT]
+                             [--stake_amount STAKE_AMOUNT] [--eps] [--dmmp]
+                             [--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
+                             [--export EXPORT] [--export-filename PATH]
 
 optional arguments:
   -h, --help            show this help message and exit
   -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
-                        Specify ticker interval (1m, 5m, 30m, 1h, 1d).
+                        Specify ticker interval (`1m`, `5m`, `30m`, `1h`,
+                        `1d`).
   --timerange TIMERANGE
                         Specify what timerange of data to use.
-  --max_open_trades MAX_OPEN_TRADES
+  --max_open_trades INT
                         Specify max_open_trades to use.
   --stake_amount STAKE_AMOUNT
                         Specify stake_amount.
@@ -193,26 +213,47 @@ optional arguments:
                         number).
   --strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
                         Provide a space-separated list of strategies to
-                        backtest Please note that ticker-interval needs to be
+                        backtest. Please note that ticker-interval needs to be
                         set either in config or via command line. When using
-                        this together with --export trades, the strategy-name
-                        is injected into the filename (so backtest-data.json
-                        becomes backtest-data-DefaultStrategy.json
-  --export EXPORT       Export backtest results, argument are: trades. Example
-                        --export=trades
+                        this together with `--export trades`, the strategy-
+                        name is injected into the filename (so `backtest-
+                        data.json` becomes `backtest-data-
+                        DefaultStrategy.json`
+  --export EXPORT       Export backtest results, argument are: trades.
+                        Example: `--export=trades`
   --export-filename PATH
-                        Save backtest results to this filename requires
-                        --export to be set as well Example --export-
-                        filename=user_data/backtest_results/backtest_today.json
-                        (default: user_data/backtest_results/backtest-
-                        result.json)
+                        Save backtest results to the file with this filename
+                        (default: `user_data/backtest_results/backtest-
+                        result.json`). Requires `--export` to be set as well.
+                        Example: `--export-filename=user_data/backtest_results
+                        /backtest_today.json`
+
+Common arguments:
+  -v, --verbose         Verbose mode (-vv for more, -vvv to get all messages).
+  --logfile FILE        Log to the file specified.
+  -V, --version         show program's version number and exit
+  -c PATH, --config PATH
+                        Specify configuration file (default: `config.json`).
+                        Multiple --config options may be used. Can be set to
+                        `-` to read config from stdin.
+  -d PATH, --datadir PATH
+                        Path to directory with historical backtesting data.
+  --userdir PATH, --user-data-dir PATH
+                        Path to userdata directory.
+
+Strategy arguments:
+  -s NAME, --strategy NAME
+                        Specify strategy class name (default:
+                        `DefaultStrategy`).
+  --strategy-path PATH  Specify additional strategy lookup path.
+
 ```
 
 ### Getting historic data for backtesting
 
 The first time your run Backtesting, you will need to download some historic data first.
 This can be accomplished by using `freqtrade download-data`.  
-Check the corresponding [help page section](backtesting.md#Getting-data-for-backtesting-and-hyperopt) for more details
+Check the corresponding [Data Downloading](data-download.md) section for more details
 
 ## Hyperopt commands
 
@@ -220,15 +261,17 @@ To optimize your strategy, you can use hyperopt parameter hyperoptimization
 to find optimal parameter values for your stategy.
 
 ```
-usage: freqtrade hyperopt [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE]
+usage: freqtrade hyperopt [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
+                          [--userdir PATH] [-s NAME] [--strategy-path PATH]
+                          [-i TICKER_INTERVAL] [--timerange TIMERANGE]
                           [--max_open_trades INT]
-                          [--stake_amount STAKE_AMOUNT] [-r]
+                          [--stake_amount STAKE_AMOUNT]
                           [--customhyperopt NAME] [--hyperopt-path PATH]
                           [--eps] [-e INT]
-                          [-s {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...]]
-                          [--dmmp] [--print-all] [--no-color] [-j JOBS]
-                          [--random-state INT] [--min-trades INT] [--continue]
-                          [--hyperopt-loss NAME]
+                          [--spaces {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...]]
+                          [--dmmp] [--print-all] [--no-color] [--print-json]
+                          [-j JOBS] [--random-state INT] [--min-trades INT]
+                          [--continue] [--hyperopt-loss NAME]
 
 optional arguments:
   -h, --help            show this help message and exit
@@ -250,7 +293,7 @@ optional arguments:
                         Allow buying the same pair multiple times (position
                         stacking).
   -e INT, --epochs INT  Specify number of epochs (default: 100).
-  -s {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...], --spaces {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...]
+  --spaces {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...]
                         Specify which parameters to hyperopt. Space-separated
                         list. Default: `all`.
   --dmmp, --disable-max-market-positions
@@ -260,6 +303,7 @@ optional arguments:
   --print-all           Print all results, not only the best ones.
   --no-color            Disable colorization of hyperopt results. May be
                         useful if you are redirecting output to a file.
+  --print-json          Print best result detailization in JSON format.
   -j JOBS, --job-workers JOBS
                         The number of concurrently running jobs for
                         hyperoptimization (hyperopt worker processes). If -1
@@ -278,8 +322,28 @@ optional arguments:
                         generate completely different results, since the
                         target for optimization is different. Built-in
                         Hyperopt-loss-functions are: DefaultHyperOptLoss,
-                        OnlyProfitHyperOptLoss, SharpeHyperOptLoss.
-                        (default: `DefaultHyperOptLoss`).
+                        OnlyProfitHyperOptLoss, SharpeHyperOptLoss.(default:
+                        `DefaultHyperOptLoss`).
+
+Common arguments:
+  -v, --verbose         Verbose mode (-vv for more, -vvv to get all messages).
+  --logfile FILE        Log to the file specified.
+  -V, --version         show program's version number and exit
+  -c PATH, --config PATH
+                        Specify configuration file (default: `config.json`).
+                        Multiple --config options may be used. Can be set to
+                        `-` to read config from stdin.
+  -d PATH, --datadir PATH
+                        Path to directory with historical backtesting data.
+  --userdir PATH, --user-data-dir PATH
+                        Path to userdata directory.
+
+Strategy arguments:
+  -s NAME, --strategy NAME
+                        Specify strategy class name (default:
+                        `DefaultStrategy`).
+  --strategy-path PATH  Specify additional strategy lookup path.
+
 ```
 
 ## Edge commands
@@ -287,26 +351,48 @@ optional arguments:
 To know your trade expectancy and winrate against historical data, you can use Edge.
 
 ```
-usage: freqtrade edge [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE]
-                    [--max_open_trades MAX_OPEN_TRADES]
-                    [--stake_amount STAKE_AMOUNT] [-r]
-                    [--stoplosses STOPLOSS_RANGE]
+usage: freqtrade edge [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
+                      [--userdir PATH] [-s NAME] [--strategy-path PATH]
+                      [-i TICKER_INTERVAL] [--timerange TIMERANGE]
+                      [--max_open_trades INT] [--stake_amount STAKE_AMOUNT]
+                      [--stoplosses STOPLOSS_RANGE]
 
 optional arguments:
   -h, --help            show this help message and exit
   -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
-                        Specify ticker interval (1m, 5m, 30m, 1h, 1d).
+                        Specify ticker interval (`1m`, `5m`, `30m`, `1h`,
+                        `1d`).
   --timerange TIMERANGE
                         Specify what timerange of data to use.
-  --max_open_trades MAX_OPEN_TRADES
+  --max_open_trades INT
                         Specify max_open_trades to use.
   --stake_amount STAKE_AMOUNT
                         Specify stake_amount.
   --stoplosses STOPLOSS_RANGE
-                        Defines a range of stoploss against which edge will
-                        assess the strategy the format is "min,max,step"
-                        (without any space).example:
-                        --stoplosses=-0.01,-0.1,-0.001
+                        Defines a range of stoploss values against which edge
+                        will assess the strategy. The format is "min,max,step"
+                        (without any space). Example:
+                        `--stoplosses=-0.01,-0.1,-0.001`
+
+Common arguments:
+  -v, --verbose         Verbose mode (-vv for more, -vvv to get all messages).
+  --logfile FILE        Log to the file specified.
+  -V, --version         show program's version number and exit
+  -c PATH, --config PATH
+                        Specify configuration file (default: `config.json`).
+                        Multiple --config options may be used. Can be set to
+                        `-` to read config from stdin.
+  -d PATH, --datadir PATH
+                        Path to directory with historical backtesting data.
+  --userdir PATH, --user-data-dir PATH
+                        Path to userdata directory.
+
+Strategy arguments:
+  -s NAME, --strategy NAME
+                        Specify strategy class name (default:
+                        `DefaultStrategy`).
+  --strategy-path PATH  Specify additional strategy lookup path.
+
 ```
 
 To understand edge and how to read the results, please read the [edge documentation](edge.md).
diff --git a/docs/docker.md b/docs/docker.md
index 923dec1e2..7fc8d2ba4 100644
--- a/docs/docker.md
+++ b/docs/docker.md
@@ -160,7 +160,7 @@ docker run -d \
   -v ~/.freqtrade/config.json:/freqtrade/config.json \
   -v ~/.freqtrade/user_data/:/freqtrade/user_data \
   -v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \
-  freqtrade --db-url sqlite:///tradesv3.sqlite --strategy MyAwesomeStrategy
+  freqtrade trade --db-url sqlite:///tradesv3.sqlite --strategy MyAwesomeStrategy
 ```
 
 !!! Note
@@ -199,7 +199,7 @@ docker run -d \
   -v ~/.freqtrade/config.json:/freqtrade/config.json \
   -v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \
   -v ~/.freqtrade/user_data/:/freqtrade/user_data/ \
-  freqtrade --strategy AwsomelyProfitableStrategy backtesting
+  freqtrade backtesting --strategy AwsomelyProfitableStrategy
 ```
 
 Head over to the [Backtesting Documentation](backtesting.md) for more details.
diff --git a/docs/edge.md b/docs/edge.md
index d91522770..80db7b91e 100644
--- a/docs/edge.md
+++ b/docs/edge.md
@@ -235,7 +235,7 @@ An example of its output:
 ### Update cached pairs with the latest data
 
 Edge requires historic data the same way as backtesting does.
-Please refer to the [download section](backtesting.md#Getting-data-for-backtesting-and-hyperopt) of the documentation for details.
+Please refer to the [Data Downloading](data-download.md) section of the documentation for details.
 
 ### Precising stoploss range
 
diff --git a/docs/faq.md b/docs/faq.md
index a441ffacd..c519f8cc3 100644
--- a/docs/faq.md
+++ b/docs/faq.md
@@ -4,7 +4,7 @@
 
 ### The bot does not start
 
-Running the bot with `freqtrade --config config.json` does show the output `freqtrade: command not found`.
+Running the bot with `freqtrade trade --config config.json` does show the output `freqtrade: command not found`.
 
 This could have the following reasons:
 
diff --git a/docs/plotting.md b/docs/plotting.md
index 4deb6db12..25278c99d 100644
--- a/docs/plotting.md
+++ b/docs/plotting.md
@@ -23,13 +23,15 @@ The `freqtrade plot-dataframe` subcommand shows an interactive graph with three
 Possible arguments:
 
 ```
-usage: freqtrade plot-dataframe [-h] [-p PAIRS [PAIRS ...]]
+usage: freqtrade plot-dataframe [-h] [-v] [--logfile FILE] [-V] [-c PATH]
+                                [-d PATH] [--userdir PATH] [-s NAME]
+                                [--strategy-path PATH] [-p PAIRS [PAIRS ...]]
                                 [--indicators1 INDICATORS1 [INDICATORS1 ...]]
                                 [--indicators2 INDICATORS2 [INDICATORS2 ...]]
                                 [--plot-limit INT] [--db-url PATH]
                                 [--trade-source {DB,file}] [--export EXPORT]
                                 [--export-filename PATH]
-                                [--timerange TIMERANGE]
+                                [--timerange TIMERANGE] [-i TICKER_INTERVAL]
 
 optional arguments:
   -h, --help            show this help message and exit
@@ -62,6 +64,28 @@ optional arguments:
                         /backtest_today.json`
   --timerange TIMERANGE
                         Specify what timerange of data to use.
+  -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
+                        Specify ticker interval (`1m`, `5m`, `30m`, `1h`,
+                        `1d`).
+
+Common arguments:
+  -v, --verbose         Verbose mode (-vv for more, -vvv to get all messages).
+  --logfile FILE        Log to the file specified.
+  -V, --version         show program's version number and exit
+  -c PATH, --config PATH
+                        Specify configuration file (default: `config.json`).
+                        Multiple --config options may be used. Can be set to
+                        `-` to read config from stdin.
+  -d PATH, --datadir PATH
+                        Path to directory with historical backtesting data.
+  --userdir PATH, --user-data-dir PATH
+                        Path to userdata directory.
+
+Strategy arguments:
+  -s NAME, --strategy NAME
+                        Specify strategy class name (default:
+                        `DefaultStrategy`).
+  --strategy-path PATH  Specify additional strategy lookup path.
 
 ```
 
@@ -83,7 +107,7 @@ Use `--indicators1` for the main plot and `--indicators2` for the subplot below
     You will almost certainly want to specify a custom strategy! This can be done by adding `-s Classname` / `--strategy ClassName` to the command.
 
 ``` bash
-freqtrade --strategy AwesomeStrategy plot-dataframe -p BTC/ETH --indicators1 sma ema --indicators2 macd
+freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH --indicators1 sma ema --indicators2 macd
 ```
 
 ### Further usage examples
@@ -91,25 +115,25 @@ freqtrade --strategy AwesomeStrategy plot-dataframe -p BTC/ETH --indicators1 sma
 To plot multiple pairs, separate them with a space:
 
 ``` bash
-freqtrade --strategy AwesomeStrategy plot-dataframe -p BTC/ETH XRP/ETH
+freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH XRP/ETH
 ```
 
 To plot a timerange (to zoom in)
 
 ``` bash
-freqtrade --strategy AwesomeStrategy plot-dataframe -p BTC/ETH --timerange=20180801-20180805
+freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH --timerange=20180801-20180805
 ```
 
 To plot trades stored in a database use `--db-url` in combination with `--trade-source DB`:
 
 ``` bash
-freqtrade --strategy AwesomeStrategy plot-dataframe --db-url sqlite:///tradesv3.dry_run.sqlite -p BTC/ETH --trade-source DB
+freqtrade plot-dataframe --strategy AwesomeStrategy --db-url sqlite:///tradesv3.dry_run.sqlite -p BTC/ETH --trade-source DB
 ```
 
 To plot trades from a backtesting result, use `--export-filename `
 
 ``` bash
-freqtrade --strategy AwesomeStrategy plot-dataframe --export-filename user_data/backtest_results/backtest-result.json -p BTC/ETH
+freqtrade plot-dataframe --strategy AwesomeStrategy --export-filename user_data/backtest_results/backtest-result.json -p BTC/ETH
 ```
 
 ## Plot profit
@@ -133,10 +157,11 @@ The third graph can be useful to spot outliers, events in pairs that cause profi
 Possible options for the `freqtrade plot-profit` subcommand:
 
 ```
-usage: freqtrade plot-profit [-h] [-p PAIRS [PAIRS ...]]
+usage: freqtrade plot-profit [-h] [-v] [--logfile FILE] [-V] [-c PATH]
+                             [-d PATH] [--userdir PATH] [-p PAIRS [PAIRS ...]]
                              [--timerange TIMERANGE] [--export EXPORT]
                              [--export-filename PATH] [--db-url PATH]
-                             [--trade-source {DB,file}]
+                             [--trade-source {DB,file}] [-i TICKER_INTERVAL]
 
 optional arguments:
   -h, --help            show this help message and exit
@@ -159,6 +184,22 @@ optional arguments:
   --trade-source {DB,file}
                         Specify the source for trades (Can be DB or file
                         (backtest file)) Default: file
+  -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
+                        Specify ticker interval (`1m`, `5m`, `30m`, `1h`,
+                        `1d`).
+
+Common arguments:
+  -v, --verbose         Verbose mode (-vv for more, -vvv to get all messages).
+  --logfile FILE        Log to the file specified.
+  -V, --version         show program's version number and exit
+  -c PATH, --config PATH
+                        Specify configuration file (default: `config.json`).
+                        Multiple --config options may be used. Can be set to
+                        `-` to read config from stdin.
+  -d PATH, --datadir PATH
+                        Path to directory with historical backtesting data.
+  --userdir PATH, --user-data-dir PATH
+                        Path to userdata directory.
 
 ```
 
diff --git a/docs/rest-api.md b/docs/rest-api.md
index afecc1d80..5295ebab4 100644
--- a/docs/rest-api.md
+++ b/docs/rest-api.md
@@ -58,7 +58,7 @@ docker run -d \
   -v ~/.freqtrade/user_data/:/freqtrade/user_data \
   -v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \
   -p 127.0.0.1:8080:8080 \
-  freqtrade --db-url sqlite:///tradesv3.sqlite --strategy MyAwesomeStrategy
+  freqtrade trade --db-url sqlite:///tradesv3.sqlite --strategy MyAwesomeStrategy
 ```
 
 !!! Danger "Security warning"
diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md
index b927e5aad..bb7138759 100644
--- a/docs/strategy-customization.md
+++ b/docs/strategy-customization.md
@@ -13,7 +13,7 @@ Let assume you have a class called `AwesomeStrategy` in the file `awesome-strate
 2. Start the bot with the param `--strategy AwesomeStrategy` (the parameter is the class name)
 
 ```bash
-freqtrade --strategy AwesomeStrategy
+freqtrade trade --strategy AwesomeStrategy
 ```
 
 ## Change your strategy
@@ -45,7 +45,7 @@ The current version is 2 - which is also the default when it's not set explicitl
 Future versions will require this to be set.
 
 ```bash
-freqtrade --strategy AwesomeStrategy
+freqtrade trade --strategy AwesomeStrategy
 ```
 
 **For the following section we will use the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/sample_strategy.py)
@@ -402,7 +402,7 @@ The default buy strategy is located in the file
 If you want to use a strategy from a different directory you can pass `--strategy-path`
 
 ```bash
-freqtrade --strategy AwesomeStrategy --strategy-path /some/directory
+freqtrade trade --strategy AwesomeStrategy --strategy-path /some/directory
 ```
 
 ### Further strategy ideas
diff --git a/freqtrade.service b/freqtrade.service
index 9de9f13c7..df220ed39 100644
--- a/freqtrade.service
+++ b/freqtrade.service
@@ -6,7 +6,7 @@ After=network.target
 # Set WorkingDirectory and ExecStart to your file paths accordingly
 # NOTE: %h will be resolved to /home/
 WorkingDirectory=%h/freqtrade
-ExecStart=/usr/bin/freqtrade
+ExecStart=/usr/bin/freqtrade trade
 Restart=on-failure
 
 [Install]
diff --git a/freqtrade.service.watchdog b/freqtrade.service.watchdog
index ba491fa53..66ea00d76 100644
--- a/freqtrade.service.watchdog
+++ b/freqtrade.service.watchdog
@@ -6,7 +6,7 @@ After=network.target
 # Set WorkingDirectory and ExecStart to your file paths accordingly
 # NOTE: %h will be resolved to /home/
 WorkingDirectory=%h/freqtrade
-ExecStart=/usr/bin/freqtrade --sd-notify
+ExecStart=/usr/bin/freqtrade trade --sd-notify
 
 Restart=always
 #Restart=on-failure

From 344a0a094fcaef785d4d58bee58b654561d468dd Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 29 Sep 2019 19:21:18 +0200
Subject: [PATCH 0572/3421] Update remaining documentations

---
 docs/bot-usage.md    | 8 ++++----
 docs/hyperopt.md     | 2 +-
 docs/installation.md | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/docs/bot-usage.md b/docs/bot-usage.md
index ee01780a0..112fc78a1 100644
--- a/docs/bot-usage.md
+++ b/docs/bot-usage.md
@@ -72,7 +72,7 @@ The bot allows you to select which configuration file you want to use by means o
 the `-c/--config` command line option:
 
 ```bash
-freqtrade -c path/far/far/away/config.json
+freqtrade trade -c path/far/far/away/config.json
 ```
 
 Per default, the bot loads the `config.json` configuration file from the current
@@ -91,13 +91,13 @@ empty key and secrete values while running in the Dry Mode (which does not actua
 require them):
 
 ```bash
-freqtrade -c ./config.json
+freqtrade trade -c ./config.json
 ```
 
 and specify both configuration files when running in the normal Live Trade Mode:
 
 ```bash
-freqtrade -c ./config.json -c path/to/secrets/keys.config.json
+freqtrade trade -c ./config.json -c path/to/secrets/keys.config.json
 ```
 
 This could help you hide your private Exchange key and Exchange secrete on you local machine
@@ -177,7 +177,7 @@ using `--db-url`. This can also be used to specify a custom database
 in production mode. Example command:
 
 ```bash
-freqtrade -c config.json --db-url sqlite:///tradesv3.dry_run.sqlite
+freqtrade trade -c config.json --db-url sqlite:///tradesv3.dry_run.sqlite
 ```
 
 ## Backtesting commands
diff --git a/docs/hyperopt.md b/docs/hyperopt.md
index 1ca371e3d..e6f753072 100644
--- a/docs/hyperopt.md
+++ b/docs/hyperopt.md
@@ -239,7 +239,7 @@ Because hyperopt tries a lot of combinations to find the best parameters it will
 We strongly recommend to use `screen` or `tmux` to prevent any connection loss.
 
 ```bash
-freqtrade -c config.json hyperopt --customhyperopt  -e 5000 --spaces all
+freqtrade hyperopt --config config.json --customhyperopt  -e 5000 --spaces all
 ```
 
 Use  `` as the name of the custom hyperopt used.
diff --git a/docs/installation.md b/docs/installation.md
index 68348d4b0..3d0f27f2a 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -187,7 +187,7 @@ python3 -m pip install -e .
 If this is the first time you run the bot, ensure you are running it in Dry-run `"dry_run": true,` otherwise it will start to buy and sell coins.
 
 ```bash
-freqtrade -c config.json
+freqtrade trade -c config.json
 ```
 
 *Note*: If you run the bot on a server, you should consider using [Docker](docker.md) or a terminal multiplexer like `screen` or [`tmux`](https://en.wikipedia.org/wiki/Tmux) to avoid that the bot is stopped on logout.

From 52ff391c8a8eab054287683f82f2beae18703ae6 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 29 Sep 2019 19:48:37 +0200
Subject: [PATCH 0573/3421] Default dockerfile to "freqtrade trade"

---
 Dockerfile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Dockerfile b/Dockerfile
index 8677b54de..5b69f55a2 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -24,3 +24,5 @@ RUN pip install numpy --no-cache-dir \
 COPY . /freqtrade/
 RUN pip install -e . --no-cache-dir
 ENTRYPOINT ["freqtrade"]
+# Default to trade mode
+CMD [ "trade" ]

From 75446d8195b58b2b4180a65d81f7452868a698c1 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Sun, 29 Sep 2019 23:08:11 +0300
Subject: [PATCH 0574/3421] Refactor list-timeframes command with the use of
 the Exchange class methods

---
 freqtrade/exchange/exchange.py  | 18 ++++++++++--------
 freqtrade/utils.py              | 17 ++++++-----------
 tests/exchange/test_exchange.py |  3 ++-
 3 files changed, 18 insertions(+), 20 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index e2819bb59..6d68cef87 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -133,6 +133,9 @@ class Exchange:
 
         logger.info('Using Exchange "%s"', self.name)
 
+        # Check if timeframe is available
+        self.validate_timeframes(config.get('ticker_interval'))
+
         # Converts the interval provided in minutes in config to seconds
         self.markets_refresh_interval: int = exchange_config.get(
             "markets_refresh_interval", 60) * 60
@@ -144,10 +147,6 @@ class Exchange:
         self.validate_ordertypes(config.get('order_types', {}))
         self.validate_order_time_in_force(config.get('order_time_in_force', {}))
 
-        if config.get('ticker_interval'):
-            # Check if timeframe is available
-            self.validate_timeframes(config['ticker_interval'])
-
     def __del__(self):
         """
         Destructor - clean up async stuff
@@ -199,6 +198,10 @@ class Exchange:
         """exchange ccxt id"""
         return self._api.id
 
+    @property
+    def timeframes(self) -> List[str]:
+        return list((self._api.timeframes or {}).keys())
+
     @property
     def markets(self) -> Dict:
         """exchange ccxt markets"""
@@ -291,7 +294,7 @@ class Exchange:
                 return pair
         raise DependencyException(f"Could not combine {curr_1} and {curr_2} to get a valid pair.")
 
-    def validate_timeframes(self, timeframe: List[str]) -> None:
+    def validate_timeframes(self, timeframe: Optional[str]) -> None:
         """
         Checks if ticker interval from config is a supported timeframe on the exchange
         """
@@ -304,10 +307,9 @@ class Exchange:
                 f"for the exchange \"{self.name}\" and this exchange "
                 f"is therefore not supported. ccxt fetchOHLCV: {self.exchange_has('fetchOHLCV')}")
 
-        timeframes = self._api.timeframes
-        if timeframe not in timeframes:
+        if timeframe and (timeframe not in self.timeframes):
             raise OperationalException(
-                f'Invalid ticker {timeframe}, this Exchange supports {timeframes}')
+                f"Invalid ticker interval '{timeframe}'. This exchange supports: {self.timeframes}")
 
     def validate_ordertypes(self, order_types: Dict) -> None:
         """
diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index 559fef0a5..1f297b7ac 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -104,19 +104,14 @@ def start_list_timeframes(args: Dict[str, Any]) -> None:
     Print ticker intervals (timeframes) available on Exchange
     """
     config = setup_utils_configuration(args, RunMode.OTHER)
+    # Do not use ticker_interval set in the config
+    config['ticker_interval'] = None
 
     # Init exchange
     exchange = ExchangeResolver(config['exchange']['name'], config).exchange
 
-    timeframes = list((exchange._api.timeframes or {}).keys())
-
-    if not timeframes:
-        logger.warning("List of timeframes available for exchange "
-                       f"`{config['exchange']['name']}` is empty. "
-                       "This exchange does not support fetching OHLCV data.")
+    if args['print_one_column']:
+        print('\n'.join(exchange.timeframes))
     else:
-        if args['print_one_column']:
-            print('\n'.join(timeframes))
-        else:
-            print(f"Timeframes available for the exchange `{config['exchange']['name']}`: "
-                  f"{', '.join(timeframes)}")
+        print(f"Timeframes available for the exchange `{config['exchange']['name']}`: "
+              f"{', '.join(exchange.timeframes)}")
diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index f8c556aeb..bf6025322 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -409,7 +409,8 @@ def test_validate_timeframes_failed(default_conf, mocker):
     mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock))
     mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={}))
     mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock())
-    with pytest.raises(OperationalException, match=r'Invalid ticker 3m, this Exchange supports.*'):
+    with pytest.raises(OperationalException,
+                       match=r"Invalid ticker interval '3m'. This exchange supports.*"):
         Exchange(default_conf)
 
 

From 272c977d088c8d670a0e24c23cabf392ee864a92 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Mon, 30 Sep 2019 03:55:55 +0300
Subject: [PATCH 0575/3421] Add exchanges to the list of bad exchanges

---
 freqtrade/exchange/exchange.py | 68 ++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index e2819bb59..dcc20acca 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -30,6 +30,74 @@ BAD_EXCHANGES = {
     "bitmex": "Various reasons",
     "bitstamp": "Does not provide history. "
                 "Details in https://github.com/freqtrade/freqtrade/issues/1983",
+    **dict.fromkeys([
+        'adara',
+        'anxpro',
+        'bigone',
+        'coinbase',
+        'coinexchange',
+        'coinmarketcap',
+        'lykke',
+        'xbtce',
+        ], "Does not provide timeframes. ccxt fetchOHLCV: False"),
+    **dict.fromkeys([
+        'bcex',
+        'bit2c',
+        'bitbay',
+        'bitflyer',
+        'bitforex',
+        'bithumb',
+        'bitso',
+        'bitstamp1',
+        'bl3p',
+        'braziliex',
+        'btcbox',
+        'btcchina',
+        'btctradeim',
+        'btctradeua',
+        'bxinth',
+        'chilebit',
+        'coincheck',
+        'coinegg',
+        'coinfalcon',
+        'coinfloor',
+        'coingi',
+        'coinmate',
+        'coinone',
+        'coinspot',
+        'coolcoin',
+        'crypton',
+        'deribit',
+        'exmo',
+        'exx',
+        'flowbtc',
+        'foxbit',
+        'fybse',
+        'hitbtc',
+        'ice3x',
+        'independentreserve',
+        'indodax',
+        'itbit',
+        'lakebtc',
+        'latoken',
+        'liquid',
+        'livecoin',
+        'luno',
+        'mixcoins',
+        'negociecoins',
+        'nova',
+        'paymium',
+        'southxchange',
+        'stronghold',
+        'surbitcoin',
+        'therock',
+        'tidex',
+        'vaultoro',
+        'vbtc',
+        'virwox',
+        'yobit',
+        'zaif',
+        ], "Does not provide timeframes. ccxt fetchOHLCV: emulated"),
     }
 
 

From 03b5be91f7e26ee961a0206694eff5b940601e1e Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Mon, 30 Sep 2019 07:28:49 +0200
Subject: [PATCH 0576/3421] some commands should not have config at all

---
 freqtrade/configuration/arguments.py | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index 6e2ecea2e..89c86bdca 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -41,7 +41,9 @@ ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_
 ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url",
                     "trade_source", "ticker_interval"]
 
-NO_CONF_REQURIED = ["create-userdir", "download-data", "plot-dataframe", "plot-profit"]
+NO_CONF_REQURIED = ["download-data", "plot-dataframe", "plot-profit"]
+
+NO_CONF_ALLOWED = ["create-userdir", "list-exchanges"]
 
 
 class Arguments:
@@ -75,12 +77,15 @@ class Arguments:
         parsed_arg = self.parser.parse_args(self.args)
 
         # When no config is provided, but a config exists, use that configuration!
+        subparser = parsed_arg.subparser if 'subparser' in parsed_arg else None
 
         # Workaround issue in argparse with action='append' and default value
         # (see https://bugs.python.org/issue16399)
         # Allow no-config for certain commands (like downloading / plotting)
-        if (parsed_arg.config is None and ((Path.cwd() / constants.DEFAULT_CONFIG).is_file() or
-           not ('subparser' in parsed_arg and parsed_arg.subparser in NO_CONF_REQURIED))):
+        if (parsed_arg.config is None
+                and subparser not in NO_CONF_ALLOWED
+                and ((Path.cwd() / constants.DEFAULT_CONFIG).is_file()
+                     or (subparser not in NO_CONF_REQURIED))):
             parsed_arg.config = [constants.DEFAULT_CONFIG]
 
         return parsed_arg

From 739901b606a3793a01a4dcc4c6801b3b7ac0fbb2 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Mon, 30 Sep 2019 09:48:00 +0200
Subject: [PATCH 0577/3421] Add test for this behaviour

---
 tests/test_arguments.py | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/tests/test_arguments.py b/tests/test_arguments.py
index cf0104c01..e874e6769 100644
--- a/tests/test_arguments.py
+++ b/tests/test_arguments.py
@@ -1,5 +1,7 @@
 # pragma pylint: disable=missing-docstring, C0103
 import argparse
+from pathlib import Path
+from unittest.mock import MagicMock
 
 import pytest
 
@@ -177,6 +179,44 @@ def test_plot_profit_options() -> None:
     assert pargs["db_url"] == "sqlite:///whatever.sqlite"
 
 
+def test_config_notallowed(mocker) -> None:
+    mocker.patch.object(Path, "is_file", MagicMock(return_value=False))
+    args = [
+        'create-userdir',
+    ]
+    pargs = Arguments(args).get_parsed_arg()
+
+    assert pargs["config"] is None
+
+    # When file exists:
+    mocker.patch.object(Path, "is_file", MagicMock(return_value=True))
+    args = [
+        'create-userdir',
+    ]
+    pargs = Arguments(args).get_parsed_arg()
+    # config is not added even if it exists, since create-userdir is in the notallowed list
+    assert pargs["config"] is None
+
+
+def test_config_notrequired(mocker) -> None:
+    mocker.patch.object(Path, "is_file", MagicMock(return_value=False))
+    args = [
+        'download-data',
+    ]
+    pargs = Arguments(args).get_parsed_arg()
+
+    assert pargs["config"] is None
+
+    # When file exists:
+    mocker.patch.object(Path, "is_file", MagicMock(return_value=True))
+    args = [
+        'download-data',
+    ]
+    pargs = Arguments(args).get_parsed_arg()
+    # config is added if it exists
+    assert pargs["config"] == ['config.json']
+
+
 def test_check_int_positive() -> None:
     assert check_int_positive("3") == 3
     assert check_int_positive("1") == 1

From 8ae4018e4dab9a5163804fcdcd9eea99994b4e32 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 30 Sep 2019 10:19:37 +0000
Subject: [PATCH 0578/3421] Bump urllib3 from 1.25.5 to 1.25.6

Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.5 to 1.25.6.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.25.5...1.25.6)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index f10134203..6ed4d3139 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -6,7 +6,7 @@ python-telegram-bot==12.1.1
 arrow==0.15.2
 cachetools==3.1.1
 requests==2.22.0
-urllib3==1.25.5
+urllib3==1.25.6
 wrapt==1.11.2
 jsonschema==3.0.2
 TA-Lib==0.4.17

From 9a83d841095bd6223ccc3ff0521fd084ef45b340 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 30 Sep 2019 10:20:05 +0000
Subject: [PATCH 0579/3421] Bump tabulate from 0.8.3 to 0.8.5

Bumps [tabulate](https://github.com/astanin/python-tabulate) from 0.8.3 to 0.8.5.
- [Release notes](https://github.com/astanin/python-tabulate/releases)
- [Changelog](https://github.com/astanin/python-tabulate/blob/master/CHANGELOG)
- [Commits](https://github.com/astanin/python-tabulate/commits/v0.8.5)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index f10134203..e0c594194 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -10,7 +10,7 @@ urllib3==1.25.5
 wrapt==1.11.2
 jsonschema==3.0.2
 TA-Lib==0.4.17
-tabulate==0.8.3
+tabulate==0.8.5
 coinmarketcap==5.0.3
 
 # find first, C search in arrays

From 3c91ba134f0fd3ad13609927f510b3e520baccda Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 30 Sep 2019 10:20:47 +0000
Subject: [PATCH 0580/3421] Bump pytest-mock from 1.10.4 to 1.11.0

Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.10.4 to 1.11.0.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/1.10.4...v1.11.0)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-dev.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-dev.txt b/requirements-dev.txt
index dcf2c7217..755dff4b4 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -11,5 +11,5 @@ mypy==0.720
 pytest==5.1.3
 pytest-asyncio==0.10.0
 pytest-cov==2.7.1
-pytest-mock==1.10.4
+pytest-mock==1.11.0
 pytest-random-order==1.0.4

From d74ca78bd8d0bb133e45e82433f628960ddc4403 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 30 Sep 2019 10:21:37 +0000
Subject: [PATCH 0581/3421] Bump ccxt from 1.18.1180 to 1.18.1208

Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1180 to 1.18.1208.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1180...1.18.1208)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index f10134203..e74e3a7a7 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -1,6 +1,6 @@
 # requirements without requirements installable via conda
 # mainly used for Raspberry pi installs
-ccxt==1.18.1180
+ccxt==1.18.1208
 SQLAlchemy==1.3.8
 python-telegram-bot==12.1.1
 arrow==0.15.2

From f359f869abd96d94423a55849aac4a979fe0be13 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 30 Sep 2019 15:20:07 +0000
Subject: [PATCH 0582/3421] Bump pytest from 5.1.3 to 5.2.0

Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.1.3 to 5.2.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.1.3...5.2.0)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-dev.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-dev.txt b/requirements-dev.txt
index 755dff4b4..8fd73df0c 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -8,7 +8,7 @@ flake8==3.7.8
 flake8-type-annotations==0.1.0
 flake8-tidy-imports==2.0.0
 mypy==0.720
-pytest==5.1.3
+pytest==5.2.0
 pytest-asyncio==0.10.0
 pytest-cov==2.7.1
 pytest-mock==1.11.0

From 7617dd502921e950cef36e93febdd911d5261f72 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Mon, 30 Sep 2019 18:44:13 +0300
Subject: [PATCH 0583/3421] Add separate message for `hitbtc` exchange

---
 freqtrade/exchange/exchange.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index dcc20acca..3c313ab54 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -27,9 +27,11 @@ logger = logging.getLogger(__name__)
 
 API_RETRY_COUNT = 4
 BAD_EXCHANGES = {
-    "bitmex": "Various reasons",
+    "bitmex": "Various reasons.",
     "bitstamp": "Does not provide history. "
                 "Details in https://github.com/freqtrade/freqtrade/issues/1983",
+    "hitbtc": "This API cannot be used with Freqtrade. "
+              "Use `hitbtc2` exchange id to access this exchange.",
     **dict.fromkeys([
         'adara',
         'anxpro',
@@ -73,7 +75,7 @@ BAD_EXCHANGES = {
         'flowbtc',
         'foxbit',
         'fybse',
-        'hitbtc',
+        # 'hitbtc',
         'ice3x',
         'independentreserve',
         'indodax',

From 04fea69a2899446d71678625a5d056a708958e53 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 30 Sep 2019 17:26:03 +0000
Subject: [PATCH 0584/3421] Bump mypy from 0.720 to 0.730

Bumps [mypy](https://github.com/python/mypy) from 0.720 to 0.730.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.720...v0.730)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-dev.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-dev.txt b/requirements-dev.txt
index 8fd73df0c..2c1ae906d 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -7,7 +7,7 @@ coveralls==1.8.2
 flake8==3.7.8
 flake8-type-annotations==0.1.0
 flake8-tidy-imports==2.0.0
-mypy==0.720
+mypy==0.730
 pytest==5.2.0
 pytest-asyncio==0.10.0
 pytest-cov==2.7.1

From dc47a391da82277bd80016e91ae78db8468a2305 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Mon, 30 Sep 2019 19:32:13 +0200
Subject: [PATCH 0585/3421] Move ignore to corrct line for mypy 730

---
 freqtrade/optimize/backtesting.py | 8 ++++----
 freqtrade/optimize/edge_cli.py    | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py
index 6074b281b..89aff86f6 100644
--- a/freqtrade/optimize/backtesting.py
+++ b/freqtrade/optimize/backtesting.py
@@ -146,8 +146,8 @@ class Backtesting:
             len(results[results.profit_abs < 0])
         ])
         # Ignore type as floatfmt does allow tuples but mypy does not know that
-        return tabulate(tabular_data, headers=headers,  # type: ignore
-                        floatfmt=floatfmt, tablefmt="pipe")
+        return tabulate(tabular_data, headers=headers,
+                        floatfmt=floatfmt, tablefmt="pipe")  # type: ignore
 
     def _generate_text_table_sell_reason(self, data: Dict[str, Dict], results: DataFrame) -> str:
         """
@@ -185,8 +185,8 @@ class Backtesting:
                 len(results[results.profit_abs < 0])
             ])
         # Ignore type as floatfmt does allow tuples but mypy does not know that
-        return tabulate(tabular_data, headers=headers,  # type: ignore
-                        floatfmt=floatfmt, tablefmt="pipe")
+        return tabulate(tabular_data, headers=headers,
+                        floatfmt=floatfmt, tablefmt="pipe")  # type: ignore
 
     def _store_backtest_result(self, recordfilename: Path, results: DataFrame,
                                strategyname: Optional[str] = None) -> None:
diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py
index 0cf5a009b..1ba6bcc65 100644
--- a/freqtrade/optimize/edge_cli.py
+++ b/freqtrade/optimize/edge_cli.py
@@ -69,8 +69,8 @@ class EdgeCli:
                 ])
 
         # Ignore type as floatfmt does allow tuples but mypy does not know that
-        return tabulate(tabular_data, headers=headers,  # type: ignore
-                        floatfmt=floatfmt, tablefmt="pipe")
+        return tabulate(tabular_data, headers=headers,
+                        floatfmt=floatfmt, tablefmt="pipe")  # type: ignore
 
     def start(self) -> None:
         result = self.edge.calculate()

From cd0e813a858660eac36f48ea615ce356e68ae5cb Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Mon, 30 Sep 2019 21:36:52 +0300
Subject: [PATCH 0586/3421] Docs adjusted, utils.md added

---
 docs/bot-usage.md | 10 ++++++++--
 docs/utils.md     | 26 ++++++++++++++++++++++++++
 mkdocs.yml        |  9 +++++----
 3 files changed, 39 insertions(+), 6 deletions(-)
 create mode 100644 docs/utils.md

diff --git a/docs/bot-usage.md b/docs/bot-usage.md
index f44400e32..795f5f07d 100644
--- a/docs/bot-usage.md
+++ b/docs/bot-usage.md
@@ -12,17 +12,23 @@ This page explains the different parameters of the bot and how to run it.
 usage: freqtrade [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
                  [--userdir PATH] [-s NAME] [--strategy-path PATH]
                  [--db-url PATH] [--sd-notify]
-                 {backtesting,edge,hyperopt,create-userdir,list-exchanges} ...
+                 {backtesting,edge,hyperopt,create-userdir,list-exchanges,list-timeframes,download-data,plot-dataframe,plot-profit}
+                 ...
 
 Free, open source crypto trading bot
 
 positional arguments:
-  {backtesting,edge,hyperopt,create-userdir,list-exchanges}
+  {backtesting,edge,hyperopt,create-userdir,list-exchanges,list-timeframes,download-data,plot-dataframe,plot-profit}
     backtesting         Backtesting module.
     edge                Edge module.
     hyperopt            Hyperopt module.
     create-userdir      Create user-data directory.
     list-exchanges      Print available exchanges.
+    list-timeframes     Print available ticker intervals (timeframes) for the
+                        exchange.
+    download-data       Download backtesting data.
+    plot-dataframe      Plot candles with indicators.
+    plot-profit         Generate plot showing profits.
 
 optional arguments:
   -h, --help            show this help message and exit
diff --git a/docs/utils.md b/docs/utils.md
new file mode 100644
index 000000000..cfed604bd
--- /dev/null
+++ b/docs/utils.md
@@ -0,0 +1,26 @@
+# Utility Subcommands
+
+Besides the Live-Trade and Dry-Run run modes, the `backtesting`, `edge` and `hyperopt` optimization subcommands, and the `download-data` subcommand which prepares historical data, the bot contains a number of utility subcommands. They are described in this section.
+
+## List Exchanges
+
+```
+usage: freqtrade list-exchanges [-h] [-1]
+
+optional arguments:
+  -h, --help        show this help message and exit
+  -1, --one-column  Print exchanges in one column.
+```
+
+## List Timeframes
+
+```
+usage: freqtrade list-timeframes [-h] [--exchange EXCHANGE] [-1]
+
+optional arguments:
+  -h, --help           show this help message and exit
+  --exchange EXCHANGE  Exchange name (default: `bittrex`). Only valid if no
+                       config is provided.
+  -1, --one-column     Print exchanges in one column.
+
+```
diff --git a/mkdocs.yml b/mkdocs.yml
index 7aedb4bba..e1b754962 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -14,14 +14,15 @@ nav:
     - Data Downloading: data-download.md
     - Backtesting: backtesting.md
     - Hyperopt: hyperopt.md
-    - Edge positioning: edge.md
+    - Edge Positioning: edge.md
+    - Utility Subcommands: utils.md
     - FAQ: faq.md
     - Data Analysis: data-analysis.md
     - Plotting: plotting.md
     - SQL Cheatsheet: sql_cheatsheet.md
-    - Sandbox testing: sandbox-testing.md
-    - Deprecated features: deprecated.md
-    - Contributors guide: developer.md
+    - Sandbox Testing: sandbox-testing.md
+    - Deprecated Features: deprecated.md
+    - Contributors Guide: developer.md
 theme:
   name: material
   logo: 'images/logo.png'

From d1fa5f307b8406ff6d78763d07478be833a980a0 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 1 Oct 2019 00:33:33 +0300
Subject: [PATCH 0587/3421] Add --all option to list-exchanges

---
 freqtrade/configuration/arguments.py      |  2 +-
 freqtrade/configuration/check_exchange.py | 14 +++++++-------
 freqtrade/configuration/cli_options.py    |  5 +++++
 freqtrade/exchange/__init__.py            |  3 ++-
 freqtrade/exchange/exchange.py            | 19 +++++++++++++++----
 freqtrade/utils.py                        | 12 +++++++-----
 6 files changed, 37 insertions(+), 18 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index 89c86bdca..da9bef0b0 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -29,7 +29,7 @@ ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + ["hyperopt", "hyperopt_path",
 
 ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"]
 
-ARGS_LIST_EXCHANGES = ["print_one_column"]
+ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"]
 
 ARGS_CREATE_USERDIR = ["user_data_dir"]
 
diff --git a/freqtrade/configuration/check_exchange.py b/freqtrade/configuration/check_exchange.py
index 19c377732..5e811fb81 100644
--- a/freqtrade/configuration/check_exchange.py
+++ b/freqtrade/configuration/check_exchange.py
@@ -3,7 +3,7 @@ from typing import Any, Dict
 
 from freqtrade import OperationalException
 from freqtrade.exchange import (available_exchanges, get_exchange_bad_reason,
-                                is_exchange_available, is_exchange_bad,
+                                is_exchange_known_ccxt, is_exchange_bad,
                                 is_exchange_officially_supported)
 from freqtrade.state import RunMode
 
@@ -31,15 +31,15 @@ def check_exchange(config: Dict[str, Any], check_for_bad: bool = True) -> bool:
         raise OperationalException(
             f'This command requires a configured exchange. You should either use '
             f'`--exchange ` or specify a configuration file via `--config`.\n'
-            f'The following exchanges are supported by ccxt: '
+            f'The following exchanges are available for Freqtrade: '
             f'{", ".join(available_exchanges())}'
         )
 
-    if not is_exchange_available(exchange):
+    if not is_exchange_known_ccxt(exchange):
         raise OperationalException(
-                f'Exchange "{exchange}" is not supported by ccxt '
+                f'Exchange "{exchange}" is not known to the ccxt library '
                 f'and therefore not available for the bot.\n'
-                f'The following exchanges are supported by ccxt: '
+                f'The following exchanges are available for Freqtrade: '
                 f'{", ".join(available_exchanges())}'
         )
 
@@ -51,8 +51,8 @@ def check_exchange(config: Dict[str, Any], check_for_bad: bool = True) -> bool:
         logger.info(f'Exchange "{exchange}" is officially supported '
                     f'by the Freqtrade development team.')
     else:
-        logger.warning(f'Exchange "{exchange}" is supported by ccxt '
-                       f'and therefore available for the bot but not officially supported '
+        logger.warning(f'Exchange "{exchange}" is known to the the ccxt library, '
+                       f'available for the bot, but not officially supported '
                        f'by the Freqtrade development team. '
                        f'It may work flawlessly (please report back) or have serious issues. '
                        f'Use it at your own discretion.')
diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py
index cb07dbdba..caf34b5e3 100644
--- a/freqtrade/configuration/cli_options.py
+++ b/freqtrade/configuration/cli_options.py
@@ -244,6 +244,11 @@ AVAILABLE_CLI_OPTIONS = {
         help='Print exchanges in one column.',
         action='store_true',
     ),
+    "list_exchanges_all": Arg(
+        '-a', '--all',
+        help='Print all exchanges known to the ccxt library.',
+        action='store_true',
+    ),
     # Script options
     "pairs": Arg(
         '-p', '--pairs',
diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py
index 4037ca704..29971c897 100644
--- a/freqtrade/exchange/__init__.py
+++ b/freqtrade/exchange/__init__.py
@@ -1,8 +1,9 @@
 from freqtrade.exchange.exchange import Exchange  # noqa: F401
 from freqtrade.exchange.exchange import (get_exchange_bad_reason,  # noqa: F401
                                          is_exchange_bad,
-                                         is_exchange_available,
+                                         is_exchange_known_ccxt,
                                          is_exchange_officially_supported,
+                                         ccxt_exchanges,
                                          available_exchanges)
 from freqtrade.exchange.exchange import (timeframe_to_seconds,  # noqa: F401
                                          timeframe_to_minutes,
diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 3c313ab54..0c307e7ed 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -235,7 +235,7 @@ class Exchange:
         # Find matching class for the given exchange name
         name = exchange_config['name']
 
-        if not is_exchange_available(name, ccxt_module):
+        if not is_exchange_known_ccxt(name, ccxt_module):
             raise OperationalException(f'Exchange {name} is not supported by ccxt')
 
         ex_config = {
@@ -838,18 +838,29 @@ def get_exchange_bad_reason(exchange_name: str) -> str:
     return BAD_EXCHANGES.get(exchange_name, "")
 
 
-def is_exchange_available(exchange_name: str, ccxt_module=None) -> bool:
-    return exchange_name in available_exchanges(ccxt_module)
+def is_exchange_known_ccxt(exchange_name: str, ccxt_module=None) -> bool:
+    return exchange_name in ccxt_exchanges(ccxt_module)
 
 
 def is_exchange_officially_supported(exchange_name: str) -> bool:
     return exchange_name in ['bittrex', 'binance']
 
 
-def available_exchanges(ccxt_module=None) -> List[str]:
+def ccxt_exchanges(ccxt_module=None) -> List[str]:
+    """
+    Return the list of all exchanges known to ccxt
+    """
     return ccxt_module.exchanges if ccxt_module is not None else ccxt.exchanges
 
 
+def available_exchanges(ccxt_module=None) -> List[str]:
+    """
+    Return exchanges available to the bot, i.e. non-bad exchanges in the ccxt list
+    """
+    exchanges = ccxt_exchanges(ccxt_module)
+    return [x for x in exchanges if not is_exchange_bad(x)]
+
+
 def timeframe_to_seconds(ticker_interval: str) -> int:
     """
     Translates the timeframe interval value written in the human readable
diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index 6ce5e888c..3a11ca4fc 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -9,7 +9,7 @@ from freqtrade import OperationalException
 from freqtrade.configuration import Configuration, TimeRange
 from freqtrade.configuration.directory_operations import create_userdata_dir
 from freqtrade.data.history import refresh_backtest_ohlcv_data
-from freqtrade.exchange import available_exchanges
+from freqtrade.exchange import available_exchanges, ccxt_exchanges
 from freqtrade.resolvers import ExchangeResolver
 from freqtrade.state import RunMode
 
@@ -39,12 +39,14 @@ def start_list_exchanges(args: Dict[str, Any]) -> None:
     :param args: Cli args from Arguments()
     :return: None
     """
-
+    exchanges = ccxt_exchanges() if args['list_exchanges_all'] else available_exchanges()
     if args['print_one_column']:
-        print('\n'.join(available_exchanges()))
+        print('\n'.join(exchanges))
     else:
-        print(f"Exchanges supported by ccxt and available for Freqtrade: "
-              f"{', '.join(available_exchanges())}")
+        if args['list_exchanges_all']:
+            print(f"All exchanges supported by the ccxt library: {', '.join(exchanges)}")
+        else:
+            print(f"Exchanges available for Freqtrade: {', '.join(exchanges)}")
 
 
 def start_create_userdir(args: Dict[str, Any]) -> None:

From f6a88c6e9bee6e645adc68429fa85096d2e994a1 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 1 Oct 2019 00:33:54 +0300
Subject: [PATCH 0588/3421] Tests adjusted

---
 tests/test_configuration.py |  9 +++++----
 tests/test_utils.py         | 29 +++++++++++++++++++++++++++--
 2 files changed, 32 insertions(+), 6 deletions(-)

diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 330b82d39..0f2d6a50a 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -506,7 +506,8 @@ def test_check_exchange(default_conf, caplog) -> None:
     # Test an available exchange, supported by ccxt
     default_conf.get('exchange').update({'name': 'huobipro'})
     assert check_exchange(default_conf)
-    assert log_has_re(r"Exchange .* is supported by ccxt and .* not officially supported "
+    assert log_has_re(r"Exchange .* is known to the the ccxt library, available for the bot, "
+                      r"but not officially supported "
                       r"by the Freqtrade development team\. .*", caplog)
     caplog.clear()
 
@@ -520,16 +521,16 @@ def test_check_exchange(default_conf, caplog) -> None:
     # Test a 'bad' exchange with check_for_bad=False
     default_conf.get('exchange').update({'name': 'bitmex'})
     assert check_exchange(default_conf, False)
-    assert log_has_re(r"Exchange .* is supported by ccxt and .* not officially supported "
+    assert log_has_re(r"Exchange .* is known to the the ccxt library, available for the bot, "
+                      r"but not officially supported "
                       r"by the Freqtrade development team\. .*", caplog)
     caplog.clear()
 
     # Test an invalid exchange
     default_conf.get('exchange').update({'name': 'unknown_exchange'})
-
     with pytest.raises(
         OperationalException,
-        match=r'.*Exchange "unknown_exchange" is not supported by ccxt '
+        match=r'Exchange "unknown_exchange" is not known to the ccxt library '
               r'and therefore not available for the bot.*'
     ):
         check_exchange(default_conf)
diff --git a/tests/test_utils.py b/tests/test_utils.py
index c99044610..9025e4906 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -31,7 +31,7 @@ def test_list_exchanges(capsys):
 
     start_list_exchanges(get_args(args))
     captured = capsys.readouterr()
-    assert re.match(r"Exchanges supported by ccxt and available.*", captured.out)
+    assert re.match(r"Exchanges available for Freqtrade.*", captured.out)
     assert re.match(r".*binance,.*", captured.out)
     assert re.match(r".*bittrex,.*", captured.out)
 
@@ -43,10 +43,35 @@ def test_list_exchanges(capsys):
 
     start_list_exchanges(get_args(args))
     captured = capsys.readouterr()
-    assert not re.match(r"Exchanges supported by ccxt and available.*", captured.out)
     assert re.search(r"^binance$", captured.out, re.MULTILINE)
     assert re.search(r"^bittrex$", captured.out, re.MULTILINE)
 
+    # Test with --all
+    args = [
+        "list-exchanges",
+        "--all",
+    ]
+
+    start_list_exchanges(get_args(args))
+    captured = capsys.readouterr()
+    assert re.match(r"All exchanges supported by the ccxt library.*", captured.out)
+    assert re.match(r".*binance,.*", captured.out)
+    assert re.match(r".*bittrex,.*", captured.out)
+    assert re.match(r".*bitmex,.*", captured.out)
+
+    # Test with --one-column --all
+    args = [
+        "list-exchanges",
+        "--one-column",
+        "--all",
+    ]
+
+    start_list_exchanges(get_args(args))
+    captured = capsys.readouterr()
+    assert re.search(r"^binance$", captured.out, re.MULTILINE)
+    assert re.search(r"^bittrex$", captured.out, re.MULTILINE)
+    assert re.search(r"^bitmex$", captured.out, re.MULTILINE)
+
 
 def test_create_datadir_failed(caplog):
 

From b73426b91f5925431a4631c0618fa917d845fe81 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 21 Sep 2019 19:54:44 +0200
Subject: [PATCH 0589/3421] Disable Defaulting to DefaultStrategy

---
 .travis.yml                              |  4 ++--
 build_helpers/publish_docker.sh          |  2 +-
 docs/bot-usage.md                        |  4 ++--
 docs/configuration.md                    |  2 +-
 freqtrade/configuration/cli_options.py   |  3 +--
 freqtrade/configuration/configuration.py |  2 +-
 freqtrade/constants.py                   |  1 -
 freqtrade/resolvers/strategy_resolver.py |  7 +++++--
 tests/conftest.py                        |  1 +
 tests/strategy/test_strategy.py          | 12 +++++++++++-
 tests/test_configuration.py              |  1 -
 11 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 81c3de2fb..b066e7044 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -28,11 +28,11 @@ jobs:
       name: pytest
     - script:
       - cp config.json.example config.json
-      - freqtrade backtesting --datadir tests/testdata
+      - freqtrade backtesting --datadir tests/testdata --strategy DefaultStrategy
       name: backtest
     - script:
       - cp config.json.example config.json
-      - freqtrade hyperopt --datadir tests/testdata -e 5
+      - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy DefaultStrategy
       name: hyperopt
     - script: flake8
       name: flake8
diff --git a/build_helpers/publish_docker.sh b/build_helpers/publish_docker.sh
index 839ca0876..b8318c196 100755
--- a/build_helpers/publish_docker.sh
+++ b/build_helpers/publish_docker.sh
@@ -23,7 +23,7 @@ if [ $? -ne 0 ]; then
 fi
 
 # Run backtest
-docker run --rm -it -v $(pwd)/config.json.example:/freqtrade/config.json:ro -v $(pwd)/tests:/tests freqtrade:${TAG} --datadir /tests/testdata backtesting
+docker run --rm -it -v $(pwd)/config.json.example:/freqtrade/config.json:ro -v $(pwd)/tests:/tests freqtrade:${TAG} backtesting --datadir /tests/testdata --strategy DefaultStrategy
 
 if [ $? -ne 0 ]; then
     echo "failed running backtest"
diff --git a/docs/bot-usage.md b/docs/bot-usage.md
index 112fc78a1..2b66d3c25 100644
--- a/docs/bot-usage.md
+++ b/docs/bot-usage.md
@@ -60,8 +60,8 @@ Common arguments:
 
 Strategy arguments:
   -s NAME, --strategy NAME
-                        Specify strategy class name (default:
-                        `DefaultStrategy`).
+                        Specify strategy class name which will be used by the
+                        bot.
   --strategy-path PATH  Specify additional strategy lookup path.
 
 ```
diff --git a/docs/configuration.md b/docs/configuration.md
index 0d902766a..9c1b9d4f7 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -95,7 +95,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
 | `db_url` | `sqlite:///tradesv3.sqlite`| Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `True`.
 | `initial_state` | running | Defines the initial application state. More information below.
 | `forcebuy_enable` | false | Enables the RPC Commands to force a buy. More information below.
-| `strategy` | DefaultStrategy | Defines Strategy class to use.
+| `strategy` | None | **Required** Defines Strategy class to use. Recommended to set via `--strategy NAME`. 
 | `strategy_path` | null | Adds an additional strategy lookup path (must be a directory).
 | `internals.process_throttle_secs` | 5 | **Required.** Set the process throttle. Value in second.
 | `internals.sd_notify` | false | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details.
diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py
index 24230f1b3..2ecd4cfc5 100644
--- a/freqtrade/configuration/cli_options.py
+++ b/freqtrade/configuration/cli_options.py
@@ -66,9 +66,8 @@ AVAILABLE_CLI_OPTIONS = {
     # Main options
     "strategy": Arg(
         '-s', '--strategy',
-        help='Specify strategy class name (default: `%(default)s`).',
+        help='Specify strategy class name which will be used by the bot.',
         metavar='NAME',
-        default='DefaultStrategy',
     ),
     "strategy_path": Arg(
         '--strategy-path',
diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py
index 764593d0f..ac27a5c99 100644
--- a/freqtrade/configuration/configuration.py
+++ b/freqtrade/configuration/configuration.py
@@ -128,7 +128,7 @@ class Configuration:
         self._process_logging_options(config)
 
         # Set strategy if not specified in config and or if it's non default
-        if self.args.get("strategy") != constants.DEFAULT_STRATEGY or not config.get('strategy'):
+        if self.args.get("strategy") or not config.get('strategy'):
             config.update({'strategy': self.args.get("strategy")})
 
         self._args_to_config(config, argname='strategy_path',
diff --git a/freqtrade/constants.py b/freqtrade/constants.py
index abf43b24d..749ae25b5 100644
--- a/freqtrade/constants.py
+++ b/freqtrade/constants.py
@@ -9,7 +9,6 @@ PROCESS_THROTTLE_SECS = 5  # sec
 DEFAULT_TICKER_INTERVAL = 5  # min
 HYPEROPT_EPOCH = 100  # epochs
 RETRY_TIMEOUT = 30  # sec
-DEFAULT_STRATEGY = 'DefaultStrategy'
 DEFAULT_HYPEROPT = 'DefaultHyperOpts'
 DEFAULT_HYPEROPT_LOSS = 'DefaultHyperOptLoss'
 DEFAULT_DB_PROD_URL = 'sqlite:///tradesv3.sqlite'
diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py
index ca7e1165b..1b6d5c48a 100644
--- a/freqtrade/resolvers/strategy_resolver.py
+++ b/freqtrade/resolvers/strategy_resolver.py
@@ -32,8 +32,11 @@ class StrategyResolver(IResolver):
         """
         config = config or {}
 
-        # Verify the strategy is in the configuration, otherwise fallback to the default strategy
-        strategy_name = config.get('strategy') or constants.DEFAULT_STRATEGY
+        if not config.get('strategy'):
+            raise OperationalException("No strategy set. Please use `--strategy` to specify "
+                                       "the strategy class to use.")
+
+        strategy_name = config['strategy']
         self.strategy: IStrategy = self._load_strategy(strategy_name,
                                                        config=config,
                                                        extra_dir=config.get('strategy_path'))
diff --git a/tests/conftest.py b/tests/conftest.py
index 6a0a74b5b..0ffb5a066 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -242,6 +242,7 @@ def default_conf(testdatadir):
         "db_url": "sqlite://",
         "user_data_dir": Path("user_data"),
         "verbosity": 3,
+        "strategy": "DefaultStrategy"
     }
     return configuration
 
diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py
index 6992d1aa5..82db30d47 100644
--- a/tests/strategy/test_strategy.py
+++ b/tests/strategy/test_strategy.py
@@ -55,6 +55,7 @@ def test_load_strategy_base64(result, caplog, default_conf):
 
 
 def test_load_strategy_invalid_directory(result, caplog, default_conf):
+    default_conf['strategy'] = 'SampleStrategy'
     resolver = StrategyResolver(default_conf)
     extra_dir = Path.cwd() / 'some/path'
     resolver._load_strategy('SampleStrategy', config=default_conf, extra_dir=extra_dir)
@@ -65,13 +66,22 @@ def test_load_strategy_invalid_directory(result, caplog, default_conf):
 
 
 def test_load_not_found_strategy(default_conf):
-    strategy = StrategyResolver(default_conf)
+    default_conf['strategy'] = 'NotFoundStrategy'
     with pytest.raises(OperationalException,
                        match=r"Impossible to load Strategy 'NotFoundStrategy'. "
                              r"This class does not exist or contains Python code errors."):
+        strategy = StrategyResolver(default_conf)
         strategy._load_strategy(strategy_name='NotFoundStrategy', config=default_conf)
 
 
+def test_load_strategy_noname(default_conf):
+    default_conf['strategy'] = ''
+    with pytest.raises(OperationalException,
+                       match="No strategy set. Please use `--strategy` to specify "
+                             "the strategy class to use."):
+        StrategyResolver(default_conf)
+
+
 def test_strategy(result, default_conf):
     default_conf.update({'strategy': 'DefaultStrategy'})
 
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 3c3ad3026..333a8992a 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -212,7 +212,6 @@ def test_load_config(default_conf, mocker) -> None:
     configuration = Configuration(args)
     validated_conf = configuration.load_config()
 
-    assert validated_conf.get('strategy') == 'DefaultStrategy'
     assert validated_conf.get('strategy_path') is None
     assert 'edge' not in validated_conf
 

From f2e878d9ec47e0342a5c45ad9c51ab342b387206 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 1 Oct 2019 16:57:35 +0300
Subject: [PATCH 0590/3421] Update helpstring for list-exchanges

---
 docs/utils.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/docs/utils.md b/docs/utils.md
index cfed604bd..fe22cd50d 100644
--- a/docs/utils.md
+++ b/docs/utils.md
@@ -5,11 +5,12 @@ Besides the Live-Trade and Dry-Run run modes, the `backtesting`, `edge` and `hyp
 ## List Exchanges
 
 ```
-usage: freqtrade list-exchanges [-h] [-1]
+usage: freqtrade list-exchanges [-h] [-1] [-a]
 
 optional arguments:
   -h, --help        show this help message and exit
   -1, --one-column  Print exchanges in one column.
+  -a, --all         Print all exchanges known to the ccxt library.
 ```
 
 ## List Timeframes

From c57d5ef1cd84fdfaa37b0cc6fe3760e81dcda1dc Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 1 Oct 2019 20:26:44 +0300
Subject: [PATCH 0591/3421] Added short descriptions and examples in utils.md

---
 docs/utils.md | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/docs/utils.md b/docs/utils.md
index fe22cd50d..459960fac 100644
--- a/docs/utils.md
+++ b/docs/utils.md
@@ -4,6 +4,8 @@ Besides the Live-Trade and Dry-Run run modes, the `backtesting`, `edge` and `hyp
 
 ## List Exchanges
 
+Use the `list-exchanges` subcommand to see the exchanges available for the bot.
+
 ```
 usage: freqtrade list-exchanges [-h] [-1] [-a]
 
@@ -13,8 +15,22 @@ optional arguments:
   -a, --all         Print all exchanges known to the ccxt library.
 ```
 
+* Example: see exchanges available for the bot:
+```
+$ freqtrade list-exchanges
+Exchanges available for Freqtrade: _1btcxe, acx, allcoin, bequant, bibox, binance, binanceje, binanceus, bitbank, bitfinex, bitfinex2, bitkk, bitlish, bitmart, bittrex, bitz, bleutrade, btcalpha, btcmarkets, btcturk, buda, cex, cobinhood, coinbaseprime, coinbasepro, coinex, cointiger, coss, crex24, digifinex, dsx, dx, ethfinex, fcoin, fcoinjp, gateio, gdax, gemini, hitbtc2, huobipro, huobiru, idex, kkex, kraken, kucoin, kucoin2, kuna, lbank, mandala, mercado, oceanex, okcoincny, okcoinusd, okex, okex3, poloniex, rightbtc, theocean, tidebit, upbit, zb
+```
+
+* Example: see all exchanges supported by the ccxt library (including 'bad' ones, i.e. those that are known to not work with Freqtrade):
+```
+$ freqtrade list-exchanges -a
+All exchanges supported by the ccxt library: _1btcxe, acx, adara, allcoin, anxpro, bcex, bequant, bibox, bigone, binance, binanceje, binanceus, bit2c, bitbank, bitbay, bitfinex, bitfinex2, bitflyer, bitforex, bithumb, bitkk, bitlish, bitmart, bitmex, bitso, bitstamp, bitstamp1, bittrex, bitz, bl3p, bleutrade, braziliex, btcalpha, btcbox, btcchina, btcmarkets, btctradeim, btctradeua, btcturk, buda, bxinth, cex, chilebit, cobinhood, coinbase, coinbaseprime, coinbasepro, coincheck, coinegg, coinex, coinexchange, coinfalcon, coinfloor, coingi, coinmarketcap, coinmate, coinone, coinspot, cointiger, coolcoin, coss, crex24, crypton, deribit, digifinex, dsx, dx, ethfinex, exmo, exx, fcoin, fcoinjp, flowbtc, foxbit, fybse, gateio, gdax, gemini, hitbtc, hitbtc2, huobipro, huobiru, ice3x, idex, independentreserve, indodax, itbit, kkex, kraken, kucoin, kucoin2, kuna, lakebtc, latoken, lbank, liquid, livecoin, luno, lykke, mandala, mercado, mixcoins, negociecoins, nova, oceanex, okcoincny, okcoinusd, okex, okex3, paymium, poloniex, rightbtc, southxchange, stronghold, surbitcoin, theocean, therock, tidebit, tidex, upbit, vaultoro, vbtc, virwox, xbtce, yobit, zaif, zb
+```
+
 ## List Timeframes
 
+Use the `list-timeframes` subcommand to see the list of ticker intervals (timeframes) available for the exchange.
+
 ```
 usage: freqtrade list-timeframes [-h] [--exchange EXCHANGE] [-1]
 
@@ -25,3 +41,16 @@ optional arguments:
   -1, --one-column     Print exchanges in one column.
 
 ```
+
+* Example: see the timeframes for the 'binance' exchange, set in the configuration file:
+
+```
+$ freqtrade -c config_binance.json list-timeframes
+...
+Timeframes available for the exchange `binance`: 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M
+```
+
+* Example: enumerate exchanges available for Freqtrade and print timeframes supported by each of them:
+```
+$ for i in `freqtrade list-exchanges -1`; do freqtrade list-timeframes --exchange $i; done
+```

From eca8ddabe99961165982c9a0ae28f55fbb7c570f Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 2 Oct 2019 10:59:45 +0200
Subject: [PATCH 0592/3421] Remove unused test-data

---
 tests/data/test_btanalysis.py   | 4 ++--
 tests/test_plotting.py          | 6 +++---
 tests/testdata/ADA_BTC-1m.json  | 1 -
 tests/testdata/DASH_BTC-1m.json | 1 -
 tests/testdata/ETC_BTC-1m.json  | 1 -
 tests/testdata/ETH_BTC-1m.json  | 1 -
 tests/testdata/LTC_BTC-1m.json  | 1 -
 tests/testdata/NXT_BTC-1m.json  | 1 -
 tests/testdata/POWR_BTC-1m.json | 1 -
 tests/testdata/XLM_BTC-1m.json  | 1 -
 tests/testdata/XMR_BTC-1m.json  | 1 -
 tests/testdata/ZEC_BTC-1m.json  | 1 -
 12 files changed, 5 insertions(+), 15 deletions(-)
 delete mode 100644 tests/testdata/ADA_BTC-1m.json
 delete mode 100644 tests/testdata/DASH_BTC-1m.json
 delete mode 100644 tests/testdata/ETC_BTC-1m.json
 delete mode 100644 tests/testdata/ETH_BTC-1m.json
 delete mode 100644 tests/testdata/LTC_BTC-1m.json
 delete mode 100644 tests/testdata/NXT_BTC-1m.json
 delete mode 100644 tests/testdata/POWR_BTC-1m.json
 delete mode 100644 tests/testdata/XLM_BTC-1m.json
 delete mode 100644 tests/testdata/XMR_BTC-1m.json
 delete mode 100644 tests/testdata/ZEC_BTC-1m.json

diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py
index 18326226c..27a8ee02e 100644
--- a/tests/data/test_btanalysis.py
+++ b/tests/data/test_btanalysis.py
@@ -108,7 +108,7 @@ def test_load_trades(default_conf, mocker):
 
 
 def test_combine_tickers_with_mean(testdatadir):
-    pairs = ["ETH/BTC", "XLM/BTC"]
+    pairs = ["ETH/BTC", "ADA/BTC"]
     tickers = load_data(datadir=testdatadir,
                         pairs=pairs,
                         ticker_interval='5m'
@@ -116,7 +116,7 @@ def test_combine_tickers_with_mean(testdatadir):
     df = combine_tickers_with_mean(tickers)
     assert isinstance(df, DataFrame)
     assert "ETH/BTC" in df.columns
-    assert "XLM/BTC" in df.columns
+    assert "ADA/BTC" in df.columns
     assert "mean" in df.columns
 
 
diff --git a/tests/test_plotting.py b/tests/test_plotting.py
index 9028ab961..1d0f030ea 100644
--- a/tests/test_plotting.py
+++ b/tests/test_plotting.py
@@ -53,11 +53,11 @@ def test_init_plotscript(default_conf, mocker, testdatadir):
     assert "trades" in ret
     assert "pairs" in ret
 
-    default_conf['pairs'] = ["POWR/BTC", "XLM/BTC"]
+    default_conf['pairs'] = ["POWR/BTC", "ADA/BTC"]
     ret = init_plotscript(default_conf)
     assert "tickers" in ret
     assert "POWR/BTC" in ret["tickers"]
-    assert "XLM/BTC" in ret["tickers"]
+    assert "ADA/BTC" in ret["tickers"]
 
 
 def test_add_indicators(default_conf, testdatadir, caplog):
@@ -247,7 +247,7 @@ def test_generate_profit_graph(testdatadir):
     filename = testdatadir / "backtest-result_test.json"
     trades = load_backtest_data(filename)
     timerange = TimeRange.parse_timerange("20180110-20180112")
-    pairs = ["POWR/BTC", "XLM/BTC"]
+    pairs = ["POWR/BTC", "ADA/BTC"]
 
     tickers = history.load_data(datadir=testdatadir,
                                 pairs=pairs,
diff --git a/tests/testdata/ADA_BTC-1m.json b/tests/testdata/ADA_BTC-1m.json
deleted file mode 100644
index fed55d293..000000000
--- a/tests/testdata/ADA_BTC-1m.json
+++ /dev/null
@@ -1 +0,0 @@
-[[1516424100000, 5.352e-05, 5.4e-05, 5.348e-05, 5.4e-05, 100380.64502838], [1516424160000, 5.399e-05, 5.41e-05, 5.337e-05, 5.345e-05, 395731.65051556], [1516424220000, 5.345e-05, 5.358e-05, 5.303e-05, 5.32e-05, 194541.85707997], [1516424280000, 5.32e-05, 5.325e-05, 5.281e-05, 5.281e-05, 332212.6400607], [1516424340000, 5.281e-05, 5.325e-05, 5.28e-05, 5.301e-05, 116982.73501469], [1516424400000, 5.312e-05, 5.312e-05, 5.26e-05, 5.28e-05, 102876.5307909], [1516424460000, 5.28e-05, 5.294e-05, 5.261e-05, 5.294e-05, 64904.94837251], [1516424520000, 5.294e-05, 5.294e-05, 5.263e-05, 5.264e-05, 178453.4371242], [1516424580000, 5.263e-05, 5.264e-05, 5.253e-05, 5.255e-05, 83906.40639888], [1516424640000, 5.255e-05, 5.255e-05, 5.197e-05, 5.2e-05, 349171.88612273], [1516424700000, 5.199e-05, 5.24e-05, 5.184e-05, 5.2e-05, 302551.35911589], [1516424760000, 5.2e-05, 5.26e-05, 5.185e-05, 5.242e-05, 484570.69827135], [1516424820000, 5.242e-05, 5.272e-05, 5.232e-05, 5.272e-05, 144646.72551497], [1516424880000, 5.272e-05, 5.339e-05, 5.25e-05, 5.277e-05, 149379.7118698], [1516424940000, 5.277e-05, 5.287e-05, 5.201e-05, 5.209e-05, 139033.07166641], [1516425000000, 5.247e-05, 5.247e-05, 5.201e-05, 5.21e-05, 100507.86944865], [1516425060000, 5.2e-05, 5.243e-05, 5.199e-05, 5.235e-05, 89717.75021943], [1516425120000, 5.235e-05, 5.257e-05, 5.2e-05, 5.243e-05, 90888.71059834], [1516425180000, 5.243e-05, 5.274e-05, 5.2e-05, 5.206e-05, 155006.16528218], [1516425240000, 5.206e-05, 5.237e-05, 5.173e-05, 5.208e-05, 171043.74933995], [1516425300000, 5.208e-05, 5.224e-05, 5.167e-05, 5.206e-05, 224162.45879218], [1516425360000, 5.216e-05, 5.217e-05, 5.191e-05, 5.215e-05, 65845.95804752], [1516425420000, 5.215e-05, 5.216e-05, 5.208e-05, 5.214e-05, 59373.74922559], [1516425480000, 5.214e-05, 5.214e-05, 5.178e-05, 5.21e-05, 106391.13192019], [1516425540000, 5.209e-05, 5.221e-05, 5.2e-05, 5.221e-05, 109132.75667969], [1516425600000, 5.224e-05, 5.274e-05, 5.201e-05, 5.247e-05, 84567.12062388], [1516425660000, 5.244e-05, 5.273e-05, 5.214e-05, 5.236e-05, 105279.32566436], [1516425720000, 5.231e-05, 5.236e-05, 5.22e-05, 5.231e-05, 23313.77769779], [1516425780000, 5.231e-05, 5.25e-05, 5.225e-05, 5.234e-05, 92209.53196111], [1516425840000, 5.242e-05, 5.267e-05, 5.234e-05, 5.244e-05, 52489.65639404], [1516425900000, 5.244e-05, 5.273e-05, 5.244e-05, 5.273e-05, 194407.27260643], [1516425960000, 5.273e-05, 5.32e-05, 5.272e-05, 5.32e-05, 57558.19408045], [1516426020000, 5.323e-05, 5.452e-05, 5.32e-05, 5.452e-05, 334379.88786581], [1516426080000, 5.435e-05, 5.495e-05, 5.431e-05, 5.478e-05, 471280.90903684], [1516426140000, 5.476e-05, 5.491e-05, 5.44e-05, 5.476e-05, 397957.89121223], [1516426200000, 5.48e-05, 5.486e-05, 5.475e-05, 5.475e-05, 117775.63678788], [1516426260000, 5.475e-05, 5.48e-05, 5.44e-05, 5.449e-05, 74811.16062928], [1516426320000, 5.449e-05, 5.45e-05, 5.44e-05, 5.441e-05, 58157.24244864], [1516426380000, 5.44e-05, 5.474e-05, 5.44e-05, 5.449e-05, 90397.09215844], [1516426440000, 5.472e-05, 5.475e-05, 5.452e-05, 5.472e-05, 58131.13179637], [1516426500000, 5.472e-05, 5.472e-05, 5.421e-05, 5.429e-05, 119490.71447895], [1516426560000, 5.421e-05, 5.428e-05, 5.39e-05, 5.39e-05, 29219.49939293], [1516426620000, 5.39e-05, 5.39e-05, 5.32e-05, 5.362e-05, 75669.41461829], [1516426680000, 5.362e-05, 5.362e-05, 5.312e-05, 5.32e-05, 106813.3154788], [1516426740000, 5.322e-05, 5.345e-05, 5.286e-05, 5.326e-05, 100190.21725546], [1516426800000, 5.326e-05, 5.39e-05, 5.3e-05, 5.365e-05, 181568.37907566], [1516426860000, 5.365e-05, 5.388e-05, 5.361e-05, 5.368e-05, 107635.61563178], [1516426920000, 5.368e-05, 5.39e-05, 5.363e-05, 5.39e-05, 73072.58313602], [1516426980000, 5.4e-05, 5.4e-05, 5.36e-05, 5.36e-05, 86362.65352502], [1516427040000, 5.362e-05, 5.363e-05, 5.338e-05, 5.363e-05, 131088.39071479], [1516427100000, 5.367e-05, 5.378e-05, 5.365e-05, 5.368e-05, 84272.66967354], [1516427160000, 5.376e-05, 5.378e-05, 5.376e-05, 5.376e-05, 30931.69491955], [1516427220000, 5.376e-05, 5.452e-05, 5.376e-05, 5.432e-05, 131012.40996835], [1516427280000, 5.432e-05, 5.475e-05, 5.409e-05, 5.475e-05, 196128.71901326], [1516427340000, 5.444e-05, 5.518e-05, 5.438e-05, 5.477e-05, 157703.38615821], [1516427400000, 5.516e-05, 5.516e-05, 5.479e-05, 5.5e-05, 58027.43643246], [1516427460000, 5.5e-05, 5.507e-05, 5.483e-05, 5.5e-05, 85139.07138981], [1516427520000, 5.5e-05, 5.507e-05, 5.5e-05, 5.503e-05, 42447.52438047], [1516427580000, 5.506e-05, 5.52e-05, 5.503e-05, 5.519e-05, 76697.66480153], [1516427640000, 5.518e-05, 5.519e-05, 5.518e-05, 5.519e-05, 43057.56397523], [1516427700000, 5.518e-05, 5.519e-05, 5.508e-05, 5.514e-05, 47778.81835548], [1516427760000, 5.514e-05, 5.522e-05, 5.509e-05, 5.51e-05, 88988.44849119], [1516427820000, 5.51e-05, 5.518e-05, 5.51e-05, 5.51e-05, 22157.45236396], [1516427880000, 5.518e-05, 5.525e-05, 5.515e-05, 5.524e-05, 45973.78648091], [1516427940000, 5.525e-05, 5.526e-05, 5.523e-05, 5.526e-05, 35268.36820089], [1516428000000, 5.531e-05, 5.573e-05, 5.523e-05, 5.557e-05, 217269.94750828], [1516428060000, 5.555e-05, 5.601e-05, 5.527e-05, 5.593e-05, 310021.93081874], [1516428120000, 5.593e-05, 5.615e-05, 5.583e-05, 5.591e-05, 114028.13540739], [1516428180000, 5.592e-05, 5.615e-05, 5.591e-05, 5.593e-05, 99772.06422862], [1516428240000, 5.593e-05, 5.6e-05, 5.583e-05, 5.59e-05, 46930.10574861], [1516428300000, 5.585e-05, 5.684e-05, 5.585e-05, 5.66e-05, 329208.85491605], [1516428360000, 5.683e-05, 5.711e-05, 5.66e-05, 5.703e-05, 448504.17648834], [1516428420000, 5.703e-05, 5.729e-05, 5.683e-05, 5.729e-05, 160031.1445147], [1516428480000, 5.728e-05, 5.734e-05, 5.626e-05, 5.626e-05, 365763.31098171], [1516428540000, 5.653e-05, 5.729e-05, 5.653e-05, 5.72e-05, 196614.06201088], [1516428600000, 5.689e-05, 5.72e-05, 5.623e-05, 5.7e-05, 119828.90076707], [1516428660000, 5.7e-05, 5.707e-05, 5.637e-05, 5.67e-05, 89581.11771086], [1516428720000, 5.67e-05, 5.715e-05, 5.638e-05, 5.66e-05, 336157.4931326], [1516428780000, 5.66e-05, 5.711e-05, 5.602e-05, 5.604e-05, 114521.01867548], [1516428840000, 5.606e-05, 5.647e-05, 5.604e-05, 5.623e-05, 64390.7915918], [1516428900000, 5.623e-05, 5.641e-05, 5.62e-05, 5.622e-05, 119354.16881823], [1516428960000, 5.62e-05, 5.623e-05, 5.605e-05, 5.622e-05, 89951.18364469], [1516429020000, 5.611e-05, 5.631e-05, 5.567e-05, 5.604e-05, 152104.87569315], [1516429080000, 5.61e-05, 5.61e-05, 5.594e-05, 5.608e-05, 58662.27254037], [1516429140000, 5.596e-05, 5.612e-05, 5.579e-05, 5.602e-05, 82978.22146076], [1516429200000, 5.603e-05, 5.611e-05, 5.6e-05, 5.603e-05, 25132.66604814], [1516429260000, 5.602e-05, 5.612e-05, 5.6e-05, 5.612e-05, 163661.83861542], [1516429320000, 5.612e-05, 5.612e-05, 5.58e-05, 5.6e-05, 59656.28223516], [1516429380000, 5.6e-05, 5.602e-05, 5.587e-05, 5.6e-05, 45035.98704921], [1516429440000, 5.6e-05, 5.611e-05, 5.6e-05, 5.602e-05, 15715.1714519], [1516429500000, 5.602e-05, 5.609e-05, 5.602e-05, 5.602e-05, 41271.37252742], [1516429560000, 5.602e-05, 5.605e-05, 5.601e-05, 5.602e-05, 16535.37207031], [1516429620000, 5.6e-05, 5.61e-05, 5.6e-05, 5.61e-05, 55548.41681895], [1516429680000, 5.601e-05, 5.612e-05, 5.601e-05, 5.61e-05, 57347.31293487], [1516429740000, 5.611e-05, 5.611e-05, 5.591e-05, 5.605e-05, 43031.1749188], [1516429800000, 5.588e-05, 5.588e-05, 5.573e-05, 5.579e-05, 38485.21518676], [1516429860000, 5.573e-05, 5.573e-05, 5.555e-05, 5.555e-05, 65455.90883012], [1516429920000, 5.555e-05, 5.556e-05, 5.538e-05, 5.55e-05, 37115.85613729], [1516429980000, 5.55e-05, 5.552e-05, 5.539e-05, 5.539e-05, 139147.37428223], [1516430040000, 5.54e-05, 5.571e-05, 5.539e-05, 5.552e-05, 67246.64325743], [1516430100000, 5.571e-05, 5.58e-05, 5.571e-05, 5.579e-05, 30790.17139808], [1516430160000, 5.571e-05, 5.571e-05, 5.55e-05, 5.552e-05, 25057.15549381], [1516430220000, 5.571e-05, 5.571e-05, 5.554e-05, 5.555e-05, 44579.17118567], [1516430280000, 5.555e-05, 5.57e-05, 5.554e-05, 5.558e-05, 48718.82097551], [1516430340000, 5.558e-05, 5.57e-05, 5.558e-05, 5.565e-05, 26455.40849714], [1516430400000, 5.565e-05, 5.57e-05, 5.565e-05, 5.565e-05, 27486.97536557], [1516430460000, 5.567e-05, 5.567e-05, 5.556e-05, 5.556e-05, 14957.28966164], [1516430520000, 5.557e-05, 5.565e-05, 5.556e-05, 5.558e-05, 30074.11947661], [1516430580000, 5.558e-05, 5.56e-05, 5.556e-05, 5.557e-05, 17697.2079197], [1516430640000, 5.557e-05, 5.558e-05, 5.556e-05, 5.558e-05, 18799.26116071], [1516430700000, 5.556e-05, 5.565e-05, 5.543e-05, 5.565e-05, 153455.72242895], [1516430760000, 5.56e-05, 5.565e-05, 5.544e-05, 5.557e-05, 7038.77172804], [1516430820000, 5.556e-05, 5.57e-05, 5.556e-05, 5.565e-05, 26281.42115929], [1516430880000, 5.569e-05, 5.594e-05, 5.556e-05, 5.594e-05, 91230.69741389], [1516430940000, 5.599e-05, 5.603e-05, 5.57e-05, 5.57e-05, 42358.88566575], [1516431000000, 5.595e-05, 5.595e-05, 5.575e-05, 5.575e-05, 10573.06601247], [1516431060000, 5.575e-05, 5.595e-05, 5.5e-05, 5.575e-05, 109307.7266331], [1516431120000, 5.593e-05, 5.6e-05, 5.579e-05, 5.6e-05, 39182.87005224], [1516431180000, 5.598e-05, 5.6e-05, 5.598e-05, 5.6e-05, 9115.99146663], [1516431240000, 5.598e-05, 5.6e-05, 5.598e-05, 5.6e-05, 5985.93983347], [1516431300000, 5.6e-05, 5.6e-05, 5.598e-05, 5.598e-05, 54355.29897469], [1516431360000, 5.578e-05, 5.598e-05, 5.578e-05, 5.598e-05, 3121.11582903], [1516431420000, 5.58e-05, 5.598e-05, 5.58e-05, 5.598e-05, 7769.12876809], [1516431480000, 5.58e-05, 5.597e-05, 5.564e-05, 5.564e-05, 19285.09545884], [1516431540000, 5.588e-05, 5.597e-05, 5.588e-05, 5.597e-05, 5380.83358526], [1516431600000, 5.597e-05, 5.597e-05, 5.596e-05, 5.596e-05, 7657.46072524], [1516431660000, 5.597e-05, 5.597e-05, 5.588e-05, 5.588e-05, 7235.08102406], [1516431720000, 5.588e-05, 5.594e-05, 5.581e-05, 5.588e-05, 39160.2384223], [1516431780000, 5.588e-05, 5.594e-05, 5.588e-05, 5.588e-05, 7251.66336532], [1516431840000, 5.588e-05, 5.596e-05, 5.588e-05, 5.595e-05, 11955.84061811], [1516431900000, 5.595e-05, 5.596e-05, 5.594e-05, 5.595e-05, 30716.05487046], [1516431960000, 5.595e-05, 5.596e-05, 5.595e-05, 5.595e-05, 1053.03004884], [1516432020000, 5.595e-05, 5.595e-05, 5.594e-05, 5.594e-05, 7171.08615517], [1516432080000, 5.595e-05, 5.6e-05, 5.568e-05, 5.589e-05, 56460.19583332], [1516432140000, 5.594e-05, 5.6e-05, 5.582e-05, 5.582e-05, 50718.45892028], [1516432200000, 5.584e-05, 5.593e-05, 5.584e-05, 5.593e-05, 1441.66368879], [1516432260000, 5.593e-05, 5.6e-05, 5.593e-05, 5.594e-05, 119321.26373447], [1516432320000, 5.6e-05, 5.6e-05, 5.595e-05, 5.6e-05, 73071.82713522], [1516432380000, 5.599e-05, 5.6e-05, 5.593e-05, 5.594e-05, 23765.21520092], [1516432440000, 5.594e-05, 5.6e-05, 5.594e-05, 5.6e-05, 68078.77961796], [1516432500000, 5.595e-05, 5.6e-05, 5.588e-05, 5.596e-05, 12566.30655084], [1516432560000, 5.596e-05, 5.6e-05, 5.596e-05, 5.596e-05, 12508.40343475], [1516432620000, 5.596e-05, 5.599e-05, 5.596e-05, 5.599e-05, 5939.72360572], [1516432680000, 5.599e-05, 5.6e-05, 5.599e-05, 5.6e-05, 61947.26941621], [1516432740000, 5.6e-05, 5.6e-05, 5.596e-05, 5.596e-05, 30528.42675919], [1516432800000, 5.596e-05, 5.6e-05, 5.595e-05, 5.596e-05, 40534.93512875], [1516432860000, 5.596e-05, 5.6e-05, 5.595e-05, 5.595e-05, 8849.89023708], [1516432920000, 5.595e-05, 5.595e-05, 5.587e-05, 5.59e-05, 24909.9424738], [1516432980000, 5.589e-05, 5.589e-05, 5.587e-05, 5.589e-05, 10305.34246406], [1516433040000, 5.587e-05, 5.589e-05, 5.587e-05, 5.587e-05, 7218.08221964], [1516433100000, 5.589e-05, 5.589e-05, 5.587e-05, 5.587e-05, 1773.10426586], [1516433160000, 5.588e-05, 5.588e-05, 5.586e-05, 5.587e-05, 18766.84647461], [1516433220000, 5.587e-05, 5.587e-05, 5.57e-05, 5.58e-05, 14261.96778583], [1516433280000, 5.58e-05, 5.586e-05, 5.57e-05, 5.58e-05, 8923.47657057], [1516433340000, 5.586e-05, 5.586e-05, 5.58e-05, 5.586e-05, 85172.51134103], [1516433400000, 5.586e-05, 5.586e-05, 5.58e-05, 5.581e-05, 38431.49899845], [1516433460000, 5.585e-05, 5.585e-05, 5.581e-05, 5.585e-05, 8179.27495917], [1516433520000, 5.585e-05, 5.586e-05, 5.581e-05, 5.582e-05, 5318.18516609], [1516433580000, 5.582e-05, 5.586e-05, 5.581e-05, 5.582e-05, 73908.21683918], [1516433640000, 5.581e-05, 5.581e-05, 5.552e-05, 5.563e-05, 58061.72011058], [1516433700000, 5.567e-05, 5.579e-05, 5.558e-05, 5.563e-05, 38255.39012523], [1516433760000, 5.563e-05, 5.581e-05, 5.56e-05, 5.581e-05, 32210.65057719], [1516433820000, 5.569e-05, 5.581e-05, 5.569e-05, 5.581e-05, 7927.46934881], [1516433880000, 5.57e-05, 5.581e-05, 5.57e-05, 5.581e-05, 9509.33380803], [1516433940000, 5.581e-05, 5.586e-05, 5.581e-05, 5.586e-05, 133177.1547047], [1516434000000, 5.582e-05, 5.582e-05, 5.581e-05, 5.581e-05, 8502.89211982], [1516434060000, 5.581e-05, 5.582e-05, 5.57e-05, 5.57e-05, 13963.72882819], [1516434120000, 5.57e-05, 5.581e-05, 5.57e-05, 5.57e-05, 7808.69702717], [1516434180000, 5.57e-05, 5.581e-05, 5.569e-05, 5.569e-05, 12191.31077001], [1516434240000, 5.575e-05, 5.581e-05, 5.564e-05, 5.575e-05, 17449.58622438], [1516434300000, 5.575e-05, 5.575e-05, 5.571e-05, 5.572e-05, 1530.36735348], [1516434360000, 5.572e-05, 5.575e-05, 5.572e-05, 5.572e-05, 17906.85927497], [1516434420000, 5.573e-05, 5.575e-05, 5.572e-05, 5.574e-05, 9413.72683074], [1516434480000, 5.574e-05, 5.574e-05, 5.572e-05, 5.573e-05, 48042.096239], [1516434540000, 5.573e-05, 5.573e-05, 5.572e-05, 5.573e-05, 21434.711432], [1516434600000, 5.572e-05, 5.573e-05, 5.57e-05, 5.57e-05, 75372.92614247], [1516434660000, 5.57e-05, 5.571e-05, 5.564e-05, 5.571e-05, 12562.58452584], [1516434720000, 5.57e-05, 5.571e-05, 5.569e-05, 5.569e-05, 2241.89288358], [1516434780000, 5.569e-05, 5.569e-05, 5.569e-05, 5.569e-05, 350.93442016], [1516434840000, 5.563e-05, 5.569e-05, 5.563e-05, 5.563e-05, 7377.91674217], [1516434900000, 5.563e-05, 5.563e-05, 5.555e-05, 5.563e-05, 66742.67844913], [1516434960000, 5.562e-05, 5.562e-05, 5.55e-05, 5.553e-05, 43721.28613425], [1516435020000, 5.553e-05, 5.553e-05, 5.541e-05, 5.545e-05, 18061.29169765], [1516435080000, 5.545e-05, 5.552e-05, 5.538e-05, 5.541e-05, 34807.8522225], [1516435140000, 5.541e-05, 5.541e-05, 5.463e-05, 5.537e-05, 663728.63828468], [1516435200000, 5.537e-05, 5.548e-05, 5.513e-05, 5.538e-05, 7528.66850268], [1516435260000, 5.537e-05, 5.551e-05, 5.513e-05, 5.526e-05, 46509.68287911], [1516435320000, 5.552e-05, 5.552e-05, 5.526e-05, 5.532e-05, 10788.39751041], [1516435380000, 5.55e-05, 5.55e-05, 5.532e-05, 5.549e-05, 11427.7352881], [1516435440000, 5.549e-05, 5.549e-05, 5.537e-05, 5.548e-05, 34295.34913323], [1516435500000, 5.548e-05, 5.548e-05, 5.532e-05, 5.532e-05, 33589.33367638], [1516435560000, 5.532e-05, 5.532e-05, 5.515e-05, 5.525e-05, 62057.33737732], [1516435620000, 5.526e-05, 5.548e-05, 5.519e-05, 5.523e-05, 29255.2596152], [1516435680000, 5.525e-05, 5.547e-05, 5.524e-05, 5.546e-05, 22017.26098628], [1516435740000, 5.54e-05, 5.546e-05, 5.528e-05, 5.532e-05, 88940.94868984], [1516435800000, 5.532e-05, 5.532e-05, 5.526e-05, 5.526e-05, 26827.45041123], [1516435860000, 5.529e-05, 5.532e-05, 5.525e-05, 5.531e-05, 101542.19452768], [1516435920000, 5.53e-05, 5.533e-05, 5.515e-05, 5.532e-05, 160983.97848827], [1516435980000, 5.532e-05, 5.544e-05, 5.532e-05, 5.537e-05, 17742.08581996], [1516436040000, 5.537e-05, 5.545e-05, 5.537e-05, 5.539e-05, 19849.55759964], [1516436100000, 5.537e-05, 5.537e-05, 5.534e-05, 5.535e-05, 751.92663373], [1516436160000, 5.534e-05, 5.536e-05, 5.534e-05, 5.535e-05, 9526.22815204], [1516436220000, 5.535e-05, 5.535e-05, 5.53e-05, 5.53e-05, 18356.6828911], [1516436280000, 5.53e-05, 5.534e-05, 5.53e-05, 5.53e-05, 5367.68399012], [1516436340000, 5.533e-05, 5.539e-05, 5.533e-05, 5.535e-05, 23349.35721047], [1516436400000, 5.535e-05, 5.544e-05, 5.517e-05, 5.544e-05, 12619.70189666], [1516436460000, 5.544e-05, 5.544e-05, 5.534e-05, 5.534e-05, 19179.33352992], [1516436520000, 5.534e-05, 5.542e-05, 5.524e-05, 5.525e-05, 99821.73498234], [1516436580000, 5.525e-05, 5.525e-05, 5.517e-05, 5.518e-05, 85647.06951052], [1516436640000, 5.518e-05, 5.525e-05, 5.518e-05, 5.525e-05, 50616.89608284], [1516436700000, 5.523e-05, 5.525e-05, 5.519e-05, 5.525e-05, 105474.38033226], [1516436760000, 5.525e-05, 5.525e-05, 5.52e-05, 5.522e-05, 43346.91896039], [1516436820000, 5.522e-05, 5.525e-05, 5.518e-05, 5.524e-05, 41053.23700143], [1516436880000, 5.525e-05, 5.525e-05, 5.516e-05, 5.516e-05, 88824.97593857], [1516436940000, 5.517e-05, 5.525e-05, 5.515e-05, 5.524e-05, 604010.17279228], [1516437000000, 5.524e-05, 5.525e-05, 5.514e-05, 5.525e-05, 98469.31940592], [1516437060000, 5.517e-05, 5.523e-05, 5.515e-05, 5.515e-05, 12794.37287491], [1516437120000, 5.515e-05, 5.523e-05, 5.515e-05, 5.522e-05, 7162.91576812], [1516437180000, 5.523e-05, 5.525e-05, 5.515e-05, 5.516e-05, 5885.99741996], [1516437240000, 5.522e-05, 5.522e-05, 5.515e-05, 5.515e-05, 21001.10045203], [1516437300000, 5.516e-05, 5.516e-05, 5.514e-05, 5.516e-05, 32551.40801378], [1516437360000, 5.516e-05, 5.516e-05, 5.515e-05, 5.515e-05, 19422.51733037], [1516437420000, 5.515e-05, 5.516e-05, 5.514e-05, 5.515e-05, 110848.00732217], [1516437480000, 5.516e-05, 5.516e-05, 5.514e-05, 5.515e-05, 11329.59974842], [1516437540000, 5.515e-05, 5.515e-05, 5.514e-05, 5.514e-05, 17968.66844054], [1516437600000, 5.515e-05, 5.515e-05, 5.514e-05, 5.514e-05, 23771.47012061], [1516437660000, 5.514e-05, 5.515e-05, 5.505e-05, 5.505e-05, 37646.59007869], [1516437720000, 5.51e-05, 5.51e-05, 5.499e-05, 5.499e-05, 39219.03931043], [1516437780000, 5.494e-05, 5.499e-05, 5.491e-05, 5.492e-05, 53529.39332935], [1516437840000, 5.498e-05, 5.499e-05, 5.483e-05, 5.498e-05, 56031.72039761], [1516437900000, 5.497e-05, 5.497e-05, 5.488e-05, 5.497e-05, 54160.24938026], [1516437960000, 5.498e-05, 5.499e-05, 5.497e-05, 5.499e-05, 99255.22865608], [1516438020000, 5.498e-05, 5.499e-05, 5.498e-05, 5.499e-05, 98627.49980966], [1516438080000, 5.499e-05, 5.499e-05, 5.498e-05, 5.499e-05, 7983.14355314], [1516438140000, 5.498e-05, 5.503e-05, 5.485e-05, 5.499e-05, 43387.34225727], [1516438200000, 5.501e-05, 5.501e-05, 5.499e-05, 5.501e-05, 10908.63846711], [1516438260000, 5.499e-05, 5.501e-05, 5.498e-05, 5.5e-05, 17169.9595611], [1516438320000, 5.499e-05, 5.5e-05, 5.486e-05, 5.499e-05, 17477.90684512], [1516438380000, 5.5e-05, 5.5e-05, 5.485e-05, 5.485e-05, 58806.95922321], [1516438440000, 5.483e-05, 5.485e-05, 5.483e-05, 5.483e-05, 13291.9737914], [1516438500000, 5.482e-05, 5.482e-05, 5.464e-05, 5.464e-05, 40830.44638488], [1516438560000, 5.47e-05, 5.47e-05, 5.464e-05, 5.47e-05, 18095.80452429], [1516438620000, 5.47e-05, 5.47e-05, 5.464e-05, 5.47e-05, 63869.63741188], [1516438680000, 5.463e-05, 5.471e-05, 5.46e-05, 5.471e-05, 41806.82287307], [1516438740000, 5.471e-05, 5.471e-05, 5.46e-05, 5.47e-05, 17258.10997425], [1516438800000, 5.46e-05, 5.471e-05, 5.46e-05, 5.471e-05, 19734.07225098], [1516438860000, 5.471e-05, 5.472e-05, 5.47e-05, 5.472e-05, 11360.88263143], [1516438920000, 5.472e-05, 5.472e-05, 5.45e-05, 5.459e-05, 10120.06945681], [1516438980000, 5.459e-05, 5.472e-05, 5.459e-05, 5.472e-05, 5414.01394948], [1516439040000, 5.472e-05, 5.48e-05, 5.471e-05, 5.477e-05, 18588.53222772], [1516439100000, 5.48e-05, 5.48e-05, 5.477e-05, 5.48e-05, 11556.49092664], [1516439160000, 5.48e-05, 5.48e-05, 5.479e-05, 5.48e-05, 15990.67361827], [1516439220000, 5.479e-05, 5.482e-05, 5.474e-05, 5.482e-05, 146169.59873131], [1516439280000, 5.482e-05, 5.482e-05, 5.475e-05, 5.482e-05, 18536.18144971], [1516439340000, 5.482e-05, 5.482e-05, 5.475e-05, 5.475e-05, 15635.14325994], [1516439400000, 5.476e-05, 5.485e-05, 5.475e-05, 5.483e-05, 23475.31684077], [1516439460000, 5.483e-05, 5.483e-05, 5.475e-05, 5.483e-05, 43555.69000086], [1516439520000, 5.483e-05, 5.483e-05, 5.475e-05, 5.483e-05, 137037.33358216], [1516439580000, 5.483e-05, 5.499e-05, 5.475e-05, 5.485e-05, 102406.87548017], [1516439640000, 5.485e-05, 5.486e-05, 5.483e-05, 5.483e-05, 14689.64182971], [1516439700000, 5.484e-05, 5.485e-05, 5.482e-05, 5.482e-05, 19909.26902188], [1516439760000, 5.48e-05, 5.483e-05, 5.459e-05, 5.462e-05, 16768.07069457], [1516439820000, 5.463e-05, 5.481e-05, 5.463e-05, 5.481e-05, 7176.22928556], [1516439880000, 5.481e-05, 5.483e-05, 5.479e-05, 5.482e-05, 28364.50087493], [1516439940000, 5.481e-05, 5.486e-05, 5.48e-05, 5.483e-05, 103394.4657592], [1516440000000, 5.483e-05, 5.484e-05, 5.483e-05, 5.484e-05, 3052.8351546], [1516440060000, 5.484e-05, 5.495e-05, 5.483e-05, 5.495e-05, 38063.44390187], [1516440120000, 5.484e-05, 5.496e-05, 5.484e-05, 5.495e-05, 15212.33983166], [1516440180000, 5.485e-05, 5.495e-05, 5.485e-05, 5.495e-05, 17908.19337371], [1516440240000, 5.495e-05, 5.495e-05, 5.49e-05, 5.491e-05, 7666.71032879], [1516440300000, 5.491e-05, 5.496e-05, 5.491e-05, 5.496e-05, 14513.59996102], [1516440360000, 5.495e-05, 5.496e-05, 5.492e-05, 5.496e-05, 31991.59524658], [1516440420000, 5.492e-05, 5.499e-05, 5.492e-05, 5.492e-05, 19124.86749528], [1516440480000, 5.492e-05, 5.499e-05, 5.492e-05, 5.499e-05, 98950.08993678], [1516440540000, 5.498e-05, 5.499e-05, 5.493e-05, 5.493e-05, 12594.97199592], [1516440600000, 5.493e-05, 5.499e-05, 5.493e-05, 5.495e-05, 10141.89585332], [1516440660000, 5.496e-05, 5.499e-05, 5.493e-05, 5.498e-05, 8568.59251638], [1516440720000, 5.498e-05, 5.498e-05, 5.497e-05, 5.497e-05, 4443.59249695], [1516440780000, 5.498e-05, 5.498e-05, 5.493e-05, 5.493e-05, 1020.36711778], [1516440840000, 5.493e-05, 5.495e-05, 5.493e-05, 5.495e-05, 3323.07690764], [1516440900000, 5.493e-05, 5.495e-05, 5.493e-05, 5.493e-05, 1891.65498233], [1516440960000, 5.493e-05, 5.495e-05, 5.493e-05, 5.495e-05, 17270.36331612], [1516441020000, 5.495e-05, 5.495e-05, 5.493e-05, 5.493e-05, 2297.06054088], [1516441080000, 5.495e-05, 5.495e-05, 5.493e-05, 5.493e-05, 1944.59228656], [1516441140000, 5.493e-05, 5.496e-05, 5.493e-05, 5.496e-05, 9255.01220299], [1516441200000, 5.496e-05, 5.496e-05, 5.496e-05, 5.496e-05, 7829.78004109], [1516441260000, 5.496e-05, 5.496e-05, 5.495e-05, 5.496e-05, 18042.2854396], [1516441320000, 5.496e-05, 5.497e-05, 5.495e-05, 5.497e-05, 19654.93946625], [1516441380000, 5.497e-05, 5.497e-05, 5.492e-05, 5.492e-05, 42182.27033662], [1516441440000, 5.497e-05, 5.497e-05, 5.49e-05, 5.497e-05, 38315.24062484], [1516441500000, 5.491e-05, 5.497e-05, 5.488e-05, 5.491e-05, 34883.36728975], [1516441560000, 5.491e-05, 5.494e-05, 5.491e-05, 5.491e-05, 3625.91527176], [1516441620000, 5.491e-05, 5.491e-05, 5.49e-05, 5.491e-05, 11264.38952783], [1516441680000, 5.491e-05, 5.491e-05, 5.49e-05, 5.491e-05, 2820.36277418], [1516441740000, 5.491e-05, 5.491e-05, 5.49e-05, 5.491e-05, 13879.0700302], [1516441800000, 5.491e-05, 5.496e-05, 5.491e-05, 5.495e-05, 4650.18413339], [1516441860000, 5.492e-05, 5.496e-05, 5.491e-05, 5.495e-05, 7523.90107567], [1516441920000, 5.495e-05, 5.495e-05, 5.491e-05, 5.495e-05, 1486.5289788], [1516441980000, 5.495e-05, 5.495e-05, 5.491e-05, 5.492e-05, 3499.47940419], [1516442040000, 5.494e-05, 5.495e-05, 5.485e-05, 5.49e-05, 97824.58711945], [1516442100000, 5.491e-05, 5.494e-05, 5.491e-05, 5.494e-05, 6399.93171683], [1516442160000, 5.494e-05, 5.494e-05, 5.489e-05, 5.491e-05, 64654.24896227], [1516442220000, 5.491e-05, 5.494e-05, 5.484e-05, 5.494e-05, 26563.08999201], [1516442280000, 5.494e-05, 5.494e-05, 5.483e-05, 5.49e-05, 21703.11737703], [1516442340000, 5.49e-05, 5.494e-05, 5.49e-05, 5.493e-05, 4919.79472816], [1516442400000, 5.493e-05, 5.494e-05, 5.49e-05, 5.492e-05, 31676.89133811], [1516442460000, 5.492e-05, 5.494e-05, 5.486e-05, 5.494e-05, 36502.99911722], [1516442520000, 5.494e-05, 5.494e-05, 5.49e-05, 5.494e-05, 14382.99675714], [1516442580000, 5.494e-05, 5.494e-05, 5.49e-05, 5.494e-05, 39573.35883981], [1516442640000, 5.494e-05, 5.494e-05, 5.468e-05, 5.492e-05, 50395.55966062], [1516442700000, 5.494e-05, 5.494e-05, 5.459e-05, 5.48e-05, 92937.36339998], [1516442760000, 5.48e-05, 5.481e-05, 5.462e-05, 5.481e-05, 29944.41560673], [1516442820000, 5.463e-05, 5.494e-05, 5.461e-05, 5.493e-05, 22624.22345852], [1516442880000, 5.482e-05, 5.493e-05, 5.48e-05, 5.493e-05, 6523.39185325], [1516442940000, 5.479e-05, 5.491e-05, 5.462e-05, 5.485e-05, 11437.61553916], [1516443000000, 5.484e-05, 5.485e-05, 5.463e-05, 5.485e-05, 3196.80378966], [1516443060000, 5.464e-05, 5.485e-05, 5.461e-05, 5.484e-05, 5319.89473404], [1516443120000, 5.484e-05, 5.484e-05, 5.471e-05, 5.484e-05, 13687.58726634], [1516443180000, 5.484e-05, 5.484e-05, 5.479e-05, 5.483e-05, 9524.2135713], [1516443240000, 5.483e-05, 5.483e-05, 5.471e-05, 5.482e-05, 16717.64767815], [1516443300000, 5.482e-05, 5.482e-05, 5.481e-05, 5.482e-05, 1494.02311979], [1516443360000, 5.48e-05, 5.48e-05, 5.46e-05, 5.48e-05, 18163.53475678], [1516443420000, 5.48e-05, 5.48e-05, 5.48e-05, 5.48e-05, 15148.36973299], [1516443480000, 5.48e-05, 5.48e-05, 5.464e-05, 5.48e-05, 16938.74888497], [1516443540000, 5.48e-05, 5.48e-05, 5.464e-05, 5.48e-05, 25931.87846089], [1516443600000, 5.48e-05, 5.48e-05, 5.465e-05, 5.479e-05, 40407.74207455], [1516443660000, 5.478e-05, 5.479e-05, 5.478e-05, 5.479e-05, 4729.07517144], [1516443720000, 5.479e-05, 5.48e-05, 5.479e-05, 5.48e-05, 18024.45373731], [1516443780000, 5.479e-05, 5.48e-05, 5.479e-05, 5.48e-05, 20979.53496032], [1516443840000, 5.48e-05, 5.48e-05, 5.46e-05, 5.466e-05, 25056.16557761], [1516443900000, 5.479e-05, 5.48e-05, 5.466e-05, 5.48e-05, 42195.00902717], [1516443960000, 5.479e-05, 5.48e-05, 5.478e-05, 5.48e-05, 24769.5202579], [1516444020000, 5.48e-05, 5.48e-05, 5.46e-05, 5.48e-05, 145847.49191655], [1516444080000, 5.48e-05, 5.48e-05, 5.476e-05, 5.48e-05, 60310.63459531], [1516444140000, 5.48e-05, 5.48e-05, 5.479e-05, 5.48e-05, 26933.09236779], [1516444200000, 5.48e-05, 5.48e-05, 5.473e-05, 5.48e-05, 34159.36012323], [1516444260000, 5.48e-05, 5.48e-05, 5.475e-05, 5.475e-05, 5657.05866244], [1516444320000, 5.475e-05, 5.48e-05, 5.475e-05, 5.48e-05, 4312.96606093], [1516444380000, 5.48e-05, 5.48e-05, 5.479e-05, 5.48e-05, 22776.13668927], [1516444440000, 5.48e-05, 5.48e-05, 5.479e-05, 5.479e-05, 108127.45144781], [1516444500000, 5.479e-05, 5.48e-05, 5.479e-05, 5.48e-05, 31305.47289149], [1516444560000, 5.48e-05, 5.48e-05, 5.475e-05, 5.48e-05, 47693.43635162], [1516444620000, 5.48e-05, 5.48e-05, 5.476e-05, 5.48e-05, 14833.01382687], [1516444680000, 5.476e-05, 5.48e-05, 5.462e-05, 5.48e-05, 16932.0854752], [1516444740000, 5.48e-05, 5.48e-05, 5.465e-05, 5.48e-05, 34909.54445581], [1516444800000, 5.47e-05, 5.48e-05, 5.47e-05, 5.47e-05, 5102.84605732], [1516444860000, 5.48e-05, 5.48e-05, 5.47e-05, 5.48e-05, 51137.36324347], [1516444920000, 5.479e-05, 5.479e-05, 5.47e-05, 5.478e-05, 2037.45750344], [1516444980000, 5.479e-05, 5.48e-05, 5.478e-05, 5.478e-05, 8967.5186034], [1516445040000, 5.479e-05, 5.48e-05, 5.479e-05, 5.48e-05, 8630.06616469], [1516445100000, 5.48e-05, 5.48e-05, 5.479e-05, 5.48e-05, 10401.36701966], [1516445160000, 5.48e-05, 5.48e-05, 5.479e-05, 5.479e-05, 62118.42246042], [1516445220000, 5.48e-05, 5.494e-05, 5.479e-05, 5.48e-05, 56131.16847343], [1516445280000, 5.479e-05, 5.499e-05, 5.479e-05, 5.499e-05, 54245.34312608], [1516445340000, 5.499e-05, 5.499e-05, 5.481e-05, 5.481e-05, 6559.86914038], [1516445400000, 5.482e-05, 5.492e-05, 5.481e-05, 5.481e-05, 5493.58016213], [1516445460000, 5.495e-05, 5.495e-05, 5.491e-05, 5.491e-05, 3388.58375342], [1516445520000, 5.491e-05, 5.495e-05, 5.482e-05, 5.495e-05, 12684.88488438], [1516445580000, 5.495e-05, 5.495e-05, 5.488e-05, 5.493e-05, 5730.34188477], [1516445640000, 5.493e-05, 5.499e-05, 5.491e-05, 5.491e-05, 9312.47217063], [1516445700000, 5.498e-05, 5.498e-05, 5.491e-05, 5.494e-05, 4684.60881947], [1516445760000, 5.494e-05, 5.495e-05, 5.485e-05, 5.49e-05, 20755.19322629], [1516445820000, 5.485e-05, 5.49e-05, 5.483e-05, 5.485e-05, 43058.27132195], [1516445880000, 5.485e-05, 5.49e-05, 5.46e-05, 5.49e-05, 56822.74021105], [1516445940000, 5.49e-05, 5.495e-05, 5.377e-05, 5.46e-05, 953762.83986191], [1516446000000, 5.491e-05, 5.491e-05, 5.46e-05, 5.462e-05, 31614.00911212], [1516446060000, 5.462e-05, 5.481e-05, 5.462e-05, 5.48e-05, 14314.41501734], [1516446120000, 5.48e-05, 5.48e-05, 5.463e-05, 5.463e-05, 2432.47692752], [1516446180000, 5.463e-05, 5.463e-05, 5.463e-05, 5.463e-05, 2612.31601138], [1516446240000, 5.463e-05, 5.463e-05, 5.46e-05, 5.461e-05, 1427.38771144], [1516446300000, 5.46e-05, 5.483e-05, 5.453e-05, 5.482e-05, 28877.25065997], [1516446360000, 5.483e-05, 5.483e-05, 5.452e-05, 5.455e-05, 30957.08655513], [1516446420000, 5.455e-05, 5.481e-05, 5.455e-05, 5.46e-05, 4163.51386023], [1516446480000, 5.46e-05, 5.483e-05, 5.441e-05, 5.46e-05, 5449.13520514], [1516446540000, 5.46e-05, 5.478e-05, 5.456e-05, 5.478e-05, 2744.06444544], [1516446600000, 5.478e-05, 5.478e-05, 5.46e-05, 5.477e-05, 719.13542534], [1516446660000, 5.477e-05, 5.481e-05, 5.477e-05, 5.48e-05, 5051.83108606], [1516446720000, 5.479e-05, 5.48e-05, 5.478e-05, 5.478e-05, 11290.09441954], [1516446780000, 5.478e-05, 5.48e-05, 5.464e-05, 5.478e-05, 16201.01813199], [1516446840000, 5.479e-05, 5.479e-05, 5.461e-05, 5.461e-05, 9039.2607173], [1516446900000, 5.462e-05, 5.477e-05, 5.462e-05, 5.465e-05, 1535.32748355], [1516446960000, 5.465e-05, 5.476e-05, 5.465e-05, 5.466e-05, 3366.52171259], [1516447020000, 5.466e-05, 5.475e-05, 5.466e-05, 5.467e-05, 2788.92800727], [1516447080000, 5.467e-05, 5.476e-05, 5.467e-05, 5.476e-05, 54434.48638523], [1516447140000, 5.476e-05, 5.479e-05, 5.476e-05, 5.476e-05, 33527.9353779], [1516447200000, 5.478e-05, 5.495e-05, 5.477e-05, 5.495e-05, 6414.4384825], [1516447260000, 5.494e-05, 5.494e-05, 5.49e-05, 5.494e-05, 1739.11990339], [1516447320000, 5.494e-05, 5.494e-05, 5.49e-05, 5.494e-05, 8097.68926755], [1516447380000, 5.494e-05, 5.494e-05, 5.49e-05, 5.491e-05, 2128.51241186], [1516447440000, 5.49e-05, 5.491e-05, 5.49e-05, 5.491e-05, 6563.12574784], [1516447500000, 5.49e-05, 5.49e-05, 5.475e-05, 5.49e-05, 24816.36469251], [1516447560000, 5.49e-05, 5.491e-05, 5.49e-05, 5.49e-05, 3632.20061405], [1516447620000, 5.491e-05, 5.491e-05, 5.476e-05, 5.49e-05, 12169.79851408], [1516447680000, 5.49e-05, 5.494e-05, 5.49e-05, 5.491e-05, 16496.8234176], [1516447740000, 5.491e-05, 5.491e-05, 5.475e-05, 5.49e-05, 17278.74219242], [1516447800000, 5.49e-05, 5.494e-05, 5.475e-05, 5.477e-05, 29726.71901115], [1516447860000, 5.494e-05, 5.494e-05, 5.494e-05, 5.494e-05, 1615.71639677], [1516447920000, 5.478e-05, 5.493e-05, 5.478e-05, 5.48e-05, 814.62836097], [1516447980000, 5.481e-05, 5.493e-05, 5.475e-05, 5.49e-05, 4302.51542426], [1516448040000, 5.49e-05, 5.493e-05, 5.475e-05, 5.493e-05, 22757.15058289], [1516448100000, 5.493e-05, 5.493e-05, 5.475e-05, 5.493e-05, 6487.43535086], [1516448160000, 5.493e-05, 5.494e-05, 5.493e-05, 5.494e-05, 17170.51077283], [1516448220000, 5.494e-05, 5.494e-05, 5.477e-05, 5.494e-05, 14658.94804767], [1516448280000, 5.494e-05, 5.494e-05, 5.477e-05, 5.493e-05, 8745.88542103], [1516448340000, 5.492e-05, 5.493e-05, 5.49e-05, 5.493e-05, 497.51980499], [1516448400000, 5.493e-05, 5.494e-05, 5.48e-05, 5.494e-05, 14249.18649351], [1516448460000, 5.496e-05, 5.5e-05, 5.494e-05, 5.5e-05, 24057.1596232], [1516448520000, 5.498e-05, 5.5e-05, 5.498e-05, 5.498e-05, 11277.45549099], [1516448580000, 5.499e-05, 5.499e-05, 5.498e-05, 5.499e-05, 28728.69030287], [1516448640000, 5.498e-05, 5.499e-05, 5.493e-05, 5.499e-05, 63355.48199034], [1516448700000, 5.498e-05, 5.499e-05, 5.495e-05, 5.496e-05, 62333.91797029], [1516448760000, 5.498e-05, 5.501e-05, 5.496e-05, 5.5e-05, 27598.30724887], [1516448820000, 5.499e-05, 5.502e-05, 5.499e-05, 5.502e-05, 18542.93619121], [1516448880000, 5.502e-05, 5.502e-05, 5.5e-05, 5.501e-05, 5212.09300306], [1516448940000, 5.501e-05, 5.502e-05, 5.5e-05, 5.502e-05, 12968.22708928], [1516449000000, 5.502e-05, 5.502e-05, 5.5e-05, 5.5e-05, 49691.85431912], [1516449060000, 5.5e-05, 5.502e-05, 5.5e-05, 5.5e-05, 11994.7872398], [1516449120000, 5.5e-05, 5.502e-05, 5.5e-05, 5.501e-05, 8350.14413071], [1516449180000, 5.501e-05, 5.501e-05, 5.496e-05, 5.496e-05, 11092.99617104], [1516449240000, 5.496e-05, 5.5e-05, 5.495e-05, 5.499e-05, 2884.29950888], [1516449300000, 5.499e-05, 5.5e-05, 5.495e-05, 5.5e-05, 58755.88106651], [1516449360000, 5.5e-05, 5.5e-05, 5.499e-05, 5.499e-05, 6750.30622327], [1516449420000, 5.499e-05, 5.512e-05, 5.497e-05, 5.512e-05, 51307.51865274], [1516449480000, 5.51e-05, 5.524e-05, 5.51e-05, 5.513e-05, 20261.70396288], [1516449540000, 5.514e-05, 5.538e-05, 5.514e-05, 5.53e-05, 24616.07671094], [1516449600000, 5.536e-05, 5.538e-05, 5.496e-05, 5.496e-05, 27747.31305139], [1516449660000, 5.497e-05, 5.538e-05, 5.497e-05, 5.53e-05, 2535.76262986], [1516449720000, 5.53e-05, 5.53e-05, 5.498e-05, 5.5e-05, 12813.00718719], [1516449780000, 5.527e-05, 5.53e-05, 5.5e-05, 5.53e-05, 15354.62487895], [1516449840000, 5.53e-05, 5.536e-05, 5.524e-05, 5.535e-05, 8404.32997635], [1516449900000, 5.508e-05, 5.532e-05, 5.5e-05, 5.532e-05, 19199.14256729], [1516449960000, 5.531e-05, 5.531e-05, 5.508e-05, 5.525e-05, 1089.98743951], [1516450020000, 5.522e-05, 5.525e-05, 5.5e-05, 5.525e-05, 46759.68612532], [1516450080000, 5.5e-05, 5.521e-05, 5.5e-05, 5.516e-05, 8903.21647348], [1516450140000, 5.515e-05, 5.516e-05, 5.5e-05, 5.514e-05, 24163.24469367], [1516450200000, 5.514e-05, 5.527e-05, 5.514e-05, 5.516e-05, 11363.66441499], [1516450260000, 5.516e-05, 5.516e-05, 5.503e-05, 5.503e-05, 15225.91661722], [1516450320000, 5.503e-05, 5.509e-05, 5.498e-05, 5.498e-05, 180432.24076761], [1516450380000, 5.498e-05, 5.501e-05, 5.477e-05, 5.498e-05, 24585.42642562], [1516450440000, 5.498e-05, 5.499e-05, 5.49e-05, 5.498e-05, 14821.87679869], [1516450500000, 5.499e-05, 5.499e-05, 5.489e-05, 5.499e-05, 19687.81569676], [1516450560000, 5.49e-05, 5.499e-05, 5.49e-05, 5.499e-05, 12003.68383215], [1516450620000, 5.499e-05, 5.5e-05, 5.499e-05, 5.499e-05, 6743.4331504], [1516450680000, 5.5e-05, 5.5e-05, 5.499e-05, 5.5e-05, 3986.10024474], [1516450740000, 5.5e-05, 5.5e-05, 5.489e-05, 5.49e-05, 13757.69482069], [1516450800000, 5.49e-05, 5.499e-05, 5.49e-05, 5.498e-05, 599.76722272], [1516450860000, 5.497e-05, 5.498e-05, 5.489e-05, 5.489e-05, 5461.66200734], [1516450920000, 5.489e-05, 5.5e-05, 5.489e-05, 5.499e-05, 1495.79514511], [1516450980000, 5.498e-05, 5.498e-05, 5.494e-05, 5.495e-05, 11984.76797435], [1516451040000, 5.497e-05, 5.498e-05, 5.495e-05, 5.497e-05, 8085.18496961], [1516451100000, 5.498e-05, 5.498e-05, 5.496e-05, 5.498e-05, 13633.64858643], [1516451160000, 5.498e-05, 5.498e-05, 5.489e-05, 5.489e-05, 18598.59769073], [1516451220000, 5.497e-05, 5.498e-05, 5.497e-05, 5.498e-05, 100016.07746492], [1516451280000, 5.498e-05, 5.498e-05, 5.497e-05, 5.498e-05, 18731.14376887], [1516451340000, 5.498e-05, 5.498e-05, 5.491e-05, 5.492e-05, 5862.38263574], [1516451400000, 5.492e-05, 5.498e-05, 5.492e-05, 5.498e-05, 13569.19877153], [1516451460000, 5.498e-05, 5.532e-05, 5.494e-05, 5.494e-05, 12296.90234183], [1516451520000, 5.53e-05, 5.54e-05, 5.494e-05, 5.494e-05, 40555.0542931], [1516451580000, 5.539e-05, 5.545e-05, 5.475e-05, 5.502e-05, 51419.90977274], [1516451640000, 5.538e-05, 5.544e-05, 5.473e-05, 5.543e-05, 71833.58670795], [1516451700000, 5.5e-05, 5.537e-05, 5.497e-05, 5.529e-05, 11387.28065254], [1516451760000, 5.524e-05, 5.524e-05, 5.506e-05, 5.51e-05, 5539.26159627], [1516451820000, 5.51e-05, 5.51e-05, 5.506e-05, 5.508e-05, 10429.68024053], [1516451880000, 5.508e-05, 5.51e-05, 5.506e-05, 5.508e-05, 6500.57323545], [1516451940000, 5.508e-05, 5.51e-05, 5.508e-05, 5.51e-05, 1957.45147125], [1516452000000, 5.51e-05, 5.545e-05, 5.508e-05, 5.51e-05, 11759.46414382], [1516452060000, 5.51e-05, 5.55e-05, 5.51e-05, 5.525e-05, 9532.97947278], [1516452120000, 5.525e-05, 5.548e-05, 5.508e-05, 5.508e-05, 4907.12102294], [1516452180000, 5.51e-05, 5.544e-05, 5.508e-05, 5.535e-05, 2739.12107382], [1516452240000, 5.533e-05, 5.533e-05, 5.509e-05, 5.509e-05, 265.91953164], [1516452300000, 5.51e-05, 5.51e-05, 5.51e-05, 5.51e-05, 21689.54833264], [1516452360000, 5.51e-05, 5.527e-05, 5.51e-05, 5.527e-05, 37942.40336453], [1516452420000, 5.511e-05, 5.532e-05, 5.51e-05, 5.51e-05, 6518.36610653], [1516452480000, 5.532e-05, 5.54e-05, 5.512e-05, 5.538e-05, 2627.18115995], [1516452540000, 5.525e-05, 5.534e-05, 5.525e-05, 5.534e-05, 61624.75011975], [1516452600000, 5.534e-05, 5.534e-05, 5.525e-05, 5.525e-05, 4120.44931928], [1516452660000, 5.524e-05, 5.524e-05, 5.524e-05, 5.524e-05, 310.33297863], [1516452720000, 5.524e-05, 5.538e-05, 5.523e-05, 5.524e-05, 1433.27905902], [1516452780000, 5.512e-05, 5.523e-05, 5.512e-05, 5.522e-05, 5680.84224026], [1516452840000, 5.512e-05, 5.522e-05, 5.512e-05, 5.52e-05, 1905.439398], [1516452900000, 5.52e-05, 5.52e-05, 5.508e-05, 5.508e-05, 50487.57284979], [1516452960000, 5.508e-05, 5.511e-05, 5.5e-05, 5.5e-05, 29503.83444058], [1516453020000, 5.5e-05, 5.5e-05, 5.483e-05, 5.5e-05, 49442.82678774], [1516453080000, 5.5e-05, 5.5e-05, 5.485e-05, 5.5e-05, 55153.02659118], [1516453140000, 5.5e-05, 5.522e-05, 5.5e-05, 5.504e-05, 18193.12374134], [1516453200000, 5.52e-05, 5.52e-05, 5.5e-05, 5.504e-05, 15465.85744438], [1516453260000, 5.504e-05, 5.505e-05, 5.5e-05, 5.504e-05, 57052.58187934], [1516453320000, 5.504e-05, 5.538e-05, 5.502e-05, 5.537e-05, 31505.99267652], [1516453380000, 5.522e-05, 5.522e-05, 5.5e-05, 5.522e-05, 27749.27138391], [1516453440000, 5.522e-05, 5.53e-05, 5.507e-05, 5.507e-05, 29518.24461634], [1516453500000, 5.507e-05, 5.533e-05, 5.501e-05, 5.527e-05, 133360.13030086], [1516453560000, 5.524e-05, 5.553e-05, 5.503e-05, 5.543e-05, 223726.04830339], [1516453620000, 5.543e-05, 5.555e-05, 5.505e-05, 5.534e-05, 223442.54286713], [1516453680000, 5.539e-05, 5.555e-05, 5.508e-05, 5.509e-05, 143746.17222961], [1516453740000, 5.533e-05, 5.544e-05, 5.51e-05, 5.511e-05, 54558.21874966], [1516453800000, 5.511e-05, 5.573e-05, 5.51e-05, 5.554e-05, 140097.59921437], [1516453860000, 5.556e-05, 5.57e-05, 5.554e-05, 5.566e-05, 77888.02751709], [1516453920000, 5.566e-05, 5.57e-05, 5.533e-05, 5.534e-05, 85631.87261857], [1516453980000, 5.552e-05, 5.57e-05, 5.52e-05, 5.52e-05, 174783.94713859], [1516454040000, 5.556e-05, 5.568e-05, 5.537e-05, 5.556e-05, 143520.72924219], [1516454100000, 5.557e-05, 5.557e-05, 5.537e-05, 5.539e-05, 61152.6462141], [1516454160000, 5.537e-05, 5.545e-05, 5.521e-05, 5.544e-05, 47975.47040763], [1516454220000, 5.541e-05, 5.541e-05, 5.532e-05, 5.54e-05, 24898.30137909], [1516454280000, 5.54e-05, 5.543e-05, 5.538e-05, 5.542e-05, 18030.18542309], [1516454340000, 5.541e-05, 5.543e-05, 5.538e-05, 5.538e-05, 17065.69937299], [1516454400000, 5.538e-05, 5.538e-05, 5.532e-05, 5.533e-05, 1957.8769971], [1516454460000, 5.537e-05, 5.545e-05, 5.537e-05, 5.544e-05, 8805.99926731], [1516454520000, 5.541e-05, 5.541e-05, 5.538e-05, 5.538e-05, 12474.53566728], [1516454580000, 5.539e-05, 5.54e-05, 5.538e-05, 5.54e-05, 7891.22488512], [1516454640000, 5.54e-05, 5.54e-05, 5.537e-05, 5.538e-05, 24326.78129869], [1516454700000, 5.537e-05, 5.538e-05, 5.537e-05, 5.537e-05, 24202.2822328], [1516454760000, 5.537e-05, 5.538e-05, 5.532e-05, 5.537e-05, 11264.10988804], [1516454820000, 5.538e-05, 5.538e-05, 5.538e-05, 5.538e-05, 4582.26723964], [1516454880000, 5.538e-05, 5.538e-05, 5.536e-05, 5.537e-05, 20010.75293601], [1516454940000, 5.536e-05, 5.536e-05, 5.534e-05, 5.534e-05, 3450.70797063], [1516455000000, 5.534e-05, 5.536e-05, 5.534e-05, 5.534e-05, 20307.20726254], [1516455060000, 5.535e-05, 5.536e-05, 5.522e-05, 5.522e-05, 16417.88180378], [1516455120000, 5.522e-05, 5.535e-05, 5.522e-05, 5.533e-05, 13127.24646179], [1516455180000, 5.533e-05, 5.534e-05, 5.521e-05, 5.528e-05, 13039.3992558], [1516455240000, 5.524e-05, 5.528e-05, 5.52e-05, 5.526e-05, 7456.82095886], [1516455300000, 5.525e-05, 5.526e-05, 5.52e-05, 5.525e-05, 8238.13827711], [1516455360000, 5.525e-05, 5.526e-05, 5.522e-05, 5.526e-05, 10035.71723627], [1516455420000, 5.526e-05, 5.531e-05, 5.526e-05, 5.531e-05, 1358.206698], [1516455480000, 5.528e-05, 5.534e-05, 5.525e-05, 5.525e-05, 13311.99336063], [1516455540000, 5.525e-05, 5.528e-05, 5.521e-05, 5.528e-05, 7457.11409376], [1516455600000, 5.526e-05, 5.527e-05, 5.521e-05, 5.521e-05, 21350.27216349], [1516455660000, 5.525e-05, 5.525e-05, 5.521e-05, 5.525e-05, 4131.46759548], [1516455720000, 5.525e-05, 5.528e-05, 5.515e-05, 5.515e-05, 13331.32986908], [1516455780000, 5.52e-05, 5.52e-05, 5.512e-05, 5.52e-05, 10157.60248626], [1516455840000, 5.52e-05, 5.52e-05, 5.512e-05, 5.52e-05, 6667.17583338], [1516455900000, 5.52e-05, 5.52e-05, 5.512e-05, 5.519e-05, 19279.84021305], [1516455960000, 5.52e-05, 5.52e-05, 5.511e-05, 5.52e-05, 42651.09210695], [1516456020000, 5.52e-05, 5.52e-05, 5.5e-05, 5.502e-05, 40930.27346051], [1516456080000, 5.501e-05, 5.52e-05, 5.5e-05, 5.501e-05, 44071.73461237], [1516456140000, 5.518e-05, 5.518e-05, 5.5e-05, 5.502e-05, 22331.69124965], [1516456200000, 5.501e-05, 5.518e-05, 5.501e-05, 5.518e-05, 24364.60779192], [1516456260000, 5.502e-05, 5.515e-05, 5.492e-05, 5.507e-05, 11593.22868393], [1516456320000, 5.507e-05, 5.508e-05, 5.483e-05, 5.507e-05, 22136.30951208], [1516456380000, 5.507e-05, 5.508e-05, 5.493e-05, 5.507e-05, 16460.41455247], [1516456440000, 5.507e-05, 5.508e-05, 5.491e-05, 5.508e-05, 23952.85228232], [1516456500000, 5.508e-05, 5.508e-05, 5.485e-05, 5.485e-05, 17417.43373889], [1516456560000, 5.507e-05, 5.508e-05, 5.48e-05, 5.508e-05, 33074.74948302], [1516456620000, 5.508e-05, 5.508e-05, 5.479e-05, 5.507e-05, 7585.20324878], [1516456680000, 5.481e-05, 5.507e-05, 5.477e-05, 5.488e-05, 9946.54631678], [1516456740000, 5.494e-05, 5.507e-05, 5.476e-05, 5.505e-05, 21130.87264797], [1516456800000, 5.505e-05, 5.505e-05, 5.473e-05, 5.499e-05, 40713.57007166], [1516456860000, 5.475e-05, 5.499e-05, 5.473e-05, 5.485e-05, 36442.28997745], [1516456920000, 5.485e-05, 5.485e-05, 5.44e-05, 5.476e-05, 111676.56822491], [1516456980000, 5.478e-05, 5.484e-05, 5.4e-05, 5.483e-05, 217047.49078651], [1516457040000, 5.483e-05, 5.484e-05, 5.475e-05, 5.482e-05, 5750.99089304], [1516457100000, 5.475e-05, 5.48e-05, 5.457e-05, 5.457e-05, 24178.04607351], [1516457160000, 5.478e-05, 5.478e-05, 5.451e-05, 5.472e-05, 11521.96506654], [1516457220000, 5.472e-05, 5.473e-05, 5.451e-05, 5.469e-05, 9296.36635724], [1516457280000, 5.453e-05, 5.471e-05, 5.452e-05, 5.47e-05, 29852.32390163], [1516457340000, 5.47e-05, 5.479e-05, 5.469e-05, 5.478e-05, 30806.46163093], [1516457400000, 5.477e-05, 5.477e-05, 5.47e-05, 5.47e-05, 8964.78591341], [1516457460000, 5.475e-05, 5.475e-05, 5.459e-05, 5.469e-05, 21617.46848818], [1516457520000, 5.46e-05, 5.474e-05, 5.459e-05, 5.468e-05, 102145.06795289], [1516457580000, 5.459e-05, 5.467e-05, 5.455e-05, 5.467e-05, 19704.61678403], [1516457640000, 5.457e-05, 5.466e-05, 5.455e-05, 5.466e-05, 73513.97575184], [1516457700000, 5.465e-05, 5.466e-05, 5.455e-05, 5.461e-05, 56277.47459991], [1516457760000, 5.455e-05, 5.477e-05, 5.454e-05, 5.47e-05, 48247.94091504], [1516457820000, 5.461e-05, 5.47e-05, 5.452e-05, 5.452e-05, 59505.26459682], [1516457880000, 5.47e-05, 5.47e-05, 5.458e-05, 5.462e-05, 5917.35523791], [1516457940000, 5.462e-05, 5.462e-05, 5.45e-05, 5.462e-05, 49255.97270924], [1516458000000, 5.453e-05, 5.47e-05, 5.434e-05, 5.47e-05, 14408.18996819], [1516458060000, 5.442e-05, 5.47e-05, 5.441e-05, 5.47e-05, 5924.87707648], [1516458120000, 5.47e-05, 5.47e-05, 5.456e-05, 5.47e-05, 909.93560362], [1516458180000, 5.469e-05, 5.47e-05, 5.459e-05, 5.46e-05, 7379.48249929], [1516458240000, 5.46e-05, 5.47e-05, 5.46e-05, 5.46e-05, 12444.71611411], [1516458300000, 5.456e-05, 5.468e-05, 5.456e-05, 5.464e-05, 5323.26237247], [1516458360000, 5.456e-05, 5.461e-05, 5.451e-05, 5.461e-05, 6441.36573963], [1516458420000, 5.461e-05, 5.461e-05, 5.456e-05, 5.456e-05, 4446.30349968], [1516458480000, 5.461e-05, 5.461e-05, 5.451e-05, 5.452e-05, 4305.91675811], [1516458540000, 5.453e-05, 5.46e-05, 5.448e-05, 5.46e-05, 28244.71155638], [1516458600000, 5.452e-05, 5.47e-05, 5.448e-05, 5.47e-05, 104823.71541082], [1516458660000, 5.467e-05, 5.47e-05, 5.449e-05, 5.449e-05, 30327.11438516], [1516458720000, 5.453e-05, 5.469e-05, 5.441e-05, 5.453e-05, 11066.05762356], [1516458780000, 5.469e-05, 5.47e-05, 5.442e-05, 5.45e-05, 12651.32122029], [1516458840000, 5.45e-05, 5.464e-05, 5.445e-05, 5.464e-05, 12497.10813159], [1516458900000, 5.465e-05, 5.465e-05, 5.441e-05, 5.45e-05, 1778.22186599], [1516458960000, 5.465e-05, 5.465e-05, 5.44e-05, 5.44e-05, 6576.03048838], [1516459020000, 5.44e-05, 5.464e-05, 5.42e-05, 5.426e-05, 31857.32608483], [1516459080000, 5.464e-05, 5.464e-05, 5.434e-05, 5.437e-05, 30086.45137494], [1516459140000, 5.455e-05, 5.463e-05, 5.437e-05, 5.441e-05, 38762.10105632], [1516459200000, 5.441e-05, 5.462e-05, 5.441e-05, 5.442e-05, 7965.51443886], [1516459260000, 5.455e-05, 5.455e-05, 5.444e-05, 5.45e-05, 19106.49663273], [1516459320000, 5.46e-05, 5.46e-05, 5.45e-05, 5.46e-05, 34296.86765202], [1516459380000, 5.451e-05, 5.459e-05, 5.45e-05, 5.459e-05, 12762.58961948], [1516459440000, 5.459e-05, 5.46e-05, 5.459e-05, 5.46e-05, 26218.09222373], [1516459500000, 5.46e-05, 5.463e-05, 5.459e-05, 5.463e-05, 12679.51961557], [1516459560000, 5.463e-05, 5.463e-05, 5.462e-05, 5.463e-05, 2759.3685324], [1516459620000, 5.463e-05, 5.463e-05, 5.461e-05, 5.461e-05, 5167.79879437], [1516459680000, 5.462e-05, 5.462e-05, 5.461e-05, 5.461e-05, 3043.45548454], [1516459740000, 5.461e-05, 5.461e-05, 5.46e-05, 5.461e-05, 2740.10777412], [1516459800000, 5.461e-05, 5.461e-05, 5.46e-05, 5.46e-05, 1569.63685922], [1516459860000, 5.461e-05, 5.461e-05, 5.459e-05, 5.46e-05, 6506.30855458], [1516459920000, 5.46e-05, 5.46e-05, 5.459e-05, 5.46e-05, 2309.99831656], [1516459980000, 5.46e-05, 5.46e-05, 5.459e-05, 5.459e-05, 5734.24908849], [1516460040000, 5.459e-05, 5.459e-05, 5.45e-05, 5.45e-05, 43325.45748184], [1516460100000, 5.45e-05, 5.459e-05, 5.45e-05, 5.451e-05, 8423.89606488], [1516460160000, 5.451e-05, 5.459e-05, 5.451e-05, 5.459e-05, 5836.99653882], [1516460220000, 5.459e-05, 5.459e-05, 5.454e-05, 5.455e-05, 3174.05778081], [1516460280000, 5.457e-05, 5.462e-05, 5.455e-05, 5.461e-05, 53398.73653316], [1516460340000, 5.459e-05, 5.476e-05, 5.454e-05, 5.476e-05, 58573.5671338], [1516460400000, 5.476e-05, 5.477e-05, 5.47e-05, 5.47e-05, 23796.31342459], [1516460460000, 5.477e-05, 5.477e-05, 5.463e-05, 5.476e-05, 29572.46095983], [1516460520000, 5.476e-05, 5.476e-05, 5.465e-05, 5.474e-05, 18874.67005122], [1516460580000, 5.474e-05, 5.477e-05, 5.464e-05, 5.477e-05, 43242.79148867], [1516460640000, 5.475e-05, 5.477e-05, 5.474e-05, 5.477e-05, 15233.79869655], [1516460700000, 5.477e-05, 5.477e-05, 5.476e-05, 5.477e-05, 13812.12798508], [1516460760000, 5.477e-05, 5.477e-05, 5.475e-05, 5.475e-05, 28837.44174365], [1516460820000, 5.477e-05, 5.479e-05, 5.475e-05, 5.476e-05, 15833.27290049], [1516460880000, 5.479e-05, 5.479e-05, 5.474e-05, 5.474e-05, 147749.50249249], [1516460940000, 5.474e-05, 5.479e-05, 5.474e-05, 5.476e-05, 14162.9758879], [1516461000000, 5.463e-05, 5.479e-05, 5.461e-05, 5.479e-05, 12238.60597566], [1516461060000, 5.479e-05, 5.479e-05, 5.462e-05, 5.476e-05, 26994.52089546], [1516461120000, 5.463e-05, 5.476e-05, 5.462e-05, 5.472e-05, 18354.00721763], [1516461180000, 5.471e-05, 5.471e-05, 5.464e-05, 5.464e-05, 10952.05289073], [1516461240000, 5.464e-05, 5.471e-05, 5.454e-05, 5.47e-05, 38156.95036933], [1516461300000, 5.463e-05, 5.471e-05, 5.462e-05, 5.47e-05, 7171.10262798], [1516461360000, 5.47e-05, 5.471e-05, 5.455e-05, 5.471e-05, 20689.54927934], [1516461420000, 5.471e-05, 5.471e-05, 5.47e-05, 5.471e-05, 2543.30459439], [1516461480000, 5.471e-05, 5.471e-05, 5.464e-05, 5.471e-05, 16543.48157256], [1516461540000, 5.471e-05, 5.471e-05, 5.465e-05, 5.471e-05, 10074.88916554], [1516461600000, 5.466e-05, 5.471e-05, 5.464e-05, 5.464e-05, 20223.4120789], [1516461660000, 5.466e-05, 5.471e-05, 5.464e-05, 5.471e-05, 14061.71601136], [1516461720000, 5.47e-05, 5.471e-05, 5.466e-05, 5.47e-05, 3586.29034657], [1516461780000, 5.469e-05, 5.471e-05, 5.467e-05, 5.467e-05, 2492.74892283], [1516461840000, 5.467e-05, 5.471e-05, 5.467e-05, 5.471e-05, 953.11111103], [1516461900000, 5.471e-05, 5.471e-05, 5.464e-05, 5.464e-05, 3013.2493443], [1516461960000, 5.467e-05, 5.471e-05, 5.464e-05, 5.465e-05, 12340.16199351], [1516462020000, 5.465e-05, 5.472e-05, 5.465e-05, 5.472e-05, 12835.00422138], [1516462080000, 5.472e-05, 5.472e-05, 5.471e-05, 5.472e-05, 12048.14824731], [1516462140000, 5.471e-05, 5.474e-05, 5.468e-05, 5.474e-05, 9053.57834008], [1516462200000, 5.474e-05, 5.477e-05, 5.472e-05, 5.477e-05, 17661.40985349], [1516462260000, 5.472e-05, 5.472e-05, 5.467e-05, 5.472e-05, 12027.79756721], [1516462320000, 5.472e-05, 5.477e-05, 5.465e-05, 5.468e-05, 53487.60003774], [1516462380000, 5.472e-05, 5.49e-05, 5.467e-05, 5.467e-05, 69881.62512084], [1516462440000, 5.49e-05, 5.499e-05, 5.49e-05, 5.49e-05, 29479.74602859], [1516462500000, 5.49e-05, 5.49e-05, 5.469e-05, 5.49e-05, 46092.41618318], [1516462560000, 5.49e-05, 5.49e-05, 5.468e-05, 5.469e-05, 14543.34214401], [1516462620000, 5.469e-05, 5.471e-05, 5.467e-05, 5.467e-05, 41076.78031917], [1516462680000, 5.466e-05, 5.517e-05, 5.465e-05, 5.517e-05, 182251.3024764], [1516462740000, 5.517e-05, 5.518e-05, 5.49e-05, 5.513e-05, 82887.89716242], [1516462800000, 5.518e-05, 5.518e-05, 5.511e-05, 5.511e-05, 28834.86046339], [1516462860000, 5.511e-05, 5.511e-05, 5.48e-05, 5.48e-05, 52589.8745343], [1516462920000, 5.482e-05, 5.5e-05, 5.482e-05, 5.499e-05, 12398.49804832], [1516462980000, 5.483e-05, 5.5e-05, 5.483e-05, 5.5e-05, 4072.92509455], [1516463040000, 5.5e-05, 5.509e-05, 5.498e-05, 5.509e-05, 6855.75202865], [1516463100000, 5.498e-05, 5.505e-05, 5.482e-05, 5.505e-05, 4199.31880109], [1516463160000, 5.503e-05, 5.503e-05, 5.5e-05, 5.5e-05, 4095.89027185], [1516463220000, 5.5e-05, 5.5e-05, 5.485e-05, 5.499e-05, 5284.92369443], [1516463280000, 5.508e-05, 5.508e-05, 5.49e-05, 5.495e-05, 4321.12344185], [1516463340000, 5.495e-05, 5.508e-05, 5.495e-05, 5.508e-05, 1583.684135], [1516463400000, 5.5e-05, 5.508e-05, 5.5e-05, 5.508e-05, 5475.66119906], [1516463460000, 5.508e-05, 5.508e-05, 5.506e-05, 5.508e-05, 9899.88277542], [1516463520000, 5.508e-05, 5.516e-05, 5.506e-05, 5.516e-05, 40840.97190054], [1516463580000, 5.516e-05, 5.516e-05, 5.506e-05, 5.516e-05, 17718.17756634], [1516463640000, 5.507e-05, 5.516e-05, 5.506e-05, 5.516e-05, 11840.60939801], [1516463700000, 5.516e-05, 5.516e-05, 5.515e-05, 5.516e-05, 10357.79565085], [1516463760000, 5.515e-05, 5.516e-05, 5.506e-05, 5.516e-05, 4728.43069739], [1516463820000, 5.507e-05, 5.517e-05, 5.507e-05, 5.516e-05, 3648.15630064], [1516463880000, 5.516e-05, 5.518e-05, 5.516e-05, 5.518e-05, 14346.56046202], [1516463940000, 5.518e-05, 5.518e-05, 5.517e-05, 5.518e-05, 29655.9291217], [1516464000000, 5.517e-05, 5.518e-05, 5.517e-05, 5.518e-05, 23790.78057509], [1516464060000, 5.518e-05, 5.518e-05, 5.517e-05, 5.518e-05, 3027.83257101], [1516464120000, 5.518e-05, 5.518e-05, 5.517e-05, 5.518e-05, 6343.91767832], [1516464180000, 5.517e-05, 5.518e-05, 5.517e-05, 5.518e-05, 45705.30973963], [1516464240000, 5.518e-05, 5.518e-05, 5.516e-05, 5.517e-05, 13232.69453955], [1516464300000, 5.518e-05, 5.52e-05, 5.517e-05, 5.52e-05, 10111.55161194], [1516464360000, 5.518e-05, 5.52e-05, 5.518e-05, 5.52e-05, 5438.01862691], [1516464420000, 5.518e-05, 5.52e-05, 5.517e-05, 5.517e-05, 2831.78870508], [1516464480000, 5.517e-05, 5.518e-05, 5.517e-05, 5.517e-05, 2631.69577489], [1516464540000, 5.518e-05, 5.518e-05, 5.516e-05, 5.516e-05, 22975.38924116], [1516464600000, 5.517e-05, 5.518e-05, 5.516e-05, 5.518e-05, 3335.60886874], [1516464660000, 5.518e-05, 5.518e-05, 5.516e-05, 5.517e-05, 27938.98122612], [1516464720000, 5.519e-05, 5.52e-05, 5.519e-05, 5.519e-05, 1431.08442208], [1516464780000, 5.52e-05, 5.522e-05, 5.52e-05, 5.521e-05, 17872.74195728], [1516464840000, 5.522e-05, 5.523e-05, 5.521e-05, 5.522e-05, 5124.52994104], [1516464900000, 5.523e-05, 5.525e-05, 5.522e-05, 5.523e-05, 30436.36758082], [1516464960000, 5.525e-05, 5.525e-05, 5.523e-05, 5.524e-05, 5557.64578113], [1516465020000, 5.523e-05, 5.524e-05, 5.521e-05, 5.524e-05, 19064.92829882], [1516465080000, 5.522e-05, 5.524e-05, 5.516e-05, 5.516e-05, 15152.73604695], [1516465140000, 5.51e-05, 5.516e-05, 5.51e-05, 5.514e-05, 20440.8674661], [1516465200000, 5.516e-05, 5.523e-05, 5.507e-05, 5.507e-05, 30882.93004166], [1516465260000, 5.507e-05, 5.51e-05, 5.507e-05, 5.51e-05, 5852.94523738], [1516465320000, 5.507e-05, 5.51e-05, 5.499e-05, 5.5e-05, 5304.4988456], [1516465380000, 5.5e-05, 5.507e-05, 5.49e-05, 5.507e-05, 1651.47204697], [1516465440000, 5.495e-05, 5.499e-05, 5.49e-05, 5.491e-05, 3914.67241088], [1516465500000, 5.491e-05, 5.499e-05, 5.491e-05, 5.492e-05, 5262.83024985], [1516465560000, 5.499e-05, 5.507e-05, 5.492e-05, 5.507e-05, 3742.45182462], [1516465620000, 5.507e-05, 5.507e-05, 5.492e-05, 5.507e-05, 2567.01614103], [1516465680000, 5.507e-05, 5.507e-05, 5.492e-05, 5.492e-05, 5457.5525043], [1516465740000, 5.499e-05, 5.499e-05, 5.492e-05, 5.493e-05, 6187.96894593], [1516465800000, 5.493e-05, 5.507e-05, 5.493e-05, 5.507e-05, 2008.64295211], [1516465860000, 5.505e-05, 5.507e-05, 5.493e-05, 5.493e-05, 2499.93460753], [1516465920000, 5.493e-05, 5.507e-05, 5.493e-05, 5.505e-05, 303.16122387], [1516465980000, 5.507e-05, 5.507e-05, 5.506e-05, 5.506e-05, 2375.27650636], [1516466040000, 5.506e-05, 5.506e-05, 5.505e-05, 5.505e-05, 2973.77189186], [1516466100000, 5.505e-05, 5.505e-05, 5.493e-05, 5.493e-05, 8001.35641894], [1516466160000, 5.492e-05, 5.492e-05, 5.49e-05, 5.49e-05, 16720.48350973], [1516466220000, 5.49e-05, 5.491e-05, 5.49e-05, 5.491e-05, 4858.42654176], [1516466280000, 5.49e-05, 5.491e-05, 5.489e-05, 5.489e-05, 27092.52900406], [1516466340000, 5.489e-05, 5.489e-05, 5.486e-05, 5.488e-05, 3343.71908355], [1516466400000, 5.488e-05, 5.488e-05, 5.485e-05, 5.487e-05, 11083.15765257], [1516466460000, 5.487e-05, 5.491e-05, 5.482e-05, 5.491e-05, 16270.12863355], [1516466520000, 5.493e-05, 5.493e-05, 5.49e-05, 5.493e-05, 12646.25971369], [1516466580000, 5.493e-05, 5.493e-05, 5.492e-05, 5.492e-05, 1747.96774121], [1516466640000, 5.493e-05, 5.493e-05, 5.479e-05, 5.492e-05, 29167.68002631], [1516466700000, 5.492e-05, 5.504e-05, 5.49e-05, 5.5e-05, 13184.72032842], [1516466760000, 5.5e-05, 5.503e-05, 5.479e-05, 5.5e-05, 8952.16108048], [1516466820000, 5.498e-05, 5.503e-05, 5.48e-05, 5.497e-05, 19335.64615343], [1516466880000, 5.497e-05, 5.502e-05, 5.482e-05, 5.483e-05, 323.63322999], [1516466940000, 5.483e-05, 5.498e-05, 5.48e-05, 5.484e-05, 16328.19913776], [1516467000000, 5.484e-05, 5.497e-05, 5.459e-05, 5.484e-05, 160286.23289476], [1516467060000, 5.461e-05, 5.484e-05, 5.461e-05, 5.484e-05, 6927.96929566], [1516467120000, 5.484e-05, 5.493e-05, 5.483e-05, 5.486e-05, 10077.94120891], [1516467180000, 5.486e-05, 5.497e-05, 5.486e-05, 5.487e-05, 17174.97441073], [1516467240000, 5.487e-05, 5.494e-05, 5.486e-05, 5.494e-05, 16275.18973231], [1516467300000, 5.489e-05, 5.494e-05, 5.489e-05, 5.489e-05, 19701.95501321], [1516467360000, 5.493e-05, 5.493e-05, 5.489e-05, 5.49e-05, 7106.34707722], [1516467420000, 5.49e-05, 5.497e-05, 5.489e-05, 5.495e-05, 22248.4444935], [1516467480000, 5.497e-05, 5.497e-05, 5.493e-05, 5.495e-05, 105750.50916673], [1516467540000, 5.495e-05, 5.505e-05, 5.493e-05, 5.497e-05, 29735.81539444], [1516467600000, 5.497e-05, 5.504e-05, 5.497e-05, 5.497e-05, 3969.32707767], [1516467660000, 5.497e-05, 5.504e-05, 5.489e-05, 5.497e-05, 13945.05302219], [1516467720000, 5.496e-05, 5.504e-05, 5.496e-05, 5.497e-05, 10004.38078648], [1516467780000, 5.498e-05, 5.498e-05, 5.496e-05, 5.496e-05, 6955.68505167], [1516467840000, 5.496e-05, 5.496e-05, 5.489e-05, 5.496e-05, 920.07399819], [1516467900000, 5.498e-05, 5.498e-05, 5.496e-05, 5.497e-05, 1357.92195114], [1516467960000, 5.491e-05, 5.496e-05, 5.49e-05, 5.49e-05, 10802.85641024], [1516468020000, 5.491e-05, 5.493e-05, 5.445e-05, 5.491e-05, 57705.1137121], [1516468080000, 5.493e-05, 5.497e-05, 5.493e-05, 5.497e-05, 4064.94225891], [1516468140000, 5.496e-05, 5.497e-05, 5.493e-05, 5.495e-05, 6329.71606876], [1516468200000, 5.495e-05, 5.503e-05, 5.495e-05, 5.497e-05, 13216.93716038], [1516468260000, 5.498e-05, 5.502e-05, 5.494e-05, 5.494e-05, 15903.97159787], [1516468320000, 5.498e-05, 5.498e-05, 5.493e-05, 5.493e-05, 11373.76455364], [1516468380000, 5.495e-05, 5.506e-05, 5.491e-05, 5.504e-05, 6203.90228553], [1516468440000, 5.504e-05, 5.51e-05, 5.494e-05, 5.509e-05, 6248.14898887], [1516468500000, 5.504e-05, 5.508e-05, 5.494e-05, 5.508e-05, 13996.06842393], [1516468560000, 5.508e-05, 5.522e-05, 5.508e-05, 5.514e-05, 44232.94665315], [1516468620000, 5.503e-05, 5.522e-05, 5.502e-05, 5.514e-05, 10346.63090443], [1516468680000, 5.514e-05, 5.514e-05, 5.508e-05, 5.514e-05, 7081.93294052], [1516468740000, 5.513e-05, 5.525e-05, 5.513e-05, 5.525e-05, 39945.27336461], [1516468800000, 5.525e-05, 5.525e-05, 5.514e-05, 5.518e-05, 18796.95174148], [1516468860000, 5.518e-05, 5.518e-05, 5.515e-05, 5.518e-05, 15451.54250672], [1516468920000, 5.518e-05, 5.518e-05, 5.515e-05, 5.518e-05, 6786.31639673], [1516468980000, 5.517e-05, 5.518e-05, 5.515e-05, 5.516e-05, 6425.27258295], [1516469040000, 5.516e-05, 5.518e-05, 5.516e-05, 5.518e-05, 13859.01520219], [1516469100000, 5.518e-05, 5.529e-05, 5.518e-05, 5.526e-05, 13603.07110442], [1516469160000, 5.527e-05, 5.527e-05, 5.526e-05, 5.527e-05, 1640.79447365], [1516469220000, 5.527e-05, 5.529e-05, 5.526e-05, 5.529e-05, 5037.28017025], [1516469280000, 5.527e-05, 5.53e-05, 5.526e-05, 5.53e-05, 21073.7202229], [1516469340000, 5.53e-05, 5.533e-05, 5.53e-05, 5.533e-05, 23206.07198948], [1516469400000, 5.533e-05, 5.533e-05, 5.531e-05, 5.533e-05, 22855.15485384], [1516469460000, 5.533e-05, 5.534e-05, 5.529e-05, 5.533e-05, 78476.00901495], [1516469520000, 5.533e-05, 5.534e-05, 5.531e-05, 5.534e-05, 58313.42837166], [1516469580000, 5.534e-05, 5.534e-05, 5.533e-05, 5.534e-05, 44582.9201706], [1516469640000, 5.534e-05, 5.534e-05, 5.533e-05, 5.534e-05, 7794.69462067], [1516469700000, 5.534e-05, 5.534e-05, 5.533e-05, 5.534e-05, 13212.28077627], [1516469760000, 5.534e-05, 5.534e-05, 5.533e-05, 5.534e-05, 87436.25253645], [1516469820000, 5.534e-05, 5.535e-05, 5.534e-05, 5.535e-05, 130621.9759441], [1516469880000, 5.534e-05, 5.535e-05, 5.482e-05, 5.535e-05, 136579.81622196], [1516469940000, 5.535e-05, 5.535e-05, 5.529e-05, 5.535e-05, 33068.00293877], [1516470000000, 5.535e-05, 5.54e-05, 5.529e-05, 5.54e-05, 116871.89828711], [1516470060000, 5.541e-05, 5.543e-05, 5.54e-05, 5.543e-05, 39635.30587168], [1516470120000, 5.543e-05, 5.547e-05, 5.52e-05, 5.54e-05, 36729.95469397], [1516470180000, 5.525e-05, 5.547e-05, 5.523e-05, 5.547e-05, 13947.19117896], [1516470240000, 5.547e-05, 5.549e-05, 5.547e-05, 5.549e-05, 2490.7965149], [1516470300000, 5.55e-05, 5.55e-05, 5.5e-05, 5.549e-05, 29000.68568667], [1516470360000, 5.549e-05, 5.549e-05, 5.548e-05, 5.549e-05, 1199.90529443], [1516470420000, 5.528e-05, 5.549e-05, 5.528e-05, 5.549e-05, 6931.61450976], [1516470480000, 5.548e-05, 5.549e-05, 5.548e-05, 5.549e-05, 3295.70898107], [1516470540000, 5.549e-05, 5.55e-05, 5.548e-05, 5.548e-05, 8003.21958542], [1516470600000, 5.548e-05, 5.548e-05, 5.507e-05, 5.548e-05, 30475.61317451], [1516470660000, 5.539e-05, 5.548e-05, 5.51e-05, 5.51e-05, 6746.7244753], [1516470720000, 5.51e-05, 5.544e-05, 5.509e-05, 5.544e-05, 22775.64466453], [1516470780000, 5.513e-05, 5.543e-05, 5.513e-05, 5.543e-05, 2049.12993796], [1516470840000, 5.542e-05, 5.542e-05, 5.539e-05, 5.541e-05, 1468.77942454], [1516470900000, 5.541e-05, 5.541e-05, 5.52e-05, 5.541e-05, 22139.48084461], [1516470960000, 5.521e-05, 5.541e-05, 5.521e-05, 5.541e-05, 4148.10558008], [1516471020000, 5.541e-05, 5.542e-05, 5.538e-05, 5.542e-05, 19455.82720485], [1516471080000, 5.542e-05, 5.543e-05, 5.542e-05, 5.543e-05, 11178.68952141], [1516471140000, 5.542e-05, 5.543e-05, 5.542e-05, 5.542e-05, 41189.3398954], [1516471200000, 5.543e-05, 5.543e-05, 5.535e-05, 5.535e-05, 32609.98472791], [1516471260000, 5.543e-05, 5.543e-05, 5.535e-05, 5.543e-05, 4121.65524959], [1516471320000, 5.543e-05, 5.544e-05, 5.52e-05, 5.543e-05, 84239.96582682], [1516471380000, 5.543e-05, 5.544e-05, 5.54e-05, 5.54e-05, 1980.24727653], [1516471440000, 5.54e-05, 5.543e-05, 5.54e-05, 5.543e-05, 3402.82139937], [1516471500000, 5.544e-05, 5.546e-05, 5.543e-05, 5.546e-05, 10049.20444573], [1516471560000, 5.548e-05, 5.548e-05, 5.524e-05, 5.547e-05, 28827.46589431], [1516471620000, 5.54e-05, 5.549e-05, 5.525e-05, 5.548e-05, 26313.92714989], [1516471680000, 5.525e-05, 5.549e-05, 5.525e-05, 5.536e-05, 5893.96805124], [1516471740000, 5.536e-05, 5.548e-05, 5.536e-05, 5.548e-05, 3938.94877566], [1516471800000, 5.542e-05, 5.548e-05, 5.536e-05, 5.542e-05, 43039.90927651], [1516471860000, 5.542e-05, 5.548e-05, 5.535e-05, 5.536e-05, 4962.2772829], [1516471920000, 5.542e-05, 5.542e-05, 5.532e-05, 5.535e-05, 24320.07335274], [1516471980000, 5.542e-05, 5.542e-05, 5.532e-05, 5.533e-05, 9639.34968644], [1516472040000, 5.533e-05, 5.542e-05, 5.533e-05, 5.542e-05, 50929.44947787], [1516472100000, 5.541e-05, 5.541e-05, 5.531e-05, 5.535e-05, 34967.2471152], [1516472160000, 5.535e-05, 5.535e-05, 5.53e-05, 5.531e-05, 32591.34205192], [1516472220000, 5.531e-05, 5.537e-05, 5.531e-05, 5.531e-05, 2376.35088405], [1516472280000, 5.531e-05, 5.537e-05, 5.531e-05, 5.535e-05, 53460.0075261], [1516472340000, 5.534e-05, 5.535e-05, 5.531e-05, 5.531e-05, 4273.96922328], [1516472400000, 5.535e-05, 5.535e-05, 5.531e-05, 5.531e-05, 52.47139984], [1516472460000, 5.532e-05, 5.534e-05, 5.532e-05, 5.534e-05, 9095.13126154], [1516472520000, 5.534e-05, 5.534e-05, 5.532e-05, 5.534e-05, 7009.10299752], [1516472580000, 5.534e-05, 5.534e-05, 5.532e-05, 5.534e-05, 3660.04725636], [1516472640000, 5.532e-05, 5.532e-05, 5.531e-05, 5.532e-05, 9584.38001252], [1516472700000, 5.532e-05, 5.534e-05, 5.531e-05, 5.532e-05, 10376.64275685], [1516472760000, 5.532e-05, 5.534e-05, 5.531e-05, 5.532e-05, 5266.77127298], [1516472820000, 5.532e-05, 5.534e-05, 5.532e-05, 5.534e-05, 782.98554228], [1516472880000, 5.534e-05, 5.535e-05, 5.532e-05, 5.532e-05, 4609.59374541], [1516472940000, 5.531e-05, 5.534e-05, 5.531e-05, 5.532e-05, 8389.97012651], [1516473000000, 5.535e-05, 5.539e-05, 5.532e-05, 5.534e-05, 58744.40060203], [1516473060000, 5.532e-05, 5.534e-05, 5.532e-05, 5.534e-05, 3941.658589], [1516473120000, 5.534e-05, 5.534e-05, 5.533e-05, 5.533e-05, 2162.49460779], [1516473180000, 5.533e-05, 5.533e-05, 5.532e-05, 5.532e-05, 18000.06619381], [1516473240000, 5.532e-05, 5.537e-05, 5.531e-05, 5.531e-05, 9225.91266834], [1516473300000, 5.531e-05, 5.531e-05, 5.525e-05, 5.525e-05, 25872.4857984], [1516473360000, 5.53e-05, 5.535e-05, 5.525e-05, 5.531e-05, 32964.32013429], [1516473420000, 5.535e-05, 5.536e-05, 5.526e-05, 5.526e-05, 16341.64115104], [1516473480000, 5.535e-05, 5.538e-05, 5.526e-05, 5.538e-05, 16045.50507086], [1516473540000, 5.536e-05, 5.537e-05, 5.535e-05, 5.537e-05, 10881.84442467], [1516473600000, 5.537e-05, 5.54e-05, 5.536e-05, 5.54e-05, 21315.41776417], [1516473660000, 5.541e-05, 5.542e-05, 5.54e-05, 5.542e-05, 4152.2743703], [1516473720000, 5.542e-05, 5.545e-05, 5.54e-05, 5.545e-05, 2411.93336264], [1516473780000, 5.54e-05, 5.544e-05, 5.525e-05, 5.525e-05, 27914.32331299], [1516473840000, 5.536e-05, 5.545e-05, 5.528e-05, 5.528e-05, 12529.99094028], [1516473900000, 5.53e-05, 5.544e-05, 5.528e-05, 5.528e-05, 16255.12018215], [1516473960000, 5.529e-05, 5.544e-05, 5.528e-05, 5.544e-05, 32379.66822941], [1516474020000, 5.543e-05, 5.545e-05, 5.543e-05, 5.545e-05, 4944.11207334], [1516474080000, 5.545e-05, 5.549e-05, 5.544e-05, 5.549e-05, 3953.36616073], [1516474140000, 5.548e-05, 5.55e-05, 5.528e-05, 5.55e-05, 15218.40667234], [1516474200000, 5.53e-05, 5.548e-05, 5.529e-05, 5.53e-05, 7399.65928587], [1516474260000, 5.53e-05, 5.537e-05, 5.53e-05, 5.53e-05, 16650.25191767], [1516474320000, 5.531e-05, 5.549e-05, 5.53e-05, 5.53e-05, 38433.88270728], [1516474380000, 5.531e-05, 5.545e-05, 5.528e-05, 5.531e-05, 46564.66029253], [1516474440000, 5.538e-05, 5.545e-05, 5.538e-05, 5.538e-05, 17805.80956168], [1516474500000, 5.538e-05, 5.538e-05, 5.528e-05, 5.538e-05, 10275.70022612], [1516474560000, 5.538e-05, 5.538e-05, 5.537e-05, 5.537e-05, 4275.52884025], [1516474620000, 5.537e-05, 5.537e-05, 5.528e-05, 5.528e-05, 6716.89340531], [1516474680000, 5.525e-05, 5.525e-05, 5.52e-05, 5.525e-05, 13511.75695757], [1516474740000, 5.525e-05, 5.525e-05, 5.52e-05, 5.525e-05, 3493.14656788], [1516474800000, 5.525e-05, 5.525e-05, 5.518e-05, 5.518e-05, 3002.70514063], [1516474860000, 5.518e-05, 5.525e-05, 5.518e-05, 5.525e-05, 9684.0297319], [1516474920000, 5.52e-05, 5.537e-05, 5.52e-05, 5.52e-05, 3555.54588324], [1516474980000, 5.52e-05, 5.52e-05, 5.512e-05, 5.519e-05, 5574.43136173], [1516475040000, 5.519e-05, 5.52e-05, 5.518e-05, 5.519e-05, 17427.58921935], [1516475100000, 5.519e-05, 5.536e-05, 5.512e-05, 5.536e-05, 12615.66383667], [1516475160000, 5.536e-05, 5.536e-05, 5.536e-05, 5.536e-05, 260.08073042], [1516475220000, 5.534e-05, 5.536e-05, 5.534e-05, 5.536e-05, 11799.3535465], [1516475280000, 5.536e-05, 5.537e-05, 5.529e-05, 5.537e-05, 9899.09900107], [1516475340000, 5.536e-05, 5.536e-05, 5.512e-05, 5.512e-05, 56502.06586498], [1516475400000, 5.513e-05, 5.529e-05, 5.513e-05, 5.528e-05, 5628.57363297], [1516475460000, 5.528e-05, 5.529e-05, 5.525e-05, 5.526e-05, 3014.09253559], [1516475520000, 5.526e-05, 5.529e-05, 5.523e-05, 5.529e-05, 1916.24888177], [1516475580000, 5.521e-05, 5.523e-05, 5.512e-05, 5.52e-05, 37702.83444162], [1516475640000, 5.52e-05, 5.521e-05, 5.519e-05, 5.52e-05, 6385.96778379], [1516475700000, 5.52e-05, 5.526e-05, 5.52e-05, 5.521e-05, 67768.55444511], [1516475760000, 5.521e-05, 5.529e-05, 5.521e-05, 5.526e-05, 7791.50140957], [1516475820000, 5.525e-05, 5.529e-05, 5.522e-05, 5.529e-05, 14312.61321041], [1516475880000, 5.528e-05, 5.529e-05, 5.519e-05, 5.52e-05, 15769.74360315], [1516475940000, 5.524e-05, 5.525e-05, 5.521e-05, 5.521e-05, 8137.98644412], [1516476000000, 5.524e-05, 5.531e-05, 5.521e-05, 5.53e-05, 9724.04704877], [1516476060000, 5.528e-05, 5.53e-05, 5.528e-05, 5.53e-05, 2919.93817971], [1516476120000, 5.531e-05, 5.536e-05, 5.531e-05, 5.535e-05, 11427.03848772], [1516476180000, 5.536e-05, 5.537e-05, 5.536e-05, 5.537e-05, 10847.82991279], [1516476240000, 5.537e-05, 5.54e-05, 5.537e-05, 5.54e-05, 4189.02018913], [1516476300000, 5.537e-05, 5.54e-05, 5.536e-05, 5.536e-05, 2895.79380402], [1516476360000, 5.54e-05, 5.54e-05, 5.535e-05, 5.536e-05, 8021.70018392], [1516476420000, 5.536e-05, 5.536e-05, 5.536e-05, 5.536e-05, 13214.10355981], [1516476480000, 5.536e-05, 5.537e-05, 5.534e-05, 5.537e-05, 14733.13388755], [1516476540000, 5.537e-05, 5.54e-05, 5.536e-05, 5.54e-05, 7646.96339903], [1516476600000, 5.54e-05, 5.54e-05, 5.534e-05, 5.54e-05, 45402.80637548], [1516476660000, 5.54e-05, 5.54e-05, 5.539e-05, 5.54e-05, 3943.2951208], [1516476720000, 5.54e-05, 5.54e-05, 5.539e-05, 5.539e-05, 10543.85322214], [1516476780000, 5.538e-05, 5.54e-05, 5.538e-05, 5.54e-05, 39420.80158916], [1516476840000, 5.54e-05, 5.55e-05, 5.54e-05, 5.54e-05, 6204.04055769], [1516476900000, 5.54e-05, 5.548e-05, 5.54e-05, 5.548e-05, 5987.94924635], [1516476960000, 5.54e-05, 5.546e-05, 5.54e-05, 5.54e-05, 72975.51426452], [1516477020000, 5.54e-05, 5.545e-05, 5.54e-05, 5.545e-05, 27002.16879188], [1516477080000, 5.545e-05, 5.545e-05, 5.536e-05, 5.536e-05, 19475.69081563], [1516477140000, 5.535e-05, 5.537e-05, 5.528e-05, 5.528e-05, 19820.28447828], [1516477200000, 5.528e-05, 5.537e-05, 5.528e-05, 5.537e-05, 52187.38471561], [1516477260000, 5.534e-05, 5.541e-05, 5.534e-05, 5.541e-05, 1337.60812461], [1516477320000, 5.541e-05, 5.541e-05, 5.537e-05, 5.538e-05, 808.68314725], [1516477380000, 5.537e-05, 5.544e-05, 5.52e-05, 5.538e-05, 15482.67216548], [1516477440000, 5.538e-05, 5.544e-05, 5.53e-05, 5.544e-05, 4568.28249472], [1516477500000, 5.544e-05, 5.545e-05, 5.52e-05, 5.545e-05, 17406.31438743], [1516477560000, 5.545e-05, 5.55e-05, 5.54e-05, 5.545e-05, 18183.00618767], [1516477620000, 5.55e-05, 5.55e-05, 5.537e-05, 5.549e-05, 2605.321319], [1516477680000, 5.545e-05, 5.549e-05, 5.544e-05, 5.544e-05, 6546.59240959], [1516477740000, 5.544e-05, 5.55e-05, 5.542e-05, 5.55e-05, 1403.00036693], [1516477800000, 5.55e-05, 5.55e-05, 5.537e-05, 5.55e-05, 4677.82542498], [1516477860000, 5.549e-05, 5.549e-05, 5.537e-05, 5.537e-05, 16159.65583462], [1516477920000, 5.537e-05, 5.549e-05, 5.537e-05, 5.537e-05, 3862.77772013], [1516477980000, 5.522e-05, 5.535e-05, 5.522e-05, 5.535e-05, 10321.57256303], [1516478040000, 5.535e-05, 5.548e-05, 5.535e-05, 5.547e-05, 1319.38692897], [1516478100000, 5.547e-05, 5.547e-05, 5.512e-05, 5.542e-05, 10797.41266509], [1516478160000, 5.542e-05, 5.545e-05, 5.524e-05, 5.529e-05, 6007.09380013], [1516478220000, 5.544e-05, 5.544e-05, 5.53e-05, 5.544e-05, 2343.29649039], [1516478280000, 5.544e-05, 5.544e-05, 5.53e-05, 5.544e-05, 6129.182201], [1516478340000, 5.543e-05, 5.543e-05, 5.529e-05, 5.529e-05, 26946.77134381], [1516478400000, 5.529e-05, 5.531e-05, 5.525e-05, 5.525e-05, 7880.89777922], [1516478460000, 5.525e-05, 5.531e-05, 5.515e-05, 5.529e-05, 4440.42768512], [1516478520000, 5.529e-05, 5.529e-05, 5.517e-05, 5.529e-05, 8918.25414848], [1516478580000, 5.529e-05, 5.531e-05, 5.528e-05, 5.53e-05, 9549.46651093], [1516478640000, 5.53e-05, 5.531e-05, 5.529e-05, 5.531e-05, 5135.86239955], [1516478700000, 5.531e-05, 5.531e-05, 5.53e-05, 5.53e-05, 1855.23661551], [1516478760000, 5.53e-05, 5.531e-05, 5.529e-05, 5.529e-05, 6378.00231711], [1516478820000, 5.529e-05, 5.529e-05, 5.525e-05, 5.529e-05, 8485.79614384], [1516478880000, 5.529e-05, 5.529e-05, 5.523e-05, 5.523e-05, 11630.70207566], [1516478940000, 5.523e-05, 5.529e-05, 5.519e-05, 5.529e-05, 8950.03066674], [1516479000000, 5.526e-05, 5.544e-05, 5.526e-05, 5.531e-05, 2772.09984391], [1516479060000, 5.527e-05, 5.531e-05, 5.525e-05, 5.525e-05, 8725.36355782], [1516479120000, 5.531e-05, 5.531e-05, 5.519e-05, 5.519e-05, 2421.57979044], [1516479180000, 5.52e-05, 5.535e-05, 5.52e-05, 5.535e-05, 6308.86503655], [1516479240000, 5.538e-05, 5.545e-05, 5.531e-05, 5.545e-05, 483.04072948], [1516479300000, 5.531e-05, 5.545e-05, 5.531e-05, 5.54e-05, 1154.77788402], [1516479360000, 5.54e-05, 5.54e-05, 5.532e-05, 5.54e-05, 986.38374792], [1516479420000, 5.54e-05, 5.54e-05, 5.539e-05, 5.54e-05, 715.44583935], [1516479480000, 5.538e-05, 5.538e-05, 5.535e-05, 5.538e-05, 1011.29353994], [1516479540000, 5.535e-05, 5.55e-05, 5.52e-05, 5.545e-05, 26962.42852933], [1516479600000, 5.545e-05, 5.55e-05, 5.54e-05, 5.549e-05, 10069.41026876], [1516479660000, 5.549e-05, 5.549e-05, 5.54e-05, 5.54e-05, 11877.05551191], [1516479720000, 5.54e-05, 5.549e-05, 5.54e-05, 5.54e-05, 1966.28518612], [1516479780000, 5.54e-05, 5.55e-05, 5.54e-05, 5.546e-05, 11519.29362221], [1516479840000, 5.546e-05, 5.552e-05, 5.546e-05, 5.546e-05, 9846.62443371], [1516479900000, 5.55e-05, 5.554e-05, 5.538e-05, 5.538e-05, 5673.09827103], [1516479960000, 5.545e-05, 5.546e-05, 5.521e-05, 5.521e-05, 7352.57215784], [1516480020000, 5.521e-05, 5.536e-05, 5.52e-05, 5.536e-05, 28119.23905901], [1516480080000, 5.536e-05, 5.536e-05, 5.52e-05, 5.536e-05, 3588.56567122], [1516480140000, 5.521e-05, 5.536e-05, 5.521e-05, 5.522e-05, 11890.13961815], [1516480200000, 5.536e-05, 5.536e-05, 5.524e-05, 5.536e-05, 1750.11138864], [1516480260000, 5.536e-05, 5.536e-05, 5.524e-05, 5.524e-05, 2043.08294355], [1516480320000, 5.524e-05, 5.53e-05, 5.522e-05, 5.528e-05, 34425.45981152], [1516480380000, 5.522e-05, 5.53e-05, 5.521e-05, 5.53e-05, 45632.08694529], [1516480440000, 5.53e-05, 5.53e-05, 5.521e-05, 5.528e-05, 7912.32464386], [1516480500000, 5.528e-05, 5.528e-05, 5.525e-05, 5.528e-05, 13881.48130205], [1516480560000, 5.528e-05, 5.53e-05, 5.527e-05, 5.53e-05, 3828.67299581], [1516480620000, 5.53e-05, 5.53e-05, 5.528e-05, 5.53e-05, 9837.99208328], [1516480680000, 5.53e-05, 5.537e-05, 5.528e-05, 5.53e-05, 15446.50991885], [1516480740000, 5.53e-05, 5.549e-05, 5.525e-05, 5.525e-05, 13692.38782301], [1516480800000, 5.525e-05, 5.55e-05, 5.52e-05, 5.538e-05, 22972.02208695], [1516480860000, 5.538e-05, 5.538e-05, 5.528e-05, 5.528e-05, 1697.12626554], [1516480920000, 5.528e-05, 5.535e-05, 5.528e-05, 5.53e-05, 4919.73092018], [1516480980000, 5.53e-05, 5.53e-05, 5.52e-05, 5.529e-05, 10307.92090242], [1516481040000, 5.532e-05, 5.535e-05, 5.529e-05, 5.529e-05, 4519.94039819], [1516481100000, 5.535e-05, 5.535e-05, 5.535e-05, 5.535e-05, 1737.88234592], [1516481160000, 5.535e-05, 5.552e-05, 5.53e-05, 5.552e-05, 8805.02495778], [1516481220000, 5.536e-05, 5.549e-05, 5.52e-05, 5.549e-05, 8243.92445956], [1516481280000, 5.549e-05, 5.549e-05, 5.522e-05, 5.549e-05, 2714.66419985], [1516481340000, 5.549e-05, 5.549e-05, 5.548e-05, 5.549e-05, 4891.72565859], [1516481400000, 5.548e-05, 5.549e-05, 5.545e-05, 5.546e-05, 13795.6685353], [1516481460000, 5.546e-05, 5.549e-05, 5.537e-05, 5.537e-05, 8046.94216206], [1516481520000, 5.537e-05, 5.549e-05, 5.535e-05, 5.537e-05, 10730.16704432], [1516481580000, 5.536e-05, 5.537e-05, 5.528e-05, 5.535e-05, 9047.71514696], [1516481640000, 5.53e-05, 5.534e-05, 5.529e-05, 5.534e-05, 8103.45981121], [1516481700000, 5.545e-05, 5.545e-05, 5.532e-05, 5.535e-05, 2024.31391133], [1516481760000, 5.539e-05, 5.549e-05, 5.53e-05, 5.549e-05, 4563.42517403], [1516481820000, 5.543e-05, 5.549e-05, 5.53e-05, 5.545e-05, 16690.7165828], [1516481880000, 5.542e-05, 5.55e-05, 5.53e-05, 5.547e-05, 9254.15925091], [1516481940000, 5.543e-05, 5.554e-05, 5.543e-05, 5.551e-05, 8846.40428895], [1516482000000, 5.551e-05, 5.554e-05, 5.547e-05, 5.547e-05, 24099.39414897], [1516482060000, 5.55e-05, 5.554e-05, 5.545e-05, 5.554e-05, 18629.16911947], [1516482120000, 5.554e-05, 5.554e-05, 5.529e-05, 5.551e-05, 20393.83385181], [1516482180000, 5.551e-05, 5.551e-05, 5.531e-05, 5.532e-05, 36477.58462191], [1516482240000, 5.549e-05, 5.551e-05, 5.531e-05, 5.536e-05, 53469.07364883], [1516482300000, 5.532e-05, 5.537e-05, 5.531e-05, 5.536e-05, 24265.50952099], [1516482360000, 5.536e-05, 5.536e-05, 5.533e-05, 5.535e-05, 17174.25249713], [1516482420000, 5.535e-05, 5.535e-05, 5.531e-05, 5.535e-05, 6475.92313597], [1516482480000, 5.535e-05, 5.535e-05, 5.533e-05, 5.534e-05, 14207.85316719], [1516482540000, 5.533e-05, 5.533e-05, 5.531e-05, 5.533e-05, 11851.5294884], [1516482600000, 5.532e-05, 5.533e-05, 5.531e-05, 5.531e-05, 13450.88686698], [1516482660000, 5.532e-05, 5.537e-05, 5.522e-05, 5.537e-05, 24199.25071882], [1516482720000, 5.537e-05, 5.537e-05, 5.53e-05, 5.53e-05, 5538.37940917], [1516482780000, 5.53e-05, 5.53e-05, 5.526e-05, 5.528e-05, 8119.71560284], [1516482840000, 5.527e-05, 5.527e-05, 5.526e-05, 5.527e-05, 4522.43366017], [1516482900000, 5.527e-05, 5.536e-05, 5.523e-05, 5.536e-05, 13652.8241997], [1516482960000, 5.527e-05, 5.527e-05, 5.524e-05, 5.527e-05, 6069.49146185], [1516483020000, 5.527e-05, 5.527e-05, 5.526e-05, 5.526e-05, 27315.30774141], [1516483080000, 5.526e-05, 5.536e-05, 5.526e-05, 5.536e-05, 17020.68163339], [1516483140000, 5.527e-05, 5.544e-05, 5.527e-05, 5.544e-05, 301.83513698], [1516483200000, 5.539e-05, 5.54e-05, 5.539e-05, 5.539e-05, 3521.89150522], [1516483260000, 5.539e-05, 5.539e-05, 5.538e-05, 5.538e-05, 256.8512692], [1516483320000, 5.529e-05, 5.537e-05, 5.528e-05, 5.535e-05, 1647.16543197], [1516483380000, 5.535e-05, 5.537e-05, 5.528e-05, 5.536e-05, 10753.94890111], [1516483440000, 5.536e-05, 5.537e-05, 5.528e-05, 5.528e-05, 2695.99583921], [1516483500000, 5.528e-05, 5.533e-05, 5.509e-05, 5.511e-05, 55586.57159396], [1516483560000, 5.519e-05, 5.531e-05, 5.509e-05, 5.531e-05, 63033.56942918], [1516483620000, 5.529e-05, 5.53e-05, 5.519e-05, 5.519e-05, 5374.99400618], [1516483680000, 5.519e-05, 5.53e-05, 5.519e-05, 5.529e-05, 135735.78926014], [1516483740000, 5.53e-05, 5.531e-05, 5.519e-05, 5.521e-05, 6584.07089948], [1516483800000, 5.528e-05, 5.531e-05, 5.523e-05, 5.53e-05, 20742.69401267], [1516483860000, 5.525e-05, 5.531e-05, 5.521e-05, 5.53e-05, 10216.70360233], [1516483920000, 5.53e-05, 5.53e-05, 5.511e-05, 5.522e-05, 2798.09967236], [1516483980000, 5.525e-05, 5.527e-05, 5.522e-05, 5.522e-05, 4422.55951454], [1516484040000, 5.525e-05, 5.525e-05, 5.522e-05, 5.522e-05, 28549.63573812], [1516484100000, 5.515e-05, 5.522e-05, 5.513e-05, 5.515e-05, 27102.71846594], [1516484160000, 5.521e-05, 5.529e-05, 5.521e-05, 5.525e-05, 23750.1350325], [1516484220000, 5.525e-05, 5.529e-05, 5.525e-05, 5.528e-05, 50094.59099019], [1516484280000, 5.525e-05, 5.529e-05, 5.525e-05, 5.525e-05, 4793.47716959], [1516484340000, 5.525e-05, 5.529e-05, 5.525e-05, 5.529e-05, 25050.13978882], [1516484400000, 5.529e-05, 5.529e-05, 5.525e-05, 5.528e-05, 7846.30306608], [1516484460000, 5.528e-05, 5.529e-05, 5.525e-05, 5.528e-05, 5468.32063425], [1516484520000, 5.528e-05, 5.528e-05, 5.525e-05, 5.528e-05, 49203.30261407], [1516484580000, 5.528e-05, 5.529e-05, 5.525e-05, 5.529e-05, 12412.19869905], [1516484640000, 5.525e-05, 5.529e-05, 5.525e-05, 5.525e-05, 58532.27073521], [1516484700000, 5.525e-05, 5.529e-05, 5.525e-05, 5.526e-05, 59178.27507717], [1516484760000, 5.526e-05, 5.528e-05, 5.515e-05, 5.525e-05, 8001.28373042], [1516484820000, 5.525e-05, 5.528e-05, 5.525e-05, 5.528e-05, 1216.93772919], [1516484880000, 5.525e-05, 5.528e-05, 5.525e-05, 5.528e-05, 13595.32106499], [1516484940000, 5.527e-05, 5.528e-05, 5.525e-05, 5.525e-05, 579.61763245], [1516485000000, 5.526e-05, 5.555e-05, 5.525e-05, 5.525e-05, 25667.41511617], [1516485060000, 5.526e-05, 5.554e-05, 5.525e-05, 5.525e-05, 7023.4353819], [1516485120000, 5.525e-05, 5.551e-05, 5.52e-05, 5.523e-05, 6057.96381305], [1516485180000, 5.547e-05, 5.555e-05, 5.523e-05, 5.555e-05, 24742.86617383], [1516485240000, 5.552e-05, 5.553e-05, 5.523e-05, 5.523e-05, 13974.41901203], [1516485300000, 5.524e-05, 5.54e-05, 5.524e-05, 5.524e-05, 18497.58613002], [1516485360000, 5.525e-05, 5.55e-05, 5.523e-05, 5.523e-05, 28177.90876466], [1516485420000, 5.54e-05, 5.546e-05, 5.515e-05, 5.539e-05, 17921.7357525], [1516485480000, 5.539e-05, 5.54e-05, 5.524e-05, 5.524e-05, 4957.913203], [1516485540000, 5.524e-05, 5.524e-05, 5.516e-05, 5.516e-05, 775.140852], [1516485600000, 5.516e-05, 5.516e-05, 5.508e-05, 5.513e-05, 15335.11787055], [1516485660000, 5.513e-05, 5.513e-05, 5.509e-05, 5.512e-05, 4354.50614369], [1516485720000, 5.512e-05, 5.513e-05, 5.508e-05, 5.51e-05, 12464.65539958], [1516485780000, 5.51e-05, 5.513e-05, 5.51e-05, 5.513e-05, 22088.472156], [1516485840000, 5.513e-05, 5.543e-05, 5.5e-05, 5.5e-05, 15629.01456198], [1516485900000, 5.52e-05, 5.52e-05, 5.51e-05, 5.52e-05, 9385.47500318], [1516485960000, 5.51e-05, 5.53e-05, 5.51e-05, 5.51e-05, 2211.96121851], [1516486020000, 5.51e-05, 5.548e-05, 5.51e-05, 5.524e-05, 7572.8041398], [1516486080000, 5.516e-05, 5.536e-05, 5.516e-05, 5.536e-05, 370.79698256], [1516486140000, 5.536e-05, 5.536e-05, 5.51e-05, 5.51e-05, 12105.24274759], [1516486200000, 5.51e-05, 5.546e-05, 5.51e-05, 5.543e-05, 6886.54295591], [1516486260000, 5.542e-05, 5.542e-05, 5.515e-05, 5.537e-05, 2717.47609481], [1516486320000, 5.515e-05, 5.54e-05, 5.515e-05, 5.54e-05, 6560.06568144], [1516486380000, 5.54e-05, 5.54e-05, 5.515e-05, 5.515e-05, 7989.12601925], [1516486440000, 5.531e-05, 5.55e-05, 5.512e-05, 5.548e-05, 14420.47724694], [1516486500000, 5.514e-05, 5.545e-05, 5.514e-05, 5.539e-05, 6369.60241513], [1516486560000, 5.517e-05, 5.539e-05, 5.5e-05, 5.513e-05, 25671.88201552], [1516486620000, 5.502e-05, 5.539e-05, 5.5e-05, 5.508e-05, 21301.73181399], [1516486680000, 5.507e-05, 5.539e-05, 5.505e-05, 5.505e-05, 5256.64983209], [1516486740000, 5.51e-05, 5.539e-05, 5.505e-05, 5.539e-05, 20075.06292737], [1516486800000, 5.539e-05, 5.539e-05, 5.508e-05, 5.539e-05, 8815.13716174], [1516486860000, 5.539e-05, 5.539e-05, 5.502e-05, 5.538e-05, 12988.71926365], [1516486920000, 5.538e-05, 5.539e-05, 5.502e-05, 5.537e-05, 10665.68769675], [1516486980000, 5.537e-05, 5.538e-05, 5.5e-05, 5.512e-05, 10356.9623296], [1516487040000, 5.512e-05, 5.536e-05, 5.5e-05, 5.5e-05, 13472.9098248], [1516487100000, 5.526e-05, 5.526e-05, 5.5e-05, 5.5e-05, 21822.90412736], [1516487160000, 5.526e-05, 5.526e-05, 5.505e-05, 5.51e-05, 9614.48662695], [1516487220000, 5.51e-05, 5.52e-05, 5.5e-05, 5.517e-05, 18370.34270847], [1516487280000, 5.517e-05, 5.526e-05, 5.5e-05, 5.526e-05, 23969.69466171], [1516487340000, 5.526e-05, 5.526e-05, 5.5e-05, 5.525e-05, 27356.09807206], [1516487400000, 5.522e-05, 5.526e-05, 5.512e-05, 5.526e-05, 55899.16821134], [1516487460000, 5.534e-05, 5.535e-05, 5.512e-05, 5.512e-05, 6399.27321028], [1516487520000, 5.535e-05, 5.535e-05, 5.515e-05, 5.532e-05, 12461.3370936], [1516487580000, 5.532e-05, 5.532e-05, 5.515e-05, 5.532e-05, 21112.55786069], [1516487640000, 5.52e-05, 5.532e-05, 5.516e-05, 5.531e-05, 11290.84973189], [1516487700000, 5.531e-05, 5.532e-05, 5.516e-05, 5.532e-05, 18850.90735775], [1516487760000, 5.532e-05, 5.535e-05, 5.518e-05, 5.518e-05, 8053.77912419], [1516487820000, 5.535e-05, 5.535e-05, 5.518e-05, 5.535e-05, 75917.21298369], [1516487880000, 5.532e-05, 5.535e-05, 5.518e-05, 5.535e-05, 57028.55577986], [1516487940000, 5.52e-05, 5.535e-05, 5.505e-05, 5.505e-05, 22218.29868587], [1516488000000, 5.535e-05, 5.535e-05, 5.502e-05, 5.515e-05, 21666.83573561], [1516488060000, 5.535e-05, 5.538e-05, 5.515e-05, 5.526e-05, 20603.41249156], [1516488120000, 5.526e-05, 5.534e-05, 5.51e-05, 5.516e-05, 18133.11552122], [1516488180000, 5.533e-05, 5.539e-05, 5.502e-05, 5.533e-05, 13871.89997712], [1516488240000, 5.539e-05, 5.539e-05, 5.504e-05, 5.505e-05, 19057.07914518], [1516488300000, 5.517e-05, 5.538e-05, 5.505e-05, 5.538e-05, 18776.05017757], [1516488360000, 5.508e-05, 5.538e-05, 5.504e-05, 5.507e-05, 18329.76153521], [1516488420000, 5.537e-05, 5.538e-05, 5.504e-05, 5.508e-05, 10642.76705118], [1516488480000, 5.537e-05, 5.537e-05, 5.502e-05, 5.504e-05, 19026.66425861], [1516488540000, 5.507e-05, 5.536e-05, 5.502e-05, 5.536e-05, 11130.33992539], [1516488600000, 5.536e-05, 5.537e-05, 5.507e-05, 5.536e-05, 10435.85482727], [1516488660000, 5.537e-05, 5.537e-05, 5.508e-05, 5.536e-05, 3276.47426933], [1516488720000, 5.536e-05, 5.537e-05, 5.536e-05, 5.537e-05, 2289.73564712], [1516488780000, 5.537e-05, 5.538e-05, 5.536e-05, 5.537e-05, 5177.56791231], [1516488840000, 5.537e-05, 5.537e-05, 5.51e-05, 5.536e-05, 8662.07189532], [1516488900000, 5.536e-05, 5.544e-05, 5.514e-05, 5.536e-05, 49711.6659317], [1516488960000, 5.543e-05, 5.543e-05, 5.529e-05, 5.536e-05, 14329.61451351], [1516489020000, 5.53e-05, 5.538e-05, 5.528e-05, 5.536e-05, 24852.32557275], [1516489080000, 5.538e-05, 5.538e-05, 5.53e-05, 5.538e-05, 3961.23399827], [1516489140000, 5.53e-05, 5.538e-05, 5.527e-05, 5.537e-05, 10539.57058245], [1516489200000, 5.537e-05, 5.537e-05, 5.528e-05, 5.537e-05, 4091.54590072], [1516489260000, 5.526e-05, 5.538e-05, 5.522e-05, 5.538e-05, 512.64558605], [1516489320000, 5.538e-05, 5.538e-05, 5.522e-05, 5.537e-05, 1850.29178845], [1516489380000, 5.538e-05, 5.538e-05, 5.523e-05, 5.523e-05, 5987.88468203], [1516489440000, 5.523e-05, 5.538e-05, 5.523e-05, 5.538e-05, 32815.52775416], [1516489500000, 5.537e-05, 5.54e-05, 5.526e-05, 5.54e-05, 31967.28369126], [1516489560000, 5.54e-05, 5.544e-05, 5.534e-05, 5.54e-05, 6121.93147194], [1516489620000, 5.54e-05, 5.54e-05, 5.534e-05, 5.534e-05, 8295.7336616], [1516489680000, 5.534e-05, 5.544e-05, 5.528e-05, 5.54e-05, 15666.08917931], [1516489740000, 5.544e-05, 5.544e-05, 5.523e-05, 5.534e-05, 15854.66324345], [1516489800000, 5.524e-05, 5.543e-05, 5.524e-05, 5.534e-05, 4312.30975008], [1516489860000, 5.54e-05, 5.544e-05, 5.524e-05, 5.543e-05, 19027.00235958], [1516489920000, 5.543e-05, 5.543e-05, 5.525e-05, 5.543e-05, 3587.42731612], [1516489980000, 5.543e-05, 5.543e-05, 5.525e-05, 5.543e-05, 13457.77213014], [1516490040000, 5.543e-05, 5.544e-05, 5.525e-05, 5.525e-05, 51293.90486901], [1516490100000, 5.543e-05, 5.544e-05, 5.526e-05, 5.543e-05, 336.8923873], [1516490160000, 5.543e-05, 5.548e-05, 5.543e-05, 5.543e-05, 9592.12952135], [1516490220000, 5.548e-05, 5.549e-05, 5.543e-05, 5.549e-05, 22563.58123456], [1516490280000, 5.55e-05, 5.55e-05, 5.549e-05, 5.55e-05, 7596.17061641], [1516490340000, 5.549e-05, 5.549e-05, 5.543e-05, 5.543e-05, 962.20848803], [1516490400000, 5.543e-05, 5.549e-05, 5.543e-05, 5.549e-05, 20079.68511012], [1516490460000, 5.549e-05, 5.549e-05, 5.526e-05, 5.549e-05, 3188.12450837], [1516490520000, 5.549e-05, 5.55e-05, 5.549e-05, 5.549e-05, 15269.1506973], [1516490580000, 5.55e-05, 5.55e-05, 5.526e-05, 5.55e-05, 10655.01799453], [1516490640000, 5.549e-05, 5.549e-05, 5.549e-05, 5.549e-05, 3765.22862169], [1516490700000, 5.548e-05, 5.55e-05, 5.548e-05, 5.549e-05, 7300.53729581], [1516490760000, 5.549e-05, 5.549e-05, 5.546e-05, 5.546e-05, 8686.47540206], [1516490820000, 5.547e-05, 5.549e-05, 5.546e-05, 5.549e-05, 12499.31920802], [1516490880000, 5.549e-05, 5.549e-05, 5.547e-05, 5.549e-05, 41477.61002549], [1516490940000, 5.55e-05, 5.55e-05, 5.549e-05, 5.55e-05, 144616.31170589], [1516491000000, 5.55e-05, 5.55e-05, 5.549e-05, 5.55e-05, 25052.54705762], [1516491060000, 5.549e-05, 5.55e-05, 5.549e-05, 5.549e-05, 21019.65931207], [1516491120000, 5.55e-05, 5.55e-05, 5.549e-05, 5.55e-05, 32398.84613723], [1516491180000, 5.551e-05, 5.552e-05, 5.55e-05, 5.552e-05, 3854.05892457], [1516491240000, 5.555e-05, 5.556e-05, 5.552e-05, 5.555e-05, 31723.89945095], [1516491300000, 5.555e-05, 5.575e-05, 5.555e-05, 5.559e-05, 81411.08432274], [1516491360000, 5.559e-05, 5.571e-05, 5.559e-05, 5.56e-05, 8215.42193613], [1516491420000, 5.56e-05, 5.568e-05, 5.56e-05, 5.56e-05, 7708.76154334], [1516491480000, 5.56e-05, 5.574e-05, 5.557e-05, 5.559e-05, 19655.7577003], [1516491540000, 5.557e-05, 5.559e-05, 5.557e-05, 5.559e-05, 13808.97017822], [1516491600000, 5.559e-05, 5.564e-05, 5.559e-05, 5.559e-05, 8612.01666781], [1516491660000, 5.56e-05, 5.56e-05, 5.558e-05, 5.558e-05, 7369.5597577], [1516491720000, 5.558e-05, 5.564e-05, 5.558e-05, 5.559e-05, 12560.06910541], [1516491780000, 5.562e-05, 5.564e-05, 5.559e-05, 5.563e-05, 3774.37280812], [1516491840000, 5.564e-05, 5.564e-05, 5.561e-05, 5.561e-05, 4271.60057706], [1516491900000, 5.561e-05, 5.561e-05, 5.559e-05, 5.56e-05, 1884.06381667], [1516491960000, 5.561e-05, 5.563e-05, 5.561e-05, 5.563e-05, 3029.78514578], [1516492020000, 5.561e-05, 5.563e-05, 5.56e-05, 5.561e-05, 14633.83444641], [1516492080000, 5.561e-05, 5.561e-05, 5.559e-05, 5.561e-05, 11067.71637162], [1516492140000, 5.561e-05, 5.562e-05, 5.559e-05, 5.559e-05, 6959.21669038], [1516492200000, 5.562e-05, 5.563e-05, 5.56e-05, 5.56e-05, 1614.36874167], [1516492260000, 5.562e-05, 5.563e-05, 5.559e-05, 5.559e-05, 8464.62430204], [1516492320000, 5.563e-05, 5.563e-05, 5.56e-05, 5.563e-05, 5315.13218003], [1516492380000, 5.563e-05, 5.564e-05, 5.562e-05, 5.562e-05, 4722.43155665], [1516492440000, 5.561e-05, 5.562e-05, 5.559e-05, 5.559e-05, 18833.27152193], [1516492500000, 5.56e-05, 5.561e-05, 5.559e-05, 5.559e-05, 58680.97305467], [1516492560000, 5.559e-05, 5.56e-05, 5.558e-05, 5.56e-05, 22757.77606793], [1516492620000, 5.558e-05, 5.559e-05, 5.545e-05, 5.545e-05, 156154.18789287], [1516492680000, 5.545e-05, 5.554e-05, 5.541e-05, 5.541e-05, 14296.53650263], [1516492740000, 5.541e-05, 5.543e-05, 5.526e-05, 5.542e-05, 9694.11653208], [1516492800000, 5.542e-05, 5.543e-05, 5.525e-05, 5.541e-05, 35604.80512479], [1516492860000, 5.54e-05, 5.541e-05, 5.5e-05, 5.509e-05, 36248.93513516], [1516492920000, 5.51e-05, 5.51e-05, 5.5e-05, 5.51e-05, 6367.54505852], [1516492980000, 5.509e-05, 5.521e-05, 5.483e-05, 5.496e-05, 87610.84675578], [1516493040000, 5.496e-05, 5.496e-05, 5.475e-05, 5.477e-05, 37094.08441946], [1516493100000, 5.477e-05, 5.499e-05, 5.472e-05, 5.499e-05, 21270.79166918], [1516493160000, 5.477e-05, 5.521e-05, 5.477e-05, 5.521e-05, 1786.63474271], [1516493220000, 5.521e-05, 5.521e-05, 5.481e-05, 5.482e-05, 9134.52104672], [1516493280000, 5.507e-05, 5.507e-05, 5.47e-05, 5.481e-05, 35202.67043797], [1516493340000, 5.481e-05, 5.502e-05, 5.481e-05, 5.483e-05, 6762.3797835], [1516493400000, 5.483e-05, 5.502e-05, 5.483e-05, 5.498e-05, 4152.33008977], [1516493460000, 5.497e-05, 5.497e-05, 5.481e-05, 5.481e-05, 22127.14171078], [1516493520000, 5.483e-05, 5.495e-05, 5.48e-05, 5.481e-05, 49638.75921266], [1516493580000, 5.481e-05, 5.494e-05, 5.481e-05, 5.493e-05, 14108.19904789], [1516493640000, 5.484e-05, 5.494e-05, 5.483e-05, 5.494e-05, 21502.94687148], [1516493700000, 5.494e-05, 5.494e-05, 5.481e-05, 5.488e-05, 15526.53049936], [1516493760000, 5.487e-05, 5.493e-05, 5.481e-05, 5.493e-05, 21870.11823127], [1516493820000, 5.491e-05, 5.491e-05, 5.479e-05, 5.48e-05, 17110.87479522], [1516493880000, 5.48e-05, 5.492e-05, 5.459e-05, 5.483e-05, 54397.70384502], [1516493940000, 5.482e-05, 5.492e-05, 5.462e-05, 5.462e-05, 9783.11340147], [1516494000000, 5.47e-05, 5.479e-05, 5.462e-05, 5.469e-05, 49424.92328607], [1516494060000, 5.469e-05, 5.492e-05, 5.462e-05, 5.463e-05, 40116.001217], [1516494120000, 5.463e-05, 5.463e-05, 5.452e-05, 5.452e-05, 92052.01532089], [1516494180000, 5.462e-05, 5.463e-05, 5.45e-05, 5.461e-05, 64085.30840807], [1516494240000, 5.461e-05, 5.468e-05, 5.46e-05, 5.461e-05, 51835.86834769], [1516494300000, 5.461e-05, 5.492e-05, 5.46e-05, 5.475e-05, 42491.53439489], [1516494360000, 5.475e-05, 5.492e-05, 5.465e-05, 5.467e-05, 2017.29262533], [1516494420000, 5.466e-05, 5.475e-05, 5.466e-05, 5.475e-05, 10789.60672571], [1516494480000, 5.466e-05, 5.5e-05, 5.465e-05, 5.498e-05, 55266.45368902], [1516494540000, 5.492e-05, 5.517e-05, 5.484e-05, 5.514e-05, 5381.68814456], [1516494600000, 5.485e-05, 5.512e-05, 5.484e-05, 5.499e-05, 6421.93300543], [1516494660000, 5.508e-05, 5.514e-05, 5.499e-05, 5.499e-05, 6938.22510748], [1516494720000, 5.499e-05, 5.504e-05, 5.484e-05, 5.484e-05, 7573.26815611], [1516494780000, 5.484e-05, 5.485e-05, 5.475e-05, 5.483e-05, 7563.47163243], [1516494840000, 5.483e-05, 5.483e-05, 5.475e-05, 5.483e-05, 8366.19367217], [1516494900000, 5.482e-05, 5.483e-05, 5.44e-05, 5.482e-05, 119305.64150291], [1516494960000, 5.48e-05, 5.48e-05, 5.447e-05, 5.459e-05, 46763.48813464], [1516495020000, 5.459e-05, 5.48e-05, 5.453e-05, 5.48e-05, 9341.15174131], [1516495080000, 5.48e-05, 5.48e-05, 5.479e-05, 5.479e-05, 25073.74394394], [1516495140000, 5.479e-05, 5.48e-05, 5.453e-05, 5.48e-05, 96169.24883475], [1516495200000, 5.482e-05, 5.482e-05, 5.479e-05, 5.482e-05, 21078.49420913], [1516495260000, 5.479e-05, 5.504e-05, 5.43e-05, 5.504e-05, 248245.38415147], [1516495320000, 5.504e-05, 5.504e-05, 5.43e-05, 5.43e-05, 413694.06961058], [1516495380000, 5.451e-05, 5.497e-05, 5.451e-05, 5.494e-05, 1125.91650202], [1516495440000, 5.493e-05, 5.493e-05, 5.488e-05, 5.488e-05, 15645.92799638], [1516495500000, 5.462e-05, 5.489e-05, 5.444e-05, 5.489e-05, 7091.28987866], [1516495560000, 5.489e-05, 5.492e-05, 5.476e-05, 5.492e-05, 17200.70339317], [1516495620000, 5.492e-05, 5.493e-05, 5.492e-05, 5.493e-05, 26178.90821554], [1516495680000, 5.493e-05, 5.5e-05, 5.488e-05, 5.488e-05, 23717.04538835], [1516495740000, 5.498e-05, 5.538e-05, 5.44e-05, 5.526e-05, 121487.65347405], [1516495800000, 5.521e-05, 5.521e-05, 5.461e-05, 5.464e-05, 6872.30439194], [1516495860000, 5.463e-05, 5.519e-05, 5.463e-05, 5.509e-05, 21853.00323382], [1516495920000, 5.506e-05, 5.506e-05, 5.464e-05, 5.464e-05, 8249.87158767], [1516495980000, 5.463e-05, 5.497e-05, 5.442e-05, 5.455e-05, 38297.13999986], [1516496040000, 5.455e-05, 5.489e-05, 5.438e-05, 5.439e-05, 39094.38267851], [1516496100000, 5.436e-05, 5.484e-05, 5.433e-05, 5.469e-05, 22101.46655676], [1516496160000, 5.469e-05, 5.469e-05, 5.435e-05, 5.469e-05, 46604.96347568], [1516496220000, 5.44e-05, 5.468e-05, 5.437e-05, 5.442e-05, 29181.39459022], [1516496280000, 5.442e-05, 5.469e-05, 5.442e-05, 5.467e-05, 22418.00616437], [1516496340000, 5.467e-05, 5.485e-05, 5.467e-05, 5.485e-05, 29874.84725018], [1516496400000, 5.48e-05, 5.505e-05, 5.48e-05, 5.497e-05, 183784.01879512], [1516496460000, 5.497e-05, 5.517e-05, 5.475e-05, 5.475e-05, 32215.09370317], [1516496520000, 5.475e-05, 5.52e-05, 5.475e-05, 5.487e-05, 100233.29773742], [1516496580000, 5.488e-05, 5.51e-05, 5.457e-05, 5.488e-05, 17308.69336448], [1516496640000, 5.488e-05, 5.504e-05, 5.457e-05, 5.466e-05, 6535.60672401], [1516496700000, 5.466e-05, 5.499e-05, 5.466e-05, 5.473e-05, 32680.66159857], [1516496760000, 5.5e-05, 5.515e-05, 5.477e-05, 5.483e-05, 79439.77939979], [1516496820000, 5.497e-05, 5.516e-05, 5.484e-05, 5.484e-05, 27095.04689111], [1516496880000, 5.496e-05, 5.498e-05, 5.485e-05, 5.485e-05, 17214.18700071], [1516496940000, 5.485e-05, 5.494e-05, 5.484e-05, 5.494e-05, 7557.8282071], [1516497000000, 5.494e-05, 5.495e-05, 5.483e-05, 5.495e-05, 20599.42052043], [1516497060000, 5.487e-05, 5.497e-05, 5.483e-05, 5.497e-05, 2839.96775586], [1516497120000, 5.497e-05, 5.5e-05, 5.483e-05, 5.483e-05, 34528.52803549], [1516497180000, 5.483e-05, 5.5e-05, 5.483e-05, 5.499e-05, 11759.54549072], [1516497240000, 5.498e-05, 5.5e-05, 5.483e-05, 5.483e-05, 6014.42091012], [1516497300000, 5.498e-05, 5.499e-05, 5.483e-05, 5.483e-05, 6104.96405693], [1516497360000, 5.483e-05, 5.484e-05, 5.483e-05, 5.483e-05, 5852.64144182], [1516497420000, 5.482e-05, 5.483e-05, 5.475e-05, 5.481e-05, 9969.07115191], [1516497480000, 5.476e-05, 5.482e-05, 5.476e-05, 5.482e-05, 24083.75520361], [1516497540000, 5.482e-05, 5.483e-05, 5.475e-05, 5.482e-05, 12013.99251212], [1516497600000, 5.483e-05, 5.485e-05, 5.475e-05, 5.475e-05, 23596.37009845], [1516497660000, 5.475e-05, 5.5e-05, 5.475e-05, 5.485e-05, 11912.96428271], [1516497720000, 5.485e-05, 5.514e-05, 5.475e-05, 5.475e-05, 42040.62277235], [1516497780000, 5.473e-05, 5.514e-05, 5.473e-05, 5.475e-05, 9192.99279802], [1516497840000, 5.476e-05, 5.51e-05, 5.476e-05, 5.51e-05, 22377.8106398], [1516497900000, 5.506e-05, 5.51e-05, 5.476e-05, 5.506e-05, 2413.16239213], [1516497960000, 5.505e-05, 5.505e-05, 5.484e-05, 5.484e-05, 1580.77948442], [1516498020000, 5.506e-05, 5.51e-05, 5.48e-05, 5.484e-05, 18750.29376489], [1516498080000, 5.484e-05, 5.514e-05, 5.484e-05, 5.514e-05, 33273.22445242], [1516498140000, 5.514e-05, 5.516e-05, 5.51e-05, 5.513e-05, 11682.50520572], [1516498200000, 5.509e-05, 5.509e-05, 5.481e-05, 5.481e-05, 4908.87202467], [1516498260000, 5.513e-05, 5.516e-05, 5.509e-05, 5.509e-05, 1597.6819171], [1516498320000, 5.485e-05, 5.516e-05, 5.485e-05, 5.513e-05, 9289.26758552], [1516498380000, 5.513e-05, 5.517e-05, 5.485e-05, 5.5e-05, 2732.76275246], [1516498440000, 5.485e-05, 5.5e-05, 5.485e-05, 5.5e-05, 635.32616047], [1516498500000, 5.5e-05, 5.535e-05, 5.485e-05, 5.5e-05, 9958.90122385], [1516498560000, 5.486e-05, 5.537e-05, 5.485e-05, 5.5e-05, 8487.73535815], [1516498620000, 5.517e-05, 5.517e-05, 5.5e-05, 5.5e-05, 297.40584335], [1516498680000, 5.5e-05, 5.51e-05, 5.5e-05, 5.5e-05, 11793.31313822], [1516498740000, 5.5e-05, 5.51e-05, 5.5e-05, 5.509e-05, 5935.01950877], [1516498800000, 5.509e-05, 5.509e-05, 5.5e-05, 5.508e-05, 61.58747346], [1516498860000, 5.506e-05, 5.51e-05, 5.506e-05, 5.507e-05, 8195.87562106], [1516498920000, 5.508e-05, 5.535e-05, 5.483e-05, 5.483e-05, 22972.75779174], [1516498980000, 5.483e-05, 5.5e-05, 5.48e-05, 5.48e-05, 20737.30532601], [1516499040000, 5.481e-05, 5.488e-05, 5.48e-05, 5.481e-05, 22600.87307656], [1516499100000, 5.488e-05, 5.509e-05, 5.481e-05, 5.483e-05, 11947.0563941], [1516499160000, 5.483e-05, 5.507e-05, 5.481e-05, 5.507e-05, 48579.08951148], [1516499220000, 5.507e-05, 5.509e-05, 5.483e-05, 5.484e-05, 2764.36605583], [1516499280000, 5.483e-05, 5.509e-05, 5.483e-05, 5.483e-05, 3692.744179], [1516499340000, 5.484e-05, 5.485e-05, 5.482e-05, 5.482e-05, 17362.18572767], [1516499400000, 5.482e-05, 5.5e-05, 5.482e-05, 5.483e-05, 21783.86757281], [1516499460000, 5.499e-05, 5.506e-05, 5.482e-05, 5.482e-05, 50718.72082709], [1516499520000, 5.499e-05, 5.499e-05, 5.481e-05, 5.481e-05, 51993.74334083], [1516499580000, 5.481e-05, 5.482e-05, 5.473e-05, 5.473e-05, 28585.95567421], [1516499640000, 5.473e-05, 5.482e-05, 5.472e-05, 5.482e-05, 6457.38712882], [1516499700000, 5.498e-05, 5.498e-05, 5.478e-05, 5.494e-05, 46904.77654009], [1516499760000, 5.494e-05, 5.494e-05, 5.485e-05, 5.485e-05, 28259.08630562], [1516499820000, 5.485e-05, 5.49e-05, 5.473e-05, 5.473e-05, 15012.31455774], [1516499880000, 5.473e-05, 5.473e-05, 5.472e-05, 5.472e-05, 12760.31806869], [1516499940000, 5.472e-05, 5.49e-05, 5.47e-05, 5.47e-05, 6431.68106209], [1516500000000, 5.47e-05, 5.471e-05, 5.449e-05, 5.46e-05, 18917.14631421], [1516500060000, 5.46e-05, 5.471e-05, 5.435e-05, 5.46e-05, 42978.64149642], [1516500120000, 5.448e-05, 5.46e-05, 5.435e-05, 5.448e-05, 8827.47653189], [1516500180000, 5.447e-05, 5.471e-05, 5.447e-05, 5.471e-05, 3271.55159608], [1516500240000, 5.46e-05, 5.472e-05, 5.454e-05, 5.472e-05, 4728.33235521], [1516500300000, 5.472e-05, 5.497e-05, 5.454e-05, 5.477e-05, 27619.67883825], [1516500360000, 5.454e-05, 5.475e-05, 5.447e-05, 5.447e-05, 37034.97778261], [1516500420000, 5.447e-05, 5.475e-05, 5.443e-05, 5.469e-05, 33685.4614885], [1516500480000, 5.469e-05, 5.469e-05, 5.449e-05, 5.469e-05, 2077.49054648], [1516500540000, 5.468e-05, 5.469e-05, 5.45e-05, 5.45e-05, 12992.32048518], [1516500600000, 5.45e-05, 5.467e-05, 5.45e-05, 5.46e-05, 54518.97991522], [1516500660000, 5.451e-05, 5.467e-05, 5.45e-05, 5.45e-05, 71233.84045115], [1516500720000, 5.45e-05, 5.45e-05, 5.435e-05, 5.449e-05, 58155.31910293], [1516500780000, 5.45e-05, 5.467e-05, 5.449e-05, 5.45e-05, 22519.99332138], [1516500840000, 5.45e-05, 5.466e-05, 5.45e-05, 5.466e-05, 24924.12781476], [1516500900000, 5.465e-05, 5.466e-05, 5.465e-05, 5.466e-05, 13324.4918018], [1516500960000, 5.466e-05, 5.466e-05, 5.465e-05, 5.465e-05, 6876.27088714], [1516501020000, 5.459e-05, 5.459e-05, 5.435e-05, 5.449e-05, 25256.36996882], [1516501080000, 5.449e-05, 5.449e-05, 5.431e-05, 5.435e-05, 7526.16297318], [1516501140000, 5.448e-05, 5.448e-05, 5.418e-05, 5.422e-05, 90701.27216539], [1516501200000, 5.421e-05, 5.425e-05, 5.4e-05, 5.415e-05, 113996.26195738], [1516501260000, 5.415e-05, 5.454e-05, 5.414e-05, 5.454e-05, 67352.83088152], [1516501320000, 5.454e-05, 5.465e-05, 5.43e-05, 5.446e-05, 6128.84576741], [1516501380000, 5.418e-05, 5.464e-05, 5.418e-05, 5.423e-05, 6983.32332154], [1516501440000, 5.425e-05, 5.46e-05, 5.425e-05, 5.458e-05, 11799.44390059], [1516501500000, 5.458e-05, 5.478e-05, 5.423e-05, 5.435e-05, 37494.44048166], [1516501560000, 5.423e-05, 5.45e-05, 5.418e-05, 5.418e-05, 55837.67184276], [1516501620000, 5.418e-05, 5.418e-05, 5.41e-05, 5.41e-05, 18489.51113994], [1516501680000, 5.409e-05, 5.41e-05, 5.402e-05, 5.406e-05, 16478.79308458], [1516501740000, 5.406e-05, 5.406e-05, 5.398e-05, 5.406e-05, 7031.13941572], [1516501800000, 5.405e-05, 5.405e-05, 5.398e-05, 5.398e-05, 5814.86874175], [1516501860000, 5.398e-05, 5.405e-05, 5.398e-05, 5.404e-05, 14704.10979708], [1516501920000, 5.404e-05, 5.405e-05, 5.4e-05, 5.401e-05, 21571.50053094], [1516501980000, 5.401e-05, 5.408e-05, 5.4e-05, 5.405e-05, 47043.14878279], [1516502040000, 5.405e-05, 5.41e-05, 5.4e-05, 5.401e-05, 33800.35924001], [1516502100000, 5.401e-05, 5.41e-05, 5.401e-05, 5.409e-05, 23796.89628326], [1516502160000, 5.41e-05, 5.423e-05, 5.4e-05, 5.4e-05, 99879.23288124], [1516502220000, 5.402e-05, 5.402e-05, 5.39e-05, 5.392e-05, 80430.54215891], [1516502280000, 5.392e-05, 5.401e-05, 5.386e-05, 5.387e-05, 115810.86170614], [1516502340000, 5.386e-05, 5.401e-05, 5.386e-05, 5.401e-05, 12085.67436728], [1516502400000, 5.401e-05, 5.401e-05, 5.387e-05, 5.397e-05, 3140.732706], [1516502460000, 5.387e-05, 5.396e-05, 5.386e-05, 5.388e-05, 34454.23870899], [1516502520000, 5.386e-05, 5.397e-05, 5.385e-05, 5.397e-05, 48453.14990634], [1516502580000, 5.388e-05, 5.397e-05, 5.381e-05, 5.381e-05, 15830.38038979], [1516502640000, 5.385e-05, 5.385e-05, 5.377e-05, 5.377e-05, 83381.25138234], [1516502700000, 5.377e-05, 5.384e-05, 5.367e-05, 5.367e-05, 258291.12539081], [1516502760000, 5.367e-05, 5.383e-05, 5.36e-05, 5.383e-05, 59958.85178509], [1516502820000, 5.383e-05, 5.383e-05, 5.362e-05, 5.362e-05, 44239.55240061], [1516502880000, 5.382e-05, 5.382e-05, 5.361e-05, 5.382e-05, 20451.41995948], [1516502940000, 5.379e-05, 5.382e-05, 5.37e-05, 5.382e-05, 11338.52302806], [1516503000000, 5.382e-05, 5.382e-05, 5.37e-05, 5.375e-05, 20930.79375059], [1516503060000, 5.375e-05, 5.375e-05, 5.37e-05, 5.371e-05, 45217.85450043], [1516503120000, 5.374e-05, 5.377e-05, 5.366e-05, 5.376e-05, 23111.9545577], [1516503180000, 5.376e-05, 5.376e-05, 5.365e-05, 5.372e-05, 27487.6053415], [1516503240000, 5.372e-05, 5.376e-05, 5.372e-05, 5.373e-05, 23686.20788817], [1516503300000, 5.375e-05, 5.377e-05, 5.373e-05, 5.376e-05, 25591.76489603], [1516503360000, 5.376e-05, 5.376e-05, 5.373e-05, 5.376e-05, 6187.60022447], [1516503420000, 5.376e-05, 5.376e-05, 5.373e-05, 5.376e-05, 34422.90853498], [1516503480000, 5.375e-05, 5.376e-05, 5.371e-05, 5.371e-05, 41783.47818319], [1516503540000, 5.375e-05, 5.377e-05, 5.363e-05, 5.363e-05, 72600.27082374], [1516503600000, 5.363e-05, 5.384e-05, 5.363e-05, 5.377e-05, 51408.21165121], [1516503660000, 5.375e-05, 5.377e-05, 5.364e-05, 5.377e-05, 24618.72522552], [1516503720000, 5.377e-05, 5.377e-05, 5.361e-05, 5.374e-05, 52197.04596021], [1516503780000, 5.374e-05, 5.384e-05, 5.36e-05, 5.365e-05, 110444.32246984], [1516503840000, 5.365e-05, 5.384e-05, 5.36e-05, 5.376e-05, 26180.81057135], [1516503900000, 5.366e-05, 5.384e-05, 5.366e-05, 5.384e-05, 11490.77531385], [1516503960000, 5.384e-05, 5.398e-05, 5.376e-05, 5.376e-05, 28499.8128066], [1516504020000, 5.396e-05, 5.396e-05, 5.377e-05, 5.393e-05, 18427.35920036], [1516504080000, 5.392e-05, 5.4e-05, 5.378e-05, 5.385e-05, 59336.27920213], [1516504140000, 5.392e-05, 5.392e-05, 5.381e-05, 5.386e-05, 47123.52427304], [1516504200000, 5.387e-05, 5.4e-05, 5.385e-05, 5.385e-05, 46055.32922199], [1516504260000, 5.385e-05, 5.385e-05, 5.375e-05, 5.384e-05, 78132.45576837], [1516504320000, 5.384e-05, 5.392e-05, 5.375e-05, 5.392e-05, 85997.62201907], [1516504380000, 5.398e-05, 5.4e-05, 5.392e-05, 5.392e-05, 15423.20203938], [1516504440000, 5.392e-05, 5.398e-05, 5.375e-05, 5.376e-05, 73369.26349522], [1516504500000, 5.376e-05, 5.376e-05, 5.374e-05, 5.375e-05, 16124.68860688], [1516504560000, 5.374e-05, 5.376e-05, 5.367e-05, 5.376e-05, 54730.89386367], [1516504620000, 5.376e-05, 5.4e-05, 5.362e-05, 5.4e-05, 76179.88164672], [1516504680000, 5.379e-05, 5.4e-05, 5.377e-05, 5.378e-05, 22491.54542106], [1516504740000, 5.378e-05, 5.378e-05, 5.377e-05, 5.378e-05, 32279.51019519], [1516504800000, 5.378e-05, 5.4e-05, 5.377e-05, 5.4e-05, 13434.54076678], [1516504860000, 5.4e-05, 5.4e-05, 5.378e-05, 5.397e-05, 104353.72164018], [1516504920000, 5.397e-05, 5.397e-05, 5.378e-05, 5.378e-05, 9329.68176688], [1516504980000, 5.378e-05, 5.415e-05, 5.37e-05, 5.378e-05, 102643.55642694], [1516505040000, 5.378e-05, 5.378e-05, 5.363e-05, 5.363e-05, 30416.83973994], [1516505100000, 5.363e-05, 5.37e-05, 5.36e-05, 5.36e-05, 19358.7723136], [1516505160000, 5.37e-05, 5.37e-05, 5.36e-05, 5.363e-05, 58496.06944774], [1516505220000, 5.36e-05, 5.368e-05, 5.36e-05, 5.366e-05, 24289.95287911], [1516505280000, 5.368e-05, 5.37e-05, 5.36e-05, 5.36e-05, 30638.44750154], [1516505340000, 5.368e-05, 5.368e-05, 5.358e-05, 5.36e-05, 154878.12105719], [1516505400000, 5.36e-05, 5.364e-05, 5.358e-05, 5.36e-05, 17473.98079402], [1516505460000, 5.36e-05, 5.364e-05, 5.355e-05, 5.36e-05, 56839.30495185], [1516505520000, 5.364e-05, 5.378e-05, 5.351e-05, 5.362e-05, 49257.39072561], [1516505580000, 5.362e-05, 5.364e-05, 5.362e-05, 5.362e-05, 5652.4673635], [1516505640000, 5.363e-05, 5.368e-05, 5.362e-05, 5.368e-05, 54432.57705129], [1516505700000, 5.368e-05, 5.368e-05, 5.36e-05, 5.367e-05, 19776.44556196], [1516505760000, 5.367e-05, 5.367e-05, 5.351e-05, 5.367e-05, 79592.73467978], [1516505820000, 5.366e-05, 5.367e-05, 5.363e-05, 5.363e-05, 2952.57675793], [1516505880000, 5.363e-05, 5.367e-05, 5.351e-05, 5.364e-05, 35112.42546655], [1516505940000, 5.364e-05, 5.368e-05, 5.363e-05, 5.368e-05, 40452.4854008], [1516506000000, 5.368e-05, 5.368e-05, 5.359e-05, 5.368e-05, 19165.29793825], [1516506060000, 5.368e-05, 5.368e-05, 5.34e-05, 5.344e-05, 115827.94913592], [1516506120000, 5.344e-05, 5.368e-05, 5.343e-05, 5.367e-05, 10568.50031109], [1516506180000, 5.367e-05, 5.367e-05, 5.345e-05, 5.366e-05, 18070.36712215], [1516506240000, 5.366e-05, 5.366e-05, 5.346e-05, 5.366e-05, 9477.50088148], [1516506300000, 5.365e-05, 5.386e-05, 5.333e-05, 5.386e-05, 55006.90650641], [1516506360000, 5.386e-05, 5.404e-05, 5.372e-05, 5.403e-05, 28774.81799723], [1516506420000, 5.402e-05, 5.403e-05, 5.371e-05, 5.402e-05, 15808.5909988], [1516506480000, 5.402e-05, 5.403e-05, 5.371e-05, 5.374e-05, 13234.7303541], [1516506540000, 5.374e-05, 5.402e-05, 5.374e-05, 5.374e-05, 14415.54486658], [1516506600000, 5.374e-05, 5.375e-05, 5.374e-05, 5.374e-05, 22985.56434847], [1516506660000, 5.374e-05, 5.38e-05, 5.374e-05, 5.375e-05, 11810.7809634], [1516506720000, 5.375e-05, 5.379e-05, 5.372e-05, 5.379e-05, 45747.32534978], [1516506780000, 5.379e-05, 5.396e-05, 5.379e-05, 5.396e-05, 11616.21436286], [1516506840000, 5.396e-05, 5.396e-05, 5.381e-05, 5.382e-05, 7898.10163632], [1516506900000, 5.395e-05, 5.396e-05, 5.382e-05, 5.396e-05, 8243.97617977], [1516506960000, 5.397e-05, 5.408e-05, 5.396e-05, 5.404e-05, 37147.17128002], [1516507020000, 5.404e-05, 5.418e-05, 5.383e-05, 5.383e-05, 46458.97922457], [1516507080000, 5.383e-05, 5.383e-05, 5.382e-05, 5.383e-05, 23812.61702692], [1516507140000, 5.382e-05, 5.383e-05, 5.375e-05, 5.375e-05, 34569.95583854], [1516507200000, 5.375e-05, 5.375e-05, 5.339e-05, 5.372e-05, 28678.3198699], [1516507260000, 5.359e-05, 5.393e-05, 5.34e-05, 5.34e-05, 37697.87042308], [1516507320000, 5.382e-05, 5.382e-05, 5.342e-05, 5.358e-05, 26058.51298524], [1516507380000, 5.381e-05, 5.417e-05, 5.381e-05, 5.415e-05, 7671.18578923], [1516507440000, 5.4e-05, 5.417e-05, 5.358e-05, 5.4e-05, 14453.81304247], [1516507500000, 5.4e-05, 5.417e-05, 5.358e-05, 5.4e-05, 11354.81683565], [1516507560000, 5.4e-05, 5.4e-05, 5.359e-05, 5.397e-05, 30792.0514629], [1516507620000, 5.397e-05, 5.4e-05, 5.361e-05, 5.367e-05, 58247.54586259], [1516507680000, 5.366e-05, 5.4e-05, 5.366e-05, 5.4e-05, 24292.96309538], [1516507740000, 5.4e-05, 5.417e-05, 5.397e-05, 5.417e-05, 28213.74252673], [1516507800000, 5.416e-05, 5.421e-05, 5.413e-05, 5.413e-05, 117951.91594866], [1516507860000, 5.413e-05, 5.445e-05, 5.413e-05, 5.419e-05, 44794.52322742], [1516507920000, 5.419e-05, 5.421e-05, 5.413e-05, 5.413e-05, 33685.45603054], [1516507980000, 5.413e-05, 5.421e-05, 5.365e-05, 5.418e-05, 85669.7743742], [1516508040000, 5.418e-05, 5.418e-05, 5.415e-05, 5.415e-05, 16542.51996629], [1516508100000, 5.417e-05, 5.421e-05, 5.415e-05, 5.415e-05, 10668.10703338], [1516508160000, 5.415e-05, 5.418e-05, 5.415e-05, 5.416e-05, 7655.11054289], [1516508220000, 5.416e-05, 5.418e-05, 5.415e-05, 5.416e-05, 10263.47279944], [1516508280000, 5.419e-05, 5.419e-05, 5.416e-05, 5.417e-05, 3354.60662428], [1516508340000, 5.417e-05, 5.421e-05, 5.417e-05, 5.421e-05, 11080.15275745], [1516508400000, 5.422e-05, 5.44e-05, 5.421e-05, 5.422e-05, 18540.22864255], [1516508460000, 5.432e-05, 5.448e-05, 5.423e-05, 5.423e-05, 33993.89526596], [1516508520000, 5.425e-05, 5.445e-05, 5.425e-05, 5.43e-05, 6039.74470851], [1516508580000, 5.425e-05, 5.43e-05, 5.415e-05, 5.425e-05, 61940.52754995], [1516508640000, 5.425e-05, 5.425e-05, 5.415e-05, 5.424e-05, 924.16129048], [1516508700000, 5.424e-05, 5.424e-05, 5.415e-05, 5.415e-05, 5992.41545091], [1516508760000, 5.403e-05, 5.41e-05, 5.402e-05, 5.404e-05, 10437.59122805], [1516508820000, 5.404e-05, 5.409e-05, 5.403e-05, 5.404e-05, 35020.12347004], [1516508880000, 5.403e-05, 5.403e-05, 5.403e-05, 5.403e-05, 8069.49088201], [1516508940000, 5.404e-05, 5.404e-05, 5.403e-05, 5.403e-05, 23724.32928426], [1516509000000, 5.403e-05, 5.404e-05, 5.403e-05, 5.403e-05, 22739.38400528], [1516509060000, 5.403e-05, 5.404e-05, 5.403e-05, 5.403e-05, 12378.76966689], [1516509120000, 5.404e-05, 5.404e-05, 5.403e-05, 5.403e-05, 53165.55580703], [1516509180000, 5.403e-05, 5.412e-05, 5.403e-05, 5.412e-05, 16494.12811331], [1516509240000, 5.412e-05, 5.415e-05, 5.408e-05, 5.415e-05, 33839.88922038], [1516509300000, 5.415e-05, 5.415e-05, 5.409e-05, 5.409e-05, 101208.89114465], [1516509360000, 5.413e-05, 5.445e-05, 5.409e-05, 5.445e-05, 42811.52831297], [1516509420000, 5.444e-05, 5.444e-05, 5.409e-05, 5.409e-05, 9957.25227923], [1516509480000, 5.41e-05, 5.41e-05, 5.41e-05, 5.41e-05, 5632.48639244], [1516509540000, 5.41e-05, 5.44e-05, 5.409e-05, 5.409e-05, 3851.88758531], [1516509600000, 5.41e-05, 5.43e-05, 5.409e-05, 5.409e-05, 8098.04492571], [1516509660000, 5.409e-05, 5.419e-05, 5.409e-05, 5.41e-05, 26851.18200271], [1516509720000, 5.41e-05, 5.41e-05, 5.409e-05, 5.41e-05, 9229.44885047], [1516509780000, 5.409e-05, 5.41e-05, 5.408e-05, 5.408e-05, 28471.69668413], [1516509840000, 5.408e-05, 5.409e-05, 5.408e-05, 5.408e-05, 57095.22008248], [1516509900000, 5.408e-05, 5.409e-05, 5.394e-05, 5.398e-05, 30086.64992715], [1516509960000, 5.398e-05, 5.408e-05, 5.398e-05, 5.398e-05, 8196.96964075], [1516510020000, 5.398e-05, 5.398e-05, 5.388e-05, 5.398e-05, 11898.37302059], [1516510080000, 5.387e-05, 5.398e-05, 5.365e-05, 5.365e-05, 24862.7841585], [1516510140000, 5.365e-05, 5.382e-05, 5.365e-05, 5.365e-05, 37796.03845132], [1516510200000, 5.365e-05, 5.382e-05, 5.365e-05, 5.382e-05, 54056.13244873], [1516510260000, 5.382e-05, 5.402e-05, 5.369e-05, 5.382e-05, 9314.91341462], [1516510320000, 5.37e-05, 5.382e-05, 5.37e-05, 5.382e-05, 4507.67563955], [1516510380000, 5.382e-05, 5.382e-05, 5.365e-05, 5.365e-05, 27010.84763585], [1516510440000, 5.365e-05, 5.425e-05, 5.361e-05, 5.362e-05, 100575.40801575], [1516510500000, 5.362e-05, 5.418e-05, 5.361e-05, 5.365e-05, 38699.26760383], [1516510560000, 5.365e-05, 5.425e-05, 5.365e-05, 5.415e-05, 90733.09503145], [1516510620000, 5.415e-05, 5.43e-05, 5.401e-05, 5.401e-05, 23944.60878077], [1516510680000, 5.401e-05, 5.424e-05, 5.388e-05, 5.388e-05, 8558.78654587], [1516510740000, 5.393e-05, 5.394e-05, 5.387e-05, 5.388e-05, 11909.53944353], [1516510800000, 5.387e-05, 5.394e-05, 5.386e-05, 5.388e-05, 54031.99598186], [1516510860000, 5.394e-05, 5.4e-05, 5.375e-05, 5.376e-05, 37805.61867532], [1516510920000, 5.394e-05, 5.449e-05, 5.376e-05, 5.43e-05, 78994.51962145], [1516510980000, 5.42e-05, 5.465e-05, 5.42e-05, 5.441e-05, 125006.82871201], [1516511040000, 5.441e-05, 5.469e-05, 5.441e-05, 5.454e-05, 30061.56950589], [1516511100000, 5.454e-05, 5.469e-05, 5.454e-05, 5.465e-05, 10217.69173642], [1516511160000, 5.467e-05, 5.48e-05, 5.455e-05, 5.469e-05, 61422.82472766], [1516511220000, 5.469e-05, 5.482e-05, 5.456e-05, 5.469e-05, 66989.49525273], [1516511280000, 5.469e-05, 5.5e-05, 5.469e-05, 5.49e-05, 285460.74846275], [1516511340000, 5.499e-05, 5.499e-05, 5.455e-05, 5.455e-05, 33971.49319319], [1516511400000, 5.455e-05, 5.487e-05, 5.396e-05, 5.483e-05, 52113.07485164], [1516511460000, 5.48e-05, 5.482e-05, 5.402e-05, 5.455e-05, 17345.75655818], [1516511520000, 5.455e-05, 5.455e-05, 5.401e-05, 5.455e-05, 22898.16815429], [1516511580000, 5.415e-05, 5.453e-05, 5.415e-05, 5.42e-05, 25040.74268451], [1516511640000, 5.42e-05, 5.451e-05, 5.415e-05, 5.449e-05, 11085.31539226], [1516511700000, 5.42e-05, 5.449e-05, 5.415e-05, 5.448e-05, 14545.57472726], [1516511760000, 5.431e-05, 5.448e-05, 5.416e-05, 5.416e-05, 10985.94713116], [1516511820000, 5.416e-05, 5.417e-05, 5.414e-05, 5.414e-05, 8949.12023878], [1516511880000, 5.414e-05, 5.415e-05, 5.412e-05, 5.413e-05, 3114.56018134], [1516511940000, 5.413e-05, 5.413e-05, 5.4e-05, 5.4e-05, 9613.5438902], [1516512000000, 5.401e-05, 5.41e-05, 5.4e-05, 5.401e-05, 4367.85364069], [1516512060000, 5.401e-05, 5.408e-05, 5.397e-05, 5.4e-05, 23761.96231213], [1516512120000, 5.397e-05, 5.4e-05, 5.394e-05, 5.399e-05, 17088.55423114], [1516512180000, 5.399e-05, 5.4e-05, 5.394e-05, 5.4e-05, 102019.07616835], [1516512240000, 5.395e-05, 5.4e-05, 5.394e-05, 5.399e-05, 15001.53185148], [1516512300000, 5.4e-05, 5.4e-05, 5.399e-05, 5.4e-05, 8728.00740574], [1516512360000, 5.4e-05, 5.4e-05, 5.399e-05, 5.399e-05, 4145.84584915], [1516512420000, 5.399e-05, 5.399e-05, 5.394e-05, 5.394e-05, 23709.82435971], [1516512480000, 5.395e-05, 5.4e-05, 5.39e-05, 5.4e-05, 34746.81754043], [1516512540000, 5.399e-05, 5.4e-05, 5.395e-05, 5.395e-05, 4844.76844507], [1516512600000, 5.395e-05, 5.395e-05, 5.39e-05, 5.39e-05, 13259.56558556], [1516512660000, 5.392e-05, 5.395e-05, 5.39e-05, 5.392e-05, 7017.6028161], [1516512720000, 5.392e-05, 5.4e-05, 5.39e-05, 5.4e-05, 164899.54882218], [1516512780000, 5.4e-05, 5.4e-05, 5.392e-05, 5.4e-05, 179234.76233213], [1516512840000, 5.408e-05, 5.443e-05, 5.408e-05, 5.442e-05, 31285.80930911], [1516512900000, 5.439e-05, 5.44e-05, 5.402e-05, 5.423e-05, 1512.50461153], [1516512960000, 5.423e-05, 5.423e-05, 5.402e-05, 5.402e-05, 2185.81845441], [1516513020000, 5.402e-05, 5.418e-05, 5.392e-05, 5.4e-05, 51746.30733076], [1516513080000, 5.4e-05, 5.4e-05, 5.39e-05, 5.39e-05, 23482.99306636], [1516513140000, 5.39e-05, 5.4e-05, 5.39e-05, 5.39e-05, 10919.35398981], [1516513200000, 5.397e-05, 5.4e-05, 5.371e-05, 5.385e-05, 33757.44629982], [1516513260000, 5.385e-05, 5.4e-05, 5.373e-05, 5.373e-05, 5820.51902783], [1516513320000, 5.373e-05, 5.39e-05, 5.373e-05, 5.374e-05, 3454.07807939], [1516513380000, 5.389e-05, 5.39e-05, 5.376e-05, 5.39e-05, 4967.48360765], [1516513440000, 5.39e-05, 5.39e-05, 5.389e-05, 5.389e-05, 4487.50415402], [1516513500000, 5.39e-05, 5.39e-05, 5.389e-05, 5.39e-05, 4168.12764135], [1516513560000, 5.389e-05, 5.389e-05, 5.384e-05, 5.385e-05, 3022.59184671], [1516513620000, 5.385e-05, 5.385e-05, 5.377e-05, 5.377e-05, 56457.12155698], [1516513680000, 5.384e-05, 5.384e-05, 5.376e-05, 5.378e-05, 11122.91477794], [1516513740000, 5.378e-05, 5.384e-05, 5.361e-05, 5.361e-05, 39396.22437277], [1516513800000, 5.367e-05, 5.384e-05, 5.362e-05, 5.362e-05, 23668.09546609], [1516513860000, 5.362e-05, 5.362e-05, 5.361e-05, 5.361e-05, 79162.01571137], [1516513920000, 5.361e-05, 5.361e-05, 5.36e-05, 5.36e-05, 6707.82114991], [1516513980000, 5.36e-05, 5.36e-05, 5.311e-05, 5.359e-05, 144326.59167313], [1516514040000, 5.341e-05, 5.358e-05, 5.325e-05, 5.357e-05, 22687.65139682], [1516514100000, 5.356e-05, 5.357e-05, 5.333e-05, 5.354e-05, 5505.82151116], [1516514160000, 5.354e-05, 5.356e-05, 5.354e-05, 5.356e-05, 6306.07973539], [1516514220000, 5.356e-05, 5.356e-05, 5.356e-05, 5.356e-05, 954.23908488], [1516514280000, 5.354e-05, 5.356e-05, 5.354e-05, 5.355e-05, 11975.36445559], [1516514340000, 5.355e-05, 5.356e-05, 5.333e-05, 5.333e-05, 15730.42965856], [1516514400000, 5.355e-05, 5.356e-05, 5.33e-05, 5.333e-05, 14063.09812011], [1516514460000, 5.333e-05, 5.333e-05, 5.33e-05, 5.333e-05, 1431.38932311], [1516514520000, 5.333e-05, 5.333e-05, 5.33e-05, 5.33e-05, 2992.79532863], [1516514580000, 5.33e-05, 5.333e-05, 5.328e-05, 5.333e-05, 5799.01983798], [1516514640000, 5.333e-05, 5.333e-05, 5.33e-05, 5.333e-05, 29961.74062505], [1516514700000, 5.333e-05, 5.333e-05, 5.33e-05, 5.333e-05, 18802.87534663], [1516514760000, 5.333e-05, 5.333e-05, 5.316e-05, 5.33e-05, 10601.87149394], [1516514820000, 5.318e-05, 5.33e-05, 5.316e-05, 5.319e-05, 3499.15698655], [1516514880000, 5.326e-05, 5.33e-05, 5.319e-05, 5.33e-05, 6549.60093346], [1516514940000, 5.33e-05, 5.333e-05, 5.319e-05, 5.333e-05, 89676.91299976], [1516515000000, 5.356e-05, 5.356e-05, 5.333e-05, 5.333e-05, 4066.11711727], [1516515060000, 5.356e-05, 5.356e-05, 5.333e-05, 5.356e-05, 7996.58840352], [1516515120000, 5.355e-05, 5.36e-05, 5.355e-05, 5.36e-05, 14543.86533392], [1516515180000, 5.36e-05, 5.368e-05, 5.356e-05, 5.368e-05, 6902.89188454], [1516515240000, 5.356e-05, 5.369e-05, 5.356e-05, 5.368e-05, 10567.19469864], [1516515300000, 5.359e-05, 5.369e-05, 5.359e-05, 5.359e-05, 2475.35494454], [1516515360000, 5.368e-05, 5.368e-05, 5.361e-05, 5.361e-05, 4867.73469155], [1516515420000, 5.364e-05, 5.366e-05, 5.363e-05, 5.366e-05, 10761.29751828], [1516515480000, 5.366e-05, 5.369e-05, 5.362e-05, 5.362e-05, 29685.98407933], [1516515540000, 5.368e-05, 5.369e-05, 5.362e-05, 5.368e-05, 6371.77967934], [1516515600000, 5.368e-05, 5.369e-05, 5.362e-05, 5.362e-05, 10766.21014871], [1516515660000, 5.362e-05, 5.369e-05, 5.362e-05, 5.368e-05, 8430.79237595], [1516515720000, 5.368e-05, 5.368e-05, 5.362e-05, 5.362e-05, 3408.12725067], [1516515780000, 5.367e-05, 5.368e-05, 5.359e-05, 5.367e-05, 76787.37724945], [1516515840000, 5.365e-05, 5.367e-05, 5.356e-05, 5.363e-05, 5243.82520073], [1516515900000, 5.363e-05, 5.365e-05, 5.363e-05, 5.365e-05, 7105.55110116], [1516515960000, 5.363e-05, 5.363e-05, 5.356e-05, 5.363e-05, 15093.56073123], [1516516020000, 5.356e-05, 5.356e-05, 5.355e-05, 5.355e-05, 7237.11498824], [1516516080000, 5.352e-05, 5.362e-05, 5.352e-05, 5.352e-05, 9199.79235632], [1516516140000, 5.333e-05, 5.352e-05, 5.333e-05, 5.352e-05, 6953.48865624], [1516516200000, 5.352e-05, 5.352e-05, 5.333e-05, 5.351e-05, 6738.99552488], [1516516260000, 5.333e-05, 5.351e-05, 5.333e-05, 5.333e-05, 5218.02596767], [1516516320000, 5.333e-05, 5.351e-05, 5.324e-05, 5.324e-05, 7276.80065677], [1516516380000, 5.33e-05, 5.33e-05, 5.32e-05, 5.322e-05, 33346.05385484], [1516516440000, 5.322e-05, 5.35e-05, 5.316e-05, 5.325e-05, 25836.37149457], [1516516500000, 5.325e-05, 5.347e-05, 5.325e-05, 5.326e-05, 4851.16726641], [1516516560000, 5.325e-05, 5.349e-05, 5.322e-05, 5.349e-05, 9451.69324418], [1516516620000, 5.349e-05, 5.35e-05, 5.325e-05, 5.334e-05, 3412.00114146], [1516516680000, 5.334e-05, 5.337e-05, 5.332e-05, 5.337e-05, 1466.55469008], [1516516740000, 5.348e-05, 5.35e-05, 5.338e-05, 5.338e-05, 6487.30820957], [1516516800000, 5.338e-05, 5.354e-05, 5.338e-05, 5.354e-05, 2700.34768062], [1516516860000, 5.35e-05, 5.354e-05, 5.35e-05, 5.354e-05, 3414.65159578], [1516516920000, 5.354e-05, 5.354e-05, 5.35e-05, 5.35e-05, 2659.28672925], [1516516980000, 5.35e-05, 5.35e-05, 5.35e-05, 5.35e-05, 4424.8190173], [1516517040000, 5.35e-05, 5.353e-05, 5.35e-05, 5.35e-05, 8202.41102984], [1516517100000, 5.353e-05, 5.353e-05, 5.35e-05, 5.35e-05, 3823.35364922], [1516517160000, 5.35e-05, 5.353e-05, 5.348e-05, 5.353e-05, 10433.67353364], [1516517220000, 5.349e-05, 5.354e-05, 5.349e-05, 5.35e-05, 4656.71106978], [1516517280000, 5.35e-05, 5.352e-05, 5.349e-05, 5.352e-05, 6134.2781908], [1516517340000, 5.35e-05, 5.384e-05, 5.35e-05, 5.384e-05, 195371.30349865], [1516517400000, 5.38e-05, 5.38e-05, 5.349e-05, 5.349e-05, 2212.83850654], [1516517460000, 5.375e-05, 5.375e-05, 5.349e-05, 5.349e-05, 3238.0196505], [1516517520000, 5.35e-05, 5.361e-05, 5.35e-05, 5.351e-05, 10242.2165488], [1516517580000, 5.351e-05, 5.37e-05, 5.35e-05, 5.35e-05, 19580.05066524], [1516517640000, 5.35e-05, 5.37e-05, 5.35e-05, 5.37e-05, 510.07955358], [1516517700000, 5.364e-05, 5.364e-05, 5.364e-05, 5.364e-05, 390.45624266], [1516517760000, 5.363e-05, 5.382e-05, 5.352e-05, 5.353e-05, 34101.94958733], [1516517820000, 5.353e-05, 5.355e-05, 5.352e-05, 5.352e-05, 17384.5025127], [1516517880000, 5.353e-05, 5.353e-05, 5.352e-05, 5.353e-05, 14822.82555598], [1516517940000, 5.352e-05, 5.38e-05, 5.352e-05, 5.352e-05, 10914.67562464], [1516518000000, 5.38e-05, 5.38e-05, 5.352e-05, 5.353e-05, 38243.28632761], [1516518060000, 5.379e-05, 5.379e-05, 5.352e-05, 5.352e-05, 17862.1178425], [1516518120000, 5.352e-05, 5.352e-05, 5.349e-05, 5.35e-05, 17060.75153423], [1516518180000, 5.35e-05, 5.35e-05, 5.349e-05, 5.349e-05, 12954.98062188], [1516518240000, 5.349e-05, 5.351e-05, 5.34e-05, 5.34e-05, 24971.98769726], [1516518300000, 5.34e-05, 5.349e-05, 5.34e-05, 5.341e-05, 8682.33515385], [1516518360000, 5.341e-05, 5.341e-05, 5.34e-05, 5.34e-05, 7931.55356908], [1516518420000, 5.34e-05, 5.341e-05, 5.34e-05, 5.34e-05, 2243.7662201], [1516518480000, 5.335e-05, 5.335e-05, 5.32e-05, 5.32e-05, 64225.82839412], [1516518540000, 5.334e-05, 5.349e-05, 5.316e-05, 5.316e-05, 38447.19070091], [1516518600000, 5.349e-05, 5.349e-05, 5.316e-05, 5.346e-05, 30624.44426746], [1516518660000, 5.335e-05, 5.346e-05, 5.317e-05, 5.329e-05, 1467.87625157], [1516518720000, 5.329e-05, 5.33e-05, 5.317e-05, 5.317e-05, 20378.20294914], [1516518780000, 5.317e-05, 5.344e-05, 5.316e-05, 5.325e-05, 27551.56972273], [1516518840000, 5.325e-05, 5.325e-05, 5.313e-05, 5.325e-05, 6533.58148054], [1516518900000, 5.314e-05, 5.327e-05, 5.314e-05, 5.325e-05, 71243.7296204], [1516518960000, 5.325e-05, 5.338e-05, 5.312e-05, 5.312e-05, 38038.09969996], [1516519020000, 5.312e-05, 5.319e-05, 5.311e-05, 5.311e-05, 28680.14657969], [1516519080000, 5.311e-05, 5.319e-05, 5.311e-05, 5.311e-05, 36285.21557984], [1516519140000, 5.311e-05, 5.319e-05, 5.311e-05, 5.318e-05, 21937.7870162], [1516519200000, 5.318e-05, 5.319e-05, 5.318e-05, 5.318e-05, 16444.97375084], [1516519260000, 5.319e-05, 5.321e-05, 5.318e-05, 5.321e-05, 6682.06500273], [1516519320000, 5.321e-05, 5.321e-05, 5.321e-05, 5.321e-05, 2856.4078719], [1516519380000, 5.334e-05, 5.334e-05, 5.32e-05, 5.321e-05, 79767.15413163], [1516519440000, 5.321e-05, 5.321e-05, 5.321e-05, 5.321e-05, 9998.87651665], [1516519500000, 5.321e-05, 5.321e-05, 5.32e-05, 5.321e-05, 19675.18192914], [1516519560000, 5.322e-05, 5.341e-05, 5.322e-05, 5.322e-05, 5870.97002888], [1516519620000, 5.322e-05, 5.322e-05, 5.321e-05, 5.321e-05, 19502.33534346], [1516519680000, 5.321e-05, 5.345e-05, 5.321e-05, 5.344e-05, 14812.52474264], [1516519740000, 5.344e-05, 5.348e-05, 5.322e-05, 5.323e-05, 31257.55001998], [1516519800000, 5.323e-05, 5.341e-05, 5.323e-05, 5.341e-05, 6352.99817941], [1516519860000, 5.323e-05, 5.338e-05, 5.311e-05, 5.311e-05, 170606.69855858], [1516519920000, 5.311e-05, 5.311e-05, 5.3e-05, 5.3e-05, 234050.14181566], [1516519980000, 5.317e-05, 5.317e-05, 5.299e-05, 5.299e-05, 9933.92314827], [1516520040000, 5.299e-05, 5.316e-05, 5.299e-05, 5.3e-05, 7873.99268685], [1516520100000, 5.3e-05, 5.3e-05, 5.282e-05, 5.29e-05, 15662.24119765], [1516520160000, 5.282e-05, 5.284e-05, 5.266e-05, 5.266e-05, 46645.57799612], [1516520220000, 5.265e-05, 5.265e-05, 5.244e-05, 5.26e-05, 51374.25346624], [1516520280000, 5.26e-05, 5.264e-05, 5.245e-05, 5.264e-05, 35448.44711567], [1516520340000, 5.264e-05, 5.264e-05, 5.242e-05, 5.243e-05, 48997.38193849], [1516520400000, 5.243e-05, 5.243e-05, 5.242e-05, 5.242e-05, 53346.86338628], [1516520460000, 5.243e-05, 5.27e-05, 5.242e-05, 5.242e-05, 122019.14218522], [1516520520000, 5.258e-05, 5.27e-05, 5.241e-05, 5.243e-05, 130788.23700526], [1516520580000, 5.243e-05, 5.243e-05, 5.238e-05, 5.238e-05, 69082.89818918], [1516520640000, 5.238e-05, 5.238e-05, 5.227e-05, 5.236e-05, 20011.86803246], [1516520700000, 5.235e-05, 5.235e-05, 5.203e-05, 5.205e-05, 29794.65749841], [1516520760000, 5.222e-05, 5.236e-05, 5.203e-05, 5.224e-05, 66763.02996546], [1516520820000, 5.224e-05, 5.24e-05, 5.205e-05, 5.209e-05, 53472.38116779], [1516520880000, 5.225e-05, 5.236e-05, 5.22e-05, 5.236e-05, 45432.09717491], [1516520940000, 5.236e-05, 5.292e-05, 5.225e-05, 5.284e-05, 81625.89908181], [1516521000000, 5.226e-05, 5.283e-05, 5.225e-05, 5.24e-05, 49779.80431041], [1516521060000, 5.24e-05, 5.275e-05, 5.23e-05, 5.265e-05, 25748.01785796], [1516521120000, 5.265e-05, 5.281e-05, 5.23e-05, 5.281e-05, 205032.58082081], [1516521180000, 5.281e-05, 5.299e-05, 5.23e-05, 5.266e-05, 83364.7491641], [1516521240000, 5.288e-05, 5.288e-05, 5.231e-05, 5.235e-05, 34067.04686735], [1516521300000, 5.234e-05, 5.27e-05, 5.234e-05, 5.236e-05, 16803.5146694], [1516521360000, 5.26e-05, 5.268e-05, 5.23e-05, 5.233e-05, 48675.39411486], [1516521420000, 5.233e-05, 5.268e-05, 5.233e-05, 5.268e-05, 150411.9069679], [1516521480000, 5.268e-05, 5.278e-05, 5.262e-05, 5.262e-05, 14121.03016746], [1516521540000, 5.261e-05, 5.278e-05, 5.244e-05, 5.244e-05, 7025.01136147], [1516521600000, 5.246e-05, 5.278e-05, 5.242e-05, 5.245e-05, 34951.36024043], [1516521660000, 5.274e-05, 5.275e-05, 5.233e-05, 5.271e-05, 62040.18341222], [1516521720000, 5.252e-05, 5.275e-05, 5.232e-05, 5.275e-05, 80074.19258186], [1516521780000, 5.278e-05, 5.282e-05, 5.27e-05, 5.27e-05, 19346.69525898], [1516521840000, 5.282e-05, 5.295e-05, 5.251e-05, 5.278e-05, 61001.27880969], [1516521900000, 5.278e-05, 5.29e-05, 5.263e-05, 5.271e-05, 18608.45132379], [1516521960000, 5.271e-05, 5.3e-05, 5.263e-05, 5.3e-05, 28980.53403439], [1516522020000, 5.274e-05, 5.279e-05, 5.269e-05, 5.271e-05, 16773.64165608], [1516522080000, 5.27e-05, 5.295e-05, 5.25e-05, 5.293e-05, 35377.69136594], [1516522140000, 5.265e-05, 5.289e-05, 5.242e-05, 5.25e-05, 34665.24381901], [1516522200000, 5.25e-05, 5.252e-05, 5.234e-05, 5.25e-05, 75316.11402411], [1516522260000, 5.246e-05, 5.246e-05, 5.234e-05, 5.242e-05, 47288.02417049], [1516522320000, 5.242e-05, 5.242e-05, 5.24e-05, 5.242e-05, 15318.88196369], [1516522380000, 5.242e-05, 5.299e-05, 5.241e-05, 5.246e-05, 66520.80030444], [1516522440000, 5.246e-05, 5.298e-05, 5.246e-05, 5.298e-05, 7794.54860358], [1516522500000, 5.297e-05, 5.297e-05, 5.248e-05, 5.25e-05, 8773.73452547], [1516522560000, 5.25e-05, 5.271e-05, 5.246e-05, 5.259e-05, 28130.74920893], [1516522620000, 5.26e-05, 5.293e-05, 5.25e-05, 5.274e-05, 16550.81346741], [1516522680000, 5.269e-05, 5.293e-05, 5.269e-05, 5.282e-05, 9825.16403292], [1516522740000, 5.282e-05, 5.293e-05, 5.275e-05, 5.292e-05, 25804.18223795], [1516522800000, 5.292e-05, 5.292e-05, 5.255e-05, 5.291e-05, 21479.23580465], [1516522860000, 5.291e-05, 5.291e-05, 5.255e-05, 5.276e-05, 11453.29048961], [1516522920000, 5.29e-05, 5.293e-05, 5.277e-05, 5.277e-05, 99681.58530212], [1516522980000, 5.292e-05, 5.298e-05, 5.279e-05, 5.296e-05, 27512.09044675], [1516523040000, 5.296e-05, 5.304e-05, 5.295e-05, 5.301e-05, 72691.65080751], [1516523100000, 5.301e-05, 5.323e-05, 5.3e-05, 5.302e-05, 14768.91415998], [1516523160000, 5.323e-05, 5.327e-05, 5.302e-05, 5.327e-05, 16817.2209086], [1516523220000, 5.327e-05, 5.327e-05, 5.31e-05, 5.324e-05, 18561.13224754], [1516523280000, 5.324e-05, 5.331e-05, 5.324e-05, 5.331e-05, 51324.27698308], [1516523340000, 5.324e-05, 5.33e-05, 5.315e-05, 5.325e-05, 90353.52131727], [1516523400000, 5.325e-05, 5.337e-05, 5.325e-05, 5.337e-05, 19694.9793669], [1516523460000, 5.334e-05, 5.334e-05, 5.303e-05, 5.312e-05, 22506.42092339], [1516523520000, 5.333e-05, 5.337e-05, 5.26e-05, 5.292e-05, 362462.10131695], [1516523580000, 5.287e-05, 5.332e-05, 5.266e-05, 5.276e-05, 29285.7919038], [1516523640000, 5.271e-05, 5.324e-05, 5.261e-05, 5.261e-05, 36225.95223179], [1516523700000, 5.314e-05, 5.314e-05, 5.269e-05, 5.289e-05, 12102.13136924], [1516523760000, 5.314e-05, 5.317e-05, 5.289e-05, 5.315e-05, 22636.56732735], [1516523820000, 5.314e-05, 5.314e-05, 5.3e-05, 5.311e-05, 1662.85358815], [1516523880000, 5.31e-05, 5.31e-05, 5.262e-05, 5.308e-05, 29131.95841153], [1516523940000, 5.289e-05, 5.306e-05, 5.262e-05, 5.285e-05, 13319.53559267], [1516524000000, 5.285e-05, 5.303e-05, 5.263e-05, 5.263e-05, 40436.51607546], [1516524060000, 5.264e-05, 5.296e-05, 5.264e-05, 5.296e-05, 13832.78901792], [1516524120000, 5.296e-05, 5.297e-05, 5.285e-05, 5.297e-05, 19414.88555002], [1516524180000, 5.284e-05, 5.297e-05, 5.27e-05, 5.29e-05, 34669.41847453], [1516524240000, 5.29e-05, 5.29e-05, 5.288e-05, 5.289e-05, 53581.17488106], [1516524300000, 5.289e-05, 5.296e-05, 5.289e-05, 5.296e-05, 4294.56090859], [1516524360000, 5.296e-05, 5.296e-05, 5.283e-05, 5.289e-05, 50442.4803141], [1516524420000, 5.289e-05, 5.298e-05, 5.288e-05, 5.295e-05, 6184.03522914], [1516524480000, 5.295e-05, 5.295e-05, 5.283e-05, 5.288e-05, 40023.17009966], [1516524540000, 5.288e-05, 5.298e-05, 5.283e-05, 5.284e-05, 24055.11689431], [1516524600000, 5.288e-05, 5.297e-05, 5.284e-05, 5.297e-05, 4117.70824532], [1516524660000, 5.293e-05, 5.297e-05, 5.284e-05, 5.284e-05, 10272.40959369], [1516524720000, 5.29e-05, 5.29e-05, 5.281e-05, 5.283e-05, 4372.21215251], [1516524780000, 5.283e-05, 5.288e-05, 5.281e-05, 5.284e-05, 13967.01397744], [1516524840000, 5.284e-05, 5.298e-05, 5.28e-05, 5.298e-05, 34750.92285497], [1516524900000, 5.297e-05, 5.297e-05, 5.285e-05, 5.285e-05, 2898.08884536], [1516524960000, 5.285e-05, 5.296e-05, 5.283e-05, 5.296e-05, 8193.78079831], [1516525020000, 5.287e-05, 5.296e-05, 5.285e-05, 5.287e-05, 40278.32079394], [1516525080000, 5.285e-05, 5.296e-05, 5.28e-05, 5.288e-05, 17556.04276474], [1516525140000, 5.295e-05, 5.296e-05, 5.264e-05, 5.275e-05, 75556.05770486], [1516525200000, 5.275e-05, 5.293e-05, 5.264e-05, 5.264e-05, 33853.7192666], [1516525260000, 5.265e-05, 5.291e-05, 5.252e-05, 5.287e-05, 36949.17969048], [1516525320000, 5.254e-05, 5.288e-05, 5.248e-05, 5.248e-05, 43405.41280332], [1516525380000, 5.245e-05, 5.265e-05, 5.242e-05, 5.265e-05, 31993.60319042], [1516525440000, 5.249e-05, 5.265e-05, 5.242e-05, 5.264e-05, 18218.79259556], [1516525500000, 5.264e-05, 5.264e-05, 5.225e-05, 5.238e-05, 62245.07280465], [1516525560000, 5.228e-05, 5.238e-05, 5.228e-05, 5.236e-05, 2319.60306241], [1516525620000, 5.229e-05, 5.256e-05, 5.227e-05, 5.256e-05, 5110.84780505], [1516525680000, 5.255e-05, 5.256e-05, 5.245e-05, 5.25e-05, 85743.24645168], [1516525740000, 5.24e-05, 5.25e-05, 5.235e-05, 5.24e-05, 9865.07510301], [1516525800000, 5.24e-05, 5.25e-05, 5.235e-05, 5.25e-05, 8180.31271687], [1516525860000, 5.25e-05, 5.25e-05, 5.235e-05, 5.24e-05, 8886.04835446], [1516525920000, 5.24e-05, 5.24e-05, 5.227e-05, 5.239e-05, 7566.59347022], [1516525980000, 5.239e-05, 5.24e-05, 5.229e-05, 5.229e-05, 5635.7270333], [1516526040000, 5.229e-05, 5.24e-05, 5.209e-05, 5.209e-05, 48476.02771861], [1516526100000, 5.221e-05, 5.239e-05, 5.221e-05, 5.239e-05, 64396.17256215], [1516526160000, 5.23e-05, 5.239e-05, 5.23e-05, 5.239e-05, 33943.97899396], [1516526220000, 5.239e-05, 5.24e-05, 5.234e-05, 5.239e-05, 22691.10914412], [1516526280000, 5.239e-05, 5.24e-05, 5.23e-05, 5.232e-05, 29461.1108538], [1516526340000, 5.232e-05, 5.24e-05, 5.221e-05, 5.237e-05, 15127.97177805], [1516526400000, 5.24e-05, 5.24e-05, 5.231e-05, 5.231e-05, 25002.05107089], [1516526460000, 5.24e-05, 5.24e-05, 5.231e-05, 5.24e-05, 48165.26358229], [1516526520000, 5.24e-05, 5.26e-05, 5.24e-05, 5.26e-05, 94897.3991643], [1516526580000, 5.259e-05, 5.26e-05, 5.232e-05, 5.26e-05, 29146.87521012], [1516526640000, 5.26e-05, 5.26e-05, 5.232e-05, 5.24e-05, 4550.06794176], [1516526700000, 5.233e-05, 5.26e-05, 5.233e-05, 5.24e-05, 6880.9982949], [1516526760000, 5.257e-05, 5.272e-05, 5.241e-05, 5.265e-05, 24644.80903924], [1516526820000, 5.266e-05, 5.272e-05, 5.263e-05, 5.271e-05, 7240.02735836], [1516526880000, 5.265e-05, 5.272e-05, 5.263e-05, 5.263e-05, 6608.85887637], [1516526940000, 5.26e-05, 5.275e-05, 5.26e-05, 5.275e-05, 48806.43166556], [1516527000000, 5.274e-05, 5.282e-05, 5.26e-05, 5.276e-05, 29863.57936044], [1516527060000, 5.247e-05, 5.276e-05, 5.247e-05, 5.259e-05, 252.13512076], [1516527120000, 5.258e-05, 5.26e-05, 5.247e-05, 5.25e-05, 107748.03180533], [1516527180000, 5.26e-05, 5.26e-05, 5.25e-05, 5.25e-05, 14962.98013171], [1516527240000, 5.25e-05, 5.25e-05, 5.249e-05, 5.25e-05, 19174.38753703], [1516527300000, 5.25e-05, 5.26e-05, 5.249e-05, 5.26e-05, 80718.26709068], [1516527360000, 5.26e-05, 5.26e-05, 5.255e-05, 5.26e-05, 24505.63963887], [1516527420000, 5.255e-05, 5.26e-05, 5.248e-05, 5.26e-05, 71354.83759953], [1516527480000, 5.26e-05, 5.26e-05, 5.241e-05, 5.242e-05, 14711.60327268], [1516527540000, 5.243e-05, 5.259e-05, 5.241e-05, 5.242e-05, 19524.86497842], [1516527600000, 5.244e-05, 5.259e-05, 5.244e-05, 5.259e-05, 9347.00863682], [1516527660000, 5.259e-05, 5.259e-05, 5.245e-05, 5.259e-05, 14995.50531543], [1516527720000, 5.259e-05, 5.259e-05, 5.244e-05, 5.259e-05, 8022.88610481], [1516527780000, 5.259e-05, 5.26e-05, 5.247e-05, 5.26e-05, 13761.42964299], [1516527840000, 5.259e-05, 5.26e-05, 5.258e-05, 5.259e-05, 24664.17531155], [1516527900000, 5.259e-05, 5.26e-05, 5.241e-05, 5.246e-05, 33279.16167242], [1516527960000, 5.26e-05, 5.26e-05, 5.259e-05, 5.26e-05, 110092.63450482], [1516528020000, 5.26e-05, 5.26e-05, 5.247e-05, 5.251e-05, 88410.30091931], [1516528080000, 5.251e-05, 5.26e-05, 5.25e-05, 5.26e-05, 115043.43221477], [1516528140000, 5.26e-05, 5.26e-05, 5.252e-05, 5.26e-05, 59241.90073441], [1516528200000, 5.26e-05, 5.28e-05, 5.26e-05, 5.261e-05, 13039.56109932], [1516528260000, 5.262e-05, 5.298e-05, 5.262e-05, 5.275e-05, 15070.18928971], [1516528320000, 5.275e-05, 5.275e-05, 5.262e-05, 5.275e-05, 6547.46465456], [1516528380000, 5.275e-05, 5.275e-05, 5.267e-05, 5.271e-05, 1907.91917114], [1516528440000, 5.271e-05, 5.298e-05, 5.267e-05, 5.267e-05, 11640.56995219], [1516528500000, 5.267e-05, 5.298e-05, 5.265e-05, 5.298e-05, 62942.7910054], [1516528560000, 5.271e-05, 5.298e-05, 5.265e-05, 5.28e-05, 7310.78898266], [1516528620000, 5.28e-05, 5.298e-05, 5.265e-05, 5.266e-05, 39329.18991318], [1516528680000, 5.289e-05, 5.298e-05, 5.265e-05, 5.296e-05, 8021.1388554], [1516528740000, 5.296e-05, 5.296e-05, 5.27e-05, 5.296e-05, 5246.83157469], [1516528800000, 5.295e-05, 5.295e-05, 5.266e-05, 5.266e-05, 2982.71502836], [1516528860000, 5.295e-05, 5.295e-05, 5.268e-05, 5.294e-05, 2075.75023366], [1516528920000, 5.294e-05, 5.296e-05, 5.27e-05, 5.27e-05, 28985.73698987], [1516528980000, 5.275e-05, 5.295e-05, 5.27e-05, 5.295e-05, 20105.59550956], [1516529040000, 5.295e-05, 5.295e-05, 5.27e-05, 5.295e-05, 10151.90091879], [1516529100000, 5.271e-05, 5.295e-05, 5.266e-05, 5.273e-05, 31910.28618697], [1516529160000, 5.273e-05, 5.273e-05, 5.265e-05, 5.273e-05, 27024.47993499], [1516529220000, 5.262e-05, 5.293e-05, 5.261e-05, 5.293e-05, 1748.56635569], [1516529280000, 5.261e-05, 5.289e-05, 5.25e-05, 5.273e-05, 719.88019414], [1516529340000, 5.273e-05, 5.273e-05, 5.272e-05, 5.273e-05, 2518.85174025], [1516529400000, 5.273e-05, 5.291e-05, 5.272e-05, 5.273e-05, 2629.15152716], [1516529460000, 5.273e-05, 5.29e-05, 5.25e-05, 5.27e-05, 12088.30190626], [1516529520000, 5.27e-05, 5.29e-05, 5.252e-05, 5.272e-05, 2858.73283967], [1516529580000, 5.272e-05, 5.289e-05, 5.272e-05, 5.28e-05, 1269.96294251], [1516529640000, 5.29e-05, 5.29e-05, 5.266e-05, 5.266e-05, 10459.28642191], [1516529700000, 5.278e-05, 5.279e-05, 5.252e-05, 5.278e-05, 32391.30417101], [1516529760000, 5.252e-05, 5.252e-05, 5.244e-05, 5.244e-05, 2524.59572047], [1516529820000, 5.244e-05, 5.27e-05, 5.242e-05, 5.27e-05, 11583.46812865], [1516529880000, 5.253e-05, 5.27e-05, 5.244e-05, 5.27e-05, 1646.29454248], [1516529940000, 5.253e-05, 5.27e-05, 5.253e-05, 5.27e-05, 12232.11158142], [1516530000000, 5.27e-05, 5.28e-05, 5.235e-05, 5.28e-05, 62984.17503852], [1516530060000, 5.27e-05, 5.28e-05, 5.239e-05, 5.279e-05, 49412.7971842], [1516530120000, 5.279e-05, 5.279e-05, 5.235e-05, 5.278e-05, 4946.74107836], [1516530180000, 5.276e-05, 5.28e-05, 5.237e-05, 5.28e-05, 56257.67226259], [1516530240000, 5.28e-05, 5.28e-05, 5.278e-05, 5.28e-05, 3848.29837261], [1516530300000, 5.278e-05, 5.28e-05, 5.26e-05, 5.26e-05, 3339.81742408], [1516530360000, 5.26e-05, 5.261e-05, 5.255e-05, 5.261e-05, 1754.7009393], [1516530420000, 5.278e-05, 5.279e-05, 5.261e-05, 5.276e-05, 9843.88804872], [1516530480000, 5.276e-05, 5.279e-05, 5.26e-05, 5.26e-05, 50398.28451449], [1516530540000, 5.279e-05, 5.28e-05, 5.262e-05, 5.28e-05, 211510.7613503], [1516530600000, 5.28e-05, 5.28e-05, 5.26e-05, 5.28e-05, 662634.61603462], [1516530660000, 5.28e-05, 5.296e-05, 5.25e-05, 5.296e-05, 148189.52316664], [1516530720000, 5.296e-05, 5.299e-05, 5.276e-05, 5.299e-05, 97406.64844513], [1516530780000, 5.299e-05, 5.299e-05, 5.265e-05, 5.295e-05, 8578.38807429], [1516530840000, 5.295e-05, 5.295e-05, 5.267e-05, 5.295e-05, 9120.29337257], [1516530900000, 5.295e-05, 5.299e-05, 5.294e-05, 5.294e-05, 14533.42518803], [1516530960000, 5.294e-05, 5.295e-05, 5.294e-05, 5.295e-05, 676.08260732], [1516531020000, 5.295e-05, 5.299e-05, 5.294e-05, 5.299e-05, 49318.90192049], [1516531080000, 5.299e-05, 5.299e-05, 5.295e-05, 5.295e-05, 2435.29424855], [1516531140000, 5.298e-05, 5.3e-05, 5.298e-05, 5.3e-05, 40822.19360467], [1516531200000, 5.3e-05, 5.31e-05, 5.3e-05, 5.31e-05, 1466.71474086], [1516531260000, 5.31e-05, 5.325e-05, 5.309e-05, 5.324e-05, 4002.26084702], [1516531320000, 5.324e-05, 5.336e-05, 5.311e-05, 5.326e-05, 38469.85679884], [1516531380000, 5.325e-05, 5.339e-05, 5.311e-05, 5.316e-05, 9652.33381841], [1516531440000, 5.316e-05, 5.337e-05, 5.311e-05, 5.311e-05, 29760.04127976], [1516531500000, 5.322e-05, 5.322e-05, 5.311e-05, 5.322e-05, 1590.1516482], [1516531620000, 5.312e-05, 5.339e-05, 5.311e-05, 5.339e-05, 7593.48084336], [1516531680000, 5.33e-05, 5.33e-05, 5.316e-05, 5.33e-05, 5890.22507366], [1516531740000, 5.316e-05, 5.316e-05, 5.305e-05, 5.316e-05, 18485.82916844], [1516531800000, 5.315e-05, 5.316e-05, 5.305e-05, 5.306e-05, 3401.27836163], [1516531860000, 5.306e-05, 5.32e-05, 5.305e-05, 5.32e-05, 1630.74648477], [1516531920000, 5.316e-05, 5.316e-05, 5.306e-05, 5.307e-05, 5193.02814403], [1516531980000, 5.306e-05, 5.32e-05, 5.306e-05, 5.307e-05, 6807.35781638], [1516532040000, 5.307e-05, 5.32e-05, 5.306e-05, 5.32e-05, 8996.78984757], [1516532100000, 5.306e-05, 5.32e-05, 5.302e-05, 5.302e-05, 10695.71729617], [1516532160000, 5.303e-05, 5.32e-05, 5.303e-05, 5.303e-05, 7005.08081707], [1516532220000, 5.32e-05, 5.32e-05, 5.301e-05, 5.301e-05, 100628.74208855], [1516532280000, 5.308e-05, 5.308e-05, 5.3e-05, 5.301e-05, 7353.98987459], [1516532340000, 5.301e-05, 5.32e-05, 5.299e-05, 5.32e-05, 2101.23217595], [1516532400000, 5.32e-05, 5.325e-05, 5.299e-05, 5.325e-05, 12475.32321544], [1516532460000, 5.301e-05, 5.33e-05, 5.265e-05, 5.328e-05, 31574.1363846], [1516532520000, 5.327e-05, 5.327e-05, 5.267e-05, 5.267e-05, 3817.18946101], [1516532580000, 5.319e-05, 5.326e-05, 5.319e-05, 5.326e-05, 1367.48986228], [1516532640000, 5.32e-05, 5.325e-05, 5.3e-05, 5.325e-05, 25866.26484392], [1516532700000, 5.309e-05, 5.324e-05, 5.301e-05, 5.324e-05, 4913.05772615], [1516532760000, 5.32e-05, 5.324e-05, 5.305e-05, 5.323e-05, 11792.76620008], [1516532820000, 5.323e-05, 5.323e-05, 5.301e-05, 5.301e-05, 9788.13953792], [1516532880000, 5.32e-05, 5.32e-05, 5.3e-05, 5.3e-05, 4566.64608073], [1516532940000, 5.3e-05, 5.32e-05, 5.3e-05, 5.32e-05, 5963.1233169], [1516533000000, 5.3e-05, 5.319e-05, 5.3e-05, 5.319e-05, 58404.8654426], [1516533060000, 5.309e-05, 5.319e-05, 5.3e-05, 5.309e-05, 7566.83415519], [1516533120000, 5.293e-05, 5.309e-05, 5.291e-05, 5.292e-05, 16303.1176238], [1516533180000, 5.292e-05, 5.309e-05, 5.29e-05, 5.29e-05, 25482.36238652], [1516533240000, 5.292e-05, 5.292e-05, 5.288e-05, 5.288e-05, 4699.60749889], [1516533300000, 5.29e-05, 5.309e-05, 5.29e-05, 5.309e-05, 8735.56617724], [1516533360000, 5.309e-05, 5.309e-05, 5.288e-05, 5.309e-05, 6142.69586574], [1516533420000, 5.293e-05, 5.309e-05, 5.293e-05, 5.3e-05, 3329.49072452], [1516533480000, 5.3e-05, 5.315e-05, 5.26e-05, 5.315e-05, 22274.61199512], [1516533540000, 5.315e-05, 5.315e-05, 5.292e-05, 5.299e-05, 7888.19527675], [1516533600000, 5.299e-05, 5.32e-05, 5.299e-05, 5.32e-05, 46770.76935822], [1516533660000, 5.318e-05, 5.324e-05, 5.308e-05, 5.324e-05, 8437.98268746], [1516533720000, 5.324e-05, 5.33e-05, 5.324e-05, 5.329e-05, 12127.53790798], [1516533780000, 5.33e-05, 5.33e-05, 5.304e-05, 5.307e-05, 9063.92912513], [1516533840000, 5.307e-05, 5.33e-05, 5.3e-05, 5.33e-05, 9969.16167416], [1516533900000, 5.307e-05, 5.33e-05, 5.307e-05, 5.33e-05, 380.74833395], [1516533960000, 5.326e-05, 5.327e-05, 5.323e-05, 5.327e-05, 4039.62493186], [1516534020000, 5.327e-05, 5.33e-05, 5.327e-05, 5.33e-05, 23143.34956911], [1516534080000, 5.33e-05, 5.33e-05, 5.327e-05, 5.33e-05, 6801.57190677], [1516534140000, 5.329e-05, 5.33e-05, 5.307e-05, 5.33e-05, 17963.77862756], [1516534200000, 5.33e-05, 5.33e-05, 5.301e-05, 5.301e-05, 3554.85598477], [1516534260000, 5.327e-05, 5.33e-05, 5.327e-05, 5.33e-05, 252.45237403], [1516534320000, 5.329e-05, 5.329e-05, 5.32e-05, 5.32e-05, 33634.74840833], [1516534380000, 5.325e-05, 5.325e-05, 5.32e-05, 5.325e-05, 5609.1434451], [1516534440000, 5.325e-05, 5.33e-05, 5.324e-05, 5.33e-05, 20562.65621312], [1516534500000, 5.33e-05, 5.33e-05, 5.304e-05, 5.324e-05, 16967.86601718], [1516534560000, 5.324e-05, 5.327e-05, 5.324e-05, 5.326e-05, 10132.79950757], [1516534620000, 5.326e-05, 5.327e-05, 5.326e-05, 5.327e-05, 132344.67310225], [1516534680000, 5.326e-05, 5.327e-05, 5.301e-05, 5.326e-05, 13868.4679878], [1516534740000, 5.32e-05, 5.327e-05, 5.301e-05, 5.301e-05, 2864.64975238], [1516534800000, 5.308e-05, 5.34e-05, 5.308e-05, 5.34e-05, 93084.40390225], [1516534860000, 5.339e-05, 5.35e-05, 5.309e-05, 5.35e-05, 35181.04924709], [1516534920000, 5.35e-05, 5.383e-05, 5.349e-05, 5.382e-05, 268836.76995201], [1516534980000, 5.382e-05, 5.382e-05, 5.34e-05, 5.376e-05, 45038.60477843], [1516535040000, 5.376e-05, 5.384e-05, 5.331e-05, 5.355e-05, 1108739.26352324], [1516535100000, 5.383e-05, 5.383e-05, 5.355e-05, 5.355e-05, 84654.86866929], [1516535160000, 5.383e-05, 5.384e-05, 5.353e-05, 5.353e-05, 74471.98365732], [1516535220000, 5.351e-05, 5.38e-05, 5.351e-05, 5.379e-05, 40912.6943376], [1516535280000, 5.379e-05, 5.384e-05, 5.345e-05, 5.384e-05, 56896.32650853], [1516535340000, 5.363e-05, 5.384e-05, 5.363e-05, 5.383e-05, 62872.47708339], [1516535400000, 5.383e-05, 5.384e-05, 5.362e-05, 5.384e-05, 282933.67092617], [1516535460000, 5.384e-05, 5.384e-05, 5.362e-05, 5.384e-05, 310764.74805727], [1516535520000, 5.384e-05, 5.398e-05, 5.373e-05, 5.382e-05, 64594.10963181], [1516535580000, 5.382e-05, 5.4e-05, 5.382e-05, 5.385e-05, 20760.468204], [1516535640000, 5.398e-05, 5.4e-05, 5.385e-05, 5.388e-05, 21691.16086417], [1516535700000, 5.4e-05, 5.4e-05, 5.387e-05, 5.388e-05, 69066.54279414], [1516535760000, 5.399e-05, 5.399e-05, 5.39e-05, 5.39e-05, 23666.55542013], [1516535820000, 5.399e-05, 5.399e-05, 5.399e-05, 5.399e-05, 237.9244156], [1516535880000, 5.398e-05, 5.399e-05, 5.397e-05, 5.397e-05, 853.67697555], [1516535940000, 5.397e-05, 5.399e-05, 5.397e-05, 5.399e-05, 11065.30170165], [1516536000000, 5.399e-05, 5.4e-05, 5.397e-05, 5.4e-05, 39281.60859902], [1516536060000, 5.4e-05, 5.415e-05, 5.4e-05, 5.415e-05, 10476.84961473], [1516536120000, 5.415e-05, 5.43e-05, 5.409e-05, 5.415e-05, 100959.52364942], [1516536180000, 5.416e-05, 5.429e-05, 5.397e-05, 5.397e-05, 24790.200715], [1516536240000, 5.4e-05, 5.433e-05, 5.398e-05, 5.433e-05, 51131.91002389], [1516536300000, 5.433e-05, 5.436e-05, 5.398e-05, 5.408e-05, 55254.0120988], [1516536360000, 5.405e-05, 5.408e-05, 5.398e-05, 5.403e-05, 82489.38282077], [1516536420000, 5.429e-05, 5.435e-05, 5.41e-05, 5.435e-05, 208635.02003267], [1516536480000, 5.432e-05, 5.457e-05, 5.432e-05, 5.453e-05, 26220.27776013], [1516536540000, 5.453e-05, 5.457e-05, 5.45e-05, 5.45e-05, 34728.06820852], [1516536600000, 5.451e-05, 5.452e-05, 5.416e-05, 5.416e-05, 9007.75331132], [1516536660000, 5.413e-05, 5.459e-05, 5.412e-05, 5.435e-05, 11512.06045629], [1516536720000, 5.416e-05, 5.448e-05, 5.416e-05, 5.448e-05, 9776.83571015], [1516536780000, 5.448e-05, 5.448e-05, 5.416e-05, 5.417e-05, 23840.26287892], [1516536840000, 5.417e-05, 5.417e-05, 5.41e-05, 5.417e-05, 18045.24808877], [1516536900000, 5.417e-05, 5.445e-05, 5.417e-05, 5.417e-05, 63902.43628089], [1516536960000, 5.417e-05, 5.44e-05, 5.417e-05, 5.417e-05, 26717.84380224], [1516537020000, 5.417e-05, 5.418e-05, 5.405e-05, 5.405e-05, 11019.78468755], [1516537080000, 5.405e-05, 5.405e-05, 5.39e-05, 5.39e-05, 9924.01851617], [1516537140000, 5.39e-05, 5.39e-05, 5.38e-05, 5.386e-05, 9727.99041218], [1516537200000, 5.386e-05, 5.386e-05, 5.381e-05, 5.382e-05, 9331.4927757], [1516537260000, 5.381e-05, 5.386e-05, 5.381e-05, 5.386e-05, 46050.91837946], [1516537320000, 5.386e-05, 5.41e-05, 5.386e-05, 5.408e-05, 6460.24770126], [1516537380000, 5.409e-05, 5.41e-05, 5.409e-05, 5.41e-05, 9461.55242663], [1516537440000, 5.411e-05, 5.411e-05, 5.399e-05, 5.41e-05, 86049.98480872], [1516537500000, 5.415e-05, 5.415e-05, 5.402e-05, 5.402e-05, 3263.57376968], [1516537560000, 5.403e-05, 5.42e-05, 5.402e-05, 5.402e-05, 16565.40995744], [1516537620000, 5.405e-05, 5.419e-05, 5.402e-05, 5.408e-05, 85855.33019229], [1516537680000, 5.408e-05, 5.418e-05, 5.402e-05, 5.418e-05, 22492.04751499], [1516537740000, 5.408e-05, 5.408e-05, 5.38e-05, 5.381e-05, 20753.43460627], [1516537800000, 5.38e-05, 5.405e-05, 5.377e-05, 5.377e-05, 9868.26718144], [1516537860000, 5.38e-05, 5.38e-05, 5.37e-05, 5.37e-05, 28686.01994362], [1516537920000, 5.37e-05, 5.4e-05, 5.37e-05, 5.37e-05, 3881.2948792], [1516537980000, 5.37e-05, 5.37e-05, 5.341e-05, 5.341e-05, 13311.79601913], [1516538040000, 5.37e-05, 5.399e-05, 5.355e-05, 5.355e-05, 4524.74849803], [1516538100000, 5.369e-05, 5.399e-05, 5.357e-05, 5.37e-05, 19802.32021777], [1516538160000, 5.369e-05, 5.398e-05, 5.369e-05, 5.37e-05, 15242.54452461], [1516538220000, 5.37e-05, 5.37e-05, 5.37e-05, 5.37e-05, 3189.56539073], [1516538280000, 5.397e-05, 5.397e-05, 5.37e-05, 5.371e-05, 6052.41856993], [1516538340000, 5.389e-05, 5.398e-05, 5.371e-05, 5.371e-05, 7817.36953146], [1516538400000, 5.398e-05, 5.4e-05, 5.369e-05, 5.376e-05, 143946.09989298], [1516538460000, 5.398e-05, 5.405e-05, 5.376e-05, 5.404e-05, 89237.3711309], [1516538520000, 5.404e-05, 5.404e-05, 5.379e-05, 5.38e-05, 1704.62152995], [1516538580000, 5.396e-05, 5.404e-05, 5.38e-05, 5.38e-05, 4291.53281626], [1516538640000, 5.404e-05, 5.405e-05, 5.38e-05, 5.38e-05, 18714.46909911], [1516538700000, 5.38e-05, 5.4e-05, 5.38e-05, 5.4e-05, 2006.56089179], [1516538760000, 5.4e-05, 5.4e-05, 5.399e-05, 5.4e-05, 5016.3], [1516538820000, 5.4e-05, 5.4e-05, 5.384e-05, 5.395e-05, 2798.00988942], [1516538880000, 5.395e-05, 5.395e-05, 5.393e-05, 5.393e-05, 2597.95667104], [1516538940000, 5.395e-05, 5.399e-05, 5.393e-05, 5.395e-05, 1735.06053919], [1516539000000, 5.395e-05, 5.395e-05, 5.393e-05, 5.395e-05, 10553.66967842], [1516539060000, 5.393e-05, 5.393e-05, 5.391e-05, 5.391e-05, 3581.57952425], [1516539120000, 5.384e-05, 5.384e-05, 5.379e-05, 5.379e-05, 27547.01500332], [1516539180000, 5.379e-05, 5.379e-05, 5.359e-05, 5.36e-05, 46425.35588437], [1516539240000, 5.365e-05, 5.38e-05, 5.358e-05, 5.358e-05, 15777.76510007], [1516539300000, 5.358e-05, 5.359e-05, 5.352e-05, 5.359e-05, 186110.04172727], [1516539360000, 5.38e-05, 5.38e-05, 5.354e-05, 5.379e-05, 23665.15247058], [1516539420000, 5.38e-05, 5.38e-05, 5.379e-05, 5.38e-05, 30634.2232632], [1516539480000, 5.38e-05, 5.38e-05, 5.341e-05, 5.38e-05, 32778.56551682], [1516539540000, 5.38e-05, 5.38e-05, 5.379e-05, 5.379e-05, 67963.68335054], [1516539600000, 5.356e-05, 5.379e-05, 5.356e-05, 5.369e-05, 73437.14632937], [1516539660000, 5.379e-05, 5.379e-05, 5.356e-05, 5.362e-05, 25313.92784284], [1516539720000, 5.362e-05, 5.396e-05, 5.362e-05, 5.395e-05, 49680.13221497], [1516539780000, 5.396e-05, 5.396e-05, 5.338e-05, 5.345e-05, 18731.2921644], [1516539840000, 5.391e-05, 5.391e-05, 5.39e-05, 5.391e-05, 202.37910001], [1516539900000, 5.391e-05, 5.391e-05, 5.35e-05, 5.389e-05, 56595.01372563], [1516539960000, 5.349e-05, 5.39e-05, 5.349e-05, 5.388e-05, 12538.60010389], [1516540020000, 5.354e-05, 5.39e-05, 5.354e-05, 5.39e-05, 27706.56586533], [1516540080000, 5.387e-05, 5.4e-05, 5.359e-05, 5.4e-05, 36666.52202631], [1516540140000, 5.389e-05, 5.4e-05, 5.358e-05, 5.368e-05, 34088.43320895], [1516540200000, 5.37e-05, 5.396e-05, 5.37e-05, 5.374e-05, 2072.58101414], [1516540260000, 5.374e-05, 5.399e-05, 5.372e-05, 5.399e-05, 45361.61370761], [1516540320000, 5.399e-05, 5.4e-05, 5.394e-05, 5.399e-05, 8160.12349848], [1516540380000, 5.375e-05, 5.376e-05, 5.372e-05, 5.376e-05, 1315.80654365], [1516540440000, 5.376e-05, 5.397e-05, 5.376e-05, 5.397e-05, 2112.05048886], [1516540500000, 5.377e-05, 5.377e-05, 5.376e-05, 5.377e-05, 24537.59936807], [1516540560000, 5.377e-05, 5.394e-05, 5.377e-05, 5.381e-05, 88288.79642727], [1516540620000, 5.381e-05, 5.394e-05, 5.38e-05, 5.393e-05, 12854.41740367], [1516540680000, 5.393e-05, 5.394e-05, 5.383e-05, 5.383e-05, 15222.92840149], [1516540740000, 5.383e-05, 5.392e-05, 5.382e-05, 5.391e-05, 8877.88225207], [1516540800000, 5.391e-05, 5.392e-05, 5.381e-05, 5.384e-05, 2013.70152856], [1516540860000, 5.382e-05, 5.391e-05, 5.382e-05, 5.383e-05, 12066.49163146], [1516540920000, 5.383e-05, 5.391e-05, 5.382e-05, 5.383e-05, 3124.63206958], [1516540980000, 5.383e-05, 5.391e-05, 5.381e-05, 5.39e-05, 4165.62382027], [1516541040000, 5.383e-05, 5.383e-05, 5.383e-05, 5.383e-05, 540.96228868], [1516541100000, 5.383e-05, 5.385e-05, 5.381e-05, 5.385e-05, 10899.62799874], [1516541160000, 5.383e-05, 5.385e-05, 5.383e-05, 5.383e-05, 18035.32008923], [1516541220000, 5.383e-05, 5.384e-05, 5.383e-05, 5.383e-05, 5891.69975151], [1516541280000, 5.383e-05, 5.384e-05, 5.383e-05, 5.384e-05, 17900.79546123], [1516541340000, 5.383e-05, 5.384e-05, 5.383e-05, 5.383e-05, 12132.36492012], [1516541400000, 5.383e-05, 5.384e-05, 5.381e-05, 5.384e-05, 46270.25762073], [1516541460000, 5.381e-05, 5.382e-05, 5.367e-05, 5.369e-05, 29465.47052574], [1516541520000, 5.382e-05, 5.384e-05, 5.369e-05, 5.384e-05, 7779.73091751], [1516541580000, 5.375e-05, 5.379e-05, 5.375e-05, 5.376e-05, 170.4825304], [1516541640000, 5.376e-05, 5.38e-05, 5.376e-05, 5.38e-05, 4429.06168012], [1516541700000, 5.379e-05, 5.379e-05, 5.377e-05, 5.377e-05, 5274.37376206], [1516541760000, 5.377e-05, 5.377e-05, 5.376e-05, 5.377e-05, 12636.24601916], [1516541820000, 5.377e-05, 5.377e-05, 5.376e-05, 5.377e-05, 10683.29649735], [1516541880000, 5.376e-05, 5.379e-05, 5.356e-05, 5.364e-05, 58218.70892995], [1516541940000, 5.364e-05, 5.392e-05, 5.364e-05, 5.392e-05, 117502.42072248], [1516542000000, 5.376e-05, 5.392e-05, 5.376e-05, 5.377e-05, 3803.96559814], [1516542060000, 5.377e-05, 5.39e-05, 5.377e-05, 5.385e-05, 1522.9200959], [1516542120000, 5.391e-05, 5.392e-05, 5.385e-05, 5.392e-05, 33490.40596123], [1516542180000, 5.392e-05, 5.393e-05, 5.385e-05, 5.393e-05, 5678.43411531], [1516542240000, 5.387e-05, 5.4e-05, 5.387e-05, 5.4e-05, 176679.06516325], [1516542300000, 5.4e-05, 5.4e-05, 5.395e-05, 5.399e-05, 275174.5614346], [1516542360000, 5.4e-05, 5.4e-05, 5.399e-05, 5.4e-05, 144282.82406936], [1516542420000, 5.4e-05, 5.4e-05, 5.393e-05, 5.4e-05, 93509.19700079], [1516542480000, 5.393e-05, 5.399e-05, 5.366e-05, 5.393e-05, 24402.17742685], [1516542540000, 5.393e-05, 5.4e-05, 5.365e-05, 5.393e-05, 8400.83876067], [1516542600000, 5.371e-05, 5.399e-05, 5.366e-05, 5.366e-05, 28822.32238207], [1516542660000, 5.378e-05, 5.397e-05, 5.378e-05, 5.397e-05, 1339.62253093], [1516542720000, 5.397e-05, 5.4e-05, 5.387e-05, 5.388e-05, 4406.88882814], [1516542780000, 5.388e-05, 5.397e-05, 5.366e-05, 5.367e-05, 28088.64973523], [1516542840000, 5.388e-05, 5.388e-05, 5.387e-05, 5.387e-05, 1507.53768405], [1516542900000, 5.387e-05, 5.395e-05, 5.37e-05, 5.395e-05, 15656.78339379], [1516542960000, 5.388e-05, 5.395e-05, 5.387e-05, 5.395e-05, 15736.15358067], [1516543020000, 5.39e-05, 5.39e-05, 5.387e-05, 5.387e-05, 4049.68789887], [1516543080000, 5.387e-05, 5.387e-05, 5.387e-05, 5.387e-05, 1629.34144607], [1516543140000, 5.387e-05, 5.39e-05, 5.387e-05, 5.39e-05, 14364.06938353], [1516543200000, 5.387e-05, 5.387e-05, 5.38e-05, 5.38e-05, 2654.61326857], [1516543260000, 5.38e-05, 5.387e-05, 5.38e-05, 5.387e-05, 7124.47991012], [1516543320000, 5.387e-05, 5.39e-05, 5.387e-05, 5.389e-05, 2344.82720161], [1516543380000, 5.389e-05, 5.389e-05, 5.389e-05, 5.389e-05, 4942.41709525], [1516543440000, 5.389e-05, 5.389e-05, 5.389e-05, 5.389e-05, 287.04825745], [1516543500000, 5.388e-05, 5.389e-05, 5.381e-05, 5.388e-05, 5962.93305974], [1516543560000, 5.388e-05, 5.388e-05, 5.381e-05, 5.387e-05, 2547.79343251], [1516543620000, 5.382e-05, 5.388e-05, 5.355e-05, 5.386e-05, 16668.06954252], [1516543680000, 5.386e-05, 5.386e-05, 5.345e-05, 5.345e-05, 34619.87780834], [1516543740000, 5.386e-05, 5.388e-05, 5.386e-05, 5.388e-05, 6075.58977207], [1516543800000, 5.387e-05, 5.388e-05, 5.387e-05, 5.388e-05, 18218.0062413], [1516543860000, 5.37e-05, 5.385e-05, 5.35e-05, 5.384e-05, 22666.99447822], [1516543920000, 5.384e-05, 5.384e-05, 5.384e-05, 5.384e-05, 5047.0884453], [1516543980000, 5.383e-05, 5.383e-05, 5.372e-05, 5.381e-05, 7402.9153397], [1516544040000, 5.381e-05, 5.381e-05, 5.374e-05, 5.379e-05, 402.03803746], [1516544100000, 5.38e-05, 5.381e-05, 5.353e-05, 5.354e-05, 15926.89500884], [1516544160000, 5.359e-05, 5.379e-05, 5.354e-05, 5.377e-05, 2993.527407], [1516544220000, 5.378e-05, 5.378e-05, 5.375e-05, 5.375e-05, 5028.43929465], [1516544280000, 5.366e-05, 5.375e-05, 5.355e-05, 5.375e-05, 23934.82301952], [1516544340000, 5.375e-05, 5.375e-05, 5.345e-05, 5.375e-05, 18678.9857888], [1516544400000, 5.345e-05, 5.375e-05, 5.344e-05, 5.375e-05, 3936.63283476], [1516544460000, 5.375e-05, 5.375e-05, 5.347e-05, 5.347e-05, 1714.70640941], [1516544520000, 5.347e-05, 5.375e-05, 5.346e-05, 5.371e-05, 18601.36233112], [1516544580000, 5.371e-05, 5.371e-05, 5.346e-05, 5.35e-05, 36863.49789201], [1516544640000, 5.345e-05, 5.35e-05, 5.345e-05, 5.35e-05, 17170.15774855], [1516544700000, 5.345e-05, 5.346e-05, 5.345e-05, 5.345e-05, 3609.4955463], [1516544760000, 5.344e-05, 5.345e-05, 5.34e-05, 5.34e-05, 16561.87678521], [1516544820000, 5.34e-05, 5.34e-05, 5.34e-05, 5.34e-05, 582.30221578], [1516544880000, 5.34e-05, 5.34e-05, 5.338e-05, 5.338e-05, 2873.00832908], [1516544940000, 5.34e-05, 5.34e-05, 5.337e-05, 5.339e-05, 14319.37464699], [1516545000000, 5.339e-05, 5.339e-05, 5.335e-05, 5.335e-05, 6258.48843944], [1516545060000, 5.335e-05, 5.336e-05, 5.334e-05, 5.336e-05, 15494.57759825], [1516545120000, 5.336e-05, 5.336e-05, 5.334e-05, 5.334e-05, 8489.10000364], [1516545180000, 5.334e-05, 5.334e-05, 5.331e-05, 5.332e-05, 144927.7841852], [1516545240000, 5.334e-05, 5.334e-05, 5.331e-05, 5.331e-05, 71405.78473374], [1516545300000, 5.331e-05, 5.331e-05, 5.328e-05, 5.328e-05, 62683.94575731], [1516545360000, 5.328e-05, 5.334e-05, 5.325e-05, 5.328e-05, 39350.57218716], [1516545420000, 5.328e-05, 5.33e-05, 5.325e-05, 5.33e-05, 7116.14533013], [1516545480000, 5.33e-05, 5.334e-05, 5.326e-05, 5.334e-05, 1546.95715081], [1516545540000, 5.33e-05, 5.334e-05, 5.325e-05, 5.334e-05, 51210.90480034], [1516545600000, 5.334e-05, 5.34e-05, 5.327e-05, 5.34e-05, 44772.50417904], [1516545660000, 5.34e-05, 5.34e-05, 5.327e-05, 5.327e-05, 32469.8849121], [1516545720000, 5.325e-05, 5.325e-05, 5.324e-05, 5.325e-05, 11333.29274499], [1516545780000, 5.324e-05, 5.339e-05, 5.323e-05, 5.325e-05, 30947.10309691], [1516545840000, 5.325e-05, 5.34e-05, 5.325e-05, 5.34e-05, 23853.70119018], [1516545900000, 5.325e-05, 5.369e-05, 5.325e-05, 5.355e-05, 34021.34295477], [1516545960000, 5.355e-05, 5.37e-05, 5.326e-05, 5.355e-05, 15259.47305364], [1516546020000, 5.355e-05, 5.37e-05, 5.355e-05, 5.355e-05, 21615.46889384], [1516546080000, 5.357e-05, 5.367e-05, 5.325e-05, 5.353e-05, 66337.26071098], [1516546140000, 5.353e-05, 5.37e-05, 5.325e-05, 5.366e-05, 32539.69100873], [1516546200000, 5.364e-05, 5.366e-05, 5.326e-05, 5.334e-05, 22903.27879271], [1516546260000, 5.334e-05, 5.366e-05, 5.334e-05, 5.363e-05, 18620.46919649], [1516546320000, 5.362e-05, 5.362e-05, 5.336e-05, 5.336e-05, 19814.26644034], [1516546380000, 5.36e-05, 5.362e-05, 5.337e-05, 5.358e-05, 22364.14231966], [1516546440000, 5.358e-05, 5.358e-05, 5.336e-05, 5.353e-05, 26470.61332547], [1516546500000, 5.353e-05, 5.353e-05, 5.335e-05, 5.336e-05, 61128.90643497], [1516546560000, 5.349e-05, 5.358e-05, 5.336e-05, 5.336e-05, 20699.97863224], [1516546620000, 5.357e-05, 5.357e-05, 5.346e-05, 5.357e-05, 21824.59097675], [1516546680000, 5.346e-05, 5.358e-05, 5.335e-05, 5.357e-05, 28193.64684298], [1516546740000, 5.357e-05, 5.358e-05, 5.336e-05, 5.358e-05, 19756.43235473], [1516546800000, 5.343e-05, 5.357e-05, 5.339e-05, 5.357e-05, 18924.80368998], [1516546860000, 5.354e-05, 5.354e-05, 5.337e-05, 5.354e-05, 16280.75009591], [1516546920000, 5.354e-05, 5.354e-05, 5.339e-05, 5.34e-05, 45778.60563831], [1516546980000, 5.34e-05, 5.34e-05, 5.339e-05, 5.34e-05, 16112.10447112], [1516547040000, 5.34e-05, 5.354e-05, 5.324e-05, 5.354e-05, 66965.93330937], [1516547100000, 5.332e-05, 5.354e-05, 5.324e-05, 5.353e-05, 23152.92383752], [1516547160000, 5.353e-05, 5.353e-05, 5.352e-05, 5.353e-05, 30348.41821208], [1516547220000, 5.351e-05, 5.353e-05, 5.351e-05, 5.353e-05, 5893.08657765], [1516547280000, 5.353e-05, 5.354e-05, 5.351e-05, 5.354e-05, 21550.07506913], [1516547340000, 5.354e-05, 5.355e-05, 5.353e-05, 5.353e-05, 12400.32430061], [1516547400000, 5.353e-05, 5.355e-05, 5.353e-05, 5.355e-05, 5460.53813309], [1516547460000, 5.354e-05, 5.354e-05, 5.353e-05, 5.353e-05, 5779.00031075], [1516547520000, 5.354e-05, 5.354e-05, 5.354e-05, 5.354e-05, 1472.21247021], [1516547580000, 5.353e-05, 5.355e-05, 5.353e-05, 5.355e-05, 30714.15086518], [1516547640000, 5.354e-05, 5.355e-05, 5.353e-05, 5.354e-05, 4893.52426952], [1516547700000, 5.354e-05, 5.355e-05, 5.354e-05, 5.354e-05, 23510.27136991], [1516547760000, 5.354e-05, 5.354e-05, 5.354e-05, 5.354e-05, 26873.53214583], [1516547820000, 5.355e-05, 5.358e-05, 5.355e-05, 5.358e-05, 4080.51981582], [1516547880000, 5.355e-05, 5.355e-05, 5.354e-05, 5.355e-05, 12031.45494941], [1516547940000, 5.354e-05, 5.355e-05, 5.35e-05, 5.35e-05, 27268.59452236], [1516548000000, 5.34e-05, 5.348e-05, 5.335e-05, 5.348e-05, 13364.37443407], [1516548060000, 5.348e-05, 5.348e-05, 5.337e-05, 5.348e-05, 6832.05568863], [1516548120000, 5.348e-05, 5.355e-05, 5.339e-05, 5.348e-05, 9574.45807201], [1516548180000, 5.348e-05, 5.355e-05, 5.341e-05, 5.353e-05, 8148.57332393], [1516548240000, 5.353e-05, 5.355e-05, 5.353e-05, 5.355e-05, 14773.7017993], [1516548300000, 5.353e-05, 5.355e-05, 5.343e-05, 5.35e-05, 27700.17954294], [1516548360000, 5.35e-05, 5.35e-05, 5.343e-05, 5.349e-05, 3919.95758944], [1516548420000, 5.349e-05, 5.349e-05, 5.343e-05, 5.343e-05, 6824.43252007], [1516548480000, 5.342e-05, 5.343e-05, 5.341e-05, 5.341e-05, 12378.23891181], [1516548540000, 5.341e-05, 5.343e-05, 5.337e-05, 5.343e-05, 31366.71168502], [1516548600000, 5.34e-05, 5.343e-05, 5.317e-05, 5.343e-05, 83529.68218491], [1516548660000, 5.343e-05, 5.343e-05, 5.31e-05, 5.34e-05, 196360.04183715], [1516548720000, 5.34e-05, 5.352e-05, 5.334e-05, 5.349e-05, 33978.78060336], [1516548780000, 5.352e-05, 5.352e-05, 5.344e-05, 5.349e-05, 2283.7640668], [1516548840000, 5.343e-05, 5.343e-05, 5.342e-05, 5.343e-05, 1664.54746987], [1516548900000, 5.342e-05, 5.343e-05, 5.342e-05, 5.343e-05, 1171.0], [1516548960000, 5.342e-05, 5.342e-05, 5.311e-05, 5.314e-05, 12362.78464244], [1516549020000, 5.312e-05, 5.342e-05, 5.311e-05, 5.342e-05, 80094.18872151], [1516549080000, 5.34e-05, 5.34e-05, 5.314e-05, 5.34e-05, 4171.42618924], [1516549140000, 5.34e-05, 5.34e-05, 5.31e-05, 5.313e-05, 23195.25019129], [1516549200000, 5.313e-05, 5.34e-05, 5.31e-05, 5.314e-05, 18755.47112952], [1516549260000, 5.319e-05, 5.34e-05, 5.319e-05, 5.319e-05, 1710.85535133], [1516549320000, 5.319e-05, 5.338e-05, 5.318e-05, 5.318e-05, 6766.16727207], [1516549380000, 5.319e-05, 5.319e-05, 5.309e-05, 5.31e-05, 23055.50013709], [1516549440000, 5.309e-05, 5.31e-05, 5.307e-05, 5.31e-05, 28289.4069636], [1516549500000, 5.31e-05, 5.318e-05, 5.31e-05, 5.31e-05, 1007.48177639], [1516549560000, 5.307e-05, 5.318e-05, 5.304e-05, 5.318e-05, 19787.62440629], [1516549620000, 5.305e-05, 5.317e-05, 5.305e-05, 5.305e-05, 5706.58275815], [1516549680000, 5.305e-05, 5.305e-05, 5.301e-05, 5.305e-05, 13538.65096295], [1516549740000, 5.305e-05, 5.305e-05, 5.301e-05, 5.304e-05, 10781.48240712], [1516549800000, 5.301e-05, 5.304e-05, 5.301e-05, 5.303e-05, 1376.30358563], [1516549860000, 5.302e-05, 5.305e-05, 5.301e-05, 5.301e-05, 3472.98598473], [1516549920000, 5.301e-05, 5.305e-05, 5.301e-05, 5.301e-05, 4818.53456632], [1516549980000, 5.305e-05, 5.305e-05, 5.304e-05, 5.304e-05, 2292.56657915], [1516550040000, 5.304e-05, 5.304e-05, 5.301e-05, 5.304e-05, 3722.14337965], [1516550100000, 5.304e-05, 5.305e-05, 5.3e-05, 5.3e-05, 40212.24381489], [1516550160000, 5.304e-05, 5.304e-05, 5.3e-05, 5.3e-05, 19110.77817178], [1516550220000, 5.3e-05, 5.304e-05, 5.3e-05, 5.304e-05, 13611.09281169], [1516550280000, 5.304e-05, 5.304e-05, 5.3e-05, 5.304e-05, 1678.56577294], [1516550340000, 5.303e-05, 5.305e-05, 5.302e-05, 5.305e-05, 10574.86279157], [1516550400000, 5.305e-05, 5.318e-05, 5.305e-05, 5.318e-05, 3169.89041927], [1516550460000, 5.319e-05, 5.319e-05, 5.305e-05, 5.318e-05, 24354.45027433], [1516550520000, 5.318e-05, 5.318e-05, 5.304e-05, 5.314e-05, 9873.48128179], [1516550580000, 5.315e-05, 5.315e-05, 5.314e-05, 5.315e-05, 17291.99530577], [1516550640000, 5.315e-05, 5.315e-05, 5.314e-05, 5.315e-05, 10659.43848721], [1516550700000, 5.314e-05, 5.315e-05, 5.314e-05, 5.314e-05, 2216.1873424], [1516550760000, 5.315e-05, 5.315e-05, 5.304e-05, 5.304e-05, 12067.83401257], [1516550820000, 5.304e-05, 5.313e-05, 5.304e-05, 5.31e-05, 10202.90398191], [1516550880000, 5.304e-05, 5.31e-05, 5.3e-05, 5.3e-05, 11224.06450275], [1516550940000, 5.295e-05, 5.3e-05, 5.29e-05, 5.3e-05, 16837.19740688], [1516551000000, 5.3e-05, 5.3e-05, 5.288e-05, 5.288e-05, 5319.76991704], [1516551060000, 5.287e-05, 5.287e-05, 5.279e-05, 5.279e-05, 11125.49767825], [1516551120000, 5.277e-05, 5.281e-05, 5.27e-05, 5.272e-05, 14127.20077641], [1516551180000, 5.272e-05, 5.272e-05, 5.267e-05, 5.27e-05, 6480.64748092], [1516551240000, 5.27e-05, 5.287e-05, 5.27e-05, 5.287e-05, 20485.23223026], [1516551300000, 5.285e-05, 5.287e-05, 5.281e-05, 5.284e-05, 5167.8256883], [1516551360000, 5.287e-05, 5.287e-05, 5.284e-05, 5.287e-05, 1417.83753827], [1516551420000, 5.287e-05, 5.288e-05, 5.281e-05, 5.281e-05, 14525.68190408], [1516551480000, 5.281e-05, 5.288e-05, 5.267e-05, 5.288e-05, 26124.82404571], [1516551540000, 5.287e-05, 5.287e-05, 5.265e-05, 5.265e-05, 4197.99987818], [1516551600000, 5.287e-05, 5.287e-05, 5.265e-05, 5.265e-05, 7145.28151556], [1516551660000, 5.265e-05, 5.282e-05, 5.265e-05, 5.282e-05, 1148.1647341], [1516551720000, 5.287e-05, 5.3e-05, 5.265e-05, 5.265e-05, 14761.90381198], [1516551780000, 5.265e-05, 5.27e-05, 5.26e-05, 5.26e-05, 79608.06761919], [1516551840000, 5.26e-05, 5.26e-05, 5.258e-05, 5.26e-05, 47745.05478849], [1516551900000, 5.259e-05, 5.26e-05, 5.259e-05, 5.26e-05, 10331.03063443], [1516551960000, 5.259e-05, 5.26e-05, 5.259e-05, 5.259e-05, 122041.70350741], [1516552020000, 5.259e-05, 5.26e-05, 5.253e-05, 5.255e-05, 106211.45313682], [1516552080000, 5.259e-05, 5.259e-05, 5.254e-05, 5.254e-05, 22605.52996301], [1516552140000, 5.254e-05, 5.259e-05, 5.253e-05, 5.253e-05, 46502.83195457], [1516552200000, 5.254e-05, 5.259e-05, 5.254e-05, 5.254e-05, 21102.94375043], [1516552260000, 5.254e-05, 5.298e-05, 5.253e-05, 5.254e-05, 28639.17524821], [1516552320000, 5.254e-05, 5.299e-05, 5.254e-05, 5.256e-05, 3134.18113352], [1516552380000, 5.255e-05, 5.297e-05, 5.255e-05, 5.256e-05, 15611.80930034], [1516552440000, 5.256e-05, 5.293e-05, 5.256e-05, 5.258e-05, 2095.50156462], [1516552500000, 5.259e-05, 5.291e-05, 5.256e-05, 5.259e-05, 10397.69030518], [1516552560000, 5.29e-05, 5.291e-05, 5.258e-05, 5.29e-05, 25291.15413218], [1516552620000, 5.29e-05, 5.296e-05, 5.29e-05, 5.295e-05, 537.01527192], [1516552680000, 5.295e-05, 5.295e-05, 5.29e-05, 5.29e-05, 2111.98785574], [1516552740000, 5.29e-05, 5.293e-05, 5.28e-05, 5.293e-05, 13127.15297753], [1516552800000, 5.293e-05, 5.298e-05, 5.293e-05, 5.293e-05, 6142.77205348], [1516552860000, 5.293e-05, 5.293e-05, 5.28e-05, 5.28e-05, 1615.71217783], [1516552920000, 5.29e-05, 5.29e-05, 5.265e-05, 5.29e-05, 10293.28578267], [1516552980000, 5.29e-05, 5.29e-05, 5.266e-05, 5.266e-05, 4519.76927686], [1516553040000, 5.266e-05, 5.267e-05, 5.266e-05, 5.267e-05, 793.12529719], [1516553100000, 5.277e-05, 5.288e-05, 5.277e-05, 5.277e-05, 283.9223137], [1516553160000, 5.277e-05, 5.288e-05, 5.277e-05, 5.288e-05, 2656.53529144], [1516553220000, 5.289e-05, 5.289e-05, 5.288e-05, 5.288e-05, 2107.98906665], [1516553280000, 5.288e-05, 5.288e-05, 5.277e-05, 5.277e-05, 11457.1201351], [1516553340000, 5.28e-05, 5.288e-05, 5.277e-05, 5.279e-05, 5534.95563104], [1516553400000, 5.279e-05, 5.279e-05, 5.277e-05, 5.277e-05, 6708.666455], [1516553460000, 5.277e-05, 5.277e-05, 5.267e-05, 5.267e-05, 3313.29386372], [1516553520000, 5.267e-05, 5.277e-05, 5.267e-05, 5.277e-05, 7079.42264303], [1516553580000, 5.277e-05, 5.277e-05, 5.268e-05, 5.277e-05, 2171.83815146], [1516553640000, 5.277e-05, 5.279e-05, 5.277e-05, 5.277e-05, 11418.77994758], [1516553700000, 5.277e-05, 5.278e-05, 5.277e-05, 5.278e-05, 10941.74115375], [1516553760000, 5.278e-05, 5.279e-05, 5.277e-05, 5.278e-05, 15698.65218389], [1516553820000, 5.278e-05, 5.279e-05, 5.266e-05, 5.279e-05, 20205.927374], [1516553880000, 5.267e-05, 5.287e-05, 5.267e-05, 5.28e-05, 4503.41494809], [1516553940000, 5.279e-05, 5.288e-05, 5.264e-05, 5.288e-05, 14540.6371323], [1516554000000, 5.274e-05, 5.274e-05, 5.264e-05, 5.274e-05, 21112.81084004], [1516554060000, 5.288e-05, 5.288e-05, 5.288e-05, 5.288e-05, 4048.74892619], [1516554120000, 5.288e-05, 5.288e-05, 5.264e-05, 5.288e-05, 6608.21106539], [1516554180000, 5.265e-05, 5.284e-05, 5.265e-05, 5.266e-05, 9265.12066292], [1516554240000, 5.266e-05, 5.286e-05, 5.264e-05, 5.265e-05, 9381.9717068], [1516554300000, 5.264e-05, 5.264e-05, 5.263e-05, 5.264e-05, 8330.43626457], [1516554360000, 5.264e-05, 5.264e-05, 5.261e-05, 5.264e-05, 1738.67570821], [1516554420000, 5.264e-05, 5.264e-05, 5.261e-05, 5.262e-05, 32345.05773992], [1516554480000, 5.262e-05, 5.262e-05, 5.259e-05, 5.26e-05, 40799.49592763], [1516554540000, 5.26e-05, 5.26e-05, 5.258e-05, 5.258e-05, 6441.95083132], [1516554600000, 5.258e-05, 5.26e-05, 5.257e-05, 5.26e-05, 6820.29525577], [1516554660000, 5.258e-05, 5.258e-05, 5.249e-05, 5.25e-05, 228509.98134305], [1516554720000, 5.249e-05, 5.26e-05, 5.248e-05, 5.26e-05, 98914.43005985], [1516554780000, 5.26e-05, 5.26e-05, 5.248e-05, 5.259e-05, 59270.22877932], [1516554840000, 5.25e-05, 5.259e-05, 5.249e-05, 5.249e-05, 73277.75585964], [1516554900000, 5.249e-05, 5.259e-05, 5.249e-05, 5.259e-05, 45648.96681498], [1516554960000, 5.259e-05, 5.26e-05, 5.25e-05, 5.259e-05, 86095.15582207], [1516555020000, 5.259e-05, 5.262e-05, 5.259e-05, 5.262e-05, 2240.77736912], [1516555080000, 5.26e-05, 5.264e-05, 5.26e-05, 5.264e-05, 2012.06713863], [1516555140000, 5.264e-05, 5.264e-05, 5.264e-05, 5.264e-05, 1742.38033407], [1516555200000, 5.264e-05, 5.288e-05, 5.264e-05, 5.288e-05, 4076.05111628], [1516555260000, 5.287e-05, 5.288e-05, 5.266e-05, 5.266e-05, 3746.18282073], [1516555320000, 5.285e-05, 5.285e-05, 5.285e-05, 5.285e-05, 800.0], [1516555380000, 5.285e-05, 5.285e-05, 5.271e-05, 5.285e-05, 4590.23468125], [1516555440000, 5.281e-05, 5.285e-05, 5.281e-05, 5.281e-05, 27287.52560141], [1516555500000, 5.281e-05, 5.281e-05, 5.271e-05, 5.271e-05, 10497.96653176], [1516555560000, 5.28e-05, 5.28e-05, 5.271e-05, 5.271e-05, 10453.46102372], [1516555620000, 5.271e-05, 5.271e-05, 5.27e-05, 5.27e-05, 35870.23781339], [1516555680000, 5.27e-05, 5.271e-05, 5.27e-05, 5.27e-05, 45771.21586385], [1516555740000, 5.265e-05, 5.27e-05, 5.243e-05, 5.246e-05, 29589.47298562], [1516555800000, 5.246e-05, 5.269e-05, 5.246e-05, 5.247e-05, 1266.29226577], [1516555860000, 5.25e-05, 5.284e-05, 5.239e-05, 5.25e-05, 103812.59909657], [1516555920000, 5.241e-05, 5.27e-05, 5.223e-05, 5.223e-05, 117994.97810369], [1516555980000, 5.251e-05, 5.276e-05, 5.217e-05, 5.254e-05, 55232.17356067], [1516556040000, 5.254e-05, 5.284e-05, 5.254e-05, 5.272e-05, 15353.97537015], [1516556100000, 5.272e-05, 5.272e-05, 5.211e-05, 5.211e-05, 106175.36358033], [1516556160000, 5.211e-05, 5.264e-05, 5.211e-05, 5.26e-05, 54096.87842186], [1516556220000, 5.262e-05, 5.268e-05, 5.262e-05, 5.268e-05, 17457.42848133], [1516556280000, 5.268e-05, 5.284e-05, 5.263e-05, 5.28e-05, 3530.98199769], [1516556340000, 5.268e-05, 5.279e-05, 5.263e-05, 5.263e-05, 1941.51916932], [1516556460000, 5.267e-05, 5.276e-05, 5.267e-05, 5.276e-05, 467.80074872], [1516556520000, 5.276e-05, 5.276e-05, 5.267e-05, 5.267e-05, 1421.20204777], [1516556580000, 5.273e-05, 5.276e-05, 5.273e-05, 5.276e-05, 100.0], [1516556640000, 5.276e-05, 5.276e-05, 5.273e-05, 5.276e-05, 7905.96756183], [1516556700000, 5.276e-05, 5.276e-05, 5.274e-05, 5.274e-05, 564.22938492], [1516556760000, 5.273e-05, 5.274e-05, 5.269e-05, 5.269e-05, 24187.54675596], [1516556820000, 5.268e-05, 5.269e-05, 5.267e-05, 5.269e-05, 812.70626408], [1516556880000, 5.269e-05, 5.285e-05, 5.267e-05, 5.268e-05, 70701.62634952], [1516556940000, 5.285e-05, 5.289e-05, 5.267e-05, 5.289e-05, 24851.59663654], [1516557000000, 5.289e-05, 5.289e-05, 5.267e-05, 5.289e-05, 1395.03782019], [1516557060000, 5.289e-05, 5.289e-05, 5.289e-05, 5.289e-05, 3696.85771317], [1516557120000, 5.269e-05, 5.289e-05, 5.269e-05, 5.275e-05, 6028.06909867], [1516557180000, 5.288e-05, 5.288e-05, 5.288e-05, 5.288e-05, 246.19443126], [1516557240000, 5.288e-05, 5.288e-05, 5.287e-05, 5.288e-05, 1351.28422592], [1516557300000, 5.288e-05, 5.288e-05, 5.28e-05, 5.28e-05, 2254.87836178], [1516557360000, 5.275e-05, 5.281e-05, 5.27e-05, 5.281e-05, 21854.28197787], [1516557420000, 5.28e-05, 5.28e-05, 5.28e-05, 5.28e-05, 776.03767593], [1516557480000, 5.287e-05, 5.289e-05, 5.28e-05, 5.28e-05, 40115.33395414], [1516557540000, 5.289e-05, 5.289e-05, 5.287e-05, 5.289e-05, 2598.99208244], [1516557600000, 5.288e-05, 5.289e-05, 5.288e-05, 5.289e-05, 7367.41148096], [1516557660000, 5.289e-05, 5.289e-05, 5.272e-05, 5.272e-05, 38369.93803443], [1516557720000, 5.289e-05, 5.289e-05, 5.274e-05, 5.288e-05, 38886.91305633], [1516557780000, 5.279e-05, 5.289e-05, 5.275e-05, 5.288e-05, 12362.59522924], [1516557840000, 5.286e-05, 5.29e-05, 5.272e-05, 5.29e-05, 29420.4436458], [1516557900000, 5.29e-05, 5.29e-05, 5.29e-05, 5.29e-05, 19977.99440783], [1516557960000, 5.29e-05, 5.29e-05, 5.288e-05, 5.288e-05, 3386.05919719], [1516558020000, 5.289e-05, 5.29e-05, 5.289e-05, 5.29e-05, 14867.35750004], [1516558080000, 5.29e-05, 5.29e-05, 5.29e-05, 5.29e-05, 8287.79005762], [1516558140000, 5.29e-05, 5.299e-05, 5.289e-05, 5.299e-05, 72523.07581325], [1516558200000, 5.29e-05, 5.3e-05, 5.29e-05, 5.3e-05, 5519.88639012], [1516558260000, 5.299e-05, 5.299e-05, 5.29e-05, 5.29e-05, 3299.93656074], [1516558320000, 5.29e-05, 5.3e-05, 5.271e-05, 5.3e-05, 37711.87674284], [1516558380000, 5.291e-05, 5.305e-05, 5.291e-05, 5.3e-05, 3514.44730504], [1516558440000, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 483.45143556], [1516558500000, 5.3e-05, 5.3e-05, 5.292e-05, 5.3e-05, 3354.59327386], [1516558560000, 5.3e-05, 5.314e-05, 5.3e-05, 5.314e-05, 24658.91575452], [1516558620000, 5.314e-05, 5.317e-05, 5.314e-05, 5.317e-05, 32546.89053209], [1516558680000, 5.306e-05, 5.316e-05, 5.306e-05, 5.316e-05, 19307.34236356], [1516558740000, 5.316e-05, 5.317e-05, 5.316e-05, 5.317e-05, 14479.48810918], [1516558800000, 5.317e-05, 5.317e-05, 5.315e-05, 5.315e-05, 19580.80253494], [1516558860000, 5.315e-05, 5.315e-05, 5.314e-05, 5.314e-05, 1780.77618432], [1516558920000, 5.302e-05, 5.314e-05, 5.302e-05, 5.314e-05, 6925.44417071], [1516558980000, 5.313e-05, 5.313e-05, 5.31e-05, 5.31e-05, 703.60064966], [1516559040000, 5.303e-05, 5.314e-05, 5.303e-05, 5.314e-05, 25469.69409528], [1516559100000, 5.314e-05, 5.314e-05, 5.302e-05, 5.303e-05, 17974.53724032], [1516559160000, 5.301e-05, 5.303e-05, 5.296e-05, 5.296e-05, 4523.12196826], [1516559220000, 5.314e-05, 5.315e-05, 5.295e-05, 5.314e-05, 4051.44360401], [1516559280000, 5.302e-05, 5.302e-05, 5.293e-05, 5.293e-05, 9023.15412213], [1516559340000, 5.293e-05, 5.3e-05, 5.293e-05, 5.3e-05, 877.10790536], [1516559400000, 5.3e-05, 5.3e-05, 5.293e-05, 5.293e-05, 14630.90419376], [1516559460000, 5.293e-05, 5.3e-05, 5.293e-05, 5.3e-05, 13967.11669801], [1516559520000, 5.295e-05, 5.3e-05, 5.293e-05, 5.3e-05, 10955.00760905], [1516559580000, 5.298e-05, 5.298e-05, 5.293e-05, 5.293e-05, 1428.08206461], [1516559640000, 5.293e-05, 5.298e-05, 5.293e-05, 5.298e-05, 13198.49464401], [1516559700000, 5.298e-05, 5.3e-05, 5.293e-05, 5.295e-05, 12644.78542754], [1516559760000, 5.295e-05, 5.316e-05, 5.295e-05, 5.3e-05, 12373.97113634], [1516559820000, 5.3e-05, 5.304e-05, 5.293e-05, 5.293e-05, 34375.3566659], [1516559880000, 5.295e-05, 5.316e-05, 5.293e-05, 5.315e-05, 5999.33408578], [1516559940000, 5.315e-05, 5.315e-05, 5.301e-05, 5.301e-05, 411.24969612], [1516560000000, 5.301e-05, 5.315e-05, 5.301e-05, 5.315e-05, 3747.28704001], [1516560060000, 5.314e-05, 5.316e-05, 5.302e-05, 5.315e-05, 23851.19869753], [1516560120000, 5.315e-05, 5.316e-05, 5.301e-05, 5.316e-05, 60764.2177257], [1516560180000, 5.316e-05, 5.317e-05, 5.316e-05, 5.316e-05, 41518.29605305], [1516560240000, 5.316e-05, 5.319e-05, 5.316e-05, 5.319e-05, 25114.88396442], [1516560300000, 5.319e-05, 5.319e-05, 5.316e-05, 5.319e-05, 17375.06698166], [1516560360000, 5.319e-05, 5.319e-05, 5.317e-05, 5.319e-05, 26624.84400802], [1516560420000, 5.319e-05, 5.319e-05, 5.316e-05, 5.319e-05, 37314.62943956], [1516560480000, 5.319e-05, 5.33e-05, 5.303e-05, 5.303e-05, 21212.12276213], [1516560540000, 5.304e-05, 5.33e-05, 5.304e-05, 5.32e-05, 7652.48256667], [1516560600000, 5.321e-05, 5.33e-05, 5.321e-05, 5.33e-05, 12558.90998788], [1516560660000, 5.329e-05, 5.33e-05, 5.321e-05, 5.321e-05, 30453.40139049], [1516560720000, 5.328e-05, 5.328e-05, 5.32e-05, 5.327e-05, 13254.48645234], [1516560780000, 5.326e-05, 5.326e-05, 5.321e-05, 5.326e-05, 29953.15499437], [1516560840000, 5.326e-05, 5.326e-05, 5.2e-05, 5.324e-05, 564979.75283852], [1516560900000, 5.319e-05, 5.324e-05, 5.319e-05, 5.324e-05, 7523.74664006], [1516560960000, 5.324e-05, 5.326e-05, 5.32e-05, 5.326e-05, 27952.33964226], [1516561020000, 5.326e-05, 5.33e-05, 5.295e-05, 5.329e-05, 120895.67971105], [1516561080000, 5.329e-05, 5.329e-05, 5.201e-05, 5.326e-05, 259522.05203842], [1516561140000, 5.318e-05, 5.324e-05, 5.281e-05, 5.319e-05, 22111.65165803], [1516561200000, 5.319e-05, 5.32e-05, 5.273e-05, 5.32e-05, 21394.6375432], [1516561260000, 5.316e-05, 5.32e-05, 5.296e-05, 5.32e-05, 7798.8167413], [1516561320000, 5.32e-05, 5.323e-05, 5.317e-05, 5.323e-05, 3301.89045906], [1516561380000, 5.325e-05, 5.328e-05, 5.325e-05, 5.328e-05, 6945.11602552], [1516561440000, 5.329e-05, 5.329e-05, 5.328e-05, 5.329e-05, 6356.27637178], [1516561500000, 5.329e-05, 5.33e-05, 5.328e-05, 5.328e-05, 40528.32493895], [1516561560000, 5.328e-05, 5.333e-05, 5.328e-05, 5.331e-05, 1165.8414976], [1516561620000, 5.331e-05, 5.333e-05, 5.328e-05, 5.333e-05, 5395.77343205], [1516561680000, 5.331e-05, 5.333e-05, 5.324e-05, 5.332e-05, 6309.63983486], [1516561740000, 5.332e-05, 5.334e-05, 5.326e-05, 5.334e-05, 6415.0279676], [1516561800000, 5.334e-05, 5.335e-05, 5.334e-05, 5.334e-05, 8290.21940127], [1516561860000, 5.334e-05, 5.336e-05, 5.334e-05, 5.334e-05, 16627.59228079], [1516561920000, 5.325e-05, 5.335e-05, 5.325e-05, 5.335e-05, 811.97393894], [1516561980000, 5.34e-05, 5.34e-05, 5.324e-05, 5.34e-05, 13584.31724998], [1516562040000, 5.336e-05, 5.338e-05, 5.336e-05, 5.336e-05, 6203.05475103], [1516562100000, 5.336e-05, 5.339e-05, 5.336e-05, 5.339e-05, 3531.97494885], [1516562160000, 5.339e-05, 5.339e-05, 5.336e-05, 5.339e-05, 12548.50597309], [1516562220000, 5.335e-05, 5.339e-05, 5.335e-05, 5.335e-05, 2331.9735804], [1516562280000, 5.335e-05, 5.339e-05, 5.335e-05, 5.339e-05, 9236.07597291], [1516562340000, 5.339e-05, 5.339e-05, 5.335e-05, 5.335e-05, 4175.35107371], [1516562400000, 5.339e-05, 5.34e-05, 5.335e-05, 5.34e-05, 10213.3230665], [1516562460000, 5.34e-05, 5.34e-05, 5.34e-05, 5.34e-05, 3307.00000059], [1516562520000, 5.339e-05, 5.34e-05, 5.339e-05, 5.339e-05, 9641.51348818], [1516562580000, 5.34e-05, 5.34e-05, 5.339e-05, 5.34e-05, 8254.07061784], [1516562640000, 5.34e-05, 5.34e-05, 5.339e-05, 5.34e-05, 2639.58579899], [1516562700000, 5.344e-05, 5.344e-05, 5.344e-05, 5.344e-05, 11209.96899962], [1516562760000, 5.344e-05, 5.345e-05, 5.34e-05, 5.34e-05, 8833.05326571], [1516562820000, 5.344e-05, 5.346e-05, 5.344e-05, 5.346e-05, 13774.00967574], [1516562880000, 5.346e-05, 5.347e-05, 5.346e-05, 5.347e-05, 721.98346732], [1516562940000, 5.347e-05, 5.347e-05, 5.347e-05, 5.347e-05, 33.80662052], [1516563000000, 5.347e-05, 5.347e-05, 5.347e-05, 5.347e-05, 171.60563166], [1516563060000, 5.347e-05, 5.35e-05, 5.347e-05, 5.35e-05, 60682.12569687], [1516563120000, 5.35e-05, 5.35e-05, 5.346e-05, 5.35e-05, 49779.86083173], [1516563180000, 5.35e-05, 5.35e-05, 5.347e-05, 5.35e-05, 44993.40770138], [1516563240000, 5.35e-05, 5.35e-05, 5.35e-05, 5.35e-05, 24618.97810094], [1516563300000, 5.35e-05, 5.35e-05, 5.35e-05, 5.35e-05, 25197.34031448], [1516563360000, 5.35e-05, 5.355e-05, 5.35e-05, 5.352e-05, 134356.56873152], [1516563420000, 5.352e-05, 5.356e-05, 5.352e-05, 5.356e-05, 12258.6200029], [1516563480000, 5.356e-05, 5.358e-05, 5.353e-05, 5.358e-05, 12481.39271846], [1516563540000, 5.358e-05, 5.36e-05, 5.356e-05, 5.36e-05, 7859.62299614], [1516563600000, 5.359e-05, 5.36e-05, 5.359e-05, 5.36e-05, 6674.56579173], [1516563660000, 5.36e-05, 5.36e-05, 5.358e-05, 5.36e-05, 2346.5141647], [1516563720000, 5.359e-05, 5.36e-05, 5.359e-05, 5.36e-05, 20906.27781724], [1516563780000, 5.36e-05, 5.362e-05, 5.359e-05, 5.362e-05, 22649.83939146], [1516563840000, 5.363e-05, 5.37e-05, 5.363e-05, 5.37e-05, 3224.96245037], [1516563900000, 5.369e-05, 5.37e-05, 5.363e-05, 5.363e-05, 4522.14019183], [1516563960000, 5.363e-05, 5.37e-05, 5.362e-05, 5.366e-05, 7093.58905091], [1516564020000, 5.366e-05, 5.366e-05, 5.36e-05, 5.363e-05, 15787.24032719], [1516564080000, 5.363e-05, 5.366e-05, 5.36e-05, 5.363e-05, 3806.27239726], [1516564140000, 5.366e-05, 5.366e-05, 5.35e-05, 5.35e-05, 18637.16731929], [1516564200000, 5.364e-05, 5.366e-05, 5.351e-05, 5.366e-05, 12454.355816], [1516564260000, 5.365e-05, 5.366e-05, 5.325e-05, 5.361e-05, 15224.54192118], [1516564320000, 5.361e-05, 5.362e-05, 5.361e-05, 5.361e-05, 225.21473778], [1516564380000, 5.325e-05, 5.361e-05, 5.325e-05, 5.361e-05, 6025.4999686], [1516564440000, 5.325e-05, 5.36e-05, 5.303e-05, 5.35e-05, 25253.07246442], [1516564500000, 5.316e-05, 5.35e-05, 5.316e-05, 5.317e-05, 4691.46449865], [1516564560000, 5.319e-05, 5.343e-05, 5.319e-05, 5.342e-05, 4938.55889181], [1516564620000, 5.342e-05, 5.342e-05, 5.319e-05, 5.319e-05, 23649.73238264], [1516564680000, 5.321e-05, 5.343e-05, 5.321e-05, 5.325e-05, 5545.87781862], [1516564740000, 5.343e-05, 5.343e-05, 5.322e-05, 5.343e-05, 6514.95030046], [1516564800000, 5.337e-05, 5.337e-05, 5.335e-05, 5.337e-05, 2782.54564164], [1516564860000, 5.336e-05, 5.338e-05, 5.336e-05, 5.336e-05, 27039.43209134], [1516564920000, 5.335e-05, 5.335e-05, 5.326e-05, 5.327e-05, 4997.82164378], [1516564980000, 5.329e-05, 5.329e-05, 5.301e-05, 5.32e-05, 10855.00148494], [1516565040000, 5.32e-05, 5.325e-05, 5.3e-05, 5.3e-05, 40977.49586085], [1516565100000, 5.31e-05, 5.323e-05, 5.288e-05, 5.322e-05, 71569.04979014], [1516565160000, 5.322e-05, 5.322e-05, 5.293e-05, 5.293e-05, 2786.09421636], [1516565220000, 5.322e-05, 5.322e-05, 5.31e-05, 5.31e-05, 4486.92690815], [1516565280000, 5.31e-05, 5.322e-05, 5.302e-05, 5.322e-05, 7755.82495005], [1516565340000, 5.309e-05, 5.322e-05, 5.309e-05, 5.322e-05, 8215.61210905], [1516565400000, 5.311e-05, 5.322e-05, 5.311e-05, 5.322e-05, 4643.03782115], [1516565460000, 5.321e-05, 5.321e-05, 5.286e-05, 5.286e-05, 15160.72661911], [1516565520000, 5.311e-05, 5.311e-05, 5.302e-05, 5.31e-05, 3920.93668661], [1516565580000, 5.303e-05, 5.31e-05, 5.303e-05, 5.303e-05, 6262.81996244], [1516565640000, 5.303e-05, 5.31e-05, 5.303e-05, 5.309e-05, 3637.80683551], [1516565700000, 5.309e-05, 5.315e-05, 5.303e-05, 5.303e-05, 30031.43365205], [1516565760000, 5.315e-05, 5.315e-05, 5.31e-05, 5.31e-05, 2322.65303038], [1516565820000, 5.303e-05, 5.303e-05, 5.288e-05, 5.288e-05, 3331.4556948], [1516565880000, 5.288e-05, 5.303e-05, 5.288e-05, 5.303e-05, 2874.96307066], [1516565940000, 5.288e-05, 5.303e-05, 5.288e-05, 5.3e-05, 2761.99973024], [1516566000000, 5.288e-05, 5.301e-05, 5.288e-05, 5.3e-05, 9332.15673306], [1516566060000, 5.3e-05, 5.3e-05, 5.288e-05, 5.289e-05, 19830.70112558], [1516566120000, 5.289e-05, 5.289e-05, 5.288e-05, 5.289e-05, 9735.8055449], [1516566180000, 5.289e-05, 5.3e-05, 5.288e-05, 5.3e-05, 12872.05529545], [1516566240000, 5.298e-05, 5.3e-05, 5.289e-05, 5.3e-05, 3870.51193158], [1516566300000, 5.3e-05, 5.303e-05, 5.286e-05, 5.303e-05, 9501.62768506], [1516566360000, 5.31e-05, 5.315e-05, 5.303e-05, 5.315e-05, 5226.92139387], [1516566420000, 5.303e-05, 5.303e-05, 5.284e-05, 5.284e-05, 30841.42845006], [1516566480000, 5.287e-05, 5.3e-05, 5.267e-05, 5.282e-05, 18154.24790336], [1516566540000, 5.282e-05, 5.315e-05, 5.268e-05, 5.315e-05, 5532.81151108], [1516566600000, 5.314e-05, 5.315e-05, 5.27e-05, 5.314e-05, 294.76458352], [1516566660000, 5.313e-05, 5.313e-05, 5.313e-05, 5.313e-05, 1519.85571146], [1516566720000, 5.27e-05, 5.313e-05, 5.268e-05, 5.268e-05, 6191.95632554], [1516566780000, 5.268e-05, 5.27e-05, 5.258e-05, 5.258e-05, 9905.38111564], [1516566900000, 5.309e-05, 5.309e-05, 5.261e-05, 5.261e-05, 15172.65008376], [1516566960000, 5.266e-05, 5.312e-05, 5.266e-05, 5.312e-05, 6098.31169578], [1516567020000, 5.309e-05, 5.31e-05, 5.3e-05, 5.3e-05, 1182.09206458], [1516567080000, 5.3e-05, 5.3e-05, 5.271e-05, 5.271e-05, 1227.97671582], [1516567140000, 5.272e-05, 5.312e-05, 5.272e-05, 5.312e-05, 4426.3277956], [1516567200000, 5.273e-05, 5.273e-05, 5.273e-05, 5.273e-05, 1400.0], [1516567260000, 5.306e-05, 5.306e-05, 5.273e-05, 5.275e-05, 7307.79951653], [1516567320000, 5.306e-05, 5.306e-05, 5.275e-05, 5.305e-05, 2111.51049083], [1516567380000, 5.305e-05, 5.306e-05, 5.305e-05, 5.305e-05, 1692.93838863], [1516567440000, 5.275e-05, 5.305e-05, 5.273e-05, 5.276e-05, 7261.9067508], [1516567500000, 5.277e-05, 5.305e-05, 5.273e-05, 5.273e-05, 56479.44104587], [1516567560000, 5.273e-05, 5.275e-05, 5.256e-05, 5.267e-05, 22351.83803211], [1516567620000, 5.267e-05, 5.267e-05, 5.257e-05, 5.26e-05, 8297.655319], [1516567680000, 5.267e-05, 5.267e-05, 5.267e-05, 5.267e-05, 4228.45993506], [1516567740000, 5.26e-05, 5.261e-05, 5.249e-05, 5.249e-05, 85722.69050401], [1516567800000, 5.26e-05, 5.26e-05, 5.23e-05, 5.23e-05, 48539.68707936], [1516567860000, 5.26e-05, 5.26e-05, 5.229e-05, 5.229e-05, 49543.21147432], [1516567920000, 5.229e-05, 5.262e-05, 5.229e-05, 5.262e-05, 2653.7598009], [1516567980000, 5.261e-05, 5.262e-05, 5.26e-05, 5.262e-05, 9058.12881946], [1516568040000, 5.26e-05, 5.269e-05, 5.26e-05, 5.269e-05, 1904.37957446], [1516568100000, 5.262e-05, 5.269e-05, 5.262e-05, 5.269e-05, 5774.00849658], [1516568160000, 5.273e-05, 5.303e-05, 5.273e-05, 5.3e-05, 33272.54779305], [1516568220000, 5.298e-05, 5.298e-05, 5.275e-05, 5.276e-05, 6343.02131212], [1516568280000, 5.291e-05, 5.293e-05, 5.276e-05, 5.276e-05, 14704.08609386], [1516568340000, 5.276e-05, 5.29e-05, 5.276e-05, 5.29e-05, 1146.86218018], [1516568400000, 5.29e-05, 5.29e-05, 5.275e-05, 5.28e-05, 324.62189337], [1516568460000, 5.29e-05, 5.293e-05, 5.273e-05, 5.285e-05, 16059.95585491], [1516568520000, 5.273e-05, 5.285e-05, 5.273e-05, 5.28e-05, 20799.66465545], [1516568580000, 5.28e-05, 5.285e-05, 5.273e-05, 5.285e-05, 43487.154319], [1516568640000, 5.285e-05, 5.286e-05, 5.273e-05, 5.286e-05, 32507.99582951], [1516568700000, 5.286e-05, 5.286e-05, 5.262e-05, 5.262e-05, 2323.12670793], [1516568760000, 5.263e-05, 5.263e-05, 5.263e-05, 5.263e-05, 12.0], [1516568820000, 5.289e-05, 5.29e-05, 5.264e-05, 5.264e-05, 91.70053163], [1516568880000, 5.266e-05, 5.289e-05, 5.264e-05, 5.288e-05, 2732.50932796], [1516568940000, 5.288e-05, 5.289e-05, 5.268e-05, 5.27e-05, 5787.95291242], [1516569000000, 5.288e-05, 5.288e-05, 5.266e-05, 5.288e-05, 2624.23941438], [1516569060000, 5.286e-05, 5.288e-05, 5.286e-05, 5.288e-05, 1124.73641249], [1516569120000, 5.267e-05, 5.289e-05, 5.262e-05, 5.266e-05, 12279.02935922], [1516569180000, 5.289e-05, 5.289e-05, 5.269e-05, 5.269e-05, 7001.28591034], [1516569240000, 5.289e-05, 5.289e-05, 5.26e-05, 5.289e-05, 9543.75889786], [1516569300000, 5.28e-05, 5.289e-05, 5.261e-05, 5.261e-05, 3429.23821676], [1516569360000, 5.261e-05, 5.289e-05, 5.261e-05, 5.28e-05, 10425.72843586], [1516569420000, 5.28e-05, 5.289e-05, 5.265e-05, 5.289e-05, 1787.96427437], [1516569480000, 5.289e-05, 5.289e-05, 5.289e-05, 5.289e-05, 8732.91480609], [1516569540000, 5.288e-05, 5.289e-05, 5.28e-05, 5.28e-05, 5624.80018387], [1516569600000, 5.28e-05, 5.289e-05, 5.269e-05, 5.289e-05, 4256.49254683], [1516569660000, 5.289e-05, 5.289e-05, 5.277e-05, 5.289e-05, 224431.44349754], [1516569720000, 5.277e-05, 5.289e-05, 5.277e-05, 5.289e-05, 34585.11073556], [1516569780000, 5.289e-05, 5.289e-05, 5.271e-05, 5.271e-05, 13498.96079797], [1516569840000, 5.287e-05, 5.29e-05, 5.269e-05, 5.289e-05, 27583.5406967], [1516569900000, 5.29e-05, 5.31e-05, 5.287e-05, 5.3e-05, 48146.78519817], [1516569960000, 5.289e-05, 5.32e-05, 5.289e-05, 5.289e-05, 1948.81583226], [1516570020000, 5.3e-05, 5.317e-05, 5.286e-05, 5.303e-05, 11767.74094932], [1516570080000, 5.303e-05, 5.317e-05, 5.302e-05, 5.317e-05, 17250.52890737], [1516570140000, 5.303e-05, 5.33e-05, 5.303e-05, 5.33e-05, 43032.61652155], [1516570200000, 5.33e-05, 5.338e-05, 5.328e-05, 5.337e-05, 48988.35457955], [1516570260000, 5.333e-05, 5.337e-05, 5.333e-05, 5.337e-05, 12112.23222607], [1516570320000, 5.337e-05, 5.342e-05, 5.31e-05, 5.342e-05, 94786.73316236], [1516570380000, 5.342e-05, 5.342e-05, 5.32e-05, 5.32e-05, 16149.84303229], [1516570440000, 5.335e-05, 5.335e-05, 5.311e-05, 5.311e-05, 8856.92911747], [1516570500000, 5.311e-05, 5.311e-05, 5.311e-05, 5.311e-05, 1470.94255335], [1516570560000, 5.311e-05, 5.327e-05, 5.311e-05, 5.326e-05, 5971.87804791], [1516570620000, 5.311e-05, 5.327e-05, 5.311e-05, 5.311e-05, 1934.29977197], [1516570680000, 5.311e-05, 5.311e-05, 5.31e-05, 5.311e-05, 1315.93572565], [1516570740000, 5.31e-05, 5.311e-05, 5.309e-05, 5.31e-05, 6123.72807529], [1516570800000, 5.31e-05, 5.31e-05, 5.3e-05, 5.3e-05, 12520.14228949], [1516570860000, 5.3e-05, 5.31e-05, 5.3e-05, 5.3e-05, 3511.80562655], [1516570920000, 5.3e-05, 5.3e-05, 5.29e-05, 5.29e-05, 12417.04412386], [1516570980000, 5.29e-05, 5.29e-05, 5.288e-05, 5.29e-05, 1168.03692509], [1516571040000, 5.29e-05, 5.3e-05, 5.29e-05, 5.3e-05, 60217.00726542], [1516571100000, 5.29e-05, 5.3e-05, 5.289e-05, 5.29e-05, 5990.83973456], [1516571160000, 5.29e-05, 5.29e-05, 5.289e-05, 5.29e-05, 3148.65515714], [1516571220000, 5.29e-05, 5.29e-05, 5.288e-05, 5.289e-05, 11874.30483056], [1516571280000, 5.288e-05, 5.29e-05, 5.261e-05, 5.29e-05, 18133.20524988], [1516571340000, 5.289e-05, 5.29e-05, 5.263e-05, 5.27e-05, 43289.49794766], [1516571400000, 5.271e-05, 5.29e-05, 5.27e-05, 5.27e-05, 30583.9542555], [1516571460000, 5.273e-05, 5.29e-05, 5.27e-05, 5.29e-05, 20987.36149448], [1516571520000, 5.29e-05, 5.29e-05, 5.27e-05, 5.289e-05, 6936.04775523], [1516571580000, 5.289e-05, 5.29e-05, 5.289e-05, 5.29e-05, 2403.40410341], [1516571640000, 5.29e-05, 5.3e-05, 5.279e-05, 5.3e-05, 25377.60636103], [1516571700000, 5.3e-05, 5.328e-05, 5.29e-05, 5.308e-05, 38503.624493], [1516571760000, 5.308e-05, 5.308e-05, 5.28e-05, 5.28e-05, 24002.61763761], [1516571820000, 5.28e-05, 5.308e-05, 5.271e-05, 5.28e-05, 24418.74021526], [1516571880000, 5.28e-05, 5.342e-05, 5.28e-05, 5.342e-05, 6895.26263008], [1516571940000, 5.339e-05, 5.339e-05, 5.286e-05, 5.286e-05, 840.64358235], [1516572000000, 5.3e-05, 5.3e-05, 5.28e-05, 5.3e-05, 6227.47124867], [1516572060000, 5.299e-05, 5.299e-05, 5.286e-05, 5.299e-05, 1129.30597914], [1516572120000, 5.29e-05, 5.322e-05, 5.29e-05, 5.322e-05, 38913.2839803], [1516572180000, 5.304e-05, 5.321e-05, 5.304e-05, 5.32e-05, 617.03823983], [1516572240000, 5.304e-05, 5.319e-05, 5.304e-05, 5.319e-05, 12171.69918786], [1516572300000, 5.318e-05, 5.318e-05, 5.304e-05, 5.304e-05, 4080.18424326], [1516572360000, 5.304e-05, 5.315e-05, 5.287e-05, 5.315e-05, 15278.09783173], [1516572420000, 5.286e-05, 5.315e-05, 5.286e-05, 5.31e-05, 3150.3778428], [1516572480000, 5.31e-05, 5.315e-05, 5.31e-05, 5.31e-05, 14752.88799105], [1516572540000, 5.3e-05, 5.3e-05, 5.297e-05, 5.297e-05, 6629.68899701], [1516572600000, 5.297e-05, 5.315e-05, 5.297e-05, 5.3e-05, 45800.31711177], [1516572660000, 5.311e-05, 5.313e-05, 5.3e-05, 5.303e-05, 16370.93494015], [1516572720000, 5.313e-05, 5.313e-05, 5.297e-05, 5.297e-05, 4387.33487667], [1516572780000, 5.31e-05, 5.31e-05, 5.286e-05, 5.303e-05, 5969.848646], [1516572840000, 5.303e-05, 5.313e-05, 5.3e-05, 5.313e-05, 10687.29790495], [1516572900000, 5.315e-05, 5.315e-05, 5.313e-05, 5.313e-05, 2160.49327346], [1516572960000, 5.313e-05, 5.315e-05, 5.286e-05, 5.313e-05, 42613.83692812], [1516573020000, 5.308e-05, 5.317e-05, 5.308e-05, 5.317e-05, 19675.94677329], [1516573080000, 5.308e-05, 5.338e-05, 5.287e-05, 5.338e-05, 25482.5460335], [1516573140000, 5.323e-05, 5.335e-05, 5.29e-05, 5.335e-05, 682.85671024], [1516573200000, 5.325e-05, 5.325e-05, 5.29e-05, 5.29e-05, 3237.23288901], [1516573260000, 5.3e-05, 5.338e-05, 5.3e-05, 5.338e-05, 38706.16629864], [1516573320000, 5.338e-05, 5.338e-05, 5.304e-05, 5.338e-05, 5857.60407568], [1516573380000, 5.338e-05, 5.369e-05, 5.29e-05, 5.35e-05, 101079.87849561], [1516573440000, 5.365e-05, 5.365e-05, 5.28e-05, 5.3e-05, 117367.07745903], [1516573500000, 5.357e-05, 5.357e-05, 5.314e-05, 5.355e-05, 5472.55250232], [1516573560000, 5.353e-05, 5.353e-05, 5.315e-05, 5.35e-05, 7501.41484505], [1516573620000, 5.35e-05, 5.35e-05, 5.32e-05, 5.347e-05, 3932.73661087], [1516573680000, 5.345e-05, 5.345e-05, 5.33e-05, 5.335e-05, 19833.8874842], [1516573740000, 5.335e-05, 5.335e-05, 5.321e-05, 5.33e-05, 18676.49148775], [1516573800000, 5.324e-05, 5.357e-05, 5.324e-05, 5.347e-05, 51430.03771166], [1516573860000, 5.356e-05, 5.356e-05, 5.347e-05, 5.347e-05, 20326.77908492], [1516573920000, 5.347e-05, 5.35e-05, 5.347e-05, 5.35e-05, 12352.94690176], [1516573980000, 5.35e-05, 5.366e-05, 5.349e-05, 5.364e-05, 35886.59663896], [1516574040000, 5.364e-05, 5.37e-05, 5.364e-05, 5.368e-05, 1651.85278696], [1516574100000, 5.368e-05, 5.368e-05, 5.333e-05, 5.368e-05, 3674.20893839], [1516574160000, 5.337e-05, 5.37e-05, 5.337e-05, 5.368e-05, 43095.80505583], [1516574220000, 5.368e-05, 5.385e-05, 5.368e-05, 5.385e-05, 49891.17107257], [1516574280000, 5.385e-05, 5.385e-05, 5.375e-05, 5.378e-05, 9057.98197047], [1516574340000, 5.385e-05, 5.385e-05, 5.382e-05, 5.384e-05, 7781.64436112], [1516574400000, 5.381e-05, 5.381e-05, 5.369e-05, 5.369e-05, 4993.51439398], [1516574460000, 5.375e-05, 5.385e-05, 5.365e-05, 5.383e-05, 18305.17667869], [1516574520000, 5.38e-05, 5.383e-05, 5.378e-05, 5.383e-05, 25177.26852324], [1516574580000, 5.383e-05, 5.383e-05, 5.378e-05, 5.382e-05, 18086.98818474], [1516574640000, 5.38e-05, 5.383e-05, 5.362e-05, 5.383e-05, 24850.0262836], [1516574700000, 5.382e-05, 5.383e-05, 5.381e-05, 5.383e-05, 16686.79651681], [1516574760000, 5.383e-05, 5.385e-05, 5.38e-05, 5.38e-05, 6450.58830259], [1516574820000, 5.379e-05, 5.383e-05, 5.34e-05, 5.342e-05, 33961.79450023], [1516574880000, 5.36e-05, 5.361e-05, 5.36e-05, 5.361e-05, 18549.29934508], [1516574940000, 5.38e-05, 5.38e-05, 5.373e-05, 5.38e-05, 5983.95794676], [1516575000000, 5.38e-05, 5.38e-05, 5.373e-05, 5.379e-05, 1265.02895312], [1516575060000, 5.379e-05, 5.379e-05, 5.342e-05, 5.377e-05, 6097.01515251], [1516575120000, 5.345e-05, 5.376e-05, 5.344e-05, 5.375e-05, 2879.81088516], [1516575180000, 5.373e-05, 5.373e-05, 5.344e-05, 5.344e-05, 3451.0325533], [1516575240000, 5.344e-05, 5.371e-05, 5.344e-05, 5.371e-05, 2718.84282085], [1516575300000, 5.344e-05, 5.37e-05, 5.344e-05, 5.365e-05, 1717.90668296], [1516575360000, 5.365e-05, 5.365e-05, 5.325e-05, 5.325e-05, 9642.46975255], [1516575420000, 5.345e-05, 5.362e-05, 5.323e-05, 5.323e-05, 9016.09696092], [1516575480000, 5.324e-05, 5.354e-05, 5.323e-05, 5.323e-05, 23768.85027822], [1516575540000, 5.328e-05, 5.352e-05, 5.328e-05, 5.352e-05, 5613.34586173], [1516575600000, 5.352e-05, 5.352e-05, 5.328e-05, 5.35e-05, 4666.40641837], [1516575660000, 5.35e-05, 5.352e-05, 5.35e-05, 5.35e-05, 2437.41574586], [1516575720000, 5.35e-05, 5.352e-05, 5.322e-05, 5.352e-05, 16114.6880457], [1516575780000, 5.352e-05, 5.363e-05, 5.352e-05, 5.363e-05, 12968.56767898], [1516575840000, 5.363e-05, 5.365e-05, 5.363e-05, 5.365e-05, 29369.81735131], [1516575900000, 5.365e-05, 5.371e-05, 5.363e-05, 5.371e-05, 3156.88703189], [1516575960000, 5.371e-05, 5.371e-05, 5.363e-05, 5.371e-05, 1755.91082811], [1516576020000, 5.363e-05, 5.371e-05, 5.363e-05, 5.367e-05, 7777.29959509], [1516576080000, 5.37e-05, 5.37e-05, 5.361e-05, 5.361e-05, 8833.22815402], [1516576140000, 5.37e-05, 5.37e-05, 5.37e-05, 5.37e-05, 5539.63425079], [1516576200000, 5.369e-05, 5.369e-05, 5.369e-05, 5.369e-05, 1014.56098479], [1516576260000, 5.35e-05, 5.368e-05, 5.326e-05, 5.368e-05, 3986.72658201], [1516576320000, 5.369e-05, 5.37e-05, 5.368e-05, 5.37e-05, 13207.13246492], [1516576380000, 5.37e-05, 5.371e-05, 5.37e-05, 5.371e-05, 4511.0460777], [1516576440000, 5.371e-05, 5.38e-05, 5.323e-05, 5.373e-05, 73202.03438883], [1516576500000, 5.324e-05, 5.371e-05, 5.323e-05, 5.368e-05, 3907.11590165], [1516576560000, 5.355e-05, 5.366e-05, 5.355e-05, 5.364e-05, 14855.19184903], [1516576620000, 5.362e-05, 5.363e-05, 5.325e-05, 5.358e-05, 3464.29016856], [1516576680000, 5.361e-05, 5.361e-05, 5.358e-05, 5.358e-05, 4633.7447489], [1516576740000, 5.358e-05, 5.368e-05, 5.334e-05, 5.358e-05, 15579.64879339], [1516576800000, 5.363e-05, 5.368e-05, 5.36e-05, 5.362e-05, 7299.97313705], [1516576860000, 5.36e-05, 5.363e-05, 5.36e-05, 5.36e-05, 15703.0761681], [1516576920000, 5.361e-05, 5.361e-05, 5.336e-05, 5.357e-05, 6257.96680438], [1516576980000, 5.357e-05, 5.357e-05, 5.354e-05, 5.357e-05, 12714.80805394], [1516577040000, 5.357e-05, 5.357e-05, 5.337e-05, 5.357e-05, 2560.33571816], [1516577100000, 5.357e-05, 5.357e-05, 5.356e-05, 5.357e-05, 7081.31145489], [1516577160000, 5.357e-05, 5.357e-05, 5.356e-05, 5.357e-05, 10879.02729275], [1516577220000, 5.357e-05, 5.357e-05, 5.356e-05, 5.357e-05, 4007.02214734], [1516577280000, 5.357e-05, 5.357e-05, 5.356e-05, 5.357e-05, 3981.71409768], [1516577340000, 5.356e-05, 5.357e-05, 5.355e-05, 5.355e-05, 2601.02257271], [1516577400000, 5.356e-05, 5.357e-05, 5.355e-05, 5.356e-05, 14625.78061314], [1516577460000, 5.356e-05, 5.357e-05, 5.352e-05, 5.352e-05, 18186.06293835], [1516577520000, 5.352e-05, 5.357e-05, 5.34e-05, 5.357e-05, 10422.13579025], [1516577580000, 5.349e-05, 5.357e-05, 5.346e-05, 5.357e-05, 11006.89554684], [1516577640000, 5.357e-05, 5.357e-05, 5.354e-05, 5.354e-05, 10637.43678124], [1516577700000, 5.354e-05, 5.355e-05, 5.35e-05, 5.354e-05, 16712.74477785], [1516577760000, 5.354e-05, 5.357e-05, 5.353e-05, 5.353e-05, 14297.18335629], [1516577820000, 5.357e-05, 5.378e-05, 5.357e-05, 5.378e-05, 13919.33982351], [1516577880000, 5.378e-05, 5.388e-05, 5.378e-05, 5.388e-05, 20239.01968949], [1516577940000, 5.388e-05, 5.388e-05, 5.383e-05, 5.383e-05, 1025.22981222], [1516578000000, 5.383e-05, 5.383e-05, 5.383e-05, 5.383e-05, 1229.97484924], [1516578060000, 5.38e-05, 5.38e-05, 5.38e-05, 5.38e-05, 2882.46522567], [1516578120000, 5.38e-05, 5.38e-05, 5.359e-05, 5.359e-05, 5617.24851265], [1516578180000, 5.37e-05, 5.37e-05, 5.36e-05, 5.36e-05, 7646.54844274], [1516578240000, 5.36e-05, 5.37e-05, 5.36e-05, 5.37e-05, 17166.58553903], [1516578300000, 5.37e-05, 5.377e-05, 5.36e-05, 5.36e-05, 32541.74295035], [1516578360000, 5.37e-05, 5.377e-05, 5.36e-05, 5.377e-05, 4696.07448103], [1516578420000, 5.37e-05, 5.377e-05, 5.359e-05, 5.36e-05, 18344.99648129], [1516578480000, 5.36e-05, 5.37e-05, 5.357e-05, 5.36e-05, 7064.85721692], [1516578540000, 5.36e-05, 5.378e-05, 5.36e-05, 5.378e-05, 22367.74385134], [1516578600000, 5.378e-05, 5.378e-05, 5.357e-05, 5.377e-05, 26695.71619606], [1516578660000, 5.377e-05, 5.377e-05, 5.358e-05, 5.377e-05, 6127.01171627], [1516578720000, 5.377e-05, 5.377e-05, 5.361e-05, 5.361e-05, 6011.7235955], [1516578780000, 5.375e-05, 5.375e-05, 5.353e-05, 5.353e-05, 10024.01658741], [1516578840000, 5.369e-05, 5.369e-05, 5.324e-05, 5.331e-05, 52826.81904801], [1516578900000, 5.341e-05, 5.367e-05, 5.331e-05, 5.342e-05, 18126.07847594], [1516578960000, 5.342e-05, 5.342e-05, 5.323e-05, 5.334e-05, 41354.23797723], [1516579020000, 5.334e-05, 5.365e-05, 5.323e-05, 5.335e-05, 19203.60926258], [1516579080000, 5.342e-05, 5.342e-05, 5.322e-05, 5.34e-05, 38683.48555858], [1516579140000, 5.324e-05, 5.341e-05, 5.322e-05, 5.323e-05, 31664.79728215], [1516579200000, 5.323e-05, 5.336e-05, 5.301e-05, 5.301e-05, 373578.44756285], [1516579260000, 5.336e-05, 5.341e-05, 5.26e-05, 5.27e-05, 162097.03959885], [1516579320000, 5.28e-05, 5.338e-05, 5.257e-05, 5.311e-05, 110753.90564778], [1516579380000, 5.31e-05, 5.312e-05, 5.276e-05, 5.292e-05, 124977.40337619], [1516579440000, 5.313e-05, 5.313e-05, 5.292e-05, 5.308e-05, 54352.26199705], [1516579500000, 5.308e-05, 5.313e-05, 5.268e-05, 5.313e-05, 153512.20142224], [1516579560000, 5.31e-05, 5.31e-05, 5.277e-05, 5.277e-05, 11425.40195668], [1516579620000, 5.277e-05, 5.312e-05, 5.277e-05, 5.307e-05, 16199.47093422], [1516579680000, 5.28e-05, 5.311e-05, 5.268e-05, 5.282e-05, 61346.16546355], [1516579740000, 5.302e-05, 5.302e-05, 5.282e-05, 5.302e-05, 16166.72656365], [1516579800000, 5.302e-05, 5.303e-05, 5.28e-05, 5.282e-05, 26097.30841212], [1516579860000, 5.282e-05, 5.311e-05, 5.282e-05, 5.311e-05, 20571.40783243], [1516579920000, 5.311e-05, 5.311e-05, 5.285e-05, 5.285e-05, 1625.32208187], [1516579980000, 5.285e-05, 5.309e-05, 5.282e-05, 5.309e-05, 33733.99276155], [1516580040000, 5.309e-05, 5.309e-05, 5.285e-05, 5.306e-05, 25055.16645604], [1516580100000, 5.306e-05, 5.306e-05, 5.271e-05, 5.305e-05, 17029.54434832], [1516580160000, 5.3e-05, 5.306e-05, 5.272e-05, 5.303e-05, 47082.46792914], [1516580220000, 5.302e-05, 5.302e-05, 5.289e-05, 5.302e-05, 51523.09782033], [1516580280000, 5.299e-05, 5.306e-05, 5.267e-05, 5.301e-05, 129210.46038465], [1516580340000, 5.301e-05, 5.301e-05, 5.267e-05, 5.301e-05, 48313.86773327], [1516580400000, 5.301e-05, 5.301e-05, 5.298e-05, 5.301e-05, 20086.1368256], [1516580460000, 5.301e-05, 5.301e-05, 5.277e-05, 5.299e-05, 25938.05282491], [1516580520000, 5.299e-05, 5.303e-05, 5.265e-05, 5.303e-05, 81873.91800331], [1516580580000, 5.303e-05, 5.303e-05, 5.268e-05, 5.303e-05, 26003.67579427], [1516580640000, 5.303e-05, 5.304e-05, 5.268e-05, 5.296e-05, 15304.19654765], [1516580700000, 5.296e-05, 5.296e-05, 5.256e-05, 5.259e-05, 106912.58979565], [1516580760000, 5.278e-05, 5.301e-05, 5.25e-05, 5.25e-05, 118458.7170593], [1516580820000, 5.25e-05, 5.33e-05, 5.237e-05, 5.249e-05, 395813.99555357], [1516580880000, 5.249e-05, 5.324e-05, 5.228e-05, 5.24e-05, 135115.78046196], [1516580940000, 5.24e-05, 5.249e-05, 5.226e-05, 5.245e-05, 41257.93430167], [1516581000000, 5.245e-05, 5.264e-05, 5.222e-05, 5.264e-05, 45622.16249776], [1516581060000, 5.264e-05, 5.279e-05, 5.212e-05, 5.221e-05, 73703.23707094], [1516581120000, 5.221e-05, 5.265e-05, 5.203e-05, 5.209e-05, 74838.9811139], [1516581180000, 5.209e-05, 5.244e-05, 5.2e-05, 5.222e-05, 88174.63666607], [1516581240000, 5.221e-05, 5.236e-05, 5.203e-05, 5.236e-05, 36235.00953762], [1516581300000, 5.236e-05, 5.236e-05, 5.22e-05, 5.233e-05, 50938.55297205], [1516581360000, 5.233e-05, 5.233e-05, 5.21e-05, 5.228e-05, 31499.88886995], [1516581420000, 5.228e-05, 5.232e-05, 5.226e-05, 5.226e-05, 15235.46535543], [1516581480000, 5.22e-05, 5.233e-05, 5.201e-05, 5.21e-05, 19755.88242869], [1516581540000, 5.228e-05, 5.228e-05, 5.227e-05, 5.227e-05, 18435.06338851], [1516581600000, 5.227e-05, 5.233e-05, 5.203e-05, 5.233e-05, 27917.09047689], [1516581660000, 5.233e-05, 5.233e-05, 5.229e-05, 5.231e-05, 4813.47299625], [1516581720000, 5.229e-05, 5.233e-05, 5.218e-05, 5.23e-05, 21203.56336769], [1516581780000, 5.23e-05, 5.23e-05, 5.21e-05, 5.229e-05, 42401.89881877], [1516581840000, 5.229e-05, 5.23e-05, 5.224e-05, 5.229e-05, 13389.58305625], [1516581900000, 5.229e-05, 5.266e-05, 5.223e-05, 5.225e-05, 43994.45672257], [1516581960000, 5.228e-05, 5.241e-05, 5.22e-05, 5.24e-05, 80689.80947424], [1516582020000, 5.24e-05, 5.24e-05, 5.211e-05, 5.238e-05, 21682.32493575], [1516582080000, 5.235e-05, 5.238e-05, 5.213e-05, 5.232e-05, 30271.35045595], [1516582140000, 5.232e-05, 5.265e-05, 5.232e-05, 5.264e-05, 3278.51271193], [1516582200000, 5.239e-05, 5.262e-05, 5.233e-05, 5.255e-05, 859.59787982], [1516582260000, 5.252e-05, 5.252e-05, 5.235e-05, 5.24e-05, 12752.82639714], [1516582320000, 5.236e-05, 5.262e-05, 5.236e-05, 5.257e-05, 101486.71415134], [1516582380000, 5.257e-05, 5.257e-05, 5.207e-05, 5.24e-05, 83335.16799491], [1516582440000, 5.24e-05, 5.24e-05, 5.237e-05, 5.237e-05, 4797.28424837], [1516582500000, 5.237e-05, 5.261e-05, 5.237e-05, 5.251e-05, 15475.22601591], [1516582560000, 5.251e-05, 5.311e-05, 5.237e-05, 5.265e-05, 63696.89811083], [1516582620000, 5.265e-05, 5.265e-05, 5.24e-05, 5.26e-05, 1117.2197249], [1516582680000, 5.259e-05, 5.26e-05, 5.24e-05, 5.24e-05, 12646.48604063], [1516582740000, 5.24e-05, 5.259e-05, 5.237e-05, 5.258e-05, 13372.32641892], [1516582800000, 5.257e-05, 5.26e-05, 5.245e-05, 5.256e-05, 3040.14014379], [1516582860000, 5.257e-05, 5.26e-05, 5.256e-05, 5.26e-05, 14879.8327363], [1516582920000, 5.26e-05, 5.298e-05, 5.26e-05, 5.26e-05, 2197.94418003], [1516582980000, 5.257e-05, 5.31e-05, 5.257e-05, 5.309e-05, 52894.30977161], [1516583040000, 5.298e-05, 5.31e-05, 5.257e-05, 5.284e-05, 65208.62315288], [1516583100000, 5.284e-05, 5.303e-05, 5.259e-05, 5.26e-05, 42688.42125197], [1516583160000, 5.259e-05, 5.26e-05, 5.259e-05, 5.26e-05, 4730.32434543], [1516583220000, 5.283e-05, 5.29e-05, 5.26e-05, 5.26e-05, 41551.65426588], [1516583280000, 5.28e-05, 5.28e-05, 5.21e-05, 5.271e-05, 128283.09972537], [1516583340000, 5.271e-05, 5.275e-05, 5.21e-05, 5.23e-05, 150543.90384157], [1516583400000, 5.23e-05, 5.23e-05, 5.223e-05, 5.23e-05, 20429.28861731], [1516583460000, 5.229e-05, 5.23e-05, 5.227e-05, 5.23e-05, 8290.94543745], [1516583520000, 5.23e-05, 5.23e-05, 5.223e-05, 5.229e-05, 26799.41844502], [1516583580000, 5.229e-05, 5.23e-05, 5.223e-05, 5.229e-05, 8869.39930162], [1516583640000, 5.229e-05, 5.23e-05, 5.228e-05, 5.229e-05, 13297.90687779], [1516583700000, 5.229e-05, 5.23e-05, 5.223e-05, 5.223e-05, 20287.16499506], [1516583760000, 5.223e-05, 5.223e-05, 5.211e-05, 5.223e-05, 24834.49478713], [1516583820000, 5.223e-05, 5.23e-05, 5.211e-05, 5.23e-05, 27649.62850103], [1516583880000, 5.228e-05, 5.248e-05, 5.228e-05, 5.248e-05, 16020.7434208], [1516583940000, 5.248e-05, 5.249e-05, 5.248e-05, 5.249e-05, 17787.74759589], [1516584000000, 5.248e-05, 5.249e-05, 5.232e-05, 5.249e-05, 15166.67875972], [1516584060000, 5.245e-05, 5.248e-05, 5.234e-05, 5.248e-05, 16892.66758119], [1516584120000, 5.248e-05, 5.25e-05, 5.246e-05, 5.246e-05, 22320.69465866], [1516584180000, 5.24e-05, 5.248e-05, 5.24e-05, 5.248e-05, 6881.19041319], [1516584240000, 5.248e-05, 5.248e-05, 5.247e-05, 5.248e-05, 3482.57635195], [1516584300000, 5.247e-05, 5.248e-05, 5.247e-05, 5.247e-05, 28471.4593012], [1516584360000, 5.244e-05, 5.247e-05, 5.212e-05, 5.216e-05, 39941.20415426], [1516584420000, 5.246e-05, 5.246e-05, 5.245e-05, 5.245e-05, 2379.83301003], [1516584480000, 5.245e-05, 5.246e-05, 5.22e-05, 5.246e-05, 6074.25145765], [1516584540000, 5.246e-05, 5.246e-05, 5.222e-05, 5.222e-05, 4233.2208999], [1516584600000, 5.24e-05, 5.24e-05, 5.24e-05, 5.24e-05, 3393.19287567], [1516584660000, 5.24e-05, 5.246e-05, 5.24e-05, 5.246e-05, 6310.77875624], [1516584720000, 5.246e-05, 5.246e-05, 5.24e-05, 5.246e-05, 4324.4488337], [1516584780000, 5.246e-05, 5.246e-05, 5.246e-05, 5.246e-05, 257.41981942], [1516584840000, 5.244e-05, 5.244e-05, 5.241e-05, 5.242e-05, 16535.43254382], [1516584900000, 5.242e-05, 5.242e-05, 5.242e-05, 5.242e-05, 6385.20703953], [1516584960000, 5.242e-05, 5.242e-05, 5.225e-05, 5.235e-05, 37393.43130397], [1516585020000, 5.242e-05, 5.242e-05, 5.241e-05, 5.241e-05, 1055.33406975], [1516585080000, 5.241e-05, 5.241e-05, 5.24e-05, 5.24e-05, 4521.23061046], [1516585140000, 5.24e-05, 5.242e-05, 5.235e-05, 5.242e-05, 21269.40965473], [1516585200000, 5.242e-05, 5.242e-05, 5.235e-05, 5.235e-05, 7069.1101254], [1516585260000, 5.236e-05, 5.241e-05, 5.235e-05, 5.24e-05, 25889.99616686], [1516585320000, 5.235e-05, 5.24e-05, 5.226e-05, 5.24e-05, 6800.55708518], [1516585380000, 5.23e-05, 5.24e-05, 5.23e-05, 5.24e-05, 8678.25464632], [1516585440000, 5.239e-05, 5.24e-05, 5.23e-05, 5.23e-05, 13654.77405339], [1516585500000, 5.23e-05, 5.23e-05, 5.225e-05, 5.23e-05, 17000.35862131], [1516585560000, 5.23e-05, 5.239e-05, 5.23e-05, 5.239e-05, 5960.50886702], [1516585620000, 5.239e-05, 5.239e-05, 5.225e-05, 5.225e-05, 62910.43055405], [1516585680000, 5.225e-05, 5.231e-05, 5.225e-05, 5.231e-05, 2397.65634853], [1516585740000, 5.231e-05, 5.231e-05, 5.226e-05, 5.226e-05, 3398.52929901], [1516585800000, 5.226e-05, 5.226e-05, 5.225e-05, 5.226e-05, 12063.18773273], [1516585860000, 5.225e-05, 5.231e-05, 5.222e-05, 5.231e-05, 22579.86796908], [1516585920000, 5.231e-05, 5.231e-05, 5.222e-05, 5.223e-05, 8790.67444678], [1516585980000, 5.223e-05, 5.229e-05, 5.222e-05, 5.222e-05, 25864.1624123], [1516586040000, 5.222e-05, 5.222e-05, 5.22e-05, 5.222e-05, 13951.49943338], [1516586100000, 5.222e-05, 5.222e-05, 5.22e-05, 5.222e-05, 1709.58981398], [1516586160000, 5.22e-05, 5.222e-05, 5.22e-05, 5.22e-05, 18190.53961627], [1516586220000, 5.22e-05, 5.222e-05, 5.22e-05, 5.222e-05, 13364.5284007], [1516586280000, 5.222e-05, 5.222e-05, 5.221e-05, 5.222e-05, 6828.51625018], [1516586340000, 5.222e-05, 5.222e-05, 5.222e-05, 5.222e-05, 5831.37173956], [1516586400000, 5.222e-05, 5.222e-05, 5.22e-05, 5.22e-05, 9733.51614378], [1516586460000, 5.222e-05, 5.231e-05, 5.222e-05, 5.231e-05, 21991.08869622], [1516586520000, 5.231e-05, 5.231e-05, 5.222e-05, 5.222e-05, 22919.71530143], [1516586580000, 5.222e-05, 5.222e-05, 5.22e-05, 5.222e-05, 76087.144508], [1516586640000, 5.222e-05, 5.222e-05, 5.22e-05, 5.222e-05, 194165.14481266], [1516586700000, 5.222e-05, 5.222e-05, 5.22e-05, 5.22e-05, 81546.14447113], [1516586760000, 5.22e-05, 5.22e-05, 5.218e-05, 5.219e-05, 9265.45749487], [1516586820000, 5.22e-05, 5.22e-05, 5.218e-05, 5.219e-05, 6927.54835734], [1516586880000, 5.219e-05, 5.22e-05, 5.212e-05, 5.219e-05, 47064.43112765], [1516586940000, 5.219e-05, 5.222e-05, 5.219e-05, 5.222e-05, 31916.80210445], [1516587000000, 5.222e-05, 5.222e-05, 5.218e-05, 5.218e-05, 14039.6884055], [1516587060000, 5.218e-05, 5.222e-05, 5.213e-05, 5.222e-05, 76119.25939793], [1516587120000, 5.219e-05, 5.219e-05, 5.218e-05, 5.218e-05, 8715.39018075], [1516587180000, 5.218e-05, 5.218e-05, 5.215e-05, 5.218e-05, 12689.91310895], [1516587240000, 5.218e-05, 5.222e-05, 5.218e-05, 5.222e-05, 20899.50353844], [1516587300000, 5.22e-05, 5.22e-05, 5.218e-05, 5.22e-05, 14208.61159942], [1516587360000, 5.22e-05, 5.22e-05, 5.218e-05, 5.218e-05, 20353.17980317], [1516587420000, 5.218e-05, 5.218e-05, 5.217e-05, 5.218e-05, 28353.78944418], [1516587480000, 5.218e-05, 5.218e-05, 5.216e-05, 5.216e-05, 5881.05633947], [1516587540000, 5.216e-05, 5.22e-05, 5.216e-05, 5.217e-05, 51241.58458445], [1516587600000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 33842.80014967], [1516587660000, 5.217e-05, 5.217e-05, 5.217e-05, 5.217e-05, 44379.82023152], [1516587720000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 27619.63800279], [1516587780000, 5.217e-05, 5.217e-05, 5.217e-05, 5.217e-05, 15955.70536714], [1516587840000, 5.217e-05, 5.217e-05, 5.215e-05, 5.217e-05, 17769.34112629], [1516587900000, 5.217e-05, 5.217e-05, 5.216e-05, 5.216e-05, 22071.74259862], [1516587960000, 5.217e-05, 5.217e-05, 5.216e-05, 5.216e-05, 35287.18955461], [1516588020000, 5.217e-05, 5.217e-05, 5.199e-05, 5.199e-05, 215639.85669083], [1516588080000, 5.199e-05, 5.2e-05, 5.197e-05, 5.2e-05, 70710.40208067], [1516588140000, 5.2e-05, 5.2e-05, 5.196e-05, 5.2e-05, 27734.03795034], [1516588200000, 5.2e-05, 5.2e-05, 5.199e-05, 5.199e-05, 18441.31991607], [1516588260000, 5.199e-05, 5.2e-05, 5.196e-05, 5.197e-05, 19658.65753482], [1516588320000, 5.196e-05, 5.198e-05, 5.195e-05, 5.198e-05, 23317.36642689], [1516588380000, 5.195e-05, 5.198e-05, 5.193e-05, 5.195e-05, 51255.25889188], [1516588440000, 5.195e-05, 5.195e-05, 5.193e-05, 5.193e-05, 36774.74998231], [1516588500000, 5.192e-05, 5.192e-05, 5.191e-05, 5.191e-05, 10410.64211708], [1516588560000, 5.191e-05, 5.192e-05, 5.191e-05, 5.191e-05, 30571.62081213], [1516588620000, 5.191e-05, 5.192e-05, 5.191e-05, 5.192e-05, 13069.07042304], [1516588680000, 5.192e-05, 5.192e-05, 5.191e-05, 5.192e-05, 11132.52380185], [1516588740000, 5.192e-05, 5.192e-05, 5.19e-05, 5.192e-05, 37535.79756417], [1516588800000, 5.191e-05, 5.192e-05, 5.191e-05, 5.192e-05, 50105.30844945], [1516588860000, 5.192e-05, 5.192e-05, 5.19e-05, 5.192e-05, 14207.38110635], [1516588920000, 5.192e-05, 5.193e-05, 5.192e-05, 5.193e-05, 9827.30631329], [1516588980000, 5.193e-05, 5.193e-05, 5.192e-05, 5.193e-05, 12489.80138482], [1516589040000, 5.192e-05, 5.193e-05, 5.191e-05, 5.192e-05, 135910.13751832], [1516589100000, 5.191e-05, 5.192e-05, 5.191e-05, 5.192e-05, 10555.28467235], [1516589160000, 5.192e-05, 5.193e-05, 5.192e-05, 5.193e-05, 80313.35896022], [1516589220000, 5.192e-05, 5.193e-05, 5.187e-05, 5.193e-05, 66609.24748514], [1516589280000, 5.193e-05, 5.193e-05, 5.191e-05, 5.193e-05, 37442.10031993], [1516589340000, 5.193e-05, 5.193e-05, 5.192e-05, 5.193e-05, 9267.74296686], [1516589400000, 5.193e-05, 5.195e-05, 5.187e-05, 5.194e-05, 18442.36662518], [1516589460000, 5.193e-05, 5.193e-05, 5.185e-05, 5.193e-05, 37633.72508161], [1516589520000, 5.193e-05, 5.193e-05, 5.187e-05, 5.187e-05, 3819.19582213], [1516589580000, 5.19e-05, 5.19e-05, 5.187e-05, 5.19e-05, 42997.95569222], [1516589640000, 5.19e-05, 5.19e-05, 5.183e-05, 5.184e-05, 46831.88446013], [1516589700000, 5.184e-05, 5.19e-05, 5.179e-05, 5.189e-05, 49876.54365024], [1516589760000, 5.189e-05, 5.189e-05, 5.179e-05, 5.187e-05, 42136.93931874], [1516589820000, 5.18e-05, 5.187e-05, 5.174e-05, 5.187e-05, 17132.39342154], [1516589880000, 5.179e-05, 5.187e-05, 5.179e-05, 5.186e-05, 11457.44187741], [1516589940000, 5.186e-05, 5.186e-05, 5.185e-05, 5.186e-05, 8227.58795345], [1516590000000, 5.185e-05, 5.185e-05, 5.177e-05, 5.178e-05, 46250.58744569], [1516590060000, 5.178e-05, 5.18e-05, 5.152e-05, 5.18e-05, 221434.39572757], [1516590120000, 5.18e-05, 5.18e-05, 5.152e-05, 5.18e-05, 19470.9152933], [1516590180000, 5.18e-05, 5.18e-05, 5.159e-05, 5.18e-05, 37441.30194743], [1516590240000, 5.18e-05, 5.18e-05, 5.159e-05, 5.179e-05, 17057.97579106], [1516590300000, 5.179e-05, 5.18e-05, 5.165e-05, 5.179e-05, 5681.91455469], [1516590360000, 5.179e-05, 5.179e-05, 5.17e-05, 5.178e-05, 2579.9711634], [1516590420000, 5.178e-05, 5.18e-05, 5.176e-05, 5.178e-05, 29201.57800569], [1516590480000, 5.179e-05, 5.179e-05, 5.178e-05, 5.178e-05, 68715.60012766], [1516590540000, 5.175e-05, 5.178e-05, 5.175e-05, 5.178e-05, 43933.77741081], [1516590600000, 5.178e-05, 5.178e-05, 5.176e-05, 5.177e-05, 16766.77132095], [1516590660000, 5.177e-05, 5.178e-05, 5.175e-05, 5.178e-05, 32607.29902099], [1516590720000, 5.178e-05, 5.178e-05, 5.175e-05, 5.175e-05, 34069.71235442], [1516590780000, 5.175e-05, 5.177e-05, 5.175e-05, 5.177e-05, 4197.81198016], [1516590840000, 5.177e-05, 5.177e-05, 5.165e-05, 5.165e-05, 39567.85808728], [1516590900000, 5.165e-05, 5.177e-05, 5.163e-05, 5.176e-05, 34466.95571325], [1516590960000, 5.176e-05, 5.176e-05, 5.168e-05, 5.176e-05, 32498.6616412], [1516591020000, 5.175e-05, 5.176e-05, 5.168e-05, 5.176e-05, 28016.31804683], [1516591080000, 5.175e-05, 5.176e-05, 5.168e-05, 5.175e-05, 36372.56193019], [1516591140000, 5.176e-05, 5.176e-05, 5.175e-05, 5.175e-05, 45762.99948575], [1516591200000, 5.175e-05, 5.176e-05, 5.173e-05, 5.176e-05, 23243.99725382], [1516591260000, 5.176e-05, 5.176e-05, 5.173e-05, 5.175e-05, 72554.49592105], [1516591320000, 5.175e-05, 5.175e-05, 5.153e-05, 5.175e-05, 42663.54741363], [1516591380000, 5.175e-05, 5.175e-05, 5.162e-05, 5.175e-05, 42842.90220062], [1516591440000, 5.175e-05, 5.175e-05, 5.163e-05, 5.173e-05, 4844.97243538], [1516591500000, 5.175e-05, 5.175e-05, 5.172e-05, 5.173e-05, 44303.4646391], [1516591560000, 5.173e-05, 5.177e-05, 5.173e-05, 5.177e-05, 69598.60756713], [1516591620000, 5.177e-05, 5.177e-05, 5.173e-05, 5.177e-05, 53331.85937052], [1516591680000, 5.177e-05, 5.177e-05, 5.171e-05, 5.177e-05, 38002.9569697], [1516591740000, 5.171e-05, 5.177e-05, 5.169e-05, 5.177e-05, 51078.92091124], [1516591800000, 5.174e-05, 5.177e-05, 5.174e-05, 5.177e-05, 18221.2156894], [1516591860000, 5.177e-05, 5.177e-05, 5.175e-05, 5.176e-05, 9363.18457945], [1516591920000, 5.176e-05, 5.178e-05, 5.176e-05, 5.177e-05, 22917.22258831], [1516591980000, 5.179e-05, 5.184e-05, 5.179e-05, 5.184e-05, 12020.21637499], [1516592040000, 5.185e-05, 5.2e-05, 5.176e-05, 5.185e-05, 26835.23205321], [1516592100000, 5.185e-05, 5.197e-05, 5.185e-05, 5.197e-05, 1975.97821846], [1516592160000, 5.197e-05, 5.197e-05, 5.193e-05, 5.193e-05, 4093.81611625], [1516592220000, 5.193e-05, 5.194e-05, 5.193e-05, 5.193e-05, 4801.30151014], [1516592280000, 5.188e-05, 5.194e-05, 5.179e-05, 5.186e-05, 17596.8592873], [1516592340000, 5.186e-05, 5.193e-05, 5.158e-05, 5.193e-05, 65899.79645771], [1516592400000, 5.186e-05, 5.186e-05, 5.165e-05, 5.185e-05, 18834.7967169], [1516592460000, 5.185e-05, 5.185e-05, 5.166e-05, 5.184e-05, 11896.45275215], [1516592520000, 5.184e-05, 5.193e-05, 5.183e-05, 5.188e-05, 14158.40799539], [1516592580000, 5.188e-05, 5.203e-05, 5.17e-05, 5.17e-05, 57585.17812103], [1516592640000, 5.195e-05, 5.215e-05, 5.167e-05, 5.215e-05, 63866.31557677], [1516592700000, 5.215e-05, 5.215e-05, 5.158e-05, 5.158e-05, 83856.74407772], [1516592760000, 5.158e-05, 5.193e-05, 5.158e-05, 5.188e-05, 23743.50834889], [1516592820000, 5.188e-05, 5.195e-05, 5.165e-05, 5.179e-05, 31261.41317945], [1516592880000, 5.179e-05, 5.179e-05, 5.174e-05, 5.177e-05, 38724.9354752], [1516592940000, 5.177e-05, 5.188e-05, 5.166e-05, 5.185e-05, 66572.84295866], [1516593000000, 5.17e-05, 5.188e-05, 5.17e-05, 5.171e-05, 70937.94811233], [1516593060000, 5.178e-05, 5.193e-05, 5.171e-05, 5.184e-05, 16585.59101029], [1516593120000, 5.181e-05, 5.2e-05, 5.171e-05, 5.171e-05, 88990.35167128], [1516593180000, 5.197e-05, 5.197e-05, 5.172e-05, 5.192e-05, 35289.51578823], [1516593240000, 5.19e-05, 5.2e-05, 5.18e-05, 5.192e-05, 5650.9535265], [1516593300000, 5.192e-05, 5.192e-05, 5.183e-05, 5.191e-05, 3429.43879462], [1516593360000, 5.191e-05, 5.192e-05, 5.191e-05, 5.192e-05, 65136.95301453], [1516593420000, 5.191e-05, 5.191e-05, 5.189e-05, 5.19e-05, 18810.87889342], [1516593480000, 5.189e-05, 5.19e-05, 5.189e-05, 5.19e-05, 1706.80737954], [1516593540000, 5.19e-05, 5.192e-05, 5.189e-05, 5.192e-05, 11884.49416779], [1516593600000, 5.192e-05, 5.192e-05, 5.163e-05, 5.192e-05, 32960.39467802], [1516593660000, 5.192e-05, 5.192e-05, 5.162e-05, 5.189e-05, 2710.73654391], [1516593720000, 5.189e-05, 5.192e-05, 5.189e-05, 5.192e-05, 32936.82467531], [1516593780000, 5.192e-05, 5.2e-05, 5.192e-05, 5.2e-05, 14008.27446375], [1516593840000, 5.2e-05, 5.2e-05, 5.19e-05, 5.192e-05, 7303.26600445], [1516593900000, 5.197e-05, 5.2e-05, 5.192e-05, 5.199e-05, 12489.32558224], [1516593960000, 5.199e-05, 5.2e-05, 5.199e-05, 5.2e-05, 11453.78028354], [1516594020000, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 378.68901453], [1516594080000, 5.2e-05, 5.2e-05, 5.193e-05, 5.199e-05, 16990.73175158], [1516594140000, 5.199e-05, 5.199e-05, 5.195e-05, 5.199e-05, 1311.22477932], [1516594200000, 5.199e-05, 5.199e-05, 5.197e-05, 5.197e-05, 7808.1358197], [1516594260000, 5.197e-05, 5.199e-05, 5.195e-05, 5.199e-05, 13666.19335462], [1516594320000, 5.199e-05, 5.199e-05, 5.193e-05, 5.199e-05, 14730.97536168], [1516594380000, 5.198e-05, 5.199e-05, 5.193e-05, 5.194e-05, 6712.20104675], [1516594440000, 5.199e-05, 5.199e-05, 5.193e-05, 5.199e-05, 2338.7874235], [1516594500000, 5.196e-05, 5.2e-05, 5.196e-05, 5.2e-05, 25966.22802327], [1516594560000, 5.2e-05, 5.2e-05, 5.199e-05, 5.199e-05, 33384.38747706], [1516594620000, 5.199e-05, 5.2e-05, 5.199e-05, 5.2e-05, 16952.86354351], [1516594680000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 31557.69776881], [1516594740000, 5.2e-05, 5.202e-05, 5.197e-05, 5.202e-05, 341309.83269741], [1516594800000, 5.202e-05, 5.216e-05, 5.202e-05, 5.216e-05, 125439.29194856], [1516594860000, 5.216e-05, 5.217e-05, 5.216e-05, 5.216e-05, 92490.92921538], [1516594920000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 72571.79150204], [1516594980000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 76988.13135027], [1516595040000, 5.217e-05, 5.217e-05, 5.216e-05, 5.216e-05, 36926.09368999], [1516595100000, 5.216e-05, 5.216e-05, 5.215e-05, 5.216e-05, 20320.61685827], [1516595160000, 5.216e-05, 5.216e-05, 5.215e-05, 5.216e-05, 22553.50713269], [1516595220000, 5.217e-05, 5.217e-05, 5.217e-05, 5.217e-05, 590.38545], [1516595280000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 19819.01031851], [1516595340000, 5.216e-05, 5.217e-05, 5.216e-05, 5.216e-05, 32340.64180808], [1516595400000, 5.216e-05, 5.217e-05, 5.216e-05, 5.217e-05, 5013.40879005], [1516595460000, 5.216e-05, 5.217e-05, 5.216e-05, 5.217e-05, 1790.88272535], [1516595520000, 5.217e-05, 5.217e-05, 5.216e-05, 5.216e-05, 4554.02803657], [1516595580000, 5.216e-05, 5.217e-05, 5.215e-05, 5.215e-05, 19420.67777557], [1516595640000, 5.216e-05, 5.217e-05, 5.215e-05, 5.217e-05, 30481.49723295], [1516595700000, 5.215e-05, 5.217e-05, 5.215e-05, 5.216e-05, 10821.19139018], [1516595760000, 5.216e-05, 5.217e-05, 5.2e-05, 5.215e-05, 44216.60703397], [1516595820000, 5.217e-05, 5.217e-05, 5.215e-05, 5.217e-05, 5290.70103135], [1516595880000, 5.217e-05, 5.217e-05, 5.215e-05, 5.217e-05, 14433.98705284], [1516595940000, 5.217e-05, 5.217e-05, 5.215e-05, 5.215e-05, 3059.45543396], [1516596000000, 5.215e-05, 5.217e-05, 5.215e-05, 5.216e-05, 4133.33022601], [1516596060000, 5.216e-05, 5.216e-05, 5.215e-05, 5.215e-05, 20955.23415904], [1516596120000, 5.201e-05, 5.215e-05, 5.201e-05, 5.215e-05, 1859.05029127], [1516596180000, 5.215e-05, 5.215e-05, 5.202e-05, 5.202e-05, 7344.26130166], [1516596240000, 5.214e-05, 5.214e-05, 5.2e-05, 5.2e-05, 16567.73572449], [1516596300000, 5.202e-05, 5.202e-05, 5.2e-05, 5.2e-05, 42287.63972773], [1516596360000, 5.2e-05, 5.2e-05, 5.193e-05, 5.193e-05, 17030.90690338], [1516596420000, 5.195e-05, 5.195e-05, 5.194e-05, 5.195e-05, 24429.40709122], [1516596480000, 5.195e-05, 5.2e-05, 5.194e-05, 5.2e-05, 23872.57663657], [1516596540000, 5.2e-05, 5.2e-05, 5.193e-05, 5.2e-05, 12755.71060395], [1516596600000, 5.194e-05, 5.2e-05, 5.193e-05, 5.2e-05, 14588.05962139], [1516596660000, 5.2e-05, 5.2e-05, 5.196e-05, 5.196e-05, 16691.37130386], [1516596720000, 5.196e-05, 5.197e-05, 5.195e-05, 5.197e-05, 12318.40597801], [1516596780000, 5.197e-05, 5.2e-05, 5.195e-05, 5.197e-05, 21657.60601123], [1516596840000, 5.197e-05, 5.2e-05, 5.197e-05, 5.2e-05, 1142.63007113], [1516596900000, 5.198e-05, 5.2e-05, 5.195e-05, 5.195e-05, 4512.55226979], [1516596960000, 5.2e-05, 5.2e-05, 5.195e-05, 5.2e-05, 6435.76264383], [1516597020000, 5.195e-05, 5.2e-05, 5.195e-05, 5.2e-05, 7522.97183774], [1516597080000, 5.196e-05, 5.2e-05, 5.196e-05, 5.2e-05, 2114.40525671], [1516597140000, 5.2e-05, 5.2e-05, 5.196e-05, 5.196e-05, 14299.15216796], [1516597200000, 5.197e-05, 5.197e-05, 5.193e-05, 5.193e-05, 38879.55140993], [1516597260000, 5.193e-05, 5.195e-05, 5.18e-05, 5.191e-05, 44850.94835673], [1516597320000, 5.191e-05, 5.195e-05, 5.191e-05, 5.193e-05, 4737.74975623], [1516597380000, 5.193e-05, 5.194e-05, 5.18e-05, 5.192e-05, 6398.56370915], [1516597440000, 5.192e-05, 5.192e-05, 5.192e-05, 5.192e-05, 1591.35598057], [1516597500000, 5.192e-05, 5.192e-05, 5.191e-05, 5.191e-05, 7241.39692537], [1516597560000, 5.191e-05, 5.191e-05, 5.19e-05, 5.191e-05, 10717.55699999], [1516597620000, 5.19e-05, 5.19e-05, 5.18e-05, 5.181e-05, 26075.98472885], [1516597680000, 5.181e-05, 5.191e-05, 5.181e-05, 5.191e-05, 8148.64930178], [1516597740000, 5.181e-05, 5.195e-05, 5.18e-05, 5.183e-05, 18551.94025125], [1516597800000, 5.183e-05, 5.195e-05, 5.181e-05, 5.188e-05, 14392.18216327], [1516597860000, 5.195e-05, 5.195e-05, 5.175e-05, 5.18e-05, 25942.74614196], [1516597920000, 5.178e-05, 5.193e-05, 5.175e-05, 5.193e-05, 33175.7007201], [1516597980000, 5.19e-05, 5.193e-05, 5.175e-05, 5.184e-05, 4674.64340721], [1516598040000, 5.184e-05, 5.185e-05, 5.178e-05, 5.185e-05, 21360.70775191], [1516598100000, 5.192e-05, 5.193e-05, 5.185e-05, 5.185e-05, 1544.45035429], [1516598160000, 5.191e-05, 5.191e-05, 5.19e-05, 5.19e-05, 3984.84240997], [1516598220000, 5.189e-05, 5.189e-05, 5.186e-05, 5.189e-05, 4262.53282959], [1516598280000, 5.19e-05, 5.19e-05, 5.187e-05, 5.187e-05, 2226.49263441], [1516598340000, 5.19e-05, 5.19e-05, 5.179e-05, 5.187e-05, 10163.04260385], [1516598400000, 5.187e-05, 5.187e-05, 5.186e-05, 5.187e-05, 4712.82483671], [1516598460000, 5.186e-05, 5.19e-05, 5.186e-05, 5.19e-05, 45790.07390952], [1516598520000, 5.19e-05, 5.19e-05, 5.188e-05, 5.189e-05, 41635.08563929], [1516598580000, 5.189e-05, 5.189e-05, 5.188e-05, 5.189e-05, 20962.98121043], [1516598640000, 5.189e-05, 5.189e-05, 5.175e-05, 5.188e-05, 10577.15306401], [1516598700000, 5.188e-05, 5.189e-05, 5.187e-05, 5.189e-05, 43322.47077522], [1516598760000, 5.189e-05, 5.19e-05, 5.18e-05, 5.19e-05, 28147.88175311], [1516598820000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 2875.70316533], [1516598880000, 5.19e-05, 5.19e-05, 5.188e-05, 5.19e-05, 5304.25529776], [1516598940000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 7159.23281321], [1516599000000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 8287.00530774], [1516599060000, 5.189e-05, 5.19e-05, 5.188e-05, 5.19e-05, 13067.39751973], [1516599120000, 5.19e-05, 5.19e-05, 5.188e-05, 5.189e-05, 21550.30520362], [1516599180000, 5.19e-05, 5.19e-05, 5.19e-05, 5.19e-05, 2046.4585579], [1516599240000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 27505.5732136], [1516599300000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 7827.03737251], [1516599360000, 5.19e-05, 5.19e-05, 5.19e-05, 5.19e-05, 6366.15122922], [1516599420000, 5.19e-05, 5.19e-05, 5.188e-05, 5.188e-05, 2102.79087982], [1516599480000, 5.189e-05, 5.189e-05, 5.188e-05, 5.188e-05, 3144.93794152], [1516599540000, 5.188e-05, 5.188e-05, 5.177e-05, 5.177e-05, 2924.77562464], [1516599600000, 5.177e-05, 5.189e-05, 5.177e-05, 5.188e-05, 2935.03230933], [1516599660000, 5.188e-05, 5.189e-05, 5.177e-05, 5.189e-05, 20651.86329538], [1516599720000, 5.182e-05, 5.185e-05, 5.182e-05, 5.185e-05, 14879.70404148], [1516599780000, 5.185e-05, 5.189e-05, 5.183e-05, 5.183e-05, 13695.28628625], [1516599840000, 5.189e-05, 5.189e-05, 5.183e-05, 5.183e-05, 4271.8952368], [1516599900000, 5.188e-05, 5.188e-05, 5.183e-05, 5.188e-05, 22567.75730571], [1516599960000, 5.183e-05, 5.188e-05, 5.183e-05, 5.183e-05, 83246.62458466], [1516600020000, 5.183e-05, 5.188e-05, 5.183e-05, 5.188e-05, 25136.13011208], [1516600080000, 5.188e-05, 5.188e-05, 5.183e-05, 5.188e-05, 20120.37627612], [1516600140000, 5.184e-05, 5.188e-05, 5.183e-05, 5.188e-05, 20411.60145668], [1516600200000, 5.188e-05, 5.189e-05, 5.184e-05, 5.188e-05, 46072.62178325], [1516600260000, 5.189e-05, 5.189e-05, 5.185e-05, 5.189e-05, 3938.49000236], [1516600320000, 5.189e-05, 5.189e-05, 5.186e-05, 5.188e-05, 22059.54000817], [1516600380000, 5.188e-05, 5.189e-05, 5.186e-05, 5.188e-05, 6624.84537542], [1516600440000, 5.188e-05, 5.189e-05, 5.187e-05, 5.188e-05, 6901.43306275], [1516600500000, 5.188e-05, 5.188e-05, 5.187e-05, 5.188e-05, 4637.72921076], [1516600560000, 5.188e-05, 5.189e-05, 5.187e-05, 5.189e-05, 10246.11873199], [1516600620000, 5.189e-05, 5.189e-05, 5.187e-05, 5.188e-05, 11875.29484453], [1516600680000, 5.188e-05, 5.188e-05, 5.188e-05, 5.188e-05, 8399.90192808], [1516600740000, 5.188e-05, 5.188e-05, 5.187e-05, 5.188e-05, 9663.02446012], [1516600800000, 5.188e-05, 5.189e-05, 5.188e-05, 5.188e-05, 29857.18550317], [1516600860000, 5.189e-05, 5.189e-05, 5.188e-05, 5.189e-05, 59099.09932583], [1516600920000, 5.188e-05, 5.189e-05, 5.188e-05, 5.189e-05, 5432.61768337], [1516600980000, 5.189e-05, 5.189e-05, 5.188e-05, 5.189e-05, 7741.33423013], [1516601040000, 5.189e-05, 5.189e-05, 5.187e-05, 5.187e-05, 53568.1689166], [1516601100000, 5.187e-05, 5.187e-05, 5.184e-05, 5.184e-05, 9539.41555373], [1516601160000, 5.184e-05, 5.189e-05, 5.18e-05, 5.184e-05, 27865.78550887], [1516601220000, 5.184e-05, 5.184e-05, 5.177e-05, 5.177e-05, 4125.58809978], [1516601280000, 5.177e-05, 5.189e-05, 5.177e-05, 5.189e-05, 30336.49891676], [1516601340000, 5.189e-05, 5.189e-05, 5.176e-05, 5.189e-05, 18028.46664193], [1516601400000, 5.189e-05, 5.189e-05, 5.186e-05, 5.188e-05, 6746.93728669], [1516601460000, 5.188e-05, 5.189e-05, 5.182e-05, 5.182e-05, 29576.57697008], [1516601520000, 5.188e-05, 5.188e-05, 5.182e-05, 5.188e-05, 19933.25194351], [1516601580000, 5.183e-05, 5.189e-05, 5.182e-05, 5.185e-05, 62246.58911243], [1516601640000, 5.185e-05, 5.185e-05, 5.185e-05, 5.185e-05, 8347.57365404], [1516601700000, 5.185e-05, 5.185e-05, 5.176e-05, 5.185e-05, 2516.85215452], [1516601760000, 5.185e-05, 5.185e-05, 5.176e-05, 5.18e-05, 16103.32038155], [1516601820000, 5.18e-05, 5.18e-05, 5.176e-05, 5.178e-05, 2525.56797772], [1516601880000, 5.178e-05, 5.18e-05, 5.176e-05, 5.18e-05, 17390.61894728], [1516601940000, 5.18e-05, 5.18e-05, 5.176e-05, 5.176e-05, 8757.24049857], [1516602000000, 5.178e-05, 5.185e-05, 5.169e-05, 5.185e-05, 89107.69392139], [1516602060000, 5.185e-05, 5.185e-05, 5.169e-05, 5.182e-05, 1163.2652051], [1516602120000, 5.182e-05, 5.185e-05, 5.182e-05, 5.185e-05, 2590.14342567], [1516602180000, 5.185e-05, 5.185e-05, 5.184e-05, 5.185e-05, 8450.02824497], [1516602240000, 5.184e-05, 5.185e-05, 5.183e-05, 5.183e-05, 12965.0368005], [1516602300000, 5.182e-05, 5.182e-05, 5.172e-05, 5.172e-05, 3077.89691844], [1516602360000, 5.172e-05, 5.176e-05, 5.172e-05, 5.176e-05, 4293.69136049], [1516602420000, 5.176e-05, 5.177e-05, 5.176e-05, 5.176e-05, 21311.31412004], [1516602480000, 5.172e-05, 5.176e-05, 5.168e-05, 5.176e-05, 35208.50402991], [1516602540000, 5.176e-05, 5.176e-05, 5.168e-05, 5.176e-05, 12585.17496301], [1516602600000, 5.176e-05, 5.176e-05, 5.168e-05, 5.174e-05, 15869.20142087], [1516602660000, 5.174e-05, 5.177e-05, 5.172e-05, 5.177e-05, 9043.99630375], [1516602720000, 5.177e-05, 5.177e-05, 5.174e-05, 5.177e-05, 24825.02377704], [1516602780000, 5.177e-05, 5.177e-05, 5.175e-05, 5.177e-05, 30824.66525449], [1516602840000, 5.177e-05, 5.177e-05, 5.175e-05, 5.177e-05, 11040.94635929], [1516602900000, 5.177e-05, 5.184e-05, 5.177e-05, 5.184e-05, 4238.55915928], [1516602960000, 5.184e-05, 5.185e-05, 5.184e-05, 5.185e-05, 13904.46479448], [1516603020000, 5.184e-05, 5.185e-05, 5.184e-05, 5.184e-05, 2822.26069331], [1516603080000, 5.178e-05, 5.184e-05, 5.178e-05, 5.183e-05, 40433.1067625], [1516603140000, 5.183e-05, 5.189e-05, 5.178e-05, 5.184e-05, 50145.29955826], [1516603200000, 5.184e-05, 5.189e-05, 5.184e-05, 5.189e-05, 32772.40294197], [1516603260000, 5.189e-05, 5.189e-05, 5.179e-05, 5.188e-05, 157856.15448815], [1516603320000, 5.188e-05, 5.189e-05, 5.188e-05, 5.189e-05, 65236.26318209], [1516603380000, 5.189e-05, 5.189e-05, 5.188e-05, 5.189e-05, 8831.56872066], [1516603440000, 5.189e-05, 5.189e-05, 5.188e-05, 5.189e-05, 27483.1429362], [1516603500000, 5.189e-05, 5.189e-05, 5.188e-05, 5.189e-05, 38270.76176078], [1516603560000, 5.188e-05, 5.189e-05, 5.188e-05, 5.189e-05, 17592.89771743], [1516603620000, 5.189e-05, 5.189e-05, 5.189e-05, 5.189e-05, 9683.5628301], [1516603680000, 5.188e-05, 5.189e-05, 5.188e-05, 5.189e-05, 5613.01551871], [1516603740000, 5.189e-05, 5.189e-05, 5.189e-05, 5.189e-05, 8553.32752129], [1516603800000, 5.189e-05, 5.189e-05, 5.189e-05, 5.189e-05, 57353.27855211], [1516603860000, 5.189e-05, 5.189e-05, 5.188e-05, 5.188e-05, 19675.96178321], [1516603920000, 5.189e-05, 5.19e-05, 5.189e-05, 5.19e-05, 86847.19797626], [1516603980000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 82925.64803622], [1516604040000, 5.19e-05, 5.19e-05, 5.188e-05, 5.19e-05, 101336.65138976], [1516604100000, 5.19e-05, 5.195e-05, 5.189e-05, 5.195e-05, 94803.59840935], [1516604160000, 5.195e-05, 5.195e-05, 5.191e-05, 5.191e-05, 17254.09632963], [1516604220000, 5.195e-05, 5.195e-05, 5.191e-05, 5.195e-05, 12268.32331898], [1516604280000, 5.195e-05, 5.195e-05, 5.191e-05, 5.195e-05, 145765.11819427], [1516604340000, 5.195e-05, 5.195e-05, 5.195e-05, 5.195e-05, 47586.91069469], [1516604400000, 5.195e-05, 5.195e-05, 5.193e-05, 5.195e-05, 61866.17654544], [1516604460000, 5.194e-05, 5.2e-05, 5.194e-05, 5.199e-05, 47034.7999041], [1516604520000, 5.199e-05, 5.2e-05, 5.198e-05, 5.2e-05, 38831.39363425], [1516604580000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 84002.46746847], [1516604640000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 131598.72965468], [1516604700000, 5.2e-05, 5.215e-05, 5.2e-05, 5.214e-05, 37654.43200864], [1516604760000, 5.215e-05, 5.215e-05, 5.203e-05, 5.203e-05, 27310.09672498], [1516604820000, 5.214e-05, 5.215e-05, 5.203e-05, 5.214e-05, 36109.03100478], [1516604880000, 5.215e-05, 5.217e-05, 5.214e-05, 5.217e-05, 61396.08029695], [1516604940000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 79927.14123111], [1516605000000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 20042.78090569], [1516605060000, 5.217e-05, 5.217e-05, 5.215e-05, 5.217e-05, 37169.5919446], [1516605120000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 25019.08882596], [1516605180000, 5.217e-05, 5.217e-05, 5.214e-05, 5.217e-05, 33188.43335908], [1516605240000, 5.217e-05, 5.217e-05, 5.216e-05, 5.216e-05, 10250.95065647], [1516605300000, 5.216e-05, 5.217e-05, 5.21e-05, 5.21e-05, 38888.74923335], [1516605360000, 5.217e-05, 5.217e-05, 5.21e-05, 5.216e-05, 9385.06351576], [1516605420000, 5.204e-05, 5.217e-05, 5.204e-05, 5.217e-05, 18640.38621236], [1516605480000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 11715.33695746], [1516605540000, 5.216e-05, 5.217e-05, 5.216e-05, 5.217e-05, 7299.54306265], [1516605600000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 3030.45033617], [1516605660000, 5.217e-05, 5.217e-05, 5.217e-05, 5.217e-05, 4685.17063333], [1516605720000, 5.217e-05, 5.217e-05, 5.215e-05, 5.215e-05, 35350.19515441], [1516605780000, 5.215e-05, 5.216e-05, 5.211e-05, 5.211e-05, 23518.28607978], [1516605840000, 5.211e-05, 5.211e-05, 5.21e-05, 5.211e-05, 35484.72502823], [1516605900000, 5.21e-05, 5.211e-05, 5.21e-05, 5.21e-05, 11278.68944753], [1516605960000, 5.211e-05, 5.211e-05, 5.21e-05, 5.211e-05, 7099.76556453], [1516606020000, 5.211e-05, 5.217e-05, 5.21e-05, 5.21e-05, 18276.08045394], [1516606080000, 5.21e-05, 5.215e-05, 5.199e-05, 5.204e-05, 25382.44525611], [1516606140000, 5.204e-05, 5.216e-05, 5.203e-05, 5.216e-05, 5929.10642737], [1516606200000, 5.214e-05, 5.217e-05, 5.214e-05, 5.217e-05, 29836.4009639], [1516606260000, 5.214e-05, 5.217e-05, 5.214e-05, 5.217e-05, 10251.47348383], [1516606320000, 5.215e-05, 5.215e-05, 5.2e-05, 5.21e-05, 18343.26878361], [1516606380000, 5.21e-05, 5.211e-05, 5.199e-05, 5.199e-05, 18486.19684213], [1516606440000, 5.209e-05, 5.21e-05, 5.184e-05, 5.21e-05, 13149.14263151], [1516606500000, 5.21e-05, 5.21e-05, 5.185e-05, 5.207e-05, 20985.88661443], [1516606560000, 5.208e-05, 5.217e-05, 5.207e-05, 5.217e-05, 31790.35284721], [1516606620000, 5.217e-05, 5.217e-05, 5.21e-05, 5.21e-05, 15437.74687795], [1516606680000, 5.211e-05, 5.211e-05, 5.206e-05, 5.206e-05, 15758.17941565], [1516606740000, 5.206e-05, 5.215e-05, 5.185e-05, 5.2e-05, 42379.49247724], [1516606800000, 5.203e-05, 5.209e-05, 5.186e-05, 5.206e-05, 36974.25759583], [1516606860000, 5.206e-05, 5.206e-05, 5.205e-05, 5.205e-05, 8870.98973702], [1516606920000, 5.205e-05, 5.206e-05, 5.196e-05, 5.206e-05, 35108.11221994], [1516606980000, 5.206e-05, 5.206e-05, 5.205e-05, 5.205e-05, 11119.19817725], [1516607040000, 5.2e-05, 5.208e-05, 5.2e-05, 5.208e-05, 12468.93442867], [1516607100000, 5.209e-05, 5.209e-05, 5.208e-05, 5.208e-05, 6989.54404871], [1516607160000, 5.208e-05, 5.209e-05, 5.206e-05, 5.208e-05, 7275.19143991], [1516607220000, 5.206e-05, 5.206e-05, 5.2e-05, 5.2e-05, 22815.21721513], [1516607280000, 5.2e-05, 5.206e-05, 5.2e-05, 5.204e-05, 2627.06227649], [1516607340000, 5.204e-05, 5.205e-05, 5.204e-05, 5.205e-05, 9451.78369867], [1516607400000, 5.205e-05, 5.205e-05, 5.2e-05, 5.2e-05, 15508.02239003], [1516607460000, 5.196e-05, 5.205e-05, 5.186e-05, 5.2e-05, 10286.20048911], [1516607520000, 5.2e-05, 5.216e-05, 5.2e-05, 5.216e-05, 8354.69959283], [1516607580000, 5.216e-05, 5.216e-05, 5.186e-05, 5.187e-05, 17318.41505501], [1516607640000, 5.187e-05, 5.217e-05, 5.187e-05, 5.217e-05, 206377.98155715], [1516607700000, 5.217e-05, 5.217e-05, 5.212e-05, 5.212e-05, 138102.68458191], [1516607760000, 5.217e-05, 5.217e-05, 5.212e-05, 5.217e-05, 4497.07267185], [1516607820000, 5.217e-05, 5.217e-05, 5.217e-05, 5.217e-05, 2485.70034822], [1516607880000, 5.217e-05, 5.217e-05, 5.212e-05, 5.217e-05, 4684.79953386], [1516607940000, 5.214e-05, 5.217e-05, 5.214e-05, 5.217e-05, 12072.39853639], [1516608000000, 5.217e-05, 5.217e-05, 5.215e-05, 5.215e-05, 2929.98205881], [1516608060000, 5.215e-05, 5.217e-05, 5.212e-05, 5.212e-05, 21633.5012569], [1516608120000, 5.213e-05, 5.217e-05, 5.213e-05, 5.217e-05, 50113.33641284], [1516608180000, 5.217e-05, 5.217e-05, 5.214e-05, 5.217e-05, 59484.94675261], [1516608240000, 5.214e-05, 5.217e-05, 5.213e-05, 5.217e-05, 5009.60573899], [1516608300000, 5.217e-05, 5.217e-05, 5.213e-05, 5.213e-05, 9046.2508392], [1516608360000, 5.213e-05, 5.217e-05, 5.212e-05, 5.216e-05, 73605.01309872], [1516608420000, 5.216e-05, 5.217e-05, 5.216e-05, 5.217e-05, 6703.05767632], [1516608480000, 5.216e-05, 5.217e-05, 5.186e-05, 5.216e-05, 34926.11082893], [1516608540000, 5.216e-05, 5.217e-05, 5.2e-05, 5.2e-05, 8947.83434481], [1516608600000, 5.217e-05, 5.217e-05, 5.2e-05, 5.2e-05, 48405.92290885], [1516608660000, 5.216e-05, 5.216e-05, 5.2e-05, 5.2e-05, 37507.65646413], [1516608720000, 5.2e-05, 5.217e-05, 5.2e-05, 5.216e-05, 28103.11294663], [1516608780000, 5.217e-05, 5.217e-05, 5.213e-05, 5.217e-05, 37653.17519842], [1516608840000, 5.217e-05, 5.217e-05, 5.203e-05, 5.217e-05, 200369.01753852], [1516608900000, 5.217e-05, 5.217e-05, 5.202e-05, 5.217e-05, 87772.56162274], [1516608960000, 5.217e-05, 5.217e-05, 5.202e-05, 5.217e-05, 106241.1549436], [1516609020000, 5.217e-05, 5.217e-05, 5.213e-05, 5.217e-05, 32439.45691807], [1516609080000, 5.217e-05, 5.217e-05, 5.217e-05, 5.217e-05, 37419.17451885], [1516609140000, 5.217e-05, 5.217e-05, 5.217e-05, 5.217e-05, 18254.5051888], [1516609200000, 5.217e-05, 5.217e-05, 5.203e-05, 5.216e-05, 53726.24060243], [1516609260000, 5.216e-05, 5.217e-05, 5.212e-05, 5.217e-05, 100677.19204825], [1516609320000, 5.217e-05, 5.217e-05, 5.216e-05, 5.216e-05, 21636.67413565], [1516609380000, 5.216e-05, 5.217e-05, 5.216e-05, 5.217e-05, 18145.83640811], [1516609440000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 59507.29561113], [1516609500000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 95081.95961205], [1516609560000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 147252.21362146], [1516609620000, 5.217e-05, 5.217e-05, 5.216e-05, 5.216e-05, 191444.72574241], [1516609680000, 5.216e-05, 5.216e-05, 5.216e-05, 5.216e-05, 41224.3905503], [1516609740000, 5.216e-05, 5.217e-05, 5.216e-05, 5.216e-05, 60341.79300483], [1516609800000, 5.217e-05, 5.217e-05, 5.215e-05, 5.216e-05, 24161.43298829], [1516609860000, 5.217e-05, 5.217e-05, 5.215e-05, 5.217e-05, 54091.9956487], [1516609920000, 5.217e-05, 5.217e-05, 5.205e-05, 5.215e-05, 71220.01758543], [1516609980000, 5.215e-05, 5.215e-05, 5.214e-05, 5.215e-05, 25498.29536708], [1516610040000, 5.215e-05, 5.217e-05, 5.214e-05, 5.215e-05, 50060.59544536], [1516610100000, 5.215e-05, 5.217e-05, 5.215e-05, 5.216e-05, 2786.58213672], [1516610160000, 5.216e-05, 5.217e-05, 5.215e-05, 5.216e-05, 27894.11041637], [1516610220000, 5.216e-05, 5.217e-05, 5.215e-05, 5.217e-05, 103054.75004172], [1516610280000, 5.216e-05, 5.217e-05, 5.215e-05, 5.216e-05, 10783.0246674], [1516610340000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 28661.87076556], [1516610400000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 46745.36882347], [1516610460000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 33078.86892189], [1516610520000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 33670.90338103], [1516610580000, 5.217e-05, 5.237e-05, 5.217e-05, 5.22e-05, 382151.81368674], [1516610640000, 5.229e-05, 5.242e-05, 5.219e-05, 5.22e-05, 49607.99875803], [1516610700000, 5.22e-05, 5.22e-05, 5.219e-05, 5.22e-05, 36542.21147445], [1516610760000, 5.22e-05, 5.242e-05, 5.22e-05, 5.231e-05, 5123.16406845], [1516610820000, 5.242e-05, 5.242e-05, 5.241e-05, 5.242e-05, 14950.2597483], [1516610880000, 5.241e-05, 5.242e-05, 5.241e-05, 5.241e-05, 6393.97454308], [1516610940000, 5.236e-05, 5.236e-05, 5.221e-05, 5.222e-05, 5879.89228455], [1516611000000, 5.222e-05, 5.225e-05, 5.218e-05, 5.218e-05, 18856.6517162], [1516611060000, 5.219e-05, 5.234e-05, 5.217e-05, 5.234e-05, 67122.79778694], [1516611120000, 5.234e-05, 5.234e-05, 5.218e-05, 5.231e-05, 5452.71458218], [1516611180000, 5.22e-05, 5.234e-05, 5.218e-05, 5.22e-05, 11128.70362515], [1516611240000, 5.22e-05, 5.234e-05, 5.22e-05, 5.228e-05, 12076.67814598], [1516611300000, 5.228e-05, 5.234e-05, 5.221e-05, 5.234e-05, 6282.1326095], [1516611360000, 5.221e-05, 5.234e-05, 5.221e-05, 5.234e-05, 1485.08147904], [1516611420000, 5.234e-05, 5.234e-05, 5.219e-05, 5.233e-05, 32394.62518498], [1516611480000, 5.225e-05, 5.232e-05, 5.225e-05, 5.232e-05, 885.80004958], [1516611540000, 5.232e-05, 5.234e-05, 5.223e-05, 5.232e-05, 15448.23786041], [1516611600000, 5.232e-05, 5.234e-05, 5.232e-05, 5.233e-05, 15093.17381857], [1516611660000, 5.232e-05, 5.232e-05, 5.219e-05, 5.219e-05, 6375.1166618], [1516611720000, 5.219e-05, 5.232e-05, 5.219e-05, 5.219e-05, 2246.79620737], [1516611780000, 5.219e-05, 5.231e-05, 5.217e-05, 5.217e-05, 44659.63596891], [1516611840000, 5.217e-05, 5.218e-05, 5.217e-05, 5.217e-05, 33320.68431822], [1516611900000, 5.218e-05, 5.227e-05, 5.217e-05, 5.217e-05, 33033.52176366], [1516611960000, 5.217e-05, 5.222e-05, 5.217e-05, 5.218e-05, 61030.66829489], [1516612020000, 5.218e-05, 5.218e-05, 5.214e-05, 5.217e-05, 106364.39589469], [1516612080000, 5.217e-05, 5.217e-05, 5.211e-05, 5.211e-05, 2014.75966135], [1516612140000, 5.211e-05, 5.212e-05, 5.205e-05, 5.21e-05, 15924.64295668], [1516612200000, 5.21e-05, 5.217e-05, 5.206e-05, 5.217e-05, 6321.83072461], [1516612260000, 5.206e-05, 5.217e-05, 5.203e-05, 5.204e-05, 35898.06847582], [1516612320000, 5.204e-05, 5.204e-05, 5.204e-05, 5.204e-05, 5498.76380757], [1516612380000, 5.204e-05, 5.204e-05, 5.203e-05, 5.204e-05, 19685.57495785], [1516612440000, 5.205e-05, 5.209e-05, 5.205e-05, 5.206e-05, 5566.13414575], [1516612500000, 5.205e-05, 5.206e-05, 5.204e-05, 5.204e-05, 25609.41647495], [1516612560000, 5.203e-05, 5.204e-05, 5.203e-05, 5.204e-05, 9256.41559456], [1516612620000, 5.204e-05, 5.204e-05, 5.203e-05, 5.203e-05, 10573.28107072], [1516612680000, 5.203e-05, 5.203e-05, 5.2e-05, 5.2e-05, 56264.51002102], [1516612740000, 5.2e-05, 5.201e-05, 5.2e-05, 5.201e-05, 7326.32359485], [1516612800000, 5.201e-05, 5.202e-05, 5.195e-05, 5.202e-05, 30641.57600348], [1516612860000, 5.202e-05, 5.204e-05, 5.195e-05, 5.195e-05, 92467.14652111], [1516612920000, 5.195e-05, 5.204e-05, 5.191e-05, 5.204e-05, 17573.74539782], [1516612980000, 5.204e-05, 5.204e-05, 5.204e-05, 5.204e-05, 4081.92108964], [1516613040000, 5.204e-05, 5.204e-05, 5.2e-05, 5.2e-05, 3985.20682633], [1516613100000, 5.2e-05, 5.2e-05, 5.193e-05, 5.194e-05, 22622.98639618], [1516613160000, 5.2e-05, 5.2e-05, 5.193e-05, 5.2e-05, 20469.69893213], [1516613220000, 5.2e-05, 5.2e-05, 5.199e-05, 5.199e-05, 9081.04304946], [1516613280000, 5.198e-05, 5.2e-05, 5.197e-05, 5.197e-05, 63002.78365183], [1516613340000, 5.195e-05, 5.197e-05, 5.195e-05, 5.197e-05, 1795.32514743], [1516613400000, 5.197e-05, 5.197e-05, 5.196e-05, 5.196e-05, 10651.04117668], [1516613460000, 5.196e-05, 5.196e-05, 5.195e-05, 5.196e-05, 19199.71307858], [1516613520000, 5.196e-05, 5.196e-05, 5.193e-05, 5.193e-05, 38011.37980643], [1516613580000, 5.195e-05, 5.195e-05, 5.193e-05, 5.194e-05, 36214.94696637], [1516613640000, 5.195e-05, 5.195e-05, 5.194e-05, 5.194e-05, 7711.68258569], [1516613700000, 5.194e-05, 5.195e-05, 5.193e-05, 5.195e-05, 16615.19948282], [1516613760000, 5.195e-05, 5.195e-05, 5.194e-05, 5.195e-05, 44429.61639325], [1516613820000, 5.195e-05, 5.195e-05, 5.194e-05, 5.194e-05, 29238.97231362], [1516613880000, 5.195e-05, 5.197e-05, 5.194e-05, 5.195e-05, 59460.50989875], [1516613940000, 5.195e-05, 5.197e-05, 5.194e-05, 5.197e-05, 21265.3091996], [1516614000000, 5.198e-05, 5.204e-05, 5.197e-05, 5.204e-05, 7682.44274982], [1516614060000, 5.204e-05, 5.204e-05, 5.202e-05, 5.204e-05, 25861.14716353], [1516614120000, 5.204e-05, 5.204e-05, 5.202e-05, 5.204e-05, 15513.75222139], [1516614180000, 5.204e-05, 5.204e-05, 5.204e-05, 5.204e-05, 5393.63227997], [1516614240000, 5.204e-05, 5.204e-05, 5.203e-05, 5.204e-05, 44844.72592669], [1516614300000, 5.204e-05, 5.204e-05, 5.2e-05, 5.203e-05, 54395.78263812], [1516614360000, 5.203e-05, 5.204e-05, 5.2e-05, 5.203e-05, 2839.61545928], [1516614420000, 5.201e-05, 5.203e-05, 5.2e-05, 5.203e-05, 7813.90995806], [1516614480000, 5.2e-05, 5.204e-05, 5.2e-05, 5.204e-05, 8407.98869305], [1516614540000, 5.203e-05, 5.204e-05, 5.203e-05, 5.204e-05, 6420.97759633], [1516614600000, 5.204e-05, 5.205e-05, 5.203e-05, 5.205e-05, 12957.06347159], [1516614660000, 5.205e-05, 5.217e-05, 5.205e-05, 5.217e-05, 2087.45655971], [1516614720000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 4878.19459598], [1516614780000, 5.216e-05, 5.241e-05, 5.216e-05, 5.241e-05, 10321.48652501], [1516614840000, 5.241e-05, 5.241e-05, 5.217e-05, 5.223e-05, 25908.79010838], [1516614900000, 5.223e-05, 5.242e-05, 5.217e-05, 5.242e-05, 25136.03476395], [1516614960000, 5.242e-05, 5.242e-05, 5.223e-05, 5.24e-05, 3968.93050448], [1516615020000, 5.232e-05, 5.232e-05, 5.223e-05, 5.223e-05, 10395.72066383], [1516615080000, 5.223e-05, 5.236e-05, 5.222e-05, 5.236e-05, 30695.52777457], [1516615140000, 5.236e-05, 5.242e-05, 5.236e-05, 5.236e-05, 26647.09925082], [1516615200000, 5.242e-05, 5.242e-05, 5.225e-05, 5.225e-05, 2366.60703485], [1516615260000, 5.225e-05, 5.225e-05, 5.223e-05, 5.223e-05, 6120.73703833], [1516615320000, 5.223e-05, 5.223e-05, 5.222e-05, 5.222e-05, 5918.39742324], [1516615380000, 5.223e-05, 5.23e-05, 5.223e-05, 5.225e-05, 10877.66227283], [1516615440000, 5.23e-05, 5.23e-05, 5.222e-05, 5.225e-05, 4856.40574637], [1516615500000, 5.225e-05, 5.225e-05, 5.222e-05, 5.222e-05, 17647.13375987], [1516615560000, 5.22e-05, 5.222e-05, 5.218e-05, 5.222e-05, 3316.15798248], [1516615620000, 5.222e-05, 5.222e-05, 5.221e-05, 5.222e-05, 14033.82904127], [1516615680000, 5.222e-05, 5.222e-05, 5.221e-05, 5.222e-05, 35906.61705737], [1516615740000, 5.222e-05, 5.242e-05, 5.222e-05, 5.242e-05, 10788.14240017], [1516615800000, 5.241e-05, 5.242e-05, 5.23e-05, 5.23e-05, 29834.07927721], [1516615860000, 5.239e-05, 5.239e-05, 5.223e-05, 5.223e-05, 3351.04769427], [1516615920000, 5.239e-05, 5.24e-05, 5.222e-05, 5.234e-05, 4366.35954294], [1516615980000, 5.234e-05, 5.234e-05, 5.232e-05, 5.232e-05, 6402.98859607], [1516616040000, 5.232e-05, 5.234e-05, 5.2e-05, 5.233e-05, 76330.81136703], [1516616100000, 5.233e-05, 5.241e-05, 5.233e-05, 5.24e-05, 4179.93435772], [1516616160000, 5.239e-05, 5.242e-05, 5.233e-05, 5.239e-05, 52315.26128732], [1516616220000, 5.233e-05, 5.256e-05, 5.233e-05, 5.237e-05, 24397.08805762], [1516616280000, 5.241e-05, 5.259e-05, 5.233e-05, 5.237e-05, 47651.58549133], [1516616340000, 5.235e-05, 5.235e-05, 5.234e-05, 5.235e-05, 3675.50854821], [1516616400000, 5.234e-05, 5.235e-05, 5.23e-05, 5.234e-05, 16102.84388508], [1516616460000, 5.234e-05, 5.234e-05, 5.207e-05, 5.234e-05, 15982.60517342], [1516616520000, 5.207e-05, 5.234e-05, 5.206e-05, 5.234e-05, 23299.88851317], [1516616580000, 5.234e-05, 5.259e-05, 5.207e-05, 5.209e-05, 199061.2279931], [1516616640000, 5.258e-05, 5.258e-05, 5.211e-05, 5.213e-05, 5675.95016931], [1516616700000, 5.22e-05, 5.245e-05, 5.22e-05, 5.244e-05, 4136.26129136], [1516616760000, 5.244e-05, 5.247e-05, 5.223e-05, 5.246e-05, 10979.31363293], [1516616820000, 5.244e-05, 5.245e-05, 5.223e-05, 5.224e-05, 3903.85250936], [1516616880000, 5.224e-05, 5.245e-05, 5.224e-05, 5.245e-05, 318.77627211], [1516616940000, 5.245e-05, 5.245e-05, 5.244e-05, 5.245e-05, 6746.85596436], [1516617000000, 5.244e-05, 5.245e-05, 5.244e-05, 5.245e-05, 4073.94246366], [1516617060000, 5.24e-05, 5.244e-05, 5.227e-05, 5.244e-05, 3041.09254984], [1516617120000, 5.244e-05, 5.244e-05, 5.227e-05, 5.243e-05, 3287.28791649], [1516617180000, 5.243e-05, 5.243e-05, 5.227e-05, 5.243e-05, 3759.55310136], [1516617240000, 5.243e-05, 5.244e-05, 5.227e-05, 5.244e-05, 9363.38320963], [1516617300000, 5.243e-05, 5.245e-05, 5.243e-05, 5.244e-05, 13712.43272755], [1516617360000, 5.244e-05, 5.284e-05, 5.244e-05, 5.276e-05, 118490.29839425], [1516617420000, 5.276e-05, 5.353e-05, 5.276e-05, 5.34e-05, 489950.07284883], [1516617480000, 5.34e-05, 5.375e-05, 5.3e-05, 5.321e-05, 180143.53564755], [1516617540000, 5.324e-05, 5.368e-05, 5.321e-05, 5.368e-05, 85950.24684774], [1516617600000, 5.368e-05, 5.375e-05, 5.324e-05, 5.34e-05, 125645.89030983], [1516617660000, 5.324e-05, 5.357e-05, 5.324e-05, 5.341e-05, 53017.59393027], [1516617720000, 5.341e-05, 5.376e-05, 5.341e-05, 5.355e-05, 78900.56444583], [1516617780000, 5.355e-05, 5.375e-05, 5.354e-05, 5.37e-05, 27185.88761219], [1516617840000, 5.369e-05, 5.37e-05, 5.354e-05, 5.359e-05, 26071.68507718], [1516617900000, 5.368e-05, 5.368e-05, 5.354e-05, 5.354e-05, 30814.75801044], [1516617960000, 5.354e-05, 5.359e-05, 5.345e-05, 5.345e-05, 19767.001361], [1516618020000, 5.345e-05, 5.349e-05, 5.326e-05, 5.326e-05, 33709.02225442], [1516618080000, 5.326e-05, 5.344e-05, 5.325e-05, 5.341e-05, 43730.11780241], [1516618140000, 5.325e-05, 5.345e-05, 5.323e-05, 5.323e-05, 49516.42455292], [1516618200000, 5.323e-05, 5.343e-05, 5.3e-05, 5.343e-05, 20075.70195876], [1516618260000, 5.328e-05, 5.343e-05, 5.328e-05, 5.343e-05, 8332.78006619], [1516618320000, 5.343e-05, 5.343e-05, 5.3e-05, 5.306e-05, 99892.03124861], [1516618380000, 5.331e-05, 5.34e-05, 5.308e-05, 5.339e-05, 13205.69951009], [1516618440000, 5.339e-05, 5.339e-05, 5.331e-05, 5.331e-05, 22092.34339119], [1516618500000, 5.331e-05, 5.338e-05, 5.331e-05, 5.331e-05, 13024.44355556], [1516618560000, 5.331e-05, 5.335e-05, 5.331e-05, 5.335e-05, 8936.15336478], [1516618620000, 5.331e-05, 5.331e-05, 5.331e-05, 5.331e-05, 1771.9620304], [1516618680000, 5.332e-05, 5.332e-05, 5.319e-05, 5.32e-05, 3745.80918553], [1516618740000, 5.32e-05, 5.33e-05, 5.319e-05, 5.319e-05, 16360.26588187], [1516618800000, 5.32e-05, 5.331e-05, 5.319e-05, 5.32e-05, 21840.5127886], [1516618860000, 5.32e-05, 5.32e-05, 5.319e-05, 5.32e-05, 17551.64407124], [1516618920000, 5.33e-05, 5.33e-05, 5.312e-05, 5.319e-05, 16890.72026094], [1516618980000, 5.319e-05, 5.332e-05, 5.306e-05, 5.331e-05, 18566.32541543], [1516619040000, 5.321e-05, 5.331e-05, 5.312e-05, 5.313e-05, 31106.84980144], [1516619100000, 5.313e-05, 5.329e-05, 5.313e-05, 5.313e-05, 6116.96087618], [1516619160000, 5.313e-05, 5.327e-05, 5.313e-05, 5.327e-05, 3612.32626685], [1516619220000, 5.314e-05, 5.327e-05, 5.314e-05, 5.326e-05, 18307.87902243], [1516619280000, 5.326e-05, 5.35e-05, 5.326e-05, 5.35e-05, 247541.05356265], [1516619340000, 5.349e-05, 5.35e-05, 5.335e-05, 5.35e-05, 74887.25217197], [1516619400000, 5.353e-05, 5.37e-05, 5.353e-05, 5.37e-05, 146279.33751813], [1516619460000, 5.37e-05, 5.397e-05, 5.363e-05, 5.394e-05, 212046.69197763], [1516619520000, 5.394e-05, 5.398e-05, 5.39e-05, 5.397e-05, 48707.54257993], [1516619580000, 5.397e-05, 5.399e-05, 5.397e-05, 5.398e-05, 62658.97804717], [1516619640000, 5.397e-05, 5.398e-05, 5.39e-05, 5.39e-05, 30111.35815321], [1516619700000, 5.39e-05, 5.398e-05, 5.363e-05, 5.39e-05, 35293.45996678], [1516619760000, 5.371e-05, 5.371e-05, 5.363e-05, 5.364e-05, 13647.47662808], [1516619820000, 5.364e-05, 5.369e-05, 5.364e-05, 5.364e-05, 4686.35992145], [1516619880000, 5.369e-05, 5.37e-05, 5.364e-05, 5.364e-05, 14148.03072506], [1516619940000, 5.364e-05, 5.364e-05, 5.338e-05, 5.34e-05, 13559.02901234], [1516620000000, 5.338e-05, 5.34e-05, 5.337e-05, 5.337e-05, 10166.20517903], [1516620060000, 5.337e-05, 5.36e-05, 5.337e-05, 5.354e-05, 16199.10421338], [1516620120000, 5.354e-05, 5.354e-05, 5.35e-05, 5.354e-05, 11198.13023752], [1516620180000, 5.35e-05, 5.354e-05, 5.343e-05, 5.343e-05, 11836.14617215], [1516620240000, 5.343e-05, 5.348e-05, 5.342e-05, 5.343e-05, 13354.41505833], [1516620300000, 5.343e-05, 5.348e-05, 5.326e-05, 5.326e-05, 33726.18033793], [1516620360000, 5.326e-05, 5.348e-05, 5.326e-05, 5.348e-05, 30861.95059748], [1516620420000, 5.34e-05, 5.34e-05, 5.327e-05, 5.327e-05, 2727.22603325], [1516620480000, 5.327e-05, 5.35e-05, 5.314e-05, 5.32e-05, 46331.35505979], [1516620540000, 5.32e-05, 5.34e-05, 5.313e-05, 5.34e-05, 38465.87670108], [1516620600000, 5.303e-05, 5.338e-05, 5.303e-05, 5.303e-05, 4656.53519927], [1516620660000, 5.301e-05, 5.303e-05, 5.274e-05, 5.275e-05, 32423.64641568], [1516620720000, 5.275e-05, 5.322e-05, 5.274e-05, 5.322e-05, 58181.40973097], [1516620780000, 5.322e-05, 5.329e-05, 5.289e-05, 5.289e-05, 9580.02756647], [1516620840000, 5.289e-05, 5.29e-05, 5.289e-05, 5.289e-05, 3031.73731981], [1516620900000, 5.29e-05, 5.307e-05, 5.29e-05, 5.3e-05, 32776.53499119], [1516620960000, 5.3e-05, 5.303e-05, 5.3e-05, 5.302e-05, 2314.42011072], [1516621020000, 5.302e-05, 5.304e-05, 5.29e-05, 5.299e-05, 27853.16968227], [1516621080000, 5.29e-05, 5.307e-05, 5.29e-05, 5.3e-05, 13698.84914625], [1516621140000, 5.299e-05, 5.3e-05, 5.291e-05, 5.299e-05, 5644.82898172], [1516621200000, 5.299e-05, 5.3e-05, 5.291e-05, 5.3e-05, 19219.52011109], [1516621260000, 5.291e-05, 5.3e-05, 5.291e-05, 5.299e-05, 9819.53159519], [1516621320000, 5.299e-05, 5.305e-05, 5.296e-05, 5.305e-05, 38249.83154399], [1516621380000, 5.305e-05, 5.32e-05, 5.292e-05, 5.301e-05, 16777.38276744], [1516621440000, 5.294e-05, 5.301e-05, 5.294e-05, 5.301e-05, 3193.01180783], [1516621500000, 5.295e-05, 5.301e-05, 5.292e-05, 5.295e-05, 58441.47569962], [1516621560000, 5.3e-05, 5.3e-05, 5.295e-05, 5.3e-05, 37690.69704086], [1516621620000, 5.3e-05, 5.3e-05, 5.295e-05, 5.295e-05, 5139.2450692], [1516621680000, 5.295e-05, 5.295e-05, 5.273e-05, 5.282e-05, 36388.48140246], [1516621740000, 5.273e-05, 5.28e-05, 5.272e-05, 5.272e-05, 13851.78561836], [1516621800000, 5.272e-05, 5.273e-05, 5.272e-05, 5.273e-05, 6520.78394873], [1516621860000, 5.272e-05, 5.28e-05, 5.265e-05, 5.28e-05, 34449.25796517], [1516621920000, 5.28e-05, 5.293e-05, 5.28e-05, 5.28e-05, 12385.05381941], [1516621980000, 5.279e-05, 5.28e-05, 5.279e-05, 5.28e-05, 77304.16311089], [1516622040000, 5.28e-05, 5.293e-05, 5.28e-05, 5.293e-05, 1161.73150389], [1516622100000, 5.292e-05, 5.293e-05, 5.282e-05, 5.282e-05, 1082.6041937], [1516622160000, 5.292e-05, 5.293e-05, 5.28e-05, 5.293e-05, 3742.02766778], [1516622220000, 5.292e-05, 5.293e-05, 5.28e-05, 5.292e-05, 4447.65826662], [1516622280000, 5.293e-05, 5.293e-05, 5.267e-05, 5.267e-05, 162529.50752847], [1516622340000, 5.273e-05, 5.273e-05, 5.267e-05, 5.273e-05, 22347.44596249], [1516622400000, 5.273e-05, 5.273e-05, 5.23e-05, 5.244e-05, 57571.27339304], [1516622460000, 5.244e-05, 5.268e-05, 5.211e-05, 5.245e-05, 30670.7833301], [1516622520000, 5.267e-05, 5.285e-05, 5.245e-05, 5.245e-05, 33327.74176387], [1516622580000, 5.273e-05, 5.273e-05, 5.245e-05, 5.245e-05, 1868.78672191], [1516622640000, 5.269e-05, 5.293e-05, 5.245e-05, 5.293e-05, 36529.57943027], [1516622700000, 5.288e-05, 5.288e-05, 5.248e-05, 5.273e-05, 7619.22735849], [1516622760000, 5.273e-05, 5.273e-05, 5.27e-05, 5.273e-05, 3184.85730231], [1516622820000, 5.273e-05, 5.273e-05, 5.248e-05, 5.248e-05, 10104.82270979], [1516622880000, 5.273e-05, 5.273e-05, 5.248e-05, 5.273e-05, 1388.90461986], [1516622940000, 5.273e-05, 5.273e-05, 5.266e-05, 5.266e-05, 404.4469579], [1516623000000, 5.266e-05, 5.273e-05, 5.266e-05, 5.273e-05, 3565.24541581], [1516623060000, 5.271e-05, 5.273e-05, 5.251e-05, 5.266e-05, 4865.96868338], [1516623120000, 5.266e-05, 5.266e-05, 5.252e-05, 5.266e-05, 4721.25032043], [1516623180000, 5.266e-05, 5.272e-05, 5.252e-05, 5.271e-05, 9703.29660871], [1516623240000, 5.271e-05, 5.271e-05, 5.255e-05, 5.256e-05, 7166.42294551], [1516623300000, 5.255e-05, 5.256e-05, 5.255e-05, 5.255e-05, 44117.25576717], [1516623360000, 5.256e-05, 5.256e-05, 5.247e-05, 5.256e-05, 61484.57560294], [1516623420000, 5.256e-05, 5.27e-05, 5.256e-05, 5.27e-05, 3852.9714448], [1516623480000, 5.256e-05, 5.267e-05, 5.253e-05, 5.253e-05, 4826.84627842], [1516623540000, 5.253e-05, 5.27e-05, 5.253e-05, 5.27e-05, 3350.29480216], [1516623600000, 5.267e-05, 5.273e-05, 5.25e-05, 5.273e-05, 47914.72497539], [1516623660000, 5.267e-05, 5.273e-05, 5.251e-05, 5.251e-05, 12582.45502588], [1516623720000, 5.251e-05, 5.273e-05, 5.251e-05, 5.251e-05, 9567.40476509], [1516623780000, 5.26e-05, 5.273e-05, 5.25e-05, 5.27e-05, 16476.50687335], [1516623840000, 5.27e-05, 5.273e-05, 5.27e-05, 5.271e-05, 1773.2053552], [1516623900000, 5.271e-05, 5.271e-05, 5.251e-05, 5.27e-05, 15922.91410178], [1516623960000, 5.27e-05, 5.271e-05, 5.27e-05, 5.271e-05, 22022.45285779], [1516624020000, 5.27e-05, 5.271e-05, 5.27e-05, 5.27e-05, 27549.54081156], [1516624080000, 5.27e-05, 5.27e-05, 5.25e-05, 5.25e-05, 14294.31034542], [1516624140000, 5.25e-05, 5.268e-05, 5.238e-05, 5.267e-05, 33278.75501504], [1516624200000, 5.252e-05, 5.266e-05, 5.24e-05, 5.252e-05, 5027.84230461], [1516624260000, 5.24e-05, 5.252e-05, 5.22e-05, 5.251e-05, 39908.68714671], [1516624320000, 5.219e-05, 5.252e-05, 5.216e-05, 5.252e-05, 26307.84156666], [1516624380000, 5.252e-05, 5.252e-05, 5.218e-05, 5.252e-05, 95839.5534838], [1516624440000, 5.25e-05, 5.27e-05, 5.25e-05, 5.27e-05, 54544.87044235], [1516624500000, 5.27e-05, 5.273e-05, 5.257e-05, 5.27e-05, 74449.46059956], [1516624560000, 5.27e-05, 5.273e-05, 5.254e-05, 5.272e-05, 9518.24540052], [1516624620000, 5.272e-05, 5.273e-05, 5.272e-05, 5.273e-05, 692.80767081], [1516624680000, 5.273e-05, 5.273e-05, 5.272e-05, 5.273e-05, 5491.57494807], [1516624740000, 5.272e-05, 5.272e-05, 5.27e-05, 5.27e-05, 5675.36815437], [1516624800000, 5.271e-05, 5.273e-05, 5.253e-05, 5.253e-05, 21297.50664613], [1516624860000, 5.27e-05, 5.27e-05, 5.253e-05, 5.27e-05, 11280.07516293], [1516624920000, 5.27e-05, 5.27e-05, 5.26e-05, 5.26e-05, 4627.34878798], [1516624980000, 5.26e-05, 5.27e-05, 5.26e-05, 5.26e-05, 2576.99484752], [1516625040000, 5.254e-05, 5.26e-05, 5.253e-05, 5.255e-05, 13579.19604908], [1516625100000, 5.255e-05, 5.26e-05, 5.255e-05, 5.26e-05, 8961.61805973], [1516625160000, 5.255e-05, 5.255e-05, 5.252e-05, 5.254e-05, 8310.90223921], [1516625220000, 5.254e-05, 5.254e-05, 5.252e-05, 5.254e-05, 2186.39375947], [1516625280000, 5.254e-05, 5.254e-05, 5.252e-05, 5.252e-05, 2167.14483518], [1516625340000, 5.251e-05, 5.252e-05, 5.247e-05, 5.252e-05, 12086.89192778], [1516625400000, 5.252e-05, 5.254e-05, 5.25e-05, 5.25e-05, 24205.44342128], [1516625460000, 5.25e-05, 5.252e-05, 5.248e-05, 5.251e-05, 4537.71953173], [1516625520000, 5.25e-05, 5.25e-05, 5.248e-05, 5.248e-05, 36585.93201537], [1516625580000, 5.248e-05, 5.252e-05, 5.248e-05, 5.252e-05, 31946.58391787], [1516625640000, 5.252e-05, 5.26e-05, 5.251e-05, 5.251e-05, 6706.64490864], [1516625700000, 5.251e-05, 5.26e-05, 5.251e-05, 5.26e-05, 195.11571761], [1516625760000, 5.26e-05, 5.26e-05, 5.247e-05, 5.247e-05, 69119.55290117], [1516625820000, 5.247e-05, 5.26e-05, 5.247e-05, 5.26e-05, 6540.93586698], [1516625880000, 5.26e-05, 5.26e-05, 5.248e-05, 5.25e-05, 9606.65301705], [1516625940000, 5.25e-05, 5.25e-05, 5.248e-05, 5.248e-05, 2638.81800796], [1516626000000, 5.248e-05, 5.259e-05, 5.248e-05, 5.257e-05, 8338.83698489], [1516626060000, 5.251e-05, 5.257e-05, 5.221e-05, 5.221e-05, 67738.65109341], [1516626120000, 5.246e-05, 5.246e-05, 5.22e-05, 5.222e-05, 7487.23356913], [1516626180000, 5.221e-05, 5.222e-05, 5.218e-05, 5.218e-05, 30155.24056446], [1516626240000, 5.222e-05, 5.256e-05, 5.218e-05, 5.227e-05, 13176.93907053], [1516626300000, 5.227e-05, 5.227e-05, 5.217e-05, 5.227e-05, 27023.38170557], [1516626360000, 5.217e-05, 5.227e-05, 5.217e-05, 5.223e-05, 11756.69988869], [1516626420000, 5.227e-05, 5.227e-05, 5.225e-05, 5.227e-05, 16801.25779557], [1516626480000, 5.227e-05, 5.227e-05, 5.225e-05, 5.225e-05, 13391.89774625], [1516626540000, 5.227e-05, 5.227e-05, 5.218e-05, 5.225e-05, 13736.24222664], [1516626600000, 5.225e-05, 5.225e-05, 5.206e-05, 5.22e-05, 63824.3293634], [1516626660000, 5.22e-05, 5.227e-05, 5.206e-05, 5.22e-05, 25663.37679604], [1516626720000, 5.22e-05, 5.227e-05, 5.22e-05, 5.22e-05, 17789.39070018], [1516626780000, 5.21e-05, 5.21e-05, 5.162e-05, 5.2e-05, 131119.06867154], [1516626840000, 5.199e-05, 5.2e-05, 5.173e-05, 5.174e-05, 50913.62604461], [1516626900000, 5.174e-05, 5.198e-05, 5.166e-05, 5.198e-05, 25482.72480847], [1516626960000, 5.191e-05, 5.198e-05, 5.174e-05, 5.198e-05, 140446.13374225], [1516627020000, 5.19e-05, 5.22e-05, 5.19e-05, 5.22e-05, 10566.31470813], [1516627080000, 5.199e-05, 5.21e-05, 5.19e-05, 5.19e-05, 9147.15255361], [1516627140000, 5.199e-05, 5.199e-05, 5.18e-05, 5.18e-05, 5840.40013434], [1516627200000, 5.18e-05, 5.19e-05, 5.161e-05, 5.168e-05, 64189.50636811], [1516627260000, 5.181e-05, 5.19e-05, 5.167e-05, 5.19e-05, 33130.4186078], [1516627320000, 5.19e-05, 5.21e-05, 5.17e-05, 5.187e-05, 25995.49659507], [1516627380000, 5.188e-05, 5.22e-05, 5.187e-05, 5.203e-05, 14518.07573995], [1516627440000, 5.203e-05, 5.22e-05, 5.203e-05, 5.215e-05, 5659.19929216], [1516627500000, 5.22e-05, 5.22e-05, 5.21e-05, 5.218e-05, 8895.02891535], [1516627560000, 5.22e-05, 5.22e-05, 5.2e-05, 5.2e-05, 40888.44864211], [1516627620000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 24735.83868305], [1516627680000, 5.2e-05, 5.209e-05, 5.2e-05, 5.2e-05, 65409.98187545], [1516627740000, 5.209e-05, 5.209e-05, 5.2e-05, 5.2e-05, 49921.55671664], [1516627800000, 5.2e-05, 5.2e-05, 5.163e-05, 5.199e-05, 33781.61295479], [1516627860000, 5.169e-05, 5.219e-05, 5.169e-05, 5.219e-05, 48638.97212372], [1516627920000, 5.219e-05, 5.219e-05, 5.198e-05, 5.205e-05, 3770.38111652], [1516627980000, 5.215e-05, 5.215e-05, 5.2e-05, 5.201e-05, 7660.26805517], [1516628040000, 5.205e-05, 5.205e-05, 5.198e-05, 5.205e-05, 72959.8070582], [1516628100000, 5.205e-05, 5.216e-05, 5.17e-05, 5.215e-05, 45059.64641334], [1516628160000, 5.215e-05, 5.216e-05, 5.215e-05, 5.215e-05, 10425.97070902], [1516628220000, 5.189e-05, 5.215e-05, 5.17e-05, 5.189e-05, 41707.49923045], [1516628280000, 5.189e-05, 5.21e-05, 5.189e-05, 5.19e-05, 31895.99015218], [1516628340000, 5.19e-05, 5.209e-05, 5.19e-05, 5.208e-05, 11095.59571453], [1516628400000, 5.19e-05, 5.208e-05, 5.189e-05, 5.19e-05, 16294.15757592], [1516628460000, 5.19e-05, 5.208e-05, 5.19e-05, 5.191e-05, 12415.36093996], [1516628520000, 5.191e-05, 5.214e-05, 5.189e-05, 5.214e-05, 56852.50493805], [1516628580000, 5.192e-05, 5.212e-05, 5.191e-05, 5.209e-05, 50298.00072495], [1516628640000, 5.209e-05, 5.219e-05, 5.202e-05, 5.209e-05, 88632.97005285], [1516628700000, 5.209e-05, 5.219e-05, 5.2e-05, 5.212e-05, 23325.69453673], [1516628760000, 5.212e-05, 5.212e-05, 5.189e-05, 5.189e-05, 79169.4827176], [1516628820000, 5.189e-05, 5.212e-05, 5.189e-05, 5.197e-05, 29651.87698178], [1516628880000, 5.197e-05, 5.211e-05, 5.195e-05, 5.197e-05, 23001.8673951], [1516628940000, 5.197e-05, 5.2e-05, 5.195e-05, 5.198e-05, 75391.65250614], [1516629000000, 5.198e-05, 5.212e-05, 5.189e-05, 5.205e-05, 37516.1701965], [1516629060000, 5.2e-05, 5.219e-05, 5.189e-05, 5.2e-05, 173734.86698248], [1516629120000, 5.201e-05, 5.215e-05, 5.201e-05, 5.215e-05, 21204.70720735], [1516629180000, 5.215e-05, 5.215e-05, 5.2e-05, 5.21e-05, 25387.20132158], [1516629240000, 5.21e-05, 5.22e-05, 5.21e-05, 5.21e-05, 65294.52618791], [1516629300000, 5.21e-05, 5.248e-05, 5.193e-05, 5.242e-05, 234707.46665718], [1516629360000, 5.195e-05, 5.224e-05, 5.195e-05, 5.196e-05, 28864.06650403], [1516629420000, 5.224e-05, 5.24e-05, 5.196e-05, 5.216e-05, 45496.42822464], [1516629480000, 5.216e-05, 5.23e-05, 5.199e-05, 5.224e-05, 13716.01926482], [1516629540000, 5.2e-05, 5.23e-05, 5.2e-05, 5.225e-05, 53060.10750669], [1516629600000, 5.225e-05, 5.225e-05, 5.224e-05, 5.224e-05, 27167.79453273], [1516629660000, 5.224e-05, 5.227e-05, 5.224e-05, 5.225e-05, 24131.74979271], [1516629720000, 5.225e-05, 5.23e-05, 5.22e-05, 5.22e-05, 107914.13851769], [1516629780000, 5.22e-05, 5.23e-05, 5.19e-05, 5.206e-05, 137335.14879146], [1516629840000, 5.207e-05, 5.24e-05, 5.189e-05, 5.21e-05, 79157.7626015], [1516629900000, 5.229e-05, 5.24e-05, 5.2e-05, 5.24e-05, 96841.87067691], [1516629960000, 5.201e-05, 5.239e-05, 5.201e-05, 5.227e-05, 3998.26228562], [1516630020000, 5.227e-05, 5.238e-05, 5.201e-05, 5.237e-05, 19308.38524515], [1516630080000, 5.237e-05, 5.237e-05, 5.202e-05, 5.233e-05, 41503.41039992], [1516630140000, 5.233e-05, 5.242e-05, 5.233e-05, 5.234e-05, 122751.81570368], [1516630200000, 5.238e-05, 5.239e-05, 5.234e-05, 5.234e-05, 5836.48078714], [1516630260000, 5.235e-05, 5.235e-05, 5.233e-05, 5.233e-05, 4128.75316959], [1516630320000, 5.231e-05, 5.233e-05, 5.2e-05, 5.232e-05, 55112.79425029], [1516630380000, 5.232e-05, 5.234e-05, 5.213e-05, 5.213e-05, 12929.16835491], [1516630440000, 5.232e-05, 5.233e-05, 5.213e-05, 5.223e-05, 8208.12518718], [1516630500000, 5.223e-05, 5.233e-05, 5.205e-05, 5.205e-05, 13797.19955146], [1516630560000, 5.205e-05, 5.21e-05, 5.203e-05, 5.205e-05, 22097.54252308], [1516630620000, 5.205e-05, 5.223e-05, 5.203e-05, 5.21e-05, 17054.41668113], [1516630680000, 5.21e-05, 5.21e-05, 5.204e-05, 5.206e-05, 16647.38073376], [1516630740000, 5.206e-05, 5.223e-05, 5.206e-05, 5.223e-05, 1384.89658817], [1516630800000, 5.207e-05, 5.23e-05, 5.207e-05, 5.23e-05, 66048.04696224], [1516630860000, 5.229e-05, 5.235e-05, 5.209e-05, 5.235e-05, 37668.51629557], [1516630920000, 5.221e-05, 5.24e-05, 5.221e-05, 5.235e-05, 61631.87802564], [1516630980000, 5.235e-05, 5.24e-05, 5.235e-05, 5.235e-05, 15104.33847041], [1516631040000, 5.235e-05, 5.242e-05, 5.235e-05, 5.239e-05, 33655.5706816], [1516631100000, 5.239e-05, 5.239e-05, 5.236e-05, 5.238e-05, 17472.93168267], [1516631160000, 5.236e-05, 5.238e-05, 5.207e-05, 5.237e-05, 15727.11646072], [1516631220000, 5.236e-05, 5.236e-05, 5.208e-05, 5.235e-05, 2899.04045038], [1516631280000, 5.235e-05, 5.235e-05, 5.235e-05, 5.235e-05, 1982.33334407], [1516631340000, 5.235e-05, 5.235e-05, 5.2e-05, 5.234e-05, 33007.2069699], [1516631400000, 5.224e-05, 5.236e-05, 5.183e-05, 5.236e-05, 71111.00947624], [1516631460000, 5.233e-05, 5.235e-05, 5.19e-05, 5.234e-05, 5319.57779756], [1516631520000, 5.234e-05, 5.234e-05, 5.209e-05, 5.209e-05, 11620.16153011], [1516631580000, 5.211e-05, 5.235e-05, 5.21e-05, 5.21e-05, 20540.62750659], [1516631640000, 5.21e-05, 5.234e-05, 5.21e-05, 5.212e-05, 14321.70372197], [1516631700000, 5.233e-05, 5.234e-05, 5.215e-05, 5.215e-05, 8280.35671877], [1516631760000, 5.233e-05, 5.234e-05, 5.211e-05, 5.233e-05, 12347.90128677], [1516631820000, 5.233e-05, 5.234e-05, 5.233e-05, 5.234e-05, 4201.98444766], [1516631880000, 5.233e-05, 5.233e-05, 5.233e-05, 5.233e-05, 805.1420719], [1516631940000, 5.233e-05, 5.234e-05, 5.225e-05, 5.234e-05, 19777.20272536], [1516632000000, 5.233e-05, 5.234e-05, 5.22e-05, 5.22e-05, 35676.63292255], [1516632060000, 5.214e-05, 5.22e-05, 5.214e-05, 5.22e-05, 11529.36072954], [1516632120000, 5.22e-05, 5.22e-05, 5.215e-05, 5.216e-05, 23549.39843609], [1516632180000, 5.217e-05, 5.217e-05, 5.216e-05, 5.216e-05, 13777.90423969], [1516632240000, 5.217e-05, 5.22e-05, 5.217e-05, 5.22e-05, 7358.59097027], [1516632300000, 5.22e-05, 5.234e-05, 5.216e-05, 5.218e-05, 11510.72406853], [1516632360000, 5.218e-05, 5.233e-05, 5.218e-05, 5.22e-05, 4695.34056754], [1516632420000, 5.22e-05, 5.228e-05, 5.215e-05, 5.228e-05, 100455.16031573], [1516632480000, 5.227e-05, 5.229e-05, 5.227e-05, 5.229e-05, 9527.68004615], [1516632540000, 5.229e-05, 5.229e-05, 5.228e-05, 5.228e-05, 26453.8797508], [1516632600000, 5.228e-05, 5.229e-05, 5.228e-05, 5.229e-05, 14229.76180267], [1516632660000, 5.229e-05, 5.232e-05, 5.229e-05, 5.229e-05, 1146.47411404], [1516632720000, 5.229e-05, 5.232e-05, 5.229e-05, 5.229e-05, 5332.04590525], [1516632780000, 5.232e-05, 5.232e-05, 5.229e-05, 5.229e-05, 21156.19898851], [1516632840000, 5.229e-05, 5.229e-05, 5.228e-05, 5.229e-05, 6468.00081715], [1516632900000, 5.228e-05, 5.229e-05, 5.215e-05, 5.227e-05, 55236.12332005], [1516632960000, 5.215e-05, 5.225e-05, 5.215e-05, 5.225e-05, 1373.7026901], [1516633020000, 5.216e-05, 5.225e-05, 5.211e-05, 5.211e-05, 20412.26497261], [1516633080000, 5.211e-05, 5.227e-05, 5.211e-05, 5.224e-05, 70440.64347671], [1516633140000, 5.211e-05, 5.224e-05, 5.211e-05, 5.211e-05, 9298.41947785], [1516633200000, 5.211e-05, 5.226e-05, 5.211e-05, 5.226e-05, 58672.56068826], [1516633260000, 5.214e-05, 5.229e-05, 5.214e-05, 5.226e-05, 15132.54850426], [1516633320000, 5.215e-05, 5.228e-05, 5.215e-05, 5.216e-05, 6045.72846812], [1516633380000, 5.216e-05, 5.225e-05, 5.216e-05, 5.216e-05, 5770.62224367], [1516633440000, 5.216e-05, 5.224e-05, 5.21e-05, 5.211e-05, 12023.21844354], [1516633500000, 5.211e-05, 5.224e-05, 5.21e-05, 5.21e-05, 21770.4837095], [1516633560000, 5.21e-05, 5.224e-05, 5.21e-05, 5.21e-05, 19096.90570381], [1516633620000, 5.21e-05, 5.21e-05, 5.2e-05, 5.2e-05, 52546.45860097], [1516633680000, 5.2e-05, 5.205e-05, 5.2e-05, 5.205e-05, 23700.0044207], [1516633740000, 5.205e-05, 5.205e-05, 5.2e-05, 5.2e-05, 18468.92838852], [1516633800000, 5.2e-05, 5.2e-05, 5.191e-05, 5.193e-05, 10634.29156888], [1516633860000, 5.193e-05, 5.193e-05, 5.19e-05, 5.191e-05, 89595.83506799], [1516633920000, 5.191e-05, 5.2e-05, 5.19e-05, 5.2e-05, 60264.72274895], [1516633980000, 5.2e-05, 5.211e-05, 5.196e-05, 5.2e-05, 37491.34211572], [1516634040000, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 33533.26497321], [1516634100000, 5.2e-05, 5.208e-05, 5.192e-05, 5.193e-05, 7747.04314185], [1516634160000, 5.194e-05, 5.208e-05, 5.193e-05, 5.194e-05, 4636.5656664], [1516634220000, 5.194e-05, 5.207e-05, 5.194e-05, 5.194e-05, 5890.70455776], [1516634280000, 5.194e-05, 5.211e-05, 5.194e-05, 5.21e-05, 70153.37915976], [1516634340000, 5.204e-05, 5.224e-05, 5.204e-05, 5.204e-05, 15351.47544173], [1516634400000, 5.204e-05, 5.204e-05, 5.204e-05, 5.204e-05, 5684.03842057], [1516634460000, 5.204e-05, 5.205e-05, 5.204e-05, 5.205e-05, 34250.3655076], [1516634520000, 5.223e-05, 5.223e-05, 5.205e-05, 5.205e-05, 4013.607654], [1516634580000, 5.218e-05, 5.218e-05, 5.205e-05, 5.206e-05, 6129.25048149], [1516634640000, 5.206e-05, 5.218e-05, 5.205e-05, 5.207e-05, 27250.73846787], [1516634700000, 5.206e-05, 5.213e-05, 5.205e-05, 5.207e-05, 23583.94078167], [1516634760000, 5.207e-05, 5.214e-05, 5.207e-05, 5.214e-05, 10614.90862957], [1516634820000, 5.207e-05, 5.213e-05, 5.207e-05, 5.21e-05, 12810.50362593], [1516634880000, 5.21e-05, 5.214e-05, 5.207e-05, 5.213e-05, 28716.40700187], [1516634940000, 5.214e-05, 5.214e-05, 5.21e-05, 5.214e-05, 51130.42667611], [1516635000000, 5.21e-05, 5.222e-05, 5.21e-05, 5.218e-05, 13104.30486133], [1516635060000, 5.21e-05, 5.217e-05, 5.21e-05, 5.212e-05, 3119.05536582], [1516635120000, 5.216e-05, 5.216e-05, 5.212e-05, 5.213e-05, 12984.747487], [1516635180000, 5.213e-05, 5.218e-05, 5.21e-05, 5.211e-05, 80551.83859196], [1516635240000, 5.212e-05, 5.212e-05, 5.205e-05, 5.211e-05, 20166.02521664], [1516635300000, 5.205e-05, 5.211e-05, 5.2e-05, 5.2e-05, 30202.22437509], [1516635360000, 5.2e-05, 5.205e-05, 5.2e-05, 5.2e-05, 9986.60137257], [1516635420000, 5.194e-05, 5.212e-05, 5.194e-05, 5.206e-05, 20941.90347929], [1516635480000, 5.2e-05, 5.211e-05, 5.2e-05, 5.201e-05, 6456.49330693], [1516635540000, 5.201e-05, 5.21e-05, 5.201e-05, 5.202e-05, 6935.35129321], [1516635600000, 5.202e-05, 5.202e-05, 5.2e-05, 5.202e-05, 84138.81932352], [1516635660000, 5.201e-05, 5.211e-05, 5.2e-05, 5.2e-05, 40794.66213909], [1516635720000, 5.201e-05, 5.201e-05, 5.2e-05, 5.201e-05, 7942.03855324], [1516635780000, 5.201e-05, 5.21e-05, 5.2e-05, 5.2e-05, 4051.83096155], [1516635840000, 5.209e-05, 5.21e-05, 5.2e-05, 5.21e-05, 6574.20726651], [1516635900000, 5.21e-05, 5.211e-05, 5.2e-05, 5.21e-05, 11961.18193686], [1516635960000, 5.21e-05, 5.21e-05, 5.191e-05, 5.191e-05, 51293.24728933], [1516636020000, 5.2e-05, 5.21e-05, 5.2e-05, 5.2e-05, 772.43651476], [1516636080000, 5.2e-05, 5.2e-05, 5.19e-05, 5.19e-05, 3153.90698157], [1516636140000, 5.19e-05, 5.19e-05, 5.16e-05, 5.18e-05, 238344.23623555], [1516636200000, 5.18e-05, 5.18e-05, 5.159e-05, 5.159e-05, 70251.89212624], [1516636260000, 5.159e-05, 5.177e-05, 5.157e-05, 5.159e-05, 50151.87073362], [1516636320000, 5.16e-05, 5.177e-05, 5.146e-05, 5.146e-05, 80579.89990954], [1516636380000, 5.15e-05, 5.174e-05, 5.145e-05, 5.15e-05, 16726.3528009], [1516636440000, 5.15e-05, 5.15e-05, 5.144e-05, 5.144e-05, 33148.30645145], [1516636500000, 5.172e-05, 5.172e-05, 5.144e-05, 5.145e-05, 11517.48816245], [1516636560000, 5.145e-05, 5.162e-05, 5.14e-05, 5.14e-05, 62413.34375848], [1516636620000, 5.14e-05, 5.15e-05, 5.13e-05, 5.14e-05, 98374.81781497], [1516636680000, 5.13e-05, 5.149e-05, 5.127e-05, 5.127e-05, 16220.54626973], [1516636740000, 5.127e-05, 5.171e-05, 5.127e-05, 5.159e-05, 156599.32983315], [1516636800000, 5.159e-05, 5.169e-05, 5.127e-05, 5.169e-05, 42892.78602489], [1516636860000, 5.169e-05, 5.172e-05, 5.127e-05, 5.137e-05, 51122.11320343], [1516636920000, 5.137e-05, 5.176e-05, 5.131e-05, 5.147e-05, 14337.60255801], [1516636980000, 5.176e-05, 5.176e-05, 5.15e-05, 5.157e-05, 17570.24999545], [1516637040000, 5.157e-05, 5.168e-05, 5.157e-05, 5.168e-05, 15850.36641719], [1516637100000, 5.164e-05, 5.17e-05, 5.14e-05, 5.157e-05, 9638.51828111], [1516637160000, 5.164e-05, 5.17e-05, 5.14e-05, 5.164e-05, 13933.57328202], [1516637220000, 5.165e-05, 5.17e-05, 5.164e-05, 5.164e-05, 41398.70069045], [1516637280000, 5.164e-05, 5.164e-05, 5.14e-05, 5.164e-05, 25882.87154636], [1516637340000, 5.144e-05, 5.164e-05, 5.144e-05, 5.146e-05, 60422.34486192], [1516637400000, 5.157e-05, 5.169e-05, 5.146e-05, 5.165e-05, 31494.83790738], [1516637460000, 5.165e-05, 5.169e-05, 5.149e-05, 5.15e-05, 13066.13710359], [1516637520000, 5.164e-05, 5.164e-05, 5.15e-05, 5.164e-05, 15114.80495606], [1516637580000, 5.164e-05, 5.169e-05, 5.145e-05, 5.165e-05, 50406.6910595], [1516637640000, 5.165e-05, 5.169e-05, 5.145e-05, 5.169e-05, 82282.28109984], [1516637700000, 5.165e-05, 5.17e-05, 5.141e-05, 5.157e-05, 39524.36042299], [1516637760000, 5.165e-05, 5.165e-05, 5.157e-05, 5.158e-05, 22272.30722662], [1516637820000, 5.157e-05, 5.158e-05, 5.157e-05, 5.158e-05, 84058.72562804], [1516637880000, 5.158e-05, 5.164e-05, 5.158e-05, 5.16e-05, 5754.24264946], [1516637940000, 5.16e-05, 5.16e-05, 5.158e-05, 5.158e-05, 6938.6550015], [1516638000000, 5.16e-05, 5.17e-05, 5.155e-05, 5.155e-05, 55872.24045738], [1516638060000, 5.16e-05, 5.17e-05, 5.136e-05, 5.136e-05, 53650.13777411], [1516638120000, 5.163e-05, 5.165e-05, 5.136e-05, 5.138e-05, 25693.94356713], [1516638180000, 5.138e-05, 5.165e-05, 5.107e-05, 5.164e-05, 190335.93262812], [1516638240000, 5.16e-05, 5.164e-05, 5.153e-05, 5.163e-05, 11288.74880963], [1516638300000, 5.163e-05, 5.164e-05, 5.162e-05, 5.163e-05, 19527.60639921], [1516638360000, 5.164e-05, 5.17e-05, 5.163e-05, 5.168e-05, 17084.61192664], [1516638420000, 5.164e-05, 5.168e-05, 5.13e-05, 5.158e-05, 4400.53545464], [1516638480000, 5.158e-05, 5.158e-05, 5.137e-05, 5.158e-05, 7496.55612508], [1516638540000, 5.138e-05, 5.176e-05, 5.138e-05, 5.176e-05, 12693.08028784], [1516638600000, 5.158e-05, 5.176e-05, 5.135e-05, 5.142e-05, 14540.57804077], [1516638660000, 5.142e-05, 5.17e-05, 5.14e-05, 5.155e-05, 4560.0210249], [1516638720000, 5.14e-05, 5.155e-05, 5.128e-05, 5.155e-05, 31307.92548764], [1516638780000, 5.155e-05, 5.155e-05, 5.145e-05, 5.155e-05, 7393.95851215], [1516638840000, 5.155e-05, 5.177e-05, 5.147e-05, 5.177e-05, 19032.34475933], [1516638900000, 5.177e-05, 5.179e-05, 5.17e-05, 5.17e-05, 2523.80212797], [1516638960000, 5.179e-05, 5.183e-05, 5.179e-05, 5.183e-05, 18604.55376077], [1516639020000, 5.183e-05, 5.183e-05, 5.182e-05, 5.182e-05, 23338.43827469], [1516639080000, 5.182e-05, 5.185e-05, 5.181e-05, 5.185e-05, 40601.59493467], [1516639140000, 5.183e-05, 5.185e-05, 5.183e-05, 5.185e-05, 7064.40163847], [1516639200000, 5.185e-05, 5.193e-05, 5.185e-05, 5.19e-05, 3973.53320569], [1516639260000, 5.186e-05, 5.19e-05, 5.185e-05, 5.185e-05, 7638.35687708], [1516639320000, 5.186e-05, 5.195e-05, 5.185e-05, 5.195e-05, 41367.20682679], [1516639380000, 5.193e-05, 5.196e-05, 5.184e-05, 5.19e-05, 7615.70176934], [1516639440000, 5.19e-05, 5.219e-05, 5.19e-05, 5.219e-05, 13755.49004357], [1516639500000, 5.2e-05, 5.201e-05, 5.2e-05, 5.201e-05, 4411.23015254], [1516639560000, 5.201e-05, 5.219e-05, 5.2e-05, 5.204e-05, 11050.4789082], [1516639620000, 5.219e-05, 5.219e-05, 5.204e-05, 5.206e-05, 769.33246832], [1516639680000, 5.206e-05, 5.221e-05, 5.206e-05, 5.206e-05, 20301.83305031], [1516639740000, 5.206e-05, 5.206e-05, 5.204e-05, 5.206e-05, 25908.5043284], [1516639800000, 5.206e-05, 5.211e-05, 5.206e-05, 5.211e-05, 2886.12430194], [1516639860000, 5.211e-05, 5.23e-05, 5.211e-05, 5.23e-05, 20887.34466487], [1516639920000, 5.211e-05, 5.232e-05, 5.204e-05, 5.211e-05, 64411.71547969], [1516639980000, 5.219e-05, 5.232e-05, 5.219e-05, 5.232e-05, 1377.08945527], [1516640040000, 5.22e-05, 5.242e-05, 5.22e-05, 5.236e-05, 44015.83005154], [1516640100000, 5.236e-05, 5.236e-05, 5.219e-05, 5.232e-05, 19801.81055787], [1516640160000, 5.22e-05, 5.236e-05, 5.22e-05, 5.23e-05, 24101.56934926], [1516640220000, 5.229e-05, 5.229e-05, 5.22e-05, 5.227e-05, 5837.2539857], [1516640280000, 5.22e-05, 5.22e-05, 5.22e-05, 5.22e-05, 53.963], [1516640340000, 5.22e-05, 5.226e-05, 5.22e-05, 5.22e-05, 2490.2777459], [1516640400000, 5.22e-05, 5.221e-05, 5.205e-05, 5.205e-05, 33943.96796864], [1516640460000, 5.211e-05, 5.211e-05, 5.211e-05, 5.211e-05, 458.56286989], [1516640520000, 5.211e-05, 5.211e-05, 5.21e-05, 5.211e-05, 2887.98709395], [1516640580000, 5.211e-05, 5.211e-05, 5.211e-05, 5.211e-05, 453.53505352], [1516640640000, 5.211e-05, 5.211e-05, 5.21e-05, 5.21e-05, 71151.67084548], [1516640700000, 5.21e-05, 5.211e-05, 5.21e-05, 5.211e-05, 16842.80303049], [1516640760000, 5.211e-05, 5.211e-05, 5.21e-05, 5.21e-05, 5389.94824556], [1516640820000, 5.211e-05, 5.211e-05, 5.208e-05, 5.208e-05, 10591.13468364], [1516640880000, 5.208e-05, 5.21e-05, 5.208e-05, 5.208e-05, 8312.25244844], [1516640940000, 5.209e-05, 5.21e-05, 5.209e-05, 5.21e-05, 4539.93553218], [1516641000000, 5.21e-05, 5.21e-05, 5.21e-05, 5.21e-05, 2655.48688909], [1516641060000, 5.21e-05, 5.211e-05, 5.208e-05, 5.21e-05, 37850.11963479], [1516641120000, 5.208e-05, 5.21e-05, 5.208e-05, 5.21e-05, 27978.67460142], [1516641180000, 5.21e-05, 5.21e-05, 5.208e-05, 5.208e-05, 34181.60906805], [1516641240000, 5.208e-05, 5.208e-05, 5.204e-05, 5.204e-05, 8373.98025667], [1516641300000, 5.204e-05, 5.204e-05, 5.2e-05, 5.2e-05, 4175.15958585], [1516641360000, 5.204e-05, 5.204e-05, 5.2e-05, 5.2e-05, 14699.96375803], [1516641420000, 5.2e-05, 5.205e-05, 5.2e-05, 5.205e-05, 97451.9217593], [1516641480000, 5.2e-05, 5.205e-05, 5.2e-05, 5.205e-05, 6613.44186655], [1516641540000, 5.201e-05, 5.205e-05, 5.2e-05, 5.2e-05, 1733.77688707], [1516641600000, 5.2e-05, 5.204e-05, 5.2e-05, 5.204e-05, 4904.61174063], [1516641660000, 5.204e-05, 5.204e-05, 5.2e-05, 5.204e-05, 5511.88070514], [1516641720000, 5.204e-05, 5.204e-05, 5.199e-05, 5.203e-05, 17079.34665782], [1516641780000, 5.203e-05, 5.203e-05, 5.2e-05, 5.2e-05, 45204.25659862], [1516641840000, 5.203e-05, 5.204e-05, 5.203e-05, 5.203e-05, 1703.70697276], [1516641900000, 5.203e-05, 5.203e-05, 5.19e-05, 5.19e-05, 11234.82800018], [1516641960000, 5.19e-05, 5.19e-05, 5.19e-05, 5.19e-05, 21002.98851016], [1516642020000, 5.186e-05, 5.19e-05, 5.18e-05, 5.18e-05, 42186.3487383], [1516642080000, 5.18e-05, 5.18e-05, 5.178e-05, 5.179e-05, 9136.13425771], [1516642140000, 5.179e-05, 5.18e-05, 5.178e-05, 5.18e-05, 113027.92639093], [1516642200000, 5.18e-05, 5.18e-05, 5.175e-05, 5.177e-05, 26539.92319872], [1516642260000, 5.177e-05, 5.18e-05, 5.15e-05, 5.18e-05, 228154.74154252], [1516642320000, 5.172e-05, 5.18e-05, 5.164e-05, 5.18e-05, 202039.85339147], [1516642380000, 5.18e-05, 5.18e-05, 5.18e-05, 5.18e-05, 74561.87095888], [1516642440000, 5.18e-05, 5.18e-05, 5.176e-05, 5.18e-05, 129899.26077792], [1516642500000, 5.18e-05, 5.18e-05, 5.177e-05, 5.178e-05, 118144.73839852], [1516642560000, 5.18e-05, 5.18e-05, 5.179e-05, 5.179e-05, 39608.08283147], [1516642620000, 5.178e-05, 5.18e-05, 5.178e-05, 5.18e-05, 30981.84170163], [1516642680000, 5.18e-05, 5.18e-05, 5.179e-05, 5.179e-05, 3411.84913596], [1516642740000, 5.179e-05, 5.18e-05, 5.176e-05, 5.18e-05, 24156.60996643], [1516642800000, 5.18e-05, 5.18e-05, 5.178e-05, 5.179e-05, 5821.62332645], [1516642860000, 5.179e-05, 5.18e-05, 5.179e-05, 5.179e-05, 29566.2772232], [1516642920000, 5.179e-05, 5.18e-05, 5.178e-05, 5.18e-05, 31824.74008427], [1516642980000, 5.18e-05, 5.18e-05, 5.179e-05, 5.18e-05, 29676.70309464], [1516643040000, 5.18e-05, 5.18e-05, 5.18e-05, 5.18e-05, 21290.98063662], [1516643100000, 5.18e-05, 5.183e-05, 5.18e-05, 5.182e-05, 61999.2875873], [1516643160000, 5.182e-05, 5.182e-05, 5.182e-05, 5.182e-05, 26140.52565519], [1516643220000, 5.181e-05, 5.2e-05, 5.181e-05, 5.185e-05, 5257.32364568], [1516643280000, 5.185e-05, 5.186e-05, 5.183e-05, 5.185e-05, 40342.14000974], [1516643340000, 5.199e-05, 5.199e-05, 5.19e-05, 5.199e-05, 1606.82867615], [1516643400000, 5.197e-05, 5.199e-05, 5.186e-05, 5.198e-05, 1327.22356448], [1516643460000, 5.197e-05, 5.198e-05, 5.191e-05, 5.195e-05, 9578.24632665], [1516643520000, 5.195e-05, 5.198e-05, 5.192e-05, 5.195e-05, 29705.13406425], [1516643580000, 5.198e-05, 5.2e-05, 5.195e-05, 5.2e-05, 39295.20509256], [1516643640000, 5.195e-05, 5.236e-05, 5.195e-05, 5.21e-05, 53060.32847127], [1516643700000, 5.21e-05, 5.233e-05, 5.197e-05, 5.197e-05, 18238.51863651], [1516643760000, 5.197e-05, 5.198e-05, 5.185e-05, 5.185e-05, 59889.43439646], [1516643820000, 5.19e-05, 5.231e-05, 5.186e-05, 5.21e-05, 14040.96441855], [1516643880000, 5.185e-05, 5.233e-05, 5.181e-05, 5.204e-05, 4017.14213105], [1516643940000, 5.204e-05, 5.204e-05, 5.2e-05, 5.201e-05, 2850.48210799], [1516644000000, 5.201e-05, 5.216e-05, 5.2e-05, 5.21e-05, 1972.04939875], [1516644060000, 5.21e-05, 5.228e-05, 5.185e-05, 5.228e-05, 11137.76660398], [1516644120000, 5.228e-05, 5.228e-05, 5.181e-05, 5.216e-05, 54935.24858816], [1516644180000, 5.216e-05, 5.216e-05, 5.181e-05, 5.216e-05, 21457.21943248], [1516644240000, 5.184e-05, 5.184e-05, 5.183e-05, 5.184e-05, 19601.17143408], [1516644300000, 5.184e-05, 5.184e-05, 5.183e-05, 5.184e-05, 12314.77022068], [1516644360000, 5.19e-05, 5.227e-05, 5.184e-05, 5.227e-05, 1437.9589772], [1516644420000, 5.227e-05, 5.227e-05, 5.19e-05, 5.225e-05, 270.84292715], [1516644480000, 5.22e-05, 5.225e-05, 5.19e-05, 5.224e-05, 7880.50363563], [1516644540000, 5.223e-05, 5.223e-05, 5.2e-05, 5.2e-05, 385.10199502], [1516644600000, 5.222e-05, 5.222e-05, 5.2e-05, 5.2e-05, 10528.42731086], [1516644660000, 5.2e-05, 5.204e-05, 5.198e-05, 5.2e-05, 9709.47732369], [1516644720000, 5.204e-05, 5.204e-05, 5.19e-05, 5.19e-05, 5386.40515018], [1516644780000, 5.204e-05, 5.222e-05, 5.204e-05, 5.22e-05, 2559.09230676], [1516644840000, 5.204e-05, 5.204e-05, 5.2e-05, 5.2e-05, 6058.0226766], [1516644900000, 5.2e-05, 5.22e-05, 5.2e-05, 5.2e-05, 14238.98109252], [1516644960000, 5.204e-05, 5.22e-05, 5.184e-05, 5.184e-05, 12436.26280958], [1516645020000, 5.22e-05, 5.22e-05, 5.187e-05, 5.188e-05, 4146.51381411], [1516645080000, 5.205e-05, 5.22e-05, 5.189e-05, 5.22e-05, 6938.73873983], [1516645140000, 5.206e-05, 5.206e-05, 5.2e-05, 5.206e-05, 1907.67875443], [1516645200000, 5.2e-05, 5.205e-05, 5.191e-05, 5.191e-05, 1987.771503], [1516645260000, 5.191e-05, 5.206e-05, 5.191e-05, 5.206e-05, 8444.42920519], [1516645320000, 5.206e-05, 5.22e-05, 5.206e-05, 5.219e-05, 9165.27113257], [1516645380000, 5.219e-05, 5.222e-05, 5.219e-05, 5.22e-05, 45331.21907257], [1516645440000, 5.223e-05, 5.228e-05, 5.221e-05, 5.228e-05, 23140.73195225], [1516645500000, 5.228e-05, 5.244e-05, 5.228e-05, 5.242e-05, 62901.03802807], [1516645560000, 5.244e-05, 5.25e-05, 5.242e-05, 5.242e-05, 34949.45758529], [1516645620000, 5.242e-05, 5.255e-05, 5.242e-05, 5.251e-05, 17805.10614486], [1516645680000, 5.251e-05, 5.255e-05, 5.251e-05, 5.255e-05, 8251.65892281], [1516645740000, 5.254e-05, 5.254e-05, 5.254e-05, 5.254e-05, 2377.06704757], [1516645800000, 5.254e-05, 5.255e-05, 5.253e-05, 5.254e-05, 11614.73587033], [1516645860000, 5.255e-05, 5.255e-05, 5.251e-05, 5.251e-05, 27709.10435093], [1516645920000, 5.251e-05, 5.254e-05, 5.251e-05, 5.254e-05, 12808.91258978], [1516645980000, 5.253e-05, 5.254e-05, 5.219e-05, 5.235e-05, 309807.79636162], [1516646040000, 5.229e-05, 5.251e-05, 5.219e-05, 5.251e-05, 4562.9192288], [1516646100000, 5.219e-05, 5.245e-05, 5.219e-05, 5.22e-05, 7516.34769595], [1516646160000, 5.245e-05, 5.245e-05, 5.22e-05, 5.222e-05, 6659.99314487], [1516646220000, 5.223e-05, 5.223e-05, 5.22e-05, 5.22e-05, 308.44163751], [1516646280000, 5.23e-05, 5.243e-05, 5.23e-05, 5.243e-05, 8287.54800915], [1516646340000, 5.245e-05, 5.251e-05, 5.245e-05, 5.245e-05, 393.05554453], [1516646400000, 5.246e-05, 5.25e-05, 5.245e-05, 5.245e-05, 1908.26073007], [1516646460000, 5.246e-05, 5.246e-05, 5.245e-05, 5.245e-05, 1684.45065243], [1516646520000, 5.245e-05, 5.25e-05, 5.24e-05, 5.24e-05, 14518.08710127], [1516646580000, 5.236e-05, 5.236e-05, 5.233e-05, 5.236e-05, 14531.78544942], [1516646640000, 5.236e-05, 5.248e-05, 5.236e-05, 5.248e-05, 3592.53250659], [1516646700000, 5.249e-05, 5.25e-05, 5.239e-05, 5.25e-05, 2710.91836281], [1516646760000, 5.25e-05, 5.251e-05, 5.25e-05, 5.25e-05, 4277.07704679], [1516646820000, 5.25e-05, 5.251e-05, 5.219e-05, 5.236e-05, 32928.61828739], [1516646880000, 5.236e-05, 5.236e-05, 5.2e-05, 5.236e-05, 20097.41252394], [1516646940000, 5.236e-05, 5.236e-05, 5.201e-05, 5.201e-05, 1927.92225893], [1516647000000, 5.235e-05, 5.236e-05, 5.235e-05, 5.235e-05, 431.30413992], [1516647060000, 5.203e-05, 5.249e-05, 5.203e-05, 5.218e-05, 16764.90768116], [1516647120000, 5.249e-05, 5.249e-05, 5.218e-05, 5.235e-05, 9778.50452344], [1516647180000, 5.235e-05, 5.236e-05, 5.233e-05, 5.236e-05, 35052.41568101], [1516647240000, 5.233e-05, 5.236e-05, 5.218e-05, 5.236e-05, 1671.95851379], [1516647300000, 5.221e-05, 5.236e-05, 5.221e-05, 5.236e-05, 6310.21104953], [1516647360000, 5.236e-05, 5.236e-05, 5.222e-05, 5.236e-05, 7087.77992796], [1516647420000, 5.222e-05, 5.222e-05, 5.22e-05, 5.22e-05, 3689.03983278], [1516647480000, 5.22e-05, 5.222e-05, 5.22e-05, 5.222e-05, 9776.40486935], [1516647540000, 5.22e-05, 5.222e-05, 5.2e-05, 5.222e-05, 22119.65698034], [1516647600000, 5.222e-05, 5.222e-05, 5.22e-05, 5.22e-05, 1011.18704311], [1516647660000, 5.219e-05, 5.219e-05, 5.219e-05, 5.219e-05, 4378.17524843], [1516647720000, 5.219e-05, 5.222e-05, 5.2e-05, 5.2e-05, 13450.39401109], [1516647780000, 5.215e-05, 5.23e-05, 5.215e-05, 5.222e-05, 56507.7244234], [1516647840000, 5.23e-05, 5.235e-05, 5.2e-05, 5.235e-05, 23284.59656658], [1516647900000, 5.235e-05, 5.254e-05, 5.2e-05, 5.201e-05, 177221.12168646], [1516647960000, 5.247e-05, 5.247e-05, 5.21e-05, 5.21e-05, 5392.49465764], [1516648020000, 5.21e-05, 5.248e-05, 5.21e-05, 5.248e-05, 350.65600415], [1516648080000, 5.247e-05, 5.249e-05, 5.21e-05, 5.21e-05, 4464.3194652], [1516648140000, 5.21e-05, 5.249e-05, 5.184e-05, 5.198e-05, 77529.22486424], [1516648200000, 5.199e-05, 5.214e-05, 5.183e-05, 5.204e-05, 11818.65498633], [1516648260000, 5.188e-05, 5.206e-05, 5.188e-05, 5.206e-05, 58262.40698172], [1516648320000, 5.204e-05, 5.238e-05, 5.17e-05, 5.204e-05, 53321.3983813], [1516648380000, 5.204e-05, 5.206e-05, 5.17e-05, 5.205e-05, 11873.50207987], [1516648440000, 5.207e-05, 5.209e-05, 5.207e-05, 5.209e-05, 2051.87093183], [1516648500000, 5.21e-05, 5.213e-05, 5.176e-05, 5.208e-05, 37050.36517162], [1516648560000, 5.208e-05, 5.208e-05, 5.208e-05, 5.208e-05, 125.0], [1516648620000, 5.207e-05, 5.21e-05, 5.207e-05, 5.21e-05, 39329.16442521], [1516648680000, 5.207e-05, 5.21e-05, 5.156e-05, 5.209e-05, 33860.9376419], [1516648740000, 5.208e-05, 5.21e-05, 5.186e-05, 5.186e-05, 10009.71234372], [1516648800000, 5.21e-05, 5.218e-05, 5.188e-05, 5.218e-05, 37778.94228253], [1516648860000, 5.218e-05, 5.218e-05, 5.21e-05, 5.21e-05, 2982.4357789], [1516648920000, 5.21e-05, 5.21e-05, 5.19e-05, 5.2e-05, 765.13740945], [1516648980000, 5.208e-05, 5.208e-05, 5.208e-05, 5.208e-05, 163.10921678], [1516649040000, 5.208e-05, 5.218e-05, 5.193e-05, 5.218e-05, 5147.66477919], [1516649100000, 5.217e-05, 5.217e-05, 5.216e-05, 5.216e-05, 1767.49089515], [1516649160000, 5.208e-05, 5.217e-05, 5.208e-05, 5.217e-05, 357.50007629], [1516649220000, 5.209e-05, 5.217e-05, 5.208e-05, 5.217e-05, 29984.96154779], [1516649280000, 5.209e-05, 5.209e-05, 5.209e-05, 5.209e-05, 6069.22188173], [1516649340000, 5.216e-05, 5.216e-05, 5.21e-05, 5.216e-05, 6074.93060806], [1516649400000, 5.216e-05, 5.217e-05, 5.21e-05, 5.21e-05, 4002.66861479], [1516649460000, 5.21e-05, 5.216e-05, 5.21e-05, 5.216e-05, 1197.54580413], [1516649520000, 5.214e-05, 5.216e-05, 5.21e-05, 5.216e-05, 2068.67087775], [1516649580000, 5.216e-05, 5.217e-05, 5.209e-05, 5.216e-05, 6570.4838756], [1516649640000, 5.209e-05, 5.209e-05, 5.208e-05, 5.208e-05, 3625.82263304], [1516649700000, 5.208e-05, 5.208e-05, 5.208e-05, 5.208e-05, 3159.82042282], [1516649760000, 5.208e-05, 5.209e-05, 5.208e-05, 5.208e-05, 4436.89602301], [1516649820000, 5.209e-05, 5.209e-05, 5.208e-05, 5.208e-05, 10599.89516636], [1516649880000, 5.208e-05, 5.217e-05, 5.208e-05, 5.208e-05, 8300.59100057], [1516649940000, 5.209e-05, 5.209e-05, 5.208e-05, 5.208e-05, 22824.58751782], [1516650000000, 5.208e-05, 5.209e-05, 5.208e-05, 5.208e-05, 11337.19244439], [1516650060000, 5.208e-05, 5.209e-05, 5.206e-05, 5.206e-05, 25182.00201358], [1516650120000, 5.206e-05, 5.207e-05, 5.206e-05, 5.206e-05, 12524.52089852], [1516650180000, 5.206e-05, 5.206e-05, 5.192e-05, 5.2e-05, 4148.75697296], [1516650240000, 5.2e-05, 5.217e-05, 5.2e-05, 5.206e-05, 33042.7272869], [1516650300000, 5.206e-05, 5.244e-05, 5.206e-05, 5.206e-05, 10062.8660077], [1516650360000, 5.2e-05, 5.206e-05, 5.192e-05, 5.2e-05, 2001.89214401], [1516650420000, 5.205e-05, 5.206e-05, 5.192e-05, 5.206e-05, 11117.30178628], [1516650480000, 5.195e-05, 5.2e-05, 5.195e-05, 5.2e-05, 81.01905493], [1516650540000, 5.206e-05, 5.206e-05, 5.2e-05, 5.206e-05, 383.58131778], [1516650600000, 5.206e-05, 5.241e-05, 5.203e-05, 5.219e-05, 12387.28321267], [1516650660000, 5.219e-05, 5.234e-05, 5.203e-05, 5.218e-05, 5171.04119906], [1516650720000, 5.203e-05, 5.218e-05, 5.203e-05, 5.218e-05, 8678.24468157], [1516650780000, 5.204e-05, 5.218e-05, 5.204e-05, 5.204e-05, 6226.9363019], [1516650840000, 5.218e-05, 5.218e-05, 5.203e-05, 5.204e-05, 20986.9027496], [1516650900000, 5.204e-05, 5.204e-05, 5.203e-05, 5.204e-05, 7720.96164087], [1516650960000, 5.204e-05, 5.209e-05, 5.204e-05, 5.208e-05, 5440.5671168], [1516651020000, 5.208e-05, 5.217e-05, 5.208e-05, 5.217e-05, 36968.21863837], [1516651080000, 5.216e-05, 5.216e-05, 5.204e-05, 5.205e-05, 6654.29200012], [1516651140000, 5.208e-05, 5.208e-05, 5.204e-05, 5.204e-05, 19476.50697912], [1516651200000, 5.208e-05, 5.208e-05, 5.204e-05, 5.204e-05, 326.38272126], [1516651260000, 5.204e-05, 5.217e-05, 5.204e-05, 5.204e-05, 1712.32477549], [1516651320000, 5.204e-05, 5.216e-05, 5.204e-05, 5.208e-05, 7405.82881111], [1516651380000, 5.216e-05, 5.217e-05, 5.208e-05, 5.216e-05, 5850.75811749], [1516651440000, 5.216e-05, 5.22e-05, 5.215e-05, 5.22e-05, 38531.74634256], [1516651500000, 5.215e-05, 5.219e-05, 5.204e-05, 5.204e-05, 2245.13935895], [1516651560000, 5.204e-05, 5.22e-05, 5.2e-05, 5.219e-05, 11459.3397148], [1516651620000, 5.219e-05, 5.22e-05, 5.215e-05, 5.215e-05, 7258.3221601], [1516651680000, 5.208e-05, 5.22e-05, 5.191e-05, 5.218e-05, 28534.18988042], [1516651740000, 5.218e-05, 5.218e-05, 5.194e-05, 5.196e-05, 1250.10587667], [1516651800000, 5.197e-05, 5.197e-05, 5.194e-05, 5.197e-05, 44632.26378013], [1516651860000, 5.197e-05, 5.218e-05, 5.197e-05, 5.218e-05, 3055.93138674], [1516651920000, 5.198e-05, 5.22e-05, 5.198e-05, 5.218e-05, 17774.17014212], [1516651980000, 5.219e-05, 5.22e-05, 5.218e-05, 5.218e-05, 3182.09445324], [1516652040000, 5.218e-05, 5.22e-05, 5.218e-05, 5.218e-05, 1752.67246836], [1516652100000, 5.218e-05, 5.22e-05, 5.218e-05, 5.218e-05, 6261.13382697], [1516652160000, 5.22e-05, 5.22e-05, 5.218e-05, 5.218e-05, 7088.31359662], [1516652220000, 5.218e-05, 5.218e-05, 5.197e-05, 5.202e-05, 13296.06607266], [1516652280000, 5.202e-05, 5.218e-05, 5.198e-05, 5.198e-05, 4039.23298589], [1516652340000, 5.218e-05, 5.22e-05, 5.214e-05, 5.214e-05, 19152.66951256], [1516652400000, 5.201e-05, 5.201e-05, 5.197e-05, 5.201e-05, 6614.59288353], [1516652460000, 5.201e-05, 5.214e-05, 5.201e-05, 5.201e-05, 1813.58154038], [1516652520000, 5.214e-05, 5.214e-05, 5.205e-05, 5.205e-05, 2234.07320377], [1516652580000, 5.206e-05, 5.214e-05, 5.205e-05, 5.214e-05, 1399.3010886], [1516652640000, 5.214e-05, 5.218e-05, 5.214e-05, 5.214e-05, 5251.94315541], [1516652700000, 5.214e-05, 5.216e-05, 5.201e-05, 5.201e-05, 30464.1846831], [1516652760000, 5.208e-05, 5.208e-05, 5.201e-05, 5.208e-05, 4219.2656576], [1516652820000, 5.21e-05, 5.218e-05, 5.21e-05, 5.218e-05, 5068.19702085], [1516652880000, 5.21e-05, 5.21e-05, 5.201e-05, 5.201e-05, 10300.30114524], [1516652940000, 5.202e-05, 5.218e-05, 5.201e-05, 5.21e-05, 14057.26660683], [1516653000000, 5.217e-05, 5.217e-05, 5.21e-05, 5.216e-05, 1108.5899404], [1516653060000, 5.216e-05, 5.217e-05, 5.197e-05, 5.201e-05, 5136.36192217], [1516653120000, 5.201e-05, 5.218e-05, 5.201e-05, 5.201e-05, 21263.9845663], [1516653180000, 5.201e-05, 5.218e-05, 5.201e-05, 5.218e-05, 6443.99763408], [1516653240000, 5.201e-05, 5.218e-05, 5.201e-05, 5.201e-05, 15263.27977596], [1516653300000, 5.218e-05, 5.22e-05, 5.205e-05, 5.218e-05, 72731.11342439], [1516653360000, 5.218e-05, 5.23e-05, 5.205e-05, 5.23e-05, 57580.03588109], [1516653420000, 5.22e-05, 5.23e-05, 5.22e-05, 5.229e-05, 3461.25574156], [1516653480000, 5.229e-05, 5.23e-05, 5.205e-05, 5.23e-05, 8879.16711786], [1516653540000, 5.229e-05, 5.242e-05, 5.206e-05, 5.241e-05, 25195.47624968], [1516653600000, 5.23e-05, 5.239e-05, 5.23e-05, 5.239e-05, 165.27561485], [1516653660000, 5.23e-05, 5.238e-05, 5.229e-05, 5.237e-05, 26293.24521892], [1516653720000, 5.237e-05, 5.239e-05, 5.21e-05, 5.238e-05, 19548.26536127], [1516653780000, 5.21e-05, 5.239e-05, 5.21e-05, 5.238e-05, 27496.68253224], [1516653840000, 5.212e-05, 5.24e-05, 5.212e-05, 5.212e-05, 37801.099845], [1516653900000, 5.212e-05, 5.24e-05, 5.212e-05, 5.24e-05, 11217.20564118], [1516653960000, 5.212e-05, 5.243e-05, 5.212e-05, 5.243e-05, 6775.69257672], [1516654020000, 5.238e-05, 5.243e-05, 5.238e-05, 5.238e-05, 5123.34907251], [1516654080000, 5.242e-05, 5.242e-05, 5.238e-05, 5.242e-05, 2076.18098032], [1516654140000, 5.242e-05, 5.242e-05, 5.238e-05, 5.238e-05, 3124.56285906], [1516654200000, 5.242e-05, 5.242e-05, 5.238e-05, 5.238e-05, 9462.15338767], [1516654260000, 5.238e-05, 5.242e-05, 5.213e-05, 5.242e-05, 9849.63349531], [1516654320000, 5.242e-05, 5.245e-05, 5.213e-05, 5.213e-05, 15394.30742496], [1516654380000, 5.236e-05, 5.236e-05, 5.214e-05, 5.214e-05, 496.15923815], [1516654440000, 5.215e-05, 5.236e-05, 5.214e-05, 5.216e-05, 3350.74491004], [1516654500000, 5.216e-05, 5.236e-05, 5.216e-05, 5.216e-05, 20704.64943109], [1516654560000, 5.225e-05, 5.236e-05, 5.216e-05, 5.216e-05, 970.13056682], [1516654620000, 5.228e-05, 5.228e-05, 5.228e-05, 5.228e-05, 496.59496284], [1516654680000, 5.22e-05, 5.236e-05, 5.217e-05, 5.236e-05, 4092.30102257], [1516654740000, 5.236e-05, 5.236e-05, 5.22e-05, 5.22e-05, 3353.97755225], [1516654800000, 5.222e-05, 5.236e-05, 5.22e-05, 5.236e-05, 2040.83071604], [1516654860000, 5.222e-05, 5.236e-05, 5.22e-05, 5.222e-05, 3546.60885739], [1516654920000, 5.22e-05, 5.222e-05, 5.22e-05, 5.222e-05, 5387.1975186], [1516654980000, 5.222e-05, 5.229e-05, 5.222e-05, 5.229e-05, 2883.76507365], [1516655040000, 5.229e-05, 5.229e-05, 5.22e-05, 5.22e-05, 22177.21898663], [1516655100000, 5.22e-05, 5.225e-05, 5.22e-05, 5.225e-05, 19491.23217999], [1516655160000, 5.225e-05, 5.225e-05, 5.22e-05, 5.225e-05, 43718.60929172], [1516655220000, 5.225e-05, 5.247e-05, 5.22e-05, 5.247e-05, 200457.76169465], [1516655280000, 5.247e-05, 5.247e-05, 5.235e-05, 5.24e-05, 105628.8985548], [1516655340000, 5.24e-05, 5.25e-05, 5.225e-05, 5.237e-05, 88403.40962253], [1516655400000, 5.25e-05, 5.258e-05, 5.25e-05, 5.255e-05, 43344.13907299], [1516655460000, 5.25e-05, 5.268e-05, 5.25e-05, 5.267e-05, 51882.69880931], [1516655520000, 5.25e-05, 5.266e-05, 5.25e-05, 5.266e-05, 26222.30926305], [1516655580000, 5.266e-05, 5.267e-05, 5.266e-05, 5.267e-05, 10033.83937435], [1516655640000, 5.267e-05, 5.275e-05, 5.266e-05, 5.275e-05, 50855.34682519], [1516655700000, 5.274e-05, 5.274e-05, 5.271e-05, 5.271e-05, 41637.38768309], [1516655760000, 5.271e-05, 5.271e-05, 5.266e-05, 5.271e-05, 5941.62411989], [1516655820000, 5.266e-05, 5.266e-05, 5.26e-05, 5.26e-05, 2603.85909145], [1516655880000, 5.26e-05, 5.26e-05, 5.23e-05, 5.23e-05, 4537.39981464], [1516655940000, 5.23e-05, 5.23e-05, 5.227e-05, 5.23e-05, 4405.22132941], [1516656000000, 5.23e-05, 5.261e-05, 5.2e-05, 5.201e-05, 76436.97173457], [1516656060000, 5.201e-05, 5.202e-05, 5.186e-05, 5.201e-05, 18452.2284088], [1516656120000, 5.201e-05, 5.239e-05, 5.18e-05, 5.2e-05, 9670.22153902], [1516656180000, 5.188e-05, 5.259e-05, 5.188e-05, 5.196e-05, 57135.62842981], [1516656240000, 5.196e-05, 5.231e-05, 5.189e-05, 5.2e-05, 11520.11097674], [1516656300000, 5.217e-05, 5.228e-05, 5.163e-05, 5.184e-05, 15516.04262578], [1516656360000, 5.184e-05, 5.184e-05, 5.165e-05, 5.183e-05, 14121.13275445], [1516656420000, 5.18e-05, 5.231e-05, 5.18e-05, 5.186e-05, 12394.36670525], [1516656480000, 5.225e-05, 5.228e-05, 5.162e-05, 5.183e-05, 24019.82221902], [1516656540000, 5.183e-05, 5.183e-05, 5.158e-05, 5.183e-05, 3154.02784653], [1516656600000, 5.183e-05, 5.183e-05, 5.169e-05, 5.183e-05, 1553.88527553], [1516656660000, 5.188e-05, 5.188e-05, 5.17e-05, 5.18e-05, 16553.57566859], [1516656720000, 5.18e-05, 5.183e-05, 5.159e-05, 5.183e-05, 6124.20061402], [1516656780000, 5.17e-05, 5.183e-05, 5.164e-05, 5.183e-05, 4419.02874679], [1516656840000, 5.18e-05, 5.183e-05, 5.17e-05, 5.183e-05, 9928.97206221], [1516656900000, 5.183e-05, 5.212e-05, 5.183e-05, 5.212e-05, 5635.75970078], [1516656960000, 5.17e-05, 5.212e-05, 5.163e-05, 5.209e-05, 31623.09443121], [1516657020000, 5.169e-05, 5.209e-05, 5.163e-05, 5.163e-05, 42220.25690222], [1516657080000, 5.166e-05, 5.21e-05, 5.163e-05, 5.21e-05, 4906.04956121], [1516657140000, 5.199e-05, 5.211e-05, 5.175e-05, 5.207e-05, 16903.87143118], [1516657200000, 5.177e-05, 5.207e-05, 5.177e-05, 5.177e-05, 9423.94221113], [1516657260000, 5.198e-05, 5.198e-05, 5.177e-05, 5.177e-05, 4205.20194728], [1516657320000, 5.177e-05, 5.18e-05, 5.175e-05, 5.18e-05, 7530.42208598], [1516657380000, 5.18e-05, 5.18e-05, 5.175e-05, 5.175e-05, 1823.05407131], [1516657440000, 5.18e-05, 5.18e-05, 5.175e-05, 5.175e-05, 1179.04953948], [1516657500000, 5.18e-05, 5.18e-05, 5.175e-05, 5.175e-05, 13877.42843274], [1516657560000, 5.175e-05, 5.18e-05, 5.15e-05, 5.165e-05, 38223.38835182], [1516657620000, 5.172e-05, 5.176e-05, 5.151e-05, 5.176e-05, 3554.93175478], [1516657680000, 5.154e-05, 5.172e-05, 5.15e-05, 5.15e-05, 9098.36729788], [1516657740000, 5.15e-05, 5.169e-05, 5.142e-05, 5.142e-05, 19385.80676571], [1516657800000, 5.151e-05, 5.169e-05, 5.14e-05, 5.14e-05, 19500.67123423], [1516657860000, 5.159e-05, 5.168e-05, 5.136e-05, 5.16e-05, 12493.1425772], [1516657920000, 5.136e-05, 5.167e-05, 5.136e-05, 5.136e-05, 48152.6213619], [1516657980000, 5.136e-05, 5.168e-05, 5.136e-05, 5.167e-05, 48057.59408949], [1516658040000, 5.167e-05, 5.18e-05, 5.136e-05, 5.18e-05, 29724.93348469], [1516658100000, 5.178e-05, 5.18e-05, 5.146e-05, 5.18e-05, 33793.69452913], [1516658160000, 5.162e-05, 5.194e-05, 5.154e-05, 5.17e-05, 4982.39369181], [1516658220000, 5.17e-05, 5.187e-05, 5.152e-05, 5.187e-05, 15919.57683687], [1516658280000, 5.167e-05, 5.195e-05, 5.167e-05, 5.195e-05, 5625.36005724], [1516658340000, 5.195e-05, 5.2e-05, 5.155e-05, 5.2e-05, 19586.31049783], [1516658400000, 5.162e-05, 5.2e-05, 5.16e-05, 5.197e-05, 18470.44834707], [1516658460000, 5.197e-05, 5.207e-05, 5.171e-05, 5.207e-05, 6806.45411025], [1516658520000, 5.207e-05, 5.21e-05, 5.173e-05, 5.173e-05, 2434.33763463], [1516658580000, 5.202e-05, 5.203e-05, 5.173e-05, 5.203e-05, 42995.28978846], [1516658640000, 5.203e-05, 5.22e-05, 5.19e-05, 5.22e-05, 17300.9697411], [1516658700000, 5.22e-05, 5.255e-05, 5.22e-05, 5.243e-05, 66175.83976943], [1516658760000, 5.22e-05, 5.243e-05, 5.22e-05, 5.242e-05, 37791.77349697], [1516658820000, 5.242e-05, 5.25e-05, 5.242e-05, 5.244e-05, 31354.50345611], [1516658880000, 5.25e-05, 5.265e-05, 5.244e-05, 5.25e-05, 42819.49541457], [1516658940000, 5.265e-05, 5.271e-05, 5.25e-05, 5.27e-05, 33659.06829939], [1516659000000, 5.269e-05, 5.269e-05, 5.249e-05, 5.268e-05, 17418.62379541], [1516659060000, 5.265e-05, 5.268e-05, 5.22e-05, 5.22e-05, 21144.26419686], [1516659120000, 5.222e-05, 5.265e-05, 5.22e-05, 5.25e-05, 15746.9331212], [1516659180000, 5.226e-05, 5.269e-05, 5.212e-05, 5.223e-05, 17395.57411932], [1516659240000, 5.226e-05, 5.265e-05, 5.222e-05, 5.264e-05, 5608.32351136], [1516659300000, 5.262e-05, 5.263e-05, 5.229e-05, 5.257e-05, 2345.66654483], [1516659360000, 5.245e-05, 5.26e-05, 5.229e-05, 5.248e-05, 33479.48374454], [1516659420000, 5.248e-05, 5.259e-05, 5.222e-05, 5.259e-05, 40500.62142835], [1516659480000, 5.259e-05, 5.26e-05, 5.255e-05, 5.255e-05, 1193.57825679], [1516659540000, 5.255e-05, 5.262e-05, 5.225e-05, 5.262e-05, 7319.97228454], [1516659600000, 5.262e-05, 5.263e-05, 5.231e-05, 5.261e-05, 7867.36409859], [1516659660000, 5.257e-05, 5.26e-05, 5.231e-05, 5.231e-05, 8931.08156033], [1516659720000, 5.26e-05, 5.261e-05, 5.231e-05, 5.26e-05, 28322.82895151], [1516659780000, 5.26e-05, 5.262e-05, 5.225e-05, 5.225e-05, 84829.03616527], [1516659840000, 5.225e-05, 5.261e-05, 5.225e-05, 5.261e-05, 1932.42182623], [1516659900000, 5.259e-05, 5.26e-05, 5.23e-05, 5.26e-05, 86131.69605987], [1516659960000, 5.259e-05, 5.261e-05, 5.233e-05, 5.261e-05, 42528.81593532], [1516660020000, 5.26e-05, 5.261e-05, 5.251e-05, 5.259e-05, 3173.42750922], [1516660080000, 5.251e-05, 5.259e-05, 5.233e-05, 5.251e-05, 67237.13469407], [1516660140000, 5.251e-05, 5.261e-05, 5.23e-05, 5.23e-05, 32577.76218431], [1516660200000, 5.23e-05, 5.252e-05, 5.23e-05, 5.23e-05, 5619.25062724], [1516660260000, 5.252e-05, 5.26e-05, 5.231e-05, 5.26e-05, 13678.36812179], [1516660320000, 5.26e-05, 5.26e-05, 5.2e-05, 5.2e-05, 49113.33515262], [1516660380000, 5.207e-05, 5.257e-05, 5.2e-05, 5.255e-05, 20649.12113745], [1516660440000, 5.219e-05, 5.258e-05, 5.194e-05, 5.209e-05, 94958.62835952], [1516660500000, 5.251e-05, 5.259e-05, 5.22e-05, 5.254e-05, 76704.06547012], [1516660560000, 5.24e-05, 5.261e-05, 5.227e-05, 5.26e-05, 174735.54886495], [1516660620000, 5.241e-05, 5.275e-05, 5.24e-05, 5.275e-05, 119471.47476356], [1516660680000, 5.275e-05, 5.283e-05, 5.251e-05, 5.257e-05, 71517.14732571], [1516660740000, 5.258e-05, 5.265e-05, 5.257e-05, 5.265e-05, 30797.74818462], [1516660800000, 5.26e-05, 5.295e-05, 5.257e-05, 5.28e-05, 63672.88161374], [1516660860000, 5.298e-05, 5.316e-05, 5.27e-05, 5.316e-05, 93507.70148318], [1516660920000, 5.303e-05, 5.311e-05, 5.259e-05, 5.265e-05, 15083.20431993], [1516660980000, 5.272e-05, 5.314e-05, 5.272e-05, 5.305e-05, 36034.24247887], [1516661040000, 5.299e-05, 5.316e-05, 5.273e-05, 5.283e-05, 26758.11916572], [1516661100000, 5.292e-05, 5.316e-05, 5.283e-05, 5.316e-05, 6699.54412456], [1516661160000, 5.302e-05, 5.316e-05, 5.284e-05, 5.316e-05, 3634.79614055], [1516661220000, 5.314e-05, 5.314e-05, 5.284e-05, 5.304e-05, 8341.29166767], [1516661280000, 5.304e-05, 5.316e-05, 5.284e-05, 5.297e-05, 52300.80015658], [1516661340000, 5.312e-05, 5.312e-05, 5.29e-05, 5.294e-05, 14765.41309238], [1516661400000, 5.3e-05, 5.33e-05, 5.29e-05, 5.325e-05, 143334.44000365], [1516661460000, 5.32e-05, 5.34e-05, 5.3e-05, 5.339e-05, 124045.33809914], [1516661520000, 5.338e-05, 5.34e-05, 5.306e-05, 5.33e-05, 37875.49874075], [1516661580000, 5.33e-05, 5.339e-05, 5.302e-05, 5.304e-05, 37277.33313071], [1516661640000, 5.304e-05, 5.34e-05, 5.302e-05, 5.34e-05, 66822.80798468], [1516661700000, 5.339e-05, 5.341e-05, 5.33e-05, 5.34e-05, 109928.58845846], [1516661760000, 5.34e-05, 5.346e-05, 5.34e-05, 5.343e-05, 17411.72857974], [1516661820000, 5.341e-05, 5.344e-05, 5.33e-05, 5.33e-05, 12296.0077062], [1516661880000, 5.33e-05, 5.344e-05, 5.308e-05, 5.334e-05, 11685.51146079], [1516661940000, 5.334e-05, 5.344e-05, 5.31e-05, 5.34e-05, 21416.89347065], [1516662000000, 5.343e-05, 5.343e-05, 5.312e-05, 5.312e-05, 15302.64759868], [1516662060000, 5.308e-05, 5.312e-05, 5.301e-05, 5.312e-05, 6931.63694804], [1516662120000, 5.312e-05, 5.336e-05, 5.311e-05, 5.312e-05, 15066.53537803], [1516662180000, 5.336e-05, 5.336e-05, 5.313e-05, 5.333e-05, 8171.94252424], [1516662240000, 5.333e-05, 5.333e-05, 5.312e-05, 5.312e-05, 34142.20289894], [1516662300000, 5.312e-05, 5.312e-05, 5.31e-05, 5.31e-05, 7952.34438779], [1516662360000, 5.31e-05, 5.31e-05, 5.272e-05, 5.284e-05, 41937.79695307], [1516662420000, 5.272e-05, 5.284e-05, 5.272e-05, 5.273e-05, 8768.40212991], [1516662480000, 5.284e-05, 5.284e-05, 5.258e-05, 5.272e-05, 49522.92041127], [1516662540000, 5.272e-05, 5.295e-05, 5.27e-05, 5.27e-05, 34167.53039061], [1516662600000, 5.27e-05, 5.27e-05, 5.22e-05, 5.268e-05, 63966.58244029], [1516662660000, 5.236e-05, 5.267e-05, 5.227e-05, 5.267e-05, 4809.68517199], [1516662720000, 5.267e-05, 5.267e-05, 5.247e-05, 5.25e-05, 31505.96836214], [1516662780000, 5.25e-05, 5.25e-05, 5.245e-05, 5.245e-05, 25610.01529086], [1516662840000, 5.25e-05, 5.25e-05, 5.245e-05, 5.25e-05, 85857.92206055], [1516662900000, 5.245e-05, 5.25e-05, 5.245e-05, 5.25e-05, 6689.94580546], [1516662960000, 5.25e-05, 5.267e-05, 5.246e-05, 5.267e-05, 18134.56998192], [1516663020000, 5.25e-05, 5.27e-05, 5.245e-05, 5.245e-05, 11352.18521636], [1516663080000, 5.247e-05, 5.247e-05, 5.245e-05, 5.247e-05, 1516.94339606], [1516663140000, 5.272e-05, 5.286e-05, 5.245e-05, 5.245e-05, 24881.45057482], [1516663200000, 5.25e-05, 5.281e-05, 5.224e-05, 5.224e-05, 62484.74731301], [1516663260000, 5.224e-05, 5.276e-05, 5.224e-05, 5.276e-05, 47553.20210475], [1516663320000, 5.23e-05, 5.295e-05, 5.229e-05, 5.291e-05, 5076.92230309], [1516663380000, 5.264e-05, 5.27e-05, 5.25e-05, 5.26e-05, 8183.19042166], [1516663440000, 5.26e-05, 5.26e-05, 5.249e-05, 5.25e-05, 13981.78585037], [1516663500000, 5.25e-05, 5.25e-05, 5.25e-05, 5.25e-05, 8504.47578254], [1516663560000, 5.25e-05, 5.25e-05, 5.24e-05, 5.25e-05, 22569.20011072], [1516663620000, 5.24e-05, 5.27e-05, 5.24e-05, 5.269e-05, 29056.58879481], [1516663680000, 5.25e-05, 5.268e-05, 5.228e-05, 5.266e-05, 11164.73312856], [1516663740000, 5.268e-05, 5.299e-05, 5.268e-05, 5.299e-05, 24433.35557439], [1516663800000, 5.299e-05, 5.3e-05, 5.271e-05, 5.295e-05, 29787.99349379], [1516663860000, 5.294e-05, 5.295e-05, 5.274e-05, 5.295e-05, 3557.01284699], [1516663920000, 5.295e-05, 5.295e-05, 5.274e-05, 5.295e-05, 15612.01640771], [1516663980000, 5.295e-05, 5.295e-05, 5.233e-05, 5.293e-05, 23918.94864368], [1516664040000, 5.246e-05, 5.284e-05, 5.243e-05, 5.284e-05, 3127.81466669], [1516664100000, 5.284e-05, 5.284e-05, 5.251e-05, 5.262e-05, 3135.38573888], [1516664160000, 5.262e-05, 5.262e-05, 5.262e-05, 5.262e-05, 16453.13536248], [1516664220000, 5.251e-05, 5.287e-05, 5.251e-05, 5.287e-05, 4845.19778852], [1516664280000, 5.282e-05, 5.287e-05, 5.252e-05, 5.28e-05, 4458.06325198], [1516664340000, 5.256e-05, 5.275e-05, 5.255e-05, 5.275e-05, 4970.57437394], [1516664400000, 5.275e-05, 5.275e-05, 5.257e-05, 5.257e-05, 3662.4629335], [1516664460000, 5.273e-05, 5.275e-05, 5.257e-05, 5.275e-05, 18725.60232515], [1516664520000, 5.257e-05, 5.29e-05, 5.257e-05, 5.29e-05, 19128.49164677], [1516664580000, 5.26e-05, 5.294e-05, 5.26e-05, 5.275e-05, 2594.24169062], [1516664640000, 5.275e-05, 5.294e-05, 5.265e-05, 5.265e-05, 13801.20463779], [1516664700000, 5.265e-05, 5.285e-05, 5.247e-05, 5.247e-05, 25698.73971861], [1516664760000, 5.246e-05, 5.279e-05, 5.241e-05, 5.275e-05, 16799.21840666], [1516664820000, 5.275e-05, 5.275e-05, 5.252e-05, 5.27e-05, 7154.53938045], [1516664880000, 5.265e-05, 5.27e-05, 5.25e-05, 5.269e-05, 4179.58089909], [1516664940000, 5.269e-05, 5.269e-05, 5.26e-05, 5.269e-05, 14749.71021652], [1516665000000, 5.261e-05, 5.278e-05, 5.261e-05, 5.277e-05, 37085.28897453], [1516665060000, 5.277e-05, 5.277e-05, 5.27e-05, 5.27e-05, 9652.56528914], [1516665120000, 5.277e-05, 5.277e-05, 5.25e-05, 5.277e-05, 38732.89314143], [1516665180000, 5.275e-05, 5.278e-05, 5.275e-05, 5.275e-05, 14088.42070607], [1516665240000, 5.276e-05, 5.278e-05, 5.25e-05, 5.278e-05, 56298.05200262], [1516665300000, 5.278e-05, 5.278e-05, 5.175e-05, 5.269e-05, 216838.013413], [1516665360000, 5.251e-05, 5.267e-05, 5.221e-05, 5.241e-05, 44463.55942589], [1516665420000, 5.241e-05, 5.264e-05, 5.221e-05, 5.254e-05, 27934.92701347], [1516665480000, 5.254e-05, 5.26e-05, 5.251e-05, 5.26e-05, 53240.28281101], [1516665540000, 5.255e-05, 5.255e-05, 5.182e-05, 5.187e-05, 29438.67267598], [1516665600000, 5.208e-05, 5.246e-05, 5.189e-05, 5.246e-05, 64582.50520366], [1516665660000, 5.246e-05, 5.246e-05, 5.202e-05, 5.245e-05, 9241.19189705], [1516665720000, 5.245e-05, 5.245e-05, 5.18e-05, 5.216e-05, 20523.2499671], [1516665780000, 5.216e-05, 5.22e-05, 5.178e-05, 5.216e-05, 78354.30230073], [1516665840000, 5.22e-05, 5.224e-05, 5.201e-05, 5.224e-05, 19857.40756607], [1516665900000, 5.224e-05, 5.224e-05, 5.218e-05, 5.218e-05, 12796.58168978], [1516665960000, 5.218e-05, 5.219e-05, 5.203e-05, 5.219e-05, 11004.49962922], [1516666020000, 5.218e-05, 5.218e-05, 5.203e-05, 5.218e-05, 894.35651982], [1516666080000, 5.218e-05, 5.219e-05, 5.217e-05, 5.217e-05, 7873.99677849], [1516666140000, 5.217e-05, 5.25e-05, 5.217e-05, 5.25e-05, 54210.26096406], [1516666200000, 5.25e-05, 5.294e-05, 5.25e-05, 5.277e-05, 63442.28738446], [1516666260000, 5.28e-05, 5.294e-05, 5.277e-05, 5.279e-05, 18034.85231931], [1516666320000, 5.291e-05, 5.295e-05, 5.279e-05, 5.295e-05, 19225.72132821], [1516666380000, 5.295e-05, 5.296e-05, 5.277e-05, 5.277e-05, 41651.55221169], [1516666440000, 5.277e-05, 5.294e-05, 5.224e-05, 5.224e-05, 65875.24525963], [1516666500000, 5.274e-05, 5.277e-05, 5.233e-05, 5.25e-05, 18650.67854487], [1516666560000, 5.267e-05, 5.267e-05, 5.226e-05, 5.234e-05, 22196.88419863], [1516666620000, 5.25e-05, 5.267e-05, 5.234e-05, 5.267e-05, 40137.40799055], [1516666680000, 5.236e-05, 5.267e-05, 5.235e-05, 5.267e-05, 106788.38700704], [1516666740000, 5.267e-05, 5.267e-05, 5.237e-05, 5.265e-05, 8867.04611867], [1516666800000, 5.265e-05, 5.266e-05, 5.265e-05, 5.266e-05, 2428.46873178], [1516666860000, 5.266e-05, 5.267e-05, 5.25e-05, 5.267e-05, 17237.11426748], [1516666920000, 5.265e-05, 5.267e-05, 5.265e-05, 5.265e-05, 6597.130679], [1516666980000, 5.265e-05, 5.265e-05, 5.25e-05, 5.265e-05, 30511.43851074], [1516667040000, 5.264e-05, 5.265e-05, 5.25e-05, 5.25e-05, 4087.65461449], [1516667100000, 5.251e-05, 5.251e-05, 5.237e-05, 5.237e-05, 55097.87758441], [1516667160000, 5.238e-05, 5.238e-05, 5.236e-05, 5.236e-05, 12348.20369094], [1516667220000, 5.237e-05, 5.237e-05, 5.236e-05, 5.236e-05, 29199.40065781], [1516667280000, 5.236e-05, 5.236e-05, 5.233e-05, 5.233e-05, 28046.39675544], [1516667340000, 5.224e-05, 5.224e-05, 5.222e-05, 5.224e-05, 20499.30400919], [1516667400000, 5.224e-05, 5.238e-05, 5.224e-05, 5.238e-05, 19032.53646056], [1516667460000, 5.238e-05, 5.238e-05, 5.226e-05, 5.226e-05, 7849.08328965], [1516667520000, 5.238e-05, 5.249e-05, 5.238e-05, 5.249e-05, 4388.77190307], [1516667580000, 5.249e-05, 5.249e-05, 5.23e-05, 5.249e-05, 15707.132412], [1516667640000, 5.249e-05, 5.25e-05, 5.227e-05, 5.25e-05, 14486.78284142], [1516667700000, 5.248e-05, 5.252e-05, 5.248e-05, 5.252e-05, 39234.87753802], [1516667760000, 5.252e-05, 5.252e-05, 5.24e-05, 5.252e-05, 127877.55497205], [1516667820000, 5.252e-05, 5.252e-05, 5.251e-05, 5.252e-05, 34682.30525936], [1516667880000, 5.252e-05, 5.252e-05, 5.25e-05, 5.25e-05, 34982.12883603], [1516667940000, 5.251e-05, 5.252e-05, 5.251e-05, 5.251e-05, 1126.66396225], [1516668000000, 5.251e-05, 5.251e-05, 5.25e-05, 5.25e-05, 3392.00081619], [1516668060000, 5.25e-05, 5.251e-05, 5.25e-05, 5.251e-05, 5997.83190146], [1516668120000, 5.251e-05, 5.251e-05, 5.25e-05, 5.251e-05, 15263.27306466], [1516668180000, 5.25e-05, 5.25e-05, 5.25e-05, 5.25e-05, 12243.86274686], [1516668240000, 5.251e-05, 5.251e-05, 5.241e-05, 5.241e-05, 26249.37781264], [1516668300000, 5.241e-05, 5.241e-05, 5.239e-05, 5.24e-05, 11880.91975465], [1516668360000, 5.24e-05, 5.25e-05, 5.239e-05, 5.25e-05, 39208.47707204], [1516668420000, 5.239e-05, 5.25e-05, 5.213e-05, 5.247e-05, 14268.82105647], [1516668480000, 5.245e-05, 5.245e-05, 5.241e-05, 5.241e-05, 24883.7984412], [1516668540000, 5.245e-05, 5.249e-05, 5.241e-05, 5.241e-05, 16907.64493934], [1516668600000, 5.248e-05, 5.249e-05, 5.248e-05, 5.249e-05, 3364.15606051], [1516668660000, 5.247e-05, 5.25e-05, 5.245e-05, 5.25e-05, 4162.47654104], [1516668720000, 5.25e-05, 5.276e-05, 5.248e-05, 5.276e-05, 40084.51260115], [1516668780000, 5.276e-05, 5.276e-05, 5.211e-05, 5.211e-05, 15717.16607885], [1516668840000, 5.251e-05, 5.253e-05, 5.247e-05, 5.248e-05, 2870.48609881], [1516668900000, 5.248e-05, 5.248e-05, 5.222e-05, 5.245e-05, 3694.94024725], [1516668960000, 5.245e-05, 5.245e-05, 5.22e-05, 5.225e-05, 14191.31753406], [1516669020000, 5.225e-05, 5.225e-05, 5.22e-05, 5.223e-05, 10006.53325022], [1516669080000, 5.223e-05, 5.225e-05, 5.22e-05, 5.225e-05, 5668.76191626], [1516669140000, 5.225e-05, 5.245e-05, 5.225e-05, 5.245e-05, 8943.95318974], [1516669200000, 5.245e-05, 5.245e-05, 5.244e-05, 5.245e-05, 706.68783706], [1516669260000, 5.244e-05, 5.244e-05, 5.244e-05, 5.244e-05, 3235.89054686], [1516669320000, 5.243e-05, 5.244e-05, 5.225e-05, 5.241e-05, 7940.0447312], [1516669380000, 5.241e-05, 5.245e-05, 5.225e-05, 5.225e-05, 22848.16969536], [1516669440000, 5.245e-05, 5.245e-05, 5.234e-05, 5.245e-05, 8126.72733479], [1516669500000, 5.245e-05, 5.245e-05, 5.225e-05, 5.244e-05, 949.99187921], [1516669560000, 5.243e-05, 5.243e-05, 5.242e-05, 5.242e-05, 334.03283058], [1516669620000, 5.243e-05, 5.244e-05, 5.243e-05, 5.244e-05, 18673.26498894], [1516669680000, 5.244e-05, 5.244e-05, 5.243e-05, 5.244e-05, 71283.26768126], [1516669740000, 5.245e-05, 5.259e-05, 5.245e-05, 5.25e-05, 113399.83017953], [1516669800000, 5.26e-05, 5.276e-05, 5.26e-05, 5.275e-05, 24265.55105768], [1516669860000, 5.275e-05, 5.276e-05, 5.274e-05, 5.276e-05, 15140.91578649], [1516669920000, 5.276e-05, 5.276e-05, 5.274e-05, 5.274e-05, 24101.26048762], [1516669980000, 5.275e-05, 5.275e-05, 5.25e-05, 5.274e-05, 16418.67448342], [1516670040000, 5.274e-05, 5.274e-05, 5.25e-05, 5.25e-05, 13776.60464677], [1516670100000, 5.25e-05, 5.25e-05, 5.243e-05, 5.248e-05, 64220.44648247], [1516670160000, 5.247e-05, 5.25e-05, 5.243e-05, 5.25e-05, 59274.79194665], [1516670220000, 5.25e-05, 5.27e-05, 5.243e-05, 5.27e-05, 50110.26454546], [1516670280000, 5.26e-05, 5.27e-05, 5.245e-05, 5.27e-05, 7783.45636969], [1516670340000, 5.27e-05, 5.27e-05, 5.27e-05, 5.27e-05, 1308.40755106], [1516670400000, 5.27e-05, 5.27e-05, 5.268e-05, 5.268e-05, 10582.54902574], [1516670460000, 5.268e-05, 5.268e-05, 5.26e-05, 5.26e-05, 13965.13958724], [1516670520000, 5.261e-05, 5.27e-05, 5.261e-05, 5.27e-05, 42819.26941594], [1516670580000, 5.27e-05, 5.27e-05, 5.267e-05, 5.267e-05, 21522.02015372], [1516670640000, 5.267e-05, 5.267e-05, 5.265e-05, 5.267e-05, 30105.04773488], [1516670700000, 5.267e-05, 5.273e-05, 5.267e-05, 5.272e-05, 116364.72099841], [1516670760000, 5.272e-05, 5.272e-05, 5.27e-05, 5.271e-05, 60701.45042137], [1516670820000, 5.271e-05, 5.271e-05, 5.27e-05, 5.271e-05, 7751.53439557], [1516670880000, 5.27e-05, 5.271e-05, 5.267e-05, 5.27e-05, 38363.74180546], [1516670940000, 5.27e-05, 5.27e-05, 5.27e-05, 5.27e-05, 1447.62160759], [1516671000000, 5.27e-05, 5.27e-05, 5.268e-05, 5.268e-05, 4936.91964874], [1516671060000, 5.268e-05, 5.268e-05, 5.267e-05, 5.268e-05, 20562.22228538], [1516671120000, 5.268e-05, 5.27e-05, 5.267e-05, 5.27e-05, 9550.8927612], [1516671180000, 5.27e-05, 5.27e-05, 5.268e-05, 5.268e-05, 25114.75677818], [1516671240000, 5.27e-05, 5.27e-05, 5.267e-05, 5.27e-05, 29796.55836063], [1516671300000, 5.267e-05, 5.27e-05, 5.267e-05, 5.268e-05, 22465.02184394], [1516671360000, 5.267e-05, 5.268e-05, 5.246e-05, 5.267e-05, 82087.63731379], [1516671420000, 5.26e-05, 5.266e-05, 5.255e-05, 5.265e-05, 53559.33461441], [1516671480000, 5.255e-05, 5.265e-05, 5.255e-05, 5.26e-05, 16833.47575244], [1516671540000, 5.26e-05, 5.264e-05, 5.246e-05, 5.263e-05, 18953.93934952], [1516671600000, 5.263e-05, 5.264e-05, 5.258e-05, 5.264e-05, 7587.61163131], [1516671660000, 5.264e-05, 5.264e-05, 5.259e-05, 5.263e-05, 11834.14871582], [1516671720000, 5.259e-05, 5.263e-05, 5.259e-05, 5.263e-05, 35901.14846832], [1516671780000, 5.263e-05, 5.263e-05, 5.263e-05, 5.263e-05, 2105.61217992], [1516671840000, 5.263e-05, 5.263e-05, 5.263e-05, 5.263e-05, 16039.85553391], [1516671900000, 5.263e-05, 5.263e-05, 5.263e-05, 5.263e-05, 22366.7156642], [1516671960000, 5.26e-05, 5.264e-05, 5.26e-05, 5.26e-05, 2064.12160633], [1516672020000, 5.26e-05, 5.264e-05, 5.26e-05, 5.26e-05, 5886.40476647], [1516672080000, 5.26e-05, 5.263e-05, 5.26e-05, 5.263e-05, 1794.64766065], [1516672140000, 5.263e-05, 5.263e-05, 5.259e-05, 5.262e-05, 8045.1642619], [1516672200000, 5.259e-05, 5.262e-05, 5.259e-05, 5.259e-05, 13755.96813353], [1516672260000, 5.259e-05, 5.264e-05, 5.259e-05, 5.261e-05, 193776.43544289], [1516672320000, 5.259e-05, 5.265e-05, 5.259e-05, 5.264e-05, 74974.01374244], [1516672380000, 5.261e-05, 5.265e-05, 5.261e-05, 5.265e-05, 5396.91868971], [1516672440000, 5.265e-05, 5.265e-05, 5.264e-05, 5.265e-05, 19348.4688733], [1516672500000, 5.265e-05, 5.265e-05, 5.264e-05, 5.264e-05, 21202.89905975], [1516672560000, 5.264e-05, 5.264e-05, 5.261e-05, 5.264e-05, 25033.75216669], [1516672620000, 5.264e-05, 5.264e-05, 5.264e-05, 5.264e-05, 345.65978046], [1516672680000, 5.264e-05, 5.264e-05, 5.261e-05, 5.263e-05, 15812.24635079], [1516672740000, 5.263e-05, 5.263e-05, 5.259e-05, 5.259e-05, 14614.15049094], [1516672800000, 5.259e-05, 5.264e-05, 5.259e-05, 5.264e-05, 9449.27845354], [1516672860000, 5.261e-05, 5.264e-05, 5.261e-05, 5.264e-05, 2164.09858053], [1516672920000, 5.261e-05, 5.264e-05, 5.261e-05, 5.264e-05, 2499.19601743], [1516672980000, 5.261e-05, 5.265e-05, 5.246e-05, 5.265e-05, 56764.37291888], [1516673040000, 5.261e-05, 5.265e-05, 5.242e-05, 5.264e-05, 3731.7093958], [1516673100000, 5.264e-05, 5.265e-05, 5.264e-05, 5.265e-05, 1793.29272474], [1516673160000, 5.265e-05, 5.265e-05, 5.248e-05, 5.265e-05, 9709.94591167], [1516673220000, 5.265e-05, 5.265e-05, 5.242e-05, 5.264e-05, 4503.58703295], [1516673280000, 5.264e-05, 5.264e-05, 5.243e-05, 5.243e-05, 1147.96675011], [1516673340000, 5.264e-05, 5.264e-05, 5.262e-05, 5.262e-05, 1048.50595435], [1516673400000, 5.264e-05, 5.264e-05, 5.259e-05, 5.263e-05, 16089.61804484], [1516673460000, 5.25e-05, 5.263e-05, 5.25e-05, 5.262e-05, 6662.14025613], [1516673520000, 5.26e-05, 5.262e-05, 5.249e-05, 5.249e-05, 5612.12935182], [1516673580000, 5.262e-05, 5.262e-05, 5.248e-05, 5.249e-05, 8758.51583969], [1516673640000, 5.262e-05, 5.262e-05, 5.249e-05, 5.249e-05, 8786.39541578], [1516673700000, 5.248e-05, 5.248e-05, 5.24e-05, 5.242e-05, 25383.98304377], [1516673760000, 5.242e-05, 5.242e-05, 5.23e-05, 5.235e-05, 6581.65280472], [1516673820000, 5.235e-05, 5.235e-05, 5.234e-05, 5.235e-05, 3802.9530132], [1516673880000, 5.235e-05, 5.235e-05, 5.235e-05, 5.235e-05, 4434.58151296], [1516673940000, 5.235e-05, 5.235e-05, 5.234e-05, 5.234e-05, 22382.23940396], [1516674000000, 5.234e-05, 5.234e-05, 5.23e-05, 5.234e-05, 1850.26652598], [1516674060000, 5.233e-05, 5.233e-05, 5.23e-05, 5.23e-05, 24696.44637193], [1516674120000, 5.233e-05, 5.233e-05, 5.23e-05, 5.233e-05, 20945.21054052], [1516674180000, 5.233e-05, 5.234e-05, 5.231e-05, 5.234e-05, 34163.58740277], [1516674240000, 5.234e-05, 5.235e-05, 5.234e-05, 5.235e-05, 114107.81018838], [1516674300000, 5.233e-05, 5.233e-05, 5.231e-05, 5.232e-05, 6259.68301273], [1516674360000, 5.232e-05, 5.235e-05, 5.231e-05, 5.234e-05, 86940.20184834], [1516674420000, 5.234e-05, 5.235e-05, 5.234e-05, 5.234e-05, 179900.7344574], [1516674480000, 5.233e-05, 5.234e-05, 5.233e-05, 5.234e-05, 106613.02380601], [1516674540000, 5.234e-05, 5.263e-05, 5.234e-05, 5.263e-05, 35492.21022522], [1516674600000, 5.263e-05, 5.265e-05, 5.263e-05, 5.265e-05, 4463.59787383], [1516674660000, 5.265e-05, 5.265e-05, 5.265e-05, 5.265e-05, 2994.63677788], [1516674720000, 5.269e-05, 5.271e-05, 5.269e-05, 5.27e-05, 48807.6509912], [1516674780000, 5.27e-05, 5.271e-05, 5.265e-05, 5.265e-05, 12428.51994803], [1516674840000, 5.265e-05, 5.265e-05, 5.246e-05, 5.246e-05, 5669.07113475], [1516674900000, 5.247e-05, 5.247e-05, 5.243e-05, 5.243e-05, 9304.7382969], [1516674960000, 5.246e-05, 5.26e-05, 5.246e-05, 5.26e-05, 1903.18339332], [1516675020000, 5.263e-05, 5.263e-05, 5.26e-05, 5.263e-05, 26213.13204768], [1516675080000, 5.263e-05, 5.263e-05, 5.261e-05, 5.261e-05, 7565.03746099], [1516675140000, 5.261e-05, 5.263e-05, 5.261e-05, 5.263e-05, 17843.64894131], [1516675200000, 5.263e-05, 5.263e-05, 5.244e-05, 5.244e-05, 10876.5214224], [1516675260000, 5.261e-05, 5.264e-05, 5.261e-05, 5.264e-05, 29629.55833517], [1516675320000, 5.264e-05, 5.264e-05, 5.264e-05, 5.264e-05, 5210.67967459], [1516675380000, 5.264e-05, 5.264e-05, 5.263e-05, 5.264e-05, 17962.40270715], [1516675440000, 5.264e-05, 5.264e-05, 5.263e-05, 5.264e-05, 21251.33725272], [1516675500000, 5.264e-05, 5.264e-05, 5.244e-05, 5.244e-05, 3771.63982709], [1516675560000, 5.244e-05, 5.244e-05, 5.161e-05, 5.239e-05, 172945.93436213], [1516675620000, 5.238e-05, 5.241e-05, 5.207e-05, 5.241e-05, 73911.46517429], [1516675680000, 5.241e-05, 5.241e-05, 5.238e-05, 5.241e-05, 55026.51843468], [1516675740000, 5.238e-05, 5.241e-05, 5.238e-05, 5.24e-05, 33346.3478312], [1516675800000, 5.24e-05, 5.241e-05, 5.24e-05, 5.24e-05, 32093.76471401], [1516675860000, 5.24e-05, 5.24e-05, 5.24e-05, 5.24e-05, 14366.32480458], [1516675920000, 5.24e-05, 5.241e-05, 5.24e-05, 5.241e-05, 35507.87193327], [1516675980000, 5.241e-05, 5.241e-05, 5.24e-05, 5.241e-05, 34186.87262577], [1516676040000, 5.24e-05, 5.241e-05, 5.239e-05, 5.239e-05, 18185.83865333], [1516676100000, 5.237e-05, 5.239e-05, 5.236e-05, 5.237e-05, 4968.83787159], [1516676160000, 5.236e-05, 5.237e-05, 5.231e-05, 5.237e-05, 9628.0910166], [1516676220000, 5.237e-05, 5.239e-05, 5.235e-05, 5.238e-05, 54491.93027067], [1516676280000, 5.238e-05, 5.238e-05, 5.237e-05, 5.237e-05, 52027.16567139], [1516676340000, 5.237e-05, 5.237e-05, 5.209e-05, 5.209e-05, 74968.75279181], [1516676400000, 5.234e-05, 5.234e-05, 5.222e-05, 5.234e-05, 10217.67489769], [1516676460000, 5.234e-05, 5.237e-05, 5.223e-05, 5.237e-05, 18620.03595826], [1516676520000, 5.237e-05, 5.238e-05, 5.209e-05, 5.238e-05, 68538.86188176], [1516676580000, 5.238e-05, 5.238e-05, 5.225e-05, 5.238e-05, 36760.85675793], [1516676640000, 5.238e-05, 5.239e-05, 5.232e-05, 5.232e-05, 51323.91159861], [1516676700000, 5.232e-05, 5.238e-05, 5.223e-05, 5.228e-05, 41141.97046252], [1516676760000, 5.238e-05, 5.238e-05, 5.238e-05, 5.238e-05, 15533.2032528], [1516676820000, 5.237e-05, 5.238e-05, 5.22e-05, 5.228e-05, 88100.03211279], [1516676880000, 5.228e-05, 5.238e-05, 5.222e-05, 5.229e-05, 18835.00772791], [1516676940000, 5.238e-05, 5.238e-05, 5.23e-05, 5.237e-05, 123965.63263232], [1516677000000, 5.235e-05, 5.238e-05, 5.235e-05, 5.238e-05, 8887.55221439], [1516677060000, 5.237e-05, 5.238e-05, 5.231e-05, 5.235e-05, 28028.06650496], [1516677120000, 5.238e-05, 5.239e-05, 5.238e-05, 5.238e-05, 51663.27753629], [1516677180000, 5.238e-05, 5.238e-05, 5.237e-05, 5.237e-05, 42791.72402613], [1516677240000, 5.237e-05, 5.238e-05, 5.235e-05, 5.238e-05, 48842.25071734], [1516677300000, 5.238e-05, 5.238e-05, 5.237e-05, 5.238e-05, 8202.63900518], [1516677360000, 5.238e-05, 5.238e-05, 5.237e-05, 5.237e-05, 43433.46981655], [1516677420000, 5.238e-05, 5.238e-05, 5.236e-05, 5.236e-05, 45709.91936522], [1516677480000, 5.237e-05, 5.237e-05, 5.236e-05, 5.237e-05, 54331.11115256], [1516677540000, 5.236e-05, 5.238e-05, 5.236e-05, 5.238e-05, 68876.25868671], [1516677600000, 5.237e-05, 5.25e-05, 5.237e-05, 5.25e-05, 136225.34844803], [1516677660000, 5.247e-05, 5.25e-05, 5.237e-05, 5.248e-05, 81781.71798222], [1516677720000, 5.248e-05, 5.248e-05, 5.237e-05, 5.247e-05, 3228.05856021], [1516677780000, 5.246e-05, 5.248e-05, 5.237e-05, 5.248e-05, 157379.57414376], [1516677840000, 5.248e-05, 5.248e-05, 5.246e-05, 5.246e-05, 41025.86463157], [1516677900000, 5.24e-05, 5.248e-05, 5.24e-05, 5.248e-05, 7610.43515905], [1516677960000, 5.248e-05, 5.248e-05, 5.236e-05, 5.246e-05, 51691.64574734], [1516678020000, 5.246e-05, 5.248e-05, 5.236e-05, 5.248e-05, 14391.33229699], [1516678080000, 5.248e-05, 5.248e-05, 5.236e-05, 5.248e-05, 75436.14115194], [1516678140000, 5.246e-05, 5.246e-05, 5.246e-05, 5.246e-05, 21731.1812385], [1516678200000, 5.246e-05, 5.248e-05, 5.236e-05, 5.246e-05, 18181.20392886], [1516678260000, 5.246e-05, 5.248e-05, 5.236e-05, 5.247e-05, 119216.93781289], [1516678320000, 5.237e-05, 5.248e-05, 5.236e-05, 5.248e-05, 37072.87223632], [1516678380000, 5.248e-05, 5.256e-05, 5.248e-05, 5.248e-05, 17117.07693501], [1516678440000, 5.255e-05, 5.256e-05, 5.248e-05, 5.256e-05, 2425.03106688], [1516678500000, 5.249e-05, 5.256e-05, 5.248e-05, 5.254e-05, 17951.042776], [1516678560000, 5.254e-05, 5.255e-05, 5.248e-05, 5.253e-05, 50595.31283503], [1516678620000, 5.248e-05, 5.253e-05, 5.248e-05, 5.253e-05, 57573.00175154], [1516678680000, 5.252e-05, 5.253e-05, 5.252e-05, 5.252e-05, 8020.61799182], [1516678740000, 5.252e-05, 5.252e-05, 5.251e-05, 5.251e-05, 263.13563504], [1516678800000, 5.251e-05, 5.251e-05, 5.236e-05, 5.247e-05, 39774.90408491], [1516678860000, 5.236e-05, 5.247e-05, 5.236e-05, 5.246e-05, 43361.47624543], [1516678920000, 5.246e-05, 5.246e-05, 5.236e-05, 5.24e-05, 9571.94278026], [1516678980000, 5.236e-05, 5.24e-05, 5.236e-05, 5.237e-05, 61114.2262331], [1516679040000, 5.24e-05, 5.24e-05, 5.236e-05, 5.24e-05, 149928.11906291], [1516679100000, 5.24e-05, 5.24e-05, 5.236e-05, 5.24e-05, 14355.91519787], [1516679160000, 5.24e-05, 5.24e-05, 5.237e-05, 5.237e-05, 50034.86408025], [1516679220000, 5.24e-05, 5.24e-05, 5.237e-05, 5.237e-05, 664.73297136], [1516679280000, 5.237e-05, 5.24e-05, 5.237e-05, 5.24e-05, 14035.38006518], [1516679340000, 5.24e-05, 5.24e-05, 5.24e-05, 5.24e-05, 2596.21868509], [1516679400000, 5.237e-05, 5.24e-05, 5.237e-05, 5.24e-05, 22098.16837076], [1516679460000, 5.24e-05, 5.24e-05, 5.238e-05, 5.238e-05, 30283.83447812], [1516679520000, 5.238e-05, 5.238e-05, 5.238e-05, 5.238e-05, 33490.89205], [1516679580000, 5.238e-05, 5.246e-05, 5.237e-05, 5.246e-05, 384686.50708447], [1516679640000, 5.246e-05, 5.264e-05, 5.246e-05, 5.264e-05, 38509.76115217], [1516679700000, 5.264e-05, 5.266e-05, 5.264e-05, 5.264e-05, 9949.62629516], [1516679760000, 5.264e-05, 5.264e-05, 5.258e-05, 5.258e-05, 10807.88423932], [1516679820000, 5.258e-05, 5.26e-05, 5.256e-05, 5.256e-05, 22047.5337986], [1516679880000, 5.256e-05, 5.256e-05, 5.25e-05, 5.256e-05, 167049.9306717], [1516679940000, 5.256e-05, 5.256e-05, 5.241e-05, 5.241e-05, 10591.35666308], [1516680000000, 5.255e-05, 5.255e-05, 5.237e-05, 5.254e-05, 57482.47379627], [1516680060000, 5.254e-05, 5.256e-05, 5.237e-05, 5.237e-05, 155853.65161984], [1516680120000, 5.237e-05, 5.241e-05, 5.237e-05, 5.241e-05, 8966.56284144], [1516680180000, 5.241e-05, 5.256e-05, 5.237e-05, 5.256e-05, 49431.08441985], [1516680240000, 5.255e-05, 5.256e-05, 5.244e-05, 5.256e-05, 1928.02298324], [1516680300000, 5.256e-05, 5.256e-05, 5.25e-05, 5.25e-05, 3860.49040017], [1516680360000, 5.256e-05, 5.256e-05, 5.244e-05, 5.244e-05, 8726.922214], [1516680420000, 5.244e-05, 5.266e-05, 5.244e-05, 5.255e-05, 79617.58950383], [1516680480000, 5.244e-05, 5.254e-05, 5.244e-05, 5.25e-05, 11036.18986299], [1516680540000, 5.252e-05, 5.253e-05, 5.252e-05, 5.253e-05, 481.81027231], [1516680600000, 5.253e-05, 5.253e-05, 5.25e-05, 5.253e-05, 16196.84932547], [1516680660000, 5.253e-05, 5.254e-05, 5.25e-05, 5.252e-05, 4548.68957102], [1516680720000, 5.252e-05, 5.252e-05, 5.25e-05, 5.252e-05, 6035.03194735], [1516680780000, 5.252e-05, 5.252e-05, 5.245e-05, 5.25e-05, 20363.79332183], [1516680840000, 5.245e-05, 5.25e-05, 5.245e-05, 5.25e-05, 420.87041865], [1516680900000, 5.25e-05, 5.25e-05, 5.248e-05, 5.25e-05, 7433.40745442], [1516680960000, 5.248e-05, 5.25e-05, 5.248e-05, 5.25e-05, 470.80121773], [1516681020000, 5.249e-05, 5.249e-05, 5.248e-05, 5.248e-05, 638.98194516], [1516681080000, 5.246e-05, 5.25e-05, 5.246e-05, 5.249e-05, 4229.7559682], [1516681140000, 5.249e-05, 5.249e-05, 5.249e-05, 5.249e-05, 2724.92129479], [1516681200000, 5.248e-05, 5.248e-05, 5.246e-05, 5.246e-05, 16137.30427842], [1516681260000, 5.246e-05, 5.247e-05, 5.245e-05, 5.246e-05, 26121.55203718], [1516681320000, 5.246e-05, 5.247e-05, 5.23e-05, 5.246e-05, 53528.96988494], [1516681380000, 5.244e-05, 5.244e-05, 5.244e-05, 5.244e-05, 207.51188285], [1516681440000, 5.244e-05, 5.244e-05, 5.228e-05, 5.23e-05, 58355.84575437], [1516681500000, 5.23e-05, 5.23e-05, 5.228e-05, 5.23e-05, 11028.41876329], [1516681560000, 5.229e-05, 5.229e-05, 5.218e-05, 5.228e-05, 20679.26663401], [1516681620000, 5.229e-05, 5.23e-05, 5.228e-05, 5.23e-05, 24390.70014886], [1516681680000, 5.23e-05, 5.23e-05, 5.23e-05, 5.23e-05, 14568.38726387], [1516681740000, 5.228e-05, 5.23e-05, 5.228e-05, 5.229e-05, 8944.80582697], [1516681800000, 5.23e-05, 5.23e-05, 5.228e-05, 5.23e-05, 33722.72913472], [1516681860000, 5.229e-05, 5.246e-05, 5.228e-05, 5.246e-05, 106829.03834049], [1516681920000, 5.246e-05, 5.246e-05, 5.243e-05, 5.246e-05, 50376.12932203], [1516681980000, 5.248e-05, 5.249e-05, 5.248e-05, 5.248e-05, 51232.47317026], [1516682040000, 5.248e-05, 5.25e-05, 5.248e-05, 5.25e-05, 68087.9684905], [1516682100000, 5.249e-05, 5.249e-05, 5.248e-05, 5.249e-05, 3865.82193585], [1516682160000, 5.249e-05, 5.25e-05, 5.249e-05, 5.249e-05, 38511.93991839], [1516682220000, 5.249e-05, 5.25e-05, 5.246e-05, 5.246e-05, 7859.7082775], [1516682280000, 5.248e-05, 5.258e-05, 5.242e-05, 5.25e-05, 33509.49939793], [1516682340000, 5.258e-05, 5.258e-05, 5.242e-05, 5.25e-05, 5768.82746605], [1516682400000, 5.226e-05, 5.25e-05, 5.226e-05, 5.249e-05, 1340.81400561], [1516682460000, 5.248e-05, 5.248e-05, 5.226e-05, 5.248e-05, 2921.31353475], [1516682520000, 5.248e-05, 5.248e-05, 5.226e-05, 5.248e-05, 1796.3430334], [1516682580000, 5.24e-05, 5.248e-05, 5.226e-05, 5.248e-05, 21732.03263733], [1516682640000, 5.248e-05, 5.248e-05, 5.247e-05, 5.248e-05, 9184.00278342], [1516682700000, 5.248e-05, 5.248e-05, 5.235e-05, 5.245e-05, 91883.36703481], [1516682760000, 5.245e-05, 5.245e-05, 5.245e-05, 5.245e-05, 110229.21968307], [1516682820000, 5.245e-05, 5.246e-05, 5.243e-05, 5.246e-05, 77491.75183168], [1516682880000, 5.243e-05, 5.246e-05, 5.242e-05, 5.245e-05, 37689.44765969], [1516682940000, 5.248e-05, 5.249e-05, 5.245e-05, 5.249e-05, 19390.27312016], [1516683000000, 5.248e-05, 5.25e-05, 5.248e-05, 5.25e-05, 67330.66285283], [1516683060000, 5.249e-05, 5.25e-05, 5.249e-05, 5.249e-05, 34820.73409597], [1516683120000, 5.249e-05, 5.25e-05, 5.248e-05, 5.25e-05, 92765.86632812], [1516683180000, 5.25e-05, 5.25e-05, 5.248e-05, 5.248e-05, 52430.95952947], [1516683240000, 5.248e-05, 5.248e-05, 5.248e-05, 5.248e-05, 13269.29615346], [1516683300000, 5.249e-05, 5.249e-05, 5.248e-05, 5.249e-05, 4010.1050185], [1516683360000, 5.249e-05, 5.249e-05, 5.248e-05, 5.249e-05, 4110.99684818], [1516683420000, 5.248e-05, 5.248e-05, 5.247e-05, 5.247e-05, 8898.12556743], [1516683480000, 5.235e-05, 5.248e-05, 5.227e-05, 5.248e-05, 8425.91087365], [1516683540000, 5.248e-05, 5.25e-05, 5.227e-05, 5.249e-05, 160436.38121429], [1516683600000, 5.249e-05, 5.25e-05, 5.229e-05, 5.249e-05, 23161.46410286], [1516683660000, 5.249e-05, 5.25e-05, 5.24e-05, 5.25e-05, 162323.64301286], [1516683720000, 5.25e-05, 5.26e-05, 5.233e-05, 5.259e-05, 19426.85466366], [1516683780000, 5.259e-05, 5.259e-05, 5.251e-05, 5.259e-05, 16449.23524075], [1516683840000, 5.259e-05, 5.259e-05, 5.258e-05, 5.259e-05, 13105.8534008], [1516683900000, 5.259e-05, 5.26e-05, 5.259e-05, 5.26e-05, 38998.49927102], [1516683960000, 5.26e-05, 5.26e-05, 5.259e-05, 5.259e-05, 1590.69239921], [1516684020000, 5.263e-05, 5.266e-05, 5.234e-05, 5.266e-05, 36453.20437546], [1516684080000, 5.266e-05, 5.266e-05, 5.24e-05, 5.245e-05, 29106.36560355], [1516684140000, 5.264e-05, 5.265e-05, 5.245e-05, 5.265e-05, 55368.68961189], [1516684200000, 5.259e-05, 5.27e-05, 5.246e-05, 5.246e-05, 51772.24444661], [1516684260000, 5.246e-05, 5.267e-05, 5.246e-05, 5.25e-05, 32377.44985337], [1516684320000, 5.25e-05, 5.254e-05, 5.25e-05, 5.254e-05, 1884.44252644], [1516684380000, 5.254e-05, 5.254e-05, 5.25e-05, 5.251e-05, 10558.40789822], [1516684440000, 5.254e-05, 5.254e-05, 5.25e-05, 5.251e-05, 18776.68110019], [1516684500000, 5.251e-05, 5.265e-05, 5.225e-05, 5.225e-05, 233528.3589507], [1516684560000, 5.254e-05, 5.263e-05, 5.232e-05, 5.26e-05, 43889.53119401], [1516684620000, 5.232e-05, 5.26e-05, 5.232e-05, 5.241e-05, 4951.96898759], [1516684680000, 5.259e-05, 5.268e-05, 5.259e-05, 5.259e-05, 75103.99629685], [1516684740000, 5.267e-05, 5.267e-05, 5.251e-05, 5.251e-05, 6976.35381815], [1516684800000, 5.251e-05, 5.259e-05, 5.24e-05, 5.24e-05, 18614.17529291], [1516684860000, 5.251e-05, 5.269e-05, 5.251e-05, 5.258e-05, 42212.20220807], [1516684920000, 5.258e-05, 5.265e-05, 5.253e-05, 5.26e-05, 4398.42248173], [1516684980000, 5.26e-05, 5.265e-05, 5.255e-05, 5.264e-05, 32357.35402763], [1516685040000, 5.264e-05, 5.264e-05, 5.253e-05, 5.253e-05, 16404.18461659], [1516685100000, 5.253e-05, 5.265e-05, 5.253e-05, 5.264e-05, 17293.81023896], [1516685160000, 5.253e-05, 5.264e-05, 5.253e-05, 5.262e-05, 2703.09408699], [1516685220000, 5.262e-05, 5.262e-05, 5.253e-05, 5.253e-05, 2652.97693585], [1516685280000, 5.262e-05, 5.265e-05, 5.257e-05, 5.257e-05, 29014.67707362], [1516685340000, 5.256e-05, 5.26e-05, 5.256e-05, 5.258e-05, 48323.11004271], [1516685400000, 5.258e-05, 5.26e-05, 5.253e-05, 5.253e-05, 55122.50729024], [1516685460000, 5.253e-05, 5.26e-05, 5.253e-05, 5.26e-05, 98602.57655736], [1516685520000, 5.253e-05, 5.26e-05, 5.253e-05, 5.259e-05, 35885.35839165], [1516685580000, 5.26e-05, 5.26e-05, 5.253e-05, 5.253e-05, 4347.75794376], [1516685640000, 5.253e-05, 5.26e-05, 5.243e-05, 5.243e-05, 6922.18872284], [1516685700000, 5.253e-05, 5.253e-05, 5.243e-05, 5.253e-05, 1762.16371744], [1516685760000, 5.253e-05, 5.26e-05, 5.243e-05, 5.253e-05, 23615.53500714], [1516685820000, 5.243e-05, 5.255e-05, 5.24e-05, 5.255e-05, 14758.93201655], [1516685880000, 5.253e-05, 5.259e-05, 5.244e-05, 5.259e-05, 18335.76862099], [1516685940000, 5.259e-05, 5.259e-05, 5.244e-05, 5.244e-05, 26671.2786769], [1516686000000, 5.258e-05, 5.26e-05, 5.244e-05, 5.244e-05, 58004.28302408], [1516686060000, 5.253e-05, 5.259e-05, 5.253e-05, 5.259e-05, 1200.18601863], [1516686120000, 5.253e-05, 5.26e-05, 5.253e-05, 5.26e-05, 9568.92484195], [1516686180000, 5.259e-05, 5.26e-05, 5.254e-05, 5.26e-05, 79694.93304742], [1516686240000, 5.254e-05, 5.26e-05, 5.253e-05, 5.26e-05, 29406.31193474], [1516686300000, 5.253e-05, 5.26e-05, 5.24e-05, 5.259e-05, 6952.31271465], [1516686360000, 5.259e-05, 5.26e-05, 5.24e-05, 5.25e-05, 966.77124811], [1516686420000, 5.25e-05, 5.26e-05, 5.24e-05, 5.24e-05, 10690.96789625], [1516686480000, 5.24e-05, 5.259e-05, 5.24e-05, 5.257e-05, 2512.84951944], [1516686540000, 5.258e-05, 5.26e-05, 5.242e-05, 5.242e-05, 3010.69890736], [1516686600000, 5.257e-05, 5.259e-05, 5.243e-05, 5.256e-05, 16735.66620681], [1516686660000, 5.256e-05, 5.256e-05, 5.243e-05, 5.244e-05, 925.08888172], [1516686720000, 5.256e-05, 5.257e-05, 5.244e-05, 5.256e-05, 34055.68593046], [1516686780000, 5.244e-05, 5.257e-05, 5.244e-05, 5.245e-05, 24454.44844113], [1516686840000, 5.245e-05, 5.257e-05, 5.245e-05, 5.257e-05, 4745.88781203], [1516686900000, 5.26e-05, 5.262e-05, 5.257e-05, 5.257e-05, 55534.39625232], [1516686960000, 5.252e-05, 5.262e-05, 5.248e-05, 5.248e-05, 33133.53282328], [1516687020000, 5.248e-05, 5.262e-05, 5.248e-05, 5.254e-05, 9320.34094457], [1516687080000, 5.262e-05, 5.262e-05, 5.249e-05, 5.262e-05, 10944.67947197], [1516687140000, 5.251e-05, 5.255e-05, 5.251e-05, 5.255e-05, 2829.78886303], [1516687200000, 5.255e-05, 5.262e-05, 5.252e-05, 5.262e-05, 1953.4717644], [1516687260000, 5.262e-05, 5.262e-05, 5.25e-05, 5.261e-05, 4705.91510172], [1516687320000, 5.262e-05, 5.262e-05, 5.251e-05, 5.262e-05, 7864.629758], [1516687380000, 5.262e-05, 5.262e-05, 5.251e-05, 5.252e-05, 1971.64013282], [1516687440000, 5.251e-05, 5.262e-05, 5.251e-05, 5.253e-05, 3058.41202299], [1516687500000, 5.253e-05, 5.262e-05, 5.251e-05, 5.251e-05, 3193.22933179], [1516687560000, 5.251e-05, 5.253e-05, 5.251e-05, 5.251e-05, 18391.32034938], [1516687620000, 5.251e-05, 5.268e-05, 5.251e-05, 5.268e-05, 107713.2888924], [1516687680000, 5.26e-05, 5.267e-05, 5.251e-05, 5.267e-05, 1210.89936943], [1516687740000, 5.267e-05, 5.267e-05, 5.243e-05, 5.243e-05, 14920.96657223], [1516687800000, 5.251e-05, 5.251e-05, 5.24e-05, 5.243e-05, 12171.45285497], [1516687860000, 5.243e-05, 5.261e-05, 5.243e-05, 5.26e-05, 4767.17948474], [1516687920000, 5.26e-05, 5.262e-05, 5.26e-05, 5.26e-05, 35987.52357915], [1516687980000, 5.262e-05, 5.262e-05, 5.26e-05, 5.26e-05, 1843.51502923], [1516688040000, 5.26e-05, 5.262e-05, 5.26e-05, 5.261e-05, 8214.74886265], [1516688100000, 5.262e-05, 5.262e-05, 5.25e-05, 5.261e-05, 22627.52818583], [1516688160000, 5.261e-05, 5.268e-05, 5.245e-05, 5.245e-05, 117445.33970028], [1516688220000, 5.25e-05, 5.265e-05, 5.25e-05, 5.264e-05, 39652.33487973], [1516688280000, 5.263e-05, 5.263e-05, 5.263e-05, 5.263e-05, 12923.69868945], [1516688340000, 5.263e-05, 5.264e-05, 5.263e-05, 5.264e-05, 12968.44467321], [1516688400000, 5.263e-05, 5.266e-05, 5.263e-05, 5.264e-05, 2612.1514225], [1516688460000, 5.263e-05, 5.264e-05, 5.25e-05, 5.25e-05, 6015.70919936], [1516688520000, 5.25e-05, 5.264e-05, 5.25e-05, 5.263e-05, 7110.8153234], [1516688580000, 5.263e-05, 5.263e-05, 5.251e-05, 5.251e-05, 10354.57189599], [1516688640000, 5.26e-05, 5.26e-05, 5.251e-05, 5.259e-05, 665.48843475], [1516688700000, 5.251e-05, 5.259e-05, 5.251e-05, 5.259e-05, 4728.17314709], [1516688760000, 5.259e-05, 5.259e-05, 5.251e-05, 5.251e-05, 11392.8836775], [1516688820000, 5.259e-05, 5.263e-05, 5.259e-05, 5.259e-05, 1300.85909683], [1516688880000, 5.262e-05, 5.262e-05, 5.252e-05, 5.252e-05, 1148.57371843], [1516688940000, 5.252e-05, 5.258e-05, 5.252e-05, 5.252e-05, 2998.92027455], [1516689000000, 5.252e-05, 5.257e-05, 5.251e-05, 5.257e-05, 966.82808702], [1516689060000, 5.251e-05, 5.256e-05, 5.251e-05, 5.252e-05, 16467.40011068], [1516689120000, 5.256e-05, 5.262e-05, 5.252e-05, 5.262e-05, 17633.32267593], [1516689180000, 5.258e-05, 5.262e-05, 5.252e-05, 5.262e-05, 15131.07580633], [1516689240000, 5.26e-05, 5.263e-05, 5.26e-05, 5.262e-05, 11674.21272051], [1516689300000, 5.26e-05, 5.263e-05, 5.26e-05, 5.26e-05, 11928.00266724], [1516689360000, 5.261e-05, 5.262e-05, 5.252e-05, 5.254e-05, 17356.5111125], [1516689420000, 5.261e-05, 5.261e-05, 5.252e-05, 5.253e-05, 2071.30306829], [1516689480000, 5.253e-05, 5.254e-05, 5.252e-05, 5.252e-05, 4475.07014356], [1516689540000, 5.253e-05, 5.254e-05, 5.23e-05, 5.23e-05, 73302.5280654], [1516689600000, 5.252e-05, 5.253e-05, 5.23e-05, 5.253e-05, 13120.92401697], [1516689660000, 5.253e-05, 5.253e-05, 5.234e-05, 5.252e-05, 1496.50928794], [1516689720000, 5.252e-05, 5.253e-05, 5.252e-05, 5.253e-05, 11893.93711194], [1516689780000, 5.234e-05, 5.253e-05, 5.234e-05, 5.252e-05, 1758.91602669], [1516689840000, 5.252e-05, 5.252e-05, 5.251e-05, 5.252e-05, 2374.90367787], [1516689900000, 5.235e-05, 5.252e-05, 5.235e-05, 5.252e-05, 13429.20329972], [1516689960000, 5.235e-05, 5.252e-05, 5.235e-05, 5.252e-05, 38385.77526483], [1516690020000, 5.252e-05, 5.259e-05, 5.245e-05, 5.259e-05, 8739.57020585], [1516690080000, 5.259e-05, 5.259e-05, 5.245e-05, 5.245e-05, 2482.32013783], [1516690140000, 5.246e-05, 5.258e-05, 5.245e-05, 5.245e-05, 6165.94523831], [1516690200000, 5.245e-05, 5.246e-05, 5.218e-05, 5.235e-05, 52766.4258643], [1516690260000, 5.235e-05, 5.259e-05, 5.234e-05, 5.235e-05, 20119.8618326], [1516690320000, 5.235e-05, 5.238e-05, 5.235e-05, 5.237e-05, 3246.43271871], [1516690380000, 5.256e-05, 5.256e-05, 5.235e-05, 5.235e-05, 10832.13091441], [1516690440000, 5.236e-05, 5.236e-05, 5.235e-05, 5.236e-05, 6601.84351777], [1516690500000, 5.235e-05, 5.26e-05, 5.235e-05, 5.237e-05, 12255.0500049], [1516690560000, 5.237e-05, 5.26e-05, 5.237e-05, 5.239e-05, 81182.23040039], [1516690620000, 5.239e-05, 5.24e-05, 5.239e-05, 5.24e-05, 8306.2313802], [1516690680000, 5.24e-05, 5.25e-05, 5.24e-05, 5.24e-05, 5659.36362976], [1516690740000, 5.239e-05, 5.24e-05, 5.239e-05, 5.239e-05, 1903.11699588], [1516690800000, 5.239e-05, 5.24e-05, 5.231e-05, 5.231e-05, 35080.62654463], [1516690860000, 5.24e-05, 5.24e-05, 5.219e-05, 5.219e-05, 27740.05701987], [1516690920000, 5.22e-05, 5.22e-05, 5.219e-05, 5.22e-05, 19251.66557325], [1516690980000, 5.222e-05, 5.24e-05, 5.222e-05, 5.24e-05, 2487.49936574], [1516691040000, 5.232e-05, 5.239e-05, 5.222e-05, 5.23e-05, 47540.45716294], [1516691100000, 5.24e-05, 5.24e-05, 5.216e-05, 5.24e-05, 100277.80421737], [1516691160000, 5.24e-05, 5.25e-05, 5.228e-05, 5.25e-05, 23128.21251997], [1516691220000, 5.25e-05, 5.25e-05, 5.218e-05, 5.218e-05, 6494.07385722], [1516691280000, 5.238e-05, 5.238e-05, 5.216e-05, 5.216e-05, 23192.31583951], [1516691340000, 5.216e-05, 5.216e-05, 5.215e-05, 5.216e-05, 28630.2442567], [1516691400000, 5.216e-05, 5.233e-05, 5.209e-05, 5.233e-05, 56671.82158292], [1516691460000, 5.233e-05, 5.233e-05, 5.209e-05, 5.218e-05, 18353.9429144], [1516691520000, 5.218e-05, 5.235e-05, 5.218e-05, 5.218e-05, 4899.79523318], [1516691580000, 5.235e-05, 5.239e-05, 5.218e-05, 5.218e-05, 44926.08771307], [1516691640000, 5.236e-05, 5.25e-05, 5.218e-05, 5.223e-05, 32020.07217287], [1516691700000, 5.223e-05, 5.256e-05, 5.216e-05, 5.249e-05, 90880.26365404], [1516691760000, 5.248e-05, 5.248e-05, 5.231e-05, 5.231e-05, 800.49375228], [1516691820000, 5.231e-05, 5.249e-05, 5.231e-05, 5.249e-05, 24002.14245089], [1516691880000, 5.247e-05, 5.263e-05, 5.235e-05, 5.262e-05, 115574.32942178], [1516691940000, 5.249e-05, 5.263e-05, 5.224e-05, 5.263e-05, 52948.42079962], [1516692000000, 5.259e-05, 5.28e-05, 5.25e-05, 5.267e-05, 83895.27493825], [1516692060000, 5.266e-05, 5.277e-05, 5.266e-05, 5.267e-05, 11625.31972058], [1516692120000, 5.267e-05, 5.268e-05, 5.266e-05, 5.267e-05, 10719.71418539], [1516692180000, 5.267e-05, 5.27e-05, 5.232e-05, 5.27e-05, 11586.02381175], [1516692240000, 5.235e-05, 5.236e-05, 5.228e-05, 5.235e-05, 8403.49569838], [1516692300000, 5.235e-05, 5.265e-05, 5.235e-05, 5.265e-05, 3345.05162648], [1516692360000, 5.265e-05, 5.265e-05, 5.224e-05, 5.264e-05, 9758.2570989], [1516692420000, 5.264e-05, 5.264e-05, 5.245e-05, 5.264e-05, 716.72278801], [1516692480000, 5.264e-05, 5.265e-05, 5.246e-05, 5.265e-05, 24226.71706791], [1516692540000, 5.265e-05, 5.268e-05, 5.264e-05, 5.265e-05, 28819.65072545], [1516692600000, 5.269e-05, 5.269e-05, 5.265e-05, 5.266e-05, 3084.07081007], [1516692660000, 5.267e-05, 5.267e-05, 5.265e-05, 5.266e-05, 15164.38809679], [1516692720000, 5.265e-05, 5.266e-05, 5.26e-05, 5.266e-05, 5649.8821542], [1516692780000, 5.266e-05, 5.269e-05, 5.263e-05, 5.269e-05, 14028.38006369], [1516692840000, 5.266e-05, 5.269e-05, 5.266e-05, 5.269e-05, 21782.21821115], [1516692900000, 5.266e-05, 5.268e-05, 5.26e-05, 5.261e-05, 9778.18710522], [1516692960000, 5.261e-05, 5.261e-05, 5.26e-05, 5.26e-05, 2550.5908151], [1516693020000, 5.26e-05, 5.266e-05, 5.251e-05, 5.266e-05, 17883.28752254], [1516693080000, 5.266e-05, 5.268e-05, 5.251e-05, 5.266e-05, 15456.35703226], [1516693140000, 5.268e-05, 5.269e-05, 5.266e-05, 5.267e-05, 14378.35377814], [1516693200000, 5.268e-05, 5.268e-05, 5.26e-05, 5.26e-05, 8556.41250613], [1516693260000, 5.262e-05, 5.269e-05, 5.26e-05, 5.269e-05, 139585.740305], [1516693320000, 5.269e-05, 5.27e-05, 5.269e-05, 5.269e-05, 20601.37081706], [1516693380000, 5.27e-05, 5.281e-05, 5.269e-05, 5.28e-05, 55200.76800124], [1516693440000, 5.281e-05, 5.281e-05, 5.268e-05, 5.27e-05, 12046.87924418], [1516693500000, 5.27e-05, 5.29e-05, 5.27e-05, 5.29e-05, 60846.94134821], [1516693560000, 5.281e-05, 5.281e-05, 5.262e-05, 5.28e-05, 29663.36252424], [1516693620000, 5.265e-05, 5.296e-05, 5.261e-05, 5.261e-05, 61895.03904894], [1516693680000, 5.28e-05, 5.28e-05, 5.264e-05, 5.28e-05, 1880.42194982], [1516693740000, 5.264e-05, 5.28e-05, 5.255e-05, 5.261e-05, 6423.36188937], [1516693800000, 5.261e-05, 5.28e-05, 5.261e-05, 5.28e-05, 3899.48173266], [1516693860000, 5.261e-05, 5.28e-05, 5.261e-05, 5.261e-05, 8764.48460158], [1516693920000, 5.262e-05, 5.28e-05, 5.255e-05, 5.261e-05, 23588.93526654], [1516693980000, 5.261e-05, 5.28e-05, 5.25e-05, 5.25e-05, 22115.53974317], [1516694040000, 5.28e-05, 5.28e-05, 5.251e-05, 5.251e-05, 437.36508753], [1516694100000, 5.252e-05, 5.264e-05, 5.252e-05, 5.26e-05, 187.93041988], [1516694160000, 5.262e-05, 5.28e-05, 5.262e-05, 5.262e-05, 36820.1889995], [1516694220000, 5.279e-05, 5.28e-05, 5.262e-05, 5.264e-05, 7762.88729113], [1516694280000, 5.279e-05, 5.28e-05, 5.264e-05, 5.27e-05, 20450.05286402], [1516694340000, 5.27e-05, 5.278e-05, 5.261e-05, 5.261e-05, 151775.18876742], [1516694400000, 5.261e-05, 5.261e-05, 5.26e-05, 5.261e-05, 95194.42189818], [1516694460000, 5.261e-05, 5.279e-05, 5.261e-05, 5.279e-05, 77091.99091986], [1516694520000, 5.275e-05, 5.278e-05, 5.275e-05, 5.275e-05, 21795.1638574], [1516694580000, 5.277e-05, 5.278e-05, 5.277e-05, 5.278e-05, 30401.01469393], [1516694640000, 5.278e-05, 5.28e-05, 5.26e-05, 5.28e-05, 101220.8295941], [1516694700000, 5.28e-05, 5.29e-05, 5.28e-05, 5.289e-05, 13628.68472672], [1516694760000, 5.289e-05, 5.289e-05, 5.28e-05, 5.281e-05, 15172.28142213], [1516694820000, 5.289e-05, 5.289e-05, 5.288e-05, 5.289e-05, 15189.57662485], [1516694880000, 5.285e-05, 5.29e-05, 5.282e-05, 5.289e-05, 51491.61598416], [1516694940000, 5.289e-05, 5.29e-05, 5.283e-05, 5.283e-05, 48900.70914169], [1516695000000, 5.29e-05, 5.29e-05, 5.283e-05, 5.29e-05, 3392.09306282], [1516695060000, 5.29e-05, 5.29e-05, 5.288e-05, 5.29e-05, 33888.67962087], [1516695120000, 5.29e-05, 5.29e-05, 5.286e-05, 5.29e-05, 11547.08452633], [1516695180000, 5.29e-05, 5.3e-05, 5.286e-05, 5.299e-05, 14041.13668984], [1516695240000, 5.29e-05, 5.3e-05, 5.29e-05, 5.292e-05, 19582.75462025], [1516695300000, 5.292e-05, 5.292e-05, 5.29e-05, 5.29e-05, 20638.91204701], [1516695360000, 5.29e-05, 5.29e-05, 5.286e-05, 5.286e-05, 4546.65586756], [1516695420000, 5.287e-05, 5.299e-05, 5.286e-05, 5.286e-05, 27786.31478656], [1516695480000, 5.287e-05, 5.299e-05, 5.287e-05, 5.298e-05, 7350.01535785], [1516695540000, 5.292e-05, 5.299e-05, 5.288e-05, 5.298e-05, 3778.97151443], [1516695600000, 5.289e-05, 5.299e-05, 5.289e-05, 5.299e-05, 6010.02798447], [1516695660000, 5.29e-05, 5.299e-05, 5.29e-05, 5.29e-05, 6393.99130381], [1516695720000, 5.299e-05, 5.3e-05, 5.29e-05, 5.3e-05, 23385.50101203], [1516695780000, 5.29e-05, 5.307e-05, 5.29e-05, 5.29e-05, 23925.04877932], [1516695840000, 5.291e-05, 5.309e-05, 5.29e-05, 5.309e-05, 32221.31072263], [1516695900000, 5.29e-05, 5.308e-05, 5.289e-05, 5.289e-05, 11520.05534832], [1516695960000, 5.3e-05, 5.308e-05, 5.289e-05, 5.308e-05, 5900.24293446], [1516696020000, 5.308e-05, 5.309e-05, 5.29e-05, 5.29e-05, 5091.41908715], [1516696080000, 5.292e-05, 5.309e-05, 5.29e-05, 5.29e-05, 4573.92752916], [1516696140000, 5.308e-05, 5.309e-05, 5.29e-05, 5.29e-05, 2357.46927261], [1516696200000, 5.29e-05, 5.292e-05, 5.29e-05, 5.29e-05, 1657.92668679], [1516696260000, 5.292e-05, 5.292e-05, 5.289e-05, 5.289e-05, 39464.9713021], [1516696320000, 5.286e-05, 5.286e-05, 5.283e-05, 5.283e-05, 19003.40863759], [1516696380000, 5.283e-05, 5.286e-05, 5.27e-05, 5.27e-05, 7963.82698226], [1516696440000, 5.27e-05, 5.291e-05, 5.265e-05, 5.291e-05, 90184.28398484], [1516696500000, 5.272e-05, 5.292e-05, 5.271e-05, 5.271e-05, 4137.09503629], [1516696560000, 5.271e-05, 5.292e-05, 5.271e-05, 5.289e-05, 2993.64437969], [1516696620000, 5.289e-05, 5.289e-05, 5.289e-05, 5.289e-05, 56.86655077], [1516696680000, 5.29e-05, 5.292e-05, 5.29e-05, 5.29e-05, 676.26328345], [1516696740000, 5.29e-05, 5.292e-05, 5.289e-05, 5.292e-05, 2415.6916912], [1516696800000, 5.29e-05, 5.292e-05, 5.289e-05, 5.289e-05, 7417.48033426], [1516696860000, 5.289e-05, 5.292e-05, 5.289e-05, 5.289e-05, 2717.47585177], [1516696920000, 5.289e-05, 5.309e-05, 5.289e-05, 5.29e-05, 109569.59200638], [1516696980000, 5.307e-05, 5.307e-05, 5.289e-05, 5.289e-05, 32689.40546219], [1516697040000, 5.289e-05, 5.309e-05, 5.289e-05, 5.289e-05, 7724.55319187], [1516697100000, 5.289e-05, 5.298e-05, 5.27e-05, 5.27e-05, 24684.28121836], [1516697160000, 5.295e-05, 5.297e-05, 5.274e-05, 5.275e-05, 17163.66103587], [1516697220000, 5.275e-05, 5.288e-05, 5.275e-05, 5.288e-05, 3376.76561402], [1516697280000, 5.289e-05, 5.295e-05, 5.289e-05, 5.295e-05, 25913.02629537], [1516697340000, 5.294e-05, 5.298e-05, 5.277e-05, 5.277e-05, 98818.82085498], [1516697400000, 5.275e-05, 5.294e-05, 5.25e-05, 5.291e-05, 40502.42395869], [1516697460000, 5.291e-05, 5.309e-05, 5.27e-05, 5.305e-05, 27946.18290522], [1516697520000, 5.305e-05, 5.308e-05, 5.24e-05, 5.296e-05, 25088.85862522], [1516697580000, 5.294e-05, 5.294e-05, 5.25e-05, 5.287e-05, 22890.41537498], [1516697640000, 5.285e-05, 5.286e-05, 5.261e-05, 5.261e-05, 21869.70976644], [1516697700000, 5.277e-05, 5.277e-05, 5.261e-05, 5.275e-05, 5508.32198406], [1516697760000, 5.28e-05, 5.28e-05, 5.268e-05, 5.271e-05, 27459.34239784], [1516697820000, 5.271e-05, 5.271e-05, 5.268e-05, 5.271e-05, 18567.15900017], [1516697880000, 5.271e-05, 5.271e-05, 5.269e-05, 5.269e-05, 9948.75930253], [1516697940000, 5.269e-05, 5.27e-05, 5.263e-05, 5.263e-05, 12391.03121312], [1516698000000, 5.262e-05, 5.263e-05, 5.261e-05, 5.262e-05, 5505.42042063], [1516698060000, 5.262e-05, 5.262e-05, 5.261e-05, 5.262e-05, 8090.55509935], [1516698120000, 5.262e-05, 5.262e-05, 5.261e-05, 5.262e-05, 6836.78368554], [1516698180000, 5.262e-05, 5.263e-05, 5.261e-05, 5.263e-05, 5820.05057797], [1516698240000, 5.263e-05, 5.264e-05, 5.26e-05, 5.264e-05, 1038.57138311], [1516698300000, 5.261e-05, 5.263e-05, 5.261e-05, 5.263e-05, 2291.51469597], [1516698360000, 5.263e-05, 5.263e-05, 5.261e-05, 5.261e-05, 18802.23050855], [1516698420000, 5.263e-05, 5.263e-05, 5.261e-05, 5.263e-05, 4646.27736512], [1516698480000, 5.263e-05, 5.269e-05, 5.26e-05, 5.269e-05, 25419.34081407], [1516698540000, 5.269e-05, 5.27e-05, 5.26e-05, 5.26e-05, 3464.42699754], [1516698600000, 5.261e-05, 5.27e-05, 5.25e-05, 5.25e-05, 22338.93915527], [1516698660000, 5.25e-05, 5.252e-05, 5.25e-05, 5.252e-05, 1223.38894973], [1516698720000, 5.27e-05, 5.27e-05, 5.257e-05, 5.27e-05, 1335.68423267], [1516698780000, 5.257e-05, 5.27e-05, 5.25e-05, 5.257e-05, 19255.6106023], [1516698840000, 5.253e-05, 5.253e-05, 5.253e-05, 5.253e-05, 753.25328409], [1516698900000, 5.25e-05, 5.25e-05, 5.25e-05, 5.25e-05, 13869.82739406], [1516698960000, 5.247e-05, 5.257e-05, 5.247e-05, 5.253e-05, 41663.25948098], [1516699020000, 5.247e-05, 5.253e-05, 5.247e-05, 5.253e-05, 48597.91385226], [1516699080000, 5.253e-05, 5.253e-05, 5.247e-05, 5.247e-05, 5945.59405302], [1516699140000, 5.25e-05, 5.257e-05, 5.248e-05, 5.248e-05, 14991.61836939], [1516699200000, 5.248e-05, 5.257e-05, 5.248e-05, 5.257e-05, 4984.32371517], [1516699260000, 5.257e-05, 5.257e-05, 5.248e-05, 5.248e-05, 30241.45190053], [1516699320000, 5.249e-05, 5.249e-05, 5.247e-05, 5.247e-05, 27152.82782066], [1516699380000, 5.249e-05, 5.249e-05, 5.247e-05, 5.249e-05, 49386.00909235], [1516699440000, 5.248e-05, 5.257e-05, 5.247e-05, 5.257e-05, 13572.4294369], [1516699500000, 5.249e-05, 5.257e-05, 5.249e-05, 5.257e-05, 11382.65742855], [1516699560000, 5.255e-05, 5.27e-05, 5.255e-05, 5.257e-05, 63768.6462754], [1516699620000, 5.257e-05, 5.257e-05, 5.248e-05, 5.257e-05, 12927.46029056], [1516699680000, 5.248e-05, 5.257e-05, 5.248e-05, 5.257e-05, 7171.78598781], [1516699740000, 5.25e-05, 5.27e-05, 5.249e-05, 5.25e-05, 33597.36023158], [1516699800000, 5.25e-05, 5.25e-05, 5.247e-05, 5.249e-05, 16714.03352548], [1516699860000, 5.25e-05, 5.25e-05, 5.249e-05, 5.25e-05, 9000.94375148], [1516699920000, 5.25e-05, 5.25e-05, 5.249e-05, 5.25e-05, 13034.06040228], [1516699980000, 5.25e-05, 5.25e-05, 5.249e-05, 5.25e-05, 4278.07080649], [1516700040000, 5.25e-05, 5.25e-05, 5.249e-05, 5.25e-05, 38547.10669368], [1516700100000, 5.249e-05, 5.25e-05, 5.249e-05, 5.249e-05, 29865.87174003], [1516700160000, 5.249e-05, 5.249e-05, 5.248e-05, 5.248e-05, 1454.39607934], [1516700220000, 5.249e-05, 5.25e-05, 5.249e-05, 5.249e-05, 36971.65385634], [1516700280000, 5.249e-05, 5.25e-05, 5.248e-05, 5.248e-05, 146020.71998195], [1516700340000, 5.25e-05, 5.251e-05, 5.25e-05, 5.251e-05, 702.08707881], [1516700400000, 5.249e-05, 5.249e-05, 5.248e-05, 5.248e-05, 1218.00188506], [1516700460000, 5.249e-05, 5.249e-05, 5.249e-05, 5.249e-05, 1707.34571457], [1516700520000, 5.25e-05, 5.251e-05, 5.248e-05, 5.248e-05, 11740.29994085], [1516700580000, 5.249e-05, 5.249e-05, 5.248e-05, 5.249e-05, 227.94868934], [1516700640000, 5.249e-05, 5.249e-05, 5.248e-05, 5.248e-05, 47632.51474872], [1516700700000, 5.248e-05, 5.249e-05, 5.248e-05, 5.248e-05, 2292.27257806], [1516700760000, 5.248e-05, 5.249e-05, 5.248e-05, 5.248e-05, 963.0904479], [1516700820000, 5.248e-05, 5.251e-05, 5.248e-05, 5.251e-05, 45880.66147184], [1516700880000, 5.248e-05, 5.251e-05, 5.248e-05, 5.251e-05, 4807.74933814], [1516700940000, 5.248e-05, 5.251e-05, 5.248e-05, 5.251e-05, 191.86761015], [1516701000000, 5.248e-05, 5.248e-05, 5.24e-05, 5.248e-05, 642584.21148693], [1516701060000, 5.248e-05, 5.251e-05, 5.239e-05, 5.24e-05, 685408.93159083], [1516701120000, 5.24e-05, 5.24e-05, 5.239e-05, 5.24e-05, 1773.63811989], [1516701180000, 5.239e-05, 5.251e-05, 5.239e-05, 5.24e-05, 3080.20485752], [1516701240000, 5.239e-05, 5.25e-05, 5.239e-05, 5.25e-05, 61503.94458391], [1516701300000, 5.25e-05, 5.251e-05, 5.24e-05, 5.24e-05, 33019.32814403], [1516701360000, 5.251e-05, 5.251e-05, 5.242e-05, 5.242e-05, 4502.52265296], [1516701420000, 5.244e-05, 5.251e-05, 5.239e-05, 5.239e-05, 11912.8033839], [1516701480000, 5.244e-05, 5.251e-05, 5.24e-05, 5.24e-05, 23292.4881592], [1516701540000, 5.243e-05, 5.243e-05, 5.239e-05, 5.241e-05, 89786.68997098], [1516701600000, 5.24e-05, 5.241e-05, 5.239e-05, 5.24e-05, 17578.09890592], [1516701660000, 5.239e-05, 5.241e-05, 5.239e-05, 5.239e-05, 117829.79327504], [1516701720000, 5.239e-05, 5.241e-05, 5.239e-05, 5.239e-05, 71587.29551678], [1516701780000, 5.241e-05, 5.242e-05, 5.239e-05, 5.241e-05, 25839.91802806], [1516701840000, 5.241e-05, 5.251e-05, 5.24e-05, 5.24e-05, 32102.46096952], [1516701900000, 5.24e-05, 5.242e-05, 5.235e-05, 5.239e-05, 5922.55370558], [1516701960000, 5.235e-05, 5.24e-05, 5.23e-05, 5.23e-05, 12088.15222787], [1516702020000, 5.23e-05, 5.24e-05, 5.23e-05, 5.24e-05, 2514.34603061], [1516702080000, 5.231e-05, 5.24e-05, 5.231e-05, 5.238e-05, 8529.03638033], [1516702140000, 5.238e-05, 5.238e-05, 5.225e-05, 5.23e-05, 10340.73248767], [1516702200000, 5.233e-05, 5.25e-05, 5.214e-05, 5.214e-05, 31095.28630093], [1516702260000, 5.214e-05, 5.244e-05, 5.213e-05, 5.244e-05, 3706.89698133], [1516702320000, 5.243e-05, 5.243e-05, 5.24e-05, 5.24e-05, 1766.31059667], [1516702380000, 5.243e-05, 5.243e-05, 5.221e-05, 5.243e-05, 6934.198374], [1516702440000, 5.243e-05, 5.243e-05, 5.223e-05, 5.223e-05, 480.17416497], [1516702500000, 5.224e-05, 5.241e-05, 5.224e-05, 5.241e-05, 17251.72336168], [1516702560000, 5.224e-05, 5.242e-05, 5.223e-05, 5.226e-05, 9293.52856888], [1516702620000, 5.226e-05, 5.24e-05, 5.223e-05, 5.223e-05, 9854.05998492], [1516702680000, 5.223e-05, 5.243e-05, 5.223e-05, 5.227e-05, 53151.20536027], [1516702740000, 5.225e-05, 5.238e-05, 5.22e-05, 5.221e-05, 8540.96086257], [1516702800000, 5.221e-05, 5.236e-05, 5.221e-05, 5.223e-05, 30405.72936942], [1516702860000, 5.23e-05, 5.237e-05, 5.223e-05, 5.231e-05, 70985.09410142], [1516702920000, 5.231e-05, 5.237e-05, 5.23e-05, 5.237e-05, 39530.17148449], [1516702980000, 5.237e-05, 5.237e-05, 5.223e-05, 5.223e-05, 10564.12045388], [1516703040000, 5.233e-05, 5.25e-05, 5.223e-05, 5.25e-05, 61224.15142873], [1516703100000, 5.245e-05, 5.25e-05, 5.223e-05, 5.25e-05, 25616.89346595], [1516703160000, 5.245e-05, 5.25e-05, 5.235e-05, 5.25e-05, 19133.14317139], [1516703220000, 5.25e-05, 5.258e-05, 5.24e-05, 5.241e-05, 122077.4555762], [1516703280000, 5.242e-05, 5.258e-05, 5.241e-05, 5.258e-05, 5406.12077936], [1516703340000, 5.258e-05, 5.262e-05, 5.226e-05, 5.258e-05, 5444.46096344], [1516703400000, 5.258e-05, 5.264e-05, 5.227e-05, 5.264e-05, 2857.40934337], [1516703460000, 5.261e-05, 5.261e-05, 5.236e-05, 5.237e-05, 4328.53145856], [1516703520000, 5.238e-05, 5.261e-05, 5.238e-05, 5.243e-05, 19027.93649497], [1516703580000, 5.243e-05, 5.261e-05, 5.24e-05, 5.25e-05, 71989.9524253], [1516703640000, 5.25e-05, 5.261e-05, 5.24e-05, 5.26e-05, 32790.67815903], [1516703700000, 5.261e-05, 5.261e-05, 5.244e-05, 5.261e-05, 26387.79000434], [1516703760000, 5.261e-05, 5.261e-05, 5.245e-05, 5.247e-05, 12550.77803316], [1516703820000, 5.261e-05, 5.261e-05, 5.249e-05, 5.254e-05, 30066.22963509], [1516703880000, 5.26e-05, 5.26e-05, 5.254e-05, 5.254e-05, 20562.24528783], [1516703940000, 5.254e-05, 5.261e-05, 5.22e-05, 5.224e-05, 35115.26058268], [1516704000000, 5.24e-05, 5.261e-05, 5.232e-05, 5.26e-05, 2897.43439823], [1516704060000, 5.26e-05, 5.26e-05, 5.245e-05, 5.248e-05, 19027.40177193], [1516704120000, 5.248e-05, 5.261e-05, 5.248e-05, 5.249e-05, 45007.56722012], [1516704180000, 5.249e-05, 5.258e-05, 5.249e-05, 5.258e-05, 4869.86413389], [1516704240000, 5.258e-05, 5.26e-05, 5.249e-05, 5.26e-05, 25865.98721078], [1516704300000, 5.253e-05, 5.261e-05, 5.253e-05, 5.253e-05, 43721.67753705], [1516704360000, 5.254e-05, 5.254e-05, 5.254e-05, 5.254e-05, 214.61899998], [1516704420000, 5.254e-05, 5.261e-05, 5.254e-05, 5.254e-05, 40498.76571533], [1516704480000, 5.254e-05, 5.254e-05, 5.249e-05, 5.25e-05, 122624.17965262], [1516704540000, 5.25e-05, 5.25e-05, 5.247e-05, 5.25e-05, 29012.68451448], [1516704600000, 5.247e-05, 5.25e-05, 5.247e-05, 5.25e-05, 4567.89384572], [1516704660000, 5.25e-05, 5.25e-05, 5.208e-05, 5.208e-05, 77795.41092047], [1516704720000, 5.223e-05, 5.26e-05, 5.223e-05, 5.236e-05, 17176.57707258], [1516704780000, 5.259e-05, 5.261e-05, 5.233e-05, 5.233e-05, 5544.24066773], [1516704840000, 5.252e-05, 5.252e-05, 5.233e-05, 5.242e-05, 13010.05104883], [1516704900000, 5.254e-05, 5.254e-05, 5.234e-05, 5.238e-05, 9933.73024431], [1516704960000, 5.253e-05, 5.254e-05, 5.238e-05, 5.254e-05, 11921.37966432], [1516705020000, 5.238e-05, 5.254e-05, 5.238e-05, 5.254e-05, 28452.58494703], [1516705080000, 5.254e-05, 5.254e-05, 5.238e-05, 5.24e-05, 9728.53053337], [1516705140000, 5.254e-05, 5.254e-05, 5.239e-05, 5.239e-05, 19615.20622239], [1516705200000, 5.243e-05, 5.252e-05, 5.243e-05, 5.244e-05, 5239.47353878], [1516705260000, 5.252e-05, 5.254e-05, 5.244e-05, 5.253e-05, 14977.20836918], [1516705320000, 5.253e-05, 5.253e-05, 5.239e-05, 5.253e-05, 47757.88454584], [1516705380000, 5.253e-05, 5.258e-05, 5.242e-05, 5.251e-05, 22090.90199685], [1516705440000, 5.251e-05, 5.258e-05, 5.245e-05, 5.25e-05, 47413.34217203], [1516705500000, 5.245e-05, 5.246e-05, 5.239e-05, 5.241e-05, 43168.1967497], [1516705560000, 5.24e-05, 5.246e-05, 5.239e-05, 5.245e-05, 11410.59700222], [1516705620000, 5.245e-05, 5.246e-05, 5.241e-05, 5.246e-05, 21059.33758357], [1516705680000, 5.247e-05, 5.247e-05, 5.243e-05, 5.243e-05, 45752.21200421], [1516705740000, 5.243e-05, 5.243e-05, 5.239e-05, 5.239e-05, 2510.11407572], [1516705800000, 5.239e-05, 5.249e-05, 5.239e-05, 5.242e-05, 4635.06195086], [1516705860000, 5.242e-05, 5.249e-05, 5.24e-05, 5.242e-05, 1939.45135932], [1516705920000, 5.242e-05, 5.242e-05, 5.239e-05, 5.24e-05, 17476.8691212], [1516705980000, 5.24e-05, 5.242e-05, 5.238e-05, 5.242e-05, 7784.52678617], [1516706040000, 5.241e-05, 5.26e-05, 5.241e-05, 5.242e-05, 9054.21568148], [1516706100000, 5.241e-05, 5.259e-05, 5.212e-05, 5.256e-05, 11457.71993373], [1516706160000, 5.255e-05, 5.256e-05, 5.254e-05, 5.254e-05, 4296.61816279], [1516706220000, 5.25e-05, 5.25e-05, 5.231e-05, 5.231e-05, 18322.60426414], [1516706280000, 5.231e-05, 5.248e-05, 5.231e-05, 5.248e-05, 7043.62265069], [1516706340000, 5.236e-05, 5.248e-05, 5.236e-05, 5.248e-05, 3201.48310085], [1516706400000, 5.248e-05, 5.255e-05, 5.248e-05, 5.25e-05, 33356.05463358], [1516706460000, 5.25e-05, 5.25e-05, 5.249e-05, 5.249e-05, 24473.73357515], [1516706520000, 5.249e-05, 5.25e-05, 5.249e-05, 5.249e-05, 9355.18288233], [1516706580000, 5.25e-05, 5.25e-05, 5.248e-05, 5.249e-05, 1033.44084478], [1516706640000, 5.249e-05, 5.249e-05, 5.233e-05, 5.233e-05, 15908.04834916], [1516706700000, 5.235e-05, 5.25e-05, 5.235e-05, 5.25e-05, 4211.08043447], [1516706760000, 5.25e-05, 5.25e-05, 5.23e-05, 5.23e-05, 116874.0100067], [1516706820000, 5.238e-05, 5.238e-05, 5.23e-05, 5.238e-05, 73016.28911848], [1516706880000, 5.238e-05, 5.238e-05, 5.224e-05, 5.238e-05, 77851.82605119], [1516706940000, 5.238e-05, 5.238e-05, 5.224e-05, 5.237e-05, 97700.20428053], [1516707000000, 5.237e-05, 5.238e-05, 5.221e-05, 5.238e-05, 454535.42637554], [1516707060000, 5.238e-05, 5.238e-05, 5.224e-05, 5.238e-05, 114656.97610031], [1516707120000, 5.238e-05, 5.238e-05, 5.225e-05, 5.238e-05, 120462.90918472], [1516707180000, 5.238e-05, 5.238e-05, 5.23e-05, 5.238e-05, 138596.93248411], [1516707240000, 5.238e-05, 5.259e-05, 5.238e-05, 5.238e-05, 111023.9529542], [1516707300000, 5.239e-05, 5.259e-05, 5.238e-05, 5.25e-05, 38662.35438092], [1516707360000, 5.25e-05, 5.257e-05, 5.24e-05, 5.249e-05, 53851.67708266], [1516707420000, 5.25e-05, 5.257e-05, 5.239e-05, 5.24e-05, 115871.1413822], [1516707480000, 5.251e-05, 5.251e-05, 5.224e-05, 5.244e-05, 51305.41119735], [1516707540000, 5.242e-05, 5.251e-05, 5.217e-05, 5.241e-05, 53294.72194884], [1516707600000, 5.241e-05, 5.25e-05, 5.222e-05, 5.244e-05, 73557.31672567], [1516707660000, 5.244e-05, 5.253e-05, 5.232e-05, 5.253e-05, 46879.27476224], [1516707720000, 5.253e-05, 5.255e-05, 5.217e-05, 5.234e-05, 12760.98023902], [1516707780000, 5.234e-05, 5.251e-05, 5.234e-05, 5.236e-05, 66450.05809384], [1516707840000, 5.25e-05, 5.251e-05, 5.235e-05, 5.235e-05, 23760.75382124], [1516707900000, 5.235e-05, 5.236e-05, 5.234e-05, 5.234e-05, 82206.83452737], [1516707960000, 5.234e-05, 5.25e-05, 5.209e-05, 5.21e-05, 77470.52313676], [1516708020000, 5.21e-05, 5.249e-05, 5.209e-05, 5.249e-05, 69996.08744273], [1516708080000, 5.234e-05, 5.249e-05, 5.22e-05, 5.221e-05, 67191.02992354], [1516708140000, 5.222e-05, 5.248e-05, 5.207e-05, 5.224e-05, 58961.00145753], [1516708200000, 5.225e-05, 5.249e-05, 5.208e-05, 5.243e-05, 84619.95904419], [1516708260000, 5.213e-05, 5.243e-05, 5.213e-05, 5.228e-05, 19254.86607329], [1516708320000, 5.228e-05, 5.243e-05, 5.211e-05, 5.211e-05, 32309.00777592], [1516708380000, 5.212e-05, 5.242e-05, 5.205e-05, 5.218e-05, 109864.19890797], [1516708440000, 5.227e-05, 5.228e-05, 5.203e-05, 5.204e-05, 42365.65533011], [1516708500000, 5.204e-05, 5.226e-05, 5.201e-05, 5.222e-05, 28460.96703902], [1516708560000, 5.226e-05, 5.226e-05, 5.222e-05, 5.226e-05, 83742.86977823], [1516708620000, 5.227e-05, 5.246e-05, 5.227e-05, 5.229e-05, 35952.23562101], [1516708680000, 5.229e-05, 5.246e-05, 5.226e-05, 5.228e-05, 21163.79435351], [1516708740000, 5.228e-05, 5.245e-05, 5.228e-05, 5.244e-05, 16797.46252829], [1516708800000, 5.228e-05, 5.244e-05, 5.228e-05, 5.242e-05, 2794.64756396], [1516708860000, 5.242e-05, 5.244e-05, 5.228e-05, 5.24e-05, 16184.06456284], [1516708920000, 5.229e-05, 5.24e-05, 5.201e-05, 5.201e-05, 51121.38279771], [1516708980000, 5.201e-05, 5.22e-05, 5.201e-05, 5.204e-05, 3459.68461422], [1516709040000, 5.204e-05, 5.204e-05, 5.201e-05, 5.204e-05, 15046.12961126], [1516709100000, 5.204e-05, 5.21e-05, 5.201e-05, 5.209e-05, 64179.34257263], [1516709160000, 5.209e-05, 5.21e-05, 5.202e-05, 5.203e-05, 19771.90070484], [1516709220000, 5.203e-05, 5.208e-05, 5.203e-05, 5.207e-05, 16435.73047801], [1516709280000, 5.203e-05, 5.204e-05, 5.202e-05, 5.202e-05, 56515.83511663], [1516709340000, 5.204e-05, 5.226e-05, 5.202e-05, 5.224e-05, 50466.40800302], [1516709400000, 5.222e-05, 5.24e-05, 5.21e-05, 5.222e-05, 8691.67275334], [1516709460000, 5.224e-05, 5.24e-05, 5.21e-05, 5.232e-05, 8752.5527208], [1516709520000, 5.232e-05, 5.24e-05, 5.225e-05, 5.225e-05, 18507.00185519], [1516709580000, 5.225e-05, 5.239e-05, 5.225e-05, 5.239e-05, 8334.28474829], [1516709640000, 5.225e-05, 5.239e-05, 5.225e-05, 5.225e-05, 19941.09439162], [1516709700000, 5.225e-05, 5.239e-05, 5.211e-05, 5.224e-05, 16143.02830745], [1516709760000, 5.224e-05, 5.23e-05, 5.224e-05, 5.224e-05, 18008.4511441], [1516709820000, 5.224e-05, 5.225e-05, 5.201e-05, 5.22e-05, 54187.5252009], [1516709880000, 5.22e-05, 5.224e-05, 5.201e-05, 5.201e-05, 18599.57469523], [1516709940000, 5.201e-05, 5.219e-05, 5.2e-05, 5.21e-05, 91899.65707771], [1516710000000, 5.21e-05, 5.236e-05, 5.202e-05, 5.202e-05, 65852.14637886], [1516710060000, 5.221e-05, 5.239e-05, 5.203e-05, 5.205e-05, 6549.37575466], [1516710120000, 5.235e-05, 5.235e-05, 5.202e-05, 5.234e-05, 10970.57113954], [1516710180000, 5.206e-05, 5.23e-05, 5.206e-05, 5.23e-05, 3455.61652663], [1516710240000, 5.229e-05, 5.229e-05, 5.2e-05, 5.22e-05, 24105.35364564], [1516710300000, 5.22e-05, 5.233e-05, 5.2e-05, 5.219e-05, 96501.8273685], [1516710360000, 5.233e-05, 5.234e-05, 5.219e-05, 5.229e-05, 7005.50837283], [1516710420000, 5.229e-05, 5.23e-05, 5.229e-05, 5.229e-05, 17760.81659542], [1516710480000, 5.229e-05, 5.23e-05, 5.2e-05, 5.229e-05, 38394.28210751], [1516710540000, 5.229e-05, 5.229e-05, 5.228e-05, 5.228e-05, 11090.8153385], [1516710600000, 5.228e-05, 5.229e-05, 5.228e-05, 5.228e-05, 11079.80674591], [1516710660000, 5.21e-05, 5.228e-05, 5.21e-05, 5.227e-05, 11507.25091086], [1516710720000, 5.21e-05, 5.227e-05, 5.21e-05, 5.211e-05, 7921.53622488], [1516710780000, 5.211e-05, 5.227e-05, 5.211e-05, 5.227e-05, 6896.6113876], [1516710840000, 5.227e-05, 5.227e-05, 5.211e-05, 5.211e-05, 4114.49914911], [1516710900000, 5.215e-05, 5.228e-05, 5.211e-05, 5.228e-05, 14720.44261049], [1516710960000, 5.228e-05, 5.234e-05, 5.227e-05, 5.227e-05, 13886.40795032], [1516711020000, 5.227e-05, 5.227e-05, 5.216e-05, 5.216e-05, 371.49017102], [1516711080000, 5.213e-05, 5.227e-05, 5.212e-05, 5.213e-05, 37541.88325287], [1516711140000, 5.213e-05, 5.227e-05, 5.213e-05, 5.213e-05, 9181.3542751], [1516711200000, 5.213e-05, 5.213e-05, 5.211e-05, 5.213e-05, 4014.44181083], [1516711260000, 5.212e-05, 5.213e-05, 5.212e-05, 5.213e-05, 13309.71845882], [1516711320000, 5.212e-05, 5.213e-05, 5.212e-05, 5.212e-05, 21075.81823971], [1516711380000, 5.212e-05, 5.213e-05, 5.212e-05, 5.213e-05, 8899.13908827], [1516711440000, 5.212e-05, 5.213e-05, 5.211e-05, 5.211e-05, 45140.3022587], [1516711500000, 5.212e-05, 5.212e-05, 5.21e-05, 5.21e-05, 17169.04786822], [1516711560000, 5.21e-05, 5.211e-05, 5.21e-05, 5.21e-05, 18862.57185425], [1516711620000, 5.21e-05, 5.211e-05, 5.206e-05, 5.211e-05, 71768.22696849], [1516711680000, 5.21e-05, 5.211e-05, 5.21e-05, 5.21e-05, 4120.56747663], [1516711740000, 5.21e-05, 5.21e-05, 5.2e-05, 5.206e-05, 34603.62019219], [1516711800000, 5.206e-05, 5.21e-05, 5.201e-05, 5.201e-05, 12767.0554644], [1516711860000, 5.206e-05, 5.21e-05, 5.201e-05, 5.207e-05, 27070.90581558], [1516711920000, 5.207e-05, 5.207e-05, 5.192e-05, 5.192e-05, 45962.27417303], [1516711980000, 5.192e-05, 5.192e-05, 5.176e-05, 5.191e-05, 60011.46820646], [1516712040000, 5.181e-05, 5.192e-05, 5.164e-05, 5.18e-05, 98457.62703993], [1516712100000, 5.18e-05, 5.192e-05, 5.18e-05, 5.192e-05, 259122.67539803], [1516712160000, 5.192e-05, 5.192e-05, 5.11e-05, 5.191e-05, 284196.57677667], [1516712220000, 5.187e-05, 5.188e-05, 5.153e-05, 5.161e-05, 21435.16899958], [1516712280000, 5.163e-05, 5.18e-05, 5.163e-05, 5.18e-05, 38572.35339014], [1516712340000, 5.18e-05, 5.191e-05, 5.162e-05, 5.162e-05, 56934.39116331], [1516712400000, 5.191e-05, 5.191e-05, 5.162e-05, 5.174e-05, 46682.73910211], [1516712460000, 5.174e-05, 5.185e-05, 5.174e-05, 5.185e-05, 22040.6584151], [1516712520000, 5.184e-05, 5.185e-05, 5.172e-05, 5.173e-05, 30835.27048545], [1516712580000, 5.173e-05, 5.184e-05, 5.172e-05, 5.18e-05, 18468.58512682], [1516712640000, 5.18e-05, 5.18e-05, 5.172e-05, 5.176e-05, 23040.66483109], [1516712700000, 5.176e-05, 5.191e-05, 5.17e-05, 5.191e-05, 49107.2868846], [1516712760000, 5.191e-05, 5.192e-05, 5.19e-05, 5.191e-05, 9792.37747557], [1516712820000, 5.19e-05, 5.192e-05, 5.18e-05, 5.18e-05, 23785.17019024], [1516712880000, 5.187e-05, 5.187e-05, 5.18e-05, 5.187e-05, 2713.74963717], [1516712940000, 5.187e-05, 5.192e-05, 5.18e-05, 5.187e-05, 26702.17162995], [1516713000000, 5.192e-05, 5.199e-05, 5.18e-05, 5.184e-05, 5374.92140873], [1516713060000, 5.18e-05, 5.191e-05, 5.17e-05, 5.17e-05, 28316.98383388], [1516713120000, 5.191e-05, 5.191e-05, 5.171e-05, 5.19e-05, 30424.99653314], [1516713180000, 5.19e-05, 5.192e-05, 5.19e-05, 5.19e-05, 122410.0114909], [1516713240000, 5.191e-05, 5.199e-05, 5.19e-05, 5.199e-05, 65319.74864001], [1516713300000, 5.199e-05, 5.2e-05, 5.19e-05, 5.19e-05, 12017.18929294], [1516713360000, 5.19e-05, 5.206e-05, 5.19e-05, 5.206e-05, 29403.6119296], [1516713420000, 5.205e-05, 5.213e-05, 5.205e-05, 5.21e-05, 40289.08825068], [1516713480000, 5.21e-05, 5.222e-05, 5.21e-05, 5.21e-05, 28302.59664964], [1516713540000, 5.21e-05, 5.221e-05, 5.21e-05, 5.211e-05, 37910.51402796], [1516713600000, 5.211e-05, 5.215e-05, 5.187e-05, 5.187e-05, 5902.05902468], [1516713660000, 5.187e-05, 5.215e-05, 5.187e-05, 5.198e-05, 2937.70670419], [1516713720000, 5.214e-05, 5.214e-05, 5.199e-05, 5.199e-05, 11089.54940169], [1516713780000, 5.199e-05, 5.213e-05, 5.198e-05, 5.2e-05, 30219.98941521], [1516713840000, 5.212e-05, 5.212e-05, 5.2e-05, 5.2e-05, 2199.67840078], [1516713900000, 5.2e-05, 5.212e-05, 5.2e-05, 5.2e-05, 27512.17858545], [1516713960000, 5.208e-05, 5.208e-05, 5.2e-05, 5.2e-05, 6433.29020421], [1516714020000, 5.205e-05, 5.205e-05, 5.205e-05, 5.205e-05, 901.33553801], [1516714080000, 5.205e-05, 5.209e-05, 5.2e-05, 5.205e-05, 19820.68661002], [1516714140000, 5.205e-05, 5.205e-05, 5.19e-05, 5.197e-05, 20961.91628401], [1516714200000, 5.194e-05, 5.194e-05, 5.186e-05, 5.187e-05, 8786.04672417], [1516714260000, 5.181e-05, 5.187e-05, 5.181e-05, 5.187e-05, 14595.40403861], [1516714320000, 5.187e-05, 5.195e-05, 5.187e-05, 5.195e-05, 27262.695492], [1516714380000, 5.194e-05, 5.195e-05, 5.194e-05, 5.195e-05, 18179.48970423], [1516714440000, 5.194e-05, 5.195e-05, 5.194e-05, 5.195e-05, 36426.38264766], [1516714500000, 5.195e-05, 5.195e-05, 5.188e-05, 5.194e-05, 34870.36406307], [1516714560000, 5.188e-05, 5.194e-05, 5.187e-05, 5.19e-05, 30188.12982573], [1516714620000, 5.192e-05, 5.195e-05, 5.192e-05, 5.195e-05, 27571.81096166], [1516714680000, 5.195e-05, 5.195e-05, 5.187e-05, 5.187e-05, 63676.31154369], [1516714740000, 5.19e-05, 5.19e-05, 5.18e-05, 5.18e-05, 36758.23528668], [1516714800000, 5.179e-05, 5.194e-05, 5.179e-05, 5.19e-05, 31250.87857648], [1516714860000, 5.19e-05, 5.19e-05, 5.18e-05, 5.189e-05, 4420.34002299], [1516714920000, 5.181e-05, 5.19e-05, 5.181e-05, 5.19e-05, 3112.47644086], [1516714980000, 5.189e-05, 5.189e-05, 5.181e-05, 5.189e-05, 2571.43065851], [1516715040000, 5.189e-05, 5.189e-05, 5.178e-05, 5.178e-05, 43386.52543212], [1516715100000, 5.18e-05, 5.189e-05, 5.178e-05, 5.18e-05, 10874.99218002], [1516715160000, 5.189e-05, 5.193e-05, 5.18e-05, 5.19e-05, 13766.62757795], [1516715220000, 5.192e-05, 5.194e-05, 5.18e-05, 5.19e-05, 30715.33325806], [1516715280000, 5.181e-05, 5.19e-05, 5.181e-05, 5.181e-05, 4511.97037831], [1516715340000, 5.189e-05, 5.192e-05, 5.181e-05, 5.182e-05, 48291.4627092], [1516715400000, 5.182e-05, 5.192e-05, 5.182e-05, 5.19e-05, 18505.34923272], [1516715460000, 5.19e-05, 5.191e-05, 5.182e-05, 5.183e-05, 10009.42070522], [1516715520000, 5.183e-05, 5.189e-05, 5.182e-05, 5.189e-05, 24983.35941628], [1516715580000, 5.189e-05, 5.189e-05, 5.183e-05, 5.185e-05, 8375.34459232], [1516715640000, 5.185e-05, 5.185e-05, 5.182e-05, 5.184e-05, 20493.1989666], [1516715700000, 5.182e-05, 5.185e-05, 5.181e-05, 5.183e-05, 19212.30833035], [1516715760000, 5.185e-05, 5.185e-05, 5.183e-05, 5.183e-05, 2944.32424912], [1516715820000, 5.181e-05, 5.183e-05, 5.181e-05, 5.182e-05, 2637.32299638], [1516715880000, 5.182e-05, 5.182e-05, 5.181e-05, 5.181e-05, 6406.16085135], [1516715940000, 5.182e-05, 5.183e-05, 5.182e-05, 5.182e-05, 1874.36166812], [1516716000000, 5.183e-05, 5.185e-05, 5.181e-05, 5.182e-05, 16514.29149206], [1516716060000, 5.182e-05, 5.182e-05, 5.165e-05, 5.169e-05, 171623.99166553], [1516716120000, 5.169e-05, 5.17e-05, 5.166e-05, 5.17e-05, 73068.88447711], [1516716180000, 5.166e-05, 5.17e-05, 5.165e-05, 5.165e-05, 15283.37544204], [1516716240000, 5.165e-05, 5.17e-05, 5.165e-05, 5.165e-05, 262438.27402945], [1516716300000, 5.169e-05, 5.17e-05, 5.165e-05, 5.165e-05, 19209.15706745], [1516716360000, 5.17e-05, 5.17e-05, 5.169e-05, 5.169e-05, 3982.81857998], [1516716420000, 5.167e-05, 5.168e-05, 5.162e-05, 5.168e-05, 1285.69478411], [1516716480000, 5.168e-05, 5.169e-05, 5.168e-05, 5.169e-05, 7765.56022027], [1516716540000, 5.168e-05, 5.17e-05, 5.168e-05, 5.17e-05, 10772.30261612], [1516716600000, 5.17e-05, 5.17e-05, 5.168e-05, 5.17e-05, 19461.37844494], [1516716660000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 9551.48548042], [1516716720000, 5.169e-05, 5.17e-05, 5.169e-05, 5.17e-05, 24395.07854024], [1516716780000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 5080.2535041], [1516716840000, 5.169e-05, 5.17e-05, 5.168e-05, 5.168e-05, 13691.83794894], [1516716900000, 5.168e-05, 5.17e-05, 5.164e-05, 5.164e-05, 8193.31691376], [1516716960000, 5.164e-05, 5.175e-05, 5.163e-05, 5.175e-05, 62817.13218374], [1516717020000, 5.175e-05, 5.175e-05, 5.17e-05, 5.175e-05, 39648.86410714], [1516717080000, 5.165e-05, 5.165e-05, 5.165e-05, 5.165e-05, 697.10173593], [1516717140000, 5.165e-05, 5.175e-05, 5.165e-05, 5.175e-05, 9629.07902841], [1516717200000, 5.17e-05, 5.17e-05, 5.165e-05, 5.165e-05, 183.19872686], [1516717260000, 5.165e-05, 5.168e-05, 5.165e-05, 5.168e-05, 2117.55656932], [1516717320000, 5.168e-05, 5.175e-05, 5.165e-05, 5.175e-05, 151590.82905109], [1516717380000, 5.175e-05, 5.175e-05, 5.17e-05, 5.175e-05, 66105.21253614], [1516717440000, 5.171e-05, 5.174e-05, 5.17e-05, 5.17e-05, 9189.44589434], [1516717500000, 5.17e-05, 5.175e-05, 5.17e-05, 5.17e-05, 157685.41952568], [1516717560000, 5.171e-05, 5.175e-05, 5.171e-05, 5.171e-05, 1787.62420735], [1516717620000, 5.171e-05, 5.175e-05, 5.171e-05, 5.175e-05, 2179.87569124], [1516717680000, 5.175e-05, 5.175e-05, 5.172e-05, 5.172e-05, 268.995118], [1516717740000, 5.175e-05, 5.175e-05, 5.175e-05, 5.175e-05, 131.44499307], [1516717800000, 5.175e-05, 5.175e-05, 5.172e-05, 5.175e-05, 4010.53244547], [1516717860000, 5.175e-05, 5.175e-05, 5.174e-05, 5.175e-05, 27272.00222263], [1516717920000, 5.174e-05, 5.175e-05, 5.174e-05, 5.175e-05, 1801.12506021], [1516717980000, 5.175e-05, 5.175e-05, 5.172e-05, 5.173e-05, 14069.32324806], [1516718040000, 5.174e-05, 5.175e-05, 5.173e-05, 5.174e-05, 1665.9784892], [1516718100000, 5.175e-05, 5.175e-05, 5.17e-05, 5.17e-05, 1066760.54538126], [1516718160000, 5.17e-05, 5.175e-05, 5.17e-05, 5.175e-05, 2055.86968716], [1516718220000, 5.175e-05, 5.18e-05, 5.171e-05, 5.18e-05, 3774.26171591], [1516718280000, 5.171e-05, 5.18e-05, 5.17e-05, 5.18e-05, 40356.12876068], [1516718340000, 5.171e-05, 5.18e-05, 5.171e-05, 5.175e-05, 2606.46784483], [1516718400000, 5.175e-05, 5.18e-05, 5.17e-05, 5.174e-05, 26994.14217044], [1516718460000, 5.18e-05, 5.18e-05, 5.17e-05, 5.17e-05, 109559.25045508], [1516718520000, 5.18e-05, 5.18e-05, 5.166e-05, 5.166e-05, 77881.97882874], [1516718580000, 5.17e-05, 5.17e-05, 5.165e-05, 5.17e-05, 9200.70702688], [1516718640000, 5.17e-05, 5.17e-05, 5.166e-05, 5.166e-05, 9842.06436588], [1516718700000, 5.166e-05, 5.168e-05, 5.16e-05, 5.16e-05, 49618.56903845], [1516718760000, 5.16e-05, 5.17e-05, 5.15e-05, 5.158e-05, 112053.88236444], [1516718820000, 5.15e-05, 5.17e-05, 5.15e-05, 5.169e-05, 49060.99237212], [1516718880000, 5.169e-05, 5.17e-05, 5.159e-05, 5.16e-05, 68931.81452231], [1516718940000, 5.16e-05, 5.17e-05, 5.16e-05, 5.17e-05, 141694.71545023], [1516719000000, 5.161e-05, 5.17e-05, 5.161e-05, 5.161e-05, 19963.37671725], [1516719060000, 5.161e-05, 5.164e-05, 5.161e-05, 5.164e-05, 7235.86897022], [1516719120000, 5.161e-05, 5.163e-05, 5.16e-05, 5.16e-05, 12691.30336134], [1516719180000, 5.16e-05, 5.16e-05, 5.149e-05, 5.149e-05, 26679.82939446], [1516719240000, 5.149e-05, 5.15e-05, 5.147e-05, 5.15e-05, 97609.00101035], [1516719300000, 5.15e-05, 5.164e-05, 5.147e-05, 5.159e-05, 285262.03228794], [1516719360000, 5.16e-05, 5.164e-05, 5.15e-05, 5.163e-05, 19243.77815366], [1516719420000, 5.162e-05, 5.162e-05, 5.153e-05, 5.161e-05, 14069.70104176], [1516719480000, 5.161e-05, 5.163e-05, 5.161e-05, 5.163e-05, 16292.23132505], [1516719540000, 5.163e-05, 5.164e-05, 5.15e-05, 5.15e-05, 28916.27776924], [1516719600000, 5.15e-05, 5.15e-05, 5.147e-05, 5.15e-05, 8011.59043478], [1516719660000, 5.15e-05, 5.15e-05, 5.149e-05, 5.149e-05, 2695.32847841], [1516719720000, 5.149e-05, 5.15e-05, 5.149e-05, 5.15e-05, 9233.09796948], [1516719780000, 5.149e-05, 5.15e-05, 5.149e-05, 5.15e-05, 25320.41493111], [1516719840000, 5.15e-05, 5.15e-05, 5.147e-05, 5.15e-05, 160130.38994049], [1516719900000, 5.149e-05, 5.15e-05, 5.149e-05, 5.15e-05, 119790.94741948], [1516719960000, 5.15e-05, 5.15e-05, 5.149e-05, 5.15e-05, 227165.04759098], [1516720020000, 5.149e-05, 5.161e-05, 5.149e-05, 5.15e-05, 105161.69684063], [1516720080000, 5.15e-05, 5.161e-05, 5.15e-05, 5.156e-05, 19136.08349943], [1516720140000, 5.16e-05, 5.168e-05, 5.15e-05, 5.167e-05, 127844.02792483], [1516720200000, 5.154e-05, 5.168e-05, 5.154e-05, 5.154e-05, 1897.22013035], [1516720260000, 5.155e-05, 5.16e-05, 5.155e-05, 5.16e-05, 1144.62480007], [1516720320000, 5.162e-05, 5.165e-05, 5.16e-05, 5.16e-05, 18929.3072769], [1516720380000, 5.168e-05, 5.177e-05, 5.16e-05, 5.163e-05, 75551.14977505], [1516720440000, 5.163e-05, 5.179e-05, 5.163e-05, 5.179e-05, 99936.61701219], [1516720500000, 5.163e-05, 5.171e-05, 5.163e-05, 5.17e-05, 2111.52947669], [1516720560000, 5.17e-05, 5.171e-05, 5.17e-05, 5.17e-05, 10205.88350388], [1516720620000, 5.171e-05, 5.179e-05, 5.163e-05, 5.179e-05, 43936.27962961], [1516720680000, 5.179e-05, 5.179e-05, 5.165e-05, 5.179e-05, 137462.84192359], [1516720740000, 5.179e-05, 5.179e-05, 5.166e-05, 5.171e-05, 4162.71535872], [1516720800000, 5.172e-05, 5.18e-05, 5.171e-05, 5.18e-05, 33586.98110084], [1516720860000, 5.179e-05, 5.18e-05, 5.179e-05, 5.18e-05, 43146.01289306], [1516720920000, 5.18e-05, 5.18e-05, 5.179e-05, 5.179e-05, 26365.67335189], [1516720980000, 5.178e-05, 5.18e-05, 5.178e-05, 5.178e-05, 8786.16077263], [1516721040000, 5.178e-05, 5.18e-05, 5.178e-05, 5.178e-05, 13589.24135026], [1516721100000, 5.179e-05, 5.18e-05, 5.178e-05, 5.178e-05, 3494.38310007], [1516721160000, 5.178e-05, 5.18e-05, 5.178e-05, 5.18e-05, 13633.754644], [1516721220000, 5.18e-05, 5.18e-05, 5.177e-05, 5.177e-05, 38172.49819164], [1516721280000, 5.175e-05, 5.18e-05, 5.174e-05, 5.179e-05, 4018.74531215], [1516721340000, 5.176e-05, 5.18e-05, 5.176e-05, 5.176e-05, 5762.04901027], [1516721400000, 5.179e-05, 5.18e-05, 5.179e-05, 5.18e-05, 554.06173755], [1516721460000, 5.179e-05, 5.18e-05, 5.176e-05, 5.179e-05, 16374.22265502], [1516721520000, 5.177e-05, 5.18e-05, 5.177e-05, 5.18e-05, 5347.64304909], [1516721580000, 5.18e-05, 5.18e-05, 5.179e-05, 5.179e-05, 20236.62240271], [1516721640000, 5.179e-05, 5.18e-05, 5.178e-05, 5.178e-05, 8679.48342719], [1516721700000, 5.178e-05, 5.178e-05, 5.176e-05, 5.177e-05, 3991.96667721], [1516721760000, 5.176e-05, 5.178e-05, 5.176e-05, 5.177e-05, 41586.39495409], [1516721820000, 5.176e-05, 5.177e-05, 5.175e-05, 5.175e-05, 11115.2502249], [1516721880000, 5.176e-05, 5.177e-05, 5.175e-05, 5.175e-05, 22981.5400728], [1516721940000, 5.177e-05, 5.177e-05, 5.175e-05, 5.175e-05, 6604.29184606], [1516722000000, 5.176e-05, 5.177e-05, 5.17e-05, 5.17e-05, 22033.80765623], [1516722060000, 5.175e-05, 5.176e-05, 5.172e-05, 5.173e-05, 9228.23032922], [1516722120000, 5.172e-05, 5.172e-05, 5.17e-05, 5.17e-05, 27890.89186991], [1516722180000, 5.172e-05, 5.172e-05, 5.17e-05, 5.171e-05, 27156.28345152], [1516722240000, 5.172e-05, 5.172e-05, 5.171e-05, 5.172e-05, 23955.39260443], [1516722300000, 5.172e-05, 5.173e-05, 5.171e-05, 5.171e-05, 17533.83932508], [1516722360000, 5.171e-05, 5.173e-05, 5.171e-05, 5.172e-05, 14653.33054513], [1516722420000, 5.173e-05, 5.173e-05, 5.172e-05, 5.172e-05, 4686.50538042], [1516722480000, 5.172e-05, 5.173e-05, 5.172e-05, 5.172e-05, 10491.6619957], [1516722540000, 5.173e-05, 5.173e-05, 5.172e-05, 5.173e-05, 35505.96953741], [1516722600000, 5.173e-05, 5.175e-05, 5.172e-05, 5.175e-05, 10652.50330714], [1516722660000, 5.175e-05, 5.175e-05, 5.173e-05, 5.174e-05, 1140.98546772], [1516722720000, 5.174e-05, 5.175e-05, 5.174e-05, 5.174e-05, 8521.3337177], [1516722780000, 5.174e-05, 5.175e-05, 5.173e-05, 5.175e-05, 4869.34369088], [1516722840000, 5.175e-05, 5.175e-05, 5.174e-05, 5.174e-05, 33878.60607362], [1516722900000, 5.175e-05, 5.175e-05, 5.172e-05, 5.175e-05, 49073.81762678], [1516722960000, 5.172e-05, 5.177e-05, 5.171e-05, 5.177e-05, 7723.09096951], [1516723020000, 5.177e-05, 5.18e-05, 5.175e-05, 5.175e-05, 7533.28275031], [1516723080000, 5.175e-05, 5.18e-05, 5.17e-05, 5.17e-05, 15939.24605231], [1516723140000, 5.18e-05, 5.18e-05, 5.173e-05, 5.18e-05, 16929.47868698], [1516723200000, 5.18e-05, 5.18e-05, 5.179e-05, 5.18e-05, 8530.22635308], [1516723260000, 5.18e-05, 5.18e-05, 5.173e-05, 5.18e-05, 13685.2651081], [1516723320000, 5.18e-05, 5.18e-05, 5.174e-05, 5.18e-05, 51524.84583928], [1516723380000, 5.18e-05, 5.18e-05, 5.174e-05, 5.174e-05, 9330.80989103], [1516723440000, 5.174e-05, 5.18e-05, 5.173e-05, 5.18e-05, 26771.10232985], [1516723500000, 5.18e-05, 5.18e-05, 5.177e-05, 5.179e-05, 31024.24020696], [1516723560000, 5.179e-05, 5.18e-05, 5.179e-05, 5.18e-05, 80302.5876584], [1516723620000, 5.18e-05, 5.18e-05, 5.18e-05, 5.18e-05, 19997.04771805], [1516723680000, 5.18e-05, 5.18e-05, 5.179e-05, 5.18e-05, 26691.7982667], [1516723740000, 5.18e-05, 5.18e-05, 5.179e-05, 5.18e-05, 21256.21999204], [1516723800000, 5.18e-05, 5.18e-05, 5.179e-05, 5.18e-05, 57021.3349269], [1516723860000, 5.18e-05, 5.18e-05, 5.178e-05, 5.18e-05, 9403.36460058], [1516723920000, 5.18e-05, 5.18e-05, 5.18e-05, 5.18e-05, 10677.26465682], [1516723980000, 5.18e-05, 5.18e-05, 5.178e-05, 5.179e-05, 129684.70111492], [1516724040000, 5.179e-05, 5.18e-05, 5.179e-05, 5.18e-05, 27622.02617689], [1516724100000, 5.18e-05, 5.18e-05, 5.179e-05, 5.18e-05, 48735.70437226], [1516724160000, 5.179e-05, 5.18e-05, 5.179e-05, 5.18e-05, 32132.21388327], [1516724220000, 5.18e-05, 5.18e-05, 5.18e-05, 5.18e-05, 31185.99668329], [1516724280000, 5.18e-05, 5.18e-05, 5.179e-05, 5.18e-05, 51821.61579644], [1516724340000, 5.18e-05, 5.18e-05, 5.176e-05, 5.18e-05, 126829.43492652], [1516724400000, 5.18e-05, 5.18e-05, 5.179e-05, 5.18e-05, 72750.21774398], [1516724460000, 5.18e-05, 5.18e-05, 5.176e-05, 5.18e-05, 171329.13034477], [1516724520000, 5.18e-05, 5.18e-05, 5.175e-05, 5.177e-05, 14707.59800052], [1516724580000, 5.177e-05, 5.18e-05, 5.177e-05, 5.18e-05, 27782.69042218], [1516724640000, 5.177e-05, 5.18e-05, 5.177e-05, 5.179e-05, 24347.45262689], [1516724700000, 5.179e-05, 5.179e-05, 5.17e-05, 5.17e-05, 73877.22985464], [1516724760000, 5.177e-05, 5.177e-05, 5.17e-05, 5.177e-05, 87584.96267322], [1516724820000, 5.177e-05, 5.18e-05, 5.163e-05, 5.179e-05, 98372.60345349], [1516724880000, 5.179e-05, 5.18e-05, 5.173e-05, 5.177e-05, 24671.41414856], [1516724940000, 5.178e-05, 5.184e-05, 5.177e-05, 5.184e-05, 31281.95543032], [1516725000000, 5.185e-05, 5.185e-05, 5.16e-05, 5.185e-05, 108755.06679665], [1516725060000, 5.185e-05, 5.185e-05, 5.174e-05, 5.185e-05, 50667.87797598], [1516725120000, 5.185e-05, 5.185e-05, 5.176e-05, 5.185e-05, 25221.78947697], [1516725180000, 5.185e-05, 5.185e-05, 5.184e-05, 5.185e-05, 75164.38280907], [1516725240000, 5.184e-05, 5.185e-05, 5.184e-05, 5.185e-05, 101800.17449073], [1516725300000, 5.185e-05, 5.19e-05, 5.179e-05, 5.19e-05, 378860.94007264], [1516725360000, 5.19e-05, 5.19e-05, 5.185e-05, 5.185e-05, 351019.18105847], [1516725420000, 5.185e-05, 5.185e-05, 5.183e-05, 5.185e-05, 110771.39725084], [1516725480000, 5.185e-05, 5.185e-05, 5.17e-05, 5.183e-05, 52338.60712094], [1516725540000, 5.182e-05, 5.183e-05, 5.18e-05, 5.18e-05, 38998.45703346], [1516725600000, 5.18e-05, 5.181e-05, 5.15e-05, 5.18e-05, 57753.72399767], [1516725660000, 5.18e-05, 5.18e-05, 5.172e-05, 5.18e-05, 21356.43956963], [1516725720000, 5.174e-05, 5.18e-05, 5.174e-05, 5.18e-05, 32070.7507558], [1516725780000, 5.18e-05, 5.181e-05, 5.176e-05, 5.18e-05, 46282.00015771], [1516725840000, 5.181e-05, 5.185e-05, 5.18e-05, 5.185e-05, 21595.25260268], [1516725900000, 5.185e-05, 5.185e-05, 5.183e-05, 5.185e-05, 64321.02154947], [1516725960000, 5.185e-05, 5.185e-05, 5.18e-05, 5.181e-05, 43786.79838639], [1516726020000, 5.185e-05, 5.185e-05, 5.181e-05, 5.185e-05, 16181.35336461], [1516726080000, 5.185e-05, 5.185e-05, 5.184e-05, 5.184e-05, 56550.2697964], [1516726140000, 5.184e-05, 5.185e-05, 5.184e-05, 5.185e-05, 38496.61097925], [1516726200000, 5.185e-05, 5.185e-05, 5.184e-05, 5.185e-05, 42073.91018961], [1516726260000, 5.185e-05, 5.185e-05, 5.184e-05, 5.185e-05, 36237.84650138], [1516726320000, 5.185e-05, 5.185e-05, 5.184e-05, 5.185e-05, 347822.05080022], [1516726380000, 5.185e-05, 5.185e-05, 5.184e-05, 5.185e-05, 42264.95551708], [1516726440000, 5.185e-05, 5.185e-05, 5.184e-05, 5.185e-05, 62062.38919141], [1516726500000, 5.185e-05, 5.19e-05, 5.185e-05, 5.19e-05, 41679.46885669], [1516726560000, 5.19e-05, 5.19e-05, 5.184e-05, 5.184e-05, 111960.51426514], [1516726620000, 5.19e-05, 5.19e-05, 5.184e-05, 5.185e-05, 29893.76235247], [1516726680000, 5.189e-05, 5.189e-05, 5.184e-05, 5.185e-05, 23992.10636109], [1516726740000, 5.184e-05, 5.186e-05, 5.184e-05, 5.186e-05, 30726.96277104], [1516726800000, 5.186e-05, 5.186e-05, 5.185e-05, 5.186e-05, 24580.15762279], [1516726860000, 5.189e-05, 5.189e-05, 5.188e-05, 5.189e-05, 21910.68061774], [1516726920000, 5.188e-05, 5.19e-05, 5.186e-05, 5.19e-05, 32234.55590979], [1516726980000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 31335.38812568], [1516727040000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 48042.61008246], [1516727100000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 51039.69750426], [1516727160000, 5.189e-05, 5.19e-05, 5.163e-05, 5.166e-05, 126780.56019774], [1516727220000, 5.164e-05, 5.19e-05, 5.164e-05, 5.19e-05, 4615.05085255], [1516727280000, 5.19e-05, 5.19e-05, 5.188e-05, 5.188e-05, 23381.100237], [1516727340000, 5.19e-05, 5.19e-05, 5.188e-05, 5.19e-05, 33149.63082246], [1516727400000, 5.188e-05, 5.188e-05, 5.186e-05, 5.187e-05, 10036.79234969], [1516727460000, 5.187e-05, 5.188e-05, 5.187e-05, 5.187e-05, 7807.28900103], [1516727520000, 5.187e-05, 5.188e-05, 5.187e-05, 5.188e-05, 19311.51718135], [1516727580000, 5.188e-05, 5.188e-05, 5.183e-05, 5.187e-05, 31508.37904484], [1516727640000, 5.188e-05, 5.188e-05, 5.186e-05, 5.188e-05, 17512.02763665], [1516727700000, 5.188e-05, 5.188e-05, 5.16e-05, 5.169e-05, 86929.72384213], [1516727760000, 5.18e-05, 5.19e-05, 5.147e-05, 5.174e-05, 203587.20029557], [1516727820000, 5.17e-05, 5.187e-05, 5.146e-05, 5.154e-05, 81093.61746036], [1516727880000, 5.154e-05, 5.186e-05, 5.153e-05, 5.159e-05, 24564.18940905], [1516727940000, 5.155e-05, 5.159e-05, 5.134e-05, 5.134e-05, 99716.60624276], [1516728000000, 5.134e-05, 5.155e-05, 5.132e-05, 5.154e-05, 35739.65327871], [1516728060000, 5.154e-05, 5.154e-05, 5.135e-05, 5.149e-05, 59106.27992654], [1516728120000, 5.149e-05, 5.15e-05, 5.135e-05, 5.149e-05, 71090.14335341], [1516728180000, 5.149e-05, 5.15e-05, 5.141e-05, 5.15e-05, 14687.29523709], [1516728240000, 5.148e-05, 5.151e-05, 5.14e-05, 5.15e-05, 34635.61491961], [1516728300000, 5.151e-05, 5.151e-05, 5.15e-05, 5.151e-05, 15904.56075559], [1516728360000, 5.151e-05, 5.151e-05, 5.149e-05, 5.15e-05, 16994.10743043], [1516728420000, 5.149e-05, 5.151e-05, 5.142e-05, 5.149e-05, 17815.26785149], [1516728480000, 5.149e-05, 5.151e-05, 5.142e-05, 5.149e-05, 100455.6331359], [1516728540000, 5.142e-05, 5.15e-05, 5.134e-05, 5.15e-05, 35913.84589378], [1516728600000, 5.142e-05, 5.15e-05, 5.142e-05, 5.142e-05, 20242.00450548], [1516728660000, 5.142e-05, 5.148e-05, 5.142e-05, 5.142e-05, 6439.11131864], [1516728720000, 5.142e-05, 5.149e-05, 5.134e-05, 5.144e-05, 14263.35919506], [1516728780000, 5.143e-05, 5.147e-05, 5.136e-05, 5.147e-05, 7990.58263141], [1516728840000, 5.145e-05, 5.145e-05, 5.135e-05, 5.136e-05, 12232.72331119], [1516728900000, 5.143e-05, 5.144e-05, 5.143e-05, 5.144e-05, 3636.99595008], [1516728960000, 5.143e-05, 5.148e-05, 5.136e-05, 5.142e-05, 13722.21310636], [1516729020000, 5.142e-05, 5.142e-05, 5.138e-05, 5.141e-05, 3954.39294454], [1516729080000, 5.141e-05, 5.175e-05, 5.139e-05, 5.149e-05, 21732.75293956], [1516729140000, 5.151e-05, 5.17e-05, 5.15e-05, 5.165e-05, 13706.15896919], [1516729200000, 5.164e-05, 5.164e-05, 5.137e-05, 5.151e-05, 22720.07788905], [1516729260000, 5.149e-05, 5.157e-05, 5.13e-05, 5.138e-05, 134186.19537229], [1516729320000, 5.138e-05, 5.138e-05, 5.13e-05, 5.138e-05, 20563.09071165], [1516729380000, 5.156e-05, 5.156e-05, 5.139e-05, 5.139e-05, 4308.13509524], [1516729440000, 5.138e-05, 5.142e-05, 5.134e-05, 5.142e-05, 7528.22934127], [1516729500000, 5.142e-05, 5.154e-05, 5.14e-05, 5.153e-05, 23648.42747198], [1516729560000, 5.149e-05, 5.149e-05, 5.14e-05, 5.141e-05, 1666.05823428], [1516729620000, 5.14e-05, 5.14e-05, 5.13e-05, 5.14e-05, 74368.6242241], [1516729680000, 5.144e-05, 5.144e-05, 5.139e-05, 5.139e-05, 5732.1204214], [1516729740000, 5.131e-05, 5.139e-05, 5.131e-05, 5.139e-05, 6836.76293394], [1516729800000, 5.139e-05, 5.139e-05, 5.131e-05, 5.137e-05, 4498.63746635], [1516729860000, 5.132e-05, 5.139e-05, 5.13e-05, 5.139e-05, 14019.89831379], [1516729920000, 5.139e-05, 5.144e-05, 5.139e-05, 5.144e-05, 3585.28849077], [1516729980000, 5.143e-05, 5.145e-05, 5.143e-05, 5.145e-05, 7350.31896953], [1516730040000, 5.145e-05, 5.17e-05, 5.138e-05, 5.138e-05, 9367.70502434], [1516730100000, 5.165e-05, 5.165e-05, 5.146e-05, 5.163e-05, 532.52945651], [1516730160000, 5.163e-05, 5.163e-05, 5.159e-05, 5.159e-05, 1374.13982267], [1516730220000, 5.159e-05, 5.172e-05, 5.149e-05, 5.149e-05, 24312.72574318], [1516730280000, 5.149e-05, 5.16e-05, 5.149e-05, 5.16e-05, 7848.84647438], [1516730340000, 5.16e-05, 5.175e-05, 5.16e-05, 5.175e-05, 14803.77689542], [1516730400000, 5.176e-05, 5.188e-05, 5.132e-05, 5.132e-05, 61653.84748347], [1516730460000, 5.132e-05, 5.165e-05, 5.132e-05, 5.165e-05, 2309.71939917], [1516730520000, 5.149e-05, 5.159e-05, 5.149e-05, 5.159e-05, 3234.92321558], [1516730580000, 5.159e-05, 5.165e-05, 5.159e-05, 5.159e-05, 987.99282668], [1516730640000, 5.164e-05, 5.164e-05, 5.159e-05, 5.163e-05, 1403.43027526], [1516730700000, 5.163e-05, 5.163e-05, 5.16e-05, 5.163e-05, 2203.95174451], [1516730760000, 5.163e-05, 5.165e-05, 5.161e-05, 5.165e-05, 1367.31536228], [1516730820000, 5.163e-05, 5.165e-05, 5.163e-05, 5.165e-05, 3322.8249565], [1516730880000, 5.163e-05, 5.165e-05, 5.163e-05, 5.165e-05, 4948.1057998], [1516730940000, 5.165e-05, 5.165e-05, 5.163e-05, 5.165e-05, 25949.5717732], [1516731000000, 5.165e-05, 5.165e-05, 5.162e-05, 5.165e-05, 10115.86227802], [1516731060000, 5.165e-05, 5.166e-05, 5.159e-05, 5.159e-05, 63140.57437597], [1516731120000, 5.166e-05, 5.166e-05, 5.159e-05, 5.166e-05, 19088.60926462], [1516731180000, 5.166e-05, 5.166e-05, 5.16e-05, 5.166e-05, 2028.98667046], [1516731240000, 5.166e-05, 5.166e-05, 5.165e-05, 5.166e-05, 3597.13065484], [1516731300000, 5.166e-05, 5.166e-05, 5.165e-05, 5.166e-05, 27282.52049514], [1516731360000, 5.166e-05, 5.166e-05, 5.165e-05, 5.166e-05, 17227.5497487], [1516731420000, 5.166e-05, 5.166e-05, 5.165e-05, 5.165e-05, 12352.2023928], [1516731480000, 5.166e-05, 5.166e-05, 5.165e-05, 5.166e-05, 15116.16975698], [1516731540000, 5.166e-05, 5.166e-05, 5.165e-05, 5.165e-05, 16727.89034669], [1516731600000, 5.165e-05, 5.167e-05, 5.165e-05, 5.167e-05, 8507.67782086], [1516731660000, 5.167e-05, 5.169e-05, 5.166e-05, 5.169e-05, 38581.58203486], [1516731720000, 5.167e-05, 5.175e-05, 5.167e-05, 5.175e-05, 38764.53824342], [1516731780000, 5.175e-05, 5.182e-05, 5.165e-05, 5.177e-05, 13979.88596396], [1516731840000, 5.177e-05, 5.18e-05, 5.175e-05, 5.175e-05, 10892.40609322], [1516731900000, 5.175e-05, 5.175e-05, 5.165e-05, 5.167e-05, 66062.96100656], [1516731960000, 5.167e-05, 5.175e-05, 5.166e-05, 5.174e-05, 3490.06564889], [1516732020000, 5.174e-05, 5.175e-05, 5.166e-05, 5.175e-05, 30480.36939609], [1516732080000, 5.178e-05, 5.178e-05, 5.177e-05, 5.177e-05, 263.91336849], [1516732140000, 5.177e-05, 5.178e-05, 5.175e-05, 5.175e-05, 3713.86998591], [1516732200000, 5.178e-05, 5.18e-05, 5.175e-05, 5.18e-05, 1671.45407259], [1516732260000, 5.18e-05, 5.18e-05, 5.179e-05, 5.18e-05, 2784.1100702], [1516732320000, 5.181e-05, 5.181e-05, 5.178e-05, 5.178e-05, 14384.17588422], [1516732380000, 5.181e-05, 5.188e-05, 5.178e-05, 5.188e-05, 10907.04740722], [1516732440000, 5.186e-05, 5.189e-05, 5.18e-05, 5.18e-05, 39126.60790212], [1516732500000, 5.189e-05, 5.19e-05, 5.189e-05, 5.19e-05, 13637.82097574], [1516732560000, 5.19e-05, 5.19e-05, 5.182e-05, 5.19e-05, 5700.423886], [1516732620000, 5.19e-05, 5.19e-05, 5.189e-05, 5.189e-05, 4409.79750088], [1516732680000, 5.189e-05, 5.19e-05, 5.189e-05, 5.19e-05, 32973.13333796], [1516732740000, 5.189e-05, 5.19e-05, 5.189e-05, 5.19e-05, 8668.00772423], [1516732800000, 5.19e-05, 5.19e-05, 5.19e-05, 5.19e-05, 35423.31806804], [1516732860000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 7415.13847889], [1516732920000, 5.19e-05, 5.19e-05, 5.19e-05, 5.19e-05, 10432.9412719], [1516732980000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 5170.39449653], [1516733040000, 5.19e-05, 5.19e-05, 5.189e-05, 5.189e-05, 11304.2891778], [1516733100000, 5.189e-05, 5.189e-05, 5.185e-05, 5.186e-05, 2331.53549152], [1516733160000, 5.19e-05, 5.19e-05, 5.185e-05, 5.19e-05, 36935.85398531], [1516733220000, 5.19e-05, 5.19e-05, 5.185e-05, 5.188e-05, 11732.72979343], [1516733280000, 5.185e-05, 5.19e-05, 5.185e-05, 5.19e-05, 71560.31244153], [1516733340000, 5.185e-05, 5.19e-05, 5.185e-05, 5.19e-05, 6571.31818049], [1516733400000, 5.19e-05, 5.19e-05, 5.185e-05, 5.188e-05, 17746.45265303], [1516733460000, 5.185e-05, 5.189e-05, 5.181e-05, 5.182e-05, 24363.83702192], [1516733520000, 5.185e-05, 5.185e-05, 5.18e-05, 5.185e-05, 8459.41449101], [1516733580000, 5.185e-05, 5.185e-05, 5.182e-05, 5.183e-05, 13699.3164399], [1516733640000, 5.182e-05, 5.183e-05, 5.181e-05, 5.182e-05, 12915.18765298], [1516733700000, 5.182e-05, 5.183e-05, 5.168e-05, 5.169e-05, 18653.4874751], [1516733760000, 5.18e-05, 5.18e-05, 5.17e-05, 5.179e-05, 12165.68942864], [1516733820000, 5.179e-05, 5.179e-05, 5.17e-05, 5.178e-05, 6346.48118541], [1516733880000, 5.178e-05, 5.178e-05, 5.169e-05, 5.17e-05, 29023.97542858], [1516733940000, 5.17e-05, 5.17e-05, 5.17e-05, 5.17e-05, 8094.50138357], [1516734000000, 5.17e-05, 5.17e-05, 5.166e-05, 5.17e-05, 13825.12647049], [1516734060000, 5.17e-05, 5.17e-05, 5.17e-05, 5.17e-05, 12634.03722997], [1516734120000, 5.167e-05, 5.17e-05, 5.167e-05, 5.168e-05, 27766.81700351], [1516734180000, 5.168e-05, 5.17e-05, 5.168e-05, 5.169e-05, 17527.14556123], [1516734240000, 5.169e-05, 5.17e-05, 5.166e-05, 5.166e-05, 48463.9683479], [1516734300000, 5.165e-05, 5.17e-05, 5.165e-05, 5.17e-05, 39097.78824294], [1516734360000, 5.17e-05, 5.17e-05, 5.165e-05, 5.165e-05, 6036.48141198], [1516734420000, 5.17e-05, 5.17e-05, 5.169e-05, 5.169e-05, 1617.24175441], [1516734480000, 5.169e-05, 5.169e-05, 5.169e-05, 5.169e-05, 243.1268151], [1516734540000, 5.168e-05, 5.169e-05, 5.168e-05, 5.168e-05, 2886.86277797], [1516734600000, 5.168e-05, 5.169e-05, 5.168e-05, 5.168e-05, 3001.12668295], [1516734660000, 5.169e-05, 5.169e-05, 5.169e-05, 5.169e-05, 4811.10030881], [1516734720000, 5.169e-05, 5.17e-05, 5.168e-05, 5.168e-05, 13108.90810997], [1516734780000, 5.167e-05, 5.168e-05, 5.167e-05, 5.168e-05, 749.92035945], [1516734840000, 5.168e-05, 5.17e-05, 5.168e-05, 5.17e-05, 2459.79002775], [1516734900000, 5.168e-05, 5.17e-05, 5.165e-05, 5.17e-05, 10530.91092284], [1516734960000, 5.17e-05, 5.17e-05, 5.165e-05, 5.17e-05, 2334.86489131], [1516735020000, 5.17e-05, 5.17e-05, 5.165e-05, 5.17e-05, 9219.49943286], [1516735080000, 5.17e-05, 5.17e-05, 5.166e-05, 5.169e-05, 3580.7605554], [1516735140000, 5.17e-05, 5.17e-05, 5.17e-05, 5.17e-05, 65874.50450426], [1516735200000, 5.17e-05, 5.17e-05, 5.169e-05, 5.169e-05, 7733.41803775], [1516735260000, 5.169e-05, 5.169e-05, 5.15e-05, 5.15e-05, 26643.93508764], [1516735320000, 5.169e-05, 5.17e-05, 5.169e-05, 5.17e-05, 31703.31345082], [1516735380000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 2874.71744635], [1516735440000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 10536.30137506], [1516735500000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 3667.50535507], [1516735560000, 5.17e-05, 5.17e-05, 5.17e-05, 5.17e-05, 25054.31130028], [1516735620000, 5.169e-05, 5.17e-05, 5.169e-05, 5.17e-05, 16921.38077087], [1516735680000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 54636.29836459], [1516735740000, 5.17e-05, 5.17e-05, 5.169e-05, 5.169e-05, 5235.73143629], [1516735800000, 5.169e-05, 5.17e-05, 5.169e-05, 5.169e-05, 3305.30898138], [1516735860000, 5.17e-05, 5.17e-05, 5.169e-05, 5.169e-05, 2986.62159908], [1516735920000, 5.17e-05, 5.17e-05, 5.169e-05, 5.169e-05, 20337.22306264], [1516735980000, 5.17e-05, 5.17e-05, 5.169e-05, 5.169e-05, 3852.99506837], [1516736040000, 5.17e-05, 5.17e-05, 5.17e-05, 5.17e-05, 10729.07454987], [1516736100000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 18360.18205723], [1516736160000, 5.17e-05, 5.17e-05, 5.17e-05, 5.17e-05, 17082.43935434], [1516736220000, 5.17e-05, 5.17e-05, 5.169e-05, 5.169e-05, 7466.61781527], [1516736280000, 5.17e-05, 5.17e-05, 5.169e-05, 5.169e-05, 8390.66730338], [1516736340000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 9967.52736374], [1516736400000, 5.17e-05, 5.17e-05, 5.169e-05, 5.169e-05, 14721.2386015], [1516736460000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 13291.6591017], [1516736520000, 5.169e-05, 5.17e-05, 5.169e-05, 5.17e-05, 16647.28565929], [1516736580000, 5.17e-05, 5.17e-05, 5.169e-05, 5.169e-05, 47693.44315542], [1516736640000, 5.169e-05, 5.17e-05, 5.169e-05, 5.17e-05, 32428.00200655], [1516736700000, 5.17e-05, 5.17e-05, 5.169e-05, 5.169e-05, 98915.25521097], [1516736760000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 17518.55902925], [1516736820000, 5.17e-05, 5.17e-05, 5.151e-05, 5.169e-05, 43071.32761641], [1516736880000, 5.151e-05, 5.168e-05, 5.151e-05, 5.168e-05, 794.06937856], [1516736940000, 5.167e-05, 5.167e-05, 5.167e-05, 5.167e-05, 2168.38389849], [1516737000000, 5.167e-05, 5.167e-05, 5.16e-05, 5.167e-05, 1177.4476835], [1516737060000, 5.167e-05, 5.167e-05, 5.159e-05, 5.159e-05, 2265.6446801], [1516737120000, 5.159e-05, 5.163e-05, 5.152e-05, 5.158e-05, 3984.82190675], [1516737180000, 5.158e-05, 5.163e-05, 5.151e-05, 5.151e-05, 13499.23595716], [1516737240000, 5.151e-05, 5.151e-05, 5.149e-05, 5.15e-05, 13715.40824026], [1516737300000, 5.15e-05, 5.15e-05, 5.149e-05, 5.149e-05, 8097.27738059], [1516737360000, 5.149e-05, 5.15e-05, 5.14e-05, 5.14e-05, 50347.12046115], [1516737420000, 5.14e-05, 5.14e-05, 5.133e-05, 5.135e-05, 58474.40364283], [1516737480000, 5.135e-05, 5.15e-05, 5.132e-05, 5.15e-05, 11549.03705647], [1516737540000, 5.15e-05, 5.15e-05, 5.125e-05, 5.15e-05, 30749.31411896], [1516737600000, 5.15e-05, 5.15e-05, 5.126e-05, 5.15e-05, 14045.38276751], [1516737660000, 5.15e-05, 5.15e-05, 5.144e-05, 5.144e-05, 3147.64799871], [1516737720000, 5.144e-05, 5.15e-05, 5.132e-05, 5.15e-05, 1357.86930875], [1516737780000, 5.132e-05, 5.15e-05, 5.132e-05, 5.149e-05, 24173.72327471], [1516737840000, 5.149e-05, 5.149e-05, 5.129e-05, 5.149e-05, 14053.86134916], [1516737900000, 5.132e-05, 5.149e-05, 5.132e-05, 5.149e-05, 5563.01799321], [1516737960000, 5.148e-05, 5.149e-05, 5.148e-05, 5.149e-05, 2296.61723205], [1516738020000, 5.149e-05, 5.149e-05, 5.148e-05, 5.149e-05, 1796.56049132], [1516738080000, 5.149e-05, 5.149e-05, 5.148e-05, 5.149e-05, 989.38849635], [1516738140000, 5.149e-05, 5.149e-05, 5.148e-05, 5.148e-05, 7116.51642564], [1516738200000, 5.149e-05, 5.149e-05, 5.148e-05, 5.149e-05, 5469.16363856], [1516738260000, 5.149e-05, 5.149e-05, 5.149e-05, 5.149e-05, 5136.43057646], [1516738320000, 5.149e-05, 5.149e-05, 5.148e-05, 5.148e-05, 10711.32065249], [1516738380000, 5.148e-05, 5.148e-05, 5.135e-05, 5.148e-05, 36182.75304105], [1516738440000, 5.148e-05, 5.148e-05, 5.147e-05, 5.148e-05, 1227.05008841], [1516738500000, 5.148e-05, 5.148e-05, 5.147e-05, 5.147e-05, 11153.97726204], [1516738560000, 5.147e-05, 5.158e-05, 5.147e-05, 5.149e-05, 36733.94291406], [1516738620000, 5.149e-05, 5.149e-05, 5.149e-05, 5.149e-05, 433.83714112], [1516738680000, 5.149e-05, 5.149e-05, 5.149e-05, 5.149e-05, 5260.97556659], [1516738740000, 5.149e-05, 5.158e-05, 5.148e-05, 5.149e-05, 18454.42018423], [1516738800000, 5.158e-05, 5.168e-05, 5.158e-05, 5.163e-05, 1580.81227485], [1516738860000, 5.168e-05, 5.17e-05, 5.163e-05, 5.163e-05, 4985.02460901], [1516738920000, 5.165e-05, 5.167e-05, 5.159e-05, 5.165e-05, 24172.12516236], [1516738980000, 5.169e-05, 5.169e-05, 5.161e-05, 5.164e-05, 7519.21109549], [1516739040000, 5.169e-05, 5.169e-05, 5.16e-05, 5.169e-05, 16908.24284344], [1516739100000, 5.169e-05, 5.182e-05, 5.16e-05, 5.161e-05, 31043.28740778], [1516739160000, 5.175e-05, 5.182e-05, 5.175e-05, 5.182e-05, 1148.66244101], [1516739220000, 5.182e-05, 5.188e-05, 5.182e-05, 5.187e-05, 5690.85967538], [1516739280000, 5.187e-05, 5.19e-05, 5.175e-05, 5.19e-05, 56414.717129], [1516739340000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 39778.17893979], [1516739400000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 26665.34176906], [1516739460000, 5.19e-05, 5.19e-05, 5.189e-05, 5.189e-05, 17461.31246046], [1516739520000, 5.189e-05, 5.19e-05, 5.189e-05, 5.19e-05, 51014.27620671], [1516739580000, 5.19e-05, 5.19e-05, 5.171e-05, 5.19e-05, 68050.41486172], [1516739640000, 5.19e-05, 5.19e-05, 5.189e-05, 5.19e-05, 104531.65539425], [1516739700000, 5.19e-05, 5.19e-05, 5.18e-05, 5.19e-05, 24947.08610433], [1516739760000, 5.184e-05, 5.19e-05, 5.184e-05, 5.19e-05, 34363.52241213], [1516739820000, 5.19e-05, 5.19e-05, 5.185e-05, 5.19e-05, 26481.92557903], [1516739880000, 5.19e-05, 5.19e-05, 5.188e-05, 5.19e-05, 5482.60550198], [1516739940000, 5.19e-05, 5.199e-05, 5.19e-05, 5.199e-05, 311110.20609445], [1516740000000, 5.199e-05, 5.199e-05, 5.196e-05, 5.199e-05, 10425.21947508], [1516740060000, 5.199e-05, 5.199e-05, 5.197e-05, 5.197e-05, 11882.62959874], [1516740120000, 5.198e-05, 5.199e-05, 5.196e-05, 5.197e-05, 12318.00041292], [1516740180000, 5.197e-05, 5.2e-05, 5.197e-05, 5.198e-05, 4271.99796071], [1516740240000, 5.198e-05, 5.199e-05, 5.197e-05, 5.197e-05, 25390.56556008], [1516740300000, 5.197e-05, 5.197e-05, 5.196e-05, 5.197e-05, 4208.42241416], [1516740360000, 5.197e-05, 5.2e-05, 5.196e-05, 5.2e-05, 19604.83113117], [1516740420000, 5.197e-05, 5.2e-05, 5.196e-05, 5.2e-05, 1183.44666457], [1516740480000, 5.196e-05, 5.2e-05, 5.196e-05, 5.197e-05, 1991.91406245], [1516740540000, 5.196e-05, 5.2e-05, 5.196e-05, 5.197e-05, 22959.65028226], [1516740600000, 5.197e-05, 5.2e-05, 5.197e-05, 5.2e-05, 1608.85934649], [1516740660000, 5.2e-05, 5.2e-05, 5.197e-05, 5.197e-05, 1682.78582832], [1516740720000, 5.199e-05, 5.199e-05, 5.196e-05, 5.199e-05, 95820.48656023], [1516740780000, 5.199e-05, 5.199e-05, 5.198e-05, 5.198e-05, 58530.56072441], [1516740840000, 5.198e-05, 5.199e-05, 5.196e-05, 5.198e-05, 12345.08023657], [1516740900000, 5.199e-05, 5.199e-05, 5.198e-05, 5.199e-05, 2344.71662417], [1516740960000, 5.198e-05, 5.199e-05, 5.198e-05, 5.198e-05, 2374.63529941], [1516741020000, 5.198e-05, 5.198e-05, 5.196e-05, 5.196e-05, 1440.93855748], [1516741080000, 5.198e-05, 5.198e-05, 5.196e-05, 5.198e-05, 3487.74678411], [1516741140000, 5.198e-05, 5.198e-05, 5.196e-05, 5.198e-05, 2428.09411502], [1516741200000, 5.198e-05, 5.2e-05, 5.198e-05, 5.2e-05, 5522.16890923], [1516741260000, 5.199e-05, 5.2e-05, 5.198e-05, 5.198e-05, 9501.29693641], [1516741320000, 5.2e-05, 5.2e-05, 5.199e-05, 5.199e-05, 6472.19118468], [1516741380000, 5.199e-05, 5.2e-05, 5.195e-05, 5.195e-05, 32465.42592137], [1516741440000, 5.195e-05, 5.199e-05, 5.195e-05, 5.195e-05, 4632.77120108], [1516741500000, 5.199e-05, 5.2e-05, 5.199e-05, 5.199e-05, 2310.19513802], [1516741560000, 5.199e-05, 5.2e-05, 5.196e-05, 5.2e-05, 7352.5278969], [1516741620000, 5.199e-05, 5.2e-05, 5.199e-05, 5.2e-05, 6509.13900824], [1516741680000, 5.2e-05, 5.2e-05, 5.195e-05, 5.199e-05, 37930.72645283], [1516741740000, 5.195e-05, 5.198e-05, 5.195e-05, 5.198e-05, 44395.47859484], [1516741800000, 5.198e-05, 5.2e-05, 5.198e-05, 5.2e-05, 37577.93467958], [1516741860000, 5.2e-05, 5.2e-05, 5.198e-05, 5.2e-05, 20678.28314546], [1516741920000, 5.2e-05, 5.2e-05, 5.198e-05, 5.198e-05, 39167.25866361], [1516741980000, 5.198e-05, 5.2e-05, 5.198e-05, 5.2e-05, 11714.55509324], [1516742040000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 20222.31718657], [1516742100000, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 10259.92588062], [1516742160000, 5.199e-05, 5.2e-05, 5.199e-05, 5.2e-05, 8571.48789977], [1516742220000, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 13392.04256078], [1516742280000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 17670.84861513], [1516742340000, 5.199e-05, 5.2e-05, 5.199e-05, 5.199e-05, 12101.67825021], [1516742400000, 5.199e-05, 5.2e-05, 5.199e-05, 5.2e-05, 690.91969351], [1516742460000, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 4898.30349009], [1516742520000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 14995.95287174], [1516742580000, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 63451.16108921], [1516742640000, 5.2e-05, 5.2e-05, 5.195e-05, 5.199e-05, 59433.89096428], [1516742700000, 5.199e-05, 5.199e-05, 5.195e-05, 5.198e-05, 2703.28366132], [1516742760000, 5.198e-05, 5.198e-05, 5.197e-05, 5.198e-05, 11142.10506911], [1516742820000, 5.198e-05, 5.198e-05, 5.197e-05, 5.198e-05, 22980.88560546], [1516742880000, 5.198e-05, 5.198e-05, 5.195e-05, 5.198e-05, 53828.88135405], [1516742940000, 5.198e-05, 5.198e-05, 5.198e-05, 5.198e-05, 7351.24702778], [1516743000000, 5.198e-05, 5.198e-05, 5.195e-05, 5.197e-05, 10247.46846941], [1516743060000, 5.196e-05, 5.199e-05, 5.195e-05, 5.199e-05, 47941.50091622], [1516743120000, 5.199e-05, 5.199e-05, 5.195e-05, 5.197e-05, 27198.84653501], [1516743180000, 5.197e-05, 5.199e-05, 5.195e-05, 5.199e-05, 5409.76797412], [1516743240000, 5.199e-05, 5.199e-05, 5.198e-05, 5.198e-05, 22623.76501153], [1516743300000, 5.198e-05, 5.199e-05, 5.195e-05, 5.198e-05, 10256.59245098], [1516743360000, 5.199e-05, 5.199e-05, 5.197e-05, 5.197e-05, 32997.42245535], [1516743420000, 5.197e-05, 5.199e-05, 5.197e-05, 5.199e-05, 91163.206763], [1516743480000, 5.199e-05, 5.199e-05, 5.197e-05, 5.199e-05, 19146.08424672], [1516743540000, 5.199e-05, 5.199e-05, 5.173e-05, 5.175e-05, 296738.53758468], [1516743600000, 5.175e-05, 5.199e-05, 5.175e-05, 5.199e-05, 39484.53900891], [1516743660000, 5.199e-05, 5.199e-05, 5.179e-05, 5.199e-05, 34005.77199164], [1516743720000, 5.199e-05, 5.199e-05, 5.199e-05, 5.199e-05, 30107.36216547], [1516743780000, 5.199e-05, 5.199e-05, 5.184e-05, 5.199e-05, 50419.02851174], [1516743840000, 5.199e-05, 5.199e-05, 5.199e-05, 5.199e-05, 21576.35813533], [1516743900000, 5.199e-05, 5.2e-05, 5.199e-05, 5.2e-05, 182875.45562999], [1516743960000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 26941.52935327], [1516744020000, 5.2e-05, 5.2e-05, 5.199e-05, 5.199e-05, 5388.55013098], [1516744080000, 5.199e-05, 5.199e-05, 5.198e-05, 5.198e-05, 1057.28032631], [1516744140000, 5.198e-05, 5.198e-05, 5.197e-05, 5.198e-05, 9298.33180117], [1516744200000, 5.197e-05, 5.199e-05, 5.197e-05, 5.199e-05, 7322.59119408], [1516744260000, 5.199e-05, 5.2e-05, 5.199e-05, 5.2e-05, 70401.88129086], [1516744320000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 94483.81686359], [1516744380000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 9614.88745365], [1516744440000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 23363.2041521], [1516744500000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 29351.56528969], [1516744560000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 49779.37166429], [1516744620000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 36956.13260005], [1516744680000, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 55017.48880248], [1516744740000, 5.199e-05, 5.2e-05, 5.199e-05, 5.2e-05, 274466.51604772], [1516744800000, 5.2e-05, 5.2e-05, 5.199e-05, 5.199e-05, 125213.94543568], [1516744860000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 46893.24973149], [1516744920000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 96102.86209722], [1516744980000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 30824.631789], [1516745040000, 5.199e-05, 5.2e-05, 5.199e-05, 5.2e-05, 89622.44400339], [1516745100000, 5.199e-05, 5.2e-05, 5.199e-05, 5.2e-05, 56070.14194208], [1516745160000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 182574.21152339], [1516745220000, 5.2e-05, 5.205e-05, 5.2e-05, 5.203e-05, 61906.9530905], [1516745280000, 5.205e-05, 5.205e-05, 5.203e-05, 5.205e-05, 58416.94992362], [1516745340000, 5.205e-05, 5.205e-05, 5.199e-05, 5.205e-05, 120492.93145783], [1516745400000, 5.207e-05, 5.215e-05, 5.205e-05, 5.215e-05, 41009.50580569], [1516745460000, 5.215e-05, 5.219e-05, 5.2e-05, 5.219e-05, 274953.15490836], [1516745520000, 5.201e-05, 5.22e-05, 5.201e-05, 5.22e-05, 167191.34093931], [1516745580000, 5.203e-05, 5.22e-05, 5.199e-05, 5.2e-05, 127707.8879819], [1516745640000, 5.2e-05, 5.212e-05, 5.13e-05, 5.212e-05, 163494.84122408], [1516745700000, 5.197e-05, 5.212e-05, 5.197e-05, 5.201e-05, 125897.36508238], [1516745760000, 5.21e-05, 5.214e-05, 5.209e-05, 5.212e-05, 48149.7991842], [1516745820000, 5.214e-05, 5.22e-05, 5.212e-05, 5.212e-05, 209048.17431505], [1516745880000, 5.212e-05, 5.212e-05, 5.21e-05, 5.21e-05, 164790.11123526], [1516745940000, 5.2e-05, 5.21e-05, 5.2e-05, 5.2e-05, 34083.20191362], [1516746000000, 5.209e-05, 5.212e-05, 5.209e-05, 5.209e-05, 37174.25700489], [1516746060000, 5.212e-05, 5.212e-05, 5.202e-05, 5.211e-05, 26661.98488012], [1516746120000, 5.203e-05, 5.21e-05, 5.202e-05, 5.202e-05, 47519.44578825], [1516746180000, 5.201e-05, 5.21e-05, 5.201e-05, 5.201e-05, 3752.23875473], [1516746240000, 5.201e-05, 5.21e-05, 5.197e-05, 5.21e-05, 60539.87743245], [1516746300000, 5.21e-05, 5.212e-05, 5.21e-05, 5.212e-05, 95090.14407827], [1516746360000, 5.212e-05, 5.212e-05, 5.201e-05, 5.212e-05, 161570.52786355], [1516746420000, 5.212e-05, 5.212e-05, 5.2e-05, 5.212e-05, 33643.90572486], [1516746480000, 5.212e-05, 5.212e-05, 5.202e-05, 5.212e-05, 181976.67887439], [1516746540000, 5.212e-05, 5.212e-05, 5.205e-05, 5.211e-05, 4168.82476451], [1516746600000, 5.206e-05, 5.208e-05, 5.205e-05, 5.206e-05, 4718.93008378], [1516746660000, 5.206e-05, 5.208e-05, 5.205e-05, 5.208e-05, 6914.10883065], [1516746720000, 5.211e-05, 5.211e-05, 5.202e-05, 5.208e-05, 33725.57157545], [1516746780000, 5.21e-05, 5.212e-05, 5.201e-05, 5.21e-05, 61836.53044059], [1516746840000, 5.212e-05, 5.212e-05, 5.202e-05, 5.202e-05, 101308.11092961], [1516746900000, 5.202e-05, 5.202e-05, 5.201e-05, 5.202e-05, 8442.99996387], [1516746960000, 5.202e-05, 5.211e-05, 5.201e-05, 5.205e-05, 7155.87829241], [1516747020000, 5.211e-05, 5.211e-05, 5.206e-05, 5.206e-05, 2326.44002254], [1516747080000, 5.211e-05, 5.212e-05, 5.209e-05, 5.212e-05, 10711.63524101], [1516747140000, 5.212e-05, 5.212e-05, 5.211e-05, 5.212e-05, 16174.66600467], [1516747200000, 5.212e-05, 5.212e-05, 5.211e-05, 5.212e-05, 45967.95193432], [1516747260000, 5.212e-05, 5.212e-05, 5.211e-05, 5.211e-05, 25450.44480873], [1516747320000, 5.211e-05, 5.211e-05, 5.21e-05, 5.211e-05, 25617.24389762], [1516747380000, 5.211e-05, 5.211e-05, 5.21e-05, 5.211e-05, 9939.86764352], [1516747440000, 5.211e-05, 5.211e-05, 5.21e-05, 5.211e-05, 50476.93196795], [1516747500000, 5.211e-05, 5.211e-05, 5.207e-05, 5.211e-05, 32032.63788065], [1516747560000, 5.21e-05, 5.211e-05, 5.207e-05, 5.208e-05, 6580.65897601], [1516747620000, 5.208e-05, 5.21e-05, 5.208e-05, 5.208e-05, 5466.63003617], [1516747680000, 5.209e-05, 5.21e-05, 5.209e-05, 5.21e-05, 1765.13989847], [1516747740000, 5.21e-05, 5.211e-05, 5.207e-05, 5.211e-05, 4494.9710742], [1516747800000, 5.211e-05, 5.212e-05, 5.209e-05, 5.211e-05, 21300.71469281], [1516747860000, 5.211e-05, 5.211e-05, 5.208e-05, 5.208e-05, 5503.4592242], [1516747920000, 5.208e-05, 5.208e-05, 5.2e-05, 5.208e-05, 35269.22320665], [1516747980000, 5.208e-05, 5.208e-05, 5.201e-05, 5.201e-05, 11335.99958818], [1516748040000, 5.201e-05, 5.211e-05, 5.201e-05, 5.211e-05, 8978.295956], [1516748100000, 5.211e-05, 5.211e-05, 5.21e-05, 5.211e-05, 8236.8280494], [1516748160000, 5.211e-05, 5.211e-05, 5.2e-05, 5.211e-05, 39428.72132114], [1516748220000, 5.21e-05, 5.212e-05, 5.201e-05, 5.212e-05, 6764.20718693], [1516748280000, 5.203e-05, 5.212e-05, 5.203e-05, 5.205e-05, 13587.97099152], [1516748340000, 5.205e-05, 5.212e-05, 5.203e-05, 5.203e-05, 17722.76680405], [1516748400000, 5.205e-05, 5.205e-05, 5.203e-05, 5.205e-05, 8846.14928924], [1516748460000, 5.205e-05, 5.212e-05, 5.2e-05, 5.205e-05, 66170.98567312], [1516748520000, 5.205e-05, 5.205e-05, 5.201e-05, 5.205e-05, 7888.69756375], [1516748580000, 5.201e-05, 5.212e-05, 5.201e-05, 5.212e-05, 17183.24270157], [1516748640000, 5.212e-05, 5.212e-05, 5.21e-05, 5.21e-05, 36976.85994807], [1516748700000, 5.21e-05, 5.21e-05, 5.206e-05, 5.206e-05, 1603.37638917], [1516748760000, 5.21e-05, 5.212e-05, 5.206e-05, 5.212e-05, 45168.28247654], [1516748820000, 5.211e-05, 5.212e-05, 5.188e-05, 5.212e-05, 135488.76426733], [1516748880000, 5.212e-05, 5.22e-05, 5.212e-05, 5.22e-05, 22690.40505587], [1516748940000, 5.22e-05, 5.22e-05, 5.2e-05, 5.219e-05, 7283.50405355], [1516749000000, 5.219e-05, 5.219e-05, 5.208e-05, 5.219e-05, 6638.05111682], [1516749060000, 5.219e-05, 5.219e-05, 5.208e-05, 5.219e-05, 853.16452481], [1516749120000, 5.218e-05, 5.218e-05, 5.217e-05, 5.218e-05, 3612.63667943], [1516749180000, 5.218e-05, 5.219e-05, 5.217e-05, 5.219e-05, 9485.88083987], [1516749240000, 5.219e-05, 5.219e-05, 5.217e-05, 5.217e-05, 3086.23054709], [1516749300000, 5.216e-05, 5.219e-05, 5.216e-05, 5.217e-05, 1809.30967941], [1516749360000, 5.217e-05, 5.217e-05, 5.216e-05, 5.216e-05, 2818.07558997], [1516749420000, 5.217e-05, 5.219e-05, 5.217e-05, 5.218e-05, 4125.71204189], [1516749480000, 5.218e-05, 5.218e-05, 5.216e-05, 5.216e-05, 21851.94899023], [1516749540000, 5.216e-05, 5.219e-05, 5.204e-05, 5.219e-05, 21718.64771559], [1516749600000, 5.219e-05, 5.219e-05, 5.218e-05, 5.219e-05, 24596.60153568], [1516749660000, 5.219e-05, 5.219e-05, 5.192e-05, 5.218e-05, 101408.40811187], [1516749720000, 5.218e-05, 5.218e-05, 5.21e-05, 5.212e-05, 9347.81605481], [1516749780000, 5.212e-05, 5.218e-05, 5.21e-05, 5.216e-05, 16626.06400614], [1516749840000, 5.216e-05, 5.216e-05, 5.192e-05, 5.216e-05, 15957.41308104], [1516749900000, 5.216e-05, 5.216e-05, 5.192e-05, 5.216e-05, 42468.80354394], [1516749960000, 5.194e-05, 5.215e-05, 5.192e-05, 5.213e-05, 21661.26781383], [1516750020000, 5.213e-05, 5.213e-05, 5.195e-05, 5.213e-05, 28544.45422993], [1516750080000, 5.213e-05, 5.213e-05, 5.194e-05, 5.194e-05, 18022.96384821], [1516750140000, 5.213e-05, 5.213e-05, 5.187e-05, 5.211e-05, 120545.35149936], [1516750200000, 5.211e-05, 5.212e-05, 5.189e-05, 5.211e-05, 16814.39312096], [1516750260000, 5.208e-05, 5.208e-05, 5.191e-05, 5.191e-05, 21083.42959789], [1516750320000, 5.191e-05, 5.207e-05, 5.191e-05, 5.191e-05, 12271.72911368], [1516750380000, 5.191e-05, 5.191e-05, 5.191e-05, 5.191e-05, 3518.38317524], [1516750440000, 5.191e-05, 5.191e-05, 5.19e-05, 5.191e-05, 12713.55630563], [1516750500000, 5.191e-05, 5.191e-05, 5.188e-05, 5.188e-05, 21446.97159736], [1516750560000, 5.188e-05, 5.191e-05, 5.187e-05, 5.19e-05, 19286.65851279], [1516750620000, 5.19e-05, 5.19e-05, 5.188e-05, 5.19e-05, 6655.18001324], [1516750680000, 5.19e-05, 5.19e-05, 5.18e-05, 5.18e-05, 15416.53032472], [1516750740000, 5.187e-05, 5.189e-05, 5.187e-05, 5.187e-05, 417.42891621], [1516750800000, 5.18e-05, 5.189e-05, 5.172e-05, 5.172e-05, 8106.96755246], [1516750860000, 5.178e-05, 5.178e-05, 5.172e-05, 5.172e-05, 9816.74521969], [1516750920000, 5.178e-05, 5.178e-05, 5.172e-05, 5.178e-05, 4055.78957494], [1516750980000, 5.178e-05, 5.188e-05, 5.178e-05, 5.188e-05, 1687.69958017], [1516751040000, 5.183e-05, 5.188e-05, 5.183e-05, 5.188e-05, 1016.9378031], [1516751100000, 5.188e-05, 5.188e-05, 5.184e-05, 5.184e-05, 3499.67368295], [1516751160000, 5.184e-05, 5.188e-05, 5.18e-05, 5.18e-05, 27373.42475534], [1516751220000, 5.18e-05, 5.188e-05, 5.172e-05, 5.187e-05, 28254.43084736], [1516751280000, 5.178e-05, 5.178e-05, 5.161e-05, 5.162e-05, 38753.16744704], [1516751340000, 5.162e-05, 5.17e-05, 5.16e-05, 5.163e-05, 103801.7627904], [1516751400000, 5.163e-05, 5.163e-05, 5.161e-05, 5.161e-05, 24848.50998177], [1516751460000, 5.162e-05, 5.162e-05, 5.16e-05, 5.16e-05, 13200.97367762], [1516751520000, 5.16e-05, 5.163e-05, 5.157e-05, 5.163e-05, 9286.26056242], [1516751580000, 5.163e-05, 5.17e-05, 5.16e-05, 5.163e-05, 8742.95521263], [1516751640000, 5.17e-05, 5.17e-05, 5.164e-05, 5.17e-05, 14415.12456032], [1516751700000, 5.17e-05, 5.176e-05, 5.17e-05, 5.176e-05, 11348.75202582], [1516751760000, 5.176e-05, 5.188e-05, 5.175e-05, 5.188e-05, 5892.86745649], [1516751820000, 5.188e-05, 5.188e-05, 5.18e-05, 5.188e-05, 14055.98201679], [1516751880000, 5.188e-05, 5.218e-05, 5.182e-05, 5.218e-05, 9139.62705625], [1516751940000, 5.217e-05, 5.218e-05, 5.188e-05, 5.215e-05, 25701.60871047], [1516752000000, 5.19e-05, 5.214e-05, 5.188e-05, 5.214e-05, 9834.7145546], [1516752060000, 5.214e-05, 5.214e-05, 5.191e-05, 5.214e-05, 11167.20438971], [1516752120000, 5.191e-05, 5.191e-05, 5.188e-05, 5.188e-05, 37388.79689423], [1516752180000, 5.188e-05, 5.191e-05, 5.179e-05, 5.188e-05, 55097.93079168], [1516752240000, 5.188e-05, 5.188e-05, 5.165e-05, 5.165e-05, 5937.21379296], [1516752300000, 5.165e-05, 5.188e-05, 5.165e-05, 5.165e-05, 15748.05788559], [1516752360000, 5.17e-05, 5.188e-05, 5.166e-05, 5.17e-05, 91988.63450604], [1516752420000, 5.17e-05, 5.191e-05, 5.17e-05, 5.191e-05, 21571.97044498], [1516752480000, 5.191e-05, 5.2e-05, 5.191e-05, 5.2e-05, 11047.51066901], [1516752540000, 5.191e-05, 5.191e-05, 5.165e-05, 5.165e-05, 99815.20097404], [1516752600000, 5.191e-05, 5.191e-05, 5.164e-05, 5.164e-05, 30521.96505005], [1516752660000, 5.164e-05, 5.189e-05, 5.157e-05, 5.189e-05, 22892.24307469], [1516752720000, 5.189e-05, 5.189e-05, 5.164e-05, 5.17e-05, 36929.22980807], [1516752780000, 5.17e-05, 5.17e-05, 5.17e-05, 5.17e-05, 4253.6223888], [1516752840000, 5.17e-05, 5.17e-05, 5.164e-05, 5.164e-05, 16385.58444954], [1516752900000, 5.164e-05, 5.17e-05, 5.15e-05, 5.163e-05, 39458.08877562], [1516752960000, 5.163e-05, 5.163e-05, 5.144e-05, 5.158e-05, 46638.67391119], [1516753020000, 5.163e-05, 5.163e-05, 5.158e-05, 5.163e-05, 7833.14505301], [1516753080000, 5.158e-05, 5.163e-05, 5.158e-05, 5.158e-05, 5977.54971935], [1516753140000, 5.163e-05, 5.163e-05, 5.162e-05, 5.163e-05, 5290.58154368], [1516753200000, 5.163e-05, 5.163e-05, 5.145e-05, 5.163e-05, 20574.23727764], [1516753260000, 5.163e-05, 5.163e-05, 5.163e-05, 5.163e-05, 6359.79670826], [1516753320000, 5.163e-05, 5.163e-05, 5.162e-05, 5.162e-05, 3265.59932844], [1516753380000, 5.162e-05, 5.162e-05, 5.153e-05, 5.153e-05, 8954.77620178], [1516753440000, 5.16e-05, 5.162e-05, 5.16e-05, 5.162e-05, 32910.52322934], [1516753500000, 5.162e-05, 5.162e-05, 5.162e-05, 5.162e-05, 1978.73018276], [1516753560000, 5.162e-05, 5.163e-05, 5.153e-05, 5.16e-05, 24982.64757566], [1516753620000, 5.158e-05, 5.158e-05, 5.148e-05, 5.148e-05, 12401.42310715], [1516753680000, 5.147e-05, 5.15e-05, 5.146e-05, 5.15e-05, 14082.7836403], [1516753740000, 5.16e-05, 5.16e-05, 5.146e-05, 5.146e-05, 4780.81026122], [1516753800000, 5.16e-05, 5.16e-05, 5.147e-05, 5.148e-05, 2103.00589444], [1516753860000, 5.16e-05, 5.16e-05, 5.148e-05, 5.16e-05, 9900.35675377], [1516753920000, 5.16e-05, 5.163e-05, 5.16e-05, 5.163e-05, 4775.85491164], [1516753980000, 5.163e-05, 5.163e-05, 5.163e-05, 5.163e-05, 3648.07146076], [1516754040000, 5.163e-05, 5.163e-05, 5.16e-05, 5.161e-05, 5430.72752115], [1516754100000, 5.162e-05, 5.162e-05, 5.159e-05, 5.159e-05, 29690.42970957], [1516754160000, 5.159e-05, 5.186e-05, 5.159e-05, 5.186e-05, 55991.49218245], [1516754220000, 5.165e-05, 5.185e-05, 5.16e-05, 5.185e-05, 12224.066358], [1516754280000, 5.185e-05, 5.185e-05, 5.165e-05, 5.184e-05, 5020.32339716], [1516754340000, 5.165e-05, 5.18e-05, 5.16e-05, 5.161e-05, 7635.71340617], [1516754400000, 5.161e-05, 5.18e-05, 5.159e-05, 5.16e-05, 24459.87860885], [1516754460000, 5.18e-05, 5.183e-05, 5.16e-05, 5.182e-05, 3543.33365338], [1516754520000, 5.182e-05, 5.182e-05, 5.163e-05, 5.182e-05, 3081.91196143], [1516754580000, 5.163e-05, 5.181e-05, 5.16e-05, 5.16e-05, 26614.70165088], [1516754640000, 5.18e-05, 5.18e-05, 5.18e-05, 5.18e-05, 684.98013353], [1516754700000, 5.18e-05, 5.18e-05, 5.16e-05, 5.18e-05, 325.87577087], [1516754760000, 5.18e-05, 5.18e-05, 5.16e-05, 5.17e-05, 3570.74932683], [1516754820000, 5.17e-05, 5.17e-05, 5.159e-05, 5.17e-05, 30749.38416829], [1516754880000, 5.159e-05, 5.17e-05, 5.159e-05, 5.159e-05, 4199.75929015], [1516754940000, 5.159e-05, 5.168e-05, 5.159e-05, 5.159e-05, 9189.01589298], [1516755000000, 5.159e-05, 5.168e-05, 5.159e-05, 5.168e-05, 9540.4445002], [1516755060000, 5.16e-05, 5.16e-05, 5.16e-05, 5.16e-05, 265.0], [1516755120000, 5.16e-05, 5.161e-05, 5.16e-05, 5.161e-05, 1905.38873493], [1516755180000, 5.161e-05, 5.161e-05, 5.16e-05, 5.16e-05, 2775.42308761], [1516755240000, 5.16e-05, 5.162e-05, 5.16e-05, 5.16e-05, 7203.13538591], [1516755300000, 5.16e-05, 5.161e-05, 5.16e-05, 5.161e-05, 1142.55828127], [1516755360000, 5.162e-05, 5.162e-05, 5.159e-05, 5.162e-05, 198.48747959], [1516755420000, 5.16e-05, 5.162e-05, 5.16e-05, 5.161e-05, 21428.23836333], [1516755480000, 5.16e-05, 5.162e-05, 5.16e-05, 5.16e-05, 28536.103489], [1516755540000, 5.16e-05, 5.161e-05, 5.16e-05, 5.161e-05, 12139.29406966], [1516755600000, 5.16e-05, 5.161e-05, 5.16e-05, 5.161e-05, 5110.90235952], [1516755660000, 5.16e-05, 5.16e-05, 5.159e-05, 5.159e-05, 1690.19414245], [1516755720000, 5.159e-05, 5.161e-05, 5.15e-05, 5.151e-05, 12245.94822925], [1516755780000, 5.151e-05, 5.159e-05, 5.151e-05, 5.159e-05, 50422.22995337], [1516755840000, 5.159e-05, 5.161e-05, 5.152e-05, 5.152e-05, 4565.68864536], [1516755900000, 5.153e-05, 5.159e-05, 5.153e-05, 5.159e-05, 1494.04733584], [1516755960000, 5.153e-05, 5.158e-05, 5.153e-05, 5.158e-05, 28991.65315442], [1516756020000, 5.153e-05, 5.154e-05, 5.153e-05, 5.153e-05, 300944.27670096], [1516756080000, 5.153e-05, 5.154e-05, 5.153e-05, 5.154e-05, 26911.79587964], [1516756140000, 5.153e-05, 5.154e-05, 5.153e-05, 5.154e-05, 40220.07031722], [1516756200000, 5.153e-05, 5.154e-05, 5.152e-05, 5.152e-05, 83733.84860847], [1516756260000, 5.152e-05, 5.154e-05, 5.152e-05, 5.152e-05, 1609.56274132], [1516756320000, 5.152e-05, 5.152e-05, 5.148e-05, 5.15e-05, 68978.52171492], [1516756380000, 5.15e-05, 5.15e-05, 5.148e-05, 5.15e-05, 9109.09691455], [1516756440000, 5.149e-05, 5.15e-05, 5.148e-05, 5.148e-05, 27455.88079371], [1516756500000, 5.148e-05, 5.15e-05, 5.148e-05, 5.149e-05, 3286.40526276], [1516756560000, 5.149e-05, 5.15e-05, 5.14e-05, 5.15e-05, 52883.27537599], [1516756620000, 5.15e-05, 5.15e-05, 5.14e-05, 5.15e-05, 82756.36627025], [1516756680000, 5.15e-05, 5.15e-05, 5.15e-05, 5.15e-05, 17064.25985723], [1516756740000, 5.15e-05, 5.154e-05, 5.15e-05, 5.154e-05, 78061.9970542], [1516756800000, 5.15e-05, 5.154e-05, 5.15e-05, 5.153e-05, 16784.45640086], [1516756860000, 5.153e-05, 5.162e-05, 5.153e-05, 5.162e-05, 279795.01727853], [1516756920000, 5.154e-05, 5.181e-05, 5.154e-05, 5.162e-05, 64442.82820078], [1516756980000, 5.181e-05, 5.181e-05, 5.155e-05, 5.162e-05, 10357.2427068], [1516757040000, 5.158e-05, 5.181e-05, 5.158e-05, 5.165e-05, 30846.14336651], [1516757100000, 5.165e-05, 5.181e-05, 5.158e-05, 5.181e-05, 1797.74683712], [1516757160000, 5.166e-05, 5.181e-05, 5.165e-05, 5.18e-05, 35964.26098565], [1516757220000, 5.18e-05, 5.182e-05, 5.165e-05, 5.182e-05, 36039.00670848], [1516757280000, 5.18e-05, 5.18e-05, 5.18e-05, 5.18e-05, 832.38921502], [1516757340000, 5.18e-05, 5.18e-05, 5.166e-05, 5.178e-05, 2060.81335488], [1516757400000, 5.166e-05, 5.18e-05, 5.165e-05, 5.178e-05, 31383.96591745], [1516757460000, 5.178e-05, 5.178e-05, 5.165e-05, 5.166e-05, 3473.37020512], [1516757520000, 5.165e-05, 5.166e-05, 5.165e-05, 5.165e-05, 1373.93648662], [1516757580000, 5.166e-05, 5.178e-05, 5.165e-05, 5.178e-05, 7677.86458201], [1516757640000, 5.168e-05, 5.18e-05, 5.168e-05, 5.178e-05, 110365.52205918], [1516757700000, 5.179e-05, 5.18e-05, 5.17e-05, 5.17e-05, 37716.76976417], [1516757760000, 5.17e-05, 5.171e-05, 5.17e-05, 5.17e-05, 2014.43211124], [1516757820000, 5.171e-05, 5.18e-05, 5.17e-05, 5.17e-05, 54331.02554478], [1516757880000, 5.17e-05, 5.18e-05, 5.17e-05, 5.17e-05, 534.85439002], [1516757940000, 5.17e-05, 5.18e-05, 5.17e-05, 5.176e-05, 10807.84549461], [1516758000000, 5.178e-05, 5.178e-05, 5.176e-05, 5.176e-05, 19185.68383124], [1516758060000, 5.176e-05, 5.18e-05, 5.176e-05, 5.176e-05, 6718.02901776], [1516758120000, 5.175e-05, 5.18e-05, 5.171e-05, 5.176e-05, 5067.91570153], [1516758180000, 5.176e-05, 5.176e-05, 5.171e-05, 5.171e-05, 10152.82370484], [1516758240000, 5.171e-05, 5.176e-05, 5.171e-05, 5.176e-05, 9714.74375654], [1516758300000, 5.176e-05, 5.176e-05, 5.175e-05, 5.175e-05, 6564.25461757], [1516758360000, 5.176e-05, 5.176e-05, 5.168e-05, 5.175e-05, 12844.24245154], [1516758420000, 5.175e-05, 5.176e-05, 5.168e-05, 5.172e-05, 37045.82677682], [1516758480000, 5.172e-05, 5.172e-05, 5.166e-05, 5.166e-05, 23267.32677117], [1516758540000, 5.167e-05, 5.17e-05, 5.167e-05, 5.17e-05, 2939.83992622], [1516758600000, 5.17e-05, 5.176e-05, 5.167e-05, 5.176e-05, 4816.65389793], [1516758660000, 5.175e-05, 5.175e-05, 5.166e-05, 5.166e-05, 3583.36005522], [1516758720000, 5.174e-05, 5.175e-05, 5.167e-05, 5.174e-05, 2433.42499034], [1516758780000, 5.167e-05, 5.174e-05, 5.167e-05, 5.174e-05, 4394.05986632], [1516758840000, 5.174e-05, 5.174e-05, 5.167e-05, 5.167e-05, 2244.7046607], [1516758900000, 5.167e-05, 5.167e-05, 5.166e-05, 5.166e-05, 1364.6662899], [1516758960000, 5.167e-05, 5.167e-05, 5.166e-05, 5.166e-05, 4979.22365295], [1516759020000, 5.166e-05, 5.166e-05, 5.165e-05, 5.166e-05, 27527.03962489], [1516759080000, 5.165e-05, 5.174e-05, 5.165e-05, 5.173e-05, 7812.0817999], [1516759140000, 5.173e-05, 5.173e-05, 5.165e-05, 5.165e-05, 4460.7646871], [1516759200000, 5.16e-05, 5.16e-05, 5.16e-05, 5.16e-05, 357.70939494], [1516759260000, 5.16e-05, 5.16e-05, 5.16e-05, 5.16e-05, 1445.17433388], [1516759320000, 5.16e-05, 5.16e-05, 5.156e-05, 5.16e-05, 5667.29065508], [1516759380000, 5.157e-05, 5.16e-05, 5.155e-05, 5.155e-05, 25863.31799943], [1516759440000, 5.16e-05, 5.16e-05, 5.155e-05, 5.155e-05, 8736.91899107], [1516759500000, 5.16e-05, 5.16e-05, 5.155e-05, 5.16e-05, 3009.44967772], [1516759560000, 5.16e-05, 5.17e-05, 5.156e-05, 5.16e-05, 11137.70086214], [1516759620000, 5.16e-05, 5.17e-05, 5.159e-05, 5.17e-05, 15165.69485825], [1516759680000, 5.16e-05, 5.167e-05, 5.143e-05, 5.15e-05, 36393.06771288], [1516759740000, 5.159e-05, 5.16e-05, 5.155e-05, 5.16e-05, 12247.9767221], [1516759800000, 5.16e-05, 5.16e-05, 5.155e-05, 5.158e-05, 9484.48786256], [1516759860000, 5.158e-05, 5.171e-05, 5.158e-05, 5.16e-05, 6348.04311445], [1516759920000, 5.16e-05, 5.17e-05, 5.155e-05, 5.17e-05, 6267.56218092], [1516759980000, 5.17e-05, 5.17e-05, 5.17e-05, 5.17e-05, 578.09832643], [1516760040000, 5.17e-05, 5.175e-05, 5.16e-05, 5.16e-05, 203447.4489035], [1516760100000, 5.175e-05, 5.176e-05, 5.16e-05, 5.165e-05, 22585.09121069], [1516760160000, 5.165e-05, 5.165e-05, 5.16e-05, 5.161e-05, 2159.56269175], [1516760220000, 5.162e-05, 5.165e-05, 5.156e-05, 5.16e-05, 57210.04569777], [1516760280000, 5.164e-05, 5.165e-05, 5.156e-05, 5.164e-05, 7670.3659061], [1516760340000, 5.161e-05, 5.164e-05, 5.161e-05, 5.164e-05, 1462.12261672], [1516760400000, 5.164e-05, 5.165e-05, 5.161e-05, 5.164e-05, 673.9076896], [1516760460000, 5.164e-05, 5.164e-05, 5.164e-05, 5.164e-05, 2417.08850088], [1516760520000, 5.164e-05, 5.165e-05, 5.164e-05, 5.164e-05, 2305.43872098], [1516760580000, 5.164e-05, 5.165e-05, 5.164e-05, 5.165e-05, 9462.59291892], [1516760640000, 5.164e-05, 5.165e-05, 5.164e-05, 5.165e-05, 7992.54399741], [1516760700000, 5.165e-05, 5.165e-05, 5.164e-05, 5.164e-05, 5775.6283945], [1516760760000, 5.164e-05, 5.176e-05, 5.164e-05, 5.176e-05, 202.32537303], [1516760820000, 5.165e-05, 5.165e-05, 5.165e-05, 5.165e-05, 263.79417541], [1516760880000, 5.165e-05, 5.176e-05, 5.165e-05, 5.165e-05, 2519.11192416], [1516760940000, 5.176e-05, 5.176e-05, 5.165e-05, 5.165e-05, 4729.3224518], [1516761000000, 5.176e-05, 5.176e-05, 5.176e-05, 5.176e-05, 295.88496831], [1516761060000, 5.176e-05, 5.176e-05, 5.165e-05, 5.165e-05, 2325.18240719], [1516761120000, 5.165e-05, 5.166e-05, 5.165e-05, 5.166e-05, 1587.56959357], [1516761180000, 5.176e-05, 5.18e-05, 5.176e-05, 5.179e-05, 2212.7233779], [1516761240000, 5.179e-05, 5.18e-05, 5.179e-05, 5.179e-05, 22522.85510299], [1516761300000, 5.179e-05, 5.18e-05, 5.179e-05, 5.18e-05, 5165.72375897], [1516761360000, 5.179e-05, 5.18e-05, 5.165e-05, 5.165e-05, 23506.78935572], [1516761420000, 5.165e-05, 5.182e-05, 5.156e-05, 5.156e-05, 46882.26741616], [1516761480000, 5.156e-05, 5.182e-05, 5.156e-05, 5.157e-05, 1576.90986222], [1516761540000, 5.182e-05, 5.182e-05, 5.182e-05, 5.182e-05, 2159.08468785], [1516761600000, 5.182e-05, 5.182e-05, 5.18e-05, 5.182e-05, 12158.17601368], [1516761660000, 5.182e-05, 5.182e-05, 5.182e-05, 5.182e-05, 5237.06230371], [1516761720000, 5.181e-05, 5.181e-05, 5.16e-05, 5.16e-05, 12023.78462786], [1516761780000, 5.161e-05, 5.18e-05, 5.16e-05, 5.168e-05, 26304.86769172], [1516761840000, 5.168e-05, 5.18e-05, 5.156e-05, 5.156e-05, 25371.13656626], [1516761900000, 5.163e-05, 5.163e-05, 5.163e-05, 5.163e-05, 1453.38413271], [1516761960000, 5.163e-05, 5.163e-05, 5.163e-05, 5.163e-05, 3152.27333314], [1516762020000, 5.163e-05, 5.18e-05, 5.162e-05, 5.18e-05, 13815.9115941], [1516762080000, 5.18e-05, 5.18e-05, 5.163e-05, 5.163e-05, 1399.29939953], [1516762140000, 5.18e-05, 5.18e-05, 5.162e-05, 5.163e-05, 24674.85827124], [1516762200000, 5.163e-05, 5.163e-05, 5.162e-05, 5.162e-05, 4860.67775905], [1516762260000, 5.162e-05, 5.163e-05, 5.162e-05, 5.162e-05, 16652.48066652], [1516762320000, 5.16e-05, 5.162e-05, 5.16e-05, 5.162e-05, 4819.90906643], [1516762380000, 5.162e-05, 5.162e-05, 5.161e-05, 5.161e-05, 18963.61523854], [1516762440000, 5.16e-05, 5.161e-05, 5.16e-05, 5.161e-05, 18789.56239725], [1516762500000, 5.161e-05, 5.162e-05, 5.16e-05, 5.161e-05, 7978.73270615], [1516762560000, 5.161e-05, 5.161e-05, 5.157e-05, 5.16e-05, 9736.50381116], [1516762620000, 5.16e-05, 5.16e-05, 5.157e-05, 5.16e-05, 87641.13788517], [1516762680000, 5.16e-05, 5.162e-05, 5.16e-05, 5.162e-05, 8576.47785923], [1516762740000, 5.163e-05, 5.163e-05, 5.162e-05, 5.163e-05, 29745.46043757], [1516762800000, 5.162e-05, 5.163e-05, 5.162e-05, 5.163e-05, 22370.00916536], [1516762860000, 5.163e-05, 5.163e-05, 5.157e-05, 5.162e-05, 96265.63019971], [1516762920000, 5.162e-05, 5.162e-05, 5.161e-05, 5.161e-05, 3818.2650326], [1516762980000, 5.157e-05, 5.161e-05, 5.157e-05, 5.161e-05, 4630.52852425], [1516763040000, 5.158e-05, 5.18e-05, 5.158e-05, 5.18e-05, 13882.4320884], [1516763100000, 5.163e-05, 5.18e-05, 5.157e-05, 5.157e-05, 33929.15111075], [1516763160000, 5.163e-05, 5.165e-05, 5.152e-05, 5.165e-05, 25999.38926959], [1516763220000, 5.165e-05, 5.18e-05, 5.15e-05, 5.15e-05, 50900.34045984], [1516763280000, 5.165e-05, 5.169e-05, 5.16e-05, 5.161e-05, 1774.10468927], [1516763340000, 5.165e-05, 5.165e-05, 5.163e-05, 5.165e-05, 10351.97926672], [1516763400000, 5.18e-05, 5.18e-05, 5.165e-05, 5.165e-05, 31628.32212236], [1516763460000, 5.167e-05, 5.167e-05, 5.167e-05, 5.167e-05, 1365.73012503], [1516763520000, 5.167e-05, 5.167e-05, 5.167e-05, 5.167e-05, 9176.86379564], [1516763580000, 5.167e-05, 5.179e-05, 5.167e-05, 5.178e-05, 8181.93987849], [1516763640000, 5.178e-05, 5.179e-05, 5.178e-05, 5.179e-05, 7056.30234843], [1516763700000, 5.179e-05, 5.179e-05, 5.178e-05, 5.178e-05, 14546.78722545], [1516763760000, 5.179e-05, 5.18e-05, 5.179e-05, 5.179e-05, 7190.22420722], [1516763820000, 5.18e-05, 5.183e-05, 5.18e-05, 5.183e-05, 23097.49260104], [1516763880000, 5.183e-05, 5.183e-05, 5.182e-05, 5.183e-05, 9994.70261414], [1516763940000, 5.183e-05, 5.183e-05, 5.182e-05, 5.182e-05, 16113.84474821], [1516764000000, 5.181e-05, 5.183e-05, 5.181e-05, 5.183e-05, 4216.7329172], [1516764060000, 5.183e-05, 5.184e-05, 5.181e-05, 5.184e-05, 125123.73016174], [1516764120000, 5.18e-05, 5.184e-05, 5.179e-05, 5.184e-05, 11954.38738411], [1516764180000, 5.183e-05, 5.183e-05, 5.179e-05, 5.179e-05, 1033.65971371], [1516764240000, 5.179e-05, 5.184e-05, 5.179e-05, 5.183e-05, 26506.83696277], [1516764300000, 5.184e-05, 5.184e-05, 5.183e-05, 5.184e-05, 5904.03624107], [1516764360000, 5.184e-05, 5.184e-05, 5.183e-05, 5.183e-05, 4641.77379533], [1516764420000, 5.183e-05, 5.184e-05, 5.183e-05, 5.184e-05, 42988.44902536], [1516764480000, 5.184e-05, 5.184e-05, 5.183e-05, 5.183e-05, 15590.33833592], [1516764540000, 5.181e-05, 5.183e-05, 5.17e-05, 5.182e-05, 13468.59521613], [1516764600000, 5.184e-05, 5.184e-05, 5.184e-05, 5.184e-05, 153.23329962], [1516764660000, 5.184e-05, 5.184e-05, 5.181e-05, 5.181e-05, 5000.11911737], [1516764720000, 5.181e-05, 5.184e-05, 5.18e-05, 5.181e-05, 8352.3883284], [1516764780000, 5.181e-05, 5.182e-05, 5.181e-05, 5.182e-05, 8007.79639719], [1516764840000, 5.182e-05, 5.183e-05, 5.182e-05, 5.182e-05, 3816.89192669], [1516764900000, 5.182e-05, 5.183e-05, 5.182e-05, 5.183e-05, 4511.72623687], [1516764960000, 5.183e-05, 5.183e-05, 5.182e-05, 5.182e-05, 4040.58921337], [1516765020000, 5.182e-05, 5.182e-05, 5.18e-05, 5.182e-05, 3518.57820236], [1516765080000, 5.182e-05, 5.184e-05, 5.182e-05, 5.184e-05, 25428.82802999], [1516765140000, 5.184e-05, 5.191e-05, 5.18e-05, 5.191e-05, 38673.67840008], [1516765200000, 5.191e-05, 5.191e-05, 5.181e-05, 5.191e-05, 8776.50355006], [1516765260000, 5.191e-05, 5.191e-05, 5.19e-05, 5.19e-05, 247.33644206], [1516765320000, 5.19e-05, 5.19e-05, 5.172e-05, 5.175e-05, 19976.39517229], [1516765380000, 5.175e-05, 5.175e-05, 5.173e-05, 5.175e-05, 16314.73252512], [1516765440000, 5.175e-05, 5.175e-05, 5.173e-05, 5.175e-05, 7845.50502585], [1516765500000, 5.173e-05, 5.173e-05, 5.173e-05, 5.173e-05, 4460.19053882], [1516765560000, 5.173e-05, 5.173e-05, 5.172e-05, 5.173e-05, 3299.07398591], [1516765620000, 5.173e-05, 5.173e-05, 5.17e-05, 5.173e-05, 30413.33197104], [1516765680000, 5.173e-05, 5.173e-05, 5.17e-05, 5.173e-05, 8093.42859493], [1516765740000, 5.173e-05, 5.173e-05, 5.17e-05, 5.173e-05, 17424.24639151], [1516765800000, 5.172e-05, 5.173e-05, 5.17e-05, 5.173e-05, 105937.75377803], [1516765860000, 5.172e-05, 5.173e-05, 5.168e-05, 5.17e-05, 13904.22938089], [1516765920000, 5.168e-05, 5.17e-05, 5.167e-05, 5.167e-05, 23993.36571226], [1516765980000, 5.167e-05, 5.17e-05, 5.164e-05, 5.167e-05, 72981.71885522], [1516766040000, 5.167e-05, 5.17e-05, 5.167e-05, 5.169e-05, 13904.65423029], [1516766100000, 5.169e-05, 5.17e-05, 5.169e-05, 5.17e-05, 11474.41697252], [1516766160000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 26172.67626381], [1516766220000, 5.17e-05, 5.173e-05, 5.17e-05, 5.173e-05, 31911.67242369], [1516766280000, 5.173e-05, 5.173e-05, 5.167e-05, 5.173e-05, 37417.31158403], [1516766340000, 5.17e-05, 5.17e-05, 5.167e-05, 5.167e-05, 5747.26667758], [1516766400000, 5.168e-05, 5.168e-05, 5.167e-05, 5.167e-05, 3680.14768013], [1516766460000, 5.166e-05, 5.167e-05, 5.166e-05, 5.167e-05, 4715.27525888], [1516766520000, 5.167e-05, 5.167e-05, 5.164e-05, 5.166e-05, 19466.31621406], [1516766580000, 5.166e-05, 5.169e-05, 5.151e-05, 5.151e-05, 29774.04730134], [1516766640000, 5.156e-05, 5.166e-05, 5.15e-05, 5.151e-05, 148031.62489326], [1516766700000, 5.15e-05, 5.151e-05, 5.148e-05, 5.15e-05, 144502.97410067], [1516766760000, 5.151e-05, 5.151e-05, 5.15e-05, 5.151e-05, 34217.78345309], [1516766820000, 5.151e-05, 5.151e-05, 5.15e-05, 5.15e-05, 14027.03153048], [1516766880000, 5.15e-05, 5.151e-05, 5.149e-05, 5.151e-05, 13600.5756172], [1516766940000, 5.15e-05, 5.15e-05, 5.144e-05, 5.149e-05, 301932.88339193], [1516767000000, 5.151e-05, 5.151e-05, 5.149e-05, 5.151e-05, 8289.69117336], [1516767060000, 5.151e-05, 5.166e-05, 5.151e-05, 5.151e-05, 115139.78366608], [1516767120000, 5.166e-05, 5.166e-05, 5.145e-05, 5.145e-05, 26429.43845672], [1516767180000, 5.145e-05, 5.168e-05, 5.145e-05, 5.166e-05, 7324.02571615], [1516767240000, 5.166e-05, 5.166e-05, 5.147e-05, 5.147e-05, 16624.51469578], [1516767300000, 5.165e-05, 5.165e-05, 5.141e-05, 5.141e-05, 20116.21359223], [1516767360000, 5.141e-05, 5.166e-05, 5.141e-05, 5.141e-05, 30751.90047075], [1516767420000, 5.142e-05, 5.164e-05, 5.14e-05, 5.164e-05, 16833.2531286], [1516767480000, 5.151e-05, 5.164e-05, 5.151e-05, 5.164e-05, 7044.68391573], [1516767540000, 5.164e-05, 5.166e-05, 5.164e-05, 5.166e-05, 10203.45943289], [1516767600000, 5.166e-05, 5.166e-05, 5.164e-05, 5.165e-05, 22060.52591398], [1516767660000, 5.166e-05, 5.166e-05, 5.166e-05, 5.166e-05, 19765.29090533], [1516767720000, 5.166e-05, 5.166e-05, 5.165e-05, 5.166e-05, 32496.21599352], [1516767780000, 5.166e-05, 5.167e-05, 5.165e-05, 5.166e-05, 29169.36668436], [1516767840000, 5.166e-05, 5.166e-05, 5.165e-05, 5.165e-05, 33420.90006628], [1516767900000, 5.165e-05, 5.169e-05, 5.164e-05, 5.169e-05, 31020.63739173], [1516767960000, 5.17e-05, 5.17e-05, 5.164e-05, 5.164e-05, 7147.55085948], [1516768020000, 5.164e-05, 5.169e-05, 5.163e-05, 5.163e-05, 17597.30698473], [1516768080000, 5.164e-05, 5.169e-05, 5.163e-05, 5.165e-05, 2484.71365447], [1516768140000, 5.163e-05, 5.163e-05, 5.155e-05, 5.155e-05, 12211.47694308], [1516768200000, 5.155e-05, 5.155e-05, 5.153e-05, 5.155e-05, 35733.34710354], [1516768260000, 5.151e-05, 5.153e-05, 5.151e-05, 5.153e-05, 54186.40914447], [1516768320000, 5.153e-05, 5.153e-05, 5.152e-05, 5.153e-05, 60442.02258065], [1516768380000, 5.153e-05, 5.155e-05, 5.153e-05, 5.155e-05, 63491.09358232], [1516768440000, 5.153e-05, 5.155e-05, 5.151e-05, 5.151e-05, 36391.04814717], [1516768500000, 5.15e-05, 5.155e-05, 5.149e-05, 5.155e-05, 60770.83685283], [1516768560000, 5.155e-05, 5.155e-05, 5.143e-05, 5.153e-05, 36908.99264045], [1516768620000, 5.153e-05, 5.155e-05, 5.153e-05, 5.155e-05, 14434.58755499], [1516768680000, 5.155e-05, 5.155e-05, 5.15e-05, 5.15e-05, 14403.95312465], [1516768740000, 5.15e-05, 5.153e-05, 5.14e-05, 5.153e-05, 33511.00316684], [1516768800000, 5.153e-05, 5.153e-05, 5.146e-05, 5.146e-05, 22944.18554442], [1516768860000, 5.152e-05, 5.152e-05, 5.152e-05, 5.152e-05, 1905.88380716], [1516768920000, 5.152e-05, 5.153e-05, 5.152e-05, 5.153e-05, 13743.23347673], [1516768980000, 5.153e-05, 5.153e-05, 5.151e-05, 5.152e-05, 11907.62751883], [1516769040000, 5.152e-05, 5.153e-05, 5.151e-05, 5.153e-05, 216836.22184202], [1516769100000, 5.152e-05, 5.153e-05, 5.151e-05, 5.153e-05, 41502.7335584], [1516769160000, 5.153e-05, 5.153e-05, 5.153e-05, 5.153e-05, 108005.15706198], [1516769220000, 5.153e-05, 5.153e-05, 5.151e-05, 5.153e-05, 100794.73487954], [1516769280000, 5.151e-05, 5.153e-05, 5.151e-05, 5.151e-05, 10385.80388858], [1516769340000, 5.151e-05, 5.151e-05, 5.151e-05, 5.151e-05, 4862.09312533], [1516769400000, 5.151e-05, 5.151e-05, 5.15e-05, 5.151e-05, 3123.9089225], [1516769460000, 5.15e-05, 5.153e-05, 5.1e-05, 5.152e-05, 715288.48399407], [1516769520000, 5.153e-05, 5.153e-05, 5.128e-05, 5.151e-05, 113067.95049712], [1516769580000, 5.151e-05, 5.151e-05, 5.15e-05, 5.15e-05, 33806.06835137], [1516769640000, 5.15e-05, 5.153e-05, 5.15e-05, 5.152e-05, 167680.19251777], [1516769700000, 5.151e-05, 5.154e-05, 5.151e-05, 5.154e-05, 122705.62673522], [1516769760000, 5.154e-05, 5.154e-05, 5.135e-05, 5.135e-05, 72689.67308839], [1516769820000, 5.151e-05, 5.155e-05, 5.151e-05, 5.151e-05, 108126.46990084], [1516769880000, 5.151e-05, 5.151e-05, 5.137e-05, 5.137e-05, 5500.85681217], [1516769940000, 5.154e-05, 5.155e-05, 5.145e-05, 5.155e-05, 29339.3400895], [1516770000000, 5.155e-05, 5.155e-05, 5.155e-05, 5.155e-05, 67762.3750107], [1516770060000, 5.146e-05, 5.155e-05, 5.146e-05, 5.155e-05, 2137.98639309], [1516770120000, 5.155e-05, 5.156e-05, 5.146e-05, 5.156e-05, 80353.54492818], [1516770180000, 5.156e-05, 5.156e-05, 5.146e-05, 5.156e-05, 1063.20448154], [1516770240000, 5.155e-05, 5.156e-05, 5.147e-05, 5.155e-05, 80088.24986859], [1516770300000, 5.155e-05, 5.156e-05, 5.148e-05, 5.148e-05, 122909.61941478], [1516770360000, 5.15e-05, 5.155e-05, 5.15e-05, 5.155e-05, 31230.24718583], [1516770420000, 5.155e-05, 5.155e-05, 5.148e-05, 5.148e-05, 8473.76259053], [1516770480000, 5.15e-05, 5.155e-05, 5.148e-05, 5.155e-05, 68504.10251885], [1516770540000, 5.15e-05, 5.155e-05, 5.15e-05, 5.155e-05, 18137.10740818], [1516770600000, 5.151e-05, 5.155e-05, 5.151e-05, 5.155e-05, 51524.07154973], [1516770660000, 5.155e-05, 5.155e-05, 5.149e-05, 5.155e-05, 80509.47454588], [1516770720000, 5.155e-05, 5.155e-05, 5.154e-05, 5.155e-05, 24531.94641328], [1516770780000, 5.155e-05, 5.155e-05, 5.148e-05, 5.155e-05, 24858.36604385], [1516770840000, 5.153e-05, 5.155e-05, 5.148e-05, 5.153e-05, 19874.8438215], [1516770900000, 5.153e-05, 5.153e-05, 5.149e-05, 5.149e-05, 5848.48390979], [1516770960000, 5.15e-05, 5.153e-05, 5.15e-05, 5.153e-05, 1779.85770175], [1516771020000, 5.155e-05, 5.155e-05, 5.153e-05, 5.153e-05, 5407.61108418], [1516771080000, 5.155e-05, 5.155e-05, 5.15e-05, 5.155e-05, 7904.52064575], [1516771140000, 5.155e-05, 5.155e-05, 5.15e-05, 5.155e-05, 14358.09583981], [1516771200000, 5.155e-05, 5.155e-05, 5.149e-05, 5.155e-05, 5926.97118173], [1516771260000, 5.155e-05, 5.155e-05, 5.149e-05, 5.149e-05, 2050.63438584], [1516771320000, 5.155e-05, 5.155e-05, 5.151e-05, 5.151e-05, 33785.90766196], [1516771380000, 5.15e-05, 5.155e-05, 5.15e-05, 5.155e-05, 1487.26749872], [1516771440000, 5.155e-05, 5.155e-05, 5.154e-05, 5.155e-05, 60573.23747382], [1516771500000, 5.155e-05, 5.155e-05, 5.155e-05, 5.155e-05, 24782.28827178], [1516771560000, 5.155e-05, 5.155e-05, 5.155e-05, 5.155e-05, 1731.69265246], [1516771620000, 5.154e-05, 5.155e-05, 5.152e-05, 5.155e-05, 6333.31916504], [1516771680000, 5.155e-05, 5.155e-05, 5.155e-05, 5.155e-05, 4511.3927397], [1516771740000, 5.154e-05, 5.154e-05, 5.152e-05, 5.152e-05, 14911.43581441], [1516771800000, 5.153e-05, 5.155e-05, 5.152e-05, 5.152e-05, 1090.18768464], [1516771860000, 5.152e-05, 5.155e-05, 5.152e-05, 5.155e-05, 9074.6214208], [1516771920000, 5.155e-05, 5.155e-05, 5.155e-05, 5.155e-05, 6678.4923704], [1516771980000, 5.152e-05, 5.155e-05, 5.152e-05, 5.155e-05, 17617.41591314], [1516772040000, 5.155e-05, 5.155e-05, 5.153e-05, 5.153e-05, 6606.88066055], [1516772100000, 5.153e-05, 5.155e-05, 5.152e-05, 5.153e-05, 38708.74607452], [1516772160000, 5.153e-05, 5.153e-05, 5.152e-05, 5.152e-05, 27509.88032647], [1516772220000, 5.152e-05, 5.152e-05, 5.15e-05, 5.151e-05, 79207.56191426], [1516772280000, 5.151e-05, 5.151e-05, 5.15e-05, 5.151e-05, 16308.36762033], [1516772340000, 5.151e-05, 5.151e-05, 5.15e-05, 5.151e-05, 57225.38386869], [1516772400000, 5.151e-05, 5.151e-05, 5.15e-05, 5.151e-05, 154703.33496534], [1516772460000, 5.15e-05, 5.151e-05, 5.137e-05, 5.151e-05, 77459.2640543], [1516772520000, 5.151e-05, 5.151e-05, 5.151e-05, 5.151e-05, 9728.62845175], [1516772580000, 5.151e-05, 5.151e-05, 5.15e-05, 5.15e-05, 28698.42082902], [1516772640000, 5.151e-05, 5.151e-05, 5.15e-05, 5.15e-05, 1717.97320446], [1516772700000, 5.15e-05, 5.153e-05, 5.15e-05, 5.151e-05, 62953.9851198], [1516772760000, 5.15e-05, 5.153e-05, 5.15e-05, 5.153e-05, 47146.60163629], [1516772820000, 5.153e-05, 5.153e-05, 5.151e-05, 5.153e-05, 38235.91764284], [1516772880000, 5.152e-05, 5.158e-05, 5.152e-05, 5.158e-05, 166095.18208562], [1516772940000, 5.158e-05, 5.163e-05, 5.155e-05, 5.156e-05, 61796.22579128], [1516773000000, 5.156e-05, 5.163e-05, 5.156e-05, 5.157e-05, 5933.50670674], [1516773060000, 5.16e-05, 5.161e-05, 5.157e-05, 5.158e-05, 3847.25548155], [1516773120000, 5.158e-05, 5.16e-05, 5.158e-05, 5.16e-05, 795.50373687], [1516773180000, 5.158e-05, 5.161e-05, 5.158e-05, 5.161e-05, 12843.71188649], [1516773240000, 5.16e-05, 5.161e-05, 5.16e-05, 5.161e-05, 5193.83701635], [1516773300000, 5.16e-05, 5.161e-05, 5.158e-05, 5.16e-05, 4083.03323395], [1516773360000, 5.16e-05, 5.161e-05, 5.16e-05, 5.161e-05, 57178.27129351], [1516773420000, 5.161e-05, 5.161e-05, 5.16e-05, 5.16e-05, 11191.91979008], [1516773480000, 5.161e-05, 5.161e-05, 5.16e-05, 5.16e-05, 3871.39407], [1516773540000, 5.16e-05, 5.161e-05, 5.159e-05, 5.16e-05, 10337.86627213], [1516773600000, 5.161e-05, 5.161e-05, 5.16e-05, 5.161e-05, 10910.18395598], [1516773660000, 5.16e-05, 5.165e-05, 5.16e-05, 5.16e-05, 34436.56797946], [1516773720000, 5.16e-05, 5.161e-05, 5.159e-05, 5.161e-05, 9348.97530914], [1516773780000, 5.161e-05, 5.161e-05, 5.159e-05, 5.159e-05, 18342.03767085], [1516773840000, 5.159e-05, 5.161e-05, 5.159e-05, 5.16e-05, 7715.58998993], [1516773900000, 5.161e-05, 5.161e-05, 5.16e-05, 5.16e-05, 16149.48937904], [1516773960000, 5.161e-05, 5.162e-05, 5.16e-05, 5.16e-05, 33674.55887094], [1516774020000, 5.161e-05, 5.161e-05, 5.16e-05, 5.16e-05, 15603.58345593], [1516774080000, 5.16e-05, 5.161e-05, 5.16e-05, 5.16e-05, 24443.00118032], [1516774140000, 5.16e-05, 5.16e-05, 5.16e-05, 5.16e-05, 27153.50365361], [1516774200000, 5.16e-05, 5.161e-05, 5.16e-05, 5.16e-05, 16509.95690567], [1516774260000, 5.161e-05, 5.161e-05, 5.16e-05, 5.16e-05, 17150.8236665], [1516774320000, 5.16e-05, 5.161e-05, 5.16e-05, 5.161e-05, 5325.15839691], [1516774380000, 5.16e-05, 5.161e-05, 5.16e-05, 5.16e-05, 28565.96403287], [1516774440000, 5.16e-05, 5.16e-05, 5.156e-05, 5.156e-05, 67977.3811171], [1516774500000, 5.156e-05, 5.158e-05, 5.15e-05, 5.156e-05, 10586.9860362], [1516774560000, 5.15e-05, 5.155e-05, 5.15e-05, 5.15e-05, 30718.33637749], [1516774620000, 5.15e-05, 5.156e-05, 5.15e-05, 5.155e-05, 38498.70576187], [1516774680000, 5.151e-05, 5.154e-05, 5.148e-05, 5.148e-05, 10340.59344684], [1516774740000, 5.148e-05, 5.155e-05, 5.147e-05, 5.155e-05, 16145.49843632], [1516774800000, 5.148e-05, 5.155e-05, 5.148e-05, 5.149e-05, 33308.37353834], [1516774860000, 5.149e-05, 5.155e-05, 5.148e-05, 5.15e-05, 36310.76902008], [1516774920000, 5.15e-05, 5.155e-05, 5.15e-05, 5.153e-05, 18507.91901819], [1516774980000, 5.153e-05, 5.158e-05, 5.153e-05, 5.158e-05, 73431.97309976], [1516775040000, 5.158e-05, 5.161e-05, 5.154e-05, 5.155e-05, 20762.24354517], [1516775100000, 5.159e-05, 5.159e-05, 5.153e-05, 5.153e-05, 56510.81629682], [1516775160000, 5.153e-05, 5.161e-05, 5.153e-05, 5.158e-05, 70997.91153546], [1516775220000, 5.161e-05, 5.165e-05, 5.157e-05, 5.157e-05, 75284.18213156], [1516775280000, 5.158e-05, 5.17e-05, 5.153e-05, 5.157e-05, 17092.37940666], [1516775340000, 5.157e-05, 5.169e-05, 5.15e-05, 5.153e-05, 29433.24516108], [1516775400000, 5.154e-05, 5.154e-05, 5.15e-05, 5.154e-05, 92985.65752679], [1516775460000, 5.153e-05, 5.154e-05, 5.152e-05, 5.154e-05, 33194.17158173], [1516775520000, 5.153e-05, 5.154e-05, 5.151e-05, 5.151e-05, 37653.89856644], [1516775580000, 5.151e-05, 5.154e-05, 5.151e-05, 5.154e-05, 13850.29468671], [1516775640000, 5.151e-05, 5.154e-05, 5.151e-05, 5.152e-05, 32323.45959153], [1516775700000, 5.154e-05, 5.17e-05, 5.152e-05, 5.17e-05, 191877.18313498], [1516775760000, 5.152e-05, 5.158e-05, 5.152e-05, 5.153e-05, 2510.55254579], [1516775820000, 5.153e-05, 5.168e-05, 5.152e-05, 5.168e-05, 11267.43202884], [1516775880000, 5.168e-05, 5.168e-05, 5.151e-05, 5.151e-05, 70041.19950765], [1516775940000, 5.151e-05, 5.151e-05, 5.15e-05, 5.15e-05, 32161.05547288], [1516776000000, 5.15e-05, 5.15e-05, 5.14e-05, 5.14e-05, 27123.01359528], [1516776060000, 5.14e-05, 5.149e-05, 5.14e-05, 5.14e-05, 21836.76966888], [1516776120000, 5.14e-05, 5.149e-05, 5.14e-05, 5.14e-05, 2227.80478893], [1516776180000, 5.14e-05, 5.149e-05, 5.14e-05, 5.14e-05, 11729.85190842], [1516776240000, 5.14e-05, 5.146e-05, 5.133e-05, 5.134e-05, 34596.51460406], [1516776300000, 5.132e-05, 5.137e-05, 5.131e-05, 5.137e-05, 58823.19019778], [1516776360000, 5.13e-05, 5.14e-05, 5.13e-05, 5.14e-05, 46370.68831769], [1516776420000, 5.14e-05, 5.165e-05, 5.134e-05, 5.134e-05, 17237.46752351], [1516776480000, 5.14e-05, 5.161e-05, 5.134e-05, 5.135e-05, 5518.59552581], [1516776540000, 5.135e-05, 5.142e-05, 5.135e-05, 5.14e-05, 1031.66572039], [1516776600000, 5.14e-05, 5.153e-05, 5.138e-05, 5.141e-05, 14325.50691982], [1516776660000, 5.141e-05, 5.142e-05, 5.138e-05, 5.138e-05, 3357.61969197], [1516776720000, 5.14e-05, 5.141e-05, 5.14e-05, 5.14e-05, 3916.45939829], [1516776780000, 5.139e-05, 5.157e-05, 5.139e-05, 5.141e-05, 1060.21215474], [1516776840000, 5.141e-05, 5.141e-05, 5.14e-05, 5.141e-05, 1621.77408683], [1516776900000, 5.141e-05, 5.156e-05, 5.14e-05, 5.14e-05, 7286.96624011], [1516776960000, 5.141e-05, 5.154e-05, 5.14e-05, 5.14e-05, 20411.92334201], [1516777020000, 5.14e-05, 5.14e-05, 5.136e-05, 5.136e-05, 60031.6168063], [1516777080000, 5.136e-05, 5.139e-05, 5.135e-05, 5.135e-05, 9416.92762908], [1516777140000, 5.135e-05, 5.139e-05, 5.135e-05, 5.136e-05, 4229.66669324], [1516777200000, 5.136e-05, 5.139e-05, 5.136e-05, 5.139e-05, 6484.97052255], [1516777260000, 5.14e-05, 5.14e-05, 5.139e-05, 5.14e-05, 11548.35147211], [1516777320000, 5.139e-05, 5.139e-05, 5.139e-05, 5.139e-05, 2910.80205799], [1516777380000, 5.139e-05, 5.139e-05, 5.137e-05, 5.139e-05, 11303.35930268], [1516777440000, 5.14e-05, 5.14e-05, 5.137e-05, 5.137e-05, 9094.3497771], [1516777500000, 5.14e-05, 5.14e-05, 5.138e-05, 5.138e-05, 16759.23135569], [1516777560000, 5.14e-05, 5.14e-05, 5.138e-05, 5.138e-05, 2205.79845931], [1516777620000, 5.14e-05, 5.14e-05, 5.138e-05, 5.138e-05, 25064.92247028], [1516777680000, 5.14e-05, 5.163e-05, 5.138e-05, 5.14e-05, 6375.87049262], [1516777740000, 5.15e-05, 5.163e-05, 5.138e-05, 5.138e-05, 3086.63257674], [1516777800000, 5.138e-05, 5.156e-05, 5.138e-05, 5.138e-05, 13217.54477228], [1516777860000, 5.139e-05, 5.139e-05, 5.138e-05, 5.139e-05, 12215.20763696], [1516777920000, 5.144e-05, 5.146e-05, 5.139e-05, 5.144e-05, 23009.59641048], [1516777980000, 5.144e-05, 5.16e-05, 5.14e-05, 5.14e-05, 38334.13302863], [1516778040000, 5.158e-05, 5.159e-05, 5.14e-05, 5.14e-05, 25441.15774017], [1516778100000, 5.14e-05, 5.16e-05, 5.14e-05, 5.16e-05, 25123.00951816], [1516778160000, 5.141e-05, 5.15e-05, 5.141e-05, 5.15e-05, 1086.4748419], [1516778220000, 5.15e-05, 5.159e-05, 5.142e-05, 5.148e-05, 2568.14065454], [1516778280000, 5.142e-05, 5.158e-05, 5.142e-05, 5.15e-05, 12146.74527439], [1516778340000, 5.142e-05, 5.15e-05, 5.142e-05, 5.142e-05, 3789.34556011], [1516778400000, 5.142e-05, 5.158e-05, 5.142e-05, 5.158e-05, 4161.30958815], [1516778460000, 5.143e-05, 5.143e-05, 5.139e-05, 5.139e-05, 22733.33054884], [1516778520000, 5.139e-05, 5.157e-05, 5.139e-05, 5.141e-05, 17430.36763626], [1516778580000, 5.141e-05, 5.142e-05, 5.141e-05, 5.142e-05, 64.33573397], [1516778640000, 5.142e-05, 5.142e-05, 5.142e-05, 5.142e-05, 1471.44107351], [1516778700000, 5.144e-05, 5.157e-05, 5.144e-05, 5.146e-05, 20328.03828258], [1516778760000, 5.146e-05, 5.157e-05, 5.143e-05, 5.144e-05, 11704.9585374], [1516778820000, 5.143e-05, 5.162e-05, 5.141e-05, 5.157e-05, 11166.85265706], [1516778880000, 5.143e-05, 5.157e-05, 5.143e-05, 5.143e-05, 1333.39923617], [1516778940000, 5.143e-05, 5.157e-05, 5.136e-05, 5.155e-05, 26098.73943919], [1516779000000, 5.136e-05, 5.154e-05, 5.136e-05, 5.154e-05, 2777.80112659], [1516779060000, 5.136e-05, 5.137e-05, 5.136e-05, 5.136e-05, 3234.0], [1516779120000, 5.138e-05, 5.154e-05, 5.136e-05, 5.153e-05, 8087.99861436], [1516779180000, 5.153e-05, 5.153e-05, 5.136e-05, 5.137e-05, 3456.19020398], [1516779240000, 5.137e-05, 5.152e-05, 5.137e-05, 5.141e-05, 7134.48308709], [1516779300000, 5.141e-05, 5.141e-05, 5.137e-05, 5.137e-05, 14258.90820398], [1516779360000, 5.137e-05, 5.151e-05, 5.137e-05, 5.14e-05, 5941.74505101], [1516779420000, 5.14e-05, 5.151e-05, 5.14e-05, 5.151e-05, 61289.44469075], [1516779480000, 5.14e-05, 5.151e-05, 5.137e-05, 5.141e-05, 20281.31640345], [1516779540000, 5.137e-05, 5.14e-05, 5.137e-05, 5.138e-05, 4190.9735237], [1516779600000, 5.138e-05, 5.141e-05, 5.138e-05, 5.141e-05, 1432.1398179], [1516779660000, 5.138e-05, 5.138e-05, 5.137e-05, 5.138e-05, 7559.06716085], [1516779720000, 5.138e-05, 5.141e-05, 5.137e-05, 5.137e-05, 7577.35906247], [1516779780000, 5.141e-05, 5.141e-05, 5.141e-05, 5.141e-05, 2625.141585], [1516779840000, 5.141e-05, 5.141e-05, 5.138e-05, 5.141e-05, 8103.80046576], [1516779900000, 5.141e-05, 5.141e-05, 5.14e-05, 5.141e-05, 3451.56746396], [1516779960000, 5.14e-05, 5.141e-05, 5.138e-05, 5.14e-05, 6939.43504591], [1516780020000, 5.14e-05, 5.15e-05, 5.14e-05, 5.15e-05, 7204.41961908], [1516780080000, 5.14e-05, 5.15e-05, 5.14e-05, 5.15e-05, 3986.77866979], [1516780140000, 5.15e-05, 5.156e-05, 5.15e-05, 5.152e-05, 3263.32393818], [1516780200000, 5.15e-05, 5.152e-05, 5.143e-05, 5.152e-05, 446.40846675], [1516780260000, 5.152e-05, 5.156e-05, 5.152e-05, 5.156e-05, 1948.31248665], [1516780320000, 5.153e-05, 5.158e-05, 5.153e-05, 5.158e-05, 5220.73489792], [1516780380000, 5.157e-05, 5.162e-05, 5.157e-05, 5.162e-05, 4136.18068543], [1516780440000, 5.162e-05, 5.162e-05, 5.161e-05, 5.161e-05, 7582.00006546], [1516780500000, 5.16e-05, 5.161e-05, 5.16e-05, 5.161e-05, 35988.45724077], [1516780560000, 5.161e-05, 5.161e-05, 5.16e-05, 5.161e-05, 3264.33008738], [1516780620000, 5.161e-05, 5.161e-05, 5.16e-05, 5.16e-05, 2316.10314005], [1516780680000, 5.161e-05, 5.161e-05, 5.156e-05, 5.16e-05, 3606.89696239], [1516780740000, 5.157e-05, 5.16e-05, 5.156e-05, 5.157e-05, 2771.97176602], [1516780800000, 5.159e-05, 5.159e-05, 5.157e-05, 5.157e-05, 5156.09918617], [1516780860000, 5.159e-05, 5.161e-05, 5.157e-05, 5.161e-05, 26904.88439088], [1516780920000, 5.161e-05, 5.163e-05, 5.161e-05, 5.163e-05, 25383.01286227], [1516780980000, 5.163e-05, 5.163e-05, 5.163e-05, 5.163e-05, 5683.56548149], [1516781040000, 5.163e-05, 5.163e-05, 5.162e-05, 5.163e-05, 7883.01998223], [1516781100000, 5.163e-05, 5.163e-05, 5.162e-05, 5.163e-05, 7817.1712932], [1516781160000, 5.162e-05, 5.162e-05, 5.161e-05, 5.161e-05, 29657.01614719], [1516781220000, 5.161e-05, 5.162e-05, 5.161e-05, 5.161e-05, 3618.51032531], [1516781280000, 5.162e-05, 5.162e-05, 5.161e-05, 5.162e-05, 1133.31951851], [1516781340000, 5.162e-05, 5.162e-05, 5.162e-05, 5.162e-05, 13179.12921475], [1516781400000, 5.161e-05, 5.162e-05, 5.161e-05, 5.162e-05, 26230.507059], [1516781460000, 5.161e-05, 5.162e-05, 5.161e-05, 5.162e-05, 5041.97751342], [1516781520000, 5.162e-05, 5.162e-05, 5.16e-05, 5.162e-05, 12001.61781984], [1516781580000, 5.162e-05, 5.162e-05, 5.16e-05, 5.161e-05, 8336.8878408], [1516781640000, 5.16e-05, 5.161e-05, 5.16e-05, 5.16e-05, 952.79894784], [1516781700000, 5.16e-05, 5.16e-05, 5.16e-05, 5.16e-05, 10092.12736749], [1516781760000, 5.159e-05, 5.16e-05, 5.157e-05, 5.159e-05, 5412.15158127], [1516781820000, 5.159e-05, 5.159e-05, 5.149e-05, 5.155e-05, 31261.32076486], [1516781880000, 5.153e-05, 5.153e-05, 5.143e-05, 5.153e-05, 1023.80325885], [1516781940000, 5.143e-05, 5.153e-05, 5.14e-05, 5.14e-05, 10195.90908378], [1516782000000, 5.14e-05, 5.14e-05, 5.138e-05, 5.138e-05, 14789.27997229], [1516782060000, 5.138e-05, 5.14e-05, 5.138e-05, 5.14e-05, 23168.54779753], [1516782120000, 5.139e-05, 5.14e-05, 5.139e-05, 5.14e-05, 14903.13328988], [1516782180000, 5.139e-05, 5.152e-05, 5.139e-05, 5.152e-05, 11147.0029294], [1516782240000, 5.152e-05, 5.152e-05, 5.152e-05, 5.152e-05, 6601.1951462], [1516782300000, 5.152e-05, 5.152e-05, 5.141e-05, 5.141e-05, 1925.47109035], [1516782360000, 5.145e-05, 5.145e-05, 5.14e-05, 5.142e-05, 1685.81648133], [1516782420000, 5.152e-05, 5.152e-05, 5.14e-05, 5.143e-05, 24748.72854599], [1516782480000, 5.143e-05, 5.143e-05, 5.136e-05, 5.143e-05, 89017.01469221], [1516782540000, 5.143e-05, 5.143e-05, 5.136e-05, 5.143e-05, 22722.94929372], [1516782600000, 5.143e-05, 5.143e-05, 5.136e-05, 5.138e-05, 1806.70889997], [1516782660000, 5.138e-05, 5.143e-05, 5.137e-05, 5.142e-05, 3897.90420978], [1516782720000, 5.142e-05, 5.152e-05, 5.142e-05, 5.152e-05, 55377.09869483], [1516782780000, 5.152e-05, 5.153e-05, 5.151e-05, 5.152e-05, 104783.02774103], [1516782840000, 5.152e-05, 5.157e-05, 5.152e-05, 5.156e-05, 5179.50915076], [1516782900000, 5.154e-05, 5.157e-05, 5.154e-05, 5.157e-05, 8206.02678487], [1516782960000, 5.158e-05, 5.159e-05, 5.157e-05, 5.157e-05, 13798.19457344], [1516783020000, 5.158e-05, 5.158e-05, 5.157e-05, 5.157e-05, 4008.05460168], [1516783080000, 5.158e-05, 5.158e-05, 5.157e-05, 5.158e-05, 2006.07290664], [1516783140000, 5.158e-05, 5.159e-05, 5.157e-05, 5.159e-05, 23603.16971933], [1516783200000, 5.159e-05, 5.159e-05, 5.157e-05, 5.158e-05, 14513.68400259], [1516783260000, 5.158e-05, 5.159e-05, 5.157e-05, 5.159e-05, 10611.70120223], [1516783320000, 5.159e-05, 5.159e-05, 5.158e-05, 5.159e-05, 18855.04185812], [1516783380000, 5.158e-05, 5.164e-05, 5.157e-05, 5.164e-05, 39314.30044714], [1516783440000, 5.164e-05, 5.17e-05, 5.16e-05, 5.164e-05, 106975.22282839], [1516783500000, 5.165e-05, 5.165e-05, 5.164e-05, 5.164e-05, 3774.69609539], [1516783560000, 5.164e-05, 5.169e-05, 5.164e-05, 5.169e-05, 2978.51673328], [1516783620000, 5.166e-05, 5.168e-05, 5.166e-05, 5.168e-05, 626.03241052], [1516783680000, 5.168e-05, 5.168e-05, 5.167e-05, 5.168e-05, 5873.00013599], [1516783740000, 5.168e-05, 5.168e-05, 5.167e-05, 5.168e-05, 10056.30654256], [1516783800000, 5.167e-05, 5.17e-05, 5.167e-05, 5.17e-05, 45874.91980182], [1516783860000, 5.17e-05, 5.17e-05, 5.166e-05, 5.17e-05, 18808.35247029], [1516783920000, 5.17e-05, 5.17e-05, 5.12e-05, 5.12e-05, 710347.24380385], [1516783980000, 5.12e-05, 5.12e-05, 5.117e-05, 5.12e-05, 270556.94020064], [1516784040000, 5.12e-05, 5.12e-05, 5.117e-05, 5.12e-05, 322267.69169632], [1516784100000, 5.12e-05, 5.167e-05, 5.12e-05, 5.166e-05, 33692.90408136], [1516784160000, 5.165e-05, 5.17e-05, 5.165e-05, 5.17e-05, 233949.04499721], [1516784220000, 5.169e-05, 5.17e-05, 5.166e-05, 5.17e-05, 15680.87138093], [1516784280000, 5.169e-05, 5.169e-05, 5.166e-05, 5.167e-05, 7462.23993534], [1516784340000, 5.167e-05, 5.167e-05, 5.166e-05, 5.167e-05, 3843.31589553], [1516784400000, 5.17e-05, 5.17e-05, 5.166e-05, 5.17e-05, 59839.72012091], [1516784460000, 5.17e-05, 5.17e-05, 5.167e-05, 5.167e-05, 26136.29555777], [1516784520000, 5.167e-05, 5.17e-05, 5.167e-05, 5.17e-05, 2393.00592378], [1516784580000, 5.17e-05, 5.17e-05, 5.167e-05, 5.17e-05, 6293.45831948], [1516784640000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 1281.11859155], [1516784700000, 5.17e-05, 5.17e-05, 5.168e-05, 5.168e-05, 7280.77942623], [1516784760000, 5.168e-05, 5.168e-05, 5.167e-05, 5.168e-05, 9084.39919767], [1516784820000, 5.167e-05, 5.167e-05, 5.166e-05, 5.167e-05, 2137.97395218], [1516784880000, 5.167e-05, 5.167e-05, 5.162e-05, 5.162e-05, 18253.14914546], [1516784940000, 5.162e-05, 5.167e-05, 5.162e-05, 5.162e-05, 4871.29502146], [1516785000000, 5.162e-05, 5.166e-05, 5.162e-05, 5.162e-05, 11204.37293447], [1516785060000, 5.161e-05, 5.166e-05, 5.16e-05, 5.165e-05, 22219.10203925], [1516785120000, 5.166e-05, 5.166e-05, 5.165e-05, 5.166e-05, 9696.6384805], [1516785180000, 5.166e-05, 5.166e-05, 5.165e-05, 5.166e-05, 6018.87595179], [1516785240000, 5.16e-05, 5.16e-05, 5.15e-05, 5.15e-05, 10505.38039242], [1516785300000, 5.15e-05, 5.16e-05, 5.15e-05, 5.151e-05, 1682.59872737], [1516785360000, 5.151e-05, 5.16e-05, 5.151e-05, 5.16e-05, 22331.82618257], [1516785420000, 5.16e-05, 5.16e-05, 5.151e-05, 5.16e-05, 9265.61451572], [1516785480000, 5.16e-05, 5.16e-05, 5.156e-05, 5.16e-05, 9618.01892483], [1516785540000, 5.156e-05, 5.166e-05, 5.155e-05, 5.166e-05, 17789.37519117], [1516785600000, 5.165e-05, 5.167e-05, 5.16e-05, 5.167e-05, 11431.72378268], [1516785660000, 5.167e-05, 5.167e-05, 5.165e-05, 5.167e-05, 11910.72203208], [1516785720000, 5.165e-05, 5.167e-05, 5.163e-05, 5.167e-05, 10553.39322091], [1516785780000, 5.167e-05, 5.167e-05, 5.165e-05, 5.165e-05, 3064.67182202], [1516785840000, 5.167e-05, 5.167e-05, 5.166e-05, 5.167e-05, 4256.27812867], [1516785900000, 5.167e-05, 5.167e-05, 5.167e-05, 5.167e-05, 175105.77141493], [1516785960000, 5.167e-05, 5.167e-05, 5.166e-05, 5.167e-05, 9791.1108189], [1516786020000, 5.166e-05, 5.167e-05, 5.165e-05, 5.166e-05, 11677.36106172], [1516786080000, 5.166e-05, 5.167e-05, 5.165e-05, 5.167e-05, 1537.21658911], [1516786140000, 5.166e-05, 5.167e-05, 5.165e-05, 5.167e-05, 37709.33726454], [1516786200000, 5.166e-05, 5.17e-05, 5.166e-05, 5.17e-05, 85557.54758756], [1516786260000, 5.17e-05, 5.17e-05, 5.167e-05, 5.167e-05, 10576.80313457], [1516786320000, 5.167e-05, 5.17e-05, 5.167e-05, 5.17e-05, 3393.27365483], [1516786380000, 5.168e-05, 5.17e-05, 5.167e-05, 5.17e-05, 22901.49264368], [1516786440000, 5.171e-05, 5.175e-05, 5.17e-05, 5.175e-05, 1875.271003], [1516786500000, 5.169e-05, 5.176e-05, 5.167e-05, 5.175e-05, 10165.07802518], [1516786560000, 5.175e-05, 5.18e-05, 5.175e-05, 5.18e-05, 5181.40953537], [1516786620000, 5.18e-05, 5.184e-05, 5.18e-05, 5.182e-05, 5266.02352454], [1516786680000, 5.182e-05, 5.185e-05, 5.182e-05, 5.184e-05, 5211.08316117], [1516786740000, 5.185e-05, 5.188e-05, 5.182e-05, 5.184e-05, 6417.984506], [1516786800000, 5.185e-05, 5.185e-05, 5.182e-05, 5.185e-05, 29602.22036629], [1516786860000, 5.184e-05, 5.185e-05, 5.184e-05, 5.184e-05, 3974.30359615], [1516786920000, 5.184e-05, 5.187e-05, 5.184e-05, 5.187e-05, 1899.7050994], [1516786980000, 5.188e-05, 5.189e-05, 5.187e-05, 5.189e-05, 4608.41119639], [1516787040000, 5.189e-05, 5.19e-05, 5.189e-05, 5.19e-05, 27028.07820442], [1516787100000, 5.19e-05, 5.19e-05, 5.189e-05, 5.189e-05, 18605.12945508], [1516787160000, 5.189e-05, 5.189e-05, 5.188e-05, 5.189e-05, 9029.90145555], [1516787220000, 5.189e-05, 5.189e-05, 5.188e-05, 5.189e-05, 528.95502989], [1516787280000, 5.188e-05, 5.189e-05, 5.188e-05, 5.188e-05, 8796.09707206], [1516787340000, 5.188e-05, 5.188e-05, 5.188e-05, 5.188e-05, 15096.01555355], [1516787400000, 5.188e-05, 5.189e-05, 5.188e-05, 5.188e-05, 9344.03441776], [1516787460000, 5.188e-05, 5.189e-05, 5.188e-05, 5.188e-05, 3166.18380573], [1516787520000, 5.188e-05, 5.189e-05, 5.188e-05, 5.189e-05, 31708.57283437], [1516787580000, 5.188e-05, 5.189e-05, 5.188e-05, 5.189e-05, 267.91329295], [1516787640000, 5.188e-05, 5.188e-05, 5.187e-05, 5.187e-05, 8001.10733704], [1516787700000, 5.187e-05, 5.188e-05, 5.187e-05, 5.187e-05, 4096.06098632], [1516787760000, 5.187e-05, 5.188e-05, 5.187e-05, 5.188e-05, 9440.30270066], [1516787820000, 5.188e-05, 5.188e-05, 5.187e-05, 5.187e-05, 28947.54323373], [1516787880000, 5.187e-05, 5.187e-05, 5.187e-05, 5.187e-05, 1022.67487927], [1516787940000, 5.187e-05, 5.188e-05, 5.187e-05, 5.188e-05, 10996.49421288], [1516788000000, 5.188e-05, 5.188e-05, 5.187e-05, 5.188e-05, 22789.48371695], [1516788060000, 5.187e-05, 5.188e-05, 5.186e-05, 5.186e-05, 6820.60317766], [1516788120000, 5.187e-05, 5.187e-05, 5.185e-05, 5.185e-05, 11453.95230172], [1516788180000, 5.185e-05, 5.185e-05, 5.169e-05, 5.17e-05, 21997.47677061], [1516788240000, 5.17e-05, 5.17e-05, 5.167e-05, 5.167e-05, 5142.60470716], [1516788300000, 5.167e-05, 5.17e-05, 5.167e-05, 5.17e-05, 23134.40610633], [1516788360000, 5.17e-05, 5.17e-05, 5.167e-05, 5.167e-05, 135120.61067057], [1516788420000, 5.167e-05, 5.17e-05, 5.167e-05, 5.17e-05, 20386.99100696], [1516788480000, 5.17e-05, 5.17e-05, 5.167e-05, 5.167e-05, 12573.61437041], [1516788540000, 5.167e-05, 5.17e-05, 5.167e-05, 5.167e-05, 43909.11462514], [1516788600000, 5.167e-05, 5.17e-05, 5.167e-05, 5.169e-05, 13241.17523674], [1516788660000, 5.169e-05, 5.17e-05, 5.163e-05, 5.163e-05, 14166.9712722], [1516788720000, 5.165e-05, 5.17e-05, 5.161e-05, 5.17e-05, 33965.66535422], [1516788780000, 5.165e-05, 5.17e-05, 5.165e-05, 5.17e-05, 1646.14159717], [1516788840000, 5.167e-05, 5.17e-05, 5.167e-05, 5.169e-05, 2054.36962299], [1516788900000, 5.169e-05, 5.169e-05, 5.155e-05, 5.168e-05, 16212.71662805], [1516788960000, 5.168e-05, 5.169e-05, 5.168e-05, 5.168e-05, 11467.71616617], [1516789020000, 5.169e-05, 5.169e-05, 5.168e-05, 5.168e-05, 11340.46976503], [1516789080000, 5.168e-05, 5.168e-05, 5.13e-05, 5.16e-05, 105066.7332621], [1516789140000, 5.168e-05, 5.168e-05, 5.16e-05, 5.16e-05, 661.2413075], [1516789200000, 5.16e-05, 5.168e-05, 5.16e-05, 5.16e-05, 13248.89759231], [1516789260000, 5.168e-05, 5.168e-05, 5.16e-05, 5.168e-05, 12860.28658147], [1516789320000, 5.161e-05, 5.168e-05, 5.16e-05, 5.16e-05, 7283.79801245], [1516789380000, 5.16e-05, 5.168e-05, 5.16e-05, 5.16e-05, 4514.85785045], [1516789440000, 5.16e-05, 5.168e-05, 5.16e-05, 5.165e-05, 11317.0890722], [1516789500000, 5.165e-05, 5.165e-05, 5.161e-05, 5.161e-05, 1363.75476231], [1516789560000, 5.165e-05, 5.168e-05, 5.161e-05, 5.168e-05, 9851.52206082], [1516789620000, 5.168e-05, 5.168e-05, 5.161e-05, 5.161e-05, 3087.13800281], [1516789680000, 5.161e-05, 5.161e-05, 5.16e-05, 5.16e-05, 7546.95178877], [1516789740000, 5.163e-05, 5.17e-05, 5.16e-05, 5.16e-05, 25323.7132655], [1516789800000, 5.16e-05, 5.17e-05, 5.155e-05, 5.17e-05, 2943.37177512], [1516789860000, 5.155e-05, 5.16e-05, 5.15e-05, 5.15e-05, 10480.27297971], [1516789920000, 5.155e-05, 5.155e-05, 5.149e-05, 5.15e-05, 12553.44101595], [1516789980000, 5.149e-05, 5.16e-05, 5.137e-05, 5.16e-05, 13807.31056929], [1516790040000, 5.16e-05, 5.17e-05, 5.139e-05, 5.16e-05, 8152.06885404], [1516790100000, 5.16e-05, 5.16e-05, 5.135e-05, 5.16e-05, 22155.58954555], [1516790160000, 5.16e-05, 5.16e-05, 5.13e-05, 5.16e-05, 11098.40289233], [1516790220000, 5.159e-05, 5.168e-05, 5.154e-05, 5.168e-05, 51578.60561834], [1516790280000, 5.165e-05, 5.169e-05, 5.161e-05, 5.161e-05, 9289.38854843], [1516790340000, 5.161e-05, 5.161e-05, 5.139e-05, 5.161e-05, 9809.33326666], [1516790400000, 5.161e-05, 5.161e-05, 5.139e-05, 5.161e-05, 5200.56810696], [1516790460000, 5.161e-05, 5.161e-05, 5.139e-05, 5.145e-05, 3517.67914619], [1516790520000, 5.145e-05, 5.161e-05, 5.14e-05, 5.161e-05, 3738.75304314], [1516790580000, 5.158e-05, 5.16e-05, 5.158e-05, 5.16e-05, 17227.25827057], [1516790640000, 5.16e-05, 5.161e-05, 5.155e-05, 5.155e-05, 10138.35129404], [1516790700000, 5.16e-05, 5.161e-05, 5.16e-05, 5.16e-05, 1860.29066076], [1516790760000, 5.16e-05, 5.161e-05, 5.16e-05, 5.16e-05, 14568.21349507], [1516790820000, 5.16e-05, 5.16e-05, 5.16e-05, 5.16e-05, 2869.92165766], [1516790880000, 5.16e-05, 5.16e-05, 5.159e-05, 5.16e-05, 10801.89506203], [1516790940000, 5.159e-05, 5.159e-05, 5.129e-05, 5.13e-05, 194370.86389201], [1516791000000, 5.13e-05, 5.13e-05, 5.127e-05, 5.127e-05, 22181.77158886], [1516791060000, 5.129e-05, 5.129e-05, 5.129e-05, 5.129e-05, 20425.04577863], [1516791120000, 5.129e-05, 5.13e-05, 5.128e-05, 5.13e-05, 19152.21830011], [1516791180000, 5.135e-05, 5.16e-05, 5.135e-05, 5.138e-05, 49974.6228348], [1516791240000, 5.159e-05, 5.17e-05, 5.158e-05, 5.159e-05, 60026.17880687], [1516791300000, 5.17e-05, 5.17e-05, 5.159e-05, 5.159e-05, 14812.18044937], [1516791360000, 5.159e-05, 5.17e-05, 5.159e-05, 5.16e-05, 2939.80602322], [1516791420000, 5.17e-05, 5.17e-05, 5.159e-05, 5.165e-05, 2925.97761272], [1516791480000, 5.165e-05, 5.166e-05, 5.159e-05, 5.159e-05, 9867.21929946], [1516791540000, 5.158e-05, 5.166e-05, 5.15e-05, 5.15e-05, 16668.8863019], [1516791600000, 5.15e-05, 5.15e-05, 5.139e-05, 5.139e-05, 15305.90493831], [1516791660000, 5.148e-05, 5.166e-05, 5.139e-05, 5.166e-05, 13594.46398766], [1516791720000, 5.15e-05, 5.166e-05, 5.147e-05, 5.165e-05, 23166.34769506], [1516791780000, 5.149e-05, 5.166e-05, 5.139e-05, 5.166e-05, 18690.18154203], [1516791840000, 5.15e-05, 5.165e-05, 5.138e-05, 5.161e-05, 4967.38920375], [1516791900000, 5.14e-05, 5.166e-05, 5.14e-05, 5.166e-05, 39595.00686852], [1516791960000, 5.166e-05, 5.167e-05, 5.166e-05, 5.167e-05, 54692.36332731], [1516792020000, 5.166e-05, 5.167e-05, 5.15e-05, 5.163e-05, 6052.43066972], [1516792080000, 5.163e-05, 5.163e-05, 5.163e-05, 5.163e-05, 20.0], [1516792140000, 5.161e-05, 5.17e-05, 5.151e-05, 5.17e-05, 73730.69765335], [1516792200000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 37792.93061498], [1516792260000, 5.168e-05, 5.17e-05, 5.167e-05, 5.17e-05, 91447.13727345], [1516792320000, 5.17e-05, 5.17e-05, 5.167e-05, 5.17e-05, 71156.7395192], [1516792380000, 5.17e-05, 5.17e-05, 5.169e-05, 5.17e-05, 32242.79681376], [1516792440000, 5.169e-05, 5.18e-05, 5.167e-05, 5.18e-05, 167782.47979021], [1516792500000, 5.17e-05, 5.18e-05, 5.17e-05, 5.18e-05, 48108.68829775], [1516792560000, 5.18e-05, 5.18e-05, 5.17e-05, 5.17e-05, 29131.47193705], [1516792620000, 5.179e-05, 5.179e-05, 5.167e-05, 5.175e-05, 12986.00372646], [1516792680000, 5.175e-05, 5.18e-05, 5.17e-05, 5.17e-05, 15969.71075325], [1516792740000, 5.18e-05, 5.18e-05, 5.17e-05, 5.18e-05, 31141.18271036], [1516792800000, 5.18e-05, 5.18e-05, 5.18e-05, 5.18e-05, 81612.1829417], [1516792860000, 5.18e-05, 5.18e-05, 5.17e-05, 5.17e-05, 2836.52468048], [1516792920000, 5.18e-05, 5.18e-05, 5.171e-05, 5.18e-05, 24683.76706836], [1516792980000, 5.171e-05, 5.185e-05, 5.171e-05, 5.185e-05, 294869.9652961], [1516793040000, 5.185e-05, 5.185e-05, 5.182e-05, 5.184e-05, 114681.97811287], [1516793100000, 5.184e-05, 5.184e-05, 5.18e-05, 5.184e-05, 39529.86628689], [1516793160000, 5.184e-05, 5.184e-05, 5.184e-05, 5.184e-05, 49140.92528816], [1516793220000, 5.184e-05, 5.185e-05, 5.173e-05, 5.185e-05, 32033.65830469], [1516793280000, 5.185e-05, 5.185e-05, 5.184e-05, 5.185e-05, 15349.09493441], [1516793340000, 5.184e-05, 5.185e-05, 5.184e-05, 5.185e-05, 269651.38686315], [1516793400000, 5.185e-05, 5.185e-05, 5.184e-05, 5.185e-05, 34082.79190174], [1516793460000, 5.185e-05, 5.185e-05, 5.179e-05, 5.179e-05, 67749.9068991], [1516793520000, 5.179e-05, 5.2e-05, 5.177e-05, 5.2e-05, 241381.17027652], [1516793580000, 5.199e-05, 5.2e-05, 5.199e-05, 5.2e-05, 64868.5306309], [1516793640000, 5.199e-05, 5.2e-05, 5.176e-05, 5.2e-05, 94319.12799421], [1516793700000, 5.195e-05, 5.2e-05, 5.174e-05, 5.194e-05, 60800.08143075], [1516793760000, 5.194e-05, 5.199e-05, 5.175e-05, 5.195e-05, 7265.0830733], [1516793820000, 5.195e-05, 5.2e-05, 5.194e-05, 5.2e-05, 18906.17889455], [1516793880000, 5.195e-05, 5.2e-05, 5.194e-05, 5.194e-05, 11057.89792755], [1516793940000, 5.195e-05, 5.2e-05, 5.194e-05, 5.2e-05, 204429.17067581], [1516794000000, 5.2e-05, 5.2e-05, 5.194e-05, 5.194e-05, 42397.85246506], [1516794060000, 5.2e-05, 5.201e-05, 5.194e-05, 5.196e-05, 125007.45088293], [1516794120000, 5.196e-05, 5.201e-05, 5.196e-05, 5.198e-05, 11274.72286408], [1516794180000, 5.201e-05, 5.207e-05, 5.198e-05, 5.2e-05, 14518.41867616], [1516794240000, 5.2e-05, 5.209e-05, 5.2e-05, 5.201e-05, 45718.37277822], [1516794300000, 5.207e-05, 5.209e-05, 5.2e-05, 5.207e-05, 11059.29426442], [1516794360000, 5.207e-05, 5.213e-05, 5.207e-05, 5.21e-05, 17627.74404044], [1516794420000, 5.213e-05, 5.214e-05, 5.21e-05, 5.21e-05, 12611.01322854], [1516794480000, 5.213e-05, 5.213e-05, 5.2e-05, 5.2e-05, 22003.07825981], [1516794540000, 5.213e-05, 5.213e-05, 5.19e-05, 5.191e-05, 18727.15084015], [1516794600000, 5.191e-05, 5.213e-05, 5.182e-05, 5.213e-05, 13465.18691914], [1516794660000, 5.212e-05, 5.213e-05, 5.191e-05, 5.2e-05, 3921.84457251], [1516794720000, 5.2e-05, 5.212e-05, 5.2e-05, 5.212e-05, 11905.60106233], [1516794780000, 5.212e-05, 5.212e-05, 5.2e-05, 5.211e-05, 44925.93315242], [1516794840000, 5.211e-05, 5.213e-05, 5.2e-05, 5.212e-05, 32785.39298877], [1516794900000, 5.202e-05, 5.213e-05, 5.202e-05, 5.213e-05, 21445.54569681], [1516794960000, 5.212e-05, 5.212e-05, 5.202e-05, 5.212e-05, 9712.9853266], [1516795020000, 5.212e-05, 5.212e-05, 5.2e-05, 5.203e-05, 4121.99693769], [1516795080000, 5.211e-05, 5.212e-05, 5.203e-05, 5.211e-05, 15596.73020826], [1516795140000, 5.211e-05, 5.212e-05, 5.211e-05, 5.212e-05, 24949.04510212], [1516795200000, 5.212e-05, 5.212e-05, 5.204e-05, 5.204e-05, 27918.30657457], [1516795260000, 5.212e-05, 5.212e-05, 5.2e-05, 5.2e-05, 6332.67862248], [1516795320000, 5.2e-05, 5.219e-05, 5.2e-05, 5.212e-05, 561230.1788154], [1516795380000, 5.212e-05, 5.219e-05, 5.212e-05, 5.218e-05, 65356.7789609], [1516795440000, 5.219e-05, 5.225e-05, 5.218e-05, 5.225e-05, 37738.05483694], [1516795500000, 5.222e-05, 5.225e-05, 5.22e-05, 5.225e-05, 27021.5655711], [1516795560000, 5.223e-05, 5.223e-05, 5.214e-05, 5.22e-05, 52354.38879955], [1516795620000, 5.218e-05, 5.22e-05, 5.21e-05, 5.219e-05, 51172.94995896], [1516795680000, 5.219e-05, 5.22e-05, 5.211e-05, 5.22e-05, 99794.83222953], [1516795740000, 5.22e-05, 5.22e-05, 5.211e-05, 5.22e-05, 22170.12330924], [1516795800000, 5.22e-05, 5.22e-05, 5.203e-05, 5.203e-05, 73410.63954523], [1516795860000, 5.211e-05, 5.219e-05, 5.203e-05, 5.216e-05, 35818.76747398], [1516795920000, 5.218e-05, 5.225e-05, 5.21e-05, 5.225e-05, 558508.25387265], [1516795980000, 5.225e-05, 5.313e-05, 5.22e-05, 5.312e-05, 1910110.57114068], [1516796040000, 5.313e-05, 5.351e-05, 5.308e-05, 5.35e-05, 1698583.46052301], [1516796100000, 5.33e-05, 5.334e-05, 5.257e-05, 5.319e-05, 112415.0990499], [1516796160000, 5.279e-05, 5.351e-05, 5.279e-05, 5.35e-05, 286734.77343198], [1516796220000, 5.341e-05, 5.351e-05, 5.323e-05, 5.349e-05, 179112.6116126], [1516796280000, 5.341e-05, 5.349e-05, 5.3e-05, 5.302e-05, 153678.51578562], [1516796340000, 5.302e-05, 5.349e-05, 5.301e-05, 5.316e-05, 142906.04607524], [1516796400000, 5.322e-05, 5.334e-05, 5.316e-05, 5.316e-05, 43831.49606507], [1516796460000, 5.327e-05, 5.351e-05, 5.316e-05, 5.351e-05, 163078.57664816], [1516796520000, 5.318e-05, 5.351e-05, 5.308e-05, 5.317e-05, 103558.81599269], [1516796580000, 5.317e-05, 5.346e-05, 5.304e-05, 5.34e-05, 65098.39515044], [1516796640000, 5.34e-05, 5.35e-05, 5.323e-05, 5.34e-05, 64137.781106], [1516796700000, 5.325e-05, 5.347e-05, 5.3e-05, 5.347e-05, 214770.65257731], [1516796760000, 5.348e-05, 5.348e-05, 5.3e-05, 5.325e-05, 20815.62430887], [1516796820000, 5.306e-05, 5.325e-05, 5.3e-05, 5.305e-05, 68101.3219803], [1516796880000, 5.305e-05, 5.327e-05, 5.301e-05, 5.32e-05, 34721.92527909], [1516796940000, 5.32e-05, 5.34e-05, 5.32e-05, 5.32e-05, 105401.22298957], [1516797000000, 5.306e-05, 5.33e-05, 5.306e-05, 5.316e-05, 58650.87502831], [1516797060000, 5.316e-05, 5.33e-05, 5.312e-05, 5.321e-05, 48226.99810255], [1516797120000, 5.33e-05, 5.347e-05, 5.32e-05, 5.33e-05, 45414.26303449], [1516797180000, 5.33e-05, 5.344e-05, 5.33e-05, 5.335e-05, 29306.53412214], [1516797240000, 5.335e-05, 5.344e-05, 5.327e-05, 5.339e-05, 57607.45420604], [1516797300000, 5.338e-05, 5.34e-05, 5.33e-05, 5.34e-05, 48724.42758815], [1516797360000, 5.34e-05, 5.34e-05, 5.331e-05, 5.339e-05, 23302.15171417], [1516797420000, 5.339e-05, 5.349e-05, 5.337e-05, 5.349e-05, 135760.36727001], [1516797480000, 5.349e-05, 5.351e-05, 5.339e-05, 5.349e-05, 145376.16652035], [1516797540000, 5.348e-05, 5.349e-05, 5.34e-05, 5.347e-05, 154209.52713117], [1516797600000, 5.347e-05, 5.349e-05, 5.332e-05, 5.339e-05, 131151.14721744], [1516797660000, 5.339e-05, 5.351e-05, 5.333e-05, 5.351e-05, 117459.29467342], [1516797720000, 5.351e-05, 5.373e-05, 5.346e-05, 5.365e-05, 945072.2418162], [1516797780000, 5.365e-05, 5.375e-05, 5.35e-05, 5.369e-05, 216419.68245556], [1516797840000, 5.369e-05, 5.385e-05, 5.361e-05, 5.38e-05, 345385.27118918], [1516797900000, 5.38e-05, 5.39e-05, 5.352e-05, 5.385e-05, 159972.57056409], [1516797960000, 5.387e-05, 5.4e-05, 5.385e-05, 5.4e-05, 175950.07133302], [1516798020000, 5.399e-05, 5.433e-05, 5.385e-05, 5.432e-05, 155901.1463454], [1516798080000, 5.432e-05, 5.455e-05, 5.397e-05, 5.397e-05, 267132.48219321], [1516798140000, 5.386e-05, 5.429e-05, 5.385e-05, 5.42e-05, 177515.49848599], [1516798200000, 5.429e-05, 5.43e-05, 5.397e-05, 5.419e-05, 120071.24007793], [1516798260000, 5.419e-05, 5.419e-05, 5.388e-05, 5.396e-05, 58484.17211123], [1516798320000, 5.388e-05, 5.413e-05, 5.387e-05, 5.413e-05, 123652.88256589], [1516798380000, 5.41e-05, 5.42e-05, 5.39e-05, 5.39e-05, 73025.12172098], [1516798440000, 5.414e-05, 5.43e-05, 5.388e-05, 5.4e-05, 123048.47636509], [1516798500000, 5.41e-05, 5.414e-05, 5.39e-05, 5.409e-05, 114887.02535239], [1516798560000, 5.409e-05, 5.414e-05, 5.389e-05, 5.4e-05, 126524.04458496], [1516798620000, 5.4e-05, 5.414e-05, 5.388e-05, 5.4e-05, 22203.1699678], [1516798680000, 5.401e-05, 5.41e-05, 5.4e-05, 5.41e-05, 47783.15300609], [1516798740000, 5.41e-05, 5.41e-05, 5.4e-05, 5.407e-05, 18220.19635644], [1516798800000, 5.408e-05, 5.408e-05, 5.39e-05, 5.39e-05, 56988.00775178], [1516798860000, 5.39e-05, 5.4e-05, 5.362e-05, 5.376e-05, 84161.90016141], [1516798920000, 5.365e-05, 5.376e-05, 5.35e-05, 5.361e-05, 87640.33484029], [1516798980000, 5.35e-05, 5.362e-05, 5.339e-05, 5.36e-05, 96054.83685472], [1516799040000, 5.36e-05, 5.362e-05, 5.334e-05, 5.354e-05, 102420.84645845], [1516799100000, 5.35e-05, 5.362e-05, 5.346e-05, 5.35e-05, 121977.63215911], [1516799160000, 5.362e-05, 5.377e-05, 5.346e-05, 5.362e-05, 69888.81559232], [1516799220000, 5.362e-05, 5.376e-05, 5.36e-05, 5.37e-05, 34792.87124481], [1516799280000, 5.37e-05, 5.395e-05, 5.362e-05, 5.375e-05, 46693.84154359], [1516799340000, 5.381e-05, 5.4e-05, 5.36e-05, 5.364e-05, 142675.0285392], [1516799400000, 5.364e-05, 5.364e-05, 5.35e-05, 5.36e-05, 35849.10447561], [1516799460000, 5.364e-05, 5.364e-05, 5.347e-05, 5.362e-05, 58526.59896695], [1516799520000, 5.363e-05, 5.364e-05, 5.36e-05, 5.364e-05, 12551.64276648], [1516799580000, 5.363e-05, 5.364e-05, 5.351e-05, 5.363e-05, 91005.43568996], [1516799640000, 5.363e-05, 5.364e-05, 5.363e-05, 5.363e-05, 36339.02626162], [1516799700000, 5.363e-05, 5.364e-05, 5.347e-05, 5.348e-05, 84952.551722], [1516799760000, 5.348e-05, 5.348e-05, 5.347e-05, 5.347e-05, 13944.13093571], [1516799820000, 5.347e-05, 5.364e-05, 5.345e-05, 5.345e-05, 95818.21083203], [1516799880000, 5.35e-05, 5.35e-05, 5.348e-05, 5.35e-05, 32524.81024146], [1516799940000, 5.35e-05, 5.37e-05, 5.35e-05, 5.37e-05, 45803.68511159], [1516800000000, 5.364e-05, 5.4e-05, 5.364e-05, 5.4e-05, 48952.92652235], [1516800060000, 5.395e-05, 5.41e-05, 5.371e-05, 5.4e-05, 200465.83767587], [1516800120000, 5.409e-05, 5.41e-05, 5.377e-05, 5.398e-05, 10186.95670703], [1516800180000, 5.395e-05, 5.399e-05, 5.345e-05, 5.367e-05, 73267.05489041], [1516800240000, 5.367e-05, 5.375e-05, 5.35e-05, 5.35e-05, 17397.69152307], [1516800300000, 5.363e-05, 5.363e-05, 5.35e-05, 5.35e-05, 21440.84286654], [1516800360000, 5.35e-05, 5.352e-05, 5.346e-05, 5.349e-05, 17602.95351922], [1516800420000, 5.349e-05, 5.35e-05, 5.327e-05, 5.327e-05, 59093.91702955], [1516800480000, 5.327e-05, 5.364e-05, 5.314e-05, 5.364e-05, 145778.2511118], [1516800540000, 5.335e-05, 5.364e-05, 5.315e-05, 5.326e-05, 69589.4999628], [1516800600000, 5.343e-05, 5.343e-05, 5.319e-05, 5.32e-05, 23997.65298501], [1516800660000, 5.32e-05, 5.326e-05, 5.319e-05, 5.32e-05, 37903.72145337], [1516800720000, 5.32e-05, 5.341e-05, 5.319e-05, 5.341e-05, 8985.85552614], [1516800780000, 5.334e-05, 5.362e-05, 5.326e-05, 5.348e-05, 10971.29102846], [1516800840000, 5.348e-05, 5.364e-05, 5.335e-05, 5.364e-05, 13588.70172613], [1516800900000, 5.35e-05, 5.364e-05, 5.32e-05, 5.32e-05, 67082.84948858], [1516800960000, 5.32e-05, 5.32e-05, 5.316e-05, 5.316e-05, 32524.0118398], [1516801020000, 5.316e-05, 5.316e-05, 5.301e-05, 5.311e-05, 204880.31249791], [1516801080000, 5.302e-05, 5.334e-05, 5.302e-05, 5.311e-05, 38375.2768069], [1516801140000, 5.319e-05, 5.33e-05, 5.265e-05, 5.295e-05, 113852.85739502], [1516801200000, 5.3e-05, 5.33e-05, 5.275e-05, 5.31e-05, 109980.67947926], [1516801260000, 5.31e-05, 5.318e-05, 5.31e-05, 5.318e-05, 7646.58621848], [1516801320000, 5.311e-05, 5.334e-05, 5.311e-05, 5.33e-05, 18455.36748658], [1516801380000, 5.33e-05, 5.33e-05, 5.312e-05, 5.319e-05, 29528.15546903], [1516801440000, 5.319e-05, 5.319e-05, 5.31e-05, 5.312e-05, 6970.70743957], [1516801500000, 5.311e-05, 5.312e-05, 5.31e-05, 5.31e-05, 33125.27518324], [1516801560000, 5.286e-05, 5.309e-05, 5.284e-05, 5.286e-05, 87506.62543227], [1516801620000, 5.286e-05, 5.3e-05, 5.286e-05, 5.3e-05, 60592.75392531], [1516801680000, 5.3e-05, 5.3e-05, 5.298e-05, 5.299e-05, 63749.26534931], [1516801740000, 5.299e-05, 5.299e-05, 5.292e-05, 5.299e-05, 41400.28905861], [1516801800000, 5.299e-05, 5.299e-05, 5.29e-05, 5.298e-05, 21112.34768859], [1516801860000, 5.298e-05, 5.299e-05, 5.284e-05, 5.298e-05, 42934.85098803], [1516801920000, 5.298e-05, 5.299e-05, 5.292e-05, 5.292e-05, 78127.41877702], [1516801980000, 5.299e-05, 5.3e-05, 5.285e-05, 5.292e-05, 232161.32755928], [1516802040000, 5.292e-05, 5.33e-05, 5.287e-05, 5.301e-05, 180673.5442094], [1516802100000, 5.329e-05, 5.33e-05, 5.3e-05, 5.309e-05, 19833.96806329], [1516802160000, 5.309e-05, 5.309e-05, 5.3e-05, 5.308e-05, 14020.82757753], [1516802220000, 5.307e-05, 5.307e-05, 5.301e-05, 5.304e-05, 1361.14269335], [1516802280000, 5.304e-05, 5.309e-05, 5.304e-05, 5.304e-05, 105865.71257309], [1516802340000, 5.304e-05, 5.309e-05, 5.304e-05, 5.309e-05, 25172.38689827], [1516802400000, 5.309e-05, 5.31e-05, 5.307e-05, 5.309e-05, 77695.14056785], [1516802460000, 5.309e-05, 5.32e-05, 5.278e-05, 5.308e-05, 181832.42661422], [1516802520000, 5.31e-05, 5.31e-05, 5.27e-05, 5.31e-05, 125566.59799988], [1516802580000, 5.309e-05, 5.315e-05, 5.256e-05, 5.256e-05, 145279.91008315], [1516802640000, 5.256e-05, 5.298e-05, 5.25e-05, 5.251e-05, 133328.16341421], [1516802700000, 5.261e-05, 5.293e-05, 5.256e-05, 5.267e-05, 120484.49607684], [1516802760000, 5.268e-05, 5.29e-05, 5.267e-05, 5.268e-05, 57142.73689462], [1516802820000, 5.268e-05, 5.289e-05, 5.245e-05, 5.245e-05, 205978.84384579], [1516802880000, 5.245e-05, 5.25e-05, 5.229e-05, 5.231e-05, 77494.14700063], [1516802940000, 5.231e-05, 5.231e-05, 5.208e-05, 5.217e-05, 204323.72929556], [1516803000000, 5.217e-05, 5.218e-05, 5.208e-05, 5.216e-05, 140048.40317371], [1516803060000, 5.216e-05, 5.216e-05, 5.201e-05, 5.201e-05, 96470.35977039], [1516803120000, 5.209e-05, 5.3e-05, 5.201e-05, 5.213e-05, 208680.56641863], [1516803180000, 5.213e-05, 5.292e-05, 5.2e-05, 5.2e-05, 188919.45224011], [1516803240000, 5.201e-05, 5.225e-05, 5.196e-05, 5.196e-05, 236640.79302883], [1516803300000, 5.198e-05, 5.2e-05, 5.176e-05, 5.186e-05, 224487.03903656], [1516803360000, 5.186e-05, 5.2e-05, 5.179e-05, 5.2e-05, 151517.49447126], [1516803420000, 5.207e-05, 5.23e-05, 5.198e-05, 5.221e-05, 92623.86907199], [1516803480000, 5.221e-05, 5.25e-05, 5.2e-05, 5.221e-05, 82597.0285549], [1516803540000, 5.23e-05, 5.278e-05, 5.23e-05, 5.276e-05, 106231.38906491], [1516803600000, 5.254e-05, 5.288e-05, 5.233e-05, 5.28e-05, 296192.73713656], [1516803660000, 5.28e-05, 5.345e-05, 5.28e-05, 5.345e-05, 261329.06325913], [1516803720000, 5.348e-05, 5.348e-05, 5.266e-05, 5.313e-05, 286110.08957204], [1516803780000, 5.313e-05, 5.336e-05, 5.311e-05, 5.336e-05, 230584.82646586], [1516803840000, 5.343e-05, 5.386e-05, 5.336e-05, 5.383e-05, 318336.39121976], [1516803900000, 5.386e-05, 5.469e-05, 5.383e-05, 5.469e-05, 663705.60362693], [1516803960000, 5.47e-05, 5.478e-05, 5.4e-05, 5.46e-05, 374536.07377364], [1516804020000, 5.471e-05, 5.5e-05, 5.455e-05, 5.495e-05, 719399.94029917], [1516804080000, 5.5e-05, 5.565e-05, 5.495e-05, 5.565e-05, 807657.08013747], [1516804140000, 5.566e-05, 5.594e-05, 5.503e-05, 5.519e-05, 562047.31019296], [1516804200000, 5.519e-05, 5.577e-05, 5.501e-05, 5.503e-05, 542698.61814868], [1516804260000, 5.502e-05, 5.55e-05, 5.377e-05, 5.484e-05, 427954.06682011], [1516804320000, 5.484e-05, 5.519e-05, 5.484e-05, 5.516e-05, 265063.92398007], [1516804380000, 5.511e-05, 5.57e-05, 5.495e-05, 5.495e-05, 247104.57112453], [1516804440000, 5.494e-05, 5.495e-05, 5.465e-05, 5.484e-05, 212914.30672939], [1516804500000, 5.484e-05, 5.49e-05, 5.467e-05, 5.49e-05, 187739.6551727], [1516804560000, 5.49e-05, 5.495e-05, 5.484e-05, 5.484e-05, 167388.07144851], [1516804620000, 5.484e-05, 5.49e-05, 5.466e-05, 5.467e-05, 144764.32482574], [1516804680000, 5.467e-05, 5.474e-05, 5.413e-05, 5.414e-05, 134223.47601818], [1516804740000, 5.423e-05, 5.47e-05, 5.414e-05, 5.469e-05, 242742.09661359], [1516804800000, 5.439e-05, 5.465e-05, 5.439e-05, 5.464e-05, 181793.12837247], [1516804860000, 5.447e-05, 5.464e-05, 5.435e-05, 5.445e-05, 304813.28564898], [1516804920000, 5.448e-05, 5.463e-05, 5.438e-05, 5.462e-05, 236139.4615178], [1516804980000, 5.462e-05, 5.49e-05, 5.46e-05, 5.463e-05, 239263.79082764], [1516805040000, 5.463e-05, 5.47e-05, 5.45e-05, 5.451e-05, 381068.06823284], [1516805100000, 5.451e-05, 5.469e-05, 5.437e-05, 5.438e-05, 62560.77129209], [1516805160000, 5.445e-05, 5.448e-05, 5.42e-05, 5.428e-05, 115168.16320015], [1516805220000, 5.428e-05, 5.432e-05, 5.399e-05, 5.4e-05, 110317.37654953], [1516805280000, 5.4e-05, 5.427e-05, 5.399e-05, 5.4e-05, 217693.78749073], [1516805340000, 5.399e-05, 5.43e-05, 5.399e-05, 5.411e-05, 240080.47551656], [1516805400000, 5.427e-05, 5.438e-05, 5.414e-05, 5.438e-05, 257945.41229927], [1516805460000, 5.436e-05, 5.464e-05, 5.433e-05, 5.464e-05, 133960.02317297], [1516805520000, 5.452e-05, 5.47e-05, 5.449e-05, 5.463e-05, 136024.46579589], [1516805580000, 5.449e-05, 5.462e-05, 5.44e-05, 5.44e-05, 34527.87749662], [1516805640000, 5.44e-05, 5.44e-05, 5.436e-05, 5.438e-05, 50396.13922693], [1516805700000, 5.438e-05, 5.449e-05, 5.429e-05, 5.449e-05, 692946.33091244], [1516805760000, 5.449e-05, 5.47e-05, 5.449e-05, 5.465e-05, 73923.55616986], [1516805820000, 5.467e-05, 5.487e-05, 5.452e-05, 5.48e-05, 168263.54819255], [1516805880000, 5.479e-05, 5.48e-05, 5.466e-05, 5.48e-05, 104456.88763607], [1516805940000, 5.477e-05, 5.48e-05, 5.466e-05, 5.48e-05, 78448.63425659], [1516806000000, 5.48e-05, 5.48e-05, 5.467e-05, 5.48e-05, 51507.19099063], [1516806060000, 5.478e-05, 5.49e-05, 5.467e-05, 5.489e-05, 71623.38266051], [1516806120000, 5.489e-05, 5.49e-05, 5.467e-05, 5.467e-05, 94954.48536073], [1516806180000, 5.467e-05, 5.479e-05, 5.465e-05, 5.475e-05, 75661.69534611], [1516806240000, 5.475e-05, 5.475e-05, 5.466e-05, 5.466e-05, 72918.44868872], [1516806300000, 5.467e-05, 5.475e-05, 5.466e-05, 5.473e-05, 56620.42827142], [1516806360000, 5.472e-05, 5.474e-05, 5.469e-05, 5.471e-05, 45346.03462981], [1516806420000, 5.47e-05, 5.471e-05, 5.469e-05, 5.469e-05, 26501.63557216], [1516806480000, 5.469e-05, 5.471e-05, 5.466e-05, 5.466e-05, 136200.65040222], [1516806540000, 5.466e-05, 5.469e-05, 5.459e-05, 5.46e-05, 27791.63681459], [1516806600000, 5.459e-05, 5.46e-05, 5.45e-05, 5.45e-05, 33434.17321957], [1516806660000, 5.45e-05, 5.45e-05, 5.427e-05, 5.427e-05, 29914.37553858], [1516806720000, 5.44e-05, 5.44e-05, 5.426e-05, 5.427e-05, 94065.59862], [1516806780000, 5.427e-05, 5.438e-05, 5.418e-05, 5.42e-05, 157610.83037359], [1516806840000, 5.42e-05, 5.426e-05, 5.419e-05, 5.419e-05, 74541.60278599], [1516806900000, 5.419e-05, 5.437e-05, 5.4e-05, 5.42e-05, 194777.85155619], [1516806960000, 5.421e-05, 5.434e-05, 5.401e-05, 5.414e-05, 174904.98577892], [1516807020000, 5.415e-05, 5.44e-05, 5.415e-05, 5.44e-05, 85841.05582489], [1516807080000, 5.44e-05, 5.449e-05, 5.422e-05, 5.422e-05, 127732.24593522], [1516807140000, 5.448e-05, 5.448e-05, 5.44e-05, 5.445e-05, 15820.45834549], [1516807200000, 5.445e-05, 5.445e-05, 5.44e-05, 5.44e-05, 30588.99924533], [1516807260000, 5.44e-05, 5.44e-05, 5.42e-05, 5.425e-05, 211086.16471437], [1516807320000, 5.425e-05, 5.438e-05, 5.41e-05, 5.428e-05, 135968.04916507], [1516807380000, 5.43e-05, 5.439e-05, 5.43e-05, 5.432e-05, 71172.19554179], [1516807440000, 5.432e-05, 5.436e-05, 5.424e-05, 5.434e-05, 102987.43974441], [1516807500000, 5.434e-05, 5.448e-05, 5.433e-05, 5.448e-05, 141457.49159856], [1516807560000, 5.448e-05, 5.45e-05, 5.445e-05, 5.445e-05, 121951.37623463], [1516807620000, 5.446e-05, 5.45e-05, 5.434e-05, 5.45e-05, 28216.68307043], [1516807680000, 5.45e-05, 5.45e-05, 5.435e-05, 5.45e-05, 126824.82856277], [1516807740000, 5.45e-05, 5.5e-05, 5.449e-05, 5.5e-05, 420271.52756945], [1516807800000, 5.483e-05, 5.499e-05, 5.45e-05, 5.485e-05, 134558.30130723], [1516807860000, 5.486e-05, 5.495e-05, 5.485e-05, 5.493e-05, 27431.84613537], [1516807920000, 5.493e-05, 5.52e-05, 5.493e-05, 5.51e-05, 202167.81080187], [1516807980000, 5.51e-05, 5.514e-05, 5.485e-05, 5.486e-05, 60656.13869273], [1516808040000, 5.485e-05, 5.5e-05, 5.485e-05, 5.487e-05, 22974.29950119], [1516808100000, 5.487e-05, 5.512e-05, 5.487e-05, 5.51e-05, 172535.85444324], [1516808160000, 5.51e-05, 5.51e-05, 5.48e-05, 5.497e-05, 103154.23591198], [1516808220000, 5.497e-05, 5.51e-05, 5.481e-05, 5.497e-05, 95404.71252829], [1516808280000, 5.497e-05, 5.519e-05, 5.48e-05, 5.506e-05, 604717.69170457], [1516808340000, 5.506e-05, 5.508e-05, 5.5e-05, 5.508e-05, 158710.161937], [1516808400000, 5.508e-05, 5.54e-05, 5.508e-05, 5.54e-05, 89327.67663179], [1516808460000, 5.539e-05, 5.545e-05, 5.512e-05, 5.542e-05, 59268.66138128], [1516808520000, 5.542e-05, 5.55e-05, 5.527e-05, 5.55e-05, 156784.68102722], [1516808580000, 5.55e-05, 5.55e-05, 5.528e-05, 5.544e-05, 149199.13526724], [1516808640000, 5.544e-05, 5.611e-05, 5.531e-05, 5.611e-05, 392118.6260838], [1516808700000, 5.611e-05, 5.685e-05, 5.606e-05, 5.68e-05, 651887.47974145], [1516808760000, 5.685e-05, 5.688e-05, 5.563e-05, 5.635e-05, 303783.47202965], [1516808820000, 5.635e-05, 5.655e-05, 5.555e-05, 5.589e-05, 168426.68318937], [1516808880000, 5.557e-05, 5.589e-05, 5.557e-05, 5.589e-05, 41565.95091317], [1516808940000, 5.588e-05, 5.599e-05, 5.58e-05, 5.598e-05, 43739.47841102], [1516809000000, 5.599e-05, 5.599e-05, 5.557e-05, 5.597e-05, 165534.23807544], [1516809060000, 5.59e-05, 5.596e-05, 5.559e-05, 5.587e-05, 9360.89551947], [1516809120000, 5.587e-05, 5.587e-05, 5.56e-05, 5.565e-05, 88019.39178326], [1516809180000, 5.565e-05, 5.566e-05, 5.56e-05, 5.566e-05, 142925.45966229], [1516809240000, 5.56e-05, 5.56e-05, 5.545e-05, 5.548e-05, 172950.52180434], [1516809300000, 5.548e-05, 5.548e-05, 5.533e-05, 5.542e-05, 54535.57301571], [1516809360000, 5.542e-05, 5.548e-05, 5.54e-05, 5.548e-05, 32196.07489931], [1516809420000, 5.548e-05, 5.548e-05, 5.54e-05, 5.54e-05, 9621.44579403], [1516809480000, 5.54e-05, 5.546e-05, 5.534e-05, 5.546e-05, 26750.18224706], [1516809540000, 5.546e-05, 5.546e-05, 5.525e-05, 5.525e-05, 96802.33684745], [1516809600000, 5.526e-05, 5.53e-05, 5.502e-05, 5.516e-05, 108775.38586477], [1516809660000, 5.51e-05, 5.525e-05, 5.503e-05, 5.516e-05, 28351.99280817], [1516809720000, 5.52e-05, 5.533e-05, 5.511e-05, 5.511e-05, 39440.01576297], [1516809780000, 5.516e-05, 5.526e-05, 5.515e-05, 5.526e-05, 5791.55752577], [1516809840000, 5.533e-05, 5.533e-05, 5.526e-05, 5.527e-05, 6738.64824524], [1516809900000, 5.53e-05, 5.533e-05, 5.527e-05, 5.531e-05, 30411.89555428], [1516809960000, 5.531e-05, 5.55e-05, 5.531e-05, 5.55e-05, 37841.23030471], [1516810020000, 5.55e-05, 5.55e-05, 5.541e-05, 5.55e-05, 45650.67146823], [1516810080000, 5.55e-05, 5.55e-05, 5.543e-05, 5.55e-05, 22662.09904502], [1516810140000, 5.55e-05, 5.555e-05, 5.544e-05, 5.547e-05, 30523.49377526], [1516810200000, 5.549e-05, 5.558e-05, 5.547e-05, 5.555e-05, 37595.09567811], [1516810260000, 5.551e-05, 5.56e-05, 5.551e-05, 5.56e-05, 58036.37252258], [1516810320000, 5.56e-05, 5.586e-05, 5.56e-05, 5.586e-05, 25219.29094448], [1516810380000, 5.586e-05, 5.589e-05, 5.574e-05, 5.589e-05, 27749.71042074], [1516810440000, 5.588e-05, 5.588e-05, 5.546e-05, 5.547e-05, 74256.34417577], [1516810500000, 5.546e-05, 5.556e-05, 5.546e-05, 5.546e-05, 19661.05597906], [1516810560000, 5.556e-05, 5.564e-05, 5.511e-05, 5.511e-05, 67194.92264011], [1516810620000, 5.546e-05, 5.547e-05, 5.512e-05, 5.53e-05, 28846.12478803], [1516810680000, 5.53e-05, 5.543e-05, 5.512e-05, 5.53e-05, 15450.81634324], [1516810740000, 5.53e-05, 5.541e-05, 5.53e-05, 5.531e-05, 10678.2642731], [1516810800000, 5.54e-05, 5.54e-05, 5.531e-05, 5.531e-05, 4180.36868758], [1516810860000, 5.531e-05, 5.531e-05, 5.521e-05, 5.521e-05, 27906.18600298], [1516810920000, 5.521e-05, 5.53e-05, 5.513e-05, 5.521e-05, 35656.83462386], [1516810980000, 5.53e-05, 5.53e-05, 5.521e-05, 5.525e-05, 5616.45445337], [1516811040000, 5.525e-05, 5.53e-05, 5.524e-05, 5.524e-05, 13601.88210286], [1516811100000, 5.529e-05, 5.53e-05, 5.523e-05, 5.529e-05, 83864.60149158], [1516811160000, 5.524e-05, 5.529e-05, 5.524e-05, 5.529e-05, 3691.56170776], [1516811220000, 5.527e-05, 5.53e-05, 5.527e-05, 5.53e-05, 43087.09737781], [1516811280000, 5.529e-05, 5.541e-05, 5.529e-05, 5.53e-05, 35077.21517413], [1516811340000, 5.53e-05, 5.541e-05, 5.53e-05, 5.53e-05, 17562.11911279], [1516811400000, 5.54e-05, 5.547e-05, 5.531e-05, 5.531e-05, 10944.72934911], [1516811460000, 5.547e-05, 5.547e-05, 5.532e-05, 5.538e-05, 8761.05229644], [1516811520000, 5.546e-05, 5.546e-05, 5.54e-05, 5.546e-05, 13175.53726113], [1516811580000, 5.545e-05, 5.546e-05, 5.539e-05, 5.546e-05, 28218.87742495], [1516811640000, 5.547e-05, 5.547e-05, 5.545e-05, 5.547e-05, 50174.28066652], [1516811700000, 5.547e-05, 5.547e-05, 5.545e-05, 5.547e-05, 58019.11208172], [1516811760000, 5.547e-05, 5.548e-05, 5.546e-05, 5.547e-05, 12429.93531974], [1516811820000, 5.546e-05, 5.549e-05, 5.546e-05, 5.549e-05, 50290.5522171], [1516811880000, 5.546e-05, 5.549e-05, 5.546e-05, 5.547e-05, 13566.10676498], [1516811940000, 5.547e-05, 5.547e-05, 5.546e-05, 5.546e-05, 19561.07012732], [1516812000000, 5.546e-05, 5.547e-05, 5.545e-05, 5.547e-05, 65274.34697561], [1516812060000, 5.547e-05, 5.548e-05, 5.547e-05, 5.548e-05, 11839.96450332], [1516812120000, 5.548e-05, 5.553e-05, 5.548e-05, 5.553e-05, 7448.82354836], [1516812180000, 5.553e-05, 5.555e-05, 5.548e-05, 5.548e-05, 19658.35361515], [1516812240000, 5.55e-05, 5.555e-05, 5.548e-05, 5.55e-05, 8099.83500565], [1516812300000, 5.548e-05, 5.573e-05, 5.548e-05, 5.571e-05, 22047.06906582], [1516812360000, 5.555e-05, 5.57e-05, 5.555e-05, 5.555e-05, 14136.61904144], [1516812420000, 5.563e-05, 5.563e-05, 5.556e-05, 5.561e-05, 6031.37134955], [1516812480000, 5.561e-05, 5.561e-05, 5.556e-05, 5.556e-05, 8698.75158251], [1516812540000, 5.556e-05, 5.563e-05, 5.555e-05, 5.563e-05, 68925.54482609], [1516812600000, 5.563e-05, 5.565e-05, 5.556e-05, 5.565e-05, 55847.03239286], [1516812660000, 5.565e-05, 5.565e-05, 5.556e-05, 5.56e-05, 24171.63008902], [1516812720000, 5.564e-05, 5.565e-05, 5.561e-05, 5.565e-05, 20735.44184795], [1516812780000, 5.564e-05, 5.564e-05, 5.56e-05, 5.563e-05, 10088.77289411], [1516812840000, 5.564e-05, 5.564e-05, 5.561e-05, 5.563e-05, 3355.20967823], [1516812900000, 5.563e-05, 5.563e-05, 5.56e-05, 5.563e-05, 21409.15805737], [1516812960000, 5.563e-05, 5.564e-05, 5.56e-05, 5.56e-05, 13358.3474142], [1516813020000, 5.56e-05, 5.56e-05, 5.56e-05, 5.56e-05, 6191.9070627], [1516813080000, 5.56e-05, 5.564e-05, 5.56e-05, 5.563e-05, 8678.43735897], [1516813140000, 5.563e-05, 5.563e-05, 5.561e-05, 5.561e-05, 8324.30528748], [1516813200000, 5.561e-05, 5.563e-05, 5.56e-05, 5.561e-05, 1635403.33939343], [1516813260000, 5.561e-05, 5.561e-05, 5.556e-05, 5.559e-05, 8853.08875545], [1516813320000, 5.556e-05, 5.556e-05, 5.548e-05, 5.549e-05, 3429.92503762], [1516813380000, 5.549e-05, 5.562e-05, 5.549e-05, 5.561e-05, 95990.03718564], [1516813440000, 5.556e-05, 5.556e-05, 5.533e-05, 5.546e-05, 29510.43038267], [1516813500000, 5.533e-05, 5.539e-05, 5.533e-05, 5.533e-05, 18603.87239944], [1516813560000, 5.533e-05, 5.561e-05, 5.532e-05, 5.561e-05, 90683.77156054], [1516813620000, 5.533e-05, 5.553e-05, 5.532e-05, 5.532e-05, 3718.53068638], [1516813680000, 5.532e-05, 5.561e-05, 5.532e-05, 5.561e-05, 17690.61777661], [1516813740000, 5.558e-05, 5.561e-05, 5.532e-05, 5.56e-05, 26687.31803488], [1516813800000, 5.542e-05, 5.557e-05, 5.53e-05, 5.53e-05, 8957.1419625], [1516813860000, 5.555e-05, 5.561e-05, 5.512e-05, 5.54e-05, 18050.03663731], [1516813920000, 5.54e-05, 5.55e-05, 5.54e-05, 5.549e-05, 21248.23428999], [1516813980000, 5.549e-05, 5.55e-05, 5.5e-05, 5.549e-05, 74231.79793097], [1516814040000, 5.549e-05, 5.549e-05, 5.522e-05, 5.522e-05, 12545.75904589], [1516814100000, 5.525e-05, 5.525e-05, 5.525e-05, 5.525e-05, 4209.96856732], [1516814160000, 5.525e-05, 5.534e-05, 5.525e-05, 5.533e-05, 28872.39751293], [1516814220000, 5.532e-05, 5.535e-05, 5.525e-05, 5.526e-05, 50615.98670067], [1516814280000, 5.525e-05, 5.532e-05, 5.525e-05, 5.53e-05, 2741.05204381], [1516814340000, 5.526e-05, 5.529e-05, 5.525e-05, 5.529e-05, 101198.06117845], [1516814400000, 5.526e-05, 5.528e-05, 5.525e-05, 5.528e-05, 40630.36160556], [1516814460000, 5.525e-05, 5.526e-05, 5.525e-05, 5.526e-05, 7622.48583772], [1516814520000, 5.525e-05, 5.526e-05, 5.525e-05, 5.526e-05, 3579.53560943], [1516814580000, 5.526e-05, 5.528e-05, 5.525e-05, 5.525e-05, 14254.11076224], [1516814640000, 5.526e-05, 5.526e-05, 5.522e-05, 5.525e-05, 152214.58250833], [1516814700000, 5.525e-05, 5.525e-05, 5.522e-05, 5.525e-05, 11267.97798238], [1516814760000, 5.526e-05, 5.535e-05, 5.523e-05, 5.532e-05, 34201.54377824], [1516814820000, 5.532e-05, 5.559e-05, 5.53e-05, 5.53e-05, 26294.74614932], [1516814880000, 5.53e-05, 5.556e-05, 5.522e-05, 5.523e-05, 14340.81717909], [1516814940000, 5.523e-05, 5.53e-05, 5.502e-05, 5.521e-05, 13641.19793108], [1516815000000, 5.503e-05, 5.512e-05, 5.501e-05, 5.503e-05, 25898.32258617], [1516815060000, 5.51e-05, 5.522e-05, 5.502e-05, 5.519e-05, 47284.52577334], [1516815120000, 5.504e-05, 5.519e-05, 5.504e-05, 5.51e-05, 23685.58652444], [1516815180000, 5.511e-05, 5.523e-05, 5.51e-05, 5.52e-05, 26621.76939329], [1516815240000, 5.52e-05, 5.525e-05, 5.512e-05, 5.512e-05, 12505.61042649], [1516815300000, 5.512e-05, 5.521e-05, 5.511e-05, 5.513e-05, 14364.07783476], [1516815360000, 5.513e-05, 5.519e-05, 5.511e-05, 5.511e-05, 9719.70858351], [1516815420000, 5.511e-05, 5.543e-05, 5.505e-05, 5.51e-05, 44589.43271933], [1516815480000, 5.51e-05, 5.529e-05, 5.51e-05, 5.529e-05, 9844.02913807], [1516815540000, 5.512e-05, 5.53e-05, 5.512e-05, 5.53e-05, 6922.17909706], [1516815600000, 5.529e-05, 5.529e-05, 5.516e-05, 5.518e-05, 4709.7256057], [1516815660000, 5.52e-05, 5.526e-05, 5.515e-05, 5.515e-05, 12036.04394271], [1516815720000, 5.529e-05, 5.529e-05, 5.52e-05, 5.528e-05, 18131.91064902], [1516815780000, 5.528e-05, 5.529e-05, 5.528e-05, 5.528e-05, 2061.27885339], [1516815840000, 5.529e-05, 5.529e-05, 5.528e-05, 5.529e-05, 41967.21334707], [1516815900000, 5.529e-05, 5.533e-05, 5.529e-05, 5.533e-05, 1784.45785731], [1516815960000, 5.533e-05, 5.533e-05, 5.529e-05, 5.529e-05, 53164.17859355], [1516816020000, 5.531e-05, 5.534e-05, 5.53e-05, 5.533e-05, 8883.31155778], [1516816080000, 5.533e-05, 5.542e-05, 5.533e-05, 5.534e-05, 26846.62595798], [1516816140000, 5.543e-05, 5.563e-05, 5.543e-05, 5.545e-05, 23929.56060775], [1516816200000, 5.562e-05, 5.58e-05, 5.545e-05, 5.548e-05, 13121.73861962], [1516816260000, 5.55e-05, 5.56e-05, 5.534e-05, 5.559e-05, 36775.71874638], [1516816320000, 5.557e-05, 5.559e-05, 5.542e-05, 5.554e-05, 17216.89042054], [1516816380000, 5.55e-05, 5.55e-05, 5.536e-05, 5.536e-05, 4044.56390276], [1516816440000, 5.548e-05, 5.557e-05, 5.537e-05, 5.557e-05, 26728.2501336], [1516816500000, 5.555e-05, 5.563e-05, 5.555e-05, 5.562e-05, 50296.45785165], [1516816560000, 5.559e-05, 5.563e-05, 5.555e-05, 5.56e-05, 19119.42868519], [1516816620000, 5.555e-05, 5.562e-05, 5.555e-05, 5.559e-05, 45265.6955796], [1516816680000, 5.56e-05, 5.562e-05, 5.555e-05, 5.56e-05, 80889.35875263], [1516816740000, 5.56e-05, 5.561e-05, 5.56e-05, 5.56e-05, 41126.73884017], [1516816800000, 5.562e-05, 5.563e-05, 5.559e-05, 5.56e-05, 20314.17704299], [1516816860000, 5.559e-05, 5.575e-05, 5.555e-05, 5.575e-05, 17211.21542699], [1516816920000, 5.575e-05, 5.579e-05, 5.563e-05, 5.579e-05, 73779.2623083], [1516816980000, 5.573e-05, 5.578e-05, 5.573e-05, 5.577e-05, 27934.94116119], [1516817040000, 5.575e-05, 5.578e-05, 5.563e-05, 5.578e-05, 16274.94752088], [1516817100000, 5.577e-05, 5.579e-05, 5.56e-05, 5.56e-05, 34388.49150975], [1516817160000, 5.579e-05, 5.586e-05, 5.56e-05, 5.586e-05, 35664.84303655], [1516817220000, 5.586e-05, 5.6e-05, 5.581e-05, 5.598e-05, 90608.37513654], [1516817280000, 5.586e-05, 5.615e-05, 5.561e-05, 5.599e-05, 127854.85565526], [1516817340000, 5.599e-05, 5.6e-05, 5.579e-05, 5.6e-05, 18876.3245919], [1516817400000, 5.6e-05, 5.616e-05, 5.599e-05, 5.6e-05, 40844.8455892], [1516817460000, 5.613e-05, 5.613e-05, 5.586e-05, 5.597e-05, 10983.33652654], [1516817520000, 5.582e-05, 5.599e-05, 5.582e-05, 5.599e-05, 12396.22015841], [1516817580000, 5.6e-05, 5.618e-05, 5.551e-05, 5.551e-05, 57336.72866841], [1516817640000, 5.55e-05, 5.606e-05, 5.55e-05, 5.588e-05, 8568.18561776], [1516817700000, 5.588e-05, 5.588e-05, 5.582e-05, 5.585e-05, 13134.08986938], [1516817760000, 5.585e-05, 5.586e-05, 5.565e-05, 5.565e-05, 4452.20071023], [1516817820000, 5.563e-05, 5.582e-05, 5.563e-05, 5.582e-05, 10891.79935712], [1516817880000, 5.582e-05, 5.594e-05, 5.58e-05, 5.594e-05, 31769.70394916], [1516817940000, 5.594e-05, 5.604e-05, 5.574e-05, 5.598e-05, 66408.21784735], [1516818000000, 5.59e-05, 5.599e-05, 5.574e-05, 5.598e-05, 56698.78141414], [1516818060000, 5.598e-05, 5.6e-05, 5.591e-05, 5.598e-05, 61118.86531438], [1516818120000, 5.598e-05, 5.598e-05, 5.59e-05, 5.595e-05, 28143.31142694], [1516818180000, 5.595e-05, 5.605e-05, 5.59e-05, 5.605e-05, 23117.0151055], [1516818240000, 5.603e-05, 5.605e-05, 5.603e-05, 5.604e-05, 61178.01923035], [1516818300000, 5.604e-05, 5.61e-05, 5.601e-05, 5.603e-05, 33208.97810265], [1516818360000, 5.601e-05, 5.615e-05, 5.6e-05, 5.612e-05, 25441.51584057], [1516818420000, 5.609e-05, 5.609e-05, 5.6e-05, 5.607e-05, 50843.99705295], [1516818480000, 5.607e-05, 5.619e-05, 5.604e-05, 5.609e-05, 28600.03173841], [1516818540000, 5.609e-05, 5.619e-05, 5.609e-05, 5.617e-05, 19827.04822088], [1516818600000, 5.617e-05, 5.617e-05, 5.605e-05, 5.605e-05, 83956.597053], [1516818660000, 5.605e-05, 5.607e-05, 5.605e-05, 5.607e-05, 45585.9800503], [1516818720000, 5.607e-05, 5.614e-05, 5.57e-05, 5.605e-05, 62738.52818343], [1516818780000, 5.589e-05, 5.604e-05, 5.589e-05, 5.599e-05, 52684.0044557], [1516818840000, 5.599e-05, 5.608e-05, 5.58e-05, 5.587e-05, 95404.30500017], [1516818900000, 5.587e-05, 5.59e-05, 5.578e-05, 5.579e-05, 61815.15597818], [1516818960000, 5.585e-05, 5.6e-05, 5.585e-05, 5.599e-05, 8015.48444472], [1516819020000, 5.599e-05, 5.6e-05, 5.585e-05, 5.585e-05, 36777.42159379], [1516819080000, 5.586e-05, 5.595e-05, 5.578e-05, 5.588e-05, 41166.47154983], [1516819140000, 5.588e-05, 5.588e-05, 5.57e-05, 5.575e-05, 54256.2972166], [1516819200000, 5.575e-05, 5.575e-05, 5.567e-05, 5.57e-05, 19272.4454719], [1516819260000, 5.57e-05, 5.57e-05, 5.561e-05, 5.567e-05, 9678.28939207], [1516819320000, 5.568e-05, 5.572e-05, 5.568e-05, 5.57e-05, 49908.05300035], [1516819380000, 5.569e-05, 5.572e-05, 5.568e-05, 5.57e-05, 25838.34447923], [1516819440000, 5.57e-05, 5.57e-05, 5.561e-05, 5.567e-05, 24346.03548179], [1516819500000, 5.567e-05, 5.585e-05, 5.56e-05, 5.572e-05, 25065.04892435], [1516819560000, 5.572e-05, 5.58e-05, 5.571e-05, 5.578e-05, 25741.42951075], [1516819620000, 5.571e-05, 5.578e-05, 5.563e-05, 5.563e-05, 9943.49709875], [1516819680000, 5.566e-05, 5.576e-05, 5.566e-05, 5.567e-05, 2748.84154412], [1516819740000, 5.57e-05, 5.575e-05, 5.568e-05, 5.568e-05, 5937.10086021], [1516819800000, 5.572e-05, 5.572e-05, 5.568e-05, 5.57e-05, 27003.60115889], [1516819860000, 5.57e-05, 5.57e-05, 5.569e-05, 5.569e-05, 29504.24512722], [1516819920000, 5.569e-05, 5.58e-05, 5.569e-05, 5.572e-05, 49190.34584551], [1516819980000, 5.58e-05, 5.58e-05, 5.575e-05, 5.577e-05, 16602.11269541], [1516820040000, 5.58e-05, 5.58e-05, 5.577e-05, 5.58e-05, 40082.36953626], [1516820100000, 5.58e-05, 5.598e-05, 5.577e-05, 5.582e-05, 15149.44443037], [1516820160000, 5.595e-05, 5.595e-05, 5.582e-05, 5.582e-05, 12072.45775042], [1516820220000, 5.583e-05, 5.597e-05, 5.581e-05, 5.594e-05, 23152.27390096], [1516820280000, 5.595e-05, 5.597e-05, 5.589e-05, 5.594e-05, 31585.01025942], [1516820340000, 5.594e-05, 5.6e-05, 5.59e-05, 5.595e-05, 58813.89586017], [1516820400000, 5.6e-05, 5.616e-05, 5.591e-05, 5.6e-05, 21645.77143536], [1516820460000, 5.6e-05, 5.6e-05, 5.592e-05, 5.6e-05, 9700.39916327], [1516820520000, 5.6e-05, 5.614e-05, 5.595e-05, 5.614e-05, 9461.3527491], [1516820580000, 5.613e-05, 5.614e-05, 5.59e-05, 5.611e-05, 22751.05931702], [1516820640000, 5.611e-05, 5.614e-05, 5.6e-05, 5.613e-05, 18606.75400124], [1516820700000, 5.612e-05, 5.618e-05, 5.6e-05, 5.618e-05, 56160.56620051], [1516820760000, 5.618e-05, 5.623e-05, 5.615e-05, 5.619e-05, 76062.79379131], [1516820820000, 5.619e-05, 5.629e-05, 5.619e-05, 5.629e-05, 21078.36096666], [1516820880000, 5.629e-05, 5.635e-05, 5.627e-05, 5.635e-05, 109861.51715348], [1516820940000, 5.629e-05, 5.636e-05, 5.629e-05, 5.636e-05, 55255.64411603], [1516821000000, 5.636e-05, 5.641e-05, 5.636e-05, 5.641e-05, 12398.25345454], [1516821060000, 5.642e-05, 5.642e-05, 5.636e-05, 5.636e-05, 23298.57782782], [1516821120000, 5.635e-05, 5.635e-05, 5.623e-05, 5.623e-05, 75732.35059067], [1516821180000, 5.623e-05, 5.626e-05, 5.619e-05, 5.619e-05, 17747.79813716], [1516821240000, 5.619e-05, 5.623e-05, 5.619e-05, 5.623e-05, 32191.92088396], [1516821300000, 5.626e-05, 5.626e-05, 5.623e-05, 5.626e-05, 2598.71285634], [1516821360000, 5.626e-05, 5.626e-05, 5.624e-05, 5.626e-05, 12631.6915011], [1516821420000, 5.624e-05, 5.629e-05, 5.623e-05, 5.623e-05, 124217.76518025], [1516821480000, 5.623e-05, 5.629e-05, 5.617e-05, 5.617e-05, 49522.96755017], [1516821540000, 5.601e-05, 5.617e-05, 5.6e-05, 5.617e-05, 7581.16251883], [1516821600000, 5.602e-05, 5.617e-05, 5.601e-05, 5.602e-05, 3203.79508199], [1516821660000, 5.616e-05, 5.633e-05, 5.604e-05, 5.631e-05, 35356.57942977], [1516821720000, 5.63e-05, 5.641e-05, 5.617e-05, 5.617e-05, 35153.61762769], [1516821780000, 5.617e-05, 5.644e-05, 5.605e-05, 5.617e-05, 48085.48378576], [1516821840000, 5.617e-05, 5.627e-05, 5.606e-05, 5.606e-05, 18685.98579185], [1516821900000, 5.606e-05, 5.617e-05, 5.606e-05, 5.617e-05, 25799.54545706], [1516821960000, 5.617e-05, 5.617e-05, 5.616e-05, 5.617e-05, 2309.51559954], [1516822020000, 5.611e-05, 5.616e-05, 5.611e-05, 5.611e-05, 13729.12931585], [1516822080000, 5.604e-05, 5.615e-05, 5.601e-05, 5.611e-05, 21762.69009078], [1516822140000, 5.614e-05, 5.614e-05, 5.611e-05, 5.611e-05, 390.37493142], [1516822200000, 5.612e-05, 5.617e-05, 5.612e-05, 5.612e-05, 40361.86071025], [1516822260000, 5.612e-05, 5.617e-05, 5.611e-05, 5.612e-05, 4844.42426031], [1516822320000, 5.617e-05, 5.617e-05, 5.612e-05, 5.615e-05, 14356.20374589], [1516822380000, 5.616e-05, 5.616e-05, 5.612e-05, 5.615e-05, 14063.12986081], [1516822440000, 5.612e-05, 5.615e-05, 5.611e-05, 5.611e-05, 990.35615967], [1516822500000, 5.612e-05, 5.614e-05, 5.601e-05, 5.603e-05, 40332.88142115], [1516822560000, 5.611e-05, 5.614e-05, 5.601e-05, 5.601e-05, 98903.81420432], [1516822620000, 5.605e-05, 5.614e-05, 5.6e-05, 5.6e-05, 35920.27743012], [1516822680000, 5.6e-05, 5.616e-05, 5.6e-05, 5.616e-05, 17890.63553197], [1516822740000, 5.614e-05, 5.616e-05, 5.614e-05, 5.614e-05, 28935.97138633], [1516822800000, 5.614e-05, 5.615e-05, 5.61e-05, 5.615e-05, 20159.73283506], [1516822860000, 5.614e-05, 5.614e-05, 5.61e-05, 5.613e-05, 1283.49718957], [1516822920000, 5.613e-05, 5.613e-05, 5.612e-05, 5.612e-05, 4011.95619033], [1516822980000, 5.611e-05, 5.615e-05, 5.61e-05, 5.611e-05, 34857.39074883], [1516823040000, 5.613e-05, 5.614e-05, 5.61e-05, 5.614e-05, 4574.79969445], [1516823100000, 5.614e-05, 5.614e-05, 5.61e-05, 5.61e-05, 1443.34117001], [1516823160000, 5.61e-05, 5.614e-05, 5.61e-05, 5.61e-05, 61907.73089741], [1516823220000, 5.61e-05, 5.61e-05, 5.609e-05, 5.609e-05, 25252.4556202], [1516823280000, 5.608e-05, 5.61e-05, 5.601e-05, 5.61e-05, 2795.68200076], [1516823340000, 5.601e-05, 5.608e-05, 5.601e-05, 5.601e-05, 24101.01804347], [1516823400000, 5.61e-05, 5.61e-05, 5.601e-05, 5.61e-05, 45299.78878151], [1516823460000, 5.61e-05, 5.61e-05, 5.609e-05, 5.609e-05, 3980.68017828], [1516823520000, 5.609e-05, 5.614e-05, 5.6e-05, 5.61e-05, 47926.81754847], [1516823580000, 5.61e-05, 5.614e-05, 5.61e-05, 5.611e-05, 141049.22539669], [1516823640000, 5.613e-05, 5.613e-05, 5.61e-05, 5.61e-05, 3417.35724219], [1516823700000, 5.611e-05, 5.613e-05, 5.61e-05, 5.61e-05, 4194.26093614], [1516823760000, 5.61e-05, 5.611e-05, 5.61e-05, 5.61e-05, 23822.34419835], [1516823820000, 5.61e-05, 5.617e-05, 5.6e-05, 5.617e-05, 152551.94645575], [1516823880000, 5.617e-05, 5.617e-05, 5.617e-05, 5.617e-05, 2267.53983993], [1516823940000, 5.63e-05, 5.631e-05, 5.625e-05, 5.63e-05, 5505.22407556], [1516824000000, 5.625e-05, 5.629e-05, 5.617e-05, 5.617e-05, 3771.63743311], [1516824060000, 5.617e-05, 5.625e-05, 5.617e-05, 5.62e-05, 23188.50267552], [1516824120000, 5.62e-05, 5.621e-05, 5.617e-05, 5.618e-05, 13645.79746241], [1516824180000, 5.617e-05, 5.618e-05, 5.613e-05, 5.618e-05, 4602.65107181], [1516824240000, 5.617e-05, 5.618e-05, 5.613e-05, 5.613e-05, 13366.20162857], [1516824300000, 5.613e-05, 5.613e-05, 5.603e-05, 5.603e-05, 34146.64502723], [1516824360000, 5.605e-05, 5.62e-05, 5.605e-05, 5.618e-05, 73961.24756514], [1516824420000, 5.618e-05, 5.618e-05, 5.605e-05, 5.612e-05, 11094.84431448], [1516824480000, 5.612e-05, 5.617e-05, 5.608e-05, 5.617e-05, 11661.93093384], [1516824540000, 5.618e-05, 5.618e-05, 5.617e-05, 5.617e-05, 6447.41632962], [1516824600000, 5.618e-05, 5.62e-05, 5.59e-05, 5.6e-05, 31680.97056073], [1516824660000, 5.595e-05, 5.6e-05, 5.59e-05, 5.595e-05, 20650.39556577], [1516824720000, 5.59e-05, 5.595e-05, 5.585e-05, 5.595e-05, 54473.7208167], [1516824780000, 5.595e-05, 5.6e-05, 5.59e-05, 5.6e-05, 39124.43446761], [1516824840000, 5.6e-05, 5.6e-05, 5.595e-05, 5.595e-05, 5452.27714125], [1516824900000, 5.595e-05, 5.618e-05, 5.595e-05, 5.618e-05, 10012.72926291], [1516824960000, 5.599e-05, 5.62e-05, 5.594e-05, 5.618e-05, 38556.50224446], [1516825020000, 5.595e-05, 5.617e-05, 5.595e-05, 5.595e-05, 4854.89547451], [1516825080000, 5.61e-05, 5.617e-05, 5.601e-05, 5.601e-05, 5686.51810246], [1516825140000, 5.61e-05, 5.616e-05, 5.61e-05, 5.616e-05, 30876.36449588], [1516825200000, 5.617e-05, 5.62e-05, 5.616e-05, 5.62e-05, 14262.58191556], [1516825260000, 5.622e-05, 5.64e-05, 5.61e-05, 5.64e-05, 72085.61754971], [1516825320000, 5.635e-05, 5.64e-05, 5.62e-05, 5.64e-05, 9915.21656425], [1516825380000, 5.634e-05, 5.64e-05, 5.62e-05, 5.635e-05, 13728.72214727], [1516825440000, 5.635e-05, 5.65e-05, 5.635e-05, 5.649e-05, 248383.79115733], [1516825500000, 5.642e-05, 5.649e-05, 5.642e-05, 5.644e-05, 32138.82914229], [1516825560000, 5.644e-05, 5.649e-05, 5.643e-05, 5.648e-05, 9947.32854979], [1516825620000, 5.648e-05, 5.648e-05, 5.645e-05, 5.647e-05, 8246.66344006], [1516825680000, 5.647e-05, 5.647e-05, 5.633e-05, 5.633e-05, 32566.98891088], [1516825740000, 5.646e-05, 5.647e-05, 5.633e-05, 5.647e-05, 24392.04073975], [1516825800000, 5.646e-05, 5.647e-05, 5.637e-05, 5.647e-05, 20650.09235402], [1516825860000, 5.647e-05, 5.647e-05, 5.633e-05, 5.647e-05, 30192.46895614], [1516825920000, 5.647e-05, 5.653e-05, 5.647e-05, 5.652e-05, 151296.55641312], [1516825980000, 5.652e-05, 5.66e-05, 5.652e-05, 5.66e-05, 48488.54043475], [1516826040000, 5.66e-05, 5.66e-05, 5.659e-05, 5.659e-05, 45612.48371735], [1516826100000, 5.659e-05, 5.66e-05, 5.657e-05, 5.659e-05, 49622.51318456], [1516826160000, 5.66e-05, 5.661e-05, 5.654e-05, 5.655e-05, 7706.67057573], [1516826220000, 5.655e-05, 5.661e-05, 5.654e-05, 5.66e-05, 29896.50198685], [1516826280000, 5.657e-05, 5.661e-05, 5.655e-05, 5.661e-05, 16211.21128466], [1516826340000, 5.661e-05, 5.661e-05, 5.655e-05, 5.656e-05, 7125.81646306], [1516826400000, 5.656e-05, 5.658e-05, 5.652e-05, 5.652e-05, 22473.42039923], [1516826460000, 5.652e-05, 5.661e-05, 5.652e-05, 5.655e-05, 13822.56943056], [1516826520000, 5.655e-05, 5.661e-05, 5.651e-05, 5.656e-05, 9592.11564025], [1516826580000, 5.661e-05, 5.661e-05, 5.656e-05, 5.661e-05, 66392.98637054], [1516826640000, 5.66e-05, 5.661e-05, 5.656e-05, 5.661e-05, 43826.17953428], [1516826700000, 5.661e-05, 5.661e-05, 5.657e-05, 5.66e-05, 37482.18591595], [1516826760000, 5.66e-05, 5.661e-05, 5.658e-05, 5.661e-05, 46121.16656567], [1516826820000, 5.661e-05, 5.661e-05, 5.659e-05, 5.661e-05, 50062.9034861], [1516826880000, 5.661e-05, 5.663e-05, 5.659e-05, 5.659e-05, 23727.45074592], [1516826940000, 5.663e-05, 5.666e-05, 5.659e-05, 5.666e-05, 3437.99485152], [1516827000000, 5.666e-05, 5.671e-05, 5.666e-05, 5.671e-05, 11403.50477979], [1516827060000, 5.67e-05, 5.671e-05, 5.67e-05, 5.67e-05, 28327.35506951], [1516827120000, 5.67e-05, 5.67e-05, 5.621e-05, 5.667e-05, 82058.96377484], [1516827180000, 5.667e-05, 5.667e-05, 5.605e-05, 5.64e-05, 61401.32775347], [1516827240000, 5.64e-05, 5.66e-05, 5.607e-05, 5.617e-05, 86824.76984466], [1516827300000, 5.617e-05, 5.65e-05, 5.605e-05, 5.64e-05, 21424.78734117], [1516827360000, 5.64e-05, 5.64e-05, 5.616e-05, 5.62e-05, 26777.55082669], [1516827420000, 5.62e-05, 5.64e-05, 5.616e-05, 5.62e-05, 22153.40311792], [1516827480000, 5.616e-05, 5.646e-05, 5.611e-05, 5.646e-05, 74446.89997551], [1516827540000, 5.617e-05, 5.646e-05, 5.616e-05, 5.63e-05, 17562.59648298], [1516827600000, 5.63e-05, 5.637e-05, 5.63e-05, 5.63e-05, 28561.1313357], [1516827660000, 5.636e-05, 5.636e-05, 5.63e-05, 5.63e-05, 57811.31228517], [1516827720000, 5.63e-05, 5.636e-05, 5.621e-05, 5.63e-05, 5586.53635614], [1516827780000, 5.621e-05, 5.63e-05, 5.621e-05, 5.63e-05, 10323.27923074], [1516827840000, 5.629e-05, 5.631e-05, 5.629e-05, 5.631e-05, 18392.98054935], [1516827900000, 5.63e-05, 5.632e-05, 5.63e-05, 5.632e-05, 21108.07302627], [1516827960000, 5.631e-05, 5.639e-05, 5.631e-05, 5.639e-05, 6175.8487508], [1516828020000, 5.638e-05, 5.639e-05, 5.632e-05, 5.638e-05, 10900.21243292], [1516828080000, 5.638e-05, 5.639e-05, 5.638e-05, 5.639e-05, 22847.22685927], [1516828140000, 5.639e-05, 5.646e-05, 5.631e-05, 5.639e-05, 27040.15996591], [1516828200000, 5.632e-05, 5.645e-05, 5.62e-05, 5.638e-05, 35750.20199715], [1516828260000, 5.638e-05, 5.638e-05, 5.622e-05, 5.638e-05, 8558.37889163], [1516828320000, 5.622e-05, 5.622e-05, 5.608e-05, 5.621e-05, 45100.42206589], [1516828380000, 5.621e-05, 5.621e-05, 5.615e-05, 5.621e-05, 29404.36510673], [1516828440000, 5.621e-05, 5.622e-05, 5.601e-05, 5.621e-05, 30578.19254448], [1516828500000, 5.621e-05, 5.635e-05, 5.602e-05, 5.635e-05, 13177.56721809], [1516828560000, 5.637e-05, 5.638e-05, 5.601e-05, 5.634e-05, 48444.64227169], [1516828620000, 5.634e-05, 5.634e-05, 5.614e-05, 5.622e-05, 17511.96211234], [1516828680000, 5.615e-05, 5.622e-05, 5.607e-05, 5.622e-05, 51729.22484188], [1516828740000, 5.615e-05, 5.622e-05, 5.608e-05, 5.608e-05, 41721.22163437], [1516828800000, 5.61e-05, 5.622e-05, 5.607e-05, 5.621e-05, 10205.28126851], [1516828860000, 5.621e-05, 5.621e-05, 5.611e-05, 5.619e-05, 5550.79645322], [1516828920000, 5.619e-05, 5.62e-05, 5.607e-05, 5.62e-05, 7901.80662821], [1516828980000, 5.619e-05, 5.621e-05, 5.608e-05, 5.615e-05, 16347.92083055], [1516829040000, 5.621e-05, 5.621e-05, 5.615e-05, 5.616e-05, 12207.96348738], [1516829100000, 5.616e-05, 5.629e-05, 5.616e-05, 5.629e-05, 66115.77735139], [1516829160000, 5.629e-05, 5.63e-05, 5.622e-05, 5.622e-05, 11623.21491895], [1516829220000, 5.631e-05, 5.634e-05, 5.631e-05, 5.634e-05, 15180.5867911], [1516829280000, 5.634e-05, 5.639e-05, 5.632e-05, 5.632e-05, 26661.37845153], [1516829340000, 5.632e-05, 5.638e-05, 5.62e-05, 5.638e-05, 4913.16233647], [1516829400000, 5.633e-05, 5.639e-05, 5.62e-05, 5.622e-05, 7555.3303179], [1516829460000, 5.622e-05, 5.622e-05, 5.62e-05, 5.62e-05, 11987.07435308], [1516829520000, 5.62e-05, 5.62e-05, 5.609e-05, 5.618e-05, 20528.11944334], [1516829580000, 5.61e-05, 5.619e-05, 5.609e-05, 5.61e-05, 90999.11422879], [1516829640000, 5.61e-05, 5.619e-05, 5.61e-05, 5.613e-05, 9426.98634615], [1516829700000, 5.615e-05, 5.619e-05, 5.61e-05, 5.61e-05, 40065.08364954], [1516829760000, 5.61e-05, 5.622e-05, 5.61e-05, 5.622e-05, 30653.68417987], [1516829820000, 5.613e-05, 5.632e-05, 5.61e-05, 5.632e-05, 21022.70469978], [1516829880000, 5.611e-05, 5.611e-05, 5.61e-05, 5.61e-05, 8510.13958595], [1516829940000, 5.615e-05, 5.632e-05, 5.607e-05, 5.625e-05, 54011.56598725], [1516830000000, 5.625e-05, 5.631e-05, 5.587e-05, 5.59e-05, 92605.66943067], [1516830060000, 5.59e-05, 5.6e-05, 5.587e-05, 5.6e-05, 14528.85125722], [1516830120000, 5.587e-05, 5.604e-05, 5.579e-05, 5.58e-05, 20725.82583017], [1516830180000, 5.599e-05, 5.599e-05, 5.58e-05, 5.583e-05, 19301.6093079], [1516830240000, 5.599e-05, 5.599e-05, 5.571e-05, 5.589e-05, 65042.88945531], [1516830300000, 5.582e-05, 5.589e-05, 5.581e-05, 5.588e-05, 18270.29820318], [1516830360000, 5.589e-05, 5.599e-05, 5.589e-05, 5.592e-05, 58643.96504858], [1516830420000, 5.593e-05, 5.606e-05, 5.593e-05, 5.606e-05, 76549.95999784], [1516830480000, 5.608e-05, 5.615e-05, 5.608e-05, 5.608e-05, 5466.9042867], [1516830540000, 5.608e-05, 5.608e-05, 5.601e-05, 5.602e-05, 26470.74410423], [1516830600000, 5.601e-05, 5.608e-05, 5.601e-05, 5.608e-05, 14311.54842828], [1516830660000, 5.602e-05, 5.61e-05, 5.6e-05, 5.6e-05, 26383.43522983], [1516830720000, 5.6e-05, 5.61e-05, 5.592e-05, 5.61e-05, 35240.27411398], [1516830780000, 5.593e-05, 5.61e-05, 5.593e-05, 5.609e-05, 4925.8550789], [1516830840000, 5.609e-05, 5.611e-05, 5.6e-05, 5.6e-05, 10718.20086206], [1516830900000, 5.6e-05, 5.62e-05, 5.592e-05, 5.62e-05, 21517.3832144], [1516830960000, 5.62e-05, 5.62e-05, 5.615e-05, 5.615e-05, 5239.16920064], [1516831020000, 5.611e-05, 5.619e-05, 5.611e-05, 5.619e-05, 6381.78888998], [1516831080000, 5.618e-05, 5.618e-05, 5.611e-05, 5.615e-05, 20436.8358686], [1516831140000, 5.611e-05, 5.615e-05, 5.61e-05, 5.61e-05, 28158.47433108], [1516831200000, 5.61e-05, 5.611e-05, 5.6e-05, 5.6e-05, 20511.88986568], [1516831260000, 5.61e-05, 5.61e-05, 5.593e-05, 5.597e-05, 10935.48188243], [1516831320000, 5.597e-05, 5.61e-05, 5.59e-05, 5.61e-05, 30260.26320605], [1516831380000, 5.611e-05, 5.612e-05, 5.609e-05, 5.612e-05, 12862.18566808], [1516831440000, 5.611e-05, 5.612e-05, 5.61e-05, 5.611e-05, 15488.64411512], [1516831500000, 5.605e-05, 5.612e-05, 5.605e-05, 5.605e-05, 3357.32262131], [1516831560000, 5.6e-05, 5.6e-05, 5.598e-05, 5.6e-05, 3154.24361376], [1516831620000, 5.6e-05, 5.6e-05, 5.59e-05, 5.597e-05, 37944.65867228], [1516831680000, 5.597e-05, 5.597e-05, 5.589e-05, 5.596e-05, 30994.76028894], [1516831740000, 5.596e-05, 5.6e-05, 5.596e-05, 5.6e-05, 32776.43347452], [1516831800000, 5.597e-05, 5.6e-05, 5.593e-05, 5.593e-05, 23575.66471966], [1516831860000, 5.593e-05, 5.6e-05, 5.572e-05, 5.595e-05, 62454.14684883], [1516831920000, 5.582e-05, 5.595e-05, 5.573e-05, 5.574e-05, 11917.92457063], [1516831980000, 5.574e-05, 5.592e-05, 5.574e-05, 5.591e-05, 6068.80341764], [1516832040000, 5.591e-05, 5.6e-05, 5.59e-05, 5.6e-05, 33454.29622778], [1516832100000, 5.598e-05, 5.598e-05, 5.59e-05, 5.592e-05, 139137.60297652], [1516832160000, 5.592e-05, 5.592e-05, 5.57e-05, 5.57e-05, 96447.43748832], [1516832220000, 5.573e-05, 5.573e-05, 5.534e-05, 5.534e-05, 137745.08840457], [1516832280000, 5.534e-05, 5.534e-05, 5.501e-05, 5.512e-05, 537037.62294021], [1516832340000, 5.511e-05, 5.528e-05, 5.51e-05, 5.528e-05, 23165.28025365], [1516832400000, 5.528e-05, 5.56e-05, 5.509e-05, 5.509e-05, 58554.89018678], [1516832460000, 5.512e-05, 5.557e-05, 5.509e-05, 5.546e-05, 25164.74968464], [1516832520000, 5.525e-05, 5.546e-05, 5.521e-05, 5.521e-05, 69741.4014847], [1516832580000, 5.521e-05, 5.539e-05, 5.517e-05, 5.517e-05, 25145.68407854], [1516832640000, 5.52e-05, 5.539e-05, 5.517e-05, 5.539e-05, 17959.04324807], [1516832700000, 5.539e-05, 5.552e-05, 5.519e-05, 5.539e-05, 26062.99143162], [1516832760000, 5.552e-05, 5.552e-05, 5.539e-05, 5.55e-05, 19998.73094957], [1516832820000, 5.549e-05, 5.55e-05, 5.539e-05, 5.55e-05, 21390.09259432], [1516832880000, 5.55e-05, 5.551e-05, 5.55e-05, 5.55e-05, 8238.36322282], [1516832940000, 5.551e-05, 5.552e-05, 5.55e-05, 5.551e-05, 17766.34026927], [1516833000000, 5.55e-05, 5.561e-05, 5.55e-05, 5.552e-05, 14068.70308458], [1516833060000, 5.553e-05, 5.567e-05, 5.552e-05, 5.552e-05, 64446.22310432], [1516833120000, 5.567e-05, 5.567e-05, 5.52e-05, 5.521e-05, 151222.86959815], [1516833180000, 5.558e-05, 5.558e-05, 5.52e-05, 5.547e-05, 17328.56755191], [1516833240000, 5.532e-05, 5.547e-05, 5.532e-05, 5.532e-05, 15185.2658244], [1516833300000, 5.532e-05, 5.542e-05, 5.52e-05, 5.532e-05, 37130.69979774], [1516833360000, 5.522e-05, 5.532e-05, 5.52e-05, 5.53e-05, 29836.7756754], [1516833420000, 5.53e-05, 5.53e-05, 5.516e-05, 5.519e-05, 194136.11294913], [1516833480000, 5.516e-05, 5.517e-05, 5.5e-05, 5.517e-05, 40548.9846402], [1516833540000, 5.517e-05, 5.517e-05, 5.492e-05, 5.514e-05, 170523.90436652], [1516833600000, 5.514e-05, 5.515e-05, 5.497e-05, 5.499e-05, 8358.90871021], [1516833660000, 5.493e-05, 5.5e-05, 5.493e-05, 5.498e-05, 6682.32841969], [1516833720000, 5.494e-05, 5.497e-05, 5.492e-05, 5.492e-05, 9624.30979093], [1516833780000, 5.49e-05, 5.49e-05, 5.484e-05, 5.488e-05, 87157.66961424], [1516833840000, 5.485e-05, 5.488e-05, 5.446e-05, 5.456e-05, 268889.83162985], [1516833900000, 5.456e-05, 5.46e-05, 5.456e-05, 5.458e-05, 39250.37329669], [1516833960000, 5.459e-05, 5.46e-05, 5.458e-05, 5.458e-05, 19916.24120471], [1516834020000, 5.458e-05, 5.459e-05, 5.456e-05, 5.458e-05, 38693.07454908], [1516834080000, 5.458e-05, 5.462e-05, 5.456e-05, 5.461e-05, 102637.84874145], [1516834140000, 5.461e-05, 5.489e-05, 5.461e-05, 5.485e-05, 57863.35812334], [1516834200000, 5.486e-05, 5.49e-05, 5.486e-05, 5.488e-05, 38340.52930136], [1516834260000, 5.488e-05, 5.488e-05, 5.46e-05, 5.488e-05, 71402.92630696], [1516834320000, 5.488e-05, 5.488e-05, 5.46e-05, 5.48e-05, 14192.04989644], [1516834380000, 5.48e-05, 5.48e-05, 5.46e-05, 5.47e-05, 26958.21068069], [1516834440000, 5.462e-05, 5.487e-05, 5.462e-05, 5.487e-05, 16524.95434784], [1516834500000, 5.487e-05, 5.488e-05, 5.47e-05, 5.488e-05, 23177.57498587], [1516834560000, 5.488e-05, 5.491e-05, 5.488e-05, 5.49e-05, 30696.98180183], [1516834620000, 5.494e-05, 5.498e-05, 5.492e-05, 5.498e-05, 13543.53058261], [1516834680000, 5.499e-05, 5.5e-05, 5.49e-05, 5.496e-05, 19869.93416942], [1516834740000, 5.496e-05, 5.496e-05, 5.489e-05, 5.49e-05, 7732.71662532], [1516834800000, 5.489e-05, 5.49e-05, 5.474e-05, 5.474e-05, 9084.44743421], [1516834860000, 5.485e-05, 5.486e-05, 5.47e-05, 5.47e-05, 25675.44902825], [1516834920000, 5.47e-05, 5.483e-05, 5.47e-05, 5.472e-05, 53452.85322513], [1516834980000, 5.472e-05, 5.499e-05, 5.471e-05, 5.499e-05, 60112.84497133], [1516835040000, 5.498e-05, 5.5e-05, 5.498e-05, 5.5e-05, 22094.15083068], [1516835100000, 5.5e-05, 5.528e-05, 5.498e-05, 5.527e-05, 40970.18393479], [1516835160000, 5.511e-05, 5.53e-05, 5.51e-05, 5.53e-05, 210120.88086498], [1516835220000, 5.517e-05, 5.54e-05, 5.512e-05, 5.54e-05, 411264.4984043], [1516835280000, 5.541e-05, 5.575e-05, 5.541e-05, 5.55e-05, 55884.20963551], [1516835340000, 5.555e-05, 5.555e-05, 5.501e-05, 5.55e-05, 46010.42016986], [1516835400000, 5.55e-05, 5.55e-05, 5.531e-05, 5.549e-05, 7577.57812306], [1516835460000, 5.549e-05, 5.549e-05, 5.533e-05, 5.535e-05, 3663.45018767], [1516835520000, 5.535e-05, 5.535e-05, 5.531e-05, 5.531e-05, 8029.75608269], [1516835580000, 5.531e-05, 5.532e-05, 5.527e-05, 5.527e-05, 21258.71912397], [1516835640000, 5.527e-05, 5.527e-05, 5.505e-05, 5.527e-05, 14755.44076849], [1516835700000, 5.527e-05, 5.527e-05, 5.505e-05, 5.505e-05, 30370.45999285], [1516835760000, 5.505e-05, 5.517e-05, 5.498e-05, 5.517e-05, 10395.86427161], [1516835820000, 5.516e-05, 5.517e-05, 5.516e-05, 5.517e-05, 3929.84764436], [1516835880000, 5.509e-05, 5.517e-05, 5.507e-05, 5.508e-05, 22841.11128776], [1516835940000, 5.516e-05, 5.517e-05, 5.508e-05, 5.516e-05, 3815.07981697], [1516836000000, 5.516e-05, 5.516e-05, 5.508e-05, 5.513e-05, 2509.50488181], [1516836060000, 5.515e-05, 5.516e-05, 5.508e-05, 5.515e-05, 17856.07225015], [1516836120000, 5.516e-05, 5.52e-05, 5.513e-05, 5.517e-05, 56419.50332125], [1516836180000, 5.52e-05, 5.52e-05, 5.509e-05, 5.515e-05, 4296.34109229], [1516836240000, 5.51e-05, 5.52e-05, 5.51e-05, 5.52e-05, 48577.63739445], [1516836300000, 5.519e-05, 5.519e-05, 5.514e-05, 5.517e-05, 9854.88256044], [1516836360000, 5.517e-05, 5.529e-05, 5.514e-05, 5.529e-05, 69148.95386057], [1516836420000, 5.529e-05, 5.55e-05, 5.529e-05, 5.531e-05, 20087.17937127], [1516836480000, 5.533e-05, 5.55e-05, 5.531e-05, 5.55e-05, 12401.16632734], [1516836540000, 5.534e-05, 5.568e-05, 5.534e-05, 5.566e-05, 57440.27827428], [1516836600000, 5.566e-05, 5.568e-05, 5.535e-05, 5.555e-05, 22402.56905152], [1516836660000, 5.554e-05, 5.554e-05, 5.536e-05, 5.536e-05, 7412.0487816], [1516836720000, 5.54e-05, 5.554e-05, 5.534e-05, 5.534e-05, 13169.52473774], [1516836780000, 5.534e-05, 5.55e-05, 5.534e-05, 5.54e-05, 38048.61508365], [1516836840000, 5.554e-05, 5.555e-05, 5.541e-05, 5.541e-05, 9221.92602327], [1516836900000, 5.541e-05, 5.586e-05, 5.541e-05, 5.567e-05, 86154.5666172], [1516836960000, 5.567e-05, 5.6e-05, 5.567e-05, 5.6e-05, 94784.40172144], [1516837020000, 5.572e-05, 5.598e-05, 5.572e-05, 5.596e-05, 25440.51722993], [1516837080000, 5.598e-05, 5.6e-05, 5.598e-05, 5.6e-05, 44160.77323137], [1516837140000, 5.6e-05, 5.612e-05, 5.57e-05, 5.586e-05, 54053.52059832], [1516837200000, 5.604e-05, 5.61e-05, 5.586e-05, 5.586e-05, 46405.7932593], [1516837260000, 5.589e-05, 5.604e-05, 5.586e-05, 5.6e-05, 50828.99887448], [1516837320000, 5.6e-05, 5.605e-05, 5.6e-05, 5.6e-05, 83444.15904368], [1516837380000, 5.6e-05, 5.606e-05, 5.58e-05, 5.586e-05, 55598.05241697], [1516837440000, 5.58e-05, 5.586e-05, 5.57e-05, 5.586e-05, 15261.20707538], [1516837500000, 5.586e-05, 5.587e-05, 5.56e-05, 5.56e-05, 50217.88931426], [1516837560000, 5.582e-05, 5.582e-05, 5.575e-05, 5.581e-05, 6884.98809711], [1516837620000, 5.58e-05, 5.581e-05, 5.569e-05, 5.57e-05, 7435.77322289], [1516837680000, 5.57e-05, 5.57e-05, 5.56e-05, 5.57e-05, 14192.27256708], [1516837740000, 5.569e-05, 5.57e-05, 5.565e-05, 5.565e-05, 6564.20368708], [1516837800000, 5.565e-05, 5.566e-05, 5.56e-05, 5.565e-05, 19310.24549173], [1516837860000, 5.565e-05, 5.565e-05, 5.56e-05, 5.56e-05, 10854.62904861], [1516837920000, 5.563e-05, 5.566e-05, 5.541e-05, 5.541e-05, 84331.7412535], [1516837980000, 5.536e-05, 5.541e-05, 5.529e-05, 5.541e-05, 3863.49767141], [1516838040000, 5.529e-05, 5.541e-05, 5.529e-05, 5.541e-05, 10965.71358804], [1516838100000, 5.54e-05, 5.549e-05, 5.54e-05, 5.54e-05, 12659.73474716], [1516838160000, 5.548e-05, 5.55e-05, 5.512e-05, 5.539e-05, 30324.09445781], [1516838220000, 5.54e-05, 5.54e-05, 5.522e-05, 5.53e-05, 20847.97699304], [1516838280000, 5.534e-05, 5.56e-05, 5.534e-05, 5.536e-05, 31841.49718643], [1516838340000, 5.536e-05, 5.56e-05, 5.53e-05, 5.53e-05, 47953.11597458], [1516838400000, 5.523e-05, 5.53e-05, 5.514e-05, 5.516e-05, 25131.03509768], [1516838460000, 5.514e-05, 5.535e-05, 5.503e-05, 5.503e-05, 65447.40394865], [1516838520000, 5.508e-05, 5.55e-05, 5.503e-05, 5.53e-05, 45052.4804583], [1516838580000, 5.53e-05, 5.629e-05, 5.53e-05, 5.625e-05, 340218.48088718], [1516838640000, 5.629e-05, 5.65e-05, 5.58e-05, 5.634e-05, 378126.03406723], [1516838700000, 5.634e-05, 5.635e-05, 5.58e-05, 5.588e-05, 79181.59546999], [1516838760000, 5.6e-05, 5.641e-05, 5.6e-05, 5.641e-05, 129921.35970732], [1516838820000, 5.641e-05, 5.65e-05, 5.602e-05, 5.614e-05, 225029.53332152], [1516838880000, 5.614e-05, 5.65e-05, 5.614e-05, 5.649e-05, 40965.05860478], [1516838940000, 5.629e-05, 5.649e-05, 5.588e-05, 5.6e-05, 226371.27269148], [1516839000000, 5.589e-05, 5.6e-05, 5.588e-05, 5.592e-05, 14964.4521333], [1516839060000, 5.6e-05, 5.648e-05, 5.592e-05, 5.629e-05, 16845.83033307], [1516839120000, 5.629e-05, 5.629e-05, 5.6e-05, 5.627e-05, 27194.09710888], [1516839180000, 5.61e-05, 5.625e-05, 5.601e-05, 5.61e-05, 24421.0289723], [1516839240000, 5.625e-05, 5.625e-05, 5.601e-05, 5.601e-05, 12522.0974979], [1516839300000, 5.602e-05, 5.618e-05, 5.601e-05, 5.609e-05, 12269.059843], [1516839360000, 5.609e-05, 5.61e-05, 5.606e-05, 5.609e-05, 4095.87857251], [1516839420000, 5.609e-05, 5.61e-05, 5.606e-05, 5.606e-05, 23722.961954], [1516839480000, 5.609e-05, 5.61e-05, 5.606e-05, 5.606e-05, 17509.6877536], [1516839540000, 5.609e-05, 5.609e-05, 5.606e-05, 5.609e-05, 58102.465982], [1516839600000, 5.609e-05, 5.618e-05, 5.607e-05, 5.607e-05, 24461.66754659], [1516839660000, 5.609e-05, 5.609e-05, 5.607e-05, 5.607e-05, 11015.15026662], [1516839720000, 5.607e-05, 5.607e-05, 5.605e-05, 5.607e-05, 45972.7620808], [1516839780000, 5.606e-05, 5.609e-05, 5.605e-05, 5.607e-05, 24602.85311814], [1516839840000, 5.605e-05, 5.61e-05, 5.597e-05, 5.597e-05, 110301.18598319], [1516839900000, 5.597e-05, 5.612e-05, 5.592e-05, 5.61e-05, 34744.30197929], [1516839960000, 5.605e-05, 5.61e-05, 5.589e-05, 5.59e-05, 24791.38827607], [1516840020000, 5.59e-05, 5.591e-05, 5.58e-05, 5.591e-05, 18431.1271052], [1516840080000, 5.59e-05, 5.591e-05, 5.59e-05, 5.591e-05, 17049.63623397], [1516840140000, 5.591e-05, 5.591e-05, 5.59e-05, 5.591e-05, 12056.31123475], [1516840200000, 5.591e-05, 5.609e-05, 5.591e-05, 5.591e-05, 17480.76273966], [1516840260000, 5.609e-05, 5.612e-05, 5.6e-05, 5.6e-05, 16569.67641972], [1516840320000, 5.6e-05, 5.611e-05, 5.59e-05, 5.591e-05, 31739.93321175], [1516840380000, 5.591e-05, 5.609e-05, 5.591e-05, 5.608e-05, 18499.35523952], [1516840440000, 5.592e-05, 5.608e-05, 5.558e-05, 5.59e-05, 74380.11089374], [1516840500000, 5.59e-05, 5.6e-05, 5.56e-05, 5.577e-05, 19810.65864995], [1516840560000, 5.577e-05, 5.577e-05, 5.558e-05, 5.571e-05, 32471.79426114], [1516840620000, 5.57e-05, 5.571e-05, 5.559e-05, 5.569e-05, 46116.19888496], [1516840680000, 5.569e-05, 5.57e-05, 5.55e-05, 5.564e-05, 32003.05947745], [1516840740000, 5.562e-05, 5.568e-05, 5.562e-05, 5.568e-05, 47122.0563302], [1516840800000, 5.568e-05, 5.569e-05, 5.564e-05, 5.568e-05, 21747.72912886], [1516840860000, 5.568e-05, 5.607e-05, 5.564e-05, 5.607e-05, 202654.22784275], [1516840920000, 5.569e-05, 5.569e-05, 5.55e-05, 5.565e-05, 41697.03655842], [1516840980000, 5.565e-05, 5.565e-05, 5.551e-05, 5.563e-05, 19373.06308588], [1516841040000, 5.563e-05, 5.565e-05, 5.552e-05, 5.565e-05, 21818.30243499], [1516841100000, 5.563e-05, 5.565e-05, 5.552e-05, 5.56e-05, 81702.71370073], [1516841160000, 5.553e-05, 5.56e-05, 5.551e-05, 5.551e-05, 109417.95713937], [1516841220000, 5.552e-05, 5.552e-05, 5.546e-05, 5.546e-05, 26013.8082856], [1516841280000, 5.55e-05, 5.56e-05, 5.546e-05, 5.56e-05, 8404.15824023], [1516841340000, 5.56e-05, 5.56e-05, 5.55e-05, 5.55e-05, 25545.42531363], [1516841400000, 5.55e-05, 5.55e-05, 5.54e-05, 5.54e-05, 15546.75513919], [1516841460000, 5.54e-05, 5.55e-05, 5.526e-05, 5.534e-05, 32443.39319671], [1516841520000, 5.534e-05, 5.534e-05, 5.525e-05, 5.534e-05, 69476.00039344], [1516841580000, 5.534e-05, 5.534e-05, 5.525e-05, 5.529e-05, 5516.38379607], [1516841640000, 5.526e-05, 5.532e-05, 5.525e-05, 5.525e-05, 111252.06867399], [1516841700000, 5.525e-05, 5.525e-05, 5.5e-05, 5.505e-05, 46915.17582056], [1516841760000, 5.503e-05, 5.521e-05, 5.498e-05, 5.5e-05, 75671.22770731], [1516841820000, 5.5e-05, 5.5e-05, 5.497e-05, 5.499e-05, 39083.43894124], [1516841880000, 5.5e-05, 5.5e-05, 5.495e-05, 5.499e-05, 75979.51113124], [1516841940000, 5.496e-05, 5.5e-05, 5.495e-05, 5.499e-05, 15142.59807659], [1516842000000, 5.498e-05, 5.499e-05, 5.478e-05, 5.499e-05, 14400.71313621], [1516842060000, 5.499e-05, 5.499e-05, 5.492e-05, 5.499e-05, 1744.38775204], [1516842120000, 5.499e-05, 5.499e-05, 5.494e-05, 5.495e-05, 16771.29871079], [1516842180000, 5.498e-05, 5.5e-05, 5.495e-05, 5.5e-05, 28192.16953559], [1516842240000, 5.5e-05, 5.523e-05, 5.5e-05, 5.52e-05, 9018.70788674], [1516842300000, 5.52e-05, 5.52e-05, 5.501e-05, 5.52e-05, 2501.67833802], [1516842360000, 5.52e-05, 5.52e-05, 5.518e-05, 5.52e-05, 28690.27192431], [1516842420000, 5.52e-05, 5.52e-05, 5.518e-05, 5.518e-05, 14069.55555212], [1516842480000, 5.518e-05, 5.519e-05, 5.503e-05, 5.519e-05, 9517.58758665], [1516842540000, 5.518e-05, 5.519e-05, 5.504e-05, 5.518e-05, 28414.0549827], [1516842600000, 5.518e-05, 5.532e-05, 5.518e-05, 5.532e-05, 34102.94981408], [1516842660000, 5.532e-05, 5.532e-05, 5.53e-05, 5.532e-05, 8020.21284693], [1516842720000, 5.532e-05, 5.55e-05, 5.532e-05, 5.55e-05, 20196.48897747], [1516842780000, 5.55e-05, 5.569e-05, 5.544e-05, 5.549e-05, 133761.42863087], [1516842840000, 5.55e-05, 5.559e-05, 5.55e-05, 5.559e-05, 17098.72696834], [1516842900000, 5.55e-05, 5.55e-05, 5.549e-05, 5.55e-05, 10903.7005566], [1516842960000, 5.551e-05, 5.558e-05, 5.55e-05, 5.55e-05, 29676.20598559], [1516843020000, 5.55e-05, 5.55e-05, 5.54e-05, 5.54e-05, 2417.23932961], [1516843080000, 5.541e-05, 5.549e-05, 5.541e-05, 5.542e-05, 31688.03657389], [1516843140000, 5.542e-05, 5.55e-05, 5.542e-05, 5.55e-05, 26078.47812145], [1516843200000, 5.549e-05, 5.55e-05, 5.543e-05, 5.55e-05, 50258.62875543], [1516843260000, 5.545e-05, 5.558e-05, 5.543e-05, 5.558e-05, 36593.47128905], [1516843320000, 5.558e-05, 5.558e-05, 5.543e-05, 5.558e-05, 6915.0795528], [1516843380000, 5.549e-05, 5.549e-05, 5.543e-05, 5.549e-05, 47828.84346428], [1516843440000, 5.558e-05, 5.56e-05, 5.544e-05, 5.551e-05, 19559.26823236], [1516843500000, 5.545e-05, 5.569e-05, 5.545e-05, 5.55e-05, 4269.63090368], [1516843560000, 5.558e-05, 5.574e-05, 5.551e-05, 5.555e-05, 7938.07057855], [1516843620000, 5.555e-05, 5.58e-05, 5.551e-05, 5.551e-05, 1527.55949922], [1516843680000, 5.551e-05, 5.555e-05, 5.55e-05, 5.555e-05, 96380.12851899], [1516843740000, 5.55e-05, 5.555e-05, 5.55e-05, 5.555e-05, 3565.57194752], [1516843800000, 5.552e-05, 5.555e-05, 5.55e-05, 5.555e-05, 21668.88325353], [1516843860000, 5.555e-05, 5.555e-05, 5.547e-05, 5.555e-05, 154738.94881182], [1516843920000, 5.555e-05, 5.555e-05, 5.547e-05, 5.554e-05, 26976.67934642], [1516843980000, 5.554e-05, 5.555e-05, 5.543e-05, 5.547e-05, 70821.91263132], [1516844040000, 5.553e-05, 5.555e-05, 5.547e-05, 5.555e-05, 97972.47240393], [1516844100000, 5.549e-05, 5.555e-05, 5.542e-05, 5.546e-05, 62566.59185928], [1516844160000, 5.542e-05, 5.55e-05, 5.542e-05, 5.546e-05, 52025.44728308], [1516844220000, 5.546e-05, 5.555e-05, 5.542e-05, 5.548e-05, 195074.74034094], [1516844280000, 5.552e-05, 5.555e-05, 5.548e-05, 5.55e-05, 147814.48268255], [1516844340000, 5.55e-05, 5.554e-05, 5.546e-05, 5.546e-05, 54798.31385785], [1516844400000, 5.548e-05, 5.555e-05, 5.546e-05, 5.549e-05, 107220.11798428], [1516844460000, 5.548e-05, 5.555e-05, 5.548e-05, 5.554e-05, 171280.78971584], [1516844520000, 5.554e-05, 5.555e-05, 5.548e-05, 5.549e-05, 58535.61254484], [1516844580000, 5.549e-05, 5.549e-05, 5.547e-05, 5.547e-05, 53961.00369557], [1516844640000, 5.547e-05, 5.549e-05, 5.546e-05, 5.549e-05, 74534.85365351], [1516844700000, 5.549e-05, 5.549e-05, 5.546e-05, 5.546e-05, 66362.51183034], [1516844760000, 5.547e-05, 5.549e-05, 5.546e-05, 5.546e-05, 53838.86799126], [1516844820000, 5.547e-05, 5.549e-05, 5.546e-05, 5.546e-05, 135521.4754713], [1516844880000, 5.548e-05, 5.549e-05, 5.546e-05, 5.546e-05, 38344.24110204], [1516844940000, 5.547e-05, 5.555e-05, 5.546e-05, 5.549e-05, 92202.29385233], [1516845000000, 5.546e-05, 5.548e-05, 5.544e-05, 5.548e-05, 36164.42225334], [1516845060000, 5.546e-05, 5.548e-05, 5.524e-05, 5.543e-05, 15573.37043359], [1516845120000, 5.543e-05, 5.546e-05, 5.542e-05, 5.542e-05, 9433.95154353], [1516845180000, 5.544e-05, 5.544e-05, 5.501e-05, 5.504e-05, 48826.88896751], [1516845240000, 5.524e-05, 5.541e-05, 5.524e-05, 5.524e-05, 19272.12000893], [1516845300000, 5.524e-05, 5.543e-05, 5.51e-05, 5.542e-05, 22546.30078278], [1516845360000, 5.542e-05, 5.542e-05, 5.541e-05, 5.542e-05, 25750.94191255], [1516845420000, 5.542e-05, 5.542e-05, 5.527e-05, 5.527e-05, 37541.21916852], [1516845480000, 5.529e-05, 5.542e-05, 5.529e-05, 5.54e-05, 92690.94104058], [1516845540000, 5.54e-05, 5.542e-05, 5.532e-05, 5.542e-05, 105346.78004643], [1516845600000, 5.542e-05, 5.542e-05, 5.53e-05, 5.541e-05, 124607.96578345], [1516845660000, 5.541e-05, 5.542e-05, 5.525e-05, 5.53e-05, 12734.55616386], [1516845720000, 5.541e-05, 5.541e-05, 5.531e-05, 5.532e-05, 4474.60292782], [1516845780000, 5.532e-05, 5.541e-05, 5.531e-05, 5.541e-05, 14581.52123265], [1516845840000, 5.54e-05, 5.541e-05, 5.53e-05, 5.531e-05, 9910.44974641], [1516845900000, 5.53e-05, 5.531e-05, 5.525e-05, 5.53e-05, 33908.77143037], [1516845960000, 5.529e-05, 5.541e-05, 5.525e-05, 5.531e-05, 17608.64585568], [1516846020000, 5.53e-05, 5.531e-05, 5.525e-05, 5.529e-05, 64002.76555487], [1516846080000, 5.528e-05, 5.528e-05, 5.505e-05, 5.52e-05, 18273.55475234], [1516846140000, 5.52e-05, 5.52e-05, 5.5e-05, 5.52e-05, 173956.03758945], [1516846200000, 5.52e-05, 5.52e-05, 5.492e-05, 5.51e-05, 105774.2996189], [1516846260000, 5.51e-05, 5.515e-05, 5.505e-05, 5.505e-05, 55645.95134716], [1516846320000, 5.505e-05, 5.51e-05, 5.495e-05, 5.506e-05, 24899.91393369], [1516846380000, 5.506e-05, 5.51e-05, 5.505e-05, 5.505e-05, 49214.85846104], [1516846440000, 5.505e-05, 5.505e-05, 5.491e-05, 5.5e-05, 23628.52379764], [1516846500000, 5.5e-05, 5.505e-05, 5.5e-05, 5.505e-05, 67548.47527759], [1516846560000, 5.505e-05, 5.505e-05, 5.502e-05, 5.502e-05, 50161.35625313], [1516846620000, 5.505e-05, 5.505e-05, 5.502e-05, 5.502e-05, 6121.28252985], [1516846680000, 5.502e-05, 5.505e-05, 5.5e-05, 5.505e-05, 22230.68306982], [1516846740000, 5.505e-05, 5.51e-05, 5.5e-05, 5.51e-05, 58016.73647801], [1516846800000, 5.51e-05, 5.515e-05, 5.509e-05, 5.515e-05, 21444.01287582], [1516846860000, 5.519e-05, 5.52e-05, 5.516e-05, 5.519e-05, 11646.63611411], [1516846920000, 5.519e-05, 5.519e-05, 5.51e-05, 5.519e-05, 21793.7568893], [1516846980000, 5.519e-05, 5.529e-05, 5.519e-05, 5.529e-05, 57309.01943518], [1516847040000, 5.529e-05, 5.529e-05, 5.525e-05, 5.525e-05, 8554.06987835], [1516847100000, 5.521e-05, 5.525e-05, 5.521e-05, 5.525e-05, 2123.76092717], [1516847160000, 5.521e-05, 5.521e-05, 5.52e-05, 5.52e-05, 47436.31931849], [1516847220000, 5.521e-05, 5.524e-05, 5.521e-05, 5.524e-05, 19048.70200813], [1516847280000, 5.521e-05, 5.525e-05, 5.52e-05, 5.524e-05, 20527.33392297], [1516847340000, 5.524e-05, 5.525e-05, 5.524e-05, 5.524e-05, 9651.26112498], [1516847400000, 5.525e-05, 5.525e-05, 5.524e-05, 5.524e-05, 20273.736594], [1516847460000, 5.523e-05, 5.523e-05, 5.522e-05, 5.523e-05, 320.6034555], [1516847520000, 5.522e-05, 5.523e-05, 5.52e-05, 5.52e-05, 47596.89090509], [1516847580000, 5.513e-05, 5.523e-05, 5.509e-05, 5.52e-05, 46148.3778823], [1516847640000, 5.52e-05, 5.52e-05, 5.505e-05, 5.505e-05, 6982.40788426], [1516847700000, 5.505e-05, 5.519e-05, 5.502e-05, 5.505e-05, 8071.97821247], [1516847760000, 5.505e-05, 5.505e-05, 5.497e-05, 5.5e-05, 14359.14556285], [1516847820000, 5.5e-05, 5.5e-05, 5.49e-05, 5.49e-05, 9338.1955613], [1516847880000, 5.49e-05, 5.5e-05, 5.489e-05, 5.489e-05, 22479.8367776], [1516847940000, 5.49e-05, 5.5e-05, 5.49e-05, 5.49e-05, 40096.368193], [1516848000000, 5.49e-05, 5.5e-05, 5.489e-05, 5.5e-05, 66873.57278677], [1516848060000, 5.5e-05, 5.505e-05, 5.491e-05, 5.501e-05, 145947.26289333], [1516848120000, 5.505e-05, 5.52e-05, 5.501e-05, 5.52e-05, 64420.91899262], [1516848180000, 5.52e-05, 5.524e-05, 5.508e-05, 5.524e-05, 317156.37308015], [1516848240000, 5.524e-05, 5.525e-05, 5.523e-05, 5.525e-05, 518828.55718438], [1516848300000, 5.525e-05, 5.525e-05, 5.511e-05, 5.524e-05, 80070.09464283], [1516848360000, 5.524e-05, 5.528e-05, 5.515e-05, 5.528e-05, 811478.21806968], [1516848420000, 5.528e-05, 5.544e-05, 5.528e-05, 5.541e-05, 187615.3897888], [1516848480000, 5.542e-05, 5.544e-05, 5.528e-05, 5.528e-05, 113675.20958787], [1516848540000, 5.53e-05, 5.538e-05, 5.528e-05, 5.538e-05, 194816.47636469], [1516848600000, 5.53e-05, 5.537e-05, 5.53e-05, 5.53e-05, 34697.01968438], [1516848660000, 5.53e-05, 5.53e-05, 5.501e-05, 5.501e-05, 40383.7314297], [1516848720000, 5.503e-05, 5.53e-05, 5.503e-05, 5.506e-05, 14242.64526288], [1516848780000, 5.507e-05, 5.537e-05, 5.507e-05, 5.537e-05, 89901.9259254], [1516848840000, 5.534e-05, 5.534e-05, 5.509e-05, 5.51e-05, 11229.20968157], [1516848900000, 5.51e-05, 5.529e-05, 5.51e-05, 5.52e-05, 47055.600486], [1516848960000, 5.511e-05, 5.53e-05, 5.511e-05, 5.52e-05, 32610.13282885], [1516849020000, 5.53e-05, 5.53e-05, 5.52e-05, 5.524e-05, 16285.35857617], [1516849080000, 5.524e-05, 5.538e-05, 5.522e-05, 5.53e-05, 74123.36369413], [1516849140000, 5.523e-05, 5.538e-05, 5.523e-05, 5.525e-05, 55436.75292158], [1516849200000, 5.526e-05, 5.53e-05, 5.525e-05, 5.526e-05, 102226.04156693], [1516849260000, 5.526e-05, 5.538e-05, 5.51e-05, 5.51e-05, 140637.92203377], [1516849320000, 5.529e-05, 5.538e-05, 5.524e-05, 5.529e-05, 79224.55830348], [1516849380000, 5.529e-05, 5.538e-05, 5.527e-05, 5.536e-05, 38120.76654388], [1516849440000, 5.531e-05, 5.538e-05, 5.527e-05, 5.532e-05, 60810.67526714], [1516849500000, 5.533e-05, 5.538e-05, 5.529e-05, 5.533e-05, 25198.32493781], [1516849560000, 5.533e-05, 5.538e-05, 5.527e-05, 5.538e-05, 67338.19949912], [1516849620000, 5.538e-05, 5.538e-05, 5.531e-05, 5.531e-05, 37310.74845625], [1516849680000, 5.531e-05, 5.532e-05, 5.528e-05, 5.531e-05, 3240.38670423], [1516849740000, 5.532e-05, 5.538e-05, 5.532e-05, 5.537e-05, 23795.99734311], [1516849800000, 5.537e-05, 5.548e-05, 5.531e-05, 5.548e-05, 287316.07446753], [1516849860000, 5.548e-05, 5.548e-05, 5.533e-05, 5.548e-05, 71457.23326423], [1516849920000, 5.548e-05, 5.548e-05, 5.535e-05, 5.543e-05, 73604.12444499], [1516849980000, 5.543e-05, 5.548e-05, 5.54e-05, 5.543e-05, 105466.62536021], [1516850040000, 5.545e-05, 5.549e-05, 5.54e-05, 5.543e-05, 262489.15822243], [1516850100000, 5.549e-05, 5.555e-05, 5.544e-05, 5.55e-05, 50888.38852924], [1516850160000, 5.55e-05, 5.56e-05, 5.546e-05, 5.559e-05, 67830.10249033], [1516850220000, 5.559e-05, 5.562e-05, 5.549e-05, 5.561e-05, 40669.99837247], [1516850280000, 5.561e-05, 5.562e-05, 5.55e-05, 5.551e-05, 47257.56510051], [1516850340000, 5.554e-05, 5.565e-05, 5.553e-05, 5.565e-05, 47142.346913], [1516850400000, 5.554e-05, 5.565e-05, 5.553e-05, 5.565e-05, 18679.24632011], [1516850460000, 5.565e-05, 5.566e-05, 5.559e-05, 5.562e-05, 16565.33724557], [1516850520000, 5.563e-05, 5.574e-05, 5.563e-05, 5.571e-05, 79318.05993583], [1516850580000, 5.574e-05, 5.58e-05, 5.571e-05, 5.578e-05, 61608.54582413], [1516850640000, 5.579e-05, 5.604e-05, 5.579e-05, 5.604e-05, 87282.21387529], [1516850700000, 5.604e-05, 5.605e-05, 5.602e-05, 5.604e-05, 22456.71624728], [1516850760000, 5.604e-05, 5.607e-05, 5.604e-05, 5.606e-05, 22698.84442015], [1516850820000, 5.606e-05, 5.61e-05, 5.606e-05, 5.61e-05, 7703.81772141], [1516850880000, 5.61e-05, 5.615e-05, 5.602e-05, 5.612e-05, 124088.26243328], [1516850940000, 5.612e-05, 5.615e-05, 5.612e-05, 5.615e-05, 30286.81274371], [1516851000000, 5.613e-05, 5.615e-05, 5.602e-05, 5.602e-05, 6674.44013703], [1516851060000, 5.611e-05, 5.611e-05, 5.59e-05, 5.59e-05, 5458.55469882], [1516851120000, 5.598e-05, 5.598e-05, 5.577e-05, 5.577e-05, 7873.30969372], [1516851180000, 5.577e-05, 5.59e-05, 5.577e-05, 5.582e-05, 245461.5910265], [1516851240000, 5.582e-05, 5.582e-05, 5.577e-05, 5.582e-05, 137908.44057154], [1516851300000, 5.577e-05, 5.585e-05, 5.575e-05, 5.585e-05, 370719.78650014], [1516851360000, 5.582e-05, 5.585e-05, 5.576e-05, 5.576e-05, 28301.75594109], [1516851420000, 5.582e-05, 5.585e-05, 5.575e-05, 5.585e-05, 29887.21835994], [1516851480000, 5.585e-05, 5.61e-05, 5.582e-05, 5.61e-05, 55014.87358021], [1516851540000, 5.611e-05, 5.611e-05, 5.59e-05, 5.591e-05, 3745.23112311], [1516851600000, 5.6e-05, 5.602e-05, 5.591e-05, 5.593e-05, 5458.68743949], [1516851660000, 5.601e-05, 5.602e-05, 5.593e-05, 5.602e-05, 16576.55304366], [1516851720000, 5.602e-05, 5.609e-05, 5.597e-05, 5.608e-05, 38841.73982206], [1516851780000, 5.608e-05, 5.616e-05, 5.603e-05, 5.603e-05, 21324.46747197], [1516851840000, 5.615e-05, 5.62e-05, 5.603e-05, 5.603e-05, 20504.97919285], [1516851900000, 5.603e-05, 5.624e-05, 5.603e-05, 5.61e-05, 36724.69449813], [1516851960000, 5.624e-05, 5.625e-05, 5.61e-05, 5.612e-05, 29788.47481744], [1516852020000, 5.62e-05, 5.625e-05, 5.62e-05, 5.625e-05, 26434.29199212], [1516852080000, 5.624e-05, 5.672e-05, 5.624e-05, 5.672e-05, 162621.55053502], [1516852140000, 5.672e-05, 5.697e-05, 5.672e-05, 5.695e-05, 231365.44704854], [1516852200000, 5.695e-05, 5.699e-05, 5.659e-05, 5.68e-05, 157689.38600008], [1516852260000, 5.68e-05, 5.699e-05, 5.68e-05, 5.692e-05, 142309.13853485], [1516852320000, 5.692e-05, 5.75e-05, 5.685e-05, 5.71e-05, 822181.68995962], [1516852380000, 5.71e-05, 5.755e-05, 5.708e-05, 5.751e-05, 329113.77404831], [1516852440000, 5.751e-05, 5.756e-05, 5.703e-05, 5.722e-05, 75178.59724832], [1516852500000, 5.722e-05, 5.748e-05, 5.722e-05, 5.746e-05, 63887.23073548], [1516852560000, 5.746e-05, 5.748e-05, 5.728e-05, 5.736e-05, 86084.87251438], [1516852620000, 5.737e-05, 5.737e-05, 5.725e-05, 5.736e-05, 41436.41080742], [1516852680000, 5.73e-05, 5.736e-05, 5.73e-05, 5.735e-05, 33312.98429135], [1516852740000, 5.735e-05, 5.736e-05, 5.731e-05, 5.735e-05, 37184.09915715], [1516852800000, 5.736e-05, 5.748e-05, 5.735e-05, 5.747e-05, 19420.97661174], [1516852860000, 5.745e-05, 5.745e-05, 5.731e-05, 5.731e-05, 127662.53471959], [1516852920000, 5.731e-05, 5.735e-05, 5.731e-05, 5.735e-05, 46916.51518024], [1516852980000, 5.734e-05, 5.735e-05, 5.733e-05, 5.733e-05, 56763.57332295], [1516853040000, 5.733e-05, 5.734e-05, 5.723e-05, 5.73e-05, 66009.84676454], [1516853100000, 5.733e-05, 5.734e-05, 5.724e-05, 5.73e-05, 31509.35682948], [1516853160000, 5.73e-05, 5.733e-05, 5.725e-05, 5.73e-05, 23148.96247553], [1516853220000, 5.73e-05, 5.734e-05, 5.728e-05, 5.728e-05, 41339.82130858], [1516853280000, 5.731e-05, 5.734e-05, 5.725e-05, 5.734e-05, 62744.61215061], [1516853340000, 5.734e-05, 5.76e-05, 5.732e-05, 5.737e-05, 240017.70222939], [1516853400000, 5.76e-05, 5.804e-05, 5.755e-05, 5.801e-05, 975200.33978272], [1516853460000, 5.801e-05, 5.848e-05, 5.8e-05, 5.832e-05, 504315.23163855], [1516853520000, 5.832e-05, 5.847e-05, 5.804e-05, 5.807e-05, 105217.84518899], [1516853580000, 5.804e-05, 5.825e-05, 5.78e-05, 5.813e-05, 228588.10973054], [1516853640000, 5.824e-05, 5.85e-05, 5.814e-05, 5.85e-05, 241716.42950274], [1516853700000, 5.85e-05, 5.862e-05, 5.831e-05, 5.861e-05, 476916.57495644], [1516853760000, 5.861e-05, 5.886e-05, 5.86e-05, 5.885e-05, 233259.28000931], [1516853820000, 5.879e-05, 5.886e-05, 5.874e-05, 5.885e-05, 108615.24040166], [1516853880000, 5.885e-05, 5.9e-05, 5.885e-05, 5.899e-05, 572760.85057865], [1516853940000, 5.9e-05, 5.91e-05, 5.899e-05, 5.91e-05, 541203.15029128], [1516854000000, 5.911e-05, 5.918e-05, 5.909e-05, 5.917e-05, 181049.59263437], [1516854060000, 5.915e-05, 5.922e-05, 5.899e-05, 5.899e-05, 380714.8301651], [1516854120000, 5.894e-05, 5.917e-05, 5.883e-05, 5.883e-05, 185726.62470707], [1516854180000, 5.878e-05, 5.882e-05, 5.815e-05, 5.853e-05, 167683.50654927], [1516854240000, 5.853e-05, 5.86e-05, 5.829e-05, 5.851e-05, 294834.08190793], [1516854300000, 5.832e-05, 5.86e-05, 5.832e-05, 5.85e-05, 247277.21824995], [1516854360000, 5.85e-05, 5.861e-05, 5.831e-05, 5.85e-05, 217043.31635233], [1516854420000, 5.85e-05, 5.85e-05, 5.833e-05, 5.835e-05, 40504.70892372], [1516854480000, 5.835e-05, 5.85e-05, 5.822e-05, 5.822e-05, 122993.58265326], [1516854540000, 5.819e-05, 5.821e-05, 5.759e-05, 5.799e-05, 192973.6767336], [1516854600000, 5.799e-05, 5.837e-05, 5.769e-05, 5.837e-05, 145195.80785019], [1516854660000, 5.833e-05, 5.86e-05, 5.782e-05, 5.829e-05, 148831.22507375], [1516854720000, 5.829e-05, 5.862e-05, 5.829e-05, 5.837e-05, 45324.07890989], [1516854780000, 5.837e-05, 5.855e-05, 5.837e-05, 5.85e-05, 81567.13599042], [1516854840000, 5.841e-05, 5.849e-05, 5.83e-05, 5.834e-05, 164366.67258087], [1516854900000, 5.834e-05, 5.85e-05, 5.834e-05, 5.846e-05, 37440.37721331], [1516854960000, 5.849e-05, 5.858e-05, 5.845e-05, 5.858e-05, 40836.80243903], [1516855020000, 5.853e-05, 5.862e-05, 5.853e-05, 5.862e-05, 38571.54852065], [1516855080000, 5.862e-05, 5.894e-05, 5.858e-05, 5.892e-05, 73669.17796336], [1516855140000, 5.894e-05, 5.899e-05, 5.892e-05, 5.893e-05, 49528.9617385], [1516855200000, 5.894e-05, 5.91e-05, 5.894e-05, 5.9e-05, 76800.94653482], [1516855260000, 5.9e-05, 5.91e-05, 5.9e-05, 5.91e-05, 149759.10161716], [1516855320000, 5.91e-05, 5.925e-05, 5.905e-05, 5.925e-05, 197179.31349383], [1516855380000, 5.925e-05, 5.928e-05, 5.901e-05, 5.901e-05, 124711.06578904], [1516855440000, 5.905e-05, 5.907e-05, 5.893e-05, 5.9e-05, 64556.1821698], [1516855500000, 5.895e-05, 5.905e-05, 5.817e-05, 5.901e-05, 212692.31991673], [1516855560000, 5.901e-05, 5.902e-05, 5.797e-05, 5.9e-05, 200767.35654169], [1516855620000, 5.876e-05, 5.902e-05, 5.876e-05, 5.893e-05, 60621.16512624], [1516855680000, 5.9e-05, 5.916e-05, 5.899e-05, 5.916e-05, 52519.55393594], [1516855740000, 5.907e-05, 5.931e-05, 5.9e-05, 5.93e-05, 343972.20322056], [1516855800000, 5.93e-05, 5.931e-05, 5.924e-05, 5.931e-05, 145089.81180926], [1516855860000, 5.931e-05, 5.931e-05, 5.925e-05, 5.927e-05, 258267.45094436], [1516855920000, 5.93e-05, 5.93e-05, 5.927e-05, 5.927e-05, 39837.29075287], [1516855980000, 5.927e-05, 5.93e-05, 5.924e-05, 5.924e-05, 29021.80370954], [1516856040000, 5.924e-05, 5.927e-05, 5.902e-05, 5.925e-05, 44676.66877936], [1516856100000, 5.925e-05, 5.928e-05, 5.9e-05, 5.911e-05, 114620.74880949], [1516856160000, 5.923e-05, 5.923e-05, 5.901e-05, 5.901e-05, 17610.70299979], [1516856220000, 5.901e-05, 5.91e-05, 5.901e-05, 5.901e-05, 106271.75507232], [1516856280000, 5.901e-05, 5.901e-05, 5.876e-05, 5.899e-05, 86723.92828619], [1516856340000, 5.892e-05, 5.899e-05, 5.862e-05, 5.876e-05, 113549.26111013], [1516856400000, 5.87e-05, 5.883e-05, 5.869e-05, 5.875e-05, 76736.99123022], [1516856460000, 5.87e-05, 5.87e-05, 5.862e-05, 5.862e-05, 79065.28569777], [1516856520000, 5.865e-05, 5.868e-05, 5.859e-05, 5.867e-05, 415781.01411597], [1516856580000, 5.866e-05, 5.868e-05, 5.849e-05, 5.86e-05, 254424.12214186], [1516856640000, 5.859e-05, 5.86e-05, 5.823e-05, 5.85e-05, 134267.02731916], [1516856700000, 5.851e-05, 5.86e-05, 5.823e-05, 5.849e-05, 228234.31528723], [1516856760000, 5.855e-05, 5.855e-05, 5.839e-05, 5.855e-05, 63663.6073453], [1516856820000, 5.854e-05, 5.855e-05, 5.849e-05, 5.854e-05, 477379.30546002], [1516856880000, 5.854e-05, 5.854e-05, 5.851e-05, 5.854e-05, 45207.10457078], [1516856940000, 5.852e-05, 5.854e-05, 5.851e-05, 5.854e-05, 50104.21606666], [1516857000000, 5.852e-05, 5.854e-05, 5.851e-05, 5.852e-05, 58739.16533235], [1516857060000, 5.853e-05, 5.853e-05, 5.852e-05, 5.853e-05, 80621.79330776], [1516857120000, 5.853e-05, 5.853e-05, 5.85e-05, 5.853e-05, 74320.85424869], [1516857180000, 5.853e-05, 5.853e-05, 5.849e-05, 5.852e-05, 27046.49651133], [1516857240000, 5.852e-05, 5.852e-05, 5.792e-05, 5.8e-05, 193890.46517117], [1516857300000, 5.8e-05, 5.847e-05, 5.8e-05, 5.843e-05, 123002.71172812], [1516857360000, 5.843e-05, 5.844e-05, 5.827e-05, 5.842e-05, 47554.36272232], [1516857420000, 5.842e-05, 5.842e-05, 5.829e-05, 5.831e-05, 26340.71533902], [1516857480000, 5.831e-05, 5.831e-05, 5.828e-05, 5.83e-05, 25555.01495445], [1516857540000, 5.83e-05, 5.831e-05, 5.827e-05, 5.827e-05, 77539.98378475], [1516857600000, 5.827e-05, 5.83e-05, 5.827e-05, 5.829e-05, 30482.52750007], [1516857660000, 5.827e-05, 5.829e-05, 5.826e-05, 5.827e-05, 18422.18372112], [1516857720000, 5.826e-05, 5.829e-05, 5.826e-05, 5.829e-05, 57599.60314179], [1516857780000, 5.828e-05, 5.829e-05, 5.815e-05, 5.828e-05, 110022.59855329], [1516857840000, 5.815e-05, 5.827e-05, 5.81e-05, 5.81e-05, 11559.78413662], [1516857900000, 5.81e-05, 5.815e-05, 5.81e-05, 5.81e-05, 53666.83272002], [1516857960000, 5.802e-05, 5.81e-05, 5.79e-05, 5.79e-05, 59999.89251501], [1516858020000, 5.79e-05, 5.8e-05, 5.784e-05, 5.792e-05, 61331.76585769], [1516858080000, 5.792e-05, 5.792e-05, 5.783e-05, 5.783e-05, 152130.09728979], [1516858140000, 5.783e-05, 5.783e-05, 5.777e-05, 5.779e-05, 29377.38584933], [1516858200000, 5.778e-05, 5.779e-05, 5.765e-05, 5.772e-05, 349021.43273232], [1516858260000, 5.772e-05, 5.772e-05, 5.765e-05, 5.772e-05, 191378.24887496], [1516858320000, 5.772e-05, 5.772e-05, 5.765e-05, 5.77e-05, 383000.41486176], [1516858380000, 5.77e-05, 5.77e-05, 5.765e-05, 5.77e-05, 407115.83004714], [1516858440000, 5.77e-05, 5.785e-05, 5.767e-05, 5.785e-05, 390582.06407204], [1516858500000, 5.785e-05, 5.785e-05, 5.776e-05, 5.776e-05, 217920.15089543], [1516858560000, 5.777e-05, 5.78e-05, 5.776e-05, 5.777e-05, 68570.31025599], [1516858620000, 5.777e-05, 5.777e-05, 5.766e-05, 5.767e-05, 191696.29409682], [1516858680000, 5.77e-05, 5.779e-05, 5.767e-05, 5.775e-05, 279743.05786756], [1516858740000, 5.775e-05, 5.775e-05, 5.771e-05, 5.771e-05, 101702.32258021], [1516858800000, 5.772e-05, 5.775e-05, 5.762e-05, 5.775e-05, 362642.83455386], [1516858860000, 5.768e-05, 5.808e-05, 5.768e-05, 5.798e-05, 258221.56589123], [1516858920000, 5.798e-05, 5.807e-05, 5.78e-05, 5.78e-05, 126931.02166371], [1516858980000, 5.78e-05, 5.808e-05, 5.78e-05, 5.805e-05, 60821.17360148], [1516859040000, 5.787e-05, 5.807e-05, 5.78e-05, 5.8e-05, 47510.42144361], [1516859100000, 5.79e-05, 5.8e-05, 5.789e-05, 5.798e-05, 47116.95899057], [1516859160000, 5.798e-05, 5.803e-05, 5.79e-05, 5.799e-05, 70691.84610497], [1516859220000, 5.799e-05, 5.802e-05, 5.79e-05, 5.791e-05, 47906.69158191], [1516859280000, 5.79e-05, 5.8e-05, 5.79e-05, 5.791e-05, 28127.21077571], [1516859340000, 5.798e-05, 5.803e-05, 5.79e-05, 5.791e-05, 62180.17013042], [1516859400000, 5.79e-05, 5.808e-05, 5.79e-05, 5.803e-05, 51522.85163956], [1516859460000, 5.803e-05, 5.803e-05, 5.79e-05, 5.79e-05, 19820.92899658], [1516859520000, 5.79e-05, 5.793e-05, 5.789e-05, 5.789e-05, 23245.18429959], [1516859580000, 5.789e-05, 5.789e-05, 5.776e-05, 5.787e-05, 15596.51545986], [1516859640000, 5.787e-05, 5.787e-05, 5.778e-05, 5.778e-05, 12783.27602232], [1516859700000, 5.778e-05, 5.786e-05, 5.77e-05, 5.776e-05, 39190.74789394], [1516859760000, 5.777e-05, 5.777e-05, 5.767e-05, 5.777e-05, 50505.02723701], [1516859820000, 5.777e-05, 5.786e-05, 5.772e-05, 5.786e-05, 36343.44041212], [1516859880000, 5.773e-05, 5.786e-05, 5.773e-05, 5.774e-05, 57759.43401561], [1516859940000, 5.774e-05, 5.786e-05, 5.772e-05, 5.776e-05, 170480.58502329], [1516860000000, 5.776e-05, 5.79e-05, 5.776e-05, 5.786e-05, 12765.72871363], [1516860060000, 5.786e-05, 5.786e-05, 5.778e-05, 5.785e-05, 6263.90333073], [1516860120000, 5.785e-05, 5.786e-05, 5.781e-05, 5.781e-05, 18074.7806103], [1516860180000, 5.781e-05, 5.783e-05, 5.777e-05, 5.781e-05, 9908.38124111], [1516860240000, 5.781e-05, 5.783e-05, 5.771e-05, 5.783e-05, 178632.7263226], [1516860300000, 5.784e-05, 5.803e-05, 5.784e-05, 5.789e-05, 116666.2351519], [1516860360000, 5.803e-05, 5.819e-05, 5.803e-05, 5.807e-05, 153841.34754861], [1516860420000, 5.807e-05, 5.826e-05, 5.8e-05, 5.808e-05, 338747.55006549], [1516860480000, 5.824e-05, 5.839e-05, 5.808e-05, 5.839e-05, 199109.10066676], [1516860540000, 5.839e-05, 5.851e-05, 5.83e-05, 5.851e-05, 52001.4793601], [1516860600000, 5.848e-05, 5.851e-05, 5.848e-05, 5.85e-05, 55273.66938275], [1516860660000, 5.849e-05, 5.85e-05, 5.849e-05, 5.85e-05, 112129.66721157], [1516860720000, 5.85e-05, 5.86e-05, 5.849e-05, 5.852e-05, 166688.03472767], [1516860780000, 5.851e-05, 5.865e-05, 5.851e-05, 5.854e-05, 80674.25429492], [1516860840000, 5.864e-05, 5.865e-05, 5.854e-05, 5.865e-05, 66422.04351614], [1516860900000, 5.863e-05, 5.867e-05, 5.861e-05, 5.867e-05, 85321.40964449], [1516860960000, 5.865e-05, 5.865e-05, 5.86e-05, 5.861e-05, 57133.15625433], [1516861020000, 5.861e-05, 5.862e-05, 5.852e-05, 5.855e-05, 41048.16704914], [1516861080000, 5.855e-05, 5.86e-05, 5.85e-05, 5.85e-05, 22646.5511427], [1516861140000, 5.849e-05, 5.858e-05, 5.81e-05, 5.81e-05, 26771.62326667], [1516861200000, 5.829e-05, 5.848e-05, 5.81e-05, 5.831e-05, 94218.54893435], [1516861260000, 5.829e-05, 5.835e-05, 5.819e-05, 5.834e-05, 81051.00701061], [1516861320000, 5.823e-05, 5.848e-05, 5.823e-05, 5.846e-05, 50050.88641367], [1516861380000, 5.846e-05, 5.847e-05, 5.84e-05, 5.842e-05, 35613.54108501], [1516861440000, 5.841e-05, 5.85e-05, 5.841e-05, 5.847e-05, 41485.85388562], [1516861500000, 5.841e-05, 5.861e-05, 5.841e-05, 5.857e-05, 89808.45059644], [1516861560000, 5.861e-05, 5.862e-05, 5.841e-05, 5.841e-05, 94025.25596487], [1516861620000, 5.854e-05, 5.854e-05, 5.84e-05, 5.847e-05, 17301.40093846], [1516861680000, 5.84e-05, 5.847e-05, 5.825e-05, 5.838e-05, 12190.70062019], [1516861740000, 5.838e-05, 5.847e-05, 5.823e-05, 5.84e-05, 131888.26283138], [1516861800000, 5.84e-05, 5.847e-05, 5.823e-05, 5.826e-05, 18633.89479858], [1516861860000, 5.839e-05, 5.841e-05, 5.827e-05, 5.827e-05, 9301.79057908], [1516861920000, 5.827e-05, 5.839e-05, 5.826e-05, 5.839e-05, 78180.68813107], [1516861980000, 5.839e-05, 5.847e-05, 5.823e-05, 5.847e-05, 42491.65324996], [1516862040000, 5.829e-05, 5.854e-05, 5.829e-05, 5.835e-05, 29433.45022003], [1516862100000, 5.834e-05, 5.853e-05, 5.83e-05, 5.837e-05, 71916.22049855], [1516862160000, 5.837e-05, 5.854e-05, 5.836e-05, 5.851e-05, 96320.01415287], [1516862220000, 5.851e-05, 5.86e-05, 5.84e-05, 5.86e-05, 80552.23712805], [1516862280000, 5.86e-05, 5.868e-05, 5.84e-05, 5.868e-05, 52878.22738057], [1516862340000, 5.854e-05, 5.868e-05, 5.84e-05, 5.855e-05, 34135.62999661], [1516862400000, 5.855e-05, 5.867e-05, 5.855e-05, 5.866e-05, 18175.8972941], [1516862460000, 5.865e-05, 5.866e-05, 5.855e-05, 5.864e-05, 22926.54188621], [1516862520000, 5.864e-05, 5.865e-05, 5.856e-05, 5.865e-05, 24820.01306008], [1516862580000, 5.865e-05, 5.868e-05, 5.86e-05, 5.861e-05, 69118.60916464], [1516862640000, 5.862e-05, 5.864e-05, 5.837e-05, 5.863e-05, 45527.245248], [1516862700000, 5.855e-05, 5.862e-05, 5.835e-05, 5.862e-05, 78436.56001589], [1516862760000, 5.861e-05, 5.862e-05, 5.835e-05, 5.835e-05, 8065.31703066], [1516862820000, 5.86e-05, 5.862e-05, 5.838e-05, 5.84e-05, 9495.24825742], [1516862880000, 5.84e-05, 5.849e-05, 5.838e-05, 5.847e-05, 17320.36290948], [1516862940000, 5.847e-05, 5.849e-05, 5.83e-05, 5.849e-05, 58749.28354283], [1516863000000, 5.835e-05, 5.849e-05, 5.835e-05, 5.835e-05, 100181.07987387], [1516863060000, 5.836e-05, 5.849e-05, 5.8e-05, 5.803e-05, 331582.72333034], [1516863120000, 5.82e-05, 5.847e-05, 5.788e-05, 5.839e-05, 104502.43040371], [1516863180000, 5.839e-05, 5.839e-05, 5.808e-05, 5.837e-05, 24097.84723524], [1516863240000, 5.81e-05, 5.812e-05, 5.762e-05, 5.774e-05, 191682.60969336], [1516863300000, 5.762e-05, 5.783e-05, 5.751e-05, 5.78e-05, 77356.72507699], [1516863360000, 5.78e-05, 5.78e-05, 5.77e-05, 5.779e-05, 35213.1908802], [1516863420000, 5.78e-05, 5.8e-05, 5.779e-05, 5.791e-05, 51196.11581622], [1516863480000, 5.791e-05, 5.791e-05, 5.779e-05, 5.779e-05, 44892.94078275], [1516863540000, 5.769e-05, 5.779e-05, 5.755e-05, 5.762e-05, 16028.7742649], [1516863600000, 5.761e-05, 5.762e-05, 5.75e-05, 5.751e-05, 66560.00549621], [1516863660000, 5.751e-05, 5.762e-05, 5.751e-05, 5.751e-05, 19028.84106154], [1516863720000, 5.751e-05, 5.761e-05, 5.751e-05, 5.761e-05, 9829.73545457], [1516863780000, 5.761e-05, 5.779e-05, 5.758e-05, 5.762e-05, 12923.99122475], [1516863840000, 5.779e-05, 5.779e-05, 5.761e-05, 5.764e-05, 31349.4535257], [1516863900000, 5.779e-05, 5.8e-05, 5.779e-05, 5.787e-05, 20440.99470351], [1516863960000, 5.787e-05, 5.798e-05, 5.779e-05, 5.798e-05, 20629.30481031], [1516864020000, 5.798e-05, 5.8e-05, 5.78e-05, 5.8e-05, 40483.23789999], [1516864080000, 5.799e-05, 5.81e-05, 5.752e-05, 5.752e-05, 101715.55299778], [1516864140000, 5.794e-05, 5.806e-05, 5.754e-05, 5.793e-05, 34175.54612332], [1516864200000, 5.793e-05, 5.793e-05, 5.769e-05, 5.793e-05, 33810.91671935], [1516864260000, 5.793e-05, 5.798e-05, 5.793e-05, 5.793e-05, 9509.69213824], [1516864320000, 5.793e-05, 5.795e-05, 5.79e-05, 5.79e-05, 8663.62865713], [1516864380000, 5.79e-05, 5.795e-05, 5.756e-05, 5.756e-05, 76824.57833924], [1516864440000, 5.755e-05, 5.792e-05, 5.752e-05, 5.763e-05, 23028.51102648], [1516864500000, 5.789e-05, 5.79e-05, 5.763e-05, 5.79e-05, 23398.15344662], [1516864560000, 5.765e-05, 5.79e-05, 5.75e-05, 5.75e-05, 83819.68170476], [1516864620000, 5.75e-05, 5.758e-05, 5.74e-05, 5.747e-05, 41007.2963138], [1516864680000, 5.747e-05, 5.749e-05, 5.736e-05, 5.746e-05, 52245.23773231], [1516864740000, 5.746e-05, 5.746e-05, 5.733e-05, 5.734e-05, 20541.37545958], [1516864800000, 5.733e-05, 5.734e-05, 5.732e-05, 5.734e-05, 27913.44797242], [1516864860000, 5.734e-05, 5.744e-05, 5.732e-05, 5.734e-05, 25197.09959229], [1516864920000, 5.734e-05, 5.735e-05, 5.732e-05, 5.732e-05, 85341.02551483], [1516864980000, 5.732e-05, 5.732e-05, 5.72e-05, 5.721e-05, 84439.88359891], [1516865040000, 5.721e-05, 5.724e-05, 5.711e-05, 5.711e-05, 82100.38283824], [1516865100000, 5.711e-05, 5.712e-05, 5.711e-05, 5.711e-05, 30336.32933533], [1516865160000, 5.711e-05, 5.712e-05, 5.711e-05, 5.712e-05, 26916.94080621], [1516865220000, 5.712e-05, 5.712e-05, 5.711e-05, 5.711e-05, 196432.34164186], [1516865280000, 5.711e-05, 5.726e-05, 5.711e-05, 5.716e-05, 76723.37393224], [1516865340000, 5.73e-05, 5.742e-05, 5.716e-05, 5.742e-05, 28179.04253301], [1516865400000, 5.735e-05, 5.742e-05, 5.73e-05, 5.735e-05, 24943.92372974], [1516865460000, 5.735e-05, 5.744e-05, 5.735e-05, 5.736e-05, 21290.17325054], [1516865520000, 5.742e-05, 5.75e-05, 5.741e-05, 5.75e-05, 23040.96153979], [1516865580000, 5.75e-05, 5.75e-05, 5.744e-05, 5.744e-05, 27447.59758536], [1516865640000, 5.742e-05, 5.744e-05, 5.736e-05, 5.736e-05, 40692.93031057], [1516865700000, 5.735e-05, 5.743e-05, 5.713e-05, 5.743e-05, 35663.61457222], [1516865760000, 5.743e-05, 5.743e-05, 5.713e-05, 5.74e-05, 66365.15068876], [1516865820000, 5.735e-05, 5.741e-05, 5.73e-05, 5.73e-05, 26262.23662459], [1516865880000, 5.735e-05, 5.74e-05, 5.734e-05, 5.74e-05, 16707.91268918], [1516865940000, 5.73e-05, 5.741e-05, 5.73e-05, 5.741e-05, 36575.48048227], [1516866000000, 5.74e-05, 5.74e-05, 5.731e-05, 5.731e-05, 4826.61216181], [1516866060000, 5.74e-05, 5.741e-05, 5.73e-05, 5.73e-05, 54825.06347241], [1516866120000, 5.731e-05, 5.741e-05, 5.731e-05, 5.74e-05, 8477.13261601], [1516866180000, 5.74e-05, 5.741e-05, 5.73e-05, 5.73e-05, 120960.96482142], [1516866240000, 5.73e-05, 5.73e-05, 5.718e-05, 5.73e-05, 137116.25496018], [1516866300000, 5.725e-05, 5.73e-05, 5.715e-05, 5.726e-05, 268375.5799186], [1516866360000, 5.726e-05, 5.726e-05, 5.716e-05, 5.725e-05, 69948.88573139], [1516866420000, 5.725e-05, 5.725e-05, 5.716e-05, 5.717e-05, 316927.06615409], [1516866480000, 5.717e-05, 5.718e-05, 5.717e-05, 5.718e-05, 517310.62226921], [1516866540000, 5.718e-05, 5.718e-05, 5.715e-05, 5.718e-05, 311122.7752018], [1516866600000, 5.718e-05, 5.718e-05, 5.716e-05, 5.718e-05, 317663.63058974], [1516866660000, 5.718e-05, 5.718e-05, 5.717e-05, 5.718e-05, 1441676.84212642], [1516866720000, 5.718e-05, 5.718e-05, 5.716e-05, 5.718e-05, 321349.98510093], [1516866780000, 5.718e-05, 5.718e-05, 5.717e-05, 5.718e-05, 121562.83542961], [1516866840000, 5.717e-05, 5.718e-05, 5.716e-05, 5.716e-05, 436993.43238898], [1516866900000, 5.718e-05, 5.718e-05, 5.716e-05, 5.718e-05, 57627.56581246], [1516866960000, 5.717e-05, 5.718e-05, 5.715e-05, 5.716e-05, 75655.31809832], [1516867020000, 5.716e-05, 5.716e-05, 5.711e-05, 5.711e-05, 12688.41083816], [1516867080000, 5.711e-05, 5.711e-05, 5.71e-05, 5.711e-05, 31191.61193883], [1516867140000, 5.71e-05, 5.713e-05, 5.706e-05, 5.711e-05, 33814.01760605], [1516867200000, 5.706e-05, 5.711e-05, 5.706e-05, 5.706e-05, 30986.55450604], [1516867260000, 5.711e-05, 5.711e-05, 5.708e-05, 5.708e-05, 8652.81148552], [1516867320000, 5.708e-05, 5.718e-05, 5.707e-05, 5.711e-05, 29638.86731251], [1516867380000, 5.715e-05, 5.718e-05, 5.708e-05, 5.708e-05, 32303.50611441], [1516867440000, 5.708e-05, 5.718e-05, 5.707e-05, 5.718e-05, 24358.80869114], [1516867500000, 5.708e-05, 5.718e-05, 5.707e-05, 5.71e-05, 16453.30856147], [1516867560000, 5.717e-05, 5.717e-05, 5.711e-05, 5.717e-05, 7285.99367712], [1516867620000, 5.711e-05, 5.717e-05, 5.706e-05, 5.71e-05, 20036.39384508], [1516867680000, 5.71e-05, 5.71e-05, 5.69e-05, 5.699e-05, 260545.34008144], [1516867740000, 5.69e-05, 5.699e-05, 5.689e-05, 5.698e-05, 25629.03516116], [1516867800000, 5.69e-05, 5.698e-05, 5.681e-05, 5.689e-05, 52432.44072888], [1516867860000, 5.689e-05, 5.69e-05, 5.672e-05, 5.678e-05, 147230.03533362], [1516867920000, 5.678e-05, 5.679e-05, 5.673e-05, 5.675e-05, 45372.71169966], [1516867980000, 5.674e-05, 5.675e-05, 5.672e-05, 5.675e-05, 110781.14876869], [1516868040000, 5.675e-05, 5.675e-05, 5.66e-05, 5.668e-05, 23716.3029836], [1516868100000, 5.668e-05, 5.668e-05, 5.657e-05, 5.66e-05, 24901.54112025], [1516868160000, 5.66e-05, 5.66e-05, 5.652e-05, 5.652e-05, 21975.43401483], [1516868220000, 5.652e-05, 5.652e-05, 5.65e-05, 5.65e-05, 75106.44432307], [1516868280000, 5.65e-05, 5.65e-05, 5.62e-05, 5.629e-05, 112612.24186013], [1516868340000, 5.62e-05, 5.63e-05, 5.62e-05, 5.621e-05, 76128.49724032], [1516868400000, 5.62e-05, 5.625e-05, 5.62e-05, 5.624e-05, 331131.49876628], [1516868460000, 5.625e-05, 5.625e-05, 5.618e-05, 5.62e-05, 448271.34394564], [1516868520000, 5.618e-05, 5.62e-05, 5.618e-05, 5.62e-05, 186171.15246789], [1516868580000, 5.619e-05, 5.62e-05, 5.619e-05, 5.619e-05, 135012.14049269], [1516868640000, 5.62e-05, 5.624e-05, 5.615e-05, 5.62e-05, 90768.33189907], [1516868700000, 5.623e-05, 5.624e-05, 5.619e-05, 5.623e-05, 71776.86189077], [1516868760000, 5.624e-05, 5.624e-05, 5.62e-05, 5.623e-05, 28448.7736375], [1516868820000, 5.623e-05, 5.624e-05, 5.621e-05, 5.624e-05, 16498.00617328], [1516868880000, 5.624e-05, 5.624e-05, 5.623e-05, 5.623e-05, 88572.52252711], [1516868940000, 5.624e-05, 5.647e-05, 5.624e-05, 5.647e-05, 179611.5073942], [1516869000000, 5.65e-05, 5.695e-05, 5.65e-05, 5.69e-05, 56185.27393948], [1516869060000, 5.69e-05, 5.695e-05, 5.66e-05, 5.687e-05, 85216.91136224], [1516869120000, 5.689e-05, 5.704e-05, 5.689e-05, 5.699e-05, 89856.21158736], [1516869180000, 5.699e-05, 5.7e-05, 5.691e-05, 5.697e-05, 25268.83724482], [1516869240000, 5.691e-05, 5.696e-05, 5.689e-05, 5.689e-05, 43108.34674414], [1516869300000, 5.694e-05, 5.694e-05, 5.657e-05, 5.657e-05, 21891.1424975], [1516869360000, 5.66e-05, 5.679e-05, 5.66e-05, 5.679e-05, 13695.54603149], [1516869420000, 5.688e-05, 5.69e-05, 5.66e-05, 5.665e-05, 18743.89265968], [1516869480000, 5.665e-05, 5.665e-05, 5.66e-05, 5.665e-05, 30037.66569863], [1516869540000, 5.665e-05, 5.665e-05, 5.66e-05, 5.665e-05, 24977.52741035], [1516869600000, 5.679e-05, 5.679e-05, 5.665e-05, 5.665e-05, 34809.18555683], [1516869660000, 5.666e-05, 5.689e-05, 5.658e-05, 5.66e-05, 79969.78282808], [1516869720000, 5.683e-05, 5.683e-05, 5.658e-05, 5.659e-05, 9887.89632447], [1516869780000, 5.659e-05, 5.66e-05, 5.648e-05, 5.66e-05, 53492.4054165], [1516869840000, 5.674e-05, 5.677e-05, 5.661e-05, 5.662e-05, 6495.02874303], [1516869900000, 5.662e-05, 5.679e-05, 5.662e-05, 5.679e-05, 11131.13533241], [1516869960000, 5.679e-05, 5.689e-05, 5.663e-05, 5.689e-05, 49599.70093836], [1516870020000, 5.689e-05, 5.69e-05, 5.68e-05, 5.68e-05, 28910.14402508], [1516870080000, 5.688e-05, 5.689e-05, 5.68e-05, 5.68e-05, 56990.06235489], [1516870140000, 5.684e-05, 5.684e-05, 5.67e-05, 5.68e-05, 55391.5805693], [1516870200000, 5.68e-05, 5.68e-05, 5.67e-05, 5.68e-05, 21813.90901805], [1516870260000, 5.672e-05, 5.68e-05, 5.67e-05, 5.68e-05, 25429.56761433], [1516870320000, 5.68e-05, 5.683e-05, 5.68e-05, 5.682e-05, 14857.00442605], [1516870380000, 5.682e-05, 5.687e-05, 5.68e-05, 5.68e-05, 38788.01683175], [1516870440000, 5.68e-05, 5.682e-05, 5.68e-05, 5.681e-05, 39866.5018957], [1516870500000, 5.681e-05, 5.686e-05, 5.68e-05, 5.682e-05, 28892.1756222], [1516870560000, 5.686e-05, 5.686e-05, 5.683e-05, 5.684e-05, 23939.75443996], [1516870620000, 5.684e-05, 5.684e-05, 5.683e-05, 5.683e-05, 14278.30715647], [1516870680000, 5.683e-05, 5.685e-05, 5.683e-05, 5.683e-05, 10174.68749085], [1516870740000, 5.683e-05, 5.685e-05, 5.683e-05, 5.685e-05, 22035.12198383], [1516870800000, 5.685e-05, 5.685e-05, 5.682e-05, 5.682e-05, 9598.18163701], [1516870860000, 5.682e-05, 5.685e-05, 5.672e-05, 5.672e-05, 50337.08633261], [1516870920000, 5.672e-05, 5.672e-05, 5.658e-05, 5.658e-05, 82251.84835339], [1516870980000, 5.658e-05, 5.682e-05, 5.658e-05, 5.68e-05, 9320.39976604], [1516871040000, 5.68e-05, 5.68e-05, 5.658e-05, 5.679e-05, 7339.1197838], [1516871100000, 5.673e-05, 5.679e-05, 5.673e-05, 5.679e-05, 2728.32791885], [1516871160000, 5.673e-05, 5.678e-05, 5.659e-05, 5.659e-05, 5557.77622032], [1516871220000, 5.659e-05, 5.669e-05, 5.654e-05, 5.654e-05, 19210.99208446], [1516871280000, 5.654e-05, 5.667e-05, 5.654e-05, 5.654e-05, 13252.91768109], [1516871340000, 5.654e-05, 5.655e-05, 5.651e-05, 5.653e-05, 13454.44697262], [1516871400000, 5.652e-05, 5.653e-05, 5.623e-05, 5.653e-05, 32560.7753613], [1516871460000, 5.645e-05, 5.669e-05, 5.645e-05, 5.656e-05, 4086.57267305], [1516871520000, 5.656e-05, 5.669e-05, 5.656e-05, 5.656e-05, 3728.25925648], [1516871580000, 5.657e-05, 5.665e-05, 5.64e-05, 5.665e-05, 104362.47105258], [1516871640000, 5.665e-05, 5.665e-05, 5.64e-05, 5.663e-05, 187980.56761726], [1516871700000, 5.663e-05, 5.665e-05, 5.663e-05, 5.665e-05, 163890.11048421], [1516871760000, 5.657e-05, 5.677e-05, 5.657e-05, 5.676e-05, 89944.71822875], [1516871820000, 5.676e-05, 5.676e-05, 5.642e-05, 5.648e-05, 27419.75496623], [1516871880000, 5.65e-05, 5.679e-05, 5.643e-05, 5.678e-05, 79210.84077949], [1516871940000, 5.678e-05, 5.679e-05, 5.659e-05, 5.659e-05, 13510.27290156], [1516872000000, 5.66e-05, 5.679e-05, 5.659e-05, 5.679e-05, 13366.82916322], [1516872060000, 5.67e-05, 5.678e-05, 5.67e-05, 5.677e-05, 11679.42337993], [1516872120000, 5.67e-05, 5.677e-05, 5.659e-05, 5.659e-05, 9137.47664491], [1516872180000, 5.659e-05, 5.677e-05, 5.659e-05, 5.677e-05, 19126.02949431], [1516872240000, 5.66e-05, 5.677e-05, 5.66e-05, 5.662e-05, 2165.16767596], [1516872300000, 5.662e-05, 5.677e-05, 5.662e-05, 5.677e-05, 4881.96705247], [1516872360000, 5.666e-05, 5.677e-05, 5.666e-05, 5.677e-05, 51109.80318122], [1516872420000, 5.666e-05, 5.678e-05, 5.666e-05, 5.668e-05, 39066.31812968], [1516872480000, 5.677e-05, 5.682e-05, 5.677e-05, 5.682e-05, 249200.85657504], [1516872540000, 5.684e-05, 5.699e-05, 5.684e-05, 5.687e-05, 29925.65387716], [1516872600000, 5.688e-05, 5.7e-05, 5.687e-05, 5.699e-05, 30087.95829906], [1516872660000, 5.689e-05, 5.699e-05, 5.685e-05, 5.685e-05, 22130.89249519], [1516872720000, 5.689e-05, 5.69e-05, 5.682e-05, 5.683e-05, 34314.88862], [1516872780000, 5.686e-05, 5.686e-05, 5.683e-05, 5.686e-05, 21994.29035238], [1516872840000, 5.686e-05, 5.686e-05, 5.666e-05, 5.685e-05, 11705.78182947], [1516872900000, 5.684e-05, 5.698e-05, 5.682e-05, 5.697e-05, 26751.87203799], [1516872960000, 5.697e-05, 5.699e-05, 5.687e-05, 5.687e-05, 31877.42221433], [1516873020000, 5.687e-05, 5.699e-05, 5.687e-05, 5.699e-05, 35243.42225895], [1516873080000, 5.699e-05, 5.7e-05, 5.687e-05, 5.699e-05, 18113.76565844], [1516873140000, 5.688e-05, 5.7e-05, 5.688e-05, 5.695e-05, 16095.98534746], [1516873200000, 5.695e-05, 5.698e-05, 5.687e-05, 5.69e-05, 23840.28048378], [1516873260000, 5.69e-05, 5.695e-05, 5.69e-05, 5.69e-05, 12837.96177715], [1516873320000, 5.692e-05, 5.692e-05, 5.687e-05, 5.687e-05, 31374.90646666], [1516873380000, 5.687e-05, 5.687e-05, 5.686e-05, 5.687e-05, 5670.17560978], [1516873440000, 5.686e-05, 5.69e-05, 5.686e-05, 5.687e-05, 20691.9068404], [1516873500000, 5.687e-05, 5.687e-05, 5.666e-05, 5.666e-05, 4595.11459903], [1516873560000, 5.671e-05, 5.687e-05, 5.671e-05, 5.687e-05, 17647.81567127], [1516873620000, 5.687e-05, 5.698e-05, 5.686e-05, 5.687e-05, 32955.36917817], [1516873680000, 5.687e-05, 5.7e-05, 5.687e-05, 5.688e-05, 9317.99562989], [1516873740000, 5.7e-05, 5.7e-05, 5.688e-05, 5.698e-05, 10352.59267449], [1516873800000, 5.689e-05, 5.7e-05, 5.689e-05, 5.698e-05, 30050.41151529], [1516873860000, 5.7e-05, 5.7e-05, 5.698e-05, 5.7e-05, 60556.68545034], [1516873920000, 5.7e-05, 5.704e-05, 5.699e-05, 5.704e-05, 47074.36813519], [1516873980000, 5.711e-05, 5.718e-05, 5.704e-05, 5.718e-05, 20955.43559469], [1516874040000, 5.717e-05, 5.726e-05, 5.713e-05, 5.726e-05, 24378.67368001], [1516874100000, 5.726e-05, 5.737e-05, 5.724e-05, 5.734e-05, 26954.01765583], [1516874160000, 5.734e-05, 5.734e-05, 5.726e-05, 5.726e-05, 64705.00077215], [1516874220000, 5.733e-05, 5.733e-05, 5.724e-05, 5.732e-05, 27728.22030173], [1516874280000, 5.724e-05, 5.731e-05, 5.711e-05, 5.724e-05, 42054.46709068], [1516874340000, 5.724e-05, 5.724e-05, 5.711e-05, 5.723e-05, 4266.78867901], [1516874400000, 5.731e-05, 5.731e-05, 5.723e-05, 5.73e-05, 19333.72928393], [1516874460000, 5.73e-05, 5.731e-05, 5.711e-05, 5.723e-05, 18927.99614846], [1516874520000, 5.723e-05, 5.731e-05, 5.72e-05, 5.72e-05, 19338.32615909], [1516874580000, 5.72e-05, 5.72e-05, 5.712e-05, 5.72e-05, 12691.6084733], [1516874640000, 5.72e-05, 5.72e-05, 5.712e-05, 5.719e-05, 14751.37719231], [1516874700000, 5.718e-05, 5.72e-05, 5.712e-05, 5.719e-05, 56548.511404], [1516874760000, 5.72e-05, 5.729e-05, 5.719e-05, 5.72e-05, 63182.31493413], [1516874820000, 5.729e-05, 5.73e-05, 5.7e-05, 5.7e-05, 86527.46073085], [1516874880000, 5.7e-05, 5.7e-05, 5.699e-05, 5.7e-05, 37970.374969], [1516874940000, 5.698e-05, 5.7e-05, 5.698e-05, 5.699e-05, 19795.38711331], [1516875000000, 5.699e-05, 5.699e-05, 5.691e-05, 5.691e-05, 23989.86888459], [1516875060000, 5.69e-05, 5.7e-05, 5.69e-05, 5.7e-05, 22317.45726612], [1516875120000, 5.691e-05, 5.7e-05, 5.691e-05, 5.699e-05, 7403.58823083], [1516875180000, 5.695e-05, 5.699e-05, 5.693e-05, 5.694e-05, 6468.19696313], [1516875240000, 5.694e-05, 5.699e-05, 5.693e-05, 5.699e-05, 14406.50880385], [1516875300000, 5.694e-05, 5.699e-05, 5.687e-05, 5.687e-05, 109890.91464323], [1516875360000, 5.699e-05, 5.7e-05, 5.678e-05, 5.7e-05, 180121.34150672], [1516875420000, 5.7e-05, 5.7e-05, 5.69e-05, 5.691e-05, 100023.04267246], [1516875480000, 5.692e-05, 5.699e-05, 5.659e-05, 5.699e-05, 185232.59063748], [1516875540000, 5.698e-05, 5.7e-05, 5.698e-05, 5.699e-05, 24114.50180143], [1516875600000, 5.7e-05, 5.7e-05, 5.699e-05, 5.7e-05, 22272.28312303], [1516875660000, 5.699e-05, 5.7e-05, 5.699e-05, 5.699e-05, 4977.05149678], [1516875720000, 5.699e-05, 5.7e-05, 5.699e-05, 5.7e-05, 15689.33872712], [1516875780000, 5.7e-05, 5.7e-05, 5.699e-05, 5.699e-05, 22172.18495364], [1516875840000, 5.699e-05, 5.7e-05, 5.699e-05, 5.699e-05, 13922.227785], [1516875900000, 5.699e-05, 5.7e-05, 5.699e-05, 5.7e-05, 18856.52722549], [1516875960000, 5.7e-05, 5.715e-05, 5.7e-05, 5.715e-05, 21402.02245379], [1516876020000, 5.714e-05, 5.719e-05, 5.7e-05, 5.719e-05, 14271.90188041], [1516876080000, 5.705e-05, 5.718e-05, 5.705e-05, 5.71e-05, 1929.13574542], [1516876140000, 5.718e-05, 5.72e-05, 5.712e-05, 5.718e-05, 22487.79212659], [1516876200000, 5.718e-05, 5.72e-05, 5.718e-05, 5.719e-05, 5133.36793677], [1516876260000, 5.72e-05, 5.72e-05, 5.718e-05, 5.718e-05, 31071.82465711], [1516876320000, 5.718e-05, 5.718e-05, 5.717e-05, 5.718e-05, 10142.67712795], [1516876380000, 5.718e-05, 5.719e-05, 5.716e-05, 5.718e-05, 19292.53370009], [1516876440000, 5.719e-05, 5.719e-05, 5.69e-05, 5.718e-05, 135772.68058081], [1516876500000, 5.717e-05, 5.72e-05, 5.69e-05, 5.72e-05, 49610.20947305], [1516876560000, 5.719e-05, 5.72e-05, 5.719e-05, 5.72e-05, 25009.89919688], [1516876620000, 5.72e-05, 5.72e-05, 5.719e-05, 5.72e-05, 88323.01245609], [1516876680000, 5.727e-05, 5.729e-05, 5.719e-05, 5.719e-05, 25344.38277074], [1516876740000, 5.72e-05, 5.721e-05, 5.719e-05, 5.72e-05, 124951.90849112], [1516876800000, 5.72e-05, 5.728e-05, 5.719e-05, 5.727e-05, 38538.15536695], [1516876860000, 5.726e-05, 5.73e-05, 5.726e-05, 5.727e-05, 18531.30421387], [1516876920000, 5.729e-05, 5.73e-05, 5.727e-05, 5.729e-05, 29136.64375998], [1516876980000, 5.729e-05, 5.73e-05, 5.729e-05, 5.73e-05, 12747.39260652], [1516877040000, 5.73e-05, 5.73e-05, 5.728e-05, 5.729e-05, 16318.17118063], [1516877100000, 5.73e-05, 5.73e-05, 5.729e-05, 5.73e-05, 35986.76136413], [1516877160000, 5.73e-05, 5.73e-05, 5.728e-05, 5.73e-05, 41811.19788017], [1516877220000, 5.73e-05, 5.73e-05, 5.728e-05, 5.729e-05, 38772.28512286], [1516877280000, 5.728e-05, 5.729e-05, 5.727e-05, 5.727e-05, 6220.79606573], [1516877340000, 5.727e-05, 5.727e-05, 5.719e-05, 5.726e-05, 31273.21891456], [1516877400000, 5.726e-05, 5.727e-05, 5.719e-05, 5.72e-05, 70236.75388014], [1516877460000, 5.72e-05, 5.722e-05, 5.719e-05, 5.719e-05, 98766.65966887], [1516877520000, 5.719e-05, 5.721e-05, 5.661e-05, 5.7e-05, 50007.97281625], [1516877580000, 5.7e-05, 5.715e-05, 5.7e-05, 5.715e-05, 9426.68663758], [1516877640000, 5.714e-05, 5.715e-05, 5.702e-05, 5.705e-05, 2897.6465057], [1516877700000, 5.705e-05, 5.705e-05, 5.703e-05, 5.705e-05, 13917.48126985], [1516877760000, 5.714e-05, 5.714e-05, 5.706e-05, 5.714e-05, 1783.56417709], [1516877820000, 5.714e-05, 5.714e-05, 5.714e-05, 5.714e-05, 7510.95141273], [1516877880000, 5.714e-05, 5.714e-05, 5.709e-05, 5.714e-05, 1442.565348], [1516877940000, 5.713e-05, 5.717e-05, 5.713e-05, 5.715e-05, 37242.78994221], [1516878000000, 5.717e-05, 5.717e-05, 5.714e-05, 5.716e-05, 29264.4147245], [1516878060000, 5.716e-05, 5.717e-05, 5.715e-05, 5.716e-05, 17160.63806558], [1516878120000, 5.716e-05, 5.716e-05, 5.713e-05, 5.714e-05, 23601.31516582], [1516878180000, 5.713e-05, 5.714e-05, 5.71e-05, 5.71e-05, 2980.8026377], [1516878240000, 5.71e-05, 5.713e-05, 5.702e-05, 5.713e-05, 8390.99097336], [1516878300000, 5.712e-05, 5.716e-05, 5.712e-05, 5.714e-05, 17193.85077903], [1516878360000, 5.714e-05, 5.716e-05, 5.714e-05, 5.716e-05, 2147.31847952], [1516878420000, 5.716e-05, 5.728e-05, 5.707e-05, 5.728e-05, 17256.70606994], [1516878480000, 5.727e-05, 5.729e-05, 5.722e-05, 5.729e-05, 12552.46716749], [1516878540000, 5.729e-05, 5.73e-05, 5.729e-05, 5.73e-05, 11892.08245161], [1516878600000, 5.73e-05, 5.73e-05, 5.728e-05, 5.728e-05, 36603.6315283], [1516878660000, 5.729e-05, 5.73e-05, 5.729e-05, 5.73e-05, 42543.20952294], [1516878720000, 5.73e-05, 5.735e-05, 5.73e-05, 5.735e-05, 22388.45308114], [1516878780000, 5.735e-05, 5.735e-05, 5.712e-05, 5.735e-05, 39292.00339378], [1516878840000, 5.735e-05, 5.735e-05, 5.717e-05, 5.734e-05, 22150.71683305], [1516878900000, 5.719e-05, 5.735e-05, 5.719e-05, 5.735e-05, 12613.21791364], [1516878960000, 5.735e-05, 5.735e-05, 5.734e-05, 5.735e-05, 21031.18496859], [1516879020000, 5.735e-05, 5.735e-05, 5.732e-05, 5.732e-05, 16224.78119561], [1516879080000, 5.736e-05, 5.739e-05, 5.735e-05, 5.737e-05, 2554.3384355], [1516879140000, 5.737e-05, 5.739e-05, 5.734e-05, 5.734e-05, 17564.3826179], [1516879200000, 5.739e-05, 5.74e-05, 5.734e-05, 5.74e-05, 8548.07875788], [1516879260000, 5.739e-05, 5.74e-05, 5.736e-05, 5.736e-05, 5198.64067774], [1516879320000, 5.736e-05, 5.736e-05, 5.712e-05, 5.713e-05, 27894.41270807], [1516879380000, 5.713e-05, 5.751e-05, 5.712e-05, 5.713e-05, 107564.08518495], [1516879440000, 5.736e-05, 5.751e-05, 5.734e-05, 5.751e-05, 70288.33770209], [1516879500000, 5.74e-05, 5.751e-05, 5.678e-05, 5.734e-05, 56622.6433363], [1516879560000, 5.733e-05, 5.733e-05, 5.715e-05, 5.715e-05, 1035.0011519], [1516879620000, 5.715e-05, 5.715e-05, 5.701e-05, 5.714e-05, 33541.08050594], [1516879680000, 5.714e-05, 5.733e-05, 5.714e-05, 5.733e-05, 47372.16615384], [1516879740000, 5.721e-05, 5.75e-05, 5.72e-05, 5.75e-05, 20625.32146934], [1516879800000, 5.747e-05, 5.75e-05, 5.747e-05, 5.75e-05, 60067.21065712], [1516879860000, 5.75e-05, 5.751e-05, 5.733e-05, 5.75e-05, 35001.23716615], [1516879920000, 5.75e-05, 5.75e-05, 5.734e-05, 5.734e-05, 11576.94864549], [1516879980000, 5.748e-05, 5.751e-05, 5.748e-05, 5.75e-05, 9182.04727141], [1516880040000, 5.751e-05, 5.751e-05, 5.75e-05, 5.751e-05, 4376.34196111], [1516880100000, 5.751e-05, 5.751e-05, 5.748e-05, 5.751e-05, 13012.81707223], [1516880160000, 5.751e-05, 5.751e-05, 5.748e-05, 5.751e-05, 14074.03397889], [1516880220000, 5.748e-05, 5.751e-05, 5.748e-05, 5.75e-05, 21428.26732304], [1516880280000, 5.75e-05, 5.751e-05, 5.74e-05, 5.75e-05, 17543.2759827], [1516880340000, 5.75e-05, 5.751e-05, 5.74e-05, 5.74e-05, 17350.33864793], [1516880400000, 5.74e-05, 5.751e-05, 5.74e-05, 5.743e-05, 9342.12503478], [1516880460000, 5.749e-05, 5.75e-05, 5.743e-05, 5.744e-05, 6555.63800947], [1516880520000, 5.749e-05, 5.749e-05, 5.743e-05, 5.744e-05, 6284.956569], [1516880580000, 5.743e-05, 5.744e-05, 5.734e-05, 5.74e-05, 14058.00475767], [1516880640000, 5.74e-05, 5.74e-05, 5.735e-05, 5.74e-05, 1856.99300122], [1516880700000, 5.74e-05, 5.744e-05, 5.74e-05, 5.744e-05, 15250.69212622], [1516880760000, 5.744e-05, 5.751e-05, 5.744e-05, 5.751e-05, 73871.60160708], [1516880820000, 5.745e-05, 5.755e-05, 5.745e-05, 5.751e-05, 30495.02502734], [1516880880000, 5.755e-05, 5.755e-05, 5.744e-05, 5.755e-05, 57234.68694973], [1516880940000, 5.755e-05, 5.759e-05, 5.754e-05, 5.759e-05, 21866.37088913], [1516881000000, 5.76e-05, 5.763e-05, 5.756e-05, 5.763e-05, 28497.82550927], [1516881060000, 5.761e-05, 5.763e-05, 5.76e-05, 5.763e-05, 11748.06334778], [1516881120000, 5.763e-05, 5.77e-05, 5.754e-05, 5.759e-05, 22795.70651574], [1516881180000, 5.755e-05, 5.77e-05, 5.755e-05, 5.756e-05, 26683.08069185], [1516881240000, 5.755e-05, 5.758e-05, 5.755e-05, 5.758e-05, 8585.06947917], [1516881300000, 5.76e-05, 5.77e-05, 5.756e-05, 5.768e-05, 35068.92824338], [1516881360000, 5.757e-05, 5.767e-05, 5.744e-05, 5.765e-05, 109138.95555401], [1516881420000, 5.765e-05, 5.765e-05, 5.735e-05, 5.74e-05, 36860.82833803], [1516881480000, 5.74e-05, 5.754e-05, 5.681e-05, 5.702e-05, 89085.38239729], [1516881540000, 5.695e-05, 5.752e-05, 5.677e-05, 5.727e-05, 164335.97740538], [1516881600000, 5.727e-05, 5.729e-05, 5.695e-05, 5.719e-05, 17739.37960709], [1516881660000, 5.718e-05, 5.72e-05, 5.701e-05, 5.719e-05, 102060.0256558], [1516881720000, 5.719e-05, 5.72e-05, 5.718e-05, 5.72e-05, 10102.18879574], [1516881780000, 5.72e-05, 5.72e-05, 5.718e-05, 5.719e-05, 32792.28129289], [1516881840000, 5.719e-05, 5.72e-05, 5.71e-05, 5.719e-05, 33484.44047585], [1516881900000, 5.719e-05, 5.719e-05, 5.711e-05, 5.717e-05, 20315.09119808], [1516881960000, 5.717e-05, 5.719e-05, 5.714e-05, 5.719e-05, 18067.40679453], [1516882020000, 5.719e-05, 5.72e-05, 5.711e-05, 5.714e-05, 21146.30154656], [1516882080000, 5.714e-05, 5.719e-05, 5.703e-05, 5.719e-05, 37215.43227019], [1516882140000, 5.719e-05, 5.719e-05, 5.703e-05, 5.719e-05, 18647.440621], [1516882200000, 5.719e-05, 5.719e-05, 5.71e-05, 5.719e-05, 47264.40180221], [1516882260000, 5.719e-05, 5.719e-05, 5.709e-05, 5.718e-05, 71648.10213971], [1516882320000, 5.719e-05, 5.719e-05, 5.718e-05, 5.719e-05, 28954.8983539], [1516882380000, 5.719e-05, 5.719e-05, 5.713e-05, 5.719e-05, 87568.88322094], [1516882440000, 5.715e-05, 5.719e-05, 5.714e-05, 5.719e-05, 61303.02674555], [1516882500000, 5.719e-05, 5.719e-05, 5.713e-05, 5.719e-05, 25687.8344684], [1516882560000, 5.716e-05, 5.72e-05, 5.715e-05, 5.72e-05, 50398.51551834], [1516882620000, 5.72e-05, 5.728e-05, 5.703e-05, 5.704e-05, 25437.15798564], [1516882680000, 5.72e-05, 5.728e-05, 5.714e-05, 5.728e-05, 14827.6274445], [1516882740000, 5.728e-05, 5.742e-05, 5.721e-05, 5.722e-05, 18596.08299576], [1516882800000, 5.722e-05, 5.742e-05, 5.722e-05, 5.74e-05, 7186.76882922], [1516882860000, 5.733e-05, 5.74e-05, 5.722e-05, 5.74e-05, 24854.85824392], [1516882920000, 5.74e-05, 5.74e-05, 5.722e-05, 5.74e-05, 7420.62725195], [1516882980000, 5.723e-05, 5.739e-05, 5.722e-05, 5.724e-05, 17101.79815931], [1516883040000, 5.737e-05, 5.737e-05, 5.722e-05, 5.735e-05, 8158.74899594], [1516883100000, 5.735e-05, 5.741e-05, 5.72e-05, 5.74e-05, 38792.70299961], [1516883160000, 5.734e-05, 5.742e-05, 5.721e-05, 5.732e-05, 2458.19909836], [1516883220000, 5.732e-05, 5.732e-05, 5.722e-05, 5.722e-05, 1625.35451019], [1516883280000, 5.722e-05, 5.741e-05, 5.721e-05, 5.733e-05, 14746.63570885], [1516883340000, 5.733e-05, 5.733e-05, 5.721e-05, 5.732e-05, 24032.83038068], [1516883400000, 5.732e-05, 5.732e-05, 5.721e-05, 5.73e-05, 12592.00061865], [1516883460000, 5.721e-05, 5.726e-05, 5.721e-05, 5.726e-05, 20696.65856794], [1516883520000, 5.726e-05, 5.732e-05, 5.72e-05, 5.72e-05, 9712.5023067], [1516883580000, 5.726e-05, 5.733e-05, 5.721e-05, 5.725e-05, 4587.25238717], [1516883640000, 5.725e-05, 5.725e-05, 5.712e-05, 5.712e-05, 14480.17625149], [1516883700000, 5.712e-05, 5.713e-05, 5.711e-05, 5.712e-05, 68941.6230962], [1516883760000, 5.712e-05, 5.712e-05, 5.706e-05, 5.712e-05, 10104.230377], [1516883820000, 5.707e-05, 5.711e-05, 5.707e-05, 5.711e-05, 16354.32001316], [1516883880000, 5.711e-05, 5.711e-05, 5.703e-05, 5.705e-05, 19086.78450343], [1516883940000, 5.705e-05, 5.706e-05, 5.703e-05, 5.705e-05, 25806.49866501], [1516884000000, 5.705e-05, 5.711e-05, 5.705e-05, 5.711e-05, 27590.14153786], [1516884060000, 5.711e-05, 5.712e-05, 5.705e-05, 5.712e-05, 47146.52738771], [1516884120000, 5.712e-05, 5.712e-05, 5.712e-05, 5.712e-05, 20924.02015207], [1516884180000, 5.723e-05, 5.725e-05, 5.723e-05, 5.725e-05, 9752.86193037], [1516884240000, 5.725e-05, 5.728e-05, 5.712e-05, 5.728e-05, 4473.06048799], [1516884300000, 5.727e-05, 5.728e-05, 5.726e-05, 5.727e-05, 6796.99444259], [1516884360000, 5.728e-05, 5.728e-05, 5.725e-05, 5.725e-05, 55952.0320444], [1516884420000, 5.724e-05, 5.728e-05, 5.722e-05, 5.728e-05, 16696.7678713], [1516884480000, 5.728e-05, 5.729e-05, 5.725e-05, 5.725e-05, 33594.92242033], [1516884540000, 5.725e-05, 5.728e-05, 5.721e-05, 5.721e-05, 37088.3586912], [1516884600000, 5.728e-05, 5.75e-05, 5.712e-05, 5.728e-05, 160448.2725868], [1516884660000, 5.712e-05, 5.734e-05, 5.706e-05, 5.734e-05, 4788.56708246], [1516884720000, 5.734e-05, 5.734e-05, 5.71e-05, 5.733e-05, 4241.66615036], [1516884780000, 5.707e-05, 5.742e-05, 5.706e-05, 5.706e-05, 31115.47828196], [1516884840000, 5.733e-05, 5.739e-05, 5.708e-05, 5.708e-05, 16432.58130513], [1516884900000, 5.733e-05, 5.738e-05, 5.706e-05, 5.736e-05, 22217.29759899], [1516884960000, 5.706e-05, 5.736e-05, 5.706e-05, 5.733e-05, 10415.41855621], [1516885020000, 5.708e-05, 5.732e-05, 5.705e-05, 5.705e-05, 22967.84499472], [1516885080000, 5.706e-05, 5.731e-05, 5.706e-05, 5.72e-05, 6679.96175322], [1516885140000, 5.718e-05, 5.72e-05, 5.71e-05, 5.72e-05, 3045.49349788], [1516885200000, 5.711e-05, 5.711e-05, 5.71e-05, 5.71e-05, 10611.44063509], [1516885260000, 5.72e-05, 5.73e-05, 5.71e-05, 5.721e-05, 8063.14725894], [1516885320000, 5.721e-05, 5.725e-05, 5.7e-05, 5.7e-05, 56322.7119189], [1516885380000, 5.701e-05, 5.709e-05, 5.7e-05, 5.708e-05, 13996.93132131], [1516885440000, 5.708e-05, 5.719e-05, 5.708e-05, 5.709e-05, 21354.75426928], [1516885500000, 5.716e-05, 5.719e-05, 5.708e-05, 5.708e-05, 5522.23355215], [1516885560000, 5.709e-05, 5.718e-05, 5.708e-05, 5.715e-05, 7495.55306328], [1516885620000, 5.715e-05, 5.715e-05, 5.708e-05, 5.708e-05, 7694.84967001], [1516885680000, 5.708e-05, 5.708e-05, 5.701e-05, 5.707e-05, 9804.87244466], [1516885740000, 5.706e-05, 5.707e-05, 5.701e-05, 5.707e-05, 13883.6955602], [1516885800000, 5.707e-05, 5.707e-05, 5.706e-05, 5.707e-05, 4302.54144301], [1516885860000, 5.707e-05, 5.714e-05, 5.697e-05, 5.698e-05, 130349.91409757], [1516885920000, 5.698e-05, 5.71e-05, 5.687e-05, 5.697e-05, 58399.47920633], [1516885980000, 5.697e-05, 5.709e-05, 5.696e-05, 5.697e-05, 32162.43667413], [1516886040000, 5.697e-05, 5.709e-05, 5.697e-05, 5.702e-05, 4791.33424073], [1516886100000, 5.708e-05, 5.708e-05, 5.704e-05, 5.704e-05, 1500.78401273], [1516886160000, 5.702e-05, 5.705e-05, 5.701e-05, 5.704e-05, 31595.92205764], [1516886220000, 5.704e-05, 5.704e-05, 5.701e-05, 5.704e-05, 2901.38687347], [1516886280000, 5.704e-05, 5.705e-05, 5.687e-05, 5.69e-05, 115346.39107036], [1516886340000, 5.695e-05, 5.695e-05, 5.692e-05, 5.694e-05, 812.66021957], [1516886400000, 5.692e-05, 5.694e-05, 5.668e-05, 5.674e-05, 95195.14268149], [1516886460000, 5.674e-05, 5.69e-05, 5.658e-05, 5.658e-05, 54482.00028867], [1516886520000, 5.674e-05, 5.69e-05, 5.655e-05, 5.69e-05, 33417.96046277], [1516886580000, 5.694e-05, 5.694e-05, 5.676e-05, 5.676e-05, 16686.72986247], [1516886640000, 5.676e-05, 5.69e-05, 5.664e-05, 5.69e-05, 14305.44387243], [1516886700000, 5.689e-05, 5.689e-05, 5.675e-05, 5.678e-05, 16809.63466957], [1516886760000, 5.678e-05, 5.689e-05, 5.674e-05, 5.68e-05, 41587.84538006], [1516886820000, 5.68e-05, 5.69e-05, 5.68e-05, 5.69e-05, 60144.48229803], [1516886880000, 5.688e-05, 5.7e-05, 5.688e-05, 5.694e-05, 11119.97721768], [1516886940000, 5.694e-05, 5.7e-05, 5.678e-05, 5.68e-05, 60130.86152502], [1516887000000, 5.68e-05, 5.68e-05, 5.678e-05, 5.68e-05, 109850.99249127], [1516887060000, 5.68e-05, 5.68e-05, 5.68e-05, 5.68e-05, 21438.2954048], [1516887120000, 5.682e-05, 5.7e-05, 5.68e-05, 5.698e-05, 3069.86983134], [1516887180000, 5.699e-05, 5.7e-05, 5.699e-05, 5.7e-05, 19421.58818312], [1516887240000, 5.7e-05, 5.7e-05, 5.698e-05, 5.7e-05, 23385.95979269], [1516887300000, 5.7e-05, 5.7e-05, 5.699e-05, 5.7e-05, 1394.22404444], [1516887360000, 5.7e-05, 5.7e-05, 5.699e-05, 5.7e-05, 14618.03847216], [1516887420000, 5.7e-05, 5.71e-05, 5.698e-05, 5.71e-05, 61701.39726008], [1516887480000, 5.701e-05, 5.71e-05, 5.675e-05, 5.686e-05, 20685.85949258], [1516887540000, 5.698e-05, 5.698e-05, 5.696e-05, 5.696e-05, 7791.78512953], [1516887600000, 5.696e-05, 5.696e-05, 5.686e-05, 5.686e-05, 3286.80539352], [1516887660000, 5.695e-05, 5.697e-05, 5.69e-05, 5.697e-05, 11441.55511134], [1516887720000, 5.695e-05, 5.698e-05, 5.69e-05, 5.697e-05, 8262.03145731], [1516887780000, 5.697e-05, 5.697e-05, 5.69e-05, 5.69e-05, 1727.71140713], [1516887840000, 5.697e-05, 5.697e-05, 5.69e-05, 5.691e-05, 3479.36964064], [1516887900000, 5.696e-05, 5.697e-05, 5.691e-05, 5.696e-05, 3357.28076121], [1516887960000, 5.696e-05, 5.696e-05, 5.687e-05, 5.687e-05, 104275.69570764], [1516888020000, 5.687e-05, 5.698e-05, 5.687e-05, 5.698e-05, 49904.93159798], [1516888080000, 5.699e-05, 5.699e-05, 5.698e-05, 5.698e-05, 12303.12274793], [1516888140000, 5.699e-05, 5.709e-05, 5.697e-05, 5.709e-05, 13384.25591881], [1516888200000, 5.709e-05, 5.71e-05, 5.698e-05, 5.698e-05, 22781.82914174], [1516888260000, 5.698e-05, 5.715e-05, 5.693e-05, 5.715e-05, 30298.14698782], [1516888320000, 5.715e-05, 5.718e-05, 5.715e-05, 5.718e-05, 16657.90086627], [1516888380000, 5.718e-05, 5.749e-05, 5.718e-05, 5.742e-05, 57114.33696135], [1516888440000, 5.743e-05, 5.752e-05, 5.741e-05, 5.741e-05, 70044.03169236], [1516888500000, 5.741e-05, 5.754e-05, 5.74e-05, 5.74e-05, 81311.81917534], [1516888560000, 5.74e-05, 5.753e-05, 5.7e-05, 5.75e-05, 40022.87025546], [1516888620000, 5.708e-05, 5.755e-05, 5.708e-05, 5.748e-05, 7571.67197482], [1516888680000, 5.75e-05, 5.755e-05, 5.747e-05, 5.75e-05, 12248.5042491], [1516888740000, 5.75e-05, 5.75e-05, 5.742e-05, 5.742e-05, 5900.2128695], [1516888800000, 5.742e-05, 5.742e-05, 5.717e-05, 5.717e-05, 3855.69887561], [1516888860000, 5.717e-05, 5.717e-05, 5.716e-05, 5.717e-05, 12490.32372477], [1516888920000, 5.723e-05, 5.739e-05, 5.723e-05, 5.739e-05, 4467.8878997], [1516888980000, 5.723e-05, 5.742e-05, 5.723e-05, 5.74e-05, 5360.59256472], [1516889040000, 5.742e-05, 5.742e-05, 5.739e-05, 5.739e-05, 9418.72452004], [1516889100000, 5.739e-05, 5.739e-05, 5.71e-05, 5.738e-05, 24690.44242781], [1516889160000, 5.739e-05, 5.739e-05, 5.738e-05, 5.739e-05, 6759.75623953], [1516889220000, 5.738e-05, 5.739e-05, 5.738e-05, 5.739e-05, 632.67341122], [1516889280000, 5.739e-05, 5.739e-05, 5.716e-05, 5.739e-05, 33963.86063882], [1516889340000, 5.739e-05, 5.739e-05, 5.716e-05, 5.739e-05, 12409.39385751], [1516889400000, 5.739e-05, 5.742e-05, 5.739e-05, 5.742e-05, 20345.68369939], [1516889460000, 5.742e-05, 5.742e-05, 5.737e-05, 5.742e-05, 5774.59442466], [1516889520000, 5.742e-05, 5.748e-05, 5.742e-05, 5.748e-05, 3234.26978031], [1516889580000, 5.743e-05, 5.748e-05, 5.743e-05, 5.748e-05, 4973.06465095], [1516889640000, 5.744e-05, 5.748e-05, 5.744e-05, 5.744e-05, 4635.78574401], [1516889700000, 5.746e-05, 5.746e-05, 5.742e-05, 5.744e-05, 11565.64597207], [1516889760000, 5.744e-05, 5.747e-05, 5.742e-05, 5.746e-05, 29054.68124089], [1516889820000, 5.746e-05, 5.746e-05, 5.74e-05, 5.74e-05, 19130.64207089], [1516889880000, 5.739e-05, 5.74e-05, 5.737e-05, 5.74e-05, 6931.42687827], [1516889940000, 5.745e-05, 5.746e-05, 5.74e-05, 5.746e-05, 3634.23691395], [1516890000000, 5.746e-05, 5.75e-05, 5.746e-05, 5.747e-05, 216712.26024743], [1516890060000, 5.747e-05, 5.747e-05, 5.747e-05, 5.747e-05, 15166.59210101], [1516890120000, 5.747e-05, 5.747e-05, 5.746e-05, 5.747e-05, 26383.57185654], [1516890180000, 5.747e-05, 5.75e-05, 5.746e-05, 5.75e-05, 19616.56448704], [1516890240000, 5.75e-05, 5.757e-05, 5.75e-05, 5.755e-05, 11202.7911724], [1516890300000, 5.756e-05, 5.77e-05, 5.747e-05, 5.77e-05, 69251.39655535], [1516890360000, 5.77e-05, 5.77e-05, 5.769e-05, 5.769e-05, 61522.38722473], [1516890420000, 5.769e-05, 5.77e-05, 5.768e-05, 5.768e-05, 19689.71665245], [1516890480000, 5.77e-05, 5.77e-05, 5.769e-05, 5.769e-05, 12713.14340867], [1516890540000, 5.769e-05, 5.77e-05, 5.747e-05, 5.747e-05, 26788.76890433], [1516890600000, 5.747e-05, 5.768e-05, 5.746e-05, 5.753e-05, 8515.45521429], [1516890660000, 5.759e-05, 5.767e-05, 5.759e-05, 5.76e-05, 6241.16253569], [1516890720000, 5.766e-05, 5.769e-05, 5.759e-05, 5.765e-05, 19436.12041959], [1516890780000, 5.765e-05, 5.773e-05, 5.765e-05, 5.769e-05, 145800.02493375], [1516890840000, 5.769e-05, 5.774e-05, 5.765e-05, 5.766e-05, 22882.12593489], [1516890900000, 5.766e-05, 5.766e-05, 5.764e-05, 5.765e-05, 56445.99806904], [1516890960000, 5.764e-05, 5.765e-05, 5.74e-05, 5.759e-05, 75500.74409633], [1516891020000, 5.759e-05, 5.788e-05, 5.759e-05, 5.785e-05, 176245.85909602], [1516891080000, 5.786e-05, 5.805e-05, 5.785e-05, 5.786e-05, 399175.15958112], [1516891140000, 5.785e-05, 5.805e-05, 5.785e-05, 5.8e-05, 171910.71514864], [1516891200000, 5.8e-05, 5.81e-05, 5.792e-05, 5.792e-05, 358524.20516435], [1516891260000, 5.792e-05, 5.796e-05, 5.76e-05, 5.788e-05, 18479.36407367], [1516891320000, 5.788e-05, 5.796e-05, 5.766e-05, 5.777e-05, 13216.93756856], [1516891380000, 5.794e-05, 5.81e-05, 5.791e-05, 5.8e-05, 42541.5772778], [1516891440000, 5.798e-05, 5.8e-05, 5.777e-05, 5.796e-05, 22989.95050067], [1516891500000, 5.796e-05, 5.796e-05, 5.777e-05, 5.781e-05, 60034.48979401], [1516891560000, 5.781e-05, 5.785e-05, 5.762e-05, 5.762e-05, 105316.57931459], [1516891620000, 5.762e-05, 5.762e-05, 5.751e-05, 5.76e-05, 51386.37019066], [1516891680000, 5.762e-05, 5.762e-05, 5.755e-05, 5.755e-05, 35927.10943306], [1516891740000, 5.759e-05, 5.759e-05, 5.75e-05, 5.75e-05, 29699.46569246], [1516891800000, 5.75e-05, 5.752e-05, 5.75e-05, 5.75e-05, 9748.44217574], [1516891860000, 5.75e-05, 5.759e-05, 5.75e-05, 5.755e-05, 5958.93464756], [1516891920000, 5.752e-05, 5.758e-05, 5.752e-05, 5.757e-05, 2028.10192351], [1516891980000, 5.753e-05, 5.757e-05, 5.752e-05, 5.752e-05, 20893.86685606], [1516892040000, 5.751e-05, 5.752e-05, 5.751e-05, 5.751e-05, 12148.58984239], [1516892100000, 5.75e-05, 5.751e-05, 5.75e-05, 5.751e-05, 33709.27786731], [1516892160000, 5.75e-05, 5.75e-05, 5.743e-05, 5.743e-05, 5548.36580562], [1516892220000, 5.746e-05, 5.746e-05, 5.74e-05, 5.742e-05, 24436.65197093], [1516892280000, 5.742e-05, 5.742e-05, 5.731e-05, 5.742e-05, 13009.61885446], [1516892340000, 5.742e-05, 5.751e-05, 5.741e-05, 5.751e-05, 39154.89706487], [1516892400000, 5.751e-05, 5.752e-05, 5.751e-05, 5.752e-05, 14860.51496767], [1516892460000, 5.752e-05, 5.752e-05, 5.751e-05, 5.752e-05, 7676.97862823], [1516892520000, 5.752e-05, 5.752e-05, 5.751e-05, 5.751e-05, 18734.11662144], [1516892580000, 5.751e-05, 5.752e-05, 5.75e-05, 5.75e-05, 20236.14287857], [1516892640000, 5.75e-05, 5.752e-05, 5.75e-05, 5.751e-05, 101439.55492932], [1516892700000, 5.75e-05, 5.751e-05, 5.75e-05, 5.751e-05, 14589.96470544], [1516892760000, 5.751e-05, 5.751e-05, 5.716e-05, 5.72e-05, 61618.03013226], [1516892820000, 5.72e-05, 5.72e-05, 5.71e-05, 5.718e-05, 10783.03789044], [1516892880000, 5.718e-05, 5.718e-05, 5.702e-05, 5.702e-05, 28193.13450892], [1516892940000, 5.701e-05, 5.71e-05, 5.701e-05, 5.704e-05, 25581.07892803], [1516893000000, 5.705e-05, 5.718e-05, 5.704e-05, 5.708e-05, 7405.57766415], [1516893060000, 5.705e-05, 5.718e-05, 5.704e-05, 5.718e-05, 21280.81847462], [1516893120000, 5.718e-05, 5.733e-05, 5.718e-05, 5.721e-05, 7955.18527028], [1516893180000, 5.721e-05, 5.732e-05, 5.72e-05, 5.73e-05, 10037.8371593], [1516893240000, 5.724e-05, 5.733e-05, 5.72e-05, 5.72e-05, 133249.79717321], [1516893300000, 5.731e-05, 5.732e-05, 5.721e-05, 5.721e-05, 2815.7609493], [1516893360000, 5.721e-05, 5.73e-05, 5.721e-05, 5.729e-05, 10964.01691092], [1516893420000, 5.727e-05, 5.728e-05, 5.721e-05, 5.727e-05, 7555.89134899], [1516893480000, 5.727e-05, 5.728e-05, 5.726e-05, 5.728e-05, 13014.53058047], [1516893540000, 5.729e-05, 5.729e-05, 5.721e-05, 5.721e-05, 6327.77443099], [1516893600000, 5.721e-05, 5.728e-05, 5.72e-05, 5.721e-05, 18104.50882612], [1516893660000, 5.72e-05, 5.721e-05, 5.72e-05, 5.721e-05, 12286.25097194], [1516893720000, 5.721e-05, 5.721e-05, 5.72e-05, 5.72e-05, 9301.65751674], [1516893780000, 5.72e-05, 5.721e-05, 5.718e-05, 5.72e-05, 38184.05676853], [1516893840000, 5.718e-05, 5.72e-05, 5.704e-05, 5.71e-05, 9100.69315693], [1516893900000, 5.704e-05, 5.71e-05, 5.704e-05, 5.71e-05, 6640.10767423], [1516893960000, 5.71e-05, 5.71e-05, 5.704e-05, 5.71e-05, 6662.42099402], [1516894020000, 5.71e-05, 5.71e-05, 5.704e-05, 5.704e-05, 26214.1070188], [1516894080000, 5.71e-05, 5.71e-05, 5.704e-05, 5.705e-05, 17368.73649563], [1516894140000, 5.704e-05, 5.705e-05, 5.702e-05, 5.704e-05, 12984.25053922], [1516894200000, 5.702e-05, 5.705e-05, 5.701e-05, 5.703e-05, 19717.75228129], [1516894260000, 5.702e-05, 5.705e-05, 5.701e-05, 5.705e-05, 28700.78028517], [1516894320000, 5.704e-05, 5.705e-05, 5.703e-05, 5.705e-05, 37703.17443554], [1516894380000, 5.705e-05, 5.71e-05, 5.704e-05, 5.709e-05, 4658.01671972], [1516894440000, 5.709e-05, 5.71e-05, 5.704e-05, 5.71e-05, 11171.38055854], [1516894500000, 5.71e-05, 5.71e-05, 5.709e-05, 5.709e-05, 12866.19677349], [1516894560000, 5.71e-05, 5.71e-05, 5.709e-05, 5.709e-05, 16280.29139259], [1516894620000, 5.709e-05, 5.71e-05, 5.709e-05, 5.709e-05, 12764.39743306], [1516894680000, 5.709e-05, 5.71e-05, 5.709e-05, 5.71e-05, 27049.66243848], [1516894740000, 5.71e-05, 5.71e-05, 5.709e-05, 5.709e-05, 17171.59976127], [1516894800000, 5.709e-05, 5.71e-05, 5.709e-05, 5.71e-05, 21069.87498291], [1516894860000, 5.71e-05, 5.71e-05, 5.706e-05, 5.706e-05, 24201.27630075], [1516894920000, 5.709e-05, 5.71e-05, 5.706e-05, 5.706e-05, 5524.15998486], [1516894980000, 5.709e-05, 5.709e-05, 5.701e-05, 5.706e-05, 33565.5333225], [1516895040000, 5.706e-05, 5.709e-05, 5.706e-05, 5.708e-05, 5363.56731278], [1516895100000, 5.708e-05, 5.709e-05, 5.704e-05, 5.704e-05, 9821.90259661], [1516895160000, 5.702e-05, 5.702e-05, 5.7e-05, 5.7e-05, 32157.70137674], [1516895220000, 5.7e-05, 5.709e-05, 5.696e-05, 5.702e-05, 13886.57833536], [1516895280000, 5.7e-05, 5.709e-05, 5.695e-05, 5.708e-05, 16845.16255468], [1516895340000, 5.708e-05, 5.708e-05, 5.694e-05, 5.694e-05, 11947.87242463], [1516895400000, 5.694e-05, 5.706e-05, 5.692e-05, 5.694e-05, 21539.55971834], [1516895460000, 5.7e-05, 5.7e-05, 5.694e-05, 5.7e-05, 53016.46352344], [1516895520000, 5.693e-05, 5.693e-05, 5.693e-05, 5.693e-05, 7933.11139915], [1516895580000, 5.693e-05, 5.7e-05, 5.692e-05, 5.7e-05, 21994.11525191], [1516895640000, 5.7e-05, 5.7e-05, 5.692e-05, 5.692e-05, 34893.59943988], [1516895700000, 5.696e-05, 5.699e-05, 5.696e-05, 5.699e-05, 6843.24114726], [1516895760000, 5.699e-05, 5.7e-05, 5.696e-05, 5.699e-05, 85194.16551668], [1516895820000, 5.7e-05, 5.7e-05, 5.696e-05, 5.696e-05, 36575.88000807], [1516895880000, 5.696e-05, 5.697e-05, 5.691e-05, 5.691e-05, 50502.92353107], [1516895940000, 5.691e-05, 5.7e-05, 5.69e-05, 5.7e-05, 58185.55665346], [1516896000000, 5.692e-05, 5.706e-05, 5.692e-05, 5.697e-05, 6478.64955361], [1516896060000, 5.697e-05, 5.703e-05, 5.697e-05, 5.703e-05, 855.13875589], [1516896120000, 5.697e-05, 5.72e-05, 5.697e-05, 5.705e-05, 13962.52026938], [1516896180000, 5.706e-05, 5.707e-05, 5.706e-05, 5.706e-05, 6206.0990137], [1516896240000, 5.706e-05, 5.707e-05, 5.691e-05, 5.707e-05, 15577.81904966], [1516896300000, 5.692e-05, 5.715e-05, 5.692e-05, 5.708e-05, 10707.99744317], [1516896360000, 5.708e-05, 5.72e-05, 5.708e-05, 5.72e-05, 15364.38898404], [1516896420000, 5.714e-05, 5.72e-05, 5.707e-05, 5.707e-05, 19157.46472256], [1516896480000, 5.707e-05, 5.72e-05, 5.707e-05, 5.714e-05, 53133.86941367], [1516896540000, 5.718e-05, 5.719e-05, 5.71e-05, 5.71e-05, 544.79499067], [1516896600000, 5.715e-05, 5.715e-05, 5.71e-05, 5.71e-05, 5502.89871027], [1516896660000, 5.714e-05, 5.72e-05, 5.714e-05, 5.72e-05, 33120.14919818], [1516896720000, 5.72e-05, 5.721e-05, 5.719e-05, 5.721e-05, 5719.72722598], [1516896780000, 5.724e-05, 5.73e-05, 5.721e-05, 5.721e-05, 5552.92283527], [1516896840000, 5.729e-05, 5.73e-05, 5.721e-05, 5.723e-05, 11903.1073767], [1516896900000, 5.725e-05, 5.728e-05, 5.723e-05, 5.726e-05, 23034.71239279], [1516896960000, 5.726e-05, 5.727e-05, 5.723e-05, 5.726e-05, 16495.06601221], [1516897020000, 5.729e-05, 5.732e-05, 5.726e-05, 5.726e-05, 11591.04999577], [1516897080000, 5.726e-05, 5.727e-05, 5.723e-05, 5.723e-05, 8186.18063287], [1516897140000, 5.727e-05, 5.727e-05, 5.724e-05, 5.727e-05, 30281.16913403], [1516897200000, 5.727e-05, 5.73e-05, 5.727e-05, 5.728e-05, 11817.06076142], [1516897260000, 5.728e-05, 5.73e-05, 5.725e-05, 5.725e-05, 9170.09146808], [1516897320000, 5.727e-05, 5.729e-05, 5.724e-05, 5.728e-05, 22781.52230741], [1516897380000, 5.728e-05, 5.745e-05, 5.728e-05, 5.73e-05, 47798.77915323], [1516897440000, 5.73e-05, 5.73e-05, 5.727e-05, 5.729e-05, 18230.51230204], [1516897500000, 5.727e-05, 5.73e-05, 5.725e-05, 5.73e-05, 55072.25470726], [1516897560000, 5.73e-05, 5.747e-05, 5.725e-05, 5.731e-05, 34122.95997327], [1516897620000, 5.731e-05, 5.733e-05, 5.73e-05, 5.732e-05, 24085.74029624], [1516897680000, 5.732e-05, 5.745e-05, 5.732e-05, 5.734e-05, 9994.21854277], [1516897740000, 5.735e-05, 5.739e-05, 5.733e-05, 5.733e-05, 24288.61755415], [1516897800000, 5.735e-05, 5.735e-05, 5.732e-05, 5.732e-05, 18259.10066389], [1516897860000, 5.733e-05, 5.736e-05, 5.732e-05, 5.736e-05, 9114.57219214], [1516897920000, 5.736e-05, 5.738e-05, 5.736e-05, 5.738e-05, 323.49610058], [1516897980000, 5.738e-05, 5.738e-05, 5.73e-05, 5.737e-05, 12116.96965029], [1516898040000, 5.737e-05, 5.738e-05, 5.73e-05, 5.737e-05, 24240.37495665], [1516898100000, 5.73e-05, 5.737e-05, 5.73e-05, 5.735e-05, 7290.55147702], [1516898160000, 5.737e-05, 5.737e-05, 5.735e-05, 5.737e-05, 5347.08712969], [1516898220000, 5.735e-05, 5.739e-05, 5.734e-05, 5.738e-05, 71949.67085474], [1516898280000, 5.736e-05, 5.738e-05, 5.736e-05, 5.737e-05, 6765.09917185], [1516898340000, 5.737e-05, 5.738e-05, 5.736e-05, 5.736e-05, 90574.62939214], [1516898400000, 5.736e-05, 5.738e-05, 5.736e-05, 5.736e-05, 27559.40647945], [1516898460000, 5.736e-05, 5.737e-05, 5.73e-05, 5.73e-05, 11209.13180668], [1516898520000, 5.731e-05, 5.731e-05, 5.729e-05, 5.73e-05, 5107.98455117], [1516898580000, 5.73e-05, 5.736e-05, 5.73e-05, 5.735e-05, 4436.7624842], [1516898640000, 5.736e-05, 5.736e-05, 5.732e-05, 5.736e-05, 21908.86539525], [1516898700000, 5.735e-05, 5.736e-05, 5.731e-05, 5.731e-05, 8007.20254747], [1516898760000, 5.73e-05, 5.731e-05, 5.73e-05, 5.73e-05, 2738.95387518], [1516898820000, 5.731e-05, 5.731e-05, 5.725e-05, 5.725e-05, 10003.61709259], [1516898880000, 5.725e-05, 5.725e-05, 5.723e-05, 5.723e-05, 13999.91437958], [1516898940000, 5.724e-05, 5.724e-05, 5.723e-05, 5.723e-05, 8817.10269756], [1516899000000, 5.723e-05, 5.724e-05, 5.723e-05, 5.723e-05, 18221.28042477], [1516899060000, 5.723e-05, 5.724e-05, 5.723e-05, 5.723e-05, 11911.7478162], [1516899120000, 5.723e-05, 5.724e-05, 5.723e-05, 5.723e-05, 2904.16311677], [1516899180000, 5.723e-05, 5.729e-05, 5.722e-05, 5.722e-05, 73637.63726625], [1516899240000, 5.723e-05, 5.723e-05, 5.721e-05, 5.722e-05, 32206.91448319], [1516899300000, 5.722e-05, 5.722e-05, 5.719e-05, 5.719e-05, 5067.82261736], [1516899360000, 5.719e-05, 5.72e-05, 5.719e-05, 5.719e-05, 6897.74321793], [1516899420000, 5.719e-05, 5.719e-05, 5.71e-05, 5.71e-05, 747.21047201], [1516899480000, 5.71e-05, 5.711e-05, 5.708e-05, 5.711e-05, 5490.98363067], [1516899540000, 5.708e-05, 5.711e-05, 5.69e-05, 5.695e-05, 47762.16813482], [1516899600000, 5.695e-05, 5.711e-05, 5.688e-05, 5.69e-05, 44708.6840366], [1516899660000, 5.692e-05, 5.711e-05, 5.691e-05, 5.692e-05, 34664.92721771], [1516899720000, 5.692e-05, 5.711e-05, 5.691e-05, 5.7e-05, 15136.43162512], [1516899780000, 5.7e-05, 5.7e-05, 5.696e-05, 5.697e-05, 38653.37003503], [1516899840000, 5.697e-05, 5.71e-05, 5.697e-05, 5.701e-05, 13838.17259435], [1516899900000, 5.701e-05, 5.714e-05, 5.701e-05, 5.71e-05, 37392.00460681], [1516899960000, 5.71e-05, 5.719e-05, 5.71e-05, 5.718e-05, 21090.84908583], [1516900020000, 5.718e-05, 5.721e-05, 5.718e-05, 5.719e-05, 36821.19266651], [1516900080000, 5.719e-05, 5.721e-05, 5.718e-05, 5.72e-05, 28594.6871661], [1516900140000, 5.72e-05, 5.72e-05, 5.719e-05, 5.72e-05, 16762.29990106], [1516900200000, 5.72e-05, 5.725e-05, 5.72e-05, 5.725e-05, 12532.13105233], [1516900260000, 5.725e-05, 5.725e-05, 5.719e-05, 5.722e-05, 11399.93173643], [1516900320000, 5.722e-05, 5.725e-05, 5.719e-05, 5.719e-05, 6197.33864265], [1516900380000, 5.72e-05, 5.72e-05, 5.718e-05, 5.718e-05, 47366.5302893], [1516900440000, 5.719e-05, 5.719e-05, 5.703e-05, 5.703e-05, 2994.22204536], [1516900500000, 5.703e-05, 5.716e-05, 5.703e-05, 5.703e-05, 865.07374785], [1516900560000, 5.715e-05, 5.716e-05, 5.703e-05, 5.703e-05, 3005.25820769], [1516900620000, 5.703e-05, 5.713e-05, 5.701e-05, 5.703e-05, 3171.44652891], [1516900680000, 5.713e-05, 5.715e-05, 5.703e-05, 5.715e-05, 25511.42303507], [1516900740000, 5.703e-05, 5.712e-05, 5.7e-05, 5.701e-05, 10414.22877018], [1516900800000, 5.701e-05, 5.701e-05, 5.696e-05, 5.696e-05, 5892.80706554], [1516900860000, 5.697e-05, 5.697e-05, 5.692e-05, 5.697e-05, 2574.14013251], [1516900920000, 5.693e-05, 5.703e-05, 5.687e-05, 5.693e-05, 47020.67673399], [1516900980000, 5.693e-05, 5.697e-05, 5.675e-05, 5.676e-05, 69505.58630223], [1516901040000, 5.686e-05, 5.691e-05, 5.674e-05, 5.691e-05, 28121.10243404], [1516901100000, 5.677e-05, 5.691e-05, 5.675e-05, 5.68e-05, 16735.98464095], [1516901160000, 5.69e-05, 5.691e-05, 5.682e-05, 5.691e-05, 20157.33771536], [1516901220000, 5.691e-05, 5.7e-05, 5.684e-05, 5.691e-05, 9641.34627899], [1516901280000, 5.691e-05, 5.703e-05, 5.691e-05, 5.701e-05, 10697.02533353], [1516901340000, 5.7e-05, 5.703e-05, 5.691e-05, 5.698e-05, 4716.03625322], [1516901400000, 5.691e-05, 5.698e-05, 5.691e-05, 5.698e-05, 3550.5487612], [1516901460000, 5.691e-05, 5.692e-05, 5.691e-05, 5.692e-05, 841.14474187], [1516901520000, 5.692e-05, 5.697e-05, 5.692e-05, 5.692e-05, 7386.65929224], [1516901580000, 5.692e-05, 5.693e-05, 5.692e-05, 5.693e-05, 6384.28527112], [1516901640000, 5.692e-05, 5.692e-05, 5.686e-05, 5.686e-05, 6663.82087226], [1516901700000, 5.686e-05, 5.687e-05, 5.681e-05, 5.686e-05, 8920.24949474], [1516901760000, 5.686e-05, 5.686e-05, 5.679e-05, 5.679e-05, 55513.69364916], [1516901820000, 5.68e-05, 5.68e-05, 5.68e-05, 5.68e-05, 14804.27442012], [1516901880000, 5.68e-05, 5.68e-05, 5.679e-05, 5.68e-05, 8065.5162011], [1516901940000, 5.68e-05, 5.68e-05, 5.67e-05, 5.674e-05, 48995.34904054], [1516902000000, 5.673e-05, 5.68e-05, 5.67e-05, 5.679e-05, 7685.34961947], [1516902060000, 5.679e-05, 5.68e-05, 5.674e-05, 5.679e-05, 5261.22343592], [1516902120000, 5.679e-05, 5.68e-05, 5.679e-05, 5.68e-05, 303.03034648], [1516902180000, 5.679e-05, 5.68e-05, 5.679e-05, 5.679e-05, 20690.78821147], [1516902240000, 5.674e-05, 5.679e-05, 5.67e-05, 5.679e-05, 2029.1998686], [1516902300000, 5.679e-05, 5.679e-05, 5.675e-05, 5.679e-05, 14305.33897926], [1516902360000, 5.675e-05, 5.679e-05, 5.67e-05, 5.675e-05, 30439.114279], [1516902420000, 5.679e-05, 5.679e-05, 5.675e-05, 5.679e-05, 21464.06331646], [1516902480000, 5.675e-05, 5.679e-05, 5.67e-05, 5.67e-05, 2185.06174617], [1516902540000, 5.679e-05, 5.679e-05, 5.667e-05, 5.67e-05, 21992.80244989], [1516902600000, 5.67e-05, 5.67e-05, 5.665e-05, 5.665e-05, 3229.43507048], [1516902660000, 5.665e-05, 5.67e-05, 5.665e-05, 5.665e-05, 7003.63524578], [1516902720000, 5.666e-05, 5.666e-05, 5.665e-05, 5.666e-05, 12981.07379144], [1516902780000, 5.666e-05, 5.666e-05, 5.665e-05, 5.665e-05, 2393.31759113], [1516902840000, 5.665e-05, 5.665e-05, 5.663e-05, 5.665e-05, 5023.7670943], [1516902900000, 5.665e-05, 5.665e-05, 5.664e-05, 5.664e-05, 10197.3599934], [1516902960000, 5.664e-05, 5.664e-05, 5.66e-05, 5.663e-05, 57922.43225082], [1516903020000, 5.663e-05, 5.663e-05, 5.658e-05, 5.66e-05, 19932.46196205], [1516903080000, 5.66e-05, 5.663e-05, 5.658e-05, 5.663e-05, 9219.72639589], [1516903140000, 5.661e-05, 5.663e-05, 5.658e-05, 5.663e-05, 15060.09331623], [1516903200000, 5.663e-05, 5.691e-05, 5.661e-05, 5.691e-05, 85369.65449955], [1516903260000, 5.691e-05, 5.691e-05, 5.68e-05, 5.691e-05, 17216.16899516], [1516903320000, 5.691e-05, 5.7e-05, 5.691e-05, 5.7e-05, 27282.74717764], [1516903380000, 5.704e-05, 5.712e-05, 5.704e-05, 5.712e-05, 2644.06947164], [1516903440000, 5.712e-05, 5.714e-05, 5.708e-05, 5.713e-05, 6656.41009461], [1516903500000, 5.713e-05, 5.713e-05, 5.708e-05, 5.708e-05, 4758.85457832], [1516903560000, 5.704e-05, 5.708e-05, 5.704e-05, 5.704e-05, 3520.25054938], [1516903620000, 5.698e-05, 5.698e-05, 5.693e-05, 5.697e-05, 3131.76098954], [1516903680000, 5.692e-05, 5.698e-05, 5.691e-05, 5.698e-05, 11797.11249361], [1516903740000, 5.698e-05, 5.704e-05, 5.686e-05, 5.704e-05, 5187.39236025], [1516903800000, 5.703e-05, 5.703e-05, 5.692e-05, 5.692e-05, 869.21784164], [1516903860000, 5.693e-05, 5.693e-05, 5.692e-05, 5.693e-05, 11720.24468695], [1516903920000, 5.691e-05, 5.693e-05, 5.685e-05, 5.693e-05, 2508.58793976], [1516903980000, 5.689e-05, 5.69e-05, 5.657e-05, 5.686e-05, 10333.34062415], [1516904040000, 5.66e-05, 5.686e-05, 5.659e-05, 5.686e-05, 1029.93746792], [1516904100000, 5.685e-05, 5.685e-05, 5.663e-05, 5.68e-05, 3288.72778277], [1516904160000, 5.68e-05, 5.68e-05, 5.665e-05, 5.667e-05, 5615.22134399], [1516904220000, 5.67e-05, 5.68e-05, 5.67e-05, 5.68e-05, 15611.71674842], [1516904280000, 5.671e-05, 5.68e-05, 5.671e-05, 5.68e-05, 195.92445906], [1516904340000, 5.678e-05, 5.678e-05, 5.666e-05, 5.666e-05, 2755.48296543], [1516904400000, 5.666e-05, 5.678e-05, 5.666e-05, 5.678e-05, 15367.38529497], [1516904460000, 5.667e-05, 5.667e-05, 5.667e-05, 5.667e-05, 3000.0], [1516904520000, 5.675e-05, 5.678e-05, 5.67e-05, 5.678e-05, 3813.22067806], [1516904580000, 5.68e-05, 5.68e-05, 5.68e-05, 5.68e-05, 3037.04535079], [1516904640000, 5.68e-05, 5.68e-05, 5.68e-05, 5.68e-05, 1501.92405482], [1516904700000, 5.68e-05, 5.68e-05, 5.678e-05, 5.678e-05, 4745.75001286], [1516904760000, 5.679e-05, 5.679e-05, 5.678e-05, 5.679e-05, 7112.04314902], [1516904820000, 5.678e-05, 5.679e-05, 5.678e-05, 5.679e-05, 11344.3320144], [1516904880000, 5.679e-05, 5.679e-05, 5.678e-05, 5.679e-05, 13750.97045293], [1516904940000, 5.678e-05, 5.679e-05, 5.678e-05, 5.679e-05, 7447.12507436], [1516905000000, 5.679e-05, 5.679e-05, 5.678e-05, 5.679e-05, 11695.93728973], [1516905060000, 5.678e-05, 5.679e-05, 5.678e-05, 5.678e-05, 1975.79371665], [1516905120000, 5.679e-05, 5.68e-05, 5.679e-05, 5.679e-05, 35971.00113177], [1516905180000, 5.679e-05, 5.68e-05, 5.679e-05, 5.679e-05, 4087.66255091], [1516905240000, 5.679e-05, 5.679e-05, 5.678e-05, 5.678e-05, 1183.01307516], [1516905300000, 5.675e-05, 5.679e-05, 5.671e-05, 5.671e-05, 21937.15826839], [1516905360000, 5.679e-05, 5.679e-05, 5.672e-05, 5.679e-05, 899.17254225], [1516905420000, 5.679e-05, 5.679e-05, 5.672e-05, 5.672e-05, 17668.48266595], [1516905480000, 5.673e-05, 5.68e-05, 5.671e-05, 5.68e-05, 16343.81908037], [1516905540000, 5.68e-05, 5.68e-05, 5.679e-05, 5.68e-05, 96924.81985048], [1516905600000, 5.68e-05, 5.68e-05, 5.68e-05, 5.68e-05, 58.85467476], [1516905660000, 5.68e-05, 5.68e-05, 5.68e-05, 5.68e-05, 10199.63304387], [1516905720000, 5.679e-05, 5.679e-05, 5.678e-05, 5.679e-05, 2387.54878083], [1516905780000, 5.679e-05, 5.679e-05, 5.678e-05, 5.679e-05, 4128.81358214], [1516905840000, 5.679e-05, 5.68e-05, 5.678e-05, 5.68e-05, 2797.99578542], [1516905900000, 5.679e-05, 5.68e-05, 5.679e-05, 5.679e-05, 21907.09008438], [1516905960000, 5.679e-05, 5.68e-05, 5.679e-05, 5.679e-05, 3839.38410174], [1516906020000, 5.68e-05, 5.68e-05, 5.679e-05, 5.68e-05, 18184.80350429], [1516906080000, 5.68e-05, 5.68e-05, 5.679e-05, 5.68e-05, 4123.62986397], [1516906140000, 5.68e-05, 5.68e-05, 5.679e-05, 5.679e-05, 3208.49383581], [1516906200000, 5.678e-05, 5.678e-05, 5.677e-05, 5.677e-05, 273.17910796], [1516906260000, 5.677e-05, 5.678e-05, 5.675e-05, 5.678e-05, 11279.30269942], [1516906320000, 5.678e-05, 5.68e-05, 5.677e-05, 5.68e-05, 7004.87774131], [1516906380000, 5.68e-05, 5.68e-05, 5.678e-05, 5.68e-05, 9940.67373674], [1516906440000, 5.68e-05, 5.68e-05, 5.679e-05, 5.679e-05, 13610.40276266], [1516906500000, 5.679e-05, 5.68e-05, 5.678e-05, 5.678e-05, 10265.26654328], [1516906560000, 5.678e-05, 5.68e-05, 5.678e-05, 5.68e-05, 4448.5183206], [1516906620000, 5.68e-05, 5.69e-05, 5.68e-05, 5.69e-05, 56059.33479508], [1516906680000, 5.681e-05, 5.69e-05, 5.68e-05, 5.682e-05, 8762.19139274], [1516906740000, 5.682e-05, 5.682e-05, 5.681e-05, 5.682e-05, 3345.22175617], [1516906800000, 5.69e-05, 5.7e-05, 5.69e-05, 5.69e-05, 2993.72650494], [1516906860000, 5.69e-05, 5.691e-05, 5.681e-05, 5.681e-05, 18306.47138839], [1516906920000, 5.682e-05, 5.683e-05, 5.682e-05, 5.682e-05, 7329.46611947], [1516906980000, 5.684e-05, 5.684e-05, 5.684e-05, 5.684e-05, 1575.32658302], [1516907040000, 5.684e-05, 5.686e-05, 5.684e-05, 5.685e-05, 3071.09304975], [1516907100000, 5.686e-05, 5.69e-05, 5.685e-05, 5.687e-05, 6104.81010862], [1516907160000, 5.687e-05, 5.691e-05, 5.686e-05, 5.69e-05, 3948.78915549], [1516907220000, 5.69e-05, 5.695e-05, 5.69e-05, 5.695e-05, 2085.02057123], [1516907280000, 5.695e-05, 5.7e-05, 5.695e-05, 5.7e-05, 5850.77001292], [1516907340000, 5.7e-05, 5.7e-05, 5.7e-05, 5.7e-05, 80.0], [1516907400000, 5.692e-05, 5.703e-05, 5.692e-05, 5.7e-05, 1697.8708529], [1516907460000, 5.7e-05, 5.706e-05, 5.7e-05, 5.706e-05, 1291.12141627], [1516907520000, 5.711e-05, 5.711e-05, 5.704e-05, 5.704e-05, 16560.55391239], [1516907580000, 5.701e-05, 5.705e-05, 5.7e-05, 5.7e-05, 15382.12867954], [1516907640000, 5.7e-05, 5.7e-05, 5.691e-05, 5.691e-05, 25275.91265286], [1516907700000, 5.697e-05, 5.7e-05, 5.692e-05, 5.7e-05, 176.27119002], [1516907760000, 5.695e-05, 5.7e-05, 5.695e-05, 5.7e-05, 8886.36994285], [1516907820000, 5.7e-05, 5.7e-05, 5.691e-05, 5.699e-05, 19236.79859553], [1516907880000, 5.699e-05, 5.699e-05, 5.692e-05, 5.697e-05, 1884.329562], [1516907940000, 5.697e-05, 5.697e-05, 5.692e-05, 5.692e-05, 6457.9906586], [1516908000000, 5.691e-05, 5.692e-05, 5.691e-05, 5.692e-05, 7608.90587357], [1516908060000, 5.692e-05, 5.692e-05, 5.691e-05, 5.691e-05, 8567.39931267], [1516908120000, 5.692e-05, 5.692e-05, 5.691e-05, 5.692e-05, 3671.02452994], [1516908180000, 5.692e-05, 5.692e-05, 5.691e-05, 5.692e-05, 70621.16634044], [1516908240000, 5.692e-05, 5.692e-05, 5.691e-05, 5.691e-05, 29649.85877257], [1516908300000, 5.691e-05, 5.691e-05, 5.689e-05, 5.689e-05, 1215.02158517], [1516908360000, 5.69e-05, 5.691e-05, 5.686e-05, 5.689e-05, 6145.89684514], [1516908420000, 5.687e-05, 5.687e-05, 5.687e-05, 5.687e-05, 1083.49010868], [1516908480000, 5.687e-05, 5.689e-05, 5.687e-05, 5.688e-05, 1503.34592626], [1516908540000, 5.687e-05, 5.69e-05, 5.687e-05, 5.687e-05, 2408.78685174], [1516908600000, 5.687e-05, 5.689e-05, 5.687e-05, 5.687e-05, 1427.03299386], [1516908660000, 5.688e-05, 5.69e-05, 5.688e-05, 5.689e-05, 2930.59277891], [1516908720000, 5.69e-05, 5.69e-05, 5.689e-05, 5.69e-05, 1293.16236056], [1516908780000, 5.69e-05, 5.69e-05, 5.687e-05, 5.69e-05, 12157.4579143], [1516908840000, 5.69e-05, 5.69e-05, 5.687e-05, 5.69e-05, 2586.89859921], [1516908900000, 5.689e-05, 5.689e-05, 5.687e-05, 5.687e-05, 2392.37550043], [1516908960000, 5.687e-05, 5.687e-05, 5.58e-05, 5.679e-05, 1465612.78723048], [1516909020000, 5.666e-05, 5.679e-05, 5.651e-05, 5.679e-05, 305.07413066], [1516909080000, 5.68e-05, 5.68e-05, 5.669e-05, 5.679e-05, 3918.47972963], [1516909140000, 5.671e-05, 5.679e-05, 5.669e-05, 5.669e-05, 6866.54473237], [1516909200000, 5.678e-05, 5.678e-05, 5.669e-05, 5.677e-05, 2936.15356233], [1516909260000, 5.671e-05, 5.671e-05, 5.669e-05, 5.67e-05, 7127.7513331], [1516909320000, 5.669e-05, 5.67e-05, 5.669e-05, 5.67e-05, 2212.68340723], [1516909380000, 5.669e-05, 5.67e-05, 5.66e-05, 5.66e-05, 4363.59631977], [1516909440000, 5.66e-05, 5.66e-05, 5.617e-05, 5.65e-05, 13387.02302412], [1516909500000, 5.65e-05, 5.65e-05, 5.618e-05, 5.649e-05, 36796.4097792], [1516909560000, 5.649e-05, 5.649e-05, 5.64e-05, 5.64e-05, 29111.10273145], [1516909620000, 5.645e-05, 5.646e-05, 5.627e-05, 5.646e-05, 31059.74368438], [1516909680000, 5.646e-05, 5.648e-05, 5.645e-05, 5.648e-05, 4544.84543647], [1516909740000, 5.646e-05, 5.649e-05, 5.646e-05, 5.646e-05, 21338.36603929], [1516909800000, 5.645e-05, 5.649e-05, 5.642e-05, 5.649e-05, 95816.55458859], [1516909860000, 5.648e-05, 5.648e-05, 5.635e-05, 5.646e-05, 4439.6653326], [1516909920000, 5.646e-05, 5.646e-05, 5.641e-05, 5.642e-05, 15632.41137199], [1516909980000, 5.646e-05, 5.649e-05, 5.637e-05, 5.648e-05, 47077.16619446], [1516910040000, 5.649e-05, 5.65e-05, 5.646e-05, 5.65e-05, 39235.8674024], [1516910100000, 5.65e-05, 5.65e-05, 5.649e-05, 5.649e-05, 8273.90260509], [1516910160000, 5.649e-05, 5.654e-05, 5.649e-05, 5.654e-05, 57954.48201388], [1516910220000, 5.654e-05, 5.654e-05, 5.648e-05, 5.653e-05, 4399.16902178], [1516910280000, 5.653e-05, 5.654e-05, 5.648e-05, 5.65e-05, 27424.21996191], [1516910340000, 5.65e-05, 5.653e-05, 5.65e-05, 5.653e-05, 12796.09416765], [1516910400000, 5.651e-05, 5.653e-05, 5.651e-05, 5.653e-05, 3543.42157654], [1516910460000, 5.653e-05, 5.653e-05, 5.649e-05, 5.653e-05, 5610.04671076], [1516910520000, 5.653e-05, 5.66e-05, 5.649e-05, 5.66e-05, 43729.52303487], [1516910580000, 5.66e-05, 5.66e-05, 5.654e-05, 5.659e-05, 1402.27494392], [1516910640000, 5.655e-05, 5.66e-05, 5.655e-05, 5.66e-05, 800.82056497], [1516910700000, 5.656e-05, 5.66e-05, 5.656e-05, 5.656e-05, 13450.07648356], [1516910760000, 5.66e-05, 5.678e-05, 5.655e-05, 5.678e-05, 33542.09402952], [1516910820000, 5.661e-05, 5.661e-05, 5.655e-05, 5.657e-05, 22151.40190577], [1516910880000, 5.656e-05, 5.661e-05, 5.655e-05, 5.661e-05, 2698.86661934], [1516910940000, 5.658e-05, 5.661e-05, 5.657e-05, 5.661e-05, 2208.52359673], [1516911000000, 5.661e-05, 5.661e-05, 5.661e-05, 5.661e-05, 1146.8273904], [1516911060000, 5.678e-05, 5.678e-05, 5.661e-05, 5.675e-05, 3795.41732497], [1516911120000, 5.675e-05, 5.675e-05, 5.666e-05, 5.668e-05, 1523.81084682], [1516911180000, 5.675e-05, 5.675e-05, 5.674e-05, 5.675e-05, 18403.8503503], [1516911240000, 5.675e-05, 5.675e-05, 5.67e-05, 5.67e-05, 17686.07758491], [1516911300000, 5.674e-05, 5.674e-05, 5.666e-05, 5.674e-05, 3850.89627542], [1516911360000, 5.674e-05, 5.674e-05, 5.673e-05, 5.674e-05, 6975.4950278], [1516911420000, 5.673e-05, 5.674e-05, 5.667e-05, 5.674e-05, 38222.53054715], [1516911480000, 5.674e-05, 5.674e-05, 5.674e-05, 5.674e-05, 540.32115672], [1516911540000, 5.674e-05, 5.674e-05, 5.673e-05, 5.674e-05, 6610.57577635], [1516911600000, 5.674e-05, 5.674e-05, 5.667e-05, 5.667e-05, 11856.59928347], [1516911660000, 5.667e-05, 5.667e-05, 5.66e-05, 5.66e-05, 7616.79869074], [1516911720000, 5.66e-05, 5.666e-05, 5.658e-05, 5.666e-05, 3347.42901753], [1516911780000, 5.665e-05, 5.665e-05, 5.661e-05, 5.665e-05, 1906.26240574], [1516911840000, 5.665e-05, 5.665e-05, 5.66e-05, 5.66e-05, 42022.33721018], [1516911900000, 5.661e-05, 5.661e-05, 5.66e-05, 5.661e-05, 124104.42720761], [1516911960000, 5.66e-05, 5.661e-05, 5.66e-05, 5.66e-05, 30710.44604263], [1516912020000, 5.66e-05, 5.66e-05, 5.659e-05, 5.66e-05, 1536.50497593], [1516912080000, 5.66e-05, 5.66e-05, 5.659e-05, 5.66e-05, 33096.94613395], [1516912140000, 5.66e-05, 5.66e-05, 5.658e-05, 5.658e-05, 36957.0710493], [1516912200000, 5.658e-05, 5.665e-05, 5.658e-05, 5.665e-05, 30948.60470997], [1516912260000, 5.666e-05, 5.666e-05, 5.659e-05, 5.661e-05, 1409.57742206], [1516912320000, 5.661e-05, 5.665e-05, 5.659e-05, 5.664e-05, 1453.72905371], [1516912380000, 5.664e-05, 5.664e-05, 5.66e-05, 5.66e-05, 10541.31716294], [1516912440000, 5.66e-05, 5.66e-05, 5.659e-05, 5.66e-05, 10869.44664208], [1516912500000, 5.66e-05, 5.66e-05, 5.659e-05, 5.659e-05, 26364.54768455], [1516912560000, 5.66e-05, 5.664e-05, 5.659e-05, 5.659e-05, 113007.03341543], [1516912620000, 5.664e-05, 5.666e-05, 5.66e-05, 5.665e-05, 73987.84466702], [1516912680000, 5.665e-05, 5.672e-05, 5.665e-05, 5.672e-05, 52853.97221767], [1516912740000, 5.672e-05, 5.675e-05, 5.659e-05, 5.665e-05, 79136.02672043], [1516912800000, 5.661e-05, 5.665e-05, 5.661e-05, 5.665e-05, 2230.30948866], [1516912860000, 5.665e-05, 5.665e-05, 5.661e-05, 5.662e-05, 16532.72515171], [1516912920000, 5.665e-05, 5.665e-05, 5.662e-05, 5.665e-05, 50296.44476359], [1516912980000, 5.665e-05, 5.665e-05, 5.662e-05, 5.665e-05, 356118.06870467], [1516913040000, 5.665e-05, 5.665e-05, 5.661e-05, 5.665e-05, 66665.79043804], [1516913100000, 5.664e-05, 5.665e-05, 5.662e-05, 5.665e-05, 95691.59403925], [1516913160000, 5.665e-05, 5.665e-05, 5.662e-05, 5.665e-05, 154724.04384167], [1516913220000, 5.664e-05, 5.665e-05, 5.664e-05, 5.665e-05, 116798.68157272], [1516913280000, 5.665e-05, 5.665e-05, 5.665e-05, 5.665e-05, 128375.01435873], [1516913340000, 5.665e-05, 5.675e-05, 5.663e-05, 5.675e-05, 211740.77100417], [1516913400000, 5.674e-05, 5.677e-05, 5.674e-05, 5.677e-05, 8740.75335386], [1516913460000, 5.678e-05, 5.688e-05, 5.677e-05, 5.688e-05, 24667.96674864], [1516913520000, 5.686e-05, 5.688e-05, 5.678e-05, 5.687e-05, 3589.06178544], [1516913580000, 5.687e-05, 5.689e-05, 5.686e-05, 5.689e-05, 46354.65514327], [1516913640000, 5.69e-05, 5.69e-05, 5.687e-05, 5.687e-05, 3043.8147154], [1516913700000, 5.687e-05, 5.69e-05, 5.687e-05, 5.69e-05, 45517.41593637], [1516913760000, 5.69e-05, 5.691e-05, 5.687e-05, 5.691e-05, 19383.09775972], [1516913820000, 5.687e-05, 5.691e-05, 5.687e-05, 5.691e-05, 510.0], [1516913880000, 5.691e-05, 5.691e-05, 5.691e-05, 5.691e-05, 3492.11787045], [1516913940000, 5.691e-05, 5.697e-05, 5.69e-05, 5.692e-05, 6278.66066886], [1516914000000, 5.692e-05, 5.697e-05, 5.681e-05, 5.681e-05, 59868.16920788], [1516914060000, 5.682e-05, 5.697e-05, 5.682e-05, 5.682e-05, 18344.91223364], [1516914120000, 5.697e-05, 5.7e-05, 5.685e-05, 5.687e-05, 68349.12926955], [1516914180000, 5.7e-05, 5.7e-05, 5.687e-05, 5.7e-05, 12745.35207151], [1516914240000, 5.687e-05, 5.7e-05, 5.686e-05, 5.687e-05, 17678.77984508], [1516914300000, 5.687e-05, 5.699e-05, 5.687e-05, 5.688e-05, 56123.79115398], [1516914360000, 5.698e-05, 5.7e-05, 5.688e-05, 5.689e-05, 3870.01710046], [1516914420000, 5.689e-05, 5.7e-05, 5.636e-05, 5.636e-05, 257592.60962568], [1516914480000, 5.636e-05, 5.676e-05, 5.635e-05, 5.65e-05, 78549.87958367], [1516914540000, 5.65e-05, 5.676e-05, 5.65e-05, 5.653e-05, 36327.4111138], [1516914600000, 5.672e-05, 5.676e-05, 5.654e-05, 5.664e-05, 72170.14542079], [1516914660000, 5.664e-05, 5.664e-05, 5.65e-05, 5.659e-05, 133913.11459427], [1516914720000, 5.659e-05, 5.664e-05, 5.65e-05, 5.659e-05, 80720.54848421], [1516914780000, 5.659e-05, 5.676e-05, 5.642e-05, 5.644e-05, 107873.21318945], [1516914840000, 5.644e-05, 5.661e-05, 5.644e-05, 5.644e-05, 33229.40057908], [1516914900000, 5.645e-05, 5.66e-05, 5.645e-05, 5.66e-05, 13411.12620101], [1516914960000, 5.647e-05, 5.661e-05, 5.646e-05, 5.659e-05, 18057.82146216], [1516915020000, 5.66e-05, 5.683e-05, 5.659e-05, 5.659e-05, 11828.62837316], [1516915080000, 5.659e-05, 5.683e-05, 5.659e-05, 5.664e-05, 7656.45902806], [1516915140000, 5.665e-05, 5.689e-05, 5.665e-05, 5.683e-05, 18654.37866719], [1516915200000, 5.683e-05, 5.689e-05, 5.683e-05, 5.683e-05, 14290.13966816], [1516915260000, 5.683e-05, 5.683e-05, 5.682e-05, 5.682e-05, 7563.01647237], [1516915320000, 5.683e-05, 5.684e-05, 5.682e-05, 5.684e-05, 10290.61913362], [1516915380000, 5.684e-05, 5.694e-05, 5.684e-05, 5.684e-05, 11537.61936799], [1516915440000, 5.684e-05, 5.692e-05, 5.682e-05, 5.684e-05, 4690.73015048], [1516915500000, 5.684e-05, 5.691e-05, 5.684e-05, 5.69e-05, 6002.49302807], [1516915560000, 5.69e-05, 5.694e-05, 5.686e-05, 5.69e-05, 4185.34577208], [1516915620000, 5.686e-05, 5.692e-05, 5.686e-05, 5.69e-05, 8301.82184457], [1516915680000, 5.687e-05, 5.689e-05, 5.686e-05, 5.689e-05, 19149.7913372], [1516915740000, 5.686e-05, 5.689e-05, 5.686e-05, 5.686e-05, 10491.65448719], [1516915800000, 5.688e-05, 5.69e-05, 5.686e-05, 5.686e-05, 14223.66769034], [1516915860000, 5.688e-05, 5.7e-05, 5.686e-05, 5.688e-05, 24910.81471606], [1516915920000, 5.688e-05, 5.706e-05, 5.686e-05, 5.686e-05, 32099.88658475], [1516915980000, 5.686e-05, 5.707e-05, 5.686e-05, 5.686e-05, 13909.41722314], [1516916040000, 5.686e-05, 5.702e-05, 5.686e-05, 5.686e-05, 22507.38437152], [1516916100000, 5.686e-05, 5.7e-05, 5.685e-05, 5.685e-05, 38354.95767387], [1516916160000, 5.686e-05, 5.7e-05, 5.685e-05, 5.685e-05, 18601.31361268], [1516916220000, 5.685e-05, 5.698e-05, 5.685e-05, 5.685e-05, 1639.41594445], [1516916280000, 5.697e-05, 5.697e-05, 5.685e-05, 5.685e-05, 2687.10836223], [1516916340000, 5.685e-05, 5.694e-05, 5.685e-05, 5.694e-05, 2320.52973541], [1516916400000, 5.685e-05, 5.691e-05, 5.685e-05, 5.685e-05, 3831.43410199], [1516916460000, 5.685e-05, 5.694e-05, 5.685e-05, 5.685e-05, 7737.02034061], [1516916520000, 5.685e-05, 5.69e-05, 5.685e-05, 5.69e-05, 16525.16947214], [1516916580000, 5.689e-05, 5.69e-05, 5.685e-05, 5.69e-05, 14211.81237556], [1516916640000, 5.69e-05, 5.697e-05, 5.69e-05, 5.691e-05, 16363.22368626], [1516916700000, 5.691e-05, 5.691e-05, 5.69e-05, 5.69e-05, 14439.31675528], [1516916760000, 5.69e-05, 5.697e-05, 5.685e-05, 5.685e-05, 6123.32110627], [1516916820000, 5.685e-05, 5.688e-05, 5.685e-05, 5.688e-05, 7694.59706133], [1516916880000, 5.688e-05, 5.69e-05, 5.685e-05, 5.685e-05, 15478.54002661], [1516916940000, 5.685e-05, 5.697e-05, 5.685e-05, 5.685e-05, 9723.29370998], [1516917000000, 5.696e-05, 5.696e-05, 5.686e-05, 5.689e-05, 8560.74826456], [1516917060000, 5.689e-05, 5.694e-05, 5.689e-05, 5.689e-05, 5734.72264673], [1516917120000, 5.69e-05, 5.694e-05, 5.685e-05, 5.686e-05, 17209.14611556], [1516917180000, 5.686e-05, 5.688e-05, 5.686e-05, 5.686e-05, 10408.17941379], [1516917240000, 5.686e-05, 5.687e-05, 5.685e-05, 5.686e-05, 9741.95472192], [1516917300000, 5.686e-05, 5.689e-05, 5.685e-05, 5.687e-05, 11840.64828937], [1516917360000, 5.689e-05, 5.689e-05, 5.687e-05, 5.687e-05, 3113.97810275], [1516917420000, 5.687e-05, 5.689e-05, 5.685e-05, 5.685e-05, 22614.88641534], [1516917480000, 5.685e-05, 5.688e-05, 5.685e-05, 5.685e-05, 26845.46839618], [1516917540000, 5.685e-05, 5.688e-05, 5.68e-05, 5.686e-05, 8260.14040587], [1516917600000, 5.686e-05, 5.689e-05, 5.686e-05, 5.689e-05, 19242.37325121], [1516917660000, 5.689e-05, 5.694e-05, 5.689e-05, 5.689e-05, 7040.71876833], [1516917720000, 5.689e-05, 5.693e-05, 5.689e-05, 5.689e-05, 2856.71724014], [1516917780000, 5.69e-05, 5.693e-05, 5.689e-05, 5.689e-05, 6312.21077452], [1516917840000, 5.689e-05, 5.689e-05, 5.685e-05, 5.685e-05, 6421.12185759], [1516917900000, 5.689e-05, 5.689e-05, 5.684e-05, 5.689e-05, 8103.04405007], [1516917960000, 5.688e-05, 5.689e-05, 5.684e-05, 5.684e-05, 13913.64123877], [1516918020000, 5.684e-05, 5.689e-05, 5.68e-05, 5.689e-05, 30706.90055623], [1516918080000, 5.68e-05, 5.689e-05, 5.66e-05, 5.673e-05, 4004.52877788], [1516918140000, 5.689e-05, 5.689e-05, 5.673e-05, 5.675e-05, 31538.47740183], [1516918200000, 5.673e-05, 5.676e-05, 5.673e-05, 5.676e-05, 10557.641058], [1516918260000, 5.68e-05, 5.688e-05, 5.677e-05, 5.68e-05, 11726.02970936], [1516918320000, 5.68e-05, 5.687e-05, 5.68e-05, 5.681e-05, 16620.9218196], [1516918380000, 5.682e-05, 5.684e-05, 5.677e-05, 5.678e-05, 38165.36087469], [1516918440000, 5.678e-05, 5.689e-05, 5.677e-05, 5.689e-05, 129255.84169356], [1516918500000, 5.689e-05, 5.699e-05, 5.685e-05, 5.69e-05, 50938.96860735], [1516918560000, 5.689e-05, 5.7e-05, 5.685e-05, 5.691e-05, 18767.55438486], [1516918620000, 5.699e-05, 5.711e-05, 5.69e-05, 5.698e-05, 20567.68387899], [1516918680000, 5.71e-05, 5.711e-05, 5.709e-05, 5.71e-05, 21845.53474088], [1516918740000, 5.711e-05, 5.711e-05, 5.696e-05, 5.71e-05, 9761.91938598], [1516918800000, 5.71e-05, 5.711e-05, 5.71e-05, 5.711e-05, 9661.62572514], [1516918860000, 5.71e-05, 5.712e-05, 5.71e-05, 5.712e-05, 1384.63931595], [1516918920000, 5.711e-05, 5.712e-05, 5.711e-05, 5.712e-05, 25636.42089231], [1516918980000, 5.713e-05, 5.715e-05, 5.712e-05, 5.714e-05, 338.39391025], [1516919040000, 5.714e-05, 5.715e-05, 5.712e-05, 5.712e-05, 3090.89745937], [1516919100000, 5.712e-05, 5.714e-05, 5.711e-05, 5.711e-05, 8708.14216345], [1516919160000, 5.711e-05, 5.714e-05, 5.711e-05, 5.714e-05, 587.88299813], [1516919220000, 5.711e-05, 5.714e-05, 5.711e-05, 5.711e-05, 1844.18438311], [1516919280000, 5.711e-05, 5.72e-05, 5.71e-05, 5.72e-05, 2364.12801296], [1516919340000, 5.72e-05, 5.721e-05, 5.716e-05, 5.72e-05, 10758.03640809], [1516919400000, 5.72e-05, 5.721e-05, 5.72e-05, 5.721e-05, 3965.49281251], [1516919460000, 5.721e-05, 5.728e-05, 5.721e-05, 5.724e-05, 18291.72388508], [1516919520000, 5.724e-05, 5.728e-05, 5.724e-05, 5.724e-05, 13813.71578155], [1516919580000, 5.724e-05, 5.728e-05, 5.716e-05, 5.716e-05, 10784.40993762], [1516919640000, 5.716e-05, 5.721e-05, 5.71e-05, 5.71e-05, 4517.61467929], [1516919700000, 5.71e-05, 5.724e-05, 5.71e-05, 5.721e-05, 10513.38462305], [1516919760000, 5.71e-05, 5.724e-05, 5.71e-05, 5.721e-05, 3731.91289128], [1516919820000, 5.711e-05, 5.721e-05, 5.711e-05, 5.711e-05, 2771.53960751], [1516919880000, 5.721e-05, 5.721e-05, 5.7e-05, 5.7e-05, 33034.55641365], [1516919940000, 5.7e-05, 5.7e-05, 5.69e-05, 5.697e-05, 9425.59632562], [1516920000000, 5.697e-05, 5.711e-05, 5.69e-05, 5.697e-05, 9988.43092236], [1516920060000, 5.711e-05, 5.711e-05, 5.69e-05, 5.691e-05, 6337.31469328], [1516920120000, 5.691e-05, 5.71e-05, 5.69e-05, 5.69e-05, 8530.85017011], [1516920180000, 5.691e-05, 5.709e-05, 5.691e-05, 5.694e-05, 4659.37644315], [1516920240000, 5.709e-05, 5.711e-05, 5.7e-05, 5.71e-05, 20777.99771315], [1516920300000, 5.71e-05, 5.71e-05, 5.7e-05, 5.71e-05, 13989.07728476], [1516920360000, 5.71e-05, 5.711e-05, 5.71e-05, 5.711e-05, 9984.49627087], [1516920420000, 5.71e-05, 5.72e-05, 5.71e-05, 5.72e-05, 2973.57542933], [1516920480000, 5.72e-05, 5.72e-05, 5.7e-05, 5.701e-05, 13518.23887972], [1516920540000, 5.71e-05, 5.71e-05, 5.7e-05, 5.7e-05, 91830.67011556], [1516920600000, 5.7e-05, 5.72e-05, 5.7e-05, 5.7e-05, 40298.41219813], [1516920660000, 5.7e-05, 5.72e-05, 5.7e-05, 5.7e-05, 7120.78668998], [1516920720000, 5.7e-05, 5.7e-05, 5.696e-05, 5.696e-05, 6279.09334335], [1516920780000, 5.696e-05, 5.699e-05, 5.694e-05, 5.696e-05, 48314.39034215], [1516920840000, 5.696e-05, 5.696e-05, 5.69e-05, 5.69e-05, 21957.11236554], [1516920900000, 5.695e-05, 5.699e-05, 5.688e-05, 5.699e-05, 13855.88303393], [1516920960000, 5.699e-05, 5.7e-05, 5.699e-05, 5.7e-05, 13747.35448225], [1516921020000, 5.699e-05, 5.7e-05, 5.696e-05, 5.7e-05, 38771.7640231], [1516921080000, 5.696e-05, 5.7e-05, 5.696e-05, 5.699e-05, 12227.01410431], [1516921140000, 5.71e-05, 5.72e-05, 5.699e-05, 5.719e-05, 12387.54118156], [1516921200000, 5.7e-05, 5.72e-05, 5.7e-05, 5.7e-05, 27248.74848168], [1516921260000, 5.716e-05, 5.716e-05, 5.7e-05, 5.716e-05, 46400.14647219], [1516921320000, 5.701e-05, 5.714e-05, 5.701e-05, 5.71e-05, 11817.12245506], [1516921380000, 5.71e-05, 5.73e-05, 5.71e-05, 5.713e-05, 84654.74974461], [1516921440000, 5.716e-05, 5.716e-05, 5.713e-05, 5.716e-05, 60631.92759363], [1516921500000, 5.714e-05, 5.716e-05, 5.713e-05, 5.714e-05, 76401.78658152], [1516921560000, 5.714e-05, 5.715e-05, 5.71e-05, 5.714e-05, 28884.79004789], [1516921620000, 5.714e-05, 5.728e-05, 5.71e-05, 5.717e-05, 46329.1092773], [1516921680000, 5.717e-05, 5.717e-05, 5.714e-05, 5.715e-05, 76665.23129696], [1516921740000, 5.721e-05, 5.729e-05, 5.714e-05, 5.729e-05, 29180.05505932], [1516921800000, 5.716e-05, 5.724e-05, 5.716e-05, 5.717e-05, 3143.35056864], [1516921860000, 5.717e-05, 5.729e-05, 5.717e-05, 5.717e-05, 17227.15875586], [1516921920000, 5.717e-05, 5.728e-05, 5.717e-05, 5.717e-05, 3787.37418498], [1516921980000, 5.717e-05, 5.728e-05, 5.717e-05, 5.728e-05, 6957.21223207], [1516922040000, 5.727e-05, 5.728e-05, 5.717e-05, 5.726e-05, 6550.79458627], [1516922100000, 5.727e-05, 5.727e-05, 5.717e-05, 5.726e-05, 883.97964844], [1516922160000, 5.725e-05, 5.733e-05, 5.724e-05, 5.73e-05, 27058.47914764], [1516922220000, 5.73e-05, 5.735e-05, 5.727e-05, 5.727e-05, 59932.35977931], [1516922280000, 5.727e-05, 5.739e-05, 5.726e-05, 5.728e-05, 8682.57122112], [1516922340000, 5.728e-05, 5.728e-05, 5.72e-05, 5.728e-05, 2565.07395483], [1516922400000, 5.728e-05, 5.728e-05, 5.727e-05, 5.727e-05, 2736.05125255], [1516922460000, 5.728e-05, 5.728e-05, 5.725e-05, 5.725e-05, 7197.21048404], [1516922520000, 5.72e-05, 5.725e-05, 5.717e-05, 5.717e-05, 8159.21619988], [1516922580000, 5.725e-05, 5.725e-05, 5.716e-05, 5.716e-05, 5211.25775143], [1516922640000, 5.717e-05, 5.739e-05, 5.715e-05, 5.719e-05, 14236.32530211], [1516922700000, 5.719e-05, 5.739e-05, 5.719e-05, 5.739e-05, 21951.72750823], [1516922760000, 5.738e-05, 5.739e-05, 5.725e-05, 5.739e-05, 3280.47328453], [1516922820000, 5.739e-05, 5.739e-05, 5.739e-05, 5.739e-05, 2145.89122931], [1516922880000, 5.739e-05, 5.739e-05, 5.725e-05, 5.725e-05, 5577.65290258], [1516922940000, 5.725e-05, 5.725e-05, 5.716e-05, 5.716e-05, 2880.15869], [1516923000000, 5.725e-05, 5.739e-05, 5.725e-05, 5.739e-05, 5378.59533017], [1516923060000, 5.725e-05, 5.743e-05, 5.725e-05, 5.74e-05, 13157.59880987], [1516923120000, 5.74e-05, 5.74e-05, 5.739e-05, 5.739e-05, 7836.19057459], [1516923180000, 5.74e-05, 5.74e-05, 5.725e-05, 5.725e-05, 4912.77600648], [1516923240000, 5.725e-05, 5.739e-05, 5.725e-05, 5.725e-05, 1670.23743108], [1516923300000, 5.725e-05, 5.738e-05, 5.725e-05, 5.725e-05, 1345.52924039], [1516923360000, 5.725e-05, 5.729e-05, 5.718e-05, 5.729e-05, 28282.82416382], [1516923420000, 5.729e-05, 5.73e-05, 5.72e-05, 5.73e-05, 26167.60178458], [1516923480000, 5.729e-05, 5.729e-05, 5.718e-05, 5.729e-05, 4591.61532396], [1516923540000, 5.728e-05, 5.728e-05, 5.718e-05, 5.718e-05, 1909.17960762], [1516923600000, 5.716e-05, 5.718e-05, 5.702e-05, 5.702e-05, 12438.66042787], [1516923660000, 5.702e-05, 5.705e-05, 5.702e-05, 5.702e-05, 143718.63154218], [1516923720000, 5.705e-05, 5.705e-05, 5.702e-05, 5.705e-05, 36539.52354376], [1516923780000, 5.705e-05, 5.705e-05, 5.702e-05, 5.702e-05, 29963.10421698], [1516923840000, 5.705e-05, 5.705e-05, 5.703e-05, 5.705e-05, 23609.14928646], [1516923900000, 5.718e-05, 5.718e-05, 5.705e-05, 5.718e-05, 38410.14049338], [1516923960000, 5.718e-05, 5.718e-05, 5.705e-05, 5.718e-05, 3508.17164068], [1516924020000, 5.718e-05, 5.718e-05, 5.707e-05, 5.707e-05, 5507.22675839], [1516924080000, 5.708e-05, 5.718e-05, 5.707e-05, 5.718e-05, 6133.51951722], [1516924140000, 5.717e-05, 5.717e-05, 5.707e-05, 5.708e-05, 3080.90127961], [1516924200000, 5.717e-05, 5.717e-05, 5.708e-05, 5.708e-05, 2596.47914924], [1516924260000, 5.708e-05, 5.716e-05, 5.702e-05, 5.703e-05, 10555.51815384], [1516924320000, 5.705e-05, 5.705e-05, 5.703e-05, 5.703e-05, 13287.24165685], [1516924380000, 5.704e-05, 5.707e-05, 5.703e-05, 5.707e-05, 3978.12055149], [1516924440000, 5.707e-05, 5.717e-05, 5.703e-05, 5.71e-05, 2145.91633141], [1516924500000, 5.711e-05, 5.718e-05, 5.708e-05, 5.708e-05, 50078.43220231], [1516924560000, 5.718e-05, 5.718e-05, 5.708e-05, 5.708e-05, 23609.5045226], [1516924620000, 5.71e-05, 5.714e-05, 5.71e-05, 5.711e-05, 13059.785645], [1516924680000, 5.712e-05, 5.713e-05, 5.711e-05, 5.711e-05, 33903.18028113], [1516924740000, 5.711e-05, 5.712e-05, 5.705e-05, 5.705e-05, 59002.99318399], [1516924800000, 5.705e-05, 5.705e-05, 5.7e-05, 5.7e-05, 15509.28703494], [1516924860000, 5.7e-05, 5.7e-05, 5.688e-05, 5.69e-05, 13583.11389835], [1516924920000, 5.69e-05, 5.69e-05, 5.687e-05, 5.687e-05, 35286.68752862], [1516924980000, 5.687e-05, 5.688e-05, 5.68e-05, 5.687e-05, 21528.66769014], [1516925040000, 5.687e-05, 5.687e-05, 5.678e-05, 5.68e-05, 14157.11544242], [1516925100000, 5.68e-05, 5.701e-05, 5.68e-05, 5.69e-05, 26386.21175881], [1516925160000, 5.69e-05, 5.7e-05, 5.69e-05, 5.691e-05, 4999.12167686], [1516925220000, 5.692e-05, 5.699e-05, 5.691e-05, 5.697e-05, 7851.66143341], [1516925280000, 5.694e-05, 5.7e-05, 5.691e-05, 5.7e-05, 14425.43739189], [1516925340000, 5.697e-05, 5.697e-05, 5.691e-05, 5.691e-05, 13079.83042142], [1516925400000, 5.691e-05, 5.694e-05, 5.691e-05, 5.691e-05, 19718.84252358], [1516925460000, 5.691e-05, 5.701e-05, 5.687e-05, 5.701e-05, 36700.21865693], [1516925520000, 5.701e-05, 5.713e-05, 5.694e-05, 5.713e-05, 18880.9454967], [1516925580000, 5.696e-05, 5.713e-05, 5.68e-05, 5.68e-05, 13007.19233629], [1516925640000, 5.696e-05, 5.696e-05, 5.68e-05, 5.696e-05, 10057.93906839], [1516925700000, 5.696e-05, 5.696e-05, 5.681e-05, 5.681e-05, 7790.19785282], [1516925760000, 5.681e-05, 5.696e-05, 5.68e-05, 5.695e-05, 19369.76912067], [1516925820000, 5.695e-05, 5.696e-05, 5.681e-05, 5.696e-05, 8776.94080583], [1516925880000, 5.682e-05, 5.696e-05, 5.681e-05, 5.681e-05, 5208.26838889], [1516925940000, 5.681e-05, 5.696e-05, 5.681e-05, 5.682e-05, 9003.48267559], [1516926000000, 5.69e-05, 5.691e-05, 5.682e-05, 5.682e-05, 854.23785558], [1516926060000, 5.682e-05, 5.694e-05, 5.682e-05, 5.682e-05, 30449.94698448], [1516926120000, 5.683e-05, 5.687e-05, 5.679e-05, 5.68e-05, 41534.00040987], [1516926180000, 5.694e-05, 5.694e-05, 5.68e-05, 5.68e-05, 2638.44060162], [1516926240000, 5.69e-05, 5.69e-05, 5.681e-05, 5.69e-05, 2784.60914626], [1516926300000, 5.688e-05, 5.696e-05, 5.688e-05, 5.696e-05, 6159.29273937], [1516926360000, 5.696e-05, 5.696e-05, 5.688e-05, 5.688e-05, 3262.73320113], [1516926420000, 5.685e-05, 5.687e-05, 5.66e-05, 5.66e-05, 96372.46795016], [1516926480000, 5.683e-05, 5.686e-05, 5.66e-05, 5.66e-05, 8185.81579426], [1516926540000, 5.66e-05, 5.686e-05, 5.66e-05, 5.66e-05, 8730.01191887], [1516926600000, 5.67e-05, 5.686e-05, 5.661e-05, 5.686e-05, 4982.40503737], [1516926660000, 5.686e-05, 5.687e-05, 5.662e-05, 5.683e-05, 8215.30008316], [1516926720000, 5.683e-05, 5.683e-05, 5.663e-05, 5.681e-05, 2408.28365581], [1516926780000, 5.681e-05, 5.696e-05, 5.665e-05, 5.696e-05, 14139.4281064], [1516926840000, 5.681e-05, 5.7e-05, 5.66e-05, 5.673e-05, 37124.7193656], [1516926900000, 5.674e-05, 5.681e-05, 5.662e-05, 5.662e-05, 64873.87840303], [1516926960000, 5.674e-05, 5.676e-05, 5.662e-05, 5.662e-05, 96103.98038089], [1516927020000, 5.662e-05, 5.7e-05, 5.662e-05, 5.674e-05, 105025.14116879], [1516927080000, 5.7e-05, 5.71e-05, 5.655e-05, 5.677e-05, 135131.52399223], [1516927140000, 5.655e-05, 5.695e-05, 5.636e-05, 5.636e-05, 230858.58889414], [1516927200000, 5.639e-05, 5.677e-05, 5.611e-05, 5.645e-05, 203104.51309677], [1516927260000, 5.646e-05, 5.677e-05, 5.618e-05, 5.636e-05, 190774.60172809], [1516927320000, 5.674e-05, 5.677e-05, 5.601e-05, 5.608e-05, 203533.46944333], [1516927380000, 5.659e-05, 5.66e-05, 5.595e-05, 5.649e-05, 214207.33549472], [1516927440000, 5.649e-05, 5.66e-05, 5.642e-05, 5.66e-05, 43327.70189245], [1516927500000, 5.66e-05, 5.674e-05, 5.654e-05, 5.66e-05, 20861.83719922], [1516927560000, 5.66e-05, 5.677e-05, 5.656e-05, 5.66e-05, 37127.42869917], [1516927620000, 5.66e-05, 5.666e-05, 5.656e-05, 5.666e-05, 18389.81790295], [1516927680000, 5.656e-05, 5.677e-05, 5.655e-05, 5.666e-05, 26597.28657617], [1516927740000, 5.656e-05, 5.673e-05, 5.655e-05, 5.673e-05, 61256.05584812], [1516927800000, 5.656e-05, 5.669e-05, 5.656e-05, 5.656e-05, 21403.60207195], [1516927860000, 5.656e-05, 5.677e-05, 5.654e-05, 5.66e-05, 71042.16491985], [1516927920000, 5.66e-05, 5.676e-05, 5.66e-05, 5.671e-05, 57083.57863971], [1516927980000, 5.671e-05, 5.676e-05, 5.661e-05, 5.661e-05, 32784.34738156], [1516928040000, 5.661e-05, 5.665e-05, 5.661e-05, 5.665e-05, 27684.79457034], [1516928100000, 5.667e-05, 5.671e-05, 5.667e-05, 5.669e-05, 726.27116317], [1516928160000, 5.671e-05, 5.671e-05, 5.668e-05, 5.669e-05, 26510.44889333], [1516928220000, 5.668e-05, 5.669e-05, 5.668e-05, 5.669e-05, 13568.1675264], [1516928280000, 5.67e-05, 5.677e-05, 5.668e-05, 5.677e-05, 22179.95909018], [1516928340000, 5.675e-05, 5.684e-05, 5.672e-05, 5.684e-05, 57578.54461106], [1516928400000, 5.684e-05, 5.688e-05, 5.677e-05, 5.688e-05, 7395.82374881], [1516928460000, 5.68e-05, 5.688e-05, 5.668e-05, 5.668e-05, 19119.45000868], [1516928520000, 5.688e-05, 5.688e-05, 5.688e-05, 5.688e-05, 1712.1010788], [1516928580000, 5.688e-05, 5.695e-05, 5.688e-05, 5.691e-05, 14140.7132867], [1516928640000, 5.69e-05, 5.695e-05, 5.67e-05, 5.689e-05, 17166.22173475], [1516928700000, 5.689e-05, 5.697e-05, 5.689e-05, 5.689e-05, 19200.59285495], [1516928760000, 5.695e-05, 5.695e-05, 5.67e-05, 5.67e-05, 35370.1421293], [1516928820000, 5.683e-05, 5.693e-05, 5.683e-05, 5.683e-05, 3463.03959992], [1516928880000, 5.683e-05, 5.691e-05, 5.67e-05, 5.678e-05, 36055.1254081], [1516928940000, 5.678e-05, 5.678e-05, 5.678e-05, 5.678e-05, 1704.19744787], [1516929000000, 5.678e-05, 5.678e-05, 5.671e-05, 5.671e-05, 1922.24325549], [1516929060000, 5.671e-05, 5.671e-05, 5.669e-05, 5.67e-05, 2831.43649982], [1516929120000, 5.669e-05, 5.67e-05, 5.669e-05, 5.669e-05, 5827.52485715], [1516929180000, 5.669e-05, 5.67e-05, 5.668e-05, 5.67e-05, 43486.22966609], [1516929240000, 5.669e-05, 5.669e-05, 5.667e-05, 5.668e-05, 30053.16419645], [1516929300000, 5.668e-05, 5.677e-05, 5.668e-05, 5.668e-05, 12058.40560635], [1516929360000, 5.669e-05, 5.676e-05, 5.669e-05, 5.669e-05, 17070.2681862], [1516929420000, 5.669e-05, 5.67e-05, 5.665e-05, 5.665e-05, 21643.30581251], [1516929480000, 5.661e-05, 5.669e-05, 5.661e-05, 5.667e-05, 12790.06439137], [1516929540000, 5.669e-05, 5.669e-05, 5.667e-05, 5.668e-05, 22887.87158254], [1516929600000, 5.668e-05, 5.669e-05, 5.667e-05, 5.668e-05, 22822.308116], [1516929660000, 5.668e-05, 5.675e-05, 5.668e-05, 5.668e-05, 4841.6528236], [1516929720000, 5.665e-05, 5.677e-05, 5.665e-05, 5.674e-05, 36024.93821613], [1516929780000, 5.674e-05, 5.677e-05, 5.665e-05, 5.673e-05, 13652.94991358], [1516929840000, 5.673e-05, 5.674e-05, 5.67e-05, 5.674e-05, 4007.60739848], [1516929900000, 5.67e-05, 5.674e-05, 5.665e-05, 5.665e-05, 21687.19848359], [1516929960000, 5.666e-05, 5.67e-05, 5.665e-05, 5.67e-05, 8743.11041418], [1516930020000, 5.665e-05, 5.675e-05, 5.665e-05, 5.666e-05, 18881.50744117], [1516930080000, 5.666e-05, 5.675e-05, 5.66e-05, 5.66e-05, 17538.24104854], [1516930140000, 5.66e-05, 5.665e-05, 5.656e-05, 5.66e-05, 17708.18396109], [1516930200000, 5.656e-05, 5.66e-05, 5.655e-05, 5.656e-05, 28742.1195478], [1516930260000, 5.656e-05, 5.66e-05, 5.656e-05, 5.656e-05, 7137.23101485], [1516930320000, 5.656e-05, 5.656e-05, 5.655e-05, 5.656e-05, 28863.49078263], [1516930380000, 5.656e-05, 5.656e-05, 5.655e-05, 5.655e-05, 17892.95338145], [1516930440000, 5.655e-05, 5.656e-05, 5.655e-05, 5.655e-05, 12040.224799], [1516930500000, 5.656e-05, 5.656e-05, 5.645e-05, 5.645e-05, 21016.00741758], [1516930560000, 5.645e-05, 5.655e-05, 5.625e-05, 5.655e-05, 26710.27948787], [1516930620000, 5.65e-05, 5.65e-05, 5.645e-05, 5.645e-05, 1422.48382655], [1516930680000, 5.647e-05, 5.65e-05, 5.645e-05, 5.645e-05, 27149.88282721], [1516930740000, 5.648e-05, 5.648e-05, 5.624e-05, 5.648e-05, 15827.53084293], [1516930800000, 5.648e-05, 5.651e-05, 5.628e-05, 5.629e-05, 12263.34563968], [1516930860000, 5.629e-05, 5.654e-05, 5.629e-05, 5.631e-05, 5268.68101668], [1516930920000, 5.654e-05, 5.654e-05, 5.633e-05, 5.637e-05, 48549.19708367], [1516930980000, 5.654e-05, 5.655e-05, 5.648e-05, 5.648e-05, 19098.01059929], [1516931040000, 5.654e-05, 5.655e-05, 5.654e-05, 5.655e-05, 26988.18612214], [1516931100000, 5.655e-05, 5.656e-05, 5.654e-05, 5.654e-05, 26550.81631118], [1516931160000, 5.656e-05, 5.666e-05, 5.649e-05, 5.655e-05, 51486.04468367], [1516931220000, 5.655e-05, 5.655e-05, 5.648e-05, 5.649e-05, 17353.23280238], [1516931280000, 5.655e-05, 5.655e-05, 5.641e-05, 5.641e-05, 12005.50919787], [1516931340000, 5.64e-05, 5.649e-05, 5.64e-05, 5.641e-05, 53032.43692183], [1516931400000, 5.641e-05, 5.651e-05, 5.641e-05, 5.642e-05, 39713.69030051], [1516931460000, 5.642e-05, 5.655e-05, 5.641e-05, 5.643e-05, 12926.30251753], [1516931520000, 5.655e-05, 5.655e-05, 5.643e-05, 5.654e-05, 14892.86018736], [1516931580000, 5.643e-05, 5.666e-05, 5.64e-05, 5.666e-05, 23197.92909212], [1516931640000, 5.666e-05, 5.666e-05, 5.644e-05, 5.645e-05, 6219.42827786], [1516931700000, 5.666e-05, 5.677e-05, 5.649e-05, 5.673e-05, 16665.53642371], [1516931760000, 5.673e-05, 5.673e-05, 5.65e-05, 5.665e-05, 17613.6094085], [1516931820000, 5.664e-05, 5.672e-05, 5.65e-05, 5.672e-05, 19625.62227592], [1516931880000, 5.65e-05, 5.65e-05, 5.649e-05, 5.649e-05, 15663.29545755], [1516931940000, 5.671e-05, 5.672e-05, 5.646e-05, 5.646e-05, 35241.42327058], [1516932000000, 5.646e-05, 5.675e-05, 5.645e-05, 5.646e-05, 58310.31406874], [1516932060000, 5.647e-05, 5.675e-05, 5.646e-05, 5.646e-05, 13313.33383438], [1516932120000, 5.648e-05, 5.665e-05, 5.648e-05, 5.663e-05, 6893.47173685], [1516932180000, 5.663e-05, 5.664e-05, 5.645e-05, 5.646e-05, 13637.8332406], [1516932240000, 5.646e-05, 5.663e-05, 5.646e-05, 5.646e-05, 7892.06888045], [1516932300000, 5.646e-05, 5.647e-05, 5.646e-05, 5.646e-05, 1750.96644919], [1516932360000, 5.647e-05, 5.661e-05, 5.646e-05, 5.65e-05, 13251.61049456], [1516932420000, 5.655e-05, 5.655e-05, 5.65e-05, 5.65e-05, 6428.00681195], [1516932480000, 5.65e-05, 5.65e-05, 5.646e-05, 5.646e-05, 6990.79589332], [1516932540000, 5.65e-05, 5.65e-05, 5.647e-05, 5.65e-05, 5647.81417215], [1516932600000, 5.647e-05, 5.649e-05, 5.646e-05, 5.649e-05, 12503.52809768], [1516932660000, 5.649e-05, 5.649e-05, 5.64e-05, 5.64e-05, 30296.10939288], [1516932720000, 5.64e-05, 5.64e-05, 5.636e-05, 5.639e-05, 6082.48606538], [1516932780000, 5.636e-05, 5.639e-05, 5.63e-05, 5.637e-05, 13336.17938959], [1516932840000, 5.637e-05, 5.637e-05, 5.636e-05, 5.636e-05, 16183.77476689], [1516932900000, 5.637e-05, 5.637e-05, 5.637e-05, 5.637e-05, 1494.23101652], [1516932960000, 5.636e-05, 5.636e-05, 5.626e-05, 5.626e-05, 5721.58290059], [1516933020000, 5.63e-05, 5.63e-05, 5.623e-05, 5.63e-05, 12626.1955191], [1516933080000, 5.63e-05, 5.63e-05, 5.625e-05, 5.629e-05, 13006.81135745], [1516933140000, 5.63e-05, 5.637e-05, 5.63e-05, 5.637e-05, 3924.02367603], [1516933200000, 5.635e-05, 5.637e-05, 5.626e-05, 5.626e-05, 9164.56505994], [1516933260000, 5.626e-05, 5.635e-05, 5.625e-05, 5.625e-05, 16267.66699703], [1516933320000, 5.637e-05, 5.637e-05, 5.624e-05, 5.624e-05, 51062.73630588], [1516933380000, 5.624e-05, 5.637e-05, 5.624e-05, 5.637e-05, 28688.60029871], [1516933440000, 5.637e-05, 5.637e-05, 5.637e-05, 5.637e-05, 2104.02011195], [1516933500000, 5.636e-05, 5.639e-05, 5.636e-05, 5.637e-05, 38452.99954802], [1516933560000, 5.637e-05, 5.637e-05, 5.637e-05, 5.637e-05, 7851.42137818], [1516933620000, 5.637e-05, 5.639e-05, 5.636e-05, 5.637e-05, 9431.84381419], [1516933680000, 5.636e-05, 5.637e-05, 5.636e-05, 5.636e-05, 3714.49443044], [1516933740000, 5.636e-05, 5.643e-05, 5.636e-05, 5.643e-05, 20568.73855951], [1516933800000, 5.64e-05, 5.643e-05, 5.625e-05, 5.643e-05, 24520.90998535], [1516933860000, 5.625e-05, 5.642e-05, 5.625e-05, 5.642e-05, 4517.24089745], [1516933920000, 5.642e-05, 5.642e-05, 5.623e-05, 5.623e-05, 4284.12980123], [1516933980000, 5.626e-05, 5.642e-05, 5.626e-05, 5.642e-05, 9747.89921704], [1516934040000, 5.642e-05, 5.642e-05, 5.626e-05, 5.626e-05, 5507.71735434], [1516934100000, 5.642e-05, 5.67e-05, 5.642e-05, 5.645e-05, 37690.46456141], [1516934160000, 5.645e-05, 5.645e-05, 5.64e-05, 5.64e-05, 4657.96754031], [1516934220000, 5.641e-05, 5.642e-05, 5.64e-05, 5.642e-05, 25474.66791386], [1516934280000, 5.641e-05, 5.67e-05, 5.641e-05, 5.641e-05, 6256.21447691], [1516934340000, 5.641e-05, 5.641e-05, 5.64e-05, 5.641e-05, 4386.45848574], [1516934400000, 5.641e-05, 5.641e-05, 5.64e-05, 5.641e-05, 1566.99575458], [1516934460000, 5.641e-05, 5.641e-05, 5.622e-05, 5.622e-05, 36953.5309053], [1516934520000, 5.639e-05, 5.641e-05, 5.639e-05, 5.641e-05, 3107.69533958], [1516934580000, 5.641e-05, 5.641e-05, 5.639e-05, 5.641e-05, 7316.09352718], [1516934640000, 5.664e-05, 5.664e-05, 5.642e-05, 5.664e-05, 1794.78232061], [1516934700000, 5.645e-05, 5.645e-05, 5.641e-05, 5.641e-05, 5253.69143767], [1516934760000, 5.645e-05, 5.645e-05, 5.639e-05, 5.639e-05, 8371.66465474], [1516934820000, 5.639e-05, 5.639e-05, 5.627e-05, 5.627e-05, 2444.31507877], [1516934880000, 5.627e-05, 5.627e-05, 5.62e-05, 5.62e-05, 20338.31160014], [1516934940000, 5.62e-05, 5.627e-05, 5.611e-05, 5.613e-05, 58601.24640455], [1516935000000, 5.62e-05, 5.62e-05, 5.613e-05, 5.62e-05, 3381.43888129], [1516935060000, 5.62e-05, 5.62e-05, 5.61e-05, 5.614e-05, 21882.58132558], [1516935120000, 5.62e-05, 5.627e-05, 5.6e-05, 5.6e-05, 76667.14527734], [1516935180000, 5.605e-05, 5.624e-05, 5.6e-05, 5.612e-05, 68875.79960151], [1516935240000, 5.612e-05, 5.614e-05, 5.56e-05, 5.56e-05, 152609.52261998], [1516935300000, 5.607e-05, 5.608e-05, 5.556e-05, 5.565e-05, 102589.29631116], [1516935360000, 5.565e-05, 5.601e-05, 5.556e-05, 5.576e-05, 183811.32071495], [1516935420000, 5.576e-05, 5.6e-05, 5.551e-05, 5.6e-05, 255333.55868133], [1516935480000, 5.577e-05, 5.599e-05, 5.577e-05, 5.595e-05, 136565.96557925], [1516935540000, 5.595e-05, 5.608e-05, 5.587e-05, 5.6e-05, 55187.06697113], [1516935600000, 5.609e-05, 5.62e-05, 5.609e-05, 5.615e-05, 25430.80905831], [1516935660000, 5.62e-05, 5.625e-05, 5.611e-05, 5.625e-05, 7985.75865721], [1516935720000, 5.625e-05, 5.638e-05, 5.61e-05, 5.61e-05, 28867.07954025], [1516935780000, 5.612e-05, 5.625e-05, 5.612e-05, 5.625e-05, 1924.47666242], [1516935840000, 5.625e-05, 5.64e-05, 5.625e-05, 5.628e-05, 18377.04624882], [1516935900000, 5.64e-05, 5.64e-05, 5.612e-05, 5.622e-05, 24760.57636702], [1516935960000, 5.622e-05, 5.627e-05, 5.614e-05, 5.622e-05, 42643.0005315], [1516936020000, 5.622e-05, 5.637e-05, 5.61e-05, 5.612e-05, 35926.68043294], [1516936080000, 5.614e-05, 5.636e-05, 5.61e-05, 5.611e-05, 23352.511348], [1516936140000, 5.613e-05, 5.636e-05, 5.613e-05, 5.633e-05, 19364.99857873], [1516936200000, 5.632e-05, 5.64e-05, 5.623e-05, 5.624e-05, 36912.08084498], [1516936260000, 5.626e-05, 5.633e-05, 5.616e-05, 5.626e-05, 45422.49847262], [1516936320000, 5.626e-05, 5.626e-05, 5.617e-05, 5.617e-05, 39464.20500064], [1516936380000, 5.617e-05, 5.632e-05, 5.617e-05, 5.618e-05, 26054.44908121], [1516936440000, 5.627e-05, 5.639e-05, 5.618e-05, 5.625e-05, 26838.68795892], [1516936500000, 5.627e-05, 5.639e-05, 5.618e-05, 5.618e-05, 22671.19340046], [1516936560000, 5.63e-05, 5.638e-05, 5.619e-05, 5.627e-05, 42721.13620032], [1516936620000, 5.63e-05, 5.633e-05, 5.618e-05, 5.618e-05, 37062.39634611], [1516936680000, 5.618e-05, 5.633e-05, 5.6e-05, 5.623e-05, 114402.76575625], [1516936740000, 5.623e-05, 5.623e-05, 5.607e-05, 5.619e-05, 36291.93982402], [1516936800000, 5.61e-05, 5.62e-05, 5.61e-05, 5.619e-05, 25041.2433982], [1516936860000, 5.619e-05, 5.623e-05, 5.619e-05, 5.619e-05, 17203.50437683], [1516936920000, 5.623e-05, 5.632e-05, 5.621e-05, 5.624e-05, 15129.95445588], [1516936980000, 5.625e-05, 5.631e-05, 5.624e-05, 5.625e-05, 22181.49605828], [1516937040000, 5.625e-05, 5.637e-05, 5.625e-05, 5.631e-05, 64125.94257728], [1516937100000, 5.631e-05, 5.631e-05, 5.623e-05, 5.626e-05, 84777.88937949], [1516937160000, 5.626e-05, 5.631e-05, 5.625e-05, 5.625e-05, 31319.9418618], [1516937220000, 5.625e-05, 5.631e-05, 5.625e-05, 5.627e-05, 26902.87831233], [1516937280000, 5.627e-05, 5.631e-05, 5.625e-05, 5.625e-05, 19191.25164485], [1516937340000, 5.628e-05, 5.631e-05, 5.625e-05, 5.628e-05, 38838.75556055], [1516937400000, 5.628e-05, 5.637e-05, 5.627e-05, 5.629e-05, 21133.32777257], [1516937460000, 5.629e-05, 5.639e-05, 5.628e-05, 5.639e-05, 31979.06605213], [1516937520000, 5.638e-05, 5.638e-05, 5.628e-05, 5.628e-05, 31428.2332577], [1516937580000, 5.632e-05, 5.638e-05, 5.624e-05, 5.624e-05, 101145.7945894], [1516937640000, 5.624e-05, 5.627e-05, 5.6e-05, 5.604e-05, 136172.27041364], [1516937700000, 5.607e-05, 5.623e-05, 5.607e-05, 5.612e-05, 128651.37299151], [1516937760000, 5.612e-05, 5.619e-05, 5.609e-05, 5.611e-05, 57624.18088607], [1516937820000, 5.612e-05, 5.612e-05, 5.601e-05, 5.61e-05, 103621.81527873], [1516937880000, 5.61e-05, 5.613e-05, 5.59e-05, 5.599e-05, 93485.80793408], [1516937940000, 5.6e-05, 5.609e-05, 5.599e-05, 5.609e-05, 118995.64214702], [1516938000000, 5.606e-05, 5.609e-05, 5.592e-05, 5.604e-05, 68736.68814662], [1516938060000, 5.602e-05, 5.61e-05, 5.598e-05, 5.607e-05, 122117.04827329], [1516938120000, 5.607e-05, 5.617e-05, 5.606e-05, 5.606e-05, 60161.16897381], [1516938180000, 5.606e-05, 5.617e-05, 5.6e-05, 5.617e-05, 65975.00300211], [1516938240000, 5.618e-05, 5.627e-05, 5.612e-05, 5.627e-05, 35825.37538918], [1516938300000, 5.615e-05, 5.627e-05, 5.611e-05, 5.611e-05, 71173.13519859], [1516938360000, 5.616e-05, 5.617e-05, 5.611e-05, 5.616e-05, 47069.92375446], [1516938420000, 5.616e-05, 5.616e-05, 5.613e-05, 5.616e-05, 90374.21564627], [1516938480000, 5.614e-05, 5.617e-05, 5.613e-05, 5.613e-05, 30042.31639849], [1516938540000, 5.613e-05, 5.613e-05, 5.592e-05, 5.596e-05, 44781.3610639], [1516938600000, 5.602e-05, 5.613e-05, 5.602e-05, 5.611e-05, 55855.27492157], [1516938660000, 5.611e-05, 5.613e-05, 5.605e-05, 5.607e-05, 62042.7231229], [1516938720000, 5.611e-05, 5.613e-05, 5.608e-05, 5.613e-05, 19769.99790526], [1516938780000, 5.612e-05, 5.617e-05, 5.612e-05, 5.617e-05, 13010.21063931], [1516938840000, 5.617e-05, 5.627e-05, 5.614e-05, 5.627e-05, 12442.56815506], [1516938900000, 5.626e-05, 5.626e-05, 5.614e-05, 5.626e-05, 13609.17555493], [1516938960000, 5.616e-05, 5.627e-05, 5.616e-05, 5.617e-05, 48683.99060719], [1516939020000, 5.617e-05, 5.629e-05, 5.593e-05, 5.601e-05, 26089.41231763], [1516939080000, 5.602e-05, 5.629e-05, 5.602e-05, 5.629e-05, 24430.9822171], [1516939140000, 5.63e-05, 5.63e-05, 5.602e-05, 5.607e-05, 68411.97213254], [1516939200000, 5.606e-05, 5.611e-05, 5.6e-05, 5.603e-05, 55150.37302519], [1516939260000, 5.603e-05, 5.632e-05, 5.602e-05, 5.611e-05, 63643.91571436], [1516939320000, 5.611e-05, 5.63e-05, 5.611e-05, 5.615e-05, 66646.55192224], [1516939380000, 5.616e-05, 5.625e-05, 5.601e-05, 5.601e-05, 44900.51051254], [1516939440000, 5.601e-05, 5.625e-05, 5.601e-05, 5.608e-05, 37461.0593685], [1516939500000, 5.608e-05, 5.62e-05, 5.605e-05, 5.606e-05, 80186.29894948], [1516939560000, 5.606e-05, 5.611e-05, 5.606e-05, 5.609e-05, 50290.56418555], [1516939620000, 5.609e-05, 5.615e-05, 5.609e-05, 5.61e-05, 35892.90204862], [1516939680000, 5.611e-05, 5.619e-05, 5.61e-05, 5.617e-05, 124156.83447825], [1516939740000, 5.612e-05, 5.617e-05, 5.6e-05, 5.6e-05, 75083.69701686], [1516939800000, 5.6e-05, 5.612e-05, 5.594e-05, 5.605e-05, 65491.34415969], [1516939860000, 5.61e-05, 5.612e-05, 5.594e-05, 5.606e-05, 59052.47244624], [1516939920000, 5.601e-05, 5.613e-05, 5.601e-05, 5.605e-05, 103651.1833871], [1516939980000, 5.606e-05, 5.606e-05, 5.595e-05, 5.6e-05, 308065.10897048], [1516940040000, 5.6e-05, 5.603e-05, 5.594e-05, 5.6e-05, 42240.7980399], [1516940100000, 5.6e-05, 5.604e-05, 5.597e-05, 5.601e-05, 79495.16507257], [1516940160000, 5.602e-05, 5.602e-05, 5.599e-05, 5.599e-05, 109971.81777698], [1516940220000, 5.599e-05, 5.599e-05, 5.594e-05, 5.594e-05, 8818.66664903], [1516940280000, 5.593e-05, 5.601e-05, 5.593e-05, 5.6e-05, 19662.60080208], [1516940340000, 5.6e-05, 5.601e-05, 5.595e-05, 5.601e-05, 116686.06409938], [1516940400000, 5.602e-05, 5.602e-05, 5.595e-05, 5.596e-05, 31595.65543701], [1516940460000, 5.596e-05, 5.614e-05, 5.596e-05, 5.614e-05, 21862.35771805], [1516940520000, 5.606e-05, 5.613e-05, 5.597e-05, 5.598e-05, 49833.59055996], [1516940580000, 5.606e-05, 5.606e-05, 5.603e-05, 5.606e-05, 1454.22917582], [1516940640000, 5.606e-05, 5.614e-05, 5.598e-05, 5.598e-05, 13177.55040859], [1516940700000, 5.601e-05, 5.614e-05, 5.6e-05, 5.614e-05, 37564.80822091], [1516940760000, 5.602e-05, 5.614e-05, 5.602e-05, 5.614e-05, 3444.74523196], [1516940820000, 5.614e-05, 5.614e-05, 5.603e-05, 5.605e-05, 5809.52475281], [1516940880000, 5.605e-05, 5.613e-05, 5.605e-05, 5.613e-05, 3828.08429126], [1516940940000, 5.605e-05, 5.605e-05, 5.602e-05, 5.602e-05, 1076.00720006], [1516941000000, 5.604e-05, 5.605e-05, 5.602e-05, 5.605e-05, 761.58097593], [1516941060000, 5.603e-05, 5.605e-05, 5.603e-05, 5.603e-05, 17310.04705047], [1516941120000, 5.603e-05, 5.603e-05, 5.602e-05, 5.602e-05, 10124.3423742], [1516941180000, 5.602e-05, 5.602e-05, 5.6e-05, 5.6e-05, 17917.32385339], [1516941240000, 5.602e-05, 5.602e-05, 5.6e-05, 5.6e-05, 20208.12795154], [1516941300000, 5.601e-05, 5.601e-05, 5.6e-05, 5.601e-05, 7947.42595494], [1516941360000, 5.601e-05, 5.601e-05, 5.6e-05, 5.6e-05, 17389.04513902], [1516941420000, 5.6e-05, 5.601e-05, 5.597e-05, 5.597e-05, 32296.65669523], [1516941480000, 5.597e-05, 5.601e-05, 5.595e-05, 5.595e-05, 12151.80598177], [1516941540000, 5.596e-05, 5.596e-05, 5.595e-05, 5.595e-05, 3854.28496453], [1516941600000, 5.596e-05, 5.596e-05, 5.594e-05, 5.595e-05, 34311.3273901], [1516941660000, 5.594e-05, 5.6e-05, 5.594e-05, 5.6e-05, 13250.74383956], [1516941720000, 5.596e-05, 5.6e-05, 5.596e-05, 5.596e-05, 8279.66546684], [1516941780000, 5.596e-05, 5.6e-05, 5.596e-05, 5.596e-05, 17570.27058892], [1516941840000, 5.594e-05, 5.596e-05, 5.594e-05, 5.594e-05, 9640.56412702], [1516941900000, 5.594e-05, 5.596e-05, 5.594e-05, 5.595e-05, 3364.30991766], [1516941960000, 5.595e-05, 5.595e-05, 5.59e-05, 5.591e-05, 25975.18475404], [1516942020000, 5.591e-05, 5.591e-05, 5.588e-05, 5.588e-05, 5953.78201876], [1516942080000, 5.588e-05, 5.588e-05, 5.561e-05, 5.561e-05, 16787.28959526], [1516942140000, 5.564e-05, 5.564e-05, 5.56e-05, 5.564e-05, 8249.40139665], [1516942200000, 5.564e-05, 5.57e-05, 5.561e-05, 5.57e-05, 42262.76777784], [1516942260000, 5.57e-05, 5.57e-05, 5.569e-05, 5.57e-05, 13638.99641663], [1516942320000, 5.569e-05, 5.569e-05, 5.561e-05, 5.565e-05, 15565.57349135], [1516942380000, 5.565e-05, 5.57e-05, 5.565e-05, 5.57e-05, 6225.25461915], [1516942440000, 5.57e-05, 5.57e-05, 5.569e-05, 5.57e-05, 19705.8848368], [1516942500000, 5.57e-05, 5.57e-05, 5.567e-05, 5.567e-05, 4233.83206873], [1516942560000, 5.57e-05, 5.57e-05, 5.57e-05, 5.57e-05, 2397.91181445], [1516942620000, 5.587e-05, 5.59e-05, 5.57e-05, 5.57e-05, 14908.35213148], [1516942680000, 5.568e-05, 5.568e-05, 5.567e-05, 5.568e-05, 22846.7091005], [1516942740000, 5.568e-05, 5.57e-05, 5.568e-05, 5.57e-05, 9299.60564856], [1516942800000, 5.57e-05, 5.586e-05, 5.57e-05, 5.57e-05, 8492.7916843], [1516942860000, 5.57e-05, 5.57e-05, 5.569e-05, 5.57e-05, 2859.77807648], [1516942920000, 5.569e-05, 5.57e-05, 5.568e-05, 5.568e-05, 15214.80788848], [1516942980000, 5.568e-05, 5.57e-05, 5.567e-05, 5.57e-05, 41080.08423691], [1516943040000, 5.567e-05, 5.567e-05, 5.556e-05, 5.556e-05, 33000.24817263], [1516943100000, 5.556e-05, 5.561e-05, 5.555e-05, 5.555e-05, 40339.10680449], [1516943160000, 5.555e-05, 5.556e-05, 5.54e-05, 5.54e-05, 79906.27881358], [1516943220000, 5.54e-05, 5.549e-05, 5.522e-05, 5.537e-05, 41646.62119918], [1516943280000, 5.537e-05, 5.542e-05, 5.516e-05, 5.517e-05, 46477.13452349], [1516943340000, 5.517e-05, 5.537e-05, 5.516e-05, 5.537e-05, 47105.45740334], [1516943400000, 5.535e-05, 5.537e-05, 5.517e-05, 5.536e-05, 17327.53145896], [1516943460000, 5.521e-05, 5.536e-05, 5.517e-05, 5.52e-05, 46841.14923725], [1516943520000, 5.52e-05, 5.52e-05, 5.517e-05, 5.517e-05, 31409.33132589], [1516943580000, 5.517e-05, 5.52e-05, 5.516e-05, 5.517e-05, 15691.83878035], [1516943640000, 5.517e-05, 5.52e-05, 5.516e-05, 5.52e-05, 25243.99083152], [1516943700000, 5.52e-05, 5.52e-05, 5.513e-05, 5.515e-05, 25591.32075739], [1516943760000, 5.512e-05, 5.515e-05, 5.512e-05, 5.515e-05, 9023.35947148], [1516943820000, 5.514e-05, 5.516e-05, 5.51e-05, 5.512e-05, 11751.6211877], [1516943880000, 5.512e-05, 5.512e-05, 5.51e-05, 5.512e-05, 46246.05583655], [1516943940000, 5.512e-05, 5.515e-05, 5.512e-05, 5.514e-05, 17242.86977819], [1516944000000, 5.514e-05, 5.515e-05, 5.501e-05, 5.501e-05, 44213.60344878], [1516944060000, 5.501e-05, 5.501e-05, 5.5e-05, 5.501e-05, 44879.27090249], [1516944120000, 5.5e-05, 5.501e-05, 5.499e-05, 5.499e-05, 140949.13965933], [1516944180000, 5.499e-05, 5.499e-05, 5.49e-05, 5.491e-05, 22590.66445228], [1516944240000, 5.491e-05, 5.491e-05, 5.486e-05, 5.489e-05, 37846.14237026], [1516944300000, 5.489e-05, 5.489e-05, 5.474e-05, 5.479e-05, 53948.66799967], [1516944360000, 5.481e-05, 5.491e-05, 5.479e-05, 5.491e-05, 68305.48355835], [1516944420000, 5.491e-05, 5.501e-05, 5.491e-05, 5.499e-05, 58295.78839967], [1516944480000, 5.497e-05, 5.501e-05, 5.492e-05, 5.5e-05, 59670.6886621], [1516944540000, 5.5e-05, 5.501e-05, 5.497e-05, 5.501e-05, 151262.04505769], [1516944600000, 5.494e-05, 5.501e-05, 5.492e-05, 5.5e-05, 111562.20438617], [1516944660000, 5.501e-05, 5.501e-05, 5.5e-05, 5.501e-05, 13337.37009281], [1516944720000, 5.501e-05, 5.501e-05, 5.5e-05, 5.501e-05, 401998.77134851], [1516944780000, 5.501e-05, 5.51e-05, 5.5e-05, 5.51e-05, 130611.87594854], [1516944840000, 5.51e-05, 5.515e-05, 5.51e-05, 5.512e-05, 20938.00771418], [1516944900000, 5.519e-05, 5.52e-05, 5.512e-05, 5.52e-05, 46678.87896201], [1516944960000, 5.532e-05, 5.551e-05, 5.52e-05, 5.551e-05, 76707.1642301], [1516945020000, 5.551e-05, 5.551e-05, 5.532e-05, 5.532e-05, 32777.58351851], [1516945080000, 5.532e-05, 5.536e-05, 5.521e-05, 5.529e-05, 57223.54343994], [1516945140000, 5.529e-05, 5.529e-05, 5.521e-05, 5.522e-05, 18628.28608167], [1516945200000, 5.522e-05, 5.528e-05, 5.52e-05, 5.52e-05, 43786.06712451], [1516945260000, 5.52e-05, 5.52e-05, 5.51e-05, 5.51e-05, 72042.90657618], [1516945320000, 5.508e-05, 5.508e-05, 5.5e-05, 5.5e-05, 42477.85784768], [1516945380000, 5.499e-05, 5.5e-05, 5.499e-05, 5.499e-05, 28351.21200435], [1516945440000, 5.5e-05, 5.5e-05, 5.499e-05, 5.499e-05, 18080.22879418], [1516945500000, 5.5e-05, 5.51e-05, 5.499e-05, 5.499e-05, 12328.63872137], [1516945560000, 5.499e-05, 5.5e-05, 5.499e-05, 5.5e-05, 22883.04060559], [1516945620000, 5.501e-05, 5.51e-05, 5.501e-05, 5.51e-05, 42689.80483369], [1516945680000, 5.51e-05, 5.51e-05, 5.499e-05, 5.499e-05, 278560.97198222], [1516945740000, 5.499e-05, 5.5e-05, 5.498e-05, 5.499e-05, 66217.03250934], [1516945800000, 5.499e-05, 5.499e-05, 5.495e-05, 5.499e-05, 5991.16409919], [1516945860000, 5.495e-05, 5.498e-05, 5.491e-05, 5.492e-05, 11523.4212077], [1516945920000, 5.491e-05, 5.499e-05, 5.491e-05, 5.499e-05, 21027.71994532], [1516945980000, 5.498e-05, 5.499e-05, 5.491e-05, 5.499e-05, 19930.97860907], [1516946040000, 5.498e-05, 5.499e-05, 5.498e-05, 5.499e-05, 20987.23358816], [1516946100000, 5.499e-05, 5.499e-05, 5.491e-05, 5.491e-05, 30931.69852937], [1516946160000, 5.491e-05, 5.491e-05, 5.482e-05, 5.483e-05, 17391.51404862], [1516946220000, 5.483e-05, 5.488e-05, 5.482e-05, 5.488e-05, 7953.79399941], [1516946280000, 5.491e-05, 5.491e-05, 5.483e-05, 5.483e-05, 3763.65074464], [1516946340000, 5.482e-05, 5.483e-05, 5.481e-05, 5.483e-05, 3059.14978122], [1516946400000, 5.483e-05, 5.484e-05, 5.481e-05, 5.483e-05, 43417.57405775], [1516946460000, 5.484e-05, 5.484e-05, 5.483e-05, 5.484e-05, 11495.49210016], [1516946520000, 5.484e-05, 5.491e-05, 5.481e-05, 5.491e-05, 46998.15607311], [1516946580000, 5.491e-05, 5.491e-05, 5.487e-05, 5.491e-05, 16991.43621583], [1516946640000, 5.491e-05, 5.491e-05, 5.488e-05, 5.491e-05, 7765.82667692], [1516946700000, 5.49e-05, 5.49e-05, 5.488e-05, 5.49e-05, 7207.89045063], [1516946760000, 5.49e-05, 5.491e-05, 5.488e-05, 5.491e-05, 17053.09326306], [1516946820000, 5.49e-05, 5.5e-05, 5.488e-05, 5.491e-05, 96181.56156428], [1516946880000, 5.5e-05, 5.5e-05, 5.481e-05, 5.482e-05, 33548.21545683], [1516946940000, 5.482e-05, 5.491e-05, 5.48e-05, 5.49e-05, 31687.97624925], [1516947000000, 5.486e-05, 5.49e-05, 5.486e-05, 5.488e-05, 18932.7069261], [1516947060000, 5.487e-05, 5.499e-05, 5.486e-05, 5.496e-05, 30022.74872485], [1516947120000, 5.488e-05, 5.495e-05, 5.481e-05, 5.486e-05, 43070.41116408], [1516947180000, 5.486e-05, 5.495e-05, 5.48e-05, 5.495e-05, 46773.03583546], [1516947240000, 5.494e-05, 5.494e-05, 5.474e-05, 5.474e-05, 50014.12619108], [1516947300000, 5.475e-05, 5.495e-05, 5.473e-05, 5.475e-05, 72506.21717434], [1516947360000, 5.475e-05, 5.484e-05, 5.43e-05, 5.477e-05, 516190.66863217], [1516947420000, 5.477e-05, 5.484e-05, 5.425e-05, 5.476e-05, 95681.39761614], [1516947480000, 5.48e-05, 5.48e-05, 5.476e-05, 5.477e-05, 27882.83206713], [1516947540000, 5.477e-05, 5.478e-05, 5.475e-05, 5.475e-05, 78857.06742007], [1516947600000, 5.476e-05, 5.482e-05, 5.475e-05, 5.481e-05, 48148.16498407], [1516947660000, 5.481e-05, 5.482e-05, 5.477e-05, 5.477e-05, 33581.88511999], [1516947720000, 5.48e-05, 5.484e-05, 5.476e-05, 5.481e-05, 69683.64906574], [1516947780000, 5.485e-05, 5.499e-05, 5.481e-05, 5.498e-05, 68189.80078253], [1516947840000, 5.498e-05, 5.5e-05, 5.48e-05, 5.48e-05, 132369.8397769], [1516947900000, 5.483e-05, 5.483e-05, 5.477e-05, 5.477e-05, 170922.44516208], [1516947960000, 5.477e-05, 5.483e-05, 5.433e-05, 5.456e-05, 91267.25978539], [1516948020000, 5.486e-05, 5.487e-05, 5.477e-05, 5.486e-05, 44758.70655122], [1516948080000, 5.486e-05, 5.496e-05, 5.477e-05, 5.479e-05, 48987.81034957], [1516948140000, 5.479e-05, 5.496e-05, 5.455e-05, 5.484e-05, 286440.86188527], [1516948200000, 5.48e-05, 5.497e-05, 5.476e-05, 5.49e-05, 39681.95808627], [1516948260000, 5.49e-05, 5.495e-05, 5.477e-05, 5.493e-05, 41319.7481732], [1516948320000, 5.493e-05, 5.495e-05, 5.493e-05, 5.493e-05, 26486.85234663], [1516948380000, 5.494e-05, 5.495e-05, 5.493e-05, 5.493e-05, 13842.82716907], [1516948440000, 5.495e-05, 5.495e-05, 5.493e-05, 5.493e-05, 25484.37921945], [1516948500000, 5.493e-05, 5.494e-05, 5.493e-05, 5.493e-05, 4708.76258082], [1516948560000, 5.493e-05, 5.494e-05, 5.478e-05, 5.478e-05, 23146.47113029], [1516948620000, 5.493e-05, 5.494e-05, 5.479e-05, 5.493e-05, 7395.21258019], [1516948680000, 5.48e-05, 5.493e-05, 5.48e-05, 5.493e-05, 1666.25153916], [1516948740000, 5.493e-05, 5.494e-05, 5.482e-05, 5.493e-05, 5820.83492057], [1516948800000, 5.493e-05, 5.494e-05, 5.482e-05, 5.493e-05, 65670.83161074], [1516948860000, 5.493e-05, 5.494e-05, 5.479e-05, 5.49e-05, 91938.77458945], [1516948920000, 5.49e-05, 5.492e-05, 5.49e-05, 5.49e-05, 9344.95356222], [1516948980000, 5.494e-05, 5.494e-05, 5.49e-05, 5.494e-05, 3899.28792987], [1516949040000, 5.494e-05, 5.495e-05, 5.494e-05, 5.494e-05, 5020.90507124], [1516949100000, 5.494e-05, 5.495e-05, 5.494e-05, 5.495e-05, 4571.42700564], [1516949160000, 5.499e-05, 5.5e-05, 5.495e-05, 5.5e-05, 10839.7320444], [1516949220000, 5.5e-05, 5.5e-05, 5.495e-05, 5.5e-05, 8914.06885994], [1516949280000, 5.499e-05, 5.5e-05, 5.499e-05, 5.5e-05, 10734.92149368], [1516949340000, 5.5e-05, 5.5e-05, 5.496e-05, 5.496e-05, 6855.47688226], [1516949400000, 5.498e-05, 5.5e-05, 5.496e-05, 5.5e-05, 17091.54830132], [1516949460000, 5.496e-05, 5.5e-05, 5.494e-05, 5.494e-05, 70983.15253773], [1516949520000, 5.494e-05, 5.494e-05, 5.488e-05, 5.488e-05, 15901.02297173], [1516949580000, 5.488e-05, 5.489e-05, 5.487e-05, 5.489e-05, 34982.04921043], [1516949640000, 5.489e-05, 5.491e-05, 5.488e-05, 5.489e-05, 18541.82188058], [1516949700000, 5.489e-05, 5.491e-05, 5.488e-05, 5.488e-05, 21189.68845531], [1516949760000, 5.49e-05, 5.49e-05, 5.485e-05, 5.488e-05, 9375.45342292], [1516949820000, 5.488e-05, 5.488e-05, 5.485e-05, 5.485e-05, 7649.45727546], [1516949880000, 5.485e-05, 5.488e-05, 5.47e-05, 5.47e-05, 20436.38222966], [1516949940000, 5.47e-05, 5.47e-05, 5.462e-05, 5.462e-05, 6720.8772433], [1516950000000, 5.462e-05, 5.47e-05, 5.461e-05, 5.47e-05, 10047.55303991], [1516950060000, 5.47e-05, 5.485e-05, 5.453e-05, 5.485e-05, 43411.80935017], [1516950120000, 5.466e-05, 5.48e-05, 5.463e-05, 5.479e-05, 7970.20438506], [1516950180000, 5.475e-05, 5.475e-05, 5.456e-05, 5.47e-05, 11159.32043788], [1516950240000, 5.47e-05, 5.474e-05, 5.454e-05, 5.47e-05, 10237.77178696], [1516950300000, 5.468e-05, 5.468e-05, 5.455e-05, 5.465e-05, 8063.87943349], [1516950360000, 5.465e-05, 5.465e-05, 5.435e-05, 5.463e-05, 60231.06992639], [1516950420000, 5.463e-05, 5.466e-05, 5.434e-05, 5.466e-05, 23181.34237423], [1516950480000, 5.466e-05, 5.469e-05, 5.462e-05, 5.469e-05, 132942.60189293], [1516950540000, 5.469e-05, 5.474e-05, 5.454e-05, 5.465e-05, 49918.85314144], [1516950600000, 5.464e-05, 5.474e-05, 5.448e-05, 5.474e-05, 51296.47812719], [1516950660000, 5.468e-05, 5.474e-05, 5.447e-05, 5.474e-05, 67024.07928605], [1516950720000, 5.469e-05, 5.469e-05, 5.449e-05, 5.452e-05, 11930.8015688], [1516950780000, 5.467e-05, 5.474e-05, 5.454e-05, 5.461e-05, 42785.65306678], [1516950840000, 5.46e-05, 5.484e-05, 5.46e-05, 5.463e-05, 46061.84421047], [1516950900000, 5.463e-05, 5.464e-05, 5.462e-05, 5.464e-05, 57683.5387136], [1516950960000, 5.464e-05, 5.485e-05, 5.462e-05, 5.463e-05, 33450.40496436], [1516951020000, 5.463e-05, 5.464e-05, 5.456e-05, 5.46e-05, 11925.30063168], [1516951080000, 5.46e-05, 5.467e-05, 5.459e-05, 5.46e-05, 33241.69632925], [1516951140000, 5.46e-05, 5.466e-05, 5.444e-05, 5.451e-05, 42435.10910672], [1516951200000, 5.453e-05, 5.46e-05, 5.444e-05, 5.458e-05, 70944.99709989], [1516951260000, 5.458e-05, 5.46e-05, 5.446e-05, 5.45e-05, 20550.60088276], [1516951320000, 5.459e-05, 5.459e-05, 5.444e-05, 5.444e-05, 16715.80577773], [1516951380000, 5.449e-05, 5.46e-05, 5.441e-05, 5.451e-05, 47460.58472751], [1516951440000, 5.452e-05, 5.46e-05, 5.451e-05, 5.453e-05, 28101.69735685], [1516951500000, 5.453e-05, 5.46e-05, 5.45e-05, 5.45e-05, 13246.91118313], [1516951560000, 5.449e-05, 5.453e-05, 5.44e-05, 5.446e-05, 20210.11499076], [1516951620000, 5.453e-05, 5.453e-05, 5.441e-05, 5.445e-05, 8585.94526957], [1516951680000, 5.442e-05, 5.453e-05, 5.441e-05, 5.445e-05, 17348.67609846], [1516951740000, 5.445e-05, 5.453e-05, 5.438e-05, 5.452e-05, 45265.27807253], [1516951800000, 5.452e-05, 5.453e-05, 5.442e-05, 5.443e-05, 94368.35943417], [1516951860000, 5.444e-05, 5.452e-05, 5.434e-05, 5.434e-05, 56283.62110705], [1516951920000, 5.435e-05, 5.452e-05, 5.435e-05, 5.451e-05, 11913.10224043], [1516951980000, 5.436e-05, 5.451e-05, 5.436e-05, 5.439e-05, 21841.75180096], [1516952040000, 5.451e-05, 5.451e-05, 5.441e-05, 5.443e-05, 39572.78672869], [1516952100000, 5.45e-05, 5.453e-05, 5.441e-05, 5.448e-05, 80890.5574309], [1516952160000, 5.448e-05, 5.455e-05, 5.445e-05, 5.445e-05, 52350.81003465], [1516952220000, 5.446e-05, 5.448e-05, 5.44e-05, 5.445e-05, 44549.50187549], [1516952280000, 5.444e-05, 5.444e-05, 5.44e-05, 5.44e-05, 19003.56555835], [1516952340000, 5.44e-05, 5.44e-05, 5.431e-05, 5.431e-05, 13936.54902004], [1516952400000, 5.431e-05, 5.437e-05, 5.428e-05, 5.437e-05, 106506.20559883], [1516952460000, 5.435e-05, 5.437e-05, 5.426e-05, 5.428e-05, 20861.91324923], [1516952520000, 5.428e-05, 5.435e-05, 5.425e-05, 5.425e-05, 12840.55590341], [1516952580000, 5.425e-05, 5.43e-05, 5.421e-05, 5.421e-05, 28368.69064759], [1516952640000, 5.421e-05, 5.426e-05, 5.42e-05, 5.425e-05, 14211.8766369], [1516952700000, 5.425e-05, 5.425e-05, 5.416e-05, 5.416e-05, 36603.40120848], [1516952760000, 5.416e-05, 5.421e-05, 5.412e-05, 5.413e-05, 71034.03552819], [1516952820000, 5.413e-05, 5.421e-05, 5.412e-05, 5.413e-05, 39607.27556991], [1516952880000, 5.413e-05, 5.421e-05, 5.383e-05, 5.396e-05, 266274.17796772], [1516952940000, 5.404e-05, 5.415e-05, 5.4e-05, 5.411e-05, 30316.46776417], [1516953000000, 5.411e-05, 5.421e-05, 5.41e-05, 5.415e-05, 24772.97238943], [1516953060000, 5.413e-05, 5.421e-05, 5.4e-05, 5.412e-05, 52683.85020297], [1516953120000, 5.412e-05, 5.412e-05, 5.384e-05, 5.4e-05, 43485.51358497], [1516953180000, 5.4e-05, 5.412e-05, 5.386e-05, 5.399e-05, 10744.86415475], [1516953240000, 5.399e-05, 5.399e-05, 5.381e-05, 5.383e-05, 21121.85596092], [1516953300000, 5.383e-05, 5.391e-05, 5.36e-05, 5.365e-05, 116757.05203351], [1516953360000, 5.38e-05, 5.38e-05, 5.365e-05, 5.37e-05, 60495.48949809], [1516953420000, 5.37e-05, 5.383e-05, 5.37e-05, 5.379e-05, 94435.96833036], [1516953480000, 5.372e-05, 5.383e-05, 5.365e-05, 5.37e-05, 88209.96668388], [1516953540000, 5.372e-05, 5.378e-05, 5.367e-05, 5.367e-05, 24144.75842158], [1516953600000, 5.367e-05, 5.367e-05, 5.355e-05, 5.358e-05, 106586.20882351], [1516953660000, 5.355e-05, 5.358e-05, 5.351e-05, 5.352e-05, 47783.27361336], [1516953720000, 5.352e-05, 5.358e-05, 5.352e-05, 5.353e-05, 58180.33737881], [1516953780000, 5.353e-05, 5.36e-05, 5.351e-05, 5.352e-05, 42341.2620524], [1516953840000, 5.352e-05, 5.358e-05, 5.331e-05, 5.331e-05, 95153.2042116], [1516953900000, 5.341e-05, 5.341e-05, 5.326e-05, 5.327e-05, 143228.78656451], [1516953960000, 5.326e-05, 5.344e-05, 5.326e-05, 5.344e-05, 261766.92793557], [1516954020000, 5.344e-05, 5.357e-05, 5.34e-05, 5.351e-05, 70585.0671068], [1516954080000, 5.351e-05, 5.357e-05, 5.327e-05, 5.341e-05, 62576.54410764], [1516954140000, 5.341e-05, 5.373e-05, 5.326e-05, 5.341e-05, 93280.9870797], [1516954200000, 5.367e-05, 5.37e-05, 5.333e-05, 5.35e-05, 146693.06521596], [1516954260000, 5.35e-05, 5.385e-05, 5.332e-05, 5.343e-05, 351744.3203527], [1516954320000, 5.37e-05, 5.383e-05, 5.333e-05, 5.333e-05, 66053.86711006], [1516954380000, 5.36e-05, 5.384e-05, 5.36e-05, 5.36e-05, 42885.84377948], [1516954440000, 5.361e-05, 5.375e-05, 5.324e-05, 5.359e-05, 93198.39553554], [1516954500000, 5.359e-05, 5.375e-05, 5.32e-05, 5.33e-05, 114000.96606543], [1516954560000, 5.33e-05, 5.375e-05, 5.33e-05, 5.369e-05, 37021.09441515], [1516954620000, 5.369e-05, 5.375e-05, 5.343e-05, 5.343e-05, 120456.72271821], [1516954680000, 5.345e-05, 5.375e-05, 5.345e-05, 5.352e-05, 135643.66195926], [1516954740000, 5.369e-05, 5.369e-05, 5.347e-05, 5.359e-05, 99453.07817974], [1516954800000, 5.359e-05, 5.372e-05, 5.319e-05, 5.361e-05, 275024.6114972], [1516954860000, 5.371e-05, 5.371e-05, 5.36e-05, 5.363e-05, 205830.24533912], [1516954920000, 5.369e-05, 5.369e-05, 5.345e-05, 5.345e-05, 93616.21141331], [1516954980000, 5.346e-05, 5.358e-05, 5.346e-05, 5.352e-05, 128954.34527428], [1516955040000, 5.35e-05, 5.366e-05, 5.346e-05, 5.346e-05, 85126.75865105], [1516955100000, 5.346e-05, 5.367e-05, 5.345e-05, 5.354e-05, 98881.7511438], [1516955160000, 5.354e-05, 5.367e-05, 5.353e-05, 5.36e-05, 203974.30101989], [1516955220000, 5.36e-05, 5.369e-05, 5.349e-05, 5.369e-05, 217848.35339105], [1516955280000, 5.369e-05, 5.369e-05, 5.349e-05, 5.355e-05, 442869.97148528], [1516955340000, 5.369e-05, 5.369e-05, 5.355e-05, 5.369e-05, 178689.23143652], [1516955400000, 5.369e-05, 5.369e-05, 5.35e-05, 5.356e-05, 53059.76520937], [1516955460000, 5.352e-05, 5.356e-05, 5.349e-05, 5.35e-05, 56401.55072222], [1516955520000, 5.351e-05, 5.369e-05, 5.332e-05, 5.367e-05, 751628.3405882], [1516955580000, 5.367e-05, 5.367e-05, 5.33e-05, 5.366e-05, 50059.61373923], [1516955640000, 5.366e-05, 5.369e-05, 5.352e-05, 5.352e-05, 283399.98640519], [1516955700000, 5.369e-05, 5.369e-05, 5.352e-05, 5.365e-05, 347330.41591971], [1516955760000, 5.365e-05, 5.39e-05, 5.365e-05, 5.39e-05, 370932.1499346], [1516955820000, 5.391e-05, 5.42e-05, 5.391e-05, 5.41e-05, 57448.71883158], [1516955880000, 5.41e-05, 5.41e-05, 5.397e-05, 5.4e-05, 81403.04251902], [1516955940000, 5.4e-05, 5.419e-05, 5.397e-05, 5.409e-05, 36870.86521874], [1516956000000, 5.41e-05, 5.422e-05, 5.41e-05, 5.422e-05, 91918.97174819], [1516956060000, 5.422e-05, 5.427e-05, 5.417e-05, 5.425e-05, 101775.86670429], [1516956120000, 5.418e-05, 5.426e-05, 5.371e-05, 5.426e-05, 33723.55666784], [1516956180000, 5.426e-05, 5.429e-05, 5.4e-05, 5.428e-05, 102521.99622699], [1516956240000, 5.421e-05, 5.428e-05, 5.401e-05, 5.411e-05, 90820.72988761], [1516956300000, 5.423e-05, 5.427e-05, 5.401e-05, 5.402e-05, 121155.29789567], [1516956360000, 5.423e-05, 5.428e-05, 5.4e-05, 5.41e-05, 110024.27249358], [1516956420000, 5.411e-05, 5.43e-05, 5.398e-05, 5.428e-05, 142675.28324977], [1516956480000, 5.413e-05, 5.429e-05, 5.398e-05, 5.4e-05, 226938.63289753], [1516956540000, 5.41e-05, 5.429e-05, 5.4e-05, 5.41e-05, 139901.88258786], [1516956600000, 5.426e-05, 5.436e-05, 5.41e-05, 5.429e-05, 115551.00375914], [1516956660000, 5.429e-05, 5.436e-05, 5.416e-05, 5.429e-05, 75169.56357497], [1516956720000, 5.429e-05, 5.461e-05, 5.427e-05, 5.458e-05, 223161.91903024], [1516956780000, 5.46e-05, 5.46e-05, 5.458e-05, 5.459e-05, 35129.44846078], [1516956840000, 5.459e-05, 5.475e-05, 5.458e-05, 5.475e-05, 47585.95304991], [1516956900000, 5.475e-05, 5.477e-05, 5.458e-05, 5.475e-05, 67284.03898081], [1516956960000, 5.475e-05, 5.477e-05, 5.475e-05, 5.476e-05, 22980.11218074], [1516957020000, 5.476e-05, 5.483e-05, 5.475e-05, 5.483e-05, 41146.64700983], [1516957080000, 5.483e-05, 5.487e-05, 5.476e-05, 5.487e-05, 28899.10665172], [1516957140000, 5.487e-05, 5.487e-05, 5.458e-05, 5.458e-05, 164887.75692428], [1516957200000, 5.458e-05, 5.474e-05, 5.43e-05, 5.433e-05, 132352.68192237], [1516957260000, 5.437e-05, 5.44e-05, 5.433e-05, 5.44e-05, 18998.90026772], [1516957320000, 5.44e-05, 5.458e-05, 5.44e-05, 5.458e-05, 20106.87197267], [1516957380000, 5.458e-05, 5.475e-05, 5.458e-05, 5.473e-05, 13972.36114763], [1516957440000, 5.473e-05, 5.474e-05, 5.459e-05, 5.459e-05, 39689.20264086], [1516957500000, 5.459e-05, 5.464e-05, 5.445e-05, 5.445e-05, 52583.33453841], [1516957560000, 5.456e-05, 5.459e-05, 5.441e-05, 5.441e-05, 14234.38290596], [1516957620000, 5.441e-05, 5.45e-05, 5.438e-05, 5.45e-05, 38923.73290864], [1516957680000, 5.438e-05, 5.441e-05, 5.401e-05, 5.415e-05, 17403.67945221], [1516957740000, 5.408e-05, 5.441e-05, 5.408e-05, 5.441e-05, 5796.15828502], [1516957800000, 5.417e-05, 5.441e-05, 5.417e-05, 5.441e-05, 6650.96609771], [1516957860000, 5.435e-05, 5.455e-05, 5.417e-05, 5.433e-05, 13593.38681299], [1516957920000, 5.433e-05, 5.44e-05, 5.428e-05, 5.434e-05, 38111.38425837], [1516957980000, 5.436e-05, 5.451e-05, 5.434e-05, 5.434e-05, 3061.92682547], [1516958040000, 5.434e-05, 5.448e-05, 5.43e-05, 5.43e-05, 5786.58773975], [1516958100000, 5.43e-05, 5.445e-05, 5.43e-05, 5.445e-05, 31226.25267864], [1516958160000, 5.444e-05, 5.445e-05, 5.43e-05, 5.445e-05, 20225.82868767], [1516958220000, 5.445e-05, 5.446e-05, 5.434e-05, 5.434e-05, 24274.85343299], [1516958280000, 5.435e-05, 5.436e-05, 5.434e-05, 5.436e-05, 10183.8379294], [1516958340000, 5.436e-05, 5.445e-05, 5.434e-05, 5.445e-05, 8298.66344376], [1516958400000, 5.436e-05, 5.445e-05, 5.436e-05, 5.444e-05, 4231.63042523], [1516958460000, 5.444e-05, 5.451e-05, 5.434e-05, 5.451e-05, 78581.04795952], [1516958520000, 5.449e-05, 5.449e-05, 5.434e-05, 5.434e-05, 28475.65300168], [1516958580000, 5.444e-05, 5.445e-05, 5.425e-05, 5.435e-05, 95857.55782837], [1516958640000, 5.425e-05, 5.445e-05, 5.425e-05, 5.435e-05, 49496.46469734], [1516958700000, 5.442e-05, 5.445e-05, 5.434e-05, 5.444e-05, 122653.25823927], [1516958760000, 5.445e-05, 5.473e-05, 5.444e-05, 5.473e-05, 140737.8313852], [1516958820000, 5.462e-05, 5.473e-05, 5.444e-05, 5.452e-05, 34755.17330264], [1516958880000, 5.452e-05, 5.472e-05, 5.436e-05, 5.436e-05, 37728.94030846], [1516958940000, 5.439e-05, 5.469e-05, 5.437e-05, 5.468e-05, 6887.59323285], [1516959000000, 5.468e-05, 5.469e-05, 5.44e-05, 5.469e-05, 10615.58436999], [1516959060000, 5.469e-05, 5.469e-05, 5.44e-05, 5.441e-05, 18821.31878502], [1516959120000, 5.443e-05, 5.474e-05, 5.443e-05, 5.474e-05, 19303.72597235], [1516959180000, 5.473e-05, 5.476e-05, 5.45e-05, 5.472e-05, 14727.99524312], [1516959240000, 5.472e-05, 5.472e-05, 5.46e-05, 5.472e-05, 61809.53195405], [1516959300000, 5.466e-05, 5.485e-05, 5.462e-05, 5.476e-05, 106537.59046321], [1516959360000, 5.475e-05, 5.491e-05, 5.472e-05, 5.489e-05, 134068.47094384], [1516959420000, 5.489e-05, 5.493e-05, 5.485e-05, 5.49e-05, 56600.16109894], [1516959480000, 5.49e-05, 5.492e-05, 5.473e-05, 5.49e-05, 50323.57106147], [1516959540000, 5.488e-05, 5.5e-05, 5.48e-05, 5.499e-05, 108738.44348294], [1516959600000, 5.483e-05, 5.498e-05, 5.483e-05, 5.497e-05, 21796.77757184], [1516959660000, 5.486e-05, 5.5e-05, 5.48e-05, 5.497e-05, 77146.69908884], [1516959720000, 5.485e-05, 5.493e-05, 5.48e-05, 5.48e-05, 10028.53078314], [1516959780000, 5.48e-05, 5.493e-05, 5.479e-05, 5.486e-05, 17887.99322445], [1516959840000, 5.486e-05, 5.493e-05, 5.486e-05, 5.493e-05, 13915.08413479], [1516959900000, 5.492e-05, 5.493e-05, 5.447e-05, 5.447e-05, 57047.90734553], [1516959960000, 5.49e-05, 5.493e-05, 5.449e-05, 5.485e-05, 9051.54135439], [1516960020000, 5.474e-05, 5.487e-05, 5.449e-05, 5.484e-05, 16143.31273974], [1516960080000, 5.458e-05, 5.481e-05, 5.435e-05, 5.435e-05, 79892.98848704], [1516960140000, 5.435e-05, 5.44e-05, 5.432e-05, 5.44e-05, 32269.3959335], [1516960200000, 5.439e-05, 5.45e-05, 5.402e-05, 5.406e-05, 65207.83374778], [1516960260000, 5.408e-05, 5.449e-05, 5.401e-05, 5.401e-05, 32596.07464558], [1516960320000, 5.421e-05, 5.444e-05, 5.421e-05, 5.421e-05, 23957.74939412], [1516960380000, 5.441e-05, 5.441e-05, 5.405e-05, 5.441e-05, 13750.57546838], [1516960440000, 5.425e-05, 5.441e-05, 5.408e-05, 5.42e-05, 25263.74092723], [1516960500000, 5.42e-05, 5.432e-05, 5.409e-05, 5.423e-05, 11874.95962187], [1516960560000, 5.423e-05, 5.433e-05, 5.421e-05, 5.423e-05, 212990.26146054], [1516960620000, 5.423e-05, 5.441e-05, 5.423e-05, 5.441e-05, 34879.55531631], [1516960680000, 5.441e-05, 5.441e-05, 5.4e-05, 5.437e-05, 49085.62835659], [1516960740000, 5.436e-05, 5.437e-05, 5.432e-05, 5.436e-05, 54238.91887373], [1516960800000, 5.436e-05, 5.437e-05, 5.432e-05, 5.432e-05, 15149.43441863], [1516960860000, 5.436e-05, 5.442e-05, 5.432e-05, 5.442e-05, 84924.53684614], [1516960920000, 5.442e-05, 5.455e-05, 5.433e-05, 5.454e-05, 20711.95763812], [1516960980000, 5.454e-05, 5.479e-05, 5.408e-05, 5.43e-05, 95011.98134062], [1516961040000, 5.43e-05, 5.479e-05, 5.43e-05, 5.466e-05, 37768.11041244], [1516961100000, 5.466e-05, 5.49e-05, 5.465e-05, 5.48e-05, 41037.56932515], [1516961160000, 5.47e-05, 5.5e-05, 5.47e-05, 5.499e-05, 153595.29643225], [1516961220000, 5.498e-05, 5.499e-05, 5.47e-05, 5.49e-05, 28134.24365048], [1516961280000, 5.472e-05, 5.491e-05, 5.472e-05, 5.491e-05, 25036.39555292], [1516961340000, 5.491e-05, 5.499e-05, 5.47e-05, 5.47e-05, 29716.38384746], [1516961400000, 5.499e-05, 5.499e-05, 5.491e-05, 5.491e-05, 12819.30340277], [1516961460000, 5.497e-05, 5.499e-05, 5.491e-05, 5.497e-05, 46390.78890429], [1516961520000, 5.497e-05, 5.499e-05, 5.491e-05, 5.496e-05, 16115.75873645], [1516961580000, 5.496e-05, 5.499e-05, 5.495e-05, 5.497e-05, 23203.62835267], [1516961640000, 5.498e-05, 5.499e-05, 5.47e-05, 5.497e-05, 26160.14527969], [1516961700000, 5.498e-05, 5.498e-05, 5.47e-05, 5.495e-05, 4155.42592612], [1516961760000, 5.495e-05, 5.496e-05, 5.471e-05, 5.474e-05, 15326.94209349], [1516961820000, 5.474e-05, 5.474e-05, 5.474e-05, 5.474e-05, 6694.06083913], [1516961880000, 5.472e-05, 5.474e-05, 5.472e-05, 5.474e-05, 1961.21707433], [1516961940000, 5.474e-05, 5.474e-05, 5.472e-05, 5.474e-05, 5797.26100919], [1516962000000, 5.474e-05, 5.474e-05, 5.472e-05, 5.473e-05, 8787.06117628], [1516962060000, 5.473e-05, 5.5e-05, 5.472e-05, 5.499e-05, 54836.33491135], [1516962120000, 5.499e-05, 5.499e-05, 5.48e-05, 5.483e-05, 1435.67399836], [1516962180000, 5.498e-05, 5.498e-05, 5.47e-05, 5.497e-05, 81430.41621237], [1516962240000, 5.496e-05, 5.497e-05, 5.471e-05, 5.471e-05, 20942.8095981], [1516962300000, 5.472e-05, 5.472e-05, 5.471e-05, 5.472e-05, 10049.65715487], [1516962360000, 5.472e-05, 5.494e-05, 5.471e-05, 5.494e-05, 2245.45733091], [1516962420000, 5.477e-05, 5.494e-05, 5.477e-05, 5.479e-05, 21363.14271536], [1516962480000, 5.494e-05, 5.494e-05, 5.479e-05, 5.479e-05, 11709.88481378], [1516962540000, 5.479e-05, 5.493e-05, 5.479e-05, 5.479e-05, 2534.39843652], [1516962600000, 5.48e-05, 5.493e-05, 5.479e-05, 5.479e-05, 19388.01480434], [1516962660000, 5.479e-05, 5.492e-05, 5.471e-05, 5.475e-05, 17726.05754527], [1516962720000, 5.471e-05, 5.475e-05, 5.471e-05, 5.475e-05, 13346.91948893], [1516962780000, 5.475e-05, 5.475e-05, 5.472e-05, 5.472e-05, 1153.74290229], [1516962840000, 5.472e-05, 5.48e-05, 5.471e-05, 5.471e-05, 51640.93635016], [1516962900000, 5.478e-05, 5.479e-05, 5.471e-05, 5.471e-05, 28053.83493859], [1516962960000, 5.471e-05, 5.479e-05, 5.468e-05, 5.471e-05, 29016.53291603], [1516963020000, 5.468e-05, 5.471e-05, 5.465e-05, 5.471e-05, 39606.17795902], [1516963080000, 5.471e-05, 5.475e-05, 5.465e-05, 5.475e-05, 19818.54634437], [1516963140000, 5.47e-05, 5.5e-05, 5.467e-05, 5.495e-05, 124937.41686738], [1516963200000, 5.471e-05, 5.5e-05, 5.471e-05, 5.479e-05, 504966.80212782], [1516963260000, 5.499e-05, 5.5e-05, 5.471e-05, 5.499e-05, 116260.88850212], [1516963320000, 5.484e-05, 5.5e-05, 5.482e-05, 5.484e-05, 29180.66286277], [1516963380000, 5.49e-05, 5.491e-05, 5.49e-05, 5.491e-05, 5171.20570905], [1516963440000, 5.491e-05, 5.509e-05, 5.49e-05, 5.509e-05, 129414.13145789], [1516963500000, 5.497e-05, 5.51e-05, 5.493e-05, 5.504e-05, 39935.49548328], [1516963560000, 5.51e-05, 5.51e-05, 5.506e-05, 5.509e-05, 38820.61120864], [1516963620000, 5.509e-05, 5.51e-05, 5.506e-05, 5.509e-05, 36980.52573745], [1516963680000, 5.51e-05, 5.517e-05, 5.509e-05, 5.515e-05, 25988.36140155], [1516963740000, 5.517e-05, 5.523e-05, 5.517e-05, 5.522e-05, 47086.13627934], [1516963800000, 5.522e-05, 5.523e-05, 5.507e-05, 5.507e-05, 76420.69751898], [1516963860000, 5.507e-05, 5.517e-05, 5.507e-05, 5.509e-05, 20035.04980607], [1516963920000, 5.507e-05, 5.507e-05, 5.506e-05, 5.506e-05, 30385.7407888], [1516963980000, 5.507e-05, 5.507e-05, 5.506e-05, 5.507e-05, 3555.60449323], [1516964040000, 5.506e-05, 5.507e-05, 5.505e-05, 5.505e-05, 26808.19726145], [1516964100000, 5.505e-05, 5.507e-05, 5.504e-05, 5.504e-05, 112067.77165186], [1516964160000, 5.504e-05, 5.507e-05, 5.5e-05, 5.505e-05, 12476.95376511], [1516964220000, 5.505e-05, 5.507e-05, 5.505e-05, 5.505e-05, 9664.0855012], [1516964280000, 5.506e-05, 5.507e-05, 5.506e-05, 5.506e-05, 55920.74844706], [1516964340000, 5.505e-05, 5.507e-05, 5.5e-05, 5.506e-05, 81486.83937953], [1516964400000, 5.506e-05, 5.507e-05, 5.47e-05, 5.507e-05, 21746.6730204], [1516964460000, 5.507e-05, 5.507e-05, 5.4e-05, 5.5e-05, 329609.2307023], [1516964520000, 5.504e-05, 5.505e-05, 5.481e-05, 5.505e-05, 41899.17159951], [1516964580000, 5.504e-05, 5.504e-05, 5.483e-05, 5.485e-05, 20041.34437767], [1516964640000, 5.485e-05, 5.497e-05, 5.467e-05, 5.467e-05, 15639.27252704], [1516964700000, 5.496e-05, 5.504e-05, 5.47e-05, 5.497e-05, 33109.24738837], [1516964760000, 5.504e-05, 5.504e-05, 5.47e-05, 5.47e-05, 11279.99666592], [1516964820000, 5.501e-05, 5.501e-05, 5.452e-05, 5.47e-05, 44826.12322309], [1516964880000, 5.457e-05, 5.47e-05, 5.45e-05, 5.458e-05, 23089.00949387], [1516964940000, 5.458e-05, 5.458e-05, 5.416e-05, 5.445e-05, 26440.24278112], [1516965000000, 5.445e-05, 5.469e-05, 5.445e-05, 5.469e-05, 27314.35125553], [1516965060000, 5.47e-05, 5.499e-05, 5.453e-05, 5.499e-05, 4930.8047227], [1516965120000, 5.467e-05, 5.467e-05, 5.43e-05, 5.43e-05, 55818.60546717], [1516965180000, 5.44e-05, 5.496e-05, 5.438e-05, 5.475e-05, 45594.88296292], [1516965240000, 5.49e-05, 5.491e-05, 5.475e-05, 5.48e-05, 18428.1925828], [1516965300000, 5.489e-05, 5.489e-05, 5.48e-05, 5.48e-05, 5970.38184945], [1516965360000, 5.48e-05, 5.48e-05, 5.47e-05, 5.47e-05, 19988.64494941], [1516965420000, 5.47e-05, 5.48e-05, 5.462e-05, 5.478e-05, 94699.94919715], [1516965480000, 5.48e-05, 5.495e-05, 5.465e-05, 5.468e-05, 60867.34831578], [1516965540000, 5.463e-05, 5.48e-05, 5.444e-05, 5.48e-05, 24815.80761234], [1516965600000, 5.48e-05, 5.48e-05, 5.445e-05, 5.477e-05, 4403.28349782], [1516965660000, 5.476e-05, 5.476e-05, 5.444e-05, 5.445e-05, 11346.76724107], [1516965720000, 5.445e-05, 5.474e-05, 5.445e-05, 5.445e-05, 46898.42218267], [1516965780000, 5.445e-05, 5.445e-05, 5.441e-05, 5.445e-05, 243413.4754676], [1516965840000, 5.474e-05, 5.474e-05, 5.445e-05, 5.445e-05, 1549.47446813], [1516965900000, 5.445e-05, 5.45e-05, 5.445e-05, 5.447e-05, 3001.66358605], [1516965960000, 5.447e-05, 5.474e-05, 5.445e-05, 5.45e-05, 14872.06015863], [1516966020000, 5.451e-05, 5.473e-05, 5.445e-05, 5.446e-05, 6520.61618086], [1516966080000, 5.445e-05, 5.446e-05, 5.44e-05, 5.445e-05, 54485.49577528], [1516966140000, 5.446e-05, 5.446e-05, 5.44e-05, 5.44e-05, 19940.89387247], [1516966200000, 5.44e-05, 5.445e-05, 5.43e-05, 5.44e-05, 78932.12250146], [1516966260000, 5.44e-05, 5.445e-05, 5.43e-05, 5.443e-05, 64807.82135206], [1516966320000, 5.435e-05, 5.435e-05, 5.428e-05, 5.43e-05, 29686.70138789], [1516966380000, 5.43e-05, 5.443e-05, 5.428e-05, 5.433e-05, 54744.34605235], [1516966440000, 5.429e-05, 5.443e-05, 5.428e-05, 5.428e-05, 27340.12022752], [1516966500000, 5.43e-05, 5.444e-05, 5.43e-05, 5.44e-05, 13005.41820376], [1516966560000, 5.431e-05, 5.44e-05, 5.431e-05, 5.434e-05, 11518.45932871], [1516966620000, 5.434e-05, 5.44e-05, 5.432e-05, 5.44e-05, 23519.99561171], [1516966680000, 5.44e-05, 5.44e-05, 5.433e-05, 5.434e-05, 11032.92916804], [1516966740000, 5.434e-05, 5.443e-05, 5.432e-05, 5.432e-05, 84863.00859778], [1516966800000, 5.44e-05, 5.44e-05, 5.431e-05, 5.431e-05, 32064.01868667], [1516966860000, 5.431e-05, 5.435e-05, 5.411e-05, 5.416e-05, 32589.29969753], [1516966920000, 5.416e-05, 5.435e-05, 5.412e-05, 5.412e-05, 35325.75345287], [1516966980000, 5.433e-05, 5.443e-05, 5.416e-05, 5.443e-05, 52011.13924339], [1516967040000, 5.44e-05, 5.444e-05, 5.42e-05, 5.444e-05, 38066.97326683], [1516967100000, 5.444e-05, 5.445e-05, 5.421e-05, 5.439e-05, 84818.92562068], [1516967160000, 5.439e-05, 5.464e-05, 5.422e-05, 5.446e-05, 35069.39483431], [1516967220000, 5.445e-05, 5.445e-05, 5.423e-05, 5.438e-05, 16491.51225342], [1516967280000, 5.438e-05, 5.455e-05, 5.426e-05, 5.428e-05, 41023.04348455], [1516967340000, 5.438e-05, 5.45e-05, 5.438e-05, 5.44e-05, 23451.81636086], [1516967400000, 5.439e-05, 5.443e-05, 5.439e-05, 5.443e-05, 24241.47493808], [1516967460000, 5.441e-05, 5.45e-05, 5.441e-05, 5.447e-05, 114057.89493423], [1516967520000, 5.447e-05, 5.447e-05, 5.428e-05, 5.444e-05, 46070.53865673], [1516967580000, 5.445e-05, 5.448e-05, 5.4e-05, 5.442e-05, 213376.06220302], [1516967640000, 5.442e-05, 5.442e-05, 5.411e-05, 5.44e-05, 28068.22701664], [1516967700000, 5.441e-05, 5.45e-05, 5.433e-05, 5.446e-05, 164675.76423937], [1516967760000, 5.446e-05, 5.459e-05, 5.444e-05, 5.444e-05, 60520.52933531], [1516967820000, 5.454e-05, 5.457e-05, 5.43e-05, 5.45e-05, 98228.19329803], [1516967880000, 5.447e-05, 5.459e-05, 5.446e-05, 5.452e-05, 50366.62588799], [1516967940000, 5.452e-05, 5.457e-05, 5.449e-05, 5.457e-05, 46548.062552], [1516968000000, 5.457e-05, 5.457e-05, 5.452e-05, 5.456e-05, 24205.84721884], [1516968060000, 5.453e-05, 5.456e-05, 5.438e-05, 5.438e-05, 21343.64234591], [1516968120000, 5.44e-05, 5.457e-05, 5.439e-05, 5.44e-05, 70706.98306249], [1516968180000, 5.44e-05, 5.466e-05, 5.44e-05, 5.449e-05, 76784.69534816], [1516968240000, 5.447e-05, 5.449e-05, 5.447e-05, 5.447e-05, 18728.03492504], [1516968300000, 5.447e-05, 5.463e-05, 5.447e-05, 5.461e-05, 26742.67337977], [1516968360000, 5.461e-05, 5.466e-05, 5.461e-05, 5.463e-05, 39777.03065091], [1516968420000, 5.463e-05, 5.463e-05, 5.462e-05, 5.462e-05, 17073.54397567], [1516968480000, 5.462e-05, 5.466e-05, 5.447e-05, 5.463e-05, 9865.81754734], [1516968540000, 5.465e-05, 5.465e-05, 5.447e-05, 5.448e-05, 6234.16927572], [1516968600000, 5.448e-05, 5.448e-05, 5.44e-05, 5.448e-05, 4353.80693837], [1516968660000, 5.44e-05, 5.448e-05, 5.43e-05, 5.448e-05, 3189.20019919], [1516968720000, 5.448e-05, 5.448e-05, 5.409e-05, 5.447e-05, 44566.11003809], [1516968780000, 5.446e-05, 5.446e-05, 5.443e-05, 5.443e-05, 789.301003], [1516968840000, 5.442e-05, 5.443e-05, 5.428e-05, 5.442e-05, 6233.74268879], [1516968900000, 5.442e-05, 5.442e-05, 5.431e-05, 5.44e-05, 13042.7559709], [1516968960000, 5.439e-05, 5.44e-05, 5.432e-05, 5.432e-05, 12554.56767019], [1516969020000, 5.435e-05, 5.44e-05, 5.425e-05, 5.44e-05, 13122.17897066], [1516969080000, 5.432e-05, 5.44e-05, 5.432e-05, 5.434e-05, 9443.34338235], [1516969140000, 5.432e-05, 5.439e-05, 5.405e-05, 5.405e-05, 29117.50725299], [1516969200000, 5.439e-05, 5.443e-05, 5.439e-05, 5.44e-05, 82970.83160041], [1516969260000, 5.44e-05, 5.443e-05, 5.44e-05, 5.443e-05, 632.03455645], [1516969320000, 5.441e-05, 5.443e-05, 5.441e-05, 5.443e-05, 15032.16338406], [1516969380000, 5.443e-05, 5.447e-05, 5.443e-05, 5.447e-05, 8956.94993732], [1516969440000, 5.447e-05, 5.464e-05, 5.44e-05, 5.44e-05, 5584.89647806], [1516969500000, 5.44e-05, 5.44e-05, 5.435e-05, 5.44e-05, 1269.32985649], [1516969560000, 5.435e-05, 5.435e-05, 5.426e-05, 5.426e-05, 3797.2757307], [1516969620000, 5.426e-05, 5.435e-05, 5.41e-05, 5.434e-05, 8467.90839176], [1516969680000, 5.435e-05, 5.435e-05, 5.404e-05, 5.404e-05, 23020.18525673], [1516969740000, 5.426e-05, 5.434e-05, 5.426e-05, 5.426e-05, 10734.27051842], [1516969800000, 5.426e-05, 5.426e-05, 5.404e-05, 5.425e-05, 13781.85987461], [1516969860000, 5.415e-05, 5.425e-05, 5.404e-05, 5.405e-05, 30872.95876665], [1516969920000, 5.406e-05, 5.426e-05, 5.406e-05, 5.426e-05, 16708.66176716], [1516969980000, 5.426e-05, 5.44e-05, 5.426e-05, 5.44e-05, 32065.53976721], [1516970040000, 5.44e-05, 5.457e-05, 5.419e-05, 5.455e-05, 43413.7068212], [1516970100000, 5.419e-05, 5.455e-05, 5.418e-05, 5.455e-05, 19158.85857674], [1516970160000, 5.45e-05, 5.453e-05, 5.422e-05, 5.428e-05, 66990.047008], [1516970220000, 5.428e-05, 5.431e-05, 5.428e-05, 5.428e-05, 62425.41089176], [1516970280000, 5.447e-05, 5.447e-05, 5.429e-05, 5.429e-05, 9562.94406556], [1516970340000, 5.443e-05, 5.443e-05, 5.429e-05, 5.443e-05, 2680.38522847], [1516970400000, 5.447e-05, 5.466e-05, 5.447e-05, 5.449e-05, 41345.2040597], [1516970460000, 5.449e-05, 5.466e-05, 5.449e-05, 5.465e-05, 5552.32731201], [1516970520000, 5.449e-05, 5.465e-05, 5.443e-05, 5.449e-05, 9088.83732882], [1516970580000, 5.443e-05, 5.461e-05, 5.43e-05, 5.449e-05, 33397.53531955], [1516970640000, 5.449e-05, 5.466e-05, 5.441e-05, 5.466e-05, 2365.98029968], [1516970700000, 5.449e-05, 5.469e-05, 5.449e-05, 5.469e-05, 20889.28626302], [1516970760000, 5.469e-05, 5.469e-05, 5.466e-05, 5.469e-05, 12282.85731295], [1516970820000, 5.466e-05, 5.469e-05, 5.466e-05, 5.466e-05, 4367.98905118], [1516970880000, 5.467e-05, 5.468e-05, 5.466e-05, 5.468e-05, 92886.00695502], [1516970940000, 5.468e-05, 5.468e-05, 5.466e-05, 5.468e-05, 44094.41799352], [1516971000000, 5.468e-05, 5.469e-05, 5.4e-05, 5.467e-05, 77161.88704121], [1516971060000, 5.467e-05, 5.467e-05, 5.466e-05, 5.466e-05, 7000.81010685], [1516971120000, 5.432e-05, 5.465e-05, 5.432e-05, 5.465e-05, 6461.90714376], [1516971180000, 5.465e-05, 5.465e-05, 5.446e-05, 5.465e-05, 5870.05230316], [1516971240000, 5.455e-05, 5.465e-05, 5.438e-05, 5.465e-05, 15868.06183445], [1516971300000, 5.455e-05, 5.465e-05, 5.434e-05, 5.454e-05, 27689.95655937], [1516971360000, 5.454e-05, 5.464e-05, 5.41e-05, 5.464e-05, 63536.79705812], [1516971420000, 5.464e-05, 5.464e-05, 5.454e-05, 5.454e-05, 43392.44743067], [1516971480000, 5.454e-05, 5.454e-05, 5.432e-05, 5.454e-05, 11486.20487033], [1516971540000, 5.454e-05, 5.454e-05, 5.438e-05, 5.454e-05, 15294.79957476], [1516971600000, 5.464e-05, 5.464e-05, 5.454e-05, 5.464e-05, 3248.70936815], [1516971660000, 5.464e-05, 5.464e-05, 5.454e-05, 5.46e-05, 14123.42339258], [1516971720000, 5.455e-05, 5.464e-05, 5.455e-05, 5.46e-05, 13696.56987525], [1516971780000, 5.46e-05, 5.464e-05, 5.454e-05, 5.464e-05, 11445.18163649], [1516971840000, 5.464e-05, 5.469e-05, 5.46e-05, 5.469e-05, 24979.99824364], [1516971900000, 5.469e-05, 5.469e-05, 5.468e-05, 5.469e-05, 71331.06626252], [1516971960000, 5.469e-05, 5.492e-05, 5.469e-05, 5.481e-05, 109860.02408001], [1516972020000, 5.481e-05, 5.51e-05, 5.481e-05, 5.51e-05, 58265.91623846], [1516972080000, 5.512e-05, 5.521e-05, 5.512e-05, 5.521e-05, 36133.30354162], [1516972140000, 5.52e-05, 5.523e-05, 5.52e-05, 5.52e-05, 19346.98672433], [1516972200000, 5.52e-05, 5.524e-05, 5.52e-05, 5.523e-05, 7216.02708513], [1516972260000, 5.524e-05, 5.533e-05, 5.523e-05, 5.532e-05, 37335.97920425], [1516972320000, 5.533e-05, 5.538e-05, 5.532e-05, 5.538e-05, 74115.86585201], [1516972380000, 5.538e-05, 5.538e-05, 5.52e-05, 5.52e-05, 55474.27229014], [1516972440000, 5.52e-05, 5.52e-05, 5.51e-05, 5.515e-05, 43209.42267908], [1516972500000, 5.515e-05, 5.515e-05, 5.5e-05, 5.51e-05, 16593.42987385], [1516972560000, 5.507e-05, 5.518e-05, 5.507e-05, 5.518e-05, 154295.45256292], [1516972620000, 5.518e-05, 5.527e-05, 5.517e-05, 5.527e-05, 110366.88970296], [1516972680000, 5.527e-05, 5.547e-05, 5.522e-05, 5.547e-05, 58733.91749398], [1516972740000, 5.547e-05, 5.548e-05, 5.547e-05, 5.548e-05, 16449.69339876], [1516972800000, 5.548e-05, 5.549e-05, 5.546e-05, 5.547e-05, 30221.50207815], [1516972860000, 5.547e-05, 5.55e-05, 5.546e-05, 5.55e-05, 34482.41660714], [1516972920000, 5.55e-05, 5.551e-05, 5.548e-05, 5.548e-05, 51327.99247526], [1516972980000, 5.548e-05, 5.55e-05, 5.548e-05, 5.548e-05, 29559.78986296], [1516973040000, 5.548e-05, 5.551e-05, 5.542e-05, 5.542e-05, 36534.23782273], [1516973100000, 5.541e-05, 5.541e-05, 5.515e-05, 5.516e-05, 7450.61436737], [1516973160000, 5.516e-05, 5.54e-05, 5.516e-05, 5.519e-05, 3531.75848888], [1516973220000, 5.519e-05, 5.519e-05, 5.517e-05, 5.517e-05, 20992.09028612], [1516973280000, 5.519e-05, 5.54e-05, 5.519e-05, 5.519e-05, 17389.6010082], [1516973340000, 5.519e-05, 5.539e-05, 5.519e-05, 5.519e-05, 18039.09362916], [1516973400000, 5.539e-05, 5.548e-05, 5.539e-05, 5.547e-05, 6779.56010658], [1516973460000, 5.547e-05, 5.547e-05, 5.519e-05, 5.519e-05, 24379.4519228], [1516973520000, 5.539e-05, 5.547e-05, 5.519e-05, 5.547e-05, 38335.27297855], [1516973580000, 5.52e-05, 5.545e-05, 5.52e-05, 5.544e-05, 23602.36062955], [1516973640000, 5.53e-05, 5.531e-05, 5.53e-05, 5.53e-05, 5061.89936756], [1516973700000, 5.53e-05, 5.544e-05, 5.53e-05, 5.53e-05, 3111.10427603], [1516973760000, 5.53e-05, 5.541e-05, 5.52e-05, 5.53e-05, 16526.69698193], [1516973820000, 5.53e-05, 5.53e-05, 5.52e-05, 5.52e-05, 20259.63381833], [1516973880000, 5.519e-05, 5.519e-05, 5.517e-05, 5.517e-05, 10854.09250691], [1516973940000, 5.519e-05, 5.519e-05, 5.516e-05, 5.516e-05, 11847.98236781], [1516974000000, 5.516e-05, 5.519e-05, 5.516e-05, 5.517e-05, 16715.18956832], [1516974060000, 5.517e-05, 5.518e-05, 5.517e-05, 5.517e-05, 7985.67492588], [1516974120000, 5.517e-05, 5.53e-05, 5.517e-05, 5.53e-05, 30194.25375466], [1516974180000, 5.53e-05, 5.53e-05, 5.53e-05, 5.53e-05, 3367.52169804], [1516974240000, 5.53e-05, 5.541e-05, 5.53e-05, 5.541e-05, 1318.49886831], [1516974300000, 5.53e-05, 5.53e-05, 5.529e-05, 5.529e-05, 4977.52768754], [1516974360000, 5.529e-05, 5.529e-05, 5.518e-05, 5.52e-05, 9741.67796922], [1516974420000, 5.518e-05, 5.529e-05, 5.518e-05, 5.518e-05, 1267.68000517], [1516974480000, 5.529e-05, 5.529e-05, 5.528e-05, 5.528e-05, 1533.59281596], [1516974540000, 5.528e-05, 5.528e-05, 5.518e-05, 5.528e-05, 20037.40805154], [1516974600000, 5.527e-05, 5.527e-05, 5.518e-05, 5.52e-05, 9544.1484944], [1516974660000, 5.52e-05, 5.52e-05, 5.517e-05, 5.517e-05, 59513.38735758], [1516974720000, 5.517e-05, 5.517e-05, 5.515e-05, 5.517e-05, 46210.07830345], [1516974780000, 5.517e-05, 5.517e-05, 5.516e-05, 5.516e-05, 33124.0031114], [1516974840000, 5.516e-05, 5.517e-05, 5.516e-05, 5.516e-05, 3737.04361322], [1516974900000, 5.515e-05, 5.515e-05, 5.514e-05, 5.515e-05, 3000.05594792], [1516974960000, 5.515e-05, 5.516e-05, 5.514e-05, 5.515e-05, 818.70654589], [1516975020000, 5.514e-05, 5.515e-05, 5.514e-05, 5.514e-05, 18988.57316564], [1516975080000, 5.514e-05, 5.514e-05, 5.511e-05, 5.511e-05, 1348.99066105], [1516975140000, 5.511e-05, 5.515e-05, 5.511e-05, 5.515e-05, 38904.16830978], [1516975200000, 5.514e-05, 5.514e-05, 5.505e-05, 5.51e-05, 44127.27302419], [1516975260000, 5.51e-05, 5.51e-05, 5.505e-05, 5.51e-05, 7027.44561453], [1516975320000, 5.51e-05, 5.51e-05, 5.505e-05, 5.505e-05, 8353.66695651], [1516975380000, 5.505e-05, 5.509e-05, 5.504e-05, 5.509e-05, 1763.14599445], [1516975440000, 5.509e-05, 5.509e-05, 5.509e-05, 5.509e-05, 756.8735388], [1516975500000, 5.509e-05, 5.509e-05, 5.505e-05, 5.505e-05, 5881.73952837], [1516975560000, 5.504e-05, 5.505e-05, 5.504e-05, 5.504e-05, 23114.83657559], [1516975620000, 5.505e-05, 5.505e-05, 5.504e-05, 5.505e-05, 16012.02160634], [1516975680000, 5.505e-05, 5.505e-05, 5.504e-05, 5.505e-05, 44076.63359976], [1516975740000, 5.505e-05, 5.505e-05, 5.504e-05, 5.505e-05, 86247.50700905], [1516975800000, 5.505e-05, 5.509e-05, 5.504e-05, 5.509e-05, 104985.56804308], [1516975860000, 5.51e-05, 5.517e-05, 5.505e-05, 5.517e-05, 65444.89979926], [1516975920000, 5.517e-05, 5.52e-05, 5.517e-05, 5.517e-05, 86541.03259862], [1516975980000, 5.517e-05, 5.541e-05, 5.517e-05, 5.541e-05, 3760.14345996], [1516976040000, 5.541e-05, 5.544e-05, 5.541e-05, 5.544e-05, 15572.77562198], [1516976100000, 5.544e-05, 5.544e-05, 5.541e-05, 5.541e-05, 25033.49744612], [1516976160000, 5.542e-05, 5.543e-05, 5.541e-05, 5.542e-05, 13145.94990247], [1516976220000, 5.542e-05, 5.543e-05, 5.541e-05, 5.541e-05, 39092.74364066], [1516976280000, 5.541e-05, 5.542e-05, 5.541e-05, 5.542e-05, 8285.30459219], [1516976340000, 5.542e-05, 5.542e-05, 5.52e-05, 5.542e-05, 4781.09127342], [1516976400000, 5.52e-05, 5.542e-05, 5.52e-05, 5.52e-05, 4386.30136652], [1516976460000, 5.52e-05, 5.54e-05, 5.508e-05, 5.508e-05, 68031.26774764], [1516976520000, 5.541e-05, 5.541e-05, 5.52e-05, 5.539e-05, 6953.47708887], [1516976580000, 5.539e-05, 5.539e-05, 5.511e-05, 5.539e-05, 15212.81202851], [1516976640000, 5.539e-05, 5.539e-05, 5.536e-05, 5.536e-05, 11386.35112913], [1516976700000, 5.539e-05, 5.539e-05, 5.52e-05, 5.539e-05, 14234.08361307], [1516976760000, 5.539e-05, 5.539e-05, 5.536e-05, 5.538e-05, 2792.98344954], [1516976820000, 5.539e-05, 5.541e-05, 5.539e-05, 5.54e-05, 25305.03535254], [1516976880000, 5.541e-05, 5.541e-05, 5.54e-05, 5.541e-05, 20838.44224249], [1516976940000, 5.539e-05, 5.542e-05, 5.539e-05, 5.542e-05, 4215.72053908], [1516977000000, 5.542e-05, 5.553e-05, 5.542e-05, 5.551e-05, 88642.17929395], [1516977060000, 5.551e-05, 5.581e-05, 5.55e-05, 5.581e-05, 263881.7420171], [1516977120000, 5.575e-05, 5.589e-05, 5.575e-05, 5.589e-05, 36272.47184141], [1516977180000, 5.589e-05, 5.592e-05, 5.581e-05, 5.589e-05, 34316.08367453], [1516977240000, 5.59e-05, 5.594e-05, 5.589e-05, 5.589e-05, 13445.98138119], [1516977300000, 5.59e-05, 5.6e-05, 5.589e-05, 5.6e-05, 72978.61568888], [1516977360000, 5.6e-05, 5.603e-05, 5.59e-05, 5.601e-05, 86736.53160736], [1516977420000, 5.601e-05, 5.601e-05, 5.551e-05, 5.551e-05, 66220.49597273], [1516977480000, 5.551e-05, 5.572e-05, 5.551e-05, 5.572e-05, 14012.05814829], [1516977540000, 5.593e-05, 5.593e-05, 5.572e-05, 5.572e-05, 9227.69117363], [1516977600000, 5.57e-05, 5.593e-05, 5.57e-05, 5.593e-05, 35372.09419695], [1516977660000, 5.573e-05, 5.592e-05, 5.573e-05, 5.592e-05, 1067.89487508], [1516977720000, 5.592e-05, 5.592e-05, 5.574e-05, 5.58e-05, 1594.95845814], [1516977780000, 5.59e-05, 5.59e-05, 5.58e-05, 5.59e-05, 1771.2433795], [1516977840000, 5.585e-05, 5.586e-05, 5.572e-05, 5.572e-05, 21402.7014267], [1516977900000, 5.57e-05, 5.573e-05, 5.564e-05, 5.57e-05, 13039.36869063], [1516977960000, 5.568e-05, 5.568e-05, 5.565e-05, 5.568e-05, 17688.18862036], [1516978020000, 5.57e-05, 5.57e-05, 5.568e-05, 5.569e-05, 10754.77936353], [1516978080000, 5.569e-05, 5.57e-05, 5.565e-05, 5.57e-05, 13700.19094484], [1516978140000, 5.57e-05, 5.57e-05, 5.565e-05, 5.57e-05, 12157.92770727], [1516978200000, 5.585e-05, 5.59e-05, 5.585e-05, 5.59e-05, 5786.73210576], [1516978260000, 5.589e-05, 5.59e-05, 5.585e-05, 5.585e-05, 7455.59476242], [1516978320000, 5.585e-05, 5.59e-05, 5.585e-05, 5.59e-05, 4670.69289654], [1516978380000, 5.59e-05, 5.59e-05, 5.588e-05, 5.588e-05, 459.95964297], [1516978440000, 5.59e-05, 5.59e-05, 5.585e-05, 5.59e-05, 13607.96540503], [1516978500000, 5.59e-05, 5.59e-05, 5.587e-05, 5.589e-05, 15041.25518505], [1516978560000, 5.589e-05, 5.59e-05, 5.588e-05, 5.59e-05, 17001.40516017], [1516978620000, 5.59e-05, 5.59e-05, 5.586e-05, 5.59e-05, 26807.75099429], [1516978680000, 5.59e-05, 5.59e-05, 5.588e-05, 5.59e-05, 39991.00417439], [1516978740000, 5.591e-05, 5.595e-05, 5.59e-05, 5.593e-05, 4305.50578048], [1516978800000, 5.593e-05, 5.593e-05, 5.59e-05, 5.59e-05, 25619.95137919], [1516978860000, 5.59e-05, 5.592e-05, 5.567e-05, 5.59e-05, 41944.84749834], [1516978920000, 5.589e-05, 5.59e-05, 5.576e-05, 5.579e-05, 18173.61700552], [1516978980000, 5.579e-05, 5.579e-05, 5.563e-05, 5.563e-05, 28795.25670297], [1516979040000, 5.563e-05, 5.57e-05, 5.555e-05, 5.565e-05, 43398.87464231], [1516979100000, 5.565e-05, 5.57e-05, 5.56e-05, 5.56e-05, 18783.89102296], [1516979160000, 5.56e-05, 5.56e-05, 5.555e-05, 5.556e-05, 31744.36041186], [1516979220000, 5.556e-05, 5.556e-05, 5.555e-05, 5.556e-05, 10813.35261305], [1516979280000, 5.555e-05, 5.556e-05, 5.55e-05, 5.556e-05, 11438.01322886], [1516979340000, 5.552e-05, 5.556e-05, 5.552e-05, 5.555e-05, 1950.73477247], [1516979400000, 5.554e-05, 5.593e-05, 5.554e-05, 5.575e-05, 44593.25681108], [1516979460000, 5.593e-05, 5.609e-05, 5.569e-05, 5.586e-05, 50265.94198777], [1516979520000, 5.589e-05, 5.603e-05, 5.589e-05, 5.603e-05, 9630.14319418], [1516979580000, 5.603e-05, 5.619e-05, 5.591e-05, 5.611e-05, 150732.47258173], [1516979640000, 5.611e-05, 5.65e-05, 5.603e-05, 5.65e-05, 299501.35980753], [1516979700000, 5.65e-05, 5.677e-05, 5.639e-05, 5.663e-05, 412883.04106878], [1516979760000, 5.663e-05, 5.677e-05, 5.625e-05, 5.629e-05, 222838.80616461], [1516979820000, 5.629e-05, 5.677e-05, 5.628e-05, 5.663e-05, 192762.55895753], [1516979880000, 5.663e-05, 5.676e-05, 5.65e-05, 5.65e-05, 37786.52321966], [1516979940000, 5.65e-05, 5.673e-05, 5.632e-05, 5.67e-05, 39793.32401296], [1516980000000, 5.671e-05, 5.675e-05, 5.67e-05, 5.675e-05, 85939.10629668], [1516980060000, 5.675e-05, 5.677e-05, 5.65e-05, 5.65e-05, 103089.87919361], [1516980120000, 5.65e-05, 5.67e-05, 5.65e-05, 5.655e-05, 7779.06908776], [1516980180000, 5.669e-05, 5.669e-05, 5.655e-05, 5.655e-05, 9077.10798273], [1516980240000, 5.667e-05, 5.682e-05, 5.656e-05, 5.681e-05, 118479.17495162], [1516980300000, 5.681e-05, 5.686e-05, 5.681e-05, 5.685e-05, 57161.22256764], [1516980360000, 5.685e-05, 5.69e-05, 5.682e-05, 5.682e-05, 108412.47858614], [1516980420000, 5.682e-05, 5.685e-05, 5.682e-05, 5.683e-05, 94666.85874846], [1516980480000, 5.683e-05, 5.685e-05, 5.65e-05, 5.651e-05, 127688.71097126], [1516980540000, 5.67e-05, 5.67e-05, 5.651e-05, 5.652e-05, 24400.04563313], [1516980600000, 5.652e-05, 5.661e-05, 5.651e-05, 5.652e-05, 18300.71591729], [1516980660000, 5.655e-05, 5.662e-05, 5.655e-05, 5.661e-05, 10503.03732349], [1516980720000, 5.661e-05, 5.675e-05, 5.661e-05, 5.662e-05, 30673.72160014], [1516980780000, 5.662e-05, 5.674e-05, 5.661e-05, 5.674e-05, 25080.63843183], [1516980840000, 5.675e-05, 5.678e-05, 5.674e-05, 5.678e-05, 9451.98609656], [1516980900000, 5.678e-05, 5.68e-05, 5.675e-05, 5.68e-05, 16921.04741016], [1516980960000, 5.68e-05, 5.68e-05, 5.679e-05, 5.679e-05, 6190.50845264], [1516981020000, 5.679e-05, 5.68e-05, 5.679e-05, 5.68e-05, 12770.06621454], [1516981080000, 5.68e-05, 5.685e-05, 5.68e-05, 5.685e-05, 27772.82163549], [1516981140000, 5.685e-05, 5.685e-05, 5.684e-05, 5.684e-05, 16718.42293318], [1516981200000, 5.684e-05, 5.684e-05, 5.679e-05, 5.68e-05, 40233.73074364], [1516981260000, 5.68e-05, 5.683e-05, 5.68e-05, 5.683e-05, 14003.83113897], [1516981320000, 5.683e-05, 5.685e-05, 5.68e-05, 5.685e-05, 48062.32623985], [1516981380000, 5.684e-05, 5.685e-05, 5.679e-05, 5.683e-05, 73927.84350195], [1516981440000, 5.683e-05, 5.688e-05, 5.679e-05, 5.688e-05, 40088.30139883], [1516981500000, 5.683e-05, 5.69e-05, 5.664e-05, 5.679e-05, 116605.69917448], [1516981560000, 5.679e-05, 5.694e-05, 5.664e-05, 5.685e-05, 70567.55841377], [1516981620000, 5.68e-05, 5.692e-05, 5.677e-05, 5.69e-05, 48420.55761965], [1516981680000, 5.688e-05, 5.69e-05, 5.665e-05, 5.668e-05, 40185.72448217], [1516981740000, 5.668e-05, 5.688e-05, 5.668e-05, 5.68e-05, 34630.61229976], [1516981800000, 5.68e-05, 5.687e-05, 5.663e-05, 5.668e-05, 95321.84312155], [1516981860000, 5.676e-05, 5.686e-05, 5.658e-05, 5.682e-05, 30416.36626458], [1516981920000, 5.665e-05, 5.68e-05, 5.653e-05, 5.658e-05, 31393.24690825], [1516981980000, 5.68e-05, 5.682e-05, 5.658e-05, 5.659e-05, 57588.80679531], [1516982040000, 5.659e-05, 5.679e-05, 5.659e-05, 5.678e-05, 6253.59457875], [1516982100000, 5.678e-05, 5.7e-05, 5.66e-05, 5.7e-05, 135723.45627266], [1516982160000, 5.7e-05, 5.72e-05, 5.699e-05, 5.718e-05, 121792.55914535], [1516982220000, 5.719e-05, 5.72e-05, 5.718e-05, 5.719e-05, 89135.80257015], [1516982280000, 5.718e-05, 5.719e-05, 5.713e-05, 5.713e-05, 42541.10046906], [1516982340000, 5.714e-05, 5.724e-05, 5.714e-05, 5.724e-05, 144995.24568163], [1516982400000, 5.725e-05, 5.77e-05, 5.724e-05, 5.77e-05, 351410.25341737], [1516982460000, 5.772e-05, 5.835e-05, 5.764e-05, 5.835e-05, 931378.21272486], [1516982520000, 5.835e-05, 5.845e-05, 5.805e-05, 5.809e-05, 283618.60533407], [1516982580000, 5.81e-05, 5.839e-05, 5.762e-05, 5.776e-05, 124450.96709611], [1516982640000, 5.777e-05, 5.801e-05, 5.744e-05, 5.744e-05, 114393.47287475], [1516982700000, 5.776e-05, 5.818e-05, 5.75e-05, 5.788e-05, 60268.49571109], [1516982760000, 5.788e-05, 5.8e-05, 5.788e-05, 5.798e-05, 88152.00253736], [1516982820000, 5.789e-05, 5.8e-05, 5.789e-05, 5.799e-05, 32604.49603868], [1516982880000, 5.799e-05, 5.8e-05, 5.788e-05, 5.798e-05, 130186.62387838], [1516982940000, 5.798e-05, 5.82e-05, 5.796e-05, 5.82e-05, 71139.09517857], [1516983000000, 5.8e-05, 5.823e-05, 5.8e-05, 5.82e-05, 98608.67596468], [1516983060000, 5.82e-05, 5.82e-05, 5.798e-05, 5.798e-05, 269248.02232278], [1516983120000, 5.798e-05, 5.798e-05, 5.79e-05, 5.796e-05, 36731.76565953], [1516983180000, 5.791e-05, 5.796e-05, 5.742e-05, 5.749e-05, 158268.51432822], [1516983240000, 5.749e-05, 5.769e-05, 5.748e-05, 5.764e-05, 37561.83382849], [1516983300000, 5.751e-05, 5.751e-05, 5.719e-05, 5.747e-05, 55101.66013291], [1516983360000, 5.736e-05, 5.748e-05, 5.718e-05, 5.73e-05, 48619.93437416], [1516983420000, 5.731e-05, 5.734e-05, 5.719e-05, 5.72e-05, 98007.03122875], [1516983480000, 5.72e-05, 5.72e-05, 5.717e-05, 5.718e-05, 34989.63771777], [1516983540000, 5.718e-05, 5.74e-05, 5.717e-05, 5.74e-05, 57150.2493348], [1516983600000, 5.73e-05, 5.748e-05, 5.723e-05, 5.73e-05, 52364.9668174], [1516983660000, 5.73e-05, 5.736e-05, 5.72e-05, 5.72e-05, 68204.99857163], [1516983720000, 5.72e-05, 5.722e-05, 5.709e-05, 5.719e-05, 83848.06957119], [1516983780000, 5.72e-05, 5.731e-05, 5.72e-05, 5.73e-05, 26587.52046721], [1516983840000, 5.737e-05, 5.746e-05, 5.73e-05, 5.74e-05, 16779.76544538], [1516983900000, 5.746e-05, 5.755e-05, 5.739e-05, 5.754e-05, 64193.9240377], [1516983960000, 5.755e-05, 5.755e-05, 5.746e-05, 5.755e-05, 52203.49775903], [1516984020000, 5.755e-05, 5.78e-05, 5.755e-05, 5.78e-05, 41285.01826624], [1516984080000, 5.78e-05, 5.786e-05, 5.746e-05, 5.746e-05, 37972.0128183], [1516984140000, 5.748e-05, 5.763e-05, 5.746e-05, 5.748e-05, 4552.94453794], [1516984200000, 5.75e-05, 5.784e-05, 5.749e-05, 5.763e-05, 31353.53167879], [1516984260000, 5.763e-05, 5.763e-05, 5.75e-05, 5.75e-05, 32167.4927039], [1516984320000, 5.757e-05, 5.761e-05, 5.75e-05, 5.759e-05, 20042.28079506], [1516984380000, 5.759e-05, 5.759e-05, 5.74e-05, 5.754e-05, 23207.52468539], [1516984440000, 5.749e-05, 5.754e-05, 5.749e-05, 5.749e-05, 16725.45593625], [1516984500000, 5.752e-05, 5.755e-05, 5.74e-05, 5.74e-05, 33500.16049899], [1516984560000, 5.746e-05, 5.747e-05, 5.74e-05, 5.742e-05, 65819.47888815], [1516984620000, 5.742e-05, 5.745e-05, 5.707e-05, 5.73e-05, 87382.89613795], [1516984680000, 5.73e-05, 5.74e-05, 5.728e-05, 5.731e-05, 17362.43182832], [1516984740000, 5.731e-05, 5.731e-05, 5.707e-05, 5.707e-05, 20152.71118496], [1516984800000, 5.707e-05, 5.723e-05, 5.706e-05, 5.706e-05, 19317.28071332], [1516984860000, 5.705e-05, 5.706e-05, 5.686e-05, 5.706e-05, 42786.66952586], [1516984920000, 5.707e-05, 5.712e-05, 5.687e-05, 5.707e-05, 35364.88018703], [1516984980000, 5.707e-05, 5.707e-05, 5.691e-05, 5.7e-05, 7263.21719629], [1516985040000, 5.692e-05, 5.7e-05, 5.691e-05, 5.7e-05, 30605.88103048], [1516985100000, 5.7e-05, 5.7e-05, 5.691e-05, 5.7e-05, 17459.78946608], [1516985160000, 5.691e-05, 5.7e-05, 5.691e-05, 5.691e-05, 7464.43085147], [1516985220000, 5.69e-05, 5.69e-05, 5.651e-05, 5.69e-05, 37811.00780115], [1516985280000, 5.671e-05, 5.685e-05, 5.671e-05, 5.68e-05, 10142.29909567], [1516985340000, 5.68e-05, 5.68e-05, 5.667e-05, 5.679e-05, 41015.90685504], [1516985400000, 5.665e-05, 5.68e-05, 5.665e-05, 5.68e-05, 5779.72411738], [1516985460000, 5.68e-05, 5.68e-05, 5.676e-05, 5.676e-05, 12347.44635067], [1516985520000, 5.665e-05, 5.675e-05, 5.65e-05, 5.65e-05, 10437.12128466], [1516985580000, 5.65e-05, 5.65e-05, 5.647e-05, 5.647e-05, 3577.71261439], [1516985640000, 5.646e-05, 5.648e-05, 5.641e-05, 5.645e-05, 13597.01103941], [1516985700000, 5.648e-05, 5.648e-05, 5.645e-05, 5.646e-05, 8912.07511459], [1516985760000, 5.646e-05, 5.648e-05, 5.646e-05, 5.648e-05, 7996.6332828], [1516985820000, 5.648e-05, 5.648e-05, 5.647e-05, 5.647e-05, 6760.92443456], [1516985880000, 5.646e-05, 5.647e-05, 5.641e-05, 5.641e-05, 7050.08774714], [1516985940000, 5.645e-05, 5.645e-05, 5.641e-05, 5.645e-05, 1428.66172971], [1516986000000, 5.645e-05, 5.645e-05, 5.641e-05, 5.642e-05, 21280.80958639], [1516986060000, 5.642e-05, 5.665e-05, 5.642e-05, 5.66e-05, 27780.12274056], [1516986120000, 5.673e-05, 5.675e-05, 5.663e-05, 5.675e-05, 943.26940741], [1516986180000, 5.675e-05, 5.675e-05, 5.665e-05, 5.666e-05, 30382.5547286], [1516986240000, 5.666e-05, 5.674e-05, 5.647e-05, 5.67e-05, 58991.35381956], [1516986300000, 5.651e-05, 5.651e-05, 5.645e-05, 5.645e-05, 75575.04843181], [1516986360000, 5.641e-05, 5.647e-05, 5.64e-05, 5.641e-05, 18522.01359207], [1516986420000, 5.641e-05, 5.641e-05, 5.631e-05, 5.631e-05, 21079.43202778], [1516986480000, 5.646e-05, 5.646e-05, 5.64e-05, 5.641e-05, 985.34226676], [1516986540000, 5.641e-05, 5.641e-05, 5.631e-05, 5.631e-05, 75512.87930728], [1516986600000, 5.631e-05, 5.637e-05, 5.631e-05, 5.631e-05, 19051.60966083], [1516986660000, 5.64e-05, 5.672e-05, 5.64e-05, 5.672e-05, 62470.56161422], [1516986720000, 5.674e-05, 5.674e-05, 5.631e-05, 5.67e-05, 7785.07466384], [1516986780000, 5.67e-05, 5.671e-05, 5.642e-05, 5.67e-05, 25499.35243156], [1516986840000, 5.67e-05, 5.676e-05, 5.643e-05, 5.675e-05, 18647.13229696], [1516986900000, 5.675e-05, 5.68e-05, 5.675e-05, 5.679e-05, 61386.37064952], [1516986960000, 5.679e-05, 5.68e-05, 5.679e-05, 5.68e-05, 7682.75873144], [1516987020000, 5.68e-05, 5.68e-05, 5.68e-05, 5.68e-05, 8415.78475848], [1516987080000, 5.68e-05, 5.681e-05, 5.68e-05, 5.68e-05, 3988.28061696], [1516987140000, 5.681e-05, 5.681e-05, 5.68e-05, 5.68e-05, 4939.94512458], [1516987200000, 5.68e-05, 5.68e-05, 5.679e-05, 5.679e-05, 18736.09650411], [1516987260000, 5.679e-05, 5.68e-05, 5.675e-05, 5.675e-05, 25051.25941111], [1516987320000, 5.675e-05, 5.679e-05, 5.675e-05, 5.679e-05, 17525.29476258], [1516987380000, 5.675e-05, 5.678e-05, 5.675e-05, 5.675e-05, 504.72025444], [1516987440000, 5.675e-05, 5.677e-05, 5.675e-05, 5.677e-05, 1383.25703891], [1516987500000, 5.675e-05, 5.678e-05, 5.675e-05, 5.678e-05, 895.83028744], [1516987560000, 5.678e-05, 5.678e-05, 5.678e-05, 5.678e-05, 10050.47999932], [1516987620000, 5.679e-05, 5.68e-05, 5.676e-05, 5.676e-05, 15434.36325025], [1516987680000, 5.676e-05, 5.676e-05, 5.675e-05, 5.675e-05, 26200.63247839], [1516987740000, 5.634e-05, 5.675e-05, 5.634e-05, 5.64e-05, 1676.95428947], [1516987800000, 5.641e-05, 5.641e-05, 5.64e-05, 5.64e-05, 14768.63687605], [1516987860000, 5.658e-05, 5.674e-05, 5.658e-05, 5.674e-05, 2262.29424347], [1516987920000, 5.642e-05, 5.65e-05, 5.642e-05, 5.642e-05, 24732.13930664], [1516987980000, 5.642e-05, 5.674e-05, 5.642e-05, 5.674e-05, 13502.81876582], [1516988040000, 5.649e-05, 5.649e-05, 5.634e-05, 5.649e-05, 11573.46109361], [1516988100000, 5.649e-05, 5.655e-05, 5.649e-05, 5.649e-05, 742.62696758], [1516988160000, 5.637e-05, 5.649e-05, 5.637e-05, 5.649e-05, 19751.852118], [1516988220000, 5.649e-05, 5.67e-05, 5.649e-05, 5.67e-05, 3326.81259453], [1516988280000, 5.655e-05, 5.674e-05, 5.655e-05, 5.67e-05, 6934.2458349], [1516988340000, 5.67e-05, 5.67e-05, 5.658e-05, 5.658e-05, 22970.21226505], [1516988400000, 5.67e-05, 5.67e-05, 5.659e-05, 5.659e-05, 3118.32642299], [1516988460000, 5.658e-05, 5.672e-05, 5.658e-05, 5.672e-05, 2219.59553795], [1516988520000, 5.672e-05, 5.677e-05, 5.672e-05, 5.672e-05, 7980.48965064], [1516988580000, 5.677e-05, 5.681e-05, 5.672e-05, 5.68e-05, 45700.77053063], [1516988640000, 5.68e-05, 5.688e-05, 5.68e-05, 5.687e-05, 19268.10662483], [1516988700000, 5.68e-05, 5.685e-05, 5.66e-05, 5.66e-05, 11264.43401852], [1516988760000, 5.669e-05, 5.671e-05, 5.66e-05, 5.67e-05, 18357.91400497], [1516988820000, 5.679e-05, 5.687e-05, 5.679e-05, 5.687e-05, 11538.63495176], [1516988880000, 5.687e-05, 5.69e-05, 5.679e-05, 5.685e-05, 44110.80303394], [1516988940000, 5.685e-05, 5.689e-05, 5.661e-05, 5.689e-05, 26869.98263098], [1516989000000, 5.688e-05, 5.688e-05, 5.679e-05, 5.679e-05, 5978.81041578], [1516989060000, 5.679e-05, 5.688e-05, 5.66e-05, 5.66e-05, 5889.38446567], [1516989120000, 5.66e-05, 5.688e-05, 5.66e-05, 5.688e-05, 5436.41973857], [1516989180000, 5.688e-05, 5.688e-05, 5.663e-05, 5.663e-05, 1728.08396688], [1516989240000, 5.687e-05, 5.687e-05, 5.675e-05, 5.675e-05, 12387.52748602], [1516989300000, 5.685e-05, 5.685e-05, 5.658e-05, 5.658e-05, 24861.3432687], [1516989360000, 5.659e-05, 5.659e-05, 5.658e-05, 5.658e-05, 3000.0], [1516989420000, 5.659e-05, 5.659e-05, 5.658e-05, 5.658e-05, 8596.14091587], [1516989480000, 5.659e-05, 5.68e-05, 5.659e-05, 5.68e-05, 7227.38501834], [1516989540000, 5.68e-05, 5.69e-05, 5.68e-05, 5.687e-05, 34383.87280141], [1516989600000, 5.687e-05, 5.69e-05, 5.687e-05, 5.688e-05, 7544.15794487], [1516989660000, 5.69e-05, 5.69e-05, 5.68e-05, 5.68e-05, 13561.76767135], [1516989720000, 5.68e-05, 5.68e-05, 5.659e-05, 5.676e-05, 24971.32762366], [1516989780000, 5.665e-05, 5.665e-05, 5.658e-05, 5.658e-05, 7351.01261213], [1516989840000, 5.665e-05, 5.69e-05, 5.659e-05, 5.659e-05, 40571.33325993], [1516989900000, 5.659e-05, 5.659e-05, 5.65e-05, 5.65e-05, 17971.18006629], [1516989960000, 5.65e-05, 5.663e-05, 5.65e-05, 5.663e-05, 559.21271452], [1516990020000, 5.663e-05, 5.686e-05, 5.649e-05, 5.669e-05, 14351.41141776], [1516990080000, 5.682e-05, 5.687e-05, 5.682e-05, 5.687e-05, 3259.32528328], [1516990140000, 5.687e-05, 5.687e-05, 5.682e-05, 5.683e-05, 3365.3088538], [1516990200000, 5.683e-05, 5.69e-05, 5.682e-05, 5.682e-05, 31499.60941618], [1516990260000, 5.682e-05, 5.689e-05, 5.682e-05, 5.687e-05, 1318.73319033], [1516990320000, 5.687e-05, 5.688e-05, 5.684e-05, 5.687e-05, 1857.90504747], [1516990380000, 5.686e-05, 5.7e-05, 5.684e-05, 5.684e-05, 20220.98766508], [1516990440000, 5.684e-05, 5.684e-05, 5.682e-05, 5.682e-05, 120532.96160251], [1516990500000, 5.682e-05, 5.683e-05, 5.67e-05, 5.67e-05, 49169.56832838], [1516990560000, 5.668e-05, 5.682e-05, 5.668e-05, 5.682e-05, 32639.9669379], [1516990620000, 5.682e-05, 5.682e-05, 5.67e-05, 5.67e-05, 6244.97398127], [1516990680000, 5.67e-05, 5.67e-05, 5.647e-05, 5.647e-05, 26374.03077766], [1516990740000, 5.649e-05, 5.649e-05, 5.647e-05, 5.647e-05, 286.65884107], [1516990800000, 5.647e-05, 5.648e-05, 5.643e-05, 5.648e-05, 643.91118047], [1516990860000, 5.648e-05, 5.648e-05, 5.635e-05, 5.635e-05, 19366.92613333], [1516990920000, 5.635e-05, 5.639e-05, 5.634e-05, 5.634e-05, 20164.24836884], [1516990980000, 5.634e-05, 5.645e-05, 5.634e-05, 5.639e-05, 3088.13660799], [1516991040000, 5.639e-05, 5.649e-05, 5.639e-05, 5.647e-05, 2259.9890087], [1516991100000, 5.647e-05, 5.647e-05, 5.642e-05, 5.643e-05, 3952.02226822], [1516991160000, 5.643e-05, 5.643e-05, 5.643e-05, 5.643e-05, 2525.96484954], [1516991220000, 5.642e-05, 5.642e-05, 5.639e-05, 5.642e-05, 2090.76393354], [1516991280000, 5.642e-05, 5.642e-05, 5.642e-05, 5.642e-05, 70.391733], [1516991340000, 5.639e-05, 5.639e-05, 5.63e-05, 5.634e-05, 18535.47366318], [1516991400000, 5.631e-05, 5.631e-05, 5.63e-05, 5.631e-05, 36329.04066646], [1516991460000, 5.631e-05, 5.631e-05, 5.63e-05, 5.63e-05, 4076.20143863], [1516991520000, 5.631e-05, 5.631e-05, 5.63e-05, 5.631e-05, 10928.49785311], [1516991580000, 5.631e-05, 5.643e-05, 5.631e-05, 5.643e-05, 2856.773028], [1516991640000, 5.645e-05, 5.645e-05, 5.63e-05, 5.631e-05, 32531.57425234], [1516991700000, 5.634e-05, 5.634e-05, 5.63e-05, 5.63e-05, 1233.68308932], [1516991760000, 5.631e-05, 5.631e-05, 5.626e-05, 5.626e-05, 34166.33681444], [1516991820000, 5.626e-05, 5.63e-05, 5.626e-05, 5.626e-05, 1659.64696566], [1516991880000, 5.625e-05, 5.625e-05, 5.624e-05, 5.624e-05, 400.0], [1516991940000, 5.624e-05, 5.626e-05, 5.624e-05, 5.626e-05, 2886.3485746], [1516992000000, 5.624e-05, 5.626e-05, 5.624e-05, 5.624e-05, 306.30287948], [1516992060000, 5.624e-05, 5.626e-05, 5.624e-05, 5.626e-05, 560.49499683], [1516992120000, 5.624e-05, 5.624e-05, 5.604e-05, 5.61e-05, 14195.98474127], [1516992180000, 5.624e-05, 5.624e-05, 5.61e-05, 5.624e-05, 1544.45695166], [1516992240000, 5.624e-05, 5.626e-05, 5.624e-05, 5.624e-05, 5898.28320038], [1516992300000, 5.624e-05, 5.624e-05, 5.624e-05, 5.624e-05, 3957.46941842], [1516992360000, 5.623e-05, 5.623e-05, 5.623e-05, 5.623e-05, 19.65241453], [1516992420000, 5.623e-05, 5.623e-05, 5.61e-05, 5.623e-05, 16369.12777967], [1516992480000, 5.623e-05, 5.623e-05, 5.613e-05, 5.613e-05, 2191.94953643], [1516992540000, 5.613e-05, 5.613e-05, 5.61e-05, 5.61e-05, 22376.28766114], [1516992600000, 5.61e-05, 5.61e-05, 5.607e-05, 5.61e-05, 8311.35712735], [1516992660000, 5.607e-05, 5.61e-05, 5.604e-05, 5.61e-05, 7056.27834343], [1516992720000, 5.61e-05, 5.61e-05, 5.61e-05, 5.61e-05, 5959.45216024], [1516992780000, 5.604e-05, 5.608e-05, 5.604e-05, 5.604e-05, 21693.01297179], [1516992840000, 5.605e-05, 5.605e-05, 5.602e-05, 5.602e-05, 11019.78105947], [1516992900000, 5.603e-05, 5.603e-05, 5.6e-05, 5.6e-05, 25518.85861056], [1516992960000, 5.6e-05, 5.603e-05, 5.6e-05, 5.603e-05, 79213.31765784], [1516993020000, 5.603e-05, 5.608e-05, 5.603e-05, 5.608e-05, 5645.19188501], [1516993080000, 5.606e-05, 5.607e-05, 5.603e-05, 5.606e-05, 4221.89724441], [1516993140000, 5.605e-05, 5.605e-05, 5.6e-05, 5.6e-05, 7144.05310718], [1516993200000, 5.603e-05, 5.603e-05, 5.6e-05, 5.6e-05, 70729.50332295], [1516993260000, 5.601e-05, 5.601e-05, 5.6e-05, 5.601e-05, 9667.32289208], [1516993320000, 5.601e-05, 5.603e-05, 5.6e-05, 5.603e-05, 25135.50135182], [1516993380000, 5.602e-05, 5.603e-05, 5.601e-05, 5.602e-05, 3979.32880445], [1516993440000, 5.601e-05, 5.603e-05, 5.601e-05, 5.602e-05, 3653.67039303], [1516993500000, 5.603e-05, 5.603e-05, 5.602e-05, 5.603e-05, 5475.51203572], [1516993560000, 5.603e-05, 5.61e-05, 5.603e-05, 5.61e-05, 1097.13038951], [1516993620000, 5.61e-05, 5.61e-05, 5.606e-05, 5.606e-05, 1405.92039355], [1516993680000, 5.603e-05, 5.606e-05, 5.603e-05, 5.603e-05, 3097.35243944], [1516993740000, 5.606e-05, 5.61e-05, 5.603e-05, 5.603e-05, 20751.02506805], [1516993800000, 5.605e-05, 5.61e-05, 5.605e-05, 5.61e-05, 1862.64239687], [1516993860000, 5.623e-05, 5.626e-05, 5.623e-05, 5.626e-05, 11553.98462839], [1516993920000, 5.626e-05, 5.626e-05, 5.626e-05, 5.626e-05, 281.28162008], [1516993980000, 5.623e-05, 5.626e-05, 5.623e-05, 5.623e-05, 1318.49137792], [1516994040000, 5.626e-05, 5.631e-05, 5.626e-05, 5.631e-05, 6733.54183821], [1516994100000, 5.631e-05, 5.648e-05, 5.626e-05, 5.644e-05, 60545.37987004], [1516994160000, 5.644e-05, 5.644e-05, 5.626e-05, 5.63e-05, 2813.63671807], [1516994220000, 5.626e-05, 5.628e-05, 5.626e-05, 5.628e-05, 160.22863101], [1516994280000, 5.628e-05, 5.628e-05, 5.626e-05, 5.626e-05, 21529.00672065], [1516994340000, 5.626e-05, 5.643e-05, 5.618e-05, 5.63e-05, 19578.99580375], [1516994400000, 5.643e-05, 5.643e-05, 5.63e-05, 5.63e-05, 118.91000307], [1516994460000, 5.631e-05, 5.631e-05, 5.631e-05, 5.631e-05, 180.28006127], [1516994520000, 5.631e-05, 5.631e-05, 5.63e-05, 5.63e-05, 3778.61179169], [1516994580000, 5.63e-05, 5.63e-05, 5.63e-05, 5.63e-05, 5072.34051328], [1516994640000, 5.63e-05, 5.63e-05, 5.63e-05, 5.63e-05, 2019.06625995], [1516994700000, 5.626e-05, 5.63e-05, 5.626e-05, 5.626e-05, 1245.22910819], [1516994760000, 5.61e-05, 5.626e-05, 5.61e-05, 5.61e-05, 3658.97463594], [1516994820000, 5.61e-05, 5.61e-05, 5.61e-05, 5.61e-05, 39.3295607], [1516994880000, 5.61e-05, 5.61e-05, 5.61e-05, 5.61e-05, 20391.05255533], [1516994940000, 5.616e-05, 5.62e-05, 5.61e-05, 5.62e-05, 3331.45915558], [1516995000000, 5.62e-05, 5.62e-05, 5.61e-05, 5.62e-05, 2131.24680634], [1516995060000, 5.612e-05, 5.62e-05, 5.61e-05, 5.61e-05, 917.79359431], [1516995120000, 5.611e-05, 5.62e-05, 5.611e-05, 5.618e-05, 9047.34436595], [1516995180000, 5.618e-05, 5.62e-05, 5.588e-05, 5.588e-05, 210309.47572758], [1516995240000, 5.6e-05, 5.62e-05, 5.589e-05, 5.606e-05, 4299.32115675], [1516995300000, 5.606e-05, 5.606e-05, 5.591e-05, 5.606e-05, 5341.73059627], [1516995360000, 5.606e-05, 5.606e-05, 5.6e-05, 5.6e-05, 15471.90726918], [1516995420000, 5.6e-05, 5.606e-05, 5.593e-05, 5.6e-05, 20848.46871984], [1516995480000, 5.594e-05, 5.6e-05, 5.589e-05, 5.599e-05, 26335.31448266], [1516995540000, 5.599e-05, 5.599e-05, 5.589e-05, 5.591e-05, 31062.78612554], [1516995600000, 5.591e-05, 5.591e-05, 5.589e-05, 5.589e-05, 23210.1116931], [1516995660000, 5.588e-05, 5.59e-05, 5.588e-05, 5.59e-05, 1305.05614304], [1516995720000, 5.59e-05, 5.59e-05, 5.589e-05, 5.589e-05, 18894.38722383], [1516995780000, 5.589e-05, 5.59e-05, 5.589e-05, 5.59e-05, 3570.83970911], [1516995840000, 5.589e-05, 5.589e-05, 5.588e-05, 5.589e-05, 1614.69554866], [1516995900000, 5.587e-05, 5.589e-05, 5.586e-05, 5.587e-05, 29998.37766949], [1516995960000, 5.587e-05, 5.587e-05, 5.585e-05, 5.587e-05, 93396.38171114], [1516996020000, 5.587e-05, 5.588e-05, 5.586e-05, 5.588e-05, 11879.69300445], [1516996080000, 5.588e-05, 5.631e-05, 5.588e-05, 5.631e-05, 36268.99956076], [1516996140000, 5.631e-05, 5.636e-05, 5.631e-05, 5.631e-05, 32677.09919755], [1516996200000, 5.631e-05, 5.633e-05, 5.631e-05, 5.631e-05, 7514.8043213], [1516996260000, 5.631e-05, 5.631e-05, 5.631e-05, 5.631e-05, 5788.91537256], [1516996320000, 5.628e-05, 5.63e-05, 5.6e-05, 5.6e-05, 1562.57942342], [1516996380000, 5.629e-05, 5.629e-05, 5.6e-05, 5.6e-05, 4656.06673027], [1516996440000, 5.6e-05, 5.6e-05, 5.594e-05, 5.6e-05, 2217.97616314], [1516996500000, 5.595e-05, 5.595e-05, 5.593e-05, 5.595e-05, 10534.42486161], [1516996560000, 5.595e-05, 5.595e-05, 5.593e-05, 5.595e-05, 15206.43947152], [1516996620000, 5.593e-05, 5.595e-05, 5.593e-05, 5.595e-05, 7971.18117199], [1516996680000, 5.595e-05, 5.595e-05, 5.593e-05, 5.594e-05, 21963.41955482], [1516996740000, 5.594e-05, 5.595e-05, 5.59e-05, 5.595e-05, 10365.98128775], [1516996800000, 5.593e-05, 5.595e-05, 5.593e-05, 5.593e-05, 448.394209], [1516996860000, 5.593e-05, 5.595e-05, 5.593e-05, 5.594e-05, 4155.20378335], [1516996920000, 5.593e-05, 5.594e-05, 5.593e-05, 5.594e-05, 10484.76687369], [1516996980000, 5.593e-05, 5.6e-05, 5.593e-05, 5.6e-05, 29069.46912526], [1516997040000, 5.624e-05, 5.629e-05, 5.603e-05, 5.603e-05, 1576.59512696], [1516997100000, 5.608e-05, 5.62e-05, 5.607e-05, 5.609e-05, 11327.8449075], [1516997160000, 5.616e-05, 5.616e-05, 5.616e-05, 5.616e-05, 483.08890451], [1516997220000, 5.629e-05, 5.629e-05, 5.62e-05, 5.62e-05, 1443.28327109], [1516997280000, 5.62e-05, 5.621e-05, 5.62e-05, 5.62e-05, 13142.72650015], [1516997340000, 5.62e-05, 5.62e-05, 5.608e-05, 5.608e-05, 11353.6223263], [1516997400000, 5.61e-05, 5.62e-05, 5.608e-05, 5.608e-05, 2547.59256712], [1516997460000, 5.61e-05, 5.612e-05, 5.607e-05, 5.612e-05, 4031.36622315], [1516997520000, 5.61e-05, 5.612e-05, 5.61e-05, 5.612e-05, 4240.91876996], [1516997580000, 5.612e-05, 5.612e-05, 5.607e-05, 5.611e-05, 10676.09374483], [1516997640000, 5.611e-05, 5.613e-05, 5.585e-05, 5.585e-05, 179691.27167643], [1516997700000, 5.585e-05, 5.611e-05, 5.584e-05, 5.609e-05, 78272.60859151], [1516997760000, 5.592e-05, 5.609e-05, 5.587e-05, 5.606e-05, 9075.57179213], [1516997820000, 5.59e-05, 5.609e-05, 5.59e-05, 5.592e-05, 12543.05984151], [1516997880000, 5.592e-05, 5.601e-05, 5.592e-05, 5.592e-05, 27456.62406275], [1516997940000, 5.592e-05, 5.6e-05, 5.592e-05, 5.592e-05, 76300.57057638], [1516998000000, 5.592e-05, 5.6e-05, 5.585e-05, 5.585e-05, 28944.02702751], [1516998060000, 5.585e-05, 5.6e-05, 5.58e-05, 5.59e-05, 8752.79434431], [1516998120000, 5.59e-05, 5.592e-05, 5.59e-05, 5.592e-05, 14795.75074408], [1516998180000, 5.591e-05, 5.598e-05, 5.591e-05, 5.593e-05, 15429.36959611], [1516998240000, 5.6e-05, 5.601e-05, 5.59e-05, 5.59e-05, 26974.65943182], [1516998300000, 5.6e-05, 5.6e-05, 5.582e-05, 5.6e-05, 9049.87071732], [1516998360000, 5.584e-05, 5.601e-05, 5.584e-05, 5.601e-05, 5853.19147635], [1516998420000, 5.594e-05, 5.601e-05, 5.592e-05, 5.592e-05, 42567.27584442], [1516998480000, 5.592e-05, 5.6e-05, 5.592e-05, 5.6e-05, 30378.06986262], [1516998540000, 5.6e-05, 5.61e-05, 5.586e-05, 5.61e-05, 18633.18549752], [1516998600000, 5.601e-05, 5.601e-05, 5.588e-05, 5.59e-05, 28398.21096313], [1516998660000, 5.6e-05, 5.6e-05, 5.579e-05, 5.587e-05, 65230.04917671], [1516998720000, 5.587e-05, 5.59e-05, 5.582e-05, 5.588e-05, 25554.08317745], [1516998780000, 5.588e-05, 5.599e-05, 5.58e-05, 5.591e-05, 128745.52572472], [1516998840000, 5.591e-05, 5.618e-05, 5.591e-05, 5.6e-05, 18528.46688343], [1516998900000, 5.618e-05, 5.618e-05, 5.6e-05, 5.6e-05, 10776.73074289], [1516998960000, 5.618e-05, 5.618e-05, 5.59e-05, 5.59e-05, 53625.56478152], [1516999020000, 5.59e-05, 5.618e-05, 5.59e-05, 5.618e-05, 224.15024114], [1516999080000, 5.6e-05, 5.629e-05, 5.6e-05, 5.629e-05, 22155.4577237], [1516999140000, 5.631e-05, 5.631e-05, 5.601e-05, 5.601e-05, 187.4988361], [1516999200000, 5.601e-05, 5.625e-05, 5.601e-05, 5.625e-05, 110.14389952], [1516999260000, 5.602e-05, 5.622e-05, 5.602e-05, 5.622e-05, 178.13386671], [1516999320000, 5.622e-05, 5.623e-05, 5.605e-05, 5.623e-05, 1047.41942353], [1516999380000, 5.622e-05, 5.624e-05, 5.622e-05, 5.624e-05, 5157.91812215], [1516999440000, 5.624e-05, 5.624e-05, 5.604e-05, 5.624e-05, 4730.56337353], [1516999500000, 5.605e-05, 5.624e-05, 5.605e-05, 5.623e-05, 1330.19748073], [1516999560000, 5.623e-05, 5.635e-05, 5.623e-05, 5.631e-05, 7577.1903687], [1516999620000, 5.635e-05, 5.641e-05, 5.635e-05, 5.641e-05, 49304.33362849], [1516999680000, 5.64e-05, 5.64e-05, 5.639e-05, 5.639e-05, 399.26402465], [1516999740000, 5.639e-05, 5.643e-05, 5.639e-05, 5.64e-05, 19846.9804057], [1516999800000, 5.64e-05, 5.644e-05, 5.64e-05, 5.644e-05, 3495.37340434], [1516999860000, 5.645e-05, 5.645e-05, 5.64e-05, 5.641e-05, 8135.50111031], [1516999920000, 5.644e-05, 5.649e-05, 5.644e-05, 5.644e-05, 8017.5124999], [1516999980000, 5.649e-05, 5.65e-05, 5.644e-05, 5.65e-05, 4303.36181068], [1517000040000, 5.65e-05, 5.656e-05, 5.65e-05, 5.656e-05, 2593.3810542], [1517000100000, 5.662e-05, 5.665e-05, 5.656e-05, 5.657e-05, 9669.38010836], [1517000160000, 5.665e-05, 5.668e-05, 5.604e-05, 5.66e-05, 51524.75444666], [1517000220000, 5.666e-05, 5.666e-05, 5.657e-05, 5.66e-05, 1811.08579649], [1517000280000, 5.66e-05, 5.665e-05, 5.658e-05, 5.665e-05, 1775.44539987], [1517000340000, 5.665e-05, 5.665e-05, 5.665e-05, 5.665e-05, 24.05927054], [1517000400000, 5.66e-05, 5.66e-05, 5.658e-05, 5.66e-05, 3734.08017831], [1517000460000, 5.658e-05, 5.66e-05, 5.658e-05, 5.66e-05, 1599.81932705], [1517000520000, 5.658e-05, 5.66e-05, 5.657e-05, 5.66e-05, 1219.48579566], [1517000580000, 5.66e-05, 5.66e-05, 5.657e-05, 5.657e-05, 3245.18873134], [1517000640000, 5.658e-05, 5.66e-05, 5.657e-05, 5.66e-05, 8079.48695011], [1517000700000, 5.66e-05, 5.66e-05, 5.657e-05, 5.657e-05, 9369.43339439], [1517000760000, 5.654e-05, 5.657e-05, 5.654e-05, 5.657e-05, 3522.23358856], [1517000820000, 5.657e-05, 5.667e-05, 5.654e-05, 5.667e-05, 5029.92857198], [1517000880000, 5.667e-05, 5.667e-05, 5.657e-05, 5.666e-05, 2214.07336445], [1517000940000, 5.666e-05, 5.666e-05, 5.657e-05, 5.657e-05, 5024.40752773], [1517001000000, 5.657e-05, 5.657e-05, 5.65e-05, 5.65e-05, 3726.91018364], [1517001060000, 5.651e-05, 5.652e-05, 5.651e-05, 5.651e-05, 918.67031379], [1517001120000, 5.652e-05, 5.654e-05, 5.651e-05, 5.651e-05, 10226.67675293], [1517001180000, 5.651e-05, 5.652e-05, 5.651e-05, 5.651e-05, 2741.63694266], [1517001240000, 5.652e-05, 5.654e-05, 5.651e-05, 5.651e-05, 5781.53348129], [1517001300000, 5.651e-05, 5.654e-05, 5.651e-05, 5.654e-05, 2479.66575446], [1517001360000, 5.651e-05, 5.652e-05, 5.65e-05, 5.65e-05, 1403.9282934], [1517001420000, 5.65e-05, 5.65e-05, 5.617e-05, 5.617e-05, 16343.14524195], [1517001480000, 5.617e-05, 5.617e-05, 5.615e-05, 5.617e-05, 53569.90212438], [1517001540000, 5.651e-05, 5.654e-05, 5.62e-05, 5.62e-05, 1432.73887079], [1517001600000, 5.621e-05, 5.65e-05, 5.621e-05, 5.65e-05, 3234.31278487], [1517001660000, 5.65e-05, 5.65e-05, 5.647e-05, 5.647e-05, 1514.00596505], [1517001720000, 5.647e-05, 5.65e-05, 5.647e-05, 5.65e-05, 4300.9604402], [1517001780000, 5.65e-05, 5.65e-05, 5.65e-05, 5.65e-05, 387.03059213], [1517001840000, 5.65e-05, 5.654e-05, 5.65e-05, 5.654e-05, 959.51392068], [1517001900000, 5.65e-05, 5.654e-05, 5.6e-05, 5.605e-05, 38313.18421641], [1517002020000, 5.619e-05, 5.645e-05, 5.619e-05, 5.62e-05, 11243.30121153], [1517002080000, 5.622e-05, 5.65e-05, 5.62e-05, 5.65e-05, 11244.40641202], [1517002140000, 5.649e-05, 5.65e-05, 5.625e-05, 5.648e-05, 877.52600992], [1517002200000, 5.648e-05, 5.648e-05, 5.625e-05, 5.626e-05, 2318.09207195], [1517002260000, 5.626e-05, 5.648e-05, 5.626e-05, 5.648e-05, 1426.43032048], [1517002320000, 5.625e-05, 5.648e-05, 5.625e-05, 5.626e-05, 6589.75428429], [1517002380000, 5.625e-05, 5.626e-05, 5.625e-05, 5.625e-05, 20368.7559811], [1517002440000, 5.626e-05, 5.645e-05, 5.626e-05, 5.645e-05, 4115.52303413], [1517002500000, 5.645e-05, 5.645e-05, 5.625e-05, 5.625e-05, 4126.9621381], [1517002560000, 5.625e-05, 5.645e-05, 5.625e-05, 5.645e-05, 3962.48426701], [1517002620000, 5.645e-05, 5.645e-05, 5.628e-05, 5.628e-05, 647.39291403], [1517002680000, 5.628e-05, 5.645e-05, 5.628e-05, 5.645e-05, 366.64015796], [1517002740000, 5.628e-05, 5.645e-05, 5.628e-05, 5.645e-05, 3162.26286845], [1517002800000, 5.645e-05, 5.645e-05, 5.625e-05, 5.64e-05, 2625.62248478], [1517002860000, 5.64e-05, 5.64e-05, 5.64e-05, 5.64e-05, 589.19035829], [1517002920000, 5.626e-05, 5.64e-05, 5.625e-05, 5.64e-05, 2759.35536616], [1517002980000, 5.64e-05, 5.64e-05, 5.626e-05, 5.64e-05, 7433.26751947], [1517003040000, 5.645e-05, 5.653e-05, 5.626e-05, 5.645e-05, 3434.65131827], [1517003100000, 5.645e-05, 5.645e-05, 5.645e-05, 5.645e-05, 238.77675562], [1517003160000, 5.644e-05, 5.644e-05, 5.626e-05, 5.644e-05, 3126.96366523], [1517003220000, 5.627e-05, 5.644e-05, 5.627e-05, 5.644e-05, 1450.0], [1517003280000, 5.644e-05, 5.645e-05, 5.644e-05, 5.645e-05, 4385.09920862], [1517003340000, 5.626e-05, 5.645e-05, 5.626e-05, 5.644e-05, 2245.87680182], [1517003400000, 5.644e-05, 5.645e-05, 5.644e-05, 5.645e-05, 789.49827076], [1517003460000, 5.645e-05, 5.645e-05, 5.644e-05, 5.644e-05, 1401.36411313], [1517003520000, 5.645e-05, 5.645e-05, 5.644e-05, 5.645e-05, 9113.23063576], [1517003580000, 5.645e-05, 5.645e-05, 5.644e-05, 5.645e-05, 37195.22693185], [1517003640000, 5.645e-05, 5.646e-05, 5.645e-05, 5.646e-05, 547.44890985], [1517003700000, 5.646e-05, 5.654e-05, 5.646e-05, 5.646e-05, 16084.64063726], [1517003760000, 5.646e-05, 5.646e-05, 5.644e-05, 5.644e-05, 6706.40989322], [1517003820000, 5.644e-05, 5.644e-05, 5.644e-05, 5.644e-05, 31243.81853985], [1517003880000, 5.644e-05, 5.644e-05, 5.627e-05, 5.627e-05, 1910.23946728], [1517003940000, 5.627e-05, 5.64e-05, 5.627e-05, 5.628e-05, 8426.85894215], [1517004000000, 5.628e-05, 5.628e-05, 5.627e-05, 5.628e-05, 19385.03514201], [1517004060000, 5.628e-05, 5.628e-05, 5.627e-05, 5.628e-05, 4966.58582448], [1517004120000, 5.627e-05, 5.628e-05, 5.626e-05, 5.628e-05, 17427.5250614], [1517004180000, 5.628e-05, 5.628e-05, 5.627e-05, 5.628e-05, 28377.10162883], [1517004240000, 5.628e-05, 5.64e-05, 5.628e-05, 5.64e-05, 2398.64484863], [1517004300000, 5.64e-05, 5.64e-05, 5.64e-05, 5.64e-05, 1944.31365972], [1517004360000, 5.64e-05, 5.642e-05, 5.631e-05, 5.641e-05, 38908.25276189], [1517004420000, 5.641e-05, 5.661e-05, 5.641e-05, 5.661e-05, 23919.19895634], [1517004480000, 5.661e-05, 5.661e-05, 5.65e-05, 5.65e-05, 1509.71559795], [1517004540000, 5.65e-05, 5.65e-05, 5.65e-05, 5.65e-05, 60.0], [1517004600000, 5.641e-05, 5.65e-05, 5.641e-05, 5.641e-05, 20817.26366949], [1517004660000, 5.642e-05, 5.659e-05, 5.641e-05, 5.659e-05, 10562.92787278], [1517004720000, 5.641e-05, 5.659e-05, 5.641e-05, 5.659e-05, 7556.90055843], [1517004780000, 5.655e-05, 5.66e-05, 5.638e-05, 5.659e-05, 6002.3861694], [1517004840000, 5.659e-05, 5.66e-05, 5.638e-05, 5.639e-05, 4008.38322647], [1517004900000, 5.639e-05, 5.658e-05, 5.639e-05, 5.642e-05, 1772.50232906], [1517004960000, 5.642e-05, 5.642e-05, 5.634e-05, 5.642e-05, 13984.13871293], [1517005020000, 5.657e-05, 5.657e-05, 5.642e-05, 5.642e-05, 1347.93172405], [1517005080000, 5.642e-05, 5.642e-05, 5.634e-05, 5.635e-05, 2753.75790503], [1517005140000, 5.635e-05, 5.635e-05, 5.634e-05, 5.635e-05, 4114.7122115], [1517005200000, 5.635e-05, 5.635e-05, 5.631e-05, 5.631e-05, 755.1444923], [1517005260000, 5.631e-05, 5.634e-05, 5.629e-05, 5.631e-05, 14458.3661102], [1517005320000, 5.631e-05, 5.65e-05, 5.63e-05, 5.649e-05, 10590.88098068], [1517005380000, 5.649e-05, 5.649e-05, 5.636e-05, 5.645e-05, 3910.17203009], [1517005440000, 5.641e-05, 5.645e-05, 5.641e-05, 5.644e-05, 10805.24802375], [1517005500000, 5.642e-05, 5.642e-05, 5.641e-05, 5.642e-05, 19257.4329979], [1517005560000, 5.641e-05, 5.642e-05, 5.641e-05, 5.641e-05, 24489.57738578], [1517005620000, 5.636e-05, 5.641e-05, 5.63e-05, 5.632e-05, 10958.89901837], [1517005680000, 5.632e-05, 5.641e-05, 5.632e-05, 5.633e-05, 7575.97215157], [1517005740000, 5.64e-05, 5.642e-05, 5.633e-05, 5.633e-05, 24154.07097765], [1517005800000, 5.633e-05, 5.641e-05, 5.633e-05, 5.641e-05, 4735.62083004], [1517005860000, 5.64e-05, 5.642e-05, 5.636e-05, 5.636e-05, 28574.89627099], [1517005920000, 5.637e-05, 5.642e-05, 5.637e-05, 5.637e-05, 6451.0706314], [1517005980000, 5.642e-05, 5.642e-05, 5.636e-05, 5.637e-05, 102055.23415144], [1517006040000, 5.636e-05, 5.642e-05, 5.632e-05, 5.642e-05, 34716.31055271], [1517006100000, 5.642e-05, 5.642e-05, 5.634e-05, 5.634e-05, 20311.52916071], [1517006160000, 5.634e-05, 5.642e-05, 5.633e-05, 5.636e-05, 41760.54562427], [1517006220000, 5.642e-05, 5.651e-05, 5.634e-05, 5.65e-05, 34561.33235486], [1517006280000, 5.641e-05, 5.65e-05, 5.641e-05, 5.642e-05, 16868.49230126], [1517006340000, 5.642e-05, 5.642e-05, 5.641e-05, 5.641e-05, 5784.46306771], [1517006400000, 5.642e-05, 5.642e-05, 5.641e-05, 5.642e-05, 43434.51501356], [1517006460000, 5.633e-05, 5.64e-05, 5.633e-05, 5.64e-05, 46256.60592925], [1517006520000, 5.64e-05, 5.64e-05, 5.636e-05, 5.636e-05, 5992.91540667], [1517006580000, 5.64e-05, 5.64e-05, 5.637e-05, 5.638e-05, 17973.18174535], [1517006640000, 5.638e-05, 5.64e-05, 5.638e-05, 5.638e-05, 14900.10370751], [1517006700000, 5.64e-05, 5.64e-05, 5.638e-05, 5.64e-05, 46672.57318715], [1517006760000, 5.638e-05, 5.64e-05, 5.625e-05, 5.64e-05, 38226.25794565], [1517006820000, 5.64e-05, 5.64e-05, 5.623e-05, 5.624e-05, 8842.59133984], [1517006880000, 5.64e-05, 5.64e-05, 5.624e-05, 5.626e-05, 14639.72290685], [1517006940000, 5.626e-05, 5.632e-05, 5.62e-05, 5.62e-05, 18780.39936077], [1517007000000, 5.621e-05, 5.642e-05, 5.621e-05, 5.642e-05, 35612.69116036], [1517007060000, 5.62e-05, 5.631e-05, 5.62e-05, 5.631e-05, 778.97270125], [1517007120000, 5.631e-05, 5.641e-05, 5.621e-05, 5.631e-05, 3786.28737087], [1517007180000, 5.635e-05, 5.641e-05, 5.632e-05, 5.635e-05, 5623.35618899], [1517007240000, 5.635e-05, 5.641e-05, 5.615e-05, 5.641e-05, 11321.90039694], [1517007300000, 5.641e-05, 5.642e-05, 5.641e-05, 5.641e-05, 4906.2069652], [1517007360000, 5.641e-05, 5.641e-05, 5.615e-05, 5.615e-05, 28728.51239972], [1517007420000, 5.615e-05, 5.64e-05, 5.594e-05, 5.64e-05, 158516.29428773], [1517007480000, 5.639e-05, 5.639e-05, 5.639e-05, 5.639e-05, 55.16632508], [1517007540000, 5.639e-05, 5.642e-05, 5.639e-05, 5.642e-05, 23567.58946295], [1517007600000, 5.64e-05, 5.64e-05, 5.64e-05, 5.64e-05, 12073.17964375], [1517007660000, 5.64e-05, 5.64e-05, 5.616e-05, 5.616e-05, 1227.24244074], [1517007720000, 5.64e-05, 5.64e-05, 5.635e-05, 5.64e-05, 7179.89162707], [1517007780000, 5.64e-05, 5.64e-05, 5.631e-05, 5.631e-05, 1165.21763261], [1517007840000, 5.631e-05, 5.631e-05, 5.63e-05, 5.63e-05, 1765.28226527], [1517007900000, 5.63e-05, 5.631e-05, 5.617e-05, 5.63e-05, 43845.28895542], [1517007960000, 5.63e-05, 5.631e-05, 5.616e-05, 5.618e-05, 7152.7066032], [1517008020000, 5.619e-05, 5.631e-05, 5.619e-05, 5.631e-05, 15222.28361579], [1517008080000, 5.631e-05, 5.631e-05, 5.622e-05, 5.622e-05, 19410.74939833], [1517008140000, 5.622e-05, 5.622e-05, 5.622e-05, 5.622e-05, 1800.0], [1517008200000, 5.622e-05, 5.622e-05, 5.621e-05, 5.622e-05, 8758.97801109], [1517008260000, 5.621e-05, 5.621e-05, 5.585e-05, 5.585e-05, 16562.41561278], [1517008320000, 5.621e-05, 5.621e-05, 5.585e-05, 5.621e-05, 18744.58730034], [1517008380000, 5.619e-05, 5.623e-05, 5.619e-05, 5.623e-05, 31687.33361254], [1517008440000, 5.63e-05, 5.631e-05, 5.623e-05, 5.625e-05, 4534.52606944], [1517008500000, 5.631e-05, 5.631e-05, 5.631e-05, 5.631e-05, 250.01696546], [1517008560000, 5.625e-05, 5.631e-05, 5.625e-05, 5.631e-05, 11880.45775217], [1517008620000, 5.631e-05, 5.639e-05, 5.627e-05, 5.639e-05, 52582.05155444], [1517008680000, 5.642e-05, 5.659e-05, 5.628e-05, 5.658e-05, 11458.93841072], [1517008740000, 5.649e-05, 5.658e-05, 5.639e-05, 5.64e-05, 4793.17253008], [1517008800000, 5.64e-05, 5.65e-05, 5.639e-05, 5.65e-05, 10623.46501228], [1517008860000, 5.65e-05, 5.658e-05, 5.65e-05, 5.65e-05, 20325.71521165], [1517008920000, 5.65e-05, 5.655e-05, 5.65e-05, 5.65e-05, 24077.97963263], [1517008980000, 5.65e-05, 5.653e-05, 5.639e-05, 5.639e-05, 66880.21937755], [1517009040000, 5.639e-05, 5.65e-05, 5.639e-05, 5.639e-05, 1007.66848936], [1517009100000, 5.64e-05, 5.649e-05, 5.626e-05, 5.626e-05, 42241.30120333], [1517009160000, 5.626e-05, 5.626e-05, 5.625e-05, 5.625e-05, 2603.00767848], [1517009220000, 5.625e-05, 5.639e-05, 5.625e-05, 5.639e-05, 1307.65056525], [1517009280000, 5.639e-05, 5.639e-05, 5.639e-05, 5.639e-05, 3448.10076255], [1517009340000, 5.627e-05, 5.639e-05, 5.625e-05, 5.627e-05, 26094.58057182], [1517009400000, 5.627e-05, 5.627e-05, 5.625e-05, 5.625e-05, 8683.10985766], [1517009460000, 5.619e-05, 5.619e-05, 5.601e-05, 5.61e-05, 7190.95683105], [1517009520000, 5.61e-05, 5.61e-05, 5.601e-05, 5.61e-05, 48542.32442873], [1517009580000, 5.601e-05, 5.61e-05, 5.601e-05, 5.601e-05, 3289.27066402], [1517009640000, 5.601e-05, 5.601e-05, 5.594e-05, 5.594e-05, 61220.54272523], [1517009700000, 5.594e-05, 5.594e-05, 5.593e-05, 5.593e-05, 6306.74773786], [1517009760000, 5.593e-05, 5.599e-05, 5.555e-05, 5.591e-05, 125375.19466088], [1517009820000, 5.591e-05, 5.594e-05, 5.573e-05, 5.577e-05, 95320.84340246], [1517009880000, 5.577e-05, 5.599e-05, 5.573e-05, 5.599e-05, 21429.82129885], [1517009940000, 5.595e-05, 5.601e-05, 5.595e-05, 5.6e-05, 28679.5785504], [1517010000000, 5.599e-05, 5.624e-05, 5.599e-05, 5.624e-05, 11834.11109639], [1517010060000, 5.612e-05, 5.625e-05, 5.612e-05, 5.625e-05, 8170.13396453], [1517010120000, 5.627e-05, 5.639e-05, 5.568e-05, 5.568e-05, 35638.21459675], [1517010180000, 5.629e-05, 5.629e-05, 5.589e-05, 5.627e-05, 3240.26133856], [1517010240000, 5.627e-05, 5.629e-05, 5.627e-05, 5.627e-05, 6119.85193291], [1517010300000, 5.627e-05, 5.629e-05, 5.627e-05, 5.628e-05, 4607.37440924], [1517010360000, 5.627e-05, 5.628e-05, 5.627e-05, 5.628e-05, 733.49636888], [1517010420000, 5.628e-05, 5.65e-05, 5.627e-05, 5.65e-05, 30760.54145765], [1517010480000, 5.628e-05, 5.628e-05, 5.627e-05, 5.628e-05, 1747.97130988], [1517010540000, 5.628e-05, 5.628e-05, 5.627e-05, 5.628e-05, 4183.37436783], [1517010600000, 5.628e-05, 5.628e-05, 5.627e-05, 5.627e-05, 3333.41922971], [1517010660000, 5.601e-05, 5.628e-05, 5.601e-05, 5.627e-05, 6638.11807267], [1517010720000, 5.627e-05, 5.628e-05, 5.627e-05, 5.627e-05, 2153.63466222], [1517010780000, 5.602e-05, 5.624e-05, 5.601e-05, 5.624e-05, 7421.46524956], [1517010840000, 5.623e-05, 5.623e-05, 5.6e-05, 5.6e-05, 1922.71852539], [1517010900000, 5.61e-05, 5.621e-05, 5.601e-05, 5.601e-05, 1118.7589798], [1517010960000, 5.601e-05, 5.601e-05, 5.573e-05, 5.595e-05, 12844.37598733], [1517011020000, 5.595e-05, 5.6e-05, 5.579e-05, 5.6e-05, 11647.80671079], [1517011080000, 5.601e-05, 5.602e-05, 5.595e-05, 5.602e-05, 19745.76469306], [1517011140000, 5.618e-05, 5.618e-05, 5.595e-05, 5.618e-05, 7311.96461127], [1517011200000, 5.618e-05, 5.62e-05, 5.595e-05, 5.62e-05, 7044.79176128], [1517011260000, 5.62e-05, 5.62e-05, 5.618e-05, 5.618e-05, 23179.76832514], [1517011320000, 5.617e-05, 5.618e-05, 5.595e-05, 5.595e-05, 5292.26289981], [1517011380000, 5.595e-05, 5.618e-05, 5.595e-05, 5.595e-05, 8114.9512554], [1517011440000, 5.595e-05, 5.616e-05, 5.574e-05, 5.584e-05, 5475.06825002], [1517011500000, 5.584e-05, 5.584e-05, 5.58e-05, 5.583e-05, 13112.83830246], [1517011560000, 5.583e-05, 5.583e-05, 5.571e-05, 5.571e-05, 17802.97912119], [1517011620000, 5.571e-05, 5.571e-05, 5.566e-05, 5.568e-05, 36329.10901121], [1517011680000, 5.568e-05, 5.585e-05, 5.568e-05, 5.585e-05, 149398.12808566], [1517011740000, 5.585e-05, 5.616e-05, 5.585e-05, 5.588e-05, 4285.39536956], [1517011800000, 5.588e-05, 5.616e-05, 5.588e-05, 5.588e-05, 5741.20321648], [1517011860000, 5.61e-05, 5.61e-05, 5.588e-05, 5.588e-05, 1199.46005457], [1517011920000, 5.588e-05, 5.588e-05, 5.568e-05, 5.568e-05, 6673.10068244], [1517011980000, 5.568e-05, 5.588e-05, 5.568e-05, 5.588e-05, 35720.87292364], [1517012040000, 5.608e-05, 5.608e-05, 5.588e-05, 5.59e-05, 4627.28484624], [1517012100000, 5.591e-05, 5.607e-05, 5.59e-05, 5.607e-05, 11892.11116793], [1517012160000, 5.59e-05, 5.61e-05, 5.59e-05, 5.59e-05, 7248.18474432], [1517012220000, 5.591e-05, 5.61e-05, 5.59e-05, 5.59e-05, 1934.75935828], [1517012280000, 5.593e-05, 5.61e-05, 5.592e-05, 5.61e-05, 1556.51604612], [1517012340000, 5.61e-05, 5.61e-05, 5.592e-05, 5.592e-05, 29356.68280407], [1517012400000, 5.593e-05, 5.593e-05, 5.592e-05, 5.593e-05, 2536.40595402], [1517012460000, 5.601e-05, 5.601e-05, 5.592e-05, 5.592e-05, 13765.20370851], [1517012520000, 5.593e-05, 5.593e-05, 5.59e-05, 5.59e-05, 112117.48414022], [1517012580000, 5.59e-05, 5.591e-05, 5.588e-05, 5.59e-05, 44166.66133798], [1517012640000, 5.589e-05, 5.59e-05, 5.589e-05, 5.589e-05, 14140.97405825], [1517012700000, 5.589e-05, 5.59e-05, 5.588e-05, 5.59e-05, 5341.68784734], [1517012760000, 5.588e-05, 5.59e-05, 5.588e-05, 5.59e-05, 2761.45967257], [1517012820000, 5.588e-05, 5.589e-05, 5.588e-05, 5.588e-05, 8163.37763844], [1517012880000, 5.588e-05, 5.59e-05, 5.569e-05, 5.569e-05, 8560.38122842], [1517012940000, 5.581e-05, 5.581e-05, 5.569e-05, 5.569e-05, 2940.44198901], [1517013000000, 5.569e-05, 5.569e-05, 5.564e-05, 5.564e-05, 14853.41623347], [1517013060000, 5.569e-05, 5.581e-05, 5.569e-05, 5.569e-05, 6623.65016833], [1517013120000, 5.581e-05, 5.581e-05, 5.564e-05, 5.564e-05, 3869.53151044], [1517013180000, 5.569e-05, 5.569e-05, 5.564e-05, 5.569e-05, 9612.26755156], [1517013240000, 5.569e-05, 5.58e-05, 5.564e-05, 5.565e-05, 12777.51220972], [1517013300000, 5.564e-05, 5.565e-05, 5.564e-05, 5.564e-05, 1832.86140475], [1517013360000, 5.564e-05, 5.565e-05, 5.563e-05, 5.563e-05, 9183.79756061], [1517013420000, 5.563e-05, 5.563e-05, 5.557e-05, 5.561e-05, 6946.73837188], [1517013480000, 5.557e-05, 5.565e-05, 5.555e-05, 5.555e-05, 31889.8432058], [1517013540000, 5.565e-05, 5.565e-05, 5.555e-05, 5.565e-05, 6102.6572174], [1517013600000, 5.555e-05, 5.579e-05, 5.555e-05, 5.565e-05, 4254.94868062], [1517013660000, 5.579e-05, 5.579e-05, 5.565e-05, 5.565e-05, 3556.75572431], [1517013720000, 5.572e-05, 5.579e-05, 5.567e-05, 5.567e-05, 5829.86686277], [1517013780000, 5.567e-05, 5.567e-05, 5.555e-05, 5.555e-05, 29370.55181813], [1517013840000, 5.556e-05, 5.566e-05, 5.556e-05, 5.556e-05, 8604.26589942], [1517013900000, 5.556e-05, 5.566e-05, 5.556e-05, 5.56e-05, 5971.42285635], [1517013960000, 5.557e-05, 5.557e-05, 5.555e-05, 5.556e-05, 20326.77266485], [1517014020000, 5.555e-05, 5.556e-05, 5.555e-05, 5.555e-05, 34094.57114524], [1517014080000, 5.555e-05, 5.556e-05, 5.555e-05, 5.555e-05, 165791.37403621], [1517014140000, 5.555e-05, 5.56e-05, 5.555e-05, 5.556e-05, 12521.02126503], [1517014200000, 5.557e-05, 5.56e-05, 5.556e-05, 5.56e-05, 11421.18045415], [1517014260000, 5.56e-05, 5.56e-05, 5.556e-05, 5.556e-05, 30634.62831773], [1517014320000, 5.556e-05, 5.556e-05, 5.555e-05, 5.556e-05, 2391.00306393], [1517014380000, 5.555e-05, 5.559e-05, 5.555e-05, 5.559e-05, 28946.30963519], [1517014440000, 5.559e-05, 5.559e-05, 5.555e-05, 5.555e-05, 16837.76176792], [1517014500000, 5.555e-05, 5.557e-05, 5.555e-05, 5.555e-05, 53038.96667289], [1517014560000, 5.555e-05, 5.556e-05, 5.555e-05, 5.555e-05, 20442.27700508], [1517014620000, 5.556e-05, 5.556e-05, 5.555e-05, 5.556e-05, 102650.52306671], [1517014680000, 5.555e-05, 5.556e-05, 5.555e-05, 5.556e-05, 21467.51827813], [1517014740000, 5.555e-05, 5.556e-05, 5.554e-05, 5.554e-05, 155850.01396634], [1517014800000, 5.553e-05, 5.553e-05, 5.55e-05, 5.55e-05, 20147.30069929], [1517014860000, 5.55e-05, 5.551e-05, 5.546e-05, 5.546e-05, 13009.53751055], [1517014920000, 5.546e-05, 5.549e-05, 5.539e-05, 5.549e-05, 92979.58782188], [1517014980000, 5.549e-05, 5.549e-05, 5.539e-05, 5.549e-05, 71378.50588472], [1517015040000, 5.543e-05, 5.543e-05, 5.543e-05, 5.543e-05, 6853.80772299], [1517015100000, 5.543e-05, 5.549e-05, 5.543e-05, 5.543e-05, 6762.45642291], [1517015160000, 5.543e-05, 5.549e-05, 5.54e-05, 5.543e-05, 47622.13585136], [1517015220000, 5.543e-05, 5.543e-05, 5.539e-05, 5.54e-05, 43702.69592074], [1517015280000, 5.539e-05, 5.54e-05, 5.539e-05, 5.54e-05, 136864.00504717], [1517015340000, 5.54e-05, 5.54e-05, 5.539e-05, 5.539e-05, 134814.9511556], [1517015400000, 5.539e-05, 5.54e-05, 5.539e-05, 5.539e-05, 194050.66677117], [1517015460000, 5.539e-05, 5.539e-05, 5.538e-05, 5.538e-05, 22544.3922356], [1517015520000, 5.538e-05, 5.538e-05, 5.535e-05, 5.536e-05, 5845.21847074], [1517015580000, 5.536e-05, 5.536e-05, 5.532e-05, 5.532e-05, 51221.63976262], [1517015640000, 5.532e-05, 5.535e-05, 5.532e-05, 5.535e-05, 138235.81132445], [1517015700000, 5.532e-05, 5.536e-05, 5.532e-05, 5.535e-05, 78902.04446727], [1517015760000, 5.535e-05, 5.536e-05, 5.532e-05, 5.533e-05, 85443.03877697], [1517015820000, 5.532e-05, 5.532e-05, 5.52e-05, 5.52e-05, 57140.30195885], [1517015880000, 5.52e-05, 5.52e-05, 5.516e-05, 5.52e-05, 9793.20140375], [1517015940000, 5.52e-05, 5.521e-05, 5.516e-05, 5.52e-05, 13976.2504931], [1517016000000, 5.52e-05, 5.521e-05, 5.52e-05, 5.521e-05, 7688.9631725], [1517016060000, 5.521e-05, 5.521e-05, 5.521e-05, 5.521e-05, 5397.43574871], [1517016120000, 5.521e-05, 5.528e-05, 5.521e-05, 5.521e-05, 4398.68913632], [1517016180000, 5.521e-05, 5.532e-05, 5.505e-05, 5.532e-05, 54771.73685784], [1517016240000, 5.532e-05, 5.532e-05, 5.505e-05, 5.521e-05, 8293.69653546], [1517016300000, 5.52e-05, 5.521e-05, 5.518e-05, 5.518e-05, 1670.83399137], [1517016360000, 5.517e-05, 5.517e-05, 5.505e-05, 5.514e-05, 39346.01120342], [1517016420000, 5.512e-05, 5.513e-05, 5.505e-05, 5.513e-05, 12707.55364166], [1517016480000, 5.51e-05, 5.512e-05, 5.504e-05, 5.51e-05, 16868.99097602], [1517016540000, 5.512e-05, 5.512e-05, 5.507e-05, 5.507e-05, 10055.77257717], [1517016600000, 5.507e-05, 5.512e-05, 5.501e-05, 5.511e-05, 16781.48322406], [1517016660000, 5.507e-05, 5.512e-05, 5.507e-05, 5.509e-05, 28433.80608813], [1517016720000, 5.507e-05, 5.513e-05, 5.5e-05, 5.513e-05, 49445.76019932], [1517016780000, 5.513e-05, 5.513e-05, 5.513e-05, 5.513e-05, 98356.53055224], [1517016840000, 5.514e-05, 5.514e-05, 5.513e-05, 5.514e-05, 10322.76859983], [1517016900000, 5.514e-05, 5.514e-05, 5.513e-05, 5.514e-05, 16298.29367936], [1517016960000, 5.514e-05, 5.515e-05, 5.513e-05, 5.515e-05, 57872.51468494], [1517017020000, 5.515e-05, 5.515e-05, 5.514e-05, 5.514e-05, 8401.3896275], [1517017080000, 5.514e-05, 5.515e-05, 5.514e-05, 5.515e-05, 20643.9433454], [1517017140000, 5.514e-05, 5.515e-05, 5.514e-05, 5.515e-05, 30617.51208702], [1517017200000, 5.515e-05, 5.515e-05, 5.515e-05, 5.515e-05, 22775.92304752], [1517017260000, 5.515e-05, 5.515e-05, 5.514e-05, 5.515e-05, 11611.38734282], [1517017320000, 5.514e-05, 5.517e-05, 5.514e-05, 5.517e-05, 1526.41580612], [1517017380000, 5.517e-05, 5.517e-05, 5.515e-05, 5.517e-05, 16826.60186439], [1517017440000, 5.517e-05, 5.517e-05, 5.514e-05, 5.516e-05, 8460.98562953], [1517017500000, 5.516e-05, 5.516e-05, 5.512e-05, 5.514e-05, 39890.46229874], [1517017560000, 5.514e-05, 5.514e-05, 5.5e-05, 5.514e-05, 49849.84612967], [1517017620000, 5.501e-05, 5.501e-05, 5.497e-05, 5.497e-05, 96162.99772482], [1517017680000, 5.497e-05, 5.514e-05, 5.497e-05, 5.514e-05, 11280.11027063], [1517017740000, 5.514e-05, 5.514e-05, 5.499e-05, 5.499e-05, 8387.55600865], [1517017800000, 5.512e-05, 5.512e-05, 5.496e-05, 5.496e-05, 6820.85484753], [1517017860000, 5.496e-05, 5.496e-05, 5.493e-05, 5.495e-05, 4462.9295199], [1517017920000, 5.495e-05, 5.496e-05, 5.491e-05, 5.493e-05, 15573.78779503], [1517017980000, 5.491e-05, 5.497e-05, 5.49e-05, 5.497e-05, 27273.9540906], [1517018040000, 5.497e-05, 5.514e-05, 5.497e-05, 5.514e-05, 6240.68204679], [1517018100000, 5.513e-05, 5.513e-05, 5.506e-05, 5.506e-05, 187.20096644], [1517018160000, 5.501e-05, 5.501e-05, 5.494e-05, 5.501e-05, 19524.07717402], [1517018220000, 5.5e-05, 5.5e-05, 5.495e-05, 5.499e-05, 868.43724922], [1517018280000, 5.499e-05, 5.505e-05, 5.499e-05, 5.505e-05, 38365.39985689], [1517018340000, 5.504e-05, 5.505e-05, 5.498e-05, 5.504e-05, 15806.66639232], [1517018400000, 5.5e-05, 5.5e-05, 5.481e-05, 5.5e-05, 6864.05607438], [1517018460000, 5.5e-05, 5.505e-05, 5.497e-05, 5.505e-05, 3848.62026109], [1517018520000, 5.505e-05, 5.505e-05, 5.5e-05, 5.505e-05, 8483.36461101], [1517018580000, 5.505e-05, 5.505e-05, 5.502e-05, 5.503e-05, 30301.32225476], [1517018640000, 5.504e-05, 5.505e-05, 5.503e-05, 5.504e-05, 44869.37037978], [1517018700000, 5.504e-05, 5.505e-05, 5.5e-05, 5.5e-05, 68982.33001713], [1517018760000, 5.5e-05, 5.5e-05, 5.497e-05, 5.497e-05, 14706.23309753], [1517018820000, 5.493e-05, 5.504e-05, 5.484e-05, 5.497e-05, 15413.45688834], [1517018880000, 5.497e-05, 5.497e-05, 5.494e-05, 5.496e-05, 3989.62533645], [1517018940000, 5.497e-05, 5.497e-05, 5.496e-05, 5.497e-05, 13356.23628248], [1517019000000, 5.497e-05, 5.497e-05, 5.496e-05, 5.497e-05, 11951.39071978], [1517019060000, 5.497e-05, 5.497e-05, 5.494e-05, 5.496e-05, 19035.29358164], [1517019120000, 5.496e-05, 5.5e-05, 5.496e-05, 5.5e-05, 16923.6229484], [1517019180000, 5.5e-05, 5.5e-05, 5.497e-05, 5.5e-05, 7670.73846612], [1517019240000, 5.5e-05, 5.504e-05, 5.497e-05, 5.497e-05, 4526.32091998], [1517019300000, 5.497e-05, 5.514e-05, 5.497e-05, 5.505e-05, 133734.14643898], [1517019360000, 5.505e-05, 5.514e-05, 5.505e-05, 5.513e-05, 2501.64860605], [1517019420000, 5.513e-05, 5.523e-05, 5.513e-05, 5.523e-05, 22776.35852945], [1517019480000, 5.523e-05, 5.523e-05, 5.482e-05, 5.505e-05, 34094.09645896], [1517019540000, 5.499e-05, 5.505e-05, 5.488e-05, 5.505e-05, 12476.7998293], [1517019600000, 5.505e-05, 5.505e-05, 5.505e-05, 5.505e-05, 6137.19244534], [1517019660000, 5.505e-05, 5.514e-05, 5.505e-05, 5.508e-05, 2396.37707839], [1517019720000, 5.508e-05, 5.508e-05, 5.506e-05, 5.507e-05, 5630.55590874], [1517019780000, 5.506e-05, 5.507e-05, 5.49e-05, 5.49e-05, 13052.32517155], [1517019840000, 5.506e-05, 5.506e-05, 5.49e-05, 5.5e-05, 226.6989485], [1517019900000, 5.499e-05, 5.499e-05, 5.495e-05, 5.495e-05, 2443.97724723], [1517019960000, 5.496e-05, 5.496e-05, 5.489e-05, 5.49e-05, 3986.53164597], [1517020020000, 5.49e-05, 5.49e-05, 5.487e-05, 5.487e-05, 10259.71984904], [1517020080000, 5.487e-05, 5.489e-05, 5.485e-05, 5.489e-05, 24398.84758712], [1517020140000, 5.489e-05, 5.489e-05, 5.488e-05, 5.489e-05, 51173.72390874], [1517020200000, 5.488e-05, 5.489e-05, 5.487e-05, 5.488e-05, 4153.60990144], [1517020260000, 5.488e-05, 5.488e-05, 5.487e-05, 5.487e-05, 4075.24182848], [1517020320000, 5.488e-05, 5.488e-05, 5.487e-05, 5.487e-05, 3747.72580613], [1517020380000, 5.488e-05, 5.488e-05, 5.488e-05, 5.488e-05, 19386.94517791], [1517020440000, 5.488e-05, 5.489e-05, 5.487e-05, 5.489e-05, 24074.91943785], [1517020500000, 5.489e-05, 5.489e-05, 5.486e-05, 5.487e-05, 26810.84355935], [1517020560000, 5.487e-05, 5.489e-05, 5.486e-05, 5.489e-05, 11925.90263354], [1517020620000, 5.489e-05, 5.489e-05, 5.485e-05, 5.489e-05, 41639.16742877], [1517020680000, 5.489e-05, 5.489e-05, 5.481e-05, 5.481e-05, 34576.10709847], [1517020740000, 5.485e-05, 5.489e-05, 5.485e-05, 5.489e-05, 74989.55696267], [1517020800000, 5.489e-05, 5.498e-05, 5.485e-05, 5.49e-05, 64333.80451953], [1517020860000, 5.498e-05, 5.514e-05, 5.498e-05, 5.508e-05, 9951.62496112], [1517020920000, 5.514e-05, 5.519e-05, 5.507e-05, 5.507e-05, 35613.12373089], [1517020980000, 5.507e-05, 5.529e-05, 5.507e-05, 5.523e-05, 38084.90755007], [1517021040000, 5.523e-05, 5.529e-05, 5.512e-05, 5.515e-05, 7839.32046069], [1517021100000, 5.529e-05, 5.538e-05, 5.514e-05, 5.537e-05, 13287.78498551], [1517021160000, 5.537e-05, 5.54e-05, 5.516e-05, 5.537e-05, 30108.22768912], [1517021220000, 5.522e-05, 5.531e-05, 5.517e-05, 5.531e-05, 3476.17038095], [1517021280000, 5.531e-05, 5.531e-05, 5.518e-05, 5.52e-05, 11320.49819207], [1517021340000, 5.52e-05, 5.52e-05, 5.517e-05, 5.517e-05, 4534.48428196], [1517021400000, 5.517e-05, 5.518e-05, 5.508e-05, 5.518e-05, 26953.43643953], [1517021460000, 5.51e-05, 5.518e-05, 5.508e-05, 5.51e-05, 4968.7498145], [1517021520000, 5.51e-05, 5.54e-05, 5.508e-05, 5.508e-05, 54731.44537668], [1517021580000, 5.54e-05, 5.54e-05, 5.509e-05, 5.513e-05, 5877.25368916], [1517021640000, 5.513e-05, 5.538e-05, 5.513e-05, 5.513e-05, 1551.05957214], [1517021700000, 5.518e-05, 5.518e-05, 5.513e-05, 5.518e-05, 21169.69319308], [1517021760000, 5.518e-05, 5.518e-05, 5.513e-05, 5.513e-05, 25497.38860708], [1517021820000, 5.513e-05, 5.514e-05, 5.51e-05, 5.514e-05, 13986.83249857], [1517021880000, 5.514e-05, 5.514e-05, 5.514e-05, 5.514e-05, 20944.49988036], [1517021940000, 5.514e-05, 5.514e-05, 5.514e-05, 5.514e-05, 8708.37407848], [1517022000000, 5.514e-05, 5.514e-05, 5.513e-05, 5.514e-05, 8546.70212113], [1517022060000, 5.514e-05, 5.514e-05, 5.514e-05, 5.514e-05, 25116.53158646], [1517022120000, 5.514e-05, 5.518e-05, 5.513e-05, 5.513e-05, 9292.60815584], [1517022180000, 5.513e-05, 5.513e-05, 5.51e-05, 5.51e-05, 26178.58074887], [1517022240000, 5.512e-05, 5.512e-05, 5.512e-05, 5.512e-05, 2640.36657752], [1517022300000, 5.512e-05, 5.512e-05, 5.51e-05, 5.51e-05, 14218.64985713], [1517022360000, 5.511e-05, 5.512e-05, 5.51e-05, 5.512e-05, 1751.91343439], [1517022420000, 5.511e-05, 5.512e-05, 5.5e-05, 5.5e-05, 22133.31782146], [1517022480000, 5.51e-05, 5.51e-05, 5.51e-05, 5.51e-05, 6176.68538008], [1517022540000, 5.51e-05, 5.552e-05, 5.51e-05, 5.51e-05, 158579.65688824], [1517022600000, 5.511e-05, 5.512e-05, 5.505e-05, 5.51e-05, 9045.31456717], [1517022660000, 5.511e-05, 5.511e-05, 5.506e-05, 5.509e-05, 3985.23147533], [1517022720000, 5.509e-05, 5.509e-05, 5.506e-05, 5.506e-05, 6616.62010684], [1517022780000, 5.506e-05, 5.506e-05, 5.496e-05, 5.5e-05, 45764.343707], [1517022840000, 5.496e-05, 5.5e-05, 5.489e-05, 5.5e-05, 36044.8892656], [1517022900000, 5.496e-05, 5.5e-05, 5.495e-05, 5.496e-05, 8977.39578231], [1517022960000, 5.495e-05, 5.496e-05, 5.495e-05, 5.495e-05, 15694.99048667], [1517023020000, 5.495e-05, 5.495e-05, 5.492e-05, 5.492e-05, 2916.27878003], [1517023080000, 5.492e-05, 5.494e-05, 5.49e-05, 5.49e-05, 11500.73417661], [1517023140000, 5.492e-05, 5.492e-05, 5.49e-05, 5.491e-05, 3613.99099325], [1517023200000, 5.491e-05, 5.491e-05, 5.485e-05, 5.485e-05, 6782.56964479], [1517023260000, 5.485e-05, 5.5e-05, 5.481e-05, 5.485e-05, 37121.81442867], [1517023320000, 5.485e-05, 5.499e-05, 5.48e-05, 5.499e-05, 698.81440314], [1517023380000, 5.499e-05, 5.499e-05, 5.499e-05, 5.499e-05, 55.99935851], [1517023440000, 5.499e-05, 5.499e-05, 5.489e-05, 5.498e-05, 1594.91065073], [1517023500000, 5.498e-05, 5.498e-05, 5.485e-05, 5.489e-05, 2007.91590069], [1517023560000, 5.498e-05, 5.498e-05, 5.476e-05, 5.476e-05, 17063.66457749], [1517023620000, 5.49e-05, 5.49e-05, 5.477e-05, 5.49e-05, 6167.90056248], [1517023680000, 5.49e-05, 5.49e-05, 5.476e-05, 5.476e-05, 14568.12126741], [1517023740000, 5.484e-05, 5.484e-05, 5.483e-05, 5.484e-05, 3466.05379045], [1517023800000, 5.484e-05, 5.484e-05, 5.479e-05, 5.484e-05, 3056.14591014], [1517023860000, 5.484e-05, 5.484e-05, 5.484e-05, 5.484e-05, 4426.82658698], [1517023920000, 5.48e-05, 5.484e-05, 5.48e-05, 5.484e-05, 10379.03402227], [1517023980000, 5.484e-05, 5.488e-05, 5.48e-05, 5.48e-05, 1789.56177606], [1517024040000, 5.484e-05, 5.484e-05, 5.474e-05, 5.474e-05, 32347.43420198], [1517024100000, 5.481e-05, 5.484e-05, 5.48e-05, 5.48e-05, 6840.53788957], [1517024160000, 5.48e-05, 5.48e-05, 5.474e-05, 5.48e-05, 6390.38263851], [1517024220000, 5.48e-05, 5.48e-05, 5.474e-05, 5.48e-05, 2857.96588221], [1517024280000, 5.48e-05, 5.48e-05, 5.474e-05, 5.474e-05, 11320.38422549], [1517024340000, 5.475e-05, 5.475e-05, 5.473e-05, 5.475e-05, 22965.64109705], [1517024400000, 5.474e-05, 5.475e-05, 5.472e-05, 5.472e-05, 16911.00240941], [1517024460000, 5.472e-05, 5.472e-05, 5.47e-05, 5.471e-05, 40132.18290375], [1517024520000, 5.472e-05, 5.476e-05, 5.472e-05, 5.475e-05, 21568.70867565], [1517024580000, 5.475e-05, 5.475e-05, 5.468e-05, 5.473e-05, 59839.49908622], [1517024640000, 5.473e-05, 5.473e-05, 5.469e-05, 5.469e-05, 11279.0658536], [1517024700000, 5.473e-05, 5.476e-05, 5.468e-05, 5.474e-05, 103902.35902581], [1517024760000, 5.474e-05, 5.476e-05, 5.468e-05, 5.476e-05, 2456.64879613], [1517024820000, 5.476e-05, 5.48e-05, 5.474e-05, 5.476e-05, 15132.34690104], [1517024880000, 5.476e-05, 5.476e-05, 5.474e-05, 5.476e-05, 846.42154959], [1517024940000, 5.476e-05, 5.476e-05, 5.474e-05, 5.474e-05, 11955.63558127], [1517025000000, 5.476e-05, 5.476e-05, 5.474e-05, 5.474e-05, 21745.15373778], [1517025060000, 5.474e-05, 5.474e-05, 5.469e-05, 5.47e-05, 11544.50877875], [1517025120000, 5.47e-05, 5.47e-05, 5.469e-05, 5.47e-05, 4730.71964182], [1517025180000, 5.47e-05, 5.473e-05, 5.469e-05, 5.473e-05, 15763.38461229], [1517025240000, 5.474e-05, 5.474e-05, 5.473e-05, 5.473e-05, 24257.82692578], [1517025300000, 5.471e-05, 5.472e-05, 5.471e-05, 5.472e-05, 2778.05835696], [1517025360000, 5.471e-05, 5.472e-05, 5.46e-05, 5.471e-05, 151320.37846731], [1517025420000, 5.471e-05, 5.472e-05, 5.463e-05, 5.47e-05, 6204.69548673], [1517025480000, 5.47e-05, 5.472e-05, 5.47e-05, 5.472e-05, 16535.59787386], [1517025540000, 5.472e-05, 5.472e-05, 5.47e-05, 5.472e-05, 1010.47340359], [1517025600000, 5.472e-05, 5.473e-05, 5.47e-05, 5.473e-05, 3263.05708109], [1517025660000, 5.472e-05, 5.48e-05, 5.472e-05, 5.472e-05, 146746.81656448], [1517025720000, 5.472e-05, 5.478e-05, 5.471e-05, 5.478e-05, 10510.26499656], [1517025780000, 5.478e-05, 5.478e-05, 5.473e-05, 5.478e-05, 4458.24091737], [1517025840000, 5.478e-05, 5.48e-05, 5.475e-05, 5.475e-05, 27011.76462806], [1517025900000, 5.475e-05, 5.48e-05, 5.473e-05, 5.475e-05, 93214.01201572], [1517025960000, 5.48e-05, 5.484e-05, 5.475e-05, 5.484e-05, 4865.63232163], [1517026020000, 5.484e-05, 5.5e-05, 5.484e-05, 5.485e-05, 9471.2114529], [1517026080000, 5.485e-05, 5.485e-05, 5.484e-05, 5.485e-05, 6881.36556034], [1517026140000, 5.485e-05, 5.485e-05, 5.484e-05, 5.485e-05, 13068.63644062], [1517026200000, 5.485e-05, 5.5e-05, 5.484e-05, 5.485e-05, 7887.92173991], [1517026260000, 5.485e-05, 5.498e-05, 5.485e-05, 5.485e-05, 869.37561747], [1517026320000, 5.485e-05, 5.497e-05, 5.485e-05, 5.485e-05, 218.60365908], [1517026380000, 5.485e-05, 5.498e-05, 5.485e-05, 5.498e-05, 18492.7833892], [1517026440000, 5.497e-05, 5.497e-05, 5.495e-05, 5.495e-05, 208.53954011], [1517026500000, 5.495e-05, 5.495e-05, 5.486e-05, 5.486e-05, 3235.25002244], [1517026560000, 5.486e-05, 5.486e-05, 5.485e-05, 5.486e-05, 1595.50869141], [1517026620000, 5.486e-05, 5.486e-05, 5.485e-05, 5.486e-05, 29934.48715929], [1517026680000, 5.486e-05, 5.486e-05, 5.486e-05, 5.486e-05, 15215.30040916], [1517026740000, 5.486e-05, 5.486e-05, 5.485e-05, 5.486e-05, 9617.74620115], [1517026800000, 5.486e-05, 5.486e-05, 5.486e-05, 5.486e-05, 3559.73142493], [1517026860000, 5.485e-05, 5.486e-05, 5.485e-05, 5.486e-05, 738.1505753], [1517026920000, 5.485e-05, 5.486e-05, 5.485e-05, 5.486e-05, 7300.58540953], [1517026980000, 5.485e-05, 5.486e-05, 5.485e-05, 5.486e-05, 13930.25127072], [1517027040000, 5.486e-05, 5.486e-05, 5.486e-05, 5.486e-05, 4546.9784909], [1517027100000, 5.485e-05, 5.486e-05, 5.485e-05, 5.486e-05, 28308.90023357], [1517027160000, 5.485e-05, 5.486e-05, 5.473e-05, 5.486e-05, 3025.16422834], [1517027220000, 5.486e-05, 5.486e-05, 5.476e-05, 5.486e-05, 8044.34818322], [1517027280000, 5.484e-05, 5.486e-05, 5.48e-05, 5.486e-05, 2252.9408716], [1517027340000, 5.486e-05, 5.486e-05, 5.482e-05, 5.482e-05, 9792.21829426], [1517027400000, 5.482e-05, 5.482e-05, 5.48e-05, 5.482e-05, 1834.52624874], [1517027460000, 5.482e-05, 5.486e-05, 5.482e-05, 5.486e-05, 26350.49049111], [1517027520000, 5.486e-05, 5.486e-05, 5.482e-05, 5.486e-05, 2609.65437958], [1517027580000, 5.486e-05, 5.486e-05, 5.486e-05, 5.486e-05, 1525.35013085], [1517027640000, 5.486e-05, 5.486e-05, 5.482e-05, 5.482e-05, 1864.73126617], [1517027700000, 5.475e-05, 5.482e-05, 5.475e-05, 5.482e-05, 655.53384088], [1517027760000, 5.482e-05, 5.486e-05, 5.475e-05, 5.486e-05, 5393.81376877], [1517027820000, 5.475e-05, 5.486e-05, 5.475e-05, 5.479e-05, 7140.54147052], [1517027880000, 5.479e-05, 5.485e-05, 5.479e-05, 5.485e-05, 4997.49755705], [1517027940000, 5.485e-05, 5.485e-05, 5.48e-05, 5.485e-05, 5399.72078617], [1517028000000, 5.485e-05, 5.485e-05, 5.485e-05, 5.485e-05, 1114.46122742], [1517028060000, 5.485e-05, 5.485e-05, 5.48e-05, 5.48e-05, 29207.00066987], [1517028120000, 5.48e-05, 5.481e-05, 5.477e-05, 5.481e-05, 13461.03301612], [1517028180000, 5.481e-05, 5.481e-05, 5.48e-05, 5.48e-05, 4992.26641098], [1517028240000, 5.481e-05, 5.481e-05, 5.48e-05, 5.481e-05, 1586.79396162], [1517028300000, 5.48e-05, 5.481e-05, 5.477e-05, 5.48e-05, 9025.80653307], [1517028360000, 5.481e-05, 5.481e-05, 5.48e-05, 5.481e-05, 2844.27791531], [1517028420000, 5.48e-05, 5.481e-05, 5.48e-05, 5.481e-05, 150.66175304], [1517028480000, 5.481e-05, 5.487e-05, 5.481e-05, 5.487e-05, 47445.76164082], [1517028540000, 5.5e-05, 5.5e-05, 5.499e-05, 5.499e-05, 40.18618304], [1517028600000, 5.499e-05, 5.5e-05, 5.497e-05, 5.499e-05, 9355.4818078], [1517028660000, 5.499e-05, 5.5e-05, 5.482e-05, 5.482e-05, 18405.44596402], [1517028720000, 5.482e-05, 5.499e-05, 5.482e-05, 5.499e-05, 4412.74111998], [1517028780000, 5.499e-05, 5.5e-05, 5.499e-05, 5.5e-05, 6232.66919607], [1517028840000, 5.499e-05, 5.5e-05, 5.485e-05, 5.5e-05, 13644.9586623], [1517028900000, 5.5e-05, 5.5e-05, 5.485e-05, 5.5e-05, 23336.06205997], [1517028960000, 5.5e-05, 5.5e-05, 5.499e-05, 5.499e-05, 1851.8139569], [1517029020000, 5.498e-05, 5.499e-05, 5.485e-05, 5.485e-05, 80483.65394267], [1517029080000, 5.499e-05, 5.499e-05, 5.498e-05, 5.498e-05, 2860.71532688], [1517029140000, 5.497e-05, 5.497e-05, 5.485e-05, 5.485e-05, 7256.08466938], [1517029200000, 5.485e-05, 5.486e-05, 5.48e-05, 5.48e-05, 41464.68347811], [1517029260000, 5.48e-05, 5.485e-05, 5.475e-05, 5.475e-05, 2618.66937048], [1517029320000, 5.475e-05, 5.484e-05, 5.475e-05, 5.484e-05, 1852.08372117], [1517029380000, 5.484e-05, 5.484e-05, 5.481e-05, 5.483e-05, 938.40300711], [1517029440000, 5.484e-05, 5.484e-05, 5.483e-05, 5.484e-05, 3914.20940727], [1517029500000, 5.485e-05, 5.485e-05, 5.485e-05, 5.485e-05, 17792.11025253], [1517029560000, 5.485e-05, 5.486e-05, 5.485e-05, 5.486e-05, 346.83809592], [1517029620000, 5.486e-05, 5.486e-05, 5.485e-05, 5.485e-05, 3851.0619377], [1517029680000, 5.486e-05, 5.486e-05, 5.485e-05, 5.485e-05, 613.80838241], [1517029740000, 5.485e-05, 5.486e-05, 5.485e-05, 5.486e-05, 4729.45354093], [1517029800000, 5.485e-05, 5.486e-05, 5.485e-05, 5.486e-05, 4145.07948698], [1517029860000, 5.485e-05, 5.485e-05, 5.484e-05, 5.485e-05, 8629.40486872], [1517029920000, 5.485e-05, 5.485e-05, 5.475e-05, 5.485e-05, 1907.7764902], [1517029980000, 5.484e-05, 5.484e-05, 5.484e-05, 5.484e-05, 139.50726757], [1517030040000, 5.484e-05, 5.484e-05, 5.476e-05, 5.481e-05, 7463.71171308], [1517030100000, 5.477e-05, 5.481e-05, 5.476e-05, 5.476e-05, 1322.11520856], [1517030160000, 5.478e-05, 5.478e-05, 5.476e-05, 5.478e-05, 540.26665052], [1517030220000, 5.478e-05, 5.481e-05, 5.466e-05, 5.475e-05, 31354.9493527], [1517030280000, 5.475e-05, 5.475e-05, 5.466e-05, 5.475e-05, 9943.20267942], [1517030340000, 5.475e-05, 5.475e-05, 5.472e-05, 5.475e-05, 5815.04927465], [1517030400000, 5.475e-05, 5.475e-05, 5.475e-05, 5.475e-05, 11810.85517755], [1517030460000, 5.475e-05, 5.481e-05, 5.473e-05, 5.477e-05, 1958.55152169], [1517030520000, 5.48e-05, 5.481e-05, 5.48e-05, 5.481e-05, 1014.59796958], [1517030580000, 5.481e-05, 5.481e-05, 5.481e-05, 5.481e-05, 268.70658935], [1517030640000, 5.484e-05, 5.484e-05, 5.478e-05, 5.484e-05, 4636.40186343], [1517030700000, 5.483e-05, 5.484e-05, 5.477e-05, 5.484e-05, 7295.76504754], [1517030760000, 5.484e-05, 5.484e-05, 5.478e-05, 5.478e-05, 14269.90151438], [1517030820000, 5.478e-05, 5.478e-05, 5.477e-05, 5.478e-05, 3969.55710982], [1517030880000, 5.478e-05, 5.484e-05, 5.477e-05, 5.484e-05, 2433.57624036], [1517030940000, 5.484e-05, 5.484e-05, 5.48e-05, 5.48e-05, 19491.48339312], [1517031000000, 5.48e-05, 5.498e-05, 5.48e-05, 5.498e-05, 74699.03239814], [1517031060000, 5.498e-05, 5.51e-05, 5.48e-05, 5.509e-05, 183160.70270846], [1517031120000, 5.509e-05, 5.51e-05, 5.5e-05, 5.51e-05, 154991.58738018], [1517031180000, 5.506e-05, 5.51e-05, 5.5e-05, 5.5e-05, 19537.63029874], [1517031240000, 5.5e-05, 5.501e-05, 5.5e-05, 5.5e-05, 91959.19608001], [1517031300000, 5.5e-05, 5.51e-05, 5.492e-05, 5.502e-05, 134059.99494513], [1517031360000, 5.502e-05, 5.51e-05, 5.501e-05, 5.501e-05, 106863.75505446], [1517031420000, 5.501e-05, 5.501e-05, 5.5e-05, 5.5e-05, 55921.90989829], [1517031480000, 5.49e-05, 5.5e-05, 5.488e-05, 5.489e-05, 159426.45344668], [1517031540000, 5.5e-05, 5.5e-05, 5.489e-05, 5.489e-05, 63199.44903578], [1517031600000, 5.493e-05, 5.51e-05, 5.489e-05, 5.5e-05, 136369.87450336], [1517031660000, 5.5e-05, 5.51e-05, 5.493e-05, 5.51e-05, 103670.78007679], [1517031720000, 5.51e-05, 5.535e-05, 5.504e-05, 5.529e-05, 66058.05789358], [1517031780000, 5.53e-05, 5.546e-05, 5.52e-05, 5.536e-05, 51265.67918504], [1517031840000, 5.536e-05, 5.556e-05, 5.533e-05, 5.536e-05, 35006.03576669], [1517031900000, 5.546e-05, 5.555e-05, 5.5e-05, 5.536e-05, 42631.79527337], [1517031960000, 5.536e-05, 5.552e-05, 5.522e-05, 5.552e-05, 72873.45780543], [1517032020000, 5.521e-05, 5.54e-05, 5.521e-05, 5.54e-05, 95281.33809545], [1517032080000, 5.54e-05, 5.54e-05, 5.531e-05, 5.54e-05, 12588.99519891], [1517032140000, 5.531e-05, 5.539e-05, 5.523e-05, 5.539e-05, 77636.40389757], [1517032200000, 5.531e-05, 5.531e-05, 5.524e-05, 5.526e-05, 77043.1030539], [1517032260000, 5.526e-05, 5.542e-05, 5.523e-05, 5.542e-05, 116624.67612681], [1517032320000, 5.551e-05, 5.552e-05, 5.541e-05, 5.545e-05, 14334.6917851], [1517032380000, 5.543e-05, 5.545e-05, 5.54e-05, 5.545e-05, 93704.56421003], [1517032440000, 5.53e-05, 5.547e-05, 5.53e-05, 5.545e-05, 13994.54685812], [1517032500000, 5.537e-05, 5.544e-05, 5.537e-05, 5.54e-05, 96.81709623], [1517032560000, 5.54e-05, 5.54e-05, 5.535e-05, 5.536e-05, 6128.09656544], [1517032620000, 5.536e-05, 5.54e-05, 5.535e-05, 5.535e-05, 3525.21766615], [1517032680000, 5.535e-05, 5.535e-05, 5.535e-05, 5.535e-05, 26938.4652473], [1517032740000, 5.526e-05, 5.535e-05, 5.511e-05, 5.535e-05, 7102.16893156], [1517032800000, 5.535e-05, 5.535e-05, 5.513e-05, 5.513e-05, 4758.28107048], [1517032860000, 5.513e-05, 5.513e-05, 5.513e-05, 5.513e-05, 11744.61238068], [1517032920000, 5.514e-05, 5.514e-05, 5.513e-05, 5.513e-05, 4470.00737954], [1517032980000, 5.513e-05, 5.514e-05, 5.513e-05, 5.513e-05, 1873.38528868], [1517033040000, 5.513e-05, 5.513e-05, 5.505e-05, 5.513e-05, 6618.94317798], [1517033100000, 5.502e-05, 5.513e-05, 5.501e-05, 5.513e-05, 13286.83796905], [1517033160000, 5.512e-05, 5.514e-05, 5.512e-05, 5.514e-05, 2708.92355364], [1517033220000, 5.514e-05, 5.514e-05, 5.514e-05, 5.514e-05, 628.05873649], [1517033340000, 5.514e-05, 5.52e-05, 5.514e-05, 5.52e-05, 123.33404928], [1517033400000, 5.532e-05, 5.532e-05, 5.531e-05, 5.531e-05, 421.41174335], [1517033460000, 5.532e-05, 5.534e-05, 5.532e-05, 5.534e-05, 6602.96890113], [1517033520000, 5.534e-05, 5.535e-05, 5.533e-05, 5.534e-05, 10537.35566615], [1517033580000, 5.534e-05, 5.534e-05, 5.534e-05, 5.534e-05, 8826.26735482], [1517033640000, 5.534e-05, 5.534e-05, 5.531e-05, 5.531e-05, 9628.20788506], [1517033700000, 5.531e-05, 5.531e-05, 5.531e-05, 5.531e-05, 700.32266861], [1517033760000, 5.523e-05, 5.523e-05, 5.501e-05, 5.501e-05, 3151.63860391], [1517033820000, 5.501e-05, 5.52e-05, 5.501e-05, 5.501e-05, 17150.60602064], [1517033880000, 5.501e-05, 5.52e-05, 5.501e-05, 5.52e-05, 2112.04439281], [1517033940000, 5.519e-05, 5.52e-05, 5.519e-05, 5.52e-05, 1302.37688245], [1517034000000, 5.531e-05, 5.531e-05, 5.531e-05, 5.531e-05, 666.28624854], [1517034060000, 5.532e-05, 5.533e-05, 5.531e-05, 5.531e-05, 4139.74855262], [1517034120000, 5.531e-05, 5.531e-05, 5.531e-05, 5.531e-05, 1057.91536526], [1517034180000, 5.531e-05, 5.531e-05, 5.522e-05, 5.531e-05, 1142.26863331], [1517034240000, 5.531e-05, 5.531e-05, 5.522e-05, 5.53e-05, 262.99711751], [1517034300000, 5.53e-05, 5.531e-05, 5.522e-05, 5.531e-05, 39418.32342866], [1517034360000, 5.53e-05, 5.53e-05, 5.528e-05, 5.528e-05, 586.95481992], [1517034420000, 5.528e-05, 5.53e-05, 5.528e-05, 5.528e-05, 3242.54069665], [1517034480000, 5.528e-05, 5.53e-05, 5.522e-05, 5.522e-05, 7144.55234698], [1517034540000, 5.522e-05, 5.525e-05, 5.505e-05, 5.525e-05, 17564.88151913], [1517034600000, 5.525e-05, 5.525e-05, 5.507e-05, 5.507e-05, 370.61971602], [1517034660000, 5.511e-05, 5.511e-05, 5.511e-05, 5.511e-05, 8000.0], [1517034720000, 5.514e-05, 5.514e-05, 5.514e-05, 5.514e-05, 1134.00829712], [1517034780000, 5.525e-05, 5.525e-05, 5.516e-05, 5.519e-05, 8907.28664673], [1517034840000, 5.528e-05, 5.528e-05, 5.52e-05, 5.525e-05, 24961.06549834], [1517034900000, 5.52e-05, 5.525e-05, 5.519e-05, 5.525e-05, 4565.05919112], [1517034960000, 5.528e-05, 5.53e-05, 5.52e-05, 5.52e-05, 33470.40729012], [1517035020000, 5.52e-05, 5.53e-05, 5.52e-05, 5.521e-05, 23595.47546944], [1517035080000, 5.52e-05, 5.54e-05, 5.52e-05, 5.54e-05, 98663.23061438], [1517035140000, 5.53e-05, 5.539e-05, 5.52e-05, 5.53e-05, 13604.50795192], [1517035200000, 5.52e-05, 5.54e-05, 5.52e-05, 5.525e-05, 689.30764922], [1517035260000, 5.528e-05, 5.546e-05, 5.528e-05, 5.54e-05, 51290.17994749], [1517035320000, 5.54e-05, 5.54e-05, 5.53e-05, 5.531e-05, 46114.212304], [1517035380000, 5.531e-05, 5.54e-05, 5.531e-05, 5.532e-05, 12665.32872422], [1517035440000, 5.532e-05, 5.532e-05, 5.52e-05, 5.531e-05, 33792.72451683], [1517035500000, 5.531e-05, 5.539e-05, 5.531e-05, 5.539e-05, 362.39960572], [1517035560000, 5.539e-05, 5.539e-05, 5.533e-05, 5.539e-05, 7932.97752904], [1517035620000, 5.539e-05, 5.54e-05, 5.532e-05, 5.532e-05, 91639.14336239], [1517035680000, 5.531e-05, 5.545e-05, 5.53e-05, 5.533e-05, 14309.86839174], [1517035740000, 5.545e-05, 5.547e-05, 5.535e-05, 5.535e-05, 23247.23104229], [1517035800000, 5.547e-05, 5.547e-05, 5.535e-05, 5.54e-05, 76924.34558014], [1517035860000, 5.547e-05, 5.547e-05, 5.541e-05, 5.541e-05, 13435.38092805], [1517035920000, 5.545e-05, 5.55e-05, 5.521e-05, 5.55e-05, 33368.77523613], [1517035980000, 5.533e-05, 5.551e-05, 5.533e-05, 5.55e-05, 12427.76282294], [1517036040000, 5.55e-05, 5.551e-05, 5.55e-05, 5.551e-05, 5628.83600207], [1517036100000, 5.551e-05, 5.551e-05, 5.523e-05, 5.55e-05, 26146.95339685], [1517036160000, 5.551e-05, 5.551e-05, 5.55e-05, 5.55e-05, 62631.10591868], [1517036220000, 5.55e-05, 5.551e-05, 5.55e-05, 5.55e-05, 8733.82594134], [1517036280000, 5.55e-05, 5.55e-05, 5.55e-05, 5.55e-05, 313.79299786], [1517036340000, 5.525e-05, 5.55e-05, 5.525e-05, 5.525e-05, 4988.94996368], [1517036400000, 5.525e-05, 5.55e-05, 5.524e-05, 5.55e-05, 23394.6088534], [1517036460000, 5.55e-05, 5.55e-05, 5.549e-05, 5.549e-05, 1221.98723678], [1517036520000, 5.549e-05, 5.549e-05, 5.525e-05, 5.529e-05, 10074.37093884], [1517036580000, 5.528e-05, 5.529e-05, 5.524e-05, 5.529e-05, 6177.52162869], [1517036640000, 5.529e-05, 5.55e-05, 5.529e-05, 5.55e-05, 7383.76613123], [1517036700000, 5.55e-05, 5.55e-05, 5.55e-05, 5.55e-05, 1315.02209571], [1517036760000, 5.539e-05, 5.55e-05, 5.539e-05, 5.548e-05, 5717.81263243], [1517036820000, 5.548e-05, 5.549e-05, 5.548e-05, 5.549e-05, 5169.88127074], [1517036880000, 5.549e-05, 5.549e-05, 5.529e-05, 5.548e-05, 6340.35068706], [1517036940000, 5.548e-05, 5.548e-05, 5.53e-05, 5.531e-05, 2586.53770787], [1517037000000, 5.533e-05, 5.533e-05, 5.532e-05, 5.533e-05, 17421.52091924], [1517037060000, 5.533e-05, 5.547e-05, 5.532e-05, 5.546e-05, 3413.12168235], [1517037120000, 5.546e-05, 5.55e-05, 5.546e-05, 5.55e-05, 22403.00771418], [1517037180000, 5.55e-05, 5.55e-05, 5.546e-05, 5.55e-05, 5894.4040815], [1517037240000, 5.55e-05, 5.55e-05, 5.55e-05, 5.55e-05, 10165.35419476], [1517037300000, 5.55e-05, 5.552e-05, 5.55e-05, 5.55e-05, 15159.47319981], [1517037360000, 5.552e-05, 5.552e-05, 5.55e-05, 5.55e-05, 11291.01375372], [1517037420000, 5.552e-05, 5.552e-05, 5.55e-05, 5.551e-05, 32735.77295825], [1517037480000, 5.55e-05, 5.551e-05, 5.55e-05, 5.55e-05, 41390.13076247], [1517037540000, 5.55e-05, 5.55e-05, 5.55e-05, 5.55e-05, 2863.57385583], [1517037600000, 5.55e-05, 5.551e-05, 5.546e-05, 5.546e-05, 83491.47291931], [1517037660000, 5.549e-05, 5.55e-05, 5.546e-05, 5.546e-05, 4260.72546482], [1517037720000, 5.546e-05, 5.547e-05, 5.53e-05, 5.53e-05, 5496.95588762], [1517037780000, 5.53e-05, 5.532e-05, 5.53e-05, 5.53e-05, 3763.96414566], [1517037840000, 5.531e-05, 5.545e-05, 5.53e-05, 5.545e-05, 1540.02625471], [1517037900000, 5.545e-05, 5.545e-05, 5.53e-05, 5.533e-05, 16557.64383446], [1517037960000, 5.539e-05, 5.545e-05, 5.535e-05, 5.545e-05, 40176.73089394], [1517038020000, 5.545e-05, 5.546e-05, 5.544e-05, 5.546e-05, 28907.49846544], [1517038080000, 5.546e-05, 5.546e-05, 5.544e-05, 5.544e-05, 3887.57789752], [1517038140000, 5.546e-05, 5.546e-05, 5.537e-05, 5.538e-05, 6455.42224884], [1517038200000, 5.543e-05, 5.544e-05, 5.543e-05, 5.544e-05, 5060.51120553], [1517038260000, 5.539e-05, 5.543e-05, 5.539e-05, 5.539e-05, 73.61527352], [1517038320000, 5.539e-05, 5.543e-05, 5.527e-05, 5.527e-05, 12305.99533219], [1517038380000, 5.539e-05, 5.539e-05, 5.521e-05, 5.521e-05, 16988.77071266], [1517038440000, 5.527e-05, 5.527e-05, 5.521e-05, 5.526e-05, 5518.50187524], [1517038500000, 5.527e-05, 5.54e-05, 5.527e-05, 5.529e-05, 22327.81227512], [1517038560000, 5.53e-05, 5.532e-05, 5.53e-05, 5.532e-05, 3257.04082208], [1517038620000, 5.532e-05, 5.534e-05, 5.532e-05, 5.534e-05, 4145.8517996], [1517038680000, 5.534e-05, 5.575e-05, 5.534e-05, 5.534e-05, 56629.27320579], [1517038740000, 5.536e-05, 5.563e-05, 5.528e-05, 5.532e-05, 21342.89225322], [1517038800000, 5.532e-05, 5.532e-05, 5.527e-05, 5.527e-05, 2999.88892762], [1517038860000, 5.532e-05, 5.532e-05, 5.527e-05, 5.532e-05, 96873.89147576], [1517038920000, 5.532e-05, 5.532e-05, 5.527e-05, 5.527e-05, 32666.49581634], [1517038980000, 5.532e-05, 5.533e-05, 5.527e-05, 5.533e-05, 58541.18858534], [1517039040000, 5.532e-05, 5.533e-05, 5.527e-05, 5.533e-05, 4753.22683564], [1517039100000, 5.531e-05, 5.533e-05, 5.527e-05, 5.532e-05, 31743.28289602], [1517039160000, 5.532e-05, 5.533e-05, 5.528e-05, 5.528e-05, 3761.44885868], [1517039220000, 5.528e-05, 5.533e-05, 5.528e-05, 5.532e-05, 2793.29226726], [1517039280000, 5.528e-05, 5.528e-05, 5.527e-05, 5.527e-05, 45161.09093266], [1517039340000, 5.528e-05, 5.528e-05, 5.522e-05, 5.522e-05, 2186.88428353], [1517039400000, 5.522e-05, 5.528e-05, 5.522e-05, 5.522e-05, 974.14876194], [1517039460000, 5.528e-05, 5.528e-05, 5.522e-05, 5.522e-05, 2534.53709074], [1517039520000, 5.522e-05, 5.524e-05, 5.522e-05, 5.523e-05, 3004.17006764], [1517039580000, 5.527e-05, 5.528e-05, 5.523e-05, 5.523e-05, 13346.11841664], [1517039640000, 5.528e-05, 5.528e-05, 5.523e-05, 5.523e-05, 31282.37114975], [1517039700000, 5.523e-05, 5.532e-05, 5.522e-05, 5.523e-05, 17298.45887995], [1517039760000, 5.522e-05, 5.523e-05, 5.522e-05, 5.522e-05, 269.46393163], [1517039820000, 5.522e-05, 5.533e-05, 5.522e-05, 5.523e-05, 8689.67012437], [1517039880000, 5.533e-05, 5.533e-05, 5.524e-05, 5.524e-05, 2115.78690213], [1517039940000, 5.524e-05, 5.524e-05, 5.522e-05, 5.522e-05, 2715.090266], [1517040000000, 5.522e-05, 5.523e-05, 5.522e-05, 5.522e-05, 3834.01521067], [1517040060000, 5.523e-05, 5.524e-05, 5.523e-05, 5.524e-05, 6474.75090053], [1517040120000, 5.533e-05, 5.533e-05, 5.524e-05, 5.524e-05, 53211.11860129], [1517040180000, 5.524e-05, 5.533e-05, 5.524e-05, 5.524e-05, 3754.18252558], [1517040240000, 5.525e-05, 5.533e-05, 5.524e-05, 5.533e-05, 1942.27171622], [1517040300000, 5.533e-05, 5.533e-05, 5.525e-05, 5.525e-05, 3207.52431582], [1517040360000, 5.525e-05, 5.526e-05, 5.525e-05, 5.525e-05, 5195.96714171], [1517040420000, 5.526e-05, 5.526e-05, 5.526e-05, 5.526e-05, 705.44124175], [1517040480000, 5.528e-05, 5.533e-05, 5.524e-05, 5.526e-05, 7968.50842888], [1517040540000, 5.527e-05, 5.527e-05, 5.527e-05, 5.527e-05, 84.89867038], [1517040600000, 5.531e-05, 5.531e-05, 5.527e-05, 5.528e-05, 4509.38325356], [1517040660000, 5.528e-05, 5.53e-05, 5.528e-05, 5.528e-05, 6837.44649309], [1517040720000, 5.531e-05, 5.531e-05, 5.528e-05, 5.531e-05, 2407.06356102], [1517040780000, 5.529e-05, 5.531e-05, 5.524e-05, 5.531e-05, 11441.3338197], [1517040840000, 5.525e-05, 5.531e-05, 5.523e-05, 5.523e-05, 13918.17372844], [1517040900000, 5.523e-05, 5.525e-05, 5.523e-05, 5.525e-05, 18884.96197719], [1517040960000, 5.525e-05, 5.533e-05, 5.523e-05, 5.523e-05, 18508.42528985], [1517041020000, 5.523e-05, 5.532e-05, 5.522e-05, 5.522e-05, 25324.93883033], [1517041080000, 5.523e-05, 5.532e-05, 5.522e-05, 5.522e-05, 12973.68167537], [1517041140000, 5.522e-05, 5.532e-05, 5.521e-05, 5.521e-05, 11877.17315962], [1517041200000, 5.523e-05, 5.532e-05, 5.518e-05, 5.518e-05, 574.45859698], [1517041260000, 5.518e-05, 5.529e-05, 5.512e-05, 5.512e-05, 13062.45428354], [1517041320000, 5.518e-05, 5.525e-05, 5.511e-05, 5.518e-05, 23864.08178569], [1517041380000, 5.525e-05, 5.525e-05, 5.511e-05, 5.512e-05, 8556.26047101], [1517041440000, 5.512e-05, 5.513e-05, 5.512e-05, 5.512e-05, 9359.50612175], [1517041500000, 5.515e-05, 5.519e-05, 5.511e-05, 5.519e-05, 24833.70122352], [1517041560000, 5.519e-05, 5.526e-05, 5.515e-05, 5.519e-05, 7834.5268622], [1517041620000, 5.519e-05, 5.52e-05, 5.513e-05, 5.517e-05, 20978.4477923], [1517041680000, 5.517e-05, 5.52e-05, 5.517e-05, 5.52e-05, 32438.87382588], [1517041740000, 5.52e-05, 5.52e-05, 5.513e-05, 5.514e-05, 21626.80299379], [1517041800000, 5.514e-05, 5.517e-05, 5.514e-05, 5.517e-05, 36723.70811429], [1517041860000, 5.517e-05, 5.517e-05, 5.514e-05, 5.514e-05, 916.32974916], [1517041920000, 5.514e-05, 5.52e-05, 5.511e-05, 5.512e-05, 41424.56180068], [1517041980000, 5.513e-05, 5.532e-05, 5.51e-05, 5.53e-05, 37947.56611698], [1517042040000, 5.52e-05, 5.53e-05, 5.514e-05, 5.529e-05, 23813.42783223], [1517042100000, 5.529e-05, 5.529e-05, 5.515e-05, 5.528e-05, 6648.69056428], [1517042160000, 5.518e-05, 5.526e-05, 5.514e-05, 5.517e-05, 10427.43856764], [1517042220000, 5.515e-05, 5.517e-05, 5.514e-05, 5.517e-05, 12294.01700994], [1517042280000, 5.529e-05, 5.531e-05, 5.518e-05, 5.519e-05, 42990.0107579], [1517042340000, 5.519e-05, 5.53e-05, 5.517e-05, 5.517e-05, 4003.2503857], [1517042400000, 5.527e-05, 5.528e-05, 5.514e-05, 5.517e-05, 1688.93407525], [1517042460000, 5.526e-05, 5.528e-05, 5.513e-05, 5.513e-05, 5074.2187181], [1517042520000, 5.513e-05, 5.515e-05, 5.507e-05, 5.513e-05, 9457.97696922], [1517042580000, 5.513e-05, 5.513e-05, 5.507e-05, 5.508e-05, 11765.23196295], [1517042640000, 5.509e-05, 5.523e-05, 5.509e-05, 5.509e-05, 25947.80868831], [1517042700000, 5.509e-05, 5.521e-05, 5.509e-05, 5.509e-05, 30213.49340133], [1517042760000, 5.509e-05, 5.512e-05, 5.5e-05, 5.51e-05, 121691.33459378], [1517042820000, 5.502e-05, 5.51e-05, 5.502e-05, 5.504e-05, 8123.59096147], [1517042880000, 5.503e-05, 5.509e-05, 5.503e-05, 5.503e-05, 14535.51197521], [1517042940000, 5.503e-05, 5.512e-05, 5.503e-05, 5.504e-05, 30983.47189113], [1517043000000, 5.504e-05, 5.521e-05, 5.504e-05, 5.508e-05, 22582.06503334], [1517043060000, 5.508e-05, 5.521e-05, 5.507e-05, 5.508e-05, 1771.27230151], [1517043120000, 5.508e-05, 5.521e-05, 5.503e-05, 5.503e-05, 26720.72295083], [1517043180000, 5.506e-05, 5.506e-05, 5.503e-05, 5.503e-05, 22633.0755645], [1517043240000, 5.503e-05, 5.51e-05, 5.503e-05, 5.504e-05, 6173.82889454], [1517043300000, 5.517e-05, 5.517e-05, 5.507e-05, 5.507e-05, 19694.96199793], [1517043360000, 5.509e-05, 5.517e-05, 5.507e-05, 5.51e-05, 40958.95188979], [1517043420000, 5.509e-05, 5.516e-05, 5.509e-05, 5.513e-05, 71182.56823338], [1517043480000, 5.507e-05, 5.513e-05, 5.507e-05, 5.51e-05, 12192.20704296], [1517043540000, 5.51e-05, 5.516e-05, 5.51e-05, 5.516e-05, 36631.12165181], [1517043600000, 5.509e-05, 5.516e-05, 5.509e-05, 5.51e-05, 30892.0599565], [1517043660000, 5.514e-05, 5.517e-05, 5.511e-05, 5.513e-05, 130823.25366378], [1517043720000, 5.513e-05, 5.517e-05, 5.512e-05, 5.512e-05, 30352.31711721], [1517043780000, 5.513e-05, 5.531e-05, 5.504e-05, 5.531e-05, 69003.14987377], [1517043840000, 5.508e-05, 5.53e-05, 5.508e-05, 5.512e-05, 13084.0680513], [1517043900000, 5.512e-05, 5.514e-05, 5.512e-05, 5.514e-05, 83906.39721886], [1517043960000, 5.513e-05, 5.526e-05, 5.504e-05, 5.504e-05, 11055.2386704], [1517044020000, 5.51e-05, 5.525e-05, 5.504e-05, 5.507e-05, 1878.2250302], [1517044080000, 5.524e-05, 5.524e-05, 5.507e-05, 5.524e-05, 1526.08764932], [1517044140000, 5.507e-05, 5.507e-05, 5.507e-05, 5.507e-05, 69.03994916], [1517044200000, 5.507e-05, 5.525e-05, 5.507e-05, 5.507e-05, 40797.43908893], [1517044260000, 5.523e-05, 5.523e-05, 5.507e-05, 5.509e-05, 1979.64660628], [1517044320000, 5.521e-05, 5.523e-05, 5.509e-05, 5.511e-05, 11577.68293382], [1517044380000, 5.512e-05, 5.512e-05, 5.511e-05, 5.511e-05, 14988.08306309], [1517044440000, 5.511e-05, 5.512e-05, 5.508e-05, 5.512e-05, 26235.11207332], [1517044500000, 5.508e-05, 5.512e-05, 5.508e-05, 5.512e-05, 22225.75238868], [1517044560000, 5.511e-05, 5.522e-05, 5.511e-05, 5.512e-05, 4689.19785673], [1517044620000, 5.512e-05, 5.517e-05, 5.511e-05, 5.511e-05, 638.19092852], [1517044680000, 5.511e-05, 5.522e-05, 5.507e-05, 5.507e-05, 27232.65876471], [1517044740000, 5.509e-05, 5.52e-05, 5.509e-05, 5.52e-05, 492.69619058], [1517044800000, 5.512e-05, 5.52e-05, 5.512e-05, 5.512e-05, 8570.01687521], [1517044860000, 5.512e-05, 5.519e-05, 5.512e-05, 5.513e-05, 646.95355282], [1517044920000, 5.518e-05, 5.52e-05, 5.512e-05, 5.513e-05, 5780.82511258], [1517044980000, 5.513e-05, 5.52e-05, 5.512e-05, 5.512e-05, 5340.6714449], [1517045040000, 5.512e-05, 5.515e-05, 5.511e-05, 5.511e-05, 641.43559049], [1517045100000, 5.511e-05, 5.521e-05, 5.509e-05, 5.509e-05, 7612.5667592], [1517045160000, 5.509e-05, 5.509e-05, 5.509e-05, 5.509e-05, 18884.88773683], [1517045220000, 5.509e-05, 5.51e-05, 5.509e-05, 5.509e-05, 1940.30961282], [1517045280000, 5.519e-05, 5.521e-05, 5.509e-05, 5.52e-05, 22716.92803144], [1517045340000, 5.509e-05, 5.509e-05, 5.509e-05, 5.509e-05, 24029.88844482], [1517045400000, 5.507e-05, 5.519e-05, 5.504e-05, 5.519e-05, 14930.33051429], [1517045460000, 5.51e-05, 5.52e-05, 5.51e-05, 5.51e-05, 1190.21494435], [1517045520000, 5.51e-05, 5.519e-05, 5.509e-05, 5.51e-05, 7483.45886069], [1517045580000, 5.509e-05, 5.509e-05, 5.509e-05, 5.509e-05, 404.29742075], [1517045640000, 5.504e-05, 5.508e-05, 5.504e-05, 5.504e-05, 444.7822243], [1517045700000, 5.504e-05, 5.506e-05, 5.501e-05, 5.504e-05, 25162.32757313], [1517045760000, 5.501e-05, 5.501e-05, 5.5e-05, 5.501e-05, 13860.06381053], [1517045820000, 5.501e-05, 5.506e-05, 5.496e-05, 5.496e-05, 6570.85162783], [1517045880000, 5.5e-05, 5.5e-05, 5.496e-05, 5.496e-05, 1446.56934072], [1517045940000, 5.496e-05, 5.5e-05, 5.495e-05, 5.495e-05, 23377.56182914], [1517046000000, 5.495e-05, 5.495e-05, 5.492e-05, 5.492e-05, 2067.67767568], [1517046060000, 5.491e-05, 5.491e-05, 5.49e-05, 5.49e-05, 5334.20103411], [1517046120000, 5.49e-05, 5.49e-05, 5.49e-05, 5.49e-05, 8238.16185484], [1517046180000, 5.489e-05, 5.49e-05, 5.488e-05, 5.488e-05, 6217.68897437], [1517046240000, 5.489e-05, 5.489e-05, 5.488e-05, 5.488e-05, 2863.45588835], [1517046300000, 5.486e-05, 5.488e-05, 5.485e-05, 5.486e-05, 2091.69678102], [1517046360000, 5.485e-05, 5.487e-05, 5.484e-05, 5.487e-05, 10348.20363808], [1517046420000, 5.487e-05, 5.488e-05, 5.487e-05, 5.487e-05, 7954.99102443], [1517046480000, 5.487e-05, 5.499e-05, 5.484e-05, 5.499e-05, 6722.72290285], [1517046540000, 5.484e-05, 5.501e-05, 5.481e-05, 5.484e-05, 83768.73425621], [1517046600000, 5.495e-05, 5.498e-05, 5.484e-05, 5.49e-05, 6882.37377657], [1517046660000, 5.49e-05, 5.495e-05, 5.489e-05, 5.489e-05, 47823.34381044], [1517046720000, 5.5e-05, 5.5e-05, 5.489e-05, 5.489e-05, 33456.72668857], [1517046780000, 5.49e-05, 5.499e-05, 5.489e-05, 5.493e-05, 60503.87058764], [1517046840000, 5.493e-05, 5.5e-05, 5.489e-05, 5.489e-05, 18024.89341471], [1517046900000, 5.498e-05, 5.498e-05, 5.489e-05, 5.49e-05, 5739.97680222], [1517046960000, 5.49e-05, 5.49e-05, 5.489e-05, 5.49e-05, 4093.2396744], [1517047020000, 5.49e-05, 5.5e-05, 5.488e-05, 5.489e-05, 15703.89177262], [1517047080000, 5.488e-05, 5.489e-05, 5.482e-05, 5.482e-05, 21911.81980162], [1517047140000, 5.489e-05, 5.498e-05, 5.489e-05, 5.489e-05, 24790.00121668], [1517047200000, 5.481e-05, 5.489e-05, 5.481e-05, 5.485e-05, 4656.86568763], [1517047260000, 5.489e-05, 5.491e-05, 5.487e-05, 5.487e-05, 32905.49038493], [1517047320000, 5.488e-05, 5.495e-05, 5.485e-05, 5.487e-05, 50151.84447188], [1517047380000, 5.494e-05, 5.494e-05, 5.487e-05, 5.494e-05, 2907.76383895], [1517047440000, 5.49e-05, 5.49e-05, 5.48e-05, 5.484e-05, 24130.02019864], [1517047500000, 5.484e-05, 5.494e-05, 5.477e-05, 5.494e-05, 43126.86114088], [1517047560000, 5.484e-05, 5.494e-05, 5.475e-05, 5.485e-05, 10241.03770047], [1517047620000, 5.487e-05, 5.49e-05, 5.487e-05, 5.49e-05, 5252.23361772], [1517047680000, 5.5e-05, 5.5e-05, 5.491e-05, 5.491e-05, 14367.43642829], [1517047740000, 5.491e-05, 5.501e-05, 5.487e-05, 5.487e-05, 16912.12150987], [1517047800000, 5.488e-05, 5.497e-05, 5.487e-05, 5.488e-05, 18895.55334954], [1517047860000, 5.488e-05, 5.498e-05, 5.47e-05, 5.481e-05, 14748.38734164], [1517047920000, 5.478e-05, 5.496e-05, 5.478e-05, 5.485e-05, 1946.59533804], [1517047980000, 5.485e-05, 5.492e-05, 5.485e-05, 5.491e-05, 33023.50704315], [1517048040000, 5.491e-05, 5.492e-05, 5.485e-05, 5.491e-05, 4398.44194606], [1517048100000, 5.491e-05, 5.491e-05, 5.47e-05, 5.472e-05, 176817.95618722], [1517048160000, 5.472e-05, 5.472e-05, 5.47e-05, 5.472e-05, 297262.57614063], [1517048220000, 5.47e-05, 5.472e-05, 5.47e-05, 5.471e-05, 20291.36244039], [1517048280000, 5.47e-05, 5.472e-05, 5.456e-05, 5.472e-05, 125496.24413639], [1517048340000, 5.46e-05, 5.472e-05, 5.46e-05, 5.472e-05, 103052.31599623], [1517048400000, 5.472e-05, 5.472e-05, 5.462e-05, 5.47e-05, 11977.13460294], [1517048460000, 5.472e-05, 5.472e-05, 5.46e-05, 5.46e-05, 80667.13241456], [1517048520000, 5.465e-05, 5.472e-05, 5.462e-05, 5.468e-05, 84331.59143667], [1517048580000, 5.468e-05, 5.472e-05, 5.46e-05, 5.472e-05, 72075.49313039], [1517048640000, 5.471e-05, 5.472e-05, 5.461e-05, 5.472e-05, 47131.30434667], [1517048700000, 5.472e-05, 5.472e-05, 5.472e-05, 5.472e-05, 84008.29542938], [1517048760000, 5.472e-05, 5.472e-05, 5.465e-05, 5.47e-05, 16603.32300576], [1517048820000, 5.47e-05, 5.47e-05, 5.465e-05, 5.47e-05, 2173.59343025], [1517048880000, 5.465e-05, 5.472e-05, 5.465e-05, 5.47e-05, 9445.209976], [1517048940000, 5.47e-05, 5.472e-05, 5.47e-05, 5.47e-05, 15513.87279734], [1517049000000, 5.472e-05, 5.472e-05, 5.46e-05, 5.461e-05, 16745.19918722], [1517049060000, 5.47e-05, 5.472e-05, 5.464e-05, 5.472e-05, 110895.34061004], [1517049120000, 5.472e-05, 5.472e-05, 5.465e-05, 5.471e-05, 32758.78521432], [1517049180000, 5.471e-05, 5.472e-05, 5.468e-05, 5.47e-05, 15013.27823242], [1517049240000, 5.472e-05, 5.472e-05, 5.47e-05, 5.47e-05, 100874.50655496], [1517049300000, 5.472e-05, 5.472e-05, 5.47e-05, 5.472e-05, 150355.42108252], [1517049360000, 5.472e-05, 5.472e-05, 5.47e-05, 5.471e-05, 100643.70016093], [1517049420000, 5.47e-05, 5.472e-05, 5.47e-05, 5.471e-05, 11723.08235552], [1517049480000, 5.471e-05, 5.471e-05, 5.464e-05, 5.467e-05, 4023.52865591], [1517049540000, 5.467e-05, 5.472e-05, 5.467e-05, 5.472e-05, 22111.61872346], [1517049600000, 5.472e-05, 5.472e-05, 5.464e-05, 5.467e-05, 2559.17755076], [1517049660000, 5.47e-05, 5.47e-05, 5.467e-05, 5.47e-05, 7544.51888334], [1517049720000, 5.47e-05, 5.471e-05, 5.468e-05, 5.468e-05, 9520.86206418], [1517049780000, 5.468e-05, 5.472e-05, 5.468e-05, 5.47e-05, 49399.25880513], [1517049840000, 5.47e-05, 5.472e-05, 5.469e-05, 5.469e-05, 77959.69701866], [1517049900000, 5.469e-05, 5.472e-05, 5.468e-05, 5.472e-05, 47945.40808361], [1517049960000, 5.468e-05, 5.472e-05, 5.468e-05, 5.47e-05, 28140.6622012], [1517050020000, 5.47e-05, 5.472e-05, 5.468e-05, 5.468e-05, 35840.84652463], [1517050080000, 5.468e-05, 5.472e-05, 5.468e-05, 5.469e-05, 20192.08508513], [1517050140000, 5.471e-05, 5.472e-05, 5.468e-05, 5.47e-05, 59702.86607598], [1517050200000, 5.472e-05, 5.472e-05, 5.469e-05, 5.469e-05, 35816.41197886], [1517050260000, 5.472e-05, 5.472e-05, 5.469e-05, 5.471e-05, 10782.19038881], [1517050320000, 5.469e-05, 5.472e-05, 5.469e-05, 5.472e-05, 67585.92316643], [1517050380000, 5.472e-05, 5.472e-05, 5.47e-05, 5.472e-05, 5917.70350489], [1517050440000, 5.47e-05, 5.472e-05, 5.47e-05, 5.472e-05, 20685.56310189], [1517050500000, 5.471e-05, 5.479e-05, 5.471e-05, 5.479e-05, 9237.66925871], [1517050560000, 5.479e-05, 5.491e-05, 5.475e-05, 5.475e-05, 67441.70618053], [1517050620000, 5.474e-05, 5.475e-05, 5.474e-05, 5.475e-05, 2356.82306602], [1517050680000, 5.474e-05, 5.475e-05, 5.472e-05, 5.472e-05, 8396.93661088], [1517050740000, 5.472e-05, 5.486e-05, 5.472e-05, 5.48e-05, 5469.94932247], [1517050800000, 5.475e-05, 5.475e-05, 5.473e-05, 5.475e-05, 730.6354982], [1517050860000, 5.473e-05, 5.475e-05, 5.47e-05, 5.473e-05, 11760.20739348], [1517050920000, 5.473e-05, 5.474e-05, 5.473e-05, 5.473e-05, 2101.49666376], [1517050980000, 5.47e-05, 5.47e-05, 5.467e-05, 5.467e-05, 1592.87818917], [1517051040000, 5.467e-05, 5.467e-05, 5.465e-05, 5.465e-05, 3508.29707014], [1517051100000, 5.465e-05, 5.465e-05, 5.464e-05, 5.464e-05, 4608.60084239], [1517051160000, 5.464e-05, 5.464e-05, 5.463e-05, 5.464e-05, 8724.89738303], [1517051220000, 5.464e-05, 5.47e-05, 5.461e-05, 5.463e-05, 63304.41971022], [1517051280000, 5.463e-05, 5.465e-05, 5.463e-05, 5.465e-05, 3259.7095081], [1517051340000, 5.47e-05, 5.475e-05, 5.47e-05, 5.471e-05, 20919.26533836], [1517051400000, 5.471e-05, 5.475e-05, 5.471e-05, 5.475e-05, 6324.54712913], [1517051460000, 5.472e-05, 5.474e-05, 5.472e-05, 5.472e-05, 7128.86697616], [1517051520000, 5.472e-05, 5.472e-05, 5.471e-05, 5.471e-05, 16173.41528487], [1517051580000, 5.47e-05, 5.471e-05, 5.446e-05, 5.454e-05, 160926.75568727], [1517051640000, 5.47e-05, 5.47e-05, 5.451e-05, 5.451e-05, 13647.1334602], [1517051700000, 5.46e-05, 5.47e-05, 5.453e-05, 5.47e-05, 3610.95008654], [1517051760000, 5.461e-05, 5.47e-05, 5.461e-05, 5.468e-05, 2940.18466166], [1517051820000, 5.468e-05, 5.47e-05, 5.461e-05, 5.47e-05, 4807.54706112], [1517051880000, 5.461e-05, 5.47e-05, 5.461e-05, 5.47e-05, 14175.68058027], [1517051940000, 5.468e-05, 5.493e-05, 5.453e-05, 5.469e-05, 52083.60981585], [1517052000000, 5.47e-05, 5.475e-05, 5.461e-05, 5.461e-05, 3770.07670559], [1517052060000, 5.462e-05, 5.488e-05, 5.461e-05, 5.461e-05, 26094.90855629], [1517052120000, 5.461e-05, 5.486e-05, 5.452e-05, 5.486e-05, 46371.72050227], [1517052180000, 5.465e-05, 5.485e-05, 5.461e-05, 5.484e-05, 8747.21386076], [1517052240000, 5.484e-05, 5.484e-05, 5.462e-05, 5.484e-05, 15744.15357751], [1517052300000, 5.483e-05, 5.484e-05, 5.461e-05, 5.464e-05, 27617.95577683], [1517052360000, 5.464e-05, 5.485e-05, 5.452e-05, 5.481e-05, 5078.24623048], [1517052420000, 5.465e-05, 5.481e-05, 5.465e-05, 5.465e-05, 1337.36767301], [1517052480000, 5.481e-05, 5.481e-05, 5.465e-05, 5.478e-05, 20359.93057011], [1517052540000, 5.478e-05, 5.481e-05, 5.469e-05, 5.47e-05, 33238.02632272], [1517052600000, 5.47e-05, 5.481e-05, 5.467e-05, 5.481e-05, 81986.59204778], [1517052660000, 5.481e-05, 5.482e-05, 5.467e-05, 5.467e-05, 21734.94567694], [1517052720000, 5.467e-05, 5.478e-05, 5.466e-05, 5.466e-05, 11405.14714569], [1517052780000, 5.467e-05, 5.478e-05, 5.466e-05, 5.467e-05, 112946.63319035], [1517052840000, 5.466e-05, 5.479e-05, 5.466e-05, 5.478e-05, 141546.67203404], [1517052900000, 5.47e-05, 5.478e-05, 5.47e-05, 5.472e-05, 3317.81350526], [1517052960000, 5.472e-05, 5.477e-05, 5.47e-05, 5.476e-05, 64578.89216777], [1517053020000, 5.472e-05, 5.476e-05, 5.47e-05, 5.47e-05, 22014.36938421], [1517053080000, 5.476e-05, 5.476e-05, 5.47e-05, 5.476e-05, 11982.43566], [1517053140000, 5.471e-05, 5.478e-05, 5.468e-05, 5.478e-05, 91621.02451187], [1517053200000, 5.478e-05, 5.479e-05, 5.477e-05, 5.477e-05, 88801.23530602], [1517053260000, 5.477e-05, 5.479e-05, 5.477e-05, 5.479e-05, 75355.42209312], [1517053320000, 5.471e-05, 5.484e-05, 5.471e-05, 5.482e-05, 100962.62665464], [1517053380000, 5.482e-05, 5.485e-05, 5.482e-05, 5.482e-05, 53425.53483962], [1517053440000, 5.486e-05, 5.486e-05, 5.481e-05, 5.482e-05, 23869.36438753], [1517053500000, 5.481e-05, 5.482e-05, 5.467e-05, 5.479e-05, 19816.63978269], [1517053560000, 5.478e-05, 5.485e-05, 5.469e-05, 5.469e-05, 42785.59833932], [1517053620000, 5.485e-05, 5.485e-05, 5.47e-05, 5.474e-05, 25362.52342883], [1517053680000, 5.474e-05, 5.485e-05, 5.473e-05, 5.477e-05, 87506.20084149], [1517053740000, 5.478e-05, 5.486e-05, 5.478e-05, 5.486e-05, 34878.81573575], [1517053800000, 5.486e-05, 5.488e-05, 5.478e-05, 5.482e-05, 29351.88339501], [1517053860000, 5.482e-05, 5.488e-05, 5.482e-05, 5.484e-05, 37055.36384158], [1517053920000, 5.485e-05, 5.488e-05, 5.483e-05, 5.487e-05, 79038.97213297], [1517053980000, 5.487e-05, 5.488e-05, 5.487e-05, 5.487e-05, 11533.26607055], [1517054040000, 5.483e-05, 5.487e-05, 5.483e-05, 5.487e-05, 19967.21487089], [1517054100000, 5.487e-05, 5.487e-05, 5.48e-05, 5.483e-05, 11721.36194049], [1517054160000, 5.483e-05, 5.484e-05, 5.477e-05, 5.477e-05, 22189.03047903], [1517054220000, 5.484e-05, 5.489e-05, 5.484e-05, 5.485e-05, 35922.26079659], [1517054280000, 5.487e-05, 5.489e-05, 5.487e-05, 5.489e-05, 2458.18548958], [1517054340000, 5.488e-05, 5.489e-05, 5.477e-05, 5.477e-05, 11392.22853855], [1517054400000, 5.489e-05, 5.489e-05, 5.478e-05, 5.478e-05, 4998.40690603], [1517054460000, 5.478e-05, 5.483e-05, 5.477e-05, 5.477e-05, 11098.22391062], [1517054520000, 5.483e-05, 5.489e-05, 5.453e-05, 5.483e-05, 31153.048101], [1517054580000, 5.483e-05, 5.49e-05, 5.455e-05, 5.455e-05, 18768.23733091], [1517054640000, 5.482e-05, 5.484e-05, 5.482e-05, 5.483e-05, 10277.00817957], [1517054700000, 5.483e-05, 5.484e-05, 5.483e-05, 5.483e-05, 8363.34781961], [1517054760000, 5.482e-05, 5.483e-05, 5.457e-05, 5.458e-05, 6303.45472141], [1517054820000, 5.483e-05, 5.484e-05, 5.483e-05, 5.483e-05, 2223.04862013], [1517054880000, 5.476e-05, 5.483e-05, 5.474e-05, 5.483e-05, 2242.16917644], [1517054940000, 5.482e-05, 5.482e-05, 5.472e-05, 5.474e-05, 316.61156985], [1517055000000, 5.475e-05, 5.483e-05, 5.475e-05, 5.482e-05, 27102.83113793], [1517055060000, 5.483e-05, 5.483e-05, 5.482e-05, 5.482e-05, 37085.94051758], [1517055120000, 5.481e-05, 5.482e-05, 5.47e-05, 5.47e-05, 2004.63565713], [1517055180000, 5.475e-05, 5.482e-05, 5.475e-05, 5.482e-05, 52382.73627295], [1517055240000, 5.481e-05, 5.483e-05, 5.477e-05, 5.483e-05, 43279.15555276], [1517055300000, 5.483e-05, 5.483e-05, 5.483e-05, 5.483e-05, 2404.84264043], [1517055360000, 5.478e-05, 5.478e-05, 5.477e-05, 5.478e-05, 8333.0854251], [1517055420000, 5.478e-05, 5.478e-05, 5.475e-05, 5.477e-05, 13642.86214737], [1517055480000, 5.475e-05, 5.475e-05, 5.471e-05, 5.471e-05, 11441.71822823], [1517055540000, 5.471e-05, 5.478e-05, 5.471e-05, 5.478e-05, 18030.78877341], [1517055600000, 5.475e-05, 5.478e-05, 5.471e-05, 5.475e-05, 6157.46218887], [1517055660000, 5.475e-05, 5.478e-05, 5.471e-05, 5.478e-05, 10175.80478769], [1517055720000, 5.478e-05, 5.478e-05, 5.476e-05, 5.476e-05, 11386.46104391], [1517055780000, 5.476e-05, 5.476e-05, 5.475e-05, 5.475e-05, 10734.33515846], [1517055840000, 5.476e-05, 5.476e-05, 5.475e-05, 5.475e-05, 8925.30951274], [1517055900000, 5.475e-05, 5.475e-05, 5.475e-05, 5.475e-05, 20657.52074264], [1517055960000, 5.475e-05, 5.478e-05, 5.472e-05, 5.478e-05, 51282.49929329], [1517056020000, 5.481e-05, 5.482e-05, 5.478e-05, 5.482e-05, 26655.61445721], [1517056080000, 5.482e-05, 5.484e-05, 5.478e-05, 5.478e-05, 48224.88323518], [1517056140000, 5.483e-05, 5.486e-05, 5.478e-05, 5.486e-05, 32395.8544292], [1517056200000, 5.485e-05, 5.486e-05, 5.485e-05, 5.486e-05, 13413.8638969], [1517056260000, 5.486e-05, 5.49e-05, 5.486e-05, 5.49e-05, 36078.83291741], [1517056320000, 5.49e-05, 5.499e-05, 5.488e-05, 5.499e-05, 15815.6427943], [1517056380000, 5.488e-05, 5.499e-05, 5.488e-05, 5.489e-05, 1100.75517017], [1517056440000, 5.499e-05, 5.499e-05, 5.489e-05, 5.499e-05, 18308.68925762], [1517056500000, 5.499e-05, 5.5e-05, 5.495e-05, 5.5e-05, 34717.24611021], [1517056560000, 5.5e-05, 5.505e-05, 5.497e-05, 5.497e-05, 51952.53881075], [1517056620000, 5.497e-05, 5.507e-05, 5.497e-05, 5.507e-05, 14117.50159021], [1517056680000, 5.507e-05, 5.508e-05, 5.497e-05, 5.507e-05, 2959.08326739], [1517056740000, 5.497e-05, 5.523e-05, 5.497e-05, 5.516e-05, 6351.38680289], [1517056800000, 5.516e-05, 5.518e-05, 5.497e-05, 5.497e-05, 2793.85225583], [1517056860000, 5.507e-05, 5.507e-05, 5.497e-05, 5.507e-05, 11578.60524042], [1517056920000, 5.505e-05, 5.505e-05, 5.498e-05, 5.498e-05, 11920.83033949], [1517056980000, 5.496e-05, 5.496e-05, 5.496e-05, 5.496e-05, 4743.29657805], [1517057040000, 5.507e-05, 5.507e-05, 5.507e-05, 5.507e-05, 9248.92216458], [1517057100000, 5.5e-05, 5.507e-05, 5.5e-05, 5.507e-05, 3548.68903991], [1517057160000, 5.5e-05, 5.507e-05, 5.5e-05, 5.501e-05, 10767.94667999], [1517057280000, 5.507e-05, 5.507e-05, 5.502e-05, 5.502e-05, 4473.45734196], [1517057340000, 5.502e-05, 5.504e-05, 5.502e-05, 5.502e-05, 2615.10236437], [1517057400000, 5.504e-05, 5.504e-05, 5.502e-05, 5.504e-05, 3127.6164814], [1517057460000, 5.502e-05, 5.504e-05, 5.502e-05, 5.504e-05, 20519.92537593], [1517057520000, 5.503e-05, 5.504e-05, 5.502e-05, 5.502e-05, 6763.97180637], [1517057580000, 5.503e-05, 5.503e-05, 5.502e-05, 5.502e-05, 6236.71350512], [1517057640000, 5.502e-05, 5.502e-05, 5.502e-05, 5.502e-05, 1473.06426616], [1517057700000, 5.502e-05, 5.504e-05, 5.501e-05, 5.504e-05, 6280.54004472], [1517057760000, 5.504e-05, 5.504e-05, 5.501e-05, 5.501e-05, 1986.10949576], [1517057820000, 5.502e-05, 5.504e-05, 5.498e-05, 5.498e-05, 18884.47987446], [1517057880000, 5.5e-05, 5.5e-05, 5.5e-05, 5.5e-05, 30.8623805], [1517057940000, 5.5e-05, 5.5e-05, 5.5e-05, 5.5e-05, 6066.95116753], [1517058000000, 5.5e-05, 5.5e-05, 5.498e-05, 5.5e-05, 4506.35366151], [1517058060000, 5.5e-05, 5.5e-05, 5.498e-05, 5.498e-05, 1035.54044526], [1517058120000, 5.498e-05, 5.5e-05, 5.498e-05, 5.5e-05, 24413.42273405], [1517058180000, 5.5e-05, 5.5e-05, 5.498e-05, 5.5e-05, 5269.25540654], [1517058240000, 5.498e-05, 5.498e-05, 5.498e-05, 5.498e-05, 2868.48921296], [1517058300000, 5.5e-05, 5.5e-05, 5.5e-05, 5.5e-05, 5029.26000973], [1517058360000, 5.5e-05, 5.501e-05, 5.5e-05, 5.501e-05, 5170.17018228], [1517058420000, 5.5e-05, 5.5e-05, 5.49e-05, 5.49e-05, 17347.95080785], [1517058480000, 5.49e-05, 5.49e-05, 5.488e-05, 5.489e-05, 3548.74653642], [1517058540000, 5.489e-05, 5.489e-05, 5.488e-05, 5.489e-05, 26811.98729581], [1517058600000, 5.489e-05, 5.489e-05, 5.488e-05, 5.489e-05, 6223.25541716], [1517058660000, 5.489e-05, 5.489e-05, 5.488e-05, 5.489e-05, 17186.56909137], [1517058720000, 5.489e-05, 5.489e-05, 5.489e-05, 5.489e-05, 14638.19665063], [1517058780000, 5.488e-05, 5.489e-05, 5.488e-05, 5.488e-05, 5613.28381154], [1517058840000, 5.488e-05, 5.489e-05, 5.488e-05, 5.489e-05, 2827.21469852], [1517058900000, 5.488e-05, 5.489e-05, 5.48e-05, 5.488e-05, 5821.38099489], [1517058960000, 5.48e-05, 5.48e-05, 5.479e-05, 5.479e-05, 277.02743016], [1517059020000, 5.482e-05, 5.483e-05, 5.482e-05, 5.482e-05, 611.51919132], [1517059080000, 5.482e-05, 5.504e-05, 5.482e-05, 5.483e-05, 27434.27656336], [1517059140000, 5.483e-05, 5.483e-05, 5.482e-05, 5.482e-05, 39666.29396078], [1517059200000, 5.482e-05, 5.482e-05, 5.48e-05, 5.482e-05, 8272.39003544], [1517059260000, 5.482e-05, 5.482e-05, 5.472e-05, 5.48e-05, 7502.99514392], [1517059320000, 5.48e-05, 5.48e-05, 5.48e-05, 5.48e-05, 11972.83138817], [1517059380000, 5.48e-05, 5.48e-05, 5.472e-05, 5.472e-05, 1421.8010704], [1517059440000, 5.473e-05, 5.473e-05, 5.472e-05, 5.473e-05, 15891.14740306], [1517059500000, 5.473e-05, 5.473e-05, 5.47e-05, 5.473e-05, 42155.36349656], [1517059560000, 5.471e-05, 5.473e-05, 5.47e-05, 5.473e-05, 24200.03278923], [1517059620000, 5.473e-05, 5.473e-05, 5.472e-05, 5.472e-05, 19499.06925241], [1517059680000, 5.472e-05, 5.473e-05, 5.472e-05, 5.472e-05, 20606.6364445], [1517059740000, 5.472e-05, 5.472e-05, 5.471e-05, 5.471e-05, 6072.68645662], [1517059800000, 5.471e-05, 5.472e-05, 5.47e-05, 5.472e-05, 9715.89584115], [1517059860000, 5.472e-05, 5.473e-05, 5.471e-05, 5.472e-05, 13390.52852777], [1517059920000, 5.472e-05, 5.473e-05, 5.47e-05, 5.471e-05, 13181.16661483], [1517059980000, 5.471e-05, 5.473e-05, 5.471e-05, 5.473e-05, 388.8767395], [1517060040000, 5.473e-05, 5.473e-05, 5.471e-05, 5.471e-05, 4088.17370958], [1517060100000, 5.471e-05, 5.473e-05, 5.471e-05, 5.473e-05, 18073.09283023], [1517060160000, 5.473e-05, 5.473e-05, 5.471e-05, 5.471e-05, 1295.94727259], [1517060220000, 5.471e-05, 5.473e-05, 5.471e-05, 5.471e-05, 8043.17588188], [1517060280000, 5.473e-05, 5.473e-05, 5.471e-05, 5.473e-05, 5007.98903204], [1517060340000, 5.471e-05, 5.473e-05, 5.471e-05, 5.473e-05, 12582.4857169], [1517060400000, 5.472e-05, 5.473e-05, 5.471e-05, 5.473e-05, 29641.5986004], [1517060460000, 5.471e-05, 5.473e-05, 5.471e-05, 5.473e-05, 29103.82855713], [1517060520000, 5.473e-05, 5.473e-05, 5.472e-05, 5.472e-05, 40186.01994768], [1517060580000, 5.472e-05, 5.473e-05, 5.472e-05, 5.473e-05, 21523.14954389], [1517060640000, 5.473e-05, 5.473e-05, 5.473e-05, 5.473e-05, 98725.05956504], [1517060700000, 5.473e-05, 5.473e-05, 5.472e-05, 5.472e-05, 42094.41513315], [1517060760000, 5.472e-05, 5.472e-05, 5.47e-05, 5.471e-05, 38461.98942597], [1517060820000, 5.471e-05, 5.472e-05, 5.47e-05, 5.472e-05, 19893.33939391], [1517060880000, 5.472e-05, 5.472e-05, 5.471e-05, 5.472e-05, 17976.37637392], [1517060940000, 5.472e-05, 5.472e-05, 5.472e-05, 5.472e-05, 2983.65803463], [1517061000000, 5.471e-05, 5.472e-05, 5.471e-05, 5.472e-05, 3362.81022962], [1517061060000, 5.472e-05, 5.472e-05, 5.471e-05, 5.471e-05, 2973.35128038], [1517061120000, 5.472e-05, 5.472e-05, 5.471e-05, 5.472e-05, 884.62417597], [1517061180000, 5.472e-05, 5.472e-05, 5.471e-05, 5.472e-05, 5996.98878692], [1517061240000, 5.472e-05, 5.472e-05, 5.471e-05, 5.471e-05, 13114.05858576], [1517061300000, 5.471e-05, 5.472e-05, 5.47e-05, 5.471e-05, 9998.9117105], [1517061360000, 5.471e-05, 5.472e-05, 5.471e-05, 5.471e-05, 13622.01662501], [1517061420000, 5.472e-05, 5.472e-05, 5.471e-05, 5.472e-05, 10682.56959833], [1517061480000, 5.471e-05, 5.472e-05, 5.47e-05, 5.472e-05, 91611.06081495], [1517061540000, 5.472e-05, 5.472e-05, 5.472e-05, 5.472e-05, 6894.76486684], [1517061600000, 5.471e-05, 5.472e-05, 5.471e-05, 5.472e-05, 3070.04260999], [1517061660000, 5.472e-05, 5.472e-05, 5.471e-05, 5.472e-05, 10040.10768655], [1517061720000, 5.471e-05, 5.472e-05, 5.47e-05, 5.47e-05, 13496.5350836], [1517061780000, 5.471e-05, 5.472e-05, 5.47e-05, 5.471e-05, 9465.26141977], [1517061840000, 5.47e-05, 5.471e-05, 5.47e-05, 5.471e-05, 9626.82635946], [1517061900000, 5.471e-05, 5.471e-05, 5.47e-05, 5.471e-05, 6884.40511132], [1517061960000, 5.47e-05, 5.471e-05, 5.47e-05, 5.471e-05, 4175.16716011], [1517062020000, 5.47e-05, 5.47e-05, 5.47e-05, 5.47e-05, 293.08170873], [1517062080000, 5.471e-05, 5.471e-05, 5.465e-05, 5.465e-05, 21286.02106603], [1517062140000, 5.465e-05, 5.47e-05, 5.465e-05, 5.469e-05, 4371.02061805], [1517062200000, 5.471e-05, 5.471e-05, 5.463e-05, 5.469e-05, 34773.32507726], [1517062260000, 5.469e-05, 5.471e-05, 5.469e-05, 5.469e-05, 13169.82269346], [1517062320000, 5.469e-05, 5.472e-05, 5.469e-05, 5.472e-05, 44587.30618664], [1517062380000, 5.472e-05, 5.504e-05, 5.469e-05, 5.471e-05, 15319.75930851], [1517062440000, 5.471e-05, 5.471e-05, 5.469e-05, 5.471e-05, 16625.1495936], [1517062500000, 5.47e-05, 5.471e-05, 5.47e-05, 5.471e-05, 20057.92665393], [1517062560000, 5.47e-05, 5.471e-05, 5.469e-05, 5.469e-05, 34259.69046827], [1517062620000, 5.471e-05, 5.471e-05, 5.47e-05, 5.471e-05, 2530.06539238], [1517062680000, 5.471e-05, 5.471e-05, 5.469e-05, 5.469e-05, 14327.3606668], [1517062740000, 5.47e-05, 5.471e-05, 5.47e-05, 5.47e-05, 12554.88362203], [1517062800000, 5.471e-05, 5.471e-05, 5.47e-05, 5.47e-05, 1045.40517867], [1517062860000, 5.47e-05, 5.47e-05, 5.47e-05, 5.47e-05, 2194.39023629], [1517062920000, 5.47e-05, 5.471e-05, 5.47e-05, 5.471e-05, 2792.50072977], [1517062980000, 5.471e-05, 5.471e-05, 5.47e-05, 5.471e-05, 1085.61965267], [1517063040000, 5.471e-05, 5.471e-05, 5.47e-05, 5.47e-05, 17856.65709902], [1517063100000, 5.471e-05, 5.471e-05, 5.47e-05, 5.47e-05, 8527.75171467], [1517063160000, 5.47e-05, 5.471e-05, 5.47e-05, 5.47e-05, 58051.22108209], [1517063220000, 5.47e-05, 5.501e-05, 5.47e-05, 5.501e-05, 8944.34788649], [1517063280000, 5.5e-05, 5.5e-05, 5.474e-05, 5.474e-05, 2415.37019471], [1517063340000, 5.474e-05, 5.498e-05, 5.474e-05, 5.476e-05, 3802.11483993], [1517063400000, 5.474e-05, 5.497e-05, 5.471e-05, 5.497e-05, 51107.32993254], [1517063460000, 5.495e-05, 5.497e-05, 5.495e-05, 5.497e-05, 12408.43249904], [1517063520000, 5.495e-05, 5.497e-05, 5.495e-05, 5.497e-05, 495.15366297], [1517063580000, 5.496e-05, 5.497e-05, 5.495e-05, 5.497e-05, 1033.77219755], [1517063640000, 5.478e-05, 5.478e-05, 5.472e-05, 5.472e-05, 6255.3819522], [1517063700000, 5.478e-05, 5.497e-05, 5.478e-05, 5.497e-05, 30385.77667743], [1517063760000, 5.495e-05, 5.496e-05, 5.495e-05, 5.495e-05, 16512.71251819], [1517063820000, 5.495e-05, 5.495e-05, 5.478e-05, 5.495e-05, 3559.40357432], [1517063880000, 5.495e-05, 5.495e-05, 5.478e-05, 5.495e-05, 29299.10209436], [1517063940000, 5.495e-05, 5.495e-05, 5.48e-05, 5.494e-05, 31545.38107778], [1517064000000, 5.493e-05, 5.494e-05, 5.493e-05, 5.493e-05, 2174.000226], [1517064060000, 5.493e-05, 5.493e-05, 5.486e-05, 5.486e-05, 4455.75872921], [1517064120000, 5.491e-05, 5.491e-05, 5.491e-05, 5.491e-05, 5399.30296167], [1517064180000, 5.491e-05, 5.491e-05, 5.486e-05, 5.491e-05, 4399.04938197], [1517064240000, 5.483e-05, 5.483e-05, 5.483e-05, 5.483e-05, 8291.1371391], [1517064300000, 5.491e-05, 5.491e-05, 5.483e-05, 5.489e-05, 29683.86753725], [1517064360000, 5.484e-05, 5.491e-05, 5.484e-05, 5.491e-05, 5490.86662123], [1517064420000, 5.484e-05, 5.484e-05, 5.484e-05, 5.484e-05, 27492.28732215], [1517064480000, 5.484e-05, 5.491e-05, 5.484e-05, 5.49e-05, 10366.45363452], [1517064540000, 5.49e-05, 5.49e-05, 5.483e-05, 5.483e-05, 17634.51558765], [1517064600000, 5.483e-05, 5.484e-05, 5.483e-05, 5.483e-05, 13777.18945254], [1517064660000, 5.483e-05, 5.484e-05, 5.483e-05, 5.484e-05, 1680.13253627], [1517064720000, 5.485e-05, 5.486e-05, 5.484e-05, 5.485e-05, 2190.27443657], [1517064780000, 5.485e-05, 5.485e-05, 5.484e-05, 5.485e-05, 2520.68579415], [1517064840000, 5.484e-05, 5.484e-05, 5.483e-05, 5.483e-05, 2173.14917746], [1517064900000, 5.483e-05, 5.484e-05, 5.483e-05, 5.483e-05, 23012.02471174], [1517064960000, 5.483e-05, 5.489e-05, 5.483e-05, 5.489e-05, 5793.19075715], [1517065020000, 5.488e-05, 5.489e-05, 5.488e-05, 5.489e-05, 278.95235608], [1517065080000, 5.489e-05, 5.489e-05, 5.488e-05, 5.489e-05, 10408.51726073], [1517065140000, 5.49e-05, 5.49e-05, 5.49e-05, 5.49e-05, 5457.18207374], [1517065200000, 5.489e-05, 5.49e-05, 5.488e-05, 5.49e-05, 10026.5303618], [1517065260000, 5.49e-05, 5.49e-05, 5.483e-05, 5.485e-05, 10484.75635945], [1517065320000, 5.486e-05, 5.486e-05, 5.485e-05, 5.485e-05, 2018.16575327], [1517065380000, 5.485e-05, 5.485e-05, 5.483e-05, 5.485e-05, 9669.25329879], [1517065440000, 5.484e-05, 5.485e-05, 5.484e-05, 5.485e-05, 2890.80321867], [1517065500000, 5.484e-05, 5.485e-05, 5.484e-05, 5.485e-05, 3787.35880703], [1517065560000, 5.488e-05, 5.495e-05, 5.485e-05, 5.485e-05, 6357.29286699], [1517065620000, 5.485e-05, 5.485e-05, 5.485e-05, 5.485e-05, 20.10027347], [1517065680000, 5.489e-05, 5.497e-05, 5.485e-05, 5.497e-05, 6179.10027347], [1517065740000, 5.497e-05, 5.5e-05, 5.497e-05, 5.5e-05, 4418.09906402], [1517065800000, 5.497e-05, 5.5e-05, 5.497e-05, 5.5e-05, 6097.21499704], [1517065860000, 5.5e-05, 5.5e-05, 5.497e-05, 5.497e-05, 2882.17398598], [1517065920000, 5.49e-05, 5.497e-05, 5.49e-05, 5.497e-05, 10973.9502518], [1517065980000, 5.495e-05, 5.497e-05, 5.495e-05, 5.495e-05, 3006.75627544], [1517066040000, 5.497e-05, 5.499e-05, 5.497e-05, 5.499e-05, 5763.60558216], [1517066100000, 5.497e-05, 5.503e-05, 5.497e-05, 5.503e-05, 17227.32446768], [1517066160000, 5.503e-05, 5.503e-05, 5.497e-05, 5.5e-05, 29930.61422923], [1517066220000, 5.497e-05, 5.497e-05, 5.491e-05, 5.491e-05, 4506.20764478], [1517066280000, 5.491e-05, 5.497e-05, 5.491e-05, 5.491e-05, 2827.08976573], [1517066340000, 5.491e-05, 5.497e-05, 5.491e-05, 5.497e-05, 7884.35656655], [1517066400000, 5.497e-05, 5.504e-05, 5.497e-05, 5.504e-05, 7616.09170377], [1517066460000, 5.504e-05, 5.504e-05, 5.497e-05, 5.499e-05, 11853.03826725], [1517066520000, 5.503e-05, 5.504e-05, 5.499e-05, 5.5e-05, 3748.7528585], [1517066580000, 5.503e-05, 5.503e-05, 5.499e-05, 5.499e-05, 388.84964089], [1517066640000, 5.499e-05, 5.5e-05, 5.499e-05, 5.5e-05, 9852.00028125], [1517066700000, 5.5e-05, 5.5e-05, 5.5e-05, 5.5e-05, 1212.66357225], [1517066760000, 5.503e-05, 5.504e-05, 5.5e-05, 5.503e-05, 3161.23682056], [1517066820000, 5.504e-05, 5.504e-05, 5.503e-05, 5.504e-05, 26442.90747237], [1517066880000, 5.504e-05, 5.504e-05, 5.503e-05, 5.503e-05, 3802.86590583], [1517066940000, 5.504e-05, 5.506e-05, 5.499e-05, 5.506e-05, 35592.51442024], [1517067000000, 5.505e-05, 5.506e-05, 5.505e-05, 5.505e-05, 3484.21768294], [1517067060000, 5.505e-05, 5.518e-05, 5.505e-05, 5.518e-05, 5337.93305194], [1517067120000, 5.506e-05, 5.518e-05, 5.506e-05, 5.506e-05, 28225.48165588], [1517067180000, 5.506e-05, 5.507e-05, 5.506e-05, 5.506e-05, 9538.72873288], [1517067240000, 5.506e-05, 5.518e-05, 5.504e-05, 5.518e-05, 36578.98975943], [1517067300000, 5.517e-05, 5.519e-05, 5.517e-05, 5.518e-05, 1185.89752273], [1517067360000, 5.518e-05, 5.52e-05, 5.517e-05, 5.517e-05, 27389.94170039], [1517067420000, 5.519e-05, 5.519e-05, 5.504e-05, 5.504e-05, 6321.66230995], [1517067480000, 5.504e-05, 5.504e-05, 5.48e-05, 5.495e-05, 48427.47975385], [1517067540000, 5.495e-05, 5.495e-05, 5.495e-05, 5.495e-05, 19091.51390373], [1517067600000, 5.495e-05, 5.495e-05, 5.481e-05, 5.483e-05, 5339.90411476], [1517067660000, 5.481e-05, 5.483e-05, 5.48e-05, 5.482e-05, 6443.87072393], [1517067720000, 5.482e-05, 5.484e-05, 5.481e-05, 5.484e-05, 5485.02151779], [1517067780000, 5.484e-05, 5.503e-05, 5.484e-05, 5.503e-05, 23169.99352525], [1517067840000, 5.503e-05, 5.503e-05, 5.484e-05, 5.5e-05, 6012.07659939], [1517067900000, 5.5e-05, 5.516e-05, 5.5e-05, 5.508e-05, 22831.76502371], [1517067960000, 5.508e-05, 5.509e-05, 5.508e-05, 5.509e-05, 2750.64369991], [1517068020000, 5.508e-05, 5.516e-05, 5.503e-05, 5.516e-05, 8404.74607032], [1517068080000, 5.515e-05, 5.516e-05, 5.512e-05, 5.516e-05, 8413.3205589], [1517068140000, 5.516e-05, 5.522e-05, 5.515e-05, 5.522e-05, 4349.33241592], [1517068200000, 5.523e-05, 5.531e-05, 5.522e-05, 5.531e-05, 18767.82219544], [1517068260000, 5.531e-05, 5.533e-05, 5.53e-05, 5.53e-05, 54322.17018649], [1517068320000, 5.53e-05, 5.532e-05, 5.522e-05, 5.522e-05, 8279.20088944], [1517068380000, 5.522e-05, 5.53e-05, 5.522e-05, 5.522e-05, 40160.5861989], [1517068440000, 5.523e-05, 5.523e-05, 5.522e-05, 5.522e-05, 13301.51044791], [1517068500000, 5.522e-05, 5.529e-05, 5.522e-05, 5.529e-05, 17145.00765615], [1517068560000, 5.529e-05, 5.53e-05, 5.522e-05, 5.522e-05, 8339.93089187], [1517068620000, 5.523e-05, 5.525e-05, 5.522e-05, 5.525e-05, 3770.93118436], [1517068680000, 5.525e-05, 5.528e-05, 5.52e-05, 5.522e-05, 14062.07730235], [1517068740000, 5.52e-05, 5.522e-05, 5.516e-05, 5.52e-05, 5231.87938211], [1517068800000, 5.521e-05, 5.521e-05, 5.49e-05, 5.49e-05, 23822.57001371], [1517068860000, 5.496e-05, 5.517e-05, 5.496e-05, 5.497e-05, 6290.33602022], [1517068920000, 5.497e-05, 5.5e-05, 5.484e-05, 5.496e-05, 10828.84756792], [1517068980000, 5.496e-05, 5.496e-05, 5.484e-05, 5.484e-05, 4179.00329474], [1517069040000, 5.484e-05, 5.485e-05, 5.48e-05, 5.485e-05, 32867.84442629], [1517069100000, 5.485e-05, 5.5e-05, 5.484e-05, 5.5e-05, 37277.56389037], [1517069160000, 5.5e-05, 5.5e-05, 5.485e-05, 5.485e-05, 2566.74003769], [1517069220000, 5.487e-05, 5.487e-05, 5.481e-05, 5.482e-05, 6095.45686937], [1517069280000, 5.484e-05, 5.485e-05, 5.482e-05, 5.482e-05, 1989.10239854], [1517069340000, 5.481e-05, 5.482e-05, 5.481e-05, 5.482e-05, 1149.93475496], [1517069400000, 5.482e-05, 5.482e-05, 5.481e-05, 5.482e-05, 30059.70169579], [1517069460000, 5.481e-05, 5.482e-05, 5.481e-05, 5.482e-05, 3298.11592916], [1517069520000, 5.481e-05, 5.483e-05, 5.48e-05, 5.48e-05, 12752.25129237], [1517069580000, 5.482e-05, 5.482e-05, 5.48e-05, 5.481e-05, 12440.93791978], [1517069640000, 5.482e-05, 5.485e-05, 5.482e-05, 5.482e-05, 9245.65192916], [1517069700000, 5.482e-05, 5.485e-05, 5.482e-05, 5.485e-05, 8919.21545056], [1517069760000, 5.485e-05, 5.485e-05, 5.481e-05, 5.481e-05, 675.61490894], [1517069820000, 5.485e-05, 5.485e-05, 5.48e-05, 5.48e-05, 3893.69054759], [1517069880000, 5.499e-05, 5.499e-05, 5.475e-05, 5.476e-05, 26987.35977672], [1517069940000, 5.475e-05, 5.498e-05, 5.475e-05, 5.498e-05, 16719.94726422], [1517070000000, 5.476e-05, 5.499e-05, 5.476e-05, 5.499e-05, 2483.14701223], [1517070060000, 5.499e-05, 5.499e-05, 5.48e-05, 5.48e-05, 2619.69515613], [1517070120000, 5.48e-05, 5.498e-05, 5.48e-05, 5.498e-05, 7880.29065315], [1517070180000, 5.498e-05, 5.499e-05, 5.498e-05, 5.498e-05, 7913.52092694], [1517070240000, 5.498e-05, 5.499e-05, 5.485e-05, 5.499e-05, 3850.86640673], [1517070300000, 5.485e-05, 5.498e-05, 5.485e-05, 5.489e-05, 5502.6899344], [1517070360000, 5.489e-05, 5.498e-05, 5.488e-05, 5.49e-05, 14240.73195883], [1517070420000, 5.488e-05, 5.488e-05, 5.486e-05, 5.486e-05, 1696.34289269], [1517070480000, 5.487e-05, 5.488e-05, 5.48e-05, 5.486e-05, 4990.35961908], [1517070540000, 5.486e-05, 5.49e-05, 5.46e-05, 5.47e-05, 175912.47702569], [1517070600000, 5.488e-05, 5.488e-05, 5.473e-05, 5.488e-05, 1459.45092249], [1517070660000, 5.488e-05, 5.488e-05, 5.473e-05, 5.488e-05, 4052.04916352], [1517070720000, 5.488e-05, 5.488e-05, 5.475e-05, 5.476e-05, 11086.61146124], [1517070780000, 5.476e-05, 5.476e-05, 5.475e-05, 5.476e-05, 43399.14615428], [1517070840000, 5.475e-05, 5.476e-05, 5.475e-05, 5.475e-05, 11116.9043282], [1517070900000, 5.475e-05, 5.476e-05, 5.472e-05, 5.476e-05, 34964.98656762], [1517070960000, 5.476e-05, 5.476e-05, 5.461e-05, 5.47e-05, 12691.82874578], [1517071020000, 5.47e-05, 5.47e-05, 5.461e-05, 5.47e-05, 20008.43125334], [1517071080000, 5.468e-05, 5.47e-05, 5.468e-05, 5.47e-05, 2189.01606499], [1517071140000, 5.475e-05, 5.479e-05, 5.475e-05, 5.478e-05, 6430.05142775], [1517071200000, 5.476e-05, 5.479e-05, 5.47e-05, 5.479e-05, 20976.08378752], [1517071260000, 5.479e-05, 5.479e-05, 5.476e-05, 5.479e-05, 5185.88107597], [1517071320000, 5.479e-05, 5.479e-05, 5.476e-05, 5.476e-05, 2029.3617302], [1517071380000, 5.478e-05, 5.479e-05, 5.478e-05, 5.479e-05, 629.38330399], [1517071440000, 5.479e-05, 5.48e-05, 5.478e-05, 5.479e-05, 6250.7928811], [1517071500000, 5.478e-05, 5.479e-05, 5.478e-05, 5.479e-05, 1875.27216391], [1517071560000, 5.479e-05, 5.479e-05, 5.478e-05, 5.478e-05, 5666.32096489], [1517071620000, 5.479e-05, 5.479e-05, 5.476e-05, 5.476e-05, 8986.23021391], [1517071680000, 5.476e-05, 5.478e-05, 5.476e-05, 5.476e-05, 1307.8511447], [1517071740000, 5.476e-05, 5.476e-05, 5.448e-05, 5.476e-05, 100569.17704539], [1517071800000, 5.476e-05, 5.476e-05, 5.467e-05, 5.467e-05, 2006.91405397], [1517071860000, 5.467e-05, 5.467e-05, 5.458e-05, 5.466e-05, 9128.9505235], [1517071920000, 5.466e-05, 5.467e-05, 5.456e-05, 5.457e-05, 32936.85607206], [1517071980000, 5.457e-05, 5.458e-05, 5.457e-05, 5.457e-05, 23495.05441673], [1517072040000, 5.458e-05, 5.46e-05, 5.457e-05, 5.457e-05, 4477.98720684], [1517072100000, 5.457e-05, 5.457e-05, 5.443e-05, 5.444e-05, 119489.80898988], [1517072160000, 5.445e-05, 5.46e-05, 5.444e-05, 5.46e-05, 44931.38596162], [1517072220000, 5.458e-05, 5.46e-05, 5.45e-05, 5.458e-05, 10324.06071446], [1517072280000, 5.451e-05, 5.451e-05, 5.439e-05, 5.45e-05, 43799.22893915], [1517072340000, 5.448e-05, 5.451e-05, 5.448e-05, 5.449e-05, 17155.84863569], [1517072400000, 5.449e-05, 5.479e-05, 5.448e-05, 5.449e-05, 63301.27143378], [1517072460000, 5.467e-05, 5.467e-05, 5.448e-05, 5.465e-05, 34095.61100033], [1517072520000, 5.465e-05, 5.466e-05, 5.45e-05, 5.465e-05, 2955.22123264], [1517072580000, 5.46e-05, 5.464e-05, 5.46e-05, 5.46e-05, 19557.00302669], [1517072640000, 5.462e-05, 5.464e-05, 5.46e-05, 5.46e-05, 24174.16540215], [1517072700000, 5.461e-05, 5.464e-05, 5.461e-05, 5.464e-05, 58893.55194363], [1517072760000, 5.464e-05, 5.478e-05, 5.461e-05, 5.463e-05, 51665.66345462], [1517072820000, 5.462e-05, 5.479e-05, 5.462e-05, 5.479e-05, 1339.55429757], [1517072880000, 5.464e-05, 5.478e-05, 5.464e-05, 5.47e-05, 4375.83754356], [1517072940000, 5.47e-05, 5.477e-05, 5.469e-05, 5.47e-05, 8456.19638174], [1517073000000, 5.471e-05, 5.476e-05, 5.461e-05, 5.461e-05, 30713.47903681], [1517073060000, 5.461e-05, 5.463e-05, 5.461e-05, 5.461e-05, 12449.95360498], [1517073120000, 5.461e-05, 5.463e-05, 5.461e-05, 5.463e-05, 3174.18720385], [1517073180000, 5.463e-05, 5.471e-05, 5.46e-05, 5.46e-05, 19066.33638433], [1517073240000, 5.46e-05, 5.477e-05, 5.46e-05, 5.475e-05, 15074.68688834], [1517073300000, 5.46e-05, 5.474e-05, 5.46e-05, 5.465e-05, 1795.87016926], [1517073360000, 5.465e-05, 5.465e-05, 5.46e-05, 5.46e-05, 10203.26153063], [1517073420000, 5.46e-05, 5.46e-05, 5.45e-05, 5.45e-05, 2430.18512197], [1517073480000, 5.45e-05, 5.455e-05, 5.432e-05, 5.432e-05, 21066.62505754], [1517073540000, 5.432e-05, 5.445e-05, 5.422e-05, 5.432e-05, 69945.31113412], [1517073600000, 5.421e-05, 5.421e-05, 5.418e-05, 5.418e-05, 22200.13133342], [1517073660000, 5.418e-05, 5.418e-05, 5.415e-05, 5.415e-05, 18135.55137046], [1517073720000, 5.415e-05, 5.433e-05, 5.4e-05, 5.402e-05, 88183.25280916], [1517073780000, 5.402e-05, 5.42e-05, 5.4e-05, 5.419e-05, 94726.28182336], [1517073840000, 5.42e-05, 5.42e-05, 5.4e-05, 5.419e-05, 13999.74311812], [1517073900000, 5.405e-05, 5.419e-05, 5.401e-05, 5.401e-05, 38371.32959652], [1517073960000, 5.401e-05, 5.419e-05, 5.401e-05, 5.419e-05, 2386.8635169], [1517074020000, 5.419e-05, 5.419e-05, 5.419e-05, 5.419e-05, 3845.92858693], [1517074080000, 5.419e-05, 5.419e-05, 5.405e-05, 5.405e-05, 56930.74440742], [1517074140000, 5.405e-05, 5.419e-05, 5.405e-05, 5.419e-05, 2759.95070262], [1517074200000, 5.419e-05, 5.444e-05, 5.411e-05, 5.425e-05, 64790.47060759], [1517074260000, 5.444e-05, 5.444e-05, 5.425e-05, 5.425e-05, 14201.77033608], [1517074320000, 5.426e-05, 5.433e-05, 5.42e-05, 5.433e-05, 6155.37209886], [1517074380000, 5.416e-05, 5.416e-05, 5.404e-05, 5.404e-05, 31055.63705886], [1517074440000, 5.401e-05, 5.404e-05, 5.401e-05, 5.404e-05, 18309.63524778], [1517074500000, 5.403e-05, 5.403e-05, 5.4e-05, 5.403e-05, 15948.33499788], [1517074560000, 5.402e-05, 5.405e-05, 5.402e-05, 5.404e-05, 21028.00675587], [1517074620000, 5.405e-05, 5.409e-05, 5.404e-05, 5.404e-05, 17294.64896337], [1517074680000, 5.404e-05, 5.443e-05, 5.404e-05, 5.411e-05, 30881.5678247], [1517074740000, 5.406e-05, 5.433e-05, 5.406e-05, 5.433e-05, 4959.42034707], [1517074800000, 5.433e-05, 5.444e-05, 5.433e-05, 5.444e-05, 7313.21200288], [1517074860000, 5.444e-05, 5.45e-05, 5.433e-05, 5.45e-05, 17225.24937133], [1517074920000, 5.45e-05, 5.467e-05, 5.411e-05, 5.411e-05, 38947.87487915], [1517074980000, 5.408e-05, 5.463e-05, 5.405e-05, 5.448e-05, 70420.19977138], [1517075040000, 5.448e-05, 5.46e-05, 5.413e-05, 5.447e-05, 73237.63517025], [1517075100000, 5.427e-05, 5.446e-05, 5.418e-05, 5.44e-05, 2331.98329038], [1517075160000, 5.439e-05, 5.439e-05, 5.42e-05, 5.438e-05, 3298.94785857], [1517075220000, 5.438e-05, 5.438e-05, 5.437e-05, 5.438e-05, 3704.69492017], [1517075280000, 5.437e-05, 5.438e-05, 5.437e-05, 5.438e-05, 8427.56623652], [1517075340000, 5.438e-05, 5.438e-05, 5.438e-05, 5.438e-05, 10534.48291999], [1517075400000, 5.438e-05, 5.44e-05, 5.428e-05, 5.429e-05, 20414.25300099], [1517075460000, 5.43e-05, 5.445e-05, 5.43e-05, 5.43e-05, 3941.34229831], [1517075520000, 5.435e-05, 5.445e-05, 5.431e-05, 5.445e-05, 9487.67547507], [1517075580000, 5.445e-05, 5.445e-05, 5.438e-05, 5.445e-05, 1347.57738947], [1517075640000, 5.447e-05, 5.447e-05, 5.445e-05, 5.445e-05, 5758.79250189], [1517075700000, 5.445e-05, 5.445e-05, 5.444e-05, 5.445e-05, 2412.62357174], [1517075760000, 5.445e-05, 5.445e-05, 5.44e-05, 5.44e-05, 4857.75410927], [1517075820000, 5.44e-05, 5.445e-05, 5.44e-05, 5.445e-05, 5933.69675437], [1517075880000, 5.44e-05, 5.442e-05, 5.44e-05, 5.44e-05, 25112.07016802], [1517075940000, 5.44e-05, 5.44e-05, 5.438e-05, 5.438e-05, 16244.5757652], [1517076000000, 5.44e-05, 5.442e-05, 5.44e-05, 5.442e-05, 1675.04344645], [1517076060000, 5.44e-05, 5.44e-05, 5.431e-05, 5.431e-05, 29229.06844135], [1517076120000, 5.431e-05, 5.431e-05, 5.404e-05, 5.414e-05, 62139.80140816], [1517076180000, 5.414e-05, 5.414e-05, 5.414e-05, 5.414e-05, 1030.00575492], [1517076240000, 5.415e-05, 5.417e-05, 5.415e-05, 5.417e-05, 1719.88116507], [1517076300000, 5.436e-05, 5.436e-05, 5.417e-05, 5.435e-05, 1641.15439927], [1517076360000, 5.435e-05, 5.435e-05, 5.421e-05, 5.434e-05, 4406.03921156], [1517076420000, 5.434e-05, 5.434e-05, 5.421e-05, 5.425e-05, 3348.31193377], [1517076480000, 5.425e-05, 5.433e-05, 5.425e-05, 5.432e-05, 28969.86692636], [1517076540000, 5.432e-05, 5.432e-05, 5.421e-05, 5.421e-05, 26387.43029946], [1517076600000, 5.421e-05, 5.432e-05, 5.421e-05, 5.422e-05, 3180.85136612], [1517076660000, 5.432e-05, 5.432e-05, 5.423e-05, 5.432e-05, 808.58467843], [1517076720000, 5.432e-05, 5.432e-05, 5.432e-05, 5.432e-05, 7149.66008654], [1517076780000, 5.426e-05, 5.432e-05, 5.426e-05, 5.432e-05, 155.55450683], [1517076840000, 5.432e-05, 5.432e-05, 5.431e-05, 5.431e-05, 6297.34117704], [1517076900000, 5.431e-05, 5.431e-05, 5.426e-05, 5.426e-05, 28346.61291224], [1517076960000, 5.426e-05, 5.426e-05, 5.425e-05, 5.426e-05, 1625.26476579], [1517077020000, 5.426e-05, 5.426e-05, 5.425e-05, 5.426e-05, 1310.33649397], [1517077080000, 5.426e-05, 5.431e-05, 5.425e-05, 5.431e-05, 31213.34126887], [1517077140000, 5.431e-05, 5.431e-05, 5.426e-05, 5.43e-05, 12593.825992], [1517077200000, 5.43e-05, 5.431e-05, 5.43e-05, 5.431e-05, 1567.35780492], [1517077260000, 5.431e-05, 5.431e-05, 5.425e-05, 5.431e-05, 16300.77298651], [1517077320000, 5.431e-05, 5.433e-05, 5.427e-05, 5.433e-05, 48687.16356192], [1517077380000, 5.433e-05, 5.441e-05, 5.432e-05, 5.441e-05, 12422.39880619], [1517077440000, 5.441e-05, 5.441e-05, 5.436e-05, 5.441e-05, 32829.38063222], [1517077500000, 5.441e-05, 5.441e-05, 5.44e-05, 5.441e-05, 21362.73875729], [1517077560000, 5.441e-05, 5.444e-05, 5.441e-05, 5.444e-05, 18423.30920304], [1517077620000, 5.443e-05, 5.444e-05, 5.443e-05, 5.444e-05, 3685.28799277], [1517077680000, 5.447e-05, 5.461e-05, 5.447e-05, 5.461e-05, 2802.10691337], [1517077740000, 5.447e-05, 5.462e-05, 5.447e-05, 5.46e-05, 3430.06066829], [1517077800000, 5.445e-05, 5.46e-05, 5.445e-05, 5.458e-05, 1779.9612189], [1517077860000, 5.458e-05, 5.458e-05, 5.442e-05, 5.442e-05, 9288.51212619], [1517077920000, 5.446e-05, 5.454e-05, 5.44e-05, 5.453e-05, 60899.23836581], [1517077980000, 5.44e-05, 5.453e-05, 5.44e-05, 5.442e-05, 21391.08617761], [1517078040000, 5.441e-05, 5.442e-05, 5.439e-05, 5.439e-05, 21095.24583294], [1517078100000, 5.439e-05, 5.439e-05, 5.436e-05, 5.438e-05, 13131.32659161], [1517078160000, 5.438e-05, 5.438e-05, 5.437e-05, 5.438e-05, 19146.66520986], [1517078220000, 5.438e-05, 5.438e-05, 5.437e-05, 5.438e-05, 11444.61359931], [1517078280000, 5.438e-05, 5.438e-05, 5.437e-05, 5.438e-05, 14091.96236473], [1517078340000, 5.438e-05, 5.438e-05, 5.436e-05, 5.438e-05, 13557.71798016], [1517078400000, 5.438e-05, 5.438e-05, 5.435e-05, 5.435e-05, 6354.58063138], [1517078460000, 5.438e-05, 5.438e-05, 5.435e-05, 5.435e-05, 38324.37206424], [1517078520000, 5.435e-05, 5.435e-05, 5.435e-05, 5.435e-05, 5951.78801189], [1517078580000, 5.435e-05, 5.45e-05, 5.434e-05, 5.45e-05, 71323.57226715], [1517078640000, 5.453e-05, 5.455e-05, 5.45e-05, 5.45e-05, 3606.32353272], [1517078700000, 5.453e-05, 5.453e-05, 5.45e-05, 5.453e-05, 1796.91076477], [1517078760000, 5.453e-05, 5.453e-05, 5.45e-05, 5.453e-05, 13951.08079384], [1517078820000, 5.453e-05, 5.455e-05, 5.45e-05, 5.45e-05, 21087.66800288], [1517078880000, 5.45e-05, 5.454e-05, 5.45e-05, 5.454e-05, 446.74817244], [1517078940000, 5.451e-05, 5.454e-05, 5.45e-05, 5.45e-05, 6400.96000446], [1517079000000, 5.453e-05, 5.454e-05, 5.45e-05, 5.45e-05, 4649.53303517], [1517079060000, 5.45e-05, 5.472e-05, 5.45e-05, 5.472e-05, 5527.45068813], [1517079120000, 5.465e-05, 5.483e-05, 5.465e-05, 5.483e-05, 7620.76510917], [1517079180000, 5.482e-05, 5.482e-05, 5.48e-05, 5.48e-05, 5170.83888344], [1517079240000, 5.474e-05, 5.48e-05, 5.474e-05, 5.475e-05, 2638.24902792], [1517079300000, 5.479e-05, 5.479e-05, 5.475e-05, 5.475e-05, 5135.05852314], [1517079360000, 5.476e-05, 5.479e-05, 5.475e-05, 5.475e-05, 14915.66748306], [1517079420000, 5.476e-05, 5.479e-05, 5.476e-05, 5.479e-05, 2908.7622652], [1517079480000, 5.478e-05, 5.479e-05, 5.476e-05, 5.479e-05, 2783.01782964], [1517079540000, 5.479e-05, 5.479e-05, 5.476e-05, 5.478e-05, 553.31747526], [1517079600000, 5.478e-05, 5.478e-05, 5.477e-05, 5.477e-05, 199.21543394], [1517079660000, 5.478e-05, 5.479e-05, 5.475e-05, 5.479e-05, 22740.27908768], [1517079720000, 5.479e-05, 5.479e-05, 5.479e-05, 5.479e-05, 950.33251306], [1517079780000, 5.479e-05, 5.479e-05, 5.476e-05, 5.476e-05, 2882.14866739], [1517079840000, 5.476e-05, 5.478e-05, 5.476e-05, 5.478e-05, 277.94648298], [1517079900000, 5.478e-05, 5.48e-05, 5.478e-05, 5.48e-05, 124107.48714198], [1517079960000, 5.48e-05, 5.48e-05, 5.476e-05, 5.476e-05, 11104.18773491], [1517080020000, 5.474e-05, 5.482e-05, 5.46e-05, 5.482e-05, 3986.89599236], [1517080080000, 5.481e-05, 5.481e-05, 5.46e-05, 5.46e-05, 164.59200271], [1517080140000, 5.46e-05, 5.477e-05, 5.453e-05, 5.455e-05, 12669.89663008], [1517080200000, 5.455e-05, 5.471e-05, 5.455e-05, 5.471e-05, 3823.3291506], [1517080260000, 5.479e-05, 5.48e-05, 5.479e-05, 5.479e-05, 2253.85991967], [1517080320000, 5.471e-05, 5.478e-05, 5.47e-05, 5.47e-05, 9242.02232561], [1517080380000, 5.455e-05, 5.478e-05, 5.455e-05, 5.477e-05, 5833.11880042], [1517080440000, 5.475e-05, 5.475e-05, 5.473e-05, 5.473e-05, 1040.40337113], [1517080500000, 5.473e-05, 5.473e-05, 5.452e-05, 5.468e-05, 9935.21295884], [1517080560000, 5.468e-05, 5.472e-05, 5.452e-05, 5.472e-05, 8218.32688248], [1517080620000, 5.471e-05, 5.471e-05, 5.452e-05, 5.471e-05, 1608.53244581], [1517080680000, 5.453e-05, 5.47e-05, 5.452e-05, 5.454e-05, 5742.58552421], [1517080740000, 5.468e-05, 5.468e-05, 5.467e-05, 5.468e-05, 11223.97570845], [1517080800000, 5.468e-05, 5.468e-05, 5.454e-05, 5.454e-05, 1409.5936966], [1517080860000, 5.454e-05, 5.468e-05, 5.45e-05, 5.466e-05, 45363.91410877], [1517080920000, 5.466e-05, 5.466e-05, 5.453e-05, 5.453e-05, 4695.78723079], [1517080980000, 5.465e-05, 5.465e-05, 5.432e-05, 5.432e-05, 41787.45163593], [1517081040000, 5.463e-05, 5.463e-05, 5.439e-05, 5.462e-05, 2946.55570656], [1517081100000, 5.462e-05, 5.462e-05, 5.44e-05, 5.462e-05, 20336.84611664], [1517081160000, 5.462e-05, 5.462e-05, 5.452e-05, 5.46e-05, 4200.29760246], [1517081220000, 5.46e-05, 5.462e-05, 5.452e-05, 5.462e-05, 8450.53340108], [1517081280000, 5.462e-05, 5.462e-05, 5.462e-05, 5.462e-05, 37231.90244406], [1517081340000, 5.462e-05, 5.462e-05, 5.461e-05, 5.462e-05, 6017.25898519], [1517081400000, 5.462e-05, 5.462e-05, 5.455e-05, 5.455e-05, 9069.52176613], [1517081460000, 5.455e-05, 5.462e-05, 5.454e-05, 5.454e-05, 12885.04163415], [1517081520000, 5.453e-05, 5.462e-05, 5.451e-05, 5.451e-05, 11857.61225603], [1517081580000, 5.451e-05, 5.462e-05, 5.451e-05, 5.462e-05, 3055.39064803], [1517081640000, 5.462e-05, 5.462e-05, 5.452e-05, 5.461e-05, 2847.51944297], [1517081700000, 5.461e-05, 5.461e-05, 5.455e-05, 5.456e-05, 8000.30774463], [1517081760000, 5.456e-05, 5.456e-05, 5.456e-05, 5.456e-05, 9941.19466007], [1517081820000, 5.456e-05, 5.456e-05, 5.455e-05, 5.456e-05, 14155.83907341], [1517081880000, 5.456e-05, 5.456e-05, 5.456e-05, 5.456e-05, 2224.47132615], [1517081940000, 5.46e-05, 5.46e-05, 5.456e-05, 5.46e-05, 22494.67532707], [1517082000000, 5.46e-05, 5.46e-05, 5.46e-05, 5.46e-05, 4521.09007331], [1517082060000, 5.46e-05, 5.46e-05, 5.46e-05, 5.46e-05, 912.06181571], [1517082120000, 5.46e-05, 5.46e-05, 5.46e-05, 5.46e-05, 670.3972477], [1517082180000, 5.456e-05, 5.46e-05, 5.456e-05, 5.46e-05, 7242.1643357], [1517082240000, 5.46e-05, 5.46e-05, 5.46e-05, 5.46e-05, 9778.63552974], [1517082300000, 5.461e-05, 5.461e-05, 5.46e-05, 5.461e-05, 8238.74830599], [1517082360000, 5.461e-05, 5.461e-05, 5.461e-05, 5.461e-05, 3952.15548303], [1517082420000, 5.461e-05, 5.462e-05, 5.461e-05, 5.461e-05, 422.78261853], [1517082480000, 5.461e-05, 5.461e-05, 5.461e-05, 5.461e-05, 7725.44252971], [1517082540000, 5.461e-05, 5.462e-05, 5.461e-05, 5.462e-05, 1369.63800446], [1517082600000, 5.462e-05, 5.462e-05, 5.462e-05, 5.462e-05, 320.9625736], [1517082660000, 5.462e-05, 5.463e-05, 5.462e-05, 5.463e-05, 226.0], [1517082720000, 5.462e-05, 5.462e-05, 5.461e-05, 5.461e-05, 5610.47099881], [1517082780000, 5.461e-05, 5.461e-05, 5.461e-05, 5.461e-05, 425.87550084], [1517082840000, 5.461e-05, 5.461e-05, 5.46e-05, 5.461e-05, 5830.0], [1517082900000, 5.462e-05, 5.462e-05, 5.461e-05, 5.461e-05, 609.23868007], [1517082960000, 5.461e-05, 5.462e-05, 5.461e-05, 5.462e-05, 12317.28151808], [1517083020000, 5.462e-05, 5.462e-05, 5.462e-05, 5.462e-05, 11771.16417365], [1517083080000, 5.462e-05, 5.463e-05, 5.462e-05, 5.462e-05, 2160.59845299], [1517083140000, 5.464e-05, 5.5e-05, 5.462e-05, 5.497e-05, 105560.43006221], [1517083200000, 5.497e-05, 5.497e-05, 5.464e-05, 5.464e-05, 1581.62668336], [1517083260000, 5.494e-05, 5.494e-05, 5.468e-05, 5.468e-05, 1891.14753716], [1517083320000, 5.465e-05, 5.465e-05, 5.463e-05, 5.463e-05, 2055.71408283], [1517083380000, 5.463e-05, 5.464e-05, 5.462e-05, 5.462e-05, 8503.80762333], [1517083440000, 5.461e-05, 5.461e-05, 5.461e-05, 5.461e-05, 38451.56168808], [1517083500000, 5.461e-05, 5.468e-05, 5.461e-05, 5.465e-05, 6355.39933982], [1517083560000, 5.463e-05, 5.503e-05, 5.463e-05, 5.465e-05, 45044.07935117], [1517083620000, 5.461e-05, 5.462e-05, 5.461e-05, 5.461e-05, 616.52315632], [1517083680000, 5.464e-05, 5.464e-05, 5.464e-05, 5.464e-05, 3026.12294849], [1517083740000, 5.464e-05, 5.464e-05, 5.464e-05, 5.464e-05, 1331.4689417], [1517083800000, 5.464e-05, 5.465e-05, 5.464e-05, 5.464e-05, 2861.14548865], [1517083860000, 5.464e-05, 5.464e-05, 5.464e-05, 5.464e-05, 854.39719761], [1517083920000, 5.464e-05, 5.464e-05, 5.448e-05, 5.448e-05, 3427.84351986], [1517083980000, 5.45e-05, 5.45e-05, 5.442e-05, 5.442e-05, 9725.74162705], [1517084040000, 5.448e-05, 5.448e-05, 5.441e-05, 5.441e-05, 2956.12514842], [1517084100000, 5.441e-05, 5.441e-05, 5.431e-05, 5.441e-05, 13956.91455262], [1517084160000, 5.441e-05, 5.441e-05, 5.441e-05, 5.441e-05, 48545.329201], [1517084220000, 5.441e-05, 5.441e-05, 5.441e-05, 5.441e-05, 608.89377658], [1517084280000, 5.432e-05, 5.432e-05, 5.432e-05, 5.432e-05, 4892.42973206], [1517084340000, 5.432e-05, 5.46e-05, 5.431e-05, 5.46e-05, 28306.54270286], [1517084400000, 5.431e-05, 5.431e-05, 5.431e-05, 5.431e-05, 2465.88473578], [1517084460000, 5.46e-05, 5.463e-05, 5.431e-05, 5.431e-05, 3036.44567858], [1517084520000, 5.462e-05, 5.463e-05, 5.45e-05, 5.45e-05, 304.93413506], [1517084580000, 5.45e-05, 5.45e-05, 5.445e-05, 5.445e-05, 90.87611246], [1517084640000, 5.445e-05, 5.445e-05, 5.445e-05, 5.445e-05, 40.60051704], [1517084700000, 5.445e-05, 5.445e-05, 5.445e-05, 5.445e-05, 2190.2872939], [1517084760000, 5.445e-05, 5.445e-05, 5.44e-05, 5.445e-05, 1148.64446743], [1517084820000, 5.445e-05, 5.445e-05, 5.445e-05, 5.445e-05, 153.5331625], [1517084880000, 5.443e-05, 5.463e-05, 5.432e-05, 5.443e-05, 2382.4355961], [1517084940000, 5.443e-05, 5.443e-05, 5.423e-05, 5.443e-05, 4834.99912026], [1517085000000, 5.443e-05, 5.443e-05, 5.442e-05, 5.442e-05, 504.79122024], [1517085060000, 5.442e-05, 5.443e-05, 5.424e-05, 5.443e-05, 24716.38046337], [1517085120000, 5.443e-05, 5.443e-05, 5.441e-05, 5.443e-05, 4697.517599], [1517085180000, 5.443e-05, 5.443e-05, 5.44e-05, 5.442e-05, 239.76022993], [1517085240000, 5.443e-05, 5.443e-05, 5.44e-05, 5.443e-05, 2741.95484099], [1517085300000, 5.463e-05, 5.463e-05, 5.443e-05, 5.443e-05, 3843.58274829], [1517085360000, 5.443e-05, 5.443e-05, 5.427e-05, 5.441e-05, 1746.90571165], [1517085420000, 5.443e-05, 5.459e-05, 5.443e-05, 5.459e-05, 14010.44772117], [1517085480000, 5.448e-05, 5.448e-05, 5.442e-05, 5.448e-05, 2283.95599048], [1517085540000, 5.448e-05, 5.462e-05, 5.448e-05, 5.459e-05, 3373.25378418], [1517085600000, 5.459e-05, 5.462e-05, 5.459e-05, 5.462e-05, 1565.31153501], [1517085660000, 5.462e-05, 5.462e-05, 5.44e-05, 5.457e-05, 8140.48387751], [1517085720000, 5.44e-05, 5.456e-05, 5.423e-05, 5.455e-05, 10579.94173536], [1517085780000, 5.445e-05, 5.453e-05, 5.439e-05, 5.453e-05, 6670.52266257], [1517085840000, 5.453e-05, 5.453e-05, 5.427e-05, 5.43e-05, 3918.94401907], [1517085900000, 5.431e-05, 5.451e-05, 5.431e-05, 5.447e-05, 2669.56964088], [1517085960000, 5.451e-05, 5.451e-05, 5.447e-05, 5.45e-05, 303.57070569], [1517086020000, 5.45e-05, 5.45e-05, 5.432e-05, 5.45e-05, 6229.57707896], [1517086080000, 5.449e-05, 5.449e-05, 5.432e-05, 5.432e-05, 4889.38489252], [1517086140000, 5.44e-05, 5.446e-05, 5.433e-05, 5.446e-05, 5871.51361152], [1517086200000, 5.446e-05, 5.447e-05, 5.444e-05, 5.447e-05, 12601.02330243], [1517086260000, 5.446e-05, 5.446e-05, 5.433e-05, 5.444e-05, 6428.47739192], [1517086320000, 5.433e-05, 5.445e-05, 5.433e-05, 5.445e-05, 14727.62162868], [1517086380000, 5.445e-05, 5.445e-05, 5.444e-05, 5.445e-05, 3872.66123324], [1517086440000, 5.445e-05, 5.445e-05, 5.445e-05, 5.445e-05, 2435.53750837], [1517086500000, 5.445e-05, 5.445e-05, 5.442e-05, 5.445e-05, 10689.14953109], [1517086560000, 5.445e-05, 5.445e-05, 5.445e-05, 5.445e-05, 723.56083575], [1517086620000, 5.443e-05, 5.451e-05, 5.432e-05, 5.451e-05, 26920.26864698], [1517086680000, 5.459e-05, 5.459e-05, 5.433e-05, 5.433e-05, 300.05565048], [1517086740000, 5.451e-05, 5.451e-05, 5.433e-05, 5.44e-05, 5223.41237842], [1517086800000, 5.45e-05, 5.451e-05, 5.44e-05, 5.45e-05, 4399.6682029], [1517086860000, 5.451e-05, 5.459e-05, 5.45e-05, 5.451e-05, 6510.35887569], [1517086920000, 5.45e-05, 5.459e-05, 5.441e-05, 5.455e-05, 15047.86224447], [1517086980000, 5.455e-05, 5.456e-05, 5.455e-05, 5.455e-05, 1562.63977287], [1517087040000, 5.455e-05, 5.455e-05, 5.453e-05, 5.453e-05, 693.61105766], [1517087100000, 5.453e-05, 5.453e-05, 5.442e-05, 5.443e-05, 6621.42485452], [1517087160000, 5.443e-05, 5.443e-05, 5.44e-05, 5.442e-05, 3823.51039499], [1517087220000, 5.442e-05, 5.465e-05, 5.442e-05, 5.465e-05, 51284.40209917], [1517087280000, 5.465e-05, 5.465e-05, 5.465e-05, 5.465e-05, 9203.783387], [1517087340000, 5.46e-05, 5.465e-05, 5.443e-05, 5.443e-05, 3150.8320273], [1517087400000, 5.46e-05, 5.46e-05, 5.46e-05, 5.46e-05, 72.26609574], [1517087460000, 5.464e-05, 5.464e-05, 5.464e-05, 5.464e-05, 4548.28147354], [1517087520000, 5.465e-05, 5.465e-05, 5.464e-05, 5.464e-05, 2409.14991], [1517087580000, 5.464e-05, 5.465e-05, 5.464e-05, 5.465e-05, 1585.687859], [1517087640000, 5.464e-05, 5.465e-05, 5.464e-05, 5.465e-05, 2429.34196105], [1517087700000, 5.464e-05, 5.465e-05, 5.464e-05, 5.465e-05, 7380.96943321], [1517087760000, 5.465e-05, 5.465e-05, 5.464e-05, 5.464e-05, 704.46330413], [1517087820000, 5.465e-05, 5.465e-05, 5.465e-05, 5.465e-05, 5454.92859379], [1517087880000, 5.465e-05, 5.485e-05, 5.465e-05, 5.48e-05, 5428.6445727], [1517087940000, 5.484e-05, 5.486e-05, 5.48e-05, 5.484e-05, 4029.15500716], [1517088000000, 5.481e-05, 5.494e-05, 5.48e-05, 5.481e-05, 1954.0266755], [1517088060000, 5.486e-05, 5.494e-05, 5.486e-05, 5.486e-05, 1438.01434743], [1517088120000, 5.486e-05, 5.497e-05, 5.464e-05, 5.497e-05, 35080.12882479], [1517088180000, 5.497e-05, 5.497e-05, 5.464e-05, 5.464e-05, 342.60043425], [1517088240000, 5.495e-05, 5.495e-05, 5.48e-05, 5.495e-05, 3759.47001764], [1517088300000, 5.498e-05, 5.498e-05, 5.465e-05, 5.465e-05, 4262.72895434], [1517088420000, 5.466e-05, 5.47e-05, 5.466e-05, 5.47e-05, 155.80516581], [1517088480000, 5.47e-05, 5.495e-05, 5.47e-05, 5.47e-05, 259.00658], [1517088540000, 5.47e-05, 5.49e-05, 5.47e-05, 5.47e-05, 778.26774768], [1517088660000, 5.47e-05, 5.47e-05, 5.47e-05, 5.47e-05, 2786.50981834], [1517088780000, 5.47e-05, 5.48e-05, 5.47e-05, 5.47e-05, 3239.80239099], [1517088840000, 5.47e-05, 5.47e-05, 5.47e-05, 5.47e-05, 1731.91999795], [1517088900000, 5.47e-05, 5.48e-05, 5.47e-05, 5.48e-05, 5674.99931814], [1517088960000, 5.48e-05, 5.48e-05, 5.47e-05, 5.47e-05, 842.55936663], [1517089020000, 5.475e-05, 5.48e-05, 5.47e-05, 5.48e-05, 831.82800582], [1517089080000, 5.47e-05, 5.47e-05, 5.47e-05, 5.47e-05, 970.03670358], [1517089140000, 5.47e-05, 5.475e-05, 5.46e-05, 5.46e-05, 49505.89099026], [1517089200000, 5.48e-05, 5.48e-05, 5.48e-05, 5.48e-05, 48.43241436], [1517089260000, 5.48e-05, 5.48e-05, 5.46e-05, 5.46e-05, 1849.62472123], [1517089320000, 5.46e-05, 5.48e-05, 5.445e-05, 5.48e-05, 2046.77876815], [1517089380000, 5.48e-05, 5.499e-05, 5.468e-05, 5.468e-05, 2221.4158905], [1517089440000, 5.479e-05, 5.479e-05, 5.446e-05, 5.446e-05, 675.35744249], [1517089500000, 5.46e-05, 5.5e-05, 5.443e-05, 5.446e-05, 19940.36049222], [1517089560000, 5.446e-05, 5.46e-05, 5.444e-05, 5.446e-05, 3858.39356774], [1517089680000, 5.446e-05, 5.459e-05, 5.446e-05, 5.459e-05, 296.64589721], [1517089740000, 5.459e-05, 5.459e-05, 5.447e-05, 5.447e-05, 1570.09889023], [1517089800000, 5.447e-05, 5.447e-05, 5.442e-05, 5.447e-05, 9407.22149645], [1517089860000, 5.442e-05, 5.442e-05, 5.435e-05, 5.44e-05, 2236.14915765], [1517089920000, 5.44e-05, 5.447e-05, 5.44e-05, 5.44e-05, 903.46647115], [1517089980000, 5.44e-05, 5.447e-05, 5.44e-05, 5.443e-05, 1770.24866766], [1517090040000, 5.447e-05, 5.459e-05, 5.435e-05, 5.459e-05, 8543.64368461], [1517090100000, 5.459e-05, 5.459e-05, 5.438e-05, 5.459e-05, 1211.23402532], [1517090160000, 5.459e-05, 5.459e-05, 5.441e-05, 5.45e-05, 7765.36081955], [1517090220000, 5.452e-05, 5.484e-05, 5.437e-05, 5.438e-05, 8487.41974145], [1517090280000, 5.451e-05, 5.483e-05, 5.437e-05, 5.483e-05, 6466.72377954], [1517090340000, 5.464e-05, 5.483e-05, 5.464e-05, 5.483e-05, 73.95236476], [1517090400000, 5.464e-05, 5.464e-05, 5.464e-05, 5.464e-05, 1056.67390234], [1517090460000, 5.464e-05, 5.484e-05, 5.459e-05, 5.459e-05, 32896.85136291], [1517090520000, 5.459e-05, 5.474e-05, 5.459e-05, 5.474e-05, 4002.78899589], [1517090580000, 5.46e-05, 5.46e-05, 5.46e-05, 5.46e-05, 164.42535512], [1517090640000, 5.46e-05, 5.46e-05, 5.443e-05, 5.46e-05, 2707.98135807], [1517090700000, 5.46e-05, 5.46e-05, 5.44e-05, 5.46e-05, 1970.27278727], [1517090760000, 5.46e-05, 5.46e-05, 5.444e-05, 5.445e-05, 4226.59510879], [1517090880000, 5.459e-05, 5.459e-05, 5.445e-05, 5.459e-05, 13150.60372191], [1517090940000, 5.459e-05, 5.459e-05, 5.459e-05, 5.459e-05, 64.39065833], [1517091000000, 5.469e-05, 5.471e-05, 5.459e-05, 5.459e-05, 384.70255455], [1517091060000, 5.469e-05, 5.469e-05, 5.459e-05, 5.469e-05, 8778.38329886], [1517091120000, 5.467e-05, 5.467e-05, 5.44e-05, 5.44e-05, 1458.67047665], [1517091180000, 5.458e-05, 5.459e-05, 5.441e-05, 5.442e-05, 4052.28366232], [1517091240000, 5.443e-05, 5.459e-05, 5.442e-05, 5.442e-05, 1334.01941764], [1517091300000, 5.458e-05, 5.458e-05, 5.454e-05, 5.454e-05, 400.01232776], [1517091360000, 5.443e-05, 5.454e-05, 5.428e-05, 5.45e-05, 18358.03777114], [1517091420000, 5.454e-05, 5.454e-05, 5.45e-05, 5.454e-05, 2895.13932369], [1517091480000, 5.45e-05, 5.454e-05, 5.45e-05, 5.453e-05, 4346.64609512], [1517091540000, 5.453e-05, 5.458e-05, 5.451e-05, 5.453e-05, 12959.25377282], [1517091600000, 5.453e-05, 5.458e-05, 5.453e-05, 5.458e-05, 713.63545128], [1517091660000, 5.458e-05, 5.469e-05, 5.453e-05, 5.453e-05, 8383.92495383], [1517091720000, 5.453e-05, 5.453e-05, 5.45e-05, 5.45e-05, 5555.87673289], [1517091780000, 5.45e-05, 5.453e-05, 5.45e-05, 5.453e-05, 4148.3679299], [1517091840000, 5.453e-05, 5.469e-05, 5.453e-05, 5.453e-05, 19255.18130029], [1517091900000, 5.453e-05, 5.469e-05, 5.453e-05, 5.453e-05, 11170.67121855], [1517091960000, 5.468e-05, 5.468e-05, 5.453e-05, 5.468e-05, 4657.63513692], [1517092020000, 5.453e-05, 5.469e-05, 5.453e-05, 5.469e-05, 22936.5390319], [1517092080000, 5.469e-05, 5.469e-05, 5.46e-05, 5.46e-05, 34.7095259], [1517092140000, 5.46e-05, 5.46e-05, 5.46e-05, 5.46e-05, 2685.26159591], [1517092200000, 5.461e-05, 5.469e-05, 5.46e-05, 5.469e-05, 962.55949171], [1517092260000, 5.469e-05, 5.469e-05, 5.468e-05, 5.468e-05, 930.40037246], [1517092320000, 5.467e-05, 5.468e-05, 5.46e-05, 5.46e-05, 2471.89035064], [1517092380000, 5.46e-05, 5.468e-05, 5.46e-05, 5.468e-05, 3756.72845502], [1517092440000, 5.468e-05, 5.468e-05, 5.45e-05, 5.45e-05, 10357.97303804], [1517092500000, 5.46e-05, 5.46e-05, 5.451e-05, 5.451e-05, 11642.96927471], [1517092560000, 5.451e-05, 5.459e-05, 5.451e-05, 5.459e-05, 3605.82910742], [1517092620000, 5.452e-05, 5.459e-05, 5.452e-05, 5.459e-05, 2073.72064673], [1517092680000, 5.459e-05, 5.459e-05, 5.425e-05, 5.458e-05, 32169.11744705], [1517092740000, 5.457e-05, 5.458e-05, 5.457e-05, 5.458e-05, 16205.39256719], [1517092800000, 5.458e-05, 5.458e-05, 5.425e-05, 5.457e-05, 2962.12522049], [1517092860000, 5.457e-05, 5.458e-05, 5.457e-05, 5.458e-05, 6795.04748817], [1517092920000, 5.457e-05, 5.458e-05, 5.457e-05, 5.457e-05, 1809.60939946], [1517092980000, 5.457e-05, 5.458e-05, 5.451e-05, 5.458e-05, 6072.2990074], [1517093040000, 5.458e-05, 5.458e-05, 5.455e-05, 5.458e-05, 11750.05433496], [1517093100000, 5.458e-05, 5.458e-05, 5.452e-05, 5.452e-05, 5798.49517747], [1517093160000, 5.452e-05, 5.458e-05, 5.43e-05, 5.458e-05, 55335.93486534], [1517093220000, 5.458e-05, 5.458e-05, 5.457e-05, 5.458e-05, 23517.83601834], [1517093280000, 5.457e-05, 5.457e-05, 5.43e-05, 5.448e-05, 23412.39329541], [1517093340000, 5.448e-05, 5.45e-05, 5.441e-05, 5.45e-05, 11601.19561366], [1517093400000, 5.45e-05, 5.45e-05, 5.441e-05, 5.448e-05, 12009.3270181], [1517093460000, 5.448e-05, 5.451e-05, 5.441e-05, 5.442e-05, 15555.99440774], [1517093520000, 5.442e-05, 5.442e-05, 5.441e-05, 5.442e-05, 36707.44323457], [1517093580000, 5.442e-05, 5.442e-05, 5.44e-05, 5.441e-05, 21463.74455417], [1517093640000, 5.441e-05, 5.441e-05, 5.431e-05, 5.431e-05, 30743.60677896], [1517093700000, 5.431e-05, 5.441e-05, 5.43e-05, 5.431e-05, 23588.9361346], [1517093760000, 5.43e-05, 5.44e-05, 5.43e-05, 5.44e-05, 25216.14495838], [1517093820000, 5.44e-05, 5.44e-05, 5.437e-05, 5.437e-05, 3062.80963273], [1517093880000, 5.437e-05, 5.44e-05, 5.432e-05, 5.44e-05, 15273.65565331], [1517093940000, 5.44e-05, 5.441e-05, 5.437e-05, 5.441e-05, 5826.91669986], [1517094000000, 5.441e-05, 5.456e-05, 5.441e-05, 5.456e-05, 5237.87246157], [1517094060000, 5.456e-05, 5.456e-05, 5.442e-05, 5.442e-05, 3459.83108689], [1517094120000, 5.442e-05, 5.456e-05, 5.44e-05, 5.44e-05, 2670.24226733], [1517094180000, 5.445e-05, 5.445e-05, 5.44e-05, 5.445e-05, 3579.19923368], [1517094240000, 5.44e-05, 5.456e-05, 5.44e-05, 5.45e-05, 6151.05581436], [1517094300000, 5.449e-05, 5.449e-05, 5.43e-05, 5.43e-05, 25873.53193981], [1517094360000, 5.448e-05, 5.448e-05, 5.43e-05, 5.445e-05, 3085.64408693], [1517094420000, 5.443e-05, 5.443e-05, 5.43e-05, 5.442e-05, 13303.58611076], [1517094480000, 5.442e-05, 5.442e-05, 5.431e-05, 5.442e-05, 22890.44546413], [1517094540000, 5.442e-05, 5.443e-05, 5.425e-05, 5.425e-05, 42469.39717046], [1517094600000, 5.425e-05, 5.433e-05, 5.424e-05, 5.433e-05, 17435.77964557], [1517094660000, 5.432e-05, 5.437e-05, 5.426e-05, 5.432e-05, 15156.95263359], [1517094720000, 5.437e-05, 5.443e-05, 5.437e-05, 5.442e-05, 16082.70829384], [1517094780000, 5.443e-05, 5.445e-05, 5.437e-05, 5.441e-05, 1126.94323894], [1517094840000, 5.441e-05, 5.442e-05, 5.441e-05, 5.441e-05, 8557.69989507], [1517094900000, 5.441e-05, 5.441e-05, 5.432e-05, 5.441e-05, 9233.89593414], [1517094960000, 5.439e-05, 5.44e-05, 5.431e-05, 5.44e-05, 1495.27250333], [1517095020000, 5.431e-05, 5.441e-05, 5.431e-05, 5.441e-05, 18293.78083805], [1517095080000, 5.44e-05, 5.44e-05, 5.428e-05, 5.432e-05, 7519.90120775], [1517095140000, 5.44e-05, 5.44e-05, 5.431e-05, 5.44e-05, 2548.916161], [1517095200000, 5.44e-05, 5.44e-05, 5.44e-05, 5.44e-05, 40.6004273], [1517095260000, 5.44e-05, 5.44e-05, 5.435e-05, 5.435e-05, 7814.30937653], [1517095320000, 5.435e-05, 5.435e-05, 5.435e-05, 5.435e-05, 10458.58880309], [1517095380000, 5.435e-05, 5.435e-05, 5.434e-05, 5.434e-05, 4515.07137422], [1517095440000, 5.432e-05, 5.435e-05, 5.415e-05, 5.435e-05, 83766.88874993], [1517095500000, 5.435e-05, 5.435e-05, 5.414e-05, 5.435e-05, 17152.20494019], [1517095560000, 5.435e-05, 5.435e-05, 5.416e-05, 5.416e-05, 4140.25457655], [1517095620000, 5.431e-05, 5.456e-05, 5.416e-05, 5.456e-05, 112797.68270764], [1517095680000, 5.419e-05, 5.435e-05, 5.418e-05, 5.435e-05, 6269.83980332], [1517095740000, 5.435e-05, 5.435e-05, 5.434e-05, 5.434e-05, 799.08287648], [1517095800000, 5.433e-05, 5.456e-05, 5.433e-05, 5.456e-05, 9507.31952757], [1517095860000, 5.434e-05, 5.456e-05, 5.434e-05, 5.456e-05, 9134.78621205], [1517095920000, 5.455e-05, 5.455e-05, 5.446e-05, 5.453e-05, 1537.44533123], [1517095980000, 5.446e-05, 5.454e-05, 5.434e-05, 5.454e-05, 6672.17326225], [1517096040000, 5.434e-05, 5.453e-05, 5.427e-05, 5.453e-05, 3664.0893386], [1517096100000, 5.452e-05, 5.453e-05, 5.452e-05, 5.452e-05, 10461.42407891], [1517096160000, 5.452e-05, 5.452e-05, 5.429e-05, 5.452e-05, 2492.38975372], [1517096220000, 5.452e-05, 5.452e-05, 5.452e-05, 5.452e-05, 1170.01679528], [1517096280000, 5.434e-05, 5.452e-05, 5.43e-05, 5.45e-05, 3260.37002668], [1517096340000, 5.441e-05, 5.441e-05, 5.44e-05, 5.441e-05, 5650.0], [1517096400000, 5.45e-05, 5.45e-05, 5.448e-05, 5.448e-05, 1366.3865129], [1517096460000, 5.448e-05, 5.448e-05, 5.448e-05, 5.448e-05, 2376.36649172], [1517096520000, 5.442e-05, 5.448e-05, 5.442e-05, 5.447e-05, 5594.39441157], [1517096580000, 5.447e-05, 5.447e-05, 5.444e-05, 5.444e-05, 7762.90680015], [1517096640000, 5.447e-05, 5.448e-05, 5.444e-05, 5.444e-05, 2822.18288444], [1517096700000, 5.444e-05, 5.447e-05, 5.444e-05, 5.444e-05, 4123.40550633], [1517096760000, 5.445e-05, 5.445e-05, 5.444e-05, 5.444e-05, 1076.75560481], [1517096820000, 5.445e-05, 5.445e-05, 5.445e-05, 5.445e-05, 275.0262339], [1517096880000, 5.444e-05, 5.445e-05, 5.444e-05, 5.444e-05, 6051.2734084], [1517096940000, 5.444e-05, 5.445e-05, 5.444e-05, 5.444e-05, 24276.05237633], [1517097000000, 5.444e-05, 5.444e-05, 5.44e-05, 5.44e-05, 9661.16572131], [1517097060000, 5.427e-05, 5.44e-05, 5.418e-05, 5.418e-05, 4751.4710034], [1517097120000, 5.419e-05, 5.427e-05, 5.414e-05, 5.414e-05, 25313.99064699], [1517097180000, 5.427e-05, 5.427e-05, 5.416e-05, 5.427e-05, 8757.42663514], [1517097240000, 5.427e-05, 5.427e-05, 5.417e-05, 5.424e-05, 13802.06290896], [1517097300000, 5.424e-05, 5.424e-05, 5.418e-05, 5.424e-05, 21007.76581562], [1517097360000, 5.424e-05, 5.424e-05, 5.424e-05, 5.424e-05, 10581.73907334], [1517097420000, 5.424e-05, 5.424e-05, 5.419e-05, 5.423e-05, 8406.87618361], [1517097480000, 5.423e-05, 5.423e-05, 5.422e-05, 5.423e-05, 7194.18161716], [1517097540000, 5.423e-05, 5.423e-05, 5.418e-05, 5.423e-05, 14982.09370234], [1517097600000, 5.423e-05, 5.426e-05, 5.413e-05, 5.413e-05, 88429.28702765], [1517097660000, 5.414e-05, 5.426e-05, 5.413e-05, 5.426e-05, 3024.39193301], [1517097720000, 5.413e-05, 5.427e-05, 5.413e-05, 5.42e-05, 22924.773997], [1517097780000, 5.427e-05, 5.427e-05, 5.42e-05, 5.426e-05, 8584.25932716], [1517097840000, 5.427e-05, 5.427e-05, 5.42e-05, 5.422e-05, 42172.31227383], [1517097900000, 5.42e-05, 5.426e-05, 5.42e-05, 5.42e-05, 10718.21281583], [1517097960000, 5.42e-05, 5.42e-05, 5.413e-05, 5.419e-05, 11075.6032205], [1517098020000, 5.419e-05, 5.426e-05, 5.412e-05, 5.413e-05, 5666.11301986], [1517098080000, 5.426e-05, 5.426e-05, 5.413e-05, 5.426e-05, 72918.95859013], [1517098140000, 5.426e-05, 5.426e-05, 5.413e-05, 5.426e-05, 14645.87294669], [1517098200000, 5.413e-05, 5.443e-05, 5.413e-05, 5.443e-05, 40686.77278717], [1517098260000, 5.443e-05, 5.445e-05, 5.443e-05, 5.443e-05, 1185.13694984], [1517098320000, 5.444e-05, 5.449e-05, 5.444e-05, 5.449e-05, 18432.74312897], [1517098380000, 5.449e-05, 5.449e-05, 5.445e-05, 5.445e-05, 3623.41411994], [1517098440000, 5.447e-05, 5.449e-05, 5.446e-05, 5.449e-05, 1182.25927953], [1517098500000, 5.449e-05, 5.45e-05, 5.449e-05, 5.45e-05, 10461.31095658], [1517098560000, 5.45e-05, 5.45e-05, 5.449e-05, 5.449e-05, 54845.62762923], [1517098620000, 5.449e-05, 5.449e-05, 5.425e-05, 5.426e-05, 18468.50006028], [1517098680000, 5.414e-05, 5.426e-05, 5.411e-05, 5.411e-05, 8137.76126923], [1517098740000, 5.425e-05, 5.45e-05, 5.425e-05, 5.45e-05, 13408.96900953], [1517098800000, 5.443e-05, 5.45e-05, 5.443e-05, 5.443e-05, 3310.24291839], [1517098860000, 5.443e-05, 5.45e-05, 5.443e-05, 5.443e-05, 2203.00524266], [1517098920000, 5.443e-05, 5.45e-05, 5.423e-05, 5.45e-05, 8771.76784504], [1517098980000, 5.447e-05, 5.447e-05, 5.423e-05, 5.443e-05, 4233.03831605], [1517099040000, 5.423e-05, 5.442e-05, 5.416e-05, 5.442e-05, 3531.55131912], [1517099100000, 5.443e-05, 5.443e-05, 5.442e-05, 5.443e-05, 6468.74569205], [1517099160000, 5.443e-05, 5.443e-05, 5.442e-05, 5.442e-05, 4703.11096252], [1517099220000, 5.442e-05, 5.442e-05, 5.426e-05, 5.426e-05, 3083.41756462], [1517099280000, 5.423e-05, 5.44e-05, 5.422e-05, 5.423e-05, 7706.13500717], [1517099340000, 5.423e-05, 5.423e-05, 5.423e-05, 5.423e-05, 1665.18289885], [1517099400000, 5.423e-05, 5.423e-05, 5.417e-05, 5.417e-05, 5269.95935484], [1517099460000, 5.417e-05, 5.42e-05, 5.408e-05, 5.408e-05, 13710.4005196], [1517099520000, 5.408e-05, 5.419e-05, 5.408e-05, 5.409e-05, 12983.0626823], [1517099580000, 5.409e-05, 5.419e-05, 5.409e-05, 5.409e-05, 2564.83550282], [1517099640000, 5.409e-05, 5.419e-05, 5.405e-05, 5.418e-05, 2724.77994202], [1517099700000, 5.418e-05, 5.418e-05, 5.405e-05, 5.418e-05, 7374.17975397], [1517099760000, 5.417e-05, 5.418e-05, 5.417e-05, 5.418e-05, 1664.80299333], [1517099820000, 5.418e-05, 5.418e-05, 5.418e-05, 5.418e-05, 2295.97783396], [1517099880000, 5.418e-05, 5.418e-05, 5.417e-05, 5.417e-05, 6704.70767296], [1517099940000, 5.417e-05, 5.423e-05, 5.417e-05, 5.423e-05, 44846.39062796], [1517100000000, 5.423e-05, 5.436e-05, 5.423e-05, 5.428e-05, 2595.75612294], [1517100060000, 5.428e-05, 5.44e-05, 5.418e-05, 5.418e-05, 2343.14285051], [1517100120000, 5.419e-05, 5.419e-05, 5.418e-05, 5.419e-05, 5674.0093088], [1517100180000, 5.438e-05, 5.439e-05, 5.42e-05, 5.439e-05, 2163.58265228], [1517100240000, 5.439e-05, 5.442e-05, 5.43e-05, 5.437e-05, 17123.7302012], [1517100300000, 5.437e-05, 5.448e-05, 5.437e-05, 5.447e-05, 19685.76462861], [1517100360000, 5.447e-05, 5.447e-05, 5.42e-05, 5.439e-05, 29210.2920862], [1517100420000, 5.42e-05, 5.43e-05, 5.42e-05, 5.43e-05, 739.54657091], [1517100480000, 5.43e-05, 5.451e-05, 5.43e-05, 5.451e-05, 13404.45819072], [1517100540000, 5.44e-05, 5.44e-05, 5.43e-05, 5.43e-05, 24561.55151808], [1517100600000, 5.429e-05, 5.43e-05, 5.428e-05, 5.429e-05, 15253.93377477], [1517100660000, 5.428e-05, 5.428e-05, 5.423e-05, 5.423e-05, 16405.40721341], [1517100720000, 5.423e-05, 5.423e-05, 5.42e-05, 5.42e-05, 19122.24710206], [1517100780000, 5.42e-05, 5.423e-05, 5.419e-05, 5.423e-05, 3652.8096073], [1517100840000, 5.423e-05, 5.423e-05, 5.423e-05, 5.423e-05, 8085.72736137], [1517100900000, 5.423e-05, 5.426e-05, 5.423e-05, 5.426e-05, 3108.69377984], [1517100960000, 5.428e-05, 5.449e-05, 5.428e-05, 5.428e-05, 3341.94659313], [1517101020000, 5.447e-05, 5.447e-05, 5.445e-05, 5.445e-05, 962.85853517], [1517101080000, 5.445e-05, 5.445e-05, 5.432e-05, 5.432e-05, 22034.35385546], [1517101140000, 5.432e-05, 5.445e-05, 5.432e-05, 5.44e-05, 6827.00473069], [1517101200000, 5.44e-05, 5.445e-05, 5.44e-05, 5.445e-05, 32553.10772271], [1517101260000, 5.443e-05, 5.445e-05, 5.432e-05, 5.433e-05, 1214.88430918], [1517101320000, 5.433e-05, 5.433e-05, 5.432e-05, 5.433e-05, 4644.46681533], [1517101380000, 5.432e-05, 5.442e-05, 5.431e-05, 5.432e-05, 26573.73284758], [1517101440000, 5.432e-05, 5.442e-05, 5.432e-05, 5.442e-05, 2702.33046729], [1517101500000, 5.433e-05, 5.442e-05, 5.432e-05, 5.442e-05, 930.35643983], [1517101560000, 5.432e-05, 5.445e-05, 5.432e-05, 5.445e-05, 27901.20066661], [1517101620000, 5.445e-05, 5.445e-05, 5.442e-05, 5.442e-05, 22212.83100816], [1517101680000, 5.442e-05, 5.445e-05, 5.432e-05, 5.436e-05, 14580.80979767], [1517101740000, 5.436e-05, 5.436e-05, 5.434e-05, 5.436e-05, 1025.13707136], [1517101800000, 5.436e-05, 5.436e-05, 5.432e-05, 5.436e-05, 5830.54072498], [1517101860000, 5.436e-05, 5.444e-05, 5.435e-05, 5.444e-05, 4373.42228874], [1517101920000, 5.444e-05, 5.444e-05, 5.44e-05, 5.44e-05, 101.72650752], [1517101980000, 5.44e-05, 5.441e-05, 5.432e-05, 5.441e-05, 13779.5663643], [1517102040000, 5.44e-05, 5.44e-05, 5.43e-05, 5.43e-05, 6886.9256786], [1517102100000, 5.44e-05, 5.441e-05, 5.43e-05, 5.441e-05, 14087.69265783], [1517102160000, 5.441e-05, 5.441e-05, 5.43e-05, 5.43e-05, 8607.75687818], [1517102220000, 5.431e-05, 5.434e-05, 5.428e-05, 5.434e-05, 7031.15120828], [1517102280000, 5.434e-05, 5.434e-05, 5.428e-05, 5.428e-05, 9750.162934], [1517102340000, 5.428e-05, 5.428e-05, 5.423e-05, 5.425e-05, 24104.81732433], [1517102400000, 5.423e-05, 5.423e-05, 5.42e-05, 5.423e-05, 15969.05273886], [1517102460000, 5.423e-05, 5.423e-05, 5.421e-05, 5.422e-05, 5718.93346831], [1517102520000, 5.421e-05, 5.422e-05, 5.407e-05, 5.407e-05, 86161.51232379], [1517102580000, 5.407e-05, 5.407e-05, 5.405e-05, 5.407e-05, 27670.10172553], [1517102640000, 5.407e-05, 5.407e-05, 5.407e-05, 5.407e-05, 22038.66215338], [1517102700000, 5.407e-05, 5.407e-05, 5.406e-05, 5.407e-05, 74357.71550253], [1517102760000, 5.406e-05, 5.407e-05, 5.404e-05, 5.407e-05, 67250.58479582], [1517102820000, 5.406e-05, 5.407e-05, 5.404e-05, 5.404e-05, 12790.01517644], [1517102880000, 5.404e-05, 5.407e-05, 5.402e-05, 5.407e-05, 27800.62519924], [1517102940000, 5.407e-05, 5.407e-05, 5.407e-05, 5.407e-05, 3562.77323895], [1517103000000, 5.407e-05, 5.407e-05, 5.403e-05, 5.407e-05, 6323.53013887], [1517103060000, 5.407e-05, 5.407e-05, 5.406e-05, 5.407e-05, 12162.85172081], [1517103120000, 5.407e-05, 5.407e-05, 5.406e-05, 5.407e-05, 13649.24484971], [1517103180000, 5.407e-05, 5.407e-05, 5.406e-05, 5.407e-05, 28466.96937299], [1517103240000, 5.407e-05, 5.407e-05, 5.403e-05, 5.403e-05, 19133.30713542], [1517103300000, 5.406e-05, 5.407e-05, 5.403e-05, 5.403e-05, 31819.4616402], [1517103360000, 5.406e-05, 5.407e-05, 5.403e-05, 5.404e-05, 3581.52877813], [1517103420000, 5.407e-05, 5.407e-05, 5.404e-05, 5.407e-05, 61469.58759527], [1517103480000, 5.407e-05, 5.407e-05, 5.403e-05, 5.407e-05, 12798.87587495], [1517103540000, 5.407e-05, 5.407e-05, 5.394e-05, 5.406e-05, 480116.1454801], [1517103600000, 5.406e-05, 5.407e-05, 5.389e-05, 5.399e-05, 22054.40535228], [1517103660000, 5.399e-05, 5.406e-05, 5.389e-05, 5.406e-05, 9672.34894352], [1517103720000, 5.406e-05, 5.406e-05, 5.406e-05, 5.406e-05, 6613.48191359], [1517103780000, 5.406e-05, 5.406e-05, 5.392e-05, 5.406e-05, 8857.24575444], [1517103840000, 5.395e-05, 5.406e-05, 5.394e-05, 5.394e-05, 6126.05674224], [1517103900000, 5.4e-05, 5.406e-05, 5.4e-05, 5.406e-05, 4396.36245867], [1517103960000, 5.405e-05, 5.405e-05, 5.394e-05, 5.405e-05, 1293.08700284], [1517104020000, 5.406e-05, 5.406e-05, 5.406e-05, 5.406e-05, 722.20835242], [1517104080000, 5.406e-05, 5.407e-05, 5.396e-05, 5.406e-05, 13159.60243084], [1517104140000, 5.407e-05, 5.407e-05, 5.406e-05, 5.407e-05, 64132.1423411], [1517104200000, 5.407e-05, 5.407e-05, 5.401e-05, 5.407e-05, 12719.2995178], [1517104260000, 5.401e-05, 5.407e-05, 5.4e-05, 5.404e-05, 8415.81379543], [1517104320000, 5.407e-05, 5.407e-05, 5.406e-05, 5.407e-05, 7098.738984], [1517104380000, 5.407e-05, 5.407e-05, 5.407e-05, 5.407e-05, 16113.01896881], [1517104440000, 5.407e-05, 5.407e-05, 5.405e-05, 5.406e-05, 23247.65540639], [1517104500000, 5.407e-05, 5.407e-05, 5.405e-05, 5.405e-05, 1557.13638656], [1517104560000, 5.405e-05, 5.405e-05, 5.403e-05, 5.404e-05, 1663.22317706], [1517104620000, 5.403e-05, 5.405e-05, 5.402e-05, 5.405e-05, 4622.43306122], [1517104680000, 5.405e-05, 5.406e-05, 5.405e-05, 5.406e-05, 4631.09105067], [1517104740000, 5.406e-05, 5.406e-05, 5.406e-05, 5.406e-05, 4044.84256846], [1517104800000, 5.405e-05, 5.406e-05, 5.405e-05, 5.406e-05, 785.75514357], [1517104860000, 5.406e-05, 5.406e-05, 5.405e-05, 5.406e-05, 15176.44961175], [1517104920000, 5.406e-05, 5.406e-05, 5.402e-05, 5.402e-05, 18876.92723241], [1517104980000, 5.402e-05, 5.406e-05, 5.402e-05, 5.402e-05, 1251.49543035], [1517105040000, 5.402e-05, 5.402e-05, 5.401e-05, 5.401e-05, 340.14265784], [1517105100000, 5.402e-05, 5.402e-05, 5.398e-05, 5.398e-05, 5807.75269482], [1517105160000, 5.398e-05, 5.398e-05, 5.396e-05, 5.396e-05, 9054.30597037], [1517105220000, 5.401e-05, 5.401e-05, 5.396e-05, 5.397e-05, 2327.86411757], [1517105280000, 5.397e-05, 5.402e-05, 5.397e-05, 5.402e-05, 7642.17557067], [1517105340000, 5.402e-05, 5.402e-05, 5.397e-05, 5.4e-05, 15410.91869119], [1517105400000, 5.402e-05, 5.405e-05, 5.4e-05, 5.4e-05, 9745.27224332], [1517105460000, 5.4e-05, 5.4e-05, 5.4e-05, 5.4e-05, 210.03052311], [1517105520000, 5.401e-05, 5.406e-05, 5.4e-05, 5.406e-05, 28827.87843227], [1517105580000, 5.405e-05, 5.405e-05, 5.4e-05, 5.4e-05, 4298.10016076], [1517105640000, 5.4e-05, 5.4e-05, 5.4e-05, 5.4e-05, 6488.58065736], [1517105700000, 5.401e-05, 5.405e-05, 5.401e-05, 5.405e-05, 20491.18712535], [1517105760000, 5.401e-05, 5.402e-05, 5.401e-05, 5.402e-05, 8974.67845124], [1517105820000, 5.405e-05, 5.405e-05, 5.4e-05, 5.4e-05, 25112.624306], [1517105880000, 5.401e-05, 5.405e-05, 5.4e-05, 5.405e-05, 6690.39932716], [1517105940000, 5.4e-05, 5.405e-05, 5.4e-05, 5.405e-05, 8578.02276038], [1517106000000, 5.404e-05, 5.405e-05, 5.404e-05, 5.404e-05, 5986.42129614], [1517106060000, 5.404e-05, 5.405e-05, 5.4e-05, 5.4e-05, 13219.72432473], [1517106120000, 5.405e-05, 5.405e-05, 5.403e-05, 5.403e-05, 423.35503951], [1517106180000, 5.403e-05, 5.403e-05, 5.403e-05, 5.403e-05, 2915.52874525], [1517106240000, 5.404e-05, 5.405e-05, 5.402e-05, 5.402e-05, 23243.29613876], [1517106300000, 5.404e-05, 5.405e-05, 5.402e-05, 5.403e-05, 4106.36659526], [1517106360000, 5.403e-05, 5.403e-05, 5.402e-05, 5.402e-05, 7101.49107407], [1517106420000, 5.405e-05, 5.406e-05, 5.402e-05, 5.406e-05, 13627.68814294], [1517106480000, 5.406e-05, 5.406e-05, 5.406e-05, 5.406e-05, 349.12744273], [1517106540000, 5.406e-05, 5.406e-05, 5.404e-05, 5.406e-05, 11370.78379274], [1517106600000, 5.404e-05, 5.407e-05, 5.404e-05, 5.404e-05, 8178.90228776], [1517106660000, 5.404e-05, 5.404e-05, 5.404e-05, 5.404e-05, 1040.8031088], [1517106720000, 5.404e-05, 5.407e-05, 5.402e-05, 5.402e-05, 12509.41118367], [1517106780000, 5.402e-05, 5.407e-05, 5.402e-05, 5.406e-05, 6055.58731222], [1517106840000, 5.407e-05, 5.407e-05, 5.402e-05, 5.407e-05, 17467.24040595], [1517106900000, 5.407e-05, 5.407e-05, 5.407e-05, 5.407e-05, 29856.00073213], [1517106960000, 5.407e-05, 5.407e-05, 5.407e-05, 5.407e-05, 103327.78976446], [1517107020000, 5.407e-05, 5.407e-05, 5.402e-05, 5.402e-05, 22965.98236647], [1517107080000, 5.404e-05, 5.405e-05, 5.402e-05, 5.404e-05, 13746.74172876], [1517107140000, 5.404e-05, 5.404e-05, 5.402e-05, 5.404e-05, 10626.38804745], [1517107200000, 5.404e-05, 5.404e-05, 5.402e-05, 5.403e-05, 6793.22391099], [1517107260000, 5.402e-05, 5.404e-05, 5.402e-05, 5.404e-05, 14798.94144372], [1517107320000, 5.403e-05, 5.404e-05, 5.403e-05, 5.404e-05, 2677.18417789], [1517107380000, 5.403e-05, 5.404e-05, 5.403e-05, 5.403e-05, 7016.36884732], [1517107440000, 5.404e-05, 5.404e-05, 5.403e-05, 5.403e-05, 25808.84402582], [1517107500000, 5.403e-05, 5.404e-05, 5.403e-05, 5.404e-05, 24626.84642363], [1517107560000, 5.404e-05, 5.404e-05, 5.403e-05, 5.403e-05, 21045.16613568], [1517107620000, 5.404e-05, 5.407e-05, 5.403e-05, 5.407e-05, 313201.83764606], [1517107680000, 5.41e-05, 5.412e-05, 5.41e-05, 5.412e-05, 5624.85554169], [1517107740000, 5.421e-05, 5.421e-05, 5.412e-05, 5.421e-05, 1899.76182628], [1517107800000, 5.413e-05, 5.413e-05, 5.413e-05, 5.413e-05, 2750.84425291], [1517107920000, 5.415e-05, 5.415e-05, 5.413e-05, 5.415e-05, 6977.57456516], [1517107980000, 5.415e-05, 5.415e-05, 5.414e-05, 5.415e-05, 3372.51203946], [1517108040000, 5.414e-05, 5.414e-05, 5.413e-05, 5.414e-05, 25138.75338198], [1517108100000, 5.413e-05, 5.415e-05, 5.412e-05, 5.415e-05, 18134.50262809], [1517108160000, 5.415e-05, 5.415e-05, 5.415e-05, 5.415e-05, 6025.83292461], [1517108220000, 5.412e-05, 5.421e-05, 5.412e-05, 5.421e-05, 32209.1525511], [1517108280000, 5.421e-05, 5.421e-05, 5.421e-05, 5.421e-05, 5705.99559052], [1517108340000, 5.421e-05, 5.421e-05, 5.421e-05, 5.421e-05, 750.05293243], [1517108400000, 5.421e-05, 5.423e-05, 5.421e-05, 5.423e-05, 9291.1214542], [1517108460000, 5.423e-05, 5.423e-05, 5.416e-05, 5.416e-05, 5502.68826019], [1517108520000, 5.421e-05, 5.423e-05, 5.415e-05, 5.423e-05, 13245.06248462], [1517108580000, 5.423e-05, 5.423e-05, 5.415e-05, 5.415e-05, 13004.6067126], [1517108640000, 5.415e-05, 5.423e-05, 5.415e-05, 5.423e-05, 10361.0], [1517108700000, 5.423e-05, 5.423e-05, 5.423e-05, 5.423e-05, 2881.89812406], [1517108760000, 5.415e-05, 5.415e-05, 5.403e-05, 5.415e-05, 7823.42475183], [1517108820000, 5.403e-05, 5.403e-05, 5.4e-05, 5.402e-05, 14295.27005939], [1517108880000, 5.403e-05, 5.415e-05, 5.402e-05, 5.402e-05, 5972.42365843], [1517108940000, 5.4e-05, 5.4e-05, 5.4e-05, 5.4e-05, 429.71936734], [1517109000000, 5.402e-05, 5.402e-05, 5.4e-05, 5.4e-05, 2243.85315542], [1517109060000, 5.401e-05, 5.402e-05, 5.401e-05, 5.402e-05, 1399.15470218], [1517109120000, 5.401e-05, 5.402e-05, 5.4e-05, 5.401e-05, 17170.50469702], [1517109180000, 5.4e-05, 5.402e-05, 5.4e-05, 5.402e-05, 10049.28631523], [1517109240000, 5.402e-05, 5.425e-05, 5.402e-05, 5.415e-05, 13929.42919224], [1517109300000, 5.423e-05, 5.425e-05, 5.415e-05, 5.425e-05, 1974.66743571], [1517109360000, 5.415e-05, 5.42e-05, 5.4e-05, 5.42e-05, 8891.43263752], [1517109420000, 5.42e-05, 5.423e-05, 5.42e-05, 5.423e-05, 2199.4472635], [1517109480000, 5.421e-05, 5.423e-05, 5.42e-05, 5.42e-05, 6763.06782434], [1517109540000, 5.421e-05, 5.421e-05, 5.421e-05, 5.421e-05, 4639.03100271], [1517109600000, 5.421e-05, 5.421e-05, 5.421e-05, 5.421e-05, 1685.70085774], [1517109660000, 5.421e-05, 5.422e-05, 5.421e-05, 5.421e-05, 8623.72418887], [1517109720000, 5.421e-05, 5.425e-05, 5.421e-05, 5.422e-05, 38503.95965], [1517109780000, 5.422e-05, 5.424e-05, 5.421e-05, 5.421e-05, 12184.26306569], [1517109840000, 5.424e-05, 5.425e-05, 5.421e-05, 5.421e-05, 4178.71563159], [1517109900000, 5.422e-05, 5.424e-05, 5.422e-05, 5.422e-05, 924.84377717], [1517109960000, 5.422e-05, 5.423e-05, 5.421e-05, 5.422e-05, 3561.18356022], [1517110020000, 5.421e-05, 5.434e-05, 5.421e-05, 5.434e-05, 44319.84203018], [1517110080000, 5.428e-05, 5.434e-05, 5.422e-05, 5.424e-05, 67882.41380098], [1517110140000, 5.424e-05, 5.433e-05, 5.424e-05, 5.433e-05, 929.3357888], [1517110200000, 5.434e-05, 5.434e-05, 5.422e-05, 5.424e-05, 28332.08084625], [1517110260000, 5.422e-05, 5.424e-05, 5.422e-05, 5.424e-05, 1291.58695408], [1517110320000, 5.424e-05, 5.424e-05, 5.422e-05, 5.424e-05, 11386.81348809], [1517110380000, 5.422e-05, 5.422e-05, 5.421e-05, 5.422e-05, 2704.99540795], [1517110440000, 5.422e-05, 5.423e-05, 5.421e-05, 5.421e-05, 5111.50869886], [1517110500000, 5.421e-05, 5.434e-05, 5.421e-05, 5.421e-05, 31617.71874308], [1517110560000, 5.421e-05, 5.432e-05, 5.421e-05, 5.423e-05, 5793.56544094], [1517110620000, 5.424e-05, 5.424e-05, 5.423e-05, 5.424e-05, 1491.79434734], [1517110680000, 5.423e-05, 5.423e-05, 5.422e-05, 5.422e-05, 22098.60974766], [1517110740000, 5.423e-05, 5.423e-05, 5.422e-05, 5.422e-05, 11333.26995582], [1517110800000, 5.422e-05, 5.422e-05, 5.422e-05, 5.422e-05, 1067.50244036], [1517110860000, 5.422e-05, 5.423e-05, 5.422e-05, 5.422e-05, 6018.10007175], [1517110920000, 5.423e-05, 5.424e-05, 5.422e-05, 5.422e-05, 8118.03754285], [1517110980000, 5.421e-05, 5.422e-05, 5.421e-05, 5.421e-05, 25629.42554804], [1517111040000, 5.421e-05, 5.422e-05, 5.421e-05, 5.421e-05, 11730.3167249], [1517111100000, 5.422e-05, 5.422e-05, 5.421e-05, 5.422e-05, 1284.58575217], [1517111160000, 5.421e-05, 5.422e-05, 5.421e-05, 5.421e-05, 15150.12532664], [1517111220000, 5.421e-05, 5.422e-05, 5.421e-05, 5.422e-05, 4318.15846757], [1517111280000, 5.422e-05, 5.422e-05, 5.421e-05, 5.421e-05, 5338.05456901], [1517111340000, 5.421e-05, 5.422e-05, 5.421e-05, 5.421e-05, 8568.45956101], [1517111400000, 5.421e-05, 5.422e-05, 5.421e-05, 5.422e-05, 1679.54696302], [1517111460000, 5.421e-05, 5.422e-05, 5.421e-05, 5.422e-05, 8195.41090093], [1517111520000, 5.422e-05, 5.422e-05, 5.421e-05, 5.421e-05, 2657.18294947], [1517111580000, 5.421e-05, 5.422e-05, 5.421e-05, 5.421e-05, 10780.70840821], [1517111640000, 5.422e-05, 5.422e-05, 5.421e-05, 5.421e-05, 19710.24228928], [1517111700000, 5.421e-05, 5.421e-05, 5.421e-05, 5.421e-05, 20052.96092612], [1517111760000, 5.421e-05, 5.421e-05, 5.421e-05, 5.421e-05, 5138.11430052], [1517111820000, 5.421e-05, 5.421e-05, 5.421e-05, 5.421e-05, 2226.40333617], [1517111880000, 5.421e-05, 5.421e-05, 5.421e-05, 5.421e-05, 34333.20385243], [1517111940000, 5.421e-05, 5.422e-05, 5.421e-05, 5.421e-05, 2710.9701753], [1517112000000, 5.421e-05, 5.422e-05, 5.421e-05, 5.422e-05, 554.81284738], [1517112060000, 5.421e-05, 5.422e-05, 5.421e-05, 5.421e-05, 13076.33644704], [1517112120000, 5.422e-05, 5.422e-05, 5.421e-05, 5.421e-05, 2717.5744018], [1517112180000, 5.422e-05, 5.422e-05, 5.42e-05, 5.421e-05, 6459.06833715], [1517112240000, 5.42e-05, 5.422e-05, 5.42e-05, 5.42e-05, 7458.84520607], [1517112300000, 5.421e-05, 5.422e-05, 5.42e-05, 5.42e-05, 6637.10727662], [1517112360000, 5.42e-05, 5.421e-05, 5.42e-05, 5.42e-05, 187.9094869], [1517112420000, 5.421e-05, 5.422e-05, 5.42e-05, 5.42e-05, 6072.20131666], [1517112480000, 5.42e-05, 5.422e-05, 5.42e-05, 5.42e-05, 503.14716996], [1517112540000, 5.42e-05, 5.422e-05, 5.42e-05, 5.422e-05, 18226.00448972], [1517112600000, 5.42e-05, 5.422e-05, 5.42e-05, 5.42e-05, 4533.44531728], [1517112660000, 5.42e-05, 5.422e-05, 5.42e-05, 5.42e-05, 1436.28010731], [1517112720000, 5.42e-05, 5.422e-05, 5.42e-05, 5.42e-05, 8939.72097574], [1517112780000, 5.42e-05, 5.421e-05, 5.42e-05, 5.421e-05, 2680.52224946], [1517112840000, 5.42e-05, 5.421e-05, 5.419e-05, 5.42e-05, 25601.04558595], [1517112900000, 5.42e-05, 5.422e-05, 5.42e-05, 5.422e-05, 25796.70560014], [1517112960000, 5.42e-05, 5.421e-05, 5.42e-05, 5.42e-05, 268.71508543], [1517113020000, 5.421e-05, 5.422e-05, 5.42e-05, 5.422e-05, 9382.21717896], [1517113080000, 5.421e-05, 5.421e-05, 5.42e-05, 5.421e-05, 5353.84212917], [1517113140000, 5.42e-05, 5.421e-05, 5.42e-05, 5.421e-05, 4241.84010139], [1517113200000, 5.42e-05, 5.422e-05, 5.42e-05, 5.422e-05, 8428.52643689], [1517113260000, 5.422e-05, 5.422e-05, 5.422e-05, 5.422e-05, 1147.0839105], [1517113320000, 5.422e-05, 5.422e-05, 5.422e-05, 5.422e-05, 329.47247046], [1517113380000, 5.42e-05, 5.422e-05, 5.42e-05, 5.422e-05, 2783.87395874], [1517113440000, 5.421e-05, 5.422e-05, 5.421e-05, 5.422e-05, 4897.16889894], [1517113500000, 5.421e-05, 5.422e-05, 5.421e-05, 5.422e-05, 1095.30078435], [1517113560000, 5.422e-05, 5.422e-05, 5.42e-05, 5.42e-05, 12101.76982095], [1517113620000, 5.42e-05, 5.422e-05, 5.42e-05, 5.422e-05, 992.1436532], [1517113680000, 5.422e-05, 5.422e-05, 5.42e-05, 5.422e-05, 5096.07647502], [1517113740000, 5.42e-05, 5.42e-05, 5.419e-05, 5.419e-05, 9369.42528727], [1517113800000, 5.419e-05, 5.419e-05, 5.417e-05, 5.419e-05, 6617.53886036], [1517113860000, 5.419e-05, 5.419e-05, 5.417e-05, 5.419e-05, 10580.61385749], [1517113920000, 5.417e-05, 5.417e-05, 5.415e-05, 5.415e-05, 16500.35160828], [1517113980000, 5.415e-05, 5.417e-05, 5.41e-05, 5.415e-05, 1939.98971571], [1517114040000, 5.415e-05, 5.415e-05, 5.41e-05, 5.41e-05, 1468.56677786], [1517114100000, 5.41e-05, 5.41e-05, 5.405e-05, 5.409e-05, 33199.18274729], [1517114160000, 5.409e-05, 5.41e-05, 5.409e-05, 5.41e-05, 4285.21264314], [1517114220000, 5.41e-05, 5.41e-05, 5.409e-05, 5.409e-05, 4729.66300959], [1517114280000, 5.407e-05, 5.407e-05, 5.407e-05, 5.407e-05, 2244.92681568], [1517114340000, 5.406e-05, 5.406e-05, 5.403e-05, 5.405e-05, 37255.50395995], [1517114400000, 5.402e-05, 5.405e-05, 5.402e-05, 5.405e-05, 5606.40885028], [1517114460000, 5.402e-05, 5.405e-05, 5.402e-05, 5.405e-05, 2900.80099905], [1517114520000, 5.403e-05, 5.41e-05, 5.403e-05, 5.41e-05, 7135.74063539], [1517114580000, 5.41e-05, 5.41e-05, 5.405e-05, 5.41e-05, 17025.67436899], [1517114640000, 5.41e-05, 5.41e-05, 5.402e-05, 5.403e-05, 5710.91072385], [1517114700000, 5.403e-05, 5.403e-05, 5.403e-05, 5.403e-05, 78704.27466132], [1517114760000, 5.404e-05, 5.404e-05, 5.403e-05, 5.403e-05, 13629.51865155], [1517114820000, 5.403e-05, 5.404e-05, 5.403e-05, 5.403e-05, 5655.72354403], [1517114880000, 5.404e-05, 5.404e-05, 5.403e-05, 5.404e-05, 1314.57468467], [1517114940000, 5.404e-05, 5.405e-05, 5.403e-05, 5.405e-05, 18193.94395939], [1517115000000, 5.406e-05, 5.417e-05, 5.4e-05, 5.417e-05, 108266.33287439], [1517115060000, 5.417e-05, 5.417e-05, 5.417e-05, 5.417e-05, 743.23577537], [1517115120000, 5.417e-05, 5.422e-05, 5.417e-05, 5.419e-05, 1463.73608606], [1517115180000, 5.422e-05, 5.422e-05, 5.412e-05, 5.412e-05, 6595.25689351], [1517115240000, 5.422e-05, 5.422e-05, 5.413e-05, 5.421e-05, 63004.90165839], [1517115300000, 5.422e-05, 5.435e-05, 5.412e-05, 5.412e-05, 162149.79442151], [1517115360000, 5.43e-05, 5.445e-05, 5.415e-05, 5.43e-05, 100028.53945568], [1517115420000, 5.43e-05, 5.43e-05, 5.416e-05, 5.428e-05, 4223.40562279], [1517115480000, 5.416e-05, 5.428e-05, 5.416e-05, 5.419e-05, 19018.69778675], [1517115540000, 5.428e-05, 5.429e-05, 5.419e-05, 5.429e-05, 30914.75105542], [1517115600000, 5.42e-05, 5.431e-05, 5.42e-05, 5.424e-05, 17967.45606082], [1517115660000, 5.428e-05, 5.449e-05, 5.426e-05, 5.44e-05, 27595.80952338], [1517115720000, 5.44e-05, 5.455e-05, 5.44e-05, 5.454e-05, 31439.56166909], [1517115780000, 5.443e-05, 5.456e-05, 5.443e-05, 5.446e-05, 17703.78712706], [1517115840000, 5.446e-05, 5.458e-05, 5.443e-05, 5.443e-05, 81224.62191179], [1517115900000, 5.443e-05, 5.458e-05, 5.442e-05, 5.442e-05, 133230.76980386], [1517115960000, 5.442e-05, 5.488e-05, 5.442e-05, 5.465e-05, 113061.53391837], [1517116020000, 5.465e-05, 5.492e-05, 5.453e-05, 5.484e-05, 188314.36054532], [1517116080000, 5.49e-05, 5.493e-05, 5.473e-05, 5.476e-05, 55433.54735272], [1517116140000, 5.477e-05, 5.477e-05, 5.473e-05, 5.473e-05, 52961.01013351], [1517116200000, 5.473e-05, 5.476e-05, 5.453e-05, 5.453e-05, 108411.75875491], [1517116260000, 5.453e-05, 5.476e-05, 5.446e-05, 5.447e-05, 33441.47043658], [1517116320000, 5.448e-05, 5.462e-05, 5.447e-05, 5.462e-05, 47079.92476698], [1517116380000, 5.453e-05, 5.494e-05, 5.453e-05, 5.464e-05, 26514.91650648], [1517116440000, 5.465e-05, 5.488e-05, 5.465e-05, 5.47e-05, 4763.38238558], [1517116500000, 5.486e-05, 5.487e-05, 5.471e-05, 5.484e-05, 87985.66111034], [1517116560000, 5.484e-05, 5.494e-05, 5.473e-05, 5.484e-05, 72790.96862599], [1517116620000, 5.483e-05, 5.484e-05, 5.473e-05, 5.473e-05, 25889.21627472], [1517116680000, 5.483e-05, 5.485e-05, 5.476e-05, 5.485e-05, 27470.90956486], [1517116740000, 5.485e-05, 5.497e-05, 5.472e-05, 5.472e-05, 126350.98116903], [1517116800000, 5.472e-05, 5.499e-05, 5.47e-05, 5.47e-05, 147843.69733664], [1517116860000, 5.471e-05, 5.499e-05, 5.471e-05, 5.476e-05, 22295.2818524], [1517116920000, 5.477e-05, 5.478e-05, 5.472e-05, 5.474e-05, 26137.56940481], [1517116980000, 5.473e-05, 5.476e-05, 5.473e-05, 5.476e-05, 4417.18600864], [1517117040000, 5.477e-05, 5.508e-05, 5.464e-05, 5.508e-05, 108765.36790716], [1517117100000, 5.5e-05, 5.508e-05, 5.478e-05, 5.5e-05, 16929.82515173], [1517117160000, 5.5e-05, 5.5e-05, 5.478e-05, 5.498e-05, 23475.94697386], [1517117220000, 5.498e-05, 5.5e-05, 5.48e-05, 5.497e-05, 50296.22600037], [1517117280000, 5.496e-05, 5.496e-05, 5.479e-05, 5.481e-05, 12538.91985502], [1517117340000, 5.481e-05, 5.5e-05, 5.479e-05, 5.5e-05, 38260.72950167], [1517117400000, 5.5e-05, 5.51e-05, 5.478e-05, 5.509e-05, 24121.63982268], [1517117460000, 5.509e-05, 5.509e-05, 5.479e-05, 5.483e-05, 6803.92033321], [1517117520000, 5.483e-05, 5.508e-05, 5.481e-05, 5.485e-05, 29187.14022349], [1517117580000, 5.5e-05, 5.508e-05, 5.485e-05, 5.487e-05, 21120.30687299], [1517117640000, 5.487e-05, 5.487e-05, 5.485e-05, 5.487e-05, 12722.57576809], [1517117700000, 5.487e-05, 5.487e-05, 5.486e-05, 5.487e-05, 24242.51982909], [1517117760000, 5.488e-05, 5.488e-05, 5.486e-05, 5.486e-05, 67373.52002292], [1517117820000, 5.486e-05, 5.487e-05, 5.486e-05, 5.486e-05, 12608.73031348], [1517117880000, 5.486e-05, 5.487e-05, 5.486e-05, 5.486e-05, 34045.14168682], [1517117940000, 5.486e-05, 5.487e-05, 5.483e-05, 5.487e-05, 78656.33696146], [1517118000000, 5.486e-05, 5.486e-05, 5.478e-05, 5.478e-05, 4001.28439721], [1517118060000, 5.483e-05, 5.485e-05, 5.483e-05, 5.484e-05, 8144.20259709], [1517118120000, 5.485e-05, 5.485e-05, 5.484e-05, 5.485e-05, 13452.17181786], [1517118180000, 5.485e-05, 5.485e-05, 5.48e-05, 5.48e-05, 12142.64579011], [1517118240000, 5.48e-05, 5.48e-05, 5.458e-05, 5.475e-05, 4600.94401671], [1517118300000, 5.475e-05, 5.475e-05, 5.458e-05, 5.458e-05, 31648.0273972], [1517118360000, 5.46e-05, 5.473e-05, 5.459e-05, 5.473e-05, 6051.17203122], [1517118420000, 5.472e-05, 5.478e-05, 5.471e-05, 5.472e-05, 45353.01518578], [1517118480000, 5.472e-05, 5.478e-05, 5.472e-05, 5.478e-05, 1581.04374276], [1517118540000, 5.472e-05, 5.478e-05, 5.456e-05, 5.456e-05, 59163.14568213], [1517118600000, 5.456e-05, 5.478e-05, 5.456e-05, 5.471e-05, 24077.81867599], [1517118660000, 5.474e-05, 5.484e-05, 5.465e-05, 5.471e-05, 1306.06734199], [1517118720000, 5.471e-05, 5.484e-05, 5.471e-05, 5.471e-05, 1403.27530692], [1517118780000, 5.484e-05, 5.484e-05, 5.471e-05, 5.471e-05, 7103.70121165], [1517118840000, 5.471e-05, 5.487e-05, 5.471e-05, 5.472e-05, 98903.41846792], [1517118900000, 5.472e-05, 5.487e-05, 5.471e-05, 5.471e-05, 21391.90392886], [1517118960000, 5.471e-05, 5.481e-05, 5.471e-05, 5.471e-05, 8244.8125981], [1517119020000, 5.478e-05, 5.486e-05, 5.471e-05, 5.471e-05, 8569.46938093], [1517119080000, 5.485e-05, 5.485e-05, 5.473e-05, 5.473e-05, 1998.02691952], [1517119140000, 5.474e-05, 5.485e-05, 5.473e-05, 5.475e-05, 4552.56853713], [1517119200000, 5.474e-05, 5.474e-05, 5.472e-05, 5.474e-05, 7691.83479446], [1517119260000, 5.474e-05, 5.475e-05, 5.474e-05, 5.475e-05, 17949.88838042], [1517119320000, 5.474e-05, 5.475e-05, 5.474e-05, 5.474e-05, 6868.40826188], [1517119380000, 5.474e-05, 5.475e-05, 5.474e-05, 5.475e-05, 21687.20648447], [1517119440000, 5.472e-05, 5.475e-05, 5.471e-05, 5.471e-05, 2365.2562102], [1517119500000, 5.471e-05, 5.472e-05, 5.42e-05, 5.467e-05, 107928.69993343], [1517119560000, 5.467e-05, 5.467e-05, 5.43e-05, 5.465e-05, 9081.28654286], [1517119620000, 5.465e-05, 5.465e-05, 5.42e-05, 5.465e-05, 25114.8858947], [1517119680000, 5.463e-05, 5.463e-05, 5.441e-05, 5.441e-05, 14043.18610632], [1517119740000, 5.441e-05, 5.442e-05, 5.431e-05, 5.442e-05, 77469.09307944], [1517119800000, 5.442e-05, 5.442e-05, 5.441e-05, 5.442e-05, 5747.7623096], [1517119860000, 5.442e-05, 5.442e-05, 5.442e-05, 5.442e-05, 8388.47481449], [1517119920000, 5.442e-05, 5.442e-05, 5.441e-05, 5.441e-05, 19040.69785276], [1517119980000, 5.441e-05, 5.441e-05, 5.44e-05, 5.441e-05, 1645.0], [1517120040000, 5.426e-05, 5.441e-05, 5.426e-05, 5.441e-05, 8976.02301215], [1517120100000, 5.43e-05, 5.441e-05, 5.426e-05, 5.441e-05, 22331.61567101], [1517120160000, 5.441e-05, 5.442e-05, 5.434e-05, 5.442e-05, 86805.45937454], [1517120220000, 5.45e-05, 5.465e-05, 5.442e-05, 5.453e-05, 78311.7146948], [1517120280000, 5.453e-05, 5.453e-05, 5.451e-05, 5.453e-05, 132635.27820485], [1517120340000, 5.453e-05, 5.453e-05, 5.452e-05, 5.452e-05, 932.20853226], [1517120400000, 5.453e-05, 5.465e-05, 5.452e-05, 5.453e-05, 921.28546156], [1517120460000, 5.453e-05, 5.465e-05, 5.453e-05, 5.453e-05, 6802.69073092], [1517120520000, 5.455e-05, 5.465e-05, 5.455e-05, 5.465e-05, 9095.44515726], [1517120580000, 5.465e-05, 5.47e-05, 5.453e-05, 5.453e-05, 21760.312789], [1517120640000, 5.453e-05, 5.455e-05, 5.453e-05, 5.453e-05, 2437.51890968], [1517120700000, 5.453e-05, 5.453e-05, 5.452e-05, 5.453e-05, 4785.6506203], [1517120760000, 5.453e-05, 5.453e-05, 5.452e-05, 5.452e-05, 4461.98873973], [1517120820000, 5.453e-05, 5.454e-05, 5.452e-05, 5.453e-05, 5236.4788623], [1517120880000, 5.453e-05, 5.453e-05, 5.452e-05, 5.452e-05, 1292.33659479], [1517120940000, 5.452e-05, 5.453e-05, 5.452e-05, 5.452e-05, 19363.49037001], [1517121000000, 5.453e-05, 5.453e-05, 5.452e-05, 5.452e-05, 11442.42309256], [1517121060000, 5.452e-05, 5.453e-05, 5.452e-05, 5.452e-05, 5173.34523498], [1517121120000, 5.452e-05, 5.454e-05, 5.452e-05, 5.454e-05, 23411.10925653], [1517121180000, 5.454e-05, 5.454e-05, 5.453e-05, 5.453e-05, 21619.03086711], [1517121240000, 5.452e-05, 5.453e-05, 5.452e-05, 5.452e-05, 5600.43251754], [1517121300000, 5.452e-05, 5.453e-05, 5.452e-05, 5.453e-05, 2771.28016845], [1517121360000, 5.453e-05, 5.453e-05, 5.452e-05, 5.452e-05, 13458.53286947], [1517121420000, 5.452e-05, 5.453e-05, 5.452e-05, 5.452e-05, 5965.32960702], [1517121480000, 5.452e-05, 5.453e-05, 5.452e-05, 5.452e-05, 37154.4821953], [1517121540000, 5.453e-05, 5.454e-05, 5.452e-05, 5.454e-05, 89245.07116554], [1517121600000, 5.454e-05, 5.454e-05, 5.454e-05, 5.454e-05, 1974.06154579], [1517121660000, 5.462e-05, 5.462e-05, 5.454e-05, 5.457e-05, 6409.61362665], [1517121720000, 5.455e-05, 5.457e-05, 5.454e-05, 5.454e-05, 6965.25840011], [1517121780000, 5.454e-05, 5.455e-05, 5.453e-05, 5.455e-05, 11735.0300748], [1517121840000, 5.455e-05, 5.455e-05, 5.454e-05, 5.455e-05, 52311.20636461], [1517121900000, 5.453e-05, 5.453e-05, 5.444e-05, 5.451e-05, 14903.52133487], [1517121960000, 5.444e-05, 5.451e-05, 5.43e-05, 5.43e-05, 3103.77329297], [1517122020000, 5.43e-05, 5.445e-05, 5.428e-05, 5.432e-05, 27937.66349904], [1517122080000, 5.434e-05, 5.44e-05, 5.434e-05, 5.434e-05, 14048.08572664], [1517122140000, 5.44e-05, 5.44e-05, 5.434e-05, 5.434e-05, 15711.02873721], [1517122200000, 5.434e-05, 5.439e-05, 5.427e-05, 5.432e-05, 59520.289709], [1517122260000, 5.432e-05, 5.432e-05, 5.423e-05, 5.425e-05, 98380.62127663], [1517122320000, 5.426e-05, 5.434e-05, 5.42e-05, 5.428e-05, 65713.26826385], [1517122380000, 5.428e-05, 5.433e-05, 5.406e-05, 5.42e-05, 140245.35438957], [1517122440000, 5.42e-05, 5.426e-05, 5.4e-05, 5.4e-05, 87201.20346647], [1517122500000, 5.403e-05, 5.416e-05, 5.403e-05, 5.41e-05, 57679.44907542], [1517122560000, 5.41e-05, 5.416e-05, 5.41e-05, 5.416e-05, 45910.27952162], [1517122620000, 5.416e-05, 5.429e-05, 5.416e-05, 5.423e-05, 31766.6425704], [1517122680000, 5.423e-05, 5.43e-05, 5.423e-05, 5.429e-05, 51389.05656554], [1517122740000, 5.429e-05, 5.429e-05, 5.412e-05, 5.413e-05, 26481.5685999], [1517122800000, 5.413e-05, 5.429e-05, 5.412e-05, 5.429e-05, 22305.41224527], [1517122860000, 5.42e-05, 5.428e-05, 5.418e-05, 5.428e-05, 10440.33197312], [1517122920000, 5.426e-05, 5.428e-05, 5.42e-05, 5.42e-05, 25162.42157929], [1517122980000, 5.42e-05, 5.42e-05, 5.42e-05, 5.42e-05, 1965.01825658], [1517123040000, 5.42e-05, 5.42e-05, 5.414e-05, 5.415e-05, 11074.33143674], [1517123100000, 5.416e-05, 5.416e-05, 5.416e-05, 5.416e-05, 1440.19054653], [1517123160000, 5.415e-05, 5.416e-05, 5.415e-05, 5.415e-05, 26259.72159899], [1517123220000, 5.415e-05, 5.416e-05, 5.415e-05, 5.415e-05, 16720.99062169], [1517123280000, 5.415e-05, 5.416e-05, 5.415e-05, 5.415e-05, 24328.52354679], [1517123340000, 5.415e-05, 5.415e-05, 5.414e-05, 5.414e-05, 23222.75835485], [1517123400000, 5.415e-05, 5.416e-05, 5.414e-05, 5.414e-05, 21681.19372754], [1517123460000, 5.416e-05, 5.42e-05, 5.414e-05, 5.414e-05, 50650.06094278], [1517123520000, 5.415e-05, 5.419e-05, 5.415e-05, 5.416e-05, 12055.76274468], [1517123580000, 5.416e-05, 5.416e-05, 5.415e-05, 5.415e-05, 7129.04894799], [1517123640000, 5.416e-05, 5.437e-05, 5.416e-05, 5.437e-05, 48198.39397797], [1517123700000, 5.416e-05, 5.428e-05, 5.41e-05, 5.41e-05, 38409.29855372], [1517123760000, 5.41e-05, 5.415e-05, 5.41e-05, 5.41e-05, 3374.71735001], [1517123820000, 5.405e-05, 5.414e-05, 5.401e-05, 5.414e-05, 11057.60273204], [1517123880000, 5.402e-05, 5.412e-05, 5.4e-05, 5.4e-05, 10952.06718453], [1517123940000, 5.4e-05, 5.409e-05, 5.4e-05, 5.4e-05, 4528.74560569], [1517124000000, 5.405e-05, 5.405e-05, 5.4e-05, 5.4e-05, 5454.88449763], [1517124060000, 5.4e-05, 5.404e-05, 5.399e-05, 5.399e-05, 17269.86527111], [1517124120000, 5.4e-05, 5.4e-05, 5.398e-05, 5.399e-05, 22904.83101687], [1517124180000, 5.398e-05, 5.399e-05, 5.397e-05, 5.397e-05, 14405.87339104], [1517124240000, 5.397e-05, 5.4e-05, 5.396e-05, 5.396e-05, 35582.64397329], [1517124300000, 5.397e-05, 5.4e-05, 5.396e-05, 5.396e-05, 36697.80340908], [1517124360000, 5.396e-05, 5.396e-05, 5.386e-05, 5.387e-05, 22286.87257302], [1517124420000, 5.386e-05, 5.386e-05, 5.384e-05, 5.386e-05, 15776.48800242], [1517124480000, 5.386e-05, 5.39e-05, 5.385e-05, 5.387e-05, 97360.0243721], [1517124540000, 5.39e-05, 5.399e-05, 5.387e-05, 5.387e-05, 27716.69427711], [1517124600000, 5.386e-05, 5.387e-05, 5.38e-05, 5.382e-05, 38171.36619277], [1517124660000, 5.382e-05, 5.394e-05, 5.381e-05, 5.394e-05, 61130.36761892], [1517124720000, 5.394e-05, 5.4e-05, 5.387e-05, 5.4e-05, 11032.6545971], [1517124780000, 5.4e-05, 5.4e-05, 5.392e-05, 5.4e-05, 7665.57159323], [1517124840000, 5.41e-05, 5.41e-05, 5.38e-05, 5.381e-05, 68971.81662054], [1517124900000, 5.39e-05, 5.39e-05, 5.382e-05, 5.39e-05, 63413.47072073], [1517124960000, 5.383e-05, 5.39e-05, 5.383e-05, 5.39e-05, 114244.41989474], [1517125020000, 5.39e-05, 5.4e-05, 5.39e-05, 5.4e-05, 1597.96161473], [1517125080000, 5.4e-05, 5.41e-05, 5.395e-05, 5.4e-05, 7023.05851389], [1517125140000, 5.4e-05, 5.41e-05, 5.4e-05, 5.41e-05, 3358.26908043], [1517125200000, 5.41e-05, 5.41e-05, 5.395e-05, 5.4e-05, 28142.98213785], [1517125260000, 5.4e-05, 5.4e-05, 5.392e-05, 5.392e-05, 13881.51460071], [1517125320000, 5.395e-05, 5.395e-05, 5.392e-05, 5.394e-05, 1642.75643234], [1517125380000, 5.392e-05, 5.392e-05, 5.391e-05, 5.391e-05, 2783.59646498], [1517125440000, 5.39e-05, 5.391e-05, 5.39e-05, 5.39e-05, 6940.98785461], [1517125500000, 5.391e-05, 5.391e-05, 5.386e-05, 5.386e-05, 4432.40728641], [1517125560000, 5.386e-05, 5.388e-05, 5.381e-05, 5.386e-05, 19836.44118091], [1517125620000, 5.386e-05, 5.386e-05, 5.385e-05, 5.386e-05, 15523.28897285], [1517125680000, 5.386e-05, 5.388e-05, 5.384e-05, 5.386e-05, 10305.37708085], [1517125740000, 5.386e-05, 5.388e-05, 5.381e-05, 5.388e-05, 5407.34698854], [1517125800000, 5.395e-05, 5.405e-05, 5.38e-05, 5.405e-05, 51042.38784955], [1517125860000, 5.405e-05, 5.41e-05, 5.395e-05, 5.405e-05, 11562.74027634], [1517125920000, 5.405e-05, 5.405e-05, 5.395e-05, 5.395e-05, 8685.88668163], [1517125980000, 5.395e-05, 5.405e-05, 5.395e-05, 5.395e-05, 12770.34456949], [1517126040000, 5.395e-05, 5.402e-05, 5.392e-05, 5.392e-05, 4677.23875887], [1517126100000, 5.392e-05, 5.4e-05, 5.392e-05, 5.392e-05, 18615.62029075], [1517126160000, 5.392e-05, 5.393e-05, 5.392e-05, 5.392e-05, 36782.98479269], [1517126220000, 5.392e-05, 5.393e-05, 5.39e-05, 5.393e-05, 54066.27724261], [1517126280000, 5.393e-05, 5.393e-05, 5.392e-05, 5.393e-05, 17675.82993467], [1517126340000, 5.393e-05, 5.401e-05, 5.393e-05, 5.395e-05, 27026.87687726], [1517126400000, 5.395e-05, 5.409e-05, 5.394e-05, 5.398e-05, 23822.86578848], [1517126460000, 5.408e-05, 5.41e-05, 5.399e-05, 5.407e-05, 43082.11105631], [1517126520000, 5.407e-05, 5.41e-05, 5.4e-05, 5.407e-05, 61137.30704936], [1517126580000, 5.407e-05, 5.407e-05, 5.4e-05, 5.4e-05, 7915.43516697], [1517126640000, 5.401e-05, 5.406e-05, 5.4e-05, 5.402e-05, 5020.61070635], [1517126700000, 5.405e-05, 5.407e-05, 5.402e-05, 5.404e-05, 28585.99925574], [1517126760000, 5.404e-05, 5.406e-05, 5.4e-05, 5.405e-05, 10946.89936073], [1517126820000, 5.406e-05, 5.406e-05, 5.404e-05, 5.404e-05, 23070.51360468], [1517126880000, 5.405e-05, 5.406e-05, 5.404e-05, 5.404e-05, 1331.26618452], [1517126940000, 5.404e-05, 5.404e-05, 5.394e-05, 5.394e-05, 11753.09183045], [1517127000000, 5.394e-05, 5.404e-05, 5.394e-05, 5.396e-05, 6450.10856056], [1517127060000, 5.396e-05, 5.397e-05, 5.396e-05, 5.396e-05, 7230.15589057], [1517127120000, 5.397e-05, 5.403e-05, 5.38e-05, 5.38e-05, 137519.89975188], [1517127180000, 5.38e-05, 5.38e-05, 5.38e-05, 5.38e-05, 46006.35750774], [1517127240000, 5.38e-05, 5.38e-05, 5.379e-05, 5.38e-05, 18693.45372462], [1517127300000, 5.38e-05, 5.38e-05, 5.379e-05, 5.379e-05, 31823.54811582], [1517127360000, 5.38e-05, 5.38e-05, 5.379e-05, 5.379e-05, 219616.92192411], [1517127420000, 5.379e-05, 5.38e-05, 5.378e-05, 5.38e-05, 157116.48825878], [1517127480000, 5.38e-05, 5.38e-05, 5.378e-05, 5.38e-05, 117813.54939083], [1517127540000, 5.379e-05, 5.38e-05, 5.37e-05, 5.38e-05, 339462.67770692], [1517127600000, 5.38e-05, 5.38e-05, 5.372e-05, 5.38e-05, 146164.38648639], [1517127660000, 5.38e-05, 5.38e-05, 5.38e-05, 5.38e-05, 44268.9064472], [1517127720000, 5.38e-05, 5.38e-05, 5.38e-05, 5.38e-05, 27376.50446374], [1517127780000, 5.38e-05, 5.38e-05, 5.379e-05, 5.379e-05, 24606.39546904], [1517127840000, 5.379e-05, 5.379e-05, 5.374e-05, 5.379e-05, 6548.26006736], [1517127900000, 5.379e-05, 5.379e-05, 5.379e-05, 5.379e-05, 1796.59198532], [1517127960000, 5.379e-05, 5.38e-05, 5.377e-05, 5.377e-05, 33633.75802311], [1517128020000, 5.379e-05, 5.38e-05, 5.377e-05, 5.38e-05, 14161.05114417], [1517128080000, 5.379e-05, 5.38e-05, 5.378e-05, 5.379e-05, 3230.50471472], [1517128140000, 5.379e-05, 5.38e-05, 5.378e-05, 5.38e-05, 28732.04750094], [1517128260000, 5.38e-05, 5.38e-05, 5.379e-05, 5.38e-05, 32776.31254435], [1517128320000, 5.38e-05, 5.38e-05, 5.377e-05, 5.38e-05, 48522.27577799], [1517128380000, 5.38e-05, 5.38e-05, 5.378e-05, 5.378e-05, 4526.61735422], [1517128440000, 5.378e-05, 5.38e-05, 5.378e-05, 5.379e-05, 50628.94953635], [1517128500000, 5.379e-05, 5.38e-05, 5.377e-05, 5.377e-05, 18188.60788396], [1517128560000, 5.378e-05, 5.378e-05, 5.377e-05, 5.377e-05, 6503.49791363], [1517128620000, 5.377e-05, 5.377e-05, 5.374e-05, 5.374e-05, 10169.899561], [1517128680000, 5.374e-05, 5.376e-05, 5.374e-05, 5.376e-05, 2090.40691885], [1517128740000, 5.375e-05, 5.376e-05, 5.375e-05, 5.375e-05, 3768.18041772], [1517128800000, 5.375e-05, 5.376e-05, 5.374e-05, 5.375e-05, 15260.85124229], [1517128860000, 5.375e-05, 5.376e-05, 5.374e-05, 5.375e-05, 147136.54857238], [1517128920000, 5.375e-05, 5.375e-05, 5.374e-05, 5.375e-05, 11420.57623542], [1517128980000, 5.375e-05, 5.376e-05, 5.37e-05, 5.37e-05, 16847.18441557], [1517129040000, 5.375e-05, 5.375e-05, 5.37e-05, 5.371e-05, 1460.67167413], [1517129100000, 5.371e-05, 5.376e-05, 5.371e-05, 5.372e-05, 24801.75248992], [1517129160000, 5.375e-05, 5.376e-05, 5.372e-05, 5.376e-05, 65012.39557461], [1517129220000, 5.375e-05, 5.376e-05, 5.372e-05, 5.376e-05, 22803.30226027], [1517129280000, 5.376e-05, 5.376e-05, 5.376e-05, 5.376e-05, 79358.58079562], [1517129340000, 5.376e-05, 5.376e-05, 5.375e-05, 5.376e-05, 66892.13723443], [1517129400000, 5.376e-05, 5.376e-05, 5.373e-05, 5.373e-05, 47002.57414167], [1517129460000, 5.372e-05, 5.375e-05, 5.371e-05, 5.373e-05, 20874.34562751], [1517129520000, 5.373e-05, 5.373e-05, 5.369e-05, 5.372e-05, 17762.10617806], [1517129580000, 5.375e-05, 5.376e-05, 5.372e-05, 5.376e-05, 14343.30892545], [1517129640000, 5.372e-05, 5.376e-05, 5.372e-05, 5.376e-05, 99700.65391552], [1517129700000, 5.373e-05, 5.376e-05, 5.373e-05, 5.373e-05, 20391.10565496], [1517129760000, 5.373e-05, 5.376e-05, 5.373e-05, 5.376e-05, 34287.06079094], [1517129820000, 5.374e-05, 5.376e-05, 5.374e-05, 5.376e-05, 23446.34851252], [1517129880000, 5.376e-05, 5.376e-05, 5.374e-05, 5.376e-05, 104658.28858975], [1517129940000, 5.374e-05, 5.376e-05, 5.374e-05, 5.376e-05, 21040.11400843], [1517130000000, 5.376e-05, 5.377e-05, 5.372e-05, 5.377e-05, 32722.11410214], [1517130060000, 5.377e-05, 5.378e-05, 5.377e-05, 5.378e-05, 9382.29850082], [1517130120000, 5.378e-05, 5.378e-05, 5.377e-05, 5.378e-05, 73007.49061571], [1517130180000, 5.379e-05, 5.38e-05, 5.379e-05, 5.38e-05, 55420.48728896], [1517130240000, 5.379e-05, 5.38e-05, 5.378e-05, 5.379e-05, 34377.89295466], [1517130300000, 5.38e-05, 5.38e-05, 5.379e-05, 5.379e-05, 3179.65664969], [1517130360000, 5.379e-05, 5.38e-05, 5.379e-05, 5.379e-05, 4288.78519701], [1517130420000, 5.379e-05, 5.38e-05, 5.379e-05, 5.38e-05, 17656.98366208], [1517130480000, 5.379e-05, 5.38e-05, 5.379e-05, 5.379e-05, 13109.60681064], [1517130540000, 5.379e-05, 5.379e-05, 5.379e-05, 5.379e-05, 548.35090825], [1517130600000, 5.379e-05, 5.38e-05, 5.379e-05, 5.379e-05, 6242.02842723], [1517130660000, 5.379e-05, 5.38e-05, 5.379e-05, 5.38e-05, 18931.62024792], [1517130720000, 5.379e-05, 5.38e-05, 5.379e-05, 5.38e-05, 7930.56909517], [1517130780000, 5.38e-05, 5.38e-05, 5.379e-05, 5.379e-05, 26623.00570037], [1517130840000, 5.38e-05, 5.38e-05, 5.379e-05, 5.379e-05, 25160.47183535], [1517130900000, 5.38e-05, 5.38e-05, 5.379e-05, 5.379e-05, 19877.76299572], [1517130960000, 5.379e-05, 5.38e-05, 5.379e-05, 5.379e-05, 16315.70666737], [1517131020000, 5.38e-05, 5.38e-05, 5.379e-05, 5.379e-05, 7127.67408737], [1517131080000, 5.38e-05, 5.38e-05, 5.379e-05, 5.379e-05, 2645.74654846], [1517131140000, 5.379e-05, 5.38e-05, 5.378e-05, 5.379e-05, 10147.88660731], [1517131200000, 5.379e-05, 5.379e-05, 5.378e-05, 5.378e-05, 5080.07539148], [1517131260000, 5.377e-05, 5.38e-05, 5.375e-05, 5.38e-05, 181245.20978851], [1517131320000, 5.38e-05, 5.38e-05, 5.374e-05, 5.375e-05, 53718.2351517], [1517131380000, 5.376e-05, 5.38e-05, 5.375e-05, 5.375e-05, 10598.93012559], [1517131440000, 5.375e-05, 5.375e-05, 5.37e-05, 5.375e-05, 10614.04250775], [1517131500000, 5.375e-05, 5.376e-05, 5.375e-05, 5.376e-05, 53286.24044986], [1517131560000, 5.376e-05, 5.376e-05, 5.374e-05, 5.375e-05, 8108.86279693], [1517131620000, 5.375e-05, 5.375e-05, 5.374e-05, 5.375e-05, 13361.48243193], [1517131680000, 5.375e-05, 5.38e-05, 5.375e-05, 5.38e-05, 35747.23677904], [1517131740000, 5.38e-05, 5.38e-05, 5.379e-05, 5.379e-05, 51413.73451383], [1517131800000, 5.38e-05, 5.38e-05, 5.379e-05, 5.38e-05, 9765.56725976], [1517131860000, 5.38e-05, 5.38e-05, 5.379e-05, 5.379e-05, 21725.6505541], [1517131920000, 5.379e-05, 5.38e-05, 5.371e-05, 5.38e-05, 54593.71050282], [1517131980000, 5.38e-05, 5.38e-05, 5.375e-05, 5.38e-05, 83128.36756378], [1517132040000, 5.375e-05, 5.393e-05, 5.375e-05, 5.383e-05, 175997.73108916], [1517132100000, 5.383e-05, 5.392e-05, 5.383e-05, 5.383e-05, 26462.24195509], [1517132160000, 5.383e-05, 5.385e-05, 5.383e-05, 5.385e-05, 14553.78852799], [1517132220000, 5.385e-05, 5.388e-05, 5.385e-05, 5.385e-05, 1047.47020203], [1517132280000, 5.385e-05, 5.388e-05, 5.385e-05, 5.386e-05, 4048.901547], [1517132340000, 5.386e-05, 5.388e-05, 5.386e-05, 5.387e-05, 15929.67901336], [1517132400000, 5.387e-05, 5.396e-05, 5.387e-05, 5.387e-05, 6398.2354824], [1517132460000, 5.387e-05, 5.395e-05, 5.387e-05, 5.393e-05, 11408.29377567], [1517132520000, 5.393e-05, 5.393e-05, 5.387e-05, 5.388e-05, 4747.89405584], [1517132580000, 5.388e-05, 5.391e-05, 5.388e-05, 5.39e-05, 3955.10596377], [1517132640000, 5.39e-05, 5.391e-05, 5.388e-05, 5.389e-05, 5015.38652581], [1517132700000, 5.389e-05, 5.391e-05, 5.388e-05, 5.388e-05, 71751.65264941], [1517132760000, 5.388e-05, 5.391e-05, 5.388e-05, 5.391e-05, 39422.85466636], [1517132820000, 5.389e-05, 5.391e-05, 5.388e-05, 5.391e-05, 20566.30569066], [1517132880000, 5.387e-05, 5.391e-05, 5.387e-05, 5.387e-05, 7099.88674066], [1517132940000, 5.387e-05, 5.387e-05, 5.387e-05, 5.387e-05, 2169.05760805], [1517133000000, 5.386e-05, 5.387e-05, 5.38e-05, 5.386e-05, 12562.46087714], [1517133060000, 5.381e-05, 5.391e-05, 5.381e-05, 5.386e-05, 9891.08010632], [1517133120000, 5.386e-05, 5.386e-05, 5.381e-05, 5.381e-05, 8609.64471349], [1517133180000, 5.381e-05, 5.382e-05, 5.381e-05, 5.381e-05, 11596.78002602], [1517133240000, 5.381e-05, 5.382e-05, 5.381e-05, 5.381e-05, 9334.18526064], [1517133300000, 5.381e-05, 5.382e-05, 5.371e-05, 5.381e-05, 80162.67779246], [1517133360000, 5.374e-05, 5.381e-05, 5.371e-05, 5.377e-05, 20716.11318645], [1517133420000, 5.377e-05, 5.378e-05, 5.376e-05, 5.378e-05, 6786.17882545], [1517133480000, 5.378e-05, 5.381e-05, 5.376e-05, 5.377e-05, 21062.91175049], [1517133540000, 5.377e-05, 5.381e-05, 5.376e-05, 5.376e-05, 11978.70095433], [1517133600000, 5.374e-05, 5.377e-05, 5.37e-05, 5.37e-05, 13727.35312829], [1517133660000, 5.37e-05, 5.371e-05, 5.369e-05, 5.37e-05, 9727.18608825], [1517133720000, 5.37e-05, 5.377e-05, 5.37e-05, 5.374e-05, 2662.83908359], [1517133780000, 5.377e-05, 5.377e-05, 5.374e-05, 5.376e-05, 17158.98872048], [1517133840000, 5.376e-05, 5.377e-05, 5.372e-05, 5.372e-05, 11867.86276475], [1517133900000, 5.371e-05, 5.374e-05, 5.37e-05, 5.374e-05, 35405.44338471], [1517133960000, 5.374e-05, 5.377e-05, 5.374e-05, 5.374e-05, 18180.18029266], [1517134020000, 5.374e-05, 5.377e-05, 5.374e-05, 5.376e-05, 17675.90553098], [1517134080000, 5.375e-05, 5.375e-05, 5.372e-05, 5.372e-05, 6630.10646014], [1517134140000, 5.372e-05, 5.372e-05, 5.37e-05, 5.371e-05, 11159.53775261], [1517134200000, 5.371e-05, 5.372e-05, 5.371e-05, 5.372e-05, 13268.74587268], [1517134260000, 5.372e-05, 5.373e-05, 5.371e-05, 5.373e-05, 10586.22077091], [1517134320000, 5.373e-05, 5.374e-05, 5.372e-05, 5.372e-05, 19747.77644677], [1517134380000, 5.371e-05, 5.372e-05, 5.371e-05, 5.371e-05, 8536.96207853], [1517134440000, 5.371e-05, 5.374e-05, 5.371e-05, 5.374e-05, 5173.38555294], [1517134500000, 5.373e-05, 5.374e-05, 5.367e-05, 5.368e-05, 19280.90759324], [1517134560000, 5.373e-05, 5.373e-05, 5.367e-05, 5.367e-05, 16536.56466869], [1517134620000, 5.367e-05, 5.368e-05, 5.365e-05, 5.367e-05, 5862.72995682], [1517134680000, 5.366e-05, 5.367e-05, 5.366e-05, 5.367e-05, 3152.55942318], [1517134740000, 5.367e-05, 5.368e-05, 5.366e-05, 5.366e-05, 12137.4178545], [1517134800000, 5.367e-05, 5.373e-05, 5.366e-05, 5.373e-05, 4445.69736726], [1517134860000, 5.373e-05, 5.373e-05, 5.368e-05, 5.372e-05, 53320.31733389], [1517134920000, 5.368e-05, 5.37e-05, 5.368e-05, 5.368e-05, 7004.92290586], [1517134980000, 5.368e-05, 5.372e-05, 5.364e-05, 5.364e-05, 17780.12910974], [1517135040000, 5.364e-05, 5.372e-05, 5.364e-05, 5.369e-05, 8405.67075455], [1517135100000, 5.369e-05, 5.372e-05, 5.369e-05, 5.372e-05, 13876.97030162], [1517135160000, 5.372e-05, 5.372e-05, 5.372e-05, 5.372e-05, 3014.74003954], [1517135220000, 5.372e-05, 5.376e-05, 5.372e-05, 5.376e-05, 5624.09278871], [1517135280000, 5.375e-05, 5.376e-05, 5.372e-05, 5.372e-05, 27106.61690781], [1517135340000, 5.377e-05, 5.377e-05, 5.371e-05, 5.371e-05, 4846.30215389], [1517135400000, 5.371e-05, 5.375e-05, 5.37e-05, 5.375e-05, 82977.45285945], [1517135460000, 5.37e-05, 5.375e-05, 5.37e-05, 5.37e-05, 3147.4663956], [1517135520000, 5.37e-05, 5.37e-05, 5.369e-05, 5.369e-05, 3642.75385663], [1517135580000, 5.37e-05, 5.37e-05, 5.369e-05, 5.37e-05, 20490.00809663], [1517135640000, 5.369e-05, 5.371e-05, 5.369e-05, 5.371e-05, 15573.27210443], [1517135700000, 5.371e-05, 5.375e-05, 5.371e-05, 5.375e-05, 9952.59079423], [1517135760000, 5.375e-05, 5.375e-05, 5.371e-05, 5.372e-05, 2853.000745], [1517135820000, 5.372e-05, 5.375e-05, 5.371e-05, 5.371e-05, 4657.0483002], [1517135880000, 5.371e-05, 5.375e-05, 5.371e-05, 5.371e-05, 51328.94370389], [1517135940000, 5.37e-05, 5.374e-05, 5.362e-05, 5.362e-05, 51673.84981774], [1517136000000, 5.362e-05, 5.374e-05, 5.362e-05, 5.363e-05, 11577.47457379], [1517136060000, 5.363e-05, 5.372e-05, 5.358e-05, 5.36e-05, 23113.66323436], [1517136120000, 5.362e-05, 5.363e-05, 5.355e-05, 5.355e-05, 11630.8941114], [1517136180000, 5.355e-05, 5.359e-05, 5.355e-05, 5.355e-05, 8231.39703544], [1517136240000, 5.355e-05, 5.362e-05, 5.355e-05, 5.36e-05, 35993.65349144], [1517136300000, 5.36e-05, 5.36e-05, 5.355e-05, 5.355e-05, 19804.22179263], [1517136360000, 5.355e-05, 5.374e-05, 5.355e-05, 5.365e-05, 71598.56001064], [1517136420000, 5.373e-05, 5.373e-05, 5.365e-05, 5.365e-05, 3942.08321406], [1517136480000, 5.372e-05, 5.372e-05, 5.365e-05, 5.365e-05, 28736.68559658], [1517136540000, 5.365e-05, 5.371e-05, 5.365e-05, 5.369e-05, 2151.87912992], [1517136600000, 5.36e-05, 5.369e-05, 5.36e-05, 5.367e-05, 1853.55946464], [1517136660000, 5.367e-05, 5.367e-05, 5.36e-05, 5.362e-05, 7385.72748235], [1517136720000, 5.367e-05, 5.367e-05, 5.363e-05, 5.367e-05, 5750.433071], [1517136780000, 5.367e-05, 5.368e-05, 5.362e-05, 5.368e-05, 5030.43873602], [1517136840000, 5.363e-05, 5.386e-05, 5.363e-05, 5.369e-05, 33441.43170598], [1517136900000, 5.369e-05, 5.386e-05, 5.368e-05, 5.383e-05, 25879.71093278], [1517136960000, 5.382e-05, 5.384e-05, 5.382e-05, 5.384e-05, 5927.59874837], [1517137020000, 5.384e-05, 5.384e-05, 5.383e-05, 5.383e-05, 3000.53875698], [1517137080000, 5.383e-05, 5.386e-05, 5.383e-05, 5.384e-05, 48212.79327624], [1517137140000, 5.383e-05, 5.384e-05, 5.383e-05, 5.383e-05, 1867.48324854], [1517137200000, 5.383e-05, 5.384e-05, 5.38e-05, 5.38e-05, 5349.50756351], [1517137260000, 5.38e-05, 5.383e-05, 5.38e-05, 5.383e-05, 2243.1328966], [1517137320000, 5.383e-05, 5.383e-05, 5.38e-05, 5.38e-05, 1879.81422051], [1517137380000, 5.372e-05, 5.372e-05, 5.37e-05, 5.37e-05, 6026.35794262], [1517137440000, 5.37e-05, 5.371e-05, 5.369e-05, 5.369e-05, 17184.16138316], [1517137500000, 5.37e-05, 5.37e-05, 5.369e-05, 5.37e-05, 1101.25201622], [1517137560000, 5.37e-05, 5.37e-05, 5.37e-05, 5.37e-05, 4840.77121989], [1517137620000, 5.37e-05, 5.37e-05, 5.369e-05, 5.37e-05, 9228.86027358], [1517137680000, 5.37e-05, 5.37e-05, 5.369e-05, 5.37e-05, 10303.9655208], [1517137740000, 5.369e-05, 5.37e-05, 5.369e-05, 5.37e-05, 4889.7000074], [1517137800000, 5.37e-05, 5.37e-05, 5.369e-05, 5.369e-05, 32931.16895169], [1517137860000, 5.369e-05, 5.37e-05, 5.367e-05, 5.369e-05, 6025.98406856], [1517137920000, 5.367e-05, 5.369e-05, 5.367e-05, 5.369e-05, 6213.39852722], [1517137980000, 5.369e-05, 5.369e-05, 5.367e-05, 5.367e-05, 21854.49318443], [1517138040000, 5.368e-05, 5.369e-05, 5.367e-05, 5.368e-05, 2807.81658597], [1517138100000, 5.368e-05, 5.369e-05, 5.368e-05, 5.369e-05, 2980.0108872], [1517138160000, 5.369e-05, 5.369e-05, 5.368e-05, 5.369e-05, 18939.7364696], [1517138220000, 5.369e-05, 5.369e-05, 5.363e-05, 5.364e-05, 7737.06169082], [1517138280000, 5.364e-05, 5.364e-05, 5.355e-05, 5.364e-05, 27693.42080107], [1517138340000, 5.364e-05, 5.364e-05, 5.355e-05, 5.364e-05, 31322.13016951], [1517138400000, 5.357e-05, 5.369e-05, 5.35e-05, 5.353e-05, 70569.19275128], [1517138460000, 5.353e-05, 5.355e-05, 5.351e-05, 5.355e-05, 13034.07487537], [1517138520000, 5.354e-05, 5.369e-05, 5.354e-05, 5.369e-05, 17839.76176413], [1517138580000, 5.369e-05, 5.369e-05, 5.369e-05, 5.369e-05, 19083.95330632], [1517138640000, 5.369e-05, 5.369e-05, 5.355e-05, 5.369e-05, 5497.8097798], [1517138700000, 5.365e-05, 5.365e-05, 5.355e-05, 5.355e-05, 621.68706008], [1517138760000, 5.36e-05, 5.369e-05, 5.355e-05, 5.356e-05, 13722.43840761], [1517138820000, 5.369e-05, 5.369e-05, 5.357e-05, 5.357e-05, 19636.11181599], [1517138880000, 5.369e-05, 5.369e-05, 5.369e-05, 5.369e-05, 3161.90072744], [1517138940000, 5.366e-05, 5.369e-05, 5.356e-05, 5.356e-05, 21794.60713442], [1517139000000, 5.369e-05, 5.369e-05, 5.356e-05, 5.356e-05, 745.2123842], [1517139060000, 5.356e-05, 5.356e-05, 5.355e-05, 5.355e-05, 7019.40247622], [1517139120000, 5.362e-05, 5.362e-05, 5.355e-05, 5.355e-05, 8753.65622662], [1517139180000, 5.355e-05, 5.368e-05, 5.355e-05, 5.355e-05, 5794.51245311], [1517139240000, 5.355e-05, 5.368e-05, 5.355e-05, 5.368e-05, 1247.29912476], [1517139300000, 5.368e-05, 5.368e-05, 5.356e-05, 5.357e-05, 3991.32408022], [1517139360000, 5.366e-05, 5.366e-05, 5.357e-05, 5.365e-05, 1719.07623347], [1517139420000, 5.365e-05, 5.367e-05, 5.357e-05, 5.365e-05, 8261.11923133], [1517139480000, 5.365e-05, 5.365e-05, 5.357e-05, 5.358e-05, 6539.25471833], [1517139540000, 5.358e-05, 5.364e-05, 5.357e-05, 5.362e-05, 4007.17914807], [1517139600000, 5.362e-05, 5.366e-05, 5.357e-05, 5.365e-05, 11300.4398502], [1517139660000, 5.365e-05, 5.365e-05, 5.357e-05, 5.365e-05, 10503.31875441], [1517139720000, 5.365e-05, 5.366e-05, 5.365e-05, 5.365e-05, 14185.2268105], [1517139780000, 5.365e-05, 5.366e-05, 5.365e-05, 5.366e-05, 7945.50399262], [1517139840000, 5.366e-05, 5.367e-05, 5.365e-05, 5.365e-05, 112329.14925834], [1517139900000, 5.365e-05, 5.367e-05, 5.365e-05, 5.366e-05, 2962.93802254], [1517139960000, 5.366e-05, 5.372e-05, 5.366e-05, 5.372e-05, 7609.08574657], [1517140020000, 5.373e-05, 5.379e-05, 5.367e-05, 5.378e-05, 8930.49071112], [1517140080000, 5.367e-05, 5.379e-05, 5.367e-05, 5.378e-05, 6913.22291543], [1517140140000, 5.378e-05, 5.378e-05, 5.367e-05, 5.377e-05, 3175.96749769], [1517140200000, 5.369e-05, 5.377e-05, 5.368e-05, 5.368e-05, 13040.76592515], [1517140260000, 5.368e-05, 5.368e-05, 5.365e-05, 5.365e-05, 11016.44050629], [1517140320000, 5.366e-05, 5.367e-05, 5.365e-05, 5.367e-05, 1069.46672227], [1517140380000, 5.365e-05, 5.368e-05, 5.365e-05, 5.368e-05, 7542.74267646], [1517140440000, 5.367e-05, 5.385e-05, 5.367e-05, 5.385e-05, 4969.71308725], [1517140500000, 5.379e-05, 5.379e-05, 5.357e-05, 5.357e-05, 176485.67321635], [1517140560000, 5.357e-05, 5.364e-05, 5.357e-05, 5.36e-05, 22744.81522461], [1517140620000, 5.357e-05, 5.364e-05, 5.355e-05, 5.355e-05, 26475.80494205], [1517140680000, 5.353e-05, 5.355e-05, 5.35e-05, 5.353e-05, 6271.49324921], [1517140740000, 5.355e-05, 5.359e-05, 5.35e-05, 5.353e-05, 39260.54206848], [1517140800000, 5.353e-05, 5.353e-05, 5.35e-05, 5.353e-05, 1184.07844501], [1517140860000, 5.352e-05, 5.353e-05, 5.35e-05, 5.35e-05, 14001.04517612], [1517140920000, 5.35e-05, 5.351e-05, 5.349e-05, 5.35e-05, 99698.99444195], [1517140980000, 5.351e-05, 5.352e-05, 5.351e-05, 5.352e-05, 33344.50182062], [1517141040000, 5.351e-05, 5.352e-05, 5.35e-05, 5.351e-05, 23097.59663634], [1517141100000, 5.351e-05, 5.351e-05, 5.348e-05, 5.35e-05, 10109.07825625], [1517141160000, 5.35e-05, 5.35e-05, 5.344e-05, 5.345e-05, 20268.26370909], [1517141220000, 5.345e-05, 5.349e-05, 5.344e-05, 5.348e-05, 11812.02730755], [1517141280000, 5.348e-05, 5.348e-05, 5.341e-05, 5.345e-05, 11334.48106344], [1517141340000, 5.345e-05, 5.345e-05, 5.34e-05, 5.341e-05, 19126.62770571], [1517141400000, 5.341e-05, 5.341e-05, 5.339e-05, 5.339e-05, 15025.18601176], [1517141460000, 5.339e-05, 5.342e-05, 5.338e-05, 5.341e-05, 79413.75999128], [1517141520000, 5.339e-05, 5.341e-05, 5.339e-05, 5.34e-05, 18556.34522094], [1517141580000, 5.34e-05, 5.341e-05, 5.34e-05, 5.34e-05, 9326.55731948], [1517141640000, 5.341e-05, 5.35e-05, 5.341e-05, 5.35e-05, 33350.26439966], [1517141700000, 5.351e-05, 5.351e-05, 5.345e-05, 5.345e-05, 45243.90176395], [1517141760000, 5.345e-05, 5.346e-05, 5.337e-05, 5.339e-05, 52389.02343966], [1517141820000, 5.339e-05, 5.342e-05, 5.339e-05, 5.342e-05, 98323.39019349], [1517141880000, 5.34e-05, 5.349e-05, 5.34e-05, 5.349e-05, 18704.2577627], [1517141940000, 5.343e-05, 5.349e-05, 5.342e-05, 5.343e-05, 5917.46507402], [1517142000000, 5.343e-05, 5.344e-05, 5.343e-05, 5.344e-05, 7600.60708471], [1517142060000, 5.344e-05, 5.349e-05, 5.344e-05, 5.349e-05, 34620.93084475], [1517142120000, 5.35e-05, 5.35e-05, 5.345e-05, 5.347e-05, 59599.87544071], [1517142180000, 5.346e-05, 5.347e-05, 5.345e-05, 5.346e-05, 9084.69694315], [1517142240000, 5.345e-05, 5.347e-05, 5.345e-05, 5.347e-05, 127916.83466381], [1517142300000, 5.347e-05, 5.352e-05, 5.347e-05, 5.349e-05, 72843.42065649], [1517142360000, 5.35e-05, 5.35e-05, 5.347e-05, 5.348e-05, 8217.97322362], [1517142420000, 5.348e-05, 5.35e-05, 5.348e-05, 5.35e-05, 3709.32142813], [1517142480000, 5.349e-05, 5.35e-05, 5.347e-05, 5.35e-05, 5219.16593617], [1517142540000, 5.35e-05, 5.35e-05, 5.345e-05, 5.345e-05, 3620.37245452], [1517142600000, 5.345e-05, 5.345e-05, 5.344e-05, 5.344e-05, 13432.0799052], [1517142660000, 5.344e-05, 5.344e-05, 5.343e-05, 5.344e-05, 11842.87106492], [1517142720000, 5.343e-05, 5.344e-05, 5.343e-05, 5.344e-05, 591.54792834], [1517142780000, 5.343e-05, 5.344e-05, 5.342e-05, 5.344e-05, 8542.97063841], [1517142840000, 5.344e-05, 5.35e-05, 5.343e-05, 5.344e-05, 10558.49711832], [1517142900000, 5.35e-05, 5.35e-05, 5.344e-05, 5.35e-05, 2383.02819907], [1517142960000, 5.35e-05, 5.35e-05, 5.345e-05, 5.349e-05, 7278.69379137], [1517143020000, 5.349e-05, 5.349e-05, 5.345e-05, 5.349e-05, 21304.20316716], [1517143080000, 5.348e-05, 5.349e-05, 5.345e-05, 5.349e-05, 21853.60085649], [1517143140000, 5.349e-05, 5.349e-05, 5.349e-05, 5.349e-05, 2169.29413161], [1517143200000, 5.348e-05, 5.349e-05, 5.345e-05, 5.349e-05, 3584.88845689], [1517143260000, 5.349e-05, 5.349e-05, 5.349e-05, 5.349e-05, 43734.83693894], [1517143320000, 5.349e-05, 5.349e-05, 5.343e-05, 5.345e-05, 8537.43993088], [1517143380000, 5.344e-05, 5.349e-05, 5.341e-05, 5.342e-05, 20382.15694616], [1517143440000, 5.341e-05, 5.349e-05, 5.34e-05, 5.34e-05, 6178.07403219], [1517143500000, 5.34e-05, 5.345e-05, 5.339e-05, 5.345e-05, 4853.26520456], [1517143560000, 5.345e-05, 5.348e-05, 5.345e-05, 5.347e-05, 12857.30504172], [1517143620000, 5.346e-05, 5.348e-05, 5.345e-05, 5.348e-05, 8405.89085709], [1517143680000, 5.347e-05, 5.347e-05, 5.345e-05, 5.347e-05, 22237.5221075], [1517143740000, 5.348e-05, 5.35e-05, 5.348e-05, 5.35e-05, 57757.09890044], [1517143800000, 5.35e-05, 5.35e-05, 5.349e-05, 5.35e-05, 52621.68882991], [1517143860000, 5.35e-05, 5.35e-05, 5.349e-05, 5.35e-05, 126084.5239424], [1517143920000, 5.35e-05, 5.35e-05, 5.345e-05, 5.345e-05, 22561.88860377], [1517143980000, 5.345e-05, 5.349e-05, 5.34e-05, 5.345e-05, 27285.73931159], [1517144040000, 5.349e-05, 5.352e-05, 5.345e-05, 5.345e-05, 43413.4920185], [1517144100000, 5.345e-05, 5.352e-05, 5.345e-05, 5.346e-05, 2077.40604333], [1517144160000, 5.352e-05, 5.352e-05, 5.346e-05, 5.352e-05, 7793.15565485], [1517144220000, 5.349e-05, 5.352e-05, 5.349e-05, 5.351e-05, 5961.83357461], [1517144280000, 5.352e-05, 5.352e-05, 5.348e-05, 5.348e-05, 10059.55534641], [1517144340000, 5.352e-05, 5.352e-05, 5.349e-05, 5.352e-05, 38071.5332067], [1517144400000, 5.352e-05, 5.352e-05, 5.35e-05, 5.351e-05, 39615.77383716], [1517144460000, 5.351e-05, 5.351e-05, 5.35e-05, 5.35e-05, 1871.79073215], [1517144520000, 5.351e-05, 5.351e-05, 5.35e-05, 5.351e-05, 7348.76794633], [1517144580000, 5.35e-05, 5.351e-05, 5.35e-05, 5.35e-05, 3898.49131659], [1517144640000, 5.35e-05, 5.352e-05, 5.35e-05, 5.352e-05, 21144.77703994], [1517144700000, 5.352e-05, 5.352e-05, 5.35e-05, 5.35e-05, 10100.95263206], [1517144760000, 5.352e-05, 5.352e-05, 5.35e-05, 5.352e-05, 2636.12766048], [1517144820000, 5.351e-05, 5.351e-05, 5.351e-05, 5.351e-05, 3349.86743373], [1517144880000, 5.352e-05, 5.352e-05, 5.35e-05, 5.352e-05, 554.25866325], [1517144940000, 5.352e-05, 5.352e-05, 5.35e-05, 5.352e-05, 16511.58939152], [1517145000000, 5.35e-05, 5.352e-05, 5.35e-05, 5.35e-05, 980.67549866], [1517145060000, 5.352e-05, 5.352e-05, 5.35e-05, 5.351e-05, 371.30144153], [1517145120000, 5.351e-05, 5.352e-05, 5.35e-05, 5.352e-05, 12015.3835123], [1517145180000, 5.352e-05, 5.352e-05, 5.35e-05, 5.35e-05, 31660.22189082], [1517145240000, 5.35e-05, 5.352e-05, 5.345e-05, 5.345e-05, 50827.75795213], [1517145300000, 5.341e-05, 5.345e-05, 5.341e-05, 5.345e-05, 5378.27713352], [1517145360000, 5.342e-05, 5.345e-05, 5.342e-05, 5.345e-05, 9410.70768973], [1517145420000, 5.345e-05, 5.345e-05, 5.342e-05, 5.345e-05, 3863.2178787], [1517145480000, 5.342e-05, 5.345e-05, 5.342e-05, 5.345e-05, 32358.26994639], [1517145540000, 5.345e-05, 5.345e-05, 5.345e-05, 5.345e-05, 7849.47811276], [1517145600000, 5.344e-05, 5.344e-05, 5.34e-05, 5.34e-05, 22280.0144551], [1517145660000, 5.34e-05, 5.342e-05, 5.34e-05, 5.34e-05, 27758.68589321], [1517145720000, 5.34e-05, 5.34e-05, 5.34e-05, 5.34e-05, 19052.31394281], [1517145780000, 5.34e-05, 5.345e-05, 5.34e-05, 5.345e-05, 49630.20937663], [1517145840000, 5.343e-05, 5.35e-05, 5.34e-05, 5.35e-05, 8048.98571124], [1517145900000, 5.35e-05, 5.35e-05, 5.345e-05, 5.35e-05, 8953.77250717], [1517145960000, 5.345e-05, 5.35e-05, 5.34e-05, 5.34e-05, 2710.62477759], [1517146020000, 5.345e-05, 5.35e-05, 5.345e-05, 5.348e-05, 14548.38446834], [1517146080000, 5.348e-05, 5.352e-05, 5.347e-05, 5.352e-05, 13990.36022557], [1517146140000, 5.352e-05, 5.352e-05, 5.341e-05, 5.35e-05, 52284.0288953], [1517146200000, 5.35e-05, 5.35e-05, 5.343e-05, 5.344e-05, 4061.16416384], [1517146260000, 5.349e-05, 5.35e-05, 5.349e-05, 5.35e-05, 7312.94989469], [1517146320000, 5.349e-05, 5.35e-05, 5.349e-05, 5.349e-05, 6415.61247737], [1517146380000, 5.35e-05, 5.35e-05, 5.344e-05, 5.344e-05, 74794.58215738], [1517146440000, 5.349e-05, 5.349e-05, 5.341e-05, 5.349e-05, 31135.59392846], [1517146500000, 5.349e-05, 5.349e-05, 5.344e-05, 5.349e-05, 6975.65583492], [1517146560000, 5.345e-05, 5.349e-05, 5.345e-05, 5.349e-05, 39577.48853267], [1517146620000, 5.349e-05, 5.349e-05, 5.346e-05, 5.346e-05, 75821.1317829], [1517146680000, 5.346e-05, 5.346e-05, 5.346e-05, 5.346e-05, 4685.97759474], [1517146740000, 5.349e-05, 5.351e-05, 5.346e-05, 5.346e-05, 12047.08577089], [1517146800000, 5.347e-05, 5.347e-05, 5.346e-05, 5.346e-05, 3242.83478081], [1517146860000, 5.346e-05, 5.347e-05, 5.346e-05, 5.347e-05, 3031.15204935], [1517146920000, 5.351e-05, 5.351e-05, 5.347e-05, 5.347e-05, 5774.44765162], [1517146980000, 5.347e-05, 5.352e-05, 5.347e-05, 5.349e-05, 38670.11316401], [1517147040000, 5.352e-05, 5.352e-05, 5.349e-05, 5.349e-05, 3487.70602459], [1517147100000, 5.349e-05, 5.352e-05, 5.349e-05, 5.351e-05, 10227.23364225], [1517147160000, 5.351e-05, 5.352e-05, 5.351e-05, 5.352e-05, 14435.04221299], [1517147220000, 5.352e-05, 5.352e-05, 5.351e-05, 5.352e-05, 28716.77458912], [1517147280000, 5.351e-05, 5.36e-05, 5.351e-05, 5.353e-05, 9698.63940496], [1517147340000, 5.36e-05, 5.362e-05, 5.351e-05, 5.351e-05, 8740.21925851], [1517147400000, 5.353e-05, 5.353e-05, 5.345e-05, 5.353e-05, 48597.49292362], [1517147460000, 5.349e-05, 5.353e-05, 5.345e-05, 5.346e-05, 2359.94784948], [1517147520000, 5.345e-05, 5.346e-05, 5.345e-05, 5.345e-05, 7667.36775097], [1517147580000, 5.345e-05, 5.353e-05, 5.344e-05, 5.346e-05, 27221.65317863], [1517147640000, 5.346e-05, 5.353e-05, 5.346e-05, 5.347e-05, 6087.5431914], [1517147700000, 5.347e-05, 5.351e-05, 5.346e-05, 5.346e-05, 1890.75344539], [1517147760000, 5.346e-05, 5.353e-05, 5.344e-05, 5.353e-05, 10599.66213567], [1517147820000, 5.349e-05, 5.353e-05, 5.349e-05, 5.349e-05, 1041.55599188], [1517147880000, 5.349e-05, 5.352e-05, 5.349e-05, 5.349e-05, 3002.94502097], [1517147940000, 5.349e-05, 5.353e-05, 5.347e-05, 5.348e-05, 8706.20856923], [1517148000000, 5.348e-05, 5.348e-05, 5.347e-05, 5.347e-05, 13996.97489696], [1517148060000, 5.346e-05, 5.348e-05, 5.346e-05, 5.348e-05, 4479.4706996], [1517148120000, 5.348e-05, 5.348e-05, 5.347e-05, 5.348e-05, 1443.75899224], [1517148180000, 5.352e-05, 5.352e-05, 5.346e-05, 5.346e-05, 13215.59784554], [1517148240000, 5.348e-05, 5.351e-05, 5.348e-05, 5.349e-05, 15674.41167521], [1517148300000, 5.349e-05, 5.351e-05, 5.349e-05, 5.349e-05, 7547.4335014], [1517148360000, 5.349e-05, 5.354e-05, 5.341e-05, 5.341e-05, 44973.25443715], [1517148420000, 5.344e-05, 5.351e-05, 5.344e-05, 5.346e-05, 45916.55868283], [1517148480000, 5.351e-05, 5.351e-05, 5.341e-05, 5.345e-05, 83393.90196214], [1517148540000, 5.346e-05, 5.346e-05, 5.342e-05, 5.343e-05, 44433.00940002], [1517148600000, 5.345e-05, 5.354e-05, 5.343e-05, 5.345e-05, 85775.07354449], [1517148660000, 5.345e-05, 5.353e-05, 5.344e-05, 5.348e-05, 38270.08002356], [1517148720000, 5.352e-05, 5.353e-05, 5.347e-05, 5.349e-05, 94738.73504951], [1517148780000, 5.349e-05, 5.352e-05, 5.344e-05, 5.344e-05, 33094.93965508], [1517148840000, 5.344e-05, 5.346e-05, 5.341e-05, 5.342e-05, 53728.59149618], [1517148900000, 5.351e-05, 5.356e-05, 5.344e-05, 5.35e-05, 83273.80547708], [1517148960000, 5.35e-05, 5.351e-05, 5.343e-05, 5.351e-05, 36764.37516471], [1517149020000, 5.35e-05, 5.351e-05, 5.35e-05, 5.351e-05, 33367.50285817], [1517149080000, 5.35e-05, 5.351e-05, 5.349e-05, 5.349e-05, 39913.63411963], [1517149140000, 5.35e-05, 5.35e-05, 5.349e-05, 5.35e-05, 12684.83862877], [1517149200000, 5.351e-05, 5.351e-05, 5.35e-05, 5.351e-05, 10453.61538528], [1517149260000, 5.351e-05, 5.351e-05, 5.351e-05, 5.351e-05, 3103.16754835], [1517149320000, 5.351e-05, 5.353e-05, 5.351e-05, 5.351e-05, 11633.17735835], [1517149380000, 5.351e-05, 5.352e-05, 5.35e-05, 5.352e-05, 54437.50458917], [1517149440000, 5.351e-05, 5.355e-05, 5.347e-05, 5.35e-05, 5012.0170465], [1517149500000, 5.35e-05, 5.353e-05, 5.35e-05, 5.35e-05, 1729.34318062], [1517149560000, 5.355e-05, 5.355e-05, 5.35e-05, 5.353e-05, 5471.98995369], [1517149620000, 5.352e-05, 5.353e-05, 5.351e-05, 5.352e-05, 23344.85986289], [1517149680000, 5.352e-05, 5.356e-05, 5.351e-05, 5.353e-05, 18941.27755512], [1517149740000, 5.355e-05, 5.355e-05, 5.352e-05, 5.353e-05, 1823.13276941], [1517149800000, 5.353e-05, 5.354e-05, 5.351e-05, 5.351e-05, 10990.17009567], [1517149860000, 5.351e-05, 5.354e-05, 5.35e-05, 5.351e-05, 22064.85288358], [1517149920000, 5.351e-05, 5.354e-05, 5.351e-05, 5.352e-05, 8020.60721723], [1517149980000, 5.355e-05, 5.356e-05, 5.352e-05, 5.352e-05, 20111.02869666], [1517150040000, 5.352e-05, 5.352e-05, 5.351e-05, 5.351e-05, 7611.09678338], [1517150100000, 5.351e-05, 5.355e-05, 5.351e-05, 5.353e-05, 8150.42041898], [1517150160000, 5.353e-05, 5.356e-05, 5.353e-05, 5.353e-05, 987.20077397], [1517150220000, 5.353e-05, 5.355e-05, 5.353e-05, 5.354e-05, 8259.0929868], [1517150280000, 5.354e-05, 5.356e-05, 5.353e-05, 5.356e-05, 14270.06530103], [1517150340000, 5.353e-05, 5.356e-05, 5.353e-05, 5.356e-05, 1168.36844838], [1517150400000, 5.354e-05, 5.354e-05, 5.354e-05, 5.354e-05, 1965.74119955], [1517150460000, 5.354e-05, 5.356e-05, 5.353e-05, 5.354e-05, 4737.07324207], [1517150520000, 5.354e-05, 5.355e-05, 5.353e-05, 5.355e-05, 26826.70992099], [1517150580000, 5.354e-05, 5.355e-05, 5.353e-05, 5.354e-05, 3054.03799136], [1517150640000, 5.354e-05, 5.354e-05, 5.353e-05, 5.353e-05, 6177.38337256], [1517150700000, 5.353e-05, 5.355e-05, 5.353e-05, 5.353e-05, 12527.75290078], [1517150760000, 5.353e-05, 5.355e-05, 5.353e-05, 5.355e-05, 677.86737803], [1517150820000, 5.354e-05, 5.354e-05, 5.353e-05, 5.353e-05, 7938.64511511], [1517150880000, 5.354e-05, 5.354e-05, 5.342e-05, 5.352e-05, 4694.72604825], [1517150940000, 5.342e-05, 5.349e-05, 5.342e-05, 5.342e-05, 8420.00588189], [1517151000000, 5.349e-05, 5.349e-05, 5.342e-05, 5.342e-05, 9995.23785105], [1517151060000, 5.343e-05, 5.346e-05, 5.342e-05, 5.343e-05, 7589.84090642], [1517151120000, 5.343e-05, 5.343e-05, 5.342e-05, 5.342e-05, 15755.96374204], [1517151180000, 5.343e-05, 5.343e-05, 5.342e-05, 5.342e-05, 17448.66703569], [1517151240000, 5.343e-05, 5.35e-05, 5.342e-05, 5.35e-05, 16585.59409508], [1517151300000, 5.343e-05, 5.343e-05, 5.342e-05, 5.343e-05, 821.25969335], [1517151360000, 5.343e-05, 5.346e-05, 5.343e-05, 5.345e-05, 7969.76404266], [1517151420000, 5.345e-05, 5.346e-05, 5.343e-05, 5.345e-05, 6509.52741254], [1517151480000, 5.351e-05, 5.351e-05, 5.345e-05, 5.345e-05, 3552.18355838], [1517151540000, 5.345e-05, 5.347e-05, 5.345e-05, 5.347e-05, 6912.98837915], [1517151600000, 5.346e-05, 5.347e-05, 5.341e-05, 5.341e-05, 49908.60639521], [1517151660000, 5.345e-05, 5.347e-05, 5.345e-05, 5.345e-05, 2683.6272996], [1517151720000, 5.346e-05, 5.347e-05, 5.346e-05, 5.347e-05, 2269.31585034], [1517151780000, 5.346e-05, 5.347e-05, 5.346e-05, 5.346e-05, 7717.65252069], [1517151840000, 5.346e-05, 5.346e-05, 5.345e-05, 5.345e-05, 8740.09445864], [1517151900000, 5.345e-05, 5.346e-05, 5.345e-05, 5.346e-05, 12887.51142064], [1517151960000, 5.347e-05, 5.347e-05, 5.346e-05, 5.346e-05, 57316.59508024], [1517152020000, 5.346e-05, 5.348e-05, 5.346e-05, 5.347e-05, 50032.61902833], [1517152080000, 5.348e-05, 5.353e-05, 5.348e-05, 5.352e-05, 26748.07698198], [1517152140000, 5.352e-05, 5.353e-05, 5.352e-05, 5.352e-05, 32103.00780128], [1517152200000, 5.35e-05, 5.353e-05, 5.348e-05, 5.352e-05, 76301.31442887], [1517152260000, 5.352e-05, 5.352e-05, 5.35e-05, 5.351e-05, 6364.07469876], [1517152320000, 5.351e-05, 5.352e-05, 5.351e-05, 5.351e-05, 9255.58256062], [1517152380000, 5.351e-05, 5.353e-05, 5.351e-05, 5.353e-05, 21110.25819885], [1517152440000, 5.352e-05, 5.352e-05, 5.351e-05, 5.352e-05, 17013.84224317], [1517152500000, 5.351e-05, 5.352e-05, 5.351e-05, 5.351e-05, 6642.28574248], [1517152560000, 5.351e-05, 5.352e-05, 5.35e-05, 5.35e-05, 40450.85973811], [1517152620000, 5.351e-05, 5.351e-05, 5.35e-05, 5.351e-05, 33012.40933628], [1517152680000, 5.351e-05, 5.364e-05, 5.351e-05, 5.351e-05, 134868.48339533], [1517152740000, 5.353e-05, 5.353e-05, 5.35e-05, 5.351e-05, 7324.78558909], [1517152800000, 5.351e-05, 5.353e-05, 5.351e-05, 5.353e-05, 3358.17946458], [1517152860000, 5.353e-05, 5.362e-05, 5.352e-05, 5.361e-05, 9002.96564441], [1517152920000, 5.36e-05, 5.363e-05, 5.354e-05, 5.363e-05, 32088.323535], [1517152980000, 5.355e-05, 5.361e-05, 5.351e-05, 5.351e-05, 9351.31183426], [1517153040000, 5.351e-05, 5.359e-05, 5.351e-05, 5.358e-05, 12198.36539267], [1517153100000, 5.351e-05, 5.359e-05, 5.351e-05, 5.352e-05, 8363.66525958], [1517153160000, 5.359e-05, 5.359e-05, 5.352e-05, 5.358e-05, 6463.02046641], [1517153220000, 5.358e-05, 5.358e-05, 5.352e-05, 5.352e-05, 2504.75876004], [1517153280000, 5.355e-05, 5.357e-05, 5.352e-05, 5.352e-05, 4835.15851762], [1517153340000, 5.352e-05, 5.357e-05, 5.352e-05, 5.352e-05, 17170.72472876], [1517153400000, 5.352e-05, 5.352e-05, 5.351e-05, 5.351e-05, 10297.72195731], [1517153460000, 5.351e-05, 5.352e-05, 5.351e-05, 5.351e-05, 4743.63828186], [1517153520000, 5.35e-05, 5.351e-05, 5.348e-05, 5.35e-05, 20284.55921963], [1517153580000, 5.351e-05, 5.351e-05, 5.346e-05, 5.35e-05, 24572.11311843], [1517153640000, 5.35e-05, 5.352e-05, 5.35e-05, 5.351e-05, 18648.49581757], [1517153700000, 5.35e-05, 5.351e-05, 5.349e-05, 5.349e-05, 8587.18784369], [1517153760000, 5.346e-05, 5.351e-05, 5.346e-05, 5.351e-05, 9212.98504756], [1517153820000, 5.351e-05, 5.352e-05, 5.351e-05, 5.352e-05, 23772.44094936], [1517153880000, 5.352e-05, 5.352e-05, 5.352e-05, 5.352e-05, 5041.36174245], [1517153940000, 5.351e-05, 5.351e-05, 5.351e-05, 5.351e-05, 11194.36754209], [1517154000000, 5.35e-05, 5.358e-05, 5.35e-05, 5.358e-05, 14315.19095879], [1517154060000, 5.35e-05, 5.357e-05, 5.35e-05, 5.351e-05, 5919.48154953], [1517154120000, 5.351e-05, 5.364e-05, 5.35e-05, 5.351e-05, 18429.20227931], [1517154180000, 5.364e-05, 5.364e-05, 5.35e-05, 5.351e-05, 3117.13695507], [1517154240000, 5.351e-05, 5.362e-05, 5.351e-05, 5.359e-05, 13841.1987758], [1517154300000, 5.359e-05, 5.365e-05, 5.354e-05, 5.362e-05, 42224.45687493], [1517154360000, 5.36e-05, 5.36e-05, 5.354e-05, 5.36e-05, 24935.47372134], [1517154420000, 5.355e-05, 5.359e-05, 5.35e-05, 5.354e-05, 11569.08039388], [1517154480000, 5.355e-05, 5.365e-05, 5.355e-05, 5.364e-05, 46356.33200114], [1517154540000, 5.364e-05, 5.365e-05, 5.356e-05, 5.364e-05, 45947.9915153], [1517154600000, 5.364e-05, 5.365e-05, 5.356e-05, 5.364e-05, 13626.66558177], [1517154660000, 5.359e-05, 5.363e-05, 5.352e-05, 5.352e-05, 11765.95802809], [1517154720000, 5.352e-05, 5.359e-05, 5.35e-05, 5.35e-05, 15454.24079709], [1517154780000, 5.35e-05, 5.359e-05, 5.349e-05, 5.359e-05, 19325.35250472], [1517154840000, 5.352e-05, 5.358e-05, 5.35e-05, 5.358e-05, 11590.71273339], [1517154900000, 5.358e-05, 5.358e-05, 5.35e-05, 5.358e-05, 18084.75947598], [1517154960000, 5.358e-05, 5.36e-05, 5.353e-05, 5.353e-05, 40954.88116884], [1517155020000, 5.358e-05, 5.358e-05, 5.351e-05, 5.351e-05, 11011.54048327], [1517155080000, 5.353e-05, 5.365e-05, 5.352e-05, 5.365e-05, 13074.58729013], [1517155140000, 5.365e-05, 5.365e-05, 5.353e-05, 5.357e-05, 3108.62875439], [1517155200000, 5.363e-05, 5.363e-05, 5.357e-05, 5.362e-05, 4882.75103074], [1517155260000, 5.362e-05, 5.362e-05, 5.358e-05, 5.36e-05, 2412.07155086], [1517155320000, 5.36e-05, 5.36e-05, 5.357e-05, 5.36e-05, 20135.4207209], [1517155380000, 5.36e-05, 5.364e-05, 5.36e-05, 5.363e-05, 33014.66007754], [1517155440000, 5.363e-05, 5.364e-05, 5.363e-05, 5.363e-05, 6177.37694749], [1517155500000, 5.361e-05, 5.361e-05, 5.359e-05, 5.36e-05, 10355.12549757], [1517155560000, 5.359e-05, 5.364e-05, 5.359e-05, 5.36e-05, 29197.69412893], [1517155620000, 5.362e-05, 5.364e-05, 5.36e-05, 5.363e-05, 51742.92888056], [1517155680000, 5.364e-05, 5.364e-05, 5.359e-05, 5.36e-05, 30544.27180129], [1517155740000, 5.36e-05, 5.36e-05, 5.359e-05, 5.359e-05, 7965.684517], [1517155800000, 5.359e-05, 5.364e-05, 5.359e-05, 5.364e-05, 22291.74911383], [1517155860000, 5.364e-05, 5.364e-05, 5.359e-05, 5.359e-05, 6730.87369803], [1517155920000, 5.359e-05, 5.36e-05, 5.357e-05, 5.357e-05, 62304.42987753], [1517155980000, 5.357e-05, 5.357e-05, 5.354e-05, 5.354e-05, 93126.06539234], [1517156040000, 5.354e-05, 5.357e-05, 5.353e-05, 5.357e-05, 188443.24808513], [1517156100000, 5.357e-05, 5.357e-05, 5.355e-05, 5.357e-05, 92454.98004209], [1517156160000, 5.357e-05, 5.357e-05, 5.349e-05, 5.349e-05, 170511.94609551], [1517156220000, 5.349e-05, 5.36e-05, 5.347e-05, 5.355e-05, 91170.83235467], [1517156280000, 5.355e-05, 5.365e-05, 5.355e-05, 5.364e-05, 88032.73036511], [1517156340000, 5.364e-05, 5.365e-05, 5.35e-05, 5.365e-05, 149450.56231533], [1517156400000, 5.365e-05, 5.365e-05, 5.353e-05, 5.356e-05, 82380.02589977], [1517156460000, 5.358e-05, 5.365e-05, 5.356e-05, 5.364e-05, 4124.84755151], [1517156520000, 5.365e-05, 5.365e-05, 5.356e-05, 5.363e-05, 26452.04782216], [1517156580000, 5.361e-05, 5.365e-05, 5.361e-05, 5.365e-05, 69619.76195536], [1517156640000, 5.365e-05, 5.365e-05, 5.361e-05, 5.365e-05, 157421.69093937], [1517156700000, 5.365e-05, 5.365e-05, 5.363e-05, 5.365e-05, 50667.32692601], [1517156760000, 5.365e-05, 5.365e-05, 5.364e-05, 5.365e-05, 174338.88759687], [1517156820000, 5.365e-05, 5.365e-05, 5.364e-05, 5.365e-05, 51517.49235215], [1517156880000, 5.365e-05, 5.365e-05, 5.364e-05, 5.364e-05, 65111.90965476], [1517156940000, 5.365e-05, 5.365e-05, 5.364e-05, 5.365e-05, 31285.00869479], [1517157000000, 5.364e-05, 5.365e-05, 5.363e-05, 5.365e-05, 113299.57558766], [1517157060000, 5.364e-05, 5.365e-05, 5.364e-05, 5.365e-05, 2535.0627791], [1517157120000, 5.364e-05, 5.365e-05, 5.364e-05, 5.364e-05, 16858.19900228], [1517157180000, 5.365e-05, 5.365e-05, 5.364e-05, 5.365e-05, 157709.12085217], [1517157240000, 5.365e-05, 5.365e-05, 5.364e-05, 5.365e-05, 5231.23222103], [1517157300000, 5.365e-05, 5.365e-05, 5.364e-05, 5.365e-05, 35294.6643777], [1517157360000, 5.365e-05, 5.365e-05, 5.364e-05, 5.365e-05, 38948.29183029], [1517157420000, 5.365e-05, 5.365e-05, 5.364e-05, 5.365e-05, 131658.40752981], [1517157480000, 5.364e-05, 5.365e-05, 5.363e-05, 5.364e-05, 7325.10403841], [1517157540000, 5.364e-05, 5.365e-05, 5.363e-05, 5.365e-05, 111272.67045993], [1517157600000, 5.363e-05, 5.367e-05, 5.363e-05, 5.367e-05, 449443.43047484], [1517157660000, 5.365e-05, 5.375e-05, 5.365e-05, 5.375e-05, 58698.38058687], [1517157720000, 5.368e-05, 5.375e-05, 5.368e-05, 5.374e-05, 10791.17194507], [1517157780000, 5.37e-05, 5.375e-05, 5.368e-05, 5.375e-05, 7422.45837912], [1517157840000, 5.374e-05, 5.375e-05, 5.365e-05, 5.365e-05, 24429.1293184], [1517157900000, 5.37e-05, 5.37e-05, 5.366e-05, 5.366e-05, 9893.33225493], [1517157960000, 5.368e-05, 5.368e-05, 5.366e-05, 5.366e-05, 34589.31880317], [1517158020000, 5.366e-05, 5.366e-05, 5.365e-05, 5.366e-05, 7600.35150106], [1517158080000, 5.365e-05, 5.366e-05, 5.365e-05, 5.366e-05, 4631.91664315], [1517158140000, 5.366e-05, 5.366e-05, 5.365e-05, 5.366e-05, 7331.36274403], [1517158200000, 5.365e-05, 5.37e-05, 5.365e-05, 5.366e-05, 45580.423797], [1517158260000, 5.367e-05, 5.375e-05, 5.366e-05, 5.37e-05, 42998.31337749], [1517158320000, 5.37e-05, 5.375e-05, 5.365e-05, 5.366e-05, 34284.12217459], [1517158380000, 5.365e-05, 5.37e-05, 5.365e-05, 5.37e-05, 8208.23977898], [1517158440000, 5.37e-05, 5.375e-05, 5.369e-05, 5.37e-05, 12412.1311045], [1517158500000, 5.37e-05, 5.37e-05, 5.367e-05, 5.369e-05, 1731.86279021], [1517158560000, 5.37e-05, 5.37e-05, 5.364e-05, 5.364e-05, 10554.9519189], [1517158620000, 5.365e-05, 5.365e-05, 5.363e-05, 5.365e-05, 12021.70785167], [1517158680000, 5.364e-05, 5.37e-05, 5.364e-05, 5.37e-05, 24440.31797569], [1517158740000, 5.37e-05, 5.37e-05, 5.369e-05, 5.37e-05, 65165.26179066], [1517158800000, 5.37e-05, 5.374e-05, 5.37e-05, 5.373e-05, 41592.4293289], [1517158860000, 5.373e-05, 5.374e-05, 5.372e-05, 5.374e-05, 36851.36899395], [1517158920000, 5.375e-05, 5.375e-05, 5.373e-05, 5.374e-05, 16038.64541628], [1517158980000, 5.373e-05, 5.375e-05, 5.372e-05, 5.372e-05, 15429.11250992], [1517159040000, 5.374e-05, 5.374e-05, 5.37e-05, 5.374e-05, 26320.48191194], [1517159100000, 5.371e-05, 5.375e-05, 5.371e-05, 5.371e-05, 17977.02108191], [1517159160000, 5.374e-05, 5.375e-05, 5.37e-05, 5.371e-05, 100562.52702478], [1517159220000, 5.37e-05, 5.372e-05, 5.37e-05, 5.372e-05, 16564.16720126], [1517159280000, 5.372e-05, 5.372e-05, 5.37e-05, 5.37e-05, 6237.1054184], [1517159340000, 5.372e-05, 5.372e-05, 5.37e-05, 5.371e-05, 1560.76630826], [1517159400000, 5.371e-05, 5.372e-05, 5.34e-05, 5.37e-05, 154013.83313858], [1517159460000, 5.37e-05, 5.37e-05, 5.332e-05, 5.369e-05, 117594.27969145], [1517159520000, 5.369e-05, 5.371e-05, 5.315e-05, 5.369e-05, 166631.56351947], [1517159580000, 5.37e-05, 5.37e-05, 5.323e-05, 5.345e-05, 101090.08913657], [1517159640000, 5.345e-05, 5.365e-05, 5.326e-05, 5.357e-05, 50077.0575796], [1517159700000, 5.357e-05, 5.367e-05, 5.357e-05, 5.365e-05, 8294.59050661], [1517159760000, 5.366e-05, 5.367e-05, 5.334e-05, 5.345e-05, 69933.9855023], [1517159820000, 5.365e-05, 5.365e-05, 5.338e-05, 5.345e-05, 3527.17412418], [1517159880000, 5.346e-05, 5.367e-05, 5.345e-05, 5.367e-05, 4949.84623196], [1517159940000, 5.366e-05, 5.367e-05, 5.366e-05, 5.367e-05, 1792.29648332], [1517160000000, 5.367e-05, 5.368e-05, 5.367e-05, 5.368e-05, 7059.72245754], [1517160060000, 5.369e-05, 5.369e-05, 5.367e-05, 5.367e-05, 4100.08997541], [1517160120000, 5.368e-05, 5.369e-05, 5.367e-05, 5.369e-05, 4564.51293394], [1517160180000, 5.368e-05, 5.37e-05, 5.368e-05, 5.37e-05, 6299.78537815], [1517160240000, 5.37e-05, 5.37e-05, 5.368e-05, 5.37e-05, 16273.19219312], [1517160300000, 5.37e-05, 5.37e-05, 5.369e-05, 5.369e-05, 2486.29254796], [1517160360000, 5.369e-05, 5.37e-05, 5.35e-05, 5.35e-05, 77756.77133269], [1517160420000, 5.37e-05, 5.37e-05, 5.368e-05, 5.368e-05, 340.9268743], [1517160480000, 5.368e-05, 5.368e-05, 5.368e-05, 5.368e-05, 10.4324782], [1517160540000, 5.368e-05, 5.368e-05, 5.368e-05, 5.368e-05, 12637.2033938], [1517160600000, 5.368e-05, 5.368e-05, 5.345e-05, 5.368e-05, 44907.86653624], [1517160660000, 5.362e-05, 5.362e-05, 5.362e-05, 5.362e-05, 14.6438184], [1517160720000, 5.363e-05, 5.368e-05, 5.362e-05, 5.364e-05, 3631.49672814], [1517160780000, 5.364e-05, 5.37e-05, 5.364e-05, 5.37e-05, 31948.33074079], [1517160840000, 5.368e-05, 5.368e-05, 5.364e-05, 5.364e-05, 5128.70544785], [1517160900000, 5.364e-05, 5.371e-05, 5.364e-05, 5.371e-05, 10691.04848621], [1517160960000, 5.371e-05, 5.372e-05, 5.37e-05, 5.371e-05, 8316.04969727], [1517161020000, 5.372e-05, 5.372e-05, 5.371e-05, 5.371e-05, 12270.21511874], [1517161080000, 5.372e-05, 5.373e-05, 5.371e-05, 5.371e-05, 6060.67203298], [1517161140000, 5.371e-05, 5.373e-05, 5.371e-05, 5.373e-05, 8603.68561806], [1517161200000, 5.372e-05, 5.373e-05, 5.371e-05, 5.373e-05, 4758.88420474], [1517161260000, 5.372e-05, 5.373e-05, 5.371e-05, 5.371e-05, 1356.25025076], [1517161320000, 5.372e-05, 5.373e-05, 5.371e-05, 5.373e-05, 13014.84073658], [1517161380000, 5.373e-05, 5.374e-05, 5.371e-05, 5.374e-05, 18519.38147014], [1517161440000, 5.374e-05, 5.374e-05, 5.373e-05, 5.374e-05, 1508.54268208], [1517161500000, 5.374e-05, 5.375e-05, 5.374e-05, 5.374e-05, 76527.91431133], [1517161560000, 5.375e-05, 5.375e-05, 5.375e-05, 5.375e-05, 8348.30029049], [1517161620000, 5.375e-05, 5.375e-05, 5.374e-05, 5.374e-05, 31158.32001266], [1517161680000, 5.374e-05, 5.375e-05, 5.374e-05, 5.375e-05, 44728.92017155], [1517161740000, 5.375e-05, 5.375e-05, 5.374e-05, 5.375e-05, 15444.39186683], [1517161800000, 5.374e-05, 5.374e-05, 5.373e-05, 5.373e-05, 19400.91522764], [1517161860000, 5.373e-05, 5.374e-05, 5.372e-05, 5.373e-05, 11546.88269187], [1517161920000, 5.374e-05, 5.375e-05, 5.374e-05, 5.375e-05, 17981.27067782], [1517161980000, 5.375e-05, 5.375e-05, 5.374e-05, 5.374e-05, 5506.50146186], [1517162040000, 5.374e-05, 5.375e-05, 5.374e-05, 5.375e-05, 9965.26036802], [1517162100000, 5.375e-05, 5.375e-05, 5.374e-05, 5.375e-05, 7718.38259217], [1517162160000, 5.374e-05, 5.374e-05, 5.374e-05, 5.374e-05, 668.3515852], [1517162220000, 5.374e-05, 5.375e-05, 5.373e-05, 5.375e-05, 23379.76664719], [1517162280000, 5.375e-05, 5.375e-05, 5.374e-05, 5.375e-05, 9112.99548271], [1517162340000, 5.375e-05, 5.375e-05, 5.374e-05, 5.375e-05, 3828.71682505], [1517162400000, 5.375e-05, 5.375e-05, 5.374e-05, 5.375e-05, 12059.77581043], [1517162460000, 5.375e-05, 5.375e-05, 5.373e-05, 5.375e-05, 3013.99467814], [1517162520000, 5.374e-05, 5.375e-05, 5.374e-05, 5.375e-05, 7919.69123571], [1517162580000, 5.375e-05, 5.375e-05, 5.374e-05, 5.375e-05, 51004.32875851], [1517162640000, 5.375e-05, 5.375e-05, 5.375e-05, 5.375e-05, 73482.00703395], [1517162700000, 5.374e-05, 5.38e-05, 5.374e-05, 5.376e-05, 55290.49274539], [1517162760000, 5.376e-05, 5.38e-05, 5.376e-05, 5.38e-05, 19075.38120578], [1517162820000, 5.38e-05, 5.381e-05, 5.38e-05, 5.38e-05, 5574.84866636], [1517162880000, 5.38e-05, 5.386e-05, 5.38e-05, 5.385e-05, 8472.65236526], [1517162940000, 5.386e-05, 5.397e-05, 5.386e-05, 5.397e-05, 24424.07416359], [1517163000000, 5.393e-05, 5.397e-05, 5.39e-05, 5.39e-05, 17541.16960044], [1517163060000, 5.393e-05, 5.396e-05, 5.393e-05, 5.396e-05, 5604.86838126], [1517163120000, 5.396e-05, 5.396e-05, 5.396e-05, 5.396e-05, 6207.39624056], [1517163180000, 5.396e-05, 5.397e-05, 5.395e-05, 5.397e-05, 18577.32473172], [1517163240000, 5.393e-05, 5.397e-05, 5.393e-05, 5.393e-05, 13548.20408091], [1517163300000, 5.396e-05, 5.396e-05, 5.388e-05, 5.388e-05, 8273.66765195], [1517163360000, 5.388e-05, 5.388e-05, 5.388e-05, 5.388e-05, 7403.82207385], [1517163420000, 5.388e-05, 5.389e-05, 5.386e-05, 5.387e-05, 12139.54687603], [1517163480000, 5.387e-05, 5.391e-05, 5.386e-05, 5.391e-05, 26525.29897454], [1517163540000, 5.393e-05, 5.398e-05, 5.386e-05, 5.398e-05, 17403.50402973], [1517163600000, 5.398e-05, 5.398e-05, 5.392e-05, 5.392e-05, 7413.60544341], [1517163660000, 5.392e-05, 5.398e-05, 5.392e-05, 5.398e-05, 2986.47180862], [1517163720000, 5.398e-05, 5.398e-05, 5.392e-05, 5.396e-05, 2907.241107], [1517163780000, 5.396e-05, 5.397e-05, 5.396e-05, 5.397e-05, 5843.56866939], [1517163840000, 5.397e-05, 5.397e-05, 5.36e-05, 5.383e-05, 40348.34247368], [1517163900000, 5.397e-05, 5.397e-05, 5.352e-05, 5.395e-05, 87252.09843725], [1517163960000, 5.395e-05, 5.395e-05, 5.374e-05, 5.395e-05, 7686.85644261], [1517164020000, 5.395e-05, 5.397e-05, 5.395e-05, 5.397e-05, 10671.74988044], [1517164080000, 5.396e-05, 5.397e-05, 5.395e-05, 5.395e-05, 10697.38675073], [1517164140000, 5.395e-05, 5.397e-05, 5.391e-05, 5.391e-05, 10278.95994943], [1517164200000, 5.391e-05, 5.397e-05, 5.388e-05, 5.396e-05, 11589.09820658], [1517164260000, 5.396e-05, 5.398e-05, 5.395e-05, 5.397e-05, 15022.15296494], [1517164320000, 5.397e-05, 5.397e-05, 5.396e-05, 5.396e-05, 9157.54242553], [1517164380000, 5.396e-05, 5.396e-05, 5.389e-05, 5.389e-05, 7049.22700473], [1517164440000, 5.39e-05, 5.401e-05, 5.389e-05, 5.401e-05, 93916.45184806], [1517164500000, 5.4e-05, 5.404e-05, 5.4e-05, 5.404e-05, 19115.98374803], [1517164560000, 5.404e-05, 5.405e-05, 5.402e-05, 5.402e-05, 12808.10383744], [1517164620000, 5.404e-05, 5.404e-05, 5.402e-05, 5.402e-05, 6459.93950655], [1517164680000, 5.403e-05, 5.403e-05, 5.4e-05, 5.4e-05, 50157.91096078], [1517164740000, 5.4e-05, 5.4e-05, 5.39e-05, 5.39e-05, 2980.7451966], [1517164800000, 5.39e-05, 5.39e-05, 5.376e-05, 5.376e-05, 2563.660245], [1517164860000, 5.398e-05, 5.399e-05, 5.355e-05, 5.396e-05, 23186.92356482], [1517164920000, 5.396e-05, 5.398e-05, 5.396e-05, 5.396e-05, 3911.27542076], [1517164980000, 5.396e-05, 5.396e-05, 5.37e-05, 5.381e-05, 848.53515993], [1517165040000, 5.396e-05, 5.396e-05, 5.381e-05, 5.381e-05, 2343.90196802], [1517165100000, 5.381e-05, 5.381e-05, 5.371e-05, 5.372e-05, 3461.13551228], [1517165160000, 5.395e-05, 5.396e-05, 5.395e-05, 5.396e-05, 2648.43059589], [1517165220000, 5.396e-05, 5.396e-05, 5.395e-05, 5.395e-05, 6999.3628383], [1517165280000, 5.395e-05, 5.395e-05, 5.388e-05, 5.388e-05, 2672.03226563], [1517165340000, 5.388e-05, 5.388e-05, 5.387e-05, 5.387e-05, 3775.29585777], [1517165400000, 5.388e-05, 5.388e-05, 5.388e-05, 5.388e-05, 5315.18537026], [1517165460000, 5.388e-05, 5.396e-05, 5.386e-05, 5.396e-05, 6110.15365485], [1517165520000, 5.389e-05, 5.396e-05, 5.388e-05, 5.396e-05, 8361.32013358], [1517165580000, 5.396e-05, 5.396e-05, 5.389e-05, 5.389e-05, 1195.17475987], [1517165640000, 5.39e-05, 5.396e-05, 5.39e-05, 5.396e-05, 1571.03630132], [1517165700000, 5.396e-05, 5.396e-05, 5.391e-05, 5.395e-05, 144.17582047], [1517165760000, 5.395e-05, 5.395e-05, 5.39e-05, 5.39e-05, 7542.20603726], [1517165820000, 5.39e-05, 5.395e-05, 5.39e-05, 5.395e-05, 9665.97075978], [1517165880000, 5.395e-05, 5.396e-05, 5.395e-05, 5.395e-05, 4813.99595065], [1517165940000, 5.395e-05, 5.396e-05, 5.392e-05, 5.396e-05, 32528.13462963], [1517166000000, 5.396e-05, 5.397e-05, 5.395e-05, 5.397e-05, 10352.85947083], [1517166060000, 5.397e-05, 5.397e-05, 5.397e-05, 5.397e-05, 2286.46338456], [1517166120000, 5.397e-05, 5.397e-05, 5.393e-05, 5.396e-05, 12239.1599313], [1517166180000, 5.396e-05, 5.397e-05, 5.393e-05, 5.393e-05, 12948.84089888], [1517166240000, 5.393e-05, 5.393e-05, 5.389e-05, 5.389e-05, 7120.09389001], [1517166300000, 5.39e-05, 5.39e-05, 5.39e-05, 5.39e-05, 721.37762669], [1517166360000, 5.392e-05, 5.394e-05, 5.392e-05, 5.392e-05, 1008.99252092], [1517166420000, 5.394e-05, 5.397e-05, 5.394e-05, 5.396e-05, 15032.71901772], [1517166480000, 5.396e-05, 5.396e-05, 5.396e-05, 5.396e-05, 216.99846011], [1517166540000, 5.396e-05, 5.397e-05, 5.396e-05, 5.396e-05, 7269.74533271], [1517166600000, 5.397e-05, 5.397e-05, 5.396e-05, 5.396e-05, 8577.60969541], [1517166660000, 5.393e-05, 5.393e-05, 5.392e-05, 5.393e-05, 6619.68502108], [1517166720000, 5.393e-05, 5.393e-05, 5.392e-05, 5.393e-05, 1428.41159919], [1517166780000, 5.393e-05, 5.403e-05, 5.393e-05, 5.398e-05, 10623.74507133], [1517166840000, 5.398e-05, 5.403e-05, 5.398e-05, 5.398e-05, 7727.24498336], [1517166900000, 5.402e-05, 5.403e-05, 5.399e-05, 5.403e-05, 5314.33549219], [1517166960000, 5.403e-05, 5.403e-05, 5.398e-05, 5.399e-05, 2265.68027745], [1517167020000, 5.399e-05, 5.399e-05, 5.399e-05, 5.399e-05, 2479.25867915], [1517167080000, 5.398e-05, 5.399e-05, 5.398e-05, 5.398e-05, 5585.46234534], [1517167140000, 5.398e-05, 5.399e-05, 5.398e-05, 5.399e-05, 658.79090886], [1517167200000, 5.399e-05, 5.399e-05, 5.398e-05, 5.399e-05, 8772.39832088], [1517167260000, 5.398e-05, 5.399e-05, 5.398e-05, 5.399e-05, 16324.45468805], [1517167320000, 5.399e-05, 5.399e-05, 5.398e-05, 5.399e-05, 2198.26428264], [1517167380000, 5.398e-05, 5.399e-05, 5.398e-05, 5.399e-05, 1453.36073249], [1517167440000, 5.399e-05, 5.403e-05, 5.399e-05, 5.403e-05, 6030.45152385], [1517167500000, 5.4e-05, 5.401e-05, 5.4e-05, 5.401e-05, 1037.03073749], [1517167560000, 5.401e-05, 5.403e-05, 5.401e-05, 5.401e-05, 6975.57899253], [1517167620000, 5.402e-05, 5.403e-05, 5.401e-05, 5.401e-05, 2501.55099697], [1517167680000, 5.401e-05, 5.402e-05, 5.401e-05, 5.402e-05, 1032.83808967], [1517167740000, 5.403e-05, 5.403e-05, 5.402e-05, 5.402e-05, 1183.18889126], [1517167800000, 5.402e-05, 5.403e-05, 5.401e-05, 5.402e-05, 15698.25982781], [1517167860000, 5.401e-05, 5.406e-05, 5.4e-05, 5.406e-05, 78037.79592859], [1517167920000, 5.4e-05, 5.406e-05, 5.4e-05, 5.406e-05, 539.38446175], [1517167980000, 5.401e-05, 5.406e-05, 5.401e-05, 5.406e-05, 1693.17353474], [1517168040000, 5.402e-05, 5.416e-05, 5.402e-05, 5.416e-05, 10452.85128878], [1517168100000, 5.402e-05, 5.409e-05, 5.402e-05, 5.409e-05, 456.33226989], [1517168160000, 5.419e-05, 5.42e-05, 5.409e-05, 5.409e-05, 3958.80761327], [1517168220000, 5.409e-05, 5.42e-05, 5.409e-05, 5.42e-05, 3294.34834983], [1517168280000, 5.419e-05, 5.42e-05, 5.418e-05, 5.418e-05, 6796.25714924], [1517168340000, 5.42e-05, 5.42e-05, 5.409e-05, 5.409e-05, 8944.75934134], [1517168400000, 5.406e-05, 5.409e-05, 5.402e-05, 5.406e-05, 2501.61280921], [1517168460000, 5.406e-05, 5.41e-05, 5.401e-05, 5.409e-05, 2872.88669002], [1517168520000, 5.409e-05, 5.409e-05, 5.409e-05, 5.409e-05, 536.1434646], [1517168580000, 5.407e-05, 5.407e-05, 5.407e-05, 5.407e-05, 616.01675318], [1517168640000, 5.409e-05, 5.409e-05, 5.409e-05, 5.409e-05, 632.66789186], [1517168700000, 5.409e-05, 5.409e-05, 5.409e-05, 5.409e-05, 7884.14537785], [1517168760000, 5.409e-05, 5.409e-05, 5.409e-05, 5.409e-05, 200.69500832], [1517168820000, 5.409e-05, 5.409e-05, 5.402e-05, 5.405e-05, 4122.87754872], [1517168880000, 5.405e-05, 5.405e-05, 5.402e-05, 5.402e-05, 1650.07975116], [1517168940000, 5.402e-05, 5.405e-05, 5.402e-05, 5.405e-05, 2381.02530661], [1517169000000, 5.405e-05, 5.405e-05, 5.405e-05, 5.405e-05, 8491.90637328], [1517169060000, 5.404e-05, 5.404e-05, 5.398e-05, 5.398e-05, 68600.95089988], [1517169120000, 5.404e-05, 5.404e-05, 5.395e-05, 5.395e-05, 33.98233578], [1517169180000, 5.398e-05, 5.4e-05, 5.395e-05, 5.395e-05, 1466.97897534], [1517169240000, 5.395e-05, 5.398e-05, 5.395e-05, 5.398e-05, 7678.73219968], [1517169300000, 5.398e-05, 5.398e-05, 5.398e-05, 5.398e-05, 502.63408194], [1517169360000, 5.395e-05, 5.398e-05, 5.393e-05, 5.393e-05, 8018.0460728], [1517169420000, 5.393e-05, 5.393e-05, 5.392e-05, 5.392e-05, 101054.1146918], [1517169480000, 5.392e-05, 5.393e-05, 5.389e-05, 5.392e-05, 51830.57245693], [1517169540000, 5.392e-05, 5.392e-05, 5.389e-05, 5.39e-05, 1369.27710321], [1517169600000, 5.39e-05, 5.39e-05, 5.389e-05, 5.389e-05, 3146.95889055], [1517169660000, 5.388e-05, 5.388e-05, 5.36e-05, 5.375e-05, 13570.35640775], [1517169720000, 5.375e-05, 5.39e-05, 5.363e-05, 5.363e-05, 2128.23752471], [1517169780000, 5.364e-05, 5.39e-05, 5.35e-05, 5.38e-05, 64704.35839579], [1517169840000, 5.38e-05, 5.38e-05, 5.372e-05, 5.379e-05, 1232.04452576], [1517169900000, 5.378e-05, 5.379e-05, 5.376e-05, 5.376e-05, 3482.0000328], [1517169960000, 5.376e-05, 5.376e-05, 5.374e-05, 5.375e-05, 1219.88998177], [1517170020000, 5.374e-05, 5.374e-05, 5.359e-05, 5.373e-05, 25310.52992637], [1517170080000, 5.37e-05, 5.37e-05, 5.358e-05, 5.37e-05, 7311.65325331], [1517170140000, 5.37e-05, 5.372e-05, 5.358e-05, 5.372e-05, 1365.79261092], [1517170200000, 5.373e-05, 5.374e-05, 5.372e-05, 5.374e-05, 771.71556142], [1517170260000, 5.374e-05, 5.374e-05, 5.373e-05, 5.374e-05, 10311.52349177], [1517170320000, 5.374e-05, 5.374e-05, 5.373e-05, 5.374e-05, 1226.62138486], [1517170380000, 5.374e-05, 5.374e-05, 5.373e-05, 5.374e-05, 79864.79855746], [1517170440000, 5.374e-05, 5.374e-05, 5.373e-05, 5.373e-05, 8127.61891776], [1517170500000, 5.373e-05, 5.374e-05, 5.373e-05, 5.374e-05, 584.53303297], [1517170560000, 5.374e-05, 5.374e-05, 5.374e-05, 5.374e-05, 8187.71767392], [1517170620000, 5.374e-05, 5.374e-05, 5.373e-05, 5.373e-05, 25420.65864929], [1517170680000, 5.373e-05, 5.373e-05, 5.33e-05, 5.35e-05, 96933.78866377], [1517170740000, 5.35e-05, 5.372e-05, 5.35e-05, 5.372e-05, 2068.19937219], [1517170800000, 5.372e-05, 5.372e-05, 5.372e-05, 5.372e-05, 440.9816423], [1517170920000, 5.371e-05, 5.372e-05, 5.35e-05, 5.372e-05, 903.85288352], [1517170980000, 5.372e-05, 5.372e-05, 5.372e-05, 5.372e-05, 43.8635355], [1517171040000, 5.351e-05, 5.372e-05, 5.351e-05, 5.351e-05, 763.13585445], [1517171100000, 5.352e-05, 5.352e-05, 5.352e-05, 5.352e-05, 1100.0], [1517171160000, 5.372e-05, 5.372e-05, 5.352e-05, 5.371e-05, 10397.06825032], [1517171220000, 5.371e-05, 5.371e-05, 5.371e-05, 5.371e-05, 20.480357], [1517171280000, 5.371e-05, 5.372e-05, 5.356e-05, 5.372e-05, 5845.7976845], [1517171340000, 5.372e-05, 5.374e-05, 5.372e-05, 5.374e-05, 4826.02632591], [1517171400000, 5.373e-05, 5.373e-05, 5.372e-05, 5.372e-05, 1580.33732776], [1517171460000, 5.372e-05, 5.374e-05, 5.372e-05, 5.374e-05, 1372.36198725], [1517171520000, 5.373e-05, 5.374e-05, 5.373e-05, 5.374e-05, 26726.072066], [1517171580000, 5.373e-05, 5.374e-05, 5.373e-05, 5.373e-05, 4312.88771617], [1517171640000, 5.373e-05, 5.374e-05, 5.372e-05, 5.373e-05, 6460.58703105], [1517171700000, 5.373e-05, 5.374e-05, 5.373e-05, 5.374e-05, 1303.2013074], [1517171760000, 5.374e-05, 5.374e-05, 5.373e-05, 5.374e-05, 3512.23206662], [1517171820000, 5.374e-05, 5.374e-05, 5.373e-05, 5.373e-05, 1255.03179151], [1517171880000, 5.373e-05, 5.374e-05, 5.362e-05, 5.362e-05, 1205.8238332], [1517171940000, 5.372e-05, 5.372e-05, 5.361e-05, 5.37e-05, 983.36604534], [1517172000000, 5.37e-05, 5.37e-05, 5.37e-05, 5.37e-05, 222.02685626], [1517172060000, 5.37e-05, 5.37e-05, 5.37e-05, 5.37e-05, 3435.08659877], [1517172120000, 5.371e-05, 5.371e-05, 5.362e-05, 5.362e-05, 2163.46859169], [1517172180000, 5.37e-05, 5.37e-05, 5.365e-05, 5.365e-05, 3389.79170367], [1517172240000, 5.365e-05, 5.365e-05, 5.362e-05, 5.365e-05, 3568.57649844], [1517172300000, 5.365e-05, 5.369e-05, 5.365e-05, 5.369e-05, 4990.90888483], [1517172360000, 5.365e-05, 5.369e-05, 5.365e-05, 5.369e-05, 1300.22495526], [1517172420000, 5.366e-05, 5.366e-05, 5.365e-05, 5.365e-05, 1163.79068357], [1517172480000, 5.365e-05, 5.366e-05, 5.365e-05, 5.366e-05, 3091.58087768], [1517172540000, 5.365e-05, 5.366e-05, 5.365e-05, 5.365e-05, 2813.52891097], [1517172600000, 5.365e-05, 5.365e-05, 5.362e-05, 5.362e-05, 4772.50175652], [1517172660000, 5.365e-05, 5.365e-05, 5.362e-05, 5.362e-05, 1087.00775787], [1517172720000, 5.362e-05, 5.365e-05, 5.362e-05, 5.362e-05, 7005.74759296], [1517172780000, 5.362e-05, 5.364e-05, 5.362e-05, 5.362e-05, 1595.20208397], [1517172840000, 5.364e-05, 5.365e-05, 5.362e-05, 5.364e-05, 4173.12300491], [1517172900000, 5.365e-05, 5.365e-05, 5.361e-05, 5.362e-05, 16086.19780844], [1517172960000, 5.362e-05, 5.362e-05, 5.361e-05, 5.361e-05, 311.98654984], [1517173020000, 5.362e-05, 5.365e-05, 5.362e-05, 5.362e-05, 3859.62521393], [1517173080000, 5.362e-05, 5.363e-05, 5.361e-05, 5.361e-05, 10969.74152658], [1517173140000, 5.362e-05, 5.364e-05, 5.361e-05, 5.361e-05, 1959.14980036], [1517173200000, 5.361e-05, 5.366e-05, 5.36e-05, 5.364e-05, 17166.65002637], [1517173260000, 5.361e-05, 5.369e-05, 5.36e-05, 5.369e-05, 6883.80912956], [1517173320000, 5.361e-05, 5.369e-05, 5.352e-05, 5.369e-05, 4481.83117095], [1517173380000, 5.369e-05, 5.369e-05, 5.353e-05, 5.353e-05, 744.13917754], [1517173440000, 5.369e-05, 5.369e-05, 5.363e-05, 5.369e-05, 854.23964566], [1517173500000, 5.369e-05, 5.374e-05, 5.368e-05, 5.368e-05, 14773.03336091], [1517173560000, 5.369e-05, 5.369e-05, 5.353e-05, 5.363e-05, 63940.46126046], [1517173620000, 5.362e-05, 5.362e-05, 5.354e-05, 5.362e-05, 3348.42231409], [1517173680000, 5.362e-05, 5.363e-05, 5.354e-05, 5.36e-05, 5956.32647885], [1517173740000, 5.36e-05, 5.36e-05, 5.36e-05, 5.36e-05, 193.199], [1517173800000, 5.36e-05, 5.36e-05, 5.356e-05, 5.356e-05, 9869.19983098], [1517173860000, 5.36e-05, 5.36e-05, 5.353e-05, 5.357e-05, 23145.79117676], [1517173920000, 5.357e-05, 5.357e-05, 5.353e-05, 5.353e-05, 275.8585319], [1517173980000, 5.357e-05, 5.357e-05, 5.357e-05, 5.357e-05, 215.70282528], [1517174040000, 5.357e-05, 5.357e-05, 5.353e-05, 5.353e-05, 216.5315719], [1517174100000, 5.353e-05, 5.357e-05, 5.353e-05, 5.354e-05, 218.81414242], [1517174160000, 5.355e-05, 5.356e-05, 5.355e-05, 5.356e-05, 6062.42213547], [1517174220000, 5.356e-05, 5.357e-05, 5.353e-05, 5.354e-05, 61736.34688817], [1517174280000, 5.354e-05, 5.36e-05, 5.354e-05, 5.357e-05, 11784.08874838], [1517174340000, 5.359e-05, 5.36e-05, 5.357e-05, 5.357e-05, 14307.19306471], [1517174400000, 5.357e-05, 5.36e-05, 5.357e-05, 5.357e-05, 5418.97744585], [1517174460000, 5.358e-05, 5.36e-05, 5.358e-05, 5.36e-05, 4662.76163872], [1517174520000, 5.36e-05, 5.37e-05, 5.36e-05, 5.363e-05, 3374.13399306], [1517174580000, 5.37e-05, 5.373e-05, 5.361e-05, 5.362e-05, 4536.17344659], [1517174640000, 5.363e-05, 5.363e-05, 5.36e-05, 5.36e-05, 6825.91918383], [1517174700000, 5.36e-05, 5.362e-05, 5.36e-05, 5.36e-05, 1657.40397821], [1517174760000, 5.361e-05, 5.361e-05, 5.36e-05, 5.361e-05, 462.1889932], [1517174820000, 5.361e-05, 5.361e-05, 5.36e-05, 5.361e-05, 4395.98325828], [1517174880000, 5.362e-05, 5.373e-05, 5.36e-05, 5.36e-05, 8257.73594084], [1517174940000, 5.363e-05, 5.363e-05, 5.361e-05, 5.363e-05, 3949.56635441], [1517175000000, 5.363e-05, 5.373e-05, 5.363e-05, 5.373e-05, 496.9293168], [1517175060000, 5.368e-05, 5.374e-05, 5.368e-05, 5.374e-05, 4806.66964833], [1517175120000, 5.368e-05, 5.368e-05, 5.362e-05, 5.362e-05, 4951.42313143], [1517175180000, 5.362e-05, 5.372e-05, 5.36e-05, 5.362e-05, 7583.21993119], [1517175240000, 5.362e-05, 5.374e-05, 5.35e-05, 5.351e-05, 17334.89895278], [1517175300000, 5.362e-05, 5.362e-05, 5.351e-05, 5.362e-05, 2328.2531627], [1517175360000, 5.362e-05, 5.377e-05, 5.35e-05, 5.374e-05, 90889.41717559], [1517175420000, 5.374e-05, 5.374e-05, 5.353e-05, 5.373e-05, 4205.03698112], [1517175480000, 5.373e-05, 5.373e-05, 5.358e-05, 5.359e-05, 6478.66832115], [1517175540000, 5.351e-05, 5.359e-05, 5.351e-05, 5.359e-05, 13929.72524567], [1517175600000, 5.358e-05, 5.37e-05, 5.358e-05, 5.37e-05, 5557.27952123], [1517175660000, 5.359e-05, 5.373e-05, 5.359e-05, 5.369e-05, 17285.91541403], [1517175720000, 5.373e-05, 5.377e-05, 5.37e-05, 5.373e-05, 29429.20798191], [1517175780000, 5.37e-05, 5.373e-05, 5.369e-05, 5.37e-05, 1968.46215725], [1517175840000, 5.37e-05, 5.373e-05, 5.37e-05, 5.373e-05, 24079.24789145], [1517175900000, 5.371e-05, 5.373e-05, 5.369e-05, 5.369e-05, 21666.45100843], [1517175960000, 5.369e-05, 5.369e-05, 5.368e-05, 5.369e-05, 7655.93598144], [1517176020000, 5.369e-05, 5.369e-05, 5.359e-05, 5.359e-05, 18240.58688438], [1517176080000, 5.359e-05, 5.36e-05, 5.359e-05, 5.36e-05, 25678.08545177], [1517176140000, 5.36e-05, 5.36e-05, 5.36e-05, 5.36e-05, 7598.07316456], [1517176200000, 5.36e-05, 5.369e-05, 5.36e-05, 5.369e-05, 7139.66675181], [1517176260000, 5.36e-05, 5.373e-05, 5.36e-05, 5.373e-05, 62126.93701496], [1517176320000, 5.373e-05, 5.385e-05, 5.373e-05, 5.381e-05, 164851.08327319], [1517176380000, 5.385e-05, 5.387e-05, 5.385e-05, 5.387e-05, 5623.28031401], [1517176440000, 5.388e-05, 5.39e-05, 5.388e-05, 5.39e-05, 11933.97154961], [1517176500000, 5.39e-05, 5.394e-05, 5.388e-05, 5.394e-05, 4164.36311598], [1517176560000, 5.388e-05, 5.43e-05, 5.388e-05, 5.391e-05, 74283.65980752], [1517176620000, 5.388e-05, 5.391e-05, 5.388e-05, 5.388e-05, 6429.17783444], [1517176680000, 5.388e-05, 5.391e-05, 5.388e-05, 5.391e-05, 8590.93255725], [1517176740000, 5.391e-05, 5.391e-05, 5.39e-05, 5.39e-05, 10223.9178952], [1517176800000, 5.39e-05, 5.391e-05, 5.39e-05, 5.391e-05, 44965.59596157], [1517176860000, 5.388e-05, 5.391e-05, 5.388e-05, 5.391e-05, 25367.77711437], [1517176920000, 5.391e-05, 5.391e-05, 5.391e-05, 5.391e-05, 37267.49709255], [1517176980000, 5.391e-05, 5.429e-05, 5.391e-05, 5.429e-05, 9931.73367662], [1517177040000, 5.425e-05, 5.426e-05, 5.391e-05, 5.402e-05, 3120.91425556], [1517177100000, 5.394e-05, 5.402e-05, 5.394e-05, 5.402e-05, 3180.52505549], [1517177160000, 5.394e-05, 5.4e-05, 5.394e-05, 5.394e-05, 2889.92059444], [1517177220000, 5.399e-05, 5.399e-05, 5.394e-05, 5.395e-05, 1856.81033264], [1517177280000, 5.396e-05, 5.402e-05, 5.395e-05, 5.4e-05, 21006.06252361], [1517177340000, 5.4e-05, 5.41e-05, 5.4e-05, 5.402e-05, 4400.56072689], [1517177400000, 5.402e-05, 5.41e-05, 5.402e-05, 5.402e-05, 3249.55658998], [1517177460000, 5.402e-05, 5.408e-05, 5.4e-05, 5.4e-05, 40580.79950904], [1517177520000, 5.4e-05, 5.407e-05, 5.4e-05, 5.4e-05, 26488.84003972], [1517177580000, 5.4e-05, 5.423e-05, 5.4e-05, 5.405e-05, 7842.65042709], [1517177640000, 5.405e-05, 5.411e-05, 5.405e-05, 5.41e-05, 7871.14748389], [1517177700000, 5.41e-05, 5.421e-05, 5.41e-05, 5.41e-05, 45004.2699736], [1517177760000, 5.41e-05, 5.411e-05, 5.405e-05, 5.41e-05, 7915.80701714], [1517177820000, 5.41e-05, 5.42e-05, 5.405e-05, 5.407e-05, 2525.37159878], [1517177880000, 5.415e-05, 5.415e-05, 5.4e-05, 5.407e-05, 54929.92315136], [1517177940000, 5.407e-05, 5.407e-05, 5.395e-05, 5.407e-05, 6265.6485393], [1517178000000, 5.395e-05, 5.407e-05, 5.395e-05, 5.395e-05, 2338.63671653], [1517178060000, 5.406e-05, 5.406e-05, 5.395e-05, 5.405e-05, 1060.0700797], [1517178120000, 5.405e-05, 5.405e-05, 5.396e-05, 5.396e-05, 3618.84295957], [1517178180000, 5.396e-05, 5.405e-05, 5.395e-05, 5.395e-05, 17156.87944889], [1517178240000, 5.395e-05, 5.406e-05, 5.395e-05, 5.395e-05, 646.60229881], [1517178300000, 5.395e-05, 5.404e-05, 5.395e-05, 5.404e-05, 2609.13081939], [1517178360000, 5.405e-05, 5.405e-05, 5.395e-05, 5.395e-05, 20925.96967743], [1517178420000, 5.399e-05, 5.399e-05, 5.385e-05, 5.385e-05, 9289.97336563], [1517178480000, 5.385e-05, 5.385e-05, 5.379e-05, 5.38e-05, 4155.00357815], [1517178540000, 5.38e-05, 5.385e-05, 5.38e-05, 5.385e-05, 2609.80834571], [1517178600000, 5.385e-05, 5.385e-05, 5.38e-05, 5.381e-05, 1156.3555929], [1517178660000, 5.382e-05, 5.384e-05, 5.381e-05, 5.381e-05, 20397.80115601], [1517178720000, 5.382e-05, 5.383e-05, 5.381e-05, 5.381e-05, 2320.88998], [1517178780000, 5.383e-05, 5.383e-05, 5.381e-05, 5.381e-05, 5722.49357677], [1517178840000, 5.381e-05, 5.384e-05, 5.381e-05, 5.382e-05, 21466.0753327], [1517178900000, 5.382e-05, 5.383e-05, 5.382e-05, 5.382e-05, 1252.310287], [1517178960000, 5.383e-05, 5.383e-05, 5.381e-05, 5.381e-05, 11793.958002], [1517179020000, 5.381e-05, 5.382e-05, 5.375e-05, 5.375e-05, 31608.74472765], [1517179080000, 5.379e-05, 5.379e-05, 5.376e-05, 5.379e-05, 11491.41091587], [1517179140000, 5.375e-05, 5.381e-05, 5.375e-05, 5.379e-05, 9137.45116757], [1517179200000, 5.378e-05, 5.383e-05, 5.375e-05, 5.383e-05, 71646.94240996], [1517179260000, 5.383e-05, 5.403e-05, 5.354e-05, 5.376e-05, 139309.6609889], [1517179320000, 5.376e-05, 5.401e-05, 5.376e-05, 5.376e-05, 6199.27516375], [1517179380000, 5.38e-05, 5.403e-05, 5.376e-05, 5.394e-05, 9136.24194224], [1517179440000, 5.382e-05, 5.394e-05, 5.381e-05, 5.384e-05, 3040.55715324], [1517179500000, 5.385e-05, 5.392e-05, 5.385e-05, 5.387e-05, 5086.62442369], [1517179560000, 5.385e-05, 5.389e-05, 5.385e-05, 5.389e-05, 16993.10444735], [1517179620000, 5.389e-05, 5.394e-05, 5.387e-05, 5.394e-05, 40119.06979031], [1517179680000, 5.394e-05, 5.4e-05, 5.387e-05, 5.4e-05, 33702.26895772], [1517179740000, 5.4e-05, 5.402e-05, 5.4e-05, 5.401e-05, 10077.86398356], [1517179800000, 5.402e-05, 5.402e-05, 5.401e-05, 5.402e-05, 18991.09255386], [1517179860000, 5.402e-05, 5.407e-05, 5.402e-05, 5.407e-05, 43624.07882216], [1517179920000, 5.407e-05, 5.407e-05, 5.401e-05, 5.401e-05, 23624.88885494], [1517179980000, 5.407e-05, 5.411e-05, 5.401e-05, 5.401e-05, 41487.22507626], [1517180040000, 5.407e-05, 5.41e-05, 5.407e-05, 5.41e-05, 104.55612747], [1517180100000, 5.411e-05, 5.415e-05, 5.403e-05, 5.415e-05, 45242.10241657], [1517180160000, 5.415e-05, 5.418e-05, 5.415e-05, 5.416e-05, 29391.5308858], [1517180220000, 5.417e-05, 5.428e-05, 5.405e-05, 5.428e-05, 30779.22817867], [1517180280000, 5.426e-05, 5.427e-05, 5.415e-05, 5.415e-05, 6820.04243251], [1517180340000, 5.424e-05, 5.424e-05, 5.415e-05, 5.423e-05, 3904.7201365], [1517180400000, 5.416e-05, 5.424e-05, 5.415e-05, 5.415e-05, 18063.36265313], [1517180460000, 5.415e-05, 5.424e-05, 5.415e-05, 5.415e-05, 53008.06490077], [1517180520000, 5.424e-05, 5.424e-05, 5.415e-05, 5.415e-05, 12304.7276161], [1517180580000, 5.415e-05, 5.422e-05, 5.415e-05, 5.415e-05, 25711.58957018], [1517180640000, 5.415e-05, 5.42e-05, 5.406e-05, 5.42e-05, 5061.08436836], [1517180700000, 5.42e-05, 5.43e-05, 5.406e-05, 5.422e-05, 30892.1701398], [1517180760000, 5.421e-05, 5.422e-05, 5.408e-05, 5.421e-05, 24179.94801582], [1517180820000, 5.421e-05, 5.425e-05, 5.41e-05, 5.421e-05, 11265.12335551], [1517180880000, 5.422e-05, 5.424e-05, 5.422e-05, 5.422e-05, 21708.36446421], [1517180940000, 5.424e-05, 5.426e-05, 5.422e-05, 5.425e-05, 17288.92323326], [1517181000000, 5.422e-05, 5.425e-05, 5.422e-05, 5.424e-05, 14709.98887716], [1517181060000, 5.422e-05, 5.424e-05, 5.419e-05, 5.419e-05, 29293.05575692], [1517181120000, 5.411e-05, 5.411e-05, 5.41e-05, 5.41e-05, 5579.7276305], [1517181180000, 5.41e-05, 5.411e-05, 5.406e-05, 5.406e-05, 9581.79604445], [1517181240000, 5.407e-05, 5.41e-05, 5.407e-05, 5.407e-05, 5357.8749837], [1517181300000, 5.409e-05, 5.411e-05, 5.406e-05, 5.406e-05, 24094.26354907], [1517181360000, 5.407e-05, 5.407e-05, 5.406e-05, 5.407e-05, 10541.50462964], [1517181420000, 5.407e-05, 5.425e-05, 5.407e-05, 5.407e-05, 9621.58816188], [1517181480000, 5.407e-05, 5.421e-05, 5.407e-05, 5.407e-05, 25096.31937153], [1517181540000, 5.407e-05, 5.421e-05, 5.407e-05, 5.421e-05, 13895.68841392], [1517181600000, 5.42e-05, 5.421e-05, 5.409e-05, 5.41e-05, 13601.08231681], [1517181660000, 5.41e-05, 5.42e-05, 5.407e-05, 5.407e-05, 20833.23866462], [1517181720000, 5.419e-05, 5.419e-05, 5.408e-05, 5.41e-05, 3525.03077585], [1517181780000, 5.412e-05, 5.417e-05, 5.41e-05, 5.414e-05, 4776.23766198], [1517181840000, 5.41e-05, 5.416e-05, 5.408e-05, 5.414e-05, 33928.13740689], [1517181900000, 5.416e-05, 5.416e-05, 5.33e-05, 5.407e-05, 207945.2385676], [1517181960000, 5.41e-05, 5.412e-05, 5.41e-05, 5.412e-05, 17872.11310185], [1517182020000, 5.411e-05, 5.416e-05, 5.407e-05, 5.413e-05, 15126.71703111], [1517182080000, 5.408e-05, 5.416e-05, 5.407e-05, 5.407e-05, 17675.28325669], [1517182140000, 5.408e-05, 5.415e-05, 5.408e-05, 5.411e-05, 12673.06899637], [1517182200000, 5.415e-05, 5.415e-05, 5.413e-05, 5.415e-05, 5717.81091583], [1517182260000, 5.415e-05, 5.415e-05, 5.413e-05, 5.413e-05, 53251.81836473], [1517182320000, 5.414e-05, 5.415e-05, 5.413e-05, 5.413e-05, 26860.73571667], [1517182380000, 5.414e-05, 5.415e-05, 5.414e-05, 5.414e-05, 13244.56353484], [1517182440000, 5.415e-05, 5.415e-05, 5.414e-05, 5.414e-05, 11015.28939204], [1517182500000, 5.415e-05, 5.42e-05, 5.415e-05, 5.416e-05, 53453.12100132], [1517182560000, 5.416e-05, 5.42e-05, 5.416e-05, 5.418e-05, 9251.95937285], [1517182620000, 5.418e-05, 5.42e-05, 5.418e-05, 5.42e-05, 8951.18370674], [1517182680000, 5.42e-05, 5.421e-05, 5.416e-05, 5.421e-05, 43822.51974382], [1517182740000, 5.42e-05, 5.421e-05, 5.417e-05, 5.419e-05, 19140.91637568], [1517182800000, 5.419e-05, 5.424e-05, 5.418e-05, 5.422e-05, 16748.95465721], [1517182860000, 5.422e-05, 5.423e-05, 5.419e-05, 5.419e-05, 6969.93922432], [1517182920000, 5.421e-05, 5.424e-05, 5.419e-05, 5.421e-05, 1472.96803977], [1517182980000, 5.421e-05, 5.424e-05, 5.421e-05, 5.423e-05, 29225.91756363], [1517183040000, 5.423e-05, 5.424e-05, 5.42e-05, 5.422e-05, 16102.34836568], [1517183100000, 5.424e-05, 5.425e-05, 5.422e-05, 5.424e-05, 31994.72184239], [1517183160000, 5.424e-05, 5.425e-05, 5.423e-05, 5.424e-05, 14250.13412596], [1517183220000, 5.423e-05, 5.424e-05, 5.415e-05, 5.42e-05, 20143.13717314], [1517183280000, 5.415e-05, 5.419e-05, 5.415e-05, 5.415e-05, 1456.20067839], [1517183340000, 5.415e-05, 5.419e-05, 5.415e-05, 5.415e-05, 8607.65066999], [1517183400000, 5.416e-05, 5.416e-05, 5.414e-05, 5.415e-05, 13627.75021283], [1517183460000, 5.416e-05, 5.418e-05, 5.415e-05, 5.415e-05, 505.05747137], [1517183520000, 5.415e-05, 5.418e-05, 5.415e-05, 5.415e-05, 8557.0340571], [1517183580000, 5.418e-05, 5.418e-05, 5.415e-05, 5.416e-05, 22413.69735446], [1517183640000, 5.415e-05, 5.416e-05, 5.415e-05, 5.416e-05, 18338.08545824], [1517183700000, 5.416e-05, 5.42e-05, 5.416e-05, 5.42e-05, 18900.47788218], [1517183760000, 5.42e-05, 5.424e-05, 5.419e-05, 5.424e-05, 25381.52094076], [1517183820000, 5.424e-05, 5.425e-05, 5.424e-05, 5.424e-05, 3450.11631048], [1517183880000, 5.425e-05, 5.426e-05, 5.425e-05, 5.426e-05, 4168.35989233], [1517183940000, 5.426e-05, 5.426e-05, 5.422e-05, 5.423e-05, 17850.81249515], [1517184000000, 5.423e-05, 5.427e-05, 5.423e-05, 5.426e-05, 12950.16368877], [1517184060000, 5.425e-05, 5.427e-05, 5.425e-05, 5.425e-05, 11819.06036945], [1517184120000, 5.425e-05, 5.426e-05, 5.422e-05, 5.424e-05, 18101.60155643], [1517184180000, 5.424e-05, 5.424e-05, 5.415e-05, 5.415e-05, 26217.45380072], [1517184240000, 5.415e-05, 5.415e-05, 5.412e-05, 5.412e-05, 29837.1215292], [1517184300000, 5.412e-05, 5.413e-05, 5.41e-05, 5.41e-05, 7771.37671192], [1517184360000, 5.41e-05, 5.41e-05, 5.394e-05, 5.398e-05, 16473.29200571], [1517184420000, 5.4e-05, 5.4e-05, 5.39e-05, 5.398e-05, 7671.22963691], [1517184480000, 5.4e-05, 5.4e-05, 5.39e-05, 5.39e-05, 2601.02124024], [1517184540000, 5.39e-05, 5.39e-05, 5.337e-05, 5.377e-05, 30930.50631877], [1517184600000, 5.38e-05, 5.39e-05, 5.38e-05, 5.381e-05, 3281.90312189], [1517184660000, 5.381e-05, 5.381e-05, 5.376e-05, 5.377e-05, 21822.70835195], [1517184720000, 5.377e-05, 5.377e-05, 5.36e-05, 5.375e-05, 1522.18064062], [1517184780000, 5.375e-05, 5.375e-05, 5.361e-05, 5.375e-05, 15447.09798821], [1517184840000, 5.375e-05, 5.377e-05, 5.36e-05, 5.361e-05, 39963.48152647], [1517184900000, 5.377e-05, 5.381e-05, 5.361e-05, 5.381e-05, 7866.51858845], [1517184960000, 5.377e-05, 5.38e-05, 5.377e-05, 5.377e-05, 8837.10122863], [1517185020000, 5.376e-05, 5.377e-05, 5.376e-05, 5.376e-05, 4254.37440564], [1517185080000, 5.377e-05, 5.377e-05, 5.366e-05, 5.376e-05, 14069.28647323], [1517185140000, 5.377e-05, 5.377e-05, 5.361e-05, 5.362e-05, 19949.58803363], [1517185200000, 5.363e-05, 5.363e-05, 5.359e-05, 5.361e-05, 11735.55381872], [1517185260000, 5.361e-05, 5.361e-05, 5.338e-05, 5.361e-05, 11165.41640127], [1517185320000, 5.352e-05, 5.361e-05, 5.342e-05, 5.361e-05, 11635.69247038], [1517185380000, 5.361e-05, 5.361e-05, 5.355e-05, 5.361e-05, 99454.62259345], [1517185440000, 5.361e-05, 5.361e-05, 5.36e-05, 5.361e-05, 11016.26331614], [1517185500000, 5.361e-05, 5.361e-05, 5.36e-05, 5.361e-05, 8499.38633079], [1517185560000, 5.36e-05, 5.361e-05, 5.36e-05, 5.36e-05, 19434.96527862], [1517185620000, 5.361e-05, 5.361e-05, 5.36e-05, 5.361e-05, 29767.36545145], [1517185680000, 5.361e-05, 5.361e-05, 5.356e-05, 5.36e-05, 28690.26896978], [1517185740000, 5.36e-05, 5.36e-05, 5.356e-05, 5.36e-05, 11182.55691729], [1517185800000, 5.36e-05, 5.361e-05, 5.36e-05, 5.36e-05, 57163.57375068], [1517185860000, 5.361e-05, 5.361e-05, 5.357e-05, 5.361e-05, 28314.42338939], [1517185920000, 5.361e-05, 5.376e-05, 5.361e-05, 5.362e-05, 109077.5867032], [1517185980000, 5.364e-05, 5.376e-05, 5.363e-05, 5.376e-05, 13776.15251396], [1517186040000, 5.377e-05, 5.381e-05, 5.376e-05, 5.377e-05, 5825.39724398], [1517186100000, 5.377e-05, 5.377e-05, 5.376e-05, 5.377e-05, 12078.12507827], [1517186160000, 5.377e-05, 5.381e-05, 5.376e-05, 5.376e-05, 63627.0191118], [1517186220000, 5.367e-05, 5.381e-05, 5.367e-05, 5.368e-05, 5417.42215989], [1517186280000, 5.368e-05, 5.381e-05, 5.368e-05, 5.381e-05, 5581.10026213], [1517186340000, 5.369e-05, 5.383e-05, 5.369e-05, 5.383e-05, 27673.24835051], [1517186400000, 5.383e-05, 5.383e-05, 5.381e-05, 5.381e-05, 3272.229549], [1517186460000, 5.381e-05, 5.383e-05, 5.381e-05, 5.381e-05, 1984.18470519], [1517186520000, 5.381e-05, 5.383e-05, 5.37e-05, 5.37e-05, 6143.24380681], [1517186580000, 5.376e-05, 5.376e-05, 5.37e-05, 5.371e-05, 2204.46179305], [1517186640000, 5.371e-05, 5.381e-05, 5.371e-05, 5.371e-05, 4184.85916546], [1517186700000, 5.371e-05, 5.372e-05, 5.37e-05, 5.371e-05, 9263.67266805], [1517186760000, 5.371e-05, 5.383e-05, 5.371e-05, 5.371e-05, 17477.0260649], [1517186820000, 5.371e-05, 5.383e-05, 5.371e-05, 5.383e-05, 1360.62171984], [1517186880000, 5.372e-05, 5.383e-05, 5.371e-05, 5.383e-05, 67387.56193868], [1517186940000, 5.371e-05, 5.383e-05, 5.371e-05, 5.382e-05, 35709.24392627], [1517187000000, 5.382e-05, 5.382e-05, 5.371e-05, 5.382e-05, 2129.11709538], [1517187060000, 5.371e-05, 5.382e-05, 5.371e-05, 5.381e-05, 7065.36457344], [1517187120000, 5.372e-05, 5.38e-05, 5.371e-05, 5.373e-05, 7770.73547762], [1517187180000, 5.373e-05, 5.382e-05, 5.373e-05, 5.375e-05, 19982.16041994], [1517187240000, 5.373e-05, 5.38e-05, 5.373e-05, 5.375e-05, 19755.04846433], [1517187300000, 5.375e-05, 5.375e-05, 5.373e-05, 5.373e-05, 2415.17386206], [1517187360000, 5.373e-05, 5.38e-05, 5.37e-05, 5.37e-05, 53533.00471284], [1517187420000, 5.37e-05, 5.373e-05, 5.37e-05, 5.37e-05, 1783.51034174], [1517187480000, 5.373e-05, 5.378e-05, 5.37e-05, 5.37e-05, 24042.85603888], [1517187540000, 5.37e-05, 5.37e-05, 5.361e-05, 5.362e-05, 37555.34683821], [1517187600000, 5.362e-05, 5.362e-05, 5.361e-05, 5.361e-05, 3404.24902794], [1517187660000, 5.361e-05, 5.364e-05, 5.361e-05, 5.363e-05, 2153.51408748], [1517187720000, 5.363e-05, 5.367e-05, 5.361e-05, 5.367e-05, 6955.33503846], [1517187780000, 5.367e-05, 5.37e-05, 5.367e-05, 5.367e-05, 23171.48785454], [1517187840000, 5.368e-05, 5.37e-05, 5.368e-05, 5.37e-05, 5261.36671518], [1517187900000, 5.37e-05, 5.37e-05, 5.367e-05, 5.37e-05, 3932.13759603], [1517187960000, 5.37e-05, 5.37e-05, 5.367e-05, 5.37e-05, 8714.30452007], [1517188020000, 5.367e-05, 5.37e-05, 5.367e-05, 5.367e-05, 5729.6939534], [1517188080000, 5.367e-05, 5.37e-05, 5.356e-05, 5.356e-05, 16041.29362804], [1517188140000, 5.355e-05, 5.355e-05, 5.33e-05, 5.33e-05, 29987.50276485], [1517188200000, 5.33e-05, 5.352e-05, 5.33e-05, 5.34e-05, 1015.12604508], [1517188260000, 5.351e-05, 5.351e-05, 5.345e-05, 5.345e-05, 3071.71599599], [1517188320000, 5.345e-05, 5.35e-05, 5.345e-05, 5.35e-05, 4193.27900585], [1517188380000, 5.35e-05, 5.35e-05, 5.35e-05, 5.35e-05, 5076.2544107], [1517188440000, 5.35e-05, 5.35e-05, 5.346e-05, 5.35e-05, 824.50250103], [1517188500000, 5.35e-05, 5.35e-05, 5.35e-05, 5.35e-05, 17114.81031954], [1517188560000, 5.349e-05, 5.35e-05, 5.332e-05, 5.332e-05, 24830.75820675], [1517188620000, 5.35e-05, 5.35e-05, 5.346e-05, 5.347e-05, 15381.54265367], [1517188680000, 5.347e-05, 5.376e-05, 5.347e-05, 5.376e-05, 37569.14632463], [1517188740000, 5.376e-05, 5.376e-05, 5.355e-05, 5.375e-05, 5436.4494609], [1517188800000, 5.374e-05, 5.375e-05, 5.355e-05, 5.357e-05, 5497.41619295], [1517188860000, 5.357e-05, 5.374e-05, 5.355e-05, 5.356e-05, 3515.35454665], [1517188920000, 5.356e-05, 5.357e-05, 5.356e-05, 5.357e-05, 942.71316773], [1517188980000, 5.357e-05, 5.371e-05, 5.356e-05, 5.356e-05, 19322.5373908], [1517189040000, 5.356e-05, 5.37e-05, 5.356e-05, 5.356e-05, 26012.97407809], [1517189100000, 5.356e-05, 5.371e-05, 5.326e-05, 5.326e-05, 39276.58054527], [1517189160000, 5.327e-05, 5.354e-05, 5.327e-05, 5.354e-05, 10666.66004569], [1517189220000, 5.348e-05, 5.354e-05, 5.333e-05, 5.354e-05, 75497.4933171], [1517189280000, 5.354e-05, 5.377e-05, 5.333e-05, 5.353e-05, 48702.29243845], [1517189340000, 5.354e-05, 5.371e-05, 5.354e-05, 5.36e-05, 12906.29715893], [1517189400000, 5.36e-05, 5.366e-05, 5.355e-05, 5.355e-05, 76057.67913117], [1517189460000, 5.36e-05, 5.366e-05, 5.326e-05, 5.366e-05, 78517.0161414], [1517189520000, 5.335e-05, 5.341e-05, 5.335e-05, 5.34e-05, 49461.65058241], [1517189580000, 5.364e-05, 5.364e-05, 5.342e-05, 5.364e-05, 6399.83225275], [1517189640000, 5.364e-05, 5.364e-05, 5.35e-05, 5.35e-05, 4016.23100832], [1517189700000, 5.35e-05, 5.351e-05, 5.35e-05, 5.351e-05, 6708.98742684], [1517189760000, 5.351e-05, 5.364e-05, 5.341e-05, 5.35e-05, 101030.84028281], [1517189820000, 5.345e-05, 5.363e-05, 5.306e-05, 5.326e-05, 181972.59483686], [1517189880000, 5.328e-05, 5.35e-05, 5.326e-05, 5.333e-05, 47328.2034688], [1517189940000, 5.331e-05, 5.344e-05, 5.305e-05, 5.326e-05, 80340.85781898], [1517190000000, 5.317e-05, 5.331e-05, 5.315e-05, 5.315e-05, 58743.95640427], [1517190060000, 5.328e-05, 5.331e-05, 5.3e-05, 5.331e-05, 247657.00722804], [1517190120000, 5.302e-05, 5.343e-05, 5.3e-05, 5.325e-05, 407313.70490605], [1517190180000, 5.325e-05, 5.344e-05, 5.307e-05, 5.307e-05, 218053.59296895], [1517190240000, 5.307e-05, 5.332e-05, 5.307e-05, 5.308e-05, 129353.58286511], [1517190300000, 5.311e-05, 5.332e-05, 5.308e-05, 5.31e-05, 46717.02708107], [1517190360000, 5.311e-05, 5.33e-05, 5.31e-05, 5.313e-05, 32546.91073003], [1517190420000, 5.313e-05, 5.33e-05, 5.311e-05, 5.317e-05, 46087.30536344], [1517190480000, 5.317e-05, 5.33e-05, 5.308e-05, 5.312e-05, 27483.58929266], [1517190540000, 5.312e-05, 5.312e-05, 5.307e-05, 5.311e-05, 6029.64407801], [1517190600000, 5.329e-05, 5.33e-05, 5.314e-05, 5.314e-05, 15227.86274256], [1517190660000, 5.33e-05, 5.33e-05, 5.314e-05, 5.314e-05, 2774.04666119], [1517190720000, 5.314e-05, 5.33e-05, 5.314e-05, 5.33e-05, 1455.40761942], [1517190780000, 5.33e-05, 5.33e-05, 5.329e-05, 5.33e-05, 2069.41481105], [1517190840000, 5.331e-05, 5.332e-05, 5.33e-05, 5.332e-05, 44042.1213047], [1517190900000, 5.332e-05, 5.346e-05, 5.332e-05, 5.346e-05, 35055.98098742], [1517190960000, 5.346e-05, 5.348e-05, 5.346e-05, 5.346e-05, 6275.11191157], [1517191020000, 5.347e-05, 5.348e-05, 5.332e-05, 5.333e-05, 17501.28914916], [1517191080000, 5.333e-05, 5.348e-05, 5.333e-05, 5.335e-05, 464.57864409], [1517191140000, 5.344e-05, 5.348e-05, 5.336e-05, 5.337e-05, 9145.08809764], [1517191200000, 5.348e-05, 5.348e-05, 5.336e-05, 5.336e-05, 6626.71825333], [1517191260000, 5.335e-05, 5.338e-05, 5.335e-05, 5.335e-05, 1125.34710315], [1517191320000, 5.338e-05, 5.338e-05, 5.334e-05, 5.334e-05, 12042.20701573], [1517191380000, 5.334e-05, 5.338e-05, 5.332e-05, 5.332e-05, 50017.78988184], [1517191440000, 5.332e-05, 5.334e-05, 5.332e-05, 5.332e-05, 9856.16248335], [1517191500000, 5.331e-05, 5.337e-05, 5.331e-05, 5.332e-05, 15489.30406809], [1517191560000, 5.331e-05, 5.337e-05, 5.33e-05, 5.337e-05, 12460.47683132], [1517191620000, 5.33e-05, 5.337e-05, 5.315e-05, 5.337e-05, 21792.93331109], [1517191680000, 5.325e-05, 5.325e-05, 5.308e-05, 5.308e-05, 21415.0491606], [1517191740000, 5.309e-05, 5.33e-05, 5.308e-05, 5.33e-05, 23059.97285409], [1517191800000, 5.33e-05, 5.335e-05, 5.316e-05, 5.335e-05, 6424.9721117], [1517191860000, 5.335e-05, 5.335e-05, 5.331e-05, 5.335e-05, 10778.8641431], [1517191920000, 5.332e-05, 5.337e-05, 5.332e-05, 5.337e-05, 72040.27536056], [1517191980000, 5.337e-05, 5.337e-05, 5.332e-05, 5.332e-05, 43870.94523109], [1517192040000, 5.332e-05, 5.338e-05, 5.33e-05, 5.332e-05, 49478.94812576], [1517192100000, 5.337e-05, 5.35e-05, 5.332e-05, 5.337e-05, 250965.59958015], [1517192160000, 5.337e-05, 5.338e-05, 5.332e-05, 5.337e-05, 21424.40600029], [1517192220000, 5.334e-05, 5.349e-05, 5.333e-05, 5.333e-05, 5019.3919807], [1517192280000, 5.333e-05, 5.349e-05, 5.333e-05, 5.337e-05, 4747.73452661], [1517192340000, 5.348e-05, 5.349e-05, 5.337e-05, 5.349e-05, 10071.66464958], [1517192400000, 5.349e-05, 5.349e-05, 5.337e-05, 5.349e-05, 599.42483695], [1517192460000, 5.338e-05, 5.349e-05, 5.338e-05, 5.349e-05, 7203.56882144], [1517192520000, 5.339e-05, 5.348e-05, 5.339e-05, 5.339e-05, 2902.20637874], [1517192580000, 5.347e-05, 5.347e-05, 5.34e-05, 5.347e-05, 816.0632505], [1517192640000, 5.347e-05, 5.347e-05, 5.342e-05, 5.342e-05, 27603.18389114], [1517192700000, 5.341e-05, 5.349e-05, 5.341e-05, 5.349e-05, 40967.00436771], [1517192760000, 5.348e-05, 5.349e-05, 5.341e-05, 5.341e-05, 21145.85359303], [1517192820000, 5.342e-05, 5.359e-05, 5.341e-05, 5.35e-05, 40775.02048801], [1517192880000, 5.35e-05, 5.365e-05, 5.342e-05, 5.35e-05, 30828.39896104], [1517192940000, 5.352e-05, 5.364e-05, 5.35e-05, 5.35e-05, 12750.49227264], [1517193000000, 5.363e-05, 5.363e-05, 5.35e-05, 5.35e-05, 29237.48718166], [1517193060000, 5.35e-05, 5.35e-05, 5.348e-05, 5.348e-05, 19167.08812757], [1517193120000, 5.349e-05, 5.35e-05, 5.342e-05, 5.348e-05, 63575.96083687], [1517193180000, 5.348e-05, 5.349e-05, 5.332e-05, 5.335e-05, 208941.30064481], [1517193240000, 5.335e-05, 5.341e-05, 5.307e-05, 5.335e-05, 41490.11682947], [1517193300000, 5.32e-05, 5.335e-05, 5.32e-05, 5.323e-05, 66306.4212797], [1517193360000, 5.326e-05, 5.335e-05, 5.326e-05, 5.328e-05, 60268.88598723], [1517193420000, 5.34e-05, 5.363e-05, 5.34e-05, 5.363e-05, 5947.83749997], [1517193480000, 5.343e-05, 5.359e-05, 5.337e-05, 5.341e-05, 40106.22008902], [1517193540000, 5.341e-05, 5.341e-05, 5.337e-05, 5.337e-05, 1841.80905428], [1517193600000, 5.337e-05, 5.34e-05, 5.335e-05, 5.335e-05, 7753.19701915], [1517193660000, 5.326e-05, 5.335e-05, 5.326e-05, 5.335e-05, 2669.08289903], [1517193720000, 5.337e-05, 5.363e-05, 5.337e-05, 5.337e-05, 1599.97166148], [1517193780000, 5.337e-05, 5.361e-05, 5.337e-05, 5.361e-05, 29392.98329936], [1517193840000, 5.34e-05, 5.36e-05, 5.34e-05, 5.36e-05, 9549.8902623], [1517193900000, 5.36e-05, 5.361e-05, 5.344e-05, 5.36e-05, 8465.7817616], [1517193960000, 5.359e-05, 5.36e-05, 5.34e-05, 5.34e-05, 3826.28822622], [1517194020000, 5.34e-05, 5.36e-05, 5.34e-05, 5.34e-05, 5414.3839423], [1517194080000, 5.34e-05, 5.36e-05, 5.34e-05, 5.36e-05, 1057.01941893], [1517194140000, 5.359e-05, 5.359e-05, 5.34e-05, 5.34e-05, 16123.84900425], [1517194200000, 5.358e-05, 5.358e-05, 5.357e-05, 5.357e-05, 204.68715772], [1517194260000, 5.356e-05, 5.357e-05, 5.356e-05, 5.356e-05, 4611.15202978], [1517194320000, 5.356e-05, 5.357e-05, 5.34e-05, 5.357e-05, 27335.04018805], [1517194380000, 5.357e-05, 5.359e-05, 5.34e-05, 5.359e-05, 29973.31071814], [1517194440000, 5.34e-05, 5.359e-05, 5.34e-05, 5.35e-05, 2166.56481657], [1517194500000, 5.35e-05, 5.35e-05, 5.34e-05, 5.341e-05, 34149.43241414], [1517194560000, 5.349e-05, 5.35e-05, 5.349e-05, 5.349e-05, 1448.9184222], [1517194620000, 5.341e-05, 5.349e-05, 5.341e-05, 5.341e-05, 4721.48324723], [1517194680000, 5.341e-05, 5.348e-05, 5.338e-05, 5.345e-05, 12946.63683503], [1517194740000, 5.345e-05, 5.345e-05, 5.345e-05, 5.345e-05, 675.45087858], [1517194800000, 5.344e-05, 5.345e-05, 5.338e-05, 5.339e-05, 13146.50247208], [1517194860000, 5.338e-05, 5.345e-05, 5.338e-05, 5.339e-05, 3414.96077593], [1517194920000, 5.339e-05, 5.339e-05, 5.336e-05, 5.339e-05, 33697.769403], [1517194980000, 5.339e-05, 5.345e-05, 5.339e-05, 5.339e-05, 12054.10783991], [1517195040000, 5.339e-05, 5.339e-05, 5.301e-05, 5.339e-05, 75348.66223862], [1517195100000, 5.339e-05, 5.345e-05, 5.339e-05, 5.339e-05, 13123.0969659], [1517195160000, 5.339e-05, 5.339e-05, 5.337e-05, 5.339e-05, 33838.53760477], [1517195220000, 5.326e-05, 5.339e-05, 5.326e-05, 5.336e-05, 13614.21750651], [1517195280000, 5.339e-05, 5.339e-05, 5.335e-05, 5.339e-05, 3266.07232016], [1517195340000, 5.339e-05, 5.339e-05, 5.329e-05, 5.339e-05, 61827.96091972], [1517195400000, 5.339e-05, 5.339e-05, 5.329e-05, 5.339e-05, 9670.51122496], [1517195460000, 5.339e-05, 5.345e-05, 5.326e-05, 5.329e-05, 8110.79328941], [1517195520000, 5.339e-05, 5.345e-05, 5.327e-05, 5.327e-05, 31215.59862366], [1517195580000, 5.326e-05, 5.345e-05, 5.32e-05, 5.327e-05, 38542.29251239], [1517195640000, 5.345e-05, 5.345e-05, 5.326e-05, 5.345e-05, 47263.16243512], [1517195700000, 5.335e-05, 5.35e-05, 5.335e-05, 5.35e-05, 9666.88437732], [1517195760000, 5.349e-05, 5.35e-05, 5.349e-05, 5.349e-05, 24900.726576], [1517195820000, 5.348e-05, 5.348e-05, 5.327e-05, 5.327e-05, 20742.6991972], [1517195880000, 5.346e-05, 5.346e-05, 5.346e-05, 5.346e-05, 536.075038], [1517195940000, 5.346e-05, 5.347e-05, 5.327e-05, 5.347e-05, 35075.12973393], [1517196000000, 5.346e-05, 5.347e-05, 5.331e-05, 5.346e-05, 83059.18856537], [1517196060000, 5.346e-05, 5.346e-05, 5.332e-05, 5.336e-05, 3059.17023041], [1517196120000, 5.346e-05, 5.346e-05, 5.336e-05, 5.346e-05, 31016.84244857], [1517196180000, 5.339e-05, 5.346e-05, 5.339e-05, 5.339e-05, 27193.3192902], [1517196240000, 5.34e-05, 5.346e-05, 5.339e-05, 5.34e-05, 1904.63917881], [1517196300000, 5.346e-05, 5.346e-05, 5.338e-05, 5.339e-05, 31688.71629986], [1517196360000, 5.339e-05, 5.339e-05, 5.338e-05, 5.338e-05, 2398.94336424], [1517196420000, 5.339e-05, 5.339e-05, 5.337e-05, 5.337e-05, 28170.80556087], [1517196480000, 5.338e-05, 5.339e-05, 5.329e-05, 5.339e-05, 19425.47749215], [1517196540000, 5.337e-05, 5.346e-05, 5.337e-05, 5.34e-05, 12127.15071354], [1517196600000, 5.34e-05, 5.346e-05, 5.34e-05, 5.343e-05, 12158.17721219], [1517196660000, 5.346e-05, 5.346e-05, 5.342e-05, 5.346e-05, 65868.53866242], [1517196720000, 5.346e-05, 5.346e-05, 5.341e-05, 5.343e-05, 51893.71019816], [1517196780000, 5.343e-05, 5.347e-05, 5.341e-05, 5.341e-05, 37394.59083398], [1517196840000, 5.34e-05, 5.341e-05, 5.339e-05, 5.341e-05, 8562.28850668], [1517196900000, 5.346e-05, 5.346e-05, 5.342e-05, 5.346e-05, 3350.52082071], [1517196960000, 5.346e-05, 5.346e-05, 5.342e-05, 5.346e-05, 4363.19050954], [1517197020000, 5.343e-05, 5.346e-05, 5.342e-05, 5.343e-05, 5903.11418593], [1517197080000, 5.343e-05, 5.343e-05, 5.342e-05, 5.342e-05, 23013.19350149], [1517197140000, 5.343e-05, 5.347e-05, 5.343e-05, 5.347e-05, 18592.10821508], [1517197200000, 5.347e-05, 5.347e-05, 5.346e-05, 5.346e-05, 17138.11673818], [1517197260000, 5.346e-05, 5.346e-05, 5.343e-05, 5.343e-05, 2995.00972763], [1517197320000, 5.343e-05, 5.346e-05, 5.342e-05, 5.342e-05, 8253.62325219], [1517197380000, 5.343e-05, 5.346e-05, 5.343e-05, 5.343e-05, 4604.48910633], [1517197440000, 5.344e-05, 5.345e-05, 5.342e-05, 5.342e-05, 16862.22435739], [1517197500000, 5.342e-05, 5.343e-05, 5.342e-05, 5.343e-05, 815.85636838], [1517197560000, 5.343e-05, 5.343e-05, 5.342e-05, 5.342e-05, 35456.47957303], [1517197620000, 5.342e-05, 5.343e-05, 5.342e-05, 5.343e-05, 830.78144783], [1517197680000, 5.342e-05, 5.343e-05, 5.341e-05, 5.341e-05, 14492.85131858], [1517197740000, 5.343e-05, 5.343e-05, 5.343e-05, 5.343e-05, 299.63955572], [1517197800000, 5.343e-05, 5.345e-05, 5.341e-05, 5.341e-05, 9581.09664429], [1517197860000, 5.341e-05, 5.341e-05, 5.341e-05, 5.341e-05, 3925.74781352], [1517197920000, 5.341e-05, 5.345e-05, 5.33e-05, 5.33e-05, 60402.01424702], [1517197980000, 5.339e-05, 5.339e-05, 5.331e-05, 5.334e-05, 2485.11722313], [1517198040000, 5.334e-05, 5.339e-05, 5.334e-05, 5.334e-05, 12095.35072871], [1517198100000, 5.334e-05, 5.339e-05, 5.333e-05, 5.339e-05, 21669.68370584], [1517198160000, 5.335e-05, 5.335e-05, 5.305e-05, 5.33e-05, 67799.02663039], [1517198220000, 5.331e-05, 5.339e-05, 5.33e-05, 5.338e-05, 17353.5708919], [1517198280000, 5.339e-05, 5.339e-05, 5.338e-05, 5.339e-05, 4983.54379081], [1517198340000, 5.339e-05, 5.339e-05, 5.319e-05, 5.32e-05, 62761.91669427], [1517198400000, 5.328e-05, 5.338e-05, 5.328e-05, 5.336e-05, 11839.22702785], [1517198460000, 5.336e-05, 5.336e-05, 5.328e-05, 5.328e-05, 56589.25631914], [1517198520000, 5.328e-05, 5.33e-05, 5.328e-05, 5.33e-05, 40577.15340915], [1517198580000, 5.329e-05, 5.329e-05, 5.324e-05, 5.327e-05, 15105.07970301], [1517198640000, 5.329e-05, 5.33e-05, 5.327e-05, 5.327e-05, 102457.46472589], [1517198700000, 5.327e-05, 5.33e-05, 5.324e-05, 5.329e-05, 173470.93520514], [1517198760000, 5.33e-05, 5.33e-05, 5.32e-05, 5.32e-05, 80478.25354685], [1517198820000, 5.325e-05, 5.33e-05, 5.325e-05, 5.33e-05, 30836.11692699], [1517198880000, 5.33e-05, 5.33e-05, 5.328e-05, 5.328e-05, 19229.80379018], [1517198940000, 5.329e-05, 5.33e-05, 5.328e-05, 5.329e-05, 66381.82917699], [1517199000000, 5.329e-05, 5.33e-05, 5.328e-05, 5.33e-05, 104829.80153343], [1517199060000, 5.33e-05, 5.33e-05, 5.32e-05, 5.32e-05, 58829.9804028], [1517199120000, 5.33e-05, 5.33e-05, 5.323e-05, 5.323e-05, 52897.46216752], [1517199180000, 5.329e-05, 5.329e-05, 5.324e-05, 5.329e-05, 11330.80157398], [1517199240000, 5.328e-05, 5.329e-05, 5.327e-05, 5.328e-05, 39002.32693372], [1517199300000, 5.328e-05, 5.328e-05, 5.327e-05, 5.327e-05, 21845.05956594], [1517199360000, 5.327e-05, 5.33e-05, 5.325e-05, 5.327e-05, 158756.98623398], [1517199420000, 5.325e-05, 5.326e-05, 5.325e-05, 5.326e-05, 39332.4628768], [1517199480000, 5.326e-05, 5.326e-05, 5.325e-05, 5.325e-05, 212.05694669], [1517199540000, 5.326e-05, 5.326e-05, 5.324e-05, 5.324e-05, 61911.3271364], [1517199600000, 5.323e-05, 5.326e-05, 5.323e-05, 5.326e-05, 24497.95528495], [1517199660000, 5.326e-05, 5.326e-05, 5.325e-05, 5.326e-05, 61763.82716047], [1517199720000, 5.325e-05, 5.326e-05, 5.324e-05, 5.326e-05, 38391.99795648], [1517199780000, 5.326e-05, 5.327e-05, 5.325e-05, 5.327e-05, 96051.85929206], [1517199840000, 5.327e-05, 5.327e-05, 5.326e-05, 5.327e-05, 59430.07847424], [1517199900000, 5.327e-05, 5.327e-05, 5.322e-05, 5.322e-05, 98178.66745126], [1517199960000, 5.327e-05, 5.327e-05, 5.324e-05, 5.324e-05, 1140.96427231], [1517200020000, 5.324e-05, 5.324e-05, 5.307e-05, 5.324e-05, 10078.0740075], [1517200080000, 5.309e-05, 5.325e-05, 5.309e-05, 5.325e-05, 32495.64753333], [1517200140000, 5.325e-05, 5.327e-05, 5.325e-05, 5.327e-05, 52614.56065836], [1517200200000, 5.322e-05, 5.327e-05, 5.322e-05, 5.327e-05, 29280.22708812], [1517200260000, 5.325e-05, 5.327e-05, 5.322e-05, 5.326e-05, 61128.31497421], [1517200320000, 5.327e-05, 5.327e-05, 5.326e-05, 5.327e-05, 50026.10001976], [1517200380000, 5.327e-05, 5.327e-05, 5.326e-05, 5.327e-05, 33078.24424172], [1517200440000, 5.326e-05, 5.327e-05, 5.326e-05, 5.326e-05, 28754.2816037], [1517200500000, 5.327e-05, 5.327e-05, 5.326e-05, 5.326e-05, 56419.08508919], [1517200560000, 5.326e-05, 5.327e-05, 5.326e-05, 5.327e-05, 41614.00829907], [1517200620000, 5.326e-05, 5.326e-05, 5.326e-05, 5.326e-05, 2823.71607698], [1517200680000, 5.326e-05, 5.326e-05, 5.321e-05, 5.321e-05, 10454.35318023], [1517200740000, 5.323e-05, 5.326e-05, 5.323e-05, 5.326e-05, 7942.29249354], [1517200800000, 5.323e-05, 5.327e-05, 5.298e-05, 5.303e-05, 297781.17079982], [1517200860000, 5.327e-05, 5.327e-05, 5.327e-05, 5.327e-05, 11850.15835863], [1517200920000, 5.327e-05, 5.327e-05, 5.316e-05, 5.316e-05, 5027.17054665], [1517200980000, 5.327e-05, 5.327e-05, 5.303e-05, 5.327e-05, 80825.67604452], [1517201040000, 5.327e-05, 5.327e-05, 5.303e-05, 5.327e-05, 92547.64514882], [1517201100000, 5.327e-05, 5.327e-05, 5.306e-05, 5.308e-05, 8173.59152496], [1517201160000, 5.326e-05, 5.326e-05, 5.311e-05, 5.326e-05, 1837.65752234], [1517201220000, 5.326e-05, 5.326e-05, 5.326e-05, 5.326e-05, 629.74343872], [1517201280000, 5.325e-05, 5.325e-05, 5.316e-05, 5.32e-05, 1536.299082], [1517201340000, 5.325e-05, 5.327e-05, 5.32e-05, 5.32e-05, 15065.61398195], [1517201400000, 5.327e-05, 5.327e-05, 5.317e-05, 5.326e-05, 54082.03917719], [1517201460000, 5.327e-05, 5.327e-05, 5.318e-05, 5.326e-05, 38721.93552191], [1517201520000, 5.326e-05, 5.326e-05, 5.318e-05, 5.326e-05, 10236.15160517], [1517201580000, 5.318e-05, 5.325e-05, 5.307e-05, 5.325e-05, 39054.43114409], [1517201640000, 5.326e-05, 5.326e-05, 5.325e-05, 5.325e-05, 5687.24362197], [1517201700000, 5.325e-05, 5.326e-05, 5.325e-05, 5.325e-05, 4170.72883071], [1517201760000, 5.325e-05, 5.325e-05, 5.325e-05, 5.325e-05, 6794.65735461], [1517201820000, 5.325e-05, 5.325e-05, 5.325e-05, 5.325e-05, 5385.44190586], [1517201880000, 5.317e-05, 5.317e-05, 5.315e-05, 5.316e-05, 3856.15600643], [1517201940000, 5.316e-05, 5.317e-05, 5.316e-05, 5.317e-05, 18141.84260743], [1517202000000, 5.317e-05, 5.317e-05, 5.316e-05, 5.317e-05, 10737.75531026], [1517202060000, 5.317e-05, 5.325e-05, 5.317e-05, 5.325e-05, 10229.30313406], [1517202120000, 5.325e-05, 5.325e-05, 5.308e-05, 5.317e-05, 35666.80934903], [1517202180000, 5.324e-05, 5.325e-05, 5.317e-05, 5.324e-05, 6242.08798045], [1517202240000, 5.318e-05, 5.324e-05, 5.318e-05, 5.324e-05, 306.26975283], [1517202300000, 5.324e-05, 5.324e-05, 5.324e-05, 5.324e-05, 2369.31837625], [1517202360000, 5.324e-05, 5.324e-05, 5.323e-05, 5.324e-05, 2890.59913842], [1517202420000, 5.323e-05, 5.324e-05, 5.318e-05, 5.324e-05, 2170.74529121], [1517202480000, 5.324e-05, 5.324e-05, 5.323e-05, 5.324e-05, 4023.9504541], [1517202540000, 5.324e-05, 5.324e-05, 5.318e-05, 5.318e-05, 10441.89152955], [1517202600000, 5.318e-05, 5.318e-05, 5.317e-05, 5.318e-05, 1191.72938081], [1517202660000, 5.317e-05, 5.318e-05, 5.317e-05, 5.318e-05, 9506.33073668], [1517202720000, 5.318e-05, 5.318e-05, 5.318e-05, 5.318e-05, 3652.13857156], [1517202780000, 5.318e-05, 5.319e-05, 5.318e-05, 5.319e-05, 2787.81882293], [1517202840000, 5.319e-05, 5.324e-05, 5.318e-05, 5.324e-05, 8823.94550383], [1517202900000, 5.324e-05, 5.324e-05, 5.323e-05, 5.323e-05, 2799.66307151], [1517202960000, 5.323e-05, 5.323e-05, 5.322e-05, 5.323e-05, 3073.50154682], [1517203020000, 5.323e-05, 5.323e-05, 5.322e-05, 5.323e-05, 1199.36875849], [1517203080000, 5.322e-05, 5.322e-05, 5.32e-05, 5.322e-05, 6260.56545753], [1517203140000, 5.32e-05, 5.322e-05, 5.32e-05, 5.322e-05, 1013.48735345], [1517203200000, 5.322e-05, 5.322e-05, 5.322e-05, 5.322e-05, 5518.84652405], [1517203260000, 5.322e-05, 5.322e-05, 5.32e-05, 5.32e-05, 12016.48024206], [1517203320000, 5.321e-05, 5.323e-05, 5.321e-05, 5.322e-05, 28911.75789919], [1517203380000, 5.322e-05, 5.322e-05, 5.319e-05, 5.32e-05, 14879.23608012], [1517203440000, 5.32e-05, 5.322e-05, 5.319e-05, 5.322e-05, 30281.32705993], [1517203500000, 5.321e-05, 5.322e-05, 5.321e-05, 5.321e-05, 8283.48258204], [1517203560000, 5.322e-05, 5.322e-05, 5.32e-05, 5.32e-05, 2916.45134744], [1517203620000, 5.321e-05, 5.322e-05, 5.32e-05, 5.322e-05, 3697.70874528], [1517203680000, 5.322e-05, 5.322e-05, 5.319e-05, 5.32e-05, 7335.24919724], [1517203740000, 5.32e-05, 5.32e-05, 5.319e-05, 5.32e-05, 13156.84985966], [1517203800000, 5.32e-05, 5.32e-05, 5.319e-05, 5.32e-05, 12908.06994887], [1517203860000, 5.32e-05, 5.32e-05, 5.319e-05, 5.32e-05, 11199.60755916], [1517203920000, 5.32e-05, 5.32e-05, 5.319e-05, 5.319e-05, 5647.16903323], [1517203980000, 5.319e-05, 5.319e-05, 5.318e-05, 5.319e-05, 5794.03700299], [1517204040000, 5.319e-05, 5.319e-05, 5.31e-05, 5.31e-05, 20129.55495455], [1517204100000, 5.31e-05, 5.318e-05, 5.307e-05, 5.307e-05, 59988.68082983], [1517204160000, 5.308e-05, 5.308e-05, 5.305e-05, 5.306e-05, 63248.69404732], [1517204220000, 5.306e-05, 5.308e-05, 5.306e-05, 5.308e-05, 5552.85343694], [1517204280000, 5.308e-05, 5.308e-05, 5.307e-05, 5.308e-05, 11154.23960494], [1517204340000, 5.308e-05, 5.308e-05, 5.305e-05, 5.305e-05, 35477.39707548], [1517204400000, 5.305e-05, 5.305e-05, 5.304e-05, 5.305e-05, 137092.63367482], [1517204460000, 5.305e-05, 5.305e-05, 5.303e-05, 5.303e-05, 22243.62208389], [1517204520000, 5.305e-05, 5.305e-05, 5.303e-05, 5.303e-05, 25665.99955363], [1517204580000, 5.305e-05, 5.308e-05, 5.303e-05, 5.306e-05, 20784.35235199], [1517204640000, 5.307e-05, 5.322e-05, 5.307e-05, 5.307e-05, 23528.23002493], [1517204700000, 5.307e-05, 5.307e-05, 5.305e-05, 5.307e-05, 24700.66386405], [1517204760000, 5.307e-05, 5.307e-05, 5.3e-05, 5.307e-05, 59325.41473217], [1517204820000, 5.307e-05, 5.307e-05, 5.307e-05, 5.307e-05, 1813.73774136], [1517204880000, 5.307e-05, 5.307e-05, 5.305e-05, 5.305e-05, 14443.52923895], [1517204940000, 5.305e-05, 5.305e-05, 5.302e-05, 5.302e-05, 5378.69331013], [1517205000000, 5.302e-05, 5.302e-05, 5.3e-05, 5.3e-05, 48308.88209874], [1517205060000, 5.304e-05, 5.306e-05, 5.303e-05, 5.306e-05, 63617.89562293], [1517205120000, 5.303e-05, 5.306e-05, 5.303e-05, 5.305e-05, 22924.69624426], [1517205180000, 5.306e-05, 5.306e-05, 5.306e-05, 5.306e-05, 87374.56766002], [1517205240000, 5.306e-05, 5.306e-05, 5.305e-05, 5.305e-05, 3130.42795662], [1517205300000, 5.305e-05, 5.305e-05, 5.303e-05, 5.303e-05, 14126.36931127], [1517205360000, 5.302e-05, 5.305e-05, 5.302e-05, 5.304e-05, 21049.71321119], [1517205420000, 5.303e-05, 5.305e-05, 5.302e-05, 5.305e-05, 23146.29197636], [1517205480000, 5.305e-05, 5.306e-05, 5.302e-05, 5.306e-05, 63694.86760557], [1517205540000, 5.306e-05, 5.306e-05, 5.306e-05, 5.306e-05, 79940.56386646], [1517205600000, 5.306e-05, 5.307e-05, 5.304e-05, 5.304e-05, 37196.4319121], [1517205660000, 5.304e-05, 5.307e-05, 5.304e-05, 5.307e-05, 112518.74549292], [1517205720000, 5.307e-05, 5.317e-05, 5.307e-05, 5.317e-05, 27880.33978872], [1517205780000, 5.317e-05, 5.322e-05, 5.307e-05, 5.322e-05, 7945.59672449], [1517205840000, 5.322e-05, 5.322e-05, 5.307e-05, 5.307e-05, 19301.30966894], [1517205900000, 5.321e-05, 5.321e-05, 5.321e-05, 5.321e-05, 193.73042841], [1517205960000, 5.321e-05, 5.321e-05, 5.305e-05, 5.314e-05, 11507.28044603], [1517206020000, 5.313e-05, 5.32e-05, 5.309e-05, 5.32e-05, 9909.80184022], [1517206080000, 5.309e-05, 5.321e-05, 5.308e-05, 5.31e-05, 8309.66683282], [1517206140000, 5.319e-05, 5.322e-05, 5.315e-05, 5.315e-05, 62920.1848236], [1517206200000, 5.322e-05, 5.322e-05, 5.315e-05, 5.315e-05, 68220.61178771], [1517206260000, 5.324e-05, 5.325e-05, 5.324e-05, 5.324e-05, 73071.10294132], [1517206320000, 5.324e-05, 5.325e-05, 5.324e-05, 5.325e-05, 18242.70011266], [1517206380000, 5.325e-05, 5.325e-05, 5.324e-05, 5.324e-05, 8362.34553665], [1517206440000, 5.325e-05, 5.326e-05, 5.324e-05, 5.325e-05, 12782.29749464], [1517206500000, 5.327e-05, 5.327e-05, 5.324e-05, 5.327e-05, 15642.68594726], [1517206560000, 5.327e-05, 5.327e-05, 5.325e-05, 5.326e-05, 1247.35455749], [1517206620000, 5.325e-05, 5.329e-05, 5.325e-05, 5.329e-05, 39142.21987976], [1517206680000, 5.327e-05, 5.329e-05, 5.324e-05, 5.329e-05, 17751.15449188], [1517206740000, 5.329e-05, 5.329e-05, 5.325e-05, 5.328e-05, 8185.96860979], [1517206800000, 5.328e-05, 5.328e-05, 5.323e-05, 5.328e-05, 6298.5070709], [1517206860000, 5.323e-05, 5.329e-05, 5.323e-05, 5.323e-05, 4252.64336502], [1517206920000, 5.323e-05, 5.327e-05, 5.323e-05, 5.327e-05, 2951.0461454], [1517206980000, 5.329e-05, 5.329e-05, 5.323e-05, 5.325e-05, 11067.68355958], [1517207040000, 5.325e-05, 5.329e-05, 5.325e-05, 5.328e-05, 16413.30222036], [1517207100000, 5.329e-05, 5.33e-05, 5.328e-05, 5.329e-05, 29938.60367258], [1517207160000, 5.329e-05, 5.33e-05, 5.327e-05, 5.327e-05, 10808.09070331], [1517207220000, 5.326e-05, 5.327e-05, 5.326e-05, 5.326e-05, 4339.3500416], [1517207280000, 5.326e-05, 5.326e-05, 5.323e-05, 5.324e-05, 13872.31492326], [1517207340000, 5.324e-05, 5.326e-05, 5.323e-05, 5.326e-05, 5258.40987823], [1517207400000, 5.326e-05, 5.327e-05, 5.324e-05, 5.324e-05, 7797.00524148], [1517207460000, 5.324e-05, 5.324e-05, 5.323e-05, 5.324e-05, 5051.19954893], [1517207520000, 5.324e-05, 5.324e-05, 5.323e-05, 5.323e-05, 1725.599552], [1517207580000, 5.323e-05, 5.325e-05, 5.322e-05, 5.322e-05, 11849.5125836], [1517207640000, 5.324e-05, 5.33e-05, 5.323e-05, 5.323e-05, 16753.06368021], [1517207700000, 5.325e-05, 5.33e-05, 5.322e-05, 5.325e-05, 6959.75265577], [1517207760000, 5.33e-05, 5.33e-05, 5.326e-05, 5.326e-05, 395.17812435], [1517207820000, 5.326e-05, 5.329e-05, 5.325e-05, 5.325e-05, 17274.54640702], [1517207880000, 5.322e-05, 5.329e-05, 5.322e-05, 5.329e-05, 44628.3492035], [1517207940000, 5.329e-05, 5.33e-05, 5.32e-05, 5.33e-05, 21205.29808532], [1517208000000, 5.322e-05, 5.33e-05, 5.321e-05, 5.33e-05, 30494.12208232], [1517208060000, 5.33e-05, 5.33e-05, 5.32e-05, 5.32e-05, 20901.55599438], [1517208120000, 5.322e-05, 5.33e-05, 5.32e-05, 5.33e-05, 28063.26881058], [1517208180000, 5.329e-05, 5.33e-05, 5.32e-05, 5.33e-05, 30562.83555838], [1517208240000, 5.33e-05, 5.33e-05, 5.32e-05, 5.329e-05, 13194.6593964], [1517208300000, 5.32e-05, 5.327e-05, 5.316e-05, 5.322e-05, 8310.64202378], [1517208360000, 5.316e-05, 5.325e-05, 5.316e-05, 5.316e-05, 29432.95718548], [1517208420000, 5.316e-05, 5.327e-05, 5.316e-05, 5.316e-05, 7224.75942871], [1517208480000, 5.316e-05, 5.326e-05, 5.316e-05, 5.326e-05, 1697.00298124], [1517208540000, 5.324e-05, 5.33e-05, 5.312e-05, 5.324e-05, 695659.28846412], [1517208600000, 5.324e-05, 5.339e-05, 5.324e-05, 5.339e-05, 77793.18444607], [1517208660000, 5.33e-05, 5.339e-05, 5.324e-05, 5.324e-05, 8666.28763883], [1517208720000, 5.34e-05, 5.34e-05, 5.34e-05, 5.34e-05, 2640.64844764], [1517208780000, 5.34e-05, 5.34e-05, 5.339e-05, 5.339e-05, 1308.88489951], [1517208840000, 5.325e-05, 5.326e-05, 5.325e-05, 5.325e-05, 19129.4053052], [1517208900000, 5.326e-05, 5.339e-05, 5.325e-05, 5.326e-05, 6919.25504718], [1517208960000, 5.339e-05, 5.34e-05, 5.327e-05, 5.339e-05, 41825.51141589], [1517209020000, 5.333e-05, 5.34e-05, 5.329e-05, 5.34e-05, 2554.60615419], [1517209080000, 5.332e-05, 5.34e-05, 5.309e-05, 5.328e-05, 32281.54387116], [1517209140000, 5.326e-05, 5.328e-05, 5.315e-05, 5.315e-05, 48301.86411219], [1517209200000, 5.335e-05, 5.34e-05, 5.328e-05, 5.338e-05, 11135.30891826], [1517209260000, 5.338e-05, 5.34e-05, 5.338e-05, 5.338e-05, 24683.95573049], [1517209320000, 5.337e-05, 5.337e-05, 5.31e-05, 5.316e-05, 49904.71753756], [1517209380000, 5.335e-05, 5.345e-05, 5.301e-05, 5.324e-05, 58950.12556887], [1517209440000, 5.324e-05, 5.343e-05, 5.29e-05, 5.319e-05, 61144.46075221], [1517209500000, 5.323e-05, 5.336e-05, 5.323e-05, 5.325e-05, 15011.6634942], [1517209560000, 5.329e-05, 5.34e-05, 5.329e-05, 5.34e-05, 51790.06188986], [1517209620000, 5.34e-05, 5.34e-05, 5.333e-05, 5.334e-05, 12712.44480104], [1517209680000, 5.333e-05, 5.341e-05, 5.333e-05, 5.341e-05, 7573.23833759], [1517209740000, 5.34e-05, 5.345e-05, 5.321e-05, 5.337e-05, 128188.02746869], [1517209800000, 5.337e-05, 5.337e-05, 5.336e-05, 5.336e-05, 5219.96077293], [1517209860000, 5.336e-05, 5.337e-05, 5.322e-05, 5.335e-05, 1732.72263756], [1517209920000, 5.335e-05, 5.336e-05, 5.335e-05, 5.336e-05, 6270.75228855], [1517209980000, 5.336e-05, 5.34e-05, 5.312e-05, 5.313e-05, 39883.16467203], [1517210040000, 5.316e-05, 5.34e-05, 5.313e-05, 5.328e-05, 15642.77653119], [1517210100000, 5.314e-05, 5.335e-05, 5.314e-05, 5.316e-05, 49085.06618635], [1517210160000, 5.316e-05, 5.335e-05, 5.314e-05, 5.315e-05, 53916.19651238], [1517210220000, 5.316e-05, 5.33e-05, 5.316e-05, 5.318e-05, 17367.96255554], [1517210280000, 5.33e-05, 5.33e-05, 5.315e-05, 5.315e-05, 17626.52255005], [1517210340000, 5.316e-05, 5.316e-05, 5.315e-05, 5.316e-05, 8689.49946694], [1517210400000, 5.316e-05, 5.325e-05, 5.314e-05, 5.314e-05, 57337.19149383], [1517210460000, 5.314e-05, 5.316e-05, 5.314e-05, 5.316e-05, 56114.12244401], [1517210520000, 5.316e-05, 5.316e-05, 5.314e-05, 5.316e-05, 23925.11467356], [1517210580000, 5.316e-05, 5.316e-05, 5.301e-05, 5.301e-05, 46020.80805439], [1517210640000, 5.301e-05, 5.316e-05, 5.301e-05, 5.316e-05, 62563.84186933], [1517210700000, 5.316e-05, 5.316e-05, 5.302e-05, 5.315e-05, 63130.30604833], [1517210760000, 5.315e-05, 5.315e-05, 5.311e-05, 5.311e-05, 1761.39645574], [1517210820000, 5.312e-05, 5.315e-05, 5.311e-05, 5.315e-05, 42149.96118223], [1517210880000, 5.315e-05, 5.315e-05, 5.312e-05, 5.315e-05, 12403.32075704], [1517210940000, 5.315e-05, 5.315e-05, 5.314e-05, 5.314e-05, 14867.26117441], [1517211000000, 5.313e-05, 5.315e-05, 5.313e-05, 5.315e-05, 121594.92851289], [1517211060000, 5.315e-05, 5.316e-05, 5.314e-05, 5.316e-05, 182737.20070646], [1517211120000, 5.316e-05, 5.316e-05, 5.315e-05, 5.316e-05, 51136.31370479], [1517211180000, 5.318e-05, 5.334e-05, 5.318e-05, 5.319e-05, 58518.93374778], [1517211240000, 5.32e-05, 5.334e-05, 5.32e-05, 5.334e-05, 5510.61319062], [1517211300000, 5.332e-05, 5.332e-05, 5.332e-05, 5.332e-05, 200.0], [1517211360000, 5.334e-05, 5.334e-05, 5.33e-05, 5.332e-05, 6664.49081282], [1517211420000, 5.332e-05, 5.332e-05, 5.332e-05, 5.332e-05, 1189.75082475], [1517211480000, 5.332e-05, 5.332e-05, 5.33e-05, 5.33e-05, 2910.35734029], [1517211540000, 5.33e-05, 5.332e-05, 5.33e-05, 5.332e-05, 16580.22241217], [1517211600000, 5.332e-05, 5.333e-05, 5.33e-05, 5.333e-05, 1584.68035858], [1517211660000, 5.332e-05, 5.333e-05, 5.332e-05, 5.332e-05, 6213.533918], [1517211720000, 5.333e-05, 5.333e-05, 5.33e-05, 5.33e-05, 6357.72323555], [1517211780000, 5.33e-05, 5.332e-05, 5.32e-05, 5.32e-05, 32322.72384781], [1517211840000, 5.332e-05, 5.332e-05, 5.32e-05, 5.331e-05, 7324.09236565], [1517211900000, 5.331e-05, 5.34e-05, 5.323e-05, 5.334e-05, 105966.88303829], [1517211960000, 5.334e-05, 5.334e-05, 5.333e-05, 5.334e-05, 6306.70985127], [1517212020000, 5.334e-05, 5.346e-05, 5.333e-05, 5.333e-05, 34438.05266634], [1517212080000, 5.333e-05, 5.345e-05, 5.333e-05, 5.334e-05, 340.55366498], [1517212140000, 5.334e-05, 5.344e-05, 5.334e-05, 5.334e-05, 15944.69549785], [1517212200000, 5.334e-05, 5.342e-05, 5.333e-05, 5.336e-05, 9893.86800707], [1517212260000, 5.337e-05, 5.341e-05, 5.337e-05, 5.338e-05, 28769.14787375], [1517212320000, 5.342e-05, 5.342e-05, 5.338e-05, 5.339e-05, 33860.30710566], [1517212380000, 5.339e-05, 5.342e-05, 5.338e-05, 5.338e-05, 16749.79496517], [1517212440000, 5.338e-05, 5.34e-05, 5.338e-05, 5.338e-05, 5520.239497], [1517212500000, 5.34e-05, 5.34e-05, 5.338e-05, 5.338e-05, 13769.62966912], [1517212560000, 5.34e-05, 5.34e-05, 5.337e-05, 5.34e-05, 62447.8644293], [1517212620000, 5.34e-05, 5.34e-05, 5.329e-05, 5.329e-05, 38541.23257307], [1517212680000, 5.329e-05, 5.34e-05, 5.328e-05, 5.339e-05, 42604.60852017], [1517212740000, 5.329e-05, 5.341e-05, 5.325e-05, 5.341e-05, 87641.44079069], [1517212800000, 5.341e-05, 5.348e-05, 5.334e-05, 5.342e-05, 106088.35182225], [1517212860000, 5.342e-05, 5.36e-05, 5.321e-05, 5.337e-05, 159562.73387218], [1517212920000, 5.337e-05, 5.347e-05, 5.337e-05, 5.339e-05, 41004.21058091], [1517212980000, 5.341e-05, 5.348e-05, 5.341e-05, 5.348e-05, 20497.48675016], [1517213040000, 5.348e-05, 5.36e-05, 5.341e-05, 5.36e-05, 112428.37376611], [1517213100000, 5.36e-05, 5.375e-05, 5.33e-05, 5.36e-05, 511131.24754516], [1517213160000, 5.36e-05, 5.38e-05, 5.36e-05, 5.372e-05, 103899.20549054], [1517213220000, 5.372e-05, 5.381e-05, 5.372e-05, 5.372e-05, 26250.78240615], [1517213280000, 5.372e-05, 5.372e-05, 5.36e-05, 5.372e-05, 35606.03709235], [1517213340000, 5.373e-05, 5.38e-05, 5.358e-05, 5.372e-05, 143207.19611273], [1517213400000, 5.36e-05, 5.372e-05, 5.358e-05, 5.359e-05, 17643.93053071], [1517213460000, 5.369e-05, 5.369e-05, 5.359e-05, 5.36e-05, 4808.31567709], [1517213520000, 5.369e-05, 5.372e-05, 5.369e-05, 5.372e-05, 17033.39730242], [1517213580000, 5.372e-05, 5.38e-05, 5.36e-05, 5.361e-05, 26332.81134082], [1517213640000, 5.361e-05, 5.38e-05, 5.361e-05, 5.361e-05, 17366.02339279], [1517213700000, 5.361e-05, 5.38e-05, 5.361e-05, 5.361e-05, 3369.70053983], [1517213760000, 5.369e-05, 5.37e-05, 5.361e-05, 5.361e-05, 2078.4440583], [1517213820000, 5.361e-05, 5.381e-05, 5.361e-05, 5.361e-05, 24794.04744507], [1517213880000, 5.361e-05, 5.364e-05, 5.361e-05, 5.364e-05, 167.09767817], [1517213940000, 5.365e-05, 5.38e-05, 5.362e-05, 5.363e-05, 29102.60973816], [1517214000000, 5.363e-05, 5.379e-05, 5.363e-05, 5.364e-05, 24347.28244307], [1517214060000, 5.364e-05, 5.376e-05, 5.364e-05, 5.364e-05, 10447.72656894], [1517214120000, 5.363e-05, 5.376e-05, 5.362e-05, 5.363e-05, 1250.7542904], [1517214180000, 5.363e-05, 5.364e-05, 5.363e-05, 5.363e-05, 3255.2331908], [1517214240000, 5.363e-05, 5.374e-05, 5.36e-05, 5.36e-05, 21223.50456784], [1517214300000, 5.36e-05, 5.372e-05, 5.36e-05, 5.36e-05, 646.27084124], [1517214360000, 5.36e-05, 5.36e-05, 5.356e-05, 5.356e-05, 34924.63899317], [1517214420000, 5.357e-05, 5.357e-05, 5.355e-05, 5.355e-05, 16425.21291155], [1517214480000, 5.355e-05, 5.355e-05, 5.355e-05, 5.355e-05, 6661.03746902], [1517214540000, 5.355e-05, 5.356e-05, 5.355e-05, 5.356e-05, 4882.28396112], [1517214600000, 5.356e-05, 5.356e-05, 5.35e-05, 5.35e-05, 17623.20457549], [1517214660000, 5.355e-05, 5.355e-05, 5.339e-05, 5.355e-05, 51112.31815527], [1517214720000, 5.347e-05, 5.354e-05, 5.347e-05, 5.354e-05, 183.39218581], [1517214780000, 5.353e-05, 5.353e-05, 5.349e-05, 5.353e-05, 1312.02510595], [1517214840000, 5.352e-05, 5.352e-05, 5.333e-05, 5.339e-05, 2380.8385126], [1517214900000, 5.339e-05, 5.339e-05, 5.333e-05, 5.339e-05, 5631.94301608], [1517214960000, 5.339e-05, 5.354e-05, 5.339e-05, 5.354e-05, 39156.10909324], [1517215020000, 5.354e-05, 5.355e-05, 5.339e-05, 5.355e-05, 41741.69177736], [1517215080000, 5.355e-05, 5.355e-05, 5.339e-05, 5.343e-05, 6902.56645647], [1517215140000, 5.339e-05, 5.343e-05, 5.339e-05, 5.339e-05, 3189.28177366], [1517215200000, 5.343e-05, 5.355e-05, 5.343e-05, 5.355e-05, 5493.20809814], [1517215260000, 5.354e-05, 5.354e-05, 5.343e-05, 5.349e-05, 2843.48404877], [1517215320000, 5.348e-05, 5.354e-05, 5.341e-05, 5.343e-05, 8439.27742266], [1517215380000, 5.343e-05, 5.344e-05, 5.339e-05, 5.34e-05, 10831.49175512], [1517215440000, 5.339e-05, 5.34e-05, 5.334e-05, 5.339e-05, 30066.30500679], [1517215500000, 5.339e-05, 5.339e-05, 5.339e-05, 5.339e-05, 10642.42229355], [1517215560000, 5.339e-05, 5.34e-05, 5.339e-05, 5.34e-05, 10792.35580613], [1517215620000, 5.34e-05, 5.34e-05, 5.339e-05, 5.34e-05, 31093.86339813], [1517215680000, 5.339e-05, 5.34e-05, 5.339e-05, 5.339e-05, 5102.30653895], [1517215740000, 5.339e-05, 5.34e-05, 5.339e-05, 5.34e-05, 1469.35471389], [1517215800000, 5.34e-05, 5.34e-05, 5.339e-05, 5.34e-05, 2803.56538229], [1517215860000, 5.339e-05, 5.34e-05, 5.339e-05, 5.34e-05, 4600.57909193], [1517215920000, 5.34e-05, 5.34e-05, 5.335e-05, 5.335e-05, 10543.73367727], [1517215980000, 5.335e-05, 5.335e-05, 5.334e-05, 5.335e-05, 6855.69227222], [1517216040000, 5.337e-05, 5.337e-05, 5.334e-05, 5.335e-05, 22928.42886585], [1517216100000, 5.335e-05, 5.336e-05, 5.332e-05, 5.332e-05, 41443.16273273], [1517216160000, 5.334e-05, 5.336e-05, 5.332e-05, 5.336e-05, 13360.7044627], [1517216220000, 5.334e-05, 5.337e-05, 5.334e-05, 5.334e-05, 8583.68324085], [1517216280000, 5.334e-05, 5.337e-05, 5.334e-05, 5.334e-05, 973.87540648], [1517216340000, 5.334e-05, 5.335e-05, 5.334e-05, 5.334e-05, 2188.68085432], [1517216400000, 5.334e-05, 5.337e-05, 5.334e-05, 5.337e-05, 653.68271165], [1517216460000, 5.335e-05, 5.337e-05, 5.332e-05, 5.332e-05, 13858.09018983], [1517216520000, 5.337e-05, 5.337e-05, 5.331e-05, 5.332e-05, 12693.00391872], [1517216580000, 5.331e-05, 5.332e-05, 5.325e-05, 5.325e-05, 52385.02091538], [1517216640000, 5.325e-05, 5.325e-05, 5.325e-05, 5.325e-05, 7426.90894501], [1517216700000, 5.325e-05, 5.325e-05, 5.324e-05, 5.324e-05, 6091.8153631], [1517216760000, 5.324e-05, 5.325e-05, 5.324e-05, 5.324e-05, 44797.73019717], [1517216820000, 5.325e-05, 5.325e-05, 5.322e-05, 5.322e-05, 20060.86701154], [1517216880000, 5.322e-05, 5.322e-05, 5.321e-05, 5.322e-05, 22644.92759791], [1517216940000, 5.321e-05, 5.322e-05, 5.32e-05, 5.322e-05, 16772.65457442], [1517217000000, 5.32e-05, 5.322e-05, 5.32e-05, 5.322e-05, 5929.99370922], [1517217060000, 5.32e-05, 5.322e-05, 5.32e-05, 5.321e-05, 16540.29876597], [1517217120000, 5.322e-05, 5.322e-05, 5.322e-05, 5.322e-05, 10067.03064888], [1517217180000, 5.322e-05, 5.322e-05, 5.321e-05, 5.322e-05, 15709.03093042], [1517217240000, 5.321e-05, 5.322e-05, 5.32e-05, 5.32e-05, 15848.30200991], [1517217300000, 5.32e-05, 5.32e-05, 5.319e-05, 5.319e-05, 15751.97586278], [1517217360000, 5.319e-05, 5.32e-05, 5.318e-05, 5.318e-05, 15223.23982167], [1517217420000, 5.316e-05, 5.318e-05, 5.316e-05, 5.316e-05, 1886.28473109], [1517217480000, 5.316e-05, 5.317e-05, 5.313e-05, 5.313e-05, 12335.30144082], [1517217540000, 5.313e-05, 5.314e-05, 5.303e-05, 5.313e-05, 17604.32830132], [1517217600000, 5.305e-05, 5.313e-05, 5.305e-05, 5.312e-05, 9792.61762055], [1517217660000, 5.313e-05, 5.313e-05, 5.312e-05, 5.313e-05, 19183.7215222], [1517217720000, 5.312e-05, 5.313e-05, 5.311e-05, 5.312e-05, 26316.33861856], [1517217780000, 5.311e-05, 5.313e-05, 5.292e-05, 5.313e-05, 126835.88547943], [1517217840000, 5.313e-05, 5.313e-05, 5.311e-05, 5.311e-05, 7849.5050641], [1517217900000, 5.31e-05, 5.312e-05, 5.305e-05, 5.31e-05, 25670.77191811], [1517217960000, 5.31e-05, 5.316e-05, 5.308e-05, 5.316e-05, 26523.24613164], [1517218020000, 5.316e-05, 5.317e-05, 5.308e-05, 5.317e-05, 1576.45398039], [1517218080000, 5.317e-05, 5.321e-05, 5.308e-05, 5.308e-05, 9385.18930266], [1517218140000, 5.31e-05, 5.32e-05, 5.31e-05, 5.31e-05, 75580.44451357], [1517218200000, 5.31e-05, 5.32e-05, 5.31e-05, 5.32e-05, 8571.892942], [1517218260000, 5.319e-05, 5.32e-05, 5.304e-05, 5.304e-05, 63835.67494688], [1517218320000, 5.306e-05, 5.32e-05, 5.304e-05, 5.307e-05, 28319.68924429], [1517218380000, 5.32e-05, 5.32e-05, 5.3e-05, 5.308e-05, 35300.64560506], [1517218440000, 5.317e-05, 5.318e-05, 5.317e-05, 5.317e-05, 26014.64743098], [1517218500000, 5.318e-05, 5.318e-05, 5.317e-05, 5.317e-05, 7272.92270922], [1517218560000, 5.317e-05, 5.317e-05, 5.311e-05, 5.311e-05, 30117.76634468], [1517218620000, 5.311e-05, 5.317e-05, 5.311e-05, 5.317e-05, 6275.94212017], [1517218680000, 5.317e-05, 5.317e-05, 5.311e-05, 5.311e-05, 1405.01810494], [1517218740000, 5.311e-05, 5.314e-05, 5.31e-05, 5.311e-05, 6124.3077031], [1517218800000, 5.311e-05, 5.316e-05, 5.3e-05, 5.312e-05, 5175.93296428], [1517218860000, 5.313e-05, 5.313e-05, 5.31e-05, 5.313e-05, 1930.23029726], [1517218920000, 5.316e-05, 5.317e-05, 5.314e-05, 5.317e-05, 12059.29442628], [1517218980000, 5.317e-05, 5.317e-05, 5.313e-05, 5.317e-05, 23674.68210814], [1517219040000, 5.313e-05, 5.318e-05, 5.313e-05, 5.317e-05, 11369.17457698], [1517219100000, 5.317e-05, 5.317e-05, 5.312e-05, 5.315e-05, 14237.12347388], [1517219160000, 5.312e-05, 5.315e-05, 5.301e-05, 5.301e-05, 14086.61689506], [1517219220000, 5.303e-05, 5.314e-05, 5.302e-05, 5.313e-05, 80030.39686452], [1517219280000, 5.305e-05, 5.313e-05, 5.303e-05, 5.303e-05, 29326.23937999], [1517219340000, 5.312e-05, 5.312e-05, 5.304e-05, 5.307e-05, 25384.20555326], [1517219400000, 5.307e-05, 5.312e-05, 5.304e-05, 5.312e-05, 51428.93266155], [1517219460000, 5.312e-05, 5.313e-05, 5.308e-05, 5.313e-05, 23753.79177739], [1517219520000, 5.312e-05, 5.312e-05, 5.306e-05, 5.312e-05, 4583.99050094], [1517219580000, 5.312e-05, 5.313e-05, 5.303e-05, 5.313e-05, 11089.38054178], [1517219640000, 5.313e-05, 5.313e-05, 5.299e-05, 5.303e-05, 14918.63853797], [1517219700000, 5.299e-05, 5.303e-05, 5.295e-05, 5.303e-05, 17539.08559266], [1517219760000, 5.299e-05, 5.303e-05, 5.297e-05, 5.297e-05, 23354.80455302], [1517219820000, 5.303e-05, 5.303e-05, 5.299e-05, 5.301e-05, 21463.86885057], [1517219880000, 5.301e-05, 5.303e-05, 5.301e-05, 5.302e-05, 4817.44860848], [1517219940000, 5.303e-05, 5.303e-05, 5.302e-05, 5.302e-05, 26398.48895986], [1517220000000, 5.303e-05, 5.303e-05, 5.301e-05, 5.301e-05, 4466.39910109], [1517220060000, 5.301e-05, 5.303e-05, 5.299e-05, 5.303e-05, 30071.28701303], [1517220120000, 5.3e-05, 5.313e-05, 5.3e-05, 5.313e-05, 28541.950307], [1517220180000, 5.313e-05, 5.313e-05, 5.3e-05, 5.311e-05, 15801.1734942], [1517220240000, 5.311e-05, 5.313e-05, 5.306e-05, 5.311e-05, 9991.10662599], [1517220300000, 5.311e-05, 5.313e-05, 5.307e-05, 5.313e-05, 6388.51903306], [1517220360000, 5.309e-05, 5.313e-05, 5.307e-05, 5.313e-05, 27640.98843746], [1517220420000, 5.313e-05, 5.313e-05, 5.308e-05, 5.309e-05, 72201.43702505], [1517220480000, 5.313e-05, 5.313e-05, 5.307e-05, 5.307e-05, 20078.47200736], [1517220540000, 5.313e-05, 5.313e-05, 5.308e-05, 5.308e-05, 37997.7844706], [1517220600000, 5.313e-05, 5.313e-05, 5.312e-05, 5.313e-05, 15314.25374563], [1517220660000, 5.313e-05, 5.313e-05, 5.307e-05, 5.308e-05, 33926.26167765], [1517220720000, 5.309e-05, 5.309e-05, 5.303e-05, 5.308e-05, 20971.07360878], [1517220780000, 5.308e-05, 5.313e-05, 5.301e-05, 5.313e-05, 66169.02468285], [1517220840000, 5.305e-05, 5.308e-05, 5.305e-05, 5.306e-05, 11974.68414684], [1517220900000, 5.307e-05, 5.313e-05, 5.306e-05, 5.312e-05, 34632.55209704], [1517220960000, 5.308e-05, 5.313e-05, 5.304e-05, 5.307e-05, 70414.94163211], [1517221020000, 5.307e-05, 5.307e-05, 5.291e-05, 5.291e-05, 37979.71208218], [1517221080000, 5.302e-05, 5.312e-05, 5.302e-05, 5.302e-05, 10352.16653621], [1517221140000, 5.304e-05, 5.313e-05, 5.302e-05, 5.312e-05, 48446.56218023], [1517221200000, 5.312e-05, 5.318e-05, 5.288e-05, 5.318e-05, 86091.75395366], [1517221260000, 5.317e-05, 5.317e-05, 5.299e-05, 5.316e-05, 5325.41605531], [1517221320000, 5.315e-05, 5.315e-05, 5.299e-05, 5.301e-05, 8265.50208421], [1517221380000, 5.301e-05, 5.31e-05, 5.301e-05, 5.307e-05, 6420.6780038], [1517221440000, 5.307e-05, 5.309e-05, 5.301e-05, 5.309e-05, 13310.19652744], [1517221500000, 5.309e-05, 5.309e-05, 5.3e-05, 5.301e-05, 8535.80308142], [1517221560000, 5.301e-05, 5.301e-05, 5.288e-05, 5.301e-05, 78809.64100672], [1517221620000, 5.289e-05, 5.309e-05, 5.289e-05, 5.309e-05, 113349.19865785], [1517221680000, 5.309e-05, 5.309e-05, 5.278e-05, 5.298e-05, 95866.16323264], [1517221740000, 5.3e-05, 5.309e-05, 5.298e-05, 5.299e-05, 721.07376586], [1517221800000, 5.309e-05, 5.316e-05, 5.3e-05, 5.316e-05, 10549.31087372], [1517221860000, 5.305e-05, 5.312e-05, 5.305e-05, 5.312e-05, 33335.41877465], [1517221920000, 5.312e-05, 5.312e-05, 5.305e-05, 5.31e-05, 4573.34547148], [1517221980000, 5.312e-05, 5.312e-05, 5.283e-05, 5.283e-05, 10260.80163187], [1517222040000, 5.31e-05, 5.31e-05, 5.288e-05, 5.309e-05, 5330.85695434], [1517222100000, 5.309e-05, 5.309e-05, 5.297e-05, 5.301e-05, 2199.17694268], [1517222160000, 5.301e-05, 5.309e-05, 5.301e-05, 5.309e-05, 3605.97494967], [1517222220000, 5.309e-05, 5.309e-05, 5.298e-05, 5.308e-05, 7057.0348202], [1517222280000, 5.309e-05, 5.309e-05, 5.301e-05, 5.308e-05, 1864.18391302], [1517222340000, 5.308e-05, 5.311e-05, 5.303e-05, 5.31e-05, 38960.65669674], [1517222400000, 5.303e-05, 5.311e-05, 5.301e-05, 5.303e-05, 24010.51481212], [1517222460000, 5.303e-05, 5.31e-05, 5.3e-05, 5.3e-05, 24361.20015796], [1517222520000, 5.3e-05, 5.311e-05, 5.3e-05, 5.301e-05, 9633.0879243], [1517222580000, 5.302e-05, 5.316e-05, 5.302e-05, 5.311e-05, 15670.84390739], [1517222640000, 5.302e-05, 5.311e-05, 5.301e-05, 5.311e-05, 10970.91214678], [1517222700000, 5.311e-05, 5.311e-05, 5.307e-05, 5.307e-05, 13093.1061554], [1517222760000, 5.305e-05, 5.312e-05, 5.303e-05, 5.312e-05, 91309.22771158], [1517222820000, 5.311e-05, 5.312e-05, 5.311e-05, 5.311e-05, 3762.39901196], [1517222880000, 5.311e-05, 5.312e-05, 5.311e-05, 5.312e-05, 1766.29513776], [1517222940000, 5.312e-05, 5.316e-05, 5.303e-05, 5.312e-05, 20836.13395649], [1517223000000, 5.31e-05, 5.316e-05, 5.302e-05, 5.316e-05, 5092.61440152], [1517223060000, 5.315e-05, 5.316e-05, 5.304e-05, 5.304e-05, 3154.50645597], [1517223120000, 5.303e-05, 5.313e-05, 5.302e-05, 5.305e-05, 18990.66065653], [1517223180000, 5.306e-05, 5.315e-05, 5.304e-05, 5.304e-05, 12443.50295515], [1517223240000, 5.305e-05, 5.311e-05, 5.304e-05, 5.304e-05, 21175.63408609], [1517223300000, 5.306e-05, 5.316e-05, 5.302e-05, 5.302e-05, 99723.24915444], [1517223360000, 5.302e-05, 5.315e-05, 5.301e-05, 5.301e-05, 28040.73164892], [1517223420000, 5.302e-05, 5.313e-05, 5.284e-05, 5.302e-05, 48921.33888369], [1517223480000, 5.302e-05, 5.309e-05, 5.287e-05, 5.293e-05, 68630.32411853], [1517223540000, 5.293e-05, 5.302e-05, 5.287e-05, 5.297e-05, 91783.90559704], [1517223600000, 5.297e-05, 5.304e-05, 5.295e-05, 5.299e-05, 69967.61279324], [1517223660000, 5.299e-05, 5.299e-05, 5.287e-05, 5.295e-05, 34628.78781045], [1517223720000, 5.295e-05, 5.299e-05, 5.295e-05, 5.297e-05, 43926.6191066], [1517223780000, 5.297e-05, 5.307e-05, 5.296e-05, 5.299e-05, 52666.96506543], [1517223840000, 5.299e-05, 5.306e-05, 5.297e-05, 5.301e-05, 49281.80770879], [1517223900000, 5.299e-05, 5.301e-05, 5.296e-05, 5.299e-05, 51905.52233123], [1517223960000, 5.299e-05, 5.301e-05, 5.29e-05, 5.3e-05, 109638.526287], [1517224020000, 5.3e-05, 5.308e-05, 5.291e-05, 5.296e-05, 42101.58017114], [1517224080000, 5.296e-05, 5.308e-05, 5.294e-05, 5.298e-05, 38982.74758935], [1517224140000, 5.308e-05, 5.309e-05, 5.299e-05, 5.305e-05, 41086.52041777], [1517224200000, 5.308e-05, 5.309e-05, 5.3e-05, 5.304e-05, 52041.76608476], [1517224260000, 5.304e-05, 5.306e-05, 5.299e-05, 5.304e-05, 82574.31345232], [1517224320000, 5.305e-05, 5.309e-05, 5.305e-05, 5.306e-05, 34771.78107506], [1517224380000, 5.31e-05, 5.314e-05, 5.306e-05, 5.309e-05, 184447.01784418], [1517224440000, 5.314e-05, 5.316e-05, 5.309e-05, 5.311e-05, 40176.05440575], [1517224500000, 5.311e-05, 5.316e-05, 5.311e-05, 5.313e-05, 7605.91758537], [1517224560000, 5.313e-05, 5.315e-05, 5.312e-05, 5.315e-05, 11146.65709373], [1517224620000, 5.312e-05, 5.315e-05, 5.311e-05, 5.314e-05, 9812.7198725], [1517224680000, 5.314e-05, 5.316e-05, 5.313e-05, 5.314e-05, 58394.74046653], [1517224740000, 5.313e-05, 5.318e-05, 5.312e-05, 5.313e-05, 8294.87064244], [1517224800000, 5.317e-05, 5.318e-05, 5.314e-05, 5.316e-05, 24891.14938851], [1517224860000, 5.316e-05, 5.318e-05, 5.315e-05, 5.316e-05, 8685.55984933], [1517224920000, 5.315e-05, 5.32e-05, 5.315e-05, 5.318e-05, 69539.29066163], [1517224980000, 5.319e-05, 5.321e-05, 5.314e-05, 5.316e-05, 138767.62876983], [1517225040000, 5.316e-05, 5.321e-05, 5.312e-05, 5.316e-05, 92055.23737713], [1517225100000, 5.319e-05, 5.32e-05, 5.311e-05, 5.313e-05, 66880.57489387], [1517225160000, 5.313e-05, 5.315e-05, 5.305e-05, 5.313e-05, 11354.70138292], [1517225220000, 5.313e-05, 5.314e-05, 5.306e-05, 5.312e-05, 40521.13103766], [1517225280000, 5.312e-05, 5.315e-05, 5.305e-05, 5.314e-05, 13089.83929111], [1517225340000, 5.314e-05, 5.315e-05, 5.305e-05, 5.306e-05, 15153.50941592], [1517225400000, 5.313e-05, 5.313e-05, 5.306e-05, 5.313e-05, 14683.08643586], [1517225460000, 5.314e-05, 5.314e-05, 5.308e-05, 5.31e-05, 40312.33255441], [1517225520000, 5.31e-05, 5.315e-05, 5.307e-05, 5.312e-05, 58002.8488495], [1517225580000, 5.312e-05, 5.321e-05, 5.305e-05, 5.321e-05, 56992.51596796], [1517225640000, 5.315e-05, 5.322e-05, 5.315e-05, 5.321e-05, 78557.35122754], [1517225700000, 5.321e-05, 5.321e-05, 5.315e-05, 5.317e-05, 33845.63459619], [1517225760000, 5.317e-05, 5.321e-05, 5.306e-05, 5.306e-05, 189474.77384009], [1517225820000, 5.31e-05, 5.317e-05, 5.301e-05, 5.301e-05, 56138.01684038], [1517225880000, 5.315e-05, 5.322e-05, 5.303e-05, 5.322e-05, 123484.26168105], [1517225940000, 5.322e-05, 5.331e-05, 5.308e-05, 5.331e-05, 155279.55932595], [1517226000000, 5.331e-05, 5.34e-05, 5.32e-05, 5.321e-05, 101120.1782729], [1517226060000, 5.321e-05, 5.335e-05, 5.32e-05, 5.332e-05, 30680.90949948], [1517226120000, 5.321e-05, 5.333e-05, 5.32e-05, 5.321e-05, 104324.7931771], [1517226180000, 5.321e-05, 5.333e-05, 5.32e-05, 5.333e-05, 25405.3209104], [1517226240000, 5.332e-05, 5.332e-05, 5.321e-05, 5.331e-05, 28458.00837595], [1517226300000, 5.323e-05, 5.331e-05, 5.323e-05, 5.331e-05, 31965.04216774], [1517226360000, 5.331e-05, 5.331e-05, 5.323e-05, 5.323e-05, 74309.23016336], [1517226420000, 5.322e-05, 5.335e-05, 5.32e-05, 5.32e-05, 61990.6586742], [1517226480000, 5.32e-05, 5.335e-05, 5.32e-05, 5.333e-05, 79257.57669728], [1517226540000, 5.335e-05, 5.336e-05, 5.323e-05, 5.335e-05, 46270.87661281], [1517226600000, 5.335e-05, 5.336e-05, 5.32e-05, 5.32e-05, 26828.63056123], [1517226660000, 5.322e-05, 5.344e-05, 5.322e-05, 5.343e-05, 30278.95730029], [1517226720000, 5.343e-05, 5.344e-05, 5.325e-05, 5.344e-05, 54003.77760213], [1517226780000, 5.343e-05, 5.35e-05, 5.33e-05, 5.341e-05, 70831.26977786], [1517226840000, 5.342e-05, 5.345e-05, 5.32e-05, 5.344e-05, 76310.63359165], [1517226900000, 5.324e-05, 5.343e-05, 5.323e-05, 5.325e-05, 58355.40002129], [1517226960000, 5.335e-05, 5.343e-05, 5.325e-05, 5.326e-05, 66676.66542814], [1517227020000, 5.325e-05, 5.34e-05, 5.325e-05, 5.34e-05, 8265.0074565], [1517227080000, 5.327e-05, 5.34e-05, 5.327e-05, 5.331e-05, 4212.84747303], [1517227140000, 5.331e-05, 5.331e-05, 5.31e-05, 5.32e-05, 35791.39194359], [1517227200000, 5.32e-05, 5.32e-05, 5.312e-05, 5.32e-05, 16725.52466195], [1517227260000, 5.317e-05, 5.331e-05, 5.313e-05, 5.314e-05, 34478.40875464], [1517227320000, 5.315e-05, 5.321e-05, 5.311e-05, 5.317e-05, 24576.82777405], [1517227380000, 5.317e-05, 5.331e-05, 5.317e-05, 5.32e-05, 4893.52680197], [1517227440000, 5.32e-05, 5.32e-05, 5.318e-05, 5.32e-05, 2783.32580493], [1517227500000, 5.32e-05, 5.32e-05, 5.318e-05, 5.319e-05, 2942.36093305], [1517227560000, 5.318e-05, 5.319e-05, 5.314e-05, 5.318e-05, 11575.29021558], [1517227620000, 5.318e-05, 5.331e-05, 5.314e-05, 5.317e-05, 41198.60173589], [1517227680000, 5.317e-05, 5.33e-05, 5.317e-05, 5.323e-05, 22914.0219758], [1517227740000, 5.324e-05, 5.338e-05, 5.323e-05, 5.323e-05, 23247.22903565], [1517227800000, 5.323e-05, 5.338e-05, 5.32e-05, 5.337e-05, 41149.49327424], [1517227860000, 5.323e-05, 5.337e-05, 5.32e-05, 5.336e-05, 6154.47684624], [1517227920000, 5.336e-05, 5.336e-05, 5.321e-05, 5.322e-05, 22954.87484746], [1517227980000, 5.323e-05, 5.333e-05, 5.323e-05, 5.325e-05, 9813.92512974], [1517228040000, 5.325e-05, 5.329e-05, 5.311e-05, 5.325e-05, 44087.86669343], [1517228100000, 5.326e-05, 5.326e-05, 5.314e-05, 5.314e-05, 29301.528997], [1517228160000, 5.325e-05, 5.326e-05, 5.317e-05, 5.321e-05, 17687.49514207], [1517228220000, 5.321e-05, 5.321e-05, 5.317e-05, 5.321e-05, 23682.4310116], [1517228280000, 5.322e-05, 5.326e-05, 5.322e-05, 5.326e-05, 20646.16861844], [1517228340000, 5.323e-05, 5.323e-05, 5.322e-05, 5.323e-05, 19425.77115505], [1517228400000, 5.323e-05, 5.324e-05, 5.322e-05, 5.322e-05, 25458.06754743], [1517228460000, 5.323e-05, 5.326e-05, 5.322e-05, 5.322e-05, 18440.98897149], [1517228520000, 5.325e-05, 5.325e-05, 5.321e-05, 5.322e-05, 20406.29054615], [1517228580000, 5.322e-05, 5.326e-05, 5.322e-05, 5.325e-05, 20936.47396645], [1517228640000, 5.326e-05, 5.326e-05, 5.322e-05, 5.322e-05, 4957.81432169], [1517228700000, 5.322e-05, 5.322e-05, 5.318e-05, 5.322e-05, 42115.25453394], [1517228760000, 5.322e-05, 5.323e-05, 5.319e-05, 5.322e-05, 27322.85456205], [1517228820000, 5.322e-05, 5.323e-05, 5.32e-05, 5.322e-05, 4713.79973163], [1517228880000, 5.322e-05, 5.326e-05, 5.32e-05, 5.323e-05, 33315.4336912], [1517228940000, 5.323e-05, 5.326e-05, 5.322e-05, 5.323e-05, 57768.31096509], [1517229000000, 5.323e-05, 5.326e-05, 5.322e-05, 5.322e-05, 28643.5068034], [1517229060000, 5.322e-05, 5.326e-05, 5.319e-05, 5.321e-05, 47245.86971008], [1517229120000, 5.322e-05, 5.326e-05, 5.321e-05, 5.326e-05, 21742.416027], [1517229180000, 5.325e-05, 5.326e-05, 5.32e-05, 5.326e-05, 37601.43452883], [1517229240000, 5.322e-05, 5.325e-05, 5.322e-05, 5.323e-05, 24477.79436144], [1517229300000, 5.323e-05, 5.325e-05, 5.32e-05, 5.324e-05, 43897.93309024], [1517229360000, 5.324e-05, 5.326e-05, 5.32e-05, 5.323e-05, 109664.93672628], [1517229420000, 5.323e-05, 5.323e-05, 5.314e-05, 5.318e-05, 124683.00690483], [1517229480000, 5.318e-05, 5.323e-05, 5.31e-05, 5.315e-05, 16790.10102589], [1517229540000, 5.321e-05, 5.321e-05, 5.317e-05, 5.321e-05, 26104.74007008], [1517229600000, 5.319e-05, 5.32e-05, 5.317e-05, 5.318e-05, 18298.89548871], [1517229660000, 5.318e-05, 5.321e-05, 5.318e-05, 5.32e-05, 16409.68411049], [1517229720000, 5.32e-05, 5.32e-05, 5.31e-05, 5.31e-05, 29716.10553726], [1517229780000, 5.31e-05, 5.318e-05, 5.305e-05, 5.305e-05, 24779.82832042], [1517229840000, 5.308e-05, 5.318e-05, 5.308e-05, 5.308e-05, 23832.65497071], [1517229900000, 5.305e-05, 5.308e-05, 5.304e-05, 5.307e-05, 57009.39829314], [1517229960000, 5.307e-05, 5.326e-05, 5.302e-05, 5.303e-05, 32736.4797078], [1517230020000, 5.303e-05, 5.305e-05, 5.303e-05, 5.305e-05, 26733.41370607], [1517230080000, 5.305e-05, 5.326e-05, 5.302e-05, 5.303e-05, 6332.15099438], [1517230140000, 5.304e-05, 5.325e-05, 5.304e-05, 5.307e-05, 4367.42674436], [1517230200000, 5.307e-05, 5.324e-05, 5.306e-05, 5.308e-05, 20070.33574341], [1517230260000, 5.311e-05, 5.318e-05, 5.311e-05, 5.314e-05, 36498.69456833], [1517230320000, 5.314e-05, 5.321e-05, 5.313e-05, 5.316e-05, 27774.7568249], [1517230380000, 5.317e-05, 5.321e-05, 5.313e-05, 5.314e-05, 55340.87589758], [1517230440000, 5.315e-05, 5.321e-05, 5.315e-05, 5.317e-05, 14332.85231842], [1517230500000, 5.317e-05, 5.32e-05, 5.317e-05, 5.319e-05, 63252.31268672], [1517230560000, 5.319e-05, 5.32e-05, 5.314e-05, 5.314e-05, 19188.82681143], [1517230620000, 5.314e-05, 5.318e-05, 5.313e-05, 5.318e-05, 33374.53670196], [1517230680000, 5.313e-05, 5.318e-05, 5.302e-05, 5.302e-05, 29242.71858522], [1517230740000, 5.302e-05, 5.318e-05, 5.302e-05, 5.308e-05, 5183.69485789], [1517230800000, 5.311e-05, 5.32e-05, 5.303e-05, 5.307e-05, 31625.61450405], [1517230860000, 5.307e-05, 5.31e-05, 5.305e-05, 5.31e-05, 16590.98139422], [1517230920000, 5.31e-05, 5.312e-05, 5.305e-05, 5.308e-05, 19603.79253155], [1517230980000, 5.308e-05, 5.311e-05, 5.302e-05, 5.309e-05, 36491.00864844], [1517231040000, 5.311e-05, 5.313e-05, 5.302e-05, 5.307e-05, 47587.41446518], [1517231100000, 5.307e-05, 5.315e-05, 5.304e-05, 5.312e-05, 98380.81112802], [1517231160000, 5.313e-05, 5.315e-05, 5.312e-05, 5.313e-05, 36466.40533404], [1517231220000, 5.312e-05, 5.313e-05, 5.301e-05, 5.311e-05, 43025.39131839], [1517231280000, 5.311e-05, 5.315e-05, 5.302e-05, 5.314e-05, 54397.4485996], [1517231340000, 5.315e-05, 5.315e-05, 5.303e-05, 5.303e-05, 91247.92449985], [1517231400000, 5.303e-05, 5.311e-05, 5.302e-05, 5.311e-05, 22592.72095595], [1517231460000, 5.313e-05, 5.315e-05, 5.306e-05, 5.306e-05, 35811.02365628], [1517231520000, 5.306e-05, 5.315e-05, 5.306e-05, 5.311e-05, 71865.97188094], [1517231580000, 5.311e-05, 5.311e-05, 5.3e-05, 5.302e-05, 26993.48440887], [1517231640000, 5.308e-05, 5.309e-05, 5.301e-05, 5.302e-05, 29560.51724104], [1517231700000, 5.302e-05, 5.309e-05, 5.301e-05, 5.303e-05, 40869.83518825], [1517231760000, 5.303e-05, 5.303e-05, 5.302e-05, 5.303e-05, 43729.05671244], [1517231820000, 5.303e-05, 5.306e-05, 5.303e-05, 5.306e-05, 30317.0665079], [1517231880000, 5.307e-05, 5.307e-05, 5.302e-05, 5.306e-05, 64160.88793332], [1517231940000, 5.306e-05, 5.308e-05, 5.306e-05, 5.308e-05, 36077.57557633], [1517232000000, 5.307e-05, 5.308e-05, 5.302e-05, 5.306e-05, 97342.13761294], [1517232060000, 5.306e-05, 5.31e-05, 5.3e-05, 5.3e-05, 109868.18047636], [1517232120000, 5.309e-05, 5.309e-05, 5.303e-05, 5.309e-05, 5865.11339803], [1517232180000, 5.309e-05, 5.31e-05, 5.308e-05, 5.309e-05, 36218.92512144], [1517232240000, 5.308e-05, 5.308e-05, 5.304e-05, 5.304e-05, 2734.50440127], [1517232300000, 5.304e-05, 5.305e-05, 5.303e-05, 5.305e-05, 6778.04542387], [1517232360000, 5.304e-05, 5.305e-05, 5.301e-05, 5.304e-05, 31462.65766066], [1517232420000, 5.304e-05, 5.305e-05, 5.304e-05, 5.305e-05, 4871.73529016], [1517232480000, 5.305e-05, 5.305e-05, 5.301e-05, 5.301e-05, 14192.70912064], [1517232540000, 5.301e-05, 5.303e-05, 5.3e-05, 5.3e-05, 65752.25437423], [1517232600000, 5.301e-05, 5.301e-05, 5.3e-05, 5.3e-05, 6822.81229406], [1517232660000, 5.301e-05, 5.301e-05, 5.292e-05, 5.3e-05, 29270.24118352], [1517232720000, 5.301e-05, 5.301e-05, 5.297e-05, 5.3e-05, 43099.73559054], [1517232780000, 5.3e-05, 5.301e-05, 5.296e-05, 5.296e-05, 76808.18100383], [1517232840000, 5.296e-05, 5.303e-05, 5.296e-05, 5.302e-05, 105600.89823865], [1517232900000, 5.301e-05, 5.305e-05, 5.3e-05, 5.302e-05, 26427.67596225], [1517232960000, 5.301e-05, 5.302e-05, 5.301e-05, 5.301e-05, 12761.35309262], [1517233020000, 5.301e-05, 5.305e-05, 5.301e-05, 5.303e-05, 13961.84965181], [1517233080000, 5.305e-05, 5.306e-05, 5.303e-05, 5.306e-05, 40133.0352147], [1517233140000, 5.305e-05, 5.308e-05, 5.3e-05, 5.303e-05, 18469.06351161], [1517233200000, 5.304e-05, 5.308e-05, 5.303e-05, 5.305e-05, 12849.05876986], [1517233260000, 5.306e-05, 5.308e-05, 5.304e-05, 5.304e-05, 9182.47124401], [1517233320000, 5.304e-05, 5.305e-05, 5.304e-05, 5.304e-05, 8131.50891617], [1517233380000, 5.304e-05, 5.305e-05, 5.304e-05, 5.305e-05, 12779.936375], [1517233440000, 5.306e-05, 5.306e-05, 5.304e-05, 5.305e-05, 11034.94689714], [1517233500000, 5.306e-05, 5.306e-05, 5.303e-05, 5.303e-05, 20706.40720116], [1517233560000, 5.303e-05, 5.304e-05, 5.301e-05, 5.301e-05, 13174.38958362], [1517233620000, 5.301e-05, 5.305e-05, 5.301e-05, 5.301e-05, 6347.54790635], [1517233680000, 5.305e-05, 5.305e-05, 5.301e-05, 5.305e-05, 1566.36401341], [1517233740000, 5.302e-05, 5.305e-05, 5.301e-05, 5.305e-05, 25226.82834994], [1517233800000, 5.305e-05, 5.305e-05, 5.301e-05, 5.301e-05, 1475.26178541], [1517233860000, 5.301e-05, 5.303e-05, 5.3e-05, 5.302e-05, 36278.25723228], [1517233920000, 5.303e-05, 5.305e-05, 5.303e-05, 5.305e-05, 65064.79283173], [1517233980000, 5.305e-05, 5.307e-05, 5.302e-05, 5.305e-05, 44750.86964182], [1517234040000, 5.305e-05, 5.306e-05, 5.305e-05, 5.306e-05, 17348.04197466], [1517234100000, 5.308e-05, 5.309e-05, 5.306e-05, 5.306e-05, 69200.3449178], [1517234160000, 5.307e-05, 5.309e-05, 5.306e-05, 5.307e-05, 39336.93359502], [1517234220000, 5.307e-05, 5.308e-05, 5.303e-05, 5.303e-05, 8373.0707739], [1517234280000, 5.306e-05, 5.309e-05, 5.306e-05, 5.308e-05, 19642.43457279], [1517234340000, 5.306e-05, 5.307e-05, 5.3e-05, 5.303e-05, 79263.13719762], [1517234400000, 5.303e-05, 5.307e-05, 5.303e-05, 5.306e-05, 40485.44091698], [1517234460000, 5.306e-05, 5.306e-05, 5.301e-05, 5.301e-05, 8807.82824674], [1517234520000, 5.302e-05, 5.306e-05, 5.3e-05, 5.301e-05, 51486.06281797], [1517234580000, 5.303e-05, 5.307e-05, 5.3e-05, 5.305e-05, 38010.65595356], [1517234640000, 5.306e-05, 5.306e-05, 5.302e-05, 5.302e-05, 18290.83877775], [1517234700000, 5.301e-05, 5.306e-05, 5.301e-05, 5.305e-05, 57585.49624693], [1517234760000, 5.305e-05, 5.307e-05, 5.305e-05, 5.307e-05, 25143.8432974], [1517234820000, 5.306e-05, 5.307e-05, 5.305e-05, 5.306e-05, 24867.26992898], [1517234880000, 5.305e-05, 5.306e-05, 5.305e-05, 5.306e-05, 3834.07890683], [1517234940000, 5.306e-05, 5.31e-05, 5.301e-05, 5.305e-05, 107145.04394794], [1517235000000, 5.308e-05, 5.31e-05, 5.305e-05, 5.307e-05, 19579.91737847], [1517235060000, 5.307e-05, 5.31e-05, 5.307e-05, 5.31e-05, 22447.17593477], [1517235120000, 5.31e-05, 5.31e-05, 5.308e-05, 5.31e-05, 112196.10258369], [1517235180000, 5.31e-05, 5.31e-05, 5.309e-05, 5.309e-05, 37678.00202026], [1517235240000, 5.309e-05, 5.309e-05, 5.302e-05, 5.302e-05, 19019.79177647], [1517235300000, 5.302e-05, 5.309e-05, 5.3e-05, 5.305e-05, 65624.59540885], [1517235360000, 5.305e-05, 5.308e-05, 5.305e-05, 5.308e-05, 5910.23030576], [1517235420000, 5.308e-05, 5.309e-05, 5.305e-05, 5.307e-05, 3662.64760468], [1517235480000, 5.308e-05, 5.309e-05, 5.307e-05, 5.307e-05, 4385.28847349], [1517235540000, 5.307e-05, 5.309e-05, 5.307e-05, 5.307e-05, 1140.83963624], [1517235600000, 5.309e-05, 5.309e-05, 5.304e-05, 5.304e-05, 45365.03397827], [1517235660000, 5.304e-05, 5.304e-05, 5.301e-05, 5.304e-05, 18070.42535928], [1517235720000, 5.304e-05, 5.308e-05, 5.301e-05, 5.304e-05, 23671.69573822], [1517235780000, 5.304e-05, 5.305e-05, 5.304e-05, 5.305e-05, 28097.19610267], [1517235840000, 5.305e-05, 5.306e-05, 5.305e-05, 5.306e-05, 29527.12353114], [1517235900000, 5.306e-05, 5.306e-05, 5.303e-05, 5.303e-05, 18877.34986853], [1517235960000, 5.305e-05, 5.306e-05, 5.302e-05, 5.306e-05, 14313.41130945], [1517236020000, 5.306e-05, 5.306e-05, 5.302e-05, 5.302e-05, 2717.98023476], [1517236080000, 5.301e-05, 5.302e-05, 5.3e-05, 5.301e-05, 28364.57119936], [1517236140000, 5.3e-05, 5.305e-05, 5.3e-05, 5.301e-05, 19959.99161874], [1517236200000, 5.304e-05, 5.305e-05, 5.3e-05, 5.3e-05, 25242.35972811], [1517236260000, 5.3e-05, 5.303e-05, 5.3e-05, 5.303e-05, 4082.80188679], [1517236320000, 5.303e-05, 5.303e-05, 5.3e-05, 5.301e-05, 4199.10787194], [1517236380000, 5.301e-05, 5.301e-05, 5.301e-05, 5.301e-05, 7367.5959253], [1517236440000, 5.302e-05, 5.305e-05, 5.301e-05, 5.304e-05, 10159.64651274], [1517236500000, 5.301e-05, 5.304e-05, 5.301e-05, 5.301e-05, 8411.56050764], [1517236560000, 5.301e-05, 5.305e-05, 5.301e-05, 5.305e-05, 17901.93731925], [1517236620000, 5.304e-05, 5.306e-05, 5.304e-05, 5.306e-05, 38704.41355557], [1517236680000, 5.306e-05, 5.306e-05, 5.301e-05, 5.301e-05, 14825.30347381], [1517236740000, 5.302e-05, 5.306e-05, 5.301e-05, 5.302e-05, 21059.28929444], [1517236800000, 5.306e-05, 5.306e-05, 5.302e-05, 5.306e-05, 64434.81620309], [1517236860000, 5.306e-05, 5.31e-05, 5.301e-05, 5.301e-05, 140076.87269296], [1517236920000, 5.307e-05, 5.31e-05, 5.304e-05, 5.307e-05, 72240.85782552], [1517236980000, 5.307e-05, 5.31e-05, 5.301e-05, 5.307e-05, 72905.40527069], [1517237040000, 5.307e-05, 5.31e-05, 5.307e-05, 5.307e-05, 42479.48683348], [1517237100000, 5.31e-05, 5.316e-05, 5.307e-05, 5.312e-05, 150933.07925491], [1517237160000, 5.316e-05, 5.316e-05, 5.303e-05, 5.315e-05, 58007.37687865], [1517237220000, 5.314e-05, 5.316e-05, 5.31e-05, 5.316e-05, 43984.9866442], [1517237280000, 5.315e-05, 5.317e-05, 5.315e-05, 5.316e-05, 19076.46684789], [1517237340000, 5.315e-05, 5.315e-05, 5.308e-05, 5.314e-05, 8686.10284485], [1517237400000, 5.313e-05, 5.315e-05, 5.309e-05, 5.314e-05, 28158.19433421], [1517237460000, 5.314e-05, 5.315e-05, 5.309e-05, 5.314e-05, 1548.82136965], [1517237520000, 5.309e-05, 5.314e-05, 5.291e-05, 5.309e-05, 89743.67253539], [1517237580000, 5.301e-05, 5.314e-05, 5.28e-05, 5.313e-05, 134464.62937977], [1517237640000, 5.3e-05, 5.312e-05, 5.283e-05, 5.283e-05, 154689.59408342], [1517237700000, 5.289e-05, 5.312e-05, 5.28e-05, 5.311e-05, 100544.04302284], [1517237760000, 5.301e-05, 5.311e-05, 5.285e-05, 5.29e-05, 71691.75528556], [1517237820000, 5.293e-05, 5.311e-05, 5.293e-05, 5.304e-05, 2342.37976819], [1517237880000, 5.309e-05, 5.311e-05, 5.305e-05, 5.306e-05, 28643.06161481], [1517237940000, 5.309e-05, 5.311e-05, 5.309e-05, 5.31e-05, 10352.6089788], [1517238000000, 5.31e-05, 5.31e-05, 5.306e-05, 5.31e-05, 13303.13078124], [1517238060000, 5.31e-05, 5.31e-05, 5.306e-05, 5.306e-05, 13983.58842184], [1517238120000, 5.309e-05, 5.31e-05, 5.306e-05, 5.309e-05, 6903.69596064], [1517238180000, 5.309e-05, 5.309e-05, 5.305e-05, 5.305e-05, 6521.32639762], [1517238240000, 5.304e-05, 5.304e-05, 5.301e-05, 5.304e-05, 1872.52755921], [1517238300000, 5.301e-05, 5.303e-05, 5.301e-05, 5.303e-05, 21617.69098452], [1517238360000, 5.303e-05, 5.303e-05, 5.301e-05, 5.302e-05, 25136.45213266], [1517238420000, 5.303e-05, 5.304e-05, 5.302e-05, 5.303e-05, 39080.37312995], [1517238480000, 5.302e-05, 5.303e-05, 5.301e-05, 5.301e-05, 59198.97237353], [1517238540000, 5.303e-05, 5.303e-05, 5.301e-05, 5.301e-05, 14066.88580983], [1517238600000, 5.301e-05, 5.301e-05, 5.3e-05, 5.3e-05, 3091.02601696], [1517238660000, 5.301e-05, 5.301e-05, 5.3e-05, 5.3e-05, 25003.10692931], [1517238720000, 5.3e-05, 5.3e-05, 5.299e-05, 5.299e-05, 16548.7232504], [1517238780000, 5.299e-05, 5.3e-05, 5.299e-05, 5.3e-05, 59466.5952048], [1517238840000, 5.3e-05, 5.3e-05, 5.299e-05, 5.3e-05, 70103.49610572], [1517238900000, 5.3e-05, 5.3e-05, 5.299e-05, 5.299e-05, 30919.6250906], [1517238960000, 5.3e-05, 5.3e-05, 5.299e-05, 5.3e-05, 46233.51148681], [1517239020000, 5.3e-05, 5.3e-05, 5.299e-05, 5.3e-05, 28120.18666039], [1517239080000, 5.299e-05, 5.3e-05, 5.299e-05, 5.3e-05, 86425.37293479], [1517239140000, 5.298e-05, 5.298e-05, 5.297e-05, 5.298e-05, 2419.22192823], [1517239200000, 5.3e-05, 5.3e-05, 5.298e-05, 5.298e-05, 888.9274274], [1517239260000, 5.3e-05, 5.3e-05, 5.297e-05, 5.297e-05, 37397.47332571], [1517239320000, 5.297e-05, 5.298e-05, 5.295e-05, 5.298e-05, 18845.53699426], [1517239380000, 5.298e-05, 5.298e-05, 5.295e-05, 5.297e-05, 124281.82153631], [1517239440000, 5.297e-05, 5.297e-05, 5.294e-05, 5.294e-05, 12941.46740256], [1517239500000, 5.295e-05, 5.299e-05, 5.286e-05, 5.299e-05, 97051.89571071], [1517239560000, 5.299e-05, 5.299e-05, 5.29e-05, 5.294e-05, 46286.07863247], [1517239620000, 5.298e-05, 5.299e-05, 5.293e-05, 5.298e-05, 29601.8389463], [1517239680000, 5.298e-05, 5.299e-05, 5.291e-05, 5.299e-05, 56661.84039338], [1517239740000, 5.298e-05, 5.3e-05, 5.295e-05, 5.3e-05, 49869.59565745], [1517239800000, 5.3e-05, 5.3e-05, 5.292e-05, 5.295e-05, 119146.1524543], [1517239860000, 5.295e-05, 5.295e-05, 5.292e-05, 5.294e-05, 75443.3505684], [1517239920000, 5.294e-05, 5.294e-05, 5.292e-05, 5.293e-05, 31872.27116712], [1517239980000, 5.293e-05, 5.293e-05, 5.291e-05, 5.293e-05, 82274.63324849], [1517240040000, 5.293e-05, 5.293e-05, 5.285e-05, 5.285e-05, 26335.79982425], [1517240100000, 5.286e-05, 5.29e-05, 5.286e-05, 5.287e-05, 1414.8682829], [1517240160000, 5.29e-05, 5.293e-05, 5.29e-05, 5.29e-05, 110910.11282103], [1517240220000, 5.289e-05, 5.291e-05, 5.287e-05, 5.287e-05, 89981.12539428], [1517240280000, 5.29e-05, 5.29e-05, 5.287e-05, 5.289e-05, 18427.05650261], [1517240340000, 5.289e-05, 5.29e-05, 5.289e-05, 5.289e-05, 16790.37690063], [1517240400000, 5.29e-05, 5.29e-05, 5.289e-05, 5.289e-05, 49834.97553822], [1517240460000, 5.29e-05, 5.29e-05, 5.287e-05, 5.287e-05, 17721.03868659], [1517240520000, 5.29e-05, 5.293e-05, 5.288e-05, 5.29e-05, 37992.58092921], [1517240580000, 5.29e-05, 5.293e-05, 5.29e-05, 5.293e-05, 23452.03847722], [1517240640000, 5.292e-05, 5.294e-05, 5.29e-05, 5.294e-05, 91229.64638012], [1517240700000, 5.294e-05, 5.299e-05, 5.293e-05, 5.293e-05, 29503.08153881], [1517240760000, 5.293e-05, 5.299e-05, 5.293e-05, 5.294e-05, 22039.26848064], [1517240820000, 5.294e-05, 5.299e-05, 5.293e-05, 5.296e-05, 16582.6382141], [1517240880000, 5.296e-05, 5.298e-05, 5.295e-05, 5.295e-05, 7874.56193384], [1517240940000, 5.294e-05, 5.295e-05, 5.293e-05, 5.293e-05, 13402.25924006], [1517241000000, 5.293e-05, 5.299e-05, 5.293e-05, 5.299e-05, 34472.65021368], [1517241060000, 5.299e-05, 5.3e-05, 5.293e-05, 5.295e-05, 14323.18041185], [1517241120000, 5.299e-05, 5.3e-05, 5.295e-05, 5.298e-05, 17683.12036805], [1517241180000, 5.297e-05, 5.3e-05, 5.297e-05, 5.3e-05, 35345.13462711], [1517241240000, 5.3e-05, 5.3e-05, 5.299e-05, 5.299e-05, 2123.65092758], [1517241300000, 5.299e-05, 5.3e-05, 5.299e-05, 5.3e-05, 29731.14785137], [1517241360000, 5.299e-05, 5.299e-05, 5.299e-05, 5.299e-05, 11098.57069327], [1517241420000, 5.299e-05, 5.3e-05, 5.299e-05, 5.299e-05, 4346.81917201], [1517241480000, 5.3e-05, 5.3e-05, 5.299e-05, 5.299e-05, 14482.89844284], [1517241540000, 5.299e-05, 5.299e-05, 5.299e-05, 5.299e-05, 30908.35293201], [1517241600000, 5.299e-05, 5.3e-05, 5.295e-05, 5.295e-05, 8503.51111804], [1517241660000, 5.295e-05, 5.3e-05, 5.294e-05, 5.294e-05, 29333.66141926], [1517241720000, 5.295e-05, 5.3e-05, 5.293e-05, 5.295e-05, 46311.24026351], [1517241780000, 5.293e-05, 5.293e-05, 5.293e-05, 5.293e-05, 2257.14230711], [1517241840000, 5.293e-05, 5.293e-05, 5.291e-05, 5.291e-05, 1671.56094548], [1517241900000, 5.291e-05, 5.293e-05, 5.291e-05, 5.293e-05, 4267.43187282], [1517241960000, 5.291e-05, 5.3e-05, 5.28e-05, 5.28e-05, 64920.97272538], [1517242020000, 5.281e-05, 5.3e-05, 5.28e-05, 5.281e-05, 60627.4047204], [1517242080000, 5.281e-05, 5.299e-05, 5.278e-05, 5.288e-05, 23260.18554237], [1517242140000, 5.298e-05, 5.298e-05, 5.288e-05, 5.297e-05, 3807.54062319], [1517242200000, 5.288e-05, 5.288e-05, 5.288e-05, 5.288e-05, 15367.69604318], [1517242260000, 5.284e-05, 5.288e-05, 5.284e-05, 5.288e-05, 6660.01754851], [1517242320000, 5.285e-05, 5.288e-05, 5.284e-05, 5.287e-05, 1901.92386534], [1517242380000, 5.287e-05, 5.288e-05, 5.287e-05, 5.288e-05, 15836.16570492], [1517242440000, 5.29e-05, 5.293e-05, 5.287e-05, 5.287e-05, 35743.5175056], [1517242500000, 5.287e-05, 5.293e-05, 5.278e-05, 5.288e-05, 23748.78161884], [1517242560000, 5.292e-05, 5.292e-05, 5.288e-05, 5.288e-05, 6853.37111916], [1517242620000, 5.289e-05, 5.289e-05, 5.285e-05, 5.285e-05, 2342.32212111], [1517242680000, 5.288e-05, 5.288e-05, 5.285e-05, 5.286e-05, 501.93113179], [1517242740000, 5.286e-05, 5.297e-05, 5.285e-05, 5.297e-05, 26750.76606651], [1517242800000, 5.297e-05, 5.298e-05, 5.275e-05, 5.278e-05, 72285.54464652], [1517242860000, 5.278e-05, 5.296e-05, 5.278e-05, 5.296e-05, 30948.62662519], [1517242920000, 5.295e-05, 5.298e-05, 5.294e-05, 5.294e-05, 14319.88638611], [1517242980000, 5.296e-05, 5.297e-05, 5.294e-05, 5.296e-05, 12937.70836164], [1517243040000, 5.295e-05, 5.296e-05, 5.294e-05, 5.295e-05, 2805.4915721], [1517243100000, 5.294e-05, 5.295e-05, 5.294e-05, 5.295e-05, 8860.50562983], [1517243160000, 5.295e-05, 5.296e-05, 5.278e-05, 5.281e-05, 27115.47464339], [1517243220000, 5.28e-05, 5.281e-05, 5.279e-05, 5.281e-05, 2654.23839222], [1517243280000, 5.281e-05, 5.295e-05, 5.281e-05, 5.282e-05, 9970.5787433], [1517243340000, 5.282e-05, 5.295e-05, 5.281e-05, 5.285e-05, 9813.39519228], [1517243400000, 5.287e-05, 5.295e-05, 5.287e-05, 5.288e-05, 8544.0026018], [1517243460000, 5.295e-05, 5.295e-05, 5.288e-05, 5.294e-05, 5017.90653195], [1517243520000, 5.295e-05, 5.298e-05, 5.278e-05, 5.294e-05, 57480.2785224], [1517243580000, 5.297e-05, 5.297e-05, 5.29e-05, 5.29e-05, 3115.96533699], [1517243640000, 5.29e-05, 5.297e-05, 5.281e-05, 5.281e-05, 3666.5564488], [1517243700000, 5.294e-05, 5.294e-05, 5.294e-05, 5.294e-05, 352.74235812], [1517243760000, 5.295e-05, 5.296e-05, 5.295e-05, 5.295e-05, 4723.32728774], [1517243820000, 5.295e-05, 5.295e-05, 5.294e-05, 5.295e-05, 15779.4355533], [1517243880000, 5.295e-05, 5.296e-05, 5.283e-05, 5.283e-05, 5849.39096041], [1517243940000, 5.293e-05, 5.293e-05, 5.284e-05, 5.284e-05, 1400.58753367], [1517244000000, 5.284e-05, 5.292e-05, 5.284e-05, 5.292e-05, 17999.82399054], [1517244060000, 5.286e-05, 5.286e-05, 5.283e-05, 5.283e-05, 5251.90408648], [1517244120000, 5.286e-05, 5.292e-05, 5.284e-05, 5.292e-05, 4150.63841388], [1517244180000, 5.292e-05, 5.292e-05, 5.277e-05, 5.287e-05, 29158.328619], [1517244240000, 5.287e-05, 5.291e-05, 5.287e-05, 5.291e-05, 41.69030659], [1517244300000, 5.292e-05, 5.292e-05, 5.291e-05, 5.291e-05, 8832.87752677], [1517244360000, 5.291e-05, 5.291e-05, 5.287e-05, 5.287e-05, 1508.45117092], [1517244420000, 5.287e-05, 5.288e-05, 5.287e-05, 5.288e-05, 3093.91811617], [1517244480000, 5.287e-05, 5.287e-05, 5.278e-05, 5.286e-05, 7197.04099204], [1517244540000, 5.286e-05, 5.287e-05, 5.278e-05, 5.278e-05, 9217.28673573], [1517244600000, 5.281e-05, 5.29e-05, 5.278e-05, 5.278e-05, 12141.43024926], [1517244660000, 5.279e-05, 5.29e-05, 5.278e-05, 5.278e-05, 44533.67089803], [1517244720000, 5.289e-05, 5.289e-05, 5.273e-05, 5.273e-05, 11477.35029909], [1517244780000, 5.275e-05, 5.29e-05, 5.275e-05, 5.28e-05, 4830.10629626], [1517244840000, 5.278e-05, 5.28e-05, 5.276e-05, 5.276e-05, 13280.11816065], [1517244900000, 5.276e-05, 5.29e-05, 5.276e-05, 5.29e-05, 1967.07706544], [1517244960000, 5.277e-05, 5.29e-05, 5.276e-05, 5.277e-05, 2026.76226745], [1517245020000, 5.276e-05, 5.277e-05, 5.275e-05, 5.275e-05, 20655.86975095], [1517245080000, 5.275e-05, 5.277e-05, 5.271e-05, 5.272e-05, 38325.84244926], [1517245140000, 5.271e-05, 5.287e-05, 5.271e-05, 5.273e-05, 7938.08447502], [1517245200000, 5.273e-05, 5.274e-05, 5.273e-05, 5.274e-05, 654.71029827], [1517245260000, 5.276e-05, 5.276e-05, 5.273e-05, 5.273e-05, 2557.15390286], [1517245320000, 5.273e-05, 5.274e-05, 5.271e-05, 5.273e-05, 427.6309706], [1517245380000, 5.274e-05, 5.274e-05, 5.271e-05, 5.272e-05, 21582.95936637], [1517245440000, 5.273e-05, 5.274e-05, 5.273e-05, 5.274e-05, 13464.7252769], [1517245500000, 5.279e-05, 5.286e-05, 5.274e-05, 5.274e-05, 14982.70417765], [1517245560000, 5.277e-05, 5.288e-05, 5.274e-05, 5.274e-05, 9509.35751974], [1517245620000, 5.274e-05, 5.274e-05, 5.271e-05, 5.273e-05, 14166.82092816], [1517245680000, 5.272e-05, 5.272e-05, 5.27e-05, 5.271e-05, 6303.57524569], [1517245740000, 5.271e-05, 5.272e-05, 5.27e-05, 5.27e-05, 19611.02515905], [1517245800000, 5.271e-05, 5.271e-05, 5.27e-05, 5.27e-05, 17835.03806569], [1517245860000, 5.27e-05, 5.272e-05, 5.27e-05, 5.272e-05, 17845.49739445], [1517245920000, 5.272e-05, 5.274e-05, 5.27e-05, 5.273e-05, 14562.65871236], [1517245980000, 5.273e-05, 5.273e-05, 5.271e-05, 5.271e-05, 1385.17847972], [1517246040000, 5.271e-05, 5.271e-05, 5.27e-05, 5.27e-05, 7168.33610383], [1517246100000, 5.271e-05, 5.271e-05, 5.267e-05, 5.271e-05, 18736.3988146], [1517246160000, 5.271e-05, 5.271e-05, 5.263e-05, 5.263e-05, 6616.92998473], [1517246220000, 5.263e-05, 5.266e-05, 5.262e-05, 5.265e-05, 13164.13573417], [1517246280000, 5.264e-05, 5.265e-05, 5.263e-05, 5.263e-05, 3383.92078055], [1517246340000, 5.265e-05, 5.265e-05, 5.263e-05, 5.264e-05, 2292.96130963], [1517246400000, 5.264e-05, 5.264e-05, 5.264e-05, 5.264e-05, 1385.07006968], [1517246460000, 5.264e-05, 5.265e-05, 5.262e-05, 5.262e-05, 13585.57142441], [1517246520000, 5.262e-05, 5.271e-05, 5.262e-05, 5.27e-05, 13485.81884978], [1517246580000, 5.27e-05, 5.271e-05, 5.262e-05, 5.271e-05, 15153.28578321], [1517246640000, 5.266e-05, 5.271e-05, 5.266e-05, 5.271e-05, 27956.13637988], [1517246700000, 5.271e-05, 5.279e-05, 5.266e-05, 5.279e-05, 38012.07974135], [1517246760000, 5.278e-05, 5.284e-05, 5.266e-05, 5.284e-05, 30249.79826277], [1517246820000, 5.273e-05, 5.287e-05, 5.273e-05, 5.287e-05, 27147.53298318], [1517246880000, 5.285e-05, 5.288e-05, 5.285e-05, 5.285e-05, 8920.50862059], [1517246940000, 5.288e-05, 5.288e-05, 5.277e-05, 5.28e-05, 13072.60993973], [1517247000000, 5.285e-05, 5.285e-05, 5.28e-05, 5.282e-05, 1420.31395518], [1517247060000, 5.282e-05, 5.285e-05, 5.277e-05, 5.277e-05, 4192.47296246], [1517247120000, 5.277e-05, 5.277e-05, 5.277e-05, 5.277e-05, 41.78510518], [1517247180000, 5.282e-05, 5.282e-05, 5.27e-05, 5.27e-05, 8850.00139474], [1517247240000, 5.265e-05, 5.27e-05, 5.265e-05, 5.27e-05, 20147.86219065], [1517247300000, 5.27e-05, 5.27e-05, 5.266e-05, 5.27e-05, 6947.69935907], [1517247360000, 5.27e-05, 5.285e-05, 5.27e-05, 5.285e-05, 6075.47196204], [1517247420000, 5.285e-05, 5.285e-05, 5.278e-05, 5.285e-05, 3250.94295773], [1517247480000, 5.279e-05, 5.285e-05, 5.279e-05, 5.28e-05, 928.12708215], [1517247540000, 5.281e-05, 5.285e-05, 5.28e-05, 5.28e-05, 6142.99604167], [1517247600000, 5.285e-05, 5.287e-05, 5.285e-05, 5.287e-05, 12540.22004], [1517247660000, 5.287e-05, 5.287e-05, 5.286e-05, 5.286e-05, 6153.03054178], [1517247720000, 5.287e-05, 5.287e-05, 5.27e-05, 5.27e-05, 51081.99098832], [1517247780000, 5.27e-05, 5.285e-05, 5.27e-05, 5.27e-05, 12409.83298611], [1517247840000, 5.284e-05, 5.284e-05, 5.27e-05, 5.27e-05, 55.99910302], [1517247900000, 5.267e-05, 5.27e-05, 5.267e-05, 5.27e-05, 2916.28531741], [1517247960000, 5.272e-05, 5.274e-05, 5.27e-05, 5.273e-05, 6969.75584927], [1517248020000, 5.28e-05, 5.284e-05, 5.272e-05, 5.272e-05, 39785.0], [1517248080000, 5.28e-05, 5.284e-05, 5.273e-05, 5.273e-05, 21477.42371675], [1517248140000, 5.273e-05, 5.273e-05, 5.265e-05, 5.265e-05, 31643.92531989], [1517248200000, 5.265e-05, 5.271e-05, 5.265e-05, 5.27e-05, 23580.07156795], [1517248260000, 5.27e-05, 5.273e-05, 5.261e-05, 5.27e-05, 20337.72492168], [1517248320000, 5.263e-05, 5.27e-05, 5.263e-05, 5.265e-05, 22774.00586157], [1517248380000, 5.265e-05, 5.265e-05, 5.261e-05, 5.265e-05, 7015.82305719], [1517248440000, 5.266e-05, 5.273e-05, 5.266e-05, 5.273e-05, 1925.69323749], [1517248500000, 5.273e-05, 5.281e-05, 5.273e-05, 5.273e-05, 12265.33537977], [1517248560000, 5.273e-05, 5.273e-05, 5.269e-05, 5.269e-05, 4009.15039965], [1517248620000, 5.265e-05, 5.269e-05, 5.265e-05, 5.265e-05, 7143.66012402], [1517248680000, 5.265e-05, 5.269e-05, 5.265e-05, 5.269e-05, 2501.16991125], [1517248740000, 5.269e-05, 5.269e-05, 5.265e-05, 5.269e-05, 2986.30619659], [1517248800000, 5.28e-05, 5.281e-05, 5.266e-05, 5.269e-05, 5405.29898589], [1517248860000, 5.269e-05, 5.279e-05, 5.265e-05, 5.265e-05, 17859.85387325], [1517248920000, 5.265e-05, 5.265e-05, 5.265e-05, 5.265e-05, 10486.51325895], [1517248980000, 5.267e-05, 5.278e-05, 5.266e-05, 5.278e-05, 41149.95193905], [1517249040000, 5.278e-05, 5.279e-05, 5.278e-05, 5.278e-05, 6480.48392089], [1517249100000, 5.278e-05, 5.279e-05, 5.278e-05, 5.278e-05, 8495.76847052], [1517249160000, 5.278e-05, 5.279e-05, 5.278e-05, 5.279e-05, 4643.33467472], [1517249220000, 5.278e-05, 5.282e-05, 5.278e-05, 5.282e-05, 17218.24929245], [1517249280000, 5.282e-05, 5.284e-05, 5.271e-05, 5.271e-05, 53395.46307561], [1517249340000, 5.284e-05, 5.284e-05, 5.272e-05, 5.272e-05, 6783.80561659], [1517249400000, 5.273e-05, 5.283e-05, 5.262e-05, 5.272e-05, 14647.23469215], [1517249460000, 5.272e-05, 5.272e-05, 5.265e-05, 5.272e-05, 2596.64192924], [1517249520000, 5.268e-05, 5.283e-05, 5.268e-05, 5.283e-05, 8431.07740252], [1517249580000, 5.268e-05, 5.28e-05, 5.268e-05, 5.268e-05, 330.29608577], [1517249640000, 5.268e-05, 5.278e-05, 5.263e-05, 5.278e-05, 14197.28819512], [1517249700000, 5.263e-05, 5.277e-05, 5.263e-05, 5.268e-05, 410.039842], [1517249760000, 5.277e-05, 5.278e-05, 5.268e-05, 5.27e-05, 2618.6477807], [1517249820000, 5.27e-05, 5.276e-05, 5.27e-05, 5.27e-05, 2981.07685668], [1517249880000, 5.27e-05, 5.27e-05, 5.268e-05, 5.27e-05, 453.99825958], [1517249940000, 5.27e-05, 5.271e-05, 5.269e-05, 5.27e-05, 14368.66502326], [1517250000000, 5.27e-05, 5.271e-05, 5.27e-05, 5.27e-05, 2660.47738102], [1517250060000, 5.27e-05, 5.271e-05, 5.27e-05, 5.27e-05, 11108.13068452], [1517250120000, 5.271e-05, 5.271e-05, 5.27e-05, 5.271e-05, 12555.76564282], [1517250180000, 5.271e-05, 5.271e-05, 5.27e-05, 5.271e-05, 22670.58885448], [1517250240000, 5.271e-05, 5.271e-05, 5.27e-05, 5.271e-05, 29045.21247136], [1517250300000, 5.271e-05, 5.277e-05, 5.271e-05, 5.272e-05, 49525.98009132], [1517250360000, 5.277e-05, 5.279e-05, 5.274e-05, 5.278e-05, 25083.21330451], [1517250420000, 5.278e-05, 5.284e-05, 5.278e-05, 5.279e-05, 14401.53526973], [1517250480000, 5.283e-05, 5.283e-05, 5.27e-05, 5.278e-05, 24137.94333436], [1517250540000, 5.272e-05, 5.278e-05, 5.272e-05, 5.278e-05, 6239.33661765], [1517250600000, 5.272e-05, 5.284e-05, 5.272e-05, 5.284e-05, 10708.82649003], [1517250660000, 5.272e-05, 5.272e-05, 5.27e-05, 5.272e-05, 46005.67723982], [1517250720000, 5.27e-05, 5.27e-05, 5.269e-05, 5.269e-05, 16303.80858527], [1517250780000, 5.269e-05, 5.272e-05, 5.261e-05, 5.272e-05, 10180.57529836], [1517250840000, 5.278e-05, 5.278e-05, 5.274e-05, 5.278e-05, 522.03325403], [1517250900000, 5.278e-05, 5.283e-05, 5.274e-05, 5.278e-05, 2163.53459834], [1517250960000, 5.274e-05, 5.278e-05, 5.274e-05, 5.278e-05, 1286.41912161], [1517251020000, 5.278e-05, 5.282e-05, 5.278e-05, 5.282e-05, 833.09096712], [1517251080000, 5.278e-05, 5.283e-05, 5.278e-05, 5.278e-05, 5620.3397947], [1517251140000, 5.278e-05, 5.284e-05, 5.278e-05, 5.282e-05, 19611.19735691], [1517251200000, 5.283e-05, 5.283e-05, 5.275e-05, 5.282e-05, 9119.90290332], [1517251260000, 5.282e-05, 5.283e-05, 5.274e-05, 5.274e-05, 6676.49721497], [1517251320000, 5.274e-05, 5.275e-05, 5.274e-05, 5.275e-05, 9459.60226776], [1517251380000, 5.275e-05, 5.275e-05, 5.274e-05, 5.275e-05, 28630.30743557], [1517251440000, 5.275e-05, 5.275e-05, 5.274e-05, 5.275e-05, 1541.88560039], [1517251500000, 5.28e-05, 5.283e-05, 5.275e-05, 5.275e-05, 10080.2122251], [1517251560000, 5.282e-05, 5.283e-05, 5.275e-05, 5.275e-05, 2736.46317726], [1517251620000, 5.276e-05, 5.283e-05, 5.275e-05, 5.275e-05, 2141.05854358], [1517251680000, 5.275e-05, 5.28e-05, 5.275e-05, 5.28e-05, 65.16252078], [1517251740000, 5.28e-05, 5.283e-05, 5.276e-05, 5.276e-05, 10826.29291166], [1517251800000, 5.276e-05, 5.282e-05, 5.276e-05, 5.282e-05, 1054.08638102], [1517251860000, 5.282e-05, 5.283e-05, 5.282e-05, 5.282e-05, 4336.81416751], [1517251920000, 5.282e-05, 5.284e-05, 5.281e-05, 5.282e-05, 8235.69634303], [1517251980000, 5.281e-05, 5.284e-05, 5.281e-05, 5.283e-05, 6727.77928336], [1517252040000, 5.281e-05, 5.285e-05, 5.276e-05, 5.285e-05, 50322.17656581], [1517252100000, 5.277e-05, 5.288e-05, 5.277e-05, 5.288e-05, 80457.85833992], [1517252160000, 5.288e-05, 5.295e-05, 5.278e-05, 5.295e-05, 97463.15247313], [1517252220000, 5.295e-05, 5.296e-05, 5.278e-05, 5.293e-05, 10447.92058791], [1517252280000, 5.293e-05, 5.294e-05, 5.279e-05, 5.29e-05, 1434.64113679], [1517252340000, 5.29e-05, 5.296e-05, 5.281e-05, 5.285e-05, 4928.84050016], [1517252400000, 5.282e-05, 5.285e-05, 5.282e-05, 5.285e-05, 6304.27377613], [1517252460000, 5.29e-05, 5.3e-05, 5.282e-05, 5.3e-05, 56461.87218425], [1517252520000, 5.284e-05, 5.29e-05, 5.278e-05, 5.29e-05, 15145.22338916], [1517252580000, 5.29e-05, 5.298e-05, 5.281e-05, 5.283e-05, 14754.53832483], [1517252640000, 5.298e-05, 5.3e-05, 5.283e-05, 5.283e-05, 11531.05942061], [1517252700000, 5.299e-05, 5.3e-05, 5.282e-05, 5.299e-05, 12375.05875714], [1517252760000, 5.283e-05, 5.283e-05, 5.283e-05, 5.283e-05, 173.317469], [1517252820000, 5.283e-05, 5.299e-05, 5.283e-05, 5.299e-05, 1376.45927337], [1517252880000, 5.299e-05, 5.3e-05, 5.285e-05, 5.285e-05, 9837.68959984], [1517252940000, 5.285e-05, 5.3e-05, 5.251e-05, 5.298e-05, 102981.18664965], [1517253000000, 5.296e-05, 5.298e-05, 5.246e-05, 5.259e-05, 114707.33080007], [1517253060000, 5.267e-05, 5.295e-05, 5.258e-05, 5.294e-05, 7427.88099388], [1517253120000, 5.29e-05, 5.292e-05, 5.265e-05, 5.292e-05, 383.793831], [1517253180000, 5.291e-05, 5.291e-05, 5.29e-05, 5.291e-05, 2531.754334], [1517253240000, 5.291e-05, 5.294e-05, 5.291e-05, 5.294e-05, 4754.47987248], [1517253300000, 5.292e-05, 5.294e-05, 5.292e-05, 5.292e-05, 7125.36296318], [1517253360000, 5.291e-05, 5.292e-05, 5.29e-05, 5.29e-05, 4458.40625591], [1517253420000, 5.29e-05, 5.29e-05, 5.274e-05, 5.274e-05, 6527.64555049], [1517253480000, 5.274e-05, 5.274e-05, 5.274e-05, 5.274e-05, 716.05762656], [1517253540000, 5.269e-05, 5.274e-05, 5.269e-05, 5.27e-05, 15586.62110666], [1517253600000, 5.285e-05, 5.285e-05, 5.271e-05, 5.271e-05, 17141.51164891], [1517253660000, 5.271e-05, 5.28e-05, 5.271e-05, 5.274e-05, 4603.35123724], [1517253720000, 5.273e-05, 5.28e-05, 5.273e-05, 5.274e-05, 16744.2687344], [1517253780000, 5.274e-05, 5.28e-05, 5.273e-05, 5.274e-05, 6381.1259492], [1517253840000, 5.276e-05, 5.276e-05, 5.274e-05, 5.276e-05, 647.03729819], [1517253900000, 5.276e-05, 5.276e-05, 5.199e-05, 5.209e-05, 760263.54839171], [1517253960000, 5.209e-05, 5.274e-05, 5.202e-05, 5.274e-05, 29896.93096981], [1517254020000, 5.263e-05, 5.276e-05, 5.263e-05, 5.276e-05, 7879.77153185], [1517254080000, 5.269e-05, 5.276e-05, 5.263e-05, 5.263e-05, 4185.98920564], [1517254140000, 5.276e-05, 5.276e-05, 5.217e-05, 5.262e-05, 95740.61655929], [1517254200000, 5.262e-05, 5.262e-05, 5.242e-05, 5.242e-05, 1669.72574883], [1517254260000, 5.262e-05, 5.263e-05, 5.251e-05, 5.251e-05, 2903.654345], [1517254320000, 5.263e-05, 5.263e-05, 5.251e-05, 5.262e-05, 14009.10854471], [1517254380000, 5.251e-05, 5.263e-05, 5.244e-05, 5.244e-05, 14299.78265637], [1517254440000, 5.263e-05, 5.263e-05, 5.244e-05, 5.263e-05, 16702.41576392], [1517254500000, 5.263e-05, 5.269e-05, 5.248e-05, 5.252e-05, 48778.55432846], [1517254560000, 5.268e-05, 5.268e-05, 5.256e-05, 5.26e-05, 67207.31317337], [1517254620000, 5.26e-05, 5.268e-05, 5.26e-05, 5.268e-05, 6401.54074335], [1517254680000, 5.268e-05, 5.269e-05, 5.265e-05, 5.267e-05, 12826.24826031], [1517254740000, 5.269e-05, 5.279e-05, 5.269e-05, 5.279e-05, 15103.55132759], [1517254800000, 5.276e-05, 5.279e-05, 5.267e-05, 5.267e-05, 13006.92454344], [1517254860000, 5.267e-05, 5.275e-05, 5.266e-05, 5.27e-05, 5717.54750383], [1517254920000, 5.27e-05, 5.27e-05, 5.267e-05, 5.267e-05, 13182.01091003], [1517254980000, 5.27e-05, 5.275e-05, 5.267e-05, 5.275e-05, 23333.68352323], [1517255040000, 5.272e-05, 5.275e-05, 5.27e-05, 5.274e-05, 5159.49617979], [1517255100000, 5.275e-05, 5.279e-05, 5.268e-05, 5.269e-05, 13262.60578363], [1517255160000, 5.27e-05, 5.279e-05, 5.266e-05, 5.279e-05, 34286.95739045], [1517255220000, 5.269e-05, 5.278e-05, 5.269e-05, 5.278e-05, 4157.5837528], [1517255280000, 5.269e-05, 5.279e-05, 5.267e-05, 5.279e-05, 24168.10902058], [1517255340000, 5.278e-05, 5.279e-05, 5.267e-05, 5.279e-05, 4363.49795602], [1517255400000, 5.279e-05, 5.279e-05, 5.268e-05, 5.268e-05, 1748.15537854], [1517255460000, 5.268e-05, 5.279e-05, 5.268e-05, 5.276e-05, 7824.8210307], [1517255520000, 5.276e-05, 5.279e-05, 5.272e-05, 5.272e-05, 3150.70213649], [1517255580000, 5.272e-05, 5.276e-05, 5.272e-05, 5.273e-05, 19567.01585471], [1517255640000, 5.279e-05, 5.279e-05, 5.274e-05, 5.276e-05, 18553.68397168], [1517255700000, 5.276e-05, 5.278e-05, 5.274e-05, 5.276e-05, 20496.20685463], [1517255760000, 5.276e-05, 5.278e-05, 5.275e-05, 5.275e-05, 17423.43544242], [1517255820000, 5.276e-05, 5.28e-05, 5.275e-05, 5.275e-05, 16717.14570525], [1517255880000, 5.276e-05, 5.285e-05, 5.276e-05, 5.285e-05, 9554.54902632], [1517255940000, 5.285e-05, 5.289e-05, 5.275e-05, 5.275e-05, 11479.8244283], [1517256000000, 5.289e-05, 5.289e-05, 5.275e-05, 5.276e-05, 9842.11119805], [1517256060000, 5.289e-05, 5.291e-05, 5.276e-05, 5.278e-05, 18374.59138972], [1517256120000, 5.279e-05, 5.288e-05, 5.279e-05, 5.288e-05, 12226.88873614], [1517256180000, 5.28e-05, 5.286e-05, 5.279e-05, 5.286e-05, 5624.75638166], [1517256240000, 5.286e-05, 5.286e-05, 5.281e-05, 5.286e-05, 4955.41593558], [1517256300000, 5.282e-05, 5.287e-05, 5.282e-05, 5.287e-05, 18877.37794574], [1517256360000, 5.287e-05, 5.291e-05, 5.287e-05, 5.289e-05, 4462.61961697], [1517256420000, 5.289e-05, 5.29e-05, 5.289e-05, 5.289e-05, 22004.47881437], [1517256480000, 5.289e-05, 5.291e-05, 5.289e-05, 5.29e-05, 10262.85446925], [1517256540000, 5.29e-05, 5.292e-05, 5.286e-05, 5.286e-05, 35904.81504851], [1517256600000, 5.286e-05, 5.291e-05, 5.286e-05, 5.286e-05, 4218.26589669], [1517256660000, 5.291e-05, 5.291e-05, 5.286e-05, 5.289e-05, 6661.95454244], [1517256720000, 5.29e-05, 5.291e-05, 5.289e-05, 5.289e-05, 2484.98501491], [1517256780000, 5.291e-05, 5.291e-05, 5.289e-05, 5.289e-05, 1589.54517821], [1517256840000, 5.29e-05, 5.291e-05, 5.289e-05, 5.289e-05, 570.9857506], [1517256900000, 5.289e-05, 5.289e-05, 5.289e-05, 5.289e-05, 2865.78539744], [1517256960000, 5.289e-05, 5.29e-05, 5.289e-05, 5.289e-05, 219.64523784], [1517257020000, 5.29e-05, 5.292e-05, 5.29e-05, 5.291e-05, 5673.86618464], [1517257080000, 5.292e-05, 5.292e-05, 5.291e-05, 5.291e-05, 9043.53589884], [1517257140000, 5.291e-05, 5.292e-05, 5.291e-05, 5.291e-05, 2180.33656755], [1517257200000, 5.292e-05, 5.292e-05, 5.292e-05, 5.292e-05, 2050.56972073], [1517257260000, 5.291e-05, 5.292e-05, 5.291e-05, 5.292e-05, 5905.10986153], [1517257320000, 5.291e-05, 5.292e-05, 5.291e-05, 5.292e-05, 6029.70635465], [1517257380000, 5.291e-05, 5.292e-05, 5.291e-05, 5.292e-05, 1306.13272252], [1517257440000, 5.292e-05, 5.292e-05, 5.291e-05, 5.291e-05, 5117.10392557], [1517257500000, 5.292e-05, 5.294e-05, 5.291e-05, 5.291e-05, 16420.74723019], [1517257560000, 5.292e-05, 5.292e-05, 5.291e-05, 5.292e-05, 5775.69385427], [1517257620000, 5.291e-05, 5.292e-05, 5.291e-05, 5.291e-05, 41284.18130699], [1517257680000, 5.291e-05, 5.292e-05, 5.291e-05, 5.291e-05, 9920.70844716], [1517257740000, 5.291e-05, 5.291e-05, 5.291e-05, 5.291e-05, 19169.73587756], [1517257800000, 5.291e-05, 5.292e-05, 5.291e-05, 5.292e-05, 4785.7528745], [1517257860000, 5.291e-05, 5.292e-05, 5.291e-05, 5.291e-05, 4661.05509844], [1517257920000, 5.291e-05, 5.292e-05, 5.291e-05, 5.291e-05, 3141.97554468], [1517257980000, 5.291e-05, 5.292e-05, 5.291e-05, 5.292e-05, 3809.58370421], [1517258040000, 5.291e-05, 5.292e-05, 5.291e-05, 5.292e-05, 4628.48719984], [1517258100000, 5.292e-05, 5.292e-05, 5.291e-05, 5.292e-05, 25748.73105385], [1517258160000, 5.292e-05, 5.292e-05, 5.291e-05, 5.291e-05, 26147.03307738], [1517258220000, 5.291e-05, 5.291e-05, 5.291e-05, 5.291e-05, 591.7174584], [1517258280000, 5.291e-05, 5.292e-05, 5.291e-05, 5.292e-05, 2288.08923467], [1517258340000, 5.292e-05, 5.292e-05, 5.292e-05, 5.292e-05, 2098.46380235], [1517258400000, 5.292e-05, 5.292e-05, 5.292e-05, 5.292e-05, 15407.55588579], [1517258460000, 5.292e-05, 5.292e-05, 5.291e-05, 5.292e-05, 13273.8327777], [1517258520000, 5.291e-05, 5.292e-05, 5.291e-05, 5.292e-05, 3086.89817564], [1517258580000, 5.292e-05, 5.292e-05, 5.291e-05, 5.291e-05, 13161.54142578], [1517258640000, 5.292e-05, 5.292e-05, 5.291e-05, 5.291e-05, 4589.98903671], [1517258700000, 5.291e-05, 5.292e-05, 5.29e-05, 5.292e-05, 4739.38467851], [1517258760000, 5.291e-05, 5.291e-05, 5.289e-05, 5.291e-05, 3450.22544034], [1517258820000, 5.289e-05, 5.289e-05, 5.285e-05, 5.285e-05, 771.10447793], [1517258880000, 5.285e-05, 5.286e-05, 5.281e-05, 5.281e-05, 7470.40913036], [1517258940000, 5.286e-05, 5.291e-05, 5.286e-05, 5.286e-05, 842.94395094], [1517259000000, 5.286e-05, 5.29e-05, 5.286e-05, 5.29e-05, 913.02915876], [1517259060000, 5.29e-05, 5.291e-05, 5.286e-05, 5.291e-05, 7004.38685588], [1517259120000, 5.289e-05, 5.291e-05, 5.286e-05, 5.287e-05, 3702.3841488], [1517259180000, 5.291e-05, 5.292e-05, 5.287e-05, 5.292e-05, 63878.8601804], [1517259240000, 5.287e-05, 5.291e-05, 5.287e-05, 5.291e-05, 1074.91389102], [1517259300000, 5.287e-05, 5.291e-05, 5.287e-05, 5.291e-05, 1931.59469552], [1517259360000, 5.29e-05, 5.29e-05, 5.287e-05, 5.29e-05, 1098.79738713], [1517259420000, 5.287e-05, 5.29e-05, 5.287e-05, 5.288e-05, 3244.47554099], [1517259480000, 5.29e-05, 5.292e-05, 5.287e-05, 5.292e-05, 17089.84424746], [1517259540000, 5.292e-05, 5.292e-05, 5.292e-05, 5.292e-05, 2221.55237461], [1517259600000, 5.291e-05, 5.292e-05, 5.29e-05, 5.292e-05, 1865.35331565], [1517259660000, 5.29e-05, 5.29e-05, 5.288e-05, 5.29e-05, 732.31612247], [1517259720000, 5.29e-05, 5.29e-05, 5.288e-05, 5.289e-05, 749.92542167], [1517259780000, 5.29e-05, 5.292e-05, 5.289e-05, 5.289e-05, 2216.95803196], [1517259840000, 5.291e-05, 5.291e-05, 5.287e-05, 5.287e-05, 1915.23267023], [1517259900000, 5.292e-05, 5.292e-05, 5.287e-05, 5.292e-05, 28042.56617415], [1517259960000, 5.292e-05, 5.292e-05, 5.291e-05, 5.292e-05, 707.6331763], [1517260020000, 5.292e-05, 5.292e-05, 5.287e-05, 5.288e-05, 40104.99550983], [1517260080000, 5.289e-05, 5.292e-05, 5.288e-05, 5.289e-05, 11925.97644697], [1517260140000, 5.292e-05, 5.292e-05, 5.29e-05, 5.292e-05, 56972.17043197], [1517260200000, 5.292e-05, 5.292e-05, 5.29e-05, 5.292e-05, 14161.15764103], [1517260260000, 5.291e-05, 5.292e-05, 5.291e-05, 5.292e-05, 164.27833536], [1517260320000, 5.292e-05, 5.292e-05, 5.291e-05, 5.292e-05, 1125.29731504], [1517260380000, 5.292e-05, 5.292e-05, 5.291e-05, 5.291e-05, 4340.08483993], [1517260440000, 5.291e-05, 5.292e-05, 5.281e-05, 5.281e-05, 12579.85163196], [1517260500000, 5.287e-05, 5.292e-05, 5.287e-05, 5.292e-05, 682.55218789], [1517260560000, 5.287e-05, 5.287e-05, 5.285e-05, 5.287e-05, 7776.37393047], [1517260620000, 5.285e-05, 5.292e-05, 5.285e-05, 5.285e-05, 12519.49083939], [1517260680000, 5.285e-05, 5.292e-05, 5.285e-05, 5.291e-05, 2476.46127767], [1517260740000, 5.285e-05, 5.292e-05, 5.285e-05, 5.292e-05, 23088.85368452], [1517260800000, 5.29e-05, 5.29e-05, 5.29e-05, 5.29e-05, 3870.10903511], [1517260860000, 5.29e-05, 5.29e-05, 5.282e-05, 5.282e-05, 240.15449927], [1517260920000, 5.282e-05, 5.29e-05, 5.281e-05, 5.282e-05, 4241.09631706], [1517260980000, 5.29e-05, 5.292e-05, 5.282e-05, 5.292e-05, 54859.61755939], [1517261040000, 5.29e-05, 5.29e-05, 5.289e-05, 5.29e-05, 3112.04471327], [1517261100000, 5.292e-05, 5.292e-05, 5.29e-05, 5.29e-05, 2595.73965735], [1517261160000, 5.291e-05, 5.291e-05, 5.29e-05, 5.291e-05, 2508.41259554], [1517261220000, 5.291e-05, 5.292e-05, 5.291e-05, 5.292e-05, 28247.43075226], [1517261280000, 5.292e-05, 5.292e-05, 5.291e-05, 5.292e-05, 14550.49826439], [1517261340000, 5.292e-05, 5.292e-05, 5.291e-05, 5.292e-05, 3602.55108132], [1517261400000, 5.292e-05, 5.292e-05, 5.29e-05, 5.29e-05, 149774.7462434], [1517261460000, 5.291e-05, 5.291e-05, 5.287e-05, 5.287e-05, 16548.27835638], [1517261520000, 5.29e-05, 5.29e-05, 5.282e-05, 5.282e-05, 11549.20834027], [1517261580000, 5.282e-05, 5.29e-05, 5.281e-05, 5.281e-05, 8111.29315773], [1517261640000, 5.29e-05, 5.29e-05, 5.28e-05, 5.285e-05, 7692.62446467], [1517261700000, 5.29e-05, 5.291e-05, 5.29e-05, 5.29e-05, 408.2453018], [1517261760000, 5.285e-05, 5.291e-05, 5.285e-05, 5.29e-05, 162.89114187], [1517261820000, 5.286e-05, 5.29e-05, 5.286e-05, 5.29e-05, 2805.1287956], [1517261880000, 5.29e-05, 5.29e-05, 5.289e-05, 5.29e-05, 5095.61040241], [1517261940000, 5.29e-05, 5.29e-05, 5.285e-05, 5.286e-05, 848.81065854], [1517262000000, 5.285e-05, 5.285e-05, 5.285e-05, 5.285e-05, 1002.28830016], [1517262060000, 5.282e-05, 5.291e-05, 5.282e-05, 5.291e-05, 16777.3080665], [1517262120000, 5.288e-05, 5.288e-05, 5.285e-05, 5.285e-05, 3393.05791912], [1517262180000, 5.285e-05, 5.288e-05, 5.282e-05, 5.288e-05, 8789.89270831], [1517262240000, 5.285e-05, 5.29e-05, 5.285e-05, 5.29e-05, 2324.78718437], [1517262300000, 5.293e-05, 5.298e-05, 5.293e-05, 5.298e-05, 5918.707808], [1517262360000, 5.298e-05, 5.298e-05, 5.297e-05, 5.297e-05, 1035.0771577], [1517262420000, 5.297e-05, 5.297e-05, 5.29e-05, 5.29e-05, 2317.30589648], [1517262480000, 5.29e-05, 5.29e-05, 5.29e-05, 5.29e-05, 61.65731098], [1517262540000, 5.29e-05, 5.29e-05, 5.279e-05, 5.288e-05, 60869.24304747], [1517262600000, 5.28e-05, 5.288e-05, 5.28e-05, 5.28e-05, 2836.62037963], [1517262660000, 5.28e-05, 5.28e-05, 5.28e-05, 5.28e-05, 21337.82211568], [1517262720000, 5.28e-05, 5.28e-05, 5.279e-05, 5.279e-05, 3351.54141172], [1517262780000, 5.279e-05, 5.28e-05, 5.279e-05, 5.279e-05, 4733.02722828], [1517262840000, 5.28e-05, 5.28e-05, 5.27e-05, 5.28e-05, 10238.33077862], [1517262900000, 5.28e-05, 5.29e-05, 5.28e-05, 5.29e-05, 3572.86384406], [1517262960000, 5.29e-05, 5.29e-05, 5.275e-05, 5.285e-05, 3201.77797783], [1517263020000, 5.285e-05, 5.29e-05, 5.285e-05, 5.285e-05, 10591.16840103], [1517263080000, 5.286e-05, 5.29e-05, 5.285e-05, 5.286e-05, 426.55960295], [1517263140000, 5.286e-05, 5.287e-05, 5.285e-05, 5.285e-05, 5429.73432748], [1517263200000, 5.286e-05, 5.286e-05, 5.286e-05, 5.286e-05, 2611.69497462], [1517263260000, 5.286e-05, 5.287e-05, 5.286e-05, 5.287e-05, 519.63708224], [1517263320000, 5.287e-05, 5.287e-05, 5.287e-05, 5.287e-05, 1806.77763204], [1517263380000, 5.287e-05, 5.294e-05, 5.287e-05, 5.294e-05, 2738.53120054], [1517263440000, 5.294e-05, 5.299e-05, 5.294e-05, 5.294e-05, 3167.27491772], [1517263500000, 5.299e-05, 5.3e-05, 5.294e-05, 5.294e-05, 13200.63237147], [1517263560000, 5.3e-05, 5.3e-05, 5.294e-05, 5.3e-05, 2244.03586114], [1517263620000, 5.295e-05, 5.299e-05, 5.295e-05, 5.299e-05, 3753.79172815], [1517263680000, 5.299e-05, 5.3e-05, 5.299e-05, 5.3e-05, 5504.08062908], [1517263740000, 5.299e-05, 5.3e-05, 5.295e-05, 5.295e-05, 9809.22794373], [1517263800000, 5.299e-05, 5.299e-05, 5.295e-05, 5.295e-05, 1719.41375787], [1517263860000, 5.298e-05, 5.301e-05, 5.295e-05, 5.301e-05, 12147.57325009], [1517263920000, 5.303e-05, 5.303e-05, 5.298e-05, 5.299e-05, 9863.31133025], [1517263980000, 5.3e-05, 5.31e-05, 5.3e-05, 5.3e-05, 21613.53115123], [1517264040000, 5.302e-05, 5.302e-05, 5.3e-05, 5.302e-05, 8702.89577026], [1517264100000, 5.302e-05, 5.302e-05, 5.3e-05, 5.302e-05, 16928.98611462], [1517264160000, 5.312e-05, 5.312e-05, 5.3e-05, 5.312e-05, 6237.7689111], [1517264220000, 5.312e-05, 5.312e-05, 5.3e-05, 5.301e-05, 10693.29418703], [1517264280000, 5.302e-05, 5.312e-05, 5.301e-05, 5.301e-05, 6333.62320097], [1517264340000, 5.312e-05, 5.312e-05, 5.301e-05, 5.312e-05, 15944.78515678], [1517264400000, 5.312e-05, 5.312e-05, 5.302e-05, 5.302e-05, 4312.65486415], [1517264460000, 5.303e-05, 5.312e-05, 5.302e-05, 5.303e-05, 8202.05795755], [1517264520000, 5.303e-05, 5.313e-05, 5.303e-05, 5.313e-05, 15464.85900934], [1517264580000, 5.313e-05, 5.313e-05, 5.307e-05, 5.313e-05, 4276.91649068], [1517264640000, 5.307e-05, 5.313e-05, 5.307e-05, 5.308e-05, 4539.41623061], [1517264700000, 5.309e-05, 5.312e-05, 5.308e-05, 5.308e-05, 20544.79961368], [1517264760000, 5.306e-05, 5.307e-05, 5.303e-05, 5.307e-05, 3546.18545719], [1517264820000, 5.309e-05, 5.312e-05, 5.307e-05, 5.312e-05, 74578.73135618], [1517264880000, 5.312e-05, 5.313e-05, 5.307e-05, 5.313e-05, 8974.68650291], [1517264940000, 5.315e-05, 5.315e-05, 5.314e-05, 5.315e-05, 9942.45214505], [1517265000000, 5.314e-05, 5.317e-05, 5.313e-05, 5.317e-05, 31649.4179743], [1517265060000, 5.317e-05, 5.317e-05, 5.313e-05, 5.313e-05, 23097.55485147], [1517265120000, 5.317e-05, 5.318e-05, 5.313e-05, 5.313e-05, 36660.06460539], [1517265180000, 5.313e-05, 5.318e-05, 5.295e-05, 5.298e-05, 31949.13510176], [1517265240000, 5.318e-05, 5.319e-05, 5.31e-05, 5.319e-05, 9767.40723055], [1517265300000, 5.319e-05, 5.32e-05, 5.319e-05, 5.319e-05, 26670.00941511], [1517265360000, 5.32e-05, 5.32e-05, 5.319e-05, 5.32e-05, 70921.02980223], [1517265420000, 5.321e-05, 5.324e-05, 5.319e-05, 5.319e-05, 64491.30807977], [1517265480000, 5.319e-05, 5.324e-05, 5.298e-05, 5.318e-05, 43204.33524374], [1517265540000, 5.316e-05, 5.318e-05, 5.298e-05, 5.318e-05, 2557.62200975], [1517265600000, 5.324e-05, 5.324e-05, 5.316e-05, 5.316e-05, 3904.28694399], [1517265660000, 5.318e-05, 5.318e-05, 5.298e-05, 5.298e-05, 11850.1200758], [1517265720000, 5.298e-05, 5.316e-05, 5.298e-05, 5.3e-05, 26566.27598539], [1517265780000, 5.299e-05, 5.299e-05, 5.294e-05, 5.294e-05, 12595.38130073], [1517265840000, 5.294e-05, 5.299e-05, 5.292e-05, 5.299e-05, 5489.02586552], [1517265900000, 5.299e-05, 5.3e-05, 5.299e-05, 5.299e-05, 19031.9841261], [1517265960000, 5.3e-05, 5.3e-05, 5.299e-05, 5.299e-05, 9496.94969638], [1517266020000, 5.299e-05, 5.299e-05, 5.28e-05, 5.28e-05, 26119.54045709], [1517266080000, 5.297e-05, 5.297e-05, 5.282e-05, 5.297e-05, 2216.82610047], [1517266140000, 5.297e-05, 5.297e-05, 5.285e-05, 5.285e-05, 5889.75057203], [1517266200000, 5.285e-05, 5.297e-05, 5.285e-05, 5.297e-05, 210.27634598], [1517266260000, 5.285e-05, 5.297e-05, 5.285e-05, 5.296e-05, 37706.49259066], [1517266320000, 5.286e-05, 5.3e-05, 5.286e-05, 5.297e-05, 20024.90242689], [1517266380000, 5.297e-05, 5.326e-05, 5.297e-05, 5.302e-05, 13680.70741288], [1517266440000, 5.302e-05, 5.326e-05, 5.301e-05, 5.326e-05, 5028.20588196], [1517266500000, 5.325e-05, 5.326e-05, 5.302e-05, 5.313e-05, 267.73794667], [1517266560000, 5.323e-05, 5.326e-05, 5.305e-05, 5.326e-05, 5628.15149077], [1517266620000, 5.326e-05, 5.326e-05, 5.305e-05, 5.326e-05, 7056.80507132], [1517266680000, 5.305e-05, 5.324e-05, 5.303e-05, 5.324e-05, 4927.570188], [1517266740000, 5.324e-05, 5.325e-05, 5.306e-05, 5.325e-05, 2402.52414031], [1517266800000, 5.325e-05, 5.325e-05, 5.304e-05, 5.305e-05, 11161.19813613], [1517266860000, 5.306e-05, 5.325e-05, 5.306e-05, 5.321e-05, 14750.20052313], [1517266920000, 5.306e-05, 5.321e-05, 5.304e-05, 5.304e-05, 22634.81602619], [1517266980000, 5.305e-05, 5.305e-05, 5.304e-05, 5.305e-05, 3097.32973498], [1517267040000, 5.304e-05, 5.305e-05, 5.304e-05, 5.305e-05, 8560.99455602], [1517267100000, 5.305e-05, 5.305e-05, 5.302e-05, 5.302e-05, 20754.7362742], [1517267160000, 5.3e-05, 5.3e-05, 5.3e-05, 5.3e-05, 7187.66113939], [1517267220000, 5.301e-05, 5.302e-05, 5.3e-05, 5.3e-05, 1348.62533081], [1517267280000, 5.302e-05, 5.32e-05, 5.3e-05, 5.3e-05, 15005.19700587], [1517267340000, 5.3e-05, 5.32e-05, 5.3e-05, 5.3e-05, 8346.31082327], [1517267400000, 5.3e-05, 5.314e-05, 5.3e-05, 5.3e-05, 2500.28669115], [1517267460000, 5.3e-05, 5.315e-05, 5.3e-05, 5.315e-05, 10518.49004211], [1517267520000, 5.3e-05, 5.315e-05, 5.3e-05, 5.314e-05, 3008.00257812], [1517267580000, 5.3e-05, 5.32e-05, 5.3e-05, 5.3e-05, 13435.67229063], [1517267640000, 5.313e-05, 5.314e-05, 5.3e-05, 5.313e-05, 9754.02704189], [1517267700000, 5.301e-05, 5.301e-05, 5.3e-05, 5.3e-05, 3736.1529709], [1517267760000, 5.3e-05, 5.301e-05, 5.3e-05, 5.301e-05, 8348.42276441], [1517267820000, 5.3e-05, 5.301e-05, 5.3e-05, 5.3e-05, 42295.92222108], [1517267880000, 5.3e-05, 5.301e-05, 5.296e-05, 5.296e-05, 61730.76924864], [1517267940000, 5.296e-05, 5.3e-05, 5.296e-05, 5.3e-05, 23064.73711278], [1517268000000, 5.299e-05, 5.3e-05, 5.299e-05, 5.3e-05, 1515.54516051], [1517268060000, 5.312e-05, 5.313e-05, 5.3e-05, 5.3e-05, 881.66097054], [1517268120000, 5.313e-05, 5.313e-05, 5.3e-05, 5.301e-05, 8594.79267083], [1517268180000, 5.301e-05, 5.302e-05, 5.301e-05, 5.302e-05, 8173.55698563], [1517268240000, 5.301e-05, 5.301e-05, 5.301e-05, 5.301e-05, 727.2229381], [1517268300000, 5.302e-05, 5.313e-05, 5.301e-05, 5.301e-05, 3991.78731065], [1517268360000, 5.301e-05, 5.32e-05, 5.301e-05, 5.301e-05, 4530.13372197], [1517268420000, 5.301e-05, 5.317e-05, 5.301e-05, 5.301e-05, 8086.13939552], [1517268480000, 5.301e-05, 5.316e-05, 5.301e-05, 5.301e-05, 4494.90622691], [1517268540000, 5.305e-05, 5.31e-05, 5.301e-05, 5.301e-05, 12915.37841224], [1517268600000, 5.301e-05, 5.306e-05, 5.301e-05, 5.301e-05, 2704.47828484], [1517268660000, 5.306e-05, 5.307e-05, 5.301e-05, 5.307e-05, 18120.20003825], [1517268720000, 5.301e-05, 5.309e-05, 5.301e-05, 5.309e-05, 12527.51078554], [1517268780000, 5.309e-05, 5.309e-05, 5.301e-05, 5.301e-05, 2480.18298474], [1517268840000, 5.301e-05, 5.305e-05, 5.3e-05, 5.301e-05, 37446.96827438], [1517268900000, 5.301e-05, 5.309e-05, 5.29e-05, 5.309e-05, 7274.10837432], [1517268960000, 5.309e-05, 5.309e-05, 5.29e-05, 5.29e-05, 52625.07992911], [1517269020000, 5.3e-05, 5.3e-05, 5.29e-05, 5.29e-05, 17568.01440224], [1517269080000, 5.291e-05, 5.3e-05, 5.291e-05, 5.3e-05, 10573.0589963], [1517269140000, 5.3e-05, 5.3e-05, 5.291e-05, 5.3e-05, 58243.06619485], [1517269200000, 5.3e-05, 5.3e-05, 5.291e-05, 5.3e-05, 9989.74935051], [1517269260000, 5.291e-05, 5.3e-05, 5.291e-05, 5.3e-05, 36545.0993999], [1517269320000, 5.3e-05, 5.3e-05, 5.292e-05, 5.3e-05, 260.7404661], [1517269380000, 5.292e-05, 5.3e-05, 5.283e-05, 5.285e-05, 49850.82488387], [1517269440000, 5.286e-05, 5.3e-05, 5.286e-05, 5.287e-05, 119613.98339775], [1517269500000, 5.3e-05, 5.3e-05, 5.287e-05, 5.3e-05, 21848.84613339], [1517269560000, 5.3e-05, 5.3e-05, 5.288e-05, 5.289e-05, 7125.72545307], [1517269620000, 5.29e-05, 5.3e-05, 5.29e-05, 5.291e-05, 17441.00886853], [1517269680000, 5.3e-05, 5.3e-05, 5.296e-05, 5.3e-05, 84302.41610529], [1517269740000, 5.298e-05, 5.3e-05, 5.295e-05, 5.295e-05, 74316.25774199], [1517269800000, 5.3e-05, 5.3e-05, 5.289e-05, 5.295e-05, 74715.81315605], [1517269860000, 5.295e-05, 5.295e-05, 5.286e-05, 5.295e-05, 15045.12247325], [1517269920000, 5.295e-05, 5.295e-05, 5.291e-05, 5.295e-05, 33512.30715678], [1517269980000, 5.291e-05, 5.309e-05, 5.286e-05, 5.295e-05, 8646.63732168], [1517270040000, 5.295e-05, 5.309e-05, 5.29e-05, 5.29e-05, 253.19357338], [1517270100000, 5.309e-05, 5.309e-05, 5.309e-05, 5.309e-05, 243.38568531], [1517270160000, 5.29e-05, 5.309e-05, 5.29e-05, 5.304e-05, 1065.87065811], [1517270220000, 5.304e-05, 5.304e-05, 5.286e-05, 5.293e-05, 7061.73907901], [1517270280000, 5.293e-05, 5.293e-05, 5.29e-05, 5.29e-05, 10202.83932844], [1517270340000, 5.289e-05, 5.289e-05, 5.282e-05, 5.288e-05, 12377.80191026], [1517270400000, 5.288e-05, 5.293e-05, 5.287e-05, 5.288e-05, 40577.87304853], [1517270460000, 5.288e-05, 5.304e-05, 5.28e-05, 5.288e-05, 60427.59831139], [1517270520000, 5.288e-05, 5.308e-05, 5.28e-05, 5.288e-05, 69285.89729052], [1517270580000, 5.29e-05, 5.29e-05, 5.279e-05, 5.281e-05, 22169.77763326], [1517270640000, 5.279e-05, 5.288e-05, 5.275e-05, 5.28e-05, 15744.87849951], [1517270700000, 5.279e-05, 5.279e-05, 5.272e-05, 5.279e-05, 3761.53352217], [1517270760000, 5.279e-05, 5.279e-05, 5.271e-05, 5.278e-05, 110279.41518474], [1517270820000, 5.278e-05, 5.28e-05, 5.271e-05, 5.271e-05, 4209.38185386], [1517270880000, 5.271e-05, 5.288e-05, 5.27e-05, 5.271e-05, 4711.84861833], [1517270940000, 5.271e-05, 5.278e-05, 5.27e-05, 5.278e-05, 12048.39260148], [1517271000000, 5.271e-05, 5.277e-05, 5.269e-05, 5.277e-05, 1901.67124005], [1517271060000, 5.277e-05, 5.278e-05, 5.269e-05, 5.27e-05, 8832.03411195], [1517271120000, 5.277e-05, 5.277e-05, 5.259e-05, 5.276e-05, 24267.35669355], [1517271180000, 5.271e-05, 5.288e-05, 5.26e-05, 5.26e-05, 70654.83704867], [1517271240000, 5.26e-05, 5.276e-05, 5.26e-05, 5.276e-05, 6665.80211202], [1517271300000, 5.26e-05, 5.275e-05, 5.26e-05, 5.26e-05, 15033.4397467], [1517271360000, 5.259e-05, 5.287e-05, 5.259e-05, 5.26e-05, 12420.4759816], [1517271420000, 5.26e-05, 5.26e-05, 5.259e-05, 5.26e-05, 56182.42319964], [1517271480000, 5.26e-05, 5.261e-05, 5.26e-05, 5.26e-05, 6919.70082511], [1517271540000, 5.287e-05, 5.287e-05, 5.252e-05, 5.286e-05, 120098.69917973], [1517271600000, 5.285e-05, 5.288e-05, 5.25e-05, 5.288e-05, 39059.67220912], [1517271660000, 5.278e-05, 5.287e-05, 5.25e-05, 5.271e-05, 43255.22812328], [1517271720000, 5.271e-05, 5.271e-05, 5.25e-05, 5.267e-05, 48376.1034399], [1517271780000, 5.267e-05, 5.267e-05, 5.251e-05, 5.255e-05, 5058.74857384], [1517271840000, 5.255e-05, 5.255e-05, 5.247e-05, 5.247e-05, 16905.54489497], [1517271900000, 5.247e-05, 5.25e-05, 5.245e-05, 5.247e-05, 10747.24369174], [1517271960000, 5.247e-05, 5.268e-05, 5.247e-05, 5.268e-05, 7134.75519048], [1517272020000, 5.268e-05, 5.268e-05, 5.247e-05, 5.248e-05, 62280.96156433], [1517272080000, 5.249e-05, 5.249e-05, 5.246e-05, 5.246e-05, 8101.925478], [1517272140000, 5.245e-05, 5.246e-05, 5.245e-05, 5.245e-05, 6066.06634876], [1517272200000, 5.245e-05, 5.248e-05, 5.245e-05, 5.248e-05, 10503.90252557], [1517272260000, 5.245e-05, 5.248e-05, 5.236e-05, 5.248e-05, 47972.79959586], [1517272320000, 5.248e-05, 5.259e-05, 5.241e-05, 5.259e-05, 30367.04842812], [1517272380000, 5.268e-05, 5.268e-05, 5.259e-05, 5.259e-05, 4438.54798435], [1517272440000, 5.259e-05, 5.267e-05, 5.219e-05, 5.219e-05, 51118.41518744], [1517272500000, 5.219e-05, 5.265e-05, 5.219e-05, 5.262e-05, 3658.39712859], [1517272560000, 5.261e-05, 5.267e-05, 5.23e-05, 5.266e-05, 216663.02788197], [1517272620000, 5.23e-05, 5.266e-05, 5.224e-05, 5.23e-05, 12625.09787277], [1517272680000, 5.235e-05, 5.235e-05, 5.23e-05, 5.235e-05, 11693.41816878], [1517272740000, 5.236e-05, 5.251e-05, 5.231e-05, 5.235e-05, 14054.26480348], [1517272800000, 5.235e-05, 5.235e-05, 5.231e-05, 5.233e-05, 8900.58969859], [1517272860000, 5.232e-05, 5.233e-05, 5.231e-05, 5.233e-05, 109038.54216143], [1517272920000, 5.233e-05, 5.233e-05, 5.231e-05, 5.231e-05, 4813.64814], [1517272980000, 5.231e-05, 5.233e-05, 5.231e-05, 5.233e-05, 13672.45410125], [1517273040000, 5.233e-05, 5.26e-05, 5.231e-05, 5.26e-05, 20396.2575639], [1517273100000, 5.26e-05, 5.265e-05, 5.251e-05, 5.259e-05, 15581.69243968], [1517273160000, 5.259e-05, 5.259e-05, 5.25e-05, 5.25e-05, 2155.93739047], [1517273220000, 5.25e-05, 5.259e-05, 5.25e-05, 5.258e-05, 9498.53607648], [1517273280000, 5.25e-05, 5.257e-05, 5.236e-05, 5.257e-05, 41511.72957369], [1517273340000, 5.257e-05, 5.257e-05, 5.242e-05, 5.257e-05, 8899.07617705], [1517273400000, 5.257e-05, 5.259e-05, 5.245e-05, 5.245e-05, 5192.90353796], [1517273460000, 5.254e-05, 5.257e-05, 5.25e-05, 5.257e-05, 10866.76244599], [1517273520000, 5.254e-05, 5.259e-05, 5.244e-05, 5.245e-05, 7631.42171113], [1517273580000, 5.245e-05, 5.259e-05, 5.245e-05, 5.257e-05, 16354.85812078], [1517273640000, 5.257e-05, 5.259e-05, 5.245e-05, 5.245e-05, 7305.93563932], [1517273700000, 5.245e-05, 5.247e-05, 5.245e-05, 5.245e-05, 42110.1973024], [1517273760000, 5.247e-05, 5.247e-05, 5.244e-05, 5.245e-05, 2869.36408632], [1517273820000, 5.245e-05, 5.245e-05, 5.245e-05, 5.245e-05, 12876.98329222], [1517273880000, 5.245e-05, 5.245e-05, 5.243e-05, 5.244e-05, 11948.06600261], [1517273940000, 5.244e-05, 5.244e-05, 5.243e-05, 5.243e-05, 3128.90176302], [1517274000000, 5.243e-05, 5.243e-05, 5.242e-05, 5.242e-05, 18121.57271816], [1517274060000, 5.242e-05, 5.244e-05, 5.241e-05, 5.241e-05, 21036.4482651], [1517274120000, 5.24e-05, 5.241e-05, 5.237e-05, 5.237e-05, 8121.06362593], [1517274180000, 5.24e-05, 5.244e-05, 5.234e-05, 5.244e-05, 57736.92068202], [1517274240000, 5.236e-05, 5.244e-05, 5.234e-05, 5.234e-05, 19198.87580077], [1517274300000, 5.234e-05, 5.243e-05, 5.233e-05, 5.233e-05, 43382.29143055], [1517274360000, 5.231e-05, 5.231e-05, 5.221e-05, 5.229e-05, 29292.87190779], [1517274420000, 5.228e-05, 5.228e-05, 5.216e-05, 5.221e-05, 42179.86159787], [1517274480000, 5.216e-05, 5.221e-05, 5.215e-05, 5.221e-05, 32610.20162726], [1517274540000, 5.22e-05, 5.225e-05, 5.22e-05, 5.225e-05, 13810.45918874], [1517274600000, 5.225e-05, 5.229e-05, 5.221e-05, 5.225e-05, 30630.86505383], [1517274660000, 5.225e-05, 5.225e-05, 5.221e-05, 5.225e-05, 12738.70527786], [1517274720000, 5.225e-05, 5.225e-05, 5.22e-05, 5.225e-05, 10395.24041864], [1517274780000, 5.22e-05, 5.225e-05, 5.22e-05, 5.22e-05, 40756.78254696], [1517274840000, 5.225e-05, 5.225e-05, 5.222e-05, 5.224e-05, 3233.98045897], [1517274900000, 5.224e-05, 5.224e-05, 5.22e-05, 5.223e-05, 217556.64344756], [1517274960000, 5.221e-05, 5.223e-05, 5.22e-05, 5.22e-05, 32967.87210385], [1517275020000, 5.22e-05, 5.223e-05, 5.22e-05, 5.22e-05, 176645.07420753], [1517275080000, 5.22e-05, 5.222e-05, 5.215e-05, 5.222e-05, 19413.77959386], [1517275140000, 5.221e-05, 5.221e-05, 5.195e-05, 5.199e-05, 267984.44590883], [1517275200000, 5.199e-05, 5.199e-05, 5.195e-05, 5.198e-05, 7400.83763188], [1517275260000, 5.198e-05, 5.198e-05, 5.194e-05, 5.194e-05, 37715.40235516], [1517275320000, 5.195e-05, 5.195e-05, 5.183e-05, 5.183e-05, 88852.09344984], [1517275380000, 5.191e-05, 5.191e-05, 5.183e-05, 5.191e-05, 13473.70061054], [1517275440000, 5.191e-05, 5.192e-05, 5.191e-05, 5.192e-05, 7395.15863081], [1517275500000, 5.192e-05, 5.198e-05, 5.188e-05, 5.198e-05, 56767.4372724], [1517275560000, 5.198e-05, 5.198e-05, 5.18e-05, 5.198e-05, 29627.20026523], [1517275620000, 5.181e-05, 5.181e-05, 5.18e-05, 5.181e-05, 49894.11185787], [1517275680000, 5.19e-05, 5.19e-05, 5.168e-05, 5.168e-05, 139980.76215857], [1517275740000, 5.17e-05, 5.198e-05, 5.164e-05, 5.177e-05, 95823.62128547], [1517275800000, 5.177e-05, 5.188e-05, 5.176e-05, 5.188e-05, 7682.68566462], [1517275860000, 5.188e-05, 5.231e-05, 5.185e-05, 5.229e-05, 26310.94268421], [1517275920000, 5.228e-05, 5.228e-05, 5.188e-05, 5.221e-05, 29440.84463397], [1517275980000, 5.19e-05, 5.22e-05, 5.189e-05, 5.189e-05, 14333.7277836], [1517276040000, 5.191e-05, 5.191e-05, 5.177e-05, 5.177e-05, 26129.29219452], [1517276100000, 5.191e-05, 5.191e-05, 5.187e-05, 5.191e-05, 11537.50353408], [1517276160000, 5.189e-05, 5.191e-05, 5.187e-05, 5.191e-05, 10525.51476868], [1517276220000, 5.188e-05, 5.191e-05, 5.188e-05, 5.191e-05, 4105.67170262], [1517276280000, 5.191e-05, 5.191e-05, 5.188e-05, 5.19e-05, 10463.21707281], [1517276340000, 5.19e-05, 5.191e-05, 5.188e-05, 5.19e-05, 11261.21430371], [1517276400000, 5.19e-05, 5.19e-05, 5.187e-05, 5.187e-05, 21189.6359576], [1517276460000, 5.188e-05, 5.19e-05, 5.187e-05, 5.189e-05, 11448.81157727], [1517276520000, 5.188e-05, 5.188e-05, 5.173e-05, 5.184e-05, 43919.23178766], [1517276580000, 5.175e-05, 5.184e-05, 5.168e-05, 5.18e-05, 6288.08878682], [1517276640000, 5.18e-05, 5.184e-05, 5.171e-05, 5.184e-05, 19268.85599811], [1517276700000, 5.184e-05, 5.185e-05, 5.184e-05, 5.185e-05, 5308.0712667], [1517276760000, 5.185e-05, 5.185e-05, 5.18e-05, 5.184e-05, 21362.40402313], [1517276820000, 5.184e-05, 5.184e-05, 5.179e-05, 5.18e-05, 11562.7721395], [1517276880000, 5.18e-05, 5.18e-05, 5.175e-05, 5.177e-05, 4093.5978858], [1517276940000, 5.177e-05, 5.177e-05, 5.175e-05, 5.177e-05, 4535.88524162], [1517277000000, 5.177e-05, 5.18e-05, 5.171e-05, 5.171e-05, 18859.77910081], [1517277060000, 5.171e-05, 5.18e-05, 5.168e-05, 5.175e-05, 37212.16219576], [1517277120000, 5.175e-05, 5.18e-05, 5.173e-05, 5.18e-05, 27687.26610041], [1517277180000, 5.175e-05, 5.184e-05, 5.175e-05, 5.175e-05, 42597.90331367], [1517277240000, 5.184e-05, 5.184e-05, 5.175e-05, 5.184e-05, 13598.44887955], [1517277300000, 5.184e-05, 5.191e-05, 5.178e-05, 5.191e-05, 40885.02406753], [1517277360000, 5.19e-05, 5.19e-05, 5.178e-05, 5.19e-05, 3629.91158402], [1517277420000, 5.19e-05, 5.19e-05, 5.179e-05, 5.19e-05, 7971.2405223], [1517277480000, 5.181e-05, 5.191e-05, 5.181e-05, 5.191e-05, 50052.06903807], [1517277540000, 5.191e-05, 5.21e-05, 5.191e-05, 5.208e-05, 17771.65189581], [1517277600000, 5.208e-05, 5.209e-05, 5.179e-05, 5.182e-05, 42427.17686841], [1517277660000, 5.182e-05, 5.182e-05, 5.172e-05, 5.177e-05, 20874.79476133], [1517277720000, 5.177e-05, 5.208e-05, 5.173e-05, 5.175e-05, 16010.42153569], [1517277780000, 5.207e-05, 5.208e-05, 5.178e-05, 5.188e-05, 7342.26578255], [1517277840000, 5.188e-05, 5.208e-05, 5.178e-05, 5.19e-05, 22093.62641798], [1517277900000, 5.19e-05, 5.206e-05, 5.19e-05, 5.206e-05, 8787.50983693], [1517277960000, 5.2e-05, 5.208e-05, 5.188e-05, 5.191e-05, 8690.58425272], [1517278020000, 5.206e-05, 5.206e-05, 5.192e-05, 5.192e-05, 23857.34451743], [1517278080000, 5.192e-05, 5.205e-05, 5.191e-05, 5.2e-05, 7934.225866], [1517278140000, 5.2e-05, 5.205e-05, 5.191e-05, 5.191e-05, 15321.54202669], [1517278200000, 5.191e-05, 5.2e-05, 5.191e-05, 5.199e-05, 8432.62563438], [1517278260000, 5.197e-05, 5.2e-05, 5.191e-05, 5.2e-05, 4608.44973057], [1517278320000, 5.192e-05, 5.2e-05, 5.191e-05, 5.195e-05, 12381.43198916], [1517278380000, 5.2e-05, 5.2e-05, 5.195e-05, 5.2e-05, 11197.71862203], [1517278440000, 5.2e-05, 5.2e-05, 5.195e-05, 5.2e-05, 60996.40698047], [1517278500000, 5.199e-05, 5.2e-05, 5.195e-05, 5.196e-05, 30904.65987642], [1517278560000, 5.196e-05, 5.196e-05, 5.195e-05, 5.195e-05, 58983.94230894], [1517278620000, 5.195e-05, 5.196e-05, 5.193e-05, 5.196e-05, 36228.92827091], [1517278680000, 5.196e-05, 5.196e-05, 5.193e-05, 5.195e-05, 24705.71171831], [1517278740000, 5.195e-05, 5.195e-05, 5.193e-05, 5.194e-05, 4618.04701411], [1517278800000, 5.193e-05, 5.195e-05, 5.193e-05, 5.193e-05, 9123.57290692], [1517278860000, 5.194e-05, 5.195e-05, 5.191e-05, 5.193e-05, 16336.54949483], [1517278920000, 5.193e-05, 5.193e-05, 5.191e-05, 5.193e-05, 15246.2144286], [1517278980000, 5.193e-05, 5.193e-05, 5.191e-05, 5.193e-05, 25745.79925065], [1517279040000, 5.193e-05, 5.193e-05, 5.191e-05, 5.192e-05, 4589.21485728], [1517279100000, 5.193e-05, 5.193e-05, 5.191e-05, 5.191e-05, 12717.98808442], [1517279160000, 5.193e-05, 5.193e-05, 5.191e-05, 5.191e-05, 24573.91262084], [1517279220000, 5.191e-05, 5.192e-05, 5.191e-05, 5.192e-05, 13452.2021835], [1517279280000, 5.192e-05, 5.192e-05, 5.191e-05, 5.191e-05, 39499.78382575], [1517279340000, 5.191e-05, 5.192e-05, 5.191e-05, 5.192e-05, 22223.90791829], [1517279400000, 5.192e-05, 5.192e-05, 5.19e-05, 5.192e-05, 8258.53968253], [1517279460000, 5.192e-05, 5.192e-05, 5.19e-05, 5.192e-05, 1632.25727344], [1517279520000, 5.192e-05, 5.192e-05, 5.19e-05, 5.19e-05, 8951.33184986], [1517279580000, 5.192e-05, 5.192e-05, 5.19e-05, 5.192e-05, 11910.95742244], [1517279640000, 5.19e-05, 5.192e-05, 5.19e-05, 5.192e-05, 10974.08538173], [1517279700000, 5.191e-05, 5.191e-05, 5.191e-05, 5.191e-05, 21176.23839684], [1517279760000, 5.191e-05, 5.191e-05, 5.19e-05, 5.19e-05, 2481.09724538], [1517279820000, 5.19e-05, 5.191e-05, 5.19e-05, 5.191e-05, 12419.04254069], [1517279880000, 5.19e-05, 5.191e-05, 5.19e-05, 5.191e-05, 7480.4245014], [1517279940000, 5.19e-05, 5.191e-05, 5.19e-05, 5.191e-05, 30495.57283099], [1517280000000, 5.191e-05, 5.191e-05, 5.19e-05, 5.19e-05, 151.86527359], [1517280060000, 5.191e-05, 5.191e-05, 5.19e-05, 5.19e-05, 21441.98930648], [1517280120000, 5.191e-05, 5.191e-05, 5.19e-05, 5.191e-05, 11401.48529669], [1517280180000, 5.191e-05, 5.191e-05, 5.188e-05, 5.19e-05, 12673.76782848], [1517280240000, 5.19e-05, 5.19e-05, 5.188e-05, 5.19e-05, 3011.86688888], [1517280300000, 5.19e-05, 5.19e-05, 5.188e-05, 5.19e-05, 8079.00568496], [1517280360000, 5.188e-05, 5.19e-05, 5.18e-05, 5.19e-05, 18938.52927477], [1517280420000, 5.18e-05, 5.19e-05, 5.174e-05, 5.174e-05, 23335.37984476], [1517280480000, 5.174e-05, 5.18e-05, 5.166e-05, 5.167e-05, 51630.92619453], [1517280540000, 5.167e-05, 5.184e-05, 5.163e-05, 5.165e-05, 97099.71430793], [1517280600000, 5.168e-05, 5.19e-05, 5.165e-05, 5.166e-05, 3741.03774893], [1517280660000, 5.166e-05, 5.186e-05, 5.166e-05, 5.166e-05, 8237.73484564], [1517280720000, 5.166e-05, 5.167e-05, 5.163e-05, 5.166e-05, 62380.8313463], [1517280780000, 5.164e-05, 5.167e-05, 5.163e-05, 5.167e-05, 48427.83654565], [1517280840000, 5.167e-05, 5.186e-05, 5.167e-05, 5.186e-05, 12816.7853124], [1517280900000, 5.169e-05, 5.19e-05, 5.169e-05, 5.19e-05, 44412.17554323], [1517280960000, 5.19e-05, 5.19e-05, 5.168e-05, 5.17e-05, 39837.45656223], [1517281020000, 5.167e-05, 5.189e-05, 5.167e-05, 5.167e-05, 51946.84607104], [1517281080000, 5.167e-05, 5.184e-05, 5.167e-05, 5.171e-05, 7641.88038354], [1517281140000, 5.174e-05, 5.182e-05, 5.174e-05, 5.175e-05, 37155.07785711], [1517281200000, 5.176e-05, 5.186e-05, 5.174e-05, 5.174e-05, 11632.79486714], [1517281260000, 5.174e-05, 5.175e-05, 5.174e-05, 5.174e-05, 25793.84843773], [1517281320000, 5.188e-05, 5.188e-05, 5.17e-05, 5.175e-05, 11191.97701923], [1517281380000, 5.175e-05, 5.187e-05, 5.171e-05, 5.176e-05, 19475.75208282], [1517281440000, 5.176e-05, 5.187e-05, 5.171e-05, 5.172e-05, 19297.66653318], [1517281500000, 5.187e-05, 5.187e-05, 5.17e-05, 5.171e-05, 17021.6807705], [1517281560000, 5.172e-05, 5.172e-05, 5.167e-05, 5.169e-05, 87326.44763427], [1517281620000, 5.169e-05, 5.169e-05, 5.167e-05, 5.169e-05, 3074.8224394], [1517281680000, 5.167e-05, 5.173e-05, 5.167e-05, 5.172e-05, 13400.55298228], [1517281740000, 5.172e-05, 5.186e-05, 5.166e-05, 5.169e-05, 35377.00065378], [1517281800000, 5.17e-05, 5.187e-05, 5.161e-05, 5.162e-05, 52004.27119875], [1517281860000, 5.162e-05, 5.186e-05, 5.161e-05, 5.161e-05, 80798.93374442], [1517281920000, 5.169e-05, 5.184e-05, 5.16e-05, 5.184e-05, 280956.28968272], [1517281980000, 5.187e-05, 5.187e-05, 5.16e-05, 5.163e-05, 17023.2114119], [1517282040000, 5.165e-05, 5.185e-05, 5.16e-05, 5.171e-05, 66126.53106514], [1517282100000, 5.163e-05, 5.176e-05, 5.157e-05, 5.161e-05, 94313.89257369], [1517282160000, 5.17e-05, 5.17e-05, 5.162e-05, 5.17e-05, 32622.55156767], [1517282220000, 5.17e-05, 5.179e-05, 5.16e-05, 5.16e-05, 34815.23665212], [1517282280000, 5.16e-05, 5.179e-05, 5.16e-05, 5.163e-05, 61960.78873747], [1517282340000, 5.165e-05, 5.165e-05, 5.151e-05, 5.154e-05, 163719.10081353], [1517282400000, 5.154e-05, 5.179e-05, 5.15e-05, 5.179e-05, 216565.60152819], [1517282460000, 5.161e-05, 5.186e-05, 5.161e-05, 5.186e-05, 13832.53804664], [1517282520000, 5.186e-05, 5.186e-05, 5.153e-05, 5.161e-05, 23384.61084773], [1517282580000, 5.16e-05, 5.16e-05, 5.153e-05, 5.16e-05, 1061.4002568], [1517282640000, 5.16e-05, 5.16e-05, 5.153e-05, 5.156e-05, 25723.87222288], [1517282700000, 5.156e-05, 5.161e-05, 5.156e-05, 5.161e-05, 9164.07037033], [1517282760000, 5.162e-05, 5.186e-05, 5.16e-05, 5.186e-05, 63307.15811385], [1517282820000, 5.186e-05, 5.186e-05, 5.167e-05, 5.167e-05, 20698.06862246], [1517282880000, 5.185e-05, 5.185e-05, 5.167e-05, 5.183e-05, 470.7634476], [1517282940000, 5.183e-05, 5.183e-05, 5.168e-05, 5.175e-05, 900.86725933], [1517283000000, 5.168e-05, 5.186e-05, 5.168e-05, 5.175e-05, 25686.21895651], [1517283060000, 5.175e-05, 5.182e-05, 5.168e-05, 5.168e-05, 20888.45041796], [1517283120000, 5.182e-05, 5.186e-05, 5.168e-05, 5.168e-05, 4830.25669419], [1517283180000, 5.168e-05, 5.185e-05, 5.166e-05, 5.167e-05, 38271.5553795], [1517283240000, 5.183e-05, 5.183e-05, 5.161e-05, 5.182e-05, 14226.68235803], [1517283300000, 5.16e-05, 5.182e-05, 5.16e-05, 5.18e-05, 3017.99033918], [1517283360000, 5.18e-05, 5.18e-05, 5.162e-05, 5.162e-05, 5833.06547437], [1517283420000, 5.162e-05, 5.165e-05, 5.16e-05, 5.16e-05, 18893.8988804], [1517283480000, 5.16e-05, 5.162e-05, 5.16e-05, 5.16e-05, 20114.54869569], [1517283540000, 5.161e-05, 5.161e-05, 5.16e-05, 5.161e-05, 25473.02774823], [1517283600000, 5.161e-05, 5.161e-05, 5.16e-05, 5.16e-05, 8171.26528163], [1517283660000, 5.16e-05, 5.161e-05, 5.16e-05, 5.161e-05, 10853.46851699], [1517283720000, 5.16e-05, 5.161e-05, 5.16e-05, 5.161e-05, 19282.53951527], [1517283780000, 5.16e-05, 5.162e-05, 5.16e-05, 5.161e-05, 119635.67849424], [1517283840000, 5.165e-05, 5.165e-05, 5.161e-05, 5.161e-05, 42591.92795238], [1517283900000, 5.161e-05, 5.161e-05, 5.16e-05, 5.161e-05, 53766.65236142], [1517283960000, 5.161e-05, 5.161e-05, 5.16e-05, 5.161e-05, 11186.47108357], [1517284020000, 5.161e-05, 5.161e-05, 5.16e-05, 5.161e-05, 22689.94130158], [1517284080000, 5.161e-05, 5.161e-05, 5.159e-05, 5.159e-05, 6815.00791748], [1517284140000, 5.159e-05, 5.159e-05, 5.15e-05, 5.157e-05, 90359.94698648], [1517284200000, 5.157e-05, 5.157e-05, 5.151e-05, 5.157e-05, 127200.93361817], [1517284260000, 5.157e-05, 5.157e-05, 5.155e-05, 5.155e-05, 26789.92432356], [1517284320000, 5.155e-05, 5.157e-05, 5.15e-05, 5.157e-05, 30718.31474415], [1517284380000, 5.157e-05, 5.157e-05, 5.154e-05, 5.157e-05, 36964.32209904], [1517284440000, 5.154e-05, 5.159e-05, 5.154e-05, 5.159e-05, 99778.18095678], [1517284500000, 5.159e-05, 5.159e-05, 5.157e-05, 5.157e-05, 59209.30825553], [1517284560000, 5.159e-05, 5.159e-05, 5.158e-05, 5.159e-05, 44606.56707533], [1517284620000, 5.159e-05, 5.159e-05, 5.158e-05, 5.159e-05, 43318.55408609], [1517284680000, 5.159e-05, 5.159e-05, 5.158e-05, 5.159e-05, 2153.88769748], [1517284740000, 5.159e-05, 5.161e-05, 5.158e-05, 5.161e-05, 3348.05554529], [1517284800000, 5.161e-05, 5.161e-05, 5.158e-05, 5.158e-05, 34312.03267682], [1517284860000, 5.158e-05, 5.161e-05, 5.158e-05, 5.161e-05, 3054.54261035], [1517284920000, 5.161e-05, 5.161e-05, 5.159e-05, 5.159e-05, 5824.62113704], [1517284980000, 5.159e-05, 5.161e-05, 5.159e-05, 5.161e-05, 725.2764968], [1517285040000, 5.16e-05, 5.161e-05, 5.158e-05, 5.161e-05, 12264.69881035], [1517285100000, 5.161e-05, 5.161e-05, 5.158e-05, 5.161e-05, 225490.2537763], [1517285160000, 5.16e-05, 5.161e-05, 5.158e-05, 5.161e-05, 121583.13307411], [1517285220000, 5.159e-05, 5.164e-05, 5.159e-05, 5.159e-05, 74574.00452802], [1517285280000, 5.159e-05, 5.161e-05, 5.148e-05, 5.15e-05, 120677.79787326], [1517285340000, 5.15e-05, 5.161e-05, 5.142e-05, 5.161e-05, 47051.767659], [1517285400000, 5.151e-05, 5.159e-05, 5.14e-05, 5.141e-05, 76572.94591077], [1517285460000, 5.148e-05, 5.16e-05, 5.141e-05, 5.16e-05, 8922.4156441], [1517285520000, 5.145e-05, 5.159e-05, 5.145e-05, 5.146e-05, 33936.55059014], [1517285580000, 5.146e-05, 5.158e-05, 5.146e-05, 5.149e-05, 12864.75113897], [1517285640000, 5.15e-05, 5.15e-05, 5.147e-05, 5.148e-05, 14210.6002875], [1517285700000, 5.157e-05, 5.159e-05, 5.157e-05, 5.157e-05, 14283.57467771], [1517285760000, 5.158e-05, 5.16e-05, 5.157e-05, 5.157e-05, 57076.22786016], [1517285820000, 5.157e-05, 5.16e-05, 5.146e-05, 5.146e-05, 31137.69276511], [1517285880000, 5.156e-05, 5.156e-05, 5.146e-05, 5.156e-05, 63522.81632418], [1517285940000, 5.156e-05, 5.156e-05, 5.155e-05, 5.156e-05, 14327.43667666], [1517286000000, 5.156e-05, 5.156e-05, 5.155e-05, 5.155e-05, 5988.83825938], [1517286060000, 5.155e-05, 5.156e-05, 5.155e-05, 5.156e-05, 9887.9798243], [1517286120000, 5.155e-05, 5.156e-05, 5.15e-05, 5.15e-05, 42663.45156955], [1517286180000, 5.15e-05, 5.156e-05, 5.15e-05, 5.156e-05, 21611.91392059], [1517286240000, 5.156e-05, 5.156e-05, 5.15e-05, 5.151e-05, 40408.07179509], [1517286300000, 5.151e-05, 5.155e-05, 5.151e-05, 5.155e-05, 67593.69332974], [1517286360000, 5.155e-05, 5.155e-05, 5.153e-05, 5.154e-05, 22659.64376226], [1517286420000, 5.155e-05, 5.155e-05, 5.153e-05, 5.154e-05, 42286.46187956], [1517286480000, 5.153e-05, 5.154e-05, 5.151e-05, 5.153e-05, 6106.76223806], [1517286540000, 5.153e-05, 5.154e-05, 5.153e-05, 5.153e-05, 7756.29501949], [1517286600000, 5.154e-05, 5.154e-05, 5.146e-05, 5.153e-05, 21553.40484025], [1517286660000, 5.153e-05, 5.153e-05, 5.144e-05, 5.146e-05, 49104.57872567], [1517286720000, 5.145e-05, 5.146e-05, 5.143e-05, 5.146e-05, 70978.39201165], [1517286780000, 5.144e-05, 5.146e-05, 5.144e-05, 5.144e-05, 12520.41653561], [1517286840000, 5.146e-05, 5.146e-05, 5.144e-05, 5.145e-05, 2177.72866144], [1517286900000, 5.146e-05, 5.146e-05, 5.145e-05, 5.146e-05, 5793.91729761], [1517286960000, 5.145e-05, 5.145e-05, 5.142e-05, 5.142e-05, 11014.7783674], [1517287020000, 5.143e-05, 5.146e-05, 5.14e-05, 5.146e-05, 88131.95157889], [1517287080000, 5.146e-05, 5.146e-05, 5.145e-05, 5.145e-05, 17444.84885509], [1517287140000, 5.145e-05, 5.145e-05, 5.14e-05, 5.144e-05, 149642.52339341], [1517287200000, 5.144e-05, 5.145e-05, 5.143e-05, 5.145e-05, 147433.65801106], [1517287260000, 5.145e-05, 5.145e-05, 5.143e-05, 5.144e-05, 83384.11561165], [1517287320000, 5.144e-05, 5.144e-05, 5.121e-05, 5.144e-05, 199045.40629549], [1517287380000, 5.144e-05, 5.144e-05, 5.143e-05, 5.144e-05, 56524.65254605], [1517287440000, 5.144e-05, 5.144e-05, 5.143e-05, 5.144e-05, 75199.85032633], [1517287500000, 5.144e-05, 5.144e-05, 5.143e-05, 5.144e-05, 17669.46802546], [1517287560000, 5.144e-05, 5.144e-05, 5.143e-05, 5.144e-05, 20799.78877014], [1517287620000, 5.143e-05, 5.144e-05, 5.143e-05, 5.144e-05, 57667.53428018], [1517287680000, 5.144e-05, 5.145e-05, 5.143e-05, 5.145e-05, 28905.17263326], [1517287740000, 5.145e-05, 5.145e-05, 5.144e-05, 5.145e-05, 19248.79487829], [1517287800000, 5.145e-05, 5.145e-05, 5.144e-05, 5.145e-05, 11288.21206266], [1517287860000, 5.144e-05, 5.145e-05, 5.143e-05, 5.144e-05, 52876.09239161]]
\ No newline at end of file
diff --git a/tests/testdata/DASH_BTC-1m.json b/tests/testdata/DASH_BTC-1m.json
deleted file mode 100644
index 631dad0a8..000000000
--- a/tests/testdata/DASH_BTC-1m.json
+++ /dev/null
@@ -1 +0,0 @@
-[[1516424040000, 0.07338973, 0.07338973, 0.07250001, 0.0726954, 1.06831277], [1516424100000, 0.07324992, 0.07324992, 0.07282154, 0.07282154, 1.15668942], [1516424160000, 0.07311281, 0.07324983, 0.07282153, 0.07282154, 2.68963783], [1516424220000, 0.07324983, 0.07324983, 0.0725002, 0.07250033, 6.87545953], [1516424280000, 0.07250033, 0.07299, 0.0725, 0.07298998, 20.80575739], [1516424340000, 0.0729899, 0.07298998, 0.0725068, 0.07298987, 20.85309507], [1516424400000, 0.07298987, 0.07298987, 0.07250681, 0.0725355, 5.8119609], [1516424460000, 0.0729, 0.07298998, 0.0725355, 0.07289998, 13.48769586], [1516424520000, 0.07289998, 0.07289998, 0.0725, 0.0725, 5.93486511], [1516424580000, 0.0725, 0.07250681, 0.0725, 0.0725, 4.70709943], [1516424640000, 0.0725, 0.0725, 0.0724046, 0.0724046, 3.20668133], [1516424700000, 0.0724046, 0.0725, 0.07204682, 0.07245822, 15.29614099], [1516424760000, 0.07245822, 0.07245822, 0.07204682, 0.07204682, 11.40367875], [1516424820000, 0.07245822, 0.07277225, 0.07200002, 0.07200002, 51.49527606], [1516424880000, 0.072, 0.07267208, 0.072, 0.072, 19.06637131], [1516424940000, 0.072, 0.07200003, 0.0718, 0.07194132, 26.06528723], [1516425000000, 0.07194132, 0.07194132, 0.07176012, 0.07176012, 4.15356685], [1516425060000, 0.07175, 0.07200003, 0.07171019, 0.07171019, 4.0466802], [1516425120000, 0.07171019, 0.07171019, 0.07171019, 0.07171019, 1.58160962], [1516425180000, 0.07200003, 0.07222909, 0.07171019, 0.07221259, 2.34952518], [1516425240000, 0.07200003, 0.07200003, 0.07171021, 0.07171021, 0.54926987], [1516425300000, 0.07200002, 0.07216954, 0.07171022, 0.07171022, 0.66135227], [1516425360000, 0.07171022, 0.07171022, 0.0717102, 0.0717102, 4.37548368], [1516425420000, 0.0717102, 0.0717102, 0.0717102, 0.0717102, 13.16581795], [1516425480000, 0.0717102, 0.07171022, 0.0717102, 0.0717102, 24.30396672], [1516425540000, 0.0717102, 0.0717102, 0.0717102, 0.0717102, 5.86553917], [1516425600000, 0.07171021, 0.07171022, 0.07171021, 0.07171022, 2.56524438], [1516425660000, 0.07171022, 0.07220529, 0.0717102, 0.0717102, 10.15856942], [1516425720000, 0.0717102, 0.07219135, 0.0717102, 0.07216999, 8.89805483], [1516425780000, 0.07216754, 0.07216754, 0.07171022, 0.07171022, 10.10092191], [1516425840000, 0.07215413, 0.07215413, 0.07171024, 0.07171024, 1.04721153], [1516425900000, 0.07171025, 0.07211098, 0.07171025, 0.07207556, 8.47166099], [1516425960000, 0.07207556, 0.07207556, 0.07171024, 0.07171024, 4.37456816], [1516426020000, 0.07171024, 0.07171024, 0.07171024, 0.07171024, 0.01705727], [1516426080000, 0.07171024, 0.07171024, 0.07171024, 0.07171024, 3.90523583], [1516426140000, 0.07171022, 0.07171024, 0.0717102, 0.07171024, 4.39638853], [1516426200000, 0.07171024, 0.07171025, 0.0717102, 0.07171021, 3.71886863], [1516426260000, 0.07171023, 0.07210774, 0.0717102, 0.07210774, 4.90680791], [1516426320000, 0.07210774, 0.07215808, 0.07171024, 0.07215808, 6.18401843], [1516426440000, 0.072158, 0.072158, 0.07161, 0.07166469, 7.18035601], [1516426500000, 0.07161, 0.07210762, 0.0716, 0.07179316, 9.85037824], [1516426560000, 0.07179316, 0.07210751, 0.07179316, 0.0719645, 2.43882901], [1516426620000, 0.07193856, 0.07193856, 0.07182, 0.07182, 3.60748315], [1516426680000, 0.07210751, 0.07210751, 0.07182, 0.0721025, 5.14802738], [1516426740000, 0.0721025, 0.0721025, 0.0715, 0.0715, 10.70696855], [1516426800000, 0.07206294, 0.07206295, 0.0715, 0.07155016, 6.91342071], [1516426860000, 0.07206286, 0.07206286, 0.07206286, 0.07206286, 1.46001808], [1516426920000, 0.07206286, 0.07206286, 0.07206286, 0.07206286, 0.00842944], [1516426980000, 0.07206286, 0.07206825, 0.07206286, 0.07206825, 0.15051707], [1516427040000, 0.07160007, 0.07206824, 0.0716, 0.0716, 1.34626129], [1516427100000, 0.0717746, 0.07205124, 0.0716, 0.0716, 1.15404694], [1516427160000, 0.0716, 0.0716, 0.0716, 0.0716, 0.57581075], [1516427220000, 0.071844, 0.071844, 0.07155038, 0.0716, 1.52752423], [1516427280000, 0.07159999, 0.07159999, 0.0715, 0.0715, 3.13757883], [1516427340000, 0.0715, 0.0715, 0.07149994, 0.07149996, 3.1794091], [1516427400000, 0.07149996, 0.07149996, 0.07134835, 0.07138201, 2.97326111], [1516427460000, 0.07149997, 0.07149997, 0.07138201, 0.07139904, 1.72062212], [1516427520000, 0.07139904, 0.07139905, 0.07132635, 0.07132635, 6.58551165], [1516427580000, 0.07132635, 0.07132635, 0.07132635, 0.07132635, 1.01013168], [1516427640000, 0.07133121, 0.07185283, 0.07132635, 0.07132635, 18.96629117], [1516427700000, 0.0717529, 0.0717529, 0.07125001, 0.07125002, 3.71976484], [1516427760000, 0.07125432, 0.07130338, 0.07125432, 0.07130338, 3.10030772], [1516427820000, 0.07130338, 0.07177026, 0.07130338, 0.07173802, 1.49183001], [1516427880000, 0.0714, 0.07173473, 0.0714, 0.0714, 1.9719779], [1516427940000, 0.0714, 0.07161998, 0.0714, 0.07161998, 1.00289269], [1516428000000, 0.07141, 0.07160999, 0.07125, 0.07125, 3.40224383], [1516428060000, 0.07125, 0.07125, 0.0712, 0.07122, 7.3890643], [1516428120000, 0.07125, 0.07140824, 0.0712, 0.07140824, 0.27573923], [1516428180000, 0.07148519, 0.07148519, 0.07148519, 0.07148519, 0.14572382], [1516428240000, 0.07140824, 0.07140824, 0.07139254, 0.07139254, 0.14783491], [1516428300000, 0.07140824, 0.07140824, 0.07140824, 0.07140824, 0.31783129], [1516428360000, 0.07148519, 0.07148519, 0.07148518, 0.07148519, 0.09035027], [1516428420000, 0.07148519, 0.07165, 0.07148519, 0.07165, 43.25516311], [1516428480000, 0.07148519, 0.072, 0.07139254, 0.072, 14.46777959], [1516428540000, 0.072, 0.0720946, 0.07119877, 0.0712023, 8.91405726], [1516428600000, 0.07200223, 0.07200223, 0.07139317, 0.07200222, 17.0074781], [1516428660000, 0.07200221, 0.07200222, 0.0720022, 0.0720022, 0.1455527], [1516428720000, 0.07200223, 0.07200223, 0.07165584, 0.07165584, 3.00881652], [1516428780000, 0.07154692, 0.07200223, 0.07154685, 0.07167958, 5.8669896], [1516428840000, 0.07200223, 0.0721075, 0.07200223, 0.072107, 11.37054445], [1516428900000, 0.072107, 0.0723, 0.072107, 0.0723, 1.19636559], [1516428960000, 0.072107, 0.0723, 0.07168, 0.0723, 8.86514947], [1516429080000, 0.07170008, 0.07170009, 0.07170008, 0.07170009, 2.03895737], [1516429140000, 0.07227134, 0.07227134, 0.07170079, 0.07170079, 0.33617919], [1516429200000, 0.07228657, 0.07228657, 0.07170083, 0.07170089, 10.27865982], [1516429260000, 0.07219999, 0.0722, 0.07219998, 0.0722, 6.19521], [1516429320000, 0.0722, 0.0722, 0.0722, 0.0722, 19.39751328], [1516429380000, 0.07203347, 0.07203347, 0.07203346, 0.07203346, 0.07], [1516429440000, 0.07219999, 0.07228658, 0.07219999, 0.07228658, 0.01870747], [1516429500000, 0.07219999, 0.07220004, 0.07219999, 0.07219999, 0.95060436], [1516429560000, 0.0722, 0.0722, 0.07219999, 0.07219999, 4.73404597], [1516429620000, 0.0722, 0.0722, 0.07219999, 0.0722, 4.63787612], [1516429680000, 0.07219999, 0.07219999, 0.07219999, 0.07219999, 0.622], [1516429800000, 0.07219999, 0.07219999, 0.07219999, 0.07219999, 0.01089182], [1516429920000, 0.07219999, 0.07219999, 0.07219999, 0.07219999, 1.618], [1516429980000, 0.07219999, 0.0722, 0.07219999, 0.0722, 10.98506562], [1516430040000, 0.0722, 0.0722, 0.07219999, 0.0722, 6.30861807], [1516430100000, 0.0722, 0.0722, 0.0722, 0.0722, 0.0683855], [1516430160000, 0.07221, 0.0723, 0.07221, 0.07222, 1.20367547], [1516430220000, 0.0723, 0.0723, 0.07221001, 0.0723, 4.39900326], [1516430280000, 0.07221001, 0.07221001, 0.07221, 0.07221001, 8.39812159], [1516430340000, 0.07221, 0.0723, 0.07221, 0.0723, 5.06118522], [1516430400000, 0.0723, 0.07285379, 0.07221001, 0.07285379, 2.60274452], [1516430460000, 0.072353, 0.072353, 0.072353, 0.072353, 0.06813417], [1516430520000, 0.07268178, 0.07268178, 0.07221, 0.07221, 5.98069376], [1516430580000, 0.07221, 0.07264076, 0.07221, 0.07254901, 13.2172218], [1516430640000, 0.07262815, 0.07262815, 0.07221, 0.07221, 0.14384353], [1516430700000, 0.07221, 0.07262814, 0.07221, 0.07262814, 2.0801755], [1516430760000, 0.07262795, 0.07262795, 0.07262795, 0.07262795, 0.02065315], [1516430820000, 0.07221, 0.07221, 0.07221, 0.07221, 1.033], [1516430880000, 0.07221, 0.07221, 0.07221, 0.07221, 2.7766], [1516430940000, 0.07221, 0.07221, 0.07219999, 0.07219999, 10.5362484], [1516431000000, 0.07219999, 0.07236799, 0.07170083, 0.07214043, 2.19246966], [1516431060000, 0.07214043, 0.07236773, 0.07214043, 0.07214043, 1.71494196], [1516431120000, 0.07214044, 0.07214044, 0.07214044, 0.07214044, 0.04420346], [1516431240000, 0.07214044, 0.07214044, 0.07214044, 0.07214044, 0.21342906], [1516431300000, 0.07234035, 0.07234035, 0.07234035, 0.07234035, 0.13861858], [1516431360000, 0.07234027, 0.07234027, 0.07234027, 0.07234027, 0.041123], [1516431480000, 0.07233992, 0.07234027, 0.07233992, 0.07234027, 0.67010103], [1516431540000, 0.07170185, 0.07233982, 0.07170185, 0.07233982, 2.01792823], [1516431600000, 0.07183039, 0.0723401, 0.07183039, 0.0723401, 0.78654071], [1516431660000, 0.0723401, 0.0723401, 0.07192297, 0.07193828, 0.31064049], [1516431720000, 0.0718304, 0.0723401, 0.0718304, 0.0723401, 10.09465485], [1516431780000, 0.07234009, 0.0723401, 0.07234009, 0.0723401, 1.57936814], [1516431840000, 0.07234009, 0.0723401, 0.07234009, 0.0723401, 0.0833741], [1516431900000, 0.0723401, 0.0723401, 0.0723401, 0.0723401, 0.27647182], [1516431960000, 0.07231229, 0.07231229, 0.07231229, 0.07231229, 0.05960062], [1516432020000, 0.0722, 0.0722, 0.0722, 0.0722, 0.1], [1516432080000, 0.0722, 0.0722, 0.07184966, 0.07200594, 5.89421762], [1516432140000, 0.07185649, 0.0722, 0.07183055, 0.0722, 3.13665472], [1516432200000, 0.0722, 0.0722, 0.0721, 0.0722, 0.42544035], [1516432260000, 0.07183056, 0.0722, 0.0718304, 0.0718304, 1.67725243], [1516432320000, 0.0718304, 0.0718304, 0.0718304, 0.0718304, 6.20036763], [1516432380000, 0.0718304, 0.0718304, 0.0718304, 0.0718304, 2.82517953], [1516432440000, 0.0718304, 0.0718304, 0.0718304, 0.0718304, 0.41268906], [1516432500000, 0.0718304, 0.07217714, 0.07183038, 0.07183039, 2.65759413], [1516432560000, 0.07183039, 0.07183039, 0.07154673, 0.07154673, 9.03136504], [1516432620000, 0.07154673, 0.07154673, 0.07123501, 0.07154673, 22.47392882], [1516432680000, 0.07154673, 0.07183038, 0.07154673, 0.07183038, 1.97593519], [1516432740000, 0.07154673, 0.072, 0.07154005, 0.072, 4.78983266], [1516432800000, 0.072, 0.072, 0.07142183, 0.07199997, 7.13526643], [1516432860000, 0.07199997, 0.07199997, 0.07199997, 0.07199997, 0.02601764], [1516432920000, 0.07142184, 0.07142184, 0.07142183, 0.07142183, 0.19401353], [1516432980000, 0.07199996, 0.072, 0.07199996, 0.07199997, 4.79240657], [1516433040000, 0.072, 0.072, 0.072, 0.072, 0.12222236], [1516433100000, 0.072, 0.072, 0.072, 0.072, 0.04701252], [1516433160000, 0.072, 0.07219998, 0.072, 0.07219998, 0.32748445], [1516433220000, 0.07219997, 0.07219998, 0.07219997, 0.07219998, 0.02233305], [1516433280000, 0.07219998, 0.0722, 0.07219998, 0.0722, 4.45222233], [1516433340000, 0.0722, 0.0722, 0.0722, 0.0722, 0.02667349], [1516433400000, 0.07199998, 0.0722, 0.07199998, 0.0722, 0.28419052], [1516433460000, 0.07214402, 0.0722, 0.07214402, 0.0722, 1.37165947], [1516433520000, 0.0722, 0.0723401, 0.0722, 0.0722, 1.22897807], [1516433580000, 0.0722, 0.0722, 0.0722, 0.0722, 0.6947], [1516433640000, 0.0722, 0.0723401, 0.07199997, 0.07199997, 1.4965747], [1516433700000, 0.0723401, 0.0723401, 0.07199997, 0.07199997, 0.80010247], [1516433760000, 0.0723401, 0.07234027, 0.0723401, 0.07234027, 10.65522767], [1516433820000, 0.07199997, 0.07199997, 0.07154933, 0.07199997, 0.74623365], [1516433880000, 0.07199997, 0.07199997, 0.07199997, 0.07199997, 0.3379894], [1516433940000, 0.07185092, 0.07185092, 0.07178212, 0.07178212, 1.2477], [1516434000000, 0.07178212, 0.07199997, 0.07153656, 0.07199997, 1.17793542], [1516434060000, 0.07177777, 0.07199997, 0.07177777, 0.07199997, 1.3246933], [1516434120000, 0.07199997, 0.07199997, 0.07199997, 0.07199997, 0.0174933], [1516434180000, 0.0721, 0.07214821, 0.0721, 0.07214821, 0.06441563], [1516434240000, 0.07199997, 0.07199997, 0.0717, 0.0717, 0.56198273], [1516434300000, 0.0717, 0.07216294, 0.0716, 0.07170001, 5.71513587], [1516434360000, 0.07170001, 0.07170001, 0.0716001, 0.0716001, 0.36865785], [1516434420000, 0.0716001, 0.071734, 0.07149686, 0.07149686, 0.15301244], [1516434480000, 0.07204835, 0.07204835, 0.07157463, 0.07157463, 0.16669353], [1516434540000, 0.07157463, 0.07205508, 0.07115821, 0.07205508, 122.31846446], [1516434600000, 0.07183761, 0.07183761, 0.07129203, 0.07176541, 0.62880092], [1516434660000, 0.07179712, 0.07179712, 0.07179712, 0.07179712, 0.1140473], [1516434720000, 0.07129209, 0.07129209, 0.07129209, 0.07129209, 0.03], [1516434780000, 0.07129211, 0.07177586, 0.07129211, 0.07177586, 0.03788503], [1516434840000, 0.07180489, 0.07180489, 0.07180489, 0.07180489, 0.03955531], [1516434900000, 0.07179724, 0.07181752, 0.07179724, 0.07181752, 0.23159419], [1516434960000, 0.07179724, 0.07179724, 0.07179724, 0.07179724, 1.13893291], [1516435020000, 0.07181752, 0.07181752, 0.07181752, 0.07181752, 0.156552], [1516435080000, 0.07179725, 0.07179725, 0.07179724, 0.07179724, 7.32489953], [1516435140000, 0.07179724, 0.07179724, 0.07179724, 0.07179724, 24.32163943], [1516435200000, 0.07179724, 0.07189409, 0.07179724, 0.07179724, 9.78868842], [1516435260000, 0.07179724, 0.0719075, 0.07179724, 0.0719075, 3.5946274], [1516435320000, 0.0719075, 0.0719075, 0.07179724, 0.07179724, 3.9519914], [1516435380000, 0.0718514, 0.07192207, 0.0718514, 0.07191689, 42.00841706], [1516435440000, 0.07191689, 0.07193674, 0.07191689, 0.07191691, 0.38837802], [1516435500000, 0.07191691, 0.07193674, 0.07191689, 0.07191689, 5.55898003], [1516435560000, 0.0719169, 0.07193674, 0.07191689, 0.07191689, 2.00911536], [1516435620000, 0.07191689, 0.07191689, 0.07191689, 0.07191689, 0.2766], [1516435680000, 0.07191689, 0.07191689, 0.07191689, 0.07191689, 3.52113767], [1516435740000, 0.07193569, 0.07193675, 0.07191689, 0.07191689, 5.87230377], [1516435860000, 0.07191689, 0.07201018, 0.07191689, 0.07201018, 2.86054993], [1516435920000, 0.07201018, 0.07213282, 0.07191689, 0.0720805, 1.86614325], [1516435980000, 0.07206665, 0.07206665, 0.07191689, 0.07191689, 4.68508651], [1516436040000, 0.07191689, 0.07191689, 0.07191689, 0.07191689, 68.86897861], [1516436100000, 0.07200857, 0.07200857, 0.07200441, 0.07200441, 1.06385252], [1516436160000, 0.07200826, 0.07200826, 0.07191689, 0.07191689, 0.80334795], [1516436220000, 0.07199861, 0.07199861, 0.07191689, 0.07191689, 1.20262037], [1516436280000, 0.07191689, 0.07191689, 0.07191689, 0.07191689, 0.37099399], [1516436340000, 0.07201657, 0.07201657, 0.07191689, 0.07191689, 0.79406346], [1516436400000, 0.07191689, 0.07224732, 0.07191689, 0.07224732, 0.62897549], [1516436460000, 0.07191689, 0.07191689, 0.07191689, 0.07191689, 0.03612976], [1516436520000, 0.07191689, 0.07191689, 0.07191689, 0.07191689, 8.91089309], [1516436580000, 0.07191689, 0.07220554, 0.07191689, 0.07191689, 20.40674219], [1516436640000, 0.07227077, 0.07227077, 0.07191689, 0.07191689, 0.17457836], [1516436700000, 0.07191689, 0.07228203, 0.07191689, 0.07228203, 3.06554702], [1516436760000, 0.07191691, 0.07191691, 0.07191691, 0.07191691, 0.02653948], [1516436820000, 0.07191691, 0.07191691, 0.07191689, 0.07191689, 2.26097729], [1516436880000, 0.07191689, 0.07191691, 0.07191689, 0.07191689, 15.05637379], [1516436940000, 0.07191689, 0.07191689, 0.07191689, 0.07191689, 5.84245765], [1516437000000, 0.07191689, 0.07191689, 0.07146306, 0.07146306, 23.22373247], [1516437060000, 0.07142986, 0.07191687, 0.07142986, 0.07191687, 0.26270867], [1516437120000, 0.07191687, 0.07191687, 0.07191687, 0.07191687, 0.10372334], [1516437180000, 0.07191686, 0.07191686, 0.07191686, 0.07191686, 0.11], [1516437240000, 0.07191685, 0.07191685, 0.0715, 0.0715, 2.17871207], [1516437300000, 0.0715, 0.07191686, 0.0715, 0.07191683, 0.6740843], [1516437360000, 0.07189779, 0.07191683, 0.0715, 0.0715, 1.90169025], [1516437420000, 0.0715, 0.0715, 0.0715, 0.0715, 0.08510392], [1516437480000, 0.07146306, 0.07146306, 0.07146306, 0.07146306, 0.06000298], [1516437540000, 0.0717, 0.0717, 0.07134765, 0.07134765, 1.02713586], [1516437600000, 0.07134765, 0.07134765, 0.07134765, 0.07134765, 1.71986268], [1516437660000, 0.07134765, 0.07177494, 0.07134765, 0.07134765, 0.40370627], [1516437720000, 0.07134766, 0.07134766, 0.07134766, 0.07134766, 0.05217199], [1516437780000, 0.07183847, 0.07183847, 0.07180921, 0.07180921, 0.22065488], [1516437840000, 0.07134787, 0.07182215, 0.07134787, 0.07182215, 0.8283944], [1516437900000, 0.07182214, 0.07182214, 0.0718164, 0.0718164, 0.08116097], [1516437960000, 0.07152913, 0.07182892, 0.07152913, 0.07182892, 0.10131908], [1516438020000, 0.07185933, 0.07185933, 0.07185933, 0.07185933, 0.02029576], [1516438080000, 0.07182892, 0.07182892, 0.07182892, 0.07182892, 0.39947171], [1516438140000, 0.07182892, 0.07182892, 0.07182892, 0.07182892, 0.22030436], [1516438200000, 0.07182892, 0.07182892, 0.07182892, 0.07182892, 0.01541332], [1516438260000, 0.07155, 0.07155, 0.07152913, 0.07152913, 0.44138319], [1516438320000, 0.07173158, 0.0717997, 0.07146063, 0.07174672, 4.06204125], [1516438380000, 0.07152913, 0.07174671, 0.07129203, 0.07134765, 3.1859961], [1516438440000, 0.07134782, 0.07134783, 0.07134782, 0.07134783, 0.4422258], [1516438500000, 0.07134784, 0.07168002, 0.07134781, 0.07168002, 2.22495719], [1516438560000, 0.07134785, 0.07134785, 0.07134785, 0.07134785, 0.05304107], [1516438620000, 0.071675, 0.071675, 0.071675, 0.071675, 0.11135729], [1516438680000, 0.0713883, 0.0713883, 0.0713883, 0.0713883, 0.56490289], [1516438740000, 0.0713479, 0.0713479, 0.07134789, 0.07134789, 3.29284389], [1516438800000, 0.0713479, 0.0713479, 0.07134782, 0.07134789, 2.30473114], [1516438860000, 0.07134784, 0.0713479, 0.07134783, 0.0713479, 0.73422945], [1516438920000, 0.07134788, 0.0713479, 0.07134788, 0.0713479, 5.0582122], [1516438980000, 0.0713479, 0.07134792, 0.0713479, 0.07134791, 0.18787692], [1516439040000, 0.071675, 0.07168838, 0.071675, 0.07168838, 0.21945382], [1516439100000, 0.0717102, 0.07174668, 0.0717102, 0.07173027, 3.04477876], [1516439160000, 0.07173027, 0.07174668, 0.07110001, 0.07122476, 20.1082958], [1516439220000, 0.07132848, 0.07168149, 0.07132848, 0.07168149, 2.28093319], [1516439280000, 0.07168149, 0.07168149, 0.07168148, 0.07168148, 1.06233378], [1516439340000, 0.0714308, 0.0714308, 0.07122036, 0.07122036, 0.10153533], [1516439400000, 0.07168149, 0.07168149, 0.07168149, 0.07168149, 0.139506], [1516439460000, 0.07168149, 0.07174567, 0.07137267, 0.07137268, 5.06840609], [1516439520000, 0.07137268, 0.0713805, 0.07137268, 0.0713805, 1.025], [1516439580000, 0.07140859, 0.07173805, 0.07140859, 0.07145118, 1.56859168], [1516439640000, 0.07138052, 0.07138052, 0.071205, 0.0713438, 0.77665827], [1516439700000, 0.07144141, 0.07181693, 0.07144141, 0.07144813, 1.46366121], [1516439760000, 0.07144813, 0.0718, 0.07125143, 0.07138396, 1.06379809], [1516439820000, 0.071384, 0.0718, 0.071384, 0.0718, 0.16358673], [1516439880000, 0.0718, 0.07182892, 0.0718, 0.07181693, 1.15551003], [1516439940000, 0.07181693, 0.07182892, 0.07154426, 0.07158368, 0.25260282], [1516440000000, 0.07179999, 0.07182892, 0.07179999, 0.07182892, 0.6157152], [1516440060000, 0.07179999, 0.07182892, 0.07161659, 0.07182892, 0.78440866], [1516440120000, 0.07182892, 0.07187904, 0.07182892, 0.07187904, 1.735788], [1516440180000, 0.07172902, 0.07187904, 0.07172902, 0.07187904, 7.81367528], [1516440240000, 0.07191685, 0.07191685, 0.07191685, 0.07191685, 0.75], [1516440300000, 0.07191685, 0.07191685, 0.07191685, 0.07191685, 0.38309729], [1516440360000, 0.07191685, 0.07191685, 0.07191685, 0.07191685, 0.12460631], [1516440420000, 0.07191685, 0.07191685, 0.07191685, 0.07191685, 4.79749903], [1516440600000, 0.0722951, 0.07234027, 0.0722951, 0.07234027, 0.26845151], [1516440660000, 0.07234026, 0.07234027, 0.07219047, 0.07229511, 1.23365518], [1516440720000, 0.07234027, 0.07234027, 0.07191685, 0.07191686, 3.0238487], [1516440780000, 0.07194534, 0.07196352, 0.07194534, 0.07196352, 1.02218791], [1516440840000, 0.07196352, 0.07196352, 0.07191686, 0.07191686, 0.15734406], [1516440900000, 0.07192771, 0.07234027, 0.07192771, 0.07234027, 2.89303342], [1516440960000, 0.07234026, 0.07234026, 0.07234026, 0.07234026, 0.27647122], [1516441020000, 0.07191695, 0.07191695, 0.07191695, 0.07191695, 0.04801981], [1516441080000, 0.07234025, 0.07255742, 0.07213347, 0.07213347, 2.5796695], [1516441140000, 0.07255047, 0.0725999, 0.07205654, 0.07205655, 1.67844832], [1516441200000, 0.07205655, 0.07259999, 0.07205655, 0.07216656, 2.34153942], [1516441260000, 0.07210609, 0.07259996, 0.07210609, 0.07259996, 0.69890489], [1516441320000, 0.07216656, 0.0723, 0.07212416, 0.0723, 6.14600191], [1516441380000, 0.0723, 0.0723, 0.072124, 0.0723, 0.07221638], [1516441440000, 0.07222552, 0.0723, 0.07222552, 0.0723, 0.12213825], [1516441500000, 0.07222295, 0.07263999, 0.07222295, 0.07263996, 1.38303301], [1516441560000, 0.07263995, 0.07263995, 0.07263995, 0.07263995, 0.03109299], [1516441620000, 0.07231691, 0.07300354, 0.07231691, 0.07300354, 6.77061154], [1516441680000, 0.07212402, 0.07263996, 0.072124, 0.07227525, 0.53698767], [1516441740000, 0.07263996, 0.07263996, 0.072124, 0.072124, 4.18461601], [1516441800000, 0.07259948, 0.0726315, 0.07259948, 0.0726315, 0.6662051], [1516441860000, 0.0726315, 0.07264, 0.0721868, 0.07264, 3.36311233], [1516441920000, 0.07273048, 0.07274052, 0.07272998, 0.07272998, 3.57529997], [1516441980000, 0.0722774, 0.07242998, 0.0722774, 0.07242998, 0.07857738], [1516442040000, 0.07227906, 0.07242998, 0.07227906, 0.07242998, 2.05335939], [1516442100000, 0.07242997, 0.07272906, 0.07235034, 0.07272906, 0.19106492], [1516442160000, 0.07272906, 0.07272906, 0.07233929, 0.07233929, 0.14716275], [1516442280000, 0.07272906, 0.07272906, 0.07272906, 0.07272906, 0.11380148], [1516442340000, 0.07254744, 0.07274191, 0.07254744, 0.07274191, 0.06495335], [1516442400000, 0.07274191, 0.07289775, 0.07251358, 0.07251358, 0.36252671], [1516442460000, 0.07251358, 0.07251358, 0.07251358, 0.07251358, 0.01444306], [1516442520000, 0.07287265, 0.07287265, 0.07287265, 0.07287265, 0.05044222], [1516442580000, 0.0725136, 0.07289774, 0.0725136, 0.07289774, 1.08005532], [1516442640000, 0.07280965, 0.07280965, 0.07280965, 0.07280965, 0.24402392], [1516442700000, 0.0728, 0.07280965, 0.0728, 0.0728, 0.82966582], [1516442760000, 0.0728, 0.07280965, 0.0725146, 0.07258711, 1.57220689], [1516442820000, 0.07251358, 0.07280965, 0.07251358, 0.07251358, 0.78557607], [1516442880000, 0.07280965, 0.07280965, 0.07280964, 0.07280964, 0.08170414], [1516442940000, 0.07280964, 0.07280965, 0.07280964, 0.07280964, 0.48269623], [1516443000000, 0.07280965, 0.07300353, 0.07280965, 0.07300353, 0.78331527], [1516443060000, 0.07251358, 0.07251358, 0.07246019, 0.07246019, 0.27554421], [1516443120000, 0.07248897, 0.07248897, 0.07213218, 0.07213218, 3.3557069], [1516443180000, 0.07259174, 0.0729059, 0.07229792, 0.07241898, 0.34669971], [1516443240000, 0.072438, 0.072438, 0.072438, 0.072438, 0.09161164], [1516443300000, 0.07289216, 0.07290592, 0.0728784, 0.0728784, 0.33133827], [1516443360000, 0.07253321, 0.0725991, 0.07246614, 0.07246614, 12.24051342], [1516443420000, 0.0729, 0.0729, 0.0729, 0.0729, 0.06512675], [1516443480000, 0.0725577, 0.07300354, 0.07241866, 0.07241866, 13.40565367], [1516443540000, 0.07248598, 0.07248598, 0.07245629, 0.07248598, 3.90161693], [1516443600000, 0.07298448, 0.07298448, 0.07248598, 0.07248598, 0.15679017], [1516443660000, 0.07297093, 0.07297093, 0.07247375, 0.07247375, 2.82415084], [1516443720000, 0.07248598, 0.07248598, 0.0724458, 0.07248598, 0.18588782], [1516443780000, 0.07248598, 0.07248601, 0.07243364, 0.07243364, 8.0276], [1516443840000, 0.07243364, 0.07243364, 0.07243364, 0.07243364, 0.02905072], [1516443900000, 0.07235858, 0.07285947, 0.07235858, 0.07241415, 5.93358069], [1516443960000, 0.0728415, 0.0728415, 0.07229792, 0.07229792, 0.33890775], [1516444020000, 0.07259792, 0.07273322, 0.07259792, 0.07273322, 0.03694675], [1516444080000, 0.07273322, 0.07273322, 0.07229792, 0.07229792, 1.41703713], [1516444140000, 0.07229792, 0.07274942, 0.07229792, 0.07229792, 0.60757564], [1516444200000, 0.07271519, 0.07283116, 0.07212407, 0.07271117, 4.56727652], [1516444260000, 0.07228097, 0.07232417, 0.07228097, 0.07232417, 0.05029504], [1516444320000, 0.07231178, 0.07233899, 0.07216075, 0.07233899, 0.27782915], [1516444380000, 0.07238375, 0.0728594, 0.07238375, 0.0728594, 1.59066793], [1516444440000, 0.07219328, 0.07274123, 0.07212418, 0.07228314, 1.55235245], [1516444500000, 0.07229999, 0.07270763, 0.07227514, 0.07270763, 1.06077739], [1516444560000, 0.07270763, 0.07270763, 0.07212888, 0.07212889, 0.9823794], [1516444620000, 0.0726011, 0.0726011, 0.0726011, 0.0726011, 0.2], [1516444740000, 0.07212921, 0.07212922, 0.07212917, 0.07212918, 0.52985877], [1516444800000, 0.0725, 0.0725, 0.072124, 0.072124, 9.33759688], [1516444860000, 0.07212928, 0.07212928, 0.07212928, 0.07212928, 0.7047], [1516444980000, 0.07202552, 0.07202553, 0.07192039, 0.07192039, 3.3491475], [1516445040000, 0.07202553, 0.07246, 0.07192046, 0.07192046, 1.92841448], [1516445100000, 0.07202592, 0.0724599, 0.0719603, 0.0719603, 1.04474348], [1516445160000, 0.0719603, 0.0723, 0.0719603, 0.0723, 1.05843593], [1516445220000, 0.07192063, 0.0723, 0.07192063, 0.0723, 0.13426887], [1516445280000, 0.0723, 0.07317997, 0.07192085, 0.07192085, 17.49325586], [1516445340000, 0.07202395, 0.07249359, 0.07192089, 0.07192092, 0.31458365], [1516445400000, 0.07192097, 0.07247049, 0.071902, 0.071902, 11.80522856], [1516445460000, 0.071902, 0.071902, 0.071902, 0.071902, 0.03055453], [1516445520000, 0.07190204, 0.07190209, 0.07190204, 0.07190209, 0.77746176], [1516445580000, 0.07190214, 0.07190217, 0.07190214, 0.07190215, 1.29846066], [1516445640000, 0.07248094, 0.07249325, 0.07248094, 0.07249325, 2.78482606], [1516445700000, 0.07203947, 0.07249326, 0.07190235, 0.07190238, 2.08043023], [1516445760000, 0.07190257, 0.07190264, 0.07190257, 0.07190264, 0.63288346], [1516445820000, 0.07190288, 0.07249326, 0.07190257, 0.07249326, 22.02944366], [1516445880000, 0.072, 0.072, 0.071903, 0.071903, 5.00422834], [1516445940000, 0.071903, 0.071903, 0.07190299, 0.07190299, 0.62357001], [1516446000000, 0.072, 0.072, 0.072, 0.072, 0.79992272], [1516446060000, 0.071903, 0.072, 0.071903, 0.072, 0.83159721], [1516446120000, 0.072, 0.072, 0.072, 0.072, 0.55154253], [1516446180000, 0.072, 0.072, 0.071903, 0.07190301, 4.04955388], [1516446240000, 0.072, 0.072, 0.072, 0.072, 0.3413331], [1516446300000, 0.072, 0.07236642, 0.072, 0.07236642, 9.41380688], [1516446360000, 0.07236642, 0.07236642, 0.071932, 0.071932, 0.1635984], [1516446420000, 0.07236642, 0.07236643, 0.07236642, 0.07236643, 0.02093493], [1516446480000, 0.07236643, 0.07236643, 0.07236643, 0.07236643, 0.129367], [1516446540000, 0.07193263, 0.07236643, 0.07193263, 0.07236643, 0.0816547], [1516446600000, 0.07236643, 0.07236643, 0.0719323, 0.07236643, 0.56003331], [1516446660000, 0.07193251, 0.07236643, 0.07147907, 0.07180002, 88.93670572], [1516446720000, 0.07180002, 0.07180002, 0.07180001, 0.07180002, 0.68335051], [1516446780000, 0.07236892, 0.07236893, 0.07236892, 0.07236893, 0.1416037], [1516446840000, 0.07236891, 0.07236893, 0.07236891, 0.07236893, 0.01535518], [1516446900000, 0.07236892, 0.07236892, 0.07236891, 0.07236891, 0.93485636], [1516446960000, 0.07236891, 0.07236891, 0.07236891, 0.07236891, 0.05999905], [1516447020000, 0.07236891, 0.07239492, 0.07221199, 0.07221199, 5.11903406], [1516447080000, 0.07239492, 0.07239492, 0.07221199, 0.07239492, 1.01781451], [1516447140000, 0.07227999, 0.07239493, 0.07227999, 0.07239493, 0.67024021], [1516447200000, 0.07239493, 0.07239493, 0.07187506, 0.07187508, 1.3462238], [1516447260000, 0.07187508, 0.0728879, 0.07187508, 0.07187513, 20.14235829], [1516447320000, 0.07187587, 0.07187587, 0.07187587, 0.07187587, 0.02837489], [1516447380000, 0.07288738, 0.07288738, 0.0718759, 0.07215851, 4.22220648], [1516447440000, 0.07276401, 0.07276401, 0.07187747, 0.07187747, 0.29436341], [1516447500000, 0.07197747, 0.07262506, 0.07197699, 0.07262506, 2.52269302], [1516447560000, 0.07195017, 0.07195017, 0.07195017, 0.07195017, 0.06183424], [1516447680000, 0.07237506, 0.07237506, 0.07237506, 0.07237506, 0.888989], [1516447800000, 0.0723749, 0.0723749, 0.0723749, 0.0723749, 0.13612603], [1516447860000, 0.07237506, 0.0725, 0.07200001, 0.07200001, 1.27280328], [1516447920000, 0.07200001, 0.0725, 0.07194786, 0.07194786, 0.66191149], [1516447980000, 0.0723, 0.0723, 0.0723, 0.0723, 13.8455], [1516448040000, 0.0723, 0.0723, 0.0723, 0.0723, 2.75933944], [1516448100000, 0.0723, 0.0723, 0.0723, 0.0723, 0.76360906], [1516448160000, 0.072299, 0.072299, 0.072299, 0.072299, 0.40738692], [1516448220000, 0.07194793, 0.072299, 0.07194786, 0.072299, 1.72480798], [1516448280000, 0.07194787, 0.07225, 0.07194787, 0.07225, 1.024313], [1516448340000, 0.07224991, 0.07224991, 0.07224, 0.07224, 12.45978914], [1516448400000, 0.07224, 0.07225, 0.07194809, 0.07194809, 17.05906882], [1516448460000, 0.07223992, 0.07225, 0.07194844, 0.07194922, 0.95915908], [1516448520000, 0.07224992, 0.072299, 0.07217229, 0.072299, 9.10071618], [1516448580000, 0.072299, 0.072299, 0.072299, 0.072299, 4.67210508], [1516448640000, 0.072299, 0.072299, 0.07223554, 0.072299, 3.01534696], [1516448700000, 0.07217229, 0.072299, 0.07217229, 0.072299, 0.90018426], [1516448760000, 0.07208595, 0.07208595, 0.07208595, 0.07208595, 0.23796252], [1516448820000, 0.07194803, 0.072299, 0.07194802, 0.072299, 1.01532358], [1516448880000, 0.072299, 0.07249999, 0.07194814, 0.07194814, 2.4736044], [1516448940000, 0.07249998, 0.07249998, 0.07249998, 0.07249998, 0.07550428], [1516449060000, 0.07194801, 0.07194801, 0.07194801, 0.07194801, 0.02958714], [1516449120000, 0.07249795, 0.07249795, 0.07185193, 0.07248481, 21.77282625], [1516449180000, 0.07186413, 0.07186413, 0.07180071, 0.07180077, 2.97438932], [1516449240000, 0.07239987, 0.0723999, 0.07239986, 0.07239986, 1.35400574], [1516449300000, 0.07239986, 0.0723999, 0.07239986, 0.0723999, 5.68881311], [1516449360000, 0.07229267, 0.07232493, 0.07229267, 0.07232493, 6.61911645], [1516449420000, 0.07232493, 0.0725, 0.07231391, 0.07231391, 27.49414748], [1516449480000, 0.07193204, 0.07261421, 0.07187375, 0.07195782, 53.25971992], [1516449540000, 0.07193082, 0.07231643, 0.07180089, 0.0719511, 17.05669072], [1516449600000, 0.0719511, 0.0719511, 0.0718, 0.07182058, 7.58371423], [1516449660000, 0.07216674, 0.07216674, 0.0716242, 0.07162424, 4.55123729], [1516449780000, 0.07181226, 0.07205146, 0.07140002, 0.07181226, 3.18815524], [1516449840000, 0.07200697, 0.07200697, 0.07181226, 0.07181226, 0.13240452], [1516449900000, 0.07181226, 0.07197945, 0.07181226, 0.07197945, 0.94513177], [1516450020000, 0.07197945, 0.07197945, 0.07197945, 0.07197945, 0.04143248], [1516450140000, 0.07197945, 0.07197945, 0.07197945, 0.07197945, 4.10743028], [1516450200000, 0.07197945, 0.07204709, 0.07197945, 0.07204709, 5.4500327], [1516450260000, 0.07197945, 0.07197945, 0.07181226, 0.07181226, 1.31005477], [1516450320000, 0.07181226, 0.07181226, 0.07181226, 0.07181226, 0.24030856], [1516450380000, 0.07154326, 0.07181226, 0.07154326, 0.07181226, 1.13757074], [1516450440000, 0.07154327, 0.07154327, 0.07154327, 0.07154327, 0.07641715], [1516450500000, 0.07181215, 0.07181215, 0.07154326, 0.07154326, 2.01275079], [1516450560000, 0.07154326, 0.07154326, 0.07154075, 0.07154326, 1.49843605], [1516450620000, 0.07154073, 0.07154326, 0.07154073, 0.07154326, 1.47766576], [1516450740000, 0.07195896, 0.07195896, 0.07195896, 0.07195896, 0.06675723], [1516450800000, 0.07195897, 0.07195897, 0.07154326, 0.07154326, 1.04703263], [1516450860000, 0.07195896, 0.07195897, 0.07195896, 0.07195897, 0.3024072], [1516450980000, 0.07195896, 0.07195896, 0.07195896, 0.07195896, 0.00835864], [1516451040000, 0.07195897, 0.07198605, 0.07195897, 0.07198605, 14.34100197], [1516451100000, 0.07198604, 0.07204709, 0.07154073, 0.07154073, 1.20686093], [1516451160000, 0.07204708, 0.07204708, 0.07198603, 0.07198603, 0.57204479], [1516451220000, 0.07198602, 0.07198602, 0.07154073, 0.07154073, 0.08156598], [1516451340000, 0.07198595, 0.07198595, 0.07198595, 0.07198595, 0.03923652], [1516451400000, 0.07198596, 0.07198596, 0.07198596, 0.07198596, 0.14647135], [1516451460000, 0.07198595, 0.07204709, 0.07198595, 0.07204709, 0.09929295], [1516451520000, 0.07198595, 0.07204709, 0.07198595, 0.07204709, 0.29691636], [1516451640000, 0.07198594, 0.07198594, 0.07198594, 0.07198594, 0.91], [1516451700000, 0.07154075, 0.07198594, 0.07140001, 0.07198594, 4.49732889], [1516451760000, 0.07141772, 0.07141772, 0.07141772, 0.07141772, 0.00888236], [1516451820000, 0.0719859, 0.0719859, 0.0714, 0.07140001, 2.99227945], [1516451880000, 0.0714, 0.07198578, 0.0714, 0.07198562, 0.34996405], [1516451940000, 0.07198562, 0.07198563, 0.07115641, 0.07119601, 0.58734284], [1516452000000, 0.0719853, 0.0719853, 0.0712381, 0.07123834, 5.57688429], [1516452120000, 0.07165616, 0.07197, 0.07165616, 0.07197, 0.28690623], [1516452180000, 0.07198595, 0.07231577, 0.07177, 0.07231577, 0.61152565], [1516452240000, 0.07228782, 0.07228782, 0.072, 0.072, 0.04580483], [1516452300000, 0.07156854, 0.072, 0.07156854, 0.072, 1.01585169], [1516452360000, 0.072, 0.072, 0.072, 0.072, 0.06600516], [1516452420000, 0.072, 0.072, 0.072, 0.072, 0.05206166], [1516452480000, 0.072, 0.072, 0.072, 0.072, 0.02947427], [1516452540000, 0.07228709, 0.07228709, 0.07228701, 0.07228701, 0.98243594], [1516452600000, 0.07228694, 0.07228695, 0.07228692, 0.07228692, 0.39427101], [1516452780000, 0.07156858, 0.07156858, 0.07156855, 0.07156855, 0.09665134], [1516452840000, 0.07156855, 0.07156855, 0.07156853, 0.07156854, 0.02691842], [1516452900000, 0.07228657, 0.07228657, 0.07125057, 0.07125057, 4.13833822], [1516452960000, 0.07156854, 0.07228648, 0.07156854, 0.07228645, 0.51913892], [1516453020000, 0.07228642, 0.07228642, 0.07228642, 0.07228642, 1.00861564], [1516453080000, 0.07228599, 0.07228599, 0.07156854, 0.07156854, 0.06878539], [1516453140000, 0.07156854, 0.07156854, 0.07156854, 0.07156854, 0.00692248], [1516453200000, 0.07228586, 0.07228586, 0.07228578, 0.07228578, 1.61411089], [1516453260000, 0.07125386, 0.07228578, 0.07125386, 0.07228578, 6.63423555], [1516453320000, 0.07228578, 0.07228578, 0.07228578, 0.07228578, 0.01243951], [1516453380000, 0.07228579, 0.07228579, 0.07228579, 0.07228579, 0.56459028], [1516453500000, 0.0722, 0.07228578, 0.0722, 0.07227199, 0.67625223], [1516453560000, 0.07228575, 0.07228575, 0.07203293, 0.07228573, 0.90544521], [1516453620000, 0.07131658, 0.07228567, 0.07131658, 0.07228567, 0.60898725], [1516453680000, 0.07228565, 0.07228565, 0.07228565, 0.07228565, 0.18209542], [1516453740000, 0.07228565, 0.07228565, 0.07228565, 0.07228565, 1.038621], [1516453800000, 0.07135033, 0.07225894, 0.07135033, 0.07225894, 0.26839125], [1516453860000, 0.07135128, 0.07228558, 0.07135127, 0.07225876, 15.61179014], [1516453920000, 0.07225876, 0.07231643, 0.07225875, 0.07231642, 10.45993782], [1516453980000, 0.07231642, 0.07231643, 0.07231642, 0.07231642, 1.40462785], [1516454040000, 0.0719891, 0.0719891, 0.0719891, 0.0719891, 0.07427267], [1516454100000, 0.07231642, 0.07231642, 0.07231642, 0.07231642, 0.4455676], [1516454160000, 0.07231642, 0.07231642, 0.07190734, 0.07190734, 2.08904655], [1516454220000, 0.07190734, 0.07190734, 0.07190734, 0.07190734, 0.22240361], [1516454280000, 0.07190724, 0.07190734, 0.07136209, 0.07190734, 3.84977951], [1516454340000, 0.07190734, 0.07190734, 0.07190734, 0.07190734, 14.43779695], [1516454400000, 0.07190734, 0.07231643, 0.07147501, 0.07231643, 11.58904777], [1516454460000, 0.07231643, 0.07231643, 0.07231643, 0.07231643, 0.12040048], [1516454580000, 0.07152202, 0.07231643, 0.07152202, 0.07231643, 0.15031894], [1516454640000, 0.07231643, 0.07231643, 0.071583, 0.071583, 0.20704258], [1516454700000, 0.07231643, 0.07231643, 0.07231643, 0.07231643, 0.54639062], [1516454760000, 0.07231643, 0.07231643, 0.07231643, 0.07231643, 0.42218181], [1516454820000, 0.07261639, 0.07261639, 0.07224419, 0.07224419, 5.92196865], [1516454880000, 0.0719496, 0.0724055, 0.0719496, 0.0724055, 0.19332333], [1516454940000, 0.0724055, 0.0724055, 0.07194965, 0.07194965, 0.19425836], [1516455000000, 0.07261635, 0.07261635, 0.07261621, 0.07261621, 0.7532084], [1516455060000, 0.0726, 0.0726, 0.07194989, 0.07194989, 0.91488357], [1516455180000, 0.07195003, 0.07195004, 0.07195001, 0.07195004, 1.18674089], [1516455240000, 0.07195, 0.07195003, 0.07194989, 0.07194997, 5.4632005], [1516455300000, 0.07194997, 0.07249987, 0.07194997, 0.07249987, 0.57126486], [1516455360000, 0.07194959, 0.07194959, 0.07194959, 0.07194959, 0.6966], [1516455420000, 0.07249945, 0.07249945, 0.07249939, 0.07249939, 0.16624893], [1516455480000, 0.07194959, 0.07249926, 0.07194959, 0.07249926, 1.42757667], [1516455540000, 0.07244315, 0.07248908, 0.0724, 0.07244315, 0.69079857], [1516455600000, 0.07244307, 0.07248908, 0.07244307, 0.07248907, 0.70734109], [1516455660000, 0.07248907, 0.07248907, 0.07248907, 0.07248907, 0.06405654], [1516455720000, 0.07248906, 0.07248906, 0.07248906, 0.07248906, 0.2], [1516455840000, 0.07248907, 0.07248907, 0.07248905, 0.07248905, 0.15023055], [1516455900000, 0.07248905, 0.0724999, 0.07164233, 0.0724999, 7.80167663], [1516455960000, 0.0724999, 0.0727, 0.0724999, 0.0727, 5.56965353], [1516456020000, 0.07269999, 0.07269999, 0.07262388, 0.07262388, 0.08916259], [1516456080000, 0.07262388, 0.07262388, 0.07262388, 0.07262388, 0.97354656], [1516456140000, 0.07262388, 0.07262388, 0.07262388, 0.07262388, 0.43194452], [1516456200000, 0.07262388, 0.07269999, 0.07262388, 0.07269999, 15.00261692], [1516456260000, 0.07269999, 0.07269999, 0.07269999, 0.07269999, 0.03057201], [1516456320000, 0.07269999, 0.07269999, 0.07269999, 0.07269999, 0.07037018], [1516456380000, 0.07269999, 0.07269999, 0.07269999, 0.07269999, 0.01527716], [1516456440000, 0.07218864, 0.07288944, 0.07218864, 0.07288944, 3.20323471], [1516456500000, 0.07288944, 0.07298068, 0.07288944, 0.07298068, 0.13719415], [1516456560000, 0.07288944, 0.07288944, 0.07225092, 0.07288944, 0.10302054], [1516456620000, 0.07288944, 0.07288944, 0.07225114, 0.0722512, 4.35789207], [1516456680000, 0.07225138, 0.07225138, 0.07225138, 0.07225138, 0.9], [1516456740000, 0.07225259, 0.07298042, 0.07225258, 0.07298042, 0.16441958], [1516456800000, 0.07298034, 0.07298041, 0.07298016, 0.07298041, 1.51472791], [1516456860000, 0.07298019, 0.0729802, 0.07298019, 0.07298019, 0.27513526], [1516456920000, 0.0729802, 0.0729802, 0.0722927, 0.07291, 1.29702803], [1516456980000, 0.072903, 0.07291, 0.072903, 0.07291, 0.07530149], [1516457040000, 0.07291, 0.07291, 0.0729, 0.0729, 0.20020574], [1516457100000, 0.0729, 0.07298018, 0.0729, 0.07298018, 4.30370155], [1516457160000, 0.07298018, 0.07298018, 0.07245783, 0.07245783, 6.56193428], [1516457280000, 0.07290719, 0.0729802, 0.07290719, 0.0729802, 1.10265021], [1516457400000, 0.07297414, 0.07297414, 0.0719742, 0.0719742, 8.81719217], [1516457460000, 0.0719742, 0.0719742, 0.0719742, 0.0719742, 21.94811063], [1516457520000, 0.07197431, 0.07197431, 0.07197431, 0.07197431, 0.11975308], [1516457580000, 0.072, 0.072, 0.072, 0.072, 6.46433211], [1516457640000, 0.072, 0.072, 0.072, 0.072, 0.30785245], [1516457820000, 0.072399, 0.072399, 0.072, 0.072, 0.3188059], [1516457880000, 0.072399, 0.0724, 0.072399, 0.0724, 0.50007064], [1516457940000, 0.0724, 0.0724, 0.07233799, 0.07233799, 0.5568419], [1516458000000, 0.0723375, 0.0723375, 0.0723375, 0.0723375, 0.01531804], [1516458060000, 0.0723375, 0.0723375, 0.0723375, 0.0723375, 0.171122], [1516458120000, 0.0723375, 0.0723375, 0.07197431, 0.0723375, 0.12950352], [1516458240000, 0.07197431, 0.07197431, 0.07197431, 0.07197431, 0.34056109], [1516458300000, 0.07197431, 0.07197431, 0.07197431, 0.07197431, 0.15857324], [1516458420000, 0.07197431, 0.07197431, 0.07197431, 0.07197431, 0.05], [1516458480000, 0.07197431, 0.07197431, 0.07197431, 0.07197431, 0.01531808], [1516458540000, 0.07215589, 0.07233744, 0.07215589, 0.07215589, 0.66592193], [1516458660000, 0.07233738, 0.07233738, 0.07172197, 0.07172197, 0.6401926], [1516458720000, 0.07215589, 0.07229999, 0.07172197, 0.07229999, 0.74737874], [1516458780000, 0.07172199, 0.07229995, 0.07172199, 0.07229995, 0.71257936], [1516458900000, 0.07229989, 0.07229989, 0.072, 0.072, 2.20509652], [1516459020000, 0.07209978, 0.07209978, 0.072, 0.072, 0.03077828], [1516459080000, 0.072, 0.072, 0.07199999, 0.07199999, 1.3075863], [1516459140000, 0.07199998, 0.07199999, 0.07199998, 0.07199999, 0.65979009], [1516459200000, 0.07199999, 0.072, 0.07164212, 0.072, 2.53029355], [1516459260000, 0.072, 0.072, 0.072, 0.072, 0.30912763], [1516459320000, 0.072, 0.072, 0.072, 0.072, 0.03077802], [1516459380000, 0.0716423, 0.072, 0.0716423, 0.072, 1.28150107], [1516459440000, 0.072, 0.072, 0.072, 0.072, 0.03077802], [1516459500000, 0.072, 0.07209978, 0.072, 0.072, 0.70150009], [1516459560000, 0.07209978, 0.07209978, 0.07209978, 0.07209978, 7.05525224], [1516459620000, 0.07209978, 0.07209978, 0.07209978, 0.07209978, 0.03068401], [1516459680000, 0.07209978, 0.0722998, 0.071883, 0.07225675, 4.08167377], [1516459740000, 0.07188311, 0.07229979, 0.07188311, 0.07229979, 0.31188371], [1516459800000, 0.07188312, 0.0722998, 0.07188312, 0.0722998, 6.41200125], [1516459860000, 0.07188318, 0.07209883, 0.07188315, 0.07209883, 16.89607719], [1516459980000, 0.07229974, 0.07229974, 0.0722997, 0.0722997, 0.4067002], [1516460040000, 0.07229968, 0.07229968, 0.07229968, 0.07229968, 0.36088876], [1516460100000, 0.07229969, 0.07229971, 0.07199601, 0.07229971, 1.38240577], [1516460160000, 0.07229971, 0.07229971, 0.0722997, 0.0722997, 0.08332104], [1516460220000, 0.0722997, 0.0722997, 0.0722997, 0.0722997, 0.03062674], [1516460280000, 0.0722997, 0.0722997, 0.07199601, 0.07199601, 2.26797601], [1516460340000, 0.0722997, 0.0722997, 0.0722997, 0.0722997, 0.03062674], [1516460400000, 0.0722997, 0.07229971, 0.0722997, 0.07229971, 1.13538137], [1516460460000, 0.07199601, 0.07229971, 0.07199601, 0.07229971, 0.05131096], [1516460520000, 0.07199601, 0.07229971, 0.07199601, 0.07199601, 1.02762912], [1516460580000, 0.07199601, 0.07199601, 0.07199601, 0.07199601, 0.17807481], [1516460640000, 0.07199408, 0.07229971, 0.07198123, 0.07198123, 3.69613927], [1516460700000, 0.07229971, 0.07229971, 0.07229971, 0.07229971, 0.15364334], [1516460760000, 0.07229971, 0.07229971, 0.07229971, 0.07229971, 0.015339], [1516460820000, 0.07229971, 0.07229971, 0.07187612, 0.07187612, 0.04803764], [1516460880000, 0.07229971, 0.07229971, 0.07229971, 0.07229971, 0.184126], [1516460940000, 0.07192158, 0.07192158, 0.07187609, 0.07187612, 1.03545], [1516461000000, 0.0722997, 0.07229971, 0.07173579, 0.07173579, 0.45438888], [1516461060000, 0.07229971, 0.07229972, 0.07229971, 0.07229972, 0.61497429], [1516461120000, 0.07190082, 0.07190082, 0.0717907, 0.0717907, 0.53915306], [1516461180000, 0.07179071, 0.07179071, 0.0717907, 0.0717907, 4.16940884], [1516461240000, 0.07193866, 0.0722, 0.07191219, 0.0719387, 7.68899833], [1516461300000, 0.07201064, 0.07219, 0.0719387, 0.07219, 0.61475651], [1516461420000, 0.0719571, 0.0719571, 0.0719571, 0.0719571, 0.02720724], [1516461480000, 0.0721, 0.0721, 0.0721, 0.0721, 0.03063817], [1516461540000, 0.0721, 0.0721, 0.0721, 0.0721, 3.08729753], [1516461600000, 0.0721, 0.0721, 0.0721, 0.0721, 0.1540125], [1516461660000, 0.0721, 0.0721, 0.0721, 0.0721, 0.15103511], [1516461720000, 0.0721, 0.0721, 0.0719571, 0.0721, 0.17393787], [1516461780000, 0.0719571, 0.0721, 0.0719571, 0.0721, 0.40006374], [1516461840000, 0.07205237, 0.0721, 0.07201142, 0.0721, 9.37998047], [1516461900000, 0.0721, 0.07218999, 0.07201142, 0.07201142, 1.04357198], [1516461960000, 0.07218999, 0.07218999, 0.0719571, 0.0719571, 0.73477073], [1516462020000, 0.07218999, 0.07218999, 0.0720571, 0.0720571, 0.58536279], [1516462080000, 0.0720571, 0.07301288, 0.07203458, 0.073, 289.26839761], [1516462140000, 0.073, 0.073, 0.07263498, 0.07287989, 2.68003471], [1516462200000, 0.07282647, 0.07310001, 0.07282647, 0.07291475, 112.41117452], [1516462260000, 0.07238058, 0.07291474, 0.07238058, 0.07238058, 2.3510233], [1516462320000, 0.07291718, 0.07320001, 0.07253724, 0.07258337, 67.38886929], [1516462380000, 0.07310727, 0.07350001, 0.0726029, 0.0735, 119.25356893], [1516462440000, 0.0735, 0.0735022, 0.0735, 0.0735, 43.47421353], [1516462500000, 0.0735, 0.07354959, 0.0735, 0.07354959, 71.6992411], [1516462560000, 0.07354959, 0.073564, 0.0735, 0.07350001, 37.71655164], [1516462620000, 0.07350001, 0.07350001, 0.07350001, 0.07350001, 5.88333222], [1516462680000, 0.07350001, 0.07350001, 0.07350001, 0.07350001, 3.02827239], [1516462740000, 0.07356399, 0.073564, 0.07350001, 0.07350001, 2.64615427], [1516462800000, 0.07350001, 0.07356399, 0.07299538, 0.07299538, 16.22174113], [1516462860000, 0.07302942, 0.07349478, 0.07291475, 0.0729148, 4.258183], [1516462920000, 0.0729148, 0.07401439, 0.0729148, 0.07313134, 327.20277829], [1516462980000, 0.07326001, 0.07326001, 0.07293081, 0.0730964, 3.76961799], [1516463040000, 0.07349843, 0.07349843, 0.07288968, 0.07295186, 7.31690427], [1516463100000, 0.07289006, 0.07418254, 0.07289006, 0.0741, 223.43668833], [1516463160000, 0.07357968, 0.07357968, 0.07288777, 0.07296361, 5.68296424], [1516463220000, 0.07316213, 0.07316213, 0.07316213, 0.07316213, 0.01510589], [1516463280000, 0.07316213, 0.07346645, 0.07316213, 0.07346645, 1.014571], [1516463400000, 0.07337155, 0.07337155, 0.07337155, 0.07337155, 0.28856328], [1516463460000, 0.07337, 0.07337155, 0.07337, 0.07337155, 0.06814626], [1516463580000, 0.07337155, 0.07337155, 0.07337155, 0.07337155, 1.5], [1516463640000, 0.07337155, 0.07337155, 0.07298231, 0.07298231, 0.46710146], [1516463700000, 0.07297188, 0.07345289, 0.07297188, 0.07297188, 1.84962078], [1516463760000, 0.07297188, 0.07297188, 0.07297188, 0.07297188, 0.24779545], [1516463820000, 0.07345507, 0.07345507, 0.07345507, 0.07345507, 0.2878991], [1516463880000, 0.07297191, 0.07344047, 0.07297191, 0.07344047, 1.31808628], [1516463940000, 0.07346824, 0.07346824, 0.07346824, 0.07346824, 0.01500216], [1516464000000, 0.07346824, 0.07347169, 0.07297192, 0.07347169, 0.73347714], [1516464060000, 0.07346824, 0.07346824, 0.07297196, 0.07297196, 1.31767485], [1516464120000, 0.07347169, 0.07354275, 0.0729719, 0.0729719, 0.29684223], [1516464180000, 0.07345205, 0.07345205, 0.07345205, 0.07345205, 0.02677526], [1516464240000, 0.07343229, 0.07343229, 0.07338938, 0.07338938, 0.24913755], [1516464300000, 0.0729719, 0.0733834, 0.07293191, 0.07324357, 4.84818559], [1516464360000, 0.07324357, 0.07334563, 0.07324357, 0.07333155, 3.28748392], [1516464420000, 0.07333155, 0.07333155, 0.07333155, 0.07333155, 0.27512057], [1516464480000, 0.07338938, 0.07338938, 0.07333155, 0.07333155, 0.24094105], [1516464540000, 0.07333155, 0.07333155, 0.07333155, 0.07333155, 0.16120602], [1516464600000, 0.07333155, 0.07338937, 0.07333155, 0.07337818, 2.23806227], [1516464720000, 0.07337818, 0.07337818, 0.07337817, 0.07337818, 1.33512396], [1516464840000, 0.07337818, 0.07337818, 0.07337817, 0.07337818, 2.86105739], [1516464900000, 0.07337817, 0.07337817, 0.07280034, 0.07280034, 0.6007005], [1516464960000, 0.07280049, 0.07280061, 0.07280049, 0.07280061, 1.78835302], [1516465020000, 0.07280056, 0.07337809, 0.07280052, 0.07280052, 2.30321894], [1516465140000, 0.07280052, 0.0728006, 0.07280052, 0.0728006, 4.05818764], [1516465200000, 0.073378, 0.073378, 0.07337797, 0.07337797, 0.34564132], [1516465260000, 0.07337791, 0.07337791, 0.07280075, 0.07280075, 0.10292335], [1516465320000, 0.07280077, 0.07280082, 0.07280077, 0.07280082, 0.4074976], [1516465440000, 0.07280104, 0.07280104, 0.07280104, 0.07280104, 0.06038525], [1516465500000, 0.07337773, 0.07337773, 0.07280124, 0.07280124, 0.43482654], [1516465560000, 0.07337769, 0.0733777, 0.07337769, 0.0733777, 0.02725624], [1516465620000, 0.07280145, 0.07280145, 0.07280145, 0.07280145, 0.248052], [1516465680000, 0.073, 0.073377, 0.07280463, 0.073377, 13.73133207], [1516465740000, 0.073377, 0.073377, 0.073377, 0.073377, 3.42541357], [1516465800000, 0.073377, 0.073377, 0.073377, 0.073377, 1.36256496], [1516465860000, 0.07287514, 0.073377, 0.07287514, 0.073377, 1.40814411], [1516465920000, 0.07307419, 0.07337786, 0.07307419, 0.07323543, 2.51692038], [1516465980000, 0.07337786, 0.07337818, 0.07329571, 0.07329623, 0.53866801], [1516466040000, 0.07329571, 0.07337818, 0.0732326, 0.07337818, 0.12500582], [1516466100000, 0.07323018, 0.07337813, 0.0730019, 0.07316293, 0.53716772], [1516466160000, 0.0733781, 0.07337813, 0.07322096, 0.07337813, 1.45067782], [1516466220000, 0.07337813, 0.07337813, 0.07303001, 0.07303001, 1.66246195], [1516466280000, 0.07337812, 0.07337813, 0.073241, 0.0732422, 1.40281884], [1516466340000, 0.07317795, 0.07337813, 0.07317795, 0.0732, 5.66382495], [1516466400000, 0.07303005, 0.0732, 0.07303005, 0.0732, 4.83606503], [1516466460000, 0.0732, 0.0732, 0.0732, 0.0732, 0.76731607], [1516466520000, 0.07337813, 0.07337813, 0.0732, 0.07326642, 2.63375036], [1516466580000, 0.07326642, 0.07347746, 0.07326642, 0.07347746, 5.43468469], [1516466640000, 0.07347746, 0.0735, 0.07320003, 0.07321, 6.50611223], [1516466700000, 0.07354274, 0.07358968, 0.07320003, 0.07320003, 2.30605638], [1516466820000, 0.07320004, 0.07320004, 0.07320004, 0.07320004, 1.40444406], [1516466880000, 0.07339038, 0.07339038, 0.07247639, 0.0725, 392.10672406], [1516466940000, 0.07246806, 0.07283403, 0.07207011, 0.07222073, 8.67686696], [1516467000000, 0.07283403, 0.07283403, 0.07222072, 0.07283402, 0.94073455], [1516467060000, 0.07232946, 0.07232946, 0.07232946, 0.07232946, 0.42742191], [1516467120000, 0.07232946, 0.07283401, 0.07232946, 0.07283401, 1.30167809], [1516467240000, 0.07283398, 0.07283399, 0.07207002, 0.07207002, 14.89329346], [1516467300000, 0.07283399, 0.07283399, 0.07221665, 0.07221665, 0.40859372], [1516467360000, 0.07245529, 0.07245529, 0.07245529, 0.07245529, 0.54311795], [1516467420000, 0.07245529, 0.07245529, 0.07245529, 0.07245529, 1.88373078], [1516467480000, 0.07245529, 0.07264464, 0.07245529, 0.07264464, 17.16078688], [1516467540000, 0.07264463, 0.07264464, 0.07245529, 0.07264464, 14.25351602], [1516467600000, 0.07264464, 0.07283399, 0.07264463, 0.07283399, 18.04494665], [1516467660000, 0.07283399, 0.07283399, 0.0726447, 0.07283399, 0.32854402], [1516467720000, 0.07283319, 0.07283319, 0.07283319, 0.07283319, 0.54111104], [1516467780000, 0.07283319, 0.07283319, 0.07275, 0.07283319, 1.3357214], [1516467840000, 0.07283319, 0.07283399, 0.07283319, 0.07283399, 0.342], [1516467900000, 0.07283399, 0.07322, 0.07283399, 0.07322, 0.60114331], [1516467960000, 0.0729235, 0.07322, 0.0729235, 0.07316774, 0.30070556], [1516468020000, 0.07321999, 0.07321999, 0.07316774, 0.07316781, 2.33162346], [1516468080000, 0.07316781, 0.07322, 0.07316779, 0.07322, 0.38681807], [1516468140000, 0.07316791, 0.07316791, 0.07292369, 0.07292369, 1.76958804], [1516468200000, 0.0735, 0.07358591, 0.07296865, 0.07296865, 4.44249536], [1516468260000, 0.07331625, 0.07352869, 0.07331625, 0.07331625, 0.49420997], [1516468320000, 0.07308317, 0.07331625, 0.07308317, 0.07331625, 1.43710353], [1516468380000, 0.07331626, 0.07358591, 0.07308317, 0.07315931, 8.77097091], [1516468440000, 0.07315931, 0.07315931, 0.07315931, 0.07315931, 2.31502415], [1516468500000, 0.0732, 0.0732, 0.07318094, 0.07318094, 1.4583466], [1516468620000, 0.07320141, 0.07320141, 0.07320141, 0.07320141, 0.06794779], [1516468740000, 0.07320141, 0.07358285, 0.0732, 0.0732, 0.22873503], [1516468800000, 0.0732, 0.07358285, 0.0732, 0.0732, 0.60957511], [1516468860000, 0.07358285, 0.07358285, 0.07358285, 0.07358285, 0.01334967], [1516468920000, 0.07325782, 0.07325782, 0.0732, 0.07322101, 14.75818178], [1516468980000, 0.07330101, 0.0735828, 0.07330101, 0.0735828, 0.25569741], [1516469040000, 0.0735828, 0.07358968, 0.0735828, 0.07358968, 2.75425592], [1516469100000, 0.07358968, 0.07362222, 0.0735828, 0.07362222, 1.66922044], [1516469160000, 0.07362222, 0.07362933, 0.0735828, 0.0735828, 0.10498319], [1516469220000, 0.0735828, 0.0735828, 0.0735828, 0.0735828, 1.0], [1516469280000, 0.07362932, 0.07389958, 0.07358281, 0.07358281, 2.18850305], [1516469340000, 0.0735828, 0.07389958, 0.0735828, 0.07389947, 2.34449301], [1516469400000, 0.07371472, 0.07371472, 0.07358281, 0.07371472, 1.58058495], [1516469460000, 0.07358286, 0.07389947, 0.07358286, 0.07371471, 0.81308541], [1516469520000, 0.07371471, 0.07391331, 0.07358288, 0.07391331, 21.13799557], [1516469580000, 0.07391331, 0.07405191, 0.07391331, 0.07400393, 6.53980915], [1516469640000, 0.07400393, 0.07405191, 0.07400393, 0.07400393, 1.06554972], [1516469700000, 0.07405191, 0.0740999, 0.07400393, 0.0740999, 5.81114643], [1516469760000, 0.0740999, 0.0740999, 0.07400393, 0.0740999, 6.99923096], [1516469820000, 0.0741, 0.07418254, 0.0741, 0.07418254, 15.71776322], [1516469880000, 0.07425212, 0.07433861, 0.07418254, 0.07425212, 3.00144198], [1516469940000, 0.07425212, 0.0743, 0.07425212, 0.0743, 2.40670087], [1516470000000, 0.0743, 0.0743, 0.07417499, 0.07417499, 1.49364198], [1516470060000, 0.07417499, 0.07432219, 0.07417499, 0.07417499, 2.5462392], [1516470120000, 0.07417499, 0.0743386, 0.07417499, 0.0743386, 0.29019998], [1516470180000, 0.07433859, 0.07433859, 0.074175, 0.0743222, 0.61638609], [1516470240000, 0.074175, 0.0744, 0.074175, 0.0744, 4.480776], [1516470300000, 0.0744, 0.0744, 0.0744, 0.0744, 0.1344086], [1516470360000, 0.07417499, 0.074175, 0.07417499, 0.074175, 8.45264823], [1516470420000, 0.07424917, 0.07424917, 0.07417499, 0.074175, 22.05152695], [1516470480000, 0.074175, 0.0744, 0.07417499, 0.0744, 7.20878656], [1516470540000, 0.0744, 0.07441981, 0.07417499, 0.07441981, 16.12818835], [1516470600000, 0.07441981, 0.07446398, 0.07441981, 0.07446398, 3.65617872], [1516470660000, 0.07446398, 0.07446823, 0.07446398, 0.07446398, 3.51414885], [1516470720000, 0.074464, 0.074464, 0.07446398, 0.07446398, 2.17725349], [1516470780000, 0.07446398, 0.0745, 0.07446398, 0.0745, 2.11273034], [1516470840000, 0.07458578, 0.07458578, 0.07446398, 0.07446398, 2.6814049], [1516470900000, 0.07446398, 0.07459, 0.07446398, 0.07446398, 3.90050837], [1516470960000, 0.07446398, 0.07459, 0.07446398, 0.07446398, 2.6536648], [1516471020000, 0.07446398, 0.07458997, 0.07446398, 0.07446399, 2.12117451], [1516471080000, 0.07446399, 0.07458991, 0.07446399, 0.07446399, 0.62306845], [1516471140000, 0.07446399, 0.07446399, 0.07446398, 0.07446398, 5.10965072], [1516471200000, 0.07446399, 0.07446399, 0.07446398, 0.07446398, 3.99733927], [1516471260000, 0.07446398, 0.07446399, 0.07446398, 0.07446398, 5.54566375], [1516471320000, 0.07446399, 0.07446399, 0.07446398, 0.07446398, 8.07417367], [1516471380000, 0.07446398, 0.07446399, 0.07441981, 0.07446399, 15.87362046], [1516471440000, 0.07441981, 0.07441981, 0.07440836, 0.07440836, 5.80208237], [1516471500000, 0.07446399, 0.07446399, 0.07440836, 0.07446398, 2.01854548], [1516471560000, 0.07446398, 0.07446398, 0.07446398, 0.07446398, 1.56422888], [1516471620000, 0.07446398, 0.07458988, 0.07446398, 0.07458475, 0.18012662], [1516471680000, 0.07446398, 0.07446398, 0.07440836, 0.07440836, 2.93797], [1516471740000, 0.07446398, 0.07446398, 0.07440001, 0.07440001, 1.71685303], [1516471800000, 0.07440001, 0.07446398, 0.07369, 0.07372627, 11.45929241], [1516471860000, 0.07374051, 0.07436551, 0.07369013, 0.07374061, 18.29251888], [1516471920000, 0.07374062, 0.07374062, 0.07355519, 0.07355519, 5.42692561], [1516471980000, 0.07358289, 0.07358289, 0.07344889, 0.07344889, 0.77871648], [1516472040000, 0.07369682, 0.07369682, 0.07369682, 0.07369682, 0.05010899], [1516472100000, 0.07369682, 0.07393758, 0.07369682, 0.07376968, 0.55767257], [1516472160000, 0.07376968, 0.07376968, 0.07342088, 0.07368911, 0.88229477], [1516472280000, 0.07338348, 0.07376968, 0.07338348, 0.07376968, 11.20632536], [1516472340000, 0.07359294, 0.07384399, 0.07320302, 0.07339223, 3.68682115], [1516472400000, 0.07388753, 0.07388753, 0.0736124, 0.0736124, 0.78965862], [1516472460000, 0.07388753, 0.07388753, 0.07388753, 0.07388753, 1.23460845], [1516472520000, 0.0736124, 0.0736124, 0.0736124, 0.0736124, 0.68093147], [1516472580000, 0.07388752, 0.07388753, 0.07388752, 0.07388753, 0.01832584], [1516472640000, 0.07388753, 0.07388753, 0.0736124, 0.07388752, 0.63940779], [1516472700000, 0.0736124, 0.07388753, 0.07339224, 0.07339224, 0.72102308], [1516472760000, 0.07339224, 0.07339224, 0.07339224, 0.07339224, 0.068], [1516472820000, 0.07339224, 0.0735, 0.07339223, 0.07339223, 2.06018877], [1516472880000, 0.07339223, 0.07339223, 0.07339223, 0.07339223, 0.25964909], [1516472940000, 0.0735, 0.0735, 0.07316936, 0.07316936, 1.40007616], [1516473000000, 0.07323411, 0.0735, 0.07315931, 0.07315932, 1.27387361], [1516473060000, 0.0735, 0.0735, 0.07331625, 0.0735, 0.67304077], [1516473120000, 0.0735, 0.0735, 0.07315931, 0.07315931, 0.2346131], [1516473180000, 0.07315931, 0.07315931, 0.07315931, 0.07315931, 0.18], [1516473240000, 0.0735, 0.0735, 0.0735, 0.0735, 0.06666666], [1516473300000, 0.0735, 0.0735, 0.07315931, 0.07315931, 0.54025199], [1516473360000, 0.0735, 0.0735, 0.0735, 0.0735, 0.00997878], [1516473420000, 0.0735, 0.0735, 0.0735, 0.0735, 4.08849449], [1516473480000, 0.0735, 0.07373237, 0.0735, 0.0735, 2.29100139], [1516473540000, 0.07373229, 0.0737323, 0.07373229, 0.0737323, 0.04232766], [1516473600000, 0.0737323, 0.07375489, 0.0735, 0.07375489, 2.07900175], [1516473660000, 0.07374305, 0.07374305, 0.0735, 0.0735, 5.52061244], [1516473720000, 0.0735, 0.0735, 0.07315931, 0.07315931, 0.72120271], [1516473780000, 0.07349989, 0.0734999, 0.07349989, 0.0734999, 0.07671788], [1516473900000, 0.07348, 0.0734999, 0.07348, 0.0734999, 0.47959428], [1516473960000, 0.0734999, 0.07360561, 0.07300001, 0.0734899, 0.97782749], [1516474020000, 0.0734899, 0.0734899, 0.07300017, 0.07300017, 1.66966045], [1516474080000, 0.07300028, 0.0730003, 0.07300028, 0.0730003, 0.10622147], [1516474140000, 0.07363476, 0.07369772, 0.07300048, 0.0735074, 6.4092292], [1516474200000, 0.073686, 0.07369772, 0.073686, 0.07369772, 1.46013055], [1516474260000, 0.07369772, 0.07383202, 0.07369772, 0.07383202, 1.96619786], [1516474320000, 0.07369772, 0.07388753, 0.07369772, 0.07388753, 3.5136467], [1516474380000, 0.07331134, 0.07331134, 0.07331134, 0.07331134, 0.05520645], [1516474440000, 0.07388752, 0.07388754, 0.07331193, 0.07331193, 9.46706012], [1516474500000, 0.07388752, 0.07389104, 0.07388752, 0.07389104, 0.08775188], [1516474620000, 0.07383315, 0.07383316, 0.07383314, 0.07383314, 3.51053396], [1516474680000, 0.07383319, 0.07383319, 0.07331193, 0.07383317, 0.32355644], [1516474740000, 0.07331202, 0.07331202, 0.07331202, 0.07331202, 0.04017875], [1516474800000, 0.07331218, 0.07383313, 0.07331218, 0.07383313, 0.20140367], [1516474860000, 0.07383313, 0.07383315, 0.07383313, 0.07383315, 0.174037], [1516474920000, 0.07383305, 0.07383317, 0.07331217, 0.07331217, 5.74204341], [1516474980000, 0.07331241, 0.07382658, 0.07331217, 0.07382658, 14.47364099], [1516475040000, 0.07382658, 0.07383317, 0.07382658, 0.07383315, 1.51732559], [1516475100000, 0.07383315, 0.07436996, 0.07383315, 0.07383315, 14.76315744], [1516475160000, 0.07383315, 0.07399536, 0.07361297, 0.07398533, 2.39300501], [1516475220000, 0.07396443, 0.07403698, 0.07396443, 0.07403698, 0.36133909], [1516475280000, 0.07353487, 0.07395344, 0.07337278, 0.07341649, 8.05025338], [1516475340000, 0.07341649, 0.0734165, 0.07338058, 0.07338058, 1.37278068], [1516475400000, 0.07331217, 0.07388131, 0.07331217, 0.07338058, 5.3493877], [1516475460000, 0.07386097, 0.07386097, 0.0733124, 0.07386093, 0.15747693], [1516475520000, 0.07386092, 0.07386092, 0.07331258, 0.07331279, 15.7426208], [1516475640000, 0.07386083, 0.07386083, 0.07329878, 0.0738538, 5.65865511], [1516475700000, 0.0738537, 0.0738537, 0.0738536, 0.0738536, 0.55940132], [1516475760000, 0.07385359, 0.07385359, 0.07385355, 0.07385355, 0.59899449], [1516475820000, 0.07335598, 0.07359595, 0.07333018, 0.073356, 2.68110084], [1516475880000, 0.07380425, 0.07380425, 0.0731242, 0.0731242, 2.85259388], [1516475940000, 0.07377568, 0.07377568, 0.07377437, 0.07377437, 0.30743815], [1516476000000, 0.0732938, 0.07436996, 0.0732938, 0.0739126, 1.4326424], [1516476060000, 0.07391013, 0.07407193, 0.07349566, 0.07394989, 6.08299624], [1516476120000, 0.07402538, 0.07402538, 0.07342227, 0.07387672, 7.81028963], [1516476180000, 0.07393566, 0.07393566, 0.07349572, 0.07349572, 0.93250542], [1516476240000, 0.07342229, 0.07342229, 0.07342227, 0.07342227, 0.13975308], [1516476300000, 0.0739357, 0.07393938, 0.07342227, 0.07393055, 1.0820944], [1516476360000, 0.07393055, 0.07393055, 0.07342227, 0.07342227, 0.81157302], [1516476420000, 0.0739039, 0.0739039, 0.07334249, 0.07334249, 1.79020974], [1516476480000, 0.0733408, 0.07377343, 0.07331476, 0.07377343, 0.70830481], [1516476600000, 0.07377335, 0.07383326, 0.07377335, 0.07379602, 0.42710237], [1516476660000, 0.07373, 0.074, 0.07373, 0.07378966, 1.2193954], [1516476720000, 0.07323924, 0.07378948, 0.07323924, 0.07378948, 0.39873753], [1516476780000, 0.07378947, 0.07378947, 0.07378947, 0.07378947, 0.51900533], [1516476840000, 0.07378947, 0.074, 0.07378947, 0.074, 4.02348479], [1516476900000, 0.074, 0.074, 0.07378947, 0.07393583, 4.24081502], [1516476960000, 0.07378948, 0.074, 0.07378948, 0.07399887, 1.22803923], [1516477020000, 0.07391595, 0.074, 0.07378947, 0.07378947, 4.92799171], [1516477080000, 0.07399992, 0.07399992, 0.07379087, 0.07379087, 0.20594757], [1516477140000, 0.07399892, 0.073999, 0.0739989, 0.0739989, 0.54285907], [1516477200000, 0.07399882, 0.07399882, 0.07379008, 0.07399865, 0.64530155], [1516477260000, 0.0739971, 0.0739971, 0.07379008, 0.07399701, 1.13056341], [1516477320000, 0.07379008, 0.07379009, 0.07379008, 0.07379009, 0.46043166], [1516477380000, 0.0737901, 0.0737901, 0.07378947, 0.07378947, 7.95613081], [1516477440000, 0.07378999, 0.07378999, 0.07378999, 0.07378999, 0.45752298], [1516477500000, 0.0735, 0.0735, 0.07333211, 0.0735, 6.66094362], [1516477560000, 0.07349999, 0.07349999, 0.07349999, 0.07349999, 0.30859594], [1516477620000, 0.07349999, 0.0735, 0.0733448, 0.0735, 2.90168157], [1516477680000, 0.0735, 0.0735, 0.0735, 0.0735, 0.5715314], [1516477740000, 0.0735, 0.0737901, 0.07328773, 0.07328775, 40.22100951], [1516477800000, 0.07347142, 0.0737901, 0.0731974, 0.0732877, 26.75841998], [1516477860000, 0.0732877, 0.0732877, 0.0732877, 0.0732877, 2.68962628], [1516477920000, 0.0732877, 0.07331981, 0.0732877, 0.07331981, 10.83716968], [1516477980000, 0.07331981, 0.07331982, 0.07331981, 0.07331982, 8.71082016], [1516478040000, 0.07326554, 0.07366476, 0.07326554, 0.07364541, 0.93209272], [1516478100000, 0.07367472, 0.07367611, 0.07326339, 0.07326339, 7.69454242], [1516478160000, 0.07333665, 0.07360396, 0.07300006, 0.07360396, 0.45379894], [1516478220000, 0.07356964, 0.07356964, 0.07355978, 0.07355978, 0.03020561], [1516478280000, 0.07354809, 0.07357083, 0.07354809, 0.07357083, 0.03020561], [1516478340000, 0.07355508, 0.07358692, 0.07355508, 0.07358692, 0.03020545], [1516478400000, 0.07364466, 0.07364467, 0.07313103, 0.07313103, 0.1739024], [1516478460000, 0.07313103, 0.07361404, 0.07313103, 0.07361404, 1.01638784], [1516478520000, 0.07358991, 0.07358991, 0.07313109, 0.07313109, 0.31507569], [1516478580000, 0.07354124, 0.07354124, 0.07354124, 0.07354124, 0.0095], [1516478640000, 0.07361403, 0.07361403, 0.07358365, 0.07358365, 0.24240846], [1516478700000, 0.07313125, 0.07359542, 0.0731311, 0.07313118, 1.24711454], [1516478760000, 0.07359111, 0.07359111, 0.07359111, 0.07359111, 0.13913909], [1516478820000, 0.07313121, 0.07359475, 0.07313104, 0.07313104, 2.29624942], [1516478880000, 0.07313103, 0.07352563, 0.07300102, 0.0732543, 11.03559674], [1516478940000, 0.07302011, 0.073585, 0.07300016, 0.07300016, 11.4094143], [1516479000000, 0.07300016, 0.073585, 0.07300011, 0.07348462, 5.52232812], [1516479060000, 0.07351995, 0.07351995, 0.0730002, 0.07306235, 2.04578955], [1516479120000, 0.07348, 0.07350113, 0.07300011, 0.07347463, 3.09525738], [1516479180000, 0.07300011, 0.07300011, 0.07300011, 0.07300011, 0.28529368], [1516479240000, 0.0730001, 0.07344838, 0.0730001, 0.07344838, 0.66256798], [1516479300000, 0.0734, 0.0734, 0.07300011, 0.07300011, 0.16853338], [1516479420000, 0.07321086, 0.07321086, 0.07321086, 0.07321086, 0.47520194], [1516479480000, 0.07315, 0.07315, 0.07315, 0.07315, 2.39339627], [1516479540000, 0.07315, 0.07315, 0.07276075, 0.07315, 9.82841492], [1516479600000, 0.07279911, 0.07315, 0.07276081, 0.07276081, 1.1691896], [1516479660000, 0.0731469, 0.0731469, 0.0731469, 0.0731469, 0.72828881], [1516479780000, 0.07281207, 0.07281207, 0.07281207, 0.07281207, 0.4104], [1516479840000, 0.07281207, 0.0728121, 0.07281207, 0.07281208, 5.7004], [1516479900000, 0.07314685, 0.07314685, 0.07271972, 0.07271972, 4.10869593], [1516479960000, 0.0727214, 0.07314685, 0.0727197, 0.07314685, 1.75933469], [1516480020000, 0.07313, 0.07313, 0.07313, 0.07313, 0.51216267], [1516480080000, 0.07271969, 0.07289482, 0.07271969, 0.07289482, 0.5825423], [1516480140000, 0.0727197, 0.07313, 0.07271715, 0.07271715, 3.56832981], [1516480200000, 0.0729, 0.07313, 0.0726403, 0.07313, 3.21235518], [1516480260000, 0.073, 0.073, 0.073, 0.073, 0.02897313], [1516480320000, 0.073, 0.073, 0.073, 0.073, 0.31731348], [1516480380000, 0.07265818, 0.07291181, 0.07250001, 0.0726126, 7.03055306], [1516480440000, 0.0726126, 0.073, 0.07250044, 0.07250044, 1.62925995], [1516480500000, 0.073, 0.073, 0.0725, 0.07250193, 7.52141533], [1516480560000, 0.073, 0.073, 0.07250193, 0.073, 0.44932294], [1516480620000, 0.07250195, 0.073, 0.07250195, 0.073, 0.46219752], [1516480680000, 0.072997, 0.072997, 0.07250211, 0.072997, 0.04366196], [1516480740000, 0.07254632, 0.072997, 0.07254205, 0.07254632, 7.13197786], [1516480800000, 0.07272768, 0.072997, 0.07254632, 0.072997, 0.41567397], [1516480860000, 0.07277166, 0.07297166, 0.07259429, 0.07265897, 2.66878395], [1516480920000, 0.07259429, 0.072997, 0.07254213, 0.0729, 3.57363868], [1516480980000, 0.07290001, 0.072997, 0.0725, 0.0725, 4.14699946], [1516481040000, 0.072997, 0.072997, 0.072997, 0.072997, 0.4155446], [1516481100000, 0.07255253, 0.072999, 0.07255253, 0.072999, 0.49021378], [1516481160000, 0.072999, 0.072999, 0.072999, 0.072999, 0.09402891], [1516481280000, 0.072999, 0.072999, 0.072999, 0.072999, 0.64950737], [1516481340000, 0.072999, 0.07299995, 0.072999, 0.072999, 0.68762129], [1516481400000, 0.072999, 0.07299995, 0.07282253, 0.07282253, 0.43882928], [1516481460000, 0.07299995, 0.07299995, 0.07299995, 0.07299995, 0.18431768], [1516481520000, 0.07299, 0.073, 0.0726, 0.0726, 0.7827342], [1516481580000, 0.0729692, 0.0729692, 0.0726, 0.0726, 0.05653235], [1516481640000, 0.072999, 0.072999, 0.072999, 0.072999, 0.08630173], [1516481700000, 0.072999, 0.073, 0.072999, 0.073, 0.6711951], [1516481760000, 0.07260001, 0.07299998, 0.07260001, 0.07297876, 0.97183368], [1516481820000, 0.07260001, 0.07260001, 0.07260001, 0.07260001, 5.11500544], [1516481880000, 0.07260001, 0.07260001, 0.07260001, 0.07260001, 0.93915556], [1516481940000, 0.07298662, 0.07298662, 0.07298662, 0.07298662, 0.04110342], [1516482000000, 0.07260002, 0.07260002, 0.07260002, 0.07260002, 0.22220626], [1516482060000, 0.07260002, 0.07260002, 0.07260002, 0.07260002, 0.09924262], [1516482120000, 0.07260002, 0.07260002, 0.07260002, 0.07260002, 0.21579794], [1516482180000, 0.07260002, 0.07260002, 0.07260002, 0.07260002, 0.21198271], [1516482240000, 0.07260002, 0.0729, 0.07260001, 0.0729, 0.44321631], [1516482300000, 0.0729, 0.07299997, 0.0729, 0.07299997, 0.21569663], [1516482360000, 0.07285, 0.07285, 0.0726, 0.07285, 0.74488319], [1516482420000, 0.07285, 0.07285, 0.07285, 0.07285, 0.08473836], [1516482480000, 0.07285, 0.07285, 0.07285, 0.07285, 0.05459973], [1516482540000, 0.07285, 0.07285, 0.07272501, 0.07272551, 0.06584768], [1516482600000, 0.07285, 0.07285, 0.07237211, 0.07285, 0.79114345], [1516482660000, 0.07226959, 0.0727387, 0.07207001, 0.0727387, 19.55837312], [1516482720000, 0.07244775, 0.07244775, 0.07218627, 0.07237538, 3.36268608], [1516482780000, 0.07218736, 0.07274044, 0.07218736, 0.07274044, 6.52062176], [1516482840000, 0.0721874, 0.07272111, 0.07207001, 0.07265932, 2.07456056], [1516482900000, 0.0720701, 0.07265931, 0.07207004, 0.07265931, 0.78308276], [1516482960000, 0.07266241, 0.07266241, 0.07266066, 0.07266066, 0.69652263], [1516483020000, 0.07207018, 0.07266571, 0.07207018, 0.07266571, 0.18624427], [1516483080000, 0.07265017, 0.07265017, 0.07264288, 0.07264288, 0.15772073], [1516483140000, 0.07272366, 0.07272366, 0.07272366, 0.07272366, 0.03590399], [1516483200000, 0.07284018, 0.07291685, 0.07284018, 0.0728402, 1.02047741], [1516483260000, 0.07272367, 0.07299999, 0.07272367, 0.07299999, 1.05810365], [1516483320000, 0.07299999, 0.073, 0.07299999, 0.073, 1.16397263], [1516483380000, 0.07272367, 0.07272367, 0.07272366, 0.07272366, 0.03032026], [1516483440000, 0.07272366, 0.07272366, 0.07272366, 0.07272366, 0.00404086], [1516483500000, 0.073, 0.073, 0.073, 0.073, 0.1369863], [1516483620000, 0.07231237, 0.07299999, 0.07231237, 0.07299999, 0.17857684], [1516483680000, 0.07231293, 0.07231293, 0.07231284, 0.07231284, 2.50471082], [1516483800000, 0.07233403, 0.07233403, 0.07233402, 0.07233402, 1.00628722], [1516483860000, 0.07273399, 0.073, 0.07273399, 0.073, 1.404655], [1516483920000, 0.072734, 0.072734, 0.07273399, 0.072734, 0.6140849], [1516483980000, 0.072734, 0.072734, 0.07273399, 0.072734, 0.09409634], [1516484040000, 0.072734, 0.072734, 0.072734, 0.072734, 0.03031618], [1516484100000, 0.07273399, 0.072734, 0.07243833, 0.072734, 0.73221195], [1516484160000, 0.07273334, 0.072734, 0.07273334, 0.072734, 0.01873457], [1516484220000, 0.0727334, 0.0727334, 0.0727334, 0.0727334, 0.22523996], [1516484280000, 0.07273334, 0.0727334, 0.0727333, 0.0727333, 0.86998804], [1516484400000, 0.0727333, 0.0727333, 0.0727333, 0.0727333, 0.11619972], [1516484460000, 0.07273339, 0.0727334, 0.07218854, 0.07218854, 3.637653], [1516484520000, 0.07236741, 0.07273229, 0.07236741, 0.07238949, 11.92591598], [1516484580000, 0.07236749, 0.07236749, 0.07231007, 0.07231007, 7.74103222], [1516484640000, 0.07263228, 0.07263229, 0.07263228, 0.07263229, 0.29246957], [1516484700000, 0.07263229, 0.07263229, 0.07263229, 0.07263229, 0.83524739], [1516484760000, 0.07263229, 0.07263229, 0.07231043, 0.07231043, 0.857394], [1516484820000, 0.07273325, 0.07273325, 0.07273325, 0.07273325, 0.0127243], [1516484880000, 0.07272425, 0.07272425, 0.07218811, 0.07218811, 0.12013539], [1516484940000, 0.07269099, 0.07269099, 0.07269099, 0.07269099, 0.1274811], [1516485000000, 0.07266223, 0.07269099, 0.07266223, 0.07269096, 0.27085587], [1516485060000, 0.0726908, 0.0726908, 0.07266223, 0.07266223, 0.02545994], [1516485120000, 0.07266223, 0.07266223, 0.07261065, 0.07261065, 0.29456867], [1516485180000, 0.07261065, 0.07261065, 0.07261065, 0.07261065, 0.0701042], [1516485240000, 0.07261065, 0.07261065, 0.07240023, 0.07240023, 0.01650923], [1516485300000, 0.07243947, 0.07243947, 0.07243947, 0.07243947, 0.09810519], [1516485360000, 0.07240024, 0.07243947, 0.07240023, 0.07243947, 0.19294256], [1516485420000, 0.07240023, 0.07240023, 0.07218787, 0.07235, 0.16116422], [1516485480000, 0.07235, 0.07235, 0.07207203, 0.07234999, 1.91172749], [1516485540000, 0.07207148, 0.07234999, 0.07207147, 0.07234999, 0.13373437], [1516485600000, 0.07229999, 0.0723, 0.07229999, 0.0723, 0.10323574], [1516485660000, 0.07229955, 0.07229955, 0.07229955, 0.07229955, 0.74980433], [1516485720000, 0.07229955, 0.07229955, 0.07211928, 0.07229899, 0.99348698], [1516485780000, 0.07229899, 0.07258212, 0.0721193, 0.0721193, 4.05668332], [1516485840000, 0.07256036, 0.07256036, 0.07256035, 0.07256035, 0.43850566], [1516485900000, 0.07256035, 0.07256035, 0.07245, 0.07245, 2.6378564], [1516485960000, 0.07245, 0.07253793, 0.07245, 0.07253793, 1.11823352], [1516486020000, 0.0725374, 0.0725374, 0.07247643, 0.07247643, 0.19954129], [1516486080000, 0.0725021, 0.07254623, 0.0725021, 0.07254623, 3.7768182], [1516486140000, 0.07251999, 0.07251999, 0.07251999, 0.07251999, 2.9978525], [1516486200000, 0.07251999, 0.07251999, 0.07251262, 0.07251262, 1.12594336], [1516486260000, 0.07251261, 0.07251261, 0.07248078, 0.07248078, 0.24011074], [1516486320000, 0.0724733, 0.0724733, 0.07211934, 0.07211934, 2.67673087], [1516486380000, 0.07246455, 0.07246455, 0.07229681, 0.07229681, 0.70305165], [1516486440000, 0.07229681, 0.07229681, 0.07229681, 0.07229681, 0.27728126], [1516486500000, 0.07229681, 0.07229681, 0.07229681, 0.07229681, 0.05822927], [1516486560000, 0.07229681, 0.07229681, 0.07220806, 0.07220806, 0.61378518], [1516486620000, 0.07211934, 0.07229681, 0.07207014, 0.07222862, 0.30268675], [1516486680000, 0.0722286, 0.07229681, 0.07207014, 0.07229681, 0.6658718], [1516486740000, 0.0722968, 0.0722968, 0.07207014, 0.07207014, 1.2208172], [1516486800000, 0.07207014, 0.07227896, 0.07207014, 0.07227896, 4.04474384], [1516486860000, 0.07224814, 0.07224814, 0.07207014, 0.07207014, 5.33633228], [1516486920000, 0.0721, 0.0721, 0.0721, 0.0721, 1.89], [1516486980000, 0.0721, 0.07217731, 0.0721, 0.07215925, 2.061073], [1516487040000, 0.07207015, 0.07207015, 0.07207014, 0.07207014, 0.25658257], [1516487100000, 0.07207015, 0.07207015, 0.07207014, 0.07207014, 0.28193851], [1516487160000, 0.07207014, 0.07207015, 0.07207014, 0.07207015, 0.02319823], [1516487220000, 0.07207015, 0.07207015, 0.07207015, 0.07207015, 0.17730665], [1516487280000, 0.07207015, 0.07207015, 0.07207015, 0.07207015, 1.43999032], [1516487340000, 0.07207015, 0.07207015, 0.07207014, 0.07207015, 2.23421875], [1516487400000, 0.07252, 0.07252, 0.07248324, 0.07252, 0.37140361], [1516487460000, 0.07252, 0.07252, 0.07252, 0.07252, 0.24876316], [1516487520000, 0.07248607, 0.07251551, 0.07248607, 0.07249582, 1.82153263], [1516487580000, 0.07246561, 0.07246561, 0.0720701, 0.0724334, 0.2369761], [1516487640000, 0.0724334, 0.0724334, 0.0724334, 0.0724334, 0.02689047], [1516487700000, 0.0724334, 0.0724334, 0.0724334, 0.0724334, 0.04399807], [1516487760000, 0.0724334, 0.0724334, 0.0720701, 0.0720701, 0.09285041], [1516487820000, 0.07207009, 0.0720701, 0.07207, 0.0720701, 0.15530772], [1516487880000, 0.0724334, 0.0724334, 0.0724334, 0.0724334, 0.10250573], [1516487940000, 0.07244813, 0.07244813, 0.07203315, 0.07207001, 1.1938633], [1516488000000, 0.07207001, 0.07207001, 0.07207001, 0.07207001, 0.34856251], [1516488060000, 0.07205932, 0.07205934, 0.07205932, 0.07205934, 1.13675237], [1516488120000, 0.07246561, 0.07246561, 0.07206001, 0.07246561, 0.1474592], [1516488180000, 0.07246561, 0.0725, 0.07246561, 0.0725, 0.85846529], [1516488240000, 0.07246561, 0.0725, 0.07246561, 0.07246561, 0.38757676], [1516488300000, 0.07246561, 0.07246561, 0.07221216, 0.07246561, 1.37890947], [1516488360000, 0.07246561, 0.07246561, 0.07207001, 0.07207001, 9.90900867], [1516488480000, 0.07207003, 0.07207003, 0.07207003, 0.07207003, 13.03921569], [1516488720000, 0.07207004, 0.07232453, 0.07207002, 0.07232453, 0.75], [1516488780000, 0.07207002, 0.07232453, 0.07207002, 0.07232453, 0.804848], [1516488840000, 0.07232452, 0.072325, 0.07232452, 0.072325, 1.40964556], [1516488900000, 0.072325, 0.07248543, 0.07208354, 0.072325, 1.86441319], [1516488960000, 0.07248543, 0.07248543, 0.07232502, 0.07232502, 1.44252586], [1516489020000, 0.07232502, 0.07248543, 0.07232502, 0.07232502, 6.86521779], [1516489080000, 0.07232502, 0.07232502, 0.07232502, 0.07232502, 0.3562], [1516489140000, 0.07247241, 0.07247241, 0.07247241, 0.07247241, 0.09863479], [1516489200000, 0.07246218, 0.07246218, 0.07246218, 0.07246218, 0.57311127], [1516489260000, 0.07232503, 0.07246218, 0.07232503, 0.07246218, 3.06991814], [1516489320000, 0.07246218, 0.07252, 0.07209, 0.07209, 7.04515743], [1516489380000, 0.07252, 0.07252, 0.07209, 0.07209, 2.11091705], [1516489440000, 0.07252, 0.07252, 0.07209, 0.07209, 0.14537683], [1516489500000, 0.07252, 0.07252, 0.07209, 0.07250831, 11.80416374], [1516489560000, 0.07250831, 0.07250831, 0.07228356, 0.07228356, 0.0688559], [1516489620000, 0.07210522, 0.07210522, 0.07210522, 0.07210522, 0.0739496], [1516489680000, 0.07220046, 0.07228356, 0.07212832, 0.07228356, 1.15309803], [1516489740000, 0.07211624, 0.07211624, 0.07211624, 0.07211624, 6.00000191], [1516489800000, 0.0722, 0.07252, 0.0722, 0.07252, 0.6461438], [1516489860000, 0.07220001, 0.07220001, 0.0722, 0.0722, 0.95049369], [1516489920000, 0.0722, 0.07252, 0.0722, 0.07252, 0.22426557], [1516490040000, 0.07252, 0.07252, 0.07252, 0.07252, 0.10339281], [1516490160000, 0.07252, 0.07252, 0.07221, 0.07221, 0.65807748], [1516490220000, 0.07236, 0.07252, 0.07236, 0.07252, 0.21571152], [1516490280000, 0.07261802, 0.07261802, 0.07261802, 0.07261802, 0.01055611], [1516490340000, 0.07224548, 0.07224548, 0.07224548, 0.07224548, 1.0], [1516490400000, 0.07266223, 0.07275901, 0.07266223, 0.07275901, 0.13762313], [1516490460000, 0.07270304, 0.07270304, 0.07270304, 0.07270304, 0.05], [1516490520000, 0.07222201, 0.07222201, 0.07206005, 0.07207005, 19.88754991], [1516490580000, 0.07206005, 0.07206006, 0.07203315, 0.07203316, 0.13340054], [1516490640000, 0.07202398, 0.07202398, 0.07202398, 0.07202398, 0.01437536], [1516490700000, 0.07255519, 0.07255563, 0.07255519, 0.07255563, 2.87618265], [1516490760000, 0.07203978, 0.07228985, 0.07202409, 0.07228985, 0.75155709], [1516490820000, 0.07202411, 0.07202411, 0.07202411, 0.07202411, 0.00706108], [1516490940000, 0.07202411, 0.07251082, 0.07202411, 0.07251082, 1.70503029], [1516491060000, 0.07207466, 0.07251081, 0.07207466, 0.07251081, 1.21692721], [1516491120000, 0.07251161, 0.07251161, 0.07251161, 0.07251161, 0.68775193], [1516491180000, 0.07251222, 0.07251222, 0.07251222, 0.07251222, 0.20314162], [1516491240000, 0.0724, 0.0724, 0.07202395, 0.0720241, 0.47572434], [1516491300000, 0.07204898, 0.07221204, 0.07204898, 0.07221204, 0.02965408], [1516491360000, 0.07221204, 0.07221204, 0.07204898, 0.07204898, 0.38144607], [1516491420000, 0.07235, 0.07235, 0.07234999, 0.07234999, 0.33724063], [1516491480000, 0.07221204, 0.07221204, 0.072212, 0.072212, 0.41247961], [1516491540000, 0.07204899, 0.07204899, 0.07204899, 0.07204899, 0.16318541], [1516491600000, 0.07234999, 0.07234999, 0.072049, 0.07234999, 0.65048116], [1516491660000, 0.07234995, 0.07255459, 0.07234995, 0.07255459, 3.89438911], [1516491720000, 0.07255457, 0.07255457, 0.07255457, 0.07255457, 0.02383454], [1516491780000, 0.07240001, 0.07255457, 0.0724, 0.07240001, 0.1200283], [1516491840000, 0.07240001, 0.07241, 0.0724, 0.07241, 1.552945], [1516491900000, 0.07241001, 0.07241001, 0.07241001, 0.07241001, 0.0709806], [1516491960000, 0.07241, 0.0727692, 0.07241, 0.07276335, 10.39702889], [1516492020000, 0.07276336, 0.07276336, 0.07241, 0.07241, 4.886004], [1516492080000, 0.0726909, 0.0726947, 0.07241, 0.0726947, 2.11318899], [1516492140000, 0.07269089, 0.07269089, 0.07241, 0.07241, 0.22617951], [1516492200000, 0.07260025, 0.07261787, 0.07241, 0.07261787, 1.112018], [1516492320000, 0.07241031, 0.07259741, 0.07241, 0.07259741, 4.49084663], [1516492380000, 0.07259741, 0.07259741, 0.07259741, 0.07259741, 1.52202509], [1516492440000, 0.07256773, 0.07256773, 0.07241, 0.07241, 1.1278], [1516492500000, 0.07255246, 0.07255247, 0.07255246, 0.07255246, 2.79637082], [1516492560000, 0.07255246, 0.07255246, 0.07255246, 0.07255246, 0.1690805], [1516492620000, 0.07255247, 0.07255247, 0.07255246, 0.07255246, 0.47294645], [1516492680000, 0.07255246, 0.07255246, 0.07241, 0.07241, 1.5865498], [1516492740000, 0.07241, 0.07241, 0.07240001, 0.07240001, 6.18028096], [1516492800000, 0.07240002, 0.07240002, 0.0724, 0.0724, 3.00322657], [1516492860000, 0.0724, 0.0724, 0.0724, 0.0724, 0.48997592], [1516492920000, 0.0724, 0.0724, 0.0724, 0.0724, 5.44417043], [1516493040000, 0.0725525, 0.07259741, 0.0725525, 0.0725525, 3.29663522], [1516493100000, 0.0725525, 0.0725525, 0.0725525, 0.0725525, 0.96452589], [1516493160000, 0.07259741, 0.07276312, 0.07259741, 0.07276312, 21.70407255], [1516493220000, 0.07276312, 0.07383076, 0.07259741, 0.07366451, 77.36389425], [1516493280000, 0.07276313, 0.07331618, 0.0724, 0.07251907, 49.14750085], [1516493340000, 0.07254609, 0.07254609, 0.0724, 0.07240011, 0.81887387], [1516493400000, 0.07275296, 0.07275296, 0.07275296, 0.07275296, 1.1591302], [1516493460000, 0.07275296, 0.07275296, 0.07240012, 0.07240012, 0.75247837], [1516493520000, 0.0724001, 0.0724001, 0.0724001, 0.0724001, 0.10363569], [1516493580000, 0.0724001, 0.0724001, 0.07221027, 0.07221027, 31.48430164], [1516493640000, 0.0727469, 0.07275206, 0.0727469, 0.07275206, 5.0], [1516493700000, 0.07275176, 0.07275176, 0.0723078, 0.07275176, 1.6494433], [1516493760000, 0.07275176, 0.07311827, 0.07275176, 0.07311827, 4.39019218], [1516493820000, 0.07239376, 0.07290698, 0.07239376, 0.07290698, 2.9577959], [1516493880000, 0.07290698, 0.07290698, 0.07290254, 0.07290697, 6.7574], [1516493940000, 0.07290696, 0.07290696, 0.07290696, 0.07290696, 0.4096], [1516494000000, 0.07290697, 0.07322309, 0.07239396, 0.07312693, 4.47578537], [1516494060000, 0.0726929, 0.07290696, 0.0726929, 0.07290696, 0.05899086], [1516494120000, 0.07312692, 0.07312692, 0.07312692, 0.07312692, 0.12270156], [1516494180000, 0.07283465, 0.07312691, 0.07233924, 0.07274486, 11.19480194], [1516494240000, 0.07276127, 0.072904, 0.07276127, 0.072904, 1.91320476], [1516494300000, 0.07312687, 0.07312688, 0.07312687, 0.07312687, 1.47961279], [1516494360000, 0.07312687, 0.07337905, 0.07288155, 0.07288155, 1.70340674], [1516494420000, 0.07337085, 0.07337896, 0.07276127, 0.07337896, 6.17753384], [1516494480000, 0.07337896, 0.07337896, 0.07278553, 0.07284016, 5.59636387], [1516494540000, 0.07288345, 0.07288345, 0.07288345, 0.07288345, 0.28], [1516494600000, 0.07337896, 0.07337904, 0.07337896, 0.07337904, 0.40491289], [1516494660000, 0.0731096, 0.07337904, 0.0731096, 0.07337904, 10.7955117], [1516494720000, 0.0729574, 0.07337892, 0.0729574, 0.07337892, 0.15], [1516494780000, 0.07337799, 0.07337799, 0.07315099, 0.07337796, 0.24376498], [1516494840000, 0.07315099, 0.07337794, 0.07276128, 0.0728666, 0.67663159], [1516494900000, 0.07284016, 0.073378, 0.07283472, 0.073378, 5.55594543], [1516494960000, 0.07309322, 0.07337904, 0.07302043, 0.07337904, 6.63914556], [1516495020000, 0.07310506, 0.07313521, 0.07264546, 0.07264546, 7.39797992], [1516495080000, 0.07337904, 0.07337904, 0.07303964, 0.07337904, 2.55838669], [1516495140000, 0.072996, 0.07337904, 0.072996, 0.07337904, 0.16297373], [1516495200000, 0.07319395, 0.07336795, 0.07233925, 0.07233925, 4.1356136], [1516495260000, 0.07261432, 0.07261432, 0.07202397, 0.07239359, 6.88362047], [1516495320000, 0.07300544, 0.07301545, 0.07224292, 0.07228529, 4.57989598], [1516495440000, 0.07228531, 0.07228531, 0.07228531, 0.07228531, 0.01089918], [1516495500000, 0.07289946, 0.07289946, 0.07289942, 0.07289942, 0.68587613], [1516495560000, 0.07286291, 0.07288727, 0.07286291, 0.07288727, 4.01214194], [1516495620000, 0.07253296, 0.07253296, 0.07253296, 0.07253296, 0.01519999], [1516495680000, 0.07278731, 0.07278731, 0.07278731, 0.07278731, 0.0280847], [1516495740000, 0.07253296, 0.07253296, 0.072, 0.072, 12.28825936], [1516495800000, 0.07266122, 0.07273083, 0.0720001, 0.0720001, 1.98609418], [1516495920000, 0.07246521, 0.07252075, 0.07200008, 0.07252075, 7.64921403], [1516495980000, 0.07251747, 0.07252079, 0.07200008, 0.07249894, 5.29116234], [1516496040000, 0.07249893, 0.07249893, 0.07209713, 0.07246856, 0.81776112], [1516496100000, 0.07250622, 0.07250622, 0.07246856, 0.07246856, 0.89633804], [1516496160000, 0.07200009, 0.07238976, 0.072, 0.07238975, 4.46888586], [1516496220000, 0.07243775, 0.07243775, 0.07238975, 0.07238975, 0.15979083], [1516496280000, 0.07238975, 0.07238975, 0.07238975, 0.07238975, 0.12084], [1516496400000, 0.072, 0.07238974, 0.072, 0.07238974, 2.1577966], [1516496460000, 0.07218, 0.07226241, 0.07164148, 0.07164148, 7.84902259], [1516496520000, 0.07159392, 0.07205592, 0.07159392, 0.07160093, 2.14531793], [1516496580000, 0.0720786, 0.0720786, 0.07160094, 0.07160094, 1.18514981], [1516496640000, 0.07160095, 0.07204641, 0.07160095, 0.07204641, 0.57090702], [1516496700000, 0.0718438, 0.0718438, 0.07177203, 0.07177203, 1.5510978], [1516496760000, 0.07177203, 0.07177203, 0.07170029, 0.07170029, 5.12979386], [1516496820000, 0.07170029, 0.07201549, 0.07160094, 0.0716412, 12.46085576], [1516496880000, 0.0716412, 0.0716412, 0.07161756, 0.0716412, 5.17621521], [1516496940000, 0.0716412, 0.0720794, 0.07161607, 0.07161607, 12.60763395], [1516497000000, 0.07207732, 0.07207732, 0.07196987, 0.0720436, 3.43632581], [1516497060000, 0.07196987, 0.07205739, 0.07159393, 0.07204498, 0.25136132], [1516497120000, 0.07204563, 0.07206027, 0.07204563, 0.07206027, 2.21404238], [1516497180000, 0.07159394, 0.07206027, 0.07159394, 0.07206027, 0.05433073], [1516497240000, 0.07188183, 0.07195372, 0.07188183, 0.07195372, 0.35995777], [1516497300000, 0.07195371, 0.07195372, 0.07195371, 0.07195372, 0.16977705], [1516497360000, 0.07195372, 0.07195372, 0.07195372, 0.07195372, 0.06863779], [1516497420000, 0.07203276, 0.07203276, 0.07203276, 0.07203276, 0.01539944], [1516497480000, 0.0717865, 0.0717865, 0.07159392, 0.07159392, 0.01535804], [1516497540000, 0.07163347, 0.07163347, 0.07159393, 0.07159393, 6.35943718], [1516497600000, 0.07163347, 0.07203275, 0.07160714, 0.07202571, 6.25349164], [1516497660000, 0.07203275, 0.07206027, 0.07202571, 0.07202571, 1.78271507], [1516497720000, 0.07202571, 0.07202571, 0.0720257, 0.0720257, 0.13796167], [1516497780000, 0.0720334, 0.07206027, 0.0720257, 0.0720257, 0.19214637], [1516497840000, 0.0720257, 0.0720257, 0.07201691, 0.07201691, 0.51012882], [1516497960000, 0.07200275, 0.07200275, 0.07159632, 0.07163347, 1.2180458], [1516498020000, 0.07201691, 0.07201691, 0.07163354, 0.07163354, 0.23442682], [1516498080000, 0.0716335, 0.0720169, 0.07159393, 0.0720169, 1.20245448], [1516498140000, 0.0720169, 0.0720169, 0.0720169, 0.0720169, 0.06659276], [1516498200000, 0.0720169, 0.0720169, 0.07161991, 0.07161991, 0.12735316], [1516498260000, 0.07199654, 0.07200639, 0.07159394, 0.07199647, 0.19960313], [1516498320000, 0.07160165, 0.07160165, 0.07160165, 0.07160165, 0.01539769], [1516498380000, 0.07195331, 0.07198723, 0.07159395, 0.07198723, 1.17929556], [1516498440000, 0.0719696, 0.0719696, 0.07159393, 0.07159393, 15.08009895], [1516498500000, 0.0719534, 0.0719534, 0.07134838, 0.07135007, 12.36450919], [1516498560000, 0.07188548, 0.07188566, 0.07186627, 0.07186627, 2.5113441], [1516498620000, 0.07140164, 0.07140164, 0.07140164, 0.07140164, 0.08139985], [1516498680000, 0.07186626, 0.07186627, 0.07186625, 0.07186626, 0.62849607], [1516498740000, 0.07142289, 0.0717, 0.07142289, 0.0717, 0.15107991], [1516498800000, 0.07136159, 0.0717, 0.07136159, 0.0717, 0.77051424], [1516498860000, 0.0717, 0.0717, 0.07136161, 0.07136161, 0.30861983], [1516498920000, 0.07136163, 0.07186625, 0.07136162, 0.07186624, 1.06360938], [1516498980000, 0.07186625, 0.07186625, 0.07136161, 0.07136161, 7.22061237], [1516499040000, 0.07141342, 0.0718139, 0.07130001, 0.0718139, 0.56292438], [1516499100000, 0.0718256, 0.0718256, 0.07155815, 0.07155815, 0.14340181], [1516499160000, 0.07130002, 0.07131239, 0.07130002, 0.07130003, 0.2581552], [1516499220000, 0.07137675, 0.07165651, 0.07130003, 0.07165651, 0.14476983], [1516499280000, 0.0716563, 0.0716563, 0.0716563, 0.0716563, 0.28955507], [1516499340000, 0.0716563, 0.0716565, 0.0716563, 0.0716565, 0.43859155], [1516499400000, 0.0716565, 0.0716565, 0.07161636, 0.07161636, 0.0463728], [1516499460000, 0.07161636, 0.07161636, 0.07161636, 0.07161636, 0.05512428], [1516499520000, 0.07161636, 0.07161636, 0.07161636, 0.07161636, 7.69191034], [1516499580000, 0.07161636, 0.07161636, 0.07161636, 0.07161636, 0.008], [1516499640000, 0.07161636, 0.07161636, 0.07161636, 0.07161636, 0.03559912], [1516499700000, 0.07161635, 0.07200001, 0.07161635, 0.07186641, 86.37884832], [1516499760000, 0.07135568, 0.07135568, 0.07135568, 0.07135568, 0.22443362], [1516500000000, 0.07182742, 0.07182742, 0.07182742, 0.07182742, 0.008079], [1516500060000, 0.07182743, 0.07182743, 0.07182743, 0.07182743, 0.104], [1516500120000, 0.07184955, 0.07185256, 0.07136307, 0.07136307, 3.45581864], [1516500180000, 0.07138998, 0.07138998, 0.07138998, 0.07138998, 0.01544371], [1516500240000, 0.0714068, 0.0714187, 0.07140296, 0.0714187, 0.45102685], [1516500300000, 0.071364, 0.07183189, 0.07136307, 0.07136307, 6.42334718], [1516500360000, 0.071364, 0.07182039, 0.07136307, 0.07182039, 0.35843897], [1516500420000, 0.07182039, 0.07197841, 0.07145086, 0.07183916, 0.46783172], [1516500480000, 0.07190593, 0.07190593, 0.07190593, 0.07190593, 0.14586834], [1516500540000, 0.07188814, 0.07188814, 0.07136307, 0.07136307, 11.52154076], [1516500600000, 0.07187969, 0.07188661, 0.07186897, 0.07188661, 1.27152615], [1516500660000, 0.07136307, 0.07187033, 0.07136307, 0.07187033, 0.09044039], [1516500720000, 0.0718576, 0.07187859, 0.07136308, 0.07136308, 1.62721322], [1516500780000, 0.07172483, 0.07172483, 0.07172483, 0.07172483, 0.0501937], [1516500840000, 0.07172483, 0.07172483, 0.07172482, 0.07172483, 0.2062857], [1516500900000, 0.07172483, 0.07172483, 0.07162484, 0.07172483, 3.2727236], [1516500960000, 0.07172483, 0.07172483, 0.07136307, 0.07145245, 17.31696514], [1516501020000, 0.07141963, 0.07145245, 0.0714196, 0.07145245, 13.04379927], [1516501080000, 0.07142792, 0.07145245, 0.07142507, 0.07145245, 4.28985267], [1516501140000, 0.07145244, 0.07145244, 0.07142757, 0.07144865, 3.95162131], [1516501200000, 0.07145245, 0.07172483, 0.07145245, 0.07172483, 3.44464964], [1516501260000, 0.07157516, 0.07172483, 0.07144866, 0.07172483, 7.18775427], [1516501380000, 0.07172482, 0.07172483, 0.07172482, 0.07172483, 0.01543069], [1516501440000, 0.07172483, 0.07172483, 0.07172483, 0.07172483, 0.0541378], [1516501500000, 0.07172483, 0.07172483, 0.07172483, 0.07172483, 0.22096194], [1516501620000, 0.07172482, 0.07172483, 0.07172482, 0.07172483, 0.01542193], [1516501680000, 0.07172483, 0.07172483, 0.07172483, 0.07172483, 0.04529145], [1516501740000, 0.07172483, 0.07172483, 0.07144787, 0.07144787, 1.16688803], [1516501800000, 0.07144787, 0.07172483, 0.07144787, 0.07172483, 0.44194389], [1516501860000, 0.07172482, 0.07172483, 0.07144788, 0.07172483, 8.89662022], [1516501920000, 0.07172483, 0.07199664, 0.07172483, 0.07199664, 5.67446093], [1516501980000, 0.07199664, 0.07199664, 0.07172483, 0.07172483, 2.32885765], [1516502040000, 0.07199664, 0.07201691, 0.07172483, 0.07201691, 6.83318161], [1516502100000, 0.07172483, 0.07181101, 0.07172483, 0.07181101, 0.59952238], [1516502160000, 0.07181101, 0.07249591, 0.07181101, 0.07181101, 81.38248337], [1516502220000, 0.07215148, 0.07215148, 0.07215148, 0.07215148, 0.14519838], [1516502280000, 0.07189284, 0.07215148, 0.07189284, 0.07215148, 2.23693226], [1516502340000, 0.07215148, 0.07215148, 0.07215148, 0.07215148, 0.288], [1516502400000, 0.07215148, 0.07215151, 0.07215148, 0.07215151, 1.03498624], [1516502460000, 0.07215162, 0.0722326, 0.07215148, 0.0722234, 0.68772491], [1516502580000, 0.07249588, 0.07249589, 0.0722, 0.0722, 15.15615901], [1516502640000, 0.07219767, 0.0722, 0.07219767, 0.0722, 1.89978467], [1516502700000, 0.07215148, 0.0722, 0.07194002, 0.0722, 18.55438386], [1516502760000, 0.0722, 0.0722, 0.07181111, 0.07193847, 20.88368189], [1516502820000, 0.07219999, 0.07219999, 0.07181101, 0.07181101, 49.01821591], [1516502880000, 0.07219999, 0.0722, 0.07197632, 0.07219999, 0.22547012], [1516502940000, 0.07219999, 0.07219999, 0.07219999, 0.07219999, 0.03995505], [1516503000000, 0.07203319, 0.07219999, 0.07203319, 0.07219999, 0.13573408], [1516503060000, 0.07219998, 0.07219998, 0.0721999, 0.0721999, 0.76542262], [1516503120000, 0.07198, 0.07205444, 0.07198, 0.07205444, 3.57197805], [1516503180000, 0.07205444, 0.07219999, 0.07204041, 0.07204041, 0.45481311], [1516503240000, 0.07200257, 0.07200257, 0.07181101, 0.07181101, 5.85276548], [1516503360000, 0.07219713, 0.07219984, 0.07164835, 0.07219984, 0.87112598], [1516503420000, 0.07177891, 0.07219997, 0.07164835, 0.07182747, 0.89663338], [1516503480000, 0.07164838, 0.07164838, 0.07164837, 0.07164837, 0.55698396], [1516503540000, 0.07164838, 0.07164838, 0.07164838, 0.07164838, 0.18027101], [1516503660000, 0.07218643, 0.07218643, 0.07218643, 0.07218643, 0.01388069], [1516503720000, 0.072186, 0.072186, 0.072186, 0.072186, 0.01817177], [1516503900000, 0.07199165, 0.07199165, 0.07199165, 0.07199165, 0.12307019], [1516503960000, 0.07167978, 0.07177982, 0.07167978, 0.07168245, 1.134973], [1516504020000, 0.07164839, 0.07177981, 0.07164839, 0.07172912, 0.86423522], [1516504080000, 0.07164841, 0.07199156, 0.07162361, 0.07199156, 12.0760469], [1516504140000, 0.07199156, 0.0719916, 0.07199156, 0.0719916, 0.98643008], [1516504200000, 0.07199156, 0.0719916, 0.07154522, 0.0719916, 3.27248937], [1516504260000, 0.07199159, 0.0719916, 0.07158253, 0.07199158, 1.5631423], [1516504320000, 0.07199158, 0.0719916, 0.07162341, 0.0719916, 1.83886868], [1516504380000, 0.0719916, 0.0719916, 0.0719916, 0.0719916, 0.02929943], [1516504440000, 0.0719916, 0.0719916, 0.07168046, 0.07168046, 1.04300844], [1516504500000, 0.07199158, 0.07199158, 0.07199157, 0.07199158, 0.65620858], [1516504560000, 0.07199156, 0.07199156, 0.07199155, 0.07199155, 1.15742096], [1516504620000, 0.07160888, 0.07199158, 0.07160888, 0.07199158, 13.4902544], [1516504680000, 0.07199, 0.07199158, 0.07178169, 0.07183937, 8.344782], [1516504740000, 0.07173144, 0.07199158, 0.07173144, 0.07199158, 7.69441404], [1516504800000, 0.07173144, 0.07173144, 0.07165767, 0.07165767, 1.55584591], [1516504860000, 0.07199159, 0.07215264, 0.07199159, 0.07215264, 0.40952218], [1516504920000, 0.07170701, 0.07218629, 0.07170701, 0.07218629, 1.53237806], [1516504980000, 0.07170701, 0.07170701, 0.07160888, 0.07160888, 9.08907712], [1516505040000, 0.07148403, 0.07207941, 0.07148403, 0.07207941, 2.32097579], [1516505100000, 0.07148404, 0.07207917, 0.07146252, 0.07146252, 2.03158574], [1516505160000, 0.07146105, 0.07164569, 0.07146102, 0.07149975, 6.15204262], [1516505220000, 0.07149974, 0.07209547, 0.07146103, 0.07209547, 0.71662813], [1516505280000, 0.07178, 0.07178, 0.07178, 0.07178, 0.01541244], [1516505340000, 0.07178, 0.07178, 0.07178, 0.07178, 0.18485598], [1516505400000, 0.07178, 0.07178, 0.07178, 0.07178, 0.18702541], [1516505460000, 0.07146641, 0.07178, 0.07146641, 0.07178, 0.16406277], [1516505520000, 0.07178, 0.07178, 0.07178, 0.07178, 0.27544933], [1516505580000, 0.07178, 0.07178, 0.07178, 0.07178, 0.01671774], [1516505640000, 0.07178, 0.07178, 0.07178, 0.07178, 0.78903516], [1516505700000, 0.07178, 0.07192721, 0.07178, 0.07192721, 0.39670823], [1516505760000, 0.07178, 0.07192721, 0.07178, 0.07192721, 0.23087754], [1516505820000, 0.07178, 0.0719271, 0.07125297, 0.07186534, 37.28832971], [1516505880000, 0.07123604, 0.07182598, 0.07123603, 0.07182598, 0.81531255], [1516505940000, 0.07181811, 0.07181811, 0.07181811, 0.07181811, 1.35305167], [1516506060000, 0.07123608, 0.07123608, 0.07123608, 0.07123608, 0.352], [1516506120000, 0.07125601, 0.07181811, 0.07123608, 0.0717, 24.27560502], [1516506180000, 0.0712361, 0.0712361, 0.07123608, 0.07123608, 2.74401521], [1516506240000, 0.0717, 0.0717, 0.0717, 0.0717, 0.02133755], [1516506300000, 0.0716, 0.0717, 0.0716, 0.0717, 0.28521073], [1516506360000, 0.0718181, 0.07189042, 0.0718181, 0.07188945, 18.93071735], [1516506420000, 0.07178856, 0.07178857, 0.07178856, 0.07178857, 0.1650225], [1516506540000, 0.07178857, 0.07178857, 0.07178857, 0.07178857, 0.37990347], [1516506600000, 0.07178857, 0.07178857, 0.07178857, 0.07178857, 0.02853625], [1516506720000, 0.07178856, 0.07178857, 0.07178856, 0.07178857, 0.04168516], [1516506840000, 0.07178847, 0.07178847, 0.07178846, 0.07178846, 0.20164668], [1516506900000, 0.07169999, 0.07169999, 0.07169999, 0.07169999, 0.04567692], [1516506960000, 0.07125561, 0.07143373, 0.07125265, 0.07125265, 0.78315651], [1516507020000, 0.0712556, 0.0716, 0.0712556, 0.0716, 0.276], [1516507080000, 0.07161145, 0.07169978, 0.07161145, 0.07169978, 0.30419279], [1516507140000, 0.07159999, 0.0716, 0.07159999, 0.0716, 0.22556], [1516507200000, 0.0716, 0.07169979, 0.0712574, 0.07169979, 1.71044621], [1516507260000, 0.07169978, 0.07169978, 0.07169978, 0.07169978, 0.00695609], [1516507320000, 0.07169978, 0.07169979, 0.07125271, 0.07148204, 5.05875388], [1516507380000, 0.07148204, 0.07169979, 0.07125272, 0.07125272, 10.56192904], [1516507440000, 0.07125272, 0.07125272, 0.07125272, 0.07125272, 1.9771324], [1516507500000, 0.07125272, 0.07125272, 0.07125272, 0.07125272, 1.0], [1516507560000, 0.07125274, 0.07169, 0.07125273, 0.07169, 0.80628966], [1516507620000, 0.07169, 0.07178845, 0.07169, 0.07169, 0.54748103], [1516507680000, 0.07169, 0.07178845, 0.07125273, 0.07178845, 0.86783651], [1516507740000, 0.071744, 0.071744, 0.071744, 0.071744, 0.15], [1516507800000, 0.071744, 0.07178846, 0.07125301, 0.07125301, 3.19734261], [1516507860000, 0.07178843, 0.07178846, 0.07125333, 0.07125333, 4.75978932], [1516507920000, 0.07125332, 0.07189564, 0.07125332, 0.07182381, 2.52848179], [1516507980000, 0.07175206, 0.07175206, 0.07175206, 0.07175206, 0.2773295], [1516508040000, 0.07125343, 0.0712536, 0.07125343, 0.07125359, 5.23557671], [1516508100000, 0.07125359, 0.07125359, 0.07125343, 0.07125359, 2.14099207], [1516508160000, 0.07125359, 0.07182379, 0.07125343, 0.07125343, 7.02145367], [1516508220000, 0.07125336, 0.07125336, 0.07125336, 0.07125336, 0.25937934], [1516508280000, 0.07125336, 0.07125336, 0.07125336, 0.07125336, 0.68276706], [1516508400000, 0.07146156, 0.07182107, 0.07146156, 0.07182104, 0.36903366], [1516508460000, 0.07182104, 0.07182104, 0.07146156, 0.07146157, 1.06636343], [1516508520000, 0.0715, 0.0715, 0.07146156, 0.07146157, 2.63917922], [1516508580000, 0.07146156, 0.0718238, 0.07146156, 0.0718238, 7.10271464], [1516508640000, 0.0718238, 0.0718238, 0.07182379, 0.0718238, 4.47965582], [1516508700000, 0.0718238, 0.07186399, 0.07146156, 0.07164021, 2.13784636], [1516508820000, 0.07181931, 0.07181931, 0.07181931, 0.07181931, 0.01535102], [1516508880000, 0.07181931, 0.07181931, 0.07146156, 0.07146156, 0.26908912], [1516508940000, 0.07164021, 0.07164021, 0.07146156, 0.07146156, 9.68055098], [1516509000000, 0.07146156, 0.07182379, 0.07146156, 0.07146156, 8.49397052], [1516509060000, 0.07146156, 0.07184986, 0.07146156, 0.07184986, 0.27195559], [1516509120000, 0.07146156, 0.07182245, 0.07146156, 0.07146156, 1.42022495], [1516509180000, 0.07164021, 0.07186399, 0.07129276, 0.07129276, 11.97236252], [1516509240000, 0.07138882, 0.07146156, 0.07138882, 0.07146156, 3.68773104], [1516509300000, 0.07125306, 0.07125306, 0.07123605, 0.07123738, 22.75026595], [1516509360000, 0.07141547, 0.07171493, 0.07123835, 0.07171493, 10.62543373], [1516509420000, 0.0717319, 0.07173199, 0.0717319, 0.07173199, 3.09449442], [1516509480000, 0.07173198, 0.07173199, 0.07173198, 0.07173199, 12.28661233], [1516509540000, 0.07173199, 0.07173199, 0.07124651, 0.07124771, 8.40999594], [1516509600000, 0.07173199, 0.07173199, 0.07124792, 0.07124792, 3.82357232], [1516509660000, 0.07124919, 0.07124919, 0.07124919, 0.07124919, 0.05], [1516509720000, 0.0712499, 0.0712499, 0.0712499, 0.0712499, 0.06041247], [1516509780000, 0.07123606, 0.07171599, 0.07123606, 0.07171599, 1.16985352], [1516509840000, 0.07148517, 0.07173198, 0.07148517, 0.07170077, 0.09536355], [1516509900000, 0.07124223, 0.07124223, 0.07123604, 0.07123604, 3.22123746], [1516509960000, 0.07123603, 0.07123604, 0.07123603, 0.07123603, 8.54955375], [1516510020000, 0.07123603, 0.07125212, 0.07123603, 0.07123603, 1.50446404], [1516510080000, 0.0712385, 0.07165601, 0.07123603, 0.07123603, 2.10089905], [1516510140000, 0.07123615, 0.07123615, 0.07123615, 0.07123615, 1.2665], [1516510200000, 0.07126127, 0.07126127, 0.07123603, 0.07123603, 2.26450829], [1516510260000, 0.07123603, 0.07123603, 0.07123603, 0.07123603, 0.6183], [1516510380000, 0.071646, 0.071656, 0.07123603, 0.07123603, 5.15782578], [1516510440000, 0.0712851, 0.0712851, 0.0712851, 0.0712851, 0.9165], [1516510500000, 0.07165599, 0.0717478, 0.07165599, 0.0717478, 0.89846619], [1516510560000, 0.07174779, 0.07174779, 0.07174779, 0.07174779, 0.18157951], [1516510620000, 0.07174779, 0.07174779, 0.07174779, 0.07174779, 0.01408329], [1516510740000, 0.07169999, 0.07219998, 0.07169999, 0.07182379, 46.16673963], [1516510800000, 0.07123604, 0.07123604, 0.07123602, 0.07123604, 19.75088808], [1516510860000, 0.071439, 0.07182379, 0.071439, 0.07182379, 0.687546], [1516510920000, 0.0712361, 0.07182369, 0.07123603, 0.07123603, 3.46512089], [1516510980000, 0.07138524, 0.07139677, 0.07128596, 0.07128596, 0.285035], [1516511040000, 0.07135885, 0.07169677, 0.07135885, 0.07169677, 0.29526497], [1516511100000, 0.07169675, 0.07182366, 0.07123602, 0.07123602, 1.6693476], [1516511160000, 0.07123603, 0.07178782, 0.07123602, 0.0717, 2.66955825], [1516511220000, 0.07177571, 0.07177571, 0.07123602, 0.07123602, 0.53828825], [1516511280000, 0.07123602, 0.07123602, 0.07123245, 0.07123245, 6.6108], [1516511340000, 0.07169999, 0.07169999, 0.07169999, 0.07169999, 0.02861716], [1516511400000, 0.07123245, 0.0717, 0.07123245, 0.0717, 5.79827661], [1516511460000, 0.07169999, 0.07169999, 0.07112768, 0.0711296, 60.35360192], [1516511520000, 0.07168928, 0.07168928, 0.0716874, 0.0716874, 1.53229842], [1516511580000, 0.07168928, 0.07182379, 0.07122059, 0.07178, 5.90870668], [1516511700000, 0.0713, 0.07171385, 0.0713, 0.07169999, 1.88512856], [1516511760000, 0.0713, 0.0713, 0.0713, 0.0713, 3.4907], [1516511820000, 0.0713, 0.07217018, 0.07122059, 0.07190974, 26.73297185], [1516511880000, 0.07122059, 0.07186329, 0.07122059, 0.07186321, 1.07750137], [1516511940000, 0.07186319, 0.0718632, 0.07177572, 0.07177572, 0.14289449], [1516512000000, 0.07122069, 0.07189432, 0.07112768, 0.07187883, 22.31549543], [1516512120000, 0.07113018, 0.07184127, 0.07113018, 0.07184127, 0.24660454], [1516512180000, 0.07116313, 0.07183697, 0.0711478, 0.07117771, 9.56619765], [1516512240000, 0.0718367, 0.07184129, 0.07112767, 0.07174215, 13.45077487], [1516512300000, 0.07121846, 0.07184129, 0.07121846, 0.07184119, 6.34183043], [1516512360000, 0.0718411, 0.07219997, 0.0718411, 0.07219997, 13.70203178], [1516512420000, 0.07214754, 0.07214754, 0.07214754, 0.07214754, 0.10899], [1516512480000, 0.07182358, 0.07206662, 0.07182358, 0.0720666, 6.0588985], [1516512540000, 0.07206657, 0.07206661, 0.0712901, 0.0712901, 2.23982307], [1516512600000, 0.07206661, 0.07206661, 0.07112901, 0.0711971, 5.63015466], [1516512660000, 0.0712, 0.0712, 0.0712, 0.0712, 0.04371731], [1516512720000, 0.07178, 0.07191957, 0.07178, 0.07191957, 0.13983538], [1516512780000, 0.07125, 0.0719193, 0.07120153, 0.07120153, 1.52590295], [1516512840000, 0.07191875, 0.07191884, 0.07120189, 0.07120195, 6.84231333], [1516512900000, 0.07120234, 0.07219997, 0.07120234, 0.07219997, 41.7467315], [1516512960000, 0.07125304, 0.0721996, 0.07112768, 0.0721996, 39.04085703], [1516513020000, 0.07125334, 0.07249799, 0.07125306, 0.07219921, 39.96181801], [1516513080000, 0.07219921, 0.07219921, 0.07125356, 0.07125356, 21.35607697], [1516513140000, 0.07219908, 0.07219908, 0.07219908, 0.07219908, 14.44222342], [1516513200000, 0.07172629, 0.07219873, 0.07125438, 0.0712544, 5.4031152], [1516513260000, 0.07125482, 0.07125514, 0.07125482, 0.07125512, 0.30121861], [1516513320000, 0.07125602, 0.07125634, 0.07125602, 0.07125634, 0.07776345], [1516513380000, 0.0715, 0.07173464, 0.07136128, 0.07173464, 2.06029121], [1516513440000, 0.07142951, 0.07219706, 0.07142951, 0.0716788, 0.21590792], [1516513560000, 0.07219602, 0.07219602, 0.07219602, 0.07219602, 0.0692558], [1516513620000, 0.0715, 0.07219583, 0.0715, 0.07219583, 0.16957721], [1516513680000, 0.0716, 0.07219546, 0.0715, 0.07219526, 0.74126702], [1516513740000, 0.0715, 0.07219509, 0.07145451, 0.07145451, 0.33109398], [1516513800000, 0.07145451, 0.07218998, 0.07145451, 0.07218998, 13.61879011], [1516513920000, 0.07209992, 0.07209992, 0.07209992, 0.07209992, 0.27635414], [1516514040000, 0.072079, 0.072079, 0.072079, 0.072079, 0.06946971], [1516514160000, 0.07199991, 0.07199991, 0.07199991, 0.07199991, 0.01557829], [1516514220000, 0.07199998, 0.07199998, 0.07199998, 0.07199998, 0.07860371], [1516514280000, 0.07145462, 0.07145462, 0.07145451, 0.07145451, 1.83666151], [1516514340000, 0.07145451, 0.07145451, 0.07145451, 0.07145451, 0.06185205], [1516514400000, 0.07199919, 0.0719992, 0.07199919, 0.0719992, 0.20586914], [1516514460000, 0.07145452, 0.07145452, 0.07145452, 0.07145452, 0.01118072], [1516514520000, 0.07145452, 0.07145454, 0.07145452, 0.07145452, 1.29603437], [1516514580000, 0.07145452, 0.07145452, 0.07145451, 0.07145451, 0.22971569], [1516514640000, 0.07145451, 0.07145451, 0.07145451, 0.07145451, 0.01557125], [1516514700000, 0.07145451, 0.07199997, 0.07145451, 0.07145451, 8.6807764], [1516514880000, 0.07145451, 0.07145451, 0.07145451, 0.07145451, 0.03221087], [1516515000000, 0.07145451, 0.07145451, 0.0714545, 0.07145451, 1.22931662], [1516515060000, 0.07145451, 0.07199995, 0.07145451, 0.07199993, 0.47614665], [1516515120000, 0.07126004, 0.07126004, 0.07126004, 0.07126004, 0.26168224], [1516515180000, 0.07199801, 0.07199801, 0.07199801, 0.07199801, 0.50974126], [1516515240000, 0.07198969, 0.07198969, 0.07198969, 0.07198969, 0.048376], [1516515300000, 0.07198967, 0.07198967, 0.07198967, 0.07198967, 0.17979418], [1516515360000, 0.07183872, 0.07183872, 0.07183872, 0.07183872, 0.04186922], [1516515540000, 0.07126364, 0.07183869, 0.07126364, 0.07183869, 0.04], [1516515600000, 0.07183869, 0.07183872, 0.07183869, 0.07183869, 2.00454758], [1516515660000, 0.07183869, 0.07183869, 0.07126261, 0.07183869, 1.28988146], [1516515720000, 0.07183868, 0.07203283, 0.07126326, 0.07126326, 12.84032018], [1516515780000, 0.07203279, 0.07203279, 0.07126412, 0.07126412, 0.52268228], [1516515840000, 0.0712643, 0.07126476, 0.0712643, 0.07126476, 3.7016], [1516515960000, 0.0712656, 0.0712656, 0.0712656, 0.0712656, 1.75], [1516516020000, 0.07126611, 0.07126617, 0.07126611, 0.07126617, 7.72107663], [1516516080000, 0.0720309, 0.0720309, 0.07126646, 0.07126646, 0.24959106], [1516516140000, 0.07203047, 0.07203047, 0.07203047, 0.07203047, 0.06501355], [1516516200000, 0.07203016, 0.07203016, 0.07126708, 0.0720298, 0.26879074], [1516516260000, 0.0720285, 0.0720285, 0.0720285, 0.0720285, 0.051153], [1516516380000, 0.07126827, 0.07193399, 0.07126814, 0.07193399, 4.20104716], [1516516500000, 0.0717, 0.0720298, 0.0717, 0.0720298, 1.35657862], [1516516620000, 0.07200771, 0.07200771, 0.07200771, 0.07200771, 0.15718324], [1516516800000, 0.0720059, 0.0720059, 0.0720057, 0.0720057, 0.10506904], [1516516980000, 0.07126896, 0.07126898, 0.07126896, 0.07126898, 0.05057676], [1516517040000, 0.07200407, 0.07200407, 0.07200407, 0.07200407, 0.3], [1516517100000, 0.07200363, 0.07200363, 0.07127013, 0.07127013, 0.04396626], [1516517160000, 0.07127068, 0.07127068, 0.07127068, 0.07127068, 0.11751225], [1516517220000, 0.07127128, 0.07127128, 0.07127128, 0.07127128, 0.05052062], [1516517340000, 0.07199262, 0.07200123, 0.0719913, 0.07200115, 0.32329017], [1516517400000, 0.07200116, 0.07200336, 0.07200116, 0.07200336, 1.26214521], [1516517460000, 0.07200327, 0.07200345, 0.07170706, 0.07200345, 2.80816799], [1516517520000, 0.07181539, 0.07200345, 0.07181539, 0.07200345, 0.2761], [1516517580000, 0.07200344, 0.07203147, 0.07200344, 0.07202972, 10.20360845], [1516517640000, 0.07202971, 0.07218998, 0.07141398, 0.07218998, 5.13113829], [1516517700000, 0.07218997, 0.07219773, 0.07218997, 0.07219773, 0.70556178], [1516517760000, 0.07219773, 0.07219823, 0.07219773, 0.07219823, 0.26190609], [1516517820000, 0.07219773, 0.07219773, 0.07162015, 0.07162042, 2.09965146], [1516517880000, 0.07162057, 0.07219772, 0.07162057, 0.07219772, 8.00761303], [1516517940000, 0.07219812, 0.072498, 0.07219812, 0.072498, 0.15595824], [1516518000000, 0.072498, 0.072824, 0.07162176, 0.07162176, 1.75245521], [1516518060000, 0.072822, 0.072822, 0.07162203, 0.07162203, 0.65948966], [1516518360000, 0.07168368, 0.07168368, 0.07168368, 0.07168368, 3.48279349], [1516518420000, 0.072651, 0.072651, 0.07265076, 0.07265076, 0.5731572], [1516518480000, 0.07168795, 0.07168795, 0.07168795, 0.07168795, 1.0], [1516518540000, 0.0717, 0.0717, 0.0717, 0.0717, 0.47572094], [1516518600000, 0.07215026, 0.07264951, 0.07180109, 0.07264932, 1.77446021], [1516518660000, 0.07264902, 0.07264902, 0.07264902, 0.07264902, 0.04223355], [1516518720000, 0.07183121, 0.07183121, 0.07180085, 0.07180085, 0.22796056], [1516518780000, 0.07170036, 0.07180085, 0.0717, 0.0717, 15.40513081], [1516518840000, 0.07170039, 0.07170039, 0.0717, 0.07170038, 7.00602591], [1516518900000, 0.07170038, 0.07170039, 0.07170038, 0.07170039, 1.1140106], [1516518960000, 0.07170039, 0.07170039, 0.0717, 0.07170039, 1.7135729], [1516519020000, 0.07170039, 0.07170039, 0.0717, 0.0717, 2.62479958], [1516519080000, 0.0717, 0.0717, 0.0717, 0.0717, 1.02489453], [1516519140000, 0.0717, 0.0717, 0.07162203, 0.07162203, 1.29118292], [1516519200000, 0.07170038, 0.07170039, 0.07162203, 0.07170039, 1.63377669], [1516519380000, 0.07170038, 0.07170038, 0.07170038, 0.07170038, 0.01540843], [1516519440000, 0.07170038, 0.07170039, 0.07170038, 0.07170039, 0.03081686], [1516519500000, 0.07155239, 0.07155239, 0.07155239, 0.07155239, 1.05101253], [1516519560000, 0.07155175, 0.07155239, 0.07150001, 0.07155239, 0.80542356], [1516519620000, 0.07155238, 0.07155239, 0.07155238, 0.07155239, 0.16773203], [1516519680000, 0.07170039, 0.07214102, 0.07170039, 0.07214094, 0.99858709], [1516519800000, 0.0721178, 0.07214094, 0.07211779, 0.07214094, 0.32553543], [1516519920000, 0.07214094, 0.07214094, 0.07214094, 0.07214094, 0.04212084], [1516519980000, 0.07214094, 0.07214094, 0.07214094, 0.07214094, 2.65], [1516520040000, 0.07160151, 0.07214093, 0.07160151, 0.07214093, 1.18361457], [1516520100000, 0.07214086, 0.07214086, 0.07211354, 0.07211354, 7.96989137], [1516520160000, 0.07160158, 0.07160158, 0.07155239, 0.07155239, 0.78586416], [1516520220000, 0.07155239, 0.07160158, 0.07155239, 0.07155239, 1.05395849], [1516520280000, 0.07152, 0.07214094, 0.0715, 0.07208737, 7.32137549], [1516520340000, 0.07203453, 0.07203453, 0.07139001, 0.07139001, 0.5187291], [1516520400000, 0.07139007, 0.07199699, 0.07126432, 0.07134846, 3.54526879], [1516520460000, 0.07197734, 0.07197734, 0.07134846, 0.07148352, 2.28901446], [1516520520000, 0.07134846, 0.07193492, 0.07126435, 0.07193473, 7.15574915], [1516520640000, 0.07126453, 0.0719224, 0.07126453, 0.07188003, 7.1795635], [1516520700000, 0.07133048, 0.07186279, 0.07126432, 0.07126432, 4.7445854], [1516520760000, 0.07179077, 0.07179077, 0.071284, 0.07144657, 2.88155617], [1516520820000, 0.07141074, 0.07144657, 0.07141074, 0.07143188, 1.90287473], [1516520880000, 0.07144657, 0.07192848, 0.07126433, 0.07128397, 1.81046248], [1516520940000, 0.07131874, 0.07192255, 0.07131874, 0.07192255, 0.11038982], [1516521000000, 0.07189891, 0.07189891, 0.07163425, 0.07189891, 0.70071964], [1516521060000, 0.0715, 0.0715, 0.07149999, 0.07149999, 0.03906888], [1516521120000, 0.07139339, 0.07149999, 0.07129114, 0.07129114, 0.8315319], [1516521180000, 0.07149999, 0.07177611, 0.07126431, 0.07126431, 28.50658144], [1516521240000, 0.07133444, 0.07185709, 0.07133444, 0.07185709, 0.98312342], [1516521300000, 0.07183798, 0.07183798, 0.07126326, 0.07182929, 0.65805377], [1516521360000, 0.07126326, 0.07203453, 0.07126326, 0.07179986, 20.68011575], [1516521420000, 0.07126326, 0.07137902, 0.07126326, 0.07137902, 1.13962026], [1516521480000, 0.07179985, 0.07179986, 0.07125634, 0.07125634, 5.89963708], [1516521540000, 0.07125634, 0.07179984, 0.07125634, 0.07179984, 2.072304], [1516521600000, 0.07179983, 0.07179983, 0.07179983, 0.07179983, 0.13927615], [1516521720000, 0.07179982, 0.07179985, 0.07179982, 0.07179985, 4.64602179], [1516521780000, 0.07125634, 0.07179985, 0.07120058, 0.0712563, 1.39568282], [1516521840000, 0.07125637, 0.07125639, 0.07125637, 0.07125639, 0.50112632], [1516521900000, 0.07179982, 0.07179986, 0.07125652, 0.07125652, 0.59031844], [1516521960000, 0.07125677, 0.07125677, 0.07125677, 0.07125677, 0.30034305], [1516522020000, 0.07125646, 0.07125654, 0.07125646, 0.07125654, 2.37819569], [1516522080000, 0.07126, 0.07186619, 0.07125656, 0.07186619, 0.44561379], [1516522140000, 0.07125659, 0.07125659, 0.07125638, 0.07125659, 0.90033103], [1516522200000, 0.0712567, 0.07184391, 0.0712566, 0.07184382, 3.57684173], [1516522260000, 0.07125638, 0.07125638, 0.07125638, 0.07125638, 0.29964344], [1516522320000, 0.07125638, 0.07125638, 0.07125638, 0.07125638, 0.0019067], [1516522380000, 0.07125638, 0.07125638, 0.07125638, 0.07125638, 0.04348224], [1516522440000, 0.07125638, 0.07175087, 0.07125638, 0.071749, 0.30896246], [1516522500000, 0.07174903, 0.07174903, 0.071749, 0.071749, 0.55862595], [1516522560000, 0.0712375, 0.0712375, 0.0712375, 0.0712375, 0.477], [1516522620000, 0.07120237, 0.07121717, 0.07120237, 0.07121717, 0.3308983], [1516522860000, 0.07166374, 0.07166374, 0.07123289, 0.07123289, 0.46932047], [1516522920000, 0.07125491, 0.07125491, 0.07124245, 0.07124245, 5.61192555], [1516522980000, 0.07166168, 0.07166168, 0.07121776, 0.07122137, 0.73131323], [1516523100000, 0.07167284, 0.07167284, 0.07167284, 0.07167284, 0.02173744], [1516523160000, 0.07167761, 0.071699, 0.0716776, 0.071699, 0.23664582], [1516523220000, 0.071699, 0.07170741, 0.071699, 0.07170741, 2.685238], [1516523280000, 0.07171332, 0.07171332, 0.071696, 0.071696, 0.13517566], [1516523400000, 0.07174895, 0.07174895, 0.07121798, 0.071696, 0.37756079], [1516523460000, 0.07169196, 0.07169196, 0.07169196, 0.07169196, 0.02485041], [1516523520000, 0.07170149, 0.07172405, 0.07170149, 0.07172405, 1.94597061], [1516523580000, 0.07172691, 0.07172691, 0.07172691, 0.07172691, 1.95998503], [1516523640000, 0.07172688, 0.07172688, 0.07172688, 0.07172688, 0.01956842], [1516523700000, 0.07172687, 0.07172688, 0.07172687, 0.07172688, 14.03768167], [1516523760000, 0.07154756, 0.07154756, 0.07154756, 0.07154756, 0.27477919], [1516523820000, 0.07154756, 0.07172686, 0.07154756, 0.07172686, 0.30240055], [1516523880000, 0.07154756, 0.07154756, 0.07120005, 0.07120005, 1.83845828], [1516523940000, 0.07127174, 0.07127174, 0.0712, 0.0712, 11.01021171], [1516524000000, 0.07172653, 0.07172688, 0.07149906, 0.07172688, 1.37762014], [1516524060000, 0.07172646, 0.07172646, 0.07120002, 0.07120003, 1.51480799], [1516524120000, 0.07120003, 0.07120003, 0.07120002, 0.07120002, 0.15833441], [1516524240000, 0.07120005, 0.07120005, 0.07120005, 0.07120005, 0.40883074], [1516524300000, 0.07167905, 0.07169692, 0.07120005, 0.07120005, 0.71157031], [1516524360000, 0.07120005, 0.07140005, 0.07120005, 0.07130005, 6.01188194], [1516524420000, 0.07125924, 0.07125924, 0.07125924, 0.07125924, 1.8656], [1516524480000, 0.0713, 0.0713, 0.07112767, 0.07112767, 9.15070255], [1516524540000, 0.07121089, 0.0713, 0.07110001, 0.0713, 12.26222854], [1516524600000, 0.0712659, 0.0713, 0.07110002, 0.0713, 1.55524102], [1516524720000, 0.07112029, 0.07112029, 0.07110001, 0.07112029, 0.50752702], [1516524780000, 0.07112029, 0.0713, 0.07112029, 0.0713, 2.48062208], [1516524840000, 0.0713441, 0.07167454, 0.07133, 0.07167454, 6.05458818], [1516524900000, 0.07167454, 0.07167454, 0.07167454, 0.07167454, 0.13951963], [1516524960000, 0.07167454, 0.07167454, 0.07135, 0.07135, 0.33565543], [1516525020000, 0.07167454, 0.07167454, 0.07167454, 0.07167454, 0.04227633], [1516525080000, 0.07135, 0.07137022, 0.07135, 0.07137022, 1.38076527], [1516525200000, 0.07137022, 0.07167452, 0.07137022, 0.07167452, 0.71943776], [1516525260000, 0.07167452, 0.07167453, 0.07137022, 0.07167453, 1.4023682], [1516525320000, 0.07167453, 0.07167453, 0.07167453, 0.07167453, 0.06430135], [1516525440000, 0.07167452, 0.07167453, 0.07137022, 0.07167453, 0.23546351], [1516525500000, 0.07167453, 0.07172686, 0.07167453, 0.07172686, 0.27903926], [1516525560000, 0.07137022, 0.07137022, 0.07137022, 0.07137022, 0.42305034], [1516525680000, 0.07137022, 0.07137022, 0.07137022, 0.07137022, 0.03089524], [1516525740000, 0.07162305, 0.07162305, 0.07162305, 0.07162305, 0.76581257], [1516525800000, 0.07162916, 0.07162916, 0.07137022, 0.07137022, 0.47256421], [1516525860000, 0.07137022, 0.07137022, 0.07137022, 0.07137022, 0.03089524], [1516525920000, 0.07137022, 0.07167425, 0.07137022, 0.07167425, 0.03229438], [1516526040000, 0.07167424, 0.07167424, 0.07167424, 0.07167424, 1.01], [1516526100000, 0.07137022, 0.07167421, 0.07137022, 0.07167421, 9.23952021], [1516526220000, 0.07153101, 0.07153101, 0.07137022, 0.07137022, 0.14], [1516526280000, 0.07137022, 0.07158464, 0.07137022, 0.07158464, 3.12410388], [1516526340000, 0.07137022, 0.07137022, 0.07137022, 0.07137022, 0.8868], [1516526400000, 0.07137022, 0.07158465, 0.07137022, 0.07158464, 9.50919136], [1516526460000, 0.07158464, 0.07158464, 0.07158464, 0.07158464, 6.992509], [1516526580000, 0.07158464, 0.07164977, 0.07158464, 0.0716095, 4.33812194], [1516526640000, 0.07137022, 0.07137022, 0.07137022, 0.07137022, 0.11104535], [1516526700000, 0.07137022, 0.07159239, 0.07137022, 0.07144461, 14.65058466], [1516526760000, 0.07146303, 0.07146303, 0.07137022, 0.07137022, 9.32495999], [1516526820000, 0.07146176, 0.07146176, 0.07137021, 0.07137355, 0.38447236], [1516526880000, 0.07133, 0.07143227, 0.0712, 0.07143227, 19.37198551], [1516526940000, 0.0712, 0.0712, 0.0712, 0.0712, 0.24541484], [1516527000000, 0.0712, 0.07146306, 0.0712, 0.0712, 6.12515386], [1516527060000, 0.0712, 0.0712, 0.07112029, 0.0712, 1.10581158], [1516527120000, 0.07139103, 0.07139103, 0.0712, 0.0712, 0.2213147], [1516527180000, 0.0712, 0.0712, 0.0712, 0.0712, 0.11483854], [1516527240000, 0.0712, 0.0712, 0.0712, 0.0712, 0.23325273], [1516527300000, 0.07110001, 0.07110001, 0.07110001, 0.07110001, 0.15347543], [1516527360000, 0.07110001, 0.07110001, 0.07110001, 0.07110001, 0.00781478], [1516527480000, 0.07119999, 0.0712, 0.07119999, 0.0712, 3.0603403], [1516527540000, 0.07119999, 0.07119999, 0.07119999, 0.07119999, 0.01548455], [1516527600000, 0.07119999, 0.07119999, 0.07110001, 0.07110001, 0.57924632], [1516527660000, 0.07110001, 0.07110001, 0.07110001, 0.07110001, 0.01550633], [1516527720000, 0.07110001, 0.07110001, 0.07110001, 0.07110001, 0.15561559], [1516527780000, 0.07110001, 0.07110001, 0.07110001, 0.07110001, 7.9450322], [1516527840000, 0.0711, 0.07119992, 0.0710101, 0.0710101, 0.33837276], [1516527900000, 0.0710101, 0.0710101, 0.071, 0.07100011, 2.92355193], [1516527960000, 0.07100266, 0.07103537, 0.07100001, 0.07100266, 0.59050213], [1516528020000, 0.07119289, 0.0711929, 0.07100266, 0.07100266, 0.25956407], [1516528080000, 0.07100266, 0.07100266, 0.071, 0.071, 3.07296194], [1516528140000, 0.071, 0.07100001, 0.071, 0.07100001, 0.03105634], [1516528200000, 0.0711929, 0.0711999, 0.07100001, 0.0711999, 3.58474663], [1516528260000, 0.07100001, 0.07100001, 0.071, 0.071, 1.67883093], [1516528320000, 0.071, 0.07119979, 0.071, 0.07119979, 20.07095065], [1516528380000, 0.07097789, 0.07097789, 0.07092609, 0.07096007, 1.80528707], [1516528440000, 0.07096007, 0.07119668, 0.07096007, 0.07096007, 6.04253147], [1516528500000, 0.07096007, 0.07119654, 0.07096007, 0.07096007, 15.31571794], [1516528560000, 0.07096007, 0.07118, 0.07096007, 0.07096007, 0.17413909], [1516528620000, 0.07118, 0.07118, 0.07096007, 0.07096007, 0.69505321], [1516528680000, 0.07092609, 0.07117997, 0.07091402, 0.07117997, 0.46226071], [1516528740000, 0.0711, 0.0711, 0.070884, 0.070884, 6.34711938], [1516528800000, 0.070884, 0.07109999, 0.0707847, 0.07109999, 7.84775593], [1516528860000, 0.0707847, 0.0707847, 0.0707847, 0.0707847, 4.38996363], [1516529040000, 0.0707847, 0.07099997, 0.0707847, 0.07099997, 2.66582376], [1516529100000, 0.0707847, 0.0707847, 0.0707847, 0.0707847, 1.85376852], [1516529160000, 0.0707847, 0.0707847, 0.07073999, 0.07074, 1.81864598], [1516529220000, 0.07074, 0.07074, 0.070628, 0.07067154, 2.06516901], [1516529280000, 0.070628, 0.07099995, 0.070628, 0.07099995, 4.24014413], [1516529340000, 0.07099997, 0.071, 0.07099995, 0.07099995, 1.00836827], [1516529460000, 0.07099998, 0.071, 0.070628, 0.070628, 1.59170611], [1516529520000, 0.07099999, 0.07099999, 0.07060769, 0.07060769, 0.53470203], [1516529580000, 0.070575, 0.070575, 0.07054, 0.07054, 0.46667705], [1516529640000, 0.07054, 0.07061578, 0.07054, 0.07061578, 1.07052269], [1516529700000, 0.07096222, 0.07096222, 0.07096222, 0.07096222, 0.45298818], [1516529760000, 0.07057164, 0.07057164, 0.07057164, 0.07057164, 0.23001037], [1516529820000, 0.07099999, 0.071, 0.070538, 0.07099998, 0.35559077], [1516529880000, 0.071, 0.071, 0.07099999, 0.071, 1.12585173], [1516529940000, 0.07099466, 0.07099466, 0.070538, 0.070538, 0.22680934], [1516530000000, 0.070538, 0.070538, 0.070538, 0.070538, 0.13922157], [1516530060000, 0.070538, 0.07096807, 0.0705, 0.0705, 0.99137243], [1516530120000, 0.0705, 0.07097231, 0.0705, 0.0705, 3.87225299], [1516530180000, 0.0705, 0.07090359, 0.0705, 0.07090359, 0.10632525], [1516530360000, 0.07090359, 0.07099998, 0.07090359, 0.07099998, 0.58476276], [1516530420000, 0.07090359, 0.07099993, 0.07090359, 0.07099993, 0.01477216], [1516530480000, 0.07058503, 0.07095855, 0.0705, 0.0705, 0.21415154], [1516530540000, 0.0705, 0.07097545, 0.0705, 0.07097216, 0.35295218], [1516530600000, 0.0705, 0.07099999, 0.07021683, 0.07099999, 2.26766289], [1516530660000, 0.07023721, 0.07084458, 0.07021683, 0.07021683, 0.47095986], [1516530720000, 0.07080879, 0.07080879, 0.070218, 0.07031527, 2.90690647], [1516530780000, 0.07039352, 0.07069523, 0.07031526, 0.07069523, 2.311031], [1516530900000, 0.07069521, 0.07069523, 0.07069521, 0.07069523, 0.78920688], [1516530960000, 0.07045416, 0.07069523, 0.07045416, 0.07069523, 1.34458019], [1516531080000, 0.07045791, 0.07069523, 0.07045791, 0.07069522, 2.65982395], [1516531140000, 0.07069522, 0.07069523, 0.07069522, 0.07069523, 0.07243798], [1516531200000, 0.07069523, 0.07069523, 0.07069523, 0.07069523, 1.42713398], [1516531320000, 0.07069523, 0.07087734, 0.07069522, 0.07087734, 0.10317769], [1516531380000, 0.07087734, 0.07087734, 0.07087734, 0.07087734, 0.0058693], [1516531440000, 0.07107308, 0.07107308, 0.07107308, 0.07107308, 0.10854556], [1516531500000, 0.07111089, 0.07111089, 0.07109856, 0.07109856, 0.36906998], [1516531560000, 0.07109847, 0.07109847, 0.07071245, 0.07071245, 0.31194558], [1516531620000, 0.07107996, 0.07107996, 0.07107996, 0.07107996, 0.12638879], [1516531680000, 0.07109239, 0.07109239, 0.07109239, 0.07109239, 0.07052317], [1516531740000, 0.07109234, 0.07109234, 0.07109234, 0.07109234, 0.0280621], [1516531860000, 0.07107374, 0.07107374, 0.07105951, 0.07105951, 0.04967979], [1516532040000, 0.0710821, 0.0710821, 0.0710821, 0.0710821, 0.01574495], [1516532100000, 0.07108209, 0.0710821, 0.07108209, 0.0710821, 0.29695578], [1516532280000, 0.0709522, 0.0709522, 0.0709522, 0.0709522, 0.06456331], [1516532340000, 0.07069522, 0.07072506, 0.07069522, 0.07069864, 0.19368993], [1516532400000, 0.07108203, 0.07108204, 0.07058737, 0.07108204, 8.88341361], [1516532460000, 0.07108204, 0.07108204, 0.0706258, 0.0706258, 0.11025364], [1516532520000, 0.0705, 0.07102911, 0.0705, 0.07102911, 9.00426849], [1516532580000, 0.0705, 0.07060918, 0.0705, 0.07060918, 0.199], [1516532640000, 0.07056588, 0.071, 0.07031537, 0.0705, 15.48381989], [1516532700000, 0.07099997, 0.07100505, 0.07039124, 0.07097891, 1.8724017], [1516532760000, 0.07089788, 0.07089788, 0.07089788, 0.07089788, 0.0956086], [1516532820000, 0.07037439, 0.07037439, 0.07027297, 0.07027297, 19.66565306], [1516532880000, 0.07087297, 0.07087297, 0.07087297, 0.07087297, 0.03050941], [1516532940000, 0.07087296, 0.07087296, 0.07087296, 0.07087296, 0.31713737], [1516533000000, 0.07087296, 0.07087296, 0.07087295, 0.07087295, 0.25049022], [1516533060000, 0.07087296, 0.07087296, 0.07087295, 0.07087295, 0.73666894], [1516533120000, 0.07087295, 0.07087295, 0.0703744, 0.0703744, 0.18160987], [1516533180000, 0.07087295, 0.07087295, 0.07048103, 0.07048103, 0.73494863], [1516533300000, 0.07048103, 0.07087297, 0.07023307, 0.07023307, 0.25400931], [1516533360000, 0.0702337, 0.07079551, 0.0702337, 0.07079442, 0.5436991], [1516533420000, 0.07023371, 0.07023371, 0.07017869, 0.07017869, 0.10379663], [1516533480000, 0.07087297, 0.07087297, 0.07017909, 0.07081145, 0.63354745], [1516533540000, 0.07024817, 0.0705417, 0.07019169, 0.0705417, 4.31720863], [1516533600000, 0.07068444, 0.07075675, 0.07066415, 0.07075675, 0.2884724], [1516533660000, 0.0705417, 0.0705417, 0.07018546, 0.07018546, 0.61866677], [1516533720000, 0.07020335, 0.07073994, 0.07020335, 0.07073994, 0.09585483], [1516533780000, 0.07075101, 0.07075101, 0.07030077, 0.07030077, 1.60628995], [1516533840000, 0.07018621, 0.07034593, 0.0701862, 0.07023382, 1.65165331], [1516533900000, 0.0701801, 0.07081221, 0.0701801, 0.07018015, 0.2334426], [1516533960000, 0.07021468, 0.07081222, 0.07021468, 0.07081222, 0.14320815], [1516534020000, 0.07081222, 0.07081222, 0.07081218, 0.07081218, 0.08105477], [1516534080000, 0.07035636, 0.07035636, 0.07035636, 0.07035636, 0.0899], [1516534140000, 0.07081223, 0.07081223, 0.0703564, 0.07070818, 7.00168035], [1516534200000, 0.07046425, 0.07081222, 0.07046425, 0.07081222, 0.33344533], [1516534320000, 0.0707777, 0.0707777, 0.0707777, 0.0707777, 0.13790442], [1516534380000, 0.07077768, 0.07077768, 0.07077768, 0.07077768, 0.01554162], [1516534440000, 0.07077769, 0.07077769, 0.0704238, 0.0704238, 8.91019516], [1516534500000, 0.07077769, 0.07077769, 0.07018039, 0.07018039, 1.61853885], [1516534560000, 0.07018043, 0.07077769, 0.07018043, 0.07018066, 6.54176266], [1516534620000, 0.07018045, 0.07018045, 0.07018045, 0.07018045, 0.13039684], [1516534680000, 0.07075683, 0.07077096, 0.07075683, 0.07077096, 2.699426], [1516534740000, 0.07073462, 0.07073462, 0.07018058, 0.07073462, 0.52756893], [1516534800000, 0.07018066, 0.07073462, 0.07018066, 0.07073462, 1.09168451], [1516534860000, 0.07018082, 0.07073462, 0.07018082, 0.07073462, 0.61310732], [1516534920000, 0.07073462, 0.07073462, 0.07018084, 0.07018086, 0.16316524], [1516534980000, 0.07073462, 0.07073462, 0.070281, 0.070281, 9.93440029], [1516535040000, 0.070281, 0.07105392, 0.070281, 0.07028111, 6.63618005], [1516535100000, 0.07028128, 0.07028128, 0.07028128, 0.07028128, 2.23098542], [1516535160000, 0.07028136, 0.07092284, 0.07028136, 0.07092284, 1.10740269], [1516535220000, 0.07101714, 0.07101714, 0.07092284, 0.07092284, 0.7625912], [1516535280000, 0.07092284, 0.07105392, 0.07092284, 0.07092284, 1.5176717], [1516535340000, 0.07092284, 0.07092284, 0.07092284, 0.07092284, 0.08393882], [1516535400000, 0.07092284, 0.07092284, 0.07028267, 0.07028304, 0.31454619], [1516535460000, 0.07028321, 0.07028372, 0.07028321, 0.07028372, 0.36207782], [1516535520000, 0.07028403, 0.07092282, 0.07028403, 0.07036128, 4.56917739], [1516535640000, 0.07092284, 0.07092284, 0.07092284, 0.07092284, 0.0156691], [1516535700000, 0.07092284, 0.07105392, 0.07069851, 0.07105392, 0.35187959], [1516535760000, 0.07105389, 0.07105389, 0.07105389, 0.07105389, 3.79923866], [1516535820000, 0.07105389, 0.07105389, 0.07105388, 0.07105389, 6.16043556], [1516535880000, 0.07105389, 0.07105391, 0.07105389, 0.07105389, 0.45239543], [1516535940000, 0.0710539, 0.0710539, 0.07105389, 0.07105389, 6.13221277], [1516536000000, 0.07063373, 0.07105387, 0.07038203, 0.0704572, 19.11984293], [1516536060000, 0.07038161, 0.07038161, 0.07038161, 0.07038161, 0.02738474], [1516536120000, 0.07038161, 0.07105381, 0.07038161, 0.07038171, 0.40999391], [1516536180000, 0.07038182, 0.07038182, 0.07038181, 0.07038181, 0.25], [1516536300000, 0.07105378, 0.07105392, 0.07105378, 0.07105392, 0.44051288], [1516536360000, 0.0710539, 0.0710539, 0.07105388, 0.0710539, 0.21873414], [1516536420000, 0.07048224, 0.07048224, 0.07048224, 0.07048224, 5.0], [1516536480000, 0.07105385, 0.07105385, 0.07038237, 0.07038244, 3.09607478], [1516536540000, 0.07038247, 0.07105381, 0.07038247, 0.07038259, 0.96632837], [1516536600000, 0.0710538, 0.07105393, 0.07038267, 0.07105392, 12.15271955], [1516536660000, 0.07038419, 0.07105392, 0.07038419, 0.07105392, 7.27532541], [1516536720000, 0.07105391, 0.07105391, 0.07046504, 0.07046504, 6.08220347], [1516536780000, 0.07105392, 0.07108208, 0.07105392, 0.07108208, 0.909205], [1516536840000, 0.07108205, 0.07108205, 0.070467, 0.070467, 0.128308], [1516536900000, 0.07093699, 0.07108209, 0.07093699, 0.07108209, 0.57318678], [1516536960000, 0.07108208, 0.07108208, 0.07108208, 0.07108208, 0.01424973], [1516537020000, 0.07050031, 0.0710821, 0.07050031, 0.0710821, 0.1140874], [1516537140000, 0.07108209, 0.07108209, 0.07108209, 0.07108209, 0.12263194], [1516537200000, 0.07108209, 0.07119999, 0.07091001, 0.07119999, 1.68958332], [1516537260000, 0.0708, 0.0708, 0.0708, 0.0708, 0.01554787], [1516537320000, 0.0708, 0.0708, 0.07046791, 0.07046831, 1.38343843], [1516537380000, 0.07119998, 0.07119999, 0.07058979, 0.07119998, 0.15703226], [1516537440000, 0.07066058, 0.07066058, 0.07066058, 0.07066058, 1.18721724], [1516537500000, 0.07066058, 0.07114315, 0.07066058, 0.07066213, 2.73047634], [1516537560000, 0.0706622, 0.07114313, 0.0706622, 0.07114311, 0.1536674], [1516537620000, 0.07114311, 0.07114311, 0.0706622, 0.0706622, 0.18829605], [1516537740000, 0.07114312, 0.07114315, 0.07114312, 0.07114315, 0.19237954], [1516537800000, 0.07114315, 0.07119999, 0.07114315, 0.07119999, 0.49000551], [1516537860000, 0.07119999, 0.07119999, 0.07119999, 0.07119999, 0.01011583], [1516537920000, 0.07119999, 0.0712, 0.07077169, 0.07077169, 0.17091], [1516537980000, 0.07119999, 0.07121, 0.07119999, 0.07121, 0.66957611], [1516538040000, 0.0712, 0.0712, 0.07081831, 0.0712, 0.05807818], [1516538100000, 0.0712, 0.07121, 0.07119103, 0.07119103, 0.27697098], [1516538160000, 0.07120334, 0.07163431, 0.07120017, 0.07163425, 1.45147461], [1516538220000, 0.07163422, 0.07163422, 0.07120017, 0.07120017, 4.41876332], [1516538280000, 0.07163406, 0.07163406, 0.07120017, 0.07120017, 0.58197381], [1516538340000, 0.07120017, 0.07120017, 0.07120017, 0.07120017, 0.03096902], [1516538400000, 0.07120017, 0.07163343, 0.07120017, 0.07120017, 0.09886517], [1516538460000, 0.07163183, 0.07163183, 0.07120016, 0.07120016, 0.70403745], [1516538520000, 0.07120016, 0.07120016, 0.07093854, 0.07093854, 0.11725082], [1516538580000, 0.07086171, 0.07086171, 0.07086171, 0.07086171, 0.08678014], [1516538640000, 0.07093304, 0.0714168, 0.07082963, 0.07116702, 1.55064497], [1516538700000, 0.0714168, 0.07142099, 0.07082964, 0.07082964, 0.28004614], [1516538760000, 0.07142084, 0.07142084, 0.07142084, 0.07142084, 0.00768281], [1516538820000, 0.07077144, 0.07142059, 0.07077143, 0.07099999, 3.7506842], [1516538880000, 0.07099999, 0.07099999, 0.07099999, 0.07099999, 0.16165426], [1516538940000, 0.07099999, 0.07099999, 0.07077143, 0.07077152, 0.31173471], [1516539000000, 0.0709, 0.0709, 0.0709, 0.0709, 0.05641065], [1516539060000, 0.0709, 0.07129999, 0.0709, 0.07129999, 0.02900533], [1516539120000, 0.0713, 0.0713, 0.07129998, 0.07129998, 0.59793714], [1516539300000, 0.07129993, 0.07129993, 0.07129993, 0.07129993, 0.04860023], [1516539420000, 0.07098124, 0.07098124, 0.07066378, 0.07066378, 4.72482103], [1516539480000, 0.07066408, 0.07129986, 0.07066397, 0.07066397, 0.49672962], [1516539540000, 0.07084062, 0.07126484, 0.07066377, 0.07066377, 2.05496222], [1516539600000, 0.07066379, 0.07066379, 0.07066379, 0.07066379, 0.00709345], [1516539660000, 0.07129438, 0.07129438, 0.07129438, 0.07129438, 0.0173776], [1516539780000, 0.07066378, 0.07066378, 0.07066377, 0.07066377, 0.04086922], [1516539840000, 0.07066377, 0.07129398, 0.07066377, 0.07129398, 0.68128911], [1516539900000, 0.07129396, 0.07129396, 0.07066377, 0.07066377, 0.22629096], [1516539960000, 0.07066377, 0.07066377, 0.07066377, 0.07066377, 0.12210444], [1516540020000, 0.07066377, 0.07066377, 0.07066377, 0.07066377, 0.1], [1516540080000, 0.0712726, 0.07127261, 0.07066377, 0.07066377, 0.12646892], [1516540200000, 0.07066377, 0.07066377, 0.07066377, 0.07066377, 0.62625], [1516540320000, 0.0711, 0.0711, 0.0706622, 0.0706622, 0.82956239], [1516540380000, 0.0708156, 0.07127251, 0.0706622, 0.07127251, 10.16404443], [1516540440000, 0.07127251, 0.07127251, 0.0706622, 0.07127251, 3.7223525], [1516540560000, 0.0706622, 0.0706622, 0.07066058, 0.0706622, 2.98677027], [1516540620000, 0.07066, 0.07066219, 0.07036126, 0.07066219, 4.24884958], [1516540680000, 0.07040317, 0.07040317, 0.07028424, 0.07028424, 4.69625611], [1516540740000, 0.07127203, 0.07127203, 0.07127203, 0.07127203, 0.01506423], [1516540920000, 0.07030514, 0.07030514, 0.07030514, 0.07030514, 0.52507614], [1516540980000, 0.07127116, 0.07127116, 0.07127093, 0.07127093, 0.04062695], [1516541280000, 0.07078815, 0.071, 0.07078815, 0.071, 0.04808674], [1516541340000, 0.071, 0.071, 0.07078815, 0.07078815, 30.336324], [1516541400000, 0.07078815, 0.07078815, 0.07078815, 0.07078815, 3.60707566], [1516541460000, 0.07078817, 0.07078817, 0.07078815, 0.07078815, 0.05366716], [1516541520000, 0.07078815, 0.07078815, 0.07078815, 0.07078815, 10.22764928], [1516541580000, 0.07078815, 0.07078817, 0.07078815, 0.07078817, 6.19148356], [1516541700000, 0.07078817, 0.07078817, 0.07078817, 0.07078817, 0.21397477], [1516541760000, 0.07127197, 0.07127197, 0.07127197, 0.07127197, 0.01834723], [1516541880000, 0.07078817, 0.07125999, 0.07078815, 0.07125999, 0.33166738], [1516541940000, 0.07085893, 0.07085893, 0.07078815, 0.07078815, 0.6], [1516542000000, 0.070789, 0.07125995, 0.07078815, 0.07125995, 14.5434575], [1516542120000, 0.07125989, 0.07125989, 0.07125989, 0.07125989, 0.068359], [1516542240000, 0.07125983, 0.07125989, 0.07125982, 0.07125982, 2.85836306], [1516542300000, 0.07125981, 0.07125989, 0.07056877, 0.07056877, 4.01762665], [1516542360000, 0.07125988, 0.07125988, 0.07125988, 0.07125988, 0.135578], [1516542420000, 0.07125989, 0.07125989, 0.07125988, 0.07125988, 0.50368634], [1516542480000, 0.07059712, 0.07059713, 0.07059712, 0.07059713, 0.22105733], [1516542540000, 0.07059741, 0.07125989, 0.07056877, 0.07125989, 2.15467568], [1516542660000, 0.07125988, 0.07125989, 0.07125987, 0.07125989, 0.53062854], [1516542780000, 0.07125987, 0.07125987, 0.07054727, 0.07054752, 0.42455868], [1516542840000, 0.07125961, 0.07125961, 0.07125961, 0.07125961, 0.0146391], [1516542900000, 0.07054865, 0.07125961, 0.07054865, 0.07125961, 0.09856695], [1516542960000, 0.07090402, 0.07125988, 0.07064772, 0.07064772, 0.09900666], [1516543020000, 0.07064809, 0.07066044, 0.07064809, 0.07066044, 2.61523161], [1516543140000, 0.07125988, 0.07125988, 0.07125988, 0.07125988, 0.342102], [1516543200000, 0.07125988, 0.07125988, 0.07125988, 0.07125988, 0.14033137], [1516543260000, 0.07125987, 0.07125987, 0.07125987, 0.07125987, 0.03888407], [1516543440000, 0.07125, 0.07125, 0.07125, 0.07125, 0.26580576], [1516543560000, 0.0711, 0.0711, 0.07082179, 0.07082179, 7.92125063], [1516543740000, 0.07082179, 0.07082179, 0.07082179, 0.07082179, 0.01], [1516543860000, 0.07122285, 0.07122285, 0.07122285, 0.07122285, 0.025], [1516543920000, 0.07076003, 0.07076003, 0.07055086, 0.07055086, 0.44181734], [1516544040000, 0.07090056, 0.07090056, 0.07090056, 0.07090056, 0.04922663], [1516544100000, 0.07112499, 0.07112499, 0.07112499, 0.07112499, 0.02791098], [1516544160000, 0.07112499, 0.07112499, 0.07112499, 0.07112499, 0.95735957], [1516544220000, 0.07125, 0.07125, 0.07125, 0.07125, 1.97484441], [1516544340000, 0.07125, 0.07125, 0.07069216, 0.07069216, 0.13894547], [1516544400000, 0.07124999, 0.07125, 0.07070093, 0.07070093, 0.84210522], [1516544460000, 0.07075186, 0.07075186, 0.07075186, 0.07075186, 0.04471308], [1516544580000, 0.071157, 0.071157, 0.07068391, 0.071157, 0.35303487], [1516544640000, 0.07059921, 0.07059921, 0.07059921, 0.07059921, 0.36370575], [1516544700000, 0.071, 0.071, 0.07054727, 0.07054727, 5.63755881], [1516544820000, 0.07099998, 0.07099999, 0.0703016, 0.07043791, 3.00133355], [1516544880000, 0.07054727, 0.07099999, 0.07054727, 0.07057941, 0.15418335], [1516544940000, 0.07059057, 0.07059057, 0.07059057, 0.07059057, 0.02], [1516545000000, 0.07059512, 0.07099998, 0.07058736, 0.07058736, 5.74894608], [1516545060000, 0.07099997, 0.071, 0.07099997, 0.071, 0.16937631], [1516545120000, 0.071, 0.07125989, 0.07067979, 0.07125099, 11.08733926], [1516545180000, 0.07125099, 0.0713, 0.07072275, 0.07072275, 13.05488576], [1516545240000, 0.0709149, 0.0709149, 0.0709149, 0.0709149, 0.56592539], [1516545420000, 0.07125988, 0.07125988, 0.07125988, 0.07125988, 0.01402593], [1516545480000, 0.07081413, 0.07081414, 0.07081413, 0.07081414, 1.50865667], [1516545540000, 0.07078148, 0.07078148, 0.07078148, 0.07078148, 0.07682653], [1516545600000, 0.07078149, 0.07101862, 0.07078148, 0.07101862, 0.10172122], [1516545660000, 0.07101862, 0.07122141, 0.07078148, 0.07122141, 0.93217683], [1516545720000, 0.07122142, 0.07122142, 0.07076472, 0.07122142, 1.25021326], [1516545780000, 0.07122141, 0.07122141, 0.07122141, 0.07122141, 0.28770686], [1516545840000, 0.07122141, 0.0713, 0.07080891, 0.07080979, 10.99653949], [1516545900000, 0.07080845, 0.07129997, 0.07080845, 0.07129996, 3.46288873], [1516545960000, 0.07129998, 0.07129998, 0.07077395, 0.07077395, 3.47597016], [1516546020000, 0.07129995, 0.07129995, 0.07067999, 0.07067999, 2.188], [1516546080000, 0.07094345, 0.07094345, 0.07094345, 0.07094345, 0.07300026], [1516546200000, 0.07094344, 0.07126604, 0.07069999, 0.07094345, 1.7362596], [1516546260000, 0.07094344, 0.0712659, 0.07071, 0.0712659, 2.25860042], [1516546380000, 0.07072001, 0.07126563, 0.07072001, 0.07126563, 2.6764404], [1516546440000, 0.07126556, 0.07126556, 0.07126556, 0.07126556, 0.09797869], [1516546500000, 0.07126547, 0.07129984, 0.07069, 0.07126604, 1.2993185], [1516546560000, 0.07126605, 0.07126605, 0.07126601, 0.07126601, 0.42095808], [1516546620000, 0.07068, 0.07068, 0.07068, 0.07068, 0.851], [1516546800000, 0.07121398, 0.07121398, 0.07121395, 0.07121395, 0.44617251], [1516546860000, 0.07121395, 0.07121395, 0.07121395, 0.07121395, 0.28084364], [1516546920000, 0.07068002, 0.07104299, 0.07067979, 0.07104299, 1.25372236], [1516546980000, 0.07067979, 0.07067979, 0.07067979, 0.07067979, 1.37004375], [1516547040000, 0.07067979, 0.07067979, 0.07067979, 0.07067979, 4.61325572], [1516547100000, 0.07067979, 0.07121378, 0.07067979, 0.07108366, 3.32524138], [1516547160000, 0.07067979, 0.07067979, 0.07030113, 0.07030113, 0.76754992], [1516547220000, 0.07030113, 0.07081268, 0.07030113, 0.07081268, 4.79563547], [1516547280000, 0.07031958, 0.07031958, 0.07017869, 0.07017869, 9.8092], [1516547340000, 0.07028908, 0.07032064, 0.07017869, 0.07017869, 17.4729], [1516547400000, 0.07087772, 0.07092561, 0.07029738, 0.07029738, 5.71736155], [1516547460000, 0.0703439, 0.0703439, 0.0703439, 0.0703439, 0.11456276], [1516547520000, 0.07035221, 0.07089917, 0.07029804, 0.07089917, 7.5488878], [1516547580000, 0.07089904, 0.07089904, 0.07089904, 0.07089904, 0.02411564], [1516547700000, 0.07089901, 0.07089903, 0.07089899, 0.07089903, 0.30096557], [1516547760000, 0.0703331, 0.07066426, 0.07033309, 0.07033309, 3.8440747], [1516547820000, 0.07075664, 0.07075665, 0.07075664, 0.07075665, 0.0292], [1516547940000, 0.07075647, 0.07075647, 0.07075647, 0.07075647, 0.06871712], [1516548000000, 0.07075647, 0.07075647, 0.07075647, 0.07075647, 0.14132997], [1516548060000, 0.07075644, 0.07089785, 0.07033309, 0.07033309, 1.34796608], [1516548120000, 0.07089763, 0.07089763, 0.07089763, 0.07089763, 0.17069812], [1516548240000, 0.07089763, 0.07089763, 0.07034556, 0.07077129, 3.96324968], [1516548300000, 0.07088377, 0.07088377, 0.07088377, 0.07088377, 0.45590101], [1516548360000, 0.07088377, 0.07088377, 0.07088377, 0.07088377, 0.0554028], [1516548540000, 0.07088377, 0.07088377, 0.07088377, 0.07088377, 0.05389375], [1516548780000, 0.07089761, 0.07089761, 0.07089761, 0.07089761, 0.10108502], [1516548840000, 0.07089761, 0.07089761, 0.07089761, 0.07089761, 0.03879707], [1516548900000, 0.0708976, 0.07089762, 0.0708976, 0.07089762, 0.28209698], [1516548960000, 0.07089761, 0.07089762, 0.07089761, 0.07089762, 8.0831904], [1516549020000, 0.07089762, 0.07089899, 0.07089762, 0.07089899, 0.05571515], [1516549080000, 0.07089899, 0.07089899, 0.07089899, 0.07089899, 0.2577], [1516549140000, 0.07092569, 0.0709257, 0.07053559, 0.07053559, 3.17961383], [1516549200000, 0.07092569, 0.071, 0.07053558, 0.071, 7.70445215], [1516549260000, 0.07053561, 0.07053561, 0.07044611, 0.07046562, 26.46377842], [1516549320000, 0.07049405, 0.07049405, 0.07049405, 0.07049405, 0.2894], [1516549380000, 0.07099999, 0.07099999, 0.07050063, 0.07050921, 2.33986996], [1516549440000, 0.0705112, 0.07099, 0.0705112, 0.07099, 1.104649], [1516549500000, 0.07052559, 0.07099999, 0.07052559, 0.07099993, 1.56704899], [1516549620000, 0.07092603, 0.07092603, 0.07092603, 0.07092603, 0.05001129], [1516549740000, 0.07089657, 0.07089657, 0.07089657, 0.07089657, 1.67213155], [1516549800000, 0.07095117, 0.07098052, 0.07095117, 0.07098052, 0.28188388], [1516549860000, 0.07087522, 0.07093173, 0.07087522, 0.07093173, 0.06053436], [1516549920000, 0.07082371, 0.07082371, 0.07052559, 0.07052559, 0.03800155], [1516550160000, 0.07098048, 0.07098048, 0.07098048, 0.07098048, 0.08011729], [1516550220000, 0.0708433, 0.0708433, 0.0708433, 0.0708433, 0.14347711], [1516550340000, 0.07084329, 0.07098049, 0.07084329, 0.07084329, 2.67404119], [1516550400000, 0.07097565, 0.07098049, 0.07097565, 0.07098049, 0.28178698], [1516550460000, 0.07060384, 0.07099994, 0.07060384, 0.07099994, 1.41448992], [1516550520000, 0.07099994, 0.07099994, 0.07099994, 0.07099994, 0.12345609], [1516550580000, 0.07070502, 0.07070502, 0.07070502, 0.07070502, 0.50197081], [1516550640000, 0.07066699, 0.07066699, 0.07065692, 0.07065692, 1.8963], [1516550700000, 0.07067187, 0.071, 0.07065443, 0.071, 8.76364304], [1516550760000, 0.071, 0.07108364, 0.07063425, 0.07108364, 1.68806755], [1516550820000, 0.07068033, 0.07068033, 0.07068033, 0.07068033, 0.01584496], [1516550880000, 0.07068034, 0.07081701, 0.07068034, 0.07068535, 3.05458819], [1516550940000, 0.07068535, 0.07108364, 0.07068535, 0.07070502, 0.7511072], [1516551000000, 0.07072188, 0.0712517, 0.07072188, 0.07074184, 3.14084672], [1516551060000, 0.0712434, 0.07125168, 0.07070448, 0.07074141, 1.00656472], [1516551120000, 0.07068545, 0.07068546, 0.07068545, 0.07068545, 1.43375427], [1516551180000, 0.07071761, 0.07071761, 0.07070953, 0.07070953, 2.90834833], [1516551240000, 0.07070953, 0.07071317, 0.07070952, 0.07071317, 1.24047264], [1516551300000, 0.07071317, 0.07118771, 0.07068545, 0.07068545, 1.34788711], [1516551360000, 0.07109069, 0.07109069, 0.07068545, 0.07102478, 2.09447029], [1516551420000, 0.07068545, 0.07068545, 0.07065547, 0.07065547, 1.88879098], [1516551480000, 0.07065, 0.07065, 0.0706, 0.07063426, 1.71785592], [1516551540000, 0.07063426, 0.07068545, 0.07063425, 0.07063425, 0.56584155], [1516551600000, 0.07063426, 0.07119761, 0.07063425, 0.07063425, 10.86870426], [1516551660000, 0.07063425, 0.071, 0.0705861, 0.0705861, 15.63421121], [1516551720000, 0.07063437, 0.07125167, 0.07063437, 0.07090418, 1.92289667], [1516551780000, 0.07100008, 0.07125162, 0.07099998, 0.07099998, 0.16752461], [1516551840000, 0.0710002, 0.07100103, 0.0710002, 0.07100103, 0.16076717], [1516551900000, 0.07100148, 0.0712517, 0.0705256, 0.07100124, 8.93210863], [1516551960000, 0.07100156, 0.07124, 0.07090752, 0.07124, 23.639738], [1516552020000, 0.07124, 0.07124, 0.07090173, 0.07096134, 2.97329652], [1516552080000, 0.07123999, 0.07124, 0.07096133, 0.07096133, 0.99235442], [1516552140000, 0.07099552, 0.07099552, 0.07099552, 0.07099552, 0.05029068], [1516552200000, 0.07057621, 0.07099269, 0.07057621, 0.07098608, 0.91230199], [1516552260000, 0.07089534, 0.07089534, 0.07087165, 0.07087165, 0.63884318], [1516552320000, 0.07079346, 0.07079346, 0.07052559, 0.07052559, 4.76273636], [1516552440000, 0.07052559, 0.0706, 0.07052559, 0.0706, 6.57762005], [1516552500000, 0.0706, 0.0706, 0.0706, 0.0706, 6.41975614], [1516552560000, 0.07059999, 0.07059999, 0.07052566, 0.07059994, 0.26650656], [1516552620000, 0.07059994, 0.07059999, 0.07052566, 0.07052566, 0.62699009], [1516552680000, 0.07059999, 0.0706, 0.07052566, 0.0706, 5.68354618], [1516552740000, 0.0706, 0.0706, 0.0706, 0.0706, 0.01612337], [1516552800000, 0.0706, 0.0706, 0.0706, 0.0706, 0.19021593], [1516552860000, 0.0706, 0.0706, 0.07052559, 0.0706, 2.64585506], [1516552920000, 0.0706, 0.0706, 0.07059999, 0.0706, 10.01704968], [1516553040000, 0.07059999, 0.0706, 0.0704, 0.0706, 3.20543407], [1516553100000, 0.07059999, 0.07059999, 0.07059999, 0.07059999, 0.95737238], [1516553160000, 0.07059999, 0.07059999, 0.07059999, 0.07059999, 0.04287874], [1516553220000, 0.0704, 0.0704, 0.0704, 0.0704, 5.03042566], [1516553280000, 0.07058957, 0.07058957, 0.07056581, 0.07056581, 0.23296215], [1516553340000, 0.07033309, 0.07056159, 0.07033309, 0.07033309, 2.18163097], [1516553400000, 0.07033307, 0.07033309, 0.07033307, 0.07033309, 0.42654168], [1516553460000, 0.07033309, 0.07033309, 0.07033309, 0.07033309, 0.105], [1516553520000, 0.0703, 0.0703, 0.0702, 0.07022978, 0.99422281], [1516553580000, 0.07033309, 0.07033309, 0.07033309, 0.07033309, 2.18198364], [1516553640000, 0.07033309, 0.07033309, 0.07033309, 0.07033309, 0.03249859], [1516553700000, 0.07022978, 0.07033309, 0.07022978, 0.07033309, 0.16758789], [1516553760000, 0.07033309, 0.07033309, 0.07033309, 0.07033309, 0.1659151], [1516553820000, 0.07033309, 0.07033309, 0.07033309, 0.07033309, 0.27050506], [1516553880000, 0.07033309, 0.07033309, 0.07022978, 0.07022978, 1.21842904], [1516553940000, 0.07022978, 0.07022978, 0.07022978, 0.07022978, 0.00872762], [1516554000000, 0.07033308, 0.07059011, 0.07022978, 0.07022978, 1.53253221], [1516554060000, 0.07059011, 0.07059011, 0.07059011, 0.07059011, 0.45299021], [1516554120000, 0.07022978, 0.07022978, 0.07022978, 0.07022978, 4.50838537], [1516554180000, 0.07022978, 0.07022978, 0.0702, 0.07022978, 1.8025355], [1516554240000, 0.07017869, 0.07017869, 0.07011078, 0.07017869, 2.40237459], [1516554300000, 0.07017869, 0.07022978, 0.07017869, 0.07017869, 3.07061411], [1516554360000, 0.07022978, 0.07022978, 0.07017869, 0.07022978, 4.76332045], [1516554420000, 0.07022978, 0.07040994, 0.07022978, 0.07040994, 0.96863354], [1516554480000, 0.07040994, 0.07040994, 0.0701, 0.07016226, 8.57387888], [1516554540000, 0.07011436, 0.07018188, 0.07011436, 0.07014404, 0.8570085], [1516554600000, 0.07040994, 0.07040994, 0.07023404, 0.07025607, 6.08525067], [1516554780000, 0.07025607, 0.07025607, 0.07025607, 0.07025607, 0.25315144], [1516554840000, 0.07040902, 0.07040903, 0.07010001, 0.07010001, 0.07770799], [1516554900000, 0.07010001, 0.07050582, 0.07003752, 0.07050582, 2.03073562], [1516554960000, 0.07050358, 0.07050358, 0.07050358, 0.07050358, 0.04244356], [1516555080000, 0.07058998, 0.07058998, 0.07058998, 0.07058998, 0.06598526], [1516555140000, 0.07050582, 0.07050582, 0.07032955, 0.07032955, 0.11226889], [1516555200000, 0.07032955, 0.07050314, 0.07032955, 0.0705018, 0.45850147], [1516555260000, 0.07006533, 0.07019944, 0.07006533, 0.07019944, 2.48713701], [1516555380000, 0.07032954, 0.07032955, 0.07032954, 0.07032955, 0.14409603], [1516555440000, 0.0705, 0.0705, 0.07006931, 0.07006931, 0.07011566], [1516555500000, 0.07006931, 0.07053666, 0.07006931, 0.07053666, 0.14180253], [1516555560000, 0.0700693, 0.0700693, 0.0700693, 0.0700693, 0.02469135], [1516555620000, 0.07055719, 0.07055719, 0.07006931, 0.07006931, 0.07305199], [1516555680000, 0.07006931, 0.07006931, 0.07000001, 0.07006036, 3.44760307], [1516555740000, 0.07007337, 0.07007661, 0.07007337, 0.07007661, 1.59358185], [1516555800000, 0.07007663, 0.07007663, 0.07007663, 0.07007663, 0.01057806], [1516555860000, 0.07052165, 0.07052165, 0.07007935, 0.07007935, 6.3766269], [1516556040000, 0.07039124, 0.07047458, 0.07007934, 0.07047458, 1.91555176], [1516556100000, 0.07042505, 0.07042505, 0.07042505, 0.07042505, 0.80740212], [1516556280000, 0.070361, 0.070361, 0.070361, 0.070361, 3.07545952], [1516556340000, 0.07042504, 0.07042505, 0.070361, 0.070361, 0.80789564], [1516556460000, 0.0704, 0.0704, 0.070361, 0.070361, 2.89444846], [1516556520000, 0.070361, 0.070361, 0.07034261, 0.07034261, 0.20171457], [1516556580000, 0.07042503, 0.07042503, 0.07042503, 0.07042503, 0.04647626], [1516556640000, 0.07042503, 0.07042503, 0.07040233, 0.07042503, 1.88949057], [1516556700000, 0.07042503, 0.07042505, 0.07042503, 0.07042504, 2.60059015], [1516556760000, 0.07042504, 0.07042504, 0.07042504, 0.07042504, 0.44825959], [1516556820000, 0.07042503, 0.07042503, 0.07042503, 0.07042503, 3.54949576], [1516556940000, 0.07042504, 0.07042505, 0.07042504, 0.07042505, 0.497623], [1516557000000, 0.07042505, 0.07056502, 0.07042505, 0.07056502, 0.70689503], [1516557060000, 0.07055964, 0.07056501, 0.07006459, 0.07006459, 9.56689819], [1516557120000, 0.07011046, 0.07051773, 0.07004618, 0.07051773, 5.73542576], [1516557180000, 0.07051066, 0.07051066, 0.07005843, 0.07005843, 7.8082205], [1516557240000, 0.07051064, 0.07051064, 0.0700456, 0.0700456, 9.26869927], [1516557300000, 0.07047815, 0.07047815, 0.07024441, 0.07024441, 0.08737718], [1516557360000, 0.0704888, 0.07056502, 0.07000001, 0.07000001, 8.98236826], [1516557420000, 0.07017501, 0.07017501, 0.07017501, 0.07017501, 0.04275026], [1516557480000, 0.07043433, 0.07044596, 0.07043433, 0.07044596, 2.83880145], [1516557540000, 0.07000002, 0.07000002, 0.07000002, 0.07000002, 0.05871784], [1516557600000, 0.07043386, 0.07043972, 0.07, 0.07043972, 8.13618064], [1516557660000, 0.07043972, 0.07056502, 0.07, 0.07049147, 4.18968201], [1516557720000, 0.07049699, 0.07049699, 0.07000002, 0.07000002, 6.1956562], [1516557780000, 0.07049202, 0.07049202, 0.07049202, 0.07049202, 0.04950706], [1516557840000, 0.07049493, 0.07049698, 0.07049492, 0.07049492, 0.3472462], [1516557900000, 0.07004959, 0.07049492, 0.07001607, 0.07001763, 1.13864037], [1516558080000, 0.07018075, 0.07018075, 0.07018075, 0.07018075, 0.1], [1516558200000, 0.07048585, 0.070565, 0.07014868, 0.07014868, 0.32145662], [1516558380000, 0.070565, 0.070565, 0.070486, 0.070486, 0.1697742], [1516558440000, 0.070486, 0.070486, 0.070486, 0.070486, 0.01149614], [1516558500000, 0.07056499, 0.07056499, 0.07056499, 0.07056499, 0.20360568], [1516558620000, 0.070486, 0.070486, 0.07029822, 0.07029822, 2.8], [1516558680000, 0.07056498, 0.07056499, 0.07056498, 0.07056499, 1.78655482], [1516558740000, 0.07056499, 0.07056501, 0.07056499, 0.07056501, 2.5565135], [1516558800000, 0.07056501, 0.0706, 0.07056501, 0.0706, 17.49723388], [1516558860000, 0.0706, 0.0706, 0.0706, 0.0706, 7.023], [1516558920000, 0.0706, 0.0706, 0.0706, 0.0706, 1.80039656], [1516558980000, 0.07071859, 0.07071859, 0.07071461, 0.07071461, 0.12002792], [1516559040000, 0.07072999, 0.07073, 0.07044484, 0.07044484, 1.09235699], [1516559100000, 0.07023575, 0.07023575, 0.07023575, 0.07023575, 1.27379388], [1516559160000, 0.07023727, 0.07023727, 0.07023727, 0.07023727, 0.04166845], [1516559220000, 0.07033105, 0.0706, 0.07033105, 0.0706, 0.17244918], [1516559280000, 0.0706, 0.07073, 0.0706, 0.07073, 1.69151639], [1516559340000, 0.07073, 0.07123999, 0.0703003, 0.0703003, 24.36169747], [1516559400000, 0.07087498, 0.070875, 0.07087498, 0.070875, 0.28218694], [1516559520000, 0.07048123, 0.0708473, 0.07048123, 0.0708473, 10.9302], [1516559580000, 0.0708473, 0.0708473, 0.07084546, 0.07084546, 0.23447729], [1516559700000, 0.07031, 0.07080352, 0.07014868, 0.07014868, 0.8617204], [1516559760000, 0.0701609, 0.0701609, 0.0701609, 0.0701609, 0.90674966], [1516559820000, 0.07076433, 0.07076433, 0.07076433, 0.07076433, 0.0202], [1516559880000, 0.07076434, 0.07093263, 0.07048487, 0.07049885, 2.22625319], [1516560000000, 0.07049885, 0.07049885, 0.07049885, 0.07049885, 1.27819144], [1516560060000, 0.07049885, 0.07049885, 0.07049885, 0.07049885, 0.01245127], [1516560120000, 0.07049885, 0.070518, 0.07049885, 0.07049885, 0.56187614], [1516560300000, 0.07092985, 0.07092985, 0.07061852, 0.07061852, 0.283632], [1516560360000, 0.07061852, 0.07061852, 0.07061851, 0.07061852, 0.16258669], [1516560600000, 0.07061851, 0.07061851, 0.07061851, 0.07061851, 0.14160595], [1516560660000, 0.0706185, 0.07061851, 0.07034231, 0.07061851, 17.7210825], [1516560720000, 0.07033103, 0.07033103, 0.07000091, 0.07000091, 54.34829385], [1516560840000, 0.07026893, 0.07026893, 0.07026893, 0.07026893, 0.26301925], [1516560900000, 0.07061849, 0.07123802, 0.07061849, 0.07123802, 3.28008186], [1516560960000, 0.07079938, 0.0708627, 0.07031, 0.07031, 0.58643752], [1516561020000, 0.07026555, 0.07026555, 0.07026555, 0.07026555, 7.0], [1516561080000, 0.07010001, 0.07010001, 0.07010001, 0.07010001, 0.79902455], [1516561140000, 0.07057543, 0.07057543, 0.0701, 0.07052981, 1.62444955], [1516561200000, 0.07000091, 0.07062613, 0.07000091, 0.07062613, 0.90028989], [1516561260000, 0.07060944, 0.07060944, 0.07060944, 0.07060944, 0.08180526], [1516561320000, 0.07059467, 0.07059717, 0.07059467, 0.07059717, 1.74829141], [1516561380000, 0.0705, 0.0705, 0.0705, 0.0705, 0.145212], [1516561500000, 0.0705, 0.0705, 0.07018058, 0.0705, 0.41537897], [1516561620000, 0.07049999, 0.0705, 0.07049999, 0.0705, 0.14323322], [1516561680000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.133028], [1516561800000, 0.07027112, 0.07029279, 0.07027112, 0.07029279, 5.76949275], [1516561860000, 0.07013525, 0.07013525, 0.07013525, 0.07013525, 0.82], [1516561980000, 0.070142, 0.070142, 0.070142, 0.070142, 0.42770386], [1516562040000, 0.07002003, 0.07002003, 0.07002, 0.07002003, 2.74234438], [1516562100000, 0.07002, 0.07049907, 0.07002, 0.07049739, 0.2550562], [1516562160000, 0.07005928, 0.07049529, 0.07000629, 0.07000629, 1.64831234], [1516562220000, 0.07000629, 0.07043541, 0.07000629, 0.07043541, 0.36118595], [1516562340000, 0.07031293, 0.07031293, 0.07006001, 0.07006001, 6.78818785], [1516562400000, 0.07049996, 0.07049999, 0.07049996, 0.07049999, 0.07666995], [1516562460000, 0.07049996, 0.07049999, 0.07002329, 0.07002329, 3.1429449], [1516562520000, 0.07049998, 0.07049998, 0.07013886, 0.07013886, 0.25801536], [1516562580000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.03458307], [1516562640000, 0.07008866, 0.0702, 0.07008866, 0.0702, 0.37058288], [1516562700000, 0.0702, 0.0702, 0.0702, 0.0702, 4.07519182], [1516562760000, 0.07049999, 0.07049999, 0.0702, 0.0702, 3.86398939], [1516562880000, 0.07049, 0.07049999, 0.07049, 0.07049999, 0.21459625], [1516562940000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.1], [1516563060000, 0.07007, 0.07042908, 0.07007, 0.07042908, 3.47830488], [1516563120000, 0.07048848, 0.07048848, 0.07007, 0.07048635, 1.26787617], [1516563180000, 0.07048635, 0.07048635, 0.07007002, 0.07007002, 0.47825546], [1516563240000, 0.0705, 0.0705, 0.07007002, 0.07007002, 1.06834734], [1516563300000, 0.0705, 0.0705, 0.0705, 0.0705, 7.0424251], [1516563360000, 0.0701102, 0.07052197, 0.0701102, 0.07052197, 0.62972429], [1516563420000, 0.0701102, 0.0701102, 0.0701102, 0.0701102, 1.0], [1516563480000, 0.07052197, 0.07052197, 0.07052197, 0.07052197, 0.2034547], [1516563540000, 0.07052197, 0.07052197, 0.07052197, 0.07052197, 0.06942842], [1516563600000, 0.07052197, 0.07052197, 0.07052197, 0.07052197, 0.32099682], [1516563660000, 0.07051887, 0.07052197, 0.07051887, 0.07052197, 5.2971979], [1516563720000, 0.07052197, 0.07052197, 0.07050317, 0.07052197, 0.48735524], [1516563780000, 0.07052197, 0.07052197, 0.07052197, 0.07052197, 0.01420047], [1516563840000, 0.07050086, 0.07052197, 0.07050086, 0.07052197, 0.19885876], [1516563900000, 0.07052197, 0.07062835, 0.07052197, 0.07062254, 0.9125951], [1516563960000, 0.07050086, 0.07063443, 0.07050086, 0.07063443, 0.09204186], [1516564020000, 0.07050086, 0.07066525, 0.07050086, 0.07066525, 0.22792361], [1516564080000, 0.07066525, 0.07069442, 0.07066525, 0.07066525, 0.11064445], [1516564200000, 0.07064425, 0.07064425, 0.07064417, 0.07064425, 0.51109666], [1516564380000, 0.07027964, 0.07064417, 0.07027964, 0.07064417, 0.13230268], [1516564500000, 0.07076556, 0.07076556, 0.07076556, 0.07076556, 0.0613163], [1516564620000, 0.07075011, 0.07075011, 0.07075011, 0.07075011, 2.0], [1516564740000, 0.07074087, 0.07074087, 0.07064417, 0.07064417, 0.1093167], [1516564800000, 0.07079662, 0.07079662, 0.07064417, 0.07077743, 0.41109853], [1516564920000, 0.07077743, 0.07081167, 0.07064417, 0.07064417, 0.42268245], [1516565040000, 0.07082038, 0.07082038, 0.07046137, 0.07046137, 0.844849], [1516565100000, 0.07083732, 0.0709113, 0.07083732, 0.07083732, 1.14116856], [1516565160000, 0.07041487, 0.071001, 0.07041487, 0.071001, 1.65184497], [1516565220000, 0.07106416, 0.07106416, 0.070911, 0.07104513, 0.43643344], [1516565340000, 0.07091095, 0.0710689, 0.07091095, 0.07091095, 1.4970264], [1516565400000, 0.07091095, 0.070911, 0.07091095, 0.070911, 0.21402083], [1516565520000, 0.07091091, 0.07091091, 0.07091091, 0.07091091, 0.14066946], [1516565580000, 0.07071735, 0.07110328, 0.07071735, 0.07089746, 3.8806], [1516565640000, 0.0711, 0.07124, 0.07109999, 0.07123999, 2.86871202], [1516565700000, 0.07124, 0.0713, 0.07070947, 0.07070948, 4.38711354], [1516565760000, 0.070887, 0.07123991, 0.07081228, 0.07123983, 3.11103294], [1516565940000, 0.07112422, 0.07112422, 0.07112422, 0.07112422, 0.4941801], [1516566000000, 0.0712171, 0.0712171, 0.07079883, 0.07119349, 0.75141971], [1516566060000, 0.07117317, 0.07121711, 0.07117317, 0.07121711, 2.48461367], [1516566120000, 0.07121711, 0.07121711, 0.07056701, 0.07120868, 0.70447637], [1516566240000, 0.07120868, 0.07120868, 0.07089087, 0.07089087, 0.09488448], [1516566300000, 0.0709971, 0.0709971, 0.0709971, 0.0709971, 0.07984062], [1516566360000, 0.07093001, 0.0709971, 0.07083653, 0.0709971, 0.10438779], [1516566420000, 0.07093074, 0.0712399, 0.07072897, 0.0712399, 1.06009487], [1516566480000, 0.07119886, 0.07119887, 0.07119886, 0.07119887, 2.45], [1516566540000, 0.07068446, 0.07068446, 0.07068446, 0.07068446, 0.04374302], [1516566600000, 0.07119885, 0.07121387, 0.07119885, 0.07121387, 0.21620468], [1516566660000, 0.07076762, 0.07076762, 0.07076762, 0.07076762, 0.02562067], [1516566720000, 0.07123991, 0.07149999, 0.07123991, 0.07141506, 5.1875], [1516566780000, 0.07142924, 0.07145234, 0.07139705, 0.07139705, 1.13634715], [1516566840000, 0.07139705, 0.0715, 0.07104744, 0.0715, 3.72447658], [1516566900000, 0.0715, 0.07162679, 0.0712145, 0.07129, 17.68148795], [1516566960000, 0.07127752, 0.0718438, 0.07127752, 0.07141984, 4.31565083], [1516567020000, 0.07146901, 0.07146901, 0.07146901, 0.07146901, 0.01539344], [1516567080000, 0.07184381, 0.0719, 0.07147405, 0.07147405, 5.08759394], [1516567200000, 0.0719, 0.0719, 0.0719, 0.0719, 0.73343786], [1516567260000, 0.0718, 0.0718, 0.07133301, 0.07140853, 6.95556695], [1516567380000, 0.07133301, 0.07169784, 0.07133301, 0.07169784, 0.11115157], [1516567500000, 0.07130482, 0.07157812, 0.07130482, 0.07157812, 2.28906693], [1516567560000, 0.07157821, 0.07157821, 0.07157821, 0.07157821, 0.01669233], [1516567620000, 0.07157825, 0.07189031, 0.07157818, 0.07189031, 1.58406824], [1516567680000, 0.07189641, 0.07189998, 0.07157827, 0.07189998, 0.37057838], [1516567740000, 0.07189134, 0.0719, 0.07187273, 0.0719, 2.55254355], [1516567800000, 0.07157827, 0.07157827, 0.07157827, 0.07157827, 0.9392789], [1516567860000, 0.0719, 0.0719, 0.0719, 0.0719, 0.21991324], [1516567920000, 0.07189999, 0.0719, 0.07189999, 0.0719, 0.02746595], [1516567980000, 0.0718, 0.07190322, 0.07179999, 0.07190322, 10.34434395], [1516568040000, 0.07190322, 0.07199379, 0.07190322, 0.07199379, 1.45054568], [1516568100000, 0.07178306, 0.072, 0.07178306, 0.072, 28.28602288], [1516568160000, 0.072, 0.0721, 0.07184246, 0.0721, 9.01054652], [1516568220000, 0.07198384, 0.072118, 0.07198384, 0.072118, 1.18180747], [1516568280000, 0.07211799, 0.07244077, 0.07157849, 0.07157849, 8.07894259], [1516568340000, 0.07195368, 0.07195368, 0.0718246, 0.0718246, 2.45777314], [1516568400000, 0.07219865, 0.07228535, 0.07166474, 0.07166474, 3.31701386], [1516568460000, 0.07225481, 0.07225481, 0.07148456, 0.07197565, 13.50575519], [1516568580000, 0.07139682, 0.07139682, 0.07134636, 0.07134637, 11.56969421], [1516568640000, 0.07134637, 0.07134637, 0.07132383, 0.07132383, 3.59834391], [1516568700000, 0.07188049, 0.07188049, 0.07148204, 0.07148204, 0.15712029], [1516568880000, 0.07160468, 0.07160468, 0.07160468, 0.07160468, 0.18452518], [1516569000000, 0.07160468, 0.07160468, 0.07144554, 0.07144554, 6.01137164], [1516569060000, 0.0716, 0.07162085, 0.0716, 0.07162085, 0.610313], [1516569120000, 0.07160476, 0.07160476, 0.07160476, 0.07160476, 0.5], [1516569180000, 0.07160479, 0.07160479, 0.0716047, 0.0716047, 0.36861638], [1516569240000, 0.0716047, 0.0716047, 0.07123338, 0.07123338, 1.96304329], [1516569300000, 0.07160471, 0.07160471, 0.07120131, 0.07120131, 0.16473457], [1516569360000, 0.0714193, 0.0714193, 0.0714193, 0.0714193, 0.010551], [1516569420000, 0.07112136, 0.0711747, 0.0710464, 0.07106977, 0.7147], [1516569480000, 0.07113217, 0.07113217, 0.07113217, 0.07113217, 0.62048877], [1516569540000, 0.0714, 0.07154378, 0.0714, 0.07154378, 0.13317029], [1516569660000, 0.0713, 0.07154378, 0.0713, 0.0715437, 0.94333022], [1516569720000, 0.0715437, 0.0715437, 0.07104407, 0.07104407, 0.85585694], [1516569780000, 0.07118264, 0.07118264, 0.07118264, 0.07118264, 0.01415338], [1516569840000, 0.07107339, 0.07107339, 0.07107339, 0.07107339, 0.3627616], [1516569900000, 0.07118264, 0.07150218, 0.07118264, 0.07150218, 0.31033411], [1516569960000, 0.07153719, 0.07153719, 0.07147607, 0.07147607, 0.03974772], [1516570140000, 0.07149754, 0.07152438, 0.07149754, 0.07152438, 0.0351431], [1516570320000, 0.07152438, 0.07160479, 0.07123415, 0.07123415, 0.63350616], [1516570440000, 0.0715, 0.0715, 0.0715, 0.0715, 0.619508], [1516570500000, 0.0715, 0.07160479, 0.0715, 0.07160479, 0.74691274], [1516570560000, 0.07160479, 0.07190207, 0.07160479, 0.07185243, 0.67619111], [1516570620000, 0.07185243, 0.07185243, 0.07185243, 0.07185243, 0.146107], [1516570680000, 0.07185243, 0.07185243, 0.07138501, 0.07185243, 0.29324276], [1516570740000, 0.07185243, 0.07202857, 0.07185243, 0.07202857, 0.7294079], [1516570800000, 0.07152635, 0.07152635, 0.07152635, 0.07152635, 0.5], [1516570860000, 0.07152635, 0.07152635, 0.07152635, 0.07152635, 1.00894299], [1516570920000, 0.0715444, 0.07171189, 0.0715444, 0.07157615, 0.50101126], [1516570980000, 0.0719769, 0.0719769, 0.0719769, 0.0719769, 1.2157577], [1516571100000, 0.07197199, 0.07197682, 0.07197199, 0.07197681, 1.30243789], [1516571160000, 0.07197681, 0.07197681, 0.07157298, 0.07157298, 2.72320048], [1516571220000, 0.071479, 0.07194382, 0.07138501, 0.07194382, 0.65045355], [1516571280000, 0.07194382, 0.07194382, 0.07165429, 0.07165429, 0.24894825], [1516571340000, 0.07165429, 0.07165429, 0.07165429, 0.07165429, 2.06953805], [1516571400000, 0.07165429, 0.07165429, 0.07165429, 0.07165429, 0.03001442], [1516571460000, 0.07195823, 0.07195823, 0.07195823, 0.07195823, 0.186147], [1516571520000, 0.07165429, 0.07165429, 0.0715, 0.0715, 1.5], [1516571580000, 0.0715, 0.0715, 0.0715, 0.0715, 0.7434], [1516571640000, 0.0715, 0.0715, 0.0715, 0.0715, 4.184e-05], [1516571700000, 0.07149998, 0.07149998, 0.07131972, 0.07131972, 0.40007691], [1516571760000, 0.07149998, 0.07149998, 0.07149998, 0.07149998, 0.01613496], [1516571880000, 0.07123, 0.07123, 0.07123, 0.07123, 1.147], [1516572000000, 0.0713, 0.07148877, 0.07108258, 0.07148877, 1.27575011], [1516572060000, 0.07108258, 0.07108258, 0.07108258, 0.07108258, 1.9535], [1516572120000, 0.071399, 0.071399, 0.07108258, 0.07108258, 1.03240116], [1516572180000, 0.07139996, 0.07139996, 0.07139996, 0.07139996, 0.0789], [1516572240000, 0.07139994, 0.07139994, 0.07108258, 0.07108258, 1.44137405], [1516572300000, 0.07139995, 0.0714, 0.07139995, 0.0714, 4.03845835], [1516572480000, 0.07108258, 0.07108258, 0.07108258, 0.07108258, 0.9259], [1516572540000, 0.07139998, 0.0714, 0.07108258, 0.07139999, 9.81983414], [1516572600000, 0.07139999, 0.07139999, 0.07108258, 0.07139999, 2.43188863], [1516572660000, 0.07108258, 0.0714, 0.07108258, 0.07108258, 2.3491504], [1516572780000, 0.071388, 0.071388, 0.071388, 0.071388, 0.2201058], [1516572840000, 0.07108258, 0.07139999, 0.07108258, 0.07139999, 3.08913299], [1516572900000, 0.07139999, 0.0714, 0.0713905, 0.0713905, 0.19877572], [1516572960000, 0.07108258, 0.07139919, 0.07108258, 0.07138609, 0.42606238], [1516573020000, 0.0714, 0.0714, 0.0714, 0.0714, 0.22531789], [1516573080000, 0.07108258, 0.07108258, 0.07108258, 0.07108258, 7.60708061], [1516573140000, 0.07136214, 0.07136214, 0.07108258, 0.07108258, 4.41959381], [1516573200000, 0.07108258, 0.07108258, 0.07108258, 0.07108258, 0.97277837], [1516573260000, 0.07108258, 0.07108258, 0.07108258, 0.07108258, 0.64], [1516573320000, 0.07108258, 0.07108258, 0.07108258, 0.07108258, 0.099], [1516573440000, 0.07108258, 0.07108258, 0.07108258, 0.07108258, 0.04922691], [1516573500000, 0.07129432, 0.07133578, 0.07108258, 0.07133578, 0.96177612], [1516573560000, 0.07133578, 0.07133578, 0.07133578, 0.07133578, 0.40506461], [1516573620000, 0.07133578, 0.07146491, 0.07133578, 0.07133578, 1.07609321], [1516573680000, 0.07146491, 0.07146491, 0.07146491, 0.07146491, 0.15461962], [1516573740000, 0.07108258, 0.07108258, 0.07108258, 0.07108258, 0.9872], [1516573800000, 0.07108258, 0.07108258, 0.07108258, 0.07108258, 0.517764], [1516573920000, 0.07108258, 0.07108258, 0.07108258, 0.07108258, 0.035], [1516573980000, 0.07117063, 0.07146265, 0.07108258, 0.07108258, 1.8776251], [1516574100000, 0.07146491, 0.071968, 0.07146491, 0.071968, 0.48473847], [1516574160000, 0.07179002, 0.07184714, 0.07179002, 0.07184714, 8.89305656], [1516574220000, 0.07184714, 0.07184714, 0.07108258, 0.07156737, 0.73716709], [1516574340000, 0.07162482, 0.07162482, 0.07162482, 0.07162482, 0.01881348], [1516574400000, 0.07122188, 0.07122188, 0.07108841, 0.07114833, 12.70664555], [1516574460000, 0.07118626, 0.07118626, 0.07118626, 0.07118626, 0.17596025], [1516574520000, 0.07118626, 0.07118626, 0.07114833, 0.07114833, 0.12437961], [1516574580000, 0.07113937, 0.07114833, 0.07113937, 0.07114833, 0.3167096], [1516574640000, 0.07114833, 0.07159997, 0.07114833, 0.07159997, 0.0406016], [1516574700000, 0.07114833, 0.07114833, 0.07114833, 0.07114833, 3.73939], [1516574760000, 0.07152464, 0.07152464, 0.07152464, 0.07152464, 0.27701991], [1516574820000, 0.07155733, 0.07155733, 0.07155733, 0.07155733, 0.01550714], [1516574880000, 0.07152237, 0.07152237, 0.07110593, 0.07130804, 0.19122846], [1516574940000, 0.07151885, 0.07151885, 0.07151885, 0.07151885, 0.87500091], [1516575000000, 0.07109652, 0.07151881, 0.07109652, 0.07112279, 2.8165615], [1516575060000, 0.07112279, 0.07112279, 0.07112279, 0.07112279, 0.5], [1516575120000, 0.07153171, 0.07153171, 0.0715317, 0.0715317, 0.251668], [1516575180000, 0.0715317, 0.0715317, 0.0715317, 0.0715317, 0.03513267], [1516575240000, 0.0715317, 0.0715317, 0.0715317, 0.0715317, 0.28426174], [1516575300000, 0.0715317, 0.0715317, 0.0715317, 0.0715317, 0.09940358], [1516575420000, 0.0715317, 0.07153171, 0.07129704, 0.07153171, 4.13393555], [1516575480000, 0.07139978, 0.07184714, 0.07139978, 0.07184714, 10.5224305], [1516575540000, 0.07117309, 0.07117309, 0.07117309, 0.07117309, 0.61732997], [1516575600000, 0.07129414, 0.07129414, 0.07129414, 0.07129414, 0.10444814], [1516575720000, 0.07168476, 0.07168476, 0.0711159, 0.07168476, 0.49890502], [1516575780000, 0.0711159, 0.0716304, 0.0711159, 0.07115896, 0.240649], [1516575840000, 0.07159187, 0.07159187, 0.07109817, 0.07109817, 0.78082668], [1516575900000, 0.07109817, 0.07164878, 0.07108258, 0.07157966, 9.16862682], [1516575960000, 0.07157966, 0.07157966, 0.07157966, 0.07157966, 0.28327608], [1516576080000, 0.07150163, 0.07150163, 0.07150163, 0.07150163, 0.008], [1516576140000, 0.07108258, 0.07108258, 0.07108258, 0.07108258, 0.11198328], [1516576200000, 0.07108259, 0.07160332, 0.07108259, 0.07160332, 0.08295541], [1516576260000, 0.07154514, 0.07154647, 0.071535, 0.07153504, 3.37313596], [1516576320000, 0.0715486, 0.0715486, 0.0715486, 0.0715486, 1.00400299], [1516576380000, 0.0715486, 0.0715486, 0.07108258, 0.07108258, 0.33894422], [1516576440000, 0.07147947, 0.07147947, 0.07147947, 0.07147947, 0.43458027], [1516576500000, 0.0714655, 0.0714655, 0.0714655, 0.0714655, 0.1691858], [1516576560000, 0.07108258, 0.0714655, 0.07108258, 0.07108258, 2.508906], [1516576620000, 0.07108258, 0.07109459, 0.07108258, 0.07108258, 11.47143028], [1516576680000, 0.07145977, 0.07145977, 0.07145644, 0.07145644, 0.24912769], [1516576740000, 0.07145201, 0.07145201, 0.07108258, 0.07108258, 1.5973109], [1516576800000, 0.07108258, 0.07141795, 0.07104, 0.07134454, 7.21828663], [1516576860000, 0.07122, 0.07184599, 0.07104, 0.07104, 9.30877392], [1516576920000, 0.07104, 0.07134979, 0.07061019, 0.07061019, 0.67661493], [1516576980000, 0.07096461, 0.07096461, 0.07096461, 0.07096461, 0.01877347], [1516577100000, 0.07096461, 0.07096461, 0.0709646, 0.0709646, 0.4397559], [1516577400000, 0.07096461, 0.07120783, 0.07096461, 0.0712078, 1.85871921], [1516577460000, 0.0712078, 0.07120782, 0.07096461, 0.07120782, 3.18146357], [1516577520000, 0.07096466, 0.07096466, 0.07096466, 0.07096466, 0.49698602], [1516577580000, 0.07115731, 0.07115731, 0.07096466, 0.07096466, 10.73089972], [1516577640000, 0.07096466, 0.07096466, 0.07096466, 0.07096466, 0.04657158], [1516577700000, 0.0711206, 0.07120342, 0.0711206, 0.07120342, 0.15688907], [1516577760000, 0.07108073, 0.07108073, 0.07108073, 0.07108073, 2.61102256], [1516577820000, 0.07113505, 0.07120782, 0.07096466, 0.07096466, 5.78191799], [1516577880000, 0.07096466, 0.07114501, 0.07096466, 0.07096466, 1.66731951], [1516577940000, 0.07110288, 0.07110288, 0.07096466, 0.07096466, 0.04954218], [1516578000000, 0.07109974, 0.07149337, 0.07096466, 0.07115705, 3.13320357], [1516578060000, 0.07096466, 0.07096466, 0.07096466, 0.07096466, 0.0310718], [1516578120000, 0.07136816, 0.07136816, 0.07096466, 0.07096466, 1.03507479], [1516578180000, 0.07117999, 0.07117999, 0.07096466, 0.07096466, 0.09153468], [1516578240000, 0.07096466, 0.0711136, 0.07096466, 0.07111035, 0.43550672], [1516578300000, 0.07096466, 0.07111035, 0.07096466, 0.07096466, 0.21737926], [1516578360000, 0.07111035, 0.07125075, 0.07111035, 0.07111035, 1.18500143], [1516578420000, 0.07122851, 0.07122851, 0.07111035, 0.07111035, 3.88320073], [1516578540000, 0.07120087, 0.07120087, 0.07111035, 0.07111035, 0.05648436], [1516578600000, 0.07122851, 0.07122851, 0.07120087, 0.07120087, 0.15813994], [1516578660000, 0.07111035, 0.07120087, 0.07111035, 0.07120087, 0.35418247], [1516578720000, 0.07120087, 0.0712285, 0.07120087, 0.0712285, 0.07907855], [1516578780000, 0.0712285, 0.0712285, 0.0712285, 0.0712285, 0.15417481], [1516578840000, 0.0712285, 0.0713423, 0.07120087, 0.07120087, 2.72682735], [1516578900000, 0.07138228, 0.07140876, 0.07120087, 0.07120087, 0.59351241], [1516578960000, 0.07120087, 0.07120087, 0.07111035, 0.07111035, 1.11797916], [1516579020000, 0.07111035, 0.07134674, 0.07111035, 0.07134674, 0.12470304], [1516579080000, 0.07111035, 0.07111035, 0.07111035, 0.07111035, 3.47704878], [1516579200000, 0.07111035, 0.07111035, 0.07111035, 0.07111035, 0.28168805], [1516579320000, 0.07096466, 0.07103931, 0.07096466, 0.07103931, 0.08872299], [1516579380000, 0.07111035, 0.07111035, 0.07111035, 0.07111035, 0.144062], [1516579440000, 0.0712531, 0.0712531, 0.07052104, 0.07052104, 2.20315919], [1516579500000, 0.071, 0.071, 0.071, 0.071, 0.46818394], [1516579620000, 0.0711395, 0.0711395, 0.071, 0.071, 0.17730484], [1516579680000, 0.071, 0.071, 0.071, 0.071, 0.07940375], [1516579800000, 0.07087474, 0.07088973, 0.07087474, 0.07088973, 0.17396046], [1516579860000, 0.07096644, 0.07121723, 0.07096644, 0.07121723, 0.08926699], [1516579920000, 0.07101705, 0.07101705, 0.0708247, 0.0708247, 0.3575778], [1516579980000, 0.07052129, 0.07052402, 0.07052129, 0.07052129, 1.66026083], [1516580040000, 0.07052129, 0.07052129, 0.07052129, 0.07052129, 0.80060754], [1516580100000, 0.07052129, 0.07052129, 0.07052129, 0.07052129, 1.64515227], [1516580160000, 0.07052129, 0.07052129, 0.07051, 0.07052129, 0.52121577], [1516580220000, 0.07052129, 0.07052129, 0.07052129, 0.07052129, 1.14443609], [1516580280000, 0.07052129, 0.07052129, 0.07052129, 0.07052129, 0.50389345], [1516580340000, 0.07090009, 0.07090009, 0.07090009, 0.07090009, 0.18167752], [1516580400000, 0.07091916, 0.07091916, 0.07091916, 0.07091916, 0.14100553], [1516580460000, 0.0709558, 0.0709558, 0.0709558, 0.0709558, 0.14093274], [1516580520000, 0.07091916, 0.07091916, 0.07091916, 0.07091916, 0.2807], [1516580580000, 0.07091916, 0.07091916, 0.07091916, 0.07091916, 0.07473297], [1516580640000, 0.07091916, 0.07091916, 0.0706, 0.0706, 14.67741898], [1516580700000, 0.0706, 0.07091916, 0.0705213, 0.07091916, 39.28164557], [1516580760000, 0.07087392, 0.07087392, 0.07051001, 0.07051001, 15.0], [1516580880000, 0.07091916, 0.07091916, 0.07051005, 0.07091916, 7.0190124], [1516580940000, 0.07059115, 0.07059115, 0.07059115, 0.07059115, 1.27905408], [1516581000000, 0.07091916, 0.07091916, 0.07091916, 0.07091916, 1.04835833], [1516581060000, 0.0707, 0.07091916, 0.0707, 0.07091916, 0.74969263], [1516581120000, 0.0707, 0.0707, 0.0707, 0.0707, 0.3258431], [1516581180000, 0.0707, 0.0707, 0.0707, 0.0707, 0.32484435], [1516581240000, 0.0707, 0.07091916, 0.0707, 0.07091916, 0.94451549], [1516581300000, 0.07091916, 0.07091916, 0.07051, 0.07051, 2.23772634], [1516581360000, 0.07051, 0.07051, 0.07051, 0.07051, 0.3843], [1516581420000, 0.07091916, 0.07091916, 0.07091915, 0.07091915, 0.08014643], [1516581480000, 0.07083082, 0.07083082, 0.07083082, 0.07083082, 0.04465876], [1516581540000, 0.07084331, 0.07084331, 0.07084331, 0.07084331, 0.06087542], [1516581660000, 0.0708416, 0.07084162, 0.0708416, 0.07084162, 0.21866909], [1516581840000, 0.07051001, 0.07051001, 0.07051, 0.07051, 6.00000191], [1516581900000, 0.07051, 0.070802, 0.07051, 0.070802, 3.03892515], [1516582020000, 0.07083933, 0.07083933, 0.07083933, 0.07083933, 0.00898884], [1516582140000, 0.07083933, 0.07083933, 0.07083933, 0.07083933, 0.07058226], [1516582200000, 0.07084144, 0.07084144, 0.07084144, 0.07084144, 0.14116039], [1516582260000, 0.07051, 0.07051, 0.07051, 0.07051, 0.10701223], [1516582500000, 0.0707393, 0.0707393, 0.07051, 0.07051, 1.7155408], [1516582560000, 0.07051, 0.07051, 0.07025501, 0.07025501, 6.66878875], [1516582620000, 0.07076007, 0.07076007, 0.07021968, 0.07021968, 1.83871442], [1516582680000, 0.07069818, 0.07069818, 0.07069818, 0.07069818, 0.02261547], [1516582800000, 0.07030672, 0.07074042, 0.07030672, 0.07074042, 0.5536343], [1516582860000, 0.070247, 0.0703222, 0.070223, 0.0703222, 0.2848], [1516582920000, 0.07074033, 0.07074033, 0.07074033, 0.07074033, 7.08681058], [1516582980000, 0.07051208, 0.07074033, 0.07051208, 0.07074033, 0.3271875], [1516583100000, 0.07074032, 0.07074032, 0.07040513, 0.07074032, 0.83653809], [1516583220000, 0.07081786, 0.07081786, 0.07081786, 0.07081786, 0.2809], [1516583280000, 0.07074032, 0.07074032, 0.07074032, 0.07074032, 0.07058226], [1516583340000, 0.07092551, 0.07092551, 0.07092551, 0.07092551, 0.24764533], [1516583400000, 0.0709255, 0.07098264, 0.07078245, 0.07098264, 1.26324512], [1516583460000, 0.07098136, 0.07098136, 0.07059131, 0.07089445, 2.43816234], [1516583520000, 0.0704994, 0.07090385, 0.07042003, 0.07042003, 2.26830842], [1516583580000, 0.07090584, 0.07090584, 0.07042003, 0.07090528, 1.33385334], [1516583640000, 0.07090528, 0.07095864, 0.07090071, 0.07090071, 1.38260102], [1516583700000, 0.07090063, 0.07098848, 0.07042003, 0.07098847, 0.37348239], [1516583760000, 0.07083334, 0.07156767, 0.07065676, 0.07065676, 1.92818785], [1516583820000, 0.07109189, 0.07109189, 0.07109189, 0.07109189, 0.36881813], [1516583880000, 0.07117564, 0.07117564, 0.07108271, 0.07108271, 2.91954097], [1516583940000, 0.07107464, 0.07107464, 0.07107464, 0.07107464, 0.17840233], [1516584000000, 0.07107463, 0.07107463, 0.07107463, 0.07107463, 0.06490888], [1516584060000, 0.07107463, 0.07107472, 0.07107463, 0.07107472, 0.35978765], [1516584120000, 0.07107471, 0.07140669, 0.07107471, 0.07140669, 1.54737773], [1516584300000, 0.07107471, 0.07139688, 0.07107471, 0.07139688, 1.34567372], [1516584480000, 0.07107471, 0.07107471, 0.07107464, 0.07107464, 0.72810634], [1516584600000, 0.07120908, 0.07120908, 0.07119591, 0.07119591, 0.16294986], [1516584720000, 0.07107464, 0.07107464, 0.07107464, 0.07107464, 0.02], [1516584780000, 0.07112486, 0.07112486, 0.07112486, 0.07112486, 0.1], [1516584840000, 0.07115546, 0.07115546, 0.07115546, 0.07115546, 0.580711], [1516584900000, 0.07115546, 0.07115546, 0.07115546, 0.07115546, 0.19899917], [1516585020000, 0.07115546, 0.07130609, 0.07107464, 0.07121769, 17.08946694], [1516585200000, 0.07117687, 0.0711944, 0.07066804, 0.0711944, 4.26179037], [1516585260000, 0.0711944, 0.0711944, 0.0711944, 0.0711944, 0.03046537], [1516585320000, 0.07078005, 0.07078005, 0.07078005, 0.07078005, 1.12871369], [1516585380000, 0.07078909, 0.0711944, 0.07078909, 0.0711944, 5.05929287], [1516585440000, 0.071162, 0.071162, 0.071162, 0.071162, 0.01549282], [1516585500000, 0.071162, 0.07138388, 0.07091311, 0.07138388, 10.79535305], [1516585560000, 0.0711, 0.07136047, 0.0711, 0.07130119, 15.78509849], [1516585620000, 0.07068311, 0.07130746, 0.07068311, 0.07130746, 2.30837327], [1516585680000, 0.07130735, 0.0713581, 0.07130735, 0.0713581, 2.56802149], [1516585740000, 0.07144028, 0.07149995, 0.07097975, 0.07149995, 5.5143508], [1516585800000, 0.07149999, 0.0715, 0.07149999, 0.0715, 10.01902328], [1516585860000, 0.07141096, 0.07141096, 0.07104074, 0.07104074, 3.1911731], [1516585920000, 0.07149999, 0.0715, 0.07149999, 0.0715, 1.9], [1516585980000, 0.0713581, 0.0715, 0.07116825, 0.07135809, 7.10705421], [1516586040000, 0.07135809, 0.07135809, 0.07135809, 0.07135809, 1.016], [1516586100000, 0.07135809, 0.0715, 0.07135809, 0.07149999, 0.9849], [1516586160000, 0.07149999, 0.07149999, 0.07124097, 0.07149999, 27.09598969], [1516586220000, 0.07149999, 0.07156767, 0.07149999, 0.07156767, 18.83072], [1516586280000, 0.07143198, 0.07156767, 0.07143198, 0.07143998, 0.81132845], [1516586340000, 0.07146474, 0.07169683, 0.07146474, 0.07169683, 0.59659864], [1516586400000, 0.07166898, 0.07183058, 0.07166898, 0.07166898, 0.67262562], [1516586460000, 0.07183058, 0.07195798, 0.071669, 0.071669, 1.16199172], [1516586520000, 0.071669, 0.07195798, 0.071669, 0.07195798, 0.59524245], [1516586580000, 0.07167262, 0.072, 0.07167262, 0.072, 1.27587239], [1516586640000, 0.072, 0.07209999, 0.072, 0.07209999, 0.96386707], [1516586700000, 0.07209999, 0.07209999, 0.07209999, 0.07209999, 2.0587273], [1516586760000, 0.0718, 0.07180001, 0.0718, 0.07180001, 1.39446415], [1516586880000, 0.07180001, 0.07238555, 0.07180001, 0.07238555, 2.27592664], [1516586940000, 0.072256, 0.072256, 0.072256, 0.072256, 0.05480292], [1516587120000, 0.07180006, 0.07180007, 0.07180005, 0.07180005, 1.030677], [1516587180000, 0.07201537, 0.07201538, 0.07201537, 0.07201538, 0.53784122], [1516587240000, 0.07180005, 0.07201538, 0.07180005, 0.07180005, 0.99473705], [1516587300000, 0.07201537, 0.07201537, 0.07201537, 0.07201537, 0.02271577], [1516587360000, 0.07180005, 0.07201538, 0.07180005, 0.07201538, 0.86775842], [1516587480000, 0.07201538, 0.07201538, 0.07201538, 0.07201538, 0.1685035], [1516587540000, 0.07201538, 0.07201538, 0.07201538, 0.07201538, 0.74558002], [1516587660000, 0.07180006, 0.07180006, 0.07180005, 0.07180005, 3.45551226], [1516587780000, 0.07180005, 0.07180005, 0.07180005, 0.07180005, 0.01048], [1516587840000, 0.07180005, 0.07180007, 0.07180005, 0.07180007, 0.57241785], [1516587900000, 0.07201538, 0.07201538, 0.07180007, 0.07180007, 0.89767744], [1516587960000, 0.0720154, 0.07220516, 0.0720154, 0.07220516, 0.07447823], [1516588020000, 0.07220515, 0.07220515, 0.0718312, 0.0718312, 0.18107901], [1516588080000, 0.07181267, 0.07181268, 0.07181267, 0.07181268, 4.04401196], [1516588140000, 0.07181267, 0.07181267, 0.07181267, 0.07181267, 15.083], [1516588200000, 0.07220514, 0.07220514, 0.07220514, 0.07220514, 0.13849437], [1516588260000, 0.07220514, 0.07220514, 0.07181267, 0.07181267, 0.37999995], [1516588320000, 0.07181267, 0.07181267, 0.07181267, 0.07181267, 1.019], [1516588380000, 0.07209482, 0.07209483, 0.07209482, 0.07209483, 0.08746803], [1516588440000, 0.07209482, 0.07209482, 0.07181267, 0.07204974, 0.39075607], [1516588500000, 0.07181267, 0.07198752, 0.07181267, 0.07181267, 2.98939756], [1516588560000, 0.0718312, 0.0718312, 0.0718312, 0.0718312, 0.15000552], [1516588620000, 0.0718312, 0.0718312, 0.0718312, 0.0718312, 4.92875944], [1516588680000, 0.07205487, 0.07205487, 0.07205487, 0.07205487, 0.02356746], [1516588740000, 0.0718312, 0.0718312, 0.0718312, 0.0718312, 1.72218211], [1516588800000, 0.0718312, 0.0718312, 0.0718312, 0.0718312, 0.1], [1516588860000, 0.0718312, 0.0718312, 0.0718312, 0.0718312, 6.54633743], [1516588920000, 0.07180006, 0.07180006, 0.07180006, 0.07180006, 0.01114872], [1516588980000, 0.07180006, 0.07180006, 0.071415, 0.07180006, 6.78804495], [1516589040000, 0.07180006, 0.07183662, 0.07180006, 0.07180006, 1.96678687], [1516589100000, 0.07183089, 0.07183089, 0.0713, 0.0713, 0.46729255], [1516589160000, 0.07172107, 0.07172107, 0.0714, 0.0714, 3.38149996], [1516589220000, 0.07142746, 0.07183719, 0.07142746, 0.07145999, 0.07169043], [1516589280000, 0.07145999, 0.07145999, 0.07145999, 0.07145999, 0.03090141], [1516589340000, 0.07138119, 0.07145999, 0.07136023, 0.07145999, 0.94143694], [1516589400000, 0.07145999, 0.07145999, 0.07145999, 0.07145999, 0.48852191], [1516589460000, 0.07145999, 0.07145999, 0.07145999, 0.07145999, 1.16521658], [1516589520000, 0.07177536, 0.07177536, 0.07177536, 0.07177536, 0.58259377], [1516589640000, 0.07183279, 0.07183279, 0.07183279, 0.07183279, 0.073056], [1516589700000, 0.0714055, 0.0714055, 0.0714055, 0.0714055, 0.26625562], [1516589940000, 0.07186947, 0.07186947, 0.07186947, 0.07186947, 5.51288176], [1516590060000, 0.0714055, 0.0714055, 0.07130862, 0.07134699, 7.64492231], [1516590180000, 0.07176937, 0.07176937, 0.07176937, 0.07176937, 0.21810444], [1516590300000, 0.07208898, 0.07208899, 0.07208898, 0.07208899, 0.13961858], [1516590420000, 0.07130009, 0.07174778, 0.07130009, 0.07174778, 0.05671693], [1516590480000, 0.07131721, 0.07131721, 0.07131668, 0.07131668, 0.11997308], [1516590540000, 0.07139935, 0.07139935, 0.07139935, 0.07139935, 0.00833136], [1516590600000, 0.07140936, 0.07140937, 0.07140936, 0.07140936, 1.12295245], [1516590660000, 0.07143282, 0.07143554, 0.07143282, 0.07143554, 1.61157038], [1516590720000, 0.07194297, 0.07194297, 0.07194297, 0.07194297, 0.03284684], [1516590840000, 0.07142535, 0.07194295, 0.07142535, 0.07194295, 3.90611295], [1516590900000, 0.07137926, 0.07137926, 0.07136731, 0.07136731, 1.02236455], [1516590960000, 0.07136731, 0.07136731, 0.07136731, 0.07136731, 1.10186821], [1516591020000, 0.07176, 0.07176, 0.07176, 0.07176, 0.04120063], [1516591080000, 0.07176, 0.07176, 0.07136731, 0.07136731, 1.59417776], [1516591140000, 0.07176, 0.07176, 0.07176, 0.07176, 0.04457153], [1516591260000, 0.07144432, 0.07144432, 0.07144432, 0.07144432, 0.01543911], [1516591320000, 0.07176, 0.07189909, 0.07176, 0.07189909, 1.12198603], [1516591500000, 0.071716, 0.071716, 0.071716, 0.071716, 0.13933903], [1516591560000, 0.071716, 0.071716, 0.071716, 0.071716, 0.01537314], [1516591620000, 0.07177883, 0.07177884, 0.071716, 0.071716, 0.09350866], [1516591680000, 0.07136731, 0.07169347, 0.07136731, 0.07136731, 0.12970249], [1516591740000, 0.07136731, 0.07136731, 0.07136731, 0.07136731, 0.01544825], [1516591800000, 0.07136731, 0.07138942, 0.07136731, 0.07138942, 0.0308965], [1516591920000, 0.07136731, 0.07136731, 0.07099547, 0.07099547, 0.5242651], [1516591980000, 0.07113593, 0.07113593, 0.07113593, 0.07113593, 0.0113], [1516592040000, 0.07158759, 0.07158759, 0.07113593, 0.07113593, 0.1112], [1516592100000, 0.07157025, 0.07157025, 0.0715301, 0.0715301, 0.26899665], [1516592160000, 0.07148757, 0.07148757, 0.07148757, 0.07148757, 0.0287286], [1516592220000, 0.07113593, 0.07148752, 0.07113593, 0.07148752, 0.1249773], [1516592280000, 0.07148747, 0.07148747, 0.07148747, 0.07148747, 0.04914478], [1516592340000, 0.07113599, 0.07148556, 0.07113506, 0.07148556, 8.95689127], [1516592400000, 0.07148556, 0.07148556, 0.07148556, 0.07148556, 0.29496501], [1516592460000, 0.07147688, 0.07148552, 0.07147688, 0.07148552, 2.296397], [1516592520000, 0.07112914, 0.07112914, 0.07112914, 0.07112914, 0.18], [1516592640000, 0.07148552, 0.07148552, 0.07148552, 0.07148552, 0.01937319], [1516592700000, 0.07148552, 0.07148552, 0.07148552, 0.07148552, 5.0], [1516592760000, 0.07123872, 0.07123872, 0.07123872, 0.07123872, 0.0142], [1516592880000, 0.07148552, 0.07148552, 0.07148552, 0.07148552, 0.12238472], [1516592940000, 0.07148552, 0.07148552, 0.07100003, 0.07133483, 1.59914174], [1516593000000, 0.0713242, 0.0713242, 0.07100003, 0.07115215, 90.97010404], [1516593060000, 0.07148552, 0.07148552, 0.07111585, 0.07111585, 9.02989606], [1516593120000, 0.07148756, 0.07148756, 0.07148756, 0.07148756, 0.04492492], [1516593180000, 0.07148756, 0.07148756, 0.07148756, 0.07148756, 0.02232175], [1516593360000, 0.07148756, 0.07148756, 0.07148756, 0.07148756, 0.05251942], [1516593540000, 0.07148756, 0.0716646, 0.07148756, 0.0716646, 0.02242454], [1516593660000, 0.07165596, 0.07165598, 0.07165596, 0.07165598, 0.04403711], [1516593900000, 0.07155363, 0.07162259, 0.07155363, 0.07162259, 1.44931754], [1516594020000, 0.07163083, 0.07163083, 0.07162209, 0.07162209, 0.85008904], [1516594140000, 0.07113186, 0.07121055, 0.07113186, 0.07121055, 1.01772357], [1516594260000, 0.07137697, 0.07137697, 0.07137697, 0.07137697, 0.03836292], [1516594320000, 0.07137697, 0.07137697, 0.07137697, 0.07137697, 0.15680092], [1516594440000, 0.07137697, 0.07137697, 0.07113249, 0.07113249, 1.45442088], [1516594500000, 0.0711346, 0.0711346, 0.0711346, 0.0711346, 0.07553316], [1516594560000, 0.07119474, 0.07119474, 0.07108484, 0.07108484, 13.35613792], [1516594620000, 0.07119386, 0.07119386, 0.07113819, 0.07113819, 42.26557912], [1516594680000, 0.07119328, 0.07119328, 0.07100002, 0.07111709, 0.11003113], [1516594740000, 0.07137697, 0.07137697, 0.07106062, 0.07106062, 0.4388516], [1516594800000, 0.07114435, 0.07137697, 0.07109335, 0.07110184, 0.57973175], [1516594920000, 0.07110184, 0.07110184, 0.07110184, 0.07110184, 0.35099718], [1516594980000, 0.07167724, 0.07167724, 0.07167724, 0.07167724, 0.05084766], [1516595040000, 0.07165961, 0.07165961, 0.0716596, 0.0716596, 0.4996779], [1516595100000, 0.07165787, 0.07165787, 0.07165787, 0.07165787, 0.091448], [1516595160000, 0.07164136, 0.07164136, 0.07164136, 0.07164136, 0.02420154], [1516595280000, 0.07164136, 0.07164136, 0.07164136, 0.07164136, 0.01581689], [1516595340000, 0.07139079, 0.07164136, 0.07139079, 0.07164136, 1.09132162], [1516595400000, 0.07126105, 0.07126105, 0.07126105, 0.07126105, 0.5], [1516595460000, 0.07165959, 0.07165959, 0.07165959, 0.07165959, 0.08694681], [1516595520000, 0.07165959, 0.0716596, 0.07165959, 0.0716596, 1.1587103], [1516595580000, 0.07165959, 0.07165959, 0.07165959, 0.07165959, 0.08323279], [1516595640000, 0.07165959, 0.07165959, 0.07165959, 0.07165959, 0.10558683], [1516595700000, 0.07165958, 0.07190758, 0.07130241, 0.07130241, 2.46084285], [1516595760000, 0.07180493, 0.07180493, 0.07180493, 0.07180493, 0.19287612], [1516595820000, 0.07124398, 0.07156421, 0.07116481, 0.0713, 9.53778167], [1516595880000, 0.07117893, 0.07165354, 0.07115465, 0.07165354, 11.51736964], [1516595940000, 0.07164993, 0.07164993, 0.07124426, 0.07124426, 5.75452334], [1516596000000, 0.07124426, 0.0714, 0.07124426, 0.07124426, 10.72875726], [1516596060000, 0.07124425, 0.07139999, 0.07112805, 0.07112811, 15.55036809], [1516596120000, 0.0714, 0.0714, 0.07111076, 0.0714, 20.52362642], [1516596180000, 0.0714, 0.0714, 0.0714, 0.0714, 0.03098921], [1516596240000, 0.0714, 0.0714, 0.07113411, 0.07113411, 0.57955002], [1516596300000, 0.07113412, 0.07169521, 0.07113412, 0.07140001, 1.23319255], [1516596360000, 0.0714, 0.0714, 0.07100013, 0.07100013, 44.10069111], [1516596420000, 0.07163903, 0.07163903, 0.07163902, 0.07163902, 0.08197223], [1516596480000, 0.07163894, 0.07163894, 0.07163894, 0.07163894, 1.00400299], [1516596540000, 0.07161962, 0.07161962, 0.07161962, 0.07161962, 0.3], [1516596600000, 0.07100077, 0.07100077, 0.07100077, 0.07100077, 0.00903072], [1516596720000, 0.07100157, 0.07160121, 0.07100149, 0.07160121, 0.72166498], [1516596780000, 0.07159283, 0.07159283, 0.07159283, 0.07159283, 0.05670104], [1516596840000, 0.07100261, 0.07100262, 0.07100261, 0.07100262, 1.56036088], [1516596900000, 0.071003, 0.071003, 0.071003, 0.071003, 0.18], [1516597020000, 0.07159283, 0.07159283, 0.07159283, 0.07159283, 0.13462549], [1516597140000, 0.0713171, 0.0713171, 0.0710031, 0.0710031, 1.4563139], [1516597200000, 0.07159282, 0.07159282, 0.07113141, 0.07113141, 0.0981429], [1516597260000, 0.07121123, 0.07121123, 0.0711351, 0.0711351, 0.22414309], [1516597320000, 0.07121123, 0.07121123, 0.07121123, 0.07121123, 0.06734378], [1516597440000, 0.07121123, 0.07121123, 0.07121123, 0.07121123, 0.1395], [1516597500000, 0.07112351, 0.07121123, 0.07112351, 0.07121123, 0.76032656], [1516597680000, 0.07110643, 0.07145495, 0.07110643, 0.07121123, 1.38747999], [1516597740000, 0.07120344, 0.07120344, 0.07120344, 0.07120344, 0.02271155], [1516597800000, 0.07117139, 0.07120344, 0.07107532, 0.0712, 27.32462842], [1516597860000, 0.0712, 0.0712, 0.071023, 0.071023, 0.50026966], [1516597920000, 0.0712, 0.0712, 0.07100335, 0.07100335, 1.11483301], [1516597980000, 0.07102301, 0.0712, 0.07102301, 0.07102301, 2.04203215], [1516598040000, 0.07101, 0.07101, 0.0710009, 0.0710009, 0.58138754], [1516598100000, 0.07101, 0.07115801, 0.0710009, 0.0710009, 0.41275167], [1516598160000, 0.0710009, 0.071009, 0.07091764, 0.07091764, 7.8642391], [1516598220000, 0.07091764, 0.07091764, 0.07091764, 0.07091764, 1.79999481], [1516598280000, 0.0708, 0.071, 0.0706102, 0.071, 47.9511], [1516598340000, 0.071, 0.071, 0.071, 0.071, 0.07763268], [1516598400000, 0.0708, 0.07098, 0.0708, 0.07098, 1.16369014], [1516598460000, 0.07098, 0.07098, 0.07098, 0.07098, 0.10785644], [1516598520000, 0.0707559, 0.07097999, 0.07041959, 0.07042045, 129.09757695], [1516598580000, 0.07043096, 0.07097997, 0.07042014, 0.07055058, 33.30151926], [1516598640000, 0.07097996, 0.07097996, 0.07097996, 0.07097996, 0.08179396], [1516598700000, 0.07097996, 0.07097996, 0.07055059, 0.07055059, 0.44341083], [1516598760000, 0.07061424, 0.07097996, 0.07055058, 0.07097996, 3.26501422], [1516598820000, 0.07097996, 0.07098, 0.07042016, 0.07058901, 1.59217948], [1516598880000, 0.07098, 0.07098, 0.07098, 0.07098, 0.179301], [1516599000000, 0.07097997, 0.07097997, 0.07043383, 0.07097997, 0.48917717], [1516599060000, 0.07097996, 0.07097996, 0.07097996, 0.07097996, 0.5], [1516599180000, 0.0708641, 0.0708641, 0.07053042, 0.07053042, 1.42665032], [1516599240000, 0.07043627, 0.07043628, 0.07043627, 0.07043628, 0.08562864], [1516599300000, 0.07115798, 0.07115798, 0.07104226, 0.07104226, 0.2815224], [1516599480000, 0.07103801, 0.07103801, 0.07043653, 0.07043655, 0.41557682], [1516599540000, 0.070844, 0.070844, 0.07043656, 0.07043656, 0.05124438], [1516599600000, 0.070844, 0.070844, 0.0704366, 0.0704366, 0.05621931], [1516599660000, 0.070844, 0.070844, 0.070561, 0.070844, 6.87487069], [1516599720000, 0.070844, 0.070844, 0.070844, 0.070844, 0.4363525], [1516599780000, 0.070844, 0.070844, 0.07043655, 0.07043676, 0.3861223], [1516599840000, 0.07084399, 0.070844, 0.07084398, 0.07084398, 0.10518856], [1516599900000, 0.07084396, 0.07084399, 0.07043678, 0.07084399, 0.17946871], [1516599960000, 0.07084399, 0.07084399, 0.07043689, 0.07043689, 0.05124447], [1516600020000, 0.07070017, 0.07084399, 0.07061593, 0.07068655, 0.32023855], [1516600080000, 0.070844, 0.070844, 0.07071345, 0.07071345, 3.30764577], [1516600140000, 0.07071345, 0.07071345, 0.07043628, 0.07071344, 7.5882], [1516600200000, 0.07050744, 0.07056487, 0.07043628, 0.07056487, 0.1152], [1516600260000, 0.07071345, 0.07084398, 0.07071345, 0.07084398, 2.08966622], [1516600320000, 0.07056297, 0.07056297, 0.07056296, 0.07056296, 75.89533217], [1516600380000, 0.07080395, 0.07080395, 0.07080394, 0.07080394, 0.08828648], [1516600500000, 0.0708009, 0.0708009, 0.0708009, 0.0708009, 0.01412411], [1516600680000, 0.07078697, 0.07078697, 0.07078697, 0.07078697, 30.4460324], [1516600860000, 0.0705366, 0.0705366, 0.0705366, 0.0705366, 0.61550649], [1516600920000, 0.07053661, 0.07053661, 0.07053657, 0.07053661, 7.79201285], [1516600980000, 0.07053661, 0.07053661, 0.07053661, 0.07053661, 0.03128278], [1516601040000, 0.07053661, 0.07086873, 0.07053661, 0.07086873, 0.98022806], [1516601100000, 0.07053661, 0.07053661, 0.07053661, 0.07053661, 0.86194939], [1516601160000, 0.07060715, 0.07060715, 0.07043628, 0.07043628, 0.16958968], [1516601220000, 0.07087921, 0.07087921, 0.07087921, 0.07087921, 0.01987874], [1516601400000, 0.07043628, 0.07084298, 0.07043628, 0.07084298, 0.26976481], [1516601460000, 0.0708972, 0.0708972, 0.0708972, 0.0708972, 0.01584342], [1516601520000, 0.07043629, 0.07089043, 0.07043629, 0.07089043, 0.1543824], [1516601640000, 0.07085411, 0.07085411, 0.07085411, 0.07085411, 0.34810797], [1516601700000, 0.0708002, 0.0708002, 0.0708002, 0.0708002, 0.02182066], [1516601760000, 0.07071046, 0.07071046, 0.07066334, 0.07066334, 1.05218001], [1516601820000, 0.07043628, 0.07043628, 0.07043628, 0.07043628, 0.09708143], [1516601940000, 0.07068904, 0.07068904, 0.07068904, 0.07068904, 0.02384192], [1516602000000, 0.07074186, 0.07074186, 0.07073438, 0.07073439, 1.14195681], [1516602060000, 0.07043628, 0.07043628, 0.07043628, 0.07043628, 0.15366894], [1516602180000, 0.07075382, 0.07075382, 0.07075382, 0.07075382, 0.15922642], [1516602240000, 0.07075382, 0.0708002, 0.07043628, 0.07043628, 2.38079193], [1516602300000, 0.07042014, 0.07043628, 0.07042014, 0.07043628, 3.04908329], [1516602360000, 0.07042013, 0.07042013, 0.07042013, 0.07042013, 0.76261763], [1516602420000, 0.07041958, 0.07042014, 0.07041958, 0.07042014, 0.5004666], [1516602480000, 0.07072494, 0.07072494, 0.07072494, 0.07072494, 0.051153], [1516602540000, 0.07072494, 0.07072494, 0.07072494, 0.07072494, 0.05489584], [1516602600000, 0.07070912, 0.07070912, 0.07070912, 0.07070912, 0.14142451], [1516602660000, 0.07070912, 0.07070912, 0.07070912, 0.07070912, 0.02585635], [1516602720000, 0.07070912, 0.07070912, 0.07070912, 0.07070912, 2.3902], [1516602780000, 0.07070912, 0.07070912, 0.07041958, 0.07041958, 0.06292818], [1516602840000, 0.07070912, 0.07070912, 0.07070912, 0.07070912, 0.05574614], [1516602900000, 0.07070912, 0.07080018, 0.07070912, 0.07070912, 0.75187999], [1516602960000, 0.07070913, 0.07070913, 0.07070913, 0.07070913, 0.10193172], [1516603020000, 0.07041958, 0.0704196, 0.07041958, 0.0704196, 0.05906734], [1516603080000, 0.0704196, 0.0704196, 0.0704196, 0.0704196, 0.11692138], [1516603140000, 0.0704196, 0.0704196, 0.0704196, 0.0704196, 0.1], [1516603200000, 0.0707785, 0.0707785, 0.07075772, 0.07075772, 0.84771504], [1516603260000, 0.0707785, 0.0707785, 0.0707785, 0.0707785, 0.01563021], [1516603320000, 0.0707785, 0.0707785, 0.0707785, 0.0707785, 0.03628179], [1516603500000, 0.070775, 0.070775, 0.0707749, 0.0707749, 1.03207734], [1516603560000, 0.0707749, 0.0707749, 0.0707749, 0.0707749, 0.01560067], [1516603620000, 0.0707749, 0.0707749, 0.0707749, 0.0707749, 0.04497969], [1516603680000, 0.0704196, 0.0704196, 0.07041958, 0.07041958, 0.09438297], [1516603800000, 0.0707749, 0.07093301, 0.07041958, 0.07041958, 2.16082895], [1516603860000, 0.07081886, 0.07109909, 0.07037124, 0.0709144, 90.57451209], [1516603920000, 0.07037123, 0.07037123, 0.07030209, 0.07030209, 26.5691091], [1516603980000, 0.07037122, 0.07037123, 0.07037122, 0.07037123, 4.21921253], [1516604100000, 0.07037122, 0.0707025, 0.07037122, 0.07037122, 2.43419949], [1516604160000, 0.07074521, 0.07074521, 0.07074521, 0.07074521, 0.01880679], [1516604220000, 0.0707452, 0.0707452, 0.0707452, 0.0707452, 0.02954308], [1516604280000, 0.07043645, 0.07043645, 0.07043645, 0.07043645, 0.01561691], [1516604400000, 0.07025103, 0.0707388, 0.07025103, 0.0707388, 0.43194744], [1516604520000, 0.0707388, 0.07073881, 0.0707388, 0.07073881, 0.44068772], [1516604580000, 0.07073879, 0.07073881, 0.07073879, 0.0707388, 3.58462627], [1516604700000, 0.0707388, 0.07073881, 0.0707388, 0.07073881, 1.34575149], [1516604880000, 0.07075427, 0.07075904, 0.07075427, 0.07075904, 1.96936356], [1516605000000, 0.07078071, 0.07078071, 0.07030019, 0.07030019, 0.58149172], [1516605060000, 0.07030018, 0.07030018, 0.0701, 0.0701, 15.15110078], [1516605120000, 0.07025003, 0.07076803, 0.07025003, 0.07076803, 1.18309783], [1516605180000, 0.07066444, 0.07066444, 0.07066444, 0.07066444, 0.17240079], [1516605240000, 0.07010028, 0.0705, 0.07010028, 0.0705, 0.15706692], [1516605300000, 0.0705, 0.0705, 0.0704, 0.0704, 1.16313784], [1516605360000, 0.07039, 0.07039, 0.07038, 0.07038, 0.83673336], [1516605420000, 0.07038, 0.07038, 0.07038, 0.07038, 0.51], [1516605480000, 0.07038, 0.07039, 0.07038, 0.07039, 1.44145424], [1516605540000, 0.07039, 0.07039, 0.07039, 0.07039, 0.05997538], [1516605600000, 0.07039, 0.0705, 0.07010216, 0.0705, 1.64405629], [1516605660000, 0.07010237, 0.0705, 0.07010237, 0.0705, 0.08032813], [1516605780000, 0.0705, 0.0705, 0.0705, 0.0705, 0.01029693], [1516605900000, 0.07010262, 0.0705, 0.07010262, 0.0705, 3.03318011], [1516606020000, 0.07049566, 0.0705, 0.07049566, 0.0705, 0.44517229], [1516606080000, 0.0705, 0.0705, 0.07021802, 0.0705, 0.51170881], [1516606140000, 0.0705, 0.0705, 0.0705, 0.0705, 0.35764021], [1516606200000, 0.0705, 0.0705, 0.0705, 0.0705, 0.43811619], [1516606260000, 0.07028457, 0.0705, 0.07028457, 0.0705, 7.16388534], [1516606320000, 0.07028505, 0.0705, 0.07028505, 0.0705, 2.92320693], [1516606380000, 0.0705, 0.0705, 0.07015091, 0.07015091, 0.52113333], [1516606440000, 0.07015093, 0.0705, 0.07015093, 0.0705, 3.05696407], [1516606500000, 0.07049999, 0.0705, 0.07019633, 0.07019633, 1.706013], [1516606560000, 0.07019635, 0.0705, 0.07015151, 0.0705, 11.95108821], [1516606620000, 0.0705, 0.07065952, 0.0705, 0.07065952, 3.56594657], [1516606740000, 0.07065953, 0.07066207, 0.07024265, 0.07024265, 5.12566198], [1516606800000, 0.07020151, 0.07067602, 0.07020151, 0.07067601, 1.86138915], [1516606860000, 0.07020151, 0.07068664, 0.0702015, 0.0702015, 7.07089801], [1516606920000, 0.07024264, 0.07060252, 0.07024264, 0.07060252, 2.25973178], [1516607040000, 0.07066636, 0.07066636, 0.07066636, 0.07066636, 0.09976282], [1516607100000, 0.07066637, 0.07074483, 0.07030629, 0.07074483, 6.48408905], [1516607160000, 0.07066637, 0.07066637, 0.07066637, 0.07066637, 0.05710123], [1516607220000, 0.07066637, 0.07066637, 0.07066637, 0.07066637, 0.44302726], [1516607280000, 0.07015022, 0.07015022, 0.07015022, 0.07015022, 7.1454], [1516607400000, 0.07022574, 0.07067273, 0.0701505, 0.07067273, 0.29961931], [1516607460000, 0.07055689, 0.07055689, 0.07055689, 0.07055689, 1.2694], [1516607640000, 0.07055689, 0.0705569, 0.07055689, 0.07055689, 0.63698155], [1516607700000, 0.07023403, 0.07055689, 0.07023403, 0.07055689, 0.43030333], [1516607760000, 0.07053472, 0.07053472, 0.07053472, 0.07053472, 0.05608539], [1516607820000, 0.07015061, 0.07052006, 0.07015061, 0.07052006, 0.1631139], [1516607880000, 0.07052682, 0.07052682, 0.07052682, 0.07052682, 0.07114395], [1516607940000, 0.07052682, 0.07052682, 0.07052682, 0.07052682, 0.04445338], [1516608000000, 0.0705268, 0.07052683, 0.0705268, 0.07052683, 0.44100257], [1516608060000, 0.07052682, 0.07078, 0.07052682, 0.07078, 9.96913777], [1516608120000, 0.0709334, 0.0709334, 0.07015125, 0.07015125, 2.38566014], [1516608240000, 0.07059716, 0.07059716, 0.07016001, 0.07016001, 0.12185712], [1516608300000, 0.07059715, 0.07059715, 0.07016001, 0.07016001, 0.32287832], [1516608360000, 0.07057716, 0.07057716, 0.07057715, 0.07057715, 0.1448245], [1516608480000, 0.07056997, 0.07056997, 0.07016001, 0.07016001, 0.94136592], [1516608540000, 0.07055944, 0.07055944, 0.07055944, 0.07055944, 0.06716108], [1516608600000, 0.07055944, 0.07057714, 0.07055944, 0.07057714, 0.28344912], [1516608660000, 0.0702772, 0.0702772, 0.07020007, 0.07020007, 0.26702346], [1516608720000, 0.07057713, 0.07057713, 0.07027719, 0.0702772, 0.29542193], [1516608780000, 0.07027719, 0.07057714, 0.07027719, 0.07057714, 0.43012355], [1516608840000, 0.07057713, 0.07057713, 0.07016, 0.07016, 3.97908045], [1516608900000, 0.07057712, 0.07057712, 0.07057712, 0.07057712, 0.05337592], [1516608960000, 0.07017972, 0.07057711, 0.07016, 0.07057711, 1.10865564], [1516609020000, 0.07016007, 0.0703345, 0.07016007, 0.0703345, 0.13806205], [1516609080000, 0.0703345, 0.0703345, 0.07016008, 0.0703345, 3.42706587], [1516609140000, 0.0703345, 0.07067134, 0.07016038, 0.07016038, 0.88052104], [1516609200000, 0.07016772, 0.07016772, 0.07016772, 0.07016772, 0.2444964], [1516609260000, 0.07060066, 0.07060066, 0.07060066, 0.07060066, 0.01558059], [1516609380000, 0.07016811, 0.07016811, 0.07016811, 0.07016811, 0.06922332], [1516609440000, 0.07060066, 0.07060066, 0.07060066, 0.07060066, 0.19759548], [1516609500000, 0.07060067, 0.07060067, 0.07060066, 0.07060066, 0.93937108], [1516609560000, 0.07060066, 0.07060066, 0.07016876, 0.07016876, 0.2991], [1516609620000, 0.07016876, 0.07016876, 0.07016876, 0.07016876, 0.08051815], [1516609680000, 0.0706322, 0.0706322, 0.0706322, 0.0706322, 0.01421657], [1516609740000, 0.07062519, 0.07062519, 0.07062519, 0.07062519, 0.0195255], [1516609860000, 0.07016876, 0.07016876, 0.07016, 0.07016, 14.00000191], [1516609920000, 0.07016, 0.07016, 0.07016, 0.07016, 11.00000191], [1516609980000, 0.07016021, 0.07016022, 0.07016021, 0.07016022, 9.12369054], [1516610040000, 0.07016021, 0.07016021, 0.07016, 0.07016, 7.00000191], [1516610100000, 0.07016, 0.07060366, 0.07015061, 0.070346, 6.64038346], [1516610160000, 0.07061311, 0.07061311, 0.07061311, 0.07061311, 0.03693806], [1516610220000, 0.07034601, 0.07034601, 0.07034601, 0.07034601, 3.3981327], [1516610280000, 0.07034601, 0.07041636, 0.07034601, 0.07041636, 0.23073248], [1516610340000, 0.07063989, 0.07063989, 0.07063989, 0.07063989, 0.106004], [1516610400000, 0.07063989, 0.07073927, 0.07063989, 0.07073927, 3.14156305], [1516610520000, 0.07021723, 0.07021723, 0.07021723, 0.07021723, 0.015], [1516610580000, 0.07066016, 0.07066016, 0.07066016, 0.07066016, 2.0], [1516610700000, 0.07074681, 0.07074681, 0.07074681, 0.07074681, 0.14131798], [1516610760000, 0.07079098, 0.07079098, 0.07079098, 0.07079098, 0.06141866], [1516610940000, 0.07031461, 0.07031461, 0.0702463, 0.0702903, 0.13076419], [1516611000000, 0.07029947, 0.07071921, 0.07029947, 0.07070846, 1.34160915], [1516611060000, 0.0702463, 0.0702463, 0.0702463, 0.0702463, 0.07128812], [1516611120000, 0.07066477, 0.07066477, 0.07066477, 0.07066477, 0.03], [1516611180000, 0.07070944, 0.07070944, 0.07066478, 0.07066478, 0.81473156], [1516611240000, 0.07066478, 0.07066478, 0.07066478, 0.07066478, 0.17940693], [1516611300000, 0.07066478, 0.07066478, 0.0702463, 0.0702463, 1.11359308], [1516611360000, 0.07066478, 0.07066478, 0.07025146, 0.07025146, 2.86465585], [1516611420000, 0.07066478, 0.07066478, 0.07065257, 0.07065257, 13.02852631], [1516611480000, 0.07065257, 0.07065257, 0.0702591, 0.07065257, 0.06443324], [1516611540000, 0.0702591, 0.0702591, 0.0702591, 0.0702591, 0.01378599], [1516611600000, 0.0706525, 0.0706525, 0.0706525, 0.0706525, 2.99546092], [1516611660000, 0.0706525, 0.07066478, 0.0706525, 0.0706525, 1.04826778], [1516611720000, 0.0706525, 0.07065251, 0.0706525, 0.0706525, 0.11399211], [1516611780000, 0.0706525, 0.0706525, 0.0706525, 0.0706525, 0.03120908], [1516611840000, 0.0706525, 0.0706525, 0.0706525, 0.0706525, 0.01560454], [1516611900000, 0.07065251, 0.07078804, 0.07065251, 0.07078804, 0.1415378], [1516612020000, 0.0706525, 0.0706525, 0.0706525, 0.0706525, 0.05522647], [1516612080000, 0.0707909, 0.0707909, 0.0707909, 0.0707909, 0.04468342], [1516612200000, 0.0707909, 0.0707909, 0.0707909, 0.0707909, 1.15362418], [1516612260000, 0.0706525, 0.0706525, 0.0706525, 0.0706525, 4.55610454], [1516612380000, 0.0706526, 0.0706526, 0.0706525, 0.0706525, 1.8745], [1516612440000, 0.0706525, 0.0706525, 0.0706525, 0.0706525, 1.06197389], [1516612500000, 0.0703, 0.0703, 0.0703, 0.0703, 0.11679346], [1516612560000, 0.07054607, 0.07054607, 0.07054607, 0.07054607, 3.34714939], [1516612620000, 0.07054607, 0.07054607, 0.0703, 0.0703, 0.08756726], [1516612680000, 0.07054607, 0.07054607, 0.0703, 0.0703, 0.132], [1516612740000, 0.0703, 0.0703, 0.07029999, 0.07029999, 0.4954501], [1516612800000, 0.07049, 0.07049, 0.07029999, 0.07029999, 0.47938526], [1516612920000, 0.07049, 0.07049, 0.07049, 0.07049, 0.24946779], [1516612980000, 0.0703, 0.07062499, 0.0703, 0.07062499, 0.0307914], [1516613040000, 0.07049001, 0.07049001, 0.07049001, 0.07049001, 0.10318695], [1516613160000, 0.07029999, 0.07029999, 0.07029999, 0.07029999, 0.50450792], [1516613220000, 0.07049001, 0.07049001, 0.07029999, 0.07049001, 1.27592905], [1516613280000, 0.07049001, 0.07049001, 0.07049001, 0.07049001, 1.27021023], [1516613340000, 0.07029999, 0.07049001, 0.07029999, 0.07029999, 1.06910683], [1516613400000, 0.07029999, 0.07049001, 0.07029999, 0.07049001, 2.24918938], [1516613460000, 0.07049001, 0.07049001, 0.07033421, 0.07049001, 0.70432641], [1516613520000, 0.07045001, 0.07045001, 0.07045001, 0.07045001, 1.319254], [1516613640000, 0.07042176, 0.07042176, 0.07042176, 0.07042176, 1.44844804], [1516613700000, 0.07029999, 0.07029999, 0.07029999, 0.07029999, 7.6954613], [1516613760000, 0.07029999, 0.07029999, 0.07029999, 0.07029999, 0.15083666], [1516613820000, 0.07029999, 0.07029999, 0.07029999, 0.07029999, 1.15351214], [1516613880000, 0.0703, 0.0703, 0.0703, 0.0703, 0.56447728], [1516613940000, 0.07049001, 0.07098984, 0.07049001, 0.07098984, 0.83], [1516614000000, 0.0703, 0.07075862, 0.07015084, 0.07034205, 12.5743088], [1516614060000, 0.07015094, 0.07015098, 0.07015094, 0.07015098, 0.7120398], [1516614120000, 0.07015099, 0.07015099, 0.07015098, 0.07015098, 2.57703172], [1516614180000, 0.07086958, 0.07086958, 0.07086958, 0.07086958, 0.01841178], [1516614240000, 0.07016075, 0.07098997, 0.07016075, 0.07098997, 0.4763949], [1516614300000, 0.07086953, 0.07086953, 0.07086953, 0.07086953, 0.14110442], [1516614360000, 0.07086951, 0.07086951, 0.0708695, 0.0708695, 0.25317793], [1516614420000, 0.0703381, 0.0708695, 0.0703381, 0.0708695, 0.44131753], [1516614480000, 0.07065304, 0.07065304, 0.07016178, 0.07016178, 31.03609604], [1516614540000, 0.07065304, 0.07086954, 0.07065304, 0.07065305, 2.46326428], [1516614600000, 0.07033415, 0.07060581, 0.07016379, 0.07060581, 1.06469962], [1516614660000, 0.07020007, 0.07020007, 0.07020007, 0.07020007, 0.03405285], [1516614720000, 0.07086121, 0.07086121, 0.07020007, 0.07020007, 0.07072882], [1516614780000, 0.07020007, 0.07020007, 0.07020007, 0.07020007, 0.05771497], [1516614840000, 0.07020024, 0.07020024, 0.07020024, 0.07020024, 0.02048989], [1516614900000, 0.07086045, 0.07086052, 0.07020008, 0.0708605, 0.84055465], [1516614960000, 0.07024718, 0.07024718, 0.07024718, 0.07024718, 0.01749425], [1516615020000, 0.07086033, 0.07086033, 0.070267, 0.070267, 0.18304235], [1516615140000, 0.07085987, 0.07085987, 0.07085987, 0.07085987, 0.10999999], [1516615200000, 0.07026699, 0.07085983, 0.0702, 0.07085983, 7.64112374], [1516615260000, 0.07026699, 0.07085983, 0.07026699, 0.07026699, 0.46356212], [1516615320000, 0.07026699, 0.07085981, 0.07026699, 0.07026699, 4.96924233], [1516615440000, 0.07085976, 0.07085977, 0.07026756, 0.07026756, 17.06318855], [1516615500000, 0.07084247, 0.07084247, 0.07026763, 0.07026763, 0.17558633], [1516615560000, 0.07084245, 0.07084251, 0.07048829, 0.07048829, 2.6507767], [1516615620000, 0.07084246, 0.07084248, 0.07084246, 0.07084246, 6.8386002], [1516615680000, 0.07084246, 0.07084249, 0.07084246, 0.07084249, 0.46123847], [1516615740000, 0.07084249, 0.07116771, 0.07030929, 0.07102086, 14.0955084], [1516615800000, 0.07031079, 0.07102085, 0.07031079, 0.07102085, 0.89268064], [1516615860000, 0.07033303, 0.07033303, 0.07033303, 0.07033303, 1.64915397], [1516615920000, 0.07033309, 0.07102085, 0.07033309, 0.07102085, 0.05809034], [1516615980000, 0.07102085, 0.07102085, 0.0703087, 0.0703087, 4.18168801], [1516616040000, 0.07076861, 0.07091348, 0.07033324, 0.07033324, 7.1291552], [1516616100000, 0.07033326, 0.07033326, 0.07033326, 0.07033326, 0.08799999], [1516616160000, 0.0709, 0.0709, 0.0709, 0.0709, 0.01412238], [1516616220000, 0.07089999, 0.07089999, 0.07089999, 0.07089999, 0.12086297], [1516616280000, 0.0703601, 0.0703601, 0.0703601, 0.0703601, 0.62070815], [1516616340000, 0.0703605, 0.0703605, 0.0703605, 0.0703605, 0.18515586], [1516616400000, 0.0708, 0.0708, 0.0708, 0.0708, 0.45838454], [1516616460000, 0.07037, 0.07037, 0.07037, 0.07037, 0.05], [1516616520000, 0.07037, 0.07037, 0.07037, 0.07037, 0.19378244], [1516616580000, 0.07079999, 0.07079999, 0.07037026, 0.07037026, 0.46461544], [1516616700000, 0.0708, 0.0708, 0.0708, 0.0708, 0.17254036], [1516616760000, 0.0708, 0.0708, 0.0708, 0.0708, 0.47350443], [1516616820000, 0.0706584, 0.0708, 0.07038589, 0.0708, 7.55339942], [1516616880000, 0.0708, 0.0708, 0.0708, 0.0708, 0.15993824], [1516616940000, 0.0708, 0.07091349, 0.07043715, 0.07091349, 1.73686408], [1516617000000, 0.07040034, 0.07040034, 0.07040034, 0.07040034, 0.02], [1516617060000, 0.07040108, 0.07040116, 0.07040108, 0.07040116, 0.03371537], [1516617180000, 0.07040167, 0.07102087, 0.07040166, 0.07102087, 0.17879583], [1516617240000, 0.07102087, 0.07102087, 0.07102, 0.07102, 0.18420658], [1516617300000, 0.07102, 0.07102, 0.07040413, 0.07040413, 0.40714128], [1516617420000, 0.071015, 0.071015, 0.0705, 0.0705, 0.4464161], [1516617540000, 0.07050001, 0.0706525, 0.0705, 0.0705, 16.94308802], [1516617660000, 0.070999, 0.070999, 0.070999, 0.070999, 0.05141987], [1516617840000, 0.07073999, 0.07073999, 0.07073999, 0.07073999, 0.01563833], [1516617900000, 0.07073999, 0.07073999, 0.07073999, 0.07073999, 0.01563833], [1516617960000, 0.07073999, 0.07073999, 0.07073999, 0.07073999, 0.01563833], [1516618140000, 0.0707399, 0.07073999, 0.0707399, 0.07073999, 0.36486349], [1516618260000, 0.07073999, 0.07073999, 0.07073999, 0.07073999, 0.104699], [1516618320000, 0.07073999, 0.07073999, 0.07073999, 0.07073999, 0.03502996], [1516618380000, 0.07073999, 0.07073999, 0.07073999, 0.07073999, 0.2814], [1516618440000, 0.07073999, 0.07073999, 0.07073999, 0.07073999, 0.2152303], [1516618500000, 0.07073999, 0.07073999, 0.07050001, 0.07050001, 1.02174845], [1516618560000, 0.07050001, 0.07050001, 0.07050001, 0.07050001, 7.50934996], [1516618620000, 0.07050001, 0.07050001, 0.0705, 0.0705, 0.80103444], [1516618680000, 0.07050001, 0.07073999, 0.07050001, 0.07073999, 0.2906], [1516618740000, 0.07050001, 0.07050001, 0.0705, 0.0705, 9.3342], [1516618860000, 0.0705, 0.0705, 0.0705, 0.0705, 5.60741], [1516618980000, 0.07073999, 0.07073999, 0.0705, 0.0705, 0.54573641], [1516619040000, 0.07073999, 0.07073999, 0.0705, 0.0705, 0.90687799], [1516619100000, 0.07089679, 0.07089679, 0.07089639, 0.07089639, 0.41670342], [1516619220000, 0.0705, 0.0705, 0.0705, 0.0705, 0.08345328], [1516619340000, 0.07085015, 0.07086333, 0.0705, 0.07086333, 3.50253908], [1516619400000, 0.0705, 0.0705, 0.0705, 0.0705, 0.37698412], [1516619460000, 0.07084324, 0.07084324, 0.07084062, 0.07084062, 0.0602419], [1516619580000, 0.07083625, 0.07083625, 0.0705, 0.0705, 0.19814064], [1516619640000, 0.0705, 0.0705, 0.0705, 0.0705, 0.05909095], [1516619700000, 0.07083513, 0.07083513, 0.0705, 0.0705, 0.51157193], [1516619820000, 0.07084182, 0.07084182, 0.07084182, 0.07084182, 0.61130248], [1516619880000, 0.07084182, 0.07084182, 0.0705, 0.0705, 0.43717546], [1516619940000, 0.07083663, 0.07083663, 0.07083663, 0.07083663, 0.12226554], [1516620000000, 0.07078664, 0.07078664, 0.07078664, 0.07078664, 0.14123416], [1516620060000, 0.07075023, 0.07075023, 0.0705, 0.0705, 3.59169207], [1516620180000, 0.07074865, 0.07074865, 0.07074865, 0.07074865, 0.01224221], [1516620240000, 0.07071149, 0.07071149, 0.07071149, 0.07071149, 1.0153388], [1516620300000, 0.07077486, 0.07077486, 0.07071149, 0.07071149, 0.02782921], [1516620360000, 0.0705, 0.0705, 0.0705, 0.0705, 0.03], [1516620420000, 0.0705, 0.0705, 0.0705, 0.0705, 0.57820953], [1516620480000, 0.07075, 0.07075, 0.07075, 0.07075, 0.106962], [1516620540000, 0.0705, 0.07075, 0.0705, 0.0705, 20.49307644], [1516620600000, 0.07074992, 0.07075, 0.07074992, 0.07075, 0.03382348], [1516620660000, 0.07074992, 0.07075, 0.07074992, 0.07075, 0.27915591], [1516620840000, 0.07075, 0.07075, 0.07075, 0.07075, 3.34103878], [1516620900000, 0.07084182, 0.07084182, 0.0707, 0.0707, 0.27518672], [1516621020000, 0.07084182, 0.07086333, 0.07084181, 0.07086333, 4.93300006], [1516621080000, 0.07086333, 0.071015, 0.07086333, 0.071015, 4.32340782], [1516621140000, 0.07086333, 0.07086333, 0.07086333, 0.07086333, 0.07427552], [1516621260000, 0.0707, 0.0707, 0.0705, 0.0705, 0.1496], [1516621320000, 0.07094557, 0.07094557, 0.07094557, 0.07094557, 1.0], [1516621380000, 0.0707, 0.0707, 0.0707, 0.0707, 0.01824388], [1516621440000, 0.0707, 0.0707, 0.0705, 0.0705, 0.06584139], [1516621560000, 0.07050005, 0.07050005, 0.07050005, 0.07050005, 0.9985264], [1516621620000, 0.07050005, 0.07080792, 0.07036069, 0.07080792, 2.01647582], [1516621680000, 0.07080094, 0.07080792, 0.07080094, 0.07080792, 1.85396384], [1516621740000, 0.07080792, 0.07080792, 0.07073719, 0.07073719, 0.30098039], [1516621800000, 0.07036069, 0.07081438, 0.0703087, 0.07081438, 7.22000191], [1516621920000, 0.07074968, 0.07074968, 0.07074968, 0.07074968, 0.36924069], [1516622040000, 0.07074968, 0.07082287, 0.07030873, 0.07030873, 8.65194826], [1516622100000, 0.07087761, 0.07087761, 0.07087761, 0.07087761, 0.14108829], [1516622160000, 0.07030883, 0.07030883, 0.07030883, 0.07030883, 0.0304316], [1516622220000, 0.07090948, 0.07090948, 0.07030872, 0.07030872, 0.17583023], [1516622340000, 0.070909, 0.070909, 0.070909, 0.070909, 0.08536565], [1516622400000, 0.07090899, 0.07092214, 0.07090899, 0.07092214, 1.95045044], [1516622460000, 0.07092214, 0.07094828, 0.07039801, 0.07094828, 1.46428459], [1516622520000, 0.07094828, 0.07094828, 0.07094828, 0.07094828, 0.02730376], [1516622580000, 0.07094828, 0.07094828, 0.07094828, 0.07094828, 0.07206399], [1516622700000, 0.07094828, 0.07094828, 0.07094828, 0.07094828, 1.19247682], [1516622820000, 0.0706717, 0.0706717, 0.0706717, 0.0706717, 0.51465626], [1516622940000, 0.07067171, 0.07067171, 0.07067171, 0.07067171, 0.47268664], [1516623000000, 0.07084808, 0.07084808, 0.07067171, 0.07067171, 0.2818962], [1516623060000, 0.07084808, 0.07084808, 0.07084808, 0.07084808, 0.01418023], [1516623120000, 0.07067171, 0.07084808, 0.07067171, 0.07084808, 1.21854702], [1516623240000, 0.07094808, 0.07094808, 0.07084807, 0.07094808, 1.68180563], [1516623300000, 0.07094456, 0.07094456, 0.07094456, 0.07094456, 0.14095505], [1516623360000, 0.07067171, 0.07067171, 0.07067171, 0.07067171, 0.92723104], [1516623420000, 0.07088372, 0.07094828, 0.07088372, 0.07094828, 0.46692749], [1516623480000, 0.0709, 0.0709, 0.0709, 0.0709, 0.142], [1516623540000, 0.07094828, 0.07094828, 0.07094828, 0.07094828, 0.23770516], [1516623600000, 0.07088372, 0.07094828, 0.07088372, 0.07094828, 0.36813592], [1516623660000, 0.07094828, 0.07094828, 0.07094828, 0.07094828, 0.04373177], [1516623720000, 0.07081, 0.07081, 0.07081, 0.07081, 0.57673913], [1516623780000, 0.07081, 0.07081, 0.07081, 0.07081, 0.05395459], [1516623840000, 0.07067171, 0.07094828, 0.07067171, 0.07094828, 1.67253828], [1516623900000, 0.07094828, 0.07094828, 0.07094828, 0.07094828, 1.12588584], [1516624020000, 0.071, 0.071, 0.07094828, 0.07094828, 9.81303859], [1516624080000, 0.071, 0.07116112, 0.07094828, 0.07116112, 1.51323789], [1516624140000, 0.07094831, 0.0712, 0.07094831, 0.0712, 10.09177747], [1516624200000, 0.07102884, 0.0712, 0.07102884, 0.0712, 2.13707863], [1516624320000, 0.07117553, 0.07159998, 0.07094828, 0.07094828, 4.0439697], [1516624440000, 0.07112384, 0.07112455, 0.07112384, 0.07112384, 0.19217758], [1516624500000, 0.07113384, 0.07171089, 0.07113379, 0.0711774, 0.41261777], [1516624560000, 0.07171089, 0.07171089, 0.07121365, 0.07121365, 0.06742445], [1516624620000, 0.07162339, 0.07162339, 0.07162339, 0.07162339, 0.03178598], [1516624680000, 0.07112384, 0.07112384, 0.07112384, 0.07112384, 0.04065723], [1516624740000, 0.07112384, 0.07112384, 0.07112384, 0.07112384, 0.43800616], [1516624800000, 0.07157647, 0.07171088, 0.07064508, 0.07064508, 2.77370433], [1516624860000, 0.0716011, 0.0716011, 0.07064558, 0.07064559, 9.15586386], [1516624920000, 0.07064576, 0.07064617, 0.07064576, 0.07064617, 0.68697915], [1516624980000, 0.07064641, 0.07064698, 0.07064641, 0.07064698, 0.10732389], [1516625040000, 0.07064731, 0.0706477, 0.07064731, 0.0706477, 0.58712071], [1516625100000, 0.07078804, 0.07123759, 0.07074281, 0.07123759, 1.65128075], [1516625160000, 0.07078315, 0.07078315, 0.07069283, 0.07069283, 0.0347704], [1516625220000, 0.07124, 0.07124, 0.07124, 0.07124, 0.07294941], [1516625340000, 0.07078995, 0.07124008, 0.07078995, 0.07124008, 0.04257453], [1516625400000, 0.07124008, 0.07135994, 0.07083236, 0.07095537, 0.70471793], [1516625460000, 0.07095398, 0.07095398, 0.07080942, 0.07080942, 0.13928433], [1516625520000, 0.07083, 0.07083, 0.07083, 0.07083, 0.875], [1516625580000, 0.071219, 0.071219, 0.071219, 0.071219, 0.357739], [1516625640000, 0.07121892, 0.07121892, 0.07121892, 0.07121892, 0.05085808], [1516625700000, 0.07121892, 0.07134433, 0.07121892, 0.07134433, 0.02249813], [1516625760000, 0.07085817, 0.07085817, 0.07085817, 0.07085817, 0.42343518], [1516625880000, 0.07128565, 0.07128565, 0.07128565, 0.07128565, 0.072801], [1516625940000, 0.07088832, 0.07088832, 0.07088832, 0.07088832, 0.03769861], [1516626000000, 0.0708891, 0.07128218, 0.0708891, 0.07128218, 0.53387033], [1516626060000, 0.07127382, 0.07127382, 0.07086993, 0.07086993, 0.58056447], [1516626180000, 0.07128218, 0.07128218, 0.07128218, 0.07128218, 0.60341523], [1516626240000, 0.07128218, 0.07128218, 0.0712821, 0.0712821, 0.417137], [1516626300000, 0.07094325, 0.07147972, 0.07094325, 0.07147972, 8.28685058], [1516626360000, 0.07101336, 0.07112957, 0.07101336, 0.07112957, 1.02880434], [1516626420000, 0.0712593, 0.07171089, 0.0712593, 0.07171089, 1.6128022], [1516626480000, 0.07163918, 0.07181416, 0.07163918, 0.07181416, 1.67010519], [1516626540000, 0.07125987, 0.07207971, 0.07125987, 0.07167011, 17.97089184], [1516626600000, 0.0717418, 0.0722, 0.0717418, 0.0722, 0.46272185], [1516626660000, 0.07193, 0.0722, 0.07193, 0.0722, 12.53350011], [1516626720000, 0.0721, 0.0722, 0.07189691, 0.07197612, 4.54386075], [1516626780000, 0.0722, 0.0723, 0.0714592, 0.0714592, 22.25181015], [1516626840000, 0.072, 0.072, 0.07185492, 0.072, 0.4847285], [1516626900000, 0.072, 0.07206825, 0.07163736, 0.072, 2.0436499], [1516626960000, 0.072, 0.072, 0.07167901, 0.072, 0.67930787], [1516627020000, 0.07167911, 0.0716953, 0.07167901, 0.0716953, 5.16841298], [1516627080000, 0.0719635, 0.0719635, 0.07167911, 0.07167913, 0.50112883], [1516627140000, 0.0719, 0.0719, 0.07160743, 0.07160743, 1.84296951], [1516627200000, 0.07167923, 0.07167935, 0.07100669, 0.07100669, 1.47878979], [1516627260000, 0.07134149, 0.07135904, 0.07067144, 0.07100669, 10.01781497], [1516627320000, 0.07100667, 0.07127821, 0.07078851, 0.0710067, 2.61999907], [1516627380000, 0.0709181, 0.0710067, 0.0709181, 0.07100669, 3.38858393], [1516627440000, 0.07093569, 0.0710067, 0.07093569, 0.07093569, 1.83751211], [1516627500000, 0.0710067, 0.0712118, 0.070741, 0.0711883, 13.76361289], [1516627560000, 0.071, 0.071, 0.07099999, 0.07099999, 0.15641312], [1516627620000, 0.07099999, 0.07099999, 0.07081, 0.07081, 0.04033501], [1516627680000, 0.070788, 0.07099999, 0.07076816, 0.07081008, 2.89349377], [1516627740000, 0.070767, 0.070767, 0.070767, 0.070767, 0.397], [1516627800000, 0.070767, 0.070999, 0.07075001, 0.070999, 4.54063827], [1516627860000, 0.07075003, 0.07075003, 0.07074747, 0.07074747, 11.10904472], [1516627920000, 0.0706714, 0.0706714, 0.0706714, 0.0706714, 5.58935786], [1516627980000, 0.0708, 0.0708, 0.0708, 0.0708, 0.25], [1516628040000, 0.0709943, 0.0709943, 0.07067139, 0.0709943, 0.34442262], [1516628100000, 0.07067139, 0.070999, 0.07067139, 0.07067139, 2.82394328], [1516628160000, 0.070999, 0.070999, 0.070999, 0.070999, 0.04651784], [1516628220000, 0.070999, 0.071, 0.070999, 0.071, 2.69405901], [1516628280000, 0.071, 0.07100668, 0.071, 0.071, 0.55847405], [1516628340000, 0.071, 0.07121047, 0.071, 0.07121046, 0.44810475], [1516628400000, 0.07121046, 0.07121046, 0.07121046, 0.07121046, 1.55075736], [1516628460000, 0.07121046, 0.07121047, 0.07101349, 0.07101349, 1.0230058], [1516628520000, 0.07121046, 0.07121046, 0.07100131, 0.07100131, 6.53320172], [1516628580000, 0.07100074, 0.0715289, 0.07100074, 0.0715289, 44.12234064], [1516628640000, 0.07160266, 0.07173662, 0.07152882, 0.071602, 10.68738787], [1516628700000, 0.07160199, 0.07160199, 0.07113306, 0.07158646, 2.54696698], [1516628760000, 0.07114514, 0.07158852, 0.07105267, 0.07105267, 1.29022254], [1516628820000, 0.07105991, 0.07105991, 0.07105862, 0.07105862, 4.74240797], [1516628880000, 0.07116684, 0.07154303, 0.07116684, 0.07116998, 0.16966172], [1516628940000, 0.07154302, 0.07154302, 0.071189, 0.07153, 0.30917328], [1516629000000, 0.07152991, 0.07153078, 0.07121, 0.07121, 1.00621719], [1516629060000, 0.07153078, 0.07153078, 0.07116684, 0.07116684, 6.86401721], [1516629120000, 0.07116684, 0.07116684, 0.071, 0.071, 17.73385566], [1516629180000, 0.07107255, 0.07107255, 0.07097349, 0.07097349, 0.06553402], [1516629240000, 0.07094938, 0.07097349, 0.0708, 0.07085, 3.36283508], [1516629300000, 0.07097349, 0.07122102, 0.07085, 0.07097349, 1.15369792], [1516629420000, 0.07097349, 0.07097349, 0.07085, 0.07085, 1.02391631], [1516629480000, 0.07118504, 0.07118504, 0.07118504, 0.07118504, 0.4153], [1516629540000, 0.07118002, 0.07138736, 0.07118001, 0.0712933, 6.28729935], [1516629600000, 0.07092263, 0.0712933, 0.07091498, 0.0712933, 10.15629829], [1516629660000, 0.07098713, 0.07141655, 0.07098713, 0.07102011, 3.36260738], [1516629720000, 0.07135385, 0.0714, 0.071, 0.071, 3.46984767], [1516629780000, 0.07130307, 0.07130307, 0.07073367, 0.07126671, 1.33691363], [1516629840000, 0.07073155, 0.07113132, 0.07073154, 0.07113132, 0.96150964], [1516629900000, 0.07093547, 0.07093547, 0.07093547, 0.07093547, 0.40661236], [1516629960000, 0.07093547, 0.07125664, 0.07081168, 0.07081168, 1.6313548], [1516630080000, 0.07081169, 0.07125663, 0.07081169, 0.07125663, 2.47279291], [1516630140000, 0.071256, 0.0713, 0.071256, 0.0713, 6.41916522], [1516630200000, 0.0713999, 0.0713999, 0.07103282, 0.07103282, 3.36937109], [1516630260000, 0.07147923, 0.07147923, 0.07073155, 0.07090767, 1.5531099], [1516630320000, 0.07091491, 0.07095386, 0.07091491, 0.07095386, 0.85159084], [1516630380000, 0.07147889, 0.07147899, 0.07147883, 0.07147899, 8.38838812], [1516630440000, 0.07147899, 0.07147899, 0.07101143, 0.07101143, 1.60759001], [1516630500000, 0.0714786, 0.07147899, 0.07073155, 0.07073155, 0.23150068], [1516630560000, 0.0709643, 0.07131337, 0.0709643, 0.07131337, 1.2735065], [1516630620000, 0.07131337, 0.07131337, 0.07091613, 0.07091613, 0.19517477], [1516630680000, 0.07131337, 0.07131337, 0.07131337, 0.07131337, 0.14738535], [1516630740000, 0.0713, 0.0713, 0.07128337, 0.07128337, 0.16589033], [1516630800000, 0.07128337, 0.07128337, 0.07128337, 0.07128337, 0.09389074], [1516630860000, 0.07128325, 0.07128325, 0.07073156, 0.07073156, 0.842822], [1516630920000, 0.07123335, 0.07123335, 0.071, 0.071, 6.31266987], [1516630980000, 0.071, 0.07123335, 0.071, 0.07112022, 1.76344453], [1516631040000, 0.07109507, 0.07123334, 0.07075002, 0.07109196, 3.95835542], [1516631100000, 0.07106824, 0.0712303, 0.0708, 0.0708, 1.6398936], [1516631160000, 0.07106824, 0.07106824, 0.07106824, 0.07106824, 2.3509266], [1516631220000, 0.07122172, 0.07122172, 0.07106824, 0.07106824, 0.19016232], [1516631280000, 0.07106824, 0.07123331, 0.07106824, 0.07122159, 2.91864726], [1516631340000, 0.07121301, 0.07128337, 0.07106824, 0.07123657, 14.65716909], [1516631400000, 0.07123913, 0.07128337, 0.07080004, 0.07080004, 9.18641457], [1516631460000, 0.07080003, 0.07106824, 0.07080003, 0.07106824, 0.33427846], [1516631520000, 0.07080004, 0.07091699, 0.07080003, 0.07080003, 0.14804611], [1516631580000, 0.07080003, 0.07091699, 0.0708, 0.0708, 43.39459595], [1516631640000, 0.0708, 0.07091699, 0.0708, 0.0708, 0.18180846], [1516631700000, 0.07091699, 0.0713, 0.07091699, 0.0713, 2.7528603], [1516631760000, 0.07128, 0.0713, 0.07128, 0.0713, 1.39901823], [1516631820000, 0.07129999, 0.07129999, 0.07105061, 0.07129999, 0.06738557], [1516631880000, 0.07080003, 0.07080003, 0.07080003, 0.07080003, 0.2831], [1516631940000, 0.0708719, 0.07093849, 0.0708719, 0.07093849, 0.05345293], [1516632000000, 0.0709386, 0.07140793, 0.0709386, 0.07140793, 8.72783357], [1516632060000, 0.07129999, 0.07129999, 0.07129999, 0.07129999, 0.07577486], [1516632180000, 0.07129999, 0.07129999, 0.07129999, 0.07129999, 0.36443906], [1516632240000, 0.07129995, 0.07129995, 0.07129995, 0.07129995, 0.10772023], [1516632300000, 0.07129995, 0.07129995, 0.07119522, 0.07129995, 6.14758942], [1516632360000, 0.07129995, 0.07184077, 0.07117612, 0.07184077, 2.52151734], [1516632420000, 0.07181416, 0.07181416, 0.071299, 0.071299, 0.66037876], [1516632480000, 0.07135886, 0.07184077, 0.07130945, 0.07184077, 1.13727407], [1516632540000, 0.07184077, 0.07184077, 0.07184077, 0.07184077, 1.13408783], [1516632600000, 0.07184077, 0.0719, 0.07184077, 0.07184077, 0.89043214], [1516632660000, 0.07184076, 0.07189997, 0.07138871, 0.07189997, 5.68684712], [1516632720000, 0.07145902, 0.07145902, 0.07144026, 0.07145902, 20.84728751], [1516632780000, 0.07189996, 0.07189997, 0.07189996, 0.07189997, 0.01982489], [1516632840000, 0.07146176, 0.07146176, 0.07146176, 0.07146176, 0.40126715], [1516632900000, 0.07146176, 0.07146176, 0.07146074, 0.07146074, 2.25411397], [1516632960000, 0.07146176, 0.07146176, 0.07145902, 0.07145902, 0.23522151], [1516633020000, 0.07139608, 0.07145902, 0.07129368, 0.07129368, 13.97327167], [1516633080000, 0.0713961, 0.0713961, 0.07129901, 0.07129901, 3.16267355], [1516633140000, 0.0713961, 0.0713961, 0.07130431, 0.07130431, 0.60597244], [1516633200000, 0.0713961, 0.0713961, 0.0713961, 0.0713961, 0.05756322], [1516633260000, 0.0713961, 0.0713961, 0.0713961, 0.0713961, 3.58105291], [1516633320000, 0.0713961, 0.07189991, 0.0713961, 0.07189986, 13.97744914], [1516633380000, 0.07137724, 0.0718998, 0.07137724, 0.07137724, 1.75147011], [1516633440000, 0.07187894, 0.07189991, 0.0718789, 0.0718789, 4.32159111], [1516633500000, 0.07187884, 0.07187884, 0.07109, 0.07135663, 7.69648813], [1516633560000, 0.07135663, 0.07135663, 0.07127764, 0.07127764, 0.40453525], [1516633620000, 0.07130363, 0.07130363, 0.07130363, 0.07130363, 0.12185111], [1516633740000, 0.0713, 0.0713, 0.0713, 0.0713, 0.0439332], [1516633800000, 0.0712999, 0.07179977, 0.07101636, 0.07101636, 0.60221002], [1516633860000, 0.0710994, 0.07120617, 0.0710994, 0.07120617, 0.53665204], [1516633980000, 0.07179972, 0.07179972, 0.07179972, 0.07179972, 0.04559709], [1516634100000, 0.07126168, 0.0718, 0.07126168, 0.0718, 0.14891278], [1516634160000, 0.0712, 0.07150463, 0.07113888, 0.07150463, 2.01174667], [1516634220000, 0.07113889, 0.07178123, 0.07113889, 0.07178123, 1.70096685], [1516634280000, 0.07113889, 0.07154667, 0.07103255, 0.07103256, 1.78379419], [1516634340000, 0.07101, 0.07101, 0.0709726, 0.0709726, 0.0195255], [1516634400000, 0.071529, 0.071529, 0.071529, 0.071529, 0.01123153], [1516634460000, 0.0709726, 0.07150693, 0.07091087, 0.07091087, 13.88892441], [1516634520000, 0.07091157, 0.07091157, 0.07085282, 0.07085282, 2.95643952], [1516634580000, 0.07085284, 0.07089, 0.07085282, 0.07089, 1.52031238], [1516634640000, 0.07085282, 0.07085282, 0.07085282, 0.07085282, 0.71809566], [1516634700000, 0.07089, 0.07089, 0.0708528, 0.07089, 5.31785265], [1516634760000, 0.07132262, 0.07132262, 0.07132262, 0.07132262, 0.02206239], [1516634820000, 0.07097611, 0.07132262, 0.07097611, 0.07100556, 0.87018575], [1516634880000, 0.07091943, 0.07092652, 0.07091943, 0.07092652, 1.30493887], [1516634940000, 0.07132262, 0.07132262, 0.07132262, 0.07132262, 0.15620848], [1516635000000, 0.07125606, 0.07126015, 0.07089, 0.07126015, 0.95676205], [1516635060000, 0.07089, 0.0713, 0.07089, 0.0713, 2.84837434], [1516635120000, 0.07089, 0.07089, 0.07089, 0.07089, 0.0784381], [1516635180000, 0.07089, 0.07089, 0.07089, 0.07089, 2.48389854], [1516635240000, 0.07125226, 0.07125226, 0.07089, 0.07089, 1.30631552], [1516635300000, 0.07089, 0.0712, 0.07089, 0.0712, 0.25850518], [1516635420000, 0.0712, 0.0712, 0.0712, 0.0712, 0.07354751], [1516635480000, 0.07089, 0.0712, 0.07089, 0.0712, 0.88435711], [1516635540000, 0.07089, 0.07089, 0.07089, 0.07089, 2.76436956], [1516635600000, 0.0712, 0.0712, 0.07089001, 0.07089001, 0.42840517], [1516635660000, 0.0712, 0.0712, 0.07089, 0.07089, 5.02], [1516635780000, 0.0712, 0.0712, 0.0712, 0.0712, 0.32712481], [1516635840000, 0.0712, 0.0712, 0.071045, 0.0712, 0.70726455], [1516635900000, 0.0713, 0.0713, 0.0712, 0.0712, 0.0262313], [1516635960000, 0.0712, 0.0712, 0.0712, 0.0712, 0.9977], [1516636080000, 0.07132262, 0.07132262, 0.07132262, 0.07132262, 0.01617004], [1516636140000, 0.07132257, 0.07132257, 0.0712, 0.0712, 0.02712439], [1516636200000, 0.0712, 0.07132257, 0.07096683, 0.07132257, 6.56467685], [1516636260000, 0.07132257, 0.07132257, 0.07132257, 0.07132257, 0.42585925], [1516636320000, 0.07100902, 0.07100902, 0.0709534, 0.0709534, 0.33858647], [1516636380000, 0.07100902, 0.07100902, 0.07089004, 0.07092088, 12.66720193], [1516636500000, 0.07132249, 0.07138052, 0.07132249, 0.07135572, 12.78496444], [1516636560000, 0.07135572, 0.07135572, 0.07135572, 0.07135572, 5.03865152], [1516636620000, 0.07135572, 0.07135572, 0.0710066, 0.0710066, 26.34645087], [1516636680000, 0.07106099, 0.07106099, 0.07106099, 0.07106099, 0.824], [1516636740000, 0.07135562, 0.07138997, 0.07135562, 0.07138997, 13.42001193], [1516636800000, 0.07095, 0.07122173, 0.0708, 0.07120976, 4.26071591], [1516636860000, 0.07120749, 0.07122462, 0.07075684, 0.07094999, 7.51633253], [1516636920000, 0.07094999, 0.07095, 0.07094999, 0.07095, 1.49576205], [1516636980000, 0.07073585, 0.07073585, 0.07073585, 0.07073585, 1.28826451], [1516637100000, 0.07113537, 0.071211, 0.07113537, 0.071211, 0.8416642], [1516637160000, 0.07113537, 0.07121084, 0.07070299, 0.07070299, 0.37130542], [1516637340000, 0.07067139, 0.07067139, 0.070577, 0.070577, 1.41162517], [1516637400000, 0.07103097, 0.07103097, 0.07103097, 0.07103097, 0.33112093], [1516637460000, 0.07103, 0.07103097, 0.07103, 0.07103097, 0.04972164], [1516637520000, 0.07057713, 0.071, 0.07057713, 0.071, 0.13615566], [1516637580000, 0.071, 0.071, 0.0709126, 0.0709126, 0.04779502], [1516637640000, 0.07068107, 0.07091259, 0.07068107, 0.0709, 5.46195559], [1516637700000, 0.0709, 0.0709, 0.0709, 0.0709, 0.94], [1516637760000, 0.07089998, 0.0709, 0.07089998, 0.0709, 0.07500815], [1516637820000, 0.07089998, 0.07089998, 0.07089998, 0.07089998, 0.34684297], [1516637880000, 0.07089998, 0.07091259, 0.07089998, 0.07091259, 1.12552923], [1516638000000, 0.07068786, 0.07068786, 0.07068786, 0.07068786, 3.3653], [1516638060000, 0.07065843, 0.07091259, 0.07065843, 0.07091259, 2.31], [1516638180000, 0.07065843, 0.07065843, 0.07065843, 0.07065843, 0.15249527], [1516638300000, 0.0709, 0.0709, 0.0709, 0.0709, 0.07832918], [1516638360000, 0.07091259, 0.07091259, 0.0709, 0.0709, 0.16555007], [1516638420000, 0.07091259, 0.07091259, 0.0709, 0.0709, 0.34324335], [1516638480000, 0.0709, 0.0709, 0.0709, 0.0709, 0.03110014], [1516638540000, 0.07091259, 0.07091259, 0.0709, 0.0709, 7.32093768], [1516638600000, 0.0709, 0.07091259, 0.0709, 0.07091259, 0.54513884], [1516638660000, 0.0709, 0.0709, 0.07069054, 0.07069054, 0.73354525], [1516638720000, 0.07066787, 0.0708999, 0.07066787, 0.0708999, 0.04493418], [1516638780000, 0.07065845, 0.0709, 0.07065843, 0.0709, 3.31191253], [1516638840000, 0.07091259, 0.07103097, 0.07091259, 0.07103097, 8.90950624], [1516638900000, 0.07099999, 0.07138499, 0.07099999, 0.07138496, 1.33229096], [1516638960000, 0.07092, 0.071385, 0.07080772, 0.071385, 12.30773103], [1516639020000, 0.071385, 0.07138999, 0.07138499, 0.07138999, 8.041985], [1516639080000, 0.07138999, 0.07138999, 0.071385, 0.07138999, 15.78202188], [1516639140000, 0.071385, 0.071385, 0.07115081, 0.07115081, 0.14384668], [1516639200000, 0.071385, 0.07138999, 0.07100001, 0.07125, 11.41245325], [1516639260000, 0.07138999, 0.07138999, 0.07125, 0.07125, 0.44858767], [1516639320000, 0.07125, 0.07138999, 0.07125, 0.0713, 0.56094755], [1516639440000, 0.0713, 0.0713, 0.0713, 0.0713, 0.15], [1516639500000, 0.07138999, 0.07138999, 0.0713, 0.0713, 1.47272181], [1516639560000, 0.07125, 0.07125, 0.0710407, 0.0710407, 1.87850926], [1516639620000, 0.0713, 0.0713, 0.0710407, 0.0710407, 3.36982231], [1516639680000, 0.0710407, 0.0710407, 0.07104069, 0.07104069, 3.0], [1516639740000, 0.0710408, 0.07104101, 0.07104069, 0.07104069, 17.81702158], [1516639860000, 0.07104076, 0.07144759, 0.07104076, 0.07104158, 4.47988894], [1516639920000, 0.07144759, 0.0714476, 0.07144759, 0.0714476, 0.93635091], [1516639980000, 0.07156925, 0.07162924, 0.07156925, 0.07162924, 0.65311126], [1516640040000, 0.07162924, 0.07162924, 0.07162914, 0.07162914, 1.40448687], [1516640160000, 0.071102, 0.0711029, 0.07108777, 0.07108777, 1.59589794], [1516640220000, 0.07108777, 0.07162914, 0.07104073, 0.07162914, 0.579247], [1516640280000, 0.07162911, 0.07162911, 0.07105076, 0.07105076, 0.96531555], [1516640340000, 0.07162909, 0.07162909, 0.07125081, 0.07125081, 1.07954983], [1516640400000, 0.07125081, 0.0716291, 0.07125081, 0.0716291, 0.53494051], [1516640460000, 0.07105078, 0.07105088, 0.07105078, 0.07105088, 0.29661595], [1516640520000, 0.07105134, 0.07105135, 0.07105134, 0.07105135, 2.12612331], [1516640640000, 0.07105095, 0.07105096, 0.07105095, 0.07105095, 1.80032176], [1516640700000, 0.07105096, 0.071586, 0.07105096, 0.071586, 0.16431682], [1516640760000, 0.07105096, 0.07105096, 0.07104069, 0.07105096, 24.10180674], [1516640820000, 0.07105088, 0.07105088, 0.07098354, 0.07098354, 2.156189], [1516640880000, 0.07105096, 0.071549, 0.07098354, 0.07154796, 2.25547948], [1516640940000, 0.07098354, 0.07098354, 0.07098354, 0.07098354, 0.12239037], [1516641000000, 0.07152673, 0.07152673, 0.07152673, 0.07152673, 0.13980773], [1516641060000, 0.07125524, 0.07152664, 0.07098354, 0.07098354, 9.42730502], [1516641180000, 0.07152635, 0.07152635, 0.07152635, 0.07152635, 0.06822661], [1516641240000, 0.07098354, 0.07098354, 0.07098354, 0.07098354, 0.119], [1516641300000, 0.07098359, 0.07098359, 0.07098359, 0.07098359, 0.20215156], [1516641360000, 0.07152614, 0.07152614, 0.07152614, 0.07152614, 0.01553178], [1516641480000, 0.07152614, 0.07152614, 0.07149, 0.07149, 5.03868166], [1516641780000, 0.07149, 0.07152631, 0.07149, 0.07152631, 1.044], [1516641900000, 0.0715111, 0.07152631, 0.0715111, 0.07152631, 3.88323651], [1516642020000, 0.07152631, 0.07152631, 0.0715263, 0.0715263, 0.91887479], [1516642140000, 0.07098695, 0.07152629, 0.07098695, 0.07152629, 0.16392631], [1516642200000, 0.07152629, 0.07152629, 0.0709876, 0.07152629, 2.41166426], [1516642260000, 0.07152623, 0.07152623, 0.07152623, 0.07152623, 0.01548551], [1516642320000, 0.07152621, 0.07152621, 0.07098781, 0.07152619, 0.38719195], [1516642380000, 0.07098786, 0.07098787, 0.07098786, 0.07098787, 0.12747143], [1516642500000, 0.07152565, 0.07152565, 0.07152565, 0.07152565, 0.02127363], [1516642680000, 0.07098898, 0.07100009, 0.07098898, 0.07100009, 2.40197619], [1516642740000, 0.07100023, 0.07100023, 0.07100023, 0.07100023, 2.04496899], [1516642800000, 0.07152089, 0.07152362, 0.07152089, 0.07152362, 0.41945778], [1516642980000, 0.07152362, 0.07152362, 0.07152362, 0.07152362, 0.39268618], [1516643040000, 0.07152362, 0.071549, 0.07102103, 0.07102129, 3.08856495], [1516643100000, 0.07115276, 0.07162924, 0.07115276, 0.07162923, 0.90224845], [1516643160000, 0.07120003, 0.07171995, 0.07120003, 0.07120014, 0.68441054], [1516643220000, 0.07171995, 0.07171995, 0.07152619, 0.07152619, 0.04839031], [1516643280000, 0.07152619, 0.07152619, 0.07152619, 0.07152619, 1.43862501], [1516643340000, 0.07152619, 0.07171995, 0.07152619, 0.07171995, 1.07970462], [1516643400000, 0.07171995, 0.07172, 0.07162923, 0.07162923, 0.73184807], [1516643460000, 0.07162923, 0.07175, 0.0716292, 0.07172, 0.40208795], [1516643520000, 0.07175, 0.0719, 0.07175, 0.0719, 10.51626928], [1516643580000, 0.0718, 0.0718, 0.07120903, 0.07172828, 5.15001519], [1516643640000, 0.07172828, 0.07172828, 0.07127022, 0.07127022, 7.07880526], [1516643700000, 0.07189984, 0.0719, 0.07189984, 0.07189984, 0.82100644], [1516643760000, 0.07135147, 0.07189992, 0.07135102, 0.07135147, 7.17347785], [1516643820000, 0.07135148, 0.07135148, 0.07135147, 0.07135147, 2.04313215], [1516643880000, 0.07135147, 0.0718998, 0.07135147, 0.0718998, 0.01610283], [1516644000000, 0.07189937, 0.07189937, 0.07189929, 0.07189929, 0.34770826], [1516644060000, 0.07189929, 0.07189929, 0.07189929, 0.07189929, 0.27816686], [1516644120000, 0.07189929, 0.07189937, 0.07135157, 0.07135157, 0.974369], [1516644240000, 0.07135619, 0.07189913, 0.07135619, 0.07189902, 1.19306018], [1516644300000, 0.07189902, 0.07189902, 0.07189902, 0.07189902, 0.11181997], [1516644360000, 0.0718, 0.0718, 0.0718, 0.0718, 0.70995639], [1516644420000, 0.0718, 0.07189879, 0.0718, 0.07189879, 0.8059244], [1516644480000, 0.0718, 0.0718, 0.0718, 0.0718, 1.12887179], [1516644540000, 0.0718, 0.0718, 0.0718, 0.0718, 5.15265114], [1516644600000, 0.0718, 0.07189877, 0.0718, 0.07189875, 0.79023686], [1516644720000, 0.0713516, 0.07189875, 0.0713516, 0.07189875, 1.10519458], [1516644840000, 0.07189872, 0.07189872, 0.07189871, 0.07189871, 0.29865751], [1516644900000, 0.07189872, 0.07189872, 0.07189872, 0.07189872, 0.41725371], [1516644960000, 0.07189874, 0.07189874, 0.07135157, 0.07135157, 1.16326886], [1516645020000, 0.07135157, 0.07135157, 0.07135157, 0.07135157, 0.03096918], [1516645080000, 0.07135157, 0.07135157, 0.07135157, 0.07135157, 0.39811542], [1516645140000, 0.0718, 0.07189871, 0.0718, 0.07189871, 0.07889786], [1516645260000, 0.07189871, 0.07189871, 0.07164724, 0.07189871, 0.11597777], [1516645320000, 0.07189871, 0.07189871, 0.07189871, 0.07189871, 0.39623697], [1516645380000, 0.07189871, 0.07189871, 0.07120001, 0.07120001, 2.29549814], [1516645500000, 0.07189868, 0.07189868, 0.07120075, 0.07120075, 0.51271344], [1516645560000, 0.07185279, 0.07185279, 0.07185279, 0.07185279, 0.0166036], [1516645620000, 0.0718526, 0.0718526, 0.0718526, 0.0718526, 0.01049829], [1516645680000, 0.07120126, 0.0718526, 0.07120126, 0.07185256, 3.3881403], [1516645740000, 0.07185249, 0.07185249, 0.07185248, 0.07185248, 0.39130715], [1516645800000, 0.07185248, 0.07185249, 0.0713, 0.07185249, 0.89587], [1516645860000, 0.07185248, 0.07185248, 0.07130001, 0.07130001, 0.77559945], [1516645980000, 0.07185237, 0.07185237, 0.07185237, 0.07185237, 0.02783054], [1516646100000, 0.0718519, 0.0718519, 0.0718519, 0.0718519, 0.13917516], [1516646160000, 0.07130002, 0.07130002, 0.07130002, 0.07130002, 0.05527096], [1516646220000, 0.07130002, 0.07130002, 0.0712, 0.0712, 6.61], [1516646280000, 0.07130002, 0.0718507, 0.07130002, 0.07130002, 0.30831118], [1516646340000, 0.07157534, 0.07157534, 0.07157534, 0.07157534, 0.21176937], [1516646400000, 0.07185051, 0.07185052, 0.07130002, 0.07130002, 1.44759295], [1516646580000, 0.07130003, 0.07184979, 0.07130003, 0.07184979, 0.03188967], [1516646640000, 0.07169996, 0.07169996, 0.07169996, 0.07169996, 0.04736033], [1516646700000, 0.07169996, 0.07169997, 0.071301, 0.07138, 8.68782306], [1516646760000, 0.07130002, 0.07130002, 0.07124075, 0.07124075, 0.09062076], [1516646820000, 0.07120001, 0.07120001, 0.07120001, 0.07120001, 0.26742816], [1516646880000, 0.07120001, 0.07120001, 0.07120001, 0.07120001, 0.58191387], [1516646940000, 0.0712, 0.07120001, 0.0712, 0.07120001, 8.0480719], [1516647000000, 0.0712, 0.0712, 0.071002, 0.071002, 12.72938098], [1516647060000, 0.07100201, 0.07100201, 0.07100201, 0.07100201, 0.09925186], [1516647120000, 0.07120001, 0.07120001, 0.07120001, 0.07120001, 1.1160189], [1516647180000, 0.071002, 0.07120001, 0.071002, 0.07120001, 5.95855394], [1516647240000, 0.07120001, 0.07120001, 0.071002, 0.071002, 1.50290853], [1516647300000, 0.071002, 0.071002, 0.071002, 0.071002, 0.46072126], [1516647360000, 0.07120001, 0.07120001, 0.071002, 0.0712, 0.68018287], [1516647420000, 0.071002, 0.0712, 0.071, 0.071, 0.39485181], [1516647480000, 0.07100001, 0.07100199, 0.07100001, 0.07100199, 3.38874548], [1516647540000, 0.07100199, 0.07100199, 0.07100199, 0.07100199, 0.01552827], [1516647600000, 0.07100001, 0.07100001, 0.07100001, 0.07100001, 6.00000191], [1516647660000, 0.07100199, 0.07100199, 0.07100001, 0.07100001, 0.14817889], [1516647780000, 0.07100198, 0.071002, 0.07100198, 0.071002, 1.9136036], [1516647840000, 0.071002, 0.071002, 0.07100199, 0.07100199, 0.29650589], [1516647900000, 0.07100199, 0.07100199, 0.07100199, 0.07100199, 0.81429267], [1516647960000, 0.07100199, 0.07100199, 0.07100198, 0.07100198, 1.54322709], [1516648020000, 0.07100198, 0.07100198, 0.07100198, 0.07100198, 0.48494601], [1516648080000, 0.07100198, 0.07100198, 0.071, 0.071, 0.07582343], [1516648140000, 0.071, 0.07100198, 0.071, 0.07100198, 1.71727947], [1516648200000, 0.071, 0.07100197, 0.071, 0.071, 4.56263853], [1516648260000, 0.07100197, 0.07100197, 0.071, 0.07100197, 1.45778388], [1516648320000, 0.07100197, 0.07100197, 0.071, 0.071, 2.65204754], [1516648440000, 0.07100196, 0.07100197, 0.071, 0.071, 2.78981837], [1516648500000, 0.071, 0.07100197, 0.071, 0.071, 1.20142997], [1516648560000, 0.071, 0.07100197, 0.071, 0.07100197, 0.85925363], [1516648620000, 0.07100197, 0.07100197, 0.071, 0.071, 0.43340764], [1516648680000, 0.071, 0.07100196, 0.071, 0.07100196, 2.09679384], [1516648740000, 0.07100196, 0.07100196, 0.071, 0.071, 1.64406563], [1516648860000, 0.071, 0.071, 0.071, 0.071, 5.94], [1516648920000, 0.07100196, 0.07100196, 0.07100196, 0.07100196, 0.01757348], [1516649040000, 0.07100001, 0.07100001, 0.071, 0.071, 0.932364], [1516649100000, 0.07100001, 0.07100001, 0.071, 0.071, 7.71689627], [1516649160000, 0.07100001, 0.07100001, 0.071, 0.07100001, 21.23601378], [1516649220000, 0.071, 0.071, 0.0709851, 0.071, 11.53745196], [1516649280000, 0.071, 0.07100001, 0.0707, 0.07100001, 2.6772211], [1516649340000, 0.07100001, 0.07100001, 0.07100001, 0.07100001, 0.52438738], [1516649400000, 0.07098354, 0.07098354, 0.07098354, 0.07098354, 0.14408917], [1516649460000, 0.07098354, 0.07098354, 0.07098354, 0.07098354, 0.03794143], [1516649520000, 0.0707, 0.0707, 0.0707, 0.0707, 0.01559406], [1516649580000, 0.07098354, 0.07098354, 0.07098354, 0.07098354, 0.04141388], [1516649640000, 0.07098354, 0.07098354, 0.07098354, 0.07098354, 0.04323605], [1516649700000, 0.07071778, 0.07098354, 0.0707, 0.07098354, 13.76468078], [1516649760000, 0.07098354, 0.07098354, 0.07098354, 0.07098354, 0.02040114], [1516649940000, 0.0707, 0.0707, 0.0707, 0.0707, 1.0749872], [1516650000000, 0.0707, 0.0707, 0.0707, 0.0707, 0.75105098], [1516650180000, 0.0707, 0.0707, 0.0707, 0.0707, 0.88208397], [1516650240000, 0.07065843, 0.0707, 0.07065, 0.0707, 4.86165971], [1516650300000, 0.07065, 0.0706582, 0.0706, 0.0706, 1.10202896], [1516650360000, 0.0706582, 0.0706582, 0.07064, 0.07064, 0.08417188], [1516650480000, 0.07064, 0.07100198, 0.07030872, 0.07030874, 29.40806362], [1516650540000, 0.07064, 0.07064, 0.07030878, 0.07030878, 0.2396981], [1516650600000, 0.07064, 0.07064, 0.07064, 0.07064, 0.17350452], [1516650660000, 0.07064, 0.07064, 0.0703088, 0.07064, 2.24604356], [1516650720000, 0.07064, 0.07064, 0.07030881, 0.07030881, 0.33013126], [1516650780000, 0.07064, 0.07064, 0.07030002, 0.07064, 6.99373188], [1516650840000, 0.07030881, 0.07064, 0.07030003, 0.07030003, 20.09125242], [1516650900000, 0.07030002, 0.07030881, 0.07030002, 0.07030881, 2.44885179], [1516650960000, 0.07030881, 0.07030881, 0.07030881, 0.07030881, 3.49459778], [1516651020000, 0.07030881, 0.07030881, 0.07030002, 0.07030881, 6.83770099], [1516651080000, 0.07030881, 0.07030881, 0.07030881, 0.07030881, 0.16031478], [1516651140000, 0.07030881, 0.07030881, 0.07030881, 0.07030881, 0.17304794], [1516651200000, 0.0703088, 0.0703088, 0.0703, 0.0703, 4.38105706], [1516651260000, 0.0703, 0.0703, 0.0703, 0.0703, 0.12650645], [1516651320000, 0.07025, 0.0703, 0.07025, 0.07025, 1.10640407], [1516651380000, 0.07025, 0.0703, 0.07025, 0.0703, 29.17088616], [1516651440000, 0.0703, 0.07030881, 0.0703, 0.07030881, 1.03141033], [1516651500000, 0.07030881, 0.07030881, 0.07030881, 0.07030881, 2.61401848], [1516651560000, 0.07030881, 0.07030881, 0.07030881, 0.07030881, 0.8529193], [1516651620000, 0.07030881, 0.07064, 0.0703088, 0.07030881, 3.21369506], [1516651680000, 0.07030881, 0.07030881, 0.07030881, 0.07030881, 0.22346441], [1516651740000, 0.07030881, 0.07030881, 0.07030881, 0.07030881, 0.20336188], [1516651800000, 0.07030881, 0.07030881, 0.07030881, 0.07030881, 0.552274], [1516651860000, 0.07064, 0.07064, 0.07064, 0.07064, 0.11325028], [1516651920000, 0.07064, 0.07064, 0.07044, 0.07064, 3.93344594], [1516651980000, 0.07063999, 0.07063999, 0.07063999, 0.07063999, 0.11994348], [1516652100000, 0.07063999, 0.07063999, 0.07063999, 0.07063999, 0.89541311], [1516652160000, 0.07063999, 0.07063999, 0.07063999, 0.07063999, 0.02278365], [1516652280000, 0.07063999, 0.07063999, 0.07063999, 0.07063999, 0.11037175], [1516652340000, 0.07063999, 0.07063999, 0.07063999, 0.07063999, 0.07923728], [1516652400000, 0.07063999, 0.07063999, 0.07063999, 0.07063999, 1.63553617], [1516652460000, 0.07063999, 0.07063999, 0.0703697, 0.0703697, 7.53335298], [1516652520000, 0.07030882, 0.0704, 0.07023858, 0.0704, 30.39557919], [1516652580000, 0.0704, 0.0704, 0.07020012, 0.0702994, 29.99125295], [1516652640000, 0.0702994, 0.0702994, 0.07012993, 0.07020012, 18.52964042], [1516652700000, 0.07020012, 0.0704, 0.0700599, 0.0704, 22.26618849], [1516652760000, 0.07005995, 0.0704, 0.07000002, 0.0704, 19.36795146], [1516652820000, 0.07039, 0.07039, 0.07013, 0.07020012, 11.37262603], [1516652880000, 0.07020012, 0.07020012, 0.07020011, 0.07020012, 3.08966801], [1516652940000, 0.07020012, 0.07020012, 0.07020009, 0.07020009, 0.18057104], [1516653000000, 0.07013, 0.0702001, 0.06998827, 0.0702001, 60.28573951], [1516653060000, 0.0702001, 0.0702001, 0.06999801, 0.0702001, 2.87107464], [1516653120000, 0.0702001, 0.0702001, 0.06999999, 0.07013, 1.11335725], [1516653180000, 0.07013, 0.0702001, 0.07013, 0.07013, 0.34073554], [1516653240000, 0.07013, 0.0702001, 0.07013, 0.0702001, 0.41147132], [1516653300000, 0.0702001, 0.07039, 0.06998204, 0.06998204, 6.72555746], [1516653360000, 0.06998218, 0.06998218, 0.06998218, 0.06998218, 11.9148298], [1516653420000, 0.06998218, 0.06998218, 0.06998218, 0.06998218, 1.08073901], [1516653480000, 0.06998205, 0.06998218, 0.06998205, 0.06998218, 10.83725906], [1516653540000, 0.06998218, 0.06998218, 0.06998218, 0.06998218, 0.75695453], [1516653600000, 0.07038999, 0.07038999, 0.0702488, 0.07038, 1.96879546], [1516653660000, 0.07038, 0.07038999, 0.06998206, 0.06998206, 1.03923787], [1516653720000, 0.06998206, 0.06998206, 0.06998206, 0.06998206, 0.37352024], [1516653780000, 0.06998206, 0.06998206, 0.06998206, 0.06998206, 0.154749], [1516653840000, 0.07024975, 0.07024975, 0.06998204, 0.06998205, 10.44261609], [1516653900000, 0.06998212, 0.07039, 0.06998212, 0.07039, 44.31013888], [1516653960000, 0.07039, 0.07039, 0.06998212, 0.07039, 0.07542924], [1516654020000, 0.07039, 0.07039, 0.07039, 0.07039, 0.00871803], [1516654080000, 0.07039, 0.07090761, 0.07039, 0.07090761, 11.14797281], [1516654140000, 0.07090714, 0.07090714, 0.07090669, 0.07090669, 0.30552481], [1516654200000, 0.07085181, 0.07085181, 0.07085181, 0.07085181, 0.14718591], [1516654260000, 0.07085089, 0.07085089, 0.07085089, 0.07085089, 0.015], [1516654320000, 0.07085074, 0.07085074, 0.07085072, 0.07085072, 0.2808456], [1516654380000, 0.07005182, 0.07084959, 0.06998212, 0.06998212, 2.1273929], [1516654440000, 0.06998212, 0.06998212, 0.06998204, 0.06998204, 4.0], [1516654560000, 0.06998204, 0.07084281, 0.06998203, 0.06998203, 4.37422006], [1516654620000, 0.07079954, 0.07079954, 0.07079954, 0.07079954, 0.017292], [1516654680000, 0.07079904, 0.07079904, 0.07079904, 0.07079904, 0.2187484], [1516654740000, 0.07074982, 0.07074982, 0.07074946, 0.07074946, 0.21377463], [1516654800000, 0.07074929, 0.07074929, 0.07074929, 0.07074929, 0.97657954], [1516654920000, 0.0707271, 0.0707271, 0.07070498, 0.07070498, 0.04617919], [1516654980000, 0.0706609, 0.0706609, 0.0706609, 0.0706609, 0.03820952], [1516655100000, 0.07065928, 0.07065928, 0.07065928, 0.07065928, 0.28304845], [1516655220000, 0.07065783, 0.07065783, 0.07065783, 0.07065783, 0.02076328], [1516655280000, 0.07065756, 0.07065756, 0.07010001, 0.07059205, 0.60450826], [1516655340000, 0.07011001, 0.07011001, 0.07011001, 0.07011001, 0.239], [1516655400000, 0.07038999, 0.07038999, 0.07011001, 0.07038999, 0.71698427], [1516655580000, 0.07027998, 0.07027998, 0.07027998, 0.07027998, 0.70966156], [1516655640000, 0.07011001, 0.07011001, 0.07011001, 0.07011001, 0.01568726], [1516655700000, 0.07011002, 0.07027998, 0.07011002, 0.07027998, 0.174696], [1516655760000, 0.07027999, 0.07027999, 0.07011001, 0.07011001, 1.70438652], [1516655820000, 0.07011001, 0.07011001, 0.07011001, 0.07011001, 0.4442229], [1516655880000, 0.07011002, 0.07011002, 0.07011001, 0.07011002, 1.49541738], [1516655940000, 0.07011001, 0.07048978, 0.07011001, 0.07048978, 8.42199627], [1516656000000, 0.07011003, 0.07048946, 0.07, 0.07, 2.14818565], [1516656060000, 0.07011, 0.07025969, 0.07011, 0.07025969, 0.51677745], [1516656120000, 0.07025969, 0.07025969, 0.07025969, 0.07025969, 0.15991042], [1516656180000, 0.07015763, 0.07015763, 0.07015763, 0.07015763, 0.13227204], [1516656240000, 0.07000001, 0.07000001, 0.07, 0.07, 1.369504], [1516656300000, 0.07000001, 0.07015763, 0.069901, 0.07015762, 1.59994208], [1516656360000, 0.07000002, 0.07000002, 0.07000002, 0.07000002, 0.04563441], [1516656420000, 0.069901, 0.07000002, 0.06976111, 0.07000002, 9.02985414], [1516656480000, 0.06976111, 0.07000002, 0.06976111, 0.07000002, 5.37892478], [1516656540000, 0.07000002, 0.07000003, 0.07000002, 0.07000003, 0.30243819], [1516656600000, 0.07015745, 0.07015762, 0.06976111, 0.06976111, 0.49507266], [1516656720000, 0.0701573, 0.0701573, 0.06992366, 0.06992366, 0.57736918], [1516656780000, 0.06992366, 0.07015729, 0.06976111, 0.07015729, 2.84961627], [1516656900000, 0.07015683, 0.07015729, 0.06968609, 0.07015729, 2.87744688], [1516656960000, 0.07015673, 0.0701572, 0.07015673, 0.0701572, 0.32437228], [1516657020000, 0.06992366, 0.06992366, 0.06960577, 0.06960577, 1.65444287], [1516657080000, 0.0701572, 0.0701572, 0.0701572, 0.0701572, 0.04895041], [1516657140000, 0.070157, 0.070157, 0.070157, 0.070157, 0.13126165], [1516657200000, 0.06968609, 0.07015692, 0.06968609, 0.06997019, 0.41731435], [1516657260000, 0.06997019, 0.07015719, 0.06997019, 0.07015719, 0.85133638], [1516657320000, 0.06967601, 0.06967601, 0.06967601, 0.06967601, 0.32557754], [1516657380000, 0.06967602, 0.06967602, 0.069676, 0.069676, 0.20903087], [1516657440000, 0.06967602, 0.0699702, 0.06967602, 0.06967602, 0.26848639], [1516657500000, 0.0699702, 0.0701572, 0.06967603, 0.06967603, 11.3530496], [1516657560000, 0.06967603, 0.06967603, 0.06967602, 0.06967602, 1.2953704], [1516657620000, 0.06967602, 0.06967602, 0.06967602, 0.06967602, 0.05493594], [1516657800000, 0.06999601, 0.06999601, 0.06999601, 0.06999601, 0.13615843], [1516657860000, 0.06967602, 0.06967602, 0.06967602, 0.06967602, 3.26325562], [1516657920000, 0.06967602, 0.06967602, 0.0696, 0.0696, 1.37474611], [1516657980000, 0.0696, 0.0696, 0.06948409, 0.0695, 9.07696424], [1516658040000, 0.0695, 0.0695, 0.0693, 0.0693, 8.2287918], [1516658100000, 0.0693, 0.0695, 0.06929605, 0.06929605, 1.42770388], [1516658160000, 0.06929802, 0.0695, 0.06929802, 0.0695, 0.86236285], [1516658220000, 0.06935531, 0.06949999, 0.06935531, 0.06949999, 1.07786255], [1516658280000, 0.0695, 0.06999389, 0.06949999, 0.06999367, 5.9266201], [1516658340000, 0.06950007, 0.06999333, 0.06950007, 0.06999333, 1.26794494], [1516658580000, 0.06999186, 0.069994, 0.06999186, 0.069994, 0.50372567], [1516658640000, 0.06971034, 0.06999159, 0.06950678, 0.06999149, 0.47121955], [1516658760000, 0.06971033, 0.06971033, 0.06971033, 0.06971033, 0.01581545], [1516658820000, 0.06971033, 0.06971033, 0.06971033, 0.06971033, 1.58568209], [1516658880000, 0.06971033, 0.06971033, 0.06949999, 0.06971032, 1.77562972], [1516658940000, 0.06971033, 0.06971033, 0.06971032, 0.06971032, 3.61783], [1516659000000, 0.06971032, 0.06971033, 0.06949999, 0.06949999, 2.60973264], [1516659060000, 0.06949999, 0.06971033, 0.06949999, 0.06971033, 5.83395623], [1516659120000, 0.06971033, 0.06971033, 0.06971032, 0.06971033, 6.24189122], [1516659180000, 0.06999037, 0.06999037, 0.06999037, 0.06999037, 0.0158155], [1516659240000, 0.06999037, 0.06999037, 0.06999037, 0.06999037, 0.031631], [1516659300000, 0.06999037, 0.06999037, 0.06999037, 0.06999037, 0.04877621], [1516659360000, 0.06999037, 0.07038347, 0.06999037, 0.07038347, 5.01486334], [1516659420000, 0.07038349, 0.07038349, 0.06971069, 0.06971071, 8.22763855], [1516659480000, 0.07038331, 0.07038332, 0.06971066, 0.06971066, 0.95039979], [1516659540000, 0.07005918, 0.07005928, 0.07005918, 0.07005928, 0.52399278], [1516659600000, 0.06974148, 0.07005928, 0.06974148, 0.07005928, 0.34613751], [1516659660000, 0.07005928, 0.07005928, 0.06957904, 0.06957904, 0.48158726], [1516659720000, 0.069619, 0.07005928, 0.06959909, 0.07005928, 0.40527542], [1516659780000, 0.07005928, 0.07005928, 0.06966011, 0.07005928, 0.15441613], [1516659840000, 0.07005928, 0.07005928, 0.06968008, 0.07005928, 0.22463588], [1516659900000, 0.07005928, 0.07005928, 0.07005928, 0.07005928, 0.16364847], [1516659960000, 0.07005928, 0.07039813, 0.07005928, 0.07039813, 1.1322599], [1516660020000, 0.07039354, 0.07039354, 0.07039354, 0.07039354, 0.58819212], [1516660080000, 0.06982, 0.06990001, 0.06982, 0.06990001, 3.421], [1516660200000, 0.07039352, 0.07039352, 0.06990012, 0.07039352, 0.80389162], [1516660260000, 0.07039352, 0.07039352, 0.07039327, 0.07039327, 0.240723], [1516660320000, 0.07, 0.07, 0.069529, 0.069529, 6.0246554], [1516660500000, 0.07029968, 0.07029968, 0.06986899, 0.06986899, 0.2990758], [1516660560000, 0.06986899, 0.07020916, 0.06986899, 0.06986899, 3.02115232], [1516660620000, 0.06986899, 0.06986899, 0.06986899, 0.06986899, 1.0305], [1516660680000, 0.07020891, 0.07020891, 0.06986899, 0.06986899, 2.15085329], [1516660740000, 0.06986899, 0.07020825, 0.06986899, 0.07020825, 0.65986763], [1516660800000, 0.07020797, 0.07020797, 0.06986899, 0.06986899, 0.41652354], [1516660860000, 0.06986899, 0.07020761, 0.06939347, 0.06949831, 1.20249923], [1516660920000, 0.07020737, 0.07020737, 0.06949839, 0.06949872, 0.87864796], [1516660980000, 0.07020615, 0.07020615, 0.06949894, 0.07020576, 7.37427327], [1516661040000, 0.07020576, 0.07020924, 0.07020576, 0.07020576, 5.09790047], [1516661100000, 0.07020576, 0.07020924, 0.07020568, 0.07020577, 6.06032457], [1516661160000, 0.07020577, 0.07039298, 0.06954735, 0.07039298, 1.73855506], [1516661220000, 0.07039298, 0.07039298, 0.07039298, 0.07039298, 1.36697824], [1516661280000, 0.070393, 0.07059204, 0.0698305, 0.0698305, 30.41258176], [1516661340000, 0.07039298, 0.07039298, 0.07039298, 0.07039298, 0.18267634], [1516661400000, 0.07039298, 0.07039298, 0.07039298, 0.07039298, 4.54542352], [1516661460000, 0.07053429, 0.07053429, 0.07039298, 0.07039298, 2.80969133], [1516661520000, 0.07039298, 0.07053418, 0.06983241, 0.07053418, 2.21792301], [1516661640000, 0.07053418, 0.07053418, 0.07053418, 0.07053418, 0.49530776], [1516661700000, 0.07053418, 0.07053418, 0.07053418, 0.07053418, 0.0174105], [1516661760000, 0.07053418, 0.07053418, 0.06987027, 0.06987027, 3.31377241], [1516661820000, 0.06987029, 0.07053402, 0.06986999, 0.06987006, 5.45377631], [1516661880000, 0.06987006, 0.06988016, 0.06987006, 0.06988016, 3.48981527], [1516661940000, 0.07053417, 0.07053429, 0.07053417, 0.07053429, 0.28929518], [1516662000000, 0.06995009, 0.07053402, 0.06995, 0.07053401, 6.6601486], [1516662060000, 0.07053393, 0.07053393, 0.06997, 0.07053374, 1.12204036], [1516662120000, 0.07032206, 0.07032206, 0.06997001, 0.06997001, 0.29677787], [1516662180000, 0.07053365, 0.07053365, 0.07053365, 0.07053365, 0.23739467], [1516662240000, 0.07053305, 0.07053311, 0.07053305, 0.07053311, 1.05253749], [1516662300000, 0.070533, 0.07053304, 0.06995001, 0.07053301, 3.757642], [1516662420000, 0.07053305, 0.07053305, 0.07053305, 0.07053305, 0.03913372], [1516662480000, 0.07012412, 0.07053429, 0.07012412, 0.07053429, 0.4607066], [1516662540000, 0.07000029, 0.0700003, 0.07000029, 0.0700003, 0.8763571], [1516662600000, 0.07053304, 0.07053306, 0.07053304, 0.07053304, 1.37948773], [1516662780000, 0.07053304, 0.07053304, 0.07053304, 0.07053304, 0.39254133], [1516662840000, 0.07053304, 0.07053421, 0.07053304, 0.07053305, 3.86802377], [1516662900000, 0.07053305, 0.07053421, 0.07053303, 0.07053421, 1.58021613], [1516662960000, 0.0705342, 0.0705342, 0.07000022, 0.0705342, 0.33187482], [1516663020000, 0.07000024, 0.07000024, 0.07000022, 0.07000022, 3.93325666], [1516663080000, 0.07000022, 0.07000022, 0.07000022, 0.07000022, 0.25], [1516663140000, 0.07026114, 0.070529, 0.07026114, 0.070529, 0.65405069], [1516663200000, 0.07053298, 0.07095381, 0.07053298, 0.07095381, 0.80436842], [1516663260000, 0.07091196, 0.07091196, 0.07088793, 0.07088793, 0.10720788], [1516663320000, 0.07088778, 0.07088778, 0.07088778, 0.07088778, 0.42973794], [1516663500000, 0.0706, 0.0706, 0.0706, 0.0706, 0.03], [1516663560000, 0.07018033, 0.07018033, 0.07018033, 0.07018033, 0.0631601], [1516663620000, 0.07058998, 0.07058998, 0.07018033, 0.07049996, 1.51315926], [1516663680000, 0.07049996, 0.07049996, 0.07049996, 0.07049996, 7.61487306], [1516663740000, 0.07049996, 0.07049996, 0.07049996, 0.07049996, 0.97167125], [1516663800000, 0.07018033, 0.07018033, 0.07018033, 0.07018033, 0.1428], [1516663860000, 0.07018033, 0.07018033, 0.06987006, 0.06987006, 0.42496608], [1516663920000, 0.0698701, 0.0698701, 0.06987006, 0.06987006, 5.0], [1516663980000, 0.07049994, 0.07049999, 0.06987006, 0.07049999, 0.37954034], [1516664100000, 0.07049994, 0.07049994, 0.07049993, 0.07049994, 0.23266617], [1516664160000, 0.06987008, 0.06987008, 0.06987008, 0.06987008, 0.5], [1516664220000, 0.0698701, 0.0698701, 0.06987006, 0.06987006, 3.0], [1516664280000, 0.07033973, 0.07049, 0.07033973, 0.07049, 0.10130299], [1516664340000, 0.07033973, 0.07033973, 0.07033973, 0.07033973, 3.34534786], [1516664400000, 0.07033973, 0.07034973, 0.07033973, 0.07033973, 0.75114968], [1516664460000, 0.07033973, 0.070488, 0.06987006, 0.070488, 2.8989281], [1516664520000, 0.07003436, 0.07033959, 0.06987006, 0.07033959, 2.32298753], [1516664580000, 0.07003436, 0.07003436, 0.07003436, 0.07003436, 0.10653334], [1516664640000, 0.07003436, 0.07003436, 0.06987006, 0.06987006, 3.22589328], [1516664700000, 0.06987006, 0.07033958, 0.06987006, 0.06987007, 0.46580498], [1516664760000, 0.06987006, 0.06987006, 0.06987006, 0.06987006, 0.15], [1516664880000, 0.0700659, 0.0700659, 0.0700659, 0.0700659, 0.01577939], [1516664940000, 0.0700659, 0.07033959, 0.0700659, 0.07033959, 0.23981271], [1516665000000, 0.07033959, 0.07048407, 0.06987007, 0.07030054, 2.57969188], [1516665060000, 0.07030054, 0.07030054, 0.07030054, 0.07030054, 0.0494427], [1516665120000, 0.07030054, 0.07030054, 0.07030054, 0.07030054, 0.95294104], [1516665180000, 0.07030055, 0.07030055, 0.06987006, 0.06987006, 6.75197363], [1516665240000, 0.07030055, 0.07030055, 0.06987006, 0.06987006, 7.45643488], [1516665360000, 0.07030054, 0.0705, 0.06988008, 0.06988008, 3.80934744], [1516665420000, 0.06988008, 0.06988008, 0.06988, 0.06988, 2.40256108], [1516665480000, 0.06988008, 0.06988008, 0.06988008, 0.06988008, 2.09114442], [1516665540000, 0.06988019, 0.06988019, 0.06988019, 0.06988019, 0.50850456], [1516665600000, 0.07049967, 0.07049975, 0.06988011, 0.06988011, 0.73146237], [1516665660000, 0.07049974, 0.07049974, 0.07049899, 0.070499, 0.70922708], [1516665720000, 0.070498, 0.070498, 0.070498, 0.070498, 0.01702175], [1516665780000, 0.070498, 0.07056799, 0.070498, 0.07056798, 1.98228955], [1516665840000, 0.07056798, 0.07056798, 0.06989, 0.06989, 0.26643262], [1516665900000, 0.07056799, 0.07058, 0.07056799, 0.07058, 0.52949707], [1516665960000, 0.07058, 0.07058, 0.07058, 0.07058, 1.37751063], [1516666020000, 0.07058, 0.07058, 0.06989155, 0.06993517, 0.88991096], [1516666140000, 0.07058, 0.07058001, 0.07058, 0.07058001, 0.08132331], [1516666200000, 0.06990007, 0.0706, 0.06990007, 0.0706, 1.77365633], [1516666260000, 0.0706, 0.0707, 0.06990086, 0.0707, 2.38915699], [1516666320000, 0.07069999, 0.07069999, 0.07069999, 0.07069999, 0.23253624], [1516666380000, 0.07069999, 0.0708, 0.06990198, 0.06990198, 0.60395558], [1516666440000, 0.07078714, 0.07100185, 0.07006201, 0.07099999, 6.80302219], [1516666500000, 0.07099999, 0.07107569, 0.07017301, 0.07107569, 1.38934406], [1516666560000, 0.07100662, 0.07130109, 0.07100656, 0.07130109, 1.8273833], [1516666620000, 0.07130109, 0.07130109, 0.07130109, 0.07130109, 0.01552686], [1516666680000, 0.07100662, 0.07147706, 0.07100662, 0.0714, 2.45506703], [1516666740000, 0.0714, 0.07149448, 0.0714, 0.07149448, 1.38177823], [1516666800000, 0.07149448, 0.0714945, 0.0714, 0.0714, 12.45734801], [1516666860000, 0.07149448, 0.07149448, 0.07149448, 0.07149448, 2.99219326], [1516666920000, 0.07149419, 0.0714945, 0.0714, 0.0714945, 21.89230698], [1516666980000, 0.0714945, 0.072192, 0.07140002, 0.07152359, 163.82944315], [1516667040000, 0.07152359, 0.0719609, 0.07101753, 0.07175707, 54.94390094], [1516667100000, 0.07175707, 0.07175707, 0.07140009, 0.07175705, 2.59327998], [1516667160000, 0.0714001, 0.07175707, 0.0714001, 0.07175706, 14.45471689], [1516667220000, 0.07175706, 0.072192, 0.07175706, 0.0719, 10.97024728], [1516667280000, 0.0719, 0.07219189, 0.0719, 0.0719, 4.16021282], [1516667340000, 0.0719, 0.0719, 0.0719, 0.0719, 6.45164635], [1516667400000, 0.07218999, 0.07219199, 0.07140009, 0.07140031, 23.78343286], [1516667460000, 0.07140039, 0.07140061, 0.07140039, 0.07140061, 1.34990918], [1516667520000, 0.07140071, 0.07140074, 0.07140071, 0.07140073, 0.2606488], [1516667580000, 0.07140075, 0.07140075, 0.07140073, 0.07140073, 0.19026044], [1516667640000, 0.0719999, 0.0719999, 0.0719995, 0.0719995, 2.36092268], [1516667700000, 0.07199912, 0.07199912, 0.07122642, 0.07199911, 6.61897559], [1516667760000, 0.07199886, 0.07199911, 0.07122655, 0.07123932, 28.70494559], [1516667820000, 0.07122663, 0.07192821, 0.07104566, 0.07131833, 7.28227856], [1516667880000, 0.07131834, 0.07199857, 0.07131834, 0.07199826, 2.41472678], [1516667940000, 0.07199817, 0.07199817, 0.07192635, 0.07192636, 0.65592889], [1516668000000, 0.07192636, 0.07199753, 0.07192636, 0.07192636, 0.32087269], [1516668060000, 0.07192626, 0.07199751, 0.07156673, 0.07199751, 1.49522544], [1516668120000, 0.071997, 0.071997, 0.07132021, 0.07199667, 3.72918292], [1516668180000, 0.07199649, 0.07199649, 0.07199649, 0.07199649, 0.063892], [1516668240000, 0.07199639, 0.07199647, 0.07199639, 0.07199647, 0.69009041], [1516668300000, 0.07199621, 0.07199621, 0.07199621, 0.07199621, 0.06604905], [1516668360000, 0.07199612, 0.07221637, 0.07163651, 0.07219168, 46.80357306], [1516668420000, 0.07158996, 0.07211949, 0.07158996, 0.0721194, 1.12066051], [1516668480000, 0.07211948, 0.0722575, 0.0721194, 0.0721194, 4.14555917], [1516668540000, 0.07189621, 0.0721194, 0.07189621, 0.07189621, 3.93997546], [1516668600000, 0.07189621, 0.07225742, 0.07189621, 0.07225742, 1.4416119], [1516668660000, 0.07225742, 0.07225742, 0.0717588, 0.0717588, 5.58256387], [1516668720000, 0.07211932, 0.07211932, 0.07131878, 0.07211923, 1.62139339], [1516668780000, 0.07211915, 0.07211915, 0.07131915, 0.07211915, 0.58135618], [1516668840000, 0.07175855, 0.07211907, 0.07175855, 0.07211907, 1.12271621], [1516668900000, 0.07211915, 0.0721194, 0.07211907, 0.07211932, 2.72425403], [1516668960000, 0.07211916, 0.07211916, 0.07211916, 0.07211916, 0.68283555], [1516669020000, 0.07211907, 0.07211907, 0.07211907, 0.07211907, 1.0729157], [1516669080000, 0.07211907, 0.07211907, 0.07211906, 0.07211906, 0.50617466], [1516669140000, 0.07140028, 0.07211905, 0.07140027, 0.07175846, 1.39818585], [1516669200000, 0.07175846, 0.07175846, 0.07131832, 0.07159002, 0.97169247], [1516669260000, 0.07140028, 0.07159014, 0.07140028, 0.07159014, 2.71112477], [1516669320000, 0.07159006, 0.07159006, 0.0710833, 0.0710833, 1.06404007], [1516669380000, 0.07138729, 0.07159014, 0.07104014, 0.07159014, 0.87963782], [1516669440000, 0.07138729, 0.07138729, 0.07138729, 0.07138729, 0.11765019], [1516669500000, 0.07138729, 0.07138729, 0.07138729, 0.07138729, 0.63420999], [1516669560000, 0.07138729, 0.07138729, 0.07138729, 0.07138729, 0.10508424], [1516669620000, 0.07138729, 0.07138729, 0.07138729, 0.07138729, 0.15969982], [1516669680000, 0.07138729, 0.07138729, 0.0711606, 0.0711606, 0.29131584], [1516669740000, 0.07138729, 0.07138729, 0.0711606, 0.0713159, 0.21250282], [1516669800000, 0.0713159, 0.07138729, 0.07104033, 0.07104033, 0.35264435], [1516669860000, 0.07159013, 0.07159013, 0.07159013, 0.07159013, 0.05851023], [1516669920000, 0.07159013, 0.07159013, 0.0715901, 0.07159013, 0.07854096], [1516669980000, 0.07159013, 0.07159014, 0.07159013, 0.07159014, 0.20836258], [1516670040000, 0.07159014, 0.07209598, 0.07159014, 0.0717355, 2.38209539], [1516670100000, 0.07173549, 0.07206313, 0.07173549, 0.07173549, 0.13862191], [1516670160000, 0.07206312, 0.07206313, 0.07134251, 0.07134251, 4.59543297], [1516670220000, 0.0714425, 0.0714425, 0.0714425, 0.0714425, 0.12198068], [1516670280000, 0.07144257, 0.07206309, 0.07144257, 0.07206309, 0.6315628], [1516670340000, 0.07206309, 0.0722773, 0.07204728, 0.07204728, 27.26921365], [1516670400000, 0.07204728, 0.07231, 0.07191591, 0.07229996, 1.29784941], [1516670460000, 0.07229994, 0.07229994, 0.07229993, 0.07229993, 0.99276027], [1516670520000, 0.07229993, 0.07229993, 0.07134411, 0.07138122, 1.51577947], [1516670580000, 0.07138126, 0.07138152, 0.07138126, 0.07138152, 1.41655504], [1516670640000, 0.072166, 0.0722999, 0.072166, 0.0722999, 1.28962031], [1516670700000, 0.07140395, 0.07140396, 0.07140395, 0.07140395, 0.28367224], [1516670760000, 0.07228999, 0.07228999, 0.07228999, 0.07228999, 0.5559584], [1516670820000, 0.072284, 0.072284, 0.072284, 0.072284, 0.003458], [1516670880000, 0.07147022, 0.072166, 0.07147022, 0.072166, 1.41965987], [1516670940000, 0.072166, 0.07228368, 0.072166, 0.07228356, 0.77284735], [1516671000000, 0.07147227, 0.07147227, 0.07147227, 0.07147227, 0.01355829], [1516671180000, 0.07228326, 0.07228326, 0.0722832, 0.0722832, 0.18838612], [1516671240000, 0.07148565, 0.07228305, 0.07148565, 0.07228296, 2.94520273], [1516671300000, 0.07188447, 0.0722828, 0.07188447, 0.0722828, 0.13911204], [1516671420000, 0.07228237, 0.07228237, 0.07153218, 0.07228235, 0.78441776], [1516671480000, 0.072282, 0.0722828, 0.07192065, 0.07192065, 11.16353697], [1516671540000, 0.0715322, 0.07228279, 0.07148552, 0.071505, 4.54435876], [1516671600000, 0.07192065, 0.07192065, 0.07147284, 0.07192065, 4.70776434], [1516671660000, 0.07190999, 0.07191, 0.07190999, 0.07191, 0.70918424], [1516671720000, 0.07190999, 0.07191, 0.07190999, 0.07191, 0.1384], [1516671780000, 0.07191, 0.07191, 0.07191, 0.07191, 0.01041447], [1516671840000, 0.07147285, 0.07147285, 0.07147285, 0.07147285, 0.01031141], [1516671900000, 0.07147284, 0.07191, 0.0714045, 0.07150001, 5.02492289], [1516671960000, 0.07151015, 0.0719206, 0.07151015, 0.0719206, 0.41250065], [1516672020000, 0.07192065, 0.07216465, 0.0719206, 0.0719206, 0.60107645], [1516672080000, 0.07191, 0.07191, 0.07191, 0.07191, 0.01682849], [1516672140000, 0.0719206, 0.0719206, 0.07191, 0.07191001, 2.19495986], [1516672200000, 0.0719206, 0.07228265, 0.0719206, 0.07228265, 0.31714852], [1516672260000, 0.07228264, 0.07228265, 0.07200004, 0.07228265, 1.28018103], [1516672320000, 0.07228265, 0.07228265, 0.07200008, 0.07228265, 0.17453571], [1516672380000, 0.07228265, 0.07228265, 0.07228265, 0.07228265, 0.0037191], [1516672440000, 0.07228265, 0.07228265, 0.07228265, 0.07228265, 0.04914915], [1516672500000, 0.0722827, 0.0722828, 0.07200008, 0.07200008, 3.85124697], [1516672560000, 0.07200007, 0.07200007, 0.07200007, 0.07200007, 0.04412286], [1516672620000, 0.07228278, 0.07228278, 0.07228278, 0.07228278, 0.11152931], [1516672680000, 0.07200007, 0.07200007, 0.072, 0.072, 0.44151374], [1516672740000, 0.07200001, 0.07210004, 0.07200001, 0.07210004, 1.46020251], [1516672800000, 0.07210003, 0.07210004, 0.07210003, 0.07210004, 1.42703362], [1516672860000, 0.072, 0.072, 0.071625, 0.07199999, 10.72082218], [1516672920000, 0.07164502, 0.07199999, 0.07164502, 0.07199991, 4.57011346], [1516672980000, 0.0719999, 0.0719999, 0.07164502, 0.07182246, 2.18789723], [1516673040000, 0.07182246, 0.07199997, 0.07164502, 0.07199997, 1.54082411], [1516673100000, 0.07199997, 0.07199997, 0.07164502, 0.07199997, 0.69953037], [1516673160000, 0.07199997, 0.07199997, 0.07164506, 0.07164513, 18.57796832], [1516673220000, 0.07164513, 0.07164513, 0.07164502, 0.07164502, 3.91268807], [1516673280000, 0.07164513, 0.07164513, 0.07138122, 0.07159002, 5.56629314], [1516673340000, 0.07199994, 0.07199994, 0.07159, 0.07159001, 0.66176615], [1516673400000, 0.07159001, 0.07159001, 0.0713813, 0.07159, 1.2915804], [1516673460000, 0.07159, 0.07159, 0.0713813, 0.0713813, 0.46814254], [1516673520000, 0.07158997, 0.07158999, 0.07158997, 0.07158997, 1.31949757], [1516673580000, 0.07158997, 0.07158998, 0.07158997, 0.07158998, 0.41779534], [1516673640000, 0.07158998, 0.07159002, 0.07138131, 0.07159002, 0.23562345], [1516673760000, 0.07159002, 0.07159002, 0.07159002, 0.07159002, 0.0308006], [1516673820000, 0.07159001, 0.07159001, 0.07158998, 0.07158998, 0.41001643], [1516673880000, 0.07159, 0.07159002, 0.07138158, 0.07159001, 2.42731251], [1516673940000, 0.07159001, 0.07199992, 0.07159001, 0.07159009, 0.954455], [1516674000000, 0.07199992, 0.07199999, 0.07199992, 0.07199999, 0.48836813], [1516674060000, 0.07199999, 0.07199999, 0.07199999, 0.07199999, 0.03062522], [1516674120000, 0.07199995, 0.07199995, 0.07199992, 0.07199994, 0.74064986], [1516674180000, 0.07199994, 0.07199995, 0.07199993, 0.07199993, 0.03062526], [1516674240000, 0.07199993, 0.07199995, 0.07199993, 0.07199995, 10.98082361], [1516674300000, 0.07199994, 0.07199994, 0.07199992, 0.07199992, 0.09643937], [1516674360000, 0.07199992, 0.07199992, 0.07199992, 0.07199992, 0.07439874], [1516674420000, 0.07199992, 0.07199995, 0.07159028, 0.07199995, 1.04188528], [1516674480000, 0.07199995, 0.07199995, 0.07199995, 0.07199995, 0.01619958], [1516674540000, 0.07159059, 0.07159059, 0.07159059, 0.07159059, 1.922], [1516674600000, 0.07199995, 0.07199995, 0.07199995, 0.07199995, 0.13888888], [1516674660000, 0.07199995, 0.07199995, 0.07199995, 0.07199995, 0.10130299], [1516674720000, 0.07199995, 0.07199995, 0.07199994, 0.07199994, 0.20808031], [1516674780000, 0.07199994, 0.07199995, 0.07199994, 0.07199995, 0.90588348], [1516674840000, 0.07199995, 0.07199999, 0.07199995, 0.07199999, 0.24560394], [1516674900000, 0.072, 0.07229989, 0.072, 0.07229989, 0.77013622], [1516674960000, 0.072, 0.07234, 0.072, 0.072, 3.03506755], [1516675020000, 0.07175, 0.07175, 0.07175, 0.07175, 0.1932], [1516675080000, 0.07175, 0.07175, 0.07159059, 0.07159059, 0.1901967], [1516675140000, 0.07159059, 0.07159059, 0.07159059, 0.07159059, 0.07111043], [1516675200000, 0.072, 0.072, 0.072, 0.072, 0.13888888], [1516675260000, 0.072, 0.072, 0.072, 0.072, 0.75288432], [1516675320000, 0.072, 0.072, 0.072, 0.072, 0.15111058], [1516675380000, 0.07199999, 0.072, 0.07199999, 0.07199999, 0.15654758], [1516675440000, 0.07199999, 0.07199999, 0.07199999, 0.07199999, 0.09443983], [1516675560000, 0.07159059, 0.07159059, 0.07159059, 0.07159059, 0.15037211], [1516675620000, 0.0715906, 0.0715906, 0.07138694, 0.07138778, 0.35999013], [1516675680000, 0.07138876, 0.07139036, 0.07138876, 0.07139036, 0.80818413], [1516675740000, 0.07199976, 0.07199976, 0.07199976, 0.07199976, 0.07553171], [1516675800000, 0.07199992, 0.07199992, 0.07199992, 0.07199992, 0.13888908], [1516675860000, 0.07199992, 0.072, 0.07199992, 0.072, 0.09555784], [1516675920000, 0.07139779, 0.07139779, 0.07139779, 0.07139779, 0.79690578], [1516676100000, 0.07140517, 0.072, 0.07140517, 0.07199999, 0.31931753], [1516676220000, 0.07141004, 0.072, 0.07141004, 0.072, 0.21534957], [1516676280000, 0.07199999, 0.072, 0.07199999, 0.072, 5.0], [1516676580000, 0.07199994, 0.07199994, 0.07199994, 0.07199994, 0.02793405], [1516676640000, 0.07199994, 0.07199994, 0.07199994, 0.07199994, 0.17011021], [1516676700000, 0.07199999, 0.07199999, 0.07199999, 0.07199999, 0.06165094], [1516676760000, 0.07145091, 0.07217333, 0.07145084, 0.07217333, 3.51013191], [1516676880000, 0.072, 0.072, 0.072, 0.072, 0.06687676], [1516676940000, 0.072, 0.072, 0.072, 0.072, 0.14376259], [1516677000000, 0.072, 0.072, 0.072, 0.072, 0.0135], [1516677060000, 0.072, 0.072, 0.072, 0.072, 0.07457721], [1516677120000, 0.072, 0.072, 0.07145296, 0.07145296, 3.40400472], [1516677180000, 0.07145299, 0.07145302, 0.07145299, 0.07145302, 0.61945979], [1516677240000, 0.07179992, 0.07179992, 0.07179992, 0.07179992, 4.4364], [1516677300000, 0.07179992, 0.0721, 0.07145368, 0.0721, 4.08112463], [1516677360000, 0.07145423, 0.07145423, 0.07145423, 0.07145423, 0.67105652], [1516677600000, 0.07189742, 0.07217334, 0.07189742, 0.07217334, 0.69437202], [1516677720000, 0.07217308, 0.07217308, 0.07217308, 0.07217308, 0.08651087], [1516677780000, 0.07145768, 0.07145768, 0.07145768, 0.07145768, 2.234], [1516677900000, 0.07217275, 0.07217334, 0.07145874, 0.0714592, 1.54387708], [1516677960000, 0.07145945, 0.07145972, 0.07145945, 0.07145971, 14.84268227], [1516678020000, 0.07217289, 0.07217289, 0.07145984, 0.07145987, 0.59570093], [1516678080000, 0.07217251, 0.07217251, 0.07217251, 0.07217251, 0.00901423], [1516678140000, 0.07145995, 0.07217215, 0.07145995, 0.07146002, 20.73046741], [1516678200000, 0.07146024, 0.07217151, 0.07146024, 0.07217141, 0.50429673], [1516678260000, 0.07146036, 0.07146036, 0.07146036, 0.07146036, 0.01046546], [1516678320000, 0.07146059, 0.07146059, 0.07146059, 0.07146059, 0.49394669], [1516678380000, 0.07146065, 0.07146065, 0.07146065, 0.07146065, 0.18921442], [1516678440000, 0.07216986, 0.07216986, 0.07146094, 0.07216958, 1.22042714], [1516678500000, 0.07216938, 0.07216938, 0.07216921, 0.07216921, 0.48497039], [1516678560000, 0.0721692, 0.0721692, 0.07150016, 0.07150016, 2.10048703], [1516678620000, 0.07150032, 0.07150044, 0.07150032, 0.07150044, 1.33191829], [1516678800000, 0.07216757, 0.07216757, 0.07216757, 0.07216757, 0.27713266], [1516678860000, 0.07216734, 0.0721675, 0.07216734, 0.0721675, 0.15354362], [1516678920000, 0.07216705, 0.07216705, 0.07216705, 0.07216705, 0.04046084], [1516678980000, 0.07150375, 0.07150386, 0.07150375, 0.07150386, 6.1], [1516679040000, 0.07150398, 0.07216587, 0.07150398, 0.07216586, 9.90420923], [1516679100000, 0.07216582, 0.07217334, 0.07150412, 0.07217326, 6.73466222], [1516679160000, 0.07217334, 0.0722, 0.07181247, 0.07181247, 13.53706816], [1516679220000, 0.07150465, 0.0715049, 0.07150465, 0.0715049, 11.53238945], [1516679280000, 0.07150573, 0.07150573, 0.07150573, 0.07150573, 0.90068286], [1516679340000, 0.07183935, 0.07183935, 0.07183935, 0.07183935, 0.03643511], [1516679400000, 0.07183935, 0.07233852, 0.07150669, 0.07233844, 0.56356134], [1516679520000, 0.07150769, 0.07150769, 0.07150769, 0.07150769, 0.02518798], [1516679580000, 0.07233717, 0.07233717, 0.07233717, 0.07233717, 0.06672946], [1516679640000, 0.07175, 0.07175, 0.07175, 0.07175, 0.213783], [1516679700000, 0.07175, 0.07233998, 0.07150893, 0.07175, 55.37564337], [1516679760000, 0.07150913, 0.07175, 0.07150913, 0.07175, 0.47270221], [1516679820000, 0.07233953, 0.07233953, 0.07233953, 0.07233953, 0.01485801], [1516679880000, 0.07204373, 0.07233953, 0.07204373, 0.07233953, 4.19353772], [1516679940000, 0.07229945, 0.07229945, 0.07151135, 0.07229909, 1.74927587], [1516680000000, 0.072299, 0.072299, 0.07229891, 0.07229891, 0.38085538], [1516680060000, 0.0715452, 0.07229859, 0.0715452, 0.07229849, 12.18094822], [1516680120000, 0.07229832, 0.07229832, 0.07229822, 0.07229822, 0.058153], [1516680180000, 0.07154589, 0.07154608, 0.07154589, 0.07154607, 0.66551249], [1516680300000, 0.07154828, 0.07229704, 0.07154828, 0.07229696, 1.24615644], [1516680360000, 0.07229695, 0.07229859, 0.07229695, 0.07229859, 1.37956514], [1516680480000, 0.07229765, 0.07229765, 0.07154998, 0.07154998, 3.89928029], [1516680720000, 0.071551, 0.071551, 0.07155064, 0.07155064, 1.39044854], [1516680900000, 0.07229405, 0.07229405, 0.07229405, 0.07229405, 0.13832387], [1516681140000, 0.07192111, 0.07229182, 0.0715459, 0.0715459, 6.86439085], [1516681200000, 0.07229081, 0.07229081, 0.07229081, 0.07229081, 0.01036834], [1516681260000, 0.07154594, 0.07154596, 0.07154594, 0.07154596, 11.20650521], [1516681320000, 0.07154601, 0.07154601, 0.07154601, 0.07154601, 0.1233076], [1516681380000, 0.07154601, 0.07154601, 0.07154596, 0.07154596, 1.11439221], [1516681440000, 0.07154597, 0.07154599, 0.07154597, 0.07154599, 0.61884147], [1516681500000, 0.07154599, 0.07210542, 0.07154598, 0.07154598, 0.53804349], [1516681560000, 0.07154598, 0.07210542, 0.07154598, 0.07154598, 1.51088514], [1516681620000, 0.07154598, 0.07210542, 0.07154598, 0.07154598, 1.12500405], [1516681680000, 0.07154598, 0.07154598, 0.07154598, 0.07154598, 0.50003178], [1516681740000, 0.07154596, 0.07154596, 0.07154596, 0.07154596, 0.12571389], [1516681800000, 0.07210542, 0.07227642, 0.07210542, 0.07227642, 0.15943673], [1516681860000, 0.07227631, 0.07227631, 0.07154612, 0.07154612, 2.21526738], [1516681920000, 0.07154597, 0.07154597, 0.07154596, 0.07154596, 0.02125656], [1516681980000, 0.072, 0.072, 0.072, 0.072, 0.02202765], [1516682040000, 0.07177298, 0.072, 0.07177298, 0.072, 0.06895517], [1516682100000, 0.072, 0.072, 0.072, 0.072, 0.41666664], [1516682160000, 0.07154601, 0.072, 0.07154601, 0.072, 0.02029738], [1516682220000, 0.07154615, 0.07154615, 0.07154615, 0.07154615, 0.53], [1516682280000, 0.07154616, 0.07154635, 0.07154616, 0.07154635, 0.04226739], [1516682400000, 0.07154649, 0.07164643, 0.07154649, 0.07154651, 0.41799381], [1516682460000, 0.072, 0.072, 0.072, 0.072, 0.01554599], [1516682580000, 0.072, 0.072, 0.072, 0.072, 0.02034506], [1516682640000, 0.072, 0.07225574, 0.07164645, 0.07164645, 0.59020348], [1516682700000, 0.07225504, 0.07225504, 0.07225504, 0.07225504, 0.41519559], [1516683060000, 0.07170951, 0.07170951, 0.07170951, 0.07170951, 0.08959128], [1516683180000, 0.072243, 0.072243, 0.07224297, 0.07224297, 0.05995017], [1516683300000, 0.07221247, 0.07221247, 0.07221247, 0.07221247, 0.32405513], [1516683420000, 0.07172686, 0.07172686, 0.07172686, 0.07172686, 0.14184979], [1516683600000, 0.07172786, 0.07219529, 0.07172786, 0.07219529, 0.38863433], [1516683660000, 0.07172786, 0.07219529, 0.07172786, 0.07219529, 0.05044996], [1516683720000, 0.07219528, 0.07219529, 0.07219528, 0.07219529, 0.17444036], [1516683780000, 0.07180765, 0.07180765, 0.07180765, 0.07180765, 0.01535352], [1516683840000, 0.07180765, 0.07180765, 0.07180765, 0.07180765, 0.03070704], [1516683900000, 0.07180765, 0.07219013, 0.07180765, 0.07180765, 0.72332274], [1516683960000, 0.07180765, 0.07180765, 0.07180765, 0.07180765, 0.01559883], [1516684020000, 0.07219012, 0.07227844, 0.07219012, 0.07227844, 6.92746539], [1516684080000, 0.07227845, 0.07234, 0.07227845, 0.07233992, 13.46175912], [1516684140000, 0.07234, 0.07234, 0.07180796, 0.07180796, 0.06448625], [1516684200000, 0.0719, 0.0723, 0.07180792, 0.0723, 18.72824433], [1516684320000, 0.07180809, 0.0723, 0.07180809, 0.0723, 5.20417876], [1516684440000, 0.07188121, 0.07188121, 0.07188121, 0.07188121, 0.02763357], [1516684500000, 0.07188121, 0.07228997, 0.07164645, 0.07164647, 25.26277555], [1516684560000, 0.07164647, 0.07219979, 0.07164645, 0.07164745, 0.47668339], [1516684620000, 0.07164745, 0.07164745, 0.07164745, 0.07164745, 0.2422382], [1516684680000, 0.07219921, 0.07219921, 0.07164745, 0.07164745, 0.81261006], [1516684740000, 0.07219878, 0.07219878, 0.07219878, 0.07219878, 0.2449612], [1516684800000, 0.07219847, 0.07219847, 0.07164745, 0.07164745, 3.84500673], [1516684860000, 0.07217382, 0.07217382, 0.07164745, 0.07164745, 0.0610519], [1516684920000, 0.07164745, 0.07164745, 0.07164745, 0.07164745, 0.0188197], [1516685040000, 0.0721528, 0.0721528, 0.0721528, 0.0721528, 0.43902428], [1516685100000, 0.0721528, 0.0721528, 0.0721528, 0.0721528, 0.46440068], [1516685220000, 0.07164646, 0.07164646, 0.07164646, 0.07164646, 1.16185033], [1516685280000, 0.07164646, 0.07164646, 0.07164646, 0.07164646, 1.44079478], [1516685340000, 0.07215194, 0.07215194, 0.07215194, 0.07215194, 0.12168703], [1516685400000, 0.07164646, 0.07215167, 0.07164646, 0.07215167, 3.09355908], [1516685460000, 0.07164645, 0.07164645, 0.07164645, 0.07164645, 0.40408864], [1516685520000, 0.07215161, 0.07215161, 0.07215159, 0.07215159, 0.02732048], [1516685580000, 0.07215149, 0.07215149, 0.07215149, 0.07215149, 0.02336624], [1516685640000, 0.07215142, 0.07215142, 0.07215142, 0.07215142, 0.02336628], [1516685700000, 0.07215122, 0.07215122, 0.07215117, 0.07215117, 0.44926668], [1516685760000, 0.07164645, 0.07215128, 0.07164645, 0.07164645, 3.94397233], [1516685820000, 0.07164645, 0.07164645, 0.07164645, 0.07164645, 0.26766755], [1516685880000, 0.07164645, 0.07215025, 0.07164645, 0.07215025, 0.09677345], [1516686000000, 0.0721495, 0.07214951, 0.07141674, 0.07141674, 2.3872018], [1516686060000, 0.07141674, 0.07141674, 0.07141674, 0.07141674, 0.93866894], [1516686120000, 0.07141674, 0.07214848, 0.07134415, 0.07214848, 0.30486306], [1516686180000, 0.07214824, 0.07214825, 0.07214824, 0.07214825, 0.69128275], [1516686240000, 0.07214798, 0.07214798, 0.07214798, 0.07214798, 0.01079257], [1516686300000, 0.07214739, 0.0721474, 0.07214739, 0.0721474, 0.96642655], [1516686360000, 0.07134611, 0.07134611, 0.07134611, 0.07134611, 0.01062348], [1516686420000, 0.07144697, 0.072146, 0.07144697, 0.07214583, 5.58726261], [1516686600000, 0.07144726, 0.07144726, 0.07144726, 0.07144726, 1.38314362], [1516686660000, 0.07199996, 0.07199996, 0.07199993, 0.07199993, 0.04484223], [1516686780000, 0.0718, 0.0718, 0.0718, 0.0718, 0.61163873], [1516686840000, 0.0718, 0.0718, 0.0718, 0.0718, 0.04999675], [1516686900000, 0.07164745, 0.0718, 0.07164728, 0.07164728, 2.12201616], [1516686960000, 0.0718, 0.0718, 0.0718, 0.0718, 0.10913011], [1516687020000, 0.07164728, 0.07164728, 0.07144805, 0.07144805, 1.5259], [1516687080000, 0.07144811, 0.07144811, 0.07144811, 0.07144811, 1.75], [1516687200000, 0.07144808, 0.07144808, 0.07144808, 0.07144808, 0.60426171], [1516687260000, 0.07144808, 0.07144808, 0.07144696, 0.07144697, 1.30673411], [1516687320000, 0.07144697, 0.0717236, 0.07144697, 0.0717, 14.31020035], [1516687380000, 0.0717, 0.0718, 0.07144808, 0.0718, 3.6881604], [1516687440000, 0.07179998, 0.07179999, 0.07179998, 0.07179999, 0.39911052], [1516687500000, 0.07179999, 0.07179999, 0.07179997, 0.07179997, 0.73894012], [1516687560000, 0.07144808, 0.07144808, 0.07134412, 0.07134412, 0.20525371], [1516687620000, 0.0713441, 0.07179996, 0.0713441, 0.07179996, 0.20806749], [1516687740000, 0.07123675, 0.07123675, 0.07123675, 0.07123675, 0.01999987], [1516687800000, 0.071798, 0.071798, 0.07108992, 0.07108992, 0.15278971], [1516687860000, 0.07179399, 0.07179399, 0.07179399, 0.07179399, 0.01392874], [1516687980000, 0.07108992, 0.07149997, 0.07108992, 0.07149997, 0.58563164], [1516688100000, 0.07108992, 0.0712949, 0.071, 0.0710558, 20.89004937], [1516688160000, 0.071, 0.0712949, 0.07080296, 0.07104983, 5.58784275], [1516688220000, 0.07104983, 0.071253, 0.07080296, 0.071192, 2.5825587], [1516688280000, 0.071211, 0.07121199, 0.071211, 0.07121199, 0.08425565], [1516688340000, 0.071232, 0.071232, 0.07092716, 0.07092716, 0.02536481], [1516688400000, 0.071232, 0.071232, 0.07092716, 0.07123199, 0.50346725], [1516688460000, 0.07123196, 0.07123196, 0.07123196, 0.07123196, 0.25998566], [1516688580000, 0.07092714, 0.07123187, 0.07092714, 0.07123187, 0.02504802], [1516688640000, 0.07123185, 0.07123185, 0.0708, 0.0708, 0.20186135], [1516688700000, 0.07092714, 0.07092714, 0.07092714, 0.07092714, 0.33243517], [1516688760000, 0.0709271, 0.0709271, 0.0709271, 0.0709271, 0.29607847], [1516688820000, 0.0709271, 0.0709271, 0.0708, 0.0708, 4.23910405], [1516688880000, 0.07092714, 0.07092714, 0.07092714, 0.07092714, 0.421], [1516688940000, 0.07092714, 0.07092714, 0.07092714, 0.07092714, 0.93959018], [1516689000000, 0.0708, 0.07092714, 0.0708, 0.07092714, 1.57449517], [1516689120000, 0.07092714, 0.07092714, 0.07092714, 0.07092714, 0.03687295], [1516689180000, 0.0709271, 0.0709271, 0.0709271, 0.0709271, 0.13003901], [1516689240000, 0.07092714, 0.07092714, 0.0709271, 0.0709271, 5.05348709], [1516689300000, 0.0709271, 0.0709271, 0.0709271, 0.0709271, 0.70482707], [1516689360000, 0.0709271, 0.0709271, 0.0709271, 0.0709271, 0.19542581], [1516689420000, 0.0709271, 0.0709271, 0.0709271, 0.0709271, 0.01545646], [1516689480000, 0.0709271, 0.07123184, 0.0709271, 0.07123184, 59.26653206], [1516689600000, 0.07123184, 0.07123184, 0.0709271, 0.0709271, 0.8422534], [1516689780000, 0.0709271, 0.0715, 0.0709271, 0.071331, 21.04308881], [1516689840000, 0.071331, 0.07146307, 0.07092716, 0.07146307, 0.03820007], [1516689900000, 0.07145058, 0.07145058, 0.0714493, 0.0714493, 0.16790786], [1516689960000, 0.0709271, 0.07145886, 0.0709271, 0.0709271, 0.42896705], [1516690020000, 0.07105123, 0.07145037, 0.07105123, 0.07145037, 0.34278257], [1516690080000, 0.07144016, 0.07144016, 0.07144016, 0.07144016, 0.08377641], [1516690200000, 0.07140716, 0.07144017, 0.07140716, 0.07144017, 0.37939144], [1516690320000, 0.07107595, 0.07107595, 0.07092712, 0.07092716, 3.20678324], [1516690380000, 0.07135709, 0.07135709, 0.07092716, 0.07092716, 0.13611094], [1516690500000, 0.07124375, 0.07124375, 0.07124375, 0.07124375, 0.28077978], [1516690560000, 0.07092717, 0.07092717, 0.07092717, 0.07092717, 0.14643501], [1516690620000, 0.07113959, 0.07114149, 0.0707, 0.0707, 38.19542909], [1516690680000, 0.07091564, 0.07099162, 0.0707, 0.07099162, 1.65414946], [1516690740000, 0.07091564, 0.07091564, 0.0705, 0.0705, 0.49982863], [1516690800000, 0.07103301, 0.07104106, 0.07102217, 0.07102217, 3.64044061], [1516690860000, 0.07073808, 0.07073808, 0.07070001, 0.07070001, 0.09059765], [1516690920000, 0.07073808, 0.07073808, 0.0707, 0.07073807, 1.20909689], [1516690980000, 0.0707, 0.0707, 0.0705, 0.0705, 0.50696194], [1516691040000, 0.07069, 0.07069, 0.07068999, 0.07068999, 1.29609678], [1516691100000, 0.0705, 0.0705, 0.0703, 0.0703, 0.59265633], [1516691160000, 0.07059499, 0.07059499, 0.0705, 0.0705, 0.03557372], [1516691220000, 0.0705, 0.07059499, 0.0705, 0.0705, 1.30629906], [1516691280000, 0.07059499, 0.07059499, 0.0705, 0.0705, 0.12745791], [1516691340000, 0.07059499, 0.07059499, 0.0705, 0.0705, 0.25351295], [1516691400000, 0.0705, 0.07059499, 0.0705, 0.07059499, 0.61485717], [1516691460000, 0.07059499, 0.07069, 0.07059499, 0.07069, 49.0981929], [1516691520000, 0.0705614, 0.07059499, 0.07047491, 0.07047491, 3.27367027], [1516691580000, 0.07047491, 0.07059499, 0.07047491, 0.07047491, 6.16623661], [1516691640000, 0.07059499, 0.07059499, 0.0703019, 0.0703019, 0.17854494], [1516691700000, 0.07034965, 0.07047631, 0.06987006, 0.07017351, 42.34673773], [1516691760000, 0.07015298, 0.07015298, 0.06987006, 0.06987006, 10.62439641], [1516691820000, 0.06987006, 0.07002343, 0.06924983, 0.06924983, 67.51785465], [1516691880000, 0.069999, 0.069999, 0.06935185, 0.06979188, 2.24575445], [1516691940000, 0.06977259, 0.06977259, 0.06935189, 0.06935189, 6.07778362], [1516692000000, 0.06935189, 0.06935189, 0.06935189, 0.06935189, 10.59104398], [1516692060000, 0.06935189, 0.06973434, 0.06935189, 0.06973434, 9.85062849], [1516692120000, 0.06973434, 0.06973434, 0.06935, 0.06957922, 8.96613464], [1516692180000, 0.0695291, 0.06955938, 0.06935003, 0.06935003, 0.844369], [1516692240000, 0.06935007, 0.06955597, 0.06935007, 0.06947984, 7.14307706], [1516692300000, 0.06953306, 0.069989, 0.06947984, 0.06967661, 6.76636559], [1516692360000, 0.06935008, 0.06953308, 0.06935008, 0.06953308, 2.85909961], [1516692420000, 0.06959043, 0.06959043, 0.06935006, 0.06935007, 3.6765726], [1516692480000, 0.06953676, 0.0695771, 0.06935006, 0.06935008, 34.88671754], [1516692540000, 0.06935008, 0.0695188, 0.06924983, 0.06950937, 21.68531441], [1516692600000, 0.0695056, 0.0695056, 0.06924982, 0.06924982, 8.24465673], [1516692660000, 0.06924987, 0.06945244, 0.06924982, 0.06924982, 32.70197973], [1516692720000, 0.06937125, 0.06945239, 0.06924982, 0.06941091, 19.87202911], [1516692780000, 0.06924982, 0.06941089, 0.06924982, 0.06924982, 12.52266465], [1516692840000, 0.06924982, 0.06924983, 0.0691, 0.06924982, 44.18037249], [1516692900000, 0.0692498, 0.06931907, 0.0691, 0.0691, 1.22573945], [1516692960000, 0.0692498, 0.0692498, 0.0691, 0.0692498, 0.30291933], [1516693020000, 0.06924979, 0.06924979, 0.069, 0.06909993, 33.38212819], [1516693080000, 0.069, 0.06909989, 0.069, 0.06901, 76.05509123], [1516693140000, 0.06909988, 0.06909989, 0.069, 0.06900899, 6.97300693], [1516693200000, 0.069, 0.06901, 0.069, 0.069, 11.61387328], [1516693260000, 0.06901, 0.06909988, 0.069, 0.069, 4.95708172], [1516693320000, 0.06909988, 0.06909988, 0.069, 0.069, 2.22945725], [1516693380000, 0.06909988, 0.06931297, 0.06909987, 0.06927353, 11.62732266], [1516693440000, 0.06909987, 0.06931906, 0.06909987, 0.06931906, 2.24992491], [1516693500000, 0.06931907, 0.06931907, 0.06931907, 0.06931907, 0.1436], [1516693560000, 0.06931907, 0.06931907, 0.06931907, 0.06931907, 1.46770578], [1516693620000, 0.06931907, 0.06931907, 0.06931907, 0.06931907, 2.12721051], [1516693680000, 0.06931907, 0.06931907, 0.06931906, 0.06931906, 5.34839888], [1516693740000, 0.0692735, 0.06931907, 0.06901, 0.06931907, 1.69753057], [1516693800000, 0.06931907, 0.06931907, 0.06931907, 0.06931907, 5.48309312], [1516693860000, 0.06931907, 0.06931907, 0.06931907, 0.06931907, 9.35222055], [1516693920000, 0.06931907, 0.06931907, 0.06907828, 0.06907828, 0.75396386], [1516693980000, 0.06931907, 0.06931907, 0.06909436, 0.06909436, 0.14484671], [1516694040000, 0.06916406, 0.06916406, 0.06916406, 0.06916406, 0.16004222], [1516694100000, 0.06918729, 0.06925655, 0.06916406, 0.06925655, 0.61057852], [1516694160000, 0.06919866, 0.06921777, 0.06919866, 0.06921777, 2.23119117], [1516694220000, 0.06922938, 0.0695771, 0.06922938, 0.0695771, 0.09390418], [1516694280000, 0.0695771, 0.06964061, 0.0695771, 0.06964061, 0.23135411], [1516694340000, 0.06972938, 0.06972938, 0.06972938, 0.06972938, 0.21872049], [1516694400000, 0.0697503, 0.0698998, 0.06964061, 0.06964061, 2.78770034], [1516694460000, 0.06987242, 0.06987242, 0.06987233, 0.06987233, 0.46370221], [1516694520000, 0.06964061, 0.06964061, 0.06944219, 0.06944219, 1.26009962], [1516694580000, 0.0696406, 0.0696406, 0.06922922, 0.0696406, 3.14456048], [1516694640000, 0.06952453, 0.06952453, 0.06924001, 0.06924002, 0.80592644], [1516694700000, 0.06924002, 0.06959953, 0.06924002, 0.06951307, 3.6649032], [1516694760000, 0.06959953, 0.06959953, 0.06959953, 0.06959953, 0.01013879], [1516694820000, 0.0695995, 0.0696406, 0.0695995, 0.06959953, 6.84244906], [1516694880000, 0.06959953, 0.0696406, 0.06959953, 0.06959954, 8.61525033], [1516694940000, 0.06959953, 0.06959953, 0.069, 0.0695994, 322.60819425], [1516695000000, 0.06918441, 0.06940421, 0.06880502, 0.06880502, 4.82668715], [1516695060000, 0.06895304, 0.06919998, 0.06895304, 0.06919565, 0.59336229], [1516695120000, 0.06895308, 0.06895308, 0.06895308, 0.06895308, 0.11224742], [1516695180000, 0.06895303, 0.06895303, 0.06880502, 0.06880502, 0.02142593], [1516695240000, 0.06917179, 0.06917179, 0.06917179, 0.06917179, 0.03696018], [1516695300000, 0.06917179, 0.06917179, 0.06917178, 0.06917179, 0.36141896], [1516695360000, 0.06917179, 0.06917179, 0.06917179, 0.06917179, 0.52678641], [1516695420000, 0.06917178, 0.069195, 0.06917178, 0.0691718, 1.248515], [1516695480000, 0.0691718, 0.0691718, 0.06895308, 0.0691718, 0.23892515], [1516695540000, 0.069195, 0.0692, 0.0689218, 0.0692, 12.89157383], [1516695600000, 0.06919999, 0.06919999, 0.06885119, 0.06919999, 0.60806424], [1516695660000, 0.06890365, 0.06900026, 0.06890365, 0.06900026, 9.249], [1516695720000, 0.06901761, 0.06919999, 0.06901761, 0.06919999, 12.3633176], [1516695780000, 0.06902454, 0.06919999, 0.06901761, 0.06919999, 2.15896418], [1516695840000, 0.06901259, 0.06919999, 0.06897841, 0.06919999, 1.09082516], [1516695900000, 0.0692, 0.0692, 0.06897842, 0.06897842, 0.56948881], [1516695960000, 0.06919999, 0.06919999, 0.06897842, 0.06897842, 1.01224839], [1516696020000, 0.06897842, 0.06919999, 0.06897842, 0.06919999, 0.14656158], [1516696080000, 0.06919999, 0.0692, 0.069, 0.0692, 0.58904818], [1516696140000, 0.069, 0.069, 0.0689, 0.06890001, 4.01782636], [1516696200000, 0.06899317, 0.0692, 0.06890001, 0.06894825, 2.00364729], [1516696260000, 0.0692, 0.0692, 0.0692, 0.0692, 0.16901162], [1516696320000, 0.06912099, 0.0692, 0.06912099, 0.0692, 0.3399693], [1516696380000, 0.06915, 0.06915, 0.06915, 0.06915, 0.01600151], [1516696440000, 0.06890003, 0.06915, 0.06890001, 0.06915, 9.04618227], [1516696500000, 0.06915, 0.06915, 0.069, 0.069, 9.55177814], [1516696560000, 0.0689, 0.06915, 0.0688734, 0.0689, 6.66551981], [1516696620000, 0.0689, 0.0689, 0.06850002, 0.06872317, 37.81046222], [1516696680000, 0.06858257, 0.06889999, 0.06833505, 0.06889999, 89.64957838], [1516696740000, 0.06889999, 0.0689, 0.06871102, 0.06876658, 1.4418567], [1516696800000, 0.0689, 0.0689, 0.06847558, 0.06847558, 23.26466033], [1516696860000, 0.0689, 0.0689, 0.06859859, 0.0689, 27.44064399], [1516696920000, 0.06876147, 0.0692269, 0.06876147, 0.0692269, 6.86678303], [1516696980000, 0.0689, 0.0689, 0.0689, 0.0689, 0.0135], [1516697040000, 0.06927558, 0.06927558, 0.06927558, 0.06927558, 0.05125547], [1516697100000, 0.06927523, 0.0692755, 0.06927523, 0.0692755, 0.6774228], [1516697160000, 0.06927558, 0.06927558, 0.06927554, 0.06927554, 2.68986784], [1516697220000, 0.06927555, 0.06927556, 0.06927554, 0.06927556, 9.76049087], [1516697280000, 0.06927557, 0.06938345, 0.06927557, 0.06938345, 0.30189344], [1516697340000, 0.06938345, 0.06938345, 0.06927557, 0.06927558, 1.31174837], [1516697400000, 0.06927558, 0.06927558, 0.06927556, 0.06927556, 4.80022612], [1516697460000, 0.06927556, 0.06927556, 0.06927556, 0.06927556, 0.0318294], [1516697520000, 0.06927556, 0.06927557, 0.06927556, 0.06927557, 0.58931857], [1516697580000, 0.06927557, 0.06927557, 0.06927557, 0.06927557, 3.62658819], [1516697640000, 0.06927557, 0.06927557, 0.06927557, 0.06927557, 0.01591482], [1516697700000, 0.06927556, 0.06927558, 0.06927556, 0.06927558, 1.29985688], [1516697760000, 0.06927558, 0.06927559, 0.06927558, 0.06927559, 0.62271283], [1516697820000, 0.06952424, 0.06952424, 0.06932424, 0.06932424, 0.36775427], [1516697880000, 0.06952424, 0.06952424, 0.06945472, 0.06945472, 0.19563104], [1516697940000, 0.06945472, 0.06945472, 0.06945472, 0.06945472, 0.14665747], [1516698000000, 0.06945472, 0.06952425, 0.06945472, 0.06952425, 0.54614843], [1516698060000, 0.06932424, 0.06932424, 0.06932424, 0.06932424, 4.50584902], [1516698120000, 0.06932424, 0.06932424, 0.06932424, 0.06932424, 4.3484982], [1516698180000, 0.06932424, 0.06964059, 0.06932424, 0.06952425, 0.90070206], [1516698240000, 0.06952425, 0.06952426, 0.06952425, 0.06952426, 0.45719677], [1516698300000, 0.06952426, 0.06952426, 0.06952426, 0.06952426, 1.79879034], [1516698360000, 0.06932424, 0.06974084, 0.06927559, 0.06972535, 14.15135567], [1516698420000, 0.06952427, 0.06972535, 0.06927559, 0.06927559, 16.82850819], [1516698480000, 0.06952427, 0.06952427, 0.06927559, 0.06927559, 3.00593643], [1516698600000, 0.06961311, 0.06961311, 0.06961311, 0.06961311, 0.14365525], [1516698660000, 0.06927559, 0.06927559, 0.06927559, 0.06927559, 0.72131234], [1516698720000, 0.06958508, 0.06958508, 0.06958508, 0.06958508, 0.50996288], [1516698840000, 0.06954724, 0.06954724, 0.0692756, 0.0692756, 1.49004781], [1516698900000, 0.0692756, 0.06951589, 0.0692756, 0.0692756, 0.82630694], [1516698960000, 0.0694874, 0.06951817, 0.0694874, 0.06951817, 0.03229834], [1516699020000, 0.06949691, 0.06949691, 0.06949013, 0.06949013, 1.73672911], [1516699080000, 0.06945024, 0.06945024, 0.06945, 0.06945, 8.79869326], [1516699140000, 0.06945, 0.06949622, 0.0692756, 0.06949622, 4.56441005], [1516699200000, 0.06942613, 0.0694955, 0.0692756, 0.0692756, 0.54088684], [1516699260000, 0.06945001, 0.06945001, 0.0692756, 0.0692756, 5.70224318], [1516699320000, 0.0692756, 0.0692756, 0.0692756, 0.0692756, 2.8737718], [1516699380000, 0.06944794, 0.06944794, 0.0692756, 0.0692756, 1.01733257], [1516699440000, 0.06944726, 0.06944726, 0.0692756, 0.0692756, 4.13184077], [1516699500000, 0.0692756, 0.0694465, 0.0692756, 0.0692756, 0.05239255], [1516699560000, 0.06944631, 0.06944631, 0.06927556, 0.06927556, 5.54767986], [1516699620000, 0.06927556, 0.06927556, 0.06927556, 0.06927556, 0.0318294], [1516699680000, 0.06934034, 0.06934034, 0.06927556, 0.06927556, 0.21493971], [1516699740000, 0.06933985, 0.06933985, 0.06927556, 0.06933959, 0.19042456], [1516699800000, 0.06927556, 0.06927557, 0.06908779, 0.06927521, 0.09972519], [1516699860000, 0.06927513, 0.06927513, 0.06868144, 0.06868144, 0.1814222], [1516699980000, 0.06908779, 0.06924411, 0.06908779, 0.06908779, 1.79744559], [1516700040000, 0.06924374, 0.06924374, 0.06908779, 0.06908779, 1.84440083], [1516700100000, 0.06923717, 0.0692427, 0.06908779, 0.0692427, 4.51438732], [1516700160000, 0.06908779, 0.06923371, 0.06908779, 0.06923362, 2.14211592], [1516700220000, 0.06908779, 0.0692336, 0.0689992, 0.0692336, 0.36053401], [1516700280000, 0.068769, 0.068769, 0.068769, 0.068769, 0.02035791], [1516700340000, 0.06922278, 0.06922278, 0.06922278, 0.06922278, 2.13404615], [1516700400000, 0.06916914, 0.06916914, 0.06916914, 0.06916914, 0.28914644], [1516700460000, 0.06906914, 0.06906914, 0.06906914, 0.06906914, 1.63989152], [1516700520000, 0.06874937, 0.06874937, 0.06860029, 0.06860029, 0.29577735], [1516700580000, 0.06911059, 0.06911059, 0.06911059, 0.06911059, 0.08460893], [1516700640000, 0.06915125, 0.06915125, 0.06912559, 0.06912559, 1.19456582], [1516700760000, 0.06911214, 0.0691257, 0.0687495, 0.0691257, 0.89220973], [1516700820000, 0.06910421, 0.06910421, 0.06910421, 0.06910421, 0.07235449], [1516700940000, 0.06909999, 0.06909999, 0.06909999, 0.06909999, 0.13532068], [1516701000000, 0.06909598, 0.06909598, 0.06909598, 0.06909598, 0.15607908], [1516701060000, 0.06910421, 0.06910421, 0.06910421, 0.06910421, 0.66700537], [1516701120000, 0.0691042, 0.0691042, 0.0691042, 0.0691042, 0.14973521], [1516701180000, 0.0691042, 0.0691042, 0.0691042, 0.0691042, 0.01732878], [1516701300000, 0.06908119, 0.06908119, 0.06908119, 0.06908119, 0.14475718], [1516701420000, 0.06908119, 0.06908119, 0.06908119, 0.06908119, 0.04603781], [1516701480000, 0.06908118, 0.06908118, 0.06908118, 0.06908118, 0.08088123], [1516701600000, 0.06908118, 0.06908118, 0.06908118, 0.06908118, 0.28951436], [1516701780000, 0.06870492, 0.06870492, 0.06870492, 0.06870492, 0.75], [1516701840000, 0.0689, 0.06902978, 0.0689, 0.0689, 0.12844206], [1516701900000, 0.06890002, 0.06908118, 0.0689, 0.06908118, 0.91888936], [1516701960000, 0.0689, 0.0689, 0.0689, 0.0689, 0.01600145], [1516702020000, 0.06908118, 0.06908118, 0.0689, 0.06908118, 0.35532833], [1516702080000, 0.0689002, 0.06905211, 0.0689002, 0.06905211, 0.0420028], [1516702200000, 0.06895865, 0.0690521, 0.0689002, 0.0690521, 1.85391204], [1516702260000, 0.06908, 0.06908118, 0.0690521, 0.0690521, 0.19198783], [1516702320000, 0.0690521, 0.0690521, 0.0689002, 0.0689002, 0.03193242], [1516702380000, 0.0689002, 0.0689002, 0.0689002, 0.0689002, 0.0160014], [1516702440000, 0.06908, 0.06908118, 0.06908, 0.06908118, 1.22287537], [1516702500000, 0.06908001, 0.06908118, 0.06908001, 0.06908001, 0.30684258], [1516702560000, 0.06908, 0.06908118, 0.0689, 0.0689, 0.89173498], [1516702620000, 0.06908003, 0.06908003, 0.06890002, 0.06890002, 0.16322285], [1516702680000, 0.06890002, 0.06890002, 0.06890002, 0.06890002, 0.0320029], [1516702740000, 0.06890002, 0.06908118, 0.06890002, 0.06890002, 0.1320029], [1516702800000, 0.06890002, 0.06908118, 0.06890002, 0.06900666, 0.82399552], [1516702860000, 0.06900666, 0.06900666, 0.0690003, 0.0690003, 0.4380895], [1516702920000, 0.0690003, 0.06908118, 0.0690003, 0.0690003, 22.61910635], [1516702980000, 0.0690003, 0.0690003, 0.0690003, 0.0690003, 0.03195638], [1516703040000, 0.06908118, 0.06908118, 0.0690003, 0.06908118, 2.61499541], [1516703100000, 0.06908118, 0.06908118, 0.06908118, 0.06908118, 0.23155186], [1516703220000, 0.06908119, 0.06908119, 0.06908119, 0.06908119, 3.0558883], [1516703280000, 0.06900031, 0.06900031, 0.0690003, 0.06900031, 0.67812845], [1516703340000, 0.06900031, 0.06900031, 0.06900031, 0.06900031, 0.03195662], [1516703400000, 0.06900031, 0.06908119, 0.0690003, 0.06908119, 8.11520255], [1516703460000, 0.06908119, 0.06908119, 0.06908119, 0.06908119, 30.02440875], [1516703520000, 0.06908119, 0.06908119, 0.06908119, 0.06908119, 5.92147675], [1516703580000, 0.06906119, 0.06906119, 0.06906119, 0.06906119, 0.01597807], [1516703640000, 0.06906119, 0.0692301, 0.06906119, 0.0692301, 1.06977066], [1516703760000, 0.0692301, 0.06924913, 0.06908119, 0.06908119, 0.71850259], [1516703820000, 0.06908119, 0.06924912, 0.06908119, 0.06920931, 1.20543496], [1516703880000, 0.06908119, 0.06908119, 0.06908119, 0.06908119, 0.5448356], [1516703940000, 0.06910352, 0.06910352, 0.06910352, 0.06910352, 0.32896612], [1516704000000, 0.06910352, 0.06920573, 0.06910352, 0.06913652, 0.45004195], [1516704060000, 0.06908352, 0.06908352, 0.06908119, 0.06908119, 4.14895155], [1516704120000, 0.06908119, 0.06908119, 0.06908119, 0.06908119, 0.0311978], [1516704180000, 0.06908119, 0.06912, 0.06908119, 0.06908119, 0.97084073], [1516704240000, 0.0690004, 0.0690004, 0.0690004, 0.0690004, 0.01597817], [1516704300000, 0.06908119, 0.06908119, 0.06900041, 0.06900041, 0.10273442], [1516704360000, 0.06908049, 0.06908049, 0.06908049, 0.06908049, 1.0], [1516704420000, 0.06908049, 0.06908049, 0.06908049, 0.06908049, 0.05329596], [1516704480000, 0.06908049, 0.06908049, 0.06908049, 0.06908049, 0.01457382], [1516704540000, 0.06908049, 0.06908049, 0.06908049, 0.06908049, 0.9236537], [1516704600000, 0.06908049, 0.06908049, 0.06908049, 0.06908049, 0.02808779], [1516704660000, 0.06906049, 0.06906049, 0.06906049, 0.06906049, 0.14135933], [1516704780000, 0.06908049, 0.06908049, 0.06908049, 0.06908049, 0.09753499], [1516704840000, 0.06906049, 0.06906049, 0.06906049, 0.06906049, 1.65729726], [1516704900000, 0.06908049, 0.06908049, 0.06906049, 0.06906049, 0.20912844], [1516704960000, 0.06906049, 0.06906049, 0.06906049, 0.06906049, 0.01596427], [1516705020000, 0.06906049, 0.06906049, 0.06906049, 0.06906049, 0.03192854], [1516705080000, 0.06906049, 0.06906049, 0.06906049, 0.06906049, 0.23192854], [1516705140000, 0.06906049, 0.06906049, 0.06900041, 0.06900041, 1.57948984], [1516705200000, 0.06900041, 0.06908049, 0.0690003, 0.0690003, 10.01067137], [1516705260000, 0.0690003, 0.06908049, 0.0690003, 0.0690003, 2.79563779], [1516705320000, 0.0690003, 0.0690003, 0.0690003, 0.0690003, 0.03195638], [1516705380000, 0.0690003, 0.06908049, 0.0690003, 0.0690003, 8.25632912], [1516705440000, 0.0690003, 0.0690003, 0.0690003, 0.0690003, 0.06195638], [1516705500000, 0.0690003, 0.06908048, 0.0690003, 0.06908048, 0.04883851], [1516705560000, 0.0690003, 0.0690003, 0.0690003, 0.0690003, 0.03195638], [1516705620000, 0.06908048, 0.06908048, 0.06908048, 0.06908048, 0.26421777], [1516705800000, 0.06908048, 0.06908048, 0.06908048, 0.06908048, 0.05817884], [1516705860000, 0.06908048, 0.06908048, 0.06908048, 0.06908048, 0.02908942], [1516705920000, 0.06908048, 0.06908048, 0.06908048, 0.06908048, 1.35878496], [1516705980000, 0.06908048, 0.06908048, 0.06908048, 0.06908048, 3.65974042], [1516706100000, 0.06904039, 0.06908048, 0.06900048, 0.06908048, 0.2090293], [1516706160000, 0.06908048, 0.06908048, 0.06908048, 0.06908048, 0.01597145], [1516706220000, 0.06908048, 0.06908119, 0.06908048, 0.06908048, 0.61789497], [1516706280000, 0.06908048, 0.06908119, 0.06908048, 0.06908048, 2.53715269], [1516706340000, 0.06908048, 0.06929795, 0.06908048, 0.06911, 0.20027935], [1516706400000, 0.06911, 0.06918921, 0.06911, 0.06911, 1.83852646], [1516706460000, 0.06911, 0.06929798, 0.06911, 0.06911, 0.35889269], [1516706520000, 0.06911, 0.06929796, 0.06911, 0.06911, 0.1336419], [1516706580000, 0.06911, 0.06911, 0.06911, 0.06911, 0.03190566], [1516706640000, 0.0691105, 0.0691105, 0.0691105, 0.0691105, 1.03090542], [1516706700000, 0.0691105, 0.06929795, 0.0691105, 0.0691105, 0.17620993], [1516706760000, 0.06929796, 0.06929796, 0.06908048, 0.0691105, 4.12163695], [1516706820000, 0.0691105, 0.0691105, 0.0691105, 0.0691105, 0.05892735], [1516706880000, 0.06929796, 0.06929796, 0.06929796, 0.06929796, 0.31718112], [1516706940000, 0.06929796, 0.06929796, 0.0691105, 0.0691105, 0.24289345], [1516707000000, 0.06929796, 0.06929797, 0.06929796, 0.06929797, 30.28117074], [1516707060000, 0.06929797, 0.06929798, 0.06929797, 0.06929798, 4.63379321], [1516707120000, 0.06929798, 0.069298, 0.06929798, 0.06929798, 0.99216127], [1516707180000, 0.06929798, 0.06933778, 0.0691105, 0.06933778, 9.65620532], [1516707240000, 0.06911798, 0.06911798, 0.06911798, 0.06911798, 0.53148526], [1516707300000, 0.06933778, 0.06933823, 0.06911798, 0.06933774, 2.43893933], [1516707360000, 0.06911798, 0.06911798, 0.06911798, 0.06911798, 0.01984727], [1516707420000, 0.06933774, 0.06933774, 0.06933774, 0.06933774, 0.08338186], [1516707480000, 0.069118, 0.06933446, 0.0691105, 0.06933446, 5.97361], [1516707540000, 0.0691105, 0.06933772, 0.06903778, 0.06933772, 1.90546689], [1516707600000, 0.06903778, 0.06933755, 0.06903778, 0.06924262, 1.14652131], [1516707660000, 0.06903778, 0.06922586, 0.06903778, 0.06903778, 0.72186838], [1516707720000, 0.06903778, 0.06903778, 0.06903778, 0.06903778, 0.0026677], [1516707780000, 0.06903778, 0.06903778, 0.0690003, 0.06903778, 15.2351497], [1516707840000, 0.0690003, 0.06920772, 0.0690003, 0.06920772, 28.81363686], [1516707900000, 0.06920772, 0.06920772, 0.06920263, 0.06920263, 1.03447149], [1516707960000, 0.06890002, 0.06890002, 0.06890002, 0.06890002, 0.30719847], [1516708020000, 0.06918169, 0.06918169, 0.06890002, 0.06890002, 1.72237814], [1516708080000, 0.06914549, 0.06914549, 0.06913763, 0.06913782, 2.90885221], [1516708140000, 0.0691309, 0.0691583, 0.06870492, 0.06870492, 13.71771869], [1516708200000, 0.06870492, 0.06899278, 0.06863709, 0.06863709, 13.4175474], [1516708260000, 0.0686371, 0.0686371, 0.06863709, 0.06863709, 12.92915939], [1516708320000, 0.0686371, 0.0689287, 0.0686371, 0.0689287, 0.16236677], [1516708380000, 0.0689287, 0.0689287, 0.0689287, 0.0689287, 0.02356565], [1516708440000, 0.06894942, 0.06894942, 0.06894942, 0.06894942, 0.04127257], [1516708500000, 0.06892646, 0.06895268, 0.06892646, 0.06895268, 0.58032832], [1516708560000, 0.06894942, 0.06894942, 0.06894942, 0.06894942, 0.07126131], [1516708620000, 0.06863709, 0.06863709, 0.06863709, 0.06863709, 13.33535136], [1516708680000, 0.0686371, 0.0686371, 0.0686371, 0.0686371, 32.91235105], [1516708740000, 0.06863711, 0.06863711, 0.0686371, 0.0686371, 1.18591249], [1516708800000, 0.06863711, 0.06888399, 0.06863711, 0.06888399, 0.83075418], [1516708860000, 0.06863711, 0.06863711, 0.06860015, 0.06860015, 35.73139864], [1516708920000, 0.06860015, 0.0688792, 0.0686, 0.0686, 0.59131834], [1516708980000, 0.0688792, 0.0688792, 0.0686, 0.0686, 0.15620571], [1516709040000, 0.0688792, 0.06889822, 0.0686, 0.06889822, 3.19979359], [1516709100000, 0.0688887, 0.06889138, 0.0688887, 0.06889138, 0.03156161], [1516709160000, 0.06879138, 0.068876, 0.0686, 0.06879138, 8.54528562], [1516709220000, 0.06879138, 0.06885498, 0.0686, 0.0686, 10.28327323], [1516709280000, 0.0686, 0.0686, 0.06848926, 0.06849865, 67.95558344], [1516709340000, 0.06851467, 0.06851467, 0.06851467, 0.06851467, 1.04606567], [1516709400000, 0.06851467, 0.06851467, 0.06851467, 0.06851467, 7.09801329], [1516709460000, 0.06851467, 0.06885825, 0.06851467, 0.06885825, 12.24666509], [1516709580000, 0.06851468, 0.06885825, 0.06851468, 0.06885825, 0.10607512], [1516709640000, 0.06885825, 0.06885825, 0.06885825, 0.06885825, 0.22992579], [1516709700000, 0.06897836, 0.06897836, 0.06897836, 0.06897836, 0.0412926], [1516709760000, 0.06851473, 0.06885825, 0.06851473, 0.06885825, 0.18859644], [1516709820000, 0.06885826, 0.06885826, 0.06885826, 0.06885826, 0.01601115], [1516709880000, 0.06897838, 0.06906062, 0.06885826, 0.06885826, 5.54881656], [1516709940000, 0.06907171, 0.06907171, 0.06907171, 0.06907171, 0.03187996], [1516710000000, 0.06905579, 0.06905579, 0.06885826, 0.06905578, 0.50090928], [1516710120000, 0.06885826, 0.06909578, 0.06851467, 0.06851467, 22.41568063], [1516710180000, 0.06861743, 0.06910604, 0.06861743, 0.06910603, 0.12415268], [1516710240000, 0.0685147, 0.06852879, 0.0685147, 0.06852879, 2.18463429], [1516710300000, 0.06896701, 0.06896701, 0.06851467, 0.06851467, 2.23771575], [1516710360000, 0.06851467, 0.06891831, 0.06851467, 0.06891831, 0.17866638], [1516710420000, 0.06851469, 0.06851469, 0.06851467, 0.06851467, 1.762435], [1516710480000, 0.06891291, 0.06893176, 0.06852396, 0.06852396, 1.07196087], [1516710540000, 0.06893368, 0.06893369, 0.06852398, 0.06855071, 24.39351749], [1516710600000, 0.06857569, 0.06929983, 0.06857006, 0.06857007, 3.18383325], [1516710660000, 0.06893389, 0.06916923, 0.06893389, 0.06916923, 0.03712361], [1516710720000, 0.06916933, 0.06929975, 0.06916933, 0.06929975, 0.66856944], [1516710780000, 0.06929983, 0.06929983, 0.06893392, 0.06893392, 1.0045], [1516710840000, 0.06896723, 0.06896723, 0.06896723, 0.06896723, 0.02030925], [1516710900000, 0.0693, 0.0693, 0.0693, 0.0693, 0.09799929], [1516711020000, 0.0693, 0.0693, 0.06900708, 0.06900708, 0.41154058], [1516711080000, 0.06900708, 0.06900708, 0.06900708, 0.06900708, 0.09852216], [1516711140000, 0.06900708, 0.06900708, 0.06893389, 0.06893389, 5.08695241], [1516711200000, 0.06869511, 0.06889577, 0.06869511, 0.06889577, 0.21769214], [1516711260000, 0.06895, 0.06895, 0.06889577, 0.06889577, 0.01947752], [1516711380000, 0.06932772, 0.06932783, 0.06932772, 0.06932783, 0.02737136], [1516711440000, 0.0693235, 0.06971953, 0.06888515, 0.06971953, 7.37679324], [1516711500000, 0.06937, 0.06937, 0.06937, 0.06937, 0.02738936], [1516711560000, 0.06937197, 0.06937197, 0.06890832, 0.06890833, 1.96459311], [1516711620000, 0.069398, 0.0694, 0.06938252, 0.0694, 0.44086554], [1516711680000, 0.06904173, 0.06949854, 0.06904173, 0.06949854, 3.45215406], [1516711740000, 0.06949845, 0.06949845, 0.06949845, 0.06949845, 0.01476835], [1516711860000, 0.06949845, 0.06949845, 0.06949845, 0.06949845, 0.11386163], [1516711920000, 0.0692185, 0.0692185, 0.0692185, 0.0692185, 0.01581528], [1516711980000, 0.06949837, 0.06949845, 0.06949837, 0.06949845, 1.32250299], [1516712040000, 0.06926591, 0.06928331, 0.06922771, 0.06922771, 5.00763521], [1516712100000, 0.06949836, 0.06949836, 0.06921845, 0.06921846, 0.19432194], [1516712160000, 0.06949837, 0.06949837, 0.06949837, 0.06949837, 0.5], [1516712220000, 0.06949854, 0.06949854, 0.06949854, 0.06949854, 0.31669307], [1516712280000, 0.06921846, 0.06949854, 0.06921846, 0.06949854, 0.27561925], [1516712340000, 0.06949415, 0.06949415, 0.06922, 0.06922, 0.08197231], [1516712400000, 0.06922, 0.06950671, 0.06921846, 0.06950671, 0.2073146], [1516712460000, 0.06921845, 0.06944953, 0.06921845, 0.06944953, 1.46268686], [1516712520000, 0.06921845, 0.06921846, 0.06921845, 0.06921845, 2.1104392], [1516712580000, 0.06921845, 0.06943526, 0.06921845, 0.06921846, 1.36010716], [1516712640000, 0.06954376, 0.06954376, 0.06953953, 0.06953953, 1.10458393], [1516712700000, 0.06953952, 0.06953952, 0.06921846, 0.06921846, 0.23011469], [1516712940000, 0.06953952, 0.06953952, 0.06921889, 0.06921889, 0.09614779], [1516713000000, 0.06921999, 0.06921999, 0.06921999, 0.06921999, 0.1580349], [1516713120000, 0.0692202, 0.0692202, 0.06921999, 0.0692202, 10.39163133], [1516713180000, 0.0692202, 0.0692202, 0.06921999, 0.06921999, 1.25790968], [1516713240000, 0.0692202, 0.0692202, 0.06921999, 0.0692202, 1.00966622], [1516713360000, 0.06922019, 0.06922019, 0.06921999, 0.06921999, 0.73830471], [1516713420000, 0.06921999, 0.0692202, 0.06921999, 0.0692202, 4.1826364], [1516713480000, 0.0692202, 0.0694202, 0.06921999, 0.0694202, 0.92889235], [1516713540000, 0.06922, 0.0694202, 0.06922, 0.06922, 1.14618454], [1516713600000, 0.06949244, 0.06949244, 0.06948967, 0.06948967, 0.23757223], [1516713660000, 0.06948966, 0.06948967, 0.06948966, 0.06948967, 1.0], [1516713720000, 0.06922, 0.06922, 0.06922, 0.06922, 0.09791648], [1516713840000, 0.06943492, 0.06943492, 0.06943492, 0.06943492, 0.10083925], [1516713900000, 0.0694588, 0.0694588, 0.06922, 0.06922, 1.60234042], [1516713960000, 0.06922, 0.06945414, 0.06922, 0.06922, 0.23697501], [1516714020000, 0.06922, 0.06943055, 0.06922, 0.069384, 21.50530972], [1516714080000, 0.06922, 0.06922, 0.06922, 0.06922, 2.28046399], [1516714140000, 0.06922, 0.06945652, 0.06922, 0.06945652, 1.45624701], [1516714200000, 0.06922, 0.06922, 0.06922, 0.06922, 0.56571996], [1516714260000, 0.06922, 0.06922, 0.06922, 0.06922, 0.03185496], [1516714320000, 0.06922, 0.0694458, 0.06922, 0.0694458, 0.22890136], [1516714380000, 0.06943248, 0.0694458, 0.06943248, 0.06943248, 0.22317602], [1516714440000, 0.06943248, 0.06943248, 0.06922, 0.06922, 0.03415542], [1516714500000, 0.06922, 0.0694458, 0.06922, 0.06922, 1.46054275], [1516714560000, 0.0694458, 0.0694458, 0.06922, 0.06922, 0.37055733], [1516714620000, 0.0694458, 0.0694458, 0.06922, 0.06922, 0.13078217], [1516714680000, 0.0694458, 0.0694458, 0.06922, 0.06922, 0.10487073], [1516714740000, 0.06922, 0.06922, 0.06922, 0.06922, 0.03185496], [1516714800000, 0.06922, 0.06944579, 0.06922, 0.06944579, 1.7195515], [1516714860000, 0.06944579, 0.06944579, 0.06922, 0.06922, 0.06627613], [1516714920000, 0.06944579, 0.06944579, 0.06922, 0.06922, 0.24106264], [1516714980000, 0.06944578, 0.06944579, 0.06922, 0.06944579, 0.21412608], [1516715040000, 0.06922, 0.06944578, 0.06922, 0.06937153, 0.45352388], [1516715100000, 0.06922, 0.06938068, 0.06922, 0.06922, 0.60145939], [1516715160000, 0.06938068, 0.06938068, 0.06922, 0.06922, 1.1621454], [1516715220000, 0.06938068, 0.06938068, 0.06938068, 0.06938068, 0.02874731], [1516715340000, 0.06922692, 0.0693806, 0.06922, 0.0693806, 1.44643617], [1516715400000, 0.06938068, 0.06944578, 0.06938068, 0.06944578, 0.07505243], [1516715460000, 0.06944578, 0.06944578, 0.06944578, 0.06944578, 0.13369567], [1516715520000, 0.06938068, 0.06938068, 0.06938068, 0.06938068, 0.02205843], [1516715580000, 0.06944578, 0.0694458, 0.06938068, 0.06938068, 0.99916695], [1516715640000, 0.06938068, 0.0694458, 0.06922, 0.0694458, 0.23011936], [1516715760000, 0.0694458, 0.0694458, 0.0694458, 0.0694458, 0.1433], [1516715880000, 0.06923503, 0.06923503, 0.06923502, 0.06923502, 0.21143153], [1516715940000, 0.06923502, 0.06991657, 0.06923502, 0.06972656, 3.0722746], [1516716000000, 0.06969699, 0.06969699, 0.06923502, 0.06964257, 2.91740302], [1516716060000, 0.06966376, 0.06966376, 0.06923502, 0.06966376, 0.32538084], [1516716120000, 0.06932432, 0.06981306, 0.06932432, 0.06981306, 3.0], [1516716180000, 0.06971288, 0.06981306, 0.069347, 0.06979555, 7.87476007], [1516716240000, 0.06978619, 0.06978619, 0.06978368, 0.06978368, 0.10294523], [1516716300000, 0.06978619, 0.06978619, 0.06978619, 0.06978619, 0.1432948], [1516716480000, 0.06977, 0.06991699, 0.06977, 0.06991699, 2.08991574], [1516716540000, 0.0694, 0.0694, 0.0694, 0.0694, 3.78856925], [1516716600000, 0.0694, 0.0694, 0.06936, 0.0694, 3.90917351], [1516716660000, 0.06983826, 0.06983827, 0.06983826, 0.06983827, 0.16552129], [1516716780000, 0.06981924, 0.06981924, 0.06981924, 0.06981924, 1.42756014], [1516716840000, 0.06981924, 0.06981924, 0.06957864, 0.06981924, 2.10322459], [1516716900000, 0.06981924, 0.06984396, 0.06940001, 0.06940001, 0.07756896], [1516717020000, 0.06991699, 0.06991699, 0.06991699, 0.06991699, 0.01763749], [1516717080000, 0.06949468, 0.06949468, 0.06949468, 0.06949468, 0.04278969], [1516717140000, 0.0698, 0.0698257, 0.06949468, 0.0698257, 1.68416965], [1516717200000, 0.0698257, 0.06991697, 0.0698257, 0.06986912, 4.68908858], [1516717260000, 0.06981785, 0.06981785, 0.06981785, 0.06981785, 0.01296118], [1516717320000, 0.06986468, 0.06986469, 0.06984603, 0.06984603, 1.60062131], [1516717440000, 0.06949481, 0.06949481, 0.0694, 0.0694, 9.46048699], [1516717500000, 0.06973458, 0.06975336, 0.06972945, 0.06975336, 0.32536865], [1516717560000, 0.06939857, 0.06981183, 0.06939857, 0.06981183, 2.4295906], [1516717680000, 0.06973172, 0.06985655, 0.06945648, 0.06945648, 1.46759007], [1516717740000, 0.06982164, 0.06991691, 0.06945301, 0.06982163, 3.94928257], [1516717800000, 0.06945301, 0.06981982, 0.06945301, 0.0698198, 1.08065054], [1516717860000, 0.06945301, 0.06945301, 0.06945301, 0.06945301, 0.48165343], [1516717920000, 0.06946976, 0.0698419, 0.06946976, 0.0698419, 5.66788676], [1516717980000, 0.06985339, 0.06985339, 0.0698358, 0.0698358, 5.41182551], [1516718040000, 0.06983579, 0.06983579, 0.06945301, 0.06945301, 1.18035939], [1516718100000, 0.06983579, 0.06983579, 0.0698355, 0.0698355, 0.28638606], [1516718220000, 0.06983225, 0.0698355, 0.0695355, 0.06983224, 5.35639178], [1516718280000, 0.06983224, 0.06983224, 0.06945301, 0.06945301, 14.44342944], [1516718400000, 0.069832, 0.06983224, 0.069832, 0.069832, 1.61769069], [1516718460000, 0.069832, 0.06983224, 0.069832, 0.069832, 3.64740553], [1516718580000, 0.069832, 0.069832, 0.069832, 0.069832, 21.41936206], [1516718700000, 0.06953225, 0.069832, 0.06953225, 0.06953227, 0.87471806], [1516718760000, 0.06953227, 0.06953227, 0.06953227, 0.06953227, 2.656e-05], [1516718880000, 0.06953322, 0.06953322, 0.06953226, 0.06953226, 12.25322597], [1516718940000, 0.06953226, 0.06953226, 0.0693549, 0.0693549, 18.7795296], [1516719000000, 0.06953226, 0.06953226, 0.06953226, 0.06953226, 0.13376802], [1516719060000, 0.06953226, 0.06953226, 0.06953226, 0.06953226, 0.05422968], [1516719120000, 0.06953226, 0.06953226, 0.06953226, 0.06953226, 0.03179326], [1516719180000, 0.06953226, 0.06953226, 0.06936, 0.06953226, 0.1297286], [1516719240000, 0.06953226, 0.06953226, 0.069355, 0.069355, 13.27382566], [1516719300000, 0.06953226, 0.06953226, 0.06936, 0.06936, 1.24118612], [1516719360000, 0.06936001, 0.06936001, 0.06936001, 0.06936001, 0.1594], [1516719420000, 0.0697, 0.06975828, 0.06936002, 0.06936002, 0.4489393], [1516719480000, 0.06976762, 0.06976762, 0.06936002, 0.06936002, 0.28758498], [1516719540000, 0.06943505, 0.06943505, 0.06943505, 0.06943505, 0.01], [1516719600000, 0.06943503, 0.06967168, 0.06936001, 0.06967168, 19.65238517], [1516719660000, 0.06966, 0.06966, 0.06936001, 0.06962746, 0.73687805], [1516719720000, 0.06960131, 0.06960131, 0.06936001, 0.06936001, 0.12511374], [1516719780000, 0.06943658, 0.06943658, 0.06943658, 0.06943658, 0.99217267], [1516719840000, 0.06943658, 0.06943658, 0.06943658, 0.06943658, 0.33770179], [1516719900000, 0.06958946, 0.06958946, 0.06958946, 0.06958946, 0.28739966], [1516719960000, 0.06958946, 0.06958946, 0.06958946, 0.06958946, 0.01719859], [1516720020000, 0.06958946, 0.06958946, 0.0695706, 0.0695706, 1.39454793], [1516720080000, 0.06944002, 0.06958946, 0.06944002, 0.06958946, 19.04836075], [1516720140000, 0.06944002, 0.06958946, 0.06944002, 0.06958946, 6.05069438], [1516720200000, 0.06955, 0.06955, 0.06955, 0.06955, 0.2875629], [1516720260000, 0.06954999, 0.06954999, 0.06954999, 0.06954999, 1.85901207], [1516720320000, 0.06954999, 0.06954999, 0.06954999, 0.06954999, 0.04800827], [1516720380000, 0.06954999, 0.06954999, 0.06944002, 0.06944002, 1.56831758], [1516720440000, 0.06944002, 0.06954999, 0.06944002, 0.06944002, 2.95541529], [1516720500000, 0.06944002, 0.06954999, 0.06943658, 0.06943658, 2.46551736], [1516720560000, 0.06943658, 0.06954868, 0.0693549, 0.0693549, 2.35051777], [1516720620000, 0.0693549, 0.06948984, 0.0693549, 0.0693549, 18.46387929], [1516720680000, 0.0693549, 0.0695366, 0.0693549, 0.0693549, 0.5808605], [1516720800000, 0.0693549, 0.06954999, 0.0693549, 0.06954999, 1.16726295], [1516720860000, 0.06954999, 0.06969769, 0.06954999, 0.06969769, 1.49572769], [1516720920000, 0.06968412, 0.06968412, 0.0693549, 0.0693549, 0.30357187], [1516720980000, 0.06966345, 0.06966345, 0.06966345, 0.06966345, 0.01973657], [1516721040000, 0.06966345, 0.06969138, 0.0693549, 0.0693549, 0.51718544], [1516721100000, 0.06969138, 0.06969138, 0.06968664, 0.06968664, 2.43943424], [1516721160000, 0.06968664, 0.06968672, 0.0693549, 0.06968672, 0.51948915], [1516721220000, 0.06964999, 0.06964999, 0.06964999, 0.06964999, 1.43530073], [1516721280000, 0.06964654, 0.06964672, 0.06964654, 0.06964654, 1.29705269], [1516721340000, 0.06936182, 0.06969507, 0.06936182, 0.06969507, 4.15606953], [1516721400000, 0.06968136, 0.06968136, 0.06923503, 0.0696763, 3.71758257], [1516721460000, 0.06966499, 0.06966499, 0.06962, 0.06964106, 2.17832654], [1516721520000, 0.06972649, 0.06972649, 0.0692538, 0.0692538, 0.04372958], [1516721580000, 0.0692538, 0.06975466, 0.0692538, 0.06975466, 2.67099525], [1516721640000, 0.06983491, 0.07012589, 0.06975466, 0.06975466, 4.27993574], [1516721700000, 0.06987606, 0.06994157, 0.06975467, 0.06975467, 11.42682682], [1516721760000, 0.06975467, 0.06997998, 0.06975466, 0.06995899, 4.07691398], [1516721820000, 0.06993799, 0.06993799, 0.06993799, 0.06993799, 0.01], [1516721880000, 0.06998, 0.06998, 0.06998, 0.06998, 0.30454512], [1516721940000, 0.07, 0.07013101, 0.07, 0.07000002, 0.78196287], [1516722000000, 0.07, 0.07013101, 0.07, 0.07, 0.36885166], [1516722060000, 0.070131, 0.07013101, 0.070131, 0.070131, 0.13845937], [1516722120000, 0.070131, 0.07013101, 0.070131, 0.07013101, 0.64998077], [1516722180000, 0.07013101, 0.07013222, 0.070131, 0.070131, 5.72423919], [1516722240000, 0.070131, 0.070131, 0.070131, 0.070131, 0.6171206], [1516722300000, 0.070131, 0.070131, 0.07, 0.07, 29.74496577], [1516722360000, 0.07000942, 0.07000942, 0.07, 0.07, 13.097496], [1516722420000, 0.07, 0.07, 0.07, 0.07, 2.87581757], [1516722480000, 0.07, 0.07042058, 0.07, 0.07, 11.68916432], [1516722540000, 0.07000001, 0.07014752, 0.07000001, 0.07000001, 3.77578753], [1516722600000, 0.07000002, 0.07000002, 0.07000002, 0.07000002, 0.1530337], [1516722660000, 0.07000002, 0.07014, 0.07, 0.07011826, 5.56377779], [1516722720000, 0.07011826, 0.07011826, 0.07, 0.07, 5.47005443], [1516722780000, 0.07012401, 0.07012401, 0.07, 0.07, 4.60857334], [1516722840000, 0.07, 0.07008628, 0.07, 0.07, 9.82077072], [1516722900000, 0.07, 0.07014, 0.07, 0.07, 0.60428076], [1516722960000, 0.07013686, 0.07015547, 0.07, 0.07, 6.28096798], [1516723020000, 0.07, 0.07000001, 0.07, 0.07000001, 0.7315], [1516723080000, 0.07000001, 0.07000001, 0.07000001, 0.07000001, 0.27986903], [1516723140000, 0.07017623, 0.07017623, 0.07, 0.07016918, 6.58779542], [1516723200000, 0.07015072, 0.07015072, 0.07, 0.07001507, 0.5796998], [1516723260000, 0.07, 0.07001507, 0.07, 0.07, 7.43220477], [1516723320000, 0.07, 0.07, 0.07, 0.07, 8.83346824], [1516723380000, 0.07, 0.07, 0.07, 0.07, 11.65482113], [1516723440000, 0.07, 0.07000005, 0.07, 0.07000005, 0.71427283], [1516723500000, 0.07000005, 0.07000005, 0.07, 0.07000001, 8.37345189], [1516723560000, 0.07000001, 0.07000001, 0.07, 0.07, 5.080696], [1516723620000, 0.07, 0.07, 0.06998, 0.06998, 27.65399288], [1516723680000, 0.0700149, 0.0700149, 0.0700149, 0.0700149, 0.02097964], [1516723740000, 0.06999744, 0.07001507, 0.0699931, 0.07001507, 2.19722228], [1516723800000, 0.06998, 0.0700115, 0.06998, 0.06998, 0.17434267], [1516723860000, 0.06998, 0.06998, 0.06998, 0.06998, 0.24214651], [1516723920000, 0.06976467, 0.06976467, 0.06976467, 0.06976467, 0.02297509], [1516723980000, 0.06990904, 0.06990904, 0.06990904, 0.06990904, 0.00851301], [1516724040000, 0.06993863, 0.06993863, 0.06990904, 0.06990904, 0.0785509], [1516724100000, 0.06989336, 0.06989336, 0.06952764, 0.06952764, 0.25590344], [1516724160000, 0.06952764, 0.06952764, 0.06952762, 0.06952762, 0.34914828], [1516724220000, 0.06952764, 0.06952764, 0.06952762, 0.06952764, 1.1921292], [1516724280000, 0.06952764, 0.06952764, 0.06949697, 0.06949697, 1.62445687], [1516724340000, 0.06949697, 0.06952764, 0.06949697, 0.06952764, 40.02847042], [1516724460000, 0.06952764, 0.06952764, 0.06949998, 0.06952764, 34.05915522], [1516724520000, 0.06952764, 0.06952764, 0.06952764, 0.06952764, 0.09789595], [1516724580000, 0.06976942, 0.06976942, 0.06972141, 0.06972141, 0.3686717], [1516724640000, 0.06952766, 0.06952766, 0.06952766, 0.06952766, 0.01438276], [1516724700000, 0.06952766, 0.0703151, 0.06952766, 0.06952766, 60.05918917], [1516724760000, 0.06952766, 0.06970409, 0.0694, 0.0694, 11.59410112], [1516724820000, 0.0694, 0.0694, 0.06923503, 0.06930584, 2.69870704], [1516724880000, 0.06933456, 0.069704, 0.06932702, 0.069704, 0.47417344], [1516724940000, 0.069704, 0.06970409, 0.06936578, 0.069704, 1.36401936], [1516725000000, 0.06936806, 0.06970409, 0.06936806, 0.06970409, 2.69012653], [1516725060000, 0.06970409, 0.06991235, 0.06970409, 0.0697041, 22.01001767], [1516725120000, 0.0697041, 0.0697041, 0.06970409, 0.06970409, 26.18447735], [1516725180000, 0.06970409, 0.0697041, 0.06970409, 0.06970409, 1.75426685], [1516725240000, 0.06970409, 0.0697041, 0.0696, 0.0696, 3.92393943], [1516725300000, 0.0697, 0.06991236, 0.0697, 0.06991236, 1.67800796], [1516725360000, 0.06991236, 0.07012418, 0.0697, 0.06970009, 17.06725497], [1516725420000, 0.06970018, 0.07012995, 0.0697, 0.0697, 43.32046706], [1516725480000, 0.06970001, 0.0703151, 0.06970001, 0.0703151, 1.3017947], [1516725540000, 0.0703151, 0.0703151, 0.06983344, 0.06983344, 0.20486281], [1516725600000, 0.070266, 0.0703151, 0.06978688, 0.06978688, 0.33678285], [1516725660000, 0.06972995, 0.06973, 0.06972995, 0.06973, 0.09761338], [1516725720000, 0.06973, 0.07, 0.06971832, 0.07, 2.92488899], [1516725780000, 0.0701661, 0.0701661, 0.0701661, 0.0701661, 0.02828772], [1516725900000, 0.0700105, 0.0700105, 0.06971832, 0.06971832, 1.64625669], [1516725960000, 0.06996079, 0.07001469, 0.06996079, 0.07001469, 0.02846113], [1516726020000, 0.07001469, 0.070166, 0.06970891, 0.070166, 1.83535089], [1516726080000, 0.0702181, 0.0702181, 0.070166, 0.070166, 2.32396981], [1516726140000, 0.070166, 0.070211, 0.070166, 0.070211, 0.57781286], [1516726200000, 0.070211, 0.07021811, 0.070211, 0.07021811, 0.80053967], [1516726260000, 0.070166, 0.070166, 0.070166, 0.070166, 0.02081397], [1516726320000, 0.07016601, 0.07016601, 0.07016601, 0.07016601, 0.02850382], [1516726380000, 0.06984596, 0.07021811, 0.06984596, 0.07021811, 3.59097746], [1516726440000, 0.06988599, 0.0702181, 0.06988599, 0.0702181, 0.09256666], [1516726500000, 0.0702181, 0.07021811, 0.06988599, 0.07021811, 12.61417139], [1516726560000, 0.07023, 0.07023, 0.07023, 0.07023, 0.01991482], [1516726680000, 0.0701, 0.0701, 0.0701, 0.0701, 1.90963198], [1516726740000, 0.0701, 0.07025, 0.0701, 0.07025, 4.84459242], [1516726800000, 0.07010002, 0.07025, 0.07010002, 0.07010002, 0.48700184], [1516726860000, 0.07010002, 0.07010002, 0.07010001, 0.07010001, 0.094498], [1516726980000, 0.07024924, 0.07024924, 0.07024924, 0.07024924, 0.07108646], [1516727040000, 0.0702, 0.0702, 0.0702, 0.0702, 1.22498461], [1516727100000, 0.07024924, 0.07024926, 0.07024924, 0.07024924, 10.35382589], [1516727160000, 0.07024924, 0.07031951, 0.07024924, 0.07031951, 34.52555009], [1516727220000, 0.07031951, 0.07031951, 0.07024924, 0.07024924, 21.95133338], [1516727280000, 0.07024924, 0.07024924, 0.07024924, 0.07024924, 35.77195322], [1516727340000, 0.07024924, 0.07032, 0.07024924, 0.07032, 1.58657328], [1516727400000, 0.07024924, 0.07036656, 0.07024924, 0.07024924, 1.97942299], [1516727460000, 0.07024924, 0.07024924, 0.07024924, 0.07024924, 46.29633076], [1516727520000, 0.07024924, 0.07024924, 0.07024924, 0.07024924, 2.96218361], [1516727580000, 0.07024924, 0.07024924, 0.07024924, 0.07024924, 0.4584845], [1516727640000, 0.07036292, 0.07036411, 0.07024924, 0.07024924, 6.67954323], [1516727700000, 0.07035526, 0.07035526, 0.07024924, 0.07024924, 24.84711433], [1516727760000, 0.07024924, 0.07024924, 0.07024924, 0.07024924, 4.17210373], [1516727820000, 0.07024924, 0.07024924, 0.07024924, 0.07024924, 7.13400927], [1516727880000, 0.07024924, 0.07035521, 0.07024924, 0.07024924, 79.52708996], [1516727940000, 0.07024924, 0.07035521, 0.07024924, 0.07035521, 10.8207426], [1516728000000, 0.07024924, 0.07024924, 0.07024924, 0.07024924, 1.75154242], [1516728060000, 0.07024924, 0.07033355, 0.07024924, 0.07024924, 1.52047793], [1516728120000, 0.07024924, 0.07035521, 0.07024924, 0.07024924, 0.41073278], [1516728180000, 0.07024924, 0.07035521, 0.07024924, 0.07024924, 39.77053081], [1516728240000, 0.07020651, 0.07020651, 0.0699449, 0.0699449, 0.74494968], [1516728300000, 0.06988717, 0.07035512, 0.06988717, 0.07035512, 0.24308771], [1516728540000, 0.06988718, 0.07022007, 0.06988718, 0.07022007, 1.17580077], [1516728600000, 0.07021971, 0.07021971, 0.07021971, 0.07021971, 0.14240997], [1516728660000, 0.07021971, 0.07021971, 0.06988599, 0.06988599, 2.49747724], [1516728720000, 0.07020912, 0.07020912, 0.06988599, 0.06988599, 0.15259288], [1516728840000, 0.07012007, 0.07012007, 0.07012007, 0.07012007, 0.112744], [1516728900000, 0.07011291, 0.07011626, 0.07011291, 0.07011626, 0.14262018], [1516728960000, 0.07011641, 0.07011641, 0.06984596, 0.06984596, 5.2071076], [1516729080000, 0.06984596, 0.06984596, 0.06968971, 0.06968971, 0.18787275], [1516729140000, 0.06977052, 0.06977052, 0.06977052, 0.06977052, 0.41150913], [1516729200000, 0.0699899, 0.06999, 0.0699899, 0.06999, 43.33078943], [1516729260000, 0.06998999, 0.07011649, 0.06998999, 0.07011649, 1.69585094], [1516729320000, 0.07011649, 0.07011649, 0.07011649, 0.07011649, 1.3350439], [1516729380000, 0.07011649, 0.07028516, 0.07011649, 0.07011649, 0.67666918], [1516729500000, 0.07028495, 0.07028495, 0.07028495, 0.07028495, 0.226869], [1516729560000, 0.07011649, 0.07011649, 0.07011649, 0.07011649, 0.04435886], [1516729620000, 0.07011649, 0.07028465, 0.06974358, 0.06974358, 0.2768187], [1516729680000, 0.06974348, 0.06974348, 0.06974348, 0.06974348, 0.08208857], [1516729800000, 0.07011649, 0.07011649, 0.07011649, 0.07011649, 0.04552452], [1516729860000, 0.07003964, 0.07010579, 0.06974348, 0.0697435, 17.52482366], [1516729920000, 0.06974348, 0.0697435, 0.06974348, 0.0697435, 4.04870227], [1516729980000, 0.06974348, 0.0697435, 0.06974348, 0.0697435, 0.17903933], [1516730040000, 0.0697435, 0.07021099, 0.06974348, 0.07021099, 10.80049431], [1516730100000, 0.07015247, 0.07015247, 0.07015247, 0.07015247, 0.14254659], [1516730340000, 0.07021099, 0.07023, 0.07021099, 0.07023, 0.48152347], [1516730400000, 0.07023, 0.07028517, 0.07023, 0.07028512, 3.02162443], [1516730460000, 0.07015247, 0.07015247, 0.0698, 0.0698, 1.02317904], [1516730520000, 0.07015247, 0.07015247, 0.0698, 0.07015247, 2.09707577], [1516730580000, 0.07015247, 0.07028517, 0.07012506, 0.07012506, 0.09381035], [1516730640000, 0.07012501, 0.07012501, 0.07012501, 0.07012501, 0.05825111], [1516730700000, 0.07028514, 0.07031398, 0.07028514, 0.07031398, 2.15566824], [1516730760000, 0.07028509, 0.07031398, 0.0698, 0.06980001, 1.17565061], [1516730820000, 0.06980001, 0.06980001, 0.06980001, 0.06980001, 0.975021], [1516730940000, 0.0701, 0.07031391, 0.0701, 0.07031391, 1.53527773], [1516731000000, 0.07031389, 0.07031394, 0.07031389, 0.07031394, 2.1645023], [1516731060000, 0.0698292, 0.070354, 0.0698292, 0.070354, 3.02270341], [1516731120000, 0.07035512, 0.07035512, 0.07031389, 0.07031389, 0.66268395], [1516731180000, 0.07031389, 0.07031389, 0.07031389, 0.07031389, 0.31171141], [1516731240000, 0.07031389, 0.07031389, 0.07031389, 0.07031389, 0.01572255], [1516731300000, 0.07031389, 0.07035521, 0.06983087, 0.07035521, 1.13725638], [1516731360000, 0.07035521, 0.07035521, 0.07035521, 0.07035521, 0.4264077], [1516731480000, 0.07035521, 0.07035521, 0.06998695, 0.06998695, 0.56890336], [1516731540000, 0.0703996, 0.0703996, 0.0703996, 0.0703996, 0.22195], [1516731600000, 0.07036, 0.07048607, 0.06998154, 0.07048606, 1.16273055], [1516731720000, 0.069989, 0.0704862, 0.069989, 0.07048608, 11.35904795], [1516731780000, 0.0704862, 0.0704862, 0.07048606, 0.07048606, 0.24610778], [1516731840000, 0.07048606, 0.0704862, 0.07048606, 0.07048606, 0.63040106], [1516731900000, 0.0704862, 0.07049159, 0.07048606, 0.07048606, 15.80065336], [1516731960000, 0.07049159, 0.07049159, 0.07048606, 0.07048606, 0.84146776], [1516732020000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 114.68491235], [1516732080000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.03128278], [1516732140000, 0.07048606, 0.07048883, 0.07048606, 0.07048883, 0.95184188], [1516732200000, 0.07048606, 0.07048883, 0.07048606, 0.07048883, 0.31501578], [1516732260000, 0.07048606, 0.07049159, 0.07048606, 0.07049159, 1.24099823], [1516732320000, 0.07048883, 0.07049159, 0.07048883, 0.07048883, 2.1173631], [1516732380000, 0.07048883, 0.07049159, 0.07048883, 0.07048883, 1.59720472], [1516732440000, 0.07048883, 0.07048883, 0.07048606, 0.07048606, 0.16981999], [1516732500000, 0.07048606, 0.07049159, 0.07048606, 0.07048606, 0.47719514], [1516732560000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 6.57287171], [1516732620000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 1.5509192], [1516732680000, 0.07048607, 0.07048607, 0.07048607, 0.07048607, 0.07264139], [1516732740000, 0.07048607, 0.0704861, 0.07048607, 0.07048607, 0.05928139], [1516732800000, 0.07048607, 0.07049159, 0.07048607, 0.07048607, 0.32215221], [1516732860000, 0.07048607, 0.07048607, 0.07048606, 0.07048607, 27.68949551], [1516732920000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.17628278], [1516732980000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 2.20383274], [1516733040000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 11.31954978], [1516733100000, 0.07048606, 0.07048607, 0.07048606, 0.07048606, 3.39221375], [1516733160000, 0.07048606, 0.07048607, 0.07048606, 0.07048606, 23.77680611], [1516733220000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 2.10614378], [1516733280000, 0.07048606, 0.07049159, 0.07048606, 0.07048606, 19.56695961], [1516733340000, 0.07048606, 0.07049159, 0.07048606, 0.07048606, 32.0506789], [1516733400000, 0.07048606, 0.07049159, 0.07048606, 0.07048606, 68.52078545], [1516733460000, 0.07048606, 0.07048778, 0.07048606, 0.07048778, 1.28660154], [1516733520000, 0.07048606, 0.07048777, 0.07048606, 0.07048606, 11.18739282], [1516733580000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 1.1785801], [1516733640000, 0.07048606, 0.0704861, 0.07048606, 0.07048606, 0.75125331], [1516733700000, 0.07048606, 0.07048777, 0.07048606, 0.07048606, 2.42734484], [1516733760000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.63112982], [1516733820000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 6.43722078], [1516733880000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 1.05404956], [1516733940000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.03128278], [1516734000000, 0.07048606, 0.07049159, 0.07048606, 0.07048606, 1.50274839], [1516734060000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 19.52928278], [1516734120000, 0.07049159, 0.07049159, 0.07048606, 0.07048606, 0.72388278], [1516734180000, 0.07048606, 0.07049158, 0.07048606, 0.07048606, 2.85462398], [1516734240000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 5.44173741], [1516734300000, 0.07049159, 0.07049159, 0.07048606, 0.07048606, 1.69715815], [1516734360000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.04368909], [1516734420000, 0.07048606, 0.07049159, 0.07048606, 0.07049159, 74.31690572], [1516734480000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.77909648], [1516734540000, 0.07048606, 0.07049159, 0.07048606, 0.07048606, 2.21179845], [1516734600000, 0.07048606, 0.07049159, 0.07048606, 0.07048606, 0.48594139], [1516734660000, 0.07048606, 0.07049159, 0.07048606, 0.07049159, 0.13128278], [1516734720000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.13128278], [1516734780000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.51829578], [1516734840000, 0.07049159, 0.07049159, 0.07048882, 0.07048882, 0.08645148], [1516734900000, 0.07048882, 0.07048882, 0.07048606, 0.07048606, 2.9628032], [1516734960000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.92564139], [1516735020000, 0.07048881, 0.07048882, 0.07048881, 0.07048881, 4.39676319], [1516735080000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.76400288], [1516735140000, 0.07048606, 0.07048882, 0.07048606, 0.07048606, 1.10396354], [1516735200000, 0.07048606, 0.07049159, 0.07048606, 0.07049159, 9.41439711], [1516735260000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.48128278], [1516735320000, 0.07048606, 0.07049159, 0.07048606, 0.07049159, 0.53128278], [1516735380000, 0.07048606, 0.07049159, 0.07048606, 0.07048606, 0.05736931], [1516735440000, 0.07049159, 0.07049159, 0.07048606, 0.07048606, 0.03841243], [1516735500000, 0.07049159, 0.07049159, 0.07048606, 0.07048606, 28.16127624], [1516735560000, 0.07048958, 0.07048958, 0.07048606, 0.07048806, 0.168757], [1516735620000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.15919376], [1516735680000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.23178228], [1516735740000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 1.16390212], [1516735800000, 0.07048606, 0.07049159, 0.07048606, 0.07048606, 2.64180158], [1516735860000, 0.07048606, 0.07049159, 0.07048606, 0.07048606, 3.24068646], [1516735920000, 0.07048606, 0.07049159, 0.07048606, 0.07048606, 3.80525124], [1516735980000, 0.07048606, 0.07048882, 0.07048606, 0.07048882, 1.06396783], [1516736040000, 0.07048882, 0.07049159, 0.07048606, 0.07049159, 0.31802056], [1516736100000, 0.07048606, 0.07049159, 0.07048606, 0.07048606, 1.73037808], [1516736160000, 0.07048606, 0.07048606, 0.07048606, 0.07048606, 0.01564139], [1516736220000, 0.07048606, 0.07049159, 0.07048603, 0.07049159, 0.76121523], [1516736280000, 0.07049159, 0.07049159, 0.07048603, 0.07048603, 1.76041754], [1516736340000, 0.07048603, 0.07049159, 0.07048603, 0.07049159, 5.56768145], [1516736400000, 0.07049159, 0.07058, 0.07049159, 0.07049159, 1.41292051], [1516736460000, 0.07049159, 0.07049159, 0.07048603, 0.07048603, 1.25438115], [1516736520000, 0.07048603, 0.07048603, 0.07048603, 0.07048603, 1.2336414], [1516736580000, 0.07048603, 0.07048603, 0.07048603, 0.07048603, 2.5810591], [1516736640000, 0.07048603, 0.07049159, 0.07048603, 0.07048603, 3.94998244], [1516736700000, 0.07049159, 0.07062, 0.07048603, 0.07048603, 18.13531617], [1516736760000, 0.07048603, 0.07062, 0.07048603, 0.07048603, 1.99444839], [1516736820000, 0.07048603, 0.07048603, 0.07017941, 0.07017941, 14.63182046], [1516736880000, 0.07048584, 0.07048603, 0.07048584, 0.07048603, 1.35593289], [1516736940000, 0.07030981, 0.07047991, 0.07030981, 0.07047991, 0.13418773], [1516737000000, 0.07030981, 0.07047998, 0.07017941, 0.07017941, 0.81404257], [1516737060000, 0.07017941, 0.07032734, 0.070179, 0.07032734, 0.19665171], [1516737120000, 0.07032734, 0.07032734, 0.0701, 0.0701, 0.58197318], [1516737180000, 0.07, 0.0700001, 0.06998899, 0.06998899, 0.43831241], [1516737240000, 0.06998899, 0.07009983, 0.06989028, 0.07009983, 0.29325219], [1516737300000, 0.0701, 0.0701, 0.0701, 0.0701, 0.3873067], [1516737360000, 0.06989018, 0.06989018, 0.0698, 0.0698, 0.01577475], [1516737420000, 0.0698, 0.0701, 0.06972284, 0.07009983, 28.70146316], [1516737480000, 0.07009983, 0.0701, 0.07009983, 0.07009983, 6.59331352], [1516737540000, 0.07009983, 0.0701, 0.07009983, 0.07009983, 2.5111018], [1516737600000, 0.07009983, 0.0701, 0.07009983, 0.0701, 3.46127137], [1516737660000, 0.07009983, 0.07051, 0.07009983, 0.07009983, 1.96227378], [1516737720000, 0.07009983, 0.07009983, 0.07009983, 0.07009983, 0.309622], [1516737780000, 0.07009985, 0.07009985, 0.07009983, 0.07009983, 0.07541091], [1516737840000, 0.07009983, 0.07009983, 0.07009983, 0.07009983, 0.23753393], [1516737960000, 0.07009983, 0.07009983, 0.07009983, 0.07009983, 2.44565073], [1516738080000, 0.07009985, 0.07009985, 0.07009985, 0.07009985, 0.04268938], [1516738140000, 0.07009985, 0.07009985, 0.07009983, 0.07009983, 42.22885713], [1516738200000, 0.07009983, 0.07009985, 0.07009983, 0.07009983, 1.52537193], [1516738260000, 0.07009983, 0.07009983, 0.07009983, 0.07009983, 0.04145514], [1516738320000, 0.07009984, 0.07010964, 0.07009983, 0.07009983, 2.42601654], [1516738440000, 0.07019848, 0.07019848, 0.07019848, 0.07019848, 0.06141094], [1516738500000, 0.07019848, 0.070275, 0.07019848, 0.07019848, 0.30297557], [1516738560000, 0.07019848, 0.07019848, 0.07019848, 0.07019848, 13.32460526], [1516738620000, 0.07023603, 0.07023603, 0.07019848, 0.07019848, 1.87179361], [1516738680000, 0.07019848, 0.07019848, 0.07019848, 0.07019848, 10.54610718], [1516738740000, 0.07019848, 0.0701985, 0.07019848, 0.0701985, 7.64554331], [1516738800000, 0.0702, 0.07034151, 0.0702, 0.0702, 0.17357384], [1516738860000, 0.0702, 0.0702, 0.0702, 0.0702, 0.01570513], [1516738920000, 0.0702, 0.07021802, 0.0702, 0.0702, 9.42808663], [1516738980000, 0.0702, 0.070323, 0.07019848, 0.07019848, 34.31876387], [1516739040000, 0.07019848, 0.07047899, 0.06973659, 0.06988731, 5.58812944], [1516739100000, 0.06988731, 0.06988731, 0.06988731, 0.06988731, 0.0766851], [1516739220000, 0.0698873, 0.07036077, 0.0698873, 0.07036077, 0.37608508], [1516739280000, 0.07029217, 0.07029217, 0.06987122, 0.06987122, 0.08289574], [1516739340000, 0.07029217, 0.07036007, 0.06987122, 0.07029217, 0.67678586], [1516739400000, 0.07029217, 0.07036422, 0.07029217, 0.07036422, 0.17941201], [1516739460000, 0.07035026, 0.07035026, 0.07035026, 0.07035026, 0.1389], [1516739520000, 0.07035026, 0.07038742, 0.07010421, 0.07038742, 0.15187936], [1516739760000, 0.07038742, 0.07038742, 0.07038742, 0.07038742, 0.05172692], [1516739820000, 0.07038743, 0.07047, 0.07038743, 0.07047, 0.02757089], [1516739880000, 0.07047, 0.07047, 0.07047, 0.07047, 0.93347514], [1516739940000, 0.07038742, 0.07047, 0.07038742, 0.07047, 0.03918978], [1516740060000, 0.07038742, 0.07038742, 0.07020506, 0.07020506, 0.57674284], [1516740120000, 0.07047, 0.07047, 0.07015294, 0.07015294, 0.7621717], [1516740240000, 0.07047, 0.07047, 0.07047, 0.07047, 0.04475589], [1516740300000, 0.07047, 0.07047, 0.07015447, 0.07015447, 0.62823515], [1516740360000, 0.07015432, 0.07047, 0.07015432, 0.07047, 0.15843319], [1516740600000, 0.0704695, 0.0704695, 0.0704695, 0.0704695, 0.04874753], [1516740720000, 0.070468, 0.070468, 0.07016568, 0.07016568, 0.13555164], [1516740780000, 0.07011577, 0.07011577, 0.07011577, 0.07011577, 0.14513788], [1516740900000, 0.07007923, 0.07007923, 0.07007923, 0.07007923, 0.0619241], [1516740960000, 0.07012865, 0.07046, 0.07012865, 0.07046, 0.081625], [1516741020000, 0.07046, 0.07046, 0.07046, 0.07046, 0.04472959], [1516741140000, 0.0702, 0.0702, 0.0702, 0.0702, 0.01572114], [1516741200000, 0.0702, 0.0702, 0.0702, 0.0702, 0.14245014], [1516741260000, 0.0702, 0.07036456, 0.0702, 0.07036456, 0.27165359], [1516741320000, 0.07036456, 0.07036456, 0.07016432, 0.07016432, 0.12283506], [1516741380000, 0.07016432, 0.07045, 0.07016432, 0.07045, 0.5450371], [1516741440000, 0.07045, 0.07045, 0.07045, 0.07045, 0.07426063], [1516741500000, 0.07045968, 0.07045968, 0.07045968, 0.07045968, 0.2838502], [1516741560000, 0.07044, 0.07044, 0.07044, 0.07044, 0.07098239], [1516741800000, 0.07043, 0.07043, 0.07043, 0.07043, 0.17556496], [1516741920000, 0.07043, 0.07043, 0.07043, 0.07043, 2.488289], [1516741980000, 0.07032309, 0.07045968, 0.07032309, 0.07045968, 0.08469659], [1516742040000, 0.07032309, 0.07032309, 0.07032309, 0.07032309, 0.00947256], [1516742100000, 0.07043, 0.07043, 0.07043, 0.07043, 0.21656733], [1516742160000, 0.07043, 0.07043, 0.07043, 0.07043, 0.05066446], [1516742220000, 0.07043, 0.07045968, 0.07043, 0.07043, 0.28918304], [1516742280000, 0.07043, 0.07043, 0.07043, 0.07043, 0.01565384], [1516742340000, 0.07043, 0.07043, 0.07043, 0.07043, 0.01565384], [1516742400000, 0.07043, 0.0704699, 0.07043, 0.0704699, 5.08693009], [1516742460000, 0.070435, 0.070435, 0.070435, 0.070435, 0.03130546], [1516742520000, 0.0704699, 0.0704699, 0.070435, 0.070435, 0.14888875], [1516742580000, 0.070435, 0.0704699, 0.070435, 0.070435, 0.40253077], [1516742640000, 0.0704699, 0.0704699, 0.070435, 0.070435, 0.28881562], [1516742760000, 0.0704699, 0.07048046, 0.070435, 0.07048046, 0.78487992], [1516742820000, 0.0704699, 0.07048046, 0.070435, 0.0704699, 0.04596191], [1516742880000, 0.0704699, 0.0704699, 0.0704699, 0.0704699, 0.01564498], [1516742940000, 0.07048046, 0.07048046, 0.0704699, 0.0704699, 0.36445714], [1516743000000, 0.07048046, 0.07048046, 0.0704699, 0.0704699, 0.14273648], [1516743060000, 0.0704699, 0.0704699, 0.0704699, 0.0704699, 0.08093107], [1516743120000, 0.07048046, 0.07049999, 0.0704699, 0.07048, 3.00645105], [1516743240000, 0.07049999, 0.07049999, 0.07048, 0.07048, 1.09640569], [1516743300000, 0.0704699, 0.0704699, 0.0704699, 0.0704699, 0.67910176], [1516743420000, 0.0704699, 0.0704699, 0.0704699, 0.0704699, 0.22829869], [1516743480000, 0.0704699, 0.0704699, 0.0704699, 0.0704699, 0.00730836], [1516743540000, 0.07012868, 0.07012868, 0.07012868, 0.07012868, 0.055], [1516743720000, 0.0701287, 0.0701287, 0.07012868, 0.07012868, 0.64907347], [1516743780000, 0.07012865, 0.07012868, 0.07006841, 0.07012868, 0.17158349], [1516743840000, 0.07012867, 0.07012867, 0.07012867, 0.07012867, 0.03146944], [1516743900000, 0.07012867, 0.07012867, 0.0700684, 0.07012867, 3.44984518], [1516743960000, 0.07012867, 0.07012868, 0.0700684, 0.0700684, 0.44312396], [1516744020000, 0.07012867, 0.07012867, 0.07012867, 0.07012867, 0.67183593], [1516744080000, 0.07012867, 0.07012867, 0.07012866, 0.07012866, 5.72214687], [1516744140000, 0.07012866, 0.07012867, 0.07012866, 0.07012867, 1.84793864], [1516744200000, 0.07012867, 0.07012867, 0.07012867, 0.07012867, 0.39815598], [1516744260000, 0.07012868, 0.07012868, 0.07012867, 0.07012867, 19.46546841], [1516744320000, 0.07012867, 0.07012867, 0.07012867, 0.07012867, 0.1349885], [1516744380000, 0.07012867, 0.07012867, 0.06946434, 0.06965244, 14.43908644], [1516744440000, 0.0697533, 0.0697533, 0.06965244, 0.06965244, 27.832], [1516744500000, 0.07012867, 0.07012867, 0.06986571, 0.0700007, 11.03562157], [1516744560000, 0.07012867, 0.07012868, 0.07012867, 0.07012868, 0.42883652], [1516744620000, 0.07030388, 0.07030388, 0.07030388, 0.07030388, 0.07111983], [1516744680000, 0.07030388, 0.0703957, 0.07030388, 0.07030388, 0.08165439], [1516744740000, 0.07030388, 0.07039571, 0.07030388, 0.07030388, 0.81135164], [1516744800000, 0.07030388, 0.07039952, 0.07012868, 0.07039952, 5.26744892], [1516744860000, 0.07039952, 0.07039952, 0.07039952, 0.07039952, 0.12488067], [1516744980000, 0.07036503, 0.07039952, 0.07012868, 0.07039952, 2.49876813], [1516745100000, 0.07012868, 0.07012868, 0.07012868, 0.07012868, 0.1881], [1516745160000, 0.07012867, 0.07012867, 0.0701286, 0.0701286, 2.20429693], [1516745280000, 0.07019032, 0.07019032, 0.07019032, 0.07019032, 0.04384579], [1516745340000, 0.06977, 0.06977, 0.06977, 0.06977, 0.54035738], [1516745400000, 0.0701286, 0.07022922, 0.0701286, 0.07022921, 0.28519034], [1516745460000, 0.07015937, 0.07015937, 0.07015704, 0.07015704, 0.23687589], [1516745580000, 0.06977, 0.06977, 0.06977, 0.06977, 0.07274999], [1516745640000, 0.07, 0.07, 0.07, 0.07, 0.49808707], [1516745700000, 0.07, 0.07, 0.07, 0.07, 3.13571898], [1516745760000, 0.06977, 0.06977, 0.06977, 0.06977, 1.08502643], [1516745820000, 0.06979486, 0.06979486, 0.06979486, 0.06979486, 0.21499212], [1516745880000, 0.07, 0.07, 0.07, 0.07, 0.40157698], [1516746000000, 0.07, 0.07, 0.07, 0.07, 0.18421746], [1516746060000, 0.06977, 0.06977, 0.06977, 0.06977, 0.45309921], [1516746180000, 0.07, 0.07, 0.07, 0.07, 0.03155205], [1516746240000, 0.07, 0.07015704, 0.07, 0.07015704, 1.86614563], [1516746300000, 0.0703317, 0.0703317, 0.0703317, 0.0703317, 0.03068129], [1516746360000, 0.07042398, 0.07042398, 0.07042398, 0.07042398, 0.76730908], [1516746420000, 0.0701858, 0.07022919, 0.0701858, 0.07018581, 0.44873858], [1516746480000, 0.07029664, 0.07029664, 0.07018581, 0.07018581, 0.28624048], [1516746540000, 0.07018581, 0.07018581, 0.07018581, 0.07018581, 1.97996796], [1516746600000, 0.07022476, 0.07040816, 0.07018581, 0.07018581, 3.64296947], [1516746660000, 0.069815, 0.06987441, 0.069815, 0.06987441, 2.01011391], [1516746780000, 0.07030269, 0.07030269, 0.07030269, 0.07030269, 0.300479], [1516747020000, 0.07032172, 0.07037107, 0.07032172, 0.07037107, 4.75263577], [1516747140000, 0.07032172, 0.0705, 0.07014918, 0.07039564, 22.78549753], [1516747200000, 0.06998938, 0.07039564, 0.06998938, 0.07005245, 2.51544776], [1516747260000, 0.0699393, 0.07049999, 0.0699393, 0.07001548, 2.34354087], [1516747320000, 0.07049998, 0.07049998, 0.07049998, 0.07049998, 0.04237228], [1516747380000, 0.07049998, 0.07049998, 0.07049998, 0.07049998, 0.02104116], [1516747440000, 0.06980812, 0.06980812, 0.06980811, 0.06980811, 1.33513769], [1516747500000, 0.07049997, 0.07049997, 0.06997778, 0.06997778, 0.70921985], [1516747560000, 0.07001938, 0.07001938, 0.07001166, 0.07001166, 11.0], [1516747620000, 0.07036746, 0.07036746, 0.07036746, 0.07036746, 0.0107692], [1516747680000, 0.0700009, 0.07033771, 0.0700009, 0.07033771, 1.152174], [1516747740000, 0.07033771, 0.07033771, 0.07033771, 0.07033771, 0.10130299], [1516747800000, 0.07035931, 0.07035931, 0.07033234, 0.07033234, 0.2842413], [1516747860000, 0.07033234, 0.07033234, 0.07028278, 0.07028278, 1.16463309], [1516748160000, 0.07028276, 0.07028277, 0.07028276, 0.07028277, 0.02924133], [1516748220000, 0.07028277, 0.07028278, 0.07028277, 0.07028278, 1.2745], [1516748280000, 0.07000091, 0.07028278, 0.07000091, 0.07028278, 4.88927151], [1516748340000, 0.07028278, 0.07028278, 0.07028278, 0.07028278, 0.78372865], [1516748400000, 0.0700203, 0.0700203, 0.0700203, 0.0700203, 1.15354981], [1516748460000, 0.07028278, 0.07028278, 0.07028278, 0.07028278, 0.51827841], [1516748640000, 0.07028278, 0.07028278, 0.07028278, 0.07028278, 16.56069], [1516748700000, 0.07028278, 0.07028278, 0.07028278, 0.07028278, 2.63979516], [1516748760000, 0.07028278, 0.07028278, 0.07028278, 0.07028278, 0.0453481], [1516748820000, 0.07028278, 0.07028278, 0.07028278, 0.07028278, 0.01568663], [1516748880000, 0.07028278, 0.07028278, 0.0700203, 0.0700203, 5.1280584], [1516748940000, 0.0700203, 0.07019392, 0.0700203, 0.07019392, 0.03149086], [1516749000000, 0.07019392, 0.07020658, 0.0700009, 0.0700009, 1.63462873], [1516749060000, 0.0700009, 0.07018763, 0.0700009, 0.0701876, 4.64399647], [1516749120000, 0.07005376, 0.07005376, 0.06975607, 0.07005371, 34.28781339], [1516749180000, 0.07005371, 0.07005371, 0.0697, 0.0697, 25.96610864], [1516749240000, 0.07005018, 0.07005018, 0.06963769, 0.06994349, 6.80259789], [1516749360000, 0.07015353, 0.07015353, 0.0699435, 0.0699435, 0.14510642], [1516749420000, 0.06994349, 0.0701, 0.06994349, 0.0701, 1.1899559], [1516749480000, 0.06994349, 0.07009999, 0.06972224, 0.07009999, 4.86901966], [1516749540000, 0.07009999, 0.0701, 0.06963769, 0.0701, 30.00708365], [1516749600000, 0.0701, 0.0701, 0.0697529, 0.0701, 3.46693321], [1516749660000, 0.0701, 0.0701, 0.06971069, 0.06971069, 9.70105411], [1516749720000, 0.07008555, 0.07009999, 0.07008081, 0.07009999, 0.29231235], [1516749780000, 0.07006632, 0.07006632, 0.0696639, 0.0696639, 3.73365383], [1516749840000, 0.06966391, 0.06966391, 0.06966391, 0.06966391, 0.07092413], [1516749900000, 0.06966391, 0.07043504, 0.06966391, 0.07043504, 25.31779183], [1516749960000, 0.0701, 0.07043504, 0.06923509, 0.07001098, 86.45545598], [1516750020000, 0.07001098, 0.07009778, 0.06957768, 0.06957768, 19.27445609], [1516750080000, 0.07006245, 0.07006245, 0.07006245, 0.07006245, 0.01883366], [1516750140000, 0.06969884, 0.06970279, 0.06969674, 0.06969674, 5.90324163], [1516750200000, 0.06965722, 0.0697027, 0.0695639, 0.06970269, 2.9325836], [1516750260000, 0.06970269, 0.06970269, 0.06970269, 0.06970269, 0.142], [1516750320000, 0.0697027, 0.0697027, 0.06959598, 0.06959598, 3.06105951], [1516750380000, 0.06997741, 0.06997741, 0.06997741, 0.06997741, 0.04944009], [1516750440000, 0.0699774, 0.0699774, 0.0698021, 0.0698021, 0.09273987], [1516750500000, 0.0698021, 0.06997741, 0.0698021, 0.06997741, 0.78952794], [1516750560000, 0.0699774, 0.0699774, 0.06959598, 0.06963073, 1.2538847], [1516750620000, 0.06967752, 0.06997739, 0.06967752, 0.06997739, 0.25881127], [1516750680000, 0.06959598, 0.06959598, 0.06949254, 0.06949254, 0.12839855], [1516750740000, 0.06990917, 0.06990917, 0.06952062, 0.06952062, 0.10676709], [1516750860000, 0.0699774, 0.06997741, 0.0695868, 0.06975185, 1.82541164], [1516750920000, 0.06975185, 0.06975185, 0.06953367, 0.06975185, 0.2777307], [1516750980000, 0.06975185, 0.06997741, 0.06975185, 0.06997741, 0.35528404], [1516751100000, 0.06997738, 0.06997739, 0.06997738, 0.06997739, 0.15900909], [1516751160000, 0.06997739, 0.06997739, 0.06997739, 0.06997739, 14.65460016], [1516751220000, 0.06997739, 0.06997739, 0.06997739, 0.06997739, 0.01720012], [1516751400000, 0.06973563, 0.06973563, 0.06973563, 0.06973563, 0.01581883], [1516751460000, 0.06997739, 0.06997739, 0.06973563, 0.06997739, 1.30645934], [1516751520000, 0.06973054, 0.06997739, 0.06970645, 0.06997739, 12.57196732], [1516751580000, 0.06973564, 0.0698, 0.06967408, 0.06967408, 1.05270831], [1516751640000, 0.06970823, 0.06970823, 0.06968897, 0.06968897, 2.00256895], [1516751700000, 0.06997738, 0.06997738, 0.06997738, 0.06997738, 0.28580656], [1516751760000, 0.06997738, 0.07, 0.06997738, 0.07, 0.27715403], [1516751820000, 0.06999998, 0.06999998, 0.06999998, 0.06999998, 0.38952047], [1516751880000, 0.06968897, 0.06968898, 0.06968897, 0.06968897, 3.76972994], [1516751940000, 0.06968897, 0.06968897, 0.06968897, 0.06968897, 0.3081959], [1516752000000, 0.06968897, 0.06968897, 0.06968897, 0.06968897, 0.9038622], [1516752060000, 0.06968897, 0.06986499, 0.06968897, 0.06986499, 3.13724308], [1516752120000, 0.06986497, 0.06986497, 0.06986497, 0.06986497, 0.01722323], [1516752180000, 0.06986495, 0.06986495, 0.06986495, 0.06986495, 0.79640094], [1516752240000, 0.06968898, 0.06986494, 0.06968897, 0.06968897, 36.40680524], [1516752300000, 0.06968897, 0.06986158, 0.06968897, 0.06986158, 20.86119855], [1516752360000, 0.06968897, 0.06968897, 0.06968897, 0.06968897, 13.29128761], [1516752420000, 0.06985298, 0.06985298, 0.06952062, 0.06952062, 15.95980852], [1516752480000, 0.06973829, 0.0698002, 0.06932848, 0.0693549, 8.27629978], [1516752540000, 0.06934835, 0.06985925, 0.06934835, 0.06978746, 12.12778961], [1516752600000, 0.06978749, 0.06978749, 0.0693286, 0.06933056, 15.76534496], [1516752660000, 0.06935417, 0.06935417, 0.06933704, 0.06935417, 0.79936352], [1516752720000, 0.06935418, 0.06935418, 0.06935418, 0.06935418, 0.34714332], [1516752780000, 0.06974658, 0.06984294, 0.06974658, 0.06974658, 6.53257998], [1516752840000, 0.06937169, 0.06937169, 0.06932852, 0.06932852, 1.26320995], [1516752900000, 0.0693525, 0.06978701, 0.06935249, 0.06942323, 1.35108036], [1516752960000, 0.06978703, 0.06978703, 0.06978703, 0.06978703, 0.02335684], [1516753020000, 0.06978021, 0.06978628, 0.06923505, 0.06929992, 67.57610092], [1516753080000, 0.06933232, 0.06976215, 0.06933232, 0.06976215, 2.61182547], [1516753140000, 0.06978627, 0.06978627, 0.06953729, 0.06953729, 0.07777006], [1516753200000, 0.06933416, 0.06973503, 0.06933284, 0.06973503, 0.70578766], [1516753260000, 0.06928926, 0.06931705, 0.06928926, 0.06931705, 0.11977797], [1516753440000, 0.06933559, 0.06972197, 0.06933559, 0.06972197, 0.26258717], [1516753500000, 0.06972197, 0.06972197, 0.06933872, 0.06933872, 1.53916048], [1516753560000, 0.06972194, 0.06972194, 0.06972194, 0.06972194, 0.04120143], [1516753620000, 0.06934948, 0.06972194, 0.06934948, 0.06972194, 3.05738658], [1516753680000, 0.06972194, 0.06972194, 0.06931706, 0.06949218, 3.1594443], [1516753740000, 0.06978626, 0.06978626, 0.06932224, 0.06978626, 3.01232038], [1516753800000, 0.06978626, 0.06978626, 0.06931705, 0.06931705, 3.37345247], [1516753860000, 0.06969193, 0.06969193, 0.06969193, 0.06969193, 0.24888001], [1516753920000, 0.06968522, 0.06968522, 0.06966831, 0.06966831, 0.95665681], [1516754040000, 0.06931705, 0.06957379, 0.06931705, 0.06957379, 7.29576464], [1516754100000, 0.06958247, 0.06958247, 0.06943904, 0.06943904, 2.50467639], [1516754160000, 0.06967746, 0.06967746, 0.06943904, 0.06967746, 6.24820836], [1516754220000, 0.06967746, 0.06967746, 0.06923506, 0.06960016, 9.00850013], [1516754280000, 0.0696736, 0.0696736, 0.0696736, 0.0696736, 0.44094947], [1516754340000, 0.06959328, 0.06959483, 0.06959328, 0.06959483, 3.02079462], [1516754400000, 0.06956848, 0.06956848, 0.06956848, 0.06956848, 0.22306591], [1516754460000, 0.06959989, 0.06959989, 0.06959104, 0.06959104, 0.28486467], [1516754520000, 0.06959104, 0.06959104, 0.06959104, 0.06959104, 0.2820707], [1516754580000, 0.06962315, 0.06962315, 0.06962315, 0.06962315, 0.0198685], [1516754700000, 0.06954716, 0.06954716, 0.06954716, 0.06954716, 0.14378724], [1516754760000, 0.0695258, 0.0695258, 0.06927713, 0.06927713, 0.02478488], [1516754820000, 0.06927713, 0.069711, 0.06927713, 0.069711, 8.02111957], [1516754880000, 0.06971153, 0.06971153, 0.06923504, 0.06923504, 39.12052216], [1516754940000, 0.06927713, 0.06961938, 0.069043, 0.06945957, 23.1338246], [1516755000000, 0.06941639, 0.06946677, 0.06904303, 0.06946677, 0.2949462], [1516755060000, 0.06950175, 0.06966102, 0.06922293, 0.06922293, 29.83014359], [1516755120000, 0.0692227, 0.06970255, 0.0692227, 0.06970255, 6.79061217], [1516755180000, 0.06970255, 0.06970754, 0.06970255, 0.06970255, 0.28195751], [1516755240000, 0.06970255, 0.069711, 0.06925612, 0.069711, 0.41253476], [1516755300000, 0.06963237, 0.0696998, 0.06963237, 0.0696998, 3.6228], [1516755360000, 0.069711, 0.06971152, 0.0696998, 0.06971152, 44.30695403], [1516755420000, 0.06976157, 0.06989394, 0.06901002, 0.06914964, 68.76889832], [1516755480000, 0.06920983, 0.06921181, 0.0691389, 0.0691389, 19.91784345], [1516755540000, 0.06962999, 0.06962999, 0.06962999, 0.06962999, 0.02136414], [1516755600000, 0.0692539, 0.0692539, 0.0692539, 0.0692539, 0.32950172], [1516755720000, 0.0695397, 0.06972889, 0.06910171, 0.06932549, 39.91892916], [1516755780000, 0.06932549, 0.06932549, 0.06914754, 0.06914754, 0.28192307], [1516755840000, 0.06932549, 0.06934865, 0.06932549, 0.06934865, 0.47916245], [1516755960000, 0.06946333, 0.06946333, 0.06936614, 0.06936614, 0.19747823], [1516756020000, 0.0694634, 0.0694634, 0.06946338, 0.06946338, 0.0144], [1516756080000, 0.06946333, 0.06981239, 0.06946333, 0.06946333, 1.838879], [1516756140000, 0.06946333, 0.06946333, 0.06946333, 0.06946333, 0.998], [1516756440000, 0.06974281, 0.06974281, 0.06974281, 0.06974281, 0.01580808], [1516756500000, 0.06975985, 0.06975985, 0.06974281, 0.06974281, 0.14909694], [1516756560000, 0.06920341, 0.06955983, 0.06920341, 0.06955983, 0.02495303], [1516756620000, 0.06918993, 0.06918993, 0.06918993, 0.06918993, 1.1591], [1516756680000, 0.06918993, 0.06918993, 0.06918993, 0.06918993, 0.14201941], [1516756740000, 0.06918995, 0.06918995, 0.06918994, 0.06918994, 1.10925284], [1516756800000, 0.06918994, 0.06953202, 0.06918993, 0.06953202, 4.01582029], [1516756860000, 0.06953202, 0.06953202, 0.06918993, 0.06918993, 8.81250134], [1516756920000, 0.06918993, 0.06953881, 0.06918993, 0.06953881, 1.03715962], [1516756980000, 0.0693302, 0.0693302, 0.06918993, 0.06918993, 12.65136423], [1516757040000, 0.06918993, 0.06952578, 0.06918993, 0.06918993, 0.16223013], [1516757100000, 0.06960064, 0.06960064, 0.06960064, 0.06960064, 0.14367692], [1516757160000, 0.06956994, 0.06956994, 0.06956994, 0.06956994, 0.7694], [1516757220000, 0.06953924, 0.06956994, 0.06953924, 0.06955963, 0.36369487], [1516757280000, 0.06955962, 0.06956993, 0.06955962, 0.06956993, 1.06572154], [1516757340000, 0.06953924, 0.06953924, 0.0690817, 0.0690817, 6.1692], [1516757400000, 0.06952993, 0.06953924, 0.06952993, 0.06953924, 0.17568912], [1516757460000, 0.06953924, 0.06953924, 0.06953924, 0.06953924, 0.01959782], [1516757520000, 0.06953924, 0.06953924, 0.06953924, 0.06953924, 0.72445867], [1516757640000, 0.06955962, 0.06955962, 0.06955961, 0.06955961, 1.8720595], [1516757700000, 0.06955961, 0.06955961, 0.06955961, 0.06955961, 0.2875232], [1516757760000, 0.06955961, 0.06955961, 0.0695596, 0.06955961, 0.08008879], [1516758000000, 0.06955961, 0.06955961, 0.06955961, 0.06955961, 0.31826325], [1516758240000, 0.06954947, 0.06954947, 0.06954947, 0.06954947, 3.06411229], [1516758420000, 0.06954947, 0.06964542, 0.06954947, 0.06954947, 0.38077636], [1516758480000, 0.06954947, 0.06954947, 0.06953934, 0.06953934, 0.68699742], [1516758540000, 0.06953934, 0.06953934, 0.06953934, 0.06953934, 0.57710064], [1516758660000, 0.06953934, 0.06953934, 0.06953934, 0.06953934, 6.5], [1516758720000, 0.06953934, 0.06980947, 0.06953934, 0.06972404, 11.47427709], [1516758780000, 0.06953934, 0.06981239, 0.06953934, 0.06953934, 62.25311763], [1516758840000, 0.06974726, 0.06974726, 0.06953934, 0.06953934, 5.75554283], [1516758900000, 0.06953934, 0.06953944, 0.06953934, 0.06953934, 4.07468119], [1516758960000, 0.06953934, 0.06972, 0.06953934, 0.06972, 2.98800697], [1516759020000, 0.06953934, 0.06971999, 0.06953934, 0.06971999, 0.67079059], [1516759140000, 0.06971999, 0.06971999, 0.0694, 0.06971999, 2.81070376], [1516759200000, 0.06971999, 0.06972, 0.06971999, 0.06972, 2.79866317], [1516759260000, 0.06971999, 0.06971999, 0.0695, 0.0695, 0.32436913], [1516759320000, 0.06923632, 0.06925491, 0.06923632, 0.06925491, 0.84899687], [1516759440000, 0.0695, 0.0695, 0.0695, 0.0695, 0.93082556], [1516759500000, 0.0695, 0.0695, 0.0695, 0.0695, 0.14388489], [1516759560000, 0.0695, 0.0695, 0.0695, 0.0695, 0.01625175], [1516759620000, 0.06942487, 0.06942488, 0.06942487, 0.06942488, 0.75414388], [1516759680000, 0.0695, 0.0695, 0.06901001, 0.06901002, 23.06190063], [1516759740000, 0.06901002, 0.0695, 0.06901002, 0.0695, 3.194915], [1516759860000, 0.06925, 0.06925, 0.06925, 0.06925, 0.27041428], [1516759980000, 0.06949995, 0.06949998, 0.06949995, 0.06949998, 1.15409336], [1516760040000, 0.06949999, 0.0695, 0.0692501, 0.0692501, 7.48539904], [1516760100000, 0.0692501, 0.0692501, 0.0692501, 0.0692501, 0.25190315], [1516760160000, 0.0692501, 0.0692501, 0.0692501, 0.0692501, 0.22671447], [1516760220000, 0.0692501, 0.06937503, 0.06925, 0.06925, 20.59005051], [1516760280000, 0.06937502, 0.06937502, 0.06925001, 0.06925002, 0.07508438], [1516760340000, 0.06925002, 0.06925002, 0.06925, 0.06925, 0.03184115], [1516760400000, 0.06925, 0.069375, 0.06901002, 0.06901002, 8.88801327], [1516760460000, 0.06911002, 0.06911002, 0.06901002, 0.06901002, 0.03190564], [1516760520000, 0.06901002, 0.06901002, 0.06901001, 0.06901001, 0.06337055], [1516760580000, 0.06901001, 0.06901001, 0.06901001, 0.06901001, 0.13697606], [1516760640000, 0.06901001, 0.06901001, 0.06901001, 0.06901001, 0.05009103], [1516760700000, 0.06901002, 0.069375, 0.06901002, 0.069375, 0.14490653], [1516760760000, 0.06924883, 0.06924883, 0.06924713, 0.06924713, 5.23591987], [1516760820000, 0.06924883, 0.069375, 0.06924883, 0.06937494, 17.92022757], [1516760880000, 0.06937499, 0.06937501, 0.06937499, 0.06937501, 11.34799398], [1516761000000, 0.069375, 0.069375, 0.069375, 0.069375, 0.0153405], [1516761060000, 0.06937499, 0.06937499, 0.06937499, 0.06937499, 0.53399799], [1516761180000, 0.06934349, 0.06937499, 0.06929935, 0.06937499, 5.02833381], [1516761240000, 0.06901, 0.06934317, 0.06901, 0.06934317, 0.14115057], [1516761540000, 0.06901003, 0.06901003, 0.06901002, 0.06901003, 2.12013947], [1516761660000, 0.06934316, 0.06934316, 0.06934316, 0.06934316, 0.05217444], [1516761720000, 0.06901, 0.06901, 0.06901, 0.06901, 2.5], [1516761780000, 0.06926498, 0.06926498, 0.06926498, 0.06926498, 0.01537279], [1516761900000, 0.06926492, 0.06926492, 0.06926492, 0.06926492, 0.14437326], [1516762020000, 0.06922334, 0.06922334, 0.06922334, 0.06922334, 0.06500698], [1516762080000, 0.06922334, 0.06922334, 0.06901, 0.06901, 2.13476359], [1516762140000, 0.06901001, 0.06901001, 0.06901001, 0.06901001, 0.1777514], [1516762200000, 0.06901, 0.06901001, 0.06901, 0.06901, 0.61050016], [1516762260000, 0.06901001, 0.06901001, 0.06901001, 0.06901001, 0.05409273], [1516762320000, 0.06901001, 0.06901001, 0.06901001, 0.06901001, 0.10446797], [1516762380000, 0.06901001, 0.06901001, 0.06901001, 0.06901001, 0.05127868], [1516762440000, 0.06901001, 0.06901001, 0.06901001, 0.06901001, 0.02458714], [1516762500000, 0.06901001, 0.06901001, 0.06901001, 0.06901001, 0.14490653], [1516762560000, 0.06901001, 0.06918754, 0.06901001, 0.06918754, 0.69084822], [1516762620000, 0.06922334, 0.06922334, 0.06922334, 0.06922334, 2.46031526], [1516762740000, 0.06922334, 0.06922334, 0.06901001, 0.06901001, 2.57018388], [1516762800000, 0.06901001, 0.06901001, 0.06901001, 0.06901001, 0.01145488], [1516762860000, 0.06921025, 0.06921025, 0.06921025, 0.06921025, 0.05085389], [1516762920000, 0.06921025, 0.06921025, 0.06914104, 0.06914104, 0.02035126], [1516763040000, 0.06914104, 0.06914104, 0.06914104, 0.06914104, 0.00551118], [1516763160000, 0.06916712, 0.06916712, 0.06914104, 0.06914104, 0.04], [1516763220000, 0.06919655, 0.06920482, 0.06919655, 0.06920482, 0.0618979], [1516763280000, 0.06922335, 0.06922335, 0.06922335, 0.06922335, 0.03219848], [1516763340000, 0.069375, 0.069375, 0.069375, 0.069375, 0.01574997], [1516763520000, 0.06920536, 0.0693462, 0.06914105, 0.0693462, 0.29783387], [1516763640000, 0.069375, 0.069375, 0.06914104, 0.06914104, 3.62864702], [1516763700000, 0.06914105, 0.06914105, 0.06914104, 0.06914104, 7.33545834], [1516763760000, 0.06914105, 0.06914105, 0.06914104, 0.06914104, 0.19412527], [1516763820000, 0.06914104, 0.06914105, 0.06914104, 0.06914105, 0.2301543], [1516763880000, 0.06914104, 0.06914104, 0.06914104, 0.06914104, 0.27710982], [1516763940000, 0.06914104, 0.06914104, 0.06914104, 0.06914104, 0.69250172], [1516764000000, 0.06914104, 0.06914104, 0.06901, 0.06914104, 0.21987095], [1516764060000, 0.06914104, 0.06914104, 0.06914104, 0.06914104, 0.01846905], [1516764180000, 0.06907552, 0.06907552, 0.06907552, 0.06907552, 0.2301774], [1516764300000, 0.06907552, 0.06907552, 0.06907552, 0.06907552, 0.14476912], [1516764420000, 0.06907552, 0.06907552, 0.06907552, 0.06907552, 0.20000114], [1516764540000, 0.06914104, 0.06914104, 0.06914104, 0.06914104, 10.77777679], [1516764720000, 0.06914104, 0.06914104, 0.06914104, 0.06914104, 6.83629636], [1516764780000, 0.0691, 0.0691, 0.0691, 0.0691, 19.65438757], [1516764840000, 0.06914104, 0.06914104, 0.06914104, 0.06914104, 0.05040751], [1516764960000, 0.06914104, 0.06914104, 0.0691, 0.0691, 4.16261899], [1516765020000, 0.0691, 0.0691, 0.0691, 0.0691, 0.4090748], [1516765080000, 0.0691, 0.0691, 0.06901, 0.0691, 10.91211895], [1516765140000, 0.0691, 0.0691, 0.0691, 0.0691, 3.4987264], [1516765200000, 0.0691, 0.0691, 0.0691, 0.0691, 2.78418502], [1516765260000, 0.0691, 0.0691, 0.06901, 0.06901, 0.58200834], [1516765320000, 0.0691, 0.0691, 0.0691, 0.0691, 1.03195204], [1516765380000, 0.06909, 0.0691, 0.06909, 0.0691, 7.08683205], [1516765440000, 0.0691, 0.0691, 0.0691, 0.0691, 9.29441878], [1516765500000, 0.0691, 0.0691, 0.0691, 0.0691, 0.15265139], [1516765560000, 0.0691, 0.0691, 0.0691, 0.0691, 0.06137186], [1516765620000, 0.0691, 0.06914105, 0.0691, 0.06914105, 12.3191311], [1516765680000, 0.06914105, 0.06914105, 0.06914105, 0.06914105, 0.90872066], [1516765740000, 0.06914105, 0.06972, 0.06914105, 0.06971996, 7.41998973], [1516765800000, 0.06914106, 0.06920301, 0.06914106, 0.06920301, 3.73624592], [1516765860000, 0.06971984, 0.06999997, 0.06920743, 0.06976134, 52.32445557], [1516765920000, 0.069675, 0.069675, 0.06917975, 0.06918224, 3.83582003], [1516765980000, 0.069675, 0.06994396, 0.069675, 0.06994396, 3.56515145], [1516766040000, 0.069719, 0.069719, 0.069719, 0.069719, 0.028], [1516766100000, 0.06971199, 0.06971199, 0.06971199, 0.06971199, 0.14344732], [1516766160000, 0.06967966, 0.06967966, 0.06967966, 0.06967966, 0.03552664], [1516766220000, 0.06918003, 0.06918003, 0.06918003, 0.06918003, 0.13781687], [1516766280000, 0.06918003, 0.06967962, 0.06915137, 0.06967962, 1.25985253], [1516766340000, 0.069152, 0.06967468, 0.069152, 0.06967468, 0.08261572], [1516766400000, 0.06967468, 0.06967468, 0.06917915, 0.06917915, 0.58477631], [1516766460000, 0.06967, 0.06967, 0.06967, 0.06967, 1.23357992], [1516766580000, 0.06967468, 0.06967468, 0.06967468, 0.06967468, 0.01518311], [1516766700000, 0.06967464, 0.06967466, 0.06919823, 0.06919823, 3.69843624], [1516766760000, 0.06919823, 0.06919823, 0.06919819, 0.06919823, 2.84328722], [1516766820000, 0.06919823, 0.06919823, 0.06919819, 0.06919823, 10.28018969], [1516766880000, 0.06967467, 0.06967467, 0.06967467, 0.06967467, 0.09236262], [1516766940000, 0.06967467, 0.06967467, 0.06926056, 0.06967466, 3.05903346], [1516767000000, 0.06967466, 0.06967466, 0.06929035, 0.06929035, 0.22391777], [1516767240000, 0.06930617, 0.06930617, 0.06930617, 0.06930617, 0.05016734], [1516767300000, 0.06967468, 0.06967468, 0.06965495, 0.06965495, 0.24073977], [1516767420000, 0.06967191, 0.06967191, 0.06930666, 0.06930666, 3.20847618], [1516767480000, 0.06967466, 0.06967467, 0.06930666, 0.06967467, 3.89481187], [1516767540000, 0.06930666, 0.06930666, 0.06920143, 0.06920143, 0.01590756], [1516767600000, 0.06967465, 0.06991343, 0.06967465, 0.06981726, 24.57328789], [1516767660000, 0.06990388, 0.06990389, 0.06990388, 0.06990389, 0.1072398], [1516767840000, 0.06990363, 0.06990363, 0.06990363, 0.06990363, 2.17754059], [1516767900000, 0.06978148, 0.06990362, 0.06978145, 0.06978145, 39.50469109], [1516767960000, 0.06927029, 0.06927029, 0.0692, 0.0692, 2.9382722], [1516768020000, 0.06927029, 0.06927029, 0.06919861, 0.06919862, 1.95207137], [1516768080000, 0.06919862, 0.06927029, 0.06919862, 0.06927029, 1.62275944], [1516768260000, 0.06927029, 0.06927029, 0.06927029, 0.06927029, 0.2871], [1516768380000, 0.06919861, 0.06919861, 0.06919861, 0.06919861, 0.08634205], [1516768440000, 0.06927028, 0.06927028, 0.0691986, 0.06927027, 3.75678369], [1516768500000, 0.06927026, 0.06927027, 0.06927026, 0.06927027, 1.15547319], [1516768560000, 0.06919863, 0.06927026, 0.0691986, 0.0691986, 3.49577151], [1516768620000, 0.06919818, 0.06919818, 0.06919818, 0.06919818, 0.21460148], [1516768680000, 0.06919801, 0.06919801, 0.069, 0.069, 7.09090264], [1516768740000, 0.069, 0.06919801, 0.06894427, 0.06894427, 2.58581171], [1516768800000, 0.06894427, 0.06919801, 0.06890832, 0.06890832, 0.68742854], [1516768860000, 0.06890832, 0.06890832, 0.06890831, 0.06890832, 0.46016392], [1516768920000, 0.06890832, 0.06919801, 0.0688546, 0.06919801, 1.52638652], [1516768980000, 0.06882169, 0.06882169, 0.06882169, 0.06882169, 0.37029675], [1516769040000, 0.06919801, 0.06919801, 0.06919801, 0.06919801, 2.05440976], [1516769100000, 0.06919801, 0.06927027, 0.06919801, 0.06927027, 1.28921957], [1516769160000, 0.06927023, 0.06927023, 0.069, 0.069, 2.89612254], [1516769220000, 0.069, 0.069, 0.069, 0.069, 2.47963936], [1516769280000, 0.069, 0.06924815, 0.069, 0.06924815, 20.26787353], [1516769340000, 0.06886623, 0.06886623, 0.06886623, 0.06886623, 1.1141144], [1516769400000, 0.06886623, 0.06887559, 0.06886623, 0.06887559, 8.6157208], [1516769520000, 0.06924815, 0.06942943, 0.0689205, 0.06895438, 54.08054838], [1516769580000, 0.06895438, 0.0689544, 0.06893105, 0.06895439, 4.88853786], [1516769640000, 0.06894385, 0.0692585, 0.06893105, 0.06895438, 3.11497817], [1516769700000, 0.06893106, 0.06893106, 0.06882166, 0.06882167, 14.29805805], [1516769760000, 0.06893105, 0.06893105, 0.06893105, 0.06893105, 0.42857975], [1516769820000, 0.06893105, 0.06893105, 0.068931, 0.068931, 0.4452879], [1516769880000, 0.06893104, 0.06893105, 0.06893104, 0.06893105, 0.0721767], [1516769940000, 0.06893105, 0.06893105, 0.06893105, 0.06893105, 0.90105441], [1516770000000, 0.06893105, 0.06893105, 0.06893105, 0.06893105, 13.54015719], [1516770060000, 0.06893105, 0.06893105, 0.06893105, 0.06893105, 0.25198872], [1516770120000, 0.06893105, 0.06893105, 0.06893105, 0.06893105, 2.90643397], [1516770180000, 0.0688186, 0.0688186, 0.06881859, 0.06881859, 7.15937523], [1516770240000, 0.06893099, 0.06893099, 0.06893099, 0.06893099, 0.04682254], [1516770300000, 0.06893099, 0.06893099, 0.06893099, 0.06893099, 0.4320408], [1516770360000, 0.06893099, 0.06945607, 0.06881862, 0.06945607, 32.01633191], [1516770420000, 0.06891736, 0.06891736, 0.06891736, 0.06891736, 5.21002669], [1516770480000, 0.06945607, 0.06945607, 0.06945607, 0.06945607, 0.01415547], [1516770600000, 0.0693, 0.0693, 0.0693, 0.0693, 0.14430014], [1516770720000, 0.0693, 0.0693, 0.0693, 0.0693, 0.02741703], [1516770840000, 0.06892731, 0.06930001, 0.06892731, 0.06930001, 1.97697586], [1516770900000, 0.0693, 0.06930001, 0.0693, 0.06930001, 7.75635377], [1516770960000, 0.06945604, 0.06945604, 0.06930001, 0.06930001, 2.71365707], [1516771020000, 0.06945603, 0.06945603, 0.06895779, 0.06895779, 19.94118983], [1516771140000, 0.06945603, 0.06945603, 0.06930484, 0.06930484, 0.02451158], [1516771200000, 0.06930484, 0.06930484, 0.06930484, 0.06930484, 0.34592958], [1516771260000, 0.06930484, 0.06930484, 0.06930484, 0.06930484, 10.07383684], [1516771320000, 0.06941028, 0.06941028, 0.06941028, 0.06941028, 0.0237276], [1516771380000, 0.06941028, 0.06969905, 0.06898288, 0.06954368, 9.78621799], [1516771440000, 0.06954368, 0.06957331, 0.06905503, 0.06905503, 3.074746], [1516771500000, 0.0693542, 0.0693542, 0.06896454, 0.0693542, 1.06722069], [1516771560000, 0.06930485, 0.06938493, 0.06930485, 0.06930485, 3.19554198], [1516771620000, 0.06930485, 0.06930485, 0.06930485, 0.06930485, 0.80144476], [1516771680000, 0.06930485, 0.06930485, 0.06895752, 0.06930485, 17.54614831], [1516771740000, 0.06930485, 0.06930485, 0.06894899, 0.06894899, 8.69270103], [1516771800000, 0.06930485, 0.06941805, 0.06930485, 0.06930486, 6.68563438], [1516771860000, 0.06930486, 0.069573, 0.0688957, 0.06891766, 14.80263183], [1516771920000, 0.06891544, 0.06891545, 0.06891544, 0.06891545, 2.63095743], [1516771980000, 0.06936475, 0.06957284, 0.06936475, 0.06943833, 1.39391038], [1516772040000, 0.06957292, 0.06957292, 0.06951039, 0.06951039, 0.12673986], [1516772100000, 0.06952054, 0.06952054, 0.06952054, 0.06952054, 0.00917207], [1516772220000, 0.06895229, 0.06895229, 0.06895029, 0.06895029, 1.71392537], [1516772280000, 0.06895029, 0.06895029, 0.06895029, 0.06895029, 0.53747762], [1516772460000, 0.06952045, 0.06952045, 0.0689503, 0.0689503, 1.180617], [1516772520000, 0.06952041, 0.06952041, 0.06952041, 0.06952041, 0.14384262], [1516772640000, 0.06930436, 0.06930436, 0.0692954, 0.0692954, 0.58402539], [1516772700000, 0.06935549, 0.06935549, 0.06929539, 0.06929539, 0.72418092], [1516772760000, 0.06895027, 0.06895027, 0.06895027, 0.06895027, 7.65547], [1516772880000, 0.06944483, 0.06944483, 0.06944483, 0.06944483, 0.11518717], [1516773000000, 0.0694448, 0.0694448, 0.0694448, 0.0694448, 0.04506528], [1516773180000, 0.06893834, 0.06893834, 0.06892499, 0.06892499, 2.9083], [1516773240000, 0.06894989, 0.06894989, 0.06894989, 0.06894989, 0.08740399], [1516773300000, 0.06897124, 0.06897124, 0.06897124, 0.06897124, 0.00738493], [1516773360000, 0.06939191, 0.06939191, 0.06939191, 0.06939191, 0.03496899], [1516773420000, 0.06914921, 0.06969913, 0.06914921, 0.06958458, 3.3765854], [1516773480000, 0.06958457, 0.06958457, 0.06958457, 0.06958457, 0.02620907], [1516773540000, 0.06958455, 0.06958457, 0.06911106, 0.06939192, 1.86365297], [1516773600000, 0.06939192, 0.06963978, 0.06939192, 0.06963978, 0.51407681], [1516773660000, 0.06950193, 0.06950193, 0.06942468, 0.06942468, 1.99875938], [1516773720000, 0.06942468, 0.06960487, 0.06942468, 0.06944087, 0.93653575], [1516773780000, 0.06963989, 0.06963989, 0.06963989, 0.06963989, 0.01617507], [1516774140000, 0.06946503, 0.06946503, 0.06946503, 0.06946503, 0.02770387], [1516774200000, 0.06947592, 0.06952355, 0.06947592, 0.06952355, 0.1439348], [1516774320000, 0.0694341, 0.06944532, 0.0694341, 0.06944532, 0.69921784], [1516774440000, 0.06944653, 0.06944653, 0.06897978, 0.06897978, 0.33948812], [1516774500000, 0.06939677, 0.06939677, 0.06939677, 0.06939677, 0.10105686], [1516774560000, 0.0693821, 0.0693821, 0.0693821, 0.0693821, 0.67568573], [1516774620000, 0.06936259, 0.06936259, 0.06936259, 0.06936259, 0.14758814], [1516774680000, 0.06938207, 0.06938207, 0.06897, 0.06897, 0.30126656], [1516774740000, 0.06897, 0.06897, 0.06893552, 0.06893552, 4.1915], [1516774800000, 0.06893552, 0.06893552, 0.06893552, 0.06893552, 2.0359], [1516775040000, 0.06895668, 0.0689756, 0.06895668, 0.0689756, 1.42501866], [1516775100000, 0.0689756, 0.06935236, 0.0689756, 0.06935236, 0.35681403], [1516775160000, 0.0693254, 0.0693254, 0.0693254, 0.0693254, 0.02056078], [1516775340000, 0.06937866, 0.06937866, 0.06937866, 0.06937866, 0.04514411], [1516775520000, 0.06948874, 0.06948874, 0.06898561, 0.06898561, 5.00533125], [1516775580000, 0.06896531, 0.06938144, 0.06894183, 0.06894183, 7.70120565], [1516775700000, 0.06931303, 0.06931303, 0.06892761, 0.0692754, 1.45472649], [1516775760000, 0.06892762, 0.06892762, 0.06882, 0.06882, 5.89592472], [1516775820000, 0.06882, 0.06882, 0.06882, 0.06882, 1.4567], [1516775880000, 0.06882, 0.06882, 0.06882, 0.06882, 0.1795], [1516775940000, 0.06882, 0.06882, 0.0688186, 0.0688186, 1.37357198], [1516776000000, 0.0688186, 0.06882001, 0.06881859, 0.06881859, 2.1665125], [1516776060000, 0.06881859, 0.06891542, 0.06881859, 0.06881859, 0.59403521], [1516776120000, 0.06881859, 0.06891542, 0.06881859, 0.06881859, 0.06541203], [1516776180000, 0.06891541, 0.06891541, 0.06881859, 0.06881859, 0.43204076], [1516776240000, 0.06891541, 0.06891541, 0.06881854, 0.06881854, 1.84904076], [1516776300000, 0.0689154, 0.0689154, 0.06881854, 0.06881854, 7.31354247], [1516776360000, 0.0689154, 0.0689154, 0.06881443, 0.06881443, 3.38822591], [1516776420000, 0.06881443, 0.06881443, 0.06873024, 0.06881443, 1.57920485], [1516776480000, 0.06881443, 0.06881443, 0.06881443, 0.06881443, 0.74442135], [1516776540000, 0.06882055, 0.06882055, 0.06882055, 0.06882055, 1.43739226], [1516776600000, 0.06909632, 0.06909632, 0.06909632, 0.06909632, 0.07247753], [1516776720000, 0.06882055, 0.06882055, 0.06882055, 0.06882055, 0.1007], [1516776780000, 0.0690333, 0.0690333, 0.0690333, 0.0690333, 0.02298161], [1516776840000, 0.0690333, 0.0690333, 0.0690333, 0.0690333, 0.05002758], [1516776900000, 0.0691945, 0.06922103, 0.0691945, 0.06922103, 0.47046908], [1516776960000, 0.06882056, 0.06882056, 0.06878904, 0.06878904, 7.75658206], [1516777260000, 0.06873024, 0.06873024, 0.06873024, 0.06873024, 0.27229989], [1516777320000, 0.06909988, 0.06909988, 0.06878904, 0.06907556, 1.46719099], [1516777380000, 0.06878904, 0.06905674, 0.0687, 0.0687, 3.48358586], [1516777500000, 0.0687, 0.06899999, 0.0687, 0.06899999, 0.72755506], [1516777560000, 0.06877098, 0.06877098, 0.06877098, 0.06877098, 1.2451], [1516777620000, 0.06877098, 0.0690999, 0.06877098, 0.0690999, 1.15738114], [1516777680000, 0.06880089, 0.0690999, 0.068771, 0.0690999, 7.19439102], [1516777740000, 0.06909988, 0.06909988, 0.06909988, 0.06909988, 0.02234374], [1516777800000, 0.06909988, 0.06909988, 0.06877099, 0.068771, 0.4846394], [1516777860000, 0.06877099, 0.068771, 0.06866081, 0.06866081, 4.79610493], [1516777920000, 0.0687, 0.0687, 0.06861201, 0.06861201, 21.44390189], [1516777980000, 0.06861202, 0.06861202, 0.06861202, 0.06861202, 0.02545056], [1516778040000, 0.06861202, 0.06861202, 0.06861202, 0.06861202, 1.12514803], [1516778100000, 0.06861202, 0.06861202, 0.06861202, 0.06861202, 0.1894712], [1516778160000, 0.06861202, 0.06861202, 0.06861202, 0.06861202, 0.50641289], [1516778220000, 0.06861202, 0.068771, 0.06861202, 0.068771, 0.30784642], [1516778340000, 0.068771, 0.0690193, 0.068771, 0.0690193, 0.39529874], [1516778400000, 0.0690193, 0.0690687, 0.068771, 0.068771, 0.40273712], [1516778460000, 0.068771, 0.068771, 0.068771, 0.068771, 0.02], [1516778700000, 0.06889514, 0.06901929, 0.06889514, 0.06901929, 0.26719061], [1516778760000, 0.06901928, 0.06901928, 0.06901928, 0.06901928, 0.14320466], [1516778820000, 0.06901929, 0.06901929, 0.06901929, 0.06901929, 0.29099937], [1516778880000, 0.06901928, 0.06901928, 0.06878932, 0.06878932, 0.0159738], [1516779000000, 0.0690193, 0.0690999, 0.0690193, 0.0690999, 0.144887], [1516779060000, 0.0690999, 0.0690999, 0.0690999, 0.0690999, 0.03716305], [1516779120000, 0.06878932, 0.06878932, 0.06878932, 0.06878932, 1.3116], [1516779180000, 0.06878933, 0.06878933, 0.068771, 0.068771, 0.32226417], [1516779240000, 0.06877101, 0.06878932, 0.06877101, 0.06878932, 1.11535206], [1516779300000, 0.06878932, 0.06878932, 0.06878932, 0.06878932, 0.16140296], [1516779360000, 0.06878932, 0.06878932, 0.068771, 0.068771, 0.26484209], [1516779420000, 0.068771, 0.06878932, 0.06872371, 0.06877676, 0.68288793], [1516779480000, 0.06877676, 0.06877676, 0.06877676, 0.06877676, 0.04794642], [1516779540000, 0.06872161, 0.06872161, 0.06870253, 0.06870253, 1.16558351], [1516779600000, 0.06872161, 0.0690999, 0.06872161, 0.0690999, 0.32915169], [1516779660000, 0.06883761, 0.06883761, 0.06883761, 0.06883761, 0.19137917], [1516779720000, 0.06879, 0.069, 0.06879, 0.069, 0.29970409], [1516779840000, 0.069, 0.06900001, 0.06861203, 0.06900001, 0.37093319], [1516779900000, 0.06861256, 0.0690999, 0.06861256, 0.0690999, 0.04975957], [1516780020000, 0.06900001, 0.06900001, 0.06900001, 0.06900001, 0.09167241], [1516780140000, 0.06861408, 0.06861408, 0.06861406, 0.06861406, 0.7855982], [1516780200000, 0.06900001, 0.06900001, 0.06900001, 0.06900001, 0.17703549], [1516780260000, 0.06900001, 0.06900001, 0.068764, 0.06900001, 1.44221565], [1516780320000, 0.06900001, 0.06900001, 0.06900001, 0.06900001, 0.03213584], [1516780380000, 0.069, 0.069, 0.069, 0.069, 0.01606763], [1516780440000, 0.06861663, 0.069, 0.06861663, 0.0689, 0.72622348], [1516780500000, 0.0689, 0.069, 0.0689, 0.069, 0.32224388], [1516780620000, 0.068934, 0.068934, 0.068934, 0.068934, 1.42068986], [1516780680000, 0.068934, 0.06899999, 0.068934, 0.068934, 6.98297575], [1516780740000, 0.068934, 0.068934, 0.068934, 0.068934, 2.13265467], [1516780800000, 0.06899998, 0.0690999, 0.06899998, 0.0690999, 4.10205355], [1516780860000, 0.0690999, 0.0691, 0.0690999, 0.0691, 26.90427236], [1516780920000, 0.06933204, 0.0693333, 0.06912901, 0.06912902, 3.84571772], [1516780980000, 0.06933329, 0.06933329, 0.06912902, 0.06912902, 0.04770467], [1516781040000, 0.06912902, 0.06912902, 0.069129, 0.069129, 4.38482657], [1516781100000, 0.069129, 0.06931455, 0.069129, 0.069129, 0.47486683], [1516781160000, 0.06913, 0.06913, 0.06913, 0.06913, 1.04699642], [1516781220000, 0.06913, 0.069259, 0.06913, 0.069259, 0.52982612], [1516781280000, 0.069259, 0.069259, 0.069259, 0.069259, 1.7037084], [1516781340000, 0.069259, 0.06932912, 0.069259, 0.069259, 8.68171213], [1516781400000, 0.069259, 0.069259, 0.069259, 0.069259, 0.09669559], [1516781460000, 0.069259, 0.069259, 0.069259, 0.069259, 1.52034189], [1516781520000, 0.069259, 0.069259, 0.069259, 0.069259, 0.04775553], [1516781580000, 0.06932912, 0.06932912, 0.069259, 0.069259, 11.22615906], [1516781640000, 0.06932913, 0.06932913, 0.069259, 0.069259, 5.04167181], [1516781700000, 0.069259, 0.069259, 0.069259, 0.069259, 5.33963706], [1516781760000, 0.069259, 0.069259, 0.069259, 0.069259, 3.5031263], [1516781820000, 0.06932913, 0.06932913, 0.069259, 0.069259, 0.24486102], [1516781880000, 0.069259, 0.06932913, 0.069259, 0.06932913, 6.43913558], [1516781940000, 0.069259, 0.069259, 0.069259, 0.069259, 19.14108566], [1516782000000, 0.069259, 0.069259, 0.069259, 0.069259, 6.88564845], [1516782060000, 0.069259, 0.069259, 0.06861552, 0.06861552, 30.94347655], [1516782120000, 0.06914886, 0.06914886, 0.06914886, 0.06914886, 0.28519006], [1516782180000, 0.06914885, 0.06914885, 0.06914885, 0.06914885, 0.01896449], [1516782240000, 0.0686548, 0.0686548, 0.06865479, 0.06865479, 0.18555857], [1516782300000, 0.06914884, 0.06914884, 0.06865495, 0.06890179, 2.51239261], [1516782360000, 0.06890179, 0.06914887, 0.06865563, 0.06914887, 1.69305027], [1516782420000, 0.06914888, 0.06923404, 0.06914888, 0.06914888, 11.38489099], [1516782540000, 0.06865676, 0.06923404, 0.06865676, 0.06923404, 2.90588963], [1516782600000, 0.06923404, 0.06923404, 0.06923404, 0.06923404, 0.23429162], [1516782660000, 0.06923404, 0.06948874, 0.06923404, 0.06923404, 3.48656318], [1516782720000, 0.06923404, 0.06923404, 0.06865748, 0.06923404, 2.98972118], [1516782780000, 0.06923404, 0.06923404, 0.06923404, 0.06923404, 0.63941357], [1516782900000, 0.06923404, 0.06953604, 0.06923404, 0.06941783, 1.57697113], [1516782960000, 0.06934803, 0.06934803, 0.06934803, 0.06934803, 0.21653453], [1516783020000, 0.06939919, 0.06939919, 0.06880714, 0.06880717, 0.36691955], [1516783140000, 0.06936868, 0.06936868, 0.06936868, 0.06936868, 0.05459064], [1516783200000, 0.06904949, 0.06941035, 0.06904949, 0.06941035, 2.65481869], [1516783260000, 0.06940619, 0.06940619, 0.06880771, 0.06880771, 0.15131651], [1516783320000, 0.06887658, 0.06887658, 0.06887658, 0.06887658, 0.31953896], [1516783380000, 0.06880736, 0.06880736, 0.06880736, 0.06880736, 0.02089129], [1516783440000, 0.06936868, 0.069402, 0.06880738, 0.06880807, 0.86834975], [1516783500000, 0.06880813, 0.069159, 0.06880813, 0.069159, 1.48431146], [1516783560000, 0.069159, 0.06915902, 0.069159, 0.06915901, 2.02092101], [1516783620000, 0.06915902, 0.06915902, 0.06915901, 0.06915901, 0.03359965], [1516783680000, 0.06915902, 0.069269, 0.06915902, 0.069269, 0.92810328], [1516783740000, 0.06938665, 0.069402, 0.069269, 0.069269, 0.16175324], [1516783800000, 0.06926901, 0.06926901, 0.06926901, 0.06926901, 0.03183242], [1516783860000, 0.069402, 0.069402, 0.069399, 0.069399, 12.12143767], [1516783920000, 0.069399, 0.069399, 0.069399, 0.069399, 0.94261322], [1516783980000, 0.069399, 0.069402, 0.069399, 0.069399, 14.04074557], [1516784040000, 0.069399, 0.069402, 0.069399, 0.069402, 11.41430496], [1516784100000, 0.069402, 0.069402, 0.069399, 0.069399, 2.89553362], [1516784160000, 0.069399, 0.069402, 0.069399, 0.069399, 2.84033819], [1516784220000, 0.069399, 0.069399, 0.069399, 0.069399, 4.3335], [1516784280000, 0.069399, 0.069399, 0.069399, 0.069399, 2.0], [1516784400000, 0.069402, 0.069402, 0.069402, 0.069402, 0.7204403], [1516784460000, 0.069402, 0.069402, 0.069402, 0.069402, 42.74191734], [1516784520000, 0.0694202, 0.06953606, 0.0694202, 0.06953606, 1.01717057], [1516784580000, 0.0694202, 0.06953606, 0.0694202, 0.06953606, 1.44214004], [1516784640000, 0.06959999, 0.06959999, 0.06959999, 0.06959999, 0.01475711], [1516784700000, 0.06959999, 0.06959999, 0.069539, 0.069539, 0.23577573], [1516784880000, 0.069539, 0.069539, 0.069539, 0.069539, 3.22489999], [1516784940000, 0.069539, 0.069539, 0.069539, 0.069539, 0.408], [1516785000000, 0.06959999, 0.0697052, 0.06959999, 0.06966727, 11.11526246], [1516785060000, 0.069664, 0.069732, 0.069664, 0.069664, 17.26248532], [1516785120000, 0.069664, 0.069664, 0.069664, 0.069664, 4.32007331], [1516785180000, 0.069664, 0.069664, 0.069664, 0.069664, 0.06465192], [1516785240000, 0.069664, 0.069664, 0.069664, 0.069664, 10.40164093], [1516785300000, 0.069664, 0.06967, 0.069664, 0.069664, 0.35118572], [1516785360000, 0.069664, 0.069664, 0.069664, 0.069664, 0.03165192], [1516785420000, 0.069664, 0.069664, 0.069664, 0.069664, 2.72332092], [1516785480000, 0.069664, 0.069664, 0.069664, 0.069664, 4.31269211], [1516785540000, 0.06967, 0.06967, 0.069664, 0.069664, 7.63404792], [1516785600000, 0.069664, 0.06967, 0.069664, 0.0696695, 6.47585641], [1516785660000, 0.0696695, 0.06967, 0.069664, 0.069664, 5.34602714], [1516785720000, 0.069664, 0.06967, 0.069664, 0.069664, 2.21932529], [1516785780000, 0.069664, 0.069666, 0.069664, 0.069666, 0.98468971], [1516785840000, 0.069664, 0.06966599, 0.069664, 0.069664, 2.54397364], [1516785900000, 0.069664, 0.06966599, 0.069664, 0.069664, 1.49140098], [1516785960000, 0.069664, 0.069664, 0.069664, 0.069664, 2.18652483], [1516786020000, 0.069664, 0.069664, 0.069664, 0.069664, 0.92535235], [1516786080000, 0.069664, 0.069664, 0.06930806, 0.06930806, 5.67128712], [1516786140000, 0.06928652, 0.06928652, 0.06928652, 0.06928652, 0.00732188], [1516786200000, 0.06928652, 0.06966397, 0.06928652, 0.06966397, 0.26586237], [1516786260000, 0.06966397, 0.06966397, 0.06926901, 0.06926901, 6.77218517], [1516786380000, 0.06966396, 0.06966396, 0.06966396, 0.06966396, 0.06008961], [1516786440000, 0.06926901, 0.06966395, 0.06926901, 0.06966395, 0.64307518], [1516786500000, 0.06966393, 0.06966393, 0.06966393, 0.06966393, 0.07177315], [1516786560000, 0.06966391, 0.06967, 0.06926901, 0.06926901, 8.12616838], [1516786620000, 0.06926901, 0.06926901, 0.06926901, 0.06926901, 1.29218765], [1516786740000, 0.06926901, 0.06926901, 0.06926901, 0.06926901, 3.4734], [1516786800000, 0.06926901, 0.06978147, 0.06926901, 0.06968, 8.14312585], [1516786860000, 0.06968, 0.06972878, 0.06911927, 0.06918448, 2.68335071], [1516786920000, 0.06967999, 0.06967999, 0.06967999, 0.06967999, 0.051003], [1516786980000, 0.0692256, 0.0692256, 0.0692256, 0.0692256, 0.8689], [1516787040000, 0.06967999, 0.06967999, 0.06967999, 0.06967999, 0.20216344], [1516787100000, 0.06968, 0.06968, 0.06968, 0.06968, 0.22441781], [1516787160000, 0.06968, 0.06978149, 0.06968, 0.06978149, 11.56437768], [1516787220000, 0.06978149, 0.06983223, 0.06978149, 0.06983223, 7.14223739], [1516787280000, 0.06930401, 0.06983219, 0.06930401, 0.06983218, 0.57264046], [1516787400000, 0.06930628, 0.06930628, 0.06930628, 0.06930628, 0.01790777], [1516787520000, 0.0698322, 0.0698322, 0.0698322, 0.0698322, 0.02804788], [1516787580000, 0.069732, 0.069732, 0.069732, 0.069732, 1.10328981], [1516787640000, 0.069732, 0.069732, 0.069732, 0.069732, 0.01881186], [1516787700000, 0.06973199, 0.06973199, 0.06973199, 0.06973199, 0.19454764], [1516787760000, 0.06973198, 0.06973198, 0.06973198, 0.06973198, 0.07170311], [1516787820000, 0.06973197, 0.06973197, 0.06973197, 0.06973197, 0.02], [1516787880000, 0.06973195, 0.06973195, 0.06921007, 0.06921007, 8.64913067], [1516787940000, 0.06921006, 0.06921007, 0.06921006, 0.06921007, 1.04231218], [1516788000000, 0.06973194, 0.06973194, 0.06889649, 0.06889649, 4.27387798], [1516788060000, 0.06901651, 0.06901651, 0.06901651, 0.06901651, 1.07818279], [1516788120000, 0.069225, 0.06973196, 0.069225, 0.06973196, 1.01250906], [1516788180000, 0.06920818, 0.06920818, 0.06920004, 0.06920004, 0.38663994], [1516788240000, 0.06920003, 0.06920508, 0.06920003, 0.06920508, 0.37178443], [1516788300000, 0.06973185, 0.06973185, 0.06928323, 0.06928323, 0.43021914], [1516788360000, 0.06928348, 0.06928348, 0.0692, 0.06928116, 14.54849695], [1516788420000, 0.06973182, 0.06973182, 0.0692, 0.0692, 2.30347785], [1516788540000, 0.06920923, 0.06920923, 0.06920923, 0.06920923, 6.07], [1516788600000, 0.06920531, 0.06920531, 0.06920531, 0.06920531, 0.10740743], [1516788660000, 0.06924608, 0.06924608, 0.06924608, 0.06924608, 0.01992912], [1516788720000, 0.06924608, 0.06973157, 0.06924608, 0.06973152, 0.78024407], [1516788900000, 0.06973151, 0.06973192, 0.06973151, 0.06973153, 2.32651498], [1516788960000, 0.06973153, 0.06973153, 0.06973153, 0.06973153, 3.1628], [1516789020000, 0.0697319, 0.0697319, 0.06973153, 0.0697319, 1.20094782], [1516789080000, 0.06973153, 0.06973153, 0.06946094, 0.06946094, 0.33713168], [1516789140000, 0.06946094, 0.06946094, 0.0693731, 0.0693731, 1.07354607], [1516789200000, 0.06973158, 0.06973158, 0.06973158, 0.06973158, 0.37234841], [1516789320000, 0.06973155, 0.06973157, 0.06921604, 0.06973157, 1.48565719], [1516789380000, 0.06932632, 0.06973157, 0.06912203, 0.06973157, 1.25778013], [1516789440000, 0.06926755, 0.06926755, 0.06926755, 0.06926755, 0.38731153], [1516789500000, 0.06928254, 0.06973155, 0.06928254, 0.06933823, 7.84691319], [1516789560000, 0.06938381, 0.06973154, 0.06938381, 0.06973154, 0.23610411], [1516789620000, 0.06973156, 0.06973156, 0.06973156, 0.06973156, 0.23328324], [1516789680000, 0.06973154, 0.06973154, 0.06973154, 0.06973154, 0.0647712], [1516789800000, 0.06973151, 0.06973187, 0.06939999, 0.06973187, 1.08057222], [1516789860000, 0.06973186, 0.06973187, 0.06973186, 0.06973187, 0.4278], [1516789980000, 0.06973185, 0.06973185, 0.06973185, 0.06973185, 0.01587013], [1516790040000, 0.06947023, 0.06973185, 0.0694702, 0.0694702, 0.15363469], [1516790100000, 0.06973185, 0.06973185, 0.06973185, 0.06973185, 0.30268331], [1516790160000, 0.06973185, 0.06973188, 0.06973185, 0.06973188, 1.47125732], [1516790220000, 0.06973198, 0.06973199, 0.06973188, 0.06973188, 0.0460993], [1516790280000, 0.06973199, 0.06973199, 0.06947372, 0.06973199, 0.1289624], [1516790340000, 0.06973198, 0.06973198, 0.06973198, 0.06973198, 0.03185295], [1516790400000, 0.06932448, 0.06973199, 0.06932448, 0.06973199, 0.41965043], [1516790460000, 0.06927803, 0.06973198, 0.06927803, 0.06973198, 0.08361233], [1516790520000, 0.06973198, 0.06973198, 0.06938709, 0.06973198, 0.62669398], [1516790580000, 0.06935222, 0.06973196, 0.06935222, 0.06973196, 0.0856552], [1516790640000, 0.06973196, 0.06973198, 0.06973196, 0.06973198, 0.03162119], [1516790700000, 0.06973196, 0.06973198, 0.06973196, 0.06973198, 0.40416246], [1516790760000, 0.06973198, 0.06973199, 0.06947533, 0.06947533, 2.19091259], [1516790820000, 0.069732, 0.069732, 0.069732, 0.069732, 0.01588625], [1516790880000, 0.0694, 0.0694, 0.0694, 0.0694, 0.07374764], [1516790940000, 0.069732, 0.069732, 0.069426, 0.069426, 0.09131964], [1516791000000, 0.069732, 0.069732, 0.069732, 0.069732, 0.14340618], [1516791060000, 0.069426, 0.069426, 0.069426, 0.069426, 0.15797782], [1516791180000, 0.069732, 0.069732, 0.06947548, 0.06947548, 0.03594213], [1516791240000, 0.069732, 0.069732, 0.06966397, 0.069732, 4.7647711], [1516791300000, 0.069732, 0.069732, 0.06944145, 0.06944145, 7.27803564], [1516791360000, 0.069732, 0.069732, 0.069732, 0.069732, 0.01587653], [1516791420000, 0.06945, 0.069532, 0.06945, 0.069532, 0.04273672], [1516791480000, 0.06945, 0.069532, 0.06945, 0.069532, 0.04424602], [1516791540000, 0.069532, 0.069532, 0.06942602, 0.06942602, 9.14878284], [1516791600000, 0.069732, 0.069732, 0.06945048, 0.06945048, 0.55052652], [1516791660000, 0.06944022, 0.06944106, 0.06944022, 0.06944106, 0.73829954], [1516791780000, 0.06944452, 0.06944452, 0.06944452, 0.06944452, 5.57662], [1516791840000, 0.06944452, 0.06944452, 0.06944452, 0.06944452, 0.13570228], [1516791900000, 0.06951396, 0.069732, 0.0694, 0.069732, 0.83746426], [1516791960000, 0.0694, 0.06971785, 0.06918507, 0.06930087, 3.98912364], [1516792020000, 0.06922836, 0.0696954, 0.06922836, 0.0693027, 0.1354506], [1516792080000, 0.06931501, 0.06931668, 0.06931501, 0.06931668, 0.24850062], [1516792140000, 0.0692956, 0.06931244, 0.0692956, 0.06931244, 5.13599247], [1516792200000, 0.06971534, 0.06971534, 0.06929073, 0.06929073, 0.40517834], [1516792260000, 0.06971534, 0.06971534, 0.06922902, 0.06927538, 0.22884235], [1516792320000, 0.06970754, 0.06970754, 0.06927799, 0.06927799, 0.0503462], [1516792380000, 0.06969106, 0.06969106, 0.06969106, 0.06969106, 0.04752612], [1516792440000, 0.06969106, 0.06969106, 0.06927417, 0.06927417, 0.10705458], [1516792500000, 0.06968969, 0.06968969, 0.06927417, 0.06927417, 0.70834822], [1516792560000, 0.06927417, 0.06927417, 0.06927417, 0.06927417, 0.12440456], [1516792620000, 0.06923262, 0.0692402, 0.06923262, 0.0692402, 0.15085676], [1516792680000, 0.06968033, 0.0699, 0.06929322, 0.06930451, 30.1154311], [1516792740000, 0.06974255, 0.06974255, 0.0692317, 0.0692819, 5.44457187], [1516792800000, 0.06924042, 0.06971097, 0.0692317, 0.06971097, 2.09362386], [1516792860000, 0.06970863, 0.06971097, 0.06970863, 0.06971097, 1.18603623], [1516792920000, 0.06971097, 0.06971097, 0.06971064, 0.06971097, 0.58169363], [1516792980000, 0.06980199, 0.06980199, 0.06971097, 0.06971097, 2.56068638], [1516793040000, 0.06971097, 0.06979513, 0.06971097, 0.06979513, 0.6119173], [1516793100000, 0.06999896, 0.07, 0.06971097, 0.06971097, 1.82596322], [1516793160000, 0.06971097, 0.06971097, 0.06971097, 0.06971097, 0.30152745], [1516793220000, 0.06971097, 0.06971097, 0.06971097, 0.06971097, 0.10767152], [1516793280000, 0.069815, 0.069815, 0.06971097, 0.06971097, 8.47513504], [1516793340000, 0.06971097, 0.06971097, 0.06971097, 0.06971097, 10.564893], [1516793400000, 0.06971097, 0.06971097, 0.06919854, 0.06962001, 31.69610816], [1516793460000, 0.06916273, 0.06916273, 0.06916273, 0.06916273, 0.1240986], [1516793520000, 0.06950974, 0.06978321, 0.06950974, 0.06978321, 6.23304206], [1516793580000, 0.06912463, 0.06912464, 0.06912462, 0.06912464, 2.09532594], [1516793640000, 0.0694922, 0.0695245, 0.06910051, 0.06910051, 14.48582224], [1516793700000, 0.06910055, 0.06972445, 0.06910055, 0.06972445, 0.55604783], [1516793760000, 0.06928151, 0.0693532, 0.06928151, 0.0693532, 0.84259504], [1516793820000, 0.06907594, 0.06907594, 0.06907594, 0.06907594, 0.07587231], [1516793880000, 0.06961304, 0.06961304, 0.06961304, 0.06961304, 0.22984196], [1516793940000, 0.06930197, 0.06930197, 0.06925857, 0.06925857, 8.30235876], [1516794000000, 0.069613, 0.06961305, 0.069613, 0.06961305, 0.5889704], [1516794060000, 0.06962676, 0.06962676, 0.06962676, 0.06962676, 1.91827541], [1516794120000, 0.06927778, 0.06962676, 0.06927778, 0.06962676, 4.34981382], [1516794180000, 0.06938256, 0.06938256, 0.06938256, 0.06938256, 0.01589215], [1516794240000, 0.06938256, 0.06962676, 0.06938256, 0.06962676, 1.0169456], [1516794300000, 0.069501, 0.06982262, 0.069501, 0.06982262, 1.03673719], [1516794360000, 0.06982262, 0.06986331, 0.06982262, 0.06983794, 0.38535378], [1516794420000, 0.0694817, 0.0694817, 0.0694817, 0.0694817, 0.69036196], [1516794480000, 0.06950022, 0.06994144, 0.06950022, 0.06994144, 0.11594953], [1516794540000, 0.06994144, 0.06994144, 0.06994144, 0.06994144, 0.03309624], [1516794600000, 0.0699414, 0.0699414, 0.0697, 0.0697, 0.2950776], [1516794660000, 0.0699414, 0.0699414, 0.06955252, 0.06955252, 4.17367096], [1516794720000, 0.06955252, 0.06955254, 0.06955252, 0.06955254, 1.06536749], [1516794780000, 0.0694817, 0.06955253, 0.0694817, 0.0694817, 0.23992013], [1516794840000, 0.0694817, 0.06955253, 0.0694817, 0.06955253, 1.52260752], [1516794900000, 0.0694817, 0.06989634, 0.0694817, 0.06989634, 0.87773666], [1516794960000, 0.0694817, 0.0694817, 0.0694817, 0.0694817, 1.0], [1516795020000, 0.06941008, 0.06941008, 0.06941008, 0.06941008, 0.13260489], [1516795140000, 0.06938982, 0.06938997, 0.06938982, 0.06938996, 0.13634308], [1516795200000, 0.0693595, 0.06968581, 0.0693595, 0.06968581, 0.77761359], [1516795260000, 0.06970475, 0.06970475, 0.06935949, 0.06935949, 0.20208408], [1516795320000, 0.06935949, 0.06974939, 0.06935949, 0.06935949, 2.15715648], [1516795380000, 0.06935949, 0.06935949, 0.06935949, 0.06935949, 3.0], [1516795440000, 0.06935949, 0.06935949, 0.06935949, 0.06935949, 0.5967967], [1516795500000, 0.06977813, 0.06977813, 0.06977813, 0.06977813, 0.1433102], [1516795560000, 0.06947907, 0.06947907, 0.06947907, 0.06947907, 0.04020611], [1516795620000, 0.06980763, 0.0699029, 0.06950313, 0.06950313, 3.12366589], [1516795680000, 0.06948169, 0.06987922, 0.06948169, 0.06987922, 2.45232437], [1516795740000, 0.0699029, 0.0699029, 0.06948169, 0.06948169, 0.04343307], [1516795800000, 0.0695341, 0.0699029, 0.0695341, 0.0699029, 1.07368341], [1516795860000, 0.06948169, 0.06948169, 0.06948169, 0.06948169, 0.09863065], [1516795920000, 0.06948169, 0.06948169, 0.06924535, 0.06924535, 5.14608356], [1516795980000, 0.06925619, 0.06933168, 0.06925619, 0.06932737, 23.46012343], [1516796040000, 0.06920943, 0.06920943, 0.06920743, 0.06920743, 2.48552553], [1516796100000, 0.06968108, 0.06968109, 0.06968108, 0.06968109, 0.43053279], [1516796160000, 0.06929963, 0.06970089, 0.06929963, 0.06929964, 1.40758096], [1516796220000, 0.06929964, 0.06929964, 0.06929963, 0.06929963, 0.24179246], [1516796280000, 0.06926425, 0.06926425, 0.06926425, 0.06926425, 0.50831172], [1516796340000, 0.06928109, 0.06928109, 0.06928109, 0.06928109, 0.02738426], [1516796400000, 0.06968548, 0.0696855, 0.06965297, 0.0696855, 1.26883104], [1516796460000, 0.06929085, 0.0696855, 0.06928109, 0.06928109, 6.27507327], [1516796520000, 0.06928109, 0.06928109, 0.06928109, 0.06928109, 0.32061205], [1516796580000, 0.06928109, 0.06928109, 0.06926424, 0.06926425, 10.6041736], [1516796640000, 0.06926425, 0.06926425, 0.06926424, 0.06926424, 0.4800824], [1516796700000, 0.06926424, 0.06967063, 0.06926424, 0.06967062, 0.69001886], [1516796760000, 0.0696648, 0.0696648, 0.06926424, 0.06926424, 0.60970415], [1516796820000, 0.06937388, 0.06966479, 0.06937388, 0.06966479, 0.61347964], [1516796880000, 0.06966479, 0.06966479, 0.06939381, 0.06939381, 0.09177958], [1516796940000, 0.06939381, 0.0696648, 0.06939381, 0.0696648, 0.96556558], [1516797000000, 0.06939381, 0.06979875, 0.06939381, 0.06966484, 4.33476063], [1516797060000, 0.06979302, 0.06982403, 0.06979302, 0.06979302, 3.61913982], [1516797120000, 0.06979302, 0.06982402, 0.06979302, 0.06979302, 2.33114352], [1516797180000, 0.06979302, 0.06979302, 0.06966484, 0.06979302, 1.8577323], [1516797240000, 0.06966484, 0.06979302, 0.0696648, 0.06979302, 3.14151479], [1516797300000, 0.06979302, 0.06979302, 0.0696648, 0.06979302, 1.27307488], [1516797360000, 0.06979302, 0.06979302, 0.0696648, 0.06970689, 0.1320076], [1516797420000, 0.06971673, 0.06971673, 0.06939381, 0.06970689, 8.56936756], [1516797480000, 0.06969238, 0.06969238, 0.06939381, 0.06939381, 0.58182206], [1516797540000, 0.0696591, 0.0696591, 0.06939381, 0.06939381, 22.30371562], [1516797600000, 0.06939381, 0.06939381, 0.06926425, 0.06926425, 0.76069767], [1516797660000, 0.06926425, 0.0693938, 0.06906203, 0.06926425, 22.90716074], [1516797720000, 0.06918043, 0.06939379, 0.06906202, 0.06920251, 3.56921629], [1516797780000, 0.06939379, 0.0693938, 0.06914448, 0.06939379, 0.32046446], [1516797840000, 0.06910627, 0.06939379, 0.06910627, 0.06939379, 0.11175077], [1516797900000, 0.06939375, 0.06939379, 0.06906202, 0.06906202, 0.56577426], [1516797960000, 0.06906203, 0.06906203, 0.06906201, 0.06906202, 27.73352502], [1516798020000, 0.069062, 0.06906202, 0.06871613, 0.06906202, 20.23916695], [1516798080000, 0.0688398, 0.06906202, 0.0688398, 0.06906202, 5.07087605], [1516798140000, 0.06906202, 0.06906202, 0.06906202, 0.06906202, 0.5581082], [1516798200000, 0.069062, 0.06906202, 0.06892708, 0.06906202, 1.23455813], [1516798260000, 0.06906202, 0.06906202, 0.06906202, 0.06906202, 2.21227657], [1516798320000, 0.06906202, 0.06906202, 0.06892708, 0.06906202, 0.17478552], [1516798380000, 0.06906202, 0.06906202, 0.06903, 0.06906202, 3.31926365], [1516798440000, 0.06906202, 0.06906202, 0.06906202, 0.06906202, 3.01426395], [1516798500000, 0.06906202, 0.06906202, 0.06906202, 0.06906202, 0.14479742], [1516798560000, 0.068968, 0.068968, 0.068968, 0.068968, 0.02], [1516798620000, 0.06906201, 0.06906202, 0.06906201, 0.06906202, 12.36750712], [1516798680000, 0.06906202, 0.06906202, 0.06897001, 0.069, 31.44803711], [1516798740000, 0.069, 0.06906202, 0.069, 0.06906202, 2.60989744], [1516798800000, 0.06906202, 0.06906202, 0.06906202, 0.06906202, 2.50609957], [1516798860000, 0.06906202, 0.06906202, 0.06906202, 0.06906202, 1.05846481], [1516798920000, 0.06906202, 0.06906202, 0.06896915, 0.06906202, 9.07733428], [1516798980000, 0.06906202, 0.06939379, 0.06896904, 0.06939379, 9.17981091], [1516799040000, 0.06937739, 0.06937739, 0.06906202, 0.06906202, 1.95133149], [1516799100000, 0.06936188, 0.06936188, 0.06936188, 0.06936188, 0.14417136], [1516799160000, 0.06896904, 0.06896904, 0.06896902, 0.06896902, 5.83432104], [1516799220000, 0.06899285, 0.06899285, 0.06899285, 0.06899285, 0.01162436], [1516799280000, 0.06896902, 0.06896904, 0.06896902, 0.06896904, 0.54480969], [1516799340000, 0.06897104, 0.0690178, 0.06896904, 0.06896904, 0.25111527], [1516799400000, 0.06935417, 0.06936464, 0.06935417, 0.06935417, 0.1771799], [1516799460000, 0.06935417, 0.06935417, 0.0691116, 0.06934709, 0.32769804], [1516799520000, 0.0689723, 0.0689723, 0.06892708, 0.06892708, 1.2262547], [1516799640000, 0.06883981, 0.06883981, 0.06883981, 0.06883981, 0.08266], [1516799700000, 0.069188, 0.06932389, 0.069188, 0.06928412, 7.27039845], [1516799760000, 0.06925554, 0.06925554, 0.06883981, 0.06924708, 16.12664974], [1516799820000, 0.06925553, 0.06925965, 0.06925553, 0.06925965, 1.23654631], [1516799880000, 0.06883981, 0.06905965, 0.06883981, 0.06905965, 2.90221861], [1516799940000, 0.06925963, 0.06925965, 0.06925963, 0.06925965, 5.00000191], [1516800000000, 0.06925962, 0.06925962, 0.06905965, 0.06905965, 0.56167254], [1516800060000, 0.06925962, 0.06925965, 0.069, 0.06925965, 4.02791655], [1516800120000, 0.06925965, 0.06925965, 0.069, 0.06925965, 1.15644005], [1516800180000, 0.06925965, 0.06925965, 0.06900002, 0.06925965, 13.38422058], [1516800240000, 0.06900724, 0.06925965, 0.06900724, 0.06925965, 0.06663191], [1516800300000, 0.06925965, 0.06925965, 0.06925965, 0.06925965, 0.31811246], [1516800360000, 0.06925965, 0.06925965, 0.06925965, 0.06925965, 27.5475544], [1516800420000, 0.06910166, 0.06910166, 0.06910166, 0.06910166, 0.0866931], [1516800480000, 0.0693938, 0.06969116, 0.0693938, 0.06969116, 2.47861718], [1516800540000, 0.06910169, 0.06979301, 0.06910169, 0.0695465, 2.79899178], [1516800600000, 0.06955065, 0.0697914, 0.0691438, 0.069653, 27.03911591], [1516800660000, 0.06916707, 0.06977601, 0.06914928, 0.06914928, 15.05840626], [1516800720000, 0.06965298, 0.06979301, 0.06965298, 0.06965746, 9.10921408], [1516800780000, 0.0696834, 0.06968424, 0.06965746, 0.06965746, 4.84290915], [1516800840000, 0.069616, 0.06979301, 0.0692023, 0.0692023, 23.39005409], [1516800900000, 0.06969999, 0.06979301, 0.06923085, 0.06969998, 1.77383537], [1516800960000, 0.06969, 0.06969, 0.06921048, 0.06921048, 2.35843842], [1516801020000, 0.06968998, 0.06968998, 0.06916042, 0.06916042, 5.90126359], [1516801080000, 0.06918844, 0.06918844, 0.0691438, 0.06917792, 0.50073174], [1516801140000, 0.06917793, 0.06964407, 0.06917793, 0.06964407, 0.50125363], [1516801200000, 0.06961102, 0.06968999, 0.06961102, 0.06968999, 0.62071441], [1516801260000, 0.06917753, 0.06917753, 0.06917752, 0.06917752, 0.19074436], [1516801320000, 0.06965, 0.06965, 0.06915153, 0.06964999, 1.9378079], [1516801380000, 0.06964999, 0.06968999, 0.06964999, 0.06964999, 4.08797484], [1516801440000, 0.06964999, 0.06964999, 0.06916559, 0.06916559, 2.3910704], [1516801500000, 0.06964999, 0.06968999, 0.06964999, 0.06968999, 53.49508976], [1516801560000, 0.06918708, 0.06918708, 0.06918708, 0.06918708, 0.02024262], [1516801620000, 0.06915166, 0.069688, 0.06915166, 0.06968798, 1.25908518], [1516801680000, 0.0691599, 0.06969997, 0.0691599, 0.0691599, 0.2030432], [1516801740000, 0.06916232, 0.06969998, 0.06914381, 0.06914381, 1.43933284], [1516801800000, 0.06916355, 0.06969899, 0.06916231, 0.06916231, 3.0321719], [1516801860000, 0.06916231, 0.06959999, 0.06916231, 0.06959999, 0.22636063], [1516801920000, 0.06920882, 0.06920882, 0.06920882, 0.06920882, 0.5187], [1516802040000, 0.06959999, 0.06959999, 0.0691438, 0.0691438, 0.22216133], [1516802100000, 0.06920882, 0.06959999, 0.0692088, 0.0692088, 1.02203553], [1516802160000, 0.0692088, 0.0694585, 0.0691438, 0.0694585, 0.99779499], [1516802220000, 0.0691438, 0.0691438, 0.06910166, 0.06910166, 2.7753023], [1516802280000, 0.06900942, 0.06929816, 0.06899547, 0.06899547, 6.98980221], [1516802340000, 0.0694584, 0.0694584, 0.06895903, 0.06895903, 0.62505998], [1516802400000, 0.06944999, 0.0694584, 0.06897249, 0.0694584, 0.73943036], [1516802460000, 0.06897711, 0.06945838, 0.06896388, 0.06896388, 9.52254135], [1516802520000, 0.06902284, 0.06945848, 0.06902284, 0.06945848, 12.24359], [1516802580000, 0.0694585, 0.0694585, 0.0694585, 0.0694585, 0.0240321], [1516802640000, 0.06945848, 0.0694585, 0.06945848, 0.0694585, 9.01702046], [1516802700000, 0.0694585, 0.0694585, 0.06911199, 0.06911199, 14.31977864], [1516802820000, 0.06914412, 0.06974493, 0.06914412, 0.06974493, 1.00715106], [1516802880000, 0.06974493, 0.06974493, 0.06974493, 0.06974493, 1.08536653], [1516803000000, 0.06974491, 0.06974491, 0.06962166, 0.06967709, 0.79240602], [1516803060000, 0.06914111, 0.06914111, 0.06914111, 0.06914111, 2.20099444], [1516803120000, 0.06914111, 0.06914111, 0.06914111, 0.06914111, 5.03189373], [1516803180000, 0.06914111, 0.06914111, 0.06914, 0.06914111, 1.11639766], [1516803240000, 0.06914111, 0.06914111, 0.06884318, 0.0689091, 17.32870336], [1516803300000, 0.069, 0.069, 0.06883982, 0.069, 0.99871709], [1516803360000, 0.069, 0.06914111, 0.06886272, 0.06887014, 5.80531234], [1516803420000, 0.0691411, 0.0691411, 0.06883981, 0.06883981, 0.71911492], [1516803480000, 0.06883981, 0.06887015, 0.06883981, 0.06887014, 33.91526836], [1516803540000, 0.06887014, 0.06914111, 0.06887014, 0.0688909, 7.77524972], [1516803600000, 0.06914111, 0.06938998, 0.06883981, 0.0693699, 4.04507825], [1516803660000, 0.06940822, 0.06948054, 0.0691411, 0.0693365, 9.88056871], [1516803780000, 0.0691411, 0.0691411, 0.0691411, 0.0691411, 0.81999367], [1516803900000, 0.0691411, 0.06950133, 0.0691411, 0.06950128, 2.43326089], [1516803960000, 0.06950128, 0.06950128, 0.0691411, 0.0691411, 1.87363922], [1516804020000, 0.0691411, 0.06950127, 0.0691411, 0.06943149, 1.81782174], [1516804080000, 0.0691411, 0.06930085, 0.069, 0.069, 51.75238431], [1516804140000, 0.06883982, 0.06883982, 0.06881884, 0.06881884, 2.06982425], [1516804200000, 0.0688188, 0.0688188, 0.0688188, 0.0688188, 0.90956652], [1516804260000, 0.0688188, 0.0689, 0.0688188, 0.0689, 8.14668167], [1516804320000, 0.0689, 0.06925325, 0.06866545, 0.06925325, 8.35332018], [1516804380000, 0.06917871, 0.06918169, 0.06917871, 0.06917871, 2.55497828], [1516804500000, 0.06879, 0.06879, 0.06879, 0.06879, 0.05], [1516804560000, 0.06879001, 0.06879001, 0.06866618, 0.0687, 1.41473602], [1516804620000, 0.06916355, 0.06916355, 0.06916355, 0.06916355, 0.07547377], [1516804680000, 0.06870001, 0.06870001, 0.06870001, 0.06870001, 0.0136876], [1516804740000, 0.06917871, 0.06917871, 0.06917871, 0.06917871, 0.03401342], [1516804800000, 0.06881006, 0.06881006, 0.06881006, 0.06881006, 0.02134937], [1516804860000, 0.06881, 0.06881006, 0.06870001, 0.06881006, 1.05542981], [1516804920000, 0.06881006, 0.06917869, 0.06870001, 0.06917869, 0.14612464], [1516804980000, 0.06917871, 0.06917871, 0.06870006, 0.06870006, 2.04397298], [1516805040000, 0.06870006, 0.06920771, 0.06870006, 0.06917451, 8.28789863], [1516805100000, 0.0691787, 0.06925323, 0.06870052, 0.06870052, 0.21280513], [1516805160000, 0.06917451, 0.06917451, 0.06870071, 0.06870071, 0.87544948], [1516805220000, 0.06917451, 0.06917451, 0.06917451, 0.06917451, 2.947527], [1516805280000, 0.06917451, 0.06917451, 0.06880104, 0.0688011, 0.91248354], [1516805340000, 0.06917451, 0.06917451, 0.06880113, 0.06880113, 1.03941628], [1516805400000, 0.06917451, 0.06917451, 0.06917451, 0.06917451, 0.14456194], [1516805460000, 0.06880114, 0.06925324, 0.06880114, 0.06880124, 4.87637891], [1516805520000, 0.06880117, 0.06927971, 0.06880114, 0.06880128, 0.3509957], [1516805580000, 0.0693258, 0.06932592, 0.06880135, 0.06880135, 0.75645223], [1516805640000, 0.069, 0.069, 0.069, 0.069, 0.23642269], [1516805700000, 0.069, 0.069, 0.06880114, 0.069, 1.04109562], [1516805760000, 0.06880115, 0.069, 0.06880115, 0.069, 0.77727438], [1516805820000, 0.06904714, 0.06904714, 0.06880114, 0.06904714, 1.92378902], [1516805880000, 0.06880117, 0.06904714, 0.06880117, 0.06904714, 0.67487929], [1516805940000, 0.0688013, 0.0688013, 0.0688013, 0.0688013, 0.01880757], [1516806060000, 0.06928928, 0.06928928, 0.0688013, 0.0688013, 0.43942635], [1516806120000, 0.0688013, 0.06928928, 0.06880114, 0.06880114, 2.90969156], [1516806180000, 0.06928928, 0.06928928, 0.06880114, 0.06880114, 0.50009947], [1516806240000, 0.06880116, 0.06880116, 0.06880116, 0.06880116, 0.24396358], [1516806300000, 0.06928102, 0.06928102, 0.06880116, 0.06880116, 0.41248883], [1516806360000, 0.06926249, 0.06926249, 0.06880114, 0.06880114, 1.22625509], [1516806420000, 0.06920953, 0.06920953, 0.06896528, 0.06896528, 0.18741675], [1516806480000, 0.06896529, 0.06896529, 0.06896529, 0.06896529, 0.06000836], [1516806540000, 0.06926248, 0.06926249, 0.06880117, 0.06880117, 2.01573714], [1516806600000, 0.06925739, 0.06925739, 0.06880117, 0.06925739, 0.11617033], [1516806660000, 0.06925225, 0.06925225, 0.06925224, 0.06925225, 0.87860472], [1516806720000, 0.06880119, 0.06880119, 0.06880119, 0.06880119, 0.19720278], [1516806780000, 0.06926195, 0.06926195, 0.06880123, 0.06926195, 0.7324025], [1516806840000, 0.06880127, 0.06880127, 0.06880127, 0.06880127, 0.03274977], [1516806900000, 0.06926189, 0.0692625, 0.06880125, 0.0692625, 6.54699688], [1516806960000, 0.0692624, 0.0692624, 0.068891, 0.068891, 0.07580355], [1516807020000, 0.06926239, 0.0692625, 0.0688366, 0.06883661, 36.08584251], [1516807080000, 0.0692624, 0.0692624, 0.0692624, 0.0692624, 1.33357211], [1516807140000, 0.06882245, 0.06926249, 0.06880477, 0.06926248, 49.42412309], [1516807200000, 0.06880123, 0.06911606, 0.06880123, 0.06911606, 1.32449404], [1516807260000, 0.06911281, 0.06920705, 0.06880119, 0.06880119, 10.28201742], [1516807320000, 0.06880119, 0.06880119, 0.06880117, 0.06880119, 0.76893086], [1516807380000, 0.06880119, 0.06880119, 0.06880118, 0.06880118, 1.27138733], [1516807440000, 0.06880119, 0.06905094, 0.06880119, 0.06905094, 1.15693784], [1516807500000, 0.06909844, 0.06915448, 0.06880119, 0.06880119, 5.92775701], [1516807560000, 0.06880119, 0.06880119, 0.06865472, 0.06870007, 12.073378], [1516807620000, 0.06870007, 0.06870007, 0.06863334, 0.06870007, 0.53229564], [1516807680000, 0.06870007, 0.06870007, 0.06863501, 0.06870007, 5.54228914], [1516807740000, 0.0687, 0.06870007, 0.0687, 0.06870007, 8.25530956], [1516807800000, 0.06870007, 0.06870007, 0.06870007, 0.06870007, 1.08420754], [1516807860000, 0.06870007, 0.06880119, 0.06870007, 0.06880119, 29.75538138], [1516807920000, 0.06880119, 0.06880119, 0.06863336, 0.06880119, 5.20204816], [1516807980000, 0.06880119, 0.06880119, 0.06880119, 0.06880119, 0.02298263], [1516808040000, 0.06864869, 0.06880119, 0.06864869, 0.06880119, 4.01564386], [1516808100000, 0.06880119, 0.06903729, 0.06863334, 0.06880119, 2.50948349], [1516808160000, 0.06880119, 0.06880119, 0.06880119, 0.06880119, 0.95052783], [1516808220000, 0.06893043, 0.06893043, 0.06880119, 0.06880119, 1.29759448], [1516808280000, 0.06880119, 0.06896925, 0.06880119, 0.06896925, 0.02997995], [1516808340000, 0.06907179, 0.06907179, 0.06880119, 0.06880119, 0.17451906], [1516808400000, 0.06893387, 0.06893387, 0.06892657, 0.06892657, 0.3743719], [1516808460000, 0.06880119, 0.0688012, 0.06880119, 0.06880119, 1.82428935], [1516808520000, 0.06880119, 0.06880119, 0.06880119, 0.06880119, 1.02999654], [1516808580000, 0.06880119, 0.06880119, 0.06880119, 0.06880119, 22.14994886], [1516808640000, 0.06880119, 0.06880119, 0.06880119, 0.06880119, 0.10195568], [1516808700000, 0.06880119, 0.06887568, 0.06880119, 0.06887568, 0.32048622], [1516808760000, 0.06887568, 0.06887568, 0.06863334, 0.06863334, 0.88986119], [1516808880000, 0.06887563, 0.06887563, 0.06887563, 0.06887563, 0.14286795], [1516809000000, 0.06863333, 0.0688, 0.06863333, 0.0688, 0.48695556], [1516809120000, 0.06863333, 0.06863333, 0.06863333, 0.06863333, 0.04484447], [1516809180000, 0.0688, 0.06887498, 0.06860001, 0.06860001, 59.36506947], [1516809240000, 0.0688, 0.06887497, 0.0688, 0.06887497, 31.06126797], [1516809300000, 0.06879999, 0.06887548, 0.06860001, 0.06860001, 18.36331748], [1516809360000, 0.0686, 0.06860001, 0.0686, 0.06860001, 4.90314763], [1516809420000, 0.0686, 0.06860001, 0.06859999, 0.06859999, 3.85893388], [1516809480000, 0.06859999, 0.06860001, 0.06859999, 0.06860001, 3.78780678], [1516809540000, 0.0686, 0.06860001, 0.0686, 0.06860001, 1.85675318], [1516809600000, 0.06860001, 0.06860001, 0.06853, 0.06853, 0.66425979], [1516809660000, 0.06860001, 0.06860001, 0.06840015, 0.0685322, 57.83312755], [1516809720000, 0.06855974, 0.06856438, 0.06833505, 0.06848374, 3.73166536], [1516809780000, 0.06848419, 0.06856685, 0.06848419, 0.06856685, 0.40325046], [1516809900000, 0.06850866, 0.06854715, 0.06833505, 0.06847402, 1.54844076], [1516809960000, 0.06844243, 0.06844379, 0.06844243, 0.06844379, 0.11137538], [1516810020000, 0.06833506, 0.06833506, 0.06833505, 0.06833505, 3.965396], [1516810080000, 0.06833508, 0.06845, 0.06833508, 0.06833508, 1.2213534], [1516810140000, 0.06833508, 0.06852494, 0.06833504, 0.06852494, 12.15581322], [1516810200000, 0.06833505, 0.06853946, 0.06833504, 0.06853946, 5.95370663], [1516810260000, 0.06852571, 0.06852571, 0.06833507, 0.06833507, 0.07597031], [1516810320000, 0.06833507, 0.06846912, 0.06833507, 0.06833507, 4.58750982], [1516810380000, 0.06847363, 0.0685243, 0.06833, 0.06833001, 9.09462434], [1516810440000, 0.06833002, 0.06833003, 0.06833002, 0.06833003, 0.17013808], [1516810500000, 0.06853946, 0.06853946, 0.068487, 0.06853, 1.14144853], [1516810560000, 0.06833002, 0.0684336, 0.06833001, 0.06842803, 1.47831703], [1516810620000, 0.06833004, 0.0683321, 0.06830001, 0.06833003, 4.62876585], [1516810680000, 0.06830002, 0.06837861, 0.0683, 0.06837861, 2.08476982], [1516810740000, 0.06837464, 0.06841623, 0.0683, 0.0683, 1.25159688], [1516810800000, 0.0683, 0.06841623, 0.0683, 0.0683, 1.78611924], [1516810860000, 0.06830001, 0.06841623, 0.06830001, 0.06830001, 0.06583308], [1516810920000, 0.06840013, 0.06840013, 0.0683, 0.0683, 1.13098871], [1516810980000, 0.06830001, 0.06830001, 0.06830001, 0.06830001, 0.19034499], [1516811040000, 0.06830001, 0.06830001, 0.06830001, 0.06830001, 0.03228404], [1516811100000, 0.06830001, 0.06835892, 0.0683, 0.0683, 4.87865044], [1516811160000, 0.0683, 0.06832093, 0.06819636, 0.06819636, 12.56393256], [1516811220000, 0.06818, 0.06822223, 0.06818, 0.06822223, 2.25903283], [1516811280000, 0.06822223, 0.06822223, 0.06818, 0.06818, 2.29387107], [1516811400000, 0.06822223, 0.06822223, 0.06818001, 0.06818001, 3.84369768], [1516811460000, 0.06822223, 0.06822223, 0.06822223, 0.06822223, 0.21647294], [1516811520000, 0.06822223, 0.06822223, 0.06822223, 0.06822223, 3.3545204], [1516811580000, 0.06822223, 0.06822223, 0.06818001, 0.06822223, 0.87135224], [1516811640000, 0.06822223, 0.06822223, 0.06822223, 0.06822223, 0.92483727], [1516811700000, 0.06822223, 0.06832753, 0.06809417, 0.06809417, 34.48659481], [1516811760000, 0.06809417, 0.0681, 0.06809417, 0.0681, 4.12458834], [1516811820000, 0.06806508, 0.0681, 0.06806508, 0.0681, 26.21431341], [1516811880000, 0.0681, 0.0681, 0.068, 0.06809999, 0.5547891], [1516811940000, 0.068, 0.06846099, 0.068, 0.06846099, 25.49797154], [1516812000000, 0.06851262, 0.06852829, 0.06807969, 0.06852829, 5.85023147], [1516812060000, 0.06810111, 0.06874497, 0.06810111, 0.06862948, 4.63500279], [1516812120000, 0.06852829, 0.06852829, 0.06852828, 0.06852829, 0.74977252], [1516812180000, 0.06852829, 0.06852829, 0.06815716, 0.06815716, 0.06681436], [1516812240000, 0.06852829, 0.06852829, 0.06852829, 0.06852829, 0.02215428], [1516812300000, 0.06813311, 0.0685283, 0.06813311, 0.06813321, 0.63110014], [1516812360000, 0.06813311, 0.06813321, 0.06813311, 0.06813313, 0.17171177], [1516812420000, 0.0681435, 0.06815495, 0.068, 0.06813313, 18.78272059], [1516812480000, 0.06815848, 0.06815848, 0.06813311, 0.06815848, 0.44417985], [1516812540000, 0.06815848, 0.06815848, 0.06815847, 0.06815848, 6.89959645], [1516812600000, 0.06815847, 0.06815848, 0.06813312, 0.06815848, 3.55528283], [1516812660000, 0.06815848, 0.06815848, 0.06815848, 0.06815848, 3.28531846], [1516812780000, 0.0682519, 0.0682519, 0.0682519, 0.0682519, 0.07942476], [1516812840000, 0.06851134, 0.06851134, 0.06851134, 0.06851134, 0.17574642], [1516812900000, 0.06825187, 0.06825187, 0.0682, 0.0682, 1.40069936], [1516812960000, 0.0682, 0.0682, 0.0682, 0.0682, 0.49281931], [1516813020000, 0.068159, 0.068159, 0.06783325, 0.068159, 65.08938891], [1516813080000, 0.0680941, 0.0680941, 0.0680941, 0.0680941, 0.01620149], [1516813140000, 0.06804956, 0.068159, 0.068, 0.068159, 10.77518842], [1516813200000, 0.068159, 0.068159, 0.068159, 0.068159, 0.03242416], [1516813260000, 0.068159, 0.068159, 0.068159, 0.068159, 0.03821944], [1516813320000, 0.068159, 0.068159, 0.068159, 0.068159, 0.03584194], [1516813380000, 0.068159, 0.06829159, 0.068159, 0.06829159, 10.02489325], [1516813500000, 0.06828, 0.06829158, 0.06828, 0.06829158, 0.58582308], [1516813560000, 0.06829158, 0.06829158, 0.06829158, 0.06829158, 0.43360566], [1516813620000, 0.06829156, 0.06829159, 0.06800495, 0.0681581, 49.32391084], [1516813680000, 0.0681581, 0.0681581, 0.068003, 0.06800495, 9.40295321], [1516813740000, 0.06800495, 0.0681581, 0.06800495, 0.0681581, 8.87058336], [1516813800000, 0.0681581, 0.0684064, 0.0681581, 0.0684064, 8.07001333], [1516813860000, 0.0685234, 0.0685234, 0.0685234, 0.0685234, 0.0152658], [1516813920000, 0.06813236, 0.06813236, 0.06813236, 0.06813236, 0.01446297], [1516814040000, 0.06856876, 0.06856876, 0.06856876, 0.06856876, 0.04082225], [1516814100000, 0.06816821, 0.0685561, 0.06816821, 0.0685561, 0.17032879], [1516814160000, 0.0684286, 0.0684286, 0.06841029, 0.06841029, 0.05150268], [1516814220000, 0.06841029, 0.06841029, 0.06841029, 0.06841029, 0.30092396], [1516814280000, 0.06815767, 0.06815767, 0.06809635, 0.06809635, 0.01617573], [1516814520000, 0.06835, 0.06835, 0.06835, 0.06835, 0.17117776], [1516814580000, 0.06809636, 0.06809636, 0.06809636, 0.06809636, 0.121], [1516814640000, 0.06835, 0.06835, 0.06809636, 0.06809636, 0.69079519], [1516814700000, 0.06809635, 0.06835, 0.06806664, 0.06835, 2.31346759], [1516814760000, 0.0682, 0.0682, 0.06806664, 0.06806664, 1.1777215], [1516814820000, 0.0681318, 0.0681318, 0.06806664, 0.06806664, 1.81719651], [1516814880000, 0.0681318, 0.0682, 0.0681318, 0.0682, 0.45897254], [1516815000000, 0.06806665, 0.06806665, 0.06806664, 0.06806664, 1.1477313], [1516815060000, 0.06806664, 0.06806664, 0.06781511, 0.068002, 8.66106562], [1516815120000, 0.068002, 0.068002, 0.068002, 0.068002, 0.01395753], [1516815180000, 0.068, 0.068, 0.06783183, 0.068, 0.35101351], [1516815240000, 0.068, 0.068002, 0.06785667, 0.068002, 14.94358933], [1516815300000, 0.068001, 0.068001, 0.068001, 0.068001, 0.12811082], [1516815360000, 0.068001, 0.068001, 0.068001, 0.068001, 17.53352547], [1516815420000, 0.068001, 0.068001, 0.0679, 0.0679, 0.19048678], [1516815480000, 0.06792884, 0.06792884, 0.06784969, 0.06784969, 1.67845942], [1516815540000, 0.06784969, 0.06792884, 0.06783198, 0.06792884, 2.11719398], [1516815600000, 0.06792884, 0.06792884, 0.06792884, 0.06792884, 0.79362536], [1516815660000, 0.06792884, 0.06792884, 0.06792884, 0.06792884, 0.03250704], [1516815720000, 0.06792884, 0.068001, 0.0678321, 0.068001, 1.22741872], [1516815780000, 0.068001, 0.068001, 0.068001, 0.068001, 0.09442541], [1516815840000, 0.068001, 0.068001, 0.06792886, 0.068001, 1.20169897], [1516815900000, 0.068001, 0.068001, 0.068001, 0.068001, 0.32644617], [1516815960000, 0.068001, 0.068001, 0.068001, 0.068001, 0.24421977], [1516816020000, 0.068001, 0.068001, 0.068001, 0.068001, 0.14214665], [1516816080000, 0.068001, 0.068001, 0.06793905, 0.06793905, 0.23232774], [1516816140000, 0.06793905, 0.068001, 0.06793905, 0.068001, 1.86872984], [1516816200000, 0.068001, 0.068001, 0.06793906, 0.06793906, 0.88680921], [1516816260000, 0.06793906, 0.06793906, 0.06793904, 0.06793906, 2.36132262], [1516816320000, 0.06793903, 0.068001, 0.06793903, 0.06793907, 6.70393745], [1516816380000, 0.068001, 0.068001, 0.06793915, 0.068, 0.110052], [1516816440000, 0.068, 0.068, 0.068, 0.068, 0.21966713], [1516816500000, 0.068, 0.068001, 0.06793922, 0.06793922, 1.63880939], [1516816560000, 0.068001, 0.068001, 0.06793922, 0.06793922, 4.80897156], [1516816620000, 0.06793908, 0.06793922, 0.067939, 0.067939, 18.04641789], [1516816680000, 0.06783187, 0.06793922, 0.06783187, 0.06793922, 10.33022559], [1516816740000, 0.06793922, 0.06793922, 0.06783199, 0.06783199, 7.94005431], [1516816800000, 0.06793909, 0.06793909, 0.06783202, 0.06783803, 16.42994966], [1516816860000, 0.06793909, 0.06793909, 0.06793909, 0.06793909, 8.74441471], [1516816920000, 0.06793922, 0.06793922, 0.06793922, 0.06793922, 0.04868358], [1516816980000, 0.06793922, 0.06793922, 0.06793922, 0.06793922, 0.19525927], [1516817040000, 0.06793922, 0.06793922, 0.06793922, 0.06793922, 0.1273098], [1516817100000, 0.06793922, 0.06793922, 0.06793909, 0.06793922, 7.18308845], [1516817160000, 0.06793922, 0.06793922, 0.06793922, 0.06793922, 0.66447972], [1516817220000, 0.06793922, 0.06793922, 0.06793909, 0.0679391, 2.08006095], [1516817280000, 0.06793911, 0.06793911, 0.06793909, 0.0679391, 7.35427959], [1516817340000, 0.06793911, 0.068002, 0.06793909, 0.06793909, 18.72183886], [1516817400000, 0.068002, 0.06814884, 0.06783202, 0.06783202, 43.77380387], [1516817460000, 0.06809841, 0.06809841, 0.06754921, 0.06791045, 8.65194563], [1516817520000, 0.06791045, 0.06798888, 0.06789, 0.06789, 22.10784275], [1516817580000, 0.06798888, 0.06798888, 0.06789, 0.06798888, 2.0358405], [1516817640000, 0.06789, 0.06809841, 0.06789, 0.06798888, 1.23982354], [1516817700000, 0.06789, 0.06809838, 0.06783185, 0.06783185, 4.2389174], [1516817880000, 0.06783188, 0.06783188, 0.06783186, 0.06783186, 0.01625342], [1516817940000, 0.06783186, 0.06783186, 0.06783186, 0.06783186, 47.19172556], [1516818000000, 0.06783186, 0.06783186, 0.06783185, 0.06783185, 3.83505935], [1516818060000, 0.06783185, 0.06783185, 0.06771692, 0.067717, 2.09023313], [1516818120000, 0.06771692, 0.06771692, 0.06755055, 0.06771692, 1.08900169], [1516818180000, 0.06771692, 0.06771692, 0.06763185, 0.06763185, 2.5152309], [1516818240000, 0.06763185, 0.06771692, 0.06763185, 0.06771692, 3.96105228], [1516818300000, 0.06771692, 0.06771692, 0.06771692, 0.06771692, 1.36651813], [1516818360000, 0.06771692, 0.06771692, 0.06771692, 0.06771692, 4.02920659], [1516818420000, 0.06755446, 0.06771692, 0.06755446, 0.06771692, 3.51985491], [1516818480000, 0.06771692, 0.06771692, 0.06771692, 0.06771692, 0.7820708], [1516818540000, 0.06771691, 0.06771691, 0.06771691, 0.06771691, 0.53806205], [1516818600000, 0.06771691, 0.06771691, 0.06771691, 0.06771691, 0.44323031], [1516818660000, 0.06771691, 0.06771691, 0.0677169, 0.06771691, 0.4005655], [1516818720000, 0.06771691, 0.06771691, 0.06755003, 0.06755003, 0.81949592], [1516818780000, 0.06771, 0.06771, 0.06761426, 0.06771, 0.51024619], [1516818840000, 0.06761535, 0.06771, 0.067615, 0.06761535, 16.81066605], [1516818900000, 0.06761535, 0.0676154, 0.06761477, 0.06761478, 7.40561883], [1516818960000, 0.06761529, 0.06771691, 0.06761527, 0.06763144, 0.30617731], [1516819020000, 0.06771691, 0.06771691, 0.0677, 0.0677, 0.1209307], [1516819080000, 0.0677, 0.06771691, 0.06763735, 0.0677, 1.48792274], [1516819140000, 0.06771691, 0.06771691, 0.0677, 0.06771691, 3.05299418], [1516819200000, 0.06771691, 0.06771691, 0.06766453, 0.06766453, 1.87989131], [1516819260000, 0.06763838, 0.06766453, 0.06763837, 0.06763838, 21.8498618], [1516819320000, 0.06763838, 0.06771692, 0.06763838, 0.06771692, 3.98095238], [1516819380000, 0.06789, 0.06805392, 0.06771692, 0.06771692, 1.2712022], [1516819440000, 0.06771692, 0.06771692, 0.06767456, 0.06771692, 1.57803213], [1516819500000, 0.06771692, 0.06771692, 0.06771692, 0.06771692, 13.23296587], [1516819560000, 0.06771692, 0.06771692, 0.06767458, 0.06767458, 2.20066501], [1516819620000, 0.06771692, 0.06771692, 0.06767459, 0.06771692, 0.54426852], [1516819680000, 0.06771692, 0.06808849, 0.0677169, 0.06808849, 7.18668876], [1516819740000, 0.06808849, 0.06808849, 0.06771993, 0.06774867, 6.24353372], [1516819800000, 0.06774805, 0.06774867, 0.06771692, 0.06774867, 1.70872856], [1516819860000, 0.06808849, 0.06808849, 0.06808849, 0.06808849, 0.1809309], [1516819920000, 0.06808848, 0.06808848, 0.06808848, 0.06808848, 0.04857854], [1516819980000, 0.068, 0.06808849, 0.06781613, 0.06781613, 3.48069386], [1516820040000, 0.06808848, 0.06808849, 0.06808848, 0.06808849, 4.80939652], [1516820100000, 0.06808848, 0.06808848, 0.06781613, 0.06781613, 4.32557221], [1516820160000, 0.06781613, 0.06781613, 0.06781613, 0.06781613, 1.43665647], [1516820220000, 0.06781613, 0.06808848, 0.06781613, 0.06781613, 2.73367945], [1516820280000, 0.06796843, 0.06808848, 0.06781614, 0.06808848, 1.55050422], [1516820340000, 0.06808848, 0.06808848, 0.06808848, 0.06808848, 0.06132428], [1516820400000, 0.06808848, 0.06808848, 0.06808848, 0.06808848, 0.15534478], [1516820640000, 0.06790002, 0.06808847, 0.06790001, 0.06808847, 0.22935884], [1516820700000, 0.06808848, 0.06808849, 0.06808848, 0.06808849, 19.05854429], [1516820760000, 0.06808849, 0.06808849, 0.06790001, 0.06790001, 0.08787586], [1516820820000, 0.068, 0.068, 0.06790001, 0.06790001, 18.05866371], [1516820880000, 0.06795, 0.06795, 0.06795, 0.06795, 0.01927781], [1516820940000, 0.06790001, 0.06795, 0.06781613, 0.06795, 0.0573978], [1516821000000, 0.068, 0.068, 0.0679, 0.0679, 1.27267996], [1516821060000, 0.0679, 0.0679, 0.0679, 0.0679, 0.01625719], [1516821120000, 0.06781614, 0.06781614, 0.06781614, 0.06781614, 0.01461696], [1516821180000, 0.06781614, 0.06781614, 0.06781614, 0.06781614, 0.01625731], [1516821240000, 0.06781614, 0.0679, 0.06781614, 0.0679, 2.56724116], [1516821300000, 0.0679, 0.0679, 0.06781613, 0.06781613, 1.67782868], [1516821360000, 0.06781613, 0.0679, 0.0678, 0.0678, 0.58514241], [1516821420000, 0.0679, 0.0679, 0.0679, 0.0679, 0.1], [1516821480000, 0.06780001, 0.06780001, 0.06772502, 0.06772502, 0.51456318], [1516821540000, 0.06780001, 0.06780001, 0.06780001, 0.06780001, 0.45271459], [1516821600000, 0.06780001, 0.06780001, 0.06780001, 0.06780001, 0.4785514], [1516821660000, 0.06780001, 0.06780001, 0.06780001, 0.06780001, 0.19056616], [1516821720000, 0.0678, 0.06780001, 0.06770833, 0.06780001, 1.25942598], [1516821780000, 0.06780001, 0.06780001, 0.06780001, 0.06780001, 0.47576564], [1516821840000, 0.06780001, 0.06780001, 0.06772297, 0.06772297, 5.74333131], [1516821900000, 0.06780001, 0.06780001, 0.06780001, 0.06780001, 0.16549262], [1516821960000, 0.06780001, 0.06780001, 0.06772297, 0.06780001, 0.75245285], [1516822020000, 0.06780001, 0.06780001, 0.06779999, 0.06779999, 0.65906782], [1516822080000, 0.06779999, 0.06780001, 0.06779999, 0.06780001, 1.36710398], [1516822140000, 0.06780001, 0.06780001, 0.06780001, 0.06780001, 11.12936597], [1516822200000, 0.06780001, 0.06780001, 0.06773734, 0.06780001, 3.79549637], [1516822260000, 0.06780001, 0.06780001, 0.06780001, 0.06780001, 2.4492795], [1516822320000, 0.06780001, 0.06780001, 0.06780001, 0.06780001, 0.05075135], [1516822380000, 0.0678, 0.06780001, 0.0678, 0.06780001, 0.87711425], [1516822440000, 0.06780001, 0.06780001, 0.06780001, 0.06780001, 0.48372597], [1516822500000, 0.06789999, 0.06789999, 0.0678678, 0.06789998, 0.42339978], [1516822560000, 0.06789998, 0.06789998, 0.06789998, 0.06789998, 0.07846766], [1516822620000, 0.06789999, 0.0679, 0.06789999, 0.0679, 3.02025415], [1516822680000, 0.06789998, 0.06789998, 0.06789998, 0.06789998, 0.21404788], [1516822740000, 0.06789998, 0.0679, 0.06789998, 0.0679, 12.46238575], [1516822800000, 0.06809842, 0.06809842, 0.0678678, 0.0678678, 0.55011261], [1516822860000, 0.0678668, 0.0678668, 0.06775, 0.0678668, 2.9386052], [1516822920000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 0.03254614], [1516822980000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 0.99942423], [1516823040000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 0.08024842], [1516823100000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 0.28965681], [1516823160000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 0.24241051], [1516823220000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 8.3239403], [1516823280000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 2.22856771], [1516823340000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 0.01768243], [1516823400000, 0.0678668, 0.0678668, 0.0678099, 0.0678099, 0.22310438], [1516823460000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 3.61773006], [1516823520000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 0.46262714], [1516823580000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 0.42369774], [1516823640000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 0.08653865], [1516823700000, 0.0678668, 0.0678668, 0.0678668, 0.0678668, 0.7143898], [1516823760000, 0.0678668, 0.0678668, 0.0675613, 0.0675613, 16.24454535], [1516823820000, 0.0675613, 0.0678668, 0.0675, 0.0675, 15.73027684], [1516823880000, 0.0678667, 0.0678668, 0.0678667, 0.0678668, 0.57169289], [1516823940000, 0.0675, 0.0675, 0.0675, 0.0675, 13.3766912], [1516824000000, 0.06786678, 0.06786678, 0.06786678, 0.06786678, 0.5893898], [1516824060000, 0.06786678, 0.06786679, 0.06750002, 0.06786679, 15.7112448], [1516824120000, 0.0676, 0.06786679, 0.06750003, 0.06786678, 2.8244304], [1516824180000, 0.06786679, 0.06786679, 0.06750004, 0.06786678, 0.31365681], [1516824240000, 0.06786678, 0.06786678, 0.06786678, 0.06786678, 0.03382106], [1516824300000, 0.06786678, 0.06786679, 0.06786678, 0.06786678, 5.71380739], [1516824360000, 0.06786678, 0.06786678, 0.06786678, 0.06786678, 0.14734745], [1516824480000, 0.06786678, 0.06786678, 0.06786677, 0.06786677, 0.16239586], [1516824540000, 0.06786678, 0.06786678, 0.06786678, 0.06786678, 1.19106916], [1516824600000, 0.06786677, 0.06786677, 0.06786677, 0.06786677, 1.06909468], [1516824660000, 0.06786677, 0.06786677, 0.06786677, 0.06786677, 0.300024], [1516824720000, 0.06786677, 0.06786677, 0.06786677, 0.06786677, 0.74541018], [1516824780000, 0.06760001, 0.06760001, 0.06760001, 0.06760001, 0.03], [1516824840000, 0.06786677, 0.06786677, 0.06760002, 0.06760002, 1.6497409], [1516824900000, 0.06786677, 0.06786677, 0.0676001, 0.06786677, 1.84719651], [1516824960000, 0.06760373, 0.06760373, 0.06760373, 0.06760373, 5.9985], [1516825020000, 0.06786675, 0.0679999, 0.06786675, 0.0679999, 28.04131309], [1516825080000, 0.06799987, 0.0679999, 0.06799987, 0.0679999, 7.05998926], [1516825140000, 0.06799989, 0.0679999, 0.06799989, 0.06799989, 2.08384782], [1516825200000, 0.06799988, 0.06799988, 0.06799988, 0.06799988, 0.6102153], [1516825260000, 0.06799985, 0.06799987, 0.06799985, 0.06799987, 1.07385489], [1516825380000, 0.06799987, 0.06799987, 0.06799987, 0.06799987, 0.09725878], [1516825440000, 0.06799987, 0.06799987, 0.06760375, 0.06760375, 0.28114094], [1516825500000, 0.06760375, 0.06786677, 0.06760375, 0.06786677, 1.08201118], [1516825560000, 0.06786677, 0.06786677, 0.06786677, 0.06786677, 15.40192141], [1516825620000, 0.06760385, 0.06760385, 0.06760385, 0.06760385, 1.6508], [1516825680000, 0.06786676, 0.06809842, 0.06760385, 0.06760385, 59.33501171], [1516825740000, 0.06760386, 0.06760386, 0.06760385, 0.06760386, 11.14021672], [1516825800000, 0.06760386, 0.06760386, 0.06760386, 0.06760386, 12.64813047], [1516825860000, 0.06760386, 0.06760386, 0.06760386, 0.06760386, 12.27076878], [1516825920000, 0.06760386, 0.06760386, 0.06760385, 0.06760385, 8.21747795], [1516825980000, 0.06797457, 0.06797457, 0.06760385, 0.0676039, 7.95192487], [1516826040000, 0.0676039, 0.0676039, 0.06760385, 0.0676039, 26.06754564], [1516826100000, 0.0676039, 0.0679999, 0.0676039, 0.0679999, 2.54579138], [1516826160000, 0.0679999, 0.0679999, 0.067604, 0.06799988, 3.99651737], [1516826280000, 0.06763002, 0.06763002, 0.067625, 0.067625, 2.58455125], [1516826340000, 0.06799986, 0.06799986, 0.067625, 0.067625, 2.74528004], [1516826400000, 0.06799983, 0.06799986, 0.06799983, 0.06799986, 0.2941185], [1516826520000, 0.06799986, 0.06799986, 0.06799986, 0.06799986, 0.086059], [1516826580000, 0.06799984, 0.06799984, 0.067625, 0.0676808, 3.16344173], [1516826640000, 0.06772785, 0.06799984, 0.06763316, 0.06799984, 1.36469467], [1516826700000, 0.06799984, 0.06799984, 0.06772785, 0.06772785, 0.9339868], [1516826760000, 0.06799983, 0.06799983, 0.06799983, 0.06799983, 0.7777978], [1516826820000, 0.06772785, 0.06799983, 0.0676713, 0.06799982, 2.76286639], [1516826880000, 0.06799982, 0.06799982, 0.06799982, 0.06799982, 0.03], [1516826940000, 0.06782982, 0.06782982, 0.06782982, 0.06782982, 1.0], [1516827000000, 0.06772786, 0.06772786, 0.067625, 0.067625, 15.31103402], [1516827120000, 0.0676307, 0.0676307, 0.06763069, 0.06763069, 6.07912823], [1516827180000, 0.06763877, 0.06763877, 0.06763877, 0.06763877, 0.17158238], [1516827300000, 0.06799981, 0.06799982, 0.06799981, 0.06799982, 0.14705925], [1516827360000, 0.06799981, 0.06799981, 0.0676539, 0.0676539, 0.14488973], [1516827420000, 0.0676539, 0.0676539, 0.06765389, 0.0676539, 0.03259731], [1516827480000, 0.0676539, 0.0676539, 0.0676539, 0.0676539, 0.70653673], [1516827540000, 0.06799981, 0.06799981, 0.06799981, 0.06799981, 0.08397325], [1516827600000, 0.06799981, 0.06799981, 0.067668, 0.06799981, 0.64337776], [1516827660000, 0.06799981, 0.06799981, 0.06799981, 0.06799981, 0.1566698], [1516827720000, 0.06799981, 0.06799981, 0.06799981, 0.06799981, 0.01467165], [1516827780000, 0.06799981, 0.06799982, 0.06799981, 0.06799982, 1.20467758], [1516827840000, 0.06799982, 0.06809841, 0.0679998, 0.06799982, 28.32567147], [1516827900000, 0.06799981, 0.06831078, 0.06763875, 0.06763875, 13.51600675], [1516827960000, 0.06763069, 0.06805708, 0.06763069, 0.06805708, 9.32609786], [1516828020000, 0.06805708, 0.06805708, 0.067625, 0.067625, 8.694029], [1516828080000, 0.06805707, 0.06805707, 0.067625, 0.06805707, 1.85831022], [1516828140000, 0.06805708, 0.0681076, 0.06805707, 0.06805707, 4.05157194], [1516828200000, 0.06805707, 0.06810756, 0.06762501, 0.06762506, 1.32114544], [1516828320000, 0.06809659, 0.06809659, 0.06809587, 0.06809587, 1.24919234], [1516828380000, 0.06762504, 0.06762504, 0.06750373, 0.06750373, 9.68231287], [1516828440000, 0.0680869, 0.0680869, 0.06750373, 0.06750374, 7.81543308], [1516828500000, 0.0680575, 0.068095, 0.0680575, 0.068095, 0.4409307], [1516828620000, 0.067504, 0.06798736, 0.067504, 0.06798736, 13.58034772], [1516828680000, 0.06798733, 0.06805009, 0.06798733, 0.0679948, 2.85405891], [1516828740000, 0.06807512, 0.06807512, 0.067504, 0.06754467, 56.88842509], [1516828800000, 0.06800399, 0.068004, 0.06800399, 0.068004, 0.67696034], [1516828860000, 0.068004, 0.068004, 0.06800399, 0.06800399, 3.33449677], [1516828920000, 0.068004, 0.068004, 0.068004, 0.068004, 0.02517857], [1516829040000, 0.068004, 0.068004, 0.068004, 0.068004, 9.48078006], [1516829100000, 0.068004, 0.068004, 0.06750412, 0.06750412, 2.27616923], [1516829160000, 0.068004, 0.068004, 0.068004, 0.068004, 0.13839689], [1516829280000, 0.068004, 0.068004, 0.068004, 0.068004, 0.03127128], [1516829340000, 0.06783399, 0.06783399, 0.06783399, 0.06783399, 0.0576063], [1516829400000, 0.06783399, 0.06783399, 0.06783399, 0.06783399, 2.03556766], [1516829460000, 0.06783399, 0.06783399, 0.06766944, 0.06766944, 0.31338522], [1516829520000, 0.06783399, 0.06783399, 0.06783399, 0.06783399, 1.47006632], [1516829580000, 0.06783398, 0.067834, 0.06783398, 0.067834, 2.15456865], [1516829640000, 0.067834, 0.067834, 0.067834, 0.067834, 1.25991291], [1516829700000, 0.06800399, 0.06800399, 0.06800398, 0.06800398, 0.31032688], [1516829760000, 0.06784, 0.06800398, 0.06783, 0.06800398, 0.53995339], [1516829820000, 0.06800398, 0.06800398, 0.06800397, 0.06800397, 0.45999582], [1516829880000, 0.06800396, 0.06800396, 0.06800396, 0.06800396, 0.03806783], [1516829940000, 0.06784001, 0.06800396, 0.06783, 0.06800396, 10.41131565], [1516830000000, 0.06800396, 0.06800396, 0.06783, 0.06783, 0.44798527], [1516830060000, 0.06800396, 0.06800397, 0.06800396, 0.06800396, 3.85132691], [1516830120000, 0.06800396, 0.06800396, 0.06800396, 0.06800396, 6.60099998], [1516830180000, 0.06800396, 0.06800396, 0.06800396, 0.06800396, 0.32322508], [1516830240000, 0.06800397, 0.06800399, 0.06800396, 0.06800397, 1.63104174], [1516830300000, 0.06800397, 0.06800399, 0.06800397, 0.06800397, 0.40460732], [1516830360000, 0.06800399, 0.06800399, 0.06800397, 0.06800397, 1.61734763], [1516830420000, 0.06800397, 0.06800399, 0.06800396, 0.06800399, 45.80573697], [1516830480000, 0.06800399, 0.06815912, 0.06800399, 0.0681, 17.74621993], [1516830540000, 0.0681, 0.0681, 0.0681, 0.0681, 0.70738146], [1516830600000, 0.06818089, 0.06820529, 0.06814997, 0.06820529, 1.18694421], [1516830660000, 0.0681, 0.06822301, 0.06783002, 0.0682, 21.9813158], [1516830720000, 0.0681, 0.0681, 0.0681, 0.0681, 0.23598741], [1516830780000, 0.0681, 0.0681, 0.0681, 0.0681, 1.65423009], [1516830840000, 0.0681, 0.06818611, 0.0681, 0.06815, 0.27546852], [1516830900000, 0.06815, 0.06818611, 0.0681, 0.06817664, 20.03820579], [1516830960000, 0.0681, 0.06818612, 0.06783001, 0.06783001, 22.09703446], [1516831020000, 0.068, 0.068, 0.06783002, 0.06783002, 1.37036427], [1516831080000, 0.06817077, 0.06833864, 0.06783002, 0.06783002, 59.8919139], [1516831140000, 0.06783002, 0.06783002, 0.0676856, 0.06783001, 43.71454522], [1516831200000, 0.06783001, 0.06808962, 0.06783001, 0.06808248, 6.10861961], [1516831260000, 0.06818601, 0.06818601, 0.06756023, 0.06765, 6.80838381], [1516831320000, 0.06765, 0.06765, 0.06756025, 0.06765, 0.61563786], [1516831380000, 0.06756037, 0.06765, 0.06756027, 0.06756027, 0.80482822], [1516831440000, 0.06760535, 0.06760535, 0.06756039, 0.06756039, 0.1303244], [1516831500000, 0.06789817, 0.06822721, 0.06789817, 0.06821425, 1.76169626], [1516831560000, 0.06822286, 0.06822286, 0.06821425, 0.06821425, 1.34005785], [1516831620000, 0.06821425, 0.06821425, 0.06821425, 0.06821425, 2.06529193], [1516831680000, 0.06821425, 0.06821425, 0.06806555, 0.06821425, 4.32481325], [1516831740000, 0.0682142, 0.0682142, 0.06806555, 0.06806555, 5.51303124], [1516831800000, 0.0682142, 0.06821425, 0.06806556, 0.06821425, 1.72252316], [1516831860000, 0.0682142, 0.068243, 0.06756401, 0.06823914, 98.64207313], [1516831920000, 0.06822804, 0.06833002, 0.06822804, 0.06833002, 6.89804714], [1516831980000, 0.06833002, 0.06841695, 0.06833002, 0.068349, 38.76421588], [1516832040000, 0.06841696, 0.06850396, 0.06823913, 0.06823913, 12.02503423], [1516832100000, 0.06823722, 0.06846753, 0.06821696, 0.06821696, 20.1804271], [1516832160000, 0.06821696, 0.06850395, 0.06821696, 0.06850395, 1.05319768], [1516832220000, 0.06850395, 0.06850395, 0.068331, 0.06850395, 9.62627533], [1516832280000, 0.06850395, 0.06850395, 0.06830395, 0.06850395, 34.14785338], [1516832340000, 0.06850395, 0.0686, 0.06850395, 0.0686, 17.89652704], [1516832400000, 0.0686, 0.0686, 0.06830395, 0.0686, 29.33548915], [1516832460000, 0.06859998, 0.0686, 0.06826, 0.06826, 10.41133523], [1516832520000, 0.0682601, 0.0686, 0.06825395, 0.0682601, 8.27020723], [1516832580000, 0.0686, 0.0686, 0.0686, 0.0686, 116.20643358], [1516832640000, 0.0682601, 0.0683, 0.0682601, 0.0683, 41.80181228], [1516832700000, 0.0685997, 0.0686335, 0.0685997, 0.0686335, 2.8367994], [1516832760000, 0.0686335, 0.06871029, 0.06826012, 0.068261, 70.40623315], [1516832820000, 0.06826011, 0.06826011, 0.0682601, 0.0682601, 8.42235975], [1516832880000, 0.068261, 0.06862504, 0.068261, 0.06862504, 5.46432788], [1516832940000, 0.06862504, 0.06862504, 0.0685, 0.0685, 0.59758243], [1516833000000, 0.06862503, 0.06862504, 0.06862503, 0.06862503, 27.40441275], [1516833060000, 0.06862503, 0.06862504, 0.06862503, 0.06862504, 4.45555031], [1516833120000, 0.06862503, 0.06862503, 0.06862503, 0.06862503, 14.31215821], [1516833180000, 0.06862504, 0.06862504, 0.06862503, 0.06862503, 5.42624414], [1516833240000, 0.0685, 0.068625, 0.0685, 0.068625, 0.63128496], [1516833300000, 0.068625, 0.06862503, 0.068625, 0.06862503, 1.07943958], [1516833360000, 0.068625, 0.06862502, 0.068625, 0.06862502, 6.03301071], [1516833420000, 0.06862503, 0.06862503, 0.06862502, 0.06862503, 3.85056602], [1516833480000, 0.06862502, 0.06862503, 0.06862502, 0.06862503, 2.47242321], [1516833540000, 0.06862503, 0.06862503, 0.068625, 0.068625, 7.4459922], [1516833600000, 0.068625, 0.068625, 0.06829166, 0.06829166, 16.70866327], [1516833660000, 0.0685, 0.0685, 0.0682601, 0.0682601, 12.52937824], [1516833720000, 0.06829477, 0.06862503, 0.06829477, 0.06862503, 20.47031441], [1516833780000, 0.06862503, 0.06877503, 0.06862503, 0.06877503, 19.39859851], [1516833840000, 0.06877504, 0.0688, 0.06862506, 0.0688, 2.93775494], [1516833900000, 0.06862505, 0.06896812, 0.06826906, 0.06894351, 20.69586897], [1516833960000, 0.06829376, 0.0688, 0.06829376, 0.0688, 0.80946568], [1516834020000, 0.0688, 0.0688, 0.0688, 0.0688, 32.98609215], [1516834080000, 0.0688, 0.0689, 0.06833744, 0.06838433, 5.0095725], [1516834140000, 0.06891476, 0.06891476, 0.06891476, 0.06891476, 0.43532032], [1516834200000, 0.06891477, 0.069, 0.06891477, 0.069, 10.62474924], [1516834260000, 0.06838447, 0.06838447, 0.06838447, 0.06838447, 1.33036215], [1516834440000, 0.06839439, 0.06839443, 0.06839439, 0.06839443, 1.17811477], [1516834500000, 0.06839448, 0.06839448, 0.06827251, 0.06827251, 22.96724531], [1516834560000, 0.0689249, 0.06896849, 0.0689249, 0.06896849, 2.84532088], [1516834620000, 0.06896849, 0.06896849, 0.06839472, 0.06896849, 1.77194551], [1516834680000, 0.06896849, 0.06896849, 0.06839558, 0.06896849, 3.44839308], [1516834740000, 0.06896849, 0.0689685, 0.06896849, 0.0689685, 0.39873321], [1516834800000, 0.0683974, 0.069, 0.0683974, 0.069, 4.48445973], [1516834860000, 0.069, 0.06900793, 0.06899999, 0.06900793, 1.14741128], [1516834920000, 0.06899999, 0.06900791, 0.06870442, 0.06899999, 5.48081867], [1516834980000, 0.06899999, 0.069125, 0.0686869, 0.069125, 10.09226067], [1516835040000, 0.06913714, 0.06923, 0.06848843, 0.06863217, 8.68867507], [1516835100000, 0.06858075, 0.06900468, 0.06858075, 0.06900468, 2.27904416], [1516835160000, 0.06901603, 0.06906575, 0.06900468, 0.06901603, 17.12942155], [1516835220000, 0.06901603, 0.06906575, 0.06900468, 0.06906574, 17.33839047], [1516835280000, 0.06900468, 0.06906575, 0.06900468, 0.06906575, 8.11914947], [1516835340000, 0.0690659, 0.0690852, 0.06906575, 0.06906575, 2.72090242], [1516835400000, 0.06906575, 0.06923, 0.06906575, 0.06906575, 17.54714044], [1516835460000, 0.06906575, 0.06906575, 0.06906575, 0.06906575, 0.62395134], [1516835520000, 0.06922538, 0.06923, 0.06906575, 0.06906575, 2.27958197], [1516835580000, 0.06906575, 0.06923, 0.06839746, 0.06876711, 43.83549322], [1516835640000, 0.06920631, 0.06920631, 0.06870551, 0.06873133, 7.91763571], [1516835700000, 0.06873133, 0.06873834, 0.06873133, 0.06873834, 0.43242738], [1516835760000, 0.06915, 0.06916203, 0.06915, 0.06916203, 0.60079204], [1516835820000, 0.06923, 0.06923, 0.06916203, 0.06916203, 0.05032413], [1516835880000, 0.06916203, 0.06922739, 0.06916203, 0.06922739, 0.01856376], [1516835940000, 0.06916203, 0.06916203, 0.06886877, 0.06886877, 13.20886953], [1516836000000, 0.06886877, 0.06921311, 0.06886877, 0.06921311, 2.34870303], [1516836060000, 0.06921311, 0.06923, 0.06921311, 0.06923, 1.29365751], [1516836120000, 0.06922738, 0.06922738, 0.06891017, 0.06891017, 3.26418022], [1516836240000, 0.06891017, 0.06891017, 0.06891017, 0.06891017, 0.12], [1516836360000, 0.06891018, 0.06921228, 0.06891018, 0.06921228, 12.19335717], [1516836420000, 0.06921228, 0.06923, 0.06921228, 0.06921228, 33.88978054], [1516836540000, 0.06892, 0.06892, 0.06886877, 0.06886877, 0.49510492], [1516836600000, 0.06886877, 0.06907, 0.06886877, 0.06907, 0.49293674], [1516836660000, 0.06921228, 0.06923, 0.06907, 0.06907, 2.13654933], [1516836720000, 0.06922524, 0.06922524, 0.06922524, 0.06922524, 0.37442231], [1516836780000, 0.06922524, 0.06922524, 0.06886877, 0.06886877, 1.4669], [1516836840000, 0.06906575, 0.06906575, 0.06906575, 0.06906575, 2.46568244], [1516836900000, 0.06906575, 0.06906575, 0.06886877, 0.06886877, 7.62511536], [1516836960000, 0.06886877, 0.06897799, 0.06886876, 0.06886877, 7.64716216], [1516837020000, 0.06886881, 0.06886881, 0.0688688, 0.0688688, 3.02], [1516837080000, 0.0688688, 0.0688688, 0.06886877, 0.0688688, 3.23361157], [1516837140000, 0.0688688, 0.06937278, 0.06835258, 0.06895456, 45.81378407], [1516837200000, 0.06900899, 0.06956575, 0.06892178, 0.06909181, 61.00758782], [1516837260000, 0.06909182, 0.06974493, 0.06909182, 0.06974493, 33.79347019], [1516837320000, 0.06974493, 0.06974493, 0.06870552, 0.06885397, 6.12878663], [1516837380000, 0.06885397, 0.06958235, 0.06874556, 0.06958235, 9.78007659], [1516837440000, 0.06958235, 0.06958235, 0.06958235, 0.06958235, 1.28379509], [1516837500000, 0.06958235, 0.06972447, 0.06958235, 0.0697, 2.80162348], [1516837560000, 0.0697, 0.06978999, 0.06958235, 0.069725, 3.16510228], [1516837620000, 0.069725, 0.06976587, 0.069725, 0.06976587, 0.45360829], [1516837680000, 0.069725, 0.06976587, 0.06958235, 0.069725, 5.35037685], [1516837740000, 0.06975696, 0.06979302, 0.06958235, 0.06958235, 4.81547473], [1516837800000, 0.06960555, 0.06979302, 0.06958235, 0.06979302, 0.95319386], [1516837860000, 0.06958235, 0.06975, 0.06958235, 0.06958235, 25.79177581], [1516837920000, 0.06975, 0.06975, 0.06901009, 0.06958234, 17.72711435], [1516837980000, 0.06958234, 0.06958235, 0.06913326, 0.06958235, 0.11531331], [1516838040000, 0.06940839, 0.06958234, 0.069134, 0.0692, 0.2526436], [1516838100000, 0.0692, 0.06940839, 0.06901009, 0.06901009, 13.71841444], [1516838160000, 0.0692, 0.0692, 0.06901013, 0.06901015, 0.46450581], [1516838220000, 0.06901015, 0.06901015, 0.06901015, 0.06901015, 2.22801246], [1516838280000, 0.06936013, 0.06936013, 0.06901015, 0.06901015, 0.39273167], [1516838340000, 0.06902, 0.06902, 0.06901015, 0.06901015, 9.00972173], [1516838400000, 0.06901015, 0.06958235, 0.06901015, 0.06940192, 12.09514522], [1516838460000, 0.06958234, 0.06999777, 0.06907281, 0.069493, 17.99081965], [1516838520000, 0.06957199, 0.0695999, 0.06929429, 0.06944095, 13.68360463], [1516838580000, 0.06944095, 0.06957199, 0.06944095, 0.06957199, 2.51248621], [1516838640000, 0.06957199, 0.06957199, 0.06944096, 0.06957199, 2.19212751], [1516838700000, 0.06944098, 0.07, 0.06944098, 0.07, 2.12003419], [1516838760000, 0.07, 0.07, 0.06944123, 0.07, 2.07599046], [1516838820000, 0.07, 0.07, 0.07, 0.07, 2.97382507], [1516838880000, 0.070017, 0.070017, 0.07, 0.07, 3.23422534], [1516838940000, 0.07, 0.07040191, 0.07, 0.07, 15.11227352], [1516839000000, 0.0701, 0.07040185, 0.07, 0.07010003, 4.10299266], [1516839060000, 0.07010003, 0.07039, 0.07010003, 0.07014248, 3.63612495], [1516839120000, 0.07014248, 0.07033, 0.069518, 0.06951807, 7.10518633], [1516839180000, 0.06951808, 0.06961856, 0.06951808, 0.06961856, 3.58873376], [1516839240000, 0.07, 0.07, 0.06961864, 0.06996673, 9.7254273], [1516839300000, 0.06996673, 0.07014248, 0.06996673, 0.07014248, 2.42767994], [1516839360000, 0.06996673, 0.06996673, 0.06961859, 0.06996673, 2.7767], [1516839420000, 0.06961859, 0.06996672, 0.06961855, 0.06996672, 3.37019803], [1516839480000, 0.06961856, 0.06961856, 0.06961856, 0.06961856, 5.09372024], [1516839540000, 0.06996672, 0.06996672, 0.06961857, 0.06996672, 1.6128891], [1516839600000, 0.06961864, 0.06996672, 0.06961864, 0.06961864, 4.1204477], [1516839660000, 0.069619, 0.069619, 0.06961857, 0.06961857, 6.52288731], [1516839720000, 0.06996672, 0.06996672, 0.06961861, 0.06961861, 3.10943764], [1516839780000, 0.06996672, 0.06996672, 0.06996672, 0.06996672, 0.01472727], [1516839840000, 0.06996672, 0.06996672, 0.06996672, 0.06996672, 1.14224536], [1516839900000, 0.06961861, 0.07007516, 0.06961861, 0.07007516, 1.822465], [1516839960000, 0.06996672, 0.07006782, 0.06996672, 0.06996672, 1.21183511], [1516840020000, 0.07, 0.07007515, 0.07, 0.07007515, 2.03243702], [1516840080000, 0.07007515, 0.07007515, 0.07003, 0.07003, 0.0862179], [1516840140000, 0.07007515, 0.07031323, 0.07003, 0.07003, 8.23105845], [1516840200000, 0.07003, 0.07031323, 0.07003, 0.07031323, 5.88589906], [1516840260000, 0.07003, 0.07003, 0.07, 0.07, 3.31449195], [1516840320000, 0.07, 0.07003, 0.06989998, 0.07003, 2.67483974], [1516840380000, 0.07003, 0.07003, 0.06989998, 0.07003, 6.34651621], [1516840440000, 0.06989998, 0.07031323, 0.06989998, 0.06994331, 11.38274212], [1516840500000, 0.06991987, 0.07023993, 0.06991987, 0.07023993, 3.22458101], [1516840560000, 0.07008994, 0.07023994, 0.07008994, 0.07023994, 1.5731984], [1516840620000, 0.07023994, 0.07031323, 0.07013795, 0.07031323, 8.17310572], [1516840680000, 0.07013745, 0.07034248, 0.07008994, 0.07034248, 8.46271891], [1516840740000, 0.07016034, 0.07034248, 0.07016034, 0.07034248, 8.47487094], [1516840800000, 0.07034248, 0.07041915, 0.07034248, 0.07041915, 2.17395249], [1516840860000, 0.07041915, 0.07041915, 0.07016256, 0.07041915, 4.18525217], [1516840920000, 0.07041915, 0.07045, 0.07016256, 0.07016256, 2.2352547], [1516840980000, 0.07045, 0.07045, 0.07045, 0.07045, 2.15050516], [1516841040000, 0.07045552, 0.07049999, 0.07045, 0.07045552, 3.81171792], [1516841100000, 0.07045552, 0.07049999, 0.07045552, 0.07045552, 1.53069402], [1516841160000, 0.07045552, 0.07045553, 0.07045, 0.07045552, 7.60966742], [1516841220000, 0.07045552, 0.07045553, 0.07045552, 0.07045552, 22.1745898], [1516841280000, 0.07045552, 0.07045552, 0.07045552, 0.07045552, 0.26018732], [1516841340000, 0.07045552, 0.07045553, 0.07045552, 0.07045552, 4.30698492], [1516841400000, 0.07045552, 0.07049999, 0.07045552, 0.07049999, 1.83349688], [1516841460000, 0.07045552, 0.07045552, 0.07045552, 0.07045552, 3.8587781], [1516841520000, 0.07045552, 0.07045552, 0.07045552, 0.07045552, 7.84293759], [1516841580000, 0.07045552, 0.07045552, 0.07045552, 0.07045552, 0.70000805], [1516841640000, 0.07045552, 0.0704998, 0.07045552, 0.07045552, 4.88568417], [1516841700000, 0.0704998, 0.0704998, 0.07045552, 0.07045552, 4.35683611], [1516841760000, 0.07045552, 0.07045552, 0.07045, 0.07045, 5.72398688], [1516841820000, 0.07045, 0.07045, 0.07016256, 0.07016256, 8.13982789], [1516841940000, 0.07016256, 0.07016256, 0.07016256, 0.07016256, 1.38776732], [1516842000000, 0.07016256, 0.07044999, 0.07016256, 0.07044999, 2.74621898], [1516842060000, 0.07044998, 0.07044998, 0.070365, 0.070365, 1.28276906], [1516842120000, 0.07008995, 0.07027415, 0.06961874, 0.07027415, 13.45239129], [1516842180000, 0.06961889, 0.07006979, 0.06961889, 0.0696192, 4.98765825], [1516842240000, 0.07006978, 0.07006979, 0.07006978, 0.07006978, 0.05157108], [1516842300000, 0.07006978, 0.07016501, 0.07006978, 0.07016501, 0.5790412], [1516842360000, 0.07006978, 0.07006978, 0.07006978, 0.07006978, 0.03421985], [1516842420000, 0.06980507, 0.06980507, 0.06980507, 0.06980507, 0.05567752], [1516842480000, 0.07006978, 0.07006978, 0.07006978, 0.07006978, 5.93972848], [1516842540000, 0.06980507, 0.06980508, 0.06980507, 0.06980508, 2.0105], [1516842600000, 0.06980508, 0.07006978, 0.06980508, 0.07006978, 2.52353734], [1516842840000, 0.0698051, 0.07006978, 0.0698051, 0.07006978, 4.48130858], [1516842900000, 0.0698051, 0.0698051, 0.0698051, 0.0698051, 2.89484318], [1516843020000, 0.0699, 0.07, 0.0699, 0.0699, 13.53928172], [1516843080000, 0.0699, 0.0701421, 0.0699, 0.0699, 10.80365599], [1516843140000, 0.0699, 0.07011779, 0.0699, 0.0699, 17.65683562], [1516843200000, 0.0699, 0.0699, 0.0699, 0.0699, 0.0199854], [1516843260000, 0.0699, 0.0699, 0.0699, 0.0699, 0.25087339], [1516843320000, 0.0699, 0.0699, 0.0699, 0.0699, 1.58427588], [1516843380000, 0.0699, 0.07005289, 0.0699, 0.07005289, 0.03869559], [1516843440000, 0.07005289, 0.07016253, 0.06975001, 0.07012652, 2.8100516], [1516843500000, 0.07013151, 0.0702, 0.07013151, 0.07013801, 5.50223779], [1516843560000, 0.06975001, 0.07014112, 0.06975001, 0.07014111, 1.70010209], [1516843620000, 0.0701411, 0.0701411, 0.06978608, 0.06978608, 2.36856516], [1516843740000, 0.06978608, 0.06978608, 0.06978608, 0.06978608, 0.04366812], [1516843800000, 0.06978608, 0.07004999, 0.06978608, 0.0698, 2.10460648], [1516843920000, 0.0698, 0.0698, 0.0698, 0.0698, 2.90399026], [1516843980000, 0.07009487, 0.07009495, 0.0698, 0.0698, 2.4506487], [1516844040000, 0.0698, 0.07009487, 0.0698, 0.0698, 1.878], [1516844100000, 0.07009487, 0.07009487, 0.07009487, 0.07009487, 0.07517999], [1516844160000, 0.06980051, 0.06980051, 0.06961862, 0.06961864, 13.58209946], [1516844220000, 0.06961866, 0.06961866, 0.06961865, 0.06961865, 2.42105659], [1516844280000, 0.07009231, 0.07009231, 0.06962404, 0.06962404, 0.30353443], [1516844400000, 0.07005999, 0.0700746, 0.06961864, 0.07007459, 16.51263011], [1516844460000, 0.07007458, 0.07007459, 0.06961873, 0.06961873, 1.2762409], [1516844520000, 0.06966737, 0.07005634, 0.06966406, 0.07005634, 1.05109979], [1516844580000, 0.06971622, 0.06971623, 0.06971622, 0.06971623, 4.84885073], [1516844640000, 0.07, 0.07, 0.06971623, 0.06971623, 0.8185803], [1516844700000, 0.06971623, 0.06971624, 0.06961864, 0.06971623, 20.58970533], [1516844760000, 0.06970228, 0.06971623, 0.06970228, 0.06971623, 0.36495803], [1516844820000, 0.07, 0.07, 0.07, 0.07, 0.0162016], [1516844880000, 0.07, 0.07, 0.07, 0.07, 0.75846089], [1516844940000, 0.07009495, 0.07009999, 0.07009495, 0.07009999, 0.06690686], [1516845000000, 0.07009999, 0.0701, 0.07009999, 0.0701, 0.15701056], [1516845060000, 0.07, 0.0701, 0.07, 0.07, 1.0803567], [1516845120000, 0.07, 0.07, 0.07, 0.07, 0.19693074], [1516845180000, 0.0701, 0.0701, 0.0701, 0.0701, 0.1619809], [1516845240000, 0.07028555, 0.07028557, 0.0702, 0.07028557, 2.97780007], [1516845300000, 0.07028553, 0.07028553, 0.0702, 0.07028553, 1.9529055], [1516845360000, 0.07028553, 0.07028553, 0.07018546, 0.07018546, 0.36608442], [1516845420000, 0.07018546, 0.07028549, 0.0701, 0.0701, 14.10973131], [1516845480000, 0.0701, 0.0701, 0.0701, 0.0701, 12.27963591], [1516845540000, 0.0701, 0.07018548, 0.0701, 0.0701, 4.33392368], [1516845600000, 0.0701, 0.0701, 0.0701, 0.0701, 11.88169], [1516845660000, 0.0701, 0.07018548, 0.0701, 0.07018548, 1.10579977], [1516845720000, 0.0701, 0.0701, 0.0701, 0.0701, 0.61369053], [1516845780000, 0.0701, 0.0701, 0.0701, 0.0701, 0.1], [1516845840000, 0.07018548, 0.07018548, 0.07018548, 0.07018548, 0.27370532], [1516845900000, 0.07028549, 0.07028549, 0.07028549, 0.07028549, 0.51337683], [1516845960000, 0.07028549, 0.07028549, 0.07028549, 0.07028549, 10.60520573], [1516846020000, 0.07028549, 0.07028549, 0.07028549, 0.07028549, 0.56880211], [1516846140000, 0.07028549, 0.07028549, 0.07028549, 0.07028549, 0.87057272], [1516846200000, 0.07028549, 0.07043818, 0.07028549, 0.07028549, 3.77390586], [1516846260000, 0.07028549, 0.07028549, 0.07028549, 0.07028549, 4.72248603], [1516846320000, 0.07028549, 0.07043818, 0.07028549, 0.07043818, 4.29282939], [1516846380000, 0.07028549, 0.07028549, 0.07, 0.07, 2.80176322], [1516846440000, 0.07028549, 0.07043814, 0.07028549, 0.07043814, 0.08352163], [1516846500000, 0.07028549, 0.07029, 0.07028549, 0.07029, 1.64], [1516846560000, 0.07029, 0.07043818, 0.07029, 0.07043818, 4.46737881], [1516846620000, 0.07043818, 0.07043818, 0.07029, 0.07029, 5.3336312], [1516846680000, 0.07029, 0.07029, 0.07029, 0.07029, 6.515286], [1516846800000, 0.07029, 0.07029, 0.07029, 0.07029, 0.01091772], [1516846860000, 0.07029, 0.07043818, 0.07029, 0.07043818, 3.00495167], [1516846920000, 0.07043818, 0.07043818, 0.07029, 0.07029, 4.20515884], [1516846980000, 0.07029, 0.07029, 0.07029, 0.07029, 0.2468172], [1516847040000, 0.07029, 0.07029, 0.0702899, 0.07029, 0.4100115], [1516847100000, 0.07043818, 0.07043818, 0.07029, 0.07029, 0.35027017], [1516847160000, 0.07029, 0.07029, 0.07029, 0.07029, 0.12760845], [1516847220000, 0.07029, 0.07043817, 0.07029, 0.07029, 0.99289576], [1516847280000, 0.07029, 0.07029, 0.07029, 0.07029, 0.01568502], [1516847340000, 0.07029, 0.07043817, 0.07029, 0.07043817, 0.67602219], [1516847400000, 0.07043817, 0.07043817, 0.07043817, 0.07043817, 2.98771799], [1516847460000, 0.07043816, 0.07043817, 0.07043816, 0.07043817, 4.13628732], [1516847520000, 0.07043817, 0.07043817, 0.07043816, 0.07043817, 4.69656452], [1516847580000, 0.07043817, 0.07043817, 0.07043817, 0.07043817, 3.50202172], [1516847640000, 0.07043816, 0.07043817, 0.07043816, 0.07043816, 1.35741176], [1516847700000, 0.07043816, 0.07043817, 0.07029, 0.07043817, 2.86896404], [1516847760000, 0.0702899, 0.07043818, 0.07002564, 0.07043818, 1.66077368], [1516847820000, 0.07043817, 0.07043818, 0.07043817, 0.07043818, 5.42975071], [1516847880000, 0.07044997, 0.07044998, 0.07043817, 0.07043817, 3.21269046], [1516847940000, 0.07044998, 0.07044998, 0.07043817, 0.07044998, 6.20484409], [1516848000000, 0.07044998, 0.07045, 0.07044998, 0.07045, 1.65567353], [1516848060000, 0.07045814, 0.0705, 0.07045814, 0.0705, 8.54543706], [1516848120000, 0.0705, 0.07061427, 0.07045309, 0.07061427, 14.67203175], [1516848180000, 0.07062, 0.07062, 0.07061427, 0.07061427, 1.81378238], [1516848240000, 0.07061427, 0.07061427, 0.07044001, 0.07045, 1.15494672], [1516848300000, 0.07045, 0.07046218, 0.07045, 0.0704604, 5.07444306], [1516848360000, 0.0704604, 0.07046041, 0.0704604, 0.07046041, 0.24436141], [1516848420000, 0.07048041, 0.07048041, 0.07048041, 0.07048041, 0.216], [1516848480000, 0.07048041, 0.07048041, 0.07048041, 0.07048041, 0.25526198], [1516848540000, 0.07048041, 0.0706199, 0.07046042, 0.07046042, 3.44518588], [1516848600000, 0.07046044, 0.07062, 0.07046044, 0.07062, 6.4103817], [1516848660000, 0.07066104, 0.07088847, 0.07059333, 0.07072534, 15.91972583], [1516848720000, 0.07072534, 0.0708, 0.07054012, 0.0708, 3.15085996], [1516848780000, 0.0708, 0.07088889, 0.0708, 0.07088812, 4.74298318], [1516848840000, 0.07088812, 0.071, 0.0708, 0.0708, 10.21193539], [1516848900000, 0.070813, 0.071, 0.07065383, 0.0707144, 2.02498678], [1516848960000, 0.07060024, 0.071, 0.07060024, 0.07080734, 6.34016508], [1516849020000, 0.07080734, 0.071, 0.07080734, 0.071, 0.03661441], [1516849080000, 0.071, 0.071, 0.071, 0.071, 0.98838038], [1516849140000, 0.071, 0.071, 0.071, 0.071, 4.89010229], [1516849200000, 0.071, 0.0710009, 0.071, 0.0710009, 4.22159153], [1516849260000, 0.0710009, 0.0710009, 0.0709, 0.07090002, 7.64573042], [1516849320000, 0.07090001, 0.07108895, 0.07079639, 0.0710863, 11.70310026], [1516849380000, 0.0710863, 0.071284, 0.0710863, 0.0710863, 4.31338267], [1516849440000, 0.0710863, 0.071284, 0.0710863, 0.071284, 5.20823345], [1516849500000, 0.0710863, 0.071284, 0.0710863, 0.0710863, 3.79277296], [1516849560000, 0.0710863, 0.07128, 0.0710863, 0.0710863, 4.97022667], [1516849620000, 0.07128, 0.07135498, 0.0710863, 0.07135497, 30.23434475], [1516849680000, 0.0711, 0.0711, 0.0711, 0.0711, 0.17787986], [1516849740000, 0.07119999, 0.07119999, 0.07119999, 0.07119999, 0.08285208], [1516849800000, 0.07119999, 0.07127931, 0.0710863, 0.07127931, 14.4414127], [1516849860000, 0.0710863, 0.07133, 0.0710863, 0.0710863, 26.46725444], [1516849920000, 0.0710863, 0.0713139, 0.07021636, 0.07131389, 14.13979459], [1516849980000, 0.07122, 0.0713, 0.07034853, 0.07036727, 38.36756145], [1516850040000, 0.07039926, 0.07073108, 0.07037006, 0.07073108, 3.39690194], [1516850100000, 0.07047232, 0.0709435, 0.07047232, 0.07093458, 2.67846023], [1516850160000, 0.0709435, 0.07108864, 0.07052265, 0.0709259, 0.9128443], [1516850220000, 0.0704, 0.07074875, 0.07021365, 0.07021365, 3.0005265], [1516850280000, 0.07034214, 0.07034214, 0.07021957, 0.07021957, 0.24171773], [1516850340000, 0.07073138, 0.07073138, 0.07035454, 0.07035454, 0.45991782], [1516850400000, 0.07077077, 0.07077077, 0.07075892, 0.07076894, 1.34003631], [1516850460000, 0.07035293, 0.07062933, 0.07034214, 0.07062933, 6.81226954], [1516850520000, 0.07039451, 0.0705, 0.07039451, 0.0705, 0.739843], [1516850580000, 0.07041989, 0.07041989, 0.07041989, 0.07041989, 0.93], [1516850700000, 0.07085172, 0.07085172, 0.07085172, 0.07085172, 0.84295775], [1516850820000, 0.07035532, 0.07035532, 0.07034215, 0.07034215, 0.17], [1516850880000, 0.07069216, 0.07069909, 0.07068244, 0.07068439, 5.23774772], [1516850940000, 0.07070591, 0.07070591, 0.07069826, 0.07069826, 1.31136923], [1516851000000, 0.07065813, 0.07081746, 0.07018631, 0.07065521, 40.06370325], [1516851060000, 0.07065, 0.07065, 0.07065, 0.07065, 1.0], [1516851120000, 0.07023165, 0.07071203, 0.07023165, 0.07023251, 0.44572273], [1516851240000, 0.07073313, 0.07073313, 0.07073313, 0.07073313, 0.01202027], [1516851300000, 0.07073313, 0.07073317, 0.07023251, 0.07073317, 2.01614758], [1516851420000, 0.07073317, 0.07073317, 0.07073317, 0.07073317, 0.06625932], [1516851480000, 0.07073317, 0.07073317, 0.07073317, 0.07073317, 2.31022946], [1516851600000, 0.07073317, 0.07073317, 0.07073317, 0.07073317, 0.23615695], [1516851660000, 0.07073317, 0.07073317, 0.07073317, 0.07073317, 0.14374628], [1516851720000, 0.07068792, 0.07068792, 0.07064268, 0.07064268, 0.23606275], [1516851780000, 0.07060777, 0.07060777, 0.0702801, 0.0702801, 0.23944077], [1516851840000, 0.07027234, 0.07064268, 0.07025752, 0.07064268, 9.46901227], [1516851960000, 0.07030469, 0.07064268, 0.07030469, 0.07064268, 0.10493665], [1516852020000, 0.07064266, 0.07064266, 0.07064266, 0.07064266, 0.01611398], [1516852140000, 0.07030631, 0.07030631, 0.0703063, 0.0703063, 1.5179], [1516852200000, 0.0703063, 0.07063896, 0.0703063, 0.07063896, 2.27256485], [1516852260000, 0.0703063, 0.0703063, 0.0703063, 0.0703063, 0.01], [1516852320000, 0.07063896, 0.07063896, 0.0703063, 0.0703063, 8.37902574], [1516852380000, 0.07063896, 0.07063896, 0.0703063, 0.0703063, 10.83986568], [1516852560000, 0.07061656, 0.07061656, 0.07061656, 0.07061656, 0.04646648], [1516852680000, 0.0703063, 0.0703063, 0.0703063, 0.0703063, 0.99], [1516852800000, 0.07030631, 0.0708518, 0.07030631, 0.0708518, 7.36203861], [1516852860000, 0.07068164, 0.07068164, 0.07068164, 0.07068164, 0.01488861], [1516852980000, 0.0706533, 0.07068162, 0.0706533, 0.07068162, 1.82374395], [1516853040000, 0.07068162, 0.0708518, 0.07068162, 0.07068162, 0.94714948], [1516853100000, 0.07068162, 0.07073565, 0.07068162, 0.07073565, 6.32258238], [1516853160000, 0.07073634, 0.07073634, 0.07068162, 0.07068162, 1.8553502], [1516853220000, 0.07068162, 0.07068438, 0.07068162, 0.07068162, 0.37579458], [1516853340000, 0.07030632, 0.07030632, 0.07030632, 0.07030632, 0.05], [1516853400000, 0.07030632, 0.07050632, 0.0703063, 0.0703063, 4.62206928], [1516853460000, 0.0703063, 0.07073632, 0.0703063, 0.0705, 25.43323513], [1516853520000, 0.0705, 0.07062695, 0.0705, 0.07062695, 1.95890545], [1516853580000, 0.0705, 0.0705001, 0.0703063, 0.0703063, 0.55167393], [1516853640000, 0.0703063, 0.07067217, 0.0703063, 0.07064402, 17.46353722], [1516853700000, 0.0703063, 0.07063374, 0.0703063, 0.07063374, 2.57509452], [1516853760000, 0.0703063, 0.07062335, 0.0703063, 0.07062335, 6.4661212], [1516853820000, 0.0703063, 0.0703063, 0.0703063, 0.0703063, 2.7568], [1516853880000, 0.07042547, 0.0705963, 0.0703063, 0.0703063, 17.26869846], [1516853940000, 0.0703063, 0.07056444, 0.07025753, 0.07056444, 1.69295986], [1516854000000, 0.07044219, 0.07044219, 0.07025753, 0.07025753, 0.06516628], [1516854060000, 0.07056444, 0.07056444, 0.07056444, 0.07056444, 0.0406622], [1516854120000, 0.07025753, 0.07053243, 0.07025753, 0.07053243, 0.71678231], [1516854180000, 0.07025753, 0.07025753, 0.07025753, 0.07025753, 0.13822391], [1516854240000, 0.07056444, 0.07058338, 0.07056444, 0.0705714, 5.32067199], [1516854300000, 0.0704, 0.0704, 0.07025753, 0.07025753, 0.17479921], [1516854360000, 0.0704, 0.0704, 0.0704, 0.0704, 1.2337212], [1516854420000, 0.0704, 0.0704, 0.07025752, 0.07025752, 10.19820082], [1516854480000, 0.0704, 0.0704, 0.07025752, 0.0704, 34.05717984], [1516854540000, 0.0704, 0.07054097, 0.07025752, 0.07054097, 3.35345172], [1516854600000, 0.07054153, 0.07056793, 0.07054153, 0.07056793, 12.8409875], [1516854660000, 0.07056439, 0.0705644, 0.07056439, 0.0705644, 1.91060442], [1516854720000, 0.0704, 0.0704, 0.0704, 0.0704, 0.25094418], [1516854840000, 0.0705644, 0.0705714, 0.0705644, 0.0705714, 1.21255524], [1516854900000, 0.0705714, 0.0705714, 0.0705644, 0.0705644, 1.55617741], [1516854960000, 0.0705714, 0.0705714, 0.0705644, 0.0705644, 0.21437497], [1516855020000, 0.0705644, 0.0705644, 0.07018631, 0.07018631, 1.16403595], [1516855200000, 0.07038789, 0.0705643, 0.07020549, 0.0705643, 0.90346158], [1516855320000, 0.0705606, 0.0705606, 0.07054733, 0.07055294, 1.61341296], [1516855500000, 0.07055294, 0.07055294, 0.07055294, 0.07055294, 0.2831208], [1516855740000, 0.07055294, 0.07055294, 0.07020555, 0.07020555, 0.07050895], [1516855800000, 0.07020549, 0.070551, 0.07020549, 0.070551, 0.5147213], [1516855860000, 0.07037461, 0.07037461, 0.07037461, 0.07037461, 0.12147859], [1516855920000, 0.0703746, 0.07037461, 0.0703746, 0.07037461, 0.14148558], [1516855980000, 0.0703746, 0.0703746, 0.07020549, 0.07020549, 0.64361575], [1516856100000, 0.07037459, 0.07037459, 0.07037459, 0.07037459, 0.14209672], [1516856160000, 0.07020555, 0.07020555, 0.07018631, 0.07018631, 8.87575675], [1516856220000, 0.07018631, 0.07020548, 0.07018631, 0.07020548, 2.65969848], [1516856280000, 0.07018631, 0.07020548, 0.07018631, 0.07018631, 0.29775493], [1516856400000, 0.07018499, 0.07018631, 0.07018499, 0.07018631, 3.29397529], [1516856460000, 0.0701863, 0.07018631, 0.0701863, 0.07018631, 1.89007148], [1516856520000, 0.07018631, 0.07020549, 0.07018631, 0.07020549, 6.7967283], [1516856580000, 0.07020549, 0.07020549, 0.07020549, 0.07020549, 2.92284833], [1516856640000, 0.070201, 0.070201, 0.07018631, 0.07018631, 0.1095604], [1516856700000, 0.07018631, 0.07020549, 0.07018631, 0.07020549, 1.01385376], [1516856820000, 0.0705393, 0.0705393, 0.0705393, 0.0705393, 0.02145705], [1516856880000, 0.0705393, 0.0705393, 0.07036295, 0.07036295, 0.25461033], [1516856940000, 0.07053929, 0.07053929, 0.07053929, 0.07053929, 0.04834582], [1516857000000, 0.07021682, 0.0705, 0.07021682, 0.0705, 0.5696642], [1516857060000, 0.0705, 0.0705, 0.0704999, 0.0704999, 0.53675299], [1516857120000, 0.0702003, 0.0702003, 0.07018501, 0.07018501, 12.51202818], [1516857180000, 0.07020637, 0.07021508, 0.07019747, 0.07019747, 17.49338894], [1516857300000, 0.07045, 0.07045, 0.07045, 0.07045, 0.19639346], [1516857360000, 0.07020677, 0.07020677, 0.0701975, 0.07020677, 12.29131331], [1516857420000, 0.0701906, 0.07020677, 0.07018763, 0.0701999, 26.69227608], [1516857480000, 0.07018501, 0.07020677, 0.07018501, 0.07020677, 30.5525546], [1516857540000, 0.07020677, 0.07020677, 0.07020677, 0.07020677, 0.64449216], [1516857600000, 0.07020677, 0.07020677, 0.07020677, 0.07020677, 0.31485273], [1516857660000, 0.07020677, 0.07020677, 0.07020677, 0.07020677, 0.52870516], [1516857720000, 0.07019245, 0.07020677, 0.07019245, 0.07020677, 25.73142022], [1516857780000, 0.07020677, 0.07020677, 0.07020677, 0.07020677, 20.3500401], [1516857840000, 0.07020677, 0.07045, 0.07020677, 0.07030264, 2.19575239], [1516857960000, 0.07044, 0.07045004, 0.07044, 0.07045004, 0.45120247], [1516858020000, 0.07045004, 0.07053928, 0.07045004, 0.07045004, 9.66372966], [1516858080000, 0.07045004, 0.07045004, 0.07045004, 0.07045004, 0.26559878], [1516858140000, 0.07053928, 0.07053928, 0.07045004, 0.07045004, 9.83683872], [1516858200000, 0.07053928, 0.07063374, 0.07053928, 0.07063374, 3.2835561], [1516858320000, 0.07063374, 0.07063374, 0.07063374, 0.07063374, 0.16147011], [1516858380000, 0.0705714, 0.0705714, 0.0705714, 0.0705714, 0.4261], [1516858440000, 0.0705714, 0.0705714, 0.0705714, 0.0705714, 0.89714702], [1516858560000, 0.07063374, 0.07063374, 0.0705714, 0.0705714, 2.08563906], [1516858620000, 0.0705744, 0.07063374, 0.0705714, 0.07063374, 3.97337172], [1516858680000, 0.07063373, 0.07063373, 0.0705714, 0.0705714, 2.42817778], [1516858740000, 0.0705714, 0.0705714, 0.0705714, 0.0705714, 0.8523], [1516858800000, 0.0705714, 0.07063373, 0.0705714, 0.07063373, 9.28315287], [1516858860000, 0.0705714, 0.0705714, 0.0705714, 0.0705714, 7.25158965], [1516858920000, 0.07063373, 0.07063374, 0.07063373, 0.07063374, 0.90438521], [1516858980000, 0.07063374, 0.07084876, 0.07063374, 0.07084876, 3.0189885], [1516859040000, 0.07063374, 0.07085175, 0.07063373, 0.07063373, 1.8605982], [1516859100000, 0.07082785, 0.0708518, 0.07082785, 0.0708518, 0.28554949], [1516859160000, 0.0708518, 0.0708518, 0.0708518, 0.0708518, 1.91187804], [1516859220000, 0.07088632, 0.07088632, 0.07087701, 0.07087701, 0.15281811], [1516859280000, 0.07088632, 0.07088632, 0.07063373, 0.07063373, 0.66507419], [1516859340000, 0.07064515, 0.07064515, 0.07064515, 0.07064515, 0.02499585], [1516859400000, 0.07063373, 0.07086132, 0.07063373, 0.07086132, 0.40692035], [1516859460000, 0.07074, 0.07086132, 0.07074, 0.07074, 10.94365877], [1516859520000, 0.07074, 0.07086132, 0.07074, 0.07086132, 14.55090641], [1516859580000, 0.07086132, 0.07086132, 0.07074, 0.07074, 5.69893196], [1516859640000, 0.07074, 0.07074, 0.07074, 0.07074, 0.88286538], [1516859700000, 0.07097942, 0.07097942, 0.07074, 0.07074, 6.44604161], [1516859760000, 0.070932, 0.070932, 0.07074, 0.07074, 0.13109605], [1516859820000, 0.07074, 0.07074, 0.07074, 0.07074, 2.06857831], [1516859940000, 0.07099999, 0.07099999, 0.07074, 0.07074, 0.66744274], [1516860000000, 0.07074, 0.07096339, 0.07074, 0.07096339, 5.14090042], [1516860060000, 0.07074001, 0.07094204, 0.07074, 0.07094204, 12.99573292], [1516860120000, 0.07076132, 0.07076132, 0.07076132, 0.07076132, 0.35524221], [1516860180000, 0.07076132, 0.07094204, 0.07076132, 0.07076132, 0.83330845], [1516860240000, 0.07076132, 0.07076132, 0.07076132, 0.07076132, 0.075], [1516860300000, 0.07094204, 0.07094204, 0.07076132, 0.07076132, 0.28109042], [1516860360000, 0.07093358, 0.07093358, 0.07076132, 0.07076132, 0.71172932], [1516860480000, 0.07091721, 0.07091721, 0.07091721, 0.07091721, 0.11716581], [1516860600000, 0.07076132, 0.07076132, 0.07076132, 0.07076132, 5.21138029], [1516860720000, 0.07063373, 0.07063373, 0.07063373, 0.07063373, 12.46207183], [1516860780000, 0.07076132, 0.07078659, 0.07063373, 0.07078659, 11.90162602], [1516860840000, 0.0708, 0.07088602, 0.0708, 0.0708, 0.53498542], [1516860900000, 0.0708, 0.07094094, 0.0708, 0.0708, 3.72147292], [1516860960000, 0.07085, 0.0709184, 0.0708, 0.0708, 4.11332173], [1516861020000, 0.0708, 0.0708, 0.0708, 0.0708, 0.73763306], [1516861140000, 0.07085, 0.07085, 0.07085, 0.07085, 2.58680804], [1516861200000, 0.07085, 0.07094204, 0.0708, 0.0708, 20.20570134], [1516861260000, 0.0708, 0.0708, 0.0708, 0.0708, 0.49497148], [1516861320000, 0.0708, 0.0708, 0.07063373, 0.07063373, 9.40436557], [1516861380000, 0.07094204, 0.07094204, 0.07094204, 0.07094204, 1.5943137], [1516861440000, 0.07094204, 0.07094204, 0.07094204, 0.07094204, 0.01686236], [1516861500000, 0.07094204, 0.07094204, 0.07094204, 0.07094204, 0.28192044], [1516861560000, 0.07063386, 0.07099999, 0.07063386, 0.07099999, 4.62029095], [1516861620000, 0.07094204, 0.07094204, 0.07065308, 0.07071734, 0.30843571], [1516861740000, 0.07099999, 0.07146892, 0.07065367, 0.0711, 18.24904819], [1516861800000, 0.0711, 0.0711, 0.0711, 0.0711, 140.55293619], [1516861860000, 0.07080871, 0.07080871, 0.07080133, 0.07080133, 0.63795609], [1516861920000, 0.07072326, 0.0707742, 0.07072326, 0.0707742, 0.21575998], [1516861980000, 0.0707454, 0.0707454, 0.0707454, 0.0707454, 0.15634521], [1516862040000, 0.07080731, 0.07080731, 0.0707927, 0.0707927, 0.53192612], [1516862100000, 0.0711, 0.0711, 0.0711, 0.0711, 0.18015574], [1516862160000, 0.07079151, 0.07079151, 0.07079151, 0.07079151, 0.22446934], [1516862220000, 0.07109999, 0.0711, 0.07109999, 0.0711, 4.93513176], [1516862280000, 0.0711, 0.07126432, 0.0711, 0.07120468, 0.38242477], [1516862340000, 0.0711, 0.0711, 0.0711, 0.0711, 0.01550633], [1516862400000, 0.0711, 0.0711, 0.0711, 0.0711, 0.03101266], [1516862460000, 0.0711, 0.0711, 0.0711, 0.0711, 0.01550633], [1516862520000, 0.0711, 0.07119081, 0.0711, 0.0711, 4.01839193], [1516862580000, 0.0711, 0.0711, 0.0711, 0.0711, 0.40305737], [1516862640000, 0.0711, 0.0711, 0.0711, 0.0711, 0.63736181], [1516862700000, 0.0711, 0.0711, 0.07094576, 0.0711, 0.60926681], [1516862940000, 0.0711, 0.0711, 0.07094576, 0.07094576, 4.03220542], [1516863000000, 0.0710001, 0.0711, 0.07095, 0.07095, 1.25151493], [1516863060000, 0.0711, 0.0712, 0.07095, 0.0712, 11.32079448], [1516863120000, 0.07095, 0.07137192, 0.07095, 0.07137192, 4.77911017], [1516863180000, 0.07138777, 0.07144783, 0.07097023, 0.07097023, 3.9150087], [1516863240000, 0.07098956, 0.07098956, 0.07096399, 0.07096399, 2.30125596], [1516863300000, 0.070964, 0.07133857, 0.07095, 0.07133857, 0.70870387], [1516863420000, 0.0709501, 0.0711, 0.0709501, 0.0711, 0.47593599], [1516863480000, 0.07109999, 0.07109999, 0.07109999, 0.07109999, 0.33322457], [1516863540000, 0.07109998, 0.07109999, 0.0709502, 0.0709502, 0.41314402], [1516863600000, 0.0709502, 0.07136822, 0.0709502, 0.07136822, 0.29683301], [1516863660000, 0.07136782, 0.07136782, 0.07136782, 0.07136782, 0.25891675], [1516863720000, 0.07133834, 0.0714689, 0.07078948, 0.07146889, 34.69926275], [1516863780000, 0.07146893, 0.071469, 0.07080351, 0.07132901, 29.18576967], [1516863840000, 0.0713289, 0.0713289, 0.0713289, 0.0713289, 0.13984492], [1516863900000, 0.07132881, 0.07132881, 0.07083355, 0.07083355, 0.53744208], [1516863960000, 0.07130227, 0.07130227, 0.07089849, 0.0712, 0.19367125], [1516864080000, 0.0712, 0.0712, 0.0708985, 0.0708985, 1.09061359], [1516864140000, 0.07119998, 0.07119998, 0.07089851, 0.07089851, 0.6851019], [1516864200000, 0.07089855, 0.07125186, 0.07083583, 0.07125186, 2.22024666], [1516864260000, 0.07128245, 0.07128245, 0.07128245, 0.07128245, 0.03409447], [1516864320000, 0.07083582, 0.07119261, 0.0707, 0.07084826, 15.04943726], [1516864380000, 0.07084826, 0.07105115, 0.07064216, 0.07064216, 1.34366758], [1516864440000, 0.0707, 0.0707, 0.0707, 0.0707, 0.27092713], [1516864500000, 0.07103293, 0.07103293, 0.0707, 0.0707, 0.19098711], [1516864560000, 0.0707, 0.0707, 0.0707, 0.0707, 0.1], [1516864680000, 0.07074592, 0.07074592, 0.07071369, 0.07071369, 14.72946763], [1516864740000, 0.07071369, 0.07100256, 0.07071369, 0.07100256, 0.32648687], [1516864800000, 0.071, 0.071, 0.07070008, 0.07070008, 0.33826774], [1516864860000, 0.0709956, 0.071, 0.07099549, 0.071, 1.0509498], [1516864980000, 0.07099999, 0.0710225, 0.07084841, 0.071, 4.01992771], [1516865040000, 0.0708, 0.070993, 0.07070001, 0.07070001, 5.35143835], [1516865100000, 0.0707, 0.07097292, 0.0707, 0.0708, 4.9140848], [1516865160000, 0.07097291, 0.07097291, 0.07063375, 0.07097291, 5.15858089], [1516865220000, 0.07097291, 0.07097291, 0.07097291, 0.07097291, 1.27823571], [1516865280000, 0.07063375, 0.07088305, 0.07063373, 0.07063374, 2.81527992], [1516865340000, 0.07063374, 0.07091673, 0.07063373, 0.07091673, 1.97722409], [1516865400000, 0.07063373, 0.07090843, 0.07063373, 0.07090843, 0.50520378], [1516865460000, 0.07090499, 0.07090499, 0.07063373, 0.07063373, 0.76088789], [1516865520000, 0.07089678, 0.07089678, 0.07063373, 0.07063373, 2.56617444], [1516865580000, 0.07094322, 0.07094322, 0.07094322, 0.07094322, 0.13], [1516865640000, 0.07093799, 0.07093799, 0.07063373, 0.07091708, 0.41720329], [1516865700000, 0.0709149, 0.07094178, 0.07063373, 0.07093532, 4.66813226], [1516865760000, 0.0708, 0.0708, 0.0708, 0.0708, 0.01560866], [1516865820000, 0.070634, 0.070634, 0.070634, 0.070634, 0.158], [1516865880000, 0.07063403, 0.0708, 0.070634, 0.0708, 2.130593], [1516865940000, 0.0708, 0.0708, 0.070634, 0.070634, 0.14161712], [1516866000000, 0.070634, 0.0708, 0.070634, 0.070634, 0.40143081], [1516866060000, 0.0708, 0.0708, 0.070634, 0.070634, 0.1129114], [1516866120000, 0.07063401, 0.0708, 0.07063373, 0.07063373, 5.30829162], [1516866180000, 0.07063373, 0.0708, 0.07063373, 0.07063373, 1.34361302], [1516866240000, 0.0708, 0.0708, 0.07063373, 0.0708, 1.82722518], [1516866300000, 0.0707, 0.0707, 0.07063373, 0.0707, 0.39695382], [1516866360000, 0.0707, 0.0707, 0.0707, 0.0707, 0.03121738], [1516866420000, 0.07063373, 0.07063373, 0.07063373, 0.07063373, 0.96577557], [1516866480000, 0.07063373, 0.07063373, 0.07063373, 0.07063373, 5.6625765], [1516866600000, 0.07063373, 0.07068999, 0.0704, 0.0705, 7.60373714], [1516866660000, 0.0705, 0.07061582, 0.07035964, 0.07035964, 0.97860222], [1516866720000, 0.0706, 0.07061582, 0.07042561, 0.07042561, 0.46576491], [1516866780000, 0.07039661, 0.07061581, 0.07039661, 0.07061581, 0.15847272], [1516866840000, 0.07061582, 0.07061582, 0.07045066, 0.07061582, 0.12355093], [1516866960000, 0.07061581, 0.07061581, 0.07061581, 0.07061581, 0.04762163], [1516867020000, 0.07061581, 0.07061581, 0.07046764, 0.0706158, 3.82736326], [1516867080000, 0.07061581, 0.07061582, 0.0705262, 0.07061582, 2.27432512], [1516867140000, 0.07068998, 0.07068998, 0.07061581, 0.07068998, 1.34517021], [1516867200000, 0.07068997, 0.0707, 0.07068997, 0.0707, 0.84490632], [1516867260000, 0.07061581, 0.0707, 0.07061581, 0.0707, 0.03199468], [1516867320000, 0.07069999, 0.0707, 0.07069999, 0.0707, 1.55256376], [1516867380000, 0.0707, 0.0708, 0.07069999, 0.0708, 0.95133299], [1516867440000, 0.07069999, 0.07069999, 0.07069999, 0.07069999, 0.10052235], [1516867500000, 0.07070004, 0.07079998, 0.07070004, 0.07070004, 0.72996534], [1516867560000, 0.07070004, 0.07070004, 0.07070004, 0.07070004, 0.05176911], [1516867620000, 0.07079996, 0.07097291, 0.07070009, 0.07070009, 3.65507499], [1516867680000, 0.07070009, 0.07070009, 0.07069999, 0.07069999, 0.68048821], [1516867740000, 0.07069999, 0.07069999, 0.07069998, 0.07069999, 0.25395474], [1516867800000, 0.07069999, 0.07092426, 0.07069999, 0.07088923, 1.8454162], [1516867860000, 0.07087, 0.07087, 0.07087, 0.07087, 0.10025655], [1516867920000, 0.07087, 0.07087, 0.07087, 0.07087, 0.33], [1516867980000, 0.07087, 0.07087, 0.07086999, 0.07086999, 0.63519805], [1516868040000, 0.0707, 0.0707, 0.0707, 0.0707, 1.98], [1516868100000, 0.0707, 0.0707, 0.07069999, 0.07069999, 6.02024165], [1516868160000, 0.07069999, 0.0707, 0.07069999, 0.07069999, 9.5582027], [1516868220000, 0.07031095, 0.0707, 0.07031094, 0.07069999, 8.44588183], [1516868280000, 0.0707, 0.07087, 0.07069999, 0.07087, 0.43753988], [1516868340000, 0.07097044, 0.07097044, 0.07087, 0.07087, 0.38414989], [1516868400000, 0.07087, 0.07096709, 0.0707, 0.0707, 0.59732366], [1516868460000, 0.0707, 0.0707, 0.07031094, 0.07031094, 0.77810737], [1516868520000, 0.0707, 0.0707, 0.07069999, 0.0707, 0.17136862], [1516868580000, 0.07035426, 0.0707, 0.07035426, 0.0706, 4.08178422], [1516868640000, 0.0706, 0.0706, 0.07040383, 0.07040383, 0.10585691], [1516868700000, 0.0706, 0.0706, 0.0706, 0.0706, 0.073564], [1516868760000, 0.0706, 0.0707, 0.0706, 0.0707, 0.02057005], [1516868880000, 0.0703543, 0.0703543, 0.0703543, 0.0703543, 0.05539097], [1516868940000, 0.07035886, 0.07035886, 0.07021945, 0.07034171, 15.22206251], [1516869000000, 0.07051756, 0.0707, 0.07034171, 0.07035413, 1.63158017], [1516869060000, 0.0703444, 0.0703444, 0.07034171, 0.07034171, 0.78850035], [1516869120000, 0.07032917, 0.07034172, 0.07032917, 0.07034172, 0.42823579], [1516869180000, 0.07032918, 0.07032918, 0.07032918, 0.07032918, 3.60320542], [1516869240000, 0.07069999, 0.0707, 0.07069999, 0.0707, 0.04356367], [1516869300000, 0.07069999, 0.0707, 0.07069999, 0.0707, 2.24691465], [1516869360000, 0.0707, 0.07087344, 0.07032917, 0.07032919, 1.66918318], [1516869480000, 0.07038219, 0.07038219, 0.07032925, 0.07032925, 2.1347], [1516869540000, 0.07038219, 0.0704733, 0.07032919, 0.0704733, 6.44572305], [1516869600000, 0.0704733, 0.0704733, 0.07032916, 0.07032916, 1.40051789], [1516869660000, 0.07032919, 0.07032919, 0.07032916, 0.07032916, 1.66609774], [1516869720000, 0.07035, 0.07039828, 0.07035, 0.07039828, 0.21319552], [1516869780000, 0.07035002, 0.07035002, 0.0703292, 0.0703292, 5.06867754], [1516869900000, 0.07081825, 0.07086591, 0.07081825, 0.07086591, 0.14120643], [1516869960000, 0.07033002, 0.07033002, 0.07033002, 0.07033002, 0.19686863], [1516870020000, 0.07033301, 0.07033301, 0.07033301, 0.07033301, 0.03214731], [1516870080000, 0.07079584, 0.07079584, 0.07079584, 0.07079584, 0.01611426], [1516870140000, 0.07079584, 0.07079584, 0.07079583, 0.07079584, 0.0900333], [1516870200000, 0.07073301, 0.07073301, 0.07036021, 0.07069977, 3.75326076], [1516870260000, 0.07069977, 0.07069977, 0.07036027, 0.07036027, 4.04232713], [1516870320000, 0.07036032, 0.07036033, 0.07036032, 0.07036033, 1.56881421], [1516870380000, 0.07046034, 0.07073296, 0.07046033, 0.07046033, 0.22874405], [1516870440000, 0.07046035, 0.07073296, 0.07046035, 0.07073296, 0.60039442], [1516870500000, 0.07073295, 0.07073295, 0.07073292, 0.07073292, 0.19933122], [1516870560000, 0.07073285, 0.07073285, 0.0704604, 0.0704604, 1.45348297], [1516870620000, 0.07046041, 0.07046041, 0.07046041, 0.07046041, 0.37542205], [1516870680000, 0.0704604, 0.0704604, 0.07036, 0.07036, 10.05208111], [1516870800000, 0.07073289, 0.0708318, 0.07036, 0.0708318, 6.03342036], [1516870860000, 0.07036001, 0.07036001, 0.07036001, 0.07036001, 0.32596977], [1516870920000, 0.07082383, 0.07097291, 0.07051158, 0.0708506, 3.63374697], [1516870980000, 0.07083735, 0.0709729, 0.07083735, 0.07083735, 11.2197567], [1516871040000, 0.07040001, 0.07083735, 0.07040001, 0.07083735, 0.13112563], [1516871100000, 0.070837, 0.070837, 0.07083699, 0.070837, 3.38838217], [1516871160000, 0.07040008, 0.07040008, 0.07040008, 0.07040008, 0.06117976], [1516871220000, 0.07083699, 0.07083735, 0.07083699, 0.07083699, 32.86550018], [1516871280000, 0.07040503, 0.070837, 0.07040503, 0.070837, 2.45726313], [1516871340000, 0.07083699, 0.07097291, 0.07083699, 0.07097291, 3.981832], [1516871400000, 0.07091306, 0.07092325, 0.07040501, 0.07040501, 5.23471753], [1516871460000, 0.07040502, 0.07040502, 0.07040151, 0.07040502, 1.89174494], [1516871520000, 0.07040152, 0.07040502, 0.0703292, 0.07040156, 5.71022654], [1516871580000, 0.07035883, 0.07061623, 0.07035883, 0.07035887, 1.32943133], [1516871640000, 0.0707746, 0.0707746, 0.0707746, 0.0707746, 0.01554594], [1516871700000, 0.07086941, 0.07086941, 0.0707746, 0.0707746, 0.02654143], [1516871760000, 0.07092169, 0.07092169, 0.07086822, 0.07086822, 0.227117], [1516871820000, 0.0707746, 0.0707746, 0.0707746, 0.0707746, 0.01183577], [1516871880000, 0.07032943, 0.07075887, 0.07032943, 0.07075887, 0.42542652], [1516872000000, 0.07069686, 0.07069686, 0.07069686, 0.07069686, 3.76619827], [1516872120000, 0.07033407, 0.07069613, 0.07032916, 0.07069613, 1.21443943], [1516872180000, 0.07035001, 0.07035001, 0.07032917, 0.07032917, 5.01113377], [1516872240000, 0.07032918, 0.07035, 0.07032918, 0.07035, 0.75673567], [1516872300000, 0.07035, 0.07035, 0.07032919, 0.07035, 1.43138595], [1516872360000, 0.07035, 0.07035, 0.07034, 0.07034, 0.40297852], [1516872420000, 0.07034, 0.07034, 0.07034, 0.07034, 2.39989582], [1516872480000, 0.07034, 0.07034, 0.07034, 0.07034, 1.45910418], [1516872540000, 0.07034, 0.07034, 0.070312, 0.070312, 3.0], [1516872600000, 0.070312, 0.07034999, 0.07020355, 0.07020355, 9.49586309], [1516872660000, 0.07034999, 0.07035, 0.07018501, 0.07035, 12.48161819], [1516872720000, 0.07035, 0.07035, 0.07035, 0.07035, 0.090579], [1516872780000, 0.07035, 0.07035, 0.07018501, 0.0703, 1.33264737], [1516872840000, 0.0703, 0.0703, 0.07018501, 0.07018501, 0.47027486], [1516872900000, 0.07035, 0.07035, 0.07021414, 0.07021414, 1.82885459], [1516872960000, 0.0702135, 0.07035, 0.0702135, 0.07035, 1.01645145], [1516873140000, 0.07034, 0.07034, 0.07034, 0.07034, 0.34113], [1516873200000, 0.07034, 0.07034, 0.07034, 0.07034, 1.31241974], [1516873260000, 0.07033, 0.07033, 0.07033, 0.07033, 0.06686573], [1516873320000, 0.07018501, 0.07018501, 0.07018501, 0.07018501, 12.7997487], [1516873380000, 0.07034, 0.07034, 0.07034, 0.07034, 0.01968057], [1516873440000, 0.07034, 0.07034, 0.07034, 0.07034, 0.34421666], [1516873500000, 0.07034, 0.07034, 0.07034, 0.07034, 0.077065], [1516873620000, 0.07034, 0.07034, 0.07018501, 0.07018501, 14.68211665], [1516873680000, 0.07034, 0.07034, 0.0702903, 0.0702903, 0.7787433], [1516873740000, 0.07018501, 0.07018501, 0.07018501, 0.07018501, 3.06165006], [1516873800000, 0.07034, 0.07034, 0.07018502, 0.07018502, 2.01395571], [1516874100000, 0.0702, 0.0702, 0.07018501, 0.07018501, 7.441], [1516874160000, 0.07018501, 0.07018501, 0.07018501, 0.07018501, 1.45396873], [1516874220000, 0.07018501, 0.0701985, 0.07018501, 0.0701985, 1.06643595], [1516874280000, 0.07018501, 0.07018501, 0.07018501, 0.07018501, 9.97385155], [1516874340000, 0.07018501, 0.07018501, 0.07018501, 0.07018501, 34.14858016], [1516874400000, 0.0701985, 0.0703398, 0.0701985, 0.0701985, 7.81281911], [1516874460000, 0.07033978, 0.07033978, 0.07018501, 0.07018501, 5.03512469], [1516874520000, 0.07025, 0.07025, 0.07025, 0.07025, 1.20472725], [1516874580000, 0.07025, 0.07033979, 0.07025, 0.07033979, 0.621848], [1516874640000, 0.07033978, 0.07033999, 0.07, 0.07033999, 14.1733042], [1516874700000, 0.07033999, 0.07033999, 0.07033999, 0.07033999, 0.10329969], [1516874760000, 0.07033999, 0.07055854, 0.07033999, 0.07055846, 1.08030577], [1516874820000, 0.07055846, 0.07055846, 0.07033999, 0.07055846, 4.1802128], [1516874880000, 0.07055846, 0.07073843, 0.07055846, 0.07073241, 1.71362069], [1516874940000, 0.07072803, 0.07072991, 0.07055846, 0.07055846, 3.67443724], [1516875000000, 0.07070959, 0.07070959, 0.07055846, 0.07055846, 0.1490375], [1516875060000, 0.07055846, 0.07070959, 0.07055846, 0.07070959, 4.02411881], [1516875120000, 0.07072803, 0.070729, 0.07072803, 0.070729, 4.0728531], [1516875180000, 0.070729, 0.070729, 0.07, 0.07, 17.31749688], [1516875240000, 0.0707093, 0.0707093, 0.07029813, 0.07029813, 0.0321683], [1516875300000, 0.07070918, 0.07070919, 0.07070918, 0.07070919, 0.02246988], [1516875360000, 0.07033907, 0.07070919, 0.0701835, 0.07070618, 10.77584897], [1516875420000, 0.07070254, 0.07070254, 0.07070254, 0.07070254, 0.64211659], [1516875480000, 0.07023122, 0.07067031, 0.07023122, 0.07067031, 10.94213114], [1516875600000, 0.07065564, 0.07065564, 0.07065564, 0.07065564, 0.32998132], [1516875780000, 0.0703338, 0.07065563, 0.0703338, 0.07065563, 0.09767343], [1516875840000, 0.07023122, 0.07023122, 0.07023122, 0.07023122, 0.02550351], [1516875960000, 0.07024849, 0.07024849, 0.07023122, 0.07023122, 11.65801595], [1516876020000, 0.07024851, 0.07024851, 0.07023122, 0.07023122, 3.42669379], [1516876080000, 0.07025001, 0.07025001, 0.07023122, 0.07023122, 1.0], [1516876140000, 0.07023122, 0.07023122, 0.07023122, 0.07023122, 0.20750022], [1516876200000, 0.07059843, 0.07065563, 0.07059843, 0.07065563, 1.05660073], [1516876260000, 0.07064861, 0.07064861, 0.07023122, 0.07023122, 3.24984466], [1516876320000, 0.07065563, 0.07065563, 0.07023122, 0.07023122, 0.7843329], [1516876380000, 0.07023378, 0.07023378, 0.07023378, 0.07023378, 0.01569826], [1516876440000, 0.07023122, 0.07023378, 0.07023122, 0.07023378, 0.09512486], [1516876500000, 0.07062426, 0.07062426, 0.07062426, 0.07062426, 0.07157518], [1516876560000, 0.07058216, 0.07058217, 0.07023378, 0.0703, 2.3875359], [1516876620000, 0.07054371, 0.07054371, 0.07054371, 0.07054371, 0.02835122], [1516876680000, 0.07057258, 0.07057258, 0.0704, 0.0704, 0.16070805], [1516876740000, 0.0704, 0.07057258, 0.0704, 0.0704, 0.5709726], [1516876800000, 0.0704, 0.0704, 0.0704, 0.0704, 0.14204545], [1516876860000, 0.0704, 0.0704, 0.0704, 0.0704, 0.35252398], [1516876920000, 0.0704, 0.07057258, 0.0704, 0.07057258, 0.80426911], [1516876980000, 0.07057258, 0.0705905, 0.0703, 0.07054891, 2.38343673], [1516877040000, 0.07056843, 0.07057927, 0.0703, 0.07057854, 1.03573948], [1516877160000, 0.07026154, 0.07057, 0.07023378, 0.07057, 3.92897896], [1516877220000, 0.07055511, 0.07057, 0.07055511, 0.07055511, 1.20196632], [1516877280000, 0.07057, 0.07057, 0.07035001, 0.07035001, 1.87401773], [1516877340000, 0.07057, 0.07057, 0.07035, 0.07035, 0.60513046], [1516877400000, 0.07057, 0.07057, 0.07057, 0.07057, 0.07497642], [1516877460000, 0.07057, 0.07058296, 0.07057, 0.07058296, 9.40426449], [1516877520000, 0.07056923, 0.07056923, 0.07035, 0.07056757, 4.93979787], [1516877640000, 0.07035, 0.07035, 0.07023122, 0.07023122, 8.450732], [1516877700000, 0.07047289, 0.07047289, 0.0698001, 0.07012049, 28.07038848], [1516877760000, 0.07012049, 0.07033085, 0.07012049, 0.07033085, 2.27106597], [1516877820000, 0.07047286, 0.07047286, 0.06994002, 0.06994002, 9.4222085], [1516877880000, 0.07036135, 0.07036879, 0.06994001, 0.06997678, 4.18933554], [1516878120000, 0.06996054, 0.07031738, 0.0698999, 0.0698999, 13.92634007], [1516878180000, 0.07013656, 0.07013656, 0.07013656, 0.07013656, 0.03590707], [1516878300000, 0.07021155, 0.07021155, 0.07021155, 0.07021155, 0.42728043], [1516878600000, 0.07023, 0.07023, 0.07023, 0.07023, 0.67022029], [1516878660000, 0.07021155, 0.07028267, 0.07021155, 0.07028267, 3.25042087], [1516878720000, 0.07024085, 0.07028267, 0.07024085, 0.07028267, 3.56307842], [1516878780000, 0.07028267, 0.07028808, 0.07028267, 0.07028808, 1.16991966], [1516878840000, 0.07028268, 0.07028808, 0.07028267, 0.07028267, 4.39977925], [1516878900000, 0.07028808, 0.07028808, 0.07028267, 0.07028808, 4.52873415], [1516878960000, 0.07031738, 0.070377, 0.07028267, 0.07028267, 1.01942641], [1516879020000, 0.07028267, 0.07028267, 0.07028267, 0.07028267, 2.45617332], [1516879080000, 0.07028267, 0.07034408, 0.07028267, 0.07034072, 3.29630308], [1516879140000, 0.07028267, 0.07034072, 0.07028267, 0.07034072, 3.22728389], [1516879200000, 0.07045353, 0.07045353, 0.070377, 0.070377, 0.1200258], [1516879260000, 0.070377, 0.070377, 0.070377, 0.070377, 0.00252294], [1516879320000, 0.070377, 0.070377, 0.070377, 0.070377, 0.4189], [1516879380000, 0.070377, 0.070377, 0.07028267, 0.07028267, 0.1876423], [1516879440000, 0.07028267, 0.07045582, 0.07028267, 0.07045582, 2.55543888], [1516879500000, 0.07046763, 0.07046764, 0.07046763, 0.07046764, 0.14190918], [1516879560000, 0.07046764, 0.07046764, 0.07046764, 0.07046764, 0.09301828], [1516879620000, 0.07046764, 0.07046764, 0.07046764, 0.07046764, 0.39071799], [1516879680000, 0.07037515, 0.07046764, 0.07037515, 0.07046764, 0.42502093], [1516879740000, 0.0703, 0.0703, 0.0703, 0.0703, 0.1397], [1516879800000, 0.0703, 0.07046763, 0.07028267, 0.07028267, 10.70858141], [1516879860000, 0.07028267, 0.07046761, 0.07028267, 0.0703, 0.99971676], [1516879920000, 0.0703, 0.0703, 0.07028267, 0.07028267, 4.2976], [1516879980000, 0.07028267, 0.07045866, 0.07028267, 0.07028267, 1.32663403], [1516880040000, 0.07028267, 0.07028267, 0.07028267, 0.07028267, 0.2852], [1516880100000, 0.07028267, 0.07040549, 0.07028267, 0.07040549, 1.0876794], [1516880160000, 0.07028267, 0.07028267, 0.07028267, 0.07028267, 0.51468666], [1516880220000, 0.07028267, 0.0703895, 0.07028267, 0.07028267, 3.2533995], [1516880280000, 0.07028267, 0.07028267, 0.07024085, 0.07024085, 3.0195136], [1516880340000, 0.0703877, 0.07038774, 0.0703877, 0.07038773, 1.46900037], [1516880460000, 0.07038772, 0.07038774, 0.07025, 0.07025, 4.71934111], [1516880580000, 0.07038775, 0.07044796, 0.07024085, 0.07024085, 0.20739373], [1516880880000, 0.07044796, 0.07044796, 0.07044796, 0.07044796, 0.20802974], [1516881000000, 0.070448, 0.07046764, 0.070448, 0.07046764, 0.14194867], [1516881060000, 0.07044796, 0.07057882, 0.07025, 0.07025, 4.8699], [1516881120000, 0.07025, 0.07060801, 0.07025, 0.07060801, 8.4741217], [1516881180000, 0.07060801, 0.07060802, 0.07060801, 0.07060802, 0.01557897], [1516881240000, 0.07025002, 0.07025002, 0.07025, 0.07025, 0.9973], [1516881300000, 0.07037059, 0.07037059, 0.07037059, 0.07037059, 2.38335], [1516881420000, 0.07060733, 0.07060736, 0.07060733, 0.07060736, 0.01558109], [1516881540000, 0.07030736, 0.07040736, 0.07030736, 0.07040736, 5.71658634], [1516881600000, 0.07059419, 0.07059419, 0.07059419, 0.07059419, 0.08997931], [1516881720000, 0.07040736, 0.07059418, 0.07030736, 0.07059418, 4.34086743], [1516881780000, 0.07059418, 0.07060736, 0.07059418, 0.0705942, 1.7573112], [1516881840000, 0.0705942, 0.0705942, 0.07059418, 0.07059418, 0.87887761], [1516881900000, 0.07059418, 0.07060736, 0.07059418, 0.07060736, 0.28766994], [1516881960000, 0.07060736, 0.07065564, 0.07060736, 0.07065564, 15.49986851], [1516882020000, 0.07065564, 0.07065564, 0.07065564, 0.07065564, 0.0274636], [1516882140000, 0.07035564, 0.07035564, 0.07035564, 0.07035564, 1.99528204], [1516882200000, 0.07035564, 0.07035564, 0.07028267, 0.07028267, 8.84578954], [1516882260000, 0.07028267, 0.07062365, 0.07028267, 0.07062365, 0.05975218], [1516882320000, 0.07062364, 0.07063408, 0.07062364, 0.07062365, 2.67089129], [1516882380000, 0.07062365, 0.07062367, 0.07062365, 0.07062365, 0.91467286], [1516882440000, 0.07025055, 0.07025055, 0.07025055, 0.07025055, 0.01377995], [1516882500000, 0.07025055, 0.07063408, 0.07025055, 0.07025055, 0.68893784], [1516882560000, 0.07025055, 0.07062686, 0.07025055, 0.07025055, 8.05513866], [1516882620000, 0.07025055, 0.07027372, 0.07025055, 0.07027372, 0.54020659], [1516882680000, 0.07027372, 0.07065564, 0.07025001, 0.07025001, 1.67031312], [1516882740000, 0.070274, 0.0706442, 0.07025, 0.07025, 6.79938263], [1516882800000, 0.07062264, 0.07062264, 0.07062076, 0.07062076, 1.12265075], [1516882860000, 0.07025001, 0.07062076, 0.07025, 0.07025, 0.59511106], [1516882920000, 0.07025, 0.07025001, 0.07025, 0.07025, 4.78365161], [1516883040000, 0.07025, 0.07059684, 0.07025, 0.07059684, 1.00209388], [1516883100000, 0.07025002, 0.07059683, 0.07025, 0.0705783, 0.53582148], [1516883160000, 0.07025001, 0.07061901, 0.07025, 0.07025, 0.63130516], [1516883220000, 0.07025001, 0.07025001, 0.07025001, 0.07025001, 2.21587008], [1516883280000, 0.07025002, 0.07065564, 0.07025, 0.07025, 3.18779065], [1516883340000, 0.0706042, 0.0706042, 0.0706042, 0.0706042, 0.01672096], [1516883400000, 0.0706042, 0.0706042, 0.07025, 0.07025, 0.2747522], [1516883460000, 0.0706042, 0.07065562, 0.0706042, 0.0706042, 1.51732115], [1516883580000, 0.0706042, 0.0706042, 0.07038001, 0.07038001, 0.64876847], [1516883640000, 0.0706042, 0.07083799, 0.07038011, 0.07038011, 3.65436172], [1516883700000, 0.07058256, 0.07079557, 0.0703801, 0.0703801, 0.27237112], [1516883760000, 0.07072182, 0.07072182, 0.07072182, 0.07072182, 0.94494892], [1516883820000, 0.07072182, 0.07072182, 0.0703801, 0.0703801, 2.04532896], [1516883880000, 0.07072178, 0.07072178, 0.07072178, 0.07072178, 0.01272265], [1516883940000, 0.07072178, 0.07072178, 0.0703801, 0.07042178, 0.40635386], [1516884000000, 0.07042178, 0.07072178, 0.07042178, 0.07072178, 1.40090697], [1516884060000, 0.07072178, 0.07079556, 0.07041025, 0.07041025, 2.83778737], [1516884120000, 0.0704, 0.07089999, 0.0704, 0.07089999, 1.28925394], [1516884180000, 0.07040001, 0.07079073, 0.07038023, 0.07079073, 0.46427674], [1516884240000, 0.07079343, 0.07082878, 0.07079073, 0.07082878, 0.19043358], [1516884300000, 0.07079073, 0.07082878, 0.07079073, 0.07079073, 1.77595545], [1516884360000, 0.07038049, 0.07038049, 0.07038049, 0.07038049, 0.12407271], [1516884420000, 0.07079894, 0.07079895, 0.0704064, 0.0704064, 0.17868033], [1516884480000, 0.07079894, 0.07089999, 0.07079894, 0.07089999, 5.0], [1516884540000, 0.07047964, 0.07055157, 0.07047964, 0.07055156, 6.19085959], [1516884600000, 0.07058042, 0.07089985, 0.07058042, 0.07089985, 0.74644554], [1516884720000, 0.07063491, 0.07063491, 0.07056778, 0.0706349, 1.24444763], [1516884780000, 0.0706349, 0.07063491, 0.07059706, 0.0706349, 3.8390542], [1516884840000, 0.07058785, 0.07058785, 0.07055256, 0.07055256, 7.27429851], [1516884900000, 0.07047964, 0.07087998, 0.07038023, 0.07087998, 0.28194013], [1516884960000, 0.07060948, 0.07087989, 0.07060948, 0.07087989, 0.23655582], [1516885020000, 0.07046681, 0.07051008, 0.07038025, 0.07051008, 0.56381829], [1516885080000, 0.07087987, 0.07088, 0.07042251, 0.07087999, 1.68091684], [1516885140000, 0.07087999, 0.07087999, 0.07051916, 0.07051917, 0.10629856], [1516885200000, 0.07051917, 0.07051917, 0.07051917, 0.07051917, 0.76306007], [1516885260000, 0.07052284, 0.07053918, 0.07041872, 0.07041872, 0.68893334], [1516885320000, 0.07059476, 0.07087999, 0.07059476, 0.07086871, 0.39035605], [1516885380000, 0.07087999, 0.07088, 0.07038023, 0.07047401, 1.02074748], [1516885440000, 0.07082035, 0.07082035, 0.07082035, 0.07082035, 0.16184043], [1516885500000, 0.07078445, 0.07078445, 0.07038023, 0.07077057, 1.24443127], [1516885560000, 0.07077057, 0.07077057, 0.07077057, 0.07077057, 0.15973541], [1516885620000, 0.07076951, 0.07077057, 0.07040002, 0.07040002, 7.3227289], [1516885740000, 0.07040005, 0.07075606, 0.07040005, 0.07075606, 0.08629403], [1516885800000, 0.07075605, 0.07075606, 0.07075605, 0.07075606, 0.28266154], [1516885920000, 0.07045606, 0.07045606, 0.07045606, 0.07045606, 2.96845425], [1516885980000, 0.07075605, 0.07075605, 0.07075604, 0.07075604, 0.16089568], [1516886040000, 0.07075604, 0.07075605, 0.07045605, 0.07075605, 0.15224423], [1516886100000, 0.07074856, 0.07074856, 0.07074856, 0.07074856, 0.42403665], [1516886160000, 0.07057999, 0.07074856, 0.07057999, 0.07074856, 1.7983188], [1516886220000, 0.07075605, 0.07075605, 0.07074856, 0.07074856, 0.84746919], [1516886280000, 0.07074856, 0.07075605, 0.07040002, 0.07040002, 1.13693152], [1516886340000, 0.0707, 0.0707, 0.0707, 0.0707, 0.56562685], [1516886400000, 0.0707, 0.07085551, 0.0707, 0.07084732, 1.65050467], [1516886460000, 0.07085233, 0.07085233, 0.07085233, 0.07085233, 0.01629548], [1516886520000, 0.0707, 0.07084448, 0.0707, 0.07084448, 1.72530489], [1516886640000, 0.07083524, 0.07083524, 0.07081979, 0.07081979, 0.9184058], [1516886700000, 0.07080047, 0.07080047, 0.07078545, 0.07078545, 0.7062097], [1516886760000, 0.07047057, 0.07082926, 0.07047057, 0.07082926, 2.07815548], [1516886820000, 0.07082648, 0.07082648, 0.07080965, 0.07080965, 3.73380534], [1516886880000, 0.07080965, 0.07085323, 0.07080965, 0.07085323, 0.10772405], [1516886940000, 0.07057057, 0.07081, 0.07057057, 0.07081, 0.16026574], [1516887000000, 0.0707, 0.0708743, 0.0707, 0.0708743, 0.21222299], [1516887060000, 0.0708742, 0.0708742, 0.07078715, 0.07078715, 0.12918486], [1516887120000, 0.0707, 0.0707, 0.0707, 0.0707, 0.01557486], [1516887240000, 0.070885, 0.070885, 0.070885, 0.070885, 0.02659625], [1516887300000, 0.070885, 0.0709, 0.0707, 0.0707, 0.39728261], [1516887360000, 0.0707, 0.0707, 0.0707, 0.0707, 0.34630613], [1516887420000, 0.0707, 0.0707, 0.0707, 0.0707, 0.07170325], [1516887480000, 0.0709, 0.0709, 0.0707, 0.0707, 0.08236606], [1516887540000, 0.0707, 0.0707, 0.07047057, 0.07047057, 0.68416323], [1516887600000, 0.07057057, 0.0707, 0.07047057, 0.07047057, 1.87077714], [1516887660000, 0.07047057, 0.07047057, 0.07047057, 0.07047057, 1.39217652], [1516887720000, 0.07057057, 0.0707, 0.07057057, 0.0707, 0.1292], [1516887780000, 0.07057057, 0.07076741, 0.07057057, 0.07076741, 10.63503006], [1516887840000, 0.07047057, 0.07056741, 0.07047057, 0.07056741, 0.12960912], [1516887900000, 0.07056741, 0.070766, 0.07056741, 0.07056741, 3.75683168], [1516887960000, 0.07056741, 0.07056741, 0.07031, 0.07031, 19.25800267], [1516888020000, 0.07031, 0.07067405, 0.07031, 0.07046741, 7.04978228], [1516888080000, 0.07046741, 0.07046741, 0.07046741, 0.07046741, 0.64095358], [1516888140000, 0.07046741, 0.07046741, 0.07046741, 0.07046741, 0.85680641], [1516888200000, 0.07046741, 0.07046741, 0.07046741, 0.07046741, 0.97951606], [1516888260000, 0.07046741, 0.07069444, 0.07046741, 0.07046741, 3.22624361], [1516888320000, 0.07046741, 0.07046741, 0.07046741, 0.07046741, 0.58544609], [1516888380000, 0.07046741, 0.07065095, 0.07046741, 0.07065095, 0.48617633], [1516888440000, 0.07046741, 0.07069397, 0.07046741, 0.07069397, 0.88010968], [1516888500000, 0.07046741, 0.07066911, 0.07025, 0.07046741, 4.8696697], [1516888560000, 0.07025243, 0.07025243, 0.07025243, 0.07025243, 0.21317095], [1516888620000, 0.07046741, 0.07046741, 0.07046741, 0.07046741, 0.3841486], [1516888740000, 0.07046741, 0.07046741, 0.07046741, 0.07046741, 0.04157998], [1516888800000, 0.07046741, 0.07046741, 0.07046741, 0.07046741, 0.0452262], [1516888920000, 0.07046741, 0.07046741, 0.07046741, 0.07046741, 1.41554798], [1516888980000, 0.07046741, 0.07046741, 0.07046741, 0.07046741, 0.13486059], [1516889040000, 0.07030493, 0.07030493, 0.07025243, 0.07025243, 0.07235666], [1516889100000, 0.07046741, 0.07078944, 0.07046741, 0.07078944, 1.16172692], [1516889160000, 0.07046741, 0.07072988, 0.0703039, 0.07072988, 1.647478], [1516889220000, 0.07072987, 0.070731, 0.07072987, 0.070731, 0.04024675], [1516889280000, 0.070731, 0.070731, 0.070731, 0.070731, 0.07829788], [1516889340000, 0.0703161, 0.0703161, 0.0703161, 0.0703161, 0.00936181], [1516889400000, 0.07068814, 0.07081, 0.07033184, 0.07033184, 3.48293304], [1516889580000, 0.07033185, 0.07033185, 0.07026697, 0.07026697, 3.66170488], [1516889640000, 0.0707537, 0.0707537, 0.07072968, 0.07072968, 0.04422889], [1516889760000, 0.07072959, 0.07072959, 0.07033687, 0.07033687, 1.0816299], [1516889820000, 0.07032498, 0.07033686, 0.07026697, 0.07033686, 1.66424177], [1516889880000, 0.070322, 0.07033686, 0.07026697, 0.07026697, 1.42734981], [1516889940000, 0.07026697, 0.07033685, 0.07026697, 0.07033685, 0.13991387], [1516890000000, 0.07033685, 0.07080998, 0.07033685, 0.07080998, 0.62994284], [1516890060000, 0.07033688, 0.07071286, 0.07033688, 0.07071286, 0.38828423], [1516890180000, 0.07071285, 0.07071856, 0.07033686, 0.07033686, 1.76859331], [1516890240000, 0.07034552, 0.07034552, 0.07034552, 0.07034552, 2.1376], [1516890300000, 0.07074939, 0.07077646, 0.07074065, 0.07074067, 0.60960265], [1516890420000, 0.07073141, 0.07073142, 0.07073141, 0.07073142, 0.02007497], [1516890600000, 0.07073139, 0.07077644, 0.07073139, 0.07073139, 18.51703289], [1516890660000, 0.07073139, 0.07073139, 0.07073139, 0.07073139, 7.11862577], [1516890720000, 0.07073139, 0.07073139, 0.07073139, 0.07073139, 1.89279565], [1516890780000, 0.07073139, 0.07074737, 0.070267, 0.07027211, 2.25181708], [1516890900000, 0.07074383, 0.07074383, 0.07074383, 0.07074383, 0.01740104], [1516890960000, 0.07074196, 0.07074383, 0.07074196, 0.07074383, 2.16977566], [1516891020000, 0.07077414, 0.07077414, 0.07077414, 0.07077414, 0.05732175], [1516891140000, 0.070767, 0.070767, 0.07076064, 0.07076064, 0.31523512], [1516891200000, 0.07073643, 0.0707499, 0.07032572, 0.07032572, 24.92502557], [1516891260000, 0.07032572, 0.07033728, 0.07032572, 0.07032572, 8.5636], [1516891320000, 0.07032572, 0.07074446, 0.07032572, 0.07074446, 2.70370668], [1516891440000, 0.07043643, 0.07075698, 0.07043643, 0.07075698, 0.3697334], [1516891500000, 0.07043643, 0.07075698, 0.07043643, 0.07075698, 0.26867037], [1516891560000, 0.07075696, 0.07075696, 0.07043643, 0.07043643, 0.21011371], [1516891620000, 0.07075696, 0.07077664, 0.07043643, 0.07043643, 7.59279703], [1516891680000, 0.07043643, 0.07043643, 0.07043643, 0.07043643, 1.65496], [1516891740000, 0.0707, 0.0707, 0.0707, 0.0707, 0.15507678], [1516891800000, 0.0707, 0.07076925, 0.07043643, 0.07043643, 4.03865495], [1516891860000, 0.07069999, 0.07076097, 0.07043643, 0.07043643, 6.06316903], [1516892040000, 0.07074003, 0.07074003, 0.07074003, 0.07074003, 0.01895306], [1516892100000, 0.07069, 0.07069, 0.07069, 0.07069, 29.84274108], [1516892160000, 0.07069, 0.07069, 0.07069, 0.07069, 0.04539213], [1516892220000, 0.07069, 0.07069, 0.07069, 0.07069, 1.00754054], [1516892280000, 0.07069, 0.07069, 0.07069, 0.07069, 0.03119254], [1516892340000, 0.07073996, 0.07073996, 0.07043644, 0.07069, 1.89449927], [1516892400000, 0.07069, 0.07073035, 0.07069, 0.07073034, 0.87937012], [1516892460000, 0.07071763, 0.07073993, 0.07069, 0.07073991, 3.84852102], [1516892520000, 0.07069, 0.07073988, 0.07043644, 0.07043644, 0.73859579], [1516892580000, 0.07074002, 0.07074002, 0.07074002, 0.07074002, 0.05614806], [1516892640000, 0.07043644, 0.07043644, 0.07043644, 0.07043644, 0.5], [1516892700000, 0.0705, 0.07074003, 0.0705, 0.07074002, 2.26177663], [1516892760000, 0.07074002, 0.07077665, 0.07064001, 0.07074002, 4.77988553], [1516892820000, 0.07074006, 0.07077665, 0.07074006, 0.07077663, 2.3336143], [1516892880000, 0.07077663, 0.07077666, 0.07077663, 0.07077663, 6.78587294], [1516892940000, 0.07077663, 0.07077666, 0.07077663, 0.07077666, 2.70532691], [1516893000000, 0.07077666, 0.07077666, 0.07074006, 0.07077666, 1.57034806], [1516893060000, 0.07077666, 0.07077666, 0.07074006, 0.07074006, 0.70808943], [1516893120000, 0.07074006, 0.07077666, 0.07074006, 0.07077666, 0.73150888], [1516893180000, 0.07074006, 0.07077666, 0.07074006, 0.07077666, 0.49654332], [1516893300000, 0.07074006, 0.07077666, 0.07074002, 0.07077666, 0.61486829], [1516893360000, 0.07074002, 0.07074006, 0.07074002, 0.07074002, 1.30475882], [1516893420000, 0.07064001, 0.07064001, 0.07064001, 0.07064001, 0.14056097], [1516893480000, 0.07064001, 0.07064001, 0.07064001, 0.07064001, 0.16159702], [1516893540000, 0.07064001, 0.07064001, 0.0705, 0.0705, 0.67695832], [1516893600000, 0.07064, 0.07064001, 0.07064, 0.07064001, 0.2831257], [1516893660000, 0.07064001, 0.07073, 0.07064001, 0.07073, 3.8233012], [1516893720000, 0.07074006, 0.07074006, 0.07074006, 0.07074006, 0.08729561], [1516893780000, 0.07073, 0.07074006, 0.07073, 0.07074006, 1.46464883], [1516893840000, 0.07074006, 0.07074006, 0.07074006, 0.07074006, 0.04], [1516893900000, 0.07074006, 0.07077666, 0.07074006, 0.07077666, 1.11768806], [1516893960000, 0.07074006, 0.07077666, 0.07074006, 0.07077666, 0.17444253], [1516894020000, 0.07077666, 0.07077666, 0.07077666, 0.07077666, 0.303604], [1516894080000, 0.07080999, 0.07083401, 0.07080999, 0.07083401, 10.2212684], [1516894140000, 0.07083401, 0.07083401, 0.07083401, 0.07083401, 0.11398109], [1516894200000, 0.07083401, 0.07083401, 0.07080999, 0.07083401, 1.25227222], [1516894260000, 0.07083401, 0.07083401, 0.07083401, 0.07083401, 0.01556988], [1516894380000, 0.07083401, 0.07083401, 0.07083401, 0.07083401, 0.52810827], [1516894440000, 0.07083401, 0.07083401, 0.07083401, 0.07083401, 0.0102861], [1516894500000, 0.070842, 0.07090809, 0.070842, 0.07090809, 0.28231838], [1516894560000, 0.07090809, 0.07097291, 0.07084, 0.07084, 8.58215647], [1516894620000, 0.07084, 0.07097291, 0.07084, 0.07097291, 0.37983833], [1516894680000, 0.07097291, 0.07099999, 0.07097291, 0.07097291, 1.08524112], [1516894740000, 0.07097291, 0.07097291, 0.07097291, 0.07097291, 0.70273573], [1516894800000, 0.070965, 0.07097291, 0.070965, 0.07097291, 5.09262814], [1516894860000, 0.070965, 0.070965, 0.070965, 0.070965, 0.07612734], [1516894920000, 0.07097291, 0.07097291, 0.07084, 0.07084, 0.83862057], [1516894980000, 0.07097291, 0.07097291, 0.07097291, 0.07097291, 0.12569496], [1516895040000, 0.07097291, 0.071, 0.0709642, 0.071, 1.35183541], [1516895100000, 0.07084, 0.07084, 0.07084, 0.07084, 0.43007379], [1516895160000, 0.071, 0.071, 0.07099999, 0.07099999, 1.06315323], [1516895280000, 0.07099999, 0.07135606, 0.07099999, 0.07135606, 125.75113732], [1516895340000, 0.07120674, 0.0714, 0.07120674, 0.0713999, 2.0624657], [1516895400000, 0.0713999, 0.0714434, 0.0713999, 0.0714434, 1.52062032], [1516895460000, 0.07144338, 0.07144338, 0.0713999, 0.0713999, 0.7119069], [1516895520000, 0.0713999, 0.07144338, 0.0713999, 0.0713999, 6.77025644], [1516895580000, 0.07144338, 0.0714434, 0.07144338, 0.0714434, 12.10222626], [1516895640000, 0.07146, 0.07146, 0.0714434, 0.07146, 3.15857945], [1516895700000, 0.07146, 0.071469, 0.0714434, 0.0714434, 1.42254637], [1516895760000, 0.0714434, 0.0714434, 0.0714434, 0.0714434, 0.39118515], [1516895820000, 0.0714434, 0.07146899, 0.0714434, 0.0714434, 7.92578191], [1516895880000, 0.0714434, 0.07146898, 0.0714434, 0.0714434, 4.53032869], [1516895940000, 0.0714434, 0.071469, 0.0714434, 0.0714434, 12.47870512], [1516896000000, 0.0714434, 0.07144344, 0.0714434, 0.0714434, 13.87049937], [1516896060000, 0.0714434, 0.0714434, 0.0714434, 0.0714434, 9.92857498], [1516896120000, 0.0714434, 0.071469, 0.0714434, 0.0714434, 2.349539], [1516896180000, 0.07146899, 0.07146899, 0.0714434, 0.0714434, 2.30783445], [1516896240000, 0.0714434, 0.0714691, 0.0714434, 0.0714691, 5.67754027], [1516896300000, 0.0714691, 0.07148605, 0.0714691, 0.0714691, 1.68630409], [1516896360000, 0.07147925, 0.07147925, 0.07147925, 0.07147925, 0.4811008], [1516896420000, 0.07147925, 0.07147925, 0.07147265, 0.07147265, 6.96359705], [1516896480000, 0.07147265, 0.07147924, 0.0714691, 0.07147924, 28.52741372], [1516896540000, 0.07146911, 0.07147012, 0.07146911, 0.07146912, 3.63295096], [1516896600000, 0.07146912, 0.07147924, 0.0714691, 0.0714691, 12.94905863], [1516896660000, 0.0714691, 0.07147924, 0.0714691, 0.07146912, 1.03861275], [1516896720000, 0.07146912, 0.07147156, 0.07146912, 0.07146912, 3.74773802], [1516896780000, 0.07146912, 0.07146912, 0.07146912, 0.07146912, 4.80345783], [1516896840000, 0.07146912, 0.07148606, 0.07146912, 0.07147, 4.27956903], [1516896900000, 0.07147, 0.0715, 0.07147, 0.07148606, 0.3389241], [1516896960000, 0.07148606, 0.07150269, 0.07148606, 0.0715, 0.42653839], [1516897020000, 0.0715, 0.0715, 0.07148606, 0.07148606, 0.92412397], [1516897080000, 0.07153464, 0.07153464, 0.0715, 0.0715, 1.80203128], [1516897140000, 0.0715, 0.07153464, 0.0715, 0.0715, 7.35198871], [1516897200000, 0.0715, 0.07155605, 0.0715, 0.0715, 3.29561695], [1516897260000, 0.0715, 0.0715, 0.0715, 0.0715, 0.13389916], [1516897320000, 0.0715, 0.0715, 0.0715, 0.0715, 0.13083916], [1516897380000, 0.0715, 0.0715, 0.07148606, 0.0715, 32.74690303], [1516897440000, 0.07148606, 0.0714861, 0.07148606, 0.07148606, 0.75777194], [1516897500000, 0.0714861, 0.0714861, 0.07148606, 0.07148606, 3.16545839], [1516897560000, 0.07148606, 0.07148606, 0.07146912, 0.07146912, 7.28662625], [1516897620000, 0.07146912, 0.07146912, 0.0714691, 0.0714691, 5.46795232], [1516897680000, 0.0714691, 0.0714691, 0.0714691, 0.0714691, 1.1149329], [1516897740000, 0.0714691, 0.0714691, 0.0714691, 0.0714691, 1.0168525], [1516897800000, 0.0714691, 0.0714691, 0.0714691, 0.0714691, 0.0308525], [1516897860000, 0.0714691, 0.071472, 0.0714691, 0.0714691, 0.19745835], [1516897920000, 0.0714691, 0.07147198, 0.0714691, 0.0714691, 4.50766514], [1516897980000, 0.0714691, 0.0714691, 0.0714691, 0.0714691, 0.25104712], [1516898040000, 0.0714691, 0.0714691, 0.0714691, 0.0714691, 1.03378295], [1516898100000, 0.0714691, 0.0714701, 0.0714691, 0.0714701, 0.71327052], [1516898160000, 0.0714691, 0.0714701, 0.0714691, 0.07147009, 1.64339877], [1516898220000, 0.0714691, 0.07147009, 0.0714691, 0.0714691, 0.5352574], [1516898280000, 0.0714691, 0.0714691, 0.0714691, 0.0714691, 0.79216107], [1516898340000, 0.0714691, 0.07147007, 0.0714691, 0.0714691, 4.61201455], [1516898400000, 0.07147007, 0.07147007, 0.0714691, 0.0714691, 0.51229201], [1516898460000, 0.07147007, 0.07147007, 0.0714691, 0.0714691, 2.58274096], [1516898520000, 0.0714691, 0.07147007, 0.0714691, 0.0714691, 0.58403247], [1516898580000, 0.0714691, 0.07147007, 0.0714691, 0.0714691, 0.31571553], [1516898640000, 0.07147007, 0.07147007, 0.0714691, 0.0714691, 1.94239762], [1516898700000, 0.0714691, 0.07147007, 0.0714691, 0.0714691, 0.93238063], [1516898760000, 0.07147006, 0.07147006, 0.07147006, 0.07147006, 0.03558129], [1516898820000, 0.0714691, 0.07147006, 0.0714691, 0.07147006, 0.08946697], [1516898880000, 0.0714691, 0.0714691, 0.0714691, 0.0714691, 4.56370883], [1516899000000, 0.0714691, 0.07147007, 0.0714691, 0.0714691, 0.48021723], [1516899060000, 0.07147007, 0.07147007, 0.0714691, 0.0714691, 0.10608406], [1516899120000, 0.0714692, 0.0714692, 0.0714692, 0.0714692, 3.72951403], [1516899240000, 0.07147005, 0.07147005, 0.0714692, 0.0714692, 0.07751156], [1516899300000, 0.0714692, 0.0714692, 0.0714691, 0.0714691, 0.35846417], [1516899360000, 0.07147006, 0.07147007, 0.07147004, 0.07147007, 8.76965809], [1516899420000, 0.07147006, 0.07147006, 0.0714692, 0.0714692, 24.4805665], [1516899480000, 0.0714692, 0.07147006, 0.0714691, 0.07147006, 7.77148854], [1516899540000, 0.07147006, 0.07147006, 0.0714691, 0.07147006, 7.00616217], [1516899600000, 0.07147006, 0.07147006, 0.0714691, 0.07147006, 2.42738962], [1516899660000, 0.07147006, 0.07148606, 0.07147006, 0.07148606, 7.73153899], [1516899720000, 0.07148606, 0.07148606, 0.07148606, 0.07148606, 0.10931171], [1516899780000, 0.07148606, 0.07148606, 0.07148606, 0.07148606, 0.01542563], [1516899840000, 0.07148606, 0.07148606, 0.07147007, 0.07147007, 2.17542563], [1516899900000, 0.07147007, 0.07148606, 0.07147006, 0.07147006, 21.89792398], [1516899960000, 0.07147006, 0.07147006, 0.07147006, 0.07147006, 20.05964324], [1516900020000, 0.07147006, 0.0715, 0.07147006, 0.07147006, 11.30274056], [1516900080000, 0.07147006, 0.07147006, 0.07147006, 0.07147006, 35.81400707], [1516900140000, 0.07147006, 0.0715, 0.07147006, 0.07147006, 7.19660833], [1516900200000, 0.0715, 0.0715, 0.0715, 0.0715, 0.13986013], [1516900260000, 0.07147006, 0.07147006, 0.07147006, 0.07147006, 0.03664188], [1516900320000, 0.0715, 0.0715, 0.07147006, 0.07147006, 0.47322929], [1516900380000, 0.07147006, 0.07147006, 0.0714691, 0.0714691, 9.99910143], [1516900440000, 0.0715, 0.0715, 0.07099859, 0.07099859, 9.9396873], [1516900500000, 0.07099859, 0.07139474, 0.07077666, 0.07130179, 14.5740007], [1516900560000, 0.07129149, 0.07129149, 0.07123753, 0.07123753, 0.78038949], [1516900620000, 0.07123753, 0.07123753, 0.07123753, 0.07123753, 0.13938287], [1516900680000, 0.07123753, 0.07123753, 0.07123753, 0.07123753, 0.71049964], [1516900740000, 0.07139474, 0.07139474, 0.07139474, 0.07139474, 0.08753697], [1516900800000, 0.07139474, 0.07145605, 0.07139474, 0.07139474, 1.67496364], [1516900920000, 0.07139474, 0.07139474, 0.07139474, 0.07139474, 0.098], [1516900980000, 0.07139474, 0.07139474, 0.07104093, 0.07104093, 0.56943127], [1516901100000, 0.07142189, 0.07144607, 0.07142189, 0.07144607, 0.56005228], [1516901160000, 0.07104093, 0.07139474, 0.07104093, 0.07134881, 3.3746703], [1516901220000, 0.07132224, 0.07132224, 0.07132224, 0.07132224, 2.33899242], [1516901280000, 0.07139474, 0.07139474, 0.07139474, 0.07139474, 0.13812609], [1516901340000, 0.07132224, 0.07132224, 0.07132224, 0.07132224, 2.2520353], [1516901400000, 0.0712, 0.0712, 0.0712, 0.0712, 0.58933198], [1516901460000, 0.0712, 0.0712, 0.0712, 0.0712, 0.26549037], [1516901520000, 0.0712, 0.0712, 0.0712, 0.0712, 3.23532026], [1516901580000, 0.0712, 0.0712, 0.0712, 0.0712, 0.00988553], [1516901640000, 0.07132224, 0.07132224, 0.07132224, 0.07132224, 0.0712], [1516901700000, 0.07139473, 0.07139473, 0.07139473, 0.07139473, 0.49406634], [1516901760000, 0.07139473, 0.07139474, 0.07139473, 0.07139473, 2.10687662], [1516901880000, 0.07133333, 0.07133333, 0.07133333, 0.07133333, 0.1], [1516901940000, 0.07133333, 0.07149998, 0.07133333, 0.07149998, 2.72307681], [1516902000000, 0.07139474, 0.07139474, 0.07139474, 0.07139474, 0.3998241], [1516902060000, 0.07139473, 0.07139473, 0.07104093, 0.07138087, 2.60704837], [1516902120000, 0.07139474, 0.07139474, 0.07139474, 0.07139474, 0.06906476], [1516902180000, 0.07134285, 0.07140874, 0.07085012, 0.07140874, 1.06603494], [1516902240000, 0.07143353, 0.07143353, 0.07143353, 0.07143353, 0.09042602], [1516902300000, 0.0712, 0.0712, 0.0712, 0.0712, 0.14003582], [1516902360000, 0.0712, 0.0712, 0.0712, 0.0712, 0.15996418], [1516902480000, 0.07138735, 0.07138735, 0.07138735, 0.07138735, 1.1], [1516902540000, 0.07120001, 0.07142515, 0.07120001, 0.07142515, 0.68043647], [1516902600000, 0.07142515, 0.07143353, 0.07142515, 0.07142515, 3.88701518], [1516902660000, 0.07138735, 0.07138735, 0.0711222, 0.0711222, 0.30933663], [1516902720000, 0.07138735, 0.07138735, 0.07113726, 0.07113726, 6.68614163], [1516902780000, 0.07113726, 0.07113726, 0.07113726, 0.07113726, 4.22842991], [1516902840000, 0.0713873, 0.0713873, 0.0713873, 0.0713873, 0.2226001], [1516902900000, 0.0713873, 0.0713873, 0.0713873, 0.0713873, 0.93206158], [1516902960000, 0.0713873, 0.07143353, 0.0713873, 0.07143353, 0.12534394], [1516903020000, 0.07143353, 0.07143353, 0.07143353, 0.07143353, 0.0308879], [1516903080000, 0.0713873, 0.0713873, 0.0713873, 0.0713873, 1.73093434], [1516903140000, 0.07138731, 0.07143353, 0.07138731, 0.07143353, 1.02857516], [1516903200000, 0.0713873, 0.07143353, 0.0713873, 0.07143353, 0.08319035], [1516903260000, 0.07143353, 0.07143353, 0.0712, 0.0714, 4.63953387], [1516903320000, 0.0714, 0.0714, 0.07113724, 0.07113726, 0.41875873], [1516903380000, 0.07143353, 0.07143353, 0.07143353, 0.07143353, 0.09177309], [1516903440000, 0.07106476, 0.07106476, 0.07106476, 0.07106476, 0.13599294], [1516903500000, 0.07143353, 0.07143353, 0.07143353, 0.07143353, 0.43710094], [1516903560000, 0.07143353, 0.07143353, 0.07143353, 0.07143353, 0.27780832], [1516903620000, 0.07143353, 0.07143353, 0.07143353, 0.07143353, 0.0292514], [1516903680000, 0.07143353, 0.07148383, 0.07143353, 0.07148383, 0.37052023], [1516903740000, 0.07148383, 0.07148383, 0.07142515, 0.07148383, 1.36547], [1516903800000, 0.07143382, 0.07148379, 0.07143382, 0.07148379, 0.1515621], [1516903860000, 0.07122744, 0.07122744, 0.07122744, 0.07122744, 0.50902884], [1516903920000, 0.07122744, 0.07122744, 0.07122744, 0.07122744, 0.01068077], [1516903980000, 0.07122744, 0.07122744, 0.0712274, 0.0712274, 0.51265383], [1516904040000, 0.07106, 0.0711, 0.07106, 0.0711, 1.04860938], [1516904100000, 0.07138094, 0.07138094, 0.07129999, 0.07129999, 1.06036243], [1516904220000, 0.07122745, 0.07122745, 0.07122745, 0.07122745, 0.12983271], [1516904280000, 0.07122744, 0.07122745, 0.07122744, 0.07122745, 0.05252707], [1516904340000, 0.07122745, 0.07122745, 0.07122744, 0.07122745, 1.52970971], [1516904400000, 0.07122745, 0.07122745, 0.07122, 0.07122, 0.21219267], [1516904520000, 0.07122, 0.07122, 0.07122, 0.07122, 0.17109108], [1516904580000, 0.07122, 0.07122, 0.07122, 0.07122, 1.09430633], [1516904640000, 0.07122, 0.07122, 0.07120001, 0.07120001, 0.77637585], [1516904700000, 0.07120001, 0.07120001, 0.07120001, 0.07120001, 1.58131737], [1516904760000, 0.07120001, 0.07120001, 0.07102137, 0.07102137, 1.25262292], [1516904820000, 0.071, 0.071, 0.071, 0.071, 0.83285984], [1516904880000, 0.071, 0.071, 0.071, 0.071, 0.92537612], [1516904940000, 0.07085, 0.07085, 0.07085, 0.07085, 0.34102103], [1516905000000, 0.07085, 0.07085, 0.07085, 0.07085, 0.13683534], [1516905060000, 0.07085, 0.07085, 0.07085, 0.07085, 0.20430418], [1516905120000, 0.07085, 0.07085, 0.07084, 0.07084, 1.22349744], [1516905180000, 0.07084, 0.07084, 0.07084, 0.07084, 1.27515456], [1516905240000, 0.07084, 0.07149843, 0.07084, 0.07149843, 6.16598155], [1516905300000, 0.07134468, 0.07134468, 0.07134468, 0.07134468, 0.9319904], [1516905360000, 0.07134468, 0.0715, 0.07134468, 0.0715, 0.728], [1516905420000, 0.0715, 0.0715, 0.07113796, 0.07113796, 12.78791614], [1516905480000, 0.07113796, 0.07155302, 0.07113796, 0.07113799, 0.11842237], [1516905600000, 0.07153776, 0.07164145, 0.07100002, 0.0716, 9.30348329], [1516905660000, 0.07160005, 0.07160005, 0.0716, 0.0716, 1.3285249], [1516905720000, 0.0716, 0.07164145, 0.0716, 0.07164145, 0.22528799], [1516905780000, 0.07164145, 0.0717213, 0.07164145, 0.0717213, 0.36142065], [1516905840000, 0.0717213, 0.071947, 0.07165, 0.07165, 14.95233959], [1516905900000, 0.07177897, 0.07183602, 0.07164, 0.07182889, 13.66320404], [1516905960000, 0.0718289, 0.0718289, 0.0716, 0.0716, 1.86551267], [1516906020000, 0.0716, 0.0716, 0.0715, 0.0715, 1.62228506], [1516906080000, 0.0716, 0.0716, 0.0715, 0.0715, 0.25621939], [1516906140000, 0.0715, 0.0715, 0.0715, 0.0715, 0.0545], [1516906200000, 0.0715, 0.0715, 0.07106313, 0.07106315, 6.77285621], [1516906260000, 0.07106315, 0.071947, 0.07106315, 0.071947, 5.88261054], [1516906320000, 0.0712134, 0.0712134, 0.07114226, 0.07114226, 6.09605796], [1516906380000, 0.07168, 0.07168, 0.07149797, 0.07149797, 1.90516829], [1516906440000, 0.07149797, 0.07149797, 0.07119161, 0.07120279, 2.41574585], [1516906500000, 0.07120284, 0.07164699, 0.07114227, 0.07127313, 2.13971263], [1516906560000, 0.07114229, 0.07114229, 0.07114229, 0.07114229, 0.0220863], [1516906620000, 0.07124865, 0.07124865, 0.07124865, 0.07124865, 0.08403327], [1516906740000, 0.07164439, 0.07191588, 0.07124865, 0.07124866, 10.14707306], [1516906800000, 0.07124866, 0.07177848, 0.07124866, 0.07177847, 1.37694808], [1516906860000, 0.07132214, 0.07132214, 0.07132214, 0.07132214, 0.19992701], [1516906980000, 0.07164, 0.07170095, 0.07164, 0.07170095, 0.33034251], [1516907040000, 0.07132215, 0.07171, 0.07132215, 0.07171, 0.10536477], [1516907100000, 0.07171, 0.07177848, 0.07139813, 0.07139813, 0.36445056], [1516907160000, 0.07142825, 0.07142825, 0.07142825, 0.07142825, 0.26395652], [1516907220000, 0.07177848, 0.07177848, 0.07177848, 0.07177848, 0.111258], [1516907280000, 0.07177848, 0.07177848, 0.07177848, 0.07177848, 0.08529173], [1516907340000, 0.07177848, 0.07177848, 0.07177848, 0.07177848, 1.67687182], [1516907400000, 0.07177848, 0.07183391, 0.07142825, 0.07161746, 1.29241112], [1516907460000, 0.07161746, 0.07161746, 0.07132288, 0.07132288, 2.28961962], [1516907520000, 0.07142825, 0.07142825, 0.07142825, 0.07142825, 1.61354237], [1516907580000, 0.07161746, 0.07161746, 0.07161746, 0.07161746, 0.00753403], [1516907640000, 0.07161745, 0.07161746, 0.07161745, 0.07161746, 0.32711685], [1516907700000, 0.07183224, 0.07183224, 0.07183224, 0.07183224, 0.13921333], [1516907760000, 0.07161747, 0.07161747, 0.07161747, 0.07161747, 0.84878433], [1516907880000, 0.07183222, 0.07183222, 0.07161747, 0.07183222, 0.58452205], [1516907940000, 0.07183224, 0.07183224, 0.07183222, 0.07183222, 3.26757546], [1516908000000, 0.07183222, 0.07183222, 0.0714029, 0.0714029, 5.07814689], [1516908060000, 0.07130505, 0.07134508, 0.07124866, 0.07134508, 7.7180715], [1516908120000, 0.0713451, 0.0713451, 0.0713451, 0.0713451, 1.87414592], [1516908180000, 0.0713451, 0.07176274, 0.0713451, 0.07176274, 2.28966811], [1516908240000, 0.07182627, 0.07183221, 0.07176274, 0.07183221, 2.48255895], [1516908300000, 0.07140301, 0.07183222, 0.07140301, 0.07182312, 6.13255008], [1516908360000, 0.07182307, 0.07182307, 0.07182307, 0.07182307, 0.18711958], [1516908420000, 0.07182312, 0.07183221, 0.07182312, 0.07183219, 0.91495494], [1516908480000, 0.07183218, 0.07183219, 0.07158096, 0.07158096, 0.1350782], [1516908540000, 0.07158096, 0.07158096, 0.07158096, 0.07158096, 0.70176666], [1516908600000, 0.07158096, 0.07183221, 0.07158096, 0.07183221, 2.96693432], [1516908660000, 0.07183221, 0.07183221, 0.0718322, 0.0718322, 0.26275933], [1516908720000, 0.07158096, 0.07171523, 0.07140944, 0.07171523, 2.64998937], [1516908780000, 0.07171523, 0.07171523, 0.071429, 0.071429, 0.38153925], [1516908840000, 0.0717, 0.0717, 0.0717, 0.0717, 1.29858141], [1516908900000, 0.0717, 0.0717, 0.0717, 0.0717, 0.34622537], [1516908960000, 0.07171523, 0.07171523, 0.0717, 0.0717, 0.42751613], [1516909020000, 0.07171523, 0.07171523, 0.07171523, 0.07171523, 3.67996], [1516909080000, 0.0717, 0.07171523, 0.0717, 0.0717, 0.19269046], [1516909140000, 0.0717, 0.0717, 0.0717, 0.0717, 0.77100202], [1516909200000, 0.0718322, 0.0718322, 0.0717, 0.0717, 0.85290575], [1516909260000, 0.0717, 0.0717, 0.0717, 0.0717, 2.64981435], [1516909320000, 0.07145478, 0.07145478, 0.07145478, 0.07145478, 6.00000191], [1516909380000, 0.07145478, 0.07183221, 0.07145478, 0.07166914, 0.19447701], [1516909440000, 0.07166914, 0.07183222, 0.07166914, 0.07166914, 2.37773218], [1516909500000, 0.07166914, 0.07189147, 0.07166914, 0.07183222, 6.70651222], [1516909560000, 0.07183222, 0.07189026, 0.07166914, 0.07166914, 2.55462319], [1516909620000, 0.07166914, 0.07166914, 0.07166914, 0.07166914, 0.71778978], [1516909680000, 0.07166914, 0.07166914, 0.07140579, 0.07140579, 0.92925167], [1516909740000, 0.07134509, 0.07139063, 0.07134509, 0.07139063, 0.71344694], [1516909800000, 0.0716691, 0.07166914, 0.07140037, 0.07166914, 1.51862901], [1516909860000, 0.0713746, 0.0713746, 0.0713746, 0.0713746, 0.04006073], [1516909920000, 0.07134508, 0.07134508, 0.07134508, 0.07134508, 0.18980746], [1516910100000, 0.07163662, 0.07163662, 0.07163662, 0.07163662, 1.468158], [1516910160000, 0.07166156, 0.07166156, 0.07166156, 0.07166156, 0.02062379], [1516910220000, 0.07166156, 0.07166156, 0.07166156, 0.07166156, 0.08141947], [1516910280000, 0.07166064, 0.07166064, 0.07166064, 0.07166064, 0.01978207], [1516910340000, 0.07159886, 0.07159886, 0.07159886, 0.07159886, 0.42074622], [1516910400000, 0.07159886, 0.07159886, 0.07134509, 0.07157008, 1.45358142], [1516910460000, 0.07165721, 0.07165721, 0.07134508, 0.07134508, 0.93088515], [1516910520000, 0.07164833, 0.07164833, 0.07164833, 0.07164833, 0.14237462], [1516910580000, 0.07134508, 0.07134508, 0.07134508, 0.07134508, 0.51405306], [1516910640000, 0.07134508, 0.07156164, 0.07134508, 0.07134508, 0.13557705], [1516910700000, 0.07134508, 0.07156164, 0.07134508, 0.07134508, 3.608075], [1516910760000, 0.07134508, 0.07134508, 0.07134508, 0.07134508, 0.27545306], [1516910820000, 0.07134508, 0.07156163, 0.07124865, 0.07156163, 1.12641608], [1516910880000, 0.07124865, 0.07134865, 0.07124865, 0.07124865, 3.57165809], [1516910940000, 0.07124865, 0.07124865, 0.07114226, 0.07123, 5.32685628], [1516911000000, 0.07123, 0.07142226, 0.07123, 0.07123, 0.17090114], [1516911060000, 0.07140096, 0.071467, 0.07123, 0.07123, 0.2347659], [1516911120000, 0.07123, 0.07147784, 0.07114226, 0.0714095, 1.35609957], [1516911180000, 0.0714095, 0.0714095, 0.0714095, 0.0714095, 0.09483866], [1516911240000, 0.07114226, 0.0714094, 0.07114226, 0.0714094, 0.06611758], [1516911300000, 0.07114226, 0.0714095, 0.07114226, 0.0714094, 4.08619816], [1516911360000, 0.0714095, 0.0714095, 0.0714095, 0.0714095, 0.04201121], [1516911420000, 0.07114226, 0.07114226, 0.07114226, 0.07114226, 0.02442769], [1516911480000, 0.0714095, 0.0714095, 0.0714095, 0.0714095, 0.06030089], [1516911600000, 0.0714095, 0.0714095, 0.0714095, 0.0714095, 0.24148614], [1516911660000, 0.0714095, 0.0714095, 0.0714095, 0.0714095, 0.04], [1516911720000, 0.07140949, 0.07140949, 0.07140949, 0.07140949, 0.02786227], [1516911780000, 0.07122778, 0.07122783, 0.07122778, 0.07122783, 0.03095701], [1516911840000, 0.07123, 0.07123, 0.07123, 0.07123, 0.1033592], [1516911900000, 0.07123005, 0.07140949, 0.07123, 0.07140949, 1.95888461], [1516911960000, 0.07140949, 0.0714095, 0.07102, 0.0714095, 2.96682085], [1516912020000, 0.07102, 0.07102, 0.07102, 0.07102, 1.05682979], [1516912080000, 0.0713567, 0.0713567, 0.071, 0.071, 0.62325771], [1516912140000, 0.071, 0.071, 0.071, 0.071, 1.8723902], [1516912200000, 0.07123, 0.0714095, 0.07123, 0.0714095, 0.14039028], [1516912260000, 0.0714095, 0.0714095, 0.071, 0.07140949, 0.23165138], [1516912320000, 0.0711111, 0.0711111, 0.07090809, 0.07099798, 0.42659374], [1516912380000, 0.07090809, 0.07099798, 0.07090809, 0.07099798, 1.17098679], [1516912440000, 0.07099798, 0.07099798, 0.07090811, 0.07090811, 2.35061917], [1516912500000, 0.07090811, 0.07099798, 0.07090811, 0.07099798, 8.38989634], [1516912560000, 0.07099798, 0.07099798, 0.07094925, 0.07099798, 0.09180755], [1516912620000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 1.72104558], [1516912680000, 0.07099798, 0.07099798, 0.07093883, 0.07093883, 0.77485563], [1516912740000, 0.07093883, 0.07093883, 0.07093883, 0.07093883, 0.69797095], [1516912800000, 0.07093883, 0.07099798, 0.07093883, 0.07099798, 0.47965927], [1516912860000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 0.12330645], [1516912920000, 0.07099798, 0.07099798, 0.07093883, 0.07099798, 0.40864525], [1516912980000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 0.06629554], [1516913040000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 0.06514622], [1516913100000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 0.53092702], [1516913160000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 1.8489862], [1516913220000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 0.03108328], [1516913280000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 0.03108328], [1516913340000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 0.03108328], [1516913400000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 1.1642767], [1516913460000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 0.031083], [1516913520000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 1.75206421], [1516913580000, 0.07099798, 0.07099798, 0.07099797, 0.07099797, 0.55981038], [1516913640000, 0.07099797, 0.07099798, 0.07096028, 0.07099798, 1.18107303], [1516913700000, 0.07099798, 0.07099798, 0.07099798, 0.07099798, 0.05112254], [1516913760000, 0.07098, 0.07099798, 0.07080011, 0.07097999, 2.43270997], [1516913820000, 0.07097999, 0.07097999, 0.07097999, 0.07097999, 0.39374675], [1516913880000, 0.07097999, 0.07097999, 0.07097999, 0.07097999, 0.12053385], [1516913940000, 0.07097999, 0.07097999, 0.07097999, 0.07097999, 0.19007608], [1516914000000, 0.07084429, 0.07092243, 0.07084429, 0.07084429, 2.80819267], [1516914060000, 0.07080011, 0.07097998, 0.07077666, 0.07077666, 3.33065203], [1516914120000, 0.07077666, 0.07097998, 0.07077666, 0.07097998, 1.77033196], [1516914240000, 0.0708326, 0.0708326, 0.07078692, 0.07078692, 1.05], [1516914300000, 0.07090998, 0.07090998, 0.07090998, 0.07090998, 0.23059774], [1516914360000, 0.07090998, 0.07090998, 0.07078939, 0.07090998, 10.33668622], [1516914420000, 0.07090998, 0.07090998, 0.07081096, 0.07081096, 0.73528302], [1516914480000, 0.07081096, 0.07083908, 0.07081096, 0.07083908, 0.21069798], [1516914540000, 0.07083908, 0.07099798, 0.07081096, 0.07081096, 4.83577409], [1516914600000, 0.07099798, 0.07099798, 0.07081096, 0.07084066, 0.64447231], [1516914660000, 0.07099798, 0.07099998, 0.07099798, 0.07099998, 0.09203804], [1516914720000, 0.07099998, 0.07130435, 0.07099998, 0.07128668, 7.15061288], [1516914780000, 0.07125509, 0.07125509, 0.07125509, 0.07125509, 0.20504246], [1516914840000, 0.07080509, 0.07080509, 0.07080509, 0.07080509, 0.02], [1516914900000, 0.0712, 0.07124398, 0.07080509, 0.07124397, 1.56753507], [1516914960000, 0.07124397, 0.07124492, 0.07083642, 0.07083642, 10.21094736], [1516915020000, 0.07124489, 0.07124489, 0.07124489, 0.07124489, 0.01257878], [1516915080000, 0.0712, 0.0712, 0.07083099, 0.07083099, 0.58883354], [1516915200000, 0.071, 0.071, 0.071, 0.071, 0.64300499], [1516915260000, 0.071, 0.071, 0.071, 0.071, 3.0], [1516915380000, 0.07119829, 0.07119829, 0.07091048, 0.07091048, 0.09034534], [1516915440000, 0.071199, 0.071199, 0.071199, 0.071199, 0.87789776], [1516915500000, 0.07113189, 0.0712449, 0.07113189, 0.0712449, 0.1905839], [1516915560000, 0.0712449, 0.0712449, 0.0712449, 0.0712449, 0.61783362], [1516915740000, 0.0712449, 0.0712449, 0.07089989, 0.07089989, 0.52555925], [1516915800000, 0.0712449, 0.07132, 0.0712449, 0.0712449, 1.6067158], [1516915860000, 0.0712449, 0.07132, 0.0712449, 0.07132, 1.56362962], [1516915920000, 0.07132, 0.07132, 0.07132, 0.07132, 0.17057662], [1516915980000, 0.07132, 0.07165343, 0.07098891, 0.07098891, 98.85251194], [1516916040000, 0.07087103, 0.07098891, 0.07055012, 0.07095289, 13.40780361], [1516916100000, 0.07098891, 0.07098891, 0.07095289, 0.07098891, 0.73942564], [1516916160000, 0.07098891, 0.07098891, 0.07095289, 0.07098891, 0.72830367], [1516916220000, 0.07098891, 0.07098891, 0.07098891, 0.07098891, 0.05196827], [1516916280000, 0.07098891, 0.07098891, 0.07098891, 0.07098891, 0.85727343], [1516916340000, 0.07098891, 0.07098891, 0.07098891, 0.07098891, 1.29523279], [1516916400000, 0.07134857, 0.07138586, 0.07133792, 0.07133792, 0.37628799], [1516916460000, 0.07137705, 0.07137705, 0.07133331, 0.07133331, 0.70964743], [1516916520000, 0.07098892, 0.07133334, 0.07098892, 0.07133334, 0.38417143], [1516916580000, 0.07133334, 0.07139011, 0.07133334, 0.07139011, 0.40218304], [1516916640000, 0.07133334, 0.07142567, 0.07133334, 0.07133334, 0.10598097], [1516916700000, 0.07133334, 0.07145841, 0.07133334, 0.07133337, 2.81257725], [1516916760000, 0.0714584, 0.0714584, 0.07133337, 0.0714584, 3.04960661], [1516916820000, 0.07133337, 0.0714584, 0.07133337, 0.0714584, 0.05733337], [1516916880000, 0.07133338, 0.07133338, 0.07133337, 0.07133337, 0.49866801], [1516916940000, 0.07133338, 0.07133338, 0.07133338, 0.07133338, 0.0463668], [1516917000000, 0.07133338, 0.07139999, 0.07133334, 0.07133334, 5.88892475], [1516917060000, 0.07133334, 0.07133334, 0.07133334, 0.07133334, 1.26876235], [1516917120000, 0.07133334, 0.07133334, 0.07133334, 0.07133334, 0.03091122], [1516917180000, 0.07133334, 0.0714584, 0.07133334, 0.07133334, 2.87154428], [1516917240000, 0.07133334, 0.0714584, 0.07133334, 0.07133334, 0.09743812], [1516917300000, 0.07145028, 0.07145028, 0.07052001, 0.07076415, 26.96272378], [1516917360000, 0.07079488, 0.07079488, 0.07079488, 0.07079488, 6.307], [1516917420000, 0.07093093, 0.0714, 0.07079488, 0.0714, 20.69299956], [1516917480000, 0.07140286, 0.07140286, 0.07079488, 0.07079488, 0.55238581], [1516917600000, 0.07079488, 0.07079488, 0.07079488, 0.07079488, 4.39895848], [1516917660000, 0.07079488, 0.07079488, 0.07079488, 0.07079488, 0.60094152], [1516917720000, 0.0707949, 0.0707949, 0.0707949, 0.0707949, 0.08055905], [1516917780000, 0.0713158, 0.0713158, 0.0713158, 0.0713158, 0.0192408], [1516918020000, 0.0712709, 0.0712709, 0.0712709, 0.0712709, 1.18773999], [1516918080000, 0.0712709, 0.0712709, 0.0712709, 0.0712709, 0.02172451], [1516918200000, 0.0712709, 0.07140921, 0.0712709, 0.0712709, 0.15541789], [1516918260000, 0.07136746, 0.07136746, 0.07099499, 0.07099499, 2.28646989], [1516918320000, 0.07099495, 0.07099499, 0.07099, 0.07099499, 1.25776596], [1516918380000, 0.07099495, 0.07099495, 0.07099495, 0.07099495, 1.77418372], [1516918440000, 0.0709945, 0.07165199, 0.0709945, 0.07133034, 14.13515869], [1516918500000, 0.07099499, 0.07099499, 0.07099, 0.07099, 10.78763818], [1516918560000, 0.07099, 0.07099001, 0.07099, 0.07099001, 0.45808673], [1516918620000, 0.07099225, 0.07105158, 0.07099225, 0.07105158, 0.13971236], [1516918680000, 0.07099002, 0.07099002, 0.07099, 0.07099, 0.32172825], [1516918740000, 0.07099, 0.07099, 0.07099, 0.07099, 0.60817268], [1516918800000, 0.07100452, 0.07100452, 0.07099, 0.0710044, 0.62734734], [1516918860000, 0.07099, 0.0710044, 0.07099, 0.0710044, 2.20019909], [1516918920000, 0.0710044, 0.0710044, 0.0710044, 0.0710044, 0.01553041], [1516919040000, 0.0710044, 0.0710044, 0.07099, 0.07099, 0.40635719], [1516919100000, 0.07099, 0.07133034, 0.07093113, 0.07131547, 11.22914247], [1516919160000, 0.07131547, 0.07134378, 0.0710044, 0.0710044, 2.68399804], [1516919220000, 0.0710044, 0.0710044, 0.0710044, 0.0710044, 0.05061628], [1516919280000, 0.07131547, 0.07131547, 0.07131547, 0.07131547, 1.58494162], [1516919340000, 0.07131547, 0.07165, 0.07131547, 0.07131547, 4.15130227], [1516919400000, 0.07145123, 0.07145123, 0.07132, 0.07145108, 0.75396912], [1516919460000, 0.07132, 0.07132, 0.07132, 0.07132, 1.39555002], [1516919520000, 0.07141, 0.07141, 0.07131547, 0.07131547, 0.02946312], [1516919580000, 0.07131547, 0.07140999, 0.07131547, 0.07140999, 0.18459147], [1516919640000, 0.07131547, 0.07131547, 0.07131547, 0.07131547, 0.03091896], [1516919700000, 0.07131547, 0.07131547, 0.07100939, 0.07100939, 3.39600448], [1516919760000, 0.07137997, 0.07137997, 0.0710094, 0.0710094, 0.312483], [1516919820000, 0.07088297, 0.07095385, 0.07078055, 0.07078055, 0.23261217], [1516919880000, 0.07072623, 0.07100237, 0.07072623, 0.07100237, 0.08469241], [1516920000000, 0.07100237, 0.07100237, 0.07100237, 0.07100237, 0.01564051], [1516920060000, 0.07100237, 0.07100237, 0.07100237, 0.07100237, 0.01881138], [1516920120000, 0.07079587, 0.07079587, 0.07079587, 0.07079587, 4.06268998], [1516920180000, 0.07100237, 0.07100237, 0.07100237, 0.07100237, 0.06641106], [1516920240000, 0.07100237, 0.07100237, 0.07100237, 0.07100237, 0.43494331], [1516920420000, 0.07127836, 0.07127836, 0.07100269, 0.07100269, 0.02741587], [1516920480000, 0.07100269, 0.07100269, 0.07100237, 0.07100237, 0.1], [1516920540000, 0.07100237, 0.07103654, 0.07100237, 0.07100237, 9.77669188], [1516920600000, 0.07100237, 0.07121406, 0.07085483, 0.07085483, 0.29071995], [1516920660000, 0.07085483, 0.07099143, 0.07085483, 0.07099143, 0.56457582], [1516920720000, 0.07099144, 0.07099144, 0.07099143, 0.07099143, 0.03106008], [1516920780000, 0.07120588, 0.07126405, 0.07099143, 0.07099143, 4.13053301], [1516920840000, 0.07099143, 0.07099143, 0.07099143, 0.07099143, 0.28707748], [1516920900000, 0.07099143, 0.07099143, 0.07099143, 0.07099143, 2.0101964], [1516920960000, 0.07085483, 0.07099143, 0.07070016, 0.07099143, 0.13475313], [1516921020000, 0.07099143, 0.07099143, 0.07099143, 0.07099143, 0.01549482], [1516921140000, 0.07099143, 0.07099143, 0.07099143, 0.07099143, 0.02399156], [1516921200000, 0.07099143, 0.07099143, 0.07099143, 0.07099143, 0.21427033], [1516921320000, 0.07073466, 0.07099143, 0.0707, 0.0707, 1.8349479], [1516921380000, 0.07099143, 0.07099143, 0.07099143, 0.07099143, 2.18906499], [1516921500000, 0.07099, 0.07099143, 0.07079247, 0.07099143, 0.23520767], [1516921560000, 0.07099143, 0.07099143, 0.07099143, 0.07099143, 0.03114524], [1516921620000, 0.07071145, 0.07071145, 0.0707, 0.0707, 29.15664604], [1516921680000, 0.07087675, 0.07099143, 0.07052304, 0.07081395, 1.01300418], [1516921740000, 0.07081395, 0.07081395, 0.07081395, 0.07081395, 0.02672709], [1516921800000, 0.07099143, 0.07099143, 0.07099143, 0.07099143, 0.14086213], [1516921860000, 0.07099143, 0.07099143, 0.07099143, 0.07099143, 0.03119141], [1516921920000, 0.07081395, 0.07099143, 0.07081395, 0.07099143, 0.60311512], [1516921980000, 0.07099143, 0.07099143, 0.07099143, 0.07099143, 5.14626008], [1516922040000, 0.07109554, 0.07116811, 0.07099143, 0.07099143, 1.88081132], [1516922100000, 0.07108781, 0.07108781, 0.07081395, 0.07081395, 1.66027294], [1516922160000, 0.07108102, 0.07108102, 0.07074321, 0.07074321, 3.14169653], [1516922220000, 0.0710164, 0.07114989, 0.07097635, 0.07114989, 1.1084606], [1516922280000, 0.07114988, 0.07114988, 0.07081237, 0.07099515, 0.44901891], [1516922340000, 0.07099515, 0.0711204, 0.07099515, 0.0711204, 0.23017956], [1516922400000, 0.07107479, 0.07107479, 0.07094251, 0.07094251, 0.92887182], [1516922460000, 0.07099279, 0.07099279, 0.070768, 0.070768, 0.27302012], [1516922520000, 0.070768, 0.07096086, 0.070768, 0.07096086, 0.14765133], [1516922580000, 0.07105023, 0.07105023, 0.07096086, 0.07102436, 0.26476951], [1516922640000, 0.07102436, 0.07102436, 0.07102436, 0.07102436, 0.01732358], [1516922700000, 0.07096086, 0.07102138, 0.07096086, 0.07102138, 0.04835572], [1516922760000, 0.07102138, 0.07102436, 0.07102138, 0.07102138, 1.95336904], [1516922820000, 0.07102436, 0.07102436, 0.0706312, 0.07101592, 1.26295248], [1516922940000, 0.07101529, 0.07101529, 0.07101529, 0.07101529, 0.0086418], [1516923000000, 0.07099999, 0.07101592, 0.07099999, 0.07101592, 0.24995562], [1516923060000, 0.07099999, 0.07099999, 0.07099999, 0.07099999, 0.44097415], [1516923120000, 0.07099999, 0.07099999, 0.07099999, 0.07099999, 0.50622816], [1516923180000, 0.07099999, 0.07102436, 0.070646, 0.07102436, 0.80735763], [1516923240000, 0.07102435, 0.07102435, 0.07102435, 0.07102435, 0.12829398], [1516923300000, 0.07102434, 0.07102435, 0.07102434, 0.07102434, 0.29659376], [1516923360000, 0.07102435, 0.07102435, 0.07102434, 0.07102434, 0.13182584], [1516923420000, 0.07102434, 0.07102434, 0.07102434, 0.07102434, 0.00447715], [1516923540000, 0.07102434, 0.07102434, 0.07102434, 0.07102434, 0.042], [1516923600000, 0.07102434, 0.07102434, 0.07102434, 0.07102434, 1.28174384], [1516923660000, 0.07102433, 0.07102434, 0.07102433, 0.07102434, 0.2752743], [1516923720000, 0.07102434, 0.07102435, 0.07102434, 0.07102435, 0.14124237], [1516923780000, 0.07102434, 0.07102434, 0.07102434, 0.07102434, 0.05033162], [1516923840000, 0.07102434, 0.07102434, 0.07064601, 0.07064601, 0.37143573], [1516923900000, 0.07064601, 0.07102435, 0.07064601, 0.07102435, 2.10771662], [1516923960000, 0.07102434, 0.07102435, 0.07102434, 0.07102435, 0.58027203], [1516924020000, 0.07102288, 0.07102435, 0.07102288, 0.07102435, 0.0421337], [1516924140000, 0.07102434, 0.07105024, 0.07102434, 0.07105024, 2.24694405], [1516924200000, 0.07105024, 0.07117875, 0.07102436, 0.07102436, 0.36495766], [1516924260000, 0.07114991, 0.07114991, 0.07102435, 0.07102435, 0.04685652], [1516924320000, 0.07102435, 0.07102435, 0.07102435, 0.07102435, 0.21287975], [1516924380000, 0.07102435, 0.07102435, 0.07064601, 0.07064601, 0.45145386], [1516924500000, 0.07064601, 0.07064601, 0.07064601, 0.07064601, 0.24210625], [1516924620000, 0.07102434, 0.07102435, 0.07064601, 0.07064601, 0.19706153], [1516924680000, 0.07102434, 0.07102435, 0.07102434, 0.07102435, 0.03817222], [1516924800000, 0.0707, 0.07102435, 0.07064601, 0.07102435, 1.14079668], [1516924860000, 0.07102434, 0.0712, 0.07102434, 0.0712, 1.65636042], [1516924920000, 0.07102435, 0.07109544, 0.07102435, 0.07102435, 0.06763433], [1516924980000, 0.07102435, 0.07102435, 0.07102435, 0.07102435, 0.0810457], [1516925040000, 0.07102435, 0.07102435, 0.07102435, 0.07102435, 0.46142379], [1516925100000, 0.07102435, 0.0712, 0.07102435, 0.0712, 0.73327633], [1516925160000, 0.0711, 0.0712, 0.0711, 0.0711, 0.04947199], [1516925220000, 0.0711, 0.0711, 0.07102435, 0.07102435, 8.21758226], [1516925280000, 0.07102435, 0.0711, 0.07102435, 0.07102435, 16.90682581], [1516925340000, 0.07102435, 0.07105578, 0.07102426, 0.07105578, 4.23472204], [1516925400000, 0.07064601, 0.07064601, 0.07064601, 0.07064601, 2.429551], [1516925460000, 0.0709718, 0.0709718, 0.070646, 0.0709636, 0.10832306], [1516925520000, 0.07098236, 0.07098236, 0.070646, 0.070646, 1.55519087], [1516925580000, 0.07064601, 0.07099526, 0.07064601, 0.07099526, 0.13741141], [1516925640000, 0.07099525, 0.07109992, 0.07099525, 0.07109992, 0.15709816], [1516925760000, 0.07103021, 0.07103021, 0.07064604, 0.07064604, 4.015], [1516925820000, 0.07103021, 0.07103021, 0.07103021, 0.07103021, 0.04823411], [1516925880000, 0.07074609, 0.07074609, 0.07064603, 0.07064603, 0.26564681], [1516925940000, 0.07064603, 0.07065419, 0.07064603, 0.07064694, 0.77021759], [1516926000000, 0.07101646, 0.07101646, 0.07101646, 0.07101646, 0.03613139], [1516926060000, 0.07065084, 0.07066106, 0.07064603, 0.07064603, 0.89012582], [1516926120000, 0.07064604, 0.07101647, 0.07064603, 0.07101647, 0.40994509], [1516926180000, 0.070686, 0.07101646, 0.07064603, 0.07072017, 2.02291357], [1516926240000, 0.070666, 0.07101646, 0.070666, 0.0706779, 0.37540077], [1516926300000, 0.07069589, 0.07101646, 0.07069589, 0.07101646, 0.27986327], [1516926360000, 0.07078798, 0.07101645, 0.07078798, 0.07101645, 0.13958973], [1516926480000, 0.07101641, 0.07101642, 0.07101641, 0.07101642, 0.26289264], [1516926540000, 0.07087094, 0.07087094, 0.07066292, 0.07066292, 0.13423539], [1516926660000, 0.07067304, 0.07101641, 0.07067304, 0.07101641, 2.5059], [1516926720000, 0.07067542, 0.07101641, 0.07067542, 0.07067542, 1.00849477], [1516926780000, 0.07067649, 0.07067649, 0.07067649, 0.07067649, 0.12376375], [1516926900000, 0.07101639, 0.07101639, 0.07101639, 0.07101639, 1.4081254], [1516926960000, 0.07101639, 0.07101639, 0.07101639, 0.07101639, 1.86330084], [1516927020000, 0.07077484, 0.07101639, 0.07077484, 0.07101639, 7.06789587], [1516927080000, 0.07101639, 0.07101639, 0.07067, 0.07101639, 0.3342779], [1516927140000, 0.07101639, 0.07101639, 0.07101639, 0.07101639, 0.87735267], [1516927200000, 0.0710164, 0.07101645, 0.07067675, 0.07101645, 3.2614438], [1516927260000, 0.07101645, 0.07101645, 0.07101645, 0.07101645, 1.71567258], [1516927320000, 0.07101645, 0.07101645, 0.07101645, 0.07101645, 0.28162468], [1516927380000, 0.07073238, 0.07073238, 0.07064603, 0.07064603, 2.50978163], [1516927440000, 0.07101644, 0.07101645, 0.07072039, 0.07072039, 4.4190462], [1516927500000, 0.07101644, 0.07101645, 0.07101644, 0.07101645, 0.14081254], [1516927560000, 0.07101645, 0.07101645, 0.07101645, 0.07101645, 0.71662855], [1516927680000, 0.07101644, 0.07101644, 0.07101644, 0.07101644, 1.0], [1516927740000, 0.07101643, 0.07101644, 0.07101643, 0.07101644, 0.08664603], [1516927800000, 0.07101644, 0.07101645, 0.07064603, 0.07101645, 0.58597957], [1516927860000, 0.07101645, 0.07101645, 0.07101645, 0.07101645, 0.0374879], [1516927920000, 0.07064604, 0.07064604, 0.07064603, 0.07064603, 0.14081234], [1516928040000, 0.07064603, 0.07064603, 0.07064603, 0.07064603, 12.65438325], [1516928100000, 0.07101644, 0.07101645, 0.07101644, 0.07101645, 0.42243762], [1516928220000, 0.07094264, 0.07094264, 0.07094264, 0.07094264, 0.02052279], [1516928340000, 0.07074729, 0.07074729, 0.07074729, 0.07074729, 0.13265484], [1516928400000, 0.07074729, 0.07101645, 0.07074729, 0.07101645, 0.16266284], [1516928460000, 0.071, 0.07101645, 0.071, 0.07101645, 0.7599415], [1516928700000, 0.07101645, 0.07101645, 0.07101645, 0.07101645, 0.42243702], [1516928760000, 0.071, 0.071, 0.071, 0.071, 0.02495855], [1516928820000, 0.07101645, 0.0712, 0.07101645, 0.0712, 3.31809616], [1516928880000, 0.071, 0.071, 0.071, 0.071, 2.27461968], [1516928940000, 0.0712, 0.0712, 0.0712, 0.0712, 0.05334601], [1516929000000, 0.071, 0.0712, 0.071, 0.0712, 0.33695662], [1516929060000, 0.0712, 0.0712, 0.071, 0.071, 0.45441335], [1516929120000, 0.071, 0.0712, 0.071, 0.0712, 1.07022499], [1516929180000, 0.071, 0.071, 0.071, 0.071, 0.6110792], [1516929240000, 0.071, 0.071, 0.071, 0.071, 0.0275], [1516929360000, 0.071, 0.071, 0.071, 0.071, 0.14166312], [1516929540000, 0.071, 0.071, 0.07074729, 0.07074729, 20.65347892], [1516929600000, 0.071, 0.07119959, 0.07064537, 0.07077037, 1.04220304], [1516929660000, 0.07075313, 0.07075313, 0.0706454, 0.0706454, 0.31248725], [1516929720000, 0.07069233, 0.07069233, 0.07069233, 0.07069233, 0.12345867], [1516929780000, 0.07075241, 0.07075241, 0.07075241, 0.07075241, 0.24691734], [1516929900000, 0.0710952, 0.0710952, 0.0710952, 0.0710952, 0.14065647], [1516929960000, 0.07110334, 0.07110334, 0.07110334, 0.07110334, 0.03499], [1516930020000, 0.07075241, 0.07075241, 0.07069788, 0.07069788, 1.29945829], [1516930080000, 0.07075241, 0.07075241, 0.07075241, 0.07075241, 0.08726566], [1516930140000, 0.07075241, 0.07075241, 0.07069055, 0.07075241, 0.86562248], [1516930200000, 0.07075241, 0.07075241, 0.07065, 0.07065, 1.2780625], [1516930260000, 0.07063837, 0.07108442, 0.07063837, 0.07107457, 3.89056929], [1516930320000, 0.07063121, 0.07109573, 0.07063121, 0.07109573, 0.0868133], [1516930440000, 0.07108557, 0.07108557, 0.07108557, 0.07108557, 0.21048573], [1516930560000, 0.07113132, 0.07113132, 0.07113132, 0.07113132, 0.1333002], [1516930620000, 0.07113131, 0.07113132, 0.07113131, 0.07113131, 1.02447882], [1516930680000, 0.07113131, 0.07113131, 0.07113131, 0.07113131, 0.07096889], [1516930740000, 0.07113131, 0.07113131, 0.07113131, 0.07113131, 0.28340551], [1516930800000, 0.07113131, 0.07113131, 0.07063128, 0.07063128, 2.2], [1516930860000, 0.07078587, 0.07078587, 0.07078587, 0.07078587, 0.00873197], [1516930920000, 0.07119998, 0.07119998, 0.07117007, 0.07117007, 0.8057209], [1516930980000, 0.07080094, 0.07080094, 0.07080094, 0.07080094, 0.11402194], [1516931040000, 0.07080094, 0.07080094, 0.07080094, 0.07080094, 0.16959045], [1516931100000, 0.07117007, 0.07119999, 0.07079598, 0.07079598, 0.55512928], [1516931160000, 0.07079065, 0.07119999, 0.07079065, 0.07119999, 1.93922326], [1516931220000, 0.07119999, 0.07119999, 0.07077737, 0.07077737, 3.58149081], [1516931280000, 0.07114682, 0.07114682, 0.07114682, 0.07114682, 0.04854967], [1516931340000, 0.07112229, 0.07112229, 0.07112229, 0.07112229, 0.24619566], [1516931400000, 0.07111606, 0.07114682, 0.07074242, 0.07074242, 1.64253816], [1516931460000, 0.07111961, 0.07111961, 0.07111961, 0.07111961, 0.04953331], [1516931700000, 0.07114001, 0.07114001, 0.07114001, 0.07114001, 0.14055445], [1516931760000, 0.07075, 0.07112001, 0.07075, 0.07075, 0.71518284], [1516931880000, 0.07112369, 0.07112369, 0.07112369, 0.07112369, 0.07577938], [1516932000000, 0.07101237, 0.07102275, 0.07097999, 0.07097999, 0.28899264], [1516932120000, 0.07076001, 0.07076001, 0.07076001, 0.07076001, 0.9972], [1516932180000, 0.07093915, 0.07094509, 0.07074242, 0.07074242, 17.54721943], [1516932240000, 0.07063131, 0.07082468, 0.07063121, 0.07082468, 7.02585241], [1516932300000, 0.07063121, 0.07082468, 0.07063121, 0.07063121, 9.00000191], [1516932360000, 0.07063121, 0.07063121, 0.07063121, 0.07063121, 6.01846154], [1516932420000, 0.07063121, 0.07063121, 0.07063121, 0.07063121, 0.24060925], [1516932480000, 0.07063121, 0.07072273, 0.07063121, 0.07072273, 3.73975473], [1516932540000, 0.07063121, 0.07072273, 0.07063121, 0.07072273, 0.0232225], [1516932600000, 0.07072273, 0.07072273, 0.07063121, 0.07063121, 5.4072182], [1516932660000, 0.07063121, 0.07067697, 0.07063121, 0.07067697, 1.64503548], [1516932720000, 0.07067697, 0.07072272, 0.07063121, 0.07063121, 27.65168992], [1516932780000, 0.07063121, 0.07063121, 0.07045, 0.07045, 25.93768082], [1516932840000, 0.07045, 0.07045001, 0.07045, 0.07045, 0.08793505], [1516932900000, 0.07045001, 0.07045001, 0.07045, 0.07045001, 0.32091132], [1516932960000, 0.07045, 0.07045, 0.07032572, 0.0703456, 4.88039764], [1516933020000, 0.0703456, 0.07045001, 0.07031481, 0.07031481, 7.96475392], [1516933080000, 0.07031481, 0.07031481, 0.07031481, 0.07031481, 1.74215896], [1516933140000, 0.07031481, 0.07031481, 0.07031412, 0.07031481, 1.80149466], [1516933200000, 0.07031481, 0.07058457, 0.07031411, 0.07031411, 0.5983562], [1516933260000, 0.07031411, 0.07054814, 0.07031411, 0.07054814, 0.05629153], [1516933320000, 0.07031411, 0.07056259, 0.07026695, 0.07030275, 0.46744677], [1516933380000, 0.07026697, 0.07030275, 0.07026695, 0.07026695, 1.26085294], [1516933440000, 0.07026695, 0.0703027, 0.07026695, 0.07026695, 9.57737499], [1516933500000, 0.07030275, 0.07030275, 0.07026695, 0.07030275, 2.20204632], [1516933560000, 0.07030275, 0.07041037, 0.07026695, 0.07040918, 14.27329237], [1516933620000, 0.07026695, 0.07026695, 0.07026695, 0.07026695, 3.92439893], [1516933680000, 0.07026695, 0.07026695, 0.07026695, 0.07026695, 8.33041973], [1516933740000, 0.07026695, 0.07026695, 0.07026695, 0.07026695, 2.35138032], [1516933800000, 0.07026695, 0.07035, 0.07026695, 0.07026695, 3.19826382], [1516933860000, 0.07026695, 0.07034999, 0.07026695, 0.07026695, 0.74300509], [1516933920000, 0.070348, 0.07040918, 0.07026695, 0.07026695, 3.46023555], [1516933980000, 0.07040919, 0.07040919, 0.07026695, 0.07026695, 0.06528138], [1516934100000, 0.0703, 0.0703, 0.0703, 0.0703, 0.30358762], [1516934160000, 0.07026695, 0.07026695, 0.07026695, 0.07026695, 3.5667], [1516934220000, 0.0703, 0.0703, 0.07026695, 0.07026695, 0.12355552], [1516934280000, 0.0703, 0.0703, 0.07026695, 0.0703, 0.07922766], [1516934340000, 0.07026695, 0.0703, 0.07026695, 0.07026695, 0.06289626], [1516934400000, 0.07026695, 0.0703, 0.07026695, 0.0703, 0.31587531], [1516934460000, 0.07026711, 0.0703, 0.07026711, 0.0703, 0.62372266], [1516934520000, 0.07026711, 0.07062039, 0.07026711, 0.070301, 6.28670723], [1516934580000, 0.070301, 0.07056199, 0.070301, 0.070301, 0.13094229], [1516934640000, 0.0703, 0.070301, 0.07026711, 0.0703, 1.31885703], [1516934700000, 0.07029, 0.07054051, 0.07026711, 0.0703, 1.5171645], [1516934760000, 0.0703, 0.0703, 0.0703, 0.0703, 0.16768623], [1516934820000, 0.0703, 0.0703, 0.07026695, 0.07026695, 1.5563669], [1516934880000, 0.07026695, 0.07026695, 0.07026695, 0.07026695, 1.91745418], [1516934940000, 0.07026695, 0.07026695, 0.07026695, 0.07026695, 38.75921106], [1516935000000, 0.07026695, 0.07040722, 0.07026695, 0.07026695, 10.68107334], [1516935060000, 0.07026695, 0.07030584, 0.07026695, 0.07026695, 7.03132563], [1516935120000, 0.07026695, 0.0704074, 0.07026695, 0.07038759, 0.10239555], [1516935180000, 0.07026695, 0.07039204, 0.07026695, 0.07039204, 1.4777252], [1516935240000, 0.07026695, 0.07039204, 0.07026695, 0.07026695, 0.41386799], [1516935300000, 0.07026695, 0.07050391, 0.07026695, 0.07050391, 0.10442001], [1516935360000, 0.07026695, 0.07026695, 0.07026695, 0.07026695, 1.17870454], [1516935420000, 0.07026695, 0.07026695, 0.07026695, 0.07026695, 3.05287858], [1516935480000, 0.07026695, 0.07026695, 0.07026695, 0.07026695, 0.74468032], [1516935540000, 0.07026695, 0.07026695, 0.07024085, 0.07024085, 4.73734739], [1516935600000, 0.07024087, 0.070597, 0.07024087, 0.07024087, 0.31498096], [1516935660000, 0.07024087, 0.07024087, 0.07024087, 0.07024087, 0.18786175], [1516935720000, 0.07024087, 0.07045365, 0.07024087, 0.07045365, 0.59158287], [1516935780000, 0.0705188, 0.0705188, 0.07025087, 0.07025087, 0.49925261], [1516935840000, 0.07025087, 0.07025087, 0.07024087, 0.07024087, 0.03138752], [1516935900000, 0.07025087, 0.07025087, 0.07025087, 0.07025087, 0.03138752], [1516935960000, 0.07025087, 0.07025087, 0.07025087, 0.07025087, 0.10272088], [1516936020000, 0.07025087, 0.07025087, 0.07025087, 0.07025087, 0.04708128], [1516936080000, 0.07025087, 0.07025087, 0.07025087, 0.07025087, 0.03138752], [1516936140000, 0.07025087, 0.07025087, 0.07025087, 0.07025087, 0.03138752], [1516936200000, 0.07042585, 0.07042585, 0.07025087, 0.07025087, 0.21198658], [1516936260000, 0.07025087, 0.07025087, 0.07025087, 0.07025087, 0.00862733], [1516936320000, 0.07025087, 0.07039836, 0.07025087, 0.07039836, 0.07524161], [1516936380000, 0.07025087, 0.07025087, 0.07025087, 0.07025087, 0.01569376], [1516936440000, 0.07031817, 0.07031817, 0.07031817, 0.07031817, 2.93841006], [1516936500000, 0.07033386, 0.07033386, 0.07025087, 0.07025087, 0.89652771], [1516936560000, 0.07031835, 0.07031835, 0.07024085, 0.07024085, 6.14639338], [1516936680000, 0.07024085, 0.07024085, 0.07002436, 0.07002436, 1.10221807], [1516936800000, 0.070128, 0.070223, 0.070128, 0.070223, 0.73333528], [1516936860000, 0.070128, 0.070223, 0.07, 0.070223, 6.03734611], [1516936920000, 0.07025002, 0.07025002, 0.07022302, 0.07022302, 0.31414173], [1516936980000, 0.07025002, 0.07025002, 0.07022302, 0.07022302, 1.10708711], [1516937040000, 0.07022302, 0.07022302, 0.07, 0.07, 0.9967], [1516937100000, 0.07, 0.07, 0.07, 0.07, 0.91750823], [1516937160000, 0.07, 0.07, 0.07, 0.07, 5.51738813], [1516937340000, 0.07, 0.07, 0.07, 0.07, 0.04], [1516937400000, 0.07024484, 0.07024484, 0.07, 0.07, 0.37857265], [1516937460000, 0.07024709, 0.07041019, 0.07024709, 0.07041019, 10.2], [1516937520000, 0.07, 0.07, 0.07, 0.07, 0.14020993], [1516937700000, 0.0702, 0.0702, 0.0702, 0.0702, 0.29993617], [1516937940000, 0.0702, 0.0702, 0.0702, 0.0702, 0.13373114], [1516938000000, 0.0702, 0.0702, 0.0702, 0.0702, 0.35576991], [1516938060000, 0.0702, 0.0702, 0.0702, 0.0702, 0.16300524], [1516938120000, 0.0702, 0.0702, 0.07, 0.07, 0.58086468], [1516938240000, 0.0702, 0.0702, 0.0702, 0.0702, 0.05433236], [1516938300000, 0.07, 0.0702, 0.07, 0.0702, 4.82743799], [1516938420000, 0.07, 0.07, 0.07, 0.07, 6.08735905], [1516938480000, 0.07, 0.07, 0.07, 0.07, 0.8892], [1516938540000, 0.07, 0.07, 0.07, 0.07, 0.0315], [1516938600000, 0.07, 0.07019999, 0.07, 0.07019999, 0.79463468], [1516938660000, 0.07, 0.07019999, 0.07, 0.07019999, 0.07439903], [1516938720000, 0.07, 0.07, 0.07, 0.07, 0.0315], [1516938780000, 0.07, 0.07, 0.07, 0.07, 0.0315], [1516938840000, 0.07, 0.07, 0.07, 0.07, 0.0315], [1516938900000, 0.0701, 0.0701, 0.07, 0.07, 1.41888874], [1516938960000, 0.07, 0.0701, 0.07, 0.07, 0.03883424], [1516939020000, 0.07, 0.07, 0.06996585, 0.07, 0.86807701], [1516939080000, 0.06996585, 0.06999999, 0.0698, 0.06999999, 26.35348924], [1516939140000, 0.06999999, 0.06999999, 0.06999999, 0.06999999, 0.04791886], [1516939200000, 0.06999998, 0.06999998, 0.06999823, 0.06999823, 0.07941927], [1516939260000, 0.06999823, 0.06999861, 0.06999823, 0.06999823, 0.26974251], [1516939320000, 0.06999998, 0.06999998, 0.06999823, 0.06999823, 1.26035047], [1516939380000, 0.06999998, 0.07, 0.06999823, 0.06999823, 0.04750748], [1516939440000, 0.07, 0.07, 0.0698, 0.0698, 0.12688866], [1516939500000, 0.07, 0.07, 0.06979622, 0.07, 0.60342792], [1516939560000, 0.06979622, 0.07, 0.0697, 0.06999999, 0.3220371], [1516939620000, 0.0697, 0.07, 0.0697, 0.07, 1.2304061], [1516939680000, 0.0697, 0.07, 0.0697, 0.0697, 1.1669453], [1516939740000, 0.0697, 0.0697, 0.0697, 0.0697, 0.03163558], [1516939800000, 0.0697, 0.07, 0.0695, 0.06999999, 15.73315884], [1516939860000, 0.0695798, 0.0695798, 0.0695798, 0.0695798, 0.04910219], [1516939920000, 0.06964997, 0.06999994, 0.0695798, 0.06999993, 2.28884868], [1516939980000, 0.06999999, 0.06999999, 0.06999999, 0.06999999, 0.30000004], [1516940040000, 0.06957756, 0.06957756, 0.0695, 0.0695, 1.11368048], [1516940100000, 0.06993717, 0.06993717, 0.0695, 0.06991321, 1.34600745], [1516940280000, 0.06991321, 0.06991321, 0.06991321, 0.06991321, 0.09991382], [1516940340000, 0.06973843, 0.06991321, 0.06973843, 0.06991321, 0.09161733], [1516940400000, 0.06991321, 0.07, 0.06973843, 0.06973843, 1.00366277], [1516940460000, 0.06973843, 0.06973843, 0.06973843, 0.06973843, 0.1399619], [1516940520000, 0.06999999, 0.06999999, 0.06956375, 0.06956375, 0.3142759], [1516940580000, 0.06956387, 0.07, 0.06956387, 0.06999998, 0.25340689], [1516940640000, 0.06999998, 0.06999998, 0.06999998, 0.06999998, 0.12761224], [1516940700000, 0.06999998, 0.07, 0.06999998, 0.06999998, 0.52029063], [1516940760000, 0.07, 0.07, 0.06956699, 0.06968383, 3.43265449], [1516940820000, 0.06968383, 0.07, 0.06950015, 0.0695412, 0.56764153], [1516940880000, 0.06999998, 0.06999998, 0.06999998, 0.06999998, 0.02142857], [1516940940000, 0.06999998, 0.06999998, 0.06999998, 0.06999998, 0.05549878], [1516941000000, 0.069999, 0.069999, 0.06958148, 0.06958148, 0.57143468], [1516941060000, 0.069999, 0.069999, 0.069999, 0.069999, 0.04319307], [1516941120000, 0.06965829, 0.06965829, 0.06965829, 0.06965829, 2.78659645], [1516941180000, 0.06999899, 0.06999899, 0.06999899, 0.06999899, 0.06682691], [1516941240000, 0.069999, 0.069999, 0.069999, 0.069999, 0.23861766], [1516941300000, 0.06999899, 0.069999, 0.06999899, 0.069999, 0.17803677], [1516941480000, 0.069999, 0.06999995, 0.06972428, 0.06972428, 9.98574416], [1516941540000, 0.07, 0.07, 0.07, 0.07, 0.23272133], [1516941600000, 0.06999999, 0.07, 0.06999999, 0.07, 24.73241856], [1516941660000, 0.07, 0.07, 0.07, 0.07, 3.05851714], [1516941780000, 0.07, 0.07, 0.07, 0.07, 10.5271317], [1516941900000, 0.07, 0.07, 0.06972, 0.07, 0.2947034], [1516941960000, 0.07, 0.07, 0.07, 0.07, 4.1683068], [1516942080000, 0.07, 0.07, 0.06972, 0.06972, 0.30052198], [1516942140000, 0.06985, 0.06985, 0.06972, 0.06985, 0.51948702], [1516942200000, 0.06985, 0.06985, 0.06985, 0.06985, 0.84946116], [1516942260000, 0.06985, 0.06985, 0.0695, 0.0695, 13.04960581], [1516942320000, 0.0695, 0.0695, 0.0695, 0.0695, 6.42093466], [1516942380000, 0.06985, 0.06985, 0.06944, 0.06984999, 33.20446041], [1516942440000, 0.06951149, 0.06951149, 0.06944, 0.06944, 10.95768485], [1516942500000, 0.06990971, 0.06990971, 0.06956036, 0.06956036, 0.36478274], [1516942560000, 0.06951464, 0.06990953, 0.06949133, 0.06949133, 1.74013932], [1516942620000, 0.06962968, 0.06962968, 0.06950643, 0.06950643, 1.01697424], [1516942680000, 0.06952539, 0.06990897, 0.06952539, 0.06990897, 0.54081362], [1516942740000, 0.0695596, 0.0695596, 0.06955959, 0.06955959, 0.38050878], [1516942800000, 0.06955959, 0.0695596, 0.06942524, 0.0695596, 0.84134019], [1516942860000, 0.06955959, 0.06990937, 0.06955958, 0.06955958, 9.09716292], [1516942920000, 0.06955958, 0.06990952, 0.06955958, 0.06990952, 0.06448539], [1516943040000, 0.06942521, 0.06966735, 0.06941387, 0.06941387, 1.0006469], [1516943100000, 0.06939736, 0.06949859, 0.06939736, 0.06941755, 4.52648764], [1516943160000, 0.06966734, 0.06966734, 0.06942519, 0.0694252, 1.70758583], [1516943220000, 0.0694252, 0.06966734, 0.0694252, 0.0696673, 7.28375117], [1516943280000, 0.0696673, 0.06966734, 0.0696673, 0.06966734, 2.05064299], [1516943340000, 0.0696673, 0.0696673, 0.0696673, 0.0696673, 0.11111444], [1516943400000, 0.06966733, 0.06966734, 0.0696673, 0.06966734, 2.25383248], [1516943520000, 0.06966733, 0.06966734, 0.06966733, 0.06966734, 1.1812244], [1516943640000, 0.06966734, 0.06966734, 0.0696673, 0.0696673, 1.48096664], [1516943700000, 0.06966731, 0.06966734, 0.06966731, 0.06966734, 0.18723936], [1516943760000, 0.06966734, 0.06966734, 0.06966734, 0.06966734, 0.06088197], [1516943880000, 0.06966734, 0.06966734, 0.06966734, 0.06966734, 5.29360174], [1516943940000, 0.06966732, 0.06966734, 0.06966732, 0.06966734, 0.03544778], [1516944000000, 0.06966733, 0.06966733, 0.06966733, 0.06966733, 0.03832499], [1516944120000, 0.06966733, 0.06966734, 0.06966733, 0.06966734, 1.67170472], [1516944240000, 0.06966734, 0.06966734, 0.0696673, 0.0696673, 1.09424572], [1516944300000, 0.06966734, 0.06966734, 0.0696673, 0.0696673, 5.77339221], [1516944360000, 0.06966732, 0.06966734, 0.06966732, 0.06966734, 1.44619771], [1516944420000, 0.06966734, 0.06966734, 0.06966734, 0.06966734, 4.29467652], [1516944540000, 0.06966734, 0.06966734, 0.06966734, 0.06966734, 0.33381447], [1516944600000, 0.06966734, 0.06966734, 0.0695663, 0.06966734, 0.67328885], [1516944660000, 0.06966734, 0.06966734, 0.06966734, 0.06966734, 3.55715983], [1516944720000, 0.06966734, 0.06966734, 0.0696034, 0.06966734, 15.45002948], [1516944780000, 0.0696673, 0.0696673, 0.0696673, 0.0696673, 0.03168356], [1516944840000, 0.0696673, 0.0696673, 0.06957454, 0.06957454, 0.47391629], [1516944900000, 0.0696673, 0.06990952, 0.06957454, 0.06990952, 15.50055118], [1516945080000, 0.06990952, 0.06990952, 0.06990952, 0.06990952, 0.01573462], [1516945200000, 0.06990952, 0.06990952, 0.06955844, 0.06955844, 0.46774755], [1516945320000, 0.06990952, 0.06990952, 0.06990952, 0.06990952, 1.52792423], [1516945380000, 0.06955844, 0.06955844, 0.06955844, 0.06955844, 0.0542773], [1516945440000, 0.06955844, 0.06955844, 0.06955844, 0.06955844, 18.2576072], [1516945500000, 0.06955844, 0.06955844, 0.06953924, 0.06955844, 3.11066573], [1516945560000, 0.06955844, 0.06955844, 0.06955464, 0.06955844, 22.66476592], [1516945620000, 0.06955844, 0.06955844, 0.06955844, 0.06955844, 7.1421384], [1516945680000, 0.06955843, 0.06955843, 0.06955843, 0.06955843, 0.47531833], [1516945740000, 0.06955843, 0.06955844, 0.06955842, 0.06955844, 1.16207835], [1516945860000, 0.06990952, 0.06990952, 0.06990952, 0.06990952, 0.05581586], [1516945920000, 0.06990952, 0.06990952, 0.06943244, 0.06990952, 13.70933363], [1516945980000, 0.06943249, 0.0695197, 0.06943249, 0.0695197, 0.46257708], [1516946040000, 0.06953687, 0.06990952, 0.06943249, 0.06958936, 4.73883872], [1516946100000, 0.06990952, 0.06990952, 0.0694325, 0.0694325, 0.29927893], [1516946160000, 0.06951034, 0.06958445, 0.06951034, 0.06952861, 0.33918378], [1516946220000, 0.06952861, 0.06952861, 0.06952861, 0.06952861, 0.65700592], [1516946280000, 0.06952861, 0.06952861, 0.06952861, 0.06952861, 1.6129909], [1516946340000, 0.06952861, 0.06952861, 0.06952861, 0.06952861, 0.0544922], [1516946400000, 0.06990951, 0.06990951, 0.06990951, 0.06990951, 0.06011657], [1516946460000, 0.0699095, 0.06990951, 0.0699095, 0.06990951, 0.51740928], [1516946520000, 0.06990951, 0.06990952, 0.0699095, 0.0699095, 10.66647825], [1516946580000, 0.0699095, 0.0699095, 0.0699095, 0.0699095, 0.01577039], [1516946640000, 0.0699095, 0.0699095, 0.0699095, 0.0699095, 0.14436623], [1516946700000, 0.0699095, 0.0699095, 0.06990949, 0.06990949, 4.32067477], [1516946760000, 0.06990948, 0.06990949, 0.06990948, 0.06990949, 3.4916106], [1516946820000, 0.06990949, 0.0699095, 0.06943279, 0.0699095, 1.77899671], [1516947000000, 0.06990948, 0.06990948, 0.06990948, 0.06990948, 0.28608414], [1516947060000, 0.06943249, 0.06943249, 0.06943249, 0.06943249, 0.34909824], [1516947120000, 0.06943254, 0.06943254, 0.06943249, 0.06943249, 0.94126907], [1516947180000, 0.06943248, 0.06943249, 0.06943248, 0.06943249, 1.5791648], [1516947240000, 0.06943248, 0.06943248, 0.06943244, 0.06943244, 0.33926135], [1516947300000, 0.06990949, 0.06990952, 0.06942625, 0.06942625, 0.41697419], [1516947420000, 0.06943248, 0.06943248, 0.06943248, 0.06943248, 0.03194361], [1516947600000, 0.06989082, 0.06990463, 0.06989082, 0.06989702, 1.48749218], [1516947660000, 0.06990463, 0.06990952, 0.06989702, 0.06989702, 2.37798711], [1516947720000, 0.0698965, 0.0698965, 0.0698965, 0.0698965, 0.01500762], [1516947780000, 0.06989702, 0.06989702, 0.06989702, 0.06989702, 0.05360591], [1516947900000, 0.06989701, 0.06989701, 0.06989701, 0.06989701, 0.45221105], [1516948080000, 0.06986784, 0.06986784, 0.06986784, 0.06986784, 1.94779883], [1516948200000, 0.06989221, 0.06989221, 0.06989221, 0.06989221, 0.14307748], [1516948260000, 0.06967, 0.06967, 0.06967, 0.06967, 0.2524461], [1516948500000, 0.06967, 0.06967, 0.06967, 0.06967, 0.1435338], [1516948740000, 0.06967, 0.06967, 0.06967, 0.06967, 0.33858892], [1516948800000, 0.06967, 0.06967, 0.06967, 0.06967, 0.2870676], [1516948860000, 0.06967, 0.06967, 0.06967, 0.06967, 0.49713177], [1516948920000, 0.06967, 0.06967, 0.06967, 0.06967, 0.0281811], [1516948980000, 0.06946832, 0.06946832, 0.06946832, 0.06946832, 0.20138557], [1516949040000, 0.06946832, 0.06946832, 0.06946832, 0.06946832, 0.02254416], [1516949100000, 0.06946832, 0.06946832, 0.06946832, 0.06946832, 0.91778155], [1516949160000, 0.06946832, 0.069669, 0.06946832, 0.069669, 3.05155983], [1516949220000, 0.069669, 0.069669, 0.069669, 0.069669, 0.19233806], [1516949400000, 0.069669, 0.069669, 0.069669, 0.069669, 0.30545189], [1516949460000, 0.069669, 0.069669, 0.069669, 0.069669, 1.1482869], [1516949520000, 0.06942625, 0.06942625, 0.06942625, 0.06942625, 0.2], [1516949580000, 0.069669, 0.069669, 0.069669, 0.069669, 2.87071724], [1516949760000, 0.06943249, 0.06943249, 0.06943249, 0.06943249, 0.39832483], [1516949820000, 0.06943248, 0.06943248, 0.06943248, 0.06943248, 0.1725584], [1516949880000, 0.06943249, 0.06943249, 0.06943248, 0.06943249, 1.30167517], [1516949940000, 0.06943249, 0.06943249, 0.06943249, 0.06943249, 0.35934803], [1516950000000, 0.069669, 0.069669, 0.069669, 0.069669, 0.30036], [1516950060000, 0.069669, 0.069669, 0.06966898, 0.069669, 1.31301281], [1516950120000, 0.069669, 0.069669, 0.06966898, 0.06966898, 3.98576909], [1516950180000, 0.06966898, 0.06966898, 0.06943249, 0.06943249, 0.38822233], [1516950240000, 0.069669, 0.069669, 0.069669, 0.069669, 0.0304296], [1516950300000, 0.06966896, 0.06966896, 0.06966896, 0.06966896, 0.13448124], [1516950420000, 0.06966896, 0.06966896, 0.06943249, 0.06943249, 0.08624122], [1516950480000, 0.06966897, 0.069669, 0.06966897, 0.069669, 1.29192607], [1516950540000, 0.069669, 0.069669, 0.069669, 0.069669, 0.01642295], [1516950600000, 0.069669, 0.069669, 0.0694325, 0.0694325, 0.48176515], [1516950780000, 0.069669, 0.069669, 0.06945, 0.06945, 0.76709787], [1516950840000, 0.069669, 0.069669, 0.06945, 0.06945, 0.41425892], [1516950900000, 0.069669, 0.069669, 0.06945, 0.06945, 0.15153628], [1516950960000, 0.06945, 0.06945, 0.06945, 0.06945, 0.02840326], [1516951020000, 0.06945, 0.06945, 0.06945, 0.06945, 0.06243927], [1516951080000, 0.06945, 0.06956, 0.06936159, 0.06936159, 5.01349355], [1516951140000, 0.06932, 0.06932, 0.06925075, 0.06925075, 3.74122754], [1516951200000, 0.06956, 0.06956, 0.06918018, 0.06918018, 7.16066457], [1516951260000, 0.0691819, 0.0691819, 0.06911279, 0.06911279, 6.00000191], [1516951320000, 0.06919022, 0.06966899, 0.06919022, 0.06966899, 0.40866825], [1516951380000, 0.06966722, 0.06966722, 0.0696612, 0.0696612, 0.78498841], [1516951440000, 0.06966008, 0.06966008, 0.06966008, 0.06966008, 0.06998972], [1516951500000, 0.06961787, 0.06961787, 0.06961787, 0.06961787, 0.91413872], [1516951560000, 0.06965382, 0.06966899, 0.06965382, 0.06966899, 0.6809682], [1516951620000, 0.06966899, 0.06966899, 0.06966899, 0.06966899, 2.48170931], [1516951860000, 0.06965642, 0.06965642, 0.06965642, 0.06965642, 0.05108557], [1516951920000, 0.06962304, 0.06962304, 0.06920045, 0.06920045, 0.49105048], [1516951980000, 0.06920045, 0.06920045, 0.06920045, 0.06920045, 10.74837808], [1516952040000, 0.06920045, 0.06920045, 0.06920045, 0.06920045, 0.00040944], [1516952100000, 0.06920045, 0.06965226, 0.06920001, 0.06965226, 1.03241953], [1516952160000, 0.06931796, 0.06931796, 0.06931796, 0.06931796, 0.8], [1516952220000, 0.06965226, 0.06965226, 0.06922364, 0.06922364, 0.4799432], [1516952280000, 0.06965226, 0.06965226, 0.06965225, 0.06965225, 0.05833036], [1516952340000, 0.06965225, 0.06965226, 0.06937596, 0.06937596, 14.24916757], [1516952400000, 0.06920044, 0.06965226, 0.06920001, 0.06965226, 5.57428108], [1516952460000, 0.06965226, 0.06965226, 0.06965226, 0.06965226, 0.01758737], [1516952520000, 0.06965226, 0.06965226, 0.06965226, 0.06965226, 0.04941364], [1516952580000, 0.06965226, 0.069669, 0.06965226, 0.069669, 53.57915183], [1516952640000, 0.069669, 0.069669, 0.069669, 0.069669, 0.08656561], [1516952700000, 0.069669, 0.069669, 0.069669, 0.069669, 0.28707172], [1516952760000, 0.06957477, 0.06957477, 0.06957477, 0.06957477, 0.06620215], [1516952820000, 0.06951981, 0.06957507, 0.06923435, 0.06957507, 2.94795888], [1516952880000, 0.06948114, 0.06957507, 0.06948114, 0.06957507, 0.25224404], [1516952940000, 0.06957507, 0.06957507, 0.06957507, 0.06957507, 0.05671708], [1516953120000, 0.06938177, 0.06938177, 0.06938177, 0.06938177, 0.41132257], [1516953180000, 0.06957507, 0.06957507, 0.06957507, 0.06957507, 0.04620211], [1516953240000, 0.06957507, 0.069669, 0.06957507, 0.069669, 14.97910442], [1516953300000, 0.06984907, 0.06990973, 0.06979734, 0.06990973, 3.36165652], [1516953360000, 0.06980982, 0.06980982, 0.06980982, 0.06980982, 0.05379498], [1516953480000, 0.06987153, 0.0699, 0.06987153, 0.0699, 0.02752513], [1516953540000, 0.06989129, 0.07, 0.06989129, 0.07, 0.72037332], [1516953600000, 0.07, 0.07036873, 0.06990361, 0.07036873, 7.54741015], [1516953660000, 0.07014024, 0.07036873, 0.07014024, 0.07036873, 4.98450274], [1516953720000, 0.07001688, 0.07001688, 0.0700029, 0.07001688, 2.16376996], [1516953780000, 0.07001688, 0.07001688, 0.06985362, 0.06985362, 7.51328001], [1516953840000, 0.07019003, 0.07019003, 0.07019003, 0.07019003, 0.07188081], [1516953900000, 0.07032062, 0.07048266, 0.07028609, 0.07039954, 14.55886646], [1516953960000, 0.07050856, 0.0705188, 0.07031785, 0.07051879, 2.07400149], [1516954020000, 0.07058932, 0.07072273, 0.0704885, 0.07072273, 7.68361062], [1516954080000, 0.07061305, 0.0713, 0.07058371, 0.07083546, 48.54374299], [1516954140000, 0.07083546, 0.07101748, 0.07079871, 0.07101748, 0.46915095], [1516954200000, 0.07085501, 0.07133638, 0.07082135, 0.07132468, 3.49377015], [1516954260000, 0.07082268, 0.07126066, 0.07070891, 0.07126066, 12.29431721], [1516954320000, 0.07078001, 0.07125995, 0.07078001, 0.07078001, 0.30781011], [1516954380000, 0.07079, 0.07079937, 0.07061633, 0.07078142, 5.10979498], [1516954440000, 0.07062066, 0.07062066, 0.07062064, 0.07062064, 1.1955235], [1516954500000, 0.07067308, 0.07139812, 0.07062064, 0.07116975, 6.48094878], [1516954560000, 0.071, 0.07115956, 0.071, 0.07115956, 0.14050923], [1516954620000, 0.07062067, 0.07104803, 0.07031903, 0.07104803, 11.39644062], [1516954680000, 0.07104139, 0.07104139, 0.07104139, 0.07104139, 0.47998993], [1516954740000, 0.07069277, 0.07069277, 0.07049395, 0.07049395, 0.27134087], [1516954800000, 0.07103776, 0.07103776, 0.07032917, 0.07101116, 1.76844873], [1516954860000, 0.07094713, 0.07094713, 0.07040894, 0.07040894, 4.14063728], [1516954920000, 0.07094711, 0.0710414, 0.0709471, 0.0710414, 6.08115], [1516954980000, 0.0710414, 0.07150619, 0.07094713, 0.07113935, 31.54990415], [1516955040000, 0.0714999, 0.07192139, 0.0714999, 0.07192139, 43.98379036], [1516955100000, 0.071542, 0.07200008, 0.071542, 0.07171449, 56.12594783], [1516955160000, 0.07173069, 0.07201388, 0.07172564, 0.0717307, 5.42667954], [1516955220000, 0.0717307, 0.07201388, 0.0717307, 0.07173364, 3.20837063], [1516955280000, 0.0717307, 0.07201388, 0.07117369, 0.07138736, 10.90028977], [1516955340000, 0.07157775, 0.07157775, 0.07100712, 0.0711512, 14.03883152], [1516955400000, 0.0713874, 0.0716476, 0.07125907, 0.07127181, 4.13841702], [1516955460000, 0.0716393, 0.07201388, 0.07158991, 0.07201387, 2.97353069], [1516955520000, 0.07159001, 0.07159001, 0.07158991, 0.07158991, 0.31392878], [1516955580000, 0.07187528, 0.07187528, 0.07158991, 0.07158991, 1.49294614], [1516955640000, 0.07158991, 0.07158991, 0.07158991, 0.07158991, 0.03647238], [1516955700000, 0.07185249, 0.07185249, 0.07180247, 0.07180247, 1.67011876], [1516955760000, 0.07180239, 0.07180239, 0.07123197, 0.07123197, 0.31131011], [1516955820000, 0.07158992, 0.07158992, 0.07158992, 0.07158992, 0.53735917], [1516955880000, 0.07158992, 0.07158992, 0.0711608, 0.0711608, 0.85027731], [1516955940000, 0.0711608, 0.07123357, 0.07086602, 0.07123357, 11.15162087], [1516956000000, 0.07123357, 0.07135892, 0.07123357, 0.07129458, 6.88468937], [1516956120000, 0.07131159, 0.07131159, 0.07131159, 0.07131159, 0.10801259], [1516956180000, 0.07131159, 0.07135899, 0.07131159, 0.07131159, 0.71253271], [1516956240000, 0.07131159, 0.07131159, 0.07069004, 0.07131159, 7.64010449], [1516956300000, 0.07087201, 0.07131159, 0.07087201, 0.07131159, 0.42450313], [1516956420000, 0.07071109, 0.07119783, 0.07071109, 0.07119783, 0.13183365], [1516956480000, 0.07115966, 0.07115966, 0.07050002, 0.07105158, 13.07263215], [1516956540000, 0.07108287, 0.07130651, 0.07108287, 0.07129524, 8.22842371], [1516956600000, 0.07128142, 0.0713068, 0.07088337, 0.07088337, 6.38559836], [1516956660000, 0.07125653, 0.07131158, 0.07105158, 0.07131158, 0.14954385], [1516956780000, 0.07105158, 0.07125652, 0.07069, 0.07125652, 3.01721526], [1516956900000, 0.07073633, 0.07128474, 0.07073633, 0.07128474, 0.38662625], [1516956960000, 0.0709, 0.07128473, 0.0709, 0.07090137, 0.23626336], [1516957020000, 0.07090137, 0.07090137, 0.07090137, 0.07090137, 0.53774021], [1516957080000, 0.0707789, 0.07078689, 0.07075437, 0.07075437, 1.07529805], [1516957140000, 0.07124773, 0.07124773, 0.07072671, 0.07072671, 0.57492542], [1516957200000, 0.07058001, 0.07100137, 0.07058001, 0.07100137, 1.0725233], [1516957260000, 0.07068307, 0.07100137, 0.07068307, 0.07100137, 5.20053217], [1516957320000, 0.07100137, 0.071222, 0.07080014, 0.07080014, 1.26176013], [1516957380000, 0.07122199, 0.07122199, 0.07122199, 0.07122199, 0.04212182], [1516957500000, 0.07122199, 0.07128474, 0.07122199, 0.07128474, 3.76710237], [1516957560000, 0.07128474, 0.07131158, 0.07113299, 0.07131158, 1.07508892], [1516957620000, 0.07158852, 0.07164616, 0.07156218, 0.07164616, 1.82126128], [1516957680000, 0.07130633, 0.07149043, 0.07130633, 0.07130633, 3.27810002], [1516957740000, 0.07147631, 0.07152697, 0.07077362, 0.07146998, 12.13403163], [1516957800000, 0.0711, 0.0711, 0.0711, 0.0711, 0.02], [1516957860000, 0.07156833, 0.07156833, 0.07156833, 0.07156833, 2.13814957], [1516957980000, 0.07108253, 0.07146944, 0.07108253, 0.07146944, 0.89281843], [1516958040000, 0.07108251, 0.07108251, 0.07108251, 0.07108251, 1.0511], [1516958100000, 0.0710825, 0.07141363, 0.0710825, 0.07141363, 0.58927233], [1516958160000, 0.07135874, 0.07135874, 0.07135874, 0.07135874, 0.18732088], [1516958220000, 0.07146944, 0.07149783, 0.07135874, 0.07135874, 0.08225156], [1516958340000, 0.07135873, 0.07135874, 0.07135873, 0.07135874, 1.58235796], [1516958400000, 0.07135874, 0.07153644, 0.07135873, 0.07153644, 0.32185541], [1516958460000, 0.07146944, 0.07153644, 0.07146944, 0.07153644, 5.83403426], [1516958520000, 0.07153644, 0.0716191, 0.07114652, 0.0716191, 3.42091446], [1516958580000, 0.07156833, 0.07156833, 0.07156833, 0.07156833, 1.41634079], [1516958700000, 0.07156831, 0.07156833, 0.07118798, 0.07156833, 6.62501281], [1516958760000, 0.07156833, 0.07156833, 0.07156831, 0.07156831, 0.63418672], [1516958820000, 0.07156831, 0.07156833, 0.07156831, 0.07156833, 0.85910032], [1516958880000, 0.07156831, 0.07156833, 0.07156831, 0.07156831, 0.61323774], [1516958940000, 0.07156831, 0.07156831, 0.07111234, 0.07111234, 0.41050283], [1516959000000, 0.07152053, 0.07156833, 0.07111342, 0.07156833, 2.13911104], [1516959060000, 0.0715, 0.0715, 0.0715, 0.0715, 0.01026658], [1516959120000, 0.07120709, 0.07120709, 0.07120516, 0.07120516, 6.21027614], [1516959180000, 0.07123085, 0.0715, 0.07123085, 0.0715, 18.91536751], [1516959240000, 0.0715, 0.0715, 0.0715, 0.0715, 0.34348288], [1516959300000, 0.0715, 0.07201383, 0.0715, 0.07201383, 1.68885915], [1516959360000, 0.07150002, 0.07150002, 0.0715, 0.0715, 3.00006616], [1516959420000, 0.07181096, 0.071861, 0.0715, 0.071861, 0.24297576], [1516959480000, 0.0718, 0.07201384, 0.0715, 0.07189815, 24.92383182], [1516959540000, 0.07189815, 0.07191914, 0.07189222, 0.07189222, 0.15385983], [1516959600000, 0.07189222, 0.07189222, 0.0715, 0.0715, 6.78003005], [1516959660000, 0.07182662, 0.07182662, 0.0715, 0.07177099, 12.56051706], [1516959720000, 0.07173961, 0.07173961, 0.07119785, 0.07119785, 1.78501476], [1516959780000, 0.07138091, 0.07155117, 0.07123213, 0.07155117, 3.80636479], [1516959840000, 0.07173961, 0.07173961, 0.07173961, 0.07173961, 0.0418179], [1516959900000, 0.07172411, 0.07192858, 0.0717, 0.07170359, 6.13162361], [1516959960000, 0.07182223, 0.07182223, 0.0712903, 0.07160359, 1.79114006], [1516960020000, 0.07160359, 0.07160359, 0.07153199, 0.07160359, 9.49999129], [1516960080000, 0.07158197, 0.07160359, 0.07153199, 0.07153199, 17.97686277], [1516960140000, 0.07153199, 0.07158256, 0.07126928, 0.07126928, 0.27907949], [1516960200000, 0.07140359, 0.07140359, 0.07140359, 0.07140359, 0.99782718], [1516960260000, 0.07146655, 0.07146655, 0.07126928, 0.07126928, 0.59586497], [1516960320000, 0.07126928, 0.07146123, 0.07126928, 0.07146123, 0.41336982], [1516960380000, 0.07146123, 0.07158256, 0.07102769, 0.07103948, 5.08871264], [1516960440000, 0.07096492, 0.0710253, 0.07096492, 0.0710253, 5.47665507], [1516960500000, 0.07096492, 0.07096492, 0.07089403, 0.07089403, 6.00000191], [1516960560000, 0.07101663, 0.07101663, 0.07091943, 0.07101663, 1.27248341], [1516960620000, 0.07091943, 0.07133871, 0.07091943, 0.07101663, 2.29613771], [1516960680000, 0.07091943, 0.07131363, 0.07091943, 0.07131363, 0.48456331], [1516960740000, 0.07131363, 0.07131363, 0.07131363, 0.07131363, 0.04502189], [1516960800000, 0.07131363, 0.07131363, 0.07092471, 0.07131363, 8.32584686], [1516960860000, 0.07131363, 0.07131363, 0.07095168, 0.07131362, 1.70619725], [1516960920000, 0.07131363, 0.07131363, 0.07099827, 0.07131363, 0.29644361], [1516960980000, 0.07131363, 0.07131363, 0.07131363, 0.07131363, 0.2490329], [1516961040000, 0.07131363, 0.07131363, 0.07131363, 0.07131363, 0.04639153], [1516961100000, 0.07131363, 0.07131363, 0.07095265, 0.07131363, 0.04784708], [1516961160000, 0.07131363, 0.07131363, 0.07131363, 0.07131363, 0.58133156], [1516961220000, 0.07095029, 0.07131363, 0.07095029, 0.0709503, 0.23781902], [1516961280000, 0.07131363, 0.07131363, 0.07095028, 0.07131363, 4.34794657], [1516961340000, 0.07131363, 0.07131363, 0.07131363, 0.07131363, 0.01629553], [1516961400000, 0.07095813, 0.07131363, 0.07095813, 0.07131363, 4.09171516], [1516961520000, 0.0710176, 0.07131363, 0.07101756, 0.07101756, 4.13834766], [1516961580000, 0.07100266, 0.07100266, 0.07100266, 0.07100266, 0.01433762], [1516961640000, 0.07100266, 0.07131363, 0.07100266, 0.07131363, 1.31904394], [1516961700000, 0.07131363, 0.07134618, 0.07101756, 0.07134618, 6.7113344], [1516961760000, 0.07134618, 0.07145213, 0.07134618, 0.07145213, 1.95562367], [1516961820000, 0.07145213, 0.07158256, 0.07145213, 0.07158256, 1.6634809], [1516961880000, 0.07158256, 0.07158256, 0.07101352, 0.07105504, 8.92793533], [1516961940000, 0.0713, 0.0713, 0.07105652, 0.0713, 3.10321263], [1516962000000, 0.07158254, 0.07158254, 0.07158254, 0.07158254, 0.13972041], [1516962060000, 0.0713, 0.0713, 0.0713, 0.0713, 2.02256136], [1516962240000, 0.07156926, 0.07156926, 0.07156926, 0.07156926, 0.04248403], [1516962300000, 0.0713, 0.0713, 0.0710975, 0.07110847, 1.22340953], [1516962360000, 0.0710431, 0.0711128, 0.0710431, 0.0711128, 1.67640243], [1516962420000, 0.07111281, 0.0713, 0.07111281, 0.0713, 0.251813], [1516962480000, 0.0713, 0.0713, 0.0713, 0.0713, 0.48449233], [1516962540000, 0.0715524, 0.07158256, 0.07116063, 0.07116063, 4.63891832], [1516962600000, 0.07116495, 0.07158256, 0.07116495, 0.0711833, 2.26346121], [1516962660000, 0.07158255, 0.07158256, 0.07158255, 0.07158256, 4.21419213], [1516962720000, 0.07156147, 0.07156147, 0.07156147, 0.07156147, 0.09405043], [1516962840000, 0.07153075, 0.07153075, 0.0712, 0.0712, 0.38710186], [1516962900000, 0.0712, 0.07145624, 0.0712, 0.07145624, 1.16729514], [1516962960000, 0.0712, 0.07145334, 0.0712, 0.07145334, 0.17762455], [1516963020000, 0.07120001, 0.07146481, 0.07120001, 0.07146481, 1.04365751], [1516963080000, 0.07120001, 0.07144813, 0.07120001, 0.07120002, 0.13045122], [1516963140000, 0.07144812, 0.07144812, 0.07120002, 0.07120002, 1.05094537], [1516963200000, 0.07139146, 0.07139146, 0.0712, 0.0712, 1.0379837], [1516963260000, 0.0712, 0.07137834, 0.0712, 0.07137834, 0.31927451], [1516963320000, 0.0712, 0.07137834, 0.0712, 0.0712, 1.5781354], [1516963380000, 0.0712, 0.0712, 0.0712, 0.0712, 0.87782206], [1516963440000, 0.0712, 0.0712, 0.07115544, 0.07115544, 7.37638848], [1516963500000, 0.07115544, 0.07115544, 0.0709425, 0.0709425, 0.28248473], [1516963620000, 0.07095809, 0.0712, 0.0709425, 0.0709425, 0.99630631], [1516963740000, 0.0710425, 0.0712, 0.07095037, 0.07095037, 3.23277715], [1516963800000, 0.0712, 0.07140909, 0.070966, 0.07140909, 0.9241989], [1516963860000, 0.07094306, 0.07094306, 0.07094306, 0.07094306, 0.25392449], [1516964040000, 0.071, 0.0712, 0.0709425, 0.0709425, 0.50823804], [1516964100000, 0.0712, 0.07127049, 0.07082941, 0.07082941, 3.12374051], [1516964160000, 0.07126468, 0.07126468, 0.07126468, 0.07126468, 0.01049784], [1516964280000, 0.07082402, 0.07082402, 0.07082402, 0.07082402, 1.3], [1516964340000, 0.07126, 0.07137219, 0.07090776, 0.07090776, 9.35678287], [1516964400000, 0.070937, 0.07137217, 0.070937, 0.07095239, 0.8861993], [1516964460000, 0.0710731, 0.0710731, 0.0710731, 0.0710731, 0.16483092], [1516964520000, 0.0710731, 0.0710731, 0.07088906, 0.07088906, 2.06671494], [1516964580000, 0.0710731, 0.0710731, 0.0710731, 0.0710731, 2.49385549], [1516964640000, 0.0710731, 0.0710731, 0.07090268, 0.0710731, 7.10985687], [1516964700000, 0.0710731, 0.0710731, 0.0710731, 0.0710731, 1.64492823], [1516964760000, 0.07090908, 0.0710731, 0.07090908, 0.07107308, 0.27245599], [1516964820000, 0.0710731, 0.0710731, 0.0708045, 0.0710731, 0.11647931], [1516964880000, 0.07097558, 0.0710731, 0.07095307, 0.0710731, 0.53964541], [1516964940000, 0.0710731, 0.0710731, 0.0710731, 0.0710731, 0.26616808], [1516965000000, 0.0710731, 0.07137218, 0.0710731, 0.07137218, 0.58749534], [1516965060000, 0.0710731, 0.0710731, 0.07079814, 0.07079814, 0.44965787], [1516965120000, 0.0710731, 0.0710731, 0.0710731, 0.0710731, 0.47378755], [1516965180000, 0.07083128, 0.07083128, 0.07083128, 0.07083128, 0.77798234], [1516965240000, 0.07083128, 0.07103128, 0.07083128, 0.07083128, 1.29736891], [1516965300000, 0.07103128, 0.07137219, 0.07103128, 0.07137219, 3.45301003], [1516965360000, 0.07103129, 0.07103129, 0.07103128, 0.07103128, 0.96397128], [1516965420000, 0.07103128, 0.07103128, 0.07103128, 0.07103128, 0.52706046], [1516965480000, 0.07103128, 0.07103128, 0.07103128, 0.07103128, 0.06], [1516965540000, 0.07103128, 0.07103128, 0.07103128, 0.07103128, 0.02621957], [1516965600000, 0.07137219, 0.07137219, 0.07103128, 0.07103128, 0.65753577], [1516965720000, 0.07103128, 0.07103128, 0.07103128, 0.07103128, 0.31673084], [1516965780000, 0.0713716, 0.0713716, 0.0713716, 0.0713716, 0.08013407], [1516965840000, 0.07103128, 0.07103128, 0.07088468, 0.07088468, 11.20101866], [1516965900000, 0.07088468, 0.0712496, 0.07085936, 0.07085936, 0.72078199], [1516966020000, 0.07081975, 0.07081975, 0.07081975, 0.07081975, 0.39], [1516966140000, 0.07127884, 0.07127884, 0.07086968, 0.07086968, 0.31344971], [1516966200000, 0.07086459, 0.07129291, 0.07086459, 0.07090836, 1.30203896], [1516966320000, 0.07079814, 0.07131967, 0.070767, 0.07131967, 0.02433742], [1516966380000, 0.07090238, 0.07131967, 0.07090238, 0.07131967, 0.05008087], [1516966440000, 0.07083104, 0.07131967, 0.07083104, 0.07131967, 0.90050957], [1516966500000, 0.07083304, 0.07131967, 0.07083304, 0.07131967, 0.22430737], [1516966560000, 0.070767, 0.070767, 0.070767, 0.070767, 0.02715311], [1516966740000, 0.07077092, 0.07077092, 0.07077092, 0.07077092, 0.2], [1516966800000, 0.0708287, 0.07125922, 0.0708287, 0.07125922, 1.561331], [1516967040000, 0.07123986, 0.07123987, 0.07123986, 0.07123987, 0.03309437], [1516967100000, 0.07123987, 0.07123987, 0.07123987, 0.07123987, 0.90299], [1516967160000, 0.071, 0.07123987, 0.071, 0.07123987, 3.41036755], [1516967280000, 0.07123987, 0.07123987, 0.07123987, 0.07123987, 0.02080909], [1516967340000, 0.0712, 0.07120001, 0.0712, 0.0712, 10.47668059], [1516967400000, 0.0712, 0.0712, 0.0712, 0.0712, 4.22276923], [1516967460000, 0.0712, 0.0712, 0.0712, 0.0712, 10.96070003], [1516967520000, 0.0712, 0.0712, 0.0712, 0.0712, 0.94317097], [1516967580000, 0.0712, 0.0712, 0.0712, 0.0712, 0.46599063], [1516967640000, 0.07116013, 0.0712, 0.07105752, 0.07105752, 2.39199752], [1516967700000, 0.0712, 0.0712, 0.071, 0.071, 0.36005978], [1516967820000, 0.071, 0.0712, 0.071, 0.0712, 0.28864397], [1516967880000, 0.071, 0.071, 0.07089294, 0.07089294, 2.1271615], [1516967940000, 0.0712, 0.0712, 0.0712, 0.0712, 0.10021268], [1516968000000, 0.07109999, 0.07137219, 0.07109999, 0.07131682, 3.74510646], [1516968060000, 0.0712, 0.0712, 0.0712, 0.0712, 0.0309691], [1516968120000, 0.0712, 0.0712, 0.0712, 0.0712, 0.0309691], [1516968180000, 0.07137219, 0.07137219, 0.0712, 0.0712, 0.06978723], [1516968360000, 0.07086856, 0.07086856, 0.07085745, 0.07085745, 0.12935526], [1516968420000, 0.07126512, 0.07126512, 0.07126512, 0.07126512, 0.02795873], [1516968660000, 0.07104719, 0.07104719, 0.07104719, 0.07104719, 0.02822406], [1516968840000, 0.07126512, 0.07126512, 0.07126512, 0.07126512, 0.01631179], [1516968900000, 0.07126512, 0.07134301, 0.07090035, 0.07093362, 0.30026228], [1516968960000, 0.07137133, 0.07137133, 0.07137133, 0.07137133, 1.17999305], [1516969020000, 0.07136623, 0.07136623, 0.07083015, 0.07083015, 0.27299245], [1516969080000, 0.07132628, 0.07132628, 0.07110665, 0.07110665, 0.15285375], [1516969200000, 0.07110665, 0.07110665, 0.07110665, 0.07110665, 0.33014474], [1516969320000, 0.07110665, 0.0713189, 0.07110665, 0.0713189, 7.13010682], [1516969380000, 0.07130334, 0.07130334, 0.07130334, 0.07130334, 0.02169907], [1516969500000, 0.07130209, 0.07130209, 0.07129832, 0.07129867, 4.120485], [1516969560000, 0.07087451, 0.07087451, 0.07087451, 0.07087451, 0.03187815], [1516969680000, 0.07126233, 0.07126924, 0.07126233, 0.07126924, 13.99622053], [1516969740000, 0.07087886, 0.07087886, 0.07087885, 0.07087885, 2.07133404], [1516969800000, 0.07126924, 0.0713189, 0.07090317, 0.07091862, 0.95462559], [1516969860000, 0.070998, 0.070998, 0.07087824, 0.070998, 4.07474068], [1516969920000, 0.070998, 0.070998, 0.070998, 0.070998, 0.03110853], [1516969980000, 0.070998, 0.070998, 0.070998, 0.070998, 0.57900894], [1516970040000, 0.070998, 0.070998, 0.07088502, 0.07088502, 13.42462625], [1516970100000, 0.07086518, 0.07086518, 0.07081867, 0.07086518, 0.3967344], [1516970160000, 0.07086518, 0.07086518, 0.07086498, 0.07086498, 1.58678058], [1516970220000, 0.07086498, 0.07127915, 0.07086498, 0.07126936, 10.95336183], [1516970280000, 0.07085964, 0.07126936, 0.07085964, 0.07126936, 2.46270857], [1516970340000, 0.07132266, 0.07132266, 0.07132266, 0.07132266, 1.88376734], [1516970400000, 0.07132266, 0.07132266, 0.07132266, 0.07132266, 1.31704329], [1516970580000, 0.071, 0.07130571, 0.071, 0.07130571, 1.34176888], [1516970640000, 0.07128397, 0.07128397, 0.07128397, 0.07128397, 0.07359453], [1516970700000, 0.07128397, 0.07132738, 0.07128397, 0.07131657, 0.73368271], [1516970760000, 0.07130737, 0.07130737, 0.07092475, 0.07130153, 1.9228793], [1516970820000, 0.07125874, 0.07125874, 0.07125874, 0.07125874, 0.41994849], [1516970940000, 0.07092475, 0.07092475, 0.07082462, 0.07082462, 5.56], [1516971000000, 0.07082462, 0.07127605, 0.07082462, 0.07122395, 1.21777259], [1516971060000, 0.07122395, 0.07164169, 0.07083903, 0.07128913, 9.07304319], [1516971240000, 0.07092221, 0.07092221, 0.07083051, 0.07083051, 3.77939349], [1516971300000, 0.07082462, 0.07122335, 0.0708179, 0.07122334, 3.84870476], [1516971360000, 0.07122334, 0.07122334, 0.07122334, 0.07122334, 0.17733041], [1516971420000, 0.07081883, 0.07081883, 0.07081883, 0.07081883, 1.42558849], [1516971480000, 0.07102062, 0.07102062, 0.07102061, 0.07102061, 0.05021155], [1516971540000, 0.0708179, 0.07122334, 0.0708179, 0.07122334, 1.62816827], [1516971600000, 0.07102061, 0.0712232, 0.07102061, 0.0712232, 0.46845015], [1516971660000, 0.07122323, 0.07122323, 0.07102061, 0.07102061, 0.98420213], [1516971780000, 0.07122106, 0.07122106, 0.07081804, 0.07081804, 0.46010759], [1516971900000, 0.0708179, 0.07122323, 0.07081062, 0.07122322, 9.03359496], [1516971960000, 0.07080118, 0.07080118, 0.07080118, 0.07080118, 0.94165444], [1516972020000, 0.07080589, 0.07080589, 0.07080589, 0.07080589, 3.50482536], [1516972080000, 0.07079225, 0.07121745, 0.07079225, 0.07121745, 0.39568537], [1516972200000, 0.07121744, 0.07122323, 0.07121744, 0.07122323, 0.31493224], [1516972260000, 0.07122322, 0.07122322, 0.07080706, 0.0708137, 0.96383599], [1516972320000, 0.0708137, 0.07081504, 0.07080706, 0.07081504, 5.95969415], [1516972380000, 0.07122322, 0.07122323, 0.07122322, 0.07122323, 0.13110326], [1516972440000, 0.07122323, 0.07122323, 0.07081675, 0.07081874, 1.443509], [1516972500000, 0.07122323, 0.07122323, 0.07122323, 0.07122323, 0.14040368], [1516972560000, 0.07122323, 0.07127545, 0.07122323, 0.07127041, 2.51972446], [1516972620000, 0.07127041, 0.07127041, 0.07127041, 0.07127041, 0.0530511], [1516972680000, 0.07081874, 0.07084119, 0.07080707, 0.07084119, 0.22604931], [1516972740000, 0.07127041, 0.07127041, 0.07080706, 0.07080707, 15.42086814], [1516972800000, 0.07080707, 0.07121491, 0.07080707, 0.07121491, 1.73022551], [1516972860000, 0.07082487, 0.0712704, 0.07082487, 0.07127039, 0.84417315], [1516972920000, 0.07082121, 0.07082121, 0.07082121, 0.07082121, 2.31999775], [1516972980000, 0.07127039, 0.0712704, 0.07127039, 0.0712704, 2.8176312], [1516973040000, 0.0712704, 0.0712704, 0.0712704, 0.0712704, 0.24378752], [1516973100000, 0.07127039, 0.07127039, 0.07125044, 0.07125044, 1.04491067], [1516973160000, 0.07087253, 0.0712704, 0.07087253, 0.0712704, 2.95430468], [1516973220000, 0.0712704, 0.0712704, 0.0712704, 0.0712704, 0.5564], [1516973280000, 0.0712704, 0.0712704, 0.0712704, 0.0712704, 0.2912779], [1516973340000, 0.07082646, 0.0712704, 0.07082646, 0.0712704, 4.88452288], [1516973400000, 0.0712704, 0.0712704, 0.0712704, 0.0712704, 0.2806214], [1516973460000, 0.07124769, 0.0712704, 0.07124769, 0.0712704, 0.10249629], [1516973520000, 0.07082403, 0.07082403, 0.07082403, 0.07082403, 7.0], [1516973580000, 0.0712704, 0.0712704, 0.07127032, 0.07127032, 1.21045567], [1516973640000, 0.07125992, 0.07125992, 0.07125992, 0.07125992, 0.1397], [1516973700000, 0.07089368, 0.07125992, 0.07089368, 0.07090256, 6.07001564], [1516973760000, 0.07125992, 0.07125992, 0.07125992, 0.07125992, 0.00795051], [1516973880000, 0.07107228, 0.07107228, 0.07107228, 0.07107228, 0.15975308], [1516973940000, 0.07107228, 0.07107228, 0.07107228, 0.07107228, 0.04935189], [1516974000000, 0.07107228, 0.0713497, 0.07107046, 0.0713497, 17.71735552], [1516974060000, 0.070909, 0.070909, 0.0708814, 0.0708814, 4.9566377], [1516974120000, 0.07088924, 0.07088924, 0.07088924, 0.07088924, 0.0474], [1516974180000, 0.07082172, 0.07082172, 0.07082172, 0.07082172, 0.60339165], [1516974240000, 0.0708555, 0.0708555, 0.0708555, 0.0708555, 0.10987654], [1516974300000, 0.0708555, 0.07126038, 0.0708555, 0.07126038, 0.30014336], [1516974360000, 0.07126162, 0.07126177, 0.07126162, 0.0712617, 10.2787358], [1516974420000, 0.07122607, 0.07126175, 0.07122607, 0.07126175, 0.0747187], [1516974480000, 0.07122605, 0.07122605, 0.07122605, 0.07122605, 0.10420931], [1516974600000, 0.07122603, 0.07122603, 0.07122601, 0.07122601, 0.25168216], [1516974720000, 0.0712259, 0.07122605, 0.0712259, 0.07122605, 6.934048], [1516974780000, 0.07122605, 0.07122605, 0.07122605, 0.07122605, 1.17170051], [1516974840000, 0.07122605, 0.07122605, 0.07091991, 0.07091991, 2.39927775], [1516974960000, 0.07122605, 0.07122605, 0.07107915, 0.07107915, 0.88774958], [1516975020000, 0.07122605, 0.07122605, 0.07122605, 0.07122605, 0.15134255], [1516975080000, 0.07107915, 0.07107915, 0.07100002, 0.07100002, 0.06], [1516975200000, 0.07122605, 0.07122605, 0.07100002, 0.07100002, 1.3071867], [1516975260000, 0.07138741, 0.07138741, 0.0712, 0.0712, 0.15400997], [1516975320000, 0.0712, 0.0712, 0.0712, 0.0712, 0.0667666], [1516975380000, 0.0712, 0.0712, 0.0712, 0.0712, 0.0309691], [1516975440000, 0.0712222, 0.0712222, 0.0712222, 0.0712222, 0.08608333], [1516975500000, 0.0713, 0.0714318, 0.07089999, 0.07089999, 0.46801722], [1516975560000, 0.0712, 0.07141365, 0.07098977, 0.07098977, 10.01], [1516975620000, 0.0709, 0.0709, 0.0709, 0.0709, 0.01006882], [1516975680000, 0.07098977, 0.07098977, 0.07097682, 0.07097682, 2.45452447], [1516975740000, 0.07097683, 0.07097683, 0.07097683, 0.07097683, 0.05610907], [1516975800000, 0.07097683, 0.07135045, 0.07097683, 0.07135045, 0.07411007], [1516975860000, 0.07089999, 0.07089999, 0.07085468, 0.07085468, 6.36555761], [1516975920000, 0.07115044, 0.07115044, 0.07083, 0.07083, 1.74086031], [1516975980000, 0.07091929, 0.07091929, 0.07091929, 0.07091929, 0.00810236], [1516976100000, 0.07115044, 0.07115044, 0.07115044, 0.07115044, 0.01449739], [1516976160000, 0.07115043, 0.07115043, 0.07115043, 0.07115043, 0.05215697], [1516976220000, 0.07115043, 0.07115043, 0.0711504, 0.0711504, 0.03109665], [1516976280000, 0.0711504, 0.0711504, 0.0711504, 0.0711504, 0.05217764], [1516976340000, 0.07115039, 0.07115039, 0.07115039, 0.07115039, 0.06754714], [1516976400000, 0.07115039, 0.07115039, 0.07115039, 0.07115039, 0.20661422], [1516976460000, 0.07115039, 0.0711504, 0.07115039, 0.0711504, 1.35428403], [1516976520000, 0.0711504, 0.0711504, 0.07091372, 0.07091372, 0.33114028], [1516976580000, 0.0711504, 0.07115044, 0.07094608, 0.07094608, 0.46213584], [1516976700000, 0.07115044, 0.07138278, 0.07095113, 0.07095113, 0.0572411], [1516976760000, 0.07139075, 0.07139076, 0.07138278, 0.07138278, 1.14229821], [1516976820000, 0.0713827, 0.0713827, 0.0713827, 0.0713827, 0.235987], [1516976880000, 0.07137929, 0.0713827, 0.07137929, 0.0713827, 0.16251052], [1516976940000, 0.0713827, 0.0713827, 0.0713827, 0.0713827, 0.0620008], [1516977000000, 0.07138265, 0.07138265, 0.07096469, 0.07096469, 3.87886313], [1516977060000, 0.07094209, 0.07138265, 0.07088075, 0.07115057, 2.00222665], [1516977120000, 0.07088075, 0.07115056, 0.07088075, 0.07115056, 3.60032926], [1516977180000, 0.07115057, 0.07115057, 0.07115057, 0.07115057, 0.03108426], [1516977240000, 0.07115057, 0.07122172, 0.0708504, 0.0708504, 3.9131758], [1516977300000, 0.07086432, 0.07091966, 0.07086432, 0.07091966, 0.96796413], [1516977360000, 0.07091966, 0.07119999, 0.07091966, 0.071, 6.50826832], [1516977420000, 0.071, 0.07119999, 0.07076701, 0.0711, 1.50710041], [1516977480000, 0.0711, 0.0711, 0.07097138, 0.0711, 0.24891318], [1516977540000, 0.0711, 0.0711, 0.0711, 0.0711, 0.14064697], [1516977600000, 0.07093545, 0.07093545, 0.07093545, 0.07093545, 0.12393324], [1516977720000, 0.0711, 0.07119999, 0.0711, 0.07119999, 1.37478645], [1516977780000, 0.07119999, 0.0712, 0.07119999, 0.07119999, 3.09771747], [1516977840000, 0.0712, 0.0712, 0.07119999, 0.07119999, 0.06193842], [1516977900000, 0.07119999, 0.07119999, 0.07119999, 0.07119999, 0.15514534], [1516977960000, 0.07119999, 0.07119999, 0.07085796, 0.07099326, 7.28015102], [1516978020000, 0.0712, 0.0712, 0.07100987, 0.07100987, 0.07521328], [1516978080000, 0.07119992, 0.0712, 0.07096662, 0.07096662, 1.44726586], [1516978140000, 0.07096789, 0.07096789, 0.07096789, 0.07096789, 7.83954752], [1516978200000, 0.0712, 0.0712, 0.07096662, 0.07096662, 0.21138723], [1516978260000, 0.07096662, 0.07096662, 0.07091304, 0.07096662, 0.18172451], [1516978320000, 0.07096662, 0.0712, 0.07096662, 0.0712, 0.66903951], [1516978380000, 0.07092217, 0.07092217, 0.07092217, 0.07092217, 0.01815561], [1516978440000, 0.0712, 0.0712, 0.0712, 0.0712, 2.02861107], [1516978500000, 0.0712, 0.0712, 0.07096662, 0.07096662, 0.35386975], [1516978620000, 0.0712, 0.0712, 0.0712, 0.0712, 0.07776284], [1516978740000, 0.0712, 0.0712, 0.0712, 0.0712, 0.61864718], [1516978800000, 0.07119999, 0.07119999, 0.07119999, 0.07119999, 0.02657384], [1516978860000, 0.0712, 0.0712, 0.07096662, 0.0712, 22.99533407], [1516978920000, 0.0710662, 0.07139077, 0.0708504, 0.0708504, 8.25012189], [1516978980000, 0.07142098, 0.07142098, 0.0709, 0.07098527, 1.99579139], [1516979040000, 0.07138228, 0.07141867, 0.0709, 0.07095621, 7.87181646], [1516979160000, 0.0709065, 0.0709065, 0.0709065, 0.0709065, 0.2], [1516979220000, 0.07095621, 0.0714081, 0.07095621, 0.0714081, 0.03664952], [1516979280000, 0.07095621, 0.0710662, 0.0709, 0.0710662, 1.69132582], [1516979340000, 0.0710662, 0.0710662, 0.0710662, 0.0710662, 0.43009902], [1516979400000, 0.07134, 0.07134, 0.0710662, 0.0710662, 4.48053404], [1516979460000, 0.0710662, 0.0710662, 0.0709, 0.07093688, 0.42899742], [1516979520000, 0.0709, 0.0709, 0.07077279, 0.07077279, 19.95407271], [1516979580000, 0.0710662, 0.0710662, 0.070767, 0.0708176, 2.399415], [1516979640000, 0.0708176, 0.0708176, 0.07079968, 0.07079968, 8.35520478], [1516979700000, 0.0710662, 0.07121832, 0.0710662, 0.07121832, 0.36188187], [1516979760000, 0.07121832, 0.07121832, 0.07121832, 0.07121832, 0.85312503], [1516979880000, 0.0712183, 0.0712183, 0.070867, 0.070867, 0.19665021], [1516979940000, 0.07121832, 0.07121832, 0.070867, 0.07104416, 0.20264789], [1516980000000, 0.0712183, 0.0712183, 0.07104416, 0.07104416, 0.65199388], [1516980060000, 0.07104416, 0.07104416, 0.07104416, 0.07104416, 0.03110346], [1516980120000, 0.07104416, 0.07104416, 0.07104414, 0.07104414, 0.0527765], [1516980180000, 0.07104416, 0.07104416, 0.07104414, 0.07104414, 0.40516744], [1516980240000, 0.07104416, 0.07104416, 0.07104416, 0.07104416, 0.03109169], [1516980300000, 0.07091962, 0.07104416, 0.07091962, 0.07091962, 1.98002378], [1516980360000, 0.07091962, 0.07104416, 0.07091962, 0.07104416, 1.36666622], [1516980420000, 0.07089268, 0.07089268, 0.070867, 0.070867, 2.62626873], [1516980480000, 0.0712183, 0.07133409, 0.070867, 0.07133406, 5.31591969], [1516980600000, 0.07105712, 0.07105712, 0.07105712, 0.07105712, 0.11626741], [1516980660000, 0.07105712, 0.07105712, 0.07105712, 0.07105712, 0.1399], [1516980720000, 0.070867, 0.07105712, 0.070867, 0.07105712, 0.68249676], [1516980780000, 0.07133393, 0.07133393, 0.0709112, 0.0709112, 3.01729012], [1516980900000, 0.07095904, 0.07095904, 0.07095904, 0.07095904, 1.04144704], [1516980960000, 0.07095904, 0.07095904, 0.07095904, 0.07095904, 0.05366407], [1516981020000, 0.07133377, 0.07133377, 0.07095214, 0.07095904, 1.79943267], [1516981080000, 0.07092606, 0.07092606, 0.07086702, 0.07086702, 0.23192027], [1516981140000, 0.07133378, 0.07133378, 0.07133378, 0.07133378, 0.01698424], [1516981200000, 0.07118875, 0.07133379, 0.07118875, 0.07133379, 0.28094346], [1516981260000, 0.07133109, 0.07133166, 0.07133109, 0.07133166, 0.05153718], [1516981320000, 0.07089268, 0.07133412, 0.07086702, 0.071328, 3.47604581], [1516981380000, 0.071328, 0.071328, 0.07094229, 0.07094229, 0.33498688], [1516981440000, 0.07094815, 0.07094815, 0.07094815, 0.07094815, 0.04797492], [1516981620000, 0.071312, 0.071312, 0.071312, 0.071312, 0.05202899], [1516981680000, 0.07116938, 0.07116938, 0.07094815, 0.07094815, 18.7557415], [1516981740000, 0.07096558, 0.071299, 0.07096558, 0.071299, 0.14941339], [1516981800000, 0.071299, 0.071312, 0.071299, 0.071312, 0.098294], [1516981860000, 0.071312, 0.071312, 0.071312, 0.071312, 0.01678539], [1516981980000, 0.071312, 0.071312, 0.07092651, 0.07092651, 0.77971189], [1516982100000, 0.071312, 0.071312, 0.07093343, 0.07100137, 4.41193247], [1516982160000, 0.07096754, 0.07103949, 0.07096754, 0.07103949, 0.22291813], [1516982220000, 0.071312, 0.071312, 0.071067, 0.071067, 0.66511785], [1516982280000, 0.071067, 0.071312, 0.071067, 0.071312, 2.35000172], [1516982400000, 0.071067, 0.071067, 0.07092, 0.07092, 3.96411569], [1516982460000, 0.070867, 0.07106699, 0.07076702, 0.07076702, 4.05765361], [1516982520000, 0.070867, 0.070867, 0.070767, 0.070767, 6.96706779], [1516982580000, 0.070867, 0.070867, 0.070867, 0.070867, 0.0499733], [1516982640000, 0.070867, 0.071067, 0.070867, 0.07087763, 0.92805174], [1516982700000, 0.07087763, 0.071067, 0.070867, 0.070867, 2.29669497], [1516982760000, 0.070867, 0.071067, 0.070867, 0.071067, 1.20626434], [1516982820000, 0.071067, 0.071067, 0.071067, 0.071067, 0.05836675], [1516982880000, 0.071067, 0.071067, 0.0708925, 0.07091731, 5.7548752], [1516982940000, 0.071067, 0.07133412, 0.07076702, 0.07097898, 16.60821893], [1516983000000, 0.0708925, 0.07126031, 0.07082656, 0.07082658, 2.68996188], [1516983060000, 0.07082657, 0.07131728, 0.07082657, 0.07086371, 0.55673923], [1516983120000, 0.07082659, 0.07131728, 0.07082659, 0.0708266, 0.49472873], [1516983180000, 0.07082659, 0.07082659, 0.07082659, 0.07082659, 0.08158288], [1516983300000, 0.0708266, 0.0708266, 0.07082659, 0.07082659, 0.78968077], [1516983360000, 0.07082659, 0.07095688, 0.07082658, 0.07093734, 2.96154972], [1516983420000, 0.07093734, 0.07133371, 0.07093733, 0.07093733, 0.37108919], [1516983480000, 0.0712, 0.0712, 0.07082658, 0.07082658, 0.2795], [1516983540000, 0.0708266, 0.0708266, 0.0708266, 0.0708266, 0.04626437], [1516983600000, 0.07119999, 0.07119999, 0.07119999, 0.07119999, 0.14044943], [1516983660000, 0.0712, 0.0712, 0.07119857, 0.07119857, 0.49893378], [1516983720000, 0.07119857, 0.07119857, 0.07082658, 0.07092229, 14.39725427], [1516983780000, 0.07119858, 0.07119858, 0.07119858, 0.07119858, 0.02247235], [1516983900000, 0.0712, 0.07123697, 0.0712, 0.0712, 1.35485876], [1516983960000, 0.07092228, 0.07119999, 0.07092228, 0.07119999, 0.6123], [1516984020000, 0.07119999, 0.07119999, 0.07119999, 0.07119999, 0.49393448], [1516984140000, 0.07119999, 0.07139999, 0.07119999, 0.07119999, 4.21089003], [1516984200000, 0.07119999, 0.07126969, 0.071, 0.07119999, 1.25264955], [1516984260000, 0.07119999, 0.07132108, 0.07119999, 0.07128438, 0.58914607], [1516984440000, 0.07133412, 0.07133629, 0.071, 0.071, 5.0632818], [1516984500000, 0.071, 0.07129923, 0.071, 0.07129923, 2.57410285], [1516984560000, 0.07129923, 0.07129923, 0.071, 0.071, 1.82792849], [1516984620000, 0.071, 0.071, 0.07092228, 0.071, 3.61683496], [1516984680000, 0.07096114, 0.07096114, 0.07092228, 0.07092228, 0.09620297], [1516984740000, 0.07092229, 0.07092229, 0.07092229, 0.07092229, 0.03656684], [1516984800000, 0.07092229, 0.07092229, 0.07092229, 0.07092229, 0.53160385], [1516984860000, 0.0712672, 0.07130538, 0.0712672, 0.0712672, 1.51926519], [1516984920000, 0.0712672, 0.0712672, 0.0712672, 0.0712672, 0.151252], [1516984980000, 0.0712672, 0.0712672, 0.0712672, 0.0712672, 0.16540737], [1516985040000, 0.07092228, 0.07127976, 0.07082658, 0.07082658, 6.95957902], [1516985100000, 0.07082658, 0.07124451, 0.07082658, 0.07124451, 0.19523144], [1516985220000, 0.07088826, 0.07088826, 0.07082657, 0.07082657, 2.42956677], [1516985280000, 0.07088826, 0.07088826, 0.07088826, 0.07088826, 0.01556626], [1516985340000, 0.07088826, 0.07088826, 0.07082658, 0.07082658, 0.17517704], [1516985400000, 0.07082659, 0.07082659, 0.07082657, 0.07082657, 8.85504726], [1516985460000, 0.07082658, 0.07082658, 0.07082657, 0.07082657, 4.791838], [1516985520000, 0.07082657, 0.07082658, 0.07082657, 0.07082658, 0.04525554], [1516985580000, 0.07082657, 0.07082658, 0.07081734, 0.07082658, 0.16047612], [1516985640000, 0.07082657, 0.07088826, 0.07082657, 0.07088826, 3.42353629], [1516985760000, 0.0708883, 0.0708883, 0.07082658, 0.07082658, 1.28817706], [1516985880000, 0.0712473, 0.0712473, 0.0712473, 0.0712473, 0.80203626], [1516985940000, 0.07124721, 0.07124729, 0.07124721, 0.07124729, 3.16689602], [1516986120000, 0.07124725, 0.07124725, 0.07124725, 0.07124725, 0.01514662], [1516986180000, 0.07124722, 0.07124725, 0.07124722, 0.07124725, 5.88022696], [1516986240000, 0.07124725, 0.07124725, 0.07124725, 0.07124725, 1.18409651], [1516986300000, 0.07124725, 0.07124725, 0.07124725, 0.07124725, 0.29180506], [1516986420000, 0.07124725, 0.07124725, 0.07124725, 0.07124725, 0.08441132], [1516986480000, 0.07085282, 0.07085282, 0.07085282, 0.07085282, 0.09411637], [1516986600000, 0.07124724, 0.07124724, 0.07124724, 0.07124724, 0.14971347], [1516986660000, 0.07085282, 0.07124723, 0.07085282, 0.07124723, 0.16490586], [1516986720000, 0.07124722, 0.07124724, 0.07124722, 0.07124724, 1.09868541], [1516986780000, 0.07124724, 0.07124724, 0.07124724, 0.07124724, 0.00320864], [1516986840000, 0.07124724, 0.07124725, 0.07124724, 0.07124725, 0.14], [1516987020000, 0.07082658, 0.071247, 0.07075583, 0.071247, 8.00000191], [1516987200000, 0.07124699, 0.071247, 0.07124699, 0.071247, 0.16715246], [1516987260000, 0.07122628, 0.07122628, 0.07122628, 0.07122628, 0.1], [1516987380000, 0.07122628, 0.07122628, 0.07122628, 0.07122628, 1.42013987], [1516987440000, 0.07122628, 0.07122628, 0.07122628, 0.07122628, 0.11486081], [1516987500000, 0.07122628, 0.07122628, 0.07122628, 0.07122628, 0.26431144], [1516987560000, 0.07122628, 0.07122628, 0.0707078, 0.07122618, 7.62602984], [1516987620000, 0.07122628, 0.07122628, 0.07122628, 0.07122628, 1.02255013], [1516987740000, 0.07123236, 0.07123236, 0.07123236, 0.07123236, 0.06630535], [1516987800000, 0.07122628, 0.07122628, 0.07122628, 0.07122628, 0.01403976], [1516987860000, 0.0708532, 0.0708532, 0.0708532, 0.0708532, 0.01222907], [1516987920000, 0.07124, 0.07124, 0.07124, 0.07124, 0.0534848], [1516988040000, 0.07121665, 0.07121665, 0.07121665, 0.07121665, 0.05016676], [1516988100000, 0.07124, 0.07124, 0.07124, 0.07124, 0.14037057], [1516988280000, 0.0708532, 0.07121785, 0.07076351, 0.0712061, 0.3667462], [1516988340000, 0.07069977, 0.07069977, 0.07069976, 0.07069976, 0.26324587], [1516988400000, 0.07069976, 0.07069976, 0.07069976, 0.07069976, 0.21609918], [1516988520000, 0.07076845, 0.07076845, 0.07051, 0.07051, 7.0736], [1516988580000, 0.07069976, 0.07069976, 0.07069976, 0.07069976, 0.0211764], [1516988700000, 0.07099998, 0.07099998, 0.07099998, 0.07099998, 0.15713403], [1516988760000, 0.07069976, 0.07069976, 0.07069976, 0.07069976, 0.07910453], [1516988820000, 0.07069976, 0.07069976, 0.07051, 0.07051, 1.61789183], [1516988880000, 0.07090699, 0.07090699, 0.07090699, 0.07090699, 0.06212787], [1516988940000, 0.07051, 0.070907, 0.07051, 0.070907, 0.36431839], [1516989000000, 0.0705154, 0.0705154, 0.0705154, 0.0705154, 0.1407002], [1516989060000, 0.07051, 0.07051, 0.07051, 0.07051, 0.61128712], [1516989120000, 0.07051, 0.07051, 0.07051, 0.07051, 1.50945295], [1516989240000, 0.07085, 0.07094312, 0.07051, 0.07051, 0.47991698], [1516989300000, 0.07051, 0.07051, 0.07051, 0.07051, 0.14122299], [1516989360000, 0.0707, 0.0707, 0.07051, 0.07051, 0.81917572], [1516989480000, 0.07083235, 0.0709635, 0.07051, 0.0709635, 0.16140808], [1516989540000, 0.0709635, 0.0709635, 0.07051, 0.07051, 0.47578342], [1516989600000, 0.07051, 0.07051089, 0.07051, 0.07051089, 0.7051437], [1516989720000, 0.07095217, 0.07095217, 0.07095217, 0.07095217, 0.01658323], [1516989840000, 0.07093889, 0.07093889, 0.07053773, 0.07053773, 4.7613767], [1516989900000, 0.07093888, 0.07093889, 0.07093888, 0.07093889, 0.16904139], [1516990080000, 0.07093888, 0.07093889, 0.07093888, 0.07093888, 1.50219293], [1516990140000, 0.07093888, 0.07093888, 0.07093888, 0.07093888, 0.12641199], [1516990200000, 0.07057805, 0.07099999, 0.07057805, 0.07099999, 5.4800761], [1516990260000, 0.07058624, 0.07058624, 0.07058623, 0.07058623, 1.28642636], [1516990320000, 0.07057805, 0.07057805, 0.07057805, 0.07057805, 0.14134835], [1516990500000, 0.0709389, 0.0709389, 0.07093889, 0.07093889, 1.11938377], [1516990560000, 0.07071563, 0.07071563, 0.07057804, 0.07057804, 1.680491], [1516990620000, 0.07099995, 0.07099995, 0.07099995, 0.07099995, 0.01408443], [1516990740000, 0.0705456, 0.0705456, 0.0705456, 0.0705456, 0.08377853], [1516990800000, 0.07093883, 0.07093884, 0.07093883, 0.07093884, 0.14096657], [1516990860000, 0.07093884, 0.07093884, 0.0709, 0.0709, 0.64790615], [1516990920000, 0.07088, 0.07088, 0.07088, 0.07088, 0.02893844], [1516990980000, 0.0706, 0.0706, 0.0706, 0.0706, 0.47186901], [1516991040000, 0.0706, 0.0706, 0.07055119, 0.070575, 0.38556246], [1516991100000, 0.070575, 0.0706, 0.07054562, 0.0706, 5.99111906], [1516991160000, 0.07059999, 0.0706, 0.07059999, 0.0706, 9.85778698], [1516991220000, 0.0706, 0.0706, 0.0706, 0.0706, 1.65973408], [1516991280000, 0.0706, 0.0706, 0.0706, 0.0706, 0.71627133], [1516991340000, 0.07057018, 0.0706, 0.07057018, 0.07057018, 0.66325773], [1516991400000, 0.0706, 0.0706, 0.07057018, 0.0706, 16.79047691], [1516991460000, 0.0706, 0.0706, 0.0706, 0.0706, 12.21452984], [1516991520000, 0.0706, 0.0706, 0.07058042, 0.07058042, 1.64753135], [1516991580000, 0.07057105, 0.07058042, 0.07057105, 0.07058042, 6.4618555], [1516991640000, 0.07058042, 0.07058042, 0.07058042, 0.07058042, 1.43625697], [1516991700000, 0.07058042, 0.07058042, 0.0705, 0.0705, 7.71005349], [1516991760000, 0.0705, 0.0706, 0.07026784, 0.07047502, 78.51904907], [1516991820000, 0.0706, 0.0706, 0.07046864, 0.0706, 4.77772077], [1516991880000, 0.0706, 0.0706, 0.0706, 0.0706, 2.56133448], [1516991940000, 0.0706, 0.0706, 0.07055534, 0.0706, 0.32326465], [1516992000000, 0.0706, 0.0706, 0.0706, 0.0706, 6.338405], [1516992060000, 0.0706, 0.0706, 0.0706, 0.0706, 0.86706669], [1516992120000, 0.07058042, 0.0706, 0.07058042, 0.0706, 0.52324614], [1516992180000, 0.0706, 0.0706, 0.0706, 0.0706, 0.00762564], [1516992240000, 0.0706, 0.0706, 0.0706, 0.0706, 0.031241], [1516992300000, 0.0706, 0.0706, 0.0706, 0.0706, 0.0156205], [1516992420000, 0.0706, 0.0706, 0.0706, 0.0706, 0.031241], [1516992480000, 0.0706, 0.0706, 0.0706, 0.0706, 1.66648201], [1516992540000, 0.0706, 0.0706, 0.07058042, 0.0706, 0.281241], [1516992600000, 0.0706, 0.0706, 0.0706, 0.0706, 0.031241], [1516992660000, 0.0706, 0.0706, 0.0706, 0.0706, 0.031241], [1516992720000, 0.0706, 0.0706, 0.0706, 0.0706, 1.65964359], [1516992780000, 0.0706, 0.0706, 0.0706, 0.0706, 2.43752342], [1516992840000, 0.0706, 0.0706, 0.0706, 0.0706, 1.30437896], [1516992900000, 0.0706, 0.0706, 0.0706, 0.0706, 3.28076615], [1516992960000, 0.0706, 0.0706, 0.070595, 0.070595, 2.5015123], [1516993080000, 0.070595, 0.070595, 0.070595, 0.070595, 0.1051709], [1516993140000, 0.070595, 0.070595, 0.070595, 0.070595, 0.24427605], [1516993200000, 0.070595, 0.0706, 0.07027693, 0.0706, 10.61296048], [1516993260000, 0.0706, 0.0706, 0.0706, 0.0706, 0.230802], [1516993320000, 0.07059998, 0.07059998, 0.07017639, 0.07017639, 0.23145881], [1516993380000, 0.07027691, 0.07047001, 0.07027691, 0.07027691, 1.98374734], [1516993440000, 0.07040383, 0.07040383, 0.07027691, 0.07040145, 2.2406414], [1516993500000, 0.07040145, 0.07040145, 0.07026002, 0.07026002, 0.60961496], [1516993620000, 0.07039361, 0.07043431, 0.0703936, 0.07043431, 0.32078168], [1516993680000, 0.07040439, 0.07040439, 0.0702936, 0.07040439, 0.76319472], [1516993740000, 0.0702936, 0.0702936, 0.07, 0.07, 0.272875], [1516993800000, 0.07036935, 0.07036935, 0.07036935, 0.07036935, 0.18059326], [1516993860000, 0.07031935, 0.07031935, 0.07031935, 0.07031935, 0.13665512], [1516993920000, 0.07000001, 0.07033828, 0.07, 0.07033828, 1.68392557], [1516993980000, 0.0703194, 0.07033828, 0.0703194, 0.07033828, 0.1403092], [1516994040000, 0.0703194, 0.07033828, 0.0703194, 0.0703194, 0.29417547], [1516994100000, 0.07033827, 0.07033827, 0.0703194, 0.0703194, 0.17538908], [1516994160000, 0.07033827, 0.07033827, 0.07031935, 0.07031935, 0.05584332], [1516994220000, 0.07031935, 0.07033827, 0.07031935, 0.07033827, 0.01713645], [1516994280000, 0.07033826, 0.07033826, 0.07033826, 0.07033826, 0.00829122], [1516994340000, 0.07033825, 0.07033825, 0.07033825, 0.07033825, 0.18752344], [1516994400000, 0.07033824, 0.07033824, 0.07033824, 0.07033824, 0.15046147], [1516994580000, 0.07014533, 0.07014533, 0.07014533, 0.07014533, 0.03116148], [1516994640000, 0.07033821, 0.07033821, 0.07033821, 0.07033821, 0.01], [1516994700000, 0.07032137, 0.07032137, 0.07032137, 0.07032137, 0.14787576], [1516994760000, 0.07031066, 0.07031066, 0.07031066, 0.07031066, 0.077271], [1516994880000, 0.07030407, 0.07030407, 0.07030407, 0.07030407, 0.40526494], [1516994940000, 0.07030407, 0.07030407, 0.07030407, 0.07030407, 0.10707756], [1516995120000, 0.07000001, 0.07000001, 0.07000001, 0.07000001, 0.00865217], [1516995180000, 0.07, 0.07, 0.07, 0.07, 0.12390913], [1516995240000, 0.07, 0.07, 0.07, 0.07, 0.48018814], [1516995300000, 0.07, 0.07, 0.06997126, 0.07, 1.85393121], [1516995360000, 0.07, 0.07, 0.07, 0.07, 0.60195785], [1516995480000, 0.07000013, 0.07000013, 0.07000012, 0.07000012, 0.06698407], [1516995540000, 0.07030402, 0.07030402, 0.07030402, 0.07030402, 1.92023154], [1516995600000, 0.07030402, 0.07030402, 0.07030402, 0.07030402, 0.22073534], [1516995660000, 0.07030402, 0.07030402, 0.07030402, 0.07030402, 0.04285914], [1516995780000, 0.07003016, 0.07003016, 0.07003016, 0.07003016, 0.01884693], [1516995840000, 0.07030402, 0.07045866, 0.07030402, 0.07045866, 0.52714536], [1516995900000, 0.07045866, 0.07052003, 0.07030402, 0.07051106, 0.78405993], [1516995960000, 0.0704808, 0.0704808, 0.07030402, 0.0704382, 0.16970403], [1516996020000, 0.0704382, 0.0704382, 0.0704382, 0.0704382, 0.12535087], [1516996080000, 0.07049408, 0.07049408, 0.07049408, 0.07049408, 0.077623], [1516996200000, 0.0704961, 0.0704961, 0.0704961, 0.0704961, 0.15603699], [1516996260000, 0.07048656, 0.07048656, 0.07048656, 0.07048656, 0.02830327], [1516996320000, 0.07030402, 0.07030402, 0.07030402, 0.07030402, 3.01568189], [1516996380000, 0.07030402, 0.07030402, 0.07030402, 0.07030402, 9.59631213], [1516996440000, 0.07030402, 0.07030402, 0.07004264, 0.07004264, 0.335884], [1516996500000, 0.07003406, 0.07030401, 0.07003406, 0.07030401, 0.30000969], [1516996560000, 0.07009655, 0.07009655, 0.07009655, 0.07009655, 0.0465101], [1516996740000, 0.07030402, 0.07030402, 0.07030402, 0.07030402, 0.01477017], [1516996800000, 0.07009656, 0.07009656, 0.07009655, 0.07009655, 0.06895797], [1516996860000, 0.07009656, 0.07009656, 0.07009655, 0.07009656, 0.92701286], [1516996920000, 0.07009656, 0.07009656, 0.07009656, 0.07009656, 0.11715062], [1516996980000, 0.07009656, 0.07009656, 0.07009656, 0.07009656, 0.4665709], [1516997040000, 0.07009656, 0.07009656, 0.07009655, 0.07009656, 0.50201248], [1516997100000, 0.07009656, 0.07009656, 0.07009656, 0.07009656, 0.18934493], [1516997160000, 0.07009656, 0.07009656, 0.07009656, 0.07009656, 1.11002172], [1516997220000, 0.07009656, 0.07009657, 0.07009655, 0.07009657, 0.9810315], [1516997280000, 0.07009657, 0.07009657, 0.07009657, 0.07009657, 0.00794283], [1516997340000, 0.07030303, 0.07030303, 0.07030303, 0.07030303, 0.0213362], [1516997400000, 0.07030303, 0.07030303, 0.07030303, 0.07030303, 0.05], [1516997520000, 0.07030303, 0.07030303, 0.070099, 0.07030303, 0.29363583], [1516997580000, 0.07030303, 0.07030303, 0.070099, 0.070099, 0.29715751], [1516997640000, 0.07030303, 0.07030402, 0.070099, 0.07030402, 9.7431577], [1516997700000, 0.07009901, 0.07009901, 0.07009901, 0.07009901, 0.180696], [1516997760000, 0.07030402, 0.07030402, 0.07030402, 0.07030402, 0.01540907], [1516997820000, 0.07020159, 0.07020159, 0.07020159, 0.07020159, 0.0096], [1516997880000, 0.07030402, 0.07030402, 0.07030402, 0.07030402, 0.15], [1516997940000, 0.0702016, 0.0702016, 0.0702016, 0.0702016, 0.91481699], [1516998000000, 0.07030402, 0.07030402, 0.0702016, 0.0702016, 0.18601372], [1516998060000, 0.07030402, 0.07030402, 0.07030402, 0.07030402, 0.04442405], [1516998120000, 0.07030402, 0.07030402, 0.070304, 0.070304, 1.16152151], [1516998180000, 0.07030402, 0.07030402, 0.07030402, 0.07030402, 3.18176098], [1516998300000, 0.0704529, 0.0704529, 0.0704529, 0.0704529, 1.50658492], [1516998420000, 0.070304, 0.07044246, 0.06997124, 0.06997124, 0.20838913], [1516998480000, 0.06997571, 0.06997571, 0.06997571, 0.06997571, 0.71575572], [1516998540000, 0.06997571, 0.06997571, 0.06997571, 0.06997571, 0.75319042], [1516998600000, 0.06997571, 0.06997571, 0.06997571, 0.06997571, 0.53732411], [1516998660000, 0.06997571, 0.06997571, 0.06997571, 0.06997571, 0.25290965], [1516998720000, 0.06997571, 0.06997571, 0.0699757, 0.0699757, 0.04580183], [1516998780000, 0.06996942, 0.06997571, 0.06996942, 0.06996942, 0.15035742], [1516998840000, 0.06996941, 0.06996942, 0.06995251, 0.06995251, 0.13183243], [1516998900000, 0.06997571, 0.06997571, 0.06997571, 0.06997571, 3.37949571], [1516999020000, 0.07043412, 0.07043412, 0.0699757, 0.06997571, 1.09398432], [1516999080000, 0.06997571, 0.06997571, 0.06997571, 0.06997571, 0.07179272], [1516999200000, 0.0704437, 0.0704437, 0.0699757, 0.07039837, 2.56851862], [1516999260000, 0.07039837, 0.07039837, 0.07039837, 0.07039837, 0.01420487], [1516999320000, 0.06998, 0.07019999, 0.06998, 0.07019999, 1.01368126], [1516999440000, 0.0701, 0.0703807, 0.0701, 0.0703807, 1.42060175], [1516999500000, 0.07037088, 0.07037088, 0.07034603, 0.07034603, 0.42631257], [1516999560000, 0.0701, 0.0701, 0.06998, 0.06998, 1.67728951], [1516999620000, 0.07033909, 0.07033909, 0.07033909, 0.07033909, 0.17729531], [1516999680000, 0.06998, 0.07033909, 0.06998, 0.07033909, 1.37073298], [1516999860000, 0.06998, 0.06998, 0.06998, 0.06998, 6.17292486], [1517000040000, 0.07033909, 0.07033909, 0.07033909, 0.07033909, 0.02384939], [1517000100000, 0.07033908, 0.07033908, 0.07033908, 0.07033908, 0.01421685], [1517000340000, 0.070248, 0.07033905, 0.070248, 0.07033905, 0.14292286], [1517000400000, 0.07033905, 0.07033906, 0.06998, 0.06998, 0.42650592], [1517000520000, 0.06998, 0.06998, 0.06998, 0.06998, 0.09060923], [1517000580000, 0.07033396, 0.07033396, 0.07033396, 0.07033396, 0.03601004], [1517000640000, 0.07033903, 0.07033903, 0.07033903, 0.07033903, 0.01421686], [1517000700000, 0.07033903, 0.07033908, 0.07033903, 0.07033903, 0.71153086], [1517000760000, 0.07033908, 0.07033909, 0.06998662, 0.06998662, 1.07050191], [1517000820000, 0.07033906, 0.07033906, 0.07033906, 0.07033906, 0.03030685], [1517000880000, 0.06999666, 0.06999666, 0.06999666, 0.06999666, 0.64150972], [1517001000000, 0.07033906, 0.07033906, 0.07033906, 0.07033906, 0.99517901], [1517001060000, 0.07033906, 0.07044252, 0.06998, 0.07044252, 3.26987389], [1517001120000, 0.07044252, 0.07044252, 0.07044251, 0.07044251, 0.56825636], [1517001180000, 0.07044249, 0.0704425, 0.07044249, 0.0704425, 0.95873517], [1517001240000, 0.07044251, 0.07044251, 0.07044251, 0.07044251, 0.04950136], [1517001300000, 0.07044251, 0.0705, 0.07044251, 0.0705, 1.28376054], [1517001360000, 0.0705, 0.07054491, 0.06998001, 0.07053131, 1.21463129], [1517001420000, 0.07058198, 0.07058198, 0.0705671, 0.07058198, 3.56730251], [1517001480000, 0.07056709, 0.07056709, 0.07056709, 0.07056709, 0.02777499], [1517001600000, 0.07056709, 0.0706, 0.07056709, 0.0706, 1.43942534], [1517001660000, 0.0706, 0.0706, 0.07028958, 0.0706, 2.29408697], [1517001720000, 0.0706, 0.0706, 0.07024699, 0.0706, 4.4716305], [1517001780000, 0.0706, 0.0706, 0.0706, 0.0706, 0.01570025], [1517001840000, 0.0706, 0.0706, 0.0706, 0.0706, 0.01567794], [1517001900000, 0.0706, 0.0706, 0.0706, 0.0706, 0.86560823], [1517001960000, 0.0706, 0.0706, 0.07034785, 0.0706, 3.76639096], [1517002020000, 0.0706, 0.0706, 0.0706, 0.0706, 2.99843851], [1517002080000, 0.070533, 0.0706, 0.070533, 0.0706, 0.03133707], [1517002140000, 0.0706, 0.0706, 0.07059999, 0.07059999, 0.03132611], [1517002200000, 0.07057999, 0.07058, 0.07057999, 0.07058, 0.83481349], [1517002260000, 0.07058, 0.07058, 0.07039234, 0.07058, 2.18465955], [1517002320000, 0.07058, 0.07058, 0.07058, 0.07058, 0.18563624], [1517002380000, 0.07058, 0.07058, 0.07058, 0.07058, 3.03512037], [1517002440000, 0.07058, 0.07058, 0.07058, 0.07058, 0.52810393], [1517002500000, 0.07058, 0.07058, 0.07058, 0.07058, 0.42109838], [1517002560000, 0.07058, 0.07058, 0.07058, 0.07058, 0.01817073], [1517002740000, 0.07058, 0.07058, 0.07058, 0.07058, 0.72393424], [1517002800000, 0.0706, 0.0706, 0.0706, 0.0706, 0.99070341], [1517002860000, 0.07058, 0.07058, 0.07058, 0.07058, 0.042], [1517002920000, 0.07058, 0.07058, 0.07058, 0.07058, 0.06373511], [1517003100000, 0.0706, 0.0706, 0.07057998, 0.07058, 9.10851885], [1517003160000, 0.07058, 0.07058, 0.07058, 0.07058, 2.3689502], [1517003220000, 0.07058, 0.07058, 0.07058, 0.07058, 3.08253331], [1517003340000, 0.07058, 0.0706, 0.07058, 0.0706, 0.07400708], [1517003400000, 0.0706, 0.0706, 0.0706, 0.0706, 0.5665722], [1517003460000, 0.0706, 0.0706, 0.07017827, 0.07017827, 1.34442369], [1517003520000, 0.0706, 0.0706, 0.0706, 0.0706, 0.141], [1517003580000, 0.07059981, 0.07059981, 0.07059981, 0.07059981, 0.01735067], [1517003640000, 0.07059981, 0.07059981, 0.07059981, 0.07059981, 0.126], [1517003700000, 0.07059981, 0.07059981, 0.07059981, 0.07059981, 0.14164346], [1517003820000, 0.07017065, 0.07059981, 0.07017065, 0.07059981, 1.40589203], [1517003880000, 0.07011113, 0.07011113, 0.07011113, 0.07011113, 0.29203289], [1517003940000, 0.07012806, 0.0706, 0.07012806, 0.0706, 3.93484099], [1517004000000, 0.0706, 0.0706, 0.0706, 0.0706, 0.2682269], [1517004120000, 0.0706, 0.0706, 0.0706, 0.0706, 0.02719547], [1517004180000, 0.07046785, 0.0706, 0.07019748, 0.07019748, 1.93515624], [1517004240000, 0.0706, 0.0706, 0.07056784, 0.07056784, 0.56391389], [1517004300000, 0.0706, 0.0706, 0.07014864, 0.07014864, 0.23176353], [1517004420000, 0.07056459, 0.07056459, 0.07056459, 0.07056459, 0.07545775], [1517004540000, 0.07013809, 0.07013809, 0.07013809, 0.07013809, 0.9974349], [1517004600000, 0.07013809, 0.07051728, 0.07013809, 0.07051728, 0.30393561], [1517004660000, 0.07051728, 0.07051728, 0.07051728, 0.07051728, 0.00962228], [1517004780000, 0.07013668, 0.0706, 0.07013667, 0.07013667, 0.15326636], [1517004900000, 0.07045, 0.07056785, 0.07045, 0.07056785, 0.14194464], [1517005080000, 0.0706, 0.0706, 0.07013669, 0.07013669, 1.10091553], [1517005140000, 0.07058006, 0.07058006, 0.07058006, 0.07058006, 0.03559664], [1517005200000, 0.07057376, 0.07057376, 0.07057376, 0.07057376, 0.0915], [1517005260000, 0.07013667, 0.07013669, 0.07013667, 0.07013669, 0.99790313], [1517005320000, 0.07013669, 0.07013669, 0.07013669, 0.07013669, 0.05508234], [1517005500000, 0.0706, 0.0706, 0.0706, 0.0706, 0.2832861], [1517005620000, 0.07059619, 0.0706, 0.07059619, 0.0706, 1.56462509], [1517005680000, 0.0706, 0.0706, 0.07059619, 0.07059619, 0.12914629], [1517005740000, 0.07059619, 0.0706, 0.07059619, 0.07059619, 1.37836146], [1517005800000, 0.07059998, 0.0706, 0.07059998, 0.0706, 0.28983815], [1517005860000, 0.0706, 0.0706, 0.0706, 0.0706, 0.02691218], [1517005920000, 0.07059809, 0.0706, 0.07059619, 0.07059619, 0.75730212], [1517005980000, 0.0706, 0.0706, 0.07059619, 0.07059619, 0.14083631], [1517006040000, 0.07059619, 0.07059619, 0.07056619, 0.07056619, 0.95773511], [1517006100000, 0.0705662, 0.0705662, 0.0705662, 0.0705662, 0.12067209], [1517006220000, 0.0705662, 0.0705662, 0.0705662, 0.0705662, 0.01203039], [1517006280000, 0.0706, 0.0706, 0.07056621, 0.07056621, 0.09680943], [1517006340000, 0.0705862, 0.0705862, 0.0705862, 0.0705862, 0.20787078], [1517006400000, 0.0705862, 0.0705862, 0.0705862, 0.0705862, 0.08872181], [1517006460000, 0.0705862, 0.0705862, 0.0705862, 0.0705862, 1.42878944], [1517006520000, 0.0705862, 0.0705862, 0.0705862, 0.0705862, 0.01562369], [1517006580000, 0.0705862, 0.0705862, 0.0705862, 0.0705862, 0.01562369], [1517006700000, 0.0705683, 0.0705862, 0.0705683, 0.0705862, 0.25900009], [1517006760000, 0.0705862, 0.0705862, 0.0705862, 0.0705862, 0.05085038], [1517006820000, 0.0705862, 0.0705862, 0.0705862, 0.0705862, 0.14854727], [1517006880000, 0.07056831, 0.0705862, 0.0705683, 0.0705862, 2.44961541], [1517006940000, 0.0706, 0.0706, 0.0706, 0.0706, 0.132924], [1517007000000, 0.0705683, 0.0705683, 0.07056621, 0.07056621, 4.13787136], [1517007060000, 0.0706, 0.0706, 0.0706, 0.0706, 0.01562374], [1517007120000, 0.0706, 0.0706, 0.0706, 0.0706, 7.09498686], [1517007180000, 0.0706, 0.07086328, 0.07056621, 0.07056621, 3.72236109], [1517007240000, 0.07087474, 0.07088, 0.07042508, 0.07042508, 18.32135909], [1517007300000, 0.07042508, 0.07078061, 0.07031877, 0.07031877, 0.80003449], [1517007360000, 0.07076633, 0.07083852, 0.07033871, 0.07033871, 7.82558426], [1517007420000, 0.07033871, 0.07033871, 0.07029864, 0.07029864, 0.75608899], [1517007480000, 0.0707, 0.0707, 0.07031608, 0.07032367, 0.30066115], [1517007540000, 0.07032366, 0.07032366, 0.07032366, 0.07032366, 0.5305023], [1517007600000, 0.07031608, 0.07032366, 0.07028402, 0.07032366, 0.46376717], [1517007660000, 0.07032366, 0.07032366, 0.07032366, 0.07032366, 0.51817542], [1517007720000, 0.07032369, 0.0706888, 0.07032366, 0.07032366, 1.69448027], [1517007780000, 0.07032367, 0.0706972, 0.07032367, 0.0706972, 0.55260467], [1517007840000, 0.07041441, 0.07041441, 0.07032366, 0.07032366, 0.53221899], [1517007900000, 0.07032366, 0.07032366, 0.07032366, 0.07032366, 0.50498177], [1517007960000, 0.07032366, 0.07032366, 0.07032366, 0.07032366, 0.50392769], [1517008020000, 0.07069997, 0.07069997, 0.07032366, 0.07032366, 0.54077299], [1517008140000, 0.07032367, 0.07069997, 0.07032367, 0.07069997, 0.55080786], [1517008200000, 0.07032367, 0.07069997, 0.07032367, 0.07069997, 0.61942378], [1517008260000, 0.07069997, 0.07069997, 0.07032978, 0.07051182, 0.67448108], [1517008320000, 0.07069995, 0.07069995, 0.0703708, 0.0703708, 0.19215561], [1517008380000, 0.07032978, 0.0703708, 0.07032978, 0.0703708, 0.68907271], [1517008440000, 0.07032978, 0.0703708, 0.07032978, 0.0703708, 0.74106297], [1517008500000, 0.07069722, 0.07069722, 0.07069722, 0.07069722, 0.01555931], [1517008560000, 0.07069718, 0.07069718, 0.07069718, 0.07069718, 0.0144475], [1517008620000, 0.07069717, 0.07069717, 0.07069717, 0.07069717, 0.23148291], [1517008680000, 0.070349, 0.070349, 0.070349, 0.070349, 0.7202639], [1517008740000, 0.07069716, 0.07069716, 0.07069716, 0.07069716, 1.77426355], [1517008800000, 0.07069716, 0.07069716, 0.07069716, 0.07069716, 0.47286119], [1517008860000, 0.07069716, 0.07069716, 0.07069716, 0.07069716, 0.21229824], [1517008920000, 0.07069715, 0.07069715, 0.07069715, 0.07069715, 0.09386083], [1517008980000, 0.07069713, 0.07069713, 0.07032367, 0.07069712, 0.61246111], [1517009100000, 0.07032367, 0.07032367, 0.07032367, 0.07032367, 1.0], [1517009220000, 0.07032369, 0.07033611, 0.07032369, 0.07033611, 0.031355], [1517009340000, 0.07033611, 0.07033611, 0.07032369, 0.07032369, 0.09412514], [1517009400000, 0.07032368, 0.07032368, 0.07032367, 0.07032367, 0.78058979], [1517009460000, 0.07032367, 0.07033611, 0.07032366, 0.07032366, 4.48511422], [1517009520000, 0.07032366, 0.07032367, 0.07032366, 0.07032367, 0.30750157], [1517009580000, 0.07032367, 0.07032367, 0.07032366, 0.07032366, 5.05955553], [1517009640000, 0.07032367, 0.07032367, 0.07032366, 0.07032367, 1.52349441], [1517009700000, 0.07033611, 0.07033611, 0.07032366, 0.07032366, 1.33521025], [1517009760000, 0.07033611, 0.07033611, 0.07032366, 0.07032366, 0.09487139], [1517009820000, 0.07033611, 0.07033611, 0.07032366, 0.07033, 0.0445211], [1517009880000, 0.07033611, 0.07033611, 0.07032366, 0.07032366, 46.92338194], [1517009940000, 0.07032366, 0.07033611, 0.07032366, 0.07032366, 22.07922282], [1517010000000, 0.07032366, 0.07033611, 0.07032366, 0.07032366, 8.04481224], [1517010060000, 0.07032366, 0.07052366, 0.07013667, 0.07013667, 4.79670506], [1517010120000, 0.07013667, 0.07013667, 0.0699, 0.0699, 3.72464781], [1517010180000, 0.0699, 0.07026825, 0.0699, 0.07026825, 1.72471895], [1517010240000, 0.07026825, 0.07026825, 0.07026825, 0.07026825, 0.07137974], [1517010300000, 0.07026825, 0.0703448, 0.07026825, 0.0703448, 1.19624404], [1517010360000, 0.0703826, 0.07038699, 0.0703826, 0.07038699, 2.27621363], [1517010420000, 0.07010544, 0.07010544, 0.07010544, 0.07010544, 0.01569065], [1517010480000, 0.07010544, 0.07010544, 0.07010544, 0.07010544, 0.02137356], [1517010540000, 0.07010544, 0.07038696, 0.07010544, 0.07038696, 1.06091352], [1517010600000, 0.07036736, 0.07036736, 0.07036736, 0.07036736, 0.2842108], [1517010660000, 0.07010544, 0.07010544, 0.07010544, 0.07010544, 0.01572631], [1517010720000, 0.07010544, 0.07038696, 0.07010544, 0.07010544, 0.09739153], [1517010780000, 0.07010544, 0.07010544, 0.07010544, 0.07010544, 0.03145262], [1517010960000, 0.07038697, 0.07038697, 0.07010544, 0.07010544, 1.24699347], [1517011020000, 0.07010544, 0.07010544, 0.07010544, 0.07010544, 1.71445368], [1517011260000, 0.07010555, 0.07010555, 0.07010555, 0.07010555, 0.05315026], [1517011320000, 0.07038697, 0.0705948, 0.07038697, 0.07059442, 4.7837155], [1517011380000, 0.0705, 0.0705723, 0.07010544, 0.07010544, 0.77854463], [1517011440000, 0.0705084, 0.0705084, 0.0705084, 0.0705084, 0.07238695], [1517011500000, 0.0705084, 0.0705084, 0.0705084, 0.0705084, 0.0141827], [1517011560000, 0.07016964, 0.07050839, 0.07010544, 0.07010544, 0.56261025], [1517011620000, 0.07022636, 0.07022636, 0.07010544, 0.07010544, 1.02737652], [1517011680000, 0.07048045, 0.07048045, 0.07048045, 0.07048045, 0.01583077], [1517011740000, 0.0704699, 0.07047967, 0.07010543, 0.07010543, 1.33347346], [1517011800000, 0.07010543, 0.07043862, 0.0701054, 0.07043862, 1.18848462], [1517011860000, 0.06993018, 0.06993018, 0.06993018, 0.06993018, 0.23], [1517011920000, 0.07042006, 0.07042006, 0.07042006, 0.07042006, 0.21300748], [1517011980000, 0.06999714, 0.06999714, 0.06999714, 0.06999714, 6.454], [1517012040000, 0.070399, 0.070399, 0.070399, 0.070399, 0.01829779], [1517012220000, 0.069998, 0.07029999, 0.06998754, 0.07029999, 1.31447451], [1517012280000, 0.07029999, 0.07067714, 0.07029999, 0.07055639, 9.25514014], [1517012340000, 0.06995366, 0.06995366, 0.06995366, 0.06995366, 1.45423449], [1517012760000, 0.07052772, 0.07052772, 0.07052772, 0.07052772, 0.01603255], [1517012820000, 0.07052772, 0.07052772, 0.07052772, 0.07052772, 0.03480569], [1517012880000, 0.07008422, 0.07062416, 0.07008422, 0.07062416, 0.0763922], [1517012940000, 0.07054115, 0.07054115, 0.07054115, 0.07054115, 0.00771314], [1517013060000, 0.0706651, 0.0706651, 0.07012317, 0.07012317, 0.18836171], [1517013180000, 0.07016923, 0.07016923, 0.07016923, 0.07016923, 0.10065662], [1517013240000, 0.07038397, 0.07038397, 0.07038397, 0.07038397, 0.20107495], [1517013360000, 0.07036036, 0.07036036, 0.07036036, 0.07036036, 0.01915759], [1517013420000, 0.07038397, 0.07038397, 0.07038397, 0.07038397, 0.32534339], [1517013480000, 0.07038397, 0.07038397, 0.07014932, 0.07014932, 0.61805588], [1517013780000, 0.0702, 0.0702, 0.0702, 0.0702, 0.48189801], [1517013840000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.22284578], [1517013900000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.03421011], [1517014080000, 0.0702, 0.07049999, 0.07016692, 0.07049999, 1.31037338], [1517014140000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 2.43], [1517014200000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.07], [1517014380000, 0.0701, 0.07049999, 0.07003678, 0.07049999, 3.75], [1517014560000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.01822312], [1517014620000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.01822312], [1517014680000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.09794567], [1517014800000, 0.0703, 0.07049999, 0.0703, 0.07049999, 0.57019636], [1517014860000, 0.07059999, 0.07059999, 0.07049999, 0.07049999, 3.75364675], [1517014920000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.01520008], [1517015040000, 0.0701602, 0.0701602, 0.0701602, 0.0701602, 5.74926715], [1517015100000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.27832996], [1517015160000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 4.24874896], [1517015220000, 0.07049999, 0.07049999, 0.07027362, 0.07027362, 0.84475654], [1517015640000, 0.07049999, 0.07049999, 0.06999903, 0.07049999, 2.39052839], [1517015700000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 2.44385515], [1517015880000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.58418051], [1517016060000, 0.07045576, 0.07045576, 0.07045576, 0.07045576, 0.28315641], [1517016120000, 0.069999, 0.069999, 0.069999, 0.069999, 1.17], [1517016300000, 0.07049999, 0.07049999, 0.07049999, 0.07049999, 0.14184397], [1517016360000, 0.07029765, 0.07047999, 0.07029765, 0.07047999, 0.0942035], [1517016600000, 0.07022743, 0.07022743, 0.0699, 0.0699, 0.32], [1517016840000, 0.0699, 0.07032, 0.0699, 0.07032, 1.12730307], [1517016900000, 0.07031999, 0.07032, 0.0699, 0.0699, 0.23129213], [1517017020000, 0.07032, 0.07049999, 0.07032, 0.07046966, 2.83932551], [1517017080000, 0.07010904, 0.07010904, 0.06967201, 0.06967201, 6.31500027], [1517017140000, 0.06967205, 0.07029638, 0.069672, 0.06967209, 7.30580071], [1517017200000, 0.06967217, 0.07010087, 0.069672, 0.069672, 0.45239678], [1517017260000, 0.06983277, 0.06983277, 0.06983277, 0.06983277, 0.07159962], [1517017320000, 0.06983277, 0.07002884, 0.06983277, 0.0698328, 0.73630568], [1517017380000, 0.0700288, 0.0700288, 0.0700288, 0.0700288, 0.45574352], [1517017440000, 0.07002884, 0.07006097, 0.0700288, 0.07006097, 0.57954602], [1517017560000, 0.07005734, 0.0700711, 0.069672, 0.0700711, 1.37181673], [1517017620000, 0.06967202, 0.06967202, 0.06967202, 0.06967202, 0.43], [1517017680000, 0.07003425, 0.07003425, 0.07003425, 0.07003425, 1.89768823], [1517017740000, 0.07003426, 0.07003426, 0.07003425, 0.07003425, 0.48840388], [1517017800000, 0.07003425, 0.07010635, 0.07003425, 0.07003425, 4.26052737], [1517017860000, 0.07003425, 0.07003425, 0.07003425, 0.07003425, 0.22041293], [1517017920000, 0.07003425, 0.07003425, 0.07003425, 0.07003425, 0.0314846], [1517017980000, 0.07003425, 0.07003425, 0.07003425, 0.07003425, 1.11380708], [1517018040000, 0.07009007, 0.07021, 0.07009007, 0.07021, 0.14162636], [1517018100000, 0.07009006, 0.07009006, 0.07003425, 0.07003425, 4.5712479], [1517018160000, 0.07003425, 0.07003425, 0.07003425, 0.07003425, 0.66412601], [1517018340000, 0.07013663, 0.07013663, 0.07013663, 0.07013663, 0.02149368], [1517018400000, 0.07013662, 0.07019, 0.07003425, 0.07003425, 2.86744015], [1517018520000, 0.07003425, 0.07020276, 0.07003425, 0.07020276, 5.57066646], [1517018580000, 0.07022, 0.07022, 0.07022, 0.07022, 0.4], [1517018640000, 0.07020276, 0.07020276, 0.07020276, 0.07020276, 0.1], [1517018700000, 0.07020276, 0.07035137, 0.07020276, 0.07020276, 0.33885777], [1517018760000, 0.07020276, 0.07045, 0.07003425, 0.07003426, 5.00398187], [1517018820000, 0.0704395, 0.07043951, 0.0704395, 0.0704395, 4.16961933], [1517018880000, 0.07020276, 0.07020276, 0.07020276, 0.07020276, 0.55424657], [1517018940000, 0.07020276, 0.07020276, 0.07003425, 0.07003425, 2.91394241], [1517019000000, 0.07020276, 0.07020276, 0.07003425, 0.07003425, 0.34766864], [1517019120000, 0.07020276, 0.07020276, 0.07003425, 0.07003425, 0.23848865], [1517019180000, 0.07003425, 0.07003425, 0.07003425, 0.07003425, 5.37594482], [1517019240000, 0.07003425, 0.07042, 0.07003425, 0.07003425, 8.19962157], [1517019300000, 0.07003425, 0.07027384, 0.06971581, 0.07027384, 7.05428527], [1517019360000, 0.06977019, 0.06977019, 0.0693, 0.0693, 35.14900976], [1517019420000, 0.06958977, 0.06965, 0.0695545, 0.06965, 11.07319892], [1517019480000, 0.06958305, 0.06958342, 0.06935314, 0.06957952, 6.98689858], [1517019540000, 0.06957952, 0.0696494, 0.0693, 0.06935314, 0.57135848], [1517019600000, 0.06961156, 0.06961156, 0.0693, 0.06957994, 1.30305332], [1517019660000, 0.06930001, 0.06951222, 0.06930001, 0.06951222, 0.23926376], [1517019720000, 0.06930001, 0.06960998, 0.06930001, 0.06956242, 3.84224051], [1517019780000, 0.06956241, 0.06956241, 0.06956241, 0.06956241, 1.72601883], [1517019840000, 0.06930001, 0.06933065, 0.0693, 0.0693, 1.16853223], [1517019900000, 0.06942551, 0.06956242, 0.06942551, 0.06956242, 0.17294018], [1517019960000, 0.06930001, 0.06930001, 0.06930001, 0.06930001, 1.47417057], [1517020020000, 0.06946777, 0.06948112, 0.06946777, 0.06948112, 0.14301461], [1517020080000, 0.06930001, 0.06947137, 0.069, 0.069, 18.95818658], [1517020140000, 0.06948466, 0.0694992, 0.069, 0.069, 6.58402545], [1517020200000, 0.06900001, 0.06936655, 0.069, 0.069, 1.35076449], [1517020260000, 0.06900001, 0.06937857, 0.06900001, 0.06900001, 1.09542171], [1517020320000, 0.06900001, 0.06946004, 0.06900001, 0.06946004, 0.49041423], [1517020380000, 0.06933319, 0.0693332, 0.06900002, 0.06900002, 0.39361914], [1517020440000, 0.06900002, 0.06900002, 0.06900001, 0.06900001, 0.65], [1517020500000, 0.06900002, 0.06930201, 0.06900002, 0.06930201, 0.44029812], [1517020560000, 0.06930201, 0.06930201, 0.06900002, 0.06900002, 0.53892454], [1517020620000, 0.0692025, 0.0692025, 0.0692, 0.0692025, 0.47935202], [1517020680000, 0.0692025, 0.0692025, 0.06895, 0.0692025, 4.01585733], [1517020740000, 0.06895001, 0.06895001, 0.06895001, 0.06895001, 0.01406469], [1517020800000, 0.0692025, 0.0692025, 0.06895, 0.06895, 0.66578056], [1517020860000, 0.06895, 0.06929431, 0.06895, 0.06929431, 0.13570137], [1517020980000, 0.0690248, 0.06929226, 0.0690248, 0.06929226, 0.07421204], [1517021100000, 0.06927097, 0.06927097, 0.06895, 0.06895, 0.83647599], [1517021160000, 0.06895, 0.06926973, 0.06895, 0.06926715, 2.94853957], [1517021280000, 0.06895, 0.06895, 0.0689, 0.0689, 4.55889658], [1517021340000, 0.06895, 0.0692697, 0.06895, 0.0692676, 1.35196793], [1517021400000, 0.06926271, 0.06926271, 0.06910985, 0.06910985, 0.48592616], [1517021460000, 0.06910985, 0.06910985, 0.06910985, 0.06910985, 0.56864276], [1517021520000, 0.06895, 0.06923479, 0.0688, 0.06922175, 13.27865014], [1517021580000, 0.06922175, 0.06923394, 0.06880001, 0.06880001, 2.74906802], [1517021640000, 0.06922279, 0.06922279, 0.06922279, 0.06922279, 0.97911971], [1517021700000, 0.06923394, 0.06923394, 0.06888777, 0.06888777, 0.57017434], [1517021760000, 0.06888777, 0.06923394, 0.06880443, 0.06919972, 0.33158016], [1517021820000, 0.06880008, 0.06914757, 0.0688, 0.06880008, 6.15051438], [1517021880000, 0.06880009, 0.06911942, 0.06880008, 0.06880008, 5.1445472], [1517021940000, 0.06880008, 0.06880008, 0.06880008, 0.06880008, 2.24637008], [1517022000000, 0.06880008, 0.06903891, 0.06851, 0.06890322, 8.97164582], [1517022060000, 0.06851001, 0.0688027, 0.0683, 0.0687717, 21.159814], [1517022120000, 0.06882185, 0.06882185, 0.06839653, 0.06869926, 0.99792027], [1517022180000, 0.06870503, 0.06870503, 0.06832838, 0.0686576, 1.44475721], [1517022240000, 0.0686085, 0.0686085, 0.06832838, 0.06832838, 0.53985697], [1517022300000, 0.06865346, 0.06869225, 0.06857954, 0.06858288, 4.6092204], [1517022360000, 0.0685795, 0.06858288, 0.0685795, 0.0685795, 10.81170074], [1517022420000, 0.0685795, 0.0685829, 0.06854521, 0.0685829, 14.87524092], [1517022480000, 0.06859936, 0.06859936, 0.0683, 0.06842785, 3.61374862], [1517022540000, 0.06853969, 0.06859935, 0.0683, 0.06857989, 5.43624918], [1517022600000, 0.06857583, 0.06859932, 0.06842785, 0.06856054, 1.10535511], [1517022660000, 0.06854801, 0.06854801, 0.06854801, 0.06854801, 0.40558984], [1517022720000, 0.0685773, 0.06858507, 0.06856808, 0.06858507, 0.24524463], [1517022780000, 0.06859928, 0.06859928, 0.06859928, 0.06859928, 0.06997157], [1517022840000, 0.0686317, 0.0686317, 0.06859928, 0.06859928, 1.0986805], [1517022900000, 0.06867858, 0.06890577, 0.06856808, 0.06863547, 1.38140231], [1517022960000, 0.06856808, 0.06864716, 0.06837836, 0.06861988, 0.16098781], [1517023020000, 0.06837836, 0.06860292, 0.06830001, 0.06860292, 1.03387895], [1517023080000, 0.06830001, 0.06871049, 0.06830001, 0.06871049, 6.5849752], [1517023140000, 0.06840455, 0.06862051, 0.0683, 0.0683, 5.2020103], [1517023200000, 0.0683, 0.06872025, 0.0683, 0.06866241, 0.45438096], [1517023320000, 0.06856967, 0.06856967, 0.06827486, 0.06827486, 3.74958621], [1517023380000, 0.06825, 0.06843662, 0.06825, 0.06833803, 1.69272406], [1517023440000, 0.0683039, 0.06838647, 0.06825, 0.06825, 5.21379009], [1517023500000, 0.06823999, 0.06823999, 0.06817689, 0.06823206, 8.07319445], [1517023560000, 0.06823206, 0.06823206, 0.06814701, 0.06819111, 19.87043618], [1517023620000, 0.06814701, 0.06814701, 0.06813389, 0.06813389, 0.75], [1517023680000, 0.06813389, 0.06824463, 0.0681, 0.0681, 6.20129572], [1517023740000, 0.06824717, 0.06829761, 0.06814285, 0.06828116, 0.40678283], [1517023800000, 0.06827868, 0.06828084, 0.0681, 0.0681, 11.07152699], [1517023860000, 0.0681, 0.06847998, 0.068, 0.06806595, 32.2751373], [1517023920000, 0.06837399, 0.0684114, 0.068, 0.0684114, 9.39656608], [1517023980000, 0.06829605, 0.06829605, 0.06829605, 0.06829605, 0.07096359], [1517024040000, 0.06828561, 0.06838833, 0.06827821, 0.06827821, 0.53096261], [1517024100000, 0.06812227, 0.06830757, 0.068, 0.068, 2.92346068], [1517024160000, 0.06831392, 0.06831392, 0.068, 0.06800101, 5.23266642], [1517024220000, 0.06817101, 0.06817101, 0.06814034, 0.06814034, 0.32120532], [1517024280000, 0.0680246, 0.0680246, 0.0680246, 0.0680246, 0.43925287], [1517024340000, 0.0682155, 0.06821551, 0.068001, 0.068001, 6.19116827], [1517024400000, 0.06833474, 0.06834622, 0.06833474, 0.06833859, 5.45360171], [1517024460000, 0.0680724, 0.0680724, 0.068001, 0.068001, 1.55557569], [1517024520000, 0.06829423, 0.06829423, 0.0682867, 0.0682867, 0.2775678], [1517024580000, 0.06829022, 0.06829022, 0.06829022, 0.06829022, 0.10842929], [1517024640000, 0.0682867, 0.0682867, 0.06802, 0.06802, 0.36992071], [1517024700000, 0.06832295, 0.06850969, 0.06831421, 0.06835301, 1.89361327], [1517024820000, 0.06831354, 0.06831354, 0.06831354, 0.06831354, 0.01497181], [1517024880000, 0.06834107, 0.06834107, 0.0683402, 0.0683402, 1.56919519], [1517024940000, 0.06834307, 0.06834307, 0.06834307, 0.06834307, 0.80934835], [1517025000000, 0.06834307, 0.06834307, 0.06834307, 0.06834307, 4.60011735], [1517025060000, 0.0683402, 0.0683402, 0.0683402, 0.0683402, 0.02589248], [1517025120000, 0.06835176, 0.06835176, 0.06802012, 0.06802012, 0.39265231], [1517025180000, 0.06838623, 0.06838623, 0.06816963, 0.06816963, 1.28221066], [1517025360000, 0.06816963, 0.06816963, 0.06816963, 0.06816963, 0.45399034], [1517025420000, 0.06816963, 0.06816963, 0.06798, 0.06798, 100.489], [1517025480000, 0.0683787, 0.0683787, 0.06816963, 0.06816963, 1.47084902], [1517025600000, 0.06816963, 0.06834396, 0.06816963, 0.06816963, 10.33163624], [1517025660000, 0.06816963, 0.0682633, 0.06816963, 0.0682193, 3.28619557], [1517025720000, 0.06819127, 0.06819127, 0.06798, 0.06817569, 5.10082496], [1517025780000, 0.06817508, 0.06817508, 0.06816438, 0.06816438, 0.35329252], [1517025840000, 0.06798015, 0.06798015, 0.06783422, 0.06783422, 11.16604901], [1517025900000, 0.06783422, 0.06814052, 0.06783421, 0.06783421, 2.80487188], [1517025960000, 0.06820204, 0.06820204, 0.06783421, 0.06819203, 3.39611248], [1517026020000, 0.06816296, 0.06816296, 0.06783451, 0.06783451, 0.70038976], [1517026140000, 0.06788975, 0.06816236, 0.06787155, 0.06813117, 2.133119], [1517026200000, 0.06813114, 0.06813114, 0.06813114, 0.06813114, 0.14677584], [1517026260000, 0.0681311, 0.0681311, 0.0681311, 0.0681311, 0.14677584], [1517026320000, 0.06813111, 0.06813111, 0.06813111, 0.06813111, 0.8160736], [1517026380000, 0.06812199, 0.06813111, 0.06812198, 0.0681311, 0.26821142], [1517026440000, 0.0681311, 0.06813112, 0.0680968, 0.0680968, 1.37917602], [1517026560000, 0.06785875, 0.06785875, 0.06785875, 0.06785875, 0.08605098], [1517026620000, 0.06785875, 0.06804442, 0.06785875, 0.06804442, 0.05661191], [1517026680000, 0.06804443, 0.06805518, 0.06804443, 0.06805518, 0.60491216], [1517026800000, 0.06804442, 0.06813112, 0.06804442, 0.06804442, 21.79469353], [1517026920000, 0.06813324, 0.06813324, 0.06813324, 0.06813324, 0.14227244], [1517027040000, 0.06811318, 0.06811318, 0.06808341, 0.06808341, 0.86898523], [1517027100000, 0.06818654, 0.06823925, 0.06817426, 0.06817426, 0.29337686], [1517027160000, 0.06808342, 0.06833111, 0.06808342, 0.06820108, 0.32984239], [1517027220000, 0.06814779, 0.06814779, 0.06814778, 0.06814778, 2.28352], [1517027280000, 0.06817248, 0.06822809, 0.06814778, 0.06822809, 0.37255121], [1517027400000, 0.06823313, 0.06824062, 0.0680824, 0.06824062, 0.88653646], [1517027460000, 0.0680824, 0.06822788, 0.0680824, 0.06822623, 0.22487408], [1517027520000, 0.06821514, 0.06821514, 0.06821514, 0.06821514, 0.05671951], [1517027580000, 0.06818921, 0.06818921, 0.06818921, 0.06818921, 0.01484197], [1517027640000, 0.06819217, 0.06819217, 0.06819217, 0.06819217, 0.03663666], [1517027700000, 0.06819217, 0.06824349, 0.06819217, 0.06824349, 0.30960788], [1517027760000, 0.06824349, 0.06824349, 0.06818921, 0.06818921, 1.5861924], [1517027820000, 0.0681892, 0.06819217, 0.0680824, 0.0680824, 0.35153661], [1517027880000, 0.0680824, 0.06808242, 0.06807005, 0.06808241, 1.16], [1517027940000, 0.06828206, 0.06828206, 0.06828206, 0.06828206, 0.04244065], [1517028000000, 0.06808242, 0.06830954, 0.06808242, 0.06830954, 1.09174941], [1517028120000, 0.06826262, 0.06826262, 0.06826262, 0.06826262, 0.07852245], [1517028180000, 0.06827984, 0.06827984, 0.06826262, 0.06826262, 3.74665145], [1517028240000, 0.06823452, 0.06823452, 0.06823452, 0.06823452, 0.39585902], [1517028300000, 0.06821842, 0.06822006, 0.06821842, 0.06822006, 0.32268613], [1517028360000, 0.06821986, 0.06822749, 0.06821986, 0.06822749, 1.58072174], [1517028420000, 0.06821843, 0.0682368, 0.06821843, 0.0682368, 0.09255327], [1517028480000, 0.06823402, 0.06823402, 0.0682186, 0.0682186, 0.25454009], [1517028540000, 0.06822084, 0.06822084, 0.06822084, 0.06822084, 2.0], [1517028600000, 0.06810954, 0.06810954, 0.06810954, 0.06810954, 0.01618716], [1517028660000, 0.06815768, 0.06817627, 0.06808242, 0.06808242, 3.46164233], [1517028720000, 0.06810953, 0.06810953, 0.06810953, 0.06810953, 0.05491524], [1517028780000, 0.06810063, 0.06810063, 0.06808244, 0.06808244, 1.02224839], [1517028840000, 0.06808243, 0.06809478, 0.06808242, 0.06808242, 2.14617618], [1517028900000, 0.06808241, 0.06808241, 0.06808241, 0.06808241, 0.36756814], [1517028960000, 0.06814447, 0.06821506, 0.06805, 0.06821506, 2.49694991], [1517029080000, 0.06821504, 0.06821504, 0.06821504, 0.06821504, 0.09468435], [1517029140000, 0.06820877, 0.06821503, 0.06820444, 0.06821503, 0.27447768], [1517029200000, 0.06821503, 0.06821503, 0.06821503, 0.06821503, 0.0357065], [1517029260000, 0.06834995, 0.06834995, 0.06834995, 0.06834995, 0.01781786], [1517029380000, 0.06805, 0.06805, 0.06805, 0.06805, 0.02939015], [1517029440000, 0.06826163, 0.06826163, 0.06826163, 0.06826163, 0.01611447], [1517029500000, 0.06830999, 0.06830999, 0.06817764, 0.06817764, 0.32668643], [1517029560000, 0.06817764, 0.06817764, 0.06810954, 0.06810954, 0.16989782], [1517029680000, 0.06810954, 0.06810954, 0.06810954, 0.06810954, 4.88125179], [1517029860000, 0.06822585, 0.06822585, 0.06822585, 0.06822585, 0.0148491], [1517029920000, 0.06822585, 0.06822585, 0.06822585, 0.06822585, 0.0148491], [1517030040000, 0.06819908, 0.06819908, 0.0680502, 0.06813088, 0.18954859], [1517030100000, 0.06808499, 0.06813088, 0.06808499, 0.06813088, 1.37907878], [1517030160000, 0.06813087, 0.06819314, 0.06813087, 0.06813088, 3.63173554], [1517030220000, 0.06819907, 0.06819907, 0.06817441, 0.06817441, 2.01678685], [1517030280000, 0.06818126, 0.06818126, 0.06817135, 0.06817135, 0.03193246], [1517030340000, 0.06819594, 0.06819594, 0.06819593, 0.06819594, 0.78008686], [1517030400000, 0.06823312, 0.06827167, 0.06813088, 0.06827167, 12.00242985], [1517030460000, 0.06822903, 0.06825278, 0.06822903, 0.06825278, 0.12057519], [1517030520000, 0.06824351, 0.06824351, 0.06824351, 0.06824351, 0.73083873], [1517030580000, 0.06821511, 0.06821992, 0.06821511, 0.06821992, 0.32656175], [1517030700000, 0.06822926, 0.06822926, 0.06822926, 0.06822926, 1.0], [1517030760000, 0.06823001, 0.06823001, 0.06823001, 0.06823001, 0.0467832], [1517030820000, 0.06822932, 0.06822932, 0.06822932, 0.06822932, 0.6231267], [1517030880000, 0.06822932, 0.068245, 0.06822932, 0.068245, 0.528585], [1517030940000, 0.06822926, 0.06822926, 0.06813088, 0.06813088, 1.0], [1517031120000, 0.06825278, 0.06825279, 0.06813088, 0.06813088, 0.19413318], [1517031180000, 0.06813088, 0.06822328, 0.068085, 0.06822328, 0.976193], [1517031240000, 0.0683, 0.0683, 0.06823177, 0.06823177, 0.22930283], [1517031360000, 0.06842808, 0.06842808, 0.06808499, 0.06808499, 1.1485756], [1517031420000, 0.06827847, 0.06827847, 0.06808499, 0.06808499, 0.41265095], [1517031480000, 0.06834998, 0.06834998, 0.06834998, 0.06834998, 0.00743312], [1517031540000, 0.06834997, 0.06834997, 0.06834997, 0.06834997, 0.06166855], [1517031600000, 0.06834997, 0.06834997, 0.06834997, 0.06834997, 2.89959009], [1517031660000, 0.06834997, 0.06834998, 0.06817911, 0.06834998, 2.79535248], [1517031720000, 0.06817911, 0.06817911, 0.06808499, 0.06808499, 3.2420303], [1517031780000, 0.06808499, 0.06808499, 0.06808499, 0.06808499, 1.50424228], [1517031840000, 0.06808499, 0.06808499, 0.06808499, 0.06808499, 0.032386], [1517031900000, 0.06813851, 0.06826999, 0.06808499, 0.06808499, 3.3860599], [1517031960000, 0.06833, 0.06833, 0.06826001, 0.06826001, 0.03039484], [1517032020000, 0.06832999, 0.06832999, 0.06808499, 0.06808499, 2.69956341], [1517032080000, 0.06826697, 0.06826697, 0.06808499, 0.06821527, 1.26620635], [1517032140000, 0.06819151, 0.06829256, 0.06808499, 0.06829256, 0.11607792], [1517032200000, 0.06829256, 0.06829256, 0.06822512, 0.06822732, 3.25008418], [1517032260000, 0.06822531, 0.06823525, 0.06808499, 0.06821352, 1.0657171], [1517032500000, 0.06823465, 0.06826603, 0.0681, 0.06824706, 0.1788334], [1517032620000, 0.06823796, 0.06823796, 0.06823796, 0.06823796, 0.35610939], [1517032740000, 0.06823795, 0.06823796, 0.06823795, 0.06823796, 0.14245878], [1517032800000, 0.06823796, 0.06823796, 0.06823796, 0.06823796, 0.36109174], [1517032860000, 0.06823796, 0.06823797, 0.06808499, 0.06823797, 4.91114657], [1517032920000, 0.06823797, 0.06823797, 0.06823797, 0.06823797, 0.16615669], [1517032980000, 0.06823797, 0.06823797, 0.06823797, 0.06823797, 2.03231338], [1517033040000, 0.06823797, 0.06823797, 0.06823797, 0.06823797, 0.24173746], [1517033100000, 0.06823797, 0.06823797, 0.06823797, 0.06823797, 0.03231338], [1517033160000, 0.06823797, 0.06823797, 0.06823797, 0.06823797, 0.03231338], [1517033220000, 0.06823797, 0.06824087, 0.06823797, 0.06823797, 5.37886538], [1517033280000, 0.06823797, 0.06823797, 0.0682, 0.0682, 1.59615669], [1517033340000, 0.0682, 0.06824705, 0.06808499, 0.06824705, 3.15392293], [1517033400000, 0.06808499, 0.0681571, 0.06808499, 0.0681, 2.28662575], [1517033460000, 0.0681, 0.0681, 0.06808499, 0.06808499, 32.75346705], [1517033520000, 0.06808499, 0.06815558, 0.06808499, 0.06808499, 10.06136362], [1517033580000, 0.06808499, 0.06820997, 0.06808499, 0.06820997, 1.24132389], [1517033640000, 0.06808499, 0.06820998, 0.06808499, 0.06808499, 42.32391679], [1517033700000, 0.06808499, 0.06808499, 0.06805021, 0.06805021, 1.69746204], [1517033760000, 0.06805021, 0.06811826, 0.06805021, 0.06811826, 0.04857145], [1517033820000, 0.06811826, 0.06811826, 0.06806021, 0.06809045, 4.54583654], [1517033880000, 0.06808392, 0.0681382, 0.06806021, 0.06806021, 0.77640828], [1517033940000, 0.06814448, 0.06814448, 0.06807021, 0.06807021, 0.43173364], [1517034000000, 0.06807021, 0.06807021, 0.06807021, 0.06807021, 0.40800902], [1517034060000, 0.06807021, 0.06807021, 0.06807021, 0.06807021, 0.03239302], [1517034120000, 0.06807021, 0.06807221, 0.06804444, 0.06804444, 14.91440746], [1517034180000, 0.068087, 0.06816, 0.06804442, 0.06804442, 15.04317008], [1517034240000, 0.06804442, 0.06810583, 0.06804442, 0.06810583, 0.53292041], [1517034300000, 0.06810583, 0.06810583, 0.06804442, 0.06804444, 1.01409604], [1517034360000, 0.06804444, 0.06804445, 0.06804444, 0.06804445, 0.5535093], [1517034420000, 0.06804445, 0.0680667, 0.06804445, 0.0680667, 0.03240527], [1517034480000, 0.06807948, 0.06807948, 0.0680667, 0.0680667, 1.25051574], [1517034540000, 0.0680677, 0.06813545, 0.0680667, 0.06807449, 0.7313709], [1517034600000, 0.06815318, 0.06815318, 0.0680667, 0.06807469, 11.37103411], [1517034660000, 0.06814603, 0.06814863, 0.06807471, 0.06814863, 5.91941969], [1517034720000, 0.06807471, 0.06807471, 0.06807471, 0.06807471, 0.03237331], [1517034780000, 0.06807471, 0.06807471, 0.06807471, 0.06807471, 0.03239088], [1517034840000, 0.06807471, 0.06807472, 0.06804445, 0.06804445, 0.75814654], [1517034900000, 0.06804445, 0.06804445, 0.06804445, 0.06804445, 0.138563], [1517034960000, 0.06804445, 0.06807472, 0.06804445, 0.06807472, 0.4776178], [1517035020000, 0.06807472, 0.06810875, 0.06804445, 0.06804445, 0.97297223], [1517035080000, 0.0681434, 0.0681434, 0.06804442, 0.06804442, 0.59337405], [1517035140000, 0.06804442, 0.06804442, 0.068, 0.068, 17.09969537], [1517035200000, 0.06804442, 0.06809084, 0.06785, 0.06808014, 1.76751842], [1517035260000, 0.06785, 0.06785, 0.06785, 0.06785, 0.13805727], [1517035320000, 0.06808009, 0.06808009, 0.06808008, 0.06808008, 0.51247719], [1517035380000, 0.06785011, 0.06785011, 0.06785, 0.06785, 2.472047], [1517035440000, 0.06808015, 0.06808015, 0.06808015, 0.06808015, 0.25], [1517035500000, 0.06808015, 0.06808902, 0.06784986, 0.06784986, 1.71074072], [1517035620000, 0.06810224, 0.0681339, 0.06784986, 0.06784986, 0.32471571], [1517035680000, 0.06784986, 0.06817, 0.06784986, 0.06817, 0.03225404], [1517035740000, 0.06792, 0.06792, 0.06792, 0.06792, 1.0], [1517035800000, 0.06792, 0.06817, 0.06792, 0.06817, 2.49297033], [1517035860000, 0.06817, 0.06817, 0.06817, 0.06817, 0.09700216], [1517035920000, 0.06817, 0.06817, 0.06817, 0.06817, 0.42367289], [1517035980000, 0.06817, 0.06885543, 0.06817, 0.06885543, 113.10502566], [1517036040000, 0.06817, 0.06828345, 0.06817, 0.06817, 0.5134073], [1517036100000, 0.06827799, 0.06829483, 0.06827799, 0.06827799, 0.60052881], [1517036160000, 0.06828026, 0.06828026, 0.06808015, 0.06808015, 0.73427409], [1517036220000, 0.06808015, 0.06808015, 0.06808015, 0.06808015, 0.01], [1517036280000, 0.06808015, 0.06808015, 0.06808015, 0.06808015, 0.11269269], [1517036340000, 0.06827799, 0.06859803, 0.06792, 0.06792, 1.41203933], [1517036400000, 0.06841999, 0.06841999, 0.06841999, 0.06841999, 0.14615609], [1517036460000, 0.06841999, 0.06841999, 0.06841999, 0.06841999, 2.95599123], [1517036520000, 0.06841999, 0.06841999, 0.06792032, 0.06792032, 0.71848526], [1517036580000, 0.06792063, 0.06845999, 0.06792063, 0.06844, 3.95546213], [1517036700000, 0.06842, 0.06842, 0.06842, 0.06842, 0.29222676], [1517036760000, 0.06842, 0.06842, 0.06808015, 0.0684, 0.20082486], [1517036820000, 0.06804, 0.06844, 0.06792002, 0.06844, 0.77241803], [1517036880000, 0.06814, 0.06814, 0.06814, 0.06814, 0.37080197], [1517036940000, 0.06824, 0.06845996, 0.06824, 0.06845996, 0.64444835], [1517037000000, 0.06845996, 0.06847999, 0.06824, 0.06824, 2.64960222], [1517037060000, 0.06824, 0.0684727, 0.06824, 0.0684727, 0.71549354], [1517037180000, 0.06847269, 0.0684727, 0.06847269, 0.0684727, 0.16927783], [1517037240000, 0.06824, 0.06824, 0.06824, 0.06824, 0.4169286], [1517037420000, 0.06824001, 0.06824002, 0.06824001, 0.06824001, 0.98982641], [1517037480000, 0.06824002, 0.06824002, 0.06824002, 0.06824002, 1.23626553], [1517037540000, 0.06824002, 0.06824003, 0.06824, 0.06824003, 1.75873764], [1517037600000, 0.06843477, 0.06843477, 0.06843477, 0.06843477, 0.06362231], [1517037660000, 0.06843922, 0.06843922, 0.06831524, 0.06831525, 0.6035846], [1517037720000, 0.06824, 0.0684292, 0.06824, 0.0684292, 1.18284149], [1517037780000, 0.0684292, 0.0684292, 0.0684292, 0.0684292, 0.00931381], [1517037840000, 0.0684292, 0.0684292, 0.06824, 0.06824, 0.16188264], [1517037900000, 0.06824, 0.06842018, 0.06824, 0.06842018, 0.30244774], [1517038020000, 0.0681, 0.06824, 0.06809889, 0.06824, 0.5512339], [1517038140000, 0.06824, 0.06824, 0.06824, 0.06824, 0.33147555], [1517038200000, 0.06824, 0.06824, 0.06824, 0.06824, 0.24046218], [1517038260000, 0.0681, 0.06824, 0.0681, 0.06824, 0.03218539], [1517038380000, 0.06824, 0.06850001, 0.06824, 0.06824, 209.99152495], [1517038440000, 0.0685, 0.0685, 0.06838286, 0.06848747, 41.56217229], [1517038500000, 0.06848747, 0.06849998, 0.06848746, 0.06849998, 0.90063231], [1517038560000, 0.06824, 0.06824, 0.06824, 0.06824, 0.80239678], [1517038680000, 0.06824, 0.06824, 0.06784987, 0.06784987, 8.94097191], [1517038740000, 0.06792371, 0.06847565, 0.06780001, 0.06847565, 14.15593068], [1517038800000, 0.06847561, 0.06847565, 0.06847561, 0.06847565, 1.55114892], [1517038860000, 0.06847561, 0.06847561, 0.06801, 0.06801, 0.42477573], [1517038920000, 0.06847561, 0.06847561, 0.06847561, 0.06847561, 0.01606411], [1517039040000, 0.06847564, 0.06847564, 0.06847564, 0.06847564, 0.04953353], [1517039100000, 0.06801001, 0.06847563, 0.06801001, 0.06847563, 0.28928094], [1517039280000, 0.0684756, 0.06847563, 0.0684756, 0.06847563, 2.0], [1517039400000, 0.06847562, 0.06847562, 0.06847562, 0.06847562, 0.43811226], [1517039460000, 0.0684756, 0.06847564, 0.06792057, 0.06792057, 1.75697709], [1517039520000, 0.06792058, 0.06792058, 0.06792058, 0.06792058, 0.01606411], [1517039580000, 0.06855, 0.06856997, 0.06855, 0.06856997, 0.83059875], [1517039640000, 0.0685699, 0.0685699, 0.0685699, 0.0685699, 0.01604202], [1517039700000, 0.06856988, 0.06856988, 0.06856985, 0.06856987, 2.03806688], [1517039760000, 0.06794303, 0.06794303, 0.06794303, 0.06794303, 1.02859774], [1517039820000, 0.06794303, 0.06856986, 0.06794303, 0.06856986, 7.99210267], [1517040000000, 0.06855996, 0.06855996, 0.06855996, 0.06855996, 0.58343056], [1517040120000, 0.06851998, 0.06851998, 0.06851998, 0.06851998, 0.29115595], [1517040240000, 0.06806634, 0.06806634, 0.06806634, 0.06806634, 0.01604202], [1517040300000, 0.06806635, 0.06856842, 0.06794301, 0.06849989, 3.75306785], [1517040420000, 0.06797013, 0.06797013, 0.06797013, 0.06797013, 1.21], [1517040480000, 0.06849982, 0.06849983, 0.06797013, 0.06797013, 62.08085128], [1517040600000, 0.06797015, 0.06864999, 0.06797013, 0.06864999, 0.47187164], [1517040660000, 0.06849982, 0.06849983, 0.0680702, 0.0680702, 0.36080843], [1517040720000, 0.0684998, 0.0684998, 0.06849979, 0.06849979, 4.68770361], [1517040780000, 0.06849978, 0.06849978, 0.06849978, 0.06849978, 0.251153], [1517040840000, 0.06849977, 0.06849977, 0.06849977, 0.06849977, 0.0639374], [1517040900000, 0.06849976, 0.06849976, 0.06849973, 0.06849974, 0.76616667], [1517041020000, 0.0684292, 0.0684292, 0.0684292, 0.0684292, 0.01820254], [1517041140000, 0.06842919, 0.06854306, 0.06842919, 0.06854306, 0.8394214], [1517041200000, 0.06854305, 0.06854305, 0.06854305, 0.06854305, 0.14589381], [1517041260000, 0.06854302, 0.06854302, 0.06854298, 0.06854298, 0.44078618], [1517041320000, 0.06817037, 0.06817037, 0.06817037, 0.06817037, 0.05], [1517041380000, 0.06817038, 0.06817038, 0.06817038, 0.06817038, 3.79237926], [1517041440000, 0.06817038, 0.06817038, 0.06817038, 0.06817038, 0.0508553], [1517041500000, 0.06854305, 0.06854305, 0.06854305, 0.06854305, 0.29178762], [1517041680000, 0.06854305, 0.06854308, 0.06854305, 0.06854308, 0.45375205], [1517041740000, 0.06854307, 0.06854307, 0.06854307, 0.06854307, 0.0413196], [1517041860000, 0.06854307, 0.06854307, 0.06823004, 0.06823004, 0.53812657], [1517041920000, 0.06854307, 0.06854307, 0.06854307, 0.06854307, 0.0461304], [1517041980000, 0.06854307, 0.06854308, 0.06854307, 0.06854308, 0.178497], [1517042100000, 0.06854308, 0.06854308, 0.06854308, 0.06854308, 61.70650931], [1517042160000, 0.06854308, 0.06854308, 0.06854308, 0.06854308, 0.46375149], [1517042220000, 0.06854308, 0.06854308, 0.06834001, 0.06834001, 3.09705785], [1517042340000, 0.06854308, 0.06854308, 0.06854308, 0.06854308, 1.93], [1517042400000, 0.06854308, 0.06854308, 0.06854304, 0.06854304, 0.88288145], [1517042460000, 0.06854305, 0.06854305, 0.06854305, 0.06854305, 1.730453], [1517042520000, 0.06854305, 0.06854307, 0.06854305, 0.06854307, 0.29451051], [1517042580000, 0.06854305, 0.06854305, 0.06854305, 0.06854305, 0.01608478], [1517042640000, 0.06854307, 0.06854307, 0.068542, 0.068542, 7.3653743], [1517042700000, 0.068542, 0.06854307, 0.068542, 0.06854307, 1.14448579], [1517042820000, 0.06854307, 0.06854307, 0.06834003, 0.06834003, 0.69782024], [1517042880000, 0.06834003, 0.06834003, 0.06834001, 0.06834001, 0.13361743], [1517042940000, 0.06834003, 0.06834003, 0.06834003, 0.06834003, 0.22189512], [1517043000000, 0.06854308, 0.06854308, 0.06854308, 0.06854308, 0.16576636], [1517043120000, 0.06854308, 0.06854308, 0.06854308, 0.06854308, 18.95506196], [1517043240000, 0.06854308, 0.06854308, 0.06854308, 0.06854308, 0.29230457], [1517043300000, 0.06854308, 0.06854308, 0.06854308, 0.06854308, 5.0666034], [1517043360000, 0.06854308, 0.06854308, 0.06854308, 0.06854308, 1.42212926], [1517043420000, 0.06854308, 0.06854308, 0.06854308, 0.06854308, 0.09135231], [1517043480000, 0.06854307, 0.06854308, 0.06854307, 0.06854308, 3.37590701], [1517043540000, 0.06854308, 0.06876109, 0.06854308, 0.06876109, 1.59079137], [1517043600000, 0.0687611, 0.06887032, 0.0687611, 0.0687611, 2.72639797], [1517043660000, 0.06854308, 0.06876109, 0.06854308, 0.06876109, 1.29855904], [1517043720000, 0.06865209, 0.06865209, 0.06865209, 0.06865209, 0.07327424], [1517043780000, 0.06876109, 0.06876109, 0.06865209, 0.06865209, 0.11707439], [1517043840000, 0.0687611, 0.0687611, 0.06865209, 0.0687611, 1.14543305], [1517043900000, 0.0687611, 0.068829, 0.0687611, 0.06881249, 1.79129385], [1517043960000, 0.06881249, 0.06881249, 0.06881249, 0.06881249, 0.16236262], [1517044020000, 0.06854308, 0.06854308, 0.06854308, 0.06854308, 0.12196927], [1517044080000, 0.06881249, 0.06881249, 0.06881249, 0.06881249, 0.82848448], [1517044200000, 0.06887027, 0.06887027, 0.06887027, 0.06887027, 1.60099415], [1517044260000, 0.06854308, 0.06854308, 0.06854308, 0.06854308, 0.01736944], [1517044440000, 0.06887025, 0.06887025, 0.06887025, 0.06887025, 0.02118669], [1517044500000, 0.06887024, 0.06887024, 0.06887023, 0.06887023, 0.74206576], [1517044560000, 0.06844444, 0.06887026, 0.06844444, 0.06887026, 1.05415744], [1517044620000, 0.06887025, 0.06887033, 0.06887025, 0.06887033, 0.31774469], [1517044680000, 0.06887033, 0.06887033, 0.06844444, 0.06844444, 0.3767691], [1517044800000, 0.06887032, 0.06887033, 0.06887032, 0.06887033, 0.58080188], [1517044920000, 0.06887032, 0.06887032, 0.06887032, 0.06887032, 0.10810711], [1517044980000, 0.06887032, 0.06887032, 0.06887032, 0.06887032, 0.67161672], [1517045040000, 0.06887033, 0.06887033, 0.06887032, 0.06887032, 0.39600064], [1517045100000, 0.06887032, 0.06887033, 0.06887032, 0.06887032, 2.28556866], [1517045160000, 0.06887032, 0.06887033, 0.06887032, 0.06887033, 1.40905609], [1517045220000, 0.06889998, 0.06889998, 0.06887033, 0.06889998, 0.33317096], [1517045280000, 0.06887033, 0.06887033, 0.06852435, 0.06852435, 0.79440208], [1517045340000, 0.06852437, 0.0688703, 0.06852437, 0.06852439, 0.72722422], [1517045400000, 0.06889998, 0.06889998, 0.0685244, 0.06889998, 0.72578818], [1517045460000, 0.0686, 0.0686, 0.0686, 0.0686, 2.13586], [1517045520000, 0.06860001, 0.06860001, 0.0686, 0.0686, 2.05536573], [1517045580000, 0.06889998, 0.06889998, 0.06860003, 0.06860003, 0.1203112], [1517045640000, 0.06860001, 0.06889998, 0.06860001, 0.06860001, 0.42604904], [1517045700000, 0.06889998, 0.06889998, 0.06889998, 0.06889998, 0.77698831], [1517045760000, 0.06889998, 0.06889998, 0.06860002, 0.06860002, 0.36623711], [1517045820000, 0.06889998, 0.06889998, 0.06889998, 0.06889998, 0.10036622], [1517046000000, 0.06889998, 0.0689825, 0.06889998, 0.0689825, 0.658411], [1517046060000, 0.0689825, 0.0689825, 0.0689825, 0.0689825, 1.22391443], [1517046120000, 0.069, 0.069, 0.06890001, 0.06890001, 1.3220068], [1517046240000, 0.069, 0.0690713, 0.069, 0.0690713, 2.99886742], [1517046300000, 0.06907128, 0.06907131, 0.06907127, 0.06907127, 2.73358194], [1517046360000, 0.06861008, 0.06896842, 0.06861008, 0.06896842, 0.43071985], [1517046420000, 0.0690712, 0.06907122, 0.0690712, 0.06907122, 0.24237598], [1517046600000, 0.069071, 0.06907119, 0.069071, 0.06907119, 0.15658676], [1517046780000, 0.06907116, 0.06907119, 0.06861008, 0.06861008, 3.55754525], [1517046840000, 0.06907115, 0.06907115, 0.06861012, 0.06861012, 0.16930928], [1517046900000, 0.06895377, 0.06895377, 0.06895376, 0.06895376, 0.17190394], [1517046960000, 0.06895371, 0.06895371, 0.06861012, 0.06861012, 0.05626855], [1517047020000, 0.06861012, 0.06861012, 0.06861012, 0.06861012, 0.15705869], [1517047080000, 0.06861012, 0.06861012, 0.06861012, 0.06861012, 0.01606906], [1517047200000, 0.06883549, 0.06883549, 0.06883549, 0.06883549, 0.43582161], [1517047260000, 0.06883549, 0.06883549, 0.06861012, 0.06861012, 0.04872903], [1517047320000, 0.06861012, 0.06861012, 0.06861008, 0.06861008, 0.03213812], [1517047380000, 0.06861008, 0.06861008, 0.06861008, 0.06861008, 0.01606907], [1517047440000, 0.06861008, 0.06861008, 0.06861008, 0.06861008, 0.03213814], [1517047500000, 0.06883546, 0.06903999, 0.06883545, 0.06903999, 0.44928446], [1517047560000, 0.06892064, 0.06892064, 0.06860008, 0.06860008, 2.58255863], [1517047620000, 0.06892626, 0.06892626, 0.06892626, 0.06892626, 0.13916693], [1517047680000, 0.06852443, 0.06852443, 0.0685, 0.0685, 0.47898479], [1517047800000, 0.06892621, 0.06892624, 0.06892621, 0.06892624, 0.29016542], [1517047860000, 0.06892621, 0.06892621, 0.06892621, 0.06892621, 3.1936689], [1517047920000, 0.06892625, 0.06892625, 0.06892625, 0.06892625, 0.766064], [1517047980000, 0.06892622, 0.06892624, 0.06892621, 0.06892621, 12.20154616], [1517048040000, 0.06892621, 0.06892621, 0.06844445, 0.06844445, 8.18969472], [1517048100000, 0.06892624, 0.06892626, 0.06892624, 0.06892626, 0.48602683], [1517048340000, 0.06892625, 0.06892625, 0.06892625, 0.06892625, 0.07705852], [1517048400000, 0.068892, 0.068892, 0.06844446, 0.068892, 0.91675423], [1517048520000, 0.06844445, 0.06844445, 0.06844445, 0.06844445, 0.013], [1517048580000, 0.068892, 0.068892, 0.06866828, 0.06866828, 0.16070904], [1517048700000, 0.06866828, 0.06888999, 0.06846652, 0.06888999, 0.50740387], [1517048820000, 0.06844445, 0.06844445, 0.06844444, 0.06844444, 1.49298673], [1517048880000, 0.06844444, 0.06844444, 0.06844444, 0.06844444, 0.0468172], [1517048940000, 0.06844444, 0.06844444, 0.06844444, 0.06844444, 0.6258678], [1517049000000, 0.06844444, 0.06844444, 0.06844444, 0.06844444, 0.45681546], [1517049060000, 0.06844444, 0.06844444, 0.06844444, 0.06844444, 1.77821664], [1517049120000, 0.06844444, 0.06844444, 0.06844444, 0.06844444, 3.05690379], [1517049180000, 0.06844444, 0.06844444, 0.06844444, 0.06844444, 6.94587157], [1517049240000, 0.06844444, 0.06844444, 0.06844444, 0.06844444, 4.23489816], [1517049300000, 0.06844444, 0.06844444, 0.06844444, 0.06844444, 10.16899382], [1517049360000, 0.06844444, 0.068892, 0.06844444, 0.068892, 0.32582976], [1517049480000, 0.06845861, 0.06845861, 0.06845861, 0.06845861, 0.04720682], [1517049540000, 0.06844444, 0.06844444, 0.06835917, 0.0684444, 3.53590375], [1517049600000, 0.0684444, 0.068892, 0.0684444, 0.068892, 2.44706862], [1517049720000, 0.06889198, 0.068892, 0.06889198, 0.068892, 0.84835368], [1517049780000, 0.06889196, 0.068892, 0.06889196, 0.068892, 1.52768818], [1517049840000, 0.068892, 0.068892, 0.068892, 0.068892, 0.11713041], [1517049900000, 0.068892, 0.06905907, 0.068892, 0.06905906, 8.26341393], [1517049960000, 0.068892, 0.06905906, 0.06848473, 0.06905906, 4.19766911], [1517050020000, 0.06848473, 0.06905903, 0.06848473, 0.06905903, 0.07320703], [1517050080000, 0.06905904, 0.06905904, 0.06905903, 0.06905903, 0.03355702], [1517050200000, 0.06848474, 0.06907128, 0.06846313, 0.06907128, 7.93079045], [1517050260000, 0.06905998, 0.06905998, 0.06905998, 0.06905998, 0.01592818], [1517050320000, 0.06907128, 0.06907128, 0.06907128, 0.06907128, 0.14477797], [1517050380000, 0.06905998, 0.06905998, 0.06840397, 0.06840397, 3.39955193], [1517050500000, 0.06887882, 0.06887882, 0.06887882, 0.06887882, 0.43517301], [1517050560000, 0.06905999, 0.06905999, 0.06905999, 0.06905999, 0.23556796], [1517050740000, 0.0689245, 0.06892452, 0.0689245, 0.06892452, 0.64040434], [1517050800000, 0.06892451, 0.06892451, 0.06892451, 0.06892451, 0.51423355], [1517050860000, 0.06892451, 0.06892451, 0.06842498, 0.06842498, 0.32210719], [1517050920000, 0.06892451, 0.06892451, 0.06840381, 0.06840381, 0.30786925], [1517051040000, 0.0689245, 0.0689245, 0.0689245, 0.0689245, 0.07740187], [1517051100000, 0.06892449, 0.0689245, 0.06892448, 0.06892448, 1.65774703], [1517051280000, 0.06870699, 0.06880528, 0.06870699, 0.06870699, 0.57515362], [1517051340000, 0.06870699, 0.06872212, 0.06870699, 0.06870699, 0.0864283], [1517051400000, 0.06870699, 0.06870699, 0.0684038, 0.0684038, 0.48220007], [1517051460000, 0.06870699, 0.06870699, 0.06870699, 0.06870699, 0.0552771], [1517051520000, 0.0686, 0.06870698, 0.0686, 0.06870698, 0.09358453], [1517051640000, 0.0684038, 0.06870698, 0.0684038, 0.06870698, 0.64774572], [1517051700000, 0.06870698, 0.06870698, 0.06870698, 0.06870698, 0.29109114], [1517051820000, 0.06870698, 0.06870699, 0.0685038, 0.0685038, 0.35589951], [1517051880000, 0.06870698, 0.06880528, 0.06870698, 0.06880528, 1.24479867], [1517052000000, 0.06880527, 0.06880527, 0.06880527, 0.06880527, 0.29067528], [1517052060000, 0.06880527, 0.069, 0.06880527, 0.069, 2.66803848], [1517052120000, 0.06892451, 0.06892451, 0.06892451, 0.06892451, 0.14130678], [1517052180000, 0.068924, 0.06892448, 0.068924, 0.06892448, 0.21516123], [1517052240000, 0.0689245, 0.0689245, 0.06855623, 0.06855623, 0.11490283], [1517052300000, 0.06899999, 0.06899999, 0.06899999, 0.06899999, 0.43478259], [1517052360000, 0.06899999, 0.069366, 0.06899999, 0.069366, 25.30105497], [1517052420000, 0.0690001, 0.06936644, 0.0690001, 0.06900011, 3.69992282], [1517052480000, 0.06936599, 0.06936599, 0.06899999, 0.06899999, 0.12974154], [1517052540000, 0.06936599, 0.06936599, 0.069165, 0.069214, 0.3220565], [1517052600000, 0.06899999, 0.06899999, 0.06868011, 0.06899998, 3.00370317], [1517052660000, 0.06899998, 0.06899998, 0.06890378, 0.06890378, 1.38599716], [1517052720000, 0.06899997, 0.06899998, 0.06899997, 0.06899998, 1.3122448], [1517052780000, 0.06899999, 0.06899999, 0.06899997, 0.06899998, 0.26946668], [1517052840000, 0.06899998, 0.06899999, 0.06899998, 0.06899999, 0.398843], [1517052900000, 0.06899999, 0.069233, 0.06899999, 0.069233, 1.63097995], [1517052960000, 0.06899999, 0.069233, 0.06899999, 0.069233, 1.02142902], [1517053020000, 0.06899999, 0.06899999, 0.06899999, 0.06899999, 0.18312647], [1517053140000, 0.06934497, 0.06934497, 0.06934497, 0.06934497, 0.157859], [1517053200000, 0.06934497, 0.06934499, 0.06899999, 0.06934499, 0.30284259], [1517053260000, 0.06934497, 0.06934497, 0.06934497, 0.06934497, 0.0159716], [1517053320000, 0.06934497, 0.06934497, 0.06902905, 0.06902905, 1.57842057], [1517053500000, 0.06902905, 0.06902905, 0.069, 0.06902905, 4.56583864], [1517053560000, 0.069, 0.06902904, 0.069, 0.069, 0.12930352], [1517053620000, 0.06902904, 0.06902904, 0.06902904, 0.06902904, 0.33896138], [1517053800000, 0.069366, 0.06939127, 0.06902904, 0.06902904, 6.87559629], [1517053860000, 0.06902904, 0.06902904, 0.06902904, 0.06902904, 0.15679427], [1517053920000, 0.06939125, 0.06939125, 0.06902904, 0.06939125, 3.08257582], [1517053980000, 0.06902904, 0.06902904, 0.06902904, 0.06902904, 0.0491952], [1517054040000, 0.06939125, 0.06939999, 0.069029, 0.069029, 5.11748089], [1517054100000, 0.06939999, 0.06939999, 0.06939999, 0.06939999, 0.01585014], [1517054160000, 0.0694, 0.0694, 0.0694, 0.0694, 0.31029313], [1517054280000, 0.06939999, 0.06939999, 0.06939999, 0.06939999, 0.0071866], [1517054340000, 0.06939999, 0.06939999, 0.06902901, 0.06902901, 0.80590101], [1517054400000, 0.069029, 0.069029, 0.069029, 0.069029, 1.64767676], [1517054460000, 0.06902901, 0.06902901, 0.06902901, 0.06902901, 0.03194332], [1517054520000, 0.06902901, 0.06939999, 0.06902901, 0.06902901, 1.12978668], [1517054580000, 0.06902901, 0.06902901, 0.069029, 0.06902901, 0.91850231], [1517054640000, 0.06902901, 0.06902901, 0.06902901, 0.06902901, 0.03194332], [1517054700000, 0.069029, 0.06939999, 0.069029, 0.06939999, 0.90038669], [1517054820000, 0.06938999, 0.06938999, 0.06938999, 0.06938999, 0.11554803], [1517054880000, 0.069029, 0.069029, 0.069029, 0.069029, 0.02934169], [1517054940000, 0.069029, 0.069029, 0.069029, 0.069029, 0.305], [1517055000000, 0.06938999, 0.06939999, 0.06938999, 0.06939999, 0.28822596], [1517055060000, 0.06939998, 0.06939999, 0.06939998, 0.06939999, 0.11585014], [1517055120000, 0.06939999, 0.06939999, 0.069029, 0.06939999, 5.23797693], [1517055180000, 0.069029, 0.06939999, 0.069029, 0.06939999, 12.7450547], [1517055240000, 0.06913008, 0.0694, 0.06913008, 0.0694, 5.22500163], [1517055300000, 0.06910176, 0.06910267, 0.06910176, 0.06910267, 2.02555164], [1517055360000, 0.0693999, 0.0693999, 0.0693999, 0.0693999, 0.04460656], [1517055480000, 0.0693999, 0.0693999, 0.0693999, 0.0693999, 0.30628569], [1517055540000, 0.06908922, 0.0693999, 0.06908922, 0.0693999, 2.06840096], [1517055600000, 0.0693999, 0.0694, 0.0693999, 0.0694, 0.29434767], [1517055660000, 0.0694, 0.0694, 0.0694, 0.0694, 0.0310593], [1517055720000, 0.0694, 0.0694, 0.06919, 0.0694, 4.45761488], [1517055780000, 0.0693693, 0.0693693, 0.0693693, 0.0693693, 0.015939], [1517055840000, 0.0693693, 0.0693693, 0.06931005, 0.06931007, 0.06018874], [1517055900000, 0.06931274, 0.06949999, 0.06931274, 0.06949999, 0.14801656], [1517055960000, 0.06949999, 0.06949999, 0.06923158, 0.06949999, 0.95053934], [1517056080000, 0.06919232, 0.06919232, 0.06919232, 0.06919232, 0.01499791], [1517056200000, 0.06946999, 0.06946999, 0.06946999, 0.06946999, 0.07549686], [1517056320000, 0.06946998, 0.06946998, 0.06946998, 0.06946998, 0.01583417], [1517056380000, 0.06946998, 0.06946998, 0.06946998, 0.06946998, 0.126], [1517056440000, 0.06946997, 0.06946997, 0.06946997, 0.06946997, 0.29368766], [1517056500000, 0.06946997, 0.06946997, 0.06946997, 0.06946997, 0.0483028], [1517056560000, 0.06919232, 0.06919232, 0.06919232, 0.06919232, 0.05878014], [1517056620000, 0.06946995, 0.06946995, 0.06919232, 0.06919232, 0.32962849], [1517056680000, 0.06919232, 0.06919232, 0.06919232, 0.06919232, 0.30669708], [1517056740000, 0.069193, 0.069193, 0.06914363, 0.06914363, 0.88341715], [1517056800000, 0.06913554, 0.06913554, 0.06908859, 0.06913554, 0.05392122], [1517056860000, 0.06946994, 0.06946994, 0.06946994, 0.06946994, 0.01761256], [1517056920000, 0.06908301, 0.06908301, 0.06908301, 0.06908301, 0.01583418], [1517056980000, 0.06946993, 0.06946993, 0.06946993, 0.06946993, 0.01583418], [1517057040000, 0.0692139, 0.0692139, 0.0692139, 0.0692139, 0.14095724], [1517057100000, 0.06946992, 0.06946996, 0.0692211, 0.0692211, 1.083373], [1517057160000, 0.06922357, 0.06922357, 0.06922357, 0.06922357, 0.03663666], [1517057220000, 0.06944015, 0.06944015, 0.06926808, 0.06926808, 10.01030161], [1517057280000, 0.0694402, 0.06946992, 0.0694402, 0.06946992, 0.40834526], [1517057340000, 0.06944, 0.06944, 0.06925746, 0.06943999, 0.41159393], [1517057400000, 0.06943999, 0.06943999, 0.06928315, 0.06928315, 0.04442038], [1517057460000, 0.06943999, 0.06943999, 0.06943999, 0.06943999, 0.0639401], [1517057520000, 0.06943999, 0.06943999, 0.06943999, 0.06943999, 0.05610007], [1517057580000, 0.06943999, 0.06943999, 0.06943999, 0.06943999, 0.01592062], [1517057640000, 0.06943998, 0.06944, 0.06943998, 0.06944, 2.80105749], [1517057700000, 0.06926402, 0.0695, 0.06924959, 0.0695, 9.99984116], [1517057760000, 0.0695, 0.0695, 0.0695, 0.0695, 2.95427476], [1517057820000, 0.0695, 0.0696, 0.06934475, 0.06934475, 7.05813196], [1517057880000, 0.0696, 0.06972021, 0.0696, 0.0696, 1.34025835], [1517057940000, 0.0696, 0.06972021, 0.06948494, 0.06948494, 2.79059678], [1517058000000, 0.06948494, 0.06972021, 0.06948494, 0.06972021, 1.82994348], [1517058060000, 0.06972021, 0.06972021, 0.06972021, 0.06972021, 0.278658], [1517058120000, 0.06940986, 0.06940986, 0.06940986, 0.06940986, 1.32645203], [1517058180000, 0.06940986, 0.06943664, 0.06933198, 0.06943664, 8.82248053], [1517058300000, 0.06972021, 0.06972021, 0.06950109, 0.06950109, 0.63598139], [1517058360000, 0.0697202, 0.0697202, 0.0697202, 0.0697202, 0.08437106], [1517058420000, 0.0697202, 0.0697202, 0.0697202, 0.0697202, 0.06855482], [1517058540000, 0.06943664, 0.06943664, 0.06936373, 0.06936373, 0.29457539], [1517058600000, 0.0694366, 0.0694366, 0.0694366, 0.0694366, 0.1371837], [1517058660000, 0.06972019, 0.06972019, 0.06947605, 0.06947605, 0.78368768], [1517058780000, 0.0697202, 0.0697202, 0.0697202, 0.0697202, 40.71443151], [1517058840000, 0.06950032, 0.06950032, 0.06950032, 0.06950032, 0.91498538], [1517058900000, 0.0697202, 0.06977256, 0.06953619, 0.06977256, 10.33145324], [1517058960000, 0.06977256, 0.06981186, 0.06977256, 0.06981186, 0.02344118], [1517059080000, 0.06946707, 0.06946707, 0.06946707, 0.06946707, 1.20220563], [1517059200000, 0.0698, 0.0698, 0.0698, 0.0698, 0.14326647], [1517059320000, 0.0698, 0.06981186, 0.0698, 0.06981186, 0.74245559], [1517059380000, 0.06981186, 0.06981186, 0.06981185, 0.06981185, 0.15015228], [1517059440000, 0.06946708, 0.06946708, 0.06946707, 0.06946707, 0.07849908], [1517059560000, 0.06981183, 0.06981183, 0.06946708, 0.06946708, 0.15327415], [1517059620000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 0.04553356], [1517059740000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 0.03176738], [1517059800000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 0.15407969], [1517059860000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 0.26943196], [1517059980000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 0.28909722], [1517060040000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 0.13566902], [1517060100000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 0.02682312], [1517060160000, 0.0692846, 0.0692846, 0.06916411, 0.06916411, 0.04497742], [1517060220000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 0.01023766], [1517060340000, 0.06916084, 0.06946708, 0.06916084, 0.06946708, 0.04200054], [1517060400000, 0.06946708, 0.06946708, 0.06917684, 0.06917684, 0.15979405], [1517060460000, 0.06922528, 0.06922528, 0.06922528, 0.06922528, 0.00798007], [1517060700000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 3.64869263], [1517060760000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 0.28415164], [1517060820000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 0.01674972], [1517060880000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 0.34313556], [1517060940000, 0.06946708, 0.06946708, 0.06946708, 0.06946708, 0.15], [1517061000000, 0.06922528, 0.06946708, 0.06922528, 0.06946708, 0.48132939], [1517061060000, 0.0691638, 0.0691638, 0.0691638, 0.0691638, 0.07908686], [1517061240000, 0.069467, 0.069467, 0.06916379, 0.06916379, 2.4719176], [1517061300000, 0.06916379, 0.06916379, 0.06916379, 0.06916379, 0.05728414], [1517061360000, 0.06916379, 0.06916379, 0.06916379, 0.06916379, 0.5], [1517061420000, 0.06909, 0.06909, 0.06909, 0.06909, 0.21037558], [1517061540000, 0.06909, 0.06909, 0.06909, 0.06909, 0.25963962], [1517061600000, 0.06909, 0.06916378, 0.06909, 0.06916378, 1.32015325], [1517061720000, 0.06909, 0.06916377, 0.06909, 0.06916377, 0.14295332], [1517061780000, 0.06916377, 0.06916379, 0.06916377, 0.06916379, 2.25477356], [1517061900000, 0.069467, 0.06953903, 0.069467, 0.06953903, 6.4393408], [1517061960000, 0.06967999, 0.06967999, 0.06953903, 0.06967998, 0.38059182], [1517062020000, 0.06953903, 0.0697506, 0.06953903, 0.0697506, 0.16838105], [1517062080000, 0.06953903, 0.06953903, 0.06953903, 0.06953903, 0.03170882], [1517062140000, 0.06953903, 0.069637, 0.06953903, 0.06953903, 0.06042918], [1517062200000, 0.06963698, 0.06963699, 0.06953903, 0.06953903, 1.831204], [1517062260000, 0.06953903, 0.06963698, 0.06953903, 0.06953903, 0.35831603], [1517062320000, 0.06953903, 0.06953903, 0.06953903, 0.06953903, 0.05286352], [1517062380000, 0.06959999, 0.06959999, 0.06953903, 0.06953903, 0.10980534], [1517062440000, 0.06953903, 0.06953903, 0.06917593, 0.06917593, 11.8286405], [1517062500000, 0.0691656, 0.06953904, 0.0691656, 0.06953904, 6.1417223], [1517062560000, 0.06953904, 0.06953904, 0.06917958, 0.06917958, 6.08581845], [1517062620000, 0.06926379, 0.06926379, 0.06926379, 0.06926379, 1.29745759], [1517062680000, 0.06917298, 0.06918318, 0.06917298, 0.06918318, 6.1400202], [1517062740000, 0.06953904, 0.06953904, 0.06921641, 0.06921641, 6.21136466], [1517062800000, 0.06953903, 0.06957376, 0.06909, 0.06913858, 20.67357908], [1517062860000, 0.06913858, 0.0696, 0.06905318, 0.0696, 21.40639482], [1517063040000, 0.06900006, 0.06900007, 0.06890003, 0.069, 12.31200015], [1517063100000, 0.069, 0.069322, 0.069, 0.069, 2.07390223], [1517063160000, 0.06899999, 0.06937629, 0.0688, 0.06937629, 50.72164112], [1517063220000, 0.069, 0.069, 0.069, 0.069, 5.31672338], [1517063280000, 0.069, 0.069, 0.069, 0.069, 0.83638333], [1517063340000, 0.069, 0.069, 0.069, 0.069, 0.05196156], [1517063400000, 0.069, 0.069, 0.069, 0.069, 0.03857535], [1517063460000, 0.06899999, 0.069, 0.06899999, 0.06899999, 0.10003021], [1517063580000, 0.06899999, 0.06899999, 0.06891248, 0.06899999, 1.71704293], [1517063640000, 0.06891999, 0.068999, 0.06891999, 0.068999, 1.64523048], [1517063700000, 0.068999, 0.068999, 0.068999, 0.068999, 7.32800894], [1517063820000, 0.06899899, 0.06899899, 0.06899899, 0.06899899, 0.24766304], [1517063880000, 0.06899899, 0.06899899, 0.06899899, 0.06899899, 0.07863381], [1517064000000, 0.0689126, 0.0689126, 0.0688001, 0.0688001, 0.30296135], [1517064060000, 0.0689126, 0.068999, 0.06877006, 0.06877006, 10.56811668], [1517064120000, 0.06877006, 0.068999, 0.06877006, 0.06877006, 1.20642496], [1517064180000, 0.068999, 0.068999, 0.068999, 0.068999, 0.01534632], [1517064240000, 0.06899899, 0.068999, 0.06899899, 0.068999, 1.0], [1517064360000, 0.06899899, 0.06899899, 0.06899899, 0.06899899, 0.01594226], [1517064420000, 0.068999, 0.068999, 0.068999, 0.068999, 0.23625534], [1517064480000, 0.068999, 0.068999, 0.06877006, 0.068999, 12.05562059], [1517064540000, 0.06877006, 0.06877006, 0.06877006, 0.06877006, 0.09864913], [1517064600000, 0.068999, 0.068999, 0.068999, 0.068999, 10.64583627], [1517064660000, 0.06899999, 0.06899999, 0.06899999, 0.06899999, 0.02793274], [1517064720000, 0.06885, 0.069, 0.06885, 0.069, 21.05141251], [1517064840000, 0.06893099, 0.06893099, 0.06885, 0.06885, 1.15492756], [1517064900000, 0.069, 0.069, 0.069, 0.069, 0.01594202], [1517065020000, 0.06896062, 0.06896062, 0.06896062, 0.06896062, 0.50948648], [1517065080000, 0.06897741, 0.06897741, 0.06897741, 0.06897741, 0.09998127], [1517065140000, 0.06883882, 0.06883882, 0.06883882, 0.06883882, 0.03203134], [1517065200000, 0.06890511, 0.06890511, 0.06860001, 0.06890096, 0.24952964], [1517065260000, 0.06890096, 0.06890096, 0.06890096, 0.06890096, 0.01671279], [1517065380000, 0.06860002, 0.06860002, 0.06860001, 0.06860001, 2.0], [1517065500000, 0.06860002, 0.06890812, 0.06860002, 0.06889643, 0.57224287], [1517065620000, 0.06860004, 0.06860004, 0.06860004, 0.06860004, 0.09312906], [1517065680000, 0.06860004, 0.06860004, 0.06860001, 0.06860001, 2.39029895], [1517065740000, 0.06881145, 0.06881145, 0.06881145, 0.06881145, 0.02248926], [1517065800000, 0.06884661, 0.06884661, 0.06884661, 0.06884661, 0.14524264], [1517065920000, 0.06884662, 0.06884662, 0.06884662, 0.06884662, 0.01601386], [1517065980000, 0.06884662, 0.06884662, 0.0683, 0.0683, 10.86076724], [1517066100000, 0.06830047, 0.06830047, 0.06830047, 0.06830047, 0.59381636], [1517066160000, 0.06830055, 0.06877019, 0.06830055, 0.06877019, 0.06171049], [1517066220000, 0.06877019, 0.069, 0.06840014, 0.06840014, 5.21165054], [1517066280000, 0.06884984, 0.06884984, 0.06840959, 0.06840959, 1.06228418], [1517066340000, 0.06872672, 0.06872672, 0.06872672, 0.06872672, 0.01145439], [1517066400000, 0.06885344, 0.06885344, 0.06885344, 0.06885344, 0.29047222], [1517066460000, 0.06885344, 0.06885344, 0.06885344, 0.06885344, 0.06655099], [1517066580000, 0.06844023, 0.0685, 0.06844023, 0.0685, 0.66793214], [1517066640000, 0.0685, 0.06884427, 0.0685, 0.06884427, 0.02897846], [1517066700000, 0.06850001, 0.06850001, 0.06850001, 0.06850001, 0.02774385], [1517066820000, 0.06884212, 0.06884212, 0.06884212, 0.06884212, 0.01597859], [1517066880000, 0.06884212, 0.06884212, 0.06884211, 0.06884211, 0.17033348], [1517066940000, 0.06884211, 0.06884211, 0.06884211, 0.06884211, 0.48146324], [1517067000000, 0.06860001, 0.06860001, 0.06860001, 0.06860001, 0.4], [1517067120000, 0.06884211, 0.06884211, 0.06884211, 0.06884211, 0.16486997], [1517067180000, 0.06884211, 0.06884211, 0.0688421, 0.0688421, 0.34861717], [1517067240000, 0.06884209, 0.06884209, 0.06884209, 0.06884209, 0.0175469], [1517067300000, 0.06860705, 0.06884208, 0.06860705, 0.06884208, 0.23470634], [1517067360000, 0.06884208, 0.06884208, 0.06884208, 0.06884208, 0.04512188], [1517067420000, 0.06884208, 0.06884209, 0.06884208, 0.06884208, 4.49711215], [1517067480000, 0.06884209, 0.06885343, 0.06884208, 0.06885343, 0.78636419], [1517067540000, 0.06884209, 0.06884209, 0.06884209, 0.06884209, 0.01601491], [1517067600000, 0.06885343, 0.06899999, 0.06885343, 0.06899999, 0.50085023], [1517067660000, 0.06898028, 0.06898028, 0.06885343, 0.06885343, 0.27705114], [1517067720000, 0.06885344, 0.06885344, 0.06885343, 0.06885343, 0.94460568], [1517067780000, 0.06885343, 0.06885343, 0.06833003, 0.0685, 13.52642552], [1517067840000, 0.06833003, 0.0685, 0.06833003, 0.0685, 0.24957194], [1517067900000, 0.06833004, 0.0685, 0.06833004, 0.0685, 0.57883836], [1517067960000, 0.06860839, 0.06860839, 0.068, 0.06833004, 45.10672808], [1517068020000, 0.068, 0.06836388, 0.068, 0.06811993, 73.23176122], [1517068080000, 0.0681199, 0.0681199, 0.06712137, 0.06747267, 118.42865987], [1517068140000, 0.06767197, 0.06779997, 0.06747267, 0.06768882, 5.71235343], [1517068200000, 0.06747267, 0.06768883, 0.0674, 0.06768883, 4.42088725], [1517068260000, 0.0676856, 0.06768883, 0.0676856, 0.06768883, 0.60403403], [1517068320000, 0.0676888, 0.06780002, 0.0676888, 0.0676888, 0.36657711], [1517068380000, 0.06778907, 0.06780001, 0.06772871, 0.06772871, 1.01006645], [1517068440000, 0.06780001, 0.06799997, 0.0678, 0.06784, 1.62133084], [1517068500000, 0.068, 0.068, 0.06784, 0.06784, 0.38439987], [1517068560000, 0.068, 0.06800001, 0.06784001, 0.06784001, 2.00448042], [1517068620000, 0.06795368, 0.06795368, 0.06784001, 0.06784001, 1.59103648], [1517068680000, 0.06784002, 0.06794866, 0.06784002, 0.06794866, 0.60811081], [1517068740000, 0.06794866, 0.06800001, 0.0676856, 0.06800001, 5.3184114], [1517068800000, 0.06803743, 0.06814193, 0.06803743, 0.06814193, 2.03745861], [1517068860000, 0.06813992, 0.06825927, 0.06784002, 0.06820902, 5.31900972], [1517068920000, 0.06818898, 0.06821649, 0.06818898, 0.06821649, 0.76652677], [1517068980000, 0.06821649, 0.06821649, 0.0682, 0.0682, 1.3486656], [1517069040000, 0.06818898, 0.068275, 0.06818898, 0.06821649, 1.84617418], [1517069100000, 0.06821649, 0.06821649, 0.06821649, 0.06821649, 2.7954813], [1517069160000, 0.0679507, 0.06796855, 0.0679507, 0.06796855, 0.45544758], [1517069220000, 0.068275, 0.068275, 0.068275, 0.068275, 0.03650984], [1517069280000, 0.06839998, 0.06839998, 0.068275, 0.06839998, 1.43330249], [1517069340000, 0.068275, 0.0684, 0.068275, 0.068275, 2.38887092], [1517069400000, 0.0684, 0.0684, 0.068275, 0.068275, 2.11538309], [1517069460000, 0.068275, 0.0684, 0.068275, 0.0684, 0.11008187], [1517069520000, 0.0684, 0.0684, 0.068275, 0.068275, 0.51125325], [1517069580000, 0.06839999, 0.06839999, 0.06839999, 0.06839999, 0.2433525], [1517069640000, 0.06839999, 0.06839999, 0.06839999, 0.06839999, 0.46220892], [1517069700000, 0.06839999, 0.06839999, 0.06839999, 0.06839999, 0.29882914], [1517069760000, 0.0684, 0.0684, 0.06839999, 0.06839999, 1.96367616], [1517069880000, 0.068275, 0.06839997, 0.068275, 0.06839997, 0.903], [1517070000000, 0.068276, 0.06834999, 0.068275, 0.068275, 1.45115082], [1517070060000, 0.068275, 0.06827599, 0.068275, 0.06827599, 1.47694101], [1517070120000, 0.06827599, 0.0684, 0.06827599, 0.0684, 10.63386153], [1517070180000, 0.0684, 0.0684, 0.0684, 0.0684, 0.08564859], [1517070240000, 0.06839999, 0.06839999, 0.06827599, 0.06827599, 0.75432617], [1517070300000, 0.06827599, 0.06839999, 0.06827599, 0.06839999, 0.77674261], [1517070360000, 0.06827599, 0.06827599, 0.06827599, 0.06827599, 0.86], [1517070420000, 0.0683, 0.0683, 0.06827599, 0.06827599, 3.07589076], [1517070480000, 0.06829999, 0.06829999, 0.06827599, 0.06827599, 0.26557805], [1517070540000, 0.06829999, 0.06829999, 0.06829999, 0.06829999, 0.072], [1517070600000, 0.06829999, 0.06829999, 0.06829999, 0.06829999, 0.045388], [1517070660000, 0.06829999, 0.06829999, 0.06829999, 0.06829999, 0.09229426], [1517070720000, 0.06829997, 0.06829997, 0.06829997, 0.06829997, 1.014403], [1517070780000, 0.06827599, 0.06827599, 0.06827599, 0.06827599, 0.58200851], [1517070840000, 0.06827599, 0.06827599, 0.06827599, 0.06827599, 2.26541292], [1517070900000, 0.06827599, 0.06829996, 0.06827599, 0.06829996, 3.29471594], [1517070960000, 0.06829997, 0.06829997, 0.06829997, 0.06829997, 0.52], [1517071020000, 0.06829996, 0.06829996, 0.06829996, 0.06829996, 0.07311526], [1517071080000, 0.06827599, 0.06827599, 0.06827599, 0.06827599, 0.16863764], [1517071140000, 0.06829997, 0.06829997, 0.06829997, 0.06829997, 0.07662194], [1517071200000, 0.06827599, 0.0684, 0.068275, 0.068275, 29.52267631], [1517071260000, 0.068275, 0.06837367, 0.068275, 0.068275, 0.87193045], [1517071320000, 0.068275, 0.06837208, 0.068275, 0.06837208, 0.15366134], [1517071380000, 0.06837208, 0.06837208, 0.06827501, 0.06834442, 0.53960494], [1517071440000, 0.06833699, 0.0683605, 0.06827502, 0.0683605, 0.09158029], [1517071500000, 0.06833479, 0.06833573, 0.06827502, 0.06833573, 0.31706848], [1517071560000, 0.06833573, 0.06834968, 0.068275, 0.06834428, 6.46854444], [1517071620000, 0.0680001, 0.06834428, 0.0680001, 0.06834428, 0.05893862], [1517071680000, 0.06834428, 0.06834428, 0.06834428, 0.06834428, 0.09167678], [1517071740000, 0.06834428, 0.06834428, 0.06834339, 0.06834339, 5.05495814], [1517071800000, 0.06834002, 0.06834002, 0.06828429, 0.06828429, 0.18680273], [1517071860000, 0.06828191, 0.06828191, 0.06800009, 0.06828191, 1.03242652], [1517071980000, 0.06800009, 0.06800009, 0.06800009, 0.06800009, 1.2], [1517072040000, 0.06800009, 0.06800009, 0.06800009, 0.06800009, 0.03242642], [1517072100000, 0.06800009, 0.06800009, 0.06800009, 0.06800009, 0.01520008], [1517072160000, 0.06800009, 0.06816284, 0.06800009, 0.06800009, 0.04881627], [1517072220000, 0.06800009, 0.06800009, 0.06800009, 0.06800009, 0.5], [1517072280000, 0.06820113, 0.06827176, 0.06820113, 0.06827176, 0.02420291], [1517072340000, 0.06800009, 0.06800009, 0.06798958, 0.06798958, 1.53412512], [1517072400000, 0.06798958, 0.06798958, 0.067437, 0.067437, 41.81570537], [1517072460000, 0.067437, 0.06771515, 0.06713031, 0.06771515, 18.2075786], [1517072520000, 0.06744791, 0.0675264, 0.0671237, 0.0675264, 6.76183264], [1517072580000, 0.06754031, 0.06761802, 0.0675178, 0.06761802, 0.89183546], [1517072640000, 0.06760983, 0.06761234, 0.0675178, 0.06759244, 8.7857404], [1517072700000, 0.06759092, 0.06759243, 0.0673361, 0.06759243, 0.91997838], [1517072760000, 0.06759243, 0.06759243, 0.0675924, 0.0675924, 1.74213622], [1517072820000, 0.0675909, 0.06761082, 0.0675909, 0.06761082, 3.24962023], [1517072880000, 0.06774526, 0.06774526, 0.06774526, 0.06774526, 0.02951857], [1517072940000, 0.06774525, 0.06774525, 0.0676, 0.06761834, 1.34922611], [1517073000000, 0.0676, 0.06761834, 0.0676, 0.06761834, 0.41552851], [1517073060000, 0.06761834, 0.06761834, 0.06761834, 0.06761834, 0.01630475], [1517073120000, 0.06762053, 0.06762053, 0.06762053, 0.06762053, 0.07098436], [1517073180000, 0.06780746, 0.06785455, 0.06780746, 0.06785455, 0.02923333], [1517073240000, 0.06762055, 0.06762055, 0.06761834, 0.06761834, 3.921521], [1517073300000, 0.06761834, 0.06761834, 0.06738174, 0.06761834, 1.08310538], [1517073360000, 0.0673, 0.0673, 0.06725, 0.06725, 17.60605183], [1517073420000, 0.06725, 0.06725001, 0.06725, 0.06725001, 10.68119517], [1517073480000, 0.0676001, 0.0676001, 0.06725004, 0.06725004, 1.00811614], [1517073540000, 0.06725002, 0.06754125, 0.06725001, 0.06725001, 4.35533814], [1517073600000, 0.06739448, 0.06739448, 0.06725001, 0.06734603, 22.9522254], [1517073660000, 0.06734602, 0.06734602, 0.06725001, 0.06732068, 9.04105161], [1517073720000, 0.06732068, 0.06732068, 0.06718691, 0.06732068, 0.92675326], [1517073780000, 0.06732068, 0.06736463, 0.06732068, 0.0673632, 61.49936895], [1517073840000, 0.0673632, 0.06736462, 0.0673632, 0.06736462, 0.95315954], [1517073900000, 0.0673945, 0.0673945, 0.06736462, 0.06736463, 1.89451122], [1517073960000, 0.06739449, 0.06760009, 0.06736462, 0.06760009, 20.27866193], [1517074020000, 0.06736462, 0.06736462, 0.06703802, 0.06736202, 88.79362378], [1517074080000, 0.06703803, 0.06746218, 0.06703803, 0.06746218, 1.06174697], [1517074140000, 0.06746218, 0.06755112, 0.0674527, 0.06755112, 1.3536058], [1517074200000, 0.0676001, 0.067716, 0.0676001, 0.06771592, 4.47220247], [1517074260000, 0.06779471, 0.06779471, 0.06779471, 0.06779471, 0.01549722], [1517074320000, 0.06771592, 0.06771592, 0.06771592, 0.06771592, 0.01628137], [1517074380000, 0.06771591, 0.06771591, 0.06771591, 0.06771591, 0.09039322], [1517074440000, 0.06771591, 0.06771591, 0.06732214, 0.06771591, 5.70530213], [1517074500000, 0.06771591, 0.06784197, 0.06771591, 0.06784197, 0.62510373], [1517074560000, 0.0679, 0.0679, 0.0679, 0.0679, 0.35], [1517074620000, 0.0679, 0.0679, 0.0679, 0.0679, 0.0766011], [1517074680000, 0.06778362, 0.06789992, 0.06770975, 0.06770975, 4.92585912], [1517074740000, 0.0679, 0.0679, 0.0679, 0.0679, 0.80422931], [1517074800000, 0.0679, 0.0679, 0.06780173, 0.0679, 0.23736061], [1517074860000, 0.0679, 0.0682, 0.0679, 0.0682, 0.31954248], [1517074920000, 0.0682, 0.0682, 0.0682, 0.0682, 0.04843255], [1517074980000, 0.06795275, 0.06827486, 0.06795275, 0.06795278, 0.44585789], [1517075040000, 0.06795278, 0.06795278, 0.06795278, 0.06795278, 0.06822424], [1517075100000, 0.06827486, 0.06827486, 0.06827486, 0.06827486, 0.05095717], [1517075160000, 0.06827486, 0.06827486, 0.06827486, 0.06827486, 0.2078767], [1517075220000, 0.06834002, 0.06839731, 0.06834002, 0.06839731, 0.15279738], [1517075280000, 0.06839731, 0.06839731, 0.06834, 0.06834, 0.92921641], [1517075340000, 0.06834, 0.06834, 0.06827486, 0.06834, 0.54688733], [1517075400000, 0.06834, 0.06834, 0.06834, 0.06834, 0.02226687], [1517075460000, 0.0683973, 0.0683973, 0.06834, 0.06834, 1.54103598], [1517075580000, 0.0683973, 0.0683973, 0.0683973, 0.0683973, 0.02339274], [1517075640000, 0.0683973, 0.0683973, 0.06834, 0.0683973, 0.38185187], [1517075700000, 0.0683973, 0.0683973, 0.0683973, 0.0683973, 0.14813], [1517075760000, 0.0683973, 0.06839731, 0.0683973, 0.0683973, 3.5912111], [1517075820000, 0.0683973, 0.06839731, 0.0683973, 0.0683973, 1.76564312], [1517075880000, 0.0683973, 0.0683973, 0.0683973, 0.0683973, 0.9094656], [1517075940000, 0.06839731, 0.06839731, 0.0683973, 0.0683973, 1.34605272], [1517076000000, 0.06839731, 0.06848717, 0.06839731, 0.0684, 1.61617209], [1517076060000, 0.0684, 0.0685, 0.0684, 0.0684, 12.44182593], [1517076120000, 0.0684, 0.0685, 0.0684, 0.0685, 0.14842695], [1517076180000, 0.06848866, 0.06848866, 0.06848866, 0.06848866, 0.04690797], [1517076240000, 0.06848866, 0.06856044, 0.0684, 0.06848866, 2.56999322], [1517076300000, 0.06848866, 0.06848866, 0.0684, 0.0684, 0.03219512], [1517076360000, 0.0684, 0.0684, 0.0684, 0.0684, 0.06191285], [1517076420000, 0.0684, 0.06848869, 0.0684, 0.0684, 0.50349784], [1517076480000, 0.0684, 0.0684, 0.0684, 0.0684, 0.03223684], [1517076540000, 0.0684, 0.0684, 0.0684, 0.0684, 0.01611842], [1517076600000, 0.0684, 0.0684, 0.0684, 0.0684, 0.01611842], [1517076660000, 0.06848869, 0.06850146, 0.0684, 0.06850146, 1.03666635], [1517076720000, 0.06850147, 0.06850147, 0.0684, 0.0684, 0.26522328], [1517076780000, 0.0684, 0.06853452, 0.0684, 0.0684, 0.48439116], [1517076840000, 0.0684, 0.0684, 0.0684, 0.0684, 1.03050284], [1517076900000, 0.0684, 0.06854575, 0.0684, 0.0684, 4.20151974], [1517076960000, 0.0684, 0.0684, 0.0684, 0.0684, 0.03223684], [1517077020000, 0.06854998, 0.06854998, 0.0684, 0.0684, 0.57091411], [1517077080000, 0.0684, 0.0684, 0.06839731, 0.06839731, 24.59416647], [1517077140000, 0.06839731, 0.06839731, 0.0683973, 0.0683973, 13.76822168], [1517077200000, 0.06854999, 0.06855, 0.06854999, 0.06855, 19.20058317], [1517077260000, 0.06855562, 0.06855562, 0.06855, 0.06855, 3.49195539], [1517077320000, 0.06855, 0.06855, 0.06855, 0.06855, 7.1369107], [1517077380000, 0.06855, 0.06855, 0.06855, 0.06855, 0.83928616], [1517077440000, 0.06855, 0.06855, 0.06855, 0.06855, 1.16703136], [1517077500000, 0.06855, 0.0685547, 0.06855, 0.06855, 1.73928418], [1517077560000, 0.06855439, 0.06855439, 0.06855439, 0.06855439, 4.56299748], [1517077620000, 0.06855574, 0.06855574, 0.06855574, 0.06855574, 0.03773508], [1517077680000, 0.06855557, 0.06855557, 0.06855439, 0.06855439, 0.2286346], [1517077740000, 0.06855439, 0.06855439, 0.06855439, 0.06855439, 2.59347831], [1517077800000, 0.06855, 0.06855457, 0.0683973, 0.06855457, 3.37811056], [1517077860000, 0.06855457, 0.06868792, 0.06855457, 0.06855457, 7.41623367], [1517077920000, 0.06855457, 0.06855458, 0.06855457, 0.06855458, 0.1685297], [1517077980000, 0.06855457, 0.06855458, 0.06855457, 0.06855457, 0.55704309], [1517078040000, 0.06855457, 0.06855458, 0.06855457, 0.06855458, 0.21193485], [1517078100000, 0.06855458, 0.06855458, 0.06855457, 0.06855457, 1.168649], [1517078160000, 0.06855457, 0.06855766, 0.0683973, 0.0683973, 9.02917751], [1517078220000, 0.0683973, 0.0683973, 0.0683973, 0.0683973, 0.1271687], [1517078280000, 0.0683973, 0.0683973, 0.0683973, 0.0683973, 0.50246313], [1517078340000, 0.0683973, 0.06863869, 0.0683973, 0.06863869, 3.02342844], [1517078400000, 0.0683973, 0.06863869, 0.0683973, 0.06863869, 0.09469292], [1517078460000, 0.0683973, 0.0683973, 0.0683973, 0.0683973, 0.05767259], [1517078520000, 0.0683973, 0.0683973, 0.06839729, 0.06839729, 0.29187532], [1517078580000, 0.0683973, 0.0683973, 0.06839729, 0.06839729, 0.02815722], [1517078700000, 0.0683973, 0.0684, 0.0683973, 0.0684, 0.24337478], [1517078760000, 0.0684, 0.06865705, 0.0684, 0.0684, 3.46536349], [1517078820000, 0.0684, 0.06873586, 0.06805531, 0.06873586, 18.96278169], [1517078880000, 0.06873523, 0.06873523, 0.06873514, 0.06873514, 0.12019055], [1517079000000, 0.06849999, 0.06873481, 0.06815349, 0.06815349, 0.74595295], [1517079060000, 0.0685, 0.0685, 0.0685, 0.0685, 0.01447726], [1517079120000, 0.0685, 0.0685, 0.0685, 0.0685, 0.21307357], [1517079180000, 0.0685, 0.0685, 0.0685, 0.0685, 0.305254], [1517079240000, 0.0685, 0.0685, 0.0685, 0.0685, 0.85465545], [1517079300000, 0.0685, 0.0685, 0.0685, 0.0685, 0.30807138], [1517079360000, 0.0685, 0.06858, 0.0685, 0.06858, 1.49246834], [1517079420000, 0.06858, 0.06858, 0.06858, 0.06858, 7.02747678], [1517079480000, 0.0682, 0.0682, 0.0682, 0.0682, 0.14655507], [1517079540000, 0.06863072, 0.06863072, 0.06863072, 0.06863072, 0.16558081], [1517079600000, 0.06863072, 0.06863072, 0.0682, 0.0682, 0.34055954], [1517079660000, 0.06863046, 0.06863046, 0.06863046, 0.06863046, 0.05227233], [1517079720000, 0.06863046, 0.06863046, 0.06863038, 0.06863038, 0.0260969], [1517079840000, 0.06863038, 0.06863038, 0.06863038, 0.06863038, 0.04582569], [1517079900000, 0.06863038, 0.06863038, 0.06863038, 0.06863038, 1.03642701], [1517079960000, 0.06863038, 0.06863038, 0.06863038, 0.06863038, 0.07609997], [1517080020000, 0.0682, 0.0682, 0.0682, 0.0682, 0.01951673], [1517080080000, 0.0686302, 0.0686302, 0.0682, 0.0682, 0.15601714], [1517080140000, 0.06863012, 0.06863012, 0.06814458, 0.06814458, 8.71386387], [1517080200000, 0.06814458, 0.06814458, 0.06805531, 0.06805531, 0.23756217], [1517080260000, 0.06805531, 0.06834578, 0.06805531, 0.06834578, 0.03212247], [1517080320000, 0.06805531, 0.06834595, 0.06805531, 0.06805531, 1.11849154], [1517080380000, 0.06834595, 0.06834595, 0.06830984, 0.06830984, 0.09312454], [1517080440000, 0.06800002, 0.06821992, 0.0675, 0.06821992, 8.05783638], [1517080500000, 0.06812992, 0.06812992, 0.0679, 0.0679, 0.16398582], [1517080560000, 0.06799999, 0.06799999, 0.06790001, 0.06790001, 1.10325839], [1517080620000, 0.06799995, 0.06799995, 0.06799, 0.06799, 1.5658032], [1517080740000, 0.06798999, 0.06798999, 0.0679, 0.0679, 0.75152867], [1517080800000, 0.06789999, 0.06789999, 0.06789999, 0.06789999, 0.0429794], [1517080860000, 0.06789999, 0.06789999, 0.06773612, 0.06773612, 0.81019339], [1517080920000, 0.06773611, 0.06789999, 0.06773611, 0.06789999, 1.08813603], [1517080980000, 0.06805, 0.06805, 0.06773612, 0.06804999, 0.45857464], [1517081100000, 0.068, 0.06807, 0.068, 0.06807, 0.78089311], [1517081160000, 0.06806998, 0.06806998, 0.06806998, 0.06806998, 0.05082948], [1517081280000, 0.068048, 0.068048, 0.068048, 0.068048, 1.82], [1517081340000, 0.068048, 0.068048, 0.068048, 0.068048, 0.37051557], [1517081400000, 0.068048, 0.068048, 0.068048, 0.068048, 1.15981924], [1517081520000, 0.068048, 0.068048, 0.068048, 0.068048, 1.01703107], [1517081580000, 0.06793302, 0.068, 0.06793301, 0.068, 1.53174691], [1517081640000, 0.068, 0.06802009, 0.068, 0.06802009, 1.01985148], [1517081760000, 0.06802007, 0.06807, 0.06802007, 0.06807, 0.06796822], [1517081880000, 0.06807, 0.06807, 0.06807, 0.06807, 0.07695414], [1517082000000, 0.06807, 0.06807, 0.06807, 0.06807, 0.59039431], [1517082060000, 0.06793304, 0.06793304, 0.06773613, 0.06773613, 1.0], [1517082180000, 0.06807, 0.06807, 0.06793372, 0.06793372, 0.51506076], [1517082240000, 0.06793372, 0.06793372, 0.06793372, 0.06793372, 0.72947159], [1517082300000, 0.06793372, 0.06793372, 0.06763545, 0.06773611, 3.58855303], [1517082360000, 0.06773611, 0.06773611, 0.06773611, 0.06773611, 0.22897652], [1517082420000, 0.06773611, 0.06773611, 0.06773611, 0.06773611, 0.58057187], [1517082480000, 0.06773611, 0.06773611, 0.06773611, 0.06773611, 0.19745214], [1517082540000, 0.06793371, 0.06793371, 0.06793371, 0.06793371, 0.46967911], [1517082600000, 0.0679337, 0.0679337, 0.0679337, 0.0679337, 0.07360116], [1517082660000, 0.06793371, 0.06793371, 0.06793371, 0.06793371, 0.07700841], [1517082720000, 0.0679337, 0.0679337, 0.06793369, 0.06793369, 0.30200456], [1517082840000, 0.06761465, 0.06761465, 0.06761465, 0.06761465, 0.23664914], [1517082900000, 0.06761465, 0.06793367, 0.06761465, 0.06793367, 0.04582651], [1517083020000, 0.06788592, 0.06788592, 0.06787892, 0.06787892, 0.04052737], [1517083080000, 0.06782406, 0.06782406, 0.06782406, 0.06782406, 0.2], [1517083140000, 0.06781369, 0.06782407, 0.0677142, 0.06782407, 3.52597243], [1517083200000, 0.06786216, 0.06786216, 0.06782407, 0.06782407, 0.0801802], [1517083260000, 0.06782407, 0.06782407, 0.06761465, 0.06761465, 1.43544719], [1517083320000, 0.06761465, 0.06761465, 0.06761465, 0.06761465, 0.01], [1517083380000, 0.06761465, 0.06761465, 0.06761465, 0.06761465, 0.06933778], [1517083440000, 0.06761465, 0.06761465, 0.06761465, 0.06761465, 0.86264517], [1517083500000, 0.06768226, 0.06782406, 0.06768226, 0.06768226, 0.33226839], [1517083560000, 0.06768226, 0.06782406, 0.06768226, 0.06782406, 0.6374403], [1517083620000, 0.0677842, 0.0677842, 0.06768227, 0.06768227, 0.14646006], [1517083680000, 0.06782406, 0.06782407, 0.06782406, 0.06782407, 0.04116061], [1517083740000, 0.06768227, 0.06768227, 0.06768227, 0.06768227, 0.5090151], [1517083800000, 0.06768226, 0.06768226, 0.06768226, 0.06768226, 0.21976904], [1517083860000, 0.06768226, 0.06768226, 0.06751214, 0.06751343, 2.36027465], [1517083920000, 0.06768227, 0.06768227, 0.06768226, 0.06768226, 0.08354871], [1517084040000, 0.06750848, 0.06768, 0.0675, 0.06768, 0.94918186], [1517084100000, 0.06768, 0.06768, 0.06768, 0.06768, 0.14792193], [1517084160000, 0.06768226, 0.06768226, 0.06768226, 0.06768226, 0.01625241], [1517084220000, 0.06768225, 0.06768225, 0.06768225, 0.06768225, 0.33185259], [1517084340000, 0.06768, 0.06768225, 0.0675, 0.0675, 1.11657466], [1517084400000, 0.0675, 0.0675, 0.0675, 0.0675, 0.38494702], [1517084460000, 0.0675, 0.0675, 0.0675, 0.0675, 4.15028827], [1517084520000, 0.0675, 0.0675, 0.06734, 0.06734, 0.49521876], [1517084640000, 0.0675, 0.0675, 0.0675, 0.0675, 0.22222221], [1517084700000, 0.0675, 0.0675, 0.0675, 0.0675, 0.36962962], [1517084760000, 0.0675, 0.06766777, 0.06734, 0.06734, 0.17271062], [1517084820000, 0.06734, 0.06766777, 0.06734, 0.06766776, 0.22561864], [1517084880000, 0.06766776, 0.06766776, 0.06766776, 0.06766776, 1.0], [1517084940000, 0.06766776, 0.06766777, 0.06766776, 0.06766777, 0.1276459], [1517085000000, 0.06752155, 0.06766777, 0.06739709, 0.06766777, 0.06085583], [1517085060000, 0.06766777, 0.06766777, 0.06766777, 0.06766777, 0.24201914], [1517085120000, 0.06766777, 0.06766777, 0.06766777, 0.06766777, 0.191111], [1517085180000, 0.06739709, 0.06739709, 0.06739, 0.06739, 0.08095008], [1517085240000, 0.06739709, 0.06739709, 0.06739709, 0.06739709, 0.15362851], [1517085300000, 0.06739709, 0.06766777, 0.06739709, 0.06766777, 0.11369039], [1517085360000, 0.06766777, 0.06766777, 0.06766777, 0.06766777, 0.12204], [1517085420000, 0.06766777, 0.06766777, 0.06766777, 0.06766777, 0.13476703], [1517085480000, 0.06766777, 0.06768227, 0.06766777, 0.06768227, 4.59270024], [1517085540000, 0.06768227, 0.06768227, 0.06768227, 0.06768227, 0.04553457], [1517085660000, 0.06741154, 0.06741154, 0.06741154, 0.06741154, 0.04994945], [1517085720000, 0.06768227, 0.06768227, 0.06768227, 0.06768227, 0.32455861], [1517085840000, 0.06768227, 0.06768227, 0.06768227, 0.06768227, 0.01593565], [1517085900000, 0.06741156, 0.06768227, 0.06741156, 0.06768227, 0.50991096], [1517086020000, 0.06768227, 0.06768227, 0.06742, 0.06742, 0.16333345], [1517086140000, 0.06768227, 0.06768227, 0.06768227, 0.06768227, 0.11625241], [1517086200000, 0.06768227, 0.06768227, 0.06768227, 0.06768227, 0.298076], [1517086260000, 0.06768227, 0.06768227, 0.06768227, 0.06768227, 0.14737981], [1517086320000, 0.06768227, 0.06768227, 0.06768227, 0.06768227, 0.45990114], [1517086380000, 0.06759412, 0.06759412, 0.06759412, 0.06759412, 0.44321535], [1517086440000, 0.06759412, 0.06759412, 0.06759412, 0.06759412, 1.18400263], [1517086500000, 0.06759412, 0.06759412, 0.06742, 0.06742, 0.21191901], [1517086560000, 0.06759412, 0.06759412, 0.06742, 0.06742, 0.80722312], [1517086620000, 0.06742, 0.06742, 0.06707738, 0.06707738, 7.97673094], [1517086680000, 0.06736718, 0.06736718, 0.06714445, 0.06714445, 0.46900863], [1517086740000, 0.06714445, 0.06736713, 0.06714445, 0.0673671, 2.56238744], [1517086800000, 0.06736015, 0.06736015, 0.06705, 0.06705, 3.47632464], [1517086860000, 0.06705, 0.06709065, 0.06703, 0.06709065, 6.96484617], [1517086920000, 0.06709067, 0.06736007, 0.06709067, 0.06736004, 0.3623467], [1517087040000, 0.06735999, 0.06735999, 0.06735999, 0.06735999, 0.66805235], [1517087100000, 0.06735994, 0.06735994, 0.06735994, 0.06735994, 1.01443514], [1517087220000, 0.06735987, 0.06735987, 0.06735985, 0.06735985, 1.14668197], [1517087280000, 0.06735984, 0.06735984, 0.06735984, 0.06735984, 2.51759606], [1517087580000, 0.0673598, 0.0674, 0.0673598, 0.06735981, 0.18431898], [1517087640000, 0.06735981, 0.06735981, 0.06735981, 0.06735981, 0.03273466], [1517087700000, 0.06735981, 0.0674, 0.06713466, 0.06713466, 1.04905513], [1517087880000, 0.0673598, 0.0674, 0.0673598, 0.0674, 0.25168966], [1517087940000, 0.0674, 0.0674, 0.06709069, 0.06709069, 0.33879482], [1517088000000, 0.0674, 0.06742, 0.0674, 0.06742, 0.21646376], [1517088060000, 0.06742, 0.06742, 0.06742, 0.06742, 0.05776187], [1517088120000, 0.06713089, 0.06713089, 0.06713079, 0.06713079, 0.027], [1517088180000, 0.06742, 0.06742, 0.06742, 0.06742, 0.0218005], [1517088240000, 0.06742, 0.06742, 0.06742, 0.06742, 0.13039772], [1517088360000, 0.06742, 0.06742, 0.06742, 0.06742, 0.01363008], [1517088420000, 0.06716613, 0.06716613, 0.06716613, 0.06716613, 0.19881289], [1517088480000, 0.06742, 0.06742, 0.06742, 0.06742, 0.34760453], [1517088540000, 0.06742, 0.06742, 0.06742, 0.06742, 0.02270577], [1517088600000, 0.06742, 0.06769959, 0.06742, 0.06769959, 0.15326493], [1517088660000, 0.06718275, 0.06769955, 0.06717892, 0.06717892, 2.92671995], [1517088720000, 0.06716613, 0.06763754, 0.06716613, 0.06763754, 0.47588888], [1517088780000, 0.06763754, 0.06763781, 0.06763754, 0.06763754, 0.68048894], [1517088840000, 0.06763753, 0.06763778, 0.06763753, 0.06763778, 5.0811505], [1517088900000, 0.06763778, 0.06763778, 0.06763778, 0.06763778, 0.03260012], [1517088960000, 0.06764603, 0.06764787, 0.06763778, 0.06764787, 3.71183576], [1517089020000, 0.06763778, 0.06767888, 0.06763778, 0.06763778, 3.75874055], [1517089080000, 0.06763778, 0.067638, 0.06763753, 0.06763753, 11.36292162], [1517089140000, 0.06763753, 0.06763753, 0.06763753, 0.06763753, 0.47720024], [1517089200000, 0.06763753, 0.06763753, 0.06763753, 0.06763753, 0.92616011], [1517089260000, 0.06763753, 0.06763753, 0.06724609, 0.06724609, 0.99325099], [1517089320000, 0.06763753, 0.06765963, 0.06763753, 0.06765963, 0.05985875], [1517089380000, 0.06724609, 0.06759204, 0.06724609, 0.06759204, 0.032521], [1517089440000, 0.06732133, 0.06769986, 0.06724609, 0.06724609, 1.60169177], [1517089500000, 0.06769984, 0.06769984, 0.06736134, 0.06736134, 0.03702314], [1517089560000, 0.06721613, 0.06721613, 0.06721613, 0.06721613, 0.65138723], [1517089680000, 0.06721622, 0.06767986, 0.06721614, 0.06767986, 1.50778856], [1517089740000, 0.06756903, 0.06761541, 0.06756903, 0.0676154, 0.27030136], [1517089800000, 0.0675661, 0.0675661, 0.0675661, 0.0675661, 1.0400452], [1517089920000, 0.06756226, 0.06756226, 0.06721614, 0.06721614, 0.42880448], [1517089980000, 0.06721614, 0.06721614, 0.06721614, 0.06721614, 0.54159314], [1517090040000, 0.06757996, 0.06757996, 0.06721614, 0.06757993, 0.42582507], [1517090100000, 0.06757991, 0.06757991, 0.06757991, 0.06757991, 0.02467648], [1517090220000, 0.06743842, 0.06743842, 0.06721614, 0.06721614, 1.17634825], [1517090280000, 0.06721614, 0.06721614, 0.06721613, 0.06721613, 4.32340373], [1517090460000, 0.06761538, 0.06761538, 0.06761538, 0.06761538, 0.00948383], [1517090580000, 0.0676, 0.0676, 0.0676, 0.0676, 0.02807524], [1517090700000, 0.0676, 0.0676, 0.0676, 0.0676, 0.02], [1517090760000, 0.06728335, 0.06728335, 0.06728335, 0.06728335, 0.5], [1517090820000, 0.0675, 0.0675, 0.0675, 0.0675, 1.01274089], [1517090880000, 0.0675, 0.0675, 0.0675, 0.0675, 0.98715911], [1517090940000, 0.0676, 0.0676, 0.0676, 0.0676, 0.27755288], [1517091000000, 0.0676, 0.0676, 0.0676, 0.0676, 1.56129094], [1517091060000, 0.0676125, 0.0676125, 0.0676, 0.0676, 0.4272782], [1517091120000, 0.0676, 0.06760005, 0.0676, 0.0676, 2.92956689], [1517091180000, 0.0676, 0.0676, 0.0676, 0.0676, 0.01630917], [1517091240000, 0.0676, 0.0676154, 0.0676, 0.0676154, 2.19236372], [1517091300000, 0.0676, 0.0676, 0.0676, 0.0676, 0.04822773], [1517091360000, 0.0676, 0.0676, 0.0676, 0.0676, 0.33366345], [1517091420000, 0.0676, 0.0676, 0.0676, 0.0676, 2.96977319], [1517091540000, 0.0676154, 0.0676154, 0.0676154, 0.0676154, 0.59877084], [1517091600000, 0.0676154, 0.0676154, 0.0676154, 0.0676154, 0.71113018], [1517091660000, 0.0676, 0.0676154, 0.0676, 0.06761539, 1.6396178], [1517091720000, 0.06761539, 0.06761539, 0.06761539, 0.06761539, 0.05487286], [1517091780000, 0.06761539, 0.06761539, 0.06761539, 0.06761539, 0.28414151], [1517091840000, 0.06761539, 0.06761539, 0.06761539, 0.06761539, 0.73637299], [1517091900000, 0.06761539, 0.06761539, 0.06761539, 0.06761539, 0.29525693], [1517091960000, 0.0676154, 0.0676154, 0.0676154, 0.0676154, 0.27460851], [1517092080000, 0.06762, 0.06762, 0.06761542, 0.06761542, 0.32], [1517092140000, 0.0676998, 0.0676998, 0.0676998, 0.0676998, 0.31605081], [1517092200000, 0.06761542, 0.06761542, 0.06761539, 0.06761539, 1.11275768], [1517092260000, 0.06769912, 0.06769912, 0.06769912, 0.06769912, 0.05013546], [1517092320000, 0.06769912, 0.06769912, 0.06769912, 0.06769912, 0.01624836], [1517092380000, 0.06769912, 0.06769912, 0.06769912, 0.06769912, 0.22218875], [1517092440000, 0.06769912, 0.0677, 0.06769912, 0.0677, 0.23028106], [1517092500000, 0.06769912, 0.06769912, 0.06761539, 0.06761539, 0.19001234], [1517092560000, 0.06761539, 0.06769912, 0.06761539, 0.06769912, 5.59638039], [1517092620000, 0.06761539, 0.06786, 0.06761539, 0.06786, 0.43400843], [1517092680000, 0.0677, 0.0678883, 0.0677, 0.0677, 1.12162062], [1517092740000, 0.06786, 0.06786, 0.06786, 0.06786, 0.01489861], [1517092800000, 0.06785999, 0.06785999, 0.06785999, 0.06785999, 0.02059435], [1517092860000, 0.06785999, 0.06785999, 0.06785999, 0.06785999, 0.01489862], [1517092920000, 0.06786, 0.06786, 0.06786, 0.06786, 0.02365915], [1517092980000, 0.06786, 0.06786, 0.06786, 0.06786, 1.5], [1517093100000, 0.0677, 0.0677, 0.0677, 0.0677, 0.20535438], [1517093160000, 0.0677, 0.0677, 0.0677, 0.0677, 0.06222788], [1517093220000, 0.0676779, 0.0677, 0.0676779, 0.0677, 1.39165642], [1517093340000, 0.0677, 0.0677, 0.0677, 0.0677, 0.28411669], [1517093400000, 0.0677, 0.06786, 0.0677, 0.06786, 3.69044815], [1517093460000, 0.06786, 0.06786, 0.06786, 0.06786, 1.52355763], [1517093520000, 0.06787, 0.06787, 0.06787, 0.06787, 1.41563945], [1517093580000, 0.06787, 0.06787, 0.06761539, 0.06761539, 0.1805761], [1517093700000, 0.0678883, 0.06789, 0.06762, 0.06762, 2.16143876], [1517093940000, 0.06762, 0.06794998, 0.06762, 0.06794998, 0.1750428], [1517094000000, 0.06794999, 0.06794999, 0.06794999, 0.06794999, 0.01921403], [1517094120000, 0.06793, 0.06793, 0.06762, 0.06762, 0.8790791], [1517094240000, 0.06794996, 0.06794997, 0.06762, 0.06762, 3.04234896], [1517094300000, 0.06794996, 0.06794999, 0.06794996, 0.06794996, 0.63239191], [1517094360000, 0.06794996, 0.06794996, 0.06762001, 0.06762001, 2.1026544], [1517094420000, 0.06762001, 0.06762001, 0.06762001, 0.06762001, 5.13], [1517094480000, 0.06762001, 0.067969, 0.06762001, 0.067969, 2.05030713], [1517094540000, 0.06762001, 0.06796899, 0.06762001, 0.06762001, 0.18250167], [1517094600000, 0.06762001, 0.06795, 0.06762001, 0.06795, 0.16289773], [1517094660000, 0.06762001, 0.06762001, 0.06762001, 0.06762001, 0.0326087], [1517094720000, 0.06762001, 0.06769225, 0.06762001, 0.06769225, 0.0302746], [1517094780000, 0.06769225, 0.06769225, 0.06762001, 0.06762001, 0.01628695], [1517094900000, 0.067969, 0.067969, 0.06778999, 0.067969, 1.17700712], [1517094960000, 0.067969, 0.06806, 0.06766976, 0.06806, 1.75803731], [1517095020000, 0.06806, 0.06806, 0.06806, 0.06806, 1.46561857], [1517095080000, 0.06806, 0.06812969, 0.06764817, 0.06764817, 5.52449321], [1517095140000, 0.0677438, 0.0677438, 0.0677438, 0.0677438, 1.90789538], [1517095200000, 0.06812967, 0.06812968, 0.06812967, 0.06812968, 1.02745202], [1517095260000, 0.06812968, 0.0681297, 0.06774673, 0.06774673, 1.00990255], [1517095320000, 0.0681297, 0.0681297, 0.0681297, 0.0681297, 0.05802174], [1517095380000, 0.06774683, 0.06774683, 0.06774683, 0.06774683, 0.03], [1517095440000, 0.0681297, 0.0681297, 0.06774682, 0.0681297, 0.69095811], [1517095500000, 0.0681297, 0.0681297, 0.06773854, 0.06773854, 12.57437176], [1517095620000, 0.06812989, 0.06812989, 0.06812989, 0.06812989, 0.01502978], [1517095800000, 0.06780439, 0.0681299, 0.06780439, 0.0681299, 0.5400934], [1517096100000, 0.06812988, 0.06812988, 0.06787, 0.06787, 0.59291106], [1517096160000, 0.06787, 0.06787, 0.06787, 0.06787, 0.29090712], [1517096220000, 0.06787, 0.06787, 0.0678044, 0.06787, 0.15387237], [1517096280000, 0.06780441, 0.06787, 0.06780439, 0.06787, 0.62717658], [1517096340000, 0.06787, 0.06787, 0.06787, 0.06787, 0.03252024], [1517096400000, 0.06787, 0.06787, 0.06787, 0.06787, 0.15484333], [1517096460000, 0.06787, 0.06787, 0.06787, 0.06787, 0.01626012], [1517096520000, 0.06780439, 0.06787, 0.06780439, 0.06787, 0.57324285], [1517096580000, 0.06786999, 0.06786999, 0.06786999, 0.06786999, 0.01626012], [1517096640000, 0.06786999, 0.06786999, 0.06780439, 0.06786999, 0.1810023], [1517096700000, 0.06786999, 0.06786999, 0.06786999, 0.06786999, 1.24582052], [1517096760000, 0.06786999, 0.06786999, 0.06786999, 0.06786999, 0.03252024], [1517096820000, 0.06786999, 0.06786999, 0.06762049, 0.06786999, 6.34272306], [1517096880000, 0.06762002, 0.06787, 0.06762, 0.06787, 7.34952426], [1517096940000, 0.06787, 0.06787, 0.06787, 0.06787, 0.37851943], [1517097000000, 0.06812989, 0.06812989, 0.06812989, 0.06812989, 0.31356305], [1517097120000, 0.06812989, 0.06812989, 0.06812989, 0.06812989, 0.33552415], [1517097240000, 0.06770367, 0.06770367, 0.06770367, 0.06770367, 0.57611113], [1517097300000, 0.06812989, 0.06812989, 0.06812988, 0.06812988, 0.20242485], [1517097360000, 0.06812986, 0.06812987, 0.06766976, 0.06766976, 3.27196498], [1517097420000, 0.06812988, 0.06812988, 0.06812988, 0.06812988, 0.1350362], [1517097540000, 0.06805265, 0.06805265, 0.06805265, 0.06805265, 0.53034474], [1517097720000, 0.06762, 0.06812966, 0.06740003, 0.0681296, 6.0480998], [1517097780000, 0.06801005, 0.06801005, 0.06801004, 0.06801004, 0.02783841], [1517097900000, 0.06764317, 0.06764317, 0.06764317, 0.06764317, 0.20773225], [1517098020000, 0.0676671, 0.06805265, 0.0676671, 0.06805265, 1.06635279], [1517098080000, 0.06805265, 0.06805265, 0.06805265, 0.06805265, 0.10365138], [1517098140000, 0.06805265, 0.06805265, 0.06805265, 0.06805265, 0.07679561], [1517098200000, 0.06805265, 0.06805265, 0.06768511, 0.06768511, 0.02981501], [1517098320000, 0.06805264, 0.06805265, 0.06805264, 0.06805265, 0.08196866], [1517098380000, 0.06805264, 0.06805265, 0.06805264, 0.06805265, 0.57283167], [1517098440000, 0.06805265, 0.06805265, 0.06805265, 0.06805265, 0.25222078], [1517098500000, 0.06768511, 0.06805265, 0.06768511, 0.06805264, 1.80974971], [1517098620000, 0.06774681, 0.06805265, 0.06774681, 0.06805265, 0.0351024], [1517098740000, 0.06768511, 0.06768511, 0.06768511, 0.06768511, 1.29291775], [1517099040000, 0.06756165, 0.06756165, 0.06756165, 0.06756165, 0.03233804], [1517099100000, 0.06794258, 0.06794258, 0.06794258, 0.06794258, 0.23580609], [1517099220000, 0.06794258, 0.06794258, 0.06794258, 0.06794258, 0.01616395], [1517099280000, 0.06794258, 0.06794258, 0.06794258, 0.06794258, 0.51405856], [1517099520000, 0.06768405, 0.06768405, 0.06768405, 0.06768405, 0.40939467], [1517099640000, 0.06794258, 0.06794258, 0.06794258, 0.06794258, 0.25876004], [1517099700000, 0.06794258, 0.06797332, 0.06794258, 0.06797332, 0.22404447], [1517099760000, 0.06805265, 0.06805265, 0.06805265, 0.06805265, 1.22546155], [1517099820000, 0.06805265, 0.06805265, 0.06805265, 0.06805265, 0.04382661], [1517099880000, 0.06805265, 0.06805265, 0.06805265, 0.06805265, 0.04397326], [1517100060000, 0.06805265, 0.06805265, 0.06805249, 0.06805249, 0.68853078], [1517100120000, 0.06805249, 0.06805263, 0.06805249, 0.06805263, 0.01898708], [1517100180000, 0.06768405, 0.06768405, 0.06768405, 0.06768405, 0.01057465], [1517100240000, 0.06768405, 0.06768405, 0.06768405, 0.06768405, 0.10215759], [1517100300000, 0.06805263, 0.06805263, 0.06805263, 0.06805263, 0.14694515], [1517100360000, 0.06805263, 0.06805263, 0.06768405, 0.06768405, 0.04326123], [1517100420000, 0.06768405, 0.06768405, 0.06757486, 0.06757486, 9.51880721], [1517100480000, 0.06768405, 0.06768405, 0.06768404, 0.06768405, 2.22813364], [1517100600000, 0.06768405, 0.06799996, 0.06768405, 0.06799996, 0.14724043], [1517100660000, 0.06758054, 0.067582, 0.06728401, 0.067582, 19.94004631], [1517100720000, 0.06794653, 0.06794653, 0.06792191, 0.06792191, 0.40120428], [1517100780000, 0.06752939, 0.06792107, 0.06746, 0.06792107, 4.62959307], [1517100840000, 0.06792107, 0.06799985, 0.06792107, 0.06799985, 15.04531576], [1517100900000, 0.06793879, 0.06793879, 0.06793879, 0.06793879, 0.82597088], [1517100960000, 0.06799293, 0.06799293, 0.06799293, 0.06799293, 0.05575549], [1517101020000, 0.0679929, 0.06799291, 0.0679929, 0.06799291, 0.06603772], [1517101200000, 0.06798133, 0.06798133, 0.06798133, 0.06798133, 0.29475345], [1517101260000, 0.06773108, 0.06798133, 0.06773108, 0.06798133, 0.06252961], [1517101320000, 0.06798133, 0.06798133, 0.06798133, 0.06798133, 1.01252961], [1517101380000, 0.06798132, 0.06798132, 0.06798132, 0.06798132, 0.01618091], [1517101500000, 0.06798132, 0.06799993, 0.06798132, 0.06798133, 7.67929138], [1517101680000, 0.06799993, 0.06799993, 0.06773108, 0.06799993, 3.05850329], [1517101740000, 0.06799993, 0.06799993, 0.06767717, 0.06767717, 3.25155652], [1517101800000, 0.06773644, 0.06773644, 0.06759095, 0.06767717, 1.5849], [1517101920000, 0.06799993, 0.06812986, 0.06799993, 0.06812986, 11.03802124], [1517101980000, 0.06812986, 0.06812986, 0.06812986, 0.06812986, 5.75746157], [1517102040000, 0.06766524, 0.06812989, 0.06766524, 0.06812989, 0.59946288], [1517102280000, 0.06812989, 0.06812989, 0.0677471, 0.06812989, 0.10082625], [1517102400000, 0.06812989, 0.0681299, 0.06812989, 0.0681299, 0.14562122], [1517102460000, 0.0681299, 0.06826272, 0.0681299, 0.06826272, 1.88515164], [1517102520000, 0.06826272, 0.06826272, 0.0681299, 0.0681299, 0.11320031], [1517102580000, 0.0678479, 0.06824749, 0.0678276, 0.06824749, 1.25676828], [1517102640000, 0.06821, 0.06821, 0.06821, 0.06821, 0.15971171], [1517102700000, 0.06820131, 0.06820131, 0.0682013, 0.0682013, 0.37661605], [1517102760000, 0.06822875, 0.06822875, 0.06822875, 0.06822875, 0.11349716], [1517102820000, 0.06826171, 0.06826171, 0.06784227, 0.06784227, 0.27537031], [1517102880000, 0.06803, 0.06834351, 0.06803, 0.06803, 5.18711567], [1517102940000, 0.06834351, 0.06834351, 0.06834351, 0.06834351, 0.0226264], [1517103000000, 0.06834351, 0.06834351, 0.06803, 0.06803, 0.34222152], [1517103060000, 0.06834351, 0.06834351, 0.06803, 0.06803, 0.02464905], [1517103120000, 0.06803, 0.06834351, 0.06803, 0.06834351, 0.29199864], [1517103180000, 0.0680478, 0.0680478, 0.0680478, 0.0680478, 0.14], [1517103300000, 0.06834351, 0.068399, 0.06834351, 0.06839277, 1.36059478], [1517103420000, 0.06839277, 0.06839277, 0.06839277, 0.06839277, 0.06116605], [1517103480000, 0.06839277, 0.06839277, 0.06839277, 0.06839277, 0.2739479], [1517103660000, 0.06839277, 0.06839277, 0.06839277, 0.06839277, 0.13675812], [1517103840000, 0.06822178, 0.06822178, 0.06822178, 0.06822178, 0.02062542], [1517103900000, 0.06822178, 0.06822178, 0.06803, 0.06803, 0.02911593], [1517103960000, 0.06803, 0.06822178, 0.06803, 0.06804, 0.32204268], [1517104020000, 0.06804, 0.06804, 0.06804, 0.06804, 2.0], [1517104140000, 0.06822178, 0.06822178, 0.06804, 0.06822178, 1.22299373], [1517104200000, 0.06813089, 0.06813089, 0.06813089, 0.06813089, 0.075339], [1517104260000, 0.06822178, 0.06822178, 0.06822178, 0.06822178, 0.01602061], [1517104320000, 0.06813089, 0.06822178, 0.06813089, 0.06822178, 0.38744465], [1517104380000, 0.06822178, 0.06822178, 0.06813089, 0.06813089, 1.56124011], [1517104440000, 0.06813089, 0.06813089, 0.06813089, 0.06813089, 0.29994443], [1517104500000, 0.06813089, 0.06813089, 0.06813089, 0.06813089, 1.15255536], [1517104740000, 0.06824778, 0.06824778, 0.06813089, 0.06813089, 0.1673334], [1517104860000, 0.06828496, 0.06828496, 0.06734525, 0.06745811, 91.24325628], [1517104920000, 0.06735316, 0.06745811, 0.06735316, 0.06735317, 0.81624938], [1517104980000, 0.0674581, 0.0674581, 0.0674581, 0.0674581, 0.5434077], [1517105040000, 0.0674581, 0.0674581, 0.06735316, 0.06735316, 3.83310974], [1517105100000, 0.06735316, 0.06735316, 0.06724971, 0.06728336, 15.66606494], [1517105160000, 0.06728336, 0.06728336, 0.06702738, 0.06710419, 12.30726281], [1517105220000, 0.06710419, 0.06711768, 0.06703826, 0.06709753, 10.81300614], [1517105280000, 0.06711609, 0.06712021, 0.06711609, 0.06712021, 0.08772701], [1517105340000, 0.06712021, 0.0673221, 0.06710514, 0.06719211, 1.9844838], [1517105400000, 0.06708132, 0.06722142, 0.06708132, 0.0672205, 7.18293854], [1517105460000, 0.06722117, 0.06722117, 0.0672205, 0.06722059, 1.20555917], [1517105520000, 0.06745808, 0.06745808, 0.06729072, 0.06729072, 0.66762081], [1517105580000, 0.06725311, 0.06725311, 0.06725311, 0.06725311, 0.01486089], [1517105760000, 0.06734574, 0.06734574, 0.06734574, 0.06734574, 0.19864188], [1517105820000, 0.06732233, 0.06732233, 0.0670815, 0.0670815, 3.54667342], [1517105880000, 0.06708851, 0.06721407, 0.06698499, 0.06718899, 28.90966725], [1517105940000, 0.0673255, 0.06745809, 0.0673255, 0.0673278, 1.6907391], [1517106000000, 0.06730871, 0.06730871, 0.0671, 0.0671, 0.27817023], [1517106060000, 0.06706878, 0.06706878, 0.06698499, 0.06698499, 8.76579303], [1517106120000, 0.06698499, 0.06698499, 0.06698499, 0.06698499, 0.56306306], [1517106180000, 0.06727803, 0.06727803, 0.06723154, 0.06723154, 0.14863692], [1517106240000, 0.06698501, 0.06710519, 0.06698501, 0.06698501, 2.65488915], [1517106300000, 0.06698502, 0.06722399, 0.06698502, 0.06698503, 3.08659145], [1517106360000, 0.0671874, 0.0671874, 0.06698504, 0.06714309, 0.82554307], [1517106420000, 0.06714309, 0.06714309, 0.06713958, 0.06713958, 0.62407516], [1517106480000, 0.06710221, 0.06710656, 0.06698499, 0.06698499, 5.78101084], [1517106540000, 0.06698499, 0.06698505, 0.06692, 0.06692, 0.58898655], [1517106600000, 0.06693914, 0.06714, 0.06693914, 0.06700608, 0.12199852], [1517106660000, 0.06713999, 0.06713999, 0.06713999, 0.06713999, 0.44935658], [1517106720000, 0.06713999, 0.06713999, 0.06713999, 0.06713999, 0.16159347], [1517106780000, 0.06713999, 0.06714, 0.06707285, 0.06714, 0.55250548], [1517106840000, 0.0670393, 0.0670393, 0.0670393, 0.0670393, 0.14878987], [1517106900000, 0.0670393, 0.06713999, 0.06686656, 0.06713999, 1.9038878], [1517107020000, 0.06714, 0.06714, 0.06686666, 0.06713322, 2.31362189], [1517107080000, 0.06709979, 0.06709979, 0.06686664, 0.06686664, 0.03228603], [1517107140000, 0.06715838, 0.06717126, 0.06697899, 0.06700016, 3.63462405], [1517107200000, 0.06709523, 0.06777, 0.0669169, 0.06777, 15.5077304], [1517107260000, 0.06733425, 0.06746625, 0.06686664, 0.06720097, 10.50704357], [1517107320000, 0.06720097, 0.06744018, 0.06720097, 0.06723258, 15.84270411], [1517107380000, 0.06726776, 0.0673684, 0.06726776, 0.0673684, 0.928504], [1517107440000, 0.06723318, 0.06732363, 0.06720097, 0.06720097, 0.19751418], [1517107500000, 0.06720097, 0.06729461, 0.06720097, 0.06720097, 0.19244962], [1517107560000, 0.06736321, 0.06736321, 0.06720097, 0.06720097, 0.08718723], [1517107620000, 0.06744052, 0.06744052, 0.06720097, 0.06720097, 0.03700854], [1517107680000, 0.06733715, 0.06733715, 0.06733715, 0.06733715, 0.04603698], [1517107740000, 0.06720097, 0.06720097, 0.06720097, 0.06720097, 3.36827758], [1517107800000, 0.06720097, 0.06724006, 0.06720097, 0.06724006, 0.25378318], [1517107920000, 0.06725714, 0.06769193, 0.06720097, 0.06769192, 13.88669719], [1517107980000, 0.067, 0.06737246, 0.0669665, 0.06737246, 1.09778231], [1517108040000, 0.06745676, 0.06745676, 0.06684093, 0.06684093, 1.70708052], [1517108100000, 0.06684094, 0.06742436, 0.0668, 0.06742436, 4.15599809], [1517108160000, 0.0671227, 0.0671227, 0.0670166, 0.0670166, 1.07058074], [1517108220000, 0.067, 0.067, 0.06688781, 0.06688781, 24.02997291], [1517108340000, 0.06688781, 0.06688782, 0.06688781, 0.06688782, 0.76650455], [1517108400000, 0.06688782, 0.06699999, 0.06688781, 0.06699999, 0.19542717], [1517108460000, 0.06697518, 0.06697518, 0.0667, 0.0667, 9.54800562], [1517108520000, 0.06688812, 0.06693897, 0.06688812, 0.06693897, 0.17753377], [1517108580000, 0.06699999, 0.06699999, 0.06670001, 0.06670001, 3.26032738], [1517108640000, 0.0668354, 0.0668354, 0.06669999, 0.06669999, 0.8319072], [1517108700000, 0.06669999, 0.06669999, 0.0666001, 0.0666001, 3.48525755], [1517108760000, 0.0666785, 0.06699999, 0.0666, 0.06683633, 6.00043063], [1517108820000, 0.06666672, 0.06699999, 0.06666671, 0.06666671, 1.66641791], [1517108880000, 0.0668853, 0.0668853, 0.0668853, 0.0668853, 0.29419353], [1517108940000, 0.06666672, 0.06699844, 0.0666507, 0.06699, 1.62386874], [1517109000000, 0.06699, 0.06699, 0.0666, 0.06699, 10.34592296], [1517109060000, 0.06659422, 0.06699, 0.06659421, 0.06659421, 6.87587929], [1517109120000, 0.0667696, 0.0669113, 0.0665, 0.06689325, 14.16946165], [1517109180000, 0.06677986, 0.0668762, 0.0665, 0.0668762, 6.05059792], [1517109240000, 0.06698999, 0.06698999, 0.06650001, 0.06679405, 5.63382549], [1517109300000, 0.06679405, 0.06679405, 0.06650001, 0.06650001, 1.2], [1517109360000, 0.06679209, 0.0668333, 0.06666001, 0.0668333, 3.65214796], [1517109420000, 0.06666, 0.06684124, 0.06666, 0.06666, 10.75014013], [1517109480000, 0.06666, 0.06666, 0.06666, 0.06666, 5.08], [1517109540000, 0.06698999, 0.06698999, 0.06666, 0.06666002, 5.23172248], [1517109600000, 0.06666002, 0.06666002, 0.06666002, 0.06666002, 1.08], [1517109660000, 0.0669, 0.0669, 0.06666, 0.06666, 1.80221559], [1517109720000, 0.06666, 0.0669, 0.06662876, 0.06662876, 6.57306817], [1517109780000, 0.06658819, 0.0669, 0.06648, 0.0669, 7.68653156], [1517109840000, 0.06648001, 0.0669, 0.06639877, 0.06687144, 9.59992506], [1517109900000, 0.06646225, 0.06686073, 0.06629979, 0.06629979, 9.84694639], [1517109960000, 0.0663973, 0.06664997, 0.06629981, 0.06629983, 7.5], [1517110020000, 0.06629983, 0.06670453, 0.06629983, 0.06629983, 2.1476207], [1517110080000, 0.06630003, 0.06660797, 0.06630003, 0.06632, 2.77839853], [1517110140000, 0.06679999, 0.06685547, 0.06632002, 0.06632004, 26.93], [1517110200000, 0.066321, 0.06665488, 0.066321, 0.06665488, 0.06650291], [1517110260000, 0.06662155, 0.06662155, 0.066321, 0.06632102, 8.61053178], [1517110320000, 0.06632102, 0.06675382, 0.066321, 0.06675382, 1.89279275], [1517110380000, 0.06652117, 0.06652117, 0.06652117, 0.06652117, 0.9600777], [1517110440000, 0.06652117, 0.06652117, 0.066321, 0.066321, 4.30948287], [1517110500000, 0.06635487, 0.06652117, 0.066321, 0.06652117, 4.71800344], [1517110560000, 0.06679997, 0.06679997, 0.06679997, 0.06679997, 0.5], [1517110620000, 0.06669998, 0.06669998, 0.06669998, 0.06669998, 0.02767161], [1517110740000, 0.06669997, 0.06669997, 0.06669997, 0.06669997, 0.69195475], [1517110800000, 0.06669997, 0.06669997, 0.06669996, 0.06669996, 0.1831407], [1517110860000, 0.06669996, 0.06669996, 0.06669996, 0.06669996, 0.21966167], [1517110920000, 0.06669997, 0.06669997, 0.06669996, 0.06669997, 2.95081987], [1517110980000, 0.06669997, 0.06669997, 0.0665, 0.0665, 2.64495227], [1517111100000, 0.0665, 0.0665, 0.06649999, 0.06649999, 0.90076768], [1517111160000, 0.06649999, 0.06649999, 0.06649999, 0.06649999, 0.37764803], [1517111220000, 0.06649999, 0.06669996, 0.06649999, 0.06669995, 0.40482262], [1517111280000, 0.06669995, 0.06669996, 0.06649988, 0.06649988, 4.61428442], [1517111340000, 0.06669994, 0.06669994, 0.066476, 0.06669994, 3.29348102], [1517111400000, 0.06669994, 0.06669994, 0.06669994, 0.06669994, 0.59970104], [1517111580000, 0.06669993, 0.06669996, 0.06669993, 0.06669996, 2.67175001], [1517111640000, 0.06669995, 0.06669995, 0.06669995, 0.06669995, 0.0210008], [1517111700000, 0.06669995, 0.06669997, 0.06669995, 0.06669997, 28.54724686], [1517111760000, 0.06669996, 0.06669997, 0.06669996, 0.06669997, 6.03464617], [1517111820000, 0.06669997, 0.06669997, 0.06669996, 0.06669996, 0.05204945], [1517111880000, 0.06669996, 0.06669996, 0.06669996, 0.06669996, 0.05755243], [1517111940000, 0.06669997, 0.06669997, 0.06669997, 0.06669997, 0.06447564], [1517112060000, 0.06669997, 0.06669997, 0.06669997, 0.06669997, 0.17441569], [1517112120000, 0.06669997, 0.06669997, 0.0664, 0.06669997, 0.86576375], [1517112180000, 0.06632005, 0.06669997, 0.06632004, 0.06669997, 3.86309936], [1517112240000, 0.06669997, 0.06669997, 0.06669997, 0.06669997, 2.55157003], [1517112300000, 0.06669997, 0.06669997, 0.06669996, 0.06669997, 0.6221751], [1517112420000, 0.06669997, 0.06669997, 0.06669995, 0.06669995, 1.31647627], [1517112480000, 0.06669995, 0.06669995, 0.06669995, 0.06669995, 0.34621555], [1517112540000, 0.06669995, 0.06669995, 0.06669995, 0.06669995, 0.18541646], [1517112600000, 0.06669995, 0.06669997, 0.06669995, 0.06669997, 0.59970012], [1517112660000, 0.06669997, 0.06669999, 0.06669997, 0.06669999, 3.07603579], [1517112780000, 0.06669999, 0.06669999, 0.06669999, 0.06669999, 0.07206478], [1517112840000, 0.06669999, 0.06669999, 0.06669999, 0.06669999, 0.06252385], [1517112900000, 0.06669999, 0.06703499, 0.06669999, 0.06703499, 1.64527758], [1517112960000, 0.06669999, 0.06703498, 0.06669999, 0.06703498, 5.79548553], [1517113020000, 0.06703486, 0.06703486, 0.06703486, 0.06703486, 0.5150262], [1517113080000, 0.06703476, 0.06703476, 0.06703476, 0.06703476, 0.01078848], [1517113140000, 0.06703472, 0.06703472, 0.06703472, 0.06703472, 1.0], [1517113200000, 0.06703472, 0.06703472, 0.06703472, 0.06703472, 0.14917647], [1517113260000, 0.06703472, 0.06703472, 0.0665, 0.0665, 5.99696694], [1517113320000, 0.0665, 0.06703299, 0.0665, 0.06703299, 1.78803819], [1517113440000, 0.0665, 0.0665, 0.0665, 0.0665, 1.05976189], [1517113560000, 0.0665, 0.0665, 0.0665, 0.0665, 0.28], [1517113740000, 0.06690026, 0.06690026, 0.0665, 0.0665, 1.57535049], [1517113800000, 0.06690021, 0.06690025, 0.06690021, 0.06690025, 0.7473819], [1517113860000, 0.0666, 0.0666, 0.0666, 0.0666, 0.0331081], [1517113920000, 0.06690021, 0.06690021, 0.0665, 0.0665, 3.13931924], [1517113980000, 0.0669002, 0.0669002, 0.0669002, 0.0669002, 0.01514727], [1517114040000, 0.06690021, 0.06690023, 0.06690021, 0.06690022, 0.15999777], [1517114100000, 0.06690022, 0.06690022, 0.06690021, 0.06690021, 0.61404833], [1517114280000, 0.06689989, 0.06689989, 0.06689989, 0.06689989, 0.40846662], [1517114340000, 0.06689989, 0.06689989, 0.06689989, 0.06689989, 0.43465942], [1517114400000, 0.06689989, 0.0668999, 0.06666591, 0.06689989, 1.26203185], [1517114460000, 0.06689989, 0.0668999, 0.06689989, 0.0668999, 0.51644247], [1517114580000, 0.06689989, 0.0668999, 0.06689989, 0.06689989, 0.29763914], [1517114640000, 0.06689983, 0.06689983, 0.0665002, 0.0665002, 0.08172374], [1517114700000, 0.0665002, 0.0665002, 0.0665002, 0.0665002, 0.03315804], [1517114760000, 0.0665002, 0.0665002, 0.06650001, 0.06650019, 0.09077786], [1517114820000, 0.06650019, 0.06650019, 0.0665, 0.06650019, 2.10239647], [1517114880000, 0.0665, 0.0665, 0.06639943, 0.06639943, 1.339218], [1517115000000, 0.06639952, 0.06639952, 0.06639952, 0.06639952, 0.15231324], [1517115060000, 0.06639953, 0.06689975, 0.06639953, 0.06639956, 2.29817409], [1517115120000, 0.06689961, 0.06689961, 0.06639958, 0.06639958, 0.08563693], [1517115180000, 0.06639961, 0.06639961, 0.0663996, 0.06639961, 2.59598639], [1517115240000, 0.06639961, 0.06639961, 0.06639943, 0.06639943, 1.5141176], [1517115300000, 0.0663996, 0.06639961, 0.06639943, 0.06639943, 2.10619742], [1517115360000, 0.06632005, 0.06632005, 0.06624847, 0.06624847, 5.47602036], [1517115480000, 0.06631999, 0.06631999, 0.06613051, 0.06613051, 0.48455612], [1517115540000, 0.06631992, 0.06631992, 0.0661, 0.06631989, 3.83255707], [1517115600000, 0.06631987, 0.06631987, 0.0661, 0.06617302, 3.06011123], [1517115660000, 0.066173, 0.06617302, 0.06606111, 0.06606111, 3.46378057], [1517115720000, 0.0661, 0.0661, 0.06608677, 0.06608677, 0.9731861], [1517115780000, 0.06608677, 0.06609999, 0.06606111, 0.06609999, 0.86887894], [1517115840000, 0.06609996, 0.06609996, 0.06609996, 0.06609996, 0.1474892], [1517115900000, 0.06609996, 0.0661, 0.06609995, 0.0661, 1.54623882], [1517115960000, 0.06609999, 0.06609999, 0.06606111, 0.06609996, 9.12045522], [1517116020000, 0.06606111, 0.06609995, 0.06600001, 0.06609995, 2.03488192], [1517116080000, 0.06609995, 0.06609995, 0.06600001, 0.06600001, 3.69642534], [1517116140000, 0.06600001, 0.06600001, 0.066, 0.066, 0.70580454], [1517116200000, 0.06600001, 0.06609993, 0.066, 0.066, 29.48032439], [1517116260000, 0.0660948, 0.0660948, 0.0660948, 0.0660948, 0.04538934], [1517116320000, 0.06609478, 0.06609478, 0.06609475, 0.06609475, 0.0753727], [1517116380000, 0.06609472, 0.06609474, 0.06609472, 0.06609473, 0.12677163], [1517116440000, 0.06604741, 0.06609472, 0.066, 0.06609471, 0.54160241], [1517116500000, 0.0660947, 0.06609471, 0.0660947, 0.0660947, 3.16529066], [1517116560000, 0.0660947, 0.0660947, 0.066, 0.066, 3.07672726], [1517116620000, 0.066, 0.066, 0.066, 0.066, 19.56838786], [1517116680000, 0.066, 0.06609464, 0.066, 0.06609464, 10.97661898], [1517116740000, 0.06609464, 0.06609464, 0.066, 0.066, 12.43315454], [1517116800000, 0.066, 0.06609456, 0.066, 0.066, 23.33473429], [1517116860000, 0.066, 0.066, 0.066, 0.066, 0.15], [1517116920000, 0.0660943, 0.0660943, 0.066, 0.066, 6.84558724], [1517116980000, 0.06609428, 0.06609428, 0.066, 0.066, 2.191123], [1517117040000, 0.06609421, 0.06609421, 0.06609418, 0.06609418, 0.04448196], [1517117100000, 0.06600002, 0.06609398, 0.06600002, 0.06609398, 0.04393776], [1517117160000, 0.06600002, 0.06600002, 0.06600002, 0.06600002, 0.06592169], [1517117280000, 0.06609388, 0.06609388, 0.066, 0.066, 14.90530211], [1517117340000, 0.06609385, 0.06609385, 0.06609384, 0.06609385, 0.69355044], [1517117400000, 0.06609385, 0.0663648, 0.06609385, 0.06636476, 11.26015671], [1517117460000, 0.06636472, 0.06636472, 0.06600001, 0.06636462, 0.668593], [1517117520000, 0.06603278, 0.06636454, 0.06600001, 0.06636453, 0.21964183], [1517117580000, 0.06636448, 0.06636448, 0.06636446, 0.06636448, 3.79021367], [1517117640000, 0.06636448, 0.06636449, 0.06636448, 0.06636449, 0.56358036], [1517117700000, 0.06636, 0.06636448, 0.06635999, 0.06635999, 0.10725436], [1517117760000, 0.06635997, 0.06635998, 0.06635997, 0.06635998, 0.49782787], [1517117820000, 0.06635998, 0.06635999, 0.06635998, 0.06635999, 0.1429088], [1517117880000, 0.06635997, 0.06635997, 0.06635997, 0.06635997, 0.03828495], [1517117940000, 0.06635998, 0.06635998, 0.06635997, 0.06635997, 0.59401885], [1517118000000, 0.06635997, 0.06635997, 0.06635997, 0.06635997, 0.15069318], [1517118060000, 0.06619407, 0.06619407, 0.06619407, 0.06619407, 0.03072712], [1517118120000, 0.06601714, 0.06601714, 0.06601714, 0.06601714, 0.5], [1517118180000, 0.06619406, 0.06619406, 0.06619406, 0.06619406, 0.33149799], [1517118240000, 0.06619406, 0.06619406, 0.06619406, 0.06619406, 0.90567671], [1517118300000, 0.06619406, 0.06619406, 0.06619406, 0.06619406, 0.23325246], [1517118360000, 0.06619406, 0.06619407, 0.06619406, 0.06619406, 1.64636443], [1517118420000, 0.06619405, 0.06619405, 0.06607488, 0.06607488, 0.72566819], [1517118480000, 0.06619405, 0.06619405, 0.06619405, 0.06619405, 0.1717719], [1517118540000, 0.06635997, 0.06635997, 0.06635996, 0.06635996, 0.42416882], [1517118600000, 0.06619405, 0.06619405, 0.06619405, 0.06619405, 0.49837538], [1517118660000, 0.06619406, 0.06619406, 0.06619405, 0.06619405, 0.62082385], [1517118720000, 0.06619406, 0.06647849, 0.06619405, 0.06619405, 6.46931054], [1517118780000, 0.06619404, 0.06619404, 0.06619404, 0.06619404, 0.01373522], [1517118840000, 0.06608488, 0.06636356, 0.06608488, 0.06636356, 1.47709189], [1517118900000, 0.06647353, 0.06647355, 0.06647353, 0.06647353, 4.33193045], [1517118960000, 0.06647355, 0.06647356, 0.06647353, 0.06647353, 2.24822026], [1517119020000, 0.06647353, 0.06647353, 0.06647353, 0.06647353, 0.30012246], [1517119080000, 0.06619405, 0.06619405, 0.06608488, 0.06608488, 0.34331442], [1517119140000, 0.06647353, 0.06647353, 0.06608488, 0.06608488, 4.02382903], [1517119500000, 0.06620763, 0.06620763, 0.06608488, 0.06608488, 6.28767098], [1517119560000, 0.06608495, 0.06608495, 0.06608495, 0.06608495, 0.26], [1517119620000, 0.06608495, 0.06647351, 0.06608495, 0.06647351, 0.05217854], [1517119680000, 0.06647349, 0.06647349, 0.0661335, 0.0661335, 0.56286007], [1517119740000, 0.0661335, 0.0661335, 0.0661335, 0.0661335, 0.0664369], [1517119800000, 0.06647345, 0.06647345, 0.06647345, 0.06647345, 0.01912198], [1517119920000, 0.06623357, 0.06623357, 0.06623357, 0.06623357, 2.3226], [1517119980000, 0.06623357, 0.06647339, 0.06608488, 0.06647339, 9.63676694], [1517120040000, 0.06609598, 0.06609598, 0.06609598, 0.06609598, 0.16799774], [1517120100000, 0.06623, 0.06623, 0.06609598, 0.06609598, 4.55677771], [1517120160000, 0.06647333, 0.06647333, 0.06647333, 0.06647333, 0.01805234], [1517120280000, 0.06609598, 0.06609598, 0.06609598, 0.06609598, 0.01654795], [1517120340000, 0.06630713, 0.06630713, 0.06630713, 0.06630713, 0.01658946], [1517120400000, 0.06614132, 0.06614132, 0.06614131, 0.06614131, 0.93389631], [1517120460000, 0.06614131, 0.06614131, 0.06614131, 0.06614131, 0.82953175], [1517120520000, 0.06614131, 0.06614135, 0.06614131, 0.06614131, 0.0514816], [1517120580000, 0.06614131, 0.06614134, 0.06614131, 0.06614132, 3.01494174], [1517120640000, 0.06614134, 0.06614136, 0.06614134, 0.06614134, 1.54132006], [1517120700000, 0.06614135, 0.06614135, 0.06614135, 0.06614135, 0.0333377], [1517120760000, 0.06614135, 0.06614136, 0.06614135, 0.06614135, 0.05376743], [1517120820000, 0.06614135, 0.06614135, 0.06614135, 0.06614135, 0.5830348], [1517120880000, 0.06614135, 0.06614136, 0.06614135, 0.06614136, 0.49274681], [1517120940000, 0.06630711, 0.06630711, 0.06614135, 0.06630711, 0.87449782], [1517121000000, 0.06614135, 0.06614135, 0.06608488, 0.06608488, 22.02726885], [1517121060000, 0.06608488, 0.06608488, 0.06608488, 0.06608488, 22.14377402], [1517121120000, 0.06608488, 0.06630713, 0.066, 0.066, 39.37027698], [1517121180000, 0.066, 0.066, 0.066, 0.066, 35.89570405], [1517121240000, 0.066, 0.0661, 0.066, 0.066, 64.6825011], [1517121300000, 0.066, 0.0661, 0.066, 0.066, 41.83971436], [1517121360000, 0.0661, 0.0661, 0.066, 0.066, 0.64809308], [1517121420000, 0.06609999, 0.06609999, 0.066, 0.066, 1.95439392], [1517121480000, 0.0661, 0.0661, 0.066, 0.066, 2.18867499], [1517121540000, 0.0661, 0.0661, 0.066, 0.066, 13.83273435], [1517121600000, 0.066, 0.0661, 0.066, 0.066, 1.50664145], [1517121660000, 0.0661, 0.0661, 0.066, 0.066, 14.18064391], [1517121720000, 0.066, 0.0661, 0.066, 0.066, 7.5973695], [1517121780000, 0.066, 0.066, 0.0658, 0.06599866, 0.12969389], [1517121840000, 0.06576111, 0.066, 0.06576111, 0.06576111, 0.16266359], [1517121900000, 0.06576111, 0.06609999, 0.06576111, 0.066, 3.92938565], [1517121960000, 0.066, 0.066, 0.06576112, 0.06576112, 0.22711858], [1517122020000, 0.06607634, 0.066093, 0.06599998, 0.066, 0.75127031], [1517122080000, 0.0660001, 0.0660769, 0.06576111, 0.0660769, 0.97277695], [1517122140000, 0.06599166, 0.06608897, 0.06599166, 0.066047, 1.05125875], [1517122200000, 0.066046, 0.066047, 0.06576111, 0.06576111, 0.46297302], [1517122260000, 0.066045, 0.066045, 0.066045, 0.066045, 0.01665531], [1517122380000, 0.066045, 0.066045, 0.065972, 0.065972, 0.11993539], [1517122500000, 0.06597201, 0.066, 0.065972, 0.066, 1.70565145], [1517122620000, 0.066, 0.066045, 0.066, 0.066, 5.31483037], [1517122680000, 0.066, 0.066045, 0.0658925, 0.066045, 5.66711529], [1517122740000, 0.066045, 0.066045, 0.06589251, 0.06604499, 0.28672264], [1517122800000, 0.06604499, 0.06604499, 0.06604499, 0.06604499, 0.06483987], [1517122920000, 0.06604499, 0.06604499, 0.06604499, 0.06604499, 0.04693769], [1517122980000, 0.06604499, 0.066045, 0.06604499, 0.06604499, 2.69151295], [1517123040000, 0.066045, 0.066045, 0.06604499, 0.066045, 0.68804742], [1517123100000, 0.066047, 0.066047, 0.066047, 0.066047, 0.06271586], [1517123160000, 0.066045, 0.066045, 0.066045, 0.066045, 0.36], [1517123220000, 0.06604699, 0.066047, 0.06604699, 0.066047, 2.60582854], [1517123280000, 0.06604699, 0.06604699, 0.06604699, 0.06604699, 0.19765253], [1517123340000, 0.066047, 0.0661, 0.066047, 0.0661, 0.39402982], [1517123400000, 0.06604699, 0.06629998, 0.066045, 0.0661, 0.4906152], [1517123460000, 0.0661, 0.0661, 0.0661, 0.0661, 0.03085373], [1517123520000, 0.0663, 0.0663, 0.0661, 0.0663, 0.06554453], [1517123640000, 0.0663, 0.0663, 0.066045, 0.06613424, 3.43142783], [1517123700000, 0.06604499, 0.06613424, 0.06604499, 0.06613424, 0.11712074], [1517123760000, 0.06613424, 0.06613424, 0.06604499, 0.06604499, 2.09774686], [1517123820000, 0.06629998, 0.0663, 0.06629998, 0.0663, 1.2393202], [1517123880000, 0.0663, 0.06645951, 0.0663, 0.06645922, 3.42194548], [1517123940000, 0.06611134, 0.06611134, 0.065845, 0.065845, 0.69477626], [1517124000000, 0.06642999, 0.06642999, 0.06642998, 0.06642998, 0.31663037], [1517124120000, 0.06642951, 0.06642951, 0.0658875, 0.06641, 0.19687651], [1517124180000, 0.0658875, 0.0658875, 0.0658, 0.0658, 25.01330801], [1517124240000, 0.0658, 0.0658875, 0.0658, 0.0658875, 1.50419561], [1517124300000, 0.06636988, 0.06636988, 0.06636985, 0.06636985, 0.08715912], [1517124360000, 0.06636975, 0.06636975, 0.06636975, 0.06636975, 1.50694339], [1517124420000, 0.0663697, 0.0663697, 0.0663697, 0.0663697, 0.17017615], [1517124480000, 0.0659, 0.06636963, 0.0659, 0.06636962, 2.37469208], [1517124540000, 0.06636959, 0.06636959, 0.06636959, 0.06636959, 0.42520083], [1517124600000, 0.06636956, 0.06636956, 0.0659, 0.0659, 0.27889693], [1517124660000, 0.0659, 0.06636952, 0.0659, 0.06636952, 0.05824284], [1517124720000, 0.06636951, 0.06636951, 0.0659, 0.0659, 3.7370916], [1517124840000, 0.06590004, 0.06590004, 0.06590004, 0.06590004, 0.0729927], [1517125020000, 0.06592, 0.06592, 0.06592, 0.06592, 0.55334905], [1517125140000, 0.06636931, 0.06636931, 0.06636931, 0.06636931, 0.49876826], [1517125200000, 0.0663693, 0.0663693, 0.0663693, 0.0663693, 0.29617207], [1517125260000, 0.06636929, 0.06636929, 0.06598856, 0.06598856, 0.23842423], [1517125320000, 0.06644368, 0.06644368, 0.06644368, 0.06644368, 0.03535937], [1517125380000, 0.06644368, 0.06644368, 0.06644368, 0.06644368, 0.15012835], [1517125440000, 0.06608174, 0.06608174, 0.06608174, 0.06608174, 0.08065166], [1517125560000, 0.06644368, 0.06644368, 0.06644368, 0.06644368, 0.0341019], [1517125620000, 0.06621152, 0.06621152, 0.06621152, 0.06621152, 1.39167557], [1517125680000, 0.06644368, 0.06647353, 0.06644368, 0.06647353, 0.41798521], [1517125740000, 0.06647353, 0.06647354, 0.06647353, 0.06647354, 0.17806247], [1517125800000, 0.06647354, 0.06658998, 0.06647354, 0.06647354, 1.85299305], [1517125920000, 0.06658998, 0.06658998, 0.06658998, 0.06658998, 0.03501696], [1517125980000, 0.06658998, 0.06658998, 0.06658998, 0.06658998, 0.04008583], [1517126040000, 0.06658998, 0.06658998, 0.06658998, 0.06658998, 1.15594507], [1517126100000, 0.06659561, 0.06667999, 0.06659561, 0.06659561, 0.16671522], [1517126160000, 0.06659561, 0.06668, 0.06659561, 0.06668, 0.07286349], [1517126220000, 0.06659562, 0.0666948, 0.06659561, 0.0666948, 0.08311029], [1517126280000, 0.0666378, 0.06671215, 0.06659561, 0.06671215, 0.80508574], [1517126340000, 0.06659561, 0.06686679, 0.06658998, 0.06686679, 3.30380135], [1517126400000, 0.06686679, 0.06692611, 0.06686679, 0.0669261, 20.29853207], [1517126460000, 0.06658998, 0.06658998, 0.06658998, 0.06658998, 0.01466611], [1517126580000, 0.06658998, 0.06658998, 0.06658997, 0.06658997, 0.39469972], [1517126640000, 0.06658997, 0.06658997, 0.06658997, 0.06658997, 0.16589401], [1517126700000, 0.06658997, 0.06698995, 0.06658997, 0.06698989, 20.58671746], [1517126820000, 0.06658992, 0.06658992, 0.06649424, 0.06649455, 0.43213166], [1517127060000, 0.06700299, 0.06700299, 0.06700299, 0.06700299, 0.04192605], [1517127120000, 0.06700299, 0.06700299, 0.06674527, 0.0667453, 7.51270032], [1517127180000, 0.066746, 0.06739997, 0.066746, 0.06739997, 8.65614962], [1517127240000, 0.06739997, 0.06739997, 0.06739995, 0.06739995, 0.76149226], [1517127300000, 0.06739995, 0.06739996, 0.06739995, 0.06739996, 0.14836817], [1517127360000, 0.06687716, 0.06687716, 0.06687716, 0.06687716, 0.02351793], [1517127420000, 0.06692799, 0.06692799, 0.06692799, 0.06692799, 0.1501632], [1517127480000, 0.06739999, 0.06739999, 0.06739999, 0.06739999, 0.05948133], [1517127540000, 0.06694052, 0.0674, 0.06694052, 0.06697107, 2.95451017], [1517127600000, 0.06697107, 0.06739999, 0.06697107, 0.06739999, 0.18497023], [1517127660000, 0.06697107, 0.06739999, 0.06693304, 0.06697107, 0.75534799], [1517127720000, 0.06697107, 0.06697107, 0.06693303, 0.06697107, 0.43777267], [1517127780000, 0.066934, 0.06739998, 0.066934, 0.06739998, 0.06864627], [1517127840000, 0.06739998, 0.06739998, 0.06739996, 0.06739998, 8.51427902], [1517127900000, 0.06739998, 0.06756345, 0.06739998, 0.0674, 18.80332635], [1517127960000, 0.0674, 0.0674, 0.0674, 0.0674, 0.91840818], [1517128020000, 0.06740259, 0.06740259, 0.0674, 0.0674, 0.40463138], [1517128080000, 0.0674, 0.06759501, 0.0674, 0.06759501, 6.6233159], [1517128140000, 0.06759501, 0.06759501, 0.06759501, 0.06759501, 0.57624834], [1517128200000, 0.06759501, 0.06759501, 0.0675948, 0.0675948, 1.27430074], [1517128260000, 0.0675948, 0.06773698, 0.0674, 0.0674, 7.01244208], [1517128320000, 0.0674, 0.06792149, 0.0674, 0.06745549, 4.19797535], [1517128380000, 0.06791013, 0.06796999, 0.06746207, 0.06746207, 5.49488825], [1517128440000, 0.06746207, 0.06771894, 0.06746207, 0.0674848, 1.38974197], [1517128500000, 0.06749447, 0.06749447, 0.06749447, 0.06749447, 0.36569013], [1517128560000, 0.06747436, 0.06747437, 0.0674, 0.06747436, 3.43532949], [1517128620000, 0.06747436, 0.06747436, 0.06747436, 0.06747436, 0.19124293], [1517128680000, 0.06747436, 0.06747436, 0.06746741, 0.06747436, 0.04926537], [1517128740000, 0.06747436, 0.06747436, 0.06746742, 0.06747436, 0.62230422], [1517128800000, 0.06791013, 0.06791013, 0.06747, 0.06747, 3.43804798], [1517128860000, 0.06747, 0.06791013, 0.06747, 0.06791013, 0.66523536], [1517128920000, 0.06747, 0.06747, 0.06747, 0.06747, 0.41272048], [1517129040000, 0.06791013, 0.06791013, 0.06747, 0.06747, 4.21246248], [1517129100000, 0.06747006, 0.06747006, 0.06740001, 0.06746741, 2.51412372], [1517129160000, 0.06746741, 0.06747006, 0.0674, 0.06747006, 0.37775151], [1517129220000, 0.06747006, 0.06794993, 0.06747006, 0.06794987, 0.51686367], [1517129340000, 0.06796994, 0.06796994, 0.06796994, 0.06796994, 0.01863767], [1517129400000, 0.06792999, 0.06792999, 0.06792999, 0.06792999, 0.02644653], [1517129460000, 0.06747512, 0.06747512, 0.06747512, 0.06747512, 0.70148082], [1517129520000, 0.06784999, 0.06784999, 0.06740661, 0.06740661, 0.31217427], [1517129580000, 0.06784998, 0.06784998, 0.06784998, 0.06784998, 0.0174144], [1517129700000, 0.06789, 0.06789, 0.06789, 0.06789, 0.17208428], [1517129820000, 0.06789, 0.06789, 0.06788998, 0.06788998, 0.70443083], [1517129880000, 0.06743765, 0.06788995, 0.06743765, 0.06787, 0.13140434], [1517129940000, 0.06784999, 0.06784999, 0.0674, 0.06784999, 0.60985482], [1517130060000, 0.0674, 0.067485, 0.0674, 0.067485, 0.06515547], [1517130120000, 0.0674, 0.06748499, 0.0674, 0.06748499, 0.149657], [1517130180000, 0.06748499, 0.06748499, 0.06748499, 0.06748499, 0.24519202], [1517130240000, 0.0674, 0.06748498, 0.0674, 0.06748498, 0.13488645], [1517130300000, 0.06748498, 0.06748498, 0.0674, 0.06748498, 1.70724218], [1517130360000, 0.06748498, 0.06748498, 0.06748498, 0.06748498, 0.03271524], [1517130420000, 0.06748497, 0.06748497, 0.06748497, 0.06748497, 0.32502158], [1517130480000, 0.06748497, 0.06748497, 0.06740003, 0.06740003, 0.0489227], [1517130540000, 0.06748497, 0.06748499, 0.06748496, 0.06748499, 5.26892954], [1517130600000, 0.06748499, 0.06748499, 0.06748499, 0.06748499, 0.09669945], [1517130660000, 0.06773953, 0.06797, 0.06773953, 0.06797, 0.9266258], [1517130720000, 0.06799, 0.06799, 0.06799, 0.06799, 0.19920942], [1517130900000, 0.06799, 0.06799, 0.0676, 0.0676, 32.2268533], [1517130960000, 0.0676, 0.06760208, 0.06759691, 0.06760208, 28.17670435], [1517131020000, 0.06762106, 0.06762106, 0.06762105, 0.06762105, 1.7984832], [1517131080000, 0.06799, 0.06799, 0.06799, 0.06799, 0.10416514], [1517131140000, 0.06799, 0.06799, 0.06799, 0.06799, 0.01617885], [1517131200000, 0.06799, 0.06799, 0.06799, 0.06799, 0.01518507], [1517131260000, 0.06799, 0.06799, 0.06793479, 0.06799, 0.90102962], [1517131380000, 0.06765113, 0.06765113, 0.06761045, 0.06761045, 0.05887314], [1517131440000, 0.06764353, 0.06764353, 0.06764353, 0.06764353, 0.03057394], [1517131500000, 0.06799, 0.06799, 0.06799, 0.06799, 0.14708045], [1517131560000, 0.06799, 0.06799, 0.0679811, 0.06799, 0.23153319], [1517131620000, 0.06798999, 0.06799, 0.06766716, 0.06799, 3.2809959], [1517131680000, 0.06766766, 0.06798999, 0.06766737, 0.06798999, 2.12004134], [1517131740000, 0.06798999, 0.06798999, 0.06798999, 0.06798999, 0.06682243], [1517131800000, 0.06795659, 0.06795659, 0.06795659, 0.06795659, 0.01602488], [1517131860000, 0.06798999, 0.06798999, 0.06771316, 0.06795659, 0.80936593], [1517131920000, 0.06795659, 0.06799, 0.06795659, 0.06799, 0.31278115], [1517131980000, 0.06799, 0.06799, 0.06771757, 0.06771757, 0.15595338], [1517132040000, 0.06798999, 0.06799, 0.06798999, 0.06799, 0.06582551], [1517132100000, 0.06799, 0.06799, 0.0677177, 0.0677177, 0.332282], [1517132160000, 0.06799, 0.06799, 0.0677179, 0.067718, 0.36679749], [1517132220000, 0.06799, 0.06799, 0.06799, 0.06799, 1.90147879], [1517132280000, 0.06799, 0.06799, 0.06799, 0.06799, 0.01628082], [1517132340000, 0.06799, 0.06799, 0.0677181, 0.0677181, 0.95110694], [1517132400000, 0.0677181, 0.0677181, 0.0677181, 0.0677181, 0.3], [1517132520000, 0.0677177, 0.0677177, 0.0677177, 0.0677177, 0.15737177], [1517132580000, 0.06799, 0.06799, 0.06799, 0.06799, 0.01840811], [1517132700000, 0.06799, 0.06799, 0.0677177, 0.0677177, 0.5761351], [1517132760000, 0.06799, 0.06799, 0.06799, 0.06799, 0.02483265], [1517132820000, 0.0677177, 0.0677177, 0.0677177, 0.0677177, 0.43], [1517132880000, 0.0677177, 0.0677177, 0.0677177, 0.0677177, 0.15111903], [1517132940000, 0.0677177, 0.0677177, 0.0677177, 0.0677177, 2.76449917], [1517133000000, 0.06798999, 0.06799339, 0.0677177, 0.06799339, 3.44070326], [1517133060000, 0.0677177, 0.0677177, 0.0677177, 0.0677177, 0.04309553], [1517133120000, 0.0677177, 0.06799339, 0.0677177, 0.06799339, 0.19007412], [1517133180000, 0.06799339, 0.06799339, 0.0677177, 0.06799339, 0.06904751], [1517133240000, 0.0677177, 0.0677177, 0.0677177, 0.0677177, 0.2], [1517133300000, 0.0679933, 0.0679933, 0.0679933, 0.0679933, 0.02621021], [1517133420000, 0.0679933, 0.0679933, 0.0677177, 0.0677177, 4.74854155], [1517133660000, 0.0677177, 0.0677177, 0.0677177, 0.0677177, 0.011139], [1517133900000, 0.06799327, 0.06799327, 0.0677177, 0.0677177, 0.41324562], [1517133960000, 0.0677177, 0.0677177, 0.0677177, 0.0677177, 0.06266779], [1517134260000, 0.06799322, 0.06799322, 0.06799322, 0.06799322, 0.08353224], [1517134320000, 0.06799322, 0.06799322, 0.0677177, 0.0677177, 0.96125988], [1517134380000, 0.0677177, 0.06799324, 0.0677177, 0.06799324, 0.52526311], [1517134440000, 0.06799324, 0.06799326, 0.0677178, 0.0677178, 0.71164123], [1517134620000, 0.0677178, 0.0677178, 0.06771779, 0.06771779, 1.10818442], [1517134680000, 0.06771779, 0.06771779, 0.0677177, 0.06771779, 0.31965227], [1517134740000, 0.06799327, 0.06799327, 0.06771779, 0.06771779, 0.15504056], [1517134800000, 0.0677177, 0.06799326, 0.0677177, 0.0677177, 17.82831799], [1517134860000, 0.06771777, 0.06771777, 0.06771777, 0.06771777, 0.03059699], [1517135040000, 0.0677177, 0.06784866, 0.0677177, 0.06784865, 2.37664109], [1517135100000, 0.0677177, 0.06797999, 0.0677177, 0.06797999, 1.21242365], [1517135160000, 0.0677177, 0.06797998, 0.0677177, 0.0677177, 0.33655888], [1517135220000, 0.0677177, 0.06793994, 0.0677177, 0.06793994, 0.16255395], [1517135280000, 0.06791998, 0.06791998, 0.0677177, 0.0677177, 2.90307883], [1517135340000, 0.06791998, 0.06791998, 0.0677177, 0.0677177, 0.43431106], [1517135400000, 0.06791996, 0.06791996, 0.06791994, 0.06791994, 0.25979063], [1517135460000, 0.0677177, 0.06791992, 0.0677177, 0.06791992, 0.11348296], [1517135520000, 0.0679199, 0.0679199, 0.0677177, 0.0677177, 0.03247634], [1517135580000, 0.06771771, 0.06778524, 0.0677177, 0.06771822, 1.60648258], [1517135640000, 0.0677177, 0.0677852, 0.06713001, 0.06713001, 18.23632654], [1517135700000, 0.06732294, 0.06782238, 0.06714902, 0.06714902, 5.5567326], [1517135760000, 0.06722595, 0.06782233, 0.06722595, 0.06782233, 3.34614666], [1517135820000, 0.06729662, 0.0676, 0.06729662, 0.0676, 2.18950035], [1517135880000, 0.06729275, 0.06782215, 0.06729275, 0.06782214, 2.75139076], [1517135940000, 0.06782214, 0.06782229, 0.06782214, 0.06782229, 5.37855256], [1517136000000, 0.06782214, 0.06791998, 0.06744637, 0.0679, 7.99943881], [1517136060000, 0.06744637, 0.06791998, 0.06725317, 0.0679, 4.49390375], [1517136120000, 0.0679, 0.0679, 0.06733811, 0.06789998, 0.87740892], [1517136180000, 0.06789998, 0.0679, 0.06735979, 0.06789997, 0.526573], [1517136240000, 0.06789994, 0.06789994, 0.06789994, 0.06789994, 0.06947515], [1517136300000, 0.06789994, 0.0679, 0.06789994, 0.0679, 0.92001326], [1517136360000, 0.0679, 0.0679, 0.06789999, 0.0679, 2.25566915], [1517136420000, 0.0679, 0.06799328, 0.0679, 0.06799328, 2.04308411], [1517136480000, 0.06799328, 0.06799339, 0.06751789, 0.06799338, 1.42293207], [1517136600000, 0.06799336, 0.06799337, 0.06799335, 0.06799337, 1.4707309], [1517136660000, 0.06799337, 0.06799997, 0.06799335, 0.06799997, 3.0972598], [1517136720000, 0.0679934, 0.06799997, 0.0677934, 0.06799997, 0.77003331], [1517136780000, 0.06799338, 0.06799997, 0.06799338, 0.06799338, 0.14109153], [1517136900000, 0.06797999, 0.06798, 0.06797999, 0.06797999, 1.17681664], [1517136960000, 0.06797999, 0.06797999, 0.06796, 0.06796, 1.44134953], [1517137020000, 0.06796, 0.06796, 0.06796, 0.06796, 1.59943828], [1517137080000, 0.06748999, 0.06748999, 0.06748999, 0.06748999, 0.12], [1517137140000, 0.06748999, 0.06748999, 0.06748999, 0.06748999, 0.16333661], [1517137200000, 0.06748999, 0.06799997, 0.06739153, 0.06799997, 0.95093283], [1517137260000, 0.06799997, 0.06799997, 0.06735056, 0.0679999, 3.88823922], [1517137320000, 0.0673907, 0.0673907, 0.06739069, 0.0673907, 0.30425067], [1517137500000, 0.06799941, 0.06799941, 0.06739813, 0.06799939, 1.33023045], [1517137560000, 0.06799936, 0.06799937, 0.06799936, 0.06799937, 0.0340917], [1517137620000, 0.06799931, 0.06799931, 0.06799931, 0.06799931, 0.0212403], [1517137680000, 0.06784276, 0.06784276, 0.06784276, 0.06784276, 0.07515267], [1517137800000, 0.06773256, 0.06773256, 0.06725309, 0.06773255, 3.95268746], [1517137860000, 0.06773248, 0.06773248, 0.06773248, 0.06773248, 0.08005879], [1517137920000, 0.06773233, 0.06773233, 0.06773233, 0.06773233, 0.14763998], [1517137980000, 0.06773223, 0.0677325, 0.06721512, 0.06721512, 1.99338576], [1517138040000, 0.06728899, 0.06728899, 0.06728899, 0.06728899, 0.660856], [1517138100000, 0.06769999, 0.06769999, 0.06769998, 0.06769998, 0.44306057], [1517138160000, 0.06728901, 0.06728901, 0.06715001, 0.06715001, 34.41653786], [1517138220000, 0.06715001, 0.06715001, 0.06715001, 0.06715001, 0.3], [1517138280000, 0.06715001, 0.06715001, 0.06707378, 0.06707378, 14.016557], [1517138400000, 0.06707378, 0.06737558, 0.06707378, 0.06707378, 0.40371157], [1517138460000, 0.06707378, 0.06735577, 0.06707378, 0.06735577, 0.32190394], [1517138520000, 0.06737558, 0.06737558, 0.06737558, 0.06737558, 0.07564279], [1517138640000, 0.06737557, 0.06737557, 0.06737557, 0.06737557, 0.01263797], [1517138700000, 0.06737557, 0.06737559, 0.06703686, 0.06737182, 1.34585065], [1517138760000, 0.06736446, 0.06736446, 0.06703686, 0.06703686, 0.18012447], [1517138820000, 0.06703686, 0.06703686, 0.06703686, 0.06703686, 0.01549483], [1517138880000, 0.0673, 0.0673, 0.0673, 0.0673, 0.09205152], [1517138940000, 0.0673, 0.0673, 0.06705484, 0.0673, 1.63336066], [1517139060000, 0.06729999, 0.0673, 0.06729999, 0.0673, 0.05971605], [1517139120000, 0.0673, 0.06730001, 0.0673, 0.06730001, 0.64631556], [1517139180000, 0.0673, 0.0673, 0.0673, 0.0673, 0.37933292], [1517139300000, 0.06729999, 0.06749999, 0.06729999, 0.06749999, 0.16498912], [1517139360000, 0.06709769, 0.06709769, 0.06709769, 0.06709769, 0.30976], [1517139540000, 0.0672443, 0.0672443, 0.0672443, 0.0672443, 1.13209048], [1517139600000, 0.06749998, 0.06769997, 0.06724439, 0.06724439, 0.16548817], [1517139720000, 0.06724439, 0.06751009, 0.06724439, 0.06751009, 0.05342187], [1517139840000, 0.06724439, 0.06745177, 0.0672443, 0.0672443, 6.03163962], [1517139900000, 0.06745107, 0.06745178, 0.06724439, 0.06745148, 1.04681235], [1517139960000, 0.06745148, 0.06745178, 0.06710699, 0.06710699, 6.13356004], [1517140020000, 0.06714853, 0.06715051, 0.06714853, 0.06715051, 4.03770277], [1517140080000, 0.06746777, 0.06746777, 0.06746777, 0.06746777, 0.03356905], [1517140200000, 0.06746776, 0.06746779, 0.06746776, 0.06746778, 1.09076346], [1517140260000, 0.06746777, 0.06746778, 0.06746777, 0.06746778, 0.29412569], [1517140320000, 0.06746777, 0.06746777, 0.06746777, 0.06746777, 1.15299999], [1517140380000, 0.06746779, 0.0678426, 0.06746778, 0.06746778, 4.11290778], [1517140440000, 0.06746777, 0.06746777, 0.06746777, 0.06746777, 0.03442928], [1517140500000, 0.06746778, 0.06746778, 0.06746778, 0.06746778, 0.8893131], [1517140620000, 0.06758831, 0.06758831, 0.06746777, 0.06757364, 0.4295683], [1517140680000, 0.06757364, 0.06757364, 0.06757363, 0.06757364, 0.44090356], [1517140740000, 0.06757363, 0.06757364, 0.06757363, 0.06757364, 0.14784837], [1517140800000, 0.06746777, 0.0678201, 0.06746777, 0.0678201, 1.5961774], [1517140860000, 0.0678201, 0.06784255, 0.06737459, 0.06737459, 1.54413047], [1517140920000, 0.06737459, 0.06737459, 0.06737459, 0.06737459, 1.02374233], [1517140980000, 0.06784248, 0.06784248, 0.06784246, 0.06784246, 0.03558335], [1517141040000, 0.06784243, 0.06784243, 0.06739675, 0.06739675, 3.33171919], [1517141100000, 0.06740162, 0.06780435, 0.06740162, 0.06779599, 2.72236014], [1517141160000, 0.06773548, 0.06779356, 0.06773548, 0.06779356, 0.03839186], [1517141220000, 0.06779356, 0.06781052, 0.06779356, 0.06781052, 0.09415612], [1517141280000, 0.06779356, 0.06779356, 0.06779356, 0.06779356, 0.01622573], [1517141340000, 0.06748129, 0.06748129, 0.06748129, 0.06748129, 0.44563794], [1517141400000, 0.06748129, 0.06784255, 0.06748129, 0.06784255, 6.55124114], [1517141460000, 0.06784255, 0.06784255, 0.06784255, 0.06784255, 1.91620013], [1517141520000, 0.06784255, 0.06784255, 0.06784255, 0.06784255, 0.01372384], [1517141700000, 0.06784253, 0.06784254, 0.06784253, 0.06784254, 1.32660198], [1517141760000, 0.06784254, 0.06784255, 0.06784254, 0.06784255, 1.47400178], [1517141820000, 0.06784255, 0.06784255, 0.06784255, 0.06784255, 2.84694741], [1517141880000, 0.06784255, 0.06784255, 0.06784255, 0.06784255, 0.29480002], [1517141940000, 0.06754072, 0.06784254, 0.06751835, 0.06751835, 0.24786042], [1517142000000, 0.06784255, 0.06784262, 0.06784255, 0.06784262, 3.67028258], [1517142060000, 0.06784262, 0.068, 0.06784262, 0.06786925, 16.39029258], [1517142180000, 0.06784255, 0.06784255, 0.06784255, 0.06784255, 1.02279391], [1517142300000, 0.06784255, 0.06784255, 0.06784254, 0.06784255, 4.10679874], [1517142360000, 0.06784255, 0.06799996, 0.06752196, 0.06799996, 12.33178026], [1517142420000, 0.06799996, 0.06799996, 0.06799996, 0.06799996, 6.75470257], [1517142600000, 0.06799994, 0.06799995, 0.06799994, 0.06799995, 0.01617648], [1517142660000, 0.06799995, 0.06799997, 0.06799994, 0.06799996, 2.91051635], [1517142720000, 0.0679579, 0.0679579, 0.0679579, 0.0679579, 1.28921712], [1517142780000, 0.0679579, 0.06799568, 0.0679, 0.06798119, 2.40514102], [1517142840000, 0.0679, 0.0679, 0.06760438, 0.06760438, 2.25765103], [1517142900000, 0.06799997, 0.068, 0.06799997, 0.06799999, 5.16994738], [1517142960000, 0.06799997, 0.068, 0.06780002, 0.068, 4.08614394], [1517143020000, 0.0679, 0.068, 0.0679, 0.0679, 5.66269707], [1517143080000, 0.068, 0.068, 0.06799999, 0.068, 4.26015652], [1517143140000, 0.06799999, 0.068, 0.06799999, 0.068, 0.69812545], [1517143200000, 0.068, 0.068, 0.06799999, 0.06799999, 9.55993663], [1517143260000, 0.068, 0.068, 0.0679, 0.0679, 3.65137512], [1517143320000, 0.0679, 0.0679, 0.06780024, 0.06780024, 3.46383417], [1517143380000, 0.06799998, 0.06799998, 0.06780024, 0.06780024, 0.28111475], [1517143440000, 0.06799998, 0.06799998, 0.06780024, 0.06780024, 0.06438669], [1517143500000, 0.0679, 0.0679, 0.0678002, 0.0678002, 1.70707953], [1517143560000, 0.0678002, 0.0678002, 0.0678002, 0.0678002, 0.24], [1517143620000, 0.0678002, 0.0678002, 0.0678002, 0.0678002, 0.64977452], [1517143680000, 0.0678002, 0.06782904, 0.0678002, 0.06782904, 1.18528898], [1517143740000, 0.06780023, 0.06780023, 0.06780022, 0.06780022, 0.75368515], [1517143800000, 0.0678002, 0.06799996, 0.0678002, 0.06799996, 8.44682984], [1517143860000, 0.0678002, 0.0678002, 0.0678002, 0.0678002, 0.1305057], [1517143920000, 0.0678002, 0.067999, 0.0678002, 0.0678002, 6.11790214], [1517143980000, 0.067999, 0.06799996, 0.0678002, 0.06799996, 4.02521587], [1517144040000, 0.06799995, 0.06799995, 0.0678002, 0.06794178, 0.94236492], [1517144100000, 0.06794178, 0.06799996, 0.0678002, 0.0678002, 2.44974134], [1517144160000, 0.0678002, 0.0678002, 0.06780002, 0.06780002, 7.25801011], [1517144220000, 0.06760443, 0.06780001, 0.06760443, 0.06780001, 0.06168238], [1517144280000, 0.06780001, 0.06780008, 0.06760447, 0.06760447, 1.96583813], [1517144340000, 0.06760447, 0.06768256, 0.06760443, 0.06760443, 0.58331973], [1517144400000, 0.06780007, 0.06780008, 0.06760447, 0.06780008, 0.87529338], [1517144460000, 0.06760443, 0.06780008, 0.06752762, 0.06780008, 3.8454533], [1517144580000, 0.06780007, 0.06780008, 0.06780007, 0.06780007, 1.03784755], [1517144700000, 0.06780007, 0.06780007, 0.06780007, 0.06780007, 0.53581202], [1517144760000, 0.06780007, 0.06780007, 0.06753838, 0.06780006, 0.5274023], [1517144820000, 0.06780006, 0.06799899, 0.06753839, 0.06753839, 0.21778922], [1517144880000, 0.06754432, 0.06799898, 0.06754432, 0.06799898, 0.11718681], [1517144940000, 0.06754432, 0.06799895, 0.06754432, 0.06799895, 0.36977661], [1517145000000, 0.06799895, 0.06799895, 0.06754431, 0.06799895, 6.27157565], [1517145060000, 0.06754433, 0.06754433, 0.06754433, 0.06754433, 0.43715721], [1517145120000, 0.06798999, 0.06798999, 0.06754432, 0.06754432, 0.1205772], [1517145180000, 0.06754432, 0.06754432, 0.06754432, 0.06754432, 0.0800419], [1517145240000, 0.06754432, 0.06754432, 0.06754432, 0.06754432, 0.353478], [1517145300000, 0.06792, 0.06796169, 0.06792, 0.06792001, 2.81952119], [1517145360000, 0.06796168, 0.06796168, 0.06796168, 0.06796168, 0.58616888], [1517145420000, 0.06796168, 0.06796168, 0.06796168, 0.06796168, 0.13055151], [1517145480000, 0.06756295, 0.06796166, 0.06756295, 0.06796166, 4.3734229], [1517145540000, 0.06796167, 0.06796167, 0.06796165, 0.06796165, 0.26471529], [1517145660000, 0.06796161, 0.06796434, 0.06796161, 0.06796434, 0.08020541], [1517145720000, 0.06796161, 0.06796161, 0.06796161, 0.06796161, 1e-08], [1517145780000, 0.0679616, 0.06799994, 0.06757079, 0.06757079, 17.5265732], [1517145840000, 0.06799993, 0.06799993, 0.06799993, 0.06799993, 0.25247499], [1517145900000, 0.06799992, 0.06799994, 0.06799992, 0.06799994, 0.44117709], [1517146020000, 0.06799979, 0.06799994, 0.06799979, 0.06799994, 1.01475232], [1517146080000, 0.0679, 0.06799998, 0.0678971, 0.06799998, 22.78935991], [1517146140000, 0.06757079, 0.06792152, 0.06757079, 0.0678923, 0.28618538], [1517146200000, 0.06793516, 0.06793516, 0.06757079, 0.06793512, 1.69575184], [1517146260000, 0.06793512, 0.06793512, 0.06757, 0.06786356, 5.83364306], [1517146320000, 0.06786346, 0.06786346, 0.06786346, 0.06786346, 0.07367718], [1517146380000, 0.06786356, 0.06786356, 0.06757002, 0.06757002, 0.03017555], [1517146440000, 0.06786356, 0.06786356, 0.06757001, 0.06757001, 0.18273095], [1517146500000, 0.06757002, 0.06757002, 0.06757002, 0.06757002, 0.39676627], [1517146560000, 0.06757001, 0.06757002, 0.06757001, 0.06757002, 0.01807174], [1517146620000, 0.06757002, 0.06757002, 0.06757, 0.06757, 1.35840586], [1517146680000, 0.06757001, 0.06757001, 0.06757001, 0.06757001, 0.00966486], [1517146740000, 0.06757001, 0.06757001, 0.06757001, 0.06757001, 0.01619516], [1517146800000, 0.06786353, 0.06786353, 0.06786353, 0.06786353, 0.16356361], [1517146860000, 0.0678635, 0.06786353, 0.0678635, 0.06786353, 5.68068889], [1517146980000, 0.06757, 0.06757, 0.06757, 0.06757, 0.81458819], [1517147040000, 0.06757, 0.06786353, 0.06757, 0.06786353, 0.50052461], [1517147100000, 0.06786353, 0.06786353, 0.06757, 0.06757, 0.49868206], [1517147160000, 0.06786353, 0.06786353, 0.06786353, 0.06786353, 0.037915], [1517147280000, 0.06757, 0.06757, 0.06757, 0.06757, 0.4934055], [1517147340000, 0.06757, 0.06757, 0.0675, 0.0675, 0.50251216], [1517147400000, 0.06786352, 0.06786353, 0.06786352, 0.06786353, 2.4827303], [1517147460000, 0.06786352, 0.06786353, 0.06750001, 0.06786351, 1.52217812], [1517147520000, 0.06750001, 0.06750001, 0.06750001, 0.06750001, 1.0], [1517147580000, 0.06750001, 0.06750001, 0.06750001, 0.06750001, 0.04065336], [1517147640000, 0.06750006, 0.06786348, 0.06750006, 0.06786348, 1.5695165], [1517147700000, 0.06786348, 0.06786348, 0.06750006, 0.06786348, 1.17883688], [1517147760000, 0.06786348, 0.06786348, 0.06750006, 0.06786346, 0.9465918], [1517147820000, 0.06786345, 0.06786345, 0.06750006, 0.06750006, 0.18769704], [1517147880000, 0.0678, 0.0678, 0.06779999, 0.06779999, 0.18601891], [1517148000000, 0.06777, 0.06777, 0.06750001, 0.06777, 0.86415615], [1517148060000, 0.06777, 0.06777, 0.0675, 0.0675, 0.57511306], [1517148120000, 0.06759999, 0.06759999, 0.06748129, 0.06748129, 8.05625329], [1517148180000, 0.0675, 0.0675, 0.0674813, 0.0674813, 1.14271726], [1517148240000, 0.06749997, 0.06749998, 0.0674813, 0.06749998, 0.55252848], [1517148300000, 0.06748131, 0.06748131, 0.06745199, 0.06745199, 0.2], [1517148420000, 0.06745199, 0.06745199, 0.06745199, 0.06745199, 0.22301032], [1517148480000, 0.06745199, 0.06745199, 0.06739675, 0.06739675, 0.54680094], [1517148540000, 0.06739675, 0.0673968, 0.06737796, 0.06737796, 0.37879123], [1517148600000, 0.06737796, 0.06745199, 0.06735317, 0.06745199, 1.62867715], [1517148720000, 0.06745197, 0.06745197, 0.06737536, 0.06745197, 0.09049188], [1517148780000, 0.06737536, 0.06737536, 0.06735316, 0.06735316, 1.0], [1517148840000, 0.06745196, 0.06745199, 0.06740255, 0.06740256, 4.83819983], [1517148900000, 0.06740254, 0.06776166, 0.06734797, 0.06776166, 3.74464131], [1517148960000, 0.06776166, 0.06776166, 0.06776166, 0.06776166, 0.03254052], [1517149020000, 0.06776495, 0.06776495, 0.06730935, 0.06730935, 0.52098379], [1517149080000, 0.06774683, 0.06774683, 0.06773143, 0.06773143, 0.21523955], [1517149200000, 0.06771909, 0.06773143, 0.06734106, 0.06734106, 2.30310163], [1517149260000, 0.06733769, 0.06733769, 0.06733769, 0.06733769, 0.63680319], [1517149320000, 0.06733769, 0.0676991, 0.06733769, 0.0676991, 1.3145457], [1517149380000, 0.06735111, 0.06769909, 0.06735111, 0.06769909, 0.04836584], [1517149560000, 0.06769908, 0.06769908, 0.06769908, 0.06769908, 0.09563994], [1517149680000, 0.06769907, 0.06769909, 0.06746229, 0.06769908, 1.32252505], [1517149740000, 0.06769908, 0.06769908, 0.06769908, 0.06769908, 0.38410888], [1517149800000, 0.06769907, 0.06769907, 0.06769907, 0.06769907, 0.379285], [1517149860000, 0.06746229, 0.06769903, 0.06746229, 0.06769903, 0.02380904], [1517149920000, 0.06746229, 0.06769903, 0.06746229, 0.06746229, 0.05478404], [1517149980000, 0.06746229, 0.06769901, 0.06746229, 0.06769901, 0.02430877], [1517150040000, 0.06769901, 0.06786351, 0.06746228, 0.06746228, 4.24652083], [1517150100000, 0.06746226, 0.06746226, 0.06746226, 0.06746226, 0.07423406], [1517150220000, 0.06746228, 0.06746228, 0.06746228, 0.06746228, 0.06943574], [1517150280000, 0.06746226, 0.06746226, 0.06746226, 0.06746226, 0.15751544], [1517150340000, 0.06746224, 0.06746224, 0.06727437, 0.06727437, 0.71151983], [1517150400000, 0.0672744, 0.0676, 0.06727437, 0.0676, 2.28591067], [1517150460000, 0.0676, 0.0676, 0.0676, 0.0676, 0.02071473], [1517150520000, 0.06775208, 0.06775208, 0.0676, 0.0676, 0.28874003], [1517150580000, 0.06746225, 0.06746225, 0.06729292, 0.06746224, 0.34126133], [1517150640000, 0.06746225, 0.06746225, 0.06729296, 0.06729296, 0.31125801], [1517150700000, 0.06746225, 0.06746225, 0.06746225, 0.06746225, 0.03812756], [1517150760000, 0.06746225, 0.06746225, 0.06729297, 0.06729297, 1.50525621], [1517150820000, 0.06759997, 0.06759997, 0.06729297, 0.06729297, 0.3964407], [1517150880000, 0.06759997, 0.06759997, 0.06759997, 0.06759997, 1.24224387], [1517150940000, 0.06729294, 0.06759997, 0.06729294, 0.06759997, 0.36477087], [1517151000000, 0.06759997, 0.06759997, 0.06759996, 0.06759997, 0.04182814], [1517151060000, 0.06759996, 0.06759996, 0.06759996, 0.06759996, 0.11227753], [1517151120000, 0.06759996, 0.06759996, 0.06759996, 0.06759996, 0.07606992], [1517151180000, 0.06759994, 0.06759994, 0.06729294, 0.06759993, 0.1593216], [1517151240000, 0.06759991, 0.06759991, 0.06759991, 0.06759991, 0.05987098], [1517151360000, 0.0673002, 0.0673002, 0.06720001, 0.06720742, 2.56206089], [1517151420000, 0.06730019, 0.06730019, 0.06720001, 0.06720001, 0.06259237], [1517151480000, 0.06721549, 0.06730019, 0.06721549, 0.06730019, 2.35148475], [1517151660000, 0.06727794, 0.06727794, 0.06720772, 0.06720772, 1.21322107], [1517151720000, 0.06727794, 0.06727794, 0.06727793, 0.06727794, 0.04369413], [1517151780000, 0.06727794, 0.06730018, 0.06727793, 0.06730018, 1.49096875], [1517151840000, 0.06730019, 0.06730019, 0.06730019, 0.06730019, 1.83030182], [1517151900000, 0.0675999, 0.06766681, 0.06730018, 0.06766681, 1.71463324], [1517151960000, 0.06766524, 0.06766524, 0.06766524, 0.06766524, 0.04663712], [1517152020000, 0.06723982, 0.06730018, 0.0672, 0.06730018, 0.45191783], [1517152080000, 0.067201, 0.067201, 0.067201, 0.067201, 1.46568089], [1517152140000, 0.06720001, 0.06730018, 0.06720001, 0.06730018, 0.06384032], [1517152200000, 0.06730018, 0.06730018, 0.06720001, 0.06730018, 1.50902551], [1517152260000, 0.06720001, 0.06720001, 0.06720001, 0.06720001, 0.24], [1517152320000, 0.06730018, 0.06730018, 0.06730018, 0.06730018, 0.23767818], [1517152380000, 0.06730018, 0.06730018, 0.06730018, 0.06730018, 0.18585116], [1517152440000, 0.06730018, 0.06758934, 0.06730018, 0.06758934, 1.04121645], [1517152500000, 0.06755637, 0.06763873, 0.06755637, 0.06762393, 4.69947555], [1517152560000, 0.06763593, 0.06763593, 0.06763408, 0.06763408, 1.03492358], [1517152620000, 0.06720001, 0.06720201, 0.06720001, 0.06720201, 0.13373627], [1517152680000, 0.06760036, 0.06760036, 0.06760036, 0.06760036, 0.21254148], [1517152740000, 0.06760035, 0.06760036, 0.06760035, 0.06760036, 2.74368259], [1517152800000, 0.06760037, 0.0676279, 0.06721762, 0.0676279, 2.01929011], [1517152860000, 0.0676222, 0.0676222, 0.06759881, 0.06762218, 0.78821251], [1517152980000, 0.06762184, 0.06762184, 0.06762184, 0.06762184, 0.74828058], [1517153040000, 0.06762184, 0.06775211, 0.06762184, 0.06766409, 1.28031138], [1517153100000, 0.06766409, 0.06777676, 0.06759, 0.06759879, 3.86221529], [1517153160000, 0.0675988, 0.0677521, 0.0675988, 0.0677521, 1.0557839], [1517153220000, 0.06775209, 0.06775209, 0.06759, 0.06759, 7.21714134], [1517153280000, 0.06759, 0.06759, 0.0674, 0.0674, 0.00927755], [1517153340000, 0.06775194, 0.06775194, 0.06775194, 0.06775194, 0.13047793], [1517153400000, 0.0672715, 0.06752928, 0.0672, 0.06752928, 44.24373773], [1517153520000, 0.06748296, 0.06748296, 0.06748296, 0.06748296, 0.01548816], [1517153580000, 0.06748296, 0.06748296, 0.06720001, 0.06720001, 4.38610946], [1517153640000, 0.06720001, 0.06720001, 0.06720001, 0.06720001, 0.09564624], [1517153700000, 0.06720001, 0.06752322, 0.06720001, 0.06752321, 6.07613774], [1517153760000, 0.06752322, 0.06752322, 0.06720001, 0.06720001, 5.21876323], [1517153820000, 0.06720001, 0.06720001, 0.06720001, 0.06720001, 0.51330891], [1517153880000, 0.06720001, 0.06752314, 0.06720001, 0.06752314, 1.43456139], [1517153940000, 0.06752315, 0.06752315, 0.06746449, 0.06746449, 5.53912246], [1517154000000, 0.06752315, 0.06752315, 0.06738848, 0.06738848, 0.39678654], [1517154180000, 0.06720009, 0.06720009, 0.06720009, 0.06720009, 1.0945391], [1517154240000, 0.06720009, 0.06720009, 0.06720009, 0.06720009, 0.78523559], [1517154300000, 0.06720009, 0.06720009, 0.06720009, 0.06720009, 0.36552758], [1517154360000, 0.06738842, 0.06738842, 0.06738842, 0.06738842, 0.02937752], [1517154420000, 0.06726729, 0.06738841, 0.06726729, 0.06738841, 0.15776427], [1517154480000, 0.06726729, 0.06738841, 0.06726729, 0.06738841, 0.11076984], [1517154540000, 0.06738841, 0.06738841, 0.06738841, 0.06738841, 0.01638993], [1517154600000, 0.06738841, 0.06738842, 0.06726729, 0.06738842, 2.71831056], [1517154720000, 0.06738842, 0.06738847, 0.06738842, 0.06738847, 0.05640897], [1517154780000, 0.06738847, 0.06738847, 0.06738847, 0.06738847, 0.09788261], [1517154840000, 0.06738847, 0.06738847, 0.06738847, 0.06738847, 0.43679831], [1517154900000, 0.06738846, 0.06738847, 0.06738844, 0.06738844, 0.02983451], [1517154960000, 0.06745583, 0.06745583, 0.06721007, 0.06727306, 0.24109], [1517155020000, 0.06752323, 0.06773711, 0.06752323, 0.06773711, 0.24818995], [1517155080000, 0.0677279, 0.06773613, 0.0677279, 0.06773613, 5.00000191], [1517155140000, 0.06773708, 0.06773708, 0.06773708, 0.06773708, 0.03475723], [1517155200000, 0.06773709, 0.06775196, 0.06773709, 0.06775196, 0.74851365], [1517155260000, 0.06775196, 0.06775199, 0.06775196, 0.06775199, 1.22034221], [1517155320000, 0.06775199, 0.06775208, 0.06775199, 0.06775208, 1.35806803], [1517155380000, 0.06775208, 0.06775208, 0.06775208, 0.06775208, 0.02], [1517155440000, 0.0677521, 0.0677521, 0.0677521, 0.0677521, 0.02569212], [1517155500000, 0.06775211, 0.06786356, 0.0677521, 0.06786356, 3.58985809], [1517155560000, 0.06775218, 0.06775218, 0.0672, 0.06727991, 50.04520924], [1517155620000, 0.06775218, 0.06775218, 0.06775218, 0.06775218, 0.54018659], [1517155680000, 0.06775218, 0.06775218, 0.06775218, 0.06775218, 0.0707326], [1517155740000, 0.06775218, 0.06786356, 0.06775218, 0.06786356, 0.45964757], [1517155800000, 0.06786355, 0.06786356, 0.06786354, 0.06786356, 0.29470922], [1517155980000, 0.0675, 0.0675, 0.0675, 0.0675, 0.147], [1517156040000, 0.06786355, 0.06786355, 0.06786355, 0.06786355, 0.01824293], [1517156100000, 0.06786354, 0.06786356, 0.06786354, 0.06786356, 0.14735461], [1517156220000, 0.06786355, 0.06786355, 0.06786355, 0.06786355, 0.08182597], [1517156280000, 0.06745244, 0.06745244, 0.06745244, 0.06745244, 0.0147977], [1517156340000, 0.06786354, 0.06786356, 0.06786354, 0.06786355, 0.93164251], [1517156400000, 0.06786355, 0.06786356, 0.06786355, 0.06786355, 0.89397156], [1517156460000, 0.06786355, 0.06786355, 0.06786355, 0.06786355, 0.27140426], [1517156520000, 0.06786355, 0.06786355, 0.06786355, 0.06786355, 0.01036736], [1517156580000, 0.06786355, 0.06786355, 0.06786355, 0.06786355, 0.56290206], [1517156700000, 0.067435, 0.06786355, 0.067435, 0.06786355, 0.30358443], [1517156760000, 0.06786355, 0.06786355, 0.06786355, 0.06786355, 0.01517061], [1517156820000, 0.06786353, 0.06786353, 0.06786353, 0.06786353, 0.03727594], [1517156880000, 0.06786352, 0.06786356, 0.06786352, 0.06786356, 1.88931047], [1517156940000, 0.06786355, 0.06786356, 0.06786355, 0.06786355, 6.01091529], [1517157000000, 0.06786355, 0.06799998, 0.06786355, 0.06786362, 1.4740469], [1517157060000, 0.06786362, 0.06786362, 0.06786362, 0.06786362, 0.03249164], [1517157120000, 0.06799998, 0.068, 0.06799998, 0.068, 80.73676812], [1517157180000, 0.06786363, 0.06812899, 0.06786363, 0.06786363, 3.53884109], [1517157300000, 0.06812897, 0.06812899, 0.06812897, 0.06812899, 3.00526808], [1517157360000, 0.06812899, 0.06812899, 0.06812899, 0.06812899, 1.44907362], [1517157420000, 0.06812899, 0.06812899, 0.067864, 0.06786401, 0.40339404], [1517157480000, 0.06786411, 0.06812889, 0.06786411, 0.06786413, 0.17232791], [1517157540000, 0.06812889, 0.06812889, 0.06812888, 0.06812889, 0.30998605], [1517157600000, 0.06812889, 0.06812889, 0.06786413, 0.06812889, 0.72340123], [1517157660000, 0.06788012, 0.06788012, 0.06788012, 0.06788012, 0.887], [1517157720000, 0.06788012, 0.06788012, 0.06788012, 0.06788012, 0.02759759], [1517157780000, 0.06789091, 0.06812889, 0.06788333, 0.06812889, 1.47803262], [1517157840000, 0.06792262, 0.06792262, 0.06792262, 0.06792262, 0.04865854], [1517157900000, 0.06812889, 0.06812889, 0.06799999, 0.06799999, 0.22552965], [1517158080000, 0.06799999, 0.06799999, 0.06799999, 0.06799999, 0.05667614], [1517158200000, 0.06812887, 0.06812889, 0.06812887, 0.06812889, 0.18415335], [1517158260000, 0.06812889, 0.06812889, 0.06799999, 0.06799999, 1.1054151], [1517158320000, 0.06812889, 0.06812889, 0.06812889, 0.06812889, 0.16052428], [1517158440000, 0.06812888, 0.06812889, 0.06799999, 0.06799999, 0.94887712], [1517158500000, 0.06799999, 0.06812888, 0.06799999, 0.06812888, 1.21924464], [1517158560000, 0.06812888, 0.06812888, 0.068, 0.06812888, 0.43147595], [1517158620000, 0.06801017, 0.06801017, 0.06801017, 0.06801017, 2.64533155], [1517158680000, 0.06812885, 0.068129, 0.06803085, 0.06803085, 2.00767392], [1517158740000, 0.068129, 0.068129, 0.06812898, 0.068129, 0.60247723], [1517158800000, 0.0680314, 0.068129, 0.0680314, 0.068129, 0.44097282], [1517158860000, 0.068129, 0.068129, 0.068015, 0.068015, 1.16448455], [1517158920000, 0.06804938, 0.068129, 0.06804913, 0.06804913, 0.59820832], [1517159040000, 0.068129, 0.068129, 0.068129, 0.068129, 0.31752189], [1517159100000, 0.068129, 0.068129, 0.068129, 0.068129, 1.34031648], [1517159160000, 0.06812, 0.068127, 0.06812, 0.06812, 0.14421605], [1517159220000, 0.06812899, 0.068129, 0.06812, 0.06812, 11.80754478], [1517159280000, 0.06804914, 0.06814481, 0.06800561, 0.06814481, 1.33520635], [1517159340000, 0.06814481, 0.06814481, 0.06814481, 0.06814481, 0.39219583], [1517159400000, 0.06814481, 0.06818281, 0.068, 0.06818281, 2.26606554], [1517159460000, 0.06818281, 0.06818281, 0.0681828, 0.0681828, 10.39571683], [1517159520000, 0.06818281, 0.0681999, 0.06800889, 0.0681999, 4.32994929], [1517159640000, 0.06819989, 0.0681999, 0.06819989, 0.0681999, 0.09556766], [1517159700000, 0.0681999, 0.0682992, 0.06811968, 0.0682992, 1.00093376], [1517159760000, 0.0682992, 0.0683, 0.0682992, 0.0683, 5.799721], [1517159820000, 0.0683, 0.06836939, 0.0683, 0.06836939, 9.59733127], [1517159880000, 0.06818164, 0.06818164, 0.06818164, 0.06818164, 0.037], [1517159940000, 0.06837289, 0.0683729, 0.06837289, 0.0683729, 0.01616822], [1517160000000, 0.0683729, 0.06838578, 0.0683729, 0.06837296, 0.6572247], [1517160060000, 0.06838578, 0.06839336, 0.06838578, 0.06839336, 0.0322496], [1517160120000, 0.06839336, 0.06858282, 0.06839336, 0.06858282, 8.74497383], [1517160180000, 0.06859999, 0.06867013, 0.06859999, 0.06867013, 3.12500318], [1517160240000, 0.0686975, 0.0686975, 0.06858278, 0.06858282, 2.10636933], [1517160300000, 0.0685829, 0.0686975, 0.06858283, 0.06858285, 1.36579783], [1517160360000, 0.06869749, 0.06869749, 0.06858284, 0.06858287, 3.1514993], [1517160420000, 0.06858287, 0.06858287, 0.06858284, 0.06858287, 6.52482239], [1517160480000, 0.06869747, 0.06891899, 0.06859165, 0.06862654, 14.31893959], [1517160540000, 0.0686294, 0.06892202, 0.06860509, 0.06861057, 2.66786817], [1517160600000, 0.06860712, 0.068922, 0.06860712, 0.068922, 0.14509155], [1517160660000, 0.0686071, 0.068922, 0.0686071, 0.068922, 3.47687866], [1517160720000, 0.068922, 0.06892202, 0.068922, 0.068922, 2.00790655], [1517160780000, 0.068922, 0.068922, 0.068922, 0.068922, 1.34746816], [1517160840000, 0.06892202, 0.06899, 0.068922, 0.068922, 2.00255777], [1517160900000, 0.068922, 0.06899, 0.068922, 0.068922, 1.80635063], [1517160960000, 0.06896999, 0.06896999, 0.068922, 0.068922, 0.93090076], [1517161020000, 0.06859164, 0.06859164, 0.06858285, 0.06858285, 4.29299684], [1517161080000, 0.0685829, 0.0685829, 0.06858285, 0.06858285, 0.05436804], [1517161140000, 0.06858289, 0.0685829, 0.06858289, 0.0685829, 0.03814019], [1517161200000, 0.06858285, 0.0685829, 0.06858285, 0.06858285, 4.47787592], [1517161260000, 0.06858285, 0.068922, 0.06858285, 0.068922, 4.62482283], [1517161320000, 0.06858285, 0.06870097, 0.06858285, 0.06870097, 0.0730519], [1517161380000, 0.06870097, 0.06870097, 0.06858285, 0.06858285, 0.03212326], [1517161440000, 0.06858285, 0.06890578, 0.06858285, 0.06858285, 0.077996], [1517161500000, 0.06860211, 0.06860211, 0.06860211, 0.06860211, 0.14773486], [1517161560000, 0.06892198, 0.06892199, 0.06868514, 0.06868514, 0.16420021], [1517161620000, 0.06862831, 0.06867229, 0.06860366, 0.06867229, 1.6592755], [1517161680000, 0.06892194, 0.06892194, 0.06892194, 0.06892194, 0.04893242], [1517161740000, 0.06892193, 0.06892193, 0.06858285, 0.06862421, 6.59419914], [1517161800000, 0.06867229, 0.06892193, 0.06860451, 0.06860451, 1.24649275], [1517161860000, 0.06892159, 0.06892194, 0.06892159, 0.06892194, 0.36894108], [1517161920000, 0.06892194, 0.06892195, 0.06858284, 0.06892195, 0.20216577], [1517161980000, 0.06864563, 0.06864563, 0.06864563, 0.06864563, 0.34155025], [1517162040000, 0.06892199, 0.06892199, 0.06892199, 0.06892199, 0.17232545], [1517162100000, 0.06892199, 0.068922, 0.06892199, 0.06892199, 0.81891487], [1517162160000, 0.06892199, 0.06892199, 0.06892199, 0.06892199, 0.15792176], [1517162220000, 0.06892199, 0.06892199, 0.06892199, 0.06892199, 0.098], [1517162280000, 0.06892199, 0.06892199, 0.06892199, 0.06892199, 0.12741069], [1517162400000, 0.06858279, 0.06892, 0.06858279, 0.06891999, 0.58641647], [1517162460000, 0.06891999, 0.068922, 0.06858279, 0.068922, 2.76635851], [1517162520000, 0.06892199, 0.06917435, 0.06892198, 0.06905021, 10.13220319], [1517162580000, 0.06905021, 0.06905021, 0.06904671, 0.06904671, 2.91481325], [1517162640000, 0.0686135, 0.06863458, 0.06858281, 0.06863458, 1.74039093], [1517162700000, 0.06863458, 0.06907551, 0.06858282, 0.0690147, 1.8880886], [1517162760000, 0.06901469, 0.0690147, 0.068641, 0.0690122, 3.76110576], [1517162820000, 0.06861349, 0.06895067, 0.06861349, 0.06895067, 1.36546779], [1517162940000, 0.06861349, 0.06894942, 0.06861349, 0.06894941, 0.1066419], [1517163000000, 0.06894868, 0.06894941, 0.06861349, 0.06886567, 1.83812418], [1517163060000, 0.06886567, 0.06889777, 0.06885919, 0.06889777, 0.4771737], [1517163120000, 0.06885919, 0.06888975, 0.06885919, 0.06885919, 0.05379325], [1517163180000, 0.06885919, 0.06885919, 0.06861349, 0.06861349, 0.1697492], [1517163240000, 0.06881573, 0.06881573, 0.06861349, 0.06861349, 1.01729771], [1517163300000, 0.06878399, 0.06886375, 0.06861349, 0.06885225, 1.40227124], [1517163360000, 0.06878824, 0.06878824, 0.06861349, 0.06861349, 1.01606827], [1517163420000, 0.06861349, 0.06861349, 0.06861349, 0.06861349, 0.03213654], [1517163480000, 0.06861349, 0.06861349, 0.06861349, 0.06861349, 0.76574356], [1517163540000, 0.06861349, 0.06861349, 0.06861349, 0.06861349, 0.01606827], [1517163600000, 0.06871111, 0.06871113, 0.06861349, 0.06871113, 0.90533505], [1517163660000, 0.06861349, 0.06861349, 0.06861349, 0.06861349, 0.16433088], [1517163720000, 0.06861349, 0.06871113, 0.06861349, 0.06871113, 0.4138613], [1517163780000, 0.06861349, 0.06861349, 0.06861349, 0.06861349, 0.71211957], [1517163840000, 0.06871111, 0.06871112, 0.06871111, 0.06871111, 1.6412144], [1517163900000, 0.06871113, 0.06871113, 0.06871111, 0.06871113, 0.84783037], [1517163960000, 0.06861349, 0.06861349, 0.06861349, 0.06861349, 1.69707973], [1517164020000, 0.06861349, 0.06871012, 0.06861349, 0.06871012, 0.44159037], [1517164080000, 0.06871012, 0.06871012, 0.06871012, 0.06871012, 1.28245262], [1517164140000, 0.06871012, 0.06871113, 0.06871012, 0.06871012, 2.20114662], [1517164200000, 0.0687111, 0.06871748, 0.06871012, 0.06871748, 0.49363728], [1517164260000, 0.06871012, 0.06871012, 0.06871012, 0.06871012, 0.01604567], [1517164320000, 0.06871748, 0.06871748, 0.06871748, 0.06871748, 0.14569053], [1517164380000, 0.06871012, 0.06871748, 0.06871012, 0.06871748, 0.16161974], [1517164440000, 0.06871012, 0.06871012, 0.06871012, 0.06871012, 0.19635609], [1517164500000, 0.06871012, 0.06871012, 0.06858279, 0.06871012, 3.45480383], [1517164560000, 0.06871012, 0.06871012, 0.06844029, 0.06844029, 1.35755763], [1517164620000, 0.06871011, 0.06871011, 0.06844029, 0.06844029, 3.77270338], [1517164680000, 0.06871011, 0.06871011, 0.06845221, 0.06871011, 12.1062945], [1517164740000, 0.06871012, 0.06871012, 0.06871011, 0.06871012, 0.23755578], [1517164800000, 0.06871012, 0.06871748, 0.06871012, 0.06871748, 0.75970799], [1517164860000, 0.06871748, 0.06871748, 0.06871012, 0.06871012, 0.97571556], [1517164920000, 0.06871012, 0.06871748, 0.06871011, 0.06871748, 4.18475059], [1517164980000, 0.06884715, 0.06884715, 0.06871011, 0.06871011, 34.33159877], [1517165040000, 0.06884895, 0.06886376, 0.06884895, 0.06886376, 1.38697618], [1517165100000, 0.0688524, 0.06894941, 0.0687, 0.06894941, 1.63645919], [1517165160000, 0.0685265, 0.06894736, 0.0685265, 0.06890273, 1.65940507], [1517165280000, 0.0689341, 0.0689341, 0.0689341, 0.0689341, 0.01768312], [1517165340000, 0.0689341, 0.0689341, 0.06893409, 0.06893409, 4.71626464], [1517165400000, 0.0685188, 0.0689341, 0.0685188, 0.0689341, 1.20487595], [1517165460000, 0.06855955, 0.06890835, 0.06855955, 0.06890835, 5.00884149], [1517165520000, 0.06890835, 0.0689341, 0.0685084, 0.0689341, 0.0974341], [1517165580000, 0.0689341, 0.0689341, 0.0689341, 0.0689341, 0.15721457], [1517165640000, 0.0689341, 0.0689341, 0.06855448, 0.06855448, 0.59420745], [1517165700000, 0.06893409, 0.0689341, 0.06893409, 0.0689341, 0.43519824], [1517165760000, 0.06855448, 0.0689341, 0.06855448, 0.0689341, 0.043754], [1517165820000, 0.0689341, 0.0689341, 0.0689341, 0.0689341, 0.59016742], [1517165880000, 0.06855891, 0.06855891, 0.06855891, 0.06855891, 0.82686516], [1517166000000, 0.06893409, 0.0689341, 0.06856391, 0.0689341, 1.46435093], [1517166060000, 0.0689341, 0.06894941, 0.06861885, 0.06894941, 2.46622934], [1517166120000, 0.06894941, 0.06894941, 0.06893494, 0.06893494, 0.73406945], [1517166180000, 0.06893494, 0.06893494, 0.06893494, 0.06893494, 0.13998409], [1517166240000, 0.06893494, 0.06893494, 0.06893494, 0.06893494, 0.40416564], [1517166300000, 0.06893494, 0.06894941, 0.06893494, 0.06894941, 1.45046094], [1517166360000, 0.06894941, 0.06898831, 0.06855448, 0.06898831, 1.88544057], [1517166420000, 0.069, 0.069, 0.0685084, 0.0685645, 0.98778255], [1517166480000, 0.06857661, 0.06893471, 0.06857661, 0.06893471, 0.10943461], [1517166540000, 0.069, 0.069, 0.069, 0.069, 0.11313826], [1517166600000, 0.069, 0.06901468, 0.06882296, 0.06901468, 2.50284788], [1517166660000, 0.06901468, 0.06901468, 0.06856, 0.06901468, 1.60960087], [1517166720000, 0.06899071, 0.06899071, 0.06899071, 0.06899071, 3.46224475], [1517166900000, 0.06894404, 0.06894404, 0.06894404, 0.06894404, 0.18378747], [1517166960000, 0.06894404, 0.06894404, 0.06894404, 0.06894404, 0.10162605], [1517167080000, 0.06894404, 0.0689483, 0.06894404, 0.0689483, 1.37726173], [1517167140000, 0.06894826, 0.06894826, 0.06894826, 0.06894826, 2.39842348], [1517167200000, 0.06894826, 0.0689483, 0.06877593, 0.06877593, 1.2898635], [1517167260000, 0.06877593, 0.06877593, 0.06877593, 0.06877593, 0.14880932], [1517167320000, 0.06894829, 0.0689483, 0.06894829, 0.0689483, 0.0172618], [1517167440000, 0.06894829, 0.0689483, 0.06894829, 0.0689483, 0.0814014], [1517167500000, 0.06894829, 0.0689483, 0.06894829, 0.0689483, 1.23133858], [1517167620000, 0.06856, 0.06856, 0.06856, 0.06856, 0.01316143], [1517167740000, 0.06856001, 0.06894829, 0.06856001, 0.06894829, 0.02505162], [1517167800000, 0.06894829, 0.0689483, 0.06894829, 0.0689483, 0.3640688], [1517167860000, 0.0689483, 0.0689483, 0.0689483, 0.0689483, 0.06971749], [1517168100000, 0.0687599, 0.0689483, 0.0687599, 0.0689483, 2.23884301], [1517168160000, 0.0689483, 0.0689483, 0.0689483, 0.0689483, 0.09128891], [1517168220000, 0.06867088, 0.06867088, 0.06856, 0.06867088, 3.75466107], [1517168280000, 0.06867088, 0.06867088, 0.06867088, 0.06867088, 0.12643581], [1517168340000, 0.06856001, 0.06901, 0.06856001, 0.06901, 2.31651176], [1517168400000, 0.06867087, 0.06867087, 0.06867087, 0.06867087, 0.16164052], [1517168460000, 0.06867087, 0.06867087, 0.06867087, 0.06867087, 0.01684406], [1517168580000, 0.06867086, 0.06887431, 0.06856, 0.06887431, 4.354394], [1517168640000, 0.06887431, 0.06894537, 0.06850839, 0.06850839, 4.17939331], [1517168700000, 0.06894537, 0.06894537, 0.06872476, 0.06893896, 0.24153928], [1517168760000, 0.06889938, 0.06889938, 0.06872476, 0.06872476, 0.17254847], [1517168820000, 0.06872476, 0.06872476, 0.06841, 0.06841, 5.05356341], [1517168940000, 0.06841, 0.06841, 0.06841, 0.06841, 0.79279817], [1517169000000, 0.06880733, 0.06880734, 0.06880733, 0.06880734, 0.32690896], [1517169120000, 0.06841, 0.06841, 0.06841, 0.06841, 0.24037758], [1517169180000, 0.06880734, 0.06901468, 0.06851203, 0.06851203, 29.39218148], [1517169240000, 0.06886495, 0.06886495, 0.06886495, 0.06886495, 0.03737957], [1517169300000, 0.06901462, 0.06901466, 0.06901462, 0.06901466, 1.01427809], [1517169480000, 0.06884759, 0.06884759, 0.06841, 0.06841, 0.34272363], [1517169540000, 0.06844224, 0.06844224, 0.06844224, 0.06844224, 0.17181513], [1517169600000, 0.06877084, 0.06877084, 0.06844224, 0.06844224, 0.66967722], [1517169660000, 0.06844224, 0.06901465, 0.06844224, 0.06901465, 14.10725821], [1517169780000, 0.06901456, 0.06901456, 0.06901456, 0.06901456, 2.00700299], [1517169900000, 0.06843495, 0.06901447, 0.06843495, 0.06901447, 0.24032375], [1517170020000, 0.06871447, 0.06871447, 0.06847629, 0.06847629, 0.18610397], [1517170080000, 0.06871447, 0.06871447, 0.06871447, 0.06871447, 0.19061984], [1517170140000, 0.06871447, 0.06871447, 0.06864749, 0.06864749, 1.04249151], [1517170200000, 0.06864749, 0.06890742, 0.06842594, 0.06842594, 5.46267984], [1517170320000, 0.06875671, 0.06875671, 0.06875671, 0.06875671, 0.0160348], [1517170380000, 0.06875671, 0.0688102, 0.06875671, 0.0688102, 0.07672856], [1517170440000, 0.06875671, 0.06878898, 0.06875671, 0.06878898, 0.37709677], [1517170500000, 0.06878898, 0.0687893, 0.06878898, 0.06878898, 0.21139935], [1517170560000, 0.06878898, 0.06878898, 0.06842594, 0.06842594, 0.37033905], [1517170620000, 0.06842594, 0.06842594, 0.06842594, 0.06842594, 0.20062638], [1517170740000, 0.06848397, 0.06848397, 0.06848397, 0.06848397, 0.01606215], [1517170800000, 0.06848397, 0.06848397, 0.06848397, 0.06848397, 0.292039], [1517170860000, 0.06842594, 0.06842594, 0.06842594, 0.06842594, 0.05353456], [1517170920000, 0.0684838, 0.06848397, 0.0684838, 0.06848397, 0.17241609], [1517170980000, 0.06848396, 0.06898999, 0.06848396, 0.06898988, 3.1138879], [1517171100000, 0.0689896, 0.0689896, 0.06898942, 0.06898942, 0.93912359], [1517171160000, 0.06898941, 0.06898941, 0.06898934, 0.06898934, 0.1853062], [1517171220000, 0.06898934, 0.06898934, 0.06898932, 0.06898932, 0.66843288], [1517171340000, 0.06898922, 0.06898922, 0.06898922, 0.06898922, 0.04131012], [1517171400000, 0.06898915, 0.06898915, 0.06898912, 0.06898912, 0.53968516], [1517171460000, 0.06898903, 0.06898903, 0.06898903, 0.06898903, 0.148839], [1517171520000, 0.06848396, 0.06848396, 0.06848396, 0.06848396, 0.03736593], [1517171580000, 0.06846555, 0.06846555, 0.06846555, 0.06846555, 0.05286245], [1517171760000, 0.06898861, 0.06898861, 0.0686, 0.068886, 0.07337791], [1517171820000, 0.06882267, 0.06882267, 0.0686, 0.0686, 0.11128758], [1517171880000, 0.0686, 0.06882267, 0.0686, 0.06880709, 0.73483692], [1517171940000, 0.06880709, 0.0688071, 0.06856644, 0.06856644, 0.12223251], [1517172000000, 0.06864805, 0.06864805, 0.06856644, 0.06864805, 0.3084229], [1517172060000, 0.06875358, 0.06875358, 0.06844821, 0.06844821, 0.06611897], [1517172120000, 0.06844821, 0.068449, 0.06844821, 0.068449, 1.07864153], [1517172180000, 0.06844899, 0.068449, 0.06844899, 0.068449, 1.1322745], [1517172240000, 0.06875358, 0.06880763, 0.06841, 0.068449, 9.81873528], [1517172300000, 0.06843375, 0.06884282, 0.06843302, 0.06884282, 6.58120547], [1517172360000, 0.06883354, 0.06883354, 0.06864471, 0.06864472, 0.11595038], [1517172420000, 0.06882254, 0.06882254, 0.06864472, 0.06864472, 0.07129264], [1517172480000, 0.06880823, 0.06886556, 0.06880823, 0.06886556, 0.03213358], [1517172540000, 0.06861992, 0.06861992, 0.06855137, 0.06855137, 6.00000191], [1517172600000, 0.06888505, 0.06888505, 0.06885114, 0.06885114, 1.20762328], [1517172660000, 0.06884964, 0.06901432, 0.06841954, 0.069, 3.11057883], [1517172720000, 0.069, 0.06901432, 0.0684553, 0.06901431, 1.88372966], [1517172780000, 0.06901429, 0.06901452, 0.0685, 0.06901425, 2.0706299], [1517172840000, 0.06901425, 0.06901425, 0.0685, 0.0685, 0.96996408], [1517172900000, 0.06864837, 0.06890152, 0.06864837, 0.06890152, 0.88320308], [1517172960000, 0.06890151, 0.06890152, 0.06890151, 0.06890151, 3.01918984], [1517173020000, 0.06890151, 0.06890152, 0.06846861, 0.068488, 0.76161669], [1517173080000, 0.06848799, 0.06848801, 0.06848799, 0.06848801, 0.16904295], [1517173140000, 0.06880151, 0.06880151, 0.06880151, 0.06880151, 0.0249197], [1517173200000, 0.06880151, 0.06880151, 0.06850448, 0.06850448, 2.7081405], [1517173260000, 0.06880151, 0.06890152, 0.06880151, 0.06880151, 1.67132723], [1517173320000, 0.06880151, 0.06880151, 0.06880151, 0.06880151, 0.74056926], [1517173440000, 0.06880151, 0.06880151, 0.06880151, 0.06880151, 0.16837694], [1517173500000, 0.06880151, 0.06880151, 0.06880151, 0.06880151, 1.20374461], [1517173560000, 0.06880151, 0.06880151, 0.06849561, 0.0688015, 0.58065593], [1517173680000, 0.06880145, 0.06880145, 0.068488, 0.068488, 0.39779344], [1517173740000, 0.06849561, 0.06849561, 0.06849561, 0.06849561, 0.01609779], [1517173800000, 0.0684956, 0.06890147, 0.0684956, 0.06890146, 0.87034449], [1517173980000, 0.06848861, 0.06888341, 0.06848861, 0.06888341, 0.40876972], [1517174040000, 0.06848861, 0.06848861, 0.06841002, 0.06841002, 1.0], [1517174100000, 0.06869362, 0.06869362, 0.06869355, 0.06869355, 0.87344376], [1517174160000, 0.06869347, 0.06869347, 0.06869347, 0.06869347, 0.07875377], [1517174280000, 0.06869334, 0.06869334, 0.06869334, 0.06869334, 0.02717397], [1517174340000, 0.06869316, 0.06869364, 0.06869316, 0.06869364, 4.37921089], [1517174400000, 0.06869364, 0.06890152, 0.06869364, 0.06890152, 0.42190933], [1517174460000, 0.06890152, 0.06890152, 0.06849946, 0.06849946, 1.06168312], [1517174520000, 0.06889457, 0.06889457, 0.06849693, 0.06855009, 5.43449275], [1517174580000, 0.06845514, 0.06855009, 0.06845514, 0.06855009, 0.15549217], [1517174640000, 0.06849946, 0.06849946, 0.06845514, 0.06849946, 1.37607344], [1517174700000, 0.06849946, 0.06855009, 0.06849946, 0.06855009, 0.50308666], [1517174820000, 0.06849946, 0.06849946, 0.06849946, 0.06849946, 0.02165802], [1517174880000, 0.06855008, 0.06855009, 0.06849949, 0.06855009, 0.18068379], [1517174940000, 0.06855009, 0.06855009, 0.06841543, 0.06841543, 6.03045559], [1517175000000, 0.06855009, 0.06881038, 0.06845513, 0.06881038, 1.44789539], [1517175060000, 0.06881038, 0.06881038, 0.06855009, 0.06855009, 0.32198377], [1517175240000, 0.06890151, 0.06890151, 0.06890151, 0.06890151, 1.22937295], [1517175300000, 0.06890151, 0.06890153, 0.06890151, 0.06890151, 0.9808919], [1517175360000, 0.06890151, 0.06890153, 0.06890151, 0.06890153, 0.7848558], [1517175420000, 0.06890151, 0.06890153, 0.0685647, 0.06890153, 3.88254156], [1517175480000, 0.0689824, 0.06899049, 0.0689824, 0.0689824, 0.11879102], [1517175540000, 0.0689824, 0.0689824, 0.06890153, 0.06893225, 0.79003412], [1517175600000, 0.06899048, 0.06901469, 0.0687357, 0.06901469, 2.52041164], [1517175660000, 0.06901469, 0.06921321, 0.06861792, 0.06910752, 7.17401088], [1517175720000, 0.06910752, 0.06921421, 0.06896544, 0.06909042, 4.52812456], [1517175780000, 0.06886232, 0.06923371, 0.06886232, 0.06909042, 1.7456846], [1517175840000, 0.06869152, 0.06870855, 0.06869152, 0.06870855, 0.89648093], [1517175900000, 0.06872285, 0.06929461, 0.06871399, 0.06871399, 0.75324103], [1517175960000, 0.068714, 0.0692946, 0.068714, 0.06929457, 1.9172202], [1517176020000, 0.06929457, 0.06929457, 0.06871521, 0.06871521, 0.47432515], [1517176080000, 0.06929454, 0.06929454, 0.06929451, 0.06929451, 0.12679353], [1517176140000, 0.06929446, 0.06929448, 0.06929444, 0.06929444, 1.21208833], [1517176200000, 0.06929443, 0.06929443, 0.0687277, 0.06929442, 1.69511066], [1517176260000, 0.06929441, 0.06929441, 0.06928597, 0.06928597, 0.83676815], [1517176320000, 0.06878131, 0.06878131, 0.06874388, 0.06874388, 0.17905626], [1517176380000, 0.06874397, 0.06874397, 0.06874396, 0.06874396, 0.05959207], [1517176440000, 0.06874396, 0.06874396, 0.06874396, 0.06874396, 0.06117736], [1517176500000, 0.06874396, 0.06928599, 0.06874394, 0.06874394, 1.74599562], [1517176560000, 0.06928555, 0.06928555, 0.06874394, 0.06874394, 3.7657271], [1517176620000, 0.06928543, 0.06928543, 0.06874394, 0.06874394, 0.10592681], [1517176800000, 0.06907356, 0.06928547, 0.06907356, 0.06928547, 0.28954622], [1517176860000, 0.06928547, 0.06928547, 0.06874394, 0.06928534, 0.83584461], [1517176920000, 0.0692, 0.0692, 0.0692, 0.0692, 0.24369773], [1517176980000, 0.06906871, 0.06906871, 0.06874394, 0.06874394, 0.88713646], [1517177040000, 0.06874394, 0.06895007, 0.06874394, 0.06895007, 0.50578185], [1517177100000, 0.06902857, 0.06914146, 0.06902857, 0.06914146, 0.1529795], [1517177160000, 0.06897329, 0.06897329, 0.06895532, 0.06895532, 0.44842722], [1517177220000, 0.06895532, 0.06895532, 0.06895532, 0.06895532, 0.03197722], [1517177280000, 0.06895532, 0.06895532, 0.06895532, 0.06895532, 0.21789009], [1517177340000, 0.06895865, 0.06895865, 0.06895865, 0.06895865, 0.34197352], [1517177400000, 0.06895928, 0.06895928, 0.06895928, 0.06895928, 0.16926018], [1517177460000, 0.06895928, 0.06895928, 0.06895928, 0.06895928, 0.04402782], [1517177520000, 0.06895928, 0.06895928, 0.06895928, 0.06895928, 0.26102361], [1517177640000, 0.06895928, 0.06895928, 0.06895928, 0.06895928, 0.89], [1517177700000, 0.06895927, 0.06895927, 0.0689555, 0.0689555, 1.89411322], [1517177760000, 0.0689555, 0.0689555, 0.0689555, 0.0689555, 0.23862666], [1517177880000, 0.0689555, 0.0689555, 0.06874395, 0.06874395, 1.54766475], [1517177940000, 0.06874395, 0.06895549, 0.06874395, 0.06895549, 0.66612779], [1517178000000, 0.06874395, 0.06874395, 0.06874394, 0.06874394, 1.56013035], [1517178060000, 0.06874395, 0.06874395, 0.06874394, 0.06874394, 0.45312124], [1517178120000, 0.06874394, 0.06874395, 0.06874394, 0.06874395, 0.75069642], [1517178180000, 0.06874395, 0.06874395, 0.06874394, 0.06874394, 0.55116467], [1517178240000, 0.06874395, 0.06874395, 0.06874394, 0.06874394, 1.740417], [1517178300000, 0.06874394, 0.06874394, 0.06874394, 0.06874394, 0.45832086], [1517178360000, 0.06874395, 0.06874395, 0.06874394, 0.06874394, 0.08202704], [1517178420000, 0.06874395, 0.0689555, 0.06874395, 0.0689555, 0.74065713], [1517178480000, 0.06874395, 0.06874395, 0.06874395, 0.06874395, 0.01589986], [1517178540000, 0.06874395, 0.06874395, 0.06874395, 0.06874395, 0.16135323], [1517178600000, 0.06874395, 0.06874395, 0.06874394, 0.06874395, 0.32461293], [1517178660000, 0.06869699, 0.0689555, 0.06869699, 0.0689555, 1.1505202], [1517178720000, 0.0689555, 0.0689555, 0.06874395, 0.06874395, 0.0438239], [1517178780000, 0.06874395, 0.0689555, 0.06874395, 0.0689555, 2.49460483], [1517178840000, 0.0689555, 0.0689555, 0.06874395, 0.06874395, 0.30359777], [1517178900000, 0.06895549, 0.0689555, 0.06895549, 0.0689555, 1.84629123], [1517178960000, 0.0689555, 0.0689555, 0.0689555, 0.0689555, 1.0], [1517179020000, 0.06874395, 0.06874395, 0.06869698, 0.06869698, 0.44175703], [1517179080000, 0.06893614, 0.06893614, 0.06869698, 0.06869698, 1.41501954], [1517179140000, 0.06857224, 0.06857224, 0.06843529, 0.06848, 4.15438763], [1517179200000, 0.0689, 0.06892061, 0.0689, 0.06892061, 1.30602402], [1517179260000, 0.06892061, 0.06892061, 0.06843324, 0.06843324, 0.6873811], [1517179320000, 0.0688, 0.0688, 0.06844846, 0.06844846, 0.27205882], [1517179380000, 0.06879999, 0.0688, 0.06843409, 0.06843409, 0.16434215], [1517179500000, 0.0687, 0.0688, 0.06843409, 0.0688, 3.03493444], [1517179620000, 0.06879999, 0.0688, 0.06879999, 0.0688, 0.08490271], [1517179740000, 0.0688, 0.0688, 0.0688, 0.0688, 0.03706693], [1517179800000, 0.0688, 0.06880007, 0.06846666, 0.06880007, 0.97519028], [1517179860000, 0.06880006, 0.06880007, 0.06848947, 0.06880007, 1.86532438], [1517179920000, 0.06880007, 0.06893451, 0.06880007, 0.06880007, 0.0436251], [1517179980000, 0.06880007, 0.0689, 0.06880007, 0.0689, 2.50036374], [1517180040000, 0.06890001, 0.06890001, 0.06880007, 0.06880007, 8.99820929], [1517180100000, 0.06880007, 0.06888812, 0.06880007, 0.06880007, 0.17721233], [1517180160000, 0.06888812, 0.06888812, 0.06880007, 0.06886026, 0.45331252], [1517180220000, 0.06859999, 0.06859999, 0.06859999, 0.06859999, 0.29154523], [1517180340000, 0.06859997, 0.06859997, 0.06859997, 0.06859997, 0.01532993], [1517180400000, 0.06846666, 0.06859998, 0.0684475, 0.06859998, 0.20577167], [1517180460000, 0.06859998, 0.06859998, 0.06859998, 0.06859998, 0.0154491], [1517180520000, 0.06859997, 0.06859997, 0.06859997, 0.06859997, 0.06515316], [1517180580000, 0.06859996, 0.06859996, 0.06859996, 0.06859996, 0.00783548], [1517180640000, 0.06852463, 0.06852463, 0.06852463, 0.06852463, 0.21696444], [1517180700000, 0.06852463, 0.06852463, 0.06844286, 0.06852463, 7.23865414], [1517180760000, 0.06852463, 0.06852463, 0.06852462, 0.06852463, 0.50195516], [1517180820000, 0.06852463, 0.06852463, 0.06852463, 0.06852463, 0.26], [1517180880000, 0.06852463, 0.06852463, 0.06852463, 0.06852463, 30.53195229], [1517180940000, 0.06852463, 0.06852463, 0.0685246, 0.06852463, 0.41042497], [1517181000000, 0.06852463, 0.06852463, 0.06851, 0.06852463, 1.29884886], [1517181060000, 0.06852463, 0.06890001, 0.06852463, 0.06890001, 2.74133141], [1517181120000, 0.06880135, 0.06880135, 0.06880135, 0.06880135, 0.01444879], [1517181180000, 0.06880135, 0.06880135, 0.06849234, 0.06850491, 1.09718348], [1517181240000, 0.06854602, 0.06861926, 0.06854601, 0.06861926, 3.98183749], [1517181300000, 0.06861926, 0.0688, 0.06861926, 0.0688, 1.61529709], [1517181360000, 0.0688, 0.06880135, 0.0688, 0.06880135, 5.25827015], [1517181420000, 0.06880135, 0.06880135, 0.06880135, 0.06880135, 0.1476706], [1517181480000, 0.06868352, 0.06880134, 0.06868352, 0.06880134, 5.05964594], [1517181540000, 0.06880135, 0.06880135, 0.06880135, 0.06880135, 0.30926225], [1517181600000, 0.06880135, 0.06890001, 0.06880135, 0.06890001, 1.93882583], [1517181660000, 0.06895549, 0.06918257, 0.06895549, 0.06918257, 0.12049318], [1517181720000, 0.0692, 0.0692, 0.06919999, 0.0692, 0.16216167], [1517181780000, 0.06919999, 0.0692, 0.06895549, 0.0692, 1.43226388], [1517181840000, 0.0692, 0.0692, 0.06869902, 0.06882944, 3.75693177], [1517181900000, 0.06872946, 0.0692, 0.06872946, 0.0692, 1.6238776], [1517181960000, 0.06889076, 0.0692, 0.06889076, 0.0692, 2.00390214], [1517182020000, 0.06919118, 0.06919997, 0.06888062, 0.06888062, 0.68975688], [1517182080000, 0.06919999, 0.0692, 0.06893644, 0.0692, 3.96344565], [1517182140000, 0.06898808, 0.0692, 0.06883329, 0.0689553, 2.64459454], [1517182200000, 0.06886216, 0.06929442, 0.06886216, 0.06929442, 0.96699795], [1517182260000, 0.06898851, 0.06929442, 0.06897922, 0.06897923, 2.27475317], [1517182320000, 0.06897923, 0.06897923, 0.06897923, 0.06897923, 0.01758969], [1517182380000, 0.06929442, 0.06929442, 0.069, 0.069, 0.2758203], [1517182440000, 0.06929441, 0.06929441, 0.06929441, 0.06929441, 0.03341972], [1517182500000, 0.06914726, 0.06914726, 0.06914726, 0.06914726, 0.15249538], [1517182560000, 0.0691473, 0.06929454, 0.06900856, 0.06900856, 0.41905207], [1517182620000, 0.06929454, 0.06929454, 0.06929454, 0.06929454, 0.0196052], [1517182680000, 0.0690453, 0.0690453, 0.0690453, 0.0690453, 0.0531126], [1517182740000, 0.06929453, 0.06929453, 0.06929453, 0.06929453, 0.32356767], [1517182800000, 0.06929453, 0.06929453, 0.069, 0.069, 34.68394138], [1517182860000, 0.06929454, 0.06929454, 0.06929454, 0.06929454, 0.78381572], [1517182920000, 0.0692945, 0.06929454, 0.0692945, 0.06929454, 0.22102585], [1517182980000, 0.06929454, 0.06929454, 0.0692945, 0.0692945, 0.4398589], [1517183040000, 0.0692945, 0.06929454, 0.0692945, 0.06929454, 2.98588339], [1517183100000, 0.06929454, 0.06929454, 0.06929454, 0.06929454, 1.33893477], [1517183220000, 0.06897934, 0.06929252, 0.06897934, 0.06929252, 0.03534972], [1517183280000, 0.06929252, 0.06929252, 0.06917274, 0.06917274, 0.079933], [1517183340000, 0.06897925, 0.06929454, 0.06897925, 0.06929454, 3.60228284], [1517183400000, 0.06897925, 0.06929453, 0.06897925, 0.06897925, 1.14894286], [1517183460000, 0.06897925, 0.06897925, 0.06897925, 0.06897925, 0.04029431], [1517183520000, 0.06897925, 0.06897925, 0.06897925, 0.06897925, 0.01], [1517183580000, 0.06897925, 0.06897925, 0.06897925, 0.06897925, 0.14735461], [1517183760000, 0.06928888, 0.06929452, 0.06928888, 0.06929452, 0.177753], [1517183820000, 0.06928888, 0.06928888, 0.06928888, 0.06928888, 2.38055681], [1517183880000, 0.06928888, 0.06928888, 0.06898778, 0.06898778, 0.85833353], [1517184120000, 0.06928888, 0.06928888, 0.0689889, 0.0689889, 0.09752921], [1517184180000, 0.06928887, 0.06928888, 0.06928887, 0.06928888, 0.0406854], [1517184240000, 0.06928887, 0.06928887, 0.06898893, 0.06898893, 1.84914439], [1517184300000, 0.06928887, 0.06928887, 0.06928887, 0.06928887, 0.14432326], [1517184360000, 0.06928886, 0.06928886, 0.06928886, 0.06928886, 0.56338044], [1517184540000, 0.06928886, 0.06928886, 0.06928885, 0.06928885, 3.10513334], [1517184600000, 0.06928886, 0.06928886, 0.06928885, 0.06928886, 0.76975778], [1517184660000, 0.06928885, 0.06928885, 0.06928885, 0.06928885, 0.75246275], [1517184720000, 0.06915028, 0.06915028, 0.06897926, 0.06897926, 0.7393994], [1517184780000, 0.06928885, 0.06928885, 0.06928885, 0.06928885, 0.03689548], [1517184840000, 0.0690019, 0.06928885, 0.06897925, 0.06897925, 1.57761992], [1517184900000, 0.0689867, 0.06928886, 0.06897925, 0.06928886, 1.11664995], [1517184960000, 0.06898022, 0.06898022, 0.06898022, 0.06898022, 0.00845959], [1517185020000, 0.06915028, 0.06915028, 0.06915028, 0.06915028, 2.89250733], [1517185080000, 0.06928886, 0.06928886, 0.06915028, 0.06915028, 0.34996052], [1517185140000, 0.0692888, 0.0692888, 0.06915028, 0.0692888, 0.0765854], [1517185200000, 0.06915027, 0.0692888, 0.06915027, 0.0692888, 1.14462386], [1517185260000, 0.06915027, 0.06915027, 0.06915027, 0.06915027, 0.1], [1517185320000, 0.06897926, 0.0692888, 0.06897926, 0.0692888, 0.67152744], [1517185380000, 0.06897925, 0.06897925, 0.06897925, 0.06897925, 0.36407423], [1517185440000, 0.0692888, 0.0692888, 0.0692888, 0.0692888, 0.01288145], [1517185500000, 0.0692888, 0.06928888, 0.06897925, 0.06928888, 2.19764045], [1517185560000, 0.06897925, 0.06928888, 0.06897925, 0.06928888, 0.69727655], [1517185620000, 0.06928887, 0.06928888, 0.06897925, 0.06897925, 3.96364567], [1517185680000, 0.0692888, 0.0692888, 0.06848001, 0.06848001, 4.95536967], [1517185740000, 0.06897925, 0.06918764, 0.06874681, 0.06874682, 1.04949149], [1517185800000, 0.06875397, 0.06924436, 0.06874682, 0.06924436, 1.92591734], [1517185860000, 0.06924435, 0.06924435, 0.06878914, 0.06878914, 0.09633712], [1517185920000, 0.06923079, 0.06923079, 0.06923079, 0.06923079, 0.02187509], [1517186040000, 0.0692354, 0.0692354, 0.06923539, 0.0692354, 0.17733889], [1517186100000, 0.0692354, 0.06928878, 0.0692354, 0.0692354, 3.20274346], [1517186160000, 0.0692354, 0.0692354, 0.0692354, 0.0692354, 0.08267083], [1517186220000, 0.06928878, 0.06928878, 0.06928878, 0.06928878, 0.23627473], [1517186280000, 0.06925447, 0.06925447, 0.06925446, 0.06925447, 0.03761173], [1517186340000, 0.06925447, 0.06928878, 0.06925447, 0.06928878, 0.15855261], [1517186400000, 0.06925447, 0.06928878, 0.06925447, 0.06925447, 0.17616256], [1517186460000, 0.06925447, 0.06925447, 0.06925447, 0.06925447, 0.14388595], [1517186520000, 0.06925447, 0.0692888, 0.06924027, 0.06924027, 2.23400755], [1517186580000, 0.06888964, 0.06888964, 0.06888964, 0.06888964, 0.14081234], [1517186640000, 0.06924027, 0.06924027, 0.06924027, 0.06924027, 0.00120747], [1517186700000, 0.06924027, 0.0692888, 0.06869803, 0.06881634, 1.68920328], [1517186760000, 0.06926999, 0.06926999, 0.06926999, 0.06926999, 0.00727617], [1517186820000, 0.0692888, 0.0692888, 0.068744, 0.06885261, 1.62828435], [1517186880000, 0.06891647, 0.06900744, 0.06885264, 0.06894579, 0.55805059], [1517187060000, 0.06926999, 0.06926999, 0.06926999, 0.06926999, 0.00727218], [1517187120000, 0.06926999, 0.0692888, 0.06926999, 0.06926999, 0.22740722], [1517187240000, 0.06928879, 0.06928879, 0.06926999, 0.06926999, 0.14125085], [1517187300000, 0.06928878, 0.0692888, 0.06928878, 0.0692888, 0.28864692], [1517187360000, 0.0692888, 0.0692888, 0.0692888, 0.0692888, 0.3256636], [1517187420000, 0.0692888, 0.0692888, 0.0692888, 0.0692888, 0.0186176], [1517187480000, 0.06927001, 0.06927001, 0.06873409, 0.06873409, 0.2], [1517187540000, 0.06928879, 0.0692888, 0.06928879, 0.0692888, 0.12575282], [1517187600000, 0.0692888, 0.0692888, 0.0692888, 0.0692888, 0.48268965], [1517187660000, 0.0692888, 0.0692888, 0.0692888, 0.0692888, 0.43500405], [1517187780000, 0.069, 0.06928879, 0.069, 0.069, 2.19975266], [1517187840000, 0.06891771, 0.06921971, 0.06891771, 0.06921971, 2.11467006], [1517187900000, 0.06928879, 0.0692888, 0.0689553, 0.06928879, 0.83489752], [1517187960000, 0.06928879, 0.06928879, 0.06894276, 0.06928879, 7.2610811], [1517188020000, 0.06928879, 0.06928879, 0.06928879, 0.06928879, 0.07459525], [1517188080000, 0.06928879, 0.0692888, 0.06928879, 0.0692888, 0.32025751], [1517188140000, 0.0692888, 0.0692888, 0.06928879, 0.06928879, 0.57074586], [1517188200000, 0.06928879, 0.0692888, 0.06895002, 0.06895002, 2.07013994], [1517188260000, 0.06928879, 0.06928879, 0.06895003, 0.06928879, 0.44635063], [1517188320000, 0.06895002, 0.06895002, 0.06895002, 0.06895002, 0.13917787], [1517188380000, 0.06928879, 0.06928879, 0.06928879, 0.06928879, 0.34799413], [1517188440000, 0.06928879, 0.06928879, 0.06895002, 0.06895002, 0.07411217], [1517188500000, 0.06928879, 0.0692888, 0.06928879, 0.0692888, 1.07962753], [1517188560000, 0.0692888, 0.0692888, 0.0692888, 0.0692888, 0.10516325], [1517188620000, 0.0692888, 0.0692888, 0.06898003, 0.0692888, 0.0847995], [1517188680000, 0.0692888, 0.0692888, 0.0692888, 0.0692888, 9.91272001], [1517188740000, 0.0692888, 0.0692888, 0.0692888, 0.0692888, 0.01027497], [1517188800000, 0.0692888, 0.0692888, 0.06899, 0.06899, 0.43297038], [1517188860000, 0.06897873, 0.06897873, 0.06897873, 0.06897873, 0.04916566], [1517188920000, 0.069055, 0.0692888, 0.06895002, 0.0692888, 2.00574484], [1517188980000, 0.0692888, 0.0692888, 0.0692888, 0.0692888, 0.01498615], [1517189040000, 0.06900938, 0.06900938, 0.06900938, 0.06900938, 0.32562592], [1517189100000, 0.0692888, 0.0692888, 0.0692888, 0.0692888, 0.57729384], [1517189160000, 0.06895203, 0.06895203, 0.06895203, 0.06895203, 2.47], [1517189220000, 0.06895203, 0.06895203, 0.06895203, 0.06895203, 0.04839538], [1517189280000, 0.0692888, 0.0692888, 0.0692888, 0.0692888, 0.06894303], [1517189340000, 0.06904381, 0.0692888, 0.06904381, 0.0692888, 0.12622804], [1517189400000, 0.06920326, 0.06920326, 0.06865301, 0.06903411, 5.89355741], [1517189460000, 0.06903411, 0.069295, 0.06887732, 0.069291, 1.91342763], [1517189580000, 0.069291, 0.069291, 0.069291, 0.069291, 1.03069518], [1517189640000, 0.069291, 0.069291, 0.069291, 0.069291, 0.03958526], [1517189700000, 0.069291, 0.069291, 0.069291, 0.069291, 0.43295664], [1517189880000, 0.069291, 0.069291, 0.069291, 0.069291, 0.13566282], [1517189940000, 0.069291, 0.069291, 0.06896414, 0.06896414, 9.08701678], [1517190000000, 0.06896414, 0.069291, 0.06896414, 0.069291, 0.70064973], [1517190060000, 0.06896413, 0.06896413, 0.06896413, 0.06896413, 0.03958526], [1517190180000, 0.069291, 0.069291, 0.069291, 0.069291, 1.34762393], [1517190240000, 0.069291, 0.069291, 0.069291, 0.069291, 1.06414932], [1517190300000, 0.069291, 0.06929499, 0.06896414, 0.06929499, 1.42581632], [1517190360000, 0.069291, 0.069295, 0.069291, 0.069291, 0.06164302], [1517190420000, 0.069291, 0.069291, 0.06889762, 0.06889762, 0.99331193], [1517190480000, 0.06889766, 0.06889766, 0.06889766, 0.06889766, 1.53478699], [1517190540000, 0.069295, 0.06929999, 0.069295, 0.06929999, 0.01777347], [1517190600000, 0.0693, 0.0693, 0.0693, 0.0693, 0.32259408], [1517190720000, 0.0693, 0.0693, 0.0693, 0.0693, 4.11106818], [1517190780000, 0.0693, 0.0693, 0.0693, 0.0693, 1.02326515], [1517190840000, 0.06890736, 0.06890736, 0.06890736, 0.06890736, 0.07], [1517190900000, 0.06932812, 0.06936699, 0.06932812, 0.06936699, 0.14424165], [1517191200000, 0.06892408, 0.06892409, 0.0689093, 0.06892409, 1.15332596], [1517191260000, 0.06892409, 0.06892409, 0.06892409, 0.06892409, 0.28751659], [1517191320000, 0.06930812, 0.06930812, 0.06889828, 0.06893627, 18.74528434], [1517191440000, 0.06930812, 0.06935, 0.06930812, 0.06935, 0.02912967], [1517191500000, 0.06935, 0.06935, 0.0693342, 0.0693342, 0.17304328], [1517191680000, 0.06893627, 0.06893627, 0.06893627, 0.06893627, 2.68], [1517191740000, 0.06935, 0.06935, 0.06889835, 0.06889835, 1.28894915], [1517191800000, 0.06893627, 0.06936699, 0.06889835, 0.06936699, 2.12234067], [1517191860000, 0.06936466, 0.06938623, 0.06936466, 0.0693854, 7.84655224], [1517191920000, 0.0694, 0.06940106, 0.0694, 0.06940106, 1.72691878], [1517191980000, 0.06935432, 0.06935432, 0.06935432, 0.06935432, 0.09458675], [1517192040000, 0.06933402, 0.06933402, 0.06933402, 0.06933402, 0.03145353], [1517192100000, 0.06933402, 0.06933402, 0.06889838, 0.06933402, 0.32969579], [1517192160000, 0.06933402, 0.06933402, 0.06891421, 0.06891421, 0.84657748], [1517192220000, 0.06933402, 0.06933402, 0.0689, 0.0689, 1.88581931], [1517192280000, 0.0689, 0.0689, 0.0689, 0.0689, 0.18529178], [1517192340000, 0.0689, 0.0689, 0.0689, 0.0689, 0.11415538], [1517192400000, 0.06927, 0.06927, 0.06927, 0.06927, 0.44227224], [1517192460000, 0.06927, 0.06927, 0.06927, 0.06927, 0.00918435], [1517192520000, 0.06927, 0.06927, 0.06916888, 0.06916888, 0.45705975], [1517192640000, 0.06927, 0.06927, 0.06927, 0.06927, 0.5246431], [1517192700000, 0.06927, 0.0694321, 0.06927, 0.06935999, 12.40985443], [1517192760000, 0.06894672, 0.06936693, 0.06894672, 0.06895923, 1.40396545], [1517192820000, 0.06895103, 0.06895103, 0.06895103, 0.06895103, 0.01004823], [1517192880000, 0.06895103, 0.0694321, 0.06895103, 0.06895103, 9.51838064], [1517193000000, 0.06934525, 0.06934525, 0.06934525, 0.06934525, 0.14420587], [1517193300000, 0.0692999, 0.0692999, 0.0692999, 0.0692999, 0.06403171], [1517193420000, 0.0692999, 0.0692999, 0.0692999, 0.0692999, 0.59042028], [1517193540000, 0.06894674, 0.06894674, 0.06894674, 0.06894674, 1.37739454], [1517193600000, 0.0692999, 0.0692999, 0.06894674, 0.06894674, 0.31937326], [1517193660000, 0.06894674, 0.06894674, 0.06894674, 0.06894674, 0.10476011], [1517193720000, 0.06894674, 0.06894674, 0.06894674, 0.06894674, 1.50702624], [1517193780000, 0.06894675, 0.06894675, 0.06894674, 0.06894674, 0.14705882], [1517193900000, 0.06894674, 0.06894674, 0.06894674, 0.06894674, 0.09880002], [1517194020000, 0.06912331, 0.06933584, 0.06912331, 0.06933584, 0.04588488], [1517194080000, 0.06933585, 0.06934428, 0.06933585, 0.06934428, 0.07705038], [1517194140000, 0.06894675, 0.06894675, 0.06894675, 0.06894675, 0.03955597], [1517194200000, 0.06894675, 0.06894675, 0.06894674, 0.06894674, 1.78458312], [1517194320000, 0.06934426, 0.06934427, 0.06934426, 0.06934427, 0.01623599], [1517194380000, 0.06934426, 0.06934426, 0.06934426, 0.06934426, 0.30379749], [1517194440000, 0.06900213, 0.06900213, 0.06900213, 0.06900213, 0.0594675], [1517194500000, 0.06900213, 0.06940494, 0.06900212, 0.06940494, 0.70314796], [1517194560000, 0.06940493, 0.06940493, 0.06940493, 0.06940493, 0.01279124], [1517194620000, 0.06940493, 0.06940493, 0.06940493, 0.06940493, 0.382], [1517194680000, 0.06940493, 0.06940493, 0.06940489, 0.0694049, 0.36684682], [1517194800000, 0.06940489, 0.0694321, 0.06940489, 0.0694321, 0.14408204], [1517194980000, 0.06900213, 0.06900213, 0.069, 0.069, 1.0], [1517195040000, 0.069, 0.069, 0.069, 0.069, 0.17976667], [1517195100000, 0.069, 0.06939854, 0.069, 0.069, 0.88171173], [1517195160000, 0.069, 0.069, 0.06899519, 0.06899519, 0.23596055], [1517195400000, 0.06938627, 0.06938627, 0.06938627, 0.06938627, 0.14412066], [1517195460000, 0.0693985, 0.0693985, 0.06905709, 0.06905709, 0.42501999], [1517195640000, 0.06939696, 0.06939696, 0.06939696, 0.06939696, 0.86186921], [1517195700000, 0.069397, 0.06944975, 0.06911707, 0.06944975, 1.81356327], [1517195760000, 0.06911708, 0.06911708, 0.06911708, 0.06911708, 0.13095609], [1517195880000, 0.06911708, 0.06911708, 0.06911708, 0.06911708, 0.03190262], [1517195940000, 0.06911708, 0.06911708, 0.06911708, 0.06911708, 0.03190262], [1517196000000, 0.06911708, 0.06944975, 0.06911708, 0.06944975, 0.3212666], [1517196240000, 0.069446, 0.069446, 0.069446, 0.069446, 0.03011952], [1517196300000, 0.069446, 0.069446, 0.069446, 0.069446, 0.14399677], [1517196360000, 0.06911707, 0.06911707, 0.06911707, 0.06911707, 0.53781115], [1517196420000, 0.069446, 0.069446, 0.069446, 0.069446, 0.01522896], [1517196540000, 0.0691171, 0.0691171, 0.0691171, 0.0691171, 3.91905685], [1517196600000, 0.0691171, 0.06948929, 0.0691171, 0.06948929, 1.76654003], [1517196660000, 0.069446, 0.069446, 0.069446, 0.069446, 0.02760518], [1517196720000, 0.06922053, 0.06922053, 0.06922053, 0.06922053, 0.02156042], [1517196780000, 0.069446, 0.069446, 0.06926177, 0.069446, 0.20037409], [1517196840000, 0.069446, 0.069446, 0.06944599, 0.069446, 1.43083845], [1517196900000, 0.069446, 0.069446, 0.06920405, 0.069446, 1.24587973], [1517196960000, 0.069446, 0.06948929, 0.069446, 0.069446, 0.29102568], [1517197020000, 0.06948929, 0.06948929, 0.06948929, 0.06948929, 0.04762731], [1517197080000, 0.06948929, 0.06948929, 0.06931764, 0.06948929, 0.72627398], [1517197140000, 0.06948929, 0.06948929, 0.06926369, 0.0693203, 3.11908302], [1517197200000, 0.0691969, 0.0693203, 0.0691969, 0.0693203, 0.33090999], [1517197260000, 0.0693203, 0.0693203, 0.0693203, 0.0693203, 0.17487767], [1517197320000, 0.06925701, 0.06949106, 0.06925701, 0.06949102, 1.22981465], [1517197440000, 0.06949102, 0.06949102, 0.06949102, 0.06949102, 0.03189128], [1517197500000, 0.06949102, 0.06949102, 0.06949102, 0.06949102, 0.21884171], [1517197560000, 0.06949102, 0.06961639, 0.06919332, 0.06961639, 3.18634032], [1517197620000, 0.0695, 0.0695, 0.0695, 0.0695, 0.01592279], [1517197680000, 0.0695, 0.0695, 0.0693164, 0.0693164, 0.15987209], [1517197740000, 0.0693164, 0.0693164, 0.06921923, 0.06921923, 0.04926345], [1517197800000, 0.06949997, 0.06958995, 0.06921923, 0.06921923, 0.21680442], [1517197860000, 0.06961637, 0.06961637, 0.06921923, 0.06921923, 0.6148637], [1517197920000, 0.06954947, 0.06954947, 0.06921923, 0.06921923, 1.0], [1517197980000, 0.06954947, 0.06954947, 0.06921923, 0.06921923, 0.33432693], [1517198100000, 0.06954947, 0.06961638, 0.06954947, 0.06961638, 0.14378248], [1517198160000, 0.06954947, 0.06954947, 0.06954947, 0.06954947, 0.0326051], [1517198220000, 0.06921923, 0.06921923, 0.06921923, 0.06921923, 0.9637833], [1517198280000, 0.0691418, 0.06923352, 0.0691418, 0.06923352, 7.3259388], [1517198340000, 0.06937559, 0.06937559, 0.06937559, 0.06937559, 0.01494488], [1517198400000, 0.06954947, 0.06954947, 0.06937559, 0.06954947, 0.53474321], [1517198460000, 0.06954946, 0.06954946, 0.06914179, 0.06954946, 0.56600617], [1517198520000, 0.06914179, 0.06917564, 0.06914179, 0.06917564, 14.23322361], [1517198580000, 0.06917563, 0.06917563, 0.06911709, 0.06911709, 1.12832294], [1517198640000, 0.06911706, 0.06917562, 0.06911706, 0.06911706, 1.93978536], [1517198700000, 0.06917562, 0.06917563, 0.06911706, 0.06917563, 1.32337954], [1517198760000, 0.06917562, 0.06917563, 0.06911708, 0.06911708, 1.42706458], [1517198820000, 0.06911706, 0.06917563, 0.06911706, 0.06911706, 1.85520394], [1517198940000, 0.06911706, 0.06917563, 0.06911706, 0.06917563, 0.18709778], [1517199060000, 0.06916, 0.06916, 0.06916, 0.06916, 0.09660784], [1517199120000, 0.06912, 0.06912, 0.06912, 0.06912, 0.0663062], [1517199240000, 0.06912, 0.06912, 0.06912, 0.06912, 2.129634], [1517199300000, 0.06916, 0.06916, 0.06912, 0.06912, 0.44245064], [1517199360000, 0.06916, 0.06916, 0.06912, 0.06912, 0.28137832], [1517199600000, 0.06912, 0.069155, 0.06912, 0.069155, 3.78680629], [1517199780000, 0.06912, 0.06912, 0.06912, 0.06912, 1.48432782], [1517199840000, 0.06912, 0.06912, 0.06912, 0.06912, 0.01487947], [1517199900000, 0.069155, 0.069155, 0.06912, 0.06912, 2.65604514], [1517199960000, 0.06912, 0.06912, 0.06912, 0.06912, 0.13974718], [1517200020000, 0.06911706, 0.06911706, 0.06911706, 0.06911706, 4.0], [1517200080000, 0.06911706, 0.06911706, 0.06911706, 0.06911706, 2.30626138], [1517200140000, 0.06912, 0.069155, 0.06912, 0.06912, 2.89130996], [1517200200000, 0.06911706, 0.06912, 0.06911706, 0.06912, 3.37200126], [1517200320000, 0.06912, 0.06912, 0.06912, 0.06912, 0.04155306], [1517200380000, 0.06912, 0.06916, 0.06908929, 0.06908929, 5.44944002], [1517200440000, 0.0690773, 0.06908928, 0.06870453, 0.06870453, 7.40677061], [1517200500000, 0.06881101, 0.06908929, 0.06881101, 0.06908928, 1.63299259], [1517200560000, 0.06889531, 0.06889531, 0.06889531, 0.06889531, 0.03200532], [1517200620000, 0.06889531, 0.06908928, 0.06889531, 0.06908928, 0.24691676], [1517200680000, 0.06908928, 0.06908928, 0.06891657, 0.06908928, 0.65830311], [1517200740000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.42035176], [1517200800000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.32147578], [1517200860000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.03199536], [1517200920000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.24029364], [1517200980000, 0.0689167, 0.06908928, 0.0689167, 0.06908928, 0.12743761], [1517201040000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.03198354], [1517201100000, 0.06894205, 0.06908928, 0.06870453, 0.06908928, 2.7820346], [1517201160000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.06295133], [1517201220000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.03207469], [1517201280000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.01603836], [1517201340000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.14777458], [1517201400000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.34531784], [1517201460000, 0.06908928, 0.06908928, 0.06895281, 0.06908928, 0.40736083], [1517201520000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.03195845], [1517201580000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.04787352], [1517201640000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.09349319], [1517201700000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.17668063], [1517201760000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.03193565], [1517201820000, 0.06908928, 0.06908928, 0.06895181, 0.06895181, 0.79028739], [1517201880000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.03197892], [1517201940000, 0.06896261, 0.06908928, 0.06885193, 0.06908928, 2.94912649], [1517202000000, 0.06908928, 0.06908928, 0.06885158, 0.06908927, 1.05436352], [1517202060000, 0.06908927, 0.06908927, 0.06908924, 0.06908924, 0.16382552], [1517202120000, 0.06908923, 0.06908923, 0.06908923, 0.06908923, 0.01600592], [1517202180000, 0.06874383, 0.06883107, 0.06874383, 0.06883107, 0.03184286], [1517202240000, 0.069075, 0.069075, 0.069075, 0.069075, 0.02053702], [1517202300000, 0.06908194, 0.06908194, 0.06908194, 0.06908194, 0.01865213], [1517202360000, 0.06908194, 0.06908194, 0.06908194, 0.06908194, 0.04299004], [1517202480000, 0.06908924, 0.06908928, 0.06908924, 0.06908928, 4.22426023], [1517202540000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 0.03437451], [1517202600000, 0.06908927, 0.06908927, 0.06908927, 0.06908927, 0.16948718], [1517202720000, 0.06908927, 0.06908927, 0.069082, 0.069082, 0.06370998], [1517202780000, 0.069082, 0.06908926, 0.069082, 0.06908926, 0.04514479], [1517202840000, 0.06908926, 0.06908926, 0.06908926, 0.06908926, 0.05488291], [1517202900000, 0.06908926, 0.06908927, 0.06908926, 0.06908927, 0.28948042], [1517203020000, 0.06908926, 0.06908926, 0.06908926, 0.06908926, 0.08683843], [1517203080000, 0.06908926, 0.06908926, 0.06908926, 0.06908926, 0.01767446], [1517203260000, 0.06908926, 0.06908926, 0.06908245, 0.06908926, 0.42851471], [1517203380000, 0.06908926, 0.06908926, 0.06908926, 0.06908926, 0.15237227], [1517203440000, 0.06908926, 0.06908926, 0.06908926, 0.06908926, 0.55675235], [1517203500000, 0.06908926, 0.06908926, 0.06898847, 0.06898847, 0.80745001], [1517203560000, 0.06898847, 0.06898847, 0.06874188, 0.06874188, 0.37458202], [1517203620000, 0.06894006, 0.06908926, 0.06886625, 0.06886625, 2.93294095], [1517203680000, 0.06885723, 0.06908926, 0.06879072, 0.06908926, 0.43255679], [1517203740000, 0.06874188, 0.06886195, 0.06874188, 0.06886195, 0.69199156], [1517203800000, 0.06908926, 0.06908927, 0.06908926, 0.06908927, 1.16965441], [1517203860000, 0.06908926, 0.06908926, 0.06908926, 0.06908926, 0.49354277], [1517204040000, 0.06908927, 0.06908927, 0.06908927, 0.06908927, 0.87200225], [1517204160000, 0.06908928, 0.06908928, 0.06908928, 0.06908928, 1.2302124], [1517204220000, 0.06908929, 0.06908929, 0.06908929, 0.06908929, 0.03889827], [1517204280000, 0.06908926, 0.06908929, 0.06908926, 0.06908929, 0.6133043], [1517204340000, 0.06908929, 0.06908929, 0.06908929, 0.06908929, 1.16463946], [1517204400000, 0.06916, 0.06916, 0.06916, 0.06916, 0.65573263], [1517204460000, 0.06908929, 0.06908929, 0.06908929, 0.06908929, 0.22894804], [1517204520000, 0.06908926, 0.06908926, 0.06890082, 0.06890082, 0.37809263], [1517204580000, 0.06916, 0.06916, 0.06916, 0.06916, 0.16149475], [1517204640000, 0.06916, 0.06916, 0.0689871, 0.0689871, 0.08109215], [1517204700000, 0.06890081, 0.0689871, 0.06890081, 0.0689871, 3.78930392], [1517204760000, 0.0689871, 0.0689871, 0.0689871, 0.0689871, 0.0160013], [1517204820000, 0.0689871, 0.0689871, 0.0689871, 0.0689871, 0.0320026], [1517204880000, 0.0689871, 0.0689871, 0.0689871, 0.0689871, 0.05449376], [1517204940000, 0.0689871, 0.0689871, 0.0689871, 0.0689871, 0.0319685], [1517205000000, 0.0689871, 0.0689871, 0.0689871, 0.0689871, 21.63808725], [1517205060000, 0.0689871, 0.0689871, 0.0689871, 0.0689871, 0.24966608], [1517205120000, 0.06916, 0.06916, 0.06916, 0.06916, 0.00827819], [1517205180000, 0.0693, 0.0693, 0.0693, 0.0693, 0.14533], [1517205240000, 0.06901, 0.0693, 0.069, 0.0693, 1.05485209], [1517205300000, 0.0693, 0.0693, 0.0693, 0.0693, 0.03209913], [1517205420000, 0.0693, 0.0693, 0.0693, 0.0693, 0.01597837], [1517205540000, 0.06914, 0.06914, 0.06914, 0.06914, 2.54], [1517205600000, 0.06900002, 0.06900002, 0.06900002, 0.06900002, 0.15731623], [1517205660000, 0.06900002, 0.06900002, 0.06900002, 0.06900002, 1.03755416], [1517205720000, 0.06914, 0.06914, 0.06914, 0.06914, 1.07683485], [1517205780000, 0.06914, 0.06914, 0.06914, 0.06914, 1.0], [1517205840000, 0.06914001, 0.0692, 0.06914001, 0.0692, 0.36898016], [1517205900000, 0.06914001, 0.0692, 0.06914001, 0.0692, 0.20440704], [1517205960000, 0.0692, 0.0693, 0.0692, 0.0693, 30.23596686], [1517206020000, 0.0693, 0.0693, 0.0692, 0.0692, 4.64048998], [1517206080000, 0.06925, 0.0693, 0.06914, 0.0693, 0.6104357], [1517206140000, 0.0693, 0.0693, 0.0693, 0.0693, 0.03189204], [1517206200000, 0.0693, 0.0693, 0.06925, 0.0693, 0.08406977], [1517206260000, 0.0693, 0.0693, 0.0693, 0.0693, 0.15998934], [1517206320000, 0.0693, 0.0693, 0.0693, 0.0693, 0.29672289], [1517206380000, 0.0693, 0.0693, 0.0693, 0.0693, 0.03189204], [1517206440000, 0.06914, 0.0693, 0.06914, 0.0693, 0.19164512], [1517206500000, 0.0693, 0.06943669, 0.0693, 0.06943669, 0.74337852], [1517206560000, 0.06943669, 0.069451, 0.06943669, 0.06945099, 7.59952735], [1517206620000, 0.06945099, 0.069451, 0.06917005, 0.06917005, 6.72236502], [1517206680000, 0.069451, 0.069451, 0.069451, 0.069451, 0.56976958], [1517206740000, 0.069451, 0.069451, 0.069451, 0.069451, 0.01593904], [1517206800000, 0.069451, 0.069451, 0.069451, 0.069451, 0.30796819], [1517206860000, 0.069451, 0.069451, 0.069451, 0.069451, 0.01593904], [1517206920000, 0.069451, 0.069451, 0.069451, 0.069451, 7.00821119], [1517206980000, 0.069451, 0.069451, 0.069451, 0.069451, 0.03187808], [1517207160000, 0.06917005, 0.069444, 0.06917005, 0.06917005, 5.41038063], [1517207280000, 0.069451, 0.069451, 0.06927005, 0.06927005, 0.64441639], [1517207340000, 0.069451, 0.069451, 0.069451, 0.069451, 0.16256893], [1517207400000, 0.069451, 0.069451, 0.069451, 0.069451, 0.1439864], [1517207460000, 0.06927005, 0.06927005, 0.06927005, 0.06927005, 0.07176483], [1517207520000, 0.06927005, 0.06927005, 0.0689871, 0.0689871, 8.21364781], [1517207580000, 0.0689871, 0.069, 0.06890081, 0.06890081, 8.12814347], [1517207640000, 0.06890081, 0.06899747, 0.06874195, 0.06899747, 3.11966192], [1517207700000, 0.06874196, 0.068981, 0.06874189, 0.06874189, 0.18217284], [1517207760000, 0.06874188, 0.06874189, 0.06874188, 0.06874189, 1.09439294], [1517207820000, 0.06874189, 0.06874189, 0.06874189, 0.06874189, 3.08705356], [1517207940000, 0.06890605, 0.06890605, 0.06874188, 0.06874188, 0.20256256], [1517208000000, 0.06890605, 0.06890605, 0.06890605, 0.06890605, 2.38607209], [1517208120000, 0.068853, 0.06890605, 0.068853, 0.06890605, 4.653542], [1517208240000, 0.06890601, 0.06890604, 0.06870452, 0.06870452, 11.59670262], [1517208300000, 0.06862591, 0.06874188, 0.06862591, 0.06874188, 4.61470404], [1517208360000, 0.06874188, 0.06874188, 0.06874187, 0.06874187, 0.04808036], [1517208420000, 0.06874188, 0.06874188, 0.06874188, 0.06874188, 0.03213734], [1517208600000, 0.06874185, 0.06874188, 0.06874185, 0.06874188, 0.16147357], [1517208660000, 0.06874188, 0.06874188, 0.06861192, 0.06874188, 1.26483027], [1517208720000, 0.06861192, 0.06861192, 0.06861192, 0.06861192, 0.09790574], [1517208780000, 0.06861192, 0.06874188, 0.06861192, 0.06874188, 0.03733006], [1517208840000, 0.06874187, 0.06874187, 0.06861192, 0.06861192, 0.13667101], [1517208900000, 0.06861192, 0.06861192, 0.0686119, 0.0686119, 2.06683897], [1517208960000, 0.0686119, 0.0686119, 0.06842477, 0.06842477, 2.57060304], [1517209020000, 0.06842478, 0.06842478, 0.06842477, 0.06842478, 1.29343684], [1517209080000, 0.06842479, 0.06842479, 0.06825761, 0.06825762, 6.63837569], [1517209140000, 0.06825763, 0.06843362, 0.06825763, 0.06842423, 1.74103843], [1517209200000, 0.06825763, 0.06834785, 0.06825763, 0.06825765, 10.63930369], [1517209260000, 0.06825765, 0.06861088, 0.0678, 0.0678, 73.97969373], [1517209320000, 0.06800259, 0.06813166, 0.0678, 0.06805537, 4.43555032], [1517209380000, 0.06780002, 0.06803039, 0.06780001, 0.06780005, 7.2055216], [1517209440000, 0.06780006, 0.06802833, 0.06780005, 0.06802833, 3.09399913], [1517209500000, 0.06780008, 0.06817313, 0.06780008, 0.06802832, 5.88965284], [1517209560000, 0.0680189, 0.068028, 0.06783591, 0.068028, 0.70781547], [1517209620000, 0.06802799, 0.06802799, 0.06801798, 0.06801798, 0.10787242], [1517209680000, 0.06802789, 0.068028, 0.06783592, 0.06791865, 13.03752984], [1517209740000, 0.06791865, 0.06796154, 0.06783593, 0.06783593, 1.50308017], [1517209800000, 0.06780007, 0.06792241, 0.06770144, 0.06792241, 3.64377855], [1517209860000, 0.06792241, 0.06792241, 0.06775261, 0.06792241, 0.40281203], [1517209920000, 0.0679224, 0.06792241, 0.06775261, 0.06789984, 2.09788392], [1517209980000, 0.06792239, 0.06792239, 0.06792239, 0.06792239, 0.01619495], [1517210040000, 0.06775261, 0.06789273, 0.06775261, 0.06789273, 0.03243305], [1517210100000, 0.0678774, 0.0678774, 0.06775261, 0.06775261, 0.16359688], [1517210160000, 0.0678774, 0.0678774, 0.06775262, 0.06775262, 1.19139734], [1517210220000, 0.06775262, 0.06783294, 0.06775262, 0.06783294, 1.27648631], [1517210280000, 0.06783294, 0.06785808, 0.06775263, 0.06783065, 5.26661959], [1517210340000, 0.06782147, 0.06786271, 0.06775262, 0.06775263, 0.09968474], [1517210400000, 0.06775263, 0.06783549, 0.06775262, 0.06775262, 0.17994139], [1517210460000, 0.06783549, 0.0678774, 0.06775263, 0.06786965, 0.68390446], [1517210520000, 0.06786926, 0.0678774, 0.06775263, 0.0678774, 0.6321489], [1517210580000, 0.0678774, 0.0678774, 0.0678774, 0.0678774, 0.32850331], [1517210640000, 0.06789273, 0.06790736, 0.06775263, 0.06790736, 6.75863699], [1517210700000, 0.06786732, 0.06786732, 0.06783, 0.06783, 0.51607203], [1517210760000, 0.06783, 0.06789801, 0.06775264, 0.06775264, 7.07768448], [1517210820000, 0.06788387, 0.06788387, 0.06788362, 0.06788362, 0.18228733], [1517210880000, 0.0679224, 0.0679224, 0.0679224, 0.0679224, 1.70422919], [1517210940000, 0.0679224, 0.0679224, 0.0679224, 0.0679224, 0.13052931], [1517211000000, 0.0679224, 0.0679224, 0.0679224, 0.0679224, 0.37673624], [1517211060000, 0.0679224, 0.06792241, 0.0679224, 0.06792241, 0.27190081], [1517211120000, 0.06792241, 0.06792241, 0.06792241, 0.06792241, 1.2896056], [1517211180000, 0.06812385, 0.06812385, 0.06812385, 0.06812385, 0.74863647], [1517211240000, 0.068, 0.068, 0.068, 0.068, 0.12636097], [1517211300000, 0.068, 0.06816506, 0.068, 0.06815105, 26.93959905], [1517211360000, 0.06813, 0.06815958, 0.06813, 0.06815958, 3.71663346], [1517211420000, 0.06817311, 0.06852076, 0.06815958, 0.06852076, 16.57578715], [1517211480000, 0.06853077, 0.06853077, 0.06837641, 0.06844457, 3.34952607], [1517211540000, 0.0682052, 0.06842793, 0.06815958, 0.06841719, 0.50573164], [1517211600000, 0.06839436, 0.06839436, 0.06839436, 0.06839436, 0.1462108], [1517211660000, 0.06841719, 0.06848044, 0.06841719, 0.06848044, 8.39153682], [1517211720000, 0.06839436, 0.06846815, 0.06839436, 0.06846815, 0.88174607], [1517211780000, 0.06839436, 0.06846814, 0.06839436, 0.06839436, 1.01580519], [1517211840000, 0.06846811, 0.06846811, 0.06797894, 0.06797894, 0.58184657], [1517211900000, 0.06802017, 0.06802017, 0.06792378, 0.06802017, 0.36111292], [1517211960000, 0.06802017, 0.06802017, 0.06792414, 0.06802017, 1.0066995], [1517212020000, 0.06802017, 0.06802017, 0.06802017, 0.06802017, 0.09555988], [1517212080000, 0.06802017, 0.06802017, 0.06802017, 0.06802017, 0.04263441], [1517212140000, 0.06794095, 0.06802017, 0.06794095, 0.06802017, 0.86642682], [1517212200000, 0.06802017, 0.06802017, 0.06761002, 0.06786236, 8.74745891], [1517212260000, 0.06786236, 0.06786236, 0.06786236, 0.06786236, 1.18023133], [1517212320000, 0.06786012, 0.06786236, 0.06786012, 0.06786236, 2.19494075], [1517212440000, 0.06788003, 0.06788003, 0.06788003, 0.06788003, 0.11331085], [1517212500000, 0.06828273, 0.06828273, 0.06828273, 0.06828273, 0.01610949], [1517212560000, 0.06791842, 0.06830622, 0.06791842, 0.06830621, 2.12317152], [1517212620000, 0.06830618, 0.06830618, 0.06830618, 0.06830618, 0.10130299], [1517212740000, 0.06830093, 0.06830093, 0.06830093, 0.06830093, 0.58564356], [1517212800000, 0.06830619, 0.06830619, 0.06830619, 0.06830619, 0.138813], [1517212860000, 0.06830617, 0.06830618, 0.06830617, 0.06830618, 0.64912315], [1517212920000, 0.06793059, 0.06795026, 0.06793059, 0.06795026, 0.66778], [1517212980000, 0.06795789, 0.06795789, 0.06795789, 0.06795789, 0.35], [1517213040000, 0.06797343, 0.06814817, 0.06784414, 0.06814817, 11.80523667], [1517213100000, 0.06808202, 0.06814817, 0.06784414, 0.06796496, 14.94271558], [1517213160000, 0.06784414, 0.06784414, 0.06782367, 0.06782367, 0.01625048], [1517213220000, 0.06782368, 0.06785964, 0.06782367, 0.06785964, 0.04384763], [1517213280000, 0.06782368, 0.06782368, 0.0674, 0.06742946, 6.67380738], [1517213340000, 0.06784733, 0.06784733, 0.06741668, 0.06741668, 0.06748142], [1517213400000, 0.06781155, 0.06781155, 0.06781154, 0.06781154, 0.29492], [1517213460000, 0.06780173, 0.06780173, 0.0675048, 0.06774189, 0.36064296], [1517213520000, 0.06778213, 0.0678086, 0.0675048, 0.0678086, 5.87124802], [1517213580000, 0.0675048, 0.06758464, 0.0675048, 0.06756555, 1.2959303], [1517213640000, 0.0675048, 0.06780859, 0.0675048, 0.06750481, 0.58128387], [1517213700000, 0.06780859, 0.06780859, 0.06780859, 0.06780859, 0.14747391], [1517213820000, 0.06750483, 0.06750483, 0.06727518, 0.06750483, 13.4411005], [1517213880000, 0.06750483, 0.06750483, 0.06724998, 0.06724998, 0.29382554], [1517213940000, 0.06724999, 0.06745098, 0.06724999, 0.06745098, 0.31115489], [1517214000000, 0.06745097, 0.06745097, 0.06725, 0.06743, 0.53874143], [1517214060000, 0.06741, 0.06741, 0.06725002, 0.06725003, 1.75759405], [1517214120000, 0.06738799, 0.06738799, 0.06725005, 0.06738799, 0.18230417], [1517214180000, 0.06725006, 0.06738799, 0.0672, 0.0672, 15.73093287], [1517214240000, 0.06725102, 0.06732598, 0.06684289, 0.06701999, 65.13229309], [1517214300000, 0.06732596, 0.06732596, 0.06732596, 0.06732596, 0.08876888], [1517214360000, 0.06732596, 0.06732596, 0.06727437, 0.06727437, 1.21944035], [1517214420000, 0.06728157, 0.06728157, 0.06702001, 0.0671992, 3.12962662], [1517214480000, 0.0671992, 0.06722695, 0.06718765, 0.0671877, 3.98829421], [1517214540000, 0.06728157, 0.06728157, 0.0668429, 0.0668429, 3.31055967], [1517214600000, 0.0668429, 0.06728158, 0.06679557, 0.06722933, 4.00917075], [1517214660000, 0.06722932, 0.06722932, 0.06722932, 0.06722932, 0.78795847], [1517214720000, 0.06723232, 0.06723232, 0.06723232, 0.06723232, 0.134], [1517214780000, 0.06717249, 0.06717249, 0.06717249, 0.06717249, 0.05647909], [1517214840000, 0.06717249, 0.06717627, 0.06717249, 0.06717627, 0.08564059], [1517214900000, 0.06717627, 0.06728155, 0.06717252, 0.06728155, 0.21719163], [1517214960000, 0.06717252, 0.06728154, 0.06717252, 0.06728152, 0.7668592], [1517215020000, 0.06717256, 0.06728152, 0.0668878, 0.0668878, 7.71021129], [1517215080000, 0.0669908, 0.06719833, 0.06647354, 0.06655022, 83.29781796], [1517215140000, 0.0670022, 0.0670022, 0.06660265, 0.06660265, 1.46524646], [1517215200000, 0.0670065, 0.0670065, 0.0670065, 0.0670065, 0.24682916], [1517215260000, 0.06700651, 0.06710079, 0.0670065, 0.0670065, 1.05620719], [1517215320000, 0.06700651, 0.06700651, 0.0670065, 0.0670065, 0.01645363], [1517215380000, 0.06710066, 0.06719146, 0.0670065, 0.06719145, 11.26892887], [1517215440000, 0.06719145, 0.06719145, 0.06660266, 0.06710427, 5.48586694], [1517215500000, 0.06711702, 0.06711702, 0.06672768, 0.06672769, 7.43992446], [1517215560000, 0.0670629, 0.0670629, 0.06672769, 0.06672769, 11.69243401], [1517215620000, 0.06672769, 0.06706355, 0.06672769, 0.06706355, 0.64358342], [1517215740000, 0.06705691, 0.06705691, 0.06705691, 0.06705691, 0.08946755], [1517215800000, 0.0670569, 0.06707307, 0.0670569, 0.06707306, 0.33062167], [1517215860000, 0.06707306, 0.06707306, 0.06707305, 0.06707305, 0.19180606], [1517215920000, 0.06707304, 0.06707304, 0.06707303, 0.06707303, 0.65852022], [1517215980000, 0.06707298, 0.06707306, 0.06707298, 0.06707306, 0.2485263], [1517216040000, 0.06707306, 0.06710292, 0.06707306, 0.06707307, 0.14058418], [1517216100000, 0.06710292, 0.06710292, 0.0670735, 0.06707351, 0.12125167], [1517216160000, 0.06710292, 0.06710293, 0.0670735, 0.0670735, 0.7951767], [1517216220000, 0.06707351, 0.06707351, 0.0670065, 0.0670065, 5.83189284], [1517216280000, 0.06708433, 0.06708434, 0.06679236, 0.06679236, 5.31528187], [1517216340000, 0.0670896, 0.06710294, 0.0670896, 0.06710294, 0.18288419], [1517216400000, 0.06710294, 0.06710294, 0.06710293, 0.06710293, 0.17237989], [1517216460000, 0.06700001, 0.06700001, 0.06700001, 0.06700001, 0.01645522], [1517216520000, 0.06710293, 0.06710293, 0.06700002, 0.06700002, 20.3051873], [1517216580000, 0.06700505, 0.06700506, 0.06700505, 0.06700505, 0.13090796], [1517216640000, 0.06700505, 0.06709869, 0.06679236, 0.06708333, 3.56836208], [1517216760000, 0.06706715, 0.06708332, 0.06706715, 0.06708332, 3.45303693], [1517216820000, 0.06708332, 0.06708332, 0.06679239, 0.06679239, 0.1868222], [1517216880000, 0.06679239, 0.06708764, 0.06679239, 0.06708764, 0.34296152], [1517217000000, 0.06708764, 0.06708764, 0.06708764, 0.06708764, 0.13282412], [1517217060000, 0.06679239, 0.06679239, 0.06679237, 0.06679239, 1.19069019], [1517217120000, 0.06685919, 0.06708764, 0.06679239, 0.06708764, 7.16484519], [1517217180000, 0.06710294, 0.06710294, 0.06708764, 0.06708764, 1.15942501], [1517217240000, 0.0671029, 0.0671029, 0.06708764, 0.06708764, 1.03286746], [1517217300000, 0.06708765, 0.06710294, 0.06708764, 0.06708764, 0.21230715], [1517217360000, 0.06710294, 0.06721463, 0.06708765, 0.06721463, 6.28084141], [1517217420000, 0.06721463, 0.06721463, 0.0672146, 0.06721463, 0.06623914], [1517217480000, 0.06721465, 0.06721466, 0.06710294, 0.06710294, 4.19910621], [1517217540000, 0.0672714, 0.0672714, 0.06710294, 0.06710294, 0.36870747], [1517217600000, 0.06726868, 0.06726868, 0.06726868, 0.06726868, 0.29731508], [1517217720000, 0.06726868, 0.06728154, 0.06726868, 0.06728154, 2.0024076], [1517217780000, 0.06728155, 0.06728155, 0.06728154, 0.06728154, 4.60625657], [1517217840000, 0.06728155, 0.06728155, 0.06710294, 0.06710294, 3.00189404], [1517217900000, 0.06728155, 0.06728155, 0.06728155, 0.06728155, 0.56169324], [1517217960000, 0.06728155, 0.06728155, 0.06728155, 0.06728155, 0.03372003], [1517218020000, 0.0673733, 0.0673733, 0.06710294, 0.06710294, 0.75782888], [1517218080000, 0.06710294, 0.06740403, 0.06710294, 0.06740403, 0.02898024], [1517218140000, 0.06742899, 0.06742899, 0.06742899, 0.06742899, 0.11068379], [1517218200000, 0.06739587, 0.06743413, 0.06710294, 0.06743413, 1.39774059], [1517218260000, 0.06742708, 0.06742709, 0.06742707, 0.06742707, 3.74969097], [1517218380000, 0.06742707, 0.06747141, 0.06742707, 0.06747141, 6.53829021], [1517218440000, 0.06742707, 0.06742707, 0.06742707, 0.06742707, 0.19339494], [1517218500000, 0.06742707, 0.06747137, 0.0672, 0.06747137, 0.66526728], [1517218560000, 0.06747137, 0.06747137, 0.06747137, 0.06747137, 0.02899333], [1517218680000, 0.06742201, 0.06745276, 0.06742201, 0.06745276, 0.22887154], [1517218740000, 0.0672, 0.06742772, 0.06710294, 0.06742772, 17.29288106], [1517218800000, 0.06743051, 0.06743051, 0.06741797, 0.06741797, 0.50027941], [1517218860000, 0.06742382, 0.06742466, 0.0673446, 0.0673446, 5.46327502], [1517218920000, 0.0673446, 0.06744161, 0.0673446, 0.0673446, 1.03185627], [1517218980000, 0.06734461, 0.06734461, 0.067278, 0.067278, 11.32452947], [1517219040000, 0.067278, 0.067278, 0.06704497, 0.06704497, 1.01838723], [1517219100000, 0.06744161, 0.06744161, 0.06744161, 0.06744161, 0.36961673], [1517219160000, 0.067278, 0.06743636, 0.067278, 0.06743636, 0.12244471], [1517219220000, 0.06720001, 0.06720001, 0.0672, 0.0672, 0.03587456], [1517219280000, 0.0672, 0.0672, 0.06704497, 0.06704497, 0.0328125], [1517219340000, 0.0672, 0.0672, 0.06708103, 0.06708103, 0.0328125], [1517219400000, 0.067435, 0.06746399, 0.06743399, 0.06746399, 1.33914067], [1517219460000, 0.06746198, 0.06746198, 0.06746198, 0.06746198, 0.0407956], [1517219520000, 0.067458, 0.06745895, 0.067458, 0.067458, 0.28858179], [1517219580000, 0.06745799, 0.06745799, 0.067456, 0.06745793, 0.09646116], [1517219640000, 0.06745793, 0.06745793, 0.067456, 0.06745788, 1.19736467], [1517219700000, 0.06745788, 0.06745788, 0.06711464, 0.06711464, 0.51049171], [1517219760000, 0.06745789, 0.06745789, 0.06717473, 0.06717473, 0.03751702], [1517219820000, 0.06745788, 0.06745789, 0.06717473, 0.06745789, 4.20239146], [1517219940000, 0.06718805, 0.06744974, 0.06718805, 0.06718805, 0.78570045], [1517220000000, 0.06718805, 0.06744974, 0.06718805, 0.06743686, 0.23222352], [1517220060000, 0.06743352, 0.06743352, 0.06721443, 0.06721443, 1.07468034], [1517220120000, 0.06721443, 0.06721443, 0.06721443, 0.06721443, 1.28750529], [1517220180000, 0.06740163, 0.06740163, 0.06721443, 0.06721444, 0.53081926], [1517220240000, 0.06740163, 0.067458, 0.06721444, 0.06721445, 1.09646564], [1517220300000, 0.06721444, 0.067458, 0.06721444, 0.06721444, 0.07415104], [1517220360000, 0.06721445, 0.06721446, 0.06721445, 0.06721445, 0.04920817], [1517220420000, 0.067458, 0.0676991, 0.067458, 0.0676991, 0.66563998], [1517220480000, 0.06722, 0.06722, 0.06722, 0.06722, 0.213497], [1517220540000, 0.06722001, 0.06744656, 0.06722, 0.06722, 0.87929838], [1517220600000, 0.06722, 0.06722, 0.06722, 0.06722, 0.1701655], [1517220660000, 0.06722001, 0.06722001, 0.06718805, 0.06722, 11.39233624], [1517220720000, 0.06722, 0.06722, 0.06722, 0.06722, 1.03280274], [1517220780000, 0.06722, 0.06744636, 0.06718805, 0.06720001, 6.22324134], [1517220840000, 0.06720001, 0.06720001, 0.0672, 0.0672, 1.28657594], [1517220900000, 0.06744615, 0.06744615, 0.0672, 0.0672, 0.0341681], [1517220960000, 0.0672, 0.0672, 0.06718805, 0.06718805, 0.06108839], [1517221080000, 0.06718805, 0.06718805, 0.06718805, 0.06718805, 0.49920064], [1517221200000, 0.06718806, 0.06718806, 0.06718805, 0.06718805, 0.01640917], [1517221260000, 0.06718806, 0.06718806, 0.06717473, 0.06717473, 4.45077617], [1517221320000, 0.06717473, 0.06717473, 0.06717473, 0.06717473, 0.03377934], [1517221440000, 0.06744551, 0.06744551, 0.06742981, 0.06742981, 2.33339834], [1517221680000, 0.0674298, 0.06742981, 0.0674298, 0.06742981, 0.09613986], [1517221800000, 0.0674298, 0.06742981, 0.0674298, 0.06742981, 1.48970057], [1517221860000, 0.06742981, 0.06742982, 0.06704498, 0.06742982, 1.61476649], [1517221920000, 0.06705024, 0.06705024, 0.06705024, 0.06705024, 0.58270838], [1517222040000, 0.06744548, 0.06744548, 0.06744548, 0.06744548, 0.02335101], [1517222100000, 0.06744548, 0.06744548, 0.06744548, 0.06744548, 0.46694943], [1517222160000, 0.06744548, 0.06744548, 0.06744548, 0.06744548, 0.02335101], [1517222220000, 0.06744548, 0.06744548, 0.06744547, 0.06744547, 5.56192029], [1517222280000, 0.06744547, 0.06744547, 0.06744547, 0.06744547, 0.01167551], [1517222400000, 0.06744547, 0.06744547, 0.06744547, 0.06744547, 0.01167551], [1517222460000, 0.06710611, 0.06710611, 0.06710611, 0.06710611, 13.19602762], [1517222580000, 0.06711981, 0.06711981, 0.06711981, 0.06711981, 0.40790213], [1517222700000, 0.06711981, 0.06711981, 0.06711981, 0.06711981, 0.01471639], [1517222760000, 0.06710926, 0.06710926, 0.06710612, 0.06710612, 16.20166435], [1517222820000, 0.06710612, 0.06710612, 0.06710612, 0.06710612, 1.3538908], [1517222880000, 0.06710612, 0.06710612, 0.06710001, 0.06710612, 0.41015906], [1517223060000, 0.06710612, 0.06710612, 0.0670734, 0.0670734, 2.15379082], [1517223120000, 0.0670734, 0.06710612, 0.0670734, 0.06710612, 0.17963291], [1517223180000, 0.06710612, 0.06710612, 0.06710612, 0.06710612, 0.42511734], [1517223240000, 0.06710612, 0.06710612, 0.0670734, 0.0670734, 0.14903529], [1517223300000, 0.0670734, 0.06710612, 0.0670734, 0.06710612, 0.63616983], [1517223360000, 0.06707339, 0.06707339, 0.06707339, 0.06707339, 0.67948637], [1517223420000, 0.06707339, 0.06707339, 0.06707339, 0.06707339, 0.13315485], [1517223480000, 0.06707339, 0.06743634, 0.06707339, 0.06743634, 1.22366092], [1517223600000, 0.06743634, 0.06743634, 0.06743634, 0.06743634, 0.42112376], [1517223660000, 0.067105, 0.06743632, 0.067105, 0.06743632, 2.52855387], [1517223840000, 0.06743628, 0.06743628, 0.06710503, 0.06710503, 0.09943306], [1517223900000, 0.06710503, 0.06743628, 0.067104, 0.067104, 2.92221248], [1517223960000, 0.06743627, 0.06743627, 0.06743627, 0.06743627, 0.01967604], [1517224020000, 0.06710401, 0.06710401, 0.067104, 0.067104, 5.69928163], [1517224080000, 0.067104, 0.06743626, 0.067104, 0.06743625, 0.43633574], [1517224140000, 0.06743624, 0.06743624, 0.0674362, 0.06743624, 0.88084491], [1517224200000, 0.0674362, 0.06743621, 0.0674362, 0.0674362, 1.86009796], [1517224260000, 0.06743623, 0.06743623, 0.0674362, 0.0674362, 0.07193558], [1517224320000, 0.0674362, 0.0674362, 0.0674362, 0.0674362, 0.10035417], [1517224380000, 0.0674362, 0.0674362, 0.0674362, 0.0674362, 0.02491398], [1517224500000, 0.06743618, 0.06743618, 0.06743618, 0.06743618, 0.1482883], [1517224680000, 0.06710903, 0.06710903, 0.06710903, 0.06710903, 0.09891295], [1517224740000, 0.06710904, 0.06710904, 0.06710903, 0.06710903, 0.39723632], [1517224800000, 0.06710903, 0.06743625, 0.067104, 0.067104, 7.48474187], [1517224860000, 0.06743623, 0.06743623, 0.06743623, 0.06743623, 1.00400299], [1517224920000, 0.067104, 0.06710401, 0.067104, 0.067104, 0.73382916], [1517225040000, 0.06743621, 0.06743621, 0.06743621, 0.06743621, 0.01324912], [1517225100000, 0.06743621, 0.06743621, 0.06743621, 0.06743621, 0.2965766], [1517225160000, 0.0674362, 0.06743622, 0.0674362, 0.06743621, 1.53122928], [1517225220000, 0.06743621, 0.06743621, 0.0674362, 0.06743621, 0.13442233], [1517225280000, 0.0674362, 0.0674362, 0.06710401, 0.06710401, 5.14313199], [1517225340000, 0.0674362, 0.0674362, 0.067104, 0.067104, 0.71070063], [1517225400000, 0.06712043, 0.06712043, 0.06712042, 0.06712042, 0.5380284], [1517225460000, 0.06712042, 0.06712043, 0.06712042, 0.06712043, 1.17129592], [1517225640000, 0.06743625, 0.06744563, 0.06713, 0.06713, 13.46279836], [1517225700000, 0.06744562, 0.06744562, 0.0674456, 0.0674456, 2.6258732], [1517225760000, 0.06744556, 0.06744557, 0.06713001, 0.06713001, 2.73343626], [1517225820000, 0.06744554, 0.06744563, 0.06744548, 0.06744563, 8.7666856], [1517225880000, 0.06744563, 0.06744563, 0.06744563, 0.06744563, 2.54968646], [1517226000000, 0.06744554, 0.06744563, 0.06744554, 0.06744563, 0.39842487], [1517226060000, 0.06744561, 0.06744561, 0.06744561, 0.06744561, 0.03965459], [1517226120000, 0.0674456, 0.0674456, 0.0674456, 0.0674456, 1.70076358], [1517226180000, 0.0674456, 0.06744562, 0.0674456, 0.0674456, 0.80469776], [1517226240000, 0.0674456, 0.06744562, 0.06743554, 0.06744562, 2.43393652], [1517226300000, 0.06744559, 0.0674456, 0.06744559, 0.0674456, 0.18096562], [1517226480000, 0.0674456, 0.0674456, 0.0674456, 0.0674456, 3.69742429], [1517226600000, 0.06743554, 0.06744561, 0.06743554, 0.06744561, 5.42509697], [1517226660000, 0.06713002, 0.06713002, 0.06713, 0.06713002, 23.50342691], [1517226780000, 0.06744563, 0.06744563, 0.06744563, 0.06744563, 0.06308452], [1517226900000, 0.06744563, 0.06744563, 0.06744563, 0.06744563, 0.51170191], [1517226960000, 0.06744563, 0.06744563, 0.06744563, 0.06744563, 0.11401613], [1517227020000, 0.06744562, 0.06744562, 0.06744562, 0.06744562, 0.12170739], [1517227080000, 0.06712044, 0.06712044, 0.06712042, 0.06712042, 0.04210525], [1517227200000, 0.06713207, 0.06744562, 0.06712042, 0.06713207, 1.81652669], [1517227260000, 0.06713207, 0.06713207, 0.06713207, 0.06713207, 0.05226726], [1517227320000, 0.06713207, 0.06713207, 0.06713207, 0.06713207, 0.16158648], [1517227500000, 0.06744562, 0.06744563, 0.06744562, 0.06744563, 3.71929068], [1517227560000, 0.06744562, 0.06744562, 0.06744562, 0.06744562, 0.18353939], [1517227620000, 0.06744562, 0.06744562, 0.06744562, 0.06744562, 0.10152638], [1517227680000, 0.06744562, 0.06744563, 0.06744562, 0.06744562, 2.94385429], [1517227860000, 0.06744562, 0.06744562, 0.06744562, 0.06744562, 0.32687168], [1517227980000, 0.06744562, 0.06744562, 0.06744562, 0.06744562, 0.071213], [1517228040000, 0.06744561, 0.06744563, 0.06744561, 0.06744563, 6.96300638], [1517228100000, 0.06744562, 0.06744562, 0.06744562, 0.06744562, 12.25402086], [1517228160000, 0.06744562, 0.06744562, 0.06744562, 0.06744562, 0.57241545], [1517228280000, 0.06744563, 0.06744563, 0.06744563, 0.06744563, 23.97202141], [1517228400000, 0.06762242, 0.06762242, 0.06762242, 0.06762242, 0.14787999], [1517228460000, 0.06759, 0.06762242, 0.06759, 0.06762242, 0.6416386], [1517228520000, 0.06763242, 0.067847, 0.06763242, 0.067847, 22.83250509], [1517228580000, 0.06763242, 0.06763242, 0.06763242, 0.06763242, 0.0326027], [1517228640000, 0.06763243, 0.06763243, 0.06763242, 0.06763242, 0.33508826], [1517228700000, 0.06763242, 0.067847, 0.06763242, 0.067847, 0.09592453], [1517228760000, 0.06784632, 0.06794633, 0.06783871, 0.06794632, 59.38091072], [1517228820000, 0.06794632, 0.06794633, 0.06794632, 0.06794632, 15.01088406], [1517228880000, 0.06794632, 0.06794632, 0.06794632, 0.06794632, 10.12171808], [1517228940000, 0.06794632, 0.068, 0.06794632, 0.06794633, 8.29739031], [1517229000000, 0.06794633, 0.06799989, 0.06794633, 0.06794633, 0.07196798], [1517229060000, 0.06794633, 0.06800012, 0.06794632, 0.06800012, 31.04261792], [1517229120000, 0.068002, 0.068002, 0.068002, 0.068002, 9.14118063], [1517229180000, 0.068002, 0.06802954, 0.068002, 0.06802954, 5.83142779], [1517229240000, 0.068002, 0.068002, 0.068002, 0.068002, 5.60662272], [1517229300000, 0.068005, 0.06807793, 0.068002, 0.068002, 12.27752268], [1517229360000, 0.06794632, 0.068008, 0.06794632, 0.068008, 6.26971395], [1517229420000, 0.068008, 0.068008, 0.068008, 0.068008, 7.11444933], [1517229480000, 0.068008, 0.06805944, 0.068008, 0.06805944, 17.93309207], [1517229540000, 0.06805944, 0.06807798, 0.06805944, 0.06807798, 20.41252357], [1517229600000, 0.06807798, 0.06807799, 0.06806944, 0.06806944, 4.28992752], [1517229660000, 0.06806944, 0.06817889, 0.06806944, 0.06806944, 12.76953493], [1517229720000, 0.06806944, 0.06813497, 0.06806944, 0.06806944, 7.90339585], [1517229780000, 0.06806944, 0.06807798, 0.06806944, 0.06807798, 7.38710136], [1517229840000, 0.06807798, 0.06807798, 0.06807, 0.06807, 2.83856025], [1517229900000, 0.06807, 0.0681789, 0.06807, 0.06814714, 10.54585109], [1517229960000, 0.06814714, 0.06814714, 0.06814714, 0.06814714, 30.89281974], [1517230020000, 0.06814714, 0.06817884, 0.06814714, 0.06814714, 5.10152641], [1517230080000, 0.06814714, 0.06814714, 0.06814714, 0.06814714, 4.22303046], [1517230140000, 0.06814714, 0.06814714, 0.06814714, 0.06814714, 3.32997835], [1517230200000, 0.06817884, 0.06817888, 0.06814714, 0.06814714, 3.29448819], [1517230260000, 0.06814714, 0.06822266, 0.06814714, 0.06814718, 8.51154651], [1517230320000, 0.06814718, 0.06822264, 0.06814714, 0.06814714, 3.39290914], [1517230380000, 0.06822262, 0.06822262, 0.06814714, 0.06814714, 28.0414763], [1517230440000, 0.06814714, 0.06822263, 0.06814714, 0.06814714, 0.22093197], [1517230500000, 0.06814714, 0.06827486, 0.06807, 0.06824714, 25.47834514], [1517230560000, 0.06824714, 0.06827481, 0.06824714, 0.06824714, 2.15350368], [1517230620000, 0.06827481, 0.0683, 0.06824714, 0.06825, 3.03569368], [1517230680000, 0.06825, 0.06825, 0.06824714, 0.06824714, 11.76329222], [1517230740000, 0.06824714, 0.06835389, 0.06824714, 0.06835389, 1.91489102], [1517230800000, 0.0683, 0.0683, 0.0683, 0.0683, 34.55979361], [1517230860000, 0.0683, 0.0683, 0.0683, 0.0683, 1.73508444], [1517230920000, 0.06824715, 0.0683863, 0.06806007, 0.0683863, 39.39235334], [1517230980000, 0.068387, 0.068387, 0.068387, 0.068387, 0.73643637], [1517231040000, 0.068387, 0.06845002, 0.06838699, 0.06845, 102.42082041], [1517231100000, 0.068479, 0.068479, 0.06845, 0.06845, 0.74482609], [1517231160000, 0.06845, 0.06847894, 0.0683863, 0.06847, 0.65288077], [1517231220000, 0.06847, 0.06847, 0.06847, 0.06847, 3.87316588], [1517231280000, 0.06847, 0.06855334, 0.06844218, 0.0684939, 8.8035245], [1517231340000, 0.06848953, 0.06849974, 0.06844516, 0.068498, 39.64362063], [1517231400000, 0.06849801, 0.06849801, 0.068498, 0.068498, 124.90878553], [1517231460000, 0.068498, 0.068498, 0.068498, 0.068498, 5.24185073], [1517231520000, 0.068498, 0.068498, 0.0682, 0.0682, 6.9163012], [1517231580000, 0.0682, 0.06820001, 0.0682, 0.06820001, 1.36838297], [1517231640000, 0.06820001, 0.06849833, 0.06820001, 0.06849833, 0.08294587], [1517231700000, 0.06849821, 0.06849821, 0.06849819, 0.06849821, 7.42718864], [1517231760000, 0.06849821, 0.06849821, 0.06849821, 0.06849821, 0.54302701], [1517231820000, 0.06849821, 0.06849821, 0.06820003, 0.06820003, 0.60345225], [1517231880000, 0.06820003, 0.06820003, 0.06820001, 0.06820001, 0.07635528], [1517231940000, 0.06820004, 0.06849801, 0.06820001, 0.06849774, 1.37948287], [1517232000000, 0.06820001, 0.06849743, 0.06820001, 0.06849743, 4.88769707], [1517232120000, 0.06844382, 0.06844382, 0.06820001, 0.06820001, 3.36667455], [1517232180000, 0.06834142, 0.06834142, 0.06820001, 0.06820001, 0.73646261], [1517232240000, 0.06820001, 0.06820001, 0.06820001, 0.06820001, 2.3484079], [1517232300000, 0.06820001, 0.06820001, 0.06820001, 0.06820001, 0.37292822], [1517232360000, 0.06820001, 0.06820001, 0.06820001, 0.06820001, 0.56083215], [1517232420000, 0.06820001, 0.06820001, 0.06820001, 0.06820001, 1.59289549], [1517232480000, 0.06820001, 0.06837038, 0.06820001, 0.06837036, 0.36443585], [1517232540000, 0.06837035, 0.06837035, 0.06820003, 0.06820003, 0.03000156], [1517232600000, 0.06820001, 0.06837036, 0.06820001, 0.06820001, 1.05493378], [1517232660000, 0.06837036, 0.06837036, 0.06820001, 0.06820001, 0.62802105], [1517232720000, 0.0683, 0.0683, 0.06820001, 0.06820001, 0.17374926], [1517232780000, 0.0683, 0.0683, 0.06820001, 0.0683, 0.57575583], [1517232960000, 0.06820001, 0.06820001, 0.06820001, 0.06820001, 0.14038975], [1517233020000, 0.06820001, 0.068209, 0.06820001, 0.068209, 0.31190731], [1517233080000, 0.06821, 0.06821, 0.06820002, 0.06820002, 1.23196175], [1517233140000, 0.06820002, 0.06849742, 0.06820002, 0.06849742, 14.8165023], [1517233200000, 0.06842417, 0.06842417, 0.06820002, 0.06820002, 0.48409186], [1517233260000, 0.06820003, 0.06820004, 0.06820002, 0.06820002, 0.35770033], [1517233320000, 0.06820004, 0.06820004, 0.06820001, 0.06820001, 20.98303649], [1517233380000, 0.06820001, 0.06820004, 0.06820001, 0.06820004, 0.45312818], [1517233440000, 0.06820001, 0.06820004, 0.06820001, 0.06820004, 1.06137005], [1517233500000, 0.06820004, 0.06849812, 0.06820001, 0.06833006, 6.97148733], [1517233560000, 0.06820001, 0.06831329, 0.06820001, 0.06831329, 0.03226797], [1517233620000, 0.06820001, 0.06820001, 0.06820001, 0.06820001, 0.09183908], [1517233680000, 0.06826554, 0.06826554, 0.06820001, 0.06820001, 0.29476408], [1517233740000, 0.06820001, 0.0683, 0.06820001, 0.0683, 11.12970103], [1517233800000, 0.0683, 0.06830021, 0.0683, 0.0683, 5.30396811], [1517233860000, 0.06820001, 0.06829999, 0.06820001, 0.06820001, 0.50055884], [1517233920000, 0.06820001, 0.06820001, 0.06820001, 0.06820001, 0.03233138], [1517233980000, 0.06820001, 0.06829999, 0.06820001, 0.06820001, 1.03064405], [1517234040000, 0.06820001, 0.06829996, 0.06820001, 0.06829996, 0.0504185], [1517234100000, 0.06820001, 0.06829492, 0.06820001, 0.06820001, 2.56920246], [1517234160000, 0.06820001, 0.06829995, 0.06820001, 0.06829995, 6.40124658], [1517234220000, 0.06820001, 0.06820001, 0.06820001, 0.06820001, 1.83215079], [1517234280000, 0.06820001, 0.06820001, 0.06820001, 0.06820001, 0.03640617], [1517234340000, 0.06829995, 0.06829995, 0.06829995, 0.06829995, 0.5547034], [1517234400000, 0.06820005, 0.06820005, 0.06820001, 0.06820001, 1.43277423], [1517234460000, 0.06820001, 0.06820001, 0.06820001, 0.06820001, 0.16296665], [1517234520000, 0.06829994, 0.06829995, 0.06829993, 0.06829995, 1.04999652], [1517234580000, 0.06820001, 0.06820001, 0.06820001, 0.06820001, 0.201183], [1517234640000, 0.06820001, 0.06829994, 0.06820001, 0.06820001, 1.55173382], [1517234700000, 0.0682999, 0.06829994, 0.0682999, 0.06829994, 0.0192658], [1517234820000, 0.0682999, 0.0682999, 0.06820001, 0.06820001, 4.53286713], [1517234880000, 0.06820001, 0.06820001, 0.0682, 0.0682, 3.83979849], [1517234940000, 0.06817004, 0.06817004, 0.068, 0.068, 3.32567085], [1517235000000, 0.06819999, 0.0682, 0.06819999, 0.0682, 0.01516067], [1517235120000, 0.068, 0.068, 0.068, 0.068, 0.45951952], [1517235180000, 0.068, 0.068, 0.068, 0.068, 0.11807654], [1517235240000, 0.068, 0.068, 0.068, 0.068, 0.01621324], [1517235300000, 0.06829989, 0.06829989, 0.06789262, 0.06789262, 0.57959822], [1517235360000, 0.06789999, 0.06789999, 0.06789262, 0.06789262, 0.77613447], [1517235420000, 0.06789264, 0.06789264, 0.06789264, 0.06789264, 0.01623887], [1517235480000, 0.06789999, 0.06829981, 0.06789999, 0.06790001, 5.45309507], [1517235540000, 0.0679, 0.0679, 0.0679, 0.0679, 0.4303734], [1517235600000, 0.06790001, 0.06829965, 0.0679, 0.06829965, 0.5263805], [1517235660000, 0.06790001, 0.06790001, 0.0679, 0.0679, 0.347434], [1517235720000, 0.06829963, 0.06829963, 0.06829963, 0.06829963, 0.0161055], [1517235780000, 0.068, 0.068, 0.068, 0.068, 0.03758532], [1517235840000, 0.06821179, 0.06821179, 0.068, 0.068, 0.08551081], [1517235900000, 0.068, 0.06821174, 0.068, 0.06821174, 15.26384951], [1517235960000, 0.068, 0.068, 0.068, 0.068, 0.21201995], [1517236020000, 0.068, 0.068, 0.0679, 0.0679, 3.83395799], [1517236080000, 0.068, 0.068, 0.068, 0.068, 0.41217647], [1517236140000, 0.0679, 0.0679, 0.0679, 0.0679, 0.06010949], [1517236260000, 0.0679, 0.0679, 0.0679, 0.0679, 1.10308689], [1517236320000, 0.0679, 0.068, 0.0679, 0.068, 0.03241358], [1517236380000, 0.0679, 0.068, 0.0679, 0.0679, 2.44978386], [1517236440000, 0.0679, 0.06790001, 0.0679, 0.0679, 26.04614922], [1517236500000, 0.0679, 0.06819218, 0.0679, 0.0679, 49.27684929], [1517236560000, 0.0679, 0.0679, 0.0679, 0.0679, 0.02067294], [1517236620000, 0.06816678, 0.06816678, 0.06816678, 0.06816678, 0.01599906], [1517236680000, 0.06816677, 0.06821167, 0.06792836, 0.0682041, 0.23872341], [1517236740000, 0.0682041, 0.0682041, 0.0679, 0.0679, 0.56615717], [1517236800000, 0.06789262, 0.06789262, 0.06759, 0.06759, 3.93149509], [1517236920000, 0.06809858, 0.06809858, 0.06809858, 0.06809858, 0.01615305], [1517236980000, 0.06770135, 0.06810125, 0.06770135, 0.06810125, 2.79879341], [1517237100000, 0.06810125, 0.06810126, 0.06779672, 0.06810126, 1.58066471], [1517237160000, 0.06810126, 0.06810126, 0.06810126, 0.06810126, 0.01615241], [1517237280000, 0.06810126, 0.06810126, 0.06810126, 0.06810126, 0.06156171], [1517237340000, 0.06810126, 0.06810126, 0.06810126, 0.06810126, 0.11026898], [1517237400000, 0.06810126, 0.06810126, 0.06810126, 0.06810126, 0.58248673], [1517237460000, 0.06810126, 0.06810126, 0.06810126, 0.06810126, 0.01615241], [1517237580000, 0.06799999, 0.06799999, 0.06799999, 0.06799999, 0.0162711], [1517237640000, 0.06799999, 0.06799999, 0.06799999, 0.06799999, 0.5237235], [1517237700000, 0.06799999, 0.06810126, 0.06799999, 0.06810126, 3.52170644], [1517237760000, 0.06816619, 0.06817785, 0.06816619, 0.06817785, 3.15199337], [1517237820000, 0.06817986, 0.06819, 0.06817785, 0.06817785, 4.33150252], [1517237880000, 0.06818632, 0.06818632, 0.06816035, 0.06816035, 7.70806542], [1517237940000, 0.06816035, 0.06817325, 0.06816035, 0.06816035, 1.99637139], [1517238000000, 0.06818608, 0.06821167, 0.06818608, 0.06821167, 4.72638739], [1517238060000, 0.06818825, 0.0682009, 0.06818825, 0.06818825, 0.38581717], [1517238120000, 0.06818825, 0.06821167, 0.06818825, 0.06821167, 2.74254081], [1517238180000, 0.06818825, 0.0681883, 0.06818825, 0.0681883, 0.12740091], [1517238240000, 0.0681883, 0.0681883, 0.0681883, 0.0681883, 0.03233692], [1517238300000, 0.0681883, 0.06825147, 0.0681883, 0.06825147, 1.12310888], [1517238360000, 0.0681883, 0.0681883, 0.0681883, 0.0681883, 0.03233692], [1517238420000, 0.0681883, 0.06818831, 0.0681883, 0.06818831, 0.53861784], [1517238480000, 0.06818831, 0.06818831, 0.06818831, 0.06818831, 0.07252271], [1517238540000, 0.06818831, 0.06818831, 0.06818831, 0.06818831, 0.03233692], [1517238600000, 0.06818831, 0.06818831, 0.06818827, 0.06818827, 0.11305188], [1517238660000, 0.06818827, 0.06818827, 0.06818827, 0.06818827, 0.03233694], [1517238720000, 0.06818827, 0.0681883, 0.06818827, 0.06818827, 0.05771574], [1517238780000, 0.06818827, 0.06818827, 0.06818827, 0.06818827, 0.12], [1517238840000, 0.06818828, 0.06818829, 0.06818828, 0.06818829, 0.01466527], [1517238960000, 0.06818827, 0.06818829, 0.06818825, 0.06818829, 1.86992485], [1517239020000, 0.06818829, 0.06818829, 0.06818829, 0.06818829, 0.43496645], [1517239080000, 0.06818829, 0.06818829, 0.06818825, 0.06818825, 0.43387448], [1517239140000, 0.06818828, 0.06818829, 0.06818828, 0.06818829, 0.0149337], [1517239200000, 0.06818829, 0.06818829, 0.06773001, 0.06784541, 25.380649], [1517239260000, 0.06818828, 0.06818828, 0.06818828, 0.06818828, 0.10274018], [1517239380000, 0.06818829, 0.06829991, 0.06818829, 0.06829991, 0.60759798], [1517239440000, 0.06829991, 0.06829993, 0.06829991, 0.06829993, 0.25137648], [1517239500000, 0.06829993, 0.06829995, 0.06829991, 0.06829991, 0.84235883], [1517239560000, 0.06799302, 0.06799302, 0.06798673, 0.06798673, 10.00000191], [1517239620000, 0.06796908, 0.06796908, 0.06792169, 0.06792169, 8.00000191], [1517239680000, 0.06808829, 0.06829991, 0.06802027, 0.06829991, 6.05591498], [1517239800000, 0.06802249, 0.06829991, 0.06802249, 0.06829991, 6.49317521], [1517239920000, 0.06829991, 0.06829991, 0.06829991, 0.06829991, 2.42396624], [1517239980000, 0.06829991, 0.06829991, 0.06829991, 0.06829991, 0.30867774], [1517240100000, 0.06809991, 0.06809991, 0.06808829, 0.06808829, 1.42347696], [1517240160000, 0.06808829, 0.06808829, 0.06808829, 0.06808829, 0.70263549], [1517240220000, 0.0680999, 0.0680999, 0.0680999, 0.0680999, 0.21993867], [1517240280000, 0.06808829, 0.06808829, 0.06808829, 0.06808829, 2.34820243], [1517240340000, 0.06808829, 0.06808829, 0.06802229, 0.06802229, 1.43097317], [1517240400000, 0.06802027, 0.06802229, 0.06802027, 0.06802027, 0.7714489], [1517240460000, 0.06808829, 0.06808829, 0.06802229, 0.06802229, 0.10303727], [1517240520000, 0.06802027, 0.06802027, 0.06802027, 0.06802027, 0.28412265], [1517240580000, 0.06802027, 0.06802027, 0.06802027, 0.06802027, 0.12900728], [1517240640000, 0.06802229, 0.06802229, 0.06802027, 0.06802027, 0.15217468], [1517240700000, 0.06802027, 0.06802027, 0.06793057, 0.06793057, 0.69474835], [1517240760000, 0.06792169, 0.06802228, 0.06792169, 0.06802228, 0.07550074], [1517240820000, 0.06802228, 0.06802228, 0.0679217, 0.06802228, 0.12301155], [1517240880000, 0.06802228, 0.06802228, 0.0679217, 0.0679217, 0.51952228], [1517241060000, 0.06792169, 0.068, 0.06792169, 0.068, 0.04113978], [1517241120000, 0.068, 0.068, 0.068, 0.068, 0.05619145], [1517241300000, 0.068, 0.06802226, 0.068, 0.06802226, 1.61759946], [1517241360000, 0.06802226, 0.0681557, 0.068, 0.0681557, 1.96971979], [1517241420000, 0.0681557, 0.0681557, 0.0681557, 0.0681557, 0.29344574], [1517241480000, 0.0681, 0.0681, 0.0681, 0.0681, 0.08166986], [1517241540000, 0.0681, 0.0681557, 0.06792169, 0.06792169, 3.74848012], [1517241600000, 0.06792169, 0.06792169, 0.06792169, 0.06792169, 2.210321], [1517241660000, 0.06815455, 0.0681546, 0.06815448, 0.0681546, 1.18354506], [1517241840000, 0.06815448, 0.06828576, 0.06792169, 0.06792169, 14.60619162], [1517241900000, 0.06823948, 0.06827322, 0.06823948, 0.06827322, 0.17888644], [1517242080000, 0.06792169, 0.06824554, 0.06792169, 0.06824554, 0.63027835], [1517242140000, 0.06824399, 0.06824399, 0.06792169, 0.06824231, 2.07229326], [1517242200000, 0.06825199, 0.068252, 0.06824231, 0.068252, 0.35006201], [1517242260000, 0.06824231, 0.06824231, 0.06824231, 0.06824231, 0.04574666], [1517242320000, 0.06820919, 0.06823574, 0.06820918, 0.06823574, 5.95880259], [1517242380000, 0.06819815, 0.06828576, 0.06819815, 0.06828576, 12.10027061], [1517242500000, 0.06794433, 0.06794433, 0.06792169, 0.06792169, 0.49035108], [1517242560000, 0.06792169, 0.06792169, 0.0678751, 0.0678751, 0.15964123], [1517242620000, 0.06792169, 0.06792169, 0.06792169, 0.06792169, 0.0162432], [1517242680000, 0.06792169, 0.06792169, 0.06792169, 0.06792169, 0.0162432], [1517242740000, 0.0679, 0.06794433, 0.0679, 0.06794433, 1.32469145], [1517242800000, 0.06794433, 0.06826431, 0.06794433, 0.06826289, 0.6485739], [1517242860000, 0.06826289, 0.06826289, 0.0679, 0.0679, 3.76179561], [1517242920000, 0.06792169, 0.06792169, 0.06792169, 0.06792169, 0.15], [1517242980000, 0.06792169, 0.06792169, 0.06792169, 0.06792169, 0.03247436], [1517243040000, 0.06792169, 0.06792169, 0.0679, 0.0679, 0.47311656], [1517243100000, 0.06791169, 0.06791169, 0.06791169, 0.06791169, 0.17972449], [1517243160000, 0.06791169, 0.06828587, 0.06782742, 0.06826911, 14.20096904], [1517243220000, 0.0682246, 0.0682246, 0.0682246, 0.0682246, 0.33870139], [1517243280000, 0.0682246, 0.0682246, 0.0682241, 0.0682241, 0.11771092], [1517243340000, 0.0682243, 0.0682243, 0.0682241, 0.0682241, 0.03875051], [1517243400000, 0.0678001, 0.0682246, 0.0678001, 0.0682246, 0.29093824], [1517243460000, 0.06824642, 0.06824826, 0.06824642, 0.06824826, 3.0], [1517243520000, 0.06823292, 0.06823947, 0.06823292, 0.06823946, 8.68934304], [1517243580000, 0.06823947, 0.06823949, 0.06823947, 0.06823949, 0.08231268], [1517243640000, 0.0682395, 0.06828586, 0.06823946, 0.0682395, 9.09090054], [1517243700000, 0.0678001, 0.06800081, 0.0678001, 0.06800081, 1.56038779], [1517243760000, 0.06800081, 0.06800081, 0.06800081, 0.06800081, 0.13229499], [1517244000000, 0.06810947, 0.06825, 0.06810947, 0.06825, 1.54155324], [1517244120000, 0.06810948, 0.06810948, 0.06810948, 0.06810948, 0.01618717], [1517244180000, 0.06810948, 0.06810948, 0.06810948, 0.06810948, 0.03031278], [1517244240000, 0.06810948, 0.06824999, 0.06810948, 0.06824999, 1.64160723], [1517244300000, 0.06824999, 0.06825, 0.06824999, 0.06825, 0.16267399], [1517244360000, 0.06825, 0.0683, 0.06824999, 0.0683, 4.22179809], [1517244420000, 0.06831153, 0.06833662, 0.0683, 0.0683, 1.5454324], [1517244480000, 0.0683, 0.0683, 0.06824999, 0.06824999, 2.55362586], [1517244540000, 0.06824999, 0.06824999, 0.06824999, 0.06824999, 0.01893493], [1517244600000, 0.06824999, 0.06833662, 0.06824999, 0.06833662, 0.29304028], [1517244840000, 0.06800082, 0.06800082, 0.06800082, 0.06800082, 0.12414649], [1517244900000, 0.06800082, 0.06800082, 0.06800082, 0.06800082, 0.09223221], [1517244960000, 0.0683366, 0.06833662, 0.0683366, 0.06833662, 0.1775252], [1517245020000, 0.06800082, 0.06800082, 0.06800082, 0.06800082, 0.0795089], [1517245200000, 0.06800082, 0.06833662, 0.06800082, 0.06833662, 1.83351615], [1517245320000, 0.06800082, 0.06800082, 0.06800082, 0.06800082, 0.01621304], [1517245380000, 0.06800082, 0.06800082, 0.06800082, 0.06800082, 0.03242608], [1517245440000, 0.06800082, 0.06800082, 0.06800082, 0.06800082, 0.08367291], [1517245500000, 0.06833658, 0.06833658, 0.06833658, 0.06833658, 0.01468734], [1517245560000, 0.06833657, 0.06833657, 0.06833657, 0.06833657, 0.02061915], [1517245620000, 0.06833649, 0.06833649, 0.06833649, 0.06833649, 0.29914966], [1517245680000, 0.0681, 0.06833, 0.0681, 0.06833, 0.21964312], [1517245740000, 0.0681, 0.06832999, 0.06800082, 0.06832999, 1.50668747], [1517245800000, 0.06800082, 0.06832999, 0.06800082, 0.06832999, 0.75540527], [1517245860000, 0.06800082, 0.06800082, 0.06800082, 0.06800082, 0.38118752], [1517245920000, 0.06832998, 0.06832998, 0.0680086, 0.06832996, 3.41727462], [1517245980000, 0.0680086, 0.0680086, 0.0680086, 0.0680086, 1.6714983], [1517246040000, 0.06832989, 0.06832989, 0.06832989, 0.06832989, 0.01476105], [1517246100000, 0.0680086, 0.0680086, 0.0680086, 0.0680086, 0.59314254], [1517246160000, 0.0680086, 0.0680086, 0.0680086, 0.0680086, 0.13590114], [1517246220000, 0.06832988, 0.06832988, 0.06800081, 0.06800081, 2.96595261], [1517246280000, 0.0678001, 0.0678001, 0.0678001, 0.0678001, 0.99973741], [1517246340000, 0.06796544, 0.06796544, 0.06796544, 0.06796544, 0.19112066], [1517246400000, 0.067965, 0.06796544, 0.067965, 0.06796544, 0.22663626], [1517246460000, 0.06796544, 0.06796544, 0.06796544, 0.06796544, 0.86969546], [1517246520000, 0.06799999, 0.06799999, 0.06799999, 0.06799999, 0.00927904], [1517246640000, 0.06799998, 0.068, 0.06799998, 0.068, 0.34621482], [1517246700000, 0.068, 0.0680086, 0.06795402, 0.0680086, 2.5294005], [1517246820000, 0.06800859, 0.0680086, 0.06800859, 0.0680086, 0.14673105], [1517246940000, 0.0680086, 0.0680086, 0.0680086, 0.0680086, 0.29999987], [1517247000000, 0.06830676, 0.0683365, 0.06830676, 0.0683365, 2.87904941], [1517247060000, 0.0683365, 0.0683365, 0.0683365, 0.0683365, 0.3565776], [1517247120000, 0.0683365, 0.0683365, 0.0683365, 0.0683365, 0.02349028], [1517247180000, 0.06833656, 0.06833659, 0.06833656, 0.06833659, 0.97978061], [1517247300000, 0.06836407, 0.06836407, 0.06833659, 0.06833659, 0.33287056], [1517247360000, 0.0680086, 0.06837667, 0.06790138, 0.06837667, 1.51228799], [1517247420000, 0.067984, 0.067984, 0.067984, 0.067984, 0.12871421], [1517247480000, 0.067984, 0.067984, 0.067984, 0.067984, 0.01874082], [1517247600000, 0.06837666, 0.06837666, 0.06837666, 0.06837666, 0.14624864], [1517247840000, 0.06837665, 0.06837665, 0.06837665, 0.06837665, 0.154678], [1517248080000, 0.06837664, 0.06837664, 0.06837664, 0.06837664, 0.02724179], [1517248140000, 0.067984, 0.06837662, 0.06780023, 0.06837662, 11.43197194], [1517248260000, 0.06807592, 0.06807592, 0.06784646, 0.06784646, 9.6294946], [1517248320000, 0.06836239, 0.06836239, 0.06836239, 0.06836239, 0.06605331], [1517248380000, 0.06836071, 0.06837661, 0.06836071, 0.06837661, 4.65179667], [1517248560000, 0.06814046, 0.06837661, 0.06814046, 0.06837661, 0.01533652], [1517248620000, 0.06837661, 0.06837661, 0.06837661, 0.06837661, 0.01737431], [1517248740000, 0.0683756, 0.0683756, 0.06802241, 0.06802241, 1.01473273], [1517248800000, 0.0683756, 0.0683756, 0.0683756, 0.0683756, 0.55582337], [1517248860000, 0.06803193, 0.06803193, 0.06803193, 0.06803193, 0.36313864], [1517249220000, 0.06812865, 0.0683756, 0.06812865, 0.0683756, 1.18321779], [1517249280000, 0.06837557, 0.06837557, 0.06837557, 0.06837557, 0.03224836], [1517249340000, 0.06837557, 0.06837559, 0.06803684, 0.06837559, 2.15290925], [1517249400000, 0.06837558, 0.0683756, 0.06837558, 0.0683756, 0.146251], [1517249760000, 0.06837559, 0.0683756, 0.06837559, 0.06837559, 0.29301763], [1517249820000, 0.06808119, 0.06808119, 0.06808119, 0.06808119, 0.45424864], [1517249940000, 0.06809001, 0.06809001, 0.06809001, 0.06809001, 0.05647909], [1517250000000, 0.06809001, 0.06829, 0.06809001, 0.06829, 0.31068709], [1517250120000, 0.06837557, 0.06837558, 0.06837557, 0.06837558, 0.5], [1517250180000, 0.06829, 0.06829, 0.06829, 0.06829, 0.03228876], [1517250240000, 0.06837558, 0.06837558, 0.06829, 0.06829, 0.04828], [1517250300000, 0.06829, 0.06829, 0.06809, 0.06829, 0.22565989], [1517250360000, 0.06809, 0.06809, 0.06809, 0.06809, 7.00000191], [1517250420000, 0.06809, 0.06809, 0.06803193, 0.06803193, 6.00000191], [1517250480000, 0.06803193, 0.06803193, 0.06801416, 0.06801416, 2.0], [1517250540000, 0.06828999, 0.06828999, 0.06828999, 0.06828999, 0.08538676], [1517250600000, 0.06829, 0.06829, 0.068, 0.06828999, 1.04120336], [1517250660000, 0.06829, 0.06837544, 0.06829, 0.06837544, 0.28960309], [1517250720000, 0.0682901, 0.06837544, 0.0682901, 0.06837544, 0.09515645], [1517250780000, 0.0682901, 0.06837544, 0.0682901, 0.06837544, 0.23129061], [1517250840000, 0.0682901, 0.0682901, 0.0682901, 0.0682901, 0.01614436], [1517250900000, 0.06831543, 0.06831543, 0.06831543, 0.06831543, 0.03228273], [1517250960000, 0.06837543, 0.06837543, 0.06837543, 0.06837543, 0.04208997], [1517251020000, 0.06837544, 0.06837544, 0.06831543, 0.06837544, 0.36860023], [1517251080000, 0.06837544, 0.06837544, 0.06837544, 0.06837544, 0.69956263], [1517251140000, 0.06837557, 0.06837557, 0.06837544, 0.06837544, 0.3363313], [1517251200000, 0.0683754, 0.0683754, 0.0683754, 0.0683754, 0.03516323], [1517251260000, 0.0683754, 0.0683754, 0.0682901, 0.0682901, 0.73472914], [1517251320000, 0.0682901, 0.0683, 0.0682901, 0.0683, 0.71687174], [1517251380000, 0.0683, 0.0683, 0.06808409, 0.06808409, 0.3614751], [1517251440000, 0.06808408, 0.0683, 0.06808408, 0.0683, 2.08007452], [1517251500000, 0.0683, 0.06837558, 0.0683, 0.0683, 0.17853504], [1517251560000, 0.0683, 0.06837558, 0.0683, 0.0683, 0.59612059], [1517251620000, 0.06830002, 0.06830002, 0.06830002, 0.06830002, 0.01614202], [1517251680000, 0.06830002, 0.06837665, 0.06830002, 0.06830002, 2.03928703], [1517251740000, 0.06833779, 0.06837665, 0.06830002, 0.06830002, 0.08392781], [1517251800000, 0.06837664, 0.06837665, 0.06837664, 0.06837665, 0.29249772], [1517251860000, 0.06837665, 0.06837665, 0.06837665, 0.06837665, 1.46584843], [1517251920000, 0.06837665, 0.06837665, 0.06837665, 0.06837665, 0.02917663], [1517252100000, 0.06830002, 0.06830002, 0.06830002, 0.06830002, 1.17015518], [1517252160000, 0.06830002, 0.06830002, 0.068, 0.068, 7.5], [1517252220000, 0.06806891, 0.06837665, 0.0680689, 0.06837665, 2.99246377], [1517252520000, 0.06837663, 0.06837667, 0.06837663, 0.06837667, 0.08075779], [1517252580000, 0.06800927, 0.06800928, 0.06800394, 0.06800394, 1.18475097], [1517252640000, 0.06800393, 0.06800393, 0.06800393, 0.06800393, 0.0324266], [1517252700000, 0.06800393, 0.06800393, 0.06800393, 0.06800393, 0.32245441], [1517252760000, 0.06837667, 0.06837667, 0.06824846, 0.06824846, 0.69801924], [1517252940000, 0.06800586, 0.06824829, 0.06800585, 0.06824829, 15.55438542], [1517253000000, 0.06824829, 0.06824829, 0.06824829, 0.06824829, 0.02818635], [1517253060000, 0.06824827, 0.06824827, 0.06824827, 0.06824827, 0.15299904], [1517253120000, 0.06824827, 0.06824827, 0.068, 0.06824827, 0.33856521], [1517253180000, 0.06824827, 0.06837667, 0.06824827, 0.06837667, 0.20170589], [1517253240000, 0.06837667, 0.06837667, 0.06824827, 0.06824827, 0.10870098], [1517253300000, 0.06837666, 0.06837667, 0.06837666, 0.06837667, 0.3673081], [1517253360000, 0.06837667, 0.06837667, 0.06837667, 0.06837667, 0.05786139], [1517253660000, 0.06837666, 0.06837667, 0.06837666, 0.06837667, 0.01129936], [1517253780000, 0.06837666, 0.06837667, 0.06837666, 0.06837666, 0.111432], [1517253840000, 0.06837667, 0.06849839, 0.06837667, 0.06837667, 0.35175821], [1517253900000, 0.06849839, 0.06849839, 0.06849839, 0.06849839, 0.14598881], [1517253960000, 0.0680261, 0.06849839, 0.0680261, 0.06849839, 0.03939753], [1517254020000, 0.06849839, 0.0686, 0.06849839, 0.0686, 2.04376699], [1517254080000, 0.06858751, 0.06868157, 0.06858751, 0.06858751, 0.14223022], [1517254140000, 0.06868157, 0.06868157, 0.06823609, 0.06868157, 0.16778014], [1517254200000, 0.06806472, 0.06851656, 0.06806472, 0.06851656, 0.09967705], [1517254260000, 0.06850478, 0.06850478, 0.06806523, 0.06806523, 0.10856907], [1517254320000, 0.06806523, 0.06848937, 0.06804285, 0.06804285, 18.87108516], [1517254380000, 0.06804285, 0.06804285, 0.068, 0.068, 8.079228], [1517254440000, 0.068, 0.06801193, 0.06759, 0.06766, 5.92925236], [1517254500000, 0.06792244, 0.06792245, 0.06734495, 0.06739714, 10.22176652], [1517254560000, 0.06778797, 0.06778797, 0.06739715, 0.06739715, 1.42281826], [1517254620000, 0.06757983, 0.06757989, 0.0675798, 0.0675798, 0.11618872], [1517254680000, 0.0675798, 0.0675798, 0.06724189, 0.06724189, 5.46016049], [1517254740000, 0.06724189, 0.06724189, 0.0672184, 0.0672184, 5.80437729], [1517254800000, 0.0672184, 0.06724189, 0.0672184, 0.06724189, 3.99146186], [1517254860000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 0.36915729], [1517254920000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 0.91361509], [1517254980000, 0.06724189, 0.06724189, 0.06709999, 0.06724184, 52.56077683], [1517255040000, 0.06721, 0.06721, 0.06674597, 0.06713895, 26.46638901], [1517255100000, 0.06713892, 0.06713892, 0.06679235, 0.06713884, 0.46080569], [1517255160000, 0.06688047, 0.06713402, 0.06688047, 0.06713402, 0.50372429], [1517255220000, 0.06712542, 0.06712542, 0.06712537, 0.06712537, 0.30291915], [1517255280000, 0.06711999, 0.06712, 0.06711999, 0.06712, 0.20728845], [1517255340000, 0.06712537, 0.06724187, 0.06692219, 0.06692219, 6.72521506], [1517255460000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 1.35507679], [1517255520000, 0.06722002, 0.06722002, 0.06722, 0.06722, 0.7950574], [1517255580000, 0.06722, 0.06722, 0.06722, 0.06722, 1.61531385], [1517255640000, 0.06722, 0.06722, 0.06722, 0.06722, 0.61775232], [1517255700000, 0.06722, 0.06724189, 0.06715, 0.06724189, 6.04675883], [1517255760000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 0.23156731], [1517255820000, 0.06724187, 0.06724187, 0.06724187, 0.06724187, 0.01641853], [1517255880000, 0.06715, 0.06724181, 0.06715, 0.06724181, 1.394035], [1517255940000, 0.06724175, 0.06724175, 0.06708557, 0.06708557, 2.68734235], [1517256000000, 0.06723773, 0.06723773, 0.06723773, 0.06723773, 0.06643744], [1517256060000, 0.06723773, 0.06723773, 0.06708557, 0.06723772, 31.49293192], [1517256120000, 0.06708557, 0.06723772, 0.06708557, 0.06723772, 0.08493015], [1517256180000, 0.06708559, 0.06708559, 0.06708557, 0.06708557, 4.53407498], [1517256240000, 0.06723772, 0.06723772, 0.06723772, 0.06723772, 0.01307242], [1517256300000, 0.06723772, 0.06724188, 0.06723772, 0.06724188, 0.93441114], [1517256360000, 0.06724185, 0.06724185, 0.06724185, 0.06724185, 0.85921008], [1517256420000, 0.06724185, 0.06724189, 0.06724185, 0.06724185, 18.29996244], [1517256480000, 0.06724186, 0.06724189, 0.06724185, 0.06724185, 0.63806952], [1517256540000, 0.06724188, 0.06724188, 0.06724185, 0.06724185, 0.90944301], [1517256600000, 0.06724188, 0.06724189, 0.06724188, 0.06724189, 1.26836572], [1517256660000, 0.06724188, 0.06724189, 0.06724187, 0.06724187, 0.83297744], [1517256720000, 0.06724187, 0.06724189, 0.06724187, 0.06724189, 2.08581094], [1517256780000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 0.28186593], [1517256840000, 0.06724189, 0.06724189, 0.06724185, 0.06724185, 0.50210437], [1517256900000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 0.0327923], [1517256960000, 0.06724189, 0.06724189, 0.06724185, 0.06724189, 0.13696825], [1517257020000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 0.06253566], [1517257080000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 1.0698511], [1517257140000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 0.3527923], [1517257200000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 0.0327923], [1517257260000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 0.0327923], [1517257320000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 0.96621339], [1517257380000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 1.52625738], [1517257440000, 0.06724189, 0.06724189, 0.06724189, 0.06724189, 5.72212559], [1517257500000, 0.06724189, 0.06724189, 0.06724185, 0.06724189, 16.71152776], [1517257560000, 0.06724189, 0.0672419, 0.06724189, 0.0672419, 45.83419801], [1517257620000, 0.0672419, 0.0672419, 0.0672419, 0.0672419, 0.315744], [1517257680000, 0.06757391, 0.06757391, 0.06757391, 0.06757391, 0.7047399], [1517257740000, 0.0672421, 0.0672421, 0.067242, 0.067242, 1.07845896], [1517257800000, 0.06757391, 0.06757391, 0.06757391, 0.06757391, 0.20538299], [1517257860000, 0.06757391, 0.06757391, 0.06757391, 0.06757391, 0.73207937], [1517257920000, 0.06757391, 0.06757391, 0.06757391, 0.06757391, 0.19747787], [1517257980000, 0.0675739, 0.0675739, 0.0675739, 0.0675739, 0.13562577], [1517258040000, 0.06757391, 0.06770837, 0.0675739, 0.0675739, 0.11920413], [1517258100000, 0.0675, 0.0675, 0.0675, 0.0675, 0.04463726], [1517258220000, 0.06734526, 0.06734526, 0.06734526, 0.06734526, 0.02598349], [1517258280000, 0.0675, 0.0675, 0.06734527, 0.06734527, 0.20298365], [1517258340000, 0.06734527, 0.06734527, 0.06734527, 0.06734527, 0.45935918], [1517258400000, 0.0675, 0.0675, 0.0675, 0.0675, 0.31939104], [1517258520000, 0.0675, 0.0675, 0.0675, 0.0675, 0.01823817], [1517258580000, 0.067499, 0.067499, 0.067499, 0.067499, 0.03501796], [1517258640000, 0.067499, 0.067499, 0.067499, 0.067499, 0.0317093], [1517258700000, 0.067499, 0.067499, 0.06734527, 0.06734527, 0.54940333], [1517258760000, 0.067499, 0.067499, 0.067499, 0.067499, 0.04630459], [1517258820000, 0.067499, 0.067499, 0.067499, 0.067499, 0.01], [1517258880000, 0.0675, 0.0675, 0.0675, 0.0675, 0.06872966], [1517258940000, 0.0675, 0.0675, 0.0675, 0.0675, 2.87024433], [1517259000000, 0.0675, 0.0675, 0.0675, 0.0675, 1.94309588], [1517259180000, 0.0675, 0.0675, 0.0675, 0.0675, 0.0326672], [1517259240000, 0.0675, 0.0675, 0.06749999, 0.06749999, 0.37614183], [1517259300000, 0.06749999, 0.06749999, 0.067499, 0.06749999, 0.32151676], [1517259360000, 0.06749999, 0.06749999, 0.06734526, 0.06749999, 1.43948503], [1517259420000, 0.0675, 0.0675, 0.0675, 0.0675, 0.0327419], [1517259480000, 0.06749999, 0.06749999, 0.06734999, 0.06734999, 1.5436486], [1517259540000, 0.06734999, 0.06749999, 0.06734526, 0.06734526, 0.52275923], [1517259600000, 0.06749999, 0.0675, 0.06749999, 0.0675, 1.83425754], [1517259660000, 0.0675, 0.0675, 0.0675, 0.0675, 0.30849209], [1517259720000, 0.0675, 0.0675, 0.0675, 0.0675, 0.04896319], [1517259900000, 0.0675, 0.0675, 0.0675, 0.0675, 0.29527657], [1517259960000, 0.06749999, 0.0675, 0.06749999, 0.0675, 0.05990705], [1517260020000, 0.0675, 0.0675, 0.06749999, 0.0675, 21.20821355], [1517260080000, 0.0675, 0.0675, 0.0674, 0.0674, 0.63925716], [1517260140000, 0.0675, 0.0675, 0.0674, 0.06740001, 7.80823623], [1517260200000, 0.0675, 0.0675, 0.06740001, 0.06740001, 0.16955617], [1517260260000, 0.0675, 0.0675, 0.06740001, 0.06740001, 0.112681], [1517260320000, 0.06740001, 0.06740001, 0.06740001, 0.06740001, 0.12219346], [1517260380000, 0.06749865, 0.06749865, 0.06749865, 0.06749865, 0.02150591], [1517260440000, 0.06749865, 0.06749865, 0.06749865, 0.06749865, 0.02590222], [1517260500000, 0.06749865, 0.0675, 0.06749865, 0.0675, 0.29630244], [1517260620000, 0.0675, 0.0675, 0.0675, 0.0675, 1.70012633], [1517260680000, 0.06745001, 0.06745001, 0.06740001, 0.06740001, 1.34131225], [1517260740000, 0.06740001, 0.06740001, 0.0674, 0.06740001, 0.07209285], [1517260800000, 0.06740001, 0.06745001, 0.06740001, 0.06745001, 0.31203083], [1517260860000, 0.0675, 0.0675, 0.0675, 0.0675, 6.19356142], [1517260980000, 0.0674, 0.0674, 0.0674, 0.0674, 1.50253955], [1517261040000, 0.06749999, 0.06749999, 0.0674, 0.06749999, 0.05619466], [1517261100000, 0.06749999, 0.06749999, 0.06749999, 0.06749999, 0.18086348], [1517261160000, 0.06749999, 0.06749999, 0.06749999, 0.06749999, 0.28338039], [1517261220000, 0.06749999, 0.0675, 0.06749999, 0.0675, 10.11141099], [1517261280000, 0.0675, 0.0675, 0.0675, 0.0675, 0.80125481], [1517261340000, 0.0675, 0.0675, 0.0675, 0.0675, 1.36463453], [1517261400000, 0.0675, 0.0675, 0.0674, 0.06749999, 3.07819467], [1517261460000, 0.067405, 0.067405, 0.0674, 0.067405, 0.91351356], [1517261520000, 0.067405, 0.0675, 0.067405, 0.0675, 1.09626897], [1517261580000, 0.0674, 0.0675, 0.0674, 0.0675, 1.72908602], [1517261640000, 0.0675, 0.0675, 0.0675, 0.0675, 0.01693965], [1517261700000, 0.06740001, 0.06740001, 0.0674, 0.0674, 1.3879937], [1517261760000, 0.06740001, 0.06740001, 0.06740001, 0.06740001, 0.04428524], [1517261820000, 0.06740001, 0.06740001, 0.06740001, 0.06740001, 0.19604029], [1517261880000, 0.06740001, 0.06740001, 0.06740001, 0.06740001, 0.053539], [1517261940000, 0.06740001, 0.06740001, 0.06740001, 0.06740001, 0.01635768], [1517262000000, 0.06740001, 0.0675, 0.06740001, 0.0675, 24.26614947], [1517262060000, 0.06770837, 0.06770837, 0.06770837, 0.06770837, 0.0393089], [1517262180000, 0.06759041, 0.06770839, 0.06759041, 0.06770839, 1.91596198], [1517262240000, 0.06770839, 0.06770839, 0.06770839, 0.06770839, 0.237207], [1517262300000, 0.06770839, 0.06777982, 0.06770839, 0.06777982, 0.94650266], [1517262360000, 0.06777982, 0.06825206, 0.06777982, 0.06825206, 6.68722618], [1517262540000, 0.06759072, 0.06759074, 0.06759072, 0.06759074, 0.52310902], [1517262600000, 0.06759076, 0.0680035, 0.06759076, 0.0680035, 0.30855128], [1517262720000, 0.068, 0.06800001, 0.068, 0.06800001, 1.58646116], [1517262780000, 0.06800001, 0.06800001, 0.06800001, 0.06800001, 0.37242215], [1517262840000, 0.06800001, 0.06800002, 0.06800001, 0.06800001, 0.95082766], [1517262900000, 0.06780001, 0.0682521, 0.06780001, 0.0682521, 27.71604572], [1517262960000, 0.06780001, 0.06780001, 0.06780001, 0.06780001, 0.0784517], [1517263020000, 0.06805176, 0.06805176, 0.06805176, 0.06805176, 8.24848588], [1517263080000, 0.06805176, 0.06837414, 0.06805176, 0.06837414, 22.64137753], [1517263140000, 0.06805176, 0.0680518, 0.06805176, 0.0680518, 0.5006839], [1517263200000, 0.06805176, 0.06822215, 0.06805176, 0.06822215, 3.17162821], [1517263260000, 0.06822215, 0.06837413, 0.06822215, 0.06828072, 4.31981052], [1517263320000, 0.06828072, 0.06833517, 0.06818999, 0.06833517, 2.70893108], [1517263380000, 0.06833517, 0.0684, 0.06833517, 0.0684, 3.53222254], [1517263440000, 0.0684, 0.06842142, 0.0684, 0.06842142, 1.35219269], [1517263500000, 0.0684, 0.06842142, 0.0684, 0.06842142, 0.75990547], [1517263560000, 0.06842142, 0.06842142, 0.0682, 0.0682, 1.26365559], [1517263620000, 0.06842139, 0.0684214, 0.0682, 0.0682, 2.42766743], [1517263680000, 0.0682, 0.06839999, 0.0682, 0.06839999, 0.28169115], [1517263740000, 0.0682, 0.0682, 0.0682, 0.0682, 0.17874908], [1517263800000, 0.06839999, 0.06839999, 0.0682, 0.0682, 0.04064126], [1517263860000, 0.06839997, 0.06839997, 0.06839997, 0.06839997, 0.34623404], [1517263920000, 0.06839997, 0.06839997, 0.06839997, 0.06839997, 0.310444], [1517263980000, 0.06831247, 0.06831249, 0.06831247, 0.06831249, 3.53547175], [1517264040000, 0.06831248, 0.06831248, 0.06831248, 0.06831248, 1.58025068], [1517264100000, 0.0682, 0.0682, 0.06759084, 0.06783525, 6.64727894], [1517264280000, 0.06781202, 0.0682, 0.06781202, 0.0682, 0.46556724], [1517264340000, 0.0682, 0.0682, 0.0682, 0.0682, 0.07165085], [1517264400000, 0.06783525, 0.06783525, 0.06783525, 0.06783525, 0.29655616], [1517264460000, 0.06783525, 0.06783525, 0.0678, 0.0678, 4.03303409], [1517264520000, 0.067726, 0.067726, 0.067726, 0.067726, 0.14826764], [1517264580000, 0.06775524, 0.06775524, 0.06775291, 0.06775291, 2.08803096], [1517264640000, 0.06775524, 0.06816289, 0.06775524, 0.06816289, 0.82133706], [1517264760000, 0.06814258, 0.06814258, 0.0677529, 0.0677529, 1.56820672], [1517264880000, 0.06767541, 0.06775268, 0.06767541, 0.06767542, 5.30960167], [1517264940000, 0.06767542, 0.06767542, 0.06766527, 0.06767542, 14.72912392], [1517265000000, 0.06815559, 0.06815559, 0.06814398, 0.06814398, 0.31090915], [1517265060000, 0.06814398, 0.06814398, 0.06814398, 0.06814398, 0.04772329], [1517265120000, 0.06770272, 0.06812698, 0.06770272, 0.06812698, 0.17581057], [1517265300000, 0.06774477, 0.06812699, 0.06774477, 0.06812699, 0.98847531], [1517265420000, 0.06812699, 0.0682, 0.06812699, 0.0682, 2.00700299], [1517265480000, 0.06812699, 0.06812699, 0.0678484, 0.0678484, 3.59918301], [1517265540000, 0.06784265, 0.06785949, 0.06784265, 0.06784265, 5.9086911], [1517265600000, 0.06785949, 0.0682, 0.06785949, 0.0682, 3.39396861], [1517265660000, 0.0682, 0.06834972, 0.0682, 0.0683471, 2.05012598], [1517265720000, 0.0682, 0.06835512, 0.06789203, 0.06789204, 1.46400333], [1517265780000, 0.06789204, 0.06789204, 0.06789204, 0.06789204, 0.16731392], [1517265840000, 0.06828805, 0.06828805, 0.06828805, 0.06828805, 0.84570347], [1517265900000, 0.06833996, 0.06835512, 0.06833996, 0.06835512, 0.97011382], [1517265960000, 0.06835512, 0.06835512, 0.06833998, 0.06833998, 0.5852764], [1517266020000, 0.06833998, 0.06833998, 0.06833998, 0.06833998, 0.05299261], [1517266080000, 0.06833998, 0.06833998, 0.06799336, 0.06799336, 0.19187705], [1517266140000, 0.06833998, 0.06833998, 0.06800185, 0.06800185, 0.10643251], [1517266200000, 0.06800185, 0.06835512, 0.06800185, 0.06835512, 1.3837823], [1517266260000, 0.06835512, 0.06835512, 0.06835512, 0.06835512, 0.03103234], [1517266320000, 0.06835512, 0.06835512, 0.06835512, 0.06835512, 0.49152472], [1517266380000, 0.06834653, 0.06834653, 0.06834653, 0.06834653, 0.02004885], [1517266500000, 0.06834909, 0.0684, 0.06834909, 0.06839649, 0.7315385], [1517266560000, 0.06801, 0.06801, 0.06800852, 0.06800852, 2.4490962], [1517266620000, 0.06800517, 0.06800517, 0.06800517, 0.06800517, 0.24778917], [1517266680000, 0.06803592, 0.06839648, 0.06803592, 0.06839648, 0.25206541], [1517266740000, 0.06839391, 0.06839391, 0.06802419, 0.06802419, 0.55950443], [1517266800000, 0.06816276, 0.06839389, 0.06802419, 0.06839389, 0.37723333], [1517266860000, 0.06839389, 0.06839389, 0.0682, 0.0682, 0.56186226], [1517266920000, 0.0682, 0.0682, 0.0682, 0.0682, 0.01616569], [1517266980000, 0.06839383, 0.06839385, 0.06820001, 0.06839383, 0.2371369], [1517267040000, 0.06820001, 0.06820001, 0.06795934, 0.06795934, 1.65082108], [1517267100000, 0.06839143, 0.06839143, 0.06793755, 0.06793755, 0.78137311], [1517267160000, 0.06839178, 0.06839178, 0.06799089, 0.06799089, 5.91513978], [1517267220000, 0.06802908, 0.06802908, 0.06802908, 0.06802908, 0.22632365], [1517267340000, 0.06839644, 0.06839644, 0.06839644, 0.06839644, 0.03911374], [1517267400000, 0.06802555, 0.06839643, 0.06801048, 0.06839643, 2.45180046], [1517267460000, 0.06839642, 0.06839642, 0.06839642, 0.06839642, 0.04538447], [1517267640000, 0.06835376, 0.06835376, 0.06806095, 0.06806095, 0.85640904], [1517267700000, 0.06815, 0.06837591, 0.06806095, 0.06837591, 1.19516012], [1517267760000, 0.06837591, 0.06837591, 0.06805774, 0.06805774, 3.53029543], [1517267820000, 0.06806094, 0.06806094, 0.06806094, 0.06806094, 0.02215451], [1517267880000, 0.06806093, 0.06806093, 0.06806093, 0.06806093, 0.00757967], [1517267940000, 0.06837593, 0.06837593, 0.06799469, 0.06799469, 0.72647193], [1517268000000, 0.06835073, 0.06835073, 0.06835073, 0.06835073, 0.29255464], [1517268060000, 0.06795253, 0.06835071, 0.06795253, 0.06835071, 0.0587183], [1517268120000, 0.06835071, 0.06835071, 0.06806225, 0.06806225, 1.05933748], [1517268180000, 0.06798641, 0.06798641, 0.06798641, 0.06798641, 0.14646679], [1517268300000, 0.06835071, 0.06835071, 0.06835071, 0.06835071, 0.14630428], [1517268360000, 0.06835071, 0.06835071, 0.06835071, 0.06835071, 0.02439886], [1517268420000, 0.06835071, 0.06835071, 0.06835071, 0.06835071, 0.30536412], [1517268480000, 0.06835069, 0.0683507, 0.06835069, 0.0683507, 0.07033569], [1517268600000, 0.06795296, 0.06835071, 0.06795296, 0.06835071, 1.88759757], [1517268780000, 0.06835071, 0.06835071, 0.06835071, 0.06835071, 0.07296925], [1517268960000, 0.06832127, 0.06832127, 0.06832127, 0.06832127, 0.50160317], [1517269020000, 0.0681, 0.06832126, 0.0681, 0.06832126, 0.50573537], [1517269140000, 0.0681, 0.0681, 0.0681, 0.0681, 0.02974336], [1517269260000, 0.0681, 0.06820784, 0.0681, 0.06820784, 1.19999914], [1517269320000, 0.06820784, 0.06820784, 0.06820784, 0.06820784, 1.02271161], [1517269380000, 0.06820784, 0.06823207, 0.0678537, 0.0678537, 9.19757822], [1517269440000, 0.0678484, 0.0678484, 0.0678484, 0.0678484, 0.20215], [1517269500000, 0.06825266, 0.06825266, 0.06786592, 0.06786592, 1.0607024], [1517269560000, 0.06825265, 0.06825265, 0.0682, 0.0682, 0.08427649], [1517269620000, 0.0682, 0.0682, 0.06799999, 0.068, 0.71781299], [1517269680000, 0.068, 0.068, 0.06785674, 0.06799999, 2.78658927], [1517269740000, 0.06799999, 0.068, 0.06799999, 0.068, 28.985], [1517269800000, 0.06799999, 0.068, 0.06799999, 0.068, 0.58538728], [1517269860000, 0.06799999, 0.068, 0.06799999, 0.068, 2.09108588], [1517269920000, 0.068, 0.068, 0.068, 0.068, 6.40039929], [1517269980000, 0.06832403, 0.06832403, 0.06832403, 0.06832403, 0.03674124], [1517270100000, 0.06832403, 0.06832404, 0.06832403, 0.06832404, 0.14636145], [1517270160000, 0.06832403, 0.06832403, 0.06796375, 0.06796375, 1.15650701], [1517270220000, 0.06788194, 0.06839649, 0.06788193, 0.06839649, 7.26646144], [1517270280000, 0.06839649, 0.06839649, 0.06795184, 0.06795184, 0.78588441], [1517270340000, 0.06835768, 0.06837669, 0.06835768, 0.06837669, 1.31295564], [1517270400000, 0.06835615, 0.06835615, 0.06835615, 0.06835615, 0.29258544], [1517270460000, 0.06835615, 0.06835615, 0.0679911, 0.0679911, 0.7274863], [1517270520000, 0.06796431, 0.06796431, 0.06795184, 0.06795184, 2.02104471], [1517270580000, 0.06795184, 0.06795184, 0.06795183, 0.06795184, 1.09359695], [1517270640000, 0.06798648, 0.06798648, 0.06798648, 0.06798648, 0.18758353], [1517270700000, 0.0683969, 0.0684, 0.0683969, 0.0684, 0.2924109], [1517270760000, 0.0684, 0.0684, 0.0684, 0.0684, 0.00877193], [1517270880000, 0.068, 0.068, 0.06796492, 0.06796492, 3.03245143], [1517270940000, 0.06800081, 0.06825732, 0.06797866, 0.06825732, 0.42183185], [1517271000000, 0.0684, 0.0684, 0.06825732, 0.06825732, 0.41915158], [1517271060000, 0.06825732, 0.06848632, 0.06825732, 0.06848632, 0.20590665], [1517271120000, 0.06846138, 0.06846138, 0.06846138, 0.06846138, 0.45176097], [1517271180000, 0.06806075, 0.06846143, 0.06806074, 0.06807041, 12.75372659], [1517271240000, 0.06806804, 0.06806804, 0.0680065, 0.0680065, 6.00000191], [1517271300000, 0.06846136, 0.06846136, 0.06846136, 0.06846136, 0.03193634], [1517271420000, 0.06844633, 0.06844633, 0.06844633, 0.06844633, 0.29140525], [1517271540000, 0.06805053, 0.06805053, 0.06805053, 0.06805053, 0.05], [1517271600000, 0.06842846, 0.06842846, 0.06787003, 0.06787003, 2.61457148], [1517271660000, 0.06801497, 0.06842846, 0.06801497, 0.06842846, 3.61190675], [1517271720000, 0.06842846, 0.06842846, 0.06842846, 0.06842846, 1.52], [1517271780000, 0.06842846, 0.06854692, 0.06823614, 0.06823614, 10.19293932], [1517271840000, 0.068167, 0.06854692, 0.068167, 0.06823519, 1.49462353], [1517271900000, 0.06823898, 0.06823898, 0.06823898, 0.06823898, 0.02331282], [1517272020000, 0.06826977, 0.06826977, 0.06825945, 0.06826977, 22.26090453], [1517272080000, 0.06826977, 0.06854692, 0.06826977, 0.06854692, 0.08704162], [1517272200000, 0.0682544, 0.06884468, 0.0682544, 0.06879287, 19.89147846], [1517272260000, 0.06879287, 0.06879664, 0.06854692, 0.06854692, 1.20009388], [1517272320000, 0.06854692, 0.06879664, 0.06844168, 0.06852335, 1.67916988], [1517272380000, 0.06853356, 0.06853356, 0.06853356, 0.06853356, 0.03717928], [1517272500000, 0.06879664, 0.06890467, 0.06879664, 0.06879664, 1.65028257], [1517272560000, 0.06879664, 0.06879664, 0.06879664, 0.06879664, 0.33184102], [1517272620000, 0.06854937, 0.06854937, 0.0684101, 0.06846505, 1.7290778], [1517272680000, 0.06836197, 0.06844529, 0.06836197, 0.06836197, 0.53471298], [1517272740000, 0.06844528, 0.06844529, 0.06844528, 0.06844529, 0.29344487], [1517272800000, 0.06844529, 0.06865, 0.06844529, 0.06865, 0.90314469], [1517272860000, 0.06865, 0.06879663, 0.06865, 0.06879663, 0.19410042], [1517272920000, 0.06879664, 0.06890468, 0.06844535, 0.06844535, 0.60109794], [1517273040000, 0.06890467, 0.06890467, 0.06890467, 0.06890467, 0.52147573], [1517273100000, 0.06890467, 0.06890468, 0.06862268, 0.06862347, 6.85030957], [1517273160000, 0.06862724, 0.06890468, 0.06862164, 0.06862184, 0.10988255], [1517273220000, 0.06862185, 0.06890468, 0.06862185, 0.06890468, 0.16139436], [1517273280000, 0.06890468, 0.06893433, 0.06864726, 0.06864726, 0.62427808], [1517273400000, 0.06862184, 0.069, 0.06862184, 0.06893433, 2.23441673], [1517273460000, 0.06893433, 0.069, 0.06893433, 0.069, 3.77095403], [1517273520000, 0.069, 0.069, 0.069, 0.069, 4.19155595], [1517273580000, 0.06901832, 0.06907216, 0.06893433, 0.06893433, 3.11798457], [1517273640000, 0.06893433, 0.069, 0.06893433, 0.069, 0.83776967], [1517273700000, 0.06907215, 0.06928678, 0.069, 0.06928678, 7.60942168], [1517273760000, 0.069, 0.06936035, 0.069, 0.06936035, 7.05267637], [1517273820000, 0.06903273, 0.06907131, 0.06884373, 0.0689942, 11.11851454], [1517273880000, 0.06900335, 0.06937997, 0.06900335, 0.06937997, 3.05159507], [1517273940000, 0.06902762, 0.06907961, 0.06902762, 0.06907961, 0.32388664], [1517274000000, 0.06937996, 0.06937996, 0.06903002, 0.06937996, 1.64502532], [1517274060000, 0.06937996, 0.06939, 0.06896003, 0.06896003, 1.16239174], [1517274120000, 0.06939, 0.0696, 0.06905986, 0.0696, 23.27453679], [1517274180000, 0.0696, 0.0696, 0.06924032, 0.06924111, 0.60055885], [1517274240000, 0.06916607, 0.06964999, 0.06916607, 0.06964999, 5.62423601], [1517274300000, 0.06964999, 0.06965, 0.06898, 0.06965, 5.45863202], [1517274360000, 0.06965, 0.06965, 0.0692344, 0.0692344, 0.2551447], [1517274420000, 0.06923441, 0.06965, 0.06923441, 0.06930498, 9.04974636], [1517274480000, 0.06965, 0.06965, 0.06923446, 0.06924278, 5.50300752], [1517274540000, 0.06923441, 0.06927305, 0.0692344, 0.0692503, 5.14562585], [1517274600000, 0.069287, 0.06966966, 0.06923441, 0.06966966, 0.92797634], [1517274660000, 0.06966965, 0.06973996, 0.0692344, 0.0696696, 5.53568634], [1517274720000, 0.06973996, 0.0697483, 0.06938355, 0.06938355, 4.93708153], [1517274780000, 0.06932125, 0.06966959, 0.06920728, 0.0692284, 11.94625184], [1517274840000, 0.06922886, 0.0697483, 0.06905602, 0.06921052, 34.56478987], [1517274900000, 0.06922482, 0.06974829, 0.06922482, 0.06974829, 1.20685273], [1517274960000, 0.06974829, 0.06974829, 0.06921431, 0.06973528, 5.64186312], [1517275020000, 0.06973528, 0.06973528, 0.0693388, 0.06933882, 4.5701036], [1517275080000, 0.06934578, 0.0696861, 0.06911001, 0.0696861, 20.3344365], [1517275140000, 0.0692545, 0.06969284, 0.068959, 0.06913801, 13.32536325], [1517275200000, 0.069234, 0.0697471, 0.069234, 0.06971637, 1.54746346], [1517275260000, 0.06971637, 0.06986449, 0.06909861, 0.06968051, 64.80628702], [1517275320000, 0.069111, 0.06966179, 0.069111, 0.06964774, 8.48264138], [1517275380000, 0.06963933, 0.06963933, 0.06894603, 0.06913002, 10.61175738], [1517275440000, 0.069177, 0.06917701, 0.06915774, 0.06915774, 5.50412878], [1517275500000, 0.06930199, 0.06967324, 0.0691761, 0.06959349, 6.5846606], [1517275560000, 0.06959349, 0.06982501, 0.06917828, 0.06917828, 3.3616579], [1517275620000, 0.06959347, 0.06959348, 0.0691783, 0.0691783, 1.45073836], [1517275680000, 0.06921411, 0.06958, 0.0691783, 0.06958, 0.37970474], [1517275740000, 0.06958, 0.06958, 0.06958, 0.06958, 0.13788409], [1517275800000, 0.06958, 0.06982611, 0.06958, 0.06982611, 1.478496], [1517275860000, 0.06977168, 0.06977168, 0.06973277, 0.06973277, 0.06150171], [1517275920000, 0.06973735, 0.06973735, 0.0693, 0.069302, 1.51181531], [1517275980000, 0.069349, 0.069349, 0.0693, 0.0693335, 3.28224159], [1517276040000, 0.0693335, 0.0693335, 0.0693335, 0.0693335, 0.00019572], [1517276100000, 0.06973734, 0.06973735, 0.06973734, 0.06973735, 0.43679035], [1517276160000, 0.06973735, 0.06973735, 0.06973735, 0.06973735, 0.76009926], [1517276220000, 0.0693, 0.06940875, 0.0693, 0.0694, 0.36633176], [1517276280000, 0.0694, 0.0694, 0.06932902, 0.06932902, 0.31476015], [1517276340000, 0.06932902, 0.06932902, 0.06932902, 0.06932902, 0.11048547], [1517276400000, 0.06938657, 0.06973735, 0.06938657, 0.06973735, 6.34336266], [1517276460000, 0.06973735, 0.06973735, 0.06937396, 0.06937396, 3.68773517], [1517276520000, 0.06937396, 0.06938286, 0.06937396, 0.06938286, 1.24748814], [1517276580000, 0.0697373, 0.0697373, 0.06971863, 0.06971863, 0.07805869], [1517276640000, 0.06971009, 0.06971009, 0.0693, 0.06965235, 3.78710091], [1517276700000, 0.06965217, 0.06965217, 0.06963915, 0.06963915, 0.79046802], [1517276760000, 0.06962659, 0.06967825, 0.06962659, 0.06967825, 0.44456842], [1517276880000, 0.0697373, 0.06982, 0.06967825, 0.06967825, 2.22914289], [1517276940000, 0.0696782, 0.06982, 0.06942253, 0.06982, 0.91987514], [1517277000000, 0.06982, 0.06986449, 0.0696782, 0.06982001, 4.374989], [1517277060000, 0.06982001, 0.06982001, 0.0697491, 0.0697491, 0.25625642], [1517277120000, 0.06982001, 0.06982001, 0.06982001, 0.06982001, 0.76531191], [1517277180000, 0.06982001, 0.06986449, 0.06982001, 0.06986449, 0.53504181], [1517277240000, 0.06982001, 0.06986449, 0.06965, 0.06965, 0.7036149], [1517277300000, 0.06949139, 0.0699, 0.069465, 0.06989999, 11.53331637], [1517277360000, 0.069465, 0.06984399, 0.069465, 0.06983782, 3.57922218], [1517277420000, 0.06946499, 0.06946499, 0.06943846, 0.06944833, 7.99387091], [1517277480000, 0.06944692, 0.06946499, 0.06944692, 0.06944699, 1.67630031], [1517277540000, 0.06979999, 0.06979999, 0.06944691, 0.06944691, 0.94743034], [1517277600000, 0.06946081, 0.06979, 0.06944691, 0.06979, 0.81147049], [1517277660000, 0.06944691, 0.06978, 0.06942002, 0.06977995, 3.21757806], [1517277720000, 0.06942001, 0.06976999, 0.06942, 0.06942, 0.61784223], [1517277780000, 0.06942, 0.06942, 0.06942, 0.06942, 1.68600776], [1517277840000, 0.06942, 0.06942, 0.06942, 0.06942, 0.25040286], [1517277900000, 0.06942, 0.06971, 0.06942, 0.06971, 0.47182113], [1517277960000, 0.0697, 0.0697, 0.0697, 0.0697, 0.02066134], [1517278020000, 0.06942, 0.0696, 0.06942, 0.0696, 0.0982322], [1517278080000, 0.06959999, 0.06959999, 0.06942, 0.06949999, 3.52392686], [1517278140000, 0.06942, 0.06970999, 0.06912, 0.06924251, 5.59526267], [1517278200000, 0.06924251, 0.0695, 0.06912008, 0.0695, 1.77681931], [1517278260000, 0.06924, 0.06949999, 0.06924, 0.06924, 2.11710446], [1517278320000, 0.06924, 0.06924, 0.06912011, 0.06912011, 16.4453], [1517278380000, 0.06912012, 0.06912012, 0.06912012, 0.06912012, 0.04033641], [1517278440000, 0.06956499, 0.06956499, 0.06912012, 0.06912012, 0.4502832], [1517278500000, 0.06954999, 0.06955, 0.06954999, 0.06955, 0.02072896], [1517278680000, 0.06912016, 0.06912016, 0.06912016, 0.06912016, 1.50315556], [1517278740000, 0.06912016, 0.06948998, 0.06912016, 0.06948998, 1.57205213], [1517278800000, 0.06948998, 0.06948998, 0.06948998, 0.06948998, 0.14390559], [1517278920000, 0.06948998, 0.06948998, 0.06948998, 0.06948998, 0.07664078], [1517278980000, 0.06916801, 0.069323, 0.06916701, 0.06916701, 0.37180726], [1517279040000, 0.06916701, 0.06932299, 0.06912017, 0.06912017, 0.47231163], [1517279100000, 0.06912017, 0.06920001, 0.06912017, 0.06912018, 0.68611252], [1517279160000, 0.06912018, 0.0692, 0.06912018, 0.0692, 0.54177209], [1517279220000, 0.0692, 0.0692, 0.06912018, 0.0692, 0.03922359], [1517279280000, 0.0692, 0.06920001, 0.06919999, 0.0692, 2.89548743], [1517279340000, 0.0692, 0.0695, 0.0692, 0.0695, 35.18606786], [1517279400000, 0.0695, 0.0695, 0.0695, 0.0695, 0.01840494], [1517279460000, 0.06949999, 0.06949999, 0.06949999, 0.06949999, 2.01430423], [1517279520000, 0.06949999, 0.06949999, 0.06912018, 0.06912018, 2.32527885], [1517279580000, 0.06933003, 0.06949998, 0.06933003, 0.06949998, 0.0548133], [1517279640000, 0.06912018, 0.06912018, 0.06912018, 0.06912018, 0.84145278], [1517279700000, 0.06912018, 0.06912018, 0.06912018, 0.06912018, 0.13745137], [1517279760000, 0.0694999, 0.0694999, 0.0694999, 0.0694999, 0.02319472], [1517279820000, 0.06912335, 0.06912335, 0.06912315, 0.06912316, 10.18060131], [1517279880000, 0.0694999, 0.0694999, 0.0694999, 0.0694999, 0.16539194], [1517280060000, 0.06912318, 0.06912318, 0.06912317, 0.06912317, 0.25435032], [1517280180000, 0.06912317, 0.06912317, 0.06912317, 0.06912317, 0.16027911], [1517280240000, 0.06912319, 0.06912319, 0.06912317, 0.06912317, 0.34797155], [1517280300000, 0.0694, 0.0694, 0.0694, 0.0694, 0.14409221], [1517280360000, 0.06912017, 0.0694, 0.06912017, 0.06912017, 0.05511349], [1517280420000, 0.0694, 0.0694, 0.0694, 0.0694, 1.961229], [1517280540000, 0.0694, 0.0694, 0.0694, 0.0694, 0.02078856], [1517280660000, 0.0694, 0.0694, 0.06936502, 0.06936502, 0.04191334], [1517280840000, 0.0694, 0.06949999, 0.06912019, 0.06949999, 9.8285512], [1517280900000, 0.06949998, 0.06956498, 0.06912017, 0.06956498, 26.05617138], [1517280960000, 0.06931805, 0.06931805, 0.06921263, 0.06921263, 1.46763552], [1517281020000, 0.0695, 0.0695, 0.0695, 0.0695, 0.06888905], [1517281080000, 0.0695, 0.0695, 0.0695, 0.0695, 0.03181718], [1517281140000, 0.0695, 0.0695, 0.0695, 0.0695, 2.39608552], [1517281200000, 0.0695, 0.0695, 0.0695, 0.0695, 0.51904647], [1517281260000, 0.0695, 0.0695, 0.0695, 0.0695, 0.55105646], [1517281320000, 0.0695, 0.06974997, 0.06949999, 0.06974997, 6.10012307], [1517281380000, 0.0695, 0.0695, 0.0695, 0.0695, 0.01588622], [1517281440000, 0.0695, 0.0695, 0.0695, 0.0695, 0.07246829], [1517281500000, 0.0695, 0.06983997, 0.0695, 0.06974997, 0.35257101], [1517281560000, 0.06983998, 0.06987998, 0.06974997, 0.06974997, 0.04660775], [1517281620000, 0.06987998, 0.06988006, 0.06974997, 0.06987984, 0.40969714], [1517281680000, 0.06987983, 0.06987984, 0.06974997, 0.06974997, 0.20155602], [1517281740000, 0.06974997, 0.06974997, 0.06974997, 0.06974997, 2.34664382], [1517281860000, 0.06974915, 0.06974915, 0.06974915, 0.06974915, 0.19985115], [1517281920000, 0.06941591, 0.06941591, 0.06914604, 0.06914604, 0.5460026], [1517281980000, 0.06918601, 0.06972524, 0.06918601, 0.06972524, 1.43656383], [1517282040000, 0.06974993, 0.06982478, 0.06974993, 0.06974997, 5.672663], [1517282100000, 0.06974992, 0.06978399, 0.06974992, 0.06974997, 2.95231346], [1517282160000, 0.06974997, 0.06985672, 0.06968029, 0.06974997, 11.39976103], [1517282220000, 0.0697499, 0.06988006, 0.0697499, 0.06988006, 5.42670553], [1517282280000, 0.06988005, 0.0699, 0.06947956, 0.06989, 5.09821002], [1517282340000, 0.06989, 0.06989, 0.06989, 0.06989, 1.52], [1517282400000, 0.06986217, 0.06989, 0.06986217, 0.06989, 0.72151856], [1517282460000, 0.06988999, 0.06988999, 0.06988999, 0.06988999, 3.08820066], [1517282520000, 0.06988998, 0.06988999, 0.06988998, 0.06988999, 1.43722744], [1517282640000, 0.06967887, 0.06987818, 0.06967887, 0.06987722, 0.09286009], [1517282700000, 0.06987722, 0.06987818, 0.06987722, 0.06987818, 0.28621638], [1517282760000, 0.06947956, 0.06947956, 0.06947956, 0.06947956, 0.4], [1517282820000, 0.06947956, 0.06947956, 0.06947956, 0.06947956, 0.05259933], [1517282880000, 0.06947956, 0.06947956, 0.06947956, 0.06947956, 0.94740066], [1517282940000, 0.0697, 0.0697, 0.0697, 0.0697, 0.0727517], [1517283000000, 0.0697, 0.0697, 0.06947956, 0.0697, 0.43041606], [1517283060000, 0.06947956, 0.06947956, 0.06947956, 0.06947956, 1.24796413], [1517283120000, 0.06947956, 0.06947956, 0.06912016, 0.06912016, 7.05271113], [1517283180000, 0.0694, 0.0694, 0.0694, 0.0694, 0.17228083], [1517283240000, 0.069143, 0.06917706, 0.06912001, 0.06917706, 1.88488164], [1517283300000, 0.06939993, 0.06939993, 0.06939993, 0.06939993, 0.28818484], [1517283360000, 0.06939993, 0.06939993, 0.06939993, 0.06939993, 0.7504426], [1517283480000, 0.06916056, 0.0697, 0.06916056, 0.0692362, 2.95587244], [1517283540000, 0.0692362, 0.06964106, 0.0692001, 0.0692001, 1.59818136], [1517283600000, 0.06964954, 0.06964955, 0.06964953, 0.06964953, 0.25335386], [1517283660000, 0.06912952, 0.06963999, 0.06912952, 0.06963999, 1.03964509], [1517283720000, 0.06920724, 0.06963999, 0.06920724, 0.06963999, 0.07237367], [1517283780000, 0.06913012, 0.06963999, 0.06913012, 0.06963997, 0.08249648], [1517283840000, 0.06913043, 0.06917232, 0.06913043, 0.06917232, 10.67956885], [1517283900000, 0.06917232, 0.06963919, 0.06913045, 0.06963919, 0.21483985], [1517283960000, 0.06913075, 0.06963917, 0.06913075, 0.06963917, 0.24764728], [1517284020000, 0.06913098, 0.06913113, 0.06913098, 0.06913113, 0.10953071], [1517284080000, 0.06913125, 0.06963917, 0.06913125, 0.06963917, 0.07496627], [1517284140000, 0.0691315, 0.06964, 0.0691315, 0.06964, 0.37738115], [1517284200000, 0.06913189, 0.06964, 0.06913189, 0.06964, 0.15461067], [1517284260000, 0.06913206, 0.06964, 0.06913206, 0.06964, 0.69865636], [1517284320000, 0.06964, 0.06964, 0.06913264, 0.06913264, 39.49331347], [1517284560000, 0.06963996, 0.06963996, 0.06963996, 0.06963996, 0.469475], [1517284620000, 0.06961393, 0.06961393, 0.06961393, 0.06961393, 0.82379561], [1517284680000, 0.06961886, 0.06961886, 0.06961622, 0.06961622, 0.2037896], [1517284800000, 0.069613, 0.06961958, 0.069613, 0.06961958, 0.46386545], [1517284860000, 0.06961957, 0.06961957, 0.06920001, 0.06920001, 0.1627663], [1517285100000, 0.06960875, 0.06960875, 0.0692, 0.0692, 0.718301], [1517285220000, 0.06960616, 0.06960616, 0.0692, 0.0692, 4.33086616], [1517285280000, 0.0692, 0.0692, 0.0692, 0.0692, 7.6854403], [1517285340000, 0.0692, 0.0692, 0.0692, 0.0692, 2.84451962], [1517285400000, 0.0692, 0.0692, 0.06913055, 0.06919999, 5.54853635], [1517285460000, 0.06913055, 0.0692, 0.06913055, 0.06913055, 0.89674505], [1517285520000, 0.06919999, 0.0692, 0.06919999, 0.0692, 0.51161418], [1517285580000, 0.06919999, 0.0692, 0.06903126, 0.06912, 3.11458109], [1517285640000, 0.06912, 0.06912, 0.06911999, 0.06912, 0.44167445], [1517285700000, 0.06912, 0.06912, 0.06906496, 0.06912, 20.04672847], [1517285760000, 0.06912, 0.06912, 0.06912, 0.06912, 0.55621939], [1517285820000, 0.06912, 0.06912, 0.06905716, 0.06912, 1.27756876], [1517285880000, 0.06912, 0.06912, 0.0690735, 0.0690735, 2.31599872], [1517285940000, 0.0690635, 0.0690735, 0.0690635, 0.0690735, 0.44759822], [1517286000000, 0.0690735, 0.06961953, 0.0690735, 0.06957712, 6.96350298], [1517286060000, 0.06957349, 0.06957349, 0.06957347, 0.06957347, 0.76023524], [1517286240000, 0.06914074, 0.06915089, 0.06914074, 0.06915089, 0.51529338], [1517286300000, 0.06912308, 0.06958, 0.06912307, 0.06912308, 0.544786], [1517286420000, 0.06916366, 0.06916366, 0.06916366, 0.06916366, 0.15285175], [1517286480000, 0.06957997, 0.06960373, 0.06957997, 0.06960373, 0.01510196], [1517286540000, 0.06959658, 0.06959658, 0.06959657, 0.06959657, 0.12508357], [1517286600000, 0.06959657, 0.06959657, 0.06951175, 0.06951175, 0.85641245], [1517286720000, 0.06951174, 0.06951174, 0.06951174, 0.06951174, 15.85228915], [1517286780000, 0.06951174, 0.06951174, 0.06951174, 0.06951174, 2.75165974], [1517286840000, 0.06951174, 0.06951174, 0.06951174, 0.06951174, 0.05443396], [1517286900000, 0.06951174, 0.06959402, 0.06951174, 0.06951174, 0.20957934], [1517286960000, 0.06951174, 0.06951174, 0.06951174, 0.06951174, 0.20480577], [1517287020000, 0.06951174, 0.06959402, 0.06951174, 0.06959402, 1.76180607], [1517287080000, 0.06951175, 0.06951175, 0.06951174, 0.06951174, 21.7420312], [1517287140000, 0.06951174, 0.06951174, 0.06951174, 0.06951174, 0.41586063], [1517287200000, 0.06951174, 0.06951174, 0.06951174, 0.06951174, 0.07446223], [1517287260000, 0.06951174, 0.06951174, 0.06951174, 0.06951174, 0.1], [1517287320000, 0.06951174, 0.06951174, 0.06936208, 0.06936208, 0.89489495], [1517287380000, 0.06936207, 0.06955353, 0.06936207, 0.06955353, 1.71298388], [1517287500000, 0.0695884, 0.0695884, 0.0695884, 0.0695884, 0.06098094], [1517287560000, 0.06915145, 0.06955267, 0.06915145, 0.06955267, 2.09661489], [1517287680000, 0.06955267, 0.06955267, 0.06955266, 0.06955266, 1.38841928], [1517287740000, 0.06955266, 0.0695884, 0.06955266, 0.06955266, 7.31834076], [1517287800000, 0.06955266, 0.06961952, 0.06955266, 0.06955266, 10.79705093], [1517287860000, 0.06955266, 0.06955266, 0.06955266, 0.06955266, 7.79917637]]
\ No newline at end of file
diff --git a/tests/testdata/ETC_BTC-1m.json b/tests/testdata/ETC_BTC-1m.json
deleted file mode 100644
index 29bee485f..000000000
--- a/tests/testdata/ETC_BTC-1m.json
+++ /dev/null
@@ -1 +0,0 @@
-[[1516423980000, 0.002681, 0.00269238, 0.00267201, 0.00267201, 1470.76254394], [1516424040000, 0.00267201, 0.00267201, 0.002659, 0.0026644, 1015.49815576], [1516424100000, 0.0026644, 0.00268001, 0.00265643, 0.00267985, 2310.69162241], [1516424160000, 0.00267985, 0.00268002, 0.0026644, 0.0026785, 4054.91361923], [1516424220000, 0.00267979, 0.00268002, 0.0026501, 0.0026798, 6534.9131247], [1516424280000, 0.00265641, 0.00267971, 0.00265312, 0.00266133, 557.03145459], [1516424340000, 0.00266133, 0.002675, 0.0026501, 0.00267496, 1287.83020022], [1516424400000, 0.00267487, 0.00267496, 0.00265315, 0.00265357, 2320.80128441], [1516424460000, 0.00266133, 0.00267496, 0.00265357, 0.00266639, 515.00001772], [1516424520000, 0.0026664, 0.00267496, 0.0026501, 0.00267496, 2385.96879589], [1516424580000, 0.00267496, 0.00268, 0.0026501, 0.0026593, 3711.06726395], [1516424640000, 0.0026593, 0.00267598, 0.0026501, 0.00265025, 2710.00382166], [1516424700000, 0.00265025, 0.00268002, 0.00265025, 0.0026679, 1989.4552352], [1516424760000, 0.0026679, 0.00267, 0.00265131, 0.0026679, 2457.45330326], [1516424820000, 0.00266791, 0.0026752, 0.00266791, 0.002675, 386.00452695], [1516424880000, 0.0026752, 0.00269001, 0.00265031, 0.002656, 1980.82900142], [1516424940000, 0.0026698, 0.00268983, 0.00265001, 0.00265001, 2473.7967003], [1516425000000, 0.002661, 0.00266979, 0.00265, 0.00265002, 453.30717602], [1516425060000, 0.00265002, 0.00266976, 0.00264927, 0.00266975, 2231.19375203], [1516425120000, 0.00266975, 0.00266976, 0.00264927, 0.00266975, 372.55017072], [1516425180000, 0.00266975, 0.00266975, 0.00265008, 0.002668, 222.58328507], [1516425240000, 0.002668, 0.00266976, 0.00266013, 0.00266976, 617.76678136], [1516425300000, 0.00266976, 0.00267419, 0.00266975, 0.00266975, 471.99968319], [1516425360000, 0.00266975, 0.00268979, 0.00266013, 0.00268979, 237.42157733], [1516425420000, 0.0026741, 0.0026741, 0.00266014, 0.00267405, 1413.57284897], [1516425480000, 0.00268978, 0.00268979, 0.00267405, 0.00267405, 145.59967607], [1516425540000, 0.002689, 0.00269, 0.00267405, 0.00269, 266.93680143], [1516425600000, 0.002685, 0.00269238, 0.002685, 0.00268501, 324.02362985], [1516425660000, 0.00269238, 0.00269589, 0.00267405, 0.00269589, 389.18369235], [1516425720000, 0.00268, 0.00269589, 0.00267423, 0.00267423, 318.76096866], [1516425780000, 0.00269549, 0.00269549, 0.00267416, 0.00267426, 839.65172292], [1516425840000, 0.00267425, 0.00267426, 0.00266016, 0.00267405, 1077.07738527], [1516425900000, 0.00267405, 0.00267405, 0.0026603, 0.00267334, 455.29734375], [1516425960000, 0.00267334, 0.00267334, 0.00266035, 0.00266042, 73.42075617], [1516426020000, 0.00266042, 0.00266042, 0.00263003, 0.00263113, 3572.95413094], [1516426080000, 0.00263201, 0.00266035, 0.00263201, 0.00266025, 644.08434914], [1516426140000, 0.00266025, 0.00266042, 0.002643, 0.00266042, 203.94071641], [1516426200000, 0.00266042, 0.00268702, 0.00264906, 0.00268701, 654.64902592], [1516426260000, 0.002687, 0.00269002, 0.00268, 0.00269, 97.14473237], [1516426320000, 0.00269, 0.00269001, 0.002687, 0.00269, 372.89405178], [1516426380000, 0.00269, 0.00269001, 0.00269, 0.00269, 539.88033551], [1516426440000, 0.00269, 0.00269631, 0.00268709, 0.00269001, 691.10209174], [1516426500000, 0.00269001, 0.00269631, 0.00265306, 0.00266033, 489.86640608], [1516426560000, 0.00267709, 0.00267709, 0.00267709, 0.00267709, 80.41765886], [1516426620000, 0.00267709, 0.00267709, 0.00266103, 0.00267709, 303.75124971], [1516426680000, 0.00267709, 0.00267709, 0.00266084, 0.00267414, 217.62487632], [1516426740000, 0.002666, 0.00267707, 0.00265316, 0.00265316, 319.35418244], [1516426800000, 0.00265316, 0.00267698, 0.00265316, 0.00267696, 845.83045853], [1516426860000, 0.00265276, 0.00265276, 0.00265157, 0.00265276, 309.39933584], [1516426920000, 0.00267689, 0.00267695, 0.00265288, 0.00267, 154.93857947], [1516426980000, 0.00265279, 0.00267, 0.00265279, 0.00266997, 428.74619705], [1516427040000, 0.00265304, 0.00265304, 0.00265304, 0.00265304, 160.58160192], [1516427100000, 0.00265304, 0.00266987, 0.00265304, 0.00265405, 165.89997176], [1516427160000, 0.00265405, 0.00266984, 0.00265405, 0.00266984, 370.37439387], [1516427220000, 0.00265452, 0.00266984, 0.00265405, 0.00265407, 652.4525259], [1516427280000, 0.00265407, 0.00266899, 0.00265405, 0.00265405, 945.7073172], [1516427340000, 0.00265405, 0.00265405, 0.00265404, 0.00265405, 204.08259868], [1516427400000, 0.002653, 0.0026543, 0.00265155, 0.00265155, 184.4347772], [1516427460000, 0.00265155, 0.0026543, 0.00265002, 0.0026543, 158.64980789], [1516427520000, 0.0026543, 0.0026543, 0.00265004, 0.00265155, 55.22401461], [1516427580000, 0.00265015, 0.00265155, 0.00265003, 0.00265004, 465.04539603], [1516427640000, 0.00265004, 0.00265429, 0.00265002, 0.00265429, 1180.89650547], [1516427700000, 0.00265005, 0.002661, 0.00265005, 0.002661, 341.62473097], [1516427760000, 0.00266099, 0.00266987, 0.00265154, 0.00266986, 1891.44759184], [1516427820000, 0.00266099, 0.00266099, 0.00265154, 0.00265154, 141.67218389], [1516427880000, 0.00265157, 0.00265157, 0.00265153, 0.00265154, 993.31804433], [1516427940000, 0.00265154, 0.00265154, 0.002651, 0.002651, 10.82968259], [1516428000000, 0.002651, 0.00265157, 0.0026501, 0.0026501, 278.70167735], [1516428060000, 0.0026501, 0.00265157, 0.0026501, 0.0026501, 106.27895418], [1516428120000, 0.002651, 0.00265157, 0.0026501, 0.0026501, 204.72648571], [1516428180000, 0.0026501, 0.0026501, 0.00265005, 0.0026501, 277.62065125], [1516428240000, 0.00265009, 0.0026501, 0.00265005, 0.00265008, 123.6188214], [1516428300000, 0.00265005, 0.00265008, 0.00265005, 0.00265008, 467.41344102], [1516428360000, 0.00265008, 0.00265008, 0.00265006, 0.00265006, 443.10378142], [1516428420000, 0.00265005, 0.00265008, 0.00265005, 0.00265007, 554.47978603], [1516428480000, 0.00265008, 0.00265157, 0.00265007, 0.00265157, 450.91828256], [1516428540000, 0.00266973, 0.00266973, 0.00265157, 0.00266972, 61.71351931], [1516428600000, 0.002652, 0.00266971, 0.002652, 0.00265209, 41.16270042], [1516428660000, 0.00265211, 0.00265211, 0.00265208, 0.00265209, 557.737034], [1516428720000, 0.00265205, 0.00265209, 0.00265157, 0.002652, 888.75329467], [1516428780000, 0.002652, 0.002652, 0.00265157, 0.002652, 174.38197182], [1516428840000, 0.002652, 0.002652, 0.00265008, 0.002652, 589.70238416], [1516428900000, 0.002652, 0.00266898, 0.00265004, 0.002665, 705.68679298], [1516428960000, 0.002665, 0.002669, 0.002665, 0.002665, 378.13919069], [1516429020000, 0.002665, 0.00266972, 0.002665, 0.002665, 422.56111784], [1516429080000, 0.00266501, 0.00267386, 0.002665, 0.002665, 1132.64645143], [1516429140000, 0.002665, 0.00266501, 0.002665, 0.00266501, 453.31891358], [1516429200000, 0.002668, 0.002668, 0.00266502, 0.00266502, 252.014459], [1516429260000, 0.00267381, 0.00268, 0.0026666, 0.00266661, 858.61050534], [1516429440000, 0.00268389, 0.00268389, 0.00267, 0.00268388, 993.4017101], [1516429500000, 0.00267002, 0.00268386, 0.00267001, 0.00267002, 181.92283809], [1516429560000, 0.002671, 0.00268349, 0.00267001, 0.00267001, 520.18326275], [1516429620000, 0.00267001, 0.00267002, 0.00267001, 0.00267002, 585.16102477], [1516429680000, 0.00267002, 0.00267002, 0.00267001, 0.00267001, 683.18142181], [1516429740000, 0.00267002, 0.00267002, 0.00267001, 0.00267002, 747.93291579], [1516429800000, 0.00268195, 0.00268195, 0.00267002, 0.00267002, 54.55795753], [1516429860000, 0.00267002, 0.00268194, 0.00267002, 0.002673, 506.15891747], [1516429920000, 0.00268194, 0.00268194, 0.00267004, 0.00267004, 537.78300437], [1516429980000, 0.00267926, 0.00267926, 0.00267004, 0.00267925, 57.67490309], [1516430040000, 0.00267925, 0.00267925, 0.002671, 0.002671, 2.81552723], [1516430100000, 0.002671, 0.00267926, 0.00267004, 0.00267926, 144.15626868], [1516430160000, 0.00267926, 0.0026799, 0.00267926, 0.0026799, 116.69691308], [1516430220000, 0.0026818, 0.00268195, 0.00267926, 0.00267926, 213.29357656], [1516430280000, 0.00267926, 0.00268348, 0.00267926, 0.00268195, 206.94946518], [1516430340000, 0.0026839, 0.0026839, 0.00268195, 0.00268195, 4.73468091], [1516430400000, 0.00268271, 0.0026889, 0.00268271, 0.0026889, 46.99048111], [1516430460000, 0.0026889, 0.00269002, 0.00267927, 0.00267927, 1559.06966964], [1516430520000, 0.0026958, 0.0026958, 0.00267927, 0.00267927, 90.02205169], [1516430580000, 0.00267928, 0.00269299, 0.00267928, 0.00269299, 62.23990013], [1516430640000, 0.00269299, 0.0026958, 0.00267936, 0.00267936, 218.58775034], [1516430700000, 0.00267936, 0.00269999, 0.00267936, 0.00268761, 988.79473528], [1516430760000, 0.00269999, 0.00269999, 0.0026795, 0.0026795, 362.03402882], [1516430820000, 0.00269297, 0.00269297, 0.00269297, 0.00269297, 15.89937072], [1516430880000, 0.00269297, 0.00269299, 0.00269297, 0.00269297, 816.05219415], [1516430940000, 0.00269297, 0.00269298, 0.00268025, 0.00268025, 907.8180258], [1516431000000, 0.00269298, 0.0027, 0.00269298, 0.0027, 21.15447368], [1516431060000, 0.00269298, 0.00269999, 0.00268027, 0.00268299, 206.19249146], [1516431120000, 0.00268299, 0.00268299, 0.00268299, 0.00268299, 25.19676779], [1516431180000, 0.002685, 0.002685, 0.002685, 0.002685, 5.66514416], [1516431300000, 0.00269999, 0.0027, 0.00269999, 0.0027, 11.38371742], [1516431360000, 0.00268524, 0.00269998, 0.00268524, 0.00269998, 37.16749359], [1516431420000, 0.0027, 0.0027, 0.0027, 0.0027, 24.75528096], [1516431480000, 0.00269998, 0.0027, 0.00268606, 0.0027, 116.76819743], [1516431540000, 0.0027, 0.0027, 0.0027, 0.0027, 533.1798844], [1516431600000, 0.00270174, 0.00270512, 0.00270174, 0.00270512, 146.0619417], [1516431660000, 0.00270511, 0.00271, 0.00270179, 0.00270179, 117.78761707], [1516431720000, 0.00270511, 0.00271, 0.00270179, 0.00270958, 125.76024668], [1516431780000, 0.0027018, 0.00270181, 0.00270174, 0.00270174, 369.61462145], [1516431840000, 0.00270945, 0.0027095, 0.0027, 0.0027, 214.24391728], [1516431900000, 0.00270174, 0.00270958, 0.00270174, 0.00270174, 231.09756497], [1516431960000, 0.00270174, 0.00270958, 0.00270174, 0.00270174, 18.05132319], [1516432020000, 0.00270518, 0.00270518, 0.00268596, 0.00270399, 1876.71547829], [1516432140000, 0.0027, 0.00270289, 0.00269995, 0.00269995, 311.0157672], [1516432200000, 0.002686, 0.00269981, 0.002686, 0.002686, 51.75090924], [1516432260000, 0.002686, 0.002686, 0.002683, 0.002683, 440.98999795], [1516432320000, 0.002683, 0.00268593, 0.002683, 0.00268301, 234.00033105], [1516432380000, 0.002683, 0.00268301, 0.00268299, 0.00268299, 150.9366956], [1516432440000, 0.00268026, 0.00268299, 0.0026795, 0.0026795, 363.78120258], [1516432500000, 0.0026795, 0.0026795, 0.00267938, 0.00267938, 85.58620491], [1516432560000, 0.00267938, 0.00267938, 0.0026722, 0.0026722, 518.77238159], [1516432620000, 0.0026722, 0.00267294, 0.0026722, 0.0026722, 864.43390744], [1516432680000, 0.00267105, 0.0026745, 0.00267105, 0.00267105, 50.70597216], [1516432740000, 0.00267105, 0.00267105, 0.00266661, 0.00266661, 191.16025841], [1516432800000, 0.002669, 0.002669, 0.00266493, 0.00266501, 441.95472158], [1516432860000, 0.00266, 0.002665, 0.00265661, 0.00266001, 324.5289218], [1516432920000, 0.00266501, 0.00266501, 0.00264378, 0.00264401, 358.87379198], [1516432980000, 0.00266479, 0.00266479, 0.00266479, 0.00266479, 0.75432449], [1516433040000, 0.00265823, 0.00266469, 0.0026452, 0.00266469, 571.7613733], [1516433100000, 0.00266469, 0.00266666, 0.00265, 0.00265, 1668.81086351], [1516433160000, 0.00266666, 0.002669, 0.00266469, 0.002669, 187.71678436], [1516433220000, 0.002669, 0.00267, 0.00266469, 0.0026647, 186.01848512], [1516433280000, 0.0026647, 0.00266473, 0.00265, 0.00266473, 463.09856405], [1516433340000, 0.00265, 0.00266474, 0.00264514, 0.0026647, 345.74968707], [1516433400000, 0.00266474, 0.00266474, 0.00266474, 0.00266474, 12.09828081], [1516433460000, 0.00265013, 0.00266474, 0.00265013, 0.00266474, 5.68932695], [1516433520000, 0.00266474, 0.00266474, 0.0026647, 0.0026647, 13.82305066], [1516433580000, 0.00266474, 0.00266474, 0.0026647, 0.00266471, 15.41159253], [1516433640000, 0.00266471, 0.002665, 0.00266471, 0.002665, 640.58842558], [1516433700000, 0.002665, 0.002665, 0.002665, 0.002665, 7.54776382], [1516433820000, 0.002665, 0.002665, 0.00265662, 0.002665, 186.61345519], [1516433880000, 0.002665, 0.002665, 0.002665, 0.002665, 20.58630394], [1516433940000, 0.00266499, 0.002665, 0.00265705, 0.00265705, 7.06403652], [1516434000000, 0.002665, 0.002665, 0.00265705, 0.00265705, 3.2973837], [1516434060000, 0.00265705, 0.00265705, 0.00265705, 0.00265705, 2.24014336], [1516434120000, 0.00265706, 0.00265706, 0.00265705, 0.00265705, 0.32255062], [1516434180000, 0.002665, 0.002665, 0.00265705, 0.00265705, 336.80784632], [1516434240000, 0.002665, 0.00266699, 0.002665, 0.00266699, 36.87737097], [1516434300000, 0.002665, 0.0026655, 0.002665, 0.002665, 129.62266507], [1516434360000, 0.002665, 0.00266699, 0.0026451, 0.002647, 2298.13155954], [1516434420000, 0.0026669, 0.0026669, 0.00264087, 0.002645, 376.66255664], [1516434480000, 0.00266657, 0.00266657, 0.002645, 0.00266, 51.70826538], [1516434540000, 0.00264578, 0.00266, 0.00264578, 0.00266, 22.44595246], [1516434600000, 0.00266, 0.00266657, 0.00264898, 0.00266657, 30.11250046], [1516434660000, 0.0026601, 0.00266657, 0.0026601, 0.00266657, 47.90756966], [1516434720000, 0.0026657, 0.0026657, 0.00266, 0.00266, 423.97732184], [1516434780000, 0.00266, 0.0026657, 0.00266, 0.0026657, 368.97195956], [1516434840000, 0.00266657, 0.00266657, 0.00266657, 0.00266657, 10.26027124], [1516434900000, 0.00266, 0.00266656, 0.00266, 0.00266001, 196.71823935], [1516434960000, 0.00266002, 0.00266657, 0.00266002, 0.00266656, 1519.02890003], [1516435020000, 0.00266657, 0.00267, 0.00266656, 0.00266997, 818.11683347], [1516435080000, 0.00266997, 0.00267449, 0.00266656, 0.00266656, 607.54829067], [1516435140000, 0.00266656, 0.00266656, 0.00265, 0.00265001, 382.05245793], [1516435200000, 0.00265001, 0.00266989, 0.00265001, 0.00265001, 65.71577017], [1516435260000, 0.00266997, 0.00266998, 0.00265001, 0.00266997, 275.69637788], [1516435320000, 0.00266997, 0.00266997, 0.00265055, 0.00265055, 18.53123558], [1516435380000, 0.00265073, 0.00266995, 0.00265068, 0.00266995, 217.25895933], [1516435440000, 0.00266995, 0.00266995, 0.00266995, 0.00266995, 23.92844333], [1516435500000, 0.00266995, 0.00266995, 0.00265086, 0.00266995, 127.11015236], [1516435560000, 0.00266995, 0.00266995, 0.00266994, 0.00266994, 81.23766965], [1516435620000, 0.00266994, 0.00266994, 0.00266993, 0.00266993, 129.01149033], [1516435680000, 0.00266993, 0.00266993, 0.00266993, 0.00266993, 14.94421202], [1516435740000, 0.00266992, 0.00266992, 0.00266991, 0.00266991, 45.52618758], [1516435800000, 0.00265205, 0.00266987, 0.00265205, 0.00266987, 14.28385775], [1516435860000, 0.00266985, 0.00266985, 0.00266906, 0.00266906, 18.1184372], [1516435920000, 0.00265985, 0.00266906, 0.00265208, 0.0026521, 135.42443966], [1516435980000, 0.002658, 0.00266987, 0.0026521, 0.00266987, 145.5356858], [1516436040000, 0.00266987, 0.00266987, 0.00266906, 0.00266906, 160.42191075], [1516436100000, 0.00266905, 0.00266905, 0.00266905, 0.00266905, 8.73730864], [1516436160000, 0.002669, 0.002669, 0.0026666, 0.0026666, 20.63061048], [1516436220000, 0.00266895, 0.00266895, 0.0026666, 0.0026666, 187.5438025], [1516436280000, 0.0026666, 0.0026675, 0.00266656, 0.00266656, 1296.4298539], [1516436340000, 0.00266656, 0.00266749, 0.00266656, 0.00266656, 97.10360553], [1516436400000, 0.00266656, 0.0026675, 0.00265301, 0.00265301, 59.26585374], [1516436460000, 0.00265306, 0.00265306, 0.00265306, 0.00265306, 79.3134721], [1516436520000, 0.00265401, 0.00266657, 0.00265401, 0.00266657, 2.81299131], [1516436580000, 0.002655, 0.002655, 0.002655, 0.002655, 5.47778071], [1516436640000, 0.00265501, 0.00265501, 0.00265501, 0.00265501, 17.2907097], [1516436700000, 0.00265503, 0.00266657, 0.00265503, 0.00266657, 642.42133513], [1516436760000, 0.00266655, 0.00266657, 0.00265503, 0.00266657, 60.20451299], [1516436820000, 0.00265601, 0.00265601, 0.002656, 0.00265601, 50.02148743], [1516436880000, 0.00265602, 0.00266656, 0.00265602, 0.00266656, 24.57002788], [1516436940000, 0.00266656, 0.00266656, 0.00265602, 0.00266656, 5.8915498], [1516437000000, 0.00266656, 0.00266656, 0.00265602, 0.00266656, 51.77315878], [1516437060000, 0.00266654, 0.00266656, 0.00265601, 0.00266655, 92.462926], [1516437120000, 0.00265668, 0.00265668, 0.00265668, 0.00265668, 2.33097935], [1516437180000, 0.00265602, 0.00266651, 0.00265602, 0.00266651, 167.49272611], [1516437240000, 0.00266651, 0.00266651, 0.00265601, 0.00265601, 47.57622407], [1516437300000, 0.00265602, 0.00266632, 0.00265201, 0.00265201, 335.76627498], [1516437360000, 0.00265602, 0.00266584, 0.00265201, 0.00266579, 153.08435721], [1516437420000, 0.0026656, 0.0026656, 0.002651, 0.002651, 297.19897535], [1516437480000, 0.00266393, 0.00266393, 0.00266199, 0.00266199, 83.96284625], [1516437540000, 0.00266, 0.0026605, 0.00266, 0.0026605, 165.14169135], [1516437600000, 0.0026603, 0.0026603, 0.002651, 0.002651, 293.48364412], [1516437660000, 0.00266, 0.00266, 0.00266, 0.00266, 11.92352031], [1516437720000, 0.00266, 0.00266, 0.002651, 0.002651, 158.85846371], [1516437780000, 0.002655, 0.002655, 0.002655, 0.002655, 26.25474647], [1516437840000, 0.00265614, 0.00265614, 0.002655, 0.002655, 97.9426737], [1516437900000, 0.002651, 0.002655, 0.00265082, 0.002655, 135.19827272], [1516437960000, 0.00265082, 0.00265082, 0.00265082, 0.00265082, 4.99651362], [1516438020000, 0.00265083, 0.00265498, 0.00265, 0.00265083, 555.79110694], [1516438080000, 0.00265083, 0.00265498, 0.00265, 0.00265, 105.69596952], [1516438140000, 0.00265083, 0.00265498, 0.00265083, 0.00265498, 241.96637292], [1516438200000, 0.00265498, 0.002655, 0.00264086, 0.00265083, 1026.86576987], [1516438260000, 0.002655, 0.002655, 0.00263594, 0.00263594, 83.03619833], [1516438320000, 0.00263841, 0.002655, 0.00263, 0.00265498, 1504.03888268], [1516438380000, 0.00263404, 0.002654, 0.00263404, 0.00264001, 45.34916734], [1516438440000, 0.00264001, 0.00264001, 0.00264, 0.00264001, 171.13922033], [1516438500000, 0.00264001, 0.00265498, 0.00263004, 0.00265498, 1299.71405832], [1516438560000, 0.00265498, 0.00265498, 0.00263037, 0.0026304, 263.86442069], [1516438620000, 0.00264, 0.00264, 0.00264, 0.00264, 83.98995859], [1516438680000, 0.00264, 0.00264, 0.00263455, 0.00264, 78.69475078], [1516438740000, 0.00264, 0.00264, 0.00263, 0.00263455, 841.1858113], [1516438800000, 0.00264, 0.00264, 0.00262717, 0.00263888, 247.32272863], [1516438860000, 0.00263999, 0.00263999, 0.00263888, 0.00263999, 90.15797736], [1516438920000, 0.00263999, 0.00263999, 0.002627, 0.00262717, 86.09338698], [1516438980000, 0.00263999, 0.00263999, 0.00262657, 0.00262734, 93.75051108], [1516439040000, 0.00263999, 0.00264, 0.00263999, 0.00264, 209.34373782], [1516439100000, 0.00263999, 0.00263999, 0.00263999, 0.00263999, 14.14773124], [1516439160000, 0.00263999, 0.00264486, 0.00263999, 0.00264485, 41.60348317], [1516439220000, 0.00264485, 0.00264485, 0.00264, 0.00264, 18.70609724], [1516439280000, 0.00264, 0.00264, 0.00262731, 0.00263999, 115.73709872], [1516439340000, 0.00262731, 0.00263999, 0.00262731, 0.00262731, 47.31075029], [1516439400000, 0.00262731, 0.00262734, 0.00262731, 0.00262734, 10.49021163], [1516439460000, 0.00262733, 0.00263997, 0.00262731, 0.00263997, 194.72189535], [1516439520000, 0.00263997, 0.00263997, 0.00262731, 0.00263997, 454.18146049], [1516439580000, 0.00262731, 0.00263999, 0.00262731, 0.00263999, 211.7755105], [1516439640000, 0.00262731, 0.00263999, 0.00262731, 0.00263999, 120.26895372], [1516439700000, 0.00262733, 0.00263999, 0.00262733, 0.00263365, 19.59564081], [1516439760000, 0.00263366, 0.00263999, 0.00263365, 0.00263365, 20.26473319], [1516439820000, 0.00263999, 0.00263999, 0.00263401, 0.00263999, 176.6013236], [1516439880000, 0.00263999, 0.00263999, 0.00263999, 0.00263999, 65.03719499], [1516439940000, 0.002634, 0.00263997, 0.002631, 0.00263208, 260.69744508], [1516440000000, 0.00263207, 0.00263996, 0.00263207, 0.0026351, 52.95793492], [1516440060000, 0.00263996, 0.00263996, 0.00263101, 0.00263996, 291.27265701], [1516440120000, 0.00263995, 0.00265376, 0.00263102, 0.00265376, 3557.51024343], [1516440180000, 0.00263995, 0.00265376, 0.00263995, 0.00263995, 310.43234778], [1516440300000, 0.00264004, 0.00265376, 0.00264001, 0.00264002, 236.64375067], [1516440360000, 0.00265, 0.00265, 0.00264002, 0.00265, 189.39311534], [1516440420000, 0.00265, 0.00265, 0.00264999, 0.00264999, 43.64477549], [1516440480000, 0.00264999, 0.00265, 0.00264999, 0.00265, 44.38430756], [1516440540000, 0.00265, 0.00265376, 0.00264999, 0.00264999, 34.61660431], [1516440600000, 0.00265376, 0.00265376, 0.00265376, 0.00265376, 23.58934103], [1516440660000, 0.002652, 0.002652, 0.002652, 0.002652, 21.8], [1516440720000, 0.002652, 0.002652, 0.00265, 0.00265, 140.73106676], [1516440780000, 0.00265, 0.00265, 0.00265, 0.00265, 3.20716352], [1516440840000, 0.00265, 0.002652, 0.00265, 0.00265, 3.81184162], [1516440900000, 0.002652, 0.002652, 0.00264999, 0.00265, 234.14678406], [1516440960000, 0.00264999, 0.00264999, 0.00264999, 0.00264999, 103.61584306], [1516441020000, 0.00264999, 0.00265, 0.00264999, 0.00264999, 150.79789684], [1516441080000, 0.00264999, 0.00265, 0.002641, 0.002641, 32.8616968], [1516441140000, 0.00264999, 0.00265, 0.00264999, 0.00265, 13.37340787], [1516441200000, 0.00265, 0.00265, 0.00265, 0.00265, 112.8823651], [1516441260000, 0.00265, 0.00265, 0.00265, 0.00265, 27.21934322], [1516441320000, 0.00265, 0.00265, 0.00265, 0.00265, 71.98742747], [1516441380000, 0.00265, 0.00265, 0.00264999, 0.00265, 135.93431703], [1516441440000, 0.00265, 0.00265, 0.00264203, 0.00264204, 10.84354132], [1516441500000, 0.00264204, 0.00265, 0.00264202, 0.00264202, 90.29354659], [1516441560000, 0.00264203, 0.00265, 0.00264002, 0.002642, 1421.73924328], [1516441620000, 0.00265, 0.00265, 0.00265, 0.00265, 38.09428122], [1516441680000, 0.00265, 0.00265996, 0.002649, 0.00265401, 281.8689364], [1516441740000, 0.00265994, 0.00265994, 0.002654, 0.002654, 139.62589387], [1516441800000, 0.002654, 0.002654, 0.002654, 0.002654, 0.26375282], [1516441860000, 0.002644, 0.00265398, 0.002644, 0.00265398, 2.16569099], [1516441920000, 0.002644, 0.002654, 0.002644, 0.002654, 44.20801738], [1516441980000, 0.002654, 0.00265498, 0.00264205, 0.00264205, 288.93447062], [1516442100000, 0.00264852, 0.00264852, 0.00264258, 0.00264852, 5.61017388], [1516442160000, 0.00264852, 0.00264852, 0.00264852, 0.00264852, 5.43700371], [1516442220000, 0.002654, 0.002654, 0.002654, 0.002654, 64.18158003], [1516442280000, 0.00264466, 0.002654, 0.00264466, 0.002654, 15.9235572], [1516442340000, 0.002654, 0.00265498, 0.002654, 0.002654, 321.35011834], [1516442400000, 0.002654, 0.00265498, 0.00264467, 0.00264467, 263.69577371], [1516442460000, 0.00264468, 0.00264468, 0.00264468, 0.00264468, 1.34347815], [1516442520000, 0.00264768, 0.00264768, 0.00264469, 0.00264768, 161.23532185], [1516442580000, 0.00264768, 0.00265498, 0.00264768, 0.00265498, 219.98604027], [1516442640000, 0.00265498, 0.00265498, 0.00265, 0.00265498, 23.97110839], [1516442700000, 0.00265498, 0.00265498, 0.00265, 0.00265, 73.044126], [1516442760000, 0.00265001, 0.00265498, 0.00265001, 0.00265498, 79.27052061], [1516442820000, 0.00265498, 0.00265501, 0.00265498, 0.00265498, 337.53799061], [1516442880000, 0.00265498, 0.00265501, 0.00265498, 0.00265501, 53.69229457], [1516442940000, 0.00265501, 0.00265501, 0.00265501, 0.00265501, 25.80293], [1516443000000, 0.00265002, 0.00265501, 0.00265002, 0.00265501, 25.87752083], [1516443060000, 0.00265002, 0.00265002, 0.00265002, 0.00265002, 1.74186639], [1516443120000, 0.00265002, 0.002655, 0.00265002, 0.00265002, 42.17760299], [1516443180000, 0.00265499, 0.00265997, 0.00265002, 0.00265002, 111.33641699], [1516443240000, 0.002651, 0.0026515, 0.00265001, 0.00265001, 190.32072588], [1516443300000, 0.002651, 0.00265998, 0.00265, 0.00265997, 649.03197869], [1516443360000, 0.00265996, 0.00265997, 0.00265, 0.00265, 319.82939316], [1516443420000, 0.00265, 0.002651, 0.00265, 0.00265, 13.41729332], [1516443480000, 0.00265001, 0.002651, 0.00265, 0.002651, 73.99699267], [1516443540000, 0.00265995, 0.00265995, 0.00265, 0.00265, 464.22359613], [1516443600000, 0.00265989, 0.00265989, 0.00265, 0.00265, 252.34272945], [1516443660000, 0.002659, 0.002659, 0.00265001, 0.0026589, 193.73216699], [1516443720000, 0.00265889, 0.00265889, 0.00265889, 0.00265889, 22.38829182], [1516443780000, 0.00265265, 0.00265265, 0.00265, 0.00265001, 29.59435825], [1516443840000, 0.00265001, 0.00265889, 0.00265, 0.00265, 70.92525948], [1516443900000, 0.00265001, 0.00265889, 0.00265, 0.00265887, 26.16699921], [1516443960000, 0.00265889, 0.00265989, 0.00265001, 0.00265001, 101.29820794], [1516444020000, 0.00265985, 0.00265985, 0.00265983, 0.00265983, 9.08558137], [1516444080000, 0.002651, 0.002651, 0.002651, 0.002651, 2.14472016], [1516444140000, 0.002651, 0.002651, 0.002651, 0.002651, 2.0], [1516444200000, 0.0026509, 0.002651, 0.00265089, 0.0026509, 12.55521198], [1516444260000, 0.00265002, 0.00265002, 0.00265002, 0.00265002, 2.34282067], [1516444320000, 0.00265002, 0.00265049, 0.00265002, 0.00265002, 4.34612449], [1516444380000, 0.00265006, 0.00265049, 0.00265002, 0.00265006, 93.53713759], [1516444440000, 0.00265002, 0.00265003, 0.00265, 0.00265003, 315.55664014], [1516444500000, 0.00265, 0.002651, 0.00265, 0.00265006, 43.90892882], [1516444560000, 0.00265006, 0.002651, 0.00264467, 0.00264467, 193.67811753], [1516444620000, 0.00264468, 0.00264468, 0.00264468, 0.00264468, 14.28552541], [1516444680000, 0.00264468, 0.00264468, 0.00264467, 0.00264467, 9.70899092], [1516444740000, 0.00264074, 0.00264079, 0.00264074, 0.00264079, 16.84719632], [1516444800000, 0.002644, 0.00265, 0.002644, 0.002644, 41.84386981], [1516444860000, 0.002644, 0.002651, 0.002644, 0.002651, 182.27377782], [1516444920000, 0.002651, 0.002651, 0.002651, 0.002651, 28.22048283], [1516445040000, 0.002651, 0.002651, 0.00264575, 0.002651, 54.06806973], [1516445100000, 0.002651, 0.002651, 0.002651, 0.002651, 122.7464777], [1516445160000, 0.002651, 0.002651, 0.002651, 0.002651, 92.02460042], [1516445220000, 0.002651, 0.002651, 0.00265001, 0.002651, 151.3423467], [1516445280000, 0.002651, 0.002651, 0.002651, 0.002651, 76.57250431], [1516445340000, 0.002651, 0.002651, 0.00264074, 0.002651, 618.74405838], [1516445400000, 0.00264074, 0.002651, 0.00264074, 0.002651, 73.3856429], [1516445460000, 0.002651, 0.002651, 0.00264076, 0.00264076, 229.68855305], [1516445520000, 0.00264076, 0.002651, 0.00264076, 0.0026408, 198.71909669], [1516445580000, 0.00264085, 0.0026409, 0.00264085, 0.00264089, 21.70765912], [1516445640000, 0.00264086, 0.002651, 0.00264086, 0.002651, 57.76992664], [1516445700000, 0.002651, 0.002651, 0.00265099, 0.00265099, 243.80044588], [1516445760000, 0.00265099, 0.00265099, 0.00265099, 0.00265099, 82.04608643], [1516445820000, 0.00265099, 0.00265099, 0.00265099, 0.00265099, 59.30765323], [1516445880000, 0.00265099, 0.00265099, 0.0026498, 0.0026498, 96.54753882], [1516445940000, 0.0026498, 0.0026498, 0.0026498, 0.0026498, 0.41745623], [1516446000000, 0.0026498, 0.0026498, 0.00264102, 0.0026498, 60.40847692], [1516446060000, 0.0026498, 0.0026498, 0.00264101, 0.0026498, 46.77654847], [1516446120000, 0.0026498, 0.0026498, 0.00264979, 0.00264979, 5.64112977], [1516446180000, 0.00264979, 0.00265099, 0.00264979, 0.0026498, 165.75843318], [1516446240000, 0.0026498, 0.00265099, 0.00264102, 0.00265099, 179.15165104], [1516446300000, 0.002641, 0.00265099, 0.002641, 0.00265099, 51.31035785], [1516446360000, 0.00265099, 0.00265099, 0.00265099, 0.00265099, 65.03137205], [1516446420000, 0.00265099, 0.002651, 0.00265099, 0.002651, 29.93397514], [1516446480000, 0.002653, 0.002653, 0.002653, 0.002653, 9.17908575], [1516446540000, 0.002653, 0.002653, 0.002653, 0.002653, 274.11319685], [1516446600000, 0.002651, 0.002653, 0.002651, 0.002653, 39.14150943], [1516446660000, 0.002652, 0.002653, 0.002652, 0.0026525, 48.30291509], [1516446720000, 0.0026525, 0.00265983, 0.0026525, 0.00265301, 339.78899009], [1516446780000, 0.00265301, 0.00266107, 0.00265301, 0.00266107, 32.48488623], [1516446840000, 0.00266105, 0.00266105, 0.002654, 0.002654, 1.85581834], [1516446900000, 0.002658, 0.00266108, 0.0026545, 0.0026545, 216.77569987], [1516446960000, 0.00266107, 0.00266107, 0.002661, 0.00266106, 51.69908364], [1516447020000, 0.00266106, 0.00266106, 0.0026545, 0.0026545, 267.24154764], [1516447080000, 0.00266106, 0.00266106, 0.00266106, 0.00266106, 8.21825867], [1516447140000, 0.00266106, 0.00266106, 0.00266105, 0.00266105, 28.56846169], [1516447200000, 0.00266105, 0.00266105, 0.0026551, 0.0026551, 8.90637513], [1516447260000, 0.0026551, 0.00266105, 0.0026551, 0.0026551, 29.66859655], [1516447320000, 0.0026551, 0.00266104, 0.0026551, 0.00266104, 5.78572906], [1516447380000, 0.00266104, 0.00266106, 0.0026551, 0.0026551, 1353.88767579], [1516447440000, 0.0026551, 0.00266105, 0.0026551, 0.0026551, 48.20589396], [1516447500000, 0.0026551, 0.00266105, 0.002655, 0.0026551, 114.12912765], [1516447560000, 0.0026551, 0.00266104, 0.002655, 0.002655, 68.96944373], [1516447620000, 0.0026545, 0.00266105, 0.0026545, 0.002655, 30.42908237], [1516447680000, 0.00266104, 0.00266105, 0.0026545, 0.00266104, 93.08484001], [1516447740000, 0.00266104, 0.00266104, 0.0026545, 0.0026545, 156.38461382], [1516447800000, 0.0026545, 0.00266104, 0.0026545, 0.00266104, 4.1732758], [1516447860000, 0.0026545, 0.0026545, 0.0026545, 0.0026545, 5.02091649], [1516447920000, 0.0026545, 0.002655, 0.0026545, 0.00265451, 13.28459867], [1516447980000, 0.002655, 0.00266, 0.002655, 0.00266, 55.55006794], [1516448040000, 0.00266, 0.00266103, 0.00266, 0.00266102, 36.9933109], [1516448100000, 0.00266103, 0.00266103, 0.00266102, 0.00266103, 108.99253973], [1516448160000, 0.00266103, 0.00266103, 0.00266102, 0.00266102, 86.28159143], [1516448220000, 0.00266102, 0.00266103, 0.00266102, 0.00266103, 169.98258193], [1516448280000, 0.00266102, 0.00266103, 0.002661, 0.00266103, 90.26285061], [1516448340000, 0.00266101, 0.00266104, 0.00266101, 0.00266104, 102.36023096], [1516448400000, 0.00266104, 0.00266105, 0.00266101, 0.00266105, 172.93579384], [1516448460000, 0.00266105, 0.00266397, 0.00266105, 0.00266397, 99.37107231], [1516448520000, 0.00266401, 0.00266993, 0.00266401, 0.00266993, 217.59874182], [1516448580000, 0.00266993, 0.0026711, 0.00266993, 0.00266993, 42.15673943], [1516448640000, 0.0026711, 0.0026711, 0.0026711, 0.0026711, 5.61184507], [1516448700000, 0.0026711, 0.002696, 0.00266105, 0.00266105, 1507.61228697], [1516448760000, 0.00266402, 0.00268501, 0.00266402, 0.00266402, 60.41389341], [1516448820000, 0.0026766, 0.0026766, 0.00266402, 0.00267643, 243.84507376], [1516448880000, 0.00267643, 0.0026766, 0.0026645, 0.00267658, 367.31954804], [1516448940000, 0.00267649, 0.00267649, 0.00267649, 0.00267649, 111.0], [1516449000000, 0.00267648, 0.00267648, 0.0026645, 0.002665, 456.73979883], [1516449060000, 0.00267644, 0.00267644, 0.00267643, 0.00267643, 7.5015591], [1516449120000, 0.00267643, 0.00267643, 0.00267643, 0.00267643, 12.72854843], [1516449180000, 0.00267643, 0.00267643, 0.00267643, 0.00267643, 40.29504605], [1516449240000, 0.00267643, 0.00267643, 0.0026672, 0.00267643, 54.9926856], [1516449300000, 0.00267642, 0.00267643, 0.00267642, 0.00267643, 58.37553233], [1516449360000, 0.00267643, 0.00267643, 0.00267, 0.00267, 529.11505437], [1516449420000, 0.00267641, 0.00267641, 0.00267, 0.00267, 245.64765328], [1516449480000, 0.00267, 0.00267, 0.002661, 0.00266994, 1139.20571109], [1516449540000, 0.00266998, 0.00266998, 0.002661, 0.00266108, 409.05315583], [1516449600000, 0.0026612, 0.0026612, 0.002661, 0.00266108, 369.59789498], [1516449660000, 0.00266996, 0.00266996, 0.00266115, 0.00266115, 28.86394477], [1516449720000, 0.00266115, 0.0026764, 0.002661, 0.002661, 159.69027753], [1516449780000, 0.00266999, 0.00266999, 0.00266999, 0.00266999, 0.187], [1516449840000, 0.00266998, 0.00266998, 0.00266998, 0.00266998, 16.91530643], [1516449900000, 0.00266998, 0.00266998, 0.00266109, 0.00266109, 1.34240856], [1516449960000, 0.00266109, 0.00266109, 0.00266109, 0.00266109, 56.49317048], [1516450020000, 0.00266109, 0.00266109, 0.00266108, 0.00266109, 36.58796741], [1516450080000, 0.00266109, 0.00266987, 0.00266108, 0.00266987, 298.50827072], [1516450140000, 0.00266987, 0.00266987, 0.00266108, 0.00266926, 36.65408077], [1516450200000, 0.00266925, 0.00266927, 0.00266109, 0.00266589, 533.01918038], [1516450260000, 0.00266109, 0.00266588, 0.00266109, 0.00266588, 22.94731738], [1516450320000, 0.00266589, 0.00266927, 0.00266589, 0.0026692, 7.46864767], [1516450380000, 0.00266982, 0.00267643, 0.00266982, 0.00267, 67.90468496], [1516450440000, 0.00267, 0.00267643, 0.00267, 0.00267, 110.23606098], [1516450500000, 0.00267659, 0.00268299, 0.00266589, 0.002676, 207.65800261], [1516450560000, 0.002676, 0.002683, 0.002676, 0.002683, 337.15113836], [1516450620000, 0.002683, 0.002683, 0.00266589, 0.00266589, 67.03042203], [1516450680000, 0.00266589, 0.002684, 0.00266589, 0.002684, 174.0], [1516450740000, 0.00266135, 0.00266135, 0.00266135, 0.00266135, 3.5], [1516450800000, 0.00266399, 0.00268483, 0.00266399, 0.00268483, 17.06136809], [1516450860000, 0.00266405, 0.00268481, 0.00266405, 0.00268481, 1.91428492], [1516450920000, 0.00268481, 0.00268483, 0.00268481, 0.00268483, 66.79738345], [1516450980000, 0.00266433, 0.00268483, 0.00266433, 0.00268483, 8.8623153], [1516451040000, 0.00268483, 0.00268484, 0.00266454, 0.00268484, 170.86066482], [1516451100000, 0.00268484, 0.00268484, 0.00268484, 0.00268484, 599.01734972], [1516451160000, 0.00268484, 0.00268484, 0.0026701, 0.00268, 31.47446987], [1516451220000, 0.00267999, 0.00268, 0.0026701, 0.00268, 11.37360767], [1516451280000, 0.00268, 0.00268482, 0.00268, 0.00268482, 41.41182268], [1516451340000, 0.00268482, 0.00268482, 0.00268481, 0.00268481, 2.7212827], [1516451400000, 0.00268, 0.00268481, 0.00268, 0.00268481, 159.72478634], [1516451460000, 0.00268481, 0.00268482, 0.00268, 0.00268, 89.48362266], [1516451520000, 0.00268, 0.00268, 0.00268, 0.00268, 172.81522685], [1516451580000, 0.00268, 0.00268, 0.00267021, 0.00267021, 18.85394107], [1516451640000, 0.002675, 0.00268, 0.002675, 0.002675, 35.78938039], [1516451700000, 0.002675, 0.00268, 0.00267022, 0.00268, 15.20837829], [1516451760000, 0.00268, 0.00268, 0.00267025, 0.00268, 7.38370995], [1516451820000, 0.00268, 0.00268, 0.00268, 0.00268, 51.32843633], [1516451880000, 0.00268481, 0.00268482, 0.00268481, 0.00268482, 0.86618527], [1516451940000, 0.002682, 0.00268482, 0.002682, 0.002682, 106.42666915], [1516452000000, 0.002682, 0.002682, 0.00268, 0.00268, 11.59706293], [1516452060000, 0.00268001, 0.00268482, 0.00268001, 0.00268482, 2.79486169], [1516452120000, 0.00268002, 0.00268482, 0.00268002, 0.00268482, 11.68460646], [1516452180000, 0.00268481, 0.00268481, 0.00268005, 0.00268481, 64.66111934], [1516452240000, 0.00268482, 0.00268482, 0.00268005, 0.0026848, 13.39416352], [1516452300000, 0.0026848, 0.00268482, 0.00268005, 0.00268005, 218.15045907], [1516452360000, 0.00268002, 0.00268002, 0.00268001, 0.00268002, 60.62316369], [1516452420000, 0.00268001, 0.00268001, 0.00268001, 0.00268001, 28.12435136], [1516452480000, 0.00268001, 0.00268002, 0.00268001, 0.00268001, 749.25422729], [1516452540000, 0.00268001, 0.00268002, 0.00268001, 0.00268002, 877.48442102], [1516452600000, 0.00268001, 0.00268002, 0.00268001, 0.00268001, 144.64740265], [1516452660000, 0.00268002, 0.00268002, 0.00268001, 0.00268001, 32.24551253], [1516452720000, 0.00268002, 0.00268002, 0.00268001, 0.00268001, 58.87563315], [1516452780000, 0.00268001, 0.00268002, 0.00268001, 0.00268002, 75.25856712], [1516452840000, 0.00268002, 0.00268002, 0.00268001, 0.00268002, 416.58038071], [1516452900000, 0.00268002, 0.00268002, 0.00268, 0.00268, 235.56228849], [1516452960000, 0.00268001, 0.00268479, 0.00268, 0.00268479, 254.6415613], [1516453020000, 0.00268, 0.00268, 0.00267019, 0.00267019, 201.61147835], [1516453080000, 0.00267019, 0.00267019, 0.00267011, 0.00267011, 179.90156067], [1516453140000, 0.00267011, 0.00267018, 0.002665, 0.00267018, 114.83689822], [1516453200000, 0.00267018, 0.00267018, 0.002665, 0.002665, 19.2677545], [1516453260000, 0.002665, 0.00267018, 0.00266475, 0.002665, 125.52278175], [1516453320000, 0.002665, 0.002665, 0.002665, 0.002665, 18.6659], [1516453380000, 0.00266405, 0.002665, 0.00266101, 0.00266405, 47.02144912], [1516453440000, 0.00266405, 0.00267018, 0.00266405, 0.00267018, 73.14524758], [1516453500000, 0.00267018, 0.00268, 0.00267018, 0.00267018, 216.09395443], [1516453560000, 0.00267015, 0.00267555, 0.00267015, 0.002671, 413.07107199], [1516453620000, 0.00267555, 0.00267999, 0.002671, 0.00267998, 20.62699694], [1516453680000, 0.002671, 0.00268509, 0.002671, 0.00268509, 927.67452754], [1516453740000, 0.00267998, 0.00268509, 0.00267998, 0.00268509, 105.3636969], [1516453800000, 0.00268509, 0.0026851, 0.002671, 0.002671, 15.10110834], [1516453860000, 0.002671, 0.00268511, 0.002671, 0.0026851, 291.46378463], [1516453920000, 0.002671, 0.0026851, 0.002671, 0.00267166, 249.90707549], [1516453980000, 0.00268509, 0.00268509, 0.00268507, 0.00268507, 44.77751192], [1516454040000, 0.002681, 0.0026851, 0.00268099, 0.0026851, 629.501334], [1516454100000, 0.00268101, 0.0026851, 0.00267168, 0.00267168, 14.46021008], [1516454160000, 0.00268509, 0.00268509, 0.00268509, 0.00268509, 40.32497654], [1516454220000, 0.00267168, 0.00268509, 0.00267168, 0.00268508, 54.75809499], [1516454280000, 0.00268506, 0.00268506, 0.00268506, 0.00268506, 4.74062705], [1516454340000, 0.0026717, 0.00268508, 0.0026717, 0.0026717, 52.00970054], [1516454400000, 0.00268507, 0.00268507, 0.0026717, 0.0026807, 98.41748299], [1516454460000, 0.0026807, 0.0026807, 0.00267169, 0.0026807, 141.52253522], [1516454520000, 0.0026807, 0.0026807, 0.00267169, 0.0026717, 14.6205273], [1516454580000, 0.0026717, 0.00268, 0.0026717, 0.00268, 26.44737906], [1516454640000, 0.00268, 0.00268067, 0.00267999, 0.00267999, 206.78016364], [1516454700000, 0.00267998, 0.00267999, 0.00267171, 0.00267171, 28.49299809], [1516454760000, 0.00267171, 0.00267171, 0.00267171, 0.00267171, 10.74519931], [1516454820000, 0.00267997, 0.00267998, 0.00267997, 0.00267997, 45.99490857], [1516454880000, 0.00267995, 0.00267996, 0.00267992, 0.00267992, 22.81024476], [1516454940000, 0.00267171, 0.00267172, 0.00267167, 0.00267167, 507.72429841], [1516455000000, 0.00267989, 0.00267999, 0.00267171, 0.00267172, 249.14778673], [1516455060000, 0.00267172, 0.00267172, 0.002671, 0.002671, 17.6637144], [1516455120000, 0.002671, 0.00267172, 0.002671, 0.00267172, 116.72153349], [1516455180000, 0.00267172, 0.00267172, 0.00266602, 0.00266602, 10.58125584], [1516455240000, 0.00266602, 0.00266602, 0.002666, 0.002666, 17.8347733], [1516455300000, 0.00267171, 0.00267171, 0.00266602, 0.00267171, 16.30290954], [1516455360000, 0.00267171, 0.00267171, 0.002666, 0.00267169, 98.98375531], [1516455420000, 0.002666, 0.00266999, 0.002666, 0.00266699, 318.52432899], [1516455480000, 0.002666, 0.002666, 0.002663, 0.00266467, 78.07235534], [1516455540000, 0.00266467, 0.00266996, 0.002663, 0.00266996, 135.76644939], [1516455600000, 0.002665, 0.00266996, 0.002665, 0.00266996, 52.26151176], [1516455660000, 0.002665, 0.002665, 0.002663, 0.002665, 114.5066038], [1516455720000, 0.002665, 0.002665, 0.00266109, 0.002665, 173.94654548], [1516455780000, 0.002665, 0.002665, 0.002661, 0.002661, 74.64270749], [1516455840000, 0.002663, 0.002663, 0.00266, 0.00266, 902.2364108], [1516455900000, 0.00265999, 0.00265999, 0.002654, 0.00265899, 394.86643747], [1516455960000, 0.00265899, 0.00265899, 0.00265276, 0.00265899, 24.6606957], [1516456080000, 0.00265898, 0.00265898, 0.00265276, 0.00265276, 123.11386038], [1516456140000, 0.002651, 0.002651, 0.00264108, 0.00265, 631.58959184], [1516456200000, 0.00265, 0.00265, 0.00265, 0.00265, 90.29016381], [1516456260000, 0.00265, 0.00265, 0.00264111, 0.00265, 149.44549759], [1516456320000, 0.00265, 0.00265897, 0.0026411, 0.00265895, 880.46322211], [1516456380000, 0.00265895, 0.00265895, 0.00265, 0.00265, 365.90210038], [1516456440000, 0.00265, 0.00265895, 0.00265, 0.00265, 170.48026153], [1516456500000, 0.00265, 0.00265889, 0.00264, 0.00264, 348.5646878], [1516456560000, 0.00265, 0.00265, 0.00264, 0.00265, 891.79685517], [1516456620000, 0.00265, 0.00265, 0.00264, 0.00264, 32.39028523], [1516456680000, 0.00265, 0.00265898, 0.002645, 0.00265888, 307.06655209], [1516456740000, 0.002645, 0.002645, 0.002645, 0.002645, 19.99888678], [1516456800000, 0.002645, 0.002645, 0.002645, 0.002645, 12.76533043], [1516456860000, 0.00264501, 0.00264501, 0.002645, 0.00264501, 53.61909259], [1516456920000, 0.00265876, 0.00265876, 0.00264501, 0.00264501, 14.91232772], [1516456980000, 0.002655, 0.002658, 0.002655, 0.002658, 184.44489117], [1516457040000, 0.00265799, 0.002658, 0.00265799, 0.002658, 9.84437243], [1516457100000, 0.00264505, 0.00265799, 0.00264501, 0.00265799, 882.80009771], [1516457160000, 0.00264505, 0.00265799, 0.002645, 0.002645, 819.03883916], [1516457220000, 0.00264505, 0.00264515, 0.002645, 0.002645, 59.31019763], [1516457280000, 0.00264515, 0.002658, 0.002645, 0.002645, 198.08274625], [1516457340000, 0.002642, 0.002642, 0.002642, 0.002642, 1.00661683], [1516457400000, 0.00265794, 0.00265795, 0.0026579, 0.00265795, 21.52509749], [1516457460000, 0.00265795, 0.00265799, 0.00265795, 0.00265799, 6.545908], [1516457520000, 0.00265799, 0.00265799, 0.00265799, 0.00265799, 200.33285238], [1516457580000, 0.00265798, 0.002658, 0.00265798, 0.002658, 24.81686435], [1516457640000, 0.002658, 0.002658, 0.002645, 0.002645, 6.29250432], [1516457700000, 0.002658, 0.002658, 0.002658, 0.002658, 15.05761349], [1516457760000, 0.002658, 0.002658, 0.002658, 0.002658, 185.28903562], [1516457820000, 0.0026578, 0.0026578, 0.0026578, 0.0026578, 7.95852635], [1516457880000, 0.0026578, 0.0026578, 0.0026578, 0.0026578, 64.61964452], [1516457940000, 0.0026578, 0.0026578, 0.0026578, 0.0026578, 20.40213269], [1516458000000, 0.0026578, 0.0026578, 0.0026578, 0.0026578, 11.28753102], [1516458060000, 0.0026578, 0.0026578, 0.0026578, 0.0026578, 6.3994605], [1516458120000, 0.0026578, 0.0026578, 0.00264521, 0.002655, 48.26454395], [1516458180000, 0.00265499, 0.002655, 0.00264522, 0.00264522, 32.93741085], [1516458240000, 0.0026501, 0.00265372, 0.00265, 0.00265372, 1.71139288], [1516458300000, 0.00265, 0.0026501, 0.00264521, 0.00264521, 62.71688172], [1516458360000, 0.00264521, 0.00264521, 0.00264521, 0.00264521, 22.04522551], [1516458420000, 0.00265, 0.00265, 0.00265, 0.00265, 6.7416094], [1516458480000, 0.00265, 0.00265, 0.00265, 0.00265, 14.90346626], [1516458540000, 0.00265, 0.00265, 0.00265, 0.00265, 48.37285845], [1516458600000, 0.00265, 0.00265, 0.00265, 0.00265, 15.58037735], [1516458660000, 0.0026466, 0.00265, 0.00264522, 0.00264522, 53.19603717], [1516458720000, 0.00265, 0.00265, 0.00265, 0.00265, 2.81118838], [1516458780000, 0.00265, 0.00265, 0.00264522, 0.00264522, 13.66201879], [1516458840000, 0.002648, 0.00265, 0.00264, 0.00265, 833.48487058], [1516458900000, 0.00264, 0.00265, 0.00264, 0.00265, 130.62950332], [1516458960000, 0.00265, 0.00265, 0.00265, 0.00265, 0.96265902], [1516459020000, 0.00265, 0.00265, 0.00265, 0.00265, 17.476974], [1516459080000, 0.00264522, 0.00264999, 0.00264, 0.00264, 27.02331933], [1516459140000, 0.00264, 0.002644, 0.00264, 0.002644, 133.73039094], [1516459200000, 0.00264999, 0.00265, 0.00264999, 0.00264999, 270.15963001], [1516459260000, 0.00264999, 0.00264999, 0.00264999, 0.00264999, 2.70704454], [1516459320000, 0.00264999, 0.00265, 0.00264, 0.00265, 119.03888751], [1516459380000, 0.00264, 0.00265, 0.00263743, 0.00264999, 105.28400577], [1516459440000, 0.00264999, 0.00264999, 0.00264999, 0.00264999, 30.0], [1516459500000, 0.00264999, 0.00265, 0.002645, 0.002645, 160.3032699], [1516459560000, 0.002645, 0.00264997, 0.00263675, 0.00263721, 715.36917713], [1516459620000, 0.00263721, 0.00263721, 0.00263721, 0.00263721, 771.95415951], [1516459680000, 0.00263721, 0.00263721, 0.0026372, 0.00263721, 26.47873258], [1516459740000, 0.00264, 0.002645, 0.00263111, 0.00263698, 201.11280178], [1516459800000, 0.00264499, 0.00264997, 0.00263722, 0.00263722, 219.79195319], [1516459860000, 0.00264997, 0.00265, 0.002645, 0.002645, 44.92695214], [1516459920000, 0.002645, 0.00265, 0.00263723, 0.002645, 336.51567223], [1516459980000, 0.002645, 0.00265779, 0.00264499, 0.00265755, 1329.52826568], [1516460040000, 0.00264958, 0.00265742, 0.00264958, 0.00264958, 109.09386363], [1516460100000, 0.00264958, 0.0026578, 0.00264849, 0.00264849, 568.70762179], [1516460160000, 0.00264849, 0.00265778, 0.00264849, 0.00265774, 361.85352072], [1516460220000, 0.0026486, 0.00265777, 0.0026486, 0.0026577, 82.25936668], [1516460280000, 0.0026486, 0.00265778, 0.0026486, 0.00265778, 202.30304042], [1516460340000, 0.00265778, 0.00267169, 0.00265778, 0.00267169, 105.58189502], [1516460400000, 0.00267169, 0.00267999, 0.00266101, 0.00267172, 846.83136139], [1516460460000, 0.00267999, 0.00270329, 0.00267997, 0.00269, 2572.60003535], [1516460520000, 0.00269, 0.00269992, 0.00267895, 0.00269001, 643.94036071], [1516460580000, 0.00267896, 0.002699, 0.00267896, 0.00269001, 543.57317612], [1516460640000, 0.00269001, 0.00269001, 0.00267906, 0.00267906, 153.55412752], [1516460700000, 0.00267907, 0.00269699, 0.00267896, 0.0026795, 76.04798244], [1516460760000, 0.00267908, 0.00267946, 0.00267907, 0.00267946, 29.56], [1516460820000, 0.00267908, 0.002693, 0.00267908, 0.0026818, 19.96151441], [1516460880000, 0.00269299, 0.002693, 0.00267896, 0.0026818, 1376.97959645], [1516460940000, 0.0026818, 0.0026818, 0.00267894, 0.0026818, 554.61652789], [1516461000000, 0.0026818, 0.00269571, 0.0026818, 0.00269571, 11.82476453], [1516461060000, 0.0026957, 0.00269571, 0.00268183, 0.0026957, 136.17101388], [1516461120000, 0.00269569, 0.0026957, 0.00269569, 0.00269569, 97.44145453], [1516461180000, 0.00268183, 0.00268183, 0.00268183, 0.00268183, 0.2], [1516461240000, 0.00269569, 0.00269571, 0.00269568, 0.00269569, 288.94588839], [1516461300000, 0.00269569, 0.002697, 0.002682, 0.002697, 507.11905322], [1516461360000, 0.00269569, 0.00270288, 0.00268205, 0.00270288, 418.96435837], [1516461420000, 0.00270287, 0.0027064, 0.00268206, 0.00269578, 1004.94310151], [1516461480000, 0.00270284, 0.00271, 0.00269578, 0.00271, 1472.56453382], [1516461540000, 0.00270998, 0.00273, 0.00270637, 0.00272499, 3213.66111193], [1516461600000, 0.00272499, 0.00273564, 0.00271209, 0.00271211, 5094.73535707], [1516461660000, 0.00272042, 0.0027399, 0.00271209, 0.002734, 1747.4661693], [1516461720000, 0.00273125, 0.00274, 0.00271804, 0.00273999, 242.90551397], [1516461780000, 0.002734, 0.00274392, 0.00271901, 0.00272033, 649.53550163], [1516461840000, 0.00273999, 0.002749, 0.00272064, 0.00274898, 627.16099599], [1516461900000, 0.00274899, 0.00275718, 0.00273152, 0.00273153, 368.06856721], [1516461960000, 0.00273199, 0.00275718, 0.00273158, 0.00273464, 521.83960866], [1516462020000, 0.00273501, 0.00274946, 0.0027348, 0.00274899, 137.51581627], [1516462080000, 0.00273486, 0.00274945, 0.0027348, 0.00273486, 624.10688346], [1516462140000, 0.0027348, 0.00273759, 0.00273451, 0.00273486, 96.2829395], [1516462200000, 0.00273486, 0.00274498, 0.00272301, 0.00273, 705.49248464], [1516462260000, 0.00272301, 0.00272999, 0.00271, 0.00271, 395.15634994], [1516462320000, 0.00271, 0.00271252, 0.00269301, 0.00270233, 648.19983596], [1516462380000, 0.00269303, 0.00270331, 0.00269303, 0.00270233, 312.7274984], [1516462440000, 0.00270331, 0.00270741, 0.0027, 0.00270233, 296.46489808], [1516462500000, 0.00270739, 0.00270739, 0.00270233, 0.00270736, 158.04082022], [1516462560000, 0.0027, 0.00270735, 0.00269302, 0.00269302, 314.11652626], [1516462620000, 0.00269302, 0.00269302, 0.0026909, 0.00269301, 124.16185118], [1516462680000, 0.002692, 0.00269301, 0.00268201, 0.00269199, 480.60944106], [1516462740000, 0.00268201, 0.00269199, 0.00267028, 0.00267229, 205.74827338], [1516462800000, 0.00267229, 0.00268991, 0.00267229, 0.00267979, 75.30018812], [1516462860000, 0.00267979, 0.00268967, 0.00267979, 0.00268167, 80.91635262], [1516462920000, 0.00268167, 0.00268749, 0.00268167, 0.00268168, 27.01039448], [1516462980000, 0.00268747, 0.00268747, 0.002684, 0.002684, 5.40387253], [1516463040000, 0.002684, 0.00268747, 0.002684, 0.00268747, 110.04713314], [1516463100000, 0.00268747, 0.00268747, 0.00268401, 0.00268401, 33.91763951], [1516463160000, 0.00268746, 0.00268746, 0.00268401, 0.00268401, 0.82100464], [1516463220000, 0.002685, 0.00268747, 0.002685, 0.00268746, 10.87247695], [1516463280000, 0.00268747, 0.002693, 0.00268747, 0.00268748, 685.27631908], [1516463340000, 0.00268749, 0.002693, 0.00268749, 0.002693, 89.30856583], [1516463400000, 0.002694, 0.00270575, 0.00269111, 0.00269111, 143.90030409], [1516463460000, 0.00269111, 0.00269111, 0.0026875, 0.0026875, 163.36415464], [1516463520000, 0.00268751, 0.00268751, 0.00268749, 0.0026875, 122.04728068], [1516463580000, 0.0026875, 0.00269111, 0.0026875, 0.00269111, 39.72552955], [1516463640000, 0.00269111, 0.00269111, 0.00269111, 0.00269111, 207.16918167], [1516463700000, 0.00269299, 0.00270739, 0.00269299, 0.00270739, 65.97174648], [1516463760000, 0.00270739, 0.002713, 0.00269413, 0.0027055, 320.98722631], [1516463820000, 0.0027129, 0.00272289, 0.0027055, 0.00271997, 550.55898482], [1516463880000, 0.0027015, 0.0027129, 0.0027, 0.00270122, 52.71864082], [1516463940000, 0.00270094, 0.00270122, 0.0027, 0.00270122, 78.0669555], [1516464000000, 0.00270899, 0.002709, 0.002703, 0.002709, 17.77188881], [1516464060000, 0.002703, 0.002703, 0.0027, 0.00270122, 107.8087012], [1516464120000, 0.00270122, 0.00271471, 0.00270122, 0.00271471, 883.16902094], [1516464180000, 0.00271462, 0.00271462, 0.00270122, 0.00270122, 392.71142589], [1516464240000, 0.00270001, 0.00270001, 0.00269111, 0.00270001, 44.26947176], [1516464300000, 0.00270001, 0.00270122, 0.00270001, 0.00270001, 105.03936733], [1516464360000, 0.002701, 0.002701, 0.002701, 0.002701, 3.55873899], [1516464420000, 0.00270099, 0.00270099, 0.002695, 0.00270099, 506.87026574], [1516464480000, 0.002701, 0.002701, 0.00269111, 0.00269112, 166.69820058], [1516464540000, 0.002701, 0.002701, 0.00269112, 0.00269112, 175.18452449], [1516464600000, 0.00269112, 0.00269112, 0.00268752, 0.00268752, 171.91604941], [1516464660000, 0.00269111, 0.00269111, 0.002685, 0.002685, 169.88784914], [1516464720000, 0.002685, 0.0026911, 0.002685, 0.0026911, 54.11908658], [1516464780000, 0.0026911, 0.0026911, 0.0026911, 0.0026911, 31.7780214], [1516464840000, 0.0026911, 0.0026911, 0.00269109, 0.0026911, 8.93621694], [1516464900000, 0.0026911, 0.0026911, 0.00268501, 0.0026911, 12.03272455], [1516464960000, 0.00269109, 0.00269112, 0.00269109, 0.00269111, 381.66655768], [1516465020000, 0.00269111, 0.00269111, 0.0026911, 0.0026911, 172.15043959], [1516465080000, 0.0026911, 0.00269111, 0.0026911, 0.00269111, 199.90327335], [1516465140000, 0.0026911, 0.00269111, 0.0026911, 0.00269111, 115.32812596], [1516465200000, 0.0026911, 0.00269111, 0.00268, 0.00269111, 28.79658393], [1516465260000, 0.00269111, 0.00269111, 0.00269111, 0.00269111, 17.79247781], [1516465320000, 0.00269111, 0.00270099, 0.00268022, 0.00268022, 39.68319391], [1516465380000, 0.00268023, 0.00268023, 0.00268023, 0.00268023, 5.36849189], [1516465440000, 0.002701, 0.002701, 0.00267979, 0.002701, 891.19926982], [1516465500000, 0.00268024, 0.0027, 0.00268024, 0.00268025, 11.37534265], [1516465560000, 0.00268024, 0.00269991, 0.00268024, 0.00269991, 20.29689225], [1516465620000, 0.00269991, 0.00269991, 0.00268501, 0.00268501, 9.57797686], [1516465680000, 0.00268504, 0.00268511, 0.00268503, 0.00268511, 38.33325315], [1516465740000, 0.0026999, 0.0027, 0.00268528, 0.00268528, 381.86698596], [1516465800000, 0.0026853, 0.0027, 0.0026853, 0.0027, 208.0903095], [1516465860000, 0.0026999, 0.00270122, 0.00268552, 0.00268552, 49.89599856], [1516465920000, 0.0026999, 0.00270111, 0.00268556, 0.00270111, 318.170161], [1516465980000, 0.00270111, 0.00270737, 0.00270111, 0.00270737, 99.32191659], [1516466040000, 0.00270377, 0.00271111, 0.00270377, 0.00271111, 481.41271299], [1516466100000, 0.0027111, 0.00272222, 0.00271053, 0.00272222, 765.36143152], [1516466160000, 0.00272222, 0.00276346, 0.00271113, 0.00272994, 2482.10848591], [1516466220000, 0.00272994, 0.00275794, 0.002712, 0.00272996, 269.81168947], [1516466280000, 0.00272996, 0.00274982, 0.00272996, 0.002745, 19.30846736], [1516466340000, 0.00274499, 0.002745, 0.00272994, 0.002731, 93.96633374], [1516466400000, 0.00273752, 0.00274444, 0.00273752, 0.00274444, 15.33895839], [1516466460000, 0.00274442, 0.00274444, 0.00272994, 0.00273101, 81.67323647], [1516466520000, 0.00272994, 0.00273101, 0.00272994, 0.00272994, 67.83087985], [1516466580000, 0.00273101, 0.00273101, 0.00272994, 0.00273, 210.02312824], [1516466640000, 0.00272994, 0.00272999, 0.00271282, 0.00272999, 257.53997278], [1516466700000, 0.00272999, 0.00272999, 0.00271281, 0.00271281, 17.82105845], [1516466760000, 0.00271281, 0.00271288, 0.00271111, 0.00271111, 202.37041282], [1516466820000, 0.00272971, 0.00273, 0.00271111, 0.00271112, 2039.25175427], [1516466880000, 0.00271111, 0.00271111, 0.00271111, 0.00271111, 166.38798952], [1516466940000, 0.00271111, 0.00272955, 0.00271111, 0.00272955, 11.58820356], [1516467000000, 0.0027295, 0.00273, 0.0027295, 0.00272991, 1850.93964431], [1516467060000, 0.00272996, 0.00272998, 0.00272996, 0.00272998, 115.5098], [1516467120000, 0.0027113, 0.00272998, 0.0027113, 0.00272998, 55.07112336], [1516467180000, 0.00272995, 0.00274384, 0.00271157, 0.00274381, 278.37918796], [1516467240000, 0.00271215, 0.002741, 0.00271215, 0.002741, 139.93254953], [1516467300000, 0.00271358, 0.002741, 0.00271358, 0.002741, 86.04090147], [1516467360000, 0.00274076, 0.002741, 0.00273999, 0.00274, 61.4408079], [1516467420000, 0.00273752, 0.00273752, 0.00271608, 0.00271609, 23.92921108], [1516467480000, 0.00271615, 0.00271616, 0.00271615, 0.00271615, 46.67462885], [1516467540000, 0.0027165, 0.0027165, 0.00271425, 0.00271614, 1298.41775876], [1516467600000, 0.00271615, 0.00271615, 0.00271425, 0.00271425, 153.1412742], [1516467660000, 0.00271425, 0.002725, 0.00271133, 0.00271133, 227.67503708], [1516467720000, 0.00271133, 0.00272996, 0.00271052, 0.00272, 25.87121821], [1516467780000, 0.00272, 0.00273352, 0.00271052, 0.00272, 62.78833964], [1516467840000, 0.00272, 0.00272955, 0.00271052, 0.00272, 29.02637311], [1516467900000, 0.00272, 0.00272, 0.00272, 0.00272, 15.6390123], [1516467960000, 0.00271053, 0.00271999, 0.00271053, 0.00271999, 507.60759338], [1516468020000, 0.00271054, 0.002718, 0.00270737, 0.002718, 329.25868136], [1516468080000, 0.00270737, 0.00271, 0.00270737, 0.00271, 9.76845937], [1516468140000, 0.00271, 0.00271997, 0.00270112, 0.00271997, 589.95529805], [1516468200000, 0.00270111, 0.00270111, 0.0027, 0.00270111, 70.46538281], [1516468260000, 0.00271991, 0.00271991, 0.0027, 0.0027198, 275.1703391], [1516468320000, 0.00271962, 0.00271963, 0.0027, 0.0027, 54.07950024], [1516468380000, 0.0027, 0.002719, 0.0027, 0.00271899, 264.36003851], [1516468440000, 0.00271899, 0.00271981, 0.00271899, 0.00271981, 180.69353784], [1516468500000, 0.00271988, 0.0027199, 0.00271981, 0.0027199, 301.1025366], [1516468560000, 0.00271981, 0.0027429, 0.00270116, 0.00270116, 1723.82187931], [1516468620000, 0.00272226, 0.00273593, 0.0027176, 0.002718, 118.55250597], [1516468680000, 0.00272259, 0.00273593, 0.002718, 0.0027359, 384.7498046], [1516468740000, 0.00273588, 0.00273588, 0.00272259, 0.00273586, 566.95162028], [1516468800000, 0.00273586, 0.00273586, 0.00271812, 0.00272794, 644.3185324], [1516468860000, 0.00271812, 0.00272299, 0.00271812, 0.00271812, 185.03515504], [1516468920000, 0.002723, 0.00273571, 0.00271812, 0.00271812, 653.01904344], [1516468980000, 0.00273486, 0.00273486, 0.00271812, 0.00271812, 213.56569565], [1516469040000, 0.00272999, 0.00272999, 0.00271812, 0.00272892, 80.3287533], [1516469100000, 0.00271813, 0.00271813, 0.00271812, 0.00271812, 117.13789182], [1516469160000, 0.00272892, 0.00272892, 0.002727, 0.00272797, 270.56796231], [1516469220000, 0.002727, 0.002727, 0.002726, 0.002726, 15.4005893], [1516469280000, 0.00272598, 0.00272598, 0.00271951, 0.00272498, 46.95839221], [1516469340000, 0.00272498, 0.00272505, 0.00271951, 0.00271951, 258.07018822], [1516469400000, 0.00271951, 0.002727, 0.00271951, 0.002724, 1986.3272225], [1516469460000, 0.00271951, 0.002727, 0.00271951, 0.002727, 207.75983411], [1516469520000, 0.00271976, 0.002727, 0.00271951, 0.00272699, 143.38314299], [1516469580000, 0.00272699, 0.00272699, 0.00271951, 0.00271953, 263.16116704], [1516469640000, 0.00271953, 0.00272695, 0.00271953, 0.00272694, 193.46468212], [1516469700000, 0.00271976, 0.00272699, 0.00271976, 0.00272699, 237.7869809], [1516469760000, 0.00272699, 0.002727, 0.00272699, 0.002727, 811.1210718], [1516469820000, 0.00272699, 0.002727, 0.00272699, 0.00272699, 41.23999274], [1516469880000, 0.00272699, 0.00272699, 0.00272695, 0.00272695, 53.90001447], [1516469940000, 0.00272698, 0.00272699, 0.00272695, 0.00272699, 240.87372917], [1516470000000, 0.00272697, 0.002727, 0.00272695, 0.00272699, 451.29312833], [1516470060000, 0.00272699, 0.00272699, 0.00272696, 0.00272699, 16.08421025], [1516470120000, 0.00272699, 0.002727, 0.00272699, 0.002727, 414.35207004], [1516470180000, 0.002727, 0.00272892, 0.00272699, 0.00272892, 1638.28907217], [1516470240000, 0.00272999, 0.00274, 0.00272999, 0.00273999, 256.78714342], [1516470300000, 0.00273999, 0.00274, 0.00273, 0.00273997, 294.64892879], [1516470360000, 0.00273001, 0.00273996, 0.00272999, 0.00272999, 224.51533622], [1516470420000, 0.00273, 0.00273994, 0.00272699, 0.00272999, 949.78511184], [1516470480000, 0.00272699, 0.00273552, 0.00272699, 0.00273552, 53.73574529], [1516470540000, 0.00273549, 0.00273549, 0.0027301, 0.00273547, 188.48115466], [1516470600000, 0.00273547, 0.00273909, 0.0027301, 0.00273547, 1766.51375556], [1516470660000, 0.00273547, 0.00273547, 0.00273544, 0.00273544, 265.69950671], [1516470720000, 0.00273545, 0.00273986, 0.0027301, 0.00273015, 751.42081815], [1516470780000, 0.00273015, 0.00273986, 0.00273011, 0.00273984, 243.20267361], [1516470840000, 0.00273013, 0.00273548, 0.00273012, 0.00273013, 12.90609182], [1516470900000, 0.00273944, 0.00273944, 0.00273013, 0.00273013, 171.51343659], [1516470960000, 0.0027389, 0.00273987, 0.00273013, 0.00273847, 35.17463414], [1516471020000, 0.00273849, 0.00273849, 0.0027305, 0.00273492, 63.08447903], [1516471080000, 0.00273492, 0.00273492, 0.00273011, 0.00273011, 504.79483008], [1516471140000, 0.00273017, 0.00273846, 0.0027301, 0.0027301, 272.61899227], [1516471200000, 0.00272699, 0.00272998, 0.00272699, 0.00272998, 135.39214282], [1516471260000, 0.00272998, 0.00272998, 0.00272699, 0.00272699, 221.19547569], [1516471320000, 0.00272699, 0.00272998, 0.00272696, 0.002727, 87.36587686], [1516471380000, 0.00272998, 0.00273, 0.002727, 0.002727, 361.45795941], [1516471440000, 0.002727, 0.00272997, 0.002727, 0.00272997, 91.2596239], [1516471500000, 0.002727, 0.00272997, 0.002727, 0.00272997, 49.12592208], [1516471560000, 0.00272997, 0.00272997, 0.0027275, 0.0027275, 87.44453383], [1516471620000, 0.0027275, 0.00272998, 0.002727, 0.002727, 249.83188987], [1516471680000, 0.002727, 0.00272997, 0.002727, 0.00272997, 421.41895981], [1516471740000, 0.00272997, 0.00273, 0.00272997, 0.00273, 170.07739354], [1516471800000, 0.00273, 0.00273, 0.00272997, 0.00273, 210.56818418], [1516471860000, 0.00272997, 0.00273015, 0.00272997, 0.00273015, 63.94491516], [1516471920000, 0.00273784, 0.00273889, 0.00273784, 0.00273889, 329.23212898], [1516471980000, 0.00273889, 0.00273938, 0.00273889, 0.00273938, 176.50754759], [1516472040000, 0.00273938, 0.00273938, 0.00273035, 0.00273035, 20.41075866], [1516472100000, 0.00273889, 0.00273938, 0.00273015, 0.00273015, 281.85312558], [1516472160000, 0.00273015, 0.00273015, 0.00273015, 0.00273015, 6.96805227], [1516472220000, 0.00273015, 0.00273015, 0.00273, 0.00273, 48.08462649], [1516472280000, 0.00273, 0.00273, 0.00271977, 0.00272479, 719.14996133], [1516472340000, 0.00272998, 0.00273, 0.00272998, 0.00273, 60.53062019], [1516472400000, 0.00272996, 0.00272996, 0.00272996, 0.00272996, 10.32572418], [1516472460000, 0.00272996, 0.00272996, 0.00272996, 0.00272996, 11.83402378], [1516472520000, 0.00272996, 0.00272996, 0.00272994, 0.00272994, 23.48093002], [1516472580000, 0.00272993, 0.00272994, 0.0027195, 0.00272993, 88.9359799], [1516472640000, 0.00272993, 0.00272994, 0.0027195, 0.0027195, 26.32643506], [1516472700000, 0.0027195, 0.00272988, 0.0027195, 0.0027195, 197.22566896], [1516472760000, 0.00272, 0.00272947, 0.00271832, 0.00272947, 121.70003259], [1516472820000, 0.0027195, 0.00272917, 0.0027195, 0.00272904, 221.37606973], [1516472880000, 0.0027195, 0.0027195, 0.00271812, 0.0027195, 350.99978698], [1516472940000, 0.0027195, 0.0027195, 0.002718, 0.002718, 163.11763288], [1516473000000, 0.0027181, 0.0027185, 0.0027181, 0.0027185, 192.14067481], [1516473060000, 0.0027185, 0.00272, 0.0027185, 0.0027195, 490.75806236], [1516473120000, 0.00272882, 0.00272882, 0.0027195, 0.00272882, 77.44531748], [1516473180000, 0.0027197, 0.0027285, 0.0027197, 0.0027285, 3.40537559], [1516473240000, 0.00272874, 0.00272874, 0.0027195, 0.0027195, 32.68733268], [1516473300000, 0.0027195, 0.00272849, 0.0027195, 0.00272845, 135.87800182], [1516473360000, 0.00272844, 0.00272844, 0.0027195, 0.0027195, 926.73259705], [1516473420000, 0.0027284, 0.0027284, 0.0027284, 0.0027284, 16.19223682], [1516473480000, 0.00272829, 0.0027283, 0.0027195, 0.00272829, 397.16343491], [1516473540000, 0.0027195, 0.00272822, 0.0027195, 0.00272822, 18.39375022], [1516473600000, 0.0027282, 0.0027282, 0.00271949, 0.00271949, 292.98516375], [1516473660000, 0.0027195, 0.0027195, 0.0027195, 0.0027195, 327.31543158], [1516473720000, 0.0027195, 0.00272811, 0.00271116, 0.00271116, 269.69653097], [1516473780000, 0.00271116, 0.00272808, 0.00271116, 0.00272807, 28.47770907], [1516473840000, 0.00272797, 0.00272797, 0.0027195, 0.0027195, 19.83392804], [1516473900000, 0.00272797, 0.00272797, 0.0027195, 0.0027195, 66.59199219], [1516473960000, 0.0027195, 0.00272796, 0.0027195, 0.00272796, 247.43012572], [1516474020000, 0.00272797, 0.00272987, 0.00272796, 0.00272987, 232.61191291], [1516474080000, 0.00272987, 0.00273195, 0.00272987, 0.00273, 168.87390985], [1516474140000, 0.00273, 0.00273, 0.00273, 0.00273, 285.99400692], [1516474200000, 0.00272999, 0.00273, 0.00272999, 0.00273, 568.34367718], [1516474260000, 0.00273, 0.00273986, 0.00272999, 0.0027395, 722.42088396], [1516474320000, 0.00273951, 0.00273998, 0.0027395, 0.00273986, 229.82558817], [1516474380000, 0.0027395, 0.0027499, 0.0027395, 0.0027499, 53.82741904], [1516474440000, 0.00274, 0.00274989, 0.00274, 0.00274002, 112.51932303], [1516474500000, 0.00274002, 0.00274799, 0.00274001, 0.00274002, 60.78976913], [1516474560000, 0.00274002, 0.00274989, 0.00274002, 0.0027406, 1328.00395019], [1516474620000, 0.0027406, 0.00274062, 0.0027406, 0.0027406, 189.73238573], [1516474680000, 0.0027406, 0.00274399, 0.00274002, 0.00274003, 542.47202093], [1516474740000, 0.00274003, 0.00274003, 0.0027395, 0.0027395, 33.07286836], [1516474800000, 0.00273, 0.0027395, 0.00273, 0.00273001, 81.56882802], [1516474860000, 0.0027395, 0.0027395, 0.0027395, 0.0027395, 21.76706605], [1516474920000, 0.0027395, 0.0027395, 0.00273001, 0.00273001, 229.34717061], [1516474980000, 0.00273002, 0.00273002, 0.00273001, 0.00273001, 35.14410808], [1516475040000, 0.00273001, 0.00273001, 0.00273001, 0.00273001, 183.263771], [1516475100000, 0.00273101, 0.00274983, 0.00273101, 0.00274983, 43.69543018], [1516475160000, 0.00274974, 0.00274974, 0.00274937, 0.00274937, 40.00380324], [1516475220000, 0.00274, 0.00274903, 0.00274, 0.00274, 61.05090684], [1516475280000, 0.00274901, 0.00274901, 0.00274, 0.00274, 86.35809853], [1516475340000, 0.00274, 0.00274902, 0.00274, 0.00274, 156.68022756], [1516475400000, 0.002749, 0.00274903, 0.00271952, 0.00274902, 126.43171332], [1516475460000, 0.00274002, 0.00274803, 0.00274002, 0.00274002, 194.13659879], [1516475520000, 0.00274002, 0.00274901, 0.00274001, 0.00274897, 76.25953092], [1516475580000, 0.00274002, 0.002746, 0.00274002, 0.002746, 205.3959457], [1516475640000, 0.002746, 0.00274902, 0.002746, 0.00274902, 712.28211904], [1516475700000, 0.00274902, 0.00274993, 0.00274902, 0.00274987, 165.60690878], [1516475760000, 0.00274987, 0.00275, 0.002746, 0.002746, 1532.40844853], [1516475820000, 0.002746, 0.002746, 0.002746, 0.002746, 435.48116731], [1516475880000, 0.002746, 0.002746, 0.00274001, 0.002742, 240.90775949], [1516475940000, 0.002742, 0.002746, 0.002742, 0.00274599, 29.08405688], [1516476000000, 0.00274599, 0.002746, 0.00274599, 0.002746, 220.79484405], [1516476060000, 0.002746, 0.002746, 0.002742, 0.002742, 206.02629822], [1516476120000, 0.002742, 0.002746, 0.00272163, 0.002746, 151.15585727], [1516476180000, 0.00272177, 0.0027218, 0.00272176, 0.0027218, 7.47915186], [1516476240000, 0.00272257, 0.0027226, 0.00272257, 0.0027226, 7.90852491], [1516476300000, 0.00274598, 0.002746, 0.00272183, 0.002746, 840.35222823], [1516476360000, 0.002746, 0.002746, 0.00272212, 0.00274596, 35.15478155], [1516476420000, 0.00274499, 0.002745, 0.00272351, 0.00274499, 116.59085697], [1516476480000, 0.002725, 0.00274499, 0.002725, 0.00272501, 129.89609197], [1516476540000, 0.00274499, 0.002745, 0.00272502, 0.002745, 33.63296903], [1516476600000, 0.00274499, 0.002745, 0.00272502, 0.002745, 85.50914319], [1516476660000, 0.002745, 0.00274595, 0.0027251, 0.00274499, 169.5650946], [1516476720000, 0.00274597, 0.00274597, 0.00274597, 0.00274597, 5.0], [1516476780000, 0.00274595, 0.00274595, 0.00274595, 0.00274595, 2.54281729], [1516476840000, 0.00274595, 0.00274595, 0.00272593, 0.00272593, 41.34573977], [1516476900000, 0.00274, 0.00274, 0.002726, 0.00274, 21.20509216], [1516476960000, 0.00274, 0.00274, 0.00272555, 0.00274, 33.60866067], [1516477020000, 0.00272601, 0.00274, 0.00272526, 0.00272555, 60.66660653], [1516477080000, 0.00274, 0.00274, 0.00272555, 0.00272556, 34.5671158], [1516477140000, 0.00274, 0.00274, 0.00273, 0.00273999, 58.86134233], [1516477200000, 0.00273999, 0.00274, 0.00273999, 0.00274, 68.6380132], [1516477260000, 0.00274, 0.00274, 0.00273, 0.00273, 532.51269916], [1516477320000, 0.00273, 0.00273, 0.00273, 0.00273, 17.32230978], [1516477380000, 0.00273998, 0.00274, 0.00273998, 0.00273999, 669.63097686], [1516477440000, 0.00274, 0.00274, 0.00272601, 0.00272601, 48.49392875], [1516477500000, 0.00272601, 0.00273, 0.00272601, 0.00273, 113.89045091], [1516477560000, 0.00273, 0.00273, 0.00273, 0.00273, 43.78810154], [1516477620000, 0.00272999, 0.00273, 0.00272999, 0.00273, 7.15475949], [1516477680000, 0.00273, 0.00273, 0.00272601, 0.00272601, 114.34458705], [1516477740000, 0.00272601, 0.00272601, 0.00272555, 0.00272601, 392.52883217], [1516477800000, 0.00272601, 0.00274552, 0.00272555, 0.00272555, 72.01065716], [1516477860000, 0.00272554, 0.00272555, 0.00272502, 0.00272555, 39.07690787], [1516477920000, 0.00272555, 0.00272555, 0.00272555, 0.00272555, 43.0], [1516477980000, 0.00272555, 0.00272555, 0.00272555, 0.00272555, 97.63994284], [1516478040000, 0.00272555, 0.00272555, 0.0027255, 0.0027255, 17.62363519], [1516478100000, 0.0027255, 0.00272555, 0.0027255, 0.00272555, 106.72316535], [1516478160000, 0.00272555, 0.00272555, 0.00272551, 0.00272551, 46.60458072], [1516478220000, 0.0027255, 0.0027255, 0.00272502, 0.00272502, 161.37557723], [1516478280000, 0.00272502, 0.00272503, 0.00272502, 0.00272502, 187.58874596], [1516478340000, 0.00272502, 0.00272502, 0.00272502, 0.00272502, 226.47134906], [1516478400000, 0.00272502, 0.00272551, 0.00272502, 0.00272502, 100.94464413], [1516478460000, 0.00272505, 0.00272555, 0.002725, 0.002725, 340.65925745], [1516478520000, 0.002725, 0.00272555, 0.002725, 0.002725, 273.78724589], [1516478580000, 0.002725, 0.002725, 0.002725, 0.002725, 87.39711476], [1516478640000, 0.002725, 0.002725, 0.002725, 0.002725, 11.84248202], [1516478700000, 0.002725, 0.00272554, 0.002725, 0.00272554, 124.00162757], [1516478760000, 0.00272554, 0.00272554, 0.002725, 0.00272553, 76.17790893], [1516478820000, 0.002725, 0.00272502, 0.002725, 0.002725, 267.49539317], [1516478880000, 0.002725, 0.00272502, 0.00272166, 0.00272166, 187.896644], [1516478940000, 0.00272166, 0.00272551, 0.00271959, 0.00272166, 156.09355145], [1516479000000, 0.00272166, 0.00272166, 0.00272165, 0.00272166, 10.75521342], [1516479060000, 0.0027196, 0.0027196, 0.00271959, 0.00271959, 52.88029279], [1516479120000, 0.00271959, 0.00272166, 0.00271958, 0.00271958, 277.87025748], [1516479180000, 0.00271957, 0.00271957, 0.00271116, 0.00271116, 208.23157888], [1516479240000, 0.00271957, 0.00271957, 0.00271116, 0.00271116, 115.13255476], [1516479300000, 0.00271126, 0.00271958, 0.00271, 0.00271, 153.64880016], [1516479360000, 0.00271, 0.00271, 0.00271, 0.00271, 1.5], [1516479420000, 0.002719, 0.00272164, 0.00271001, 0.00271001, 188.66202593], [1516479480000, 0.00271001, 0.00272166, 0.00271, 0.00272166, 110.37306098], [1516479540000, 0.00272166, 0.00272166, 0.00271, 0.00272165, 65.1888703], [1516479600000, 0.00272165, 0.00272165, 0.00272165, 0.00272165, 5.21805936], [1516479660000, 0.00272165, 0.00272165, 0.00271012, 0.00271012, 11.44703396], [1516479780000, 0.00272164, 0.00272165, 0.0027107, 0.00272165, 14.72336335], [1516479840000, 0.00272165, 0.00272165, 0.00272165, 0.00272165, 22.48314008], [1516479900000, 0.00272165, 0.00272165, 0.00272165, 0.00272165, 40.0], [1516479960000, 0.0027107, 0.002721, 0.0027107, 0.002721, 10.96319776], [1516480020000, 0.0027108, 0.002721, 0.0027108, 0.00272099, 83.18160995], [1516480080000, 0.00272099, 0.002721, 0.00272099, 0.002721, 6.46306833], [1516480140000, 0.002721, 0.002721, 0.00272, 0.00272097, 795.93483252], [1516480200000, 0.002721, 0.00272165, 0.002721, 0.002721, 55.82161777], [1516480260000, 0.002721, 0.002721, 0.0027107, 0.0027107, 181.063903], [1516480320000, 0.00271066, 0.0027107, 0.00271066, 0.0027107, 35.0704316], [1516480380000, 0.0027107, 0.00271276, 0.0027101, 0.0027101, 262.94908265], [1516480440000, 0.00271066, 0.00272099, 0.00271066, 0.00272099, 21.1007627], [1516480500000, 0.00272099, 0.00272099, 0.00271099, 0.00271099, 86.56953116], [1516480560000, 0.00271099, 0.00271099, 0.00271, 0.00271099, 374.41375084], [1516480620000, 0.00271098, 0.00271098, 0.00271, 0.00271097, 14.57565825], [1516480680000, 0.00271097, 0.00271097, 0.00271, 0.00271097, 329.44875227], [1516480740000, 0.00271097, 0.002721, 0.00271, 0.002721, 750.87141807], [1516480800000, 0.00272095, 0.00272166, 0.00272095, 0.00272166, 77.83129483], [1516480860000, 0.00272166, 0.00272166, 0.00272166, 0.00272166, 202.56306218], [1516480920000, 0.00272552, 0.00272555, 0.00272552, 0.00272555, 48.23023342], [1516480980000, 0.00272552, 0.00272552, 0.00272552, 0.00272552, 29.76976658], [1516481040000, 0.00272552, 0.00273365, 0.00272552, 0.00273365, 249.49114081], [1516481100000, 0.00273365, 0.00273679, 0.00271001, 0.00273666, 292.98701169], [1516481160000, 0.00273666, 0.0027368, 0.00273666, 0.00273666, 529.96178204], [1516481220000, 0.00273666, 0.0027368, 0.00273666, 0.00273666, 234.31873884], [1516481280000, 0.00273666, 0.0027368, 0.00273666, 0.00273667, 611.91983155], [1516481340000, 0.00273667, 0.0027368, 0.00273666, 0.0027368, 27.62007481], [1516481400000, 0.00273666, 0.0027368, 0.00273666, 0.00273666, 233.80914288], [1516481460000, 0.0027368, 0.0027368, 0.00273666, 0.0027368, 442.12494854], [1516481520000, 0.00273666, 0.0027368, 0.00273666, 0.00273666, 192.36883034], [1516481580000, 0.0027368, 0.0027368, 0.00273365, 0.00273365, 350.41920369], [1516481640000, 0.0027368, 0.0027368, 0.0027368, 0.0027368, 505.10032235], [1516481700000, 0.00273365, 0.00273679, 0.00273365, 0.00273679, 37.81821875], [1516481760000, 0.00273679, 0.00273679, 0.00273365, 0.00273365, 11.30170246], [1516481880000, 0.00271158, 0.00273899, 0.00271158, 0.00273899, 463.80568157], [1516481940000, 0.00273365, 0.00273365, 0.00272, 0.00272, 11.48963203], [1516482000000, 0.00272, 0.00273882, 0.00271181, 0.00273365, 208.94066187], [1516482060000, 0.00273365, 0.00273365, 0.00273365, 0.00273365, 1.68691185], [1516482120000, 0.00271201, 0.00273165, 0.00271201, 0.00273165, 57.24122499], [1516482180000, 0.00273165, 0.00273165, 0.00271203, 0.00271203, 32.52511824], [1516482240000, 0.00271212, 0.00271212, 0.00271211, 0.00271211, 150.0], [1516482300000, 0.00273165, 0.00273165, 0.00273165, 0.00273165, 44.32356891], [1516482360000, 0.002732, 0.0027336, 0.00271216, 0.0027336, 184.34365645], [1516482420000, 0.0027336, 0.0027336, 0.00273351, 0.00273351, 40.19737623], [1516482480000, 0.00273351, 0.0027336, 0.00273, 0.00273351, 160.63140916], [1516482540000, 0.00273351, 0.00273351, 0.00271215, 0.00271215, 106.75291912], [1516482600000, 0.00271218, 0.0027336, 0.00271217, 0.0027336, 50.46235818], [1516482720000, 0.00273359, 0.00273359, 0.00273359, 0.00273359, 95.21745961], [1516482780000, 0.00273359, 0.00273359, 0.00273359, 0.00273359, 180.92407077], [1516482840000, 0.0027336, 0.00273365, 0.00273359, 0.00273359, 9.48106405], [1516482900000, 0.0027336, 0.00273365, 0.00271242, 0.00273365, 45.00400774], [1516482960000, 0.00273365, 0.00273797, 0.00273365, 0.00273797, 20.65010587], [1516483020000, 0.00273365, 0.00273365, 0.00271248, 0.00271248, 96.04738756], [1516483080000, 0.00273358, 0.00273359, 0.002717, 0.002717, 2.78431437], [1516483140000, 0.0027336, 0.00273999, 0.0027336, 0.00273999, 57.4223008], [1516483200000, 0.00273361, 0.00274, 0.00273361, 0.00273361, 15.44080262], [1516483260000, 0.00274, 0.00274, 0.00273361, 0.00273361, 7.00989312], [1516483320000, 0.00273361, 0.00273361, 0.00273361, 0.00273361, 5.34193529], [1516483380000, 0.00273361, 0.00273361, 0.00273361, 0.00273361, 14.16349012], [1516483440000, 0.00273361, 0.00274097, 0.00273361, 0.00273361, 13.75459047], [1516483500000, 0.00273362, 0.00273362, 0.00273362, 0.00273362, 1.65421615], [1516483560000, 0.002742, 0.00274487, 0.002742, 0.00274487, 194.21179414], [1516483620000, 0.00274487, 0.00274487, 0.00274486, 0.00274486, 82.70387523], [1516483680000, 0.00274487, 0.00274487, 0.00273526, 0.00274, 63.05900729], [1516483740000, 0.00274487, 0.00274489, 0.00274, 0.00274489, 41.39041515], [1516483800000, 0.00274487, 0.00274588, 0.00274487, 0.00274588, 216.34153161], [1516483860000, 0.00274487, 0.00274487, 0.00274001, 0.00274001, 288.25208041], [1516483920000, 0.00274487, 0.00274487, 0.00274487, 0.00274487, 14.48244866], [1516483980000, 0.002745, 0.002745, 0.002745, 0.002745, 50.9741327], [1516484040000, 0.002745, 0.00274588, 0.00274487, 0.00274587, 150.75999998], [1516484100000, 0.00274587, 0.0027459, 0.00274587, 0.0027459, 18.42030712], [1516484160000, 0.0027459, 0.00274595, 0.00274587, 0.00274587, 118.10896744], [1516484220000, 0.00274599, 0.00274599, 0.00274587, 0.00274599, 64.94811768], [1516484280000, 0.00274588, 0.00274598, 0.00274588, 0.00274597, 46.17876963], [1516484340000, 0.00274588, 0.00274596, 0.00274588, 0.00274596, 25.29333433], [1516484400000, 0.00274596, 0.00274599, 0.00274596, 0.00274597, 25.09417815], [1516484460000, 0.00274599, 0.002746, 0.00274597, 0.00274597, 211.18186768], [1516484520000, 0.002746, 0.002746, 0.00274597, 0.00274598, 103.87075941], [1516484580000, 0.002746, 0.002746, 0.00274598, 0.00274599, 663.60649397], [1516484640000, 0.00274599, 0.002746, 0.00274, 0.00274, 1010.93216275], [1516484700000, 0.00274, 0.00274, 0.0027227, 0.0027227, 585.82554137], [1516484760000, 0.00273999, 0.00273999, 0.0027227, 0.00272271, 174.8159412], [1516484820000, 0.00273992, 0.00273992, 0.00272271, 0.0027399, 483.61398336], [1516484880000, 0.00273988, 0.00274, 0.00273988, 0.00274, 503.18402761], [1516484940000, 0.00274, 0.00275, 0.00274, 0.00274, 1346.96909274], [1516485000000, 0.00274, 0.00274998, 0.00274, 0.00274, 45.58214606], [1516485060000, 0.00274, 0.00274, 0.00274, 0.00274, 2.32417839], [1516485120000, 0.00274001, 0.00274001, 0.00274001, 0.00274001, 30.0], [1516485180000, 0.00274002, 0.00274999, 0.00274002, 0.00274999, 37.337869], [1516485240000, 0.00274999, 0.00274999, 0.00274004, 0.00274004, 30.49324302], [1516485300000, 0.00274004, 0.00274007, 0.00274, 0.00274, 430.68682473], [1516485360000, 0.0027229, 0.0027229, 0.0027229, 0.0027229, 2.33631382], [1516485420000, 0.0027229, 0.00273999, 0.0027229, 0.00273387, 126.20417907], [1516485480000, 0.00273387, 0.00273387, 0.0027229, 0.0027229, 301.17620042], [1516485540000, 0.0027229, 0.00274007, 0.0027229, 0.002739, 75.63332876], [1516485600000, 0.002739, 0.002739, 0.00272275, 0.00272277, 17.28653089], [1516485660000, 0.00272277, 0.002739, 0.00272277, 0.002739, 33.62047219], [1516485720000, 0.002739, 0.00274007, 0.002739, 0.00274007, 96.62877701], [1516485780000, 0.002739, 0.002739, 0.002739, 0.002739, 16.18109593], [1516485840000, 0.00274006, 0.00274728, 0.00274006, 0.00274007, 16.09237464], [1516485900000, 0.00274007, 0.00274998, 0.002739, 0.00274898, 22.4324947], [1516485960000, 0.002739, 0.00274895, 0.002739, 0.00274895, 43.27692388], [1516486020000, 0.0027489, 0.00274895, 0.002739, 0.0027391, 324.66608982], [1516486080000, 0.00274895, 0.00274895, 0.00274895, 0.00274895, 18.78063653], [1516486140000, 0.00274, 0.00275, 0.00274, 0.00275, 33.69050044], [1516486200000, 0.00275, 0.00275, 0.00274, 0.00274, 125.14894806], [1516486260000, 0.00274997, 0.00274997, 0.00274997, 0.00274997, 0.24571028], [1516486320000, 0.00274997, 0.00275, 0.00274997, 0.00275, 71.29680085], [1516486380000, 0.00275, 0.00275, 0.00274999, 0.00274999, 15.31413309], [1516486440000, 0.00274999, 0.00274999, 0.002735, 0.002735, 126.1338876], [1516486500000, 0.002735, 0.002739, 0.002735, 0.002735, 13.73604121], [1516486560000, 0.00274989, 0.00274989, 0.002735, 0.00274987, 16.43295423], [1516486620000, 0.00274987, 0.00274988, 0.002735, 0.002735, 214.92756986], [1516486680000, 0.00274984, 0.00274984, 0.002735, 0.00273501, 20.35650749], [1516486740000, 0.00273501, 0.00274975, 0.00273501, 0.00273501, 215.96137909], [1516486800000, 0.00273501, 0.00273501, 0.002735, 0.00273501, 83.01975714], [1516486860000, 0.00273501, 0.00273501, 0.00273501, 0.00273501, 17.44663181], [1516486920000, 0.00273501, 0.00273501, 0.0027302, 0.0027302, 310.64568766], [1516486980000, 0.0027302, 0.0027302, 0.0027261, 0.0027261, 49.397334], [1516487040000, 0.0027261, 0.0027261, 0.00272577, 0.00272577, 303.38948762], [1516487100000, 0.00272577, 0.00272577, 0.00272277, 0.00272277, 35.84019286], [1516487160000, 0.00272277, 0.00272577, 0.00272277, 0.00272277, 133.94495994], [1516487220000, 0.00272277, 0.00272277, 0.00272276, 0.00272276, 6.05376992], [1516487280000, 0.00272275, 0.00272276, 0.00272275, 0.00272275, 100.93322316], [1516487340000, 0.0027227, 0.00272275, 0.0027227, 0.00272275, 110.65990912], [1516487400000, 0.0027227, 0.00272271, 0.0027227, 0.00272271, 42.44331047], [1516487460000, 0.00272275, 0.00272275, 0.00272274, 0.00272275, 230.72998731], [1516487520000, 0.00272275, 0.00272275, 0.0027227, 0.0027227, 259.08233621], [1516487580000, 0.0027227, 0.00272275, 0.0027227, 0.0027227, 68.22496161], [1516487640000, 0.0027227, 0.00272275, 0.0027227, 0.00272271, 17.44931613], [1516487700000, 0.00272271, 0.00272271, 0.0027227, 0.0027227, 26.94143847], [1516487760000, 0.00271999, 0.00272275, 0.00271999, 0.00272271, 196.24152655], [1516487820000, 0.00272271, 0.00272275, 0.00272271, 0.00272271, 100.44677452], [1516487880000, 0.00272001, 0.00272001, 0.002717, 0.002717, 87.63283348], [1516487940000, 0.0027227, 0.00272271, 0.0027227, 0.00272271, 167.88691567], [1516488000000, 0.00272275, 0.00272275, 0.00272271, 0.00272271, 341.48720319], [1516488060000, 0.00272271, 0.00272275, 0.00271215, 0.00271501, 269.56366696], [1516488120000, 0.00271301, 0.00271301, 0.00271215, 0.00271301, 17.20184611], [1516488180000, 0.002713, 0.00271501, 0.00271169, 0.00271501, 118.97411788], [1516488240000, 0.002712, 0.00271501, 0.00271001, 0.00271501, 66.64816091], [1516488300000, 0.002712, 0.00271501, 0.002712, 0.00271501, 40.46259064], [1516488360000, 0.00271501, 0.00271501, 0.00271, 0.00271, 48.48195383], [1516488420000, 0.00270999, 0.00271501, 0.00270999, 0.00271501, 19.71999939], [1516488480000, 0.00272276, 0.00273021, 0.00272276, 0.00273021, 4.23459353], [1516488540000, 0.00273021, 0.00273434, 0.00273021, 0.0027325, 110.33286477], [1516488600000, 0.00273021, 0.00274929, 0.00273021, 0.0027325, 227.18969692], [1516488660000, 0.0027325, 0.00274878, 0.00273055, 0.0027325, 7.37032151], [1516488720000, 0.0027325, 0.00274339, 0.00273055, 0.00274336, 13.14951881], [1516488780000, 0.00273055, 0.0027306, 0.00273055, 0.0027306, 0.80752962], [1516488840000, 0.0027306, 0.00274368, 0.00273021, 0.00273021, 244.86744297], [1516488900000, 0.00273065, 0.00274303, 0.00273065, 0.00274303, 20.30833992], [1516488960000, 0.0027308, 0.00274366, 0.0027306, 0.0027308, 25.47729636], [1516489020000, 0.00273081, 0.00273999, 0.00273081, 0.00273081, 7.7327899], [1516489080000, 0.00273081, 0.00273539, 0.00273081, 0.00273082, 15.39932393], [1516489140000, 0.00273082, 0.00273981, 0.0027306, 0.0027306, 171.3696438], [1516489200000, 0.0027306, 0.00273927, 0.00273021, 0.00273021, 129.28188228], [1516489260000, 0.00273021, 0.0027304, 0.00273021, 0.0027304, 79.34676585], [1516489320000, 0.0027304, 0.0027306, 0.00273021, 0.0027306, 51.71902201], [1516489380000, 0.00273021, 0.0027394, 0.00272145, 0.00273021, 28.75272312], [1516489440000, 0.00273944, 0.00273945, 0.00273943, 0.00273945, 306.91814205], [1516489500000, 0.00273943, 0.00273945, 0.0027189, 0.0027189, 395.92144506], [1516489560000, 0.00273944, 0.00273944, 0.00273944, 0.00273944, 106.82695174], [1516489620000, 0.00273899, 0.00273899, 0.00273899, 0.00273899, 0.18929582], [1516489680000, 0.00273899, 0.00273899, 0.00272964, 0.00272964, 43.72055558], [1516489740000, 0.00272964, 0.00272964, 0.00272964, 0.00272964, 14.84296531], [1516489800000, 0.002739, 0.00273945, 0.002739, 0.00273945, 98.99780375], [1516489860000, 0.00273945, 0.00273945, 0.002739, 0.00273945, 222.25458073], [1516489920000, 0.00273945, 0.00274983, 0.00272964, 0.00274983, 132.04179574], [1516490040000, 0.00272964, 0.00274981, 0.00272964, 0.00274981, 5.68903036], [1516490100000, 0.00274947, 0.00274947, 0.0027351, 0.00274943, 114.36195457], [1516490160000, 0.00273973, 0.00274943, 0.00273973, 0.00274938, 65.6575], [1516490220000, 0.00274936, 0.00274945, 0.0027351, 0.00273529, 262.99279203], [1516490280000, 0.00274937, 0.00274937, 0.00274937, 0.00274937, 23.45507655], [1516490340000, 0.00274936, 0.00274938, 0.00274374, 0.00274938, 138.84088495], [1516490400000, 0.00274938, 0.00274939, 0.00273531, 0.00274939, 400.14156316], [1516490460000, 0.00274939, 0.00274939, 0.00274939, 0.00274939, 10.99479794], [1516490580000, 0.00274938, 0.00274938, 0.00274938, 0.00274938, 0.90701938], [1516490640000, 0.00274938, 0.00274938, 0.00273532, 0.00274938, 251.79452012], [1516490700000, 0.00274938, 0.00274938, 0.00274938, 0.00274938, 100.70886552], [1516490760000, 0.00274938, 0.00274938, 0.00274, 0.00274, 3.36207547], [1516490820000, 0.00274, 0.00274001, 0.00274, 0.00274001, 0.80474305], [1516490880000, 0.00274937, 0.00274937, 0.00274001, 0.00274937, 6.43810528], [1516490940000, 0.00274937, 0.00274937, 0.00274, 0.00274, 275.40232599], [1516491000000, 0.00274937, 0.00274937, 0.00274, 0.00274, 2.80332643], [1516491060000, 0.00274, 0.0027401, 0.00274, 0.00274, 73.50698091], [1516491120000, 0.00274, 0.00274935, 0.00273557, 0.00273557, 88.63895158], [1516491180000, 0.0027401, 0.0027401, 0.00273557, 0.00273557, 125.70159769], [1516491240000, 0.0027401, 0.00274935, 0.00273532, 0.00273532, 106.0], [1516491300000, 0.00273532, 0.00273532, 0.00273532, 0.00273532, 7.59103803], [1516491360000, 0.00273532, 0.00273532, 0.00273532, 0.00273532, 38.19711503], [1516491420000, 0.00273529, 0.00273532, 0.00272964, 0.00273529, 359.50669829], [1516491480000, 0.00273529, 0.00273529, 0.00273529, 0.00273529, 3.6391], [1516491540000, 0.00273528, 0.00273948, 0.00273528, 0.00273948, 14.0319932], [1516491600000, 0.0027353, 0.0027353, 0.0027239, 0.00272965, 144.21614148], [1516491660000, 0.00273246, 0.00273519, 0.00272964, 0.00272965, 8.49837453], [1516491720000, 0.00274148, 0.00274148, 0.00274148, 0.00274148, 4.01672273], [1516491780000, 0.00272964, 0.00272965, 0.00272964, 0.00272965, 154.36203901], [1516491840000, 0.00272965, 0.00272965, 0.00272965, 0.00272965, 13.12446236], [1516491900000, 0.0027414, 0.00274936, 0.00274139, 0.00274936, 86.68164272], [1516491960000, 0.00272965, 0.00272965, 0.00272965, 0.00272965, 5.0], [1516492020000, 0.00274934, 0.00274935, 0.00272965, 0.00273, 54.86], [1516492080000, 0.002749, 0.002749, 0.002749, 0.002749, 0.61515641], [1516492140000, 0.00274799, 0.00274799, 0.00273273, 0.00273273, 48.50821472], [1516492200000, 0.00274791, 0.00274791, 0.002733, 0.002733, 136.35892804], [1516492260000, 0.002733, 0.00274099, 0.00272965, 0.00273298, 1126.70974568], [1516492320000, 0.00273299, 0.00274934, 0.0027296, 0.00273298, 348.24959743], [1516492380000, 0.00273623, 0.00274895, 0.0027296, 0.0027296, 11.41089995], [1516492440000, 0.0027296, 0.00274595, 0.0027296, 0.00274565, 46.58977929], [1516492500000, 0.00274559, 0.00274559, 0.00273999, 0.00273999, 395.39591918], [1516492560000, 0.00274, 0.00274005, 0.00274, 0.00274005, 548.15770216], [1516492620000, 0.00274558, 0.00274558, 0.00274557, 0.00274557, 342.16885612], [1516492680000, 0.00274557, 0.00274558, 0.00274557, 0.00274558, 505.72583389], [1516492740000, 0.00274558, 0.00275, 0.00274557, 0.00275, 1188.93681879], [1516492800000, 0.00275, 0.00275755, 0.00275, 0.00275755, 760.47006223], [1516492860000, 0.00275755, 0.00277347, 0.00274939, 0.0027494, 744.90009999], [1516492920000, 0.00276088, 0.00278851, 0.00274941, 0.00278851, 1222.58566422], [1516492980000, 0.00278852, 0.0028143, 0.00275009, 0.00281353, 5863.27293732], [1516493040000, 0.00281353, 0.002848, 0.00277788, 0.00283984, 16540.65438509], [1516493100000, 0.002839, 0.0029, 0.00283855, 0.00289744, 16471.19391728], [1516493160000, 0.00289743, 0.00293, 0.00285, 0.00285019, 10688.20279035], [1516493220000, 0.00285019, 0.00288399, 0.00282043, 0.00282055, 3199.67575696], [1516493280000, 0.00283046, 0.00284834, 0.00282055, 0.00284304, 1683.37370265], [1516493340000, 0.00284304, 0.00284817, 0.00284304, 0.00284407, 820.91035154], [1516493400000, 0.00284406, 0.00284407, 0.00281119, 0.00282408, 3320.48661123], [1516493460000, 0.00282408, 0.00284304, 0.00281161, 0.00281409, 1767.21863807], [1516493520000, 0.00281409, 0.002834, 0.00280281, 0.00281199, 946.78606174], [1516493580000, 0.00281199, 0.00283347, 0.00280285, 0.00283171, 1126.32280539], [1516493640000, 0.00281271, 0.0028317, 0.00281271, 0.002828, 234.34353588], [1516493700000, 0.00281286, 0.00282799, 0.00281286, 0.002815, 279.50865498], [1516493760000, 0.00282749, 0.00282759, 0.002815, 0.00282759, 560.15749399], [1516493820000, 0.00282753, 0.00283378, 0.00282753, 0.00283378, 1189.58985477], [1516493880000, 0.002829, 0.00284582, 0.0028285, 0.0028285, 678.12628927], [1516493940000, 0.0028285, 0.00284581, 0.00282753, 0.00282854, 1509.87420634], [1516494000000, 0.00282801, 0.00284558, 0.002813, 0.002815, 989.83668151], [1516494060000, 0.00282854, 0.00282854, 0.002815, 0.002815, 493.48606602], [1516494120000, 0.002815, 0.00282774, 0.00280282, 0.00282773, 403.32820893], [1516494180000, 0.00282772, 0.00282773, 0.00280293, 0.00282768, 175.88797966], [1516494240000, 0.00282768, 0.00282773, 0.00280296, 0.00281, 439.59506451], [1516494300000, 0.002823, 0.00282854, 0.00281001, 0.00282854, 287.35655685], [1516494360000, 0.00282854, 0.00282854, 0.00281037, 0.00281044, 439.96565139], [1516494420000, 0.00281044, 0.00281281, 0.0028, 0.00280434, 2124.6872596], [1516494480000, 0.00280435, 0.00282799, 0.00280435, 0.00282161, 208.93872289], [1516494540000, 0.00282153, 0.00282153, 0.00280003, 0.00280003, 196.34726898], [1516494600000, 0.00280003, 0.00281035, 0.00277891, 0.00277902, 727.23912958], [1516494660000, 0.00277898, 0.00280003, 0.00277898, 0.00279888, 399.23462902], [1516494720000, 0.00279888, 0.00279888, 0.00277903, 0.00279866, 720.54033628], [1516494780000, 0.00277927, 0.00279866, 0.00277927, 0.0027795, 211.0670273], [1516494840000, 0.0027979, 0.0027979, 0.00279564, 0.00279564, 8.83922564], [1516494900000, 0.0027979, 0.00282837, 0.0027979, 0.00282828, 513.05988729], [1516494960000, 0.00281413, 0.00282826, 0.00280733, 0.00281024, 1951.10244577], [1516495020000, 0.00281024, 0.00281038, 0.0028, 0.00281038, 122.51911329], [1516495080000, 0.00282, 0.00282152, 0.0027934, 0.0027934, 331.67033491], [1516495140000, 0.00279564, 0.00279564, 0.00277143, 0.0027715, 471.22873455], [1516495200000, 0.00279328, 0.00279328, 0.00276, 0.0027689, 260.08429278], [1516495260000, 0.00276, 0.00276973, 0.00275421, 0.00276, 279.48964197], [1516495320000, 0.002755, 0.00278216, 0.00275422, 0.00278216, 771.22834854], [1516495380000, 0.00278216, 0.00279324, 0.00276988, 0.00276988, 239.19366848], [1516495440000, 0.00278999, 0.00279, 0.00278999, 0.00278999, 214.51468569], [1516495500000, 0.00278999, 0.00279322, 0.00278999, 0.00279321, 130.94703401], [1516495560000, 0.00278999, 0.0028291, 0.00277054, 0.00277054, 645.89396326], [1516495620000, 0.0027711, 0.00277301, 0.0027711, 0.00277301, 38.4268298], [1516495680000, 0.0027752, 0.0027752, 0.00277519, 0.00277519, 18.58696266], [1516495740000, 0.00281761, 0.00281761, 0.00281761, 0.00281761, 0.77900064], [1516495800000, 0.0028175, 0.0028175, 0.00281669, 0.00281677, 127.94263471], [1516495860000, 0.00281617, 0.00281618, 0.00281617, 0.00281618, 14.59586583], [1516495920000, 0.00277913, 0.00279999, 0.002779, 0.00277918, 195.90349098], [1516495980000, 0.00277918, 0.00277918, 0.0027501, 0.0027501, 835.33283221], [1516496040000, 0.0027501, 0.00277797, 0.00273722, 0.00275, 1165.05438683], [1516496100000, 0.00275, 0.00275018, 0.002741, 0.00275018, 238.5223796], [1516496160000, 0.00275018, 0.00275018, 0.00273722, 0.00273722, 94.64026623], [1516496220000, 0.00275, 0.00275, 0.0027307, 0.00273328, 910.76129948], [1516496280000, 0.0027307, 0.00273328, 0.00270535, 0.00270535, 641.27020869], [1516496340000, 0.00271625, 0.00272355, 0.00270062, 0.0027049, 766.94376877], [1516496400000, 0.00270479, 0.00271082, 0.00270479, 0.00270535, 330.12847479], [1516496460000, 0.00270535, 0.00272344, 0.00269121, 0.00272343, 2238.01768144], [1516496520000, 0.00272342, 0.00272342, 0.00270061, 0.00272331, 121.2906349], [1516496580000, 0.00270063, 0.00272324, 0.00270062, 0.00272324, 21.24793146], [1516496640000, 0.00270063, 0.00272322, 0.00269121, 0.00270059, 304.05838258], [1516496700000, 0.00270059, 0.00272317, 0.00269126, 0.00272314, 594.54757605], [1516496760000, 0.00272309, 0.00272309, 0.0026913, 0.00270001, 567.78559683], [1516496820000, 0.00272299, 0.002723, 0.00272299, 0.002723, 3.4505576], [1516496880000, 0.00272278, 0.002723, 0.00272278, 0.00272299, 70.85587553], [1516496940000, 0.00272298, 0.00272355, 0.00272223, 0.00272299, 921.09119515], [1516497000000, 0.00271564, 0.00273717, 0.00270516, 0.00273499, 88.99343638], [1516497060000, 0.00271567, 0.00273498, 0.00271567, 0.00273497, 75.66525108], [1516497120000, 0.00273497, 0.00274042, 0.00272001, 0.00274042, 556.91620558], [1516497180000, 0.00274042, 0.00274044, 0.00270595, 0.00272008, 776.99181944], [1516497240000, 0.00272008, 0.00274, 0.00272002, 0.00272002, 516.91399399], [1516497300000, 0.00272002, 0.00273985, 0.00272002, 0.00273021, 32.71586376], [1516497360000, 0.00272003, 0.0027201, 0.00272002, 0.0027201, 160.38064612], [1516497420000, 0.00272003, 0.0027201, 0.00272003, 0.0027201, 77.11989445], [1516497480000, 0.00272003, 0.00273972, 0.00272003, 0.00273972, 731.81627087], [1516497540000, 0.0027201, 0.00273964, 0.0027201, 0.00272011, 16.78873251], [1516497600000, 0.00273947, 0.00273947, 0.00272011, 0.00272011, 59.21181469], [1516497660000, 0.0027202, 0.0027202, 0.00272003, 0.00272003, 1056.94287283], [1516497720000, 0.0027202, 0.0027202, 0.00270701, 0.00270701, 1303.19561601], [1516497780000, 0.00273234, 0.00273501, 0.00273234, 0.002735, 1101.71323409], [1516497840000, 0.00271037, 0.00273992, 0.00271037, 0.00273491, 77.70806421], [1516497900000, 0.00273491, 0.002735, 0.00273483, 0.00273483, 323.55858344], [1516497960000, 0.00271081, 0.002735, 0.00271081, 0.00271299, 154.10014799], [1516498020000, 0.00274044, 0.00274044, 0.00274044, 0.00274044, 10.102545], [1516498080000, 0.00274959, 0.00274959, 0.00273086, 0.00274899, 488.3235459], [1516498140000, 0.00274897, 0.002749, 0.00272, 0.00274894, 1269.73258214], [1516498200000, 0.00274893, 0.00274893, 0.00274893, 0.00274893, 25.65519977], [1516498260000, 0.00272018, 0.00274959, 0.00272018, 0.00274959, 1111.40623785], [1516498320000, 0.00274959, 0.00274959, 0.00272114, 0.00272114, 428.9222866], [1516498380000, 0.00274607, 0.0027628, 0.0027212, 0.00276279, 722.95916875], [1516498440000, 0.00276273, 0.00276273, 0.00272273, 0.00275968, 593.95027468], [1516498500000, 0.00275965, 0.00275965, 0.00272482, 0.00272482, 59.51002863], [1516498560000, 0.00272772, 0.00272772, 0.00272292, 0.00272292, 70.10538733], [1516498620000, 0.00272308, 0.00272308, 0.00272301, 0.00272301, 73.67108864], [1516498680000, 0.00274892, 0.00274892, 0.00274892, 0.00274892, 4.69090909], [1516498740000, 0.00274879, 0.00274879, 0.00274867, 0.00274867, 34.46329977], [1516498800000, 0.00274595, 0.00274595, 0.00273598, 0.00274498, 17.73751232], [1516498860000, 0.00274, 0.00274299, 0.00274, 0.00274, 279.05052271], [1516498920000, 0.00272316, 0.00273997, 0.00272316, 0.00272319, 18.93506526], [1516498980000, 0.00272319, 0.00273999, 0.00272319, 0.00273999, 71.41890256], [1516499040000, 0.00272352, 0.00273994, 0.0027235, 0.00272414, 114.08645615], [1516499100000, 0.00273174, 0.00274999, 0.0027235, 0.00272356, 6.96834497], [1516499160000, 0.00272356, 0.00272356, 0.00272356, 0.00272356, 73.2681893], [1516499220000, 0.00272361, 0.00272361, 0.00272356, 0.00272361, 301.61476548], [1516499280000, 0.00274826, 0.00274826, 0.00274824, 0.00274824, 8.73224747], [1516499340000, 0.00274809, 0.00274809, 0.00272365, 0.00272365, 486.78081866], [1516499400000, 0.0027285, 0.0027285, 0.00272361, 0.00272361, 117.31434742], [1516499460000, 0.00272363, 0.00272363, 0.00272362, 0.00272362, 11.92436419], [1516499520000, 0.00272382, 0.00274606, 0.00272382, 0.00274603, 242.62233437], [1516499580000, 0.00272393, 0.00274494, 0.00272362, 0.00274488, 55.60154105], [1516499640000, 0.00272362, 0.00274488, 0.00272361, 0.00272361, 6.90568372], [1516499700000, 0.00274299, 0.00274299, 0.00272361, 0.00274299, 688.28216751], [1516499760000, 0.00272361, 0.00274297, 0.00272361, 0.00274297, 231.87400564], [1516499820000, 0.00274295, 0.00274296, 0.00274295, 0.00274295, 19.49625461], [1516499880000, 0.00274294, 0.00274295, 0.00274292, 0.00274292, 47.44123119], [1516499940000, 0.00274291, 0.00274291, 0.00274291, 0.00274291, 0.72915262], [1516500000000, 0.00274289, 0.00274289, 0.00274278, 0.00274279, 50.96132469], [1516500060000, 0.00274276, 0.00274276, 0.00274276, 0.00274276, 100.55465961], [1516500120000, 0.00272423, 0.0027422, 0.00272363, 0.00272363, 81.64737926], [1516500180000, 0.00272363, 0.00272423, 0.00272363, 0.00272423, 106.43786375], [1516500240000, 0.00274183, 0.00274183, 0.00274183, 0.00274183, 0.43766389], [1516500300000, 0.00274182, 0.00274182, 0.00272863, 0.00274181, 134.83809363], [1516500360000, 0.0027418, 0.0027418, 0.00272365, 0.00272365, 181.07277177], [1516500420000, 0.00274178, 0.00274178, 0.00272365, 0.00272365, 623.9792291], [1516500480000, 0.00273, 0.00273, 0.002723, 0.00272363, 238.61169692], [1516500540000, 0.00272363, 0.00272363, 0.00272132, 0.002723, 145.36666555], [1516500600000, 0.00272132, 0.002723, 0.00272132, 0.002723, 695.2067025], [1516500660000, 0.002723, 0.002723, 0.00272132, 0.002723, 11.50968015], [1516500720000, 0.002723, 0.00274176, 0.00272134, 0.00274176, 1185.68819237], [1516500780000, 0.00273, 0.00273, 0.00273, 0.00273, 11.74153324], [1516500840000, 0.00272136, 0.00272136, 0.00272135, 0.00272135, 64.0], [1516500960000, 0.00273, 0.00274168, 0.00273, 0.002735, 649.21335605], [1516501020000, 0.00273, 0.00273, 0.00273, 0.00273, 20.2538501], [1516501080000, 0.00273499, 0.00273499, 0.00273499, 0.00273499, 22.35616948], [1516501140000, 0.00273499, 0.00273499, 0.002731, 0.002731, 123.61927738], [1516501200000, 0.002731, 0.002735, 0.002731, 0.00273492, 706.35475142], [1516501260000, 0.00273492, 0.00273492, 0.002731, 0.00273101, 205.65782547], [1516501320000, 0.002731, 0.002731, 0.002725, 0.002725, 367.32701864], [1516501380000, 0.00272501, 0.00273, 0.00272501, 0.00273, 20.12061183], [1516501440000, 0.00272501, 0.00272501, 0.002725, 0.002725, 86.98586728], [1516501500000, 0.002725, 0.00272501, 0.00271887, 0.00272, 1094.87561904], [1516501560000, 0.00271887, 0.00271887, 0.00271, 0.00271, 406.13760513], [1516501620000, 0.00271, 0.00271887, 0.002709, 0.00271, 283.36992111], [1516501680000, 0.00271, 0.00271887, 0.00271, 0.00271887, 12.42399392], [1516501740000, 0.00271, 0.00271, 0.00270054, 0.00270054, 896.18031193], [1516501800000, 0.0027042, 0.00270436, 0.00270004, 0.0027042, 199.30474113], [1516501860000, 0.0027042, 0.00270436, 0.0027042, 0.0027042, 70.70358448], [1516501920000, 0.0027042, 0.0027042, 0.00270137, 0.00270137, 19.51575077], [1516501980000, 0.00270236, 0.0027042, 0.00270004, 0.00270004, 46.93189216], [1516502040000, 0.00270004, 0.002702, 0.00270004, 0.002702, 97.93360172], [1516502100000, 0.002702, 0.002702, 0.00270005, 0.00270005, 303.14284236], [1516502160000, 0.002702, 0.002702, 0.00270199, 0.002702, 99.75943744], [1516502220000, 0.00270006, 0.00270192, 0.00270005, 0.00270192, 19.9118278], [1516502280000, 0.00270192, 0.00270192, 0.00269359, 0.00269359, 688.09013122], [1516502340000, 0.002697, 0.002697, 0.002691, 0.002691, 844.0913507], [1516502400000, 0.00269699, 0.002697, 0.00269002, 0.00269101, 242.94431131], [1516502460000, 0.00269101, 0.002697, 0.002689, 0.002689, 378.88522346], [1516502520000, 0.00269002, 0.00269699, 0.00269002, 0.00269699, 74.90302633], [1516502580000, 0.00268909, 0.00269699, 0.00268908, 0.00268908, 741.17674025], [1516502640000, 0.00269699, 0.00269699, 0.00269699, 0.00269699, 0.37078372], [1516502700000, 0.00269, 0.00269699, 0.00268908, 0.00268908, 111.04759226], [1516502760000, 0.00268906, 0.00268929, 0.00268906, 0.00268929, 34.54948245], [1516502880000, 0.00269699, 0.00269699, 0.00268929, 0.00268929, 304.01733676], [1516502940000, 0.00268929, 0.00268929, 0.00268503, 0.00268503, 421.02081812], [1516503000000, 0.00268503, 0.00268699, 0.00268372, 0.00268372, 250.31919402], [1516503060000, 0.0026852, 0.0026852, 0.00268, 0.00268, 303.94973949], [1516503120000, 0.00268, 0.00268, 0.0026748, 0.00267999, 254.56917848], [1516503180000, 0.00267999, 0.00267999, 0.0026748, 0.0026755, 331.49529023], [1516503240000, 0.00267999, 0.0026826, 0.00267999, 0.0026826, 192.30149647], [1516503300000, 0.0026826, 0.00268998, 0.00267323, 0.00267402, 1269.00334861], [1516503360000, 0.00268506, 0.00268506, 0.00268505, 0.00268506, 148.36227478], [1516503420000, 0.00268506, 0.00268998, 0.00268506, 0.002686, 134.21933731], [1516503480000, 0.002686, 0.00268998, 0.002686, 0.002686, 171.35070802], [1516503540000, 0.00268998, 0.00269999, 0.002686, 0.002686, 1308.40061421], [1516503600000, 0.00269997, 0.00271493, 0.002686, 0.00269083, 1258.76148441], [1516503660000, 0.00269083, 0.00271561, 0.002686, 0.00271535, 196.50743227], [1516503720000, 0.00269535, 0.00271276, 0.00269086, 0.00271276, 121.71094912], [1516503780000, 0.00271276, 0.00271865, 0.00271276, 0.00271619, 194.43632833], [1516503840000, 0.00271618, 0.00271618, 0.00270179, 0.00270183, 109.78166333], [1516503900000, 0.00271619, 0.00272933, 0.00271502, 0.00272865, 471.86881206], [1516503960000, 0.00272867, 0.00273583, 0.00272866, 0.00272877, 446.72196876], [1516504020000, 0.00272882, 0.00273584, 0.00272871, 0.00272872, 197.5810664], [1516504080000, 0.00272881, 0.00273584, 0.00272881, 0.00273584, 30.89060083], [1516504140000, 0.00273584, 0.00274476, 0.0027289, 0.00272897, 158.08057547], [1516504200000, 0.00273581, 0.00273581, 0.00272897, 0.00273581, 195.70730833], [1516504260000, 0.00273581, 0.00273581, 0.00273581, 0.00273581, 74.27813327], [1516504320000, 0.00273582, 0.00273582, 0.00273581, 0.00273581, 55.76657367], [1516504380000, 0.00273581, 0.00274475, 0.0027289, 0.00273581, 194.82130714], [1516504440000, 0.00273581, 0.00274462, 0.00273581, 0.00273581, 222.63572125], [1516504500000, 0.00273581, 0.00273581, 0.0027289, 0.0027289, 403.58542467], [1516504560000, 0.0027289, 0.00273492, 0.0027289, 0.00273492, 11.29519446], [1516504620000, 0.002735, 0.00274496, 0.00273492, 0.00274496, 275.47197573], [1516504680000, 0.00274496, 0.00274821, 0.0027289, 0.0027289, 850.30550601], [1516504740000, 0.00273, 0.00273, 0.0027289, 0.00273, 196.84603837], [1516504800000, 0.00273, 0.002735, 0.00273, 0.00273, 493.40284204], [1516504860000, 0.00273, 0.00273, 0.0027289, 0.0027289, 56.97503631], [1516504920000, 0.0027289, 0.00273, 0.0027289, 0.0027289, 454.00992421], [1516504980000, 0.0027289, 0.00273, 0.00272871, 0.00272871, 58.68876052], [1516505040000, 0.00273, 0.00273, 0.00272871, 0.00272992, 29.6410714], [1516505100000, 0.00272992, 0.00272992, 0.00271533, 0.00271533, 129.86200337], [1516505160000, 0.00271539, 0.00272984, 0.00271539, 0.00272984, 53.90990674], [1516505220000, 0.00271606, 0.00272984, 0.00271606, 0.00272984, 86.24619486], [1516505280000, 0.00272976, 0.00272976, 0.00271097, 0.00272976, 133.55454961], [1516505340000, 0.00272976, 0.00272983, 0.00271397, 0.00272976, 170.24509197], [1516505400000, 0.00272984, 0.00272984, 0.00271407, 0.0027296, 222.35721111], [1516505460000, 0.00272952, 0.00272952, 0.0027, 0.00272926, 1164.11856156], [1516505520000, 0.00272924, 0.00272939, 0.0027, 0.0027, 418.3243894], [1516505580000, 0.00272863, 0.00272864, 0.0027, 0.00270027, 129.48148748], [1516505640000, 0.00272, 0.00272796, 0.00271864, 0.00271864, 52.98777168], [1516505700000, 0.00271864, 0.00271864, 0.00270047, 0.00270047, 114.84676666], [1516505760000, 0.00270047, 0.002715, 0.00270004, 0.00271056, 83.11018014], [1516505820000, 0.00271056, 0.00271056, 0.00270004, 0.00271054, 96.07856786], [1516505880000, 0.00270004, 0.00270004, 0.00270004, 0.00270004, 12.33065899], [1516505940000, 0.00271052, 0.00271052, 0.00269112, 0.00271052, 327.78283452], [1516506000000, 0.00271052, 0.00271055, 0.00269111, 0.00271055, 426.15321744], [1516506060000, 0.00271053, 0.00271053, 0.002692, 0.002692, 20.56745253], [1516506120000, 0.00269202, 0.00271, 0.00269111, 0.00270999, 132.17043493], [1516506180000, 0.00270999, 0.00271, 0.00269111, 0.00269111, 45.94272518], [1516506240000, 0.00269111, 0.00270994, 0.00269111, 0.00270992, 316.71387901], [1516506300000, 0.0027099, 0.0027099, 0.00269111, 0.00269111, 349.53662347], [1516506360000, 0.00269111, 0.00270952, 0.00269083, 0.00270952, 444.0445148], [1516506420000, 0.00269111, 0.0027081, 0.00269, 0.00269, 114.19731624], [1516506480000, 0.00269001, 0.0027081, 0.00268656, 0.0027081, 85.16494996], [1516506540000, 0.00268656, 0.0027081, 0.00268656, 0.002688, 6.85129493], [1516506600000, 0.002688, 0.00271, 0.002688, 0.0027082, 185.28126114], [1516506660000, 0.00271, 0.00271, 0.00269465, 0.00269465, 124.71928072], [1516506720000, 0.002688, 0.00269465, 0.002688, 0.00269465, 62.80053536], [1516506780000, 0.00270819, 0.0027082, 0.00270819, 0.0027082, 14.3466789], [1516506840000, 0.00269, 0.00269, 0.00268808, 0.00268808, 287.75547623], [1516506900000, 0.00269, 0.00269, 0.00269, 0.00269, 6.18184446], [1516506960000, 0.00269, 0.00269, 0.00268809, 0.00268809, 18.11006339], [1516507020000, 0.00268809, 0.00269, 0.00268809, 0.00269, 388.92291906], [1516507080000, 0.00269, 0.00269, 0.00269, 0.00269, 0.49009882], [1516507140000, 0.00268666, 0.00268666, 0.00268656, 0.00268656, 170.84407974], [1516507200000, 0.00269, 0.00269, 0.00268, 0.00268, 252.01442169], [1516507260000, 0.00268, 0.00268656, 0.0026789, 0.0026789, 186.90607791], [1516507320000, 0.0026789, 0.00268655, 0.00267229, 0.00268655, 459.02736067], [1516507380000, 0.00267229, 0.00267674, 0.0026642, 0.00267674, 1309.51708268], [1516507440000, 0.00267674, 0.00268514, 0.00266655, 0.00268513, 32.66788467], [1516507500000, 0.00266655, 0.00268514, 0.00266655, 0.00268514, 45.2587248], [1516507560000, 0.00268514, 0.00268655, 0.00266572, 0.00268655, 317.40436619], [1516507620000, 0.00266665, 0.0026899, 0.00266665, 0.002671, 129.56794631], [1516507680000, 0.00267105, 0.00268217, 0.00266, 0.00268181, 3646.09348622], [1516507740000, 0.00266243, 0.00268215, 0.00265931, 0.00265982, 1145.3697378], [1516507800000, 0.00266, 0.002672, 0.00265841, 0.00267161, 179.29434125], [1516507860000, 0.0026598, 0.00268478, 0.00265555, 0.00265558, 701.26569311], [1516507920000, 0.00265555, 0.00267558, 0.00265554, 0.00267036, 568.98311127], [1516507980000, 0.00267037, 0.0026845, 0.00267037, 0.0026844, 95.62934886], [1516508040000, 0.00267037, 0.00268512, 0.00266, 0.00267037, 188.44568599], [1516508100000, 0.00267037, 0.00268464, 0.00266042, 0.0026846, 85.10312001], [1516508160000, 0.00267847, 0.00268498, 0.00267847, 0.00268498, 21.76288406], [1516508220000, 0.00266156, 0.00268498, 0.00266156, 0.00268471, 26.81051567], [1516508280000, 0.00268463, 0.00268463, 0.00268463, 0.00268463, 1.04869006], [1516508340000, 0.002662, 0.0026845, 0.002662, 0.00268441, 39.78375935], [1516508400000, 0.00268432, 0.00268498, 0.00268424, 0.00268463, 737.37389109], [1516508460000, 0.00268498, 0.00268498, 0.00268462, 0.00268498, 400.12298367], [1516508520000, 0.00268498, 0.00269537, 0.00268462, 0.0026953, 567.28227291], [1516508580000, 0.00269529, 0.00271, 0.00268562, 0.00269565, 305.2452986], [1516508640000, 0.00269565, 0.00269565, 0.00268462, 0.00268462, 278.33597455], [1516508700000, 0.0026953, 0.00270795, 0.00266498, 0.00270795, 184.0571032], [1516508760000, 0.0026953, 0.0026953, 0.00267051, 0.00267051, 22.75210299], [1516508820000, 0.00267082, 0.00267113, 0.00267082, 0.00267112, 2.01086408], [1516508880000, 0.00267112, 0.00268514, 0.0026709, 0.0026709, 17.48290543], [1516508940000, 0.002673, 0.00268514, 0.002673, 0.00268514, 36.44743158], [1516509000000, 0.002673, 0.00268514, 0.00267061, 0.00268514, 118.52361544], [1516509060000, 0.00268514, 0.00269659, 0.00267064, 0.00268514, 216.35143777], [1516509120000, 0.00268514, 0.00268514, 0.00268513, 0.00268514, 36.403082], [1516509180000, 0.00268514, 0.00268514, 0.00266206, 0.00266206, 2000.0], [1516509240000, 0.00268514, 0.002695, 0.00268, 0.002695, 126.97968674], [1516509300000, 0.002695, 0.002695, 0.00268006, 0.002695, 199.56149129], [1516509360000, 0.002695, 0.00269999, 0.002695, 0.00269999, 32.76133521], [1516509420000, 0.00269998, 0.00269999, 0.00269998, 0.00269999, 8.41571418], [1516509480000, 0.00269999, 0.00270989, 0.0026802, 0.0026802, 423.99632185], [1516509540000, 0.00268514, 0.00268514, 0.0026741, 0.0026802, 929.39731929], [1516509600000, 0.00267071, 0.0026802, 0.0026621, 0.0026802, 184.07695784], [1516509660000, 0.00268019, 0.00268019, 0.00268019, 0.00268019, 38.45516084], [1516509720000, 0.00268019, 0.00268019, 0.00266256, 0.00268019, 191.17191213], [1516509780000, 0.00268019, 0.0026802, 0.00266558, 0.0026802, 104.61400254], [1516509840000, 0.0026802, 0.0026802, 0.00268019, 0.0026802, 21.74656024], [1516509900000, 0.00267043, 0.0026802, 0.00266204, 0.00266204, 767.07250277], [1516509960000, 0.00266204, 0.00268512, 0.00266204, 0.00268512, 23.96823094], [1516510020000, 0.00268512, 0.00268512, 0.00268512, 0.00268512, 2.27382687], [1516510080000, 0.00268512, 0.00268512, 0.00268511, 0.00268511, 22.89337898], [1516510140000, 0.00268509, 0.0026851, 0.00266037, 0.002663, 1736.8388661], [1516510200000, 0.00266038, 0.00268499, 0.00266037, 0.00268019, 118.59497166], [1516510260000, 0.00266037, 0.00266037, 0.00266037, 0.00266037, 32.42869699], [1516510320000, 0.00268, 0.00268, 0.00268, 0.00268, 1.79910181], [1516510380000, 0.00267999, 0.00267999, 0.00266037, 0.00266404, 160.03677934], [1516510440000, 0.00266404, 0.00267768, 0.00265554, 0.00266965, 1352.28758354], [1516510500000, 0.00266965, 0.00267, 0.00265564, 0.00267, 600.97698043], [1516510560000, 0.00265574, 0.00267037, 0.00264391, 0.00264554, 1798.35589776], [1516510620000, 0.00265554, 0.00265554, 0.00264554, 0.00265554, 48.29829153], [1516510680000, 0.00265554, 0.00265554, 0.00264554, 0.00265553, 515.78169053], [1516510740000, 0.00265554, 0.00265554, 0.00264, 0.00265554, 481.47211952], [1516510800000, 0.00265553, 0.00266351, 0.00264011, 0.0026635, 179.33007092], [1516510860000, 0.00264108, 0.0026635, 0.00264029, 0.00266333, 438.66756562], [1516510920000, 0.00266314, 0.00266314, 0.00266314, 0.00266314, 10.0], [1516510980000, 0.00266261, 0.00266261, 0.00264, 0.00266237, 567.04983786], [1516511040000, 0.00266237, 0.00266242, 0.002641, 0.00266227, 91.13349269], [1516511100000, 0.00266225, 0.00266226, 0.0026375, 0.00265762, 60.48281373], [1516511160000, 0.00265762, 0.00265762, 0.002638, 0.0026576, 67.27054833], [1516511220000, 0.00263801, 0.00265, 0.00263567, 0.00263567, 1141.89180398], [1516511280000, 0.00263567, 0.00265, 0.00262574, 0.002627, 1050.13149279], [1516511340000, 0.002628, 0.00265064, 0.00262571, 0.00262708, 869.78442422], [1516511400000, 0.00262708, 0.00266327, 0.00262708, 0.00265973, 156.10773472], [1516511460000, 0.00265949, 0.00265949, 0.00262823, 0.00264854, 5.33343601], [1516511520000, 0.00264854, 0.00265861, 0.00262825, 0.00265824, 210.96878003], [1516511580000, 0.00262915, 0.0026633, 0.00262915, 0.00265842, 677.45017107], [1516511640000, 0.0026633, 0.00268462, 0.00265842, 0.0026633, 404.67631094], [1516511700000, 0.0026633, 0.00268427, 0.00265842, 0.00265842, 196.01421899], [1516511760000, 0.00265842, 0.00267996, 0.00265842, 0.00267994, 1186.20607826], [1516511820000, 0.00267992, 0.00267992, 0.00265706, 0.00267991, 47.93073274], [1516511880000, 0.0026633, 0.00267988, 0.0026633, 0.0026633, 2.54221568], [1516511940000, 0.00267991, 0.00267992, 0.00267991, 0.00267992, 5.17795006], [1516512000000, 0.0026633, 0.00267991, 0.00265705, 0.00267988, 170.77962257], [1516512060000, 0.00265705, 0.00267974, 0.00265705, 0.00267974, 17.11873242], [1516512120000, 0.00267968, 0.00267968, 0.00266001, 0.00267968, 54.0034857], [1516512180000, 0.00267968, 0.00267968, 0.00266, 0.00267501, 386.16596256], [1516512240000, 0.00267501, 0.00267954, 0.00266061, 0.002676, 377.60070403], [1516512300000, 0.00267968, 0.00268506, 0.002676, 0.00268506, 1911.08312097], [1516512360000, 0.00268506, 0.00269002, 0.00268506, 0.00268797, 1494.46861881], [1516512420000, 0.00268797, 0.00269999, 0.00268507, 0.00269002, 620.83617264], [1516512480000, 0.00269999, 0.00270595, 0.00269002, 0.00270594, 696.95054442], [1516512540000, 0.00270594, 0.00271705, 0.00268514, 0.00271705, 546.05372374], [1516512600000, 0.00271705, 0.00271705, 0.00268514, 0.00268515, 71.00479338], [1516512660000, 0.00268516, 0.00268516, 0.00268506, 0.00268506, 903.82331556], [1516512720000, 0.00268506, 0.00268506, 0.00268422, 0.00268422, 30.44852767], [1516512780000, 0.00268422, 0.00268422, 0.00268422, 0.00268422, 3.52], [1516512840000, 0.00268422, 0.00268998, 0.00268422, 0.00268998, 128.17834177], [1516512900000, 0.00269, 0.00269, 0.00268422, 0.00268422, 402.04192358], [1516512960000, 0.00268422, 0.00268422, 0.00267048, 0.00267994, 373.64136406], [1516513020000, 0.00267994, 0.00267994, 0.00267038, 0.002671, 1277.46634089], [1516513080000, 0.00267993, 0.00267994, 0.002671, 0.002671, 222.09381689], [1516513140000, 0.0026704, 0.00267993, 0.00267038, 0.00267993, 20.4396913], [1516513200000, 0.00267993, 0.0026899, 0.00267993, 0.0026899, 9.11549869], [1516513260000, 0.00268978, 0.00268978, 0.00267038, 0.00267038, 679.135231], [1516513320000, 0.00267038, 0.00267038, 0.00265115, 0.00267032, 233.73116585], [1516513380000, 0.00265115, 0.00267025, 0.00265, 0.00267025, 197.57987834], [1516513440000, 0.00267026, 0.00267027, 0.00263915, 0.00263915, 203.28613061], [1516513500000, 0.00267026, 0.00268508, 0.00267026, 0.00268508, 557.62081784], [1516513560000, 0.00268419, 0.0026842, 0.00265569, 0.00268419, 81.19256745], [1516513620000, 0.00268418, 0.00268418, 0.00265, 0.00265, 39.02791019], [1516513680000, 0.00265014, 0.00265014, 0.00265001, 0.00265014, 36.47490508], [1516513740000, 0.00266999, 0.00266999, 0.00265, 0.00265, 35.82377029], [1516513800000, 0.00265, 0.00265, 0.00265, 0.00265, 30.2466721], [1516513860000, 0.00265, 0.00265, 0.00265, 0.00265, 3.92683573], [1516513920000, 0.00265, 0.0026702, 0.00265, 0.0026702, 167.18616153], [1516513980000, 0.00265, 0.00267016, 0.00265, 0.00265, 10.73331347], [1516514040000, 0.00265, 0.00266997, 0.00265, 0.00266992, 34.50291276], [1516514100000, 0.00267032, 0.00267037, 0.00267032, 0.00267036, 40.60025992], [1516514160000, 0.00267036, 0.00267037, 0.00267036, 0.00267037, 4.44303798], [1516514220000, 0.00265004, 0.00267, 0.00265004, 0.00265665, 367.9187633], [1516514280000, 0.00267, 0.00267, 0.00265665, 0.00265665, 39.40802089], [1516514340000, 0.00265665, 0.00266999, 0.00265081, 0.00265081, 65.10205963], [1516514400000, 0.00265665, 0.00268122, 0.00265665, 0.00268122, 58.52291948], [1516514460000, 0.00268095, 0.00268095, 0.00268095, 0.00268095, 0.19024869], [1516514520000, 0.00268095, 0.00268095, 0.00268094, 0.00268094, 0.85957447], [1516514580000, 0.00268, 0.00268094, 0.00265603, 0.00265603, 44.21145568], [1516514640000, 0.0026808, 0.0026808, 0.00265604, 0.00265604, 56.47869011], [1516514700000, 0.00268079, 0.00268079, 0.00265611, 0.00265628, 81.35991552], [1516514760000, 0.00268076, 0.00268076, 0.00265713, 0.00265789, 7.59567021], [1516514820000, 0.00268, 0.00269002, 0.00266001, 0.00266013, 506.75750389], [1516514880000, 0.00269687, 0.00269687, 0.00269687, 0.00269687, 100.0], [1516514940000, 0.00269645, 0.00269645, 0.00269499, 0.00269499, 7.85530076], [1516515000000, 0.00267088, 0.00268001, 0.00267088, 0.00268001, 15.19354145], [1516515060000, 0.00268001, 0.00268001, 0.002671, 0.002671, 42.93511249], [1516515120000, 0.00269486, 0.00269486, 0.002671, 0.002671, 16.91737676], [1516515180000, 0.002671, 0.00269393, 0.002671, 0.002671, 89.15832748], [1516515240000, 0.002671, 0.002671, 0.00267038, 0.00267038, 65.95560756], [1516515300000, 0.00267039, 0.00267039, 0.00267039, 0.00267039, 0.41286104], [1516515360000, 0.00267042, 0.00269194, 0.00267037, 0.00267037, 172.19273222], [1516515420000, 0.00268496, 0.00268496, 0.00267037, 0.00267037, 9.47130379], [1516515480000, 0.00267037, 0.00269189, 0.00267037, 0.00267037, 93.45247701], [1516515540000, 0.00268498, 0.00268499, 0.00267037, 0.00268035, 63.24832787], [1516515600000, 0.00267037, 0.00267999, 0.00267037, 0.00267037, 15.13734545], [1516515660000, 0.00267037, 0.00267998, 0.00266019, 0.0026799, 63.16494935], [1516515720000, 0.00266019, 0.00267994, 0.00265706, 0.00266019, 84.2947493], [1516515780000, 0.00266019, 0.00266999, 0.00265706, 0.00266999, 56.60436481], [1516515840000, 0.00267, 0.00267, 0.00265701, 0.00265701, 21.49573942], [1516515900000, 0.00265701, 0.00267, 0.00265701, 0.00265805, 48.41531515], [1516515960000, 0.00265805, 0.00265805, 0.00265804, 0.00265804, 459.73698135], [1516516020000, 0.00265804, 0.00265805, 0.00265804, 0.00265805, 64.46758989], [1516516080000, 0.00265805, 0.00265805, 0.0026561, 0.00265701, 787.38215712], [1516516140000, 0.00265701, 0.00265701, 0.0026561, 0.0026561, 212.93967876], [1516516200000, 0.00265805, 0.00265805, 0.0026561, 0.00265805, 74.61357993], [1516516260000, 0.00265805, 0.00265805, 0.00265805, 0.00265805, 24.81415731], [1516516320000, 0.00265805, 0.00265805, 0.00265805, 0.00265805, 10.13242791], [1516516380000, 0.00265805, 0.00265805, 0.00265618, 0.00265805, 69.10477099], [1516516440000, 0.00265805, 0.00265805, 0.00265805, 0.00265805, 89.60266374], [1516516500000, 0.00265811, 0.00265811, 0.00265811, 0.00265811, 7.5], [1516516560000, 0.00265811, 0.00265811, 0.00265811, 0.00265811, 13.21063391], [1516516620000, 0.00265811, 0.00265811, 0.00265811, 0.00265811, 4.57158849], [1516516680000, 0.00265807, 0.00265811, 0.00265805, 0.00265811, 291.77301024], [1516516740000, 0.00265811, 0.00265811, 0.00265811, 0.00265811, 1015.89353096], [1516516800000, 0.00265811, 0.00267, 0.00265811, 0.00267, 55.93028898], [1516516860000, 0.00266998, 0.00266998, 0.00266208, 0.00266208, 7.1262526], [1516516920000, 0.00266208, 0.00267, 0.00265811, 0.00265811, 104.16126942], [1516516980000, 0.00265932, 0.00267, 0.00265811, 0.00267, 279.59858008], [1516517040000, 0.00267, 0.00267, 0.00265811, 0.00265811, 86.53346911], [1516517100000, 0.002669, 0.00267, 0.002669, 0.00267, 104.00494568], [1516517160000, 0.00267, 0.00268, 0.00265813, 0.00267, 98.33421668], [1516517220000, 0.00267, 0.00267, 0.00267, 0.00267, 161.16755217], [1516517280000, 0.00265813, 0.00267, 0.00265813, 0.00265817, 149.2715561], [1516517340000, 0.00265818, 0.00267, 0.00265818, 0.00267, 1.66560928], [1516517400000, 0.002669, 0.00267, 0.002669, 0.00267, 48.95994125], [1516517460000, 0.00267, 0.00267, 0.00267, 0.00267, 380.83513783], [1516517520000, 0.0026805, 0.00268514, 0.00265946, 0.00266708, 678.29069389], [1516517580000, 0.00266708, 0.00268998, 0.00265975, 0.00265975, 139.89967395], [1516517640000, 0.00265982, 0.00266034, 0.00265982, 0.00266034, 194.66058743], [1516517700000, 0.00266044, 0.00266044, 0.00266044, 0.00266044, 5.5501986], [1516517760000, 0.00266045, 0.00266045, 0.00265811, 0.00265811, 225.52744994], [1516517820000, 0.00265811, 0.00265811, 0.00265, 0.00265, 1278.90251247], [1516517880000, 0.00265, 0.00265, 0.0026384, 0.00265, 256.45399867], [1516517940000, 0.00265, 0.00265, 0.00263318, 0.00263318, 97.46324423], [1516518000000, 0.00263501, 0.00265, 0.00263501, 0.00264001, 17.02332684], [1516518060000, 0.00264002, 0.00264002, 0.0026352, 0.0026352, 11.95480299], [1516518120000, 0.00263304, 0.00265, 0.00263304, 0.00263304, 23.77299847], [1516518180000, 0.00264998, 0.00264998, 0.00264998, 0.00264998, 15.0850195], [1516518240000, 0.00264152, 0.00264152, 0.00263305, 0.00263305, 143.44669885], [1516518300000, 0.00263305, 0.00263305, 0.00263304, 0.00263305, 358.23016146], [1516518360000, 0.00263305, 0.00263305, 0.0026328, 0.002633, 149.814184], [1516518420000, 0.00263301, 0.00263305, 0.00263, 0.00263304, 336.28002035], [1516518480000, 0.00263304, 0.00263305, 0.00262999, 0.00262999, 518.61266716], [1516518540000, 0.00262824, 0.00263, 0.00262701, 0.00262708, 1042.23146233], [1516518600000, 0.00262571, 0.00262708, 0.00262164, 0.00262223, 661.62618585], [1516518660000, 0.00262223, 0.00262223, 0.00259823, 0.0026, 6449.82542511], [1516518720000, 0.0026, 0.00261, 0.00259889, 0.00260001, 1459.43026516], [1516518780000, 0.0026, 0.002615, 0.0026, 0.00261, 87.26674152], [1516518840000, 0.00261, 0.00261895, 0.00260002, 0.00261895, 205.33074403], [1516518900000, 0.00261887, 0.00261895, 0.00260003, 0.00260003, 260.41240181], [1516518960000, 0.00260007, 0.00261895, 0.00260007, 0.00261895, 178.70980768], [1516519020000, 0.00260014, 0.00263, 0.00260012, 0.00262228, 726.80029631], [1516519080000, 0.00263303, 0.00263428, 0.00261111, 0.00261111, 641.17900488], [1516519140000, 0.00262228, 0.002633, 0.00261125, 0.002633, 51.44337298], [1516519200000, 0.00263301, 0.00263303, 0.00263301, 0.00263303, 7.59586936], [1516519260000, 0.00263301, 0.00263303, 0.00263301, 0.00263303, 9.57682214], [1516519320000, 0.00263303, 0.00263303, 0.00263303, 0.00263303, 21.21916614], [1516519380000, 0.00263303, 0.00263303, 0.00263302, 0.00263302, 2.18130084], [1516519440000, 0.00263301, 0.00263303, 0.00261353, 0.00263303, 189.71218969], [1516519500000, 0.00261366, 0.00263303, 0.00261366, 0.002632, 25.5137136], [1516519620000, 0.00263299, 0.00263299, 0.00263299, 0.00263299, 9.85311096], [1516519680000, 0.00263299, 0.00263299, 0.00263299, 0.00263299, 0.25], [1516519740000, 0.00263299, 0.00263299, 0.00263299, 0.00263299, 27.22844759], [1516519800000, 0.002632, 0.002632, 0.0026162, 0.0026162, 59.30514677], [1516519860000, 0.00263199, 0.00263199, 0.00263199, 0.00263199, 14.94189169], [1516519920000, 0.00263199, 0.00263199, 0.00261655, 0.00261669, 86.78317175], [1516519980000, 0.00261668, 0.002631, 0.00261601, 0.002631, 312.88364471], [1516520040000, 0.002615, 0.002615, 0.002615, 0.002615, 33.93412487], [1516520100000, 0.002615, 0.00263, 0.00261382, 0.00261382, 127.43724201], [1516520160000, 0.00261382, 0.00263, 0.00261064, 0.00261064, 41.45772313], [1516520220000, 0.00261063, 0.00261382, 0.00260828, 0.00260828, 177.22587344], [1516520280000, 0.00261062, 0.00261062, 0.0026, 0.0026, 1074.47182375], [1516520340000, 0.0026, 0.00261062, 0.0026, 0.00261062, 421.1436584], [1516520400000, 0.00260001, 0.00261062, 0.00259657, 0.00260001, 145.86710974], [1516520460000, 0.0025975, 0.00261062, 0.0025975, 0.0026, 88.80189741], [1516520520000, 0.0026, 0.002605, 0.0025975, 0.0026, 88.9396852], [1516520580000, 0.0026, 0.00260001, 0.0026, 0.00260001, 223.97161027], [1516520640000, 0.0026, 0.0026105, 0.0026, 0.00260001, 150.45794979], [1516520700000, 0.00261, 0.00261, 0.0025842, 0.00260999, 898.32001788], [1516520760000, 0.00259071, 0.00259127, 0.00259, 0.00259127, 28.30895665], [1516520820000, 0.00259127, 0.00261051, 0.00258703, 0.0026105, 337.10690629], [1516520880000, 0.00260504, 0.0026105, 0.00258716, 0.0025911, 340.96177075], [1516520940000, 0.0026105, 0.0026105, 0.0025872, 0.00258725, 286.22980489], [1516521000000, 0.00258731, 0.00260998, 0.00258731, 0.0026, 401.71590682], [1516521060000, 0.0026, 0.00260997, 0.0026, 0.0026, 209.81780199], [1516521120000, 0.0026, 0.00260997, 0.0026, 0.00260997, 245.96832079], [1516521180000, 0.00260001, 0.00262357, 0.00260001, 0.00262356, 569.40588987], [1516521240000, 0.0026236, 0.002626, 0.0026236, 0.002626, 5.70312857], [1516521300000, 0.002626, 0.00262601, 0.00261682, 0.002626, 209.67841345], [1516521360000, 0.002626, 0.00262601, 0.00260119, 0.0026108, 1073.98585383], [1516521420000, 0.0026108, 0.00262591, 0.00260116, 0.00262591, 524.11403415], [1516521480000, 0.0026259, 0.00263, 0.00261081, 0.00262999, 1057.45172362], [1516521540000, 0.00262601, 0.00262999, 0.00262601, 0.00262999, 80.56686055], [1516521600000, 0.00261201, 0.00262999, 0.00261201, 0.00262, 334.04177458], [1516521660000, 0.00262994, 0.00263303, 0.00262021, 0.00263303, 188.42144815], [1516521720000, 0.00263303, 0.00263933, 0.00263303, 0.00263933, 34.8851769], [1516521780000, 0.00263303, 0.00265, 0.00263303, 0.002649, 171.68533346], [1516521840000, 0.002649, 0.00265175, 0.00264898, 0.00265, 142.3648699], [1516521900000, 0.00265, 0.002655, 0.002649, 0.00265, 44.98084324], [1516521960000, 0.00265176, 0.002655, 0.002635, 0.0026371, 453.85694606], [1516522020000, 0.002644, 0.002644, 0.002644, 0.002644, 87.37140994], [1516522080000, 0.002644, 0.002644, 0.00263712, 0.00263712, 207.53620339], [1516522140000, 0.00263712, 0.00264392, 0.00261179, 0.0026417, 227.45017332], [1516522200000, 0.0026417, 0.002644, 0.00263713, 0.0026434, 65.00008797], [1516522260000, 0.0026435, 0.00265, 0.00262603, 0.00265, 705.26677859], [1516522320000, 0.0026436, 0.00264975, 0.0026436, 0.00264975, 7.83197717], [1516522380000, 0.00264967, 0.00264967, 0.00264959, 0.00264959, 98.64215523], [1516522440000, 0.00264948, 0.00264948, 0.00262505, 0.00262505, 17.07504481], [1516522560000, 0.00264947, 0.00264973, 0.00264947, 0.00264973, 183.49404028], [1516522620000, 0.00264965, 0.00265001, 0.00263653, 0.00264993, 233.38554533], [1516522680000, 0.00265, 0.002655, 0.00265, 0.002655, 32.70226004], [1516522740000, 0.00265538, 0.00265863, 0.00265, 0.00265863, 141.9616666], [1516522800000, 0.00265001, 0.00265863, 0.00265, 0.00265863, 310.91079458], [1516522860000, 0.00265863, 0.00265999, 0.00265, 0.00265856, 2053.49661044], [1516522920000, 0.00265859, 0.00266995, 0.00265002, 0.00266599, 505.1233933], [1516522980000, 0.00266599, 0.00267, 0.00265, 0.00266399, 1062.7331794], [1516523040000, 0.00266396, 0.00266968, 0.00266396, 0.00266949, 197.75084886], [1516523100000, 0.00266949, 0.00266949, 0.00266799, 0.00266799, 115.12186933], [1516523160000, 0.00265008, 0.00266, 0.00265008, 0.00265008, 45.08052798], [1516523220000, 0.0026501, 0.00266794, 0.00265009, 0.00265009, 69.98379615], [1516523280000, 0.00266792, 0.00266792, 0.002651, 0.00266784, 182.23081723], [1516523340000, 0.00266784, 0.00266784, 0.0026511, 0.00266783, 418.5300674], [1516523400000, 0.00266783, 0.00266783, 0.002652, 0.002652, 284.18123804], [1516523580000, 0.00266698, 0.002675, 0.002653, 0.002675, 557.18866393], [1516523640000, 0.00266948, 0.00267419, 0.00266596, 0.00266948, 497.51645942], [1516523700000, 0.00266948, 0.00267419, 0.00265009, 0.00266501, 1218.20787528], [1516523760000, 0.002654, 0.00267419, 0.00265013, 0.0026502, 41.11408797], [1516523820000, 0.0026502, 0.00267035, 0.00265008, 0.00267028, 2134.99368114], [1516523880000, 0.00265008, 0.00267033, 0.00265008, 0.00267029, 69.59826377], [1516523940000, 0.00267017, 0.00267017, 0.00265008, 0.00265008, 11.59231435], [1516524000000, 0.00266994, 0.00266994, 0.00265008, 0.00265008, 215.08362014], [1516524060000, 0.00265008, 0.00266896, 0.00265008, 0.00265011, 22.79241797], [1516524120000, 0.00265011, 0.00265011, 0.00265004, 0.00265004, 52.76039723], [1516524180000, 0.00265004, 0.00265004, 0.00265004, 0.00265004, 17.89693041], [1516524240000, 0.00265004, 0.00265004, 0.00264, 0.00265004, 134.35162687], [1516524300000, 0.00265004, 0.00265004, 0.00265004, 0.00265004, 11.97312667], [1516524360000, 0.00264033, 0.00265008, 0.00264028, 0.00265004, 80.23383018], [1516524420000, 0.00264028, 0.00265008, 0.00264028, 0.00265008, 11.47845079], [1516524480000, 0.00265008, 0.00267001, 0.00264033, 0.00264037, 551.30557278], [1516524540000, 0.00264034, 0.00266969, 0.00264, 0.00266968, 360.27812947], [1516524600000, 0.00266969, 0.00266969, 0.00266967, 0.00266967, 14.78656598], [1516524660000, 0.00265, 0.00265, 0.00264039, 0.00264996, 115.29997826], [1516524720000, 0.00264996, 0.00264996, 0.00264978, 0.00264978, 10.18003813], [1516524780000, 0.00264978, 0.0026498, 0.00264112, 0.00264978, 329.99687492], [1516524840000, 0.00264978, 0.0026498, 0.0026497, 0.00264978, 164.88491174], [1516524900000, 0.00264975, 0.0026498, 0.00264975, 0.0026498, 74.80545911], [1516524960000, 0.00264836, 0.0026498, 0.00264836, 0.0026498, 4.58053563], [1516525020000, 0.0026498, 0.0026498, 0.0026498, 0.0026498, 48.15370821], [1516525080000, 0.00264977, 0.00264977, 0.00264977, 0.00264977, 2.10421629], [1516525140000, 0.00264846, 0.00264976, 0.00264841, 0.00264976, 6.78911064], [1516525200000, 0.00264976, 0.00266897, 0.00264836, 0.00266894, 137.45478212], [1516525260000, 0.00266887, 0.00266887, 0.002647, 0.002647, 28.9730981], [1516525320000, 0.00266834, 0.00266834, 0.00266834, 0.00266834, 1.63467433], [1516525380000, 0.00264256, 0.00266801, 0.00264235, 0.0026424, 144.67663435], [1516525440000, 0.0026424, 0.00266537, 0.0026424, 0.00266537, 52.10486901], [1516525500000, 0.00266294, 0.00266294, 0.00264, 0.00264, 291.25199143], [1516525560000, 0.00264009, 0.00265, 0.00262934, 0.00262934, 668.84326728], [1516525620000, 0.00263001, 0.0026424, 0.00263, 0.00263017, 246.2787875], [1516525680000, 0.00262787, 0.00264999, 0.00262787, 0.00264991, 50.88008661], [1516525740000, 0.00262935, 0.00265, 0.00262935, 0.00265, 50.43082297], [1516525800000, 0.00265, 0.00265621, 0.00263002, 0.00263002, 44.93645014], [1516525860000, 0.00263016, 0.00263016, 0.00263016, 0.00263016, 7.33170684], [1516525920000, 0.00263039, 0.00265, 0.00263039, 0.00265, 11.74547332], [1516525980000, 0.00265, 0.00265, 0.00263146, 0.00265, 65.56105582], [1516526040000, 0.00265, 0.0026614, 0.002648, 0.0026614, 175.27287723], [1516526100000, 0.00266286, 0.00266286, 0.00265, 0.00266278, 133.49059443], [1516526160000, 0.00266254, 0.0026627, 0.00266254, 0.0026627, 18.77793217], [1516526220000, 0.00265, 0.00265, 0.00265, 0.00265, 20.0], [1516526280000, 0.00265, 0.00266262, 0.00264222, 0.00266262, 26.05990094], [1516526340000, 0.00265436, 0.00265436, 0.00265436, 0.00265436, 31.02163862], [1516526400000, 0.00265436, 0.00266002, 0.00265002, 0.00265002, 56.26360388], [1516526460000, 0.00265436, 0.00266294, 0.00265003, 0.00266293, 170.30115762], [1516526520000, 0.00266278, 0.00266278, 0.00265002, 0.00265002, 39.61096754], [1516526580000, 0.00265002, 0.00266278, 0.00265002, 0.00266278, 241.45430936], [1516526640000, 0.00266277, 0.00266278, 0.00266277, 0.00266278, 37.18872609], [1516526700000, 0.002652, 0.00266278, 0.002652, 0.002652, 31.5236736], [1516526760000, 0.0026522, 0.00266278, 0.0026522, 0.002653, 185.37486607], [1516526820000, 0.00266276, 0.00266277, 0.00265101, 0.00265101, 610.93554157], [1516526880000, 0.00266278, 0.00266286, 0.00265101, 0.00265102, 27.0910666], [1516526940000, 0.00266185, 0.00266185, 0.00265102, 0.00265102, 64.859837], [1516527000000, 0.00265102, 0.00265102, 0.00263506, 0.00264, 658.11700159], [1516527060000, 0.00263506, 0.00264, 0.00263506, 0.00264, 100.67262823], [1516527120000, 0.00264, 0.00264, 0.00263506, 0.00263506, 49.11126532], [1516527180000, 0.00263506, 0.00264, 0.00263506, 0.00264, 59.75716609], [1516527240000, 0.00264, 0.00264, 0.00264, 0.00264, 74.29390989], [1516527300000, 0.00263999, 0.00264, 0.00263999, 0.00264, 134.07548269], [1516527360000, 0.00264, 0.00264, 0.00264, 0.00264, 13.06426949], [1516527420000, 0.00265998, 0.00265998, 0.00265998, 0.00265998, 2.28759391], [1516527480000, 0.00265997, 0.00265997, 0.00265997, 0.00265997, 3.00700299], [1516527540000, 0.00265995, 0.00265995, 0.00265995, 0.00265995, 20.74382992], [1516527600000, 0.00265994, 0.00265995, 0.00264065, 0.00265994, 65.09691581], [1516527660000, 0.00264071, 0.00264071, 0.00264071, 0.00264071, 1.14456296], [1516527720000, 0.002659, 0.00265995, 0.002659, 0.00265995, 4.53536104], [1516527780000, 0.00265369, 0.0026595, 0.00265369, 0.0026595, 0.74820881], [1516527840000, 0.00265369, 0.0026595, 0.00264072, 0.00264072, 13.71734664], [1516527900000, 0.00264072, 0.00265369, 0.00264071, 0.00265369, 112.78169066], [1516527960000, 0.00265369, 0.00265369, 0.00264072, 0.00265369, 90.63486696], [1516528020000, 0.00265368, 0.00265369, 0.00265368, 0.00265369, 32.16405104], [1516528080000, 0.00265369, 0.0026595, 0.00265369, 0.00265949, 18.60986467], [1516528140000, 0.00265369, 0.00265948, 0.00264071, 0.00265369, 90.59662121], [1516528200000, 0.00265369, 0.00265369, 0.00265369, 0.00265369, 9.33811066], [1516528260000, 0.00265368, 0.00265369, 0.00265368, 0.00265369, 91.42834049], [1516528320000, 0.00265948, 0.0026595, 0.00265948, 0.00265949, 103.12849426], [1516528380000, 0.00265949, 0.00265949, 0.00264104, 0.00264104, 260.08233474], [1516528440000, 0.00265949, 0.0026595, 0.00264128, 0.0026595, 1144.89990539], [1516528500000, 0.00264182, 0.00264187, 0.00264177, 0.00264187, 150.02509782], [1516528560000, 0.0026595, 0.0026595, 0.00264177, 0.00264177, 1.6], [1516528620000, 0.00265994, 0.00266287, 0.0026595, 0.0026595, 99.51275356], [1516528680000, 0.00266287, 0.00266287, 0.0026595, 0.00266287, 23.06927879], [1516528740000, 0.0026595, 0.0026628, 0.0026595, 0.0026595, 47.00842135], [1516528800000, 0.0026627, 0.0026627, 0.00264177, 0.0026627, 60.3293851], [1516528860000, 0.00266159, 0.0026616, 0.00266159, 0.0026616, 16.5], [1516528920000, 0.00264178, 0.00264259, 0.00264178, 0.00264178, 46.0], [1516528980000, 0.00266, 0.00266158, 0.00266, 0.00266158, 31.60529521], [1516529040000, 0.00265, 0.00265, 0.00264178, 0.00264178, 189.08983393], [1516529100000, 0.00264178, 0.00265, 0.00264178, 0.00264178, 55.62384969], [1516529160000, 0.00266157, 0.00266157, 0.00264181, 0.00266157, 20.54097982], [1516529220000, 0.00266153, 0.00266153, 0.00264178, 0.0026615, 174.61737334], [1516529280000, 0.00265807, 0.00266157, 0.00265807, 0.00266157, 62.63075353], [1516529340000, 0.00266157, 0.00266157, 0.00266157, 0.00266157, 2.00700299], [1516529400000, 0.0026419, 0.00266155, 0.00264185, 0.00266155, 13.75719502], [1516529520000, 0.00266154, 0.00266154, 0.002644, 0.002644, 8.65010675], [1516529580000, 0.002644, 0.002644, 0.002644, 0.002644, 48.75399742], [1516529640000, 0.002644, 0.00264404, 0.002644, 0.00264404, 44.86999882], [1516529700000, 0.00264404, 0.00264404, 0.00264404, 0.00264404, 41.86303136], [1516529760000, 0.00264404, 0.00266151, 0.00264404, 0.00264424, 29.81775354], [1516529820000, 0.00265043, 0.00266153, 0.00264424, 0.00264424, 13.53048068], [1516529880000, 0.00264425, 0.00264425, 0.00264424, 0.00264424, 7.10347316], [1516529940000, 0.00264423, 0.00266153, 0.00264423, 0.00266153, 21.91366717], [1516530000000, 0.00266153, 0.00266153, 0.0026614, 0.0026614, 9.04051255], [1516530120000, 0.00266119, 0.00266154, 0.00266119, 0.00266154, 303.40079646], [1516530180000, 0.0026614, 0.00266153, 0.0026614, 0.0026614, 6.21866069], [1516530240000, 0.00266153, 0.00266155, 0.00266153, 0.00266155, 158.7078193], [1516530300000, 0.00266153, 0.0026628, 0.00266153, 0.0026628, 70.35161319], [1516530360000, 0.00266157, 0.00266157, 0.00266153, 0.00266153, 148.7575946], [1516530420000, 0.00266157, 0.0026627, 0.0026614, 0.0026627, 163.20638976], [1516530480000, 0.00266153, 0.00266153, 0.0026614, 0.0026614, 15.65232588], [1516530540000, 0.0026627, 0.0026627, 0.00264452, 0.00264452, 366.6938921], [1516530600000, 0.00264452, 0.0026627, 0.00264452, 0.0026625, 67.81855104], [1516530660000, 0.00264451, 0.00264451, 0.0026445, 0.0026445, 48.45401895], [1516530780000, 0.002655, 0.00266248, 0.002655, 0.00266248, 7.50527107], [1516530840000, 0.002655, 0.002655, 0.0026445, 0.0026445, 160.76788067], [1516530960000, 0.00266246, 0.0026627, 0.00266246, 0.0026627, 377.40155036], [1516531020000, 0.0026627, 0.0026628, 0.00264488, 0.00264488, 105.60672605], [1516531200000, 0.00266286, 0.00266287, 0.0026462, 0.00266287, 171.04777089], [1516531260000, 0.00266287, 0.0026649, 0.00266287, 0.00266489, 920.78795397], [1516531320000, 0.00266287, 0.00266287, 0.00264731, 0.00266287, 260.71604075], [1516531380000, 0.00266287, 0.0026649, 0.00266287, 0.0026649, 21.2], [1516531440000, 0.00264946, 0.002668, 0.00264946, 0.002668, 26.41970651], [1516531500000, 0.00266897, 0.00266897, 0.0026649, 0.0026649, 26.7444544], [1516531560000, 0.002668, 0.00266946, 0.0026649, 0.00266946, 305.9075162], [1516531680000, 0.00266, 0.00266, 0.00264844, 0.00264844, 46.85782373], [1516531800000, 0.00266, 0.00266, 0.00265999, 0.00266, 106.85166275], [1516531860000, 0.00266, 0.00266, 0.00264844, 0.00264844, 137.20206183], [1516531920000, 0.0026599, 0.00266001, 0.0026599, 0.00266001, 1023.68173388], [1516531980000, 0.00266, 0.00266939, 0.00264845, 0.00264845, 259.01108199], [1516532040000, 0.00264844, 0.00266939, 0.00264844, 0.00266937, 350.68000875], [1516532100000, 0.002649, 0.0026693, 0.002649, 0.002669, 211.17396895], [1516532160000, 0.002669, 0.002669, 0.00266895, 0.00266895, 38.39917905], [1516532220000, 0.00264904, 0.00266893, 0.00264904, 0.00266886, 17.34005437], [1516532280000, 0.00266872, 0.00266872, 0.00266872, 0.00266872, 4.2], [1516532340000, 0.00266797, 0.00266797, 0.002655, 0.002655, 49.2743602], [1516532400000, 0.002655, 0.0026669, 0.002655, 0.0026669, 23.69920912], [1516532460000, 0.002655, 0.002655, 0.00265499, 0.00265499, 54.25741702], [1516532520000, 0.00265, 0.00265, 0.00265, 0.00265, 4.05625944], [1516532580000, 0.00265, 0.00265499, 0.00265, 0.00265499, 9.7346602], [1516532700000, 0.00265498, 0.00265499, 0.00265498, 0.00265499, 271.26596725], [1516532760000, 0.0026561, 0.0026561, 0.0026561, 0.0026561, 85.07128153], [1516532820000, 0.002656, 0.0026561, 0.002656, 0.0026561, 5.51061042], [1516532880000, 0.002649, 0.0026561, 0.0026489, 0.0026561, 206.90816268], [1516533000000, 0.0026561, 0.0026561, 0.00264892, 0.0026561, 67.19620199], [1516533060000, 0.0026561, 0.0026561, 0.00264892, 0.00264892, 93.89522173], [1516533120000, 0.0026561, 0.0026561, 0.00264939, 0.00264939, 76.40110795], [1516533180000, 0.0026561, 0.00266168, 0.0026561, 0.0026561, 101.97531977], [1516533240000, 0.00266666, 0.0026669, 0.0026561, 0.00266666, 23.11928815], [1516533300000, 0.0026565, 0.0026669, 0.0026565, 0.0026669, 4.7877415], [1516533360000, 0.0026669, 0.00267517, 0.0026561, 0.00267499, 190.26909284], [1516533420000, 0.0026669, 0.0026669, 0.0026669, 0.0026669, 21.17995686], [1516533480000, 0.0026669, 0.00267492, 0.0026669, 0.0026669, 249.02737221], [1516533540000, 0.00267487, 0.00267488, 0.00266694, 0.00267484, 20.37894917], [1516533600000, 0.00266695, 0.00267484, 0.0026561, 0.0026561, 1295.82051215], [1516533660000, 0.0026561, 0.00267044, 0.00264985, 0.002655, 64.01959527], [1516533720000, 0.0026561, 0.0026561, 0.0026561, 0.0026561, 10.35385031], [1516533780000, 0.00267044, 0.00267044, 0.00265501, 0.00265501, 3.59955869], [1516533840000, 0.00265501, 0.00265501, 0.00265501, 0.00265501, 9.69303389], [1516533900000, 0.002655, 0.00267044, 0.002655, 0.00267043, 22.61778415], [1516533960000, 0.00267043, 0.00267043, 0.00267043, 0.00267043, 11.00586599], [1516534020000, 0.00267, 0.00267, 0.002661, 0.002661, 398.59550562], [1516534080000, 0.002661, 0.002661, 0.002661, 0.002661, 2.0], [1516534140000, 0.00266999, 0.00266999, 0.00265502, 0.0026551, 76.00464856], [1516534200000, 0.0026551, 0.00266999, 0.00265502, 0.002661, 57.18960604], [1516534260000, 0.002661, 0.002661, 0.00265501, 0.00265501, 59.31009478], [1516534380000, 0.002655, 0.002661, 0.002655, 0.002661, 52.44515499], [1516534440000, 0.002661, 0.002661, 0.00266099, 0.002661, 26.56751624], [1516534500000, 0.00266, 0.002661, 0.002655, 0.002661, 49.52742448], [1516534560000, 0.002661, 0.00266799, 0.002661, 0.00266799, 3.78783134], [1516534620000, 0.002661, 0.002661, 0.002655, 0.002655, 0.90824568], [1516534680000, 0.00266795, 0.00267519, 0.00266, 0.00267294, 220.80255699], [1516534740000, 0.0026703, 0.00267469, 0.00266, 0.00266, 229.0624297], [1516534800000, 0.00266001, 0.00267518, 0.00266001, 0.00267518, 8.96951532], [1516534860000, 0.00266041, 0.00267519, 0.00266041, 0.00267519, 3.4911871], [1516534920000, 0.00267519, 0.0026872, 0.00266042, 0.00268507, 450.69906654], [1516534980000, 0.00268507, 0.00268641, 0.00266108, 0.00268641, 539.65448497], [1516535040000, 0.0026864, 0.0026864, 0.00266209, 0.00266209, 46.07222958], [1516535100000, 0.00268, 0.00269002, 0.0026625, 0.00268194, 566.71979281], [1516535160000, 0.00268185, 0.00268185, 0.00268185, 0.00268185, 16.1480199], [1516535220000, 0.00268188, 0.00268193, 0.00266273, 0.00266273, 418.83041825], [1516535280000, 0.00266295, 0.00268189, 0.0026629, 0.0026629, 64.3531766], [1516535340000, 0.00268189, 0.00268189, 0.00266341, 0.0026638, 102.30002507], [1516535400000, 0.00268189, 0.00268189, 0.0026647, 0.0026647, 17.55603], [1516535460000, 0.00267899, 0.00268188, 0.00267001, 0.00267001, 95.65563558], [1516535520000, 0.00267001, 0.00267001, 0.0026649, 0.0026649, 30.0], [1516535580000, 0.00267002, 0.00267002, 0.00267001, 0.00267001, 78.26269135], [1516535640000, 0.00267001, 0.00267899, 0.00266491, 0.00266491, 183.62426364], [1516535700000, 0.00267899, 0.00268189, 0.00266502, 0.00266502, 27.4256364], [1516535760000, 0.00267899, 0.00268189, 0.00267899, 0.00268189, 65.84280039], [1516535820000, 0.00268189, 0.00268785, 0.00268189, 0.00268785, 62.27749189], [1516535880000, 0.00267883, 0.00269356, 0.00267883, 0.00268785, 192.40247766], [1516535940000, 0.00268785, 0.00269355, 0.00267022, 0.00267048, 291.08819414], [1516536000000, 0.00269347, 0.00269347, 0.0026705, 0.00269199, 139.18489865], [1516536060000, 0.00269355, 0.00269393, 0.00269199, 0.00269393, 62.41842371], [1516536120000, 0.00269393, 0.00269966, 0.00267152, 0.00269966, 174.03405549], [1516536180000, 0.00269966, 0.00270518, 0.00268262, 0.00270518, 369.55504601], [1516536240000, 0.00270001, 0.00270572, 0.00268274, 0.002705, 621.37469934], [1516536300000, 0.002705, 0.002705, 0.00268277, 0.0027, 32.51911509], [1516536360000, 0.00268283, 0.002705, 0.00268283, 0.00269283, 181.60355998], [1516536420000, 0.00269283, 0.002705, 0.00269283, 0.00270497, 15.43692321], [1516536480000, 0.00269283, 0.00270489, 0.00268489, 0.0026849, 135.15230973], [1516536540000, 0.00270475, 0.00270572, 0.0026849, 0.0026849, 328.57558726], [1516536600000, 0.0026849, 0.00270568, 0.00268489, 0.00270557, 278.23951193], [1516536660000, 0.00270556, 0.00270561, 0.00270556, 0.00270556, 488.29363296], [1516536720000, 0.00269524, 0.00270556, 0.0026855, 0.00268551, 13.51539882], [1516536780000, 0.00268552, 0.00268552, 0.00268552, 0.00268552, 257.95233316], [1516536840000, 0.00268551, 0.00269999, 0.00267181, 0.00267188, 521.50685795], [1516536900000, 0.00267199, 0.00268498, 0.0026714, 0.0026714, 454.46717781], [1516536960000, 0.002683, 0.002683, 0.002683, 0.002683, 0.37178531], [1516537020000, 0.002683, 0.002683, 0.002672, 0.002672, 22.43029367], [1516537080000, 0.00268299, 0.00268299, 0.00267142, 0.0026829, 201.78707721], [1516537140000, 0.00267145, 0.002672, 0.00267, 0.002672, 262.12584755], [1516537200000, 0.002672, 0.002672, 0.0026714, 0.0026714, 15.39241193], [1516537260000, 0.00267, 0.002672, 0.0026655, 0.002672, 31.88256513], [1516537320000, 0.0026655, 0.00268247, 0.0026655, 0.00268247, 403.93583862], [1516537380000, 0.00268073, 0.00268073, 0.002672, 0.00268073, 28.23372304], [1516537440000, 0.0026807, 0.00268073, 0.0026807, 0.00268073, 186.07747317], [1516537500000, 0.00268073, 0.00268073, 0.00267201, 0.00267201, 24.17731688], [1516537560000, 0.00267201, 0.00268073, 0.00267201, 0.00268072, 157.68873146], [1516537620000, 0.00268072, 0.00268072, 0.002672, 0.00268, 137.76306594], [1516537680000, 0.00268, 0.00268072, 0.00268, 0.00268072, 24.006861], [1516537740000, 0.00268072, 0.00268072, 0.00267837, 0.00268072, 119.45494525], [1516537800000, 0.00268072, 0.00268072, 0.00268022, 0.00268022, 8.14359498], [1516537860000, 0.00268022, 0.00268022, 0.00268022, 0.00268022, 8.83631249], [1516537980000, 0.00268022, 0.00268072, 0.00268022, 0.0026807, 32.29105982], [1516538040000, 0.0026807, 0.0026807, 0.0026807, 0.0026807, 2.50213644], [1516538100000, 0.00268068, 0.00268072, 0.002672, 0.00268072, 128.57258484], [1516538160000, 0.00268072, 0.00268072, 0.002668, 0.00268, 121.9890783], [1516538220000, 0.00268, 0.00268, 0.002668, 0.002668, 19.38988747], [1516538340000, 0.00267998, 0.00268, 0.00267998, 0.00267998, 156.23062572], [1516538400000, 0.00267998, 0.00268, 0.00267998, 0.00268, 15.11737548], [1516538460000, 0.00268, 0.00268, 0.00266805, 0.00266805, 42.18496034], [1516538520000, 0.00266805, 0.00266805, 0.00266805, 0.00266805, 4.97710009], [1516538580000, 0.002668, 0.002668, 0.002668, 0.002668, 66.01181993], [1516538640000, 0.00267998, 0.00268, 0.00267998, 0.00268, 37.17860487], [1516538700000, 0.00267998, 0.00267998, 0.00267998, 0.00267998, 9.93291858], [1516538760000, 0.00267998, 0.00268, 0.002668, 0.00267998, 65.12952102], [1516538820000, 0.00267998, 0.00267998, 0.00267998, 0.00267998, 7.31235832], [1516538880000, 0.00267998, 0.00267998, 0.00267998, 0.00267998, 6.2127366], [1516538940000, 0.00267995, 0.00267998, 0.002668, 0.002668, 70.94832162], [1516539060000, 0.00267997, 0.00268072, 0.00267997, 0.00267998, 202.0647469], [1516539120000, 0.00267, 0.00267998, 0.00267, 0.00267998, 83.42143108], [1516539180000, 0.00267, 0.00268498, 0.002668, 0.002668, 339.62255836], [1516539240000, 0.002668, 0.00266878, 0.002668, 0.00266878, 255.06520044], [1516539300000, 0.00266878, 0.00269792, 0.002666, 0.00267836, 442.00783641], [1516539360000, 0.00267836, 0.00267836, 0.002666, 0.00266838, 344.09910616], [1516539420000, 0.00266838, 0.00267999, 0.00266838, 0.00266838, 15.79807411], [1516539480000, 0.00267, 0.00268, 0.00266839, 0.00267, 137.77616714], [1516539540000, 0.00266839, 0.00267, 0.00266601, 0.00266601, 42.526837], [1516539600000, 0.00266601, 0.00266601, 0.00266601, 0.00266601, 7.2736719], [1516539660000, 0.00267, 0.00267, 0.002666, 0.002666, 305.93389539], [1516539720000, 0.002666, 0.00266999, 0.002666, 0.002666, 28.85859421], [1516539780000, 0.00266999, 0.00267, 0.002666, 0.00266601, 50.41011026], [1516539840000, 0.00266997, 0.00266997, 0.00266601, 0.00266996, 144.71365005], [1516539900000, 0.00266601, 0.00267, 0.00266601, 0.0026666, 79.50024615], [1516539960000, 0.0026666, 0.0026666, 0.0026666, 0.0026666, 48.50803681], [1516540020000, 0.0026666, 0.00266999, 0.0026666, 0.00266999, 29.07025445], [1516540080000, 0.0026666, 0.00267, 0.0026666, 0.0026666, 574.57661445], [1516540140000, 0.0026666, 0.00267, 0.002666, 0.002666, 772.5408931], [1516540200000, 0.002666, 0.00267, 0.002666, 0.00267, 167.84876617], [1516540260000, 0.00268, 0.00268666, 0.00267, 0.00268659, 422.80336622], [1516540320000, 0.00267001, 0.00267002, 0.00267001, 0.00267002, 43.34480947], [1516540380000, 0.00267002, 0.00269384, 0.00267002, 0.00267003, 108.49114442], [1516540440000, 0.00267003, 0.00267003, 0.00267002, 0.00267002, 84.18210946], [1516540500000, 0.00267002, 0.00267003, 0.00267002, 0.00267003, 95.30435421], [1516540560000, 0.00267001, 0.00267003, 0.00267001, 0.00267001, 137.70071329], [1516540620000, 0.00267001, 0.00267003, 0.00267001, 0.00267003, 64.43767051], [1516540680000, 0.00267002, 0.00267003, 0.00267, 0.00267003, 455.76513176], [1516540740000, 0.00267003, 0.00267003, 0.00267, 0.00267, 1632.06505748], [1516540800000, 0.00267003, 0.00267003, 0.00267, 0.00267, 97.63870075], [1516540860000, 0.00267003, 0.00267003, 0.00267, 0.00267003, 75.3754751], [1516540920000, 0.00267, 0.00267003, 0.00266601, 0.00267003, 73.24957667], [1516540980000, 0.00267003, 0.00267003, 0.002666, 0.002666, 14.75901635], [1516541040000, 0.00268398, 0.00268398, 0.002666, 0.002666, 36.66200256], [1516541100000, 0.002666, 0.0026838, 0.002666, 0.0026837, 53.79888556], [1516541160000, 0.002666, 0.00266601, 0.002666, 0.00266601, 21.99222464], [1516541220000, 0.00266601, 0.00267987, 0.002666, 0.00267987, 12.4722727], [1516541280000, 0.002666, 0.002666, 0.002666, 0.002666, 0.82708178], [1516541340000, 0.00267979, 0.00267979, 0.0026661, 0.00266611, 25.81370921], [1516541400000, 0.00266611, 0.00267976, 0.00266611, 0.00266612, 82.92698413], [1516541460000, 0.00267973, 0.00267973, 0.00266612, 0.00266612, 18.95747483], [1516541520000, 0.00266612, 0.00266612, 0.00266612, 0.00266612, 9.67824928], [1516541580000, 0.00266612, 0.00267598, 0.00266612, 0.00266612, 6.97979561], [1516541640000, 0.00266612, 0.002674, 0.00266612, 0.00266612, 193.03544378], [1516541700000, 0.00266611, 0.00267299, 0.00266611, 0.00267199, 55.53905199], [1516541760000, 0.002672, 0.002674, 0.002672, 0.002674, 45.25323366], [1516541820000, 0.002672, 0.00267399, 0.002672, 0.00267399, 8.10476493], [1516541880000, 0.002672, 0.00267399, 0.00266612, 0.00266612, 11.32734579], [1516541940000, 0.002673, 0.002673, 0.002673, 0.002673, 6.42346535], [1516542000000, 0.002673, 0.002674, 0.00267299, 0.002674, 177.98063139], [1516542060000, 0.002674, 0.002674, 0.002674, 0.002674, 0.41230366], [1516542120000, 0.0026745, 0.00268226, 0.002674, 0.002674, 129.00442789], [1516542180000, 0.002674, 0.00267401, 0.002674, 0.00267401, 55.76119859], [1516542240000, 0.00267401, 0.0026755, 0.00267401, 0.0026742, 17.42420067], [1516542300000, 0.0026755, 0.0026755, 0.002674, 0.002674, 260.19761069], [1516542360000, 0.0026742, 0.0026742, 0.0026741, 0.0026741, 5.37210354], [1516542420000, 0.0026741, 0.0026741, 0.0026741, 0.0026741, 0.8245765], [1516542480000, 0.0026742, 0.0026742, 0.0026741, 0.0026741, 559.0675528], [1516542540000, 0.0026742, 0.0026742, 0.00266621, 0.00266621, 258.65043751], [1516542600000, 0.00266624, 0.0026742, 0.00266624, 0.00266624, 72.26096132], [1516542660000, 0.0026742, 0.0026742, 0.00266628, 0.00266628, 37.85422157], [1516542720000, 0.0026663, 0.00267, 0.0026663, 0.00267, 11.67755209], [1516542780000, 0.00267, 0.0026742, 0.00267, 0.0026742, 62.1343885], [1516542840000, 0.0026701, 0.0026701, 0.00267, 0.00267, 35.91967679], [1516542900000, 0.00267, 0.00267, 0.00266626, 0.00266626, 121.28052728], [1516542960000, 0.002674, 0.002674, 0.00266626, 0.00266626, 35.59905941], [1516543020000, 0.00267159, 0.00267549, 0.00266626, 0.002675, 218.34901863], [1516543080000, 0.00267549, 0.00267549, 0.00266626, 0.00267497, 171.67895444], [1516543140000, 0.00267497, 0.00267497, 0.00267497, 0.00267497, 3.3732417], [1516543200000, 0.00266627, 0.00267497, 0.00266626, 0.00267497, 23.32212865], [1516543260000, 0.00267497, 0.00267497, 0.00266626, 0.00266626, 95.11716816], [1516543320000, 0.00266626, 0.00267494, 0.00266626, 0.00267494, 91.2068916], [1516543380000, 0.00266626, 0.00267493, 0.00266626, 0.00266626, 21.77948665], [1516543440000, 0.00266626, 0.00267491, 0.00266626, 0.00267491, 6.71387453], [1516543500000, 0.0026749, 0.00267493, 0.0026749, 0.00267493, 64.13025568], [1516543560000, 0.00267491, 0.00267491, 0.00266626, 0.00266626, 291.10076582], [1516543620000, 0.00266626, 0.00266626, 0.00266626, 0.00266626, 98.55510241], [1516543680000, 0.00266627, 0.00266627, 0.00266627, 0.00266627, 67.45452321], [1516543860000, 0.00266627, 0.00266627, 0.00266627, 0.00266627, 25.48518996], [1516543920000, 0.00266628, 0.002674, 0.00266627, 0.00266627, 215.23886872], [1516543980000, 0.00266627, 0.00266627, 0.00266626, 0.00266627, 158.49875685], [1516544040000, 0.00266634, 0.00266634, 0.00266627, 0.00266627, 319.13839394], [1516544100000, 0.00266627, 0.00267981, 0.00266621, 0.00266621, 763.90825011], [1516544160000, 0.00267981, 0.00267981, 0.00267981, 0.00267981, 24.41656708], [1516544220000, 0.00267981, 0.00267981, 0.002666, 0.002666, 163.6659067], [1516544280000, 0.002666, 0.00267943, 0.00266049, 0.00267926, 371.76542039], [1516544340000, 0.002661, 0.0026789, 0.00266049, 0.0026789, 614.14030564], [1516544400000, 0.00266049, 0.00267839, 0.00266049, 0.00267839, 98.08723551], [1516544460000, 0.00266049, 0.002661, 0.00265643, 0.002661, 13.88671793], [1516544520000, 0.002661, 0.00267687, 0.00265643, 0.00265643, 22.95308109], [1516544580000, 0.00265643, 0.00265643, 0.00265643, 0.00265643, 0.22645278], [1516544640000, 0.00265643, 0.00265643, 0.00265643, 0.00265643, 62.30319631], [1516544700000, 0.00265648, 0.00266642, 0.002656, 0.00265643, 202.75658935], [1516544760000, 0.0026595, 0.00266143, 0.0026595, 0.0026595, 386.95434582], [1516544820000, 0.00266143, 0.00266638, 0.00265643, 0.00265643, 126.96849445], [1516544940000, 0.00265643, 0.00266643, 0.00264488, 0.00266643, 504.79762257], [1516545000000, 0.00265644, 0.00266175, 0.00265644, 0.00266175, 0.6227084], [1516545060000, 0.00266618, 0.00266618, 0.00265644, 0.00265644, 9.96683981], [1516545120000, 0.00266618, 0.00266618, 0.002655, 0.00265644, 282.22470902], [1516545180000, 0.002655, 0.00265644, 0.00264505, 0.00264505, 48.9126301], [1516545240000, 0.00264506, 0.00266488, 0.00264488, 0.00266488, 2247.41196916], [1516545300000, 0.00266488, 0.00266488, 0.00265135, 0.00265135, 93.8994957], [1516545360000, 0.00265135, 0.00265135, 0.00264514, 0.00265135, 142.05713187], [1516545420000, 0.00265135, 0.00265135, 0.00264516, 0.00264516, 4.2135893], [1516545480000, 0.00265135, 0.00265135, 0.0026445, 0.00265135, 555.58514975], [1516545540000, 0.0026513, 0.0026513, 0.0026445, 0.0026513, 368.67604174], [1516545600000, 0.0026511, 0.0026511, 0.0026445, 0.0026445, 9.25500358], [1516545660000, 0.002643, 0.0026445, 0.00263848, 0.0026445, 232.85256482], [1516545720000, 0.0026445, 0.0026513, 0.0026445, 0.0026513, 22.0800691], [1516545780000, 0.00265014, 0.00265014, 0.0026445, 0.0026445, 49.99999984], [1516545840000, 0.00263849, 0.0026511, 0.00263848, 0.0026511, 133.89105993], [1516545900000, 0.0026511, 0.0026513, 0.0026356, 0.0026513, 81.28749605], [1516545960000, 0.0026513, 0.0026513, 0.0026356, 0.0026356, 28.52471327], [1516546020000, 0.0026356, 0.00266451, 0.0026356, 0.00263562, 1318.36786517], [1516546080000, 0.00266197, 0.00266197, 0.00263562, 0.00266147, 179.8003459], [1516546140000, 0.00266144, 0.00266147, 0.00263582, 0.00266145, 134.26842885], [1516546200000, 0.00265534, 0.00266145, 0.00263565, 0.00266145, 159.00630488], [1516546260000, 0.00266145, 0.00266146, 0.002636, 0.00265905, 64.30603623], [1516546320000, 0.002636, 0.00265905, 0.0026357, 0.0026357, 516.22778854], [1516546380000, 0.0026357, 0.00263905, 0.0026357, 0.0026357, 30.4061385], [1516546440000, 0.00263595, 0.00263595, 0.00263575, 0.00263575, 45.04939528], [1516546500000, 0.00265789, 0.00265789, 0.00263566, 0.0026575, 173.16320251], [1516546560000, 0.00265741, 0.00265741, 0.0026357, 0.00265499, 14.31537357], [1516546620000, 0.0026357, 0.002636, 0.0026357, 0.002636, 1.23024412], [1516546680000, 0.0026499, 0.0026499, 0.002636, 0.00263601, 8.1160053], [1516546740000, 0.00263601, 0.00263601, 0.00263601, 0.00263601, 3.55616241], [1516546800000, 0.00263624, 0.002649, 0.00263624, 0.002649, 65.80290508], [1516546860000, 0.002649, 0.002649, 0.002649, 0.002649, 45.14686854], [1516546920000, 0.00263851, 0.00264, 0.0026385, 0.00264, 78.25918319], [1516546980000, 0.0026489, 0.0026489, 0.00263851, 0.0026489, 96.8237988], [1516547040000, 0.0026489, 0.0026489, 0.0026489, 0.0026489, 59.91466438], [1516547100000, 0.0026489, 0.0026489, 0.00263611, 0.0026489, 110.42729734], [1516547160000, 0.0026489, 0.002649, 0.0026489, 0.0026489, 393.62571982], [1516547220000, 0.002649, 0.002649, 0.002649, 0.002649, 223.73096801], [1516547280000, 0.002649, 0.002649, 0.00263852, 0.00263852, 66.79473664], [1516547340000, 0.00263611, 0.002649, 0.00263, 0.00263004, 1141.27459245], [1516547400000, 0.002649, 0.002649, 0.002638, 0.002649, 20.43757094], [1516547460000, 0.0026489, 0.002649, 0.0026489, 0.002649, 312.47071534], [1516547520000, 0.002649, 0.002649, 0.00264899, 0.002649, 7.62441597], [1516547580000, 0.00264899, 0.002649, 0.00264899, 0.002649, 146.47923845], [1516547640000, 0.002649, 0.002649, 0.002649, 0.002649, 6.37453177], [1516547700000, 0.002649, 0.002649, 0.00263603, 0.002649, 63.37449064], [1516547760000, 0.002649, 0.002649, 0.002648, 0.002648, 96.14121796], [1516547880000, 0.002648, 0.00264801, 0.002648, 0.00264801, 11.53087459], [1516547940000, 0.00264801, 0.00264899, 0.00264801, 0.00264801, 16.53245308], [1516548000000, 0.00264899, 0.002649, 0.00264802, 0.00264802, 169.8753524], [1516548060000, 0.00264806, 0.002649, 0.00264806, 0.002649, 1218.521069], [1516548120000, 0.002649, 0.002649, 0.00264809, 0.00264811, 712.06846917], [1516548180000, 0.00264811, 0.00264813, 0.0026481, 0.00264813, 30.40276168], [1516548240000, 0.00264813, 0.00264813, 0.00264813, 0.00264813, 0.44436667], [1516548300000, 0.00264899, 0.00264899, 0.00264899, 0.00264899, 3.77502368], [1516548360000, 0.00264899, 0.00264899, 0.00264814, 0.00264814, 27.62396002], [1516548420000, 0.00264899, 0.00264899, 0.00264814, 0.00264814, 27.41543378], [1516548480000, 0.00264814, 0.00264899, 0.00264814, 0.00264899, 71.7220539], [1516548540000, 0.00264899, 0.00264899, 0.00264899, 0.00264899, 15.08136073], [1516548600000, 0.00264899, 0.002649, 0.00264899, 0.002649, 330.31988999], [1516548660000, 0.002649, 0.00265768, 0.002649, 0.00265502, 368.71265122], [1516548720000, 0.00265767, 0.00265767, 0.00264813, 0.00265767, 39.9204807], [1516548780000, 0.00265767, 0.00265767, 0.00264813, 0.00264813, 454.09917544], [1516548840000, 0.00265343, 0.00265343, 0.00264813, 0.00264813, 87.34310911], [1516548900000, 0.00265343, 0.00265343, 0.00264813, 0.00264813, 16.92718345], [1516548960000, 0.00265, 0.00265, 0.00265, 0.00265, 4.19563616], [1516549020000, 0.00265184, 0.00265184, 0.00265184, 0.00265184, 0.87141723], [1516549080000, 0.00265, 0.00265, 0.00265, 0.00265, 34.77514764], [1516549140000, 0.00264813, 0.00264813, 0.00264813, 0.00264813, 0.96921126], [1516549200000, 0.00263732, 0.00265343, 0.00263732, 0.00263732, 176.31773483], [1516549260000, 0.00263732, 0.00263733, 0.002636, 0.00263731, 110.63994578], [1516549320000, 0.00263731, 0.00263731, 0.002636, 0.00263731, 234.39834435], [1516549380000, 0.002638, 0.00265297, 0.00263, 0.002631, 848.58415648], [1516549440000, 0.002651, 0.002651, 0.00262674, 0.00264404, 475.6858607], [1516549500000, 0.00262674, 0.00265278, 0.00262674, 0.00264139, 75.62969254], [1516549560000, 0.00264404, 0.00264404, 0.00263004, 0.00263004, 139.19952796], [1516549620000, 0.00263004, 0.00264139, 0.00263004, 0.00264139, 140.16263422], [1516549680000, 0.00263003, 0.00265905, 0.00262715, 0.00263007, 960.04848251], [1516549740000, 0.00263051, 0.0026586, 0.00263051, 0.00265859, 343.15391227], [1516549800000, 0.00263107, 0.00265856, 0.00263107, 0.0026579, 79.4573527], [1516549860000, 0.002633, 0.002633, 0.002633, 0.002633, 38.65682766], [1516549920000, 0.002654, 0.002654, 0.002654, 0.002654, 118.29170195], [1516549980000, 0.002654, 0.00265905, 0.00263301, 0.00263301, 163.47582667], [1516550040000, 0.0026399, 0.0026399, 0.002633, 0.002633, 72.91512022], [1516550100000, 0.0026399, 0.0026399, 0.0026305, 0.00263154, 282.06880183], [1516550160000, 0.002633, 0.0026399, 0.002633, 0.0026399, 149.18386873], [1516550220000, 0.0026399, 0.0026399, 0.00263454, 0.00263454, 32.21164368], [1516550280000, 0.00263545, 0.0026399, 0.00263454, 0.0026399, 221.29574036], [1516550340000, 0.00263454, 0.0026399, 0.00263155, 0.00263454, 98.42443386], [1516550400000, 0.00263155, 0.0026399, 0.00263154, 0.00263154, 271.48039981], [1516550460000, 0.00263051, 0.0026345, 0.00263051, 0.0026345, 228.10790671], [1516550520000, 0.0026345, 0.0026399, 0.00263051, 0.0026399, 5.906817], [1516550580000, 0.00263154, 0.00263989, 0.00263101, 0.00263989, 48.06555813], [1516550640000, 0.00263154, 0.00263154, 0.00262676, 0.00262676, 127.50636284], [1516550700000, 0.00262676, 0.00263154, 0.00262162, 0.00262162, 470.82205751], [1516550760000, 0.00262157, 0.00262916, 0.00262003, 0.002621, 178.33115665], [1516550820000, 0.00262162, 0.00262162, 0.002621, 0.002621, 42.2240982], [1516550880000, 0.002621, 0.002621, 0.002621, 0.002621, 91.06676364], [1516550940000, 0.002621, 0.00262979, 0.002617, 0.00262976, 1390.64364674], [1516551000000, 0.002621, 0.0026298, 0.002617, 0.002617, 143.29636748], [1516551060000, 0.00262958, 0.00262958, 0.002617, 0.002617, 370.04229596], [1516551120000, 0.00261692, 0.00262945, 0.00261692, 0.00262945, 461.32800721], [1516551180000, 0.00262945, 0.00262945, 0.00261701, 0.00261701, 146.87862043], [1516551240000, 0.00261701, 0.00261701, 0.002617, 0.00261701, 474.98610283], [1516551300000, 0.002617, 0.00261701, 0.00261012, 0.00261349, 314.89309877], [1516551360000, 0.00261349, 0.00261701, 0.00261011, 0.00261349, 154.78199192], [1516551420000, 0.00261701, 0.00262916, 0.00261011, 0.00261011, 101.14402206], [1516551480000, 0.002629, 0.002629, 0.0026102, 0.0026102, 14.52837744], [1516551540000, 0.00262896, 0.00262913, 0.0026102, 0.00262913, 212.0904534], [1516551600000, 0.00262912, 0.00262912, 0.00261, 0.00261004, 1092.04527561], [1516551660000, 0.00261004, 0.00262912, 0.00261, 0.00261004, 278.71186404], [1516551720000, 0.00261004, 0.00262913, 0.00261004, 0.00261021, 1215.69155624], [1516551780000, 0.0026111, 0.0026291, 0.0026111, 0.0026291, 89.5497831], [1516551840000, 0.0026291, 0.0026291, 0.00261154, 0.0026291, 60.23297581], [1516551900000, 0.00262908, 0.00262908, 0.002612, 0.0026122, 47.65059612], [1516551960000, 0.00261184, 0.00261908, 0.00261006, 0.00261006, 227.18025118], [1516552020000, 0.00261007, 0.00261007, 0.0026, 0.0026001, 5587.69974771], [1516552080000, 0.0026001, 0.00261006, 0.00260006, 0.0026001, 207.29455431], [1516552140000, 0.002601, 0.00261006, 0.0026, 0.0026, 1792.08317442], [1516552200000, 0.00260012, 0.00260012, 0.002593, 0.002593, 805.50812512], [1516552260000, 0.00259307, 0.00260997, 0.00259295, 0.00259295, 1631.83259271], [1516552320000, 0.00259295, 0.00261956, 0.00259295, 0.00261956, 95.10318628], [1516552380000, 0.00261956, 0.00261956, 0.00259414, 0.00259414, 73.57312091], [1516552440000, 0.00259516, 0.00261303, 0.00259516, 0.0026, 225.31775033], [1516552500000, 0.00261286, 0.00261303, 0.0026, 0.00261303, 54.39206538], [1516552560000, 0.002613, 0.002613, 0.002613, 0.002613, 4.7659552], [1516552620000, 0.002613, 0.00261311, 0.002613, 0.00261311, 142.288726], [1516552680000, 0.00261303, 0.0026131, 0.00261303, 0.00261303, 16.86367256], [1516552740000, 0.00261309, 0.00261311, 0.00261303, 0.00261311, 139.23797811], [1516552800000, 0.00261954, 0.00262, 0.00261953, 0.00262, 98.96634028], [1516552860000, 0.00262, 0.00262656, 0.00261953, 0.0026202, 19.15693329], [1516552920000, 0.0026202, 0.00262896, 0.00262, 0.00262895, 52.59624975], [1516552980000, 0.0026202, 0.00262895, 0.002615, 0.00262, 154.92698212], [1516553040000, 0.002615, 0.00262953, 0.002615, 0.00262953, 103.1003572], [1516553100000, 0.00262953, 0.00262953, 0.00261303, 0.00261303, 217.6224175], [1516553160000, 0.00261309, 0.00262953, 0.00261309, 0.00262953, 212.4046772], [1516553220000, 0.00262953, 0.00263263, 0.00262953, 0.00263263, 40.94251174], [1516553280000, 0.00263263, 0.00263263, 0.00262953, 0.00262953, 70.10437006], [1516553340000, 0.00261326, 0.00263746, 0.00261326, 0.0026198, 163.31292869], [1516553400000, 0.0026198, 0.002637, 0.0026198, 0.002637, 80.81246988], [1516553460000, 0.00263065, 0.002637, 0.00263065, 0.002637, 22.27663456], [1516553520000, 0.002637, 0.00263748, 0.00261639, 0.00263748, 350.2025642], [1516553580000, 0.00262165, 0.00263976, 0.00262165, 0.00263976, 72.43345532], [1516553640000, 0.00263976, 0.0026435, 0.00263976, 0.0026417, 127.79332608], [1516553700000, 0.0026417, 0.0026417, 0.00262427, 0.00262519, 77.57114457], [1516553760000, 0.00262554, 0.00264894, 0.00262554, 0.00264894, 90.0082551], [1516553820000, 0.0026417, 0.00264912, 0.0026417, 0.0026417, 40.1399917], [1516553880000, 0.0026417, 0.00264895, 0.00262555, 0.00264895, 272.23449175], [1516553940000, 0.0026417, 0.00264892, 0.0026258, 0.00262601, 173.50592406], [1516554000000, 0.00264892, 0.00264892, 0.00262613, 0.00264606, 70.60960462], [1516554120000, 0.00263618, 0.00263618, 0.00263618, 0.00263618, 1.11247771], [1516554180000, 0.00263618, 0.00263618, 0.00260005, 0.00260005, 1338.47766042], [1516554240000, 0.00260232, 0.00260232, 0.00260223, 0.00260223, 64.34520284], [1516554300000, 0.00264491, 0.00264491, 0.00261501, 0.00261501, 15.1459813], [1516554360000, 0.00261601, 0.00264454, 0.002615, 0.002636, 235.5158876], [1516554420000, 0.002636, 0.002636, 0.00261501, 0.00262539, 108.6716879], [1516554480000, 0.00261501, 0.00263579, 0.002615, 0.002615, 77.04687027], [1516554540000, 0.002615, 0.002635, 0.002615, 0.002635, 7.17707175], [1516554600000, 0.00261501, 0.00263576, 0.00261501, 0.00261501, 67.00596433], [1516554660000, 0.00262, 0.00262, 0.00262, 0.00262, 42.83688874], [1516554720000, 0.00262, 0.00263489, 0.00260506, 0.00263486, 1055.25279439], [1516554780000, 0.00263484, 0.00263484, 0.00263462, 0.00263462, 215.45735773], [1516554840000, 0.002612, 0.002612, 0.002612, 0.002612, 10.0], [1516554900000, 0.002612, 0.00263269, 0.00260225, 0.00261186, 82.73457727], [1516554960000, 0.00261186, 0.00261186, 0.00261, 0.00261, 72.44923816], [1516555020000, 0.00261001, 0.00261001, 0.00261, 0.00261, 308.74897581], [1516555080000, 0.00261001, 0.00261001, 0.00261, 0.00261, 29.89597293], [1516555140000, 0.00261, 0.00261, 0.00260275, 0.00260275, 113.01554827], [1516555200000, 0.00262121, 0.00262121, 0.00260276, 0.00260284, 1045.496673], [1516555260000, 0.0026031, 0.00262113, 0.00260284, 0.00262113, 91.7324], [1516555320000, 0.00261865, 0.00261865, 0.00260284, 0.00261865, 154.74583429], [1516555380000, 0.00261284, 0.00261865, 0.0026, 0.00261864, 117.93015235], [1516555440000, 0.00261865, 0.00261865, 0.00261865, 0.00261865, 58.3638798], [1516555500000, 0.00261864, 0.00262121, 0.00261864, 0.00262121, 38.1280031], [1516555680000, 0.002603, 0.002612, 0.00260284, 0.00260284, 71.43373279], [1516555740000, 0.00260285, 0.002612, 0.00260284, 0.002612, 166.21252848], [1516555800000, 0.00260284, 0.00261891, 0.00260284, 0.002603, 85.6424121], [1516555860000, 0.00260284, 0.00262116, 0.00260284, 0.00262116, 109.22839995], [1516555920000, 0.002603, 0.00261297, 0.002603, 0.00261297, 3.0676066], [1516555980000, 0.00262117, 0.00262117, 0.00261297, 0.00261297, 23.42847794], [1516556040000, 0.00262118, 0.00262118, 0.00262118, 0.00262118, 2.18898548], [1516556100000, 0.0026211, 0.0026211, 0.00262109, 0.0026211, 50.51362257], [1516556220000, 0.00260501, 0.0026211, 0.00260501, 0.00261001, 132.59305092], [1516556280000, 0.00262107, 0.00262109, 0.0026111, 0.00262109, 330.45802666], [1516556340000, 0.00260582, 0.00262109, 0.00260502, 0.00260512, 77.29467501], [1516556400000, 0.0026102, 0.0026102, 0.00260502, 0.00260552, 243.13042222], [1516556460000, 0.002621, 0.00262109, 0.00260552, 0.00260552, 113.70092739], [1516556520000, 0.00262109, 0.00262109, 0.00262109, 0.00262109, 8.41816566], [1516556580000, 0.00262109, 0.00262109, 0.002606, 0.002607, 17.31143022], [1516556640000, 0.002607, 0.002607, 0.002607, 0.002607, 6.63], [1516556700000, 0.00262107, 0.00262109, 0.00262107, 0.00262109, 41.86836815], [1516556760000, 0.00262109, 0.00262109, 0.00262109, 0.00262109, 3.0], [1516556820000, 0.00262109, 0.0026211, 0.00262109, 0.0026211, 179.17625534], [1516556880000, 0.00262119, 0.00263224, 0.00262119, 0.00263224, 22.52350028], [1516556940000, 0.00263231, 0.00263231, 0.00263231, 0.00263231, 60.1843543], [1516557000000, 0.0026215, 0.00263213, 0.0026215, 0.0026215, 78.32963193], [1516557060000, 0.0026215, 0.00263159, 0.0026215, 0.00263159, 17.24727862], [1516557120000, 0.00262151, 0.00263212, 0.00262151, 0.00263212, 55.92354622], [1516557180000, 0.002625, 0.002625, 0.002615, 0.002615, 125.19287303], [1516557240000, 0.002625, 0.00263158, 0.002625, 0.00263158, 2.94261766], [1516557300000, 0.00262505, 0.00263072, 0.002625, 0.002625, 28.58367568], [1516557360000, 0.002625, 0.002625, 0.002625, 0.002625, 11.69041116], [1516557420000, 0.002625, 0.00262502, 0.002625, 0.00262502, 62.64606176], [1516557480000, 0.002626, 0.0026324, 0.002625, 0.002625, 276.53415002], [1516557600000, 0.00263238, 0.0026324, 0.002625, 0.0026324, 24.98324012], [1516557660000, 0.00263237, 0.00263237, 0.00263237, 0.00263237, 0.7189565], [1516557720000, 0.00263232, 0.00263232, 0.00263199, 0.00263199, 109.59948949], [1516557780000, 0.00262999, 0.00262999, 0.00262999, 0.00262999, 3.16545557], [1516557840000, 0.00262999, 0.00262999, 0.002625, 0.002625, 12.0486035], [1516557900000, 0.00263197, 0.00263197, 0.002625, 0.002625, 23.31668673], [1516558020000, 0.00263188, 0.00263999, 0.002625, 0.00263999, 833.40324859], [1516558080000, 0.00263199, 0.00264, 0.00263199, 0.00264, 388.99355236], [1516558140000, 0.00263199, 0.00263199, 0.00262501, 0.00263199, 150.35876249], [1516558200000, 0.00263199, 0.00263199, 0.00263199, 0.00263199, 39.8091368], [1516558260000, 0.0026319, 0.0026319, 0.00263, 0.00263, 14.79055194], [1516558320000, 0.00262505, 0.00263, 0.002625, 0.002625, 863.48632385], [1516558380000, 0.00263, 0.00263, 0.002625, 0.00263, 5.74888359], [1516558440000, 0.00263, 0.00263, 0.00263, 0.00263, 13.13066555], [1516558500000, 0.00263, 0.00263, 0.002625, 0.002625, 307.90504491], [1516558560000, 0.00263, 0.00263, 0.00263, 0.00263, 53.65170186], [1516558620000, 0.00262999, 0.00262999, 0.002625, 0.002625, 2.33203145], [1516558680000, 0.002625, 0.002625, 0.002625, 0.002625, 8.01328665], [1516558740000, 0.00262999, 0.00262999, 0.00262997, 0.00262997, 1.28122076], [1516558800000, 0.002625, 0.00262997, 0.002625, 0.00262997, 28.80232474], [1516558860000, 0.00262997, 0.00262997, 0.00262997, 0.00262997, 5.76444134], [1516558920000, 0.00262997, 0.00262997, 0.00262997, 0.00262997, 0.63683706], [1516558980000, 0.00262997, 0.00262997, 0.00262996, 0.00262996, 14.1327668], [1516559040000, 0.00262996, 0.00262996, 0.00262996, 0.00262996, 0.46579786], [1516559100000, 0.00262797, 0.00262995, 0.00262797, 0.00262995, 13.88913552], [1516559160000, 0.00262797, 0.00262995, 0.002625, 0.00262993, 175.55218571], [1516559220000, 0.002625, 0.00262993, 0.00261508, 0.00262993, 254.13342385], [1516559280000, 0.00261508, 0.0026299, 0.00261003, 0.0026299, 49.92980337], [1516559400000, 0.00261028, 0.00261028, 0.00261, 0.00261007, 686.00078552], [1516559460000, 0.00262, 0.002629, 0.00262, 0.002629, 74.2161214], [1516559520000, 0.002629, 0.002629, 0.00262892, 0.00262892, 69.039513], [1516559580000, 0.002629, 0.002629, 0.00261599, 0.00261599, 4.1182207], [1516559640000, 0.00261599, 0.00261999, 0.00261002, 0.00261999, 24.73706302], [1516559700000, 0.00262775, 0.00262775, 0.00261999, 0.00261999, 17.45854299], [1516559760000, 0.00261999, 0.002625, 0.00261999, 0.002625, 17.33250735], [1516559820000, 0.00261001, 0.00261003, 0.00261, 0.00261003, 75.4321526], [1516559880000, 0.00262498, 0.00262498, 0.00262498, 0.00262498, 3.25648421], [1516559940000, 0.00262, 0.00262, 0.00262, 0.00262, 21.905107], [1516560000000, 0.00262, 0.00262989, 0.00262, 0.002621, 20.74633292], [1516560060000, 0.00262973, 0.00262982, 0.00261, 0.00262982, 251.48593115], [1516560120000, 0.002621, 0.002621, 0.002621, 0.002621, 1.0], [1516560180000, 0.002621, 0.002621, 0.002621, 0.002621, 2.83985335], [1516560240000, 0.0026101, 0.0026101, 0.0026101, 0.0026101, 20.97504198], [1516560300000, 0.00261011, 0.00262988, 0.00261011, 0.00262988, 9.66507148], [1516560360000, 0.002621, 0.002621, 0.002621, 0.002621, 57.75913953], [1516560420000, 0.00261013, 0.00261013, 0.00261013, 0.00261013, 37.14544562], [1516560480000, 0.00261013, 0.002615, 0.00261013, 0.00261113, 23.08148144], [1516560540000, 0.002615, 0.002621, 0.002615, 0.002621, 18.6442098], [1516560600000, 0.00262099, 0.002621, 0.00262099, 0.002621, 10.16278588], [1516560660000, 0.00261114, 0.002629, 0.00261114, 0.00262899, 1664.37865318], [1516560720000, 0.00261115, 0.00261115, 0.00261115, 0.00261115, 2.77031338], [1516560780000, 0.00261116, 0.00261116, 0.00261116, 0.00261116, 2.210914], [1516560840000, 0.00262886, 0.00262886, 0.00262886, 0.00262886, 85.88386936], [1516560900000, 0.002625, 0.002625, 0.00262498, 0.00262499, 743.88436934], [1516560960000, 0.00262499, 0.002625, 0.00261121, 0.00262498, 193.6631803], [1516561020000, 0.002621, 0.00262489, 0.00261122, 0.00262489, 48.38233416], [1516561080000, 0.00261122, 0.00262488, 0.00261122, 0.00261122, 27.49052973], [1516561140000, 0.00261122, 0.00262498, 0.00261122, 0.00262498, 112.61544955], [1516561200000, 0.00262498, 0.002625, 0.00262498, 0.00262498, 141.84092819], [1516561260000, 0.00262498, 0.002625, 0.00262498, 0.002625, 67.17534654], [1516561320000, 0.00262, 0.00262, 0.00262, 0.00262, 0.5], [1516561380000, 0.00262, 0.002625, 0.00262, 0.002625, 51.49208617], [1516561440000, 0.00262, 0.00262, 0.00262, 0.00262, 20.0], [1516561500000, 0.00262, 0.002624, 0.00262, 0.00262, 134.56369918], [1516561560000, 0.002624, 0.002624, 0.00262, 0.00262, 34.68335824], [1516561620000, 0.00262, 0.00262, 0.00262, 0.00262, 14.61978054], [1516561680000, 0.002624, 0.0026289, 0.002624, 0.0026289, 102.53314604], [1516561740000, 0.0026289, 0.00264, 0.0026289, 0.00264, 549.70078747], [1516561800000, 0.00264, 0.00264, 0.00263, 0.00263, 30.76999997], [1516561860000, 0.00263, 0.00263, 0.0026289, 0.0026289, 17.0], [1516561920000, 0.00264, 0.00264, 0.00263005, 0.00263005, 605.00514741], [1516561980000, 0.00264589, 0.00264589, 0.00263005, 0.00264589, 562.61826979], [1516562040000, 0.00263005, 0.00263005, 0.00263005, 0.00263005, 5.0], [1516562100000, 0.00263007, 0.00263007, 0.00263005, 0.00263005, 32.46140679], [1516562160000, 0.00264007, 0.00264007, 0.00263005, 0.00264006, 123.18564999], [1516562220000, 0.00263005, 0.00263799, 0.00263005, 0.00263799, 33.85549056], [1516562280000, 0.00263799, 0.00263799, 0.00263799, 0.00263799, 7.0], [1516562400000, 0.00263799, 0.00263799, 0.00263799, 0.00263799, 122.78806679], [1516562460000, 0.00263798, 0.00263798, 0.00263797, 0.00263797, 21.98696934], [1516562520000, 0.002637, 0.002637, 0.002637, 0.002637, 1.89065835], [1516562580000, 0.00263799, 0.00264, 0.00263701, 0.00264, 392.09382327], [1516562640000, 0.002637, 0.00263999, 0.002637, 0.00263998, 137.73309572], [1516562700000, 0.00263998, 0.00263998, 0.00263998, 0.00263998, 3.78790748], [1516562760000, 0.00264879, 0.00264879, 0.00264879, 0.00264879, 70.33362739], [1516562820000, 0.00264879, 0.00264879, 0.00264879, 0.00264879, 4.20382825], [1516562880000, 0.00264894, 0.00264894, 0.00264879, 0.00264879, 27.47692954], [1516562940000, 0.00264879, 0.00264879, 0.00264879, 0.00264879, 7.53174091], [1516563000000, 0.002638, 0.00264879, 0.00263799, 0.00264879, 24.29403372], [1516563060000, 0.00264879, 0.00264879, 0.00264879, 0.00264879, 127.59617125], [1516563120000, 0.00264879, 0.00264879, 0.00264879, 0.00264879, 23.64413438], [1516563180000, 0.002638, 0.002638, 0.002638, 0.002638, 9.59269879], [1516563240000, 0.00264879, 0.00265, 0.00264879, 0.00265, 564.11803574], [1516563300000, 0.00265, 0.0026509, 0.00265, 0.0026509, 8.31988741], [1516563360000, 0.0026509, 0.0026509, 0.00265, 0.00265, 188.36202269], [1516563420000, 0.0026509, 0.0026509, 0.00265, 0.00265, 25.79847593], [1516563480000, 0.00265, 0.00265091, 0.00265, 0.00265091, 21.89215347], [1516563540000, 0.00265091, 0.0026523, 0.0026509, 0.0026523, 507.90630185], [1516563600000, 0.0026523, 0.002655, 0.0026523, 0.0026523, 302.87585845], [1516563660000, 0.0026523, 0.00265498, 0.0026523, 0.00265498, 353.82060697], [1516563720000, 0.00265498, 0.00265498, 0.0026523, 0.0026523, 189.29338981], [1516563780000, 0.0026523, 0.00265498, 0.0026523, 0.0026523, 1770.65715891], [1516563840000, 0.0026523, 0.002655, 0.0026523, 0.002655, 333.01837337], [1516563900000, 0.002655, 0.00265621, 0.00265231, 0.00265621, 110.16198535], [1516563960000, 0.00265621, 0.002658, 0.0026562, 0.00265621, 54.31612854], [1516564020000, 0.00265621, 0.002658, 0.00265621, 0.002658, 34.6294541], [1516564080000, 0.00265799, 0.00265884, 0.00265621, 0.00265884, 87.64887771], [1516564140000, 0.002658, 0.00265883, 0.00265621, 0.00265621, 249.44827746], [1516564200000, 0.00265621, 0.00265883, 0.00265301, 0.00265883, 99.08423168], [1516564260000, 0.00265751, 0.00265883, 0.00265301, 0.00265301, 30.76354674], [1516564380000, 0.00265301, 0.00265301, 0.0026523, 0.0026523, 68.97022955], [1516564500000, 0.00265879, 0.002659, 0.00265879, 0.00265879, 160.95135504], [1516564560000, 0.0026589, 0.00265898, 0.00265879, 0.00265898, 415.09597908], [1516564620000, 0.0026589, 0.00266385, 0.0026589, 0.00266385, 610.05365609], [1516564680000, 0.00266385, 0.00266385, 0.00266385, 0.00266385, 275.75158238], [1516564740000, 0.00266385, 0.00266385, 0.00266385, 0.00266385, 4.16768314], [1516564800000, 0.00266385, 0.002664, 0.0026589, 0.0026589, 143.1507796], [1516564860000, 0.0026589, 0.00266199, 0.0026589, 0.00266, 80.58190177], [1516564920000, 0.00266, 0.002662, 0.00266, 0.002662, 106.64859584], [1516564980000, 0.0026638, 0.0026638, 0.00266, 0.0026638, 10.20529062], [1516565040000, 0.002662, 0.0026635, 0.00266, 0.002662, 23.57616296], [1516565100000, 0.002662, 0.00266485, 0.00266, 0.00266485, 2066.19166265], [1516565160000, 0.00266266, 0.00266266, 0.002662, 0.002662, 163.42408574], [1516565220000, 0.002662, 0.002662, 0.0026523, 0.00266, 122.64165678], [1516565280000, 0.00266, 0.00266199, 0.00266, 0.00266199, 168.87259913], [1516565340000, 0.00266199, 0.00266199, 0.00266001, 0.00266001, 12.0], [1516565400000, 0.0026605, 0.00266263, 0.0026605, 0.0026605, 35.76731617], [1516565460000, 0.00266001, 0.00266001, 0.00266, 0.00266, 1258.34209724], [1516565520000, 0.00266263, 0.00266263, 0.00266, 0.00266, 134.2256018], [1516565580000, 0.00266, 0.00266, 0.0026523, 0.00266, 333.81388528], [1516565640000, 0.0026599, 0.0026599, 0.00265254, 0.00265254, 3.36592863], [1516565700000, 0.00265985, 0.00265985, 0.00265254, 0.00265254, 60.37208723], [1516565760000, 0.00265254, 0.00265982, 0.00265254, 0.00265254, 7.42158133], [1516565820000, 0.00265256, 0.00265256, 0.00265254, 0.00265254, 165.09275498], [1516565880000, 0.0026523, 0.0026523, 0.0026523, 0.0026523, 132.00912938], [1516565940000, 0.0026523, 0.0026523, 0.00264, 0.00264, 1135.01972666], [1516566000000, 0.00264, 0.00264879, 0.00264, 0.00264, 51.67353913], [1516566060000, 0.00264002, 0.00264843, 0.00264, 0.00264001, 63.56348923], [1516566120000, 0.00265, 0.00265, 0.00264001, 0.00264001, 18.74472458], [1516566180000, 0.00265, 0.00265, 0.00265, 0.00265, 194.26064826], [1516566240000, 0.00264999, 0.00265, 0.00264, 0.00264, 500.34278102], [1516566300000, 0.00265, 0.00265, 0.00265, 0.00265, 6.09684218], [1516566360000, 0.00264002, 0.00265253, 0.00263009, 0.00263009, 125.75336743], [1516566420000, 0.00265247, 0.00265247, 0.00263016, 0.00263016, 40.55959435], [1516566480000, 0.00264754, 0.00264754, 0.00264754, 0.00264754, 132.68082143], [1516566540000, 0.00264754, 0.00264754, 0.00264754, 0.00264754, 376.72114219], [1516566600000, 0.00264754, 0.00265253, 0.00264754, 0.00265253, 13.5728184], [1516566720000, 0.00264754, 0.00264754, 0.00264754, 0.00264754, 18.63009927], [1516566780000, 0.00265239, 0.00265253, 0.00265239, 0.00265253, 127.96274123], [1516566840000, 0.0026525, 0.00265957, 0.00264754, 0.00264754, 531.30386377], [1516566900000, 0.00264754, 0.00264754, 0.00263035, 0.00264754, 125.30792955], [1516566960000, 0.00263062, 0.00263062, 0.00263062, 0.00263062, 7.62250178], [1516567020000, 0.00263045, 0.00263045, 0.00263038, 0.00263045, 408.75667232], [1516567080000, 0.00263062, 0.00263062, 0.00263038, 0.00263038, 0.99962689], [1516567140000, 0.00264753, 0.00264753, 0.00263045, 0.00264753, 87.6794], [1516567200000, 0.00264753, 0.00264753, 0.00262829, 0.00262829, 378.45572463], [1516567260000, 0.0026472, 0.0026472, 0.00264673, 0.00264673, 10.44198261], [1516567320000, 0.00264, 0.00264673, 0.00262829, 0.00264664, 1567.72482658], [1516567380000, 0.00264664, 0.00264664, 0.00262839, 0.00262839, 13.98], [1516567440000, 0.00262829, 0.00262829, 0.00262829, 0.00262829, 21.0], [1516567500000, 0.00264443, 0.00264443, 0.00262829, 0.00262829, 124.00865769], [1516567560000, 0.00264422, 0.00264422, 0.00262829, 0.00264391, 126.83857007], [1516567620000, 0.0026283, 0.00262831, 0.0026283, 0.00262831, 1.48554333], [1516567680000, 0.00264412, 0.00264998, 0.00262831, 0.00262831, 282.51746033], [1516567740000, 0.00262831, 0.00264979, 0.00262829, 0.00264979, 3683.51841834], [1516567800000, 0.00264979, 0.00264979, 0.002626, 0.002626, 992.70753791], [1516567860000, 0.002626, 0.00264931, 0.00262125, 0.00264913, 93.8539062], [1516567920000, 0.00262125, 0.00262125, 0.002621, 0.002621, 45.93274964], [1516567980000, 0.002621, 0.00264864, 0.002621, 0.00264864, 309.68317163], [1516568040000, 0.00264746, 0.00264795, 0.00262102, 0.00264795, 31.40367415], [1516568100000, 0.00264699, 0.00264699, 0.00262102, 0.00262102, 39.03947224], [1516568160000, 0.00262102, 0.00264199, 0.002621, 0.00262233, 212.75615501], [1516568220000, 0.00262364, 0.002642, 0.00261211, 0.00264191, 1303.49783478], [1516568280000, 0.00263823, 0.0026419, 0.00261216, 0.00261216, 188.68852285], [1516568340000, 0.00264145, 0.00264145, 0.00261216, 0.00263225, 253.53550389], [1516568400000, 0.00263199, 0.00263225, 0.00261213, 0.00263167, 35.68556629], [1516568460000, 0.00261212, 0.00261212, 0.00260874, 0.00260874, 1048.1388372], [1516568520000, 0.00260874, 0.00260874, 0.00260819, 0.00260874, 2043.48746571], [1516568580000, 0.00260819, 0.00260874, 0.00260193, 0.00260504, 1162.5055502], [1516568640000, 0.00260504, 0.00260504, 0.002602, 0.002602, 235.98519673], [1516568700000, 0.0026087, 0.00260874, 0.002608, 0.0026087, 316.58902448], [1516568760000, 0.0026087, 0.0026087, 0.00260075, 0.0026087, 645.38137492], [1516568820000, 0.0026087, 0.0026087, 0.00260076, 0.00260077, 291.30492574], [1516568880000, 0.0026086, 0.00260869, 0.00260074, 0.00260074, 674.9804436], [1516568940000, 0.0026086, 0.00262249, 0.00260075, 0.00260075, 72.3993212], [1516569000000, 0.0026085, 0.0026085, 0.00260076, 0.00260076, 5.21018546], [1516569060000, 0.00260076, 0.0026085, 0.00260076, 0.0026085, 287.39807992], [1516569120000, 0.00260077, 0.00260077, 0.00260001, 0.00260001, 564.70378326], [1516569180000, 0.00260001, 0.00260001, 0.00259, 0.00259, 1421.81472021], [1516569240000, 0.00259627, 0.00259627, 0.002586, 0.00259, 373.61341622], [1516569300000, 0.00258505, 0.00259, 0.00258325, 0.0025896, 946.06038832], [1516569360000, 0.002583, 0.0025896, 0.002582, 0.0025896, 144.02094777], [1516569420000, 0.0025896, 0.0025896, 0.00258002, 0.00258002, 166.46423799], [1516569480000, 0.00258002, 0.0025896, 0.0025795, 0.0025896, 212.5180876], [1516569540000, 0.00258724, 0.00259, 0.00257955, 0.00259, 136.21506705], [1516569600000, 0.00259, 0.00259627, 0.00257955, 0.0025896, 170.50610812], [1516569660000, 0.0025896, 0.00259118, 0.00257956, 0.00259116, 759.6131368], [1516569720000, 0.00259, 0.00259119, 0.0025795, 0.00258598, 538.82227649], [1516569780000, 0.00257952, 0.0025912, 0.00257951, 0.0025911, 177.08488441], [1516569840000, 0.0025911, 0.0025912, 0.0025911, 0.0025912, 67.83165775], [1516569900000, 0.0025912, 0.00260076, 0.0025911, 0.00260076, 839.01596895], [1516569960000, 0.00259127, 0.0026232, 0.0025911, 0.00259599, 500.75559195], [1516570020000, 0.00259223, 0.00262457, 0.00259223, 0.00262457, 305.80322708], [1516570080000, 0.00262349, 0.00262349, 0.00260292, 0.00262322, 33.16045614], [1516570140000, 0.00262321, 0.00262321, 0.00260292, 0.00262306, 23.70318433], [1516570200000, 0.00262306, 0.00262306, 0.00260292, 0.00260292, 91.0021591], [1516570260000, 0.00260292, 0.00262306, 0.00260292, 0.00262306, 90.52902436], [1516570320000, 0.00260294, 0.00262305, 0.00260294, 0.00262304, 54.74260466], [1516570380000, 0.00260294, 0.00263087, 0.00260294, 0.00263087, 198.97656542], [1516570440000, 0.00263066, 0.00263066, 0.00263066, 0.00263066, 2.00700299], [1516570500000, 0.00262998, 0.00262998, 0.00260302, 0.00261, 123.19976391], [1516570560000, 0.00261356, 0.00262974, 0.00261, 0.00262974, 106.1896733], [1516570620000, 0.00262949, 0.00262973, 0.002615, 0.002615, 922.60763611], [1516570680000, 0.002615, 0.0026296, 0.002615, 0.002615, 90.38625296], [1516570740000, 0.002615, 0.00262949, 0.002615, 0.002615, 23.7543452], [1516570800000, 0.002615, 0.00262969, 0.002615, 0.002616, 27.68466106], [1516570860000, 0.00262968, 0.00262969, 0.002615, 0.002615, 350.46526589], [1516570920000, 0.002615, 0.002615, 0.0025978, 0.00260192, 226.77802848], [1516570980000, 0.00260192, 0.00260192, 0.00260192, 0.00260192, 1.0], [1516571040000, 0.00261998, 0.00262962, 0.00260195, 0.00262962, 45.39462459], [1516571100000, 0.00262799, 0.00262799, 0.00262799, 0.00262799, 3.80330811], [1516571160000, 0.00260201, 0.00260201, 0.00260201, 0.00260201, 3.80329349], [1516571220000, 0.00260201, 0.00262636, 0.0025975, 0.0025975, 323.47010541], [1516571280000, 0.00262628, 0.00262628, 0.00259783, 0.00259783, 115.00985068], [1516571340000, 0.00259784, 0.00260818, 0.00259783, 0.00260816, 67.53372155], [1516571400000, 0.00259791, 0.00260816, 0.0025975, 0.0025975, 182.70062376], [1516571460000, 0.0025975, 0.00260818, 0.0025975, 0.00260818, 897.97497233], [1516571520000, 0.00260818, 0.00260819, 0.0025975, 0.0025975, 69.95797753], [1516571580000, 0.00260818, 0.00260819, 0.00260818, 0.00260819, 25.94979883], [1516571640000, 0.00259601, 0.00259601, 0.00259601, 0.00259601, 26.88199602], [1516571700000, 0.00259601, 0.00260814, 0.00259601, 0.00260813, 371.14979003], [1516571760000, 0.00259601, 0.00260814, 0.00259601, 0.00260814, 110.93358107], [1516571820000, 0.00259599, 0.00260813, 0.0025701, 0.00259596, 2355.64696774], [1516571880000, 0.00259596, 0.00259596, 0.00257036, 0.00257046, 82.92456812], [1516571940000, 0.00257134, 0.00259962, 0.00257054, 0.00259962, 381.15841947], [1516572000000, 0.00258591, 0.00259945, 0.00258591, 0.00259878, 6.72923945], [1516572060000, 0.00259836, 0.00259836, 0.00259835, 0.00259835, 2.23686423], [1516572120000, 0.00257314, 0.00259954, 0.00257314, 0.0025732, 17.00295408], [1516572180000, 0.00259955, 0.00260375, 0.00259955, 0.00260375, 6.25464721], [1516572240000, 0.00260375, 0.0026082, 0.00260371, 0.0026082, 14.03826962], [1516572300000, 0.0026082, 0.00261502, 0.00260001, 0.00260001, 726.97653637], [1516572360000, 0.00260001, 0.00260001, 0.00259955, 0.00259955, 96.04469715], [1516572420000, 0.002601, 0.002601, 0.00258916, 0.00258919, 420.05672734], [1516572480000, 0.00258919, 0.00260194, 0.00258919, 0.00260194, 45.23380747], [1516572540000, 0.00260194, 0.00260194, 0.00260194, 0.00260194, 3.27625787], [1516572600000, 0.00260194, 0.00260205, 0.00260194, 0.00260205, 12.82782883], [1516572660000, 0.00260194, 0.00260194, 0.00260194, 0.00260194, 47.87978912], [1516572720000, 0.00260194, 0.00260194, 0.00259967, 0.00260194, 97.5040279], [1516572780000, 0.00259966, 0.00259967, 0.00259966, 0.00259967, 2.74074344], [1516572840000, 0.00259967, 0.00260205, 0.00259967, 0.00260205, 34.03273688], [1516572900000, 0.00260205, 0.00261499, 0.00259967, 0.00260204, 104.75386559], [1516572960000, 0.00260204, 0.00262381, 0.0025997, 0.00260205, 79.1076426], [1516573020000, 0.00260208, 0.00260208, 0.00260208, 0.00260208, 10.84874787], [1516573080000, 0.0026021, 0.00262307, 0.00260209, 0.00262307, 202.98272337], [1516573140000, 0.00262307, 0.00262808, 0.00262305, 0.00262808, 247.57626291], [1516573200000, 0.00262808, 0.00264193, 0.00262305, 0.00263491, 251.3283775], [1516573260000, 0.00263491, 0.00264191, 0.00263087, 0.00263087, 432.72424144], [1516573320000, 0.0026409, 0.00264123, 0.00263087, 0.00263087, 123.53626549], [1516573380000, 0.00264189, 0.00264189, 0.00263087, 0.00263087, 9.99549909], [1516573440000, 0.0026387, 0.00264187, 0.00262973, 0.00262973, 6.96487226], [1516573500000, 0.00262973, 0.00264188, 0.00262308, 0.00264182, 78.48545188], [1516573560000, 0.00264182, 0.00264183, 0.00262973, 0.00262973, 186.01409854], [1516573620000, 0.00262973, 0.00263991, 0.00262308, 0.00263991, 107.35473612], [1516573680000, 0.00263991, 0.00264188, 0.00263991, 0.00263991, 402.52725729], [1516573740000, 0.00263, 0.00264188, 0.00263, 0.00264188, 300.0], [1516573800000, 0.00263001, 0.00263999, 0.00263001, 0.00263001, 20.48588181], [1516573860000, 0.00263999, 0.00263999, 0.00263101, 0.00263999, 7.63074631], [1516573920000, 0.00263101, 0.00264188, 0.00263101, 0.00264188, 54.65118938], [1516574040000, 0.00263988, 0.00263989, 0.00263988, 0.00263989, 1080.80058234], [1516574100000, 0.00263988, 0.00263988, 0.00263988, 0.00263988, 11.28805097], [1516574160000, 0.00263666, 0.0026398, 0.00263666, 0.0026398, 31.46811784], [1516574220000, 0.00263708, 0.0026398, 0.002635, 0.0026398, 86.71195315], [1516574280000, 0.002635, 0.002635, 0.002635, 0.002635, 24.00639712], [1516574340000, 0.00263968, 0.00263968, 0.00263949, 0.00263949, 539.55364987], [1516574400000, 0.00263944, 0.00263944, 0.00263101, 0.00263101, 52.95825863], [1516574460000, 0.00263101, 0.002639, 0.00262309, 0.002639, 159.4829], [1516574520000, 0.002639, 0.0026394, 0.00262313, 0.0026394, 399.95877593], [1516574580000, 0.00263939, 0.00263939, 0.00262344, 0.002639, 301.4390757], [1516574640000, 0.00263934, 0.00263938, 0.00263002, 0.00263934, 292.65509423], [1516574700000, 0.00263302, 0.00263882, 0.00263302, 0.00263882, 137.14252684], [1516574760000, 0.0026388, 0.0026388, 0.0026379, 0.0026379, 17.28103969], [1516574820000, 0.0026379, 0.0026388, 0.0026379, 0.0026388, 404.60165252], [1516574880000, 0.00263101, 0.002635, 0.00263101, 0.002635, 146.20016135], [1516574940000, 0.00263504, 0.00263882, 0.002635, 0.002635, 141.50714825], [1516575000000, 0.0026388, 0.0026388, 0.00263504, 0.00263504, 59.95849306], [1516575060000, 0.00263504, 0.00263799, 0.00263504, 0.00263799, 20.7386], [1516575120000, 0.00263504, 0.0026368, 0.00263504, 0.0026368, 71.82254978], [1516575180000, 0.002636, 0.002636, 0.00263142, 0.00263142, 51.7351626], [1516575300000, 0.00263142, 0.00263597, 0.00263142, 0.0026315, 3.77865431], [1516575360000, 0.0026315, 0.0026315, 0.0026315, 0.0026315, 4.49117214], [1516575420000, 0.0026315, 0.0026359, 0.00263142, 0.00263142, 100.54541269], [1516575480000, 0.0026315, 0.0026315, 0.0026315, 0.0026315, 8.47815858], [1516575540000, 0.00263142, 0.00263142, 0.00263101, 0.00263101, 8.7955883], [1516575600000, 0.00263101, 0.0026359, 0.00261153, 0.00261153, 521.3100191], [1516575660000, 0.00262, 0.00262, 0.00262, 0.00262, 30.91664001], [1516575720000, 0.00262272, 0.00262272, 0.00260998, 0.0026101, 2393.57482867], [1516575780000, 0.00260996, 0.00260996, 0.00260995, 0.00260995, 226.01966805], [1516575840000, 0.00260995, 0.00260995, 0.00260995, 0.00260995, 110.50853216], [1516575900000, 0.00260995, 0.00260995, 0.00260079, 0.00260079, 100.62409492], [1516575960000, 0.00260995, 0.00262677, 0.00260994, 0.00260994, 120.71197185], [1516576020000, 0.00260994, 0.00262662, 0.00260994, 0.00262178, 38.60131296], [1516576080000, 0.00262177, 0.00262177, 0.00262177, 0.00262177, 2.00700299], [1516576140000, 0.00261182, 0.00263566, 0.00260079, 0.00260079, 333.97599025], [1516576200000, 0.00263525, 0.00263525, 0.00261643, 0.00261643, 36.50949738], [1516576260000, 0.00263509, 0.0026351, 0.00261644, 0.00261644, 385.00370772], [1516576320000, 0.00261644, 0.00263506, 0.00261644, 0.00263506, 89.83437208], [1516576380000, 0.00263506, 0.00263506, 0.00262767, 0.00263504, 188.67208459], [1516576440000, 0.00263504, 0.00263504, 0.00262767, 0.00263122, 72.33552788], [1516576500000, 0.00263122, 0.00263123, 0.00261, 0.00261001, 178.32679757], [1516576560000, 0.0026312, 0.0026312, 0.0026312, 0.0026312, 2.87493455], [1516576620000, 0.00263118, 0.00263118, 0.00261002, 0.00263117, 28.357323], [1516576680000, 0.00263001, 0.00263002, 0.00262678, 0.00262678, 44.96821849], [1516576740000, 0.00262679, 0.00263784, 0.00262679, 0.00263784, 120.21676956], [1516576800000, 0.00262679, 0.00262679, 0.00262679, 0.00262679, 2.8394276], [1516576860000, 0.00262679, 0.00262679, 0.00262679, 0.00262679, 95.88921635], [1516576920000, 0.00263, 0.00263, 0.00263, 0.00263, 0.71471267], [1516576980000, 0.00261203, 0.00261203, 0.00261202, 0.00261202, 17.33250735], [1516577160000, 0.00262, 0.00262, 0.00262, 0.00262, 1.58886095], [1516577220000, 0.00263, 0.002634, 0.00262114, 0.002634, 105.03572669], [1516577280000, 0.00263881, 0.00263945, 0.00263881, 0.00263945, 6.76129736], [1516577340000, 0.00262908, 0.002638, 0.00262908, 0.002638, 250.37347644], [1516577400000, 0.002638, 0.0026396, 0.002625, 0.002625, 176.49878513], [1516577460000, 0.00262001, 0.002639, 0.00262001, 0.002639, 104.0], [1516577520000, 0.00262001, 0.00263849, 0.002617, 0.00263849, 130.1809054], [1516577640000, 0.00261703, 0.00261703, 0.00261702, 0.00261702, 5.318], [1516577700000, 0.00261703, 0.00263699, 0.00260909, 0.00263699, 109.54776185], [1516577760000, 0.002637, 0.002637, 0.002637, 0.002637, 3.59335141], [1516577880000, 0.0026365, 0.0026365, 0.00261901, 0.00261901, 56.79127827], [1516577940000, 0.0026365, 0.00263959, 0.0026365, 0.00263959, 376.94093913], [1516578000000, 0.00263959, 0.00263985, 0.00262503, 0.00263985, 158.54600749], [1516578120000, 0.00263984, 0.00263984, 0.00263984, 0.00263984, 2.84159046], [1516578240000, 0.00263984, 0.00263984, 0.00263984, 0.00263984, 45.02615094], [1516578300000, 0.00263984, 0.00263985, 0.00263984, 0.00263985, 140.01689425], [1516578360000, 0.00263985, 0.00263985, 0.00262552, 0.00262552, 10.74120697], [1516578420000, 0.00262553, 0.00262553, 0.00262553, 0.00262553, 1.8802789], [1516578480000, 0.00263985, 0.00263985, 0.002627, 0.002627, 41.87120807], [1516578540000, 0.002627, 0.002627, 0.00262552, 0.002627, 1007.97919973], [1516578600000, 0.002627, 0.002627, 0.00262552, 0.002627, 581.89198787], [1516578660000, 0.002627, 0.00263985, 0.002627, 0.00263985, 87.18544666], [1516578780000, 0.00262553, 0.00262553, 0.00262511, 0.00262511, 114.96133414], [1516578840000, 0.00262552, 0.0026398, 0.0026254, 0.0026398, 11.3544029], [1516578900000, 0.0026398, 0.00263985, 0.0026398, 0.00263985, 252.12524024], [1516578960000, 0.00263985, 0.00263985, 0.00263985, 0.00263985, 71.4595895], [1516579020000, 0.00263985, 0.00264116, 0.00263502, 0.00263502, 18.73562079], [1516579080000, 0.00263502, 0.00263502, 0.00263502, 0.00263502, 0.38314763], [1516579140000, 0.00263502, 0.00264116, 0.00263502, 0.00263502, 17.66081428], [1516579200000, 0.00264116, 0.00264205, 0.00262517, 0.00262517, 225.69542555], [1516579260000, 0.00264205, 0.00264205, 0.00264205, 0.00264205, 5.06303531], [1516579320000, 0.00262521, 0.002629, 0.00262521, 0.002629, 13.57950737], [1516579380000, 0.00264204, 0.00264205, 0.00262517, 0.00262517, 462.17230485], [1516579440000, 0.00262517, 0.00264497, 0.00261308, 0.00264497, 245.32961519], [1516579500000, 0.00264498, 0.00264498, 0.00264498, 0.00264498, 3.7872], [1516579560000, 0.00264498, 0.002645, 0.00264498, 0.002645, 148.82506527], [1516579620000, 0.00261932, 0.00261933, 0.00261932, 0.00261933, 101.99927674], [1516579740000, 0.00264323, 0.00264403, 0.00264323, 0.00264403, 3.27560195], [1516579800000, 0.00264402, 0.00264406, 0.00264, 0.00264, 92.53076881], [1516579860000, 0.00264, 0.00264, 0.00264, 0.00264, 28.72314672], [1516579920000, 0.00264, 0.002647, 0.00264, 0.002647, 597.36476525], [1516579980000, 0.002647, 0.00264979, 0.00264406, 0.00264979, 194.36819484], [1516580040000, 0.00265, 0.00265, 0.00264979, 0.00264979, 37.78585299], [1516580100000, 0.00264979, 0.00264979, 0.00264684, 0.00264684, 75.4160707], [1516580160000, 0.00264685, 0.00264685, 0.00264684, 0.00264684, 37.50719123], [1516580220000, 0.00265, 0.00265609, 0.00265, 0.00265, 187.18931438], [1516580280000, 0.00265, 0.00265999, 0.00265, 0.00265001, 241.33573277], [1516580340000, 0.00265001, 0.00265998, 0.00265001, 0.00265001, 315.75138232], [1516580400000, 0.00265002, 0.00265998, 0.00265002, 0.00265998, 45.20175279], [1516580460000, 0.00265003, 0.00266479, 0.00265003, 0.00265008, 466.79329531], [1516580520000, 0.00265008, 0.00266484, 0.00265008, 0.00265011, 579.61531996], [1516580580000, 0.00266774, 0.00266774, 0.0026505, 0.0026505, 31.78118817], [1516580640000, 0.0026505, 0.0026505, 0.0026505, 0.0026505, 0.80710696], [1516580700000, 0.00266768, 0.00266818, 0.00266768, 0.00266818, 24.23366097], [1516580760000, 0.00265051, 0.00265051, 0.00265012, 0.00265012, 64.67505235], [1516580820000, 0.0026505, 0.00266725, 0.0026505, 0.0026505, 152.33167689], [1516580880000, 0.0026505, 0.0026505, 0.0026505, 0.0026505, 0.41595925], [1516580940000, 0.0026505, 0.00265058, 0.00265008, 0.00265014, 52.47], [1516581000000, 0.00265014, 0.00266818, 0.00265008, 0.00266818, 22.13675794], [1516581060000, 0.00265008, 0.00265008, 0.00265001, 0.00265001, 4.09589999], [1516581180000, 0.00265996, 0.00265996, 0.00265001, 0.00265001, 89.13096349], [1516581240000, 0.00265001, 0.00265001, 0.00265, 0.00265, 190.02820609], [1516581300000, 0.00265001, 0.00265001, 0.00265, 0.00265001, 128.99100559], [1516581360000, 0.00265, 0.00265001, 0.00265, 0.00265001, 255.37512911], [1516581420000, 0.00265001, 0.00266815, 0.00265001, 0.00265001, 37.45478505], [1516581480000, 0.00265001, 0.00265001, 0.00265001, 0.00265001, 59.62497012], [1516581540000, 0.00265001, 0.00266748, 0.00265001, 0.00266748, 8.30826298], [1516581600000, 0.00266741, 0.00267391, 0.00265001, 0.00265887, 1082.2021916], [1516581660000, 0.00267518, 0.00267777, 0.00265018, 0.00265018, 12.73200323], [1516581720000, 0.00267723, 0.00267723, 0.00267723, 0.00267723, 0.7470352], [1516581780000, 0.00267619, 0.00267619, 0.00267596, 0.002676, 70.53144605], [1516581840000, 0.0026756, 0.0026756, 0.0026756, 0.0026756, 8.43952842], [1516581900000, 0.00267556, 0.00267556, 0.00265081, 0.00267556, 122.20916234], [1516581960000, 0.00266753, 0.00267546, 0.00265091, 0.00267546, 36.67571824], [1516582020000, 0.00267546, 0.00267546, 0.00265091, 0.00266208, 424.4433843], [1516582080000, 0.00266208, 0.00266208, 0.00266207, 0.00266208, 16.17043563], [1516582140000, 0.0026621, 0.00267556, 0.0026621, 0.00266212, 45.08533695], [1516582200000, 0.00266212, 0.00267555, 0.00266212, 0.00266214, 4.56583962], [1516582260000, 0.00266217, 0.00266228, 0.00266217, 0.00266228, 3.40573784], [1516582320000, 0.00266228, 0.00266228, 0.00266217, 0.00266217, 22.17581873], [1516582380000, 0.00266233, 0.00267199, 0.0026621, 0.00267199, 19.60966856], [1516582440000, 0.0026621, 0.0026621, 0.0026621, 0.0026621, 2.56320357], [1516582500000, 0.0026621, 0.0026621, 0.0026621, 0.0026621, 0.82829346], [1516582560000, 0.0026621, 0.0026621, 0.0026621, 0.0026621, 0.82829346], [1516582620000, 0.0026621, 0.002675, 0.0026621, 0.0026621, 534.07977487], [1516582680000, 0.0026621, 0.0026621, 0.0026621, 0.0026621, 17.02303423], [1516582740000, 0.00267149, 0.0026715, 0.0026622, 0.00267149, 249.14249742], [1516582800000, 0.0026622, 0.0026753, 0.0026622, 0.0026753, 514.6155871], [1516582860000, 0.00267527, 0.00267556, 0.0026622, 0.0026753, 72.25969148], [1516582920000, 0.00267527, 0.00267527, 0.0026621, 0.0026621, 28.9206559], [1516582980000, 0.0026621, 0.002683, 0.0026621, 0.00268299, 393.56822144], [1516583040000, 0.0026826, 0.0026826, 0.0026621, 0.0026621, 12.96938608], [1516583100000, 0.00266211, 0.00268166, 0.0026621, 0.00268166, 2.82595731], [1516583160000, 0.00268158, 0.00268174, 0.00265546, 0.00265547, 1013.03328673], [1516583220000, 0.00265547, 0.00266875, 0.00265547, 0.00266875, 34.76452983], [1516583280000, 0.00266833, 0.00266875, 0.00265551, 0.00265552, 21.11926454], [1516583340000, 0.00265582, 0.00265592, 0.00265582, 0.00265592, 82.19402213], [1516583400000, 0.00265598, 0.0026778, 0.00265598, 0.00265603, 110.00288604], [1516583460000, 0.00265613, 0.00265613, 0.00265603, 0.00265603, 34.95657459], [1516583520000, 0.00265611, 0.00267774, 0.00265601, 0.00267774, 239.85529936], [1516583580000, 0.00266, 0.00266074, 0.00265601, 0.00265601, 44.06378866], [1516583700000, 0.00265825, 0.0026778, 0.00265627, 0.0026778, 13.83445068], [1516583760000, 0.0026778, 0.0026778, 0.0026778, 0.0026778, 1.5], [1516583820000, 0.0026778, 0.00268173, 0.002658, 0.002658, 49.56889605], [1516583880000, 0.00268174, 0.00268264, 0.00268173, 0.00268262, 33.61240563], [1516583940000, 0.0026826, 0.0026826, 0.0026826, 0.0026826, 97.90855521], [1516584000000, 0.00266918, 0.00268263, 0.00266918, 0.00266923, 65.42572965], [1516584060000, 0.00266923, 0.00268262, 0.00266923, 0.00266923, 15.21893653], [1516584120000, 0.00266923, 0.00268, 0.00266918, 0.00267, 92.49831924], [1516584180000, 0.00267, 0.002678, 0.00267, 0.00267799, 10.69854136], [1516584240000, 0.00267, 0.00267, 0.00266918, 0.00266918, 65.38861479], [1516584300000, 0.00267, 0.00267769, 0.00265601, 0.00267249, 6.69918788], [1516584360000, 0.00267247, 0.00267247, 0.00267049, 0.00267049, 302.58481133], [1516584420000, 0.00266999, 0.00266999, 0.00265602, 0.00265602, 36.2897336], [1516584480000, 0.00265602, 0.00266996, 0.00265602, 0.00265602, 368.10243296], [1516584540000, 0.00266, 0.00266, 0.00265602, 0.00265602, 13.02330182], [1516584600000, 0.00265601, 0.00265601, 0.002656, 0.002656, 32.74846895], [1516584660000, 0.00265599, 0.00265601, 0.00265599, 0.00265599, 32.50939433], [1516584720000, 0.002656, 0.00265602, 0.00265599, 0.00265602, 88.06782216], [1516584780000, 0.00267047, 0.00267048, 0.00265546, 0.00265546, 54.86533753], [1516584840000, 0.00265546, 0.002683, 0.00265546, 0.00267048, 1559.03744871], [1516584900000, 0.00267048, 0.00267048, 0.00265482, 0.00265482, 53.99152554], [1516584960000, 0.00265583, 0.0026708, 0.0026502, 0.00265026, 42.50045525], [1516585020000, 0.00265026, 0.0026708, 0.00265026, 0.0026708, 18.05011153], [1516585080000, 0.0026708, 0.0026708, 0.0026708, 0.0026708, 38.44042789], [1516585140000, 0.0026708, 0.00267988, 0.0026708, 0.0026708, 76.18071531], [1516585200000, 0.0026506, 0.00267918, 0.0026506, 0.00267918, 36.38303724], [1516585260000, 0.0026708, 0.00267971, 0.0026708, 0.0026708, 34.19507147], [1516585320000, 0.0026512, 0.00267079, 0.00265026, 0.00265026, 328.85667125], [1516585380000, 0.0026706, 0.0026706, 0.00265026, 0.00265026, 20.7817595], [1516585440000, 0.00265026, 0.0026706, 0.00265026, 0.00265026, 4.32134502], [1516585500000, 0.00267058, 0.00267059, 0.00267058, 0.00267059, 110.90477059], [1516585560000, 0.00267058, 0.00267058, 0.00265026, 0.00265026, 20.55983044], [1516585620000, 0.00265057, 0.00265057, 0.00265057, 0.00265057, 30.36954707], [1516585740000, 0.00265026, 0.00265026, 0.00265026, 0.00265026, 5.0], [1516585800000, 0.00265326, 0.00266, 0.00265026, 0.00266, 44.98675853], [1516585920000, 0.00266, 0.00266, 0.00266, 0.00266, 83.88444659], [1516585980000, 0.00265027, 0.00265027, 0.00265027, 0.00265027, 10.16450448], [1516586040000, 0.00265027, 0.00265027, 0.00265026, 0.00265027, 512.05905706], [1516586100000, 0.00265027, 0.00265999, 0.00265027, 0.00265027, 107.8522113], [1516586160000, 0.00265027, 0.00265027, 0.00265027, 0.00265027, 44.68106119], [1516586220000, 0.00265027, 0.00265027, 0.00265027, 0.00265027, 307.54054087], [1516586280000, 0.00265027, 0.00265027, 0.00265027, 0.00265027, 1001.38770723], [1516586340000, 0.00265027, 0.00265027, 0.00265027, 0.00265027, 10.85008641], [1516586400000, 0.00265995, 0.00265995, 0.00265995, 0.00265995, 73.54562858], [1516586460000, 0.00265995, 0.00265995, 0.00265027, 0.00265027, 152.18317273], [1516586520000, 0.00265027, 0.00265027, 0.00265027, 0.00265027, 542.41172537], [1516586580000, 0.00266891, 0.0026706, 0.00266891, 0.00266891, 354.77276558], [1516586640000, 0.00266891, 0.00266891, 0.00265027, 0.00265031, 187.58685021], [1516586700000, 0.00265031, 0.00265061, 0.00265031, 0.00265031, 438.9841205], [1516586760000, 0.00265028, 0.00265028, 0.00265028, 0.00265028, 27.92286924], [1516586820000, 0.00265028, 0.00265028, 0.00265027, 0.00265027, 18.49301225], [1516586880000, 0.00267015, 0.0026735, 0.00267015, 0.0026708, 2265.04296691], [1516586940000, 0.00265744, 0.00265744, 0.00265, 0.00265, 527.18892468], [1516587060000, 0.00265, 0.00265, 0.00265, 0.00265, 15.55636481], [1516587120000, 0.00265, 0.00265, 0.00265, 0.00265, 22.46882295], [1516587180000, 0.00265, 0.0026708, 0.00264406, 0.00264408, 245.63879692], [1516587240000, 0.00264409, 0.00264413, 0.00264409, 0.00264413, 161.184284], [1516587300000, 0.00264413, 0.00267, 0.00264413, 0.00267, 14.77758789], [1516587360000, 0.00265, 0.00265, 0.00265, 0.00265, 50.0], [1516587420000, 0.00265, 0.00266988, 0.00264444, 0.00264444, 41.3429229], [1516587480000, 0.00265002, 0.00266987, 0.00264449, 0.00266987, 1192.98259746], [1516587540000, 0.00266987, 0.00266994, 0.00264501, 0.00264501, 503.38023155], [1516587600000, 0.00264501, 0.0026705, 0.00264501, 0.0026705, 850.6425595], [1516587660000, 0.0026705, 0.0026705, 0.00264502, 0.00264503, 177.80914668], [1516587720000, 0.0026704, 0.00268363, 0.00266199, 0.00266199, 2776.47991648], [1516587780000, 0.00266199, 0.00267132, 0.00266199, 0.002671, 16.40176467], [1516587840000, 0.002671, 0.00267132, 0.002671, 0.002671, 27.56030722], [1516587900000, 0.002671, 0.00267983, 0.002671, 0.00267975, 750.50906059], [1516587960000, 0.00267975, 0.00267983, 0.002671, 0.00267102, 803.94397815], [1516588020000, 0.00267102, 0.00267102, 0.00267102, 0.00267102, 87.95879573], [1516588080000, 0.00267102, 0.00267102, 0.00267101, 0.00267101, 320.79618642], [1516588140000, 0.00267101, 0.00267102, 0.00266199, 0.00267102, 33.98460321], [1516588200000, 0.00267102, 0.00267102, 0.00266199, 0.00266199, 3.40416939], [1516588260000, 0.00266199, 0.00266199, 0.00266199, 0.00266199, 2.35160061], [1516588380000, 0.00266197, 0.00266197, 0.00266196, 0.00266196, 150.69350696], [1516588440000, 0.00266196, 0.00266196, 0.00264655, 0.00264865, 166.79557524], [1516588500000, 0.00264656, 0.00266197, 0.00264655, 0.00266197, 575.07172459], [1516588560000, 0.00266192, 0.00266193, 0.0026468, 0.0026468, 425.32870355], [1516588620000, 0.00266196, 0.00266196, 0.00266196, 0.00266196, 5.8541776], [1516588680000, 0.00266181, 0.00267039, 0.002648, 0.00267039, 1852.69411102], [1516588740000, 0.00267039, 0.00267999, 0.00267039, 0.00267997, 1293.49652436], [1516588800000, 0.00265997, 0.00267996, 0.00265997, 0.00267996, 773.81107751], [1516588860000, 0.00267995, 0.00267995, 0.00265997, 0.00267727, 1287.58851935], [1516588920000, 0.00267727, 0.00267727, 0.00265997, 0.00265997, 69.00137662], [1516588980000, 0.00265997, 0.00267716, 0.00265997, 0.00267716, 8.37296617], [1516589040000, 0.00267196, 0.00267196, 0.0026554, 0.0026554, 20.54187635], [1516589100000, 0.00267726, 0.00267993, 0.00267726, 0.00267993, 744.42242894], [1516589160000, 0.00266512, 0.00267993, 0.00266512, 0.00267993, 26.26157281], [1516589220000, 0.00267992, 0.00267993, 0.00267992, 0.00267993, 8.58803307], [1516589340000, 0.00265776, 0.00267993, 0.00265776, 0.00267993, 59.0], [1516589400000, 0.00265774, 0.00267773, 0.00265773, 0.00265778, 110.06530111], [1516589460000, 0.00265778, 0.00267771, 0.00265778, 0.00267771, 642.7223043], [1516589520000, 0.00265771, 0.00265771, 0.00265771, 0.00265771, 7.78379508], [1516589580000, 0.00267768, 0.00267769, 0.00265771, 0.00267714, 1124.40262119], [1516589640000, 0.00265771, 0.00265771, 0.00265771, 0.00265771, 0.38732043], [1516589700000, 0.00267712, 0.00267712, 0.00265771, 0.00265771, 803.15717052], [1516589760000, 0.0026771, 0.0026771, 0.0026771, 0.0026771, 16.75031725], [1516589820000, 0.00267606, 0.00267606, 0.00265771, 0.00265771, 18.28344746], [1516589940000, 0.00267395, 0.00267396, 0.00267395, 0.00267396, 738.71351319], [1516590000000, 0.00267398, 0.00267711, 0.00267396, 0.00267711, 652.49683343], [1516590060000, 0.0026771, 0.0026771, 0.00266, 0.00266, 48.8449706], [1516590120000, 0.00266, 0.00267711, 0.00265799, 0.00265799, 135.65099229], [1516590180000, 0.0026771, 0.0026771, 0.0026771, 0.0026771, 644.76], [1516590240000, 0.00267772, 0.00267989, 0.00267771, 0.00267989, 1515.01089464], [1516590300000, 0.00265783, 0.00267989, 0.00265783, 0.00267989, 80.49849132], [1516590360000, 0.0026799, 0.0026799, 0.00265783, 0.00265783, 264.35006992], [1516590420000, 0.00265783, 0.00265783, 0.0026577, 0.0026577, 266.09027634], [1516590480000, 0.00265782, 0.00265783, 0.00265782, 0.00265783, 32.07585564], [1516590540000, 0.00265783, 0.00265783, 0.00265782, 0.00265782, 138.17367038], [1516590600000, 0.00265783, 0.00267979, 0.00265782, 0.00267979, 776.64781213], [1516590660000, 0.002677, 0.002677, 0.002677, 0.002677, 14.29571392], [1516590720000, 0.002677, 0.002677, 0.00265786, 0.00265786, 26.82930197], [1516590780000, 0.00266815, 0.00267694, 0.00266815, 0.00267694, 17.4989536], [1516590840000, 0.00266815, 0.00267693, 0.00266815, 0.00267598, 254.58321292], [1516590900000, 0.00265786, 0.00265786, 0.00265784, 0.00265784, 25.43331739], [1516590960000, 0.00265788, 0.00265788, 0.00265788, 0.00265788, 2.16472141], [1516591020000, 0.00266815, 0.00266815, 0.00266281, 0.00266281, 28.031497], [1516591080000, 0.002675, 0.00267695, 0.00266281, 0.00266816, 75.61755796], [1516591140000, 0.00266816, 0.002677, 0.00266281, 0.002677, 62.51289062], [1516591200000, 0.002677, 0.002677, 0.00266916, 0.00266916, 12.23669196], [1516591260000, 0.00266916, 0.00267994, 0.00266916, 0.0026692, 77.43393526], [1516591320000, 0.00266918, 0.00267121, 0.00266918, 0.00267121, 20.72743415], [1516591380000, 0.002677, 0.00267996, 0.00267022, 0.00267995, 556.6415945], [1516591440000, 0.00267995, 0.00267995, 0.00267995, 0.00267995, 475.57446181], [1516591500000, 0.00267996, 0.00267996, 0.00267001, 0.00267996, 9.18387634], [1516591560000, 0.00267996, 0.00267996, 0.0026701, 0.00267015, 1.54854853], [1516591620000, 0.00267995, 0.00267995, 0.00267015, 0.00267015, 2.66210696], [1516591680000, 0.00267015, 0.00267994, 0.00267001, 0.00267001, 11.07970377], [1516591740000, 0.00267001, 0.00267949, 0.00267001, 0.00267949, 0.78890369], [1516591800000, 0.00267001, 0.00267948, 0.00267001, 0.00267948, 7.60296808], [1516591860000, 0.00267005, 0.00267005, 0.00267005, 0.00267005, 2.41263173], [1516591920000, 0.00267005, 0.0026795, 0.00267005, 0.00267005, 237.70126331], [1516591980000, 0.00267001, 0.0026795, 0.00267001, 0.00267001, 41.54447588], [1516592040000, 0.00267001, 0.00267949, 0.00267001, 0.00267001, 69.61171555], [1516592100000, 0.00267001, 0.0026795, 0.00267001, 0.00267001, 125.33355714], [1516592160000, 0.00267001, 0.00267001, 0.00266916, 0.00266916, 5.83169355], [1516592220000, 0.00266916, 0.00266916, 0.002658, 0.00266916, 448.06080018], [1516592280000, 0.00265801, 0.002664, 0.00265801, 0.002664, 1.33544942], [1516592340000, 0.00266398, 0.002664, 0.00266398, 0.002664, 170.25147383], [1516592400000, 0.002658, 0.00266916, 0.002658, 0.00265801, 9.23116059], [1516592460000, 0.00266916, 0.00266999, 0.00266916, 0.00266999, 43.15509658], [1516592520000, 0.00266999, 0.00266999, 0.00266999, 0.00266999, 0.41292289], [1516592580000, 0.00266999, 0.00266999, 0.00266999, 0.00266999, 0.82584578], [1516592640000, 0.00266999, 0.00267001, 0.00266999, 0.00267001, 5.73760647], [1516592700000, 0.00267001, 0.00267001, 0.00267, 0.00267, 24.41043581], [1516592760000, 0.00267, 0.00267001, 0.00267, 0.00267, 7.65737259], [1516592820000, 0.00267, 0.00267, 0.00267, 0.00267, 103.80631591], [1516592880000, 0.00267, 0.00267001, 0.00267, 0.00267001, 28.69578958], [1516592940000, 0.00267001, 0.00267001, 0.00267, 0.00267, 281.9182418], [1516593000000, 0.00267001, 0.00267001, 0.00267, 0.00267, 161.29619329], [1516593060000, 0.00267, 0.00267, 0.00266999, 0.00266999, 466.68535618], [1516593120000, 0.00266999, 0.00266999, 0.00266999, 0.00266999, 161.64365281], [1516593180000, 0.00266999, 0.00266999, 0.00265801, 0.00265801, 23.898683], [1516593300000, 0.00267, 0.00267001, 0.00267, 0.00267001, 73.11321797], [1516593360000, 0.00267001, 0.00267001, 0.00265809, 0.00265809, 162.10629235], [1516593420000, 0.00267001, 0.00267001, 0.00267001, 0.00267001, 9.05579841], [1516593480000, 0.00267001, 0.00267001, 0.00267001, 0.00267001, 43.10560234], [1516593540000, 0.00267001, 0.00267001, 0.00267001, 0.00267001, 16.70923924], [1516593600000, 0.00267001, 0.00267001, 0.00265817, 0.00267, 9.63398721], [1516593660000, 0.00267, 0.00267001, 0.00267, 0.00267001, 56.89558332], [1516593720000, 0.00267, 0.00267001, 0.00267, 0.00267001, 64.83656549], [1516593780000, 0.00267, 0.00267, 0.00267, 0.00267, 1.41292135], [1516593840000, 0.00267, 0.00267001, 0.00265823, 0.00265823, 471.21500685], [1516593900000, 0.00267, 0.0026795, 0.0026695, 0.0026795, 12.23882991], [1516593960000, 0.0026795, 0.0026795, 0.0026795, 0.0026795, 7.08101116], [1516594020000, 0.0026795, 0.0026795, 0.0026795, 0.0026795, 0.50250299], [1516594200000, 0.0026795, 0.0026795, 0.0026795, 0.0026795, 20.96764868], [1516594260000, 0.0026795, 0.0026795, 0.0026795, 0.0026795, 245.13833404], [1516594320000, 0.00267995, 0.00267995, 0.00267995, 0.00267995, 1.22241874], [1516594380000, 0.00267995, 0.00267996, 0.00267995, 0.00267996, 35.66537374], [1516594440000, 0.00267995, 0.00267996, 0.00267995, 0.00267995, 27.76657683], [1516594500000, 0.00267996, 0.00268, 0.00267996, 0.00268, 313.07756469], [1516594560000, 0.00268, 0.00268, 0.00268, 0.00268, 265.32110152], [1516594620000, 0.00268001, 0.00269602, 0.00268001, 0.00269602, 384.4330612], [1516594680000, 0.00268151, 0.00269601, 0.0026815, 0.00269601, 111.49149532], [1516594740000, 0.00268652, 0.00268652, 0.00268651, 0.00268651, 20.84140782], [1516594800000, 0.00268652, 0.00269602, 0.00268652, 0.00268652, 4.31287377], [1516594860000, 0.00268654, 0.00268666, 0.00268654, 0.00268666, 19.74147879], [1516594920000, 0.00269359, 0.00269359, 0.00269359, 0.00269359, 25.68444706], [1516594980000, 0.00269359, 0.00269359, 0.00268655, 0.00268655, 108.30946668], [1516595040000, 0.00269359, 0.00269359, 0.00269, 0.00269, 61.23334106], [1516595100000, 0.00269, 0.00269359, 0.00268654, 0.00268655, 318.1325698], [1516595160000, 0.00268654, 0.00268655, 0.00268654, 0.00268655, 97.09079362], [1516595220000, 0.00268655, 0.00268655, 0.00268654, 0.00268655, 44.74661174], [1516595280000, 0.00268654, 0.00269, 0.00268654, 0.00269, 20.97139178], [1516595400000, 0.00269001, 0.00269784, 0.00269001, 0.00269784, 262.05309789], [1516595460000, 0.00269924, 0.00269999, 0.00268654, 0.00268654, 549.54529647], [1516595520000, 0.00268659, 0.00269774, 0.00268654, 0.00269, 137.91435889], [1516595580000, 0.00268664, 0.00269999, 0.00268654, 0.00269999, 120.13190128], [1516595640000, 0.00268687, 0.00269774, 0.00268687, 0.00269774, 11.0], [1516595700000, 0.00269774, 0.00269999, 0.00269774, 0.00269999, 18.54369017], [1516595760000, 0.00269774, 0.00269999, 0.00269774, 0.00269999, 132.02818015], [1516595820000, 0.00269999, 0.00269999, 0.00269774, 0.00269774, 199.71911357], [1516595880000, 0.00269774, 0.00269999, 0.00268686, 0.00269999, 243.61524439], [1516595940000, 0.00268836, 0.00269999, 0.00268836, 0.00269999, 2.45715622], [1516596000000, 0.0026999, 0.00269999, 0.00269112, 0.00269999, 197.47058808], [1516596060000, 0.00269999, 0.00269999, 0.002692, 0.002692, 152.76346292], [1516596120000, 0.00269998, 0.00269999, 0.002692, 0.00269999, 96.45205982], [1516596180000, 0.00269999, 0.00269999, 0.00269999, 0.00269999, 34.19196348], [1516596240000, 0.00269998, 0.00269998, 0.00269998, 0.00269998, 1.0], [1516596300000, 0.00269201, 0.00269999, 0.00269201, 0.00269999, 78.46480638], [1516596360000, 0.00269998, 0.00269999, 0.002692, 0.002692, 266.51582149], [1516596420000, 0.002692, 0.00269999, 0.002692, 0.00269999, 66.92198997], [1516596480000, 0.00269999, 0.00269999, 0.00269999, 0.00269999, 77.43654791], [1516596600000, 0.00269005, 0.00269005, 0.0026899, 0.0026899, 371.14898447], [1516596660000, 0.002699, 0.00269997, 0.002699, 0.002699, 276.10363033], [1516596720000, 0.002699, 0.00269996, 0.002699, 0.00269996, 60.02554252], [1516596780000, 0.00269996, 0.00269996, 0.002691, 0.002691, 36.99754018], [1516596840000, 0.002699, 0.00269996, 0.00269369, 0.00269369, 161.79281929], [1516596900000, 0.00269369, 0.00269369, 0.002691, 0.002691, 334.73917475], [1516596960000, 0.002691, 0.002691, 0.0026899, 0.002691, 113.18338637], [1516597020000, 0.002691, 0.002691, 0.00269069, 0.00269069, 110.15839374], [1516597080000, 0.00269069, 0.002691, 0.00269069, 0.002691, 234.75309466], [1516597140000, 0.002691, 0.002691, 0.00269069, 0.00269069, 4.07836883], [1516597200000, 0.002691, 0.002691, 0.00269069, 0.00269084, 2.76861964], [1516597260000, 0.00269084, 0.00269084, 0.0026899, 0.0026901, 129.65625402], [1516597320000, 0.0026901, 0.002691, 0.0026901, 0.002691, 0.78877187], [1516597380000, 0.002691, 0.002691, 0.0026901, 0.0026901, 38.67684891], [1516597440000, 0.002691, 0.002691, 0.002691, 0.002691, 4.75080411], [1516597500000, 0.002691, 0.002691, 0.0026899, 0.002691, 86.08007584], [1516597560000, 0.002691, 0.002692, 0.002691, 0.002691, 43.71452243], [1516597620000, 0.002691, 0.00269993, 0.002691, 0.00269101, 91.74231667], [1516597680000, 0.00269101, 0.00269992, 0.0026899, 0.0026899, 1678.84332347], [1516597740000, 0.0026899, 0.0026899, 0.00268652, 0.00268652, 171.09062244], [1516597800000, 0.00268652, 0.00268654, 0.002671, 0.002671, 418.59389188], [1516597860000, 0.002685, 0.00268654, 0.002671, 0.002671, 258.12004271], [1516597920000, 0.002671, 0.00268654, 0.002671, 0.00268654, 11.64200662], [1516597980000, 0.00267101, 0.00269997, 0.002671, 0.00269995, 525.12455516], [1516598040000, 0.002685, 0.002685, 0.002671, 0.002671, 421.10676673], [1516598100000, 0.002685, 0.00269, 0.00267082, 0.00267082, 988.42438201], [1516598160000, 0.00267083, 0.00268, 0.00267083, 0.00268, 1160.43397866], [1516598220000, 0.00268, 0.00268999, 0.00268, 0.00268998, 702.79171129], [1516598280000, 0.00268998, 0.00268998, 0.00267082, 0.00267082, 104.81054991], [1516598340000, 0.00267082, 0.00267082, 0.00267001, 0.00267001, 35.90760366], [1516598400000, 0.00267001, 0.00269, 0.00267, 0.00269, 41.68394422], [1516598460000, 0.00269, 0.00269, 0.00267001, 0.00267001, 120.80271383], [1516598580000, 0.00267013, 0.00267013, 0.00267013, 0.00267013, 4.0], [1516598640000, 0.00268999, 0.00268999, 0.00268999, 0.00268999, 2.13353578], [1516598700000, 0.00268997, 0.00268997, 0.0026701, 0.0026701, 40.02555059], [1516598760000, 0.00268995, 0.00268995, 0.00268995, 0.00268995, 18.98375939], [1516598820000, 0.00268995, 0.00269, 0.00268994, 0.00268994, 209.16926077], [1516598880000, 0.00268995, 0.00268995, 0.00267011, 0.0026765, 107.08827484], [1516598940000, 0.0026765, 0.0026765, 0.0026765, 0.0026765, 6.31322936], [1516599000000, 0.00268, 0.00268, 0.00268, 0.00268, 37.45976739], [1516599060000, 0.0026765, 0.00268, 0.0026765, 0.00268, 235.33620076], [1516599120000, 0.002681, 0.00269797, 0.002681, 0.00269797, 14.23233914], [1516599180000, 0.002681, 0.00269798, 0.002681, 0.00269797, 144.04479896], [1516599240000, 0.00269781, 0.00269781, 0.00268441, 0.00268442, 77.37926258], [1516599300000, 0.0026845, 0.00269699, 0.0026845, 0.00269698, 112.59646103], [1516599360000, 0.00269698, 0.00269698, 0.0026969, 0.00269696, 50.14204088], [1516599420000, 0.00269632, 0.00269635, 0.002696, 0.002696, 27.37523539], [1516599480000, 0.002696, 0.00269899, 0.002687, 0.0026875, 347.79178356], [1516599540000, 0.0026875, 0.00269896, 0.002686, 0.00269896, 230.33728091], [1516599600000, 0.00269889, 0.00269889, 0.002686, 0.00269589, 379.71523223], [1516599660000, 0.0026959, 0.0026959, 0.002686, 0.00269588, 218.10919774], [1516599720000, 0.002686, 0.00269, 0.002686, 0.00269, 103.01008143], [1516599780000, 0.00269001, 0.00269783, 0.00269, 0.00269783, 182.26070925], [1516599900000, 0.00269023, 0.00269776, 0.00267999, 0.00269776, 801.47863907], [1516599960000, 0.00268201, 0.00269773, 0.00268201, 0.00268202, 145.1377191], [1516600020000, 0.00268202, 0.0026957, 0.00268202, 0.0026957, 49.493889], [1516600080000, 0.0026957, 0.0026957, 0.00269569, 0.00269569, 16.3489646], [1516600140000, 0.0026847, 0.00269569, 0.0026847, 0.00268806, 263.9908123], [1516600200000, 0.00268806, 0.00269568, 0.00268201, 0.00269567, 234.61931853], [1516600260000, 0.00268219, 0.00269567, 0.0026743, 0.0026743, 54.10777313], [1516600320000, 0.00267435, 0.00269564, 0.00267435, 0.002684, 46.66238802], [1516600380000, 0.002684, 0.00269564, 0.00268399, 0.002684, 121.46205789], [1516600440000, 0.002684, 0.00268414, 0.002684, 0.00268414, 25.61504394], [1516600500000, 0.00268414, 0.00268415, 0.00268414, 0.00268414, 5.28298178], [1516600560000, 0.00268414, 0.00269563, 0.002684, 0.002684, 1061.23930153], [1516600620000, 0.002684, 0.00269563, 0.002684, 0.00269563, 114.39210068], [1516600680000, 0.00267819, 0.00269563, 0.00267552, 0.00269563, 49.49613864], [1516600740000, 0.00267556, 0.00269563, 0.00267555, 0.00269561, 49.69518533], [1516600800000, 0.0026756, 0.0026956, 0.0026756, 0.0026956, 8.70974922], [1516600860000, 0.00267563, 0.0026956, 0.00267022, 0.0026956, 432.1532872], [1516600920000, 0.00269023, 0.00269561, 0.00268357, 0.00269561, 331.23676357], [1516600980000, 0.00269561, 0.00269561, 0.00269561, 0.00269561, 3.82690218], [1516601040000, 0.002695, 0.00269555, 0.00269499, 0.00269554, 45.4581944], [1516601100000, 0.00269555, 0.00269561, 0.002695, 0.002695, 182.79152523], [1516601160000, 0.00269561, 0.00269561, 0.002695, 0.00269561, 247.58694505], [1516601220000, 0.00269561, 0.00269896, 0.00269561, 0.0026977, 355.30418608], [1516601280000, 0.00269561, 0.00269561, 0.00269561, 0.00269561, 33.63085991], [1516601340000, 0.0026832, 0.0026977, 0.0026832, 0.00268351, 74.58018064], [1516601400000, 0.00269561, 0.00269896, 0.00268356, 0.00269896, 48.29637266], [1516601460000, 0.00269699, 0.00269962, 0.00269137, 0.00269962, 497.20395288], [1516601520000, 0.00269137, 0.00269137, 0.00269127, 0.00269137, 403.85961499], [1516601580000, 0.00269137, 0.00269137, 0.00269137, 0.00269137, 526.76024402], [1516601640000, 0.00269137, 0.00269137, 0.00269137, 0.00269137, 122.22443783], [1516601700000, 0.00268499, 0.00269996, 0.00268499, 0.00268499, 68.09653559], [1516601760000, 0.00269996, 0.00269996, 0.00269996, 0.00269996, 65.50723483], [1516601820000, 0.00269996, 0.00269996, 0.00269996, 0.00269996, 143.77308619], [1516601880000, 0.00269412, 0.0027, 0.00269412, 0.0027, 1340.9256292], [1516601940000, 0.0027, 0.0027, 0.0027, 0.0027, 459.05820642], [1516602000000, 0.0027, 0.0027, 0.00268506, 0.00268506, 11.00709341], [1516602060000, 0.00268506, 0.0027, 0.00268506, 0.0027, 67.53769156], [1516602180000, 0.00268511, 0.0026999, 0.00268511, 0.0026999, 108.98720772], [1516602240000, 0.0026999, 0.0027, 0.00268511, 0.00268511, 216.29201688], [1516602300000, 0.0026999, 0.0026999, 0.00269975, 0.0026999, 14.42733199], [1516602360000, 0.0026998, 0.0026999, 0.0026863, 0.00269, 69.54114113], [1516602420000, 0.00269, 0.0027, 0.00269, 0.0027, 4793.34899985], [1516602480000, 0.0027, 0.0027, 0.00268192, 0.0027, 2260.28502586], [1516602540000, 0.0027, 0.0027, 0.00268195, 0.0027, 453.75282175], [1516602600000, 0.0027, 0.0027, 0.00268214, 0.0027, 145.19687005], [1516602660000, 0.0027, 0.0027, 0.0027, 0.0027, 498.05422275], [1516602720000, 0.00268504, 0.0027, 0.00268504, 0.0027, 27.09446297], [1516602780000, 0.0027, 0.0027, 0.00268507, 0.0027, 54.48800081], [1516602840000, 0.00270003, 0.002702, 0.0027, 0.0027, 468.60032397], [1516602900000, 0.0027, 0.0027, 0.0027, 0.0027, 68.05916538], [1516602960000, 0.0027, 0.00271203, 0.0026855, 0.00271203, 2075.52174413], [1516603020000, 0.00268563, 0.00272539, 0.00268563, 0.00272538, 3437.752664], [1516603080000, 0.00272537, 0.00273118, 0.00268811, 0.002702, 1113.6586226], [1516603140000, 0.0027139, 0.00273118, 0.0027, 0.002727, 1236.78292213], [1516603200000, 0.002727, 0.002727, 0.00270209, 0.00270218, 282.14128833], [1516603260000, 0.00270217, 0.00272499, 0.00269018, 0.0027, 700.2456988], [1516603320000, 0.00270024, 0.00271, 0.0027, 0.00271, 931.15614894], [1516603380000, 0.00271, 0.002715, 0.00270238, 0.00270238, 55.96030073], [1516603440000, 0.00270238, 0.00271, 0.00270232, 0.00271, 317.61198891], [1516603500000, 0.00271993, 0.00271994, 0.0027, 0.00271973, 507.16138342], [1516603560000, 0.00270241, 0.00271973, 0.00269106, 0.00271935, 1480.38429247], [1516603620000, 0.00271529, 0.002717, 0.00271529, 0.002717, 28.46988826], [1516603680000, 0.002717, 0.002717, 0.00270451, 0.00271699, 50.99044497], [1516603740000, 0.00271698, 0.00271698, 0.00270451, 0.00270451, 60.16064015], [1516603800000, 0.002716, 0.002716, 0.00270451, 0.00270702, 83.74725379], [1516603860000, 0.002716, 0.00271969, 0.00271594, 0.00271969, 114.01922664], [1516603920000, 0.0027159, 0.00271591, 0.0027155, 0.0027155, 11.0158737], [1516603980000, 0.0027155, 0.0027155, 0.00270451, 0.00270452, 91.20756581], [1516604040000, 0.00270451, 0.00270452, 0.00270451, 0.00270452, 109.17921236], [1516604100000, 0.00270452, 0.00270452, 0.00269981, 0.00269981, 20.38595029], [1516604160000, 0.00270451, 0.00270451, 0.0026911, 0.0026911, 392.84617423], [1516604220000, 0.00269981, 0.00270451, 0.00269981, 0.00270448, 109.76540041], [1516604280000, 0.00270448, 0.00270452, 0.00270448, 0.00270452, 87.86879208], [1516604340000, 0.00270449, 0.00271539, 0.00270448, 0.00271539, 25.01528646], [1516604400000, 0.00271539, 0.00271539, 0.00271539, 0.00271539, 34.87163056], [1516604460000, 0.00270448, 0.00270448, 0.00269988, 0.0027, 167.33280515], [1516604520000, 0.00269988, 0.00270448, 0.00269988, 0.00270448, 121.71201892], [1516604580000, 0.00270448, 0.00271, 0.00270448, 0.00271, 94.60696658], [1516604640000, 0.00270448, 0.00270448, 0.00270448, 0.00270448, 33.42497386], [1516604700000, 0.00270448, 0.00271, 0.00269402, 0.00269403, 420.44357867], [1516604760000, 0.00271, 0.0027153, 0.00271, 0.0027153, 301.82185986], [1516604820000, 0.0027153, 0.0027153, 0.00269802, 0.0027153, 657.1181364], [1516604880000, 0.0027153, 0.0027153, 0.00269813, 0.00271, 56.59441136], [1516604940000, 0.00271, 0.00271049, 0.00271, 0.00271049, 55.69301584], [1516605000000, 0.00271049, 0.0027152, 0.00271, 0.00271, 229.08056002], [1516605060000, 0.0027152, 0.0027153, 0.00270104, 0.0027153, 256.84562583], [1516605120000, 0.0027152, 0.00271539, 0.0027152, 0.0027153, 156.12662292], [1516605180000, 0.0027153, 0.00271539, 0.0027153, 0.0027153, 178.72363365], [1516605240000, 0.00271539, 0.00271539, 0.0027152, 0.0027152, 251.5609353], [1516605300000, 0.0027153, 0.00271539, 0.0027152, 0.00271539, 164.99136597], [1516605360000, 0.0027152, 0.00271539, 0.0027152, 0.00271539, 510.00871914], [1516605420000, 0.00271525, 0.00271539, 0.00271521, 0.00271539, 158.5618996], [1516605480000, 0.00271539, 0.00271969, 0.00271, 0.00271969, 483.44208546], [1516605540000, 0.00271969, 0.00271999, 0.0027154, 0.00271999, 878.52012974], [1516605600000, 0.00271999, 0.00273115, 0.00271999, 0.00273115, 305.6303839], [1516605660000, 0.00273115, 0.00273325, 0.0027213, 0.00273325, 435.61747819], [1516605720000, 0.00273358, 0.002738, 0.00272133, 0.002736, 549.49137957], [1516605780000, 0.002736, 0.002738, 0.002736, 0.00273799, 315.0786935], [1516605840000, 0.00273799, 0.00273799, 0.00273797, 0.00273797, 58.14697918], [1516605900000, 0.00273797, 0.00275, 0.00272279, 0.00275, 1100.14636034], [1516605960000, 0.00275, 0.00276212, 0.00273251, 0.00273506, 810.11873027], [1516606020000, 0.00273506, 0.00277283, 0.00273502, 0.00277283, 2256.34269601], [1516606080000, 0.00277283, 0.002788, 0.002755, 0.00276512, 3564.35162607], [1516606140000, 0.00277632, 0.0028, 0.00277406, 0.00278962, 2981.8515759], [1516606200000, 0.00278962, 0.00279894, 0.00276537, 0.00276601, 1653.52015644], [1516606260000, 0.00279784, 0.00279786, 0.00276601, 0.00279783, 3692.80851064], [1516606320000, 0.00279778, 0.00279786, 0.00279, 0.00279786, 1185.29030433], [1516606380000, 0.00279, 0.00279784, 0.00279, 0.00279011, 106.07143551], [1516606440000, 0.0027901, 0.00279011, 0.002779, 0.002779, 361.47346821], [1516606500000, 0.0027831, 0.0027831, 0.00275311, 0.002757, 1705.94031929], [1516606560000, 0.002757, 0.00278274, 0.00275311, 0.002756, 396.64208497], [1516606620000, 0.00276475, 0.00278998, 0.00276199, 0.00277001, 568.99493374], [1516606680000, 0.00277001, 0.00278883, 0.00277001, 0.00277009, 1028.16709444], [1516606740000, 0.00277009, 0.00278842, 0.00277008, 0.0027719, 2122.74299301], [1516606800000, 0.00277009, 0.00278799, 0.00277009, 0.0027719, 134.02778379], [1516606860000, 0.0027719, 0.0027878, 0.00277008, 0.00277012, 697.49393512], [1516606920000, 0.00277012, 0.00277012, 0.00273801, 0.00277008, 1855.19442335], [1516606980000, 0.00274802, 0.00277008, 0.00274802, 0.00276997, 135.43947623], [1516607040000, 0.002759, 0.002765, 0.0027571, 0.002764, 66.69960712], [1516607100000, 0.00275435, 0.002764, 0.00274483, 0.00274483, 423.11135028], [1516607160000, 0.0027501, 0.002764, 0.0027501, 0.0027639, 1378.65132584], [1516607220000, 0.0027639, 0.002764, 0.00276385, 0.00276385, 86.85490528], [1516607280000, 0.002757, 0.00276385, 0.00273507, 0.00274822, 675.43917107], [1516607340000, 0.00273544, 0.00275599, 0.00273544, 0.00275599, 101.94715761], [1516607400000, 0.00275599, 0.00276377, 0.00273787, 0.00276377, 276.80468951], [1516607460000, 0.00276377, 0.0027638, 0.00276377, 0.00276377, 705.31296515], [1516607520000, 0.00276377, 0.002764, 0.00276377, 0.00276377, 837.50008545], [1516607580000, 0.00276377, 0.002764, 0.00276377, 0.00276377, 138.83093023], [1516607640000, 0.00276376, 0.00276377, 0.002763, 0.002763, 38.3867312], [1516607700000, 0.002763, 0.00276376, 0.00275895, 0.00275895, 192.43074045], [1516607760000, 0.0027637, 0.0027637, 0.00274401, 0.0027637, 532.8880443], [1516607820000, 0.00276357, 0.00276357, 0.00274603, 0.00276157, 16.04243], [1516607880000, 0.00276153, 0.00276153, 0.00275, 0.00275, 52.5051874], [1516607940000, 0.00275, 0.00276153, 0.00275, 0.00276153, 233.87234309], [1516608000000, 0.00275, 0.00276153, 0.00275, 0.00275, 166.99537878], [1516608060000, 0.00276, 0.00276, 0.00275, 0.00276, 63.57720573], [1516608120000, 0.0027599, 0.00276001, 0.00273802, 0.00275732, 580.18267512], [1516608180000, 0.00275732, 0.00276001, 0.002742, 0.00275999, 121.76413549], [1516608240000, 0.00275999, 0.00276, 0.00275034, 0.00275034, 35.98943247], [1516608300000, 0.00275976, 0.00275976, 0.00275301, 0.00275301, 4.07568799], [1516608360000, 0.00275975, 0.00275975, 0.00275301, 0.00275301, 24.98762741], [1516608420000, 0.00275301, 0.00275301, 0.00275301, 0.00275301, 10.62583335], [1516608480000, 0.00275034, 0.002753, 0.00275034, 0.002753, 95.24861208], [1516608540000, 0.002753, 0.002753, 0.002753, 0.002753, 18.37398873], [1516608600000, 0.00275299, 0.00275301, 0.0027529, 0.00275299, 304.69174799], [1516608660000, 0.002753, 0.00275301, 0.00275, 0.002753, 103.68417833], [1516608720000, 0.00275, 0.00275, 0.00273001, 0.00274301, 715.08093436], [1516608840000, 0.00274303, 0.00275299, 0.00274301, 0.00274301, 7.77009401], [1516608900000, 0.00275299, 0.002753, 0.00275299, 0.00275299, 33.63240001], [1516608960000, 0.00275299, 0.002753, 0.00275299, 0.00275299, 12.73875493], [1516609020000, 0.00275299, 0.002753, 0.00275299, 0.00275299, 177.98743145], [1516609080000, 0.00275299, 0.002753, 0.00275299, 0.002753, 231.93226787], [1516609140000, 0.00275299, 0.002753, 0.00275299, 0.002753, 122.37137151], [1516609200000, 0.002753, 0.002753, 0.00274302, 0.002753, 382.18147662], [1516609260000, 0.00274302, 0.002753, 0.00274302, 0.00275299, 26.10028047], [1516609320000, 0.00275, 0.00275299, 0.00274302, 0.00274302, 34.61465588], [1516609380000, 0.00274302, 0.00275299, 0.00274301, 0.00275, 21.86505299], [1516609440000, 0.00275, 0.00275, 0.002743, 0.00274301, 239.44179526], [1516609500000, 0.00274301, 0.002753, 0.00274225, 0.00274225, 360.27561957], [1516609560000, 0.00274225, 0.00274225, 0.00273053, 0.00273053, 266.29208526], [1516609620000, 0.00274225, 0.00274225, 0.00274225, 0.00274225, 43.45178354], [1516609680000, 0.00274225, 0.00274225, 0.00273201, 0.00273201, 207.75432885], [1516609740000, 0.00274, 0.00274, 0.00274, 0.00274, 24.6687], [1516609800000, 0.00273202, 0.00274, 0.00273202, 0.00274, 158.17821977], [1516609860000, 0.002732, 0.00273999, 0.002732, 0.00273999, 0.73059483], [1516609920000, 0.00273999, 0.00273999, 0.002732, 0.002732, 80.12424205], [1516609980000, 0.002732, 0.002732, 0.00273037, 0.002732, 185.57059065], [1516610040000, 0.00273199, 0.00273199, 0.00273037, 0.00273037, 116.90285942], [1516610100000, 0.00273037, 0.00273037, 0.00273037, 0.00273037, 198.38774018], [1516610160000, 0.00273036, 0.002732, 0.00273035, 0.00273035, 51.92991016], [1516610220000, 0.00273035, 0.00273277, 0.00273035, 0.00273277, 119.94294303], [1516610280000, 0.00273277, 0.00273277, 0.00273, 0.00273001, 110.27019976], [1516610340000, 0.00273, 0.00273999, 0.0027238, 0.00273999, 597.84296037], [1516610400000, 0.00273101, 0.002742, 0.0027238, 0.0027238, 479.27627711], [1516610460000, 0.0027238, 0.00272382, 0.0027238, 0.00272382, 91.16457658], [1516610520000, 0.00272386, 0.00274199, 0.00272386, 0.0027239, 364.33637688], [1516610580000, 0.0027239, 0.00272413, 0.0027239, 0.00272403, 441.62848148], [1516610640000, 0.00272403, 0.00274225, 0.00272403, 0.00274225, 181.80087915], [1516610700000, 0.00272391, 0.00273, 0.00272391, 0.00273, 33.26476162], [1516610760000, 0.002725, 0.00272994, 0.002725, 0.002725, 246.8468208], [1516610820000, 0.002725, 0.00274223, 0.002725, 0.00274223, 440.15884728], [1516610880000, 0.00274221, 0.00274221, 0.00273, 0.00273655, 135.85427091], [1516610940000, 0.002738, 0.002739, 0.0027321, 0.002738, 165.75398666], [1516611000000, 0.002738, 0.002738, 0.00272994, 0.0027321, 573.38004072], [1516611060000, 0.00272994, 0.002731, 0.0027295, 0.0027295, 971.91231662], [1516611120000, 0.00274099, 0.00274099, 0.0027295, 0.002733, 64.81683425], [1516611180000, 0.002731, 0.002738, 0.0027295, 0.0027295, 102.0875627], [1516611240000, 0.00273, 0.002735, 0.0027295, 0.0027295, 167.65311664], [1516611300000, 0.00273899, 0.00274098, 0.0027295, 0.0027295, 139.4532639], [1516611360000, 0.0027295, 0.0027295, 0.002727, 0.002727, 32.22612238], [1516611420000, 0.00273697, 0.00273697, 0.002727, 0.002727, 125.20675172], [1516611480000, 0.002727, 0.002727, 0.00272699, 0.002727, 616.64249965], [1516611540000, 0.002727, 0.002727, 0.00272601, 0.00272601, 164.04283032], [1516611600000, 0.00272701, 0.002741, 0.00272701, 0.002741, 426.98222994], [1516611660000, 0.002741, 0.00274225, 0.002741, 0.00274225, 7.06172678], [1516611720000, 0.00274225, 0.002743, 0.00274225, 0.002743, 36.63245474], [1516611780000, 0.002743, 0.002743, 0.002743, 0.002743, 890.05293648], [1516611840000, 0.002743, 0.002743, 0.002743, 0.002743, 5.469096], [1516611900000, 0.002743, 0.00275248, 0.00274236, 0.002743, 116.82338581], [1516611960000, 0.00275, 0.00275249, 0.002743, 0.00275249, 36.68277453], [1516612020000, 0.002748, 0.00275249, 0.002748, 0.00275248, 477.03032214], [1516612080000, 0.00275249, 0.00275249, 0.002743, 0.002743, 515.44449288], [1516612140000, 0.00275247, 0.00275249, 0.00275247, 0.00275249, 2.51200898], [1516612200000, 0.002744, 0.00275247, 0.002744, 0.002744, 16.99687238], [1516612260000, 0.002744, 0.002744, 0.002744, 0.002744, 17.37027369], [1516612320000, 0.002744, 0.002744, 0.002743, 0.002744, 154.02654879], [1516612380000, 0.00275247, 0.00275248, 0.00274401, 0.00275248, 8.41784329], [1516612440000, 0.00275248, 0.0027525, 0.002744, 0.002744, 19.6399676], [1516612500000, 0.0027524, 0.0027524, 0.0027524, 0.0027524, 3.63240102], [1516612620000, 0.00274798, 0.002748, 0.00274798, 0.002748, 795.31307684], [1516612680000, 0.002748, 0.002748, 0.002748, 0.002748, 376.58696973], [1516612740000, 0.0027524, 0.00275248, 0.00274801, 0.00274801, 176.62683029], [1516612800000, 0.00275248, 0.002753, 0.00275248, 0.002753, 938.29387355], [1516612860000, 0.002753, 0.00276, 0.002753, 0.00276, 68.85317794], [1516612920000, 0.00276002, 0.00276248, 0.00276001, 0.00276248, 37.31588871], [1516612980000, 0.00276005, 0.00276248, 0.00276005, 0.00276248, 189.477014], [1516613040000, 0.00276249, 0.00276249, 0.00276248, 0.00276249, 112.91500706], [1516613100000, 0.00276249, 0.00276249, 0.00276248, 0.00276248, 39.32803197], [1516613160000, 0.00276248, 0.0027637, 0.00276248, 0.0027637, 27.00223746], [1516613220000, 0.0027637, 0.00276379, 0.0027637, 0.00276379, 19.26513534], [1516613280000, 0.00276379, 0.002764, 0.00276379, 0.002764, 119.29817844], [1516613340000, 0.002764, 0.00277008, 0.00276379, 0.00277007, 1382.41410681], [1516613400000, 0.00276379, 0.00277006, 0.00276248, 0.00276248, 164.59709715], [1516613460000, 0.00276248, 0.00277005, 0.002759, 0.00276, 525.62461017], [1516613520000, 0.00276, 0.00276999, 0.002758, 0.002758, 883.91704472], [1516613580000, 0.002758, 0.00276698, 0.002745, 0.0027455, 841.24404746], [1516613640000, 0.00276699, 0.002767, 0.002745, 0.002745, 192.76419973], [1516613700000, 0.002745, 0.002758, 0.002743, 0.002743, 114.60752191], [1516613760000, 0.002758, 0.002758, 0.00275, 0.00275, 242.28071043], [1516613820000, 0.00275, 0.00275, 0.00275, 0.00275, 530.27411449], [1516613880000, 0.00275, 0.002758, 0.00275, 0.002758, 38.85752561], [1516613940000, 0.00275, 0.00275, 0.00275, 0.00275, 20.0], [1516614000000, 0.00275, 0.00275, 0.00275, 0.00275, 13.74603706], [1516614060000, 0.00275, 0.002751, 0.00275, 0.00275, 93.89421406], [1516614120000, 0.002751, 0.00275798, 0.00275, 0.00275798, 15.05568008], [1516614180000, 0.00275798, 0.00275798, 0.00275, 0.00275, 54.06266522], [1516614240000, 0.00275, 0.00275, 0.00275, 0.00275, 26.35638971], [1516614300000, 0.00275, 0.00275, 0.00275, 0.00275, 826.60985757], [1516614360000, 0.00275, 0.00275794, 0.00275, 0.00275, 1020.77681252], [1516614420000, 0.00275, 0.00275696, 0.00275, 0.00275695, 18.23016496], [1516614480000, 0.00275, 0.00275, 0.00275, 0.00275, 49.30897549], [1516614540000, 0.00275581, 0.00275581, 0.00275, 0.00275, 28.97877451], [1516614600000, 0.00275, 0.00275579, 0.00275, 0.00275, 159.92344692], [1516614660000, 0.00274999, 0.00274999, 0.002744, 0.002744, 9.36455326], [1516614720000, 0.002744, 0.00275571, 0.00274, 0.00275, 1294.62873225], [1516614780000, 0.00275, 0.00275572, 0.00275, 0.00275572, 53.13848133], [1516614840000, 0.0027557, 0.00275696, 0.00275, 0.00275696, 399.39590455], [1516614900000, 0.00275572, 0.00276899, 0.00274001, 0.00276899, 453.70705055], [1516614960000, 0.00275855, 0.00276895, 0.00275, 0.0027551, 105.78881194], [1516615020000, 0.00275, 0.00275, 0.00275, 0.00275, 25.02911818], [1516615080000, 0.0027551, 0.0027551, 0.00275, 0.00275, 36.56249076], [1516615140000, 0.00275, 0.00275509, 0.00274101, 0.00275509, 41.78319016], [1516615200000, 0.00275508, 0.002769, 0.00275, 0.002757, 94.9474922], [1516615260000, 0.002757, 0.00275701, 0.002757, 0.00275701, 410.09622036], [1516615320000, 0.002769, 0.002769, 0.00275701, 0.00275701, 27.91028174], [1516615380000, 0.00275701, 0.00276898, 0.00275701, 0.00275701, 92.73924115], [1516615440000, 0.00276897, 0.00276897, 0.002757, 0.002757, 91.80363463], [1516615500000, 0.002757, 0.00275701, 0.002757, 0.00275701, 196.15057781], [1516615560000, 0.00275701, 0.00276699, 0.002757, 0.002757, 306.47075909], [1516615620000, 0.002757, 0.002757, 0.00275, 0.00275, 695.46990168], [1516615680000, 0.00275, 0.00276577, 0.00274105, 0.00276563, 131.58785533], [1516615740000, 0.002757, 0.002757, 0.002757, 0.002757, 6.48349277], [1516615800000, 0.00275699, 0.00275699, 0.00275699, 0.00275699, 3.62714409], [1516615860000, 0.00274105, 0.00275698, 0.00274105, 0.00275698, 126.94324525], [1516615920000, 0.00275698, 0.00275699, 0.00274105, 0.00275699, 32.96466911], [1516615980000, 0.00275698, 0.00275698, 0.00274105, 0.00274105, 58.79326733], [1516616040000, 0.00274105, 0.00275689, 0.00274105, 0.00275688, 141.65262623], [1516616100000, 0.0027561, 0.00275687, 0.00274105, 0.00274105, 19.77724118], [1516616160000, 0.0027567, 0.0027567, 0.00274001, 0.00274105, 114.16050571], [1516616220000, 0.00274105, 0.00274105, 0.00274105, 0.00274105, 2.82411849], [1516616280000, 0.00274102, 0.00274105, 0.00274102, 0.00274105, 8.79414997], [1516616340000, 0.00274105, 0.00275688, 0.00274005, 0.00275688, 214.51847072], [1516616400000, 0.00275687, 0.00275688, 0.00275683, 0.00275683, 94.69092414], [1516616460000, 0.00274202, 0.0027422, 0.00274001, 0.0027422, 76.36694507], [1516616520000, 0.0027422, 0.0027422, 0.00274001, 0.00274001, 16.8223525], [1516616580000, 0.00274001, 0.0027422, 0.00274001, 0.0027422, 38.78068613], [1516616700000, 0.0027422, 0.0027422, 0.00274001, 0.00274001, 217.72923469], [1516616760000, 0.002741, 0.002741, 0.00274, 0.00274, 81.72622648], [1516616820000, 0.00274001, 0.00275612, 0.00274, 0.00275592, 122.75903034], [1516616880000, 0.002741, 0.00275569, 0.002741, 0.002741, 9.2809011], [1516616940000, 0.00275524, 0.00275524, 0.002741, 0.002741, 21.07097436], [1516617000000, 0.002741, 0.002755, 0.002741, 0.00275499, 475.31320256], [1516617060000, 0.00275492, 0.00275498, 0.002741, 0.00274968, 103.59954706], [1516617120000, 0.00274968, 0.00275492, 0.002741, 0.0027415, 134.11374673], [1516617180000, 0.0027415, 0.0027415, 0.0027415, 0.0027415, 34.76849872], [1516617240000, 0.00275466, 0.00275466, 0.002741, 0.002741, 60.71066082], [1516617300000, 0.00275491, 0.00275492, 0.00275491, 0.00275491, 51.9065737], [1516617360000, 0.0027549, 0.00275491, 0.002741, 0.00275491, 137.87060633], [1516617420000, 0.00275491, 0.00275491, 0.0027415, 0.0027415, 2.42854389], [1516617480000, 0.0027415, 0.00275491, 0.0027415, 0.00275491, 125.31713329], [1516617540000, 0.00275491, 0.00275492, 0.00274151, 0.00275489, 438.42457549], [1516617600000, 0.00275489, 0.0027549, 0.00274525, 0.0027549, 24.23045521], [1516617660000, 0.0027549, 0.00275492, 0.002742, 0.002742, 10.86365069], [1516617720000, 0.00274201, 0.00274201, 0.00274201, 0.00274201, 113.91718666], [1516617780000, 0.00274201, 0.00274201, 0.00274201, 0.00274201, 1.58288817], [1516617840000, 0.00274201, 0.0027549, 0.00274201, 0.00274201, 1.02924162], [1516617900000, 0.00274201, 0.00275489, 0.00274201, 0.00275487, 9.76499444], [1516617960000, 0.00274201, 0.00274201, 0.00274201, 0.00274201, 6.77293038], [1516618020000, 0.0027426, 0.0027426, 0.0027426, 0.0027426, 0.18798988], [1516618080000, 0.0027548, 0.0027548, 0.0027548, 0.0027548, 72.4187875], [1516618140000, 0.0027426, 0.00275476, 0.0027426, 0.0027426, 5.12915616], [1516618200000, 0.00275473, 0.00275473, 0.00274261, 0.00275471, 39.66069313], [1516618260000, 0.00274261, 0.00274261, 0.0027426, 0.0027426, 254.06571916], [1516618320000, 0.0027426, 0.00274261, 0.00274202, 0.00274202, 341.07115277], [1516618380000, 0.0027426, 0.00275479, 0.0027426, 0.0027426, 42.08652103], [1516618440000, 0.0027426, 0.0027426, 0.0027426, 0.0027426, 11.54521264], [1516618500000, 0.0027426, 0.002745, 0.0027426, 0.0027426, 49.1387445], [1516618560000, 0.0027426, 0.002745, 0.0027426, 0.0027426, 6.12184126], [1516618620000, 0.0027426, 0.002745, 0.0027426, 0.002745, 685.53893442], [1516618680000, 0.002745, 0.002745, 0.002745, 0.002745, 69.05675846], [1516618740000, 0.002745, 0.002745, 0.002745, 0.002745, 121.42537715], [1516618800000, 0.002745, 0.00275414, 0.002745, 0.00274503, 59.66018913], [1516618860000, 0.00274503, 0.00275416, 0.00274503, 0.00275416, 718.54452922], [1516618920000, 0.00274503, 0.00275415, 0.00274503, 0.00274504, 22.34587041], [1516618980000, 0.00274505, 0.00274505, 0.00274504, 0.00274505, 160.49361537], [1516619040000, 0.00274505, 0.00274505, 0.00274504, 0.00274504, 47.00048447], [1516619100000, 0.00274956, 0.00275479, 0.00274504, 0.00275479, 124.73322304], [1516619160000, 0.00274504, 0.00275399, 0.00274504, 0.00274504, 115.37873698], [1516619220000, 0.00275396, 0.00275397, 0.00274504, 0.00274504, 65.97285738], [1516619280000, 0.00275394, 0.00275399, 0.00274504, 0.00275399, 362.29287285], [1516619340000, 0.00275, 0.00275, 0.00275, 0.00275, 132.32391129], [1516619400000, 0.00274504, 0.00274999, 0.00274504, 0.00274999, 20.60762615], [1516619460000, 0.00274504, 0.00274999, 0.00274504, 0.00274999, 23.90367999], [1516619520000, 0.00274504, 0.00275394, 0.00274504, 0.00274999, 28.47772718], [1516619580000, 0.00275, 0.00275, 0.00274504, 0.00274504, 232.11580675], [1516619640000, 0.00274504, 0.00275394, 0.00274504, 0.00274999, 109.57189497], [1516619700000, 0.00274999, 0.00275394, 0.00274999, 0.00275, 80.6727678], [1516619760000, 0.00275, 0.00275394, 0.00274503, 0.00274503, 137.11842306], [1516619820000, 0.00274503, 0.00275399, 0.002745, 0.00275394, 1084.86787631], [1516619880000, 0.00275394, 0.00275399, 0.00275394, 0.00275394, 54.36930094], [1516619940000, 0.00275394, 0.00275394, 0.00275394, 0.00275394, 71.13966928], [1516620000000, 0.00275394, 0.00275399, 0.00275394, 0.00275394, 587.75995843], [1516620060000, 0.00275394, 0.00275399, 0.00274503, 0.00275399, 149.84819355], [1516620120000, 0.00275399, 0.00275399, 0.002742, 0.00275399, 132.64301731], [1516620180000, 0.00274503, 0.00274503, 0.00274151, 0.00274503, 63.58569111], [1516620240000, 0.00274151, 0.00274151, 0.00274151, 0.00274151, 17.16051044], [1516620300000, 0.00274151, 0.00274503, 0.00274151, 0.00274151, 26.6451541], [1516620360000, 0.00274503, 0.00274503, 0.00274151, 0.00274152, 138.06187775], [1516620420000, 0.00274159, 0.00274503, 0.00274154, 0.00274503, 39.81589512], [1516620480000, 0.00274159, 0.00274503, 0.00274159, 0.00274503, 111.2823495], [1516620540000, 0.002746, 0.00275397, 0.00274151, 0.00274151, 156.65000102], [1516620600000, 0.00274155, 0.00274165, 0.00274151, 0.00274155, 63.20079036], [1516620660000, 0.00275364, 0.00276, 0.00274151, 0.00274151, 1599.41335777], [1516620720000, 0.00274151, 0.00274151, 0.0027345, 0.0027345, 590.48640009], [1516620780000, 0.0027345, 0.00273999, 0.0027301, 0.0027301, 131.70765484], [1516620840000, 0.00273013, 0.00274, 0.00272, 0.00272, 2649.32003632], [1516620900000, 0.00272369, 0.00272369, 0.00272, 0.00272364, 353.22222667], [1516620960000, 0.00272364, 0.00272364, 0.002719, 0.002719, 182.17827892], [1516621020000, 0.002719, 0.002719, 0.0027154, 0.002719, 94.69240952], [1516621080000, 0.002719, 0.002719, 0.0027154, 0.002719, 880.68373316], [1516621140000, 0.002719, 0.002719, 0.00271538, 0.00271538, 371.21665031], [1516621200000, 0.00271538, 0.002719, 0.00271538, 0.00271538, 190.15275427], [1516621260000, 0.002719, 0.002729, 0.00271544, 0.0027155, 439.13439906], [1516621320000, 0.0027155, 0.00272899, 0.0027155, 0.00272897, 34.88817459], [1516621380000, 0.00272897, 0.00272897, 0.00271538, 0.00271538, 257.7951404], [1516621440000, 0.00272896, 0.00272899, 0.0027289, 0.00272897, 76.76182826], [1516621500000, 0.00272889, 0.00272897, 0.00272889, 0.0027289, 14.97577157], [1516621560000, 0.0027288, 0.00272889, 0.00271535, 0.00272885, 167.03302177], [1516621620000, 0.0027154, 0.00272034, 0.00271003, 0.00271003, 784.41774924], [1516621680000, 0.00271003, 0.00271499, 0.00271, 0.00271499, 166.58595674], [1516621740000, 0.00271499, 0.002715, 0.00271, 0.00271, 84.16583821], [1516621800000, 0.00271, 0.00272637, 0.00271, 0.00272637, 293.1694315], [1516621860000, 0.00271, 0.002715, 0.0027, 0.002715, 1587.19852581], [1516621920000, 0.00272629, 0.00272629, 0.00270009, 0.00270009, 164.06746526], [1516621980000, 0.002715, 0.002715, 0.002715, 0.002715, 75.49916909], [1516622040000, 0.002715, 0.002715, 0.002715, 0.002715, 64.51808164], [1516622100000, 0.002715, 0.002715, 0.00270629, 0.00270629, 41.92405791], [1516622160000, 0.00270629, 0.00270629, 0.0027019, 0.00270213, 28.12292503], [1516622220000, 0.0027019, 0.00272, 0.0027019, 0.00271, 43.98470737], [1516622280000, 0.00270214, 0.00271, 0.0027019, 0.00271, 140.42689993], [1516622340000, 0.0027019, 0.00271, 0.0027019, 0.0027019, 773.28198265], [1516622400000, 0.0027022, 0.00271, 0.00269327, 0.00269327, 765.10100299], [1516622460000, 0.00269327, 0.00269327, 0.00269092, 0.00269092, 37.17391195], [1516622520000, 0.00269002, 0.00269002, 0.0026859, 0.0026859, 70.37098384], [1516622580000, 0.00268556, 0.00270905, 0.00268248, 0.00270905, 711.68802545], [1516622640000, 0.00270906, 0.00270906, 0.002685, 0.002685, 352.81570654], [1516622700000, 0.002685, 0.00269327, 0.00268248, 0.00268248, 99.4142213], [1516622760000, 0.002693, 0.002693, 0.00268249, 0.00268249, 6.75912402], [1516622820000, 0.00268782, 0.002707, 0.00268782, 0.00270699, 82.97337388], [1516622880000, 0.002693, 0.00270999, 0.00268248, 0.00268248, 292.28923437], [1516622940000, 0.00268782, 0.00270692, 0.00268782, 0.002693, 38.17854744], [1516623000000, 0.00270692, 0.00270693, 0.002693, 0.002693, 140.38944634], [1516623060000, 0.00270568, 0.00270568, 0.00270567, 0.00270568, 134.28666986], [1516623120000, 0.00270568, 0.00270568, 0.00270567, 0.00270567, 0.90791157], [1516623180000, 0.00270567, 0.00270567, 0.00270566, 0.00270567, 82.1941602], [1516623240000, 0.00270567, 0.00270567, 0.00269402, 0.00270566, 122.54979911], [1516623300000, 0.00270566, 0.00270566, 0.00269402, 0.00270565, 79.95202954], [1516623360000, 0.00270565, 0.00270566, 0.00269402, 0.00270566, 24.99385961], [1516623420000, 0.00269402, 0.00270565, 0.00269402, 0.00269402, 36.8894383], [1516623480000, 0.00270563, 0.00270566, 0.00269402, 0.00270566, 152.68834377], [1516623540000, 0.00269403, 0.00270559, 0.002693, 0.002693, 245.76189099], [1516623600000, 0.002693, 0.00270553, 0.002687, 0.002687, 103.26681004], [1516623660000, 0.00269213, 0.00270552, 0.002687, 0.002687, 66.30440735], [1516623720000, 0.00270549, 0.00270549, 0.002687, 0.0027, 67.6807785], [1516623780000, 0.0027, 0.0027028, 0.00268701, 0.00268701, 51.71145548], [1516623840000, 0.00268701, 0.00268701, 0.002687, 0.00268701, 68.64101465], [1516623900000, 0.002687, 0.00268701, 0.002687, 0.00268701, 18.78227544], [1516623960000, 0.002687, 0.00268701, 0.002687, 0.002687, 258.50852848], [1516624020000, 0.00268701, 0.00268701, 0.00268248, 0.00268248, 278.65823232], [1516624080000, 0.00268221, 0.00268221, 0.00268182, 0.00268182, 154.13358332], [1516624140000, 0.00268182, 0.00268216, 0.00268, 0.00268, 241.97374726], [1516624200000, 0.00268024, 0.00268024, 0.002672, 0.002672, 124.90104138], [1516624260000, 0.00267442, 0.00267444, 0.00267, 0.00267, 295.8192062], [1516624320000, 0.00267021, 0.002679, 0.00267, 0.002679, 83.36908711], [1516624380000, 0.002679, 0.00268, 0.002679, 0.00267901, 51.60363419], [1516624440000, 0.00267901, 0.0026818, 0.00267464, 0.0026817, 198.59084347], [1516624500000, 0.00267464, 0.00267464, 0.00266094, 0.00267464, 781.28051853], [1516624560000, 0.00267464, 0.00267464, 0.00266005, 0.00267463, 339.85648973], [1516624620000, 0.002663, 0.00267463, 0.00266005, 0.00267, 298.04436544], [1516624680000, 0.00267, 0.00267, 0.00267, 0.00267, 161.2661864], [1516624740000, 0.00267, 0.00267464, 0.00266832, 0.00267464, 599.23724129], [1516624800000, 0.00267003, 0.00267003, 0.00267, 0.00267003, 134.64062789], [1516624860000, 0.00267003, 0.00267903, 0.00267001, 0.00267001, 183.07471661], [1516624920000, 0.00267, 0.00267001, 0.0026605, 0.00267001, 22.47998885], [1516624980000, 0.00267, 0.00267001, 0.00267, 0.00267001, 56.24297707], [1516625040000, 0.00267, 0.00267001, 0.0026605, 0.0026605, 47.01677139], [1516625100000, 0.00267, 0.00267001, 0.0026605, 0.00267, 265.3498206], [1516625160000, 0.00267, 0.00267, 0.00265786, 0.00267, 647.95342546], [1516625220000, 0.00267, 0.00267, 0.00266166, 0.00267, 1124.27794947], [1516625280000, 0.00267, 0.00267001, 0.00266002, 0.00267001, 391.29752328], [1516625340000, 0.00266998, 0.00266998, 0.00266998, 0.00266998, 20.0089437], [1516625400000, 0.00266003, 0.00266998, 0.00266003, 0.00266997, 252.25601054], [1516625460000, 0.00266997, 0.00266998, 0.00266007, 0.00266998, 362.67439159], [1516625520000, 0.00266995, 0.00266998, 0.002669, 0.00266998, 134.3019885], [1516625580000, 0.00266998, 0.00267001, 0.00266995, 0.00267001, 872.6138146], [1516625640000, 0.00267001, 0.00267001, 0.00266995, 0.00267001, 738.45594452], [1516625700000, 0.00267001, 0.00267001, 0.00266995, 0.00266999, 126.19731866], [1516625760000, 0.00266999, 0.00267001, 0.00266995, 0.00267001, 168.74154596], [1516625820000, 0.00267001, 0.00267001, 0.00267, 0.00267001, 3.68519822], [1516625880000, 0.00267001, 0.00267001, 0.00266995, 0.00267001, 617.45085052], [1516625940000, 0.00267001, 0.00267001, 0.00266995, 0.00267, 303.35062104], [1516626000000, 0.00267001, 0.0026817, 0.00266008, 0.0026817, 1207.69809136], [1516626060000, 0.0026817, 0.0026817, 0.00267, 0.0026817, 12.96007993], [1516626120000, 0.0026817, 0.00268248, 0.00267014, 0.00267014, 81.21317654], [1516626180000, 0.00267015, 0.00267015, 0.00267015, 0.00267015, 50.0], [1516626240000, 0.00268, 0.00268, 0.00267015, 0.00268, 86.43432307], [1516626300000, 0.00268, 0.00268, 0.00267015, 0.00267015, 3.42096388], [1516626360000, 0.00267015, 0.00267015, 0.00266081, 0.00266081, 150.58828026], [1516626420000, 0.0026666, 0.0026666, 0.00265786, 0.00265786, 134.85142789], [1516626480000, 0.00267999, 0.00267999, 0.002655, 0.00266956, 139.5062908], [1516626540000, 0.00267993, 0.00267993, 0.00266887, 0.00266887, 30.43169515], [1516626600000, 0.00266887, 0.00266887, 0.002667, 0.00266787, 52.70994292], [1516626660000, 0.002667, 0.00266787, 0.002667, 0.002667, 37.07405664], [1516626720000, 0.002667, 0.00266786, 0.00265786, 0.00265786, 170.4009706], [1516626780000, 0.00265756, 0.00266794, 0.0026501, 0.0026501, 696.01134952], [1516626840000, 0.00265757, 0.00265786, 0.00265, 0.00265, 2333.36754573], [1516626900000, 0.00265, 0.00266771, 0.00265, 0.00265, 694.96868924], [1516626960000, 0.00265, 0.0026501, 0.00264428, 0.00264428, 543.52080827], [1516627020000, 0.00264407, 0.00264428, 0.00264314, 0.00264314, 135.36352369], [1516627080000, 0.00264246, 0.00264424, 0.002637, 0.0026425, 522.93737545], [1516627140000, 0.0026425, 0.00264424, 0.0026351, 0.0026422, 237.30153845], [1516627200000, 0.00264, 0.00264424, 0.00263, 0.00264, 585.80833367], [1516627260000, 0.00264, 0.00264424, 0.00263, 0.00264423, 198.24678007], [1516627320000, 0.00264424, 0.00264424, 0.00263, 0.0026442, 311.75195237], [1516627380000, 0.0026442, 0.0026501, 0.0026412, 0.0026501, 687.99976334], [1516627440000, 0.0026501, 0.00265999, 0.0026501, 0.00265999, 204.03155643], [1516627500000, 0.00265999, 0.00265999, 0.00264999, 0.00264999, 443.93794243], [1516627560000, 0.0026412, 0.00265999, 0.00264, 0.00264, 307.7022001], [1516627620000, 0.00264002, 0.00264002, 0.00263, 0.00263011, 618.63768492], [1516627680000, 0.00264002, 0.00264002, 0.00263, 0.00263645, 123.39879877], [1516627740000, 0.00263777, 0.00263777, 0.00262897, 0.00262897, 419.66615698], [1516627800000, 0.002632, 0.00265894, 0.00262897, 0.00265885, 975.64721682], [1516627860000, 0.00265885, 0.00265885, 0.00263, 0.00265869, 308.76623778], [1516627920000, 0.00265868, 0.00265869, 0.00263002, 0.00263011, 1928.03005985], [1516627980000, 0.00263029, 0.002655, 0.00263028, 0.002655, 1064.18048783], [1516628040000, 0.002655, 0.002655, 0.00265492, 0.002655, 30.0], [1516628100000, 0.002655, 0.002655, 0.00265144, 0.0026549, 353.35093392], [1516628160000, 0.0026549, 0.002655, 0.00265144, 0.002655, 114.55498339], [1516628220000, 0.00265489, 0.002655, 0.00265144, 0.00265144, 171.78494707], [1516628280000, 0.00265144, 0.00265144, 0.00264084, 0.00264084, 899.62208423], [1516628340000, 0.00264084, 0.00265144, 0.00264084, 0.00265144, 214.75186857], [1516628400000, 0.00265144, 0.00265999, 0.00265144, 0.00265855, 448.42208195], [1516628460000, 0.00265855, 0.00265999, 0.00265855, 0.00265999, 118.76473697], [1516628520000, 0.00266998, 0.00267086, 0.00265, 0.00265, 354.77314776], [1516628580000, 0.00265, 0.0026583, 0.00264828, 0.0026583, 610.32385396], [1516628640000, 0.002658, 0.0026583, 0.00265, 0.00265, 313.95594049], [1516628700000, 0.00265, 0.002658, 0.002641, 0.00264101, 532.71329276], [1516628760000, 0.002658, 0.00265801, 0.002641, 0.00265801, 148.22307339], [1516628820000, 0.00265802, 0.00267085, 0.00264152, 0.002642, 113.46379402], [1516628880000, 0.0026422, 0.00267017, 0.00264128, 0.0026424, 277.48796892], [1516628940000, 0.0026425, 0.00265522, 0.0026424, 0.00265522, 22.29957935], [1516629000000, 0.00265522, 0.00265522, 0.0026424, 0.0026424, 254.90332917], [1516629060000, 0.0026424, 0.00265522, 0.00264003, 0.00264003, 709.44383152], [1516629120000, 0.00264002, 0.00267039, 0.00263053, 0.00264241, 2166.23020524], [1516629180000, 0.00264241, 0.00267021, 0.00263053, 0.00263061, 738.90868474], [1516629240000, 0.00264241, 0.00264241, 0.00263276, 0.00263496, 573.32147775], [1516629300000, 0.00263498, 0.00266457, 0.00263497, 0.002635, 231.03406474], [1516629360000, 0.002635, 0.00266408, 0.002635, 0.0026371, 462.37081999], [1516629420000, 0.002638, 0.0026628, 0.0026371, 0.002644, 182.23273003], [1516629480000, 0.00266, 0.00266, 0.002644, 0.002644, 271.59169722], [1516629540000, 0.00265991, 0.00265998, 0.0026403, 0.00264402, 112.44100417], [1516629600000, 0.0026522, 0.0026628, 0.00264521, 0.0026628, 1190.53843606], [1516629660000, 0.0026628, 0.0026628, 0.00266, 0.00266, 759.68557011], [1516629720000, 0.00265308, 0.00266001, 0.00265308, 0.00265997, 30.94483348], [1516629780000, 0.00265308, 0.00266, 0.00265308, 0.00265308, 134.0656953], [1516629840000, 0.00265997, 0.00266, 0.00265997, 0.00266, 71.77606656], [1516629900000, 0.00266, 0.00266, 0.0026533, 0.0026592, 229.22272962], [1516629960000, 0.00266001, 0.0026628, 0.00265326, 0.00266, 180.15995468], [1516630020000, 0.0026628, 0.0026628, 0.00265912, 0.0026628, 351.33502198], [1516630080000, 0.00267033, 0.00267342, 0.0026628, 0.00267078, 252.36110748], [1516630140000, 0.00267078, 0.00267382, 0.00263711, 0.00263743, 1422.41246183], [1516630200000, 0.00263753, 0.00267091, 0.00263753, 0.00266131, 33.02875717], [1516630260000, 0.00266131, 0.002671, 0.00266131, 0.00266131, 645.48145003], [1516630320000, 0.002671, 0.002671, 0.00266131, 0.00266146, 42.35988383], [1516630380000, 0.00266132, 0.00266132, 0.00266132, 0.00266132, 32.51418786], [1516630440000, 0.00266146, 0.002671, 0.00266131, 0.00266133, 311.59855518], [1516630500000, 0.00266133, 0.002671, 0.00266131, 0.00266132, 641.34016663], [1516630560000, 0.002671, 0.002671, 0.002644, 0.00266132, 192.09133117], [1516630620000, 0.0026705, 0.002671, 0.0026705, 0.0026705, 134.17293771], [1516630680000, 0.00267061, 0.00267061, 0.0026705, 0.0026705, 112.04600301], [1516630740000, 0.0026705, 0.0026705, 0.0026705, 0.0026705, 25.84705222], [1516630800000, 0.00266131, 0.0026705, 0.00266131, 0.0026704, 54.33727801], [1516630860000, 0.0026704, 0.0026704, 0.00266, 0.00266131, 563.72897992], [1516630920000, 0.00267039, 0.00267047, 0.00266131, 0.00267039, 92.88718261], [1516630980000, 0.00267039, 0.00267039, 0.00267, 0.00267, 19.50423093], [1516631040000, 0.00267, 0.00267047, 0.00267, 0.00267, 1162.30537998], [1516631100000, 0.00267046, 0.00267485, 0.00267046, 0.00267485, 1321.18861594], [1516631160000, 0.002675, 0.00268, 0.00267, 0.00267492, 276.05491236], [1516631220000, 0.00267492, 0.00268, 0.00267492, 0.00268, 116.24849868], [1516631280000, 0.002675, 0.00268, 0.00267492, 0.00268, 226.87578007], [1516631340000, 0.00267502, 0.00268, 0.00267502, 0.00268, 203.17767809], [1516631400000, 0.00268, 0.00268, 0.00267502, 0.00268, 13.42827389], [1516631460000, 0.00268, 0.00268, 0.00267996, 0.00268, 322.15448484], [1516631520000, 0.0026817, 0.00268997, 0.00268, 0.00268997, 240.85301435], [1516631580000, 0.00268416, 0.00269523, 0.0026817, 0.0026817, 1426.92847308], [1516631640000, 0.0026817, 0.0026952, 0.0026817, 0.0026817, 151.99945692], [1516631700000, 0.0026817, 0.00270251, 0.0026817, 0.00270251, 3964.38784642], [1516631760000, 0.00269997, 0.00269999, 0.0026817, 0.00268706, 221.29933033], [1516631820000, 0.0026817, 0.00268706, 0.0026817, 0.002686, 86.45102468], [1516631880000, 0.002686, 0.00268706, 0.002686, 0.00268706, 621.76761214], [1516631940000, 0.00268706, 0.00268706, 0.00268601, 0.00268706, 357.36492688], [1516632000000, 0.00268706, 0.00269, 0.00268701, 0.00268701, 1586.38788648], [1516632060000, 0.00268701, 0.00269, 0.0026817, 0.0026817, 1322.56513634], [1516632120000, 0.0026817, 0.00268998, 0.00267502, 0.00267996, 429.08870724], [1516632180000, 0.00267502, 0.00267502, 0.00267502, 0.00267502, 61.21996949], [1516632240000, 0.002676, 0.002676, 0.002675, 0.00267503, 67.76579984], [1516632300000, 0.00267503, 0.00268998, 0.00267503, 0.0026817, 108.6165528], [1516632360000, 0.0026817, 0.00268997, 0.00267996, 0.00267996, 306.13101864], [1516632420000, 0.00267996, 0.00267996, 0.002675, 0.00267996, 81.4232377], [1516632480000, 0.00268, 0.00268996, 0.00268, 0.00268996, 127.13065994], [1516632540000, 0.00268134, 0.00268134, 0.00267, 0.00267, 1510.85829316], [1516632600000, 0.00266695, 0.00266998, 0.00266007, 0.0026669, 358.6450156], [1516632660000, 0.0026669, 0.00266695, 0.00265401, 0.00266695, 1144.79720993], [1516632720000, 0.00267965, 0.00267965, 0.00265403, 0.00265404, 66.01818263], [1516632780000, 0.00265405, 0.00265405, 0.002654, 0.00265405, 236.02853274], [1516632840000, 0.002654, 0.00266798, 0.002654, 0.002654, 129.77668112], [1516632900000, 0.002654, 0.002654, 0.00265, 0.00265, 222.62768668], [1516632960000, 0.00265, 0.00265, 0.00264, 0.00264013, 156.6503851], [1516633020000, 0.00265, 0.00265, 0.00264013, 0.00265, 567.43377685], [1516633080000, 0.00264997, 0.00265, 0.00264023, 0.002641, 3.25383449], [1516633140000, 0.00265, 0.00265, 0.00264059, 0.00264167, 797.43279119], [1516633200000, 0.00264165, 0.00264167, 0.00264165, 0.00264166, 12.24351949], [1516633260000, 0.00264222, 0.00266422, 0.00264166, 0.00265795, 474.32807191], [1516633320000, 0.00265795, 0.00265795, 0.00264466, 0.00264466, 245.23242909], [1516633380000, 0.00265795, 0.00265795, 0.00264266, 0.00264466, 164.96719523], [1516633440000, 0.00264466, 0.00264466, 0.00264275, 0.00264464, 45.86189202], [1516633500000, 0.00264466, 0.00266099, 0.00264466, 0.00265099, 115.39644368], [1516633560000, 0.00265099, 0.00265099, 0.00265099, 0.00265099, 450.69550727], [1516633620000, 0.00265099, 0.00266297, 0.00265099, 0.00265599, 292.05698324], [1516633680000, 0.00265599, 0.00266099, 0.00265599, 0.00265599, 107.60737803], [1516633740000, 0.00265599, 0.00266092, 0.00265599, 0.00266092, 96.6672117], [1516633800000, 0.00265599, 0.00266099, 0.00265099, 0.002651, 271.61060129], [1516633860000, 0.002651, 0.002651, 0.002651, 0.002651, 3.21529446], [1516633920000, 0.00266096, 0.00266096, 0.00266095, 0.00266095, 7.91805146], [1516633980000, 0.002651, 0.002651, 0.002651, 0.002651, 12.42673132], [1516634040000, 0.002651, 0.00265596, 0.002651, 0.00265596, 29.60607191], [1516634100000, 0.00265597, 0.00265597, 0.00264301, 0.00264301, 796.95394564], [1516634160000, 0.00264301, 0.00264311, 0.00264301, 0.00264301, 101.38525319], [1516634220000, 0.00264301, 0.00265597, 0.00264301, 0.00264401, 96.62819773], [1516634280000, 0.00264401, 0.00264401, 0.0026431, 0.0026431, 190.24175265], [1516634340000, 0.0026431, 0.00265596, 0.0026431, 0.00265596, 42.56428356], [1516634400000, 0.00265298, 0.00266419, 0.00265298, 0.00266417, 163.54847396], [1516634460000, 0.002653, 0.00265596, 0.002653, 0.0026531, 19.9125796], [1516634520000, 0.002653, 0.00265301, 0.002653, 0.00265301, 172.47153661], [1516634580000, 0.00265301, 0.00265301, 0.002653, 0.002653, 172.86999952], [1516634640000, 0.002653, 0.002653, 0.002653, 0.002653, 68.61052976], [1516634700000, 0.002653, 0.00266417, 0.002653, 0.00266417, 39.17039125], [1516634760000, 0.00266416, 0.00266417, 0.00265302, 0.00265302, 46.83227574], [1516634880000, 0.0026641, 0.00266415, 0.0026641, 0.00266415, 174.89597009], [1516634940000, 0.00266414, 0.00266417, 0.00266414, 0.00266417, 182.32058549], [1516635000000, 0.00266416, 0.0026642, 0.00266416, 0.00266416, 289.60742206], [1516635060000, 0.00266416, 0.0026642, 0.00266416, 0.00266416, 24.5987322], [1516635120000, 0.00266416, 0.0026642, 0.00266416, 0.0026642, 78.41720542], [1516635180000, 0.00267015, 0.00267965, 0.00267015, 0.00267899, 681.68554882], [1516635240000, 0.00267899, 0.00267899, 0.00267015, 0.00267015, 1066.5245733], [1516635300000, 0.00267016, 0.002678, 0.00267016, 0.00267016, 106.68880555], [1516635360000, 0.00267016, 0.002673, 0.00267016, 0.002673, 6.45026164], [1516635420000, 0.00267016, 0.002673, 0.00267016, 0.002673, 34.75086717], [1516635480000, 0.002673, 0.002673, 0.002673, 0.002673, 502.62211117], [1516635540000, 0.002673, 0.002678, 0.002673, 0.002673, 417.04893205], [1516635600000, 0.002673, 0.0026817, 0.002673, 0.002673, 84.39345991], [1516635660000, 0.002673, 0.002677, 0.002673, 0.002677, 6.70559852], [1516635720000, 0.002677, 0.00268169, 0.002673, 0.002673, 52.17649797], [1516635780000, 0.002673, 0.002681, 0.00265304, 0.00266486, 829.70246787], [1516635840000, 0.00265311, 0.00267304, 0.00265304, 0.00267304, 1157.57569977], [1516635900000, 0.00267412, 0.00268082, 0.00267412, 0.00268055, 29.73908654], [1516635960000, 0.00267991, 0.00267991, 0.00267964, 0.00267964, 97.20685395], [1516636020000, 0.00266527, 0.00266527, 0.00266527, 0.00266527, 0.37613591], [1516636080000, 0.00267064, 0.002679, 0.00267063, 0.002679, 173.05000585], [1516636140000, 0.00268074, 0.0026817, 0.00267063, 0.0026817, 126.27113917], [1516636200000, 0.002673, 0.002675, 0.00266526, 0.00267063, 322.35461263], [1516636260000, 0.00267055, 0.00267055, 0.0026431, 0.0026431, 639.0285722], [1516636320000, 0.00266991, 0.00266991, 0.00264701, 0.00266, 219.62586079], [1516636380000, 0.00266, 0.00266, 0.00266, 0.00266, 753.90280384], [1516636440000, 0.00264702, 0.00264702, 0.00264702, 0.00264702, 1.57534758], [1516636500000, 0.002648, 0.00267061, 0.002648, 0.002649, 106.82671303], [1516636560000, 0.00264901, 0.00266, 0.00264901, 0.00266, 27.57098235], [1516636620000, 0.002649, 0.002658, 0.002649, 0.002658, 29.19810058], [1516636680000, 0.00265001, 0.00265001, 0.002649, 0.002649, 70.0], [1516636740000, 0.0026536, 0.00265798, 0.002649, 0.00265797, 83.73189288], [1516636800000, 0.00265797, 0.002658, 0.00265797, 0.002658, 53.06963659], [1516636860000, 0.002657, 0.00266, 0.002657, 0.002658, 326.78156987], [1516636920000, 0.002658, 0.00267063, 0.002658, 0.002658, 227.71827731], [1516636980000, 0.002658, 0.00267062, 0.002658, 0.00267062, 23.58006298], [1516637040000, 0.00267062, 0.00267063, 0.00267062, 0.00267063, 49.40373476], [1516637100000, 0.00267062, 0.00267063, 0.00267062, 0.00267062, 239.15179487], [1516637160000, 0.00267062, 0.00267063, 0.00267062, 0.00267063, 226.02768069], [1516637220000, 0.00267062, 0.00267618, 0.002649, 0.002649, 305.26330702], [1516637280000, 0.002649, 0.00267, 0.002649, 0.00267, 84.7541233], [1516637340000, 0.00266789, 0.00267063, 0.00264416, 0.00264416, 772.36777877], [1516637400000, 0.00267399, 0.00267399, 0.00264449, 0.00264449, 551.46490943], [1516637460000, 0.00267, 0.00267399, 0.00264333, 0.00267399, 1376.77987682], [1516637520000, 0.00264725, 0.00267381, 0.00264516, 0.00267, 183.66139802], [1516637580000, 0.0026732, 0.0026732, 0.002655, 0.002655, 51.09913704], [1516637640000, 0.002655, 0.00265595, 0.002655, 0.00265595, 4.79781755], [1516637700000, 0.00265501, 0.00267304, 0.002655, 0.00265503, 451.68572496], [1516637760000, 0.00265604, 0.00265604, 0.002655, 0.002655, 1007.92854238], [1516637820000, 0.00265602, 0.00267379, 0.00265601, 0.0026737, 224.08816111], [1516637880000, 0.0026737, 0.00267379, 0.00265604, 0.00267379, 27.61756847], [1516637940000, 0.00267379, 0.00267616, 0.00267379, 0.0026738, 284.06862806], [1516638000000, 0.0026738, 0.0026738, 0.00265602, 0.00266043, 524.11562498], [1516638060000, 0.00266043, 0.00267378, 0.00265602, 0.00267377, 249.4301309], [1516638120000, 0.00267374, 0.00267376, 0.00267374, 0.00267374, 51.46447212], [1516638180000, 0.00266045, 0.00266045, 0.00266045, 0.00266045, 11.19304042], [1516638240000, 0.00266045, 0.00266045, 0.00265602, 0.00265602, 49.29687413], [1516638300000, 0.00267, 0.00267, 0.00267, 0.00267, 14.00443663], [1516638360000, 0.00267, 0.00267, 0.00265703, 0.00267, 164.58220917], [1516638420000, 0.0026657, 0.00267, 0.0026657, 0.0026657, 62.04295307], [1516638480000, 0.00267, 0.00267, 0.00266957, 0.00266957, 42.0], [1516638540000, 0.0026737, 0.0026738, 0.00267, 0.00267, 326.97647237], [1516638600000, 0.00267, 0.00267, 0.00266957, 0.00266957, 308.86802562], [1516638660000, 0.00266957, 0.00266957, 0.0026657, 0.0026695, 74.45714442], [1516638720000, 0.0026695, 0.0026695, 0.0026695, 0.0026695, 4.00863626], [1516638780000, 0.0026695, 0.0026695, 0.0026657, 0.0026657, 102.98812848], [1516638840000, 0.0026657, 0.0026695, 0.0026655, 0.0026695, 192.59772436], [1516638900000, 0.0026695, 0.00266957, 0.00266657, 0.00266657, 312.84753235], [1516638960000, 0.00266657, 0.00266657, 0.00266657, 0.00266657, 24.56251305], [1516639020000, 0.00266657, 0.00266657, 0.00266657, 0.00266657, 26.32413882], [1516639080000, 0.00266956, 0.00266957, 0.00266956, 0.00266957, 39.35315816], [1516639140000, 0.00266657, 0.00266657, 0.00266657, 0.00266657, 24.01231172], [1516639200000, 0.00266657, 0.00266957, 0.00266001, 0.0026657, 27.89524595], [1516639260000, 0.00266957, 0.00266957, 0.0026657, 0.0026657, 17.86175251], [1516639320000, 0.00266002, 0.00266957, 0.00266001, 0.00266957, 206.32426371], [1516639380000, 0.00266957, 0.00266957, 0.00266, 0.00266, 530.91907406], [1516639440000, 0.00266956, 0.00266957, 0.00266, 0.00266, 105.0], [1516639500000, 0.00266001, 0.00266957, 0.00266001, 0.00266957, 14.63856936], [1516639560000, 0.00266001, 0.00266957, 0.00266001, 0.00266957, 86.21255349], [1516639620000, 0.00266957, 0.00266957, 0.00266957, 0.00266957, 17.10154296], [1516639680000, 0.00266957, 0.00266957, 0.00266957, 0.00266957, 899.3063733], [1516639740000, 0.00266957, 0.00266957, 0.00266104, 0.00266957, 355.40169155], [1516639800000, 0.00266957, 0.00266957, 0.00266111, 0.00266957, 362.46300375], [1516639860000, 0.00266957, 0.00266957, 0.00266957, 0.00266957, 0.41298786], [1516639920000, 0.0026762, 0.00268452, 0.00266112, 0.00266957, 693.27423785], [1516639980000, 0.00266957, 0.00268397, 0.00266957, 0.00266957, 3.59517051], [1516640040000, 0.00266957, 0.00266957, 0.00266957, 0.00266957, 0.41298786], [1516640100000, 0.00268379, 0.00268998, 0.0026696, 0.0026696, 958.12547946], [1516640160000, 0.00266961, 0.00268984, 0.00266961, 0.00268984, 245.99128319], [1516640220000, 0.00268981, 0.00268985, 0.00266962, 0.00266962, 724.97535808], [1516640280000, 0.00266985, 0.00268799, 0.00266985, 0.00268799, 28.89978262], [1516640340000, 0.00268497, 0.00268498, 0.00266985, 0.00266985, 19.81437636], [1516640400000, 0.00266985, 0.00268485, 0.00266962, 0.00268485, 603.72457511], [1516640460000, 0.00268465, 0.00268476, 0.00266101, 0.00266101, 1298.53617435], [1516640520000, 0.00266695, 0.00266695, 0.00266102, 0.00266102, 10.55183832], [1516640580000, 0.0026817, 0.0026817, 0.00266101, 0.00268167, 93.41772331], [1516640640000, 0.00268167, 0.00268167, 0.00266102, 0.00266108, 13.18768659], [1516640700000, 0.00268137, 0.00268137, 0.0026611, 0.0026812, 186.48726886], [1516640760000, 0.00266199, 0.00268109, 0.00266199, 0.00268109, 126.12698066], [1516640820000, 0.00268109, 0.00268109, 0.00268109, 0.00268109, 1.05406279], [1516640880000, 0.00266199, 0.00268, 0.00266199, 0.00266201, 61.75074556], [1516641000000, 0.0026808, 0.0026808, 0.00267244, 0.00267244, 6.85876052], [1516641060000, 0.0026808, 0.0026811, 0.00267244, 0.0026811, 102.88185611], [1516641120000, 0.00268145, 0.00268145, 0.00268145, 0.00268145, 1.694536], [1516641180000, 0.00267244, 0.00267244, 0.00266483, 0.00267244, 103.1777097], [1516641240000, 0.00267244, 0.00267244, 0.00266101, 0.00266101, 666.18937352], [1516641300000, 0.00267244, 0.00267742, 0.00267244, 0.00267742, 3.74189878], [1516641360000, 0.002666, 0.002666, 0.002666, 0.002666, 5.8], [1516641480000, 0.00268099, 0.00269, 0.00266701, 0.00266701, 330.45492264], [1516641540000, 0.00266702, 0.00266702, 0.00266702, 0.00266702, 0.70200957], [1516641600000, 0.00268099, 0.00268099, 0.00268099, 0.00268099, 3.72996542], [1516641660000, 0.00268099, 0.00268099, 0.00268099, 0.00268099, 15.12773183], [1516641720000, 0.00268099, 0.00268099, 0.0026809, 0.0026809, 95.41072821], [1516641780000, 0.00266709, 0.00266709, 0.00266709, 0.00266709, 11.22607312], [1516641840000, 0.00266709, 0.00268099, 0.00266709, 0.00268099, 18.17005943], [1516641900000, 0.00268099, 0.00268099, 0.00268, 0.00268099, 66.35167638], [1516641960000, 0.00268099, 0.00268099, 0.00268, 0.00268, 20.67344011], [1516642020000, 0.00268005, 0.00268099, 0.00268, 0.00268, 191.81543586], [1516642080000, 0.00268, 0.00268, 0.00268, 0.00268, 0.48150229], [1516642140000, 0.002681, 0.002681, 0.00267, 0.00267, 42.70887476], [1516642200000, 0.00267, 0.00268099, 0.00267, 0.00268099, 57.1], [1516642260000, 0.00268099, 0.00268899, 0.00267, 0.00267, 924.69167339], [1516642320000, 0.00266711, 0.00268899, 0.0026671, 0.00267069, 834.41779715], [1516642380000, 0.00267069, 0.002679, 0.00267063, 0.002679, 38.44324744], [1516642440000, 0.002679, 0.002679, 0.00266102, 0.00266711, 828.97582502], [1516642500000, 0.002679, 0.002679, 0.002679, 0.002679, 267.02356054], [1516642560000, 0.0026817, 0.0026965, 0.002662, 0.00266219, 3040.45808588], [1516642620000, 0.00266222, 0.002679, 0.00266222, 0.002679, 85.40095154], [1516642680000, 0.002679, 0.002679, 0.00266695, 0.00266695, 321.08311076], [1516642740000, 0.00266695, 0.002679, 0.00266695, 0.002679, 261.62948572], [1516642800000, 0.00268169, 0.0026817, 0.00268169, 0.0026817, 40.67765238], [1516642860000, 0.0026817, 0.0026817, 0.0026817, 0.0026817, 15.04667702], [1516642920000, 0.0026817, 0.00269803, 0.0026817, 0.0026817, 153.43411217], [1516642980000, 0.0026817, 0.0026844, 0.0026817, 0.0026844, 56.12616409], [1516643040000, 0.0026844, 0.0026844, 0.0026844, 0.0026844, 0.535975], [1516643100000, 0.00269792, 0.00269792, 0.002685, 0.002685, 18.17764186], [1516643160000, 0.002685, 0.00269, 0.002685, 0.002685, 116.35048221], [1516643220000, 0.002685, 0.00268501, 0.002685, 0.002685, 17.75933113], [1516643280000, 0.002685, 0.002685, 0.00268173, 0.002685, 124.30327345], [1516643340000, 0.002685, 0.00269, 0.00268173, 0.00268173, 38.5244745], [1516643400000, 0.00269, 0.00269, 0.00269, 0.00269, 62.05606409], [1516643460000, 0.00269, 0.00269, 0.002688, 0.002688, 6.76699438], [1516643520000, 0.002682, 0.002682, 0.00268173, 0.002682, 51.69147701], [1516643580000, 0.002683, 0.00269792, 0.00268172, 0.00268172, 277.98933721], [1516643640000, 0.00268172, 0.00268172, 0.0026817, 0.00268172, 54.33520652], [1516643700000, 0.00268172, 0.00268172, 0.00267501, 0.00267501, 526.07128204], [1516643760000, 0.00267501, 0.002683, 0.00266697, 0.00267029, 224.05685178], [1516643820000, 0.00266698, 0.00269789, 0.00266698, 0.00269787, 97.79297388], [1516643880000, 0.0026817, 0.0026817, 0.0026817, 0.0026817, 6.204883], [1516643940000, 0.00266802, 0.00266802, 0.00266801, 0.00266801, 3.20751926], [1516644000000, 0.0026807, 0.0026817, 0.0026807, 0.0026817, 2.56809105], [1516644060000, 0.0026817, 0.0026817, 0.0026817, 0.0026817, 0.16136312], [1516644120000, 0.0026908, 0.0026908, 0.00267, 0.00267, 22.48384725], [1516644180000, 0.00267001, 0.00267001, 0.00267001, 0.00267001, 1.0], [1516644240000, 0.00268, 0.00268, 0.00267001, 0.00267001, 22.87348092], [1516644300000, 0.00268, 0.00268, 0.00267001, 0.00267001, 97.91648601], [1516644360000, 0.00268, 0.00269074, 0.00267999, 0.00267999, 117.81009937], [1516644420000, 0.00267999, 0.00269071, 0.00267001, 0.00267001, 145.70139166], [1516644480000, 0.00268, 0.00269022, 0.00268, 0.00269018, 361.104203], [1516644540000, 0.00267001, 0.00269008, 0.00267001, 0.00268999, 16.15968507], [1516644600000, 0.00268493, 0.00268493, 0.00267001, 0.00267003, 126.64968745], [1516644660000, 0.00267003, 0.0026824, 0.00267003, 0.0026824, 38.87573254], [1516644720000, 0.00267003, 0.00267003, 0.00267003, 0.00267003, 50.57975629], [1516644780000, 0.00268226, 0.00268226, 0.00267003, 0.00267004, 17.34871587], [1516644840000, 0.00267004, 0.00267006, 0.00267004, 0.00267006, 25.44814638], [1516644900000, 0.0026822, 0.0026822, 0.002671, 0.002671, 17.4565655], [1516644960000, 0.002671, 0.00268226, 0.002671, 0.002671, 95.76185122], [1516645020000, 0.002671, 0.002671, 0.002671, 0.002671, 12.5693], [1516645080000, 0.002671, 0.00268224, 0.00267006, 0.00267006, 44.97667276], [1516645140000, 0.00267006, 0.00267006, 0.00267006, 0.00267006, 5.0], [1516645200000, 0.00267006, 0.00267006, 0.00267006, 0.00267006, 2.0], [1516645260000, 0.00268223, 0.00268223, 0.00267006, 0.00267006, 1.59598107], [1516645320000, 0.00267006, 0.00267007, 0.00267006, 0.00267007, 137.66309113], [1516645380000, 0.00267006, 0.00267007, 0.00267006, 0.00267007, 503.98407461], [1516645440000, 0.00267007, 0.00267007, 0.00267007, 0.00267007, 6.08438112], [1516645500000, 0.00267007, 0.00267007, 0.00267005, 0.00267007, 38.76746139], [1516645560000, 0.00267006, 0.00267006, 0.00267005, 0.00267005, 18.86472217], [1516645620000, 0.00267004, 0.00267007, 0.00267004, 0.00267007, 112.36165002], [1516645680000, 0.00267004, 0.00267004, 0.00267004, 0.00267004, 6.8464511], [1516645740000, 0.00267004, 0.00267004, 0.00267004, 0.00267004, 4.4039018], [1516645800000, 0.00267004, 0.00268124, 0.00267, 0.00268124, 311.17768117], [1516645860000, 0.00268124, 0.00268204, 0.00267, 0.002675, 16.06424565], [1516645920000, 0.002675, 0.00268182, 0.00267, 0.00268182, 111.33409059], [1516645980000, 0.0026711, 0.0026711, 0.0026711, 0.0026711, 90.72112442], [1516646040000, 0.0026711, 0.0026711, 0.00267, 0.00267, 154.72679052], [1516646100000, 0.00267001, 0.0026818, 0.00267001, 0.00267001, 41.81733986], [1516646160000, 0.00268156, 0.0026818, 0.00268156, 0.00268156, 20.41114128], [1516646220000, 0.00268156, 0.00268156, 0.00268156, 0.00268156, 9.74840764], [1516646280000, 0.002671, 0.00268156, 0.002671, 0.00268156, 6.0], [1516646340000, 0.00268154, 0.00268154, 0.00268154, 0.00268154, 3.0], [1516646400000, 0.00268156, 0.00268156, 0.00268156, 0.00268156, 6.51181564], [1516646460000, 0.00268155, 0.00268155, 0.00267501, 0.00267501, 13.1871211], [1516646520000, 0.00267501, 0.00267505, 0.00267501, 0.00267505, 123.23372287], [1516646580000, 0.00267501, 0.00267505, 0.00267501, 0.00267505, 13.30185912], [1516646640000, 0.00267505, 0.00267505, 0.00267505, 0.00267505, 0.5], [1516646700000, 0.00267505, 0.00267505, 0.00267498, 0.00267498, 28.16824788], [1516646760000, 0.00267498, 0.00267505, 0.00267498, 0.00267505, 490.49287855], [1516646820000, 0.00267505, 0.00269505, 0.00267505, 0.00267506, 112.69351102], [1516646880000, 0.00267505, 0.00269502, 0.00267505, 0.00267505, 52.34888589], [1516646940000, 0.00267505, 0.00267505, 0.00267505, 0.00267505, 21.34521087], [1516647000000, 0.00269501, 0.00269653, 0.00267506, 0.002695, 229.48997946], [1516647060000, 0.002695, 0.002695, 0.00267505, 0.00267505, 305.11398335], [1516647120000, 0.00267505, 0.00267505, 0.00267113, 0.00267113, 20.68440639], [1516647180000, 0.00267113, 0.00269498, 0.00267112, 0.00267505, 133.90975319], [1516647240000, 0.00267505, 0.00269498, 0.00267505, 0.00267505, 100.82537595], [1516647300000, 0.00267505, 0.00267773, 0.00267, 0.00267, 61.51516529], [1516647360000, 0.00267505, 0.00267505, 0.00267505, 0.00267505, 3.01419571], [1516647420000, 0.00267505, 0.00267505, 0.00267505, 0.00267505, 1.15870324], [1516647480000, 0.00267505, 0.00269499, 0.00267006, 0.00267006, 42.96157821], [1516647540000, 0.00269399, 0.00269498, 0.00269399, 0.00269399, 742.88672418], [1516647600000, 0.00269397, 0.00269399, 0.00267398, 0.0026827, 50.36320689], [1516647660000, 0.00268898, 0.00269399, 0.00267398, 0.00269399, 11.1702514], [1516647720000, 0.00267398, 0.00267398, 0.00267398, 0.00267398, 43.78119548], [1516647780000, 0.00267398, 0.00267398, 0.00267, 0.00267398, 397.92158833], [1516647840000, 0.00269491, 0.00269491, 0.00267398, 0.00267398, 7.81573885], [1516647900000, 0.00267398, 0.00269482, 0.00267002, 0.00267002, 31.37448319], [1516647960000, 0.00267002, 0.00267002, 0.00267002, 0.00267002, 0.29492796], [1516648080000, 0.00267006, 0.00267006, 0.00267006, 0.00267006, 1.43190546], [1516648140000, 0.00269195, 0.00269195, 0.0026701, 0.0026701, 14.74602258], [1516648200000, 0.00269099, 0.00269099, 0.0026701, 0.00269098, 34.00003963], [1516648260000, 0.00269097, 0.00269097, 0.002675, 0.002675, 0.535994], [1516648320000, 0.002675, 0.002675, 0.002675, 0.002675, 14.45147028], [1516648440000, 0.002675, 0.002675, 0.002675, 0.002675, 74.95327103], [1516648560000, 0.002675, 0.002675, 0.002675, 0.002675, 0.99961266], [1516648620000, 0.002675, 0.00268498, 0.002675, 0.00268498, 2.27638541], [1516648680000, 0.002675, 0.00268498, 0.002675, 0.00268498, 5.03240146], [1516648740000, 0.00269183, 0.00269183, 0.00268498, 0.00268498, 19.49197931], [1516648800000, 0.00268498, 0.00269179, 0.002675, 0.002675, 55.43310366], [1516648860000, 0.00267505, 0.00267505, 0.00267505, 0.00267505, 7.02092178], [1516648920000, 0.00269097, 0.00269097, 0.00269097, 0.00269097, 0.4427112], [1516648980000, 0.00269096, 0.00269096, 0.00268, 0.00268, 97.85929054], [1516649040000, 0.00268, 0.00268, 0.00268, 0.00268, 63.0], [1516649100000, 0.00269096, 0.00269096, 0.00269096, 0.00269096, 27.7283967], [1516649160000, 0.002685, 0.00269097, 0.002685, 0.00269097, 374.8400072], [1516649220000, 0.00269097, 0.00269099, 0.00268511, 0.00268511, 284.33857396], [1516649280000, 0.00269096, 0.00269179, 0.002675, 0.00269169, 52.63648723], [1516649340000, 0.00269169, 0.00269169, 0.002675, 0.002675, 34.02450434], [1516649400000, 0.002675, 0.00269168, 0.002675, 0.00269168, 47.04133157], [1516649460000, 0.00267502, 0.00267502, 0.002671, 0.00267502, 14.9534281], [1516649520000, 0.00267502, 0.00269168, 0.00267101, 0.00268887, 742.64017727], [1516649580000, 0.00269168, 0.00269482, 0.00269168, 0.00269482, 296.33023681], [1516649640000, 0.00268887, 0.00269485, 0.00268887, 0.00268887, 18.47487035], [1516649700000, 0.00268887, 0.00268887, 0.00268887, 0.00268887, 0.41002354], [1516649760000, 0.00269496, 0.0026975, 0.00268887, 0.00268887, 162.68587367], [1516649820000, 0.00268887, 0.00268887, 0.00268887, 0.00268887, 5.17866697], [1516649880000, 0.00268887, 0.00268887, 0.00268887, 0.00268887, 249.54511511], [1516649940000, 0.00268887, 0.00268887, 0.0026817, 0.0026817, 10.01339961], [1516650000000, 0.00268461, 0.00269099, 0.00268461, 0.00269099, 63.84014039], [1516650060000, 0.0026817, 0.00269098, 0.0026817, 0.0026817, 9.37433769], [1516650120000, 0.0026817, 0.0026933, 0.0026817, 0.0026933, 143.25215175], [1516650180000, 0.00269329, 0.00269329, 0.00267107, 0.00267107, 132.88111295], [1516650240000, 0.00269324, 0.00269325, 0.00268749, 0.00268749, 27.81740741], [1516650300000, 0.00268749, 0.00269315, 0.00267809, 0.00269312, 43.61726103], [1516650360000, 0.00267108, 0.00269313, 0.00267108, 0.00269313, 72.32914826], [1516650540000, 0.00268, 0.00268998, 0.00268, 0.00268001, 19.08112086], [1516650600000, 0.00268001, 0.00268001, 0.002671, 0.002671, 601.4925588], [1516650660000, 0.002671, 0.002671, 0.00267028, 0.002671, 59.75344667], [1516650720000, 0.002671, 0.002671, 0.00267089, 0.00267089, 20.91347798], [1516650780000, 0.002671, 0.002671, 0.00267034, 0.002671, 415.0438595], [1516650840000, 0.00267097, 0.002671, 0.00267089, 0.00267097, 11.02372925], [1516650900000, 0.00267097, 0.00267097, 0.00266698, 0.00266698, 768.6649251], [1516650960000, 0.00267, 0.00267, 0.00266698, 0.00266698, 5.46693328], [1516651020000, 0.00266699, 0.00267, 0.00266699, 0.00267, 11.03100299], [1516651080000, 0.00267, 0.00267, 0.00266699, 0.00266699, 509.7052071], [1516651140000, 0.00266698, 0.00266698, 0.00266698, 0.00266698, 0.41338893], [1516651200000, 0.00266699, 0.00267, 0.00266698, 0.00266999, 36.57767104], [1516651260000, 0.00266999, 0.00266999, 0.00266423, 0.00266423, 325.47599643], [1516651320000, 0.00266222, 0.00266423, 0.00265703, 0.00266423, 1516.81854856], [1516651380000, 0.00266423, 0.00266423, 0.002655, 0.00266, 1130.05268759], [1516651440000, 0.00266, 0.00266, 0.002645, 0.00265202, 1221.43218309], [1516651500000, 0.00266, 0.00266, 0.00265085, 0.00266, 490.9391613], [1516651560000, 0.00266, 0.00266707, 0.00266, 0.00266707, 104.62530287], [1516651620000, 0.00266707, 0.00267, 0.002666, 0.00267, 258.31345806], [1516651680000, 0.00267, 0.00267727, 0.00266998, 0.00267716, 130.4800083], [1516651740000, 0.00267707, 0.00267707, 0.00267, 0.00267, 822.3967043], [1516651800000, 0.00267, 0.00267674, 0.00267, 0.00267, 43.88077245], [1516651860000, 0.00267, 0.00267, 0.00267, 0.00267, 0.8258427], [1516651920000, 0.00267, 0.00267001, 0.00267, 0.00267001, 1.17417603], [1516651980000, 0.00267668, 0.00267668, 0.00267668, 0.00267668, 30.69748016], [1516652040000, 0.00267666, 0.00267666, 0.00267001, 0.00267001, 243.99311956], [1516652100000, 0.0026733, 0.00267663, 0.00267001, 0.00267001, 27.95006901], [1516652160000, 0.00267001, 0.00267009, 0.00267001, 0.00267009, 18.89030583], [1516652220000, 0.00267661, 0.00267666, 0.00267001, 0.00267001, 151.51448128], [1516652280000, 0.00267001, 0.00267001, 0.00267001, 0.00267001, 64.95653488], [1516652340000, 0.00267001, 0.00267663, 0.00267001, 0.00267001, 163.33908753], [1516652400000, 0.00267001, 0.00267665, 0.00267001, 0.00267561, 21.03941425], [1516652460000, 0.00267001, 0.00267541, 0.00267, 0.00267, 53.51125608], [1516652520000, 0.00267, 0.00267, 0.00267, 0.00267, 9.25808237], [1516652580000, 0.00267, 0.0026753, 0.00267, 0.00267, 212.03639636], [1516652640000, 0.00267, 0.00267529, 0.00267, 0.00267, 13.21784806], [1516652700000, 0.00267, 0.002675, 0.00266001, 0.002675, 87.50073976], [1516652760000, 0.002675, 0.002675, 0.002675, 0.002675, 4.2061], [1516652820000, 0.002675, 0.002675, 0.002674, 0.002674, 78.86463622], [1516652940000, 0.00267, 0.002674, 0.00266998, 0.002674, 92.93579092], [1516653000000, 0.00267399, 0.00267399, 0.00267399, 0.00267399, 0.28519029], [1516653060000, 0.00267012, 0.00267012, 0.00267, 0.00267, 160.31028194], [1516653120000, 0.00266071, 0.00267, 0.00264701, 0.00265086, 299.32880676], [1516653180000, 0.00265086, 0.00265086, 0.002647, 0.00264702, 75.94644261], [1516653240000, 0.00264703, 0.00264703, 0.00264702, 0.00264702, 16.19542541], [1516653300000, 0.00264703, 0.00264703, 0.00264702, 0.00264703, 122.77028021], [1516653360000, 0.00264703, 0.00266906, 0.00264703, 0.00264703, 69.2260479], [1516653420000, 0.00264703, 0.00264703, 0.00264702, 0.00264702, 7.44416091], [1516653480000, 0.00264702, 0.00264702, 0.00264702, 0.00264702, 2.86581168], [1516653540000, 0.00266786, 0.00266788, 0.00266784, 0.00266784, 65.54067274], [1516653600000, 0.00266779, 0.00266779, 0.00264702, 0.00266769, 129.9954738], [1516653660000, 0.0026592, 0.00266764, 0.0026592, 0.00266764, 21.0], [1516653720000, 0.00264702, 0.00264702, 0.00263002, 0.00264402, 1000.76223345], [1516653780000, 0.00264402, 0.00265195, 0.00264402, 0.00265195, 42.95633624], [1516653840000, 0.00265195, 0.00265195, 0.00265195, 0.00265195, 5.93948312], [1516653900000, 0.00265195, 0.00265195, 0.00265195, 0.00265195, 0.41573182], [1516653960000, 0.00265195, 0.00265195, 0.00265195, 0.00265195, 7.54751111], [1516654020000, 0.00265195, 0.00265195, 0.00265195, 0.00265195, 2.44511581], [1516654080000, 0.00265195, 0.00265196, 0.00265195, 0.00265195, 1.33146207], [1516654200000, 0.00265196, 0.002652, 0.00265196, 0.002652, 16.54434073], [1516654260000, 0.0026674, 0.0026674, 0.00265195, 0.002652, 81.64760163], [1516654320000, 0.00265196, 0.002652, 0.00265196, 0.002652, 50.98054002], [1516654380000, 0.002652, 0.002652, 0.00265196, 0.00265196, 9.25573339], [1516654440000, 0.002652, 0.002652, 0.00265196, 0.00265196, 92.46022585], [1516654500000, 0.00265196, 0.00266738, 0.00265196, 0.002652, 107.23390851], [1516654560000, 0.0026674, 0.0026674, 0.002652, 0.002652, 83.47571023], [1516654620000, 0.00265196, 0.00265196, 0.00265196, 0.00265196, 0.83145423], [1516654680000, 0.00265196, 0.00265196, 0.00265196, 0.00265196, 12.99927674], [1516654740000, 0.00266369, 0.00266369, 0.00265196, 0.00265196, 20.72351705], [1516654800000, 0.00265195, 0.00265197, 0.00265195, 0.00265196, 72.53893061], [1516654860000, 0.00265196, 0.00265197, 0.00265196, 0.00265197, 144.51394676], [1516654920000, 0.00265197, 0.00265197, 0.00265196, 0.00265196, 45.2932369], [1516654980000, 0.00266369, 0.00266369, 0.00265196, 0.00266369, 18.73908819], [1516655100000, 0.00266, 0.00266, 0.00266, 0.00266, 0.41447368], [1516655160000, 0.002661, 0.00266369, 0.0026525, 0.002653, 22.95318447], [1516655220000, 0.00266092, 0.002673, 0.00265271, 0.0026531, 730.14801304], [1516655340000, 0.0026531, 0.002675, 0.00265299, 0.00265299, 245.21436901], [1516655400000, 0.002655, 0.00267847, 0.00265301, 0.00267847, 106.44015662], [1516655460000, 0.0026745, 0.00267847, 0.00265196, 0.00265196, 123.74954615], [1516655520000, 0.00267846, 0.00267846, 0.00267843, 0.00267843, 19.65754203], [1516655580000, 0.00266001, 0.00266001, 0.00265196, 0.00265196, 290.31948856], [1516655700000, 0.00265198, 0.00266196, 0.00265197, 0.00266196, 362.11452431], [1516655760000, 0.00267845, 0.00267845, 0.00266211, 0.00266211, 4.0556837], [1516655820000, 0.002668, 0.002668, 0.00266211, 0.002668, 257.85633445], [1516655880000, 0.002668, 0.002668, 0.002667, 0.002667, 11.67073386], [1516655940000, 0.002667, 0.002668, 0.00265264, 0.002667, 257.62661829], [1516656000000, 0.002667, 0.002667, 0.00265411, 0.002666, 91.45335259], [1516656060000, 0.00265413, 0.00265413, 0.00265269, 0.00265413, 9.00004359], [1516656120000, 0.00265413, 0.00265413, 0.00265413, 0.00265413, 1.36750487], [1516656180000, 0.00265413, 0.00265413, 0.00265, 0.00265, 232.7405569], [1516656240000, 0.00265, 0.00265, 0.00265, 0.00265, 66.10337662], [1516656300000, 0.00264534, 0.00266499, 0.00264534, 0.00266499, 311.40227116], [1516656360000, 0.00265, 0.00266497, 0.00264612, 0.00266497, 100.76322291], [1516656420000, 0.00264612, 0.002647, 0.00264612, 0.0026465, 62.87173904], [1516656480000, 0.0026465, 0.00265685, 0.0026465, 0.0026471, 214.45023581], [1516656540000, 0.00264711, 0.00266496, 0.0026465, 0.00265685, 372.71529707], [1516656600000, 0.00265685, 0.00267499, 0.00265685, 0.00267497, 437.91422402], [1516656660000, 0.00267, 0.00267965, 0.00266999, 0.00267965, 661.75987457], [1516656720000, 0.00267965, 0.00268648, 0.0026656, 0.0026864, 539.89906163], [1516656780000, 0.00267965, 0.0026864, 0.00266999, 0.0026841, 701.31770979], [1516656840000, 0.00268409, 0.0026841, 0.00266911, 0.00267241, 270.83414775], [1516656900000, 0.00268407, 0.00268408, 0.00266695, 0.00268406, 962.26394773], [1516656960000, 0.00268406, 0.00268407, 0.00266996, 0.00268398, 525.16266659], [1516657020000, 0.00268398, 0.00268398, 0.00266896, 0.00267896, 48.90966311], [1516657080000, 0.00267, 0.00267565, 0.00267, 0.00267001, 162.04396185], [1516657140000, 0.00267, 0.00267001, 0.00267, 0.00267001, 236.54010722], [1516657200000, 0.00267, 0.00267001, 0.00265, 0.00265013, 2105.9644873], [1516657260000, 0.00267001, 0.00267001, 0.00266319, 0.00266999, 187.81568672], [1516657320000, 0.00266999, 0.00267, 0.0026314, 0.00264998, 666.42299617], [1516657380000, 0.00264998, 0.00266998, 0.00264998, 0.00266998, 127.070105], [1516657440000, 0.00266998, 0.00266998, 0.00265013, 0.00265013, 388.1444115], [1516657500000, 0.00265, 0.00265014, 0.00264004, 0.00265, 781.49189059], [1516657560000, 0.00265, 0.00266897, 0.00264558, 0.00265, 453.83222257], [1516657620000, 0.0026689, 0.0026689, 0.00264511, 0.00265, 865.00827989], [1516657680000, 0.00265, 0.00266499, 0.00263123, 0.00264533, 132.64532659], [1516657740000, 0.00264533, 0.002652, 0.00263115, 0.002647, 849.01053447], [1516657800000, 0.00263875, 0.002647, 0.00263011, 0.002647, 92.16368956], [1516657860000, 0.00264801, 0.00265194, 0.00263411, 0.002647, 75.06536862], [1516657920000, 0.002647, 0.002647, 0.00263411, 0.00264675, 588.99370307], [1516657980000, 0.00264679, 0.00264679, 0.00264, 0.00264677, 23.51550439], [1516658040000, 0.00264675, 0.00264676, 0.00264675, 0.00264675, 12.94229749], [1516658100000, 0.00264675, 0.00264675, 0.00263417, 0.00264397, 111.13855652], [1516658160000, 0.00264397, 0.00264397, 0.00263501, 0.00264394, 137.72624087], [1516658220000, 0.0026407, 0.00264396, 0.0026407, 0.00264395, 154.49761001], [1516658280000, 0.00264394, 0.00264395, 0.00263519, 0.00264395, 123.99166918], [1516658340000, 0.00264674, 0.00264674, 0.00264069, 0.002642, 248.6115246], [1516658400000, 0.002642, 0.00264671, 0.00263557, 0.00264667, 351.54603306], [1516658460000, 0.00264665, 0.00264666, 0.00263559, 0.00264666, 165.93124611], [1516658520000, 0.00264665, 0.00264666, 0.0026357, 0.0026357, 190.51833723], [1516658580000, 0.0026357, 0.00264677, 0.0026357, 0.00264675, 47.53405341], [1516658640000, 0.00264677, 0.002652, 0.00264677, 0.002652, 84.7102012], [1516658700000, 0.002652, 0.00266587, 0.00263611, 0.00264677, 911.59536843], [1516658760000, 0.00264677, 0.0026483, 0.00264677, 0.0026483, 50.45943903], [1516658820000, 0.0026483, 0.00266556, 0.00264679, 0.00264679, 396.679568], [1516658880000, 0.00266556, 0.00266556, 0.0026468, 0.00266556, 580.81157212], [1516658940000, 0.00267, 0.00267399, 0.00266556, 0.00266556, 484.3001171], [1516659000000, 0.00267399, 0.00267399, 0.00266556, 0.00266556, 525.64891276], [1516659060000, 0.00266556, 0.00266661, 0.00266555, 0.00266555, 245.92157883], [1516659120000, 0.00266661, 0.00266947, 0.00266555, 0.00266557, 596.01178728], [1516659180000, 0.00266557, 0.00267565, 0.00266555, 0.00267564, 244.18905307], [1516659240000, 0.00267564, 0.00268299, 0.00266555, 0.00267999, 1577.75302268], [1516659300000, 0.00267999, 0.00268292, 0.002666, 0.002666, 22.89191278], [1516659360000, 0.002666, 0.00268406, 0.002666, 0.00268287, 66.15366226], [1516659420000, 0.00266695, 0.00268291, 0.00266695, 0.00267, 60.32824213], [1516659480000, 0.00267, 0.00268289, 0.00267, 0.00268287, 27.56112287], [1516659540000, 0.00267, 0.00268169, 0.00267, 0.00267, 81.06689445], [1516659600000, 0.00267, 0.00267996, 0.00267, 0.00267, 56.65772488], [1516659660000, 0.00266695, 0.00267891, 0.002666, 0.00267891, 71.21590108], [1516659720000, 0.0026816, 0.0026816, 0.00266556, 0.00266638, 264.61967011], [1516659780000, 0.00266638, 0.0026816, 0.00266555, 0.00266555, 581.35869492], [1516659840000, 0.00266555, 0.00267136, 0.00266555, 0.00267136, 340.39121473], [1516659900000, 0.00267136, 0.00267738, 0.00266501, 0.0026656, 372.64444416], [1516659960000, 0.00267399, 0.00267399, 0.00266559, 0.00267399, 437.79057677], [1516660020000, 0.00267399, 0.00267399, 0.00266501, 0.00266501, 255.45585559], [1516660080000, 0.00266501, 0.00267346, 0.00266501, 0.00267346, 198.1666656], [1516660140000, 0.00266501, 0.00267346, 0.00266501, 0.00266501, 184.0676323], [1516660200000, 0.00266501, 0.00267231, 0.00266501, 0.00267231, 17.18438309], [1516660260000, 0.002668, 0.00267231, 0.002668, 0.00267231, 43.13686622], [1516660320000, 0.002668, 0.0026723, 0.002668, 0.00267199, 106.70222572], [1516660380000, 0.00266804, 0.002672, 0.002668, 0.002668, 129.75205921], [1516660440000, 0.002668, 0.002672, 0.002668, 0.002668, 55.1709095], [1516660500000, 0.00266801, 0.002672, 0.00266801, 0.00266801, 10.31149016], [1516660560000, 0.00266801, 0.002671, 0.002668, 0.002668, 174.06478287], [1516660620000, 0.002671, 0.002671, 0.002668, 0.002668, 922.1989641], [1516660680000, 0.00267347, 0.00267347, 0.002668, 0.002668, 115.60836377], [1516660740000, 0.00267347, 0.00268166, 0.00267347, 0.00268166, 110.01925198], [1516660800000, 0.0026817, 0.0026817, 0.0026817, 0.0026817, 104.58782508], [1516660860000, 0.0026817, 0.0026829, 0.0026817, 0.0026829, 173.17285286], [1516660920000, 0.0026829, 0.00268291, 0.0026829, 0.00268291, 487.83634331], [1516660980000, 0.0026829, 0.00268291, 0.0026829, 0.0026829, 7.05982173], [1516661040000, 0.00268291, 0.0026844, 0.0026829, 0.0026844, 628.54795372], [1516661100000, 0.0026844, 0.00268862, 0.0026844, 0.0026844, 438.45797], [1516661160000, 0.00268975, 0.00268975, 0.0026844, 0.00268975, 61.48053671], [1516661220000, 0.00268442, 0.00268975, 0.0026844, 0.0026844, 80.72086246], [1516661280000, 0.00268975, 0.00268975, 0.00268443, 0.00268974, 935.68334998], [1516661340000, 0.00268441, 0.00268974, 0.0026844, 0.00268974, 13.1057832], [1516661400000, 0.00268974, 0.00268975, 0.00266803, 0.00266803, 127.51055265], [1516661460000, 0.00266804, 0.00268973, 0.00266804, 0.00266812, 97.29621818], [1516661520000, 0.00268972, 0.00268975, 0.00267, 0.00267, 43.79647136], [1516661580000, 0.00267013, 0.002689, 0.00267013, 0.002689, 15.29832758], [1516661640000, 0.002689, 0.002689, 0.002689, 0.002689, 21.65990599], [1516661700000, 0.002689, 0.00269343, 0.002689, 0.00269343, 419.52961795], [1516661760000, 0.00269343, 0.00269874, 0.00268001, 0.0026986, 1001.06655809], [1516661820000, 0.0026986, 0.0026986, 0.00269859, 0.00269859, 77.76333566], [1516661880000, 0.0026986, 0.0026986, 0.00268203, 0.00268214, 117.0211461], [1516661940000, 0.00268317, 0.002697, 0.00266697, 0.00266697, 755.78090409], [1516662000000, 0.002697, 0.002697, 0.00269, 0.002696, 25.80866204], [1516662060000, 0.002696, 0.002696, 0.00268334, 0.002696, 420.37245328], [1516662120000, 0.002696, 0.0026965, 0.0026529, 0.00269648, 3256.91741605], [1516662180000, 0.00269499, 0.00269499, 0.0026817, 0.00269499, 62.23610589], [1516662240000, 0.0026817, 0.0026817, 0.00267004, 0.0026817, 52.14033565], [1516662300000, 0.00267004, 0.0026817, 0.00267, 0.0026817, 105.87612123], [1516662360000, 0.0026817, 0.00269653, 0.0026817, 0.00269653, 166.03430985], [1516662420000, 0.002696, 0.002696, 0.00268246, 0.002696, 22.75934823], [1516662480000, 0.002696, 0.002696, 0.002685, 0.0026888, 316.15208842], [1516662540000, 0.0026888, 0.0026888, 0.0026888, 0.0026888, 1.23135059], [1516662600000, 0.00268174, 0.0026888, 0.00268173, 0.0026888, 390.48243835], [1516662660000, 0.0026888, 0.0026888, 0.00268174, 0.0026888, 155.27002912], [1516662720000, 0.0026888, 0.0026888, 0.0026888, 0.0026888, 202.68363768], [1516662780000, 0.0026888, 0.0026888, 0.0026817, 0.0026888, 71.81853659], [1516662840000, 0.0026888, 0.0026888, 0.0026817, 0.0026888, 123.65973415], [1516662900000, 0.0026888, 0.0026888, 0.0026817, 0.0026888, 477.52931347], [1516662960000, 0.0026817, 0.0026888, 0.0026817, 0.0026888, 270.92727929], [1516663020000, 0.00267019, 0.00268799, 0.00267019, 0.00268799, 26.98163167], [1516663080000, 0.0026702, 0.00268799, 0.0026702, 0.00268799, 250.88516108], [1516663140000, 0.00268799, 0.00268799, 0.00268799, 0.00268799, 109.94868769], [1516663200000, 0.00268799, 0.00268799, 0.00268799, 0.00268799, 12.0], [1516663260000, 0.00268998, 0.00269, 0.00267642, 0.00269, 246.0289444], [1516663320000, 0.00269652, 0.00269653, 0.00267202, 0.00267202, 599.41150845], [1516663380000, 0.00269498, 0.00269598, 0.00267299, 0.00267299, 42.93661459], [1516663440000, 0.00269489, 0.00269489, 0.00267299, 0.00269421, 4.89957466], [1516663500000, 0.0026935, 0.0026935, 0.0026935, 0.0026935, 3.74507577], [1516663560000, 0.00269421, 0.00269421, 0.0026935, 0.002694, 8.0577944], [1516663620000, 0.0026935, 0.002694, 0.0026935, 0.002694, 13.32850107], [1516663680000, 0.00269399, 0.00269399, 0.00267304, 0.00269398, 53.38673256], [1516663740000, 0.00267305, 0.00269397, 0.00267305, 0.00269397, 8.90143883], [1516663800000, 0.00269391, 0.00269399, 0.00267304, 0.00267304, 31.98559548], [1516663860000, 0.00267304, 0.00267304, 0.00267302, 0.00267302, 117.59893769], [1516663920000, 0.00267303, 0.00267303, 0.00267303, 0.00267303, 34.94687364], [1516663980000, 0.0026939, 0.0026939, 0.0026939, 0.0026939, 31.67475795], [1516664040000, 0.0026939, 0.0026939, 0.00267308, 0.00267315, 51.99999026], [1516664100000, 0.002694, 0.00269405, 0.00267305, 0.00267305, 53.91000255], [1516664160000, 0.00269405, 0.00269405, 0.00268321, 0.00268321, 9.637167], [1516664220000, 0.00268321, 0.00269649, 0.00268321, 0.00269649, 32.40940136], [1516664280000, 0.00268325, 0.00268325, 0.00268321, 0.00268321, 11.21001618], [1516664340000, 0.0026958, 0.0026958, 0.0026958, 0.0026958, 66.15023116], [1516664400000, 0.00268323, 0.00269568, 0.00267347, 0.0026735, 236.9526158], [1516664460000, 0.0026735, 0.0026735, 0.0026735, 0.0026735, 7.89477422], [1516664520000, 0.00269489, 0.00269489, 0.00269489, 0.00269489, 10.237679], [1516664580000, 0.002694, 0.002694, 0.00269298, 0.00269298, 234.38004361], [1516664640000, 0.0026735, 0.0026929, 0.00267349, 0.0026929, 186.14097553], [1516664700000, 0.00269474, 0.00269564, 0.00267354, 0.00269299, 225.34927253], [1516664760000, 0.00269299, 0.00269299, 0.00267477, 0.00269299, 121.06163279], [1516664820000, 0.00269299, 0.0026957, 0.00269299, 0.0026957, 39.88408249], [1516664880000, 0.0026957, 0.0026957, 0.0026957, 0.0026957, 4.4570012], [1516664940000, 0.0026957, 0.0026957, 0.0026957, 0.0026957, 12.90331865], [1516665000000, 0.00269567, 0.00269568, 0.00268, 0.00268, 59.06114264], [1516665060000, 0.0026958, 0.0026958, 0.00267435, 0.00267435, 35.7804807], [1516665120000, 0.00267435, 0.0026955, 0.00267435, 0.0026955, 63.83093571], [1516665180000, 0.002695, 0.002695, 0.002695, 0.002695, 1.0], [1516665240000, 0.002695, 0.002695, 0.00267435, 0.00267436, 69.68128507], [1516665300000, 0.00267439, 0.00267439, 0.00267439, 0.00267439, 37.29477612], [1516665360000, 0.002676, 0.002695, 0.0026744, 0.0026744, 154.57430086], [1516665420000, 0.002695, 0.002695, 0.002679, 0.00269499, 173.77993122], [1516665480000, 0.00269499, 0.00269499, 0.00269499, 0.00269499, 297.98168883], [1516665540000, 0.002694, 0.0026955, 0.00268, 0.002694, 265.56670644], [1516665600000, 0.0026955, 0.0026955, 0.002694, 0.0026955, 101.23605802], [1516665660000, 0.0026955, 0.0026955, 0.00269, 0.00269, 28.7794721], [1516665720000, 0.00269, 0.00269644, 0.00269, 0.00269, 69.18135118], [1516665780000, 0.00269644, 0.002699, 0.00269, 0.00269898, 679.27593261], [1516665840000, 0.00269898, 0.00269898, 0.00269, 0.00269, 185.22981288], [1516665900000, 0.00269897, 0.00269897, 0.002691, 0.00269897, 36.80237735], [1516665960000, 0.00269897, 0.00269897, 0.002691, 0.002691, 32.19465212], [1516666020000, 0.0026985, 0.0026985, 0.00269, 0.00269, 724.76492191], [1516666080000, 0.00269, 0.00269789, 0.00269, 0.00269, 175.83919885], [1516666140000, 0.00269, 0.00269, 0.00269, 0.00269, 15.01264351], [1516666200000, 0.00268402, 0.00269, 0.0026817, 0.0026817, 62.92775371], [1516666260000, 0.00267437, 0.002696, 0.00267437, 0.002696, 254.9084537], [1516666380000, 0.00269, 0.00269, 0.00269, 0.00269, 1.39276654], [1516666440000, 0.00269, 0.00269, 0.00269, 0.00269, 19.09987926], [1516666500000, 0.00269, 0.00269, 0.00267451, 0.00269, 32.08669008], [1516666560000, 0.00269, 0.00269988, 0.00269, 0.00269, 569.95898625], [1516666620000, 0.00269987, 0.00269987, 0.00269, 0.00269, 2.83153847], [1516666680000, 0.00269898, 0.00269898, 0.00269798, 0.00269798, 22.43524439], [1516666740000, 0.00269798, 0.00269798, 0.00269, 0.00269794, 90.7382649], [1516666800000, 0.00269794, 0.00269794, 0.00269794, 0.00269794, 4.1163837], [1516666860000, 0.00269794, 0.00269794, 0.00269, 0.00269794, 45.50012615], [1516666920000, 0.00269794, 0.00269794, 0.002691, 0.00269794, 46.37561965], [1516666980000, 0.00269, 0.00269794, 0.00269, 0.00269101, 224.21789013], [1516667040000, 0.00269794, 0.00269994, 0.0026912, 0.0026912, 51.36878237], [1516667100000, 0.00269698, 0.00269698, 0.00269698, 0.00269698, 7.415702], [1516667160000, 0.002691, 0.00269698, 0.002691, 0.00269698, 327.05329584], [1516667220000, 0.00269696, 0.00269696, 0.00269696, 0.00269696, 148.0], [1516667280000, 0.002694, 0.00269698, 0.002693, 0.00269698, 1099.08430155], [1516667400000, 0.00269698, 0.00269698, 0.00269698, 0.00269698, 12.368659], [1516667460000, 0.00269698, 0.00269698, 0.00269105, 0.00269105, 41.42012909], [1516667520000, 0.00269105, 0.00269105, 0.00269105, 0.00269105, 1.00186915], [1516667580000, 0.00269697, 0.002697, 0.00269697, 0.002697, 247.09551774], [1516667640000, 0.002697, 0.00269994, 0.002697, 0.00269701, 67.34083325], [1516667700000, 0.00269994, 0.00269994, 0.00269701, 0.00269701, 112.07596569], [1516667760000, 0.00269705, 0.00269705, 0.00269705, 0.00269705, 0.81755992], [1516667820000, 0.00269998, 0.00269999, 0.00269705, 0.00269705, 773.13801722], [1516667880000, 0.00269705, 0.00269999, 0.00269705, 0.00269999, 415.90036371], [1516667940000, 0.00269709, 0.00269999, 0.00269709, 0.00269999, 137.10372614], [1516668000000, 0.00269709, 0.00269999, 0.00269709, 0.002699, 12.88087524], [1516668060000, 0.00269709, 0.0026971, 0.00269709, 0.0026971, 11.74003882], [1516668120000, 0.00269709, 0.00269709, 0.00269709, 0.00269709, 16.81216095], [1516668180000, 0.00269709, 0.00269999, 0.00269708, 0.00269709, 58.24511552], [1516668240000, 0.00269708, 0.00269709, 0.00269708, 0.00269709, 73.10638404], [1516668300000, 0.00269708, 0.00269708, 0.00269708, 0.00269708, 0.81755084], [1516668360000, 0.00269999, 0.00269999, 0.00269708, 0.00269999, 177.79419463], [1516668420000, 0.00269999, 0.00269999, 0.00269999, 0.00269999, 160.30699786], [1516668480000, 0.00269708, 0.00269999, 0.00269708, 0.00269999, 136.03953727], [1516668540000, 0.00269995, 0.00269995, 0.00269708, 0.00269709, 128.1782915], [1516668600000, 0.00269999, 0.00269999, 0.00269709, 0.00269709, 280.48898067], [1516668660000, 0.00269999, 0.00269999, 0.00269709, 0.00269709, 27.34832369], [1516668720000, 0.00269999, 0.00269999, 0.00269855, 0.00269856, 4.47239269], [1516668780000, 0.00269999, 0.0027, 0.00269708, 0.00269708, 434.03247308], [1516668840000, 0.00269708, 0.0027, 0.00269708, 0.00269708, 243.64011688], [1516668900000, 0.00269708, 0.00269999, 0.00269708, 0.00269708, 551.47020411], [1516668960000, 0.00269708, 0.00269999, 0.00269708, 0.00269999, 6.13671912], [1516669020000, 0.00269708, 0.00269997, 0.00269105, 0.00269708, 126.44200553], [1516669080000, 0.00269105, 0.00269999, 0.002691, 0.00269708, 53.45158014], [1516669140000, 0.002691, 0.002691, 0.002691, 0.002691, 106.56118914], [1516669200000, 0.00269699, 0.00269699, 0.002691, 0.0026921, 325.43647463], [1516669260000, 0.0026921, 0.00269694, 0.0026921, 0.0026921, 168.98306], [1516669320000, 0.0026921, 0.0026921, 0.0026921, 0.0026921, 0.81906318], [1516669380000, 0.0026921, 0.0026921, 0.0026921, 0.0026921, 47.72348959], [1516669440000, 0.0026921, 0.0026921, 0.002691, 0.002691, 7.90706253], [1516669500000, 0.002691, 0.0026969, 0.002691, 0.002691, 228.90076834], [1516669560000, 0.002691, 0.00269999, 0.002691, 0.00269999, 34.38601709], [1516669620000, 0.00269994, 0.00269994, 0.00267304, 0.00267304, 224.39601088], [1516669680000, 0.00269652, 0.00269652, 0.00267304, 0.00267304, 75.60251089], [1516669740000, 0.00267304, 0.00269639, 0.00267304, 0.002674, 78.56131244], [1516669800000, 0.00267402, 0.002675, 0.002674, 0.002675, 3.70377184], [1516669860000, 0.002675, 0.002675, 0.002675, 0.002675, 23.0], [1516669980000, 0.00267502, 0.00267502, 0.00267501, 0.00267501, 26.55126756], [1516670040000, 0.00268576, 0.00268576, 0.00268576, 0.00268576, 0.35451202], [1516670100000, 0.00268577, 0.00269653, 0.00268, 0.00269653, 92.3040765], [1516670160000, 0.0026801, 0.00269653, 0.0026801, 0.00269653, 12.33450255], [1516670220000, 0.00269653, 0.00269653, 0.00268003, 0.00269653, 28.47172998], [1516670280000, 0.00269997, 0.00269998, 0.00269655, 0.00269997, 202.49231527], [1516670340000, 0.00269655, 0.00269655, 0.002688, 0.002688, 863.17790978], [1516670400000, 0.00268801, 0.00268801, 0.00268801, 0.00268801, 0.21], [1516670460000, 0.00269654, 0.00269654, 0.00269654, 0.00269654, 2.0], [1516670520000, 0.00268801, 0.00269988, 0.00264, 0.0026825, 2255.25762032], [1516670580000, 0.0026817, 0.0026817, 0.0026817, 0.0026817, 37.28974656], [1516670640000, 0.0026817, 0.0026817, 0.0026817, 0.0026817, 31.0], [1516670700000, 0.0026817, 0.0026965, 0.00268, 0.0026965, 8.66309702], [1516670760000, 0.00268, 0.00268, 0.00266956, 0.00268, 141.99908013], [1516670820000, 0.0026965, 0.0026965, 0.0026965, 0.0026965, 6.00400299], [1516670880000, 0.0026965, 0.0026965, 0.00268, 0.00268, 111.88749737], [1516670940000, 0.002695, 0.002695, 0.002695, 0.002695, 0.59332133], [1516671000000, 0.002695, 0.002695, 0.002695, 0.002695, 1.28008552], [1516671060000, 0.00269498, 0.002695, 0.00269498, 0.002695, 11.56053646], [1516671120000, 0.002695, 0.00269648, 0.002695, 0.00269641, 413.15124109], [1516671240000, 0.0026875, 0.0026964, 0.00268003, 0.0026964, 4.81109118], [1516671300000, 0.00269641, 0.00269641, 0.0026964, 0.00269641, 75.434226], [1516671360000, 0.00269639, 0.00269641, 0.00269639, 0.00269641, 30.27339177], [1516671420000, 0.00269641, 0.00269641, 0.00269641, 0.00269641, 0.50224467], [1516671480000, 0.00268003, 0.00269629, 0.00268003, 0.00269629, 5.64265409], [1516671540000, 0.0026955, 0.0026955, 0.0026955, 0.0026955, 15.78796715], [1516671600000, 0.0026955, 0.0026955, 0.00269549, 0.00269549, 6.56228561], [1516671720000, 0.00269499, 0.00269499, 0.00268003, 0.00268003, 146.23631371], [1516671780000, 0.00268004, 0.00268004, 0.00268003, 0.00268003, 6.62091469], [1516671840000, 0.00268004, 0.00268004, 0.00268003, 0.00268003, 27.65879312], [1516671900000, 0.00268003, 0.00268003, 0.00268003, 0.00268003, 0.82275198], [1516671960000, 0.00268003, 0.002681, 0.00268003, 0.002681, 0.82275198], [1516672020000, 0.002681, 0.00269391, 0.002681, 0.002681, 25.07992774], [1516672080000, 0.002681, 0.002681, 0.002681, 0.002681, 7.27510496], [1516672140000, 0.00268003, 0.002681, 0.00268003, 0.002681, 17.41137599], [1516672200000, 0.002681, 0.002681, 0.002681, 0.002681, 10.65894559], [1516672260000, 0.00268003, 0.002685, 0.00268003, 0.002685, 153.23495712], [1516672320000, 0.00268999, 0.00268999, 0.00268, 0.00268, 76.99644106], [1516672380000, 0.00268, 0.0026895, 0.00266953, 0.00266953, 253.48204967], [1516672440000, 0.0026895, 0.0026895, 0.00266969, 0.00266969, 20.60510735], [1516672500000, 0.0026707, 0.0026895, 0.0026707, 0.0026895, 116.31448054], [1516672560000, 0.002689, 0.002689, 0.002689, 0.002689, 8.87371102], [1516672620000, 0.00268852, 0.00268855, 0.00268852, 0.00268854, 156.39438503], [1516672680000, 0.00268854, 0.00268855, 0.002675, 0.002675, 116.35777842], [1516672740000, 0.002675, 0.002675, 0.002675, 0.002675, 21.96237655], [1516672800000, 0.00268698, 0.00268698, 0.00266695, 0.00266695, 155.92069339], [1516672860000, 0.00268697, 0.00268697, 0.00266695, 0.00266695, 7.78231326], [1516672920000, 0.00268, 0.00268, 0.00268, 0.00268, 186.69239277], [1516672980000, 0.00268, 0.00268, 0.00268, 0.00268, 39.66511436], [1516673040000, 0.00268, 0.00268554, 0.00266697, 0.00266697, 42.24536802], [1516673100000, 0.0026855, 0.00268596, 0.0026855, 0.00268554, 225.92478485], [1516673160000, 0.00268554, 0.00268554, 0.00268554, 0.00268554, 2.43230309], [1516673220000, 0.00266698, 0.00268554, 0.00266695, 0.0026855, 86.67291581], [1516673280000, 0.00268549, 0.00268549, 0.00268549, 0.00268549, 20.061003], [1516673340000, 0.00268548, 0.00268548, 0.00268548, 0.00268548, 5.09257931], [1516673460000, 0.00268548, 0.00268548, 0.00268547, 0.00268547, 11.73719789], [1516673520000, 0.00268547, 0.00268548, 0.00267001, 0.00267001, 35.19988055], [1516673580000, 0.00267001, 0.0026855, 0.00267001, 0.00268548, 111.95107605], [1516673700000, 0.00268549, 0.00268549, 0.00267001, 0.00267001, 14.85392093], [1516673760000, 0.00267001, 0.00267001, 0.00267001, 0.00267001, 12.61696595], [1516673820000, 0.0026855, 0.0026855, 0.0026855, 0.0026855, 1.00400299], [1516673880000, 0.00268548, 0.00268548, 0.00268548, 0.00268548, 8.84469201], [1516673940000, 0.00267002, 0.00267002, 0.00266904, 0.00266904, 42.75435982], [1516674000000, 0.00268548, 0.00268548, 0.00265, 0.00268548, 938.85147082], [1516674060000, 0.00266905, 0.00268548, 0.00266904, 0.0026817, 58.01920935], [1516674120000, 0.0026817, 0.0026817, 0.0026817, 0.0026817, 1.41206259], [1516674180000, 0.00268171, 0.00268171, 0.00268171, 0.00268171, 5.67540801], [1516674240000, 0.00268548, 0.0026855, 0.00268171, 0.00268172, 3.55332685], [1516674300000, 0.00268549, 0.0026855, 0.00268171, 0.00268171, 43.90134536], [1516674360000, 0.0026855, 0.0026855, 0.00268171, 0.00268171, 10.33888196], [1516674420000, 0.00268171, 0.0026855, 0.0026817, 0.0026817, 216.09323765], [1516674480000, 0.0026817, 0.0026817, 0.0026817, 0.0026817, 8.57500081], [1516674540000, 0.0026817, 0.0026817, 0.0026817, 0.0026817, 45.98275698], [1516674600000, 0.002684, 0.002684, 0.0026817, 0.002684, 84.6715704], [1516674660000, 0.002684, 0.002684, 0.002684, 0.002684, 18.58233979], [1516674720000, 0.002684, 0.002684, 0.002684, 0.002684, 55.68904143], [1516674780000, 0.002684, 0.002684, 0.002684, 0.002684, 4.63683263], [1516674840000, 0.002684, 0.002684, 0.0026817, 0.0026817, 154.50728959], [1516674900000, 0.0026817, 0.0026855, 0.0026691, 0.0026691, 71.27659804], [1516674960000, 0.00268546, 0.0026855, 0.00268546, 0.0026855, 11.83473115], [1516675020000, 0.00268553, 0.00268553, 0.00268553, 0.00268553, 0.41053349], [1516675080000, 0.002688, 0.002688, 0.0026879, 0.0026879, 5.68316773], [1516675140000, 0.00268553, 0.00268553, 0.00268553, 0.00268553, 45.0756], [1516675200000, 0.00268553, 0.0026879, 0.00268553, 0.00268553, 26.44519026], [1516675260000, 0.00268553, 0.0026879, 0.00268553, 0.0026879, 2.9229658], [1516675320000, 0.00268553, 0.00268553, 0.00268553, 0.00268553, 6.04], [1516675380000, 0.00268553, 0.0026879, 0.00268553, 0.0026879, 18.99197389], [1516675440000, 0.0026879, 0.002688, 0.00268554, 0.002688, 95.46768703], [1516675500000, 0.002688, 0.002688, 0.002688, 0.002688, 35.12846034], [1516675560000, 0.002688, 0.00268898, 0.00268554, 0.00268898, 80.10085578], [1516675620000, 0.00268898, 0.00268898, 0.00268898, 0.00268898, 83.46147011], [1516675680000, 0.00268898, 0.00268911, 0.00268898, 0.00268911, 187.61339849], [1516675740000, 0.00268911, 0.00269002, 0.00268911, 0.00269002, 460.73111035], [1516675800000, 0.00269108, 0.002695, 0.00269108, 0.002695, 17.89257546], [1516675860000, 0.00268898, 0.00268898, 0.00268898, 0.00268898, 1.77], [1516675920000, 0.00268898, 0.002695, 0.00268898, 0.002695, 12.49028855], [1516676040000, 0.002695, 0.002695, 0.002695, 0.002695, 3.1840274], [1516676100000, 0.002695, 0.002695, 0.00268936, 0.002695, 14.48712252], [1516676160000, 0.0026894, 0.002695, 0.0026894, 0.002695, 26.98181869], [1516676220000, 0.00269499, 0.00269499, 0.00269499, 0.00269499, 3.70131244], [1516676280000, 0.00269499, 0.002695, 0.00269499, 0.00269499, 540.49693588], [1516676400000, 0.002695, 0.002695, 0.00269499, 0.002695, 47.72997067], [1516676460000, 0.002695, 0.002695, 0.002695, 0.002695, 88.48162405], [1516676520000, 0.00269549, 0.0026965, 0.00269499, 0.00269499, 140.11837252], [1516676580000, 0.0026965, 0.0026965, 0.00269499, 0.0026965, 1.14894039], [1516676640000, 0.0026965, 0.0026965, 0.00269499, 0.00269499, 5.24395949], [1516676700000, 0.00269499, 0.00269499, 0.00268941, 0.00268941, 223.6463384], [1516676760000, 0.00268941, 0.00268941, 0.00268941, 0.00268941, 34.05677122], [1516676820000, 0.00268941, 0.00268941, 0.00268941, 0.00268941, 3.21906251], [1516676940000, 0.0026965, 0.0026965, 0.00268941, 0.00268941, 1.67835614], [1516677000000, 0.0026965, 0.0026965, 0.0026965, 0.0026965, 3.70851103], [1516677060000, 0.0026965, 0.0026965, 0.0026965, 0.0026965, 5.41006324], [1516677120000, 0.0026965, 0.0026965, 0.0026965, 0.0026965, 10.8489046], [1516677180000, 0.0026965, 0.00269989, 0.0026965, 0.00269989, 94.40371561], [1516677300000, 0.00269989, 0.00269989, 0.00268941, 0.00269989, 44.12995396], [1516677360000, 0.00269988, 0.00269988, 0.00268942, 0.00268943, 23.67921777], [1516677420000, 0.00269988, 0.00269989, 0.00268943, 0.00268943, 643.95746415], [1516677480000, 0.00268943, 0.00268943, 0.00268942, 0.00268943, 261.0], [1516677540000, 0.00268943, 0.00268943, 0.00268941, 0.00268941, 92.0], [1516677600000, 0.00268941, 0.00269988, 0.00268555, 0.0026988, 238.1649122], [1516677660000, 0.0026988, 0.0026988, 0.00268556, 0.0026988, 134.33922686], [1516677720000, 0.0026988, 0.0026988, 0.00268555, 0.0026988, 88.87158763], [1516677780000, 0.00268556, 0.0026988, 0.00268554, 0.0026988, 55.75635791], [1516677840000, 0.0026988, 0.0026988, 0.00268889, 0.00268889, 19.86394303], [1516677900000, 0.0026889, 0.0026988, 0.00268555, 0.00268555, 177.6057524], [1516677960000, 0.00268555, 0.0026988, 0.002672, 0.0026988, 594.41368503], [1516678020000, 0.0026988, 0.0026988, 0.00269879, 0.00269879, 23.78875515], [1516678080000, 0.0026735, 0.00269653, 0.0026735, 0.00269653, 18.3805524], [1516678140000, 0.00269653, 0.00269653, 0.00269653, 0.00269653, 5.90960073], [1516678200000, 0.00269653, 0.0026988, 0.00269653, 0.0026988, 30.74997293], [1516678260000, 0.0026988, 0.00269989, 0.00267496, 0.00269989, 144.8505789], [1516678320000, 0.00269989, 0.00270018, 0.00269989, 0.00270018, 97.62597104], [1516678380000, 0.00269989, 0.00269989, 0.00268187, 0.00268188, 499.45612443], [1516678440000, 0.00270018, 0.00270018, 0.00269, 0.00269, 5.81019784], [1516678500000, 0.00269, 0.00269, 0.00268191, 0.00268191, 26.73857312], [1516678560000, 0.00270017, 0.00270017, 0.00268191, 0.00268191, 77.97436396], [1516678680000, 0.00270017, 0.00270017, 0.00268177, 0.00268177, 255.089312], [1516678740000, 0.00268253, 0.00268253, 0.00268253, 0.00268253, 272.0], [1516678800000, 0.00268253, 0.00270118, 0.00268179, 0.00270118, 504.36052915], [1516678860000, 0.00268645, 0.00270118, 0.00268645, 0.00268645, 118.65078222], [1516678920000, 0.0026823, 0.0026823, 0.00268227, 0.00268227, 49.64026519], [1516678980000, 0.00268229, 0.00270399, 0.00268213, 0.00270399, 891.13425085], [1516679040000, 0.00270399, 0.00270399, 0.0026823, 0.0026823, 1236.7981737], [1516679100000, 0.00268254, 0.00270658, 0.00268254, 0.00270658, 222.0530737], [1516679160000, 0.0027038, 0.00271, 0.00268258, 0.00268267, 1602.77015902], [1516679220000, 0.00268284, 0.00269695, 0.00268244, 0.00269695, 1128.77196771], [1516679280000, 0.00269, 0.00269695, 0.00269, 0.00269695, 10.66087887], [1516679340000, 0.002698, 0.002698, 0.002698, 0.002698, 15.79299739], [1516679400000, 0.0027, 0.00270911, 0.002698, 0.00270892, 201.79605595], [1516679460000, 0.0027, 0.00270883, 0.00268246, 0.00268247, 160.59963886], [1516679520000, 0.00270824, 0.00270824, 0.00270824, 0.00270824, 14.55586571], [1516679580000, 0.00270782, 0.00270782, 0.002685, 0.002685, 22.68236798], [1516679640000, 0.002699, 0.00270697, 0.002699, 0.00270697, 36.64796651], [1516679700000, 0.00270665, 0.00270665, 0.0026871, 0.00270654, 16.4120254], [1516679760000, 0.00270689, 0.00270689, 0.0026871, 0.0026871, 7.86783278], [1516679820000, 0.00269677, 0.00270689, 0.00269677, 0.00270689, 37.0100807], [1516679880000, 0.00270681, 0.00270681, 0.00270001, 0.00270002, 18.98393787], [1516679940000, 0.0027079, 0.0027079, 0.002685, 0.0027, 672.30539393], [1516680000000, 0.00268501, 0.00270778, 0.0026823, 0.00270778, 864.4916325], [1516680060000, 0.00268231, 0.00268231, 0.00267268, 0.00267268, 373.22228334], [1516680120000, 0.00267778, 0.00269653, 0.00267267, 0.00269653, 1042.34051289], [1516680180000, 0.00267782, 0.00269982, 0.00267782, 0.00269982, 308.91593947], [1516680240000, 0.00269982, 0.00269982, 0.00269965, 0.00269965, 119.49167646], [1516680300000, 0.00270742, 0.00270742, 0.00269965, 0.00269965, 84.19093461], [1516680360000, 0.00269957, 0.00269957, 0.00267783, 0.00269957, 71.96312021], [1516680420000, 0.00268185, 0.00269949, 0.00268185, 0.00269949, 634.46722678], [1516680480000, 0.00269949, 0.00269949, 0.00269949, 0.00269949, 15.47491881], [1516680540000, 0.00269948, 0.00269948, 0.0026501, 0.0026501, 1507.501003], [1516680600000, 0.00269942, 0.00269942, 0.0026817, 0.00269652, 49.8258587], [1516680660000, 0.00269652, 0.00269653, 0.00269652, 0.00269653, 41.53457776], [1516680720000, 0.00269653, 0.00269949, 0.00269652, 0.00269652, 185.63914481], [1516680780000, 0.00269652, 0.00269652, 0.00269652, 0.00269652, 0.81772062], [1516680840000, 0.00269653, 0.00269957, 0.00269653, 0.00269957, 879.18233388], [1516680900000, 0.00269957, 0.00270875, 0.00269957, 0.00269957, 6.51327949], [1516680960000, 0.00270877, 0.00270877, 0.00269949, 0.00269949, 70.83223335], [1516681020000, 0.00269749, 0.00269749, 0.00269749, 0.00269749, 82.87021242], [1516681080000, 0.00269749, 0.00269749, 0.00269749, 0.00269749, 167.02637782], [1516681140000, 0.00269949, 0.00269949, 0.00269749, 0.00269949, 535.36125313], [1516681200000, 0.00269749, 0.00270999, 0.00269652, 0.00270875, 724.86488238], [1516681260000, 0.00270875, 0.00270875, 0.00270875, 0.00270875, 40.58355136], [1516681320000, 0.00270875, 0.00270998, 0.00270875, 0.00270875, 470.34584304], [1516681380000, 0.00270875, 0.00270875, 0.00270875, 0.00270875, 117.56665206], [1516681440000, 0.00270997, 0.00270997, 0.00270997, 0.00270997, 10.03100299], [1516681500000, 0.00270997, 0.00270998, 0.00268318, 0.00268318, 309.08241291], [1516681560000, 0.00270995, 0.00270995, 0.00268321, 0.00268321, 39.78306392], [1516681620000, 0.00270996, 0.00270996, 0.00270996, 0.00270996, 7.37269461], [1516681680000, 0.00268329, 0.00270995, 0.00268329, 0.00270995, 26.37445923], [1516681740000, 0.00270995, 0.00270995, 0.00268889, 0.0027, 300.16382312], [1516681800000, 0.0027, 0.0027, 0.00269, 0.0027, 26.42915232], [1516681860000, 0.0027, 0.0027, 0.00269, 0.0027, 90.97594783], [1516681920000, 0.002709, 0.002709, 0.002709, 0.002709, 3.68182635], [1516681980000, 0.002702, 0.002702, 0.002702, 0.002702, 25.62818938], [1516682040000, 0.002702, 0.002702, 0.0027, 0.0027, 18.89226971], [1516682100000, 0.002702, 0.00270899, 0.002702, 0.00270899, 76.10069407], [1516682160000, 0.002702, 0.00270899, 0.00268889, 0.002702, 175.48051903], [1516682220000, 0.002687, 0.002687, 0.002687, 0.002687, 25.0], [1516682280000, 0.0026889, 0.0026889, 0.00268889, 0.0026889, 142.07829222], [1516682340000, 0.0026889, 0.0026889, 0.00268889, 0.00268889, 3.93394398], [1516682400000, 0.00269998, 0.00269998, 0.00269998, 0.00269998, 5.99463136], [1516682460000, 0.00269997, 0.00269997, 0.00269997, 0.00269997, 1.22390566], [1516682520000, 0.0026889, 0.00269997, 0.00268889, 0.00268889, 78.64692542], [1516682580000, 0.0026833, 0.00269996, 0.0026833, 0.00269996, 107.13765731], [1516682640000, 0.00269996, 0.00269996, 0.00269996, 0.00269996, 163.54540526], [1516682700000, 0.00269996, 0.00269996, 0.00269996, 0.00269996, 12.50994945], [1516682760000, 0.00269996, 0.00269996, 0.00269995, 0.00269995, 6.33942459], [1516682820000, 0.00268899, 0.00268899, 0.00268899, 0.00268899, 148.79286571], [1516682880000, 0.00268894, 0.00268899, 0.00268894, 0.00268899, 102.89147795], [1516682940000, 0.00269995, 0.00269995, 0.00269995, 0.00269995, 148.66222371], [1516683060000, 0.00268899, 0.00268899, 0.00268899, 0.00268899, 6.45691715], [1516683120000, 0.00269995, 0.00269995, 0.00269995, 0.00269995, 126.55822166], [1516683240000, 0.00269447, 0.00269995, 0.00268899, 0.00268899, 169.86329775], [1516683300000, 0.00268892, 0.00269995, 0.00268892, 0.00269995, 59.35680942], [1516683360000, 0.00268893, 0.00268893, 0.00268893, 0.00268893, 151.69217312], [1516683420000, 0.00268893, 0.00268893, 0.00268893, 0.00268893, 2.71082999], [1516683480000, 0.00269994, 0.00269994, 0.00269994, 0.00269994, 7.82054315], [1516683540000, 0.00269994, 0.00269994, 0.00269994, 0.00269994, 5.0], [1516683600000, 0.00269994, 0.00269994, 0.00269512, 0.00269994, 55.75005068], [1516683660000, 0.00269994, 0.00269994, 0.00269512, 0.00269994, 13.84175146], [1516683720000, 0.00269994, 0.00269994, 0.00269993, 0.00269993, 4.02375449], [1516683780000, 0.00269993, 0.00269993, 0.00268901, 0.00268901, 3.33154963], [1516683840000, 0.00268901, 0.00269993, 0.00268901, 0.00269993, 15.77252268], [1516683900000, 0.00269992, 0.00269992, 0.00268176, 0.00268176, 104.5392822], [1516683960000, 0.00268176, 0.00269996, 0.00267358, 0.00267358, 2541.72558663], [1516684020000, 0.00269961, 0.00270861, 0.00267377, 0.00270853, 1649.00768809], [1516684080000, 0.00269653, 0.00269653, 0.00269645, 0.00269645, 7.21964157], [1516684140000, 0.00269645, 0.00269653, 0.00268702, 0.00269653, 15.06079508], [1516684200000, 0.00269653, 0.00269653, 0.00267563, 0.00269653, 35.3914255], [1516684260000, 0.00269653, 0.00269653, 0.00269653, 0.00269653, 6.20146968], [1516684380000, 0.00268125, 0.00268126, 0.00268101, 0.00268126, 1005.0], [1516684440000, 0.00269653, 0.00269653, 0.00268253, 0.00269653, 54.17566875], [1516684500000, 0.00269653, 0.00270773, 0.0026825, 0.00270255, 76.75855479], [1516684560000, 0.00268256, 0.00268256, 0.00268256, 0.00268256, 5.282], [1516684620000, 0.0027, 0.00270791, 0.00268259, 0.00270791, 176.31995974], [1516684740000, 0.0027049, 0.00270501, 0.00268501, 0.00270501, 85.06615527], [1516684800000, 0.00270722, 0.00270722, 0.002685, 0.00270421, 24.77557744], [1516684860000, 0.002685, 0.002685, 0.002685, 0.002685, 29.30613293], [1516684920000, 0.002685, 0.00270418, 0.002685, 0.00270418, 7.25873792], [1516684980000, 0.00270418, 0.00270421, 0.00270288, 0.00270421, 39.88089128], [1516685040000, 0.00270421, 0.00270421, 0.00270421, 0.00270421, 3.75995836], [1516685100000, 0.00270421, 0.00270789, 0.00270421, 0.00270789, 12.52759707], [1516685160000, 0.00270421, 0.00270781, 0.00269002, 0.00269002, 56.5318992], [1516685220000, 0.00269002, 0.00270598, 0.00269002, 0.00270598, 3.01727672], [1516685280000, 0.00269002, 0.00270598, 0.00269002, 0.00269002, 83.5123044], [1516685340000, 0.00270595, 0.00270596, 0.00269002, 0.00269002, 82.89220697], [1516685400000, 0.00268506, 0.0027059, 0.00268303, 0.00268303, 306.14160967], [1516685460000, 0.00268303, 0.00270582, 0.00268301, 0.00268301, 279.46754566], [1516685520000, 0.00268305, 0.0027059, 0.00268305, 0.0027059, 32.30358606], [1516685580000, 0.00269749, 0.00271012, 0.00268806, 0.00271012, 595.08497209], [1516685640000, 0.00271065, 0.002711, 0.00268417, 0.00268417, 319.69987767], [1516685700000, 0.002691, 0.002691, 0.00268517, 0.002691, 24.00198369], [1516685760000, 0.002691, 0.00269102, 0.002691, 0.00269102, 4.40992448], [1516685880000, 0.002691, 0.00269102, 0.002691, 0.00269102, 80.86373912], [1516685940000, 0.00269102, 0.00269102, 0.00269102, 0.00269102, 20.74212017], [1516686000000, 0.00269102, 0.00269102, 0.00269102, 0.00269102, 0.74135458], [1516686060000, 0.002691, 0.002691, 0.002691, 0.002691, 114.21669588], [1516686120000, 0.002691, 0.00269102, 0.00268561, 0.00269102, 469.0554391], [1516686180000, 0.00268571, 0.00270589, 0.00268571, 0.00270589, 30.39383095], [1516686240000, 0.00270589, 0.00270957, 0.00270589, 0.00270957, 3.1002523], [1516686300000, 0.00270589, 0.0027105, 0.00268575, 0.0027105, 39.59176828], [1516686360000, 0.00271049, 0.00271049, 0.00268519, 0.00268519, 2.7], [1516686420000, 0.0026855, 0.0026855, 0.00268549, 0.0026855, 11.06595746], [1516686540000, 0.00270961, 0.00270961, 0.00270961, 0.00270961, 66.37708355], [1516686600000, 0.00270931, 0.00270931, 0.0026855, 0.0026855, 55.97171258], [1516686660000, 0.00270887, 0.00270887, 0.00270851, 0.00270851, 9.38415846], [1516686720000, 0.002707, 0.002707, 0.002707, 0.002707, 6.24622929], [1516686780000, 0.002707, 0.002707, 0.002707, 0.002707, 3.68489102], [1516686900000, 0.002707, 0.002707, 0.00269015, 0.002707, 17.91871812], [1516686960000, 0.00269016, 0.002707, 0.00269016, 0.002707, 23.11434185], [1516687020000, 0.0027, 0.002702, 0.0027, 0.002702, 97.44306441], [1516687080000, 0.00270699, 0.00270702, 0.00270699, 0.00270702, 58.14328724], [1516687140000, 0.00270702, 0.00270702, 0.00270699, 0.00270699, 238.60661087], [1516687200000, 0.00270699, 0.00270702, 0.002702, 0.00270702, 1170.76522048], [1516687260000, 0.002702, 0.002702, 0.00269016, 0.00269016, 464.12753795], [1516687320000, 0.00269021, 0.002702, 0.00269021, 0.002702, 468.08338967], [1516687380000, 0.002702, 0.002702, 0.00269022, 0.00269022, 21.15507043], [1516687440000, 0.002702, 0.002702, 0.0026903, 0.0026903, 642.05028435], [1516687500000, 0.0026903, 0.0026903, 0.0026903, 0.0026903, 150.35592963], [1516687560000, 0.00269029, 0.0026903, 0.00269029, 0.00269029, 93.75341812], [1516687620000, 0.00269029, 0.00269029, 0.00269016, 0.00269016, 213.89360696], [1516687680000, 0.00269016, 0.00269016, 0.00269016, 0.00269016, 0.40982692], [1516687740000, 0.00269016, 0.00269016, 0.00269016, 0.00269016, 55.89816219], [1516687800000, 0.00269016, 0.0026977, 0.00269016, 0.0026977, 7.67847149], [1516687860000, 0.0026977, 0.0026977, 0.00269768, 0.00269768, 11.03100299], [1516687920000, 0.0026975, 0.0026975, 0.00269016, 0.00269016, 2.11261963], [1516687980000, 0.00268557, 0.002697, 0.00268557, 0.002697, 171.84418502], [1516688040000, 0.002697, 0.0026975, 0.002697, 0.0026975, 8.34125992], [1516688100000, 0.0026975, 0.00269768, 0.00268556, 0.00268556, 118.8046617], [1516688160000, 0.00268556, 0.00268556, 0.00268556, 0.00268556, 0.60938562], [1516688220000, 0.00268556, 0.00268556, 0.00268506, 0.00268506, 259.50699833], [1516688280000, 0.00268506, 0.0026977, 0.00268417, 0.00268417, 38.20507955], [1516688340000, 0.002685, 0.002685, 0.002685, 0.002685, 250.0], [1516688400000, 0.00269134, 0.0026977, 0.002685, 0.002685, 12.00490315], [1516688520000, 0.0026977, 0.0026977, 0.0026977, 0.0026977, 13.73653279], [1516688580000, 0.0026977, 0.0026977, 0.002685, 0.0026977, 407.84881741], [1516688640000, 0.002685, 0.002685, 0.002685, 0.002685, 46.38761545], [1516688700000, 0.002685, 0.00269, 0.002685, 0.00269, 12.40376756], [1516688760000, 0.00269, 0.00269, 0.00269, 0.00269, 33.86126849], [1516688820000, 0.0026977, 0.0026977, 0.00269, 0.00269, 12.38634413], [1516688880000, 0.00269769, 0.00269769, 0.00269001, 0.00269001, 0.89348041], [1516688940000, 0.00269001, 0.0026977, 0.00269, 0.00269, 2.61334917], [1516689000000, 0.00269001, 0.00269759, 0.00269, 0.00269, 29.75624506], [1516689060000, 0.00269, 0.00269, 0.00269, 0.00269, 1.74928629], [1516689120000, 0.00269, 0.00269765, 0.00269, 0.00269, 23.68625274], [1516689180000, 0.00269001, 0.0026977, 0.00269001, 0.00269001, 27.10270412], [1516689240000, 0.00269768, 0.00269768, 0.00269001, 0.00269001, 8.01050756], [1516689300000, 0.00269382, 0.0026977, 0.00269001, 0.00269001, 15.64604078], [1516689360000, 0.00269001, 0.00269001, 0.002685, 0.002685, 908.35027805], [1516689420000, 0.002685, 0.00269001, 0.002685, 0.00269001, 10.91067976], [1516689480000, 0.00269001, 0.00269001, 0.00269001, 0.00269001, 434.47605813], [1516689540000, 0.002689, 0.002689, 0.002689, 0.002689, 3.0], [1516689660000, 0.00268501, 0.00268899, 0.002685, 0.00268899, 62.47136594], [1516689720000, 0.00268899, 0.00268899, 0.00268899, 0.00268899, 10.85562996], [1516689780000, 0.00268899, 0.00269001, 0.00268502, 0.00269001, 549.88025325], [1516689840000, 0.00269001, 0.00269001, 0.0026851, 0.00269001, 204.11259001], [1516689900000, 0.0026977, 0.0026977, 0.00268513, 0.00268513, 53.93752834], [1516689960000, 0.002697, 0.0026977, 0.00268514, 0.0026977, 45.70708562], [1516690020000, 0.0026977, 0.0026977, 0.0026977, 0.0026977, 114.39929663], [1516690080000, 0.00268529, 0.00268529, 0.00268529, 0.00268529, 57.72612985], [1516690140000, 0.002695, 0.002695, 0.0026853, 0.0026857, 50.62798007], [1516690200000, 0.0026857, 0.0026948, 0.0026857, 0.0026857, 11.48834132], [1516690260000, 0.0026948, 0.0026948, 0.0026853, 0.0026853, 18.5716235], [1516690320000, 0.00269479, 0.00269479, 0.00268529, 0.00268529, 1199.19738865], [1516690380000, 0.00268529, 0.00269479, 0.00268529, 0.00268529, 16.09065216], [1516690440000, 0.00269478, 0.00269479, 0.00268529, 0.00268529, 216.51729959], [1516690500000, 0.00268529, 0.00269377, 0.002685, 0.002685, 378.71859895], [1516690560000, 0.002685, 0.002685, 0.002685, 0.002685, 42.69904863], [1516690620000, 0.002685, 0.002685, 0.00268, 0.00268, 253.84765632], [1516690680000, 0.00268416, 0.00268416, 0.00268416, 0.00268416, 0.5848257], [1516690740000, 0.0026725, 0.0026725, 0.00267051, 0.0026725, 21.05286425], [1516690800000, 0.0026725, 0.00268416, 0.00267, 0.0026841, 84.42984234], [1516690860000, 0.0026841, 0.0026841, 0.00267, 0.00267, 376.83197696], [1516690920000, 0.00267, 0.00267, 0.00267, 0.00267, 217.77153558], [1516690980000, 0.00267, 0.00267, 0.00267, 0.00267, 1.84978423], [1516691040000, 0.00267, 0.00268199, 0.00267, 0.00268199, 13.29926083], [1516691100000, 0.00268199, 0.00268199, 0.00267, 0.00267, 5.04752505], [1516691160000, 0.00268199, 0.00268199, 0.00267005, 0.00268198, 12.49025505], [1516691220000, 0.00267005, 0.00267005, 0.00267005, 0.00267005, 0.8], [1516691280000, 0.00267005, 0.00267005, 0.00267005, 0.00267005, 2.0], [1516691340000, 0.00268, 0.002681, 0.00267005, 0.002681, 215.092], [1516691400000, 0.00268099, 0.00268099, 0.00267, 0.00267, 288.71168808], [1516691460000, 0.00268098, 0.002681, 0.00267, 0.00267, 26.79837031], [1516691520000, 0.00267, 0.00268098, 0.00267, 0.00268098, 19.05130588], [1516691580000, 0.00267215, 0.00267215, 0.00267001, 0.00267001, 35.56137362], [1516691640000, 0.00267215, 0.00268098, 0.00267001, 0.00267215, 65.5013367], [1516691700000, 0.00267215, 0.00268097, 0.00267215, 0.00268097, 10.20216595], [1516691760000, 0.00267221, 0.00267221, 0.00267, 0.00267, 295.92458616], [1516691820000, 0.00267, 0.00267221, 0.00266697, 0.00267002, 121.24408336], [1516691880000, 0.00267221, 0.00267221, 0.002671, 0.002671, 3.12019177], [1516691940000, 0.002671, 0.002671, 0.00266697, 0.00266697, 737.286908], [1516692000000, 0.00266697, 0.00267002, 0.00266697, 0.00266697, 356.27248096], [1516692060000, 0.00267002, 0.00267002, 0.00266695, 0.00266695, 262.372705], [1516692120000, 0.002665, 0.002665, 0.00265685, 0.00265685, 279.72917], [1516692180000, 0.00265685, 0.00267, 0.00265646, 0.00266898, 91.36739355], [1516692240000, 0.00266898, 0.00267, 0.00265685, 0.00266898, 43.91793137], [1516692300000, 0.00266898, 0.00266898, 0.00266898, 0.00266898, 11.33338268], [1516692360000, 0.00266898, 0.00266949, 0.00266898, 0.00266898, 7.02357795], [1516692420000, 0.00266949, 0.00267, 0.00266898, 0.00266898, 249.4284998], [1516692480000, 0.00266898, 0.00267, 0.00266898, 0.00267, 170.32224994], [1516692540000, 0.00266898, 0.00267, 0.00266898, 0.00266898, 99.0613358], [1516692600000, 0.00267, 0.00267, 0.00266898, 0.00266898, 97.6994578], [1516692660000, 0.00266898, 0.00267, 0.00266898, 0.00266898, 306.0487957], [1516692720000, 0.00266898, 0.00266898, 0.00266898, 0.00266898, 18.4906149], [1516692780000, 0.00266898, 0.00266998, 0.00266666, 0.00266666, 108.92437878], [1516692840000, 0.00266666, 0.00266666, 0.00265646, 0.00265932, 158.09929976], [1516692900000, 0.00265932, 0.00267, 0.00265646, 0.00265646, 457.77533902], [1516693020000, 0.00265668, 0.00267, 0.00265647, 0.00267, 120.29448217], [1516693080000, 0.002669, 0.002669, 0.002669, 0.002669, 21.52992593], [1516693140000, 0.002669, 0.002669, 0.002669, 0.002669, 4.33961153], [1516693200000, 0.002669, 0.002669, 0.002669, 0.002669, 3.94672161], [1516693260000, 0.002669, 0.00267, 0.002669, 0.00267, 60.52290742], [1516693320000, 0.002669, 0.00267, 0.002669, 0.00267, 29.70645767], [1516693380000, 0.00267, 0.00267, 0.00267, 0.00267, 47.91946811], [1516693440000, 0.00267, 0.00267, 0.00267, 0.00267, 269.44889196], [1516693500000, 0.00267, 0.00267, 0.00265693, 0.00267, 503.38099396], [1516693560000, 0.00265693, 0.002671, 0.00265693, 0.002671, 258.77399882], [1516693620000, 0.002671, 0.002671, 0.00267, 0.00267001, 25.76110878], [1516693680000, 0.00267001, 0.00267001, 0.00267, 0.00267, 54.82584594], [1516693740000, 0.00267, 0.00267001, 0.00267, 0.00267001, 46.89978814], [1516693800000, 0.00267, 0.00267001, 0.00267, 0.00267001, 6.54343525], [1516693860000, 0.00267, 0.00267001, 0.00267, 0.00267, 10.81189853], [1516693920000, 0.00267001, 0.00267001, 0.00267001, 0.00267001, 14.61751979], [1516693980000, 0.00267, 0.00267, 0.00267, 0.00267, 0.8258427], [1516694040000, 0.00267, 0.00267, 0.00267, 0.00267, 40.41292135], [1516694100000, 0.002671, 0.002671, 0.00267, 0.00267, 8.31367496], [1516694160000, 0.00267, 0.00267, 0.00267, 0.00267, 0.41292135], [1516694220000, 0.00267, 0.00267, 0.00267, 0.00267, 169.90620546], [1516694280000, 0.00267, 0.002671, 0.00265646, 0.00266212, 148.79059793], [1516694340000, 0.00266212, 0.002671, 0.00266212, 0.002671, 164.41675361], [1516694400000, 0.002671, 0.002671, 0.00266213, 0.002671, 76.0737346], [1516694460000, 0.00266213, 0.00267099, 0.00266213, 0.00267099, 4.88132039], [1516694520000, 0.00267099, 0.002671, 0.00267099, 0.002671, 6.02066742], [1516694580000, 0.002671, 0.002671, 0.002671, 0.002671, 579.88237513], [1516694640000, 0.002671, 0.0026809, 0.00266241, 0.00266241, 493.37038151], [1516694700000, 0.0026809, 0.00268529, 0.0026809, 0.00268529, 722.87411386], [1516694760000, 0.0026817, 0.00268529, 0.00267, 0.0026817, 132.18089064], [1516694820000, 0.0026817, 0.0026817, 0.00267038, 0.00267048, 1438.01459851], [1516694880000, 0.00267051, 0.0026817, 0.00266695, 0.00266695, 323.6187112], [1516695000000, 0.0026715, 0.00268999, 0.00267066, 0.00268999, 79.36664019], [1516695060000, 0.00267159, 0.00268997, 0.00267159, 0.00268997, 15.85228169], [1516695120000, 0.00268994, 0.00268994, 0.00268994, 0.00268994, 0.2213821], [1516695180000, 0.00268987, 0.00268987, 0.00268987, 0.00268987, 85.30633079], [1516695240000, 0.00268977, 0.00268977, 0.00268898, 0.00268898, 136.05688822], [1516695300000, 0.00268898, 0.00268898, 0.00267169, 0.00267179, 449.27619329], [1516695360000, 0.00267179, 0.00267179, 0.0026715, 0.0026715, 226.98835292], [1516695420000, 0.0026715, 0.0026715, 0.00267045, 0.00267045, 97.24744618], [1516695480000, 0.00268785, 0.00268785, 0.00267045, 0.00268699, 102.79573183], [1516695540000, 0.00268699, 0.00268699, 0.00267051, 0.00267051, 8.07459808], [1516695600000, 0.00268699, 0.00268699, 0.00268689, 0.00268689, 48.66527762], [1516695660000, 0.00268688, 0.00268688, 0.00268688, 0.00268688, 8.78433168], [1516695720000, 0.00268, 0.00268, 0.00268, 0.00268, 12.13755809], [1516695780000, 0.00268, 0.00268688, 0.00268, 0.00268688, 11.34309146], [1516695840000, 0.00268, 0.00268687, 0.00268, 0.00268687, 4.33132041], [1516695900000, 0.00268687, 0.00268688, 0.00268, 0.00268688, 34.09238367], [1516695960000, 0.00268688, 0.00268688, 0.00268688, 0.00268688, 0.45216542], [1516696080000, 0.00268686, 0.00268686, 0.00268686, 0.00268686, 1.18859784], [1516696140000, 0.00268, 0.00268, 0.00268, 0.00268, 37.19627702], [1516696200000, 0.002686, 0.002686, 0.002685, 0.002686, 8.04434844], [1516696260000, 0.0026859, 0.00268686, 0.00268, 0.00268686, 22.56036525], [1516696320000, 0.00268, 0.00268688, 0.00267051, 0.00268684, 122.18275284], [1516696380000, 0.00267051, 0.00268688, 0.00267051, 0.00268688, 449.30655985], [1516696440000, 0.00267083, 0.00268688, 0.00267083, 0.00268688, 3.32594094], [1516696500000, 0.00268688, 0.00268688, 0.00267055, 0.00267055, 423.43209943], [1516696560000, 0.0026868, 0.0026868, 0.0026868, 0.0026868, 4.61007556], [1516696620000, 0.0026868, 0.00268997, 0.0026868, 0.00268997, 26.7820454], [1516696680000, 0.00268997, 0.00269653, 0.0026868, 0.0026868, 529.71053368], [1516696740000, 0.00269653, 0.00269653, 0.0026868, 0.0026868, 1.55454833], [1516696800000, 0.002696, 0.00269653, 0.002696, 0.002696, 22.19129515], [1516696860000, 0.002696, 0.00269653, 0.002696, 0.002696, 22.22928652], [1516696920000, 0.002696, 0.002696, 0.002696, 0.002696, 0.81787834], [1516696980000, 0.00269653, 0.0026977, 0.00267096, 0.00267096, 503.25678182], [1516697040000, 0.00269077, 0.00269077, 0.00267099, 0.00267099, 61.03162961], [1516697100000, 0.00269073, 0.00269073, 0.00269071, 0.00269071, 10.06024444], [1516697160000, 0.00267071, 0.00269068, 0.00267051, 0.00269068, 1644.04224035], [1516697280000, 0.00269067, 0.00269067, 0.00267053, 0.00267053, 3.69154301], [1516697340000, 0.00269066, 0.00269066, 0.00269066, 0.00269066, 176.6916898], [1516697400000, 0.00268, 0.0026906, 0.00268, 0.0026906, 13.77449236], [1516697460000, 0.0026906, 0.00269067, 0.00267051, 0.00269067, 285.93838507], [1516697520000, 0.00269061, 0.00269061, 0.0026906, 0.0026906, 1.84819562], [1516697580000, 0.00267052, 0.00267052, 0.00267052, 0.00267052, 5.49075219], [1516697640000, 0.00267052, 0.00267052, 0.00267052, 0.00267052, 2.59420638], [1516697700000, 0.00268897, 0.00268897, 0.00268792, 0.00268792, 36.92621524], [1516697760000, 0.00267052, 0.00267052, 0.00267052, 0.00267052, 71.12523576], [1516697820000, 0.00267052, 0.00267052, 0.00267051, 0.00267052, 95.4298861], [1516697880000, 0.00267052, 0.00267052, 0.00267051, 0.00267052, 59.56836762], [1516697940000, 0.00267052, 0.00267052, 0.00267051, 0.00267052, 4.19136478], [1516698000000, 0.00267052, 0.00267052, 0.00267052, 0.00267052, 55.10113755], [1516698060000, 0.00267052, 0.00267052, 0.00267051, 0.00267052, 132.02954242], [1516698120000, 0.00267, 0.00267, 0.00267, 0.00267, 142.65390719], [1516698180000, 0.00267052, 0.00267052, 0.00267, 0.00267, 71.62754845], [1516698240000, 0.00267051, 0.00267052, 0.00267051, 0.00267052, 412.76982974], [1516698300000, 0.00267052, 0.00267052, 0.00267052, 0.00267052, 526.92363055], [1516698360000, 0.00268997, 0.00268998, 0.00268997, 0.00268998, 5.74349995], [1516698420000, 0.00268997, 0.00268997, 0.00268997, 0.00268997, 0.4216564], [1516698540000, 0.00268967, 0.00268967, 0.00267051, 0.00267051, 120.71130752], [1516698600000, 0.00267051, 0.00267051, 0.00267051, 0.00267051, 74.58541694], [1516698660000, 0.00267051, 0.00267993, 0.00267051, 0.00267993, 6.45255957], [1516698720000, 0.00267051, 0.00267051, 0.00267051, 0.00267051, 5.82568498], [1516698780000, 0.00267051, 0.00267051, 0.00267051, 0.00267051, 35.22863701], [1516698840000, 0.00267052, 0.00267987, 0.00267051, 0.00267051, 57.77653617], [1516698900000, 0.00267051, 0.00267981, 0.00267051, 0.00267051, 73.22938979], [1516698960000, 0.00267132, 0.00268973, 0.00267132, 0.00267132, 27.04878502], [1516699020000, 0.00267132, 0.00267132, 0.00267132, 0.00267132, 809.38342552], [1516699080000, 0.00267051, 0.00267132, 0.00267051, 0.00267132, 8.23787918], [1516699140000, 0.00267051, 0.00267132, 0.00267051, 0.00267051, 5.01836874], [1516699200000, 0.00267051, 0.00267132, 0.00267, 0.00267, 95.45050322], [1516699260000, 0.00267132, 0.00267132, 0.00267, 0.00267, 162.21253016], [1516699320000, 0.00267132, 0.00267132, 0.00266695, 0.00267, 20.78248823], [1516699380000, 0.00267, 0.00267, 0.00266695, 0.00266695, 44.11729499], [1516699440000, 0.00266695, 0.00266695, 0.002664, 0.002664, 0.82678716], [1516699500000, 0.00266695, 0.00266695, 0.002664, 0.00266695, 11.67073598], [1516699560000, 0.00266695, 0.00266696, 0.002666, 0.00266696, 12.81578385], [1516699620000, 0.00266696, 0.00266696, 0.00266307, 0.00266307, 770.62757808], [1516699680000, 0.00266316, 0.00266316, 0.00266307, 0.00266316, 7.70413181], [1516699740000, 0.00266316, 0.00266316, 0.00266226, 0.00266226, 102.48091845], [1516699800000, 0.00266316, 0.00267, 0.00266316, 0.00267, 123.66484116], [1516699860000, 0.00267132, 0.00267132, 0.00267, 0.00267, 10.41292135], [1516699920000, 0.00267, 0.00267132, 0.00267, 0.00267132, 34.47697092], [1516699980000, 0.00267132, 0.00267132, 0.00267005, 0.00267005, 10.41291362], [1516700040000, 0.00267132, 0.00267133, 0.00267005, 0.00267005, 70.87460506], [1516700100000, 0.00267133, 0.00267133, 0.00267005, 0.00267005, 17.53621612], [1516700160000, 0.00267005, 0.00267005, 0.00267005, 0.00267005, 0.82582724], [1516700220000, 0.00267005, 0.00267006, 0.0026625, 0.0026625, 699.74039358], [1516700280000, 0.0026625, 0.0026625, 0.00266226, 0.00266226, 8.36252241], [1516700340000, 0.0026625, 0.0026625, 0.0026625, 0.0026625, 210.96859506], [1516700400000, 0.00267, 0.00267, 0.00266226, 0.00266226, 79.90810195], [1516700460000, 0.00266226, 0.00266226, 0.00266217, 0.00266226, 33.9317996], [1516700520000, 0.00266226, 0.00266226, 0.00266226, 0.00266226, 19.40103488], [1516700580000, 0.00266225, 0.00266226, 0.00266225, 0.00266226, 45.01625564], [1516700640000, 0.00266225, 0.00266225, 0.00266225, 0.00266225, 19.55445408], [1516700700000, 0.00266226, 0.00266226, 0.00266226, 0.00266226, 10.95241426], [1516700760000, 0.00266225, 0.00266226, 0.00266218, 0.00266226, 341.06213161], [1516700820000, 0.0026622, 0.0026622, 0.00266217, 0.00266217, 476.954741], [1516700880000, 0.00266217, 0.00266217, 0.00266217, 0.00266217, 110.33170848], [1516700940000, 0.00266217, 0.0026622, 0.00266217, 0.0026622, 101.61226615], [1516701000000, 0.00266217, 0.0026622, 0.00266215, 0.0026622, 12.8817303], [1516701060000, 0.0026622, 0.0026622, 0.00266215, 0.0026622, 36.88954649], [1516701120000, 0.00266215, 0.0026622, 0.00266215, 0.00266215, 2.31418979], [1516701180000, 0.0026622, 0.0026622, 0.00266215, 0.00266215, 23.06731642], [1516701240000, 0.00266215, 0.0026622, 0.00265646, 0.0026622, 143.41037761], [1516701300000, 0.0026622, 0.0026622, 0.00265646, 0.0026622, 86.92626376], [1516701360000, 0.0026622, 0.0026622, 0.00265646, 0.00266219, 78.01688677], [1516701420000, 0.0026622, 0.00266999, 0.002656, 0.002656, 160.73911453], [1516701480000, 0.00266998, 0.00266999, 0.00266998, 0.00266998, 10.86044987], [1516701540000, 0.00266998, 0.00266998, 0.00265051, 0.00265496, 711.98474914], [1516701600000, 0.00265496, 0.00266998, 0.00265051, 0.00266998, 360.94446447], [1516701660000, 0.00265062, 0.00265062, 0.00265062, 0.00265062, 2.21832351], [1516701720000, 0.00265062, 0.00266997, 0.00265062, 0.00265066, 89.59190404], [1516701780000, 0.00266996, 0.00266996, 0.00265064, 0.00265065, 329.14548932], [1516701840000, 0.00265065, 0.00266995, 0.00265065, 0.00266995, 14.36347122], [1516701900000, 0.00266996, 0.00266996, 0.00266996, 0.00266996, 3.74537446], [1516701960000, 0.0026572, 0.00266993, 0.0026572, 0.00266993, 21.7942624], [1516702020000, 0.00266993, 0.00266993, 0.00266, 0.00266, 43.57429438], [1516702080000, 0.0026572, 0.00266, 0.002651, 0.002651, 32.01974305], [1516702140000, 0.002651, 0.00266, 0.00265067, 0.00266, 138.79146426], [1516702200000, 0.002651, 0.002651, 0.002651, 0.002651, 3.52275169], [1516702260000, 0.00266, 0.00266, 0.002651, 0.002651, 19.4028027], [1516702320000, 0.002654, 0.00266, 0.002654, 0.00266, 276.90912709], [1516702380000, 0.00265999, 0.00266, 0.002654, 0.00266, 206.99122459], [1516702440000, 0.002659, 0.00266, 0.002659, 0.00266, 72.95274625], [1516702500000, 0.00266, 0.00266, 0.00265501, 0.00266, 80.99409218], [1516702560000, 0.00266, 0.00266, 0.00265501, 0.00265501, 32.19131557], [1516702620000, 0.00266, 0.00266, 0.00266, 0.00266, 103.26575348], [1516702680000, 0.00265503, 0.00266, 0.00265503, 0.00265503, 84.10805013], [1516702740000, 0.00265503, 0.00266, 0.00265502, 0.00266, 152.37066861], [1516702800000, 0.00265502, 0.00266, 0.00265502, 0.00265502, 8.2068908], [1516702860000, 0.00265502, 0.00266, 0.00265502, 0.00266, 19.40126869], [1516702920000, 0.0026599, 0.0026599, 0.00265502, 0.00265502, 1.54481479], [1516702980000, 0.0026599, 0.0026599, 0.00265502, 0.00265502, 82.40503495], [1516703040000, 0.00265502, 0.0026599, 0.00265502, 0.0026599, 169.35959929], [1516703100000, 0.0026551, 0.002659, 0.00265502, 0.00265502, 82.87788764], [1516703160000, 0.00265501, 0.00265502, 0.00265501, 0.00265502, 20.83050534], [1516703220000, 0.00265501, 0.00265502, 0.002655, 0.002655, 186.25403279], [1516703280000, 0.002655, 0.002655, 0.002655, 0.002655, 123.82436045], [1516703340000, 0.002655, 0.002655, 0.002655, 0.002655, 0.83050848], [1516703400000, 0.00265502, 0.00265502, 0.002655, 0.002655, 799.51411672], [1516703460000, 0.00265502, 0.00265502, 0.002655, 0.00265502, 25.50311389], [1516703520000, 0.00265502, 0.00265502, 0.00265052, 0.00265052, 372.48351941], [1516703580000, 0.00265052, 0.002654, 0.00265006, 0.00265052, 157.05264542], [1516703700000, 0.00265052, 0.002654, 0.00265006, 0.002654, 259.70968903], [1516703820000, 0.00265007, 0.00265007, 0.00265006, 0.00265006, 93.27392653], [1516703880000, 0.00265006, 0.00265006, 0.00265001, 0.00265001, 399.49120068], [1516703940000, 0.00265, 0.00265399, 0.00265, 0.00265399, 93.62139839], [1516704000000, 0.00265399, 0.00265399, 0.00265001, 0.00265001, 9.76791171], [1516704060000, 0.00265001, 0.00265001, 0.00265001, 0.00265001, 17.15279641], [1516704120000, 0.002653, 0.002653, 0.002653, 0.002653, 18.01419539], [1516704180000, 0.002653, 0.002653, 0.002653, 0.002653, 8.36047318], [1516704240000, 0.00265001, 0.002653, 0.00265001, 0.002653, 47.71156002], [1516704300000, 0.002653, 0.002653, 0.00265001, 0.00265299, 322.55668075], [1516704360000, 0.00265299, 0.002653, 0.00265001, 0.00265001, 280.85153002], [1516704420000, 0.00265, 0.00265001, 0.00265, 0.00265, 530.51169482], [1516704480000, 0.00265, 0.00265, 0.002645, 0.002645, 302.17397306], [1516704540000, 0.002645, 0.002645, 0.00264415, 0.002645, 5.26495847], [1516704600000, 0.002645, 0.002648, 0.002645, 0.00264799, 121.08394843], [1516704660000, 0.002647, 0.002647, 0.002647, 0.002647, 5.17958436], [1516704720000, 0.002647, 0.002648, 0.002647, 0.002648, 346.51462309], [1516704780000, 0.002648, 0.002648, 0.002645, 0.002648, 163.98571195], [1516704840000, 0.002645, 0.002648, 0.002645, 0.002648, 175.15536966], [1516704900000, 0.00264799, 0.002648, 0.00264799, 0.00264799, 83.42858012], [1516704960000, 0.00264799, 0.002648, 0.00264503, 0.002648, 585.91364947], [1516705020000, 0.002648, 0.00265989, 0.002645, 0.002645, 524.09043817], [1516705080000, 0.00265989, 0.00265989, 0.00264511, 0.00265989, 10.03088764], [1516705140000, 0.00265989, 0.00265989, 0.00264516, 0.00264516, 214.2067769], [1516705200000, 0.00265989, 0.00265989, 0.00265989, 0.00265989, 0.73718488], [1516705320000, 0.00265989, 0.00265989, 0.00265989, 0.00265989, 8.03773874], [1516705380000, 0.00264501, 0.00265989, 0.002645, 0.00265989, 15.82623142], [1516705440000, 0.00264503, 0.00265988, 0.00264503, 0.00265988, 61.07219461], [1516705500000, 0.00265988, 0.00265988, 0.002651, 0.002651, 10.43062475], [1516705560000, 0.00265987, 0.00265988, 0.002651, 0.00265988, 15.38638097], [1516705620000, 0.00265988, 0.00265988, 0.0026511, 0.0026511, 146.89949262], [1516705680000, 0.0026511, 0.00265987, 0.0026511, 0.00265987, 79.73228915], [1516705740000, 0.0026511, 0.0026511, 0.0026511, 0.0026511, 2.0], [1516705800000, 0.0026511, 0.00265986, 0.0026511, 0.00265986, 102.37595822], [1516705860000, 0.00265982, 0.00265983, 0.00265111, 0.00265111, 17.97869273], [1516705920000, 0.00265111, 0.0026592, 0.00265111, 0.0026592, 61.42377138], [1516705980000, 0.00265111, 0.00265111, 0.00265111, 0.00265111, 123.1908211], [1516706040000, 0.00265111, 0.0026592, 0.00265111, 0.00265111, 59.73850683], [1516706100000, 0.00265111, 0.00265916, 0.002651, 0.002651, 14.43961606], [1516706160000, 0.00265111, 0.0026592, 0.00265111, 0.0026521, 58.63773263], [1516706220000, 0.0026521, 0.0026592, 0.0026521, 0.0026521, 4.58254478], [1516706280000, 0.0026521, 0.0026521, 0.0026521, 0.0026521, 55.84853975], [1516706340000, 0.0026531, 0.0026531, 0.0026521, 0.0026521, 15.45797987], [1516706400000, 0.0026521, 0.0026521, 0.0026521, 0.0026521, 3.20897249], [1516706460000, 0.0026521, 0.0026521, 0.0026521, 0.0026521, 42.36483984], [1516706520000, 0.0026531, 0.00265909, 0.0026521, 0.0026521, 231.98728633], [1516706580000, 0.0026521, 0.0026591, 0.0026521, 0.0026521, 44.8153098], [1516706640000, 0.0026521, 0.0026521, 0.0026521, 0.0026521, 41.49484209], [1516706700000, 0.0026521, 0.0026521, 0.00264, 0.00264149, 840.18612473], [1516706760000, 0.00264149, 0.0026521, 0.00264149, 0.0026521, 286.14842671], [1516706820000, 0.0026521, 0.00265211, 0.0026521, 0.00265211, 70.35038649], [1516706880000, 0.002653, 0.0026699, 0.002653, 0.00265924, 42.05205758], [1516706940000, 0.00266986, 0.00266986, 0.00265217, 0.00266981, 122.93775603], [1516707000000, 0.0026698, 0.0026698, 0.00265231, 0.00266979, 18.16437353], [1516707060000, 0.00265217, 0.00265217, 0.0026521, 0.0026521, 94.60459564], [1516707120000, 0.0026521, 0.00266489, 0.0026521, 0.0026521, 226.41341202], [1516707180000, 0.0026521, 0.00266297, 0.0026521, 0.0026521, 533.18295025], [1516707240000, 0.0026521, 0.0026521, 0.0026521, 0.0026521, 14.39198662], [1516707300000, 0.0026521, 0.00265916, 0.0026521, 0.00265907, 58.52989465], [1516707360000, 0.0026521, 0.0026521, 0.0026521, 0.0026521, 130.2237031], [1516707420000, 0.0026521, 0.00265214, 0.0026521, 0.0026521, 190.82543738], [1516707480000, 0.0026521, 0.00265214, 0.0026521, 0.0026521, 62.98594673], [1516707540000, 0.0026521, 0.00265214, 0.00264149, 0.00264149, 71.11969405], [1516707600000, 0.00264149, 0.00265214, 0.00264149, 0.00264149, 39.24043666], [1516707660000, 0.00265214, 0.00265214, 0.00264, 0.00264, 874.85608755], [1516707720000, 0.00264, 0.00265213, 0.00264, 0.00265213, 83.94384623], [1516707780000, 0.00265213, 0.00265213, 0.00264, 0.00264001, 166.4924942], [1516707900000, 0.00265213, 0.00265213, 0.00264001, 0.00264001, 15.08221692], [1516707960000, 0.00265213, 0.00266399, 0.00265213, 0.00266399, 233.56689437], [1516708020000, 0.00264002, 0.00266381, 0.00264, 0.00264, 921.09436674], [1516708080000, 0.00264, 0.00264, 0.00263287, 0.00263287, 794.50576012], [1516708140000, 0.00263287, 0.00263287, 0.00263001, 0.00263001, 202.64155969], [1516708200000, 0.002631, 0.002635, 0.00263, 0.002635, 419.06409812], [1516708260000, 0.00263, 0.00263501, 0.00263, 0.00263501, 91.8722008], [1516708320000, 0.00263501, 0.00263501, 0.00263, 0.00263, 424.77513933], [1516708380000, 0.002635, 0.002635, 0.00262975, 0.00263, 347.53046087], [1516708440000, 0.00262999, 0.00262999, 0.00262954, 0.00262975, 1093.26687923], [1516708500000, 0.00262975, 0.00263, 0.0026292, 0.0026292, 715.06539447], [1516708560000, 0.0026292, 0.0026292, 0.002624, 0.002624, 288.44512198], [1516708620000, 0.0026285, 0.0026292, 0.002624, 0.0026292, 214.78275299], [1516708680000, 0.0026292, 0.00264, 0.00262499, 0.00262499, 692.46666241], [1516708740000, 0.00262499, 0.00263999, 0.00262499, 0.00263, 232.82565321], [1516708800000, 0.00263, 0.00263, 0.00262501, 0.00263, 225.10323032], [1516708860000, 0.00263, 0.00263998, 0.00263, 0.00263998, 91.26571757], [1516708920000, 0.00263999, 0.00263999, 0.00263, 0.00263, 125.62611578], [1516708980000, 0.00263997, 0.00263997, 0.00261055, 0.00263959, 1486.46454326], [1516709040000, 0.00263001, 0.0026395, 0.00263001, 0.00263001, 32.64001535], [1516709100000, 0.00263001, 0.00263001, 0.00262999, 0.00262999, 249.56539494], [1516709160000, 0.00263, 0.00263, 0.00262999, 0.00262999, 763.95475151], [1516709220000, 0.0026299, 0.0026299, 0.0026299, 0.0026299, 350.82504369], [1516709280000, 0.00262002, 0.00262979, 0.00262001, 0.00262979, 18.32575482], [1516709340000, 0.00262979, 0.00262979, 0.00262002, 0.00262002, 28.41858149], [1516709400000, 0.00262978, 0.00262978, 0.00262002, 0.00262002, 5.85696945], [1516709460000, 0.00262002, 0.00262003, 0.00262002, 0.00262003, 59.0163995], [1516709520000, 0.00262004, 0.002629, 0.00262003, 0.00262899, 129.67103196], [1516709580000, 0.00262899, 0.00262899, 0.0026289, 0.0026289, 47.22992417], [1516709640000, 0.0026289, 0.002629, 0.0026289, 0.002629, 601.28962957], [1516709700000, 0.002629, 0.002629, 0.00262224, 0.002629, 249.94435505], [1516709760000, 0.002629, 0.002629, 0.00262225, 0.002629, 85.1428706], [1516709820000, 0.00262899, 0.00262899, 0.00262226, 0.00262899, 878.3966072], [1516709880000, 0.002629, 0.002629, 0.00262899, 0.002629, 119.31144359], [1516709940000, 0.00262899, 0.002629, 0.00262899, 0.00262899, 299.33777073], [1516710000000, 0.00262899, 0.002629, 0.00262899, 0.00262899, 334.71641966], [1516710060000, 0.00262899, 0.00262899, 0.00262899, 0.00262899, 549.49894977], [1516710120000, 0.00262899, 0.00262899, 0.00262, 0.00262, 428.23707042], [1516710180000, 0.00262, 0.00262899, 0.00262, 0.00262, 248.77093981], [1516710240000, 0.00262, 0.00262899, 0.002616, 0.00262899, 822.0], [1516710300000, 0.00262899, 0.002629, 0.00261054, 0.00261054, 149.3688431], [1516710360000, 0.002612, 0.0026281, 0.00261, 0.00262424, 1213.87902473], [1516710420000, 0.00262424, 0.002629, 0.00261, 0.00261822, 341.21513924], [1516710480000, 0.00261001, 0.00261822, 0.00261, 0.00261821, 736.12800867], [1516710540000, 0.00261822, 0.00261822, 0.00261, 0.00261822, 406.5240707], [1516710600000, 0.00261822, 0.002629, 0.00261821, 0.002629, 739.1192801], [1516710660000, 0.00262898, 0.00262898, 0.0026289, 0.00262898, 751.13872245], [1516710720000, 0.00262898, 0.00262898, 0.00262896, 0.00262896, 147.89002348], [1516710780000, 0.002616, 0.00262898, 0.00261, 0.00262898, 919.85596319], [1516710840000, 0.00262, 0.00262, 0.0026143, 0.0026143, 281.63955635], [1516710900000, 0.00261999, 0.00262, 0.00261999, 0.00262, 190.90371422], [1516710960000, 0.00261999, 0.00262, 0.00261999, 0.00262, 23.60961889], [1516711020000, 0.00261999, 0.00262, 0.00261999, 0.00262, 69.89323088], [1516711080000, 0.00262, 0.00262, 0.0026199, 0.0026199, 203.31006913], [1516711140000, 0.0026199, 0.0026199, 0.0026199, 0.0026199, 91.36332067], [1516711200000, 0.00261432, 0.0026199, 0.00261432, 0.0026199, 254.99938325], [1516711260000, 0.00261432, 0.002619, 0.0026, 0.00261433, 2318.65536373], [1516711320000, 0.00261434, 0.00261434, 0.00261433, 0.00261433, 28.33691075], [1516711380000, 0.00261433, 0.00261434, 0.00260003, 0.00260003, 1131.1625411], [1516711440000, 0.0026143, 0.0026143, 0.00260102, 0.00261429, 74.03654111], [1516711500000, 0.00261429, 0.002615, 0.0026, 0.0026, 1314.15991715], [1516711560000, 0.002615, 0.002615, 0.0026, 0.002615, 1315.40305473], [1516711620000, 0.00261299, 0.002615, 0.00260454, 0.002615, 54.81902136], [1516711680000, 0.002615, 0.002615, 0.002615, 0.002615, 9.04874602], [1516711740000, 0.00260456, 0.002615, 0.00260456, 0.002615, 8.20562468], [1516711800000, 0.002615, 0.002615, 0.002615, 0.002615, 1088.00571165], [1516711860000, 0.002615, 0.002615, 0.002615, 0.002615, 24.13894308], [1516711980000, 0.002615, 0.002615, 0.002615, 0.002615, 4.21823093], [1516712040000, 0.00261118, 0.00261118, 0.00261118, 0.00261118, 0.37390492], [1516712100000, 0.00261118, 0.002614, 0.00260476, 0.00260476, 13.31436595], [1516712160000, 0.00260476, 0.002614, 0.00260475, 0.00260475, 193.34087189], [1516712220000, 0.002614, 0.002614, 0.002614, 0.002614, 16.07890276], [1516712280000, 0.00260476, 0.002614, 0.00260475, 0.0026139, 315.36095308], [1516712400000, 0.00261389, 0.0026139, 0.00260471, 0.0026139, 56.2619496], [1516712460000, 0.0026139, 0.0026139, 0.00261389, 0.00261389, 117.47028937], [1516712520000, 0.00261389, 0.00261389, 0.00260479, 0.00261389, 27.82155809], [1516712580000, 0.00261389, 0.0026139, 0.002605, 0.0026139, 300.24692622], [1516712640000, 0.0026139, 0.0026139, 0.00260487, 0.0026139, 116.74153234], [1516712700000, 0.0026139, 0.0026139, 0.0026139, 0.0026139, 328.79338769], [1516712760000, 0.0026139, 0.0026199, 0.00261389, 0.0026199, 4036.58755667], [1516712820000, 0.0026199, 0.0026199, 0.00261413, 0.0026199, 3728.20131131], [1516712880000, 0.0026199, 0.00262896, 0.0026198, 0.00262896, 156.29187739], [1516712940000, 0.0026289, 0.00263809, 0.0026151, 0.0026151, 78.41315023], [1516713000000, 0.0026381, 0.00264, 0.00261527, 0.00264, 42.96112237], [1516713060000, 0.00264, 0.002647, 0.00261633, 0.002647, 49.45632208], [1516713120000, 0.00262947, 0.00262951, 0.00262, 0.0026295, 625.92793372], [1516713180000, 0.00264699, 0.002647, 0.0026295, 0.00264698, 104.64869679], [1516713240000, 0.00264698, 0.00264698, 0.00264698, 0.00264698, 7.9089755], [1516713300000, 0.00262084, 0.00262084, 0.00262084, 0.00262084, 45.0], [1516713360000, 0.00262116, 0.00262121, 0.00262116, 0.0026212, 118.95728042], [1516713420000, 0.0026212, 0.002644, 0.00261528, 0.00261528, 733.84047227], [1516713480000, 0.00261529, 0.00263529, 0.00261528, 0.00263525, 224.65642191], [1516713540000, 0.00261727, 0.00262001, 0.00261727, 0.00262001, 166.35344481], [1516713600000, 0.00263, 0.00263, 0.00263, 0.00263, 18.95644916], [1516713720000, 0.00262983, 0.00263, 0.0026177, 0.0026297, 1234.50644596], [1516713780000, 0.0026177, 0.0026177, 0.00261761, 0.0026177, 654.76152156], [1516713840000, 0.0026177, 0.0026177, 0.0026177, 0.0026177, 249.28551948], [1516713900000, 0.0026177, 0.0026177, 0.00261763, 0.0026177, 42.75017175], [1516713960000, 0.0026177, 0.0026177, 0.0026177, 0.0026177, 55.04852754], [1516714020000, 0.00261764, 0.0026177, 0.00260961, 0.00260961, 1077.31941336], [1516714080000, 0.00260963, 0.0026177, 0.00260963, 0.0026177, 358.8755759], [1516714140000, 0.0026177, 0.0026177, 0.0026177, 0.0026177, 1037.45428635], [1516714200000, 0.0026177, 0.00263, 0.00261, 0.00261, 3231.10356755], [1516714260000, 0.00261, 0.00261, 0.00261, 0.00261, 281.48596895], [1516714320000, 0.0026194, 0.0026194, 0.0026194, 0.0026194, 1.58238865], [1516714380000, 0.0026194, 0.00262547, 0.0026194, 0.00262547, 5.25156894], [1516714500000, 0.00262547, 0.00262547, 0.00261942, 0.00261942, 41.23735817], [1516714560000, 0.00262547, 0.00262547, 0.00261942, 0.00261942, 56.46669392], [1516714620000, 0.00261942, 0.00261942, 0.00261, 0.00261, 1510.55804995], [1516714680000, 0.00261942, 0.00261942, 0.00261941, 0.00261942, 27.73248655], [1516714740000, 0.00261002, 0.00261942, 0.00261, 0.00261, 224.55150202], [1516714800000, 0.00261, 0.00261, 0.00260963, 0.00261, 536.35310203], [1516714860000, 0.00261, 0.00261, 0.00260496, 0.00261, 683.57524527], [1516714920000, 0.00261, 0.00261, 0.00260965, 0.00261, 208.63436943], [1516714980000, 0.00261, 0.00261, 0.00261, 0.00261, 105.55979927], [1516715040000, 0.00261, 0.00261, 0.00260969, 0.00260969, 29.42005117], [1516715100000, 0.00260969, 0.00261, 0.00260969, 0.00261, 29.78806117], [1516715160000, 0.00261, 0.00261, 0.00260969, 0.00261, 76.0250986], [1516715220000, 0.00261, 0.00261, 0.00261, 0.00261, 349.22071525], [1516715280000, 0.00261001, 0.0026194, 0.00261001, 0.0026194, 5.73213538], [1516715400000, 0.002618, 0.002618, 0.002618, 0.002618, 7.6394194], [1516715460000, 0.00261001, 0.00261001, 0.00261, 0.00261, 240.60091275], [1516715520000, 0.002618, 0.002618, 0.00261001, 0.00261001, 786.77789213], [1516715580000, 0.002618, 0.002618, 0.002618, 0.002618, 3.957124], [1516715640000, 0.002618, 0.002618, 0.00261002, 0.002618, 43.56647305], [1516715700000, 0.002618, 0.0026194, 0.00261013, 0.00261013, 295.9564384], [1516715760000, 0.0026194, 0.0026194, 0.00261196, 0.0026194, 73.70355776], [1516715820000, 0.0026194, 0.0026194, 0.0026194, 0.0026194, 10.63030672], [1516715880000, 0.0026194, 0.0026194, 0.00261473, 0.00261473, 36.06628132], [1516715940000, 0.00262859, 0.00262859, 0.002615, 0.002615, 59.35683648], [1516716000000, 0.00262859, 0.00263, 0.00262859, 0.00263, 156.61326457], [1516716060000, 0.00263, 0.00263, 0.00262226, 0.00263, 23.50266029], [1516716120000, 0.00262226, 0.00263, 0.00262226, 0.00262226, 13.22986502], [1516716240000, 0.00262226, 0.00262226, 0.00262226, 0.00262226, 86.2019], [1516716300000, 0.00262998, 0.00263, 0.00262612, 0.00262612, 18.07758247], [1516716360000, 0.00262612, 0.00263, 0.00262612, 0.00263, 102.19591432], [1516716420000, 0.00262612, 0.00262612, 0.00262612, 0.00262612, 6.291709], [1516716480000, 0.00262612, 0.00262612, 0.00262226, 0.00262226, 153.34134659], [1516716540000, 0.00263, 0.00263, 0.00262226, 0.00262226, 15.90168518], [1516716600000, 0.00262226, 0.00263, 0.00262226, 0.00262226, 34.76325644], [1516716660000, 0.00262226, 0.00263, 0.00262226, 0.00262226, 16.17107692], [1516716720000, 0.00262226, 0.00262999, 0.00262226, 0.00262999, 4.22307041], [1516716780000, 0.00262999, 0.00262999, 0.00262226, 0.00262226, 38.19973498], [1516716840000, 0.00262226, 0.00262226, 0.00262226, 0.00262226, 3.54510472], [1516716900000, 0.00262232, 0.00262462, 0.00262232, 0.00262462, 115.70377583], [1516716960000, 0.00262462, 0.00263, 0.00262462, 0.00263, 125.36428286], [1516717020000, 0.00262462, 0.00262462, 0.00262462, 0.00262462, 60.6114604], [1516717080000, 0.00262462, 0.00262462, 0.00262462, 0.00262462, 0.84012162], [1516717140000, 0.00262462, 0.00262462, 0.00262462, 0.00262462, 116.27366076], [1516717200000, 0.00263, 0.00263, 0.00262226, 0.00262226, 2298.34829992], [1516717260000, 0.002622, 0.002622, 0.0026152, 0.002622, 234.61852308], [1516717320000, 0.002622, 0.002622, 0.002622, 0.002622, 98.7937125], [1516717440000, 0.00261522, 0.00262197, 0.0026111, 0.0026111, 547.07524681], [1516717500000, 0.00262197, 0.00262197, 0.00261, 0.00262197, 841.34671322], [1516717560000, 0.00262197, 0.00262197, 0.0026067, 0.00262165, 210.0], [1516717620000, 0.00261166, 0.00262165, 0.0026, 0.002611, 5769.8325876], [1516717680000, 0.002611, 0.00262163, 0.002611, 0.0026215, 227.6215419], [1516717740000, 0.00262142, 0.0026215, 0.00262142, 0.0026215, 17.06557656], [1516717800000, 0.002609, 0.00262163, 0.002609, 0.00262154, 182.67046584], [1516717920000, 0.00262154, 0.00262154, 0.0026101, 0.0026101, 14.48274196], [1516717980000, 0.00262153, 0.00262153, 0.00262144, 0.00262152, 116.19238904], [1516718040000, 0.00262152, 0.00262153, 0.00261025, 0.00261026, 179.40481895], [1516718100000, 0.00262153, 0.00262154, 0.0026105, 0.00262154, 192.79269266], [1516718160000, 0.00262154, 0.00262162, 0.002621, 0.00262162, 101.64776297], [1516718220000, 0.00261507, 0.00262161, 0.00261507, 0.00262161, 108.72176355], [1516718280000, 0.00262161, 0.00262161, 0.00261202, 0.00261202, 449.24901533], [1516718340000, 0.00262161, 0.00262161, 0.00260003, 0.00262161, 1062.06549188], [1516718400000, 0.00261468, 0.00262162, 0.00261468, 0.00262162, 87.34699699], [1516718460000, 0.00262162, 0.00262162, 0.00262162, 0.00262162, 10.96780095], [1516718520000, 0.00262162, 0.00262162, 0.00262162, 0.00262162, 9.20331697], [1516718580000, 0.00262161, 0.00262162, 0.00262161, 0.00262162, 18.16060243], [1516718640000, 0.00262161, 0.00262162, 0.00262161, 0.00262162, 80.65309133], [1516718700000, 0.00262162, 0.00262162, 0.00262161, 0.00262161, 31.17203692], [1516718760000, 0.00262162, 0.00262162, 0.00262162, 0.00262162, 39.92800764], [1516718820000, 0.00262161, 0.00262162, 0.00262161, 0.00262161, 11.76811636], [1516718880000, 0.00262162, 0.00262162, 0.00262161, 0.00262162, 1189.52743705], [1516718940000, 0.00262162, 0.00262165, 0.00261105, 0.00261105, 335.4998042], [1516719000000, 0.00262158, 0.00262158, 0.00260134, 0.00260134, 139.19716437], [1516719060000, 0.002615, 0.00261555, 0.00260136, 0.00261555, 46.6890328], [1516719120000, 0.002615, 0.00261506, 0.002615, 0.00261506, 5.24320257], [1516719180000, 0.00261554, 0.00261555, 0.00261554, 0.00261555, 694.87969269], [1516719240000, 0.00261555, 0.00261555, 0.00261554, 0.00261554, 716.67635484], [1516719300000, 0.00261505, 0.00262162, 0.00260134, 0.00262162, 919.92632053], [1516719360000, 0.00262161, 0.00262162, 0.00262161, 0.00262162, 103.43983314], [1516719420000, 0.00262162, 0.00262162, 0.00262162, 0.00262162, 37.938], [1516719480000, 0.00262161, 0.00262161, 0.0026215, 0.00262161, 28.7244056], [1516719540000, 0.0026215, 0.00262161, 0.0026215, 0.00262161, 6.2682501], [1516719600000, 0.00262161, 0.00262161, 0.00262161, 0.00262161, 740.32908557], [1516719660000, 0.0026215, 0.00262161, 0.0026215, 0.00262161, 287.42168975], [1516719720000, 0.0026216, 0.00262162, 0.0026216, 0.00262162, 330.19340422], [1516719780000, 0.00262162, 0.00262226, 0.00262161, 0.00262226, 640.08441257], [1516719840000, 0.0026228, 0.00264697, 0.0026228, 0.00262292, 309.15594308], [1516719900000, 0.00262516, 0.00264691, 0.00262516, 0.0026469, 136.61951747], [1516719960000, 0.00264689, 0.00264689, 0.00264679, 0.0026468, 10.19661794], [1516720020000, 0.00264679, 0.00264679, 0.00262718, 0.00262718, 27.87608528], [1516720080000, 0.00264678, 0.00264678, 0.00264676, 0.00264676, 6.0915753], [1516720140000, 0.00264674, 0.00264674, 0.00264673, 0.00264673, 5.15929979], [1516720200000, 0.00262851, 0.00262907, 0.00262851, 0.00262907, 219.88658], [1516720260000, 0.0026291, 0.00264674, 0.0026291, 0.00264674, 83.19034668], [1516720320000, 0.00264, 0.00264679, 0.00264, 0.00264679, 1000.0], [1516720380000, 0.00263005, 0.0026354, 0.00262907, 0.00262907, 365.76795708], [1516720440000, 0.00263709, 0.00264675, 0.00262502, 0.00262502, 812.61328065], [1516720500000, 0.00264598, 0.00264598, 0.00262503, 0.00263815, 211.83585545], [1516720560000, 0.00264581, 0.00264581, 0.00262892, 0.00263815, 36.20126455], [1516720620000, 0.00263815, 0.00264099, 0.00262705, 0.00264099, 183.70595719], [1516720680000, 0.00262892, 0.00264089, 0.00262605, 0.00262605, 107.22205046], [1516720740000, 0.00262605, 0.00264586, 0.00262512, 0.00264064, 241.4564895], [1516720800000, 0.00262606, 0.00264585, 0.00262606, 0.00264585, 39.75662621], [1516720860000, 0.00264582, 0.00264583, 0.00262623, 0.00264404, 107.82300687], [1516720920000, 0.00264404, 0.00264404, 0.002641, 0.00264101, 70.36655749], [1516720980000, 0.00264101, 0.00264101, 0.002641, 0.002641, 89.21191453], [1516721040000, 0.002641, 0.00264299, 0.002641, 0.00264299, 90.19085807], [1516721100000, 0.00264299, 0.00264598, 0.002641, 0.00264598, 59.77778391], [1516721160000, 0.00264598, 0.00264598, 0.00264299, 0.00264597, 19.67327464], [1516721220000, 0.002641, 0.00265, 0.002641, 0.00264698, 748.83769268], [1516721280000, 0.00264698, 0.00264698, 0.00264101, 0.00264101, 6.90745393], [1516721340000, 0.00264101, 0.00264698, 0.00264101, 0.00264698, 352.15562477], [1516721400000, 0.002641, 0.00264598, 0.002641, 0.00264598, 75.64275379], [1516721460000, 0.00264598, 0.00264698, 0.00263, 0.00264698, 422.7952284], [1516721520000, 0.00263009, 0.00264698, 0.00263009, 0.00264698, 5.24193811], [1516721580000, 0.00264696, 0.00264696, 0.00264696, 0.00264696, 28.22955642], [1516721640000, 0.00264697, 0.00264698, 0.00263817, 0.002646, 98.01975531], [1516721700000, 0.00264599, 0.00264599, 0.00263819, 0.00263821, 38.65299624], [1516721760000, 0.00264599, 0.002646, 0.00264599, 0.002646, 46.6366223], [1516721820000, 0.002646, 0.002646, 0.00264599, 0.00264599, 22.74229822], [1516721880000, 0.00264599, 0.00264599, 0.00263825, 0.00264599, 313.62882614], [1516721940000, 0.00263824, 0.00264599, 0.00263823, 0.00264599, 429.43983228], [1516722000000, 0.00263823, 0.00264599, 0.00263823, 0.00264599, 32.89860754], [1516722060000, 0.00263823, 0.0026385, 0.00263823, 0.00263823, 22.92116361], [1516722120000, 0.0026385, 0.00264599, 0.00263823, 0.00263823, 33.07126491], [1516722180000, 0.00264598, 0.00264598, 0.00263817, 0.00263817, 23.53453529], [1516722240000, 0.00263817, 0.00263817, 0.00263817, 0.00263817, 23.41058629], [1516722300000, 0.00263817, 0.0026459, 0.00263808, 0.00263823, 351.93347826], [1516722360000, 0.00263823, 0.00264586, 0.00263823, 0.00263823, 296.48195839], [1516722420000, 0.00263002, 0.00263002, 0.00263, 0.00263002, 29.667746], [1516722480000, 0.00263002, 0.00263002, 0.00263002, 0.00263002, 2.41455784], [1516722540000, 0.00263823, 0.00263823, 0.00263823, 0.00263823, 51.52101281], [1516722600000, 0.00263823, 0.00263823, 0.002631, 0.002631, 45.20891918], [1516722660000, 0.002631, 0.00263823, 0.002631, 0.0026311, 89.68819534], [1516722720000, 0.0026311, 0.0026311, 0.0026311, 0.0026311, 0.9], [1516722780000, 0.00263823, 0.00263823, 0.00263823, 0.00263823, 52.53738529], [1516722840000, 0.00263823, 0.00264599, 0.00263823, 0.00264599, 244.90690175], [1516722900000, 0.002646, 0.002646, 0.0026311, 0.00264599, 563.35936365], [1516722960000, 0.002646, 0.002646, 0.00264596, 0.002646, 605.94613823], [1516723020000, 0.00264599, 0.00265, 0.00264599, 0.00265, 867.57567981], [1516723080000, 0.0026462, 0.00265, 0.0026462, 0.00265, 36.43448327], [1516723140000, 0.00264993, 0.00265324, 0.00264993, 0.00265258, 68.85716292], [1516723200000, 0.00265324, 0.00265487, 0.00265258, 0.00265487, 255.07887574], [1516723260000, 0.00265487, 0.00265487, 0.00265487, 0.00265487, 60.94437493], [1516723320000, 0.00265487, 0.00265584, 0.00265487, 0.00265584, 361.26037651], [1516723380000, 0.00265502, 0.00265706, 0.002655, 0.00265706, 525.830065], [1516723440000, 0.00265706, 0.00266, 0.00265706, 0.00266, 635.01976298], [1516723500000, 0.00265706, 0.00266139, 0.00265706, 0.00266139, 67.30910262], [1516723560000, 0.00266139, 0.00266582, 0.00266139, 0.00266139, 71.79725477], [1516723620000, 0.00265707, 0.00266139, 0.00265707, 0.00266139, 12.34954505], [1516723680000, 0.00266139, 0.00266582, 0.00266139, 0.00266139, 26.27584889], [1516723740000, 0.002662, 0.00266584, 0.002662, 0.00266584, 37.1445798], [1516723800000, 0.00266584, 0.0026679, 0.00266584, 0.0026679, 37.81848919], [1516723860000, 0.00266599, 0.0026679, 0.00265706, 0.00266783, 906.35724614], [1516723920000, 0.00265706, 0.00266789, 0.00265706, 0.0026678, 289.59045869], [1516723980000, 0.00266781, 0.00266781, 0.00266, 0.0026678, 20.81790195], [1516724040000, 0.00266181, 0.0026678, 0.00266, 0.0026678, 17.05399231], [1516724100000, 0.0026678, 0.00266781, 0.00266, 0.002665, 446.76459654], [1516724160000, 0.002665, 0.0026678, 0.00266001, 0.00266001, 113.13968703], [1516724220000, 0.002662, 0.00266766, 0.00266002, 0.00266002, 129.09944684], [1516724280000, 0.00266002, 0.00266757, 0.00266002, 0.00266003, 184.87651645], [1516724340000, 0.00266002, 0.00266747, 0.00266002, 0.00266002, 1122.24458639], [1516724400000, 0.00266002, 0.00266746, 0.00266, 0.00266, 800.52482988], [1516724460000, 0.00266, 0.00266, 0.00266, 0.00266, 295.61873244], [1516724520000, 0.00266, 0.00266745, 0.00266, 0.00266, 826.37161955], [1516724580000, 0.00266, 0.00266744, 0.002655, 0.002655, 794.48149763], [1516724640000, 0.002655, 0.00265999, 0.00265001, 0.00265001, 80.94934373], [1516724700000, 0.00265003, 0.00265398, 0.00265002, 0.00265002, 1.58207077], [1516724760000, 0.00265004, 0.00265004, 0.00263745, 0.00263745, 2203.37382938], [1516724820000, 0.00263675, 0.00264999, 0.00263, 0.00263, 179.4777805], [1516724880000, 0.00263745, 0.00263745, 0.00263745, 0.00263745, 6.370413], [1516724940000, 0.00263002, 0.00263002, 0.00263002, 0.00263002, 11.40680073], [1516725000000, 0.00263002, 0.00264898, 0.00263002, 0.00264898, 21.4074928], [1516725060000, 0.00264885, 0.00264885, 0.00263001, 0.00263001, 80.98936831], [1516725120000, 0.00263744, 0.00263744, 0.00263008, 0.0026374, 146.34060506], [1516725180000, 0.00263001, 0.00263744, 0.00263001, 0.00263001, 893.65139489], [1516725240000, 0.00263744, 0.00264389, 0.00263001, 0.00264389, 83.14707421], [1516725300000, 0.00263744, 0.00264387, 0.00263002, 0.0026438, 149.86582523], [1516725360000, 0.00264379, 0.00264379, 0.00263009, 0.00263009, 66.39587802], [1516725420000, 0.00264369, 0.00264369, 0.00263001, 0.00263021, 349.6280073], [1516725480000, 0.00263021, 0.00264289, 0.00263001, 0.00264289, 211.24473699], [1516725540000, 0.00264289, 0.00264289, 0.00263021, 0.00263021, 42.55943491], [1516725600000, 0.00264288, 0.0026439, 0.00263023, 0.0026303, 330.03094358], [1516725660000, 0.0026303, 0.00264286, 0.00263001, 0.00263003, 431.69936864], [1516725720000, 0.00263003, 0.00264278, 0.00263001, 0.00263999, 990.44050514], [1516725780000, 0.00263001, 0.00264199, 0.00263001, 0.00263001, 721.35934789], [1516725840000, 0.00263001, 0.00263001, 0.00262512, 0.00262513, 740.77128155], [1516725900000, 0.00262513, 0.0026387, 0.00262, 0.00263075, 526.72497886], [1516725960000, 0.00263075, 0.00263098, 0.00262, 0.00262004, 136.92278419], [1516726020000, 0.00262007, 0.002625, 0.00262, 0.00262, 113.99279231], [1516726080000, 0.00262005, 0.002625, 0.00262, 0.002625, 465.74463884], [1516726140000, 0.002625, 0.002625, 0.00262012, 0.002625, 836.07756049], [1516726200000, 0.00264108, 0.00264108, 0.0026255, 0.0026255, 5.35627481], [1516726260000, 0.002626, 0.002626, 0.002626, 0.002626, 7.28455869], [1516726320000, 0.00262601, 0.00264101, 0.002626, 0.00262601, 167.58105645], [1516726380000, 0.00262602, 0.00262602, 0.00262601, 0.00262601, 56.18065577], [1516726440000, 0.00262601, 0.00262602, 0.00262601, 0.00262601, 121.02283006], [1516726500000, 0.00262601, 0.00262602, 0.00262601, 0.00262601, 200.57928339], [1516726560000, 0.00262601, 0.00263499, 0.00261151, 0.00261151, 1417.93783976], [1516726620000, 0.002615, 0.002615, 0.00261103, 0.002615, 179.73985216], [1516726680000, 0.00261105, 0.00263197, 0.00261105, 0.002615, 140.69146477], [1516726740000, 0.002615, 0.00263197, 0.002615, 0.00263197, 72.33573884], [1516726800000, 0.00263197, 0.00263198, 0.0026151, 0.00263198, 225.77387302], [1516726860000, 0.0026153, 0.00263199, 0.0026153, 0.00263199, 111.34487495], [1516726920000, 0.00262, 0.00263199, 0.00262, 0.00262, 60.58940913], [1516726980000, 0.00262005, 0.00262006, 0.00262005, 0.00262006, 10.67482667], [1516727040000, 0.00263, 0.00263, 0.00262006, 0.00262006, 31.57244292], [1516727100000, 0.00262006, 0.00262008, 0.00262006, 0.00262008, 558.17808914], [1516727160000, 0.00262008, 0.00263, 0.00262008, 0.00263, 50.65096429], [1516727220000, 0.0026209, 0.00263004, 0.00262008, 0.0026209, 314.94730522], [1516727280000, 0.0026209, 0.00263005, 0.0026209, 0.0026209, 232.30393101], [1516727340000, 0.0026209, 0.00264059, 0.0026209, 0.00264059, 152.88442341], [1516727400000, 0.00263998, 0.00263998, 0.00262191, 0.00262191, 14.20305889], [1516727460000, 0.00262191, 0.0026398, 0.002621, 0.00262845, 1632.35117439], [1516727520000, 0.00263956, 0.00263956, 0.002621, 0.002621, 75.99955486], [1516727580000, 0.0026211, 0.0026211, 0.0026209, 0.0026209, 272.63169137], [1516727640000, 0.00262008, 0.002621, 0.002616, 0.002621, 1768.17034129], [1516727700000, 0.00262069, 0.002621, 0.00262069, 0.002621, 86.05096016], [1516727760000, 0.00262069, 0.0026207, 0.00262069, 0.0026207, 938.69728442], [1516727820000, 0.00262071, 0.002621, 0.00262069, 0.002621, 301.49214907], [1516727880000, 0.002621, 0.002621, 0.00262069, 0.00262069, 883.87635894], [1516727940000, 0.00262069, 0.00262069, 0.00262069, 0.00262069, 530.84822537], [1516728000000, 0.00262069, 0.002621, 0.00262069, 0.00262099, 998.04703431], [1516728060000, 0.00262069, 0.002621, 0.00262069, 0.002621, 869.92297476], [1516728120000, 0.002621, 0.00263786, 0.002621, 0.002621, 510.56970943], [1516728180000, 0.002621, 0.002621, 0.002616, 0.002616, 575.46270575], [1516728240000, 0.002621, 0.00263107, 0.002616, 0.00261601, 106.17214207], [1516728300000, 0.00261605, 0.0026309, 0.00261601, 0.00261601, 65.57786462], [1516728360000, 0.00261601, 0.00261602, 0.00261601, 0.00261602, 8.5218022], [1516728420000, 0.00261602, 0.00263083, 0.00261602, 0.00263082, 85.92610787], [1516728480000, 0.00263082, 0.00263083, 0.002617, 0.0026306, 155.27193281], [1516728540000, 0.0026306, 0.00263082, 0.00261601, 0.00261601, 267.95261477], [1516728600000, 0.00261601, 0.00263081, 0.00261601, 0.00261601, 27.27124424], [1516728660000, 0.00263077, 0.00263077, 0.00261501, 0.00261501, 1347.84211116], [1516728720000, 0.00261501, 0.0026162, 0.00261003, 0.00261501, 680.95331788], [1516728780000, 0.00261501, 0.0026151, 0.00261501, 0.0026151, 212.03682592], [1516728840000, 0.00261511, 0.00261511, 0.0026151, 0.0026151, 163.43454339], [1516728900000, 0.00261511, 0.00262758, 0.0026151, 0.00262758, 226.20019752], [1516728960000, 0.00262758, 0.00262758, 0.0026151, 0.0026151, 68.42183547], [1516729080000, 0.00261514, 0.00261514, 0.00261514, 0.00261514, 11.50961538], [1516729140000, 0.00261601, 0.00261602, 0.00261601, 0.00261602, 9.32700258], [1516729200000, 0.00261703, 0.00263, 0.00261703, 0.00262, 404.15200603], [1516729260000, 0.00262997, 0.00262997, 0.00262, 0.0026299, 183.6], [1516729320000, 0.00262736, 0.00262899, 0.00262005, 0.00262005, 151.93639237], [1516729380000, 0.00262899, 0.00262899, 0.00262005, 0.00262005, 11.53537572], [1516729440000, 0.00262005, 0.00262899, 0.00262005, 0.00262005, 34.7412887], [1516729500000, 0.002624, 0.002624, 0.00262005, 0.00262005, 23.68904677], [1516729560000, 0.00262005, 0.00262005, 0.00262, 0.00262005, 10.98500804], [1516729620000, 0.002624, 0.002624, 0.00261775, 0.00262399, 151.55735066], [1516729680000, 0.002622, 0.002622, 0.00261775, 0.00261776, 165.1818865], [1516729740000, 0.00261776, 0.00261776, 0.00261775, 0.00261775, 285.22740199], [1516729800000, 0.00261776, 0.00262099, 0.0026055, 0.0026055, 671.41701959], [1516729860000, 0.00262099, 0.00262099, 0.00260551, 0.00260551, 7.2308889], [1516729920000, 0.00260551, 0.00260551, 0.00260551, 0.00260551, 2.71860196], [1516729980000, 0.00262099, 0.00262099, 0.00262099, 0.00262099, 1.21786803], [1516730040000, 0.00262089, 0.002621, 0.00260562, 0.00260562, 21.36595052], [1516730100000, 0.00262099, 0.00262099, 0.00260563, 0.00260563, 20.76306753], [1516730160000, 0.00262089, 0.00262089, 0.00262088, 0.00262088, 2.12088673], [1516730220000, 0.00262088, 0.00262088, 0.0026045, 0.0026045, 190.9079145], [1516730280000, 0.00260563, 0.00262, 0.00260563, 0.00262, 13.40604779], [1516730340000, 0.00262, 0.00262, 0.00261, 0.00261, 12.34910951], [1516730400000, 0.00261501, 0.00261501, 0.00261501, 0.00261501, 23.7048743], [1516730460000, 0.00261501, 0.00261511, 0.00261501, 0.00261501, 37.20629452], [1516730520000, 0.00261501, 0.00261501, 0.00261, 0.00261, 24.990499], [1516730580000, 0.00261, 0.00261, 0.002609, 0.00261, 78.90268264], [1516730640000, 0.00260999, 0.00261, 0.00258419, 0.00261, 5194.89383426], [1516730700000, 0.00260992, 0.00261998, 0.00260362, 0.00261998, 511.48577441], [1516730760000, 0.00261998, 0.00261998, 0.00261001, 0.00261011, 38.13597877], [1516730820000, 0.00261998, 0.002622, 0.00261998, 0.002622, 1309.75742007], [1516730880000, 0.002624, 0.002646, 0.002624, 0.002646, 775.0888167], [1516730940000, 0.002646, 0.002646, 0.00262504, 0.00262577, 156.87874735], [1516731000000, 0.00264625, 0.00264625, 0.00262584, 0.00264625, 338.89961983], [1516731060000, 0.00264625, 0.00264625, 0.00264625, 0.00264625, 248.35223508], [1516731120000, 0.00264625, 0.00265, 0.00263003, 0.00265, 1779.13750674], [1516731180000, 0.0026462, 0.0026462, 0.0026462, 0.0026462, 76.8075], [1516731240000, 0.002652, 0.00265598, 0.00264624, 0.00265501, 111.59862762], [1516731300000, 0.002649, 0.00265501, 0.00264626, 0.00265501, 318.56585631], [1516731360000, 0.00265501, 0.00265501, 0.002651, 0.002651, 21.5329283], [1516731420000, 0.002651, 0.002651, 0.00264501, 0.00264502, 54.05996466], [1516731480000, 0.00265, 0.00265695, 0.00265, 0.00265695, 348.79120596], [1516731540000, 0.00264526, 0.002662, 0.0026451, 0.00265995, 100.21713496], [1516731600000, 0.002659, 0.002659, 0.00264505, 0.00264505, 75.51197343], [1516731660000, 0.002659, 0.002659, 0.002659, 0.002659, 1.00400299], [1516731720000, 0.00265685, 0.00265685, 0.00265685, 0.00265685, 1.03258463], [1516731780000, 0.00265685, 0.00265878, 0.00265685, 0.00265685, 34.48043434], [1516731840000, 0.00265685, 0.00265878, 0.002647, 0.00265878, 12.00294911], [1516731900000, 0.00265878, 0.002659, 0.00265878, 0.002659, 111.31265193], [1516731960000, 0.00265878, 0.00265878, 0.00265878, 0.00265878, 6.94664024], [1516732020000, 0.0026586, 0.00265878, 0.00264506, 0.00264506, 75.36480927], [1516732080000, 0.00265869, 0.00265869, 0.00264505, 0.00264505, 165.77759479], [1516732140000, 0.00264505, 0.00264505, 0.00264505, 0.00264505, 220.61772139], [1516732200000, 0.00264505, 0.00265858, 0.00264505, 0.002655, 41.37036261], [1516732260000, 0.002654, 0.002654, 0.002647, 0.002647, 2.69333618], [1516732320000, 0.002654, 0.002655, 0.00265396, 0.002655, 116.00030262], [1516732380000, 0.00265399, 0.002655, 0.00265399, 0.002655, 89.8168816], [1516732500000, 0.00265399, 0.00265878, 0.00265399, 0.00265399, 21.69003754], [1516732560000, 0.00264701, 0.00264704, 0.00264701, 0.00264704, 5.04844786], [1516732620000, 0.00264955, 0.002651, 0.00264701, 0.00264701, 139.48178617], [1516732680000, 0.002647, 0.00265878, 0.00264693, 0.00265878, 186.04015802], [1516732740000, 0.002647, 0.00265878, 0.002647, 0.00265878, 6.12517932], [1516732800000, 0.00265878, 0.002659, 0.002647, 0.002647, 135.39576631], [1516732860000, 0.002647, 0.002647, 0.002647, 0.002647, 103.70923286], [1516732920000, 0.00266192, 0.00266192, 0.002647, 0.00266, 13.18816714], [1516732980000, 0.002647, 0.00266, 0.002647, 0.002647, 370.62978222], [1516733040000, 0.00265513, 0.00266, 0.002647, 0.002647, 59.5376386], [1516733100000, 0.002647, 0.00265998, 0.002647, 0.00265998, 15.47718866], [1516733160000, 0.00265996, 0.00265997, 0.00265996, 0.00265997, 3.39629929], [1516733220000, 0.00265991, 0.00265991, 0.002647, 0.002647, 666.33169634], [1516733280000, 0.002643, 0.002647, 0.002643, 0.002643, 1.75338589], [1516733340000, 0.002647, 0.002647, 0.002647, 0.002647, 8.9840985], [1516733400000, 0.002647, 0.0026597, 0.00264, 0.0026597, 37.75519256], [1516733460000, 0.002642, 0.002642, 0.00264, 0.00264, 89.50070493], [1516733520000, 0.00263234, 0.00265017, 0.00263234, 0.00265017, 50.27864108], [1516733580000, 0.00264, 0.00264, 0.00264, 0.00264, 0.41761364], [1516733640000, 0.00264999, 0.00264999, 0.00264896, 0.00264896, 6.48502852], [1516733700000, 0.00264478, 0.00264478, 0.002628, 0.00264477, 58.01919307], [1516733760000, 0.0026283, 0.0026283, 0.0026283, 0.0026283, 27.28587898], [1516733820000, 0.0026283, 0.002644, 0.0026283, 0.002644, 63.9110404], [1516733880000, 0.002644, 0.002644, 0.002628, 0.002628, 112.26381228], [1516734000000, 0.00264249, 0.00264249, 0.0026284, 0.0026284, 17.26574444], [1516734060000, 0.0026284, 0.0026284, 0.0026284, 0.0026284, 198.72227193], [1516734120000, 0.0026422, 0.0026422, 0.0026422, 0.0026422, 2.03445459], [1516734240000, 0.0026422, 0.0026422, 0.0026284, 0.0026284, 41.80479444], [1516734300000, 0.00264219, 0.00264219, 0.00264218, 0.00264219, 15.29691979], [1516734360000, 0.00264219, 0.0026423, 0.0026282, 0.00264219, 77.44203174], [1516734420000, 0.00262882, 0.00262882, 0.00262882, 0.00262882, 0.95536344], [1516734480000, 0.0026421, 0.0026421, 0.0026421, 0.0026421, 7.0], [1516734600000, 0.00264205, 0.00265, 0.00264205, 0.00264996, 260.60965233], [1516734780000, 0.00264995, 0.00264995, 0.0026499, 0.0026499, 30.64440893], [1516734840000, 0.00263939, 0.00263939, 0.00263939, 0.00263939, 0.41771015], [1516734900000, 0.00263939, 0.00264988, 0.00263939, 0.00264987, 4.75505725], [1516734960000, 0.0026421, 0.0026421, 0.002627, 0.002627, 95.29595636], [1516735020000, 0.002628, 0.00264952, 0.002628, 0.00264952, 22.4041256], [1516735080000, 0.002627, 0.002627, 0.00262558, 0.00262558, 5.36022609], [1516735140000, 0.002627, 0.002627, 0.002627, 0.002627, 3.29155554], [1516735200000, 0.002627, 0.00264878, 0.00262565, 0.00262606, 115.72569306], [1516735260000, 0.00262606, 0.00263446, 0.00262606, 0.00263446, 42.90177178], [1516735320000, 0.00263446, 0.00263446, 0.00263446, 0.00263446, 120.18380471], [1516735380000, 0.00263446, 0.00263446, 0.00262565, 0.00262565, 168.6899156], [1516735440000, 0.00262605, 0.00262605, 0.00262605, 0.00262605, 0.67259172], [1516735500000, 0.00263445, 0.00263446, 0.00262566, 0.00262566, 19.06067386], [1516735560000, 0.00262566, 0.00262566, 0.00262565, 0.00262566, 114.46143637], [1516735620000, 0.00262565, 0.00264692, 0.00262565, 0.00264692, 259.19954736], [1516735680000, 0.00262558, 0.00262558, 0.00262355, 0.00262355, 0.8105133], [1516735740000, 0.00262354, 0.00262355, 0.00262354, 0.00262354, 68.91413885], [1516735800000, 0.00262354, 0.00262354, 0.00262354, 0.00262354, 0.77712855], [1516735860000, 0.00262354, 0.00262354, 0.00262126, 0.00262126, 61.69153367], [1516735920000, 0.0026204, 0.00262355, 0.00262, 0.00262348, 84.65928323], [1516735980000, 0.002621, 0.002621, 0.00262, 0.00262, 58.73508335], [1516736040000, 0.00262, 0.002621, 0.00262, 0.002621, 15.19278439], [1516736100000, 0.002621, 0.002621, 0.00262001, 0.002621, 143.74295264], [1516736160000, 0.002621, 0.002621, 0.00262001, 0.002621, 47.29443977], [1516736220000, 0.002621, 0.002621, 0.00262001, 0.00262001, 45.06270498], [1516736280000, 0.002621, 0.00262355, 0.00262001, 0.00262355, 64.7451862], [1516736340000, 0.00262355, 0.00262355, 0.00262355, 0.00262355, 15.00048413], [1516736400000, 0.002621, 0.0026235, 0.00262001, 0.00262001, 52.79239855], [1516736460000, 0.0026235, 0.00262355, 0.00262001, 0.00262001, 40.86516806], [1516736520000, 0.00262001, 0.00262355, 0.00262001, 0.00262355, 8.70535175], [1516736580000, 0.00262, 0.00262355, 0.00261998, 0.00262355, 30.342006], [1516736640000, 0.00262355, 0.00262355, 0.00262355, 0.00262355, 359.59421496], [1516736700000, 0.00264751, 0.00264751, 0.00264751, 0.00264751, 13.80813697], [1516736760000, 0.00264743, 0.00264752, 0.00262752, 0.00264749, 33.15492192], [1516736880000, 0.002632, 0.002632, 0.002632, 0.002632, 8.35878411], [1516736940000, 0.00264704, 0.00264704, 0.002632, 0.002632, 2.43644615], [1516737000000, 0.00264738, 0.00264746, 0.00264738, 0.00264746, 11.33161596], [1516737060000, 0.0026245, 0.00264744, 0.00262394, 0.00262397, 13.66251003], [1516737240000, 0.00262505, 0.00264685, 0.00262505, 0.00264685, 13.17183596], [1516737300000, 0.00264675, 0.00264675, 0.0026467, 0.0026467, 4.59655649], [1516737360000, 0.00262502, 0.00262502, 0.00262502, 0.00262502, 1.0], [1516737420000, 0.0026428, 0.0026428, 0.00262499, 0.00262499, 5.03013522], [1516737480000, 0.00262658, 0.00262658, 0.00262658, 0.00262658, 0.24169511], [1516737540000, 0.00262499, 0.00262658, 0.00262499, 0.00262658, 260.40440797], [1516737600000, 0.00262499, 0.00262658, 0.00262499, 0.00262658, 313.87936097], [1516737660000, 0.00262658, 0.00262658, 0.00262499, 0.00262499, 35.84000844], [1516737720000, 0.00262499, 0.00262658, 0.00262397, 0.00262397, 368.9852822], [1516737780000, 0.00262397, 0.00262658, 0.00262365, 0.00262658, 1156.66302941], [1516737840000, 0.00262657, 0.00262657, 0.00262657, 0.00262657, 0.84019374], [1516737900000, 0.00262657, 0.00262657, 0.00262366, 0.00262366, 90.3836552], [1516737960000, 0.00262366, 0.00262366, 0.00262365, 0.00262366, 173.34728696], [1516738020000, 0.00262365, 0.00262657, 0.00262365, 0.00262657, 28.18441446], [1516738080000, 0.00262657, 0.00262657, 0.00262657, 0.00262657, 14.81051647], [1516738140000, 0.00262657, 0.00262657, 0.00262365, 0.00262365, 2.34916026], [1516738200000, 0.00262657, 0.00262657, 0.00262365, 0.00262365, 4.71194029], [1516738260000, 0.00262365, 0.00262365, 0.00262365, 0.00262365, 3.99541446], [1516738320000, 0.00262657, 0.00262657, 0.00262657, 0.00262657, 3.48645009], [1516738380000, 0.00262657, 0.00263898, 0.00262657, 0.00263898, 31.82435205], [1516738500000, 0.00263898, 0.002639, 0.00262365, 0.00262365, 13.67589839], [1516738560000, 0.00263899, 0.00263899, 0.00263899, 0.00263899, 2.34007679], [1516738680000, 0.00263279, 0.00263279, 0.00263279, 0.00263279, 0.84042498], [1516738800000, 0.002638, 0.002638, 0.0026328, 0.0026375, 17.37668019], [1516738980000, 0.00262365, 0.00262404, 0.00262001, 0.00262001, 211.18480952], [1516739040000, 0.00262001, 0.00262001, 0.00261328, 0.00261328, 24.38462487], [1516739100000, 0.00261986, 0.00262, 0.00261328, 0.00262, 14.70105974], [1516739160000, 0.00262, 0.00262001, 0.00262, 0.00262, 3.04114982], [1516739220000, 0.00262, 0.00263677, 0.00262, 0.00262, 7.3980301], [1516739280000, 0.00263676, 0.00263677, 0.00262, 0.00262, 8.71869146], [1516739340000, 0.00262, 0.00262, 0.00261328, 0.00261328, 10.38034079], [1516739400000, 0.00261328, 0.00262, 0.00261328, 0.00262, 19.12868821], [1516739460000, 0.00262, 0.00263675, 0.00261966, 0.00262, 14.60081506], [1516739520000, 0.00262, 0.00262, 0.00262, 0.00262, 0.42080153], [1516739580000, 0.00262, 0.00262, 0.00262, 0.00262, 8.18294662], [1516739700000, 0.002628, 0.002628, 0.002628, 0.002628, 2.0238399], [1516739760000, 0.00263675, 0.00263675, 0.002628, 0.002628, 5.86989829], [1516739820000, 0.002635, 0.002635, 0.002635, 0.002635, 2.01752944], [1516739880000, 0.002628, 0.00263499, 0.002628, 0.002628, 36.35993425], [1516739940000, 0.0026348, 0.0026348, 0.002628, 0.00262801, 21.31565307], [1516740000000, 0.00262801, 0.00263499, 0.00262801, 0.00263, 19.87455585], [1516740060000, 0.00263, 0.00263001, 0.00262801, 0.00263001, 12.86310412], [1516740120000, 0.00263, 0.00263499, 0.002628, 0.002628, 484.69128035], [1516740180000, 0.00262801, 0.00263499, 0.00262801, 0.00263499, 189.27965571], [1516740240000, 0.002628, 0.002628, 0.002628, 0.002628, 2.0], [1516740300000, 0.002628, 0.002628, 0.002628, 0.002628, 0.48792827], [1516740360000, 0.002628, 0.00263499, 0.002628, 0.002628, 4.91038192], [1516740420000, 0.00263499, 0.002635, 0.00263499, 0.002635, 11.46898318], [1516740480000, 0.002628, 0.00263677, 0.002628, 0.00263677, 36.13902579], [1516740540000, 0.00263677, 0.00263677, 0.002628, 0.002628, 12.08872], [1516740600000, 0.00263677, 0.00263677, 0.002628, 0.002628, 7.5184401], [1516740660000, 0.00263676, 0.00263677, 0.002628, 0.002628, 57.29573628], [1516740780000, 0.00263677, 0.00263677, 0.002628, 0.00263676, 41.36821257], [1516740900000, 0.00263676, 0.00263676, 0.00263676, 0.00263676, 12.21598066], [1516740960000, 0.00263676, 0.00263676, 0.00263676, 0.00263676, 9.43510146], [1516741020000, 0.002628, 0.00262801, 0.002628, 0.002628, 64.48483542], [1516741080000, 0.002628, 0.002628, 0.002628, 0.002628, 1.00699991], [1516741140000, 0.002628, 0.002628, 0.002628, 0.002628, 11.14816534], [1516741200000, 0.002628, 0.002628, 0.002628, 0.002628, 3.80517503], [1516741260000, 0.002628, 0.002628, 0.002628, 0.002628, 79.8595068], [1516741320000, 0.002628, 0.00263676, 0.002628, 0.00262801, 114.48409308], [1516741380000, 0.00262801, 0.00263676, 0.00262801, 0.00262804, 112.949856], [1516741440000, 0.00262812, 0.00262813, 0.00262812, 0.00262812, 145.95923564], [1516741560000, 0.00263676, 0.00263676, 0.00263676, 0.00263676, 1.89626663], [1516741620000, 0.00263676, 0.00263676, 0.00263676, 0.00263676, 73.00503613], [1516741680000, 0.0026367, 0.002637, 0.0026367, 0.002637, 263.81205052], [1516741740000, 0.002637, 0.00264, 0.002637, 0.00264, 126.41184364], [1516741800000, 0.00264, 0.0026448, 0.00264, 0.0026448, 92.82067748], [1516741920000, 0.0026448, 0.0026448, 0.00264, 0.0026448, 55.15511452], [1516742040000, 0.0026448, 0.0026448, 0.0026448, 0.0026448, 21.85589652], [1516742100000, 0.0026448, 0.00264751, 0.0026448, 0.00264751, 31.22818372], [1516742160000, 0.00264751, 0.00264751, 0.00264751, 0.00264751, 1.6518613], [1516742220000, 0.00264, 0.00264751, 0.0026283, 0.00264751, 107.11396583], [1516742280000, 0.0026475, 0.0026475, 0.0026475, 0.0026475, 17.76315348], [1516742460000, 0.00262926, 0.0026474, 0.00262925, 0.0026474, 88.8885157], [1516742520000, 0.0026474, 0.0026474, 0.0026474, 0.0026474, 0.37772909], [1516742580000, 0.00262926, 0.0026474, 0.00262925, 0.0026474, 89.65652608], [1516742640000, 0.00264739, 0.00264739, 0.00262942, 0.00264739, 19.2325117], [1516742700000, 0.00262953, 0.00262953, 0.00262942, 0.00262942, 16.97683101], [1516742760000, 0.00262943, 0.0026473, 0.00262943, 0.0026473, 11.22600175], [1516742820000, 0.0026473, 0.00264739, 0.0026473, 0.00264739, 38.85488], [1516742880000, 0.00264739, 0.00264739, 0.00264739, 0.00264739, 0.83100714], [1516742940000, 0.00264111, 0.00264111, 0.00264111, 0.00264111, 11.65800355], [1516743000000, 0.00264164, 0.00264164, 0.00264111, 0.00264111, 3.10920613], [1516743060000, 0.00264111, 0.00264111, 0.00264111, 0.00264111, 0.65325005], [1516743120000, 0.00264111, 0.00264111, 0.00262972, 0.00262972, 8.18100936], [1516743180000, 0.00264111, 0.00264111, 0.00262975, 0.00262975, 55.24300859], [1516743240000, 0.00263597, 0.00263597, 0.00263597, 0.00263597, 15.80122651], [1516743300000, 0.00263597, 0.00263597, 0.00263597, 0.00263597, 81.58722554], [1516743360000, 0.00262976, 0.00263597, 0.00262976, 0.00263597, 56.98508061], [1516743420000, 0.00263597, 0.00263597, 0.00263587, 0.00263597, 175.77063526], [1516743480000, 0.00263587, 0.00264739, 0.00262975, 0.002636, 146.19727965], [1516743540000, 0.002636, 0.002636, 0.002636, 0.002636, 0.83848832], [1516743600000, 0.002636, 0.002636, 0.002636, 0.002636, 50.3631657], [1516743660000, 0.00264, 0.00264, 0.00264, 0.00264, 17.89688896], [1516743720000, 0.00264, 0.00264, 0.00262976, 0.00264, 11.56983347], [1516743780000, 0.00262976, 0.00264, 0.00262976, 0.00262977, 7.58300078], [1516743840000, 0.00264, 0.00264, 0.00262984, 0.00264, 773.95519904], [1516743900000, 0.00264, 0.00264, 0.00262985, 0.00264, 175.95731796], [1516743960000, 0.00264, 0.00264, 0.00263543, 0.00263543, 4.08113929], [1516744020000, 0.00263543, 0.002641, 0.00263543, 0.002641, 92.02630641], [1516744080000, 0.002641, 0.0026474, 0.002641, 0.0026474, 45.05771867], [1516744140000, 0.00264739, 0.00264739, 0.00264735, 0.00264735, 24.51703445], [1516744200000, 0.00264735, 0.00264739, 0.00264735, 0.00264735, 4.61021357], [1516744260000, 0.00264735, 0.00264739, 0.00264735, 0.00264735, 3.63067608], [1516744320000, 0.00264735, 0.00264735, 0.00264735, 0.00264735, 7.54496885], [1516744380000, 0.00264735, 0.00264739, 0.00264735, 0.00264739, 16.29435991], [1516744440000, 0.00264735, 0.00264735, 0.00264735, 0.00264735, 2.65693302], [1516744500000, 0.00264735, 0.00264735, 0.00264735, 0.00264735, 0.41645419], [1516744560000, 0.00264735, 0.00264739, 0.00264735, 0.00264735, 117.29000229], [1516744620000, 0.00264735, 0.00264735, 0.00264735, 0.00264735, 1.83290838], [1516744680000, 0.00264739, 0.00264739, 0.00264735, 0.00264735, 291.08707061], [1516744740000, 0.00264735, 0.00264735, 0.00264735, 0.00264735, 42.53716282], [1516744800000, 0.00264735, 0.00264739, 0.00264735, 0.00264735, 100.95544133], [1516744860000, 0.00264735, 0.00264735, 0.00264735, 0.00264735, 3.64208047], [1516744920000, 0.00264735, 0.00264735, 0.00264735, 0.00264735, 99.65427225], [1516744980000, 0.00264, 0.00264, 0.00263066, 0.00263066, 60.11556209], [1516745040000, 0.00263078, 0.00264995, 0.00263077, 0.00264995, 22.02423109], [1516745100000, 0.00262991, 0.0026474, 0.00262985, 0.00264299, 1712.21477116], [1516745220000, 0.0026468, 0.0026468, 0.00262, 0.00264299, 469.53508572], [1516745280000, 0.00262299, 0.00262299, 0.00262299, 0.00262299, 188.55040485], [1516745340000, 0.00262299, 0.00263999, 0.00262299, 0.00263999, 14.75173409], [1516745400000, 0.00263999, 0.00264, 0.00262016, 0.0026202, 179.62693851], [1516745460000, 0.00263997, 0.00263997, 0.00261507, 0.00261508, 13.12906652], [1516745520000, 0.00263992, 0.00263992, 0.00263992, 0.00263992, 2.600818], [1516745580000, 0.00263976, 0.00263996, 0.00263, 0.00263996, 226.68344327], [1516745640000, 0.00263978, 0.00263978, 0.00263978, 0.00263978, 91.56105637], [1516745700000, 0.00263997, 0.0026427, 0.00263997, 0.00263997, 3.37252969], [1516745760000, 0.00264007, 0.00264007, 0.00263997, 0.00263997, 0.83522885], [1516745820000, 0.00263997, 0.00263997, 0.00263997, 0.00263997, 0.83523676], [1516745880000, 0.00263998, 0.00263998, 0.00263997, 0.00263997, 63.61630261], [1516745940000, 0.00263997, 0.00263997, 0.00263997, 0.00263997, 128.64609211], [1516746000000, 0.00263997, 0.00264267, 0.00263997, 0.00263997, 10.07592671], [1516746060000, 0.00263997, 0.002642, 0.00263997, 0.00263997, 412.23386943], [1516746120000, 0.00263997, 0.002642, 0.00263978, 0.00263978, 89.84820995], [1516746180000, 0.00263978, 0.00263978, 0.00263978, 0.00263978, 1.11053348], [1516746240000, 0.00263977, 0.00263978, 0.00263977, 0.00263978, 7.84839082], [1516746300000, 0.00263978, 0.00263978, 0.00263978, 0.00263978, 3.78819447], [1516746360000, 0.00262658, 0.00263978, 0.00262658, 0.00262658, 7.93674786], [1516746420000, 0.00263978, 0.002642, 0.00263978, 0.002642, 138.52407533], [1516746480000, 0.002642, 0.002642, 0.002642, 0.002642, 10.0], [1516746540000, 0.00262658, 0.00262658, 0.00262658, 0.00262658, 6.46685547], [1516746600000, 0.002642, 0.002642, 0.002642, 0.002642, 0.19953196], [1516746720000, 0.0026419, 0.002642, 0.0026419, 0.002642, 12.55738185], [1516746780000, 0.00264175, 0.002642, 0.00262657, 0.002642, 540.42537961], [1516746840000, 0.002642, 0.002642, 0.002642, 0.002642, 310.92985347], [1516746900000, 0.00262658, 0.002642, 0.00262658, 0.002642, 42.81898627], [1516746960000, 0.002642, 0.0026468, 0.00262693, 0.00264679, 617.491183], [1516747020000, 0.00263355, 0.00263734, 0.00262694, 0.00262694, 66.1], [1516747080000, 0.00263734, 0.00263734, 0.00262694, 0.00263734, 64.72580051], [1516747140000, 0.00263737, 0.00263739, 0.00263737, 0.00263737, 7.64866998], [1516747200000, 0.00263737, 0.00263737, 0.00263737, 0.00263737, 20.30302798], [1516747260000, 0.00264666, 0.00264666, 0.00264666, 0.00264666, 6.08685929], [1516747320000, 0.00264663, 0.00264678, 0.00263737, 0.00264678, 84.64218203], [1516747380000, 0.00263737, 0.00263737, 0.00263737, 0.00263737, 36.21240694], [1516747440000, 0.00263737, 0.00263737, 0.00262694, 0.00262694, 46.37418619], [1516747500000, 0.00263737, 0.00264674, 0.00263737, 0.0026467, 30.74254413], [1516747560000, 0.00264649, 0.00264649, 0.00262694, 0.00262694, 128.26791975], [1516747620000, 0.00263737, 0.00264202, 0.00262695, 0.00262695, 147.1157127], [1516747680000, 0.00263101, 0.00263101, 0.00262695, 0.00262697, 140.24134235], [1516747740000, 0.00262698, 0.002627, 0.00262698, 0.00262699, 140.67122022], [1516747800000, 0.00262698, 0.00262698, 0.00262694, 0.00262696, 356.0357021], [1516747860000, 0.00262693, 0.00262696, 0.00262657, 0.00262696, 55.01969167], [1516747920000, 0.00262657, 0.00262696, 0.00262657, 0.00262696, 6.91360721], [1516747980000, 0.00262696, 0.00262696, 0.00262696, 0.00262696, 5.77049341], [1516748040000, 0.00262657, 0.00262657, 0.00262657, 0.00262657, 4.86827506], [1516748100000, 0.00262657, 0.00262657, 0.00262067, 0.00262465, 10.96528727], [1516748160000, 0.00262465, 0.00262465, 0.00262465, 0.00262465, 6.73981817], [1516748220000, 0.00262066, 0.00262657, 0.00262066, 0.00262657, 16.1597981], [1516748280000, 0.00262657, 0.00262657, 0.00262067, 0.00262067, 221.42791187], [1516748340000, 0.00262067, 0.00262067, 0.00262066, 0.00262066, 289.15189652], [1516748400000, 0.00262067, 0.00262067, 0.00262066, 0.00262066, 93.06437961], [1516748460000, 0.00262, 0.00262067, 0.00261291, 0.00261291, 169.2424904], [1516748520000, 0.00261302, 0.00261302, 0.00261291, 0.00261291, 32.58737], [1516748580000, 0.00261291, 0.00262067, 0.0026128, 0.00262067, 30.11107105], [1516748640000, 0.00262068, 0.00262657, 0.00262068, 0.00262657, 28.83509779], [1516748700000, 0.00261344, 0.00261345, 0.00261344, 0.00261345, 46.61924132], [1516748760000, 0.00261345, 0.00262657, 0.00261345, 0.00262657, 78.72250056], [1516748820000, 0.00262657, 0.00262657, 0.00261344, 0.00262656, 32.38379957], [1516748880000, 0.00262656, 0.00262656, 0.00261344, 0.00262656, 18.95614142], [1516748940000, 0.00262651, 0.00262651, 0.00261344, 0.00261344, 4.73118701], [1516749000000, 0.00261344, 0.00261344, 0.00261344, 0.00261344, 0.32551181], [1516749060000, 0.00261344, 0.00261344, 0.00261344, 0.00261344, 16.36929536], [1516749120000, 0.00262645, 0.00262656, 0.00262645, 0.00262656, 362.56078701], [1516749180000, 0.00262656, 0.00262657, 0.0026128, 0.00262645, 404.65362755], [1516749240000, 0.00262645, 0.00262645, 0.00262645, 0.00262645, 14.42717939], [1516749300000, 0.00262656, 0.00262656, 0.00262654, 0.00262656, 198.78884329], [1516749360000, 0.00262656, 0.00262656, 0.00262655, 0.00262655, 218.60391858], [1516749420000, 0.002612, 0.002612, 0.002612, 0.002612, 0.78953919], [1516749480000, 0.00263721, 0.00263721, 0.00261214, 0.00263716, 12.64610848], [1516749540000, 0.002612, 0.002612, 0.00260564, 0.00260564, 893.15918776], [1516749600000, 0.00263692, 0.00263692, 0.00263692, 0.00263692, 3.79224561], [1516749660000, 0.00263677, 0.00263677, 0.00260866, 0.00260866, 509.97947712], [1516749720000, 0.00260868, 0.00260905, 0.00260868, 0.002609, 11.81112143], [1516749780000, 0.002609, 0.002628, 0.0026055, 0.0026055, 511.30800111], [1516749840000, 0.0026055, 0.0026055, 0.0026055, 0.0026055, 1.893134], [1516749900000, 0.00260562, 0.00260562, 0.00260562, 0.00260562, 0.82242298], [1516749960000, 0.00262939, 0.00262939, 0.00262939, 0.00262939, 3.8771653], [1516750020000, 0.00262391, 0.00262938, 0.00262391, 0.002624, 1166.02826414], [1516750080000, 0.00262399, 0.002624, 0.00262399, 0.00262399, 59.4598889], [1516750140000, 0.00262399, 0.00262399, 0.0026055, 0.0026055, 243.53012836], [1516750200000, 0.00260574, 0.00260574, 0.0026055, 0.00260574, 288.1353112], [1516750260000, 0.00260574, 0.00260574, 0.0026055, 0.00260574, 117.86071031], [1516750320000, 0.00260574, 0.00260574, 0.0026055, 0.00260574, 79.61255846], [1516750380000, 0.00260574, 0.00262394, 0.00260555, 0.00262394, 71.37911071], [1516750440000, 0.00262372, 0.00262372, 0.00260574, 0.00260574, 5.5019134], [1516750560000, 0.002622, 0.002622, 0.002622, 0.002622, 7.8], [1516750620000, 0.00262357, 0.00262357, 0.00262357, 0.00262357, 9.46021821], [1516750680000, 0.00262346, 0.00262346, 0.00262346, 0.00262346, 61.46501139], [1516750740000, 0.00262327, 0.00262327, 0.00262327, 0.00262327, 7.9762434], [1516750800000, 0.00260778, 0.00260778, 0.0026, 0.00260778, 840.33059763], [1516750860000, 0.00261559, 0.00262326, 0.00261559, 0.00262318, 19.09410308], [1516750920000, 0.00262199, 0.00262199, 0.00262199, 0.00262199, 21.73469139], [1516750980000, 0.00260778, 0.00262298, 0.00259888, 0.00262298, 156.21439526], [1516751040000, 0.00261561, 0.00261561, 0.00261561, 0.00261561, 2.81310933], [1516751100000, 0.00259999, 0.0026156, 0.00259999, 0.0026156, 27.7252186], [1516751160000, 0.00261559, 0.00261559, 0.00261559, 0.00261559, 13.42912691], [1516751220000, 0.00261559, 0.0026156, 0.00261559, 0.00261559, 29.33915463], [1516751340000, 0.00261483, 0.00261483, 0.002599, 0.002599, 35.92164886], [1516751400000, 0.00259999, 0.00259999, 0.002599, 0.00259999, 32.29357989], [1516751460000, 0.00259999, 0.00259999, 0.00259999, 0.00259999, 1.0], [1516751520000, 0.00259999, 0.0026, 0.00259999, 0.0026, 24.26727301], [1516751580000, 0.0026, 0.00261547, 0.00259901, 0.00261547, 14.9126298], [1516751640000, 0.00260001, 0.002615, 0.0026, 0.002615, 131.44574962], [1516751700000, 0.00261499, 0.00261499, 0.00260001, 0.00260001, 24.29674642], [1516751760000, 0.00261494, 0.00261494, 0.00261494, 0.00261494, 8.4], [1516751820000, 0.00261492, 0.00261492, 0.0026, 0.0026, 367.51311599], [1516751880000, 0.00260002, 0.00261493, 0.0026, 0.00261493, 131.27454686], [1516751940000, 0.0026, 0.0026, 0.002599, 0.002599, 47.2625299], [1516752000000, 0.0026, 0.00261493, 0.002599, 0.002599, 126.50114616], [1516752060000, 0.002599, 0.00259901, 0.002599, 0.00259901, 79.90010843], [1516752120000, 0.00259901, 0.00261491, 0.00259901, 0.00261491, 12.7817931], [1516752180000, 0.00259902, 0.00261493, 0.00259902, 0.0026, 117.60855186], [1516752300000, 0.00260603, 0.00260603, 0.00260603, 0.00260603, 2.0], [1516752360000, 0.00261492, 0.00261493, 0.00260602, 0.00261493, 484.31919906], [1516752420000, 0.00261492, 0.00261493, 0.00261491, 0.00261491, 317.48081529], [1516752480000, 0.00260003, 0.00261493, 0.00260003, 0.00261493, 77.7266916], [1516752540000, 0.00261232, 0.00261493, 0.00261232, 0.00261493, 507.84873789], [1516752600000, 0.00261493, 0.00261493, 0.00260004, 0.00260004, 127.05318068], [1516752720000, 0.00261493, 0.00261493, 0.00260062, 0.00260062, 47.44582439], [1516752780000, 0.00261493, 0.00261493, 0.00260008, 0.00261493, 61.91945157], [1516752840000, 0.00261493, 0.00261493, 0.00261493, 0.00261493, 521.59163331], [1516752900000, 0.00261493, 0.00261493, 0.00260093, 0.00261493, 10.23967706], [1516752960000, 0.00260013, 0.0026155, 0.00260013, 0.0026155, 408.58942684], [1516753020000, 0.00260014, 0.00260014, 0.00260014, 0.00260014, 2.0], [1516753080000, 0.00260018, 0.00260018, 0.00260014, 0.00260016, 16.18595632], [1516753140000, 0.0026155, 0.0026155, 0.0026155, 0.0026155, 34.52374721], [1516753200000, 0.0026155, 0.0026155, 0.0026155, 0.0026155, 1.69448], [1516753260000, 0.00261309, 0.0026155, 0.00261288, 0.0026155, 3.08934391], [1516753380000, 0.00260139, 0.00260139, 0.00260139, 0.00260139, 1.0], [1516753440000, 0.00260139, 0.0026155, 0.00260139, 0.00260139, 22.60227791], [1516753500000, 0.0026155, 0.0026155, 0.0026155, 0.0026155, 44.5008177], [1516753560000, 0.0026155, 0.0026155, 0.0026155, 0.0026155, 16.27175927], [1516753620000, 0.0026155, 0.0026155, 0.00260164, 0.0026155, 8.50783284], [1516753680000, 0.0026155, 0.0026155, 0.0026155, 0.0026155, 47.46720078], [1516753740000, 0.0026155, 0.0026155, 0.0026155, 0.0026155, 5.0], [1516753800000, 0.00261288, 0.00261288, 0.00261288, 0.00261288, 0.42099067], [1516753860000, 0.00261288, 0.00261288, 0.00261288, 0.00261288, 18.17010813], [1516753920000, 0.00261288, 0.0026155, 0.00260018, 0.0026155, 340.39762994], [1516754100000, 0.00261548, 0.00261548, 0.0026012, 0.00261548, 22.79412209], [1516754160000, 0.00261548, 0.00262397, 0.00261548, 0.00262397, 2784.72963707], [1516754220000, 0.00262397, 0.002624, 0.00262397, 0.002624, 2073.91307639], [1516754280000, 0.002624, 0.00262826, 0.002624, 0.00262826, 961.99175242], [1516754340000, 0.00262826, 0.00262891, 0.00262826, 0.00262826, 122.63353228], [1516754400000, 0.00262891, 0.00263004, 0.00262826, 0.00262826, 9.02719646], [1516754460000, 0.00263004, 0.00263718, 0.00262826, 0.00262827, 10.93897706], [1516754520000, 0.00262827, 0.00262827, 0.00262827, 0.00262827, 12.2363189], [1516754580000, 0.00264216, 0.00264216, 0.00264216, 0.00264216, 0.78307624], [1516754640000, 0.00264216, 0.00264216, 0.00264216, 0.00264216, 6.91499348], [1516754700000, 0.00264214, 0.00264214, 0.00264213, 0.00264214, 30.09552632], [1516754880000, 0.00263001, 0.00263001, 0.00263, 0.00263, 58.33584767], [1516754940000, 0.00263, 0.00263001, 0.00263, 0.00263, 71.11762306], [1516755000000, 0.00262826, 0.00263, 0.00262826, 0.00262826, 103.42233836], [1516755060000, 0.00262501, 0.00264214, 0.00262401, 0.00264214, 841.5115764], [1516755120000, 0.00264214, 0.00264214, 0.00264214, 0.00264214, 48.9702], [1516755180000, 0.00264214, 0.0026423, 0.00262494, 0.00262494, 78.17720591], [1516755240000, 0.0026423, 0.00264697, 0.0026423, 0.00264697, 16.28981895], [1516755300000, 0.00264697, 0.00265, 0.00262543, 0.00265, 553.39562268], [1516755360000, 0.00265, 0.00265, 0.0026423, 0.00265, 60.31913977], [1516755420000, 0.00265, 0.00265, 0.00265, 0.00265, 0.8391922], [1516755480000, 0.0026423, 0.0026423, 0.00262684, 0.00262684, 516.00089197], [1516755540000, 0.00264998, 0.00265323, 0.00264998, 0.00265323, 1193.62549451], [1516755600000, 0.00264998, 0.00266413, 0.00264998, 0.00264998, 781.98946272], [1516755660000, 0.00262782, 0.00265341, 0.00262779, 0.00262781, 459.41378582], [1516755720000, 0.00262781, 0.00266165, 0.0026278, 0.00262787, 738.8044115], [1516755780000, 0.00265997, 0.00266842, 0.00265967, 0.00266842, 1258.69715573], [1516755900000, 0.00262909, 0.00262921, 0.00262909, 0.00262921, 4.0387904], [1516755960000, 0.0026681, 0.0026681, 0.0026681, 0.0026681, 3.11757631], [1516756020000, 0.0026669, 0.0026669, 0.0026669, 0.0026669, 0.38570342], [1516756140000, 0.00265385, 0.00265385, 0.002641, 0.002641, 8.02440293], [1516756200000, 0.00263246, 0.00263246, 0.00263246, 0.00263246, 12.13181259], [1516756260000, 0.00265297, 0.00265298, 0.00265297, 0.00265298, 46.68776729], [1516756320000, 0.00265299, 0.00265632, 0.00263632, 0.00265632, 79.15451601], [1516756380000, 0.00265632, 0.00266632, 0.00263013, 0.00266626, 471.14950424], [1516756440000, 0.00266618, 0.00266619, 0.00263113, 0.00266598, 210.4616119], [1516756500000, 0.00265093, 0.00265093, 0.00265093, 0.00265093, 6.90444937], [1516756560000, 0.00263032, 0.00263032, 0.00263023, 0.00263023, 4.92001966], [1516756620000, 0.00263032, 0.00266552, 0.00263032, 0.00266552, 484.8255346], [1516756740000, 0.00266494, 0.00266494, 0.00266476, 0.00266476, 69.87160495], [1516756800000, 0.00264, 0.00266195, 0.00264, 0.00264, 23.87490464], [1516756860000, 0.00264, 0.00266576, 0.00264, 0.00266574, 1054.16386083], [1516756920000, 0.00266572, 0.00266572, 0.00266572, 0.00266572, 30.61342846], [1516756980000, 0.00266572, 0.00266572, 0.00264006, 0.00265037, 1619.05990542], [1516757040000, 0.00265037, 0.00266568, 0.00264001, 0.00266563, 47.96910413], [1516757100000, 0.0026656, 0.0026656, 0.00264016, 0.00264016, 233.40203426], [1516757160000, 0.00264018, 0.00266548, 0.00264018, 0.00266548, 5.48755942], [1516757340000, 0.00266481, 0.00266481, 0.00264044, 0.00266467, 421.14335628], [1516757400000, 0.00265999, 0.00265999, 0.00265999, 0.00265999, 3.90348182], [1516757460000, 0.00264212, 0.00264212, 0.00264044, 0.00264044, 43.18378349], [1516757520000, 0.00265991, 0.00265991, 0.00264044, 0.00264044, 33.60849054], [1516757580000, 0.00264047, 0.00266654, 0.00264044, 0.00266654, 1507.09830158], [1516757640000, 0.00264044, 0.00266, 0.00264044, 0.00266, 164.90674902], [1516757700000, 0.00264044, 0.0026599, 0.00263043, 0.0026599, 1381.75345654], [1516757760000, 0.0026599, 0.0026599, 0.00263106, 0.00263107, 30.0], [1516757820000, 0.00263114, 0.00263114, 0.00263114, 0.00263114, 20.0], [1516757880000, 0.0026325, 0.0026325, 0.0026325, 0.0026325, 1.39543272], [1516757940000, 0.00265832, 0.00265832, 0.00265831, 0.00265831, 4.38761034], [1516758000000, 0.00263302, 0.00263302, 0.00263292, 0.00263292, 87.58494524], [1516758060000, 0.00263251, 0.00264991, 0.00263251, 0.0026499, 68.99488748], [1516758120000, 0.00263254, 0.00264986, 0.00263254, 0.00264986, 3.2984382], [1516758180000, 0.0026498, 0.0026498, 0.0026498, 0.0026498, 1.40309779], [1516758240000, 0.002645, 0.0026498, 0.002645, 0.0026498, 9.63368244], [1516758300000, 0.00263306, 0.002647, 0.00263306, 0.002647, 14.21355526], [1516758360000, 0.00263306, 0.00263306, 0.00263306, 0.00263306, 6.48962718], [1516758420000, 0.00263312, 0.00264, 0.00263312, 0.00264, 32.56472874], [1516758480000, 0.00264, 0.00264, 0.00264, 0.00264, 12.49446133], [1516758540000, 0.00264, 0.002647, 0.00264, 0.002647, 3.03554213], [1516758600000, 0.002647, 0.002647, 0.002647, 0.002647, 10.0], [1516758720000, 0.00264699, 0.002647, 0.00264699, 0.002647, 41.23775639], [1516758780000, 0.00264699, 0.00264699, 0.00263293, 0.00264699, 33.27487917], [1516758840000, 0.00264699, 0.002647, 0.00263314, 0.002647, 141.44428842], [1516758900000, 0.002647, 0.002647, 0.002647, 0.002647, 24.07462445], [1516758960000, 0.00264699, 0.00264994, 0.00264699, 0.00264994, 104.86866321], [1516759020000, 0.00264994, 0.00264994, 0.00264994, 0.00264994, 20.56155091], [1516759080000, 0.00264994, 0.00264994, 0.00264994, 0.00264994, 147.00521213], [1516759140000, 0.00264994, 0.00264994, 0.00264994, 0.00264994, 624.72078846], [1516759200000, 0.00264694, 0.00264994, 0.00264694, 0.00264994, 17.24149886], [1516759260000, 0.00264994, 0.00264994, 0.00264994, 0.00264994, 189.30196863], [1516759320000, 0.00264994, 0.00264994, 0.00264994, 0.00264994, 11.8330408], [1516759380000, 0.00264994, 0.00264994, 0.002647, 0.002647, 15.94448683], [1516759440000, 0.002647, 0.002647, 0.002647, 0.002647, 77.49551951], [1516759500000, 0.002647, 0.002647, 0.002647, 0.002647, 1.24955853], [1516759560000, 0.002647, 0.002647, 0.002647, 0.002647, 0.41651951], [1516759620000, 0.002647, 0.002647, 0.002647, 0.002647, 0.83303902], [1516759680000, 0.002647, 0.002647, 0.002647, 0.002647, 0.83303902], [1516759740000, 0.00264694, 0.002647, 0.00264694, 0.002647, 1.29086193], [1516759860000, 0.00264694, 0.00264694, 0.00264694, 0.00264694, 43.43699416], [1516759920000, 0.002647, 0.002647, 0.002647, 0.002647, 57.12290689], [1516759980000, 0.002647, 0.00264994, 0.002647, 0.00264994, 286.10075402], [1516760040000, 0.00264694, 0.00264994, 0.00264694, 0.00264994, 4.07029089], [1516760100000, 0.00263652, 0.00264994, 0.00263652, 0.00264994, 24.66488805], [1516760160000, 0.00264994, 0.00264994, 0.00264994, 0.00264994, 0.41788922], [1516760220000, 0.00264994, 0.00264994, 0.00264168, 0.00264994, 45.2330668], [1516760280000, 0.00264994, 0.00264994, 0.0026364, 0.0026364, 96.18398944], [1516760340000, 0.00263847, 0.00264994, 0.00263847, 0.00264994, 23.37954727], [1516760400000, 0.00264994, 0.00264994, 0.00264994, 0.00264994, 8.44984885], [1516760460000, 0.0026495, 0.0026495, 0.00263631, 0.00263631, 322.00929212], [1516760520000, 0.00264312, 0.00264312, 0.00264312, 0.00264312, 11.37], [1516760580000, 0.00264994, 0.00264994, 0.00264312, 0.00264312, 14.62146435], [1516760640000, 0.00264312, 0.00264312, 0.00264312, 0.00264312, 288.5764106], [1516760700000, 0.00263636, 0.00263636, 0.00263636, 0.00263636, 0.45694094], [1516760760000, 0.00263632, 0.00264994, 0.00263632, 0.00264994, 164.69367784], [1516760820000, 0.00263634, 0.00263634, 0.00263634, 0.00263634, 14.44936771], [1516760880000, 0.00263656, 0.00263656, 0.00263634, 0.00263634, 1056.84165916], [1516760940000, 0.00264994, 0.00264994, 0.00264994, 0.00264994, 139.54342397], [1516761000000, 0.00263642, 0.0026583, 0.00263641, 0.0026583, 355.94743415], [1516761120000, 0.0026583, 0.0026583, 0.0026583, 0.0026583, 1.39617488], [1516761180000, 0.00263739, 0.00265739, 0.00263739, 0.00265739, 374.32986913], [1516761240000, 0.00265829, 0.00265829, 0.0026365, 0.00265739, 25.61606586], [1516761300000, 0.00265828, 0.00265829, 0.00265739, 0.00265739, 33.19245236], [1516761360000, 0.00265739, 0.00265739, 0.00265739, 0.00265739, 0.98178976], [1516761420000, 0.00265739, 0.00265828, 0.00265739, 0.00265739, 26.14936837], [1516761540000, 0.00265739, 0.00265827, 0.00265739, 0.00265739, 40.41476907], [1516761660000, 0.00265827, 0.00265827, 0.00265739, 0.00265739, 67.89973678], [1516761720000, 0.0026574, 0.0026574, 0.0026574, 0.0026574, 6.76], [1516761780000, 0.0026574, 0.0026629, 0.0026574, 0.0026629, 15.56296014], [1516761840000, 0.0026574, 0.0026574, 0.0026574, 0.0026574, 0.5150028], [1516761960000, 0.002662, 0.0026627, 0.002662, 0.0026627, 44.15509684], [1516762020000, 0.0026627, 0.0026627, 0.0026627, 0.0026627, 30.05542725], [1516762080000, 0.00266269, 0.0026627, 0.0026574, 0.0026574, 48.28748255], [1516762200000, 0.0026574, 0.0026574, 0.0026574, 0.0026574, 4.0], [1516762260000, 0.0026574, 0.0026574, 0.0026574, 0.0026574, 0.595259], [1516762320000, 0.0026574, 0.0026574, 0.0026574, 0.0026574, 40.0], [1516762380000, 0.0026574, 0.0026574, 0.00265739, 0.00265739, 120.24674003], [1516762440000, 0.0026574, 0.0026574, 0.00265739, 0.00265739, 490.12999999], [1516762500000, 0.00265739, 0.00266128, 0.00265739, 0.00266128, 8.47191449], [1516762560000, 0.00266128, 0.00266128, 0.00266128, 0.00266128, 13.19], [1516762620000, 0.00265739, 0.00265739, 0.00265739, 0.00265739, 87.12991326], [1516762680000, 0.00265729, 0.00265729, 0.00265729, 0.00265729, 0.839], [1516762800000, 0.00265728, 0.00265728, 0.00265728, 0.00265728, 5.64486993], [1516762860000, 0.00265728, 0.00265728, 0.00265728, 0.00265728, 34.80133902], [1516762920000, 0.00265725, 0.00265727, 0.00265725, 0.00265727, 74.6967028], [1516763040000, 0.002657, 0.002657, 0.002657, 0.002657, 12.96666985], [1516763100000, 0.002657, 0.00265727, 0.002657, 0.002657, 56.51237545], [1516763160000, 0.002657, 0.002657, 0.0026365, 0.00263651, 6.59482749], [1516763220000, 0.002657, 0.002657, 0.002657, 0.002657, 4.70053043], [1516763400000, 0.002657, 0.002657, 0.002657, 0.002657, 3.11916782], [1516763520000, 0.00263814, 0.00263814, 0.00263813, 0.00263813, 7.88974529], [1516763580000, 0.00263851, 0.00263851, 0.00263851, 0.00263851, 8.86019474], [1516763640000, 0.00263657, 0.00263657, 0.00263657, 0.00263657, 4.01003469], [1516763700000, 0.00263657, 0.00263657, 0.00263657, 0.00263657, 2.72355314], [1516763760000, 0.00265693, 0.00265693, 0.00265693, 0.00265693, 6.72720776], [1516763880000, 0.00263655, 0.00263657, 0.00263655, 0.00263655, 17.35], [1516763940000, 0.00263655, 0.00263655, 0.00263655, 0.00263655, 16.31242056], [1516764000000, 0.00265689, 0.00265689, 0.00265689, 0.00265689, 10.86942148], [1516764060000, 0.00263655, 0.00265689, 0.00263654, 0.00265689, 288.99235264], [1516764180000, 0.00265688, 0.00265688, 0.00265688, 0.00265688, 5.49651795], [1516764240000, 0.00265688, 0.00265689, 0.00265688, 0.00265689, 30.1], [1516764300000, 0.0026477, 0.0026477, 0.00263851, 0.00263851, 65.75651185], [1516764360000, 0.00263851, 0.00263851, 0.00263851, 0.00263851, 23.22], [1516764420000, 0.00263851, 0.00264428, 0.0026385, 0.00264428, 145.71086099], [1516764480000, 0.0026385, 0.0026385, 0.00263641, 0.00263641, 45.10133971], [1516764540000, 0.0026385, 0.0026385, 0.0026385, 0.0026385, 55.0477932], [1516764600000, 0.0026385, 0.0026385, 0.00263641, 0.0026384, 13.91434678], [1516764660000, 0.0026384, 0.00265497, 0.0026384, 0.00265497, 161.95956213], [1516764720000, 0.00263641, 0.00263641, 0.00263641, 0.00263641, 10.0], [1516764780000, 0.00263641, 0.00264569, 0.00260793, 0.00264569, 2498.74352286], [1516764840000, 0.00264569, 0.00265103, 0.00260849, 0.00264568, 23.93542872], [1516764900000, 0.00264567, 0.00264569, 0.00264567, 0.00264569, 30.68867065], [1516764960000, 0.00261524, 0.00264568, 0.00261524, 0.00264568, 141.95020607], [1516765020000, 0.00264567, 0.00264567, 0.00262626, 0.00264566, 137.48589307], [1516765080000, 0.00263939, 0.00264566, 0.00263939, 0.00264499, 85.23078446], [1516765140000, 0.002645, 0.002645, 0.00264498, 0.00264498, 18.61903361], [1516765200000, 0.00264497, 0.00264497, 0.00264497, 0.00264497, 7.56152242], [1516765260000, 0.00264497, 0.00264497, 0.00264497, 0.00264497, 10.03889221], [1516765320000, 0.00264498, 0.00264498, 0.00264498, 0.00264498, 4.6548], [1516765380000, 0.00264497, 0.00264497, 0.00264497, 0.00264497, 1.81315842], [1516765440000, 0.00264497, 0.00264498, 0.00264497, 0.00264498, 75.41840759], [1516765500000, 0.00264496, 0.00264566, 0.00264, 0.00264566, 208.41683471], [1516765560000, 0.00264566, 0.00264566, 0.00264566, 0.00264566, 5.16793552], [1516765620000, 0.00264566, 0.00264566, 0.002645, 0.002645, 2.46727327], [1516765680000, 0.00263067, 0.002645, 0.00263067, 0.002645, 93.85256276], [1516765740000, 0.002645, 0.00264566, 0.002645, 0.00264566, 590.24505526], [1516765800000, 0.00264566, 0.00264566, 0.00263178, 0.00264566, 154.41316227], [1516765860000, 0.00264566, 0.00264566, 0.00264566, 0.00264566, 121.2786582], [1516765920000, 0.00264566, 0.00264566, 0.00264544, 0.00264544, 1.68113433], [1516765980000, 0.00264544, 0.00264544, 0.00264544, 0.00264544, 107.52514745], [1516766040000, 0.00264544, 0.00264544, 0.00263369, 0.00264544, 64.14626931], [1516766100000, 0.00264544, 0.00264544, 0.00263535, 0.00264544, 65.42962051], [1516766160000, 0.00264544, 0.00264544, 0.00264544, 0.00264544, 8.91000413], [1516766220000, 0.00264566, 0.00264569, 0.00264566, 0.00264569, 17.23477647], [1516766280000, 0.00264569, 0.00264569, 0.00264566, 0.00264566, 37.57197882], [1516766340000, 0.00264569, 0.00264569, 0.00264569, 0.00264569, 97.3731473], [1516766400000, 0.00264569, 0.00264569, 0.00264566, 0.00264569, 57.69619835], [1516766460000, 0.00264569, 0.00264727, 0.00264569, 0.00264727, 184.57701912], [1516766520000, 0.00264727, 0.00265103, 0.00264727, 0.00265103, 1.88121407], [1516766580000, 0.00265103, 0.00265103, 0.00265103, 0.00265103, 7.95921575], [1516766640000, 0.00265103, 0.00265103, 0.00265103, 0.00265103, 68.79167438], [1516766700000, 0.002656, 0.00265689, 0.002656, 0.002656, 23.2732532], [1516766760000, 0.00265104, 0.00265104, 0.00264727, 0.00264727, 36.67607803], [1516766880000, 0.0026568, 0.0026568, 0.00265103, 0.00265103, 105.03753895], [1516766940000, 0.00265103, 0.00265698, 0.00265103, 0.00265698, 67.26676172], [1516767000000, 0.00265697, 0.00265697, 0.00264728, 0.00265103, 17.65034234], [1516767060000, 0.00265103, 0.00265729, 0.00265103, 0.00265729, 929.02235933], [1516767120000, 0.00265729, 0.00265806, 0.00265729, 0.00265729, 159.48089689], [1516767180000, 0.00265729, 0.00265806, 0.00265729, 0.00265806, 44.54539557], [1516767240000, 0.00265806, 0.00265806, 0.00265729, 0.00265729, 150.20491278], [1516767300000, 0.00265729, 0.00265806, 0.00265729, 0.00265729, 12.21776567], [1516767360000, 0.0026575, 0.00265965, 0.00265729, 0.00265729, 68.57507605], [1516767480000, 0.00265729, 0.00265729, 0.00265729, 0.00265729, 0.67242863], [1516767540000, 0.00265729, 0.00265729, 0.00265729, 0.00265729, 1.12514805], [1516767660000, 0.00265595, 0.00265729, 0.00265595, 0.00265729, 37.86971798], [1516767720000, 0.00265729, 0.00265729, 0.00264005, 0.00264981, 95.90564258], [1516767780000, 0.00265729, 0.00266068, 0.00265729, 0.00266068, 32.2241633], [1516767840000, 0.00266068, 0.00266068, 0.00266068, 0.00266068, 3.7e-07], [1516767900000, 0.00266, 0.00266, 0.00264, 0.00264, 12.49569872], [1516767960000, 0.00265004, 0.00265997, 0.00265, 0.00265, 614.27032188], [1516768020000, 0.00265, 0.00265, 0.00265, 0.00265, 488.07026385], [1516768140000, 0.00265, 0.00265, 0.00265, 0.00265, 11.40803086], [1516768200000, 0.00264, 0.00265, 0.00264, 0.00265, 19.04814717], [1516768260000, 0.00265, 0.00265, 0.00265, 0.00265, 11.89469588], [1516768380000, 0.00265, 0.00265, 0.00265, 0.00265, 9.03049099], [1516768440000, 0.00264499, 0.00264499, 0.00264499, 0.00264499, 3.14921368], [1516768500000, 0.00264499, 0.00265, 0.00264499, 0.00264499, 247.70840349], [1516768560000, 0.00264499, 0.00265, 0.00264499, 0.00265, 201.05396327], [1516768620000, 0.00265, 0.00265, 0.00265, 0.00265, 100.39508247], [1516768680000, 0.00265, 0.00265001, 0.00265, 0.00265, 32.56577574], [1516768800000, 0.002655, 0.00266, 0.002655, 0.002655, 14.17465273], [1516768860000, 0.00266, 0.00266011, 0.00266, 0.00266009, 155.60738225], [1516768920000, 0.0026601, 0.00266479, 0.0026601, 0.0026601, 477.16311071], [1516768980000, 0.0026601, 0.002666, 0.00266009, 0.002666, 345.78279016], [1516769040000, 0.00266009, 0.00266009, 0.00266009, 0.00266009, 74.98644356], [1516769100000, 0.00266654, 0.00266655, 0.00266009, 0.00266654, 58.36648475], [1516769160000, 0.00266009, 0.00266009, 0.00266009, 0.00266009, 2.64891932], [1516769220000, 0.00266009, 0.00266009, 0.00266009, 0.00266009, 273.02293187], [1516769280000, 0.00266009, 0.00266009, 0.00266009, 0.00266009, 5.09618405], [1516769340000, 0.00266009, 0.00266655, 0.00266009, 0.00266009, 6.91193452], [1516769400000, 0.00266009, 0.00266009, 0.00266009, 0.00266009, 0.82891932], [1516769460000, 0.00266009, 0.00266655, 0.00266009, 0.00266655, 22.82312189], [1516769580000, 0.00266009, 0.00266009, 0.00266009, 0.00266009, 3.86273552], [1516769640000, 0.00266009, 0.00266654, 0.00266009, 0.00266009, 16.67631662], [1516769700000, 0.00266009, 0.00266655, 0.00265, 0.00265, 23.08793491], [1516769760000, 0.00265, 0.00266652, 0.00265, 0.00266652, 22.04528916], [1516769820000, 0.00266651, 0.00266651, 0.00265, 0.00266649, 34.97888439], [1516769880000, 0.00265, 0.00265, 0.00265, 0.00265, 14.45036776], [1516769940000, 0.00266649, 0.0026665, 0.00266649, 0.00266649, 3.69648157], [1516770000000, 0.00266648, 0.0026665, 0.00266648, 0.00266648, 5.62537971], [1516770120000, 0.00266647, 0.00266647, 0.00266647, 0.00266647, 1.19903728], [1516770240000, 0.00265, 0.00265, 0.00265, 0.00265, 38.22513164], [1516770300000, 0.00265002, 0.00265002, 0.00265002, 0.00265002, 3.0], [1516770480000, 0.0026501, 0.00266652, 0.0026501, 0.00266652, 45.94259816], [1516770720000, 0.00265015, 0.00265015, 0.00265015, 0.00265015, 21.09222673], [1516770780000, 0.0026645, 0.0026645, 0.0026645, 0.0026645, 8.71499409], [1516770840000, 0.0026644, 0.0026645, 0.0026644, 0.0026645, 30.67391588], [1516770900000, 0.0026645, 0.0026645, 0.0026645, 0.0026645, 5.0], [1516770960000, 0.0026645, 0.0026645, 0.00265016, 0.00265016, 504.73613823], [1516771020000, 0.00265016, 0.00265016, 0.00265, 0.00265, 115.28963362], [1516771080000, 0.00264183, 0.00265, 0.00264182, 0.00265, 269.2368457], [1516771140000, 0.00265, 0.00265, 0.00264184, 0.00265, 160.97041115], [1516771200000, 0.00265, 0.00265, 0.00265, 0.00265, 116.0039276], [1516771260000, 0.00265, 0.00265, 0.00265, 0.00265, 0.83463142], [1516771320000, 0.00265, 0.00265, 0.00265, 0.00265, 2.52462285], [1516771380000, 0.00265, 0.00265, 0.00265, 0.00265, 21.22509063], [1516771440000, 0.00264183, 0.00264183, 0.00264183, 0.00264183, 69.95583022], [1516771500000, 0.00264183, 0.00265, 0.00264043, 0.00264043, 358.05713117], [1516771560000, 0.00265, 0.00265, 0.00265, 0.00265, 0.50593671], [1516771620000, 0.00264045, 0.00264045, 0.00264045, 0.00264045, 18.0], [1516771680000, 0.00264045, 0.00265, 0.00264045, 0.00265, 6.78197894], [1516771740000, 0.00265, 0.00265, 0.00264091, 0.00264091, 12.29245283], [1516771800000, 0.00264091, 0.00265, 0.00264041, 0.00264041, 347.59960189], [1516771860000, 0.00264041, 0.0026501, 0.00264001, 0.0026501, 52.49512251], [1516771920000, 0.0026501, 0.0026501, 0.0026501, 0.0026501, 0.58668087], [1516772040000, 0.00264001, 0.00265, 0.00264001, 0.00265, 53.34769045], [1516772100000, 0.00265, 0.00265, 0.00265, 0.00265, 4.2993067], [1516772220000, 0.00264999, 0.00264999, 0.00264002, 0.00264002, 8.31857081], [1516772280000, 0.00264001, 0.00264001, 0.00264001, 0.00264001, 6.04663017], [1516772340000, 0.00264002, 0.00264002, 0.00264001, 0.00264001, 163.42376778], [1516772460000, 0.00264001, 0.00264001, 0.00264001, 0.00264001, 89.0642764], [1516772520000, 0.00264001, 0.00264001, 0.00264001, 0.00264001, 1.72846499], [1516772580000, 0.00264001, 0.00264002, 0.00264001, 0.00264002, 30.21155942], [1516772640000, 0.00264002, 0.00264002, 0.00264002, 0.00264002, 3.42631701], [1516772700000, 0.00264999, 0.00264999, 0.00264999, 0.00264999, 1.03516117], [1516772760000, 0.00264999, 0.00264999, 0.00264109, 0.00264109, 15.24180456], [1516772820000, 0.00264999, 0.00265, 0.00264005, 0.00265, 99.25746361], [1516772880000, 0.00265, 0.00265, 0.00264013, 0.00264999, 89.217757], [1516772940000, 0.00264999, 0.00265, 0.00264999, 0.00265, 16.46423438], [1516773000000, 0.00265, 0.0026501, 0.00265, 0.0026501, 410.96266604], [1516773060000, 0.0026501, 0.0026501, 0.0026501, 0.0026501, 4.8e-07], [1516773120000, 0.00265015, 0.00266, 0.00265015, 0.00266, 22.11001516], [1516773180000, 0.00266, 0.00266, 0.00266, 0.00266, 5.08440899], [1516773240000, 0.00266, 0.00266, 0.00266, 0.00266, 87.5674275], [1516773300000, 0.00266, 0.00266, 0.002658, 0.00266, 12.53285809], [1516773420000, 0.00266, 0.00266, 0.00266, 0.00266, 8.0], [1516773480000, 0.00266, 0.00266, 0.00266, 0.00266, 3.91996125], [1516773540000, 0.00266, 0.00266, 0.00264052, 0.00264052, 2.7518797], [1516773600000, 0.00265045, 0.00265045, 0.00265045, 0.00265045, 18.56706736], [1516773660000, 0.00265045, 0.00265045, 0.00265045, 0.00265045, 12.43293264], [1516773720000, 0.00265, 0.00266, 0.00265, 0.00266, 2.40861971], [1516773780000, 0.00266, 0.00266, 0.002651, 0.002651, 8.13578337], [1516773840000, 0.002651, 0.002651, 0.002651, 0.002651, 47.3810614], [1516773900000, 0.002652, 0.002652, 0.002652, 0.002652, 5.32], [1516774080000, 0.002653, 0.002653, 0.002652, 0.002652, 24.939756], [1516774140000, 0.002652, 0.002652, 0.002652, 0.002652, 8.626586], [1516774200000, 0.002652, 0.00265982, 0.002652, 0.002652, 15.77308987], [1516774260000, 0.002652, 0.002652, 0.002652, 0.002652, 2.48736296], [1516774320000, 0.002652, 0.002652, 0.002652, 0.002652, 0.41572398], [1516774380000, 0.002652, 0.002652, 0.002652, 0.002652, 5.82144796], [1516774440000, 0.002652, 0.002652, 0.002652, 0.002652, 1.83144796], [1516774500000, 0.0026525, 0.0026525, 0.002652, 0.002652, 4.05341183], [1516774560000, 0.002652, 0.002653, 0.00265, 0.002653, 329.60076971], [1516774620000, 0.002653, 0.002653, 0.002653, 0.002653, 5.80554093], [1516774680000, 0.002653, 0.002653, 0.002652, 0.002652, 104.33793769], [1516774740000, 0.0026505, 0.002652, 0.0026505, 0.0026505, 266.84499588], [1516774800000, 0.00265, 0.002653, 0.00265, 0.00265299, 165.27206821], [1516774860000, 0.00265299, 0.00265299, 0.00265299, 0.00265299, 20.0], [1516774920000, 0.00265, 0.00265, 0.00264058, 0.00264058, 123.54627674], [1516774980000, 0.00264074, 0.00264074, 0.00264074, 0.00264074, 95.98245476], [1516775280000, 0.00265298, 0.00265298, 0.00265298, 0.00265298, 1.5197044], [1516775340000, 0.00264214, 0.00265298, 0.00264214, 0.00265297, 46.27100532], [1516775400000, 0.00265297, 0.00265298, 0.00265297, 0.00265298, 145.47889422], [1516775520000, 0.00264245, 0.00265297, 0.00264014, 0.00265297, 2084.94207175], [1516775580000, 0.00264014, 0.00265297, 0.00264014, 0.00265297, 5.09638786], [1516775640000, 0.00265297, 0.00265297, 0.00265297, 0.00265297, 3.76936038], [1516775700000, 0.00264022, 0.00264022, 0.00263555, 0.00263555, 824.35020454], [1516775760000, 0.00264021, 0.00264021, 0.00261626, 0.00262072, 2347.21653932], [1516775940000, 0.00262313, 0.00262313, 0.00262244, 0.00262244, 1232.71873712], [1516776000000, 0.00264965, 0.00264967, 0.00261612, 0.00261612, 400.64395431], [1516776060000, 0.00264882, 0.00264882, 0.0026354, 0.0026354, 5.56620012], [1516776120000, 0.00264858, 0.00264858, 0.00262205, 0.00262205, 54.38269241], [1516776180000, 0.00264498, 0.00264498, 0.00262206, 0.00264448, 13.54430299], [1516776240000, 0.00264447, 0.00264447, 0.00264, 0.00264, 18.77281888], [1516776300000, 0.00264, 0.00264361, 0.00263108, 0.00263109, 56.24773482], [1516776360000, 0.00263109, 0.00264285, 0.00263109, 0.00264285, 55.08407933], [1516776420000, 0.00264436, 0.00264436, 0.00263109, 0.00264435, 125.62], [1516776480000, 0.00263109, 0.00264397, 0.00262217, 0.002623, 8.13800211], [1516776540000, 0.00264397, 0.00264398, 0.002623, 0.00264396, 12.61671309], [1516776600000, 0.00264395, 0.00264396, 0.00264395, 0.00264395, 9.44341739], [1516776720000, 0.0026439, 0.0026439, 0.00264387, 0.00264389, 63.74323574], [1516776840000, 0.00264299, 0.00264299, 0.00264298, 0.00264298, 53.27234029], [1516776900000, 0.00264298, 0.00264298, 0.00264001, 0.00264001, 4.20121994], [1516776960000, 0.00264001, 0.00264007, 0.00264, 0.00264007, 10.22959633], [1516777020000, 0.00264298, 0.002643, 0.00264, 0.00264, 32.35657879], [1516777080000, 0.00264, 0.00264, 0.00264, 0.00264, 0.83522728], [1516777140000, 0.00264001, 0.00264001, 0.00264, 0.00264, 1302.8760238], [1516777200000, 0.00264, 0.00264, 0.00264, 0.00264, 65.21584958], [1516777260000, 0.00264, 0.00264, 0.00264, 0.00264, 0.55673145], [1516777320000, 0.00263029, 0.00263029, 0.00263, 0.00263, 292.1302952], [1516777380000, 0.00263, 0.00264, 0.00263, 0.00263, 22.84248553], [1516777500000, 0.00263992, 0.00263992, 0.00263992, 0.00263992, 1.30767314], [1516777560000, 0.00263992, 0.00263992, 0.002632, 0.002632, 17.77792676], [1516777620000, 0.002632, 0.00263966, 0.002632, 0.002632, 29.02499183], [1516777680000, 0.00263201, 0.00263201, 0.002632, 0.002632, 54.83776437], [1516777740000, 0.00264, 0.00264, 0.002632, 0.002632, 268.31151213], [1516777800000, 0.002632, 0.002632, 0.002632, 0.002632, 15.61645136], [1516777860000, 0.002632, 0.00263992, 0.002632, 0.00263201, 52.38815515], [1516777920000, 0.00263202, 0.00263301, 0.00263202, 0.00263301, 0.83760369], [1516777980000, 0.002633, 0.00263301, 0.002632, 0.002632, 402.98242619], [1516778040000, 0.002632, 0.002632, 0.00263, 0.00263001, 193.40716861], [1516778100000, 0.00263001, 0.00263899, 0.00263001, 0.00263001, 55.62772835], [1516778160000, 0.00263001, 0.00263001, 0.00261932, 0.0026201, 380.6729781], [1516778220000, 0.00263001, 0.00263892, 0.0026201, 0.00263892, 51.74848991], [1516778280000, 0.00263863, 0.00263872, 0.00262011, 0.00263872, 14.46582639], [1516778340000, 0.00263872, 0.00263872, 0.00263872, 0.00263872, 8.0], [1516778400000, 0.00263872, 0.00263872, 0.0026204, 0.0026204, 8.33976185], [1516778460000, 0.00263872, 0.00263872, 0.00263872, 0.00263872, 25.7099433], [1516778520000, 0.0026208, 0.0026387, 0.00262012, 0.0026387, 141.75147124], [1516778580000, 0.0026387, 0.0026387, 0.0026387, 0.0026387, 8.0], [1516778640000, 0.0026387, 0.00263871, 0.002636, 0.002636, 96.21331592], [1516778700000, 0.002636, 0.00263872, 0.002636, 0.002636, 17.88392591], [1516778760000, 0.002636, 0.002636, 0.002636, 0.002636, 105.84718146], [1516778820000, 0.002636, 0.00263872, 0.002636, 0.002636, 202.01165023], [1516778880000, 0.002636, 0.002636, 0.002636, 0.002636, 7.56831555], [1516778940000, 0.00262101, 0.002636, 0.00262101, 0.002636, 36.88017176], [1516779000000, 0.002636, 0.002636, 0.00262049, 0.00262785, 74.45809914], [1516779060000, 0.002637, 0.002637, 0.00262785, 0.00262785, 242.27840692], [1516779120000, 0.00262785, 0.00262785, 0.002621, 0.00262785, 28.13987349], [1516779180000, 0.00262785, 0.00262785, 0.00262784, 0.00262784, 10.84536788], [1516779240000, 0.00262784, 0.00262785, 0.00262784, 0.00262785, 276.97925764], [1516779300000, 0.00262785, 0.002637, 0.00262785, 0.00262785, 905.94573021], [1516779360000, 0.00262785, 0.00262785, 0.00262785, 0.00262785, 32.57932032], [1516779420000, 0.00262785, 0.00262785, 0.00262785, 0.00262785, 325.15979327], [1516779480000, 0.00262785, 0.00263109, 0.00262606, 0.00262785, 16.42105348], [1516779540000, 0.00263109, 0.00263872, 0.00263109, 0.00263872, 278.45866557], [1516779600000, 0.00262648, 0.002637, 0.00262608, 0.00262608, 12.10205221], [1516779660000, 0.002637, 0.002637, 0.00262606, 0.00262606, 223.29581665], [1516779720000, 0.00262739, 0.002637, 0.00262606, 0.00262606, 106.21861775], [1516779840000, 0.00263699, 0.00263863, 0.00262606, 0.00262606, 134.75630783], [1516779900000, 0.00263871, 0.00263872, 0.00262606, 0.00263864, 43.17017676], [1516779960000, 0.00263864, 0.00263864, 0.00263864, 0.00263864, 19.29776374], [1516780020000, 0.00263864, 0.00263864, 0.00263864, 0.00263864, 13.71782888], [1516780080000, 0.00263864, 0.00263872, 0.00263864, 0.00263865, 204.75953939], [1516780140000, 0.00263865, 0.00263865, 0.00263865, 0.00263865, 0.8356546], [1516780200000, 0.00263865, 0.00263865, 0.00263864, 0.00263864, 1160.77784586], [1516780260000, 0.00263865, 0.00263872, 0.00263865, 0.00263865, 74.0], [1516780320000, 0.00263865, 0.00263872, 0.00263865, 0.00263869, 27.656069], [1516780380000, 0.00263585, 0.00263869, 0.00263585, 0.00263585, 7.18051104], [1516780440000, 0.00263585, 0.00263586, 0.00263585, 0.00263586, 4.75455447], [1516780500000, 0.00263586, 0.00263586, 0.00263586, 0.00263586, 2.58172885], [1516780560000, 0.00263585, 0.00263586, 0.00263585, 0.00263586, 187.4608106], [1516780620000, 0.00263585, 0.00263871, 0.0026261, 0.00263871, 45.72576935], [1516780680000, 0.00262611, 0.00262611, 0.0026261, 0.0026261, 8.1097561], [1516780740000, 0.0026261, 0.00263871, 0.0026261, 0.00263871, 31.88625241], [1516780800000, 0.0026261, 0.0026387, 0.0026261, 0.0026387, 10.52353968], [1516780860000, 0.0026261, 0.0026261, 0.0026261, 0.0026261, 37.68886941], [1516780920000, 0.0026261, 0.0026387, 0.0026261, 0.0026261, 31.44811847], [1516780980000, 0.0026261, 0.0026269, 0.0026261, 0.0026269, 7.14202982], [1516781040000, 0.0026269, 0.0026387, 0.0026269, 0.0026387, 25.53303742], [1516781100000, 0.0026387, 0.0026387, 0.0026387, 0.0026387, 3.78974495], [1516781160000, 0.0026383, 0.0026383, 0.0026383, 0.0026383, 28.56399078], [1516781220000, 0.00262733, 0.00262733, 0.0026261, 0.0026261, 137.5], [1516781280000, 0.00263869, 0.00263869, 0.00262612, 0.00262612, 16.42578819], [1516781340000, 0.00263, 0.00263, 0.00263, 0.00263, 22.32759988], [1516781400000, 0.00263, 0.00263868, 0.00262621, 0.00262621, 7.35384751], [1516781460000, 0.00262621, 0.00262621, 0.00262615, 0.00262621, 6.41981669], [1516781520000, 0.00262615, 0.00263, 0.00262614, 0.00263, 27.20419322], [1516781580000, 0.00263, 0.00263869, 0.00262999, 0.00262999, 418.59277567], [1516781640000, 0.00262999, 0.00262999, 0.00262613, 0.00262613, 6.03264021], [1516781700000, 0.00262614, 0.00262614, 0.00262202, 0.0026261, 528.26973173], [1516781760000, 0.00262203, 0.0026261, 0.00262202, 0.00262202, 12.97792975], [1516781820000, 0.0026261, 0.0026261, 0.0026261, 0.0026261, 16.33009091], [1516781880000, 0.0026261, 0.0026261, 0.002622, 0.002622, 358.37608052], [1516781940000, 0.00262212, 0.0026261, 0.00262212, 0.00262222, 121.79853055], [1516782000000, 0.00262222, 0.0026261, 0.00262222, 0.0026261, 249.56550192], [1516782060000, 0.0026261, 0.0026261, 0.00262041, 0.00262041, 45.1157651], [1516782120000, 0.00262041, 0.0026261, 0.00262041, 0.0026261, 11.90045461], [1516782240000, 0.00262041, 0.0026261, 0.00262041, 0.0026261, 5.67316545], [1516782300000, 0.00262609, 0.00262609, 0.00262609, 0.00262609, 9.11260759], [1516782360000, 0.00262043, 0.00262043, 0.00262042, 0.00262042, 70.45139427], [1516782420000, 0.00262042, 0.00262609, 0.00262042, 0.00262609, 17.8456275], [1516782480000, 0.00262609, 0.00262609, 0.00262609, 0.00262609, 31.0932843], [1516782540000, 0.00262609, 0.00262609, 0.00262609, 0.00262609, 65.19341694], [1516782600000, 0.00262609, 0.00263865, 0.00262609, 0.00263865, 340.06556645], [1516782660000, 0.00263865, 0.00263865, 0.00263865, 0.00263865, 11.26979925], [1516782720000, 0.00262611, 0.00263865, 0.00262611, 0.00263865, 7.90151826], [1516782780000, 0.00263865, 0.00263865, 0.00263865, 0.00263865, 2.07260665], [1516782840000, 0.0026261, 0.00263865, 0.0026261, 0.00263865, 9.2417497], [1516782900000, 0.00263865, 0.00263865, 0.00263865, 0.00263865, 11.76014222], [1516782960000, 0.00263865, 0.00263865, 0.0026261, 0.0026261, 56.64160712], [1516783020000, 0.00262611, 0.002638, 0.0026261, 0.00262611, 274.19696669], [1516783080000, 0.0026261, 0.0026261, 0.0026261, 0.0026261, 69.46508808], [1516783140000, 0.00262611, 0.002638, 0.00262611, 0.00263792, 8.60854267], [1516783260000, 0.00262611, 0.00263633, 0.00262611, 0.00263633, 36.82076303], [1516783320000, 0.002637, 0.002637, 0.002637, 0.002637, 6.85114548], [1516783380000, 0.00263633, 0.002637, 0.00263633, 0.002637, 12.05477121], [1516783440000, 0.00263666, 0.002637, 0.00263666, 0.002637, 3.44059594], [1516783500000, 0.00263666, 0.002637, 0.00263625, 0.002637, 46.02059984], [1516783560000, 0.002637, 0.002637, 0.002637, 0.002637, 7.69197376], [1516783620000, 0.002637, 0.0026379, 0.002637, 0.00263701, 394.93142491], [1516783680000, 0.00263701, 0.00263701, 0.00263701, 0.00263701, 55.53504882], [1516783740000, 0.00263701, 0.00263701, 0.00263693, 0.00263693, 80.56202656], [1516783800000, 0.00262622, 0.00263701, 0.00262622, 0.00262641, 23.08880695], [1516783860000, 0.00262643, 0.00263693, 0.00262643, 0.00263693, 3.05245235], [1516783980000, 0.00262708, 0.00262708, 0.00262708, 0.00262708, 33.26], [1516784040000, 0.00263661, 0.00263661, 0.00263661, 0.00263661, 13.68616591], [1516784100000, 0.00263609, 0.00263701, 0.00262702, 0.00263701, 42.70880809], [1516784160000, 0.00263701, 0.0026379, 0.00263661, 0.00263788, 123.78565235], [1516784220000, 0.00262729, 0.00263788, 0.00262726, 0.00263335, 416.07901851], [1516784280000, 0.00263787, 0.00263787, 0.00263787, 0.00263787, 0.75628914], [1516784340000, 0.00263787, 0.00263787, 0.00263335, 0.00263335, 2.24463633], [1516784400000, 0.00263787, 0.00263787, 0.00263787, 0.00263787, 7.58187476], [1516784460000, 0.00263787, 0.00263787, 0.00263787, 0.00263787, 4.013003], [1516784520000, 0.00263787, 0.00263787, 0.00263787, 0.00263787, 2.0], [1516784580000, 0.00263737, 0.00263737, 0.00262723, 0.00262723, 111.8753587], [1516784640000, 0.00263737, 0.00263737, 0.00262745, 0.00262745, 11.80809242], [1516784700000, 0.00263737, 0.00263788, 0.00263737, 0.00263788, 274.8808121], [1516784760000, 0.00263788, 0.00263788, 0.00263788, 0.00263788, 0.6333119], [1516784820000, 0.00263788, 0.00263788, 0.00262746, 0.00263787, 178.18231517], [1516784880000, 0.0026379, 0.0026379, 0.0026379, 0.0026379, 10.0], [1516784940000, 0.0026379, 0.0026379, 0.00263787, 0.00263787, 65.08518911], [1516785000000, 0.0026379, 0.0026379, 0.00263787, 0.00263787, 38.25253387], [1516785060000, 0.0026379, 0.0026379, 0.0026379, 0.0026379, 173.55703209], [1516785180000, 0.0026379, 0.0026379, 0.0026379, 0.0026379, 45.37700444], [1516785300000, 0.0026379, 0.0026379, 0.0026379, 0.0026379, 27.2978248], [1516785360000, 0.0026379, 0.0026379, 0.0026379, 0.0026379, 12.47998696], [1516785420000, 0.0026379, 0.0026379, 0.0026379, 0.0026379, 186.43489784], [1516785480000, 0.0026379, 0.0026379, 0.0026379, 0.0026379, 44.98872097], [1516785540000, 0.00263788, 0.00263788, 0.00263787, 0.00263787, 29.2620858], [1516785600000, 0.00263787, 0.0026379, 0.00263787, 0.0026379, 102.870463], [1516785660000, 0.00263787, 0.0026379, 0.00263787, 0.0026379, 76.00676929], [1516785720000, 0.0026379, 0.0026379, 0.0026379, 0.0026379, 202.15627431], [1516785780000, 0.0026379, 0.0026379, 0.0026379, 0.0026379, 2.36065168], [1516785840000, 0.0026379, 0.0026379, 0.00262746, 0.00262746, 41.99142052], [1516785900000, 0.0026379, 0.0026379, 0.00262746, 0.00262746, 33.5069167], [1516785960000, 0.00262746, 0.0026379, 0.00262745, 0.00262745, 64.80123727], [1516786020000, 0.00262745, 0.00262745, 0.00262745, 0.00262745, 7.62127862], [1516786080000, 0.0026275, 0.0026275, 0.00262745, 0.00262745, 5.82135215], [1516786140000, 0.00263779, 0.00263779, 0.00263779, 0.00263779, 5.0], [1516786200000, 0.00263779, 0.00263779, 0.00263779, 0.00263779, 17.41501471], [1516786260000, 0.00263779, 0.00263779, 0.00263779, 0.00263779, 34.93035807], [1516786380000, 0.002628, 0.002628, 0.002628, 0.002628, 11.22251699], [1516786440000, 0.002628, 0.00263779, 0.0026279, 0.00263779, 174.83264508], [1516786500000, 0.00262747, 0.0026279, 0.00262747, 0.0026279, 2.90055613], [1516786560000, 0.0026279, 0.0026279, 0.0026279, 0.0026279, 4.5], [1516786620000, 0.00262791, 0.00262791, 0.00262791, 0.00262791, 4.19631645], [1516786680000, 0.00262801, 0.00262804, 0.002628, 0.00262803, 61.16715649], [1516786740000, 0.00262803, 0.00263779, 0.00262803, 0.00263779, 303.66952576], [1516786800000, 0.00262804, 0.00262804, 0.00262804, 0.00262804, 1.99971144], [1516786860000, 0.00262804, 0.00263779, 0.00262804, 0.00263775, 94.99252884], [1516786920000, 0.00263775, 0.00263779, 0.00263775, 0.00263779, 350.39348841], [1516786980000, 0.00263779, 0.00263779, 0.00263775, 0.00263779, 34.66706931], [1516787040000, 0.00263775, 0.00263779, 0.00263775, 0.00263779, 57.41572094], [1516787100000, 0.00263779, 0.00263779, 0.00263775, 0.00263775, 229.40926454], [1516787160000, 0.00263775, 0.00263779, 0.00263775, 0.00263779, 154.75123058], [1516787220000, 0.00263778, 0.0026378, 0.00263778, 0.0026378, 159.77], [1516787280000, 0.00263778, 0.0026378, 0.00263778, 0.0026378, 5.0275528], [1516787340000, 0.00263778, 0.00263792, 0.00263778, 0.00263792, 467.89548443], [1516787400000, 0.00263792, 0.00263867, 0.00263779, 0.00263867, 64.06225959], [1516787460000, 0.00263778, 0.00263999, 0.00263081, 0.00263778, 807.41250926], [1516787520000, 0.00263083, 0.00264, 0.0026308, 0.00263083, 95.88926332], [1516787640000, 0.00264, 0.00264, 0.00263083, 0.00263083, 3.23157453], [1516787700000, 0.00263089, 0.002639, 0.00263089, 0.002639, 40.84702932], [1516787760000, 0.002639, 0.002639, 0.002639, 0.002639, 1.17343647], [1516787820000, 0.002639, 0.002639, 0.002639, 0.002639, 0.5], [1516787880000, 0.00263899, 0.00263899, 0.00263898, 0.00263898, 2.61623715], [1516787940000, 0.0026309, 0.0026309, 0.00262803, 0.00262803, 30.50590823], [1516788000000, 0.00262803, 0.00262803, 0.00262803, 0.00262803, 30.81660563], [1516788060000, 0.00262801, 0.00262803, 0.00262795, 0.00262795, 27.29130441], [1516788120000, 0.00262803, 0.0026309, 0.00262795, 0.00262795, 17.59928547], [1516788180000, 0.0026309, 0.0026309, 0.00262723, 0.0026309, 37.69031877], [1516788240000, 0.00262723, 0.0026309, 0.00262722, 0.0026309, 45.48733762], [1516788300000, 0.0026309, 0.0026309, 0.00262722, 0.00262722, 86.96561115], [1516788360000, 0.0026309, 0.0026309, 0.0026204, 0.0026204, 241.57437823], [1516788420000, 0.00262042, 0.0026309, 0.0026165, 0.0026309, 115.16465837], [1516788480000, 0.002629, 0.002629, 0.0026166, 0.0026166, 17.47], [1516788540000, 0.0026166, 0.0026166, 0.0026166, 0.0026166, 8.09613501], [1516788600000, 0.0026209, 0.0026209, 0.0026209, 0.0026209, 2.13164188], [1516788660000, 0.0026209, 0.0026309, 0.0026169, 0.0026309, 259.47751958], [1516788720000, 0.0026309, 0.0026309, 0.0026309, 0.0026309, 48.30961102], [1516788780000, 0.0026309, 0.0026309, 0.00261699, 0.00261699, 23.04095833], [1516788900000, 0.00263085, 0.0026309, 0.00262005, 0.00262005, 40.91555998], [1516788960000, 0.00263088, 0.00263088, 0.00263088, 0.00263088, 12.5433315], [1516789020000, 0.00263083, 0.00263083, 0.00262009, 0.00262009, 123.20634953], [1516789080000, 0.00262009, 0.00262009, 0.00261842, 0.00261842, 12.11211276], [1516789140000, 0.00261846, 0.00261846, 0.00261846, 0.00261846, 3.20676803], [1516789200000, 0.00261847, 0.00263083, 0.00261847, 0.00263083, 6.03481054], [1516789260000, 0.00261847, 0.00261847, 0.00261847, 0.00261847, 82.63034933], [1516789320000, 0.00261847, 0.00261847, 0.00261847, 0.00261847, 0.38468094], [1516789380000, 0.00261847, 0.00262397, 0.00261847, 0.00262397, 5.27018374], [1516789440000, 0.00262397, 0.00262397, 0.00262397, 0.00262397, 11.90966086], [1516789500000, 0.00261843, 0.00261844, 0.00261692, 0.00261692, 44.38539445], [1516789560000, 0.0026184, 0.00261844, 0.0026176, 0.00261844, 20.53595939], [1516789620000, 0.00261844, 0.00261844, 0.00261843, 0.00261844, 179.98470151], [1516789680000, 0.00261844, 0.00261844, 0.00261844, 0.00261844, 74.8362836], [1516789740000, 0.00261844, 0.00261844, 0.00261844, 0.00261844, 273.51860909], [1516789800000, 0.00261844, 0.00262398, 0.00261844, 0.00262398, 665.70597453], [1516789860000, 0.00262398, 0.00262398, 0.00261844, 0.00262398, 21.52689051], [1516789920000, 0.00261845, 0.00261845, 0.0026176, 0.0026176, 149.14043189], [1516789980000, 0.0026176, 0.00261844, 0.0026176, 0.00261761, 75.05864286], [1516790040000, 0.00261761, 0.00261844, 0.00261761, 0.00261844, 174.58034124], [1516790100000, 0.00261844, 0.00261844, 0.00261844, 0.00261844, 8.98585668], [1516790160000, 0.00261844, 0.00261844, 0.00261844, 0.00261844, 219.4020359], [1516790220000, 0.00261844, 0.00261844, 0.00261844, 0.00261844, 2.42507682], [1516790280000, 0.00261844, 0.00261844, 0.00261844, 0.00261844, 58.94346719], [1516790340000, 0.00261844, 0.00261844, 0.00261844, 0.00261844, 11.54467266], [1516790400000, 0.00261832, 0.00261844, 0.00261831, 0.00261844, 480.87886918], [1516790460000, 0.00261844, 0.00261844, 0.00261831, 0.00261844, 2.84215794], [1516790520000, 0.00261844, 0.00261844, 0.00261826, 0.00261844, 23.84899703], [1516790580000, 0.00261844, 0.00261844, 0.00261827, 0.00261844, 52.87426853], [1516790640000, 0.00261844, 0.00261844, 0.00261844, 0.00261844, 0.84215989], [1516790700000, 0.00261844, 0.00261844, 0.00261829, 0.00261829, 25.31215608], [1516790760000, 0.00261829, 0.00261829, 0.00261829, 0.00261829, 130.27833747], [1516790820000, 0.00261827, 0.00261829, 0.00261827, 0.00261827, 19.05088293], [1516790880000, 0.00261827, 0.00261829, 0.00261827, 0.00261829, 49.0189], [1516790940000, 0.00261829, 0.00261829, 0.00261825, 0.00261827, 17.13410306], [1516791000000, 0.00261826, 0.00261826, 0.0026176, 0.0026176, 14.02355412], [1516791060000, 0.00261826, 0.00261826, 0.0026176, 0.00261826, 179.69982427], [1516791120000, 0.00261826, 0.00261826, 0.00261826, 0.00261826, 40.7801738], [1516791180000, 0.00261825, 0.00261844, 0.0026176, 0.00261829, 1538.46782798], [1516791240000, 0.00262398, 0.00262398, 0.00262398, 0.00262398, 250.65737549], [1516791300000, 0.00262398, 0.00262398, 0.00262398, 0.00262398, 11.43301395], [1516791360000, 0.00262398, 0.00262398, 0.00261833, 0.00261833, 2.79384041], [1516791420000, 0.00261833, 0.00261833, 0.00261833, 0.00261833, 43.0], [1516791480000, 0.00261835, 0.002623, 0.00261833, 0.002623, 121.74177146], [1516791540000, 0.002623, 0.0026239, 0.002623, 0.0026239, 94.85817762], [1516791600000, 0.00261838, 0.0026239, 0.00261838, 0.0026239, 34.58172474], [1516791660000, 0.00261839, 0.0026239, 0.00261833, 0.0026239, 51.7589428], [1516791720000, 0.0026239, 0.0026239, 0.00262, 0.0026239, 10.57571027], [1516791780000, 0.00262388, 0.00262388, 0.00262388, 0.00262388, 38.68353548], [1516791840000, 0.00262388, 0.00262388, 0.00262, 0.00262, 24.48284388], [1516791900000, 0.00262, 0.00262388, 0.00261854, 0.00262388, 84.88647373], [1516791960000, 0.00261855, 0.00262369, 0.00261855, 0.00262369, 7.80461782], [1516792020000, 0.00262368, 0.00262368, 0.00261858, 0.00261858, 79.83338324], [1516792080000, 0.002623, 0.00262369, 0.002623, 0.00262369, 303.80072628], [1516792140000, 0.00262369, 0.00263085, 0.00262369, 0.00263085, 38.11], [1516792200000, 0.00263085, 0.00263085, 0.00263085, 0.00263085, 3.80105289], [1516792260000, 0.00263085, 0.0026309, 0.00261864, 0.0026309, 47.0105627], [1516792320000, 0.0026309, 0.0026309, 0.0026309, 0.0026309, 136.68341507], [1516792380000, 0.0026309, 0.002635, 0.0026309, 0.0026309, 184.27021721], [1516792500000, 0.0026309, 0.0026309, 0.0026309, 0.0026309, 31.61583167], [1516792560000, 0.0026309, 0.0026309, 0.00261864, 0.00261864, 6.34626477], [1516792620000, 0.00261865, 0.00261865, 0.00261864, 0.00261864, 28.2], [1516792680000, 0.00261864, 0.00261864, 0.00261864, 0.00261864, 29.0], [1516792740000, 0.0026298, 0.0026298, 0.0026298, 0.0026298, 106.0421184], [1516792800000, 0.0026309, 0.002635, 0.0026298, 0.0026298, 79.4105335], [1516792860000, 0.0026298, 0.0026298, 0.0026298, 0.0026298, 0.397055], [1516792920000, 0.00263499, 0.00263499, 0.00263499, 0.00263499, 7.92062284], [1516792980000, 0.002632, 0.002632, 0.0026298, 0.0026298, 2.0], [1516793040000, 0.00263499, 0.002635, 0.0026298, 0.0026298, 135.56552306], [1516793100000, 0.002635, 0.002635, 0.0026298, 0.002635, 389.4641807], [1516793160000, 0.002635, 0.002635, 0.002635, 0.002635, 241.14398338], [1516793220000, 0.0026352, 0.00263612, 0.002635, 0.002636, 57.53509581], [1516793280000, 0.002636, 0.002636, 0.00262004, 0.00262004, 432.84869863], [1516793340000, 0.002635, 0.002636, 0.002635, 0.002635, 3.69690603], [1516793400000, 0.002635, 0.002635, 0.002635, 0.002635, 40.98675461], [1516793460000, 0.002635, 0.002635, 0.002635, 0.002635, 11.75699645], [1516793520000, 0.002635, 0.002635, 0.002635, 0.002635, 14.88217707], [1516793580000, 0.00262578, 0.00263501, 0.00262578, 0.00263501, 45.83950872], [1516793640000, 0.002635, 0.002635, 0.00262052, 0.00262052, 224.559], [1516793700000, 0.00263499, 0.00263499, 0.00263499, 0.00263499, 3.79506641], [1516793760000, 0.00263499, 0.00263499, 0.00263499, 0.00263499, 18.14322373], [1516793820000, 0.00263499, 0.002635, 0.00262052, 0.002635, 246.80921201], [1516793880000, 0.00262052, 0.00262052, 0.0026205, 0.00262051, 200.34588658], [1516793940000, 0.00262051, 0.00262051, 0.00262051, 0.00262051, 428.8926663], [1516794000000, 0.00263497, 0.00263497, 0.00262051, 0.00263497, 63.25902946], [1516794060000, 0.00263497, 0.00263497, 0.00263497, 0.00263497, 1.10554018], [1516794120000, 0.00262052, 0.00262052, 0.00262051, 0.00262051, 102.6706], [1516794240000, 0.0026348, 0.00263498, 0.0026348, 0.00263497, 127.62480563], [1516794300000, 0.00263497, 0.00263497, 0.00263494, 0.00263494, 15.0585298], [1516794360000, 0.00262053, 0.00262053, 0.00262053, 0.00262053, 4.0], [1516794480000, 0.00262054, 0.00263495, 0.00262054, 0.00262922, 27.82155296], [1516794540000, 0.00262054, 0.00262922, 0.00262054, 0.00262088, 40.26633362], [1516794600000, 0.00262922, 0.00262922, 0.00262922, 0.00262922, 3.80340937], [1516794660000, 0.00262922, 0.0026348, 0.00262088, 0.00262088, 10.18988768], [1516794720000, 0.00263479, 0.00263479, 0.00262922, 0.00262922, 53.09348269], [1516794780000, 0.00262923, 0.00262923, 0.00262923, 0.00262923, 12.97952915], [1516794840000, 0.00262922, 0.0026348, 0.00262922, 0.0026348, 43.29641336], [1516794900000, 0.00263451, 0.00263451, 0.00262091, 0.00263451, 36.19197483], [1516794960000, 0.00262091, 0.00262091, 0.00262054, 0.00262054, 59.70423615], [1516795020000, 0.00263451, 0.00264998, 0.00263451, 0.00264998, 1095.66605215], [1516795080000, 0.00264952, 0.00264952, 0.00262176, 0.00262176, 60.73516655], [1516795140000, 0.002635, 0.002635, 0.002635, 0.002635, 65.80999221], [1516795200000, 0.00262841, 0.00262841, 0.00262841, 0.00262841, 7.9209225], [1516795260000, 0.00262841, 0.00262841, 0.00262841, 0.00262841, 1.5090775], [1516795320000, 0.002635, 0.00264814, 0.00262842, 0.00262842, 166.81388295], [1516795380000, 0.00262842, 0.00262842, 0.00262842, 0.00262842, 3.37], [1516795440000, 0.00264712, 0.00264712, 0.00264712, 0.00264712, 5.30903864], [1516795500000, 0.00262842, 0.00264581, 0.00262198, 0.00263451, 535.55811249], [1516795560000, 0.00262198, 0.00263451, 0.00262198, 0.00263451, 866.6312444], [1516795620000, 0.00264543, 0.00264543, 0.00263451, 0.00263451, 86.08557605], [1516795680000, 0.00264551, 0.00264551, 0.00263451, 0.00263451, 199.55642626], [1516795740000, 0.00263451, 0.00263459, 0.00263451, 0.00263459, 198.94057267], [1516795800000, 0.00263459, 0.00263459, 0.00263451, 0.00263451, 534.5627988], [1516795860000, 0.00263451, 0.00263459, 0.00263451, 0.00263451, 445.99881739], [1516795920000, 0.00263451, 0.00263451, 0.00263451, 0.00263451, 32.37264743], [1516795980000, 0.00262195, 0.00263458, 0.00262194, 0.00262194, 402.14178323], [1516796040000, 0.00262194, 0.00263451, 0.00262054, 0.00262054, 321.4370791], [1516796100000, 0.00262194, 0.00263458, 0.00262055, 0.00263458, 74.78234761], [1516796160000, 0.00262055, 0.00262055, 0.00262051, 0.00262054, 245.23463083], [1516796220000, 0.00262055, 0.00262055, 0.00262051, 0.00262055, 237.15271502], [1516796280000, 0.00262051, 0.00262051, 0.00262, 0.00262051, 37.79256123], [1516796340000, 0.00262051, 0.00263458, 0.00262, 0.00263458, 303.77434672], [1516796400000, 0.00263458, 0.00264442, 0.00262, 0.00263458, 111.063612], [1516796460000, 0.00264414, 0.00264414, 0.00263413, 0.00264367, 129.01454929], [1516796580000, 0.00262002, 0.00262003, 0.00262, 0.00262, 258.201558], [1516796640000, 0.00262, 0.00262002, 0.00262, 0.00262001, 39.2158013], [1516796700000, 0.00262001, 0.00262001, 0.00262, 0.00262, 389.86298084], [1516796760000, 0.00262001, 0.00263727, 0.00262, 0.00262, 46.11615973], [1516796820000, 0.00262, 0.00262, 0.00262, 0.00262, 40.46500146], [1516796880000, 0.00262001, 0.00262999, 0.00262, 0.00262999, 106.22619923], [1516796940000, 0.00262001, 0.00262998, 0.00262001, 0.00262001, 149.94491967], [1516797000000, 0.00262001, 0.00263699, 0.00262001, 0.00262009, 169.63745508], [1516797060000, 0.00262009, 0.00263665, 0.00262001, 0.00263647, 896.16161494], [1516797120000, 0.0026205, 0.00263642, 0.00262001, 0.00263592, 473.51112321], [1516797180000, 0.00263592, 0.00263592, 0.00262002, 0.002635, 44.75075612], [1516797240000, 0.00262002, 0.00263482, 0.00262001, 0.00262001, 46.33762401], [1516797300000, 0.00262001, 0.00263432, 0.00262001, 0.00263426, 119.61945407], [1516797360000, 0.00263, 0.00263379, 0.00262001, 0.00263379, 43.26431288], [1516797420000, 0.00262001, 0.00263344, 0.00261551, 0.00261551, 907.76818549], [1516797480000, 0.00263264, 0.00263264, 0.00263264, 0.00263264, 0.86608499], [1516797540000, 0.00261652, 0.00263153, 0.00261652, 0.00263135, 5.93497614], [1516797600000, 0.00263108, 0.00263108, 0.00261652, 0.00261652, 58.0706444], [1516797660000, 0.00261653, 0.00261654, 0.00261652, 0.00261653, 112.06903501], [1516797720000, 0.00261653, 0.00261653, 0.00261551, 0.00261651, 127.29927662], [1516797780000, 0.00261651, 0.00261651, 0.002614, 0.00261651, 28.23836859], [1516797840000, 0.00261651, 0.00261651, 0.002614, 0.002614, 3.41550879], [1516797900000, 0.00261403, 0.00261651, 0.00261403, 0.00261403, 36.75248231], [1516797960000, 0.00261651, 0.00261651, 0.00261403, 0.00261403, 389.8162212], [1516798020000, 0.002615, 0.002615, 0.0026, 0.0026001, 1747.83914734], [1516798080000, 0.0026001, 0.00261648, 0.0026001, 0.00261648, 57.69904961], [1516798140000, 0.00261648, 0.00261652, 0.00260849, 0.00261648, 118.91709572], [1516798200000, 0.00261648, 0.00261652, 0.0026085, 0.00261651, 234.3145582], [1516798260000, 0.0026165, 0.00261651, 0.0026165, 0.00261651, 20.56774948], [1516798320000, 0.0026165, 0.0026165, 0.00260344, 0.00260344, 45.93332243], [1516798380000, 0.00260344, 0.0026165, 0.00260344, 0.0026165, 42.92880534], [1516798440000, 0.0026165, 0.0026165, 0.00260345, 0.00260345, 15.96071844], [1516798500000, 0.00260345, 0.00261649, 0.00260345, 0.00261649, 7.82191409], [1516798560000, 0.002604, 0.00261649, 0.00260344, 0.00261649, 192.42122901], [1516798620000, 0.00261649, 0.00261649, 0.00260344, 0.00261649, 219.67800882], [1516798680000, 0.00260344, 0.00261649, 0.00260344, 0.00260344, 74.04957917], [1516798740000, 0.0026035, 0.0026035, 0.0026035, 0.0026035, 2.166386], [1516798800000, 0.0026035, 0.00261649, 0.0026035, 0.00261647, 53.08203318], [1516798860000, 0.00261647, 0.00261651, 0.00261646, 0.00261651, 122.92438006], [1516798920000, 0.00260395, 0.00261649, 0.00260395, 0.00261649, 2.7], [1516798980000, 0.00261649, 0.0026165, 0.00260398, 0.00260398, 74.88554504], [1516799040000, 0.00261649, 0.00261649, 0.002604, 0.002604, 12.51099662], [1516799100000, 0.00260405, 0.00260405, 0.002604, 0.00260405, 51.47117097], [1516799160000, 0.00260405, 0.00261649, 0.00260405, 0.00261649, 37.75816312], [1516799220000, 0.00260425, 0.0026165, 0.00260425, 0.002616, 47.49692759], [1516799280000, 0.00261592, 0.0026165, 0.002607, 0.002607, 20.13455661], [1516799340000, 0.00261645, 0.0026165, 0.00261, 0.00261, 97.09078106], [1516799400000, 0.0026165, 0.0026165, 0.00261649, 0.0026165, 94.3552], [1516799460000, 0.0026165, 0.0026165, 0.002606, 0.002606, 689.97013503], [1516799520000, 0.002606, 0.00261629, 0.00260597, 0.00260625, 122.73885429], [1516799580000, 0.00260625, 0.00261649, 0.00260597, 0.00261649, 34.93685578], [1516799640000, 0.00261648, 0.00261648, 0.00261, 0.00261, 10.05504785], [1516799700000, 0.002606, 0.00261651, 0.0026038, 0.00261647, 278.2019352], [1516799760000, 0.0026038, 0.00261647, 0.00260376, 0.00260376, 40.43125239], [1516799820000, 0.00260376, 0.00261644, 0.00260101, 0.00260101, 41.14480966], [1516799880000, 0.00260101, 0.00261606, 0.00260101, 0.00261605, 84.29876057], [1516799940000, 0.00261606, 0.00261631, 0.00260104, 0.00261631, 102.57617982], [1516800000000, 0.00261631, 0.00261649, 0.00260126, 0.002615, 1519.56083403], [1516800060000, 0.002615, 0.00261652, 0.00260123, 0.00260129, 919.61961132], [1516800120000, 0.00261649, 0.00261652, 0.00261649, 0.00261652, 76.23906878], [1516800180000, 0.00261651, 0.00261998, 0.00260139, 0.00260144, 130.15651403], [1516800240000, 0.00261995, 0.00261997, 0.00261995, 0.00261995, 148.8396484], [1516800300000, 0.00261995, 0.00262, 0.00261994, 0.00261995, 165.38564978], [1516800360000, 0.00262594, 0.00262602, 0.00260685, 0.00260686, 216.96397747], [1516800420000, 0.00262537, 0.00262537, 0.00262537, 0.00262537, 1.62604652], [1516800480000, 0.00262521, 0.00262521, 0.00261619, 0.0026179, 310.31501751], [1516800540000, 0.00261794, 0.00261925, 0.0026179, 0.00261925, 65.77323593], [1516800600000, 0.0026192, 0.0026249, 0.002612, 0.00262134, 194.3691431], [1516800660000, 0.002612, 0.002612, 0.002612, 0.002612, 26.80602382], [1516800720000, 0.002612, 0.00262134, 0.002612, 0.00261202, 138.33524125], [1516800780000, 0.00261202, 0.00262129, 0.002612, 0.00262129, 255.08043973], [1516800840000, 0.00262128, 0.00262497, 0.00261002, 0.00261002, 981.96832782], [1516800900000, 0.00261002, 0.00262111, 0.00260686, 0.0026211, 61.25766683], [1516800960000, 0.0026211, 0.0026211, 0.00260686, 0.0026211, 594.42853324], [1516801020000, 0.00260685, 0.00260685, 0.00260685, 0.00260685, 5.82180979], [1516801080000, 0.00260685, 0.00260685, 0.00260203, 0.00260675, 67.26672236], [1516801140000, 0.00260685, 0.00260685, 0.00260202, 0.00260202, 135.27790321], [1516801200000, 0.00260203, 0.00260675, 0.002602, 0.00260202, 106.03802937], [1516801260000, 0.00260202, 0.00262094, 0.002602, 0.00260675, 218.93243705], [1516801320000, 0.00262089, 0.00262089, 0.00260675, 0.00262081, 170.1592207], [1516801380000, 0.00261856, 0.00261856, 0.002607, 0.00261853, 234.77928843], [1516801440000, 0.00261853, 0.0026211, 0.002607, 0.00262109, 2503.03850906], [1516801500000, 0.00262109, 0.0026211, 0.00260798, 0.0026211, 955.93560853], [1516801560000, 0.00261, 0.00262106, 0.002607, 0.002607, 61.65285806], [1516801620000, 0.002621, 0.00262104, 0.002621, 0.00262103, 25.03415498], [1516801680000, 0.00262103, 0.00262103, 0.00261002, 0.00261002, 32.452789], [1516801740000, 0.00261002, 0.00262076, 0.00261002, 0.00262076, 36.3795523], [1516801800000, 0.00261003, 0.00262063, 0.00261002, 0.00261002, 99.9081418], [1516801860000, 0.00261002, 0.00262043, 0.00261002, 0.00262043, 267.16189803], [1516801920000, 0.0026204, 0.0026204, 0.00261002, 0.00261002, 175.18277177], [1516801980000, 0.00261002, 0.00261003, 0.002607, 0.002607, 329.57199297], [1516802040000, 0.00261954, 0.00261954, 0.002607, 0.002607, 520.30490503], [1516802100000, 0.002607, 0.00261945, 0.002607, 0.00261942, 352.76873952], [1516802160000, 0.00261942, 0.00261942, 0.002607, 0.002607, 2.52193577], [1516802220000, 0.00261, 0.00261, 0.0026096, 0.0026096, 41.5661721], [1516802280000, 0.0026096, 0.00261886, 0.00260956, 0.00260956, 106.64317186], [1516802340000, 0.00261333, 0.00261817, 0.0026096, 0.0026181, 238.58595559], [1516802400000, 0.00261815, 0.00261815, 0.0026096, 0.0026096, 140.48700639], [1516802460000, 0.00261, 0.00261911, 0.00261, 0.00261815, 458.52863541], [1516802520000, 0.00261815, 0.002636, 0.00261815, 0.002619, 2825.2027102], [1516802580000, 0.002619, 0.0026339, 0.002619, 0.002619, 517.32806242], [1516802640000, 0.002619, 0.002619, 0.00260222, 0.0026025, 809.67372138], [1516802700000, 0.0026189, 0.0026189, 0.0026189, 0.0026189, 6.89135324], [1516802760000, 0.002605, 0.00263366, 0.002604, 0.0026189, 853.06354271], [1516802820000, 0.00261109, 0.00262398, 0.002605, 0.00260596, 413.7423615], [1516802880000, 0.00260596, 0.00260596, 0.00260596, 0.00260596, 2.2717697], [1516802940000, 0.00260596, 0.00261903, 0.00260596, 0.00261901, 15.78473961], [1516803000000, 0.00261414, 0.00262392, 0.00260597, 0.00262392, 21.61090444], [1516803060000, 0.00261414, 0.00261414, 0.00261414, 0.00261414, 31.42808158], [1516803120000, 0.00261414, 0.0026215, 0.00260595, 0.00261414, 194.92074656], [1516803180000, 0.002615, 0.002615, 0.002615, 0.002615, 10.0], [1516803240000, 0.00261414, 0.00261414, 0.00260595, 0.00261414, 103.38430213], [1516803300000, 0.00261414, 0.00263372, 0.00261414, 0.00261414, 18.44361778], [1516803420000, 0.00261415, 0.00264711, 0.00261414, 0.00264711, 2833.56855693], [1516803480000, 0.00264712, 0.0026549, 0.00263672, 0.0026414, 3644.49319339], [1516803540000, 0.00263672, 0.002655, 0.00263672, 0.00263972, 965.96455387], [1516803600000, 0.00265497, 0.00265498, 0.00263972, 0.002642, 873.61969052], [1516803660000, 0.0026549, 0.0026549, 0.00263672, 0.00263672, 1078.88786183], [1516803720000, 0.00263672, 0.002642, 0.00263672, 0.00263672, 638.7860598], [1516803780000, 0.00263672, 0.00265482, 0.00263278, 0.00263278, 163.30266252], [1516803840000, 0.00265198, 0.00265459, 0.00263278, 0.00263278, 564.90066938], [1516803900000, 0.0026329, 0.00265198, 0.0026329, 0.00265184, 57.24199042], [1516803960000, 0.0026329, 0.00265185, 0.0026329, 0.0026329, 283.14441663], [1516804020000, 0.0026329, 0.00264, 0.00261409, 0.00262, 850.86888893], [1516804080000, 0.00262001, 0.00263988, 0.0026141, 0.0026141, 8629.43982979], [1516804140000, 0.0026141, 0.00263789, 0.00261409, 0.00261409, 523.46606224], [1516804200000, 0.00261431, 0.00263749, 0.00261431, 0.00263748, 29.61734155], [1516804260000, 0.00261435, 0.00263728, 0.00261434, 0.00263728, 131.5583476], [1516804320000, 0.0026152, 0.00262951, 0.00261431, 0.00261999, 598.60490715], [1516804380000, 0.00263699, 0.00263699, 0.00261999, 0.00261999, 400.51213438], [1516804440000, 0.00263, 0.002633, 0.00262009, 0.002633, 74.36274633], [1516804500000, 0.00262009, 0.0026201, 0.00261999, 0.00261999, 225.11783762], [1516804560000, 0.00262001, 0.00262038, 0.00261999, 0.0026201, 226.60367677], [1516804620000, 0.0026201, 0.002623, 0.00262002, 0.0026201, 1295.24240849], [1516804680000, 0.0026201, 0.00263001, 0.0026135, 0.0026135, 508.81839008], [1516804740000, 0.00260801, 0.00262997, 0.002608, 0.00260803, 30.28288524], [1516804800000, 0.00261, 0.00261, 0.00260805, 0.00260805, 48.61380495], [1516804860000, 0.00260806, 0.00260806, 0.00260222, 0.00260801, 532.80682528], [1516804920000, 0.00260801, 0.00260801, 0.002601, 0.002601, 260.41181515], [1516804980000, 0.00260111, 0.00262444, 0.0026, 0.00260015, 576.39773853], [1516805040000, 0.00260016, 0.00262418, 0.0026, 0.0026, 399.4949335], [1516805100000, 0.0026, 0.00262004, 0.0026, 0.00261201, 54.76489457], [1516805160000, 0.00262, 0.00262, 0.00260001, 0.00261657, 338.47795816], [1516805220000, 0.00260002, 0.00261999, 0.00260001, 0.00261657, 408.19618052], [1516805280000, 0.00261655, 0.00261657, 0.00261395, 0.00261395, 64.14533289], [1516805340000, 0.00261657, 0.00261657, 0.002601, 0.00261656, 31.438593], [1516805400000, 0.00261655, 0.00261656, 0.00261655, 0.00261656, 7.6436529], [1516805460000, 0.002601, 0.00261655, 0.002601, 0.002601, 505.34191325], [1516805520000, 0.002601, 0.002611, 0.002601, 0.002611, 35.07384531], [1516805580000, 0.002611, 0.002611, 0.00260001, 0.00260001, 466.21323017], [1516805640000, 0.002609, 0.00261656, 0.002609, 0.00261, 226.73888514], [1516805700000, 0.00261, 0.00261657, 0.00261, 0.00261008, 9.66224299], [1516805760000, 0.00261011, 0.00261537, 0.00261, 0.00261, 185.71090866], [1516805820000, 0.00261001, 0.00261537, 0.00261, 0.00261, 47.76804739], [1516805880000, 0.00261, 0.00261, 0.00261, 0.00261, 34.09614045], [1516805940000, 0.00261537, 0.00261537, 0.00261, 0.00261537, 582.94323268], [1516806000000, 0.00261537, 0.00261537, 0.00261, 0.00261001, 400.88104146], [1516806060000, 0.00261001, 0.00261537, 0.00261, 0.00261001, 131.25316022], [1516806120000, 0.00261001, 0.00261537, 0.00261001, 0.00261015, 17.19938696], [1516806180000, 0.00261019, 0.00261537, 0.00261019, 0.00261537, 51.19247247], [1516806240000, 0.00261537, 0.00261537, 0.00261535, 0.00261535, 100.47408427], [1516806300000, 0.00261535, 0.00261537, 0.00261024, 0.00261537, 174.4676174], [1516806360000, 0.00261537, 0.00261537, 0.00261534, 0.00261534, 44.94949499], [1516806420000, 0.00261534, 0.00261534, 0.00261534, 0.00261534, 11.07474598], [1516806480000, 0.00261534, 0.00261534, 0.00261027, 0.00261534, 75.71230832], [1516806540000, 0.00261534, 0.00261534, 0.00261031, 0.00261534, 96.69473074], [1516806600000, 0.00261031, 0.00261534, 0.00261031, 0.00261035, 180.01459901], [1516806660000, 0.00261035, 0.00261534, 0.00261035, 0.00261534, 78.56635244], [1516806720000, 0.00261534, 0.00261534, 0.00261022, 0.00261534, 111.78959781], [1516806780000, 0.00261534, 0.00261534, 0.00261534, 0.00261534, 2.8543747], [1516806900000, 0.00261534, 0.00261534, 0.00261022, 0.00261022, 15.41778538], [1516806960000, 0.00261534, 0.00261534, 0.00259999, 0.00261518, 3356.20771861], [1516807020000, 0.00261029, 0.00261029, 0.0026, 0.002605, 55.73901228], [1516807080000, 0.002605, 0.002605, 0.00259924, 0.00259924, 351.3501794], [1516807140000, 0.00259924, 0.00259924, 0.002594, 0.00259784, 499.4440944], [1516807200000, 0.00259401, 0.002599, 0.002594, 0.00259784, 55.49130939], [1516807260000, 0.00259784, 0.002599, 0.00259571, 0.00259784, 52.35706454], [1516807320000, 0.00259784, 0.002599, 0.00259784, 0.00259898, 17.29187636], [1516807380000, 0.00259572, 0.00259898, 0.00259571, 0.00259571, 97.62784244], [1516807440000, 0.00259571, 0.00259571, 0.00259113, 0.0025957, 84.86325027], [1516807500000, 0.00259571, 0.0026145, 0.00259112, 0.0026145, 481.22146159], [1516807560000, 0.00259571, 0.00259575, 0.00259571, 0.00259573, 90.00983259], [1516807620000, 0.00259576, 0.00260157, 0.00259575, 0.00259575, 155.97559733], [1516807680000, 0.00259576, 0.00260157, 0.00259576, 0.00259577, 4.68427768], [1516807740000, 0.00259577, 0.00259577, 0.00259576, 0.00259576, 288.56951185], [1516807800000, 0.00259576, 0.00260157, 0.00259576, 0.00260157, 44.61984613], [1516807860000, 0.00260157, 0.00261158, 0.00260157, 0.00261158, 16.96899326], [1516807920000, 0.00260158, 0.0026144, 0.00259577, 0.00261158, 201.72733942], [1516807980000, 0.00261158, 0.00261438, 0.0026016, 0.00261438, 139.78141653], [1516808040000, 0.0026144, 0.0026145, 0.00261438, 0.00261438, 244.14336475], [1516808100000, 0.00261519, 0.00261657, 0.00261438, 0.00261534, 386.18636285], [1516808160000, 0.00261657, 0.00261657, 0.00261534, 0.00261657, 5.02802096], [1516808220000, 0.00261657, 0.00261657, 0.00261534, 0.00261534, 44.22115195], [1516808280000, 0.00261534, 0.00261995, 0.00261534, 0.00261534, 61.22044486], [1516808340000, 0.00261534, 0.0026199, 0.00261438, 0.00261438, 1211.57843167], [1516808400000, 0.00261438, 0.00261438, 0.002602, 0.002602, 476.02382031], [1516808520000, 0.002602, 0.002602, 0.002602, 0.002602, 90.33406762], [1516808580000, 0.00261749, 0.00261749, 0.00261748, 0.00261748, 16.4129424], [1516808640000, 0.00261439, 0.00261439, 0.002606, 0.002606, 202.86357429], [1516808700000, 0.002606, 0.002606, 0.00259998, 0.002606, 280.66226408], [1516808760000, 0.00259798, 0.00259798, 0.0025978, 0.00259798, 11.91282037], [1516808820000, 0.002606, 0.002606, 0.002606, 0.002606, 59.90474442], [1516808880000, 0.002606, 0.00261437, 0.002606, 0.00261437, 26.38419932], [1516808940000, 0.00261437, 0.00261437, 0.002606, 0.002606, 14.51930364], [1516809000000, 0.002606, 0.002606, 0.002606, 0.002606, 0.6], [1516809060000, 0.002606, 0.002606, 0.00259801, 0.002606, 52.17126665], [1516809120000, 0.002606, 0.002606, 0.002606, 0.002606, 59.81099271], [1516809180000, 0.002606, 0.002606, 0.002606, 0.002606, 24.50816827], [1516809240000, 0.0026, 0.00261436, 0.00259988, 0.00261436, 483.55638187], [1516809300000, 0.00261436, 0.00261749, 0.00259996, 0.00259996, 219.717423], [1516809360000, 0.002606, 0.002606, 0.00259996, 0.00259996, 45.20348429], [1516809420000, 0.002605, 0.002605, 0.002605, 0.002605, 2.0], [1516809480000, 0.002605, 0.002605, 0.00260473, 0.00260473, 28.06866408], [1516809540000, 0.00260473, 0.00261563, 0.00260473, 0.00261563, 5.04476459], [1516809600000, 0.00261563, 0.00261748, 0.00261561, 0.00261572, 103.10934997], [1516809660000, 0.00261572, 0.00261749, 0.00261571, 0.00261571, 440.36685791], [1516809720000, 0.00260473, 0.00261572, 0.00260473, 0.00261561, 91.10147138], [1516809780000, 0.00261569, 0.00262228, 0.00260572, 0.00260572, 349.40716451], [1516809840000, 0.00260572, 0.0026248, 0.00260572, 0.00260573, 343.88029996], [1516809900000, 0.00260573, 0.00260573, 0.00260573, 0.00260573, 2.00468554], [1516809960000, 0.00261999, 0.00261999, 0.00260573, 0.00260576, 139.20480959], [1516810020000, 0.00261994, 0.00261996, 0.00260575, 0.00260575, 924.64737479], [1516810080000, 0.002606, 0.002606, 0.00260575, 0.002606, 91.38959691], [1516810140000, 0.00261795, 0.00261795, 0.002606, 0.002606, 12.70837335], [1516810200000, 0.002606, 0.002606, 0.00260599, 0.00260599, 82.22803173], [1516810260000, 0.00260599, 0.002606, 0.00260575, 0.002606, 56.88751398], [1516810320000, 0.002606, 0.00260601, 0.002606, 0.00260601, 47.59496089], [1516810380000, 0.00260601, 0.002612, 0.00260601, 0.00261, 159.1058817], [1516810440000, 0.00261, 0.00261, 0.00261, 0.00261, 23.14988324], [1516810500000, 0.00261, 0.00261985, 0.00261, 0.00261, 170.03104106], [1516810560000, 0.00261, 0.00261, 0.00261, 0.00261, 180.70910092], [1516810620000, 0.002606, 0.002606, 0.002606, 0.002606, 40.561413], [1516810680000, 0.00260603, 0.00261, 0.00260603, 0.00261, 4.37612841], [1516810740000, 0.00261, 0.00261, 0.00260603, 0.00260603, 40.64599938], [1516810800000, 0.00260603, 0.00261, 0.00260603, 0.00261, 138.47714443], [1516810860000, 0.00261, 0.00261001, 0.0026061, 0.00261001, 84.20599538], [1516810920000, 0.00260612, 0.00260612, 0.00260612, 0.00260612, 0.84608536], [1516810980000, 0.00260612, 0.00262, 0.0026061, 0.00262, 4005.77003856], [1516811040000, 0.00262, 0.00262497, 0.00261974, 0.002621, 389.1629276], [1516811100000, 0.002621, 0.00262495, 0.00261974, 0.00261974, 1996.7000492], [1516811160000, 0.00262495, 0.00262495, 0.00261974, 0.00261974, 90.31387311], [1516811220000, 0.00261974, 0.00261974, 0.00261974, 0.00261974, 10.79714394], [1516811280000, 0.00262493, 0.00262493, 0.00261974, 0.00261974, 64.62326829], [1516811340000, 0.00261974, 0.00262492, 0.00261974, 0.00262492, 48.06363866], [1516811400000, 0.00262, 0.00262492, 0.00261974, 0.00261974, 6.08313654], [1516811460000, 0.00261974, 0.00261974, 0.00261974, 0.00261974, 11.09492174], [1516811520000, 0.00261974, 0.00262495, 0.00261, 0.00262495, 47.47267728], [1516811580000, 0.00261, 0.00261, 0.00260616, 0.00260616, 11.82696238], [1516811640000, 0.00260617, 0.00260617, 0.00260617, 0.00260617, 5.0], [1516811700000, 0.00262461, 0.00262462, 0.00262461, 0.00262462, 9.78952339], [1516811760000, 0.00262462, 0.00262462, 0.00261, 0.00261, 84.99538533], [1516811820000, 0.00261, 0.00261, 0.00261, 0.00261, 27.80996819], [1516811880000, 0.00261, 0.00261, 0.00261, 0.00261, 22.13019558], [1516811940000, 0.00261, 0.00262462, 0.00260622, 0.00260622, 1255.75036137], [1516812000000, 0.00260625, 0.00262429, 0.00260625, 0.00262429, 18.84777861], [1516812060000, 0.00260625, 0.00262429, 0.00260625, 0.00260625, 18.74873586], [1516812120000, 0.00260625, 0.00260625, 0.00260625, 0.00260625, 25.36], [1516812180000, 0.00260625, 0.00260628, 0.00260625, 0.00260628, 5.663], [1516812240000, 0.00262429, 0.00262429, 0.00262429, 0.00262429, 0.471776], [1516812300000, 0.00262416, 0.00262416, 0.00260652, 0.00260652, 11.41160754], [1516812360000, 0.00260653, 0.00260686, 0.00260653, 0.00260686, 4.72447265], [1516812420000, 0.00260686, 0.00262369, 0.00260686, 0.00262369, 105.9496334], [1516812540000, 0.00262369, 0.00262429, 0.00261078, 0.00262429, 103.12408551], [1516812600000, 0.00262429, 0.00262429, 0.00261083, 0.00262429, 85.24328278], [1516812660000, 0.00261089, 0.00262429, 0.00261089, 0.00262429, 220.54430774], [1516812720000, 0.00262429, 0.00262474, 0.00262429, 0.0026243, 102.78101978], [1516812780000, 0.0026243, 0.0026352, 0.0026243, 0.0026244, 3128.2468652], [1516812840000, 0.0026244, 0.00262472, 0.0026244, 0.0026244, 72.55548695], [1516812900000, 0.0026244, 0.00263511, 0.0026244, 0.00262472, 178.47347827], [1516812960000, 0.00263486, 0.00263486, 0.0026244, 0.0026244, 71.11632471], [1516813020000, 0.00262473, 0.002625, 0.0026243, 0.00262473, 84.77521581], [1516813080000, 0.00262499, 0.00262499, 0.00262473, 0.00262473, 55.32183638], [1516813140000, 0.00262497, 0.00263789, 0.00262473, 0.00263486, 1913.4370913], [1516813200000, 0.00262473, 0.00263487, 0.00262473, 0.00263487, 213.14977863], [1516813260000, 0.00263, 0.00263789, 0.00262474, 0.00262474, 356.83216027], [1516813380000, 0.0026378, 0.00263781, 0.0026378, 0.00263781, 198.33500012], [1516813440000, 0.0026378, 0.0026378, 0.00263, 0.00263, 40.39700702], [1516813500000, 0.0026378, 0.00264, 0.00263, 0.00263, 1488.75292077], [1516813560000, 0.00263, 0.00263775, 0.00263, 0.00263775, 15.25342119], [1516813620000, 0.00263775, 0.00263775, 0.00263, 0.00263, 196.11725424], [1516813680000, 0.00263, 0.00265, 0.00263, 0.00263, 500.63969126], [1516813740000, 0.00262475, 0.00263, 0.00262475, 0.00263, 7.14199352], [1516813800000, 0.0026299, 0.0026299, 0.0026299, 0.0026299, 7.59534582], [1516813860000, 0.00262989, 0.00262989, 0.00262475, 0.00262475, 22.59685353], [1516813920000, 0.00262989, 0.00262989, 0.00262989, 0.00262989, 9.860201], [1516813980000, 0.00262989, 0.0026299, 0.00262989, 0.0026299, 68.16184809], [1516814040000, 0.0026299, 0.0026299, 0.00262989, 0.0026299, 25.44587498], [1516814100000, 0.0026299, 0.0026299, 0.00262989, 0.00262989, 8.19530154], [1516814160000, 0.00262475, 0.002626, 0.00262475, 0.002626, 64.51849346], [1516814220000, 0.00262989, 0.0026299, 0.002626, 0.002626, 41.98115425], [1516814280000, 0.00262601, 0.00262601, 0.00262601, 0.00262601, 0.41984104], [1516814340000, 0.002626, 0.00262601, 0.002626, 0.00262601, 274.77418722], [1516814400000, 0.00262601, 0.00263072, 0.00262601, 0.00263072, 12.2481684], [1516814460000, 0.00262601, 0.00263, 0.002626, 0.00262601, 50.35582775], [1516814520000, 0.00262601, 0.00262601, 0.00262601, 0.00262601, 8.07630461], [1516814640000, 0.002628, 0.002628, 0.002628, 0.002628, 10.67527742], [1516814700000, 0.00263072, 0.0026339, 0.00263072, 0.0026339, 31.61746399], [1516814760000, 0.0026339, 0.0026339, 0.00263389, 0.00263389, 1.73627574], [1516814820000, 0.00263389, 0.0026339, 0.002628, 0.0026339, 32.06148687], [1516814880000, 0.00263389, 0.0026339, 0.00263389, 0.0026339, 36.8903828], [1516814940000, 0.0026339, 0.0026339, 0.0026339, 0.0026339, 1.93135144], [1516815000000, 0.0026339, 0.002634, 0.0026339, 0.0026339, 315.40928514], [1516815060000, 0.0026342, 0.0026342, 0.0026339, 0.0026339, 265.63411656], [1516815120000, 0.00263711, 0.00264284, 0.00263389, 0.00264283, 1941.60513744], [1516815180000, 0.00264283, 0.00264284, 0.00263389, 0.00263389, 66.11228877], [1516815240000, 0.00263389, 0.00263389, 0.00263389, 0.00263389, 13.94013955], [1516815300000, 0.00263389, 0.0026339, 0.00263389, 0.0026339, 65.96490545], [1516815360000, 0.00263389, 0.0026339, 0.00263389, 0.0026339, 114.79461771], [1516815420000, 0.002635, 0.002635, 0.00263389, 0.00263389, 658.18143587], [1516815480000, 0.00263389, 0.00263389, 0.00263389, 0.00263389, 126.49965975], [1516815540000, 0.00263389, 0.00264, 0.00263389, 0.00263389, 391.95497268], [1516815600000, 0.002634, 0.002634, 0.002634, 0.002634, 22.33469965], [1516815660000, 0.002634, 0.002634, 0.002634, 0.002634, 11.8965012], [1516815720000, 0.002634, 0.00264279, 0.00263389, 0.00264279, 117.24781006], [1516815780000, 0.00263389, 0.00264279, 0.00263389, 0.00263389, 3.82764926], [1516815840000, 0.00263389, 0.00263389, 0.00263389, 0.00263389, 1.74981211], [1516815900000, 0.00263392, 0.002642, 0.00263389, 0.0026339, 89.1495984], [1516815960000, 0.00263389, 0.0026339, 0.00263389, 0.0026339, 10.36079974], [1516816020000, 0.00263389, 0.00263389, 0.00263389, 0.00263389, 17.01085863], [1516816080000, 0.00263389, 0.00263389, 0.002628, 0.002628, 99.85635047], [1516816140000, 0.002628, 0.00263389, 0.00262601, 0.00263389, 24.95284933], [1516816200000, 0.00263389, 0.00263389, 0.00262601, 0.00262601, 7.41086027], [1516816380000, 0.00262601, 0.00262601, 0.00262601, 0.00262601, 5.89916356], [1516816440000, 0.00262601, 0.00263388, 0.00262601, 0.00262601, 143.57876315], [1516816500000, 0.00263389, 0.00263389, 0.00262601, 0.00263389, 6.95793013], [1516816560000, 0.002626, 0.00263389, 0.00262476, 0.00263389, 22.26859886], [1516816620000, 0.00263389, 0.00263389, 0.00262601, 0.00262601, 34.66522421], [1516816800000, 0.00263389, 0.00263389, 0.00263389, 0.00263389, 3.79666576], [1516816860000, 0.00263089, 0.00263389, 0.00263089, 0.00263389, 54.6416671], [1516816920000, 0.00262601, 0.00263389, 0.00262601, 0.00263389, 593.76466663], [1516816980000, 0.00262476, 0.00263389, 0.00262474, 0.00262476, 59.02320248], [1516817040000, 0.00262474, 0.00262476, 0.00262474, 0.00262476, 10.47623401], [1516817100000, 0.00262476, 0.00262476, 0.00262473, 0.00262473, 245.14342393], [1516817160000, 0.00262476, 0.00262476, 0.00262476, 0.00262476, 7.04216298], [1516817220000, 0.00262473, 0.00262476, 0.00262473, 0.00262473, 15.74266628], [1516817280000, 0.00262473, 0.00262476, 0.00262473, 0.00262476, 29.6065033], [1516817340000, 0.00262473, 0.00262476, 0.00262473, 0.00262476, 13.01307011], [1516817400000, 0.00262476, 0.00263388, 0.00262473, 0.00263388, 49.61082459], [1516817460000, 0.00262473, 0.00262474, 0.00262473, 0.00262474, 4.8400864], [1516817520000, 0.00262474, 0.00262474, 0.00262473, 0.00262473, 0.4200416], [1516817580000, 0.00262474, 0.00262474, 0.00262474, 0.00262474, 5.23923607], [1516817640000, 0.00263188, 0.00263188, 0.00262475, 0.00262475, 3.3244788], [1516817700000, 0.00262474, 0.00262474, 0.00262474, 0.00262474, 5.90828972], [1516817760000, 0.00262474, 0.00262474, 0.00262474, 0.00262474, 40.8400832], [1516817820000, 0.00262474, 0.00262474, 0.00262474, 0.00262474, 3.83147673], [1516817880000, 0.00262474, 0.00262474, 0.00262473, 0.00262473, 25.44748651], [1516817940000, 0.00262473, 0.00262474, 0.00262473, 0.00262474, 9.00980224], [1516818000000, 0.00262474, 0.00263188, 0.00262474, 0.0026315, 27.74385181], [1516818060000, 0.0026315, 0.0026315, 0.00262475, 0.00262475, 8.83829575], [1516818120000, 0.00262476, 0.00262476, 0.00262475, 0.00262475, 46.32398677], [1516818180000, 0.00262475, 0.00262475, 0.00262475, 0.00262475, 58.84761421], [1516818240000, 0.00262475, 0.00262479, 0.00262475, 0.00262479, 3.98589701], [1516818300000, 0.00262479, 0.00263385, 0.00262479, 0.00262479, 4.6401812], [1516818360000, 0.00262479, 0.00263, 0.00262479, 0.00263, 8.35961953], [1516818420000, 0.00263, 0.00263383, 0.00262479, 0.00262479, 51.88627057], [1516818480000, 0.00262479, 0.00262999, 0.00262475, 0.00262475, 336.03856072], [1516818540000, 0.00262475, 0.00262475, 0.00262475, 0.00262475, 0.84008], [1516818600000, 0.00262475, 0.00263, 0.00262475, 0.00263, 18.89902963], [1516818660000, 0.00263, 0.00263, 0.00262475, 0.002627, 140.20814293], [1516818720000, 0.00262475, 0.002627, 0.00262475, 0.00262475, 128.28103822], [1516818780000, 0.00262475, 0.002627, 0.00262475, 0.002627, 4.73863348], [1516818840000, 0.00262475, 0.00262475, 0.00262473, 0.00262473, 236.583274], [1516818900000, 0.00262475, 0.00262475, 0.00262475, 0.00262475, 0.8400832], [1516818960000, 0.00262475, 0.00262475, 0.00260511, 0.00260511, 1100.0], [1516819020000, 0.0026247, 0.0026247, 0.0026247, 0.0026247, 1.18318378], [1516819080000, 0.0026247, 0.0026247, 0.00261701, 0.0026247, 141.59522849], [1516819140000, 0.0026247, 0.0026247, 0.0026171, 0.002623, 142.52404915], [1516819200000, 0.002623, 0.0026247, 0.002623, 0.00262469, 75.18927539], [1516819260000, 0.00261754, 0.0026247, 0.00261754, 0.0026247, 230.73481404], [1516819320000, 0.0026247, 0.0026247, 0.0026247, 0.0026247, 4.41061658], [1516819380000, 0.0026247, 0.0026247, 0.00262469, 0.00262469, 27.03012581], [1516819440000, 0.00262469, 0.0026247, 0.0026176, 0.0026176, 119.35067925], [1516819500000, 0.0026176, 0.00262469, 0.00261757, 0.00261763, 22.65456278], [1516819560000, 0.00261767, 0.00261767, 0.00261763, 0.00261763, 30.40336357], [1516819620000, 0.00261767, 0.00261767, 0.00261767, 0.00261767, 1.00224016], [1516819680000, 0.00261767, 0.00261767, 0.00261762, 0.00261762, 49.23015536], [1516819740000, 0.00261762, 0.00261762, 0.00261762, 0.00261762, 2.24141513], [1516819800000, 0.00261762, 0.00261767, 0.0026176, 0.00261762, 131.57644445], [1516819860000, 0.00261762, 0.00261767, 0.0026176, 0.0026176, 20.82959628], [1516819920000, 0.0026176, 0.0026176, 0.00261754, 0.0026176, 11.69257324], [1516819980000, 0.00261761, 0.00261761, 0.0026171, 0.0026171, 37.28514509], [1516820040000, 0.0026171, 0.0026171, 0.0026171, 0.0026171, 1.63231847], [1516820100000, 0.00261762, 0.00261762, 0.00261762, 0.00261762, 0.46194405], [1516820160000, 0.00261762, 0.00261762, 0.00261762, 0.00261762, 7.4891458], [1516820220000, 0.00261711, 0.00261711, 0.00261705, 0.00261711, 80.35858003], [1516820280000, 0.00261762, 0.00261762, 0.00261705, 0.00261705, 39.59269848], [1516820340000, 0.0026176, 0.00261762, 0.00261703, 0.00261762, 47.6076234], [1516820400000, 0.00261703, 0.00261762, 0.00261703, 0.00261762, 92.44553047], [1516820460000, 0.00261703, 0.00261762, 0.00261703, 0.00261762, 41.58900493], [1516820520000, 0.00261762, 0.00261762, 0.00261762, 0.00261762, 11.25630498], [1516820580000, 0.00261762, 0.00261762, 0.00261762, 0.00261762, 3.72472165], [1516820640000, 0.00261704, 0.00261762, 0.00261704, 0.00261762, 338.86977832], [1516820700000, 0.00261762, 0.00261762, 0.00261762, 0.00261762, 15.88316094], [1516820760000, 0.00261704, 0.0026176, 0.00261704, 0.0026176, 212.25835254], [1516820820000, 0.00261704, 0.0026176, 0.00261702, 0.00261702, 65.48313664], [1516820880000, 0.00261762, 0.00261762, 0.00261705, 0.00261705, 12.22547533], [1516820940000, 0.00261762, 0.00261762, 0.00261762, 0.00261762, 2.44691633], [1516821000000, 0.00261762, 0.00261762, 0.00261705, 0.00261762, 44.73132897], [1516821060000, 0.00261762, 0.00261762, 0.00261762, 0.00261762, 40.1650832], [1516821180000, 0.00261762, 0.00261762, 0.00261762, 0.00261762, 2.23674786], [1516821240000, 0.00261705, 0.00261705, 0.00261705, 0.00261705, 11.13167474], [1516821300000, 0.00261705, 0.00261705, 0.00261702, 0.00261702, 18.81861028], [1516821360000, 0.00261701, 0.00261705, 0.00261701, 0.00261705, 17.47637308], [1516821420000, 0.00261701, 0.00261762, 0.002617, 0.002617, 77.4777102], [1516821480000, 0.00261764, 0.00262469, 0.002617, 0.00262467, 644.71512918], [1516821540000, 0.002617, 0.002617, 0.002617, 0.002617, 30.45486958], [1516821600000, 0.002617, 0.00262469, 0.002617, 0.002617, 145.64749483], [1516821660000, 0.002617, 0.0026245, 0.00261679, 0.00261679, 51.53800191], [1516821720000, 0.0026168, 0.00261681, 0.00261007, 0.00261007, 16.35898898], [1516821780000, 0.00261007, 0.00262355, 0.00261007, 0.00261007, 139.0719937], [1516821840000, 0.00261007, 0.00262352, 0.00261007, 0.0026234, 82.31232264], [1516821900000, 0.0026105, 0.00262314, 0.0026105, 0.00262312, 19.73876523], [1516821960000, 0.0026105, 0.002623, 0.0026105, 0.0026105, 100.22801101], [1516822140000, 0.00262298, 0.00262298, 0.002615, 0.002615, 61.53795576], [1516822200000, 0.002615, 0.00262197, 0.002615, 0.00262197, 11.8634719], [1516822260000, 0.002615, 0.00262197, 0.002615, 0.002615, 149.70896569], [1516822320000, 0.002615, 0.00262196, 0.002615, 0.002615, 28.2058359], [1516822380000, 0.00261501, 0.00262196, 0.00261501, 0.00261501, 9.30247706], [1516822440000, 0.00261501, 0.00261501, 0.00261501, 0.00261501, 7.04991969], [1516822500000, 0.00261501, 0.00261801, 0.00261501, 0.00261801, 4.23498563], [1516822560000, 0.00261801, 0.00261801, 0.00261801, 0.00261801, 4.17455539], [1516822620000, 0.00261801, 0.00261801, 0.00261501, 0.00261501, 338.20694317], [1516822680000, 0.00261801, 0.00261801, 0.00261501, 0.00261501, 3.69512927], [1516822740000, 0.00261502, 0.002618, 0.00261502, 0.00261502, 18.50317467], [1516822800000, 0.00261502, 0.00261502, 0.00261501, 0.00261502, 55.01322604], [1516822860000, 0.00261501, 0.00261502, 0.00261501, 0.00261502, 21.07961495], [1516822920000, 0.002618, 0.002618, 0.00261503, 0.002618, 47.01997866], [1516822980000, 0.002618, 0.002618, 0.002618, 0.002618, 5.84224598], [1516823040000, 0.002618, 0.00261801, 0.002618, 0.00261801, 273.14408051], [1516823100000, 0.00261801, 0.00262699, 0.00261501, 0.00261502, 1015.02789425], [1516823160000, 0.00261502, 0.00262475, 0.00261501, 0.00262475, 219.6169827], [1516823220000, 0.00261501, 0.00261501, 0.00261501, 0.00261501, 1.27370937], [1516823280000, 0.00262, 0.00262469, 0.00261007, 0.0026101, 1698.8887937], [1516823340000, 0.0026101, 0.00262, 0.002605, 0.00262, 794.8349468], [1516823400000, 0.00262, 0.00262, 0.00262, 0.00262, 176.52013871], [1516823460000, 0.00262458, 0.00262458, 0.00262, 0.00262, 381.88453369], [1516823520000, 0.00262458, 0.0026246, 0.00262, 0.00262, 39.09887042], [1516823580000, 0.00262, 0.00262, 0.00262, 0.00262, 32.41578306], [1516823640000, 0.00262, 0.00262, 0.00261, 0.00261, 17.0], [1516823700000, 0.00262459, 0.00262459, 0.00261, 0.00262457, 11.36066018], [1516823760000, 0.00262454, 0.00262454, 0.00262, 0.00262, 99.78838792], [1516823820000, 0.00262, 0.00262, 0.00261, 0.00261, 780.80348085], [1516823880000, 0.00261, 0.00261008, 0.00261, 0.00261008, 91.574], [1516823940000, 0.0026196, 0.00262, 0.0026196, 0.00262, 110.64494172], [1516824000000, 0.00262, 0.00262475, 0.00262, 0.00262475, 26.73754052], [1516824060000, 0.00262475, 0.00262699, 0.00262, 0.00262699, 105.76424309], [1516824120000, 0.00262699, 0.00262699, 0.002621, 0.002623, 231.86497353], [1516824180000, 0.002623, 0.00262698, 0.002623, 0.00262456, 114.93481888], [1516824240000, 0.00262456, 0.00262698, 0.00262456, 0.00262456, 15.56734801], [1516824300000, 0.00262456, 0.00262698, 0.00262456, 0.00262456, 55.19729776], [1516824360000, 0.00262697, 0.00262697, 0.002623, 0.00262457, 140.2974896], [1516824420000, 0.00262457, 0.00262695, 0.00262457, 0.00262695, 40.13023406], [1516824480000, 0.00262457, 0.00262694, 0.00262457, 0.00262694, 10.87739926], [1516824540000, 0.002625, 0.00262695, 0.002625, 0.00262695, 160.84], [1516824600000, 0.00262501, 0.002627, 0.002625, 0.00262694, 111.87746787], [1516824660000, 0.00262699, 0.002628, 0.002625, 0.002625, 188.27515779], [1516824720000, 0.002625, 0.00262501, 0.002625, 0.002625, 23.86887157], [1516824840000, 0.002625, 0.0026269, 0.002625, 0.0026269, 26.13158584], [1516824900000, 0.0026269, 0.00262694, 0.0026269, 0.00262694, 35.05418042], [1516824960000, 0.0026269, 0.0026269, 0.0026269, 0.0026269, 1.25908866], [1516825020000, 0.00262694, 0.00262694, 0.00262691, 0.00262691, 34.22192093], [1516825080000, 0.00262694, 0.00262694, 0.00262502, 0.00262502, 48.52568962], [1516825140000, 0.00262502, 0.00262502, 0.00262502, 0.00262502, 7.15891901], [1516825200000, 0.00262502, 0.00263, 0.00262502, 0.00262502, 28.86413674], [1516825260000, 0.00263, 0.00263384, 0.00263, 0.00263, 26.17399368], [1516825320000, 0.00263384, 0.00263903, 0.00263, 0.00263903, 392.74270772], [1516825380000, 0.00263903, 0.00264, 0.00263, 0.00263, 48.06922762], [1516825440000, 0.00263, 0.00263898, 0.00263, 0.00263898, 4.87355585], [1516825500000, 0.00263903, 0.00263903, 0.00263903, 0.00263903, 24.53372508], [1516825560000, 0.00263903, 0.0026395, 0.00263639, 0.0026395, 81.52436048], [1516825620000, 0.00263949, 0.00263987, 0.00263, 0.00263987, 27.45319523], [1516825740000, 0.00263986, 0.00263986, 0.00263, 0.00263, 101.87680888], [1516825800000, 0.00263, 0.00263, 0.00263, 0.00263, 28.37233446], [1516825920000, 0.00263, 0.00263, 0.00262503, 0.00263, 124.31975106], [1516825980000, 0.00263986, 0.00263986, 0.00263, 0.00263001, 140.97170986], [1516826040000, 0.00263001, 0.00263001, 0.00263001, 0.00263001, 0.83839986], [1516826100000, 0.00263002, 0.00263898, 0.00263002, 0.00263004, 104.62773633], [1516826160000, 0.00263005, 0.00263005, 0.00263005, 0.00263005, 3.54625055], [1516826220000, 0.002639, 0.002639, 0.00263505, 0.00263505, 1.25038372], [1516826280000, 0.00263509, 0.00263702, 0.00263007, 0.00263702, 197.99259714], [1516826340000, 0.00263897, 0.00263897, 0.00263007, 0.00263007, 44.45527443], [1516826400000, 0.0026305, 0.00263891, 0.0026305, 0.00263888, 385.53340793], [1516826460000, 0.0026306, 0.0026306, 0.0026305, 0.0026306, 18.78352811], [1516826520000, 0.0026306, 0.00263509, 0.0026306, 0.0026306, 56.52135678], [1516826580000, 0.0026306, 0.00263887, 0.0026306, 0.00263887, 16.11557996], [1516826640000, 0.0026306, 0.00263888, 0.0026306, 0.00263886, 197.53428603], [1516826700000, 0.00263886, 0.00263888, 0.00263886, 0.00263888, 27.92707487], [1516826760000, 0.00263888, 0.002642, 0.0026307, 0.002642, 266.22060085], [1516826820000, 0.002642, 0.002642, 0.00264199, 0.00264199, 20.45548389], [1516826880000, 0.002642, 0.002642, 0.0026307, 0.00264199, 161.03330546], [1516826940000, 0.0026307, 0.0026307, 0.0026307, 0.0026307, 6.43245439], [1516827000000, 0.002641, 0.002642, 0.002641, 0.002642, 41.56251484], [1516827060000, 0.002638, 0.002638, 0.002638, 0.002638, 8.78129733], [1516827120000, 0.002637, 0.002637, 0.002637, 0.002637, 5.44746926], [1516827180000, 0.002637, 0.00264999, 0.002637, 0.00264999, 752.83018868], [1516827240000, 0.00264, 0.00264, 0.00264, 0.00264, 77.66832055], [1516827300000, 0.0026441, 0.0026441, 0.0026441, 0.0026441, 10.63145991], [1516827360000, 0.0026441, 0.0026441, 0.00264, 0.00264, 261.28932952], [1516827420000, 0.0026441, 0.00264999, 0.00264, 0.00264999, 132.40245705], [1516827480000, 0.00264999, 0.00264999, 0.00264, 0.00264, 305.45836548], [1516827540000, 0.00264, 0.00264, 0.00264, 0.00264, 54.38346552], [1516827600000, 0.00264, 0.00264, 0.00264, 0.00264, 108.67910793], [1516827660000, 0.00264, 0.00264997, 0.00264, 0.00264, 807.56605937], [1516827720000, 0.00264, 0.00264995, 0.00264, 0.00264991, 466.07336849], [1516827780000, 0.00264, 0.00264992, 0.00264, 0.00264, 408.45320995], [1516827840000, 0.00264, 0.00264991, 0.00262501, 0.00262501, 1426.72526495], [1516827900000, 0.002635, 0.00264, 0.002635, 0.002635, 33.32945245], [1516827960000, 0.00262501, 0.002639, 0.00262501, 0.00262501, 49.38613415], [1516828020000, 0.00262501, 0.002635, 0.002625, 0.002625, 145.09809932], [1516828080000, 0.002625, 0.002634, 0.002625, 0.002634, 1.6111256], [1516828140000, 0.00263399, 0.00264991, 0.00263399, 0.00264991, 818.81490875], [1516828200000, 0.00264982, 0.00264982, 0.002635, 0.002635, 14.09139711], [1516828260000, 0.002647, 0.002647, 0.002635, 0.002635, 10.80922393], [1516828320000, 0.002634, 0.00263513, 0.002634, 0.00263513, 11.99581993], [1516828380000, 0.002634, 0.00263513, 0.00262503, 0.00263513, 535.79189485], [1516828440000, 0.00262503, 0.00262503, 0.00262503, 0.00262503, 2.0], [1516828500000, 0.00262503, 0.00264892, 0.00262503, 0.00264892, 26.82319891], [1516828560000, 0.00262504, 0.00262506, 0.00262504, 0.00262506, 20.22349703], [1516828620000, 0.00263, 0.00264598, 0.00263, 0.00264598, 212.26934438], [1516828680000, 0.00264598, 0.00264598, 0.00264598, 0.00264598, 6.59573398], [1516828740000, 0.00264598, 0.00264598, 0.00264598, 0.00264598, 2.64942677], [1516828800000, 0.00264547, 0.00264798, 0.00263006, 0.00263006, 4.13948974], [1516828860000, 0.00264, 0.00264, 0.00263449, 0.0026345, 18.70404365], [1516828920000, 0.0026345, 0.0026345, 0.00263001, 0.0026345, 33.03372929], [1516829100000, 0.0026345, 0.00264449, 0.0026345, 0.00264448, 225.39167051], [1516829160000, 0.00263225, 0.00264448, 0.00263225, 0.00264448, 5.65423826], [1516829280000, 0.00264446, 0.00264446, 0.00264446, 0.00264446, 3.77202237], [1516829340000, 0.00263225, 0.00263225, 0.00263225, 0.00263225, 1.95649351], [1516829400000, 0.00263001, 0.00263225, 0.00263001, 0.00263225, 34.62022906], [1516829520000, 0.00263224, 0.00263225, 0.00263224, 0.00263225, 107.0925436], [1516829580000, 0.00263225, 0.00263225, 0.00263225, 0.00263225, 14.6747986], [1516829640000, 0.0026301, 0.00263225, 0.00263001, 0.00263225, 213.2422328], [1516829700000, 0.00263225, 0.00263225, 0.002632, 0.002632, 90.28016013], [1516829760000, 0.00263225, 0.00264, 0.00263225, 0.00263225, 93.53151225], [1516829820000, 0.00263995, 0.00263995, 0.002632, 0.002632, 11.34381794], [1516829880000, 0.00263225, 0.002637, 0.00263225, 0.002637, 6.6022483], [1516829940000, 0.002637, 0.00263995, 0.002637, 0.00263995, 8.75346704], [1516830000000, 0.002637, 0.002637, 0.00263001, 0.002632, 99.66026247], [1516830120000, 0.00263995, 0.00263995, 0.00263995, 0.00263995, 44.58032086], [1516830180000, 0.00263995, 0.00263995, 0.0026305, 0.0026305, 163.58464046], [1516830240000, 0.0026305, 0.00264, 0.0026305, 0.00264, 166.24508499], [1516830300000, 0.00264, 0.00264, 0.00264, 0.00264, 15.13993706], [1516830360000, 0.00264, 0.00264, 0.00263201, 0.00263201, 557.95805949], [1516830420000, 0.00264, 0.00264, 0.00264, 0.00264, 6.77840909], [1516830480000, 0.00263201, 0.00263201, 0.00263201, 0.00263201, 2.25363152], [1516830540000, 0.00263999, 0.00263999, 0.00263995, 0.00263995, 19.67130924], [1516830600000, 0.00263995, 0.00263995, 0.00263995, 0.00263995, 87.29574939], [1516830660000, 0.00263202, 0.00264, 0.00263201, 0.00264, 28.5084018], [1516830720000, 0.00264, 0.00264, 0.00264, 0.00264, 7.7865908], [1516830780000, 0.00263201, 0.00264, 0.00263201, 0.00264, 66.63015987], [1516830840000, 0.00264, 0.00264, 0.00264, 0.00264, 7.36811811], [1516830900000, 0.002641, 0.0026444, 0.002635, 0.0026444, 59.42526099], [1516830960000, 0.0026444, 0.0026444, 0.00263201, 0.0026444, 389.07282689], [1516831020000, 0.002633, 0.002633, 0.0026305, 0.00263201, 11.77790288], [1516831080000, 0.00263201, 0.00263201, 0.00263201, 0.00263201, 1.56543375], [1516831140000, 0.00263201, 0.00263201, 0.00263201, 0.00263201, 2.93340955], [1516831200000, 0.00264438, 0.00264438, 0.00264437, 0.00264438, 80.37138375], [1516831260000, 0.00264437, 0.00264438, 0.00264436, 0.00264436, 7.82322779], [1516831320000, 0.00264436, 0.00264436, 0.002633, 0.002633, 38.08766596], [1516831380000, 0.002633, 0.002633, 0.002633, 0.002633, 187.83895752], [1516831440000, 0.00264414, 0.00264414, 0.00264414, 0.00264414, 0.40388788], [1516831500000, 0.002633, 0.00264391, 0.0026305, 0.0026305, 25.58685321], [1516831560000, 0.00264375, 0.00264376, 0.0026305, 0.0026305, 32.20032952], [1516831620000, 0.00264357, 0.00264357, 0.002631, 0.002631, 36.8899532], [1516831680000, 0.002632, 0.002632, 0.002632, 0.002632, 0.83776596], [1516831740000, 0.002632, 0.002632, 0.002632, 0.002632, 97.01149916], [1516831800000, 0.002632, 0.00264385, 0.00263046, 0.00264385, 27.89662562], [1516831920000, 0.002632, 0.00264298, 0.002632, 0.002632, 34.205439], [1516831980000, 0.002632, 0.002632, 0.002632, 0.002632, 12.69848039], [1516832040000, 0.002632, 0.002632, 0.002632, 0.002632, 12.88842928], [1516832100000, 0.002635, 0.00263799, 0.002632, 0.002632, 154.48615581], [1516832160000, 0.002632, 0.00263699, 0.002632, 0.00263699, 124.40492313], [1516832220000, 0.002632, 0.00263699, 0.002632, 0.00263699, 101.47333907], [1516832280000, 0.002632, 0.00263699, 0.002632, 0.00263201, 91.28764875], [1516832340000, 0.00263698, 0.00263698, 0.00263201, 0.00263201, 78.95001638], [1516832400000, 0.00263201, 0.00263201, 0.00263201, 0.00263201, 0.83776278], [1516832460000, 0.00263201, 0.00263201, 0.002632, 0.00263201, 203.8342685], [1516832520000, 0.00263201, 0.00264292, 0.00263201, 0.00263201, 14.38074212], [1516832580000, 0.00263201, 0.00263201, 0.002632, 0.002632, 19.83361391], [1516832640000, 0.002632, 0.00263201, 0.002632, 0.00263201, 635.8790922], [1516832700000, 0.002632, 0.00263201, 0.002632, 0.002632, 63.70201577], [1516832760000, 0.002632, 0.002632, 0.002632, 0.002632, 7.20491314], [1516832820000, 0.002632, 0.002632, 0.00263002, 0.00263002, 24.6528751], [1516832880000, 0.00263001, 0.00263002, 0.00263001, 0.00263001, 26.37598569], [1516832940000, 0.00263001, 0.00263001, 0.00263001, 0.00263001, 8.49674919], [1516833000000, 0.00263001, 0.002632, 0.00263, 0.00263, 233.3696974], [1516833060000, 0.00263197, 0.00263198, 0.00263, 0.00263, 1.71688432], [1516833120000, 0.00263, 0.00264118, 0.00263, 0.00263, 1.24863677], [1516833180000, 0.002632, 0.002632, 0.002632, 0.002632, 17.95825772], [1516833240000, 0.002632, 0.002632, 0.00263, 0.00263, 29.74089869], [1516833300000, 0.00263, 0.00263, 0.00263, 0.00263, 35.32882161], [1516833360000, 0.00263, 0.00263, 0.00263, 0.00263, 358.77228016], [1516833420000, 0.00262504, 0.00262504, 0.00262504, 0.00262504, 0.4199936], [1516833480000, 0.00262504, 0.00262504, 0.00262501, 0.00262501, 34.24797758], [1516833540000, 0.00262501, 0.00264064, 0.00262501, 0.00263656, 714.43789935], [1516833600000, 0.00263564, 0.00263564, 0.002626, 0.00263563, 113.56733857], [1516833660000, 0.00263562, 0.00263562, 0.00263529, 0.00263529, 62.45226802], [1516833720000, 0.00263529, 0.00263529, 0.00263529, 0.00263529, 6.98010364], [1516833840000, 0.00263528, 0.00263528, 0.00263528, 0.00263528, 1.6692028], [1516833900000, 0.002626, 0.00263528, 0.00262576, 0.00263528, 93.72932636], [1516834080000, 0.00262576, 0.00262576, 0.00262501, 0.00262501, 471.84525818], [1516834140000, 0.00262576, 0.00262576, 0.002625, 0.002625, 545.70109244], [1516834200000, 0.00262501, 0.00262501, 0.002625, 0.002625, 15.05424869], [1516834260000, 0.002625, 0.002625, 0.002625, 0.002625, 100.42], [1516834320000, 0.002625, 0.002625, 0.002625, 0.002625, 15.41213189], [1516834380000, 0.002625, 0.00262501, 0.002625, 0.00262501, 211.42848742], [1516834440000, 0.00262501, 0.00262501, 0.00262501, 0.00262501, 179.16197504], [1516834500000, 0.00262576, 0.00263051, 0.002621, 0.002621, 219.76231746], [1516834560000, 0.002625, 0.00263051, 0.00262001, 0.0026305, 462.44008821], [1516834620000, 0.0026305, 0.0026305, 0.00262, 0.00262, 154.84905203], [1516834680000, 0.00263049, 0.00263049, 0.00263049, 0.00263049, 11.06705951], [1516834740000, 0.00263049, 0.00263049, 0.00263046, 0.00263046, 2.95306744], [1516834800000, 0.00262006, 0.00263047, 0.00262001, 0.00262001, 236.25019801], [1516834860000, 0.00262001, 0.00262001, 0.00262, 0.00262001, 91.35536336], [1516834920000, 0.00262, 0.00263046, 0.00262, 0.00262001, 586.97681383], [1516834980000, 0.00263046, 0.00263046, 0.00262, 0.00263046, 43.51026458], [1516835040000, 0.00262, 0.00262999, 0.00262, 0.00262, 8.47219691], [1516835100000, 0.00262, 0.00262, 0.00262, 0.00262, 0.84160306], [1516835160000, 0.00262, 0.00262, 0.00262, 0.00262, 12.84160306], [1516835220000, 0.00262, 0.00262997, 0.00262, 0.00262, 4.4643713], [1516835280000, 0.00262001, 0.00262001, 0.00262, 0.00262, 157.9801289], [1516835340000, 0.00262, 0.00262, 0.00262, 0.00262, 40.0], [1516835400000, 0.002615, 0.002615, 0.00261463, 0.00261463, 12.80171702], [1516835460000, 0.002615, 0.002615, 0.002615, 0.002615, 0.09828298], [1516835520000, 0.00261999, 0.00261999, 0.00261463, 0.00261999, 12.31245567], [1516835580000, 0.00261999, 0.00262, 0.00261999, 0.00262, 154.46105064], [1516835640000, 0.00261999, 0.00262, 0.00261999, 0.00262, 58.78300721], [1516835700000, 0.00261999, 0.00261999, 0.00261999, 0.00261999, 0.41984893], [1516835820000, 0.00261999, 0.00261999, 0.00261749, 0.00261749, 3.2082587], [1516835880000, 0.00261999, 0.00261999, 0.00261749, 0.00261749, 8.36150368], [1516835940000, 0.00261749, 0.00261998, 0.00261749, 0.00261998, 52.18725669], [1516836000000, 0.00261998, 0.00261998, 0.00261998, 0.00261998, 68.4680028], [1516836060000, 0.00261998, 0.00261998, 0.00261998, 0.00261998, 0.4300101], [1516836120000, 0.00261749, 0.00261749, 0.00261749, 0.00261749, 9.0], [1516836180000, 0.00261998, 0.00261998, 0.0026175, 0.0026175, 40.53956774], [1516836240000, 0.0026175, 0.0026175, 0.0026175, 0.0026175, 44.54990513], [1516836300000, 0.00261998, 0.00261998, 0.0026175, 0.0026175, 17.97153253], [1516836360000, 0.0026175, 0.0026175, 0.0026175, 0.0026175, 82.39184766], [1516836420000, 0.0026175, 0.0026175, 0.002611, 0.0026175, 589.51388199], [1516836540000, 0.00261749, 0.00261749, 0.00261749, 0.00261749, 4.33841304], [1516836600000, 0.002612, 0.00261747, 0.002612, 0.00261747, 42.68911414], [1516836660000, 0.00261747, 0.00261747, 0.00261747, 0.00261747, 14.08518543], [1516836720000, 0.0026165, 0.00261745, 0.0026165, 0.0026165, 16.33858526], [1516836780000, 0.00261201, 0.0026165, 0.002612, 0.0026165, 137.94535413], [1516836840000, 0.00261745, 0.00261745, 0.002612, 0.002612, 230.29737884], [1516836900000, 0.002612, 0.00261201, 0.00261016, 0.00261201, 660.96788682], [1516836960000, 0.00261745, 0.00261745, 0.00261201, 0.00261201, 23.35528463], [1516837020000, 0.00261202, 0.00261202, 0.00261202, 0.00261202, 58.25773006], [1516837080000, 0.00261202, 0.00261202, 0.002612, 0.00261202, 96.4539132], [1516837140000, 0.00261744, 0.00261744, 0.002612, 0.00261201, 34.2658603], [1516837260000, 0.00261201, 0.00261741, 0.00261201, 0.00261741, 11.17698309], [1516837320000, 0.00261741, 0.00261741, 0.0026174, 0.0026174, 7.73167656], [1516837380000, 0.0026174, 0.0026174, 0.002612, 0.002612, 134.03253989], [1516837440000, 0.00261201, 0.00261201, 0.002612, 0.002612, 36.85582441], [1516837500000, 0.00261741, 0.00261999, 0.00261201, 0.00261999, 394.74019054], [1516837560000, 0.00261999, 0.00262, 0.00261999, 0.00262, 7.76228908], [1516837620000, 0.00261999, 0.00262, 0.00261999, 0.00261999, 29.58286931], [1516837680000, 0.00261999, 0.0026305, 0.00261999, 0.0026305, 228.7480703], [1516837740000, 0.00263521, 0.00263521, 0.00261, 0.00261, 1090.31526363], [1516837800000, 0.00262, 0.00263529, 0.00260814, 0.00263529, 321.19746456], [1516837920000, 0.00263447, 0.00263464, 0.00263447, 0.00263464, 6.27535979], [1516837980000, 0.00263496, 0.00263834, 0.00263496, 0.00263834, 12.27647541], [1516838040000, 0.00263974, 0.00263974, 0.00263974, 0.00263974, 5.01600299], [1516838100000, 0.002625, 0.00263882, 0.00261252, 0.00263869, 87.38921403], [1516838160000, 0.00263432, 0.00263433, 0.00263432, 0.00263433, 9.34590936], [1516838220000, 0.00263421, 0.00263421, 0.00263421, 0.00263421, 1.40907771], [1516838280000, 0.00261254, 0.00261254, 0.00261254, 0.00261254, 64.43556411], [1516838340000, 0.00262148, 0.00262148, 0.00261254, 0.00261254, 2.10204537], [1516838400000, 0.00262147, 0.00262585, 0.00261254, 0.00262585, 28.71327381], [1516838460000, 0.00262596, 0.00263421, 0.00261254, 0.00263397, 98.16013765], [1516838520000, 0.00263397, 0.00263397, 0.00261254, 0.00261254, 96.19830815], [1516838580000, 0.00261254, 0.00261254, 0.00261253, 0.00261253, 160.19225798], [1516838640000, 0.00261254, 0.00261254, 0.00261254, 0.00261254, 29.65195016], [1516838700000, 0.00261254, 0.00263328, 0.00261254, 0.00262984, 59.04132815], [1516838760000, 0.00262984, 0.00262984, 0.00261255, 0.00262983, 157.57563919], [1516838820000, 0.0026298, 0.0026298, 0.00261255, 0.00261255, 39.39666681], [1516838880000, 0.00261261, 0.00261266, 0.00261261, 0.00261266, 5.32961307], [1516838940000, 0.00261266, 0.002632, 0.00261266, 0.00261269, 136.26720889], [1516839000000, 0.00263192, 0.00263192, 0.00263191, 0.00263192, 39.72582616], [1516839060000, 0.00263192, 0.00263199, 0.00262269, 0.00262269, 62.41534256], [1516839120000, 0.00262269, 0.00262269, 0.00262269, 0.00262269, 10.55973708], [1516839180000, 0.00262269, 0.00262269, 0.00262269, 0.00262269, 29.96239751], [1516839240000, 0.00261876, 0.00261876, 0.00261876, 0.00261876, 50.0], [1516839300000, 0.00261878, 0.00262269, 0.002618, 0.00262269, 135.94950237], [1516839360000, 0.00262269, 0.00262269, 0.00262269, 0.00262269, 65.80899968], [1516839420000, 0.00262269, 0.00262269, 0.00262269, 0.00262269, 1.65131846], [1516839480000, 0.00262269, 0.00263199, 0.00262269, 0.00262269, 25.2862965], [1516839540000, 0.0026228, 0.0026228, 0.00262269, 0.00262269, 33.37631511], [1516839600000, 0.00262274, 0.002632, 0.00262269, 0.0026227, 654.14360896], [1516839660000, 0.00262279, 0.00262282, 0.00262279, 0.00262282, 3.30761526], [1516839720000, 0.00262283, 0.00262283, 0.00262283, 0.00262283, 0.84069498], [1516839780000, 0.00262283, 0.002632, 0.00262282, 0.00262282, 75.89076756], [1516839840000, 0.00262282, 0.00262282, 0.00262279, 0.00262279, 69.6256871], [1516839900000, 0.00262279, 0.00263199, 0.00262269, 0.00262269, 48.79558573], [1516839960000, 0.00262269, 0.00262269, 0.00262269, 0.00262269, 4.84073986], [1516840020000, 0.0026227, 0.00263196, 0.0026227, 0.00263196, 71.49916758], [1516840080000, 0.0026227, 0.00262271, 0.0026227, 0.00262271, 157.6757674], [1516840140000, 0.00262271, 0.00262272, 0.00262271, 0.00262272, 0.84073184], [1516840200000, 0.00263196, 0.00263196, 0.00263196, 0.00263196, 9.68004723], [1516840260000, 0.00263194, 0.00263194, 0.00263194, 0.00263194, 0.44377042], [1516840320000, 0.00262272, 0.00262272, 0.00262272, 0.00262272, 5.82610915], [1516840380000, 0.00262272, 0.00263171, 0.00262272, 0.00262272, 13.62529575], [1516840500000, 0.00263171, 0.00263171, 0.00263171, 0.00263171, 10.2321507], [1516840560000, 0.00262272, 0.0026317, 0.0026227, 0.0026227, 810.10417448], [1516840620000, 0.0026227, 0.00262271, 0.0026227, 0.00262271, 109.70507258], [1516840680000, 0.00262001, 0.00262001, 0.00262, 0.00262, 46.9501097], [1516840740000, 0.00262, 0.00262, 0.00261812, 0.00261812, 186.42226383], [1516840800000, 0.00262, 0.00262, 0.002618, 0.00261999, 219.85904203], [1516840860000, 0.00261999, 0.00261999, 0.002618, 0.0026185, 304.13503104], [1516840920000, 0.00261999, 0.00261999, 0.00261999, 0.00261999, 6.78531025], [1516840980000, 0.0026185, 0.0026185, 0.0026185, 0.0026185, 6.0], [1516841100000, 0.00261999, 0.00261999, 0.00261999, 0.00261999, 9.8], [1516841160000, 0.00261999, 0.00261999, 0.00261999, 0.00261999, 292.14468344], [1516841220000, 0.00261999, 0.00262, 0.00261989, 0.00262, 270.08836819], [1516841280000, 0.00262, 0.00262, 0.00262, 0.00262, 443.45298173], [1516841400000, 0.0026185, 0.00262, 0.0026185, 0.0026185, 123.39415478], [1516841460000, 0.00262, 0.00262, 0.00262, 0.00262, 521.33307012], [1516841520000, 0.00262, 0.00262, 0.00262, 0.00262, 57.41350801], [1516841580000, 0.00262001, 0.00262001, 0.00262001, 0.00262001, 64.58077976], [1516841640000, 0.00262, 0.00262, 0.0026185, 0.0026185, 102.03034559], [1516841700000, 0.00262001, 0.00263159, 0.00262001, 0.00263159, 9.09996808], [1516841820000, 0.00263138, 0.00263138, 0.00263138, 0.00263138, 5.14723183], [1516841880000, 0.00262001, 0.00262889, 0.00262001, 0.00262889, 13.79296315], [1516841940000, 0.00262001, 0.00262001, 0.00262001, 0.00262001, 9.5], [1516842000000, 0.002621, 0.0026279, 0.002621, 0.002621, 14.50687291], [1516842060000, 0.002621, 0.002621, 0.00262002, 0.00262002, 48.40838463], [1516842120000, 0.002621, 0.002621, 0.00262002, 0.002621, 112.10987461], [1516842180000, 0.002621, 0.002621, 0.00262002, 0.002621, 20.90372159], [1516842240000, 0.002621, 0.0026279, 0.00262002, 0.00262002, 7.21082318], [1516842300000, 0.00262002, 0.0026279, 0.00262002, 0.00262002, 27.03231877], [1516842360000, 0.0026279, 0.00263092, 0.0026279, 0.00263092, 100.79506849], [1516842420000, 0.0026279, 0.0026279, 0.0026279, 0.0026279, 30.43507302], [1516842480000, 0.0026279, 0.0026279, 0.0026279, 0.0026279, 0.41953651], [1516842540000, 0.0026279, 0.0026279, 0.0026279, 0.0026279, 30.5912593], [1516842600000, 0.00262004, 0.0026279, 0.00262004, 0.0026279, 71.76559049], [1516842720000, 0.00262789, 0.00262789, 0.00262789, 0.00262789, 3.03968207], [1516842780000, 0.00262004, 0.00262004, 0.00262004, 0.00262004, 2.33601785], [1516842900000, 0.00262004, 0.00262787, 0.00262004, 0.00262787, 56.47015458], [1516842960000, 0.00262787, 0.00262787, 0.00262787, 0.00262787, 4.85094782], [1516843020000, 0.00262787, 0.00262787, 0.00262787, 0.00262787, 459.67029651], [1516843080000, 0.00262787, 0.00262787, 0.00262787, 0.00262787, 2.00708776], [1516843140000, 0.00262787, 0.00262787, 0.00262787, 0.00262787, 6.28442036], [1516843200000, 0.00262004, 0.00262004, 0.00262003, 0.00262003, 700.14708883], [1516843260000, 0.00262003, 0.00262004, 0.00261625, 0.00261625, 342.47674491], [1516843320000, 0.00261276, 0.0026261, 0.00261276, 0.00261276, 114.59892269], [1516843380000, 0.0026261, 0.0026261, 0.0026261, 0.0026261, 0.41982407], [1516843440000, 0.0026261, 0.00262779, 0.00261277, 0.00262777, 140.30517947], [1516843500000, 0.00262769, 0.00262769, 0.0026274, 0.0026274, 16.36630481], [1516843560000, 0.00262739, 0.00262739, 0.00261301, 0.00261301, 80.87230395], [1516843620000, 0.00261301, 0.00261301, 0.00261301, 0.00261301, 37.40610992], [1516843680000, 0.00261303, 0.00261303, 0.00261303, 0.00261303, 35.02664794], [1516843740000, 0.00261303, 0.00261303, 0.00261302, 0.00261302, 160.47792389], [1516843800000, 0.00261302, 0.00262618, 0.00261302, 0.00261302, 97.23464331], [1516843860000, 0.00261302, 0.00261302, 0.00261301, 0.00261301, 643.605296], [1516843920000, 0.00262604, 0.00262604, 0.002613, 0.002613, 59.60431813], [1516843980000, 0.002613, 0.002613, 0.002613, 0.002613, 0.84385764], [1516844040000, 0.002613, 0.00262537, 0.002613, 0.00262399, 140.60406925], [1516844100000, 0.002613, 0.00262391, 0.002613, 0.002613, 134.27306834], [1516844160000, 0.002613, 0.00262294, 0.002613, 0.002613, 286.14249187], [1516844220000, 0.002613, 0.002613, 0.002613, 0.002613, 466.33494088], [1516844280000, 0.002613, 0.00262282, 0.002613, 0.00261301, 2.82642466], [1516844340000, 0.00261301, 0.00261994, 0.00261301, 0.00261301, 1.95470519], [1516844400000, 0.00261301, 0.00261991, 0.002613, 0.002613, 232.51258974], [1516844460000, 0.002613, 0.00261983, 0.002613, 0.002613, 263.77434991], [1516844700000, 0.00261301, 0.002615, 0.00261301, 0.00261301, 16.565074], [1516844760000, 0.0026138, 0.002615, 0.00261301, 0.0026138, 132.21508686], [1516844820000, 0.0026138, 0.00261382, 0.0026138, 0.00261382, 130.46457417], [1516844880000, 0.00261382, 0.00261382, 0.00261382, 0.00261382, 0.8435929], [1516844940000, 0.00261382, 0.002615, 0.00261382, 0.002615, 18.86407491], [1516845000000, 0.002615, 0.00261999, 0.002615, 0.00261999, 98.32105452], [1516845060000, 0.002615, 0.00262, 0.002615, 0.002615, 12.5576195], [1516845120000, 0.00262, 0.00262281, 0.002615, 0.002615, 79.93990168], [1516845180000, 0.00262281, 0.00262721, 0.0026152, 0.00262721, 198.85502557], [1516845240000, 0.00262725, 0.00262788, 0.00262352, 0.00262352, 191.17452234], [1516845300000, 0.0026152, 0.00262789, 0.0026152, 0.00262789, 6.48101867], [1516845360000, 0.00262788, 0.00262788, 0.00262788, 0.00262788, 1.67901138], [1516845420000, 0.00262788, 0.00262789, 0.00262787, 0.00262789, 720.84198402], [1516845480000, 0.00262789, 0.00262998, 0.0026152, 0.0026152, 448.10768792], [1516845540000, 0.00261521, 0.002616, 0.00261521, 0.002616, 2.40454195], [1516845600000, 0.002616, 0.00262958, 0.002615, 0.00262958, 1453.32529976], [1516845660000, 0.002616, 0.00262956, 0.002615, 0.002615, 72.86990541], [1516845720000, 0.00262952, 0.00262952, 0.00261501, 0.00261501, 17.75361635], [1516845780000, 0.00261501, 0.00261501, 0.00261382, 0.00261382, 266.34959394], [1516845840000, 0.002615, 0.00262909, 0.00261301, 0.00261301, 93.49093758], [1516845900000, 0.00261301, 0.00261381, 0.00261301, 0.00261301, 82.64156666], [1516845960000, 0.00261301, 0.00261301, 0.00261301, 0.00261301, 1.12321452], [1516846020000, 0.00261341, 0.00261381, 0.00261301, 0.00261301, 2.28065483], [1516846080000, 0.00261301, 0.00261301, 0.00261301, 0.00261301, 0.8438544], [1516846140000, 0.00261381, 0.00261381, 0.002605, 0.002605, 929.56303861], [1516846200000, 0.00261301, 0.00261381, 0.00260501, 0.00261381, 69.78373818], [1516846260000, 0.00261381, 0.00261381, 0.00261381, 0.00261381, 126.31548135], [1516846320000, 0.0026138, 0.00261381, 0.0026138, 0.00261381, 313.63253641], [1516846380000, 0.00260881, 0.00260881, 0.002605, 0.002605, 15.48957949], [1516846500000, 0.0026283, 0.00262831, 0.00261381, 0.00261381, 16.44573716], [1516846560000, 0.00261381, 0.00261381, 0.00260501, 0.00261381, 84.79386456], [1516846620000, 0.00261381, 0.00261381, 0.00261381, 0.00261381, 3.98011205], [1516846680000, 0.00261381, 0.00261381, 0.002605, 0.002605, 56.93449083], [1516846740000, 0.00260681, 0.00260681, 0.002605, 0.002605, 8.27775549], [1516846860000, 0.00261381, 0.00261381, 0.002605, 0.002605, 89.79025492], [1516846920000, 0.00260682, 0.00261381, 0.002605, 0.00261381, 254.65929513], [1516846980000, 0.00261381, 0.00261381, 0.002605, 0.00260502, 20.86318473], [1516847040000, 0.00260503, 0.00261381, 0.00260503, 0.0026106, 15.85013704], [1516847100000, 0.0026106, 0.0026106, 0.0026106, 0.0026106, 53.61417008], [1516847160000, 0.0026106, 0.00261381, 0.0026106, 0.00261381, 5.36906877], [1516847220000, 0.00261381, 0.00261381, 0.002605, 0.0026106, 382.13949269], [1516847280000, 0.0026106, 0.0026106, 0.00260501, 0.0026106, 729.89503708], [1516847340000, 0.0026106, 0.00261381, 0.00261059, 0.00261381, 249.30326501], [1516847400000, 0.00261381, 0.00261381, 0.00260501, 0.00260501, 41.22818884], [1516847460000, 0.00261381, 0.00261381, 0.00260501, 0.00260501, 20.16702754], [1516847520000, 0.00260501, 0.00260501, 0.002605, 0.00260501, 260.98973169], [1516847580000, 0.00260501, 0.00260501, 0.002605, 0.00260501, 151.36532813], [1516847640000, 0.002605, 0.00261381, 0.002605, 0.00261381, 267.04023483], [1516847700000, 0.00261381, 0.00261381, 0.002605, 0.002605, 102.42757227], [1516847760000, 0.002605, 0.0026055, 0.002605, 0.002605, 40.68527052], [1516847820000, 0.00260501, 0.0026055, 0.00260501, 0.0026055, 58.12736087], [1516847880000, 0.0026055, 0.0026055, 0.00260062, 0.002601, 1608.62104674], [1516847940000, 0.002601, 0.002601, 0.002601, 0.002601, 1021.04400928], [1516848000000, 0.002601, 0.0026055, 0.0026005, 0.0026005, 1950.53696302], [1516848060000, 0.002601, 0.002601, 0.002601, 0.002601, 182.38684169], [1516848120000, 0.002601, 0.0026055, 0.002601, 0.002601, 2246.10906356], [1516848180000, 0.0026005, 0.0026005, 0.0026, 0.0026, 1874.55968481], [1516848240000, 0.00260019, 0.0026055, 0.00259825, 0.0026055, 2739.58848135], [1516848300000, 0.00259821, 0.0026055, 0.0025982, 0.0026055, 42.24292219], [1516848360000, 0.00259825, 0.00260499, 0.00259687, 0.00259688, 658.10149428], [1516848420000, 0.00259801, 0.00259821, 0.002595, 0.002595, 245.11661507], [1516848480000, 0.002595, 0.00259801, 0.00259345, 0.00259345, 513.66001806], [1516848540000, 0.00259479, 0.00259479, 0.002593, 0.002593, 42.02563536], [1516848600000, 0.002593, 0.00259479, 0.00259232, 0.00259479, 119.66525052], [1516848660000, 0.00259232, 0.00260444, 0.00259232, 0.00259801, 88.17087354], [1516848720000, 0.00260426, 0.00260426, 0.0025948, 0.0025948, 93.14973205], [1516848780000, 0.0025948, 0.00259802, 0.0025948, 0.00259802, 65.37629037], [1516848840000, 0.00259802, 0.00259802, 0.00258601, 0.00258601, 1581.31349094], [1516848900000, 0.00258601, 0.00259801, 0.00258601, 0.00259799, 104.32111812], [1516848960000, 0.002594, 0.002594, 0.002594, 0.002594, 25.94678976], [1516849020000, 0.002594, 0.00259798, 0.002594, 0.002595, 11.08439717], [1516849080000, 0.002595, 0.00259796, 0.002594, 0.00259796, 309.05826496], [1516849140000, 0.002596, 0.00259797, 0.002594, 0.002594, 680.19004127], [1516849200000, 0.00259794, 0.00259797, 0.00259794, 0.00259797, 463.37715798], [1516849260000, 0.00259797, 0.00259797, 0.002594, 0.002594, 98.47946199], [1516849320000, 0.002594, 0.002594, 0.002594, 0.002594, 49.64964604], [1516849380000, 0.00259794, 0.00259797, 0.00259794, 0.00259797, 218.38735324], [1516849440000, 0.00259797, 0.00259797, 0.0025941, 0.0025941, 20.57289258], [1516849500000, 0.00259797, 0.00259797, 0.00259794, 0.00259794, 4.84915915], [1516849560000, 0.00259797, 0.002605, 0.00259797, 0.002605, 494.55591608], [1516849620000, 0.00260474, 0.002605, 0.00259794, 0.002605, 355.51653342], [1516849680000, 0.002605, 0.002605, 0.00259795, 0.002605, 294.7175697], [1516849740000, 0.002605, 0.002605, 0.00259796, 0.00260499, 563.12874373], [1516849800000, 0.00260499, 0.002605, 0.00259893, 0.00260499, 141.86899264], [1516849860000, 0.00260299, 0.00260299, 0.00260299, 0.00260299, 38.3214339], [1516849920000, 0.00260299, 0.002605, 0.00260299, 0.002605, 289.67321275], [1516849980000, 0.0026055, 0.0026055, 0.00260299, 0.0026055, 207.65242791], [1516850040000, 0.00260299, 0.0026055, 0.00260002, 0.0026055, 94.15268876], [1516850100000, 0.0026055, 0.0026055, 0.00259797, 0.00259797, 241.96745732], [1516850160000, 0.0026055, 0.0026055, 0.00259797, 0.0026055, 105.82202744], [1516850220000, 0.0026055, 0.0026055, 0.00259795, 0.00259799, 115.40550293], [1516850280000, 0.00259795, 0.00259799, 0.00259795, 0.00259799, 289.67245665], [1516850340000, 0.00259799, 0.00260548, 0.00259799, 0.00260547, 107.90135669], [1516850400000, 0.00260547, 0.00260547, 0.00260547, 0.00260547, 54.54645684], [1516850460000, 0.00260547, 0.00260547, 0.002598, 0.002598, 233.87674353], [1516850520000, 0.00260547, 0.00260548, 0.002598, 0.00260548, 18.20742573], [1516850580000, 0.00261, 0.00261, 0.00261, 0.00261, 196.2298367], [1516850640000, 0.00261, 0.00261, 0.00260547, 0.00260547, 632.32822997], [1516850700000, 0.00260547, 0.00260547, 0.00259799, 0.00259799, 166.78410697], [1516850760000, 0.0026, 0.0026, 0.0026, 0.0026, 40.23782082], [1516850820000, 0.00259799, 0.00259799, 0.00259799, 0.00259799, 642.81714057], [1516850880000, 0.00259799, 0.00259799, 0.00259799, 0.00259799, 61.01576131], [1516850940000, 0.0026, 0.0026, 0.00259799, 0.00259799, 28.30135683], [1516851000000, 0.0026, 0.0026, 0.00259799, 0.002598, 349.54456434], [1516851060000, 0.0026, 0.0026, 0.00259799, 0.00259799, 295.77490608], [1516851120000, 0.00259799, 0.00259799, 0.0025941, 0.00259795, 189.1498129], [1516851180000, 0.00259795, 0.00259795, 0.0025941, 0.0025941, 84.21953062], [1516851240000, 0.0025941, 0.0025941, 0.0025941, 0.0025941, 4.51657425], [1516851300000, 0.0025941, 0.0025941, 0.00259402, 0.00259402, 84.75431002], [1516851360000, 0.00259402, 0.00259402, 0.00259402, 0.00259402, 8.26847629], [1516851420000, 0.00259402, 0.00259795, 0.00259001, 0.0025941, 172.55867261], [1516851480000, 0.00259795, 0.00259795, 0.00259795, 0.00259795, 65.40428483], [1516851540000, 0.00259795, 0.00259795, 0.0025941, 0.0025941, 308.35550069], [1516851600000, 0.00259795, 0.00259795, 0.002595, 0.00259795, 19.22861076], [1516851660000, 0.00259795, 0.00261309, 0.00259795, 0.00261296, 158.12582674], [1516851720000, 0.00260253, 0.00260253, 0.00260253, 0.00260253, 9.91357147], [1516851840000, 0.00259502, 0.00259502, 0.0025941, 0.0025941, 512.07626657], [1516851900000, 0.00259502, 0.00260252, 0.00259502, 0.00260252, 6.41366306], [1516851960000, 0.0026024, 0.0026025, 0.0026024, 0.0026025, 71.30549022], [1516852020000, 0.0026025, 0.0026025, 0.00260249, 0.00260249, 34.04335467], [1516852080000, 0.00260249, 0.00260249, 0.00259502, 0.00259502, 10.70304015], [1516852140000, 0.00260248, 0.00260248, 0.00259502, 0.00259502, 45.03132898], [1516852200000, 0.00259502, 0.00260025, 0.00259502, 0.00259502, 266.96732598], [1516852260000, 0.00259502, 0.00259999, 0.00259502, 0.00259999, 12.45901337], [1516852320000, 0.00259502, 0.00259999, 0.00259502, 0.00259502, 30.16128657], [1516852380000, 0.00259502, 0.00259502, 0.00259502, 0.00259502, 4.48900263], [1516852440000, 0.00259502, 0.00259502, 0.00259502, 0.00259502, 233.79759369], [1516852500000, 0.00259502, 0.0026, 0.00259502, 0.0026, 4.27102085], [1516852560000, 0.0026, 0.00260796, 0.0025999, 0.0025999, 295.8087435], [1516852620000, 0.00260252, 0.00260252, 0.0025999, 0.0025999, 3.23634695], [1516852680000, 0.0025999, 0.0025999, 0.0025988, 0.0025988, 25.99511077], [1516852740000, 0.0025988, 0.0025988, 0.00259502, 0.0025988, 38.87884056], [1516852800000, 0.00259502, 0.00260782, 0.00259502, 0.00260782, 71.58092802], [1516852860000, 0.00259502, 0.0026, 0.00259502, 0.00259502, 145.36761593], [1516852920000, 0.0025945, 0.0025945, 0.00258601, 0.00258601, 142.46217743], [1516852980000, 0.0025945, 0.0025945, 0.0025945, 0.0025945, 202.67334236], [1516853040000, 0.0026, 0.002602, 0.0026, 0.002602, 105.4936477], [1516853100000, 0.002603, 0.002607, 0.002603, 0.002607, 69.33427603], [1516853160000, 0.002607, 0.002607, 0.002607, 0.002607, 172.36798683], [1516853220000, 0.00260795, 0.00260796, 0.002607, 0.002607, 25.9483616], [1516853280000, 0.00261368, 0.00261368, 0.002607, 0.002607, 70.89266322], [1516853340000, 0.0026137, 0.0026137, 0.00260701, 0.0026137, 28.79646148], [1516853400000, 0.0026136, 0.0026137, 0.002613, 0.002613, 6.25598573], [1516853460000, 0.00260702, 0.00260702, 0.002607, 0.00260702, 222.30555605], [1516853520000, 0.0026071, 0.0026071, 0.0026071, 0.0026071, 48.39603039], [1516853580000, 0.0026071, 0.00261198, 0.002607, 0.002607, 70.42588619], [1516853640000, 0.002603, 0.002603, 0.002603, 0.002603, 110.78036496], [1516853700000, 0.002603, 0.00261197, 0.0026, 0.00261197, 73.63363128], [1516853880000, 0.00261188, 0.00261188, 0.00260999, 0.00261, 186.52803991], [1516853940000, 0.00260997, 0.00260997, 0.00260997, 0.00260997, 5.0], [1516854000000, 0.00260997, 0.00260997, 0.0026, 0.0026, 110.84479065], [1516854120000, 0.00260997, 0.00260997, 0.002606, 0.002606, 15.7105942], [1516854180000, 0.002606, 0.002606, 0.00259834, 0.00259834, 1447.87971257], [1516854240000, 0.00259834, 0.0025984, 0.00259834, 0.00259834, 35.36883322], [1516854300000, 0.002606, 0.0026118, 0.002606, 0.002606, 35.04003426], [1516854360000, 0.002606, 0.002606, 0.00259834, 0.00259834, 312.41393334], [1516854420000, 0.00259834, 0.00259834, 0.00259834, 0.00259834, 14.45311481], [1516854480000, 0.00261147, 0.00261147, 0.00259834, 0.00259834, 130.71728919], [1516854540000, 0.00259835, 0.00261147, 0.00259835, 0.00261147, 125.6718703], [1516854600000, 0.00261147, 0.0026115, 0.00261142, 0.0026115, 555.4892113], [1516854660000, 0.0026115, 0.0026115, 0.00261142, 0.00261142, 328.31685383], [1516854720000, 0.00261142, 0.00261142, 0.00261142, 0.00261142, 46.37141928], [1516854780000, 0.00261142, 0.00261142, 0.00261141, 0.00261141, 96.75527095], [1516854840000, 0.00261141, 0.0026115, 0.0026002, 0.0026115, 777.15011025], [1516854900000, 0.0026115, 0.0026116, 0.00261, 0.0026116, 677.34900798], [1516854960000, 0.00260041, 0.0026116, 0.00260021, 0.0026116, 36.97609791], [1516855020000, 0.0026115, 0.0026115, 0.0026115, 0.0026115, 24.38173805], [1516855080000, 0.0026115, 0.0026115, 0.0026115, 0.0026115, 0.23028012], [1516855140000, 0.00260028, 0.0026116, 0.00260028, 0.0026116, 70.60985174], [1516855200000, 0.002611, 0.0026116, 0.0026007, 0.0026116, 81.87857899], [1516855260000, 0.0026003, 0.0026116, 0.00260024, 0.0026116, 175.6333486], [1516855320000, 0.0026116, 0.0026118, 0.0026116, 0.0026116, 97.12192117], [1516855380000, 0.0026116, 0.0026116, 0.0026, 0.0026116, 1313.57687398], [1516855440000, 0.0026116, 0.0026116, 0.00260517, 0.00260517, 16.0], [1516855500000, 0.00260001, 0.0026118, 0.00259451, 0.0026118, 422.61213589], [1516855560000, 0.0026118, 0.0026118, 0.0026118, 0.0026118, 14.03768685], [1516855620000, 0.00261161, 0.00261161, 0.0026116, 0.0026116, 20.64956833], [1516855680000, 0.00261161, 0.0026118, 0.00261161, 0.0026118, 39.71687214], [1516855740000, 0.00261161, 0.0026118, 0.00261161, 0.0026118, 3.26518873], [1516855800000, 0.00261161, 0.0026118, 0.0026116, 0.0026116, 477.72177415], [1516855860000, 0.0026116, 0.0026118, 0.0026116, 0.0026116, 7.58314621], [1516855920000, 0.0026116, 0.0026116, 0.0026116, 0.0026116, 4.87527154], [1516855980000, 0.0026116, 0.0026116, 0.0026116, 0.0026116, 184.99246085], [1516856040000, 0.0026116, 0.0026118, 0.0026116, 0.0026116, 11.75430999], [1516856100000, 0.0026116, 0.0026118, 0.0026116, 0.0026116, 5.49160788], [1516856160000, 0.0026118, 0.0026118, 0.0026116, 0.0026116, 39.9905868], [1516856220000, 0.0026116, 0.0026116, 0.0026116, 0.0026116, 374.24115488], [1516856280000, 0.0026116, 0.0026116, 0.00259983, 0.00259983, 3.3], [1516856340000, 0.0026116, 0.0026116, 0.00259985, 0.0026116, 128.33593569], [1516856400000, 0.0026116, 0.0026118, 0.0026116, 0.0026116, 118.57601882], [1516856460000, 0.0026118, 0.0026118, 0.0026118, 0.0026118, 82.05885999], [1516856520000, 0.0026118, 0.0026118, 0.00261159, 0.00261159, 15.65925939], [1516856580000, 0.00259984, 0.0026116, 0.00259454, 0.0026116, 236.36953681], [1516856640000, 0.0026116, 0.0026116, 0.00259456, 0.00259458, 70.40146386], [1516856700000, 0.00259459, 0.00261051, 0.00259456, 0.00261051, 117.16398014], [1516856760000, 0.00261051, 0.00261051, 0.00261051, 0.00261051, 2.0039906], [1516856820000, 0.00259458, 0.00261051, 0.00259458, 0.00261051, 20.5], [1516856880000, 0.00261051, 0.00261051, 0.00261051, 0.00261051, 5.86791414], [1516856940000, 0.00261051, 0.00261051, 0.00261051, 0.00261051, 0.99253709], [1516857000000, 0.00261037, 0.00261037, 0.00261037, 0.00261037, 3.83084519], [1516857060000, 0.00261, 0.00261, 0.0026, 0.00260995, 30.31691821], [1516857120000, 0.00260995, 0.00260998, 0.00260666, 0.0026095, 32.49644528], [1516857180000, 0.0026095, 0.0026095, 0.0026095, 0.0026095, 42.75748589], [1516857240000, 0.00260947, 0.00260947, 0.00260947, 0.00260947, 8.29945218], [1516857300000, 0.00260947, 0.00260947, 0.00260003, 0.00260003, 105.38945597], [1516857360000, 0.00260947, 0.00260947, 0.00260947, 0.00260947, 18.2267568], [1516857420000, 0.0026095, 0.0026095, 0.0026095, 0.0026095, 14.42408823], [1516857480000, 0.0026095, 0.0026095, 0.00260006, 0.00260006, 77.57297129], [1516857600000, 0.0026095, 0.00261037, 0.0026095, 0.00261037, 108.11481615], [1516857660000, 0.00261037, 0.00261037, 0.0026095, 0.0026095, 167.54406733], [1516857720000, 0.0026001, 0.0026116, 0.0026001, 0.0026116, 40.69560723], [1516857780000, 0.00260477, 0.0026116, 0.00260477, 0.0026116, 32.54554204], [1516857900000, 0.0026116, 0.0026116, 0.00260157, 0.0026116, 28.57538913], [1516857960000, 0.0026116, 0.0026118, 0.0026116, 0.0026118, 62.31648315], [1516858020000, 0.00260158, 0.00260158, 0.00260158, 0.00260158, 7.54579999], [1516858080000, 0.00261179, 0.00261179, 0.00261179, 0.00261179, 10.834065], [1516858140000, 0.00261179, 0.00261179, 0.00260258, 0.00260258, 97.72864391], [1516858200000, 0.00260258, 0.00261179, 0.00260258, 0.00261179, 7.63228142], [1516858260000, 0.00260258, 0.002611, 0.00260258, 0.00260258, 7.92159256], [1516858320000, 0.002611, 0.00261179, 0.002611, 0.00261179, 9.23332904], [1516858380000, 0.00261179, 0.00261179, 0.00261179, 0.00261179, 1.2535005], [1516858440000, 0.00261158, 0.00261158, 0.00260256, 0.00261158, 148.93969399], [1516858500000, 0.00261158, 0.0026118, 0.00260256, 0.0026118, 272.57656863], [1516858620000, 0.00261179, 0.00261179, 0.002611, 0.002611, 5.27744424], [1516858680000, 0.002611, 0.002611, 0.002611, 0.002611, 67.90020704], [1516858740000, 0.002611, 0.002611, 0.00260017, 0.00260017, 89.49543169], [1516858800000, 0.00260159, 0.00261179, 0.00260016, 0.00260017, 141.09861445], [1516858860000, 0.00260016, 0.00261179, 0.00260016, 0.00260018, 76.59384876], [1516858920000, 0.00260018, 0.00260018, 0.00260016, 0.00260016, 53.37930328], [1516858980000, 0.002611, 0.00261179, 0.002611, 0.00261179, 50.36697831], [1516859040000, 0.00261178, 0.00261178, 0.00261178, 0.00261178, 7.42747518], [1516859100000, 0.00261178, 0.00261178, 0.00261178, 0.00261178, 0.51600912], [1516859160000, 0.00261178, 0.00261178, 0.00261178, 0.00261178, 2.19821], [1516859220000, 0.00261178, 0.00261179, 0.00261178, 0.00261178, 166.37447694], [1516859280000, 0.00261178, 0.00261178, 0.00260019, 0.00260019, 51.55675176], [1516859340000, 0.0026002, 0.0026002, 0.0026002, 0.0026002, 15.32828927], [1516859400000, 0.0026002, 0.00260804, 0.0026002, 0.00260804, 7.01911099], [1516859460000, 0.00260804, 0.00260804, 0.0026002, 0.00260804, 5.79616913], [1516859640000, 0.00260804, 0.0026118, 0.00260804, 0.0026118, 49.02797869], [1516859700000, 0.002613, 0.002613, 0.00260019, 0.00260019, 662.44447202], [1516859760000, 0.00261179, 0.00261179, 0.00260019, 0.00261179, 123.10245628], [1516859880000, 0.0026002, 0.0026118, 0.0026002, 0.0026002, 18.37233281], [1516860000000, 0.002604, 0.0026118, 0.0026002, 0.0026118, 13.41420542], [1516860060000, 0.0026002, 0.0026118, 0.0026002, 0.0026118, 11.0], [1516860120000, 0.0026118, 0.0026118, 0.00260019, 0.00260019, 10.23741485], [1516860180000, 0.00260019, 0.0026118, 0.00260019, 0.00260019, 99.99014061], [1516860240000, 0.00260019, 0.00261179, 0.00260019, 0.0026002, 70.35310807], [1516860300000, 0.00261179, 0.0026118, 0.00261179, 0.0026118, 189.55333401], [1516860360000, 0.0026118, 0.0026118, 0.0026002, 0.0026118, 89.47427884], [1516860420000, 0.0026118, 0.0026118, 0.0026003, 0.0026003, 82.16737997], [1516860480000, 0.0026003, 0.0026118, 0.0026003, 0.0026118, 43.9607895], [1516860540000, 0.00261177, 0.0026118, 0.00261177, 0.00261177, 45.99362532], [1516860600000, 0.00261177, 0.00261177, 0.00261177, 0.00261177, 3.81924902], [1516860660000, 0.00261177, 0.00261177, 0.00261177, 0.00261177, 62.65193691], [1516860720000, 0.00261176, 0.00261176, 0.00260234, 0.00260234, 40.73753681], [1516860780000, 0.00260234, 0.00260234, 0.00260233, 0.00260233, 55.71621889], [1516860840000, 0.00260233, 0.00260233, 0.00260233, 0.00260233, 161.44777288], [1516860900000, 0.00260233, 0.00261178, 0.00260233, 0.00260234, 21.43678194], [1516860960000, 0.00260494, 0.00260494, 0.00260494, 0.00260494, 17.41366505], [1516861020000, 0.00260234, 0.002613, 0.00260234, 0.00260235, 403.44975032], [1516861080000, 0.002613, 0.002613, 0.00260235, 0.00260235, 60.792488], [1516861140000, 0.00260235, 0.002613, 0.00260232, 0.00260232, 183.30449371], [1516861200000, 0.00260232, 0.00261297, 0.0026001, 0.0026001, 171.10892517], [1516861260000, 0.0026001, 0.00261297, 0.0026001, 0.00261297, 72.82178045], [1516861320000, 0.00261297, 0.002613, 0.00261297, 0.002613, 119.35765351], [1516861380000, 0.00260099, 0.00260099, 0.00260099, 0.00260099, 0.38911806], [1516861440000, 0.00261297, 0.00261297, 0.00260099, 0.00260099, 25.14514428], [1516861500000, 0.002601, 0.002613, 0.002601, 0.002601, 40.35581263], [1516861560000, 0.002601, 0.002613, 0.002601, 0.002613, 34.84841306], [1516861620000, 0.002613, 0.002613, 0.002613, 0.002613, 28.6655747], [1516861680000, 0.002613, 0.002613, 0.002613, 0.002613, 1.06526479], [1516861740000, 0.002613, 0.002613, 0.002613, 0.002613, 4.15238143], [1516861800000, 0.002601, 0.0026129, 0.002601, 0.0026129, 15.20663143], [1516861860000, 0.00261289, 0.0026129, 0.00261289, 0.0026129, 30.11189223], [1516861920000, 0.0026129, 0.00261299, 0.0026106, 0.00261289, 62.15968296], [1516861980000, 0.00261299, 0.00261299, 0.00260102, 0.00260102, 96.19879699], [1516862100000, 0.00261299, 0.002613, 0.00261299, 0.002613, 27.87684748], [1516862160000, 0.002613, 0.002613, 0.00260102, 0.002613, 138.24531803], [1516862220000, 0.00260101, 0.002613, 0.00260101, 0.002613, 33.27496016], [1516862280000, 0.00261299, 0.002613, 0.00261299, 0.002613, 24.17142286], [1516862340000, 0.00261299, 0.002613, 0.00261299, 0.00261299, 170.54649588], [1516862400000, 0.00261299, 0.002613, 0.00261299, 0.00261299, 91.37672023], [1516862460000, 0.00261299, 0.002613, 0.00261299, 0.002613, 5.48187165], [1516862520000, 0.00261299, 0.00261299, 0.00261299, 0.00261299, 6.69784781], [1516862580000, 0.00261299, 0.002613, 0.00261299, 0.002613, 58.6956134], [1516862640000, 0.00261299, 0.002613, 0.00261299, 0.00261299, 13.42531024], [1516862700000, 0.00261299, 0.00261299, 0.00261298, 0.00261298, 14.60468844], [1516862760000, 0.00261298, 0.00261298, 0.00261298, 0.00261298, 4.38839294], [1516862820000, 0.00261298, 0.00261298, 0.002602, 0.00261298, 261.57124321], [1516862940000, 0.00261298, 0.00261298, 0.002602, 0.00261298, 1414.46252421], [1516863000000, 0.00261298, 0.00261298, 0.00261298, 0.00261298, 3.82704804], [1516863120000, 0.00261298, 0.00261298, 0.00261298, 0.00261298, 18.16071579], [1516863180000, 0.00261001, 0.00261298, 0.00261001, 0.00261002, 86.77765882], [1516863240000, 0.00261298, 0.00261298, 0.00261002, 0.00261298, 62.44767638], [1516863300000, 0.00261298, 0.00261298, 0.00261002, 0.00261002, 14.28311352], [1516863360000, 0.00261002, 0.002613, 0.00261002, 0.002613, 32.82338271], [1516863420000, 0.002613, 0.002613, 0.00261002, 0.002613, 81.24559329], [1516863480000, 0.00261002, 0.002613, 0.00261002, 0.002613, 136.9950348], [1516863540000, 0.0026138, 0.0026138, 0.002613, 0.002613, 15.30863453], [1516863600000, 0.0026138, 0.00261446, 0.00261002, 0.00261002, 1019.36983431], [1516863660000, 0.00261002, 0.00262, 0.00261002, 0.00262, 408.82801744], [1516863720000, 0.00261731, 0.00261731, 0.00260101, 0.00260101, 654.44260147], [1516863780000, 0.00260101, 0.00260201, 0.00260009, 0.00260201, 65.71364143], [1516863840000, 0.002602, 0.00260201, 0.002602, 0.00260201, 16.90465098], [1516863900000, 0.00260201, 0.00261731, 0.00260201, 0.00261731, 106.34015585], [1516863960000, 0.00261731, 0.00261999, 0.00261731, 0.00261999, 12.51466065], [1516864020000, 0.00261999, 0.00262, 0.00261999, 0.00262, 2.35464965], [1516864080000, 0.00261999, 0.00261999, 0.00261999, 0.00261999, 11.97275889], [1516864200000, 0.00261998, 0.00261998, 0.00261997, 0.00261997, 31.1387557], [1516864260000, 0.00261899, 0.00261899, 0.00261899, 0.00261899, 3.03407574], [1516864320000, 0.00261872, 0.00261872, 0.00261872, 0.00261872, 3.45201044], [1516864380000, 0.00261595, 0.00261595, 0.00261593, 0.00261593, 19.06110094], [1516864440000, 0.00261593, 0.00261593, 0.00261593, 0.00261593, 1.25], [1516864500000, 0.00261593, 0.00261593, 0.00261, 0.00261, 16.08198503], [1516864560000, 0.00261, 0.0026159, 0.00261, 0.00261, 54.39380667], [1516864620000, 0.00261, 0.00261, 0.00261, 0.00261, 3.36712683], [1516864680000, 0.00260104, 0.00260104, 0.00259458, 0.00259458, 639.79389942], [1516864740000, 0.00260103, 0.00261, 0.00259454, 0.00259456, 445.96811791], [1516864800000, 0.00259456, 0.00261, 0.00259456, 0.00261, 13.60472607], [1516864860000, 0.0026099, 0.0026099, 0.0026099, 0.0026099, 1.86521034], [1516864980000, 0.0026098, 0.0026099, 0.0026098, 0.0026099, 7.34380997], [1516865100000, 0.0026, 0.00261, 0.00259455, 0.0026099, 284.93941012], [1516865160000, 0.0026099, 0.00260999, 0.00260374, 0.00260999, 118.31784721], [1516865220000, 0.0026001, 0.0026001, 0.00259454, 0.00259454, 13.47546], [1516865280000, 0.00260996, 0.00260996, 0.00260996, 0.00260996, 9.65688435], [1516865340000, 0.00260994, 0.00260994, 0.00260994, 0.00260994, 15.75282864], [1516865400000, 0.00260994, 0.00260994, 0.00259455, 0.00260993, 30.98412894], [1516865520000, 0.0025975, 0.0025975, 0.0025855, 0.0025855, 510.20771574], [1516865580000, 0.00258615, 0.00260876, 0.00258615, 0.00260876, 57.1434824], [1516865640000, 0.00260832, 0.00260832, 0.00260829, 0.00260829, 6.56634295], [1516865700000, 0.00260829, 0.00260829, 0.00260829, 0.00260829, 5.44912949], [1516865760000, 0.00260829, 0.00260829, 0.00258855, 0.00258855, 8.56838158], [1516865820000, 0.00258856, 0.00258856, 0.00258856, 0.00258856, 1.0], [1516865880000, 0.00259, 0.00260827, 0.00259, 0.00260825, 53.37437557], [1516866000000, 0.00260824, 0.00260825, 0.00260824, 0.00260825, 7.6679766], [1516866060000, 0.00260824, 0.00260824, 0.0025901, 0.0025901, 17.12128537], [1516866120000, 0.00259011, 0.00260825, 0.00259011, 0.00260825, 1237.7192734], [1516866180000, 0.00259011, 0.00259011, 0.00259011, 0.00259011, 50.0], [1516866240000, 0.00259012, 0.00260822, 0.00259012, 0.00260822, 58.48588448], [1516866300000, 0.00259012, 0.00260822, 0.00259012, 0.00260822, 5.8340324], [1516866360000, 0.00260822, 0.00260822, 0.00260822, 0.00260822, 1.66019258], [1516866420000, 0.00260822, 0.00260823, 0.00260029, 0.00260823, 265.05270402], [1516866480000, 0.00260823, 0.00260824, 0.00260823, 0.00260823, 188.34573339], [1516866540000, 0.00260823, 0.00260823, 0.00260823, 0.00260823, 262.93420924], [1516866600000, 0.00260823, 0.00260826, 0.00260823, 0.00260826, 760.41282631], [1516866660000, 0.00260823, 0.00260826, 0.00260029, 0.00260029, 770.42103093], [1516866720000, 0.00260029, 0.00260825, 0.00260029, 0.00260825, 90.49635925], [1516866780000, 0.00260029, 0.00260029, 0.0026001, 0.0026001, 9.19481832], [1516866840000, 0.0026001, 0.0026001, 0.0026, 0.0026, 16.66580501], [1516866900000, 0.0026001, 0.00260826, 0.0026, 0.0026, 96.65699343], [1516866960000, 0.0026, 0.00260823, 0.0026, 0.00260823, 18.26765135], [1516867020000, 0.0026, 0.0026, 0.00259, 0.00259, 11.91156132], [1516867080000, 0.00259025, 0.00259025, 0.00259025, 0.00259025, 3.0], [1516867140000, 0.00259027, 0.00259028, 0.00259027, 0.00259028, 41.13528143], [1516867200000, 0.00260799, 0.00260799, 0.00259028, 0.00260798, 13.97610357], [1516867320000, 0.00260792, 0.00260792, 0.00260792, 0.00260792, 7.65647602], [1516867380000, 0.00259174, 0.0026, 0.00259174, 0.0026, 253.16925597], [1516867440000, 0.0026, 0.0026, 0.0026, 0.0026, 18.51114489], [1516867500000, 0.00259171, 0.0026, 0.00259171, 0.0026, 138.71747083], [1516867620000, 0.00260789, 0.00260789, 0.0026, 0.0026, 8.03150791], [1516867680000, 0.0026, 0.0026, 0.0026, 0.0026, 101.0], [1516867800000, 0.0026, 0.00260789, 0.0026, 0.00260789, 89.02305601], [1516867860000, 0.00260789, 0.00260789, 0.00260789, 0.00260789, 1211.98791305], [1516867920000, 0.00260789, 0.0026079, 0.00260789, 0.00260789, 206.72382016], [1516867980000, 0.00260789, 0.0026079, 0.00260789, 0.00260789, 255.88429011], [1516868040000, 0.00260789, 0.00260789, 0.0026, 0.0026, 122.04815616], [1516868100000, 0.0026, 0.0026, 0.00259, 0.0026, 409.36350781], [1516868160000, 0.0026, 0.0026, 0.00259002, 0.00259002, 55.16888013], [1516868220000, 0.00259101, 0.0026, 0.00259101, 0.00259999, 52.58295376], [1516868280000, 0.00259302, 0.00259999, 0.00259005, 0.00259005, 46.43246465], [1516868340000, 0.00259999, 0.00259999, 0.00259006, 0.00259006, 166.19804642], [1516868400000, 0.00259005, 0.00259005, 0.00259002, 0.00259005, 121.77071373], [1516868460000, 0.0025999, 0.0025999, 0.00258223, 0.0025855, 1066.79673851], [1516868520000, 0.002585, 0.00260788, 0.00258245, 0.00260785, 743.27417887], [1516868580000, 0.00260785, 0.00260785, 0.00260785, 0.00260785, 0.38345763], [1516868640000, 0.0026078, 0.00260785, 0.00259006, 0.00259006, 88.66348607], [1516868700000, 0.00259006, 0.00259006, 0.00259006, 0.00259006, 62.95152419], [1516868760000, 0.00260783, 0.00260783, 0.00259003, 0.00260783, 19.66719732], [1516868820000, 0.002595, 0.00259501, 0.002595, 0.00259501, 5.32939501], [1516868880000, 0.00259501, 0.00259501, 0.00259501, 0.00259501, 1.00681986], [1516868940000, 0.00259501, 0.00259501, 0.002595, 0.002595, 60.09302199], [1516869000000, 0.00258811, 0.00260782, 0.00258811, 0.00260782, 90.02493134], [1516869060000, 0.00260782, 0.00260783, 0.00260782, 0.00260783, 20.0], [1516869120000, 0.00260781, 0.00260782, 0.00260781, 0.00260782, 36.25557519], [1516869240000, 0.0026, 0.0026, 0.0026, 0.0026, 15.59401858], [1516869300000, 0.002599, 0.0026, 0.002599, 0.0026, 11.0], [1516869360000, 0.00258834, 0.0026078, 0.00258833, 0.0026078, 59.74349201], [1516869420000, 0.00258841, 0.0026078, 0.00258841, 0.0026, 36.50151209], [1516869540000, 0.0026, 0.0026, 0.0026, 0.0026, 2.0005], [1516869600000, 0.002605, 0.0026078, 0.00258255, 0.00260771, 952.53993701], [1516869660000, 0.00260771, 0.00260771, 0.0025826, 0.0025826, 35.58621702], [1516869720000, 0.00260752, 0.00260752, 0.00258278, 0.00260752, 762.24832915], [1516869780000, 0.00260741, 0.00260741, 0.0026074, 0.00260741, 25.4507], [1516869840000, 0.00260733, 0.00260733, 0.00259, 0.00259, 63.05733026], [1516869900000, 0.00258281, 0.00259, 0.00258281, 0.00259, 38.87843563], [1516869960000, 0.00259, 0.00259, 0.00259, 0.00259, 5.38029936], [1516870020000, 0.00258383, 0.00259, 0.00258382, 0.00259, 167.27233073], [1516870080000, 0.00258978, 0.00259, 0.00258978, 0.00259, 10.99211597], [1516870140000, 0.00259, 0.00259, 0.00259, 0.00259, 2.01873752], [1516870200000, 0.00259, 0.00260694, 0.00259, 0.00260694, 14.15941004], [1516870260000, 0.00260301, 0.00260301, 0.00260298, 0.00260298, 48.52214629], [1516870320000, 0.0026007, 0.0026007, 0.0026007, 0.0026007, 8.140639], [1516870440000, 0.0026007, 0.0026007, 0.0026007, 0.0026007, 173.93748679], [1516870500000, 0.0026, 0.0026007, 0.00258278, 0.0026007, 417.0810578], [1516870560000, 0.00260009, 0.00260009, 0.0025829, 0.0025829, 159.09265634], [1516870620000, 0.00260009, 0.00260009, 0.00260009, 0.00260009, 1.19311016], [1516870740000, 0.00258296, 0.00258296, 0.00258294, 0.00258294, 120.0], [1516870800000, 0.00258303, 0.00260009, 0.00258303, 0.00260009, 10.46199467], [1516870920000, 0.0026, 0.00260009, 0.0026, 0.00260009, 45.88715789], [1516870980000, 0.00258557, 0.00260009, 0.00258557, 0.00260009, 23.02614762], [1516871040000, 0.00260009, 0.00260009, 0.00258568, 0.00258615, 9.34533305], [1516871100000, 0.00258667, 0.00260009, 0.00258667, 0.00260009, 213.75325124], [1516871160000, 0.00260009, 0.00260009, 0.00260009, 0.00260009, 10.0599044], [1516871220000, 0.00258983, 0.00260009, 0.00258976, 0.00260009, 22.25814843], [1516871340000, 0.00259935, 0.00260009, 0.00259019, 0.00260009, 294.39151657], [1516871400000, 0.00260009, 0.00260009, 0.00259037, 0.0026, 34.17125694], [1516871460000, 0.0026, 0.0026, 0.0026, 0.0026, 44.39841175], [1516871520000, 0.00259074, 0.0026, 0.00258853, 0.00258853, 24.07694208], [1516871580000, 0.00259075, 0.0026, 0.00259075, 0.0026, 71.04101401], [1516871640000, 0.00259991, 0.00259991, 0.0025885, 0.0025885, 51.51154097], [1516871700000, 0.00259991, 0.00259991, 0.00259991, 0.00259991, 11.94601136], [1516871760000, 0.0025999, 0.00260733, 0.0025999, 0.00259992, 537.20048952], [1516871820000, 0.00259991, 0.00259992, 0.00259076, 0.00259076, 484.41771056], [1516871880000, 0.00259076, 0.00259076, 0.00258852, 0.00259076, 17.88210149], [1516871940000, 0.00259076, 0.00259992, 0.00259076, 0.00259992, 10.36280988], [1516872000000, 0.00258851, 0.00259992, 0.00258851, 0.00259992, 8.69254438], [1516872060000, 0.0025886, 0.00259991, 0.0025886, 0.00259991, 28.55], [1516872180000, 0.00259991, 0.00259991, 0.00258844, 0.00258844, 66.25624391], [1516872240000, 0.0025999, 0.0025999, 0.00258663, 0.00258663, 35.23052792], [1516872300000, 0.0025999, 0.0025999, 0.00258666, 0.00258666, 27.88042749], [1516872360000, 0.00258667, 0.00259989, 0.00258667, 0.0025998, 126.88716586], [1516872420000, 0.0025998, 0.0025998, 0.0025998, 0.0025998, 1.75140075], [1516872480000, 0.00258668, 0.00258668, 0.00258668, 0.00258668, 10.48], [1516872540000, 0.00258668, 0.0025998, 0.00258663, 0.00258663, 90.28777128], [1516872600000, 0.0025998, 0.0025998, 0.0025998, 0.0025998, 3.84644972], [1516872660000, 0.0025998, 0.0025998, 0.00258668, 0.00258668, 13.60391006], [1516872720000, 0.0025867, 0.0025998, 0.00258668, 0.00258796, 46.63343532], [1516872840000, 0.00258797, 0.00258797, 0.00258797, 0.00258797, 5.95220906], [1516872960000, 0.00258801, 0.00258801, 0.00258801, 0.00258801, 188.76354788], [1516873020000, 0.00259978, 0.00259978, 0.002588, 0.00259978, 80.49777289], [1516873080000, 0.00258801, 0.00259978, 0.002588, 0.00259978, 92.9546089], [1516873200000, 0.00259978, 0.00259978, 0.00259978, 0.00259978, 7.73466435], [1516873320000, 0.00259978, 0.00259978, 0.00259978, 0.00259978, 104.44136697], [1516873440000, 0.00259978, 0.00259979, 0.00259978, 0.00259979, 99.41730619], [1516873560000, 0.00259976, 0.00259976, 0.00258869, 0.00258873, 30.42503046], [1516873620000, 0.00259976, 0.00259976, 0.00258876, 0.00258876, 7.84361956], [1516873680000, 0.00258878, 0.00258878, 0.00258878, 0.00258878, 54.0], [1516873800000, 0.00259975, 0.00259975, 0.00259975, 0.00259975, 100.0], [1516873860000, 0.00259975, 0.00259975, 0.00259975, 0.00259975, 20.66294737], [1516873920000, 0.0025997, 0.00259975, 0.0025997, 0.00259975, 1.9691345], [1516873980000, 0.00259975, 0.00259975, 0.0025997, 0.0025997, 31.95253548], [1516874040000, 0.00258892, 0.0025997, 0.00258892, 0.0025997, 55.87335785], [1516874100000, 0.00259674, 0.0025997, 0.00259674, 0.0025997, 53.61504382], [1516874160000, 0.0025997, 0.0025997, 0.0025918, 0.0025918, 68.30090167], [1516874220000, 0.0025918, 0.0025997, 0.00258883, 0.0025997, 296.60508842], [1516874280000, 0.00259674, 0.0025997, 0.00258885, 0.002594, 397.23311515], [1516874340000, 0.002594, 0.002594, 0.002594, 0.002594, 41.79340029], [1516874400000, 0.00258887, 0.002594, 0.00258887, 0.002594, 264.38156199], [1516874460000, 0.0025997, 0.0025997, 0.002594, 0.002594, 270.05125264], [1516874520000, 0.00259401, 0.00259499, 0.002594, 0.002594, 14.85144158], [1516874580000, 0.002594, 0.002594, 0.002594, 0.002594, 29.82114042], [1516874640000, 0.00259969, 0.0025997, 0.00259969, 0.0025997, 214.31715046], [1516874700000, 0.0025997, 0.0026, 0.0025997, 0.0026, 618.0992504], [1516874760000, 0.002594, 0.002594, 0.002594, 0.002594, 15.99949928], [1516874820000, 0.00259402, 0.00259402, 0.00259402, 0.00259402, 20.89216064], [1516874880000, 0.0026, 0.0026, 0.00259401, 0.00259401, 103.78602553], [1516874940000, 0.0026, 0.0026, 0.0026, 0.0026, 96.83589505], [1516875000000, 0.0026, 0.0026, 0.0026, 0.0026, 82.33660687], [1516875060000, 0.0026, 0.0026, 0.0026, 0.0026, 171.51879286], [1516875120000, 0.00259999, 0.0026, 0.0025988, 0.0025988, 44.88185181], [1516875180000, 0.0025988, 0.0026, 0.0025988, 0.0025988, 23.18955716], [1516875240000, 0.0026, 0.0026, 0.00259888, 0.00259888, 61.35283708], [1516875300000, 0.00259888, 0.00259888, 0.00259888, 0.00259888, 29.76572109], [1516875360000, 0.00259888, 0.0026, 0.00259888, 0.00259888, 74.02002063], [1516875420000, 0.00259888, 0.00259888, 0.00259888, 0.00259888, 2.23647436], [1516875480000, 0.0026, 0.0026, 0.0026, 0.0026, 392.3813458], [1516875540000, 0.0026, 0.0026, 0.0026, 0.0026, 2.38277823], [1516875600000, 0.00259888, 0.00259888, 0.00259888, 0.00259888, 4.52618636], [1516875660000, 0.0025988, 0.0025988, 0.0025988, 0.0025988, 14.00963605], [1516875720000, 0.0025988, 0.0026, 0.0025988, 0.0026, 179.71655629], [1516875780000, 0.0026, 0.0026, 0.0026, 0.0026, 15.0], [1516875840000, 0.00259991, 0.0026, 0.00259991, 0.0026, 49.28085556], [1516875900000, 0.0026, 0.0026, 0.0025988, 0.0025988, 43.65584656], [1516875960000, 0.00259996, 0.00259998, 0.0025988, 0.0025988, 48.64656124], [1516876020000, 0.0025988, 0.0025988, 0.0025988, 0.0025988, 38.46869155], [1516876080000, 0.0025988, 0.0025988, 0.0025988, 0.0025988, 41.71268324], [1516876140000, 0.0025989, 0.0025989, 0.00259881, 0.00259881, 7.40171214], [1516876200000, 0.00259881, 0.002607, 0.00259881, 0.002607, 6.36043659], [1516876260000, 0.002607, 0.002607, 0.0025988, 0.0025988, 2.6094385], [1516876320000, 0.0025988, 0.0025988, 0.0025988, 0.0025988, 199.75695016], [1516876380000, 0.0026069, 0.00260693, 0.0026069, 0.00260693, 9.12575536], [1516876440000, 0.0025988, 0.00259889, 0.0025988, 0.0025988, 10.1028905], [1516876500000, 0.0026, 0.0026, 0.0026, 0.0026, 2.42501331], [1516876560000, 0.0026, 0.0026, 0.00259879, 0.00259879, 150.72968444], [1516876620000, 0.00259879, 0.0026, 0.002594, 0.0026, 124.13821447], [1516876680000, 0.0026, 0.0026, 0.0026, 0.0026, 2.32643472], [1516876740000, 0.00259891, 0.002606, 0.002594, 0.002606, 138.85561739], [1516876800000, 0.002594, 0.002594, 0.002594, 0.002594, 401.28419586], [1516876860000, 0.002594, 0.002594, 0.00259001, 0.00259001, 17.45958776], [1516876920000, 0.00259001, 0.00259001, 0.00258887, 0.00258887, 7.51285209], [1516876980000, 0.002594, 0.002594, 0.002594, 0.002594, 22.62184137], [1516877040000, 0.002594, 0.002594, 0.002594, 0.002594, 0.70761047], [1516877100000, 0.002594, 0.002594, 0.002594, 0.002594, 17.89922585], [1516877160000, 0.002594, 0.002594, 0.00259008, 0.00259008, 336.30444959], [1516877220000, 0.002594, 0.002594, 0.002594, 0.002594, 332.2963649], [1516877280000, 0.002594, 0.002594, 0.002594, 0.002594, 54.979477], [1516877340000, 0.00259013, 0.00259014, 0.00259006, 0.00259006, 19.30418453], [1516877400000, 0.00259001, 0.002594, 0.00258888, 0.00258888, 229.0783342], [1516877460000, 0.002594, 0.002594, 0.00258899, 0.00258899, 159.92985951], [1516877520000, 0.00258899, 0.002589, 0.00258899, 0.002589, 11.16442236], [1516877580000, 0.002594, 0.002594, 0.002589, 0.002589, 209.80360818], [1516877640000, 0.002594, 0.002594, 0.002589, 0.002594, 3.49270728], [1516877700000, 0.002594, 0.002594, 0.002594, 0.002594, 25.28809562], [1516877760000, 0.002594, 0.002594, 0.002594, 0.002594, 16.28130164], [1516877820000, 0.002606, 0.002606, 0.002594, 0.002594, 101.86070449], [1516877940000, 0.002594, 0.002594, 0.002594, 0.002594, 11.29175875], [1516878000000, 0.002594, 0.00260582, 0.002594, 0.00260582, 4.88341458], [1516878060000, 0.00260582, 0.00260582, 0.00259, 0.00260582, 125.54270352], [1516878120000, 0.00260592, 0.00260592, 0.00259399, 0.00259399, 122.78215132], [1516878240000, 0.00260592, 0.00260592, 0.00259399, 0.00260584, 15.28895864], [1516878300000, 0.00260584, 0.00260584, 0.00260584, 0.00260584, 243.30730118], [1516878360000, 0.00260584, 0.00260584, 0.00260584, 0.00260584, 2.0], [1516878420000, 0.00259401, 0.00260583, 0.00259, 0.00260583, 621.13787513], [1516878480000, 0.00259, 0.00259, 0.00259, 0.00259, 6.29792191], [1516878540000, 0.00259, 0.00259001, 0.00259, 0.00259001, 36.12838967], [1516878600000, 0.00259001, 0.00260586, 0.00259001, 0.00260586, 52.1434977], [1516878720000, 0.00260586, 0.00260586, 0.00260586, 0.00260586, 88.60460626], [1516878780000, 0.00260586, 0.00260586, 0.00260297, 0.00260297, 4.42405702], [1516878840000, 0.00260297, 0.00260586, 0.00260297, 0.00260297, 37.2760389], [1516878900000, 0.00260585, 0.00260585, 0.00260585, 0.00260585, 7.63511772], [1516878960000, 0.00260582, 0.00260582, 0.00260582, 0.00260582, 0.26262451], [1516879020000, 0.00260297, 0.0026058, 0.002588, 0.002588, 225.14648765], [1516879260000, 0.0025882, 0.0025882, 0.0025882, 0.0025882, 51.8945427], [1516879500000, 0.00259, 0.0026, 0.00258823, 0.0026, 155.64338696], [1516879560000, 0.0026, 0.0026, 0.0026, 0.0026, 4.4525312], [1516879620000, 0.00260234, 0.00260234, 0.00260234, 0.00260234, 10.92347011], [1516879680000, 0.00260497, 0.00260499, 0.00260234, 0.00260234, 167.04163176], [1516879740000, 0.00259, 0.00259, 0.0025882, 0.00259, 7.43365827], [1516879800000, 0.0025882, 0.00259, 0.0025882, 0.00259, 22.21230961], [1516879860000, 0.00258822, 0.00260213, 0.00258821, 0.00260213, 94.87890323], [1516879920000, 0.0025901, 0.0025901, 0.00258999, 0.00258999, 113.43872645], [1516879980000, 0.00258816, 0.00259, 0.00258816, 0.00259, 11.74984282], [1516880040000, 0.00259, 0.0026021, 0.00258813, 0.0026021, 26.72494192], [1516880100000, 0.00259001, 0.00260203, 0.00259001, 0.00260203, 1.7107679], [1516880160000, 0.00259001, 0.00260203, 0.00259001, 0.002602, 36.44170032], [1516880220000, 0.002602, 0.0026021, 0.002602, 0.0026021, 11.94475927], [1516880280000, 0.00260203, 0.0026021, 0.00260203, 0.0026021, 29.22193515], [1516880400000, 0.00260203, 0.00260208, 0.00260203, 0.00260208, 58.4618285], [1516880460000, 0.00260208, 0.00260208, 0.00260208, 0.00260208, 29.14929317], [1516880520000, 0.00260208, 0.00260208, 0.00259004, 0.00260208, 43.45033969], [1516880640000, 0.00260205, 0.00260206, 0.00260205, 0.00260206, 7.6670023], [1516880700000, 0.002595, 0.002595, 0.00259002, 0.00259002, 38.12625149], [1516880760000, 0.00259002, 0.00260099, 0.0025881, 0.00260099, 170.12338457], [1516880880000, 0.00260099, 0.00260099, 0.00260099, 0.00260099, 1.88625252], [1516880940000, 0.00260089, 0.00260089, 0.0026, 0.0026, 13.75629179], [1516881000000, 0.0026, 0.0026, 0.0026, 0.0026, 26.07789011], [1516881060000, 0.0026, 0.00260089, 0.0026, 0.0026, 107.44131661], [1516881180000, 0.00258999, 0.0026, 0.00258999, 0.0026, 297.88161234], [1516881240000, 0.0026, 0.0026, 0.00258811, 0.0026, 63.42862631], [1516881300000, 0.0026, 0.0026, 0.0026, 0.0026, 3.84615384], [1516881360000, 0.0026, 0.0026, 0.0025882, 0.00258821, 103.0207638], [1516881420000, 0.0026, 0.0026, 0.0025882, 0.0026, 49.64083009], [1516881480000, 0.00259999, 0.00259999, 0.00258825, 0.00259999, 74.12928481], [1516881540000, 0.00259999, 0.00260086, 0.00259999, 0.00259999, 408.38366838], [1516881600000, 0.00259999, 0.00259999, 0.00258823, 0.00259999, 53.59375901], [1516881660000, 0.00259999, 0.00259999, 0.00259999, 0.00259999, 0.52681415], [1516881720000, 0.00258826, 0.00259998, 0.00258826, 0.00259998, 141.00604223], [1516881780000, 0.00259998, 0.00259998, 0.00259998, 0.00259998, 2.78301732], [1516881840000, 0.00259999, 0.00259999, 0.00259999, 0.00259999, 154.90977556], [1516881900000, 0.00259999, 0.00260208, 0.00259998, 0.00260208, 104.0725051], [1516881960000, 0.00260086, 0.002606, 0.00259998, 0.00259998, 264.53362225], [1516882020000, 0.00259998, 0.00259998, 0.00259998, 0.00259998, 14.94349958], [1516882080000, 0.002605, 0.002605, 0.00259998, 0.00259998, 6.31463347], [1516882140000, 0.00259998, 0.00259998, 0.00259997, 0.00259997, 79.072125], [1516882200000, 0.00259011, 0.002605, 0.00259011, 0.002605, 228.589984], [1516882260000, 0.002605, 0.00260733, 0.002605, 0.002605, 55.25752782], [1516882320000, 0.002605, 0.00261056, 0.002605, 0.00261056, 172.40408858], [1516882380000, 0.002611, 0.002611, 0.00261056, 0.00261056, 41.62972371], [1516882500000, 0.0026, 0.002612, 0.0026, 0.002612, 36.51887663], [1516882560000, 0.002612, 0.002612, 0.002612, 0.002612, 35.4693249], [1516882620000, 0.002612, 0.00261906, 0.0026, 0.00261906, 56.91787129], [1516882680000, 0.002601, 0.002601, 0.0026, 0.0026, 394.00503861], [1516882740000, 0.0026, 0.0026, 0.0026, 0.0026, 121.06490302], [1516882800000, 0.0026, 0.00261903, 0.0026, 0.0026, 9.86138721], [1516882860000, 0.0026, 0.002612, 0.00259182, 0.00259182, 219.84465088], [1516882920000, 0.00259182, 0.00259183, 0.00259012, 0.00259182, 184.60268643], [1516882980000, 0.00259182, 0.00259182, 0.00259011, 0.00259011, 87.53423809], [1516883040000, 0.00259013, 0.00259013, 0.0025901, 0.00259011, 44.78640606], [1516883160000, 0.00259182, 0.00259182, 0.00259182, 0.00259182, 49.82697998], [1516883220000, 0.00259182, 0.00259182, 0.00259182, 0.00259182, 80.54413911], [1516883280000, 0.00259182, 0.00259182, 0.00259182, 0.00259182, 11.86705639], [1516883340000, 0.00259182, 0.00259182, 0.00259016, 0.00259016, 156.00869407], [1516883400000, 0.00259016, 0.00259182, 0.00259, 0.0025913, 356.3910236], [1516883460000, 0.0025913, 0.00261056, 0.00259, 0.00259, 109.38282014], [1516883520000, 0.00259, 0.00259, 0.00259, 0.00259, 5.35247011], [1516883580000, 0.00261056, 0.00261056, 0.002608, 0.00260801, 21.2856364], [1516883640000, 0.00261055, 0.00261057, 0.00261055, 0.00261056, 11.65516363], [1516883700000, 0.00261056, 0.00261057, 0.00260801, 0.00260801, 29.45641853], [1516883760000, 0.00261055, 0.00261055, 0.00261055, 0.00261055, 6.87786099], [1516883820000, 0.00260801, 0.00260801, 0.00260801, 0.00260801, 4.49568237], [1516883880000, 0.00260801, 0.00260801, 0.00259168, 0.00259168, 66.00246078], [1516883940000, 0.00259168, 0.00259168, 0.00259167, 0.00259168, 34.5347519], [1516884000000, 0.00259187, 0.00259187, 0.00259187, 0.00259187, 7.64426521], [1516884060000, 0.002608, 0.002608, 0.00259194, 0.00260798, 16.02358788], [1516884120000, 0.002608, 0.002608, 0.00259189, 0.00259189, 26.26957041], [1516884180000, 0.00259189, 0.00260797, 0.00259167, 0.00259187, 129.40387424], [1516884240000, 0.00259187, 0.00259189, 0.00259167, 0.00259189, 47.07327105], [1516884300000, 0.00259189, 0.00260795, 0.00259, 0.00259, 27.29392857], [1516884360000, 0.00260795, 0.00260795, 0.0026079, 0.00260793, 21.18365418], [1516884420000, 0.00259, 0.00259, 0.0025827, 0.00259, 463.090771], [1516884480000, 0.00259, 0.00259, 0.00259, 0.00259, 63.39378983], [1516884540000, 0.00259, 0.002605, 0.00259, 0.002605, 25.0595733], [1516884600000, 0.00259198, 0.002605, 0.002585, 0.00260499, 201.07930483], [1516884660000, 0.00258713, 0.00260499, 0.00258713, 0.00258715, 88.62306077], [1516884720000, 0.00258721, 0.00260497, 0.00258717, 0.00258717, 264.60280178], [1516884780000, 0.00258717, 0.00258844, 0.0025828, 0.00258844, 202.13899171], [1516884840000, 0.00258844, 0.00259805, 0.00258295, 0.00258304, 61.70392187], [1516884900000, 0.00259805, 0.00261, 0.00259804, 0.00261, 340.20002894], [1516884960000, 0.00261053, 0.00261053, 0.00261053, 0.00261053, 4.12752934], [1516885020000, 0.00259545, 0.00259545, 0.00259545, 0.00259545, 3.00460682], [1516885080000, 0.00259545, 0.00260893, 0.00259545, 0.00259545, 869.0315952], [1516885140000, 0.00259545, 0.00259546, 0.00258406, 0.00258406, 305.70406141], [1516885200000, 0.00258407, 0.00259545, 0.002584, 0.002584, 217.21253815], [1516885260000, 0.002584, 0.00259545, 0.0025827, 0.0025827, 300.68453404], [1516885320000, 0.00258271, 0.00258471, 0.0025827, 0.002583, 221.88394912], [1516885380000, 0.00258301, 0.00258301, 0.0025827, 0.0025827, 66.38138226], [1516885440000, 0.00258302, 0.00258302, 0.0025827, 0.0025827, 59.12549377], [1516885500000, 0.00259545, 0.00259545, 0.0025827, 0.0025827, 14.12030221], [1516885560000, 0.00259285, 0.00259285, 0.00259285, 0.00259285, 260.59677431], [1516885620000, 0.00259285, 0.00259545, 0.00259, 0.00259285, 183.39301154], [1516885680000, 0.00259543, 0.00259545, 0.00259285, 0.00259285, 65.18316502], [1516885740000, 0.00259545, 0.00259545, 0.00259285, 0.00259545, 28.77156731], [1516885800000, 0.00259545, 0.00260724, 0.00259545, 0.00259545, 176.85824414], [1516885860000, 0.00259285, 0.00259285, 0.00259, 0.00259, 580.47205461], [1516885920000, 0.00259285, 0.00259285, 0.00259285, 0.00259285, 8.78079341], [1516885980000, 0.00259285, 0.00259285, 0.00259001, 0.00259001, 100.89465306], [1516886040000, 0.00259285, 0.00259285, 0.00259, 0.00259, 30.73200597], [1516886100000, 0.00259285, 0.00259285, 0.0025827, 0.0025827, 323.53391273], [1516886160000, 0.00259, 0.00259285, 0.00259, 0.00259285, 28.5610467], [1516886220000, 0.00259284, 0.00259284, 0.00259284, 0.00259284, 23.78005771], [1516886280000, 0.00259283, 0.00259284, 0.00258341, 0.00258341, 109.69008377], [1516886340000, 0.00258341, 0.00258342, 0.00258341, 0.00258341, 54.46402517], [1516886400000, 0.00259, 0.00259283, 0.00259, 0.00259283, 31.30636261], [1516886460000, 0.00259283, 0.00259283, 0.00259283, 0.00259283, 6.36034243], [1516886520000, 0.0025836, 0.0025836, 0.0025836, 0.0025836, 1.03092627], [1516886580000, 0.00259283, 0.00259283, 0.00258361, 0.00258361, 1.59454053], [1516886700000, 0.00259283, 0.00259283, 0.00259283, 0.00259283, 5.97225528], [1516886760000, 0.00259, 0.00259282, 0.00258703, 0.00258703, 43.18569938], [1516886820000, 0.00258361, 0.00258361, 0.00258361, 0.00258361, 0.38456], [1516886880000, 0.00259263, 0.00259263, 0.00258363, 0.00258363, 43.92641444], [1516887000000, 0.00259, 0.0025926, 0.00258512, 0.0025926, 1.76360331], [1516887060000, 0.00259254, 0.00259254, 0.00258272, 0.00258272, 432.92930046], [1516887120000, 0.00258366, 0.00258366, 0.00258272, 0.00258272, 19.30958871], [1516887180000, 0.00258276, 0.00258278, 0.00258276, 0.00258277, 54.8248559], [1516887300000, 0.00258278, 0.00258278, 0.00258277, 0.00258277, 29.8143962], [1516887360000, 0.00258288, 0.00259253, 0.00258288, 0.00259253, 46.10277868], [1516887420000, 0.00259253, 0.00259253, 0.00258291, 0.00258299, 39.79270907], [1516887480000, 0.002583, 0.00259253, 0.002583, 0.00259253, 44.09044041], [1516887540000, 0.00259253, 0.00259253, 0.00259, 0.00259251, 67.40654177], [1516887600000, 0.00259, 0.00259251, 0.00259, 0.00259248, 37.64094378], [1516887660000, 0.00259248, 0.00259251, 0.00259248, 0.00259248, 9.42144807], [1516887720000, 0.00259, 0.00259, 0.00259, 0.00259, 0.5], [1516887780000, 0.00259249, 0.00259253, 0.00259, 0.00259, 277.80275747], [1516887840000, 0.00259253, 0.00259253, 0.00259, 0.00259, 59.63383926], [1516887900000, 0.00259252, 0.00259252, 0.00258299, 0.0025925, 312.69018823], [1516887960000, 0.00258299, 0.00259249, 0.00258299, 0.00258299, 47.76359528], [1516888020000, 0.002583, 0.0025925, 0.00258299, 0.00258299, 132.64121405], [1516888080000, 0.002583, 0.002583, 0.002583, 0.002583, 10.90823541], [1516888140000, 0.00258302, 0.00259, 0.00258301, 0.00259, 22.8536511], [1516888200000, 0.00259, 0.0025925, 0.00259, 0.00259, 88.07577426], [1516888260000, 0.00258306, 0.00258306, 0.00258306, 0.00258306, 12.2818389], [1516888320000, 0.00258306, 0.00258306, 0.00258306, 0.00258306, 8.78738962], [1516888380000, 0.0025925, 0.0025925, 0.0025925, 0.0025925, 2.10975546], [1516888440000, 0.0025925, 0.00259284, 0.0025925, 0.0025925, 207.6806339], [1516888500000, 0.0025925, 0.00259283, 0.0025925, 0.0025926, 18.13071368], [1516888560000, 0.0025926, 0.0025926, 0.00258306, 0.00258306, 551.3479001], [1516888620000, 0.00259246, 0.0025925, 0.00259246, 0.0025925, 3.23124685], [1516888740000, 0.00259246, 0.00259246, 0.00259246, 0.00259246, 1.0], [1516888800000, 0.00259246, 0.00259246, 0.00259246, 0.00259246, 5.50313471], [1516888860000, 0.00258306, 0.00258306, 0.0025829, 0.0025829, 1115.23504444], [1516888920000, 0.00259245, 0.00259245, 0.00258288, 0.00259245, 269.6593354], [1516888980000, 0.00259245, 0.00259245, 0.00259245, 0.00259245, 5.75938053], [1516889040000, 0.00259246, 0.00259246, 0.00259245, 0.00259245, 79.04089513], [1516889100000, 0.00258288, 0.0025925, 0.00258288, 0.0025925, 116.57184663], [1516889160000, 0.00259249, 0.00259249, 0.00258289, 0.00259249, 51.64126132], [1516889220000, 0.00259249, 0.00259249, 0.00259249, 0.00259249, 71.74775424], [1516889280000, 0.00259249, 0.00259249, 0.00259249, 0.00259249, 55.33435206], [1516889340000, 0.00259249, 0.00259249, 0.00259249, 0.00259249, 31.81398851], [1516889400000, 0.00259249, 0.00259249, 0.002591, 0.00259249, 58.1648886], [1516889460000, 0.002591, 0.00259249, 0.0025828, 0.00259248, 115.1283214], [1516889520000, 0.00259248, 0.00259249, 0.00259248, 0.00259249, 68.37032554], [1516889580000, 0.00259249, 0.00259249, 0.00259248, 0.00259249, 317.91632181], [1516889640000, 0.00259249, 0.00259249, 0.00259249, 0.00259249, 514.23788565], [1516889700000, 0.00259249, 0.00259285, 0.00259249, 0.00259249, 278.42839092], [1516889760000, 0.00259249, 0.00259258, 0.00259248, 0.00259248, 72.31737211], [1516889820000, 0.00259249, 0.00259306, 0.00259, 0.0025924, 145.56997732], [1516889880000, 0.00259, 0.00259306, 0.0025828, 0.00259306, 110.03788344], [1516889940000, 0.0025924, 0.0025924, 0.0025828, 0.00259239, 41.98213341], [1516890000000, 0.00259236, 0.0025924, 0.00259, 0.00259, 62.67515233], [1516890060000, 0.00259239, 0.00259239, 0.00259, 0.00259222, 34.5896235], [1516890120000, 0.00259222, 0.00259222, 0.0025828, 0.0025828, 2.75585912], [1516890180000, 0.00259222, 0.0025924, 0.00259222, 0.0025924, 69.4153859], [1516890240000, 0.0025924, 0.0025924, 0.0025828, 0.0025828, 68.3651328], [1516890300000, 0.0025923, 0.0025923, 0.00258488, 0.00258488, 16.75827489], [1516890360000, 0.00258488, 0.00258488, 0.0025845, 0.0025845, 12.95617389], [1516890420000, 0.0025838, 0.00258388, 0.0025838, 0.00258388, 1036.18714746], [1516890480000, 0.00258382, 0.00258388, 0.00258382, 0.00258388, 26.19635127], [1516890540000, 0.00258388, 0.00258388, 0.00258387, 0.00258387, 135.92650209], [1516890600000, 0.00258387, 0.00258388, 0.00258387, 0.00258388, 53.65455646], [1516890660000, 0.0025924, 0.00259543, 0.0025924, 0.00259543, 398.17901304], [1516890720000, 0.00259543, 0.0026044, 0.0025924, 0.0025924, 93.72762806], [1516890780000, 0.00258947, 0.00259543, 0.00258947, 0.00259543, 10.0], [1516890840000, 0.00259543, 0.00259599, 0.0025845, 0.0025845, 15.83571407], [1516890900000, 0.00258451, 0.00260423, 0.0025845, 0.00260423, 311.03981936], [1516890960000, 0.00259599, 0.00260423, 0.0025845, 0.00260423, 77.6402394], [1516891020000, 0.00259543, 0.0025955, 0.00259543, 0.00259545, 20.96660632], [1516891080000, 0.00259552, 0.00260478, 0.00259543, 0.00259543, 739.19707779], [1516891140000, 0.00259, 0.00259, 0.0025838, 0.00259, 226.88963225], [1516891200000, 0.00259, 0.00259544, 0.00259, 0.00259, 64.00823586], [1516891260000, 0.00259543, 0.00259543, 0.00259543, 0.00259543, 7.68658758], [1516891320000, 0.00259543, 0.00259543, 0.00259543, 0.00259543, 3.82112336], [1516891380000, 0.00259543, 0.00260291, 0.00259543, 0.00260291, 1.48314896], [1516891440000, 0.00260291, 0.002603, 0.00259959, 0.00259959, 15.02156168], [1516891500000, 0.00260291, 0.002603, 0.00260291, 0.00260291, 31.63943], [1516891560000, 0.00260291, 0.00260296, 0.0026029, 0.0026029, 150.15947092], [1516891620000, 0.0026029, 0.00260295, 0.00259543, 0.00260295, 113.82344545], [1516891740000, 0.00259543, 0.00259543, 0.00259543, 0.00259543, 238.235], [1516891800000, 0.00260295, 0.00260295, 0.00260295, 0.00260295, 3.84179488], [1516891860000, 0.00260295, 0.0026089, 0.00260295, 0.0026089, 200.0], [1516891920000, 0.002601, 0.00260883, 0.0026, 0.00260883, 107.4178153], [1516891980000, 0.002601, 0.0026088, 0.002601, 0.002601, 8.42342878], [1516892040000, 0.002605, 0.00260848, 0.00259544, 0.00259544, 451.25879066], [1516892100000, 0.0026083, 0.00260837, 0.0026083, 0.00260837, 0.58131705], [1516892160000, 0.0025957, 0.0026, 0.002585, 0.002585, 1226.63009115], [1516892220000, 0.00258501, 0.00260744, 0.00258501, 0.0026073, 31.34504983], [1516892340000, 0.002602, 0.00260599, 0.002602, 0.002602, 31.27498573], [1516892400000, 0.00260596, 0.00260596, 0.0026, 0.00260195, 153.82551622], [1516892460000, 0.00260195, 0.00260721, 0.00260194, 0.00260721, 46.1193453], [1516892520000, 0.00259541, 0.00260721, 0.0025954, 0.00260718, 46.86616486], [1516892580000, 0.00260717, 0.00260717, 0.002596, 0.002596, 44.84753217], [1516892640000, 0.00260714, 0.00260714, 0.0025954, 0.0025954, 18.78587155], [1516892700000, 0.0025954, 0.002606, 0.002586, 0.00258601, 676.12828945], [1516892760000, 0.00258601, 0.00260587, 0.00258601, 0.00258601, 23.17261785], [1516892820000, 0.00260557, 0.00260557, 0.002584, 0.00260537, 374.3201562], [1516892880000, 0.00260516, 0.00260516, 0.00260516, 0.00260516, 17.87292833], [1516892940000, 0.00258501, 0.00258501, 0.00258501, 0.00258501, 2.88649983], [1516893000000, 0.00258501, 0.00260531, 0.002585, 0.00260531, 534.09496564], [1516893060000, 0.00260468, 0.00260468, 0.00260468, 0.00260468, 12.55137809], [1516893120000, 0.0026, 0.00260468, 0.0026, 0.00260468, 23.6747895], [1516893240000, 0.0026045, 0.00260531, 0.00260001, 0.00260468, 310.88725621], [1516893300000, 0.00260468, 0.0026053, 0.00260468, 0.0026053, 129.78186811], [1516893360000, 0.00260468, 0.00260468, 0.00260001, 0.00260001, 23.31056523], [1516893420000, 0.00260468, 0.002615, 0.00260468, 0.00260468, 462.62668232], [1516893480000, 0.00260574, 0.00261398, 0.00260574, 0.00261398, 147.01567931], [1516893540000, 0.00260899, 0.00260899, 0.002603, 0.002603, 342.19196506], [1516893600000, 0.00260899, 0.00261149, 0.002603, 0.00261149, 375.15836046], [1516893660000, 0.002603, 0.00261149, 0.00260002, 0.00261149, 202.68868131], [1516893720000, 0.00261148, 0.00261149, 0.00261148, 0.00261149, 5.86211575], [1516893780000, 0.002605, 0.00261149, 0.002605, 0.00261149, 55.09628113], [1516893840000, 0.00261149, 0.00261149, 0.00260002, 0.00260002, 245.3069224], [1516893900000, 0.0026075, 0.0026075, 0.0026075, 0.0026075, 24.67877598], [1516893960000, 0.0026075, 0.0026075, 0.00260003, 0.00260003, 44.73936059], [1516894020000, 0.0026075, 0.0026075, 0.00260011, 0.00260011, 1.33373528], [1516894080000, 0.0026075, 0.00261149, 0.00260012, 0.00260012, 45.49641638], [1516894140000, 0.00260012, 0.0026075, 0.00260011, 0.00260012, 91.35061985], [1516894200000, 0.00260011, 0.00260012, 0.00260011, 0.00260012, 36.21065562], [1516894260000, 0.00260012, 0.00260015, 0.00260012, 0.00260012, 34.90782927], [1516894380000, 0.00260749, 0.00260749, 0.00260749, 0.00260749, 2.84107011], [1516894440000, 0.00260749, 0.00260749, 0.00260011, 0.00260011, 199.48919572], [1516894500000, 0.0026075, 0.0026075, 0.0026001, 0.0026001, 86.96755226], [1516894560000, 0.0026075, 0.0026075, 0.0026001, 0.00260738, 63.32243596], [1516894620000, 0.0026001, 0.0026001, 0.00260004, 0.00260004, 90.1127189], [1516894680000, 0.00260004, 0.0026075, 0.00258515, 0.00258518, 292.33628954], [1516894740000, 0.00260003, 0.0026075, 0.00260003, 0.00260004, 106.2386004], [1516894800000, 0.00260004, 0.0026075, 0.00260003, 0.00260003, 91.69120432], [1516894860000, 0.00260004, 0.00261902, 0.002585, 0.0026036, 2237.99838982], [1516894920000, 0.00259168, 0.00260878, 0.00259168, 0.00260878, 90.14977573], [1516894980000, 0.00260878, 0.00260883, 0.00260878, 0.00260883, 23.59801076], [1516895040000, 0.00260883, 0.00261898, 0.00260878, 0.00261898, 101.18099872], [1516895100000, 0.00261898, 0.00261899, 0.00260878, 0.00261895, 343.47875786], [1516895160000, 0.00260878, 0.0026088, 0.00260878, 0.0026088, 2.47026127], [1516895220000, 0.00260883, 0.00261892, 0.0026088, 0.00261892, 136.8226081], [1516895280000, 0.00261, 0.00261891, 0.0026088, 0.00260883, 109.95945586], [1516895340000, 0.00260883, 0.00260883, 0.00260883, 0.00260883, 160.10969971], [1516895400000, 0.00260894, 0.00261886, 0.00260894, 0.00261886, 59.47709537], [1516895460000, 0.002618, 0.00261883, 0.002618, 0.00261883, 21.46180511], [1516895520000, 0.00261883, 0.00261883, 0.00260994, 0.00261, 179.5886759], [1516895580000, 0.00261, 0.00261, 0.00260994, 0.00261, 346.39829457], [1516895640000, 0.00260994, 0.00261, 0.00260994, 0.00261, 148.21209629], [1516895700000, 0.00261882, 0.00261894, 0.00261881, 0.00261894, 476.16866326], [1516895760000, 0.00261894, 0.00262026, 0.00261007, 0.00261881, 957.23485812], [1516895820000, 0.00261881, 0.00262599, 0.00261001, 0.00262595, 754.28328906], [1516895880000, 0.00262, 0.00262587, 0.00262, 0.00262, 10.60674101], [1516895940000, 0.00261001, 0.00262579, 0.00261001, 0.00262425, 64.46720307], [1516896000000, 0.00261003, 0.00261003, 0.00261003, 0.00261003, 19.22778987], [1516896060000, 0.00261003, 0.00261003, 0.00261002, 0.00261002, 75.64776776], [1516896120000, 0.0026153, 0.00263623, 0.00261, 0.0026153, 1547.42044225], [1516896180000, 0.00261001, 0.00261001, 0.00261, 0.00261, 38.85798325], [1516896240000, 0.00261, 0.00262482, 0.00261, 0.00262482, 80.94424504], [1516896300000, 0.00261528, 0.00262485, 0.00261525, 0.00262484, 2838.59078137], [1516896360000, 0.00262484, 0.00262484, 0.00261, 0.00261, 243.69227371], [1516896420000, 0.00262, 0.00262484, 0.00262, 0.0026225, 185.24969752], [1516896480000, 0.0026225, 0.00262484, 0.00261, 0.00262484, 229.82423926], [1516896540000, 0.00262484, 0.00263518, 0.0026117, 0.00263423, 202.45161265], [1516896600000, 0.00261032, 0.00263368, 0.00261, 0.00261, 569.9198318], [1516896660000, 0.002614, 0.00262, 0.00261, 0.00261, 133.53879009], [1516896720000, 0.00262, 0.00262, 0.00261001, 0.00262, 15.92668979], [1516896780000, 0.00262423, 0.00262423, 0.00262, 0.00262, 46.97519674], [1516896900000, 0.00262, 0.00263422, 0.00261003, 0.00263422, 481.30567879], [1516896960000, 0.00262422, 0.0026299, 0.00261003, 0.002625, 97.38111743], [1516897020000, 0.002625, 0.002625, 0.00261004, 0.00262498, 20.3723551], [1516897080000, 0.0026105, 0.00262498, 0.0026105, 0.00262498, 3.91345105], [1516897140000, 0.00262482, 0.00262489, 0.00262, 0.00262, 217.72009218], [1516897200000, 0.00262, 0.00262, 0.00262, 0.00262, 45.04100179], [1516897260000, 0.00262, 0.00262989, 0.00261998, 0.00262989, 2344.1481428], [1516897320000, 0.00262989, 0.00262989, 0.00262989, 0.00262989, 347.07913974], [1516897380000, 0.00262989, 0.00262989, 0.00262989, 0.00262989, 3577.70468577], [1516897440000, 0.00262989, 0.00263211, 0.00262989, 0.0026321, 1717.35317166], [1516897500000, 0.00262989, 0.0026321, 0.00262989, 0.0026321, 863.02460364], [1516897560000, 0.0026321, 0.002633, 0.0026321, 0.0026321, 519.13382919], [1516897620000, 0.0026321, 0.00263615, 0.0026321, 0.00263615, 2434.94502855], [1516897680000, 0.00263615, 0.00263615, 0.00262989, 0.00262989, 470.46582238], [1516897800000, 0.0026218, 0.00262951, 0.0026218, 0.00262951, 44.95676001], [1516897860000, 0.00262951, 0.00262951, 0.0026218, 0.0026218, 8.79606714], [1516897920000, 0.00262949, 0.00262951, 0.00262949, 0.00262951, 101.7201883], [1516897980000, 0.0026295, 0.00263622, 0.0026295, 0.00263522, 144.39431092], [1516898040000, 0.00263522, 0.00264, 0.00263522, 0.00263522, 1194.61001577], [1516898100000, 0.00263522, 0.002645, 0.00263522, 0.00264385, 619.35563319], [1516898160000, 0.00264385, 0.0026456, 0.00264385, 0.00264385, 847.69780192], [1516898220000, 0.00264385, 0.00264402, 0.00264, 0.00264, 233.48969429], [1516898280000, 0.00264, 0.00264579, 0.00264, 0.00264579, 40.13337071], [1516898340000, 0.00264401, 0.00264579, 0.00264401, 0.00264499, 38.26080981], [1516898400000, 0.00264499, 0.00264579, 0.00264, 0.00264, 77.42337672], [1516898460000, 0.00264499, 0.00264499, 0.00264, 0.002642, 92.57192009], [1516898520000, 0.00264499, 0.00264685, 0.002642, 0.002642, 118.0603203], [1516898580000, 0.002642, 0.00264499, 0.00264, 0.002642, 410.0871414], [1516898640000, 0.0026467, 0.0026467, 0.00264, 0.00264, 809.30138625], [1516898700000, 0.00264, 0.00264669, 0.00264, 0.002643, 166.36799007], [1516898760000, 0.002643, 0.002643, 0.00264, 0.00264, 46.6690842], [1516898820000, 0.00264298, 0.0026466, 0.00263002, 0.0026466, 210.53798363], [1516898880000, 0.002644, 0.002644, 0.00264399, 0.002644, 95.84701246], [1516898940000, 0.002644, 0.00264689, 0.00263522, 0.00264689, 160.34886136], [1516899000000, 0.00263522, 0.0026466, 0.00263522, 0.0026466, 104.66825894], [1516899060000, 0.00263522, 0.0026466, 0.00263522, 0.00264399, 22.4137557], [1516899120000, 0.00264399, 0.0026466, 0.00263522, 0.00264399, 29.45480552], [1516899180000, 0.00263522, 0.0026466, 0.00263522, 0.00264399, 171.52712266], [1516899240000, 0.00264, 0.00264399, 0.00264, 0.00264399, 7.09967213], [1516899300000, 0.00264399, 0.00264399, 0.00263522, 0.00263522, 44.00412282], [1516899360000, 0.00264399, 0.00264399, 0.00263522, 0.00264399, 207.81160768], [1516899420000, 0.00264399, 0.00264399, 0.002642, 0.00264399, 491.64261228], [1516899480000, 0.00264399, 0.00264399, 0.0026427, 0.0026427, 366.70016603], [1516899540000, 0.0026427, 0.0026427, 0.0026427, 0.0026427, 1593.01378972], [1516899600000, 0.0026427, 0.0026427, 0.00264199, 0.002642, 592.07437926], [1516899660000, 0.00263522, 0.00264, 0.00263522, 0.00264, 608.24373229], [1516899720000, 0.00264199, 0.00264199, 0.00264199, 0.00264199, 7.57005136], [1516899780000, 0.00264, 0.00264199, 0.00264, 0.00264199, 211.03016585], [1516899840000, 0.002631, 0.002631, 0.002631, 0.002631, 54.04799719], [1516899900000, 0.00263101, 0.0026465, 0.00263101, 0.00264198, 423.1602361], [1516899960000, 0.00263102, 0.00263102, 0.00263102, 0.00263102, 2.47280098], [1516900020000, 0.00263102, 0.00263102, 0.00263101, 0.00263101, 106.39321728], [1516900080000, 0.00263101, 0.0026399, 0.002631, 0.002631, 168.93860475], [1516900140000, 0.002631, 0.002631, 0.002625, 0.002625, 564.63796336], [1516900200000, 0.002625, 0.0026399, 0.00262355, 0.0026399, 82.18294531], [1516900260000, 0.002631, 0.002631, 0.002631, 0.002631, 13.31362869], [1516900320000, 0.00263103, 0.0026399, 0.00263103, 0.0026399, 127.83703046], [1516900380000, 0.0026311, 0.00263999, 0.00263104, 0.00263999, 39.69110342], [1516900440000, 0.00263999, 0.00264, 0.00263102, 0.00264, 126.70428725], [1516900500000, 0.00263109, 0.00264, 0.00263109, 0.00264, 480.81983403], [1516900560000, 0.00264, 0.00264, 0.00264, 0.00264, 6.7365246], [1516900620000, 0.00264, 0.00264, 0.00263111, 0.00263111, 107.07886029], [1516900680000, 0.0026375, 0.00264685, 0.0026375, 0.00264685, 75.52629092], [1516900740000, 0.00264685, 0.00264685, 0.00264198, 0.00264399, 59.14608103], [1516900800000, 0.00264399, 0.00264685, 0.00264399, 0.002644, 189.47675465], [1516900920000, 0.002644, 0.002644, 0.002644, 0.002644, 307.09228792], [1516900980000, 0.00264689, 0.00264689, 0.002644, 0.002644, 5.58678281], [1516901040000, 0.00264689, 0.00264689, 0.00264636, 0.00264636, 342.13682702], [1516901100000, 0.002644, 0.0026469, 0.002644, 0.0026469, 277.05615991], [1516901160000, 0.00264689, 0.0026469, 0.00264636, 0.00264636, 31.77543607], [1516901220000, 0.00264636, 0.00264636, 0.002638, 0.00264636, 109.0817944], [1516901280000, 0.0026375, 0.00264636, 0.0026375, 0.0026375, 60.4396252], [1516901340000, 0.00264636, 0.00264636, 0.0026375, 0.0026375, 98.45532277], [1516901400000, 0.0026375, 0.0026375, 0.0026375, 0.0026375, 52.64099932], [1516901460000, 0.0026375, 0.0026375, 0.00263217, 0.0026375, 127.25660957], [1516901520000, 0.00263239, 0.0026375, 0.00263239, 0.0026326, 22.25134725], [1516901580000, 0.00263267, 0.00264, 0.00263267, 0.00264, 271.10748479], [1516901640000, 0.00264, 0.00264, 0.00264, 0.00264, 6.89856595], [1516901700000, 0.00264628, 0.00264628, 0.00263758, 0.00263758, 50.39086965], [1516901760000, 0.0026463, 0.0026463, 0.00264629, 0.00264629, 15.55211986], [1516901820000, 0.00263758, 0.002638, 0.00263758, 0.002638, 187.54638281], [1516901880000, 0.002638, 0.002638, 0.00263759, 0.00263759, 8.05868758], [1516901940000, 0.002638, 0.002638, 0.0026375, 0.0026375, 469.88329148], [1516902000000, 0.0026375, 0.002638, 0.00263222, 0.002638, 1202.87861533], [1516902060000, 0.002638, 0.002638, 0.002638, 0.002638, 2.73844756], [1516902120000, 0.00263223, 0.00263223, 0.00263223, 0.00263223, 641.66077826], [1516902180000, 0.002638, 0.002638, 0.0026335, 0.002638, 185.62286162], [1516902240000, 0.002638, 0.002638, 0.002638, 0.002638, 10.95137024], [1516902300000, 0.002638, 0.002638, 0.002638, 0.002638, 3.79075056], [1516902360000, 0.002638, 0.00264618, 0.002638, 0.00264618, 9.74015463], [1516902420000, 0.002638, 0.00264, 0.002638, 0.002638, 41.90348794], [1516902480000, 0.002638, 0.002638, 0.002638, 0.002638, 325.19644894], [1516902540000, 0.0026383, 0.0026462, 0.00263109, 0.002646, 639.96773536], [1516902600000, 0.00264, 0.002646, 0.00264, 0.002643, 259.58393791], [1516902660000, 0.002643, 0.00264629, 0.0026316, 0.0026316, 124.50891727], [1516902720000, 0.00264529, 0.00264629, 0.00264529, 0.00264629, 363.13870101], [1516902780000, 0.00264524, 0.00264524, 0.00263102, 0.00263102, 330.55981195], [1516902840000, 0.00263102, 0.00263102, 0.00262427, 0.00262427, 32.85189138], [1516902900000, 0.00262427, 0.00263159, 0.00262355, 0.00262355, 27.28460913], [1516902960000, 0.00262425, 0.00262425, 0.00262357, 0.00262358, 56.52973556], [1516903020000, 0.00262425, 0.00262425, 0.00262356, 0.00262356, 14.56775382], [1516903080000, 0.00262355, 0.00262356, 0.00262355, 0.00262355, 111.12873383], [1516903140000, 0.00262355, 0.00262355, 0.00262201, 0.00262201, 93.07107401], [1516903200000, 0.00262201, 0.00262355, 0.00262201, 0.00262355, 43.04984299], [1516903260000, 0.00262423, 0.00262425, 0.00262354, 0.00262355, 57.19704461], [1516903320000, 0.00262355, 0.00262425, 0.00262354, 0.00262425, 189.03538441], [1516903380000, 0.00262201, 0.00262425, 0.00262201, 0.00262354, 25.8409579], [1516903440000, 0.00262354, 0.00262354, 0.00262354, 0.00262354, 59.20234884], [1516903500000, 0.00262425, 0.00262425, 0.00262354, 0.00262425, 132.1357588], [1516903560000, 0.00262425, 0.00262425, 0.00262425, 0.00262425, 36.91658343], [1516903620000, 0.00262354, 0.00262427, 0.00262354, 0.00262427, 81.22218466], [1516903680000, 0.00262427, 0.00262428, 0.00262427, 0.00262428, 35.77490546], [1516903740000, 0.00262428, 0.00262428, 0.00262428, 0.00262428, 1.90325184], [1516903800000, 0.00262428, 0.00262429, 0.00262428, 0.00262429, 4.40819185], [1516903860000, 0.00262429, 0.00263298, 0.00262429, 0.00263298, 76.38272115], [1516903920000, 0.00263298, 0.00263419, 0.00263298, 0.00263419, 83.62247625], [1516903980000, 0.00263298, 0.00263298, 0.00262429, 0.002625, 19.87704328], [1516904040000, 0.00263288, 0.00263288, 0.00262505, 0.00262505, 32.41509924], [1516904100000, 0.00263287, 0.00263287, 0.00262505, 0.00262505, 15.25506126], [1516904160000, 0.00262505, 0.00262505, 0.00262505, 0.00262505, 1.75542597], [1516904220000, 0.00262506, 0.00263993, 0.00262506, 0.00263993, 314.18894606], [1516904280000, 0.00263988, 0.00263991, 0.00262505, 0.00262505, 68.14516729], [1516904340000, 0.00262505, 0.00263978, 0.00262505, 0.00263978, 170.0788822], [1516904400000, 0.002625, 0.00263487, 0.00262427, 0.00262427, 115.16416838], [1516904460000, 0.00262427, 0.00262429, 0.00262427, 0.00262429, 68.40662591], [1516904520000, 0.00262429, 0.00262429, 0.00262427, 0.00262427, 121.7], [1516904580000, 0.00262427, 0.00262427, 0.00262354, 0.00262354, 117.39834055], [1516904640000, 0.00263478, 0.00263992, 0.00262354, 0.00262354, 33.9888174], [1516904700000, 0.00262429, 0.00262429, 0.00262429, 0.00262429, 2.02436449], [1516904760000, 0.00262429, 0.00262429, 0.002623, 0.002623, 170.45], [1516904820000, 0.002623, 0.0026242, 0.002623, 0.0026242, 4.13089161], [1516904880000, 0.00262419, 0.00262419, 0.002623, 0.002623, 4.41987847], [1516904940000, 0.002623, 0.002623, 0.002623, 0.002623, 3.0], [1516905000000, 0.002623, 0.0026399, 0.002623, 0.0026399, 30.97007244], [1516905060000, 0.00262429, 0.0026399, 0.00262429, 0.00262429, 47.08508128], [1516905120000, 0.00263969, 0.00263986, 0.00262449, 0.00263986, 57.98319188], [1516905180000, 0.0026397, 0.00263986, 0.00263967, 0.00263967, 90.28135335], [1516905240000, 0.00262429, 0.00263967, 0.002623, 0.00263939, 101.37220357], [1516905300000, 0.00263939, 0.00263939, 0.002623, 0.002623, 108.63909849], [1516905420000, 0.00262201, 0.00262201, 0.00262201, 0.00262201, 10.20878604], [1516905480000, 0.00262201, 0.00262201, 0.002622, 0.002622, 43.50546377], [1516905540000, 0.002622, 0.002623, 0.002622, 0.002623, 15.50931243], [1516905600000, 0.00262201, 0.002623, 0.002622, 0.00262201, 35.97339496], [1516905660000, 0.00262201, 0.00262201, 0.002622, 0.002622, 29.84951894], [1516905780000, 0.002622, 0.002623, 0.002622, 0.002623, 57.6065045], [1516905840000, 0.00262201, 0.002623, 0.00262201, 0.002623, 66.98014654], [1516905900000, 0.00262202, 0.002623, 0.00262201, 0.002623, 90.53201561], [1516905960000, 0.002623, 0.002623, 0.002623, 0.002623, 56.69716442], [1516906020000, 0.00262201, 0.002623, 0.00262201, 0.002623, 49.8439779], [1516906080000, 0.002623, 0.002623, 0.0026221, 0.0026221, 91.42194703], [1516906140000, 0.0026221, 0.0026221, 0.00262201, 0.00262201, 369.16281905], [1516906200000, 0.00262201, 0.0026221, 0.00262201, 0.00262201, 48.63062956], [1516906260000, 0.00262201, 0.0026221, 0.00261359, 0.00261359, 692.97618586], [1516906320000, 0.00261359, 0.00261359, 0.00261359, 0.00261359, 11.85306268], [1516906380000, 0.00261359, 0.002618, 0.00261359, 0.00261359, 39.41187584], [1516906440000, 0.00261369, 0.00261369, 0.00261369, 0.00261369, 4.59470843], [1516906500000, 0.00261369, 0.002618, 0.00261369, 0.002618, 18.50307613], [1516906560000, 0.002618, 0.002618, 0.00261369, 0.00261798, 35.68871634], [1516906620000, 0.00261798, 0.00261798, 0.00261798, 0.00261798, 1.8942849], [1516906680000, 0.00261798, 0.00262, 0.00261798, 0.00262, 76.31096148], [1516906740000, 0.002618, 0.002618, 0.00261798, 0.00261798, 64.00516027], [1516906800000, 0.00261798, 0.00262201, 0.00261798, 0.00262201, 14.72674254], [1516906860000, 0.00262201, 0.00262209, 0.00261798, 0.00261798, 114.57180868], [1516906920000, 0.00261798, 0.00261798, 0.00261054, 0.00261054, 9.00421264], [1516906980000, 0.00261054, 0.00261054, 0.00260886, 0.00261002, 107.96388525], [1516907040000, 0.00260886, 0.00261001, 0.00260886, 0.00261001, 10.42826275], [1516907100000, 0.00260886, 0.00260886, 0.00260884, 0.00260884, 3.3452], [1516907160000, 0.00261001, 0.00261002, 0.00260884, 0.00261001, 30.4189201], [1516907220000, 0.00261001, 0.00261002, 0.00260887, 0.00261002, 53.24275312], [1516907280000, 0.00261002, 0.00261002, 0.00261001, 0.00261002, 84.99521614], [1516907340000, 0.00261002, 0.00261002, 0.00261002, 0.00261002, 9.56802927], [1516907400000, 0.00261001, 0.00261002, 0.00261001, 0.00261002, 26.50402612], [1516907460000, 0.00261001, 0.00261002, 0.00261001, 0.00261002, 110.55209879], [1516907520000, 0.00261001, 0.00261002, 0.00261001, 0.00261001, 63.05572924], [1516907580000, 0.00261001, 0.00261001, 0.00261001, 0.00261001, 40.93125658], [1516907640000, 0.00261002, 0.00261002, 0.00260886, 0.00260886, 45.80791507], [1516907700000, 0.00260886, 0.00261002, 0.00260886, 0.00261002, 77.48210762], [1516907760000, 0.00261002, 0.00261002, 0.00260018, 0.00260019, 206.26664753], [1516907820000, 0.00260022, 0.00261002, 0.00260021, 0.00260023, 112.8688097], [1516907880000, 0.00261002, 0.00261002, 0.00260027, 0.00260027, 19.25791554], [1516907940000, 0.00261002, 0.00261002, 0.00261002, 0.00261002, 16.0], [1516908000000, 0.00260043, 0.00260043, 0.00260043, 0.00260043, 73.5894819], [1516908060000, 0.00260043, 0.0026098, 0.00260043, 0.0026098, 331.00168429], [1516908120000, 0.00261002, 0.00261002, 0.00261002, 0.00261002, 32.33088202], [1516908180000, 0.00261002, 0.00261002, 0.00260014, 0.00260014, 74.72891878], [1516908240000, 0.00260046, 0.00261002, 0.002598, 0.00261002, 216.46523973], [1516908300000, 0.00261002, 0.00261002, 0.00261002, 0.00261002, 57.29309147], [1516908360000, 0.00261002, 0.00261002, 0.00261002, 0.00261002, 2.80262518], [1516908420000, 0.00261002, 0.00261495, 0.00261002, 0.00261495, 7.59787242], [1516908480000, 0.00261495, 0.00261495, 0.00261495, 0.00261495, 1.86229372], [1516908600000, 0.00261492, 0.00261495, 0.00261492, 0.00261495, 43.42256915], [1516908660000, 0.00261495, 0.00261496, 0.00261495, 0.00261495, 62.65976155], [1516908720000, 0.00261495, 0.00261496, 0.00260005, 0.00261496, 69.09166917], [1516908780000, 0.00261495, 0.00261495, 0.00260008, 0.00260008, 94.28967833], [1516908840000, 0.00261495, 0.00261495, 0.0026027, 0.0026027, 20.68834968], [1516908900000, 0.00261495, 0.00261495, 0.00261495, 0.00261495, 3.24998962], [1516908960000, 0.002605, 0.002605, 0.00260271, 0.002605, 157.05739098], [1516909020000, 0.0026027, 0.002605, 0.0026027, 0.002605, 18.70633736], [1516909080000, 0.002605, 0.00261495, 0.0026027, 0.00261495, 14.03100299], [1516909140000, 0.00261495, 0.00261495, 0.00261495, 0.00261495, 7.98435628], [1516909200000, 0.00261495, 0.00261495, 0.00260271, 0.00260271, 7.92360358], [1516909320000, 0.00260271, 0.00260271, 0.00260271, 0.00260271, 53.89489316], [1516909380000, 0.00260271, 0.00260271, 0.00260271, 0.00260271, 6.82334979], [1516909440000, 0.00260271, 0.0026127, 0.0026027, 0.0026127, 30.49383811], [1516909500000, 0.00260584, 0.0026127, 0.00260272, 0.00260272, 36.11705384], [1516909560000, 0.00261, 0.00261, 0.00261, 0.00261, 4.85798212], [1516909620000, 0.002605, 0.002605, 0.00260272, 0.00260272, 32.52090433], [1516909680000, 0.002603, 0.002605, 0.002603, 0.002603, 244.31398154], [1516909740000, 0.0026028, 0.0026028, 0.0026028, 0.0026028, 122.19375], [1516909800000, 0.0026028, 0.002603, 0.0026028, 0.00260281, 12.74715033], [1516909860000, 0.002603, 0.00260499, 0.002603, 0.00260499, 76.76416219], [1516909920000, 0.00260499, 0.00260499, 0.00260499, 0.00260499, 2.484821], [1516909980000, 0.00260499, 0.00260499, 0.00260399, 0.00260399, 26.60225781], [1516910040000, 0.00260399, 0.00260399, 0.0026034, 0.00260399, 10.58576885], [1516910100000, 0.00260499, 0.002605, 0.00260499, 0.002605, 22.24146725], [1516910160000, 0.002605, 0.002605, 0.002605, 0.002605, 14.67057364], [1516910220000, 0.002604, 0.002605, 0.002604, 0.002604, 49.93645937], [1516910280000, 0.00260404, 0.00260404, 0.00260403, 0.00260403, 11.95877445], [1516910340000, 0.00260403, 0.002605, 0.002604, 0.00260404, 29.68241415], [1516910400000, 0.00260404, 0.00260404, 0.00260401, 0.00260401, 16.75603098], [1516910460000, 0.00260404, 0.00260404, 0.00260401, 0.00260402, 10.68827248], [1516910520000, 0.00260402, 0.00260402, 0.00260401, 0.00260401, 81.10620114], [1516910580000, 0.00260401, 0.00260401, 0.00260401, 0.00260401, 39.03765593], [1516910640000, 0.00260402, 0.00260402, 0.00260402, 0.00260402, 11.33130391], [1516910700000, 0.00260402, 0.00260404, 0.00260402, 0.00260402, 24.62675452], [1516910760000, 0.00260404, 0.00260404, 0.00260404, 0.00260404, 11.1], [1516910820000, 0.00260402, 0.00260404, 0.00260401, 0.00260401, 4.51116564], [1516910940000, 0.00260404, 0.00260404, 0.00260401, 0.00260401, 5.57567301], [1516911000000, 0.00260401, 0.00260404, 0.00260401, 0.00260401, 85.04664631], [1516911060000, 0.00260401, 0.00260404, 0.00260401, 0.00260404, 251.70280603], [1516911120000, 0.002605, 0.002605, 0.0026, 0.0026, 523.34470347], [1516911180000, 0.00260499, 0.002605, 0.00260499, 0.002605, 194.24935955], [1516911300000, 0.002605, 0.002605, 0.002605, 0.002605, 15.42489228], [1516911360000, 0.00260001, 0.002605, 0.0026, 0.0026, 255.31321254], [1516911420000, 0.0026048, 0.0026048, 0.0026048, 0.0026048, 2.62172575], [1516911480000, 0.0026048, 0.002605, 0.0026048, 0.0026048, 46.77126223], [1516911540000, 0.002605, 0.002605, 0.0026048, 0.002605, 326.95833105], [1516911600000, 0.0026048, 0.002605, 0.0026048, 0.0026048, 60.99794072], [1516911660000, 0.0026048, 0.0026048, 0.0026048, 0.0026048, 108.19230915], [1516911720000, 0.0026, 0.0026, 0.0026, 0.0026, 256.28274142], [1516911780000, 0.0026048, 0.0026048, 0.0026048, 0.0026048, 14.60332944], [1516911840000, 0.0026008, 0.0026008, 0.00259545, 0.00259545, 226.14097962], [1516911900000, 0.00259541, 0.0026008, 0.00259015, 0.00259016, 113.13720187], [1516912020000, 0.0026, 0.0026, 0.0026, 0.0026, 0.42403846], [1516912080000, 0.0026, 0.00260079, 0.00259546, 0.00259546, 16.01388448], [1516912140000, 0.00259546, 0.0026008, 0.00259546, 0.00259546, 200.70755281], [1516912200000, 0.00260078, 0.00260078, 0.00259545, 0.00259545, 12.80072219], [1516912260000, 0.00260078, 0.00260078, 0.00260078, 0.00260078, 34.38551582], [1516912320000, 0.00260078, 0.00260078, 0.00260078, 0.00260078, 35.84782258], [1516912380000, 0.0026008, 0.0026008, 0.00260078, 0.00260078, 91.12047842], [1516912440000, 0.00260078, 0.0026008, 0.00260078, 0.00260078, 36.87568156], [1516912500000, 0.0026008, 0.0026008, 0.00259545, 0.00259545, 53.8519199], [1516912560000, 0.0026008, 0.0026008, 0.0026, 0.0026, 8.21409358], [1516912620000, 0.0026008, 0.0026008, 0.0026, 0.0026, 160.03105299], [1516912680000, 0.00259772, 0.0026, 0.00259545, 0.0026, 4.68535974], [1516912740000, 0.0026, 0.0026, 0.0025902, 0.0026, 186.90938621], [1516912800000, 0.00259999, 0.0026, 0.00259021, 0.00259772, 210.24929028], [1516912860000, 0.00259772, 0.00259772, 0.00259772, 0.00259772, 6.49267908], [1516912920000, 0.00259772, 0.00259772, 0.00259021, 0.00259021, 217.0434739], [1516912980000, 0.0026008, 0.0026008, 0.0026008, 0.0026008, 1.50165862], [1516913040000, 0.0026008, 0.0026008, 0.0026008, 0.0026008, 1.37383687], [1516913100000, 0.0026008, 0.0026008, 0.0026008, 0.0026008, 11.11729831], [1516913160000, 0.00260078, 0.0026008, 0.00260078, 0.0026008, 92.96128563], [1516913220000, 0.00260078, 0.00260078, 0.00259078, 0.00259078, 17.01560121], [1516913280000, 0.00260078, 0.0026048, 0.00260078, 0.00260078, 18.49966017], [1516913340000, 0.00260078, 0.00260078, 0.00260078, 0.00260078, 99.89138404], [1516913400000, 0.00260078, 0.00260078, 0.00260077, 0.00260078, 11.72554658], [1516913460000, 0.00260078, 0.00260078, 0.00260078, 0.00260078, 0.84782258], [1516913520000, 0.00260078, 0.00260078, 0.0025909, 0.0025909, 123.12503397], [1516913580000, 0.00260078, 0.00260478, 0.0025909, 0.00260478, 51.57608922], [1516913640000, 0.002598, 0.002598, 0.002598, 0.002598, 3.8487298], [1516913700000, 0.002598, 0.00260478, 0.002598, 0.00260478, 70.86698775], [1516913820000, 0.00260478, 0.00260478, 0.0026045, 0.00260478, 100.49689441], [1516913880000, 0.00260478, 0.00260478, 0.00259567, 0.00260478, 54.50625105], [1516914000000, 0.00260478, 0.0026048, 0.00260478, 0.00260478, 34.02224778], [1516914060000, 0.00260478, 0.0026048, 0.00260478, 0.0026048, 0.76620097], [1516914120000, 0.0026048, 0.0026048, 0.0026048, 0.0026048, 0.85632664], [1516914180000, 0.0026, 0.0026, 0.0026, 0.0026, 3.19033035], [1516914300000, 0.0026, 0.0026, 0.002593, 0.002593, 4.87196291], [1516914600000, 0.002593, 0.0026, 0.002593, 0.0026, 34.82238104], [1516914660000, 0.00259999, 0.00259999, 0.002593, 0.002593, 52.28623856], [1516914720000, 0.002593, 0.00259999, 0.002593, 0.00259999, 17.81723151], [1516914780000, 0.002593, 0.00259999, 0.002593, 0.002593, 28.98567811], [1516914840000, 0.002593, 0.0026, 0.002593, 0.0026, 23.40691682], [1516914900000, 0.0026, 0.0026, 0.002599, 0.0026, 20.24217149], [1516914960000, 0.002593, 0.0026, 0.00259153, 0.0026, 123.92307692], [1516915020000, 0.00259154, 0.0026, 0.00259154, 0.0026, 198.50923149], [1516915140000, 0.0026, 0.0026, 0.002595, 0.002595, 83.83142835], [1516915200000, 0.0026, 0.002605, 0.0026, 0.002605, 230.82701367], [1516915260000, 0.002601, 0.002601, 0.002601, 0.002601, 2.17024317], [1516915320000, 0.002601, 0.002605, 0.002601, 0.002605, 1202.98994853], [1516915380000, 0.002605, 0.002605, 0.002601, 0.002601, 161.31819144], [1516915440000, 0.002601, 0.002605, 0.002601, 0.002601, 148.21394367], [1516915500000, 0.002604, 0.002605, 0.002604, 0.002605, 11.70849357], [1516915560000, 0.002604, 0.00260499, 0.00259467, 0.00260499, 18.22715972], [1516915620000, 0.00260499, 0.00260499, 0.00260498, 0.00260499, 21.71554476], [1516915680000, 0.00260497, 0.00260499, 0.00260497, 0.00260497, 6.79190321], [1516915740000, 0.00260497, 0.002605, 0.00260497, 0.002605, 83.12524379], [1516915800000, 0.00259468, 0.002605, 0.00259467, 0.002605, 63.83877159], [1516915860000, 0.002605, 0.002605, 0.0026, 0.0026, 12.77187444], [1516915920000, 0.002601, 0.002605, 0.002601, 0.002601, 59.7601753], [1516915980000, 0.002601, 0.002601, 0.002601, 0.002601, 1.99266214], [1516916040000, 0.002601, 0.002601, 0.00259999, 0.00259999, 18.85621973], [1516916100000, 0.00259999, 0.002605, 0.00259999, 0.00259999, 8.53743042], [1516916160000, 0.002605, 0.002605, 0.002605, 0.002605, 4.05], [1516916220000, 0.002605, 0.002605, 0.002605, 0.002605, 1.0], [1516916280000, 0.00259999, 0.00260499, 0.00259999, 0.00259999, 43.33448799], [1516916340000, 0.00259999, 0.00259999, 0.00259999, 0.00259999, 23.53931158], [1516916400000, 0.00259462, 0.00259462, 0.00259462, 0.00259462, 13.52629613], [1516916460000, 0.002593, 0.002593, 0.002593, 0.002593, 43.46895488], [1516916520000, 0.002593, 0.002605, 0.002593, 0.002605, 216.40442888], [1516916580000, 0.002605, 0.002605, 0.002593, 0.002593, 105.31970072], [1516916640000, 0.002593, 0.00259935, 0.00259031, 0.00259031, 605.62029531], [1516916700000, 0.00259935, 0.002605, 0.00259935, 0.002605, 10.61384463], [1516916760000, 0.002605, 0.002605, 0.002605, 0.002605, 0.40195387], [1516916820000, 0.0026049, 0.002605, 0.0026049, 0.002605, 3.88351193], [1516916880000, 0.002605, 0.002605, 0.002605, 0.002605, 0.62211835], [1516916940000, 0.0026, 0.0026, 0.0026, 0.0026, 10.0], [1516917000000, 0.0026, 0.0026, 0.002592, 0.002592, 20.87447236], [1516917060000, 0.002592, 0.002592, 0.002592, 0.002592, 0.41603788], [1516917120000, 0.002592, 0.00260499, 0.00259199, 0.00259199, 108.61975555], [1516917240000, 0.00259899, 0.00259899, 0.00259899, 0.00259899, 9.34978587], [1516917300000, 0.00259899, 0.00259899, 0.002593, 0.002593, 15.12564078], [1516917360000, 0.002593, 0.002593, 0.00259201, 0.00259201, 70.66634968], [1516917420000, 0.00259199, 0.00259199, 0.00259035, 0.00259035, 182.25987389], [1516917480000, 0.0025919, 0.00259201, 0.00259021, 0.00259021, 131.85387485], [1516917540000, 0.00259021, 0.00259201, 0.00259021, 0.00259201, 32.40479554], [1516917600000, 0.002599, 0.002599, 0.002595, 0.002595, 5.39906546], [1516917660000, 0.002599, 0.002599, 0.002595, 0.002595, 39.56395567], [1516917720000, 0.002595, 0.002595, 0.002595, 0.002595, 15.76761393], [1516917780000, 0.002595, 0.00259895, 0.002595, 0.00259895, 29.74944583], [1516917840000, 0.00259895, 0.00259895, 0.002595, 0.002595, 307.11959587], [1516917900000, 0.00259895, 0.002599, 0.00259501, 0.00259501, 46.38237361], [1516917960000, 0.00259501, 0.002605, 0.00259501, 0.00260499, 68.49752185], [1516918020000, 0.00260499, 0.00260499, 0.00259501, 0.00259501, 2.1197077], [1516918080000, 0.00259501, 0.00259501, 0.00259501, 0.00259501, 63.12332455], [1516918140000, 0.00259501, 0.00259501, 0.00259501, 0.00259501, 59.87373139], [1516918200000, 0.00260499, 0.002605, 0.00259501, 0.00260499, 42.11897163], [1516918260000, 0.00259501, 0.0026, 0.00259501, 0.0026, 78.42485385], [1516918440000, 0.00259517, 0.0026, 0.00259517, 0.0025999, 333.22358232], [1516918500000, 0.00259501, 0.00259501, 0.00259501, 0.00259501, 3.71445169], [1516918560000, 0.0026, 0.0026, 0.00259501, 0.00259501, 96.28039524], [1516918620000, 0.00259501, 0.00259501, 0.00259501, 0.00259501, 10.13131137], [1516918680000, 0.00259501, 0.00259502, 0.00259501, 0.00259502, 0.84970607], [1516918740000, 0.00259502, 0.00259502, 0.00259502, 0.00259502, 0.84970444], [1516918800000, 0.00259873, 0.00259873, 0.002595, 0.002595, 422.38509022], [1516918860000, 0.002595, 0.002595, 0.002595, 0.002595, 297.97485725], [1516918920000, 0.00260244, 0.00260244, 0.002595, 0.002595, 88.19085033], [1516918980000, 0.002595, 0.00260497, 0.002595, 0.002595, 33.06856598], [1516919040000, 0.0025955, 0.0025955, 0.002595, 0.002595, 6.50040005], [1516919100000, 0.002595, 0.0025955, 0.002595, 0.002595, 2.5701185], [1516919160000, 0.002595, 0.002595, 0.002595, 0.002595, 0.84971098], [1516919220000, 0.002595, 0.0025956, 0.002595, 0.0025956, 3.02986786], [1516919280000, 0.0025956, 0.00260243, 0.0025956, 0.00260243, 130.06748606], [1516919340000, 0.002597, 0.00259705, 0.002597, 0.00259705, 45.39211483], [1516919400000, 0.00260241, 0.00260241, 0.002595, 0.002595, 29.49266822], [1516919460000, 0.002595, 0.002595, 0.002595, 0.002595, 28.18467962], [1516919520000, 0.002597, 0.002605, 0.002595, 0.002605, 41.61710895], [1516919580000, 0.00259501, 0.00259501, 0.00259501, 0.00259501, 0.8497077], [1516919640000, 0.00259561, 0.002605, 0.00259561, 0.002605, 13.28506123], [1516919700000, 0.00259561, 0.00260499, 0.00259561, 0.00259561, 8.55071162], [1516919760000, 0.00259561, 0.00260499, 0.00259501, 0.00259501, 10.49653832], [1516919820000, 0.0025955, 0.0025955, 0.0025955, 0.0025955, 0.8495473], [1516919880000, 0.0025955, 0.002605, 0.0025955, 0.002596, 763.13699617], [1516919940000, 0.002596, 0.00259601, 0.00259501, 0.00259501, 1241.85850051], [1516920000000, 0.00259501, 0.002605, 0.00259201, 0.00259201, 358.74483172], [1516920060000, 0.00259201, 0.00259201, 0.00259201, 0.00259201, 0.85069116], [1516920120000, 0.00259201, 0.00259201, 0.00259201, 0.00259201, 0.42534558], [1516920180000, 0.00259201, 0.00259997, 0.00259201, 0.00259997, 50.70919472], [1516920240000, 0.00259501, 0.002605, 0.00259501, 0.00259999, 368.78436361], [1516920300000, 0.00259999, 0.00260199, 0.00259999, 0.00259999, 111.3415381], [1516920360000, 0.00259999, 0.00259999, 0.00259201, 0.00259201, 181.66100811], [1516920420000, 0.00259021, 0.0026, 0.00259001, 0.00259001, 540.01196458], [1516920480000, 0.00259011, 0.00260499, 0.00259001, 0.00259001, 82.40635327], [1516920540000, 0.00259001, 0.00259011, 0.00259001, 0.00259011, 17.3985351], [1516920720000, 0.00260479, 0.00260479, 0.00260479, 0.00260479, 100.0], [1516920780000, 0.0025906, 0.0025906, 0.0025906, 0.0025906, 21.89636348], [1516920900000, 0.0026048, 0.0026048, 0.0026048, 0.0026048, 7.89170495], [1516920960000, 0.0025906, 0.0026048, 0.0025906, 0.0026048, 44.45], [1516921020000, 0.0026048, 0.0026048, 0.0026048, 0.0026048, 8.20986634], [1516921080000, 0.00259501, 0.00260479, 0.0025906, 0.00260479, 95.56053881], [1516921140000, 0.00260479, 0.0026048, 0.00260479, 0.0026048, 12.37343898], [1516921200000, 0.0025906, 0.0026048, 0.0025906, 0.0026048, 51.26969185], [1516921320000, 0.00259061, 0.00259063, 0.00259061, 0.00259063, 15.30343826], [1516921380000, 0.00259063, 0.00259069, 0.00259063, 0.00259069, 66.62590446], [1516921440000, 0.0026, 0.0026, 0.0026, 0.0026, 7.0], [1516921500000, 0.0026, 0.0026, 0.00259069, 0.00259069, 49.189998], [1516921560000, 0.0026048, 0.002605, 0.0026048, 0.002605, 204.228391], [1516921680000, 0.002605, 0.002605, 0.00259252, 0.00259252, 31.83039694], [1516921740000, 0.002605, 0.002605, 0.00259361, 0.00259361, 21.05267551], [1516921800000, 0.002605, 0.002605, 0.002605, 0.002605, 2.76404586], [1516921860000, 0.0026, 0.002605, 0.00259371, 0.002605, 38.82375041], [1516921920000, 0.00259371, 0.002599, 0.00259371, 0.002599, 36.87069535], [1516922040000, 0.00259371, 0.00259371, 0.0025937, 0.0025937, 100.0], [1516922100000, 0.002596, 0.002596, 0.0025937, 0.0025937, 8.0808466], [1516922160000, 0.0025937, 0.002596, 0.00259369, 0.002596, 37.75991323], [1516922220000, 0.002596, 0.002605, 0.002596, 0.002605, 194.68441544], [1516922280000, 0.00260049, 0.002605, 0.002596, 0.002605, 1.34976963], [1516922340000, 0.002596, 0.002605, 0.002596, 0.002596, 34.94246003], [1516922400000, 0.002605, 0.002605, 0.002596, 0.002596, 12.16626473], [1516922460000, 0.002605, 0.002605, 0.00260499, 0.00260499, 4.3], [1516922520000, 0.002596, 0.002596, 0.002596, 0.002596, 54.47006772], [1516922580000, 0.002596, 0.002596, 0.002596, 0.002596, 54.5738618], [1516922640000, 0.00260499, 0.00260499, 0.00260499, 0.00260499, 7.26628505], [1516922700000, 0.00260499, 0.00260499, 0.002596, 0.002596, 79.73871039], [1516922760000, 0.002605, 0.002605, 0.002596, 0.002596, 302.40667899], [1516922820000, 0.002596, 0.002596, 0.002596, 0.002596, 31.07186851], [1516922880000, 0.002597, 0.002597, 0.00259253, 0.00259253, 154.67516287], [1516923000000, 0.00260499, 0.002605, 0.00260479, 0.00260479, 38.5204396], [1516923060000, 0.00260479, 0.00260479, 0.00260479, 0.00260479, 0.19147417], [1516923120000, 0.00260479, 0.00260479, 0.00260479, 0.00260479, 1.26137821], [1516923180000, 0.00260479, 0.00260499, 0.00260479, 0.00260499, 78.74079842], [1516923240000, 0.00260479, 0.00260479, 0.00259611, 0.00259611, 9.13414276], [1516923360000, 0.00260479, 0.00260479, 0.0025962, 0.0025962, 9.11314228], [1516923420000, 0.0026, 0.0026, 0.0025962, 0.0025962, 9.28909358], [1516923480000, 0.0025962, 0.0025962, 0.0025962, 0.0025962, 1.85026384], [1516923540000, 0.0026, 0.0026, 0.0026, 0.0026, 15.74839189], [1516923600000, 0.0025962, 0.0026, 0.0025961, 0.0025961, 287.73706815], [1516923660000, 0.00260479, 0.00260479, 0.0025961, 0.0025961, 12.796145], [1516923720000, 0.0025961, 0.0025961, 0.0025961, 0.0025961, 4.46694997], [1516923780000, 0.0026, 0.00260478, 0.0026, 0.00260478, 21.87929121], [1516923840000, 0.00260478, 0.00260479, 0.0026, 0.0026, 238.53326857], [1516923900000, 0.0026, 0.0026, 0.002596, 0.002596, 257.99185785], [1516923960000, 0.002603, 0.002603, 0.002603, 0.002603, 6.36369325], [1516924020000, 0.002596, 0.002596, 0.002596, 0.002596, 5.76575247], [1516924080000, 0.0025965, 0.0025965, 0.0025965, 0.0025965, 0.25], [1516924140000, 0.0025965, 0.0025965, 0.0025965, 0.0025965, 1.42461005], [1516924200000, 0.0025965, 0.0025965, 0.002596, 0.002596, 31.38763644], [1516924260000, 0.002596, 0.002596, 0.002596, 0.002596, 11.33651551], [1516924320000, 0.002599, 0.002599, 0.002599, 0.002599, 15.71850501], [1516924380000, 0.00259601, 0.00259601, 0.002596, 0.002596, 100.0], [1516924440000, 0.002596, 0.002597, 0.002596, 0.002597, 68.15633], [1516924500000, 0.002597, 0.002597, 0.002596, 0.002596, 212.0128701], [1516924560000, 0.002596, 0.00259602, 0.002596, 0.002596, 77.67631875], [1516924620000, 0.0025988, 0.0025988, 0.0025988, 0.0025988, 0.67423426], [1516924680000, 0.0025988, 0.0025988, 0.002596, 0.002596, 88.19006249], [1516924740000, 0.002596, 0.002596, 0.0025906, 0.0025906, 586.22125429], [1516924800000, 0.002596, 0.002596, 0.00258955, 0.00259, 397.09814977], [1516924860000, 0.00259, 0.002596, 0.00258901, 0.002596, 47.88208347], [1516924920000, 0.002599, 0.002599, 0.002596, 0.002596, 9.06987299], [1516925040000, 0.002599, 0.002599, 0.002589, 0.002589, 38.46021569], [1516925100000, 0.002589, 0.002589, 0.002589, 0.002589, 125.36696178], [1516925160000, 0.002589, 0.002589, 0.002589, 0.002589, 434.09873666], [1516925220000, 0.002589, 0.002589, 0.00258762, 0.002589, 844.50918017], [1516925280000, 0.002589, 0.002589, 0.002589, 0.002589, 418.66280758], [1516925340000, 0.00258898, 0.0026049, 0.00258898, 0.0026049, 192.02157833], [1516925400000, 0.00260487, 0.00260488, 0.00260486, 0.00260486, 30.01417796], [1516925460000, 0.00260488, 0.00260488, 0.00260488, 0.00260488, 16.41283395], [1516925520000, 0.0025883, 0.00258838, 0.00258523, 0.00258523, 627.93742703], [1516925580000, 0.0026002, 0.0026002, 0.00258524, 0.00258524, 29.10990952], [1516925640000, 0.0026002, 0.00260485, 0.00258524, 0.00260008, 104.03415174], [1516925700000, 0.00258523, 0.00260485, 0.00258013, 0.00260482, 2620.09224524], [1516925760000, 0.0026048, 0.0026048, 0.00260444, 0.00260444, 18.39104147], [1516925820000, 0.00260444, 0.00260444, 0.00257, 0.00258157, 2791.84280171], [1516925880000, 0.00258158, 0.00258931, 0.00258158, 0.00258931, 6.9678131], [1516925940000, 0.00260396, 0.00260396, 0.00259288, 0.00259289, 53.39841179], [1516926000000, 0.00259289, 0.00259289, 0.00258601, 0.00259288, 20.13805311], [1516926060000, 0.00258601, 0.00259288, 0.002586, 0.002586, 22.22975923], [1516926120000, 0.00259287, 0.00259288, 0.00257809, 0.00259288, 10.62820924], [1516926180000, 0.00260391, 0.00260391, 0.00260391, 0.00260391, 0.34672089], [1516926240000, 0.0026038, 0.0026038, 0.0026038, 0.0026038, 0.34673554], [1516926300000, 0.00259288, 0.00260392, 0.00259288, 0.00260392, 16.73981475], [1516926360000, 0.00258296, 0.00258296, 0.00258296, 0.00258296, 82.44081374], [1516926420000, 0.00258296, 0.00258297, 0.00258296, 0.00258297, 1.00823529], [1516926480000, 0.00258296, 0.00258296, 0.00258296, 0.00258296, 30.63956667], [1516926540000, 0.00258296, 0.00260361, 0.00258296, 0.00258296, 554.98386482], [1516926600000, 0.00258296, 0.00260351, 0.00258296, 0.00258296, 13.89514265], [1516926660000, 0.00258296, 0.00258296, 0.00258296, 0.00258296, 9.96677253], [1516926720000, 0.00260299, 0.00260299, 0.00260299, 0.00260299, 38.32180562], [1516926780000, 0.00260298, 0.00260298, 0.00258997, 0.00258997, 44.62748059], [1516926840000, 0.00258996, 0.00258996, 0.00258297, 0.00258996, 287.05395057], [1516926900000, 0.00258996, 0.00260252, 0.00258297, 0.00260199, 309.40981503], [1516926960000, 0.00260198, 0.00260198, 0.00259899, 0.00259899, 45.45765699], [1516927020000, 0.002597, 0.002597, 0.00258996, 0.00258996, 130.10596467], [1516927080000, 0.00258996, 0.00258996, 0.00258297, 0.00258996, 25.46217335], [1516927140000, 0.00258996, 0.00258996, 0.00258996, 0.00258996, 4.79547454], [1516927200000, 0.00258996, 0.00259647, 0.00258996, 0.00258996, 28.72746682], [1516927260000, 0.00258297, 0.00258996, 0.00258297, 0.00258297, 915.25838247], [1516927320000, 0.00258996, 0.00258996, 0.00258297, 0.00258994, 135.97384248], [1516927380000, 0.00258298, 0.00258994, 0.00258297, 0.00258994, 97.360537], [1516927440000, 0.00258297, 0.00258992, 0.00257731, 0.00257919, 580.86720777], [1516927500000, 0.00257919, 0.00258985, 0.00257569, 0.00258984, 61.450275], [1516927560000, 0.00258984, 0.00258984, 0.00257919, 0.00257919, 91.86897566], [1516927620000, 0.00257569, 0.0025791, 0.00252, 0.00257883, 19493.89385597], [1516927680000, 0.00257882, 0.00257883, 0.00255312, 0.0025613, 380.09288623], [1516927740000, 0.00257883, 0.0025791, 0.00255325, 0.0025791, 257.46478857], [1516927800000, 0.002566, 0.00258653, 0.00256135, 0.00258653, 598.72223757], [1516927860000, 0.00258653, 0.00258653, 0.00257849, 0.00258642, 55.64368159], [1516927920000, 0.00258, 0.00258, 0.00257849, 0.00257849, 41.57762546], [1516927980000, 0.00257849, 0.00258, 0.00257251, 0.00257849, 30.54573908], [1516928040000, 0.00257849, 0.00257849, 0.00257849, 0.00257849, 5.32031307], [1516928100000, 0.002575, 0.00257849, 0.002575, 0.00257849, 47.07246528], [1516928160000, 0.002575, 0.002575, 0.002575, 0.002575, 98.551], [1516928220000, 0.002575, 0.00257849, 0.00257251, 0.00257849, 150.94008703], [1516928280000, 0.00256818, 0.00256818, 0.00256817, 0.00256817, 16.52465925], [1516928340000, 0.00256817, 0.00257843, 0.00256817, 0.00257843, 26.71611059], [1516928400000, 0.00257843, 0.00257843, 0.00257841, 0.00257841, 4.67727953], [1516928460000, 0.0025783, 0.0025783, 0.0025783, 0.0025783, 2.19962362], [1516928520000, 0.00256603, 0.002578, 0.00256601, 0.002578, 37.83279706], [1516928580000, 0.002578, 0.002578, 0.00256601, 0.00256601, 18.401359], [1516928640000, 0.00256601, 0.00256857, 0.00256601, 0.00256601, 48.71559784], [1516928700000, 0.00256601, 0.00256601, 0.00256601, 0.00256601, 100.97381262], [1516928760000, 0.00256601, 0.00256601, 0.00256601, 0.00256601, 47.1757893], [1516928820000, 0.00256601, 0.00256605, 0.00256601, 0.00256605, 55.5120284], [1516928880000, 0.00256605, 0.00257999, 0.00256605, 0.00257999, 52.7558214], [1516928940000, 0.00257999, 0.00257999, 0.00256605, 0.00257999, 58.39958295], [1516929000000, 0.00257741, 0.00257999, 0.00256605, 0.0025774, 197.34416628], [1516929060000, 0.00257999, 0.00257999, 0.0025665, 0.00257996, 10.65435777], [1516929120000, 0.00258, 0.00258, 0.00258, 0.00258, 2.61989506], [1516929180000, 0.00258644, 0.00258644, 0.002567, 0.00258639, 40.06266293], [1516929240000, 0.002567, 0.002567, 0.002567, 0.002567, 1.49958038], [1516929300000, 0.00258621, 0.00258621, 0.00258621, 0.00258621, 3.86666202], [1516929360000, 0.002567, 0.002567, 0.002567, 0.002567, 5.77513387], [1516929420000, 0.002567, 0.0025857, 0.002567, 0.0025857, 3.15587195], [1516929480000, 0.00257702, 0.00258567, 0.00257702, 0.00257702, 62.9290451], [1516929540000, 0.00258568, 0.0025857, 0.00258568, 0.0025857, 3.86742468], [1516929600000, 0.0025857, 0.0025857, 0.0025857, 0.0025857, 45.24835939], [1516929660000, 0.00258135, 0.00258135, 0.00258135, 0.00258135, 229.63186182], [1516929720000, 0.00258569, 0.00258569, 0.00257, 0.00258135, 367.10590601], [1516929780000, 0.00257, 0.00258135, 0.00257, 0.00258135, 8.92702337], [1516929840000, 0.00257002, 0.00257002, 0.00257002, 0.00257002, 16.51662923], [1516929900000, 0.00257002, 0.002581, 0.00257002, 0.00258098, 19.59981214], [1516929960000, 0.00258097, 0.00258097, 0.00258, 0.00258, 8.25329366], [1516930020000, 0.00258, 0.00258098, 0.00257007, 0.00258098, 20.61400598], [1516930080000, 0.00257007, 0.00257007, 0.00257007, 0.00257007, 14.4418487], [1516930140000, 0.00257007, 0.00257007, 0.00257007, 0.00257007, 2.9514723], [1516930200000, 0.00258098, 0.00258135, 0.00257, 0.00257, 228.00330477], [1516930260000, 0.00257, 0.00257, 0.00257, 0.00257, 8.90503225], [1516930320000, 0.00256997, 0.00256997, 0.00256997, 0.00256997, 0.44423251], [1516930380000, 0.00256997, 0.00256997, 0.00256707, 0.00256707, 147.4059646], [1516930440000, 0.00256707, 0.00256707, 0.00256701, 0.00256701, 203.25466677], [1516930500000, 0.00256997, 0.002581, 0.00256997, 0.002581, 3.891096], [1516930560000, 0.0025805, 0.0025805, 0.0025805, 0.0025805, 0.40263691], [1516930620000, 0.0025805, 0.0025805, 0.0025805, 0.0025805, 0.46502615], [1516930680000, 0.0025805, 0.0025805, 0.00256731, 0.00256731, 32.38244879], [1516930740000, 0.00256731, 0.00256731, 0.00256731, 0.00256731, 93.91120035], [1516930800000, 0.0025805, 0.0025805, 0.00256732, 0.00256732, 127.6458402], [1516930860000, 0.00258089, 0.0025809, 0.00258089, 0.0025809, 1.00400299], [1516930980000, 0.0025807, 0.0025808, 0.00256701, 0.00256701, 49.63989221], [1516931040000, 0.00257383, 0.00257383, 0.00257383, 0.00257383, 0.42000983], [1516931100000, 0.00256705, 0.00257383, 0.00256601, 0.00256601, 825.49033461], [1516931160000, 0.00256601, 0.00256601, 0.00256601, 0.00256601, 11.80312901], [1516931220000, 0.00257383, 0.00257383, 0.002567, 0.002567, 191.6322286], [1516931280000, 0.002567, 0.00257383, 0.002566, 0.002567, 56.38123654], [1516931340000, 0.00257383, 0.00257383, 0.002566, 0.00257383, 60.86176037], [1516931400000, 0.00257382, 0.00257382, 0.00257382, 0.00257382, 5.22293528], [1516931460000, 0.00257382, 0.00257382, 0.002566, 0.002566, 63.1115989], [1516931520000, 0.002566, 0.00257382, 0.002566, 0.002566, 112.63144643], [1516931580000, 0.00256363, 0.00257383, 0.00256363, 0.00257383, 54.88615236], [1516931640000, 0.00257382, 0.00257383, 0.00257382, 0.00257382, 12.90331635], [1516931700000, 0.00257382, 0.00257383, 0.00257382, 0.00257383, 8.84482683], [1516931760000, 0.00257383, 0.00257383, 0.00257382, 0.00257382, 46.78908473], [1516931820000, 0.00257382, 0.00257382, 0.00256991, 0.00256991, 3.60219905], [1516931880000, 0.00256991, 0.00256991, 0.00256991, 0.00256991, 20.62871315], [1516931940000, 0.002566, 0.002566, 0.0025613, 0.0025613, 312.44413804], [1516932000000, 0.0025613, 0.00257382, 0.00255399, 0.00257382, 236.36700622], [1516932060000, 0.00257382, 0.00257382, 0.00256352, 0.00256352, 16.31248516], [1516932120000, 0.00256353, 0.00256353, 0.002545, 0.00256352, 344.19460747], [1516932180000, 0.00256352, 0.00256352, 0.00256352, 0.00256352, 9.75405971], [1516932240000, 0.00255565, 0.00256348, 0.00254018, 0.00254309, 719.16411], [1516932300000, 0.00254309, 0.0025634, 0.00254309, 0.00256335, 9.66648372], [1516932360000, 0.00254309, 0.00254309, 0.00254288, 0.002543, 65.7335411], [1516932420000, 0.00256194, 0.00256194, 0.00254309, 0.00256192, 23.88166139], [1516932480000, 0.00256192, 0.00256194, 0.00255251, 0.00255251, 71.66490374], [1516932540000, 0.00255251, 0.00255251, 0.0025525, 0.00255251, 76.75251359], [1516932600000, 0.00255251, 0.00256294, 0.00254316, 0.00254316, 92.562324], [1516932660000, 0.00256294, 0.00256294, 0.00255268, 0.00256293, 5.201514], [1516932720000, 0.00256293, 0.00256293, 0.00256293, 0.00256293, 58.47371208], [1516932780000, 0.00255268, 0.00256293, 0.00255268, 0.00256293, 91.50352835], [1516932840000, 0.00256293, 0.00256293, 0.00256293, 0.00256293, 11.21646267], [1516932900000, 0.00256293, 0.00256293, 0.0025431, 0.0025431, 35.69795025], [1516932960000, 0.00254309, 0.00256291, 0.00254309, 0.00256291, 99.68138514], [1516933020000, 0.00254309, 0.00256291, 0.00254309, 0.00255, 36.70647254], [1516933080000, 0.0025431, 0.00255, 0.00254309, 0.00255, 123.09292828], [1516933140000, 0.00255, 0.00255, 0.00255, 0.00255, 90.8527818], [1516933200000, 0.00255, 0.00255, 0.00255, 0.00255, 188.98458784], [1516933260000, 0.00255, 0.00255, 0.00255, 0.00255, 1.82364906], [1516933320000, 0.00255, 0.00255, 0.00254655, 0.00254826, 71.5348284], [1516933380000, 0.00254826, 0.00254826, 0.00254655, 0.00254826, 140.74408025], [1516933440000, 0.00254654, 0.00254826, 0.00254309, 0.00254309, 77.79285774], [1516933500000, 0.00254826, 0.00254826, 0.00254288, 0.00254826, 39.98809321], [1516933560000, 0.00254288, 0.00254826, 0.00254019, 0.00254826, 187.13497168], [1516933620000, 0.00254325, 0.0025583, 0.00254325, 0.0025583, 96.39330875], [1516933680000, 0.00254575, 0.00254836, 0.0025402, 0.00254836, 4.42188256], [1516933740000, 0.00254836, 0.00255807, 0.00254274, 0.00255784, 125.99509613], [1516933800000, 0.0025509, 0.00256256, 0.00254274, 0.0025509, 24.29908953], [1516933860000, 0.00256226, 0.00256226, 0.0025509, 0.00256215, 82.01117986], [1516933920000, 0.00256215, 0.00256215, 0.00254274, 0.00254274, 79.4159072], [1516933980000, 0.00256135, 0.00256135, 0.00256135, 0.00256135, 24.25861381], [1516934040000, 0.0025613, 0.0025613, 0.00254374, 0.00254374, 80.34990375], [1516934100000, 0.00254374, 0.00256124, 0.00254374, 0.00255, 46.12474038], [1516934160000, 0.00255, 0.00255254, 0.00254374, 0.00254374, 40.22076265], [1516934220000, 0.00256107, 0.00256108, 0.00254374, 0.00256105, 27.55334271], [1516934280000, 0.00255239, 0.00256093, 0.00255239, 0.00256093, 5.88004909], [1516934340000, 0.00256089, 0.00256089, 0.00254374, 0.00254374, 1.84077183], [1516934400000, 0.00254374, 0.00254374, 0.00254275, 0.00254374, 160.57099085], [1516934460000, 0.00256082, 0.00256082, 0.00256079, 0.00256079, 5.73196661], [1516934580000, 0.00256076, 0.00256076, 0.00256076, 0.00256076, 47.47673385], [1516934640000, 0.00256072, 0.00256072, 0.00256064, 0.00256064, 26.56207287], [1516934700000, 0.00255829, 0.00255829, 0.00254276, 0.00255824, 42.36007618], [1516934760000, 0.0025428, 0.00255824, 0.0025428, 0.0025428, 32.88648241], [1516934820000, 0.0025428, 0.0025428, 0.0025428, 0.0025428, 0.60604136], [1516934880000, 0.00254293, 0.00254293, 0.00254274, 0.00254274, 187.012749], [1516934940000, 0.00255398, 0.00255398, 0.0025405, 0.00254368, 34.43893464], [1516935000000, 0.00254019, 0.00254368, 0.00253939, 0.00253939, 292.83182401], [1516935060000, 0.00253939, 0.00253939, 0.00253939, 0.00253939, 408.64041774], [1516935120000, 0.00253939, 0.00253939, 0.00253, 0.00253718, 295.08924691], [1516935180000, 0.00253718, 0.0025499, 0.00253, 0.0025499, 38.16259618], [1516935240000, 0.00253765, 0.00254984, 0.00253718, 0.0025399, 6.53373845], [1516935300000, 0.0025399, 0.00254983, 0.00253001, 0.00254983, 8.10281343], [1516935360000, 0.00253001, 0.00253001, 0.00252782, 0.00253, 287.74396024], [1516935420000, 0.00253, 0.00253, 0.002528, 0.002529, 394.55776694], [1516935480000, 0.002529, 0.00253, 0.002529, 0.00252995, 19.76442919], [1516935540000, 0.00252995, 0.00252999, 0.00252602, 0.002528, 818.92873773], [1516935600000, 0.00252999, 0.00253, 0.0025265, 0.00253, 321.33134051], [1516935660000, 0.00253, 0.00253, 0.00252577, 0.00252577, 132.01525551], [1516935720000, 0.00253, 0.00254264, 0.00252281, 0.00254264, 480.99816816], [1516935780000, 0.00253, 0.0025494, 0.00253, 0.00254264, 19.52619061], [1516935840000, 0.00254917, 0.00254917, 0.00253, 0.00253001, 109.09579747], [1516935900000, 0.00253001, 0.00254899, 0.00253001, 0.00253001, 106.7560367], [1516935960000, 0.00254868, 0.00254894, 0.00254868, 0.00254894, 1.88251798], [1516936020000, 0.00254892, 0.00254892, 0.00254892, 0.00254892, 2.00084741], [1516936080000, 0.00254891, 0.00254891, 0.0025301, 0.00254891, 77.0663817], [1516936140000, 0.0025489, 0.0025489, 0.0025301, 0.00254889, 83.86063053], [1516936200000, 0.00253041, 0.00253041, 0.00253041, 0.00253041, 58.68342273], [1516936260000, 0.0025488, 0.0025488, 0.002542, 0.002542, 30.98201968], [1516936320000, 0.002542, 0.002542, 0.002542, 0.002542, 91.66892773], [1516936380000, 0.002542, 0.002542, 0.00253862, 0.00253862, 17.46145651], [1516936440000, 0.00253861, 0.00253861, 0.00253861, 0.00253861, 32.9729657], [1516936500000, 0.00253861, 0.00254881, 0.00253861, 0.00254881, 28.53489471], [1516936560000, 0.0025488, 0.0025488, 0.0025488, 0.0025488, 0.26566227], [1516936620000, 0.0025488, 0.0025488, 0.0025488, 0.0025488, 58.8512241], [1516936680000, 0.00254201, 0.00254881, 0.00254201, 0.00254881, 7.42316112], [1516936740000, 0.00254202, 0.0025488, 0.00254201, 0.0025488, 0.86510176], [1516936800000, 0.0025488, 0.00255571, 0.00254202, 0.00255564, 422.75333819], [1516936860000, 0.00255526, 0.00255526, 0.00254202, 0.00254202, 134.6450044], [1516936920000, 0.00254202, 0.00254203, 0.00254202, 0.00254202, 15.85798653], [1516936980000, 0.00255469, 0.00255469, 0.00254202, 0.00254202, 15.04655782], [1516937040000, 0.00254202, 0.0025529, 0.002542, 0.002542, 1170.21054181], [1516937100000, 0.00255207, 0.00255207, 0.002542, 0.002551, 4.76902258], [1516937160000, 0.002542, 0.00255049, 0.002542, 0.002542, 85.84156461], [1516937220000, 0.00253413, 0.00254, 0.00253002, 0.00254, 187.11852884], [1516937280000, 0.002538, 0.00254, 0.002538, 0.00254, 27.51529224], [1516937400000, 0.00253801, 0.00254001, 0.00253801, 0.00254001, 4.39], [1516937460000, 0.00255049, 0.00255049, 0.00255048, 0.00255048, 3.83485303], [1516937520000, 0.00255049, 0.00255049, 0.00255049, 0.00255049, 80.9111112], [1516937580000, 0.00255049, 0.00255049, 0.00255049, 0.00255049, 10.11323308], [1516937640000, 0.00255049, 0.00255049, 0.00255049, 0.00255049, 42.38684016], [1516937700000, 0.00255049, 0.00255049, 0.00255049, 0.00255049, 70.08271946], [1516937760000, 0.00255, 0.00255049, 0.00255, 0.00255049, 23.22389763], [1516937820000, 0.00255049, 0.0025509, 0.00255048, 0.0025509, 70.37441492], [1516937880000, 0.0025509, 0.0025509, 0.00255043, 0.00255043, 139.12314888], [1516937940000, 0.00255143, 0.00255143, 0.0025425, 0.0025425, 161.58815747], [1516938000000, 0.00255497, 0.00255497, 0.0025425, 0.0025425, 29.45430513], [1516938060000, 0.00255143, 0.00255143, 0.00255143, 0.00255143, 2.7655955], [1516938180000, 0.00255366, 0.00255497, 0.00255143, 0.00255143, 56.94773935], [1516938240000, 0.00255497, 0.00255571, 0.00255143, 0.00255143, 70.90925587], [1516938300000, 0.00255143, 0.00255571, 0.00255143, 0.00255143, 122.15741325], [1516938360000, 0.00255143, 0.00255143, 0.00255143, 0.00255143, 22.10915119], [1516938420000, 0.00255143, 0.00255143, 0.00254885, 0.00254885, 34.22027224], [1516938480000, 0.00254885, 0.00255143, 0.00254885, 0.00255143, 16.91113988], [1516938600000, 0.0025514, 0.00255143, 0.0025514, 0.00255143, 111.43787018], [1516938660000, 0.00255143, 0.00255143, 0.00255143, 0.00255143, 135.27868099], [1516938720000, 0.00254885, 0.00254885, 0.00254885, 0.00254885, 97.58919998], [1516938780000, 0.00254885, 0.00255571, 0.00254885, 0.00255143, 2434.83014616], [1516938840000, 0.00255571, 0.00255571, 0.00255143, 0.00255143, 227.42110272], [1516938900000, 0.00255514, 0.00255514, 0.00255514, 0.00255514, 11.47169811], [1516938960000, 0.00255571, 0.00255571, 0.00255145, 0.00255145, 7.17624169], [1516939020000, 0.00255571, 0.00255571, 0.00255146, 0.0025557, 76.45495594], [1516939080000, 0.0025557, 0.0025557, 0.00255146, 0.00255146, 723.40664394], [1516939140000, 0.0025557, 0.00255571, 0.0025557, 0.00255571, 13.23815552], [1516939200000, 0.0025557, 0.00255571, 0.00255146, 0.00255571, 322.68109461], [1516939260000, 0.00255146, 0.00255571, 0.00255146, 0.00255146, 13.76336376], [1516939320000, 0.00255146, 0.00255146, 0.00255146, 0.00255146, 10.57372817], [1516939380000, 0.00255146, 0.0025557, 0.00255146, 0.00255146, 12.02435767], [1516939440000, 0.00255146, 0.00255146, 0.00255146, 0.00255146, 34.31246459], [1516939500000, 0.00255146, 0.00255571, 0.00255146, 0.00255146, 30.68314127], [1516939560000, 0.00255146, 0.00255146, 0.00255146, 0.00255146, 15.79367607], [1516939620000, 0.00255146, 0.00256031, 0.00255146, 0.0025603, 123.48267172], [1516939740000, 0.00255147, 0.00255147, 0.00255147, 0.00255147, 0.43210554], [1516939800000, 0.00255147, 0.00256013, 0.00255147, 0.00256006, 51.3818077], [1516939860000, 0.00256006, 0.00256544, 0.00256006, 0.00256544, 86.07496316], [1516939920000, 0.00256006, 0.00256544, 0.00255143, 0.00255143, 661.00395782], [1516939980000, 0.00255143, 0.00255146, 0.00255143, 0.00255146, 79.29786461], [1516940040000, 0.00255143, 0.00255146, 0.00255143, 0.00255146, 7.0], [1516940100000, 0.00255146, 0.00255146, 0.00255143, 0.00255143, 43.54468146], [1516940160000, 0.00255146, 0.00255146, 0.00255143, 0.00255143, 107.07414599], [1516940220000, 0.00255143, 0.00255143, 0.00255143, 0.00255143, 77.61530142], [1516940280000, 0.00255143, 0.00255146, 0.00255143, 0.00255143, 439.68911757], [1516940340000, 0.00255143, 0.00255146, 0.00255143, 0.00255146, 23.33614541], [1516940400000, 0.00255144, 0.00255146, 0.0025514, 0.00255146, 282.75118999], [1516940460000, 0.0025514, 0.00255146, 0.0025514, 0.00255146, 38.61038747], [1516940520000, 0.00255145, 0.00255146, 0.00255145, 0.00255146, 3.10267011], [1516940580000, 0.00255143, 0.00255146, 0.00254302, 0.00255146, 243.64724232], [1516940640000, 0.00255146, 0.00255146, 0.00254302, 0.00255146, 21.04677288], [1516940700000, 0.00255146, 0.00255146, 0.00255146, 0.00255146, 89.95431342], [1516940820000, 0.00255143, 0.00255143, 0.00254302, 0.00255143, 41.00859292], [1516940880000, 0.00254303, 0.00254303, 0.00254303, 0.00254303, 30.0], [1516940940000, 0.00254304, 0.00255143, 0.00254304, 0.00255143, 48.15471535], [1516941000000, 0.00255143, 0.00255143, 0.00255143, 0.00255143, 20.88519497], [1516941060000, 0.00255143, 0.00255143, 0.00255143, 0.00255143, 258.91396385], [1516941120000, 0.00254306, 0.00254306, 0.00254302, 0.00254302, 319.18301218], [1516941180000, 0.00255143, 0.00255143, 0.00255141, 0.00255143, 237.02745158], [1516941240000, 0.00255143, 0.00255143, 0.00255143, 0.00255143, 691.01800404], [1516941300000, 0.00255143, 0.002559, 0.00255143, 0.002559, 5.36563877], [1516941360000, 0.00255143, 0.00256553, 0.00255143, 0.00256553, 110.21381485], [1516941420000, 0.00256123, 0.00256552, 0.00256123, 0.00256123, 169.57128737], [1516941480000, 0.00256123, 0.00256124, 0.0025515, 0.0025515, 326.7818114], [1516941540000, 0.00256171, 0.00256558, 0.00255866, 0.00255866, 2.63829251], [1516941600000, 0.00255866, 0.00255867, 0.00255866, 0.00255867, 1.09024452], [1516941780000, 0.00255867, 0.00255867, 0.00255867, 0.00255867, 142.87548486], [1516941900000, 0.00256558, 0.00256558, 0.00255951, 0.00255951, 4.69691587], [1516941960000, 0.0025595, 0.0025595, 0.00255868, 0.00255868, 12.76251737], [1516942020000, 0.00255868, 0.00255868, 0.00255868, 0.00255868, 5.24463671], [1516942080000, 0.00255868, 0.002562, 0.00255868, 0.002562, 10.00569305], [1516942140000, 0.002562, 0.002562, 0.00255868, 0.00255868, 0.66611074], [1516942200000, 0.00255868, 0.00256558, 0.00255868, 0.00256558, 4.32867073], [1516942380000, 0.00255868, 0.00255868, 0.00255867, 0.00255867, 56.74527088], [1516942440000, 0.00255867, 0.00255867, 0.00255867, 0.00255867, 17.95324565], [1516942500000, 0.00255868, 0.00256558, 0.00255868, 0.00256095, 74.26126171], [1516942560000, 0.00256095, 0.00257332, 0.00256095, 0.00257332, 147.23484786], [1516942680000, 0.00257325, 0.00257325, 0.00257325, 0.00257325, 8.7701649], [1516942740000, 0.0025587, 0.0025587, 0.00255868, 0.00255868, 101.0], [1516942800000, 0.0025587, 0.0025587, 0.00255868, 0.0025587, 14.08531224], [1516942860000, 0.00255868, 0.0025587, 0.00255868, 0.00255868, 435.18978569], [1516942920000, 0.00255868, 0.0025587, 0.00255868, 0.0025587, 2.65837089], [1516942980000, 0.00255869, 0.0025587, 0.00255869, 0.0025587, 70.27499444], [1516943040000, 0.00255869, 0.00255869, 0.00255868, 0.00255868, 32.79752993], [1516943100000, 0.00255868, 0.00255875, 0.00255868, 0.0025587, 211.04325893], [1516943220000, 0.00255871, 0.00255871, 0.0025587, 0.0025587, 1.86176406], [1516943280000, 0.0025587, 0.0025587, 0.0025587, 0.0025587, 0.43088287], [1516943340000, 0.0025587, 0.00255876, 0.0025587, 0.00255876, 54.67448431], [1516943400000, 0.0025587, 0.00257314, 0.0025587, 0.00255871, 22.26281518], [1516943460000, 0.00257311, 0.00257311, 0.00255871, 0.00257276, 242.55398825], [1516943520000, 0.00255871, 0.00255871, 0.00255871, 0.00255871, 8.58645745], [1516943580000, 0.00257275, 0.00257275, 0.00257275, 0.00257275, 73.12750926], [1516943640000, 0.00257274, 0.00257275, 0.0025587, 0.0025587, 131.53787763], [1516943700000, 0.00255871, 0.00257276, 0.00255871, 0.00257275, 48.34788392], [1516943760000, 0.00256573, 0.00256573, 0.0025587, 0.0025587, 39.86570116], [1516943820000, 0.00255871, 0.00255873, 0.00255871, 0.00255873, 12.54138192], [1516943880000, 0.00256572, 0.00257275, 0.00255872, 0.00255872, 78.94606448], [1516943940000, 0.00256573, 0.00257276, 0.00255872, 0.00256572, 139.27078834], [1516944000000, 0.00256572, 0.00256572, 0.00256572, 0.00256572, 31.5289291], [1516944060000, 0.00256572, 0.00256572, 0.0025587, 0.0025587, 463.09575589], [1516944120000, 0.0025587, 0.0025588, 0.0025587, 0.0025588, 10.58916366], [1516944180000, 0.00257276, 0.00257276, 0.00257276, 0.00257276, 1.85942736], [1516944300000, 0.00257276, 0.00257277, 0.00257276, 0.00257277, 42.55198332], [1516944360000, 0.002559, 0.002559, 0.002559, 0.002559, 3.28777526], [1516944420000, 0.002559, 0.002559, 0.0025588, 0.0025588, 160.46244478], [1516944480000, 0.0025588, 0.0025588, 0.0025588, 0.0025588, 336.00935049], [1516944540000, 0.00257303, 0.00257303, 0.0025588, 0.0025588, 27.36706532], [1516944600000, 0.00255881, 0.00255881, 0.00255881, 0.00255881, 8.09747906], [1516944660000, 0.00255881, 0.00255881, 0.0025588, 0.0025588, 1016.88050218], [1516944720000, 0.0025588, 0.00257187, 0.0025588, 0.00257187, 44.06740404], [1516944780000, 0.00256, 0.00256, 0.0025587, 0.0025587, 533.24944824], [1516944840000, 0.0025587, 0.00257332, 0.0025587, 0.0025587, 28.95741846], [1516944900000, 0.0025587, 0.0025587, 0.00255867, 0.00255867, 346.68237223], [1516944960000, 0.00255867, 0.00255867, 0.00255867, 0.00255867, 127.38882824], [1516945020000, 0.00255867, 0.00255869, 0.00255867, 0.00255867, 216.8120077], [1516945080000, 0.00255867, 0.00255868, 0.00255867, 0.00255867, 159.58508656], [1516945140000, 0.00255867, 0.00255867, 0.00255867, 0.00255867, 5.86177584], [1516945200000, 0.00255867, 0.00255868, 0.00255867, 0.00255867, 47.83608712], [1516945260000, 0.00255867, 0.00255868, 0.00255867, 0.00255868, 18.0915708], [1516945320000, 0.00255868, 0.00255868, 0.00255868, 0.00255868, 47.0167], [1516945380000, 0.00255868, 0.00255868, 0.00255868, 0.00255868, 56.07076317], [1516945440000, 0.00255868, 0.00255868, 0.00255868, 0.00255868, 12.61587248], [1516945500000, 0.00255868, 0.00255868, 0.00255868, 0.00255868, 14.17507066], [1516945560000, 0.00255865, 0.00255865, 0.00255865, 0.00255865, 1.4112297], [1516945620000, 0.00255868, 0.00255868, 0.00255369, 0.00255369, 48.21871194], [1516945680000, 0.00255168, 0.00255168, 0.00255146, 0.00255146, 155.67043471], [1516945740000, 0.00255866, 0.00255867, 0.0025425, 0.0025425, 274.33459917], [1516945800000, 0.0025426, 0.0025426, 0.0025426, 0.0025426, 7.8856], [1516945860000, 0.0025426, 0.00255867, 0.0025426, 0.00255867, 40.3373066], [1516945920000, 0.00255862, 0.00255862, 0.00254002, 0.00254002, 91.32070183], [1516945980000, 0.00254002, 0.0025426, 0.00254002, 0.0025426, 32.50200037], [1516946040000, 0.00254002, 0.0025426, 0.00254002, 0.00254259, 29.40121205], [1516946100000, 0.00254002, 0.00254259, 0.00254002, 0.00254259, 7.995925], [1516946160000, 0.00254129, 0.00254129, 0.00254, 0.00254, 41.35754884], [1516946220000, 0.0025413, 0.0025413, 0.002538, 0.00254, 87.56588402], [1516946280000, 0.002538, 0.002538, 0.00253409, 0.00253409, 45.23991332], [1516946340000, 0.0025341, 0.0025413, 0.00253409, 0.0025413, 102.63484462], [1516946400000, 0.0025413, 0.0025413, 0.00253409, 0.00253409, 14.42898342], [1516946460000, 0.00254129, 0.00254129, 0.002538, 0.002538, 72.16755455], [1516946520000, 0.002538, 0.002538, 0.00253409, 0.00253409, 12.57005136], [1516946580000, 0.002538, 0.002538, 0.002538, 0.002538, 44.22433598], [1516946640000, 0.0025413, 0.0025413, 0.0025413, 0.0025413, 39.3388575], [1516946700000, 0.0025412, 0.0025412, 0.002538, 0.00254119, 118.93481854], [1516946760000, 0.00254119, 0.00254119, 0.00254119, 0.00254119, 25.26538089], [1516946820000, 0.00254119, 0.00254119, 0.00253805, 0.00254119, 90.64084299], [1516946880000, 0.00254119, 0.00254119, 0.00253805, 0.00253805, 413.54526567], [1516946940000, 0.00254, 0.00254, 0.00253806, 0.00253806, 20.48152141], [1516947000000, 0.00253806, 0.0025426, 0.00253806, 0.00253806, 32.40735697], [1516947060000, 0.00253807, 0.00255786, 0.00253806, 0.0025381, 241.46824524], [1516947120000, 0.00253825, 0.00255784, 0.00253825, 0.00255784, 60.32244064], [1516947180000, 0.00253848, 0.00253848, 0.00253847, 0.00253847, 101.95826893], [1516947240000, 0.002539, 0.00255786, 0.002539, 0.00255786, 2.71988754], [1516947300000, 0.002539, 0.002539, 0.00253805, 0.002539, 611.4125918], [1516947360000, 0.002539, 0.00255697, 0.00253177, 0.00255676, 93.06176629], [1516947420000, 0.0025565, 0.0025565, 0.00253178, 0.00253178, 111.08263344], [1516947480000, 0.0025557, 0.0025557, 0.0025557, 0.0025557, 100.37630826], [1516947540000, 0.0025552, 0.0025552, 0.0025552, 0.0025552, 26.8782518], [1516947600000, 0.00253179, 0.00255442, 0.00253179, 0.00255442, 137.86905635], [1516947660000, 0.00253204, 0.00253204, 0.00253177, 0.00253177, 277.17653193], [1516947720000, 0.00255344, 0.00255344, 0.00253027, 0.00253027, 46.3541436], [1516947840000, 0.00255, 0.00255, 0.00253179, 0.00255, 180.74256298], [1516947900000, 0.00255, 0.00255, 0.00255, 0.00255, 8.86094289], [1516947960000, 0.00255, 0.00255, 0.00254999, 0.00254999, 5.36233459], [1516948140000, 0.00254999, 0.00254999, 0.00253179, 0.0025319, 310.45380903], [1516948200000, 0.0025499, 0.00254999, 0.0025499, 0.00254999, 4.1574368], [1516948260000, 0.00253193, 0.00254999, 0.00253193, 0.00254999, 131.9527412], [1516948320000, 0.002549, 0.002549, 0.00254094, 0.002549, 6.60678749], [1516948380000, 0.00254094, 0.002549, 0.00254094, 0.002549, 19.26882399], [1516948440000, 0.00254094, 0.002549, 0.00254094, 0.002549, 2.09122392], [1516948500000, 0.002549, 0.002549, 0.002549, 0.002549, 32.00218757], [1516948560000, 0.002549, 0.002549, 0.00254094, 0.00254094, 23.6878163], [1516948620000, 0.00254, 0.00254094, 0.00254, 0.00254094, 12.83926321], [1516948680000, 0.00254094, 0.00254094, 0.00254, 0.00254, 33.84651411], [1516948740000, 0.00254, 0.00254094, 0.00253566, 0.00254093, 187.89253471], [1516948800000, 0.00253446, 0.00254094, 0.00253446, 0.00253446, 36.88402379], [1516948860000, 0.00253446, 0.00254, 0.00253346, 0.00254, 6.52398676], [1516948920000, 0.00254, 0.00254, 0.00254, 0.00254, 20.48243175], [1516948980000, 0.00254, 0.00254094, 0.00254, 0.00254094, 1581.91967248], [1516949040000, 0.002549, 0.002549, 0.00254094, 0.00254094, 4.25296251], [1516949220000, 0.00254094, 0.00254094, 0.00254094, 0.00254094, 10.0], [1516949280000, 0.00254094, 0.00254094, 0.00254094, 0.00254094, 11.73743179], [1516949340000, 0.00254094, 0.00254899, 0.00254094, 0.00254899, 47.03771617], [1516949400000, 0.00254094, 0.002549, 0.00254094, 0.002549, 136.08309419], [1516949460000, 0.00254094, 0.002545, 0.00254093, 0.00254093, 71.21295409], [1516949520000, 0.00254094, 0.00254094, 0.00254094, 0.00254094, 31.63680906], [1516949580000, 0.002549, 0.002549, 0.00253346, 0.00253346, 159.0494098], [1516949640000, 0.0025488, 0.002549, 0.00253347, 0.00253347, 32.67682402], [1516949760000, 0.00253347, 0.00255, 0.00253347, 0.00255, 136.38373773], [1516949820000, 0.00255, 0.00255, 0.002549, 0.002549, 202.25523031], [1516949880000, 0.00254901, 0.00254901, 0.002549, 0.002549, 3.63720665], [1516949940000, 0.002549, 0.00254901, 0.002549, 0.00254901, 2.76950708], [1516950000000, 0.00254901, 0.00255, 0.00254901, 0.00255, 4.78661034], [1516950060000, 0.00254901, 0.00254901, 0.002549, 0.002549, 715.44884111], [1516950120000, 0.002549, 0.00255, 0.002549, 0.002549, 34.99290591], [1516950180000, 0.00254909, 0.00254999, 0.00254901, 0.00254999, 135.16036846], [1516950240000, 0.00254999, 0.00254999, 0.00254901, 0.00254901, 50.86470928], [1516950300000, 0.00255, 0.00255, 0.00254901, 0.00254901, 88.8262924], [1516950360000, 0.00254901, 0.00254901, 0.002549, 0.002549, 322.66451251], [1516950420000, 0.002549, 0.002549, 0.002549, 0.002549, 355.60237089], [1516950480000, 0.002549, 0.00255, 0.002549, 0.00255, 227.77727852], [1516950540000, 0.002549, 0.002549, 0.002549, 0.002549, 194.84227527], [1516950600000, 0.00254901, 0.00254901, 0.00254901, 0.00254901, 54.24401842], [1516950660000, 0.00254901, 0.00255, 0.002549, 0.002549, 530.76762369], [1516950720000, 0.002549, 0.00255, 0.002549, 0.00255, 590.459032], [1516950780000, 0.002549, 0.002549, 0.002549, 0.002549, 12.59163052], [1516950840000, 0.002549, 0.002549, 0.00254, 0.00254, 48.11934532], [1516950900000, 0.002548, 0.00254895, 0.002548, 0.00254895, 7.84929356], [1516950960000, 0.00254, 0.00254, 0.00254, 0.00254, 2.00056764], [1516951020000, 0.00254, 0.00254, 0.0025318, 0.0025318, 338.32453906], [1516951080000, 0.00254, 0.00254, 0.0025318, 0.0025318, 376.40843296], [1516951140000, 0.00253999, 0.00253999, 0.00253999, 0.00253999, 15.26695015], [1516951200000, 0.00254, 0.00254894, 0.00253999, 0.00254893, 51.97235851], [1516951260000, 0.00254893, 0.00254894, 0.00253999, 0.00254893, 141.62001916], [1516951320000, 0.00253999, 0.00254892, 0.00253078, 0.00253078, 1333.74138809], [1516951500000, 0.00253999, 0.00253999, 0.00253999, 0.00253999, 6.96232638], [1516951560000, 0.00253075, 0.00253898, 0.0025295, 0.00253, 463.33794552], [1516951620000, 0.00253, 0.00253, 0.0025282, 0.00253, 248.59302705], [1516951680000, 0.00253, 0.00253, 0.00252999, 0.00253, 93.26728966], [1516951740000, 0.00253, 0.00253, 0.0025215, 0.00253, 122.48722651], [1516951800000, 0.00253, 0.00253, 0.0025215, 0.0025215, 223.27859741], [1516951860000, 0.0025215, 0.00252999, 0.00252139, 0.00252139, 569.97817797], [1516951920000, 0.00252139, 0.00253, 0.00252139, 0.00253, 96.42764355], [1516951980000, 0.00253, 0.00253, 0.00253, 0.00253, 9.97263755], [1516952040000, 0.00252381, 0.00252381, 0.0025215, 0.0025215, 303.38232271], [1516952100000, 0.00252999, 0.00252999, 0.00252999, 0.00252999, 3.95258479], [1516952160000, 0.00252999, 0.00252999, 0.00252139, 0.00252999, 223.10834514], [1516952220000, 0.00252999, 0.00253, 0.00252999, 0.00252999, 442.27250499], [1516952280000, 0.00252999, 0.00253, 0.00252139, 0.00252139, 2242.50231245], [1516952340000, 0.00252999, 0.00252999, 0.00252013, 0.00252998, 99.73265497], [1516952400000, 0.00252998, 0.00252999, 0.00252001, 0.00252757, 18.42784368], [1516952460000, 0.00252757, 0.00252998, 0.00252001, 0.00252998, 9.26648969], [1516952520000, 0.00252999, 0.00253, 0.00252999, 0.00253, 82.60933597], [1516952580000, 0.00252999, 0.00252999, 0.0025299, 0.00252999, 15.7916261], [1516952640000, 0.00253, 0.00253873, 0.00253, 0.00253873, 66.7740588], [1516952700000, 0.0025387, 0.00253998, 0.00252999, 0.00253872, 48.74747323], [1516952760000, 0.00253996, 0.00253996, 0.002521, 0.002521, 89.37045424], [1516952820000, 0.00253999, 0.00253999, 0.00252102, 0.00252102, 509.61591037], [1516952880000, 0.00252102, 0.0025399, 0.00252102, 0.00252102, 455.42592841], [1516952940000, 0.00252111, 0.0025399, 0.00252111, 0.0025399, 97.29186222], [1516953000000, 0.00253989, 0.00253989, 0.00253977, 0.00253977, 30.02284135], [1516953060000, 0.00253968, 0.00253968, 0.00253498, 0.00253498, 3.58408131], [1516953120000, 0.00253499, 0.00253499, 0.002533, 0.002533, 18.51525752], [1516953180000, 0.002533, 0.002533, 0.002533, 0.002533, 13.57360365], [1516953240000, 0.002533, 0.002533, 0.00252118, 0.00252118, 36.58912554], [1516953300000, 0.00253299, 0.002535, 0.00252121, 0.00252123, 496.28017761], [1516953360000, 0.00253299, 0.00253299, 0.00253299, 0.00253299, 8.63453349], [1516953420000, 0.00253299, 0.00253299, 0.00252123, 0.00252126, 131.68843598], [1516953480000, 0.00253299, 0.00253299, 0.00252129, 0.00253299, 73.88393754], [1516953540000, 0.00253299, 0.00253299, 0.00252201, 0.00253299, 126.38295602], [1516953600000, 0.00253299, 0.00253299, 0.00253199, 0.00253199, 61.19513054], [1516953660000, 0.00253199, 0.00253199, 0.00253, 0.00253199, 15.71949096], [1516953720000, 0.00253199, 0.00253199, 0.00253199, 0.00253199, 13.27896964], [1516953780000, 0.00252209, 0.00252209, 0.00252209, 0.00252209, 7.59873804], [1516953840000, 0.00252209, 0.00252209, 0.00252208, 0.00252208, 498.05299256], [1516953900000, 0.00252208, 0.00252208, 0.00252202, 0.00252208, 499.93023394], [1516953960000, 0.00252202, 0.00252208, 0.00252202, 0.00252208, 857.4821681], [1516954020000, 0.00252203, 0.00252208, 0.00252202, 0.00252208, 375.97753659], [1516954080000, 0.00252206, 0.00252208, 0.00252203, 0.00252208, 597.58556358], [1516954140000, 0.00252203, 0.00253196, 0.00252203, 0.00253196, 123.87237735], [1516954200000, 0.00252208, 0.00252999, 0.00252001, 0.00252001, 1204.76966974], [1516954260000, 0.00252001, 0.00252993, 0.00251767, 0.00252952, 1340.91086977], [1516954320000, 0.00252951, 0.00252951, 0.002517, 0.002517, 461.77745994], [1516954380000, 0.002517, 0.00251767, 0.00251481, 0.00251481, 291.51990906], [1516954440000, 0.00251481, 0.00253299, 0.00251249, 0.0025328, 1575.76257516], [1516954500000, 0.00252688, 0.00253274, 0.00251252, 0.00253238, 888.59976758], [1516954560000, 0.00251249, 0.00253298, 0.002511, 0.00251253, 436.12195834], [1516954620000, 0.00253298, 0.00253299, 0.002511, 0.00253297, 1619.60718428], [1516954680000, 0.00253297, 0.00253297, 0.002511, 0.002511, 219.73920172], [1516954740000, 0.00253294, 0.00253295, 0.00253, 0.00253, 42.29680804], [1516954800000, 0.002511, 0.00252999, 0.002511, 0.002511, 640.49926851], [1516954860000, 0.00251069, 0.00252996, 0.002506, 0.00252995, 542.91087787], [1516954920000, 0.00252995, 0.00252995, 0.00250669, 0.00252704, 84.6128016], [1516954980000, 0.00253, 0.00253296, 0.00253, 0.00253296, 202.49257171], [1516955040000, 0.00253296, 0.00253296, 0.002517, 0.00253126, 1732.32023249], [1516955100000, 0.00253126, 0.00253296, 0.00251776, 0.00253296, 648.36959958], [1516955160000, 0.00253296, 0.00253546, 0.00251205, 0.00253299, 1143.79307475], [1516955220000, 0.00253299, 0.00253997, 0.00250601, 0.00253977, 1069.39138015], [1516955280000, 0.00251609, 0.00251609, 0.00250111, 0.00251609, 1415.33572263], [1516955340000, 0.00250113, 0.00251609, 0.00250112, 0.00250113, 175.06328034], [1516955400000, 0.00250113, 0.00251606, 0.00250113, 0.00251604, 187.99494897], [1516955460000, 0.00251604, 0.00251609, 0.00250113, 0.00251609, 1264.32190931], [1516955520000, 0.00251609, 0.00251609, 0.00250217, 0.00251608, 655.52656948], [1516955580000, 0.00251597, 0.00251609, 0.00250236, 0.00251596, 428.24131083], [1516955640000, 0.00251596, 0.00251596, 0.00250999, 0.00251596, 374.58030119], [1516955700000, 0.00251596, 0.00251596, 0.00250305, 0.00250997, 1150.33240115], [1516955760000, 0.00250997, 0.00251609, 0.00250986, 0.00251609, 878.53907626], [1516955820000, 0.00250367, 0.00251609, 0.00250367, 0.0025041, 269.81941454], [1516955880000, 0.00251607, 0.00251607, 0.00250412, 0.00250413, 687.47335201], [1516955940000, 0.00251607, 0.00251609, 0.00250413, 0.00251609, 1681.01285387], [1516956000000, 0.00251609, 0.0025337, 0.00251609, 0.0025337, 90.30824205], [1516956060000, 0.00253352, 0.00253352, 0.00253, 0.00253352, 319.10154494], [1516956120000, 0.00253352, 0.00253352, 0.00252301, 0.00253336, 1168.20701627], [1516956180000, 0.00252999, 0.00253352, 0.0025234, 0.00253, 144.45426986], [1516956240000, 0.00253, 0.00253352, 0.00252303, 0.00252337, 211.44840181], [1516956300000, 0.00253344, 0.00253344, 0.00252303, 0.00252578, 1073.70370833], [1516956360000, 0.00252578, 0.00252578, 0.00251013, 0.00252578, 749.72519611], [1516956420000, 0.00252157, 0.00252157, 0.0025101, 0.00252157, 219.95842708], [1516956480000, 0.00252157, 0.00252578, 0.00252157, 0.00252578, 538.45993121], [1516956540000, 0.00252578, 0.0025337, 0.00252578, 0.0025337, 1469.04681918], [1516956600000, 0.00253364, 0.00253999, 0.00251034, 0.00253999, 325.41731307], [1516956660000, 0.00253998, 0.00253999, 0.00253998, 0.00253999, 114.05298111], [1516956720000, 0.00254, 0.00254, 0.00252002, 0.00252002, 2127.02633697], [1516956780000, 0.00254264, 0.00254897, 0.00253264, 0.00253264, 27.6686153], [1516956840000, 0.002535, 0.00254888, 0.002529, 0.00254888, 307.39005145], [1516956900000, 0.00254892, 0.00254892, 0.00254888, 0.00254892, 13.49597355], [1516956960000, 0.00254892, 0.00254892, 0.002529, 0.0025489, 44.54601801], [1516957020000, 0.00254, 0.0025489, 0.00254, 0.00254885, 24.95488237], [1516957080000, 0.00254885, 0.00254885, 0.00254885, 0.00254885, 37.9965538], [1516957140000, 0.00254885, 0.00254885, 0.00254, 0.00254001, 75.4438229], [1516957200000, 0.00254011, 0.00254011, 0.00254, 0.00254001, 435.92137781], [1516957260000, 0.00254001, 0.00254885, 0.00254, 0.00254, 198.59908784], [1516957320000, 0.0025402, 0.00254885, 0.0025401, 0.00254885, 195.47875541], [1516957380000, 0.00254884, 0.00254884, 0.0025402, 0.00254884, 531.02560229], [1516957440000, 0.00254884, 0.00254884, 0.00254032, 0.00254884, 156.01222334], [1516957500000, 0.00254884, 0.00254884, 0.00254033, 0.00254884, 320.21435137], [1516957560000, 0.00254884, 0.00254884, 0.00254032, 0.00254884, 1595.48935223], [1516957620000, 0.00254884, 0.00254884, 0.00252648, 0.00254884, 1469.24316902], [1516957680000, 0.00254884, 0.00254884, 0.00254828, 0.00254884, 130.83511009], [1516957740000, 0.00254884, 0.00254884, 0.00254828, 0.00254828, 71.89755047], [1516957800000, 0.00254828, 0.00254884, 0.00254828, 0.00254828, 19.14808499], [1516957860000, 0.00254828, 0.00254884, 0.00254828, 0.00254828, 1219.23776104], [1516957920000, 0.00254828, 0.00254884, 0.00254828, 0.00254884, 200.94039768], [1516957980000, 0.00254884, 0.00254884, 0.00253, 0.00254031, 206.9931271], [1516958040000, 0.00254828, 0.00254828, 0.00254031, 0.00254031, 12.04654099], [1516958100000, 0.002546, 0.002546, 0.002544, 0.00254599, 15.28354834], [1516958160000, 0.002544, 0.002544, 0.00253, 0.00253, 88.64427412], [1516958220000, 0.00253001, 0.0025455, 0.00253001, 0.00253003, 50.26252091], [1516958280000, 0.00253005, 0.002542, 0.00253005, 0.0025385, 14.18146408], [1516958340000, 0.0025385, 0.002542, 0.0025385, 0.002542, 546.75341767], [1516958400000, 0.002541, 0.002542, 0.00253016, 0.002542, 100.14495349], [1516958460000, 0.002542, 0.002542, 0.00253064, 0.00253064, 302.51462309], [1516958520000, 0.002542, 0.002542, 0.00254198, 0.002542, 281.33777495], [1516958580000, 0.002542, 0.00254884, 0.00253173, 0.00253173, 193.99194194], [1516958640000, 0.0025423, 0.00254884, 0.00253174, 0.00254884, 540.97575304], [1516958700000, 0.00254884, 0.00254884, 0.00254884, 0.00254884, 128.13580249], [1516958760000, 0.00254884, 0.00254884, 0.00253192, 0.00254884, 409.40885689], [1516958820000, 0.00254884, 0.00255, 0.00254884, 0.002549, 480.32993331], [1516958880000, 0.00254884, 0.00255215, 0.00254884, 0.00255215, 113.67276855], [1516958940000, 0.00254004, 0.00254004, 0.00254004, 0.00254004, 0.98], [1516959000000, 0.00255215, 0.00255215, 0.00255, 0.00255215, 222.21548815], [1516959060000, 0.00254006, 0.00255215, 0.00254006, 0.00255215, 326.19596613], [1516959120000, 0.00255215, 0.00255215, 0.00255215, 0.00255215, 284.69130249], [1516959180000, 0.00255215, 0.00255215, 0.00255215, 0.00255215, 211.32792478], [1516959240000, 0.00255215, 0.00255215, 0.00254057, 0.00254153, 149.80456722], [1516959300000, 0.00255215, 0.00255787, 0.00255215, 0.00255787, 982.17219579], [1516959360000, 0.00255787, 0.00255787, 0.00255787, 0.00255787, 28.29874708], [1516959420000, 0.00255787, 0.00255787, 0.00255285, 0.00255285, 87.97692551], [1516959480000, 0.00255287, 0.00256666, 0.00255285, 0.00255285, 167.55585369], [1516959540000, 0.00256666, 0.00256666, 0.00256666, 0.00256666, 0.56331696], [1516959600000, 0.002566, 0.00256666, 0.00255285, 0.002566, 72.34679686], [1516959660000, 0.002566, 0.0025666, 0.00255285, 0.00255285, 104.63625819], [1516959720000, 0.00255285, 0.00255285, 0.00255002, 0.00255017, 227.20429577], [1516959780000, 0.00255017, 0.00256594, 0.00255017, 0.00256594, 92.83684432], [1516959840000, 0.00255017, 0.00255017, 0.00254122, 0.00254122, 189.35870519], [1516959900000, 0.0025418, 0.00256592, 0.0025418, 0.00256, 181.341424], [1516959960000, 0.00254373, 0.00256592, 0.00254373, 0.00256592, 123.22137361], [1516960020000, 0.00256592, 0.002566, 0.00256592, 0.002566, 117.6601303], [1516960080000, 0.002566, 0.002566, 0.002566, 0.002566, 161.39290952], [1516960140000, 0.0025666, 0.00256666, 0.002566, 0.00256666, 456.31982075], [1516960200000, 0.00256666, 0.002572, 0.00256592, 0.00256592, 379.46676015], [1516960260000, 0.00256592, 0.00257199, 0.00255011, 0.00256818, 1238.9333877], [1516960320000, 0.00256818, 0.00256818, 0.00255137, 0.00256818, 461.71780441], [1516960380000, 0.00255356, 0.00256, 0.00255356, 0.00256, 376.76499271], [1516960440000, 0.002565, 0.00256818, 0.00254011, 0.00256817, 981.99133164], [1516960500000, 0.002554, 0.00255655, 0.00254014, 0.00255654, 326.01749853], [1516960560000, 0.00255654, 0.00255654, 0.00254032, 0.00255654, 279.93076487], [1516960620000, 0.00255653, 0.00255655, 0.0025403, 0.00254056, 633.69153201], [1516960680000, 0.00256816, 0.00256816, 0.00254123, 0.00254123, 57.92879456], [1516960740000, 0.00254151, 0.00256802, 0.00254151, 0.00255426, 264.00349096], [1516960800000, 0.00255426, 0.00256511, 0.00255426, 0.00255429, 143.75905158], [1516960860000, 0.0025651, 0.00256818, 0.00255429, 0.0025681, 139.61022231], [1516960920000, 0.0025681, 0.00256818, 0.00256511, 0.00256512, 113.85473877], [1516960980000, 0.00256511, 0.00256511, 0.00256511, 0.00256511, 7.24214217], [1516961100000, 0.00255432, 0.00255432, 0.00255431, 0.00255431, 92.51333419], [1516961160000, 0.002564, 0.002564, 0.00255431, 0.00255432, 39.25222617], [1516961220000, 0.0025543, 0.00256818, 0.0025543, 0.00255431, 1257.40131646], [1516961280000, 0.00255432, 0.00256818, 0.00255431, 0.00256818, 772.72142416], [1516961340000, 0.00256816, 0.00256816, 0.00255432, 0.00256796, 835.70947538], [1516961400000, 0.00256796, 0.00256814, 0.00256793, 0.00256793, 908.05541985], [1516961460000, 0.00256, 0.00256918, 0.00256, 0.002565, 165.90681422], [1516961520000, 0.002565, 0.0025651, 0.00256, 0.00256001, 83.87814553], [1516961580000, 0.00256002, 0.002572, 0.00256001, 0.002572, 40.44113143], [1516961640000, 0.00256002, 0.00257336, 0.00256002, 0.00256511, 8.28182489], [1516961700000, 0.00256918, 0.00257337, 0.0025601, 0.00257337, 79.7693363], [1516961760000, 0.00256918, 0.00257337, 0.00256918, 0.00257337, 42.38651079], [1516961820000, 0.00257337, 0.00257337, 0.00256017, 0.00256017, 106.78154929], [1516961880000, 0.00257337, 0.002575, 0.00257337, 0.002575, 102.06428651], [1516961940000, 0.00257337, 0.0025808, 0.00257337, 0.0025798, 237.46267266], [1516962000000, 0.0025798, 0.002581, 0.0025798, 0.00258, 187.86298993], [1516962060000, 0.00258, 0.002581, 0.00257989, 0.00257989, 234.62300368], [1516962120000, 0.00257989, 0.00258083, 0.00257989, 0.00258083, 21.9554785], [1516962180000, 0.00257989, 0.002581, 0.0025798, 0.00257989, 118.1621146], [1516962240000, 0.00257338, 0.00257989, 0.00257338, 0.00257988, 37.80134617], [1516962300000, 0.00257988, 0.00257988, 0.00257338, 0.00257338, 59.74527588], [1516962360000, 0.00257338, 0.00257965, 0.00256015, 0.00256015, 310.35054323], [1516962420000, 0.00256015, 0.00256021, 0.00256002, 0.00256002, 146.84505253], [1516962480000, 0.00257338, 0.00257338, 0.00256002, 0.00256003, 8.87965763], [1516962540000, 0.00257334, 0.00257334, 0.00257333, 0.00257333, 3.20859574], [1516962600000, 0.00257333, 0.00257333, 0.00256002, 0.0025733, 51.66251809], [1516962660000, 0.00256002, 0.00256002, 0.00256, 0.00256, 914.75102174], [1516962780000, 0.002573, 0.00257333, 0.0025651, 0.00257333, 184.85207001], [1516962840000, 0.0025651, 0.00257334, 0.0025633, 0.00257333, 26.91608057], [1516962900000, 0.00257333, 0.00257333, 0.002573, 0.002573, 67.30730486], [1516962960000, 0.002565, 0.002565, 0.0025633, 0.0025633, 3.99901468], [1516963020000, 0.0025633, 0.00257295, 0.0025633, 0.00257295, 47.95711333], [1516963080000, 0.00257295, 0.00257295, 0.00256, 0.00257199, 182.35401426], [1516963140000, 0.00257199, 0.00257199, 0.00257199, 0.00257199, 92.17926137], [1516963200000, 0.00257199, 0.00257295, 0.00256007, 0.00256008, 91.10938342], [1516963260000, 0.00257295, 0.00257295, 0.0025601, 0.00257295, 984.84628074], [1516963320000, 0.00257295, 0.00257295, 0.002565, 0.00257294, 122.86885624], [1516963380000, 0.00257294, 0.00257295, 0.00256602, 0.00257295, 695.99240561], [1516963440000, 0.00257295, 0.00257295, 0.00256, 0.00256, 607.52129467], [1516963500000, 0.002566, 0.00257295, 0.00256, 0.00257295, 185.2379052], [1516963560000, 0.00257295, 0.00257298, 0.00257294, 0.00257294, 152.06331377], [1516963620000, 0.00257294, 0.00257294, 0.00257294, 0.00257294, 3.04399469], [1516963680000, 0.00257294, 0.00257338, 0.00257001, 0.00257001, 2.48043273], [1516963740000, 0.00257001, 0.00257001, 0.00256, 0.00257001, 164.20327129], [1516963800000, 0.002573, 0.00258099, 0.002573, 0.002573, 18.95883878], [1516963860000, 0.002573, 0.00258099, 0.002573, 0.00258099, 2.76146636], [1516963920000, 0.00258099, 0.00258099, 0.002573, 0.002573, 5.91557899], [1516963980000, 0.00257001, 0.002573, 0.00257001, 0.00257001, 4.21840472], [1516964040000, 0.002573, 0.002581, 0.002573, 0.002573, 80.59421833], [1516964100000, 0.002573, 0.002573, 0.002573, 0.002573, 37.18153667], [1516964160000, 0.002573, 0.002573, 0.00257001, 0.002573, 248.19068282], [1516964220000, 0.00258099, 0.00258099, 0.00258099, 0.00258099, 5.66041204], [1516964280000, 0.002581, 0.00258135, 0.002581, 0.00258135, 9.09892305], [1516964340000, 0.00258357, 0.00258533, 0.002582, 0.002582, 188.72563883], [1516964400000, 0.00258533, 0.00258533, 0.00258099, 0.00258532, 141.14933641], [1516964460000, 0.00258, 0.00258532, 0.00257099, 0.00257099, 68.27056238], [1516964520000, 0.00257099, 0.00258, 0.00257099, 0.00258, 5.76943593], [1516964580000, 0.00258, 0.00258533, 0.00258, 0.00258533, 64.93268061], [1516964640000, 0.00258, 0.00258, 0.00258, 0.00258, 2.22772407], [1516964700000, 0.00258, 0.002587, 0.00258, 0.002587, 68.18535994], [1516964760000, 0.00258, 0.00258, 0.00257, 0.00257, 839.02054866], [1516964820000, 0.00257, 0.00258716, 0.00257, 0.00258716, 40.625423], [1516964880000, 0.00258716, 0.00258755, 0.00258716, 0.00258755, 401.77961998], [1516964940000, 0.00258755, 0.00258755, 0.00258716, 0.00258716, 105.4313582], [1516965000000, 0.00258716, 0.00258755, 0.00256714, 0.00256714, 1117.66204646], [1516965060000, 0.00256714, 0.00256714, 0.00256223, 0.00256226, 20.23613689], [1516965120000, 0.0025623, 0.00256231, 0.00256227, 0.00256231, 20.8246686], [1516965180000, 0.00258754, 0.00258754, 0.00258754, 0.00258754, 3.85501287], [1516965240000, 0.00258754, 0.00258754, 0.00256247, 0.00256247, 31.84319414], [1516965300000, 0.0025875, 0.0025875, 0.00256249, 0.00256249, 40.63003107], [1516965360000, 0.002563, 0.002587, 0.00256249, 0.002587, 58.85637878], [1516965420000, 0.00256249, 0.00256249, 0.00256249, 0.00256249, 3.20638039], [1516965480000, 0.00258699, 0.00258699, 0.00258699, 0.00258699, 2.175203], [1516965540000, 0.00258499, 0.00258499, 0.00258499, 0.00258499, 2.0], [1516965600000, 0.002584, 0.002584, 0.00257699, 0.00258391, 55.78831304], [1516965660000, 0.00257699, 0.00257699, 0.0025674, 0.00257644, 19.49998784], [1516965720000, 0.00256272, 0.00256272, 0.00256272, 0.00256272, 17.629095], [1516965780000, 0.00257643, 0.00257643, 0.00257643, 0.00257643, 19.88972249], [1516965840000, 0.00256272, 0.00257643, 0.00256231, 0.00256231, 119.04813572], [1516965900000, 0.00256231, 0.00256263, 0.00256231, 0.00256263, 1.64611969], [1516965960000, 0.00256263, 0.00256263, 0.00256232, 0.00256263, 444.90163794], [1516966020000, 0.00256263, 0.00256263, 0.00256231, 0.00256263, 392.08264462], [1516966080000, 0.00256263, 0.00256263, 0.00256263, 0.00256263, 576.49917669], [1516966140000, 0.00256263, 0.00256263, 0.00256223, 0.00256223, 116.98031968], [1516966200000, 0.00256219, 0.00256223, 0.00256219, 0.00256223, 6.582617], [1516966260000, 0.002568, 0.002568, 0.0025622, 0.0025622, 21.85421015], [1516966320000, 0.002568, 0.0025764, 0.002568, 0.002575, 44.43047108], [1516966380000, 0.002575, 0.002575, 0.002575, 0.002575, 139.71744364], [1516966440000, 0.002575, 0.002575, 0.002575, 0.002575, 199.93535447], [1516966500000, 0.002575, 0.002575, 0.00256219, 0.00256219, 273.78963123], [1516966560000, 0.00256219, 0.00256219, 0.00256219, 0.00256219, 31.74801193], [1516966620000, 0.00256665, 0.00256665, 0.00256665, 0.00256665, 0.59490758], [1516966680000, 0.0025749, 0.0025749, 0.00256665, 0.00256665, 5.63726144], [1516966800000, 0.00256665, 0.00256665, 0.00256665, 0.00256665, 11.33174163], [1516966860000, 0.00256665, 0.00257489, 0.00256665, 0.00257489, 67.28715416], [1516966920000, 0.00257489, 0.00257489, 0.00257488, 0.00257488, 2.65836092], [1516966980000, 0.00257488, 0.00257489, 0.00257488, 0.00257488, 32.92212451], [1516967040000, 0.00256665, 0.00257489, 0.00256665, 0.00257489, 40.54778992], [1516967100000, 0.0025749, 0.002575, 0.00257489, 0.0025749, 392.82040332], [1516967160000, 0.0025749, 0.0025749, 0.00257489, 0.00257489, 21.28237368], [1516967220000, 0.0025749, 0.00257499, 0.00257489, 0.00257489, 7.89552725], [1516967280000, 0.00257489, 0.00257499, 0.00256665, 0.00256665, 3.04927905], [1516967340000, 0.00256665, 0.00256665, 0.00256665, 0.00256665, 246.87914451], [1516967400000, 0.00256665, 0.00257499, 0.00256665, 0.00256666, 22.60339494], [1516967460000, 0.00256666, 0.00256666, 0.00256666, 0.00256666, 8.45909314], [1516967520000, 0.00257498, 0.00257498, 0.00256666, 0.00257496, 13.69894791], [1516967580000, 0.00256666, 0.00257496, 0.00256665, 0.00256665, 14.22486116], [1516967640000, 0.00257498, 0.00257498, 0.00256665, 0.00256666, 404.59115061], [1516967700000, 0.00256666, 0.00257487, 0.00256, 0.00257487, 394.41684399], [1516967760000, 0.00256, 0.00256, 0.00256, 0.00256, 48.50742455], [1516967820000, 0.00256, 0.00256, 0.00256, 0.00256, 4.0], [1516967880000, 0.00257288, 0.00257288, 0.00257, 0.00257287, 52.80203719], [1516968000000, 0.00257285, 0.00257285, 0.002559, 0.002559, 167.00989489], [1516968120000, 0.002559, 0.00256998, 0.002559, 0.002559, 91.93141189], [1516968180000, 0.0025596, 0.00257272, 0.002559, 0.002559, 446.82232101], [1516968240000, 0.002559, 0.002559, 0.002559, 0.002559, 20.95121951], [1516968360000, 0.00257275, 0.00257275, 0.002559, 0.00257272, 12.6189025], [1516968420000, 0.002559, 0.00257263, 0.002559, 0.00257263, 108.56401901], [1516968480000, 0.00257263, 0.00257263, 0.00255605, 0.00255605, 263.69648051], [1516968540000, 0.00257263, 0.00257263, 0.00257263, 0.00257263, 53.63981091], [1516968600000, 0.00257263, 0.00257265, 0.00257263, 0.00257265, 4.97574962], [1516968660000, 0.00257265, 0.00257265, 0.00257265, 0.00257265, 10.79556784], [1516968720000, 0.00257265, 0.00257266, 0.00257265, 0.00257266, 308.71671176], [1516968780000, 0.00257265, 0.00257265, 0.00255605, 0.00257265, 31.29151016], [1516968840000, 0.00257265, 0.00257265, 0.00257265, 0.00257265, 3.28724203], [1516968900000, 0.00257264, 0.00257265, 0.00255, 0.00257263, 1964.49443236], [1516968960000, 0.00256, 0.00256976, 0.002542, 0.00256976, 1152.3724409], [1516969020000, 0.00256974, 0.00256974, 0.00254666, 0.00256973, 213.88876497], [1516969080000, 0.00256588, 0.00256588, 0.00255227, 0.00256588, 9.23794124], [1516969140000, 0.00256588, 0.00256974, 0.00256588, 0.00256972, 39.07179952], [1516969200000, 0.00256972, 0.00256972, 0.00256588, 0.00256588, 38.44250491], [1516969260000, 0.00256588, 0.00256588, 0.00256588, 0.00256588, 0.8593543], [1516969320000, 0.00256588, 0.00256588, 0.00256588, 0.00256588, 9.72015846], [1516969380000, 0.00256972, 0.00256972, 0.00256972, 0.00256972, 2.31618526], [1516969440000, 0.00256972, 0.00256972, 0.00256588, 0.00256588, 61.17165943], [1516969500000, 0.00256588, 0.00256588, 0.00256588, 0.00256588, 16.26341171], [1516969560000, 0.00256588, 0.00256588, 0.0025523, 0.0025523, 4.40831961], [1516969620000, 0.00255232, 0.00256587, 0.00255232, 0.00256587, 330.36537556], [1516969680000, 0.00256587, 0.00256587, 0.00255232, 0.00255232, 17.75874228], [1516969740000, 0.00256587, 0.00256587, 0.00256587, 0.00256587, 6.16], [1516969800000, 0.00255351, 0.00256587, 0.00255351, 0.00256587, 169.13356992], [1516969860000, 0.00256587, 0.00256587, 0.00256586, 0.00256586, 109.43550575], [1516969920000, 0.00256586, 0.00256588, 0.00256586, 0.00256588, 212.80309654], [1516969980000, 0.00255351, 0.00255351, 0.00255232, 0.00255232, 59.67261904], [1516970040000, 0.00256588, 0.00256588, 0.00255227, 0.00256567, 598.89515083], [1516970100000, 0.00256567, 0.00256588, 0.00255926, 0.00255926, 35.30795524], [1516970160000, 0.00256588, 0.00256588, 0.00256588, 0.00256588, 2.6851], [1516970220000, 0.00256588, 0.00256588, 0.00255001, 0.00256588, 469.95710813], [1516970280000, 0.00256588, 0.00256588, 0.00256588, 0.00256588, 340.973567], [1516970340000, 0.00256588, 0.00256588, 0.00256588, 0.00256588, 4.20291824], [1516970400000, 0.00256588, 0.00256588, 0.00256588, 0.00256588, 41.90406903], [1516970520000, 0.00255348, 0.00255348, 0.00255348, 0.00255348, 81.83], [1516970580000, 0.00255348, 0.00256586, 0.00255348, 0.00256586, 274.79822975], [1516970640000, 0.00256, 0.00256, 0.00256, 0.00256, 1.46744864], [1516970700000, 0.00256031, 0.00256579, 0.00256, 0.00256579, 68.51330153], [1516970760000, 0.00256579, 0.00256579, 0.00256579, 0.00256579, 33.1135829], [1516970820000, 0.00256579, 0.00256579, 0.00256579, 0.00256579, 118.3712653], [1516970880000, 0.00256579, 0.00256579, 0.00256, 0.00256001, 113.25328577], [1516970940000, 0.00256579, 0.00256579, 0.002563, 0.00256578, 21.92667565], [1516971000000, 0.00256577, 0.00256577, 0.002563, 0.0025655, 97.66705111], [1516971060000, 0.0025655, 0.0025655, 0.00255357, 0.0025655, 119.26390125], [1516971120000, 0.0025655, 0.0025655, 0.00256549, 0.0025655, 681.17250938], [1516971180000, 0.0025655, 0.0025655, 0.0025655, 0.0025655, 19.55686252], [1516971240000, 0.00256579, 0.00256579, 0.0025655, 0.0025655, 210.02992398], [1516971300000, 0.0025655, 0.00256579, 0.0025655, 0.00256579, 32.66653218], [1516971360000, 0.00256579, 0.00256579, 0.0025655, 0.0025655, 260.53320757], [1516971420000, 0.0025655, 0.0025655, 0.0025655, 0.0025655, 313.51947326], [1516971480000, 0.0025655, 0.0025655, 0.002554, 0.0025653, 145.8109714], [1516971540000, 0.00256211, 0.0025655, 0.00255424, 0.0025655, 966.4958243], [1516971600000, 0.0025649, 0.0025655, 0.0025649, 0.0025655, 433.24671659], [1516971660000, 0.0025655, 0.0025655, 0.002554, 0.00255404, 23.03632324], [1516971720000, 0.0025655, 0.0025655, 0.00255404, 0.00255404, 3.31383249], [1516971780000, 0.00256549, 0.0025655, 0.00255404, 0.00255404, 43.5], [1516971840000, 0.00256549, 0.0025655, 0.00256549, 0.0025655, 156.60819638], [1516971900000, 0.0025655, 0.0025655, 0.0025655, 0.0025655, 11.89509263], [1516971960000, 0.0025655, 0.0025655, 0.00256, 0.0025655, 48.01470566], [1516972020000, 0.0025655, 0.0025655, 0.00255404, 0.00255404, 7.346998], [1516972080000, 0.0025655, 0.0025655, 0.00255404, 0.00255404, 105.82736882], [1516972140000, 0.0025655, 0.0025655, 0.0025416, 0.00254161, 3476.8924628], [1516972200000, 0.00254301, 0.0025655, 0.00254301, 0.00255001, 846.60217436], [1516972260000, 0.00255001, 0.0025655, 0.00255001, 0.0025655, 208.87507676], [1516972320000, 0.00256549, 0.00256549, 0.00256549, 0.00256549, 28.5259262], [1516972380000, 0.00256549, 0.0025655, 0.00256549, 0.0025655, 36.32237187], [1516972440000, 0.00256549, 0.0025655, 0.00254851, 0.0025655, 1096.74662031], [1516972500000, 0.0025655, 0.0025655, 0.00254863, 0.002565, 703.90083572], [1516972560000, 0.00254901, 0.0025655, 0.00254901, 0.0025655, 299.44662705], [1516972620000, 0.00255505, 0.00256001, 0.00255505, 0.00256, 128.69927674], [1516972680000, 0.002559, 0.00256, 0.002559, 0.00256, 52.20850872], [1516972740000, 0.0025655, 0.0025655, 0.0025655, 0.0025655, 50.50685702], [1516972800000, 0.0025655, 0.0025655, 0.0025655, 0.0025655, 34.48937825], [1516972920000, 0.0025655, 0.0025655, 0.0025655, 0.0025655, 5.26135894], [1516972980000, 0.00256101, 0.00256101, 0.00256101, 0.00256101, 0.374814], [1516973040000, 0.0025655, 0.0025655, 0.00256101, 0.0025655, 158.17472516], [1516973100000, 0.00256101, 0.00256101, 0.00256101, 0.00256101, 70.60973317], [1516973160000, 0.00256101, 0.00256101, 0.00256101, 0.00256101, 11.03597058], [1516973220000, 0.0025655, 0.0025655, 0.00256102, 0.00256102, 383.25042826], [1516973280000, 0.00256102, 0.00256102, 0.00256102, 0.00256102, 93.02384151], [1516973340000, 0.00256102, 0.0025655, 0.00256102, 0.00256102, 42.81790339], [1516973400000, 0.0025655, 0.0025655, 0.00256102, 0.0025655, 329.95159647], [1516973460000, 0.00256102, 0.0025655, 0.00256102, 0.00256102, 39.43019402], [1516973580000, 0.00256103, 0.00256103, 0.00256103, 0.00256103, 2.35330988], [1516973640000, 0.00256103, 0.00256103, 0.00256102, 0.00256102, 42.89512207], [1516973700000, 0.0025612, 0.00256549, 0.00256102, 0.00256102, 22.43990691], [1516973760000, 0.00256102, 0.0025612, 0.00256102, 0.0025612, 111.71230789], [1516973820000, 0.00256121, 0.00256121, 0.00256121, 0.00256121, 28.24411212], [1516973880000, 0.00256121, 0.00256121, 0.00256121, 0.00256121, 223.13758117], [1516973940000, 0.00256548, 0.00256548, 0.00256548, 0.00256548, 3.18627146], [1516974000000, 0.00256548, 0.00256548, 0.00256125, 0.00256125, 6.79589617], [1516974120000, 0.00256548, 0.00256548, 0.00256121, 0.00256121, 116.59557531], [1516974180000, 0.00256121, 0.00256125, 0.00256121, 0.00256121, 79.41388169], [1516974240000, 0.00256121, 0.00256121, 0.00256101, 0.00256101, 23.46049372], [1516974300000, 0.00256101, 0.00256102, 0.00256101, 0.00256101, 28.83612808], [1516974360000, 0.00256101, 0.00256101, 0.00256101, 0.00256101, 1.165135], [1516974420000, 0.00256102, 0.00256102, 0.00256101, 0.00256101, 10.76069889], [1516974480000, 0.00256102, 0.00256102, 0.00256102, 0.00256102, 72.31], [1516974540000, 0.00256101, 0.00256101, 0.002561, 0.002561, 42.97577672], [1516974600000, 0.00256101, 0.00256102, 0.002561, 0.00256102, 65.54094703], [1516974660000, 0.00256102, 0.00256102, 0.002561, 0.002561, 130.0399434], [1516974720000, 0.00256, 0.002561, 0.00256, 0.002561, 10.71018361], [1516974780000, 0.002561, 0.002561, 0.00256099, 0.00256099, 63.221674], [1516974840000, 0.00256, 0.002561, 0.00256, 0.002561, 48.82713811], [1516974900000, 0.00256101, 0.00256102, 0.00256101, 0.00256102, 317.91773079], [1516974960000, 0.00256102, 0.0025655, 0.00256102, 0.00256121, 1015.68187479], [1516975020000, 0.00256121, 0.00256121, 0.002561, 0.00256121, 268.1457582], [1516975080000, 0.00256121, 0.00256121, 0.00256121, 0.00256121, 42.426672], [1516975140000, 0.00256121, 0.00256121, 0.00256121, 0.00256121, 106.41571991], [1516975200000, 0.002561, 0.00256121, 0.002561, 0.00256121, 223.33615039], [1516975260000, 0.002561, 0.00256121, 0.002561, 0.00256121, 1.86133312], [1516975320000, 0.00256121, 0.00256121, 0.00256121, 0.00256121, 32.51081347], [1516975380000, 0.00256121, 0.0025655, 0.00256, 0.0025655, 269.38424962], [1516975440000, 0.00256121, 0.0025655, 0.00256121, 0.00256121, 31.64371196], [1516975500000, 0.00256549, 0.00256549, 0.00256549, 0.00256549, 0.73713235], [1516975680000, 0.002562, 0.00256545, 0.002562, 0.00256545, 4.40738154], [1516975740000, 0.00256545, 0.00256545, 0.00256122, 0.00256122, 6.46058029], [1516975800000, 0.00256545, 0.0025655, 0.00256545, 0.0025655, 64.17000494], [1516975860000, 0.0025655, 0.0025655, 0.0025655, 0.0025655, 338.62780004], [1516975920000, 0.0025655, 0.0025655, 0.0025632, 0.0025632, 23.91179983], [1516975980000, 0.0025632, 0.0025655, 0.0025632, 0.0025655, 274.02184719], [1516976040000, 0.0025655, 0.0025655, 0.002562, 0.0025655, 624.57091452], [1516976100000, 0.0025632, 0.0025632, 0.0025632, 0.0025632, 0.62451244], [1516976160000, 0.0025655, 0.0025655, 0.0025655, 0.0025655, 314.33632894], [1516976220000, 0.0025655, 0.0025655, 0.0025655, 0.0025655, 284.98371474], [1516976280000, 0.0025655, 0.0025655, 0.0025634, 0.0025655, 294.89520499], [1516976340000, 0.0025633, 0.0025655, 0.0025633, 0.0025655, 6.9884105], [1516976400000, 0.0025655, 0.0025655, 0.0025655, 0.0025655, 44.04167244], [1516976460000, 0.0025655, 0.0025655, 0.00256549, 0.0025655, 158.02605113], [1516976520000, 0.00256972, 0.00257, 0.00256331, 0.00256331, 143.14509538], [1516976580000, 0.00257, 0.00257, 0.00256332, 0.00256332, 59.53249971], [1516976640000, 0.00257, 0.00257, 0.002565, 0.002565, 12.47418719], [1516976700000, 0.002565, 0.00257, 0.002565, 0.002565, 110.0002926], [1516976760000, 0.002566, 0.002566, 0.002566, 0.002566, 45.0], [1516976820000, 0.00257, 0.00257, 0.00256601, 0.00256601, 4.08994382], [1516976880000, 0.00256601, 0.00256601, 0.00256601, 0.00256601, 18.44088957], [1516976940000, 0.002566, 0.002566, 0.002566, 0.002566, 11.45037886], [1516977000000, 0.00256601, 0.00256601, 0.002566, 0.00256601, 32.88635102], [1516977060000, 0.00256601, 0.00256601, 0.002566, 0.00256601, 39.358827], [1516977120000, 0.002566, 0.00256601, 0.002566, 0.00256601, 48.63756954], [1516977180000, 0.00256601, 0.00256601, 0.00256601, 0.00256601, 28.41513818], [1516977240000, 0.002566, 0.00256601, 0.002566, 0.00256601, 29.33515299], [1516977300000, 0.002566, 0.002566, 0.002566, 0.002566, 5.483072], [1516977360000, 0.002566, 0.002566, 0.002565, 0.002565, 96.1396224], [1516977420000, 0.0025652, 0.0025652, 0.0025652, 0.0025652, 15.86078199], [1516977480000, 0.0025652, 0.0025652, 0.0025652, 0.0025652, 28.2162821], [1516977540000, 0.0025652, 0.0025652, 0.0025652, 0.0025652, 41.15073447], [1516977600000, 0.00256601, 0.00256601, 0.002565, 0.00256599, 76.82315559], [1516977660000, 0.002565, 0.002565, 0.002565, 0.002565, 0.85964912], [1516977720000, 0.002565, 0.00257023, 0.002565, 0.00257023, 651.98736139], [1516977780000, 0.00256599, 0.00257643, 0.00256599, 0.00256599, 547.44682922], [1516977840000, 0.002566, 0.00257699, 0.002566, 0.00257699, 1024.62847662], [1516977900000, 0.00257641, 0.00258263, 0.002566, 0.002566, 848.38352641], [1516977960000, 0.00256601, 0.00258262, 0.002566, 0.00258262, 77.05691056], [1516978020000, 0.00258259, 0.00258259, 0.00256601, 0.00256601, 4.47081057], [1516978140000, 0.00258255, 0.00258255, 0.00258255, 0.00258255, 0.26990379], [1516978200000, 0.00258255, 0.00258255, 0.002566, 0.00258254, 75.01474886], [1516978260000, 0.00258253, 0.00258254, 0.00258253, 0.00258254, 10.84206001], [1516978320000, 0.00258251, 0.00258251, 0.002566, 0.002566, 29.51075091], [1516978380000, 0.002566, 0.002566, 0.002566, 0.002566, 19.10492618], [1516978440000, 0.002567, 0.002567, 0.002567, 0.002567, 3.00655275], [1516978500000, 0.002566, 0.00257705, 0.002566, 0.00257704, 64.3770375], [1516978560000, 0.002567, 0.00257704, 0.002566, 0.002566, 43.76456564], [1516978620000, 0.00257697, 0.00257698, 0.002566, 0.00257698, 12.55294041], [1516978680000, 0.00257698, 0.00257698, 0.00257696, 0.00257696, 19.25223296], [1516978740000, 0.00256599, 0.00256599, 0.00256599, 0.00256599, 1.94856566], [1516978800000, 0.00256599, 0.00257694, 0.00256599, 0.002566, 55.07238165], [1516978860000, 0.002566, 0.002566, 0.002566, 0.002566, 15.4923], [1516978920000, 0.002566, 0.00257698, 0.002566, 0.002566, 21.63557853], [1516978980000, 0.002566, 0.002566, 0.00256598, 0.002566, 34.59252724], [1516979040000, 0.002566, 0.002566, 0.00256599, 0.00256599, 1.11827073], [1516979100000, 0.002566, 0.002566, 0.002565, 0.002565, 30.77729005], [1516979160000, 0.002565, 0.002565, 0.00256321, 0.00256321, 87.29135667], [1516979220000, 0.002565, 0.002565, 0.00256321, 0.00256321, 74.27922113], [1516979280000, 0.00256321, 0.00257602, 0.00256121, 0.00257602, 146.2396778], [1516979340000, 0.00257297, 0.00257697, 0.00257297, 0.00257697, 20.82585565], [1516979400000, 0.00256322, 0.00256322, 0.00255347, 0.00256321, 294.66122573], [1516979460000, 0.00256321, 0.00256321, 0.00255681, 0.00256321, 99.79089411], [1516979520000, 0.00256321, 0.00256321, 0.00255691, 0.00255691, 168.08258929], [1516979580000, 0.00255704, 0.00257696, 0.00255704, 0.00257696, 94.57114326], [1516979640000, 0.00257694, 0.00257694, 0.00255683, 0.00255705, 58.90771094], [1516979700000, 0.00256321, 0.00257691, 0.00255365, 0.00255365, 18.37872375], [1516979760000, 0.00257691, 0.00257691, 0.00255365, 0.00255365, 216.47086047], [1516979820000, 0.00255358, 0.00257685, 0.00255358, 0.00257681, 10.07854171], [1516979880000, 0.00255361, 0.00257679, 0.00255361, 0.0025767, 73.89874449], [1516979940000, 0.0025604, 0.0025767, 0.0025604, 0.0025767, 139.94329294], [1516980000000, 0.00257669, 0.00257673, 0.00257669, 0.00257673, 5.01089853], [1516980060000, 0.00257673, 0.00257673, 0.00257673, 0.00257673, 20.10363299], [1516980120000, 0.00255804, 0.00257673, 0.00255404, 0.00255404, 210.02959778], [1516980180000, 0.00255704, 0.00255706, 0.00255405, 0.00255706, 55.0373098], [1516980240000, 0.00257668, 0.00257668, 0.00257668, 0.00257668, 4.93641137], [1516980300000, 0.00257642, 0.00257643, 0.00257634, 0.00257634, 20.67001008], [1516980420000, 0.00255422, 0.00255422, 0.00255421, 0.00255421, 35.32458685], [1516980480000, 0.00257632, 0.00257634, 0.00256527, 0.00257634, 94.42657128], [1516980540000, 0.00257634, 0.00257634, 0.00256527, 0.00257425, 80.48331886], [1516980600000, 0.00256527, 0.00256528, 0.00256527, 0.00256528, 58.37456149], [1516980660000, 0.00257633, 0.00257633, 0.00256527, 0.00256527, 122.82373434], [1516980720000, 0.00256527, 0.00256527, 0.00255507, 0.00256527, 83.25913434], [1516980780000, 0.00256527, 0.00256527, 0.00256527, 0.00256527, 4.75446814], [1516980900000, 0.00256527, 0.0025763, 0.00256527, 0.00257627, 209.72694693], [1516980960000, 0.002558, 0.00257631, 0.002558, 0.00257627, 235.21311128], [1516981020000, 0.00257631, 0.00257673, 0.00257627, 0.00257627, 85.33496269], [1516981080000, 0.00257079, 0.00258, 0.00257079, 0.00258, 371.40974181], [1516981140000, 0.00258, 0.00258263, 0.00258, 0.00258263, 779.14455447], [1516981200000, 0.00258263, 0.00258699, 0.00258, 0.00258, 129.61179973], [1516981260000, 0.00258001, 0.00258001, 0.00258001, 0.00258001, 4.84030461], [1516981320000, 0.00258697, 0.0026, 0.00258001, 0.0026, 448.4450562], [1516981380000, 0.00260124, 0.00260124, 0.00258, 0.00258, 68.2144988], [1516981440000, 0.00258696, 0.00258696, 0.00258, 0.00258, 239.33308269], [1516981500000, 0.00258001, 0.00258698, 0.00258001, 0.00258697, 10.02823147], [1516981560000, 0.00258697, 0.00259533, 0.00258697, 0.00259533, 61.35051122], [1516981620000, 0.00259013, 0.00259013, 0.002586, 0.002586, 183.12970762], [1516981680000, 0.002585, 0.00259012, 0.002585, 0.002585, 223.27183953], [1516981740000, 0.002585, 0.00259011, 0.002585, 0.00259011, 8.4364996], [1516981800000, 0.00259011, 0.00259999, 0.00259011, 0.00259012, 16.26340272], [1516981860000, 0.00259064, 0.00259064, 0.00259011, 0.00259011, 20.54007189], [1516981920000, 0.00259012, 0.00259012, 0.00258501, 0.00258501, 22.90703756], [1516981980000, 0.0025953, 0.00259998, 0.00258501, 0.00258501, 592.08884658], [1516982040000, 0.00259299, 0.002593, 0.00258501, 0.00258501, 116.82840167], [1516982100000, 0.002585, 0.002585, 0.0025805, 0.0025805, 89.03893095], [1516982160000, 0.00259299, 0.00259299, 0.00259299, 0.00259299, 1.26478718], [1516982220000, 0.00259, 0.00259, 0.00258998, 0.00258998, 35.74462975], [1516982280000, 0.00258998, 0.00258998, 0.00258998, 0.00258998, 60.0], [1516982340000, 0.00258899, 0.00258899, 0.00257673, 0.00258, 3496.84345486], [1516982400000, 0.00257673, 0.00257673, 0.00256213, 0.00256215, 360.89348637], [1516982460000, 0.00258999, 0.00259, 0.002558, 0.002558, 255.06750264], [1516982520000, 0.002558, 0.00257179, 0.002558, 0.002558, 10.34279747], [1516982580000, 0.002558, 0.00257179, 0.002558, 0.00257179, 114.30846515], [1516982640000, 0.00257179, 0.00258963, 0.00255803, 0.00255804, 346.56257798], [1516982700000, 0.00255804, 0.00258996, 0.002558, 0.00258981, 504.65305842], [1516982760000, 0.00258976, 0.00258976, 0.00257722, 0.00258946, 22.91409801], [1516982820000, 0.00258922, 0.00258922, 0.00256001, 0.00258896, 67.85960258], [1516982880000, 0.00258873, 0.00258873, 0.00255809, 0.00255809, 1569.65930688], [1516982940000, 0.00256101, 0.002565, 0.00256101, 0.002565, 7.23991251], [1516983000000, 0.00256501, 0.00256503, 0.00256501, 0.00256503, 15.79896406], [1516983060000, 0.002566, 0.00257981, 0.00256502, 0.00256503, 122.22020906], [1516983120000, 0.00256503, 0.0025651, 0.00256503, 0.00256503, 93.27491045], [1516983180000, 0.00256503, 0.00257975, 0.00256503, 0.00257126, 257.03260912], [1516983240000, 0.00257126, 0.00257973, 0.00256009, 0.00256009, 3019.05669809], [1516983300000, 0.00256009, 0.00257954, 0.00256009, 0.00257946, 14.41420823], [1516983360000, 0.00257945, 0.00257945, 0.00257944, 0.00257944, 40.31990684], [1516983420000, 0.00257942, 0.00257943, 0.00257942, 0.00257943, 285.82532926], [1516983480000, 0.00256948, 0.00257941, 0.00256948, 0.00257041, 286.50979145], [1516983540000, 0.00257041, 0.00257041, 0.00257041, 0.00257041, 5.64204332], [1516983600000, 0.00257041, 0.00257041, 0.00256017, 0.00256109, 811.76241376], [1516983660000, 0.00257941, 0.00257944, 0.00257941, 0.00257944, 90.36731855], [1516983720000, 0.00257944, 0.00257981, 0.00257941, 0.00257981, 68.19205106], [1516983780000, 0.00257941, 0.00257941, 0.00257941, 0.00257941, 4.33749868], [1516983840000, 0.00257941, 0.0025798, 0.00257, 0.00257, 896.96970041], [1516983900000, 0.00256999, 0.00257, 0.00256516, 0.00257, 136.8122138], [1516983960000, 0.00257, 0.00257, 0.00256999, 0.00257, 5.41781569], [1516984020000, 0.00257, 0.00257, 0.00257, 0.00257, 1.75], [1516984080000, 0.002575, 0.002575, 0.002575, 0.002575, 0.42815534], [1516984140000, 0.002575, 0.002575, 0.00257489, 0.00257489, 104.65637872], [1516984200000, 0.0025795, 0.0025795, 0.00257946, 0.00257947, 48.72116766], [1516984260000, 0.00257947, 0.00257949, 0.00257, 0.00257, 57.51133875], [1516984320000, 0.00257, 0.002575, 0.00257, 0.002575, 1.54530997], [1516984380000, 0.002575, 0.0025795, 0.00257, 0.002575, 31.38689179], [1516984440000, 0.0025701, 0.002575, 0.0025701, 0.0025701, 3.22488], [1516984500000, 0.0025701, 0.0025795, 0.00257, 0.002575, 197.73989415], [1516984560000, 0.0025795, 0.0025795, 0.002575, 0.00257949, 18.31760893], [1516984620000, 0.002575, 0.002575, 0.002575, 0.002575, 20.90155176], [1516984680000, 0.002575, 0.002575, 0.0025701, 0.0025701, 14.10560956], [1516984740000, 0.0025701, 0.002575, 0.0025701, 0.002575, 35.9923259], [1516984800000, 0.002575, 0.00258873, 0.002575, 0.002575, 436.35012732], [1516984860000, 0.002575, 0.002575, 0.002575, 0.002575, 22.83947289], [1516984980000, 0.002575, 0.002575, 0.0025701, 0.0025701, 156.92008403], [1516985040000, 0.00257011, 0.00258041, 0.00257011, 0.00258041, 16.21196687], [1516985100000, 0.00258041, 0.00258041, 0.00258041, 0.00258041, 1.42628885], [1516985160000, 0.00258041, 0.00258879, 0.00258041, 0.00258041, 372.35578868], [1516985220000, 0.0025705, 0.00258, 0.0025705, 0.00257945, 6.15829811], [1516985280000, 0.0025714, 0.00257945, 0.00257139, 0.0025714, 262.57898002], [1516985340000, 0.0025714, 0.0025714, 0.0025714, 0.0025714, 0.23505528], [1516985400000, 0.00257945, 0.00257945, 0.00257945, 0.00257945, 1.91898048], [1516985460000, 0.00257945, 0.00257945, 0.00257945, 0.00257945, 19.33551726], [1516985520000, 0.00257945, 0.00257945, 0.00257945, 0.00257945, 2.0], [1516985580000, 0.00257945, 0.00257945, 0.00257945, 0.00257945, 10.0], [1516985640000, 0.00257944, 0.00257945, 0.00257944, 0.00257945, 69.60786214], [1516985700000, 0.00257945, 0.00257945, 0.00257944, 0.00257944, 23.24113817], [1516985760000, 0.00257945, 0.00257945, 0.0025725, 0.00257945, 48.72687766], [1516985820000, 0.00257945, 0.00258874, 0.00257945, 0.00258874, 65.49778285], [1516985880000, 0.0025804, 0.00258882, 0.00257945, 0.0025804, 170.82911732], [1516985940000, 0.00258882, 0.00258882, 0.0025804, 0.0025804, 39.4345502], [1516986000000, 0.0025804, 0.0025804, 0.0025795, 0.0025795, 235.48409148], [1516986060000, 0.0025795, 0.00258039, 0.0025795, 0.0025795, 214.568028], [1516986120000, 0.00257951, 0.00257951, 0.00257256, 0.00257256, 21.78483546], [1516986180000, 0.00258039, 0.00258039, 0.00257256, 0.00257256, 52.527621], [1516986240000, 0.0025803, 0.00258031, 0.0025803, 0.00258031, 33.31854305], [1516986300000, 0.00258039, 0.00258039, 0.002575, 0.002575, 14.80669046], [1516986360000, 0.00257501, 0.00258039, 0.00257501, 0.00258039, 21.70606063], [1516986420000, 0.002575, 0.002575, 0.002575, 0.002575, 4.0], [1516986480000, 0.002575, 0.002575, 0.002575, 0.002575, 4.78738971], [1516986540000, 0.00257256, 0.002575, 0.00257256, 0.00257256, 222.82158005], [1516986600000, 0.00257256, 0.002575, 0.0025725, 0.0025725, 271.12790429], [1516986660000, 0.0025725, 0.0025725, 0.0025725, 0.0025725, 45.38915384], [1516986720000, 0.0025725, 0.0025725, 0.0025725, 0.0025725, 3.79133409], [1516986780000, 0.002575, 0.002575, 0.002575, 0.002575, 4.12815534], [1516986840000, 0.002575, 0.002575, 0.002575, 0.002575, 30.42815534], [1516986900000, 0.002575, 0.00257501, 0.002573, 0.002573, 567.71930903], [1516986960000, 0.002573, 0.002575, 0.0025725, 0.0025725, 102.77554985], [1516987020000, 0.002573, 0.002573, 0.002573, 0.002573, 371.01592952], [1516987080000, 0.002573, 0.002573, 0.0025725, 0.002573, 204.73769559], [1516987140000, 0.002573, 0.002573, 0.0025725, 0.002573, 400.19584652], [1516987200000, 0.002573, 0.002573, 0.002573, 0.002573, 352.08405178], [1516987260000, 0.002573, 0.002575, 0.002573, 0.002573, 38.73644232], [1516987320000, 0.002575, 0.002575, 0.00257251, 0.00257251, 324.17731192], [1516987380000, 0.002575, 0.002575, 0.00257251, 0.00257251, 6.27719962], [1516987440000, 0.00257251, 0.00257251, 0.00257251, 0.00257251, 7.82729887], [1516987500000, 0.00257251, 0.00258999, 0.00257251, 0.0025899, 432.01430426], [1516987560000, 0.00258999, 0.00258999, 0.00258999, 0.00258999, 2.72446148], [1516987680000, 0.00258999, 0.00258999, 0.00258999, 0.00258999, 3.0], [1516987740000, 0.00259, 0.00259, 0.00258999, 0.00258999, 5.12754496], [1516987800000, 0.002573, 0.00259, 0.002573, 0.00259, 11.99452591], [1516987860000, 0.002573, 0.002573, 0.002573, 0.002573, 9.59304803], [1516987920000, 0.002578, 0.002578, 0.002578, 0.002578, 7.29663638], [1516987980000, 0.00258994, 0.00258994, 0.002573, 0.00258991, 146.98867052], [1516988040000, 0.00258991, 0.00258991, 0.00258991, 0.00258991, 109.56689457], [1516988100000, 0.00258991, 0.00258992, 0.00258991, 0.00258991, 74.33664831], [1516988160000, 0.00258991, 0.002592, 0.00258991, 0.00258991, 1978.70013667], [1516988220000, 0.00258991, 0.00258991, 0.00258991, 0.00258991, 0.5537935], [1516988280000, 0.00258991, 0.00258991, 0.002578, 0.0025899, 77.48199169], [1516988340000, 0.002578, 0.002578, 0.002578, 0.002578, 28.45806959], [1516988400000, 0.0025898, 0.0025898, 0.00258, 0.00258001, 42.50816351], [1516988460000, 0.00258001, 0.002581, 0.00258001, 0.002581, 28.48048961], [1516988520000, 0.002581, 0.002581, 0.00258, 0.00258, 58.67403901], [1516988580000, 0.002578, 0.00258976, 0.002578, 0.002578, 532.68504251], [1516988640000, 0.002578, 0.0025793, 0.002578, 0.002578, 135.89434175], [1516988700000, 0.002578, 0.00257929, 0.002578, 0.00257929, 5.82869811], [1516988760000, 0.002578, 0.002578, 0.00257251, 0.00257251, 99.11415162], [1516988820000, 0.00257251, 0.00257251, 0.00257251, 0.00257251, 19.07940366], [1516988880000, 0.00257251, 0.00257251, 0.0025725, 0.0025725, 20.31632653], [1516988940000, 0.00257251, 0.00257251, 0.0025725, 0.0025725, 19.86491502], [1516989000000, 0.0025725, 0.00257251, 0.0025725, 0.0025725, 71.87118883], [1516989060000, 0.0025725, 0.00257251, 0.0025714, 0.00257251, 46.26472585], [1516989120000, 0.00257251, 0.00257251, 0.00257251, 0.00257251, 8.71853365], [1516989180000, 0.0025715, 0.0025715, 0.00257005, 0.00257005, 138.09019107], [1516989240000, 0.002571, 0.002571, 0.002571, 0.002571, 0.42784909], [1516989300000, 0.00257005, 0.002571, 0.00257001, 0.002571, 31.77907428], [1516989360000, 0.002571, 0.00258971, 0.00257002, 0.00257002, 277.89458593], [1516989420000, 0.002571, 0.00258898, 0.002571, 0.00258898, 16.93915588], [1516989540000, 0.002571, 0.002571, 0.002571, 0.002571, 0.77220077], [1516989600000, 0.002571, 0.002571, 0.00257001, 0.002571, 343.44435007], [1516989660000, 0.00257001, 0.00258798, 0.00257001, 0.00257001, 137.94084422], [1516989780000, 0.00257002, 0.00257002, 0.00257002, 0.00257002, 13.87956421], [1516989840000, 0.00257003, 0.00257003, 0.00257001, 0.00257001, 11.08885905], [1516989900000, 0.00258138, 0.00258138, 0.00257002, 0.00257002, 13.12470677], [1516990020000, 0.00257002, 0.00258138, 0.00257002, 0.00258138, 48.90739151], [1516990080000, 0.00258138, 0.00258138, 0.00258138, 0.00258138, 102.0], [1516990140000, 0.00258138, 0.00258138, 0.00258138, 0.00258138, 14.34481491], [1516990200000, 0.00258138, 0.00258138, 0.00258138, 0.00258138, 4.6390186], [1516990260000, 0.00258138, 0.00258148, 0.00258138, 0.00258148, 35.51755485], [1516990320000, 0.00258147, 0.00258976, 0.00258147, 0.00258976, 96.15785147], [1516990380000, 0.00258147, 0.00258148, 0.00258147, 0.00258148, 1.28124672], [1516990440000, 0.00258148, 0.00258148, 0.002575, 0.002575, 34.63250914], [1516990500000, 0.002589, 0.002589, 0.00258899, 0.00258899, 24.26419467], [1516990560000, 0.00257505, 0.00257505, 0.00257505, 0.00257505, 1.36104865], [1516990620000, 0.00257776, 0.00257776, 0.00257776, 0.00257776, 1.15629829], [1516990680000, 0.00257506, 0.00257506, 0.00257505, 0.00257505, 155.69416964], [1516990740000, 0.00257506, 0.00257506, 0.002575, 0.00257506, 59.36503789], [1516990800000, 0.00257506, 0.00257506, 0.00257506, 0.00257506, 116.66884459], [1516990920000, 0.00257776, 0.00257776, 0.00257506, 0.00257506, 28.76247432], [1516990980000, 0.00257506, 0.00257506, 0.002575, 0.00257506, 68.62614279], [1516991040000, 0.00257003, 0.00257003, 0.00257001, 0.00257001, 30.127137], [1516991100000, 0.00257506, 0.00258991, 0.00257506, 0.00258991, 23.3004279], [1516991160000, 0.00258991, 0.00258991, 0.00258991, 0.00258991, 0.53071051], [1516991220000, 0.00257506, 0.00257506, 0.00257001, 0.00257506, 71.31876977], [1516991280000, 0.00257001, 0.00257001, 0.00257001, 0.00257001, 21.64], [1516991340000, 0.00257506, 0.00257506, 0.00257001, 0.00257001, 2.99061819], [1516991400000, 0.00257001, 0.00257506, 0.00257001, 0.00257001, 16.45422777], [1516991460000, 0.00257001, 0.00257001, 0.00257001, 0.00257001, 2.62208821], [1516991520000, 0.00257506, 0.00257506, 0.002575, 0.002575, 11.91908707], [1516991580000, 0.00257004, 0.002575, 0.00257004, 0.002575, 23.16553967], [1516991640000, 0.002588, 0.002588, 0.002588, 0.002588, 0.38543277], [1516991700000, 0.002588, 0.00258991, 0.002588, 0.00258991, 92.9255479], [1516991760000, 0.00258991, 0.002595, 0.00258991, 0.00258991, 212.80278561], [1516991820000, 0.00259, 0.00259, 0.00258809, 0.00258809, 118.86498868], [1516991880000, 0.00257109, 0.00259799, 0.0025695, 0.00258812, 569.56679695], [1516991940000, 0.00257519, 0.00257519, 0.00257519, 0.00257519, 27.71102592], [1516992000000, 0.00257522, 0.00257652, 0.0025752, 0.0025752, 7.81817782], [1516992060000, 0.00259689, 0.00259689, 0.00257523, 0.002596, 95.6206059], [1516992120000, 0.00257522, 0.00257523, 0.00257522, 0.00257523, 15.28863477], [1516992180000, 0.002595, 0.002595, 0.002595, 0.002595, 3.07514451], [1516992360000, 0.00257601, 0.00257601, 0.00257601, 0.00257601, 4.41933592], [1516992420000, 0.00257601, 0.00257601, 0.00257601, 0.00257601, 7.77264204], [1516992480000, 0.00257601, 0.00257601, 0.00257601, 0.00257601, 15.52789003], [1516992540000, 0.00257519, 0.00257519, 0.00257519, 0.00257519, 64.82495623], [1516992600000, 0.00257519, 0.0025981, 0.00257519, 0.00259809, 1737.95844997], [1516992660000, 0.00259497, 0.00259497, 0.00259497, 0.00259497, 14.41104097], [1516992720000, 0.00259495, 0.0026, 0.00258063, 0.00258063, 153.34567216], [1516992780000, 0.00259075, 0.00259075, 0.00259075, 0.00259075, 217.94263992], [1516992840000, 0.0025981, 0.00260141, 0.0025981, 0.00260141, 510.75501353], [1516992900000, 0.00260141, 0.00260167, 0.0026, 0.00260167, 220.90815859], [1516992960000, 0.00260167, 0.002602, 0.00260167, 0.002602, 27.40701494], [1516993020000, 0.00260228, 0.00260605, 0.002602, 0.002605, 498.9775761], [1516993080000, 0.002605, 0.00260666, 0.002602, 0.002602, 1146.84317932], [1516993140000, 0.00260665, 0.00260749, 0.002602, 0.002602, 119.7953922], [1516993200000, 0.002602, 0.00261069, 0.002602, 0.00261069, 154.54634691], [1516993260000, 0.00261069, 0.002612, 0.002603, 0.002603, 497.04626981], [1516993320000, 0.002603, 0.002603, 0.002603, 0.002603, 289.2254595], [1516993380000, 0.002603, 0.00260845, 0.002603, 0.002603, 52.22138883], [1516993440000, 0.002603, 0.00260844, 0.002603, 0.002603, 179.96066484], [1516993500000, 0.00260844, 0.00260844, 0.00260844, 0.00260844, 48.11130219], [1516993560000, 0.00261239, 0.00261239, 0.002603, 0.002603, 56.04240915], [1516993620000, 0.00261236, 0.00261296, 0.0026031, 0.0026031, 325.45401182], [1516993680000, 0.0026031, 0.0026031, 0.00260301, 0.00260301, 21.0919298], [1516993740000, 0.00260301, 0.0026031, 0.00260301, 0.0026031, 11.6851557], [1516993800000, 0.00260401, 0.00260401, 0.002604, 0.002604, 3.7916715], [1516993860000, 0.002604, 0.00261863, 0.002604, 0.002604, 531.91653272], [1516993920000, 0.00261495, 0.00261495, 0.00261495, 0.00261495, 6.20325818], [1516993980000, 0.0026175, 0.0026175, 0.0026175, 0.0026175, 1.0], [1516994040000, 0.00260301, 0.0026185, 0.00260301, 0.00261794, 1057.8177261], [1516994100000, 0.00260301, 0.0026145, 0.002603, 0.002603, 312.08364452], [1516994160000, 0.00261199, 0.0026145, 0.002602, 0.0026032, 506.93636792], [1516994220000, 0.0026135, 0.0026135, 0.002605, 0.0026135, 21.89428811], [1516994280000, 0.0026135, 0.0026135, 0.00261345, 0.00261345, 42.72359568], [1516994340000, 0.00261344, 0.00261345, 0.00261344, 0.00261344, 45.47808514], [1516994400000, 0.00261344, 0.00261345, 0.00260701, 0.00261345, 108.09640095], [1516994460000, 0.00261345, 0.00261378, 0.00260702, 0.00261378, 58.48096626], [1516994520000, 0.00260703, 0.0026149, 0.00260702, 0.0026149, 256.60177421], [1516994580000, 0.0026149, 0.00261495, 0.0026138, 0.0026149, 1204.56280175], [1516994640000, 0.0026149, 0.0026184, 0.00261485, 0.0026184, 1575.95230773], [1516994700000, 0.00261489, 0.0026183, 0.0026138, 0.0026138, 778.60017345], [1516994760000, 0.00261488, 0.00261488, 0.00260707, 0.00260707, 10.82138966], [1516994820000, 0.0026075, 0.0026187, 0.00260709, 0.0026187, 105.27697317], [1516994880000, 0.0026187, 0.0026187, 0.00260805, 0.00260807, 12.45911134], [1516994940000, 0.0026175, 0.0026175, 0.00260809, 0.00260812, 20.68132632], [1516995000000, 0.00260811, 0.0026185, 0.00260811, 0.00260812, 18.64680201], [1516995060000, 0.0026185, 0.0026185, 0.00260814, 0.00260814, 5.06175239], [1516995120000, 0.0026175, 0.0026175, 0.00260815, 0.00260815, 7.23247396], [1516995180000, 0.0026175, 0.002618, 0.0026175, 0.002618, 9.51177213], [1516995240000, 0.002618, 0.0026186, 0.002618, 0.0026186, 689.78612306], [1516995300000, 0.00260912, 0.002615, 0.00260912, 0.002615, 6.82186497], [1516995360000, 0.00261, 0.002615, 0.00260912, 0.0026105, 27.5661557], [1516995420000, 0.002615, 0.002615, 0.00260815, 0.0026106, 146.4558139], [1516995480000, 0.0026186, 0.0026199, 0.00260857, 0.0026199, 106.65012868], [1516995540000, 0.0026199, 0.0026199, 0.00260819, 0.00260819, 19.70634715], [1516995600000, 0.00261966, 0.00262, 0.00260821, 0.00262, 164.7346251], [1516995660000, 0.00262, 0.00262, 0.00258312, 0.00258501, 1658.35571574], [1516995720000, 0.00261265, 0.00262228, 0.00261, 0.002619, 1167.31318339], [1516995780000, 0.002619, 0.002619, 0.00261266, 0.00261266, 870.38310487], [1516995840000, 0.00261265, 0.002619, 0.00260826, 0.002619, 98.62991004], [1516995900000, 0.00261895, 0.00261895, 0.00260827, 0.00260827, 15.45475372], [1516995960000, 0.00261895, 0.00261895, 0.00261895, 0.00261895, 2.23562061], [1516996020000, 0.0026125, 0.00261895, 0.00260826, 0.00260826, 78.40397131], [1516996080000, 0.00260826, 0.00260827, 0.0026, 0.00260002, 113.34033546], [1516996140000, 0.00260005, 0.00260011, 0.0026, 0.0026, 101.59779359], [1516996200000, 0.00261407, 0.00261407, 0.0026, 0.0026, 24.61915484], [1516996260000, 0.00261407, 0.00261407, 0.002614, 0.002614, 48.24146282], [1516996320000, 0.00261399, 0.00261399, 0.00261399, 0.00261399, 1.0], [1516996380000, 0.00261398, 0.00261398, 0.00261398, 0.00261398, 13.52898056], [1516996440000, 0.00260002, 0.00261396, 0.00260002, 0.00261396, 27.93247536], [1516996500000, 0.0026139, 0.0026139, 0.00260009, 0.0026139, 203.8479], [1516996560000, 0.00260007, 0.00260007, 0.00259007, 0.00259007, 319.48015782], [1516996620000, 0.00259007, 0.0026, 0.00259007, 0.00259008, 22.1145873], [1516996680000, 0.00259008, 0.00260933, 0.00259007, 0.00260302, 174.72167343], [1516996740000, 0.00260933, 0.00260933, 0.00260302, 0.00260302, 3.09773699], [1516996800000, 0.00260302, 0.00260302, 0.00259604, 0.00259604, 60.08988319], [1516996860000, 0.00259604, 0.00259864, 0.00259604, 0.00259864, 1.8554513], [1516996920000, 0.0025914, 0.00260933, 0.0025914, 0.00260933, 372.49806951], [1516996980000, 0.00260933, 0.00261334, 0.00260933, 0.00261334, 40.42964123], [1516997040000, 0.00261334, 0.00261334, 0.00261334, 0.00261334, 118.4939932], [1516997100000, 0.00261334, 0.00261334, 0.002592, 0.002592, 99.29543715], [1516997220000, 0.00259209, 0.00261334, 0.00259209, 0.00261334, 33.61195741], [1516997280000, 0.00261334, 0.00261334, 0.00261334, 0.00261334, 23.36733648], [1516997340000, 0.00261334, 0.00261334, 0.00259253, 0.00259253, 9.39210722], [1516997400000, 0.00261334, 0.00261395, 0.00261334, 0.00261334, 17.65125576], [1516997460000, 0.00261334, 0.00261334, 0.00261334, 0.00261334, 17.0], [1516997520000, 0.00261334, 0.00261378, 0.00261334, 0.00261335, 55.36188967], [1516997580000, 0.00261335, 0.00261335, 0.00261335, 0.00261335, 4.32854152], [1516997640000, 0.00261335, 0.00261335, 0.00261334, 0.00261334, 11.44768504], [1516997700000, 0.00261292, 0.00261299, 0.0026, 0.00261299, 137.09449463], [1516997760000, 0.00261292, 0.00261292, 0.00261292, 0.00261292, 94.90726219], [1516997820000, 0.00261292, 0.00261292, 0.00261292, 0.00261292, 4.51656003], [1516997880000, 0.00261292, 0.00261292, 0.00261292, 0.00261292, 8.31046873], [1516998060000, 0.00261293, 0.00261298, 0.00261292, 0.00261292, 30.67760894], [1516998120000, 0.00260378, 0.00260378, 0.0026, 0.0026, 108.96693252], [1516998240000, 0.0026129, 0.0026129, 0.0026129, 0.0026129, 2.08240927], [1516998300000, 0.0026129, 0.0026129, 0.0026129, 0.0026129, 0.91940152], [1516998360000, 0.0026129, 0.0026129, 0.0026129, 0.0026129, 1.03189655], [1516998420000, 0.0026129, 0.0026129, 0.0026129, 0.0026129, 10.3236129], [1516998480000, 0.00261287, 0.0026129, 0.00261287, 0.0026129, 25.0], [1516998540000, 0.002604, 0.002604, 0.002604, 0.002604, 266.33187655], [1516998600000, 0.00261, 0.00261, 0.00261, 0.00261, 8.22747273], [1516998660000, 0.00261, 0.00261, 0.002604, 0.00261, 236.8926372], [1516998720000, 0.002604, 0.002604, 0.002604, 0.002604, 3.85029239], [1516998780000, 0.00261, 0.00261, 0.00261, 0.00261, 26.87901879], [1516998840000, 0.00261, 0.00261, 0.00261, 0.00261, 38.70989077], [1516998900000, 0.00261, 0.00261, 0.00261, 0.00261, 7.31229897], [1516998960000, 0.002609, 0.00261, 0.002609, 0.00261, 14.10523987], [1516999020000, 0.00261, 0.00261, 0.00261, 0.00261, 125.76740524], [1516999080000, 0.00260999, 0.00260999, 0.00260999, 0.00260999, 38.21853724], [1516999140000, 0.00261, 0.00261, 0.00261, 0.00261, 16.23039536], [1516999200000, 0.00261289, 0.0026129, 0.00260379, 0.00260379, 238.24298201], [1516999260000, 0.0026129, 0.0026129, 0.00260379, 0.00261288, 99.46491834], [1516999320000, 0.00261197, 0.00261197, 0.00261197, 0.00261197, 59.40371851], [1516999380000, 0.002605, 0.002605, 0.00259209, 0.00259209, 289.47745903], [1516999440000, 0.00261181, 0.00261181, 0.002604, 0.002604, 26.0817711], [1516999500000, 0.002604, 0.002604, 0.002604, 0.002604, 10.54024577], [1516999560000, 0.002604, 0.002604, 0.002604, 0.002604, 0.19213367], [1516999620000, 0.002604, 0.002604, 0.002604, 0.002604, 2.38999999], [1516999680000, 0.002604, 0.002604, 0.002604, 0.002604, 0.78192253], [1516999800000, 0.00260002, 0.0026002, 0.00260002, 0.00260002, 23.92687161], [1516999860000, 0.002604, 0.00261288, 0.00260002, 0.00261185, 286.6679512], [1516999920000, 0.00260002, 0.00260546, 0.0026, 0.0026, 17.30446669], [1516999980000, 0.0026, 0.00260002, 0.0026, 0.0026, 28.50251237], [1517000040000, 0.0026, 0.0026, 0.0026, 0.0026, 40.0], [1517000100000, 0.00261272, 0.00261287, 0.00261272, 0.00261287, 4.70325749], [1517000160000, 0.0026127, 0.0026127, 0.0026127, 0.0026127, 1.88943459], [1517000220000, 0.0026127, 0.0026127, 0.00261, 0.00261, 77.70435161], [1517000280000, 0.0026, 0.0026, 0.0026, 0.0026, 30.0], [1517000340000, 0.0026, 0.00261, 0.0026, 0.00260999, 31.06636685], [1517000400000, 0.00260999, 0.00260999, 0.0026, 0.0026, 106.49101616], [1517000460000, 0.0026, 0.00260994, 0.0026, 0.00260994, 81.22018254], [1517000520000, 0.00260994, 0.00260994, 0.00260994, 0.00260994, 165.37376974], [1517000580000, 0.0026, 0.0026, 0.0026, 0.0026, 5.84], [1517000640000, 0.0026, 0.0026, 0.0026, 0.0026, 92.15457482], [1517000700000, 0.00260993, 0.00260994, 0.00260993, 0.00260993, 29.51327094], [1517000760000, 0.0026, 0.0026, 0.0026, 0.0026, 2.73], [1517000820000, 0.0026099, 0.0026099, 0.0026099, 0.0026099, 67.57423321], [1517000940000, 0.00260001, 0.00260001, 0.00260001, 0.00260001, 1.0], [1517001000000, 0.00260001, 0.00260989, 0.00260001, 0.00260988, 28.98943056], [1517001060000, 0.00260988, 0.00260994, 0.00260001, 0.00260986, 197.57194178], [1517001120000, 0.00260994, 0.00261279, 0.00260986, 0.00261279, 39.45256764], [1517001240000, 0.00260993, 0.00261278, 0.0026001, 0.0026001, 125.52580408], [1517001300000, 0.0026002, 0.0026002, 0.00260002, 0.0026001, 175.59652071], [1517001360000, 0.00260002, 0.0026001, 0.00260002, 0.0026001, 13.46131657], [1517001420000, 0.0026001, 0.0026001, 0.0026001, 0.0026001, 6.4050988], [1517001480000, 0.0026001, 0.0026001, 0.0026001, 0.0026001, 0.5], [1517001540000, 0.0026, 0.0026001, 0.0026, 0.0026, 149.68891466], [1517001600000, 0.0026001, 0.0026001, 0.0026, 0.0026001, 45.87952755], [1517001660000, 0.0026001, 0.0026001, 0.0026, 0.0026001, 107.24420381], [1517001720000, 0.0026001, 0.0026001, 0.0026001, 0.0026001, 66.23018214], [1517001780000, 0.0026001, 0.0026001, 0.0026001, 0.0026001, 0.42404075], [1517001840000, 0.0026, 0.0026001, 0.0026, 0.0026001, 117.61344666], [1517001900000, 0.0026001, 0.0026001, 0.0026, 0.0026001, 308.24295934], [1517001960000, 0.0026001, 0.0026128, 0.0026, 0.0026128, 137.69315288], [1517002020000, 0.0026128, 0.0026128, 0.00260608, 0.00261279, 44.52151425], [1517002140000, 0.00261249, 0.00261249, 0.0026001, 0.0026001, 69.5377566], [1517002200000, 0.00261248, 0.00261248, 0.0026001, 0.00261199, 43.20146621], [1517002260000, 0.00261198, 0.00261245, 0.00260001, 0.00260001, 262.06182663], [1517002320000, 0.00260001, 0.00260001, 0.00260001, 0.00260001, 0.42403683], [1517002380000, 0.00260011, 0.00261149, 0.00260001, 0.00261148, 53.41308069], [1517002440000, 0.00261147, 0.00261148, 0.00261145, 0.00261145, 47.21430288], [1517002500000, 0.00261144, 0.00261145, 0.00261144, 0.00261145, 27.79333714], [1517002560000, 0.00261144, 0.00261144, 0.00260001, 0.00260001, 122.76871488], [1517002680000, 0.00260001, 0.00260001, 0.0026, 0.00260001, 36.37252082], [1517002740000, 0.00260001, 0.00260001, 0.00260001, 0.00260001, 5.49969181], [1517002800000, 0.00260002, 0.00261145, 0.00260001, 0.00261145, 61.40915615], [1517003040000, 0.00260001, 0.00260001, 0.0026, 0.0026, 207.85808553], [1517003100000, 0.00260002, 0.0026114, 0.0026, 0.0026114, 62.35603145], [1517003160000, 0.00260002, 0.00260002, 0.0026, 0.0026, 11.61196911], [1517003220000, 0.00261139, 0.00261139, 0.0026, 0.0026, 118.18807249], [1517003280000, 0.0026, 0.0026, 0.0026, 0.0026, 1.27708044], [1517003340000, 0.0026, 0.0026114, 0.0026, 0.0026114, 26.19015312], [1517003400000, 0.00261, 0.00261038, 0.0026, 0.0026, 55.01352432], [1517003460000, 0.00261037, 0.00261038, 0.0026, 0.00261038, 82.89006404], [1517003520000, 0.00261139, 0.00261139, 0.00261036, 0.00261036, 114.45129161], [1517003580000, 0.00260001, 0.00260001, 0.0026, 0.0026, 346.04124148], [1517003640000, 0.0026, 0.0026, 0.0026, 0.0026, 114.96368886], [1517003700000, 0.0026, 0.00260001, 0.0026, 0.00260001, 142.89727272], [1517003760000, 0.00260001, 0.00260001, 0.00260001, 0.00260001, 15.53741306], [1517003820000, 0.00260001, 0.00260001, 0.0025922, 0.0025922, 57.4776841], [1517003880000, 0.0025922, 0.0025922, 0.002592, 0.002592, 128.12341135], [1517003940000, 0.0025901, 0.0026113, 0.00259, 0.002591, 3062.57188124], [1517004000000, 0.002591, 0.00261129, 0.002591, 0.0026, 12.7202179], [1517004060000, 0.0025935, 0.0025935, 0.002591, 0.0025935, 10.34866439], [1517004120000, 0.0025935, 0.0025935, 0.0025935, 0.0025935, 7.21206983], [1517004180000, 0.0025935, 0.0025935, 0.0025935, 0.0025935, 18.5], [1517004240000, 0.0026, 0.0026, 0.0026, 0.0026, 7.67307692], [1517004300000, 0.0025935, 0.0026, 0.0025935, 0.0026, 4.58915383], [1517004420000, 0.002598, 0.0026, 0.002598, 0.0026, 46.46029586], [1517004480000, 0.0025998, 0.0025998, 0.0025935, 0.0025935, 12.90100817], [1517004540000, 0.0025935, 0.0025935, 0.0025935, 0.0025935, 113.85329421], [1517004600000, 0.0025935, 0.0025935, 0.0025935, 0.0025935, 6.97971124], [1517004660000, 0.00258652, 0.00259349, 0.00258652, 0.00258652, 12.96493246], [1517004720000, 0.0025935, 0.0025935, 0.00258652, 0.00258652, 51.47412066], [1517004780000, 0.00258651, 0.00258651, 0.0025863, 0.0025863, 35.15053581], [1517004840000, 0.0025863, 0.0025863, 0.0025863, 0.0025863, 12.48532306], [1517004900000, 0.0025863, 0.0025863, 0.0025863, 0.0025863, 17.82348293], [1517004960000, 0.00258066, 0.0025863, 0.00258064, 0.0025863, 23.45830155], [1517005020000, 0.00258652, 0.00259864, 0.00258652, 0.00259864, 6.37705119], [1517005080000, 0.00258065, 0.00258065, 0.00258064, 0.00258065, 39.31071604], [1517005140000, 0.00259864, 0.00259864, 0.00258066, 0.00259753, 170.57038208], [1517005200000, 0.00259743, 0.00259743, 0.00258065, 0.00258065, 5.87309887], [1517005260000, 0.00258065, 0.00258065, 0.00258065, 0.00258065, 0.74830594], [1517005320000, 0.00259498, 0.00259499, 0.0025918, 0.0025918, 118.48966554], [1517005380000, 0.00258999, 0.00258999, 0.00258996, 0.00258996, 7.09547384], [1517005440000, 0.00258065, 0.00258065, 0.00257, 0.00257, 286.15000187], [1517005500000, 0.00258, 0.00258997, 0.00257001, 0.00257001, 69.46959526], [1517005560000, 0.00257001, 0.00257001, 0.00257001, 0.00257001, 1.00931733], [1517005680000, 0.00258, 0.00258, 0.00258, 0.00258, 95.35599572], [1517005800000, 0.00258001, 0.00258011, 0.00258001, 0.00258001, 10.8353], [1517005920000, 0.0025953, 0.0025953, 0.00258001, 0.0025953, 9.00500721], [1517005980000, 0.0025953, 0.0025953, 0.0025953, 0.0025953, 3.08643087], [1517006040000, 0.0025953, 0.0025953, 0.0025953, 0.0025953, 2.40856192], [1517006100000, 0.0025953, 0.00259531, 0.0025953, 0.00259531, 11.5209035], [1517006160000, 0.0025953, 0.0025953, 0.00259529, 0.00259529, 283.25223318], [1517006220000, 0.00259531, 0.00259531, 0.00258501, 0.00258501, 9.15593127], [1517006280000, 0.00258501, 0.00259528, 0.00258501, 0.00259528, 18.65908009], [1517006340000, 0.00259529, 0.00259529, 0.00259529, 0.00259529, 9.60875278], [1517006400000, 0.00259529, 0.00259531, 0.00259529, 0.00259529, 20.21249705], [1517006520000, 0.00259, 0.00259, 0.00259, 0.00259, 1.15540926], [1517006580000, 0.00258501, 0.00258501, 0.0025805, 0.0025805, 89.99188428], [1517006640000, 0.0025805, 0.0025805, 0.00257964, 0.00257964, 84.93553425], [1517006700000, 0.0025805, 0.0025805, 0.0025805, 0.0025805, 3.140458], [1517006760000, 0.0025804, 0.0025805, 0.00258006, 0.00258006, 21.86068028], [1517006820000, 0.00257068, 0.00257068, 0.00257068, 0.00257068, 26.89158154], [1517006940000, 0.00257069, 0.00258, 0.00257069, 0.00258, 62.69435494], [1517007000000, 0.00258, 0.0025805, 0.00258, 0.0025805, 31.98231265], [1517007120000, 0.00258, 0.0025805, 0.00257132, 0.0025805, 8.96168096], [1517007180000, 0.0025805, 0.0025805, 0.0025805, 0.0025805, 18.19824784], [1517007240000, 0.0025805, 0.0025934, 0.0025805, 0.0025934, 92.80372021], [1517007300000, 0.0025934, 0.0025934, 0.0025934, 0.0025934, 8.015024], [1517007360000, 0.0025934, 0.0025934, 0.00257011, 0.00257011, 115.89390887], [1517007420000, 0.00258468, 0.00259503, 0.00258468, 0.00259503, 4.08283809], [1517007480000, 0.00259503, 0.00259503, 0.002595, 0.002595, 58.50225851], [1517007540000, 0.002594, 0.002594, 0.002571, 0.002571, 32.99155744], [1517007600000, 0.002571, 0.00259295, 0.002571, 0.00259295, 22.13858423], [1517007660000, 0.0025712, 0.00259295, 0.002571, 0.00259295, 50.15028353], [1517007720000, 0.00259295, 0.00259295, 0.00259295, 0.00259295, 5.35164675], [1517007780000, 0.00259277, 0.00259277, 0.00259277, 0.00259277, 4.71198399], [1517007900000, 0.00257018, 0.00259277, 0.00257017, 0.00257017, 334.22888478], [1517007960000, 0.00257118, 0.00259285, 0.00257017, 0.00259285, 60.39470771], [1517008020000, 0.00259275, 0.00259275, 0.00258999, 0.00258999, 16.85058616], [1517008080000, 0.00258798, 0.00258798, 0.00258798, 0.00258798, 1.99], [1517008140000, 0.00258799, 0.00259285, 0.00257018, 0.0025702, 57.62242784], [1517008260000, 0.00258984, 0.00258984, 0.00258984, 0.00258984, 1.19171387], [1517008320000, 0.00259277, 0.00259277, 0.00257859, 0.00257859, 5.94972321], [1517008380000, 0.00257859, 0.00257859, 0.00257023, 0.00257023, 5.01549625], [1517008440000, 0.00257859, 0.00257859, 0.00257859, 0.00257859, 9.00276045], [1517008500000, 0.00257859, 0.00259277, 0.00257859, 0.00259277, 501.30544317], [1517008620000, 0.00259263, 0.00259263, 0.00257859, 0.00257859, 6.75423816], [1517008680000, 0.00257859, 0.00258, 0.00257859, 0.00258, 55.60708421], [1517008740000, 0.00258, 0.00258, 0.00258, 0.00258, 4.49560314], [1517008800000, 0.00258, 0.00259263, 0.00257859, 0.00257859, 40.98798409], [1517008860000, 0.00257859, 0.00257859, 0.00256961, 0.00257, 294.56828062], [1517008920000, 0.00257859, 0.00259263, 0.00257, 0.00259263, 215.04598665], [1517008980000, 0.00257, 0.00259263, 0.00257, 0.00259261, 40.76720434], [1517009040000, 0.00259259, 0.00259259, 0.00257, 0.00257, 20.15397716], [1517009100000, 0.00259253, 0.00259253, 0.00259253, 0.00259253, 30.0], [1517009160000, 0.00259249, 0.00259249, 0.00259247, 0.00259247, 253.0523999], [1517009280000, 0.002592, 0.002592, 0.002592, 0.002592, 1.92889327], [1517009340000, 0.00257002, 0.00258999, 0.00257002, 0.00258999, 57.98998899], [1517009400000, 0.00258999, 0.00258999, 0.00257, 0.00257, 163.60416075], [1517009460000, 0.00258997, 0.00258997, 0.00258997, 0.00258997, 6.19003182], [1517009640000, 0.002589, 0.002589, 0.002589, 0.002589, 0.54074932], [1517009760000, 0.00257501, 0.00257501, 0.00257501, 0.00257501, 3.83152038], [1517009820000, 0.00257501, 0.00258898, 0.00257501, 0.00258898, 171.64409599], [1517009880000, 0.00258897, 0.00258897, 0.00258897, 0.00258897, 5.17624818], [1517010000000, 0.00258897, 0.00258897, 0.00257501, 0.00257501, 1059.08508012], [1517010060000, 0.00257501, 0.00257502, 0.00257501, 0.00257501, 12.02055374], [1517010180000, 0.00258699, 0.00258699, 0.00257501, 0.00257501, 135.54781266], [1517010240000, 0.002587, 0.002587, 0.00257501, 0.00257501, 101.13954915], [1517010300000, 0.002587, 0.002587, 0.002587, 0.002587, 25.12045085], [1517010420000, 0.00258898, 0.00258898, 0.00258898, 0.00258898, 3.11871939], [1517010480000, 0.00258898, 0.00258898, 0.00258894, 0.00258894, 175.60762516], [1517010540000, 0.00258742, 0.00258893, 0.00258742, 0.00258893, 13.078063], [1517010600000, 0.00258893, 0.00258893, 0.00257503, 0.00257503, 47.01227389], [1517010660000, 0.00257503, 0.00257503, 0.00257502, 0.00257502, 13.17971599], [1517010720000, 0.00257502, 0.00258894, 0.00257502, 0.00258894, 5.16422976], [1517010840000, 0.00257502, 0.00257502, 0.00257501, 0.00257501, 74.78306509], [1517010900000, 0.00257501, 0.002585, 0.00257501, 0.00257501, 42.94761604], [1517010960000, 0.002585, 0.00259529, 0.002585, 0.00259529, 77.54301928], [1517011020000, 0.00259526, 0.00259526, 0.00259526, 0.00259526, 13.08474941], [1517011140000, 0.00259499, 0.00259499, 0.00257503, 0.00257503, 31.70842291], [1517011200000, 0.00257504, 0.00257504, 0.00257503, 0.00257504, 1.49428732], [1517011260000, 0.0025751, 0.002576, 0.00257501, 0.00257504, 176.68865425], [1517011320000, 0.00257504, 0.00257504, 0.00257501, 0.00257501, 343.84065538], [1517011380000, 0.00257501, 0.00257501, 0.00257501, 0.00257501, 73.07692308], [1517011440000, 0.00257501, 0.00259477, 0.00257501, 0.00259477, 35.69877131], [1517011500000, 0.00259477, 0.00259477, 0.00259477, 0.00259477, 8.79479106], [1517011560000, 0.00259476, 0.00259476, 0.00259476, 0.00259476, 717.70324518], [1517011680000, 0.00259468, 0.00259468, 0.00257502, 0.00257502, 30.94523577], [1517011740000, 0.00257503, 0.00257503, 0.00257503, 0.00257503, 1.77085102], [1517011800000, 0.00257503, 0.0025946, 0.00257502, 0.0025946, 35.26707883], [1517011860000, 0.00257505, 0.00257505, 0.00257505, 0.00257505, 6.23872015], [1517011920000, 0.00257505, 0.00257505, 0.00257502, 0.00257505, 15.62431031], [1517012040000, 0.00257533, 0.00257533, 0.00257505, 0.00257505, 22.28807214], [1517012100000, 0.00257506, 0.00259457, 0.0025749, 0.00259457, 108.24327336], [1517012160000, 0.00259456, 0.00259458, 0.00257001, 0.00259458, 91.94392591], [1517012220000, 0.00259455, 0.00259456, 0.00259455, 0.00259456, 38.89650618], [1517012280000, 0.00259454, 0.00259454, 0.00259454, 0.00259454, 103.7430334], [1517012340000, 0.00258146, 0.00258146, 0.00258146, 0.00258146, 0.92738112], [1517012400000, 0.00258146, 0.00258146, 0.00258146, 0.00258146, 4.72894763], [1517012460000, 0.00257845, 0.00258146, 0.00257844, 0.00257844, 5.80783377], [1517012580000, 0.00257845, 0.00258146, 0.00257844, 0.00258146, 203.3040748], [1517012640000, 0.0025815, 0.0025815, 0.0025815, 0.0025815, 41.13], [1517012700000, 0.0025815, 0.00259456, 0.00258146, 0.00258146, 212.32731602], [1517012760000, 0.00258146, 0.00259438, 0.00258146, 0.00258146, 170.93320462], [1517012820000, 0.00258402, 0.00258402, 0.00258402, 0.00258402, 9.81157856], [1517012880000, 0.00258402, 0.00258402, 0.00258402, 0.00258402, 26.54138138], [1517012940000, 0.00258402, 0.00258402, 0.00258402, 0.00258402, 73.95865726], [1517013000000, 0.00258146, 0.00258402, 0.00258146, 0.00258402, 43.89969511], [1517013060000, 0.00258402, 0.00258402, 0.00258402, 0.00258402, 0.97339968], [1517013120000, 0.002582, 0.00258402, 0.00257103, 0.00257103, 68.32665898], [1517013180000, 0.0025943, 0.00259434, 0.0025943, 0.00259434, 9.61241953], [1517013240000, 0.00259416, 0.00259416, 0.00259416, 0.00259416, 4.90182565], [1517013300000, 0.00257106, 0.00259428, 0.00257106, 0.00259428, 7.79729022], [1517013360000, 0.00259427, 0.00259427, 0.00258401, 0.00258401, 4.22718139], [1517013420000, 0.00257149, 0.00257149, 0.00257149, 0.00257149, 2.21265103], [1517013480000, 0.00257149, 0.00258401, 0.00257, 0.00257, 292.10588394], [1517013540000, 0.00257001, 0.00258188, 0.00257001, 0.00258188, 64.79683124], [1517013600000, 0.00257155, 0.00258388, 0.00257155, 0.00258388, 66.38366883], [1517013660000, 0.00257003, 0.00258187, 0.00257, 0.00258187, 215.08375119], [1517013720000, 0.00258187, 0.00258187, 0.00258187, 0.00258187, 6.0849791], [1517013780000, 0.0025701, 0.0025701, 0.0025701, 0.0025701, 4.39165999], [1517013840000, 0.0025701, 0.002576, 0.00257, 0.002576, 337.72568241], [1517013900000, 0.002576, 0.002576, 0.002576, 0.002576, 2.63713091], [1517013960000, 0.002576, 0.002584, 0.002576, 0.002584, 11.97713062], [1517014080000, 0.00257614, 0.00257614, 0.00257614, 0.00257614, 10.0], [1517014140000, 0.00259, 0.00259, 0.00259, 0.00259, 12.78217881], [1517014200000, 0.00259, 0.00259, 0.00259, 0.00259, 266.7943333], [1517014260000, 0.00258999, 0.00258999, 0.00258999, 0.00258999, 1.71927305], [1517014320000, 0.00258993, 0.00259, 0.00258993, 0.00259, 225.61433349], [1517014380000, 0.00259, 0.00259374, 0.00259, 0.00259374, 560.88355638], [1517014440000, 0.00259367, 0.00259367, 0.00258014, 0.00258014, 143.08986752], [1517014500000, 0.00258015, 0.00259365, 0.00258014, 0.00258014, 133.19063703], [1517014560000, 0.00258014, 0.00258014, 0.00257, 0.00257613, 152.11845437], [1517014620000, 0.00257613, 0.00257613, 0.00257613, 0.00257613, 115.64384482], [1517014680000, 0.00257613, 0.00257613, 0.002575, 0.00257613, 13.01858772], [1517014740000, 0.00257613, 0.00257613, 0.00257612, 0.00257613, 144.77669145], [1517014800000, 0.00257613, 0.00257613, 0.00257612, 0.00257613, 134.07075828], [1517014860000, 0.00257613, 0.00257613, 0.00257613, 0.00257613, 1.40441222], [1517014920000, 0.00257613, 0.00257613, 0.00257613, 0.00257613, 292.68814199], [1517014980000, 0.00257613, 0.00257613, 0.00257613, 0.00257613, 476.12266064], [1517015040000, 0.00257613, 0.00257613, 0.00257008, 0.00257613, 48.40281088], [1517015100000, 0.00257613, 0.00257613, 0.00257613, 0.00257613, 73.86710188], [1517015220000, 0.00257613, 0.00257613, 0.00257613, 0.00257613, 2.34003599], [1517015340000, 0.00257613, 0.00257614, 0.00257613, 0.00257614, 2.39799835], [1517015400000, 0.00257631, 0.00257631, 0.0025763, 0.0025763, 15.16001518], [1517015460000, 0.00259237, 0.00259529, 0.00259237, 0.00259529, 449.24184296], [1517015520000, 0.00259237, 0.00259237, 0.0025794, 0.0025794, 135.50778391], [1517015580000, 0.00259237, 0.00259528, 0.0025763, 0.00259525, 30.02007359], [1517015760000, 0.0025949, 0.00259491, 0.0025949, 0.00259491, 53.71031861], [1517015820000, 0.00258, 0.00258, 0.00258, 0.00258, 121.61516125], [1517015880000, 0.00258, 0.00258, 0.00258, 0.00258, 5.30216094], [1517016000000, 0.00258, 0.00259482, 0.00258, 0.00259482, 431.12715859], [1517016060000, 0.00257725, 0.00257725, 0.00257725, 0.00257725, 3.0306363], [1517016120000, 0.00257725, 0.00257725, 0.00257725, 0.00257725, 2.41452988], [1517016180000, 0.0025763, 0.00259399, 0.0025763, 0.00259399, 3.12110589], [1517016240000, 0.00259398, 0.00259398, 0.00259398, 0.00259398, 10.49757458], [1517016300000, 0.0025763, 0.0025763, 0.00257627, 0.00257627, 50.58670093], [1517016360000, 0.00257627, 0.00257627, 0.00257614, 0.00257614, 79.38472901], [1517016420000, 0.00257614, 0.00257614, 0.00257614, 0.00257614, 606.40093912], [1517016480000, 0.00257614, 0.00257614, 0.00257614, 0.00257614, 1.2969916], [1517016600000, 0.00259387, 0.00259387, 0.00257614, 0.00257614, 11.92028517], [1517016660000, 0.00257615, 0.002583, 0.00257614, 0.002583, 179.5100723], [1517016720000, 0.002583, 0.002583, 0.002583, 0.002583, 64.85126345], [1517016840000, 0.002583, 0.00259199, 0.00257642, 0.00257642, 15.44291171], [1517016900000, 0.00258199, 0.00259157, 0.00258199, 0.00259157, 8.14717763], [1517016960000, 0.00257642, 0.00258, 0.002571, 0.002571, 103.02112974], [1517017020000, 0.00257642, 0.00257642, 0.002571, 0.002571, 6.39243], [1517017080000, 0.00257642, 0.002579, 0.002571, 0.002571, 236.76351441], [1517017260000, 0.00259132, 0.00259132, 0.00259132, 0.00259132, 6.51416018], [1517017320000, 0.002571, 0.002571, 0.002571, 0.002571, 14.39128743], [1517017380000, 0.002571, 0.00259127, 0.00257, 0.00259127, 108.86833009], [1517017440000, 0.00259127, 0.00259127, 0.00257, 0.00257, 46.99389011], [1517017560000, 0.00258622, 0.00258622, 0.00257, 0.00257, 90.12455767], [1517017620000, 0.00257, 0.00257, 0.00257, 0.00257, 23.36009086], [1517017680000, 0.00256961, 0.00256961, 0.00256961, 0.00256961, 3.50507523], [1517017740000, 0.00256951, 0.00256951, 0.0025695, 0.00256951, 52.25], [1517017800000, 0.00256951, 0.00258608, 0.00256951, 0.00258608, 64.93], [1517017860000, 0.00258607, 0.00258607, 0.00258607, 0.00258607, 1.1291878], [1517017980000, 0.00256952, 0.00256952, 0.00256951, 0.00256951, 33.9015], [1517018040000, 0.00256951, 0.00256952, 0.00256951, 0.00256952, 21.53988805], [1517018100000, 0.00256951, 0.00256951, 0.00256951, 0.00256951, 1.95389278], [1517018160000, 0.00256951, 0.00256951, 0.002565, 0.002565, 221.34971671], [1517018220000, 0.002565, 0.00256606, 0.00256241, 0.00256241, 331.3043048], [1517018280000, 0.00256241, 0.00256241, 0.00256241, 0.00256241, 5.0716063], [1517018340000, 0.00256606, 0.00256606, 0.00256241, 0.00256241, 3.56004546], [1517018400000, 0.00256241, 0.00256952, 0.00256241, 0.00256952, 64.91996102], [1517018460000, 0.00256606, 0.00256606, 0.00256606, 0.00256606, 192.81730951], [1517018520000, 0.002578, 0.00258579, 0.002578, 0.002578, 89.31344212], [1517018580000, 0.00258572, 0.00258572, 0.002578, 0.00258572, 42.56308985], [1517018640000, 0.00258572, 0.00258572, 0.00256106, 0.00256109, 160.13988922], [1517018700000, 0.00258572, 0.00258572, 0.00258572, 0.00258572, 0.45511212], [1517018760000, 0.00258572, 0.00258622, 0.00258572, 0.00258622, 87.47146076], [1517018820000, 0.00258622, 0.00258622, 0.00258622, 0.00258622, 4.75568662], [1517018880000, 0.00258622, 0.00258622, 0.00257351, 0.00257351, 111.63329904], [1517019000000, 0.00258627, 0.00260077, 0.00258626, 0.00260077, 310.07901554], [1517019060000, 0.00260065, 0.00260069, 0.00258626, 0.00258626, 1158.30218662], [1517019180000, 0.00258626, 0.00258626, 0.00256178, 0.002562, 1006.62704829], [1517019240000, 0.00256274, 0.00256274, 0.00256274, 0.00256274, 38.59556991], [1517019300000, 0.00256328, 0.00258627, 0.00256325, 0.00258623, 14.96066781], [1517019360000, 0.0025701, 0.0025701, 0.0025701, 0.0025701, 0.37668941], [1517019420000, 0.00257017, 0.00257017, 0.00255902, 0.00255902, 588.17271366], [1517019480000, 0.00257021, 0.00257278, 0.0025591, 0.0025591, 96.58673726], [1517019540000, 0.00257079, 0.00257079, 0.00257079, 0.00257079, 3.88013026], [1517019600000, 0.00258128, 0.002587, 0.00258128, 0.00258294, 6.82197441], [1517019660000, 0.00258, 0.00258, 0.002572, 0.002572, 98.16389293], [1517019720000, 0.002572, 0.002572, 0.00256463, 0.00256463, 356.12821644], [1517019780000, 0.00257603, 0.00257603, 0.0025621, 0.00257603, 329.94827884], [1517019840000, 0.002578, 0.00257997, 0.002578, 0.00257997, 101.26025576], [1517019900000, 0.00257997, 0.00257998, 0.00257997, 0.00257998, 18.53799967], [1517019960000, 0.00256225, 0.00256225, 0.00256225, 0.00256225, 7.43897179], [1517020020000, 0.00256234, 0.00256234, 0.00256234, 0.00256234, 0.53240791], [1517020080000, 0.00256249, 0.00256249, 0.00256248, 0.00256248, 5.0], [1517020260000, 0.00256298, 0.00256298, 0.00256248, 0.00256248, 184.20757552], [1517020320000, 0.00256248, 0.00257998, 0.00256248, 0.00257997, 104.64709595], [1517020440000, 0.00257997, 0.00257998, 0.00257997, 0.00257998, 2.34875273], [1517020500000, 0.00256403, 0.00257998, 0.00256403, 0.00257998, 18.04283857], [1517020560000, 0.00257997, 0.00257998, 0.00256406, 0.00256406, 52.92288031], [1517020620000, 0.00256406, 0.00256406, 0.00256406, 0.00256406, 0.19648212], [1517020680000, 0.00256406, 0.00256507, 0.00256406, 0.00256507, 63.4794079], [1517020740000, 0.00256507, 0.00256764, 0.00256506, 0.00256506, 39.01762445], [1517020800000, 0.00256764, 0.00257993, 0.00256764, 0.00256764, 46.60114249], [1517020860000, 0.00256506, 0.00256506, 0.00256406, 0.00256406, 0.68276646], [1517020920000, 0.00256406, 0.00257, 0.00256406, 0.00256406, 198.98732196], [1517020980000, 0.0025798, 0.00257982, 0.00257978, 0.00257978, 34.70854071], [1517021040000, 0.00257044, 0.00257977, 0.00256406, 0.00257977, 8.91217576], [1517021100000, 0.00257976, 0.00257976, 0.00256406, 0.00257976, 121.15351009], [1517021160000, 0.00256406, 0.00257972, 0.00256406, 0.00257835, 148.15143068], [1517021220000, 0.00257834, 0.00257977, 0.00257834, 0.00257974, 27.44802051], [1517021280000, 0.00257974, 0.00257978, 0.00257969, 0.0025797, 26.62778231], [1517021340000, 0.00256408, 0.00258895, 0.00256408, 0.00258895, 923.66118258], [1517021400000, 0.00258855, 0.00258855, 0.00258855, 0.00258855, 3.86307709], [1517021460000, 0.00257, 0.00257191, 0.00256407, 0.00256407, 97.94133478], [1517021520000, 0.00256407, 0.00256407, 0.00256406, 0.00256406, 22.23508792], [1517021580000, 0.00256406, 0.00257191, 0.00256406, 0.00257191, 8.59758245], [1517021640000, 0.00257191, 0.00257191, 0.00257191, 0.00257191, 12.77485389], [1517021700000, 0.00257191, 0.00258468, 0.00257191, 0.00257191, 97.22141275], [1517021760000, 0.00257191, 0.00257191, 0.00257191, 0.00257191, 13.41409182], [1517021820000, 0.00257191, 0.00258418, 0.00257191, 0.00258418, 1.3218079], [1517021880000, 0.00257191, 0.00258416, 0.00256406, 0.00258416, 319.64449934], [1517021940000, 0.00258416, 0.00258416, 0.00257792, 0.00257793, 4.60400352], [1517022000000, 0.00257792, 0.00257792, 0.00257792, 0.00257792, 3.87909632], [1517022060000, 0.002567, 0.002567, 0.00256406, 0.00256406, 30.0], [1517022120000, 0.00258, 0.00258, 0.00258, 0.00258, 0.71496551], [1517022180000, 0.00258, 0.00258337, 0.00256507, 0.00256507, 14.6729551], [1517022240000, 0.00256507, 0.00256507, 0.00256507, 0.00256507, 3.89990524], [1517022300000, 0.0025829, 0.00258296, 0.00256507, 0.00258287, 15.91094341], [1517022360000, 0.00256507, 0.00256507, 0.00256507, 0.00256507, 18.09383968], [1517022420000, 0.00256579, 0.00256579, 0.002565, 0.002565, 420.08838097], [1517022480000, 0.002565, 0.002574, 0.002565, 0.002574, 48.95039629], [1517022540000, 0.002565, 0.002565, 0.002565, 0.002565, 90.0], [1517022600000, 0.00257921, 0.00257921, 0.0025791, 0.0025791, 54.26478747], [1517022660000, 0.002565, 0.00257896, 0.002565, 0.00257896, 11.96609137], [1517022720000, 0.00257892, 0.00257892, 0.002565, 0.002565, 10.85964912], [1517022780000, 0.00256501, 0.00256501, 0.00256501, 0.00256501, 8.40169229], [1517022840000, 0.00257, 0.00257, 0.00257, 0.00257, 11.18446608], [1517022900000, 0.00257, 0.00257, 0.00257, 0.00257, 48.14098833], [1517022960000, 0.00257, 0.0025784, 0.00257, 0.00257001, 21.21827928], [1517023020000, 0.00257001, 0.00257001, 0.00257, 0.00257, 237.22756885], [1517023080000, 0.00257001, 0.00257001, 0.00257001, 0.00257001, 12.9562337], [1517023140000, 0.0025784, 0.00257841, 0.00257001, 0.00257002, 1.94445813], [1517023200000, 0.00257834, 0.00257834, 0.00257, 0.00257, 134.2838343], [1517023260000, 0.00257002, 0.00257831, 0.00257002, 0.00257831, 86.50698295], [1517023320000, 0.00257002, 0.00257829, 0.00256637, 0.00256637, 471.12615969], [1517023380000, 0.00257, 0.00257, 0.00257, 0.00257, 11.7024], [1517023440000, 0.00257, 0.00257, 0.00257, 0.00257, 7.055675], [1517023500000, 0.00257, 0.00257, 0.00257, 0.00257, 0.42898833], [1517023560000, 0.0025701, 0.0025701, 0.0025701, 0.0025701, 11.95331305], [1517023620000, 0.0025701, 0.0025701, 0.0025701, 0.0025701, 19.10798964], [1517023680000, 0.00257021, 0.00257806, 0.00257021, 0.00257021, 37.15674962], [1517023740000, 0.00257022, 0.00257022, 0.00257021, 0.00257021, 212.833458], [1517023800000, 0.00257021, 0.00257818, 0.00257021, 0.00257021, 44.63132494], [1517023860000, 0.00257021, 0.00257021, 0.00257021, 0.00257021, 21.013003], [1517023920000, 0.00257815, 0.00257815, 0.00257021, 0.00257021, 59.49376854], [1517023980000, 0.00257818, 0.00257818, 0.00257021, 0.00257818, 116.96176218], [1517024040000, 0.00257023, 0.00257818, 0.00257023, 0.00257023, 49.3789691], [1517024100000, 0.00257023, 0.00257819, 0.00257021, 0.00257818, 20.62268937], [1517024160000, 0.00257818, 0.00257818, 0.00257036, 0.00257036, 1.00360324], [1517024220000, 0.00257036, 0.00257818, 0.00257036, 0.00257818, 102.37940091], [1517024280000, 0.00257036, 0.00257036, 0.00257036, 0.00257036, 0.85785648], [1517024340000, 0.00257036, 0.00257036, 0.00257036, 0.00257036, 96.24846405], [1517024400000, 0.00257036, 0.00257817, 0.00257036, 0.00257036, 42.7226897], [1517024460000, 0.00257036, 0.00257817, 0.00257036, 0.00257817, 241.57331048], [1517024520000, 0.00257036, 0.00257816, 0.00257036, 0.00257039, 204.86456326], [1517024580000, 0.00257039, 0.00257039, 0.00257015, 0.00257022, 420.09695586], [1517024640000, 0.00257022, 0.00257698, 0.00255902, 0.00257698, 1671.3290787], [1517024700000, 0.00257698, 0.00257699, 0.00257698, 0.00257699, 18.32727709], [1517024760000, 0.00256038, 0.00256039, 0.00256038, 0.00256039, 4.02617947], [1517024820000, 0.00256039, 0.00256039, 0.00256039, 0.00256039, 90.21381721], [1517024940000, 0.0025605, 0.0025605, 0.00256039, 0.0025605, 127.76740524], [1517025000000, 0.00257, 0.00257, 0.00257, 0.00257, 1.006], [1517025120000, 0.00257, 0.00257, 0.00256042, 0.00256043, 146.21158111], [1517025180000, 0.00256043, 0.00256043, 0.00256043, 0.00256043, 7.673734], [1517025240000, 0.00256043, 0.00256043, 0.00256043, 0.00256043, 1.4256606], [1517025300000, 0.00257594, 0.00257594, 0.00257594, 0.00257594, 2.32257788], [1517025360000, 0.0025605, 0.0025605, 0.0025605, 0.0025605, 10.98727674], [1517025480000, 0.0025605, 0.0025605, 0.00256039, 0.00256039, 60.68618626], [1517025540000, 0.0025605, 0.00257664, 0.00256038, 0.00257664, 495.36506481], [1517025600000, 0.00257667, 0.00257667, 0.00257667, 0.00257667, 7.76198644], [1517025660000, 0.0025605, 0.0025605, 0.0025605, 0.0025605, 50.0], [1517025780000, 0.002561, 0.002561, 0.0025606, 0.0025606, 5.6710775], [1517025840000, 0.00257664, 0.00257664, 0.00257664, 0.00257664, 7.40730003], [1517025900000, 0.0025766, 0.0025766, 0.0025766, 0.0025766, 3.88108359], [1517025960000, 0.0025607, 0.0025607, 0.0025607, 0.0025607, 2.0073739], [1517026020000, 0.00257549, 0.00257599, 0.0025607, 0.0025607, 1061.27742841], [1517026080000, 0.0025607, 0.00257597, 0.0025607, 0.00257597, 7.58467539], [1517026140000, 0.00257597, 0.00257597, 0.00257597, 0.00257597, 78.76943892], [1517026200000, 0.00256071, 0.00257597, 0.00256071, 0.00257597, 10.524666], [1517026260000, 0.00256144, 0.00256144, 0.00256144, 0.00256144, 0.47846133], [1517026320000, 0.00256086, 0.00256144, 0.00256086, 0.00256144, 5.38248005], [1517026500000, 0.00257497, 0.00257497, 0.00257497, 0.00257497, 11.6505759], [1517026620000, 0.00257488, 0.00257488, 0.00257, 0.00257, 14.20214526], [1517026680000, 0.00257001, 0.00257484, 0.00257, 0.00257484, 120.26788898], [1517026740000, 0.00257001, 0.00257001, 0.00257001, 0.00257001, 19.19961891], [1517026800000, 0.00257001, 0.00257009, 0.00257001, 0.00257009, 12.12204006], [1517026860000, 0.00257009, 0.0025749, 0.00257001, 0.00257001, 632.49440483], [1517026920000, 0.00257001, 0.00257001, 0.00257001, 0.00257001, 1.66460727], [1517026980000, 0.00257484, 0.00257484, 0.00257001, 0.00257001, 40.58663483], [1517027040000, 0.00257002, 0.00257002, 0.00257002, 0.00257002, 12.56026998], [1517027100000, 0.00257002, 0.002574, 0.00257002, 0.00257003, 70.61220815], [1517027160000, 0.00257003, 0.00257399, 0.00257001, 0.00257398, 187.26856109], [1517027220000, 0.00257001, 0.002574, 0.00257, 0.00257, 240.67498901], [1517027280000, 0.00257, 0.00257, 0.00256088, 0.00256089, 52.59690889], [1517027340000, 0.00257398, 0.002574, 0.00257398, 0.002574, 14.20015892], [1517027460000, 0.00257399, 0.00257399, 0.00257399, 0.00257399, 0.7220626], [1517027520000, 0.00257399, 0.00257399, 0.0025609, 0.00256475, 42.22278564], [1517027580000, 0.002562, 0.00256475, 0.002562, 0.00256475, 9.23550454], [1517027640000, 0.00257373, 0.00257527, 0.00255515, 0.00257527, 786.03753564], [1517027700000, 0.00257527, 0.00257527, 0.00257527, 0.00257527, 77.61521492], [1517027760000, 0.0025725, 0.00257525, 0.00256227, 0.00256227, 75.88462059], [1517027820000, 0.00256227, 0.00256227, 0.00256227, 0.00256227, 9.62e-06], [1517027880000, 0.00256223, 0.00257509, 0.00256223, 0.00256227, 13.91642308], [1517028240000, 0.00256223, 0.00256223, 0.00256223, 0.00256223, 0.42931353], [1517028300000, 0.00255515, 0.00255515, 0.00255515, 0.00255515, 152.79486025], [1517028360000, 0.00255515, 0.00255515, 0.00255515, 0.00255515, 2.3320807], [1517028420000, 0.00256223, 0.00256223, 0.00256223, 0.00256223, 22.50946712], [1517028480000, 0.00256227, 0.00256227, 0.00256227, 0.00256227, 6.691008], [1517028540000, 0.00256227, 0.00256227, 0.00256227, 0.00256227, 5.64705882], [1517028600000, 0.00256227, 0.00257379, 0.00255406, 0.00255406, 1021.11387148], [1517028660000, 0.00255413, 0.00255413, 0.00255406, 0.00255406, 345.94071568], [1517028720000, 0.00255406, 0.00257207, 0.00255406, 0.00257207, 6.83724666], [1517028780000, 0.00257207, 0.0025739, 0.00257207, 0.0025738, 926.94155275], [1517028840000, 0.0025738, 0.0025738, 0.00256093, 0.00256093, 70.28075524], [1517028900000, 0.00256093, 0.00257389, 0.00256093, 0.00257389, 13.68325157], [1517028960000, 0.0025739, 0.0025739, 0.0025739, 0.0025739, 5.43409738], [1517029020000, 0.00256093, 0.00256093, 0.00256093, 0.00256093, 59.42599513], [1517029140000, 0.00256093, 0.00256093, 0.00256093, 0.00256093, 29.43892578], [1517029200000, 0.00256093, 0.00256093, 0.00256093, 0.00256093, 40.94532428], [1517029320000, 0.0025739, 0.0025739, 0.0025739, 0.0025739, 32.64082057], [1517029380000, 0.00256093, 0.00256093, 0.00256093, 0.00256093, 0.43050767], [1517029440000, 0.00256093, 0.00257384, 0.0025541, 0.0025541, 112.54286006], [1517029620000, 0.0025541, 0.0025541, 0.0025541, 0.0025541, 3.41406202], [1517029680000, 0.00257085, 0.00257085, 0.00257085, 0.00257085, 67.53739183], [1517029740000, 0.00257083, 0.00257083, 0.00257083, 0.00257083, 18.18525007], [1517029800000, 0.0025608, 0.0025608, 0.0025608, 0.0025608, 12.84906376], [1517029860000, 0.0025608, 0.0025707, 0.0025608, 0.00257069, 17.50870642], [1517029920000, 0.00256799, 0.00256799, 0.00256, 0.00256, 15.74641106], [1517029980000, 0.00256, 0.00256, 0.00255551, 0.00255551, 7.11142326], [1517030040000, 0.00256, 0.00256, 0.00256, 0.00256, 29.85248015], [1517030100000, 0.00255601, 0.00256, 0.00255601, 0.00256, 380.59986165], [1517030160000, 0.00257374, 0.00257376, 0.00257374, 0.00257376, 318.3963656], [1517030220000, 0.00257377, 0.00257378, 0.00256, 0.00256, 61.15451691], [1517030340000, 0.00256033, 0.00257377, 0.00256033, 0.00257377, 6.96595669], [1517030400000, 0.00257378, 0.00257389, 0.00257377, 0.00257389, 7.07153047], [1517030460000, 0.00257387, 0.00257387, 0.0025604, 0.0025604, 56.68916798], [1517030520000, 0.00257372, 0.00257372, 0.00257372, 0.00257372, 8.03131393], [1517030580000, 0.00256044, 0.00257367, 0.00256044, 0.00257367, 4.23763199], [1517030640000, 0.00257357, 0.0025739, 0.00257357, 0.0025739, 240.62171686], [1517030700000, 0.0025739, 0.00257523, 0.0025604, 0.0025604, 885.23101054], [1517030760000, 0.0025604, 0.00257385, 0.0025604, 0.0025604, 333.95741982], [1517030820000, 0.00257389, 0.00257389, 0.00257389, 0.00257389, 4.99937052], [1517030940000, 0.0025605, 0.0025605, 0.0025605, 0.0025605, 6.53498641], [1517031000000, 0.0025605, 0.0025605, 0.0025604, 0.0025604, 512.58817641], [1517031060000, 0.0025604, 0.00256049, 0.0025604, 0.00256049, 68.08871328], [1517031120000, 0.00257312, 0.00257316, 0.0025604, 0.0025604, 528.49121905], [1517031180000, 0.00256049, 0.00257256, 0.0025604, 0.00257252, 244.00325629], [1517031240000, 0.00256049, 0.00256049, 0.00256049, 0.00256049, 147.77843928], [1517031300000, 0.00256049, 0.00257104, 0.0025604, 0.0025604, 36.44328511], [1517031360000, 0.0025604, 0.0025604, 0.00255691, 0.00255691, 179.32942908], [1517031420000, 0.00256657, 0.00256657, 0.00255411, 0.00255411, 87.38443743], [1517031480000, 0.00255411, 0.002556, 0.00255411, 0.002555, 129.56043772], [1517031540000, 0.002557, 0.00256355, 0.002557, 0.002557, 6.50939535], [1517031600000, 0.00255701, 0.00255702, 0.00255701, 0.00255702, 0.8623353], [1517031660000, 0.00255702, 0.00256354, 0.00255701, 0.00256354, 357.98217505], [1517031720000, 0.00255701, 0.00255701, 0.00255, 0.00255701, 885.65504791], [1517031780000, 0.00255, 0.00255, 0.00254857, 0.00254857, 510.62174946], [1517031840000, 0.00255698, 0.002561, 0.0025474, 0.00255499, 74.90159047], [1517031900000, 0.002555, 0.002555, 0.0025474, 0.0025474, 124.68037696], [1517031960000, 0.00255498, 0.002555, 0.0025474, 0.0025474, 481.89444602], [1517032020000, 0.00254741, 0.002555, 0.0025452, 0.002555, 14.14183228], [1517032080000, 0.002545, 0.002545, 0.002545, 0.002545, 7.5741155], [1517032140000, 0.00255499, 0.002555, 0.00254501, 0.00254501, 12.93155123], [1517032200000, 0.00255499, 0.00255499, 0.00255498, 0.00255499, 14.36599286], [1517032260000, 0.00255499, 0.002555, 0.00255499, 0.002555, 256.21797695], [1517032320000, 0.002555, 0.002555, 0.00255499, 0.002555, 200.96165267], [1517032380000, 0.002555, 0.002555, 0.002555, 0.002555, 0.43052838], [1517032440000, 0.00254501, 0.002555, 0.00254021, 0.002555, 633.75209885], [1517032500000, 0.002554, 0.002554, 0.00255292, 0.00255292, 9.44087524], [1517032560000, 0.00255292, 0.00255292, 0.00255292, 0.00255292, 1038.91490426], [1517032620000, 0.00255292, 0.00255292, 0.00254025, 0.00255291, 298.79667819], [1517032680000, 0.00255291, 0.002554, 0.00254026, 0.00254026, 43.12110215], [1517032800000, 0.002545, 0.002555, 0.002545, 0.002554, 72.9020221], [1517032860000, 0.002555, 0.00256125, 0.002555, 0.00256125, 155.47951002], [1517032920000, 0.002555, 0.00256125, 0.002554, 0.002554, 93.32671344], [1517033040000, 0.002554, 0.002555, 0.002554, 0.002555, 14.00952893], [1517033100000, 0.002555, 0.002555, 0.002555, 0.002555, 3.91389432], [1517033220000, 0.002555, 0.002555, 0.00254032, 0.00254032, 61.15800946], [1517033280000, 0.00254211, 0.002555, 0.00254211, 0.002555, 77.69121035], [1517033340000, 0.002555, 0.002555, 0.002555, 0.002555, 12.43842084], [1517033400000, 0.002555, 0.002555, 0.002555, 0.002555, 88.50138935], [1517033460000, 0.0025426, 0.00256762, 0.00254259, 0.00256762, 230.10064175], [1517033520000, 0.00255501, 0.0025676, 0.0025427, 0.0025676, 134.41896763], [1517033580000, 0.002555, 0.002555, 0.002555, 0.002555, 50.4045187], [1517033700000, 0.00254272, 0.002555, 0.0025427, 0.002555, 15.46229833], [1517033760000, 0.002555, 0.002555, 0.002555, 0.002555, 17.86731903], [1517033820000, 0.002555, 0.002555, 0.00255, 0.002555, 99.2773741], [1517033880000, 0.00255, 0.002555, 0.00255, 0.002555, 12.30971567], [1517033940000, 0.002555, 0.002555, 0.002555, 0.002555, 85.12647082], [1517034000000, 0.002555, 0.002555, 0.002555, 0.002555, 11.17015914], [1517034060000, 0.0025501, 0.002555, 0.0025501, 0.002555, 53.0], [1517034120000, 0.002555, 0.002555, 0.002555, 0.002555, 48.86775861], [1517034180000, 0.002555, 0.002555, 0.002555, 0.002555, 21.20796267], [1517034300000, 0.002555, 0.002555, 0.002555, 0.002555, 263.49919297], [1517034360000, 0.002555, 0.002555, 0.002555, 0.002555, 164.44820819], [1517034420000, 0.002555, 0.002555, 0.002555, 0.002555, 172.52061974], [1517034480000, 0.002555, 0.002555, 0.002555, 0.002555, 0.99918057], [1517034540000, 0.002555, 0.002555, 0.00255012, 0.00255012, 1132.45359309], [1517034600000, 0.002555, 0.002555, 0.00255011, 0.002555, 342.7129151], [1517034660000, 0.002555, 0.002555, 0.002555, 0.002555, 0.55509447], [1517034780000, 0.002555, 0.002555, 0.002555, 0.002555, 34.87244062], [1517034840000, 0.002555, 0.00256949, 0.002555, 0.00256949, 190.52733243], [1517034900000, 0.00256948, 0.00256948, 0.002555, 0.002555, 1.37097515], [1517034960000, 0.00256946, 0.00256946, 0.00256946, 0.00256946, 81.63893051], [1517035020000, 0.00256945, 0.00256946, 0.002555, 0.002555, 219.73312828], [1517035080000, 0.00256944, 0.00256944, 0.00256944, 0.00256944, 4.0], [1517035140000, 0.002555, 0.0025694, 0.002555, 0.002555, 90.0641294], [1517035200000, 0.002555, 0.002555, 0.002551, 0.002551, 3.13169457], [1517035260000, 0.00255101, 0.00255102, 0.00255014, 0.00255102, 308.39518326], [1517035320000, 0.00255014, 0.00255014, 0.00255011, 0.00255011, 220.4286187], [1517035380000, 0.00255, 0.00255, 0.00255, 0.00255, 20.04331212], [1517035440000, 0.00255101, 0.00255101, 0.00255, 0.00255, 0.82534572], [1517035500000, 0.00255102, 0.00255102, 0.00255, 0.00255, 68.82435412], [1517035560000, 0.00255001, 0.00255001, 0.0025435, 0.0025435, 118.80687782], [1517035680000, 0.00254999, 0.00255, 0.00254344, 0.0025435, 186.25441164], [1517035740000, 0.0025435, 0.00255, 0.0025435, 0.00255, 7.57075602], [1517035800000, 0.00255, 0.00255, 0.00255, 0.00255, 121.48619039], [1517035860000, 0.00255, 0.00255, 0.00254999, 0.00255, 480.96610388], [1517035920000, 0.00255, 0.00255, 0.00254351, 0.00255, 89.45416571], [1517035980000, 0.00255, 0.00255, 0.00254401, 0.00255, 245.56316982], [1517036040000, 0.00255, 0.00255, 0.00255, 0.00255, 88.98536747], [1517036100000, 0.00255, 0.00255, 0.002546, 0.00255, 83.81474903], [1517036160000, 0.00255, 0.00255, 0.00255, 0.00255, 6.08578026], [1517036220000, 0.00255, 0.00255, 0.00255, 0.00255, 173.38582754], [1517036280000, 0.00255, 0.00255, 0.00254999, 0.00254999, 0.86605292], [1517036340000, 0.00254999, 0.00255, 0.002545, 0.00255, 88.35394446], [1517036400000, 0.00255, 0.00255, 0.00255, 0.00255, 20.21034083], [1517036460000, 0.00255, 0.00255, 0.00255, 0.00255, 21.66254607], [1517036520000, 0.00255, 0.00255, 0.00255, 0.00255, 931.10115378], [1517036580000, 0.00255, 0.00255, 0.00255, 0.00255, 67.64080421], [1517036640000, 0.00256293, 0.00256293, 0.00256293, 0.00256293, 26.92970552], [1517036700000, 0.00256294, 0.00256294, 0.00256293, 0.00256293, 7.02617345], [1517036760000, 0.00256294, 0.00256294, 0.002562, 0.002562, 11.87124643], [1517036820000, 0.00256294, 0.00256294, 0.00256294, 0.00256294, 13.48693402], [1517036880000, 0.00256368, 0.00256884, 0.00256294, 0.00256294, 3.60792192], [1517036940000, 0.00256881, 0.00256881, 0.002562, 0.00256878, 237.92032582], [1517037000000, 0.0025631, 0.0025631, 0.00256294, 0.00256294, 37.59690792], [1517037060000, 0.00256294, 0.00256294, 0.002562, 0.002562, 56.74250989], [1517037120000, 0.00256863, 0.00256865, 0.00256863, 0.00256865, 334.75102523], [1517037240000, 0.00256861, 0.00256861, 0.002551, 0.002551, 10.16697916], [1517037300000, 0.00256856, 0.00256856, 0.002551, 0.002551, 17.34504471], [1517037360000, 0.002551, 0.00255101, 0.002551, 0.00255101, 16.60373239], [1517037420000, 0.00256877, 0.00256877, 0.00256877, 0.00256877, 52.75596726], [1517037480000, 0.00255103, 0.00255103, 0.00255103, 0.00255103, 378.59442729], [1517037540000, 0.00255103, 0.00255103, 0.00255103, 0.00255103, 84.13436072], [1517037600000, 0.00255103, 0.00255103, 0.00255102, 0.00255102, 327.01329942], [1517037660000, 0.00256875, 0.00256875, 0.00256399, 0.00256399, 53.09630804], [1517037720000, 0.00255104, 0.00255104, 0.00255104, 0.00255104, 62.82743839], [1517037780000, 0.00255276, 0.002562, 0.00255104, 0.00256, 362.9764505], [1517037840000, 0.00256, 0.00256399, 0.00256, 0.00256399, 148.36514046], [1517037900000, 0.00256, 0.00256399, 0.00256, 0.00256399, 403.46099673], [1517037960000, 0.00256399, 0.00256629, 0.00256399, 0.00256399, 41.71338292], [1517038020000, 0.00256399, 0.00256399, 0.00256399, 0.00256399, 455.39304442], [1517038080000, 0.00256001, 0.00256399, 0.00256001, 0.00256399, 263.61582297], [1517038140000, 0.00256399, 0.00256399, 0.00256399, 0.00256399, 9.49117293], [1517038200000, 0.00256003, 0.00256399, 0.00256003, 0.0025605, 24.33525447], [1517038260000, 0.00256399, 0.00256399, 0.00256399, 0.00256399, 1.54168099], [1517038320000, 0.00256399, 0.00256399, 0.00256399, 0.00256399, 11.67514501], [1517038380000, 0.00256399, 0.00256399, 0.002561, 0.00256399, 242.63576457], [1517038440000, 0.00256399, 0.00256399, 0.00256, 0.00256, 298.61155399], [1517038500000, 0.00256, 0.00256681, 0.00256, 0.00256, 203.59095943], [1517038560000, 0.00256, 0.00256677, 0.00256, 0.00256, 9.90081837], [1517038620000, 0.00256, 0.00256674, 0.00256, 0.00256, 340.06915092], [1517038680000, 0.00256, 0.0025604, 0.00256, 0.0025602, 301.24761464], [1517038740000, 0.0025602, 0.00256039, 0.00256, 0.00256039, 90.675473], [1517038800000, 0.00256039, 0.00256663, 0.00256039, 0.00256039, 21.47362841], [1517038860000, 0.00256039, 0.00256659, 0.00256001, 0.00256001, 8.86616525], [1517038920000, 0.00256001, 0.00256039, 0.00256, 0.00256001, 26.54438437], [1517038980000, 0.00256001, 0.00256001, 0.00256001, 0.00256001, 2.76245881], [1517039040000, 0.00256001, 0.00256001, 0.00256, 0.00256, 209.5023506], [1517039100000, 0.00256, 0.00256663, 0.00256, 0.00256, 8.65364722], [1517039160000, 0.00256001, 0.00256659, 0.00256001, 0.00256001, 154.16596384], [1517039220000, 0.00256, 0.00256, 0.00256, 0.00256, 0.80402852], [1517039280000, 0.00256, 0.00256, 0.00256, 0.00256, 424.78062054], [1517039340000, 0.00256, 0.00256, 0.00256, 0.00256, 0.5], [1517039400000, 0.00256, 0.00256, 0.00255276, 0.00256, 31.89087014], [1517039460000, 0.00256, 0.00256, 0.00256, 0.00256, 94.72267378], [1517039520000, 0.00256, 0.00256, 0.00255288, 0.00255288, 33.57374986], [1517039580000, 0.00255288, 0.00255288, 0.00255288, 0.00255288, 134.52849209], [1517039640000, 0.00255288, 0.00255989, 0.00255288, 0.00255989, 22.1], [1517039700000, 0.00255989, 0.00255999, 0.00255989, 0.00255989, 18.51528251], [1517039760000, 0.00255288, 0.00255288, 0.00255288, 0.00255288, 106.15052697], [1517039820000, 0.00255105, 0.00255105, 0.00255104, 0.00255104, 0.43217499], [1517039880000, 0.00255104, 0.002552, 0.002551, 0.002552, 166.04462624], [1517039940000, 0.002552, 0.00255986, 0.002552, 0.00255201, 7.44356805], [1517040000000, 0.00255201, 0.00255201, 0.002551, 0.002551, 387.34175655], [1517040060000, 0.00255201, 0.00255201, 0.00255001, 0.00255001, 231.13211499], [1517040120000, 0.00255001, 0.00255001, 0.00255001, 0.00255001, 6.04539682], [1517040180000, 0.00255001, 0.00255001, 0.0025435, 0.0025435, 565.4480189], [1517040240000, 0.00254604, 0.00254604, 0.00254604, 0.00254604, 20.0], [1517040300000, 0.00254604, 0.00255201, 0.00254604, 0.00255201, 37.67391976], [1517040360000, 0.00255201, 0.00255201, 0.00255201, 0.00255201, 2.40346807], [1517040420000, 0.002546, 0.00255201, 0.002546, 0.00254601, 11.50957409], [1517040480000, 0.00254601, 0.00254601, 0.00254601, 0.00254601, 0.3], [1517040540000, 0.002546, 0.00254601, 0.002546, 0.002546, 58.47458468], [1517040600000, 0.00254601, 0.00255983, 0.00254601, 0.002558, 11.78314302], [1517040660000, 0.002558, 0.002558, 0.002546, 0.00255799, 10.01860073], [1517040720000, 0.002547, 0.00254701, 0.00254699, 0.00254701, 68.29229721], [1517040780000, 0.00254702, 0.00254702, 0.00254702, 0.00254702, 5.19403523], [1517040840000, 0.00254702, 0.00255699, 0.00254702, 0.00255699, 193.07162817], [1517040900000, 0.00255698, 0.00255699, 0.00254702, 0.00254702, 18.19996051], [1517040960000, 0.00254702, 0.00254702, 0.00254702, 0.00254702, 198.33122696], [1517041020000, 0.00254702, 0.00254702, 0.00254701, 0.00254701, 164.30684324], [1517041080000, 0.00254701, 0.00254702, 0.00254701, 0.00254702, 31.49754941], [1517041140000, 0.00254701, 0.00254702, 0.00254701, 0.00254702, 41.73747724], [1517041200000, 0.00254702, 0.00254702, 0.002546, 0.00254702, 545.48403354], [1517041260000, 0.00254702, 0.00254702, 0.00254702, 0.00254702, 18.10449849], [1517041320000, 0.00254563, 0.00254702, 0.00254563, 0.00254702, 68.17270132], [1517041380000, 0.00254702, 0.00254702, 0.00254702, 0.00254702, 25.67534534], [1517041440000, 0.00254702, 0.00254702, 0.00254563, 0.00254563, 39.67585724], [1517041500000, 0.00254563, 0.00254702, 0.00254563, 0.00254702, 197.38615081], [1517041560000, 0.00254702, 0.00254702, 0.00254702, 0.00254702, 14.29852591], [1517041620000, 0.00254702, 0.00255699, 0.00254702, 0.00255699, 5.08044018], [1517041740000, 0.00255005, 0.00255005, 0.00255001, 0.00255001, 31.43702634], [1517041800000, 0.00255001, 0.00255005, 0.00255001, 0.00255005, 100.94791228], [1517041860000, 0.00255005, 0.00255699, 0.00255005, 0.00255699, 35.75828642], [1517041920000, 0.00255699, 0.00255699, 0.00255004, 0.00255699, 221.05760741], [1517041980000, 0.00255989, 0.00256, 0.00255989, 0.00255989, 28.39623598], [1517042040000, 0.00256, 0.00256879, 0.00256, 0.00256879, 15.9307053], [1517042100000, 0.00256879, 0.00256884, 0.00256879, 0.00256884, 30.06694346], [1517042160000, 0.00256879, 0.00256884, 0.00256879, 0.00256884, 11.273308], [1517042220000, 0.00256879, 0.00256883, 0.00256879, 0.00256883, 17.37834099], [1517042280000, 0.00256883, 0.00256883, 0.00256879, 0.00256883, 48.99305561], [1517042340000, 0.00256883, 0.00256884, 0.00255989, 0.00255989, 172.24032234], [1517042400000, 0.00256843, 0.00256884, 0.00256136, 0.00256884, 48.39340966], [1517042460000, 0.00255989, 0.00255989, 0.00255989, 0.00255989, 5.0], [1517042520000, 0.00256881, 0.00256884, 0.00256881, 0.00256881, 1181.26361927], [1517042580000, 0.00256881, 0.00256881, 0.00256881, 0.00256881, 12.15051957], [1517042640000, 0.00256881, 0.00256881, 0.00256881, 0.00256881, 11.77727493], [1517042700000, 0.00256885, 0.0025739, 0.00255989, 0.0025739, 24.32049122], [1517042760000, 0.0025739, 0.00257506, 0.0025739, 0.00257504, 124.23452367], [1517042820000, 0.00255989, 0.00255989, 0.00255699, 0.00255699, 513.72182652], [1517042880000, 0.002557, 0.00257503, 0.002557, 0.00257503, 37.17378345], [1517042940000, 0.00257503, 0.00257503, 0.00256, 0.00256, 360.78263833], [1517043000000, 0.00257503, 0.00257504, 0.002561, 0.00257504, 20.904297], [1517043060000, 0.00257499, 0.00257499, 0.00257498, 0.00257498, 47.84874279], [1517043120000, 0.00257492, 0.00257503, 0.002568, 0.00257498, 129.43816221], [1517043180000, 0.00256838, 0.00256838, 0.00256838, 0.00256838, 31.99908037], [1517043300000, 0.00257493, 0.00257524, 0.00257, 0.00257, 32.31484724], [1517043360000, 0.00257489, 0.00257492, 0.00257, 0.00257488, 99.47954524], [1517043420000, 0.00257, 0.00257, 0.00257, 0.00257, 6.5586257], [1517043480000, 0.00257002, 0.00257002, 0.00257, 0.00257, 58.26384483], [1517043540000, 0.00257, 0.00257, 0.00257, 0.00257, 24.9291319], [1517043600000, 0.00257, 0.00257523, 0.00257, 0.002575, 76.9969404], [1517043660000, 0.00257, 0.00257, 0.00257, 0.00257, 2.32322435], [1517043720000, 0.00257, 0.00257, 0.00257, 0.00257, 1.69449332], [1517043780000, 0.00257499, 0.00257499, 0.00257, 0.00257499, 18.50506836], [1517043840000, 0.002575, 0.002575, 0.00257001, 0.00257001, 12.20273126], [1517043900000, 0.00257001, 0.00257523, 0.00257001, 0.00257523, 77.89635051], [1517043960000, 0.00257, 0.00257, 0.00257, 0.00257, 35.0677264], [1517044020000, 0.00257, 0.00257519, 0.00257, 0.00257, 192.01971311], [1517044080000, 0.00257, 0.00257, 0.00257, 0.00257, 50.6652608], [1517044140000, 0.00257, 0.00257518, 0.00257, 0.00257, 549.86966467], [1517044200000, 0.002571, 0.00257523, 0.002571, 0.002571, 108.6704934], [1517044260000, 0.0025711, 0.00257522, 0.002571, 0.002571, 145.16007502], [1517044320000, 0.002571, 0.0025712, 0.00256801, 0.00256801, 117.4161384], [1517044380000, 0.002571, 0.00257521, 0.002571, 0.002571, 65.74378292], [1517044440000, 0.00257101, 0.00257101, 0.002571, 0.002571, 59.5745205], [1517044500000, 0.002571, 0.00257518, 0.002568, 0.002568, 132.40892579], [1517044620000, 0.002568, 0.002568, 0.0025599, 0.0025599, 23.34877243], [1517044680000, 0.0025599, 0.0025599, 0.0025599, 0.0025599, 4.06269631], [1517044860000, 0.0025599, 0.0025599, 0.0025599, 0.0025599, 210.1320457], [1517044920000, 0.00255989, 0.0025599, 0.00255989, 0.0025599, 10.0], [1517044980000, 0.0025599, 0.00257177, 0.0025599, 0.00257177, 20.86386772], [1517045040000, 0.00257176, 0.00257176, 0.00257176, 0.00257176, 1.93932583], [1517045100000, 0.00256, 0.00257172, 0.0025599, 0.00257168, 27.139125], [1517045160000, 0.00257166, 0.00257166, 0.00257166, 0.00257166, 6.2841528], [1517045220000, 0.00257166, 0.00257166, 0.00255995, 0.00256, 3.50600686], [1517045280000, 0.00257152, 0.00257152, 0.00256, 0.00256, 55.13947049], [1517045340000, 0.00256001, 0.00257176, 0.00256001, 0.00257176, 27.91830593], [1517045400000, 0.00257153, 0.00257176, 0.00257153, 0.00257176, 4.300001], [1517045460000, 0.00257165, 0.00257176, 0.00257165, 0.00257176, 257.95501712], [1517045520000, 0.00257166, 0.00257166, 0.00257166, 0.00257166, 3.87881757], [1517045580000, 0.00257166, 0.00257166, 0.00257146, 0.00257146, 18.89390881], [1517045640000, 0.00257175, 0.00257175, 0.00257, 0.00257, 47.03913227], [1517045700000, 0.00257176, 0.00257176, 0.00257, 0.00257, 163.61310424], [1517045760000, 0.00257, 0.00257, 0.00257, 0.00257, 4.98448462], [1517045820000, 0.00257, 0.00257492, 0.00257, 0.00257492, 139.59531573], [1517045880000, 0.00257, 0.00257, 0.00257, 0.00257, 22.14574019], [1517045940000, 0.0025749, 0.0025749, 0.00257, 0.00257489, 143.93475179], [1517046000000, 0.00257, 0.00257491, 0.00257, 0.00257491, 341.9969641], [1517046060000, 0.00256002, 0.00257491, 0.00256002, 0.00256003, 10.97471889], [1517046120000, 0.00257486, 0.00257486, 0.00257486, 0.00257486, 0.34340139], [1517046180000, 0.00257485, 0.00257492, 0.00257485, 0.00257492, 900.32742989], [1517046240000, 0.00257492, 0.00257524, 0.00257492, 0.00257524, 329.4467783], [1517046300000, 0.00257523, 0.00257599, 0.00257492, 0.00257533, 407.45296528], [1517046360000, 0.00257492, 0.00257533, 0.00257492, 0.00257492, 87.06453176], [1517046420000, 0.00257492, 0.00257492, 0.00257492, 0.00257492, 247.91727108], [1517046480000, 0.002575, 0.002575, 0.00257492, 0.00257492, 265.66239895], [1517046540000, 0.00257492, 0.00257492, 0.00257492, 0.00257492, 705.60219668], [1517046600000, 0.00257492, 0.00257599, 0.00257492, 0.00257599, 427.71668162], [1517046660000, 0.00257599, 0.00257599, 0.002575, 0.002575, 23.665203], [1517046720000, 0.002575, 0.00257598, 0.00257492, 0.00257492, 302.172524], [1517046780000, 0.00257505, 0.00257505, 0.00257492, 0.00257492, 223.36279282], [1517046840000, 0.00257492, 0.00257599, 0.00257492, 0.00257492, 1009.26361755], [1517046900000, 0.00257598, 0.00257665, 0.00257, 0.00257492, 90.89745953], [1517046960000, 0.00257492, 0.00257792, 0.00256004, 0.00256004, 68.66191213], [1517047020000, 0.00256004, 0.00256004, 0.00256003, 0.00256003, 118.89284118], [1517047080000, 0.00256004, 0.00256004, 0.00256004, 0.00256004, 38.19946476], [1517047140000, 0.00256004, 0.00256004, 0.00256004, 0.00256004, 64.27950778], [1517047200000, 0.00256004, 0.00257799, 0.00256004, 0.00257484, 163.15006206], [1517047320000, 0.002565, 0.002565, 0.00256004, 0.00256004, 170.14628222], [1517047380000, 0.00256004, 0.00256004, 0.00256004, 0.00256004, 330.37117968], [1517047440000, 0.00256004, 0.00256005, 0.00256004, 0.00256005, 90.57545469], [1517047500000, 0.00257469, 0.00257469, 0.00257469, 0.00257469, 11.465087], [1517047560000, 0.0025605, 0.00257469, 0.0025605, 0.00257469, 1.55945726], [1517047620000, 0.00257467, 0.00257467, 0.00257467, 0.00257467, 0.97099068], [1517047680000, 0.00257, 0.00257, 0.00257, 0.00257, 10.0], [1517047740000, 0.00257, 0.00257464, 0.00257, 0.00257, 35.04711407], [1517047800000, 0.00257001, 0.00257468, 0.00257, 0.00257468, 65.51033498], [1517047860000, 0.00257, 0.00257, 0.00257, 0.00257, 371.90175549], [1517047920000, 0.00256469, 0.00256469, 0.00256469, 0.00256469, 22.78120051], [1517047980000, 0.00256469, 0.00256469, 0.00256469, 0.00256469, 5.0], [1517048040000, 0.00256469, 0.00256469, 0.00256469, 0.00256469, 21.63], [1517048100000, 0.00256061, 0.00257, 0.00256061, 0.00257, 12.32933659], [1517048160000, 0.00257, 0.00257, 0.00256063, 0.00256063, 15.82638234], [1517048280000, 0.00256999, 0.00257466, 0.00256999, 0.00257466, 7.81], [1517048340000, 0.00257464, 0.00257465, 0.00257464, 0.00257465, 17.8011859], [1517048400000, 0.00257459, 0.00257462, 0.00257459, 0.00257461, 15.70505921], [1517048460000, 0.00256068, 0.00257455, 0.00256065, 0.00257455, 68.49301993], [1517048520000, 0.00257, 0.00257, 0.00257, 0.00257, 50.0], [1517048580000, 0.00257, 0.00257, 0.00257, 0.00257, 5.52366366], [1517048700000, 0.00256999, 0.00256999, 0.00256063, 0.00256068, 312.05601359], [1517048760000, 0.00256068, 0.00256068, 0.00256068, 0.00256068, 37.46032153], [1517048880000, 0.002561, 0.002561, 0.00256068, 0.002561, 11.309346], [1517048940000, 0.00256998, 0.00256999, 0.00256068, 0.00256068, 38.13132291], [1517049000000, 0.00257, 0.00257, 0.00256069, 0.00256069, 50.32004184], [1517049060000, 0.00256729, 0.00256729, 0.00256729, 0.00256729, 92.78620244], [1517049120000, 0.00256729, 0.00256729, 0.00256729, 0.00256729, 16.86341203], [1517049180000, 0.00256729, 0.00257454, 0.00256729, 0.00256729, 259.06899665], [1517049240000, 0.00257453, 0.00257453, 0.00256729, 0.00257441, 95.66575137], [1517049300000, 0.00256729, 0.00257429, 0.00256729, 0.00257176, 176.24372477], [1517049360000, 0.00256729, 0.00257029, 0.00256729, 0.00256729, 117.05094921], [1517049420000, 0.0025621, 0.0025621, 0.0025621, 0.0025621, 14.06003887], [1517049480000, 0.0025621, 0.00256729, 0.0025621, 0.00256729, 16.8505073], [1517049540000, 0.00256729, 0.00257028, 0.0025621, 0.00257028, 231.78937385], [1517049600000, 0.00257027, 0.00257027, 0.0025621, 0.0025621, 218.21162501], [1517049660000, 0.0025621, 0.0025621, 0.00256004, 0.00256004, 863.67466794], [1517049720000, 0.00256004, 0.00256062, 0.00256004, 0.00256062, 240.2512852], [1517049780000, 0.00256062, 0.00256616, 0.00256062, 0.0025621, 3.77014451], [1517049840000, 0.0025701, 0.0025701, 0.0025701, 0.0025701, 5.0329951], [1517049900000, 0.00256212, 0.00256998, 0.0025621, 0.0025621, 6.20617387], [1517049960000, 0.0025621, 0.0025621, 0.0025621, 0.0025621, 519.4736036], [1517050020000, 0.00256211, 0.00256211, 0.00256211, 0.00256211, 0.86061878], [1517050080000, 0.00256211, 0.00256211, 0.00256211, 0.00256211, 0.86061878], [1517050140000, 0.00256211, 0.00256211, 0.00256211, 0.00256211, 1.43030939], [1517050200000, 0.00256215, 0.00257, 0.00256215, 0.00257, 19.9041881], [1517050260000, 0.00256214, 0.00256214, 0.00256214, 0.00256214, 1.0], [1517050320000, 0.00256214, 0.00256904, 0.00256211, 0.00256211, 305.25276214], [1517050380000, 0.00256211, 0.00256211, 0.00256211, 0.00256211, 16.04244157], [1517050440000, 0.00256211, 0.00256905, 0.00256211, 0.00256211, 26.42515491], [1517050500000, 0.00256212, 0.00256905, 0.00256212, 0.00256212, 116.10790405], [1517050560000, 0.00256212, 0.00256212, 0.00256211, 0.00256211, 14.43030939], [1517050620000, 0.00256211, 0.00256211, 0.00256211, 0.00256211, 10.0], [1517050680000, 0.00256949, 0.00256949, 0.00256211, 0.00256949, 4.64321129], [1517050800000, 0.00256212, 0.0025688, 0.00256212, 0.0025688, 9.57192709], [1517050860000, 0.0025688, 0.0025688, 0.002563, 0.002563, 9.53720418], [1517050920000, 0.002563, 0.002565, 0.00256211, 0.002563, 465.88575629], [1517050980000, 0.002563, 0.002565, 0.002563, 0.002563, 44.09282553], [1517051040000, 0.002565, 0.002567, 0.00256212, 0.002563, 663.2959451], [1517051100000, 0.002563, 0.00256898, 0.002563, 0.002563, 16.9711335], [1517051160000, 0.0025689, 0.00256898, 0.002563, 0.002563, 65.21525082], [1517051220000, 0.002563, 0.002568, 0.002563, 0.002568, 27.22440381], [1517051280000, 0.002563, 0.002568, 0.00256212, 0.00256212, 12.18044261], [1517051340000, 0.00256212, 0.00256212, 0.00256212, 0.00256212, 126.1143833], [1517051400000, 0.00256799, 0.002568, 0.00256799, 0.00256799, 11.27578268], [1517051460000, 0.00256799, 0.002568, 0.00256799, 0.002568, 237.51400183], [1517051520000, 0.002568, 0.002568, 0.002568, 0.002568, 27.97089077], [1517051580000, 0.002568, 0.002568, 0.00256212, 0.002568, 206.47353594], [1517051640000, 0.002568, 0.002568, 0.00256792, 0.002568, 46.05434753], [1517051700000, 0.002568, 0.0025689, 0.002568, 0.0025689, 27.40177024], [1517051760000, 0.002568, 0.0025689, 0.002568, 0.002568, 119.36131849], [1517051820000, 0.002568, 0.002568, 0.002568, 0.002568, 0.32444344], [1517051880000, 0.002568, 0.0025689, 0.002568, 0.0025689, 110.73380547], [1517051940000, 0.002568, 0.0025689, 0.002568, 0.00256801, 45.39548703], [1517052000000, 0.0025689, 0.00257, 0.00256801, 0.0025695, 58.32494948], [1517052060000, 0.00257, 0.00257864, 0.00257, 0.00257864, 403.79546554], [1517052120000, 0.00257864, 0.00257864, 0.00257497, 0.002575, 139.87361983], [1517052180000, 0.00257498, 0.002575, 0.00257497, 0.00257497, 65.25186596], [1517052240000, 0.00257497, 0.002575, 0.00256801, 0.00256801, 16.90608619], [1517052300000, 0.00256951, 0.00257497, 0.002568, 0.00256952, 1100.90020004], [1517052360000, 0.00257497, 0.00257497, 0.00257497, 0.00257497, 2.489538], [1517052420000, 0.00257497, 0.00257497, 0.00257138, 0.00257138, 55.22230052], [1517052480000, 0.00257497, 0.00257497, 0.00257138, 0.00257495, 20.72259126], [1517052540000, 0.00257138, 0.00257495, 0.00257138, 0.00257495, 10.01328631], [1517052600000, 0.00257495, 0.00257495, 0.00257138, 0.00257495, 45.52634366], [1517052660000, 0.00257495, 0.00257678, 0.00257495, 0.00257678, 17.50300107], [1517052720000, 0.0025799, 0.00257999, 0.0025799, 0.00257999, 11.5], [1517052780000, 0.002579, 0.002579, 0.00257138, 0.00257138, 101.69693384], [1517052840000, 0.00258891, 0.00258891, 0.00257138, 0.002579, 91.6079692], [1517052900000, 0.0025888, 0.0025888, 0.00257138, 0.00258872, 36.82048418], [1517052960000, 0.00258868, 0.00258868, 0.00258868, 0.00258868, 2.0], [1517053020000, 0.00258838, 0.00258838, 0.00257001, 0.00258832, 144.37279548], [1517053080000, 0.00258801, 0.00258801, 0.00258794, 0.00258794, 62.94871406], [1517053140000, 0.00258693, 0.00258693, 0.00258689, 0.00258689, 5.88036658], [1517053200000, 0.00258681, 0.00258792, 0.00257001, 0.00258792, 106.92628959], [1517053260000, 0.00258794, 0.00258794, 0.00257001, 0.002571, 18.91684775], [1517053320000, 0.002571, 0.00257978, 0.00257001, 0.00257001, 38.78855521], [1517053380000, 0.00257001, 0.00257001, 0.00257001, 0.00257001, 76.9668234], [1517053440000, 0.00257999, 0.00258, 0.00257001, 0.00258, 17.0818824], [1517053500000, 0.00257999, 0.00258, 0.00257001, 0.00257001, 244.29250197], [1517053560000, 0.00257996, 0.00257996, 0.00257001, 0.00257996, 31.49334882], [1517053620000, 0.00258, 0.00258, 0.002575, 0.00257999, 7.95590587], [1517053680000, 0.002575, 0.002575, 0.00257101, 0.00257101, 14.52584704], [1517053740000, 0.00257105, 0.00257105, 0.002571, 0.00257105, 32.19121284], [1517053800000, 0.002575, 0.00258, 0.002575, 0.002576, 54.067036], [1517053860000, 0.002576, 0.00258, 0.002576, 0.00258, 817.57201087], [1517053920000, 0.002575, 0.002575, 0.002575, 0.002575, 11.57702133], [1517053980000, 0.002575, 0.002575, 0.00257101, 0.00257497, 94.12974212], [1517054040000, 0.00257107, 0.002575, 0.002571, 0.002575, 125.56491311], [1517054100000, 0.002575, 0.002575, 0.002571, 0.002571, 82.64153292], [1517054160000, 0.002572, 0.002575, 0.00257101, 0.002575, 18.12158351], [1517054220000, 0.00257105, 0.00257105, 0.00257105, 0.00257105, 1.50088938], [1517054280000, 0.002575, 0.002575, 0.002575, 0.002575, 131.90695879], [1517054340000, 0.002575, 0.002575, 0.002575, 0.002575, 20.0064002], [1517054400000, 0.002575, 0.002575, 0.002575, 0.002575, 9.00766373], [1517054460000, 0.00257205, 0.002575, 0.002571, 0.002571, 1003.33267032], [1517054520000, 0.002571, 0.002574, 0.002571, 0.002574, 271.52522112], [1517054580000, 0.002574, 0.002574, 0.002574, 0.002574, 23.35120008], [1517054640000, 0.002574, 0.002574, 0.002574, 0.002574, 9.75012115], [1517054700000, 0.002574, 0.002575, 0.002574, 0.002575, 9.45127908], [1517054760000, 0.002575, 0.002575, 0.002575, 0.002575, 18.1837542], [1517054820000, 0.002575, 0.002575, 0.00257, 0.002575, 681.14633384], [1517054880000, 0.002578, 0.002578, 0.00257, 0.00257, 9.30376383], [1517054940000, 0.00257, 0.00257799, 0.00257, 0.00257002, 32.69382358], [1517055000000, 0.00257799, 0.002578, 0.00257799, 0.002578, 4.77899127], [1517055060000, 0.002578, 0.002578, 0.002578, 0.002578, 30.0], [1517055180000, 0.002578, 0.002578, 0.002578, 0.002578, 3.49323724], [1517055240000, 0.002578, 0.002578, 0.002574, 0.002574, 4.9510005], [1517055300000, 0.002574, 0.002574, 0.002574, 0.002574, 1.76432188], [1517055420000, 0.0025745, 0.0025745, 0.0025745, 0.0025745, 3.5150991], [1517055480000, 0.0025745, 0.002578, 0.002574, 0.002574, 21.35263573], [1517055600000, 0.0025745, 0.0025745, 0.002572, 0.002572, 142.33134525], [1517055720000, 0.0025745, 0.0025745, 0.0025745, 0.0025745, 0.8569805], [1517055780000, 0.0025745, 0.0025745, 0.0025745, 0.0025745, 72.86487934], [1517055840000, 0.0025745, 0.0025745, 0.0025742, 0.0025742, 164.31883242], [1517055900000, 0.00257799, 0.00257799, 0.00257799, 0.00257799, 3.64634], [1517055960000, 0.00257799, 0.00257799, 0.00257799, 0.00257799, 70.17227782], [1517056020000, 0.00257799, 0.00257799, 0.0025742, 0.0025742, 470.20311339], [1517056080000, 0.00257799, 0.00257799, 0.00257799, 0.00257799, 14.22592019], [1517056140000, 0.00257799, 0.00257799, 0.00257798, 0.00257798, 106.56712191], [1517056200000, 0.0025742, 0.0025742, 0.0025742, 0.0025742, 48.79438342], [1517056380000, 0.00257798, 0.00257798, 0.00257798, 0.00257798, 2.65936192], [1517056500000, 0.00257795, 0.00257795, 0.00257795, 0.00257795, 185.94337053], [1517056560000, 0.00257795, 0.002578, 0.00257795, 0.002578, 349.71576121], [1517056620000, 0.00258, 0.00258, 0.00258, 0.00258, 0.69965389], [1517056680000, 0.00258, 0.00258897, 0.00257421, 0.00258897, 75.14295529], [1517056740000, 0.00258897, 0.00258897, 0.00258897, 0.00258897, 0.59349662], [1517056800000, 0.00258, 0.00258897, 0.00258, 0.00258897, 2.49693], [1517056860000, 0.00258, 0.00258, 0.00257422, 0.00257422, 127.65255812], [1517056920000, 0.00258, 0.00258, 0.00258, 0.00258, 155.19645204], [1517057100000, 0.00258897, 0.00258897, 0.00258897, 0.00258897, 8.30959029], [1517057160000, 0.00258897, 0.00258897, 0.00258897, 0.00258897, 16.61604025], [1517057220000, 0.00258897, 0.00258897, 0.00258, 0.00258, 44.22372999], [1517057280000, 0.00258001, 0.00258001, 0.00258001, 0.00258001, 0.8546544], [1517057340000, 0.00258001, 0.00258001, 0.00258001, 0.00258001, 2.1453456], [1517057400000, 0.00258897, 0.00258897, 0.00258897, 0.00258897, 3.86253992], [1517057460000, 0.00258897, 0.00259, 0.00258897, 0.00258897, 48.70415288], [1517057520000, 0.00258897, 0.00259238, 0.00258011, 0.00259, 31.78610238], [1517057580000, 0.00259239, 0.002594, 0.00259238, 0.002594, 34.17843675], [1517057640000, 0.002594, 0.00259909, 0.002594, 0.00259909, 61.47075874], [1517057700000, 0.00259401, 0.00259909, 0.002593, 0.002593, 156.87975815], [1517057760000, 0.00259, 0.00259001, 0.002581, 0.002581, 87.88273097], [1517057820000, 0.00259861, 0.00259861, 0.002581, 0.002581, 2.96284168], [1517058000000, 0.0025991, 0.00259996, 0.002595, 0.00259996, 165.1468173], [1517058060000, 0.00259996, 0.00259996, 0.00259321, 0.00259321, 343.76273271], [1517058180000, 0.00259317, 0.00259317, 0.00259317, 0.00259317, 7.23039406], [1517058240000, 0.00259316, 0.00259317, 0.00259316, 0.00259317, 9.0], [1517058300000, 0.00259316, 0.00259316, 0.00258222, 0.00258222, 194.59153558], [1517058360000, 0.002592, 0.002592, 0.00258223, 0.00258223, 22.61197656], [1517058420000, 0.00259099, 0.002591, 0.00259099, 0.002591, 180.97848345], [1517058480000, 0.002591, 0.002591, 0.002591, 0.002591, 22.15513915], [1517058540000, 0.002591, 0.00259195, 0.00258222, 0.00259195, 370.80285057], [1517058600000, 0.00258222, 0.00259195, 0.00258222, 0.00259195, 6.10644219], [1517058660000, 0.00259195, 0.002592, 0.00259195, 0.002592, 151.23445996], [1517058720000, 0.002592, 0.00259899, 0.002585, 0.002585, 155.19835401], [1517058780000, 0.002585, 0.002585, 0.002585, 0.002585, 23.60902372], [1517058840000, 0.002585, 0.002585, 0.002585, 0.002585, 7.1854], [1517058900000, 0.002585, 0.002585, 0.002585, 0.002585, 140.84462002], [1517058960000, 0.002586, 0.002586, 0.002585, 0.002585, 90.96442529], [1517059020000, 0.002585, 0.002585, 0.002585, 0.002585, 0.2962155], [1517059140000, 0.00258502, 0.00258502, 0.00258502, 0.00258502, 3.23082528], [1517059200000, 0.00259896, 0.00259896, 0.00258502, 0.00258502, 4.47679187], [1517059260000, 0.00259896, 0.00259896, 0.00258503, 0.00258503, 9.3620245], [1517059320000, 0.00258503, 0.00258503, 0.00258502, 0.00258503, 35.54089356], [1517059380000, 0.00258502, 0.00258502, 0.002585, 0.00258502, 90.32010916], [1517059440000, 0.002585, 0.00258502, 0.002585, 0.00258502, 175.70323069], [1517059500000, 0.00258502, 0.00258502, 0.002585, 0.00258502, 26.12111516], [1517059560000, 0.00259895, 0.00259896, 0.002585, 0.00259895, 20.84607483], [1517059680000, 0.00258501, 0.00258501, 0.002585, 0.00258501, 58.35665963], [1517059740000, 0.00258501, 0.00259896, 0.00258501, 0.00259896, 55.80016837], [1517059800000, 0.00258501, 0.00259896, 0.00258501, 0.00259896, 3.05414296], [1517059860000, 0.00258501, 0.00258501, 0.00258501, 0.00258501, 0.34857708], [1517059980000, 0.00258501, 0.00258501, 0.002585, 0.002585, 77.99239741], [1517060040000, 0.002585, 0.00259896, 0.002585, 0.00259896, 13.66198571], [1517060100000, 0.002585, 0.002585, 0.002585, 0.002585, 20.0], [1517060220000, 0.00259, 0.00259, 0.002585, 0.002585, 1.01372375], [1517060280000, 0.00259, 0.00259, 0.00259, 0.00259, 5.39660659], [1517060340000, 0.0025875, 0.00259, 0.0025875, 0.0025875, 62.33540234], [1517060400000, 0.002595, 0.002595, 0.002595, 0.002595, 7.22765627], [1517060460000, 0.002595, 0.00259887, 0.002595, 0.002595, 19.79575715], [1517060520000, 0.002595, 0.00259886, 0.00258501, 0.00258501, 100.84511299], [1517060580000, 0.00259, 0.0025989, 0.00259, 0.0025989, 74.9001465], [1517060640000, 0.00259888, 0.00259888, 0.0025906, 0.0025906, 4.01011903], [1517060700000, 0.00259061, 0.00259061, 0.00259061, 0.00259061, 21.96377433], [1517060760000, 0.00259061, 0.00259061, 0.00259061, 0.00259061, 53.00191787], [1517060820000, 0.00259061, 0.0025979, 0.00259061, 0.00259061, 17.26210665], [1517060880000, 0.0025979, 0.0025979, 0.00259061, 0.00259061, 54.9559729], [1517060940000, 0.00259061, 0.00259794, 0.00259061, 0.00259793, 12.25513925], [1517061000000, 0.00259061, 0.00259061, 0.00259061, 0.00259061, 6.53924941], [1517061060000, 0.00259061, 0.00259061, 0.00259061, 0.00259061, 0.3], [1517061120000, 0.00259065, 0.00259065, 0.00259065, 0.00259065, 2.9993013], [1517061180000, 0.00259065, 0.002597, 0.00259061, 0.002597, 23.5212698], [1517061240000, 0.00259061, 0.002597, 0.00259061, 0.002597, 19.33400299], [1517061300000, 0.002597, 0.002597, 0.002597, 0.002597, 12.35090555], [1517061360000, 0.002597, 0.002597, 0.002597, 0.002597, 1.53638814], [1517061420000, 0.002597, 0.0026004, 0.002597, 0.0026004, 378.29058817], [1517061480000, 0.0026004, 0.002607, 0.0026004, 0.0026004, 366.0675101], [1517061540000, 0.0026004, 0.00260041, 0.00259061, 0.0026004, 30.49231791], [1517061600000, 0.0026004, 0.0026004, 0.00259061, 0.0026, 26.46699528], [1517061660000, 0.0026, 0.0026, 0.0026, 0.0026, 43.30409764], [1517061720000, 0.0026, 0.0026004, 0.0026, 0.0026004, 3.42403846], [1517061780000, 0.0026, 0.0026004, 0.0026, 0.0026, 133.51492994], [1517061840000, 0.0026, 0.0026, 0.00259071, 0.00259071, 186.16605873], [1517061900000, 0.00259071, 0.00260699, 0.0025907, 0.00260699, 110.59037418], [1517061960000, 0.00260685, 0.00260685, 0.00259071, 0.00260673, 24.01638901], [1517062020000, 0.00259071, 0.002606, 0.00259061, 0.00259581, 148.88330882], [1517062080000, 0.00259581, 0.00259581, 0.00259061, 0.00259061, 23.3376157], [1517062200000, 0.00259581, 0.00259581, 0.0025907, 0.0025907, 48.70218462], [1517062260000, 0.0025907, 0.00259581, 0.00259061, 0.00259581, 12.46985035], [1517062320000, 0.00259061, 0.00259581, 0.00259061, 0.00259061, 109.10226683], [1517062380000, 0.00259581, 0.00259581, 0.00259061, 0.00259061, 173.76480117], [1517062440000, 0.00259, 0.00259, 0.00259, 0.00259, 24.44408764], [1517062500000, 0.00259, 0.00259581, 0.00258525, 0.00259, 226.34181725], [1517062560000, 0.00259, 0.002591, 0.00258531, 0.00258532, 286.98384573], [1517062620000, 0.002591, 0.002591, 0.00258531, 0.00258531, 136.26395124], [1517062740000, 0.00259, 0.00259, 0.00259, 0.00259, 10.0], [1517062800000, 0.00258533, 0.00259, 0.00258533, 0.00259, 75.17311274], [1517062860000, 0.0025853, 0.0025853, 0.0025853, 0.0025853, 135.53364997], [1517062920000, 0.002589, 0.0025999, 0.002589, 0.0025999, 772.33720528], [1517062980000, 0.00259984, 0.00259984, 0.00259984, 0.00259984, 232.39390768], [1517063040000, 0.00259984, 0.00259984, 0.00258538, 0.00258538, 261.65783164], [1517063100000, 0.00259984, 0.00259984, 0.00259984, 0.00259984, 1.63937003], [1517063160000, 0.0025998, 0.0025998, 0.0025998, 0.0025998, 3.4], [1517063220000, 0.00259979, 0.00259979, 0.00259979, 0.00259979, 4.15715997], [1517063280000, 0.0025901, 0.0025901, 0.00258538, 0.00258538, 28.52911745], [1517063340000, 0.0025901, 0.0025901, 0.0025901, 0.0025901, 22.0], [1517063400000, 0.0025901, 0.00259958, 0.0025901, 0.0025901, 21.45199384], [1517063460000, 0.00259939, 0.0025994, 0.002598, 0.002598, 40.40167659], [1517063520000, 0.002598, 0.002598, 0.0025901, 0.0025901, 32.70117736], [1517063640000, 0.0025901, 0.002598, 0.0025901, 0.0025901, 189.16692406], [1517063700000, 0.00259011, 0.002598, 0.00258531, 0.00259011, 120.47189313], [1517063760000, 0.00259011, 0.0026, 0.00258533, 0.00258533, 2515.45733643], [1517063820000, 0.00259939, 0.0026, 0.00258533, 0.00258533, 97.81093431], [1517063880000, 0.00258535, 0.002599, 0.00258535, 0.002599, 327.17862188], [1517063940000, 0.0025954, 0.0025954, 0.0025954, 0.0025954, 33.77583272], [1517064000000, 0.0025901, 0.0025901, 0.00258576, 0.002587, 69.9811298], [1517064060000, 0.00259, 0.00259, 0.002587, 0.00259, 94.01591765], [1517064120000, 0.00259, 0.00259, 0.0025892, 0.00259, 52.36307404], [1517064180000, 0.00259, 0.00259, 0.0025892, 0.0025892, 14.1539538], [1517064240000, 0.00258999, 0.00259, 0.0025892, 0.00259, 298.10622101], [1517064300000, 0.00259, 0.00259, 0.002587, 0.00259, 86.93545313], [1517064360000, 0.00259, 0.00259, 0.002587, 0.00259, 155.44751455], [1517064420000, 0.0025901, 0.0025901, 0.0025901, 0.0025901, 9.55809927], [1517064480000, 0.0025901, 0.0025901, 0.00259, 0.00259, 62.5776987], [1517064540000, 0.00259, 0.00259, 0.00259, 0.00259, 238.76172746], [1517064600000, 0.00259, 0.00259889, 0.00259, 0.00259889, 26.41130304], [1517064660000, 0.002587, 0.002587, 0.002587, 0.002587, 6.0], [1517064720000, 0.00259, 0.00259887, 0.00259, 0.00259887, 12.59668956], [1517064780000, 0.00259, 0.00259, 0.00259, 0.00259, 33.03432833], [1517064840000, 0.00258701, 0.00258701, 0.002587, 0.002587, 57.46137378], [1517064900000, 0.00258999, 0.00258999, 0.00258999, 0.00258999, 19.25699672], [1517065020000, 0.002589, 0.002589, 0.002589, 0.002589, 111.38347256], [1517065080000, 0.002589, 0.0025989, 0.002587, 0.0025989, 390.77447113], [1517065140000, 0.00259933, 0.00259934, 0.00259932, 0.00259932, 300.45032874], [1517065200000, 0.002587, 0.00259935, 0.002587, 0.00259935, 182.27811353], [1517065260000, 0.002587, 0.002587, 0.002587, 0.002587, 127.00128331], [1517065320000, 0.00259, 0.00259, 0.00259, 0.00259, 38.51351351], [1517065380000, 0.00259, 0.00259999, 0.002588, 0.00259, 1049.0950621], [1517065440000, 0.002591, 0.00259984, 0.00259, 0.00259984, 58.40092757], [1517065500000, 0.00259979, 0.00259979, 0.002589, 0.002589, 71.94365935], [1517065560000, 0.0025891, 0.0025891, 0.0025891, 0.0025891, 5.10908202], [1517065620000, 0.00259, 0.00259, 0.0025891, 0.0025891, 15.6851473], [1517065680000, 0.0025892, 0.0025892, 0.0025891, 0.0025891, 27.06838708], [1517065740000, 0.00259, 0.0025998, 0.00259, 0.0025998, 482.19546388], [1517065800000, 0.0025998, 0.00259984, 0.00259, 0.00259983, 87.15193539], [1517065860000, 0.00259, 0.00259983, 0.00259, 0.00259, 568.79075719], [1517065920000, 0.00259, 0.0025998, 0.00259, 0.00259, 18.45061108], [1517065980000, 0.00259, 0.0025997, 0.00259, 0.0025997, 40.29315078], [1517066100000, 0.00259969, 0.00259969, 0.00259969, 0.00259969, 28.00996269], [1517066160000, 0.00259001, 0.00259968, 0.00259001, 0.00259964, 89.26709412], [1517066220000, 0.0025901, 0.0025901, 0.00259001, 0.00259001, 13.0], [1517066280000, 0.0025901, 0.0025995, 0.0025901, 0.0025995, 153.60031954], [1517066340000, 0.0025995, 0.00259953, 0.00259001, 0.00259948, 410.42228019], [1517066400000, 0.00259948, 0.00259948, 0.00259948, 0.00259948, 4.42161374], [1517066460000, 0.00259948, 0.00259948, 0.00259947, 0.00259947, 10.13400025], [1517066520000, 0.002591, 0.002591, 0.002591, 0.002591, 24.05116863], [1517066580000, 0.00259938, 0.00259938, 0.00259938, 0.00259938, 3.83746122], [1517066640000, 0.00259151, 0.00259151, 0.00259151, 0.00259151, 1.0511865], [1517066700000, 0.002592, 0.00259926, 0.002592, 0.00259926, 69.26715974], [1517066760000, 0.002592, 0.00259929, 0.00259152, 0.00259152, 247.97110192], [1517066820000, 0.00259152, 0.00259928, 0.00259, 0.0025916, 372.07660722], [1517066880000, 0.0025916, 0.0025916, 0.00258699, 0.00258699, 480.08925427], [1517066940000, 0.00258911, 0.00258911, 0.00258699, 0.00258699, 150.28965278], [1517067000000, 0.00259893, 0.00259893, 0.00259893, 0.00259893, 13.04692985], [1517067060000, 0.00259893, 0.00259893, 0.00259893, 0.00259893, 9.06410713], [1517067120000, 0.00259893, 0.00259893, 0.00258699, 0.00258699, 223.2284786], [1517067180000, 0.0025853, 0.00259874, 0.0025851, 0.00259874, 165.62822804], [1517067240000, 0.00258699, 0.00259853, 0.00258699, 0.00258699, 133.35907984], [1517067300000, 0.00259825, 0.00259825, 0.00258699, 0.002587, 189.00383206], [1517067360000, 0.00258699, 0.00259823, 0.0025851, 0.0025851, 129.97910636], [1517067420000, 0.0025851, 0.00258699, 0.0025851, 0.00258699, 17.76850838], [1517067480000, 0.0025851, 0.00258699, 0.0025851, 0.0025851, 78.61884955], [1517067540000, 0.0025851, 0.0025851, 0.00258501, 0.00258501, 51.48234066], [1517067600000, 0.00258501, 0.0025851, 0.002585, 0.00258501, 322.23010863], [1517067660000, 0.00258501, 0.00258501, 0.00258501, 0.00258501, 17.42682761], [1517067720000, 0.002585, 0.00258501, 0.00258112, 0.00258112, 284.05683552], [1517067780000, 0.00258104, 0.00258104, 0.002581, 0.00258104, 308.52873086], [1517067840000, 0.00258104, 0.00258104, 0.002581, 0.00258104, 114.38279047], [1517067900000, 0.002581, 0.002581, 0.002581, 0.002581, 747.28345123], [1517067960000, 0.002581, 0.00258104, 0.002575, 0.002575, 303.07125477], [1517068020000, 0.002575, 0.00258104, 0.00257001, 0.00257001, 693.52788624], [1517068080000, 0.00257001, 0.00258101, 0.00257, 0.00257, 1073.47317084], [1517068140000, 0.00257001, 0.00257499, 0.00256003, 0.00256168, 631.76162726], [1517068200000, 0.00257499, 0.00257499, 0.00256003, 0.00256003, 85.81765744], [1517068260000, 0.00257499, 0.002575, 0.00257493, 0.00257495, 177.64729422], [1517068320000, 0.00257495, 0.00257499, 0.00257495, 0.00257495, 303.54916567], [1517068380000, 0.00257495, 0.00258199, 0.00257, 0.00258199, 878.4564233], [1517068440000, 0.00258199, 0.00258199, 0.00257495, 0.00257495, 23.22691503], [1517068500000, 0.00257495, 0.00257495, 0.00257494, 0.00257494, 43.18834557], [1517068560000, 0.00257494, 0.00257495, 0.00257373, 0.00257373, 87.72905725], [1517068620000, 0.00257373, 0.00257494, 0.00256315, 0.002574, 432.92761054], [1517068680000, 0.00257399, 0.00257399, 0.00256003, 0.00256004, 75.18951165], [1517068740000, 0.00256004, 0.002574, 0.00256003, 0.002574, 147.70160405], [1517068800000, 0.00256004, 0.00256004, 0.00255469, 0.00256004, 878.6284559], [1517068860000, 0.00256004, 0.00256004, 0.00256004, 0.00256004, 13.16416931], [1517068920000, 0.00257279, 0.00257279, 0.00256004, 0.00256004, 58.51689841], [1517068980000, 0.00257303, 0.00257303, 0.00256004, 0.00256004, 200.59667319], [1517069040000, 0.00256004, 0.00256004, 0.00256004, 0.00256004, 2.34371337], [1517069100000, 0.00255779, 0.00255779, 0.00255776, 0.00255776, 101.31589401], [1517069160000, 0.00255776, 0.00255779, 0.00255501, 0.00255776, 49.24211548], [1517069220000, 0.00255778, 0.00255778, 0.00255776, 0.00255776, 12.31108236], [1517069280000, 0.00255775, 0.00255775, 0.00255701, 0.00255701, 80.57424825], [1517069340000, 0.0025571, 0.00255776, 0.00255501, 0.00255776, 53.71746226], [1517069400000, 0.00255775, 0.00256004, 0.00255775, 0.00256004, 1748.90787685], [1517069460000, 0.00256004, 0.00257282, 0.00256004, 0.002561, 3.71414972], [1517069520000, 0.002561, 0.002561, 0.002561, 0.002561, 12.36], [1517069580000, 0.00256118, 0.00256118, 0.00256101, 0.00256101, 12.38580675], [1517069640000, 0.00256101, 0.00256101, 0.00256101, 0.00256101, 123.94958521], [1517069700000, 0.00256101, 0.00256101, 0.002561, 0.002561, 58.66161225], [1517069760000, 0.002561, 0.00256101, 0.002561, 0.00256101, 73.91441006], [1517069820000, 0.00256101, 0.00257641, 0.00256004, 0.00257641, 150.82295519], [1517069880000, 0.00258015, 0.00258464, 0.00258015, 0.00258429, 51.61416569], [1517069940000, 0.00258426, 0.00258426, 0.00257, 0.00257001, 912.45369056], [1517070000000, 0.00258, 0.00258, 0.002563, 0.00256991, 140.7455098], [1517070060000, 0.00256101, 0.00257354, 0.00256004, 0.00256008, 358.90650224], [1517070120000, 0.00256264, 0.00256264, 0.00256264, 0.00256264, 5.49450549], [1517070180000, 0.00256989, 0.00256989, 0.00256989, 0.00256989, 1.71213553], [1517070240000, 0.00256989, 0.00257355, 0.00256989, 0.00256989, 293.28503317], [1517070300000, 0.00256387, 0.00256387, 0.00256387, 0.00256387, 2.959057], [1517070360000, 0.00256387, 0.00256387, 0.00256387, 0.00256387, 50.83631914], [1517070420000, 0.00256387, 0.00256387, 0.00256387, 0.00256387, 10.0], [1517070480000, 0.00256387, 0.00257956, 0.00256387, 0.00257956, 112.96212735], [1517070540000, 0.00257852, 0.00257956, 0.00256387, 0.00256387, 68.07910992], [1517070660000, 0.00256395, 0.00256395, 0.00256395, 0.00256395, 1.3726836], [1517070720000, 0.00257954, 0.00257954, 0.00256395, 0.00256396, 57.83054119], [1517070780000, 0.00257953, 0.00257953, 0.00256396, 0.00256396, 26.63976351], [1517070840000, 0.00256398, 0.00257787, 0.00256398, 0.00257786, 233.94496311], [1517070900000, 0.00257743, 0.00257743, 0.00256396, 0.00256396, 4.34287371], [1517070960000, 0.00256399, 0.002576, 0.00256396, 0.00256655, 40.10560169], [1517071020000, 0.00256655, 0.00256656, 0.00256655, 0.00256656, 22.61312649], [1517071080000, 0.00257554, 0.00257555, 0.00256656, 0.00256656, 48.93696012], [1517071140000, 0.00256656, 0.00257532, 0.00256656, 0.00256656, 8.88606466], [1517071200000, 0.00256656, 0.00257477, 0.00256656, 0.00256656, 84.05684828], [1517071260000, 0.00256656, 0.0025747, 0.00256656, 0.00256656, 81.15810626], [1517071320000, 0.00257469, 0.00257469, 0.00256397, 0.00256654, 97.52389052], [1517071380000, 0.00256654, 0.00256655, 0.00256654, 0.00256655, 102.03964393], [1517071440000, 0.00256655, 0.00256655, 0.00256655, 0.00256655, 0.85912996], [1517071500000, 0.00257465, 0.00257474, 0.00256655, 0.00257474, 260.22929592], [1517071560000, 0.00257474, 0.00258, 0.00256656, 0.00256656, 1017.04470728], [1517071620000, 0.00256656, 0.00257251, 0.00256656, 0.00257251, 5.39020807], [1517071680000, 0.00256657, 0.00257251, 0.00256657, 0.00257251, 41.19045928], [1517071740000, 0.00256657, 0.00256657, 0.00256657, 0.00256657, 107.95], [1517071800000, 0.00256657, 0.00257249, 0.00256657, 0.00256657, 226.2022474], [1517071860000, 0.00256657, 0.00257, 0.00256656, 0.00257, 193.75499751], [1517071920000, 0.00257, 0.00257, 0.00256655, 0.00256655, 701.38146482], [1517071980000, 0.00256655, 0.00256655, 0.00256654, 0.00256654, 276.21186926], [1517072040000, 0.00256654, 0.00257, 0.00256654, 0.00257, 206.47474985], [1517072100000, 0.00257, 0.00257895, 0.00257, 0.00257001, 274.1342185], [1517072160000, 0.00257001, 0.00257001, 0.00257, 0.00257, 353.50945255], [1517072220000, 0.00257, 0.00257248, 0.00256396, 0.00256396, 775.06271408], [1517072280000, 0.00256396, 0.00257249, 0.00256008, 0.00257249, 179.41059894], [1517072340000, 0.00256008, 0.00257199, 0.00256008, 0.00257199, 862.03692704], [1517072400000, 0.002562, 0.00257199, 0.00255304, 0.00255304, 2383.80111744], [1517072460000, 0.00257, 0.00257197, 0.00257, 0.00257, 14.36093089], [1517072520000, 0.00257198, 0.00257198, 0.00255319, 0.00256, 124.5216303], [1517072580000, 0.00257198, 0.00257199, 0.00256, 0.00256, 105.07046827], [1517072640000, 0.00256, 0.00256, 0.00255641, 0.00255641, 8.95263213], [1517072700000, 0.00256201, 0.00257199, 0.00256, 0.00256, 716.84568978], [1517072760000, 0.00256, 0.00256001, 0.00256, 0.00256001, 89.61539794], [1517072820000, 0.00256, 0.00256003, 0.00255311, 0.00255311, 1983.79998684], [1517072940000, 0.002572, 0.002572, 0.00255462, 0.00255462, 31.89118572], [1517073000000, 0.00255464, 0.00257249, 0.00255463, 0.00257249, 45.53862609], [1517073060000, 0.00255487, 0.00257249, 0.00255486, 0.00257249, 10.10730639], [1517073120000, 0.00255477, 0.00257249, 0.00255477, 0.00257249, 38.60506775], [1517073180000, 0.00257249, 0.00257249, 0.00255503, 0.00255511, 75.04036742], [1517073240000, 0.00255526, 0.00258, 0.00255526, 0.00258, 175.92462696], [1517073300000, 0.0025617, 0.00257984, 0.0025617, 0.00257984, 16.04051707], [1517073360000, 0.0025617, 0.00257948, 0.0025617, 0.0025617, 9.99366299], [1517073480000, 0.0025617, 0.002579, 0.0025617, 0.0025617, 186.83033927], [1517073540000, 0.0025617, 0.0025617, 0.00255559, 0.0025617, 264.43054946], [1517073600000, 0.0025617, 0.0025617, 0.0025617, 0.0025617, 14.74538784], [1517073660000, 0.0025617, 0.0025617, 0.0025617, 0.0025617, 8.52598688], [1517073720000, 0.0025617, 0.002579, 0.0025617, 0.0025617, 675.91512207], [1517073780000, 0.00257891, 0.00257891, 0.00256584, 0.00256584, 20.54506804], [1517073840000, 0.00256584, 0.00256584, 0.00255942, 0.00256584, 72.52322965], [1517073900000, 0.00257818, 0.00257818, 0.00256584, 0.00256584, 139.85324202], [1517073960000, 0.00257818, 0.00257818, 0.00257818, 0.00257818, 3.60963779], [1517074020000, 0.00257817, 0.00257818, 0.00255304, 0.0025539, 1513.91835046], [1517074080000, 0.0025781, 0.0025781, 0.00257, 0.00257, 51.0], [1517074140000, 0.0025575, 0.00257, 0.0025575, 0.00257, 27.13172218], [1517074200000, 0.00257, 0.00257882, 0.00257, 0.00257, 375.00219209], [1517074260000, 0.00257237, 0.00257237, 0.00257237, 0.00257237, 35.87039332], [1517074320000, 0.0025579, 0.00257882, 0.00255789, 0.0025583, 40.0833562], [1517074380000, 0.00255831, 0.00255832, 0.00255831, 0.00255831, 45.49422488], [1517074440000, 0.00255831, 0.00257844, 0.00255831, 0.00255831, 431.22529316], [1517074500000, 0.0025707, 0.0025707, 0.0025585, 0.0025585, 6.14051104], [1517074560000, 0.00255831, 0.0025707, 0.00255831, 0.0025707, 14.97579697], [1517074620000, 0.0025707, 0.0025707, 0.0025707, 0.0025707, 16.55890421], [1517074680000, 0.00255832, 0.00255832, 0.00255832, 0.00255832, 514.68462325], [1517074740000, 0.00255832, 0.00255832, 0.00255831, 0.00255832, 197.20753059], [1517074800000, 0.00255832, 0.00255832, 0.00255832, 0.00255832, 3.30258648], [1517074860000, 0.00257069, 0.0025707, 0.00257069, 0.0025707, 10.71886143], [1517074920000, 0.0025707, 0.0025707, 0.0025707, 0.0025707, 29.64410446], [1517074980000, 0.00255835, 0.00257069, 0.00255835, 0.00257069, 54.72949229], [1517075100000, 0.0025706, 0.00257069, 0.00256, 0.00257069, 184.12447877], [1517075160000, 0.00257069, 0.00257069, 0.00257069, 0.00257069, 5.0], [1517075220000, 0.00257069, 0.00257069, 0.00257069, 0.00257069, 50.85339396], [1517075280000, 0.002579, 0.00257998, 0.002579, 0.00257998, 14.79767617], [1517075340000, 0.00256032, 0.00257998, 0.00256032, 0.00257998, 72.81616807], [1517075400000, 0.00258, 0.00258, 0.00257998, 0.00257998, 196.32142284], [1517075460000, 0.00258, 0.00258, 0.00257998, 0.00258, 98.29207883], [1517075520000, 0.00257998, 0.00258, 0.00257998, 0.00258, 184.47499235], [1517075580000, 0.00257998, 0.00257998, 0.00257998, 0.00257998, 16.64371056], [1517075640000, 0.00257998, 0.00257998, 0.00255192, 0.00255192, 1991.42407707], [1517075700000, 0.00255621, 0.00257353, 0.00255612, 0.00257353, 8.4231055], [1517075760000, 0.00257353, 0.00257353, 0.0025735, 0.0025735, 51.50836153], [1517075820000, 0.0025735, 0.0025735, 0.0025735, 0.0025735, 126.46818159], [1517075880000, 0.0025735, 0.0025735, 0.00256042, 0.0025735, 80.34176386], [1517075940000, 0.0025735, 0.0025735, 0.0025735, 0.0025735, 1.55041772], [1517076000000, 0.002572, 0.0025735, 0.002572, 0.0025735, 32.17515224], [1517076060000, 0.00256102, 0.0025735, 0.00256102, 0.00256203, 220.69009734], [1517076120000, 0.0025735, 0.0025735, 0.00257267, 0.00257267, 30.78221143], [1517076180000, 0.00256204, 0.00256204, 0.00256, 0.00256, 606.72831093], [1517076240000, 0.00256, 0.00256, 0.00255254, 0.00256, 995.54724151], [1517076300000, 0.00256, 0.00256203, 0.00256, 0.00256203, 155.4379287], [1517076360000, 0.00256203, 0.00257267, 0.00256, 0.00256, 64.21623643], [1517076420000, 0.00256203, 0.00256203, 0.00256203, 0.00256203, 56.164906], [1517076480000, 0.00256203, 0.00256204, 0.00256203, 0.00256203, 57.42811702], [1517076540000, 0.00256023, 0.00256023, 0.00256023, 0.00256023, 13.37430675], [1517076600000, 0.0025735, 0.0025735, 0.00256024, 0.00256024, 41.82910488], [1517076660000, 0.00256024, 0.00256024, 0.00256024, 0.00256024, 0.4], [1517076720000, 0.00256024, 0.00256024, 0.00256022, 0.00256024, 21.01430769], [1517076780000, 0.00256022, 0.00257301, 0.00256022, 0.00257301, 42.91959547], [1517076840000, 0.00257279, 0.00257279, 0.00257279, 0.00257279, 12.04001857], [1517076900000, 0.00256279, 0.00256279, 0.00256279, 0.00256279, 4.80737446], [1517077020000, 0.00256281, 0.00257248, 0.0025521, 0.00257248, 755.52573905], [1517077080000, 0.00257247, 0.00257247, 0.00256279, 0.00256279, 11.85175037], [1517077140000, 0.00256279, 0.00256279, 0.00256279, 0.00256279, 5.0], [1517077200000, 0.0025628, 0.00257248, 0.00256278, 0.00257248, 147.77392363], [1517077260000, 0.002572, 0.002572, 0.002565, 0.002565, 39.21170274], [1517077320000, 0.002565, 0.00257248, 0.00256277, 0.00257247, 21.15601483], [1517077380000, 0.00257247, 0.00257248, 0.002565, 0.002565, 46.13042332], [1517077440000, 0.002565, 0.002565, 0.00255962, 0.00256277, 201.42974274], [1517077500000, 0.00257247, 0.00257247, 0.00257247, 0.00257247, 38.20472593], [1517077560000, 0.00257247, 0.00257248, 0.00257247, 0.00257247, 35.70831255], [1517077620000, 0.00257247, 0.00257248, 0.00257247, 0.00257247, 20.73821627], [1517077680000, 0.00257247, 0.00257247, 0.00257247, 0.00257247, 2.1288703], [1517077740000, 0.00257247, 0.00257247, 0.00257247, 0.00257247, 30.05300919], [1517077800000, 0.00257248, 0.00257248, 0.00257247, 0.00257247, 16.98219696], [1517077860000, 0.00257248, 0.00257248, 0.00257247, 0.00257247, 69.51495343], [1517077920000, 0.00257247, 0.00257247, 0.00256, 0.00256, 4.31802584], [1517077980000, 0.00256, 0.002562, 0.00256, 0.002562, 1.23359455], [1517078040000, 0.00257247, 0.00257247, 0.00257247, 0.00257247, 2.22117193], [1517078100000, 0.00257247, 0.00257248, 0.002564, 0.00257247, 18.3636238], [1517078160000, 0.00257247, 0.00257248, 0.00257247, 0.00257248, 60.33335001], [1517078220000, 0.002564, 0.00257248, 0.002564, 0.00257248, 152.35705265], [1517078280000, 0.00257247, 0.00257247, 0.002564, 0.002564, 10.90172104], [1517078400000, 0.00257247, 0.00257248, 0.00257247, 0.00257248, 6.98328201], [1517078460000, 0.002572, 0.00257248, 0.002572, 0.00257248, 5.11206188], [1517078520000, 0.00257248, 0.00257248, 0.00257248, 0.00257248, 39.4726479], [1517078580000, 0.00257248, 0.00257248, 0.00257248, 0.00257248, 8.54040354], [1517078640000, 0.002572, 0.002572, 0.002572, 0.002572, 2.00545062], [1517078700000, 0.002572, 0.00257248, 0.002572, 0.00257248, 90.85233488], [1517078760000, 0.00257248, 0.00257248, 0.00257248, 0.00257248, 81.53992725], [1517078880000, 0.002572, 0.00257248, 0.002572, 0.00257248, 18.96657386], [1517078940000, 0.00257248, 0.00257248, 0.002572, 0.002572, 9.58380014], [1517079060000, 0.00257245, 0.00257246, 0.00257245, 0.00257246, 3.21096992], [1517079120000, 0.00257245, 0.00257246, 0.00257245, 0.00257246, 6.32774833], [1517079180000, 0.00257245, 0.00257248, 0.00257245, 0.00257248, 235.72780291], [1517079240000, 0.00257247, 0.00257248, 0.002572, 0.00257248, 36.89189143], [1517079300000, 0.00257248, 0.00257248, 0.00257247, 0.00257247, 51.30176348], [1517079360000, 0.00257247, 0.00257247, 0.00257247, 0.00257247, 1.50090459], [1517079420000, 0.00257247, 0.00257247, 0.00257247, 0.00257247, 14.51581543], [1517079480000, 0.00257247, 0.00257247, 0.00257247, 0.00257247, 62.48631435], [1517079540000, 0.00257247, 0.00258, 0.00257247, 0.00258, 148.14690632], [1517079600000, 0.0025817, 0.00258463, 0.002579, 0.002579, 15.72368069], [1517079660000, 0.00257201, 0.00257201, 0.00257201, 0.00257201, 235.51097388], [1517079720000, 0.00257201, 0.00257201, 0.002572, 0.002572, 64.28348079], [1517079780000, 0.002572, 0.002579, 0.002572, 0.002579, 51.27999457], [1517079840000, 0.00257899, 0.00257899, 0.00257899, 0.00257899, 2.67468429], [1517079960000, 0.00257899, 0.00257899, 0.00257899, 0.00257899, 9.42526668], [1517080020000, 0.002572, 0.002572, 0.002572, 0.002572, 3.28848447], [1517080080000, 0.00257, 0.00257, 0.00257, 0.00257, 39.71200711], [1517080140000, 0.00256402, 0.002572, 0.00256402, 0.002572, 1.06559332], [1517080200000, 0.002572, 0.00257898, 0.002572, 0.00257898, 45.57100843], [1517080320000, 0.00257897, 0.00257898, 0.002572, 0.00257898, 90.68585085], [1517080380000, 0.002572, 0.002572, 0.002572, 0.002572, 2.84924151], [1517080440000, 0.00257898, 0.00257898, 0.00257898, 0.00257898, 34.25959426], [1517080500000, 0.00257201, 0.00257898, 0.0025645, 0.00257898, 73.63149313], [1517080560000, 0.00257897, 0.00257898, 0.00257897, 0.00257898, 51.55990681], [1517080620000, 0.00257898, 0.00257898, 0.00257898, 0.00257898, 5.81625294], [1517080740000, 0.00257898, 0.00257898, 0.00257898, 0.00257898, 13.51994291], [1517080800000, 0.00257898, 0.00257898, 0.002565, 0.00257898, 39.33904102], [1517080860000, 0.00257838, 0.00257897, 0.00257787, 0.00257897, 27.3141521], [1517080920000, 0.00257897, 0.00257897, 0.00257897, 0.00257897, 18.74372082], [1517080980000, 0.00257898, 0.00257898, 0.002572, 0.002572, 41.28997784], [1517081040000, 0.002572, 0.002572, 0.002572, 0.002572, 15.42606618], [1517081100000, 0.00257898, 0.00257898, 0.00257898, 0.00257898, 38.67808203], [1517081160000, 0.00257898, 0.00257898, 0.00257898, 0.00257898, 33.80940436], [1517081220000, 0.00257898, 0.00257898, 0.00257898, 0.00257898, 394.39183418], [1517081280000, 0.00257898, 0.00257898, 0.00257898, 0.00257898, 100.13100326], [1517081340000, 0.0025725, 0.0025725, 0.0025725, 0.0025725, 20.0], [1517081400000, 0.00257898, 0.00257898, 0.00257898, 0.00257898, 216.41112551], [1517081460000, 0.00257898, 0.00257898, 0.0025722, 0.0025722, 13.89207344], [1517081520000, 0.00257548, 0.00257548, 0.0025722, 0.0025722, 2.9191], [1517081580000, 0.00257898, 0.00257898, 0.00257898, 0.00257898, 162.79025225], [1517081640000, 0.00257898, 0.00257898, 0.00257548, 0.00257548, 17.39081801], [1517081700000, 0.00257548, 0.00257548, 0.00257548, 0.00257548, 107.51750741], [1517081760000, 0.00257548, 0.00257898, 0.00257548, 0.00257548, 147.63473338], [1517081820000, 0.00257548, 0.00257548, 0.00257548, 0.00257548, 3.90618896], [1517081880000, 0.002579, 0.002579, 0.002579, 0.002579, 69.11201113], [1517081940000, 0.002579, 0.00258, 0.002579, 0.00258, 8.33633196], [1517082000000, 0.00258, 0.00258, 0.002579, 0.00258, 10.84429531], [1517082060000, 0.00258, 0.00258, 0.00257548, 0.00257548, 107.10526581], [1517082120000, 0.00258, 0.00258, 0.00258, 0.00258, 41.8351816], [1517082180000, 0.002582, 0.002582, 0.002582, 0.002582, 16.81], [1517082240000, 0.00258501, 0.00258818, 0.00258501, 0.00258501, 2.21928837], [1517082300000, 0.00258818, 0.00258818, 0.002582, 0.002582, 55.75494997], [1517082360000, 0.002588, 0.002588, 0.002588, 0.002588, 14.92738322], [1517082420000, 0.002588, 0.0025949, 0.00257548, 0.00257548, 588.40163412], [1517082480000, 0.002582, 0.00259488, 0.00257548, 0.00257548, 140.59923758], [1517082540000, 0.00259484, 0.00259484, 0.00259397, 0.00259397, 186.46617943], [1517082600000, 0.00258484, 0.00258748, 0.00258484, 0.00258484, 44.59780678], [1517082660000, 0.00257837, 0.00257837, 0.00257805, 0.00257805, 20.298102], [1517082720000, 0.00257837, 0.00258748, 0.00257837, 0.00258748, 8.05125693], [1517082780000, 0.00258748, 0.0025938, 0.00257842, 0.00259379, 180.60006238], [1517082840000, 0.00259379, 0.0025938, 0.00257842, 0.0025875, 221.84708828], [1517082900000, 0.0025875, 0.00259376, 0.0025873, 0.00258731, 75.47409172], [1517082960000, 0.00258732, 0.0025932, 0.0025873, 0.0025873, 29.15214497], [1517083020000, 0.0025873, 0.00259366, 0.00258671, 0.00258671, 124.44397665], [1517083080000, 0.00258001, 0.00258004, 0.00258001, 0.00258004, 0.80700974], [1517083140000, 0.002581, 0.002581, 0.0025801, 0.0025801, 14.0], [1517083200000, 0.002593, 0.002593, 0.00258015, 0.00258651, 84.95579842], [1517083320000, 0.00258651, 0.0025929, 0.00258651, 0.0025929, 334.90056095], [1517083380000, 0.002581, 0.00259199, 0.00258001, 0.0025801, 589.15537468], [1517083440000, 0.0025801, 0.00258292, 0.0025801, 0.0025802, 44.23474393], [1517083500000, 0.00259086, 0.00259086, 0.0025832, 0.00259086, 17.14067127], [1517083560000, 0.00259086, 0.00259086, 0.002575, 0.002575, 359.70469514], [1517083620000, 0.0025721, 0.002575, 0.0025721, 0.002575, 9.89601537], [1517083680000, 0.002575, 0.00257837, 0.002575, 0.00257837, 5.59681882], [1517083740000, 0.00258991, 0.00258992, 0.00258991, 0.00258992, 179.96586122], [1517083800000, 0.00258786, 0.00258786, 0.002575, 0.002575, 29.69235876], [1517083860000, 0.00258, 0.00258, 0.002575, 0.002575, 17.09831533], [1517083920000, 0.00258693, 0.00258693, 0.002575, 0.002575, 10.37113455], [1517083980000, 0.002575, 0.002575, 0.002575, 0.002575, 37.56754167], [1517084040000, 0.002575, 0.00257502, 0.002575, 0.00257502, 8.9220296], [1517084160000, 0.00257502, 0.00257502, 0.00257502, 0.00257502, 33.15192062], [1517084220000, 0.00257502, 0.00257502, 0.00257502, 0.00257502, 58.45747341], [1517084280000, 0.00257502, 0.00258695, 0.00257502, 0.00258695, 28.69187708], [1517084340000, 0.00257502, 0.00259099, 0.00257502, 0.00257502, 211.27098896], [1517084460000, 0.00259095, 0.00259095, 0.00259094, 0.00259094, 4.63064333], [1517084520000, 0.00259094, 0.00259094, 0.00257551, 0.00259093, 103.91871643], [1517084580000, 0.00259094, 0.00259094, 0.00258232, 0.00258307, 51.08546317], [1517084640000, 0.00259091, 0.00259092, 0.00258232, 0.00258232, 25.45095422], [1517084700000, 0.00257555, 0.00257555, 0.00257555, 0.00257555, 10.0], [1517084820000, 0.00258232, 0.00258232, 0.00258232, 0.00258232, 1.48772636], [1517084880000, 0.00258232, 0.00258232, 0.0025759, 0.00258231, 24.89603677], [1517084940000, 0.00258231, 0.00258232, 0.00258228, 0.00258232, 55.74307671], [1517085000000, 0.002581, 0.002581, 0.00258, 0.00258, 44.05947847], [1517085060000, 0.00258, 0.00258232, 0.0025759, 0.00258232, 8.32288738], [1517085120000, 0.00258232, 0.00258232, 0.00258232, 0.00258232, 84.98172186], [1517085240000, 0.00258, 0.00258001, 0.00258, 0.00258001, 12.44736055], [1517085300000, 0.00258232, 0.00258232, 0.00258001, 0.00258001, 62.13314803], [1517085360000, 0.00258, 0.00258, 0.00258, 0.00258, 84.31136661], [1517085420000, 0.00257999, 0.00258001, 0.00257999, 0.00258001, 103.69697555], [1517085480000, 0.00258001, 0.00259091, 0.00258001, 0.00259091, 120.85718832], [1517085540000, 0.00259091, 0.00259091, 0.00258001, 0.00258001, 219.60558248], [1517085600000, 0.00258001, 0.00258001, 0.00258001, 0.00258001, 134.06275669], [1517085660000, 0.00258001, 0.00258001, 0.00258001, 0.00258001, 46.21174394], [1517085720000, 0.00258001, 0.00258001, 0.00258001, 0.00258001, 350.962196], [1517085780000, 0.00258001, 0.00258001, 0.00258, 0.00258, 48.51087473], [1517085840000, 0.00258, 0.00258001, 0.00258, 0.00258, 62.4617049], [1517085900000, 0.0025909, 0.00259093, 0.0025909, 0.0025909, 32.47818677], [1517085960000, 0.00259093, 0.00259093, 0.0025909, 0.0025909, 62.88381934], [1517086020000, 0.0025909, 0.0025909, 0.0025909, 0.0025909, 4.84996893], [1517086080000, 0.00258003, 0.00258003, 0.00258001, 0.00258001, 131.83462211], [1517086200000, 0.0025909, 0.0025909, 0.00258004, 0.0025909, 18.58695762], [1517086260000, 0.0025909, 0.0025909, 0.00258003, 0.00258003, 14.46921964], [1517086320000, 0.00258003, 0.00258003, 0.00258003, 0.00258003, 2.24843479], [1517086380000, 0.00258004, 0.00258004, 0.00258001, 0.00258001, 20.36289863], [1517086440000, 0.0025909, 0.0025909, 0.0025909, 0.0025909, 2.81610008], [1517086500000, 0.0025909, 0.0025909, 0.0025909, 0.0025909, 4.85132059], [1517086560000, 0.00259089, 0.00259089, 0.00258941, 0.00258941, 73.83959159], [1517086620000, 0.002589, 0.002589, 0.002589, 0.002589, 3.0], [1517086680000, 0.00258007, 0.002589, 0.00258007, 0.0025804, 135.15606826], [1517086740000, 0.00259089, 0.00259089, 0.00259088, 0.00259088, 20.94972148], [1517086800000, 0.00258041, 0.00258041, 0.00258041, 0.00258041, 78.84228177], [1517086860000, 0.00258041, 0.00259089, 0.00258007, 0.00259089, 19.14734115], [1517086920000, 0.00259089, 0.00259089, 0.00258042, 0.00258042, 10.15002837], [1517086980000, 0.00259089, 0.00259089, 0.00259089, 0.00259089, 90.06401121], [1517087040000, 0.00259089, 0.00259089, 0.00259089, 0.00259089, 7.70005674], [1517087100000, 0.0025899, 0.0025899, 0.00258042, 0.00258042, 1.42272682], [1517087160000, 0.0025899, 0.0025899, 0.00258006, 0.00258007, 143.69348377], [1517087220000, 0.00258006, 0.00258006, 0.00258006, 0.00258006, 0.25894926], [1517087280000, 0.00258007, 0.0025898, 0.00258007, 0.0025898, 60.7201037], [1517087340000, 0.0025898, 0.0025899, 0.0025898, 0.0025899, 52.95488858], [1517087400000, 0.00258016, 0.00258989, 0.00258016, 0.00258989, 8.83049576], [1517087460000, 0.00258989, 0.00258989, 0.0025804, 0.00258989, 349.6158042], [1517087520000, 0.00258989, 0.0025899, 0.00258989, 0.0025899, 13.79370272], [1517087580000, 0.0025899, 0.0025899, 0.00258989, 0.00258989, 63.96879848], [1517087640000, 0.00258989, 0.0025899, 0.00258989, 0.0025899, 432.98899117], [1517087700000, 0.0025899, 0.00259088, 0.0025899, 0.00259088, 72.9660811], [1517087760000, 0.00258011, 0.00258011, 0.00258011, 0.00258011, 2.00071194], [1517087820000, 0.00259088, 0.00259088, 0.00259088, 0.00259088, 14.64457425], [1517087880000, 0.00259088, 0.0026, 0.00259088, 0.0026, 3842.42882677], [1517087940000, 0.00259999, 0.00259999, 0.00259999, 0.00259999, 17.87782262], [1517088000000, 0.00259996, 0.00259996, 0.00259993, 0.00259993, 104.6718457], [1517088060000, 0.00259992, 0.00259998, 0.00259992, 0.00259993, 358.17204443], [1517088120000, 0.00259993, 0.0026, 0.00259993, 0.00259993, 375.31194211], [1517088180000, 0.00259993, 0.00259999, 0.00259993, 0.00259993, 12.64225248], [1517088240000, 0.00259993, 0.0026, 0.00259993, 0.00259994, 70.94359445], [1517088300000, 0.0026, 0.0026, 0.00259994, 0.00259994, 230.12047997], [1517088360000, 0.00259995, 0.0026, 0.00259995, 0.00259995, 26.64808162], [1517088420000, 0.00259995, 0.0026, 0.00259995, 0.0026, 18.04451393], [1517088480000, 0.0026, 0.00260033, 0.0026, 0.0026, 62.79636051], [1517088540000, 0.0026, 0.00260001, 0.0026, 0.0026, 486.02022707], [1517088600000, 0.00260002, 0.00260567, 0.0026, 0.002605, 346.27986241], [1517088660000, 0.00260567, 0.00260718, 0.0026042, 0.00260421, 281.95711348], [1517088720000, 0.00260718, 0.00260989, 0.0026042, 0.00260989, 1147.09259108], [1517088780000, 0.00260421, 0.00260988, 0.0026042, 0.0026042, 189.46795658], [1517088840000, 0.0026042, 0.00260987, 0.0026042, 0.00260987, 17.39499006], [1517088900000, 0.00260421, 0.00260979, 0.0026042, 0.0026042, 632.37605054], [1517088960000, 0.0026042, 0.0026052, 0.0026, 0.0026, 100.91166451], [1517089020000, 0.0026, 0.00260979, 0.0026, 0.0026, 363.64451322], [1517089080000, 0.002608, 0.002608, 0.0026, 0.0026, 210.79344042], [1517089140000, 0.002602, 0.002602, 0.002602, 0.002602, 76.0315355], [1517089200000, 0.002602, 0.002602, 0.0026, 0.002602, 350.5324612], [1517089260000, 0.002602, 0.002602, 0.002602, 0.002602, 60.80836578], [1517089320000, 0.002602, 0.0026099, 0.002602, 0.002602, 152.74876696], [1517089380000, 0.002602, 0.0026022, 0.002602, 0.0026022, 10.73383683], [1517089440000, 0.0026022, 0.00260794, 0.0026022, 0.00260794, 59.3599302], [1517089500000, 0.00260792, 0.00260793, 0.0026023, 0.0026023, 23.06307926], [1517089560000, 0.00260793, 0.00260984, 0.00260221, 0.00260221, 446.13749549], [1517089620000, 0.00260221, 0.00260221, 0.00260221, 0.00260221, 0.38273131], [1517089740000, 0.00260884, 0.0026108, 0.0026025, 0.0026108, 305.32825528], [1517089800000, 0.00261, 0.0026108, 0.00261, 0.0026108, 369.68085988], [1517089860000, 0.00261, 0.00261109, 0.0026025, 0.00261109, 692.44700088], [1517089920000, 0.00261109, 0.00261109, 0.0026022, 0.00260249, 2181.2523057], [1517089980000, 0.0026022, 0.00261, 0.0026, 0.00260001, 290.72983529], [1517090040000, 0.00260868, 0.00260868, 0.0026, 0.0026, 1284.76340319], [1517090100000, 0.0026, 0.0026, 0.0026, 0.0026, 51.9531203], [1517090160000, 0.0026, 0.00260001, 0.0026, 0.00260001, 39.94893091], [1517090220000, 0.00260001, 0.00260002, 0.00260001, 0.00260002, 41.17672499], [1517090280000, 0.00260997, 0.00260997, 0.00260009, 0.00260009, 61.01133108], [1517090340000, 0.00260009, 0.00260009, 0.00260009, 0.00260009, 29.38130755], [1517090400000, 0.002604, 0.002604, 0.0026001, 0.0026001, 9.01628075], [1517090460000, 0.0026001, 0.00261, 0.0026001, 0.0026001, 391.01319787], [1517090520000, 0.0026001, 0.00261, 0.00260009, 0.00260009, 254.96335841], [1517090580000, 0.00261, 0.00261, 0.002609, 0.002609, 13.0489202], [1517090640000, 0.002609, 0.00261, 0.00260009, 0.00260009, 43.89711613], [1517090700000, 0.00260009, 0.0026001, 0.00260009, 0.0026001, 114.41046838], [1517090760000, 0.00260999, 0.00261, 0.00260999, 0.00261, 10.82197126], [1517090820000, 0.00260582, 0.00260842, 0.00260582, 0.00260842, 38.18781803], [1517090880000, 0.00260842, 0.00261, 0.00260842, 0.00261, 37.90003546], [1517090940000, 0.00261, 0.00261, 0.00261, 0.00261, 0.42351663], [1517091000000, 0.0026001, 0.00260999, 0.0026001, 0.00260999, 62.91576529], [1517091060000, 0.00260999, 0.00261, 0.00260322, 0.00260322, 86.00193861], [1517091120000, 0.00261, 0.00261, 0.0026092, 0.0026092, 216.18824417], [1517091180000, 0.00261, 0.00261, 0.00261, 0.00261, 1151.11369451], [1517091240000, 0.00260322, 0.0026033, 0.00260322, 0.00260322, 20.53219797], [1517091300000, 0.00260322, 0.0026099, 0.00260322, 0.0026099, 41.52557207], [1517091360000, 0.00261, 0.00261, 0.0026099, 0.0026099, 150.23043014], [1517091420000, 0.0026099, 0.0026099, 0.0026099, 0.0026099, 16.71881143], [1517091480000, 0.00260989, 0.0026099, 0.00260202, 0.0026099, 38.18971405], [1517091540000, 0.00260205, 0.00261, 0.00260205, 0.00261, 215.63381808], [1517091600000, 0.00261, 0.00261, 0.00261, 0.00261, 20.31269635], [1517091660000, 0.00261109, 0.00261109, 0.00261, 0.00261, 92.57595908], [1517091720000, 0.00261109, 0.00261109, 0.00261, 0.00261, 8.55111128], [1517091780000, 0.0026111, 0.0026111, 0.0026111, 0.0026111, 69.37213205], [1517091840000, 0.00261, 0.00261138, 0.00261, 0.00261138, 134.99969521], [1517091900000, 0.00261138, 0.00261145, 0.0026111, 0.00261145, 6.79641143], [1517091960000, 0.00261145, 0.00261145, 0.00261144, 0.00261145, 231.08494903], [1517092020000, 0.00261144, 0.00261144, 0.0026111, 0.0026111, 76.94840978], [1517092080000, 0.0026111, 0.0026111, 0.0026111, 0.0026111, 51.10743009], [1517092140000, 0.00261144, 0.00261144, 0.0026111, 0.00261144, 19.21538805], [1517092200000, 0.00261145, 0.00261145, 0.00261145, 0.00261145, 82.74390906], [1517092260000, 0.00261145, 0.00261145, 0.00261145, 0.00261145, 67.66194327], [1517092320000, 0.00261145, 0.00261145, 0.00261144, 0.00261145, 37.12200053], [1517092380000, 0.00261144, 0.00261145, 0.00261, 0.00261145, 33.51604888], [1517092440000, 0.00261, 0.00261145, 0.00261, 0.00261, 129.86045356], [1517092500000, 0.00261145, 0.00261145, 0.00261145, 0.00261145, 34.63344483], [1517092560000, 0.00261001, 0.00261001, 0.00261001, 0.00261001, 59.33603239], [1517092620000, 0.00261001, 0.00261145, 0.00261, 0.00261, 64.69415552], [1517092680000, 0.00261145, 0.00261145, 0.00261145, 0.00261145, 15.82644663], [1517092740000, 0.00261145, 0.00261145, 0.00261, 0.00261144, 430.79869122], [1517092800000, 0.00261001, 0.00261234, 0.00261001, 0.00261001, 369.48402738], [1517092860000, 0.00261001, 0.00261001, 0.00261001, 0.00261001, 7.1], [1517092920000, 0.00261198, 0.00261199, 0.00261198, 0.00261199, 34.40229747], [1517092980000, 0.002612, 0.00261234, 0.002612, 0.00261234, 2.42209243], [1517093040000, 0.00261234, 0.00261235, 0.00261234, 0.00261235, 18.28097773], [1517093100000, 0.00261235, 0.00261245, 0.00261235, 0.00261245, 55.69891914], [1517093160000, 0.00261236, 0.0026129, 0.00261198, 0.0026129, 172.88700125], [1517093220000, 0.00261245, 0.0026129, 0.00261108, 0.0026129, 60.11886692], [1517093340000, 0.00261335, 0.002615, 0.00261335, 0.002615, 46.39864302], [1517093400000, 0.0026134, 0.00261399, 0.0026129, 0.0026129, 495.7458244], [1517093460000, 0.0026129, 0.00261291, 0.0026129, 0.00261291, 102.92575067], [1517093520000, 0.00261337, 0.00261399, 0.0026129, 0.0026129, 134.97571162], [1517093580000, 0.0026129, 0.00261399, 0.0026129, 0.0026139, 38.76242024], [1517093640000, 0.0026139, 0.00261502, 0.00261235, 0.00261235, 366.75374307], [1517093700000, 0.002615, 0.00261817, 0.002605, 0.00261817, 321.54966453], [1517093760000, 0.00261817, 0.00261818, 0.002605, 0.002605, 109.72497089], [1517093820000, 0.00261494, 0.00261818, 0.00260225, 0.00260226, 75.3086022], [1517093880000, 0.00260226, 0.00260226, 0.00260226, 0.00260226, 14.95535148], [1517093940000, 0.002617, 0.002617, 0.00260225, 0.0026035, 65.37243136], [1517094000000, 0.0026035, 0.002617, 0.0026035, 0.0026035, 18.57324253], [1517094060000, 0.00260355, 0.00260355, 0.0026035, 0.0026035, 151.55195009], [1517094120000, 0.0026035, 0.00261, 0.0026035, 0.00261, 10.15920083], [1517094180000, 0.00261, 0.0026169, 0.0026035, 0.0026035, 16.29469407], [1517094240000, 0.00261, 0.002615, 0.0026035, 0.002615, 24.88756343], [1517094300000, 0.002615, 0.002615, 0.002615, 0.002615, 26.76864239], [1517094360000, 0.0026149, 0.002615, 0.0026149, 0.002615, 83.45302769], [1517094420000, 0.0026149, 0.0026149, 0.0026149, 0.0026149, 61.240146], [1517094480000, 0.0026149, 0.0026149, 0.00260432, 0.00260434, 180.71496017], [1517094540000, 0.002605, 0.0026149, 0.002605, 0.002605, 218.1598024], [1517094600000, 0.002606, 0.002606, 0.002606, 0.002606, 116.11706881], [1517094660000, 0.00261487, 0.00261487, 0.00260601, 0.00260741, 171.6353915], [1517094720000, 0.0026074, 0.0026074, 0.0026074, 0.0026074, 0.42283501], [1517094780000, 0.00260741, 0.002609, 0.0026074, 0.002609, 25.42774588], [1517094840000, 0.00260815, 0.00260815, 0.00260741, 0.00260744, 163.19502026], [1517094900000, 0.00260744, 0.00261481, 0.00260741, 0.0026148, 160.19640035], [1517094960000, 0.00261483, 0.00261493, 0.00260741, 0.00261489, 45.90454384], [1517095020000, 0.00260741, 0.00260741, 0.002607, 0.002607, 122.32788636], [1517095080000, 0.002607, 0.002607, 0.002607, 0.002607, 28.66715989], [1517095140000, 0.002607, 0.0026072, 0.002607, 0.0026072, 117.01777842], [1517095200000, 0.0026072, 0.0026072, 0.002605, 0.00260719, 487.76981999], [1517095260000, 0.00260719, 0.00261381, 0.002605, 0.00260719, 83.75961904], [1517095320000, 0.00260501, 0.00261357, 0.00260501, 0.00261357, 66.84666483], [1517095380000, 0.00260501, 0.00261357, 0.00260501, 0.00260501, 26.775598], [1517095440000, 0.00260501, 0.00260501, 0.00260501, 0.00260501, 19.09622039], [1517095500000, 0.00260501, 0.002614, 0.00260501, 0.002614, 12.32512832], [1517095560000, 0.00260502, 0.00261353, 0.00260502, 0.00261353, 24.93450937], [1517095620000, 0.00260502, 0.00261353, 0.00260502, 0.00260502, 23.65610168], [1517095680000, 0.00260502, 0.00261352, 0.00260501, 0.00260501, 88.45140713], [1517095740000, 0.00260501, 0.00260501, 0.00260501, 0.00260501, 0.84644588], [1517095800000, 0.00260504, 0.00261352, 0.00260504, 0.00261299, 39.1606894], [1517095860000, 0.00260504, 0.00261297, 0.002605, 0.002605, 353.33432792], [1517095920000, 0.002605, 0.00260658, 0.002605, 0.002605, 205.57367365], [1517095980000, 0.002605, 0.002605, 0.002605, 0.002605, 246.58817727], [1517096040000, 0.002605, 0.00260656, 0.002605, 0.002605, 762.27170888], [1517096100000, 0.002605, 0.00260597, 0.00260205, 0.00260205, 88.01727951], [1517096160000, 0.0026001, 0.0026001, 0.00258888, 0.00258888, 432.74810793], [1517096220000, 0.00258888, 0.002596, 0.00258013, 0.00259599, 200.4959896], [1517096280000, 0.00259599, 0.00259599, 0.00259599, 0.00259599, 6.60955037], [1517096340000, 0.002585, 0.002585, 0.0025803, 0.0025803, 108.83433628], [1517096400000, 0.00258501, 0.002596, 0.0025802, 0.0025802, 327.13242203], [1517096460000, 0.002585, 0.002585, 0.00258013, 0.00258019, 157.65680969], [1517096520000, 0.00258019, 0.00259599, 0.00258014, 0.00259599, 33.09669994], [1517096580000, 0.00259599, 0.002596, 0.002585, 0.002585, 58.64433082], [1517096640000, 0.002585, 0.002596, 0.00258013, 0.00258013, 353.7029816], [1517096700000, 0.00258013, 0.00258013, 0.00258013, 0.00258013, 8.80424717], [1517096760000, 0.00259565, 0.00259565, 0.00259565, 0.00259565, 0.38525401], [1517096820000, 0.00259559, 0.00259559, 0.00259559, 0.00259559, 2.0], [1517096940000, 0.00259545, 0.00259545, 0.00259536, 0.00259536, 9.73692], [1517097000000, 0.00259516, 0.00259516, 0.00259499, 0.00259499, 19.0941808], [1517097060000, 0.00258202, 0.00258202, 0.00258202, 0.00258202, 33.13132291], [1517097120000, 0.00258202, 0.00259494, 0.00258051, 0.00258052, 36.70218626], [1517097180000, 0.00258052, 0.00258054, 0.00258052, 0.00258054, 28.6444417], [1517097240000, 0.00259392, 0.00259392, 0.00258899, 0.00258899, 36.55834595], [1517097300000, 0.00258899, 0.00258899, 0.0025805, 0.0025805, 200.20787611], [1517097360000, 0.0025805, 0.00259389, 0.0025805, 0.00259389, 50.38323877], [1517097420000, 0.00258088, 0.00258088, 0.00258088, 0.00258088, 1.67672653], [1517097480000, 0.00258088, 0.00258088, 0.00258088, 0.00258088, 12.8181835], [1517097540000, 0.00258088, 0.00259563, 0.00258088, 0.00259563, 78.59180612], [1517097600000, 0.002581, 0.00259563, 0.00258088, 0.00258088, 76.52625011], [1517097660000, 0.00258088, 0.00258089, 0.00258088, 0.00258089, 71.34194239], [1517097720000, 0.00258089, 0.00258089, 0.00258088, 0.00258088, 291.07359514], [1517097780000, 0.00258089, 0.00258089, 0.00258089, 0.00258089, 0.42718164], [1517097840000, 0.00258088, 0.00258088, 0.00258088, 0.00258088, 50.59441007], [1517097900000, 0.00258088, 0.00258088, 0.00258088, 0.00258088, 0.32558993], [1517097960000, 0.00258052, 0.0025809, 0.00258051, 0.00258089, 31.20313318], [1517098020000, 0.00258089, 0.0025809, 0.00258051, 0.0025809, 210.94074352], [1517098080000, 0.0025809, 0.0025809, 0.00258051, 0.00258051, 46.06470968], [1517098140000, 0.00258052, 0.00258052, 0.0025805, 0.0025805, 30.02489909], [1517098200000, 0.00258052, 0.00258052, 0.00258052, 0.00258052, 162.45735593], [1517098260000, 0.00259598, 0.00259598, 0.00259598, 0.00259598, 84.17576925], [1517098320000, 0.00259598, 0.00259598, 0.00259596, 0.00259596, 106.27109245], [1517098380000, 0.00259596, 0.00259596, 0.0025805, 0.0025805, 7.48151994], [1517098440000, 0.00259596, 0.00259599, 0.00259596, 0.00259599, 62.5909551], [1517098620000, 0.00258051, 0.00259599, 0.00258051, 0.00259599, 26.34975741], [1517098680000, 0.00259599, 0.00259599, 0.00259599, 0.00259599, 1.22652242], [1517098740000, 0.00259599, 0.00259599, 0.00259599, 0.00259599, 28.37983412], [1517098800000, 0.00258054, 0.00258054, 0.00258054, 0.00258054, 23.54310947], [1517098860000, 0.00259598, 0.00259598, 0.00259598, 0.00259598, 25.0], [1517098920000, 0.00258095, 0.00258095, 0.00258095, 0.00258095, 5.97153037], [1517098980000, 0.002594, 0.00259598, 0.002594, 0.00259598, 115.38746588], [1517099040000, 0.00259399, 0.00259399, 0.00259399, 0.00259399, 5.25014407], [1517099100000, 0.002594, 0.00259598, 0.002594, 0.00259598, 59.19997316], [1517099160000, 0.002594, 0.00259598, 0.00258189, 0.00259598, 28.69805291], [1517099220000, 0.00259598, 0.00259598, 0.00259598, 0.00259598, 3.56428202], [1517099280000, 0.0025959, 0.0025959, 0.00258246, 0.00258246, 14.49828439], [1517099340000, 0.00258246, 0.00259598, 0.00258246, 0.00259598, 154.80639598], [1517099460000, 0.00259598, 0.00259598, 0.002585, 0.002585, 85.61567026], [1517099520000, 0.002585, 0.002585, 0.002585, 0.002585, 37.23074963], [1517099580000, 0.002585, 0.002585, 0.002585, 0.002585, 107.16908854], [1517099640000, 0.002585, 0.002585, 0.002585, 0.002585, 0.42690404], [1517099700000, 0.002585, 0.00259599, 0.002585, 0.00259599, 56.47675938], [1517099760000, 0.002585, 0.002585, 0.002585, 0.002585, 1.1], [1517099820000, 0.002585, 0.002585, 0.002585, 0.002585, 10.76964581], [1517099880000, 0.00259599, 0.00259599, 0.00258253, 0.00258253, 103.12955568], [1517099940000, 0.002585, 0.0025959, 0.00258012, 0.00258012, 469.18044517], [1517100000000, 0.00259, 0.00259, 0.00258011, 0.00258011, 617.96978818], [1517100060000, 0.00259, 0.00259, 0.00259, 0.00259, 12.70629335], [1517100120000, 0.00258011, 0.00258012, 0.00258011, 0.00258012, 115.66636793], [1517100240000, 0.00258012, 0.00258013, 0.00258012, 0.00258013, 6.71162275], [1517100300000, 0.00259, 0.00259, 0.00259, 0.00259, 0.58838557], [1517100360000, 0.00258013, 0.00258013, 0.00258013, 0.00258013, 0.99], [1517100420000, 0.00259, 0.00259, 0.00258012, 0.00258012, 994.46309235], [1517100480000, 0.00258013, 0.00258013, 0.00258013, 0.00258013, 3.86106349], [1517100540000, 0.00258013, 0.00258013, 0.00258013, 0.00258013, 20.33714278], [1517100600000, 0.00259, 0.00259, 0.00259, 0.00259, 7.72200772], [1517100660000, 0.00259, 0.00259, 0.00259, 0.00259, 0.38610038], [1517100720000, 0.00258013, 0.00258013, 0.00258013, 0.00258013, 12.0], [1517100780000, 0.00258013, 0.00258013, 0.00258013, 0.00258013, 10.0], [1517100840000, 0.00258013, 0.00258013, 0.00258013, 0.00258013, 1.0], [1517100900000, 0.0025899, 0.0025899, 0.00258013, 0.0025899, 215.44493825], [1517101080000, 0.002588, 0.002588, 0.002588, 0.002588, 6.00545776], [1517101140000, 0.00258799, 0.00258799, 0.00258799, 0.00258799, 2.71328633], [1517101200000, 0.00258406, 0.00258406, 0.00258013, 0.00258013, 23.49728622], [1517101260000, 0.002588, 0.002588, 0.00258012, 0.00258012, 458.73556508], [1517101320000, 0.00258796, 0.00258796, 0.00258796, 0.00258796, 35.0], [1517101380000, 0.002588, 0.002588, 0.002588, 0.002588, 5.56414219], [1517101440000, 0.00258796, 0.0025899, 0.00258796, 0.0025899, 66.15909954], [1517101500000, 0.0025899, 0.0025899, 0.00258796, 0.00258796, 12.07794366], [1517101560000, 0.0025899, 0.0025899, 0.0025899, 0.0025899, 6.83300459], [1517101620000, 0.0025899, 0.0026, 0.00258796, 0.00258796, 154.28786733], [1517101680000, 0.00258796, 0.00258796, 0.00258796, 0.00258796, 7.34134629], [1517101740000, 0.0025899, 0.00259798, 0.00258796, 0.00259798, 167.60635453], [1517101800000, 0.00259798, 0.00259798, 0.00258796, 0.00259797, 31.06017512], [1517101860000, 0.00259796, 0.00259797, 0.00258796, 0.00258796, 64.743887], [1517101920000, 0.00258796, 0.00259797, 0.00258796, 0.00259797, 59.16104765], [1517101980000, 0.00259797, 0.00259797, 0.00258796, 0.00258796, 84.37055422], [1517102040000, 0.00258796, 0.00258796, 0.00258796, 0.00258796, 12.44473856], [1517102100000, 0.00258796, 0.00259766, 0.00258796, 0.00258796, 152.22357092], [1517102160000, 0.00258796, 0.00259748, 0.00258796, 0.00258796, 91.61537764], [1517102220000, 0.00258796, 0.00258797, 0.00258796, 0.00258797, 0.8520208], [1517102280000, 0.00258797, 0.00259779, 0.00258797, 0.00258897, 4.02325805], [1517102340000, 0.00258897, 0.00259779, 0.00258897, 0.00258897, 17.55477416], [1517102400000, 0.00258897, 0.00259777, 0.00258796, 0.00258897, 23.0402094], [1517102460000, 0.00258897, 0.00259777, 0.00258897, 0.00258897, 4.73487574], [1517102520000, 0.00258897, 0.00258897, 0.00258897, 0.00258897, 0.85169006], [1517102580000, 0.00258898, 0.00258898, 0.00258898, 0.00258898, 0.85168676], [1517102640000, 0.00258898, 0.00258898, 0.00258898, 0.00258898, 0.85168676], [1517102700000, 0.00258898, 0.00259775, 0.00258898, 0.00258898, 4.70117189], [1517102760000, 0.00258898, 0.00259797, 0.00258898, 0.00259797, 167.67312092], [1517102820000, 0.00258898, 0.00259797, 0.00258898, 0.00259337, 5.47696167], [1517102880000, 0.00258898, 0.002589, 0.00258898, 0.002589, 9.42273225], [1517102940000, 0.00259796, 0.00259798, 0.00258897, 0.00258899, 110.41196538], [1517103000000, 0.00258899, 0.00258899, 0.00258898, 0.00258898, 42.89321038], [1517103060000, 0.00258898, 0.00258898, 0.00258898, 0.00258898, 11.31794629], [1517103120000, 0.00258898, 0.00258898, 0.00258897, 0.00258897, 19.97774357], [1517103180000, 0.00258897, 0.00259207, 0.00258796, 0.00258899, 135.45801073], [1517103240000, 0.00258796, 0.00258796, 0.00258796, 0.00258796, 14.49247093], [1517103300000, 0.00258796, 0.00258796, 0.00258013, 0.00258796, 274.07169895], [1517103360000, 0.00258013, 0.00258796, 0.00258013, 0.00258796, 45.5142986], [1517103420000, 0.00259206, 0.00259206, 0.00258796, 0.00258796, 8.80430366], [1517103480000, 0.00258796, 0.00258796, 0.00258016, 0.00258016, 7.42654814], [1517103540000, 0.00259199, 0.00259199, 0.00259199, 0.00259199, 13.91018036], [1517103600000, 0.00259198, 0.00259206, 0.00258016, 0.00258016, 131.7516167], [1517103660000, 0.00258016, 0.00259206, 0.00258016, 0.00259206, 42.5278504], [1517103720000, 0.00259206, 0.00259206, 0.00259206, 0.00259206, 4.53089705], [1517103780000, 0.00258017, 0.00259205, 0.00258017, 0.00259205, 1.79524794], [1517103900000, 0.00258017, 0.00259205, 0.00258017, 0.00259205, 1.12443822], [1517103960000, 0.00259205, 0.00259205, 0.00259204, 0.00259205, 5.70483719], [1517104140000, 0.00259203, 0.00259203, 0.00259203, 0.00259203, 38.48359333], [1517104200000, 0.00258022, 0.00259203, 0.0025802, 0.00259202, 56.98798004], [1517104260000, 0.00259202, 0.00259202, 0.0025802, 0.0025802, 16.98951125], [1517104320000, 0.00259197, 0.00259197, 0.00259197, 0.00259197, 8.18451296], [1517104380000, 0.00258021, 0.00258021, 0.00258013, 0.00258013, 841.12645192], [1517104440000, 0.00258022, 0.00258022, 0.00258022, 0.00258022, 173.95597219], [1517104500000, 0.002581, 0.002581, 0.002581, 0.002581, 10.95345695], [1517104560000, 0.00259202, 0.00259207, 0.00259202, 0.00259207, 44.7614271], [1517104620000, 0.00259207, 0.00259996, 0.00259207, 0.00259207, 10.75919016], [1517104680000, 0.00259993, 0.00259999, 0.00259207, 0.00259207, 57.76012129], [1517104740000, 0.00259991, 0.00259991, 0.00259207, 0.00259207, 154.63008566], [1517104800000, 0.00259207, 0.00259976, 0.00259207, 0.00259207, 71.26925585], [1517104860000, 0.00259207, 0.0026, 0.00259207, 0.00259208, 134.48234224], [1517104920000, 0.00259208, 0.00259998, 0.00259207, 0.00259207, 93.05424079], [1517104980000, 0.00259207, 0.00259207, 0.00259204, 0.00259204, 49.30785479], [1517105040000, 0.00259204, 0.00259204, 0.00259204, 0.00259204, 0.19626433], [1517105100000, 0.00258415, 0.00259206, 0.00258415, 0.00259206, 14.36765672], [1517105160000, 0.00258599, 0.00258599, 0.00258599, 0.00258599, 0.85267152], [1517105220000, 0.00258599, 0.00259207, 0.00258599, 0.00259, 103.36325697], [1517105280000, 0.00259, 0.00259206, 0.00259, 0.00259, 7.05970812], [1517105340000, 0.00258599, 0.00258599, 0.00258599, 0.00258599, 49.49891832], [1517105400000, 0.00258599, 0.00259206, 0.0025803, 0.0025803, 273.70070964], [1517105460000, 0.00259207, 0.00259207, 0.00259207, 0.00259207, 6.43032202], [1517105520000, 0.00259207, 0.00259207, 0.00259207, 0.00259207, 2.70395408], [1517105580000, 0.00259207, 0.00259207, 0.00258031, 0.00259207, 5.12695553], [1517105640000, 0.00259207, 0.00259207, 0.00258031, 0.00258031, 4.73478242], [1517105760000, 0.00258032, 0.00258032, 0.00258031, 0.00258031, 194.4403], [1517105820000, 0.00258031, 0.00258031, 0.00258031, 0.00258031, 20.0], [1517105880000, 0.00258031, 0.00259998, 0.00258031, 0.00259998, 19.12949336], [1517105940000, 0.00259207, 0.00259949, 0.00259207, 0.00259207, 86.53522655], [1517106000000, 0.00259207, 0.00259207, 0.00259207, 0.00259207, 220.59933777], [1517106060000, 0.00259207, 0.00259207, 0.00259207, 0.00259207, 0.85067148], [1517106120000, 0.00259207, 0.00259947, 0.00259207, 0.00259947, 66.74248706], [1517106180000, 0.00259207, 0.00259946, 0.00259206, 0.00259206, 217.41279204], [1517106240000, 0.00259206, 0.00259206, 0.00258031, 0.00258031, 11.98810763], [1517106300000, 0.00259206, 0.00259206, 0.00259206, 0.00259206, 80.80038573], [1517106480000, 0.00259, 0.00259, 0.00259, 0.00259, 0.58377282], [1517106540000, 0.00259, 0.00259, 0.00258021, 0.00258021, 142.77436195], [1517106600000, 0.00258032, 0.00258032, 0.00258018, 0.00258032, 119.01676805], [1517106660000, 0.00258018, 0.00259, 0.00258018, 0.00259, 46.32949225], [1517106780000, 0.00258017, 0.0025899, 0.00258017, 0.0025899, 89.65670682], [1517106840000, 0.00258018, 0.00258018, 0.00258018, 0.00258018, 0.52153328], [1517106900000, 0.0025899, 0.0025899, 0.0025899, 0.0025899, 1.54060773], [1517106960000, 0.00258018, 0.00258018, 0.00258018, 0.00258018, 9.56021414], [1517107020000, 0.0025898, 0.00259999, 0.0025898, 0.00259999, 268.89974005], [1517107080000, 0.00258107, 0.00258107, 0.00258018, 0.00258107, 200.26419499], [1517107260000, 0.00258109, 0.00258109, 0.00258109, 0.00258109, 10.14918275], [1517107320000, 0.00258109, 0.00259889, 0.00258109, 0.00258109, 483.71361805], [1517107380000, 0.00258107, 0.00258109, 0.00258107, 0.00258109, 78.99064652], [1517107440000, 0.00258109, 0.00258109, 0.00258109, 0.00258109, 7.5923732], [1517107500000, 0.00258108, 0.00258109, 0.00258108, 0.00258109, 63.97952102], [1517107560000, 0.00258109, 0.00258109, 0.00258109, 0.00258109, 1.50204435], [1517107620000, 0.00259887, 0.00259887, 0.00259527, 0.00259887, 41.80397802], [1517107680000, 0.00259887, 0.00259887, 0.00259887, 0.00259887, 38.80540099], [1517107740000, 0.00259881, 0.00259881, 0.00258107, 0.00258107, 291.34320995], [1517107800000, 0.00259872, 0.00259872, 0.00258108, 0.00259869, 111.69988407], [1517107860000, 0.00259869, 0.00259869, 0.00259869, 0.00259869, 2.56883249], [1517108040000, 0.002588, 0.002588, 0.002588, 0.002588, 0.42600464], [1517108100000, 0.002588, 0.00259849, 0.002588, 0.002588, 94.81628513], [1517108160000, 0.002588, 0.00259842, 0.002583, 0.00259835, 213.1734154], [1517108220000, 0.002583, 0.00259832, 0.002583, 0.00259832, 77.72292566], [1517108280000, 0.00259792, 0.00259796, 0.00259792, 0.00259796, 19.15756412], [1517108340000, 0.00259787, 0.00259787, 0.00259783, 0.00259783, 19.46533276], [1517108400000, 0.00259783, 0.00259785, 0.00259025, 0.00259025, 10.9855464], [1517108460000, 0.00259025, 0.00259025, 0.00259025, 0.00259025, 34.29829333], [1517108520000, 0.00259025, 0.00259025, 0.00258327, 0.00258327, 8.38915536], [1517108580000, 0.00259, 0.00259, 0.00259, 0.00259, 5.91354615], [1517108640000, 0.00259025, 0.00259025, 0.00259, 0.00259, 57.83736061], [1517108700000, 0.00259, 0.00259, 0.00259, 0.00259, 47.18339768], [1517108760000, 0.00259, 0.00259025, 0.00259, 0.00259022, 236.43532862], [1517108820000, 0.00259024, 0.00259024, 0.00259, 0.00259, 133.62002797], [1517108880000, 0.00259, 0.00259, 0.00259, 0.00259, 69.79437224], [1517108940000, 0.00259025, 0.00259025, 0.00259, 0.00259, 30.85135136], [1517109000000, 0.00259, 0.00259026, 0.00259, 0.00259026, 122.37700879], [1517109060000, 0.00259026, 0.00259026, 0.00259, 0.00259, 174.85130863], [1517109120000, 0.00259, 0.00259, 0.00259, 0.00259, 0.85135136], [1517109180000, 0.0025978, 0.0025978, 0.00259, 0.00259, 3.2794026], [1517109240000, 0.00259, 0.00259, 0.00259, 0.00259, 52.98536328], [1517109300000, 0.00259, 0.0025978, 0.00259, 0.00259, 56.12808577], [1517109360000, 0.00259, 0.00259001, 0.00259, 0.00259001, 21.13136944], [1517109420000, 0.00259001, 0.0025976, 0.00259001, 0.00259001, 26.95374466], [1517109480000, 0.00259001, 0.00259001, 0.00259001, 0.00259001, 0.85134806], [1517109540000, 0.00259779, 0.00259779, 0.00259001, 0.00259001, 5.77686856], [1517109600000, 0.0025902, 0.0025902, 0.0025902, 0.0025902, 0.87573662], [1517109720000, 0.0025902, 0.0025902, 0.00259, 0.00259, 340.35491068], [1517109780000, 0.0025902, 0.0025902, 0.00259, 0.00259, 61.09242746], [1517109840000, 0.00259, 0.00259, 0.00259, 0.00259, 99.64308342], [1517109900000, 0.0025902, 0.0025902, 0.00259, 0.00259, 77.38189109], [1517109960000, 0.00259, 0.0025902, 0.00259, 0.0025902, 69.99615933], [1517110020000, 0.00259021, 0.00259021, 0.0025902, 0.0025902, 16.49014434], [1517110080000, 0.0025902, 0.00259781, 0.0025902, 0.0025902, 95.43515281], [1517110140000, 0.0025902, 0.00259781, 0.0025902, 0.0025902, 66.49889254], [1517110200000, 0.00259021, 0.00259021, 0.00259021, 0.00259021, 3.0], [1517110260000, 0.00259021, 0.00259021, 0.00259021, 0.00259021, 61.75455269], [1517110440000, 0.00259781, 0.00259781, 0.00259781, 0.00259781, 1.53590909], [1517110500000, 0.00259021, 0.00259781, 0.0025902, 0.00259781, 35.84939622], [1517110560000, 0.00259781, 0.00259781, 0.00259781, 0.00259781, 7.0], [1517110620000, 0.0025978, 0.0025978, 0.0025978, 0.0025978, 2.0], [1517110680000, 0.00259026, 0.00259026, 0.00259026, 0.00259026, 53.96583214], [1517110740000, 0.0025978, 0.0025978, 0.0025978, 0.0025978, 1.94081099], [1517110800000, 0.0025978, 0.0025978, 0.0025978, 0.0025978, 8.44589114], [1517110860000, 0.00259027, 0.00259779, 0.00259027, 0.00259779, 52.40408862], [1517110920000, 0.00259779, 0.0025978, 0.00259027, 0.0025978, 262.1463614], [1517110980000, 0.0025978, 0.00260392, 0.0025978, 0.00260392, 933.29383234], [1517111040000, 0.00260391, 0.00260392, 0.00260391, 0.00260392, 23.05672974], [1517111100000, 0.00260392, 0.00260392, 0.00260392, 0.00260392, 80.71885827], [1517111160000, 0.00260392, 0.00260392, 0.0026, 0.0026, 112.64948177], [1517111220000, 0.0026, 0.0026, 0.00259098, 0.00259098, 35.84583407], [1517111280000, 0.00259099, 0.00260658, 0.00259099, 0.00260658, 83.63756731], [1517111340000, 0.00260658, 0.00260658, 0.00260658, 0.00260658, 1.34543078], [1517111400000, 0.00260658, 0.00260658, 0.00260657, 0.00260658, 12.25019751], [1517111460000, 0.00260658, 0.00262797, 0.00260657, 0.00261564, 4022.31481597], [1517111520000, 0.0026249, 0.0026249, 0.0026068, 0.00260681, 243.66975748], [1517111580000, 0.00261556, 0.00261556, 0.00260685, 0.00260685, 79.65086933], [1517111640000, 0.00260686, 0.00260686, 0.00260686, 0.00260686, 16.28374264], [1517111700000, 0.00260986, 0.00262489, 0.00260986, 0.00261564, 114.54476815], [1517111760000, 0.00262453, 0.00262453, 0.00261564, 0.00261564, 123.57999168], [1517111820000, 0.00261564, 0.00262426, 0.00261564, 0.00262211, 219.85923004], [1517111880000, 0.00262211, 0.00262404, 0.00262211, 0.00262404, 359.29951848], [1517111940000, 0.00262404, 0.00264498, 0.00262211, 0.00263, 1341.69117574], [1517112000000, 0.00263, 0.00263139, 0.00260694, 0.00260699, 500.20461235], [1517112060000, 0.00263139, 0.00263139, 0.00260711, 0.00260714, 83.15684903], [1517112120000, 0.00260832, 0.00263135, 0.00260826, 0.00263135, 83.40839174], [1517112180000, 0.0026314, 0.00263725, 0.00262657, 0.00262657, 54.51041817], [1517112240000, 0.00262657, 0.00263724, 0.00262657, 0.00263632, 2050.32106139], [1517112300000, 0.00263632, 0.00264152, 0.00260995, 0.00261028, 499.89020501], [1517112360000, 0.00262, 0.00264117, 0.00262, 0.00262018, 301.57010701], [1517112420000, 0.00262018, 0.00262022, 0.00262018, 0.00262021, 106.48311375], [1517112480000, 0.0026385, 0.0026385, 0.00262024, 0.0026287, 25.75484589], [1517112540000, 0.0026287, 0.00264, 0.00262018, 0.00263998, 374.78547261], [1517112600000, 0.0026252, 0.00263998, 0.00262515, 0.00262515, 55.70438466], [1517112660000, 0.00262515, 0.00263998, 0.00262025, 0.00263998, 1025.43541224], [1517112720000, 0.00263989, 0.0026399, 0.00262025, 0.00262027, 100.54081198], [1517112780000, 0.00263989, 0.00263989, 0.0026203, 0.00263986, 177.23107652], [1517112840000, 0.0026203, 0.00263983, 0.0026203, 0.00263983, 16.09313505], [1517112900000, 0.00263983, 0.00263983, 0.0026205, 0.00262066, 41.03988588], [1517112960000, 0.00262071, 0.00263, 0.00262071, 0.00263, 10.68803492], [1517113020000, 0.00263978, 0.0026398, 0.00262073, 0.00263979, 756.4651668], [1517113080000, 0.00263974, 0.00263974, 0.002621, 0.002621, 32.92411115], [1517113140000, 0.002621, 0.00262101, 0.002621, 0.00262101, 100.4471961], [1517113200000, 0.00262101, 0.00263, 0.002621, 0.00262102, 277.20958939], [1517113260000, 0.00262102, 0.00262102, 0.00262102, 0.00262102, 8.21063777], [1517113320000, 0.00262103, 0.00262998, 0.00262103, 0.00262103, 9.00043135], [1517113380000, 0.00262105, 0.00262996, 0.00262071, 0.00262996, 3015.67701813], [1517113440000, 0.0026299, 0.0026299, 0.00262073, 0.00262073, 5.98621679], [1517113500000, 0.00262073, 0.00262074, 0.00262071, 0.00262071, 487.25876504], [1517113560000, 0.00262076, 0.0026299, 0.00262027, 0.00262027, 627.43563607], [1517113620000, 0.00262027, 0.00262027, 0.00262018, 0.00262018, 355.97628124], [1517113680000, 0.00262024, 0.00262025, 0.00262018, 0.00262018, 167.03564004], [1517113740000, 0.00262019, 0.00262027, 0.00261443, 0.00261443, 102.21504411], [1517113800000, 0.00261443, 0.00262015, 0.002592, 0.00259756, 900.8446014], [1517113860000, 0.00259756, 0.00262378, 0.00259756, 0.00259756, 49.91734119], [1517113920000, 0.00259756, 0.00261987, 0.00259201, 0.0026197, 39.78003017], [1517113980000, 0.00261922, 0.00261929, 0.00261913, 0.00261913, 42.0], [1517114040000, 0.00261898, 0.00261898, 0.00261894, 0.00261894, 30.6951968], [1517114100000, 0.00261891, 0.00261891, 0.00261879, 0.00261879, 10.63675032], [1517114160000, 0.00261876, 0.00261876, 0.00260002, 0.00260002, 61.22469997], [1517114220000, 0.00260002, 0.00261797, 0.0025925, 0.00259252, 18.10036495], [1517114280000, 0.00260998, 0.00260999, 0.00260998, 0.00260999, 12.60887211], [1517114340000, 0.00260998, 0.00260998, 0.00260997, 0.00260997, 28.36196009], [1517114400000, 0.00260899, 0.00260899, 0.00259, 0.00259, 618.57587022], [1517114460000, 0.00259, 0.00261791, 0.00258662, 0.00258667, 1249.51460127], [1517114520000, 0.00261791, 0.00261791, 0.00258671, 0.00258722, 1201.6425559], [1517114580000, 0.00258722, 0.00260007, 0.00258018, 0.00258029, 1546.50413829], [1517114640000, 0.002587, 0.00259993, 0.00258029, 0.00258038, 402.92524787], [1517114700000, 0.00261175, 0.00261175, 0.00261156, 0.00261156, 23.64188092], [1517114760000, 0.00261109, 0.0026111, 0.00261109, 0.0026111, 4.71553789], [1517114820000, 0.00261091, 0.00261091, 0.00261057, 0.00261057, 14.93544265], [1517114880000, 0.00261029, 0.0026103, 0.0025854, 0.0025854, 152.22197992], [1517114940000, 0.00258541, 0.00260991, 0.00258541, 0.00260991, 118.9841921], [1517115000000, 0.00258544, 0.00258544, 0.00258544, 0.00258544, 305.36500246], [1517115060000, 0.00258551, 0.00260982, 0.00258551, 0.00260982, 96.48719633], [1517115120000, 0.00260974, 0.00260974, 0.00258019, 0.00260956, 544.42594243], [1517115180000, 0.0026, 0.0026, 0.0026, 0.0026, 2.43856358], [1517115240000, 0.0026, 0.0026008, 0.00258121, 0.00258128, 459.12160486], [1517115300000, 0.00258158, 0.00260859, 0.00258158, 0.00260857, 10.18727252], [1517115360000, 0.002591, 0.00260804, 0.002587, 0.002587, 46.17483043], [1517115420000, 0.002607, 0.002607, 0.002607, 0.002607, 4.0], [1517115480000, 0.00258701, 0.00259, 0.00258701, 0.00258704, 78.8632057], [1517115540000, 0.00258704, 0.00258704, 0.00258704, 0.00258704, 35.91127851], [1517115600000, 0.00258704, 0.002605, 0.00258701, 0.002605, 251.10500021], [1517115660000, 0.0026049, 0.0026049, 0.00258704, 0.00258704, 371.20361073], [1517115720000, 0.00258706, 0.00258706, 0.00258019, 0.00258704, 358.97970647], [1517115780000, 0.00258704, 0.00258706, 0.00258704, 0.00258705, 112.83399291], [1517115840000, 0.00258704, 0.00258705, 0.00258704, 0.00258705, 138.53768769], [1517115900000, 0.00258704, 0.00258705, 0.00258026, 0.00258705, 171.19625221], [1517115960000, 0.00258026, 0.00258026, 0.00258003, 0.00258011, 577.53529127], [1517116020000, 0.00258003, 0.00258026, 0.00258003, 0.00258026, 306.60656071], [1517116080000, 0.00258026, 0.00258026, 0.00258003, 0.00258026, 625.9092088], [1517116140000, 0.00258026, 0.00258026, 0.00258003, 0.00258026, 103.98058178], [1517116200000, 0.00258025, 0.00258026, 0.00258025, 0.00258026, 555.98753853], [1517116260000, 0.00258026, 0.00258026, 0.00258026, 0.00258026, 47.11052134], [1517116320000, 0.00258026, 0.00258026, 0.00258003, 0.00258003, 652.85012808], [1517116380000, 0.00258001, 0.00258026, 0.00258, 0.00258003, 135.81529581], [1517116440000, 0.00258002, 0.00258002, 0.00258, 0.00258, 61.89639946], [1517116500000, 0.00258002, 0.00258002, 0.00258, 0.00258, 24.45204767], [1517116560000, 0.00258, 0.00258026, 0.00258, 0.00258026, 59.18807648], [1517116620000, 0.00258026, 0.00258026, 0.00258, 0.00258, 334.99373554], [1517116680000, 0.00258, 0.00258026, 0.00258, 0.00258026, 230.20183417], [1517116740000, 0.00258026, 0.00260115, 0.00257999, 0.00257999, 746.2188156], [1517116800000, 0.00257999, 0.00258, 0.002578, 0.00258, 700.48479478], [1517116860000, 0.00258, 0.00259763, 0.00258, 0.00259747, 124.38523423], [1517116920000, 0.00258448, 0.00258448, 0.00258, 0.00258, 117.91979802], [1517116980000, 0.00258, 0.00259405, 0.00258, 0.00259405, 8.40655838], [1517117040000, 0.00259397, 0.00259397, 0.00258, 0.00258, 27.66653545], [1517117100000, 0.00258, 0.00258, 0.00257205, 0.00257206, 612.89549674], [1517117160000, 0.00257206, 0.00259378, 0.00257206, 0.00259378, 25.31223764], [1517117340000, 0.00259268, 0.00259268, 0.00257511, 0.00257511, 81.68437821], [1517117400000, 0.00259268, 0.00259268, 0.00257701, 0.00257707, 30.14834198], [1517117520000, 0.00257715, 0.00257717, 0.00257714, 0.00257714, 916.62448449], [1517117580000, 0.0025927, 0.0025927, 0.00258, 0.00258, 8.81195446], [1517117640000, 0.00258, 0.00258, 0.0025775, 0.00258, 17.92159269], [1517117700000, 0.00258, 0.00258, 0.00258, 0.00258, 26.75342776], [1517117820000, 0.00258, 0.00258, 0.00258, 0.00258, 15.73451087], [1517117880000, 0.00257765, 0.00258, 0.00257715, 0.00258, 71.58013195], [1517117940000, 0.00258, 0.00258, 0.00258, 0.00258, 32.23034254], [1517118000000, 0.00258011, 0.00258011, 0.00258011, 0.00258011, 36.53014018], [1517118060000, 0.00258011, 0.00258011, 0.00258011, 0.00258011, 0.42732224], [1517118120000, 0.00258004, 0.00258004, 0.00257716, 0.00257716, 5.38802661], [1517118180000, 0.00257716, 0.00259269, 0.00257716, 0.00259267, 245.54189643], [1517118300000, 0.00258617, 0.00258618, 0.00258617, 0.00258618, 26.15841715], [1517118360000, 0.00258617, 0.00258617, 0.00258, 0.00258, 127.48771415], [1517118420000, 0.00258617, 0.00258617, 0.00258, 0.00258, 35.22091792], [1517118480000, 0.00258, 0.00258, 0.00258, 0.00258, 0.42732558], [1517118540000, 0.00258614, 0.00258614, 0.002579, 0.002579, 329.17388689], [1517118600000, 0.00257716, 0.00257716, 0.002576, 0.002576, 480.15739894], [1517118660000, 0.002576, 0.002585, 0.002576, 0.002585, 315.12745893], [1517118720000, 0.002585, 0.00258616, 0.002585, 0.002585, 162.69013756], [1517118780000, 0.002585, 0.00258505, 0.002585, 0.002585, 131.63326318], [1517118840000, 0.002585, 0.002585, 0.002585, 0.002585, 99.26217886], [1517118900000, 0.002585, 0.00258617, 0.002585, 0.00258617, 48.303312], [1517118960000, 0.00258617, 0.00258618, 0.00258617, 0.00258617, 142.58234684], [1517119020000, 0.00258618, 0.00258618, 0.00258617, 0.00258617, 105.55987301], [1517119080000, 0.00258617, 0.00258618, 0.00258617, 0.00258617, 15.88099799], [1517119140000, 0.00258617, 0.002587, 0.002585, 0.002585, 1323.10951847], [1517119200000, 0.002576, 0.00259196, 0.002576, 0.00259196, 42.94636883], [1517119260000, 0.00259195, 0.00259197, 0.002576, 0.002576, 55.12552448], [1517119320000, 0.00259, 0.00259, 0.00259, 0.00259, 69.84565095], [1517119500000, 0.002585, 0.002585, 0.002576, 0.002576, 167.96748853], [1517119560000, 0.00258034, 0.00258034, 0.0025761, 0.0025761, 19.27383629], [1517119620000, 0.0025761, 0.0025761, 0.002576, 0.002576, 2.0], [1517119680000, 0.002576, 0.002576, 0.002576, 0.002576, 498.18383463], [1517119740000, 0.002576, 0.002576, 0.002576, 0.002576, 0.2996678], [1517119800000, 0.00257603, 0.00257603, 0.00257603, 0.00257603, 44.35744214], [1517119860000, 0.00257603, 0.00257603, 0.00257603, 0.00257603, 16.47615295], [1517119920000, 0.00257603, 0.00257603, 0.00257603, 0.00257603, 10.0], [1517119980000, 0.00257601, 0.00257601, 0.002576, 0.002576, 9.59250197], [1517120040000, 0.00257603, 0.00257603, 0.002576, 0.002576, 222.07662554], [1517120100000, 0.002576, 0.002576, 0.002576, 0.002576, 13.31325652], [1517120160000, 0.00257603, 0.00258034, 0.002576, 0.002576, 11.73152579], [1517120220000, 0.002576, 0.002576, 0.002576, 0.002576, 5.60241485], [1517120280000, 0.002576, 0.002576, 0.002576, 0.002576, 1.11913541], [1517120340000, 0.002576, 0.00258034, 0.002576, 0.00258034, 279.97465476], [1517120400000, 0.00258034, 0.0025849, 0.002576, 0.002576, 38.73694514], [1517120460000, 0.00258491, 0.00258491, 0.00258491, 0.00258491, 1.33472851], [1517120520000, 0.00258491, 0.00258498, 0.00257601, 0.00257601, 142.49105184], [1517120640000, 0.00257602, 0.00257602, 0.00257602, 0.00257602, 0.42798581], [1517120700000, 0.00257602, 0.00257602, 0.00257602, 0.00257602, 0.5], [1517120760000, 0.00257603, 0.00258479, 0.00257603, 0.00258479, 6.57708779], [1517120820000, 0.00258479, 0.0025849, 0.00258479, 0.00258479, 30.03696787], [1517120940000, 0.002579, 0.002579, 0.002579, 0.002579, 27.0], [1517121000000, 0.002579, 0.00258477, 0.002579, 0.00258477, 27.85193413], [1517121060000, 0.00258, 0.00258, 0.002579, 0.002579, 51.854188], [1517121120000, 0.00258476, 0.00258476, 0.002579, 0.002579, 8.27947672], [1517121180000, 0.002579, 0.002579, 0.002579, 0.002579, 23.61895337], [1517121240000, 0.002579, 0.002579, 0.00257899, 0.002579, 58.10698953], [1517121300000, 0.002579, 0.00258464, 0.002579, 0.002579, 55.46389138], [1517121360000, 0.002579, 0.002579, 0.00257709, 0.00257709, 48.99205098], [1517121420000, 0.00257699, 0.00257699, 0.00257699, 0.00257699, 19.86847068], [1517121480000, 0.00258462, 0.00258462, 0.00257699, 0.00257699, 176.88625833], [1517121540000, 0.00257699, 0.00257699, 0.002576, 0.002576, 725.886876], [1517121600000, 0.00257601, 0.00257601, 0.00257509, 0.00257509, 39.48358233], [1517121660000, 0.002575, 0.00257602, 0.002572, 0.002572, 266.68011444], [1517121720000, 0.00258434, 0.00258434, 0.00258434, 0.00258434, 13.67627641], [1517121780000, 0.00258394, 0.00258396, 0.00258394, 0.00258396, 30.89549493], [1517121840000, 0.002571, 0.00258394, 0.0025696, 0.0025696, 238.71109737], [1517121900000, 0.00256931, 0.00256931, 0.002566, 0.002566, 361.8346084], [1517121960000, 0.002565, 0.002566, 0.002564, 0.002565, 109.65729667], [1517122020000, 0.002565, 0.00256501, 0.00256159, 0.0025616, 179.68041943], [1517122080000, 0.0025601, 0.00256598, 0.002559, 0.00256, 603.37599982], [1517122140000, 0.00256, 0.00256002, 0.002559, 0.00256002, 33.80215845], [1517122200000, 0.00256, 0.00256, 0.00255797, 0.00256, 176.33943342], [1517122260000, 0.0025574, 0.00256, 0.0025574, 0.0025574, 89.18230751], [1517122320000, 0.00255715, 0.0025574, 0.00255376, 0.00255378, 245.37191025], [1517122380000, 0.00255378, 0.00255378, 0.00255378, 0.00255378, 1.05561435], [1517122440000, 0.0025574, 0.0025574, 0.00255378, 0.0025574, 113.75528496], [1517122500000, 0.00256, 0.00256, 0.00255376, 0.00255376, 420.76425211], [1517122560000, 0.00256, 0.00256326, 0.00255361, 0.00256326, 205.22414983], [1517122620000, 0.00256326, 0.00256326, 0.002563, 0.00256326, 135.51046368], [1517122680000, 0.00256326, 0.00256326, 0.002561, 0.002563, 239.50725949], [1517122740000, 0.002563, 0.002563, 0.002561, 0.002563, 19.53471627], [1517122800000, 0.002563, 0.002563, 0.00255458, 0.00255458, 29.95580028], [1517122860000, 0.00255458, 0.00255458, 0.00255458, 0.00255458, 2.0], [1517122920000, 0.00256, 0.002563, 0.00256, 0.00256, 76.22398755], [1517122980000, 0.00256, 0.00256, 0.00256, 0.00256, 13.095745], [1517123040000, 0.00256, 0.002566, 0.00256, 0.002566, 66.24826065], [1517123100000, 0.00256599, 0.002566, 0.00256599, 0.002566, 2.12199662], [1517123160000, 0.00256015, 0.002566, 0.00256015, 0.002566, 12.75162847], [1517123280000, 0.002566, 0.002568, 0.002566, 0.002568, 40.6784878], [1517123340000, 0.002568, 0.002568, 0.002568, 0.002568, 116.43644297], [1517123400000, 0.00256998, 0.00257831, 0.00256998, 0.00256999, 149.3355065], [1517123460000, 0.00256999, 0.00257831, 0.00256015, 0.00256015, 489.98419839], [1517123520000, 0.00256015, 0.00256015, 0.00256001, 0.00256015, 7.83865114], [1517123580000, 0.00256015, 0.00256015, 0.00256015, 0.00256015, 23.49413079], [1517123640000, 0.00256015, 0.00256015, 0.00256002, 0.00256002, 50.78120422], [1517123700000, 0.00256002, 0.00256015, 0.00256002, 0.00256015, 81.60690742], [1517123760000, 0.00256015, 0.00257811, 0.00256015, 0.00256015, 132.29176745], [1517123820000, 0.00256015, 0.00257809, 0.00256015, 0.00256019, 228.72947317], [1517123880000, 0.00256019, 0.00257808, 0.00256018, 0.00256018, 82.44852172], [1517123940000, 0.00256382, 0.00257683, 0.0025602, 0.00257682, 24.79561779], [1517124000000, 0.00256182, 0.00256182, 0.00256018, 0.00256018, 33.23916685], [1517124060000, 0.00256021, 0.00256182, 0.00256021, 0.00256182, 79.74965697], [1517124120000, 0.00256183, 0.00257676, 0.00256183, 0.00256183, 30.83377745], [1517124180000, 0.00256201, 0.00256201, 0.002562, 0.002562, 7.37516651], [1517124240000, 0.002562, 0.002562, 0.002562, 0.002562, 37.0847212], [1517124300000, 0.002562, 0.00257674, 0.00256184, 0.00257674, 233.10079695], [1517124360000, 0.00256185, 0.002562, 0.00256184, 0.002562, 65.8083152], [1517124420000, 0.002562, 0.00257674, 0.00256018, 0.00256018, 234.56786142], [1517124480000, 0.00256999, 0.00256999, 0.00256999, 0.00256999, 4.81792434], [1517124540000, 0.002569, 0.002569, 0.00256018, 0.00256018, 24.00511965], [1517124600000, 0.0025678, 0.0025678, 0.00256018, 0.00256779, 17.96384396], [1517124660000, 0.00256018, 0.00256018, 0.00255701, 0.00255701, 411.09865356], [1517124720000, 0.00255701, 0.00255701, 0.00255701, 0.00255701, 24.32176305], [1517124780000, 0.00255701, 0.00257677, 0.00255701, 0.00257659, 108.18627613], [1517124840000, 0.00257651, 0.00257651, 0.0025571, 0.00257633, 120.89825718], [1517124900000, 0.00257, 0.00257, 0.00257, 0.00257, 39.02331603], [1517124960000, 0.00256999, 0.00257, 0.00256998, 0.00257, 24.70206778], [1517125020000, 0.00256998, 0.00256998, 0.00256996, 0.00256997, 152.23247576], [1517125080000, 0.00256996, 0.00257804, 0.00256992, 0.00257804, 2243.32650164], [1517125140000, 0.00257804, 0.00257804, 0.002561, 0.002561, 391.37008725], [1517125200000, 0.00256993, 0.00257791, 0.00256, 0.00257791, 281.27300593], [1517125260000, 0.00257029, 0.00257773, 0.00257028, 0.00257028, 613.58453089], [1517125320000, 0.00257029, 0.00257737, 0.00257028, 0.00257028, 1155.86734936], [1517125380000, 0.00257737, 0.00257737, 0.00257029, 0.0025703, 758.6057264], [1517125440000, 0.0025705, 0.00257789, 0.00257028, 0.00257748, 1245.52991586], [1517125500000, 0.00257031, 0.00257738, 0.00256094, 0.00257032, 122.86685915], [1517125560000, 0.00257701, 0.00257702, 0.00257032, 0.00257032, 95.46849833], [1517125620000, 0.00257001, 0.00257032, 0.00256312, 0.00257032, 195.90904074], [1517125680000, 0.00257032, 0.00257774, 0.00257032, 0.00257774, 59.95072637], [1517125740000, 0.00257771, 0.00257774, 0.00257033, 0.00257033, 553.68999786], [1517125800000, 0.00257033, 0.00257772, 0.00257032, 0.00257772, 115.56196776], [1517125860000, 0.00257772, 0.00257772, 0.00257033, 0.00257033, 59.28689742], [1517125920000, 0.00257036, 0.00257772, 0.00257033, 0.00257772, 182.45904577], [1517125980000, 0.00257038, 0.00257038, 0.00257038, 0.00257038, 11.49784982], [1517126040000, 0.00257039, 0.00257039, 0.00257038, 0.00257038, 337.75003606], [1517126100000, 0.00257039, 0.00257039, 0.00257038, 0.00257038, 414.09791803], [1517126160000, 0.00257039, 0.00257748, 0.00257038, 0.00257038, 871.34028587], [1517126220000, 0.00257038, 0.00257038, 0.00257038, 0.00257038, 70.65821861], [1517126280000, 0.00257038, 0.00257747, 0.00257038, 0.0025704, 1024.99422236], [1517126340000, 0.0025704, 0.002575, 0.0025704, 0.0025704, 98.49114129], [1517126400000, 0.0025704, 0.00257495, 0.00257033, 0.00257033, 346.26919803], [1517126460000, 0.00257033, 0.00257035, 0.00257033, 0.00257033, 127.87086827], [1517126520000, 0.00257033, 0.00257264, 0.00257033, 0.00257033, 102.89586905], [1517126580000, 0.00257263, 0.00257263, 0.00257034, 0.00257034, 61.8771005], [1517126640000, 0.00257262, 0.00257262, 0.00257034, 0.00257034, 75.55235599], [1517126700000, 0.00257034, 0.00257262, 0.00257034, 0.00257035, 5.76172299], [1517126760000, 0.00257262, 0.00257262, 0.00256313, 0.00256313, 415.05492644], [1517126820000, 0.00257262, 0.00257497, 0.00257262, 0.00257497, 20.587223], [1517126880000, 0.00257497, 0.00257497, 0.00257497, 0.00257497, 49.01144435], [1517126940000, 0.00257497, 0.00257497, 0.00257497, 0.00257497, 92.24181614], [1517127000000, 0.00257497, 0.00258438, 0.00257497, 0.00257745, 449.98661183], [1517127060000, 0.00257745, 0.00258383, 0.00257497, 0.0025775, 561.48624551], [1517127120000, 0.00257751, 0.00257751, 0.00257751, 0.00257751, 76.69426617], [1517127180000, 0.00257752, 0.00258269, 0.0025775, 0.0025775, 172.6184616], [1517127240000, 0.00257751, 0.00257751, 0.00257751, 0.00257751, 34.5134748], [1517127300000, 0.00257755, 0.00258198, 0.00257755, 0.00257755, 154.16604118], [1517127360000, 0.002578, 0.00258189, 0.002578, 0.00257801, 117.70986705], [1517127420000, 0.00258188, 0.00258188, 0.00257801, 0.00257801, 161.78608689], [1517127480000, 0.00257802, 0.00258179, 0.00257801, 0.00257801, 831.81630631], [1517127540000, 0.00257801, 0.0025801, 0.00257801, 0.00257801, 815.36648038], [1517127600000, 0.00257808, 0.00258175, 0.00257801, 0.00257801, 238.65952819], [1517127660000, 0.00257801, 0.00258175, 0.00257801, 0.00257801, 235.86093602], [1517127720000, 0.00257801, 0.00257802, 0.00257801, 0.00257802, 159.74591971], [1517127780000, 0.00257802, 0.00257802, 0.00257801, 0.00257802, 267.95624183], [1517127840000, 0.00257802, 0.00257806, 0.00257801, 0.00257801, 159.13297679], [1517127900000, 0.00257801, 0.00257806, 0.00257777, 0.00257806, 208.19727994], [1517127960000, 0.00257806, 0.00258146, 0.00257806, 0.00257806, 112.36584106], [1517128020000, 0.00258, 0.00258145, 0.00257806, 0.00257806, 70.39980473], [1517128080000, 0.00258145, 0.00258145, 0.00257807, 0.00258143, 32.22507218], [1517128140000, 0.00257808, 0.00259269, 0.00257808, 0.00259, 3410.1358109], [1517128200000, 0.00259, 0.00259, 0.002585, 0.002585, 545.59822894], [1517128260000, 0.002585, 0.00259261, 0.002585, 0.00259261, 68.93003988], [1517128320000, 0.00259258, 0.00259258, 0.002585, 0.00258501, 240.31855437], [1517128380000, 0.00258501, 0.00258502, 0.00258501, 0.00258502, 0.85299311], [1517128440000, 0.0025855, 0.00259251, 0.002585, 0.002585, 382.74735521], [1517128500000, 0.002585, 0.002585, 0.002585, 0.002585, 23.69245607], [1517128560000, 0.002585, 0.002585, 0.0025795, 0.002585, 5.72607717], [1517128620000, 0.002585, 0.00259, 0.002585, 0.002585, 16.34621338], [1517128680000, 0.002585, 0.002585, 0.0025795, 0.002585, 65.43564532], [1517128740000, 0.002585, 0.002585, 0.0025795, 0.0025795, 130.25184888], [1517128800000, 0.0025795, 0.00258956, 0.0025795, 0.0025795, 39.54510877], [1517128920000, 0.0025795, 0.00258849, 0.00257807, 0.00257807, 136.91804528], [1517128980000, 0.00257807, 0.0025781, 0.0025775, 0.0025781, 318.95321914], [1517129040000, 0.0025781, 0.00257948, 0.00257807, 0.00257807, 275.26491989], [1517129100000, 0.00257807, 0.00257807, 0.0025775, 0.0025775, 53.28159817], [1517129160000, 0.00257, 0.00257, 0.00256719, 0.00256719, 2.3939798], [1517129220000, 0.00256719, 0.00256719, 0.00256719, 0.00256719, 1.2478887], [1517129280000, 0.00257744, 0.00257948, 0.00256719, 0.00257948, 92.43298686], [1517129340000, 0.0025672, 0.00256728, 0.002563, 0.0025672, 667.62329738], [1517129400000, 0.00256038, 0.002563, 0.00256037, 0.00256038, 16.42156187], [1517129460000, 0.00256038, 0.00256038, 0.00256038, 0.00256038, 134.72650991], [1517129520000, 0.0025672, 0.0025672, 0.0025672, 0.0025672, 2.07842887], [1517129580000, 0.00256088, 0.00256088, 0.00256038, 0.00256088, 402.00625992], [1517129640000, 0.00256088, 0.00256088, 0.00256088, 0.00256088, 22.65545462], [1517129700000, 0.0025628, 0.0025628, 0.00256119, 0.00256119, 204.37965465], [1517129760000, 0.00257595, 0.00257595, 0.0025702, 0.0025702, 9.87094324], [1517129820000, 0.002576, 0.00257948, 0.002576, 0.002576, 23.73091893], [1517129880000, 0.00257947, 0.00257947, 0.002576, 0.002576, 190.13807907], [1517129940000, 0.002576, 0.00257601, 0.002576, 0.00257601, 70.99409978], [1517130000000, 0.00257601, 0.00257947, 0.002576, 0.00257947, 37.40119306], [1517130060000, 0.00257946, 0.00257947, 0.002576, 0.002576, 311.12889863], [1517130120000, 0.00257947, 0.00257947, 0.002576, 0.002576, 50.42798913], [1517130180000, 0.002576, 0.002578, 0.002576, 0.002578, 0.85564623], [1517130240000, 0.002578, 0.002578, 0.002578, 0.002578, 39.69225681], [1517130300000, 0.00257947, 0.00257948, 0.002578, 0.00257948, 424.43608744], [1517130360000, 0.002578, 0.002578, 0.002578, 0.002578, 63.16004324], [1517130420000, 0.002578, 0.00257801, 0.002578, 0.00257801, 69.20893123], [1517130480000, 0.002578, 0.002578, 0.002578, 0.002578, 16.43163818], [1517130540000, 0.002578, 0.00257801, 0.002578, 0.002578, 271.65514305], [1517130600000, 0.002578, 0.00257801, 0.002578, 0.00257801, 31.30842044], [1517130660000, 0.002578, 0.00257801, 0.002578, 0.00257801, 69.18454532], [1517130720000, 0.00257801, 0.00257801, 0.00257801, 0.00257801, 0.38789609], [1517130840000, 0.00257801, 0.00257801, 0.00257801, 0.00257801, 15.0], [1517130900000, 0.002578, 0.00257801, 0.002578, 0.00257801, 53.66989942], [1517130960000, 0.0025795, 0.002582, 0.0025795, 0.0025795, 1.16162597], [1517131020000, 0.002582, 0.002582, 0.0025795, 0.0025795, 43.58340588], [1517131080000, 0.0025795, 0.00258199, 0.0025795, 0.00257952, 38.18745003], [1517131140000, 0.00257952, 0.00258199, 0.00257952, 0.00258, 9.49940163], [1517131200000, 0.00258199, 0.00258199, 0.00258, 0.00258, 29.94940145], [1517131260000, 0.00258199, 0.00258199, 0.0025795, 0.0025795, 166.97421472], [1517131320000, 0.0025795, 0.00258197, 0.00256501, 0.00256501, 296.19099425], [1517131380000, 0.00258179, 0.00258179, 0.00256503, 0.00256503, 11.20207623], [1517131440000, 0.00258178, 0.00258178, 0.00257275, 0.00258177, 18.45918045], [1517131500000, 0.0025814, 0.00258143, 0.00258139, 0.00258139, 62.73472399], [1517131560000, 0.00256636, 0.00256636, 0.00256636, 0.00256636, 12.0], [1517131620000, 0.00256635, 0.00258132, 0.00256635, 0.00258132, 60.9623001], [1517131680000, 0.00258181, 0.00258181, 0.00256636, 0.00256636, 98.60739959], [1517131800000, 0.002567, 0.002567, 0.002567, 0.002567, 4.02229774], [1517131860000, 0.00258099, 0.00258993, 0.002567, 0.002567, 342.11752143], [1517131920000, 0.00258924, 0.00258924, 0.00258924, 0.00258924, 3.44754473], [1517131980000, 0.00258865, 0.00258865, 0.00258865, 0.00258865, 4.07318512], [1517132040000, 0.00258846, 0.00258847, 0.00258844, 0.00258844, 51.84079893], [1517132100000, 0.00258834, 0.00258846, 0.00258834, 0.00258846, 2.03858553], [1517132160000, 0.00256806, 0.00257001, 0.00256806, 0.00257001, 4.21053899], [1517132220000, 0.00257001, 0.00257001, 0.00257, 0.00257, 15.18095898], [1517132280000, 0.00257001, 0.00257001, 0.00257001, 0.00257001, 2.18775378], [1517132340000, 0.00257001, 0.00258833, 0.00257001, 0.00258833, 21.37177321], [1517132400000, 0.00258832, 0.00258832, 0.00258832, 0.00258832, 226.34195762], [1517132460000, 0.002571, 0.002571, 0.002571, 0.002571, 77.7907429], [1517132520000, 0.00257003, 0.00257003, 0.00257003, 0.00257003, 17.24412293], [1517132640000, 0.00257006, 0.00257006, 0.00257004, 0.00257004, 35.2859601], [1517132700000, 0.00258775, 0.00258775, 0.00258775, 0.00258775, 7.72872186], [1517132760000, 0.00258772, 0.00258774, 0.002571, 0.00258771, 95.29390457], [1517132820000, 0.00258771, 0.00258771, 0.00258771, 0.00258771, 23.12855768], [1517132880000, 0.00258769, 0.00258769, 0.00257521, 0.00258768, 18.43355413], [1517132940000, 0.00258764, 0.00258764, 0.00258, 0.00258, 10.59587328], [1517133000000, 0.00258, 0.00258, 0.00257521, 0.00257521, 41.11972954], [1517133060000, 0.00257521, 0.00258, 0.00257521, 0.00258, 73.081299], [1517133120000, 0.00257888, 0.00257888, 0.00257521, 0.00257521, 130.61468259], [1517133180000, 0.00257521, 0.00257521, 0.00257521, 0.00257521, 142.5824641], [1517133240000, 0.00257611, 0.00257888, 0.002573, 0.00257888, 417.35181321], [1517133300000, 0.00257888, 0.00258, 0.00257888, 0.00258, 10.01157657], [1517133360000, 0.00257888, 0.00257888, 0.002573, 0.002573, 4.58478068], [1517133420000, 0.00257888, 0.00257888, 0.00257887, 0.00257887, 21.0], [1517133480000, 0.00257887, 0.00257887, 0.00257887, 0.00257887, 4.0], [1517133540000, 0.002578, 0.00257887, 0.002573, 0.002578, 243.19252421], [1517133600000, 0.002578, 0.00257834, 0.002573, 0.00257834, 49.74287742], [1517133660000, 0.002573, 0.002573, 0.00257006, 0.00257006, 58.24657771], [1517133780000, 0.00257006, 0.00257834, 0.00257006, 0.00257834, 24.83327921], [1517133840000, 0.002578, 0.00257834, 0.002578, 0.00257834, 7.3923621], [1517133900000, 0.00257834, 0.00257834, 0.002578, 0.002578, 8.59596298], [1517133960000, 0.002578, 0.00257832, 0.002578, 0.002578, 2.48036278], [1517134020000, 0.002578, 0.00257832, 0.002578, 0.002578, 31.01671451], [1517134080000, 0.002578, 0.00257832, 0.00257006, 0.002578, 169.71974894], [1517134140000, 0.002578, 0.00257832, 0.002578, 0.002578, 11.97765092], [1517134200000, 0.002578, 0.002578, 0.00257006, 0.00257006, 2.7794685], [1517134260000, 0.00257007, 0.00257007, 0.00257007, 0.00257007, 5.28856148], [1517134320000, 0.00257007, 0.0025783, 0.00257007, 0.00257007, 23.37200239], [1517134380000, 0.00257007, 0.00257007, 0.00257007, 0.00257007, 6.50503477], [1517134440000, 0.00257007, 0.00257831, 0.00257007, 0.00257007, 20.15855274], [1517134500000, 0.00257009, 0.00257009, 0.00257009, 0.00257009, 21.73130924], [1517134620000, 0.00257025, 0.00258, 0.00257025, 0.00258, 154.37987103], [1517134680000, 0.00258, 0.0025881, 0.00258, 0.0025881, 188.22376047], [1517134740000, 0.00258808, 0.00258808, 0.00258001, 0.00258808, 33.90888191], [1517134800000, 0.00258808, 0.00258808, 0.00258808, 0.00258808, 1.73660821], [1517134860000, 0.0025807, 0.00258806, 0.0025807, 0.00258806, 9.71577346], [1517134920000, 0.00258101, 0.00258804, 0.00258101, 0.00258804, 57.0846445], [1517134980000, 0.00258804, 0.00258808, 0.00258101, 0.00258808, 42.39205464], [1517135040000, 0.00258814, 0.00258998, 0.00258814, 0.002589, 247.02764438], [1517135100000, 0.002589, 0.002589, 0.002589, 0.002589, 58.22866896], [1517135160000, 0.002589, 0.00258999, 0.002589, 0.00258999, 14.40449954], [1517135220000, 0.00258901, 0.00259748, 0.00258901, 0.00259265, 686.10941862], [1517135280000, 0.00259265, 0.00260257, 0.00259265, 0.00260257, 488.85272895], [1517135340000, 0.002603, 0.00262, 0.0026, 0.00260017, 3257.30310022], [1517135400000, 0.00260017, 0.00261798, 0.00260017, 0.0026049, 733.28971282], [1517135460000, 0.00261795, 0.00262214, 0.00260498, 0.00262, 385.02589296], [1517135520000, 0.00262, 0.002624, 0.00262, 0.00262, 164.63528441], [1517135580000, 0.00262, 0.00262525, 0.00262, 0.00262525, 1493.48343622], [1517135640000, 0.00262525, 0.0026399, 0.00262525, 0.0026399, 2974.38788132], [1517135700000, 0.00263622, 0.0026437, 0.00262735, 0.00262735, 1970.86557247], [1517135760000, 0.0026412, 0.00264521, 0.00262735, 0.00264521, 600.73425529], [1517135820000, 0.00264521, 0.00264694, 0.00264383, 0.002646, 385.72881886], [1517135880000, 0.00264629, 0.0026475, 0.002646, 0.00264704, 460.01996005], [1517135940000, 0.00264704, 0.0026475, 0.00263002, 0.00263006, 694.58897924], [1517136000000, 0.00263006, 0.00263007, 0.00262737, 0.00262737, 704.03808703], [1517136060000, 0.00263001, 0.00263001, 0.00262737, 0.00263, 467.93220066], [1517136120000, 0.00263, 0.00264516, 0.00262737, 0.00262739, 1170.47287339], [1517136180000, 0.00262739, 0.0026413, 0.00262737, 0.00262747, 776.18857595], [1517136240000, 0.00263999, 0.002641, 0.00262751, 0.00263, 317.96400468], [1517136300000, 0.00263999, 0.002641, 0.00263001, 0.00264099, 242.08998004], [1517136360000, 0.00264099, 0.00264128, 0.002581, 0.00264095, 5252.75619495], [1517136420000, 0.00264094, 0.00264099, 0.00262127, 0.00263999, 709.42461669], [1517136480000, 0.00263999, 0.00264094, 0.00263, 0.00264084, 305.26126344], [1517136540000, 0.00264084, 0.00264085, 0.00262132, 0.00262132, 427.98915645], [1517136600000, 0.00262132, 0.00263, 0.00262129, 0.00263, 244.23690127], [1517136660000, 0.00262131, 0.00263, 0.00262127, 0.00263, 530.96710808], [1517136720000, 0.00263, 0.00263, 0.00262127, 0.00262127, 570.27028816], [1517136780000, 0.00262, 0.00262127, 0.0026141, 0.00262127, 534.55916463], [1517136840000, 0.00262127, 0.00263, 0.00262127, 0.00263, 19.25240373], [1517136900000, 0.00262999, 0.00262999, 0.00262999, 0.00262999, 88.59334366], [1517136960000, 0.00262999, 0.00263132, 0.00262999, 0.00263132, 337.70841746], [1517137020000, 0.00263132, 0.00263132, 0.00263, 0.00263, 790.61210779], [1517137080000, 0.00263, 0.00263, 0.00262127, 0.00262127, 198.62226873], [1517137140000, 0.00262129, 0.00262129, 0.00261414, 0.00261451, 550.16758347], [1517137200000, 0.00262001, 0.00262713, 0.00262001, 0.002627, 110.0382963], [1517137260000, 0.002627, 0.00262713, 0.0026146, 0.00261461, 350.15500663], [1517137320000, 0.00262, 0.00262712, 0.0026145, 0.0026145, 25.23183447], [1517137380000, 0.00262712, 0.00262713, 0.00261454, 0.00262709, 76.2759243], [1517137440000, 0.00262709, 0.0026271, 0.00262709, 0.00262709, 20.42950709], [1517137500000, 0.00262709, 0.00262713, 0.00262709, 0.00262709, 23.65138609], [1517137560000, 0.00262709, 0.00262713, 0.00262709, 0.00262713, 29.22824635], [1517137620000, 0.00262709, 0.00262709, 0.00262709, 0.00262709, 10.15754497], [1517137680000, 0.00262709, 0.00262709, 0.002627, 0.002627, 110.447533], [1517137740000, 0.002627, 0.00262713, 0.002627, 0.00262713, 411.7497284], [1517137800000, 0.00262713, 0.00262713, 0.00262709, 0.00262713, 854.1162503], [1517137860000, 0.00262712, 0.0026281, 0.00262712, 0.0026281, 512.62699291], [1517137920000, 0.0026281, 0.00263, 0.00262712, 0.00263, 158.44409297], [1517137980000, 0.00263, 0.002632, 0.00263, 0.002632, 26.64003632], [1517138040000, 0.002633, 0.00264, 0.002633, 0.002637, 97.96146172], [1517138100000, 0.00264, 0.0026445, 0.00264, 0.0026445, 157.25891774], [1517138160000, 0.00264, 0.0026445, 0.00263702, 0.00263702, 418.25220941], [1517138220000, 0.00263702, 0.00264449, 0.00263702, 0.002644, 533.90824946], [1517138280000, 0.002644, 0.002644, 0.00263703, 0.002644, 218.13723504], [1517138340000, 0.002644, 0.0026444, 0.002644, 0.0026444, 241.49553767], [1517138400000, 0.0026444, 0.00264449, 0.00264439, 0.0026444, 424.41681205], [1517138460000, 0.0026444, 0.0026445, 0.00264439, 0.0026444, 299.08377139], [1517138520000, 0.0026445, 0.0026445, 0.0026444, 0.0026445, 845.94570881], [1517138580000, 0.0026445, 0.002645, 0.00264442, 0.002645, 323.42290335], [1517138640000, 0.00264451, 0.00264713, 0.0026445, 0.00264713, 483.56989716], [1517138700000, 0.00264713, 0.00265985, 0.002646, 0.00265985, 1151.56400742], [1517138760000, 0.00265, 0.00266112, 0.0026499, 0.00266112, 1752.56393287], [1517138820000, 0.00266, 0.002663, 0.00266, 0.00266001, 427.72171971], [1517138880000, 0.00266001, 0.00266414, 0.00266001, 0.00266414, 983.18472074], [1517138940000, 0.00266414, 0.00266452, 0.00266381, 0.00266452, 50.10768825], [1517139000000, 0.00266448, 0.00266628, 0.00266448, 0.00266628, 1890.43696985], [1517139060000, 0.00266627, 0.00266628, 0.00266448, 0.00266448, 730.08495952], [1517139120000, 0.00266652, 0.00267, 0.00266381, 0.00266381, 898.96994819], [1517139180000, 0.00266999, 0.00266999, 0.00266381, 0.002664, 347.0819768], [1517139240000, 0.002664, 0.00266794, 0.00265755, 0.00265758, 1019.10844371], [1517139300000, 0.00265758, 0.00266794, 0.00265755, 0.00265756, 519.10239497], [1517139360000, 0.00265756, 0.00266789, 0.00265755, 0.00266789, 141.93395004], [1517139420000, 0.00266788, 0.00266788, 0.00266774, 0.00266788, 271.29511626], [1517139480000, 0.00266788, 0.00266788, 0.00266774, 0.00266788, 355.32187225], [1517139540000, 0.00266787, 0.00266788, 0.00266774, 0.00266787, 39.39452455], [1517139600000, 0.00266774, 0.00267244, 0.0026609, 0.0026609, 1060.25502436], [1517139660000, 0.00266774, 0.00266774, 0.00266, 0.00266089, 248.70418828], [1517139720000, 0.00266, 0.002667, 0.00265151, 0.00265998, 447.98516161], [1517139780000, 0.00265151, 0.00265998, 0.002651, 0.00265104, 851.26482994], [1517139840000, 0.00265106, 0.00266, 0.00265106, 0.0026599, 368.85743862], [1517139900000, 0.0026599, 0.00266773, 0.00265132, 0.00266773, 332.02394502], [1517139960000, 0.00266774, 0.00266774, 0.00266773, 0.00266774, 460.87818473], [1517140020000, 0.00266775, 0.00266775, 0.00266774, 0.00266775, 100.87635906], [1517140080000, 0.00266775, 0.00266775, 0.00265125, 0.00266, 900.39748711], [1517140140000, 0.00265125, 0.00266998, 0.00265125, 0.00266, 265.62576049], [1517140200000, 0.00266, 0.00267, 0.00265123, 0.00265142, 724.49745983], [1517140260000, 0.00265144, 0.00267, 0.00265143, 0.00266999, 63.71314563], [1517140320000, 0.00266999, 0.00267243, 0.00265143, 0.00267, 812.0136689], [1517140380000, 0.002669, 0.00267, 0.002669, 0.00267, 100.4776467], [1517140440000, 0.00267001, 0.00267236, 0.00266066, 0.00267, 546.46503807], [1517140500000, 0.00266066, 0.00267, 0.00266066, 0.00267, 127.1592543], [1517140560000, 0.00267232, 0.00267249, 0.00267232, 0.00267249, 396.76488948], [1517140620000, 0.00267249, 0.00267596, 0.00267249, 0.00267592, 629.4221926], [1517140680000, 0.00267596, 0.00268, 0.00267596, 0.002678, 1372.9423218], [1517140740000, 0.00267569, 0.00268, 0.00267006, 0.00268, 156.12714889], [1517140800000, 0.00268, 0.00268278, 0.00267006, 0.00268002, 1848.75943], [1517140860000, 0.00268278, 0.00268839, 0.00268002, 0.002682, 2286.74690154], [1517140920000, 0.002682, 0.00268839, 0.00267006, 0.00268839, 2105.5026583], [1517140980000, 0.00268839, 0.00269675, 0.002673, 0.00268999, 3183.28950658], [1517141040000, 0.00269001, 0.00270627, 0.00269001, 0.00270363, 4777.90775282], [1517141100000, 0.00270589, 0.00271, 0.00270589, 0.00270627, 1784.80136078], [1517141160000, 0.00270627, 0.00271102, 0.00270627, 0.00271102, 892.62457431], [1517141220000, 0.00271102, 0.0027115, 0.00270628, 0.00270628, 657.66326909], [1517141280000, 0.00270627, 0.00270627, 0.00268999, 0.00268999, 905.7518737], [1517141340000, 0.00268999, 0.00271102, 0.00267301, 0.002679, 4167.06568794], [1517141400000, 0.00267427, 0.00269997, 0.00266999, 0.002679, 784.03611117], [1517141460000, 0.00267428, 0.00267428, 0.00265893, 0.00265893, 814.92397199], [1517141520000, 0.00265895, 0.00267, 0.00265893, 0.00267, 922.23473952], [1517141580000, 0.00267, 0.00267891, 0.00266999, 0.00267, 603.83473497], [1517141640000, 0.00267, 0.00267267, 0.00267, 0.00267, 60.58872077], [1517141700000, 0.00267001, 0.00267888, 0.00265893, 0.00267888, 504.34748391], [1517141760000, 0.00267887, 0.00267887, 0.0026589, 0.00267863, 321.15402693], [1517141820000, 0.00267862, 0.00267862, 0.00265897, 0.00267697, 184.91191822], [1517141880000, 0.00267697, 0.00267697, 0.002659, 0.00266, 132.61992177], [1517141940000, 0.00266, 0.00266, 0.00265901, 0.00266, 340.44545048], [1517142000000, 0.00266, 0.002673, 0.00266, 0.00266001, 235.20251741], [1517142060000, 0.002665, 0.002675, 0.002665, 0.00267495, 435.65018225], [1517142120000, 0.00267494, 0.00267494, 0.002665, 0.002665, 253.89569274], [1517142180000, 0.002665, 0.00267099, 0.00266001, 0.002665, 395.59291367], [1517142240000, 0.002665, 0.00266999, 0.002665, 0.002665, 348.03688894], [1517142300000, 0.002665, 0.00267098, 0.00266002, 0.00267, 1012.14711459], [1517142360000, 0.00267, 0.00267855, 0.00266003, 0.00267596, 927.63010723], [1517142420000, 0.00267853, 0.00268366, 0.00267596, 0.0026834, 146.87205885], [1517142480000, 0.0026834, 0.0027, 0.00266016, 0.00266871, 787.06240643], [1517142540000, 0.00268246, 0.00269866, 0.00266902, 0.00269866, 144.84202559], [1517142600000, 0.00268571, 0.00269861, 0.002671, 0.00269469, 469.29790752], [1517142660000, 0.00269469, 0.00269848, 0.00268122, 0.00269725, 3180.10931446], [1517142720000, 0.00269725, 0.0026987, 0.00269, 0.00269847, 108.78959581], [1517142780000, 0.00269847, 0.00269999, 0.00269847, 0.00269847, 343.44587517], [1517142840000, 0.002692, 0.00269847, 0.00268123, 0.00269, 696.28277549], [1517142900000, 0.00269, 0.00269847, 0.00268201, 0.002684, 793.69285404], [1517142960000, 0.00269844, 0.00269844, 0.002684, 0.002684, 59.83607607], [1517143020000, 0.00268401, 0.00269817, 0.002684, 0.00268401, 206.05178637], [1517143080000, 0.00268401, 0.00269, 0.00268401, 0.00269, 37.62445326], [1517143140000, 0.00269, 0.00269798, 0.00268203, 0.00269798, 298.47351794], [1517143200000, 0.00268202, 0.002697, 0.002681, 0.00268444, 430.32359778], [1517143260000, 0.00268444, 0.002697, 0.00268002, 0.00268002, 151.92083184], [1517143320000, 0.0026801, 0.00268025, 0.00268, 0.00268, 551.70556924], [1517143380000, 0.00268001, 0.00269696, 0.00267101, 0.00267644, 104.07803435], [1517143440000, 0.00269, 0.00269, 0.00267644, 0.00269, 32.21787129], [1517143500000, 0.00269, 0.00269, 0.00268, 0.00268998, 39.6577884], [1517143560000, 0.00268998, 0.00268999, 0.00267644, 0.00268999, 122.54106179], [1517143620000, 0.00267645, 0.00268911, 0.00267645, 0.00267645, 1.64455211], [1517143680000, 0.00268, 0.00268, 0.00268, 0.00268, 85.64753254], [1517143740000, 0.00268, 0.00268909, 0.00267645, 0.00268, 555.91847311], [1517143800000, 0.00267645, 0.00268, 0.00267645, 0.00267645, 926.05104096], [1517143860000, 0.00267645, 0.00267645, 0.00267, 0.00267007, 1905.09807309], [1517143920000, 0.00267007, 0.00267644, 0.00267, 0.00267, 702.55118499], [1517143980000, 0.00267, 0.00267, 0.00266102, 0.00266103, 456.96006214], [1517144040000, 0.00266102, 0.00267, 0.00265001, 0.00265532, 1160.95796528], [1517144100000, 0.00265532, 0.00265532, 0.00264399, 0.00264612, 1400.65469857], [1517144160000, 0.00264612, 0.00265531, 0.002644, 0.00265531, 601.46309618], [1517144220000, 0.00265529, 0.00265531, 0.00264613, 0.00265, 271.95305999], [1517144280000, 0.00265001, 0.0026553, 0.00264613, 0.00265529, 190.96977199], [1517144340000, 0.00265529, 0.0026553, 0.00265, 0.0026553, 296.43531085], [1517144400000, 0.00265004, 0.0026553, 0.00265004, 0.0026553, 43.6519797], [1517144460000, 0.00265529, 0.00265529, 0.00264614, 0.00265, 323.33207638], [1517144520000, 0.00265001, 0.00265001, 0.00265001, 0.00265001, 41.13755215], [1517144580000, 0.00265521, 0.0026589, 0.00263, 0.0026589, 820.15365603], [1517144640000, 0.00265531, 0.0026589, 0.00265531, 0.0026589, 147.19184428], [1517144700000, 0.0026589, 0.00267, 0.0026589, 0.0026589, 45.18261937], [1517144760000, 0.0026589, 0.002665, 0.0026589, 0.002665, 39.45476644], [1517144820000, 0.00266999, 0.00266999, 0.00266499, 0.00266698, 746.83450025], [1517144880000, 0.00266698, 0.00267, 0.00266698, 0.00266998, 1201.75899666], [1517144940000, 0.00266999, 0.00268, 0.00266999, 0.00267268, 118.25151296], [1517145000000, 0.00268, 0.00268868, 0.00267269, 0.00268868, 70.8426879], [1517145060000, 0.0026845, 0.00268455, 0.00267268, 0.00267268, 468.7161284], [1517145120000, 0.00267268, 0.00268, 0.00267268, 0.00268, 41.68961018], [1517145180000, 0.00268, 0.00268, 0.00267268, 0.00268, 153.04612371], [1517145240000, 0.00267268, 0.00267268, 0.00267267, 0.00267268, 105.05904503], [1517145300000, 0.00267268, 0.00268, 0.00267, 0.00267268, 392.89061702], [1517145360000, 0.00267269, 0.00268, 0.00266999, 0.00267268, 747.09725404], [1517145420000, 0.00267268, 0.00268, 0.00266698, 0.00266698, 164.17690922], [1517145480000, 0.00267, 0.00268, 0.00267, 0.00267, 231.46222352], [1517145540000, 0.00266698, 0.00267, 0.00265891, 0.00266997, 510.25037163], [1517145600000, 0.00266997, 0.00266997, 0.00266001, 0.00266986, 248.83304244], [1517145660000, 0.00266986, 0.00266986, 0.00266, 0.00266978, 938.23327155], [1517145720000, 0.0026697, 0.00266999, 0.00266004, 0.00266999, 687.32305007], [1517145780000, 0.00266999, 0.00268869, 0.00266999, 0.00267267, 150.8630315], [1517145840000, 0.00268333, 0.00268868, 0.00268333, 0.00268868, 259.72111807], [1517145900000, 0.00268868, 0.00268909, 0.00268333, 0.00268333, 224.88316142], [1517145960000, 0.00268333, 0.00268868, 0.002679, 0.00268868, 961.25399415], [1517146020000, 0.00268334, 0.00268868, 0.00267902, 0.00268868, 475.5269917], [1517146080000, 0.00268868, 0.0027, 0.00267904, 0.00269813, 800.37598735], [1517146140000, 0.00269813, 0.0027, 0.00269, 0.0027, 722.33044077], [1517146200000, 0.0027, 0.00270101, 0.00269, 0.00270101, 340.69774205], [1517146260000, 0.002701, 0.002705, 0.00269201, 0.002701, 334.14392721], [1517146320000, 0.002701, 0.002707, 0.00269336, 0.002699, 335.83224474], [1517146380000, 0.0027048, 0.00270883, 0.00269004, 0.00270479, 550.36694554], [1517146440000, 0.002694, 0.00270375, 0.002694, 0.00270368, 24.04422278], [1517146500000, 0.00270368, 0.00270479, 0.00269422, 0.00270368, 80.55896527], [1517146560000, 0.00270368, 0.002707, 0.002703, 0.0027047, 536.83073627], [1517146620000, 0.0027047, 0.002707, 0.002703, 0.002707, 170.20499452], [1517146680000, 0.00270883, 0.00270883, 0.002703, 0.002703, 278.89999372], [1517146740000, 0.00270875, 0.0027105, 0.00270872, 0.0027105, 648.85016239], [1517146800000, 0.0027105, 0.00271287, 0.00271049, 0.00271287, 172.38949432], [1517146860000, 0.00271287, 0.00272002, 0.00271287, 0.00272002, 1505.73209633], [1517146920000, 0.00272002, 0.00273, 0.00272002, 0.00273, 1712.02708329], [1517146980000, 0.00273, 0.0027364, 0.00272501, 0.0027364, 1193.3065607], [1517147040000, 0.00273671, 0.00274, 0.00272502, 0.00273054, 1489.15910806], [1517147100000, 0.00273054, 0.00273779, 0.00272002, 0.00273375, 913.47036485], [1517147160000, 0.00273375, 0.00273376, 0.0027064, 0.00272002, 632.10211442], [1517147220000, 0.00272002, 0.00272442, 0.00269336, 0.00270203, 1384.21276178], [1517147280000, 0.00270203, 0.0027244, 0.00270203, 0.00270642, 354.77025441], [1517147340000, 0.00272002, 0.0027244, 0.00270642, 0.0027244, 312.02347971], [1517147400000, 0.00272439, 0.00272439, 0.00270643, 0.00272436, 21.54247395], [1517147460000, 0.00272435, 0.00272435, 0.00270643, 0.0027243, 84.28207806], [1517147520000, 0.00270643, 0.00274299, 0.00270643, 0.00274299, 1490.06583792], [1517147580000, 0.00272432, 0.00273998, 0.00271571, 0.00271571, 193.53548945], [1517147640000, 0.00271571, 0.00273258, 0.002711, 0.00272266, 214.9800252], [1517147700000, 0.00272266, 0.00273496, 0.00270645, 0.00273256, 368.17531187], [1517147760000, 0.00272432, 0.00273899, 0.00270703, 0.00270703, 189.99330817], [1517147820000, 0.00273256, 0.002734, 0.00273256, 0.002733, 3931.47830468], [1517147880000, 0.002733, 0.00273992, 0.002711, 0.00273289, 772.950368], [1517147940000, 0.00273289, 0.002733, 0.00271199, 0.002733, 677.72586421], [1517148000000, 0.00272999, 0.00273294, 0.00272, 0.0027329, 46.59830496], [1517148060000, 0.00272437, 0.0027329, 0.00271209, 0.00272437, 218.81181918], [1517148120000, 0.00272437, 0.00273881, 0.00272437, 0.0027329, 1342.44607016], [1517148180000, 0.00273396, 0.00273873, 0.0027329, 0.00273301, 431.67547622], [1517148240000, 0.00273857, 0.00273857, 0.0027329, 0.0027329, 595.14883121], [1517148300000, 0.00273834, 0.00273834, 0.00271209, 0.00273234, 897.70878191], [1517148360000, 0.00271501, 0.00273154, 0.00271501, 0.00271503, 51.74650461], [1517148420000, 0.00273042, 0.00273042, 0.00271503, 0.00272998, 275.01288846], [1517148480000, 0.00272998, 0.00272998, 0.00271505, 0.00272, 57.18899703], [1517148540000, 0.00272, 0.00272, 0.00271502, 0.00271505, 642.77745396], [1517148600000, 0.00272, 0.00272, 0.00271505, 0.00271505, 160.29204724], [1517148660000, 0.0027158, 0.00272, 0.00271505, 0.0027158, 38.07490281], [1517148720000, 0.0027158, 0.00272, 0.00270506, 0.00270506, 1675.37082821], [1517148780000, 0.00271135, 0.00271135, 0.00271131, 0.00271132, 89.07688489], [1517148840000, 0.00271131, 0.00271132, 0.00271131, 0.00271131, 217.21087179], [1517148900000, 0.00271132, 0.00272, 0.00271131, 0.00271132, 74.3521125], [1517148960000, 0.00271133, 0.00272, 0.00271132, 0.00272, 514.77456368], [1517149020000, 0.00272, 0.002725, 0.00272, 0.00272498, 632.26117639], [1517149080000, 0.00271132, 0.00272498, 0.00271132, 0.00272498, 153.19781984], [1517149140000, 0.00271778, 0.00271778, 0.00271137, 0.00271778, 8.09699119], [1517149200000, 0.002712, 0.00272496, 0.00271135, 0.00272496, 148.85724555], [1517149260000, 0.00272496, 0.00272496, 0.00272496, 0.00272496, 0.38075152], [1517149320000, 0.00272496, 0.00272496, 0.0027149, 0.0027149, 125.87241697], [1517149380000, 0.00272495, 0.00272495, 0.00271817, 0.00271825, 164.84411772], [1517149440000, 0.00271999, 0.0027289, 0.00271825, 0.00272493, 440.37043317], [1517149500000, 0.00272493, 0.00272889, 0.00272493, 0.00272888, 64.88671802], [1517149560000, 0.00272889, 0.0027289, 0.00272493, 0.00272888, 289.57927282], [1517149620000, 0.00272888, 0.00272888, 0.00272888, 0.00272888, 1.91199904], [1517149680000, 0.00272496, 0.00272895, 0.00272496, 0.00272895, 269.42052137], [1517149740000, 0.00272895, 0.00273842, 0.0027289, 0.00273842, 1248.37391925], [1517149800000, 0.00273842, 0.00273843, 0.0027289, 0.00273842, 267.14919156], [1517149860000, 0.00273842, 0.00273843, 0.00272892, 0.00273843, 162.23890571], [1517149920000, 0.002729, 0.00273842, 0.002729, 0.00273842, 97.09746361], [1517149980000, 0.00273842, 0.00273843, 0.00273842, 0.00273843, 117.00549627], [1517150040000, 0.00273842, 0.00273843, 0.002729, 0.00273842, 575.16223199], [1517150100000, 0.00273841, 0.00273841, 0.0027302, 0.0027384, 43.94664552], [1517150160000, 0.0027384, 0.0027384, 0.00273402, 0.0027384, 257.98877731], [1517150220000, 0.0027384, 0.00273842, 0.0027384, 0.00273842, 335.81231311], [1517150280000, 0.00273842, 0.00273842, 0.00273834, 0.0027384, 265.66161305], [1517150340000, 0.0027383, 0.00273843, 0.0027383, 0.00273843, 265.42752203], [1517150400000, 0.0027383, 0.0027383, 0.0027383, 0.0027383, 59.24063546], [1517150460000, 0.0027383, 0.00273843, 0.0027383, 0.0027383, 833.69615411], [1517150520000, 0.00273843, 0.00273843, 0.0027383, 0.00273831, 265.40158889], [1517150580000, 0.00273831, 0.00273843, 0.0027383, 0.00273843, 93.07427212], [1517150640000, 0.00273842, 0.00274, 0.0027383, 0.00274, 940.13254923], [1517150700000, 0.00274, 0.00274, 0.00273843, 0.00273863, 304.69771832], [1517150760000, 0.00273869, 0.00274, 0.00273863, 0.00274, 150.65468578], [1517150820000, 0.00273999, 0.00274357, 0.00273999, 0.00274357, 1432.73839972], [1517150880000, 0.00274357, 0.0027498, 0.00274357, 0.0027498, 1078.19551221], [1517150940000, 0.0027498, 0.00275582, 0.00274973, 0.00275582, 3910.5369303], [1517151000000, 0.00275582, 0.002763, 0.00275582, 0.002763, 1901.46849055], [1517151060000, 0.002762, 0.00277996, 0.002762, 0.00277946, 3126.36007194], [1517151120000, 0.00276586, 0.00277945, 0.00276586, 0.0027794, 811.56187669], [1517151180000, 0.00277938, 0.0027794, 0.002772, 0.0027785, 357.08008615], [1517151240000, 0.002778, 0.00278841, 0.002778, 0.00278736, 6573.79165084], [1517151300000, 0.00278797, 0.00279184, 0.00278797, 0.002791, 2981.7033844], [1517151360000, 0.002791, 0.0028, 0.00279033, 0.0028, 4953.72728803], [1517151420000, 0.0028, 0.00281, 0.00279993, 0.00280003, 3178.50172793], [1517151480000, 0.0028028, 0.00281264, 0.00280006, 0.00281143, 1944.84027116], [1517151540000, 0.00281143, 0.00281355, 0.002805, 0.00281355, 5312.66090437], [1517151600000, 0.00281355, 0.00282365, 0.00281355, 0.00282365, 638.34253032], [1517151660000, 0.00282351, 0.0028243, 0.00282282, 0.002823, 1214.21030826], [1517151720000, 0.0028225, 0.002823, 0.00280148, 0.00282, 1310.91553535], [1517151780000, 0.00281268, 0.002822, 0.00280603, 0.002818, 3360.94896674], [1517151840000, 0.002818, 0.00282, 0.00281004, 0.00282, 2147.99754001], [1517151900000, 0.00282, 0.00282509, 0.00281999, 0.00282509, 1667.31582391], [1517151960000, 0.00282527, 0.00282975, 0.00282527, 0.00282975, 1003.35571309], [1517152020000, 0.00282975, 0.00285, 0.00282912, 0.0028422, 6714.96430837], [1517152080000, 0.002848, 0.00285585, 0.0028422, 0.002855, 2364.68881878], [1517152140000, 0.00285546, 0.00287368, 0.002855, 0.002871, 5066.60347741], [1517152200000, 0.002871, 0.00288566, 0.002871, 0.002882, 5487.12757781], [1517152260000, 0.002882, 0.00288499, 0.002871, 0.00287471, 2158.78177926], [1517152320000, 0.00287599, 0.00287781, 0.002871, 0.00287101, 2665.59137447], [1517152380000, 0.002871, 0.00287471, 0.00285001, 0.002858, 5516.54177131], [1517152440000, 0.002858, 0.00287101, 0.0028316, 0.00286811, 5302.20286096], [1517152500000, 0.00286, 0.00286, 0.00283019, 0.00283021, 2708.72444655], [1517152560000, 0.00283021, 0.00284101, 0.00281999, 0.00281999, 4698.64365294], [1517152620000, 0.00282658, 0.00284101, 0.00282026, 0.00282929, 1212.37064269], [1517152680000, 0.00282928, 0.00285799, 0.002827, 0.00285, 1868.16522513], [1517152740000, 0.00285, 0.00285799, 0.00284385, 0.00285799, 1053.54213925], [1517152800000, 0.00285799, 0.00285799, 0.00283601, 0.00284142, 927.84522302], [1517152860000, 0.00284142, 0.00285, 0.00283601, 0.00283602, 686.14307709], [1517152920000, 0.00283602, 0.00284141, 0.00283, 0.00283114, 1575.38153244], [1517152980000, 0.00283, 0.00283001, 0.00281999, 0.00281999, 396.70175837], [1517153040000, 0.00281999, 0.00281999, 0.0028, 0.00280502, 3599.18625962], [1517153100000, 0.00280502, 0.002818, 0.00280501, 0.002811, 1105.21969564], [1517153160000, 0.002811, 0.002818, 0.00281, 0.002812, 255.62911823], [1517153220000, 0.002812, 0.002813, 0.00279057, 0.002813, 1928.1905022], [1517153280000, 0.002808, 0.002813, 0.00279632, 0.0027965, 273.24664115], [1517153340000, 0.002808, 0.002808, 0.0027999, 0.00280011, 795.23223596], [1517153400000, 0.002807, 0.002815, 0.00280011, 0.002813, 792.38119764], [1517153460000, 0.002815, 0.00281997, 0.002813, 0.00281997, 489.36264973], [1517153520000, 0.002818, 0.00282684, 0.0028179, 0.0028268, 2133.33511601], [1517153580000, 0.0028268, 0.00282681, 0.00282002, 0.00282002, 568.57100085], [1517153640000, 0.0028268, 0.00283419, 0.00282, 0.00283105, 1107.7264965], [1517153700000, 0.00282003, 0.00283998, 0.00282, 0.00283998, 1240.52332265], [1517153760000, 0.00283998, 0.00284689, 0.00281902, 0.00282996, 2114.46500144], [1517153820000, 0.00282, 0.00282988, 0.00282, 0.0028297, 1058.09098366], [1517153880000, 0.00282969, 0.00282969, 0.00281902, 0.00282949, 941.93106562], [1517153940000, 0.00282949, 0.00282949, 0.00282, 0.002825, 140.7751028], [1517154000000, 0.00282499, 0.00282947, 0.00281501, 0.002821, 1478.62008041], [1517154060000, 0.00282, 0.002821, 0.00281, 0.00282099, 745.44158527], [1517154120000, 0.0028179, 0.0028179, 0.00280071, 0.00281, 415.14032705], [1517154180000, 0.002805, 0.00281, 0.00280081, 0.00281, 199.88518216], [1517154240000, 0.0028065, 0.00281, 0.00280082, 0.002805, 1150.35804508], [1517154300000, 0.0028065, 0.0028065, 0.00280078, 0.00280497, 1074.89394642], [1517154360000, 0.00280497, 0.00280497, 0.00280102, 0.00280102, 672.52711117], [1517154420000, 0.00280496, 0.0028065, 0.0028011, 0.002805, 518.13489397], [1517154480000, 0.0028065, 0.0028065, 0.002805, 0.0028051, 640.58320175], [1517154540000, 0.00280643, 0.00281648, 0.0028051, 0.00280654, 1537.50910589], [1517154600000, 0.00280654, 0.00281645, 0.00280654, 0.00281, 219.40820231], [1517154660000, 0.00281645, 0.00281645, 0.00280954, 0.00281645, 198.98318974], [1517154720000, 0.00281645, 0.00281645, 0.00281, 0.00281001, 419.94883945], [1517154780000, 0.00281001, 0.002816, 0.00281, 0.00281598, 181.53942076], [1517154840000, 0.00281594, 0.00281594, 0.00281001, 0.00281572, 463.45633043], [1517154900000, 0.00281571, 0.00281571, 0.00281001, 0.00281005, 478.02251098], [1517154960000, 0.00281499, 0.00281575, 0.00281007, 0.00281007, 267.90608431], [1517155020000, 0.00281499, 0.00281575, 0.00281499, 0.00281575, 243.3968125], [1517155080000, 0.002815, 0.00281645, 0.00281499, 0.00281499, 841.10803153], [1517155140000, 0.00281499, 0.00281641, 0.00281499, 0.00281637, 970.18531118], [1517155200000, 0.00281641, 0.00282099, 0.00281499, 0.002815, 922.70256197], [1517155260000, 0.002815, 0.002821, 0.002815, 0.002815, 835.6000525], [1517155320000, 0.002815, 0.00282, 0.00281499, 0.00281999, 350.72992722], [1517155380000, 0.002815, 0.00281999, 0.00281499, 0.00281501, 856.51774586], [1517155440000, 0.00281501, 0.00282, 0.00281499, 0.00281499, 2097.90994387], [1517155500000, 0.00281501, 0.0028153, 0.00281499, 0.00281501, 873.0100384], [1517155560000, 0.00281499, 0.00281501, 0.00281499, 0.00281499, 1303.86263839], [1517155620000, 0.00281499, 0.00282098, 0.00281499, 0.00281499, 3625.33648435], [1517155680000, 0.00281499, 0.00281499, 0.00280664, 0.00280664, 1213.62956825], [1517155740000, 0.00280664, 0.00281338, 0.0028051, 0.0028054, 81.78229116], [1517155800000, 0.0028054, 0.00281325, 0.002805, 0.002805, 965.90380382], [1517155860000, 0.002805, 0.00280509, 0.0028, 0.0028, 1251.88486587], [1517155920000, 0.0028, 0.002805, 0.00279037, 0.00279037, 1346.42967014], [1517155980000, 0.00279037, 0.0027916, 0.00279037, 0.00279039, 1243.37616334], [1517156040000, 0.00279039, 0.0027916, 0.00279039, 0.00279039, 363.56442998], [1517156100000, 0.00279039, 0.0027916, 0.00278001, 0.0027827, 1599.61814026], [1517156160000, 0.002783, 0.00279037, 0.00277283, 0.00278, 1843.47937379], [1517156220000, 0.00278, 0.00278, 0.0027713, 0.00277999, 324.23316998], [1517156280000, 0.00277999, 0.00278502, 0.00277284, 0.00278502, 404.73461671], [1517156340000, 0.00278502, 0.00278502, 0.00277999, 0.00278502, 24.56280545], [1517156400000, 0.00277999, 0.00278502, 0.00277287, 0.00278, 615.4322171], [1517156460000, 0.00277288, 0.00278, 0.00277288, 0.002779, 5.29677335], [1517156520000, 0.002779, 0.002779, 0.002773, 0.002773, 48.90206978], [1517156580000, 0.002773, 0.002773, 0.0027728, 0.0027729, 588.64227896], [1517156640000, 0.00277289, 0.00277289, 0.00276709, 0.00276709, 555.23887368], [1517156700000, 0.00277, 0.00277289, 0.00276709, 0.00277289, 383.81282959], [1517156760000, 0.002773, 0.00277999, 0.0027713, 0.00277999, 321.89337903], [1517156820000, 0.00277301, 0.00278502, 0.00277301, 0.00278502, 357.055851], [1517156880000, 0.00278502, 0.00279135, 0.00277306, 0.00279135, 141.09752686], [1517156940000, 0.00279135, 0.0028, 0.00279039, 0.0028, 343.15845508], [1517157000000, 0.00279765, 0.0028, 0.0027918, 0.0027918, 242.38442183], [1517157060000, 0.00279995, 0.00279995, 0.0027918, 0.002799, 81.69191356], [1517157120000, 0.0027918, 0.002799, 0.0027918, 0.002799, 93.9232783], [1517157180000, 0.00279995, 0.0028, 0.00279181, 0.00279994, 172.82552974], [1517157240000, 0.00279994, 0.00281911, 0.00279994, 0.00281911, 193.60368716], [1517157300000, 0.0028191, 0.0028191, 0.00280508, 0.0028051, 55.29550756], [1517157360000, 0.00281, 0.002819, 0.0028051, 0.00281, 255.75755284], [1517157420000, 0.00281, 0.00281179, 0.0028051, 0.0028051, 787.2290952], [1517157480000, 0.0028051, 0.00281165, 0.0028051, 0.00280755, 163.81983185], [1517157540000, 0.00280755, 0.00281156, 0.00280655, 0.00280665, 478.99883946], [1517157600000, 0.0028071, 0.00281096, 0.00280655, 0.00280655, 343.33097822], [1517157660000, 0.00280655, 0.002811, 0.00280655, 0.002811, 259.09829803], [1517157720000, 0.002811, 0.002811, 0.0028109, 0.0028109, 362.77921211], [1517157780000, 0.0028109, 0.00281098, 0.0028109, 0.00281098, 163.38565534], [1517157840000, 0.00281098, 0.00281098, 0.00281091, 0.00281096, 57.04741322], [1517157900000, 0.00281091, 0.00281163, 0.00281091, 0.002811, 216.2464394], [1517157960000, 0.002811, 0.002811, 0.00280719, 0.00280719, 338.5957049], [1517158020000, 0.00280719, 0.00281086, 0.00280655, 0.00280719, 99.7499007], [1517158080000, 0.00280719, 0.00281067, 0.00280655, 0.00280655, 95.31915337], [1517158140000, 0.00280655, 0.00280719, 0.00280655, 0.00280656, 203.09052426], [1517158200000, 0.00280656, 0.00280718, 0.00280656, 0.00280656, 153.08182415], [1517158260000, 0.00280655, 0.00280655, 0.00279999, 0.0028, 1206.56530703], [1517158320000, 0.0027918, 0.00279999, 0.002791, 0.00279999, 45.88210264], [1517158380000, 0.0027918, 0.0027918, 0.00278301, 0.00278301, 605.13073394], [1517158440000, 0.0027804, 0.002791, 0.00277701, 0.00278001, 511.50453884], [1517158500000, 0.00278002, 0.00278002, 0.00278, 0.00278001, 138.05037367], [1517158560000, 0.00278001, 0.00278001, 0.00277501, 0.00278, 17.75203163], [1517158620000, 0.00278, 0.00278, 0.00277003, 0.00278, 44.61872551], [1517158680000, 0.00278, 0.00278, 0.00277004, 0.00278, 110.64490423], [1517158740000, 0.00278, 0.00278, 0.002771, 0.00278, 284.23173912], [1517158800000, 0.002773, 0.00279093, 0.002773, 0.00278, 115.01367019], [1517158860000, 0.00278, 0.002786, 0.002773, 0.002773, 67.13652621], [1517158920000, 0.002773, 0.00280716, 0.00277009, 0.00277009, 3264.48703862], [1517158980000, 0.00277009, 0.00277009, 0.0027671, 0.00277009, 296.08490987], [1517159040000, 0.00277009, 0.00277009, 0.00276988, 0.00277009, 146.60683405], [1517159100000, 0.00277009, 0.00277009, 0.00277, 0.00277008, 77.86163938], [1517159160000, 0.00277008, 0.00277008, 0.00276988, 0.00277008, 75.91112072], [1517159220000, 0.00277009, 0.00277009, 0.00276105, 0.00276106, 258.177774], [1517159280000, 0.00276398, 0.00277009, 0.00276201, 0.00276398, 88.88291536], [1517159340000, 0.00276398, 0.00277009, 0.00276398, 0.00277, 90.52327371], [1517159400000, 0.00277, 0.00277009, 0.0027645, 0.00277, 246.58180098], [1517159460000, 0.00276451, 0.00277, 0.00276451, 0.00277, 102.65333147], [1517159520000, 0.0027675, 0.00277009, 0.002764, 0.00277009, 389.23157367], [1517159580000, 0.00277, 0.00277009, 0.002767, 0.00277, 268.27919009], [1517159640000, 0.00277, 0.00277009, 0.00276402, 0.00276402, 336.75430199], [1517159700000, 0.00276402, 0.00277009, 0.00276402, 0.00276997, 774.26259177], [1517159760000, 0.0027699, 0.0027699, 0.00276409, 0.00276409, 228.64403367], [1517159820000, 0.00276409, 0.00276925, 0.002764, 0.0027641, 247.11513545], [1517159880000, 0.002765, 0.002765, 0.00276302, 0.00276302, 118.63874319], [1517159940000, 0.00276302, 0.002765, 0.00276302, 0.00276302, 713.78538072], [1517160000000, 0.002765, 0.00277009, 0.00276499, 0.00276776, 1244.34303199], [1517160060000, 0.00276776, 0.00276776, 0.00276501, 0.00276776, 20.57990008], [1517160120000, 0.00276772, 0.00277009, 0.00276772, 0.002768, 91.13673428], [1517160180000, 0.002768, 0.002768, 0.00276501, 0.00276501, 8.78733165], [1517160240000, 0.0027641, 0.00276501, 0.00276399, 0.00276401, 164.48803794], [1517160300000, 0.00276401, 0.00276409, 0.00276301, 0.00276301, 345.10823651], [1517160360000, 0.00276301, 0.002768, 0.00276301, 0.00276301, 192.07857882], [1517160420000, 0.00276302, 0.002768, 0.00276302, 0.00276302, 95.00846002], [1517160480000, 0.00276303, 0.002768, 0.00276302, 0.00276305, 449.98999218], [1517160540000, 0.00276307, 0.00276582, 0.00276304, 0.00276582, 173.43388878], [1517160600000, 0.00276306, 0.00276582, 0.00276306, 0.00276582, 81.87592778], [1517160660000, 0.002774, 0.002774, 0.00277399, 0.002774, 8.41435971], [1517160720000, 0.002774, 0.00277999, 0.002774, 0.00277501, 353.21266389], [1517160780000, 0.002774, 0.00277999, 0.002774, 0.00277999, 143.99120577], [1517160840000, 0.00277999, 0.00278, 0.002774, 0.00277999, 172.09535987], [1517160900000, 0.00277999, 0.00278998, 0.00277999, 0.00278598, 717.15826666], [1517160960000, 0.00278598, 0.00278997, 0.00278, 0.00278, 148.00512296], [1517161020000, 0.00278978, 0.00278979, 0.002774, 0.002774, 484.21540421], [1517161080000, 0.002774, 0.002774, 0.00276301, 0.002764, 392.45736967], [1517161140000, 0.00276401, 0.00276401, 0.002764, 0.00276401, 306.00577966], [1517161200000, 0.00276977, 0.00276996, 0.00276404, 0.00276406, 40.46853384], [1517161260000, 0.00276406, 0.00276996, 0.00276406, 0.00276992, 261.8951307], [1517161320000, 0.00276986, 0.00276986, 0.00276401, 0.00276682, 430.56756377], [1517161380000, 0.00276682, 0.00276984, 0.00276682, 0.00276982, 68.77284358], [1517161440000, 0.00276401, 0.00277, 0.00276301, 0.00276301, 315.21554136], [1517161500000, 0.00276305, 0.00276999, 0.00276305, 0.00276305, 43.73709724], [1517161560000, 0.00276405, 0.00276407, 0.00276405, 0.00276405, 444.45234293], [1517161620000, 0.00276405, 0.00276405, 0.00276307, 0.00276397, 300.48407187], [1517161680000, 0.00276397, 0.00276397, 0.00276301, 0.00276301, 86.7909432], [1517161740000, 0.002763, 0.00276405, 0.00276107, 0.002762, 788.64617153], [1517161800000, 0.002762, 0.00277, 0.00275, 0.00276108, 4126.88544422], [1517161860000, 0.00276108, 0.00277896, 0.0027575, 0.0027575, 107.28815585], [1517161920000, 0.0027575, 0.00277721, 0.00274, 0.002765, 1035.72264463], [1517161980000, 0.002765, 0.0027775, 0.002765, 0.002765, 38.44564492], [1517162040000, 0.00276511, 0.00277473, 0.00276511, 0.0027747, 13.53411833], [1517162100000, 0.00276511, 0.00277696, 0.00274708, 0.00276511, 204.38228361], [1517162160000, 0.002766, 0.002766, 0.00276511, 0.00276511, 19.03644696], [1517162220000, 0.0027655, 0.002766, 0.00276511, 0.0027655, 256.61367603], [1517162280000, 0.0027655, 0.002766, 0.00276515, 0.0027655, 49.53266264], [1517162340000, 0.00276515, 0.0027655, 0.002746, 0.00276521, 635.33564225], [1517162400000, 0.00276517, 0.00276517, 0.00275075, 0.00276517, 73.22147389], [1517162460000, 0.002765, 0.00276517, 0.0027528, 0.00276517, 222.54563394], [1517162520000, 0.00276517, 0.00276517, 0.00276515, 0.00276517, 89.56115117], [1517162580000, 0.00276517, 0.00276517, 0.00276509, 0.00276509, 138.86764461], [1517162640000, 0.00276509, 0.00276509, 0.00276509, 0.00276509, 34.96807091], [1517162700000, 0.00276509, 0.00276521, 0.00275601, 0.002765, 428.24235513], [1517162760000, 0.00276521, 0.00277685, 0.002765, 0.00277669, 322.81140306], [1517162820000, 0.00277661, 0.00277661, 0.0027766, 0.00277661, 83.34698561], [1517162880000, 0.00277653, 0.00277653, 0.0027706, 0.0027709, 45.86045829], [1517162940000, 0.0027709, 0.0027775, 0.0027706, 0.00277061, 322.10585007], [1517163000000, 0.00277061, 0.00279005, 0.0027706, 0.00278991, 581.27094794], [1517163060000, 0.00278981, 0.00278981, 0.0027706, 0.0027706, 26.7350116], [1517163120000, 0.00278937, 0.00278937, 0.00277999, 0.00277999, 19.74555246], [1517163180000, 0.0027891, 0.002795, 0.00277999, 0.00277999, 220.59463795], [1517163240000, 0.00278, 0.00279999, 0.00278, 0.00279666, 431.32515318], [1517163300000, 0.00279665, 0.0028, 0.0027805, 0.00279662, 197.75637375], [1517163360000, 0.002789, 0.00279662, 0.002789, 0.00279, 137.4738679], [1517163420000, 0.00279662, 0.0028, 0.0027893, 0.00279159, 775.66054984], [1517163480000, 0.00279159, 0.00279999, 0.00279159, 0.00279988, 173.99705099], [1517163540000, 0.00279987, 0.00282799, 0.00279159, 0.00282799, 460.35999696], [1517163600000, 0.00279166, 0.00283, 0.00279166, 0.0028, 587.99158714], [1517163660000, 0.0028004, 0.00281798, 0.0028, 0.00280002, 658.16510994], [1517163720000, 0.00281, 0.00281, 0.0028, 0.0028, 26.45986603], [1517163780000, 0.00280102, 0.00280999, 0.00280102, 0.00280993, 77.25622679], [1517163840000, 0.00280993, 0.00280993, 0.00280103, 0.00280104, 285.61183763], [1517163900000, 0.00280104, 0.00281, 0.00280104, 0.00280992, 37.81897148], [1517163960000, 0.00280992, 0.00281, 0.00280992, 0.00281, 1.79401881], [1517164020000, 0.00281, 0.002815, 0.00281, 0.00281, 189.07137999], [1517164080000, 0.00281, 0.002815, 0.00281, 0.00281001, 459.25752643], [1517164140000, 0.00281001, 0.002817, 0.00281, 0.002817, 336.70485075], [1517164200000, 0.002817, 0.00281998, 0.00281, 0.002818, 119.50367891], [1517164260000, 0.002818, 0.00282, 0.002818, 0.00281998, 188.59763839], [1517164320000, 0.00282661, 0.00282661, 0.00281998, 0.00282661, 188.56050501], [1517164380000, 0.00282661, 0.00283, 0.00282, 0.002825, 233.75537896], [1517164440000, 0.00282501, 0.00282901, 0.00282, 0.002825, 376.53959195], [1517164500000, 0.002825, 0.00282895, 0.002825, 0.00282889, 151.16190705], [1517164560000, 0.00282889, 0.00282894, 0.00282502, 0.00282894, 325.3752956], [1517164620000, 0.00282893, 0.002829, 0.00282889, 0.002829, 102.42368711], [1517164680000, 0.00282905, 0.00283205, 0.002829, 0.00283205, 186.42079312], [1517164740000, 0.00283206, 0.00283206, 0.00283096, 0.00283205, 360.91200675], [1517164800000, 0.00283205, 0.002833, 0.00283096, 0.002833, 297.84645153], [1517164860000, 0.002833, 0.00283776, 0.00283206, 0.00283776, 295.39467355], [1517164920000, 0.00283206, 0.00283495, 0.00283206, 0.00283494, 60.85880241], [1517164980000, 0.00283494, 0.00283494, 0.00283206, 0.0028325, 239.76268497], [1517165040000, 0.00283493, 0.00283493, 0.0028325, 0.0028325, 148.61439071], [1517165100000, 0.0028325, 0.00283494, 0.0028325, 0.0028349, 323.33343573], [1517165160000, 0.00283251, 0.00283494, 0.0028325, 0.002833, 258.63074894], [1517165220000, 0.002833, 0.002833, 0.0028325, 0.0028325, 457.94533543], [1517165280000, 0.002833, 0.0028377, 0.002833, 0.002833, 754.94598624], [1517165340000, 0.00283735, 0.00284, 0.00283325, 0.00283325, 226.71520193], [1517165400000, 0.002833, 0.00283768, 0.002833, 0.00283767, 60.94665964], [1517165460000, 0.0028333, 0.00283757, 0.0028333, 0.0028333, 236.77888348], [1517165520000, 0.00283748, 0.00283748, 0.0028333, 0.00283339, 195.42228889], [1517165580000, 0.00283339, 0.00283345, 0.0028333, 0.00283345, 557.90295249], [1517165640000, 0.0028335, 0.002837, 0.00283345, 0.00283345, 242.23159288], [1517165700000, 0.0028335, 0.00283695, 0.0028335, 0.00283695, 19.9961125], [1517165760000, 0.00283695, 0.00283695, 0.00283345, 0.00283345, 1740.25772918], [1517165820000, 0.00283345, 0.0028367, 0.00283345, 0.00283345, 21.05367685], [1517165880000, 0.00283346, 0.00283346, 0.00283345, 0.00283345, 116.81703421], [1517165940000, 0.00283345, 0.00283346, 0.00283345, 0.00283345, 707.26990466], [1517166000000, 0.00283345, 0.0028364, 0.002821, 0.002822, 734.87703079], [1517166060000, 0.00282, 0.00282933, 0.00281202, 0.00281301, 491.21943754], [1517166120000, 0.002818, 0.002818, 0.00281302, 0.002818, 197.73205449], [1517166180000, 0.002815, 0.002818, 0.002815, 0.002818, 185.29551595], [1517166240000, 0.00281743, 0.002818, 0.00281713, 0.00281713, 606.05842937], [1517166300000, 0.00281713, 0.00282702, 0.00281713, 0.00282702, 51.37229834], [1517166360000, 0.00282702, 0.00282702, 0.0028177, 0.002827, 169.18924254], [1517166420000, 0.0028268, 0.0028268, 0.0028177, 0.0028177, 148.15809453], [1517166480000, 0.002818, 0.002826, 0.0028177, 0.002826, 24.83790228], [1517166540000, 0.002818, 0.0028259, 0.0028177, 0.0028177, 286.60542499], [1517166600000, 0.0028259, 0.0028259, 0.00281771, 0.0028259, 73.4169292], [1517166660000, 0.00281771, 0.00282598, 0.0028177, 0.0028177, 634.22822326], [1517166720000, 0.0028177, 0.0028177, 0.002798, 0.002798, 572.60051587], [1517166780000, 0.0028, 0.0028, 0.00279174, 0.0028, 241.65960715], [1517166840000, 0.0027917, 0.00279999, 0.0027917, 0.002799, 13.82964282], [1517166900000, 0.00279172, 0.00279898, 0.00279172, 0.00279898, 64.14144062], [1517166960000, 0.002798, 0.002798, 0.00279172, 0.00279172, 83.31834772], [1517167020000, 0.00279172, 0.00279898, 0.00279159, 0.00279898, 45.26494942], [1517167080000, 0.00279898, 0.00279898, 0.00279173, 0.00279173, 68.17249141], [1517167140000, 0.00279898, 0.00279898, 0.002792, 0.00279898, 48.53099098], [1517167200000, 0.00279895, 0.00279898, 0.00279301, 0.00279898, 578.14664816], [1517167260000, 0.00279895, 0.00279898, 0.00279895, 0.00279895, 14.72372618], [1517167320000, 0.00279896, 0.00279897, 0.00279896, 0.00279897, 39.18119006], [1517167380000, 0.00279898, 0.00279898, 0.00279897, 0.00279897, 92.51367268], [1517167440000, 0.00279897, 0.00279897, 0.00279895, 0.00279897, 36.81131492], [1517167500000, 0.00279897, 0.00279898, 0.00279897, 0.00279898, 304.24997261], [1517167560000, 0.00279895, 0.00279898, 0.0027931, 0.0027931, 26.71300289], [1517167620000, 0.0027931, 0.00279895, 0.0027931, 0.0027931, 265.6559148], [1517167680000, 0.00279895, 0.00279895, 0.0027931, 0.0027931, 27.34537945], [1517167740000, 0.0027931, 0.0027931, 0.0027931, 0.0027931, 47.57582516], [1517167800000, 0.00279894, 0.00279894, 0.00279893, 0.00279894, 10.86048164], [1517167860000, 0.0027931, 0.00279894, 0.0027931, 0.00279894, 27.45140052], [1517167920000, 0.0027931, 0.0027931, 0.00279178, 0.00279178, 102.2310437], [1517167980000, 0.002792, 0.0027931, 0.002792, 0.0027931, 28.25550679], [1517168040000, 0.00279201, 0.00279893, 0.00279178, 0.00279201, 30.64457975], [1517168100000, 0.00279178, 0.00279893, 0.00279, 0.00279893, 284.79658194], [1517168160000, 0.00279892, 0.00279893, 0.0027931, 0.00279891, 80.38094894], [1517168220000, 0.00279891, 0.00279891, 0.0027931, 0.0027989, 137.3066234], [1517168280000, 0.0027989, 0.0027989, 0.0027931, 0.00279312, 48.77264672], [1517168340000, 0.00279312, 0.00279891, 0.0027931, 0.0027931, 413.97566567], [1517168400000, 0.0027931, 0.00279801, 0.0027931, 0.0027931, 36.79255468], [1517168460000, 0.0027931, 0.002798, 0.0027931, 0.002798, 65.61797059], [1517168520000, 0.00279801, 0.0027989, 0.0027931, 0.00279889, 365.91451448], [1517168580000, 0.00279311, 0.00279891, 0.00279311, 0.00279891, 49.86866886], [1517168640000, 0.0027989, 0.0027989, 0.00279311, 0.00279311, 32.36101038], [1517168700000, 0.00279311, 0.0027989, 0.00279311, 0.00279888, 10.01614441], [1517168760000, 0.00279315, 0.00279887, 0.00279315, 0.002795, 12.18163856], [1517168820000, 0.00279885, 0.00279885, 0.002795, 0.002795, 24.38219348], [1517168880000, 0.002795, 0.002798, 0.002795, 0.002795, 8.63810492], [1517168940000, 0.002795, 0.002795, 0.00279311, 0.00279311, 293.09818328], [1517169000000, 0.00279312, 0.00279699, 0.00279312, 0.00279313, 73.10204285], [1517169060000, 0.00279313, 0.00279313, 0.00279312, 0.00279312, 74.27035023], [1517169120000, 0.00279312, 0.00279313, 0.00279312, 0.00279313, 26.03847795], [1517169180000, 0.00279312, 0.00279312, 0.00279312, 0.00279312, 14.1737399], [1517169240000, 0.00279312, 0.00279698, 0.00279312, 0.00279313, 30.79387819], [1517169300000, 0.00279698, 0.00279699, 0.00279698, 0.00279699, 75.46323976], [1517169360000, 0.00279699, 0.002797, 0.00279699, 0.002797, 67.60345453], [1517169420000, 0.002797, 0.002797, 0.00279699, 0.00279699, 1049.60524492], [1517169480000, 0.00279699, 0.00279882, 0.00279699, 0.00279699, 26.0], [1517169540000, 0.0027933, 0.00279883, 0.00279311, 0.00279882, 224.60367082], [1517169600000, 0.00279881, 0.00279881, 0.0027931, 0.0027931, 275.84193768], [1517169660000, 0.0027931, 0.00279311, 0.0027931, 0.0027931, 31.30940618], [1517169720000, 0.0027975, 0.0027975, 0.00279311, 0.00279311, 72.65760974], [1517169780000, 0.00279311, 0.0027973, 0.00279, 0.00279, 255.48523669], [1517169840000, 0.00279, 0.00279, 0.00278931, 0.00278931, 274.94854735], [1517169900000, 0.00278931, 0.00278931, 0.00278205, 0.00278205, 364.98723595], [1517169960000, 0.00278206, 0.0027893, 0.00278205, 0.0027822, 17.67419958], [1517170020000, 0.0027822, 0.002789, 0.0027822, 0.002789, 23.8487416], [1517170080000, 0.00278222, 0.00278222, 0.00278221, 0.00278222, 192.73808443], [1517170140000, 0.00278222, 0.00278899, 0.00278222, 0.00278222, 10.71357321], [1517170200000, 0.00278222, 0.00278899, 0.00278221, 0.00278899, 108.18890872], [1517170260000, 0.002788, 0.002789, 0.00278222, 0.00278222, 65.43322517], [1517170320000, 0.00278849, 0.0027885, 0.00278221, 0.00278221, 217.9738951], [1517170380000, 0.00278225, 0.00278225, 0.00278225, 0.00278225, 5.0], [1517170440000, 0.00278225, 0.0027883, 0.00278225, 0.0027883, 296.76046907], [1517170500000, 0.00278829, 0.00278829, 0.002784, 0.002784, 36.73014025], [1517170560000, 0.002784, 0.002784, 0.00278205, 0.00278205, 9.86227657], [1517170620000, 0.00278225, 0.00278225, 0.00278205, 0.00278225, 37.02519642], [1517170680000, 0.00278225, 0.00278225, 0.00278225, 0.00278225, 3.05927674], [1517170740000, 0.00278798, 0.00278799, 0.00278225, 0.00278799, 51.30478863], [1517170800000, 0.00278798, 0.00278825, 0.00278225, 0.00278798, 13.55676946], [1517170860000, 0.00278225, 0.00278824, 0.00278205, 0.00278824, 313.74559944], [1517170920000, 0.002784, 0.002784, 0.00278205, 0.00278205, 39.27396004], [1517170980000, 0.00278205, 0.002784, 0.00278205, 0.002784, 49.37833714], [1517171040000, 0.00278206, 0.002784, 0.00278206, 0.00278206, 42.79228], [1517171100000, 0.002784, 0.00279095, 0.00278206, 0.00279095, 215.96639755], [1517171160000, 0.00278206, 0.00279094, 0.00278205, 0.00278205, 90.46390797], [1517171220000, 0.00278205, 0.00278206, 0.00278205, 0.00278205, 263.34210434], [1517171280000, 0.00278205, 0.00279089, 0.00278205, 0.00278206, 189.36222426], [1517171340000, 0.00278206, 0.00279043, 0.00278205, 0.00279031, 1609.63168098], [1517171400000, 0.00278206, 0.00278997, 0.00278205, 0.00278997, 38.88319159], [1517171460000, 0.00278989, 0.00278989, 0.00278981, 0.00278981, 16.9471854], [1517171520000, 0.00278206, 0.00278949, 0.00278205, 0.00278945, 322.69275977], [1517171580000, 0.00278207, 0.00278945, 0.00278207, 0.00278939, 121.14188409], [1517171640000, 0.00278208, 0.00278939, 0.00278208, 0.00278208, 658.15724185], [1517171700000, 0.00278208, 0.00278917, 0.00278208, 0.00278208, 683.15126783], [1517171760000, 0.00278417, 0.00278699, 0.00278205, 0.00278698, 917.80829358], [1517171820000, 0.00278696, 0.00278697, 0.00278205, 0.00278205, 247.36448406], [1517171880000, 0.00278688, 0.00278688, 0.00278205, 0.00278205, 224.16067903], [1517171940000, 0.00278676, 0.00278676, 0.00278205, 0.00278205, 271.62094595], [1517172000000, 0.00278205, 0.0027858, 0.00278199, 0.00278199, 588.4294031], [1517172060000, 0.00278199, 0.00278575, 0.002774, 0.00277999, 54.1393751], [1517172120000, 0.002774, 0.002774, 0.00276206, 0.002774, 288.23136327], [1517172180000, 0.002774, 0.00278, 0.00276205, 0.00278, 138.93413139], [1517172240000, 0.00278685, 0.00278918, 0.002774, 0.002774, 35.64712808], [1517172300000, 0.002774, 0.00278884, 0.002774, 0.00278861, 60.40313656], [1517172360000, 0.00276768, 0.00278838, 0.00276759, 0.00278, 6.05593514], [1517172420000, 0.00278825, 0.00278826, 0.00278819, 0.00278819, 181.12612882], [1517172480000, 0.00277835, 0.00278807, 0.00277834, 0.00278789, 176.91514283], [1517172540000, 0.00277834, 0.00278786, 0.00277834, 0.00277834, 99.37805332], [1517172600000, 0.00277834, 0.00278678, 0.00277834, 0.00278678, 37.72053923], [1517172660000, 0.00278674, 0.00278674, 0.00277834, 0.00278658, 83.90264565], [1517172720000, 0.00278649, 0.00278649, 0.00277834, 0.00278604, 121.27027738], [1517172780000, 0.00278593, 0.0027861, 0.00278585, 0.00278585, 78.48550839], [1517172840000, 0.00278585, 0.00278586, 0.00277834, 0.00277838, 87.59080425], [1517172900000, 0.00277835, 0.00277838, 0.00277834, 0.00277834, 166.32906046], [1517172960000, 0.00277835, 0.00277838, 0.00277834, 0.00277838, 84.92757572], [1517173020000, 0.00277835, 0.00278573, 0.00277835, 0.00277836, 29.08527116], [1517173080000, 0.0027785, 0.0027785, 0.00277835, 0.00277836, 5.97512504], [1517173140000, 0.00277836, 0.0027785, 0.00277836, 0.00277836, 118.93695854], [1517173200000, 0.00277838, 0.0027785, 0.00277838, 0.0027785, 25.83646852], [1517173260000, 0.0027785, 0.0027785, 0.00277838, 0.00277838, 35.45226572], [1517173320000, 0.0027785, 0.00278514, 0.00277838, 0.00278514, 154.25926845], [1517173380000, 0.00277851, 0.00278514, 0.0027785, 0.0027785, 91.28861768], [1517173440000, 0.00278514, 0.00278514, 0.0027785, 0.00278514, 114.89251108], [1517173500000, 0.0027785, 0.00278819, 0.0027785, 0.00278819, 59.86345148], [1517173560000, 0.00278514, 0.0027882, 0.0027785, 0.0027785, 15.95220313], [1517173620000, 0.00277855, 0.00278817, 0.00277851, 0.00278817, 6.40554263], [1517173680000, 0.00278816, 0.00278816, 0.00277854, 0.00277854, 16.15644493], [1517173740000, 0.00277883, 0.00278938, 0.00277854, 0.00278938, 160.10379082], [1517173800000, 0.00278938, 0.00279093, 0.00277883, 0.00279093, 280.25164578], [1517173860000, 0.00279092, 0.00279092, 0.00279092, 0.00279092, 0.49555834], [1517173920000, 0.00279092, 0.00279092, 0.00279092, 0.00279092, 205.55999071], [1517173980000, 0.0027905, 0.0027905, 0.0027905, 0.0027905, 7.57405884], [1517174040000, 0.00279048, 0.0027905, 0.00277885, 0.00277885, 69.42378466], [1517174100000, 0.00277888, 0.00278093, 0.00277885, 0.00278093, 59.17638922], [1517174160000, 0.00277885, 0.00278093, 0.00277885, 0.00278093, 119.83868761], [1517174220000, 0.00278093, 0.00278093, 0.00278093, 0.00278093, 74.30587865], [1517174280000, 0.00278093, 0.00278093, 0.00277885, 0.00278093, 208.0407798], [1517174400000, 0.00278093, 0.00278093, 0.00277887, 0.00277887, 59.13949665], [1517174460000, 0.00277887, 0.00277887, 0.00277885, 0.00277885, 57.53637365], [1517174520000, 0.00277885, 0.00277885, 0.00277885, 0.00277885, 132.86499544], [1517174580000, 0.00277885, 0.00277887, 0.00277885, 0.00277887, 180.00443897], [1517174640000, 0.00277887, 0.00277888, 0.00277887, 0.00277887, 12.28304097], [1517174700000, 0.00277887, 0.00278093, 0.00277886, 0.00277886, 130.83237445], [1517174760000, 0.00277885, 0.00278093, 0.00277834, 0.00277834, 182.52850415], [1517174820000, 0.00278092, 0.00278093, 0.00277836, 0.00278093, 23.95512986], [1517174880000, 0.00278093, 0.00278093, 0.00277836, 0.00278093, 8.328675], [1517174940000, 0.00277836, 0.00277836, 0.00277816, 0.00277833, 156.6018802], [1517175000000, 0.00277816, 0.00278093, 0.00277816, 0.00278093, 54.10750308], [1517175060000, 0.00277816, 0.00278093, 0.00276985, 0.00278093, 50.08431175], [1517175120000, 0.00276985, 0.00278092, 0.00276985, 0.00278092, 10.34665248], [1517175180000, 0.00278093, 0.00278093, 0.00276758, 0.00278093, 109.12310027], [1517175240000, 0.00276985, 0.00278093, 0.00276206, 0.00276206, 178.74897905], [1517175300000, 0.002764, 0.00278093, 0.00276206, 0.00278092, 174.60188931], [1517175360000, 0.00278092, 0.00278092, 0.00276205, 0.00277881, 30.82212953], [1517175420000, 0.00277877, 0.00278088, 0.00276207, 0.00276207, 70.0890643], [1517175480000, 0.00277875, 0.00277875, 0.00276207, 0.00277872, 32.27169273], [1517175540000, 0.00277858, 0.00277858, 0.00277858, 0.00277858, 7.83447022], [1517175600000, 0.00276208, 0.00277856, 0.00276208, 0.00277819, 67.36113848], [1517175660000, 0.00277819, 0.00277819, 0.0027631, 0.002777, 102.48831503], [1517175720000, 0.00277699, 0.00277699, 0.00276311, 0.00277398, 99.34480447], [1517175780000, 0.00276314, 0.00277498, 0.00276314, 0.00276315, 77.4040386], [1517175840000, 0.00276315, 0.00277199, 0.00276314, 0.002765, 109.33120925], [1517175900000, 0.002765, 0.00277192, 0.00276319, 0.00277191, 66.57167745], [1517175960000, 0.00277191, 0.00277191, 0.00276314, 0.00276324, 121.88022058], [1517176020000, 0.00276324, 0.00276325, 0.00276314, 0.00276314, 272.54862012], [1517176080000, 0.00276314, 0.00277185, 0.00276314, 0.00276315, 78.51043988], [1517176140000, 0.00276315, 0.0027647, 0.00276314, 0.00276314, 115.94753899], [1517176200000, 0.00276314, 0.00276392, 0.00276314, 0.00276392, 484.6229696], [1517176260000, 0.00276392, 0.00276392, 0.00276312, 0.00276312, 195.09784852], [1517176320000, 0.00276312, 0.00276313, 0.00276073, 0.00276073, 2121.17943827], [1517176380000, 0.00276073, 0.00276311, 0.00275605, 0.0027588, 144.17690629], [1517176440000, 0.00275605, 0.0027588, 0.00273809, 0.002758, 754.96956802], [1517176500000, 0.00274304, 0.00276073, 0.00274302, 0.002758, 115.28584874], [1517176560000, 0.002758, 0.002758, 0.002758, 0.002758, 2.3858158], [1517176620000, 0.00275798, 0.00275798, 0.00275797, 0.00275797, 74.19394576], [1517176680000, 0.002755, 0.00275797, 0.00273828, 0.00273828, 52.10349969], [1517176740000, 0.00275796, 0.00275796, 0.00273808, 0.00273808, 20.42381186], [1517176800000, 0.00273809, 0.00275784, 0.00273809, 0.00273809, 171.66952371], [1517176860000, 0.00275779, 0.00275779, 0.00273809, 0.00275759, 178.3833443], [1517176920000, 0.00275758, 0.00275758, 0.00273808, 0.00275755, 134.966191], [1517176980000, 0.00275753, 0.00275753, 0.0027379, 0.0027379, 169.34474201], [1517177040000, 0.0027379, 0.0027575, 0.0027379, 0.0027379, 93.69874626], [1517177100000, 0.00275748, 0.00275748, 0.00275424, 0.00275748, 10.12768429], [1517177160000, 0.00275748, 0.00276073, 0.00275748, 0.00276073, 44.71355594], [1517177220000, 0.00275751, 0.00276313, 0.00275424, 0.00276313, 70.3168074], [1517177280000, 0.0027579, 0.00276315, 0.00275759, 0.00276312, 56.67954529], [1517177340000, 0.0027631, 0.00277173, 0.0027631, 0.00277164, 61.97587422], [1517177400000, 0.00277164, 0.00277164, 0.00275769, 0.00277155, 138.10058206], [1517177460000, 0.00277138, 0.00277191, 0.00277138, 0.00277138, 64.1009276], [1517177520000, 0.00277137, 0.00277197, 0.0027579, 0.00277197, 87.33092333], [1517177580000, 0.00277197, 0.002774, 0.00275892, 0.002759, 552.45694642], [1517177640000, 0.00277291, 0.00277498, 0.00276009, 0.00277497, 152.37342753], [1517177700000, 0.0027601, 0.00277597, 0.0027601, 0.00277595, 34.95180815], [1517177760000, 0.00277594, 0.00277594, 0.00273425, 0.00273426, 1270.33204761], [1517177820000, 0.00277594, 0.00277797, 0.00274822, 0.00277797, 367.80077842], [1517177880000, 0.002776, 0.00277871, 0.002775, 0.00277871, 44.90732712], [1517177940000, 0.00277871, 0.00278058, 0.00277871, 0.00278058, 72.51464023], [1517178000000, 0.00278057, 0.00278093, 0.00276073, 0.00278, 690.03221124], [1517178060000, 0.00278, 0.00278093, 0.00276501, 0.00278093, 219.10687409], [1517178120000, 0.00278093, 0.00278093, 0.0027809, 0.00278093, 131.06666936], [1517178180000, 0.00278093, 0.002781, 0.00278093, 0.002781, 37.81889837], [1517178240000, 0.002781, 0.002788, 0.002781, 0.002788, 34.65008899], [1517178300000, 0.002781, 0.0027889, 0.002781, 0.00278101, 14.20954246], [1517178360000, 0.002782, 0.002782, 0.00278101, 0.00278101, 82.07880831], [1517178420000, 0.00278855, 0.00279, 0.00278101, 0.00279, 248.43327216], [1517178480000, 0.002781, 0.00278999, 0.002781, 0.002781, 98.081452], [1517178540000, 0.00279, 0.00279, 0.00278101, 0.00278101, 34.62949675], [1517178600000, 0.00278101, 0.00279, 0.00278101, 0.00278421, 11.81117543], [1517178660000, 0.00278421, 0.00278421, 0.00278102, 0.00278102, 20.75520177], [1517178720000, 0.002784, 0.002784, 0.00278102, 0.00278102, 371.76854001], [1517178780000, 0.00278102, 0.002784, 0.00278101, 0.002784, 24.68633976], [1517178840000, 0.002784, 0.002784, 0.00278101, 0.002784, 18.13400369], [1517178900000, 0.002784, 0.00279, 0.00278102, 0.00278102, 105.14919618], [1517178960000, 0.00278102, 0.00278999, 0.00278102, 0.00278999, 61.12824211], [1517179020000, 0.00278102, 0.00278999, 0.00278102, 0.00278999, 56.08865756], [1517179080000, 0.0027898, 0.00278999, 0.00278101, 0.00278998, 263.92517086], [1517179140000, 0.00278998, 0.00278998, 0.00278101, 0.00278119, 72.01856087], [1517179200000, 0.00278119, 0.00278999, 0.00278119, 0.00278998, 31.50054905], [1517179260000, 0.00278999, 0.00278999, 0.00278102, 0.00278119, 130.39555852], [1517179320000, 0.00278119, 0.0027812, 0.00278, 0.00278119, 186.93796318], [1517179380000, 0.00278, 0.00278997, 0.00275, 0.00275, 258.95399897], [1517179440000, 0.002769, 0.00276901, 0.002769, 0.002769, 39.47262142], [1517179500000, 0.002769, 0.002769, 0.00275411, 0.002769, 90.65623528], [1517179560000, 0.002769, 0.002776, 0.002769, 0.002776, 105.26927956], [1517179620000, 0.002776, 0.002776, 0.002776, 0.002776, 110.48134585], [1517179680000, 0.002776, 0.002776, 0.00277177, 0.00277178, 14.91041298], [1517179740000, 0.00277177, 0.00277178, 0.00277177, 0.00277178, 386.06581045], [1517179800000, 0.00277177, 0.002776, 0.00277177, 0.002776, 32.0465194], [1517179860000, 0.00277178, 0.00277179, 0.00277178, 0.00277178, 37.84065136], [1517179920000, 0.00277178, 0.00277178, 0.00277178, 0.00277178, 173.46941601], [1517179980000, 0.00277178, 0.002776, 0.00277178, 0.00277178, 264.46414846], [1517180040000, 0.00277599, 0.00277599, 0.00277599, 0.00277599, 71.27154744], [1517180100000, 0.00277599, 0.00277992, 0.00277599, 0.002776, 73.66692279], [1517180160000, 0.002776, 0.00277991, 0.002776, 0.002776, 242.20810861], [1517180220000, 0.002776, 0.002776, 0.00277178, 0.00277178, 187.44242967], [1517180280000, 0.00277178, 0.00277587, 0.00274, 0.00277587, 658.76439967], [1517180340000, 0.00276073, 0.00277991, 0.00276073, 0.00277793, 535.86691079], [1517180400000, 0.00276073, 0.00277793, 0.00276073, 0.00277793, 64.27072311], [1517180520000, 0.00276073, 0.00276073, 0.00274997, 0.00276072, 98.85977822], [1517180580000, 0.00275011, 0.00276073, 0.0027501, 0.00276073, 66.21830337], [1517180640000, 0.00276073, 0.00276073, 0.0027502, 0.00276073, 128.22778989], [1517180700000, 0.0027607, 0.00277492, 0.0027607, 0.00277485, 53.41396902], [1517180760000, 0.00277483, 0.00277483, 0.00276073, 0.00276073, 17.20506448], [1517180820000, 0.00277, 0.00277, 0.00275047, 0.00276072, 35.07676795], [1517180880000, 0.002751, 0.0027607, 0.00275044, 0.00275046, 95.07780479], [1517180940000, 0.0027607, 0.00276073, 0.0027607, 0.00276073, 47.74344054], [1517181000000, 0.00275046, 0.00275046, 0.00274001, 0.00274001, 344.16990829], [1517181060000, 0.00275046, 0.00275046, 0.00275043, 0.00275046, 51.03352391], [1517181120000, 0.00275046, 0.00275046, 0.00274006, 0.00275046, 148.13357032], [1517181180000, 0.00275046, 0.00276, 0.00275046, 0.00276, 762.20005303], [1517181240000, 0.00276, 0.00276072, 0.00274101, 0.00276, 299.69153579], [1517181300000, 0.00276, 0.00276073, 0.00276, 0.00276073, 266.18585777], [1517181360000, 0.00276073, 0.00276799, 0.00276, 0.00276073, 42.71006777], [1517181420000, 0.00276, 0.00276798, 0.00276, 0.00276798, 12.28510186], [1517181480000, 0.00276, 0.00276, 0.00276, 0.00276, 39.94007424], [1517181540000, 0.00276, 0.00276495, 0.00276, 0.00276495, 424.41380113], [1517181600000, 0.00276, 0.00276495, 0.00276, 0.0027649, 558.55375434], [1517181660000, 0.00276493, 0.00276493, 0.00276, 0.00276001, 560.96754704], [1517181720000, 0.00276492, 0.00276492, 0.00276, 0.00276, 38.4838597], [1517181780000, 0.00276, 0.00276, 0.00276, 0.00276, 209.31109281], [1517181840000, 0.0027649, 0.0027649, 0.00276, 0.00276, 357.51225689], [1517181900000, 0.00276, 0.00276499, 0.00276, 0.00276499, 41.50572356], [1517182020000, 0.00276001, 0.00276997, 0.00276, 0.002765, 1978.33865182], [1517182080000, 0.002765, 0.00276997, 0.002765, 0.002765, 196.96017187], [1517182140000, 0.002765, 0.002765, 0.00276, 0.00276, 558.48317627], [1517182200000, 0.00276, 0.00276897, 0.00276, 0.00276897, 18.13001217], [1517182260000, 0.00276, 0.00276, 0.00276, 0.00276, 33.93823391], [1517182320000, 0.00276887, 0.00276887, 0.00276887, 0.00276887, 27.44272628], [1517182380000, 0.00276002, 0.00276002, 0.00276001, 0.00276001, 797.6667578], [1517182440000, 0.00276, 0.00276002, 0.002747, 0.00275, 851.55998413], [1517182500000, 0.00275009, 0.00275009, 0.00275009, 0.00275009, 0.36271903], [1517182560000, 0.00275009, 0.00276002, 0.00275009, 0.0027525, 14.7213031], [1517182620000, 0.0027525, 0.00276, 0.0027525, 0.0027599, 33.51359671], [1517182680000, 0.00275991, 0.00277483, 0.002755, 0.00277483, 155.18975255], [1517182740000, 0.002755, 0.00277474, 0.002755, 0.00276, 44.12978493], [1517182800000, 0.00276001, 0.00277286, 0.00276001, 0.00277268, 29.86203576], [1517182860000, 0.00277239, 0.00277239, 0.002755, 0.00275501, 394.66332827], [1517182920000, 0.00275509, 0.00275509, 0.00275501, 0.00275501, 518.84309758], [1517182980000, 0.00275501, 0.00275501, 0.00275012, 0.00275012, 1383.99971997], [1517183040000, 0.00275011, 0.00275012, 0.00275, 0.00275012, 594.44713809], [1517183100000, 0.00275, 0.00275012, 0.00274557, 0.002749, 920.25622995], [1517183160000, 0.002749, 0.00274999, 0.00274555, 0.00274555, 64.56717566], [1517183220000, 0.00274999, 0.00274999, 0.002747, 0.0027498, 160.07336244], [1517183280000, 0.002749, 0.002749, 0.00274101, 0.002749, 1440.71738041], [1517183340000, 0.002749, 0.002749, 0.00274, 0.00274109, 298.18863703], [1517183400000, 0.00274109, 0.00274109, 0.00274, 0.00274109, 183.38555115], [1517183460000, 0.00274109, 0.00274109, 0.00274, 0.00274, 1361.84486267], [1517183520000, 0.00274793, 0.00274793, 0.00274692, 0.00274692, 36.2814507], [1517183580000, 0.0027479, 0.0027479, 0.00274692, 0.0027479, 153.40899501], [1517183640000, 0.0027475, 0.0027479, 0.0027411, 0.0027411, 264.2536845], [1517183700000, 0.0027411, 0.00274899, 0.0027411, 0.0027477, 330.46434098], [1517183760000, 0.00274899, 0.00274899, 0.0027411, 0.00274885, 64.61619307], [1517183820000, 0.00274885, 0.00274885, 0.00273869, 0.00274884, 254.80266513], [1517183880000, 0.00273869, 0.00274879, 0.00273288, 0.002733, 609.34126209], [1517183940000, 0.002733, 0.002733, 0.00273268, 0.002733, 149.99106186], [1517184000000, 0.00274632, 0.00274874, 0.002733, 0.00274873, 49.73125815], [1517184060000, 0.00274874, 0.00277102, 0.00274633, 0.00275716, 4089.293825], [1517184120000, 0.00275716, 0.00277102, 0.00274885, 0.002771, 428.46612336], [1517184180000, 0.00276073, 0.002773, 0.00276072, 0.00276072, 745.81188084], [1517184240000, 0.00276072, 0.002771, 0.00275248, 0.00275254, 1761.84855619], [1517184300000, 0.002771, 0.00277597, 0.002771, 0.00277482, 483.64143126], [1517184360000, 0.00277482, 0.00278, 0.00275255, 0.00275261, 1262.45867276], [1517184420000, 0.00276791, 0.00278399, 0.00276073, 0.00276075, 619.8810307], [1517184480000, 0.00276791, 0.00276796, 0.00276791, 0.00276791, 98.8713801], [1517184540000, 0.00278073, 0.00278996, 0.00276791, 0.00278996, 195.40529581], [1517184600000, 0.00278075, 0.00279, 0.00276081, 0.00276081, 571.70189294], [1517184660000, 0.002787, 0.002787, 0.00276129, 0.00276129, 158.23697173], [1517184720000, 0.00277006, 0.00278699, 0.00276132, 0.00278697, 102.50210793], [1517184780000, 0.00278697, 0.00278697, 0.00278696, 0.00278697, 26.13449815], [1517184840000, 0.002787, 0.002787, 0.00278696, 0.00278696, 114.25431462], [1517184900000, 0.002787, 0.00279093, 0.002787, 0.00278701, 128.70124102], [1517184960000, 0.00279093, 0.00279093, 0.00278701, 0.00278701, 105.24555661], [1517185020000, 0.00279092, 0.00279093, 0.00278701, 0.00278701, 735.31612218], [1517185080000, 0.00278701, 0.00278701, 0.00278701, 0.00278701, 40.48286433], [1517185140000, 0.00279105, 0.00279515, 0.00278696, 0.00278696, 1616.03405777], [1517185200000, 0.00277201, 0.00279883, 0.00276903, 0.00279877, 964.23529123], [1517185260000, 0.00279875, 0.00279876, 0.00277215, 0.00277215, 353.52147214], [1517185320000, 0.00277222, 0.00277222, 0.00277215, 0.00277218, 383.62807056], [1517185380000, 0.00279385, 0.00279386, 0.00278, 0.00278, 343.94986122], [1517185440000, 0.00278, 0.00278, 0.00278, 0.00278, 762.51556458], [1517185500000, 0.00278001, 0.0027936, 0.00278, 0.00279072, 819.68051692], [1517185560000, 0.00279072, 0.00279355, 0.002778, 0.00279337, 21.24771474], [1517185680000, 0.00279303, 0.00279303, 0.00277211, 0.00277211, 41.27046453], [1517185740000, 0.00277211, 0.002785, 0.00277211, 0.00277352, 46.17099508], [1517185800000, 0.00279093, 0.00279093, 0.00277351, 0.00277352, 235.77607676], [1517185860000, 0.00277352, 0.00277352, 0.00277351, 0.00277351, 129.60617445], [1517185920000, 0.0027735, 0.00277352, 0.00277211, 0.00277351, 45.36066492], [1517185980000, 0.00277351, 0.00277352, 0.00277351, 0.00277351, 1046.03779373], [1517186040000, 0.00277352, 0.00277352, 0.00276604, 0.00276605, 469.38593394], [1517186100000, 0.00276604, 0.00277352, 0.00276604, 0.00277352, 429.2306715], [1517186160000, 0.00276604, 0.00277351, 0.00276603, 0.00277351, 351.82585186], [1517186220000, 0.00276604, 0.00276604, 0.00276603, 0.00276604, 24.95464632], [1517186280000, 0.00276604, 0.00277352, 0.00276603, 0.00277352, 972.60355604], [1517186400000, 0.00277351, 0.00277351, 0.00277351, 0.00277351, 19.92127821], [1517186460000, 0.00276606, 0.00276606, 0.00276605, 0.00276606, 94.82640961], [1517186520000, 0.00276606, 0.00276883, 0.00276606, 0.00276883, 6.13095143], [1517186580000, 0.00276883, 0.00276883, 0.00276607, 0.00276608, 200.05355898], [1517186640000, 0.00276883, 0.00277351, 0.00276609, 0.00277351, 8.55524128], [1517186700000, 0.0027661, 0.00277352, 0.0027661, 0.00277352, 543.31135567], [1517186760000, 0.00277352, 0.00277352, 0.00276608, 0.00276616, 117.92928039], [1517186820000, 0.00276616, 0.00276616, 0.00276608, 0.00276608, 46.42834217], [1517186880000, 0.00276616, 0.00276616, 0.00276615, 0.00276615, 3.73103852], [1517186940000, 0.00276616, 0.00276616, 0.00276616, 0.00276616, 155.81348307], [1517187000000, 0.00276616, 0.00277352, 0.00276616, 0.00276616, 102.33762021], [1517187060000, 0.00276615, 0.00276615, 0.00276073, 0.00276615, 250.04064841], [1517187120000, 0.002763, 0.00276614, 0.00276073, 0.00276075, 131.25373222], [1517187180000, 0.00276075, 0.00276075, 0.00275408, 0.00275408, 318.13448308], [1517187240000, 0.00275407, 0.00276072, 0.00275, 0.002753, 589.64406054], [1517187300000, 0.002753, 0.002753, 0.00274634, 0.00274634, 146.09959943], [1517187360000, 0.00274901, 0.002753, 0.00273901, 0.002745, 1402.80232393], [1517187420000, 0.002745, 0.00275149, 0.00273903, 0.002745, 1103.63585247], [1517187480000, 0.002745, 0.002745, 0.002745, 0.002745, 552.80205301], [1517187540000, 0.002745, 0.002745, 0.00274014, 0.002745, 1340.13551781], [1517187600000, 0.002745, 0.002745, 0.00274016, 0.002745, 40.45809778], [1517187660000, 0.002745, 0.002745, 0.00274015, 0.002745, 386.92088035], [1517187720000, 0.00274019, 0.00274499, 0.00274019, 0.00274499, 72.5978983], [1517187780000, 0.00274499, 0.00274499, 0.0027447, 0.00274499, 16.40635097], [1517187840000, 0.00274499, 0.0027487, 0.0027404, 0.0027487, 26.37306258], [1517187900000, 0.0027487, 0.0027487, 0.0027487, 0.0027487, 0.68465092], [1517187960000, 0.00274101, 0.0027487, 0.00274101, 0.0027487, 116.89578837], [1517188020000, 0.0027487, 0.0027487, 0.00274405, 0.00274405, 149.58261598], [1517188080000, 0.00274405, 0.0027487, 0.00274405, 0.0027487, 64.12193401], [1517188140000, 0.0027487, 0.0027487, 0.0027487, 0.0027487, 397.4809767], [1517188200000, 0.0027487, 0.0027487, 0.0027487, 0.0027487, 29.87223757], [1517188260000, 0.0027487, 0.0027487, 0.00274868, 0.00274868, 24.2780409], [1517188320000, 0.00274868, 0.00274868, 0.00274404, 0.00274404, 76.59820616], [1517188380000, 0.00274393, 0.0027487, 0.00270521, 0.0027487, 10145.37168705], [1517188440000, 0.0027487, 0.00275299, 0.00273053, 0.00273053, 85.9859168], [1517188500000, 0.002731, 0.00274555, 0.00273065, 0.002741, 416.83301488], [1517188560000, 0.002741, 0.002741, 0.002734, 0.00273401, 85.50763879], [1517188620000, 0.002741, 0.002741, 0.00273401, 0.00274099, 168.42038347], [1517188680000, 0.00273973, 0.00274099, 0.00273406, 0.00274099, 56.2927088], [1517188740000, 0.00274098, 0.00274099, 0.00273391, 0.00274099, 1049.74031662], [1517188800000, 0.00274096, 0.00274096, 0.00274, 0.00274, 48.31830565], [1517188860000, 0.00273999, 0.00274097, 0.00273999, 0.00274097, 1721.36535258], [1517188920000, 0.00274, 0.00274, 0.00273695, 0.00274, 3.957559], [1517188980000, 0.00274, 0.00274, 0.00273392, 0.00273392, 216.40285635], [1517189040000, 0.00274, 0.00274, 0.00273393, 0.00273393, 77.87737972], [1517189100000, 0.00273394, 0.00274097, 0.00273394, 0.00274097, 2097.06452695], [1517189160000, 0.00274097, 0.00274097, 0.00271792, 0.00271929, 1475.03154951], [1517189220000, 0.00273067, 0.00274097, 0.00272562, 0.00272564, 2112.69329972], [1517189280000, 0.00272564, 0.00274086, 0.00271811, 0.00273494, 1551.21981072], [1517189340000, 0.00273494, 0.00273495, 0.00272008, 0.00272008, 244.00508747], [1517189400000, 0.00272554, 0.00272554, 0.002718, 0.00271801, 437.52995002], [1517189460000, 0.00273001, 0.0027337, 0.00271801, 0.0027335, 1088.99453852], [1517189520000, 0.00273348, 0.0027335, 0.00272554, 0.00272554, 161.02874092], [1517189580000, 0.00272554, 0.00272554, 0.00272554, 0.00272554, 84.43908702], [1517189640000, 0.00272555, 0.0027333, 0.00272554, 0.00272561, 1083.31270176], [1517189700000, 0.00273329, 0.0027333, 0.00273329, 0.0027333, 65.70149925], [1517189760000, 0.00273326, 0.00273326, 0.00273326, 0.00273326, 0.36586347], [1517189820000, 0.00273325, 0.0027333, 0.00273325, 0.00273329, 98.79020134], [1517189880000, 0.00273325, 0.00273325, 0.00272563, 0.00273225, 247.25235854], [1517189940000, 0.00272573, 0.00273225, 0.00272563, 0.00272573, 74.74372928], [1517190000000, 0.00272573, 0.0027335, 0.00272561, 0.00272562, 1661.28813366], [1517190060000, 0.00272562, 0.00272562, 0.00272237, 0.00272237, 1200.04763081], [1517190120000, 0.00272237, 0.002741, 0.00272234, 0.00274, 980.87771006], [1517190180000, 0.00274, 0.00274541, 0.0027193, 0.00272237, 172.62229034], [1517190240000, 0.00272237, 0.00272509, 0.00271929, 0.00272236, 60.8426734], [1517190300000, 0.00272236, 0.00273944, 0.00271929, 0.00272566, 49.6466122], [1517190360000, 0.00273959, 0.00273959, 0.00272836, 0.00272836, 40.18755525], [1517190420000, 0.00272836, 0.00273928, 0.00272836, 0.00272836, 55.10411357], [1517190480000, 0.002735, 0.002735, 0.002735, 0.002735, 6.75132431], [1517190540000, 0.00273798, 0.00273798, 0.00272838, 0.00273, 11.94220344], [1517190600000, 0.00273797, 0.00273929, 0.00273797, 0.00273929, 50.80221857], [1517190660000, 0.00273929, 0.00273929, 0.00273929, 0.00273929, 2.23247886], [1517190720000, 0.00273929, 0.00273929, 0.00272836, 0.00272836, 33.40797335], [1517190780000, 0.00273001, 0.00273929, 0.00272836, 0.00273929, 121.97799645], [1517190840000, 0.00273929, 0.00273929, 0.00272836, 0.00273, 59.39092167], [1517190900000, 0.00273, 0.00273, 0.00272836, 0.00272999, 136.40409016], [1517190960000, 0.00272999, 0.00272999, 0.00272836, 0.00272999, 33.05839199], [1517191020000, 0.00272999, 0.00272999, 0.00272999, 0.00272999, 524.8144913], [1517191080000, 0.00272999, 0.00272999, 0.00272301, 0.0027295, 1264.69958357], [1517191140000, 0.0027295, 0.002739, 0.00272404, 0.00272404, 106.41986132], [1517191200000, 0.002739, 0.002739, 0.00272415, 0.002739, 119.22398377], [1517191320000, 0.00272506, 0.002735, 0.00272506, 0.002735, 856.96868547], [1517191380000, 0.002735, 0.002739, 0.00272752, 0.00272752, 239.71900029], [1517191440000, 0.00273, 0.00273935, 0.00272755, 0.00273935, 41.10082599], [1517191500000, 0.00273935, 0.00273959, 0.00272238, 0.00272404, 197.36671589], [1517191560000, 0.00272404, 0.00272405, 0.00272404, 0.00272405, 19.96768071], [1517191680000, 0.00273958, 0.00273958, 0.00273958, 0.00273958, 4.45824461], [1517191800000, 0.00272409, 0.00273956, 0.00272409, 0.00273956, 63.85693412], [1517191860000, 0.00273956, 0.00273956, 0.00273956, 0.00273956, 22.24101148], [1517191920000, 0.0027387, 0.00273956, 0.0027387, 0.00273956, 19.41028082], [1517191980000, 0.0027395, 0.0027395, 0.00272411, 0.0027395, 2.65142543], [1517192040000, 0.0027395, 0.0027395, 0.0027395, 0.0027395, 0.74857457], [1517192100000, 0.00273956, 0.00273958, 0.0027395, 0.00273958, 181.03022043], [1517192160000, 0.00273956, 0.00273958, 0.00272701, 0.00273956, 19.57458644], [1517192220000, 0.00273956, 0.00273958, 0.00273956, 0.00273958, 475.97213459], [1517192280000, 0.00272407, 0.00273958, 0.00272407, 0.00273958, 521.13272097], [1517192340000, 0.00273958, 0.00273958, 0.00273958, 0.00273958, 219.88737047], [1517192400000, 0.00272451, 0.00273959, 0.00272451, 0.00273958, 40.98938011], [1517192460000, 0.00273958, 0.00273958, 0.00273958, 0.00273958, 67.09300332], [1517192520000, 0.00273958, 0.00274555, 0.00272822, 0.00274555, 127.4945031], [1517192580000, 0.00274553, 0.00274555, 0.00274553, 0.00274555, 15.03355304], [1517192640000, 0.00274555, 0.00274555, 0.00274553, 0.00274553, 7.76811005], [1517192700000, 0.00274555, 0.00274555, 0.00274551, 0.00274551, 28.65937439], [1517192760000, 0.00274551, 0.00275, 0.00273243, 0.00275, 24.89136687], [1517192820000, 0.00274999, 0.00274999, 0.0027326, 0.00274999, 254.38417768], [1517192880000, 0.00275, 0.0027573, 0.00273274, 0.0027573, 219.78587164], [1517192940000, 0.00275, 0.00275, 0.00273277, 0.00273301, 188.09961856], [1517193000000, 0.00273301, 0.00273301, 0.00273301, 0.00273301, 177.50920103], [1517193060000, 0.00273301, 0.00273301, 0.00273301, 0.00273301, 99.77239793], [1517193120000, 0.00273301, 0.00273301, 0.00273274, 0.00273274, 293.29942906], [1517193180000, 0.00273277, 0.00273277, 0.00273277, 0.00273277, 51.36071989], [1517193240000, 0.00273277, 0.00273277, 0.00273274, 0.00273274, 110.73333036], [1517193300000, 0.00273277, 0.00273277, 0.00273277, 0.00273277, 67.14892641], [1517193420000, 0.00273275, 0.00273275, 0.00273275, 0.00273275, 0.58780529], [1517193480000, 0.00273275, 0.00273275, 0.00273259, 0.00273259, 3.18895112], [1517193540000, 0.00273259, 0.00273274, 0.00273259, 0.00273259, 18.60094696], [1517193600000, 0.00273259, 0.00273278, 0.00273046, 0.00273278, 134.50173892], [1517193660000, 0.00273278, 0.00273278, 0.00273259, 0.00273278, 316.61754945], [1517193720000, 0.00273278, 0.00273278, 0.00273278, 0.00273278, 264.13656865], [1517193780000, 0.00273278, 0.00273278, 0.00273047, 0.00273048, 231.10724544], [1517193840000, 0.00273278, 0.00273278, 0.00273047, 0.00273278, 118.06774805], [1517193900000, 0.00273048, 0.00273278, 0.00273048, 0.00273278, 410.16664934], [1517193960000, 0.00273278, 0.00274998, 0.002731, 0.002735, 81.20584823], [1517194020000, 0.002735, 0.00275728, 0.002735, 0.00273501, 1147.42822773], [1517194080000, 0.00273501, 0.00273501, 0.00273501, 0.00273501, 63.68997492], [1517194140000, 0.00273501, 0.00275, 0.002735, 0.002735, 45.99044308], [1517194260000, 0.00273501, 0.00273501, 0.00273501, 0.00273501, 0.69707904], [1517194320000, 0.00273501, 0.00273501, 0.00273048, 0.00273048, 58.10126831], [1517194380000, 0.0027305, 0.0027305, 0.00273049, 0.00273049, 41.37047779], [1517194440000, 0.00273049, 0.002734, 0.00273049, 0.002734, 49.97957494], [1517194500000, 0.00273399, 0.00273399, 0.00273399, 0.00273399, 179.41359887], [1517194560000, 0.00273398, 0.00273398, 0.00273398, 0.00273398, 40.0], [1517194620000, 0.00273399, 0.00273399, 0.00273398, 0.00273398, 276.02121949], [1517194680000, 0.00273398, 0.00273398, 0.00273055, 0.00273055, 15.90961656], [1517194740000, 0.00273057, 0.00273399, 0.00273057, 0.00273399, 27.74528157], [1517194800000, 0.00273398, 0.00273399, 0.00273398, 0.00273399, 1900.68479203], [1517194860000, 0.00273399, 0.00273399, 0.00273399, 0.00273399, 28.32478944], [1517194920000, 0.00273399, 0.00273399, 0.00273066, 0.00273398, 62.04255692], [1517194980000, 0.00273398, 0.00273398, 0.00273398, 0.00273398, 18.75098894], [1517195040000, 0.00273398, 0.00273398, 0.00273397, 0.00273398, 115.00847269], [1517195100000, 0.00273399, 0.002734, 0.00273399, 0.00273399, 125.60114374], [1517195160000, 0.00273399, 0.002734, 0.00273399, 0.002734, 186.98702973], [1517195220000, 0.002734, 0.00275692, 0.002734, 0.00275692, 28.50194645], [1517195280000, 0.00273402, 0.00273402, 0.00273402, 0.00273402, 0.23182677], [1517195340000, 0.0027343, 0.0027343, 0.0027343, 0.0027343, 22.364], [1517195400000, 0.00273405, 0.00275099, 0.00273405, 0.00275099, 42.03253074], [1517195460000, 0.00275, 0.00275, 0.00275, 0.00275, 9.07319234], [1517195520000, 0.00275099, 0.00275099, 0.00275, 0.00275097, 14.83886535], [1517195580000, 0.00275097, 0.00275097, 0.00275095, 0.00275097, 84.9911811], [1517195640000, 0.00275097, 0.00275097, 0.00275096, 0.00275096, 6.28923659], [1517195700000, 0.00273403, 0.00275096, 0.00273403, 0.00273403, 120.23603236], [1517195760000, 0.00274515, 0.00274515, 0.00273403, 0.00273403, 151.8612462], [1517195820000, 0.00274515, 0.00274515, 0.00274515, 0.00274515, 383.5351958], [1517195880000, 0.00274515, 0.00274515, 0.0027341, 0.0027341, 11.43250075], [1517195940000, 0.00273421, 0.00275, 0.00273412, 0.00275, 525.55793275], [1517196000000, 0.00275, 0.00275, 0.00273412, 0.00273412, 546.73792769], [1517196060000, 0.00273413, 0.00273413, 0.00273403, 0.00273403, 288.81042096], [1517196120000, 0.00273403, 0.00273403, 0.00273403, 0.00273403, 92.8051], [1517196180000, 0.00273403, 0.0027341, 0.00273403, 0.00273403, 138.52610732], [1517196240000, 0.0027341, 0.00273808, 0.0027341, 0.00273808, 158.88843314], [1517196300000, 0.00273808, 0.00273808, 0.00273403, 0.00273404, 674.79510579], [1517196360000, 0.00273808, 0.00273808, 0.00273404, 0.00273404, 101.0969783], [1517196420000, 0.00273409, 0.00273808, 0.00273409, 0.00273409, 27.11083143], [1517196480000, 0.00273409, 0.00273409, 0.00273409, 0.00273409, 5.0], [1517196540000, 0.0027341, 0.00273808, 0.0027341, 0.00273808, 78.31880726], [1517196600000, 0.00273809, 0.00274895, 0.00273808, 0.00273809, 164.1604623], [1517196660000, 0.00274894, 0.00274895, 0.00273809, 0.00273809, 54.86213174], [1517196720000, 0.00273819, 0.00273822, 0.00273819, 0.00273819, 252.9827702], [1517196780000, 0.0027382, 0.00274999, 0.00273819, 0.00274999, 120.20785748], [1517196840000, 0.00274993, 0.00274999, 0.0027382, 0.0027382, 114.14758393], [1517196900000, 0.0027382, 0.00274973, 0.0027382, 0.0027385, 61.80113503], [1517196960000, 0.0027382, 0.0027385, 0.00273819, 0.00273819, 14.54634318], [1517197020000, 0.00273819, 0.0027385, 0.00273819, 0.0027385, 8.99395594], [1517197080000, 0.0027385, 0.0027385, 0.00273819, 0.00273819, 54.42193785], [1517197140000, 0.00273819, 0.00273819, 0.002738, 0.002738, 180.47350502], [1517197200000, 0.0027341, 0.002738, 0.0027341, 0.0027341, 141.29674919], [1517197260000, 0.00273409, 0.00273409, 0.00273047, 0.00273047, 14.6141457], [1517197320000, 0.00273045, 0.00273045, 0.00273045, 0.00273045, 106.78480329], [1517197380000, 0.00273001, 0.00273001, 0.00273, 0.00273, 8.39210755], [1517197440000, 0.00273, 0.00273, 0.00272515, 0.00272515, 16.34909272], [1517197500000, 0.00272515, 0.00272515, 0.00272515, 0.00272515, 242.79955031], [1517197560000, 0.00272515, 0.00272529, 0.00272515, 0.00272515, 51.2509641], [1517197620000, 0.00272515, 0.00272515, 0.00272511, 0.00272511, 25.39847099], [1517197680000, 0.00272511, 0.00272515, 0.0027251, 0.0027251, 150.95955977], [1517197740000, 0.00272512, 0.00272515, 0.0027251, 0.0027251, 38.19307596], [1517197800000, 0.00272511, 0.00272514, 0.00272511, 0.00272514, 13.80077476], [1517197860000, 0.00272514, 0.00273, 0.0027251, 0.0027251, 671.10162083], [1517197920000, 0.00272519, 0.00272519, 0.00272519, 0.00272519, 1.0], [1517197980000, 0.00272522, 0.00272522, 0.00272522, 0.00272522, 2.17019856], [1517198040000, 0.00273, 0.00273, 0.00273, 0.00273, 79.12275027], [1517198100000, 0.00273, 0.00273047, 0.00273, 0.00273047, 38.81928966], [1517198160000, 0.00273047, 0.00274396, 0.00273047, 0.00274396, 98.3745077], [1517198220000, 0.00274, 0.00274, 0.00273061, 0.00273061, 34.32593699], [1517198280000, 0.00274, 0.00274, 0.00273062, 0.00274, 120.70807031], [1517198340000, 0.002735, 0.00274, 0.002735, 0.002735, 22.92678293], [1517198400000, 0.002735, 0.00273999, 0.002735, 0.00273999, 7.89522238], [1517198460000, 0.00273064, 0.00273999, 0.00273064, 0.002738, 65.84432193], [1517198520000, 0.00273999, 0.00273999, 0.002738, 0.002738, 150.1231785], [1517198580000, 0.002738, 0.00273969, 0.00273065, 0.00273065, 257.32752767], [1517198640000, 0.00273065, 0.00273959, 0.00273065, 0.00273066, 18.5171416], [1517198700000, 0.00273066, 0.00273999, 0.00273066, 0.00273066, 8.10698027], [1517198760000, 0.0027397, 0.00273999, 0.00273066, 0.00273066, 119.49483011], [1517198820000, 0.00273067, 0.00273067, 0.00273067, 0.00273067, 0.97122951], [1517198880000, 0.00273066, 0.00273066, 0.00273066, 0.00273066, 0.80749708], [1517198940000, 0.00273066, 0.00273066, 0.00273066, 0.00273066, 1.19817522], [1517199000000, 0.00273066, 0.00273995, 0.00273066, 0.00273066, 302.43537903], [1517199060000, 0.00273066, 0.00273067, 0.00273066, 0.00273067, 0.80749561], [1517199120000, 0.00273067, 0.00273067, 0.00273065, 0.00273067, 58.95430587], [1517199180000, 0.00273065, 0.00273066, 0.00273065, 0.00273066, 5.21615124], [1517199240000, 0.00273066, 0.00273066, 0.00273066, 0.00273066, 20.81956451], [1517199300000, 0.00273065, 0.00273066, 0.00273065, 0.00273065, 43.15122003], [1517199360000, 0.00273066, 0.00273066, 0.00273065, 0.00273065, 79.30033012], [1517199420000, 0.00273065, 0.00273065, 0.00273065, 0.00273065, 152.8512764], [1517199480000, 0.00273066, 0.00273066, 0.00273065, 0.00273065, 48.14631787], [1517199540000, 0.00273065, 0.00273066, 0.00273065, 0.00273066, 41.66071738], [1517199600000, 0.00273995, 0.00273995, 0.00273066, 0.00273995, 30.1272928], [1517199660000, 0.00273995, 0.00274405, 0.002725, 0.002725, 660.07169049], [1517199720000, 0.002725, 0.002725, 0.002725, 0.002725, 67.975687], [1517199780000, 0.00272502, 0.00272502, 0.00272501, 0.00272501, 23.39804248], [1517199840000, 0.00274103, 0.00274797, 0.00274103, 0.00274797, 195.05401628], [1517199900000, 0.00273045, 0.00274102, 0.00273045, 0.00274102, 40.13623201], [1517199960000, 0.00273051, 0.002741, 0.00273051, 0.002741, 3.76900753], [1517200020000, 0.002741, 0.002741, 0.002735, 0.002735, 32.29531817], [1517200080000, 0.00273055, 0.00273055, 0.00273055, 0.00273055, 95.74603098], [1517200200000, 0.00273782, 0.00273782, 0.00273057, 0.00273782, 32.28974005], [1517200260000, 0.00273057, 0.00273057, 0.00273057, 0.00273057, 118.94465619], [1517200320000, 0.00273782, 0.00273782, 0.00273782, 0.00273782, 3.10754004], [1517200380000, 0.00273782, 0.002741, 0.00273782, 0.002741, 65.58345306], [1517200440000, 0.00273783, 0.00274098, 0.0027306, 0.0027306, 10.12739092], [1517200500000, 0.00274096, 0.00274098, 0.0027306, 0.00274097, 31.38921507], [1517200560000, 0.00273062, 0.00273062, 0.00273062, 0.00273062, 5.0], [1517200620000, 0.00273062, 0.00274093, 0.00272501, 0.0027409, 900.30298934], [1517200680000, 0.00272501, 0.00274094, 0.00272501, 0.00274094, 348.61497053], [1517200740000, 0.00274094, 0.00274103, 0.0027382, 0.00274103, 219.20209326], [1517200800000, 0.00274103, 0.00274536, 0.00274103, 0.00274535, 98.81550928], [1517200860000, 0.00274534, 0.00274534, 0.00272502, 0.00274534, 155.92735885], [1517200920000, 0.00274533, 0.00274536, 0.00274532, 0.00274536, 409.1019825], [1517200980000, 0.00274536, 0.00274536, 0.00272504, 0.00274535, 1179.96742002], [1517201040000, 0.00273002, 0.00274794, 0.00273002, 0.00274794, 184.80957659], [1517201100000, 0.00274794, 0.00275986, 0.00273086, 0.00275098, 2480.46383264], [1517201160000, 0.00275098, 0.00275985, 0.00273723, 0.00274823, 2255.93944003], [1517201220000, 0.0027359, 0.00275538, 0.0027359, 0.00275538, 1879.8922619], [1517201280000, 0.00275534, 0.0027989, 0.00273704, 0.00275538, 11257.53127467], [1517201340000, 0.00276312, 0.00277797, 0.00276073, 0.00276312, 102.96651193], [1517201400000, 0.00276312, 0.00277746, 0.0027588, 0.00277736, 119.85818648], [1517201460000, 0.00276312, 0.00277599, 0.002761, 0.002761, 135.6351555], [1517201520000, 0.002761, 0.002765, 0.002761, 0.002765, 48.92413385], [1517201580000, 0.002765, 0.002765, 0.002761, 0.002765, 53.12768105], [1517201640000, 0.002765, 0.002765, 0.002765, 0.002765, 29.23862961], [1517201700000, 0.002765, 0.00277495, 0.002765, 0.002765, 24.60369669], [1517201760000, 0.002765, 0.0027749, 0.002765, 0.00276501, 46.72094601], [1517201820000, 0.00276501, 0.00276504, 0.00276501, 0.00276504, 33.04346548], [1517201880000, 0.00276501, 0.00277495, 0.00276501, 0.00277495, 97.5540333], [1517201940000, 0.00276504, 0.00277495, 0.00276504, 0.00277495, 210.90623305], [1517202000000, 0.00277495, 0.002776, 0.00277495, 0.002776, 57.79988392], [1517202060000, 0.00277496, 0.00277597, 0.00277496, 0.00277496, 55.0615346], [1517202120000, 0.00277496, 0.00277596, 0.00277496, 0.00277595, 94.27595594], [1517202180000, 0.00277595, 0.00277595, 0.00276504, 0.00276504, 183.69230043], [1517202240000, 0.00276504, 0.00277444, 0.00276504, 0.00277433, 27.61326008], [1517202300000, 0.00276504, 0.00276504, 0.002765, 0.002765, 174.13557095], [1517202360000, 0.002765, 0.00277594, 0.002765, 0.00276504, 267.84213382], [1517202420000, 0.0027759, 0.0027759, 0.00276504, 0.00276504, 3.41504602], [1517202480000, 0.00276865, 0.00277579, 0.00276504, 0.00276504, 514.02365891], [1517202540000, 0.00276504, 0.00276505, 0.002765, 0.002765, 269.79165123], [1517202600000, 0.002765, 0.00276997, 0.002765, 0.002765, 407.93526108], [1517202660000, 0.00276501, 0.00276994, 0.00276501, 0.00276503, 6.27604253], [1517202720000, 0.00276503, 0.00276503, 0.00276503, 0.00276503, 0.7974597], [1517202780000, 0.00276503, 0.00276992, 0.00276503, 0.00276992, 2.11097756], [1517202840000, 0.00276504, 0.00276504, 0.002765, 0.002765, 558.36845712], [1517202900000, 0.002765, 0.002765, 0.00276, 0.0027605, 102.22689321], [1517202960000, 0.00276, 0.0027605, 0.00276, 0.0027604, 16.79238895], [1517203020000, 0.00276, 0.00276995, 0.00276, 0.0027604, 96.32298566], [1517203080000, 0.0027604, 0.00276986, 0.00276, 0.00276986, 506.89686002], [1517203140000, 0.002761, 0.002761, 0.002761, 0.002761, 0.39931184], [1517203200000, 0.00276101, 0.00276968, 0.00276101, 0.00276101, 9.02518312], [1517203260000, 0.00276101, 0.00276101, 0.00276, 0.00276, 9.26471643], [1517203320000, 0.002768, 0.002768, 0.00276, 0.00276787, 75.22732357], [1517203380000, 0.00276783, 0.00276784, 0.00276, 0.00276, 14.26913395], [1517203440000, 0.00276, 0.0027677, 0.00276, 0.00276, 38.25821304], [1517203500000, 0.0027645, 0.00276769, 0.00274556, 0.00275055, 804.17686159], [1517203560000, 0.00274556, 0.00275055, 0.00274555, 0.00275055, 35.96818942], [1517203620000, 0.00274555, 0.00274556, 0.00273745, 0.00274556, 104.64922542], [1517203680000, 0.00273747, 0.00274556, 0.00273746, 0.00274556, 609.44433096], [1517203740000, 0.00274556, 0.00274556, 0.00274556, 0.00274556, 3.24974182], [1517203800000, 0.00274556, 0.00274556, 0.00274556, 0.00274556, 1.80456852], [1517203860000, 0.00274556, 0.00275055, 0.00274556, 0.00274556, 913.90387429], [1517203920000, 0.00274556, 0.002746, 0.00274556, 0.002746, 11.97395], [1517203980000, 0.002746, 0.002746, 0.00274556, 0.00274556, 50.51274808], [1517204040000, 0.0027505, 0.00275053, 0.00274557, 0.00274557, 101.10041798], [1517204100000, 0.00274557, 0.00274558, 0.00274557, 0.00274557, 72.03474186], [1517204160000, 0.00274558, 0.00274996, 0.00274558, 0.00274558, 16.20677088], [1517204220000, 0.00274558, 0.00275055, 0.00274558, 0.00275055, 63.8103318], [1517204280000, 0.00274557, 0.00274557, 0.00274557, 0.00274557, 30.80311046], [1517204340000, 0.00274993, 0.00275699, 0.00274557, 0.00274557, 1951.33688168], [1517204400000, 0.00275898, 0.00276072, 0.00275898, 0.00276072, 6.12224247], [1517204460000, 0.002748, 0.00276071, 0.002748, 0.002748, 59.74887367], [1517204520000, 0.00275993, 0.00275993, 0.002748, 0.00275086, 20.31185269], [1517204580000, 0.0027599, 0.00275991, 0.002748, 0.002748, 49.22795027], [1517204640000, 0.00274801, 0.00274801, 0.002748, 0.00274801, 131.18889799], [1517204700000, 0.00274801, 0.00274801, 0.00274801, 0.00274801, 89.8422823], [1517204760000, 0.00274801, 0.00274801, 0.00274801, 0.00274801, 0.80239882], [1517204820000, 0.00274802, 0.00274802, 0.00274801, 0.00274801, 80.32416512], [1517204880000, 0.00274801, 0.002749, 0.00274801, 0.00274801, 25.09538342], [1517204940000, 0.00274801, 0.002749, 0.00274801, 0.00274801, 1.17284102], [1517205000000, 0.002749, 0.002749, 0.00274801, 0.00274801, 8.25275269], [1517205060000, 0.00274801, 0.002749, 0.00274801, 0.002749, 110.71024768], [1517205120000, 0.00274901, 0.00275086, 0.002749, 0.00275086, 58.48223051], [1517205180000, 0.002749, 0.002749, 0.002749, 0.002749, 5.80891909], [1517205240000, 0.002749, 0.002749, 0.002749, 0.002749, 88.91036482], [1517205300000, 0.002749, 0.00275981, 0.00274804, 0.00274805, 234.98255028], [1517205360000, 0.002749, 0.00278012, 0.002749, 0.002766, 1438.38552343], [1517205420000, 0.00276073, 0.00276073, 0.00274805, 0.00274805, 42.99365365], [1517205480000, 0.00274805, 0.00274805, 0.002748, 0.002748, 365.16710954], [1517205540000, 0.002748, 0.002748, 0.00274575, 0.002748, 74.2807188], [1517205600000, 0.00275393, 0.00275393, 0.00274801, 0.00275393, 9.49693882], [1517205660000, 0.00276596, 0.00276596, 0.002748, 0.002748, 107.11757262], [1517205720000, 0.00274801, 0.00274801, 0.00274801, 0.00274801, 135.82581973], [1517205780000, 0.002748, 0.00276531, 0.002748, 0.00276531, 102.04998477], [1517205840000, 0.00276459, 0.00276459, 0.00276459, 0.00276459, 47.20508247], [1517205900000, 0.0027597, 0.00275998, 0.00275962, 0.00275962, 85.8139144], [1517206020000, 0.00275933, 0.00275933, 0.00275932, 0.00275932, 356.99097947], [1517206080000, 0.00275956, 0.00276238, 0.00275932, 0.00275932, 128.90189306], [1517206140000, 0.00275932, 0.00275932, 0.00275932, 0.00275932, 177.7752071], [1517206200000, 0.00274802, 0.00274802, 0.00274801, 0.00274801, 47.50855016], [1517206260000, 0.00276392, 0.00276392, 0.0027482, 0.00276337, 102.61861231], [1517206320000, 0.00276337, 0.00276337, 0.00274829, 0.00276281, 324.20111884], [1517206380000, 0.00276258, 0.00276258, 0.00276258, 0.00276258, 135.30367781], [1517206440000, 0.00276, 0.00276, 0.00275002, 0.00275002, 164.17805825], [1517206500000, 0.00275002, 0.00275002, 0.0027498, 0.0027498, 55.67450258], [1517206560000, 0.00274825, 0.00276, 0.002748, 0.00276, 1801.63272099], [1517206620000, 0.00276, 0.00276, 0.002748, 0.002748, 83.42695195], [1517206740000, 0.00275999, 0.00275999, 0.002748, 0.002748, 150.64856872], [1517206800000, 0.00275999, 0.00275999, 0.00275, 0.00275, 6.50744749], [1517206860000, 0.00275, 0.00275, 0.00274801, 0.00274801, 57.95411372], [1517206920000, 0.00274999, 0.00275, 0.00274999, 0.00275, 38.15380446], [1517206980000, 0.00275, 0.00275, 0.00274802, 0.00274802, 14.85917398], [1517207040000, 0.00274802, 0.00275, 0.002748, 0.002748, 245.70348987], [1517207100000, 0.002748, 0.00275, 0.002748, 0.00275, 226.33799927], [1517207160000, 0.00274999, 0.00274999, 0.002748, 0.002748, 19.25822987], [1517207220000, 0.002748, 0.00275, 0.002748, 0.00275, 80.92561964], [1517207280000, 0.0027549, 0.0027549, 0.0027549, 0.0027549, 17.37196978], [1517207340000, 0.00275, 0.00275, 0.00274801, 0.00274801, 6.40829551], [1517207400000, 0.00274801, 0.00274801, 0.002748, 0.002748, 143.48295005], [1517207460000, 0.00274801, 0.00274998, 0.002748, 0.002748, 113.13324658], [1517207520000, 0.002748, 0.002748, 0.00274557, 0.00274557, 91.45906678], [1517207580000, 0.00274799, 0.00275489, 0.00274799, 0.0027481, 22.26597614], [1517207640000, 0.00274557, 0.00274557, 0.00274, 0.00274, 123.35540563], [1517207700000, 0.00274555, 0.00274555, 0.0027394, 0.00274, 27.24601346], [1517207760000, 0.00273941, 0.00273941, 0.0027394, 0.0027394, 15.59457561], [1517207820000, 0.00273941, 0.00274499, 0.00273941, 0.00273941, 57.18238084], [1517207880000, 0.00273941, 0.00273941, 0.0027389, 0.0027389, 129.97993681], [1517207940000, 0.00273891, 0.0027394, 0.00273889, 0.0027389, 39.64360815], [1517208000000, 0.00273891, 0.0027394, 0.00273745, 0.00273746, 102.41711487], [1517208060000, 0.00273746, 0.002738, 0.00273739, 0.00273739, 581.68944326], [1517208120000, 0.002738, 0.002738, 0.00273738, 0.00273738, 127.55966368], [1517208180000, 0.00273739, 0.0027394, 0.00273738, 0.0027394, 73.09321663], [1517208240000, 0.00273939, 0.00274499, 0.00273939, 0.00274499, 85.58299406], [1517208300000, 0.002744, 0.00276073, 0.00273739, 0.0027374, 693.07806958], [1517208360000, 0.0027374, 0.00274555, 0.00273739, 0.00273742, 187.33667329], [1517208420000, 0.00274627, 0.00275801, 0.00273742, 0.00273742, 903.55028132], [1517208480000, 0.00273741, 0.00275799, 0.00273741, 0.00273742, 145.77482427], [1517208540000, 0.00275788, 0.00275789, 0.00273742, 0.00273742, 50.60932228], [1517208600000, 0.00275699, 0.00275699, 0.00275695, 0.00275695, 2.97066482], [1517208660000, 0.00275608, 0.00275608, 0.00273742, 0.00273743, 28.83327738], [1517208720000, 0.00273743, 0.00275558, 0.00273743, 0.00275545, 16.25883693], [1517208780000, 0.00273745, 0.00273801, 0.00273745, 0.00273801, 67.85594368], [1517208840000, 0.00273801, 0.00273801, 0.00273801, 0.00273801, 3.30098904], [1517208900000, 0.00273813, 0.00273813, 0.00273813, 0.00273813, 25.0], [1517209020000, 0.00275437, 0.00275439, 0.00273814, 0.00274061, 128.59961375], [1517209080000, 0.00274061, 0.00274061, 0.00274061, 0.00274061, 14.0], [1517209140000, 0.00273814, 0.00273814, 0.00273814, 0.00273814, 52.2360434], [1517209200000, 0.00273815, 0.00273815, 0.00273814, 0.00273815, 21.84272701], [1517209260000, 0.00273814, 0.0027406, 0.00273814, 0.0027406, 22.75791833], [1517209320000, 0.0027406, 0.00274061, 0.0027406, 0.00274061, 44.20713414], [1517209380000, 0.0027406, 0.00274061, 0.00273815, 0.00273815, 72.8730062], [1517209440000, 0.00273815, 0.00274061, 0.00273815, 0.00273815, 33.9871455], [1517209500000, 0.00273815, 0.00273815, 0.00273815, 0.00273815, 85.41255452], [1517209560000, 0.00273815, 0.00273815, 0.00273815, 0.00273815, 44.43293761], [1517209620000, 0.00273815, 0.002741, 0.00273814, 0.00273814, 397.62467975], [1517209680000, 0.00273814, 0.00273815, 0.00273801, 0.00273814, 167.34137659], [1517209740000, 0.00273813, 0.002752, 0.00273741, 0.00275198, 1041.01169258], [1517209800000, 0.00273741, 0.00275197, 0.00273739, 0.002749, 104.79950378], [1517209860000, 0.00273739, 0.00273739, 0.00273522, 0.00273535, 340.96151981], [1517209920000, 0.00273535, 0.002745, 0.00273531, 0.00273542, 467.71237529], [1517209980000, 0.00273542, 0.00273544, 0.00273542, 0.00273544, 31.98373776], [1517210040000, 0.00273544, 0.002747, 0.00273544, 0.002747, 97.37815245], [1517210100000, 0.00274687, 0.00274687, 0.00274675, 0.00274675, 14.56186973], [1517210160000, 0.00274652, 0.00274663, 0.00273515, 0.00273515, 517.87872553], [1517210220000, 0.00274654, 0.00274654, 0.0027252, 0.0027252, 680.29514952], [1517210280000, 0.0027252, 0.00273522, 0.00272501, 0.00272521, 98.21695702], [1517210340000, 0.00272521, 0.00273522, 0.00272521, 0.00273522, 26.40421237], [1517210400000, 0.0027322, 0.0027322, 0.00273219, 0.00273219, 56.14850093], [1517210460000, 0.0027322, 0.0027322, 0.0027322, 0.0027322, 115.26873278], [1517210520000, 0.0027322, 0.0027322, 0.0027322, 0.0027322, 22.5661332], [1517210580000, 0.0027322, 0.0027322, 0.00273219, 0.00273219, 8.20855025], [1517210640000, 0.00272529, 0.00273219, 0.00272521, 0.00273219, 185.15799857], [1517210700000, 0.00273219, 0.00273219, 0.00272521, 0.0027305, 16.35796026], [1517210760000, 0.00272945, 0.00273219, 0.00272945, 0.00272945, 36.45548265], [1517210820000, 0.00272946, 0.00273219, 0.00272945, 0.00273219, 4.17490349], [1517210880000, 0.00273219, 0.00273219, 0.00273219, 0.00273219, 3.38107444], [1517211000000, 0.00273219, 0.0027322, 0.00273219, 0.00273219, 89.36029653], [1517211060000, 0.00273219, 0.00274791, 0.00273219, 0.00274791, 165.96724204], [1517211120000, 0.0027479, 0.00274792, 0.00274789, 0.0027479, 60.71611161], [1517211180000, 0.0027322, 0.00274791, 0.0027322, 0.00274788, 141.10017777], [1517211240000, 0.00273222, 0.00273222, 0.00273222, 0.00273222, 20.60582553], [1517211300000, 0.00274788, 0.00274788, 0.00273223, 0.00274787, 15.58971359], [1517211360000, 0.00274787, 0.00274787, 0.00274773, 0.00274773, 2.51996466], [1517211420000, 0.002733, 0.00274765, 0.002733, 0.002733, 50.85147848], [1517211480000, 0.00273308, 0.0027469, 0.002733, 0.0027469, 40.69467932], [1517211540000, 0.0027469, 0.0027469, 0.0027469, 0.0027469, 4.79883237], [1517211660000, 0.00274676, 0.00274676, 0.00274676, 0.00274676, 7.39847635], [1517211720000, 0.002745, 0.002745, 0.002733, 0.002733, 1306.27185219], [1517211780000, 0.00273301, 0.00274497, 0.00273222, 0.00274497, 356.8546489], [1517211840000, 0.002733, 0.002733, 0.00273218, 0.00273218, 116.26520141], [1517211900000, 0.00273045, 0.00273218, 0.00273045, 0.00273218, 67.92587029], [1517211960000, 0.00273217, 0.00273218, 0.00273217, 0.00273218, 29.65906323], [1517212020000, 0.00273218, 0.00273218, 0.0027305, 0.0027305, 4.98044213], [1517212080000, 0.0027305, 0.00273218, 0.00273049, 0.00273049, 322.13782477], [1517212140000, 0.00273049, 0.00273218, 0.00273049, 0.00273049, 7.43055971], [1517212200000, 0.00273049, 0.00273218, 0.00272946, 0.00272946, 136.48920221], [1517212260000, 0.00272946, 0.0027305, 0.00272426, 0.00272426, 93.72094354], [1517212320000, 0.00272406, 0.00272406, 0.00272406, 0.00272406, 0.80945354], [1517212380000, 0.00272406, 0.00272406, 0.00272252, 0.00272252, 26.89265112], [1517212440000, 0.00272348, 0.00272348, 0.002722, 0.002722, 192.46622232], [1517212500000, 0.00272151, 0.00273218, 0.00272077, 0.00272077, 330.80617467], [1517212560000, 0.00272077, 0.00273218, 0.00272075, 0.00272075, 342.8608319], [1517212620000, 0.00272074, 0.00272074, 0.00272074, 0.00272074, 2.16065417], [1517212680000, 0.00272075, 0.00272075, 0.00271793, 0.00271793, 611.8931922], [1517212740000, 0.00272, 0.00272, 0.00271782, 0.00271782, 14.82595878], [1517212800000, 0.00271543, 0.00271543, 0.00271348, 0.002715, 103.80030442], [1517212860000, 0.002715, 0.002715, 0.00271252, 0.0027132, 34.04947549], [1517212920000, 0.002714, 0.002715, 0.0027132, 0.0027132, 76.9681326], [1517212980000, 0.002715, 0.00272042, 0.0027132, 0.00272042, 106.25785774], [1517213040000, 0.00271774, 0.00271905, 0.0027132, 0.00271905, 432.16602072], [1517213100000, 0.0027201, 0.0027201, 0.0027132, 0.0027132, 237.07904468], [1517213160000, 0.0027132, 0.00271999, 0.00271253, 0.00271253, 504.86985214], [1517213220000, 0.00271998, 0.00271999, 0.00271, 0.00271, 1684.30062353], [1517213280000, 0.00271001, 0.00271999, 0.00271, 0.00271, 28.48217866], [1517213340000, 0.00271, 0.00271499, 0.00270663, 0.00270675, 147.18942562], [1517213400000, 0.00270675, 0.00271, 0.00270675, 0.00271, 66.74871946], [1517213460000, 0.00271, 0.002715, 0.00271, 0.002715, 42.22644601], [1517213520000, 0.00271091, 0.00271091, 0.0027109, 0.0027109, 19.55643164], [1517213580000, 0.00271091, 0.00271499, 0.00271091, 0.00271499, 3.93435361], [1517213640000, 0.00271498, 0.00271499, 0.00271498, 0.00271499, 72.60784028], [1517213700000, 0.00271499, 0.002715, 0.00271499, 0.002715, 158.66650142], [1517213760000, 0.0027201, 0.00272994, 0.0027155, 0.0027155, 71.66462699], [1517213820000, 0.0027155, 0.00272974, 0.0027155, 0.00271552, 20.46848441], [1517213880000, 0.00272946, 0.00272946, 0.0027155, 0.00271551, 161.30313275], [1517213940000, 0.00271551, 0.00271551, 0.0027155, 0.00271551, 43.21554565], [1517214000000, 0.00272945, 0.00273891, 0.00272706, 0.00273891, 85.84326346], [1517214060000, 0.00273891, 0.00273891, 0.00272706, 0.00272976, 275.7762253], [1517214120000, 0.00272976, 0.00273796, 0.00272976, 0.00273796, 13.44656789], [1517214180000, 0.00272977, 0.00274399, 0.00272977, 0.00274399, 565.75466417], [1517214240000, 0.00274399, 0.002744, 0.00274399, 0.002744, 225.05631447], [1517214300000, 0.00274401, 0.00274614, 0.00274401, 0.00274401, 85.29728113], [1517214360000, 0.00274401, 0.002755, 0.002744, 0.002755, 658.18257739], [1517214420000, 0.0027469, 0.0027469, 0.0027469, 0.0027469, 29.85581046], [1517214480000, 0.0027469, 0.00275224, 0.0027469, 0.0027469, 68.25371841], [1517214540000, 0.00275, 0.00275898, 0.0027469, 0.0027469, 262.22147009], [1517214600000, 0.0027469, 0.0027469, 0.0027469, 0.0027469, 76.29548232], [1517214660000, 0.00275003, 0.00275003, 0.0027469, 0.0027469, 54.46496756], [1517214720000, 0.0027469, 0.0027469, 0.0027469, 0.0027469, 415.89910806], [1517214780000, 0.0027469, 0.00275002, 0.00274401, 0.00274401, 73.34170292], [1517214840000, 0.00274401, 0.00275003, 0.00273045, 0.00275003, 59.50028951], [1517214900000, 0.00273045, 0.00274555, 0.00273045, 0.00274555, 336.14454878], [1517214960000, 0.002741, 0.00274555, 0.002741, 0.00274555, 12.34801575], [1517215020000, 0.00274555, 0.00275003, 0.00274101, 0.00274101, 46.25359172], [1517215080000, 0.00274101, 0.00274101, 0.00274101, 0.00274101, 2.02285272], [1517215140000, 0.00274104, 0.00274104, 0.00274104, 0.00274104, 0.8044392], [1517215200000, 0.00275001, 0.00275001, 0.00274104, 0.00274104, 15.23822764], [1517215260000, 0.00274101, 0.00274101, 0.00274101, 0.00274101, 0.402224], [1517215320000, 0.00274103, 0.00274103, 0.002741, 0.002741, 573.74127305], [1517215380000, 0.00274101, 0.00274103, 0.00274101, 0.00274103, 74.09358742], [1517215440000, 0.00274101, 0.00274102, 0.00274101, 0.00274102, 12.52580892], [1517215500000, 0.00274101, 0.00274103, 0.002741, 0.002741, 194.18949381], [1517215560000, 0.002741, 0.00274103, 0.002741, 0.002741, 95.00296552], [1517215620000, 0.002741, 0.002741, 0.00273045, 0.00273045, 91.2521018], [1517215680000, 0.00274099, 0.00274099, 0.00274099, 0.00274099, 29.02408426], [1517215740000, 0.00273045, 0.00273045, 0.00273045, 0.00273045, 17.76998355], [1517215800000, 0.00273045, 0.0027409, 0.00272976, 0.00272976, 41.55192837], [1517215860000, 0.00272976, 0.00272976, 0.002721, 0.00272976, 38.80020442], [1517215920000, 0.00272976, 0.002739, 0.002721, 0.002739, 53.57152895], [1517215980000, 0.00272976, 0.00272976, 0.00272101, 0.00272105, 63.01780856], [1517216040000, 0.00272106, 0.00272976, 0.002721, 0.002721, 184.3327718], [1517216100000, 0.00272101, 0.00272971, 0.002721, 0.00272107, 121.34361928], [1517216160000, 0.00272107, 0.00272372, 0.00271951, 0.00271951, 369.77186189], [1517216220000, 0.00272971, 0.00272971, 0.00272, 0.00272, 5.02754501], [1517216280000, 0.00272971, 0.00272971, 0.00272971, 0.00272971, 0.36633928], [1517216340000, 0.0027297, 0.0027297, 0.0027297, 0.0027297, 22.64682872], [1517216400000, 0.0027297, 0.0027297, 0.00272969, 0.00272969, 25.32734285], [1517216460000, 0.00272966, 0.00272966, 0.00272, 0.00272002, 84.85767537], [1517216520000, 0.00272002, 0.00272966, 0.00272, 0.00272966, 182.74844262], [1517216580000, 0.00272002, 0.00272274, 0.00272001, 0.00272002, 84.58328959], [1517216640000, 0.00272002, 0.00272969, 0.00272002, 0.00272969, 258.09952669], [1517216700000, 0.00272002, 0.00272969, 0.00272002, 0.00272002, 67.69418753], [1517216760000, 0.00272005, 0.00272005, 0.00272005, 0.00272005, 1.12790892], [1517216820000, 0.00272002, 0.00272969, 0.00272002, 0.00272969, 250.24422617], [1517216880000, 0.00272969, 0.00272969, 0.00272969, 0.00272969, 36.24659509], [1517216940000, 0.00272969, 0.00272969, 0.00272006, 0.00272006, 7.29727118], [1517217000000, 0.00272969, 0.00272969, 0.00272008, 0.00272969, 296.71012247], [1517217060000, 0.00272969, 0.00272969, 0.00272009, 0.00272969, 802.62981888], [1517217120000, 0.00272969, 0.00274103, 0.00272969, 0.00274103, 115.49007891], [1517217180000, 0.00274103, 0.00274554, 0.00272131, 0.00274551, 46.82179601], [1517217240000, 0.00274547, 0.00274549, 0.00272159, 0.00274549, 352.87668007], [1517217300000, 0.00274548, 0.00274548, 0.00272401, 0.00272402, 12.29273437], [1517217360000, 0.00274548, 0.00274548, 0.00274548, 0.00274548, 109.4415667], [1517217420000, 0.00274548, 0.00274549, 0.00274548, 0.00274548, 228.92632085], [1517217480000, 0.00274548, 0.00274548, 0.00273001, 0.002745, 187.09995249], [1517217540000, 0.00274, 0.00274, 0.00274, 0.00274, 0.41906039], [1517217600000, 0.00274499, 0.002745, 0.00273, 0.002745, 220.35361364], [1517217660000, 0.00274498, 0.00274498, 0.00274421, 0.00274421, 3.19199489], [1517217720000, 0.00273, 0.00275, 0.00273, 0.00275, 575.38191448], [1517217780000, 0.00275002, 0.00275003, 0.00275002, 0.00275003, 112.88071323], [1517217840000, 0.00275003, 0.00275003, 0.00275, 0.00275, 200.6602858], [1517217900000, 0.00273049, 0.00275, 0.00273049, 0.00275, 239.38839748], [1517217960000, 0.002749, 0.00275, 0.00274, 0.00274, 217.46373168], [1517218020000, 0.00275, 0.00275, 0.00274, 0.00274, 13.06864988], [1517218080000, 0.00275, 0.00275, 0.00275, 0.00275, 113.47513991], [1517218140000, 0.00275, 0.00275003, 0.00275, 0.00275, 69.64576453], [1517218200000, 0.00275, 0.00275001, 0.00275, 0.00275, 156.6900482], [1517218260000, 0.00274999, 0.00274999, 0.00274998, 0.00274998, 99.29662682], [1517218320000, 0.00274998, 0.00274999, 0.00274998, 0.00274998, 33.75659632], [1517218380000, 0.00274998, 0.00274998, 0.00274998, 0.00274998, 154.5077913], [1517218440000, 0.00274998, 0.00275, 0.002744, 0.00275, 393.26235281], [1517218500000, 0.00275003, 0.002757, 0.00275, 0.00275003, 226.4073947], [1517218560000, 0.00275003, 0.00275005, 0.00275003, 0.00275003, 100.72249859], [1517218620000, 0.00275003, 0.002757, 0.00275003, 0.002757, 170.52374005], [1517218680000, 0.00275003, 0.002758, 0.00275, 0.00275004, 509.69238486], [1517218740000, 0.00275799, 0.00275799, 0.00275004, 0.00275005, 5.8945915], [1517218800000, 0.0027501, 0.00275798, 0.00275, 0.00275794, 162.02777255], [1517218860000, 0.0027505, 0.00275794, 0.00275, 0.00275794, 232.34089465], [1517218920000, 0.00275792, 0.00275797, 0.00274301, 0.00274301, 532.89011151], [1517218980000, 0.00274301, 0.00274301, 0.002743, 0.002743, 186.59700042], [1517219040000, 0.002743, 0.00274301, 0.002743, 0.002743, 125.6825589], [1517219100000, 0.00274301, 0.002755, 0.002743, 0.002755, 66.59333677], [1517219160000, 0.00275001, 0.002755, 0.00274406, 0.00274813, 209.71641617], [1517219220000, 0.00274405, 0.00274813, 0.00274405, 0.002745, 89.59843593], [1517219280000, 0.002745, 0.0027481, 0.002745, 0.0027481, 126.22059382], [1517219340000, 0.00274303, 0.00274405, 0.00274303, 0.00274303, 169.99595328], [1517219400000, 0.00274303, 0.0027481, 0.00274303, 0.00274405, 131.48893139], [1517219460000, 0.0027441, 0.0027441, 0.00274303, 0.0027434, 293.30983672], [1517219520000, 0.00274406, 0.00274406, 0.00274406, 0.00274406, 0.40177693], [1517219580000, 0.00274406, 0.0027481, 0.00274406, 0.0027481, 67.82227028], [1517219640000, 0.0027481, 0.0027481, 0.0027481, 0.0027481, 27.33342671], [1517219700000, 0.0027481, 0.0027481, 0.0027481, 0.0027481, 15.00847422], [1517219760000, 0.0027481, 0.0027481, 0.0027434, 0.00274406, 75.27837862], [1517219820000, 0.00274406, 0.0027481, 0.0027434, 0.0027434, 893.7373447], [1517219880000, 0.0027481, 0.0027481, 0.0027434, 0.0027434, 67.62864048], [1517219940000, 0.0027434, 0.0027481, 0.00274, 0.0027481, 755.55708404], [1517220000000, 0.00274201, 0.00274202, 0.00274201, 0.00274201, 73.48531087], [1517220060000, 0.00274201, 0.0027481, 0.002742, 0.0027481, 19.5661247], [1517220120000, 0.0027481, 0.00276073, 0.0027481, 0.00276072, 821.61708086], [1517220180000, 0.0027481, 0.0027481, 0.00274555, 0.00274555, 14.01125464], [1517220240000, 0.0027481, 0.00276072, 0.0027456, 0.0027456, 64.51620854], [1517220300000, 0.0027456, 0.002748, 0.0027456, 0.002748, 21.10901582], [1517220360000, 0.002748, 0.0027607, 0.00274555, 0.00274569, 460.48089455], [1517220420000, 0.0027607, 0.0027607, 0.00274569, 0.00274569, 100.12475499], [1517220480000, 0.00274579, 0.00274579, 0.00274569, 0.00274579, 5.96838299], [1517220540000, 0.00274579, 0.00274579, 0.00274569, 0.00274579, 69.38259331], [1517220600000, 0.00274579, 0.0027607, 0.00274579, 0.0027607, 53.5733828], [1517220660000, 0.0027607, 0.0027607, 0.0027607, 0.0027607, 22.47662611], [1517220720000, 0.0027607, 0.00276073, 0.00275107, 0.00275107, 74.30383703], [1517220780000, 0.00276073, 0.00276222, 0.00275152, 0.00275152, 113.24760508], [1517220840000, 0.00275151, 0.00276204, 0.00275151, 0.00275152, 101.86205124], [1517220900000, 0.00276, 0.00276221, 0.00275152, 0.00276221, 17.48771734], [1517220960000, 0.00276225, 0.00276225, 0.00276221, 0.00276221, 66.83205864], [1517221020000, 0.00276221, 0.00276324, 0.002753, 0.002753, 358.97927818], [1517221080000, 0.00276324, 0.00276325, 0.002753, 0.00276324, 73.88819509], [1517221140000, 0.00275401, 0.00276323, 0.00275401, 0.00276323, 116.95031503], [1517221200000, 0.00276323, 0.00276324, 0.00276323, 0.00276323, 332.15907911], [1517221260000, 0.00276324, 0.00276324, 0.00275502, 0.00276324, 61.46071163], [1517221320000, 0.00276324, 0.00276324, 0.00276, 0.00276324, 127.19533747], [1517221380000, 0.00276325, 0.00276999, 0.00276325, 0.00276328, 301.6781449], [1517221440000, 0.00276328, 0.00278328, 0.00276325, 0.00277583, 818.66787], [1517221500000, 0.00277583, 0.00278313, 0.00277583, 0.00277583, 22.79927728], [1517221560000, 0.002782, 0.00278312, 0.002782, 0.002782, 263.9301321], [1517221620000, 0.002783, 0.002783, 0.0027732, 0.00277583, 106.08975784], [1517221680000, 0.0027732, 0.00277583, 0.0027731, 0.0027731, 461.60249209], [1517221740000, 0.0027731, 0.0027755, 0.00276974, 0.00276974, 60.2030199], [1517221800000, 0.00276974, 0.002773, 0.00276974, 0.002773, 54.62857174], [1517221860000, 0.00276974, 0.0027753, 0.00276345, 0.002765, 393.95825735], [1517221920000, 0.002765, 0.002765, 0.00276345, 0.00276499, 192.50386848], [1517221980000, 0.00276499, 0.00276502, 0.00276345, 0.00276502, 90.47472382], [1517222040000, 0.00277299, 0.00277299, 0.00276504, 0.00276504, 97.98450554], [1517222100000, 0.0027729, 0.0027729, 0.0027729, 0.0027729, 8.71148398], [1517222160000, 0.002766, 0.00277583, 0.002766, 0.00277583, 260.73007219], [1517222220000, 0.00277583, 0.00278313, 0.00277583, 0.00277583, 283.41895022], [1517222280000, 0.00277584, 0.00278304, 0.00277583, 0.00278303, 31.23919813], [1517222340000, 0.00278302, 0.00278302, 0.00277583, 0.00278287, 61.33930694], [1517222400000, 0.00277583, 0.00278196, 0.0027667, 0.00278196, 24.06970283], [1517222460000, 0.0027669, 0.00278061, 0.0027669, 0.00278061, 22.37537164], [1517222520000, 0.0027669, 0.0027669, 0.00276668, 0.0027669, 163.87370103], [1517222580000, 0.0027669, 0.0027669, 0.0027669, 0.0027669, 6.09987634], [1517222640000, 0.0027669, 0.00277997, 0.0027669, 0.00277995, 45.25695008], [1517222700000, 0.00277992, 0.00277994, 0.002767, 0.002767, 234.58756929], [1517222760000, 0.002767, 0.00276863, 0.002767, 0.00276863, 70.13998519], [1517222820000, 0.002769, 0.00277996, 0.002767, 0.00276701, 513.92768228], [1517222880000, 0.00277987, 0.00277999, 0.00276862, 0.0027687, 792.04330309], [1517222940000, 0.00277987, 0.00277987, 0.00276701, 0.00276701, 548.07280522], [1517223000000, 0.00276862, 0.00277907, 0.00276701, 0.00276701, 303.80225754], [1517223060000, 0.00276701, 0.0027792, 0.00276701, 0.00276701, 174.61680459], [1517223180000, 0.00276701, 0.0027764, 0.00276701, 0.00276999, 219.81454532], [1517223240000, 0.00276918, 0.00276918, 0.00276915, 0.00276916, 50.04873905], [1517223300000, 0.00276701, 0.00276701, 0.002767, 0.00276701, 383.39479249], [1517223360000, 0.002768, 0.00276917, 0.00276701, 0.00276701, 226.37564305], [1517223420000, 0.00277696, 0.00277696, 0.00276701, 0.00277696, 111.70747283], [1517223480000, 0.00277696, 0.00277696, 0.00276999, 0.00276999, 47.82273616], [1517223540000, 0.00276888, 0.00277696, 0.00276701, 0.00276701, 183.31068814], [1517223600000, 0.00277692, 0.00277696, 0.0027689, 0.00277696, 64.55651998], [1517223660000, 0.002777, 0.00278, 0.00277696, 0.00278, 92.35640189], [1517223720000, 0.00278, 0.00278082, 0.00278, 0.00278082, 78.10181886], [1517223780000, 0.00278249, 0.00278303, 0.00278, 0.00278249, 122.82264731], [1517223840000, 0.002783, 0.002789, 0.002783, 0.002789, 215.68331296], [1517223900000, 0.00278588, 0.00278899, 0.00278588, 0.00278588, 114.67141756], [1517223960000, 0.00278588, 0.00278899, 0.00278588, 0.00278898, 110.46839951], [1517224020000, 0.00278898, 0.00278898, 0.002786, 0.002786, 34.44614884], [1517224080000, 0.002786, 0.002789, 0.002786, 0.002789, 352.38878582], [1517224140000, 0.002789, 0.00279398, 0.002789, 0.0027905, 297.48246395], [1517224200000, 0.0027905, 0.002795, 0.0027905, 0.00279499, 753.07156953], [1517224260000, 0.002791, 0.00279499, 0.00278957, 0.00279499, 314.14275471], [1517224320000, 0.0027936, 0.00279499, 0.002789, 0.002789, 356.831948], [1517224380000, 0.002789, 0.00279498, 0.00278802, 0.00278802, 206.8852303], [1517224440000, 0.00278802, 0.00278802, 0.00278588, 0.00278588, 100.58702746], [1517224500000, 0.00278802, 0.00279499, 0.00278802, 0.00278802, 85.4156455], [1517224560000, 0.002792, 0.00279499, 0.002792, 0.00279499, 493.52587979], [1517224620000, 0.00279498, 0.0028, 0.00278802, 0.0028, 1803.21750768], [1517224680000, 0.0027888, 0.00279999, 0.0027888, 0.00279998, 153.32463901], [1517224740000, 0.00279997, 0.0028, 0.0027888, 0.00278889, 487.91341365], [1517224800000, 0.0027888, 0.00278889, 0.00278588, 0.0027888, 203.25169962], [1517224860000, 0.0027888, 0.0027888, 0.00278244, 0.00278244, 304.47829782], [1517224920000, 0.00278244, 0.002795, 0.00278244, 0.00278876, 37.59345004], [1517224980000, 0.00278875, 0.00279499, 0.00277686, 0.00278876, 708.91338097], [1517225040000, 0.00279499, 0.00279499, 0.002777, 0.002777, 73.84037297], [1517225100000, 0.00278876, 0.00278876, 0.00277686, 0.00277686, 94.50949979], [1517225160000, 0.00277686, 0.00278875, 0.00277686, 0.00278875, 75.26821373], [1517225220000, 0.00278876, 0.00278876, 0.00278875, 0.00278875, 27.14491224], [1517225280000, 0.00277687, 0.00277687, 0.00277687, 0.00277687, 16.25572433], [1517225340000, 0.00278874, 0.00278875, 0.00277687, 0.00278875, 246.21411378], [1517225400000, 0.00278873, 0.00278873, 0.00277686, 0.00277686, 606.65705703], [1517225460000, 0.00278858, 0.00278858, 0.00277686, 0.002778, 106.48951309], [1517225520000, 0.002778, 0.002778, 0.00277128, 0.00277128, 967.05425112], [1517225580000, 0.0027701, 0.00278838, 0.00276783, 0.00278838, 111.16950174], [1517225640000, 0.00276783, 0.00278838, 0.00276783, 0.00278838, 145.11954444], [1517225700000, 0.00278399, 0.00278399, 0.00276783, 0.00277128, 124.63517819], [1517225760000, 0.00276704, 0.00276704, 0.00276703, 0.00276703, 397.74785922], [1517225820000, 0.00276703, 0.00277599, 0.002767, 0.002767, 316.25551458], [1517225880000, 0.00277597, 0.00277598, 0.00276569, 0.00277, 690.08783035], [1517225940000, 0.00276703, 0.00276703, 0.00276571, 0.00276571, 23.03203014], [1517226000000, 0.00276571, 0.00276571, 0.00276569, 0.00276569, 370.15858275], [1517226060000, 0.00276569, 0.00276571, 0.00276569, 0.00276569, 206.34652383], [1517226120000, 0.00276342, 0.00276571, 0.00276328, 0.00276328, 283.52399313], [1517226180000, 0.00276328, 0.00276329, 0.00276073, 0.00276327, 100.65188837], [1517226240000, 0.00276327, 0.00276327, 0.00276327, 0.00276327, 1.00400299], [1517226300000, 0.00276073, 0.00276073, 0.00276011, 0.00276073, 394.26409289], [1517226360000, 0.00276011, 0.00276011, 0.00275453, 0.00275453, 675.30017743], [1517226420000, 0.00275453, 0.00276027, 0.00275453, 0.00276027, 527.31010862], [1517226480000, 0.00276011, 0.00276012, 0.002753, 0.00275401, 305.11603983], [1517226540000, 0.00276027, 0.00276027, 0.002753, 0.00275401, 231.60068973], [1517226600000, 0.002753, 0.00276325, 0.002753, 0.00276325, 73.34880957], [1517226660000, 0.002754, 0.00276324, 0.002754, 0.00276324, 33.10110061], [1517226720000, 0.00276324, 0.00276324, 0.00275301, 0.00275301, 33.15747453], [1517226780000, 0.002754, 0.00276324, 0.002754, 0.00275415, 83.86183222], [1517226840000, 0.00275415, 0.00275675, 0.002753, 0.002753, 72.19135779], [1517226900000, 0.00275415, 0.00275675, 0.002753, 0.00275415, 49.66755651], [1517226960000, 0.00275415, 0.00276325, 0.00275415, 0.00276325, 154.4274983], [1517227020000, 0.00276325, 0.00276325, 0.00276325, 0.00276325, 194.22020085], [1517227080000, 0.00276325, 0.00276325, 0.00276325, 0.00276325, 119.70814729], [1517227140000, 0.00275676, 0.00276325, 0.0027531, 0.00276325, 1059.15361942], [1517227200000, 0.00276325, 0.00276325, 0.00276325, 0.00276325, 5.5], [1517227260000, 0.00276325, 0.00276325, 0.00276325, 0.00276325, 981.99545173], [1517227320000, 0.00276325, 0.00276329, 0.00276325, 0.00276329, 448.37141917], [1517227380000, 0.00276329, 0.00276329, 0.00276329, 0.00276329, 293.91184934], [1517227440000, 0.00276329, 0.00276329, 0.00276329, 0.00276329, 110.66212751], [1517227500000, 0.00276329, 0.00276329, 0.00276327, 0.00276327, 22.64284271], [1517227560000, 0.00276328, 0.00276328, 0.002755, 0.002755, 690.04578914], [1517227620000, 0.002755, 0.00276329, 0.002755, 0.00276329, 52.92562462], [1517227680000, 0.00276329, 0.00276329, 0.00276328, 0.00276328, 46.99751673], [1517227740000, 0.00276328, 0.00276329, 0.00276328, 0.00276329, 12.77927747], [1517227800000, 0.00276329, 0.00276329, 0.00276329, 0.00276329, 7.42537357], [1517227860000, 0.00276329, 0.00276329, 0.00276329, 0.00276329, 144.536266], [1517227920000, 0.00276329, 0.00276329, 0.00276309, 0.00276309, 135.60588415], [1517227980000, 0.00275525, 0.00277464, 0.0027552, 0.0027552, 116.38851725], [1517228040000, 0.0027552, 0.0027552, 0.0027552, 0.0027552, 11.19271048], [1517228100000, 0.00277457, 0.00277462, 0.0027552, 0.0027552, 42.02739919], [1517228160000, 0.0027552, 0.00277457, 0.0027552, 0.00277455, 592.23437277], [1517228220000, 0.00277455, 0.00277455, 0.00277455, 0.00277455, 50.90104701], [1517228280000, 0.00277435, 0.00277435, 0.00275525, 0.00275525, 43.19949551], [1517228340000, 0.00275525, 0.00277404, 0.00275521, 0.00277398, 194.74710061], [1517228400000, 0.00277391, 0.00277393, 0.00277391, 0.00277393, 33.60500663], [1517228460000, 0.002765, 0.00277447, 0.002765, 0.002765, 52.27304815], [1517228520000, 0.00276398, 0.00276398, 0.00276398, 0.00276398, 24.09242936], [1517228580000, 0.00275522, 0.002765, 0.00275522, 0.002765, 84.9484282], [1517228640000, 0.002765, 0.002765, 0.002765, 0.002765, 10.0], [1517228700000, 0.002765, 0.00277445, 0.002765, 0.00277445, 52.63763893], [1517228760000, 0.002765, 0.002765, 0.00275525, 0.002765, 124.49416728], [1517228820000, 0.002765, 0.00277445, 0.00275534, 0.00275534, 24.59183013], [1517228880000, 0.00277445, 0.00277445, 0.00275536, 0.00277425, 16.05725636], [1517228940000, 0.00277423, 0.00277445, 0.00277405, 0.00277445, 48.03455563], [1517229000000, 0.00277445, 0.00277446, 0.00277445, 0.00277445, 87.32666209], [1517229060000, 0.00277445, 0.00277446, 0.00275611, 0.00275611, 943.79854224], [1517229120000, 0.00275691, 0.00275691, 0.00275618, 0.0027562, 14.28714211], [1517229180000, 0.00277446, 0.00277446, 0.00277446, 0.00277446, 18.29632455], [1517229240000, 0.00277446, 0.00277461, 0.00277446, 0.00277446, 43.09007496], [1517229300000, 0.00277446, 0.00278299, 0.00277446, 0.002777, 123.57945612], [1517229360000, 0.002777, 0.00278289, 0.002777, 0.00278289, 565.91876609], [1517229420000, 0.00278289, 0.00278289, 0.002777, 0.002779, 190.70456702], [1517229480000, 0.00278289, 0.00278289, 0.002777, 0.00278289, 144.57000746], [1517229540000, 0.00278289, 0.00278289, 0.002777, 0.002777, 668.59980878], [1517229600000, 0.002777, 0.002777, 0.00277, 0.00277, 182.8923987], [1517229660000, 0.002775, 0.002775, 0.00277, 0.00277, 5.89978768], [1517229720000, 0.00277, 0.00278289, 0.00277, 0.00277701, 286.71440891], [1517229780000, 0.00278289, 0.00278289, 0.00277701, 0.002778, 437.40583975], [1517229840000, 0.002778, 0.00278799, 0.00277701, 0.00277701, 577.70037464], [1517229900000, 0.00277701, 0.00277777, 0.00277701, 0.00277777, 81.84302776], [1517229960000, 0.00277777, 0.00278, 0.00277701, 0.00277999, 157.62911645], [1517230020000, 0.00277999, 0.00278, 0.00277999, 0.00278, 35.64588026], [1517230080000, 0.00278599, 0.00278599, 0.00278, 0.00278, 90.10002108], [1517230140000, 0.00277999, 0.00278, 0.00277777, 0.00278, 65.69866541], [1517230200000, 0.00278, 0.00278, 0.0027786, 0.0027786, 105.54467742], [1517230260000, 0.0027786, 0.00278, 0.0027786, 0.00278, 101.72688829], [1517230320000, 0.00278, 0.00278, 0.00278, 0.00278, 385.53937284], [1517230380000, 0.00278, 0.00278, 0.002779, 0.00278, 237.10186752], [1517230440000, 0.00278, 0.00278, 0.00277999, 0.00278, 366.69393828], [1517230500000, 0.00278, 0.00278, 0.00278, 0.00278, 333.86656275], [1517230560000, 0.00278, 0.00278, 0.0027799, 0.0027799, 143.86740423], [1517230620000, 0.0027799, 0.00278, 0.0027799, 0.0027799, 297.95947114], [1517230680000, 0.00278, 0.00278, 0.0027799, 0.0027799, 3.38893414], [1517230740000, 0.00277999, 0.00278, 0.0027797, 0.00278, 90.3722962], [1517230800000, 0.00278, 0.00278, 0.00278, 0.00278, 590.77040366], [1517230860000, 0.00278, 0.00278101, 0.0027795, 0.0027795, 1115.45093814], [1517230920000, 0.0027795, 0.00280997, 0.00277, 0.00280997, 4365.10651208], [1517230980000, 0.00280981, 0.00280981, 0.00278106, 0.00278106, 124.5669514], [1517231040000, 0.00279787, 0.00280742, 0.00278106, 0.00279716, 829.4681642], [1517231100000, 0.00278175, 0.00279992, 0.00277058, 0.00279985, 272.18046366], [1517231160000, 0.00279997, 0.00281, 0.00277317, 0.00279996, 1552.00086961], [1517231220000, 0.00279156, 0.00281, 0.00279156, 0.00280987, 733.05019039], [1517231280000, 0.00279157, 0.00280943, 0.00279156, 0.00280931, 137.62061534], [1517231340000, 0.00280931, 0.00280931, 0.002809, 0.00280904, 233.97646416], [1517231400000, 0.00280894, 0.00281071, 0.00279195, 0.00280885, 1157.38664023], [1517231460000, 0.002792, 0.00280894, 0.002792, 0.00279532, 368.07061444], [1517231520000, 0.00279532, 0.00281069, 0.00279532, 0.00279532, 642.29770001], [1517231580000, 0.00279532, 0.00280999, 0.00279532, 0.00279913, 223.19579717], [1517231640000, 0.00279913, 0.00281, 0.00279913, 0.00280781, 112.73605929], [1517231700000, 0.00279915, 0.00280781, 0.00279915, 0.00279915, 426.27418126], [1517231760000, 0.00279915, 0.00281069, 0.00279915, 0.00281069, 37.21660558], [1517231820000, 0.00281067, 0.00281714, 0.00280501, 0.00280509, 303.05116616], [1517231880000, 0.00280509, 0.00281719, 0.00280509, 0.00280555, 1553.05083823], [1517231940000, 0.00281701, 0.00282, 0.00280698, 0.00282, 561.82984949], [1517232000000, 0.00281703, 0.002825, 0.00280698, 0.00280698, 1189.46980016], [1517232060000, 0.00280698, 0.00282499, 0.00280698, 0.00280698, 635.88475286], [1517232120000, 0.00281, 0.002823, 0.00280801, 0.00282296, 501.46127039], [1517232180000, 0.0028229, 0.00282296, 0.00280802, 0.00280802, 552.60662406], [1517232240000, 0.00280802, 0.0028159, 0.00280802, 0.0028159, 210.54819277], [1517232300000, 0.0028159, 0.00281591, 0.00281055, 0.00281056, 1384.84928528], [1517232360000, 0.00281056, 0.002812, 0.00281056, 0.002812, 57.05494749], [1517232420000, 0.002812, 0.002816, 0.00281056, 0.002816, 252.07738054], [1517232480000, 0.002816, 0.00282, 0.0028122, 0.0028122, 295.19568737], [1517232540000, 0.0028122, 0.00281983, 0.00281058, 0.00281058, 611.26715131], [1517232600000, 0.00281058, 0.00281984, 0.00281056, 0.00281499, 92.46682137], [1517232660000, 0.00281499, 0.00282284, 0.00281056, 0.002815, 610.63712554], [1517232720000, 0.00281984, 0.00282284, 0.002815, 0.002815, 113.06447494], [1517232780000, 0.0028155, 0.0028155, 0.00281056, 0.00281056, 133.71605988], [1517232840000, 0.00282275, 0.00282275, 0.00281056, 0.00281058, 698.34257097], [1517232900000, 0.00282257, 0.00282258, 0.002811, 0.002811, 6.66763128], [1517232960000, 0.00282219, 0.00282219, 0.00281101, 0.00281101, 470.2929628], [1517233020000, 0.00281101, 0.00282184, 0.00280698, 0.00280698, 298.22272564], [1517233080000, 0.00280698, 0.00280698, 0.0028, 0.0028, 128.35991209], [1517233140000, 0.002801, 0.00282253, 0.00280001, 0.002801, 492.72947123], [1517233200000, 0.002801, 0.00281999, 0.00279914, 0.00279914, 572.27071186], [1517233260000, 0.0028, 0.002801, 0.00279202, 0.00279202, 178.92078062], [1517233320000, 0.00279906, 0.0028, 0.00279895, 0.00279895, 136.1071855], [1517233380000, 0.00279895, 0.00279895, 0.00279156, 0.0027988, 189.36603375], [1517233440000, 0.00279156, 0.00279879, 0.00279156, 0.00279201, 252.50094962], [1517233500000, 0.00279201, 0.00279879, 0.00279, 0.00279, 73.39029863], [1517233560000, 0.00279879, 0.002801, 0.00279879, 0.002801, 732.96990603], [1517233620000, 0.002801, 0.00281393, 0.00279879, 0.0028, 427.32728657], [1517233680000, 0.0028, 0.0028, 0.00279879, 0.00279879, 93.62627924], [1517233740000, 0.00279879, 0.00282253, 0.00279879, 0.0028, 1135.66677169], [1517233800000, 0.0028, 0.00280689, 0.00279879, 0.00279879, 114.7992369], [1517233860000, 0.00279879, 0.00280686, 0.00279879, 0.00279879, 177.52794929], [1517233920000, 0.0027988, 0.00280679, 0.00279879, 0.00279879, 376.18189731], [1517233980000, 0.00280674, 0.00280674, 0.00278889, 0.00279879, 117.26087243], [1517234040000, 0.00279879, 0.00280652, 0.00279, 0.00279, 95.65218593], [1517234100000, 0.00279, 0.00279, 0.00278889, 0.00279, 97.49240673], [1517234160000, 0.00279, 0.00279, 0.00278999, 0.00278999, 5.0726989], [1517234220000, 0.00279, 0.00279, 0.0027889, 0.00278999, 38.85410316], [1517234280000, 0.00278999, 0.00278999, 0.00278891, 0.00278891, 60.47982392], [1517234340000, 0.00278891, 0.00278891, 0.0027889, 0.00278891, 79.26820982], [1517234400000, 0.00278891, 0.00278892, 0.0027889, 0.00278892, 204.79225663], [1517234460000, 0.00278892, 0.00278892, 0.00278891, 0.00278891, 11.48148959], [1517234520000, 0.00278891, 0.00278892, 0.00278889, 0.00278892, 107.46235635], [1517234580000, 0.00278892, 0.00278892, 0.00278889, 0.00278889, 210.54815815], [1517234640000, 0.00278889, 0.00278892, 0.00278889, 0.00278892, 63.90740927], [1517234700000, 0.00278892, 0.00278892, 0.00278892, 0.00278892, 534.83718645], [1517234760000, 0.0027889, 0.00278892, 0.00278889, 0.00278892, 319.91022429], [1517234820000, 0.00278892, 0.00278892, 0.00278889, 0.00278892, 109.31293734], [1517234880000, 0.00278889, 0.00278889, 0.00278889, 0.00278889, 171.22522943], [1517234940000, 0.00278892, 0.00278892, 0.00278889, 0.00278892, 141.1866144], [1517235000000, 0.00278892, 0.00278999, 0.00278889, 0.00278889, 1249.91251246], [1517235120000, 0.00278999, 0.00279802, 0.00278999, 0.00279802, 63.37507265], [1517235180000, 0.00279801, 0.00279801, 0.00279801, 0.00279801, 8.5563162], [1517235240000, 0.00279801, 0.00279801, 0.00279801, 0.00279801, 32.59966889], [1517235300000, 0.00279801, 0.00279801, 0.00279113, 0.002798, 470.83153982], [1517235360000, 0.002798, 0.002798, 0.00279112, 0.00279112, 538.81662944], [1517235420000, 0.00279113, 0.00279113, 0.00279112, 0.00279113, 969.73908331], [1517235480000, 0.00279113, 0.00279113, 0.00279112, 0.00279113, 155.61148718], [1517235540000, 0.00279113, 0.00279113, 0.00278889, 0.00279112, 491.23867731], [1517235600000, 0.00279112, 0.00279802, 0.00279112, 0.00279112, 48.23177647], [1517235660000, 0.00279801, 0.00279801, 0.00279112, 0.00279801, 24.90158668], [1517235720000, 0.00279801, 0.00279801, 0.00279801, 0.00279801, 17.1069658], [1517235780000, 0.00279112, 0.00279802, 0.00279112, 0.00279802, 693.05547345], [1517235840000, 0.00279799, 0.002798, 0.00278889, 0.00278889, 81.31500511], [1517235900000, 0.00278889, 0.00278889, 0.00278688, 0.00278889, 73.52301719], [1517235960000, 0.00278688, 0.00278889, 0.00278688, 0.00278688, 112.20011809], [1517236020000, 0.00278688, 0.00278688, 0.00277507, 0.00277507, 237.86559569], [1517236080000, 0.00277507, 0.00278688, 0.00277507, 0.00278688, 293.71150503], [1517236140000, 0.00278688, 0.00278888, 0.00278532, 0.00278888, 449.89153402], [1517236200000, 0.00278535, 0.00278888, 0.00278535, 0.00278888, 169.6385029], [1517236260000, 0.00278879, 0.00278888, 0.00278532, 0.00278888, 214.39907191], [1517236320000, 0.00278888, 0.00278888, 0.00278888, 0.00278888, 157.17404745], [1517236380000, 0.00278537, 0.00278888, 0.00278532, 0.00278541, 600.7019943], [1517236440000, 0.00278542, 0.00278542, 0.00278532, 0.00278532, 85.87225478], [1517236500000, 0.00278537, 0.00278777, 0.00278537, 0.00278539, 6.05378353], [1517236560000, 0.00278539, 0.00278539, 0.00278532, 0.00278532, 208.22619826], [1517236620000, 0.00278532, 0.00278532, 0.00278062, 0.00278062, 259.11153473], [1517236680000, 0.00278531, 0.00278777, 0.00278531, 0.0027854, 201.83586694], [1517236740000, 0.0027854, 0.00278888, 0.0027854, 0.00278779, 46.56393177], [1517236800000, 0.00278779, 0.00279199, 0.00278779, 0.00278791, 503.85916599], [1517236860000, 0.00279197, 0.0028, 0.00278792, 0.0028, 1842.07860265], [1517236920000, 0.0028, 0.00280697, 0.0028, 0.00280001, 1231.55248614], [1517236980000, 0.00280001, 0.00280697, 0.00280001, 0.00280697, 2444.89621402], [1517237040000, 0.00280697, 0.00280891, 0.00280697, 0.00280698, 499.07755298], [1517237100000, 0.00280891, 0.00282258, 0.00280698, 0.00281599, 6164.28214273], [1517237160000, 0.00281599, 0.00281988, 0.00281599, 0.00281599, 2437.9003344], [1517237220000, 0.00281599, 0.00281983, 0.00280698, 0.00281599, 1019.33859785], [1517237280000, 0.00281599, 0.00281599, 0.00280698, 0.00280698, 23.81007936], [1517237340000, 0.00280697, 0.00281978, 0.00280697, 0.002807, 111.16164567], [1517237400000, 0.00281976, 0.00282, 0.002807, 0.002807, 820.27552098], [1517237460000, 0.002807, 0.00281996, 0.002807, 0.002807, 70.08659953], [1517237520000, 0.002807, 0.00281497, 0.00280697, 0.00280697, 133.038267], [1517237580000, 0.00280014, 0.002815, 0.002796, 0.0028, 193.45262162], [1517237640000, 0.0028, 0.00281497, 0.0028, 0.00281497, 263.1807311], [1517237700000, 0.00281497, 0.00281999, 0.00281497, 0.00281497, 1237.34385432], [1517237760000, 0.00281999, 0.00281999, 0.0028, 0.0028, 621.26319438], [1517237820000, 0.0028, 0.00281954, 0.0028, 0.002815, 63.11062235], [1517237880000, 0.00281899, 0.00281899, 0.002805, 0.002805, 438.45032856], [1517237940000, 0.002805, 0.0028189, 0.002805, 0.0028189, 555.12564455], [1517238000000, 0.002805, 0.002815, 0.002805, 0.002805, 149.60144575], [1517238060000, 0.00280502, 0.00281899, 0.00280501, 0.00280501, 629.73207962], [1517238120000, 0.00280502, 0.00280583, 0.00280501, 0.00280583, 28.43595002], [1517238180000, 0.00280502, 0.00280502, 0.002805, 0.00280502, 551.29348525], [1517238240000, 0.00280502, 0.00280502, 0.0028, 0.002805, 792.59372045], [1517238300000, 0.002805, 0.00281493, 0.002805, 0.00281493, 143.18471386], [1517238360000, 0.00280503, 0.00281399, 0.00280005, 0.00280501, 139.74658776], [1517238420000, 0.00280005, 0.00280005, 0.002798, 0.002798, 689.4405008], [1517238480000, 0.002798, 0.0027981, 0.002796, 0.002796, 119.44582639], [1517238540000, 0.002796, 0.002796, 0.00279197, 0.00279197, 37.19773959], [1517238600000, 0.00279197, 0.00279197, 0.00279197, 0.00279197, 3.58170037], [1517238660000, 0.00279197, 0.00279197, 0.00278982, 0.00279197, 26.60177729], [1517238720000, 0.00279197, 0.002796, 0.00279197, 0.002796, 161.59803426], [1517238780000, 0.00279999, 0.00279999, 0.002796, 0.002796, 183.18683422], [1517238840000, 0.0028, 0.00280005, 0.0028, 0.00280005, 77.81228071], [1517238900000, 0.00280005, 0.00281197, 0.00280005, 0.00280006, 123.63825302], [1517238960000, 0.00280006, 0.00280016, 0.00280006, 0.00280016, 70.58042395], [1517239020000, 0.002805, 0.00280999, 0.00280016, 0.00280799, 331.96301214], [1517239080000, 0.00280799, 0.002808, 0.00280016, 0.0028075, 99.31086514], [1517239140000, 0.00280016, 0.0028075, 0.00280016, 0.00280016, 32.59770787], [1517239200000, 0.00280016, 0.00280661, 0.00280016, 0.0028002, 39.63840385], [1517239260000, 0.00280622, 0.00280661, 0.0028002, 0.00280022, 42.60252072], [1517239320000, 0.0028003, 0.00280031, 0.0028002, 0.0028002, 187.86657361], [1517239380000, 0.0028003, 0.00280654, 0.0028003, 0.0028003, 19.82779148], [1517239440000, 0.0028003, 0.00280454, 0.00280006, 0.00280454, 1027.78129339], [1517239500000, 0.00280011, 0.00280011, 0.00279301, 0.00280006, 31.18990491], [1517239560000, 0.00280045, 0.0028007, 0.00280006, 0.0028007, 101.90791139], [1517239620000, 0.00280445, 0.002808, 0.0028, 0.0028, 520.29878734], [1517239680000, 0.00279301, 0.0028, 0.00279301, 0.0028, 5.33583906], [1517239740000, 0.0028, 0.0028, 0.00279301, 0.00279301, 19.80479623], [1517239800000, 0.00279301, 0.0028, 0.00279301, 0.0028, 47.09661101], [1517239860000, 0.0028, 0.0028, 0.00279302, 0.00279302, 39.93558163], [1517239920000, 0.00279811, 0.00279811, 0.0027981, 0.0027981, 103.99729014], [1517239980000, 0.0027931, 0.0027931, 0.0027931, 0.0027931, 22.0], [1517240040000, 0.00279311, 0.00279311, 0.00279303, 0.00279303, 245.85955104], [1517240100000, 0.00279315, 0.00279315, 0.00279315, 0.00279315, 31.450781], [1517240160000, 0.00279696, 0.00279696, 0.00279315, 0.00279696, 9.80323947], [1517240220000, 0.00279695, 0.00279696, 0.00279695, 0.00279696, 21.7787286], [1517240280000, 0.00279696, 0.00279696, 0.0027932, 0.0027932, 15.50689963], [1517240400000, 0.0027932, 0.00279696, 0.0027932, 0.00279696, 521.89910669], [1517240460000, 0.00279325, 0.00279695, 0.0027932, 0.00279695, 7.20219071], [1517240520000, 0.00279329, 0.00279329, 0.00279329, 0.00279329, 193.27860422], [1517240580000, 0.00279329, 0.00279696, 0.00279329, 0.00279696, 408.99580648], [1517240640000, 0.00279696, 0.00279696, 0.0027933, 0.0027933, 162.26520142], [1517240700000, 0.0027933, 0.002795, 0.0027933, 0.002795, 7.31129616], [1517240760000, 0.0027933, 0.0027933, 0.0027933, 0.0027933, 16.92573143], [1517240820000, 0.0027933, 0.0027933, 0.0027933, 0.0027933, 53.44028284], [1517240880000, 0.00279329, 0.0027933, 0.00279329, 0.00279329, 81.17027367], [1517240940000, 0.00279329, 0.0027933, 0.00279329, 0.0027933, 70.9213517], [1517241000000, 0.00279495, 0.00279497, 0.00279495, 0.00279495, 5.90399849], [1517241060000, 0.00279495, 0.00279497, 0.00279002, 0.00279002, 811.49382805], [1517241120000, 0.00279002, 0.00279497, 0.00279002, 0.00279002, 55.94343414], [1517241180000, 0.00279002, 0.00279497, 0.00279002, 0.00279497, 12.67876396], [1517241240000, 0.00279497, 0.00279497, 0.002792, 0.002793, 1181.65904683], [1517241300000, 0.002793, 0.002795, 0.00279002, 0.00279396, 118.04105455], [1517241360000, 0.00279396, 0.00279696, 0.00279003, 0.00279003, 249.57918126], [1517241420000, 0.00279002, 0.00279003, 0.00279001, 0.00279001, 509.58799989], [1517241480000, 0.00279, 0.00279, 0.00279, 0.00279, 131.90451666], [1517241540000, 0.00279, 0.00279001, 0.00278983, 0.00279001, 68.93882693], [1517241600000, 0.00279001, 0.00279001, 0.00278538, 0.00279001, 370.40239247], [1517241660000, 0.00279, 0.00279002, 0.00278538, 0.00278538, 22.25499897], [1517241720000, 0.00278538, 0.00278538, 0.00278501, 0.00278538, 44.71270375], [1517241780000, 0.00278501, 0.00278538, 0.00278501, 0.00278501, 52.49084651], [1517241840000, 0.002785, 0.002785, 0.0027815, 0.0027815, 62.85408089], [1517241900000, 0.0027815, 0.002783, 0.0027815, 0.0027815, 37.27568834], [1517241960000, 0.0027815, 0.0027815, 0.0027809, 0.0027809, 25.59298976], [1517242020000, 0.00278089, 0.00278089, 0.00278, 0.00278089, 17.96812235], [1517242080000, 0.00278089, 0.002783, 0.00278089, 0.002783, 38.97389631], [1517242140000, 0.002783, 0.00278538, 0.00278089, 0.00278089, 89.3709296], [1517242200000, 0.00278501, 0.00278501, 0.00278089, 0.00278089, 81.92498673], [1517242260000, 0.00279002, 0.00279002, 0.002781, 0.002781, 11.75561486], [1517242320000, 0.00279, 0.00279, 0.00279, 0.00279, 2.176046], [1517242380000, 0.00279, 0.00279002, 0.00279, 0.00279, 288.39354864], [1517242440000, 0.00279002, 0.00279002, 0.0027811, 0.00279002, 182.76319206], [1517242500000, 0.00279001, 0.00279002, 0.00279001, 0.00279002, 21.13048094], [1517242560000, 0.00279002, 0.00279002, 0.00279001, 0.00279002, 162.39446528], [1517242620000, 0.00279002, 0.00279328, 0.00279002, 0.002791, 148.05457584], [1517242680000, 0.002791, 0.002792, 0.002791, 0.002792, 20.27009191], [1517242740000, 0.002792, 0.002792, 0.00279103, 0.00279104, 13.15796651], [1517242800000, 0.00279104, 0.002792, 0.00279104, 0.00279199, 119.65767866], [1517242860000, 0.00279199, 0.002792, 0.00279199, 0.00279199, 260.0503166], [1517242920000, 0.002792, 0.0027922, 0.002792, 0.0027922, 24.63509191], [1517242980000, 0.002792, 0.00279326, 0.002792, 0.00279201, 30.10561749], [1517243040000, 0.00279201, 0.00279328, 0.002792, 0.00279328, 124.39891279], [1517243100000, 0.00279328, 0.00279328, 0.00279201, 0.00279324, 38.67881136], [1517243160000, 0.002793, 0.00279321, 0.002793, 0.002793, 266.62953943], [1517243220000, 0.002793, 0.00279322, 0.002793, 0.00279322, 107.38884707], [1517243280000, 0.00279322, 0.00279323, 0.002793, 0.002793, 160.55494964], [1517243340000, 0.002793, 0.00279396, 0.002793, 0.002793, 481.62398977], [1517243400000, 0.00279301, 0.00279695, 0.00279301, 0.00279693, 82.1661713], [1517243460000, 0.00279693, 0.00279696, 0.00279301, 0.00279301, 380.91376776], [1517243520000, 0.00279308, 0.00279696, 0.00279308, 0.0027932, 434.35633349], [1517243580000, 0.0027932, 0.00279696, 0.0027932, 0.00279321, 25.078052], [1517243640000, 0.00279321, 0.00279695, 0.0027932, 0.0027932, 78.4007493], [1517243700000, 0.0027932, 0.00279321, 0.0027932, 0.00279321, 33.35652839], [1517243760000, 0.00279321, 0.00279693, 0.0027932, 0.0027932, 128.80444249], [1517243820000, 0.00279301, 0.0027932, 0.00279301, 0.00279301, 443.13348419], [1517243880000, 0.00279301, 0.00279301, 0.00279001, 0.00279001, 191.40235708], [1517243940000, 0.00279001, 0.00279001, 0.0027821, 0.00279, 1.42692967], [1517244000000, 0.00279, 0.00279, 0.00279, 0.00279, 7.22041046], [1517244060000, 0.00279, 0.00279, 0.00278531, 0.00278531, 9.29904469], [1517244120000, 0.00278531, 0.00278531, 0.00278531, 0.00278531, 4.30930024], [1517244180000, 0.00278531, 0.00278531, 0.00278531, 0.00278531, 70.69119161], [1517244240000, 0.00278531, 0.00279, 0.00278531, 0.00279, 100.35109892], [1517244300000, 0.002785, 0.00279, 0.0027821, 0.0027821, 488.28116863], [1517244360000, 0.00279, 0.0027932, 0.00279, 0.0027932, 376.00012392], [1517244420000, 0.0027932, 0.0027932, 0.00279, 0.00279001, 46.0556466], [1517244480000, 0.00279318, 0.00279318, 0.00279318, 0.00279318, 48.92948228], [1517244540000, 0.0027932, 0.00279694, 0.00279318, 0.00279318, 126.90174751], [1517244600000, 0.00279318, 0.00279696, 0.00279001, 0.00279002, 232.37768647], [1517244660000, 0.00279002, 0.00279003, 0.00279002, 0.00279002, 13.5349554], [1517244720000, 0.00279002, 0.00279599, 0.00279002, 0.00279003, 55.21505868], [1517244780000, 0.00279003, 0.002795, 0.00279003, 0.00279004, 120.86374242], [1517244840000, 0.00279004, 0.00279499, 0.00279004, 0.00279499, 46.29793617], [1517244900000, 0.00279499, 0.00279696, 0.00279004, 0.00279004, 193.35886706], [1517244960000, 0.00279004, 0.00279696, 0.00279004, 0.00279004, 60.48233141], [1517245020000, 0.00279003, 0.00279696, 0.00279003, 0.00279005, 24.2938997], [1517245080000, 0.00279005, 0.00279696, 0.00279005, 0.00279005, 274.4233979], [1517245140000, 0.00279697, 0.00279811, 0.00279005, 0.00279005, 367.00630754], [1517245200000, 0.002796, 0.00279696, 0.00279005, 0.00279005, 469.6811277], [1517245260000, 0.00279005, 0.00279005, 0.00279005, 0.00279005, 58.64293202], [1517245320000, 0.00279693, 0.00279695, 0.00279005, 0.00279005, 380.27845403], [1517245380000, 0.00279005, 0.00279005, 0.00279005, 0.00279005, 19.56970842], [1517245440000, 0.00279695, 0.00279695, 0.00279, 0.00279693, 652.91048948], [1517245500000, 0.00279691, 0.00279695, 0.002781, 0.00279695, 28.57602535], [1517245620000, 0.00278101, 0.00279694, 0.00278101, 0.00279694, 20.54638531], [1517245680000, 0.00279, 0.00279, 0.00279, 0.00279, 3.41297827], [1517245740000, 0.00278101, 0.00278101, 0.00278101, 0.00278101, 88.32519919], [1517245800000, 0.00278101, 0.002787, 0.00278101, 0.002787, 28.89598424], [1517245860000, 0.00278998, 0.00278998, 0.00278101, 0.002782, 56.87116955], [1517245920000, 0.00278999, 0.00278999, 0.002782, 0.002782, 44.51773848], [1517245980000, 0.00278121, 0.002782, 0.00278121, 0.002782, 2.59008997], [1517246040000, 0.00278129, 0.002782, 0.002781, 0.002781, 213.2545914], [1517246100000, 0.002781, 0.00278111, 0.00277888, 0.00277888, 157.41958649], [1517246160000, 0.00277777, 0.00277777, 0.00277697, 0.002777, 103.83988894], [1517246220000, 0.002777, 0.002777, 0.00277696, 0.00277697, 8.39232423], [1517246280000, 0.00277697, 0.00277697, 0.0027744, 0.0027744, 135.13971232], [1517246340000, 0.0027744, 0.0027744, 0.00277245, 0.00277245, 81.41517663], [1517246400000, 0.00277245, 0.002775, 0.0027723, 0.0027723, 487.60422843], [1517246460000, 0.00277245, 0.002775, 0.002765, 0.002775, 124.42133277], [1517246520000, 0.002775, 0.00277777, 0.00277245, 0.00277245, 1200.36396823], [1517246580000, 0.00277246, 0.00277246, 0.002765, 0.00277246, 35.80402304], [1517246640000, 0.00276873, 0.00277246, 0.00276873, 0.00277246, 6.37659136], [1517246700000, 0.00277246, 0.00277246, 0.00276873, 0.00277246, 44.02403998], [1517246760000, 0.00277246, 0.00279, 0.00277246, 0.00278999, 295.09389193], [1517246820000, 0.00278998, 0.00278998, 0.00277, 0.00278, 162.06074616], [1517246880000, 0.00278986, 0.00278987, 0.00278, 0.00278, 395.10127464], [1517246940000, 0.00278005, 0.002781, 0.00278005, 0.002781, 106.97772384], [1517247000000, 0.002781, 0.002781, 0.00278005, 0.00278007, 69.14798157], [1517247060000, 0.00278008, 0.00278983, 0.00278007, 0.00278983, 52.63499853], [1517247180000, 0.00278982, 0.00278982, 0.0027801, 0.0027801, 289.28989864], [1517247240000, 0.0027801, 0.00278632, 0.0027801, 0.00278632, 103.76706957], [1517247360000, 0.00278012, 0.0027863, 0.00278012, 0.0027863, 107.93757217], [1517247420000, 0.0027863, 0.0027863, 0.00278013, 0.00278013, 115.83710955], [1517247480000, 0.00278013, 0.0027863, 0.00278013, 0.0027863, 379.13459579], [1517247540000, 0.0027863, 0.0027863, 0.00278013, 0.0027863, 56.16584177], [1517247600000, 0.0027863, 0.0027863, 0.0027863, 0.0027863, 66.90020452], [1517247660000, 0.00278014, 0.00278014, 0.00278014, 0.00278014, 5.0], [1517247720000, 0.00278629, 0.0027863, 0.00278629, 0.0027863, 16.95976442], [1517247780000, 0.00278629, 0.0027863, 0.00278015, 0.002781, 6.10127342], [1517247840000, 0.0027863, 0.00278982, 0.00278025, 0.00278025, 334.83717329], [1517247900000, 0.0027833, 0.00278982, 0.0027833, 0.0027833, 319.85228282], [1517247960000, 0.0027833, 0.00279339, 0.0027833, 0.00279339, 868.20365898], [1517248020000, 0.00279339, 0.00279339, 0.0027833, 0.00278981, 34.94841985], [1517248080000, 0.00278333, 0.00281001, 0.002771, 0.00278979, 2711.00719817], [1517248140000, 0.00279799, 0.00279799, 0.00279799, 0.00279799, 67.86420729], [1517248200000, 0.0027992, 0.0027992, 0.00277247, 0.00277247, 48.27583664], [1517248260000, 0.00277811, 0.00279596, 0.0027781, 0.0027781, 24.31496548], [1517248320000, 0.0027781, 0.00279089, 0.0027781, 0.0027781, 69.56750949], [1517248380000, 0.0027781, 0.0027907, 0.0027781, 0.0027781, 110.72884419], [1517248500000, 0.00278935, 0.00278935, 0.00278387, 0.00278393, 11.61272314], [1517248560000, 0.00278393, 0.00278952, 0.0027781, 0.0027781, 36.15948359], [1517248620000, 0.0027781, 0.00279022, 0.0027781, 0.002779, 498.4698788], [1517248680000, 0.0027795, 0.00279088, 0.0027795, 0.0027795, 205.79330814], [1517248740000, 0.00277951, 0.00279079, 0.0027795, 0.0027795, 1019.36490578], [1517248800000, 0.00278395, 0.00279089, 0.00278395, 0.00279089, 249.01367846], [1517248860000, 0.002791, 0.00279698, 0.00278395, 0.00278395, 62.62416616], [1517248920000, 0.00278395, 0.00278395, 0.00278395, 0.00278395, 0.79204008], [1517248980000, 0.00278395, 0.00278395, 0.00278395, 0.00278395, 9.66091359], [1517249040000, 0.00279596, 0.00279596, 0.00278395, 0.00278395, 494.04538924], [1517249100000, 0.00279567, 0.0027957, 0.00278395, 0.00279, 384.36456758], [1517249160000, 0.00278, 0.00279563, 0.00277955, 0.00277956, 9.39648204], [1517249220000, 0.00277955, 0.00278003, 0.00277955, 0.00278003, 4.89472479], [1517249280000, 0.00279397, 0.00279397, 0.00279397, 0.00279397, 30.0], [1517249340000, 0.00279094, 0.00279094, 0.00279093, 0.00279093, 4.26160366], [1517249400000, 0.00278029, 0.00278029, 0.00278029, 0.00278029, 5.30108594], [1517249460000, 0.0027803, 0.00279081, 0.00278029, 0.00279, 390.94954644], [1517249520000, 0.00278598, 0.00278598, 0.00278029, 0.00278029, 20.68814151], [1517249580000, 0.00278596, 0.00278596, 0.00278029, 0.00278029, 374.99357133], [1517249640000, 0.00278003, 0.00278003, 0.00277955, 0.00277955, 131.58096586], [1517249700000, 0.0027796, 0.0027796, 0.0027796, 0.0027796, 20.20206437], [1517249820000, 0.0027796, 0.0027796, 0.0027796, 0.0027796, 196.0], [1517249880000, 0.00277959, 0.0027796, 0.00277955, 0.00277956, 101.05484938], [1517249940000, 0.00277956, 0.00277956, 0.002779, 0.002779, 624.00998972], [1517250000000, 0.00277956, 0.00277956, 0.002779, 0.00277901, 766.36868208], [1517250060000, 0.00277956, 0.00277956, 0.00277901, 0.00277901, 1.30402472], [1517250120000, 0.00277956, 0.00279199, 0.0027795, 0.00279199, 98.29448616], [1517250180000, 0.002792, 0.002792, 0.002779, 0.002779, 170.94184651], [1517250240000, 0.002779, 0.002779, 0.0027781, 0.0027781, 6.775], [1517250300000, 0.00279, 0.00279, 0.00278, 0.00279, 24.11029402], [1517250360000, 0.00279, 0.00279, 0.00277246, 0.00277246, 262.87895594], [1517250420000, 0.00277246, 0.0027781, 0.00277245, 0.00277246, 21.63019913], [1517250480000, 0.00277246, 0.00279, 0.00277246, 0.00278999, 62.3721453], [1517250540000, 0.00278999, 0.00279, 0.00278999, 0.00279, 43.77922836], [1517250600000, 0.00279, 0.002792, 0.00278999, 0.00278999, 831.00950707], [1517250660000, 0.00278999, 0.00278999, 0.00278999, 0.00278999, 12.43885852], [1517250720000, 0.00278999, 0.00278999, 0.00278999, 0.00278999, 1.31218199], [1517250780000, 0.0027899, 0.0027899, 0.0027899, 0.0027899, 0.76324051], [1517250840000, 0.00278999, 0.002792, 0.00278999, 0.00279, 58.88828669], [1517250900000, 0.00279001, 0.00279001, 0.00277394, 0.0027899, 77.86489359], [1517250960000, 0.00277394, 0.0027899, 0.00277394, 0.0027899, 31.40791488], [1517251020000, 0.00277402, 0.0027899, 0.00277396, 0.0027899, 1.83540505], [1517251080000, 0.0027899, 0.00279, 0.00277398, 0.00279, 92.9994522], [1517251140000, 0.0027899, 0.0027899, 0.00277398, 0.00277398, 132.75367018], [1517251200000, 0.00277502, 0.0027899, 0.00277502, 0.002789, 19.16871572], [1517251260000, 0.002789, 0.0027899, 0.00277502, 0.00277502, 20.19008265], [1517251320000, 0.00277502, 0.00277502, 0.00277398, 0.00277398, 7.32797613], [1517251380000, 0.00277502, 0.00277502, 0.00277502, 0.00277502, 0.28945819], [1517251440000, 0.00277398, 0.00277398, 0.00277246, 0.00277388, 46.73781711], [1517251500000, 0.00277395, 0.00277395, 0.00277388, 0.00277388, 190.00434551], [1517251560000, 0.00277388, 0.00277388, 0.00277388, 0.00277388, 26.49424179], [1517251620000, 0.00277388, 0.00277388, 0.00277388, 0.00277388, 16.0], [1517251680000, 0.00277386, 0.00277388, 0.00277245, 0.00277245, 159.91957255], [1517251740000, 0.00277386, 0.00277386, 0.00277386, 0.00277386, 1.4], [1517251800000, 0.00277388, 0.00277388, 0.00277386, 0.00277388, 66.5234355], [1517251860000, 0.00278626, 0.00278626, 0.00278626, 0.00278626, 11.51340336], [1517251980000, 0.00277388, 0.00277388, 0.00277388, 0.00277388, 21.17161922], [1517252040000, 0.00277647, 0.00277647, 0.00277388, 0.00277388, 6.93677938], [1517252100000, 0.00277389, 0.00277389, 0.00277388, 0.00277388, 41.88345671], [1517252160000, 0.00277388, 0.00277388, 0.00277388, 0.00277388, 3.54683298], [1517252220000, 0.00277389, 0.00278546, 0.00277389, 0.00277647, 79.64667423], [1517252280000, 0.00277647, 0.00277647, 0.00277, 0.00277, 539.90250016], [1517252340000, 0.00277, 0.00277, 0.00276322, 0.00276322, 491.01523027], [1517252400000, 0.00276322, 0.00276322, 0.00275506, 0.00275506, 767.76635151], [1517252460000, 0.0027599, 0.00277, 0.00275888, 0.00277, 127.53865936], [1517252520000, 0.00276, 0.00276, 0.00275607, 0.00276, 357.44787923], [1517252580000, 0.00276, 0.00277, 0.00275992, 0.00277, 28.36390438], [1517252640000, 0.002762, 0.002762, 0.002762, 0.002762, 39.96221043], [1517252700000, 0.00278401, 0.00278401, 0.00276003, 0.00276003, 12.35919282], [1517252760000, 0.00276005, 0.00276005, 0.00276005, 0.00276005, 6.03398302], [1517252820000, 0.00276006, 0.00277999, 0.00276006, 0.00277999, 44.01015504], [1517252880000, 0.00277999, 0.00277999, 0.00277999, 0.00277999, 15.18008387], [1517252940000, 0.00277996, 0.00277996, 0.00277996, 0.00277996, 5.53962812], [1517253000000, 0.00277996, 0.00277997, 0.00277996, 0.00277997, 92.92986964], [1517253060000, 0.00277995, 0.00277995, 0.00277994, 0.00277994, 6.18559866], [1517253120000, 0.00277994, 0.00277995, 0.00276013, 0.0027611, 169.45589703], [1517253180000, 0.0027611, 0.00277995, 0.00276013, 0.0027609, 164.45186337], [1517253240000, 0.00276112, 0.00276112, 0.00276112, 0.00276112, 1.0], [1517253300000, 0.00277003, 0.0027799, 0.00277003, 0.0027799, 23.23242623], [1517253360000, 0.00277989, 0.00277989, 0.00277986, 0.00277989, 101.7044124], [1517253420000, 0.002778, 0.002778, 0.00275506, 0.00275506, 1056.01851464], [1517253480000, 0.002757, 0.0027799, 0.002752, 0.00275213, 2221.13471254], [1517253540000, 0.00275303, 0.00277978, 0.0027523, 0.00277978, 18.65562519], [1517253600000, 0.00275407, 0.00277965, 0.00275407, 0.00277939, 52.27641941], [1517253660000, 0.00275503, 0.00277892, 0.00275, 0.00277886, 2579.60228682], [1517253720000, 0.002757, 0.002757, 0.00275021, 0.00275303, 194.14866673], [1517253780000, 0.00275303, 0.00275503, 0.00275027, 0.00275503, 850.12281469], [1517253840000, 0.00275503, 0.00275503, 0.00275025, 0.00275503, 182.04077615], [1517253900000, 0.00275503, 0.00275503, 0.00275503, 0.00275503, 96.88048308], [1517253960000, 0.00275503, 0.00275503, 0.00275215, 0.00275503, 48.70420507], [1517254020000, 0.00275503, 0.00275503, 0.00275503, 0.00275503, 70.57968604], [1517254080000, 0.00275503, 0.00275503, 0.00275216, 0.00275503, 64.96602658], [1517254140000, 0.00275503, 0.00275503, 0.00275503, 0.00275503, 12.29572632], [1517254200000, 0.00275503, 0.00275503, 0.002755, 0.002755, 33.56255315], [1517254260000, 0.00275217, 0.002755, 0.00275216, 0.002755, 31.34474419], [1517254320000, 0.002755, 0.002755, 0.002755, 0.002755, 65.87558474], [1517254380000, 0.002755, 0.002755, 0.002755, 0.002755, 9.89940811], [1517254440000, 0.00275503, 0.00275503, 0.00275503, 0.00275503, 62.96626556], [1517254500000, 0.00275503, 0.00275503, 0.002755, 0.00275503, 20.76127608], [1517254560000, 0.00275502, 0.0027718, 0.00275501, 0.00275501, 196.02986975], [1517254620000, 0.00277111, 0.00277111, 0.00275216, 0.00275216, 146.4976274], [1517254680000, 0.00277111, 0.00277111, 0.00277111, 0.00277111, 0.57033425], [1517254740000, 0.00276996, 0.00276996, 0.00276996, 0.00276996, 4.68662165], [1517254800000, 0.00276989, 0.00276995, 0.00275221, 0.00276995, 40.37857533], [1517254860000, 0.0027699, 0.00276995, 0.00275222, 0.00276995, 26.67126469], [1517254920000, 0.00276994, 0.00276994, 0.002765, 0.00276994, 75.26568151], [1517254980000, 0.00276994, 0.00276994, 0.00276501, 0.00276993, 39.504129], [1517255040000, 0.00276989, 0.00276989, 0.00276989, 0.00276989, 8.12661229], [1517255100000, 0.00276502, 0.00276989, 0.00276502, 0.00276502, 12.88529193], [1517255160000, 0.0027665, 0.00276988, 0.0027665, 0.00276988, 57.67204388], [1517255220000, 0.00276988, 0.00276988, 0.00276988, 0.00276988, 76.87406678], [1517255280000, 0.00276988, 0.00276989, 0.00276651, 0.00276651, 39.39159614], [1517255340000, 0.00276651, 0.00276989, 0.0027665, 0.0027665, 11.35280375], [1517255400000, 0.00276989, 0.00276989, 0.00276502, 0.00276989, 19.52118838], [1517255460000, 0.00276503, 0.00276503, 0.00275213, 0.00275213, 289.66329798], [1517255520000, 0.00276501, 0.00276501, 0.00276501, 0.00276501, 501.13594281], [1517255580000, 0.00276986, 0.00276995, 0.0027522, 0.0027522, 315.40953213], [1517255640000, 0.00275213, 0.0027522, 0.00275, 0.00275, 2545.9295901], [1517255700000, 0.00275, 0.00275, 0.00274924, 0.00274924, 216.35951356], [1517255760000, 0.00274923, 0.00274923, 0.00274903, 0.00274904, 244.22430195], [1517255820000, 0.00274904, 0.00275, 0.00274895, 0.00274895, 1552.91751653], [1517255880000, 0.00274895, 0.00275, 0.00274895, 0.002749, 369.61388299], [1517255940000, 0.002749, 0.00275, 0.002749, 0.00275, 155.0697349], [1517256000000, 0.00275, 0.00275, 0.00274895, 0.00274895, 352.9489522], [1517256060000, 0.00274895, 0.00274896, 0.00274725, 0.00274725, 62.40294343], [1517256120000, 0.002748, 0.00276896, 0.00274725, 0.00274725, 224.04651796], [1517256180000, 0.00274726, 0.00274726, 0.00274725, 0.00274725, 95.54011808], [1517256240000, 0.00274725, 0.00276766, 0.00274725, 0.00276766, 6.62991394], [1517256360000, 0.00276388, 0.00276388, 0.00274725, 0.00274725, 25.75335444], [1517256420000, 0.00275216, 0.00276304, 0.00274725, 0.00276287, 1212.50349031], [1517256480000, 0.00276287, 0.00276598, 0.00276287, 0.00276287, 775.83722962], [1517256540000, 0.00276287, 0.00276287, 0.00275, 0.00275, 4.75823469], [1517256600000, 0.00275, 0.002761, 0.00275, 0.00275001, 20.123018], [1517256660000, 0.00275, 0.00275001, 0.00275, 0.00275001, 140.24057273], [1517256720000, 0.00275001, 0.00276096, 0.00275001, 0.00276096, 94.27075819], [1517256780000, 0.00276, 0.00276995, 0.00275555, 0.00276995, 226.45999192], [1517256840000, 0.002765, 0.00277989, 0.00275555, 0.00277599, 1765.3345892], [1517256900000, 0.002764, 0.00276401, 0.00275555, 0.00276401, 171.98364117], [1517256960000, 0.00276401, 0.00277379, 0.00276401, 0.00277379, 52.13008059], [1517257020000, 0.00277361, 0.00277361, 0.00275555, 0.00277351, 26.90550607], [1517257080000, 0.00275555, 0.00275555, 0.00275555, 0.00275555, 9.5903004], [1517257140000, 0.002754, 0.00275555, 0.00275174, 0.00275555, 14.30342682], [1517257200000, 0.00275175, 0.00275555, 0.0027501, 0.0027501, 180.49774199], [1517257260000, 0.00275013, 0.00275555, 0.00275011, 0.00275039, 144.42826987], [1517257320000, 0.00275555, 0.00275555, 0.00275555, 0.00275555, 12.03130062], [1517257380000, 0.00275555, 0.00275555, 0.00275555, 0.00275555, 6.0067145], [1517257440000, 0.00275555, 0.00275555, 0.00275555, 0.00275555, 8.88087103], [1517257500000, 0.00276999, 0.00277245, 0.00276998, 0.00277245, 184.56304039], [1517257560000, 0.00275858, 0.0027734, 0.00275858, 0.0027734, 202.45310802], [1517257620000, 0.00277338, 0.00277339, 0.00276201, 0.002765, 503.69123898], [1517257680000, 0.002765, 0.00276505, 0.002765, 0.00276505, 14.7854108], [1517257740000, 0.00276505, 0.00277225, 0.00276201, 0.00277225, 27.48485517], [1517257800000, 0.00276999, 0.00277, 0.00276201, 0.00277, 80.56800628], [1517257860000, 0.00276998, 0.00276999, 0.00276998, 0.00276999, 16.09944687], [1517257920000, 0.00276999, 0.00277238, 0.00275556, 0.00277237, 408.86275119], [1517257980000, 0.00275556, 0.00275556, 0.00275556, 0.00275556, 2.00230888], [1517258040000, 0.00277229, 0.00277229, 0.00277229, 0.00277229, 6.411371], [1517258100000, 0.00277229, 0.00277229, 0.00277224, 0.00277224, 59.89076035], [1517258160000, 0.00275557, 0.00277223, 0.00275557, 0.00277223, 6.04610967], [1517258220000, 0.00275557, 0.00277, 0.00275556, 0.00277, 9.78623332], [1517258280000, 0.00277, 0.00277, 0.00275556, 0.00275556, 454.51121967], [1517258340000, 0.00276102, 0.00276102, 0.00276102, 0.00276102, 155.0], [1517258400000, 0.00276102, 0.00276999, 0.00276102, 0.00276999, 5.96998048], [1517258580000, 0.00276989, 0.00276989, 0.00276988, 0.00276988, 28.61661705], [1517258640000, 0.00276103, 0.00276987, 0.00276103, 0.00276103, 15.01235079], [1517258700000, 0.00276103, 0.00276984, 0.00276103, 0.00276983, 35.22405849], [1517258760000, 0.002762, 0.0027625, 0.002762, 0.0027625, 20.19583105], [1517258820000, 0.0027625, 0.0027697, 0.0027625, 0.0027697, 13.81373055], [1517258880000, 0.002763, 0.00276965, 0.002763, 0.002763, 10.23135601], [1517258940000, 0.0027635, 0.00276958, 0.0027635, 0.00276958, 2.84010963], [1517259000000, 0.00276958, 0.00277229, 0.00276352, 0.00276352, 162.37365875], [1517259060000, 0.00276353, 0.00276353, 0.00276352, 0.00276352, 7.88847711], [1517259120000, 0.002763, 0.00276352, 0.002763, 0.00276352, 47.44129779], [1517259180000, 0.0027655, 0.0027655, 0.002764, 0.002764, 102.87789868], [1517259240000, 0.0027655, 0.00276957, 0.00276406, 0.00276957, 72.28607242], [1517259300000, 0.00277, 0.00277991, 0.00277, 0.00277, 88.15091621], [1517259360000, 0.00277, 0.00277799, 0.00277, 0.00277, 111.34176905], [1517259420000, 0.00277, 0.00277, 0.00277, 0.00277, 309.53632851], [1517259480000, 0.00277, 0.00277599, 0.00277, 0.00277, 36.6784356], [1517259540000, 0.00277001, 0.00277299, 0.00277, 0.00277, 56.93625872], [1517259600000, 0.00277, 0.00277287, 0.00277, 0.00277, 188.95015238], [1517259660000, 0.00277286, 0.00277286, 0.00277, 0.00277, 626.99277378], [1517259720000, 0.00277283, 0.00277283, 0.002765, 0.002765, 549.14173579], [1517259780000, 0.00276502, 0.00277399, 0.00276502, 0.00276505, 266.22515276], [1517259840000, 0.00277399, 0.002775, 0.00276505, 0.00277499, 118.90772309], [1517259900000, 0.00277498, 0.00277498, 0.00277498, 0.00277498, 127.57985943], [1517259960000, 0.002774, 0.00277498, 0.00276551, 0.00276551, 213.61460055], [1517260020000, 0.00276508, 0.0027655, 0.0027552, 0.0027552, 1476.37771412], [1517260080000, 0.00276, 0.0027655, 0.00276, 0.0027655, 130.56388467], [1517260140000, 0.0027655, 0.00277498, 0.0027654, 0.00277498, 1305.91907056], [1517260200000, 0.00277498, 0.00277499, 0.0027655, 0.00277482, 70.76042228], [1517260320000, 0.00277459, 0.00277459, 0.00276551, 0.00276551, 5.84214783], [1517260380000, 0.0027738, 0.0027738, 0.0027655, 0.0027655, 4.2003444], [1517260440000, 0.0027738, 0.0027746, 0.0027738, 0.002774, 95.16136261], [1517260500000, 0.0027665, 0.002774, 0.0027665, 0.002774, 11.51137397], [1517260560000, 0.002774, 0.002774, 0.002774, 0.002774, 291.67637346], [1517260620000, 0.002774, 0.002774, 0.002774, 0.002774, 20.57813863], [1517260680000, 0.00276651, 0.002774, 0.0027665, 0.0027665, 45.97176949], [1517260800000, 0.00276653, 0.002774, 0.00276551, 0.002774, 40.50839062], [1517260860000, 0.002774, 0.002774, 0.00277, 0.002774, 280.44371419], [1517260920000, 0.00277, 0.00277, 0.00276551, 0.00276551, 1.38355354], [1517260980000, 0.00276551, 0.00276551, 0.00276551, 0.00276551, 0.69785532], [1517261040000, 0.00276551, 0.00276551, 0.0027655, 0.0027655, 42.50604103], [1517261100000, 0.0027654, 0.0027654, 0.002765, 0.002765, 248.55735683], [1517261160000, 0.00275501, 0.00275501, 0.00275501, 0.00275501, 206.82384603], [1517261220000, 0.00275503, 0.00275503, 0.002755, 0.002755, 11.2293662], [1517261280000, 0.00276, 0.00276, 0.00276, 0.00276, 5.0], [1517261340000, 0.002765, 0.002765, 0.002765, 0.002765, 177.1200333], [1517261400000, 0.0027655, 0.0027655, 0.002765, 0.002765, 194.53575135], [1517261460000, 0.0027655, 0.00276551, 0.0027651, 0.0027651, 306.34931039], [1517261580000, 0.00276511, 0.00276511, 0.00276511, 0.00276511, 23.26904769], [1517261640000, 0.00276511, 0.00276551, 0.0027651, 0.00276511, 50.7150857], [1517261700000, 0.0027651, 0.00277399, 0.0027651, 0.00277398, 81.07286297], [1517261760000, 0.00276511, 0.00276511, 0.0027651, 0.0027651, 68.89081122], [1517261820000, 0.002765, 0.002765, 0.002765, 0.002765, 41.20801158], [1517261880000, 0.00276501, 0.00277367, 0.002765, 0.00277367, 70.48749649], [1517261940000, 0.00276501, 0.00276501, 0.002765, 0.002765, 86.5296747], [1517262000000, 0.00277353, 0.00277353, 0.002765, 0.0027735, 22.40667898], [1517262060000, 0.002765, 0.00277355, 0.002765, 0.002765, 22.32234919], [1517262120000, 0.002765, 0.0027739, 0.002765, 0.002765, 82.83122125], [1517262180000, 0.00277099, 0.00277099, 0.00277099, 0.00277099, 0.59256111], [1517262240000, 0.00277099, 0.00277099, 0.002766, 0.00277098, 58.19676248], [1517262300000, 0.00277196, 0.0027899, 0.00277098, 0.00278987, 285.86896033], [1517262360000, 0.0027731, 0.00278399, 0.00277098, 0.00277098, 262.64119574], [1517262420000, 0.00278347, 0.00278347, 0.002765, 0.002765, 594.78132496], [1517262480000, 0.00277098, 0.00277799, 0.002765, 0.00277098, 37.30183547], [1517262540000, 0.00277098, 0.00277098, 0.002765, 0.002765, 4.62508943], [1517262600000, 0.00277097, 0.00277499, 0.002765, 0.00277499, 730.9601177], [1517262660000, 0.00276502, 0.00276502, 0.00276502, 0.00276502, 7.10546258], [1517262720000, 0.00276502, 0.00276502, 0.002765, 0.002765, 62.24435778], [1517262780000, 0.002765, 0.002765, 0.002765, 0.002765, 722.98934587], [1517262840000, 0.00276, 0.00276502, 0.00276, 0.00276502, 5.6902655], [1517262900000, 0.00276502, 0.00277, 0.00276, 0.00277, 146.70341438], [1517262960000, 0.00276998, 0.00276998, 0.00276998, 0.00276998, 1.16265647], [1517263020000, 0.00276001, 0.00276998, 0.00276001, 0.002761, 615.64886272], [1517263080000, 0.002761, 0.002761, 0.00276, 0.00276001, 220.42056214], [1517263140000, 0.00276001, 0.00276992, 0.00276001, 0.00276992, 706.22243224], [1517263200000, 0.00276992, 0.00276994, 0.002761, 0.00276994, 38.91691983], [1517263260000, 0.00276994, 0.00277298, 0.00276994, 0.00276994, 20.51540518], [1517263320000, 0.00276102, 0.00276102, 0.002761, 0.002761, 249.81528282], [1517263440000, 0.002761, 0.00277298, 0.002761, 0.002761, 204.0], [1517263500000, 0.00277299, 0.00277595, 0.00277299, 0.00277592, 23.95458137], [1517263560000, 0.002761, 0.0027611, 0.002761, 0.0027611, 49.70375785], [1517263620000, 0.00276311, 0.00277585, 0.00276311, 0.00277581, 16.41341601], [1517263680000, 0.0027635, 0.00277581, 0.0027635, 0.00276411, 231.43176319], [1517263740000, 0.00276311, 0.00277571, 0.00276311, 0.00276311, 28.56252856], [1517263800000, 0.0027756, 0.00277568, 0.00276311, 0.00276311, 38.76416186], [1517263860000, 0.00276312, 0.00277496, 0.002763, 0.002763, 184.00192147], [1517263980000, 0.002763, 0.002763, 0.002763, 0.002763, 274.62427536], [1517264040000, 0.00277489, 0.00277489, 0.002763, 0.002763, 167.64460936], [1517264160000, 0.00276301, 0.00277474, 0.002763, 0.002763, 88.39210862], [1517264220000, 0.00276301, 0.00276312, 0.002763, 0.002763, 297.03653605], [1517264280000, 0.002763, 0.00277464, 0.002763, 0.00277464, 85.53440799], [1517264340000, 0.00277463, 0.00277463, 0.002763, 0.002763, 30.04734475], [1517264400000, 0.0027746, 0.0027746, 0.002763, 0.002763, 34.74163061], [1517264460000, 0.002763, 0.002763, 0.002761, 0.002762, 558.81160543], [1517264520000, 0.00276103, 0.002762, 0.00276103, 0.00276115, 28.9973391], [1517264580000, 0.00276116, 0.002762, 0.0027611, 0.00276115, 131.85125188], [1517264640000, 0.00276115, 0.002762, 0.0027611, 0.0027611, 203.61329201], [1517264700000, 0.0027611, 0.002762, 0.0027611, 0.0027611, 34.53063975], [1517264760000, 0.002762, 0.002763, 0.00276103, 0.002763, 570.22194576], [1517264820000, 0.002763, 0.002763, 0.00276103, 0.00276104, 38.89588062], [1517264880000, 0.00276104, 0.00276104, 0.00276104, 0.00276104, 1.27056659], [1517264940000, 0.00276105, 0.00276105, 0.00276104, 0.00276104, 15.88628596], [1517265000000, 0.00276104, 0.00276105, 0.00276104, 0.00276104, 64.25390972], [1517265060000, 0.00276103, 0.00276104, 0.00276103, 0.00276103, 107.88359099], [1517265120000, 0.00276103, 0.002763, 0.00276103, 0.002763, 1596.99010237], [1517265180000, 0.0027615, 0.0027615, 0.0027615, 0.0027615, 84.92179238], [1517265240000, 0.0027615, 0.002763, 0.0027615, 0.0027615, 5.99428526], [1517265300000, 0.002763, 0.002763, 0.0027615, 0.002763, 623.75566731], [1517265360000, 0.0027615, 0.0027615, 0.00276104, 0.00276104, 5.26806348], [1517265420000, 0.00276104, 0.0027615, 0.00276103, 0.00276103, 798.04393376], [1517265480000, 0.00276103, 0.00276104, 0.00276103, 0.00276103, 906.83358925], [1517265540000, 0.00276103, 0.0027615, 0.00276102, 0.00276102, 310.26180672], [1517265600000, 0.00276102, 0.0027615, 0.00276102, 0.0027615, 25.68594], [1517265660000, 0.0027615, 0.0027615, 0.00276102, 0.00276103, 371.89588208], [1517265720000, 0.00276103, 0.00276103, 0.00276102, 0.00276103, 64.09202052], [1517265780000, 0.00276102, 0.00276102, 0.00276102, 0.00276102, 0.7986179], [1517265840000, 0.00276103, 0.0027615, 0.00276103, 0.00276103, 148.19806801], [1517265900000, 0.0027615, 0.00277556, 0.0027615, 0.00277519, 15.09401331], [1517265960000, 0.0027615, 0.00277515, 0.00276103, 0.00276201, 40.17901344], [1517266020000, 0.00277491, 0.00277491, 0.00276102, 0.00276102, 435.53077417], [1517266080000, 0.00276109, 0.00277095, 0.00276102, 0.00277095, 205.29150835], [1517266140000, 0.00277095, 0.00277095, 0.00276201, 0.00276201, 11.88036029], [1517266200000, 0.00276201, 0.00277087, 0.00276103, 0.002768, 93.04414296], [1517266260000, 0.00276103, 0.002768, 0.00276103, 0.002768, 5.38508825], [1517266320000, 0.00276103, 0.00276103, 0.00276103, 0.00276103, 153.08531692], [1517266380000, 0.00276102, 0.00276103, 0.00276102, 0.00276102, 114.20584476], [1517266440000, 0.00276103, 0.00276103, 0.00276101, 0.00276102, 469.61861344], [1517266500000, 0.00276102, 0.00276103, 0.00276101, 0.00276103, 229.2680379], [1517266620000, 0.00276103, 0.00276103, 0.00276103, 0.00276103, 26.24015186], [1517266680000, 0.00276105, 0.00276105, 0.00276105, 0.00276105, 16.1635293], [1517266740000, 0.00276106, 0.00277094, 0.00276101, 0.00277094, 87.94905793], [1517266800000, 0.00276101, 0.00277516, 0.00276101, 0.00277516, 746.51982303], [1517266860000, 0.00277516, 0.00278997, 0.00277516, 0.00278997, 50.02173484], [1517266920000, 0.00277999, 0.00277999, 0.00276103, 0.00277999, 153.26500452], [1517266980000, 0.00277001, 0.00277999, 0.00277, 0.00277, 31.43134262], [1517267040000, 0.00276101, 0.00277, 0.00276101, 0.00277, 34.22467897], [1517267100000, 0.00277, 0.00277, 0.00277, 0.00277, 58.39949586], [1517267160000, 0.00277, 0.00277, 0.00277, 0.00277, 32.23880186], [1517267280000, 0.00277001, 0.00280761, 0.00277, 0.00280761, 1789.82482855], [1517267340000, 0.00277, 0.00279299, 0.00276104, 0.00276104, 179.48539919], [1517267400000, 0.00279, 0.00279, 0.00277, 0.00277, 15.73616279], [1517267460000, 0.00277001, 0.00277011, 0.00277, 0.00277011, 121.05406803], [1517267520000, 0.0027925, 0.0027925, 0.00277012, 0.00277012, 51.67918594], [1517267580000, 0.00277012, 0.00278, 0.00277012, 0.00278, 186.63631181], [1517267640000, 0.00277013, 0.00279155, 0.00277013, 0.00279155, 56.57371732], [1517267700000, 0.00279154, 0.00279154, 0.00279149, 0.00279149, 32.95679361], [1517267760000, 0.0027887, 0.0027887, 0.00278847, 0.00278851, 42.60781241], [1517267820000, 0.002772, 0.00278849, 0.00277055, 0.00278849, 63.28194923], [1517267880000, 0.00278841, 0.00279155, 0.00278841, 0.00279155, 123.79147152], [1517267940000, 0.00277201, 0.00277201, 0.00276101, 0.00277114, 701.99641997], [1517268000000, 0.00277114, 0.00277114, 0.00276185, 0.00276202, 38.09656484], [1517268060000, 0.00277114, 0.00279771, 0.00277114, 0.00279771, 98.51338211], [1517268120000, 0.00279326, 0.00279326, 0.00279326, 0.00279326, 2.21188695], [1517268180000, 0.00279266, 0.00279266, 0.00279224, 0.00279224, 74.0403435], [1517268240000, 0.00279188, 0.00279188, 0.00279179, 0.00279179, 3.64235157], [1517268300000, 0.00279111, 0.00279111, 0.00279074, 0.00279074, 73.23204786], [1517268360000, 0.00278999, 0.00278999, 0.00278999, 0.00278999, 0.72270353], [1517268420000, 0.0027725, 0.0027725, 0.00277249, 0.0027725, 54.54234507], [1517268480000, 0.00277249, 0.00277249, 0.00277245, 0.00277245, 456.06326558], [1517268540000, 0.00276653, 0.0027725, 0.00276653, 0.0027725, 14.05601235], [1517268600000, 0.00276672, 0.00278899, 0.00276669, 0.00278899, 427.69785466], [1517268660000, 0.0027667, 0.00277803, 0.0027667, 0.00276675, 3.55098527], [1517268720000, 0.00276661, 0.00278998, 0.0027619, 0.00278998, 101.66944207], [1517268780000, 0.00276702, 0.00278921, 0.00276702, 0.00278921, 6.22036265], [1517268840000, 0.002789, 0.002789, 0.00278892, 0.00278892, 10.25033262], [1517268900000, 0.00278882, 0.00278882, 0.00278874, 0.00278874, 19.67683317], [1517268960000, 0.00278366, 0.00278366, 0.00278366, 0.00278366, 2.9765574], [1517269020000, 0.0027767, 0.0027767, 0.00277002, 0.00277002, 12.2206457], [1517269080000, 0.00277002, 0.0027767, 0.00277001, 0.00277002, 39.74153436], [1517269140000, 0.00277002, 0.002775, 0.00277, 0.002775, 108.57248409], [1517269200000, 0.00276725, 0.00276725, 0.00276675, 0.00276675, 6.97486066], [1517269260000, 0.00276304, 0.002775, 0.00276188, 0.002775, 46.81900591], [1517269320000, 0.002775, 0.002775, 0.002775, 0.002775, 29.01565869], [1517269380000, 0.002775, 0.002775, 0.002775, 0.002775, 6.37], [1517269440000, 0.002775, 0.002775, 0.00276848, 0.002775, 29.38266137], [1517269500000, 0.00277669, 0.00277669, 0.00277669, 0.00277669, 53.53646098], [1517269560000, 0.00277669, 0.0027767, 0.002775, 0.002775, 104.22989983], [1517269620000, 0.0027767, 0.00278, 0.00277501, 0.00277501, 49.86218497], [1517269680000, 0.0027795, 0.0027795, 0.00277501, 0.0027795, 69.80263005], [1517269740000, 0.0027795, 0.00277953, 0.0027795, 0.00277953, 24.28590752], [1517269800000, 0.0027795, 0.00277953, 0.0027795, 0.00277953, 11.80100299], [1517269860000, 0.0027795, 0.0027795, 0.0027795, 0.0027795, 0.65197868], [1517269920000, 0.00277502, 0.00277502, 0.002775, 0.002775, 71.83487442], [1517269980000, 0.00277499, 0.00277499, 0.00277499, 0.00277499, 19.52443642], [1517270040000, 0.00277499, 0.00277499, 0.00277499, 0.00277499, 39.78322343], [1517270100000, 0.00277499, 0.00278, 0.00276202, 0.00278, 1102.66777256], [1517270160000, 0.00277014, 0.00277014, 0.0027701, 0.0027701, 73.480948], [1517270220000, 0.0027701, 0.002775, 0.0027701, 0.0027701, 12.93369368], [1517270280000, 0.0027701, 0.002775, 0.0027701, 0.002775, 23.73064391], [1517270340000, 0.002775, 0.002775, 0.002775, 0.002775, 1.09850092], [1517270400000, 0.00277, 0.00277, 0.002769, 0.002769, 21.09171102], [1517270460000, 0.002769, 0.002769, 0.002769, 0.002769, 1.33243384], [1517270520000, 0.002769, 0.002769, 0.002769, 0.002769, 11.64924657], [1517270580000, 0.002775, 0.002775, 0.00276901, 0.00276901, 89.3733951], [1517270640000, 0.00276901, 0.00276901, 0.00276901, 0.00276901, 19.18903637], [1517270700000, 0.002771, 0.00278, 0.002771, 0.00278, 27.80300075], [1517270760000, 0.00277002, 0.00277002, 0.00277002, 0.00277002, 103.79690702], [1517270820000, 0.00277002, 0.00277002, 0.00277002, 0.00277002, 1.79591541], [1517270880000, 0.00277002, 0.00277002, 0.00277002, 0.00277002, 5.06947351], [1517270940000, 0.00277002, 0.00277002, 0.00277002, 0.00277002, 42.96803599], [1517271000000, 0.00277002, 0.00277989, 0.00277002, 0.00277986, 708.97545608], [1517271060000, 0.00276902, 0.00276902, 0.00276217, 0.00276902, 518.53274563], [1517271120000, 0.00276902, 0.002779, 0.00276902, 0.002779, 10.36025819], [1517271180000, 0.00277985, 0.00278, 0.00277985, 0.00278, 74.31642247], [1517271240000, 0.002785, 0.0027899, 0.002785, 0.002785, 417.00618906], [1517271300000, 0.00278001, 0.00278962, 0.00278001, 0.00278962, 268.35115213], [1517271360000, 0.00278954, 0.00278954, 0.0027801, 0.00278952, 50.7586079], [1517271420000, 0.00278933, 0.00278933, 0.002782, 0.002782, 34.68570726], [1517271540000, 0.002783, 0.002783, 0.002782, 0.00278201, 40.65942711], [1517271600000, 0.00278201, 0.00278201, 0.00278201, 0.00278201, 11.34271711], [1517271660000, 0.00278822, 0.00278822, 0.00278201, 0.00278795, 234.59757131], [1517271720000, 0.00278201, 0.00278201, 0.0027801, 0.0027801, 137.3406046], [1517271780000, 0.0027801, 0.0027801, 0.00278009, 0.0027801, 38.39587363], [1517271840000, 0.00278001, 0.00278769, 0.00276903, 0.00278769, 157.10348737], [1517271900000, 0.00278769, 0.00278769, 0.00278001, 0.00278002, 25.4539713], [1517271960000, 0.0027801, 0.0027801, 0.00278001, 0.00278001, 82.17226273], [1517272020000, 0.00278001, 0.00278001, 0.00276903, 0.00276903, 9.64958023], [1517272080000, 0.00276929, 0.00276929, 0.00276822, 0.00276822, 445.01037301], [1517272140000, 0.00276822, 0.002769, 0.00276625, 0.002769, 484.04559826], [1517272200000, 0.002769, 0.002769, 0.00276625, 0.002769, 911.31936828], [1517272260000, 0.00276625, 0.002769, 0.00276625, 0.002769, 3.34978842], [1517272320000, 0.00276625, 0.002769, 0.00276625, 0.00276899, 304.31635224], [1517272380000, 0.00276899, 0.00276899, 0.00276625, 0.00276899, 26.42856276], [1517272440000, 0.00276899, 0.00276899, 0.00276899, 0.00276899, 118.90396315], [1517272500000, 0.00276899, 0.002769, 0.00276899, 0.002769, 91.96062404], [1517272560000, 0.00276899, 0.00276899, 0.00276899, 0.00276899, 53.16039296], [1517272620000, 0.00276899, 0.00276899, 0.00276899, 0.00276899, 345.85844233], [1517272680000, 0.00276899, 0.00276899, 0.00276899, 0.00276899, 108.95834549], [1517272800000, 0.00276899, 0.00276899, 0.002762, 0.00276899, 203.01673003], [1517272860000, 0.00276899, 0.00276899, 0.00276899, 0.00276899, 0.65006013], [1517272920000, 0.00276899, 0.00276899, 0.00276899, 0.00276899, 0.92199737], [1517272980000, 0.002762, 0.00276899, 0.002762, 0.002762, 60.40874369], [1517273040000, 0.00276201, 0.00276201, 0.002762, 0.00276201, 337.30195125], [1517273100000, 0.00276201, 0.00276201, 0.00276201, 0.00276201, 54.59805964], [1517273160000, 0.00276201, 0.00276201, 0.00276201, 0.00276201, 3.8410812], [1517273220000, 0.002762, 0.00276201, 0.002762, 0.00276201, 5.14541366], [1517273280000, 0.00276201, 0.00276201, 0.002762, 0.00276201, 79.11239013], [1517273340000, 0.00276201, 0.00276201, 0.00276201, 0.00276201, 64.96961884], [1517273400000, 0.002762, 0.00276201, 0.002762, 0.00276201, 55.22697823], [1517273460000, 0.00276201, 0.00276201, 0.002762, 0.002762, 221.04177981], [1517273520000, 0.00276201, 0.00276201, 0.002762, 0.00276201, 249.03620474], [1517273580000, 0.00276201, 0.00276201, 0.002762, 0.00276201, 384.54334339], [1517273640000, 0.00276201, 0.00276201, 0.00276194, 0.00276201, 49.36872487], [1517273700000, 0.00276201, 0.00276201, 0.00276192, 0.00276201, 347.42063546], [1517273760000, 0.00276201, 0.00276201, 0.00276193, 0.00276201, 421.07427322], [1517273820000, 0.00276201, 0.00276201, 0.002762, 0.00276201, 299.71698639], [1517273880000, 0.00276201, 0.00276201, 0.00276192, 0.00276201, 391.15738076], [1517273940000, 0.00276201, 0.00276201, 0.00276192, 0.00276201, 1121.96830674], [1517274000000, 0.00276201, 0.0027795, 0.00276201, 0.0027795, 1348.31794611], [1517274060000, 0.0027795, 0.00278807, 0.00276291, 0.0027871, 224.73195323], [1517274120000, 0.00276289, 0.00278812, 0.00276289, 0.00278812, 71.4377607], [1517274180000, 0.00278785, 0.00278814, 0.00278666, 0.00278769, 195.72229817], [1517274240000, 0.00278761, 0.00278761, 0.0027783, 0.0027783, 155.83984997], [1517274300000, 0.0027783, 0.0027783, 0.00276594, 0.00276594, 58.2131965], [1517274360000, 0.00278, 0.00278746, 0.00278, 0.00278, 130.02190016], [1517274420000, 0.00278002, 0.00278746, 0.00278, 0.00278746, 226.76642068], [1517274480000, 0.00278746, 0.00278746, 0.00277833, 0.00277834, 32.9817731], [1517274540000, 0.00277836, 0.00278746, 0.00277836, 0.00278746, 391.60847837], [1517274600000, 0.00277838, 0.00278814, 0.00277838, 0.00278814, 48.95160813], [1517274660000, 0.00278, 0.002788, 0.00278, 0.00278, 98.01444372], [1517274720000, 0.0027784, 0.00278, 0.0027784, 0.00278, 83.55017764], [1517274780000, 0.002788, 0.00278814, 0.0027784, 0.00278814, 124.75795109], [1517274840000, 0.00278814, 0.00278814, 0.00277833, 0.0027881, 107.23122889], [1517274900000, 0.00278, 0.00278814, 0.00278, 0.00278814, 93.45254976], [1517274960000, 0.00278814, 0.00278814, 0.00278, 0.00278, 33.96557015], [1517275020000, 0.00278, 0.00278, 0.00278, 0.00278, 30.81728417], [1517275080000, 0.00278, 0.00278811, 0.00278, 0.00278811, 97.85657006], [1517275140000, 0.00278811, 0.00278811, 0.00278809, 0.00278809, 16.94838702], [1517275200000, 0.00278809, 0.00278811, 0.00278809, 0.00278809, 121.70081662], [1517275260000, 0.00278809, 0.00278814, 0.00278809, 0.00278814, 250.51053947], [1517275320000, 0.00278814, 0.00279, 0.00278809, 0.00279, 320.85230839], [1517275380000, 0.00279326, 0.0027934, 0.00279, 0.0027934, 36.97114481], [1517275440000, 0.0027934, 0.0027934, 0.00278999, 0.00278999, 56.59406517], [1517275500000, 0.00278105, 0.002797, 0.00278105, 0.002797, 164.71615896], [1517275560000, 0.00279771, 0.00279999, 0.00278141, 0.00278146, 335.7335642], [1517275620000, 0.00278146, 0.002799, 0.00278146, 0.0027815, 59.405012], [1517275680000, 0.00279178, 0.00279178, 0.0027917, 0.0027917, 101.88918387], [1517275740000, 0.0027815, 0.0028, 0.0027815, 0.002783, 1027.82156742], [1517275800000, 0.00278301, 0.00280038, 0.00278301, 0.00280038, 212.38613411], [1517275860000, 0.00280038, 0.00280038, 0.0027815, 0.0027815, 1614.42815745], [1517275920000, 0.0027815, 0.002783, 0.00277248, 0.002776, 898.98970759], [1517275980000, 0.00277607, 0.00279336, 0.00277607, 0.00279336, 99.70731333], [1517276040000, 0.00279336, 0.00279336, 0.00277272, 0.00277272, 1317.58000892], [1517276100000, 0.00277802, 0.0028005, 0.00277247, 0.00280037, 273.87043181], [1517276160000, 0.002775, 0.002775, 0.00277245, 0.002775, 16.76991263], [1517276220000, 0.002775, 0.00279, 0.002775, 0.00279, 1.59336245], [1517276280000, 0.00278, 0.00278, 0.002775, 0.002775, 124.6485997], [1517276340000, 0.00278499, 0.00278499, 0.00277248, 0.00278499, 171.04285457], [1517276400000, 0.00278497, 0.002785, 0.00278497, 0.002785, 93.64341883], [1517276460000, 0.002785, 0.002785, 0.00277247, 0.00278497, 936.47657912], [1517276520000, 0.00278497, 0.002785, 0.00277246, 0.00277246, 304.97623545], [1517276580000, 0.00278497, 0.00278497, 0.00277246, 0.00277246, 107.57069366], [1517276640000, 0.00277246, 0.00277246, 0.00277245, 0.00277246, 458.29802454], [1517276700000, 0.00277246, 0.00277246, 0.00277245, 0.00277246, 254.26816642], [1517276760000, 0.00277245, 0.00277246, 0.002772, 0.00277246, 296.1799045], [1517276820000, 0.00278, 0.00278, 0.00277247, 0.00278, 208.48159448], [1517276880000, 0.00278, 0.00278497, 0.00278, 0.00278497, 46.94498058], [1517277000000, 0.00278, 0.00278497, 0.00278, 0.00278496, 110.77180645], [1517277060000, 0.00278001, 0.00278001, 0.0027773, 0.0027773, 90.24675693], [1517277120000, 0.0027773, 0.0027773, 0.00277248, 0.00277248, 10.44547529], [1517277180000, 0.0027725, 0.0027773, 0.0027725, 0.00277251, 71.61979095], [1517277240000, 0.00277252, 0.002784, 0.00277252, 0.002784, 100.49931988], [1517277300000, 0.00278399, 0.00278399, 0.00277249, 0.00277249, 32.26978994], [1517277360000, 0.002774, 0.002774, 0.00277, 0.002774, 413.35500441], [1517277420000, 0.002774, 0.00278398, 0.002774, 0.002774, 9.2768347], [1517277540000, 0.00277399, 0.00277399, 0.00276729, 0.00276729, 19.21544064], [1517277600000, 0.00276729, 0.00276729, 0.00276471, 0.002767, 110.89159638], [1517277660000, 0.002767, 0.002767, 0.0027647, 0.0027647, 221.74241743], [1517277720000, 0.0027647, 0.0027647, 0.0027647, 0.0027647, 2.45524428], [1517277840000, 0.00276471, 0.00277, 0.00276335, 0.00277, 622.08712614], [1517277900000, 0.00277, 0.0027824, 0.00277, 0.00277, 127.82774108], [1517277960000, 0.00277, 0.00278195, 0.00277, 0.00277, 397.43413004], [1517278020000, 0.00278192, 0.00278192, 0.00278192, 0.00278192, 0.3970588], [1517278080000, 0.00277001, 0.00277001, 0.00277001, 0.00277001, 0.37730885], [1517278140000, 0.00277001, 0.00277001, 0.002765, 0.002765, 32.89839358], [1517278200000, 0.0027647, 0.00277, 0.0027647, 0.00277, 62.0573875], [1517278260000, 0.002765, 0.00277, 0.002765, 0.00277, 25.41965515], [1517278320000, 0.00277, 0.00277, 0.00277, 0.00277, 33.60157254], [1517278380000, 0.00277, 0.00277, 0.00277, 0.00277, 0.24], [1517278440000, 0.00277, 0.00277, 0.00277, 0.00277, 21.17550617], [1517278500000, 0.00276502, 0.00276502, 0.00276502, 0.00276502, 36.94718127], [1517278560000, 0.00276502, 0.00277, 0.00276502, 0.00276502, 188.97347491], [1517278620000, 0.00277, 0.00277, 0.00276502, 0.00276502, 213.88558979], [1517278680000, 0.00277, 0.00277, 0.00276502, 0.00276502, 16.16663531], [1517278740000, 0.00276503, 0.00276503, 0.00276502, 0.00276502, 13.02157288], [1517278800000, 0.00277, 0.00277, 0.00276502, 0.00277, 138.56176251], [1517278860000, 0.00276502, 0.00277, 0.00276502, 0.00276502, 26.06682616], [1517278920000, 0.00277, 0.00277, 0.00277, 0.00277, 2.73935303], [1517278980000, 0.0027675, 0.00277, 0.0027675, 0.00277, 2.17528738], [1517279040000, 0.00277, 0.00277, 0.00277, 0.00277, 12.94793701], [1517279100000, 0.00277, 0.00277, 0.00277, 0.00277, 180.97638971], [1517279160000, 0.00277, 0.00277, 0.00277, 0.00277, 1.79519961], [1517279220000, 0.00277, 0.00277, 0.0027699, 0.00277, 11.0510237], [1517279280000, 0.00277, 0.00277, 0.0027699, 0.00277, 254.82557888], [1517279340000, 0.00277, 0.00277, 0.0027699, 0.00277, 617.32079063], [1517279400000, 0.00278, 0.00278, 0.00277, 0.00278, 142.80918378], [1517279460000, 0.00278, 0.00278, 0.00278, 0.00278, 4.0], [1517279580000, 0.00277001, 0.00277001, 0.00277001, 0.00277001, 14.74020703], [1517279640000, 0.00277001, 0.00277996, 0.00277001, 0.00277012, 24.67836802], [1517279700000, 0.00277985, 0.00277985, 0.00277985, 0.00277985, 1.91152034], [1517279760000, 0.00277974, 0.00277977, 0.00277974, 0.00277977, 40.34622897], [1517279820000, 0.0027794, 0.00277957, 0.0027794, 0.00277957, 78.0763102], [1517279880000, 0.00277498, 0.00277978, 0.00277498, 0.00277978, 1028.48554298], [1517279940000, 0.00277499, 0.00277978, 0.00277499, 0.00277978, 191.37093675], [1517280000000, 0.00277978, 0.00277978, 0.00277978, 0.00277978, 0.79322824], [1517280060000, 0.00277978, 0.00278187, 0.00277978, 0.00278187, 431.21053384], [1517280120000, 0.00277978, 0.00278193, 0.00277978, 0.00277978, 378.77220284], [1517280180000, 0.00277978, 0.00277978, 0.00277978, 0.00277978, 20.18867294], [1517280300000, 0.00277978, 0.00277978, 0.00277013, 0.00277013, 6.39987039], [1517280360000, 0.00277978, 0.00277978, 0.00277014, 0.00277014, 29.33508372], [1517280420000, 0.00277978, 0.00278193, 0.00277978, 0.00277978, 45.01053059], [1517280480000, 0.00277978, 0.00278192, 0.00277978, 0.00278192, 12.91761711], [1517280540000, 0.00277978, 0.00277978, 0.00277978, 0.00277978, 39.46481316], [1517280600000, 0.00278193, 0.0028, 0.00277015, 0.00277022, 836.78056632], [1517280660000, 0.00278787, 0.00278787, 0.00278787, 0.00278787, 28.62803984], [1517280720000, 0.00278787, 0.00278788, 0.002775, 0.00278788, 240.70493731], [1517280780000, 0.002775, 0.00278781, 0.002775, 0.00278781, 17.96114222], [1517280840000, 0.00278767, 0.00278767, 0.002775, 0.00277998, 17.19970645], [1517280900000, 0.00277996, 0.00277996, 0.00277996, 0.00277996, 11.85237784], [1517280960000, 0.00277981, 0.00277981, 0.00277981, 0.00277981, 1.51063121], [1517281020000, 0.00277981, 0.00277981, 0.00277981, 0.00277981, 137.4996912], [1517281080000, 0.00277981, 0.00277981, 0.00277981, 0.00277981, 117.76673435], [1517281140000, 0.00277981, 0.00277982, 0.00277981, 0.00277982, 409.26768855], [1517281200000, 0.00277982, 0.00277982, 0.00277981, 0.00277981, 107.483356], [1517281260000, 0.00277981, 0.00277982, 0.00277981, 0.00277981, 25.31919251], [1517281320000, 0.00277981, 0.00277981, 0.00277981, 0.00277981, 26.12050727], [1517281380000, 0.00277981, 0.00278871, 0.00277981, 0.00277981, 773.70788616], [1517281440000, 0.00277981, 0.00277981, 0.002778, 0.002778, 193.71541643], [1517281500000, 0.002778, 0.002778, 0.00277, 0.00277, 1346.48567201], [1517281560000, 0.00277002, 0.00277002, 0.00277, 0.00277002, 105.0], [1517281620000, 0.00277001, 0.00277002, 0.00277, 0.00277002, 22.41343982], [1517281680000, 0.00277, 0.00277002, 0.00277, 0.00277, 22.14236727], [1517281740000, 0.00277, 0.00277799, 0.00277, 0.00277, 822.23275918], [1517281800000, 0.00277798, 0.00277798, 0.00276101, 0.00277798, 1411.55371054], [1517281860000, 0.00277797, 0.00277797, 0.00276798, 0.00276798, 3.14678265], [1517281920000, 0.00276798, 0.00276798, 0.00276505, 0.00276521, 24.68], [1517281980000, 0.00276521, 0.00277698, 0.00276521, 0.00276521, 19.2932335], [1517282040000, 0.00276521, 0.00277799, 0.00276521, 0.00277698, 123.20991374], [1517282100000, 0.00277698, 0.00277698, 0.00276521, 0.00276521, 26.60460326], [1517282160000, 0.00276521, 0.00276521, 0.00276521, 0.00276521, 82.84655189], [1517282220000, 0.00276521, 0.00276521, 0.00276521, 0.00276521, 55.62412531], [1517282280000, 0.00276505, 0.0027765, 0.00276505, 0.0027765, 47.79410962], [1517282340000, 0.00276521, 0.00276521, 0.00276521, 0.00276521, 4.39772099], [1517282400000, 0.00276506, 0.00276506, 0.00276505, 0.00276505, 9.44318302], [1517282460000, 0.00276505, 0.00276521, 0.00276101, 0.00276521, 118.56273238], [1517282520000, 0.00276101, 0.00276101, 0.002761, 0.00276101, 768.8824509], [1517282580000, 0.00276101, 0.00276101, 0.002761, 0.00276101, 61.27996636], [1517282640000, 0.00276521, 0.00276521, 0.002761, 0.00276521, 328.39754199], [1517282700000, 0.00276101, 0.0027779, 0.00276101, 0.00277789, 68.80037512], [1517282760000, 0.00277788, 0.00277789, 0.00277788, 0.00277789, 31.0], [1517282820000, 0.00277789, 0.00277789, 0.00277779, 0.00277779, 18.72882708], [1517282880000, 0.00277779, 0.00277779, 0.00277779, 0.00277779, 1.52067408], [1517282940000, 0.00277779, 0.00277981, 0.00277779, 0.0027778, 80.05660158], [1517283000000, 0.00277778, 0.00277778, 0.00276666, 0.00276666, 9.25534689], [1517283060000, 0.00276666, 0.00276667, 0.00276521, 0.00276521, 232.12102094], [1517283120000, 0.002765, 0.00276521, 0.00276201, 0.00276201, 9.57869799], [1517283180000, 0.00276201, 0.00276521, 0.00276201, 0.00276201, 49.73995053], [1517283240000, 0.00276201, 0.00276201, 0.00276062, 0.00276062, 299.29925624], [1517283300000, 0.00276201, 0.00276201, 0.00276061, 0.00276061, 18.67772027], [1517283360000, 0.00276061, 0.00276061, 0.00276058, 0.00276061, 21.86274009], [1517283420000, 0.00276058, 0.00276058, 0.00276012, 0.00276056, 32.01741971], [1517283480000, 0.00276, 0.00276063, 0.00276, 0.00276063, 94.5170342], [1517283540000, 0.00276063, 0.00276063, 0.00276063, 0.00276063, 3.9547233], [1517283600000, 0.00276063, 0.00277977, 0.00276063, 0.00277971, 96.84997132], [1517283660000, 0.00277956, 0.00277956, 0.002761, 0.002761, 49.42706647], [1517283720000, 0.002762, 0.002762, 0.002761, 0.002761, 5.17315706], [1517283780000, 0.002761, 0.002762, 0.00276, 0.00276, 152.2965594], [1517283840000, 0.002761, 0.00277945, 0.00276, 0.00276, 340.7795723], [1517283900000, 0.00276, 0.002761, 0.00276, 0.00276, 692.47440386], [1517283960000, 0.00276, 0.00277895, 0.00276, 0.00277895, 390.72873743], [1517284020000, 0.00276001, 0.00276001, 0.00276, 0.00276001, 206.83825102], [1517284080000, 0.00276001, 0.00277647, 0.00276, 0.00276, 556.11569456], [1517284140000, 0.00276001, 0.00276001, 0.00276001, 0.00276001, 0.69396105], [1517284200000, 0.00276001, 0.00277546, 0.00276001, 0.00276001, 4.40191648], [1517284260000, 0.00276002, 0.00276002, 0.00276002, 0.00276002, 0.39945363], [1517284380000, 0.00276002, 0.00276002, 0.00276001, 0.00276001, 0.9669308], [1517284440000, 0.00276001, 0.00276001, 0.00276001, 0.00276001, 189.60546412], [1517284500000, 0.00276001, 0.00276002, 0.00276, 0.00276, 324.26331233], [1517284560000, 0.00276, 0.00276002, 0.00276, 0.00276, 1.06386969], [1517284620000, 0.00276, 0.00276002, 0.00276, 0.00276, 3.18090879], [1517284680000, 0.00276, 0.00276, 0.00276, 0.00276, 1.95628815], [1517284740000, 0.00276001, 0.00276002, 0.002759, 0.002759, 111.27712606], [1517284800000, 0.002759, 0.00276, 0.0027558, 0.0027558, 104.1646173], [1517284860000, 0.0027558, 0.00276002, 0.0027558, 0.00276002, 911.68949265], [1517284920000, 0.0027558, 0.00276002, 0.0027558, 0.00276002, 4.9815329], [1517284980000, 0.00276001, 0.00277, 0.00276001, 0.00277, 244.6863087], [1517285040000, 0.00277, 0.00277, 0.00277, 0.00277, 66.50874803], [1517285100000, 0.00277, 0.00277499, 0.00277, 0.00277, 184.87248071], [1517285160000, 0.00277, 0.0027798, 0.00277, 0.00277, 418.56034692], [1517285220000, 0.00277, 0.0027798, 0.00275101, 0.00277001, 1199.27086973], [1517285280000, 0.00277101, 0.00277101, 0.00277101, 0.00277101, 0.39786937], [1517285340000, 0.00275106, 0.00277245, 0.00275105, 0.00277245, 10.79547116], [1517285400000, 0.0027724, 0.00277912, 0.0027724, 0.0027725, 173.38164343], [1517285460000, 0.00277251, 0.00277823, 0.0027725, 0.0027725, 98.25277328], [1517285520000, 0.0027725, 0.00277804, 0.0027725, 0.00277762, 32.61632337], [1517285580000, 0.0027773, 0.0027773, 0.00276, 0.00276, 119.92849755], [1517285640000, 0.00276, 0.00276, 0.00276, 0.00276, 11.50729973], [1517285700000, 0.00276001, 0.00276993, 0.00276, 0.00276, 15.23981399], [1517285760000, 0.00276976, 0.00276976, 0.00276, 0.00276, 15.76120084], [1517285820000, 0.00276, 0.002763, 0.00276, 0.002763, 19.63710468], [1517285880000, 0.00276, 0.00276, 0.00276, 0.00276, 35.39456348], [1517285940000, 0.00276001, 0.002763, 0.00276, 0.002763, 3.55124671], [1517286000000, 0.002763, 0.002763, 0.002763, 0.002763, 23.6620569], [1517286060000, 0.002763, 0.002763, 0.00276, 0.00276, 74.91488022], [1517286120000, 0.002763, 0.002763, 0.00275209, 0.00275209, 355.79424149], [1517286180000, 0.00275209, 0.002763, 0.00275209, 0.00275209, 34.76000808], [1517286240000, 0.00276, 0.00277423, 0.00276, 0.00277423, 11.93608493], [1517286300000, 0.00275999, 0.00275999, 0.00275999, 0.00275999, 3.62320153], [1517286360000, 0.00275998, 0.00277399, 0.00275998, 0.00277399, 27.96041045], [1517286420000, 0.00275999, 0.00275999, 0.00275209, 0.00275209, 46.02623912], [1517286480000, 0.00275209, 0.00277389, 0.00275209, 0.00277389, 70.84429184], [1517286540000, 0.00275209, 0.00275209, 0.00275209, 0.00275209, 10.24345132], [1517286600000, 0.00277387, 0.00277387, 0.002771, 0.00277379, 27.98508743], [1517286720000, 0.00275217, 0.00275217, 0.00275, 0.00275, 1032.89035395], [1517286900000, 0.00275003, 0.00275003, 0.00275003, 0.00275003, 1.82815356], [1517286960000, 0.00275004, 0.00275004, 0.00275002, 0.00275002, 73.98639459], [1517287020000, 0.00276455, 0.00276455, 0.00275, 0.00275, 680.81566869], [1517287080000, 0.00275, 0.00275, 0.00275, 0.00275, 5.3749419], [1517287140000, 0.00275001, 0.00276, 0.00274979, 0.00276, 74.89608054], [1517287260000, 0.00276, 0.00276, 0.00276, 0.00276, 2.36224], [1517287380000, 0.00275999, 0.00275999, 0.00275999, 0.00275999, 12.89719768], [1517287440000, 0.00275999, 0.00275999, 0.00275, 0.00275, 8.71891469], [1517287500000, 0.00275, 0.00275, 0.00275, 0.00275, 6.50128875], [1517287560000, 0.00275, 0.00275, 0.00275, 0.00275, 3.38107444], [1517287620000, 0.00276, 0.00276, 0.00276, 0.00276, 20.0], [1517287680000, 0.00276, 0.00276, 0.00275001, 0.00275001, 45.52327432], [1517287740000, 0.00275001, 0.00276, 0.00274979, 0.002759, 264.58077388]]
\ No newline at end of file
diff --git a/tests/testdata/ETH_BTC-1m.json b/tests/testdata/ETH_BTC-1m.json
deleted file mode 100644
index af75fb980..000000000
--- a/tests/testdata/ETH_BTC-1m.json
+++ /dev/null
@@ -1 +0,0 @@
-[[1516423980000, 0.08939998, 0.08939998, 0.08909372, 0.08909374, 81.45320695], [1516424040000, 0.08909374, 0.08919993, 0.088787, 0.08879488, 118.27031624], [1516424100000, 0.08879488, 0.0889, 0.0887, 0.08870004, 85.40476925], [1516424160000, 0.088789, 0.088889, 0.08854403, 0.088889, 66.45296913], [1516424220000, 0.08888899, 0.08915344, 0.08859001, 0.08915341, 59.24506869], [1516424280000, 0.08915339, 0.08915339, 0.08852688, 0.08852688, 86.02977869], [1516424340000, 0.08855403, 0.08915323, 0.08833357, 0.08852688, 88.2281031], [1516424400000, 0.08852688, 0.08852688, 0.08820002, 0.08820002, 205.05864901], [1516424460000, 0.08821896, 0.08850001, 0.08815, 0.0883, 62.36395087], [1516424520000, 0.08821896, 0.0885, 0.0881, 0.0881, 38.04949146], [1516424580000, 0.08813074, 0.08849993, 0.08801, 0.08801, 58.24960699], [1516424640000, 0.088059, 0.08862354, 0.08801, 0.08862354, 89.19454376], [1516424700000, 0.08862354, 0.08864033, 0.08801001, 0.08849997, 108.6328114], [1516424760000, 0.08851996, 0.08851996, 0.0880102, 0.08849994, 92.38491972], [1516424820000, 0.0885, 0.08915342, 0.08849994, 0.0885, 69.25810296], [1516424880000, 0.0885, 0.08915342, 0.08814226, 0.0885, 62.30453295], [1516424940000, 0.0885, 0.08884172, 0.08801226, 0.08837641, 45.44412759], [1516425000000, 0.08837641, 0.0887088, 0.08801226, 0.08854578, 44.46155156], [1516425060000, 0.08801236, 0.08851818, 0.08801233, 0.08846719, 89.95244535], [1516425120000, 0.08801417, 0.08854578, 0.08801417, 0.08846719, 51.22966797], [1516425180000, 0.08846719, 0.08854576, 0.08846719, 0.0885, 48.70114113], [1516425240000, 0.08854576, 0.08854576, 0.08846719, 0.08846719, 92.0479787], [1516425300000, 0.08846726, 0.0885, 0.088, 0.08846719, 117.70741006], [1516425360000, 0.08846719, 0.08846719, 0.0880099, 0.08830002, 6.82976887], [1516425420000, 0.08846, 0.08846, 0.0880099, 0.08830002, 98.65455697], [1516425480000, 0.08830002, 0.08846, 0.0883, 0.0884, 44.32568719], [1516425540000, 0.0884, 0.08846, 0.0883, 0.0884, 25.5412467], [1516425600000, 0.0883, 0.088455, 0.08800994, 0.0883, 52.98367207], [1516425660000, 0.08800999, 0.088455, 0.088, 0.08800505, 98.46117292], [1516425720000, 0.0883, 0.0883, 0.08800501, 0.08800512, 18.22561322], [1516425780000, 0.0883, 0.088455, 0.08800513, 0.08845498, 57.75664489], [1516425840000, 0.08845497, 0.08845499, 0.08800715, 0.08832003, 15.87885834], [1516425900000, 0.08845, 0.08845, 0.08801, 0.08845, 8.75980483], [1516425960000, 0.08845, 0.08845, 0.08801003, 0.08830003, 25.77393293], [1516426020000, 0.08845, 0.088455, 0.08830003, 0.08845495, 48.87511902], [1516426080000, 0.08845495, 0.08845498, 0.08803, 0.0883002, 12.85524533], [1516426140000, 0.0883002, 0.08845491, 0.08803, 0.08803, 50.47147611], [1516426200000, 0.0884549, 0.088455, 0.08803, 0.08845491, 21.92040286], [1516426260000, 0.08845491, 0.08854576, 0.08803001, 0.08854576, 52.99607586], [1516426320000, 0.08849955, 0.0887088, 0.08803001, 0.0887088, 38.03978388], [1516426380000, 0.08871131, 0.08897052, 0.0885, 0.08889966, 57.98879174], [1516426440000, 0.08889967, 0.089, 0.08802989, 0.08883597, 146.0391632], [1516426500000, 0.08850001, 0.08899997, 0.0885, 0.08897326, 159.33260995], [1516426560000, 0.08883594, 0.08889887, 0.08851, 0.08888365, 74.71869425], [1516426620000, 0.08892042, 0.08892847, 0.08852, 0.08852, 30.6005526], [1516426680000, 0.08891597, 0.08891597, 0.08851, 0.08891147, 80.2044557], [1516426740000, 0.088901, 0.088901, 0.08829, 0.0885, 242.23679452], [1516426800000, 0.08828788, 0.0885, 0.0882494, 0.08849993, 16.91072575], [1516426860000, 0.08830004, 0.0885, 0.0883, 0.08830001, 73.88758896], [1516426920000, 0.08831703, 0.0885, 0.08830001, 0.08849999, 26.98640704], [1516426980000, 0.08849999, 0.08889996, 0.08830003, 0.08889995, 42.86158761], [1516427040000, 0.0888999, 0.089, 0.08841118, 0.08848497, 34.26623676], [1516427100000, 0.08848497, 0.08883687, 0.08835001, 0.08835001, 78.30343827], [1516427160000, 0.088615, 0.088615, 0.08835001, 0.08835001, 46.50619373], [1516427220000, 0.08861494, 0.08871327, 0.08806259, 0.08861491, 72.73376862], [1516427280000, 0.08810707, 0.08871321, 0.08810707, 0.08861489, 24.95491182], [1516427340000, 0.08861489, 0.08879999, 0.0881141, 0.08877993, 28.48971393], [1516427400000, 0.08861483, 0.0888, 0.088262, 0.08833591, 28.13053529], [1516427460000, 0.08833591, 0.08877981, 0.08826199, 0.0886, 13.16925787], [1516427520000, 0.08832692, 0.08859999, 0.08811411, 0.08826199, 18.48811596], [1516427580000, 0.08826199, 0.08873487, 0.08806259, 0.08810256, 34.70196417], [1516427640000, 0.08810258, 0.08873487, 0.08810258, 0.08871268, 67.65573208], [1516427700000, 0.0885, 0.08867954, 0.08815, 0.08815, 11.22835959], [1516427760000, 0.08817211, 0.08863116, 0.08815, 0.08863116, 13.50967591], [1516427820000, 0.08819463, 0.08863116, 0.08819463, 0.08863116, 20.84741646], [1516427880000, 0.08863116, 0.08863116, 0.08819467, 0.08863115, 7.95073497], [1516427940000, 0.08863116, 0.08874338, 0.0882, 0.0886, 36.46715165], [1516428000000, 0.0886, 0.0886, 0.08820003, 0.08859979, 9.85576687], [1516428060000, 0.08859978, 0.08859979, 0.08820005, 0.08820005, 81.38028845], [1516428120000, 0.08831087, 0.0888, 0.08819467, 0.0888, 99.4243412], [1516428180000, 0.08876666, 0.08876667, 0.08819472, 0.08875607, 4.45884487], [1516428240000, 0.08875603, 0.08875603, 0.08820076, 0.08820086, 4.10858129], [1516428300000, 0.08820086, 0.088717, 0.08820078, 0.08820097, 62.28834182], [1516428360000, 0.08820097, 0.0886, 0.0882008, 0.08849589, 53.32008999], [1516428420000, 0.08849589, 0.08859594, 0.08820201, 0.08820646, 68.17569289], [1516428480000, 0.08832691, 0.08858, 0.08820646, 0.08857981, 15.88668761], [1516428540000, 0.08857981, 0.08876, 0.0883124, 0.08876, 8.33839435], [1516428600000, 0.08876, 0.08881686, 0.0887, 0.08881686, 28.77180268], [1516428660000, 0.08881686, 0.089, 0.08881686, 0.08899995, 28.87101783], [1516428720000, 0.08899995, 0.08899995, 0.08883686, 0.08883688, 34.27316899], [1516428780000, 0.08883688, 0.088979, 0.08882, 0.0889612, 25.25730653], [1516428840000, 0.08897897, 0.088979, 0.08883688, 0.08883688, 32.88772966], [1516428900000, 0.08883687, 0.08916559, 0.08882002, 0.08883687, 58.11317373], [1516428960000, 0.08882003, 0.08908943, 0.08880002, 0.089, 133.27746067], [1516429020000, 0.08880002, 0.08916559, 0.08880002, 0.08880002, 39.2273686], [1516429080000, 0.08881552, 0.08914923, 0.08833003, 0.08880001, 33.70445782], [1516429140000, 0.08880001, 0.0892, 0.088475, 0.08909251, 10.7629706], [1516429200000, 0.08908806, 0.08924874, 0.08862781, 0.08924874, 48.62226407], [1516429260000, 0.08913051, 0.08919284, 0.08864676, 0.08909251, 8.54091605], [1516429320000, 0.08917646, 0.08922059, 0.08865, 0.08917925, 66.17687646], [1516429380000, 0.0891559, 0.08922214, 0.08875787, 0.08916105, 64.80924273], [1516429440000, 0.088758, 0.08923893, 0.08875787, 0.08913891, 32.51086275], [1516429500000, 0.08887662, 0.08913791, 0.08875787, 0.08875787, 19.79257362], [1516429560000, 0.08910589, 0.08910589, 0.08864679, 0.08899976, 9.52148971], [1516429620000, 0.0889996, 0.0889996, 0.0886468, 0.08894999, 21.15161369], [1516429680000, 0.0888, 0.08895, 0.0888, 0.0888, 14.5536825], [1516429740000, 0.0888, 0.0888, 0.08865001, 0.0888, 6.58857278], [1516429800000, 0.0888, 0.0888, 0.08865003, 0.0888, 15.4261579], [1516429860000, 0.0888, 0.0888, 0.08875, 0.0888, 25.72913724], [1516429920000, 0.0888, 0.0888, 0.08876, 0.0888, 16.60317382], [1516429980000, 0.0888, 0.0888, 0.08876002, 0.08876002, 8.73664985], [1516430040000, 0.0888, 0.08895, 0.0888, 0.08894997, 75.37012312], [1516430100000, 0.08894997, 0.08895, 0.08880002, 0.0888001, 22.28530385], [1516430160000, 0.0888001, 0.08894992, 0.0888001, 0.0888005, 46.02134562], [1516430220000, 0.0888005, 0.08889, 0.08880012, 0.08885, 44.99397802], [1516430280000, 0.08885, 0.08940686, 0.08885, 0.08885, 30.45659312], [1516430340000, 0.08934463, 0.08934463, 0.08885, 0.08889, 19.45732729], [1516430400000, 0.08928, 0.08928893, 0.08889, 0.08927922, 24.82556268], [1516430460000, 0.08927922, 0.08930304, 0.08880002, 0.08925, 248.83247019], [1516430520000, 0.08880002, 0.08925, 0.08880001, 0.08882001, 66.46418861], [1516430580000, 0.08922115, 0.089239, 0.08880001, 0.08922, 12.17400781], [1516430640000, 0.08921999, 0.08922, 0.08880001, 0.0892, 51.56671102], [1516430700000, 0.08880001, 0.08921999, 0.08880001, 0.08921999, 7.06667512], [1516430760000, 0.08880005, 0.08921999, 0.08880003, 0.08880007, 21.27654129], [1516430820000, 0.0892199, 0.0892199, 0.08880007, 0.08919352, 8.02593285], [1516430880000, 0.08919352, 0.08919352, 0.08880008, 0.08915751, 44.9717816], [1516430940000, 0.08915751, 0.08919348, 0.0888001, 0.0888889, 47.44048644], [1516431000000, 0.0888889, 0.08914268, 0.0888002, 0.08912762, 3.57797946], [1516431060000, 0.08912762, 0.0891477, 0.0888002, 0.08912761, 11.14640614], [1516431120000, 0.0891276, 0.0891276, 0.0888002, 0.08912759, 25.62601667], [1516431180000, 0.08912759, 0.08912762, 0.08880007, 0.08912759, 15.85872757], [1516431240000, 0.08912759, 0.08912759, 0.08882, 0.08912759, 30.17279734], [1516431300000, 0.08912759, 0.08912759, 0.089, 0.08912759, 8.83954992], [1516431360000, 0.08912759, 0.08912759, 0.08900001, 0.08912759, 33.26050684], [1516431420000, 0.08912759, 0.08912759, 0.08900511, 0.08900511, 36.19318792], [1516431480000, 0.08912759, 0.08912759, 0.08900512, 0.08912759, 20.1965858], [1516431540000, 0.08912759, 0.08912759, 0.08880001, 0.08912, 83.0955706], [1516431600000, 0.08912, 0.08912, 0.0888, 0.08912, 38.87533288], [1516431660000, 0.08912, 0.08912, 0.08890293, 0.08890293, 3.71892754], [1516431720000, 0.08890292, 0.08923988, 0.0888384, 0.08923988, 36.04580725], [1516431780000, 0.08923988, 0.08934461, 0.08890292, 0.0893446, 2.11221239], [1516431840000, 0.0893446, 0.0893446, 0.08890292, 0.08934458, 22.99126754], [1516431900000, 0.08934458, 0.08944197, 0.08934458, 0.08934458, 35.7990957], [1516431960000, 0.0893646, 0.0893646, 0.08912759, 0.0893646, 11.63901096], [1516432020000, 0.08936458, 0.08936459, 0.0889274, 0.08912759, 65.79737139], [1516432080000, 0.0889274, 0.08912759, 0.0889274, 0.08912759, 18.44382188], [1516432140000, 0.08912759, 0.08912759, 0.08912759, 0.08912759, 3.43733442], [1516432200000, 0.08912758, 0.08912758, 0.08892745, 0.08912758, 2.86783319], [1516432260000, 0.08912757, 0.08912759, 0.0889274, 0.08912759, 32.00712345], [1516432320000, 0.08902749, 0.08912759, 0.0889274, 0.08902749, 41.68819009], [1516432380000, 0.08902749, 0.08912753, 0.08902749, 0.08912753, 40.59487102], [1516432440000, 0.08902752, 0.08912759, 0.08902749, 0.08902749, 10.39861238], [1516432500000, 0.08902752, 0.08912759, 0.08902749, 0.08912758, 16.51893867], [1516432560000, 0.0890276, 0.08912755, 0.08902749, 0.08902749, 64.83735072], [1516432620000, 0.08902749, 0.08912755, 0.08902749, 0.08902749, 58.53794944], [1516432680000, 0.08912755, 0.08912755, 0.08891, 0.0889274, 6.53277197], [1516432740000, 0.08892738, 0.0889274, 0.08887792, 0.08891, 9.11474304], [1516432800000, 0.08891, 0.08891, 0.08880001, 0.08881, 4.98148372], [1516432860000, 0.08881, 0.08881, 0.0888, 0.08880001, 44.87895569], [1516432920000, 0.0888, 0.08881, 0.0888, 0.08881, 6.49018156], [1516432980000, 0.08881, 0.0888381, 0.08880001, 0.08881778, 14.57742657], [1516433040000, 0.0888381, 0.08883822, 0.08880002, 0.08880002, 26.15753176], [1516433100000, 0.08883822, 0.08883822, 0.08880002, 0.08883822, 32.85718786], [1516433160000, 0.08883822, 0.0889274, 0.08880002, 0.0889274, 5.37697652], [1516433220000, 0.0889274, 0.0889274, 0.08892739, 0.0889274, 31.54794458], [1516433280000, 0.0889274, 0.08912759, 0.0888086, 0.0889274, 27.70590139], [1516433340000, 0.08912759, 0.0894479, 0.08912759, 0.0894479, 99.17636223], [1516433400000, 0.0894479, 0.08965309, 0.0894479, 0.08946959, 15.37363193], [1516433460000, 0.08946959, 0.08965264, 0.0893131, 0.08964994, 9.29445707], [1516433520000, 0.08964989, 0.0896499, 0.08912759, 0.08944692, 10.24498118], [1516433580000, 0.08944692, 0.08968368, 0.08892742, 0.08944789, 35.81141523], [1516433640000, 0.08943712, 0.08943712, 0.08894, 0.0891294, 3.44279752], [1516433700000, 0.0891294, 0.08930318, 0.08893948, 0.0891294, 11.3063841], [1516433760000, 0.08928492, 0.08929983, 0.0891294, 0.08912941, 21.20757949], [1516433820000, 0.0891294, 0.08928982, 0.0891294, 0.08921512, 9.3484298], [1516433880000, 0.08912949, 0.08921512, 0.0891294, 0.0891294, 2.55006906], [1516433940000, 0.08912949, 0.08912949, 0.0891294, 0.08912949, 5.42231185], [1516434000000, 0.08912949, 0.08928982, 0.08893948, 0.0889395, 21.8434113], [1516434060000, 0.0889395, 0.08926909, 0.08893948, 0.08925084, 5.98883758], [1516434120000, 0.08925083, 0.08925083, 0.08893948, 0.0891508, 5.13566293], [1516434180000, 0.0891508, 0.0891508, 0.0889, 0.0891507, 17.37098467], [1516434240000, 0.0891507, 0.0891507, 0.0889, 0.0889, 6.13910358], [1516434300000, 0.08915067, 0.0892508, 0.0889, 0.08915078, 17.73073654], [1516434360000, 0.08915078, 0.0892508, 0.0889, 0.0889, 28.49889703], [1516434420000, 0.0889, 0.08920956, 0.0889, 0.08896651, 9.73402928], [1516434480000, 0.08920879, 0.08920879, 0.08890001, 0.08890002, 9.72451285], [1516434540000, 0.08890002, 0.08920877, 0.08890002, 0.08920873, 1.31509593], [1516434600000, 0.08920873, 0.08920874, 0.0889001, 0.08920873, 1.47118833], [1516434660000, 0.08920873, 0.08920873, 0.0889001, 0.0892087, 3.54786011], [1516434720000, 0.08920869, 0.0892087, 0.08890002, 0.08920869, 21.73824518], [1516434780000, 0.08920868, 0.08920868, 0.08890001, 0.08890002, 18.12051993], [1516434840000, 0.08890002, 0.08920779, 0.08890002, 0.08920699, 6.70448973], [1516434900000, 0.08920698, 0.08920699, 0.0889001, 0.0889001, 10.22132671], [1516434960000, 0.0889001, 0.08920696, 0.0889001, 0.0889001, 24.30139239], [1516435020000, 0.0889001, 0.08920679, 0.0889, 0.0889, 14.52019039], [1516435080000, 0.0889, 0.0889001, 0.0889, 0.0889, 38.39261236], [1516435140000, 0.0889, 0.0889001, 0.08885, 0.08885, 26.04526771], [1516435200000, 0.08885, 0.0889001, 0.08882, 0.08882, 3.43343085], [1516435260000, 0.08885, 0.08910598, 0.08882, 0.0889501, 13.13724735], [1516435320000, 0.0889001, 0.08910598, 0.08885001, 0.08910598, 9.32320776], [1516435380000, 0.08910598, 0.08920597, 0.08910598, 0.08920596, 12.8868038], [1516435440000, 0.08885001, 0.08920596, 0.08885001, 0.08890001, 8.36199337], [1516435500000, 0.08920594, 0.08920594, 0.0889, 0.08890001, 13.13059593], [1516435560000, 0.08890002, 0.08920596, 0.08890001, 0.08890003, 32.58520563], [1516435620000, 0.08920594, 0.08920594, 0.08890003, 0.08890267, 13.90306367], [1516435680000, 0.08920593, 0.08920593, 0.08890022, 0.08890022, 10.03759172], [1516435740000, 0.08890022, 0.08920593, 0.08890022, 0.089, 9.5576484], [1516435800000, 0.08920589, 0.08920593, 0.089, 0.089, 12.99266596], [1516435860000, 0.08920589, 0.08920589, 0.089, 0.08920589, 9.54074266], [1516435920000, 0.08920589, 0.08920593, 0.08920581, 0.08920589, 31.90664204], [1516435980000, 0.08920585, 0.08920593, 0.089, 0.08920581, 17.20666954], [1516436040000, 0.08920581, 0.08920581, 0.089, 0.08920581, 13.14559437], [1516436100000, 0.0892058, 0.08920593, 0.089, 0.08920593, 11.62931014], [1516436160000, 0.08920593, 0.08920593, 0.089, 0.08920581, 10.18783043], [1516436220000, 0.08920581, 0.08920595, 0.08900001, 0.08920593, 8.87066515], [1516436280000, 0.08920593, 0.08925084, 0.08920581, 0.0892069, 10.49672436], [1516436340000, 0.08925084, 0.08953995, 0.08900009, 0.08953995, 15.01074483], [1516436400000, 0.08953995, 0.08953995, 0.089001, 0.08900104, 20.27388047], [1516436460000, 0.08927644, 0.08927644, 0.08900106, 0.08927644, 19.58598338], [1516436520000, 0.08927644, 0.08954, 0.089005, 0.08953787, 17.93091509], [1516436580000, 0.08906574, 0.08953999, 0.08901, 0.08953686, 5.97954967], [1516436640000, 0.08953685, 0.08953685, 0.0891111, 0.08952897, 2.95679926], [1516436700000, 0.08952898, 0.08952898, 0.0891111, 0.08948, 1.73271437], [1516436760000, 0.08947, 0.08947, 0.08911119, 0.0891112, 12.87377362], [1516436820000, 0.0891112, 0.08945, 0.08911119, 0.08943895, 37.74433676], [1516436880000, 0.08942993, 0.08943895, 0.08941002, 0.08941002, 1.95209781], [1516436940000, 0.08940893, 0.08940893, 0.08911125, 0.08933513, 3.4157744], [1516437000000, 0.08933509, 0.08934013, 0.08911125, 0.08934012, 9.18842468], [1516437060000, 0.0891113, 0.08927024, 0.0891113, 0.0891113, 12.72588208], [1516437120000, 0.0891113, 0.08914011, 0.0891113, 0.08913991, 34.71473228], [1516437180000, 0.08913991, 0.08913992, 0.08911131, 0.08911131, 8.76297996], [1516437240000, 0.08911131, 0.08913992, 0.08911131, 0.08911132, 7.40887794], [1516437300000, 0.08911131, 0.0891401, 0.08911125, 0.08914009, 23.57634107], [1516437360000, 0.08911125, 0.08911125, 0.08885, 0.08901, 31.55291135], [1516437420000, 0.08901, 0.08901, 0.0889, 0.0889, 7.57384115], [1516437480000, 0.08901, 0.08901, 0.0889, 0.08900996, 2.35712568], [1516437540000, 0.08900996, 0.08900996, 0.0890099, 0.08900992, 4.30923058], [1516437600000, 0.08900992, 0.08901, 0.08900992, 0.08901, 14.10176682], [1516437660000, 0.08900996, 0.08913992, 0.08900992, 0.08911125, 41.846875], [1516437720000, 0.0891399, 0.08914009, 0.08911125, 0.08914009, 30.83085249], [1516437780000, 0.08914, 0.08914, 0.08911125, 0.08911126, 11.56620776], [1516437840000, 0.08911126, 0.0891401, 0.08900993, 0.08900993, 14.44106074], [1516437900000, 0.08913997, 0.08914, 0.08900993, 0.08900993, 9.22890795], [1516437960000, 0.08913997, 0.08913997, 0.08900993, 0.08900993, 4.40157133], [1516438020000, 0.08900994, 0.08913997, 0.08900994, 0.0891399, 36.63807847], [1516438080000, 0.08913997, 0.08913997, 0.08900994, 0.0891399, 10.53907358], [1516438140000, 0.08900995, 0.08943998, 0.08900995, 0.08943992, 17.82109285], [1516438200000, 0.0894399, 0.08943994, 0.0891399, 0.08913992, 22.87088631], [1516438260000, 0.0891399, 0.08931383, 0.08900996, 0.08900996, 68.01455306], [1516438320000, 0.0891399, 0.08927998, 0.08881, 0.08881, 606.72058199], [1516438380000, 0.08891998, 0.08891998, 0.08827351, 0.08849999, 92.0026509], [1516438440000, 0.08839999, 0.08849999, 0.0882697, 0.08849999, 5.44807449], [1516438500000, 0.08849998, 0.08849999, 0.08838485, 0.08838485, 25.97118817], [1516438560000, 0.08849999, 0.08889597, 0.08838488, 0.08838488, 16.70099224], [1516438620000, 0.08838488, 0.08853925, 0.08838485, 0.08853925, 11.40214937], [1516438680000, 0.08853925, 0.08853925, 0.08838486, 0.08853924, 7.31529558], [1516438740000, 0.08853923, 0.08853924, 0.0885392, 0.08853924, 15.83536464], [1516438800000, 0.08853924, 0.08853925, 0.0885392, 0.08853925, 32.54007556], [1516438860000, 0.0885392, 0.08885, 0.08838485, 0.08884999, 45.3056255], [1516438920000, 0.08869998, 0.08889595, 0.0885, 0.0885, 60.92751436], [1516438980000, 0.0885, 0.0887, 0.0885, 0.0885, 5.62693442], [1516439040000, 0.0885, 0.08875, 0.0885, 0.0887, 46.96197063], [1516439100000, 0.0887, 0.08875, 0.0887, 0.08874999, 36.26958686], [1516439160000, 0.08870032, 0.08875, 0.08870032, 0.08874999, 7.08899334], [1516439220000, 0.08875, 0.08875, 0.0887, 0.0887, 10.42541003], [1516439280000, 0.08869999, 0.0887, 0.08853976, 0.08853977, 9.02454015], [1516439340000, 0.08869995, 0.08874998, 0.08854, 0.08874998, 10.38797193], [1516439400000, 0.08874998, 0.08874998, 0.08855, 0.08855, 9.2215641], [1516439460000, 0.08869995, 0.08874999, 0.088543, 0.08874995, 42.33624143], [1516439520000, 0.0886315, 0.08874999, 0.08855, 0.08874999, 10.23481142], [1516439580000, 0.08874995, 0.08874999, 0.08874995, 0.08874995, 14.5293737], [1516439640000, 0.08874999, 0.0890099, 0.0885, 0.08899999, 61.03727715], [1516439700000, 0.08898998, 0.08898999, 0.08874996, 0.08883882, 13.89552472], [1516439760000, 0.08874996, 0.08883882, 0.0885, 0.08874645, 5.41954735], [1516439820000, 0.08883882, 0.08894799, 0.08850002, 0.08850002, 6.9949073], [1516439880000, 0.08850002, 0.08893799, 0.08850001, 0.08850001, 8.59551965], [1516439940000, 0.08893795, 0.08894299, 0.08850001, 0.08850001, 23.49222658], [1516440000000, 0.088938, 0.089135, 0.08850001, 0.08901, 39.43339836], [1516440060000, 0.08901, 0.08901, 0.088938, 0.088938, 37.85243574], [1516440120000, 0.08912, 0.089135, 0.088938, 0.088938, 18.62758208], [1516440180000, 0.088938, 0.08903209, 0.08877009, 0.08877009, 13.48454953], [1516440240000, 0.0888, 0.08903086, 0.08850002, 0.08903086, 20.62577899], [1516440300000, 0.08854273, 0.08903086, 0.08854272, 0.08903084, 18.83926079], [1516440360000, 0.08903084, 0.08903084, 0.08854273, 0.08858679, 21.69257399], [1516440420000, 0.08858679, 0.089031, 0.0885, 0.08903098, 62.57868665], [1516440480000, 0.08901686, 0.08914, 0.0885, 0.08907147, 82.82471631], [1516440540000, 0.0890308, 0.0890308, 0.08903078, 0.08903079, 1.07864504], [1516440600000, 0.08850642, 0.08906479, 0.08850642, 0.08896665, 11.6783017], [1516440660000, 0.08896664, 0.08896669, 0.08853052, 0.08896669, 2.64548128], [1516440720000, 0.08883882, 0.08883882, 0.08853053, 0.08883882, 13.21798872], [1516440780000, 0.08883882, 0.08896633, 0.08853052, 0.08883882, 19.02907799], [1516440840000, 0.08883882, 0.08892, 0.08853053, 0.08853053, 8.31993622], [1516440900000, 0.08853053, 0.08853053, 0.08850645, 0.08853053, 37.09189061], [1516440960000, 0.08853053, 0.08853053, 0.08850642, 0.08850644, 3.75457853], [1516441020000, 0.08852997, 0.08853, 0.0885, 0.0885, 51.11221055], [1516441080000, 0.08850635, 0.08876999, 0.08835, 0.08853053, 29.72968866], [1516441140000, 0.08879212, 0.08879212, 0.08853053, 0.08853053, 4.60130348], [1516441200000, 0.08853053, 0.08876999, 0.08831, 0.08831, 8.77025191], [1516441260000, 0.08868999, 0.08868999, 0.08868999, 0.08868999, 0.23850983], [1516441320000, 0.08876999, 0.08876999, 0.0883, 0.0886, 12.6309878], [1516441380000, 0.08853053, 0.08868999, 0.0883, 0.08868476, 3.49095832], [1516441440000, 0.08868476, 0.08876999, 0.08853053, 0.08868476, 13.08175592], [1516441500000, 0.08868476, 0.08883899, 0.08868476, 0.08876999, 11.3277095], [1516441560000, 0.08876999, 0.08883899, 0.08868476, 0.08876999, 45.2610175], [1516441620000, 0.08876999, 0.08883897, 0.08853056, 0.08868476, 3.28138559], [1516441680000, 0.08868476, 0.08883898, 0.08853053, 0.08883898, 39.22580908], [1516441740000, 0.08883898, 0.08883898, 0.08831, 0.08877344, 7.27244684], [1516441800000, 0.08877344, 0.0888, 0.08853055, 0.08877344, 3.06956399], [1516441860000, 0.0888, 0.08883897, 0.08877344, 0.088834, 15.30385787], [1516441920000, 0.0888, 0.08883899, 0.0888, 0.08883396, 24.99230669], [1516441980000, 0.08883396, 0.08883899, 0.08880001, 0.08883899, 14.10340278], [1516442040000, 0.08880002, 0.088834, 0.08853056, 0.0888, 71.70272117], [1516442100000, 0.08853058, 0.0888, 0.08853056, 0.08879999, 7.89353186], [1516442160000, 0.08879999, 0.08879999, 0.088799, 0.088799, 15.39675957], [1516442220000, 0.08879999, 0.08879999, 0.088799, 0.08879999, 27.36206839], [1516442280000, 0.08879999, 0.0888, 0.088799, 0.0888, 6.73936769], [1516442340000, 0.08879999, 0.0888, 0.08879999, 0.08879999, 25.7647341], [1516442400000, 0.08879999, 0.0888, 0.088799, 0.0888, 38.5912981], [1516442460000, 0.0888, 0.0888, 0.08879901, 0.08879911, 7.17937797], [1516442520000, 0.0888, 0.0888, 0.08879911, 0.08879999, 2.7688173], [1516442580000, 0.0888, 0.0888, 0.08879911, 0.0888, 16.52076284], [1516442640000, 0.08879911, 0.0888, 0.088799, 0.0888, 20.88872585], [1516442700000, 0.08879901, 0.088839, 0.08879901, 0.088839, 56.10032819], [1516442760000, 0.0888, 0.088839, 0.08879901, 0.088839, 93.99930888], [1516442820000, 0.08883899, 0.088839, 0.08879901, 0.0888, 2.38216714], [1516442880000, 0.08879905, 0.088839, 0.08853074, 0.0888, 12.83710949], [1516442940000, 0.08879999, 0.0888, 0.08853075, 0.0888, 8.95371609], [1516443000000, 0.0888, 0.0888, 0.08853077, 0.08853078, 7.84723374], [1516443060000, 0.08853078, 0.08879999, 0.08853074, 0.08879996, 5.27338743], [1516443120000, 0.08879996, 0.0888, 0.08855, 0.0886, 5.08072158], [1516443180000, 0.0888, 0.0888, 0.08855, 0.08855, 3.29186146], [1516443240000, 0.08879996, 0.08879996, 0.08853081, 0.08853081, 7.76443585], [1516443300000, 0.08853081, 0.08879993, 0.08853081, 0.08878869, 16.70361163], [1516443360000, 0.08879992, 0.08879993, 0.08853081, 0.08879992, 4.8227834], [1516443420000, 0.08879992, 0.08879993, 0.08853081, 0.08878869, 6.49159155], [1516443480000, 0.08878869, 0.08878869, 0.08853081, 0.08878867, 7.19689093], [1516443540000, 0.08878867, 0.08879993, 0.08853081, 0.08879993, 29.82172469], [1516443600000, 0.08853081, 0.0887999, 0.08853081, 0.08853081, 11.24993712], [1516443660000, 0.08879984, 0.08879984, 0.08853082, 0.08853082, 2.91198179], [1516443720000, 0.08853082, 0.08879984, 0.08853081, 0.08878994, 9.45661848], [1516443780000, 0.08853099, 0.08879978, 0.08853099, 0.08857189, 5.18036522], [1516443840000, 0.08879978, 0.08879979, 0.08853083, 0.08853083, 52.55951909], [1516443900000, 0.08859189, 0.0887999, 0.08853081, 0.08853081, 21.69183635], [1516443960000, 0.0887999, 0.0887999, 0.08879989, 0.08879989, 14.3100263], [1516444020000, 0.08879989, 0.08879995, 0.08853084, 0.08853084, 53.00138531], [1516444080000, 0.08879988, 0.08879989, 0.08853084, 0.08853085, 2.61113338], [1516444140000, 0.08879979, 0.08879979, 0.08853086, 0.08879978, 1.98689969], [1516444200000, 0.08879977, 0.08879978, 0.08854, 0.08879978, 9.04084848], [1516444260000, 0.08879978, 0.08879979, 0.08854005, 0.08879979, 3.57742261], [1516444320000, 0.08856, 0.08879979, 0.08856, 0.08879979, 0.95484808], [1516444380000, 0.08879979, 0.08879979, 0.0886, 0.0887, 1.75169806], [1516444440000, 0.0887, 0.08879989, 0.08856001, 0.08879989, 30.85540256], [1516444500000, 0.08879988, 0.08879989, 0.08854008, 0.0887, 10.16386268], [1516444560000, 0.08879989, 0.08879989, 0.0887, 0.08879989, 2.89078794], [1516444620000, 0.0887, 0.08879989, 0.0887, 0.08879989, 6.58463761], [1516444680000, 0.08879989, 0.0888, 0.08879986, 0.0888, 159.88797863], [1516444740000, 0.08879987, 0.08879987, 0.08854009, 0.0887, 40.68587801], [1516444800000, 0.0887, 0.0887, 0.08854011, 0.0885795, 12.3894102], [1516444860000, 0.0887, 0.0887, 0.08857066, 0.0887, 15.52024877], [1516444920000, 0.0887, 0.089, 0.08857903, 0.089, 35.47466366], [1516444980000, 0.08889, 0.08889, 0.0887, 0.08883899, 0.75836206], [1516445040000, 0.08883899, 0.089, 0.08871774, 0.089, 10.71259478], [1516445100000, 0.089, 0.089, 0.08871774, 0.089, 5.81367017], [1516445160000, 0.089, 0.089, 0.08899998, 0.089, 4.82433343], [1516445220000, 0.089, 0.08912998, 0.08899998, 0.08899998, 28.89758541], [1516445280000, 0.08899998, 0.08912999, 0.08871774, 0.08899998, 45.86663589], [1516445340000, 0.08871774, 0.08914, 0.08871774, 0.08899997, 24.8626519], [1516445400000, 0.08899998, 0.08913999, 0.0887, 0.08899996, 16.31236987], [1516445460000, 0.0889999, 0.08914, 0.08871774, 0.08899991, 38.58226815], [1516445520000, 0.08899991, 0.08914, 0.08873509, 0.0887351, 13.03253034], [1516445580000, 0.08914, 0.08914, 0.08873513, 0.08874514, 5.75788315], [1516445640000, 0.089135, 0.08933992, 0.08910409, 0.089135, 51.94891764], [1516445700000, 0.08931487, 0.0893149, 0.08879501, 0.08931488, 7.20242568], [1516445760000, 0.08913148, 0.08936378, 0.08913148, 0.08931492, 38.15937475], [1516445820000, 0.08931492, 0.08936377, 0.0893149, 0.08931491, 19.25972163], [1516445880000, 0.0893149, 0.0894, 0.0893149, 0.0893149, 64.40305628], [1516445940000, 0.0893149, 0.08954, 0.08874516, 0.089, 78.55980213], [1516446000000, 0.08931487, 0.08939011, 0.08879506, 0.08939011, 6.99891056], [1516446060000, 0.0893901, 0.0893901, 0.08924872, 0.08924872, 2.39036067], [1516446120000, 0.0893, 0.08949939, 0.0887951, 0.0887951, 15.34400662], [1516446180000, 0.0887951, 0.08937676, 0.08879509, 0.089, 212.2207791], [1516446240000, 0.089, 0.08937676, 0.0887952, 0.08881522, 57.41620626], [1516446300000, 0.089, 0.0893698, 0.08881524, 0.08936976, 5.85267049], [1516446360000, 0.08936976, 0.08936976, 0.08910001, 0.08935, 6.95886703], [1516446420000, 0.0891, 0.08933995, 0.0890001, 0.08929884, 2.16844497], [1516446480000, 0.08913002, 0.0919, 0.08913, 0.08913, 780.83283599], [1516446540000, 0.08917583, 0.0895399, 0.08900012, 0.089419, 32.05354497], [1516446600000, 0.089419, 0.08942, 0.08901172, 0.08924874, 21.23452107], [1516446660000, 0.08924874, 0.08941999, 0.08914818, 0.08941999, 56.72424719], [1516446720000, 0.089419, 0.08941999, 0.08924874, 0.08940998, 16.14845895], [1516446780000, 0.089319, 0.0894, 0.08924874, 0.08932895, 19.23359988], [1516446840000, 0.08932895, 0.08932895, 0.08924874, 0.08924874, 21.49241555], [1516446900000, 0.08932392, 0.08932393, 0.08924874, 0.08932252, 23.61879719], [1516446960000, 0.08930001, 0.08932393, 0.0893, 0.0893, 12.62292925], [1516447020000, 0.0893, 0.08941999, 0.0893, 0.089305, 23.90460085], [1516447080000, 0.0893225, 0.0893225, 0.0893, 0.0893, 13.79130218], [1516447140000, 0.0893, 0.08930499, 0.0893, 0.08930499, 17.0657327], [1516447200000, 0.0893003, 0.08930499, 0.0893003, 0.08930499, 7.1666125], [1516447260000, 0.0893003, 0.08930499, 0.0893003, 0.08930499, 6.21443665], [1516447320000, 0.08930499, 0.08930499, 0.08930498, 0.08930498, 14.62394385], [1516447380000, 0.08930499, 0.08941998, 0.08930498, 0.08941998, 6.93458553], [1516447440000, 0.08941658, 0.08941999, 0.08941658, 0.08941997, 10.49524293], [1516447500000, 0.08941997, 0.08958976, 0.08941997, 0.08941999, 8.31589526], [1516447560000, 0.08953118, 0.08958967, 0.0893003, 0.0895, 213.93355516], [1516447620000, 0.08941999, 0.0895, 0.08931002, 0.08931002, 19.18699701], [1516447680000, 0.08941999, 0.08945, 0.08941999, 0.08945, 1.98802197], [1516447740000, 0.08941999, 0.0895, 0.08941999, 0.08949999, 18.91302858], [1516447800000, 0.0895, 0.08958968, 0.08949999, 0.08949999, 104.49497354], [1516447860000, 0.08949999, 0.08952723, 0.08931, 0.08931, 102.38519359], [1516447920000, 0.08931, 0.08958673, 0.0893, 0.08931, 92.57653271], [1516447980000, 0.08958643, 0.08958643, 0.08931, 0.08954995, 19.55189464], [1516448040000, 0.08954894, 0.08955, 0.08931, 0.08954892, 190.44700546], [1516448100000, 0.08931, 0.08954891, 0.089305, 0.089305, 4.98864725], [1516448160000, 0.089305, 0.08954, 0.08924876, 0.08924876, 17.85525507], [1516448220000, 0.08949999, 0.08949999, 0.0892, 0.0892, 42.6639061], [1516448280000, 0.08931, 0.08954, 0.0892, 0.08941657, 16.11307806], [1516448340000, 0.08941657, 0.08954, 0.0892, 0.0895398, 5.74856188], [1516448400000, 0.08953978, 0.0895398, 0.08928922, 0.08953978, 5.55263038], [1516448460000, 0.08953978, 0.08954, 0.0892, 0.0892, 22.22894006], [1516448520000, 0.08952989, 0.08953, 0.0892, 0.0892, 9.28579764], [1516448580000, 0.0892, 0.08953994, 0.089, 0.08952999, 34.36892866], [1516448640000, 0.08952999, 0.0895399, 0.08900002, 0.08952999, 26.39866098], [1516448700000, 0.08903, 0.08954, 0.08900001, 0.08900001, 47.38321748], [1516448760000, 0.08954, 0.08958684, 0.08903601, 0.08953999, 2.80502934], [1516448820000, 0.08953999, 0.08954, 0.08903611, 0.08953989, 6.22594143], [1516448880000, 0.08953988, 0.08953989, 0.08903611, 0.08953987, 2.48436312], [1516448940000, 0.0895398, 0.08953987, 0.08917701, 0.08953985, 3.62653429], [1516449000000, 0.08949, 0.08953986, 0.08944553, 0.08953984, 25.16329236], [1516449060000, 0.08953984, 0.08953986, 0.08948553, 0.08953985, 18.59747543], [1516449120000, 0.08953986, 0.08953986, 0.08953985, 0.08953985, 16.50581633], [1516449180000, 0.08953986, 0.08953986, 0.08906706, 0.08948552, 53.90855836], [1516449240000, 0.08948552, 0.08957698, 0.08948552, 0.08957698, 35.40740873], [1516449300000, 0.08957697, 0.08972, 0.08915003, 0.08953985, 91.80349157], [1516449360000, 0.08953985, 0.08970898, 0.08953985, 0.08953985, 46.58784838], [1516449420000, 0.08953985, 0.08969894, 0.08953985, 0.08964889, 18.24705651], [1516449480000, 0.08964888, 0.08964888, 0.08915005, 0.08915005, 27.00989393], [1516449540000, 0.08915005, 0.08964888, 0.08915005, 0.08964888, 3.26560715], [1516449600000, 0.0895, 0.08964888, 0.08915006, 0.08964885, 4.15893158], [1516449660000, 0.08940455, 0.08964885, 0.08904102, 0.0891, 14.31165298], [1516449720000, 0.0891, 0.08955, 0.0891, 0.08955, 12.88130454], [1516449780000, 0.08955, 0.08955, 0.08942005, 0.08942007, 9.02589329], [1516449840000, 0.08954999, 0.08954999, 0.08942007, 0.08954997, 11.68104387], [1516449900000, 0.08954997, 0.08954999, 0.08954997, 0.08954997, 8.44840444], [1516449960000, 0.08954999, 0.08955, 0.08954997, 0.08954999, 24.83546257], [1516450020000, 0.08955, 0.08972, 0.08954999, 0.08954999, 34.8512691], [1516450080000, 0.08954999, 0.0897611, 0.08954999, 0.08971, 63.92757169], [1516450140000, 0.08971, 0.08977145, 0.08954999, 0.08954999, 32.22165897], [1516450200000, 0.08955, 0.08977144, 0.08954999, 0.08954999, 33.81817232], [1516450260000, 0.08971, 0.08989713, 0.08954999, 0.08954999, 31.32678285], [1516450320000, 0.08954999, 0.08971, 0.08954999, 0.08956, 9.42994267], [1516450380000, 0.08989699, 0.08989699, 0.08956, 0.089887, 10.9796251], [1516450440000, 0.08956, 0.08989197, 0.08954997, 0.08954997, 80.22837074], [1516450500000, 0.08954997, 0.08955, 0.08924874, 0.0895, 23.26768847], [1516450560000, 0.0895, 0.08950799, 0.08924874, 0.08935, 3.04469135], [1516450620000, 0.08949997, 0.08949997, 0.08935, 0.089425, 24.76129576], [1516450680000, 0.089499, 0.0894999, 0.089425, 0.0894999, 5.85757562], [1516450740000, 0.08949989, 0.08949995, 0.08949989, 0.0894999, 13.14783685], [1516450800000, 0.0894999, 0.08954, 0.0894999, 0.08954, 15.8229461], [1516450860000, 0.08954, 0.08975996, 0.0894999, 0.08975996, 10.46618876], [1516450920000, 0.08965, 0.08975996, 0.0894999, 0.08954035, 8.75287517], [1516450980000, 0.08975994, 0.08983671, 0.0894999, 0.08954035, 13.34743454], [1516451040000, 0.08954035, 0.08983671, 0.089425, 0.08955, 11.81299815], [1516451100000, 0.08985689, 0.08986697, 0.089425, 0.08955002, 6.09473693], [1516451160000, 0.08955002, 0.08989198, 0.089425, 0.089425, 9.64549013], [1516451220000, 0.08955, 0.08987096, 0.089425, 0.08945, 52.64551287], [1516451280000, 0.08987092, 0.08987092, 0.089425, 0.0895, 27.78642186], [1516451340000, 0.0895, 0.08955, 0.089351, 0.089351, 12.01405198], [1516451400000, 0.089351, 0.08987073, 0.08935, 0.0894999, 21.01253436], [1516451460000, 0.08935, 0.0894999, 0.0893444, 0.0894285, 11.34066338], [1516451520000, 0.0894285, 0.08985098, 0.08926859, 0.08947772, 32.0431012], [1516451580000, 0.08947772, 0.08990179, 0.0892502, 0.08984596, 26.72855464], [1516451640000, 0.08925022, 0.08991387, 0.08925, 0.08925, 38.4157543], [1516451700000, 0.08975178, 0.08991396, 0.08975178, 0.08991384, 48.32947271], [1516451760000, 0.08991384, 0.08991402, 0.08925006, 0.08967571, 33.75821041], [1516451820000, 0.08967571, 0.08991384, 0.08967571, 0.08989999, 29.95336969], [1516451880000, 0.08967571, 0.08988999, 0.08932003, 0.08932003, 10.29847628], [1516451940000, 0.08932007, 0.089889, 0.08932007, 0.08932108, 9.12646148], [1516452000000, 0.08988896, 0.08988897, 0.08938653, 0.08938654, 11.92601989], [1516452060000, 0.08938654, 0.08978644, 0.08938654, 0.08939, 1.88010993], [1516452120000, 0.08939, 0.08988897, 0.08938654, 0.08987998, 18.77994598], [1516452180000, 0.08987992, 0.08987992, 0.08943, 0.08943, 3.07450615], [1516452240000, 0.0893866, 0.08987992, 0.0893866, 0.08987992, 12.58391478], [1516452300000, 0.08987991, 0.08987992, 0.08943, 0.08987988, 1.92177583], [1516452360000, 0.08943, 0.08987988, 0.0894066, 0.08940661, 6.27503881], [1516452420000, 0.08940661, 0.08987988, 0.08940661, 0.08968937, 39.06832338], [1516452480000, 0.08968937, 0.08987992, 0.08968935, 0.08972581, 16.21165347], [1516452540000, 0.08972581, 0.08987992, 0.0896894, 0.08970531, 14.54617111], [1516452600000, 0.0896994, 0.08987991, 0.08966323, 0.08966323, 20.60113726], [1516452660000, 0.08966323, 0.0898799, 0.08966323, 0.08966323, 5.77401403], [1516452720000, 0.0898799, 0.0899, 0.08966325, 0.08986452, 14.32217714], [1516452780000, 0.08986452, 0.0899, 0.0894181, 0.08942664, 30.35467137], [1516452840000, 0.0899, 0.0899, 0.08942664, 0.08942664, 5.33022414], [1516452900000, 0.08985177, 0.08989725, 0.08943, 0.08989722, 1.22563001], [1516452960000, 0.08985177, 0.08989725, 0.08985177, 0.0898518, 6.9333123], [1516453020000, 0.0898518, 0.08989724, 0.08942673, 0.08960001, 21.3097872], [1516453080000, 0.08960002, 0.0898518, 0.08953751, 0.0898518, 26.14294], [1516453140000, 0.08985179, 0.0898518, 0.08942675, 0.08960001, 16.32972102], [1516453200000, 0.08964529, 0.0896453, 0.08942673, 0.0896453, 10.01296472], [1516453260000, 0.0896453, 0.08983292, 0.08951337, 0.08951337, 15.06758959], [1516453320000, 0.08951337, 0.08951337, 0.08942675, 0.08951337, 3.50212985], [1516453380000, 0.08951337, 0.0896453, 0.08942675, 0.08951337, 8.16342901], [1516453440000, 0.08943001, 0.089645, 0.08942678, 0.089645, 8.18481675], [1516453500000, 0.089635, 0.089635, 0.0894268, 0.089635, 2.39030883], [1516453560000, 0.089635, 0.089654, 0.08951337, 0.089654, 24.40242979], [1516453620000, 0.08951339, 0.08985, 0.08951339, 0.089654, 1.89342844], [1516453680000, 0.08985, 0.08985, 0.08965402, 0.08984999, 6.59385491], [1516453740000, 0.08975, 0.08984999, 0.08965403, 0.08965404, 6.73824603], [1516453800000, 0.08975, 0.089849, 0.08965406, 0.08965406, 7.70911805], [1516453860000, 0.08965406, 0.08984999, 0.08965406, 0.08965406, 14.31070173], [1516453920000, 0.08965406, 0.08985, 0.08965406, 0.08984999, 11.39338016], [1516453980000, 0.08984899, 0.08984899, 0.0896541, 0.08976429, 30.96804509], [1516454040000, 0.0896541, 0.08984899, 0.0896541, 0.08984898, 9.40090931], [1516454100000, 0.0897313, 0.08985, 0.08965413, 0.08965413, 68.32204281], [1516454160000, 0.08984899, 0.08985, 0.08984899, 0.08984902, 24.99777606], [1516454220000, 0.08984902, 0.08991375, 0.089849, 0.08986452, 23.1538607], [1516454280000, 0.08986452, 0.08993782, 0.08986452, 0.08993641, 60.3059322], [1516454340000, 0.08986553, 0.09, 0.08986552, 0.08993772, 17.04850061], [1516454400000, 0.08993772, 0.09, 0.089849, 0.08993772, 36.26335727], [1516454460000, 0.08993772, 0.08993772, 0.089849, 0.089849, 15.27066926], [1516454520000, 0.08999998, 0.09, 0.08965403, 0.089995, 36.06697359], [1516454580000, 0.089995, 0.09, 0.0897437, 0.089985, 6.93102202], [1516454640000, 0.089985, 0.089985, 0.08965403, 0.08965403, 20.96410052], [1516454700000, 0.08965405, 0.089985, 0.08965405, 0.08965405, 24.41177856], [1516454760000, 0.08989999, 0.0899, 0.08965405, 0.0899, 11.3583295], [1516454820000, 0.0899, 0.0899, 0.08965405, 0.0899, 43.68550885], [1516454880000, 0.0899, 0.0899, 0.08965407, 0.08965409, 16.0711297], [1516454940000, 0.08965409, 0.0896541, 0.08965409, 0.08965409, 20.54894488], [1516455000000, 0.08965409, 0.0899, 0.08965409, 0.08989996, 12.7678112], [1516455060000, 0.08989998, 0.08989998, 0.0896541, 0.08965412, 5.47132404], [1516455120000, 0.08987499, 0.0899, 0.0896541, 0.0896541, 26.06820947], [1516455180000, 0.08965411, 0.0897, 0.08965405, 0.08965405, 135.62839467], [1516455240000, 0.08965405, 0.08987499, 0.08965405, 0.08965405, 144.61347837], [1516455300000, 0.08965405, 0.08987499, 0.0895, 0.0896541, 130.02978478], [1516455360000, 0.08965405, 0.08965409, 0.08944, 0.08944, 17.69922612], [1516455420000, 0.0895, 0.08965409, 0.08942675, 0.08944, 10.58857998], [1516455480000, 0.08944, 0.08944, 0.0894, 0.08944, 11.49944109], [1516455540000, 0.08943999, 0.08973898, 0.08941802, 0.089729, 44.93928887], [1516455600000, 0.089729, 0.0898499, 0.0896541, 0.0898499, 69.52548844], [1516455660000, 0.089738, 0.08987047, 0.089738, 0.089738, 75.19284595], [1516455720000, 0.08973801, 0.08986499, 0.08963398, 0.08964826, 10.54179825], [1516455780000, 0.08964825, 0.08964826, 0.08964825, 0.08964825, 8.37325807], [1516455840000, 0.08964826, 0.089895, 0.0893194, 0.0893194, 26.55835692], [1516455900000, 0.08931942, 0.08987, 0.0891, 0.08982999, 25.6964298], [1516455960000, 0.08962899, 0.08962899, 0.08931942, 0.08962899, 3.06431821], [1516456020000, 0.08962898, 0.08974231, 0.089116, 0.089687, 4.81053291], [1516456080000, 0.089687, 0.089687, 0.08911602, 0.08915602, 5.00069099], [1516456140000, 0.089652, 0.08967199, 0.08915602, 0.0895, 10.40752662], [1516456200000, 0.0896, 0.0896, 0.08911618, 0.08932751, 48.68991123], [1516456260000, 0.0893275, 0.0896, 0.08911636, 0.08959995, 22.17370616], [1516456320000, 0.0895, 0.08959995, 0.0895, 0.08959992, 41.01560018], [1516456380000, 0.08911657, 0.0896, 0.08911657, 0.08920007, 3.32503019], [1516456440000, 0.0895998, 0.0896, 0.08920007, 0.08959999, 11.30378619], [1516456500000, 0.08959999, 0.089677, 0.08920008, 0.08967698, 42.0675971], [1516456560000, 0.08967698, 0.089677, 0.08921026, 0.08943094, 21.54010775], [1516456620000, 0.08943094, 0.089677, 0.08943094, 0.08967699, 11.86799548], [1516456680000, 0.08943096, 0.08968698, 0.08943096, 0.08968698, 17.89083534], [1516456740000, 0.08923006, 0.089835, 0.08923005, 0.089825, 64.87876855], [1516456800000, 0.089825, 0.0899, 0.08923011, 0.0899, 137.63108665], [1516456860000, 0.0899, 0.08990845, 0.08924875, 0.08924883, 180.29938699], [1516456920000, 0.08982502, 0.08982504, 0.08936551, 0.08982499, 15.26897704], [1516456980000, 0.08982499, 0.08982504, 0.08922027, 0.08935814, 32.82011801], [1516457040000, 0.08974232, 0.09, 0.08935814, 0.08935815, 181.81943771], [1516457100000, 0.08982491, 0.08982492, 0.08928004, 0.08935814, 6.8047845], [1516457160000, 0.08982485, 0.08982485, 0.08928004, 0.08982471, 3.56556487], [1516457220000, 0.08935815, 0.08982458, 0.08935814, 0.08935815, 2.96783646], [1516457280000, 0.089824, 0.089824, 0.089229, 0.08982399, 81.2420818], [1516457340000, 0.089229, 0.08982399, 0.089229, 0.0892488, 13.53635693], [1516457400000, 0.08925005, 0.0895133, 0.08925005, 0.08925006, 6.98035087], [1516457460000, 0.08949999, 0.0901, 0.08949999, 0.08980551, 13.24052259], [1516457520000, 0.08968669, 0.09008831, 0.08949589, 0.09008828, 9.01488472], [1516457580000, 0.09001498, 0.09001498, 0.08953721, 0.08989293, 3.17507551], [1516457640000, 0.08953721, 0.089891, 0.08953721, 0.08953721, 34.04129016], [1516457700000, 0.08953721, 0.08988992, 0.08953721, 0.0898, 26.24878861], [1516457760000, 0.08979998, 0.08979998, 0.08953721, 0.08979898, 11.93300543], [1516457820000, 0.08953721, 0.089798, 0.08953721, 0.089795, 2.51012841], [1516457880000, 0.08979498, 0.08979498, 0.08953721, 0.08979398, 31.74371209], [1516457940000, 0.08979398, 0.08979496, 0.08953721, 0.08979398, 28.96832257], [1516458000000, 0.08978999, 0.08978999, 0.08953722, 0.08978999, 3.76677829], [1516458060000, 0.08978999, 0.08979398, 0.08953723, 0.0896, 4.87358898], [1516458120000, 0.0896, 0.08979597, 0.0894, 0.08979, 64.01955993], [1516458180000, 0.08979, 0.08979, 0.0894, 0.0894, 4.94569659], [1516458240000, 0.08978995, 0.08978995, 0.08941789, 0.0897899, 3.48415474], [1516458300000, 0.0897899, 0.0897899, 0.0894, 0.0894, 9.17732557], [1516458360000, 0.0894, 0.08959495, 0.089294, 0.08959495, 6.89005153], [1516458420000, 0.08959495, 0.08978399, 0.08939999, 0.08959495, 39.59103499], [1516458480000, 0.08959495, 0.0897011, 0.08959495, 0.08959495, 15.22814386], [1516458540000, 0.08959496, 0.08969449, 0.08959495, 0.08959495, 21.02057783], [1516458600000, 0.08959496, 0.08969446, 0.08959495, 0.08969399, 16.07218912], [1516458660000, 0.08969399, 0.089694, 0.0894, 0.0894, 7.20583947], [1516458720000, 0.08941, 0.08968993, 0.08927557, 0.08927557, 18.5773565], [1516458780000, 0.08967985, 0.08967985, 0.08927556, 0.08964393, 31.50483844], [1516458840000, 0.08964392, 0.0896499, 0.08942379, 0.0896499, 23.95028806], [1516458900000, 0.08964392, 0.08964991, 0.08942381, 0.08964294, 53.85710814], [1516458960000, 0.08964294, 0.08964294, 0.08942378, 0.08942378, 11.63185579], [1516459020000, 0.08961284, 0.08961284, 0.08942378, 0.08961187, 11.27145679], [1516459080000, 0.08961187, 0.08964991, 0.08942378, 0.08964991, 11.3597923], [1516459140000, 0.08964991, 0.08964991, 0.08942378, 0.08942379, 18.12009084], [1516459200000, 0.08942379, 0.08942379, 0.08942378, 0.08942379, 11.44406127], [1516459260000, 0.08942379, 0.08942379, 0.08942378, 0.08942379, 23.24006058], [1516459320000, 0.08961291, 0.08961291, 0.08961291, 0.08961291, 0.61220005], [1516459380000, 0.08963999, 0.08969447, 0.08961291, 0.08969447, 9.55973909], [1516459440000, 0.08969447, 0.089789, 0.08942378, 0.08942378, 18.1347353], [1516459500000, 0.08978899, 0.08979, 0.08942378, 0.08978899, 2.62041915], [1516459560000, 0.08942379, 0.08978995, 0.08942379, 0.08978995, 13.97462015], [1516459620000, 0.08942379, 0.08978995, 0.08942379, 0.08978993, 3.44012325], [1516459680000, 0.08978992, 0.08978995, 0.08906, 0.08978993, 62.866828], [1516459740000, 0.089765, 0.089765, 0.08927072, 0.08930577, 2.02484861], [1516459800000, 0.089765, 0.08978995, 0.08930579, 0.08978995, 12.44776706], [1516459860000, 0.08978994, 0.08978995, 0.08931101, 0.08976498, 5.15483543], [1516459920000, 0.08976499, 0.08978995, 0.08969, 0.08969, 24.72305174], [1516459980000, 0.0897526, 0.08978994, 0.08931103, 0.08978994, 16.05372534], [1516460040000, 0.089765, 0.08978995, 0.0894803, 0.089785, 2.90657358], [1516460100000, 0.08978995, 0.089825, 0.08948029, 0.089825, 28.72147764], [1516460160000, 0.089824, 0.089824, 0.0894624, 0.08982386, 1.40440174], [1516460220000, 0.0894625, 0.08982389, 0.0894625, 0.08981, 17.66447823], [1516460280000, 0.08946251, 0.08981, 0.08946251, 0.08980891, 4.38491856], [1516460340000, 0.08948029, 0.08980882, 0.08931104, 0.08978996, 6.20439682], [1516460400000, 0.08978996, 0.08978996, 0.08931104, 0.08931104, 18.96144562], [1516460460000, 0.08931104, 0.08978996, 0.08931101, 0.08978996, 142.45555184], [1516460520000, 0.08978996, 0.0898, 0.089341, 0.08934101, 69.04736554], [1516460580000, 0.08934101, 0.08976968, 0.089341, 0.08976962, 1.09912201], [1516460640000, 0.08972999, 0.089737, 0.08934101, 0.08969991, 2.42858052], [1516460700000, 0.089699, 0.0897, 0.08934101, 0.089699, 50.68720897], [1516460760000, 0.089699, 0.08978297, 0.08934101, 0.08934101, 49.86659486], [1516460820000, 0.08934101, 0.08977971, 0.08934101, 0.08934125, 2.48301057], [1516460880000, 0.08934125, 0.08976862, 0.08934125, 0.08935125, 1.47842286], [1516460940000, 0.08976862, 0.08976862, 0.08935125, 0.0897683, 4.75743761], [1516461000000, 0.08976825, 0.08976828, 0.08935125, 0.08976827, 17.83798268], [1516461060000, 0.08976856, 0.08977971, 0.08935125, 0.08976825, 50.71605798], [1516461120000, 0.08976825, 0.08976827, 0.08934102, 0.08976827, 8.88487598], [1516461180000, 0.08934102, 0.08981373, 0.08934102, 0.08981373, 8.43884079], [1516461240000, 0.08981373, 0.08981373, 0.08934102, 0.08981373, 51.34375773], [1516461300000, 0.08981373, 0.08990042, 0.08981373, 0.08988888, 8.27406065], [1516461360000, 0.08988888, 0.0901, 0.08981373, 0.08990041, 37.62318217], [1516461420000, 0.08990041, 0.08990042, 0.08988889, 0.08990041, 6.98653894], [1516461480000, 0.08990041, 0.09001533, 0.08990041, 0.08990041, 12.04588937], [1516461540000, 0.08990042, 0.0900441, 0.08990041, 0.09001533, 92.6367209], [1516461600000, 0.09004004, 0.0900441, 0.09001533, 0.09001533, 58.58655536], [1516461660000, 0.09001533, 0.09002182, 0.08990041, 0.08990042, 17.57028163], [1516461720000, 0.0899837, 0.09, 0.08990042, 0.0899837, 7.87722882], [1516461780000, 0.0899837, 0.09, 0.08990041, 0.08998704, 31.39365134], [1516461840000, 0.08998704, 0.09004409, 0.08990041, 0.08990041, 35.02026135], [1516461900000, 0.08990041, 0.08998704, 0.08981372, 0.08990041, 30.11449011], [1516461960000, 0.08981372, 0.08998703, 0.08981372, 0.08998537, 42.24115984], [1516462020000, 0.08998537, 0.08998704, 0.089815, 0.08998704, 24.96331666], [1516462080000, 0.089982, 0.089987, 0.0898, 0.08981501, 29.53589823], [1516462140000, 0.08981501, 0.08998704, 0.08943677, 0.08998703, 16.05950998], [1516462200000, 0.089987, 0.08998704, 0.08950001, 0.08950003, 8.25552282], [1516462260000, 0.08998704, 0.09013299, 0.08958704, 0.08998703, 62.17625014], [1516462320000, 0.08998703, 0.08998703, 0.08958703, 0.08958703, 2.99690274], [1516462380000, 0.08958703, 0.09014698, 0.08958703, 0.089588, 33.53130529], [1516462440000, 0.09014247, 0.09014247, 0.08958703, 0.09009996, 16.26274853], [1516462500000, 0.08959, 0.09014247, 0.08959, 0.08959, 63.01063299], [1516462560000, 0.08959, 0.08999, 0.08959, 0.08959, 13.8239348], [1516462620000, 0.08998999, 0.08998999, 0.08959, 0.08959, 5.72593868], [1516462680000, 0.089985, 0.089985, 0.0896, 0.0896, 17.02170522], [1516462740000, 0.0896, 0.08997, 0.08959, 0.08997, 2.60663329], [1516462800000, 0.08996999, 0.08997, 0.0896, 0.0896, 9.03127597], [1516462860000, 0.0896, 0.08996993, 0.0896, 0.08996993, 7.15464874], [1516462920000, 0.08960002, 0.08996993, 0.08960002, 0.08996993, 0.52219693], [1516462980000, 0.08996993, 0.09063209, 0.08943674, 0.08961, 129.59404669], [1516463040000, 0.0900089, 0.090243, 0.08974232, 0.09009998, 9.74891956], [1516463100000, 0.09009997, 0.09009999, 0.08983, 0.09008499, 23.71390999], [1516463160000, 0.09008499, 0.09008499, 0.08986766, 0.09007899, 5.02146113], [1516463220000, 0.09007898, 0.09007899, 0.08973984, 0.09, 56.84508741], [1516463280000, 0.09, 0.090059, 0.08973984, 0.09, 36.55245566], [1516463340000, 0.09, 0.09007702, 0.08998703, 0.09007702, 12.53899614], [1516463400000, 0.09007702, 0.09008497, 0.08998703, 0.08998703, 30.54919831], [1516463460000, 0.08998703, 0.09008497, 0.08998703, 0.09, 8.10909232], [1516463520000, 0.09, 0.09008497, 0.08998703, 0.08998703, 26.85210954], [1516463580000, 0.08998253, 0.09008495, 0.08974001, 0.09, 7.72780085], [1516463640000, 0.09008496, 0.09008496, 0.08950002, 0.08974011, 69.18236458], [1516463700000, 0.0897398, 0.09019991, 0.08950005, 0.090085, 21.74697198], [1516463760000, 0.09019991, 0.09019999, 0.09008497, 0.09019898, 100.21986624], [1516463820000, 0.09019898, 0.09026995, 0.09019898, 0.09019898, 51.55816641], [1516463880000, 0.09019899, 0.09038981, 0.09019898, 0.0902, 19.70098882], [1516463940000, 0.0902, 0.09037896, 0.09019898, 0.09019898, 18.28738498], [1516464000000, 0.09019899, 0.09029992, 0.09019899, 0.09019899, 15.41268146], [1516464060000, 0.09019899, 0.09028999, 0.09019898, 0.0902, 19.15115261], [1516464120000, 0.0902, 0.0902887, 0.09019898, 0.09019898, 26.85875397], [1516464180000, 0.09019898, 0.09028869, 0.09008501, 0.09019897, 105.73939904], [1516464240000, 0.09019895, 0.09019895, 0.09008501, 0.09019895, 11.94870722], [1516464300000, 0.09019895, 0.09019895, 0.09008501, 0.09019893, 4.0096855], [1516464360000, 0.09019893, 0.0903, 0.09019893, 0.0903, 64.76997948], [1516464420000, 0.09029983, 0.0903, 0.09029983, 0.0903, 21.44576933], [1516464480000, 0.09029983, 0.0903, 0.09029983, 0.0903, 26.16325089], [1516464540000, 0.0903, 0.09039971, 0.09025, 0.09025, 48.13092591], [1516464600000, 0.09028, 0.0903, 0.09008497, 0.0903, 18.8626219], [1516464660000, 0.09029999, 0.0903, 0.09008498, 0.09029998, 13.45539264], [1516464720000, 0.09029998, 0.09029999, 0.09008498, 0.09008498, 3.85999917], [1516464780000, 0.09029993, 0.09029993, 0.09, 0.09008497, 4.90273552], [1516464840000, 0.09029887, 0.09029887, 0.08990388, 0.09008493, 8.20857178], [1516464900000, 0.09014943, 0.09029659, 0.09, 0.09, 13.90451527], [1516464960000, 0.09029388, 0.09029389, 0.09, 0.09028968, 2.95568455], [1516465020000, 0.09028896, 0.09028896, 0.09000001, 0.09000005, 12.28407107], [1516465080000, 0.09000005, 0.090268, 0.09000005, 0.09026798, 6.63925378], [1516465140000, 0.09026788, 0.09026788, 0.09000143, 0.09019889, 7.76729223], [1516465200000, 0.09001001, 0.09019884, 0.09001, 0.09001899, 7.35019662], [1516465260000, 0.09001899, 0.09028862, 0.09001899, 0.09028862, 26.92676277], [1516465320000, 0.09028862, 0.09028994, 0.09019764, 0.09028855, 13.16757623], [1516465380000, 0.09028855, 0.09029595, 0.0902, 0.09029595, 14.86417888], [1516465440000, 0.09029595, 0.0903, 0.0902002, 0.09029669, 22.23923149], [1516465500000, 0.09029994, 0.0903998, 0.09029669, 0.09029994, 14.58361782], [1516465560000, 0.09029994, 0.09039979, 0.09001901, 0.09021899, 112.53142714], [1516465620000, 0.09029669, 0.09029669, 0.09001899, 0.09021879, 33.1710837], [1516465680000, 0.090019, 0.09021879, 0.09000142, 0.09000142, 16.68253228], [1516465740000, 0.09002, 0.09029669, 0.09000142, 0.09029669, 24.79308545], [1516465800000, 0.09029668, 0.09029668, 0.09000142, 0.09000142, 22.87040423], [1516465860000, 0.09000142, 0.09002001, 0.09, 0.09002001, 111.78662007], [1516465920000, 0.0902965, 0.0902965, 0.09002, 0.0902965, 9.41591905], [1516465980000, 0.0902965, 0.09039, 0.09002001, 0.0902966, 44.15075505], [1516466040000, 0.0902966, 0.09038998, 0.089505, 0.089505, 74.30373932], [1516466100000, 0.08995252, 0.09038499, 0.08995252, 0.0899566, 15.83601676], [1516466160000, 0.09023863, 0.09038499, 0.08995662, 0.09023863, 7.71524109], [1516466220000, 0.09038499, 0.09038998, 0.09023863, 0.09023864, 2.84000117], [1516466280000, 0.09038998, 0.09038998, 0.09023864, 0.09023864, 22.20644964], [1516466340000, 0.09023864, 0.09038997, 0.09023864, 0.09023865, 27.90536354], [1516466400000, 0.09023865, 0.09063209, 0.09023865, 0.09023865, 43.9745252], [1516466460000, 0.0902387, 0.09051379, 0.0902387, 0.09051378, 6.68583605], [1516466520000, 0.09051375, 0.09063209, 0.09025872, 0.09025872, 59.739218], [1516466580000, 0.09051371, 0.09051371, 0.09023864, 0.09023864, 23.01763731], [1516466640000, 0.09023864, 0.09063208, 0.08974232, 0.090239, 28.3179402], [1516466700000, 0.090239, 0.0905, 0.08984584, 0.09042863, 20.97727701], [1516466760000, 0.09042863, 0.09046691, 0.08979194, 0.090426, 97.77635919], [1516466820000, 0.08986145, 0.09039316, 0.08986145, 0.09038799, 12.92934336], [1516466880000, 0.09036799, 0.09040599, 0.08952501, 0.09040599, 28.70015109], [1516466940000, 0.08952501, 0.09039312, 0.08952501, 0.09022899, 16.93187053], [1516467000000, 0.09, 0.09022899, 0.08990843, 0.08990843, 4.30638461], [1516467060000, 0.09021947, 0.09023863, 0.09, 0.09009, 5.99150577], [1516467120000, 0.0902, 0.0902, 0.08966789, 0.08999998, 4.21572854], [1516467180000, 0.08952505, 0.08999998, 0.08952505, 0.08999996, 9.70878753], [1516467240000, 0.08963457, 0.09028632, 0.08963457, 0.08985922, 16.19690439], [1516467300000, 0.0899, 0.09029999, 0.08968601, 0.090195, 21.68863133], [1516467360000, 0.08968601, 0.09019998, 0.08968601, 0.09019994, 4.79132702], [1516467420000, 0.09019994, 0.09019997, 0.08977571, 0.09019994, 12.40648727], [1516467480000, 0.09019994, 0.09019997, 0.09003759, 0.09019994, 3.53061906], [1516467540000, 0.09019994, 0.09019998, 0.09003759, 0.09019996, 13.92878518], [1516467600000, 0.09019996, 0.09019997, 0.08977572, 0.09019995, 11.64213592], [1516467660000, 0.09019995, 0.09019995, 0.08995252, 0.09019497, 3.19731888], [1516467720000, 0.09, 0.09019995, 0.08995252, 0.09019496, 35.90941941], [1516467780000, 0.08995252, 0.09018995, 0.0897777, 0.0897777, 1.35403793], [1516467840000, 0.0897777, 0.09, 0.0897777, 0.08999, 7.80146213], [1516467900000, 0.08999, 0.09, 0.08977571, 0.09, 20.85025385], [1516467960000, 0.09, 0.09, 0.08977572, 0.08979445, 13.30094012], [1516468020000, 0.08977571, 0.09, 0.08977571, 0.09, 12.21915263], [1516468080000, 0.089999, 0.09, 0.08989999, 0.09, 18.03587965], [1516468140000, 0.09, 0.09, 0.08977, 0.09, 12.70072153], [1516468200000, 0.08977, 0.08999499, 0.08959, 0.0897, 33.89700017], [1516468260000, 0.08968603, 0.0897, 0.089505, 0.0897, 19.37127217], [1516468320000, 0.08969998, 0.08969998, 0.08959, 0.08968602, 4.42965686], [1516468380000, 0.08968602, 0.08969998, 0.089505, 0.08968601, 13.19738009], [1516468440000, 0.08968601, 0.08969997, 0.08968601, 0.08968601, 8.14491713], [1516468500000, 0.08968601, 0.08968602, 0.0893847, 0.089505, 7.008167], [1516468560000, 0.089505, 0.089695, 0.089505, 0.089694, 14.57752736], [1516468620000, 0.08968601, 0.08968601, 0.08910949, 0.089686, 58.26934055], [1516468680000, 0.089686, 0.089695, 0.089291, 0.089686, 17.76521136], [1516468740000, 0.08968, 0.08969998, 0.089291, 0.089291, 36.33152249], [1516468800000, 0.08929101, 0.08966999, 0.08929, 0.08966999, 28.37764659], [1516468860000, 0.08966, 0.08969998, 0.08929101, 0.089699, 16.79272413], [1516468920000, 0.089699, 0.08989358, 0.08940002, 0.08969998, 11.32821018], [1516468980000, 0.08989357, 0.08989357, 0.08940003, 0.0896999, 18.85124082], [1516469040000, 0.08940003, 0.0896999, 0.08940003, 0.08940004, 22.60136289], [1516469100000, 0.08969988, 0.0896999, 0.08941, 0.089699, 3.43207022], [1516469160000, 0.089699, 0.08989497, 0.08941004, 0.08989497, 45.66880877], [1516469220000, 0.08989496, 0.08989497, 0.0896999, 0.08988979, 24.44708377], [1516469280000, 0.08988979, 0.08988979, 0.0896999, 0.08986999, 5.74406782], [1516469340000, 0.0896999, 0.08986989, 0.08941013, 0.0896999, 14.01394924], [1516469400000, 0.08941013, 0.08982998, 0.08941009, 0.08971013, 11.99536467], [1516469460000, 0.0896999, 0.08971013, 0.08941009, 0.08969499, 12.25199336], [1516469520000, 0.0894995, 0.0894995, 0.08941009, 0.08941009, 4.55358931], [1516469580000, 0.08941011, 0.08969299, 0.08941011, 0.08941011, 2.91723697], [1516469640000, 0.08969197, 0.08969198, 0.08941011, 0.08941011, 22.52276649], [1516469700000, 0.08941011, 0.08969198, 0.08941009, 0.08969198, 7.64529463], [1516469760000, 0.08969198, 0.08969198, 0.0895, 0.0895, 11.34552423], [1516469820000, 0.0895, 0.08969198, 0.0895, 0.0895, 37.20029468], [1516469880000, 0.08968698, 0.08969989, 0.0895, 0.08950001, 32.28319575], [1516469940000, 0.08969989, 0.08986989, 0.08950001, 0.08950001, 36.50534911], [1516470000000, 0.0898599, 0.08986499, 0.08950001, 0.0898599, 1.17254743], [1516470060000, 0.0898599, 0.0898599, 0.08950001, 0.08950001, 2.64623098], [1516470120000, 0.0898599, 0.08987999, 0.08984, 0.08984, 60.72408793], [1516470180000, 0.08987999, 0.08987999, 0.08943731, 0.08952262, 80.72563152], [1516470240000, 0.08987999, 0.08987999, 0.0897, 0.0897, 9.98294291], [1516470300000, 0.0897, 0.08999998, 0.08941009, 0.08978296, 16.93096464], [1516470360000, 0.0897, 0.09018586, 0.0894101, 0.0894101, 17.68556564], [1516470420000, 0.0897361, 0.0897361, 0.0894101, 0.0894101, 14.21996395], [1516470480000, 0.08941009, 0.089731, 0.08941009, 0.0894101, 10.06626401], [1516470540000, 0.08966099, 0.0896691, 0.08941009, 0.08941009, 6.84916774], [1516470600000, 0.08949, 0.08967885, 0.08949, 0.0896691, 3.63087916], [1516470660000, 0.08966909, 0.0896691, 0.08949, 0.08966799, 20.89305629], [1516470720000, 0.08949004, 0.08966749, 0.08941018, 0.089667, 12.41382173], [1516470780000, 0.089667, 0.089735, 0.089667, 0.089667, 72.58812328], [1516470840000, 0.089667, 0.09018, 0.089667, 0.089667, 64.63963521], [1516470900000, 0.0896691, 0.08992899, 0.089667, 0.089667, 11.98439311], [1516470960000, 0.08986899, 0.09005147, 0.089667, 0.089864, 5.74066267], [1516471020000, 0.08986, 0.089864, 0.0896691, 0.08986399, 4.85597562], [1516471080000, 0.08986399, 0.089874, 0.08986399, 0.08986399, 30.29633821], [1516471140000, 0.08975876, 0.08986399, 0.0896691, 0.0896691, 32.68649986], [1516471200000, 0.08986395, 0.08986396, 0.08944394, 0.08986395, 5.30560052], [1516471260000, 0.08986394, 0.08986396, 0.0896691, 0.0896691, 2.39548173], [1516471320000, 0.08966906, 0.090019, 0.0895, 0.08966906, 4.63362163], [1516471380000, 0.089669, 0.09011187, 0.089669, 0.08966906, 6.61139935], [1516471440000, 0.09011185, 0.09011185, 0.08966906, 0.0899, 33.97571713], [1516471500000, 0.08966906, 0.09010984, 0.08966906, 0.08966911, 12.48426039], [1516471560000, 0.0899, 0.0899, 0.08966911, 0.0899, 18.47871574], [1516471620000, 0.0899, 0.0899, 0.0896691, 0.0896691, 3.05952942], [1516471680000, 0.08989991, 0.08989993, 0.0896691, 0.0898999, 16.28870048], [1516471740000, 0.0898999, 0.0898999, 0.0896691, 0.08966911, 4.98234295], [1516471800000, 0.08966911, 0.0898998, 0.08944394, 0.08966905, 60.35724995], [1516471860000, 0.08966905, 0.08966905, 0.0895, 0.0895, 5.64591148], [1516471920000, 0.0895, 0.08966904, 0.08944394, 0.0896, 5.5267012], [1516471980000, 0.0896, 0.08966896, 0.0895, 0.08966896, 6.83897129], [1516472040000, 0.08966896, 0.08966896, 0.0896, 0.0896, 10.29881395], [1516472100000, 0.08966896, 0.08966903, 0.0896, 0.08966896, 4.46101183], [1516472160000, 0.08966896, 0.08989984, 0.08950002, 0.08989984, 61.00113502], [1516472220000, 0.08989984, 0.08989999, 0.08940003, 0.08958451, 46.67870393], [1516472280000, 0.08958451, 0.09010988, 0.08958451, 0.08994156, 15.50944069], [1516472340000, 0.08994146, 0.08994146, 0.08920002, 0.08984659, 44.51055196], [1516472400000, 0.0898, 0.08990582, 0.0898, 0.0898898, 11.8615722], [1516472460000, 0.0898898, 0.08989174, 0.0896, 0.08985347, 11.76702611], [1516472520000, 0.0897, 0.08986924, 0.08932132, 0.08932132, 16.34807612], [1516472580000, 0.08932132, 0.0898507, 0.08932132, 0.0898507, 2.82638614], [1516472640000, 0.0898507, 0.0898966, 0.08934102, 0.0898898, 29.24691934], [1516472700000, 0.0898898, 0.08990203, 0.0895, 0.08963468, 19.97670199], [1516472760000, 0.08963468, 0.08985127, 0.08932132, 0.08984659, 2.4970339], [1516472820000, 0.08984659, 0.08985127, 0.08984659, 0.08985125, 46.93392799], [1516472880000, 0.08985125, 0.08985127, 0.08934109, 0.08974659, 24.78183901], [1516472940000, 0.08974659, 0.09010974, 0.08974659, 0.08974659, 22.88630167], [1516473000000, 0.08974659, 0.09010972, 0.08935, 0.08988673, 2.84465444], [1516473060000, 0.08935001, 0.08988674, 0.08935001, 0.08974827, 5.47739416], [1516473120000, 0.08961351, 0.08974777, 0.08961351, 0.08974777, 34.29821476], [1516473180000, 0.08974777, 0.08974777, 0.08974662, 0.08974662, 7.72080968], [1516473240000, 0.08974662, 0.08974662, 0.08961353, 0.08961353, 6.32126454], [1516473300000, 0.0896662, 0.0896662, 0.08961353, 0.08961353, 5.74961606], [1516473360000, 0.08961354, 0.0896662, 0.08961353, 0.0896662, 4.03539975], [1516473420000, 0.0896662, 0.09, 0.08961353, 0.08994524, 48.9489394], [1516473480000, 0.08999874, 0.09, 0.08974776, 0.08985286, 1.42614017], [1516473540000, 0.08999874, 0.09001212, 0.08974777, 0.08974777, 7.54912614], [1516473600000, 0.09, 0.09001212, 0.08975, 0.08998604, 10.43509127], [1516473660000, 0.08998604, 0.08999999, 0.08974776, 0.08974776, 13.51029121], [1516473720000, 0.08974776, 0.08975, 0.0895, 0.0895, 34.65059992], [1516473780000, 0.0895, 0.08982597, 0.0895, 0.08982597, 4.67057674], [1516473840000, 0.08950001, 0.08982593, 0.0895, 0.0895, 16.13994112], [1516473900000, 0.0895, 0.08985552, 0.0895, 0.08985552, 7.31225279], [1516473960000, 0.08985552, 0.08985555, 0.08950001, 0.08985349, 9.10786396], [1516474020000, 0.08985349, 0.08985349, 0.08950001, 0.08950001, 9.64773743], [1516474080000, 0.0895391, 0.08953923, 0.08950001, 0.08953923, 10.86020292], [1516474140000, 0.08953923, 0.08953923, 0.08951, 0.08953922, 18.76043535], [1516474200000, 0.08953922, 0.08953923, 0.0895, 0.08953923, 27.81441354], [1516474260000, 0.08953923, 0.089855, 0.0895, 0.08953923, 28.19542553], [1516474320000, 0.089855, 0.08985555, 0.08953923, 0.0896, 19.15165092], [1516474380000, 0.08985555, 0.09, 0.0896, 0.08960001, 30.17755858], [1516474440000, 0.0896, 0.09010974, 0.0896, 0.0900951, 17.15949696], [1516474500000, 0.08985554, 0.09009509, 0.08960016, 0.08985554, 21.45554954], [1516474560000, 0.08985554, 0.09008467, 0.089602, 0.08985551, 1.43214081], [1516474620000, 0.08985551, 0.0898557, 0.0896, 0.0898, 54.68634437], [1516474680000, 0.089602, 0.0898, 0.089602, 0.08960201, 1.03064593], [1516474740000, 0.08960201, 0.08970201, 0.089602, 0.089602, 7.2457876], [1516474800000, 0.089602, 0.0898, 0.0896, 0.0896, 75.56299181], [1516474860000, 0.0898, 0.0898557, 0.08953923, 0.08985569, 60.32344997], [1516474920000, 0.08985569, 0.0898557, 0.08932132, 0.08932132, 24.0069563], [1516474980000, 0.0895392, 0.0895392, 0.08944461, 0.0895392, 3.14384842], [1516475040000, 0.0895392, 0.08985569, 0.08932133, 0.0894064, 11.28437217], [1516475100000, 0.0894064, 0.08985556, 0.08932133, 0.08933, 2.85229579], [1516475160000, 0.08976132, 0.08985554, 0.08976132, 0.08976132, 11.81108905], [1516475220000, 0.08976132, 0.08985554, 0.08934006, 0.08980843, 16.94399403], [1516475280000, 0.08985554, 0.08985554, 0.08980843, 0.08980843, 20.64307058], [1516475340000, 0.08985554, 0.0898557, 0.08980943, 0.08985555, 6.08601853], [1516475400000, 0.08985555, 0.0898557, 0.08985555, 0.0898557, 5.24484154], [1516475460000, 0.08985632, 0.08999445, 0.0898557, 0.08999445, 15.59303481], [1516475520000, 0.08999999, 0.08999999, 0.08985555, 0.08999999, 7.14071888], [1516475580000, 0.08999999, 0.08999999, 0.08985555, 0.08985555, 16.95100112], [1516475640000, 0.08985555, 0.08999999, 0.08947893, 0.08999999, 15.07632007], [1516475700000, 0.08985553, 0.08999999, 0.08947904, 0.08999998, 13.0885725], [1516475760000, 0.08999998, 0.08999998, 0.08985554, 0.08985554, 22.75557521], [1516475820000, 0.08985835, 0.08999706, 0.08985554, 0.08985554, 11.2614861], [1516475880000, 0.08996029, 0.08999999, 0.08948367, 0.08952427, 17.62579091], [1516475940000, 0.08957338, 0.08999999, 0.08957338, 0.08999998, 3.44570685], [1516476000000, 0.08999998, 0.08999998, 0.08960401, 0.08999998, 3.49901648], [1516476060000, 0.08999998, 0.08999998, 0.089614, 0.08999997, 3.26678446], [1516476120000, 0.08999997, 0.09000234, 0.08999997, 0.09000234, 57.74383957], [1516476180000, 0.09004335, 0.09010988, 0.09004335, 0.09008484, 5.72625048], [1516476240000, 0.09010988, 0.09011507, 0.08999997, 0.09, 41.70453705], [1516476300000, 0.09, 0.09010988, 0.08999997, 0.09010988, 5.76814458], [1516476360000, 0.0900951, 0.09010988, 0.08999997, 0.08999997, 6.52040721], [1516476420000, 0.09, 0.0901085, 0.09, 0.09010849, 4.49350694], [1516476480000, 0.09010849, 0.0901085, 0.09, 0.09010849, 17.75878289], [1516476540000, 0.09010849, 0.09010849, 0.0899999, 0.08999997, 67.11478088], [1516476600000, 0.0899999, 0.08999997, 0.0899999, 0.08999996, 4.81044065], [1516476660000, 0.08999996, 0.09010849, 0.0898, 0.0898, 8.4995623], [1516476720000, 0.08999989, 0.090104, 0.08999989, 0.09, 4.82814045], [1516476780000, 0.090089, 0.090089, 0.089791, 0.08999418, 44.99372662], [1516476840000, 0.08997524, 0.08998414, 0.089791, 0.08993156, 5.24874087], [1516476900000, 0.08993156, 0.08997524, 0.089791, 0.08993156, 14.88296328], [1516476960000, 0.08993156, 0.08993156, 0.0898, 0.089931, 6.14688739], [1516477020000, 0.08993156, 0.08993156, 0.08980001, 0.08993156, 8.04598112], [1516477080000, 0.08993156, 0.08993156, 0.08980001, 0.08993156, 3.68366319], [1516477140000, 0.08983156, 0.09008457, 0.08980001, 0.090059, 322.83303295], [1516477200000, 0.090059, 0.0900839, 0.090059, 0.09005901, 139.46843093], [1516477260000, 0.09006, 0.09010988, 0.090059, 0.09010988, 26.6565135], [1516477320000, 0.09010988, 0.09011077, 0.090059, 0.09006, 74.49323821], [1516477380000, 0.09006, 0.09011077, 0.090059, 0.09009999, 12.17457019], [1516477440000, 0.09009999, 0.09009999, 0.090059, 0.09009998, 182.45895521], [1516477500000, 0.09009998, 0.09011077, 0.09009998, 0.09010001, 8.56886904], [1516477560000, 0.09011077, 0.09011152, 0.09005901, 0.09010856, 46.78158359], [1516477620000, 0.09005902, 0.09010857, 0.09005901, 0.09005901, 29.40458779], [1516477680000, 0.09005901, 0.09005902, 0.090059, 0.090059, 138.58657133], [1516477740000, 0.090059, 0.09005902, 0.090059, 0.09005901, 488.42294185], [1516477800000, 0.09005901, 0.09007514, 0.090059, 0.090059, 218.78860042], [1516477860000, 0.0900656, 0.0900656, 0.090059, 0.090063, 20.15392234], [1516477920000, 0.090059, 0.09011507, 0.090059, 0.09011507, 80.47275397], [1516477980000, 0.0900656, 0.09011507, 0.0900656, 0.090075, 12.75539496], [1516478040000, 0.090075, 0.09011506, 0.090059, 0.0900656, 73.10549898], [1516478100000, 0.090059, 0.0900656, 0.090059, 0.0900656, 15.24562027], [1516478160000, 0.0900656, 0.0900656, 0.090059, 0.09005901, 8.46890564], [1516478220000, 0.09005901, 0.09006559, 0.090056, 0.090056, 94.69652805], [1516478280000, 0.09005554, 0.09005555, 0.09002001, 0.09002001, 21.04143966], [1516478340000, 0.09005554, 0.09005554, 0.09002001, 0.09002001, 10.57321895], [1516478400000, 0.09, 0.09005554, 0.08944001, 0.09002, 14.80419731], [1516478460000, 0.09002, 0.09005554, 0.08933003, 0.08937705, 24.39747309], [1516478520000, 0.08947272, 0.09002001, 0.08933505, 0.09, 46.80635333], [1516478580000, 0.09000738, 0.09000738, 0.08951001, 0.08951004, 1.70682453], [1516478640000, 0.090015, 0.090046, 0.08951004, 0.08999707, 14.17730642], [1516478700000, 0.08999707, 0.0900105, 0.08952107, 0.08968231, 20.75514198], [1516478760000, 0.08999996, 0.08999996, 0.08972566, 0.08999994, 13.62040477], [1516478820000, 0.08999994, 0.08999996, 0.08972566, 0.08999994, 4.15284135], [1516478880000, 0.08999994, 0.08999994, 0.08972568, 0.08973165, 18.33778585], [1516478940000, 0.08999994, 0.09005555, 0.089495, 0.09005555, 143.38938486], [1516479000000, 0.08999993, 0.09005555, 0.08948978, 0.09, 20.37894206], [1516479060000, 0.09, 0.09, 0.0895793, 0.08967403, 4.45566462], [1516479120000, 0.08991515, 0.08991515, 0.08948978, 0.08948978, 27.3504694], [1516479180000, 0.08983489, 0.08983489, 0.08981608, 0.08981608, 0.38278411], [1516479240000, 0.089674, 0.08981608, 0.0895, 0.08979999, 7.98455356], [1516479300000, 0.089674, 0.08975, 0.08924874, 0.08974998, 62.34039221], [1516479360000, 0.08950001, 0.08979308, 0.08948978, 0.08950003, 25.54830073], [1516479420000, 0.08950003, 0.0898, 0.08950003, 0.0898, 16.87601068], [1516479480000, 0.0898, 0.0898, 0.08950002, 0.08950002, 50.33471149], [1516479540000, 0.0898, 0.0898, 0.08950002, 0.0898, 38.96788787], [1516479600000, 0.0898, 0.0898, 0.08960003, 0.08960003, 5.20307748], [1516479660000, 0.08979, 0.0898, 0.08960003, 0.08960003, 17.01120191], [1516479720000, 0.0898, 0.0898, 0.089, 0.0898, 234.37698165], [1516479780000, 0.08974232, 0.09003654, 0.08940003, 0.08984703, 100.38498545], [1516479840000, 0.08984703, 0.08989265, 0.08942546, 0.08984703, 9.3394154], [1516479900000, 0.08984701, 0.08984701, 0.0895, 0.0895895, 2.5670291], [1516479960000, 0.08984701, 0.08984703, 0.08958951, 0.08984703, 5.77245127], [1516480020000, 0.08984701, 0.08984703, 0.08845001, 0.08984702, 551.50551821], [1516480080000, 0.08984703, 0.08984703, 0.08984701, 0.08984701, 40.02435491], [1516480140000, 0.08984703, 0.08984703, 0.08984701, 0.08984701, 6.58693181], [1516480200000, 0.08984701, 0.08984703, 0.08984701, 0.08984701, 41.24922564], [1516480260000, 0.08984703, 0.08984703, 0.08984701, 0.08984703, 20.3515323], [1516480320000, 0.08984703, 0.08988939, 0.08984701, 0.08984703, 7.08170779], [1516480380000, 0.08984703, 0.08999638, 0.08984703, 0.08988939, 6.19529313], [1516480440000, 0.0898894, 0.09002672, 0.0898894, 0.08999638, 5.2513591], [1516480500000, 0.08999638, 0.09004407, 0.08999638, 0.09, 17.55908028], [1516480560000, 0.09004405, 0.09004405, 0.08999638, 0.09, 4.8781923], [1516480620000, 0.08999638, 0.09, 0.0898894, 0.08999638, 4.16419474], [1516480680000, 0.08999638, 0.09, 0.08984704, 0.09, 23.16781979], [1516480740000, 0.09, 0.09004404, 0.08984704, 0.09, 9.38994878], [1516480800000, 0.09004402, 0.09004402, 0.09, 0.09, 5.81568516], [1516480860000, 0.09004402, 0.09004404, 0.08984704, 0.08984704, 17.25471474], [1516480920000, 0.09004404, 0.09004405, 0.0900002, 0.09004404, 4.11170791], [1516480980000, 0.0900002, 0.09004404, 0.08984704, 0.08984704, 3.68661519], [1516481040000, 0.08999638, 0.09004405, 0.08984704, 0.08984704, 14.85537285], [1516481100000, 0.09, 0.09, 0.08984704, 0.08984704, 1.20495661], [1516481160000, 0.09, 0.09, 0.08984706, 0.08984706, 3.84783094], [1516481220000, 0.08999999, 0.08999999, 0.08984704, 0.08984704, 2.4617162], [1516481280000, 0.08984704, 0.0899999, 0.08984704, 0.08984704, 9.25480488], [1516481340000, 0.08984704, 0.09, 0.08984703, 0.09, 10.80590873], [1516481400000, 0.08999999, 0.08999999, 0.08984703, 0.089999, 8.87403061], [1516481460000, 0.08999998, 0.08999999, 0.08999638, 0.08999999, 4.61613681], [1516481520000, 0.08999999, 0.08999999, 0.08984703, 0.08984703, 10.81747203], [1516481580000, 0.08999638, 0.09, 0.08999638, 0.09, 47.33725162], [1516481640000, 0.09, 0.09005555, 0.09, 0.09004405, 21.7732699], [1516481700000, 0.09, 0.0900656, 0.09, 0.0900656, 35.15017793], [1516481760000, 0.09005555, 0.0900656, 0.09, 0.09, 14.85854672], [1516481820000, 0.09005555, 0.09005555, 0.0898545, 0.08991009, 15.25570433], [1516481880000, 0.0898545, 0.09, 0.089689, 0.09, 21.82140989], [1516481940000, 0.09, 0.09, 0.08959941, 0.08961253, 28.52523324], [1516482000000, 0.089988, 0.09005555, 0.08995781, 0.09, 10.56727608], [1516482060000, 0.09, 0.09005555, 0.08995781, 0.09005555, 8.02459656], [1516482120000, 0.09, 0.09005555, 0.09, 0.09005555, 0.4816127], [1516482180000, 0.09000002, 0.09005555, 0.09000002, 0.09005555, 2.88964529], [1516482240000, 0.09005555, 0.09005555, 0.09, 0.09005554, 5.80789573], [1516482300000, 0.09, 0.09005554, 0.09, 0.09, 4.75157561], [1516482360000, 0.09005554, 0.09005554, 0.09, 0.09005553, 4.28146401], [1516482420000, 0.09005551, 0.09005551, 0.09, 0.09005551, 6.81479782], [1516482480000, 0.09004551, 0.090055, 0.0900005, 0.09000051, 3.04382972], [1516482540000, 0.090055, 0.090055, 0.09, 0.09000001, 2.63462309], [1516482600000, 0.0900005, 0.09000051, 0.09, 0.09, 7.74051], [1516482660000, 0.09, 0.09000051, 0.09, 0.09000051, 22.6451515], [1516482720000, 0.0900005, 0.09000051, 0.0900005, 0.09000051, 8.69466929], [1516482780000, 0.0900005, 0.09000051, 0.0900005, 0.09000051, 7.92090313], [1516482840000, 0.09000051, 0.09000051, 0.0900005, 0.0900005, 11.25237893], [1516482900000, 0.0900005, 0.0900005, 0.09000001, 0.09000001, 6.11101727], [1516482960000, 0.09000001, 0.0900005, 0.09000001, 0.0900005, 9.07381916], [1516483020000, 0.09000051, 0.09000051, 0.09000001, 0.09000001, 37.6637165], [1516483080000, 0.09000001, 0.09000051, 0.09000001, 0.09000051, 21.48377811], [1516483140000, 0.09000051, 0.09000051, 0.09000001, 0.09000002, 19.66218137], [1516483200000, 0.09000051, 0.09000051, 0.09000003, 0.09000003, 6.11236874], [1516483260000, 0.09000051, 0.09000051, 0.09000001, 0.09000001, 4.45101861], [1516483320000, 0.09000051, 0.09005551, 0.09000001, 0.09005551, 19.24824578], [1516483380000, 0.09000051, 0.09005551, 0.09000001, 0.09005551, 8.27540701], [1516483440000, 0.09005551, 0.09005554, 0.09000001, 0.09005553, 22.0812308], [1516483500000, 0.09005553, 0.09005554, 0.08825223, 0.08952489, 684.33974704], [1516483560000, 0.08952489, 0.0900555, 0.08952489, 0.0900555, 9.58013948], [1516483620000, 0.08987696, 0.09005552, 0.08987696, 0.08987697, 62.25253555], [1516483680000, 0.09005551, 0.09007135, 0.09005549, 0.09007135, 15.72677438], [1516483740000, 0.09007135, 0.09008657, 0.08987697, 0.09, 8.81406625], [1516483800000, 0.09007135, 0.09011507, 0.09, 0.09011507, 9.75268803], [1516483860000, 0.09, 0.09011507, 0.09, 0.09, 10.47023629], [1516483920000, 0.09, 0.09011507, 0.09, 0.09011507, 9.8065612], [1516483980000, 0.09011507, 0.09011507, 0.09, 0.09, 16.97399406], [1516484040000, 0.09, 0.09, 0.08987698, 0.08987698, 1.96447347], [1516484100000, 0.09, 0.09, 0.08987696, 0.08987698, 3.39121791], [1516484160000, 0.09, 0.09, 0.08996684, 0.08996684, 5.37218899], [1516484220000, 0.08987698, 0.08996684, 0.08987696, 0.08987698, 1.86653321], [1516484280000, 0.08987698, 0.09011507, 0.08987698, 0.08996685, 30.66827775], [1516484340000, 0.08996685, 0.08996685, 0.08990001, 0.0899668, 1.82920119], [1516484400000, 0.08996679, 0.09011507, 0.08977696, 0.09011507, 13.69686179], [1516484460000, 0.09011506, 0.09011506, 0.08990001, 0.09011506, 6.72553551], [1516484520000, 0.09011506, 0.09011506, 0.09011506, 0.09011506, 1.46569699], [1516484580000, 0.08990501, 0.09011507, 0.089905, 0.09011506, 11.09158434], [1516484640000, 0.09011506, 0.09011507, 0.08990501, 0.09011506, 20.84478619], [1516484700000, 0.08996501, 0.09011506, 0.08990501, 0.08990501, 2.11526137], [1516484760000, 0.09011504, 0.09014999, 0.08990501, 0.08990501, 57.56575519], [1516484820000, 0.08990501, 0.08990501, 0.089905, 0.08990501, 7.24521749], [1516484880000, 0.09010407, 0.09010407, 0.089905, 0.089905, 7.11002725], [1516484940000, 0.09010407, 0.09014419, 0.089905, 0.089905, 8.79023396], [1516485000000, 0.09010407, 0.0901141, 0.08990001, 0.09003051, 14.23201839], [1516485060000, 0.08990001, 0.09001045, 0.08977696, 0.0899, 4.14418949], [1516485120000, 0.0899, 0.0899, 0.08977696, 0.08977696, 4.61939159], [1516485180000, 0.08977696, 0.08990001, 0.08977696, 0.08986673, 5.20482597], [1516485240000, 0.08989999, 0.08998202, 0.08977697, 0.08977697, 9.83487145], [1516485300000, 0.08986673, 0.09005387, 0.08977696, 0.08999999, 19.10504058], [1516485360000, 0.08977696, 0.09005383, 0.0895, 0.08998988, 17.67507742], [1516485420000, 0.08998246, 0.09, 0.0895, 0.08999999, 2.19077519], [1516485480000, 0.08999997, 0.08999997, 0.08950004, 0.08950004, 9.1502303], [1516485540000, 0.0897892, 0.0897892, 0.08950005, 0.0897892, 5.25442183], [1516485600000, 0.08950005, 0.08978918, 0.08950005, 0.08978918, 11.90985819], [1516485660000, 0.08978918, 0.08978918, 0.08955745, 0.089689, 40.58439409], [1516485720000, 0.089689, 0.089689, 0.08968899, 0.089689, 11.39880563], [1516485780000, 0.089689, 0.08978918, 0.08950008, 0.08978738, 13.28499624], [1516485840000, 0.08978738, 0.08987498, 0.08950003, 0.08983582, 22.35590385], [1516485900000, 0.08983582, 0.08987498, 0.08978738, 0.08987498, 5.20304882], [1516485960000, 0.08987497, 0.08987498, 0.08950001, 0.08950001, 2.9084788], [1516486020000, 0.08950001, 0.0898749, 0.0895, 0.0898749, 2.64360789], [1516486080000, 0.0898749, 0.0898749, 0.08960005, 0.089874, 9.50820834], [1516486140000, 0.0898749, 0.0898749, 0.089874, 0.089874, 0.71153892], [1516486200000, 0.08987479, 0.0898749, 0.08950003, 0.0898749, 3.90180692], [1516486260000, 0.0898748, 0.0898749, 0.0895, 0.08984825, 15.40387206], [1516486320000, 0.08984825, 0.08984825, 0.08950001, 0.08954324, 6.67759696], [1516486380000, 0.08983868, 0.08983911, 0.08963278, 0.08983299, 26.12037046], [1516486440000, 0.08983299, 0.08983299, 0.0897, 0.0897, 4.18109454], [1516486500000, 0.08970001, 0.08983289, 0.0897, 0.08978705, 20.48521916], [1516486560000, 0.08978705, 0.08983289, 0.0897, 0.0897, 19.91632745], [1516486620000, 0.08971776, 0.08971777, 0.0897, 0.08971777, 12.23507872], [1516486680000, 0.08971777, 0.08971777, 0.08970002, 0.08971777, 12.69010026], [1516486740000, 0.089713, 0.08983567, 0.089713, 0.08982599, 22.48473453], [1516486800000, 0.08971777, 0.0898264, 0.089713, 0.089713, 12.25986718], [1516486860000, 0.089713, 0.08981881, 0.0895, 0.0895, 17.81089519], [1516486920000, 0.08950003, 0.08982996, 0.089286, 0.08980998, 75.99847565], [1516486980000, 0.08959, 0.08980999, 0.089286, 0.08959, 31.67720178], [1516487040000, 0.08959, 0.08959, 0.08959, 0.08959, 10.78653831], [1516487100000, 0.08969999, 0.08997999, 0.08959, 0.0896, 14.24341341], [1516487160000, 0.08989484, 0.08995076, 0.0896, 0.0899469, 10.03826378], [1516487220000, 0.08996409, 0.08999999, 0.0896, 0.08999499, 15.22906067], [1516487280000, 0.08999491, 0.09, 0.0896, 0.09, 13.3526904], [1516487340000, 0.09, 0.09005388, 0.08959, 0.08982658, 47.44974276], [1516487400000, 0.08982658, 0.0900914, 0.08982658, 0.0900914, 48.35297392], [1516487460000, 0.09, 0.09009999, 0.09, 0.09009, 14.71030788], [1516487520000, 0.09000001, 0.0901, 0.09, 0.09000001, 9.04716813], [1516487580000, 0.09009999, 0.09014999, 0.08982658, 0.08999999, 72.33487995], [1516487640000, 0.08999997, 0.09, 0.0896, 0.08999996, 24.79046643], [1516487700000, 0.08999996, 0.09014999, 0.08959, 0.08959, 29.12176931], [1516487760000, 0.08959, 0.09010446, 0.08959, 0.08959, 3.5383039], [1516487820000, 0.09007566, 0.09013418, 0.09007566, 0.09007566, 20.92597037], [1516487880000, 0.09007566, 0.09013418, 0.09007566, 0.09007566, 18.88277821], [1516487940000, 0.09007566, 0.09007566, 0.08960342, 0.09007566, 11.01069452], [1516488000000, 0.09007566, 0.09007566, 0.08963119, 0.09007564, 7.50818822], [1516488060000, 0.09007564, 0.09007564, 0.08960338, 0.08960338, 28.16198543], [1516488120000, 0.09007375, 0.09007375, 0.08960338, 0.08978502, 11.46776425], [1516488180000, 0.09006676, 0.0900719, 0.0898, 0.0898, 3.28944562], [1516488240000, 0.09004237, 0.09007558, 0.08959, 0.08999999, 30.1623136], [1516488300000, 0.09, 0.09007558, 0.08957, 0.09006091, 38.83096527], [1516488360000, 0.08957, 0.09, 0.08950099, 0.08957, 15.93048377], [1516488420000, 0.09, 0.09, 0.08957005, 0.08999999, 4.47129743], [1516488480000, 0.08999999, 0.09, 0.08957744, 0.09, 23.68009143], [1516488540000, 0.09, 0.09, 0.08957799, 0.09, 12.78815194], [1516488600000, 0.09, 0.09, 0.08957743, 0.09, 21.07957652], [1516488660000, 0.09, 0.09, 0.08960235, 0.09, 8.88595173], [1516488720000, 0.09, 0.09, 0.0896323, 0.09, 7.24814293], [1516488780000, 0.09, 0.09007558, 0.09, 0.09007558, 5.80569903], [1516488840000, 0.09, 0.09007558, 0.08965055, 0.09007557, 7.85337935], [1516488900000, 0.09007557, 0.09007557, 0.09007556, 0.09007557, 3.28614781], [1516488960000, 0.0898, 0.09007555, 0.08962561, 0.09007554, 7.71101089], [1516489020000, 0.09007554, 0.09007554, 0.089736, 0.08999997, 3.25431358], [1516489080000, 0.08965057, 0.08999999, 0.08965057, 0.08991261, 1.70713624], [1516489140000, 0.08999997, 0.09, 0.08965056, 0.08999999, 2.99592428], [1516489200000, 0.08999998, 0.08999999, 0.08968521, 0.08999999, 1.82283992], [1516489260000, 0.08999999, 0.09, 0.08955, 0.08999999, 12.60061943], [1516489320000, 0.08999999, 0.09, 0.08960001, 0.08999998, 5.77976213], [1516489380000, 0.08999998, 0.09, 0.08965502, 0.08972064, 5.48677302], [1516489440000, 0.08999999, 0.09007554, 0.08971366, 0.08994492, 8.09060982], [1516489500000, 0.08994493, 0.08994494, 0.08970086, 0.08994493, 4.05743492], [1516489560000, 0.08994492, 0.08994494, 0.0897393, 0.0899, 4.85201307], [1516489620000, 0.0899, 0.08994494, 0.0899, 0.0899, 55.17687612], [1516489680000, 0.08994493, 0.08994494, 0.0899, 0.08994494, 5.56876541], [1516489740000, 0.08994494, 0.09007557, 0.089944, 0.09007557, 0.61920474], [1516489800000, 0.09007557, 0.09007559, 0.089944, 0.089944, 8.03940301], [1516489860000, 0.09007557, 0.09007557, 0.0899, 0.08990001, 9.29972157], [1516489920000, 0.08990001, 0.09007557, 0.0899, 0.09007557, 22.1844061], [1516489980000, 0.09007557, 0.09007566, 0.0899, 0.09007, 13.61941636], [1516490040000, 0.09006998, 0.09007566, 0.08992, 0.09006995, 10.10023264], [1516490100000, 0.09007564, 0.09007566, 0.08991799, 0.08999999, 3.2472926], [1516490160000, 0.08999999, 0.09, 0.08991799, 0.08991801, 30.79679997], [1516490220000, 0.08991801, 0.09, 0.08991799, 0.08999999, 11.07244337], [1516490280000, 0.08999999, 0.09007566, 0.08999999, 0.09000001, 8.70634852], [1516490340000, 0.09000001, 0.09014999, 0.09000001, 0.09014999, 17.95182183], [1516490400000, 0.09014999, 0.09018586, 0.09007565, 0.09015, 4.22646514], [1516490460000, 0.09018586, 0.09019657, 0.09, 0.09019657, 18.97050404], [1516490520000, 0.09019657, 0.0904, 0.0901564, 0.0901564, 30.80420415], [1516490580000, 0.0902, 0.09029636, 0.09, 0.09, 6.56810085], [1516490640000, 0.09004181, 0.09033982, 0.08991799, 0.09001273, 26.61211046], [1516490700000, 0.09032477, 0.09032477, 0.0899, 0.08991799, 22.66583399], [1516490760000, 0.0899, 0.09000791, 0.0899, 0.08991799, 4.01072727], [1516490820000, 0.09015627, 0.09031559, 0.08991799, 0.09031559, 20.58501039], [1516490880000, 0.09031559, 0.09031559, 0.09, 0.09026665, 9.23891641], [1516490940000, 0.09031557, 0.09031557, 0.08991799, 0.08991799, 14.4907488], [1516491000000, 0.0899182, 0.09026, 0.08991799, 0.08991799, 7.89729617], [1516491060000, 0.09025959, 0.09025959, 0.08991799, 0.08991899, 2.44781957], [1516491120000, 0.09025609, 0.09025609, 0.08991799, 0.08991899, 7.21032554], [1516491180000, 0.08991899, 0.09025618, 0.08991899, 0.09025618, 23.90560211], [1516491240000, 0.09025618, 0.09025635, 0.08992, 0.089967, 5.80137793], [1516491300000, 0.09025635, 0.09025789, 0.09025609, 0.09025635, 4.1749902], [1516491360000, 0.09025635, 0.09038263, 0.09025625, 0.09036826, 24.23916624], [1516491420000, 0.09032477, 0.09040477, 0.09032477, 0.09032477, 48.78601694], [1516491480000, 0.09032477, 0.09059996, 0.09032477, 0.09036826, 22.38624375], [1516491540000, 0.09036825, 0.09036826, 0.09032477, 0.09032477, 19.9891883], [1516491600000, 0.09036, 0.09057231, 0.089918, 0.089918, 26.80989967], [1516491660000, 0.09046606, 0.09046606, 0.08992134, 0.09029998, 4.70196435], [1516491720000, 0.09029998, 0.09046606, 0.09029998, 0.09046598, 10.81670074], [1516491780000, 0.09046596, 0.09046596, 0.0903, 0.0903, 8.02916889], [1516491840000, 0.0903, 0.09046607, 0.0903, 0.09046607, 9.68830073], [1516491900000, 0.09046607, 0.09053044, 0.0903903, 0.0903903, 12.52578131], [1516491960000, 0.0903903, 0.09054883, 0.08991811, 0.09054215, 17.4599568], [1516492020000, 0.09046607, 0.09057222, 0.0901, 0.0901, 19.24892337], [1516492080000, 0.09051788, 0.09051788, 0.0901001, 0.09050996, 6.67133564], [1516492140000, 0.09050996, 0.09050998, 0.09022997, 0.09022997, 11.16525154], [1516492200000, 0.0904886, 0.0904886, 0.0901001, 0.0904886, 25.15662778], [1516492260000, 0.0904886, 0.0904886, 0.0901, 0.0901, 19.97955457], [1516492320000, 0.09026, 0.09026234, 0.0901, 0.09025989, 5.57968635], [1516492380000, 0.09025989, 0.09025989, 0.09010001, 0.09025986, 10.08889203], [1516492440000, 0.09025986, 0.09044984, 0.0901, 0.0901, 15.64481056], [1516492500000, 0.09010005, 0.09038163, 0.09010005, 0.09024, 10.84668795], [1516492560000, 0.09024, 0.09024, 0.0901, 0.09010005, 8.74470128], [1516492620000, 0.09010001, 0.09010005, 0.09001376, 0.09010005, 13.88927226], [1516492680000, 0.09010005, 0.0904, 0.09010005, 0.09039499, 3.34476216], [1516492740000, 0.09010011, 0.0904, 0.09001376, 0.0904, 15.69575633], [1516492800000, 0.090395, 0.0904, 0.090069, 0.09034217, 12.94814729], [1516492860000, 0.09034217, 0.09039999, 0.09000001, 0.09037796, 22.13724108], [1516492920000, 0.09000001, 0.09037793, 0.09000001, 0.09030001, 3.6992728], [1516492980000, 0.09009001, 0.09037793, 0.09, 0.09, 7.19382133], [1516493040000, 0.0903779, 0.09060111, 0.08976, 0.08980836, 43.7626787], [1516493100000, 0.08980836, 0.0903779, 0.08980407, 0.0903779, 33.7430737], [1516493160000, 0.09025741, 0.09057535, 0.08984949, 0.09041361, 101.93975699], [1516493220000, 0.09050693, 0.09073513, 0.089817, 0.09063995, 333.20099911], [1516493280000, 0.09063995, 0.0906701, 0.08985664, 0.09000007, 96.7978213], [1516493340000, 0.09041325, 0.09063976, 0.08978504, 0.0900007, 7.20744711], [1516493400000, 0.09063976, 0.09063977, 0.0900007, 0.09063972, 10.39356508], [1516493460000, 0.09063973, 0.09063973, 0.09021316, 0.09063897, 18.03540869], [1516493520000, 0.09063891, 0.09063892, 0.09021318, 0.09063868, 15.49964241], [1516493580000, 0.09063868, 0.09063868, 0.09030342, 0.09041, 16.98079499], [1516493640000, 0.09041, 0.09063782, 0.09021318, 0.09030342, 26.79282954], [1516493700000, 0.09000074, 0.09041, 0.09000074, 0.0902, 7.11819149], [1516493760000, 0.0902, 0.09063692, 0.09000075, 0.0902, 10.25301228], [1516493820000, 0.09000076, 0.0902, 0.09000076, 0.09019, 2.34112865], [1516493880000, 0.09019, 0.09035, 0.09000075, 0.09035, 9.87055417], [1516493940000, 0.09034999, 0.09034999, 0.0900015, 0.09034999, 8.9898134], [1516494000000, 0.09034999, 0.09034999, 0.09009101, 0.09034999, 2.50356621], [1516494060000, 0.090091, 0.09034999, 0.09000075, 0.09034815, 74.00250254], [1516494120000, 0.09034999, 0.09039698, 0.0900064, 0.09034818, 20.72185094], [1516494180000, 0.09040231, 0.09040231, 0.0901207, 0.09034815, 8.76715324], [1516494240000, 0.09034815, 0.09041232, 0.09012071, 0.09019544, 60.98797639], [1516494300000, 0.09018383, 0.09062921, 0.09018383, 0.0906292, 22.5632922], [1516494360000, 0.0904, 0.09045616, 0.09039817, 0.09039817, 41.71600838], [1516494420000, 0.09039859, 0.09062519, 0.09010001, 0.09062518, 26.17283189], [1516494480000, 0.09039817, 0.090627, 0.09012401, 0.09039817, 13.3241359], [1516494540000, 0.09039817, 0.09062688, 0.09014063, 0.09055264, 15.69207976], [1516494600000, 0.09040228, 0.09062506, 0.09040228, 0.09040228, 12.67167002], [1516494660000, 0.09055263, 0.09055264, 0.09019081, 0.09019081, 10.85061422], [1516494720000, 0.09025, 0.09049349, 0.09019081, 0.09049349, 21.51037511], [1516494780000, 0.09019082, 0.09048991, 0.09019082, 0.0902, 5.10602746], [1516494840000, 0.0902, 0.09048893, 0.09019082, 0.09048893, 11.75333162], [1516494900000, 0.09048893, 0.09048999, 0.09012852, 0.09012852, 17.0542145], [1516494960000, 0.09019081, 0.09048893, 0.09012852, 0.09019085, 8.19184339], [1516495020000, 0.09048892, 0.09048893, 0.09019082, 0.09048892, 10.60540037], [1516495080000, 0.0904889, 0.09048892, 0.09019086, 0.0902089, 5.17989722], [1516495140000, 0.09048891, 0.09048892, 0.09019081, 0.09048, 37.91315554], [1516495200000, 0.09048, 0.09048, 0.09000075, 0.09000075, 48.10360611], [1516495260000, 0.09000075, 0.09048999, 0.0900002, 0.09019, 28.5204898], [1516495320000, 0.09048999, 0.09048999, 0.09000501, 0.09047522, 13.72252321], [1516495380000, 0.09048998, 0.09049349, 0.09007583, 0.09047189, 10.12107164], [1516495440000, 0.09047189, 0.09049349, 0.09047189, 0.09047189, 14.02499938], [1516495500000, 0.09048995, 0.09049349, 0.09017718, 0.09047189, 12.83651044], [1516495560000, 0.09049349, 0.09049349, 0.0901048, 0.09049349, 7.74162915], [1516495620000, 0.09049348, 0.0905, 0.0901048, 0.09047189, 6.74050115], [1516495680000, 0.0901048, 0.09047185, 0.0901048, 0.09015, 8.9038377], [1516495740000, 0.09015, 0.09046991, 0.09010481, 0.09046991, 10.67379017], [1516495800000, 0.090468, 0.09047189, 0.0901048, 0.0901048, 41.82483034], [1516495860000, 0.0901048, 0.09046991, 0.0901048, 0.0902, 9.61499768], [1516495920000, 0.09039999, 0.0904, 0.0901048, 0.09039997, 8.7902457], [1516495980000, 0.0902, 0.09036992, 0.09006909, 0.09006909, 31.62168599], [1516496040000, 0.09006909, 0.09027174, 0.0900002, 0.0900002, 14.29239939], [1516496100000, 0.0900002, 0.09020272, 0.0900001, 0.0900001, 9.31761561], [1516496160000, 0.09013544, 0.090194, 0.0900001, 0.0900001, 34.99275182], [1516496220000, 0.0900001, 0.090189, 0.08991544, 0.08991544, 30.51853116], [1516496280000, 0.09, 0.0901988, 0.0899324, 0.0899324, 59.50996057], [1516496340000, 0.0899324, 0.09011998, 0.0895, 0.0899324, 136.71321607], [1516496400000, 0.0899524, 0.0900501, 0.08950001, 0.09005009, 15.35419355], [1516496460000, 0.09, 0.09, 0.0895, 0.0895, 73.31342647], [1516496520000, 0.08999993, 0.09017443, 0.0895, 0.08981678, 18.77199931], [1516496580000, 0.09011995, 0.09014849, 0.089505, 0.08957362, 9.64492155], [1516496640000, 0.08957362, 0.090145, 0.08956, 0.08989813, 12.10762517], [1516496700000, 0.08989813, 0.09013206, 0.08956105, 0.090069, 7.50727041], [1516496760000, 0.090069, 0.09033997, 0.090069, 0.09033997, 11.67757763], [1516496820000, 0.09033997, 0.09039996, 0.09020272, 0.09033447, 75.55076069], [1516496880000, 0.09020272, 0.09035004, 0.09020272, 0.09020272, 6.61368612], [1516496940000, 0.09035004, 0.09055411, 0.09020272, 0.09020272, 30.47954479], [1516497000000, 0.09043012, 0.09043012, 0.09020272, 0.09039667, 28.95683878], [1516497060000, 0.09020272, 0.09042559, 0.09013319, 0.09042559, 17.63867276], [1516497120000, 0.09032559, 0.09042559, 0.09013319, 0.0901332, 12.94344908], [1516497180000, 0.09042558, 0.09042558, 0.09013319, 0.09013319, 12.70764654], [1516497240000, 0.09013319, 0.0902, 0.08964357, 0.08964357, 60.57288389], [1516497300000, 0.08999991, 0.09020001, 0.08964358, 0.09012297, 56.67188711], [1516497360000, 0.09012296, 0.09012296, 0.08964359, 0.09010296, 22.40036233], [1516497420000, 0.0901, 0.09011297, 0.09, 0.09010396, 25.02696728], [1516497480000, 0.09010396, 0.09012297, 0.0897, 0.0897, 27.56366609], [1516497540000, 0.08999999, 0.09030042, 0.08970001, 0.08970001, 2.2968503], [1516497600000, 0.09030046, 0.09045583, 0.08964357, 0.09002945, 37.09307155], [1516497660000, 0.09002945, 0.0901, 0.09002945, 0.0901, 2.93861154], [1516497720000, 0.0901, 0.09041414, 0.09002945, 0.09041407, 4.16701585], [1516497780000, 0.090364, 0.09041407, 0.0897, 0.0897, 18.7039755], [1516497840000, 0.09029997, 0.09029997, 0.08964358, 0.09029995, 16.53191908], [1516497900000, 0.09010296, 0.09040095, 0.09010296, 0.09010296, 9.47531662], [1516497960000, 0.09029991, 0.09029991, 0.09010296, 0.09029991, 3.66516014], [1516498020000, 0.09029991, 0.09040095, 0.089781, 0.089781, 2.94921312], [1516498080000, 0.09, 0.09029991, 0.09, 0.0902999, 35.43743173], [1516498140000, 0.09029989, 0.09029989, 0.09, 0.09029988, 12.36830392], [1516498200000, 0.09029988, 0.09029988, 0.09, 0.09029986, 28.5978953], [1516498260000, 0.09029986, 0.09029986, 0.08978101, 0.08978101, 2.42764174], [1516498320000, 0.0902998, 0.09029983, 0.08971, 0.09029983, 21.84886791], [1516498380000, 0.09003, 0.09040094, 0.08971092, 0.08971092, 209.02910315], [1516498440000, 0.09039898, 0.09039898, 0.09035, 0.09036899, 1.43258387], [1516498500000, 0.09036899, 0.09036899, 0.08972604, 0.0899002, 19.08699666], [1516498560000, 0.09035899, 0.09041405, 0.08990021, 0.09032949, 25.4110542], [1516498620000, 0.09032949, 0.09041407, 0.08990501, 0.09040404, 27.49271538], [1516498680000, 0.09040404, 0.09041407, 0.08999491, 0.09040226, 20.53288661], [1516498740000, 0.09039225, 0.09048, 0.08999493, 0.09041845, 9.52702027], [1516498800000, 0.09041845, 0.09041845, 0.09000001, 0.09041845, 3.46422334], [1516498860000, 0.09041845, 0.09041845, 0.09000011, 0.09040799, 1.65090458], [1516498920000, 0.09000013, 0.09040799, 0.09000012, 0.09000013, 5.19985031], [1516498980000, 0.09000013, 0.09040291, 0.09000001, 0.09000001, 5.42604987], [1516499040000, 0.09039999, 0.09039999, 0.09000002, 0.09039987, 35.92788786], [1516499100000, 0.09038636, 0.09038636, 0.09000002, 0.09037071, 29.60453518], [1516499160000, 0.09000001, 0.09035251, 0.08999493, 0.08999493, 29.42337408], [1516499220000, 0.08999494, 0.09034635, 0.08999491, 0.08999491, 22.39898237], [1516499280000, 0.09, 0.09030817, 0.09, 0.09029499, 5.8653055], [1516499340000, 0.09, 0.09029317, 0.09, 0.09000002, 21.89155259], [1516499400000, 0.09000002, 0.0901, 0.09, 0.09, 9.21318669], [1516499460000, 0.09, 0.09009999, 0.09, 0.09, 39.47740396], [1516499520000, 0.09009999, 0.0903009, 0.09, 0.0900009, 3.75227946], [1516499580000, 0.0900009, 0.09031995, 0.09, 0.09031995, 18.59489357], [1516499640000, 0.09031995, 0.09034451, 0.09, 0.09031994, 5.78536515], [1516499700000, 0.09031992, 0.09031993, 0.09000001, 0.09000001, 15.12620556], [1516499760000, 0.09031537, 0.09031537, 0.09000002, 0.09000003, 21.45529538], [1516499820000, 0.09000004, 0.0903153, 0.09000003, 0.09000005, 5.53319009], [1516499880000, 0.09000005, 0.09000005, 0.09000005, 0.09000005, 4.86234675], [1516499940000, 0.09031525, 0.09031525, 0.09000001, 0.09000001, 84.33684662], [1516500000000, 0.090212, 0.09030969, 0.090212, 0.090212, 29.93502444], [1516500060000, 0.090212, 0.0903, 0.09000001, 0.0903, 10.85707973], [1516500120000, 0.09029999, 0.09031525, 0.09000001, 0.090212, 4.88830878], [1516500180000, 0.09031525, 0.09031525, 0.090212, 0.090212, 2.96689616], [1516500240000, 0.090212, 0.090212, 0.09000001, 0.090212, 7.62204962], [1516500300000, 0.090212, 0.09031525, 0.09000001, 0.09031525, 14.80410264], [1516500360000, 0.09031525, 0.09031525, 0.09031499, 0.090315, 2.87275523], [1516500420000, 0.09031499, 0.09040799, 0.09000002, 0.09040799, 11.14596462], [1516500480000, 0.09040799, 0.09040845, 0.090009, 0.09040799, 19.59835053], [1516500540000, 0.0904084, 0.09040845, 0.090009, 0.090408, 23.21474058], [1516500600000, 0.090408, 0.09048, 0.0900918, 0.09047998, 12.39179488], [1516500660000, 0.09047998, 0.09057361, 0.09047998, 0.09056819, 29.65761866], [1516500720000, 0.09047998, 0.09057, 0.09047998, 0.09047998, 18.48726146], [1516500780000, 0.09048, 0.09057, 0.09047998, 0.09047998, 12.3953786], [1516500840000, 0.09047998, 0.09057, 0.09047998, 0.09057, 7.564119], [1516500900000, 0.09047998, 0.09057362, 0.09047998, 0.09057362, 8.7499658], [1516500960000, 0.09057362, 0.09057362, 0.09057, 0.09057, 18.5846181], [1516501020000, 0.09057181, 0.09057362, 0.09047998, 0.09047999, 19.47654301], [1516501080000, 0.09057361, 0.09057362, 0.09047999, 0.09047999, 4.14261801], [1516501140000, 0.0905736, 0.0905736, 0.09047998, 0.09047998, 14.50646694], [1516501200000, 0.09047998, 0.0905736, 0.09047998, 0.09047998, 57.8704931], [1516501260000, 0.09047998, 0.0905736, 0.09002401, 0.09047998, 64.15046093], [1516501320000, 0.09009185, 0.09057361, 0.09002402, 0.09055548, 6.26379425], [1516501380000, 0.09002901, 0.09057362, 0.09002404, 0.09002404, 30.92833779], [1516501440000, 0.09055548, 0.09057352, 0.090029, 0.090029, 2.11144121], [1516501500000, 0.09056999, 0.09056999, 0.090029, 0.09002901, 3.63730327], [1516501560000, 0.0905, 0.0905, 0.09002902, 0.09002902, 2.71031321], [1516501620000, 0.09002901, 0.09044984, 0.09002901, 0.09044984, 18.6155291], [1516501680000, 0.090449, 0.090449, 0.09002901, 0.09044853, 7.05865515], [1516501740000, 0.09044839, 0.09044839, 0.09002901, 0.09002901, 34.60956654], [1516501800000, 0.09002901, 0.09002901, 0.09002403, 0.09002403, 14.17367556], [1516501860000, 0.0902, 0.09039991, 0.09002403, 0.09002403, 22.67662654], [1516501920000, 0.09025, 0.09039717, 0.09002403, 0.09039717, 2.49944373], [1516501980000, 0.09039708, 0.09039717, 0.0900241, 0.0900241, 23.39799806], [1516502040000, 0.09039351, 0.09039529, 0.09002403, 0.09039331, 30.34334485], [1516502100000, 0.09039154, 0.09039154, 0.09002403, 0.09039153, 8.21940973], [1516502160000, 0.09039152, 0.0904, 0.09002403, 0.09002403, 42.65435436], [1516502220000, 0.09002403, 0.09039305, 0.09002403, 0.09002404, 16.92789413], [1516502280000, 0.09002404, 0.09039305, 0.09002403, 0.09002403, 94.17883509], [1516502340000, 0.09002403, 0.09002403, 0.09002403, 0.09002403, 39.27855709], [1516502400000, 0.09002403, 0.09025997, 0.09002403, 0.09002403, 65.09073669], [1516502460000, 0.09002403, 0.09025995, 0.08999991, 0.08999991, 108.46673965], [1516502520000, 0.08999991, 0.09008935, 0.08999491, 0.09, 7.93349548], [1516502580000, 0.0900893, 0.09025995, 0.08999491, 0.09025995, 30.39541138], [1516502640000, 0.09025986, 0.09025986, 0.08999491, 0.08999491, 9.23540788], [1516502700000, 0.08999491, 0.09025795, 0.089726, 0.089746, 17.40848487], [1516502760000, 0.09010895, 0.09025884, 0.08970002, 0.09025786, 33.9892229], [1516502820000, 0.09025786, 0.09025794, 0.089705, 0.089876, 6.6056112], [1516502880000, 0.09024894, 0.09024894, 0.08970504, 0.0901436, 20.38417801], [1516502940000, 0.0901436, 0.09023987, 0.08970504, 0.08970507, 55.55219136], [1516503000000, 0.08970509, 0.090214, 0.08970507, 0.08970508, 17.31544378], [1516503060000, 0.0898, 0.09018984, 0.0895, 0.0897451, 101.40842979], [1516503120000, 0.0897451, 0.090069, 0.0897451, 0.089749, 4.54385322], [1516503180000, 0.09006894, 0.09006894, 0.089749, 0.0898, 16.00898108], [1516503240000, 0.0898, 0.09003895, 0.0898, 0.09003, 29.13605442], [1516503300000, 0.09002996, 0.09003, 0.0898001, 0.09002971, 5.42075993], [1516503360000, 0.08985, 0.09005, 0.08985, 0.09005, 11.4905288], [1516503420000, 0.08993985, 0.09024709, 0.0898001, 0.0898001, 9.92752955], [1516503480000, 0.09024709, 0.09024709, 0.0898001, 0.09009999, 11.8793921], [1516503540000, 0.08980002, 0.090099, 0.0898, 0.08980002, 36.90787212], [1516503600000, 0.08981, 0.09009, 0.08981, 0.09009, 0.98973335], [1516503660000, 0.09009, 0.09009, 0.09, 0.09, 43.6425189], [1516503720000, 0.09, 0.09008999, 0.09, 0.09000001, 111.22424271], [1516503780000, 0.09000001, 0.090089, 0.09, 0.09, 6.91305275], [1516503840000, 0.09008899, 0.09008999, 0.09, 0.09008639, 42.29590493], [1516503900000, 0.09007, 0.09008819, 0.09000001, 0.09000001, 2.74631494], [1516503960000, 0.09000001, 0.09008818, 0.09000001, 0.09000001, 37.69784366], [1516504020000, 0.09000001, 0.09008, 0.08980002, 0.08999993, 32.70055506], [1516504080000, 0.08999993, 0.08999993, 0.089505, 0.08999894, 44.71569989], [1516504140000, 0.08999894, 0.0905, 0.08999894, 0.0905, 73.9910952], [1516504200000, 0.09039999, 0.09039999, 0.08999894, 0.09009849, 93.08332201], [1516504260000, 0.09009999, 0.09035499, 0.08999894, 0.09031997, 22.13360437], [1516504320000, 0.08999894, 0.09030994, 0.08980001, 0.09030399, 8.04353341], [1516504380000, 0.09030399, 0.09030399, 0.0898, 0.0902969, 4.95539683], [1516504440000, 0.0902969, 0.0902969, 0.0898, 0.09028995, 1.78119084], [1516504500000, 0.09028992, 0.09028992, 0.0898, 0.0898, 16.96768816], [1516504560000, 0.0898, 0.09026999, 0.0898, 0.0901, 18.82589158], [1516504620000, 0.0900999, 0.09029805, 0.0898, 0.09029801, 32.36115918], [1516504680000, 0.09029801, 0.09029805, 0.08960401, 0.09027799, 33.87653099], [1516504740000, 0.0898, 0.090242, 0.08962192, 0.08962192, 7.93182028], [1516504800000, 0.08962192, 0.09008985, 0.089505, 0.089505, 29.39646425], [1516504860000, 0.08982, 0.0901, 0.0895, 0.09008999, 24.58021026], [1516504920000, 0.09, 0.09008998, 0.08951, 0.09008998, 24.64146497], [1516504980000, 0.0899, 0.09008998, 0.08989999, 0.09008998, 75.37215717], [1516505040000, 0.09008998, 0.0901, 0.08951, 0.09, 39.46521388], [1516505100000, 0.08957362, 0.090095, 0.08940003, 0.0895, 71.66481168], [1516505160000, 0.08940501, 0.0899999, 0.0894, 0.08998, 81.47097504], [1516505220000, 0.08946, 0.08997996, 0.08945032, 0.08951901, 43.93412516], [1516505280000, 0.08997895, 0.08997895, 0.08945034, 0.08952348, 38.73162434], [1516505340000, 0.08952348, 0.0899699, 0.08945034, 0.089785, 19.58327308], [1516505400000, 0.08946001, 0.08996693, 0.08945039, 0.08948002, 29.23749125], [1516505460000, 0.08946001, 0.08980569, 0.08942502, 0.08942503, 36.55042317], [1516505520000, 0.08979, 0.08996983, 0.08943501, 0.08960541, 49.79133488], [1516505580000, 0.08960541, 0.08996889, 0.08931977, 0.08944516, 35.92298867], [1516505640000, 0.08945001, 0.08986591, 0.08945001, 0.0896, 9.2290216], [1516505700000, 0.0896, 0.08996894, 0.08945112, 0.08955557, 38.81300909], [1516505760000, 0.08955557, 0.08991, 0.08945135, 0.0898, 26.06961399], [1516505820000, 0.08979996, 0.0898, 0.08960542, 0.08979, 32.15545672], [1516505880000, 0.08960542, 0.08978994, 0.08960542, 0.08978978, 7.7094466], [1516505940000, 0.08960542, 0.0897999, 0.08960542, 0.0897999, 10.68258316], [1516506000000, 0.0897999, 0.08979996, 0.08957557, 0.08979996, 45.58724492], [1516506060000, 0.08979994, 0.08996995, 0.08945141, 0.08979, 19.16278944], [1516506120000, 0.08978978, 0.08979, 0.08945136, 0.08945136, 28.04964196], [1516506180000, 0.08978999, 0.0899999, 0.08945135, 0.08945137, 22.50386908], [1516506240000, 0.08947137, 0.09004523, 0.08947137, 0.0897999, 4.5027524], [1516506300000, 0.08979992, 0.090069, 0.08979992, 0.090069, 4.82374158], [1516506360000, 0.090069, 0.090069, 0.08979992, 0.08979992, 2.9633732], [1516506420000, 0.09006873, 0.09006873, 0.08979992, 0.09006846, 9.88988943], [1516506480000, 0.09006846, 0.09006873, 0.09006846, 0.09006846, 61.61778494], [1516506540000, 0.09006846, 0.09006873, 0.09006846, 0.09006873, 38.23918591], [1516506600000, 0.09006871, 0.09006873, 0.09006846, 0.09006872, 8.82101441], [1516506660000, 0.09006846, 0.09006873, 0.09006846, 0.09006873, 7.10262227], [1516506720000, 0.09006873, 0.09017446, 0.09006872, 0.09006872, 29.02658868], [1516506780000, 0.09006872, 0.09020047, 0.09006872, 0.09006873, 4.47424597], [1516506840000, 0.09006873, 0.0902, 0.09006872, 0.09006879, 36.41308453], [1516506900000, 0.09019, 0.09045979, 0.09006872, 0.09006872, 73.28020012], [1516506960000, 0.09006872, 0.09017438, 0.08979992, 0.08979992, 29.30232774], [1516507020000, 0.09006846, 0.09006846, 0.08979992, 0.09006845, 73.67935709], [1516507080000, 0.09006845, 0.09006846, 0.08980001, 0.08980001, 37.50387474], [1516507140000, 0.08980001, 0.09006845, 0.08979993, 0.08979993, 14.9932941], [1516507200000, 0.08979993, 0.09006846, 0.08975, 0.08975, 20.96211434], [1516507260000, 0.08980001, 0.09006842, 0.08957366, 0.09006838, 61.01158728], [1516507320000, 0.0898217, 0.09006846, 0.0898217, 0.09006841, 51.20110718], [1516507380000, 0.09006841, 0.09006846, 0.0898217, 0.0898217, 57.69409533], [1516507440000, 0.0898217, 0.09009256, 0.0896, 0.09009256, 18.19593085], [1516507500000, 0.08962501, 0.09034652, 0.08962501, 0.089665, 2.31471102], [1516507560000, 0.09034652, 0.09034652, 0.08966006, 0.09029911, 10.86670573], [1516507620000, 0.09029753, 0.09045976, 0.08967501, 0.09038198, 64.08965396], [1516507680000, 0.09012763, 0.09037647, 0.08967501, 0.09029911, 32.384848], [1516507740000, 0.09029911, 0.09029911, 0.089708, 0.08970801, 3.09004835], [1516507800000, 0.09019999, 0.09019999, 0.08969804, 0.09019937, 19.64930945], [1516507860000, 0.09019936, 0.09019937, 0.08967501, 0.09019833, 50.87803532], [1516507920000, 0.09019833, 0.09034593, 0.08967501, 0.0903451, 18.6062542], [1516507980000, 0.09019833, 0.090479, 0.08967516, 0.09019832, 22.89737051], [1516508040000, 0.09019832, 0.09036119, 0.08969005, 0.08970021, 42.07651807], [1516508100000, 0.0897102, 0.09019832, 0.0896902, 0.08987, 64.89257253], [1516508160000, 0.09019832, 0.0902886, 0.08987, 0.08987, 20.79996237], [1516508220000, 0.08997, 0.0905, 0.08987, 0.09019832, 39.76644798], [1516508280000, 0.08987, 0.0905, 0.08987, 0.09049619, 3.54785771], [1516508340000, 0.09049618, 0.0905, 0.08992027, 0.09028, 11.64124819], [1516508400000, 0.09028, 0.09050001, 0.08992026, 0.0904999, 13.45099768], [1516508460000, 0.0904999, 0.09065, 0.0904999, 0.09065, 36.76121387], [1516508520000, 0.09065, 0.09073513, 0.0900004, 0.09012451, 21.96601177], [1516508580000, 0.09064316, 0.090665, 0.09009324, 0.09049097, 11.84080278], [1516508640000, 0.09014923, 0.0906545, 0.09009195, 0.09049097, 10.27981767], [1516508700000, 0.09049097, 0.09063275, 0.09005239, 0.09005239, 11.11090881], [1516508760000, 0.0901, 0.09065019, 0.0901, 0.0903932, 7.85553371], [1516508820000, 0.0903932, 0.09064741, 0.0903932, 0.0903932, 13.35604147], [1516508880000, 0.0903932, 0.0906474, 0.09012739, 0.09012739, 30.50029677], [1516508940000, 0.09012739, 0.09053685, 0.09012739, 0.09012739, 9.57678111], [1516509000000, 0.09051986, 0.09051986, 0.09012739, 0.09012739, 4.70207111], [1516509060000, 0.09012739, 0.0906317, 0.09012695, 0.09012695, 28.98343549], [1516509120000, 0.09012695, 0.09052737, 0.09012695, 0.09012695, 15.60462581], [1516509180000, 0.090127, 0.09052725, 0.09012695, 0.09012695, 51.87485734], [1516509240000, 0.09012695, 0.09049948, 0.09012695, 0.09012695, 62.7824582], [1516509300000, 0.090127, 0.09049995, 0.09012695, 0.09049966, 108.08130945], [1516509360000, 0.090127, 0.09049939, 0.09012695, 0.09012697, 112.13651007], [1516509420000, 0.09049949, 0.09049949, 0.090127, 0.090127, 21.74240142], [1516509480000, 0.09045, 0.09045, 0.090127, 0.09044963, 106.30845149], [1516509540000, 0.09012701, 0.09049995, 0.090127, 0.09045321, 60.78297319], [1516509600000, 0.090127, 0.090665, 0.090127, 0.09041675, 25.40731994], [1516509660000, 0.09012705, 0.09041675, 0.09012703, 0.09039998, 13.52525492], [1516509720000, 0.09039998, 0.0904, 0.09012707, 0.0903997, 7.41601241], [1516509780000, 0.09012708, 0.09038132, 0.09012707, 0.09035341, 21.51171511], [1516509840000, 0.09035342, 0.0904, 0.09013707, 0.0904, 9.24937428], [1516509900000, 0.09021549, 0.09039999, 0.09012706, 0.09039999, 25.73196848], [1516509960000, 0.09028219, 0.09038983, 0.09000101, 0.09038981, 48.27456587], [1516510020000, 0.09000101, 0.0903849, 0.09000101, 0.09032874, 3.51755997], [1516510080000, 0.09016505, 0.09032874, 0.09000102, 0.09000102, 3.64093948], [1516510140000, 0.09016505, 0.09016505, 0.090001, 0.090001, 39.3934486], [1516510200000, 0.09000102, 0.09000102, 0.08991, 0.08991, 40.82858041], [1516510260000, 0.08997, 0.09016505, 0.0898, 0.09016505, 105.39042767], [1516510320000, 0.09015, 0.09039499, 0.08991, 0.08991, 26.95591219], [1516510380000, 0.09037469, 0.090395, 0.08991, 0.09018, 23.27117842], [1516510440000, 0.09039499, 0.090395, 0.08991001, 0.09023139, 25.09262656], [1516510500000, 0.08997, 0.09039827, 0.08991, 0.08991, 13.18293169], [1516510560000, 0.08991, 0.09039999, 0.08991, 0.09039997, 6.59628488], [1516510620000, 0.09039997, 0.0905, 0.08971272, 0.09045315, 128.06681898], [1516510680000, 0.09045315, 0.09049995, 0.0903949, 0.09039998, 21.76477084], [1516510740000, 0.09039998, 0.09039998, 0.09, 0.09039998, 3.25916466], [1516510800000, 0.09, 0.09039998, 0.09, 0.09039899, 4.56444022], [1516510860000, 0.09039899, 0.09039899, 0.09, 0.09, 6.57718088], [1516510920000, 0.09039899, 0.0905, 0.09000001, 0.09000001, 11.74709229], [1516510980000, 0.0900001, 0.09045297, 0.09000002, 0.09045297, 8.72569558], [1516511040000, 0.09045296, 0.09075405, 0.09006089, 0.09066486, 35.72603234], [1516511100000, 0.09066485, 0.09066485, 0.09006356, 0.09008725, 10.43347836], [1516511160000, 0.09008725, 0.09064995, 0.08989551, 0.09008724, 98.90210202], [1516511220000, 0.09008724, 0.09051989, 0.08991002, 0.09008724, 48.64178098], [1516511280000, 0.09009, 0.09031899, 0.0898341, 0.0903, 12.71226222], [1516511340000, 0.0903, 0.0903, 0.08973, 0.08973001, 15.41756071], [1516511400000, 0.089835, 0.09024898, 0.08973, 0.09024898, 8.8426152], [1516511460000, 0.08983501, 0.09029999, 0.08983501, 0.0902, 6.39750124], [1516511520000, 0.0902, 0.09056679, 0.08983504, 0.08989482, 51.97162729], [1516511580000, 0.09028423, 0.09054783, 0.08983509, 0.09000076, 31.6995249], [1516511640000, 0.09000076, 0.09044047, 0.09000076, 0.0902, 5.42004377], [1516511700000, 0.0902, 0.09041997, 0.09000076, 0.09041989, 19.91052124], [1516511760000, 0.0904199, 0.09041997, 0.09000076, 0.09041983, 2.51889275], [1516511820000, 0.09041984, 0.09041984, 0.09000076, 0.09036636, 10.40424816], [1516511880000, 0.0901, 0.09036636, 0.0900008, 0.0900008, 5.81156105], [1516511940000, 0.09036635, 0.09036635, 0.0900008, 0.0900008, 5.51551928], [1516512000000, 0.0901, 0.09036635, 0.0900008, 0.09012, 11.09129957], [1516512060000, 0.09036635, 0.09053836, 0.09000082, 0.09036641, 34.52181023], [1516512120000, 0.0903664, 0.0903664, 0.09034832, 0.09034832, 1.25200431], [1516512180000, 0.09000082, 0.0903664, 0.0900008, 0.0903664, 33.24631661], [1516512240000, 0.0903664, 0.0903664, 0.0900008, 0.0903, 55.39493446], [1516512300000, 0.0900008, 0.0903, 0.0900008, 0.0903, 38.2487802], [1516512360000, 0.0903, 0.0903, 0.0900008, 0.0903, 60.64767427], [1516512420000, 0.0903, 0.0904, 0.0900008, 0.0904, 27.76140107], [1516512480000, 0.0904, 0.0904, 0.09000083, 0.09039999, 31.66825769], [1516512540000, 0.0904, 0.0905, 0.0900008, 0.09045, 175.27046984], [1516512600000, 0.0905, 0.0905, 0.09000082, 0.0901, 15.33635389], [1516512660000, 0.0900475, 0.0902733, 0.09000081, 0.09000081, 7.5324237], [1516512720000, 0.0902733, 0.09044994, 0.0902733, 0.09044994, 10.73897001], [1516512780000, 0.0901, 0.0905, 0.0900008, 0.09049993, 144.75222623], [1516512840000, 0.0900014, 0.09049994, 0.0900008, 0.09025187, 23.58993071], [1516512900000, 0.090091, 0.09049948, 0.0900008, 0.09025187, 39.35844283], [1516512960000, 0.09000084, 0.09049931, 0.09000084, 0.09025184, 4.15866706], [1516513020000, 0.09025184, 0.09049898, 0.0901, 0.09047735, 4.40255135], [1516513080000, 0.09047733, 0.09047733, 0.09000084, 0.09047, 10.61574634], [1516513140000, 0.09046989, 0.09046997, 0.09000085, 0.09000085, 43.97260338], [1516513200000, 0.09000085, 0.09037942, 0.09000085, 0.09000103, 7.95435398], [1516513260000, 0.09037932, 0.09046976, 0.09000103, 0.09046974, 4.66156745], [1516513320000, 0.09000106, 0.09046972, 0.09000106, 0.09045158, 5.88032033], [1516513380000, 0.09045158, 0.09046499, 0.09000084, 0.09009267, 72.13466198], [1516513440000, 0.09000104, 0.09044154, 0.08971, 0.09041999, 38.05946658], [1516513500000, 0.08977046, 0.09037234, 0.08971, 0.09036999, 9.08453963], [1516513560000, 0.09036998, 0.09036998, 0.08971104, 0.08972001, 0.442169], [1516513620000, 0.08972003, 0.09043198, 0.08972001, 0.0901, 26.07213366], [1516513680000, 0.090167, 0.09043186, 0.0901, 0.09041198, 26.22225168], [1516513740000, 0.0901, 0.09041196, 0.089727, 0.09036992, 10.30667228], [1516513800000, 0.09036991, 0.09042696, 0.08977046, 0.08977046, 6.02168768], [1516513860000, 0.08980868, 0.09042696, 0.08980594, 0.09037234, 27.89962552], [1516513920000, 0.0898061, 0.09023, 0.0898061, 0.09016572, 3.49676104], [1516513980000, 0.09016572, 0.09023, 0.0898062, 0.09013579, 10.55518647], [1516514040000, 0.09013578, 0.09022998, 0.0898062, 0.0898062, 20.93423192], [1516514100000, 0.0898062, 0.09022952, 0.08977046, 0.08977046, 63.8521388], [1516514160000, 0.08977046, 0.09022846, 0.08977046, 0.09003971, 5.37857532], [1516514220000, 0.09003971, 0.09009971, 0.09003971, 0.09003971, 17.68687261], [1516514280000, 0.09022823, 0.09022823, 0.09003971, 0.09003971, 27.52642032], [1516514340000, 0.09003971, 0.0902284, 0.0898, 0.0898, 31.69083406], [1516514400000, 0.08977046, 0.09003944, 0.0897703, 0.09, 3.2192055], [1516514460000, 0.09, 0.09, 0.08972028, 0.08984601, 9.73908763], [1516514520000, 0.08982001, 0.089999, 0.0897, 0.08999882, 12.47248951], [1516514580000, 0.08999882, 0.0902, 0.08969975, 0.09019576, 17.7877405], [1516514640000, 0.08970976, 0.09019998, 0.08970976, 0.09019998, 11.75389003], [1516514700000, 0.09019998, 0.09019998, 0.08972976, 0.0898695, 3.8837167], [1516514760000, 0.0898895, 0.09012699, 0.08967517, 0.08986949, 6.82754635], [1516514820000, 0.08986949, 0.09009109, 0.08967501, 0.08967501, 61.23604908], [1516514880000, 0.09002198, 0.09002199, 0.08967499, 0.09002199, 5.27129546], [1516514940000, 0.08967502, 0.09009058, 0.08967502, 0.09002199, 36.91851309], [1516515000000, 0.09002199, 0.09002199, 0.08967502, 0.09002188, 3.10823756], [1516515060000, 0.09002189, 0.09002189, 0.08957502, 0.09002188, 9.04041189], [1516515120000, 0.0896, 0.09, 0.0896, 0.0896, 1.96871212], [1516515180000, 0.089712, 0.09, 0.089601, 0.08999999, 7.85283148], [1516515240000, 0.08999999, 0.09, 0.089712, 0.09, 3.08432475], [1516515300000, 0.09, 0.09, 0.089712, 0.08999999, 3.73097459], [1516515360000, 0.09, 0.09, 0.08999999, 0.08999999, 5.58822482], [1516515420000, 0.089715, 0.08999999, 0.089712, 0.089712, 3.09438907], [1516515480000, 0.089712, 0.09000217, 0.0897, 0.09000217, 47.71971814], [1516515540000, 0.089999, 0.09012697, 0.0896, 0.09012697, 7.65551378], [1516515600000, 0.09012697, 0.09034999, 0.09, 0.090335, 8.12749651], [1516515660000, 0.09, 0.09040047, 0.08957366, 0.08971168, 41.26621026], [1516515720000, 0.08972168, 0.09005546, 0.08955001, 0.08999597, 50.64481235], [1516515780000, 0.08999597, 0.09005544, 0.08946138, 0.08992121, 62.7104643], [1516515840000, 0.08992121, 0.08992121, 0.08946138, 0.08992121, 39.69206439], [1516515900000, 0.08957162, 0.08991995, 0.08957162, 0.089572, 2.36823459], [1516515960000, 0.08991889, 0.08991889, 0.089572, 0.08991295, 12.5667074], [1516516020000, 0.089572, 0.08991295, 0.089572, 0.08991186, 3.38714789], [1516516080000, 0.08991185, 0.08991185, 0.08957162, 0.08990895, 2.76117125], [1516516140000, 0.08990863, 0.08991295, 0.08957205, 0.08991, 15.8754774], [1516516200000, 0.08991, 0.08991, 0.08957205, 0.08991, 2.16764037], [1516516260000, 0.0895945, 0.08991, 0.0895945, 0.08991, 1.94662627], [1516516320000, 0.08991, 0.08991387, 0.08957205, 0.08957205, 15.56611295], [1516516380000, 0.08959449, 0.08991385, 0.08957205, 0.0897, 16.44946026], [1516516440000, 0.0897, 0.089899, 0.0897, 0.0898, 4.35845873], [1516516500000, 0.0898, 0.089899, 0.0897348, 0.08989895, 13.12571945], [1516516560000, 0.08989896, 0.08989896, 0.0896, 0.0896, 23.85636605], [1516516620000, 0.08989893, 0.08989893, 0.0896, 0.08989888, 163.29990849], [1516516680000, 0.089899, 0.089899, 0.0896, 0.089899, 4.5739311], [1516516740000, 0.08989899, 0.089899, 0.08957205, 0.0896, 9.33364329], [1516516800000, 0.0896, 0.089899, 0.0896, 0.089899, 4.02286748], [1516516860000, 0.089899, 0.0898993, 0.089899, 0.0898993, 60.07273369], [1516516920000, 0.089899, 0.08990549, 0.089899, 0.089899, 25.54463882], [1516516980000, 0.08989898, 0.089899, 0.0896, 0.0896, 4.12241772], [1516517040000, 0.0896303, 0.08989927, 0.0896303, 0.08989927, 0.80010668], [1516517100000, 0.08989927, 0.08989927, 0.08989927, 0.08989927, 4.12217801], [1516517160000, 0.08989927, 0.08989927, 0.08989927, 0.08989927, 0.18808387], [1516517220000, 0.08989927, 0.09, 0.08989927, 0.08989927, 4.78557642], [1516517280000, 0.08989927, 0.09005544, 0.0896303, 0.09005544, 14.81377243], [1516517340000, 0.09, 0.090061, 0.0897, 0.090061, 3.88348029], [1516517400000, 0.090061, 0.090069, 0.0897, 0.0897, 12.58165832], [1516517460000, 0.090069, 0.09017446, 0.08972, 0.09008901, 10.76861731], [1516517520000, 0.09008901, 0.09040046, 0.08972, 0.09019, 20.25361666], [1516517580000, 0.0903, 0.0903, 0.08971001, 0.09019001, 14.09572632], [1516517640000, 0.0903, 0.0903, 0.09, 0.09, 1.78563154], [1516517700000, 0.09, 0.09029997, 0.08974002, 0.09, 11.6028128], [1516517760000, 0.09029999, 0.09029999, 0.08974002, 0.09000003, 11.54612659], [1516517820000, 0.09000003, 0.09026001, 0.09, 0.09, 9.64436571], [1516517880000, 0.08997619, 0.09026001, 0.08974006, 0.09024999, 12.84980175], [1516517940000, 0.08974006, 0.09022498, 0.08974006, 0.08974006, 2.24557486], [1516518000000, 0.09022487, 0.09022487, 0.08974006, 0.09015, 3.86583817], [1516518060000, 0.09, 0.09014999, 0.08974006, 0.09000002, 14.15251385], [1516518120000, 0.09000001, 0.09000001, 0.09, 0.09, 8.16021377], [1516518180000, 0.09, 0.09, 0.08988888, 0.08999999, 10.27787374], [1516518240000, 0.08988888, 0.08999999, 0.089745, 0.08988888, 32.8913331], [1516518300000, 0.08976, 0.08988888, 0.08976, 0.08988888, 7.40835766], [1516518360000, 0.08988887, 0.08988887, 0.08976471, 0.08988887, 34.60787755], [1516518420000, 0.08988874, 0.08988888, 0.08974009, 0.08988888, 20.22020929], [1516518480000, 0.08988888, 0.08988888, 0.0897401, 0.08988888, 3.50884711], [1516518540000, 0.08988888, 0.09014999, 0.0898, 0.08988888, 38.1630421], [1516518600000, 0.09014999, 0.09040047, 0.08988888, 0.09040004, 6.32112517], [1516518660000, 0.09040047, 0.09044157, 0.08988888, 0.09040047, 3.0009887], [1516518720000, 0.0901, 0.0904416, 0.08988889, 0.08988889, 11.74044264], [1516518780000, 0.08988889, 0.090432, 0.08988888, 0.09040034, 14.47552202], [1516518840000, 0.09039499, 0.09039499, 0.08988888, 0.0902, 7.34847826], [1516518900000, 0.08988888, 0.090388, 0.08980001, 0.09008898, 15.68161187], [1516518960000, 0.09008898, 0.09038798, 0.09008898, 0.090089, 3.57876279], [1516519020000, 0.09038772, 0.0904, 0.090089, 0.090089, 17.90678875], [1516519080000, 0.0904, 0.0904, 0.09008901, 0.09008901, 25.80843436], [1516519140000, 0.09008901, 0.0903879, 0.09008901, 0.09038778, 25.57057627], [1516519200000, 0.09038778, 0.090391, 0.09008901, 0.09038767, 24.75328516], [1516519260000, 0.09008902, 0.09038767, 0.09008902, 0.09038767, 10.29825369], [1516519320000, 0.09008902, 0.09008902, 0.09008902, 0.09008902, 3.1613566], [1516519380000, 0.09009, 0.09009, 0.090089, 0.090089, 60.96348381], [1516519440000, 0.090089, 0.09008902, 0.09008898, 0.09008902, 39.9008773], [1516519500000, 0.09008901, 0.09008902, 0.08988901, 0.09008901, 45.13108454], [1516519560000, 0.09008899, 0.09008902, 0.08988901, 0.09008902, 6.44588661], [1516519620000, 0.090089, 0.09008902, 0.090089, 0.090089, 53.18885582], [1516519680000, 0.090089, 0.09008902, 0.08988902, 0.09008902, 16.37881272], [1516519740000, 0.09008902, 0.09008902, 0.08988902, 0.09008902, 14.87275117], [1516519800000, 0.09008902, 0.09029995, 0.09008882, 0.09009, 23.28500956], [1516519860000, 0.09009, 0.0903877, 0.09009, 0.09036397, 123.71447611], [1516519920000, 0.09036396, 0.0903876, 0.09009, 0.09009, 52.97158518], [1516519980000, 0.09009, 0.09036393, 0.09009, 0.09036299, 7.07534697], [1516520040000, 0.090363, 0.090363, 0.09009, 0.0900902, 57.89270064], [1516520100000, 0.0900902, 0.09036298, 0.09008882, 0.09008882, 10.90306185], [1516520160000, 0.09008882, 0.09009, 0.08988802, 0.09009, 14.16547081], [1516520220000, 0.09030037, 0.09030037, 0.089889, 0.08992871, 15.49450214], [1516520280000, 0.09009, 0.09009, 0.0898, 0.09009, 9.51774435], [1516520340000, 0.09009, 0.09030037, 0.08980001, 0.09030037, 25.56532858], [1516520400000, 0.09030037, 0.09036299, 0.08980002, 0.09035499, 55.03012899], [1516520460000, 0.09000001, 0.09000001, 0.08977, 0.08977, 83.04262383], [1516520520000, 0.0898, 0.08989926, 0.08946137, 0.08989926, 76.10593817], [1516520580000, 0.08985449, 0.08989926, 0.08946138, 0.08989926, 43.2971232], [1516520640000, 0.08985449, 0.08989926, 0.08961839, 0.08961839, 25.60409401], [1516520700000, 0.0896184, 0.08985449, 0.089445, 0.08951002, 56.64650701], [1516520760000, 0.08951003, 0.09031565, 0.08951001, 0.08966, 71.87142364], [1516520820000, 0.08951004, 0.09021499, 0.08951004, 0.09017494, 19.15618548], [1516520880000, 0.08967, 0.09017494, 0.0896, 0.08967006, 21.35177889], [1516520940000, 0.08967006, 0.09016898, 0.08967006, 0.09014399, 12.49378434], [1516521000000, 0.09014399, 0.09018751, 0.08967206, 0.09018751, 12.72573922], [1516521060000, 0.09015897, 0.09015897, 0.0896721, 0.090154, 31.00164964], [1516521120000, 0.08970322, 0.09019998, 0.08967, 0.08982478, 66.90618931], [1516521180000, 0.09, 0.09019998, 0.08983743, 0.09019998, 17.12033744], [1516521240000, 0.09019998, 0.09030322, 0.09019998, 0.0903032, 14.16148125], [1516521300000, 0.0903032, 0.09030322, 0.08992839, 0.0899284, 8.98534569], [1516521360000, 0.0903, 0.09030322, 0.09, 0.09030322, 34.02342784], [1516521420000, 0.09030322, 0.09053833, 0.0903032, 0.0903876, 40.45502449], [1516521480000, 0.09046987, 0.09064326, 0.0903032, 0.0903032, 52.08181801], [1516521540000, 0.0903032, 0.090607, 0.09002868, 0.090407, 15.29191324], [1516521600000, 0.0903032, 0.09041656, 0.09005199, 0.09029868, 62.52480391], [1516521660000, 0.09005199, 0.0903032, 0.09000004, 0.09000004, 14.15300065], [1516521720000, 0.09000004, 0.09006918, 0.08982481, 0.09002863, 25.68989951], [1516521780000, 0.09002863, 0.09042599, 0.08982482, 0.09002863, 7.03008449], [1516521840000, 0.09002863, 0.09039333, 0.08979308, 0.08982485, 22.61930889], [1516521900000, 0.08989668, 0.09039289, 0.08979998, 0.09028257, 10.45391023], [1516521960000, 0.09, 0.09028257, 0.09, 0.09, 2.32118356], [1516522020000, 0.09, 0.09027965, 0.09, 0.09, 13.08551209], [1516522080000, 0.09027965, 0.09027965, 0.09, 0.09, 4.34426176], [1516522140000, 0.09, 0.09027844, 0.09, 0.09027816, 4.2165483], [1516522200000, 0.09027816, 0.09027816, 0.09, 0.09000049, 17.54070717], [1516522260000, 0.090278, 0.09027844, 0.09000049, 0.09027816, 4.83868601], [1516522320000, 0.09000054, 0.09027817, 0.09000049, 0.09027789, 14.91732227], [1516522380000, 0.09027789, 0.09027817, 0.09000049, 0.09027789, 4.94879946], [1516522440000, 0.09027789, 0.09027817, 0.09027789, 0.09027817, 38.70702186], [1516522500000, 0.09027816, 0.09027817, 0.09000049, 0.09027817, 14.32700315], [1516522560000, 0.09027817, 0.09027844, 0.09000049, 0.09000055, 23.73690857], [1516522620000, 0.09027844, 0.0903, 0.09000049, 0.09028257, 12.78597576], [1516522680000, 0.09028256, 0.09050998, 0.09000051, 0.09028268, 11.88121455], [1516522740000, 0.09037114, 0.09037114, 0.090279, 0.090279, 4.02055781], [1516522800000, 0.09038114, 0.09069497, 0.090279, 0.09047161, 13.69249564], [1516522860000, 0.09033485, 0.09033485, 0.090279, 0.09033485, 71.6535865], [1516522920000, 0.09033485, 0.09033485, 0.090279, 0.09033485, 19.60240758], [1516522980000, 0.09033485, 0.09033485, 0.090279, 0.09033485, 44.7483749], [1516523040000, 0.090279, 0.09033485, 0.0901413, 0.09033485, 7.89716559], [1516523100000, 0.09014136, 0.09033485, 0.09014132, 0.09033485, 17.83660506], [1516523160000, 0.09033485, 0.09033485, 0.09014134, 0.09014134, 7.28408426], [1516523220000, 0.09014134, 0.09033485, 0.09014134, 0.09033485, 8.51336561], [1516523280000, 0.09033485, 0.0904715, 0.09033, 0.0904715, 182.02093326], [1516523340000, 0.0904715, 0.0906, 0.0904715, 0.0904715, 9.35282876], [1516523400000, 0.0904715, 0.09047161, 0.0904715, 0.0904715, 1.84980273], [1516523460000, 0.09047161, 0.0906, 0.0904, 0.0904, 6.14296088], [1516523520000, 0.0904715, 0.0904715, 0.0904, 0.0904715, 9.94169842], [1516523580000, 0.0904, 0.0904715, 0.09014134, 0.0904715, 8.13586413], [1516523640000, 0.09047149, 0.0904715, 0.09000052, 0.09047147, 13.39207149], [1516523700000, 0.09016, 0.0904715, 0.09016, 0.0904715, 5.44442278], [1516523760000, 0.09047149, 0.0904715, 0.09047148, 0.0904715, 6.64437129], [1516523820000, 0.09047151, 0.0905889, 0.09047148, 0.0904715, 34.95905596], [1516523880000, 0.09047148, 0.09047149, 0.09003501, 0.09004004, 5.94504112], [1516523940000, 0.09005, 0.09047149, 0.09000584, 0.09047148, 8.45903673], [1516524000000, 0.09047148, 0.0904715, 0.0900059, 0.0900059, 13.45705958], [1516524060000, 0.09023869, 0.09047148, 0.0900059, 0.09047148, 0.16850422], [1516524120000, 0.0900059, 0.09043267, 0.0900059, 0.09043265, 0.44600162], [1516524180000, 0.09005001, 0.09043265, 0.09005001, 0.0904, 2.69612099], [1516524240000, 0.0904, 0.09043265, 0.0901, 0.0901, 4.88343544], [1516524300000, 0.09043263, 0.09043265, 0.09006, 0.0901, 11.82100698], [1516524360000, 0.09006001, 0.09006001, 0.09006, 0.09006001, 22.23186697], [1516524420000, 0.09006, 0.09026632, 0.09006, 0.09026632, 6.47547539], [1516524480000, 0.0901, 0.0904326, 0.0901, 0.0901, 3.24064838], [1516524540000, 0.0904326, 0.09043265, 0.0903, 0.0904, 3.70821339], [1516524600000, 0.0904, 0.09043265, 0.0904, 0.0904, 47.36170898], [1516524660000, 0.09040002, 0.09043264, 0.09040002, 0.09040002, 16.38844589], [1516524720000, 0.09040002, 0.09043264, 0.0904, 0.09043264, 9.12658053], [1516524780000, 0.0904001, 0.09043265, 0.0904, 0.0904001, 52.90489607], [1516524840000, 0.0904001, 0.09043265, 0.09040002, 0.09040011, 36.94415223], [1516524900000, 0.09040011, 0.09043265, 0.09040002, 0.09040002, 30.21595056], [1516524960000, 0.09040002, 0.09058887, 0.0904, 0.0904, 36.37874346], [1516525020000, 0.0904, 0.0904, 0.09005001, 0.09010712, 17.76963299], [1516525080000, 0.09005001, 0.09058887, 0.090006, 0.09058887, 85.90652973], [1516525140000, 0.09058887, 0.09058887, 0.09003845, 0.09047036, 10.36897827], [1516525200000, 0.09047036, 0.09047036, 0.09047036, 0.09047036, 0.53162793], [1516525260000, 0.09047036, 0.09047036, 0.09004288, 0.090043, 37.44755136], [1516525320000, 0.090043, 0.09064564, 0.09004288, 0.09019241, 14.84257677], [1516525380000, 0.09019241, 0.09064107, 0.09004288, 0.09004289, 25.10943892], [1516525440000, 0.09004289, 0.09004289, 0.09004287, 0.09004288, 12.79104724], [1516525500000, 0.09004288, 0.09004288, 0.09000584, 0.09004288, 28.9769068], [1516525560000, 0.09050399, 0.09050399, 0.09, 0.09, 40.65084639], [1516525620000, 0.089979, 0.09, 0.08985787, 0.08985787, 3.13327625], [1516525680000, 0.08985787, 0.09044227, 0.08985787, 0.08989878, 10.71743354], [1516525740000, 0.0898992, 0.09048396, 0.08985787, 0.08985788, 6.70816667], [1516525800000, 0.09047627, 0.09047627, 0.08985789, 0.0898993, 8.06278231], [1516525860000, 0.08989929, 0.09040929, 0.08989929, 0.09040929, 18.91160495], [1516525920000, 0.09040924, 0.09040924, 0.08992855, 0.08998, 6.59191062], [1516525980000, 0.08998, 0.09039114, 0.08998, 0.09039114, 5.07054959], [1516526040000, 0.09039111, 0.09039114, 0.08998, 0.09039111, 9.75627023], [1516526100000, 0.09039111, 0.09039111, 0.08998523, 0.08998523, 4.49941336], [1516526160000, 0.08998523, 0.09039, 0.08998523, 0.0903855, 0.56671795], [1516526220000, 0.0903855, 0.09048396, 0.0901, 0.09048396, 26.691239], [1516526280000, 0.09010001, 0.0905, 0.0901, 0.09010001, 36.23944555], [1516526340000, 0.09044776, 0.09055465, 0.09010002, 0.09049999, 2.31249835], [1516526400000, 0.09049222, 0.09049999, 0.09010002, 0.09010004, 7.4620422], [1516526460000, 0.09049047, 0.09049047, 0.09010005, 0.09049044, 1.99449282], [1516526520000, 0.09049044, 0.09049045, 0.09010005, 0.09010005, 2.00843962], [1516526580000, 0.09049044, 0.09049044, 0.09010004, 0.09010004, 176.45530868], [1516526640000, 0.09047499, 0.09048041, 0.09, 0.09, 12.61283379], [1516526700000, 0.09, 0.09046927, 0.08999, 0.08999, 3.44544924], [1516526760000, 0.08999, 0.09036068, 0.08998523, 0.08999, 38.03889462], [1516526820000, 0.09035047, 0.09035047, 0.08999, 0.09, 10.38851464], [1516526880000, 0.08999, 0.09035045, 0.08998, 0.09035045, 30.34277436], [1516526940000, 0.09035045, 0.09035047, 0.09035045, 0.09035045, 21.50985495], [1516527000000, 0.09035047, 0.09035047, 0.08998, 0.09035, 21.965766], [1516527060000, 0.09035, 0.09035047, 0.08998, 0.08998, 24.18794612], [1516527120000, 0.09033333, 0.09043401, 0.0898993, 0.08998, 11.88150084], [1516527180000, 0.08998001, 0.09033331, 0.08998001, 0.09033, 26.85942036], [1516527240000, 0.09033, 0.09033, 0.09032999, 0.09032999, 6.46302846], [1516527300000, 0.09032999, 0.09039997, 0.0903, 0.0903777, 9.29682161], [1516527360000, 0.0903777, 0.09041998, 0.09032999, 0.0903888, 7.58203002], [1516527420000, 0.0903777, 0.09041998, 0.09032999, 0.09032999, 28.69434187], [1516527480000, 0.09040388, 0.09041925, 0.09032999, 0.09041925, 21.34067247], [1516527540000, 0.09032999, 0.09041924, 0.0900002, 0.0900002, 10.92900438], [1516527600000, 0.0900002, 0.09041924, 0.0900002, 0.0900002, 9.92813352], [1516527660000, 0.09041916, 0.09041916, 0.09000001, 0.09000001, 16.36657814], [1516527720000, 0.09019921, 0.09041924, 0.09, 0.09041924, 24.43715027], [1516527780000, 0.09000002, 0.090414, 0.09, 0.09000001, 39.28043992], [1516527840000, 0.09000001, 0.09041924, 0.09000001, 0.09041924, 15.49542073], [1516527900000, 0.09041923, 0.09041924, 0.09000001, 0.09041921, 10.52519542], [1516527960000, 0.09000001, 0.09041796, 0.09000001, 0.09000002, 2.18018747], [1516528020000, 0.09041903, 0.09041903, 0.09010024, 0.09010024, 2.36961237], [1516528080000, 0.09041899, 0.090419, 0.09010024, 0.09035, 2.16831812], [1516528140000, 0.09032857, 0.09041898, 0.09010024, 0.09010024, 4.17162439], [1516528200000, 0.09032856, 0.09032856, 0.09000002, 0.09014024, 52.15259838], [1516528260000, 0.09014024, 0.0903285, 0.09000002, 0.09000002, 16.76761232], [1516528320000, 0.09000002, 0.09014024, 0.09000002, 0.09014024, 10.27329012], [1516528380000, 0.09014024, 0.09050002, 0.09000002, 0.09032849, 133.06332], [1516528440000, 0.09000002, 0.09032849, 0.09000002, 0.09032849, 7.91394067], [1516528500000, 0.09016645, 0.09050001, 0.09000002, 0.09001389, 9.73471356], [1516528560000, 0.09049097, 0.09049097, 0.09000002, 0.09049097, 2.84546295], [1516528620000, 0.09049096, 0.09049096, 0.09000003, 0.090014, 10.50211741], [1516528680000, 0.09048999, 0.09048999, 0.09000003, 0.09000003, 4.32803456], [1516528740000, 0.09047994, 0.09048799, 0.09000003, 0.09048799, 2.31730734], [1516528800000, 0.0900001, 0.09048798, 0.09000003, 0.09048059, 5.72405066], [1516528860000, 0.09048049, 0.09048797, 0.09000003, 0.09000003, 7.33427315], [1516528920000, 0.09046, 0.09046, 0.09000003, 0.09043991, 2.14089606], [1516528980000, 0.09037631, 0.09043538, 0.09000004, 0.09031999, 11.75346562], [1516529040000, 0.09037, 0.090376, 0.09000004, 0.09020999, 2.42736753], [1516529100000, 0.0901, 0.09037629, 0.0901, 0.09030899, 4.64335314], [1516529160000, 0.09030899, 0.0903763, 0.09000004, 0.09000004, 22.67161255], [1516529220000, 0.09000004, 0.09000004, 0.09000003, 0.09000003, 16.6113648], [1516529280000, 0.09000004, 0.09000004, 0.09000003, 0.09000003, 6.26926732], [1516529340000, 0.09000003, 0.09000004, 0.09000003, 0.09000004, 3.51115085], [1516529400000, 0.09000004, 0.09034997, 0.09000003, 0.09034, 49.7898327], [1516529460000, 0.09000003, 0.09000003, 0.089936, 0.089936, 61.64809548], [1516529520000, 0.089936, 0.09020993, 0.08978882, 0.08978882, 31.95686933], [1516529580000, 0.08981, 0.0901111, 0.08975849, 0.0901111, 6.50563843], [1516529640000, 0.0901111, 0.0901111, 0.08975849, 0.08995154, 11.00208911], [1516529700000, 0.08995154, 0.09010599, 0.08975849, 0.08975849, 4.01960379], [1516529760000, 0.09010599, 0.09010599, 0.08975849, 0.09010099, 1.85097336], [1516529820000, 0.09010099, 0.09010099, 0.08967834, 0.090047, 16.05295938], [1516529880000, 0.090047, 0.09010599, 0.08969983, 0.08969983, 18.52494532], [1516529940000, 0.09004699, 0.09007099, 0.08969983, 0.09, 4.96797325], [1516530000000, 0.08971483, 0.09007099, 0.08969983, 0.08972047, 4.52422765], [1516530060000, 0.08972047, 0.09, 0.08969983, 0.08973169, 19.26608221], [1516530120000, 0.08999999, 0.09, 0.08969983, 0.0898214, 11.04206877], [1516530180000, 0.0898214, 0.09010599, 0.08975698, 0.08975702, 39.46300208], [1516530240000, 0.090066, 0.090066, 0.08969983, 0.0899087, 2.1116934], [1516530300000, 0.0899087, 0.0899087, 0.08980919, 0.0899087, 0.74347494], [1516530360000, 0.0899087, 0.09011111, 0.0899087, 0.08990871, 3.73112729], [1516530420000, 0.09011111, 0.09029498, 0.08990871, 0.090047, 19.60514642], [1516530480000, 0.090047, 0.09029497, 0.08990871, 0.090047, 18.09908574], [1516530540000, 0.090047, 0.090047, 0.08990869, 0.09, 8.14820391], [1516530600000, 0.090047, 0.09029498, 0.09, 0.09029498, 6.80887008], [1516530660000, 0.09, 0.09029387, 0.0898092, 0.09029294, 10.56963851], [1516530720000, 0.09029294, 0.09029498, 0.08988401, 0.09029498, 2.04472662], [1516530780000, 0.09029498, 0.0903763, 0.0899739, 0.0903763, 4.14656265], [1516530840000, 0.0903763, 0.09048799, 0.0899739, 0.09048, 10.9182761], [1516530900000, 0.09047999, 0.090488, 0.09047999, 0.090488, 6.86287905], [1516530960000, 0.090488, 0.0905, 0.09048799, 0.0905, 10.40557196], [1516531020000, 0.09048799, 0.09075405, 0.09048799, 0.09048799, 72.46039129], [1516531080000, 0.09048799, 0.09073426, 0.09021653, 0.09021653, 9.29401382], [1516531140000, 0.0906763, 0.09070766, 0.08999902, 0.09069929, 10.26152627], [1516531200000, 0.09069929, 0.0908, 0.09021653, 0.0908, 9.76829545], [1516531260000, 0.09069928, 0.09079999, 0.09021653, 0.09071685, 12.03109738], [1516531320000, 0.090696, 0.09081899, 0.09021654, 0.090706, 19.91399037], [1516531380000, 0.09078186, 0.09084999, 0.090706, 0.090706, 30.01290276], [1516531440000, 0.090706, 0.090845, 0.09043387, 0.09043387, 26.52565948], [1516531500000, 0.09043387, 0.09084, 0.09022701, 0.09055251, 16.20918805], [1516531560000, 0.09055251, 0.090777, 0.09024464, 0.090777, 9.29630817], [1516531620000, 0.090777, 0.090777, 0.09031888, 0.09077, 16.78379069], [1516531680000, 0.09031888, 0.09077, 0.09031888, 0.09076999, 3.42730629], [1516531740000, 0.09077, 0.09084998, 0.09033, 0.09033001, 7.69762215], [1516531800000, 0.09045951, 0.09084499, 0.09033001, 0.09084499, 3.8225696], [1516531860000, 0.09084499, 0.09084998, 0.09045951, 0.09084498, 6.37755084], [1516531920000, 0.09083498, 0.09084998, 0.09045953, 0.09084499, 34.50472085], [1516531980000, 0.09084499, 0.09084998, 0.09033, 0.09084498, 9.12495709], [1516532040000, 0.09084496, 0.09084498, 0.09033, 0.09033005, 13.84972298], [1516532100000, 0.0908, 0.0908, 0.09033, 0.09079952, 4.35855148], [1516532160000, 0.09079952, 0.09079999, 0.09048196, 0.09048196, 0.87638602], [1516532220000, 0.090789, 0.09079999, 0.09033108, 0.090341, 8.44350155], [1516532280000, 0.090341, 0.09034812, 0.090341, 0.09034812, 1.23142815], [1516532340000, 0.09079902, 0.09079903, 0.090799, 0.09079902, 10.110793], [1516532400000, 0.09079902, 0.09079902, 0.09034812, 0.090799, 4.49244045], [1516532460000, 0.09034812, 0.09079843, 0.090342, 0.09079843, 17.62812285], [1516532520000, 0.09034812, 0.0908, 0.090342, 0.0908, 13.80830623], [1516532580000, 0.0908, 0.0908, 0.0905, 0.0905, 3.79212101], [1516532640000, 0.0905, 0.0908449, 0.0905, 0.09084489, 6.67741668], [1516532700000, 0.09084486, 0.09084486, 0.0905, 0.0905, 8.12841811], [1516532760000, 0.0908349, 0.0908449, 0.0905, 0.0908449, 3.56828892], [1516532820000, 0.0908449, 0.0908449, 0.0905, 0.0905, 5.37737742], [1516532880000, 0.09075, 0.09075, 0.0905, 0.09075, 11.3647708], [1516532940000, 0.09075, 0.09075, 0.0905, 0.0905, 11.26557518], [1516533000000, 0.09075, 0.09075, 0.0905905, 0.09059051, 9.26495755], [1516533060000, 0.09059051, 0.0907, 0.09059051, 0.09059052, 9.10599782], [1516533120000, 0.09059052, 0.0907, 0.09059051, 0.09064468, 7.5976199], [1516533180000, 0.0907, 0.0907, 0.09059051, 0.0907, 6.89710684], [1516533240000, 0.09075, 0.09075, 0.09070007, 0.09074999, 1.98609682], [1516533300000, 0.09074999, 0.09075, 0.0907, 0.09075, 14.6742291], [1516533360000, 0.09075, 0.09075, 0.09059054, 0.09074997, 4.57040326], [1516533420000, 0.0907, 0.09075, 0.0907, 0.0907, 51.0473622], [1516533480000, 0.0906, 0.09075, 0.0906, 0.09065001, 2.27111972], [1516533540000, 0.0907, 0.09075, 0.0906, 0.09075, 30.0669389], [1516533600000, 0.09075, 0.0909, 0.09075, 0.09075, 17.15343473], [1516533660000, 0.09085, 0.0909, 0.09084075, 0.09087, 7.11413495], [1516533720000, 0.09087, 0.0909, 0.09084075, 0.09087, 20.02507906], [1516533780000, 0.09087, 0.0909, 0.09087, 0.0909, 15.01957706], [1516533840000, 0.09087, 0.09089997, 0.09075, 0.09084536, 4.58585095], [1516533900000, 0.09084526, 0.09084526, 0.09084526, 0.09084526, 1.17284239], [1516533960000, 0.09084527, 0.09084527, 0.09075, 0.09084526, 11.77924126], [1516534020000, 0.09084537, 0.09089999, 0.09060542, 0.09089998, 13.33268264], [1516534080000, 0.09089998, 0.09089998, 0.09060661, 0.09062474, 7.75592818], [1516534140000, 0.09062474, 0.09089969, 0.09062474, 0.09089969, 3.48435147], [1516534200000, 0.09063474, 0.09089971, 0.0906224, 0.09089971, 14.36856187], [1516534260000, 0.0908997, 0.0909, 0.0908997, 0.09089971, 21.51037145], [1516534320000, 0.0908997, 0.09089999, 0.0908997, 0.0908997, 7.43760975], [1516534380000, 0.0908997, 0.09089999, 0.0906, 0.09089999, 6.21595365], [1516534440000, 0.09089999, 0.09089999, 0.0906, 0.09089998, 2.48894319], [1516534500000, 0.09089998, 0.0909, 0.09089998, 0.0909, 19.50536684], [1516534560000, 0.0909, 0.0909, 0.0906, 0.09074999, 14.12938851], [1516534620000, 0.0907, 0.09099899, 0.0907, 0.09072, 51.15163722], [1516534680000, 0.09089997, 0.09099898, 0.09072, 0.09099898, 8.32795097], [1516534740000, 0.09099898, 0.091, 0.09084999, 0.09099899, 20.44001905], [1516534800000, 0.09099899, 0.091, 0.09099899, 0.091, 70.24082283], [1516534860000, 0.09099899, 0.091, 0.0907, 0.0907, 100.75258029], [1516534920000, 0.09099997, 0.091, 0.0907, 0.09072, 6.1159385], [1516534980000, 0.09097, 0.09097, 0.09072, 0.09097, 11.91601012], [1516535040000, 0.09097, 0.09097, 0.09072001, 0.09097, 23.55708774], [1516535100000, 0.09097, 0.09097, 0.09072, 0.09072, 1.26866908], [1516535160000, 0.09097, 0.09097, 0.0906, 0.0906, 17.7006089], [1516535220000, 0.09097, 0.09122639, 0.0906, 0.09115142, 45.28749893], [1516535280000, 0.09108, 0.09115142, 0.09088, 0.09088001, 7.25675605], [1516535340000, 0.09088001, 0.09119998, 0.09088001, 0.091, 2.09255864], [1516535400000, 0.091, 0.09100001, 0.091, 0.09100001, 2.75356608], [1516535460000, 0.09100001, 0.09100001, 0.090909, 0.09100001, 4.02262311], [1516535520000, 0.091, 0.09123456, 0.09061803, 0.09123456, 31.43386017], [1516535580000, 0.09123721, 0.0913, 0.09061807, 0.09127118, 51.24883519], [1516535640000, 0.09127709, 0.0912999, 0.09061806, 0.0912999, 2.81780209], [1516535700000, 0.0912999, 0.0912999, 0.09062812, 0.0912999, 1.86309712], [1516535760000, 0.09129989, 0.0913, 0.0908, 0.09096334, 16.9045063], [1516535820000, 0.09096334, 0.0913, 0.0908, 0.0908, 11.22542553], [1516535880000, 0.09125728, 0.09132619, 0.09125728, 0.09132619, 2.60254807], [1516535940000, 0.09125728, 0.09132619, 0.0908, 0.09132619, 5.39173532], [1516536000000, 0.09131005, 0.09136383, 0.09080003, 0.09099224, 13.94939455], [1516536060000, 0.09099224, 0.091344, 0.09080002, 0.091, 35.33645529], [1516536120000, 0.09100002, 0.09132397, 0.091, 0.091, 13.10625646], [1516536180000, 0.09100004, 0.09100004, 0.09080006, 0.09100004, 46.18087663], [1516536240000, 0.09080006, 0.09133899, 0.09080006, 0.09100004, 4.9270792], [1516536300000, 0.09100004, 0.09133899, 0.09100004, 0.09133899, 5.00040928], [1516536360000, 0.091091, 0.091091, 0.09100004, 0.091091, 11.68982367], [1516536420000, 0.091091, 0.09123899, 0.091091, 0.09123899, 20.08372125], [1516536480000, 0.09123899, 0.09123899, 0.091091, 0.09123899, 16.98695924], [1516536540000, 0.09123899, 0.09123899, 0.091091, 0.09123899, 4.35492463], [1516536600000, 0.09123899, 0.09133899, 0.091091, 0.09133899, 16.10730735], [1516536660000, 0.09133899, 0.09134397, 0.09080001, 0.091091, 17.38603846], [1516536720000, 0.091091, 0.09131099, 0.09080001, 0.09080001, 4.65178429], [1516536780000, 0.09089086, 0.09109, 0.09044903, 0.0907831, 100.27652135], [1516536840000, 0.09055077, 0.09119999, 0.09035424, 0.0907831, 15.86418901], [1516536900000, 0.0907831, 0.09129266, 0.0907831, 0.09101005, 15.04289332], [1516536960000, 0.09128299, 0.09129256, 0.091, 0.09101005, 35.65493115], [1516537020000, 0.09101005, 0.09116495, 0.09021653, 0.09036424, 51.98304493], [1516537080000, 0.09031001, 0.091, 0.09031, 0.09031002, 19.68873666], [1516537140000, 0.09031003, 0.09067, 0.09031003, 0.09066999, 8.82228008], [1516537200000, 0.09067, 0.09096999, 0.09067, 0.0909545, 5.30791539], [1516537260000, 0.09076, 0.0909545, 0.09042037, 0.09042037, 7.11463953], [1516537320000, 0.0909545, 0.09108498, 0.09074996, 0.09076, 5.88102814], [1516537380000, 0.09076, 0.09114999, 0.09076, 0.09114999, 6.26601817], [1516537440000, 0.09114999, 0.09114999, 0.09085074, 0.09101396, 16.13926305], [1516537500000, 0.0908508, 0.09101396, 0.09075999, 0.09101396, 19.10377323], [1516537560000, 0.09085089, 0.09108, 0.09069944, 0.09101396, 19.05820563], [1516537620000, 0.09107999, 0.09107999, 0.09101396, 0.09107999, 22.09656782], [1516537680000, 0.09107999, 0.09108, 0.09101396, 0.09101396, 15.25235295], [1516537740000, 0.09101396, 0.09108, 0.09083356, 0.09083356, 5.61881261], [1516537800000, 0.09108, 0.09108239, 0.09076004, 0.09108, 10.42335896], [1516537860000, 0.09108239, 0.09108497, 0.091, 0.091, 5.15238011], [1516537920000, 0.091, 0.09108497, 0.091, 0.09107503, 20.26241963], [1516537980000, 0.091, 0.09107503, 0.09070944, 0.09076025, 13.17964676], [1516538040000, 0.09076025, 0.09108, 0.09076025, 0.09108, 3.7367142], [1516538100000, 0.09076027, 0.09108, 0.09076025, 0.0910789, 12.23023937], [1516538160000, 0.09107895, 0.0912, 0.09076025, 0.0912, 19.03458741], [1516538220000, 0.091079, 0.09120709, 0.091079, 0.09112, 37.30221851], [1516538280000, 0.0912, 0.0913, 0.0912, 0.0912, 20.46227437], [1516538340000, 0.0912, 0.0913, 0.09118901, 0.09129998, 24.62405933], [1516538400000, 0.0912, 0.09129798, 0.091192, 0.0912, 9.81091469], [1516538460000, 0.0912, 0.09129999, 0.091192, 0.091192, 36.32881759], [1516538520000, 0.091192, 0.0912899, 0.09093587, 0.09093587, 18.09616328], [1516538580000, 0.09127994, 0.0912899, 0.09115, 0.09127994, 7.8727093], [1516538640000, 0.09127993, 0.09127993, 0.09055, 0.09110799, 20.60985149], [1516538700000, 0.091095, 0.091095, 0.09055002, 0.09102998, 6.51245439], [1516538760000, 0.09102998, 0.09103499, 0.09055002, 0.09103498, 7.35125443], [1516538820000, 0.09103498, 0.09103498, 0.09068173, 0.09103498, 13.66966006], [1516538880000, 0.09103497, 0.09103497, 0.09074744, 0.09076744, 4.95812604], [1516538940000, 0.09076744, 0.09102499, 0.0905, 0.09050004, 3.66132707], [1516539000000, 0.09090001, 0.09103498, 0.09054579, 0.09090002, 21.64017637], [1516539060000, 0.09090002, 0.09103498, 0.09090002, 0.09090002, 23.64339177], [1516539120000, 0.09103487, 0.09103497, 0.0905458, 0.09103487, 18.67802038], [1516539180000, 0.09103487, 0.09103498, 0.09103487, 0.09103498, 18.91049589], [1516539240000, 0.09103487, 0.09103498, 0.09103487, 0.09103488, 9.83733466], [1516539300000, 0.09103488, 0.09103498, 0.09054578, 0.09060104, 21.2585186], [1516539360000, 0.09082573, 0.0910335, 0.09082573, 0.0909675, 1.21579689], [1516539420000, 0.09063474, 0.0909675, 0.09063474, 0.0907107, 22.2528924], [1516539480000, 0.09096749, 0.0909675, 0.0906475, 0.0907107, 20.84742306], [1516539540000, 0.09085282, 0.0909, 0.0906475, 0.0909, 2.00545969], [1516539600000, 0.09089999, 0.0909675, 0.0905, 0.09067064, 18.61843987], [1516539660000, 0.09089989, 0.09089989, 0.0905, 0.09051, 10.23526383], [1516539720000, 0.09051501, 0.09089989, 0.09051501, 0.09089989, 3.32586757], [1516539780000, 0.09089981, 0.0909675, 0.09068111, 0.0909675, 16.51689784], [1516539840000, 0.0909675, 0.09102998, 0.09096728, 0.091, 11.51749264], [1516539900000, 0.09099999, 0.0913, 0.09070015, 0.09103499, 21.09479598], [1516539960000, 0.0913, 0.0913, 0.09070025, 0.09129998, 10.47199376], [1516540020000, 0.09129998, 0.0913, 0.09070026, 0.0907003, 7.18042195], [1516540080000, 0.09121456, 0.0913, 0.09070035, 0.0913, 1.71133455], [1516540140000, 0.09129999, 0.0913, 0.09129999, 0.09129999, 15.10871999], [1516540200000, 0.0913, 0.0913, 0.09129999, 0.0913, 2.76347156], [1516540260000, 0.09129999, 0.0913, 0.09129999, 0.0913, 4.48933205], [1516540320000, 0.09129999, 0.0913, 0.09129999, 0.09129999, 17.09467501], [1516540380000, 0.09129999, 0.0913, 0.091, 0.0913, 41.74340552], [1516540440000, 0.0913, 0.0913, 0.09070122, 0.09129999, 15.18877082], [1516540500000, 0.09070196, 0.0913, 0.09070196, 0.09128311, 5.26491718], [1516540560000, 0.09128311, 0.09132899, 0.09128311, 0.09132899, 2.40881688], [1516540620000, 0.09132899, 0.09132899, 0.09132, 0.09132899, 4.78353868], [1516540680000, 0.09132, 0.09132999, 0.09132, 0.09132899, 41.03201792], [1516540740000, 0.09132899, 0.09132999, 0.09080006, 0.09132, 12.85069342], [1516540800000, 0.09132, 0.09132998, 0.0912, 0.09120002, 1.87543767], [1516540860000, 0.09120002, 0.09132997, 0.09120002, 0.09132, 0.56563263], [1516540920000, 0.09132, 0.09132998, 0.09132, 0.09132, 9.97593467], [1516540980000, 0.09132997, 0.09132998, 0.09132, 0.09132998, 27.6676658], [1516541040000, 0.09132998, 0.09136395, 0.09132001, 0.09132001, 29.06878022], [1516541100000, 0.09132998, 0.09137441, 0.09132, 0.09137441, 23.64341914], [1516541160000, 0.09138, 0.09138, 0.09137441, 0.09137443, 5.92554213], [1516541220000, 0.09137817, 0.09138, 0.09137441, 0.09138, 16.37826811], [1516541280000, 0.09138, 0.09138, 0.09137441, 0.09137441, 22.55362483], [1516541340000, 0.09137443, 0.09137997, 0.09132001, 0.0913744, 9.61059218], [1516541400000, 0.09132, 0.0913744, 0.09120004, 0.09137439, 16.16477448], [1516541460000, 0.09137437, 0.09137437, 0.09120004, 0.09135437, 7.53027985], [1516541520000, 0.09137437, 0.09137998, 0.0912005, 0.09137998, 5.02432087], [1516541580000, 0.09137998, 0.09137998, 0.09120055, 0.0913, 0.25806813], [1516541640000, 0.0913, 0.0913, 0.09120056, 0.0913, 2.97033831], [1516541700000, 0.0913, 0.0914, 0.09120058, 0.0914, 40.07205411], [1516541760000, 0.0914, 0.09148988, 0.09136696, 0.09138, 18.37571991], [1516541820000, 0.0914898, 0.09149, 0.09138, 0.09149, 8.41544539], [1516541880000, 0.09149, 0.09159495, 0.09138, 0.09154245, 126.15639944], [1516541940000, 0.09138, 0.09166486, 0.09138, 0.09166486, 15.73449061], [1516542000000, 0.0914168, 0.0916684, 0.09140003, 0.0916684, 12.94122307], [1516542060000, 0.09150101, 0.09166, 0.09150101, 0.09161344, 7.1272294], [1516542120000, 0.09161344, 0.09166, 0.09152035, 0.09161344, 16.55625496], [1516542180000, 0.09161344, 0.0917, 0.09153003, 0.09153006, 25.8121694], [1516542240000, 0.09154999, 0.0917, 0.09138, 0.0917, 28.28325521], [1516542300000, 0.09138, 0.09175796, 0.09120056, 0.09159902, 137.54629436], [1516542360000, 0.09122073, 0.09179997, 0.09122073, 0.09122082, 23.50360887], [1516542420000, 0.09177794, 0.09177794, 0.09122078, 0.09122085, 15.64322356], [1516542480000, 0.09122086, 0.09177695, 0.09122085, 0.09122095, 11.05265546], [1516542540000, 0.09177595, 0.09177596, 0.0912209, 0.09171778, 8.13511896], [1516542600000, 0.09145, 0.09171778, 0.09123002, 0.09170996, 7.3885733], [1516542660000, 0.09170995, 0.09170995, 0.09123002, 0.09123009, 33.10384021], [1516542720000, 0.09170979, 0.09170979, 0.09123101, 0.09170973, 7.4492639], [1516542780000, 0.09170965, 0.09170965, 0.09123004, 0.0915, 34.72354723], [1516542840000, 0.09160796, 0.09170965, 0.09124001, 0.09168793, 9.72416102], [1516542900000, 0.09168793, 0.09168793, 0.09124008, 0.09124008, 12.34081591], [1516542960000, 0.09168775, 0.09168822, 0.0912401, 0.09168822, 19.69455037], [1516543020000, 0.09168775, 0.09169898, 0.09135001, 0.09169894, 11.21827216], [1516543080000, 0.09169891, 0.09169894, 0.09135002, 0.09169796, 103.60023824], [1516543140000, 0.09169894, 0.09169894, 0.09169796, 0.09169891, 10.4140577], [1516543200000, 0.09169796, 0.09169891, 0.09135472, 0.09169, 36.72006446], [1516543260000, 0.09169, 0.09169891, 0.09135475, 0.09169794, 3.36642866], [1516543320000, 0.09169794, 0.09171783, 0.09135497, 0.09169894, 72.91455185], [1516543380000, 0.09171783, 0.0918489, 0.09169894, 0.0918489, 67.73229954], [1516543440000, 0.0918489, 0.0919, 0.09138052, 0.0919, 41.93667687], [1516543500000, 0.09162622, 0.0919, 0.09161624, 0.09185, 14.39696388], [1516543560000, 0.09185, 0.09185, 0.0917, 0.09182999, 3.17360897], [1516543620000, 0.09182999, 0.09182999, 0.09143751, 0.09170013, 29.96949636], [1516543680000, 0.09170013, 0.09184, 0.09162828, 0.09184, 5.33624961], [1516543740000, 0.09184, 0.09184, 0.09162832, 0.09182996, 6.37646119], [1516543800000, 0.09182996, 0.09184, 0.09162845, 0.09182999, 23.7325906], [1516543860000, 0.09184, 0.09187677, 0.09182997, 0.09182997, 36.86009841], [1516543920000, 0.0919, 0.0919, 0.09182999, 0.09187777, 8.52506239], [1516543980000, 0.091831, 0.09187777, 0.09176614, 0.0918, 37.40363016], [1516544040000, 0.091831, 0.09197, 0.09162846, 0.09197, 62.56698825], [1516544100000, 0.09195, 0.09198202, 0.09162845, 0.0918978, 73.92027823], [1516544160000, 0.09194999, 0.09198202, 0.09194999, 0.09198202, 44.8365204], [1516544220000, 0.09198202, 0.09198202, 0.09194999, 0.09194999, 29.3789896], [1516544280000, 0.09194999, 0.09198202, 0.0914375, 0.09197311, 45.24817799], [1516544340000, 0.0916742, 0.09197311, 0.09167414, 0.0919694, 7.32371501], [1516544400000, 0.09172, 0.092, 0.09172, 0.092, 336.45069903], [1516544460000, 0.092, 0.09213, 0.092, 0.09213, 239.71793519], [1516544520000, 0.09213, 0.09250001, 0.09200001, 0.09200013, 417.15597162], [1516544580000, 0.09200013, 0.09250001, 0.09200003, 0.09200005, 10.96596496], [1516544640000, 0.09222249, 0.0924075, 0.09200001, 0.0922225, 17.22800519], [1516544700000, 0.0922225, 0.0923, 0.09200009, 0.09200009, 22.75218587], [1516544760000, 0.0923, 0.0923, 0.09200009, 0.09200009, 15.81027208], [1516544820000, 0.09200013, 0.0923, 0.0920001, 0.09229999, 5.35257923], [1516544880000, 0.09200457, 0.0927, 0.09200457, 0.0927, 69.48061833], [1516544940000, 0.0927, 0.09278001, 0.09230001, 0.09235, 145.40833577], [1516545000000, 0.09235, 0.092784, 0.09235, 0.09235001, 10.95347548], [1516545060000, 0.0924621, 0.0927839, 0.09235, 0.0927839, 18.17363856], [1516545120000, 0.09255345, 0.0928, 0.09238148, 0.0927839, 108.91643977], [1516545180000, 0.0927839, 0.09289998, 0.09249501, 0.09249501, 98.3414149], [1516545240000, 0.09249501, 0.0926, 0.09249501, 0.09259814, 35.90835337], [1516545300000, 0.09259814, 0.09259999, 0.09238148, 0.09259999, 7.35065535], [1516545360000, 0.092502, 0.0927, 0.0925, 0.0925024, 26.2107779], [1516545420000, 0.0925024, 0.0927, 0.0925, 0.0925, 28.77272369], [1516545480000, 0.0925024, 0.09269993, 0.0925, 0.09250301, 36.98244278], [1516545540000, 0.09250301, 0.09269991, 0.0925, 0.09250002, 39.84609565], [1516545600000, 0.09250002, 0.09288064, 0.0925, 0.09250002, 61.16644841], [1516545660000, 0.092503, 0.092503, 0.0924, 0.09245, 76.81462055], [1516545720000, 0.09245, 0.092495, 0.0923, 0.0923721, 98.33680903], [1516545780000, 0.0923721, 0.09239986, 0.0920001, 0.0923, 46.83142188], [1516545840000, 0.0923, 0.09239998, 0.09200009, 0.09200009, 75.35326696], [1516545900000, 0.09200009, 0.09200009, 0.09172, 0.09172, 61.583561], [1516545960000, 0.09172, 0.092, 0.09172, 0.0918, 113.44347005], [1516546020000, 0.0918, 0.09189999, 0.09154, 0.091575, 16.57857515], [1516546080000, 0.091575, 0.0918, 0.091575, 0.0917, 18.16992308], [1516546140000, 0.09179, 0.09179, 0.0917, 0.09178889, 3.10174745], [1516546200000, 0.09178889, 0.09178889, 0.09170001, 0.0917888, 4.79844647], [1516546260000, 0.09178888, 0.09178999, 0.0917888, 0.09178889, 29.44504622], [1516546320000, 0.09178999, 0.0918, 0.09178999, 0.091798, 41.12382664], [1516546380000, 0.091798, 0.092, 0.09178889, 0.092, 15.25665773], [1516546440000, 0.092, 0.09228999, 0.091798, 0.09228999, 10.67471745], [1516546500000, 0.09222599, 0.09239, 0.09179802, 0.09209, 28.36545205], [1516546560000, 0.09224139, 0.09224139, 0.09179803, 0.09200001, 12.02055363], [1516546620000, 0.0919, 0.0919, 0.09180301, 0.09180301, 15.64016968], [1516546680000, 0.0919, 0.0919, 0.09180301, 0.09180306, 15.54845061], [1516546740000, 0.09180306, 0.0919, 0.09180305, 0.09180306, 4.50231906], [1516546800000, 0.09180306, 0.09200001, 0.09180306, 0.09200001, 9.30389923], [1516546860000, 0.09200001, 0.09200001, 0.09180307, 0.09180307, 5.11992827], [1516546920000, 0.091804, 0.09196719, 0.091804, 0.09192882, 6.93569755], [1516546980000, 0.09192882, 0.09194303, 0.09180307, 0.0918031, 12.12499406], [1516547040000, 0.0919238, 0.0919238, 0.09180301, 0.09180302, 29.98360633], [1516547100000, 0.09180302, 0.0918992, 0.09180301, 0.09184891, 24.90369877], [1516547160000, 0.09184891, 0.09184891, 0.09184891, 0.09184891, 6.34039348], [1516547220000, 0.09182301, 0.09184891, 0.09182301, 0.09183, 14.56818321], [1516547280000, 0.09183, 0.09184891, 0.09180301, 0.09184891, 27.77367848], [1516547340000, 0.09183, 0.09184891, 0.091575, 0.0917, 32.63518296], [1516547400000, 0.0917, 0.0917, 0.09162219, 0.09163123, 0.88078859], [1516547460000, 0.09165835, 0.0917, 0.091575, 0.0917, 17.64602992], [1516547520000, 0.09165835, 0.09183, 0.09165835, 0.09183, 9.46737023], [1516547580000, 0.09183, 0.09183, 0.09172, 0.09172, 7.62059603], [1516547640000, 0.09172001, 0.0924999, 0.09172001, 0.0918, 91.32704051], [1516547700000, 0.09214554, 0.09214554, 0.0918, 0.09182, 2.2645011], [1516547760000, 0.0918299, 0.0918299, 0.09169999, 0.09169999, 50.47625241], [1516547820000, 0.09169999, 0.09169999, 0.0916, 0.09169582, 7.92974616], [1516547880000, 0.09169993, 0.09182993, 0.09169993, 0.09182993, 38.78392424], [1516547940000, 0.09171998, 0.09182993, 0.09169583, 0.0917233, 3.34504112], [1516548000000, 0.0917233, 0.09182993, 0.09169583, 0.09172331, 5.02478196], [1516548060000, 0.09182993, 0.09182993, 0.09172331, 0.09182991, 2.98746604], [1516548120000, 0.09182991, 0.09182993, 0.09181, 0.091821, 13.06850106], [1516548180000, 0.09182993, 0.09182993, 0.09181, 0.09182993, 4.39807428], [1516548240000, 0.09182993, 0.09182993, 0.0916, 0.09182993, 32.47064052], [1516548300000, 0.09182992, 0.09182993, 0.09182992, 0.09182993, 1.88989765], [1516548360000, 0.09182992, 0.09182993, 0.0916, 0.09182992, 16.47740051], [1516548420000, 0.09182992, 0.09182992, 0.09157502, 0.09182992, 9.08523881], [1516548480000, 0.09182992, 0.09182992, 0.09182991, 0.09182992, 7.21435782], [1516548540000, 0.09182992, 0.09182992, 0.09182991, 0.09182992, 1.99335291], [1516548600000, 0.09182991, 0.09182993, 0.09161401, 0.09161401, 157.84219369], [1516548660000, 0.09182991, 0.092198, 0.09162904, 0.09182993, 25.40527116], [1516548720000, 0.0921, 0.0921, 0.09163755, 0.09163755, 7.49777956], [1516548780000, 0.0921, 0.0921, 0.09209632, 0.09209632, 2.29241886], [1516548840000, 0.09209632, 0.09209632, 0.09163759, 0.09165589, 61.98145115], [1516548900000, 0.09209448, 0.09209448, 0.09165588, 0.09209008, 6.09631917], [1516548960000, 0.09208824, 0.09208824, 0.09208824, 0.09208824, 0.94681791], [1516549020000, 0.0920864, 0.0920864, 0.09129951, 0.09164, 105.05164367], [1516549080000, 0.09204342, 0.09208, 0.09164, 0.09164, 1.31522196], [1516549140000, 0.09164, 0.09192955, 0.09129955, 0.09133421, 2.47436298], [1516549200000, 0.09133421, 0.09184784, 0.09133421, 0.09164, 18.25121473], [1516549260000, 0.09164, 0.09166122, 0.091352, 0.09135204, 15.56843988], [1516549320000, 0.0914, 0.0917, 0.09135215, 0.0916, 66.19292374], [1516549380000, 0.0917, 0.092, 0.0914004, 0.092, 44.55734205], [1516549440000, 0.092, 0.09200081, 0.091221, 0.09188997, 148.75075596], [1516549500000, 0.09188997, 0.09188999, 0.09138, 0.09187895, 50.06732082], [1516549560000, 0.09150073, 0.09187895, 0.0915, 0.091871, 2.90076972], [1516549620000, 0.09187099, 0.09187099, 0.09150001, 0.09150001, 6.48345498], [1516549680000, 0.09184599, 0.09184599, 0.0913, 0.0913, 12.21399239], [1516549740000, 0.091357, 0.09175074, 0.09126101, 0.09163729, 12.27014036], [1516549800000, 0.09172044, 0.09174053, 0.09126501, 0.0915, 2.4699979], [1516549860000, 0.0915, 0.09167631, 0.09142023, 0.0915, 8.91241664], [1516549920000, 0.09167631, 0.09167631, 0.09126502, 0.09139737, 26.86068206], [1516549980000, 0.09159374, 0.09159374, 0.091251, 0.09126502, 13.02793979], [1516550040000, 0.09126503, 0.091266, 0.09126502, 0.09126502, 13.24739635], [1516550100000, 0.09126503, 0.091266, 0.09126502, 0.091266, 9.22850179], [1516550160000, 0.091266, 0.09139373, 0.091266, 0.091266, 64.18716547], [1516550220000, 0.091266, 0.091266, 0.091241, 0.09126502, 33.24422691], [1516550280000, 0.09126502, 0.09139373, 0.09126502, 0.091266, 93.44246999], [1516550340000, 0.09139372, 0.09139373, 0.09126502, 0.091266, 11.32919268], [1516550400000, 0.091266, 0.09139373, 0.091241, 0.091241, 34.56681165], [1516550460000, 0.09126601, 0.091893, 0.09121071, 0.09121071, 27.51125688], [1516550520000, 0.09123831, 0.0915, 0.09108, 0.09108, 12.22182772], [1516550580000, 0.0912, 0.09143352, 0.09100002, 0.09100002, 19.82543349], [1516550640000, 0.09100003, 0.09135555, 0.091, 0.091, 27.92596643], [1516550700000, 0.091, 0.0912383, 0.0908, 0.09119998, 19.25267788], [1516550760000, 0.091, 0.091, 0.09079697, 0.09079899, 4.9728783], [1516550820000, 0.0908, 0.091, 0.09070001, 0.09070001, 12.07670629], [1516550880000, 0.09070001, 0.09076924, 0.0907, 0.09070001, 122.51421106], [1516550940000, 0.0907, 0.09071594, 0.0907, 0.09070001, 7.73156506], [1516551000000, 0.09070001, 0.09071594, 0.09070001, 0.09071594, 40.29306301], [1516551060000, 0.09070001, 0.09071594, 0.0907, 0.09071593, 22.17168234], [1516551120000, 0.09071, 0.09077, 0.0906, 0.0906, 119.70150183], [1516551180000, 0.0906, 0.09071594, 0.09056486, 0.09071594, 22.59956297], [1516551240000, 0.09071594, 0.09071594, 0.0906, 0.09071593, 3.19153314], [1516551300000, 0.09071593, 0.09071594, 0.09056486, 0.0906, 7.64441934], [1516551360000, 0.09071594, 0.09077, 0.0906, 0.09077, 111.32668457], [1516551420000, 0.09077, 0.09077, 0.0906, 0.0906, 19.12114987], [1516551480000, 0.0906, 0.091, 0.0906, 0.091, 31.44126824], [1516551540000, 0.091, 0.09106261, 0.09061002, 0.09100003, 31.08212307], [1516551600000, 0.09106261, 0.09106261, 0.09082999, 0.09083999, 2.54892093], [1516551660000, 0.09100003, 0.09105143, 0.09082999, 0.09105143, 37.34084435], [1516551720000, 0.09105142, 0.09106251, 0.09061, 0.09105141, 3.04867271], [1516551780000, 0.09105141, 0.09106263, 0.09065, 0.09106263, 7.71350199], [1516551840000, 0.09106263, 0.09106263, 0.0906501, 0.09079697, 8.59534276], [1516551900000, 0.09105131, 0.09115829, 0.0906501, 0.0906501, 9.50895083], [1516551960000, 0.0906501, 0.09103131, 0.0906501, 0.09102415, 22.08119252], [1516552020000, 0.091, 0.09103129, 0.0907, 0.091, 33.41737], [1516552080000, 0.0907, 0.09103129, 0.0907, 0.0907, 12.83462693], [1516552140000, 0.0907, 0.09103131, 0.0907, 0.0907, 3.58324477], [1516552200000, 0.09070012, 0.09103131, 0.0907, 0.09103131, 9.13512943], [1516552260000, 0.09103131, 0.09106263, 0.09072888, 0.0909, 4.79454758], [1516552320000, 0.09123831, 0.09143353, 0.09105131, 0.09132954, 11.58911087], [1516552380000, 0.09132953, 0.09132954, 0.09079698, 0.09132954, 16.80907082], [1516552440000, 0.09131963, 0.09132953, 0.09087823, 0.09132953, 8.3899887], [1516552500000, 0.09123831, 0.09132052, 0.0908964, 0.09132, 4.57181603], [1516552560000, 0.09132, 0.09132052, 0.09108509, 0.09108509, 18.68993103], [1516552620000, 0.09132, 0.0913205, 0.09108509, 0.09109, 17.38072603], [1516552680000, 0.0913205, 0.0914, 0.09109, 0.0913205, 17.09003298], [1516552740000, 0.0913205, 0.0913205, 0.09109002, 0.09109002, 13.40990298], [1516552800000, 0.09109012, 0.0914, 0.09109012, 0.09138, 19.93696058], [1516552860000, 0.09109012, 0.0914, 0.08985, 0.09104851, 588.89702054], [1516552920000, 0.09105751, 0.0914, 0.0908452, 0.09123831, 178.17475386], [1516552980000, 0.09105751, 0.0914, 0.09093933, 0.0914, 20.60717784], [1516553040000, 0.0914, 0.0915, 0.09116073, 0.0915, 12.59555995], [1516553100000, 0.0915, 0.091699, 0.09113866, 0.09126178, 45.4019372], [1516553160000, 0.09122569, 0.09169, 0.09113866, 0.09113866, 7.95750057], [1516553220000, 0.09113876, 0.09131953, 0.09113876, 0.09117001, 19.04407008], [1516553280000, 0.09131948, 0.09131953, 0.09117, 0.09131953, 3.0710442], [1516553340000, 0.09120007, 0.09131953, 0.09120007, 0.0912538, 10.08719082], [1516553400000, 0.09127689, 0.09131953, 0.09120007, 0.09127, 5.99918953], [1516553460000, 0.09127, 0.09131953, 0.09127, 0.09131953, 16.7864463], [1516553520000, 0.09131953, 0.09131953, 0.09117, 0.09120007, 7.86210857], [1516553580000, 0.09131953, 0.09131953, 0.09120007, 0.09131953, 6.19650812], [1516553640000, 0.09131953, 0.0916, 0.09125, 0.0916, 24.40544322], [1516553700000, 0.0916, 0.091699, 0.0913241, 0.0916, 2.91795598], [1516553760000, 0.0916495, 0.091699, 0.09137736, 0.09169899, 7.90304899], [1516553820000, 0.0914, 0.09169899, 0.0914, 0.09169899, 6.9945503], [1516553880000, 0.091699, 0.091699, 0.09125, 0.09169899, 27.18854654], [1516553940000, 0.09169899, 0.09169899, 0.091685, 0.091685, 1.31711058], [1516554000000, 0.0912515, 0.091685, 0.09106272, 0.09126899, 34.582384], [1516554060000, 0.09126899, 0.09169, 0.09106277, 0.0915, 26.9661523], [1516554120000, 0.0915, 0.09169899, 0.09118001, 0.0915, 8.69108652], [1516554180000, 0.09124004, 0.09169, 0.09124004, 0.09146615, 3.86453154], [1516554240000, 0.09169, 0.09169, 0.09118, 0.09169, 15.82706034], [1516554300000, 0.09169, 0.09169, 0.09118, 0.09118002, 14.12061133], [1516554360000, 0.09118002, 0.09168, 0.09118002, 0.09168, 17.37069644], [1516554420000, 0.09168, 0.09168, 0.09118002, 0.09168, 19.57672082], [1516554480000, 0.0916799, 0.09168, 0.09118002, 0.09118002, 24.42982387], [1516554540000, 0.09118002, 0.09165999, 0.09118002, 0.09118002, 1.85432579], [1516554600000, 0.09118002, 0.09167999, 0.09109428, 0.09118006, 5.13320399], [1516554660000, 0.09165085, 0.09165085, 0.09118006, 0.09118006, 1.17288813], [1516554720000, 0.09164842, 0.09166408, 0.09118006, 0.09118006, 11.11424435], [1516554780000, 0.09118006, 0.09163935, 0.09118006, 0.09163933, 2.88781407], [1516554840000, 0.09118007, 0.09163933, 0.09118007, 0.091639, 1.1361721], [1516554900000, 0.091639, 0.091639, 0.09118007, 0.091639, 3.66663617], [1516554960000, 0.091639, 0.091639, 0.091639, 0.091639, 1.48078636], [1516555020000, 0.091638, 0.091639, 0.09118007, 0.09118013, 13.67180433], [1516555080000, 0.0911801, 0.091181, 0.09118007, 0.0911801, 30.89978362], [1516555140000, 0.0911801, 0.091181, 0.09118007, 0.0911801, 19.99729063], [1516555200000, 0.09118099, 0.09140947, 0.0911801, 0.0911801, 8.34355629], [1516555260000, 0.09118099, 0.09118099, 0.0911801, 0.0911802, 18.75932754], [1516555320000, 0.09118099, 0.09118099, 0.0911801, 0.0911802, 11.18428755], [1516555380000, 0.09118099, 0.09118099, 0.0911802, 0.0911802, 5.68518181], [1516555440000, 0.0911802, 0.09118099, 0.09109428, 0.09109428, 65.05246789], [1516555500000, 0.09107402, 0.09109428, 0.091, 0.09109, 21.26978155], [1516555560000, 0.09109, 0.09109, 0.091, 0.091, 6.47025692], [1516555620000, 0.091, 0.091, 0.090942, 0.090942, 0.6769967], [1516555680000, 0.090942, 0.091, 0.0908, 0.0908, 11.33846889], [1516555740000, 0.0909, 0.091, 0.0909, 0.09094248, 15.39353223], [1516555800000, 0.09094248, 0.091, 0.09094248, 0.091, 9.039], [1516555860000, 0.09094252, 0.091, 0.09092, 0.09094248, 9.33495212], [1516555920000, 0.09094248, 0.09094252, 0.09094248, 0.09094248, 15.44340002], [1516555980000, 0.09094252, 0.09094252, 0.090942, 0.0909424, 13.89895559], [1516556040000, 0.0909424, 0.0909424, 0.0905, 0.09059776, 49.6914019], [1516556100000, 0.090941, 0.090941, 0.09059776, 0.09060001, 17.00268531], [1516556160000, 0.09094099, 0.090941, 0.09060001, 0.09094099, 7.87748417], [1516556220000, 0.090941, 0.090942, 0.09094099, 0.090942, 40.14524277], [1516556280000, 0.090942, 0.09094252, 0.090941, 0.090941, 103.67743128], [1516556340000, 0.09094252, 0.09094252, 0.09094252, 0.09094252, 10.4514182], [1516556400000, 0.09094252, 0.09097, 0.09094252, 0.09096999, 44.91642379], [1516556460000, 0.09097, 0.09118099, 0.09096999, 0.09106263, 9.38058217], [1516556520000, 0.09118099, 0.09118099, 0.09096999, 0.091, 3.98948641], [1516556580000, 0.09118099, 0.09143626, 0.091, 0.09100002, 55.37137865], [1516556640000, 0.0912383, 0.09128685, 0.0912383, 0.0912383, 18.813407], [1516556700000, 0.0912383, 0.09128673, 0.0912383, 0.09128673, 15.79527818], [1516556760000, 0.09128673, 0.09128673, 0.09106263, 0.0912383, 2.07538088], [1516556820000, 0.0912383, 0.0912383, 0.091, 0.0912383, 59.48114902], [1516556880000, 0.0912383, 0.0912383, 0.09100001, 0.09123829, 7.21881409], [1516556940000, 0.09123828, 0.09123829, 0.09100001, 0.09123828, 1.93764318], [1516557000000, 0.09123828, 0.09123828, 0.09100001, 0.09100001, 1.86554708], [1516557060000, 0.09100001, 0.09123827, 0.09100001, 0.09100001, 2.12498428], [1516557120000, 0.0911, 0.0912383, 0.09100002, 0.09123829, 35.68236402], [1516557180000, 0.0911, 0.0912383, 0.0911, 0.0912383, 16.28972969], [1516557240000, 0.09123829, 0.0912383, 0.091, 0.091115, 10.30625615], [1516557300000, 0.09123827, 0.09168, 0.091115, 0.0914342, 50.3017779], [1516557360000, 0.091427, 0.091427, 0.09123827, 0.09123827, 51.43302528], [1516557420000, 0.09141362, 0.09141362, 0.09123827, 0.09123873, 17.23579061], [1516557480000, 0.0912387, 0.09123874, 0.09123829, 0.09123829, 1.44931059], [1516557540000, 0.09123873, 0.09123873, 0.09123827, 0.09123872, 10.83133545], [1516557600000, 0.09123873, 0.09141362, 0.09123872, 0.09141362, 84.91765153], [1516557660000, 0.09141362, 0.09141362, 0.09123872, 0.0913, 3.73961469], [1516557720000, 0.0913, 0.0913, 0.09123872, 0.0913, 3.17925356], [1516557780000, 0.09124072, 0.0913, 0.09123872, 0.09123872, 3.10819578], [1516557840000, 0.0913, 0.09141362, 0.091, 0.091, 44.74687608], [1516557900000, 0.0914, 0.09141362, 0.09098, 0.09098, 38.86794414], [1516557960000, 0.09098, 0.09141361, 0.09098, 0.09141361, 1.90663927], [1516558020000, 0.09141361, 0.09141361, 0.091, 0.09135, 26.69784425], [1516558080000, 0.0914, 0.0914, 0.09135, 0.0914, 5.08511321], [1516558140000, 0.0914, 0.09141361, 0.09135, 0.09135, 14.06623575], [1516558200000, 0.0914, 0.0914136, 0.09135, 0.09135, 2.99503673], [1516558260000, 0.0914136, 0.0914136, 0.09135, 0.09135, 11.04408323], [1516558320000, 0.09135, 0.0914, 0.09135, 0.0914, 3.94077481], [1516558380000, 0.09135, 0.09139, 0.09135, 0.09139, 10.56937261], [1516558440000, 0.09139, 0.09139, 0.09135, 0.09135, 5.48730491], [1516558500000, 0.09139, 0.09139, 0.09135, 0.09135, 10.48642795], [1516558560000, 0.09135, 0.0914, 0.09135, 0.09139, 24.47882807], [1516558620000, 0.09139, 0.0914, 0.09135, 0.09135001, 26.45143036], [1516558680000, 0.09139999, 0.09139999, 0.09106263, 0.09120001, 10.20533472], [1516558740000, 0.09111101, 0.09120001, 0.09111101, 0.0912, 3.27888782], [1516558800000, 0.09111101, 0.0914, 0.09111101, 0.0914, 0.72348184], [1516558860000, 0.0914, 0.09141362, 0.0912, 0.0912, 17.71732565], [1516558920000, 0.0912, 0.09141036, 0.0912, 0.0912, 19.4988707], [1516558980000, 0.0914, 0.0914, 0.09111101, 0.09125, 7.41204086], [1516559040000, 0.09125, 0.09138626, 0.09106263, 0.09138626, 35.16664013], [1516559100000, 0.09111101, 0.09111101, 0.09094099, 0.09094099, 7.55981487], [1516559160000, 0.09094099, 0.0912709, 0.09089325, 0.091221, 23.11670069], [1516559220000, 0.09121412, 0.091221, 0.0908, 0.09114431, 4.59551186], [1516559280000, 0.09114103, 0.09114431, 0.09081, 0.09081, 2.71001404], [1516559340000, 0.09081, 0.09122369, 0.09081, 0.09122369, 2.55267858], [1516559400000, 0.09118015, 0.09119273, 0.09079697, 0.09118013, 5.12380097], [1516559460000, 0.09117873, 0.09117873, 0.090748, 0.090748, 7.06240712], [1516559520000, 0.090748, 0.09112371, 0.090748, 0.09099998, 1.03703259], [1516559580000, 0.09099998, 0.0911333, 0.09099998, 0.09106262, 10.85391744], [1516559640000, 0.09106262, 0.0910802, 0.090748, 0.09106242, 6.2426569], [1516559700000, 0.09106241, 0.09106241, 0.09079698, 0.09079698, 0.44926069], [1516559760000, 0.09079698, 0.09087277, 0.09079697, 0.09079697, 31.74188983], [1516559820000, 0.09079697, 0.09079698, 0.090748, 0.09079697, 22.37842526], [1516559880000, 0.09079698, 0.09087277, 0.090748, 0.090748, 16.94401836], [1516559940000, 0.09087277, 0.09087277, 0.090797, 0.090797, 2.66091298], [1516560000000, 0.09087276, 0.09087276, 0.090797, 0.090797, 0.2191648], [1516560060000, 0.09087276, 0.09087277, 0.090797, 0.0907998, 7.27758319], [1516560120000, 0.0907998, 0.09087276, 0.09079697, 0.09087276, 2.57860059], [1516560180000, 0.09087276, 0.09087277, 0.09079697, 0.09087277, 7.21984158], [1516560240000, 0.09087277, 0.0912383, 0.09079697, 0.09112194, 26.58636424], [1516560300000, 0.09112194, 0.09112194, 0.09087277, 0.09107616, 26.88367795], [1516560360000, 0.09107131, 0.09108083, 0.0907, 0.0907, 24.20298071], [1516560420000, 0.090748, 0.09102979, 0.09070033, 0.09102719, 0.986227], [1516560480000, 0.09101719, 0.09106263, 0.09080297, 0.09080297, 9.013011], [1516560540000, 0.0909926, 0.09099329, 0.0907, 0.0907, 11.68998913], [1516560600000, 0.09080299, 0.0908938, 0.0907005, 0.0908938, 2.65406838], [1516560660000, 0.0908938, 0.0908938, 0.090803, 0.090803, 5.14170792], [1516560720000, 0.0908938, 0.0908938, 0.090803, 0.090803, 23.33888788], [1516560780000, 0.090803, 0.0908938, 0.09080299, 0.0908938, 9.48071465], [1516560840000, 0.090803, 0.0908938, 0.09080299, 0.09080299, 7.93273999], [1516560900000, 0.09080299, 0.09094735, 0.09080299, 0.09080299, 6.48143081], [1516560960000, 0.09093172, 0.09093172, 0.09080299, 0.09080299, 3.14865342], [1516561020000, 0.09080299, 0.09080299, 0.0907, 0.0907, 17.16437588], [1516561080000, 0.0907, 0.09106263, 0.09065892, 0.09095178, 53.90217871], [1516561140000, 0.09095178, 0.09095178, 0.0906, 0.0906, 1.49745729], [1516561200000, 0.09065892, 0.0909, 0.09065892, 0.0909, 5.16661504], [1516561260000, 0.0909, 0.09092921, 0.09089999, 0.09089999, 15.51952476], [1516561320000, 0.09089999, 0.09090164, 0.09066894, 0.09080299, 4.27041887], [1516561380000, 0.09080299, 0.09095175, 0.0907, 0.09093173, 74.44759743], [1516561440000, 0.0909316, 0.09093174, 0.0907, 0.0907, 11.29284001], [1516561500000, 0.0907, 0.09095176, 0.0907, 0.09091348, 4.65912039], [1516561560000, 0.09095176, 0.09095814, 0.09090596, 0.09095814, 2.94922868], [1516561620000, 0.09095814, 0.09103108, 0.09090596, 0.09095176, 15.50180912], [1516561680000, 0.09097536, 0.09097536, 0.09095176, 0.09095176, 0.94675878], [1516561740000, 0.09097536, 0.09106263, 0.09096177, 0.09106263, 12.87567973], [1516561800000, 0.09106263, 0.09116499, 0.09106263, 0.09116499, 19.31901647], [1516561860000, 0.09116499, 0.09120741, 0.09095177, 0.0909518, 19.62088058], [1516561920000, 0.09095177, 0.09123831, 0.09095177, 0.0911955, 6.22400191], [1516561980000, 0.0911955, 0.0912622, 0.09095177, 0.09095177, 7.03804101], [1516562040000, 0.09095177, 0.09121375, 0.09079697, 0.090907, 5.67620534], [1516562100000, 0.090907, 0.090907, 0.09089999, 0.09089999, 3.05994806], [1516562160000, 0.09089999, 0.0909519, 0.09088779, 0.09089999, 2.23296068], [1516562220000, 0.09089999, 0.09106263, 0.0908878, 0.09106263, 2.84972086], [1516562280000, 0.09088781, 0.09106263, 0.0908878, 0.0908878, 4.28235789], [1516562340000, 0.09088782, 0.09106199, 0.0908878, 0.09106197, 15.70471327], [1516562400000, 0.0908878, 0.09106197, 0.0908878, 0.09105999, 69.05486199], [1516562460000, 0.09105999, 0.09105999, 0.0908878, 0.0908878, 47.17814767], [1516562520000, 0.09099998, 0.09099998, 0.0908878, 0.090889, 47.5227111], [1516562580000, 0.0908878, 0.09099997, 0.0908878, 0.090889, 17.4961196], [1516562640000, 0.09099998, 0.09106199, 0.09088782, 0.090889, 6.65768163], [1516562700000, 0.09088782, 0.090889, 0.09088782, 0.090889, 1.32866955], [1516562760000, 0.090889, 0.09106199, 0.090889, 0.091, 5.99008415], [1516562820000, 0.09106199, 0.09121375, 0.091, 0.091, 0.56446638], [1516562880000, 0.091, 0.09123831, 0.091, 0.091, 1.69223065], [1516562940000, 0.09123831, 0.09123831, 0.091, 0.09111111, 5.01974872], [1516563000000, 0.09111111, 0.0912, 0.091, 0.0912, 4.97719163], [1516563060000, 0.09111111, 0.09115555, 0.091, 0.0911, 2.5142817], [1516563120000, 0.09115, 0.09126221, 0.09115, 0.09126221, 17.46714412], [1516563180000, 0.09126221, 0.09139, 0.09126221, 0.09139, 12.17789819], [1516563240000, 0.09128221, 0.09139, 0.09126221, 0.09128221, 12.74104585], [1516563300000, 0.09139, 0.09139, 0.09126221, 0.09126221, 2.52395295], [1516563360000, 0.09138999, 0.09139, 0.09126221, 0.09126221, 17.45739126], [1516563420000, 0.09126221, 0.091385, 0.09126221, 0.09126222, 4.77019094], [1516563480000, 0.091385, 0.09155, 0.09126222, 0.0915, 25.72243739], [1516563540000, 0.0915, 0.09155995, 0.0915, 0.09150025, 20.86802594], [1516563600000, 0.09150025, 0.0916, 0.09126222, 0.09150027, 24.97319985], [1516563660000, 0.09150027, 0.09158103, 0.09126232, 0.09126232, 4.80912464], [1516563720000, 0.09158567, 0.09158567, 0.09150027, 0.09158383, 2.89009368], [1516563780000, 0.0915003, 0.0915835, 0.0915003, 0.09158199, 31.19491543], [1516563840000, 0.09158199, 0.09158566, 0.0915003, 0.0915003, 18.08023703], [1516563900000, 0.0915003, 0.09158199, 0.0915003, 0.09157741, 5.70244715], [1516563960000, 0.09157741, 0.09158, 0.09157741, 0.09157741, 5.36164536], [1516564020000, 0.09157741, 0.09158383, 0.0915003, 0.09158383, 7.37273543], [1516564080000, 0.091582, 0.091582, 0.0915003, 0.0915003, 26.96080206], [1516564140000, 0.091582, 0.091582, 0.09150027, 0.09158016, 9.32768809], [1516564200000, 0.09158016, 0.09158017, 0.09150027, 0.09150027, 4.98369351], [1516564260000, 0.09130001, 0.091582, 0.09130001, 0.09158199, 19.74070157], [1516564320000, 0.09130001, 0.091582, 0.09130001, 0.09155, 11.89515789], [1516564380000, 0.09158198, 0.09158198, 0.09130001, 0.09130001, 3.47379155], [1516564440000, 0.09126222, 0.09130001, 0.09126221, 0.09126221, 3.04615211], [1516564500000, 0.09126222, 0.09130001, 0.09126222, 0.09130001, 1.72812375], [1516564560000, 0.09130001, 0.09130001, 0.09130001, 0.09130001, 3.51121827], [1516564620000, 0.09130001, 0.09130001, 0.091263, 0.091263, 0.38101793], [1516564680000, 0.09130001, 0.091582, 0.09130001, 0.091582, 3.86099838], [1516564740000, 0.091582, 0.091582, 0.091263, 0.0913, 11.07179839], [1516564800000, 0.091582, 0.09158566, 0.091263, 0.091582, 33.08075643], [1516564860000, 0.091582, 0.09158566, 0.09145, 0.09145, 4.19697081], [1516564920000, 0.09145, 0.0915, 0.09145, 0.09145, 12.34389561], [1516564980000, 0.09145, 0.09145, 0.09145, 0.09145, 2.48473077], [1516565040000, 0.09145, 0.09158566, 0.0913, 0.09145, 15.05117483], [1516565100000, 0.09154055, 0.09155225, 0.09154055, 0.09154057, 7.81281206], [1516565160000, 0.09155225, 0.09158566, 0.09145, 0.09145, 29.25362308], [1516565220000, 0.09158501, 0.09158501, 0.09145, 0.09145, 12.04178391], [1516565280000, 0.09158, 0.09158, 0.091263, 0.09145, 45.24613163], [1516565340000, 0.09145, 0.09155, 0.09145, 0.09145, 2.21239659], [1516565400000, 0.09155, 0.09158566, 0.09145, 0.09158566, 19.37347489], [1516565460000, 0.09154998, 0.09154998, 0.09126221, 0.09145, 15.04024618], [1516565520000, 0.09147, 0.09154998, 0.09147, 0.09154998, 4.94980456], [1516565580000, 0.09147, 0.09154998, 0.09147, 0.09147, 5.89475151], [1516565640000, 0.09147, 0.09154998, 0.09126222, 0.09126222, 2.35581514], [1516565700000, 0.09154998, 0.091646, 0.09126222, 0.09126222, 69.86600777], [1516565760000, 0.09162852, 0.09162852, 0.09126222, 0.09126222, 2.73898469], [1516565820000, 0.09162851, 0.09162851, 0.09126222, 0.09126222, 1.09228602], [1516565880000, 0.09126222, 0.09126231, 0.09126222, 0.09126231, 1.47319405], [1516565940000, 0.09126231, 0.09159632, 0.09126223, 0.09159632, 1.0753886], [1516566000000, 0.09159632, 0.09160222, 0.09126222, 0.09126223, 2.56513964], [1516566060000, 0.09142419, 0.09168, 0.09126223, 0.09162852, 3.65066109], [1516566120000, 0.09162852, 0.09167894, 0.09162852, 0.09162852, 43.80609189], [1516566180000, 0.09162852, 0.09168, 0.09162852, 0.09167999, 34.70926129], [1516566240000, 0.09167999, 0.09168, 0.09162852, 0.09168, 21.03448708], [1516566300000, 0.09162852, 0.09169899, 0.09162852, 0.09162852, 39.72378044], [1516566360000, 0.09162852, 0.09169, 0.09126224, 0.09160852, 34.00189603], [1516566420000, 0.091583, 0.09162852, 0.09126222, 0.09126222, 8.0390282], [1516566480000, 0.0913, 0.091598, 0.09126222, 0.09129999, 1.49980319], [1516566540000, 0.09129999, 0.09169899, 0.09126222, 0.09169899, 3.71576677], [1516566600000, 0.09169898, 0.09169932, 0.09123832, 0.0916, 9.32740653], [1516566660000, 0.0916, 0.0916, 0.09123831, 0.09159999, 15.49207862], [1516566720000, 0.09123832, 0.0916, 0.09123831, 0.0916, 1.9399288], [1516566780000, 0.0916, 0.0916, 0.09123831, 0.09159999, 16.45978593], [1516566840000, 0.09159999, 0.09175949, 0.09123831, 0.09123831, 11.61523381], [1516566900000, 0.09123831, 0.09170577, 0.09123831, 0.09164331, 21.74686584], [1516566960000, 0.09124001, 0.09124001, 0.09124001, 0.09124001, 13.74064525], [1516567020000, 0.09124001, 0.09170499, 0.09123831, 0.09124001, 27.905009], [1516567080000, 0.09162001, 0.0919, 0.09124001, 0.09162001, 40.46548212], [1516567140000, 0.09162001, 0.09170492, 0.09124, 0.09170486, 11.09826341], [1516567200000, 0.09164, 0.09170486, 0.09123831, 0.09164, 19.57882904], [1516567260000, 0.09164, 0.09170483, 0.0915, 0.0915, 20.74341801], [1516567320000, 0.09170481, 0.09170481, 0.0915, 0.0915, 10.40359598], [1516567380000, 0.09170478, 0.09189995, 0.0915, 0.0915, 13.55296649], [1516567440000, 0.09159147, 0.0917438, 0.0915, 0.0915, 41.98738136], [1516567500000, 0.0915, 0.09159148, 0.0915, 0.0915, 33.24559035], [1516567560000, 0.09130002, 0.0915, 0.09130002, 0.09135, 2.84220583], [1516567620000, 0.09135, 0.09135, 0.09130002, 0.09130002, 2.92213541], [1516567680000, 0.09130002, 0.09130002, 0.09123831, 0.09130001, 5.53140636], [1516567740000, 0.09130001, 0.09130002, 0.09123831, 0.09123831, 6.66733766], [1516567800000, 0.09130001, 0.09142, 0.09123831, 0.09123831, 68.78509854], [1516567860000, 0.09130002, 0.09169144, 0.09123831, 0.09123831, 46.34065327], [1516567920000, 0.09123831, 0.09150969, 0.09123831, 0.09123831, 37.85604574], [1516567980000, 0.09162993, 0.09162993, 0.09123831, 0.09123831, 31.2690218], [1516568040000, 0.09123831, 0.091681, 0.09123831, 0.09123831, 36.50591724], [1516568100000, 0.09123831, 0.0916915, 0.091238, 0.091238, 14.96937033], [1516568160000, 0.091238, 0.0913831, 0.090975, 0.091, 5.27444158], [1516568220000, 0.091, 0.09106262, 0.09084937, 0.09099999, 8.30465458], [1516568280000, 0.09099999, 0.09099999, 0.09084938, 0.09084938, 8.53761461], [1516568340000, 0.09096993, 0.09096993, 0.09084938, 0.09084938, 5.58477889], [1516568400000, 0.090969, 0.09096981, 0.09084938, 0.09084939, 3.48126744], [1516568460000, 0.09096899, 0.09096899, 0.0907, 0.09084935, 16.30823647], [1516568520000, 0.09084938, 0.09096993, 0.0907, 0.09096993, 5.43850343], [1516568580000, 0.09084937, 0.09096993, 0.09084935, 0.09084969, 11.69561084], [1516568640000, 0.09096993, 0.09096993, 0.09084969, 0.09096992, 1.83807417], [1516568700000, 0.09096992, 0.09096993, 0.09096992, 0.09096992, 2.01297661], [1516568760000, 0.09096993, 0.09096993, 0.09085001, 0.09085001, 9.05391358], [1516568820000, 0.090913, 0.09096993, 0.09084935, 0.09085, 13.76708526], [1516568880000, 0.09085, 0.09096993, 0.09084935, 0.090913, 13.30198641], [1516568940000, 0.090913, 0.090913, 0.0909125, 0.09091299, 10.26071402], [1516569000000, 0.0909125, 0.09106263, 0.0909125, 0.09097, 6.37135651], [1516569060000, 0.09106263, 0.09123831, 0.09096993, 0.0912383, 3.23665117], [1516569120000, 0.0912383, 0.09123831, 0.09096994, 0.0911588, 2.50367038], [1516569180000, 0.09112814, 0.09112814, 0.09085001, 0.09085001, 3.70762311], [1516569240000, 0.09106263, 0.09115423, 0.09085001, 0.09085001, 14.2108373], [1516569300000, 0.09097, 0.09115423, 0.09070001, 0.09070001, 34.11072258], [1516569360000, 0.09070001, 0.09085001, 0.09070001, 0.09085, 3.85716913], [1516569420000, 0.09085, 0.09085, 0.09070003, 0.09085, 0.66280172], [1516569480000, 0.09083, 0.09083, 0.09070004, 0.09083, 7.59790549], [1516569540000, 0.09083, 0.09106263, 0.09070004, 0.09106263, 33.90195408], [1516569600000, 0.09106263, 0.09115423, 0.0910625, 0.0911542, 7.39763169], [1516569660000, 0.0911, 0.09115423, 0.09094767, 0.09094767, 8.54845145], [1516569720000, 0.09094767, 0.09115423, 0.09094767, 0.09115423, 6.38718587], [1516569780000, 0.0911, 0.09149, 0.0911, 0.0911001, 9.8455711], [1516569840000, 0.09138309, 0.09169147, 0.09106263, 0.09169145, 11.08571055], [1516569900000, 0.09169083, 0.09169083, 0.09106264, 0.09106264, 2.2701699], [1516569960000, 0.09168955, 0.09168955, 0.09108, 0.09164949, 10.58386999], [1516570020000, 0.09108, 0.09164949, 0.09106264, 0.0911537, 13.96631729], [1516570080000, 0.0911557, 0.09137671, 0.09107999, 0.09114992, 40.14095343], [1516570140000, 0.09108001, 0.09154337, 0.09108001, 0.09154337, 1.71250293], [1516570200000, 0.09154338, 0.09169146, 0.09116, 0.09117, 5.04202421], [1516570260000, 0.09134837, 0.09169146, 0.09117001, 0.09118001, 20.2872982], [1516570320000, 0.09118002, 0.09118002, 0.09117002, 0.09118002, 8.33345345], [1516570380000, 0.09117003, 0.09118002, 0.09079697, 0.09079697, 28.03019316], [1516570440000, 0.09079697, 0.09106263, 0.09079697, 0.09106262, 15.55511437], [1516570500000, 0.09106262, 0.09123831, 0.09079697, 0.09117697, 54.21150993], [1516570560000, 0.09123829, 0.0912383, 0.09102059, 0.09102059, 13.53097473], [1516570620000, 0.09123827, 0.09123829, 0.0909707, 0.0909889, 4.26918123], [1516570680000, 0.09080001, 0.09122, 0.09070004, 0.0910552, 51.89882376], [1516570740000, 0.0910552, 0.09123817, 0.09070003, 0.09070004, 8.32252303], [1516570800000, 0.09070004, 0.091238, 0.09070004, 0.09079697, 4.48310641], [1516570860000, 0.09106262, 0.09106262, 0.09088133, 0.09102, 6.52408741], [1516570920000, 0.09102, 0.09102, 0.09079697, 0.09079697, 8.22588132], [1516570980000, 0.09102, 0.09102, 0.09079697, 0.090888, 2.85219511], [1516571040000, 0.09102, 0.09102, 0.0908, 0.0908, 3.17504642], [1516571100000, 0.090888, 0.09100998, 0.0908, 0.0908, 5.8874441], [1516571160000, 0.0908, 0.0908, 0.09079074, 0.09079697, 7.10100178], [1516571220000, 0.09079697, 0.09100998, 0.09070004, 0.09100998, 8.25762168], [1516571280000, 0.09079075, 0.0909, 0.09070005, 0.0909, 4.33872062], [1516571340000, 0.0909, 0.09100998, 0.09070006, 0.09100998, 1.50299798], [1516571400000, 0.09100998, 0.09100998, 0.09070006, 0.09100998, 18.04630425], [1516571460000, 0.0907001, 0.09100998, 0.09070005, 0.09100998, 4.75973674], [1516571520000, 0.09100998, 0.09100998, 0.0909, 0.09100998, 5.73254989], [1516571580000, 0.09100998, 0.09100998, 0.09090007, 0.09090007, 3.83393524], [1516571640000, 0.09090007, 0.09090007, 0.09070008, 0.09090007, 0.75394083], [1516571700000, 0.09090007, 0.09090008, 0.09070003, 0.09070007, 6.25973115], [1516571760000, 0.09070007, 0.09100997, 0.09070003, 0.09070007, 12.15171401], [1516571820000, 0.09070007, 0.09070007, 0.09070003, 0.09070006, 6.01168104], [1516571880000, 0.09070006, 0.09070006, 0.09070005, 0.09070006, 9.15306079], [1516571940000, 0.09070006, 0.09070007, 0.09070005, 0.09070007, 10.98262224], [1516572000000, 0.09070007, 0.09070007, 0.09070006, 0.09070006, 8.80464185], [1516572060000, 0.09070007, 0.09100998, 0.09070003, 0.09070008, 28.28330649], [1516572120000, 0.09070008, 0.09101, 0.09070008, 0.091, 5.58021775], [1516572180000, 0.09101, 0.09121799, 0.09073847, 0.09114299, 16.0730242], [1516572240000, 0.091132, 0.09114299, 0.09093847, 0.09114298, 6.88056561], [1516572300000, 0.09114297, 0.09114297, 0.09093847, 0.09093847, 6.94178074], [1516572360000, 0.09093847, 0.09114295, 0.09093847, 0.091, 11.47146841], [1516572420000, 0.091, 0.09113297, 0.091, 0.091, 10.90550659], [1516572480000, 0.091, 0.091091, 0.09079697, 0.091, 9.99310755], [1516572540000, 0.091, 0.091, 0.09073847, 0.091, 7.63944012], [1516572600000, 0.09073847, 0.091, 0.09070003, 0.091, 7.67845573], [1516572660000, 0.09099999, 0.091, 0.09073847, 0.091, 1.50475621], [1516572720000, 0.09093846, 0.091, 0.09075, 0.0909818, 8.04749718], [1516572780000, 0.0909818, 0.091, 0.0908292, 0.091, 10.61514754], [1516572840000, 0.0909818, 0.09099999, 0.09073847, 0.0908292, 17.32320915], [1516572900000, 0.09082919, 0.09099999, 0.09070001, 0.09070001, 25.45224011], [1516572960000, 0.09070001, 0.0908, 0.0907, 0.0908, 12.9692978], [1516573020000, 0.0908, 0.0908, 0.0907385, 0.0908, 8.54627926], [1516573080000, 0.0908, 0.0908, 0.0907, 0.0907, 7.70055732], [1516573140000, 0.0908, 0.0908, 0.0906, 0.09070001, 3.3216353], [1516573200000, 0.0907999, 0.0908, 0.09070001, 0.0908, 29.96416222], [1516573260000, 0.0908, 0.09099999, 0.09070002, 0.09099999, 34.47880262], [1516573320000, 0.09099, 0.09125545, 0.0909, 0.091255, 23.71690787], [1516573380000, 0.0912554, 0.09125545, 0.091, 0.0910991, 55.5645536], [1516573440000, 0.09125539, 0.09147569, 0.09094144, 0.09123831, 5.11421717], [1516573500000, 0.090995, 0.09147565, 0.090995, 0.09147565, 47.25791643], [1516573560000, 0.09147565, 0.09147565, 0.09101826, 0.09147565, 14.29764985], [1516573620000, 0.09147565, 0.09147565, 0.09119301, 0.09147536, 9.13254391], [1516573680000, 0.09139, 0.09147565, 0.09139, 0.09147491, 4.15699114], [1516573740000, 0.09147491, 0.09147491, 0.09119301, 0.09119301, 2.36075059], [1516573800000, 0.0914746, 0.09147461, 0.09139, 0.09139, 1.13734395], [1516573860000, 0.09147459, 0.09147461, 0.09139, 0.09147459, 7.64236364], [1516573920000, 0.09147459, 0.0914749, 0.09119301, 0.09147458, 10.01914061], [1516573980000, 0.09147458, 0.09147459, 0.09119301, 0.09119301, 22.96530951], [1516574040000, 0.09119301, 0.09147457, 0.09119301, 0.09121124, 4.29042517], [1516574100000, 0.091474, 0.09147458, 0.09121124, 0.09121124, 5.13827139], [1516574160000, 0.091474, 0.09147458, 0.09121124, 0.09147458, 3.84126029], [1516574220000, 0.09121124, 0.091474, 0.0912111, 0.0912111, 5.07178329], [1516574280000, 0.0912111, 0.0912111, 0.091173, 0.09119308, 2.70609629], [1516574340000, 0.0911931, 0.0911931, 0.09119308, 0.0911931, 0.83191556], [1516574400000, 0.09119309, 0.0911931, 0.09119309, 0.0911931, 5.4116417], [1516574460000, 0.0911931, 0.0912111, 0.0911931, 0.0911931, 3.1996587], [1516574520000, 0.09121124, 0.09147458, 0.0912111, 0.09147458, 2.20087488], [1516574580000, 0.09147458, 0.09147458, 0.09121111, 0.09147, 5.47255198], [1516574640000, 0.09147, 0.09147, 0.0911931, 0.09121111, 10.1157904], [1516574700000, 0.09121111, 0.09147458, 0.09119309, 0.09147457, 8.89130409], [1516574760000, 0.09147, 0.09147407, 0.0908, 0.0908, 29.81446111], [1516574820000, 0.091168, 0.091173, 0.091168, 0.091173, 31.00758073], [1516574880000, 0.09080001, 0.09117022, 0.09080001, 0.09117021, 2.14260707], [1516574940000, 0.09109637, 0.091148, 0.09080002, 0.09113299, 5.26414796], [1516575000000, 0.09080002, 0.09102691, 0.09070001, 0.09079697, 14.14695312], [1516575060000, 0.09070001, 0.09079698, 0.09070001, 0.09079698, 6.69502449], [1516575120000, 0.09079698, 0.09106263, 0.09060567, 0.0907847, 5.4310123], [1516575180000, 0.09078981, 0.09106263, 0.0906, 0.09106263, 8.69707252], [1516575240000, 0.0907847, 0.0907847, 0.0906, 0.0907847, 3.78101362], [1516575300000, 0.090585, 0.09096935, 0.09053, 0.09053, 17.02432249], [1516575360000, 0.09097999, 0.09097999, 0.0906, 0.09060001, 1.96696252], [1516575420000, 0.09078467, 0.09078467, 0.09053, 0.09078, 6.42842272], [1516575480000, 0.09078, 0.090784, 0.09060005, 0.09060005, 6.56273321], [1516575540000, 0.0907798, 0.0907798, 0.09060005, 0.09060005, 1.78877172], [1516575600000, 0.09077979, 0.090784, 0.09077979, 0.09078398, 12.65944808], [1516575660000, 0.09078398, 0.09078398, 0.09060006, 0.0907, 4.4062226], [1516575720000, 0.09074076, 0.090784, 0.09060006, 0.09074076, 16.46704324], [1516575780000, 0.090784, 0.090784, 0.09060005, 0.09062748, 47.70488721], [1516575840000, 0.09060005, 0.090784, 0.0905, 0.09078398, 13.28102859], [1516575900000, 0.090784, 0.090784, 0.09078398, 0.09078398, 5.44579739], [1516575960000, 0.09078398, 0.090784, 0.09062749, 0.090784, 6.64363749], [1516576020000, 0.09062749, 0.090784, 0.09062749, 0.09062749, 10.65554028], [1516576080000, 0.0906275, 0.090784, 0.09062749, 0.09062749, 1.6130586], [1516576140000, 0.090784, 0.09103879, 0.09078399, 0.09103878, 9.3947438], [1516576200000, 0.09103878, 0.09103878, 0.0908567, 0.09103878, 0.61146907], [1516576260000, 0.09103878, 0.09116262, 0.0906375, 0.09103879, 12.58895659], [1516576320000, 0.09103878, 0.09103879, 0.09103878, 0.09103878, 3.05368203], [1516576380000, 0.09103878, 0.09103879, 0.09103878, 0.09103878, 6.40268079], [1516576440000, 0.09103878, 0.09103879, 0.09079697, 0.09103879, 20.373659], [1516576500000, 0.09079697, 0.09103879, 0.09079697, 0.09103879, 3.29952606], [1516576560000, 0.09103878, 0.09103878, 0.09101555, 0.09101555, 1.3015289], [1516576620000, 0.09101555, 0.09101555, 0.09079697, 0.09079698, 6.81213649], [1516576680000, 0.09079698, 0.09101555, 0.09054001, 0.09101555, 25.55934915], [1516576740000, 0.090797, 0.09101555, 0.09079697, 0.09101555, 15.50705868], [1516576800000, 0.09085461, 0.09099545, 0.09079697, 0.09099543, 7.69136854], [1516576860000, 0.09099545, 0.09099545, 0.09079697, 0.09099543, 14.75928703], [1516576920000, 0.09079697, 0.09101555, 0.09079697, 0.091015, 38.43699536], [1516576980000, 0.09097723, 0.091015, 0.09079697, 0.09079697, 3.29407203], [1516577040000, 0.09097723, 0.09103876, 0.09097723, 0.09097724, 5.09073215], [1516577100000, 0.09097723, 0.09103876, 0.09097723, 0.09103876, 12.68793581], [1516577160000, 0.09103876, 0.09103876, 0.09097724, 0.09097724, 5.95413135], [1516577220000, 0.09103876, 0.09103876, 0.09097724, 0.09097724, 12.38636852], [1516577280000, 0.09103, 0.09103, 0.09097724, 0.09103, 0.88798457], [1516577340000, 0.09103, 0.09123657, 0.09097724, 0.09123657, 71.73507378], [1516577400000, 0.09123657, 0.09123831, 0.09097724, 0.09097724, 38.79965381], [1516577460000, 0.09097724, 0.09146879, 0.09097724, 0.09127744, 203.21832492], [1516577520000, 0.09123999, 0.09123999, 0.09097724, 0.09122899, 21.11000354], [1516577580000, 0.09128836, 0.09147459, 0.09097724, 0.09097724, 145.63949695], [1516577640000, 0.09122898, 0.0913708, 0.09097724, 0.09097724, 3.87860243], [1516577700000, 0.0913708, 0.09142397, 0.09097726, 0.09106129, 2.3086829], [1516577760000, 0.09106129, 0.09142295, 0.09097723, 0.09097726, 18.12487443], [1516577820000, 0.09097723, 0.09147459, 0.09082557, 0.09147394, 26.65608064], [1516577880000, 0.09147394, 0.09147394, 0.09106263, 0.09137996, 4.143757], [1516577940000, 0.09137996, 0.09147446, 0.09106263, 0.09147446, 13.67941531], [1516578000000, 0.09123831, 0.09147459, 0.09098183, 0.09098183, 27.69392288], [1516578060000, 0.09141557, 0.09147459, 0.09098183, 0.09142595, 8.79139389], [1516578120000, 0.09142595, 0.09143813, 0.09098183, 0.09136593, 62.89441579], [1516578180000, 0.09106263, 0.0914249, 0.091, 0.0914249, 3.58353994], [1516578240000, 0.091, 0.0914249, 0.091, 0.09123831, 4.02067961], [1516578300000, 0.091, 0.09123831, 0.091, 0.09100001, 1.41621836], [1516578360000, 0.09123824, 0.09142792, 0.09123824, 0.09137029, 6.7440107], [1516578420000, 0.09137028, 0.09137028, 0.09123824, 0.09123824, 40.45286957], [1516578480000, 0.09123824, 0.09142812, 0.0911, 0.0911, 29.25211453], [1516578540000, 0.09142808, 0.09142808, 0.09111, 0.09142696, 5.09028217], [1516578600000, 0.09142695, 0.09147459, 0.09111, 0.09111, 5.37969349], [1516578660000, 0.09141487, 0.09141487, 0.09111, 0.09141296, 9.4746103], [1516578720000, 0.09141293, 0.09141293, 0.0911, 0.0911, 20.87239878], [1516578780000, 0.0911, 0.0914109, 0.0911, 0.0911, 8.75601026], [1516578840000, 0.091091, 0.0914099, 0.09099996, 0.0914099, 12.50026348], [1516578900000, 0.09098183, 0.09141382, 0.09098183, 0.09141195, 16.61053646], [1516578960000, 0.09141195, 0.09141195, 0.09098183, 0.09098183, 17.70478024], [1516579020000, 0.09141098, 0.09141098, 0.09079678, 0.09079678, 40.18388587], [1516579080000, 0.09123829, 0.09123829, 0.09078716, 0.09082156, 18.00719384], [1516579140000, 0.09106263, 0.09106263, 0.09083788, 0.09083788, 10.07992551], [1516579200000, 0.09083788, 0.09106255, 0.090574, 0.09068291, 64.17916947], [1516579260000, 0.09068291, 0.09123787, 0.090574, 0.09087854, 33.50562566], [1516579320000, 0.09087854, 0.09123787, 0.09058901, 0.09123786, 93.85046863], [1516579380000, 0.09123786, 0.09123787, 0.09079697, 0.09123787, 4.39210904], [1516579440000, 0.09106262, 0.09118389, 0.09106262, 0.09118384, 4.97641495], [1516579500000, 0.09118384, 0.09123787, 0.09081512, 0.09123787, 17.47165701], [1516579560000, 0.09118387, 0.09135821, 0.09079697, 0.09128895, 30.67772212], [1516579620000, 0.09128895, 0.09134901, 0.09067407, 0.09123327, 35.55119022], [1516579680000, 0.09123327, 0.09123327, 0.09067407, 0.09106263, 8.42509793], [1516579740000, 0.09106185, 0.09106185, 0.09067408, 0.09106185, 10.50583533], [1516579800000, 0.09106185, 0.09116696, 0.09067419, 0.09067419, 9.8272767], [1516579860000, 0.09106185, 0.09106185, 0.09067419, 0.09067419, 4.42911486], [1516579920000, 0.09067419, 0.09098701, 0.09067419, 0.09070019, 6.98176278], [1516579980000, 0.09096858, 0.09106184, 0.0907, 0.09070019, 11.25114542], [1516580040000, 0.09070019, 0.09104701, 0.0907, 0.0907, 10.24631648], [1516580100000, 0.09071, 0.09105894, 0.09070123, 0.091, 6.64329936], [1516580160000, 0.091, 0.09106185, 0.09070123, 0.09070123, 20.81628428], [1516580220000, 0.09106185, 0.09106263, 0.09070123, 0.09070123, 6.3694347], [1516580280000, 0.09106263, 0.09106263, 0.09070123, 0.09106263, 2.76675637], [1516580340000, 0.09079697, 0.09106263, 0.09079697, 0.09079698, 2.26820662], [1516580400000, 0.09079698, 0.09106263, 0.09079698, 0.09106263, 35.87559317], [1516580460000, 0.09106263, 0.09107, 0.09106263, 0.09106263, 38.22856924], [1516580520000, 0.09107, 0.09116599, 0.09079697, 0.09106263, 13.61038576], [1516580580000, 0.09106262, 0.09116599, 0.09067401, 0.091062, 60.85831163], [1516580640000, 0.091062, 0.09116599, 0.09075387, 0.09105935, 24.23486788], [1516580700000, 0.09105935, 0.09139999, 0.09079697, 0.09131538, 18.29798601], [1516580760000, 0.09129901, 0.09129901, 0.09079697, 0.09079698, 8.67240516], [1516580820000, 0.09079698, 0.09128572, 0.09060727, 0.09119632, 71.78224149], [1516580880000, 0.09064785, 0.09123831, 0.09053503, 0.09119353, 39.13399229], [1516580940000, 0.09119019, 0.09119019, 0.091, 0.09119019, 3.23561851], [1516581000000, 0.09119019, 0.09122649, 0.090797, 0.09117598, 13.98564471], [1516581060000, 0.09100003, 0.0911767, 0.091, 0.09100002, 29.02623382], [1516581120000, 0.09109997, 0.09109998, 0.091, 0.09100003, 16.69295746], [1516581180000, 0.09100003, 0.09109997, 0.091, 0.09109997, 8.29613543], [1516581240000, 0.09109997, 0.0914, 0.09100002, 0.09109998, 8.15597433], [1516581300000, 0.09128576, 0.09128576, 0.09109998, 0.09128576, 5.22240463], [1516581360000, 0.09128576, 0.09131256, 0.09109999, 0.09128576, 32.14000775], [1516581420000, 0.09128576, 0.09129543, 0.09109998, 0.09128169, 28.27528116], [1516581480000, 0.09128169, 0.0913099, 0.09109998, 0.09119107, 7.23926961], [1516581540000, 0.09119107, 0.09131569, 0.09109998, 0.09109999, 6.52914075], [1516581600000, 0.09109999, 0.09136251, 0.09100007, 0.09100007, 11.57330823], [1516581660000, 0.09100007, 0.09123831, 0.09100007, 0.09100007, 3.54566166], [1516581720000, 0.09100007, 0.09123807, 0.09100007, 0.09100008, 3.31767593], [1516581780000, 0.09100008, 0.09135507, 0.09100008, 0.09100008, 10.26868466], [1516581840000, 0.09123832, 0.0914, 0.09100007, 0.09106269, 26.12806123], [1516581900000, 0.09137029, 0.09137029, 0.09100008, 0.09100008, 18.16243028], [1516581960000, 0.09100008, 0.09132, 0.09100008, 0.09123831, 1.83836935], [1516582020000, 0.09123831, 0.09128, 0.09123831, 0.09127816, 6.28446947], [1516582080000, 0.09123831, 0.09123832, 0.09106263, 0.0911, 28.98361815], [1516582140000, 0.0911, 0.09128, 0.091005, 0.09117999, 20.64151281], [1516582200000, 0.09123831, 0.09128576, 0.091001, 0.09128576, 17.72998325], [1516582260000, 0.09118001, 0.091411, 0.09118, 0.09128573, 27.86225481], [1516582320000, 0.091411, 0.091411, 0.0910001, 0.0910001, 13.0159282], [1516582380000, 0.09118001, 0.091411, 0.09100008, 0.091411, 12.08880668], [1516582440000, 0.09100011, 0.091411, 0.09100008, 0.091411, 7.63255699], [1516582500000, 0.09138, 0.09140917, 0.09106263, 0.09137999, 17.28898729], [1516582560000, 0.09137999, 0.09141382, 0.09106263, 0.09138042, 23.28813891], [1516582620000, 0.09138042, 0.09141382, 0.0913799, 0.09138042, 11.62014435], [1516582680000, 0.09141382, 0.09141382, 0.09100503, 0.09141382, 44.5650063], [1516582740000, 0.09106263, 0.09141381, 0.09100007, 0.09100007, 6.7383575], [1516582800000, 0.09100009, 0.09123831, 0.09100007, 0.09123831, 2.73443086], [1516582860000, 0.09123831, 0.09141373, 0.09123831, 0.09141193, 11.55490999], [1516582920000, 0.09141193, 0.09141373, 0.09141193, 0.091412, 34.74954988], [1516582980000, 0.091412, 0.09141382, 0.09141193, 0.09141194, 13.60334922], [1516583040000, 0.09141194, 0.09141194, 0.0902, 0.0902, 198.79297586], [1516583100000, 0.09123177, 0.09141373, 0.09090001, 0.09141372, 4.1675002], [1516583160000, 0.0911, 0.09141373, 0.09092381, 0.09141373, 5.77305532], [1516583220000, 0.09141373, 0.09141382, 0.09141373, 0.09141373, 5.49011827], [1516583280000, 0.09132955, 0.09132955, 0.09123831, 0.09123831, 10.78756939], [1516583340000, 0.09123832, 0.09141382, 0.09092794, 0.09094307, 36.86294966], [1516583400000, 0.09094307, 0.0914133, 0.09092381, 0.09092382, 27.25158983], [1516583460000, 0.09141313, 0.09141313, 0.09092381, 0.0913, 22.67952075], [1516583520000, 0.09093382, 0.0913, 0.09090007, 0.09093384, 10.69037739], [1516583580000, 0.09093384, 0.0913, 0.09093384, 0.09106263, 3.40449104], [1516583640000, 0.09106263, 0.0913, 0.09093384, 0.0913, 8.43132688], [1516583700000, 0.091225, 0.091225, 0.09106264, 0.09122487, 1.20491319], [1516583760000, 0.09122487, 0.0914131, 0.09106263, 0.09122487, 17.10098847], [1516583820000, 0.09122487, 0.0914131, 0.09106264, 0.0914131, 9.05730732], [1516583880000, 0.0914131, 0.0914131, 0.09106264, 0.0911, 2.61326544], [1516583940000, 0.0914131, 0.09141487, 0.0911, 0.0911, 58.89096143], [1516584000000, 0.09141309, 0.09141309, 0.0911, 0.09122487, 1.2590969], [1516584060000, 0.0914, 0.091413, 0.0911, 0.0911, 18.54082668], [1516584120000, 0.0911, 0.09141, 0.0911, 0.0911, 1.09406685], [1516584180000, 0.0913, 0.0913, 0.0911, 0.0913, 3.49485429], [1516584240000, 0.0913, 0.0913, 0.0911, 0.0911, 20.92749973], [1516584300000, 0.0911, 0.0913, 0.0911, 0.09129888, 5.00529914], [1516584360000, 0.09111, 0.09129705, 0.09111, 0.091111, 4.48548726], [1516584420000, 0.09129705, 0.09129705, 0.091111, 0.09113001, 2.90524073], [1516584480000, 0.09129, 0.09129705, 0.0912, 0.09120001, 1.01199194], [1516584540000, 0.091211, 0.09129688, 0.091211, 0.09129688, 19.19771953], [1516584600000, 0.09129705, 0.09129705, 0.09121101, 0.09129698, 12.98565044], [1516584660000, 0.09129698, 0.09129699, 0.09129698, 0.09129698, 14.09316013], [1516584720000, 0.09129698, 0.09141309, 0.09129698, 0.0913, 23.80067273], [1516584780000, 0.0913, 0.09141309, 0.09129698, 0.09141298, 14.58322991], [1516584840000, 0.09129699, 0.09141309, 0.09129699, 0.09141309, 4.30313194], [1516584900000, 0.09140989, 0.09140989, 0.09129699, 0.09129699, 1.8795848], [1516584960000, 0.09129699, 0.09140985, 0.09129699, 0.091297, 5.21060961], [1516585020000, 0.091297, 0.09140937, 0.091297, 0.091397, 3.60295208], [1516585080000, 0.091297, 0.091397, 0.091297, 0.09129701, 23.66134582], [1516585140000, 0.09129701, 0.09140949, 0.09129698, 0.09129698, 67.93628124], [1516585200000, 0.09129698, 0.09140948, 0.09129698, 0.09140765, 9.0250719], [1516585260000, 0.09140765, 0.09140948, 0.09129698, 0.09129698, 5.4865092], [1516585320000, 0.09129698, 0.09140948, 0.09129698, 0.09139999, 9.06752234], [1516585380000, 0.09129699, 0.09140948, 0.09129698, 0.0913985, 17.6437028], [1516585440000, 0.09129698, 0.09140033, 0.09129698, 0.09140033, 36.01198614], [1516585500000, 0.091399, 0.09140033, 0.09129698, 0.09140033, 6.44260858], [1516585560000, 0.09129698, 0.09140949, 0.09129698, 0.09140949, 10.67179716], [1516585620000, 0.09129698, 0.09140949, 0.09129698, 0.09135, 9.16034711], [1516585680000, 0.0914, 0.09140949, 0.09129698, 0.09129698, 13.44806804], [1516585740000, 0.09129698, 0.09140985, 0.09129698, 0.09129698, 13.66952641], [1516585800000, 0.09129698, 0.09135, 0.09129698, 0.09135, 8.10240203], [1516585860000, 0.09135, 0.09135, 0.09129698, 0.09129698, 17.57787286], [1516585920000, 0.09135, 0.09141309, 0.09135, 0.09135, 19.56858643], [1516585980000, 0.09140984, 0.09147459, 0.09129698, 0.09129698, 71.36608613], [1516586040000, 0.09147459, 0.09147459, 0.09129698, 0.09147459, 44.72117538], [1516586100000, 0.0914745, 0.0915, 0.09129698, 0.0915, 18.07859358], [1516586160000, 0.091476, 0.0915031, 0.09129698, 0.09129698, 32.27269521], [1516586220000, 0.09129698, 0.0914983, 0.09129698, 0.09149485, 4.87213552], [1516586280000, 0.09129698, 0.09150604, 0.09129698, 0.09149851, 3.31122644], [1516586340000, 0.09148716, 0.09150602, 0.09129698, 0.09129698, 13.39810012], [1516586400000, 0.09129698, 0.0915, 0.09129698, 0.09129698, 3.22668538], [1516586460000, 0.09129698, 0.09156522, 0.09122, 0.09150606, 17.73728609], [1516586520000, 0.09150606, 0.09160483, 0.09122001, 0.09122001, 20.61711369], [1516586580000, 0.09122001, 0.0915, 0.09122001, 0.09122003, 2.51671483], [1516586640000, 0.0914, 0.0915, 0.0914, 0.09140001, 5.09980759], [1516586700000, 0.09141, 0.0915, 0.09123001, 0.0915, 31.56526837], [1516586760000, 0.09123001, 0.0915, 0.09123001, 0.09130001, 6.1889379], [1516586820000, 0.09145, 0.0915, 0.09135, 0.09135001, 3.05190559], [1516586880000, 0.09135001, 0.0915, 0.09131001, 0.09136001, 16.63410517], [1516586940000, 0.09136002, 0.0915, 0.09136001, 0.0915, 14.54774484], [1516587000000, 0.09149999, 0.0915, 0.09135, 0.09136, 18.24447564], [1516587060000, 0.09136, 0.09148473, 0.09135, 0.09137, 10.29988511], [1516587120000, 0.09135, 0.09136999, 0.09135, 0.09135, 4.68273633], [1516587180000, 0.09148, 0.09148758, 0.09135, 0.09135, 5.76862219], [1516587240000, 0.09135, 0.09148758, 0.09133, 0.09135001, 5.02222922], [1516587300000, 0.0914875, 0.09148758, 0.09135001, 0.09148742, 2.2822807], [1516587360000, 0.09148742, 0.09148744, 0.09135001, 0.09135001, 6.60053635], [1516587420000, 0.09135001, 0.09148744, 0.09131, 0.091487, 12.49488761], [1516587480000, 0.091487, 0.09148744, 0.09131, 0.09131, 4.14577325], [1516587540000, 0.09134992, 0.09134992, 0.09131, 0.09133, 17.43185591], [1516587600000, 0.0913499, 0.09135, 0.09133, 0.09135, 7.02054535], [1516587660000, 0.09135, 0.09148758, 0.09135, 0.09135001, 15.08896633], [1516587720000, 0.09135001, 0.09150355, 0.09135, 0.0915, 11.68198312], [1516587780000, 0.09148748, 0.0915, 0.09136, 0.091386, 2.03036084], [1516587840000, 0.091386, 0.091575, 0.091386, 0.091386, 4.48137791], [1516587900000, 0.09156463, 0.091575, 0.091386, 0.0914, 10.25273396], [1516587960000, 0.09145, 0.091575, 0.091386, 0.09145, 18.93664302], [1516588020000, 0.09140005, 0.091575, 0.09140005, 0.09140005, 14.18658142], [1516588080000, 0.091575, 0.091575, 0.09140005, 0.09140005, 11.85286912], [1516588140000, 0.09140005, 0.091401, 0.09140005, 0.09140005, 5.02630515], [1516588200000, 0.09157498, 0.091575, 0.091386, 0.091575, 71.3060567], [1516588260000, 0.09138601, 0.091575, 0.091386, 0.09138601, 11.93585022], [1516588320000, 0.09138601, 0.09157481, 0.09138601, 0.09139001, 5.75732171], [1516588380000, 0.09155649, 0.09157481, 0.091386, 0.09139001, 16.4763365], [1516588440000, 0.09147536, 0.09157499, 0.091386, 0.091386, 108.45215078], [1516588500000, 0.091386, 0.09162169, 0.091386, 0.09146397, 99.80772361], [1516588560000, 0.09154462, 0.09154462, 0.091386, 0.09146397, 25.67631323], [1516588620000, 0.09146397, 0.09163998, 0.091386, 0.09154953, 16.90522154], [1516588680000, 0.09162246, 0.09162246, 0.091386, 0.0914, 9.85104722], [1516588740000, 0.09147994, 0.09162242, 0.091386, 0.09138601, 18.67213183], [1516588800000, 0.0914055, 0.09157657, 0.091386, 0.091386, 59.70894313], [1516588860000, 0.09157657, 0.09159, 0.091386, 0.09157657, 335.16572311], [1516588920000, 0.09157657, 0.09158999, 0.09135001, 0.09135001, 66.10640298], [1516588980000, 0.09135, 0.09155656, 0.091211, 0.09122002, 57.64518632], [1516589040000, 0.09122016, 0.09155652, 0.09100001, 0.091211, 11.86017346], [1516589100000, 0.09100001, 0.09146242, 0.09100001, 0.0912383, 13.720917], [1516589160000, 0.09123831, 0.09142028, 0.09100001, 0.09123831, 6.22548413], [1516589220000, 0.09128197, 0.09142028, 0.09106263, 0.09106263, 139.70125363], [1516589280000, 0.09127654, 0.09136861, 0.09100002, 0.09100008, 2.01224358], [1516589340000, 0.0912, 0.09123829, 0.09100008, 0.09100009, 5.77749007], [1516589400000, 0.09119999, 0.0912383, 0.09100002, 0.09100002, 29.28747265], [1516589460000, 0.09100005, 0.09123831, 0.09100002, 0.09115, 1.45578237], [1516589520000, 0.09115, 0.0912383, 0.09115, 0.09115, 2.23856928], [1516589580000, 0.09115, 0.09115, 0.09100005, 0.09100006, 1.28691928], [1516589640000, 0.09100006, 0.0910001, 0.09100002, 0.09100002, 40.71697669], [1516589700000, 0.09100002, 0.0910002, 0.09100002, 0.09100002, 15.80359967], [1516589760000, 0.09100002, 0.09115, 0.09100001, 0.09115, 28.76605281], [1516589820000, 0.09100002, 0.09156657, 0.09100001, 0.09100001, 32.97300336], [1516589880000, 0.09135758, 0.09149216, 0.09100001, 0.09144468, 12.29450375], [1516589940000, 0.09144468, 0.09144468, 0.09122034, 0.09123831, 74.21143834], [1516590000000, 0.09123831, 0.09123831, 0.09114468, 0.09123831, 6.43818127], [1516590060000, 0.09139357, 0.0914401, 0.09100001, 0.0914401, 88.12339793], [1516590120000, 0.09133168, 0.09144008, 0.091, 0.091, 80.01780853], [1516590180000, 0.091, 0.09137599, 0.09071194, 0.09123831, 32.02573601], [1516590240000, 0.09081015, 0.09134594, 0.09081015, 0.09123831, 9.3639455], [1516590300000, 0.09123831, 0.09134591, 0.09012831, 0.09120949, 120.56744126], [1516590360000, 0.09081013, 0.09106263, 0.0906277, 0.09062772, 0.65868063], [1516590420000, 0.09106263, 0.09123831, 0.09066363, 0.09123461, 28.74045697], [1516590480000, 0.09123461, 0.09127999, 0.09079697, 0.09123461, 31.13839852], [1516590540000, 0.09091552, 0.09134592, 0.09091552, 0.09123831, 5.05411812], [1516590600000, 0.09134592, 0.09134594, 0.09133592, 0.09134593, 43.31760139], [1516590660000, 0.09134592, 0.09136263, 0.09134592, 0.09134593, 18.52988889], [1516590720000, 0.09134593, 0.09134593, 0.09128, 0.09128, 8.78007697], [1516590780000, 0.09132592, 0.09136263, 0.09123832, 0.09123832, 22.52172584], [1516590840000, 0.09123832, 0.09140696, 0.09123832, 0.09134263, 45.30438816], [1516590900000, 0.09134263, 0.09140695, 0.09123832, 0.09123832, 14.00615983], [1516590960000, 0.09123832, 0.09123832, 0.091063, 0.09119998, 271.28945498], [1516591020000, 0.09123832, 0.09140695, 0.09106263, 0.09106263, 5.26455595], [1516591080000, 0.09140695, 0.09140695, 0.09106263, 0.09134263, 4.11449588], [1516591140000, 0.09123831, 0.09140695, 0.0912383, 0.09140694, 3.99226112], [1516591200000, 0.09140694, 0.09140694, 0.09123831, 0.09123831, 1.43377987], [1516591260000, 0.09132954, 0.09139689, 0.09132954, 0.09139689, 3.23906441], [1516591320000, 0.09139689, 0.09140691, 0.09139689, 0.09139689, 26.18894448], [1516591380000, 0.09139689, 0.0914069, 0.09139689, 0.091406, 14.13320315], [1516591440000, 0.091406, 0.09140693, 0.09133, 0.09140689, 77.68693317], [1516591500000, 0.09133, 0.09140689, 0.09123831, 0.09123831, 7.20860213], [1516591560000, 0.091406, 0.09140693, 0.091406, 0.09140692, 8.65010564], [1516591620000, 0.09140692, 0.09159542, 0.09123832, 0.09123832, 56.09002201], [1516591680000, 0.09123831, 0.09123832, 0.09123831, 0.09123832, 1.98684672], [1516591740000, 0.09133939, 0.09133939, 0.09123832, 0.09133939, 0.67409108], [1516591800000, 0.09133939, 0.09138691, 0.09123832, 0.09123832, 17.41917293], [1516591860000, 0.09123833, 0.09138676, 0.09123832, 0.09123832, 31.27088337], [1516591920000, 0.09123832, 0.09131999, 0.09106263, 0.09106263, 19.77667363], [1516591980000, 0.09132499, 0.09132499, 0.09097789, 0.09128499, 7.91088728], [1516592040000, 0.09128499, 0.09128995, 0.09086263, 0.09128497, 25.87121349], [1516592100000, 0.09128992, 0.09128992, 0.09086263, 0.09128037, 3.09731589], [1516592160000, 0.09128037, 0.0912804, 0.09106263, 0.09106263, 5.63383465], [1516592220000, 0.09106263, 0.0912804, 0.09086263, 0.09125499, 4.64594021], [1516592280000, 0.09086263, 0.09122999, 0.09086263, 0.091, 3.32121195], [1516592340000, 0.09123829, 0.09123829, 0.09086281, 0.09123828, 0.73948395], [1516592400000, 0.0909, 0.0912804, 0.09086282, 0.0912804, 9.41457558], [1516592460000, 0.0912804, 0.09128041, 0.0912804, 0.0912804, 57.71299477], [1516592520000, 0.0912804, 0.09128041, 0.09106263, 0.09106263, 4.29099501], [1516592580000, 0.09106263, 0.0914811, 0.09106263, 0.0914811, 3.57082469], [1516592640000, 0.09128496, 0.09149999, 0.091111, 0.09149998, 123.68728119], [1516592700000, 0.09149998, 0.09154999, 0.0911528, 0.09149998, 2.81959758], [1516592760000, 0.09149998, 0.09149998, 0.09149997, 0.09149997, 0.75558159], [1516592820000, 0.09115288, 0.091434, 0.09115288, 0.09115288, 15.52337351], [1516592880000, 0.09133531, 0.09149997, 0.0911528, 0.0912, 4.44022183], [1516592940000, 0.09139967, 0.09149966, 0.0912, 0.09149966, 16.3509874], [1516593000000, 0.09149964, 0.09149997, 0.09115288, 0.09115288, 8.49717843], [1516593060000, 0.09115288, 0.091495, 0.09115263, 0.0911527, 8.43790957], [1516593120000, 0.09148799, 0.09148799, 0.0911527, 0.0913, 12.31079432], [1516593180000, 0.0913, 0.091478, 0.0913, 0.091478, 10.41435765], [1516593240000, 0.0913, 0.09148998, 0.0913, 0.0913, 12.32851303], [1516593300000, 0.09146992, 0.09149996, 0.0913, 0.0913, 22.09930006], [1516593360000, 0.09130002, 0.09130002, 0.0911527, 0.09130002, 0.4505115], [1516593420000, 0.091488, 0.09149498, 0.09130002, 0.09130002, 80.26200765], [1516593480000, 0.091483, 0.09149498, 0.09115263, 0.09149497, 12.04627118], [1516593540000, 0.09149496, 0.09149498, 0.09115263, 0.09149, 3.23111172], [1516593600000, 0.09149, 0.09149, 0.09115263, 0.09115263, 3.47968854], [1516593660000, 0.09148299, 0.09148299, 0.09147, 0.09148269, 3.42315337], [1516593720000, 0.09148269, 0.09148269, 0.0912, 0.0912, 9.99740407], [1516593780000, 0.0912, 0.09148269, 0.09115264, 0.09129925, 96.90021516], [1516593840000, 0.09130382, 0.09130382, 0.09129925, 0.09130382, 8.94753612], [1516593900000, 0.09130381, 0.09149, 0.09129925, 0.09149, 12.26169629], [1516593960000, 0.09148269, 0.09149498, 0.09129925, 0.09130391, 15.46609225], [1516594020000, 0.09148269, 0.09163999, 0.09131, 0.09150001, 30.6848433], [1516594080000, 0.09158541, 0.09168779, 0.091, 0.09159806, 106.69365757], [1516594140000, 0.09168777, 0.091689, 0.09123831, 0.09159806, 27.77671514], [1516594200000, 0.09159806, 0.09168774, 0.09123831, 0.09159805, 7.50644909], [1516594260000, 0.09123831, 0.09166625, 0.09106731, 0.09165625, 13.40942018], [1516594320000, 0.09144414, 0.09163199, 0.09144413, 0.09147045, 30.5437257], [1516594380000, 0.09160698, 0.09164625, 0.09144413, 0.09144414, 21.48291098], [1516594440000, 0.09145, 0.0916, 0.09144413, 0.09144413, 19.58946895], [1516594500000, 0.09125, 0.09144412, 0.09125, 0.0914441, 73.94452504], [1516594560000, 0.0914441, 0.09144412, 0.09108269, 0.091439, 46.75926872], [1516594620000, 0.09108269, 0.091439, 0.09108269, 0.09108269, 10.35021782], [1516594680000, 0.0912, 0.09144411, 0.09114273, 0.09140999, 27.4716949], [1516594740000, 0.09140999, 0.09140999, 0.09114273, 0.09114276, 20.11626108], [1516594800000, 0.09114276, 0.09144413, 0.09114273, 0.0911428, 34.27174237], [1516594860000, 0.091443, 0.09156998, 0.09114285, 0.09123399, 30.101595], [1516594920000, 0.09123399, 0.0916, 0.09123394, 0.0913, 47.09017047], [1516594980000, 0.0913, 0.09154899, 0.09123399, 0.09123404, 3.65323095], [1516595040000, 0.0913, 0.09155163, 0.09123404, 0.09155161, 4.8952972], [1516595100000, 0.09155159, 0.0915516, 0.09123399, 0.0913, 43.16847161], [1516595160000, 0.0913, 0.09139151, 0.09123399, 0.0913, 15.73339082], [1516595220000, 0.0913, 0.09139153, 0.09123399, 0.09123399, 83.19341444], [1516595280000, 0.09124, 0.0913, 0.09123399, 0.091234, 4.02360881], [1516595340000, 0.09123399, 0.09123399, 0.09108269, 0.09119999, 24.91171112], [1516595400000, 0.0910827, 0.0913, 0.09108269, 0.0913, 11.64980874], [1516595460000, 0.09108269, 0.09108269, 0.09106263, 0.09108269, 8.07588968], [1516595520000, 0.09108269, 0.0912, 0.09108269, 0.0912, 1.52443609], [1516595580000, 0.0912, 0.0913, 0.09110272, 0.0912, 8.49453398], [1516595640000, 0.09129999, 0.09133967, 0.0912, 0.09132899, 10.04552638], [1516595700000, 0.0912, 0.09132899, 0.0912, 0.09120001, 2.813074], [1516595760000, 0.09120001, 0.09120001, 0.09108269, 0.09108269, 7.22992126], [1516595820000, 0.09108269, 0.09120001, 0.09108269, 0.09120001, 29.33073928], [1516595880000, 0.09120001, 0.09120001, 0.09108269, 0.09108269, 3.1349803], [1516595940000, 0.09108269, 0.09120001, 0.09106263, 0.0911, 14.74536983], [1516596000000, 0.09120001, 0.09120001, 0.091, 0.091, 3.85583837], [1516596060000, 0.0912, 0.09120001, 0.09100015, 0.09120001, 11.85420812], [1516596120000, 0.0912, 0.0912, 0.09100015, 0.09100015, 6.86414249], [1516596180000, 0.09100015, 0.09115791, 0.09100015, 0.0911579, 4.72752695], [1516596240000, 0.09115791, 0.09115807, 0.0911579, 0.09115807, 3.51843968], [1516596300000, 0.09115807, 0.09115807, 0.091, 0.0911579, 3.92964471], [1516596360000, 0.0911579, 0.0911579, 0.091, 0.0911579, 4.06587139], [1516596420000, 0.0911579, 0.0911579, 0.091, 0.09115785, 2.83534119], [1516596480000, 0.09115785, 0.0911579, 0.09115785, 0.0911579, 17.00927007], [1516596540000, 0.0911579, 0.0911579, 0.0909, 0.09111376, 18.00121977], [1516596600000, 0.0911579, 0.09115791, 0.0909, 0.0909, 10.56241432], [1516596660000, 0.09115791, 0.09115807, 0.09095, 0.09115806, 8.16785043], [1516596720000, 0.09095, 0.09123831, 0.0909065, 0.0912339, 15.49579164], [1516596780000, 0.0912339, 0.09123831, 0.0912339, 0.0912359, 14.24931423], [1516596840000, 0.0912339, 0.0913, 0.0912339, 0.0913, 6.04721918], [1516596900000, 0.0913, 0.09132886, 0.0912359, 0.09132886, 3.52320781], [1516596960000, 0.09132886, 0.091443, 0.09132886, 0.091443, 4.06554481], [1516597020000, 0.091438, 0.091443, 0.09123591, 0.091443, 44.70390459], [1516597080000, 0.091468, 0.091468, 0.09123391, 0.091443, 19.8321882], [1516597140000, 0.091443, 0.091443, 0.09103, 0.09103, 2.47166293], [1516597200000, 0.09144199, 0.09144199, 0.091221, 0.09144199, 7.02205481], [1516597260000, 0.09144199, 0.09144199, 0.09144199, 0.09144199, 3.88731054], [1516597320000, 0.09123001, 0.09144199, 0.09091305, 0.09144198, 6.38336285], [1516597380000, 0.09144198, 0.091442, 0.09144198, 0.09144198, 7.21692951], [1516597440000, 0.091442, 0.091442, 0.09092182, 0.091442, 23.06934008], [1516597500000, 0.09144198, 0.091442, 0.09106263, 0.09106263, 3.99514212], [1516597560000, 0.09144198, 0.091442, 0.09106279, 0.091442, 7.77708118], [1516597620000, 0.091442, 0.091442, 0.091442, 0.091442, 0.62257885], [1516597680000, 0.091441, 0.091441, 0.0910631, 0.091441, 6.15791897], [1516597740000, 0.091441, 0.091441, 0.09112118, 0.091441, 13.51558708], [1516597800000, 0.091441, 0.091441, 0.0912, 0.091441, 5.45634576], [1516597860000, 0.0914, 0.091442, 0.09120002, 0.091442, 51.99659678], [1516597920000, 0.091442, 0.091442, 0.0913, 0.091442, 2.80787639], [1516597980000, 0.091442, 0.091442, 0.0913, 0.09130001, 57.07758016], [1516598040000, 0.09143001, 0.09143001, 0.09143001, 0.09143001, 0.04438363], [1516598100000, 0.09143, 0.09143, 0.09143, 0.09143, 0.84525685], [1516598160000, 0.09143, 0.09143, 0.0913778, 0.0914299, 4.1254001], [1516598220000, 0.09143, 0.09143, 0.09142989, 0.09142989, 9.62156522], [1516598280000, 0.09142989, 0.09143, 0.09120001, 0.09142989, 13.80136678], [1516598340000, 0.09143, 0.09143, 0.09142989, 0.09143, 2.81428047], [1516598400000, 0.09143, 0.09143, 0.09121, 0.09142989, 3.09688272], [1516598460000, 0.09121, 0.09143, 0.0912, 0.09143, 6.84226975], [1516598520000, 0.09143, 0.09143, 0.09142989, 0.09143, 1.72452269], [1516598580000, 0.09142989, 0.09143, 0.0913, 0.0913501, 4.23012003], [1516598640000, 0.0913501, 0.09143, 0.091204, 0.09143, 12.06312219], [1516598700000, 0.09143, 0.09143001, 0.091204, 0.09143, 54.87122119], [1516598760000, 0.09143001, 0.091442, 0.09120401, 0.09142817, 30.63544736], [1516598820000, 0.09142817, 0.09143, 0.09120401, 0.09142817, 17.64584927], [1516598880000, 0.09143, 0.09143, 0.09142817, 0.09142817, 5.88949404], [1516598940000, 0.091429, 0.09143, 0.09142817, 0.0914282, 5.61633929], [1516599000000, 0.0914282, 0.0914282, 0.09142817, 0.09142817, 2.07326041], [1516599060000, 0.09142817, 0.0914282, 0.09142817, 0.09142819, 3.9466992], [1516599120000, 0.09142819, 0.09143, 0.09142817, 0.09143, 28.84854542], [1516599180000, 0.09143, 0.091442, 0.09130693, 0.09130693, 7.99641537], [1516599240000, 0.09142817, 0.091442, 0.09130692, 0.09134, 37.43182916], [1516599300000, 0.091442, 0.091443, 0.09120401, 0.09120401, 58.97445842], [1516599360000, 0.091443, 0.091443, 0.09129069, 0.091443, 27.84283718], [1516599420000, 0.091443, 0.091468, 0.0912907, 0.0912907, 7.07465378], [1516599480000, 0.0912907, 0.091468, 0.09126701, 0.09126701, 71.3976829], [1516599540000, 0.09126701, 0.09126701, 0.0912, 0.0912, 18.70657464], [1516599600000, 0.09119, 0.091468, 0.0911, 0.09112281, 54.50538494], [1516599660000, 0.09110868, 0.09152, 0.09106263, 0.0911, 64.90746826], [1516599720000, 0.09107825, 0.091593, 0.0909711, 0.0909711, 119.026749], [1516599780000, 0.0909711, 0.09159999, 0.0909, 0.0909, 201.59412203], [1516599840000, 0.0909, 0.09153196, 0.09089999, 0.0909, 216.19215793], [1516599900000, 0.0909, 0.0909, 0.09086263, 0.09086263, 180.78850493], [1516599960000, 0.09086955, 0.09123831, 0.09081014, 0.09123831, 181.35076733], [1516600020000, 0.09147686, 0.09159, 0.09080005, 0.09153581, 141.3851344], [1516600080000, 0.09104641, 0.09145028, 0.09080003, 0.0909, 195.05005378], [1516600140000, 0.0909, 0.09112602, 0.09089411, 0.09112602, 129.97169163], [1516600200000, 0.09112601, 0.0915358, 0.09089999, 0.09089999, 87.77529466], [1516600260000, 0.09089999, 0.0909, 0.09089861, 0.0909, 87.00474283], [1516600320000, 0.0909, 0.0914, 0.09089964, 0.0909, 215.49595158], [1516600380000, 0.0909, 0.09153578, 0.09089411, 0.09153577, 60.05324565], [1516600440000, 0.09153577, 0.09159, 0.0911042, 0.09122215, 2.63959191], [1516600500000, 0.09149508, 0.0915896, 0.09114743, 0.09121551, 10.38110818], [1516600560000, 0.0914947, 0.0914948, 0.09121551, 0.09121551, 4.54421034], [1516600620000, 0.0914948, 0.09149508, 0.09121551, 0.0914, 3.62629572], [1516600680000, 0.0914, 0.09149472, 0.09121553, 0.09121553, 4.57510852], [1516600740000, 0.0914, 0.09163399, 0.0914, 0.09163399, 22.65909882], [1516600800000, 0.09163399, 0.091634, 0.09163399, 0.091634, 7.5095458], [1516600860000, 0.0916416, 0.0917, 0.09121551, 0.0916416, 37.38798376], [1516600920000, 0.09143, 0.09143, 0.09125, 0.09143, 4.57430311], [1516600980000, 0.09125, 0.09143, 0.09125, 0.09143, 34.92954571], [1516601040000, 0.09143, 0.09143, 0.09135, 0.09135, 2.3447415], [1516601100000, 0.09135, 0.09169997, 0.09121555, 0.09135, 7.72560863], [1516601160000, 0.09169996, 0.0917, 0.09137924, 0.0917, 10.40340993], [1516601220000, 0.09144135, 0.09169, 0.0914413, 0.09168999, 0.72520556], [1516601280000, 0.09168998, 0.09168999, 0.09135, 0.09135, 5.07310027], [1516601340000, 0.09144002, 0.09169997, 0.09144, 0.09169997, 31.10232054], [1516601400000, 0.09168998, 0.09169997, 0.09144002, 0.09169997, 5.39482702], [1516601460000, 0.09144, 0.09169982, 0.09121555, 0.09144, 26.84214481], [1516601520000, 0.09144, 0.09166892, 0.09121555, 0.09121555, 18.37529571], [1516601580000, 0.09121555, 0.09166875, 0.09121555, 0.09166873, 0.79428207], [1516601640000, 0.09166871, 0.09166873, 0.09121555, 0.09121556, 6.39764568], [1516601700000, 0.09166871, 0.09166871, 0.09121556, 0.09121556, 1.38852322], [1516601760000, 0.09121556, 0.09166865, 0.09121556, 0.09159993, 5.10340217], [1516601820000, 0.09159993, 0.09166872, 0.0915, 0.0916687, 3.04230445], [1516601880000, 0.09166872, 0.09169965, 0.0916687, 0.0916687, 7.86681289], [1516601940000, 0.09167301, 0.09167302, 0.091241, 0.091241, 27.55523741], [1516602000000, 0.09134809, 0.09167301, 0.091241, 0.09166843, 1.16952475], [1516602060000, 0.09166843, 0.09167267, 0.091398, 0.0914, 5.95924592], [1516602120000, 0.09166842, 0.09166842, 0.0914, 0.0914, 65.21266139], [1516602180000, 0.091398, 0.0914, 0.09121556, 0.09121556, 19.28276069], [1516602240000, 0.09121556, 0.09137737, 0.09121556, 0.09137736, 7.76145909], [1516602300000, 0.09137736, 0.0914, 0.09137736, 0.09137736, 36.59344661], [1516602360000, 0.09137736, 0.0914, 0.09121556, 0.09121556, 14.5843593], [1516602420000, 0.09121556, 0.0914, 0.09121556, 0.09121556, 13.47851214], [1516602480000, 0.0914, 0.0914, 0.09121556, 0.0914, 15.76644987], [1516602540000, 0.0914, 0.0914, 0.09121556, 0.09121556, 22.51139121], [1516602600000, 0.09121556, 0.0914, 0.09101831, 0.0911, 53.10006317], [1516602660000, 0.09139996, 0.09139996, 0.0911, 0.0913801, 6.49268663], [1516602720000, 0.09110001, 0.09137958, 0.09110001, 0.09137958, 3.70916347], [1516602780000, 0.09110001, 0.09138, 0.09110001, 0.09110001, 3.4243719], [1516602840000, 0.09110001, 0.09139995, 0.091, 0.09138, 26.65541896], [1516602900000, 0.09110001, 0.09138, 0.0909, 0.09121475, 34.40498357], [1516602960000, 0.0909, 0.09124611, 0.0909, 0.0909, 15.42870152], [1516603020000, 0.0909, 0.091379, 0.0909, 0.09090005, 4.19428784], [1516603080000, 0.09090005, 0.09166842, 0.09090005, 0.09159375, 58.64161952], [1516603140000, 0.09123832, 0.09166841, 0.09106263, 0.09154033, 91.38871478], [1516603200000, 0.09153866, 0.09166837, 0.09095468, 0.09153364, 82.89510554], [1516603260000, 0.09153364, 0.09161656, 0.09090006, 0.09096632, 14.6038497], [1516603320000, 0.09096632, 0.0915336, 0.09096632, 0.09147499, 4.9575654], [1516603380000, 0.091063, 0.09147499, 0.09106, 0.09147495, 4.52026791], [1516603440000, 0.09147495, 0.09153364, 0.09147495, 0.09147499, 29.34293309], [1516603500000, 0.09147499, 0.09153364, 0.09112355, 0.09112356, 11.9626592], [1516603560000, 0.09147496, 0.09153364, 0.0911236, 0.09150213, 2.83375983], [1516603620000, 0.09150213, 0.09153364, 0.09150213, 0.09150213, 5.00793806], [1516603680000, 0.09150213, 0.09152, 0.0911236, 0.0911236, 9.55574252], [1516603740000, 0.09152, 0.09161656, 0.09121472, 0.09159997, 11.469897], [1516603800000, 0.09121472, 0.09159995, 0.0911236, 0.09157782, 3.02099147], [1516603860000, 0.09121472, 0.09151111, 0.09121472, 0.09121472, 2.76742775], [1516603920000, 0.09150929, 0.09150929, 0.09121472, 0.09121472, 12.12220507], [1516603980000, 0.09121472, 0.09157778, 0.09121472, 0.09157777, 1.4983265], [1516604040000, 0.09157777, 0.09157777, 0.09121472, 0.09157762, 9.50655351], [1516604100000, 0.09157763, 0.09157777, 0.09121472, 0.0915776, 9.04490118], [1516604160000, 0.09121472, 0.0915778, 0.0911236, 0.0911236, 6.88100586], [1516604220000, 0.09145, 0.09145, 0.0914, 0.0914, 1.40698397], [1516604280000, 0.09145, 0.09145, 0.0911, 0.0911, 3.35246982], [1516604340000, 0.09110001, 0.09144, 0.09110001, 0.09110001, 1.44160778], [1516604400000, 0.09110001, 0.09148999, 0.09110001, 0.09110001, 8.92602857], [1516604460000, 0.09148515, 0.09148998, 0.09110001, 0.09148998, 38.39428462], [1516604520000, 0.09148997, 0.09148997, 0.09110379, 0.09110379, 0.859875], [1516604580000, 0.09110379, 0.09110379, 0.09110379, 0.09110379, 0.10627079], [1516604640000, 0.091488, 0.09148994, 0.09110012, 0.09110012, 15.04181283], [1516604700000, 0.09131389, 0.0914879, 0.09110003, 0.09110003, 4.56329227], [1516604760000, 0.09148682, 0.09148682, 0.09110003, 0.09110003, 1.04892512], [1516604820000, 0.09110003, 0.09148, 0.09110003, 0.09147989, 9.04070424], [1516604880000, 0.09147989, 0.09147989, 0.09110003, 0.0914798, 28.90175766], [1516604940000, 0.0912, 0.0914798, 0.09110087, 0.0914798, 16.28452193], [1516605000000, 0.09147, 0.09147, 0.0912, 0.09146999, 4.35236311], [1516605060000, 0.0912, 0.09147, 0.0912, 0.0912, 10.52244981], [1516605120000, 0.09145, 0.09145, 0.0912, 0.09145, 3.1529143], [1516605180000, 0.0912, 0.09145, 0.0912, 0.0913, 9.9030027], [1516605240000, 0.09145, 0.09147, 0.0913, 0.09147, 8.70693643], [1516605300000, 0.09147, 0.09147, 0.09110015, 0.09147, 6.67735702], [1516605360000, 0.09147, 0.09148682, 0.09121594, 0.09121594, 6.50802673], [1516605420000, 0.09121594, 0.091475, 0.09121594, 0.091475, 0.09684046], [1516605480000, 0.091475, 0.091475, 0.0912159, 0.0912159, 5.22686684], [1516605540000, 0.091474, 0.091475, 0.09122, 0.091475, 4.63162826], [1516605600000, 0.091474, 0.091475, 0.09147399, 0.09147399, 11.37146327], [1516605660000, 0.09147399, 0.0915778, 0.09147399, 0.0915778, 30.71513799], [1516605720000, 0.0915778, 0.09159, 0.09147399, 0.09158997, 26.96330314], [1516605780000, 0.09147399, 0.09159988, 0.09147399, 0.09158998, 17.52170927], [1516605840000, 0.09158998, 0.0915999, 0.09147399, 0.09147399, 7.84309412], [1516605900000, 0.09147399, 0.09158998, 0.09147399, 0.09158998, 3.81477431], [1516605960000, 0.09158998, 0.09158998, 0.09147399, 0.09158993, 33.08693072], [1516606020000, 0.09158998, 0.09158998, 0.09147399, 0.09158993, 5.84393574], [1516606080000, 0.09147399, 0.09158993, 0.09147399, 0.09147399, 4.1506466], [1516606140000, 0.09147399, 0.09158993, 0.09147399, 0.091474, 13.01280407], [1516606200000, 0.09157993, 0.09158993, 0.09147399, 0.091474, 9.97888176], [1516606260000, 0.091474, 0.091474, 0.09147399, 0.09147399, 8.90142443], [1516606320000, 0.09158993, 0.09158993, 0.09110221, 0.09158975, 13.44954648], [1516606380000, 0.09158975, 0.09158998, 0.09119557, 0.09158973, 18.33092043], [1516606440000, 0.09158972, 0.09158998, 0.09121503, 0.0915, 20.95432562], [1516606500000, 0.0915, 0.09158998, 0.0915, 0.09158998, 10.21304059], [1516606560000, 0.09158998, 0.09158998, 0.09127199, 0.09158998, 4.91617796], [1516606620000, 0.09158998, 0.09158998, 0.091272, 0.09158998, 33.19042634], [1516606680000, 0.09158998, 0.09158998, 0.091272, 0.09158997, 33.38086622], [1516606740000, 0.09158997, 0.09158998, 0.0914, 0.09158998, 17.17976745], [1516606800000, 0.09158998, 0.09161667, 0.0914, 0.0916, 30.98953862], [1516606860000, 0.09159999, 0.0916, 0.0914, 0.09140007, 70.35111792], [1516606920000, 0.09140007, 0.0915999, 0.09127199, 0.0914001, 26.70673508], [1516606980000, 0.09138187, 0.09154996, 0.09127199, 0.09127199, 40.93220832], [1516607040000, 0.09127199, 0.09146999, 0.09127199, 0.09127199, 27.70776422], [1516607100000, 0.09127199, 0.09146989, 0.09127199, 0.09133065, 4.94144869], [1516607160000, 0.09146985, 0.09146985, 0.091272, 0.09133065, 12.20257702], [1516607220000, 0.09133065, 0.09133065, 0.091272, 0.09133064, 3.34951842], [1516607280000, 0.09133065, 0.09133065, 0.0913, 0.0913, 3.11134405], [1516607340000, 0.09133065, 0.09133065, 0.09110016, 0.091305, 62.47658183], [1516607400000, 0.091305, 0.091305, 0.09110001, 0.09130497, 6.45803735], [1516607460000, 0.09129999, 0.09130498, 0.09110001, 0.09110001, 27.63510851], [1516607520000, 0.0911, 0.091305, 0.0911, 0.091305, 3.21249725], [1516607580000, 0.091305, 0.09144988, 0.09110003, 0.09110003, 12.9554141], [1516607640000, 0.09144987, 0.09144987, 0.091305, 0.091305, 28.22441485], [1516607700000, 0.09144985, 0.09147999, 0.091305, 0.0914498, 39.04966644], [1516607760000, 0.09130501, 0.09162, 0.09120252, 0.09147999, 37.31260441], [1516607820000, 0.09147999, 0.09147999, 0.09110003, 0.09147997, 1.35652258], [1516607880000, 0.09147995, 0.09147995, 0.09110003, 0.09145, 5.40607917], [1516607940000, 0.09147999, 0.09147999, 0.09145, 0.09145, 12.76592391], [1516608000000, 0.09147999, 0.09147999, 0.09111832, 0.09114018, 7.61669992], [1516608060000, 0.09114018, 0.09147999, 0.09111833, 0.09147998, 15.31340014], [1516608120000, 0.09134499, 0.09147999, 0.09134499, 0.09134499, 9.05747556], [1516608180000, 0.09134499, 0.09147998, 0.0912, 0.0912, 3.68330292], [1516608240000, 0.0912, 0.09147998, 0.0912, 0.09147994, 1.26397492], [1516608300000, 0.09147994, 0.09147999, 0.0912, 0.0912, 7.67415884], [1516608360000, 0.0912, 0.09147999, 0.0912, 0.09147999, 4.87575761], [1516608420000, 0.09147999, 0.09147999, 0.09111513, 0.09111513, 11.44174509], [1516608480000, 0.09111513, 0.09147999, 0.0911, 0.09147999, 1.28516762], [1516608540000, 0.09110002, 0.09147999, 0.09110002, 0.09147999, 3.47503121], [1516608600000, 0.09147999, 0.0916, 0.0911, 0.0911, 49.16995303], [1516608660000, 0.09147999, 0.09157998, 0.0911, 0.09157998, 11.84191904], [1516608720000, 0.09157997, 0.09161996, 0.09102, 0.09135468, 68.64571144], [1516608780000, 0.09147509, 0.0916, 0.09101763, 0.09159401, 36.06606729], [1516608840000, 0.09159401, 0.09159996, 0.09101763, 0.0910542, 5.92605039], [1516608900000, 0.09148629, 0.09157434, 0.0910542, 0.09123831, 3.83693914], [1516608960000, 0.09155494, 0.09156516, 0.09138971, 0.09141679, 6.29926117], [1516609020000, 0.09138971, 0.09156497, 0.09138971, 0.09141678, 6.50144553], [1516609080000, 0.09141678, 0.09156497, 0.09138971, 0.09138971, 10.39045098], [1516609140000, 0.09138971, 0.0914, 0.0911, 0.09138971, 28.13419976], [1516609200000, 0.0911, 0.09141678, 0.09108001, 0.09141678, 12.91199052], [1516609260000, 0.0911, 0.0915649, 0.091009, 0.09138971, 21.76200649], [1516609320000, 0.0915649, 0.09156497, 0.09138971, 0.09138971, 9.97017142], [1516609380000, 0.09156497, 0.09156518, 0.0913, 0.09156518, 7.05141016], [1516609440000, 0.09156518, 0.0916, 0.09110014, 0.09137959, 32.64993253], [1516609500000, 0.09137959, 0.09182999, 0.09110374, 0.0917342, 101.21795644], [1516609560000, 0.0917342, 0.0917342, 0.091109, 0.09114901, 21.79743506], [1516609620000, 0.09114901, 0.09169, 0.09114901, 0.09169, 2.20151732], [1516609680000, 0.091154, 0.09149999, 0.091154, 0.09115401, 1.79734096], [1516609740000, 0.09148998, 0.0915, 0.091154, 0.0915, 15.89618081], [1516609800000, 0.09148998, 0.0915, 0.091154, 0.09149998, 27.11265466], [1516609860000, 0.09149997, 0.09149997, 0.091149, 0.09149997, 4.20229519], [1516609920000, 0.09114999, 0.0915, 0.09114999, 0.09115, 4.60141783], [1516609980000, 0.0915, 0.0915, 0.09114899, 0.0915, 144.31912368], [1516610040000, 0.09116821, 0.0915, 0.09116821, 0.0915, 30.87987384], [1516610100000, 0.0915, 0.0915, 0.09144, 0.09144, 105.15136694], [1516610160000, 0.09149999, 0.0915, 0.09149999, 0.0915, 20.49975274], [1516610220000, 0.0915, 0.09184436, 0.09149999, 0.09183, 60.45157239], [1516610280000, 0.09183, 0.09185, 0.0917342, 0.09173421, 11.44593702], [1516610340000, 0.09181955, 0.09183299, 0.09173421, 0.09183299, 15.15011483], [1516610400000, 0.091833, 0.09184859, 0.09174421, 0.09174422, 10.13875813], [1516610460000, 0.09174422, 0.09184852, 0.0917342, 0.0917342, 59.33145521], [1516610520000, 0.0917342, 0.0917342, 0.09150001, 0.09150001, 9.21956891], [1516610580000, 0.0917342, 0.0917342, 0.09150003, 0.0917342, 15.35592686], [1516610640000, 0.0917342, 0.0917342, 0.09150003, 0.0917342, 3.36251949], [1516610700000, 0.09173425, 0.0918485, 0.09161691, 0.09161691, 4.87725565], [1516610760000, 0.09161691, 0.0918485, 0.09161691, 0.09173425, 12.28803862], [1516610820000, 0.0918485, 0.09187167, 0.09173425, 0.09173425, 11.27844919], [1516610880000, 0.09184829, 0.0918483, 0.09150006, 0.09184, 14.66434859], [1516610940000, 0.09184, 0.09184, 0.09150009, 0.09173425, 1.19822213], [1516611000000, 0.09173425, 0.09184, 0.09150009, 0.09183084, 7.24989083], [1516611060000, 0.09183084, 0.09183084, 0.09150003, 0.0915001, 12.10415318], [1516611120000, 0.0915001, 0.0915001, 0.09150003, 0.0915001, 12.03001124], [1516611180000, 0.09150003, 0.0915001, 0.09150003, 0.0915001, 3.23349077], [1516611240000, 0.0915001, 0.0915001, 0.09150001, 0.0915001, 11.74475746], [1516611300000, 0.0915001, 0.09183072, 0.09150001, 0.09159169, 17.2104331], [1516611360000, 0.09159169, 0.09183026, 0.09159169, 0.09161, 0.85689325], [1516611420000, 0.09183025, 0.09183026, 0.09161, 0.09161, 20.78692145], [1516611480000, 0.09179998, 0.09179998, 0.09161, 0.09161009, 4.24017976], [1516611540000, 0.09161009, 0.09161009, 0.0916001, 0.09161009, 8.08402289], [1516611600000, 0.09161009, 0.09178656, 0.0915, 0.09178656, 24.82531985], [1516611660000, 0.0916101, 0.0918, 0.09161009, 0.0916101, 1.51301624], [1516611720000, 0.09179999, 0.09179999, 0.0915, 0.0915, 45.49419713], [1516611780000, 0.0915, 0.09150001, 0.09140861, 0.09140861, 25.38567132], [1516611840000, 0.09134576, 0.0914, 0.09125505, 0.0913087, 63.54034952], [1516611900000, 0.0913087, 0.09162875, 0.09130191, 0.09131729, 21.3880948], [1516611960000, 0.09131729, 0.09162875, 0.09121876, 0.09122607, 98.07854413], [1516612020000, 0.09122607, 0.09179999, 0.09119027, 0.09179999, 110.58430657], [1516612080000, 0.09179999, 0.0918, 0.09162875, 0.09170829, 11.29392464], [1516612140000, 0.09179999, 0.09179999, 0.09124192, 0.09155845, 10.2916113], [1516612200000, 0.09155845, 0.09162874, 0.091288, 0.09153721, 17.26652976], [1516612260000, 0.09153, 0.0918, 0.09134891, 0.09134891, 1.95685553], [1516612320000, 0.09144577, 0.0918, 0.09125766, 0.09125766, 73.20642977], [1516612380000, 0.09125766, 0.0918, 0.09119027, 0.09165461, 94.33105825], [1516612440000, 0.09165461, 0.0918, 0.09119033, 0.09178924, 106.34871853], [1516612500000, 0.09164195, 0.09183, 0.09109931, 0.09159731, 118.40002706], [1516612560000, 0.09183, 0.09183, 0.09110386, 0.09119038, 109.64526815], [1516612620000, 0.09150581, 0.09150581, 0.09109929, 0.09109929, 98.50462283], [1516612680000, 0.09109929, 0.09150581, 0.09109929, 0.0910993, 74.03541784], [1516612740000, 0.0910993, 0.09150581, 0.0910083, 0.09150581, 103.92290509], [1516612800000, 0.09150581, 0.09150581, 0.09100831, 0.0912088, 27.29452567], [1516612860000, 0.0912088, 0.09150581, 0.09109932, 0.0915058, 71.79395613], [1516612920000, 0.09122884, 0.09150579, 0.09109932, 0.09109932, 60.18748147], [1516612980000, 0.0915, 0.0915, 0.09113771, 0.09115593, 46.4532084], [1516613040000, 0.09150579, 0.09150581, 0.09109932, 0.09150581, 39.97380587], [1516613100000, 0.09150581, 0.09150581, 0.09116591, 0.09141439, 19.21549672], [1516613160000, 0.09141439, 0.09150581, 0.0911758, 0.09146764, 30.21315936], [1516613220000, 0.09146764, 0.09146764, 0.09132307, 0.09132307, 13.59311709], [1516613280000, 0.091267, 0.09150581, 0.09117582, 0.09132306, 58.68777493], [1516613340000, 0.09132306, 0.09150581, 0.09123183, 0.09123183, 82.1883243], [1516613400000, 0.09123182, 0.09150581, 0.09117581, 0.0912088, 77.52944218], [1516613460000, 0.0912088, 0.09162875, 0.09114069, 0.09162875, 118.42367997], [1516613520000, 0.091628, 0.09171, 0.09153646, 0.09153647, 15.99113804], [1516613580000, 0.09153646, 0.09165583, 0.09109931, 0.09113302, 73.87137976], [1516613640000, 0.09153646, 0.09162875, 0.09122414, 0.09122414, 13.41719444], [1516613700000, 0.09122414, 0.09160368, 0.09105177, 0.09160368, 55.35151593], [1516613760000, 0.09160368, 0.09162875, 0.09151288, 0.09151288, 64.4968773], [1516613820000, 0.0915612, 0.09162875, 0.09151288, 0.0915612, 44.18310621], [1516613880000, 0.09162874, 0.09162875, 0.09122414, 0.09122414, 50.98214272], [1516613940000, 0.09122414, 0.0916, 0.09122414, 0.0914086, 19.15075485], [1516614000000, 0.0914086, 0.0914086, 0.09113387, 0.0914086, 45.09286144], [1516614060000, 0.0914086, 0.09162875, 0.09122489, 0.09162875, 48.0168843], [1516614120000, 0.09162875, 0.09171, 0.09122488, 0.09171, 45.09038803], [1516614180000, 0.09171, 0.09171, 0.09166, 0.09166, 28.30103237], [1516614240000, 0.09167, 0.0918, 0.09122488, 0.09122488, 27.81466296], [1516614300000, 0.09161839, 0.09161841, 0.09122488, 0.09161838, 33.64328584], [1516614360000, 0.09129357, 0.09161839, 0.09122488, 0.09122488, 4.5509396], [1516614420000, 0.09122488, 0.09161837, 0.09122488, 0.091617, 19.59620952], [1516614480000, 0.091617, 0.09161838, 0.0913, 0.09161838, 6.5497252], [1516614540000, 0.09161701, 0.09161701, 0.091617, 0.09161701, 6.78161392], [1516614600000, 0.09161701, 0.09161838, 0.09130001, 0.09130001, 12.17192421], [1516614660000, 0.09161701, 0.0918, 0.0913, 0.0916181, 8.72290875], [1516614720000, 0.09161702, 0.09183, 0.09161702, 0.09161702, 12.37600332], [1516614780000, 0.0916181, 0.0916181, 0.09161702, 0.0916181, 2.88050422], [1516614840000, 0.0916181, 0.09166, 0.09133, 0.09133001, 9.98691457], [1516614900000, 0.09161809, 0.09183, 0.09161809, 0.09183, 10.77989021], [1516614960000, 0.09173323, 0.09183032, 0.0916181, 0.09183031, 23.21356217], [1516615020000, 0.091768, 0.09183032, 0.09161809, 0.091768, 16.22800385], [1516615080000, 0.09177072, 0.09183032, 0.09161809, 0.091619, 10.92523537], [1516615140000, 0.09176798, 0.0918303, 0.09161809, 0.09161809, 12.37161966], [1516615200000, 0.09161809, 0.0918483, 0.09161809, 0.09184084, 132.83874427], [1516615260000, 0.09184084, 0.0918483, 0.09184, 0.09184, 91.87660074], [1516615320000, 0.09184837, 0.09184837, 0.09184, 0.09184, 27.26394002], [1516615380000, 0.0918389, 0.09184838, 0.091768, 0.091768, 8.54110483], [1516615440000, 0.09184836, 0.09184838, 0.091768, 0.09184837, 6.90489425], [1516615500000, 0.09184837, 0.09185, 0.09161809, 0.09161809, 36.39830997], [1516615560000, 0.09184837, 0.09184837, 0.09161809, 0.0916181, 3.11200803], [1516615620000, 0.0916181, 0.0916181, 0.09161809, 0.0916181, 3.44826148], [1516615680000, 0.09161809, 0.09184997, 0.09161809, 0.09184997, 19.93236261], [1516615740000, 0.09184984, 0.09184984, 0.09161809, 0.0916181, 19.87335493], [1516615800000, 0.0916181, 0.09184974, 0.09161809, 0.09184844, 13.09359639], [1516615860000, 0.09173891, 0.09184841, 0.0916181, 0.0916181, 22.64642394], [1516615920000, 0.0916181, 0.0916181, 0.09133001, 0.0916181, 26.74837041], [1516615980000, 0.09139679, 0.0916181, 0.09133001, 0.09133002, 5.2407933], [1516616040000, 0.0915, 0.09153002, 0.09133002, 0.09133002, 21.92099555], [1516616100000, 0.09153002, 0.09153002, 0.09133002, 0.09151457, 11.47268427], [1516616160000, 0.09151457, 0.09153002, 0.09151457, 0.09151457, 26.20933854], [1516616220000, 0.09151457, 0.09153002, 0.09151457, 0.09153002, 8.22294719], [1516616280000, 0.09152999, 0.09153002, 0.09152161, 0.09153002, 34.93192359], [1516616340000, 0.09153002, 0.09153003, 0.09151457, 0.09153001, 13.85597602], [1516616400000, 0.09153002, 0.09153003, 0.09153002, 0.09153003, 8.26379264], [1516616460000, 0.09153003, 0.0916, 0.09151457, 0.0916, 25.08672366], [1516616520000, 0.09159993, 0.0916, 0.09155337, 0.09155337, 1.60483785], [1516616580000, 0.0916, 0.0916, 0.09153003, 0.09155337, 7.62736902], [1516616640000, 0.09155337, 0.0916, 0.09153003, 0.0916, 8.41392382], [1516616700000, 0.0915534, 0.0916, 0.0915534, 0.091566, 4.47957133], [1516616760000, 0.0916, 0.0916, 0.09155341, 0.0916, 19.00554246], [1516616820000, 0.0916, 0.09184997, 0.09155341, 0.09184997, 47.13498612], [1516616880000, 0.09184997, 0.09184997, 0.091555, 0.09162492, 4.51035418], [1516616940000, 0.09162493, 0.09184996, 0.091555, 0.09184995, 3.7801962], [1516617000000, 0.09184996, 0.09184996, 0.09171664, 0.09184996, 4.44210118], [1516617060000, 0.0918, 0.09184996, 0.091555, 0.09184995, 14.11155065], [1516617120000, 0.09184995, 0.09184997, 0.0916, 0.09184996, 19.08091788], [1516617180000, 0.09184997, 0.09184997, 0.09155341, 0.09184997, 8.96537078], [1516617240000, 0.09184996, 0.09184997, 0.0918, 0.0918, 3.73854921], [1516617300000, 0.0918, 0.09184997, 0.0918, 0.09182, 2.42023186], [1516617360000, 0.09182, 0.09184997, 0.09155341, 0.09184997, 35.92964278], [1516617420000, 0.09184997, 0.09184997, 0.0915534, 0.09184997, 64.45928133], [1516617480000, 0.0918, 0.09184997, 0.09130005, 0.09133001, 666.59925003], [1516617540000, 0.09133001, 0.09133001, 0.0913, 0.09133001, 193.68688494], [1516617600000, 0.09133001, 0.09133001, 0.09133, 0.09133001, 178.82115668], [1516617660000, 0.09133001, 0.09133001, 0.09130001, 0.09133001, 250.52846779], [1516617720000, 0.09133001, 0.09133001, 0.09133, 0.09133001, 213.14305028], [1516617780000, 0.09133001, 0.0918, 0.09133, 0.0918, 62.40582089], [1516617840000, 0.0918, 0.09187167, 0.0918, 0.09187167, 34.69621472], [1516617900000, 0.09187167, 0.0918745, 0.09184997, 0.0918745, 8.00683079], [1516617960000, 0.09187167, 0.0918745, 0.0918, 0.0918, 23.1945422], [1516618020000, 0.0918, 0.09188, 0.0918, 0.09188, 52.75675138], [1516618080000, 0.09188, 0.09188167, 0.0918, 0.09188167, 14.80010865], [1516618140000, 0.0918, 0.0919, 0.0918, 0.0919, 19.15454564], [1516618200000, 0.0919, 0.09195, 0.0918, 0.09195, 18.28633381], [1516618260000, 0.09195, 0.09195, 0.09184997, 0.0919, 7.20203339], [1516618320000, 0.0919, 0.09195, 0.09184997, 0.09195, 7.22736988], [1516618380000, 0.09195, 0.092, 0.0919, 0.092, 18.33184251], [1516618440000, 0.09199999, 0.092, 0.09184998, 0.091989, 14.58639157], [1516618500000, 0.091989, 0.092, 0.0918, 0.092, 28.6923127], [1516618560000, 0.09199998, 0.092, 0.0918, 0.09199998, 8.20935044], [1516618620000, 0.09199998, 0.092, 0.09190002, 0.092, 11.38065517], [1516618680000, 0.092, 0.092, 0.0919999, 0.0919999, 12.86680587], [1516618740000, 0.092, 0.092, 0.09190002, 0.0919999, 23.44040011], [1516618800000, 0.0919999, 0.092, 0.09173368, 0.0919999, 60.27666566], [1516618860000, 0.0919999, 0.0919999, 0.09173368, 0.09173368, 2.49451667], [1516618920000, 0.09197999, 0.092, 0.09173368, 0.0918, 32.60284506], [1516618980000, 0.09173368, 0.092, 0.09173368, 0.092, 16.5532114], [1516619040000, 0.092, 0.092, 0.09175204, 0.09175204, 7.9531649], [1516619100000, 0.09175204, 0.092, 0.0917337, 0.092, 11.95381076], [1516619160000, 0.09177204, 0.092, 0.09177204, 0.092, 3.89514001], [1516619220000, 0.092, 0.092, 0.09177204, 0.0919, 18.7638531], [1516619280000, 0.09190205, 0.092, 0.09190205, 0.09190205, 16.71380698], [1516619340000, 0.0919, 0.09190205, 0.09177206, 0.09190205, 12.29380897], [1516619400000, 0.09177206, 0.09190205, 0.09177205, 0.09177207, 11.64095745], [1516619460000, 0.09190205, 0.09190205, 0.09177205, 0.091902, 45.01012731], [1516619520000, 0.091902, 0.09190205, 0.09177209, 0.09190205, 18.53594085], [1516619580000, 0.09190205, 0.09190205, 0.09190205, 0.09190205, 13.75041734], [1516619640000, 0.09190205, 0.09190205, 0.09177209, 0.09190203, 3.09116074], [1516619700000, 0.09190205, 0.09190205, 0.09190203, 0.09190205, 30.91605167], [1516619760000, 0.09190205, 0.092, 0.091902, 0.09190203, 31.18923399], [1516619820000, 0.09190203, 0.09190205, 0.0917721, 0.09190203, 23.33294421], [1516619880000, 0.09190205, 0.09190205, 0.09177211, 0.09190205, 91.23159363], [1516619940000, 0.09190205, 0.092, 0.09190205, 0.092, 26.59452308], [1516620000000, 0.092, 0.092, 0.09178211, 0.09178211, 1.28066323], [1516620060000, 0.092, 0.092, 0.09192206, 0.092, 51.84166744], [1516620120000, 0.092, 0.092, 0.091777, 0.092, 46.78632084], [1516620180000, 0.09192207, 0.09200453, 0.09192, 0.09200001, 13.34366958], [1516620240000, 0.09200453, 0.09203, 0.09200001, 0.09203, 13.36560213], [1516620300000, 0.09203, 0.09209, 0.09202502, 0.092055, 2.72277198], [1516620360000, 0.092055, 0.09209043, 0.09205, 0.09209043, 5.9115614], [1516620420000, 0.09209043, 0.09215125, 0.092055, 0.09215125, 34.94881344], [1516620480000, 0.09215125, 0.0922341, 0.09215125, 0.0922341, 42.10211353], [1516620540000, 0.0922, 0.09231931, 0.092192, 0.092192, 35.46931197], [1516620600000, 0.0922, 0.09239561, 0.0921831, 0.0921831, 9.84351058], [1516620660000, 0.09218311, 0.09227525, 0.0921831, 0.09218317, 6.92837408], [1516620720000, 0.09218317, 0.0924, 0.09218317, 0.09223311, 16.2929404], [1516620780000, 0.09227525, 0.09239561, 0.0922331, 0.09225417, 14.68579385], [1516620840000, 0.09225417, 0.09241728, 0.0922331, 0.09241728, 75.57452296], [1516620900000, 0.09223311, 0.09243522, 0.0922331, 0.09225417, 9.8208045], [1516620960000, 0.09243988, 0.09243988, 0.09218317, 0.0922, 14.87167691], [1516621020000, 0.0922, 0.09243977, 0.0922, 0.0923, 38.28455551], [1516621080000, 0.0923, 0.0924, 0.0922, 0.0924, 34.66233908], [1516621140000, 0.0922, 0.0924, 0.0922, 0.0923, 13.99238557], [1516621200000, 0.0923, 0.09243977, 0.0923, 0.0923, 40.32364309], [1516621260000, 0.09230001, 0.09242789, 0.09220001, 0.09237232, 11.35689294], [1516621320000, 0.09241, 0.09242787, 0.09220001, 0.09220001, 36.6327869], [1516621380000, 0.0922331, 0.09241, 0.09220001, 0.09241, 13.72555764], [1516621440000, 0.09220002, 0.09242788, 0.09218311, 0.09220004, 63.84847734], [1516621500000, 0.09220004, 0.09242788, 0.0921831, 0.0921831, 10.62682664], [1516621560000, 0.09218311, 0.0923778, 0.0921831, 0.0921831, 26.17441433], [1516621620000, 0.0921831, 0.0923778, 0.092055, 0.092055, 29.92967726], [1516621680000, 0.09218457, 0.0923778, 0.092055, 0.09218456, 12.03407855], [1516621740000, 0.09218457, 0.09218457, 0.09205501, 0.0921546, 21.17423041], [1516621800000, 0.09218457, 0.09218457, 0.09205501, 0.09205501, 16.35940429], [1516621860000, 0.09205501, 0.09205502, 0.09205501, 0.09205502, 50.82771455], [1516621920000, 0.09205502, 0.09218457, 0.09205501, 0.09218457, 9.316122], [1516621980000, 0.09218457, 0.0923778, 0.09205502, 0.09218456, 14.29966003], [1516622040000, 0.09218456, 0.09218456, 0.09205504, 0.09209244, 3.76745726], [1516622100000, 0.09209244, 0.09218456, 0.09209244, 0.09209245, 28.16000433], [1516622160000, 0.09218455, 0.09242787, 0.09205503, 0.09205504, 26.00182908], [1516622220000, 0.09239999, 0.09242787, 0.092, 0.09239999, 77.84618728], [1516622280000, 0.09239999, 0.09242787, 0.09200001, 0.09239, 5.27090762], [1516622340000, 0.09239, 0.09239, 0.09201843, 0.09238988, 16.3154125], [1516622400000, 0.09238988, 0.09238988, 0.09201843, 0.09201843, 21.80895213], [1516622460000, 0.09201843, 0.09234999, 0.0918, 0.0918, 32.15117517], [1516622520000, 0.09194, 0.09194, 0.0918, 0.0918, 44.56250861], [1516622580000, 0.0918, 0.0918, 0.09177205, 0.09178672, 18.25484442], [1516622640000, 0.09178672, 0.09193, 0.0917, 0.09177204, 17.09306565], [1516622700000, 0.09177205, 0.09193, 0.09153163, 0.09175486, 9.78793147], [1516622760000, 0.09153163, 0.0918, 0.0915, 0.09175486, 17.86588546], [1516622820000, 0.09193, 0.09193, 0.09157036, 0.0917, 16.52270431], [1516622880000, 0.0917, 0.09193, 0.09164191, 0.0917, 11.22222391], [1516622940000, 0.09193, 0.091939, 0.091893, 0.09193, 4.55349845], [1516623000000, 0.09193, 0.092, 0.09193, 0.092, 0.41456893], [1516623060000, 0.092, 0.092, 0.09175003, 0.092, 0.8137589], [1516623120000, 0.092, 0.09229987, 0.0915, 0.09201843, 30.95276769], [1516623180000, 0.09229987, 0.09229987, 0.092, 0.09201843, 1.88932146], [1516623240000, 0.09201843, 0.09229954, 0.09175004, 0.09175004, 2.93752543], [1516623300000, 0.09229945, 0.09229945, 0.09175006, 0.092, 1.73128269], [1516623360000, 0.092, 0.092, 0.09179, 0.09199999, 2.78230665], [1516623420000, 0.09179, 0.09199999, 0.09179, 0.09179001, 13.60895297], [1516623480000, 0.09199991, 0.09199999, 0.09165001, 0.09165001, 71.42878106], [1516623540000, 0.09179002, 0.09196441, 0.0915, 0.0915, 30.09494806], [1516623600000, 0.0915, 0.09188546, 0.09148, 0.09188495, 36.57816089], [1516623660000, 0.09148, 0.09185499, 0.0913525, 0.09136106, 12.17388028], [1516623720000, 0.09136106, 0.09167542, 0.0913525, 0.0914503, 11.1600872], [1516623780000, 0.0914503, 0.09167, 0.09136106, 0.09148, 12.97336287], [1516623840000, 0.09136109, 0.09166996, 0.09136109, 0.09136109, 15.04486445], [1516623900000, 0.09166978, 0.09166978, 0.09136113, 0.09136201, 6.98142608], [1516623960000, 0.09148, 0.09148, 0.09136117, 0.0913621, 64.65444706], [1516624020000, 0.09148, 0.09148, 0.09126127, 0.09126127, 18.61570662], [1516624080000, 0.09147999, 0.09148, 0.09122489, 0.09122489, 14.56032511], [1516624140000, 0.09145379, 0.0914798, 0.0912, 0.09135357, 27.73406852], [1516624200000, 0.091225, 0.0914798, 0.091225, 0.09147971, 30.16696673], [1516624260000, 0.0913, 0.09148, 0.09110369, 0.09146999, 24.86277878], [1516624320000, 0.09146999, 0.09148, 0.0913, 0.09148, 29.65714751], [1516624380000, 0.09130003, 0.09148, 0.09130002, 0.09148, 56.82665151], [1516624440000, 0.09148, 0.09169999, 0.09130003, 0.09169999, 25.36860452], [1516624500000, 0.09148, 0.09181522, 0.09139134, 0.09181522, 6.29673507], [1516624560000, 0.09179684, 0.09179684, 0.09139135, 0.09148, 5.68877869], [1516624620000, 0.09139135, 0.09148, 0.09139135, 0.09148, 2.28543477], [1516624680000, 0.09148, 0.09175748, 0.09139137, 0.09139137, 26.68514079], [1516624740000, 0.09139137, 0.0916, 0.09125911, 0.0913, 50.65210937], [1516624800000, 0.0913, 0.0916888, 0.0913, 0.09132, 6.13755106], [1516624860000, 0.09132001, 0.0917, 0.09132001, 0.09132002, 19.38787708], [1516624920000, 0.0917, 0.0917, 0.09132002, 0.0915819, 6.91897628], [1516624980000, 0.0915819, 0.09168147, 0.091325, 0.091581, 22.29656314], [1516625040000, 0.0915819, 0.09168147, 0.091325, 0.091325, 41.14671142], [1516625100000, 0.091325, 0.09168116, 0.09132, 0.09167999, 19.18114826], [1516625160000, 0.0915, 0.09168, 0.09110369, 0.09110375, 19.11443746], [1516625220000, 0.09144, 0.09144, 0.0911089, 0.09144, 40.34021701], [1516625280000, 0.09116891, 0.09167987, 0.0911189, 0.09134866, 15.25170786], [1516625340000, 0.09134866, 0.09167987, 0.09117, 0.09167987, 18.15251174], [1516625400000, 0.09117001, 0.09167988, 0.09117001, 0.09167985, 15.04138937], [1516625460000, 0.09117002, 0.09166999, 0.09117002, 0.09123238, 2.98333077], [1516625520000, 0.09123238, 0.091649, 0.09123238, 0.09163997, 11.42452564], [1516625580000, 0.09163997, 0.09166999, 0.09129001, 0.09166999, 25.01197352], [1516625640000, 0.09166999, 0.09167985, 0.09166998, 0.09167, 24.67473953], [1516625700000, 0.09167, 0.09167972, 0.09167, 0.09167, 31.37787488], [1516625760000, 0.09167, 0.09167969, 0.09126918, 0.09126918, 47.41046135], [1516625820000, 0.09132825, 0.09167925, 0.09132825, 0.09132825, 22.16811893], [1516625880000, 0.09132826, 0.09132826, 0.09126937, 0.0913083, 13.88435766], [1516625940000, 0.09126918, 0.09167967, 0.09126918, 0.09167967, 26.46079678], [1516626000000, 0.091645, 0.09167969, 0.0913, 0.09167934, 21.79201466], [1516626060000, 0.09167934, 0.09167969, 0.0913, 0.09167943, 39.51980146], [1516626120000, 0.09167943, 0.09167943, 0.09126918, 0.09166899, 6.4790474], [1516626180000, 0.09126918, 0.09166888, 0.09126918, 0.09166192, 13.78019659], [1516626240000, 0.09126918, 0.09166181, 0.09126918, 0.09159985, 10.36115071], [1516626300000, 0.09159985, 0.09159985, 0.09127, 0.09159916, 4.36810045], [1516626360000, 0.09129, 0.09159985, 0.09129, 0.09159984, 24.90185259], [1516626420000, 0.09159919, 0.09159974, 0.09129, 0.09129, 9.33308661], [1516626480000, 0.09129, 0.09159, 0.09129, 0.0915, 17.6507446], [1516626540000, 0.0915, 0.09159919, 0.09119594, 0.09119594, 29.91162357], [1516626600000, 0.09127001, 0.0915, 0.09119594, 0.09149983, 18.46390502], [1516626660000, 0.09149983, 0.0915, 0.09110375, 0.09110376, 61.93090642], [1516626720000, 0.09110376, 0.09148889, 0.09105178, 0.09110377, 30.79747695], [1516626780000, 0.09127001, 0.0914817, 0.091, 0.091, 43.53398118], [1516626840000, 0.091, 0.0914817, 0.09079684, 0.09112039, 150.47839126], [1516626900000, 0.09116971, 0.09148165, 0.09102419, 0.09148, 28.37001976], [1516626960000, 0.09147999, 0.0915, 0.09107248, 0.0914817, 67.3378888], [1516627020000, 0.0914817, 0.0914817, 0.09116577, 0.09148161, 47.89124406], [1516627080000, 0.09148, 0.09159985, 0.09116588, 0.09148, 48.46581573], [1516627140000, 0.0915995, 0.09159985, 0.0912, 0.09157308, 47.98476592], [1516627200000, 0.09157308, 0.09159985, 0.091, 0.09115836, 27.15918463], [1516627260000, 0.09157318, 0.09159985, 0.09100003, 0.09121062, 128.65557298], [1516627320000, 0.09147147, 0.09159985, 0.09121064, 0.09159985, 47.84117185], [1516627380000, 0.09159985, 0.09167986, 0.09123096, 0.09159944, 49.23138234], [1516627440000, 0.09123107, 0.09167989, 0.09123097, 0.09167989, 37.7861466], [1516627500000, 0.09159985, 0.09167989, 0.09123097, 0.0915999, 99.32975018], [1516627560000, 0.0915999, 0.09167989, 0.0914, 0.09167989, 295.47745549], [1516627620000, 0.0916798, 0.09167989, 0.09140003, 0.09140003, 119.98729153], [1516627680000, 0.09140004, 0.09167989, 0.091, 0.09167989, 112.64839516], [1516627740000, 0.09167989, 0.09167989, 0.09136827, 0.09167989, 97.05095084], [1516627800000, 0.09167989, 0.09167989, 0.0916798, 0.09167989, 95.33981834], [1516627860000, 0.09167989, 0.09181523, 0.0913684, 0.09181523, 59.44942444], [1516627920000, 0.09181523, 0.09188549, 0.09120006, 0.09169001, 29.18812064], [1516627980000, 0.09188529, 0.09188549, 0.09169, 0.09169, 105.44416773], [1516628040000, 0.0917, 0.09188, 0.0917, 0.09172999, 25.96718531], [1516628100000, 0.0917, 0.09188548, 0.0917, 0.09173, 38.24058346], [1516628160000, 0.091878, 0.09188549, 0.0917, 0.09188549, 447.57901677], [1516628220000, 0.09173001, 0.09188549, 0.09173001, 0.0917307, 10.05328515], [1516628280000, 0.09188548, 0.09188549, 0.0917307, 0.09188549, 60.85423545], [1516628340000, 0.09188, 0.09209286, 0.09188, 0.09188, 59.52861092], [1516628400000, 0.091989, 0.09209286, 0.09169, 0.09205416, 15.70647703], [1516628460000, 0.09205416, 0.09215, 0.091989, 0.091989, 22.75418301], [1516628520000, 0.09198901, 0.09218424, 0.09169001, 0.09169001, 21.56995134], [1516628580000, 0.09169837, 0.09227564, 0.09169001, 0.09227564, 22.35672702], [1516628640000, 0.09218426, 0.0924, 0.09172866, 0.0924, 44.62209376], [1516628700000, 0.0924, 0.0924, 0.09186188, 0.091905, 60.91348299], [1516628760000, 0.09236184, 0.0924, 0.09190001, 0.09190001, 46.8385174], [1516628820000, 0.09190501, 0.09208488, 0.09186191, 0.0919, 50.84821423], [1516628880000, 0.0919, 0.0921, 0.09186201, 0.0920849, 94.14088061], [1516628940000, 0.09208488, 0.09231663, 0.09186201, 0.09208487, 77.44672551], [1516629000000, 0.09208487, 0.09232318, 0.09199203, 0.0921, 64.15947807], [1516629060000, 0.0921, 0.09232318, 0.0921, 0.0921009, 30.85431757], [1516629120000, 0.0922, 0.0923231, 0.09186201, 0.0923231, 88.30954894], [1516629180000, 0.0921009, 0.09232318, 0.0921009, 0.092323, 66.44873293], [1516629240000, 0.0921009, 0.09239996, 0.09186201, 0.09239996, 39.1653051], [1516629300000, 0.0921009, 0.09243, 0.09186201, 0.092, 27.41783076], [1516629360000, 0.092, 0.0922, 0.09199852, 0.09219992, 46.77374129], [1516629420000, 0.09219992, 0.09245633, 0.09186201, 0.092, 153.20878311], [1516629480000, 0.09245633, 0.09247, 0.09199999, 0.092, 27.52112104], [1516629540000, 0.092, 0.09229999, 0.092, 0.09229999, 20.12104058], [1516629600000, 0.09229999, 0.09229999, 0.09205, 0.0922999, 13.41011064], [1516629660000, 0.09205005, 0.09229999, 0.09205005, 0.09229999, 41.04353788], [1516629720000, 0.0922999, 0.09229999, 0.09205001, 0.09229997, 12.30493512], [1516629780000, 0.0922999, 0.09229998, 0.09205001, 0.09206842, 13.72584497], [1516629840000, 0.09206842, 0.09229999, 0.092055, 0.09206842, 92.11023821], [1516629900000, 0.09206842, 0.0924, 0.09205, 0.09235, 87.28030045], [1516629960000, 0.09235, 0.0924, 0.09211, 0.09229999, 21.38479044], [1516630020000, 0.0924, 0.0924, 0.09229999, 0.0923, 21.18641448], [1516630080000, 0.0924, 0.09247399, 0.0923, 0.0923, 33.6512454], [1516630140000, 0.0923, 0.0925, 0.0923, 0.0925, 75.90467907], [1516630200000, 0.09247395, 0.0925386, 0.09247395, 0.09253858, 37.42033902], [1516630260000, 0.0925386, 0.092598, 0.09251, 0.0925386, 94.80055522], [1516630320000, 0.0925386, 0.092598, 0.09251, 0.09251, 41.76597998], [1516630380000, 0.09251001, 0.0926, 0.09251, 0.09251, 75.49876142], [1516630440000, 0.09259899, 0.0926, 0.092, 0.09205, 178.9166968], [1516630500000, 0.09207948, 0.0926, 0.09200736, 0.0926, 73.73066678], [1516630560000, 0.0926, 0.0926, 0.09259999, 0.09259999, 100.46305908], [1516630620000, 0.09259999, 0.0926024, 0.09259425, 0.09259425, 17.35014502], [1516630680000, 0.09259425, 0.09259427, 0.09205, 0.09205, 9.07701603], [1516630740000, 0.09253668, 0.09253668, 0.09200738, 0.092536, 45.31239683], [1516630800000, 0.09252408, 0.09253642, 0.09200738, 0.09206379, 17.30282704], [1516630860000, 0.09206379, 0.0925364, 0.092, 0.0925, 10.8545349], [1516630920000, 0.0925, 0.09253, 0.092, 0.09253, 10.83834161], [1516630980000, 0.09200001, 0.09253, 0.09173339, 0.09249998, 72.47514748], [1516631040000, 0.09207027, 0.09252, 0.09188675, 0.09252, 17.15769159], [1516631100000, 0.09221001, 0.0925299, 0.09221001, 0.09237166, 10.1628424], [1516631160000, 0.0925299, 0.09253, 0.09237166, 0.0924, 16.34308141], [1516631220000, 0.09253, 0.09253, 0.09241, 0.0925, 25.53502381], [1516631280000, 0.09253, 0.09253, 0.09241, 0.09252999, 24.58636244], [1516631340000, 0.09252999, 0.09252999, 0.09241, 0.09241, 25.50764931], [1516631400000, 0.09252999, 0.09253, 0.09241, 0.09253, 48.79811201], [1516631460000, 0.09241001, 0.09253, 0.09221001, 0.09253, 118.95626151], [1516631520000, 0.09253, 0.09256416, 0.09253, 0.09255953, 27.39121591], [1516631580000, 0.09255776, 0.09264, 0.09253, 0.09253, 49.67474259], [1516631640000, 0.09263999, 0.09263999, 0.09207, 0.0925998, 67.06187179], [1516631700000, 0.09259982, 0.09259982, 0.0921, 0.09254988, 41.54424249], [1516631760000, 0.09210001, 0.09254988, 0.09207002, 0.0925498, 28.60001], [1516631820000, 0.0925498, 0.09254993, 0.09210002, 0.09249117, 21.85209579], [1516631880000, 0.09249117, 0.09249117, 0.09211, 0.09216768, 31.5074812], [1516631940000, 0.09210003, 0.09247117, 0.09210002, 0.09217769, 15.84839664], [1516632000000, 0.0924, 0.0925, 0.0924, 0.09240001, 11.72205833], [1516632060000, 0.09240001, 0.0924645, 0.09240001, 0.09240001, 9.32084887], [1516632120000, 0.09246438, 0.09246438, 0.09210001, 0.09246418, 12.26658878], [1516632180000, 0.092464, 0.09246418, 0.09210002, 0.09212844, 3.36207658], [1516632240000, 0.09246381, 0.09246381, 0.09216381, 0.0922, 5.15912718], [1516632300000, 0.0922, 0.0923, 0.09216381, 0.09216383, 5.514695], [1516632360000, 0.09229999, 0.09246442, 0.09210002, 0.09246418, 9.2098348], [1516632420000, 0.09246442, 0.0924645, 0.09246418, 0.09246442, 19.95092122], [1516632480000, 0.09246442, 0.0924645, 0.09246418, 0.09246418, 40.54078596], [1516632540000, 0.09246418, 0.09246428, 0.09210001, 0.09210001, 3.2053934], [1516632600000, 0.09221177, 0.0924645, 0.09210005, 0.092464, 49.6817897], [1516632660000, 0.092464, 0.0924645, 0.09210007, 0.0924645, 14.80132071], [1516632720000, 0.0924645, 0.09249, 0.09210057, 0.09211002, 16.22713301], [1516632780000, 0.09246443, 0.09246451, 0.09211003, 0.09246451, 18.90371116], [1516632840000, 0.09246451, 0.09259969, 0.09246441, 0.09259969, 12.19532329], [1516632900000, 0.09259969, 0.0926, 0.09212, 0.09245, 17.68931722], [1516632960000, 0.0924645, 0.0926, 0.09212501, 0.09212501, 32.64451016], [1516633020000, 0.0926, 0.0927, 0.09212, 0.0926, 29.71104431], [1516633080000, 0.09256627, 0.09256627, 0.09212002, 0.09256627, 21.20347521], [1516633140000, 0.09256627, 0.09256627, 0.09214001, 0.09255, 14.09115644], [1516633200000, 0.09255, 0.09256626, 0.09214012, 0.09214113, 20.76150916], [1516633260000, 0.09214113, 0.09255, 0.09214113, 0.09254, 20.66856646], [1516633320000, 0.09254, 0.09254, 0.09214012, 0.09253999, 8.95432364], [1516633380000, 0.09253999, 0.09253999, 0.09214116, 0.09253998, 3.07800714], [1516633440000, 0.0925396, 0.09253997, 0.09245, 0.09253958, 18.60032331], [1516633500000, 0.09253958, 0.09253997, 0.09216, 0.09247047, 28.50207457], [1516633560000, 0.09247047, 0.09253997, 0.09216, 0.09216, 9.74733775], [1516633620000, 0.09234982, 0.09234982, 0.09216, 0.09234982, 11.50997414], [1516633680000, 0.09234982, 0.09234982, 0.09217, 0.0922, 7.51212379], [1516633740000, 0.09220001, 0.09234982, 0.09220001, 0.09234, 17.74884173], [1516633800000, 0.0923498, 0.09246449, 0.09234, 0.09234982, 44.99463242], [1516633860000, 0.09234982, 0.09246449, 0.09234982, 0.09246449, 11.60452321], [1516633920000, 0.09246449, 0.09263038, 0.0924, 0.09246449, 78.05178032], [1516633980000, 0.09247449, 0.09255992, 0.09234, 0.092411, 14.48874479], [1516634040000, 0.092411, 0.09244448, 0.09220003, 0.09234, 154.89580775], [1516634100000, 0.09220003, 0.092411, 0.09220003, 0.0922137, 10.58973972], [1516634160000, 0.09221371, 0.0924, 0.09220003, 0.0922137, 42.19085968], [1516634220000, 0.09220003, 0.09221371, 0.09220003, 0.09220003, 8.12736661], [1516634280000, 0.092201, 0.092201, 0.09220001, 0.09220099, 27.81780772], [1516634340000, 0.09220003, 0.09220099, 0.09216, 0.09216, 21.16070826], [1516634400000, 0.0921705, 0.09219996, 0.09214012, 0.09214012, 162.4229335], [1516634460000, 0.09214012, 0.09214553, 0.09214012, 0.09214012, 19.94765507], [1516634520000, 0.09214012, 0.09214012, 0.09210001, 0.09211999, 43.50080756], [1516634580000, 0.09214, 0.09214, 0.09211999, 0.09211999, 7.97685573], [1516634640000, 0.09213999, 0.09213999, 0.0921, 0.0921, 11.35306783], [1516634700000, 0.09210001, 0.09211998, 0.0921, 0.0921, 11.21202542], [1516634760000, 0.0921, 0.092118, 0.09200002, 0.09200002, 15.29222407], [1516634820000, 0.09200002, 0.09210001, 0.091733, 0.09202835, 57.58810733], [1516634880000, 0.0921, 0.09210001, 0.091733, 0.0918, 23.53024554], [1516634940000, 0.09200001, 0.09200001, 0.09180001, 0.09180001, 12.71974904], [1516635000000, 0.09199991, 0.09199991, 0.09180002, 0.0919, 5.62152552], [1516635060000, 0.09186672, 0.0919999, 0.09180002, 0.09186673, 66.06827553], [1516635120000, 0.09186673, 0.09186673, 0.0918, 0.09180002, 23.27846531], [1516635180000, 0.09180002, 0.09180002, 0.0918, 0.09180001, 13.51775253], [1516635240000, 0.09180002, 0.09180002, 0.091733, 0.09180001, 23.90928774], [1516635300000, 0.09180001, 0.09180002, 0.0918, 0.09180001, 26.5262416], [1516635360000, 0.09180001, 0.09180001, 0.09174301, 0.09180001, 56.75687269], [1516635420000, 0.09180001, 0.09180001, 0.091733, 0.09180001, 21.75321414], [1516635480000, 0.09173301, 0.09180001, 0.091733, 0.09180001, 48.89038105], [1516635540000, 0.09180001, 0.09186673, 0.09175199, 0.09186673, 52.46878401], [1516635600000, 0.09186673, 0.09186673, 0.09180002, 0.09186673, 46.82728708], [1516635660000, 0.09186673, 0.09186673, 0.09180005, 0.09186673, 5.14625696], [1516635720000, 0.09186673, 0.09186673, 0.09180015, 0.09180015, 63.42010208], [1516635780000, 0.091865, 0.092, 0.0918001, 0.092, 40.99011134], [1516635840000, 0.092, 0.092, 0.091866, 0.092, 12.81077061], [1516635900000, 0.09199999, 0.092, 0.0919, 0.092, 19.51429661], [1516635960000, 0.092, 0.09209, 0.092, 0.09209, 30.77340839], [1516636020000, 0.09202835, 0.09209, 0.09200001, 0.09209, 14.46682269], [1516636080000, 0.09202835, 0.09209, 0.09202835, 0.09202835, 11.43480255], [1516636140000, 0.09209, 0.09220003, 0.09209, 0.09220003, 38.00889863], [1516636200000, 0.09215, 0.09220003, 0.09214422, 0.09215, 8.62265418], [1516636260000, 0.09215, 0.09215, 0.09214401, 0.09214401, 8.84599556], [1516636320000, 0.09214999, 0.0922, 0.09214999, 0.09215, 12.69797572], [1516636380000, 0.09215, 0.0922, 0.09214401, 0.09214996, 11.72831762], [1516636440000, 0.09214402, 0.0924, 0.09214401, 0.0922, 21.04767822], [1516636500000, 0.0924, 0.0924, 0.09220001, 0.09239999, 20.60338309], [1516636560000, 0.09239998, 0.092411, 0.09220001, 0.09222, 58.96800373], [1516636620000, 0.09222, 0.09239999, 0.09214401, 0.09222001, 7.48104922], [1516636680000, 0.09232832, 0.09239999, 0.092, 0.09200001, 133.05792065], [1516636740000, 0.09200001, 0.09226974, 0.092, 0.092, 73.91863317], [1516636800000, 0.09200001, 0.09226411, 0.092, 0.09225553, 36.6820135], [1516636860000, 0.09200001, 0.09226974, 0.092, 0.09219243, 47.4339264], [1516636920000, 0.09200018, 0.09226974, 0.09200018, 0.09221635, 35.26506915], [1516636980000, 0.09221635, 0.09221635, 0.09187, 0.09215303, 28.40931649], [1516637040000, 0.09215303, 0.0922697, 0.0918001, 0.091955, 20.36550006], [1516637100000, 0.09200018, 0.09222002, 0.0918001, 0.0918001, 34.0403033], [1516637160000, 0.0918001, 0.09199999, 0.0918001, 0.0918001, 7.43497886], [1516637220000, 0.0918001, 0.092, 0.09175199, 0.091782, 26.17788249], [1516637280000, 0.09175199, 0.09199995, 0.09175199, 0.09175199, 8.84640346], [1516637340000, 0.09199994, 0.092, 0.09199994, 0.092, 8.25741634], [1516637400000, 0.09199998, 0.09199998, 0.0918001, 0.09199996, 28.44617256], [1516637460000, 0.09199996, 0.092, 0.09199996, 0.09199996, 60.75371993], [1516637520000, 0.092, 0.092, 0.09175199, 0.09176201, 19.24940427], [1516637580000, 0.0918001, 0.0918001, 0.09175199, 0.09176201, 20.7073741], [1516637640000, 0.09176201, 0.092, 0.09176201, 0.09198065, 23.11469417], [1516637700000, 0.09198065, 0.092, 0.09176201, 0.09199644, 27.8322273], [1516637760000, 0.09199644, 0.092, 0.09176201, 0.09176301, 14.51591331], [1516637820000, 0.09176301, 0.09200369, 0.09176301, 0.092, 2.73331435], [1516637880000, 0.09200369, 0.09200369, 0.09176201, 0.09200369, 4.49516386], [1516637940000, 0.09200001, 0.09200369, 0.09176201, 0.09176201, 34.19264273], [1516638000000, 0.092, 0.092, 0.09175199, 0.09175199, 24.61563076], [1516638060000, 0.09199999, 0.092, 0.09199999, 0.09199999, 48.81290987], [1516638120000, 0.09199999, 0.09200369, 0.09175, 0.091752, 41.85363069], [1516638180000, 0.091752, 0.09200369, 0.091752, 0.091752, 11.11507563], [1516638240000, 0.092, 0.0920036, 0.091752, 0.0920036, 29.39191228], [1516638300000, 0.09200369, 0.09200369, 0.09175198, 0.09200369, 8.60961171], [1516638360000, 0.0920036, 0.09200369, 0.092, 0.092, 2.64955953], [1516638420000, 0.09199999, 0.09224999, 0.0918, 0.09224999, 38.55023818], [1516638480000, 0.092, 0.09221658, 0.092, 0.09221658, 3.43652868], [1516638540000, 0.09221658, 0.09221658, 0.09201, 0.09201, 6.09791985], [1516638600000, 0.09201001, 0.09221656, 0.09201, 0.09201, 10.94766873], [1516638660000, 0.09201, 0.09221656, 0.09201, 0.09221656, 5.58759432], [1516638720000, 0.09221656, 0.09221656, 0.09201, 0.09221656, 3.72276418], [1516638780000, 0.09201001, 0.09221656, 0.09201001, 0.092011, 42.46564445], [1516638840000, 0.0920112, 0.0921, 0.092011, 0.092016, 8.09858578], [1516638900000, 0.0921, 0.09221656, 0.092011, 0.09221656, 25.39394985], [1516638960000, 0.09221656, 0.09221656, 0.092016, 0.09221656, 2.89059736], [1516639020000, 0.09221656, 0.09221656, 0.092016, 0.09221656, 5.20391834], [1516639080000, 0.09221656, 0.09240599, 0.092011, 0.092011, 77.47513964], [1516639140000, 0.09221656, 0.092396, 0.09221656, 0.0923, 24.23382862], [1516639200000, 0.0923, 0.0924, 0.09211, 0.0922, 2.91559159], [1516639260000, 0.0922, 0.09240998, 0.09212, 0.09240003, 9.88958716], [1516639320000, 0.09240003, 0.09240996, 0.0921201, 0.09238962, 7.15335911], [1516639380000, 0.09238201, 0.09238201, 0.0921201, 0.0921201, 33.64696217], [1516639440000, 0.09212, 0.09229463, 0.092011, 0.092011, 37.92399502], [1516639500000, 0.092011, 0.09229462, 0.092011, 0.09206554, 9.40305744], [1516639560000, 0.09206554, 0.09229998, 0.09206554, 0.09206554, 20.52228818], [1516639620000, 0.0922577, 0.09233353, 0.0919, 0.09232774, 31.88040961], [1516639680000, 0.09226913, 0.09237, 0.09186399, 0.09186399, 32.91293229], [1516639740000, 0.0923294, 0.09234417, 0.09210881, 0.09234302, 8.51058958], [1516639800000, 0.0923239, 0.092329, 0.0919, 0.092329, 4.18780143], [1516639860000, 0.092329, 0.09234301, 0.09218656, 0.09218656, 32.65251566], [1516639920000, 0.09218656, 0.09229822, 0.09218656, 0.09229514, 1.64856271], [1516639980000, 0.09229514, 0.09229514, 0.09218656, 0.09218656, 1.75607896], [1516640040000, 0.09218656, 0.09222221, 0.092, 0.09222221, 4.18699808], [1516640100000, 0.0922, 0.09236997, 0.092, 0.092, 53.27745169], [1516640160000, 0.092, 0.09218655, 0.0919, 0.091915, 11.64584377], [1516640220000, 0.09191, 0.09218656, 0.09191, 0.09191002, 13.01949444], [1516640280000, 0.09218139, 0.09236996, 0.09191002, 0.09229668, 29.05440882], [1516640340000, 0.09229668, 0.09229668, 0.09191502, 0.09191502, 25.96412208], [1516640400000, 0.09229666, 0.09233969, 0.09190001, 0.09191502, 47.27588599], [1516640460000, 0.09191001, 0.09233399, 0.0918, 0.0918272, 32.73588245], [1516640520000, 0.09191902, 0.09231499, 0.09178656, 0.09189181, 42.84988812], [1516640580000, 0.09189181, 0.092299, 0.09175, 0.09202, 74.2794869], [1516640640000, 0.09202, 0.09229899, 0.09175, 0.09189181, 51.34942313], [1516640700000, 0.09189181, 0.09229437, 0.09189181, 0.09192807, 23.0350345], [1516640760000, 0.09189182, 0.09228399, 0.09189182, 0.09192807, 46.46747212], [1516640820000, 0.09192807, 0.09227599, 0.09175, 0.09175008, 20.41354123], [1516640880000, 0.09199698, 0.09219998, 0.09192807, 0.09219997, 5.76348751], [1516640940000, 0.09225553, 0.09225553, 0.09192807, 0.09225, 2.15271248], [1516641000000, 0.09223999, 0.09223999, 0.09192808, 0.09192808, 10.2645327], [1516641060000, 0.09192808, 0.09225551, 0.09175008, 0.09192807, 15.10034098], [1516641120000, 0.0922555, 0.0922555, 0.09192817, 0.09192817, 5.00613799], [1516641180000, 0.09192816, 0.09225551, 0.09192816, 0.09225551, 7.95552585], [1516641240000, 0.092, 0.09225551, 0.092, 0.0922, 6.62120842], [1516641300000, 0.0921, 0.09225551, 0.0921, 0.0922, 13.88767619], [1516641360000, 0.09225551, 0.0923, 0.09211, 0.0923, 8.73031419], [1516641420000, 0.09233, 0.09233897, 0.0923, 0.0923, 74.13936471], [1516641480000, 0.0923, 0.09233897, 0.09225551, 0.09225551, 32.41844792], [1516641540000, 0.0923, 0.09246449, 0.0923, 0.09233897, 16.83211701], [1516641600000, 0.09233897, 0.09250369, 0.09233897, 0.09233897, 44.04001656], [1516641660000, 0.09233897, 0.09233926, 0.09233897, 0.09233897, 15.28130134], [1516641720000, 0.09233897, 0.092612, 0.0923, 0.09233897, 24.47834614], [1516641780000, 0.09259998, 0.09259999, 0.0923, 0.09252705, 7.43669583], [1516641840000, 0.09251938, 0.09253628, 0.09251938, 0.09252322, 12.1281087], [1516641900000, 0.09252703, 0.09259499, 0.09230001, 0.09230888, 7.28866178], [1516641960000, 0.09252322, 0.092595, 0.09230888, 0.09230889, 15.25491297], [1516642020000, 0.0925546, 0.0925546, 0.09230889, 0.09230889, 3.78473161], [1516642080000, 0.09230889, 0.09230889, 0.09230888, 0.09230889, 21.60459757], [1516642140000, 0.09230889, 0.09235555, 0.09230888, 0.09230889, 4.09421244], [1516642200000, 0.09250999, 0.09250999, 0.09230888, 0.09230888, 12.9352857], [1516642260000, 0.09230889, 0.09231, 0.09230888, 0.09231, 9.54304979], [1516642320000, 0.09231, 0.0923546, 0.09231, 0.09235455, 31.37651071], [1516642380000, 0.09235455, 0.0925546, 0.09235455, 0.0923881, 14.7783568], [1516642440000, 0.0923881, 0.0925546, 0.0923881, 0.09254, 2.95586822], [1516642500000, 0.09254, 0.0925546, 0.09254, 0.0925546, 34.29564894], [1516642560000, 0.0925546, 0.0926, 0.09238811, 0.09254, 5.56908711], [1516642620000, 0.09254, 0.09269999, 0.09230888, 0.092541, 36.09841169], [1516642680000, 0.092541, 0.09282839, 0.09230888, 0.092541, 115.02900184], [1516642740000, 0.092541, 0.0927, 0.09230888, 0.09269999, 53.60565907], [1516642800000, 0.09269999, 0.09282838, 0.09269999, 0.09269999, 94.57083463], [1516642860000, 0.09269999, 0.09282828, 0.09269999, 0.09270001, 16.58144491], [1516642920000, 0.09270001, 0.09282828, 0.09231103, 0.09231104, 15.32742984], [1516642980000, 0.09269999, 0.0927827, 0.09231104, 0.09231106, 1.97302445], [1516643040000, 0.0923115, 0.09282828, 0.0923115, 0.0927727, 11.1437509], [1516643100000, 0.0927727, 0.0927727, 0.09241155, 0.09241156, 11.5598782], [1516643160000, 0.09241155, 0.09282828, 0.09241155, 0.09250005, 21.01020052], [1516643220000, 0.092828, 0.092828, 0.09250005, 0.09255006, 4.10739546], [1516643280000, 0.09255006, 0.09282767, 0.09250005, 0.09255008, 13.9117066], [1516643340000, 0.09255008, 0.09282767, 0.09255008, 0.09266403, 11.6073893], [1516643400000, 0.09280048, 0.09282772, 0.09250008, 0.09250008, 13.20606535], [1516643460000, 0.09250008, 0.09273225, 0.09250008, 0.0925005, 4.25608369], [1516643520000, 0.0925005, 0.09277999, 0.0925005, 0.09277999, 22.19424436], [1516643580000, 0.092593, 0.09282772, 0.092593, 0.09282772, 22.19021838], [1516643640000, 0.09282772, 0.092828, 0.09250005, 0.09277, 35.94224617], [1516643700000, 0.09278, 0.09282839, 0.09241156, 0.09276002, 45.95141623], [1516643760000, 0.09276002, 0.09277, 0.09276002, 0.09276002, 19.60162389], [1516643820000, 0.09276999, 0.09277, 0.09276002, 0.09276002, 7.90104016], [1516643880000, 0.09276999, 0.09277, 0.09259302, 0.09276003, 32.21063748], [1516643940000, 0.09276003, 0.09276003, 0.09259302, 0.0926, 2.16513079], [1516644000000, 0.0926, 0.09286982, 0.09259302, 0.0926, 26.69874719], [1516644060000, 0.09286982, 0.09287277, 0.0926, 0.09287277, 8.66025576], [1516644120000, 0.09287937, 0.09288888, 0.09260007, 0.0927, 3.78888548], [1516644180000, 0.09288888, 0.09288888, 0.09260009, 0.09260009, 6.45697985], [1516644240000, 0.09260101, 0.09289998, 0.09260101, 0.09289694, 28.9140791], [1516644300000, 0.09289694, 0.0929, 0.09260009, 0.0929, 31.72621472], [1516644360000, 0.09269996, 0.0929, 0.09269996, 0.09269996, 3.07545284], [1516644420000, 0.09269996, 0.0927987, 0.09269996, 0.09269996, 2.72505936], [1516644480000, 0.09269996, 0.0927987, 0.092421, 0.09242101, 16.82247091], [1516644540000, 0.09269996, 0.0927987, 0.09242101, 0.09269996, 21.03657724], [1516644600000, 0.09242113, 0.09269996, 0.09242113, 0.09242117, 14.17627474], [1516644660000, 0.09242117, 0.09269996, 0.09242116, 0.09242116, 20.71607253], [1516644720000, 0.09242116, 0.09269996, 0.09242115, 0.0926, 7.6965809], [1516644780000, 0.0926, 0.0926, 0.0926, 0.0926, 6.60546986], [1516644840000, 0.0926, 0.09269996, 0.09243, 0.09269996, 9.1832128], [1516644900000, 0.09269996, 0.0927987, 0.09269996, 0.09269997, 5.79996294], [1516644960000, 0.0927987, 0.0927987, 0.0926, 0.0926, 9.93213791], [1516645020000, 0.09260001, 0.09260001, 0.09242115, 0.09242115, 9.10096029], [1516645080000, 0.0926, 0.09276147, 0.09242115, 0.09275787, 23.11537411], [1516645140000, 0.09274475, 0.09275787, 0.0926, 0.0926, 15.43656084], [1516645200000, 0.0926, 0.09271345, 0.0926, 0.09271345, 2.08126186], [1516645260000, 0.09271345, 0.09271345, 0.0926, 0.0926, 2.7338587], [1516645320000, 0.0926, 0.092798, 0.0926, 0.0926, 31.45594256], [1516645380000, 0.092798, 0.092798, 0.09242104, 0.09242104, 29.06547355], [1516645440000, 0.09242104, 0.0926, 0.09241156, 0.09241156, 5.94281016], [1516645500000, 0.09242104, 0.0926, 0.09241156, 0.09252115, 3.73690081], [1516645560000, 0.09259999, 0.09259999, 0.09241156, 0.09252113, 4.46920184], [1516645620000, 0.09252112, 0.09252112, 0.09230889, 0.09230889, 13.42053539], [1516645680000, 0.09230889, 0.09245544, 0.09230888, 0.09231001, 48.56272713], [1516645740000, 0.09231001, 0.0926, 0.09230888, 0.0926, 24.20552865], [1516645800000, 0.09259997, 0.09259998, 0.09231001, 0.09259996, 30.18732704], [1516645860000, 0.09259995, 0.09259998, 0.0923101, 0.0925, 13.54063961], [1516645920000, 0.0925, 0.09259998, 0.0925, 0.09250001, 7.4127621], [1516645980000, 0.09250001, 0.09279797, 0.09250001, 0.09250001, 76.80175899], [1516646040000, 0.0925001, 0.092793, 0.0925001, 0.09258893, 6.29417813], [1516646100000, 0.09258893, 0.09269999, 0.0923101, 0.0925, 41.91376448], [1516646160000, 0.0925, 0.0925001, 0.09230888, 0.09249, 37.41597998], [1516646220000, 0.0923101, 0.09249, 0.0923101, 0.09249, 9.78432328], [1516646280000, 0.09249, 0.0925, 0.09230888, 0.09230888, 63.64730224], [1516646340000, 0.09230888, 0.0925, 0.09230888, 0.0923101, 4.59252422], [1516646400000, 0.0923101, 0.0925, 0.09230888, 0.09249998, 5.48733891], [1516646460000, 0.09249998, 0.0925, 0.0923, 0.0923, 31.65866339], [1516646520000, 0.0923101, 0.0923101, 0.0923, 0.0923101, 8.21911964], [1516646580000, 0.0923101, 0.0925, 0.09230005, 0.0924, 18.57657186], [1516646640000, 0.09249998, 0.0925, 0.0924, 0.09240001, 16.48707361], [1516646700000, 0.0924999, 0.0925, 0.0924999, 0.09249999, 11.1969445], [1516646760000, 0.0925, 0.0925, 0.09249999, 0.0925, 18.68755309], [1516646820000, 0.0925, 0.0925, 0.0924, 0.0925, 20.52075855], [1516646880000, 0.09245001, 0.0925001, 0.09240001, 0.09240001, 23.9027978], [1516646940000, 0.0924, 0.0925001, 0.0924, 0.09250009, 25.03156281], [1516647000000, 0.09244, 0.0925001, 0.09242, 0.09249001, 22.43292478], [1516647060000, 0.0925001, 0.092798, 0.0925001, 0.0927, 14.92737388], [1516647120000, 0.0927, 0.092798, 0.0927, 0.0927, 12.40584662], [1516647180000, 0.0927514, 0.0927514, 0.09250016, 0.0927, 4.43856425], [1516647240000, 0.09274888, 0.09274888, 0.09250015, 0.09274888, 25.12766705], [1516647300000, 0.09274188, 0.09274888, 0.09250016, 0.09250016, 11.63295542], [1516647360000, 0.09250016, 0.092798, 0.0924, 0.0924, 84.23659954], [1516647420000, 0.09250016, 0.0927987, 0.09236188, 0.09250016, 13.23237147], [1516647480000, 0.09250016, 0.092778, 0.09230005, 0.09250016, 14.94157729], [1516647540000, 0.0925, 0.09250016, 0.09230005, 0.0924, 5.86470414], [1516647600000, 0.0924, 0.0925, 0.0924, 0.092401, 20.33121689], [1516647660000, 0.0925, 0.0925, 0.0924, 0.0925, 1.50285615], [1516647720000, 0.0925, 0.0925, 0.09245, 0.09245, 2.57747043], [1516647780000, 0.0924, 0.09245, 0.0924, 0.09243, 8.16569689], [1516647840000, 0.09243, 0.0925, 0.09243, 0.09243, 9.85380574], [1516647900000, 0.0925, 0.0925, 0.092401, 0.09243, 5.62953892], [1516647960000, 0.09243, 0.09243, 0.0924, 0.0924, 16.44946715], [1516648020000, 0.09243, 0.09243, 0.09240003, 0.09240003, 1.21895232], [1516648080000, 0.09240003, 0.09243, 0.0924, 0.09240005, 8.26289707], [1516648140000, 0.09240005, 0.09243, 0.09240005, 0.09243, 16.40721134], [1516648200000, 0.0924001, 0.09243, 0.09240005, 0.09242334, 20.04528672], [1516648260000, 0.09242334, 0.09243, 0.0924233, 0.09243, 13.91003703], [1516648320000, 0.09242335, 0.09243, 0.09242335, 0.09243, 8.68921823], [1516648380000, 0.09243, 0.09243, 0.0924, 0.09243, 76.99834655], [1516648440000, 0.09243, 0.09243, 0.092427, 0.092427, 5.14530397], [1516648500000, 0.09243, 0.09243, 0.092427, 0.09243, 17.51922349], [1516648560000, 0.0925, 0.0927987, 0.09243, 0.0925, 9.29125178], [1516648620000, 0.0925, 0.0925, 0.09243002, 0.0925, 0.75431056], [1516648680000, 0.0925, 0.0925, 0.09245, 0.09245, 11.9487942], [1516648740000, 0.09245, 0.0925, 0.09243002, 0.09243002, 18.23272743], [1516648800000, 0.09245, 0.0925, 0.09245, 0.0925, 23.86735771], [1516648860000, 0.0925, 0.0925, 0.0925, 0.0925, 2.56413694], [1516648920000, 0.092795, 0.092795, 0.0925, 0.0926, 44.76737354], [1516648980000, 0.09277642, 0.092795, 0.0925, 0.0925, 24.45286956], [1516649040000, 0.092795, 0.092795, 0.09250003, 0.0927947, 6.9973821], [1516649100000, 0.0927947, 0.0927947, 0.0925003, 0.092767, 18.92922922], [1516649160000, 0.092767, 0.092787, 0.0925, 0.09250001, 14.98676489], [1516649220000, 0.0925, 0.0925003, 0.0925, 0.09250002, 35.42160189], [1516649280000, 0.09250018, 0.0925003, 0.09250001, 0.0925003, 15.77513655], [1516649340000, 0.09250002, 0.0925003, 0.09250002, 0.0925003, 2.79058454], [1516649400000, 0.0925003, 0.0925003, 0.09250003, 0.09250003, 8.92140399], [1516649460000, 0.0925003, 0.0925003, 0.09250003, 0.0925003, 7.14384836], [1516649520000, 0.0925003, 0.0925003, 0.09250002, 0.09250002, 44.75104216], [1516649580000, 0.09250019, 0.0925003, 0.09250002, 0.09250005, 44.91506502], [1516649640000, 0.0925003, 0.0925003, 0.09250005, 0.09250005, 7.99026446], [1516649700000, 0.09250005, 0.0925003, 0.09250002, 0.09250005, 6.67738547], [1516649760000, 0.0925003, 0.0925003, 0.09250005, 0.0925003, 3.90283419], [1516649820000, 0.0925003, 0.0925003, 0.09250005, 0.0925003, 71.10966198], [1516649880000, 0.0925003, 0.0925003, 0.09250019, 0.09250019, 3.4665684], [1516649940000, 0.0925003, 0.0925003, 0.09250005, 0.0925003, 25.58990696], [1516650000000, 0.0925003, 0.0925003, 0.09250002, 0.09250002, 39.70435138], [1516650060000, 0.0925003, 0.0925015, 0.09250002, 0.09250002, 11.0367933], [1516650120000, 0.09250002, 0.0925003, 0.09250002, 0.09250029, 9.99962077], [1516650180000, 0.0925003, 0.0925003, 0.09250002, 0.09250002, 23.52491965], [1516650240000, 0.09250002, 0.09250002, 0.09247688, 0.09250002, 75.60703648], [1516650300000, 0.0925, 0.09250002, 0.0925, 0.09250002, 8.34217663], [1516650360000, 0.0925, 0.09250002, 0.09180121, 0.09195441, 94.39019168], [1516650420000, 0.09250002, 0.09250002, 0.09192808, 0.09249422, 18.58090519], [1516650480000, 0.09247916, 0.09247916, 0.09202312, 0.09247916, 2.97337394], [1516650540000, 0.092479, 0.092479, 0.09212313, 0.092479, 8.57704503], [1516650600000, 0.09237916, 0.092479, 0.09237916, 0.092479, 7.90077491], [1516650660000, 0.092479, 0.0925, 0.092479, 0.092479, 13.61947886], [1516650720000, 0.0925, 0.09250002, 0.09213575, 0.09213575, 20.63678171], [1516650780000, 0.09250002, 0.09252312, 0.09250002, 0.09251, 45.02609706], [1516650840000, 0.09251001, 0.09252312, 0.0925, 0.0925, 23.23967969], [1516650900000, 0.0925, 0.0925, 0.09213574, 0.09213575, 9.63588444], [1516650960000, 0.09213575, 0.0924999, 0.09213574, 0.09213575, 2.80509923], [1516651020000, 0.09213575, 0.0924824, 0.09213574, 0.09247199, 8.28831267], [1516651080000, 0.09247199, 0.09247199, 0.09213575, 0.09247198, 2.98483757], [1516651140000, 0.09214, 0.09247199, 0.09214, 0.09247199, 1.72980879], [1516651200000, 0.09214001, 0.09247199, 0.09214001, 0.09214001, 7.93560997], [1516651260000, 0.09242367, 0.09247198, 0.09214001, 0.09214001, 4.01540419], [1516651320000, 0.09247195, 0.09247195, 0.09214001, 0.0922524, 5.41407788], [1516651380000, 0.0922524, 0.09247195, 0.09214002, 0.09247195, 13.80438693], [1516651440000, 0.09247195, 0.09247197, 0.09214001, 0.09247195, 17.53870129], [1516651500000, 0.09247197, 0.09247199, 0.09213575, 0.09247197, 20.53482313], [1516651560000, 0.09247195, 0.09247195, 0.092462, 0.092462, 3.0552463], [1516651620000, 0.092462, 0.09247195, 0.09213575, 0.09213575, 13.7185219], [1516651680000, 0.09242367, 0.09247199, 0.09213581, 0.09247198, 216.33492351], [1516651740000, 0.09247198, 0.09247199, 0.09215, 0.09215, 59.69377389], [1516651800000, 0.09247197, 0.09247198, 0.09215, 0.09237451, 7.58696197], [1516651860000, 0.09247198, 0.09249489, 0.09215, 0.09215, 42.18886738], [1516651920000, 0.09215, 0.09244887, 0.09213584, 0.09223197, 24.55250597], [1516651980000, 0.09244886, 0.09244886, 0.09215, 0.09244885, 25.34561551], [1516652040000, 0.09215, 0.09244884, 0.09215, 0.09244884, 5.36307857], [1516652100000, 0.09244884, 0.09244884, 0.09215, 0.09215, 9.13792349], [1516652160000, 0.0924488, 0.09244884, 0.09215, 0.09244876, 8.89686932], [1516652220000, 0.09244876, 0.09244876, 0.09224216, 0.09244874, 1.83843047], [1516652280000, 0.09224216, 0.09244874, 0.09224216, 0.09226375, 8.06937324], [1516652340000, 0.09226375, 0.09226384, 0.09224216, 0.09226375, 20.42101175], [1516652400000, 0.09226384, 0.0923, 0.09224216, 0.09224216, 14.35949734], [1516652460000, 0.09244874, 0.09244874, 0.09224216, 0.09224216, 3.82212128], [1516652520000, 0.09244872, 0.09244874, 0.09224216, 0.09244874, 6.39965205], [1516652580000, 0.09244874, 0.09244874, 0.09224216, 0.09224216, 3.89810416], [1516652640000, 0.09244872, 0.09244874, 0.09244872, 0.09244872, 4.52686993], [1516652700000, 0.09244874, 0.09244874, 0.09224216, 0.09224216, 21.71347814], [1516652760000, 0.09244874, 0.09244874, 0.09224217, 0.09224217, 9.30243957], [1516652820000, 0.09224216, 0.09244874, 0.09224216, 0.09244873, 11.08186423], [1516652880000, 0.09244873, 0.09244873, 0.09224324, 0.09244873, 5.09923688], [1516652940000, 0.09224459, 0.09244887, 0.09224459, 0.09244887, 9.35704266], [1516653000000, 0.09244887, 0.0924949, 0.09244887, 0.0924949, 7.86613798], [1516653060000, 0.092485, 0.0924949, 0.092485, 0.0924949, 13.7186867], [1516653120000, 0.0924949, 0.0924949, 0.09244887, 0.09244887, 20.59930414], [1516653180000, 0.09244887, 0.092485, 0.0923571, 0.0923571, 3.2855528], [1516653240000, 0.092485, 0.092485, 0.09224611, 0.092485, 7.06496845], [1516653300000, 0.0924489, 0.092485, 0.09224217, 0.0924489, 28.8519417], [1516653360000, 0.0924489, 0.09244925, 0.09213581, 0.09213581, 55.15124581], [1516653420000, 0.09248496, 0.09248496, 0.09213576, 0.0922, 43.5919992], [1516653480000, 0.09213576, 0.09246489, 0.09213576, 0.09245999, 72.69524479], [1516653540000, 0.09223596, 0.09245999, 0.09213576, 0.09213576, 6.59638965], [1516653600000, 0.09213576, 0.092136, 0.09213576, 0.092136, 7.85388785], [1516653660000, 0.092136, 0.092136, 0.09213575, 0.09213575, 26.86170732], [1516653720000, 0.092136, 0.092136, 0.0919, 0.09207195, 59.36346571], [1516653780000, 0.09207195, 0.092136, 0.09180121, 0.092136, 7.44039211], [1516653840000, 0.092136, 0.092136, 0.09180121, 0.09180121, 4.68861233], [1516653900000, 0.092136, 0.09227014, 0.09180121, 0.09180121, 17.65267549], [1516653960000, 0.092136, 0.09227014, 0.09180151, 0.09212823, 8.58209528], [1516654020000, 0.092116, 0.092116, 0.0918, 0.0918, 27.99889141], [1516654080000, 0.0918, 0.09209297, 0.0918, 0.09209296, 10.3075325], [1516654140000, 0.09209297, 0.09209297, 0.09178926, 0.0918, 18.76985957], [1516654200000, 0.0918, 0.0918918, 0.09175, 0.09175, 95.24765633], [1516654260000, 0.09175, 0.09209297, 0.09175, 0.09209297, 8.5279402], [1516654320000, 0.09206993, 0.09209297, 0.09175006, 0.09175006, 4.85332801], [1516654380000, 0.09206993, 0.09209297, 0.09206993, 0.09209297, 8.91104943], [1516654440000, 0.09207993, 0.09209297, 0.09207993, 0.09207993, 13.3918901], [1516654500000, 0.09209297, 0.092136, 0.09207993, 0.092136, 19.11657986], [1516654560000, 0.09207993, 0.09233631, 0.09207993, 0.09207993, 28.91004714], [1516654620000, 0.0922435, 0.0922435, 0.09207993, 0.0922435, 1.68280631], [1516654680000, 0.092136, 0.0922435, 0.09207999, 0.0922435, 9.35337805], [1516654740000, 0.09207999, 0.0922435, 0.09207993, 0.09207999, 9.96397441], [1516654800000, 0.09207999, 0.0922435, 0.09207993, 0.09207993, 7.16703092], [1516654860000, 0.0922435, 0.0922435, 0.09207993, 0.09207993, 4.64216256], [1516654920000, 0.09207993, 0.0922435, 0.09207993, 0.09207993, 19.63626343], [1516654980000, 0.0922435, 0.09230972, 0.09207993, 0.09230972, 4.18327019], [1516655040000, 0.09230971, 0.09230972, 0.09207994, 0.09207994, 2.65536484], [1516655100000, 0.0923, 0.09230972, 0.09207994, 0.09230972, 2.35580642], [1516655160000, 0.0923, 0.09230972, 0.0923, 0.09230972, 2.65063339], [1516655220000, 0.09230961, 0.09230972, 0.09207993, 0.0923, 35.66216633], [1516655280000, 0.09221921, 0.09230972, 0.09207996, 0.09211472, 14.46156958], [1516655340000, 0.09230972, 0.09230972, 0.0921353, 0.09230972, 22.27238645], [1516655400000, 0.09230972, 0.09230972, 0.09217327, 0.09221925, 68.91388232], [1516655460000, 0.09221925, 0.09230972, 0.09207995, 0.09207995, 31.35443866], [1516655520000, 0.09207994, 0.09225865, 0.09190001, 0.09220962, 16.72237224], [1516655580000, 0.09190001, 0.09229997, 0.0919, 0.09190001, 16.10344555], [1516655640000, 0.09190001, 0.09220699, 0.09175, 0.09175002, 6.77353088], [1516655700000, 0.09220697, 0.09220697, 0.09175, 0.09176, 74.48432452], [1516655760000, 0.092, 0.0922, 0.09175998, 0.09175998, 43.57751623], [1516655820000, 0.09175999, 0.09215327, 0.09175, 0.09215325, 7.90553093], [1516655880000, 0.09176, 0.09220962, 0.09175, 0.09175, 38.199067], [1516655940000, 0.09176, 0.09230971, 0.09175, 0.09200692, 23.50778853], [1516656000000, 0.09200692, 0.09227688, 0.091733, 0.09227687, 19.69273547], [1516656060000, 0.091773, 0.09227687, 0.091733, 0.0919228, 13.84961838], [1516656120000, 0.09227684, 0.09227688, 0.0919228, 0.092236, 5.45792037], [1516656180000, 0.0919228, 0.09213013, 0.091733, 0.09176637, 7.061453], [1516656240000, 0.09213197, 0.09213197, 0.09170852, 0.09170852, 13.02690052], [1516656300000, 0.09170852, 0.0919969, 0.09170002, 0.09189401, 3.71525996], [1516656360000, 0.0918969, 0.0919969, 0.09169, 0.09169, 16.86482048], [1516656420000, 0.0917531, 0.0917531, 0.09163327, 0.09163327, 6.03420707], [1516656480000, 0.09163327, 0.09166845, 0.09156656, 0.09166844, 27.90421095], [1516656540000, 0.09166844, 0.09166845, 0.0915, 0.0915, 27.20012256], [1516656600000, 0.09149503, 0.09158003, 0.0913, 0.09158003, 51.386582], [1516656660000, 0.09158003, 0.09166845, 0.09127, 0.0916683, 13.89998857], [1516656720000, 0.09157001, 0.0916683, 0.0914234, 0.09166829, 28.13679468], [1516656780000, 0.09157, 0.09166829, 0.09157, 0.09166828, 5.74755828], [1516656840000, 0.09165, 0.09165, 0.0914234, 0.0914234, 16.09831713], [1516656900000, 0.0914234, 0.09157001, 0.0914234, 0.09157, 8.77560596], [1516656960000, 0.09157, 0.09157, 0.0912705, 0.0912705, 12.45547897], [1516657020000, 0.09156997, 0.09156998, 0.0914234, 0.09147226, 15.61463265], [1516657080000, 0.09147227, 0.09156998, 0.09127052, 0.0914235, 19.34514716], [1516657140000, 0.09127052, 0.09155999, 0.09127052, 0.0914235, 11.97136073], [1516657200000, 0.09127053, 0.09155999, 0.09127052, 0.0914235, 15.44480606], [1516657260000, 0.0914235, 0.0914235, 0.09127051, 0.0914235, 49.24745025], [1516657320000, 0.0914235, 0.0914235, 0.09127051, 0.0914235, 29.26016429], [1516657380000, 0.0914235, 0.0914235, 0.09127051, 0.091423, 42.15898944], [1516657440000, 0.091423, 0.0914235, 0.0912705, 0.09137748, 52.38572269], [1516657500000, 0.09142203, 0.0916684, 0.09127, 0.09127, 33.66778907], [1516657560000, 0.09131682, 0.09183518, 0.09117, 0.09117, 83.37925523], [1516657620000, 0.0916684, 0.09169707, 0.09108, 0.091599, 39.70058105], [1516657680000, 0.09114863, 0.09159631, 0.09100001, 0.09154402, 21.8553521], [1516657740000, 0.09154263, 0.09154263, 0.09100002, 0.09150489, 3.89473461], [1516657800000, 0.09150489, 0.09150491, 0.0913, 0.09149719, 11.75767896], [1516657860000, 0.09149719, 0.09150495, 0.09100001, 0.09100002, 29.88176132], [1516657920000, 0.09100002, 0.09153286, 0.091, 0.09129, 14.00898794], [1516657980000, 0.09129, 0.09178616, 0.09129, 0.09132058, 10.51090005], [1516658040000, 0.09156393, 0.09178615, 0.09132058, 0.09133571, 22.99629738], [1516658100000, 0.09133571, 0.09178616, 0.09132058, 0.09178615, 9.93821776], [1516658160000, 0.09178615, 0.09183518, 0.091786, 0.0917862, 60.23112762], [1516658220000, 0.0918216, 0.09189547, 0.0917862, 0.09183518, 13.88321298], [1516658280000, 0.0917862, 0.09227688, 0.0917862, 0.09227683, 17.24390118], [1516658340000, 0.09217966, 0.09228814, 0.09217966, 0.0921797, 58.76941776], [1516658400000, 0.09217966, 0.09217966, 0.09179, 0.09195365, 21.52458929], [1516658460000, 0.09217966, 0.09234902, 0.09217966, 0.09230006, 19.27909035], [1516658520000, 0.09234902, 0.09245382, 0.09217967, 0.09217967, 20.69203399], [1516658580000, 0.09217967, 0.092485, 0.09217966, 0.09241724, 29.81189142], [1516658640000, 0.09241724, 0.092485, 0.09227184, 0.092485, 14.3352526], [1516658700000, 0.09227184, 0.092485, 0.09195365, 0.09227183, 7.11192174], [1516658760000, 0.09247, 0.09249999, 0.09227183, 0.09249988, 45.5941771], [1516658820000, 0.09249988, 0.09249999, 0.09201996, 0.09248463, 33.6853054], [1516658880000, 0.09201996, 0.0925, 0.09201996, 0.0924949, 5.64687911], [1516658940000, 0.0924949, 0.09249657, 0.09195367, 0.0924025, 28.25827694], [1516659000000, 0.09201996, 0.09269994, 0.09201996, 0.09265904, 49.46356013], [1516659060000, 0.09206154, 0.09267, 0.09195365, 0.09212267, 27.70739644], [1516659120000, 0.092612, 0.09261699, 0.09212926, 0.09259384, 11.29548973], [1516659180000, 0.09259383, 0.09259384, 0.09213542, 0.09213542, 3.61280146], [1516659240000, 0.0925938, 0.09259382, 0.09213542, 0.09214542, 25.60290053], [1516659300000, 0.09258, 0.092588, 0.09212267, 0.09215543, 7.38983569], [1516659360000, 0.09258, 0.09259383, 0.09258, 0.09259383, 16.18209092], [1516659420000, 0.09258, 0.09259383, 0.09212267, 0.09212267, 6.31320357], [1516659480000, 0.0921552, 0.092538, 0.09212267, 0.09214542, 4.30562647], [1516659540000, 0.092145, 0.092584, 0.09212267, 0.09215, 32.16430132], [1516659600000, 0.09258365, 0.09259383, 0.09215946, 0.09215946, 9.95869721], [1516659660000, 0.09248292, 0.09248292, 0.09215, 0.09215946, 6.09248566], [1516659720000, 0.09215946, 0.09225055, 0.09215946, 0.09215946, 2.67736262], [1516659780000, 0.0922, 0.0922, 0.09215946, 0.09215946, 5.45851817], [1516659840000, 0.0922, 0.09253, 0.09215946, 0.09253, 30.72050682], [1516659900000, 0.09253, 0.09261199, 0.09253, 0.09259383, 123.07066784], [1516659960000, 0.09259383, 0.09267, 0.09259383, 0.0926119, 40.20749613], [1516660020000, 0.0926119, 0.09267, 0.0926119, 0.09261199, 37.70771691], [1516660080000, 0.09261199, 0.09270006, 0.09261199, 0.09270006, 33.59134055], [1516660140000, 0.09270006, 0.09274999, 0.0926119, 0.09269997, 46.05136003], [1516660200000, 0.09269997, 0.09274987, 0.0926119, 0.0927, 13.68416607], [1516660260000, 0.0927, 0.09274985, 0.0926119, 0.0926119, 12.74779474], [1516660320000, 0.09269997, 0.09269997, 0.0926119, 0.09269997, 43.42662365], [1516660380000, 0.09269998, 0.09272, 0.0926119, 0.0926119, 4.21834635], [1516660440000, 0.09272, 0.09273594, 0.09215947, 0.0926702, 8.14709699], [1516660500000, 0.09273594, 0.09274994, 0.09229843, 0.09273594, 10.24599532], [1516660560000, 0.0927359, 0.0927359, 0.09228799, 0.09270998, 14.92017364], [1516660620000, 0.09270998, 0.09275, 0.0926, 0.09272572, 11.83172582], [1516660680000, 0.092289, 0.09271491, 0.09228888, 0.09265119, 17.11664996], [1516660740000, 0.09263532, 0.09271491, 0.0922889, 0.09271491, 11.76713645], [1516660800000, 0.09262816, 0.09270921, 0.09247721, 0.09270387, 16.59896286], [1516660860000, 0.09264, 0.09264, 0.0922901, 0.09264, 3.62151322], [1516660920000, 0.0922901, 0.09264, 0.0922901, 0.09238229, 9.61580331], [1516660980000, 0.09264, 0.09275009, 0.09238229, 0.09275009, 3.44454155], [1516661040000, 0.09275009, 0.09275012, 0.09238229, 0.09264, 7.12503063], [1516661100000, 0.09264, 0.09275012, 0.09264, 0.09264, 9.98295906], [1516661160000, 0.09275012, 0.092757, 0.09275008, 0.09275008, 10.73919616], [1516661220000, 0.092757, 0.092795, 0.09239, 0.092795, 23.48190004], [1516661280000, 0.092787, 0.092795, 0.09239, 0.0927869, 41.15411872], [1516661340000, 0.09239, 0.0927945, 0.09239, 0.09239, 15.59047474], [1516661400000, 0.09278387, 0.09278388, 0.09239, 0.09239, 16.70762497], [1516661460000, 0.09239, 0.09259224, 0.09228888, 0.09256999, 46.36845848], [1516661520000, 0.09253709, 0.09254, 0.09228799, 0.0923, 18.18293395], [1516661580000, 0.0923, 0.09263047, 0.09199406, 0.09263045, 82.38955708], [1516661640000, 0.09227, 0.09245579, 0.09192281, 0.09233876, 8.91719348], [1516661700000, 0.0924, 0.09258192, 0.09233876, 0.0924, 12.81696998], [1516661760000, 0.0924, 0.09258192, 0.09233876, 0.09233876, 26.28399057], [1516661820000, 0.0924, 0.09261853, 0.0924, 0.0924, 10.07222719], [1516661880000, 0.09233877, 0.09261852, 0.09233876, 0.09261852, 14.23794601], [1516661940000, 0.09261851, 0.09261852, 0.09233876, 0.092614, 12.0491409], [1516662000000, 0.0924, 0.09260431, 0.0924, 0.0924, 3.39110172], [1516662060000, 0.0924, 0.09260431, 0.09233876, 0.0926, 19.84889951], [1516662120000, 0.09260431, 0.09260431, 0.09233876, 0.09260001, 9.85197627], [1516662180000, 0.09234878, 0.09260001, 0.09201854, 0.09259999, 12.73053728], [1516662240000, 0.09259998, 0.09259999, 0.09205118, 0.09259997, 4.04514039], [1516662300000, 0.09259998, 0.09260001, 0.0925001, 0.09260001, 11.77120871], [1516662360000, 0.09260001, 0.09260001, 0.09195365, 0.09256299, 38.49181799], [1516662420000, 0.09256299, 0.09260001, 0.09201189, 0.09251257, 12.80923867], [1516662480000, 0.09251257, 0.09255915, 0.09211, 0.09250794, 10.7702474], [1516662540000, 0.09250794, 0.092568, 0.09213, 0.0923, 2.82832318], [1516662600000, 0.09250793, 0.09262838, 0.09231247, 0.09262838, 34.49698793], [1516662660000, 0.09262638, 0.09279447, 0.09211, 0.09211, 31.43727786], [1516662720000, 0.09211, 0.0926861, 0.09211, 0.09265422, 18.74221223], [1516662780000, 0.09249494, 0.09265422, 0.09240478, 0.09249484, 5.32306298], [1516662840000, 0.09249484, 0.0927216, 0.09240479, 0.0927216, 41.12504554], [1516662900000, 0.09249, 0.09272299, 0.09249, 0.0927189, 16.73763918], [1516662960000, 0.09272299, 0.09272299, 0.0925, 0.0925, 5.64770105], [1516663020000, 0.09266689, 0.09272804, 0.0925, 0.0925, 15.29379529], [1516663080000, 0.09272803, 0.09272804, 0.0925, 0.0925, 12.75240412], [1516663140000, 0.0925, 0.0927, 0.0925, 0.0927, 13.32132236], [1516663200000, 0.0927, 0.09272805, 0.09240478, 0.0925, 35.26250992], [1516663260000, 0.09240478, 0.09263699, 0.09240478, 0.09249494, 9.95022041], [1516663320000, 0.09249494, 0.09269999, 0.09209761, 0.09250304, 25.06379039], [1516663380000, 0.09209763, 0.0926348, 0.09209763, 0.0926348, 23.05425977], [1516663440000, 0.09257508, 0.09257508, 0.0920975, 0.0920975, 5.87023872], [1516663500000, 0.0920975, 0.0920978, 0.09209043, 0.0920978, 5.52730676], [1516663560000, 0.0920978, 0.09255499, 0.09209043, 0.09209043, 6.35264483], [1516663620000, 0.09245396, 0.09245396, 0.09218968, 0.09218969, 6.66361181], [1516663680000, 0.0924, 0.09243389, 0.09238833, 0.09238843, 3.00187014], [1516663740000, 0.09218969, 0.09239245, 0.09218968, 0.09239245, 15.15345951], [1516663800000, 0.09218969, 0.09239238, 0.09218968, 0.09239218, 6.72138693], [1516663860000, 0.09218968, 0.09267997, 0.09218968, 0.09267481, 39.85841216], [1516663920000, 0.09218969, 0.09245391, 0.09218968, 0.09242715, 25.14077257], [1516663980000, 0.09255243, 0.09255243, 0.09218904, 0.09218904, 11.218582], [1516664040000, 0.09218904, 0.09237999, 0.0921, 0.0921, 14.11754752], [1516664100000, 0.09237998, 0.09237998, 0.0921, 0.09214582, 2.91622423], [1516664160000, 0.09214581, 0.0923798, 0.092001, 0.0923798, 10.49603286], [1516664220000, 0.0923798, 0.09237999, 0.09219211, 0.09219211, 8.19014064], [1516664280000, 0.09219211, 0.092695, 0.09210001, 0.09251193, 15.84257894], [1516664340000, 0.09247824, 0.09269499, 0.09247814, 0.09269499, 6.44834661], [1516664400000, 0.09269491, 0.09269491, 0.0923, 0.0923, 29.97265792], [1516664460000, 0.09247358, 0.09251669, 0.09219319, 0.09219319, 9.60191807], [1516664520000, 0.0924648, 0.09246805, 0.09210002, 0.09210002, 23.14882913], [1516664580000, 0.09210002, 0.09246805, 0.09210002, 0.09230109, 14.89572811], [1516664640000, 0.09230109, 0.09246803, 0.09210109, 0.09219, 6.64844618], [1516664700000, 0.09218999, 0.0924313, 0.09210109, 0.0924313, 7.16046071], [1516664760000, 0.09241405, 0.09241405, 0.0921011, 0.0921011, 36.49058667], [1516664820000, 0.0921011, 0.09233007, 0.09210003, 0.09210003, 17.91846509], [1516664880000, 0.09233006, 0.09233007, 0.09210003, 0.09233007, 25.53863859], [1516664940000, 0.09210004, 0.09233007, 0.092, 0.09233007, 29.73682992], [1516665000000, 0.09233007, 0.09233007, 0.09199738, 0.09233005, 12.27656954], [1516665060000, 0.09199738, 0.09232995, 0.09199738, 0.09232995, 9.74764339], [1516665120000, 0.09232995, 0.09233007, 0.09219383, 0.09233005, 11.86494923], [1516665180000, 0.09233005, 0.09233007, 0.09219384, 0.09233007, 8.13291851], [1516665240000, 0.09233006, 0.0924, 0.09214007, 0.09214009, 30.87873986], [1516665300000, 0.09239989, 0.09258758, 0.09201229, 0.09235, 62.80337547], [1516665360000, 0.09235, 0.0925, 0.09235, 0.09235, 10.18100253], [1516665420000, 0.09235, 0.09235, 0.09224925, 0.09235, 24.83170449], [1516665480000, 0.09224925, 0.0927, 0.09224925, 0.09249999, 14.71617193], [1516665540000, 0.09249999, 0.09258024, 0.09224925, 0.09255432, 33.08920834], [1516665600000, 0.09249999, 0.09277997, 0.09224925, 0.0927, 28.93887837], [1516665660000, 0.0927, 0.09277995, 0.09224925, 0.09224926, 24.8914347], [1516665720000, 0.09224926, 0.09277997, 0.09224925, 0.09269992, 30.53321236], [1516665780000, 0.09224926, 0.0927799, 0.09224926, 0.09277988, 25.34708141], [1516665840000, 0.09225001, 0.09277988, 0.09224925, 0.09225001, 79.41465849], [1516665900000, 0.09225001, 0.09277988, 0.09224925, 0.09277987, 11.21855834], [1516665960000, 0.09276049, 0.09277988, 0.09224925, 0.09276049, 10.71216823], [1516666020000, 0.09276049, 0.09277988, 0.09204801, 0.09208245, 30.05652643], [1516666080000, 0.09277939, 0.09277939, 0.0920816, 0.09273478, 2.71403112], [1516666140000, 0.09221591, 0.09273371, 0.09205301, 0.09205801, 91.67246588], [1516666200000, 0.09205801, 0.09258235, 0.09205301, 0.09258235, 74.62905872], [1516666260000, 0.09258235, 0.09273499, 0.092107, 0.09267502, 11.37290961], [1516666320000, 0.0924, 0.09269116, 0.09215015, 0.09249114, 18.34271825], [1516666380000, 0.09250114, 0.09269114, 0.09215015, 0.0925, 29.64881169], [1516666440000, 0.09249538, 0.09273499, 0.09215015, 0.09220002, 19.28016419], [1516666500000, 0.09273492, 0.09273492, 0.09220004, 0.09273491, 8.51158964], [1516666560000, 0.09245515, 0.09273492, 0.09245513, 0.0926549, 13.66000486], [1516666620000, 0.0926549, 0.09277987, 0.09255691, 0.09255695, 14.98911744], [1516666680000, 0.09274, 0.092795, 0.09255695, 0.092795, 52.70198335], [1516666740000, 0.09256695, 0.092795, 0.09255695, 0.09256695, 7.17790379], [1516666800000, 0.092795, 0.092795, 0.09256695, 0.09256695, 8.77181419], [1516666860000, 0.09256695, 0.092795, 0.09256695, 0.09279495, 11.02667458], [1516666920000, 0.09256695, 0.09279494, 0.09255695, 0.09256695, 11.35052872], [1516666980000, 0.09256695, 0.09279496, 0.09255695, 0.09255695, 28.67017674], [1516667040000, 0.09255695, 0.09279491, 0.09255691, 0.09255691, 31.12359052], [1516667100000, 0.09255691, 0.09278499, 0.09245515, 0.09255695, 7.36607941], [1516667160000, 0.09255695, 0.09279496, 0.09245515, 0.092565, 9.41926352], [1516667220000, 0.09265672, 0.09266542, 0.092565, 0.092565, 9.69248287], [1516667280000, 0.092565, 0.09278494, 0.092565, 0.092565, 25.21674412], [1516667340000, 0.09268978, 0.09278498, 0.092565, 0.092565, 11.06450198], [1516667400000, 0.09271111, 0.09271111, 0.09256, 0.092565, 22.73624866], [1516667460000, 0.092566, 0.09276092, 0.09220003, 0.09267982, 14.41418825], [1516667520000, 0.09226507, 0.09276092, 0.092205, 0.09268765, 4.57083638], [1516667580000, 0.09231074, 0.09231074, 0.09220504, 0.09220504, 10.70284058], [1516667640000, 0.09230074, 0.09231074, 0.09220002, 0.09231074, 2.09042346], [1516667700000, 0.09230074, 0.09231074, 0.09221, 0.09231074, 18.73135932], [1516667760000, 0.09231074, 0.09258783, 0.09221, 0.09231074, 21.92562067], [1516667820000, 0.09258783, 0.09258783, 0.09234074, 0.09234075, 13.14198279], [1516667880000, 0.09258783, 0.09258783, 0.09234075, 0.09258782, 13.0661181], [1516667940000, 0.09258782, 0.09258783, 0.09258782, 0.09258782, 7.24220212], [1516668000000, 0.09258782, 0.09258783, 0.09256, 0.09256, 59.43363856], [1516668060000, 0.09256, 0.09271074, 0.09256, 0.09258785, 36.26242949], [1516668120000, 0.09271074, 0.09275099, 0.09258785, 0.09265785, 36.31104135], [1516668180000, 0.09258786, 0.09265785, 0.09251883, 0.09256468, 20.40258769], [1516668240000, 0.09251999, 0.09265785, 0.09234002, 0.09256469, 8.07574999], [1516668300000, 0.09256469, 0.09265785, 0.09236469, 0.0923647, 13.78395851], [1516668360000, 0.09256469, 0.09265785, 0.09236469, 0.0926478, 10.2027578], [1516668420000, 0.0926578, 0.09265784, 0.09236469, 0.0926578, 14.45660532], [1516668480000, 0.0926578, 0.09275087, 0.0926578, 0.09273521, 58.15153162], [1516668540000, 0.0926578, 0.09273521, 0.0926578, 0.09273521, 20.16568455], [1516668600000, 0.09269, 0.09273521, 0.0926578, 0.09266684, 12.34387279], [1516668660000, 0.0926578, 0.09273521, 0.0926578, 0.0926578, 15.35550631], [1516668720000, 0.0926578, 0.0927352, 0.09255, 0.09255, 10.74412415], [1516668780000, 0.09255, 0.09257685, 0.0922, 0.0922263, 38.05453256], [1516668840000, 0.09252587, 0.0925768, 0.09222631, 0.09257679, 1.36734953], [1516668900000, 0.09257679, 0.0925768, 0.09230001, 0.0925768, 24.69729387], [1516668960000, 0.0925768, 0.0926578, 0.09230002, 0.0926578, 12.311572], [1516669020000, 0.0926578, 0.0926578, 0.09230003, 0.09235003, 7.89220835], [1516669080000, 0.09235003, 0.09271899, 0.09234938, 0.09234938, 28.66009948], [1516669140000, 0.09234938, 0.09264778, 0.0923, 0.0923, 30.17153416], [1516669200000, 0.0923, 0.09232629, 0.09219, 0.09219, 32.71604294], [1516669260000, 0.09219, 0.09232629, 0.09209044, 0.09219, 52.53902438], [1516669320000, 0.09232629, 0.09232629, 0.09209044, 0.09209044, 13.49028503], [1516669380000, 0.09209045, 0.09232629, 0.09206507, 0.09232629, 9.6190417], [1516669440000, 0.09232629, 0.09232629, 0.09209044, 0.09232629, 12.717905], [1516669500000, 0.09232629, 0.09232629, 0.09206508, 0.09206508, 6.35631635], [1516669560000, 0.09206508, 0.09212448, 0.09206507, 0.09212448, 5.37409179], [1516669620000, 0.09212448, 0.09232629, 0.09200001, 0.09200001, 36.84947524], [1516669680000, 0.09232629, 0.09232629, 0.09200005, 0.09232627, 14.38202794], [1516669740000, 0.09210011, 0.09232629, 0.092, 0.0920001, 17.04413045], [1516669800000, 0.0920001, 0.09232628, 0.0920001, 0.09229999, 26.243394], [1516669860000, 0.09229999, 0.09232629, 0.09200016, 0.09232629, 17.42966614], [1516669920000, 0.0920002, 0.09232629, 0.0920002, 0.09232627, 2.72489824], [1516669980000, 0.09200022, 0.09232629, 0.09200022, 0.09232629, 6.66149318], [1516670040000, 0.09232629, 0.09232629, 0.09232629, 0.09232629, 9.22244562], [1516670100000, 0.09232629, 0.09234938, 0.09215078, 0.09234938, 12.56952753], [1516670160000, 0.09234938, 0.09249592, 0.09232629, 0.09232629, 21.74625691], [1516670220000, 0.09249496, 0.09249496, 0.09208076, 0.09249491, 4.91424727], [1516670280000, 0.09249491, 0.09249491, 0.09225001, 0.09249396, 14.17664883], [1516670340000, 0.09225003, 0.09225003, 0.09225001, 0.09225003, 24.12578232], [1516670400000, 0.09225003, 0.09225003, 0.09225001, 0.09225003, 25.81121986], [1516670460000, 0.09225003, 0.09252, 0.09225001, 0.09252, 10.65682974], [1516670520000, 0.09252, 0.09262897, 0.09225001, 0.0925, 14.37911877], [1516670580000, 0.09247688, 0.09258002, 0.09225001, 0.09225001, 10.59612329], [1516670640000, 0.09225003, 0.09256002, 0.09225001, 0.09235002, 5.30379281], [1516670700000, 0.09256, 0.09256002, 0.09235002, 0.09256002, 4.65455361], [1516670760000, 0.09256002, 0.09263299, 0.09235003, 0.09263299, 12.55085273], [1516670820000, 0.09263299, 0.09263299, 0.09235002, 0.09235002, 3.06133821], [1516670880000, 0.09235003, 0.09235003, 0.09235002, 0.09235002, 8.88440553], [1516670940000, 0.09235003, 0.09235003, 0.09235002, 0.09235002, 6.47820152], [1516671000000, 0.09235002, 0.09235003, 0.09235, 0.09235003, 3.94299121], [1516671060000, 0.09235003, 0.09235003, 0.09225005, 0.09235003, 12.09773061], [1516671120000, 0.09235003, 0.09235003, 0.09226888, 0.09235003, 18.37868504], [1516671180000, 0.09235003, 0.092668, 0.09226888, 0.092668, 107.90788283], [1516671240000, 0.09251907, 0.09266797, 0.09251907, 0.09251908, 3.5931745], [1516671300000, 0.09257839, 0.092668, 0.09235003, 0.09251908, 13.18286719], [1516671360000, 0.09266798, 0.092695, 0.09251907, 0.092695, 17.83141061], [1516671420000, 0.09269999, 0.0927, 0.09251908, 0.09267183, 8.87471548], [1516671480000, 0.09265183, 0.09273521, 0.09265183, 0.0927, 58.6734687], [1516671540000, 0.0927, 0.09275, 0.0927, 0.09273521, 46.50933955], [1516671600000, 0.09273521, 0.09278627, 0.0927111, 0.0927111, 52.72410418], [1516671660000, 0.0927111, 0.09278625, 0.0927111, 0.09278099, 16.29328662], [1516671720000, 0.09278099, 0.09278099, 0.0927111, 0.0927111, 83.31147454], [1516671780000, 0.0927111, 0.09277597, 0.09251909, 0.09251909, 95.81570694], [1516671840000, 0.09251909, 0.0926911, 0.09228451, 0.0926911, 3.61254017], [1516671900000, 0.09228451, 0.0925332, 0.09228451, 0.09249909, 2.36014334], [1516671960000, 0.09250212, 0.0926911, 0.0924991, 0.0924991, 5.50477151], [1516672020000, 0.0924991, 0.09278619, 0.09225006, 0.09225006, 52.46486738], [1516672080000, 0.092732, 0.092732, 0.09217136, 0.092697, 4.88970568], [1516672140000, 0.09269699, 0.092697, 0.0922, 0.0922, 4.1560821], [1516672200000, 0.0922, 0.09269399, 0.0922, 0.09220001, 5.88790892], [1516672260000, 0.09269398, 0.09269399, 0.0922, 0.0922, 9.75932046], [1516672320000, 0.09220001, 0.09269397, 0.09213001, 0.09220001, 12.20519447], [1516672380000, 0.09220003, 0.09278616, 0.09220001, 0.09267399, 4.29254594], [1516672440000, 0.09267399, 0.09267399, 0.09220003, 0.09264079, 6.63052125], [1516672500000, 0.09263077, 0.09263077, 0.09220006, 0.09220007, 3.7291909], [1516672560000, 0.09220007, 0.09259997, 0.09220007, 0.09220007, 4.08185278], [1516672620000, 0.09249999, 0.09263077, 0.0922001, 0.09245999, 12.67396085], [1516672680000, 0.09245999, 0.09263076, 0.09220012, 0.09263076, 10.17273868], [1516672740000, 0.09263076, 0.09263077, 0.0922002, 0.09263076, 13.89353337], [1516672800000, 0.09263077, 0.09263077, 0.0922002, 0.092205, 16.5732873], [1516672860000, 0.09220501, 0.09263077, 0.0922002, 0.0922002, 14.79579796], [1516672920000, 0.09261006, 0.09261007, 0.09220011, 0.09220012, 12.71866109], [1516672980000, 0.09261007, 0.09261007, 0.0922001, 0.09220015, 10.67518704], [1516673040000, 0.09261007, 0.09261007, 0.09220015, 0.0922002, 9.2242581], [1516673100000, 0.09220015, 0.09261007, 0.09220015, 0.0922003, 4.11420385], [1516673160000, 0.0922003, 0.09261005, 0.0922003, 0.0922003, 4.10002877], [1516673220000, 0.09261004, 0.09261004, 0.0922003, 0.09261001, 4.06063521], [1516673280000, 0.09261, 0.09261, 0.09260999, 0.09260999, 1.68626272], [1516673340000, 0.09221, 0.09260999, 0.09221, 0.09260999, 5.09169838], [1516673400000, 0.09260999, 0.09260999, 0.09221005, 0.09260999, 4.58420329], [1516673460000, 0.09260999, 0.09260999, 0.09230234, 0.09260999, 3.69593374], [1516673520000, 0.09260999, 0.09260999, 0.09230226, 0.09230226, 38.09237372], [1516673580000, 0.09230235, 0.09230235, 0.09230226, 0.09230235, 2.62390721], [1516673640000, 0.09260999, 0.09260999, 0.09230235, 0.09260999, 6.11396973], [1516673700000, 0.09245617, 0.09261006, 0.09230238, 0.09261006, 11.61635464], [1516673760000, 0.09261, 0.09261005, 0.09259, 0.09261, 14.91639451], [1516673820000, 0.09261, 0.09261006, 0.09230235, 0.09259006, 18.49302045], [1516673880000, 0.09230236, 0.09261007, 0.09230235, 0.09261007, 18.50721981], [1516673940000, 0.09261007, 0.09261007, 0.09230235, 0.09261007, 12.67602758], [1516674000000, 0.09230235, 0.09261007, 0.09230226, 0.09230236, 3.50319083], [1516674060000, 0.09230236, 0.09259, 0.09230236, 0.0925, 6.53182526], [1516674120000, 0.0925, 0.09261007, 0.09230236, 0.09259, 13.00436489], [1516674180000, 0.09259, 0.09261007, 0.09259, 0.09259, 8.2419107], [1516674240000, 0.09261007, 0.09261007, 0.09259001, 0.09259001, 0.77188669], [1516674300000, 0.09259011, 0.09261007, 0.09259011, 0.09259011, 5.34298587], [1516674360000, 0.09259011, 0.09261007, 0.09259001, 0.09261007, 6.15869852], [1516674420000, 0.09261007, 0.09261007, 0.09259001, 0.09261, 10.38495179], [1516674480000, 0.09261007, 0.09261007, 0.09261001, 0.09261002, 3.67364013], [1516674540000, 0.09261002, 0.09261007, 0.09261, 0.09261, 21.34084179], [1516674600000, 0.09261, 0.09261007, 0.09261, 0.09261007, 155.33541093], [1516674660000, 0.09261001, 0.09261007, 0.09261, 0.09261, 13.91883335], [1516674720000, 0.09261007, 0.09263077, 0.09261007, 0.09261008, 90.36684653], [1516674780000, 0.09261008, 0.09261008, 0.09261007, 0.09261007, 5.94782766], [1516674840000, 0.09261008, 0.09263077, 0.09261007, 0.09263077, 2.64203919], [1516674900000, 0.09261007, 0.09265082, 0.09261007, 0.09261008, 1.70401758], [1516674960000, 0.09261007, 0.09265081, 0.09261007, 0.09261007, 7.39917045], [1516675020000, 0.09265081, 0.09265081, 0.09261009, 0.09265081, 0.8565221], [1516675080000, 0.09265081, 0.09265081, 0.0926101, 0.09261011, 4.53937511], [1516675140000, 0.09261011, 0.09265081, 0.09261011, 0.0926508, 4.12448845], [1516675200000, 0.09265081, 0.09265081, 0.0926508, 0.0926508, 15.44166474], [1516675260000, 0.09265081, 0.09265082, 0.09261011, 0.09261011, 8.9446634], [1516675320000, 0.09261012, 0.09265082, 0.09261009, 0.09261009, 10.52392491], [1516675380000, 0.09261009, 0.09278618, 0.09261008, 0.09261008, 12.38523237], [1516675440000, 0.09278618, 0.09278618, 0.09261008, 0.09276297, 4.11352852], [1516675500000, 0.09276297, 0.09278618, 0.0927, 0.0927, 9.70092996], [1516675560000, 0.0927, 0.092795, 0.0927, 0.092795, 24.23177977], [1516675620000, 0.09278621, 0.092795, 0.0927, 0.09275, 80.28367014], [1516675680000, 0.09275, 0.09275, 0.09261008, 0.09275, 2.20306636], [1516675740000, 0.0927, 0.09275, 0.0927, 0.09274998, 3.93786162], [1516675800000, 0.09274998, 0.09274998, 0.0927, 0.09274998, 4.91804568], [1516675860000, 0.09274998, 0.09275, 0.0927, 0.09275, 5.04363901], [1516675920000, 0.09275, 0.09275, 0.0927, 0.092725, 14.64863667], [1516675980000, 0.092725, 0.09275, 0.0927, 0.0927, 26.69377974], [1516676040000, 0.0927, 0.09275, 0.0927, 0.0927298, 85.01231198], [1516676100000, 0.0927, 0.09275, 0.0925, 0.0925, 11.68327083], [1516676160000, 0.092739, 0.0927391, 0.09240175, 0.09240175, 3.08813625], [1516676220000, 0.09240175, 0.0927391, 0.09240175, 0.09240176, 0.91106316], [1516676280000, 0.0927391, 0.09275, 0.09240176, 0.09274751, 2.01248347], [1516676340000, 0.09274751, 0.09275, 0.0924019, 0.0924019, 13.18276807], [1516676400000, 0.09264551, 0.09267562, 0.0924019, 0.0924019, 4.46562681], [1516676460000, 0.0924019, 0.09269, 0.09240176, 0.0924019, 9.88191279], [1516676520000, 0.0924019, 0.0926668, 0.09240175, 0.09252161, 5.62356227], [1516676580000, 0.09258126, 0.09258126, 0.09240176, 0.09240176, 4.87776155], [1516676640000, 0.09240176, 0.09258126, 0.09240175, 0.0925811, 35.65978103], [1516676700000, 0.09240177, 0.09258125, 0.09240176, 0.09240176, 7.1689767], [1516676760000, 0.09240176, 0.09253489, 0.09240176, 0.09240176, 20.86114674], [1516676820000, 0.09240176, 0.09253489, 0.09240176, 0.09240179, 4.08289999], [1516676880000, 0.09240179, 0.09240189, 0.09240179, 0.09240179, 9.65843094], [1516676940000, 0.0924019, 0.09253487, 0.09221009, 0.09252684, 72.65186523], [1516677000000, 0.09252684, 0.09252684, 0.0923023, 0.0923023, 4.17423652], [1516677060000, 0.0923023, 0.09234178, 0.0923, 0.09234178, 26.58535121], [1516677120000, 0.0923, 0.09252684, 0.09220005, 0.09220015, 62.62318261], [1516677180000, 0.09220015, 0.09252684, 0.09220005, 0.09252684, 12.91799002], [1516677240000, 0.09252684, 0.09252684, 0.09220005, 0.09251699, 15.76089207], [1516677300000, 0.09251698, 0.09252684, 0.09221, 0.09252684, 5.43965147], [1516677360000, 0.09252684, 0.09271582, 0.09220005, 0.09220005, 35.61473386], [1516677420000, 0.09275, 0.09275, 0.09220004, 0.09265699, 42.25804499], [1516677480000, 0.092521, 0.09265699, 0.092005, 0.09220005, 29.71130655], [1516677540000, 0.09265698, 0.09277245, 0.092, 0.092, 23.49053118], [1516677600000, 0.09255853, 0.09255854, 0.09200012, 0.09255, 6.86598626], [1516677660000, 0.09254999, 0.09254999, 0.09200015, 0.09252681, 5.33524813], [1516677720000, 0.09252681, 0.09254999, 0.09250835, 0.09250835, 7.48059716], [1516677780000, 0.09200031, 0.09255, 0.0920003, 0.09255, 7.39074424], [1516677840000, 0.09255, 0.09266679, 0.09200012, 0.0920003, 23.2540931], [1516677900000, 0.0920003, 0.09250833, 0.09200019, 0.092508, 100.46973798], [1516677960000, 0.092508, 0.092508, 0.092001, 0.09219382, 46.19086265], [1516678020000, 0.09249995, 0.0925, 0.09219382, 0.09219382, 48.77379606], [1516678080000, 0.09219382, 0.0925, 0.09219382, 0.09219382, 43.23040824], [1516678140000, 0.09219382, 0.0925, 0.09219382, 0.09249, 85.26136763], [1516678200000, 0.09248893, 0.09248893, 0.09219382, 0.09219382, 26.7740049], [1516678260000, 0.09219383, 0.0925, 0.09219382, 0.092339, 30.11422633], [1516678320000, 0.092339, 0.0925, 0.092339, 0.092339, 46.49880504], [1516678380000, 0.092339, 0.0925, 0.092339, 0.092339, 22.67386768], [1516678440000, 0.0925, 0.0925, 0.09219382, 0.09219382, 6.25414498], [1516678500000, 0.09219382, 0.092339, 0.0918016, 0.091999, 96.35574261], [1516678560000, 0.091999, 0.092339, 0.09185112, 0.092339, 75.84881712], [1516678620000, 0.092339, 0.092339, 0.09199899, 0.09199899, 45.38666357], [1516678680000, 0.092101, 0.092339, 0.09199899, 0.09199909, 25.89243613], [1516678740000, 0.092339, 0.092339, 0.09199899, 0.092101, 11.92049326], [1516678800000, 0.092101, 0.092101, 0.09196493, 0.09197634, 36.47280568], [1516678860000, 0.09197634, 0.092339, 0.0918862, 0.092339, 40.25986768], [1516678920000, 0.092339, 0.092339, 0.09197635, 0.092339, 6.40050345], [1516678980000, 0.092339, 0.092339, 0.092, 0.09223356, 17.4687792], [1516679040000, 0.09223356, 0.092338, 0.09207336, 0.092338, 23.9593285], [1516679100000, 0.09217765, 0.092338, 0.09197635, 0.092, 12.11598426], [1516679160000, 0.092, 0.092337, 0.092, 0.092, 3.52298675], [1516679220000, 0.092337, 0.092337, 0.09225999, 0.092337, 7.52093723], [1516679280000, 0.092337, 0.092338, 0.092337, 0.092338, 5.07668511], [1516679340000, 0.092337, 0.092339, 0.09218449, 0.092339, 22.36922842], [1516679400000, 0.092339, 0.092339, 0.092185, 0.092185, 1.57140438], [1516679460000, 0.092339, 0.092339, 0.092185, 0.092185, 10.23445389], [1516679520000, 0.09233899, 0.09233899, 0.092185, 0.09233899, 9.20863431], [1516679580000, 0.09218501, 0.09233899, 0.092185, 0.09233899, 8.79497787], [1516679640000, 0.092185, 0.09232327, 0.09212327, 0.0923, 20.25093352], [1516679700000, 0.0923, 0.09233899, 0.09212327, 0.09212327, 28.44127022], [1516679760000, 0.09229692, 0.09233899, 0.09200002, 0.092334, 27.3986235], [1516679820000, 0.0923, 0.09232163, 0.09200001, 0.09200002, 2.16976286], [1516679880000, 0.09229999, 0.0923, 0.09229999, 0.0923, 17.88811085], [1516679940000, 0.0923, 0.0923, 0.09200002, 0.0923, 11.26112757], [1516680000000, 0.0923, 0.0923, 0.0922, 0.0922, 11.89482801], [1516680060000, 0.0923, 0.0923, 0.09200006, 0.09215055, 17.27617126], [1516680120000, 0.09227692, 0.0923, 0.09200002, 0.0920001, 23.83214707], [1516680180000, 0.092011, 0.09227692, 0.09198, 0.09198, 37.69176216], [1516680240000, 0.09198, 0.09198, 0.0919, 0.09198, 7.21593016], [1516680300000, 0.09193085, 0.09200002, 0.09190002, 0.09200002, 28.45176634], [1516680360000, 0.09200002, 0.09226054, 0.09200002, 0.09200004, 19.23115636], [1516680420000, 0.09200004, 0.09200004, 0.09200002, 0.09200004, 2.97076523], [1516680480000, 0.09200004, 0.0922, 0.09200002, 0.09200002, 1.6787744], [1516680540000, 0.09200002, 0.09219998, 0.09200002, 0.09200004, 2.02857353], [1516680600000, 0.09200004, 0.09219998, 0.09200002, 0.09219998, 8.49617233], [1516680660000, 0.09219998, 0.09229998, 0.09200004, 0.09229998, 21.2994375], [1516680720000, 0.09229998, 0.09229998, 0.09200002, 0.09200002, 22.10721982], [1516680780000, 0.09200008, 0.09209997, 0.09200002, 0.09209008, 111.18283515], [1516680840000, 0.09200009, 0.09200009, 0.0919, 0.0919, 1.996243], [1516680900000, 0.0919, 0.09200009, 0.0916, 0.09175009, 47.85113895], [1516680960000, 0.09200008, 0.09200008, 0.09175009, 0.0917501, 8.49854211], [1516681020000, 0.09175011, 0.09175011, 0.0915001, 0.09169736, 85.31384703], [1516681080000, 0.0917501, 0.09175011, 0.0915001, 0.0917501, 17.81047642], [1516681140000, 0.0917501, 0.09184915, 0.0917501, 0.0917501, 227.14632067], [1516681200000, 0.0917501, 0.09183459, 0.0915, 0.09158191, 99.6899601], [1516681260000, 0.09171671, 0.09171671, 0.09138301, 0.09138301, 40.1715616], [1516681320000, 0.09138301, 0.09170199, 0.09138301, 0.09167697, 10.0061197], [1516681380000, 0.0914767, 0.09167697, 0.0914767, 0.09167697, 4.6847518], [1516681440000, 0.09167697, 0.09171671, 0.09167697, 0.09167706, 2.97616346], [1516681500000, 0.09167706, 0.09167707, 0.09167706, 0.09167706, 8.5809232], [1516681560000, 0.09167706, 0.09196833, 0.09167706, 0.09196833, 6.83666305], [1516681620000, 0.09167709, 0.09196833, 0.09141652, 0.09141652, 42.05176681], [1516681680000, 0.0916, 0.0918216, 0.0914, 0.091772, 13.53242478], [1516681740000, 0.091757, 0.091757, 0.0916, 0.091747, 14.62774388], [1516681800000, 0.09174699, 0.09174699, 0.09137224, 0.0916, 19.01194405], [1516681860000, 0.09174851, 0.09196834, 0.09133539, 0.09133539, 15.28556006], [1516681920000, 0.09188, 0.09190668, 0.09133537, 0.091805, 45.79248513], [1516681980000, 0.091805, 0.091887, 0.091805, 0.091887, 14.21286357], [1516682040000, 0.09189697, 0.09200008, 0.09156063, 0.091882, 13.73159303], [1516682100000, 0.09190669, 0.09196833, 0.0914041, 0.09143152, 1.4491645], [1516682160000, 0.09196833, 0.09200009, 0.09143701, 0.09200009, 12.65436338], [1516682220000, 0.092, 0.092, 0.091443, 0.09146969, 2.04282021], [1516682280000, 0.0918, 0.0918, 0.0916, 0.0916, 5.86429206], [1516682340000, 0.0916, 0.0917999, 0.09120005, 0.09149795, 57.61305272], [1516682400000, 0.09159999, 0.09179982, 0.09149795, 0.09159999, 13.14421568], [1516682460000, 0.09179981, 0.09198999, 0.0916, 0.09161001, 11.44253007], [1516682520000, 0.09161, 0.09198996, 0.09161, 0.09198995, 0.63071796], [1516682580000, 0.091981, 0.09198995, 0.0916, 0.09198994, 9.44233089], [1516682640000, 0.09198989, 0.09198989, 0.09170002, 0.09170002, 4.77959246], [1516682700000, 0.09194391, 0.09194391, 0.09194391, 0.09194391, 3.16115726], [1516682760000, 0.0918, 0.09198992, 0.0918, 0.09194391, 2.47603325], [1516682820000, 0.09194392, 0.09198992, 0.09194392, 0.09194392, 24.73960644], [1516682880000, 0.0919899, 0.09209999, 0.09194392, 0.0919899, 4.92070646], [1516682940000, 0.0919899, 0.09229021, 0.09194392, 0.09194392, 15.8911856], [1516683000000, 0.09194392, 0.09217903, 0.09194392, 0.09194392, 3.89995437], [1516683060000, 0.09194395, 0.09225896, 0.09194395, 0.09194395, 9.6524845], [1516683120000, 0.09217026, 0.0921781, 0.09194392, 0.0921707, 4.69408314], [1516683180000, 0.0921707, 0.0921707, 0.09194396, 0.0921707, 6.96707854], [1516683240000, 0.0921707, 0.0921707, 0.09194392, 0.09194392, 46.0622192], [1516683300000, 0.09194397, 0.09217069, 0.09194392, 0.09217069, 23.51814231], [1516683360000, 0.09194392, 0.0921707, 0.09194392, 0.09217068, 13.70274297], [1516683420000, 0.09194392, 0.09217069, 0.09194392, 0.09217069, 38.20878479], [1516683480000, 0.09217069, 0.09217069, 0.09194392, 0.09194392, 12.90819698], [1516683540000, 0.09217069, 0.09217069, 0.09194392, 0.09194392, 10.44600669], [1516683600000, 0.09194392, 0.09217069, 0.09194392, 0.09217069, 35.55427853], [1516683660000, 0.09194392, 0.09217069, 0.09194392, 0.09217069, 2.08036232], [1516683720000, 0.09217069, 0.09217069, 0.09194401, 0.09217068, 1.15033275], [1516683780000, 0.09215224, 0.09217069, 0.09194392, 0.09194392, 2.72668401], [1516683840000, 0.09194392, 0.09195, 0.09194392, 0.09194393, 41.06347775], [1516683900000, 0.09194393, 0.09195, 0.09194392, 0.09194392, 30.53002123], [1516683960000, 0.09194392, 0.09195, 0.09180004, 0.09195, 32.00052164], [1516684020000, 0.09195, 0.09195, 0.09189184, 0.09194392, 45.80207281], [1516684080000, 0.09194392, 0.09195, 0.09189186, 0.09189186, 14.94784639], [1516684140000, 0.09189186, 0.09189186, 0.09189184, 0.09189184, 16.86644686], [1516684200000, 0.09189184, 0.09189186, 0.0918, 0.09189186, 9.8764543], [1516684260000, 0.0918, 0.0918, 0.0916999, 0.0917, 19.5017299], [1516684320000, 0.0917, 0.0918, 0.09160003, 0.09160003, 21.78604206], [1516684380000, 0.09179999, 0.0918, 0.09160002, 0.0918, 144.70596132], [1516684440000, 0.09179999, 0.0918, 0.09160001, 0.09169501, 27.19973752], [1516684500000, 0.0917998, 0.0918, 0.0917, 0.0918, 15.3215588], [1516684560000, 0.0918, 0.09189186, 0.09173875, 0.09189186, 14.07686262], [1516684620000, 0.09189186, 0.09195, 0.09189186, 0.09194999, 30.58356275], [1516684680000, 0.09189986, 0.092, 0.09189186, 0.09195, 9.85923692], [1516684740000, 0.09189986, 0.0923, 0.09178999, 0.09189989, 40.33822693], [1516684800000, 0.0923, 0.09232829, 0.09178999, 0.09181185, 79.95237941], [1516684860000, 0.09189988, 0.0922999, 0.09189988, 0.09189989, 37.06294179], [1516684920000, 0.0920999, 0.0920999, 0.09189988, 0.09189988, 128.84205309], [1516684980000, 0.09189988, 0.0920898, 0.09189988, 0.09205, 35.09481262], [1516685040000, 0.09189988, 0.09204999, 0.09189988, 0.09189988, 12.79460346], [1516685100000, 0.0919, 0.09205, 0.09189988, 0.09189988, 13.6248353], [1516685160000, 0.09189988, 0.0919, 0.09178999, 0.0918, 52.99426617], [1516685220000, 0.0918, 0.0918, 0.0917703, 0.09179, 22.96899485], [1516685280000, 0.09179, 0.0918, 0.0917, 0.0917, 18.44129968], [1516685340000, 0.09169999, 0.0917, 0.0915, 0.0916999, 21.75232298], [1516685400000, 0.0916999, 0.0916999, 0.091505, 0.09169855, 21.174376], [1516685460000, 0.09169855, 0.09179, 0.091505, 0.09170001, 9.89932373], [1516685520000, 0.09179, 0.092167, 0.09179, 0.0918, 15.69887178], [1516685580000, 0.0919, 0.092167, 0.0918, 0.09205337, 2.62038093], [1516685640000, 0.09205337, 0.09233396, 0.09205337, 0.09233396, 14.57003784], [1516685700000, 0.09232184, 0.09232184, 0.09180101, 0.0922826, 5.70987077], [1516685760000, 0.09225387, 0.09225387, 0.09180101, 0.09180102, 10.64453044], [1516685820000, 0.09180875, 0.09180875, 0.09180101, 0.09180875, 9.73020721], [1516685880000, 0.09180875, 0.092252, 0.09180874, 0.09223972, 18.2982466], [1516685940000, 0.09223972, 0.09223972, 0.09201362, 0.09223971, 3.2454128], [1516686000000, 0.09223971, 0.09228232, 0.09201362, 0.09201362, 22.91993464], [1516686060000, 0.09201362, 0.09222211, 0.09201362, 0.09201362, 16.45785968], [1516686120000, 0.09201362, 0.09222207, 0.09180874, 0.09180874, 5.47222006], [1516686180000, 0.09180874, 0.09221195, 0.09180101, 0.09220698, 17.4059128], [1516686240000, 0.09221192, 0.09221196, 0.09180874, 0.092197, 6.09140047], [1516686300000, 0.09180874, 0.09219699, 0.09180874, 0.09209643, 17.00691075], [1516686360000, 0.09209643, 0.09209643, 0.09178012, 0.09178012, 275.45658328], [1516686420000, 0.09179998, 0.0918, 0.09171195, 0.0918, 5.77001995], [1516686480000, 0.0918, 0.09200851, 0.0915, 0.09170199, 73.38803397], [1516686540000, 0.09170199, 0.0918999, 0.0915, 0.0915, 19.14858673], [1516686600000, 0.091707, 0.091707, 0.0916, 0.091707, 3.3994736], [1516686660000, 0.091707, 0.09189991, 0.09160001, 0.09189991, 4.47920707], [1516686720000, 0.09189991, 0.092, 0.0916, 0.09193244, 40.58154011], [1516686780000, 0.09192699, 0.091927, 0.0914, 0.0915, 20.02521912], [1516686840000, 0.09151854, 0.0919628, 0.0914, 0.09195, 14.5337599], [1516686900000, 0.0918693, 0.09195, 0.09151867, 0.0918692, 18.24882763], [1516686960000, 0.09186, 0.09186001, 0.0915187, 0.09186001, 13.23093574], [1516687020000, 0.09155489, 0.0918692, 0.09155489, 0.09185, 22.37301056], [1516687080000, 0.09184992, 0.09184992, 0.09165332, 0.09184992, 29.46006622], [1516687140000, 0.09184992, 0.09185, 0.09155491, 0.09185, 83.0062795], [1516687200000, 0.09185, 0.09221196, 0.09173223, 0.0918692, 91.98074451], [1516687260000, 0.0918792, 0.09228234, 0.09187919, 0.0918792, 6.60058066], [1516687320000, 0.0922823, 0.0922823, 0.0918794, 0.0918794, 4.88486027], [1516687380000, 0.0918794, 0.092282, 0.0918792, 0.09226993, 3.04480278], [1516687440000, 0.09226993, 0.09227982, 0.09187921, 0.09226993, 9.8576589], [1516687500000, 0.09214993, 0.09226983, 0.09188152, 0.09214992, 4.88369381], [1516687560000, 0.09214993, 0.09226983, 0.09214993, 0.09226983, 15.96932364], [1516687620000, 0.09226983, 0.09226983, 0.09214992, 0.09214993, 29.89527226], [1516687680000, 0.09214992, 0.092269, 0.09188814, 0.09188814, 14.14952505], [1516687740000, 0.092269, 0.092269, 0.0918792, 0.09214993, 4.27778431], [1516687800000, 0.092269, 0.092269, 0.0918792, 0.092269, 15.16918711], [1516687860000, 0.092269, 0.0922695, 0.09226899, 0.0922695, 13.80008782], [1516687920000, 0.09226983, 0.092337, 0.0922695, 0.0922695, 19.25636222], [1516687980000, 0.0922695, 0.092339, 0.0922695, 0.092339, 15.80429692], [1516688040000, 0.092339, 0.092339, 0.09197687, 0.09233898, 30.64177651], [1516688100000, 0.09233896, 0.09233898, 0.092, 0.09229274, 29.89200966], [1516688160000, 0.09229274, 0.09229274, 0.092, 0.09229271, 16.20135923], [1516688220000, 0.09203931, 0.092339, 0.092, 0.092339, 15.12555287], [1516688280000, 0.092339, 0.092339, 0.092, 0.092339, 68.06032821], [1516688340000, 0.09233899, 0.092339, 0.09218044, 0.092325, 19.9478623], [1516688400000, 0.092325, 0.092339, 0.09218045, 0.092339, 14.13009899], [1516688460000, 0.092325, 0.092339, 0.09218072, 0.092339, 26.37765392], [1516688520000, 0.092339, 0.092339, 0.09218072, 0.092339, 31.52151536], [1516688580000, 0.09220001, 0.092339, 0.0922, 0.092339, 4.28890527], [1516688640000, 0.092339, 0.092339, 0.09221, 0.0922101, 8.14540093], [1516688700000, 0.0922102, 0.092339, 0.0922101, 0.092339, 20.01387656], [1516688760000, 0.092339, 0.092339, 0.0922101, 0.0922101, 2.98186493], [1516688820000, 0.09221011, 0.092339, 0.0922101, 0.09221011, 24.94126138], [1516688880000, 0.09221011, 0.092339, 0.09221011, 0.092339, 12.62666366], [1516688940000, 0.09221011, 0.092339, 0.09221011, 0.0922102, 4.41795935], [1516689000000, 0.0922102, 0.092339, 0.0922102, 0.09233897, 6.13056525], [1516689060000, 0.0922102, 0.092339, 0.0922101, 0.092339, 29.8162563], [1516689120000, 0.0922101, 0.09233897, 0.0922101, 0.0922101, 12.26784451], [1516689180000, 0.0922101, 0.09233897, 0.0922101, 0.09233897, 11.06964359], [1516689240000, 0.0922101, 0.092339, 0.0922101, 0.092339, 26.41492675], [1516689300000, 0.092339, 0.092339, 0.0922101, 0.09233899, 5.78078141], [1516689360000, 0.092339, 0.092339, 0.0922101, 0.0922101, 9.24127809], [1516689420000, 0.09233894, 0.09233895, 0.0922101, 0.0922102, 26.5478061], [1516689480000, 0.09232894, 0.09232894, 0.0922101, 0.09232893, 2.85878706], [1516689540000, 0.09232893, 0.09232893, 0.0922101, 0.09229999, 2.38643097], [1516689600000, 0.0922101, 0.09229999, 0.0922101, 0.09225, 5.07283043], [1516689660000, 0.09229999, 0.09232893, 0.09225, 0.09229999, 17.98839057], [1516689720000, 0.09229999, 0.09232894, 0.09225001, 0.09225001, 8.336753], [1516689780000, 0.09225001, 0.092339, 0.09225001, 0.09225001, 17.6959818], [1516689840000, 0.09225001, 0.092339, 0.09225001, 0.092339, 13.94410149], [1516689900000, 0.092339, 0.092339, 0.09225, 0.092339, 32.47416602], [1516689960000, 0.09225, 0.092339, 0.09225, 0.09233899, 7.06107902], [1516690020000, 0.09225, 0.092339, 0.0922101, 0.092339, 11.11651094], [1516690080000, 0.092339, 0.092339, 0.0922101, 0.092339, 26.28461927], [1516690140000, 0.092339, 0.092339, 0.0922101, 0.0922101, 2.23792785], [1516690200000, 0.0922101, 0.092339, 0.092, 0.092, 24.1071282], [1516690260000, 0.092039, 0.09218072, 0.092, 0.09218066, 9.14399464], [1516690320000, 0.09218071, 0.09218071, 0.09218066, 0.09218066, 0.85398636], [1516690380000, 0.09218066, 0.09218071, 0.092, 0.09218066, 7.8383526], [1516690440000, 0.09218071, 0.09218072, 0.092, 0.09218071, 25.08817071], [1516690500000, 0.09218072, 0.092339, 0.09218072, 0.0922, 12.73789536], [1516690560000, 0.0922, 0.09233899, 0.092, 0.092, 82.85816363], [1516690620000, 0.092, 0.0921807, 0.0918792, 0.09192856, 14.84113422], [1516690680000, 0.0918792, 0.0918792, 0.09176751, 0.09187729, 20.274667], [1516690740000, 0.09187729, 0.09234149, 0.09170001, 0.09234149, 64.82122794], [1516690800000, 0.09193125, 0.09234149, 0.09187729, 0.09193261, 18.53348395], [1516690860000, 0.09193261, 0.09234149, 0.09193261, 0.09196069, 5.04847322], [1516690920000, 0.09201216, 0.09234149, 0.09201216, 0.09234149, 3.77516391], [1516690980000, 0.09234148, 0.09234149, 0.09203316, 0.09234148, 4.33708023], [1516691040000, 0.09203326, 0.09234148, 0.09203326, 0.09204078, 3.63387192], [1516691100000, 0.09204079, 0.09234148, 0.09203881, 0.09203963, 10.98939752], [1516691160000, 0.0921, 0.09234147, 0.09203326, 0.09228274, 15.60962495], [1516691220000, 0.09234147, 0.09234672, 0.09228274, 0.09234147, 16.45715986], [1516691280000, 0.09228274, 0.09234147, 0.09228274, 0.0923069, 7.92976955], [1516691340000, 0.09228274, 0.09234672, 0.09228274, 0.09234672, 32.46700894], [1516691400000, 0.09234672, 0.0923862, 0.09228274, 0.09234672, 4.85230971], [1516691460000, 0.09234672, 0.0924415, 0.09228, 0.09228, 39.57025748], [1516691520000, 0.09228, 0.0924415, 0.09203275, 0.0924415, 10.99209648], [1516691580000, 0.0924415, 0.092442, 0.09203275, 0.09203275, 10.81769696], [1516691640000, 0.09243999, 0.092495, 0.09201089, 0.09244, 4.80311679], [1516691700000, 0.09244, 0.09249, 0.09186552, 0.09248, 5.80163862], [1516691760000, 0.09247, 0.09247, 0.09175547, 0.09183911, 22.93908128], [1516691820000, 0.09183949, 0.092422, 0.091651, 0.09184167, 16.27959692], [1516691880000, 0.09184167, 0.09235699, 0.09184167, 0.09184168, 55.83636524], [1516691940000, 0.09184168, 0.092, 0.09178262, 0.092, 11.74011421], [1516692000000, 0.092, 0.0923365, 0.09184168, 0.091842, 10.42109912], [1516692060000, 0.09184168, 0.09233697, 0.09184167, 0.09186999, 5.04950662], [1516692120000, 0.09230399, 0.09230399, 0.09184168, 0.09187, 48.71262577], [1516692180000, 0.091875, 0.09220999, 0.09187, 0.092, 5.91134854], [1516692240000, 0.09199999, 0.092, 0.09187502, 0.092, 8.08197307], [1516692300000, 0.092, 0.092422, 0.09187701, 0.092, 13.95998586], [1516692360000, 0.09241691, 0.09243207, 0.09199, 0.092, 8.85468137], [1516692420000, 0.092, 0.09242691, 0.09188001, 0.0920001, 13.83122598], [1516692480000, 0.09200011, 0.0923, 0.0920001, 0.0920001, 2.03676657], [1516692540000, 0.09229, 0.09229, 0.0920001, 0.09224455, 6.76493813], [1516692600000, 0.09224455, 0.09240984, 0.09224, 0.09224455, 18.99049035], [1516692660000, 0.09224455, 0.09240984, 0.09222502, 0.09240984, 16.40826276], [1516692720000, 0.09240984, 0.09240984, 0.092256, 0.09225605, 25.57717914], [1516692780000, 0.09225606, 0.09240983, 0.09200559, 0.09225605, 31.65389624], [1516692840000, 0.09225605, 0.09240984, 0.09225605, 0.09225605, 20.20285398], [1516692900000, 0.09225605, 0.09239999, 0.09225605, 0.09225605, 29.32755931], [1516692960000, 0.09225605, 0.09225605, 0.092, 0.092, 6.05608523], [1516693020000, 0.092, 0.09225, 0.092, 0.09225, 16.90527183], [1516693080000, 0.09225, 0.09225, 0.092, 0.09225, 8.12394793], [1516693140000, 0.09224996, 0.09224999, 0.09200001, 0.09224999, 1.3538463], [1516693200000, 0.09200017, 0.09225, 0.09200017, 0.09200018, 3.30297249], [1516693260000, 0.09222, 0.09225, 0.09200017, 0.09200017, 24.26944802], [1516693320000, 0.09200017, 0.09225, 0.09200001, 0.09225, 2.09748027], [1516693380000, 0.09225, 0.09225, 0.092, 0.092, 10.21770444], [1516693440000, 0.09224996, 0.09225, 0.09200001, 0.09225, 25.14901444], [1516693500000, 0.09225, 0.0923, 0.09225, 0.09225, 28.38928294], [1516693560000, 0.09225, 0.0923, 0.09225, 0.0923, 3.24656191], [1516693620000, 0.0923, 0.09243207, 0.0923, 0.09243207, 3.51257321], [1516693680000, 0.09239999, 0.092495, 0.0923, 0.09239999, 12.45307778], [1516693740000, 0.09239999, 0.092495, 0.09230003, 0.09248, 9.59875171], [1516693800000, 0.0923001, 0.09248, 0.0923001, 0.0923001, 8.39146878], [1516693860000, 0.0923001, 0.09247999, 0.0923001, 0.0923001, 9.54938838], [1516693920000, 0.09247989, 0.092495, 0.0923001, 0.09248, 23.9301548], [1516693980000, 0.09248, 0.09249999, 0.09248, 0.09248, 14.03752125], [1516694040000, 0.09248, 0.09249998, 0.0923001, 0.0923001, 35.75411679], [1516694100000, 0.0923001, 0.09249999, 0.0923001, 0.0923001, 29.88541626], [1516694160000, 0.0923001, 0.09249998, 0.0923001, 0.092495, 5.63949927], [1516694220000, 0.092495, 0.09249998, 0.09248999, 0.09249998, 6.13053087], [1516694280000, 0.09249, 0.09249, 0.09230021, 0.09249, 3.96905353], [1516694340000, 0.0923021, 0.09248, 0.0923021, 0.09248, 2.82122264], [1516694400000, 0.09248, 0.09248, 0.0923021, 0.0923021, 5.75878268], [1516694460000, 0.0923021, 0.0923021, 0.09230021, 0.0923021, 6.44106238], [1516694520000, 0.0923021, 0.0923021, 0.09230022, 0.09230209, 2.30020492], [1516694580000, 0.09230209, 0.09230209, 0.09230015, 0.09230015, 28.35132074], [1516694640000, 0.09230015, 0.0923002, 0.0923, 0.0923001, 39.6995053], [1516694700000, 0.0923001, 0.092477, 0.0923001, 0.092477, 26.80708213], [1516694760000, 0.09230211, 0.09247699, 0.0923021, 0.092472, 17.65755242], [1516694820000, 0.09247199, 0.09247199, 0.09201763, 0.09230212, 23.08953469], [1516694880000, 0.0923001, 0.0923001, 0.0923001, 0.0923001, 0.64917908], [1516694940000, 0.09201765, 0.09239978, 0.092, 0.09211765, 9.43720721], [1516695000000, 0.09211765, 0.09211765, 0.09187, 0.09187, 39.47597744], [1516695060000, 0.09187, 0.09211764, 0.091851, 0.09211764, 23.47204191], [1516695120000, 0.09187, 0.092365, 0.0918, 0.09211763, 14.39298489], [1516695180000, 0.09196163, 0.09233497, 0.0917475, 0.0917475, 4.47330444], [1516695240000, 0.09228999, 0.09228999, 0.0917475, 0.09225996, 9.49121762], [1516695300000, 0.09225996, 0.09225996, 0.092, 0.09225399, 2.0388123], [1516695360000, 0.09225399, 0.09225399, 0.092, 0.09225392, 6.64333822], [1516695420000, 0.092, 0.09224099, 0.0917475, 0.09176965, 4.57818066], [1516695480000, 0.09224096, 0.09225995, 0.09180313, 0.09225995, 48.34152719], [1516695540000, 0.09225395, 0.09225395, 0.0920101, 0.0920101, 10.038801], [1516695600000, 0.09201011, 0.09225395, 0.09182608, 0.09222398, 7.06867533], [1516695660000, 0.09222398, 0.09249, 0.09174751, 0.0918323, 104.44264191], [1516695720000, 0.0918323, 0.09249998, 0.0918323, 0.09243599, 31.39861766], [1516695780000, 0.092431, 0.092431, 0.0918911, 0.0919228, 5.06216806], [1516695840000, 0.09222396, 0.09222396, 0.0918911, 0.092222, 9.64037682], [1516695900000, 0.092222, 0.09239412, 0.09189112, 0.092222, 13.21056989], [1516695960000, 0.09222398, 0.09222398, 0.09189112, 0.092222, 13.93091078], [1516696020000, 0.09222179, 0.09222179, 0.09221993, 0.09222, 9.16956247], [1516696080000, 0.0922215, 0.0922215, 0.09189951, 0.09221985, 5.5188165], [1516696140000, 0.09221983, 0.09221983, 0.092, 0.092, 0.66107062], [1516696200000, 0.09221983, 0.09221983, 0.092, 0.09221983, 3.96764802], [1516696260000, 0.09221983, 0.09221983, 0.0921, 0.0921, 8.0506471], [1516696320000, 0.09221, 0.0922216, 0.0918995, 0.0918995, 26.91580968], [1516696380000, 0.0918995, 0.0918995, 0.09175111, 0.09175111, 15.85133157], [1516696440000, 0.0918995, 0.0918995, 0.09175111, 0.09175111, 2.99536528], [1516696500000, 0.09175111, 0.09189949, 0.09174751, 0.09174751, 14.73155149], [1516696560000, 0.09174751, 0.09175111, 0.09167375, 0.0917, 56.49722749], [1516696620000, 0.0917, 0.0917, 0.091651, 0.0917, 32.92230144], [1516696680000, 0.0917, 0.0917, 0.09165101, 0.09165101, 9.75668712], [1516696740000, 0.0917, 0.0917, 0.09165101, 0.09165101, 8.7180707], [1516696800000, 0.09165101, 0.0917, 0.09165, 0.09169999, 145.44882337], [1516696860000, 0.09169999, 0.09214199, 0.09167, 0.09214199, 109.94488166], [1516696920000, 0.09170001, 0.09174751, 0.09167, 0.09172376, 15.91468866], [1516696980000, 0.09172376, 0.09214199, 0.09165, 0.09165, 209.6653965], [1516697040000, 0.09165, 0.0918, 0.0914, 0.0914509, 77.5461632], [1516697100000, 0.09146089, 0.09179994, 0.09130399, 0.09177274, 36.29172064], [1516697160000, 0.09148, 0.09177277, 0.091347, 0.09134701, 33.17689382], [1516697220000, 0.09176272, 0.09176272, 0.09134701, 0.09148002, 13.99326514], [1516697280000, 0.09148, 0.09175999, 0.0913471, 0.09148002, 24.87711886], [1516697340000, 0.0914801, 0.09175999, 0.09134702, 0.0914, 82.69790651], [1516697400000, 0.09134702, 0.0914, 0.09130399, 0.0914, 58.25718111], [1516697460000, 0.0914, 0.0914, 0.09128901, 0.0914, 24.70330763], [1516697520000, 0.09131, 0.09145, 0.09128901, 0.09145, 32.77562978], [1516697580000, 0.09145, 0.09145, 0.091289, 0.09145, 15.19524497], [1516697640000, 0.09145, 0.09145, 0.0912, 0.0912, 34.32608776], [1516697700000, 0.09145, 0.09145, 0.0912, 0.09135, 22.87626394], [1516697760000, 0.09145, 0.09145, 0.09128901, 0.09140765, 28.24936686], [1516697820000, 0.09140765, 0.09144999, 0.09128902, 0.09144905, 19.07944073], [1516697880000, 0.09144905, 0.09145, 0.09128902, 0.09144999, 163.92206376], [1516697940000, 0.09145, 0.09145, 0.09128901, 0.09128901, 16.54235672], [1516698000000, 0.09145, 0.09173998, 0.09128901, 0.09128902, 23.71822573], [1516698060000, 0.09173499, 0.09173499, 0.09146, 0.09146, 6.80746211], [1516698120000, 0.09146, 0.09173496, 0.09136122, 0.09144998, 23.12452888], [1516698180000, 0.09172, 0.09172, 0.09136122, 0.09136123, 14.92937252], [1516698240000, 0.09171497, 0.09171498, 0.09136122, 0.0914526, 4.50201815], [1516698300000, 0.0914526, 0.09171899, 0.0914526, 0.09169, 14.83315075], [1516698360000, 0.09169, 0.091718, 0.09140419, 0.091718, 3.25677021], [1516698420000, 0.0914526, 0.09169, 0.09140419, 0.091605, 0.8066216], [1516698480000, 0.091605, 0.09160963, 0.0914284, 0.091605, 3.65555646], [1516698540000, 0.091505, 0.09168999, 0.091505, 0.091505, 10.17739813], [1516698600000, 0.091505, 0.09168999, 0.091505, 0.09168999, 30.20528621], [1516698660000, 0.09168999, 0.09168999, 0.091505, 0.091505, 10.04049345], [1516698720000, 0.09168997, 0.09168999, 0.091505, 0.09168999, 4.89891462], [1516698780000, 0.09168995, 0.09168998, 0.091505, 0.09168998, 0.09221721], [1516698840000, 0.09168998, 0.09177278, 0.0914285, 0.09177278, 100.45874577], [1516698900000, 0.09177278, 0.09179891, 0.09130001, 0.09130001, 145.75915464], [1516698960000, 0.09165361, 0.09165361, 0.09141418, 0.09160661, 13.28268168], [1516699020000, 0.09160661, 0.09160661, 0.0912, 0.091429, 59.75592628], [1516699080000, 0.091429, 0.09142902, 0.0914285, 0.0914285, 19.26239496], [1516699140000, 0.09142801, 0.09142801, 0.09120001, 0.09142801, 2.01876946], [1516699200000, 0.09142801, 0.09142801, 0.09121001, 0.091428, 1.58652441], [1516699260000, 0.09142799, 0.09142799, 0.091225, 0.09132799, 15.81271096], [1516699320000, 0.09132799, 0.09132799, 0.091225, 0.09122705, 10.245081], [1516699380000, 0.09122705, 0.09132701, 0.09122705, 0.09125, 15.55174364], [1516699440000, 0.091255, 0.09132701, 0.09122705, 0.09122706, 5.31283478], [1516699500000, 0.091255, 0.0914, 0.09122705, 0.09125044, 15.69941987], [1516699560000, 0.09132704, 0.0914, 0.09122705, 0.09125044, 45.10874472], [1516699620000, 0.09139999, 0.0914, 0.09125044, 0.09125044, 64.81420296], [1516699680000, 0.09125045, 0.0914, 0.09125044, 0.0914, 17.97303406], [1516699740000, 0.09125045, 0.0914, 0.09125045, 0.09139999, 6.23860573], [1516699800000, 0.09139999, 0.09139999, 0.09125044, 0.09139998, 5.43293611], [1516699860000, 0.09139998, 0.09139999, 0.09125045, 0.09139998, 7.12101919], [1516699920000, 0.09125047, 0.091428, 0.09125047, 0.091428, 18.19351753], [1516699980000, 0.091428, 0.09160661, 0.091428, 0.09145075, 3.58700525], [1516700040000, 0.0916066, 0.09168873, 0.09145076, 0.09165361, 9.17162696], [1516700100000, 0.09164322, 0.0917, 0.091451, 0.0917, 15.64890218], [1516700160000, 0.0917, 0.09187, 0.09146, 0.09186998, 6.92852234], [1516700220000, 0.0917, 0.09186997, 0.0917, 0.09170007, 16.0017934], [1516700280000, 0.09170007, 0.0918699, 0.09170007, 0.09175, 25.45761074], [1516700340000, 0.09175, 0.09186, 0.09170005, 0.09170005, 36.4598219], [1516700400000, 0.09170006, 0.09181399, 0.09170006, 0.09170007, 122.29511743], [1516700460000, 0.09170007, 0.09185, 0.09170007, 0.09170081, 15.19282949], [1516700520000, 0.09170081, 0.09184999, 0.0917008, 0.09175, 45.03067504], [1516700580000, 0.09170081, 0.09175, 0.091501, 0.091501, 23.02212877], [1516700640000, 0.091501, 0.09174999, 0.09145075, 0.09174999, 4.071048], [1516700700000, 0.09145075, 0.09174999, 0.0914, 0.09174998, 3.03946773], [1516700760000, 0.09174999, 0.09174999, 0.0914, 0.0914, 1.96819567], [1516700820000, 0.09169999, 0.0917, 0.09140001, 0.09140001, 20.8868154], [1516700880000, 0.0914, 0.09174999, 0.0914, 0.09174999, 4.69459747], [1516700940000, 0.09174999, 0.09184999, 0.09169999, 0.09169999, 11.77942826], [1516701000000, 0.09174536, 0.09184999, 0.09174536, 0.0918, 19.9168559], [1516701060000, 0.0918, 0.09184999, 0.09174538, 0.09184999, 16.37666695], [1516701120000, 0.09184999, 0.09184999, 0.09184172, 0.09184172, 2.97459041], [1516701180000, 0.09184172, 0.09187, 0.09146389, 0.09184172, 15.80626416], [1516701240000, 0.09184172, 0.09199999, 0.09151598, 0.0915207, 26.18670283], [1516701300000, 0.09199498, 0.09199999, 0.09150954, 0.09184172, 42.1696119], [1516701360000, 0.09184172, 0.09199498, 0.09184172, 0.09184172, 44.52303983], [1516701420000, 0.0918999, 0.092, 0.09184172, 0.09184172, 65.59642268], [1516701480000, 0.09184172, 0.09199995, 0.09184172, 0.09184172, 40.60556206], [1516701540000, 0.09184172, 0.0919999, 0.09184172, 0.09185, 15.94115584], [1516701600000, 0.09185, 0.09195525, 0.09184172, 0.09184172, 97.51420188], [1516701660000, 0.09184172, 0.09195525, 0.09151501, 0.09151501, 25.17154728], [1516701720000, 0.09194525, 0.09195526, 0.09155023, 0.09194525, 24.58965817], [1516701780000, 0.09194525, 0.091999, 0.09152, 0.09199899, 20.59701211], [1516701840000, 0.09199899, 0.09199899, 0.09156, 0.09156, 3.82050656], [1516701900000, 0.09199898, 0.09199898, 0.09156001, 0.09199898, 4.49849963], [1516701960000, 0.09199898, 0.0919999, 0.09156001, 0.09199989, 10.91333032], [1516702020000, 0.09199989, 0.09199989, 0.09156008, 0.09199974, 26.27854832], [1516702080000, 0.09165164, 0.09199959, 0.09165164, 0.09199957, 17.33710507], [1516702140000, 0.09165164, 0.0919995, 0.09152002, 0.09196, 25.08160731], [1516702200000, 0.09196, 0.09199, 0.09196, 0.09196, 2.56588215], [1516702260000, 0.09196, 0.09196, 0.0915601, 0.0919554, 5.00479765], [1516702320000, 0.0919554, 0.09198997, 0.09156008, 0.09156008, 94.53263574], [1516702380000, 0.0918, 0.0918, 0.09156009, 0.09178999, 4.33187834], [1516702440000, 0.0918, 0.0918, 0.09156009, 0.09166009, 3.60526291], [1516702500000, 0.09179999, 0.09179999, 0.0915601, 0.09179997, 45.5940455], [1516702560000, 0.0917, 0.0917, 0.09156009, 0.09156011, 18.75483211], [1516702620000, 0.09156011, 0.0917, 0.091515, 0.091515, 7.0044529], [1516702680000, 0.0917, 0.09193949, 0.09146, 0.09187899, 88.80932842], [1516702740000, 0.0918, 0.09189797, 0.091515, 0.091515, 13.03334509], [1516702800000, 0.09194138, 0.09194572, 0.09178, 0.09178, 2.81547559], [1516702860000, 0.09178, 0.09178, 0.091515, 0.09178, 15.92542023], [1516702920000, 0.09178, 0.09178, 0.091517, 0.09177999, 24.1289189], [1516702980000, 0.09151704, 0.09178, 0.091515, 0.09178, 6.17907959], [1516703040000, 0.09178, 0.09178, 0.09151603, 0.09178, 10.85313918], [1516703100000, 0.09178, 0.09178, 0.091516, 0.09178, 20.12812358], [1516703160000, 0.09178, 0.09178, 0.09153001, 0.09178, 35.91208429], [1516703220000, 0.09178, 0.09178, 0.09154004, 0.09164004, 37.63605685], [1516703280000, 0.09164004, 0.09178, 0.09154012, 0.09178, 30.00784196], [1516703340000, 0.09178, 0.09178, 0.09154603, 0.09178, 4.61626163], [1516703400000, 0.09178, 0.09178, 0.09155, 0.09155, 9.59299319], [1516703460000, 0.09155, 0.0919999, 0.09155, 0.09199989, 401.34527443], [1516703520000, 0.09199989, 0.09199989, 0.09157, 0.09198999, 2.52412394], [1516703580000, 0.09199988, 0.09209043, 0.09169161, 0.09208581, 148.51186755], [1516703640000, 0.09208581, 0.09214524, 0.09169163, 0.09169163, 29.41293597], [1516703700000, 0.09212463, 0.09214523, 0.09169161, 0.0921284, 14.38687837], [1516703760000, 0.0921284, 0.09214522, 0.09169161, 0.092145, 51.99352445], [1516703820000, 0.092145, 0.09214525, 0.0917, 0.0917, 48.97810236], [1516703880000, 0.09210493, 0.09211099, 0.0917, 0.092105, 15.498177], [1516703940000, 0.09170001, 0.09213291, 0.09170001, 0.092105, 19.1434922], [1516704000000, 0.092105, 0.092143, 0.09156016, 0.09156016, 15.03119676], [1516704060000, 0.09211306, 0.092145, 0.09156017, 0.092145, 31.45859388], [1516704120000, 0.09211125, 0.09214, 0.09178909, 0.09178909, 10.59154231], [1516704180000, 0.09178909, 0.09213999, 0.09166933, 0.09166933, 63.61574557], [1516704240000, 0.09166933, 0.092126, 0.09166933, 0.09206559, 18.8426317], [1516704300000, 0.09206099, 0.09206099, 0.09162724, 0.09162724, 8.60473116], [1516704360000, 0.09165173, 0.09213999, 0.09162724, 0.09162724, 20.51591715], [1516704420000, 0.09212998, 0.09212999, 0.09162724, 0.09177716, 9.57415897], [1516704480000, 0.09177716, 0.09208999, 0.09162724, 0.0918, 1.95350555], [1516704540000, 0.09205499, 0.09205499, 0.09172574, 0.092035, 40.12608449], [1516704600000, 0.09202499, 0.09202499, 0.09173574, 0.09173574, 1.19704803], [1516704660000, 0.09173574, 0.09205498, 0.09173574, 0.09173574, 3.38162166], [1516704720000, 0.09205498, 0.09205999, 0.09173574, 0.09202177, 6.53914844], [1516704780000, 0.09202, 0.09202, 0.09162724, 0.09173574, 11.24993403], [1516704840000, 0.09173574, 0.09173574, 0.09162724, 0.09173574, 2.18337968], [1516704900000, 0.09173574, 0.09173574, 0.09165175, 0.09173574, 7.75963214], [1516704960000, 0.09173574, 0.09173574, 0.09165175, 0.09173574, 34.10417293], [1516705020000, 0.09173574, 0.09173574, 0.09173574, 0.09173574, 0.67532378], [1516705080000, 0.09173574, 0.09173574, 0.09165175, 0.09165175, 12.22604266], [1516705140000, 0.09165175, 0.09173574, 0.091628, 0.09173574, 15.17422348], [1516705200000, 0.09173574, 0.09173574, 0.09162801, 0.09173574, 4.27231785], [1516705260000, 0.09162801, 0.09192973, 0.0913, 0.0915, 117.08243067], [1516705320000, 0.09150002, 0.091831, 0.0913, 0.0915, 8.19238698], [1516705380000, 0.09131728, 0.0915, 0.0912, 0.09149997, 44.77753373], [1516705440000, 0.09149997, 0.09153334, 0.09109, 0.09149997, 19.57830655], [1516705500000, 0.09149991, 0.09149991, 0.091074, 0.09132416, 12.08481083], [1516705560000, 0.09132416, 0.09138543, 0.09115739, 0.09132414, 7.8747904], [1516705620000, 0.09115739, 0.09129999, 0.0911, 0.09115284, 14.91062107], [1516705680000, 0.0911528, 0.09115284, 0.09107, 0.09107, 18.16171454], [1516705740000, 0.09115284, 0.09115284, 0.0910443, 0.09115284, 13.68724842], [1516705800000, 0.09115284, 0.09115284, 0.0911528, 0.09115281, 9.53656449], [1516705860000, 0.09115284, 0.09115284, 0.09104431, 0.09115284, 14.61032055], [1516705920000, 0.09115281, 0.09115284, 0.0910443, 0.09115284, 45.14995701], [1516705980000, 0.09115284, 0.09115284, 0.09100716, 0.09107001, 12.35954519], [1516706040000, 0.09107002, 0.09114094, 0.09107, 0.09113837, 11.92983345], [1516706100000, 0.09108001, 0.09114094, 0.09107, 0.09108002, 10.55059945], [1516706160000, 0.09108003, 0.09108003, 0.0910443, 0.09108002, 9.08198998], [1516706220000, 0.09108002, 0.09108002, 0.0910443, 0.09108002, 9.09420836], [1516706280000, 0.09108002, 0.09108002, 0.0910443, 0.09108002, 30.42040668], [1516706340000, 0.09108002, 0.09114094, 0.09104435, 0.09114094, 35.62550768], [1516706400000, 0.09114094, 0.09115284, 0.09114093, 0.09115284, 9.02100858], [1516706460000, 0.09115284, 0.09149991, 0.09114094, 0.09149986, 25.55953694], [1516706520000, 0.09149984, 0.09149984, 0.09114094, 0.0914997, 103.28731225], [1516706580000, 0.09137597, 0.09137597, 0.09114095, 0.0913759, 7.69638264], [1516706640000, 0.09114095, 0.0913759, 0.09114095, 0.09137583, 3.60541823], [1516706700000, 0.09114097, 0.09114097, 0.09104435, 0.09104435, 81.08488043], [1516706760000, 0.09114094, 0.09114094, 0.09100716, 0.09104436, 40.58162961], [1516706820000, 0.09114094, 0.091232, 0.091005, 0.09114094, 46.53524345], [1516706880000, 0.09114094, 0.09149998, 0.09100064, 0.09149998, 21.267469], [1516706940000, 0.09149998, 0.09149998, 0.091009, 0.09125692, 32.18492378], [1516707000000, 0.09125692, 0.091489, 0.09100064, 0.09148, 69.78220357], [1516707060000, 0.09114392, 0.09148, 0.09100002, 0.09114392, 33.89120605], [1516707120000, 0.09114392, 0.09148, 0.091, 0.091005, 75.10682566], [1516707180000, 0.091005, 0.091448, 0.091, 0.09111789, 20.9818805], [1516707240000, 0.09111789, 0.09144797, 0.091, 0.09144797, 33.58638387], [1516707300000, 0.09111789, 0.091448, 0.091, 0.09144799, 7.42096884], [1516707360000, 0.09111789, 0.091448, 0.09107139, 0.09107139, 4.55949635], [1516707420000, 0.09107139, 0.09144795, 0.09094084, 0.091, 19.6294747], [1516707480000, 0.091, 0.091, 0.09094084, 0.091, 42.42084312], [1516707540000, 0.091, 0.091, 0.09094084, 0.091, 66.8870123], [1516707600000, 0.091, 0.091, 0.09094084, 0.091, 23.1938329], [1516707660000, 0.091, 0.09107138, 0.09095, 0.09107137, 126.67962167], [1516707720000, 0.09107137, 0.09139999, 0.09088619, 0.0909, 154.4121064], [1516707780000, 0.09107137, 0.09137344, 0.090882, 0.09089619, 6.57639856], [1516707840000, 0.09090619, 0.0914, 0.09083884, 0.0914, 31.14234235], [1516707900000, 0.0914, 0.0914, 0.0908389, 0.09126565, 13.66560258], [1516707960000, 0.09126565, 0.09149998, 0.09083881, 0.09083892, 78.33497361], [1516708020000, 0.09126565, 0.09139996, 0.09080001, 0.09139993, 49.21381723], [1516708080000, 0.09139991, 0.09139991, 0.09080001, 0.09139989, 16.24826359], [1516708140000, 0.09139989, 0.09139989, 0.09089054, 0.09135106, 69.62804173], [1516708200000, 0.09135106, 0.09139996, 0.091, 0.09139996, 50.5024687], [1516708260000, 0.09139996, 0.09141722, 0.09110001, 0.09141722, 29.04654017], [1516708320000, 0.09139538, 0.09145028, 0.091, 0.091, 89.82023322], [1516708380000, 0.09100001, 0.09145028, 0.09100001, 0.09144028, 42.53314441], [1516708440000, 0.09144028, 0.0915, 0.091, 0.091059, 36.75089064], [1516708500000, 0.0914502, 0.09158644, 0.09105905, 0.09158644, 23.16184757], [1516708560000, 0.09157644, 0.09166354, 0.0914502, 0.0914502, 13.47625471], [1516708620000, 0.0915764, 0.09157644, 0.0914502, 0.09145021, 17.20861619], [1516708680000, 0.0915764, 0.09176895, 0.0914502, 0.09166354, 19.39910434], [1516708740000, 0.09166354, 0.09182022, 0.09166354, 0.09182022, 24.92446196], [1516708800000, 0.09176895, 0.09198, 0.09166355, 0.09182023, 70.36509782], [1516708860000, 0.091769, 0.0918, 0.09166354, 0.09166354, 24.60914384], [1516708920000, 0.09179999, 0.0918, 0.09145021, 0.09145021, 8.69897283], [1516708980000, 0.0918, 0.0918, 0.09145022, 0.0916, 4.53691588], [1516709040000, 0.0916, 0.09179999, 0.09145024, 0.09179998, 26.34926974], [1516709100000, 0.09145024, 0.09178989, 0.09145021, 0.09145501, 8.53602918], [1516709160000, 0.09145501, 0.09145501, 0.091455, 0.09145501, 4.5923526], [1516709220000, 0.09145501, 0.09179999, 0.091455, 0.09145502, 10.46158642], [1516709280000, 0.09145501, 0.09177, 0.09145501, 0.09176999, 68.82001045], [1516709340000, 0.09176999, 0.09177, 0.09145501, 0.09174704, 7.18069837], [1516709400000, 0.09145502, 0.09174703, 0.091455, 0.09145501, 10.54180281], [1516709460000, 0.09145501, 0.09174702, 0.09145023, 0.09145023, 8.95434894], [1516709520000, 0.09145023, 0.09176995, 0.09145023, 0.09171, 21.77004587], [1516709580000, 0.09145023, 0.09171, 0.09145023, 0.09169999, 7.34417832], [1516709640000, 0.09145024, 0.09174, 0.09145024, 0.09174, 5.67800813], [1516709700000, 0.09145024, 0.09174, 0.09145024, 0.09145024, 4.77117649], [1516709760000, 0.09145024, 0.0917171, 0.09145024, 0.09145024, 8.19658133], [1516709820000, 0.09169242, 0.0917799, 0.09145025, 0.09173999, 7.68646622], [1516709880000, 0.09173999, 0.0917799, 0.09145026, 0.09173999, 5.0899028], [1516709940000, 0.09173999, 0.09179997, 0.09145044, 0.09179995, 44.00725365], [1516710000000, 0.09179995, 0.09179997, 0.09145026, 0.09179995, 19.87585902], [1516710060000, 0.09145027, 0.09179994, 0.09145026, 0.09145026, 2.99995222], [1516710120000, 0.09145026, 0.09179993, 0.09145026, 0.0917999, 13.43256348], [1516710180000, 0.09145026, 0.0917999, 0.09145026, 0.09145027, 10.00178808], [1516710240000, 0.091455, 0.09179898, 0.09145026, 0.09145026, 5.5104942], [1516710300000, 0.091798, 0.09179894, 0.09145026, 0.09154171, 10.72311616], [1516710360000, 0.09154171, 0.09179758, 0.09145026, 0.09179752, 10.05576333], [1516710420000, 0.09179751, 0.09179752, 0.09145026, 0.0917, 23.07753666], [1516710480000, 0.09173532, 0.09179292, 0.0914694, 0.09169998, 43.12157814], [1516710540000, 0.0914694, 0.09169998, 0.09145021, 0.09145021, 51.71622098], [1516710600000, 0.09145021, 0.0914694, 0.0913, 0.0913, 26.32784253], [1516710660000, 0.0913112, 0.09162999, 0.09104906, 0.09147, 34.81255507], [1516710720000, 0.09147, 0.09162997, 0.09104905, 0.0914694, 20.00764554], [1516710780000, 0.0914694, 0.0914694, 0.0913114, 0.0913114, 4.83992497], [1516710840000, 0.0913114, 0.09144998, 0.0913113, 0.09144998, 10.71076881], [1516710900000, 0.0913114, 0.09144998, 0.0913114, 0.0913114, 9.89355307], [1516710960000, 0.09144997, 0.09144998, 0.09109, 0.09109, 42.07035476], [1516711020000, 0.09109, 0.09144998, 0.09104905, 0.091445, 14.65652647], [1516711080000, 0.091445, 0.09144998, 0.09109001, 0.09139975, 10.85246672], [1516711140000, 0.09112824, 0.09139972, 0.091118, 0.09111824, 2.8226222], [1516711200000, 0.091118, 0.0911824, 0.0911, 0.09110001, 4.01772982], [1516711260000, 0.09110001, 0.09110001, 0.09104905, 0.09110001, 8.58375562], [1516711320000, 0.09110001, 0.09110001, 0.0911, 0.09110001, 31.00676766], [1516711380000, 0.09110001, 0.0911824, 0.0911, 0.0911, 35.97503708], [1516711440000, 0.09118239, 0.0911824, 0.0910114, 0.0910114, 26.42855005], [1516711500000, 0.0910114, 0.0911824, 0.091, 0.09116415, 12.09295151], [1516711560000, 0.0910114, 0.0911824, 0.09080001, 0.09118239, 39.80490617], [1516711620000, 0.0911824, 0.0911824, 0.09080002, 0.09080002, 40.49066622], [1516711680000, 0.09099545, 0.0911824, 0.09080002, 0.0911824, 3.62743674], [1516711740000, 0.09118238, 0.0911824, 0.09099554, 0.0911824, 15.5718414], [1516711800000, 0.0911824, 0.09133999, 0.09118226, 0.09118241, 30.89597533], [1516711860000, 0.09118241, 0.09133999, 0.09118226, 0.09118226, 23.59281455], [1516711920000, 0.09133799, 0.09133799, 0.09118226, 0.09118226, 5.83086782], [1516711980000, 0.09118226, 0.09118226, 0.0910002, 0.09118226, 27.45310795], [1516712040000, 0.09118226, 0.0912897, 0.09118226, 0.0912897, 7.35654122], [1516712100000, 0.0912897, 0.0912897, 0.091, 0.0912897, 1.91703329], [1516712160000, 0.0912, 0.0912897, 0.091, 0.09120907, 9.2642502], [1516712220000, 0.09120907, 0.09120907, 0.09100001, 0.09100001, 4.81240163], [1516712280000, 0.09100001, 0.0912092, 0.09100001, 0.09119895, 3.55506469], [1516712340000, 0.09100002, 0.09120907, 0.09100002, 0.091198, 13.0837794], [1516712400000, 0.091198, 0.09120907, 0.09107, 0.09120907, 10.58767706], [1516712460000, 0.091198, 0.09120907, 0.09107, 0.09120907, 8.66245435], [1516712520000, 0.09107, 0.09120907, 0.09100002, 0.09120901, 5.49358921], [1516712580000, 0.091209, 0.09136226, 0.09100002, 0.09136226, 51.93553609], [1516712640000, 0.09136226, 0.09136226, 0.09120901, 0.09136224, 4.84098469], [1516712700000, 0.09130037, 0.09136222, 0.09120902, 0.09123786, 7.62080815], [1516712760000, 0.09130037, 0.09136221, 0.09120901, 0.09120901, 13.19574416], [1516712820000, 0.0913622, 0.09139966, 0.09120901, 0.09139965, 16.85148558], [1516712880000, 0.09136, 0.09139965, 0.09120901, 0.09139965, 9.03059641], [1516712940000, 0.09130065, 0.09139965, 0.09130021, 0.09139965, 9.87473171], [1516713000000, 0.09139965, 0.09139966, 0.09130021, 0.09130021, 18.74391696], [1516713060000, 0.09138955, 0.09138955, 0.09120901, 0.09125903, 20.5791007], [1516713120000, 0.09134999, 0.09135, 0.09120901, 0.09121, 18.86902203], [1516713180000, 0.09123622, 0.09139966, 0.091209, 0.091209, 15.01169658], [1516713240000, 0.091209, 0.091399, 0.0911, 0.091209, 18.4253816], [1516713300000, 0.091209, 0.091209, 0.0911, 0.091209, 11.54081647], [1516713360000, 0.09120894, 0.091209, 0.0911, 0.0911, 16.69157531], [1516713420000, 0.09120899, 0.09120899, 0.09094265, 0.091, 70.30389749], [1516713480000, 0.091, 0.09109999, 0.09094265, 0.09109999, 18.7427044], [1516713540000, 0.09109999, 0.09120899, 0.09109999, 0.0911, 24.64668244], [1516713600000, 0.09109999, 0.091209, 0.09094265, 0.09094265, 4.65398151], [1516713660000, 0.09120898, 0.09129994, 0.0911, 0.0911, 33.10435157], [1516713720000, 0.0911, 0.0911, 0.09096178, 0.0911, 6.25441194], [1516713780000, 0.0911, 0.0911, 0.09096178, 0.0911, 10.59911005], [1516713840000, 0.0911, 0.0911, 0.09096178, 0.0911, 11.09018715], [1516713900000, 0.09119584, 0.09134999, 0.09110001, 0.09134999, 9.37072984], [1516713960000, 0.09128999, 0.09136107, 0.0911, 0.09120705, 32.04603017], [1516714020000, 0.0911, 0.09120707, 0.090967, 0.09117842, 35.15189153], [1516714080000, 0.09096701, 0.09117846, 0.090967, 0.09096701, 7.18948429], [1516714140000, 0.09096701, 0.09128996, 0.090967, 0.09128996, 19.06353266], [1516714200000, 0.09096701, 0.09139966, 0.09096701, 0.09096701, 25.01948096], [1516714260000, 0.09126713, 0.09126713, 0.09096701, 0.09096701, 10.89149322], [1516714320000, 0.09097, 0.0912, 0.09096701, 0.091, 5.61030476], [1516714380000, 0.091, 0.091, 0.09096701, 0.09096701, 9.87421305], [1516714440000, 0.091, 0.091, 0.09096701, 0.09096702, 26.24478324], [1516714500000, 0.09096799, 0.091, 0.09096799, 0.091, 7.3398589], [1516714560000, 0.091, 0.091, 0.09096799, 0.09099999, 13.68889782], [1516714620000, 0.09099999, 0.091, 0.09096799, 0.091, 13.46920785], [1516714680000, 0.09099999, 0.091, 0.09099999, 0.091, 3.10386348], [1516714740000, 0.091, 0.09121, 0.09099999, 0.09100001, 21.14596383], [1516714800000, 0.0912, 0.09121, 0.09100001, 0.0912, 2.29666273], [1516714860000, 0.0912, 0.09128941, 0.09100001, 0.09115, 44.11197698], [1516714920000, 0.0911088, 0.09115, 0.0911088, 0.09115, 15.59219828], [1516714980000, 0.09115, 0.09115999, 0.09115, 0.09115001, 21.83752832], [1516715040000, 0.09115001, 0.09118001, 0.09100001, 0.09100001, 37.9346094], [1516715100000, 0.09100002, 0.09128941, 0.09099997, 0.091, 29.0776814], [1516715160000, 0.09099999, 0.091, 0.09096702, 0.09098191, 76.28533515], [1516715220000, 0.09096702, 0.09124072, 0.09090001, 0.0909381, 24.67170043], [1516715280000, 0.0909381, 0.09124072, 0.09092928, 0.09119097, 26.81824016], [1516715340000, 0.09119097, 0.09124072, 0.09092928, 0.09092928, 22.4267468], [1516715400000, 0.09118989, 0.09119, 0.09092928, 0.09114823, 6.78776701], [1516715460000, 0.09092945, 0.09114821, 0.09090001, 0.09092928, 26.35599885], [1516715520000, 0.0911482, 0.09118989, 0.0909, 0.0911, 299.19274617], [1516715580000, 0.0911, 0.0911, 0.09090002, 0.0911, 4.55437284], [1516715640000, 0.09090004, 0.09113698, 0.09090003, 0.0911, 2.92522039], [1516715700000, 0.09100001, 0.09178271, 0.0909, 0.09131408, 95.43111609], [1516715760000, 0.09131408, 0.09131408, 0.0911, 0.09131408, 1.82042115], [1516715820000, 0.09131408, 0.091538, 0.09110001, 0.09146199, 9.61632235], [1516715880000, 0.09110001, 0.09143257, 0.09110001, 0.09111, 5.18994093], [1516715940000, 0.09111, 0.09142814, 0.09110001, 0.0912, 3.66467983], [1516716000000, 0.0912, 0.0912, 0.09110001, 0.0912, 3.40145844], [1516716060000, 0.0912, 0.0912, 0.09110001, 0.0912, 4.47088794], [1516716120000, 0.0912, 0.0912, 0.0909, 0.0909, 55.03087454], [1516716180000, 0.091, 0.0912, 0.0909, 0.0912, 5.55966424], [1516716240000, 0.0912, 0.0912, 0.09090002, 0.09115, 10.01388719], [1516716300000, 0.0912, 0.0912, 0.09115, 0.0912, 9.47293663], [1516716360000, 0.0912, 0.09141722, 0.09115, 0.09141721, 17.78590655], [1516716420000, 0.09115, 0.09141707, 0.0909, 0.0909, 22.88382813], [1516716480000, 0.09096582, 0.09142815, 0.09096582, 0.09135354, 18.87773416], [1516716540000, 0.09115, 0.09115, 0.09100001, 0.09115, 3.80485207], [1516716600000, 0.09115, 0.09135354, 0.09115, 0.09135353, 12.92475112], [1516716660000, 0.09135354, 0.09135354, 0.09115, 0.09135354, 10.73110457], [1516716720000, 0.09115, 0.09135354, 0.09115, 0.09134411, 13.21071729], [1516716780000, 0.09134411, 0.09135354, 0.0909, 0.0909, 33.1599171], [1516716840000, 0.09115, 0.09135354, 0.0909, 0.0909, 6.62816801], [1516716900000, 0.0909, 0.09135354, 0.0908908, 0.09135354, 2.03875317], [1516716960000, 0.09135354, 0.09139021, 0.09096125, 0.091385, 10.99929628], [1516717020000, 0.091, 0.09138499, 0.09089999, 0.09138399, 18.72227186], [1516717080000, 0.09138399, 0.09138399, 0.09095125, 0.09138399, 11.87023657], [1516717140000, 0.09096944, 0.09138399, 0.09095126, 0.09095126, 1.10569163], [1516717200000, 0.09137397, 0.09138499, 0.09095126, 0.09138396, 15.76890619], [1516717260000, 0.09098372, 0.09138396, 0.09098372, 0.09138396, 1.82357576], [1516717320000, 0.09138396, 0.09141721, 0.091, 0.09138396, 27.63631351], [1516717380000, 0.09141721, 0.09141722, 0.09097306, 0.09097306, 7.08116805], [1516717440000, 0.09096946, 0.09125, 0.09096946, 0.09096946, 2.99979058], [1516717500000, 0.09100001, 0.09124999, 0.09100001, 0.09100001, 2.19786329], [1516717560000, 0.09109101, 0.09124999, 0.09109101, 0.09124999, 3.18977907], [1516717620000, 0.0911821, 0.09144634, 0.09109102, 0.09109103, 28.32412898], [1516717680000, 0.09125002, 0.09144634, 0.091101, 0.091101, 11.99526081], [1516717740000, 0.09144634, 0.09144634, 0.091096, 0.09113353, 15.09152785], [1516717800000, 0.09113353, 0.09144633, 0.091098, 0.09144617, 10.30034632], [1516717860000, 0.09110037, 0.09144632, 0.09110037, 0.09144632, 5.43971264], [1516717920000, 0.09144633, 0.09144634, 0.09110037, 0.09112649, 16.25677484], [1516717980000, 0.0914, 0.0914, 0.09112649, 0.0914, 2.34388954], [1516718040000, 0.09112651, 0.0914, 0.09112651, 0.09138994, 1.94048462], [1516718100000, 0.09138985, 0.0914, 0.09118809, 0.0914, 9.01664755], [1516718160000, 0.0914, 0.0914, 0.09119809, 0.09119809, 1.13806254], [1516718220000, 0.09138994, 0.09138994, 0.0911981, 0.0913, 16.09783985], [1516718280000, 0.09137988, 0.09137988, 0.091208, 0.09136999, 4.06966145], [1516718340000, 0.09137, 0.09137, 0.091208, 0.09137, 12.63754549], [1516718400000, 0.09137, 0.09137988, 0.0911981, 0.09136999, 20.88996975], [1516718460000, 0.09136999, 0.09144634, 0.09136999, 0.09144634, 14.45264506], [1516718520000, 0.09138994, 0.091533, 0.09138994, 0.09138994, 11.40550844], [1516718580000, 0.09153299, 0.09167359, 0.09138994, 0.09167359, 7.65600367], [1516718640000, 0.09138994, 0.09178, 0.09138994, 0.09138994, 16.99874123], [1516718700000, 0.09138994, 0.09178954, 0.09134633, 0.09138994, 17.32224841], [1516718760000, 0.09148994, 0.09178953, 0.09138994, 0.09178953, 2.4697366], [1516718820000, 0.09177945, 0.09178949, 0.09134634, 0.09138995, 5.39741119], [1516718880000, 0.09177949, 0.09177949, 0.09138995, 0.09138995, 33.46232944], [1516718940000, 0.09138995, 0.09167944, 0.09134633, 0.0915, 63.96141051], [1516719000000, 0.09134633, 0.09145414, 0.0913, 0.09138995, 14.19656655], [1516719060000, 0.0913, 0.09149543, 0.0913, 0.09149543, 14.12442927], [1516719120000, 0.09130001, 0.09149542, 0.0912055, 0.09130003, 49.3071107], [1516719180000, 0.09149539, 0.09156413, 0.09120002, 0.09120002, 17.05560275], [1516719240000, 0.09156411, 0.09156411, 0.09120013, 0.09126333, 2.58896434], [1516719300000, 0.09126333, 0.09161135, 0.09126333, 0.09152027, 11.80726841], [1516719360000, 0.09126333, 0.09161135, 0.09126333, 0.0915, 12.3502383], [1516719420000, 0.09126336, 0.09169999, 0.09126336, 0.09130029, 10.1655844], [1516719480000, 0.09130029, 0.09169998, 0.09130029, 0.0913003, 1.56973794], [1516719540000, 0.0913003, 0.09159999, 0.0913003, 0.09159997, 2.14889283], [1516719600000, 0.09158996, 0.09169999, 0.09140001, 0.09158991, 21.19794768], [1516719660000, 0.09158991, 0.09169998, 0.09140003, 0.09169998, 21.62469111], [1516719720000, 0.09158996, 0.09169999, 0.09140006, 0.09140006, 28.17555461], [1516719780000, 0.09149831, 0.09164632, 0.09140011, 0.09164595, 11.36583903], [1516719840000, 0.09164594, 0.09164596, 0.09140011, 0.09164596, 29.39395413], [1516719900000, 0.09164596, 0.09165, 0.09141569, 0.09164001, 31.56919523], [1516719960000, 0.09164001, 0.09164001, 0.091265, 0.0914, 34.27375377], [1516720020000, 0.09139997, 0.0914, 0.09139997, 0.09139999, 40.22491996], [1516720080000, 0.09159999, 0.0916, 0.09140001, 0.0915755, 32.71472383], [1516720140000, 0.0915755, 0.0916001, 0.09140001, 0.0916, 18.08297083], [1516720200000, 0.0916, 0.09164001, 0.09140001, 0.09140001, 18.82377917], [1516720260000, 0.09163001, 0.09164001, 0.09140275, 0.09140275, 35.55613048], [1516720320000, 0.09140275, 0.09164, 0.09140275, 0.09163542, 4.60477765], [1516720380000, 0.09164001, 0.09236447, 0.09163542, 0.09163542, 288.52779509], [1516720440000, 0.09163542, 0.0918039, 0.0915, 0.0918039, 24.94764576], [1516720500000, 0.0915, 0.09182138, 0.0915, 0.09179713, 12.46884675], [1516720560000, 0.09177127, 0.09182136, 0.09152476, 0.09152476, 26.84475843], [1516720620000, 0.0917421, 0.0917421, 0.09126601, 0.09126601, 61.16276373], [1516720680000, 0.09140274, 0.09169082, 0.09126601, 0.09163666, 41.17139666], [1516720740000, 0.09162624, 0.09169086, 0.09162624, 0.09169086, 41.42786594], [1516720800000, 0.09164508, 0.09190282, 0.09164072, 0.09169086, 54.67075756], [1516720860000, 0.09164072, 0.091856, 0.09164072, 0.09164072, 17.407985], [1516720920000, 0.09164072, 0.092109, 0.09130102, 0.09164074, 24.34366596], [1516720980000, 0.09164074, 0.09179254, 0.09130101, 0.09145634, 71.93362777], [1516721040000, 0.09164071, 0.09182147, 0.09145028, 0.09164072, 8.15793783], [1516721100000, 0.09145028, 0.09172323, 0.09130101, 0.091518, 65.27975575], [1516721160000, 0.09153387, 0.09199498, 0.091098, 0.091098, 92.12805582], [1516721220000, 0.09141722, 0.09147996, 0.09095126, 0.09095126, 83.73081833], [1516721280000, 0.09109806, 0.09140295, 0.0908908, 0.09140295, 28.58492751], [1516721340000, 0.09140295, 0.09140797, 0.09116468, 0.09140294, 6.82556879], [1516721400000, 0.09140294, 0.09140797, 0.09116468, 0.09140796, 2.43923517], [1516721460000, 0.09140796, 0.09140797, 0.09109812, 0.09110809, 13.2885475], [1516721520000, 0.09110809, 0.09140797, 0.09110809, 0.09140797, 2.83421464], [1516721580000, 0.09140797, 0.09140797, 0.09120001, 0.09120001, 10.33838851], [1516721640000, 0.09140796, 0.09140796, 0.09120001, 0.09135, 5.58158496], [1516721700000, 0.09135, 0.09135, 0.091205, 0.09135, 6.30335287], [1516721760000, 0.09135, 0.09155669, 0.09135, 0.091546, 23.87379929], [1516721820000, 0.091546, 0.09179984, 0.091546, 0.09179982, 23.4682771], [1516721880000, 0.0915567, 0.0915567, 0.091546, 0.091546, 26.57152198], [1516721940000, 0.09155, 0.09155, 0.09145, 0.09154599, 239.2228317], [1516722000000, 0.09154598, 0.09154598, 0.09125641, 0.09154598, 3.4026922], [1516722060000, 0.09145, 0.09178, 0.09120001, 0.09154, 48.1836222], [1516722120000, 0.09120002, 0.091546, 0.09120002, 0.091546, 1.78495376], [1516722180000, 0.091546, 0.09178946, 0.09125641, 0.09125641, 17.59705576], [1516722240000, 0.09174036, 0.09174036, 0.09125641, 0.0913477, 17.67994791], [1516722300000, 0.0912565, 0.09170447, 0.09125641, 0.09125642, 2.39102044], [1516722360000, 0.09165, 0.09175338, 0.09125642, 0.09125642, 16.86318955], [1516722420000, 0.0916615, 0.0916615, 0.09125641, 0.09125643, 17.57734213], [1516722480000, 0.09125643, 0.09164, 0.09125641, 0.09135, 36.8910285], [1516722540000, 0.09135, 0.09161, 0.09125641, 0.09125642, 6.30335217], [1516722600000, 0.09125642, 0.09160999, 0.09125641, 0.09160995, 35.84172419], [1516722660000, 0.09161, 0.09161, 0.09125641, 0.09137978, 9.66941585], [1516722720000, 0.09137978, 0.09160995, 0.09125641, 0.09125641, 2.286032], [1516722780000, 0.09160987, 0.09164, 0.09125641, 0.09125641, 6.2969226], [1516722840000, 0.09163997, 0.09164, 0.0913, 0.09164, 16.19468208], [1516722900000, 0.09164, 0.09174877, 0.09130063, 0.09130063, 15.40532496], [1516722960000, 0.09164, 0.09164, 0.0913, 0.09143247, 0.49875415], [1516723020000, 0.09143247, 0.09143247, 0.0913, 0.09143247, 10.95117688], [1516723080000, 0.09143247, 0.09143247, 0.09130001, 0.09130005, 5.32072333], [1516723140000, 0.09130005, 0.09179988, 0.09130005, 0.09179988, 34.39172508], [1516723200000, 0.09179988, 0.091909, 0.09148315, 0.09168767, 25.42181124], [1516723260000, 0.09168767, 0.09229995, 0.09167478, 0.09167478, 98.35639166], [1516723320000, 0.09167478, 0.09227509, 0.09152485, 0.09152485, 18.93446312], [1516723380000, 0.092, 0.092, 0.09150176, 0.09184999, 4.37156471], [1516723440000, 0.09184999, 0.09184999, 0.09150176, 0.09178945, 5.73122008], [1516723500000, 0.09178945, 0.09184897, 0.09145028, 0.0914509, 9.5689047], [1516723560000, 0.0914509, 0.09181999, 0.0913, 0.091674, 11.68655325], [1516723620000, 0.09175659, 0.09176622, 0.09125641, 0.09125641, 9.47123365], [1516723680000, 0.09166, 0.09167, 0.091308, 0.091308, 17.76375281], [1516723740000, 0.09159999, 0.09159999, 0.091308, 0.09154999, 12.64935348], [1516723800000, 0.09133912, 0.09154999, 0.0913, 0.0913, 5.87414769], [1516723860000, 0.09155, 0.0916, 0.0913, 0.0916, 87.71944559], [1516723920000, 0.09159, 0.0916, 0.09125642, 0.09125642, 13.92036938], [1516723980000, 0.0916, 0.0916, 0.09125642, 0.09158999, 7.12902787], [1516724040000, 0.09125643, 0.09159996, 0.09125642, 0.09158998, 20.17050058], [1516724100000, 0.09156708, 0.09159308, 0.09136708, 0.09159, 11.08054276], [1516724160000, 0.09159002, 0.09159996, 0.09125644, 0.09125644, 27.51835787], [1516724220000, 0.09158999, 0.091595, 0.0914, 0.091595, 12.20671245], [1516724280000, 0.09159997, 0.09159997, 0.091266, 0.09159, 4.31190774], [1516724340000, 0.09159, 0.0916, 0.09126601, 0.09126601, 7.35249329], [1516724400000, 0.091271, 0.091357, 0.09125642, 0.09126601, 46.8051751], [1516724460000, 0.09153971, 0.09157999, 0.0912565, 0.09156999, 28.01387036], [1516724520000, 0.09156999, 0.09156999, 0.0912565, 0.09125651, 6.90825815], [1516724580000, 0.09125651, 0.0914, 0.09125651, 0.0914, 4.27870157], [1516724640000, 0.0914, 0.09156991, 0.09125652, 0.09125652, 17.19599793], [1516724700000, 0.0914, 0.09156985, 0.0912565, 0.0912565, 21.66649263], [1516724760000, 0.09125651, 0.09125651, 0.09120001, 0.09120001, 130.64526055], [1516724820000, 0.09120001, 0.09122506, 0.09086888, 0.09091443, 66.25123062], [1516724880000, 0.09088, 0.09120001, 0.0908, 0.09089999, 113.05240687], [1516724940000, 0.09089999, 0.09091442, 0.09065711, 0.0909144, 149.82306011], [1516725000000, 0.090771, 0.09100156, 0.09053001, 0.09091434, 32.19794928], [1516725060000, 0.09091434, 0.09099436, 0.0905, 0.09089878, 51.71652473], [1516725120000, 0.09089878, 0.09098899, 0.09049011, 0.09049011, 128.15374069], [1516725180000, 0.0905, 0.09122999, 0.0904, 0.090717, 99.51592291], [1516725240000, 0.0907211, 0.0907211, 0.090342, 0.09071699, 25.06272604], [1516725300000, 0.09071698, 0.09105299, 0.09050014, 0.090717, 9.15173965], [1516725360000, 0.090717, 0.091028, 0.0904, 0.0907, 71.97863375], [1516725420000, 0.09040001, 0.09102782, 0.09040001, 0.0907, 27.62006306], [1516725480000, 0.0907, 0.09102198, 0.090443, 0.09088088, 38.77459959], [1516725540000, 0.09088088, 0.091017, 0.090443, 0.09050008, 49.93428684], [1516725600000, 0.09050008, 0.09085492, 0.09044301, 0.0905, 24.04670067], [1516725660000, 0.0905, 0.09085038, 0.09044307, 0.09050002, 14.94543615], [1516725720000, 0.09058, 0.09084583, 0.090443, 0.0905, 29.88838336], [1516725780000, 0.09055736, 0.09055736, 0.090443, 0.090443, 43.15107213], [1516725840000, 0.0905, 0.09055736, 0.090443, 0.090443, 22.02992569], [1516725900000, 0.090443, 0.09055735, 0.0903, 0.09045, 81.14023434], [1516725960000, 0.0904704, 0.09054999, 0.09044779, 0.09044779, 23.06105411], [1516726020000, 0.09045, 0.0904704, 0.09045, 0.09045, 4.52234163], [1516726080000, 0.09045, 0.0904704, 0.09033, 0.09043701, 37.48543176], [1516726140000, 0.09043701, 0.09043701, 0.09033001, 0.09043701, 12.61221978], [1516726200000, 0.09043701, 0.09043701, 0.09033, 0.09033, 40.10469516], [1516726260000, 0.09043699, 0.090437, 0.0903, 0.0903, 14.47016694], [1516726320000, 0.09033001, 0.09043701, 0.09030001, 0.09035, 22.77622222], [1516726380000, 0.09035, 0.09043701, 0.09030001, 0.090437, 29.40461964], [1516726440000, 0.090437, 0.09047038, 0.09033331, 0.09046998, 37.14921623], [1516726500000, 0.09046998, 0.0904704, 0.09030001, 0.090437, 27.47675789], [1516726560000, 0.090437, 0.09045961, 0.0900967, 0.0903, 154.74409424], [1516726620000, 0.0903, 0.09046805, 0.0900967, 0.09045961, 48.51456507], [1516726680000, 0.09045961, 0.09045961, 0.09000569, 0.09027001, 39.31211958], [1516726740000, 0.09026, 0.0903673, 0.0900769, 0.0903673, 31.63069326], [1516726800000, 0.09036729, 0.0903673, 0.09000001, 0.09036728, 26.95394252], [1516726860000, 0.09000301, 0.09036728, 0.09, 0.09000004, 82.67923421], [1516726920000, 0.09, 0.09034999, 0.09, 0.090026, 13.22736588], [1516726980000, 0.09002603, 0.09034994, 0.09, 0.09002606, 117.30395375], [1516727040000, 0.09002606, 0.09036727, 0.09000001, 0.09002606, 20.11523343], [1516727100000, 0.09002606, 0.09002606, 0.09000001, 0.09002606, 18.45594825], [1516727160000, 0.09, 0.09002606, 0.08997318, 0.089993, 24.41353824], [1516727220000, 0.08997318, 0.089993, 0.08995, 0.08999299, 28.56911719], [1516727280000, 0.08999299, 0.089993, 0.0899732, 0.089993, 12.12880103], [1516727340000, 0.089993, 0.09046479, 0.0899732, 0.09046479, 44.98977137], [1516727400000, 0.09046479, 0.0904998, 0.09028209, 0.090495, 4.03527922], [1516727460000, 0.090495, 0.09049999, 0.090495, 0.09049505, 11.36965858], [1516727520000, 0.0904998, 0.09049999, 0.09049505, 0.0904998, 9.29813168], [1516727580000, 0.09049801, 0.09049801, 0.09046479, 0.09049, 43.15175835], [1516727640000, 0.09049, 0.09052698, 0.09021343, 0.09050069, 65.23950963], [1516727700000, 0.09050069, 0.09052697, 0.09050069, 0.09050069, 56.81337624], [1516727760000, 0.09050069, 0.09052695, 0.089993, 0.0902285, 83.0331885], [1516727820000, 0.089993, 0.09049141, 0.08996598, 0.08999301, 35.9065426], [1516727880000, 0.08999301, 0.09027106, 0.08983071, 0.09022747, 60.63298618], [1516727940000, 0.09022747, 0.09025001, 0.08975, 0.09, 30.90368571], [1516728000000, 0.08989656, 0.09010439, 0.08989656, 0.09010439, 25.75648894], [1516728060000, 0.09, 0.09037297, 0.08989656, 0.09000001, 134.30846313], [1516728120000, 0.09000001, 0.09020168, 0.08991954, 0.09000001, 19.47595506], [1516728180000, 0.09, 0.09, 0.08991954, 0.08997311, 8.14254831], [1516728240000, 0.08991958, 0.08997311, 0.08991955, 0.08991955, 8.59753179], [1516728300000, 0.08991955, 0.08991958, 0.08991955, 0.08991958, 4.14148586], [1516728360000, 0.08991958, 0.08991958, 0.08991955, 0.08991958, 4.78270083], [1516728420000, 0.08991958, 0.09028191, 0.08991955, 0.08991958, 27.35885], [1516728480000, 0.08992077, 0.09028191, 0.08991958, 0.08991959, 5.90877646], [1516728540000, 0.0901, 0.09028187, 0.08991959, 0.0899196, 9.84181647], [1516728600000, 0.0899196, 0.0902759, 0.0899196, 0.09027589, 6.15064561], [1516728660000, 0.09028188, 0.09028188, 0.08992, 0.09000001, 4.68941813], [1516728720000, 0.09000001, 0.09010093, 0.08992, 0.0901, 9.38230604], [1516728780000, 0.09, 0.090542, 0.08991969, 0.08992, 63.2995054], [1516728840000, 0.08992, 0.09, 0.08992, 0.09, 6.95924812], [1516728900000, 0.09, 0.09025957, 0.09, 0.0901, 7.21170481], [1516728960000, 0.09000002, 0.09025953, 0.09000001, 0.09000001, 7.37452622], [1516729020000, 0.09000002, 0.09000002, 0.09000001, 0.09000001, 35.36788651], [1516729080000, 0.09000001, 0.09000002, 0.08992, 0.09000001, 35.20699249], [1516729140000, 0.09000001, 0.09000002, 0.09000001, 0.09000002, 6.50391424], [1516729200000, 0.09000002, 0.09000002, 0.09, 0.09, 11.04427609], [1516729260000, 0.09000002, 0.09000002, 0.08992, 0.09, 3.30347174], [1516729320000, 0.09000002, 0.090331, 0.08999, 0.09000002, 15.82011836], [1516729380000, 0.09000002, 0.09028192, 0.0899201, 0.09, 20.71453125], [1516729440000, 0.09, 0.09028191, 0.08992049, 0.09025142, 13.34483651], [1516729500000, 0.09, 0.09025547, 0.0899201, 0.08992011, 5.07693179], [1516729560000, 0.09, 0.09020586, 0.09, 0.09020585, 20.7113891], [1516729620000, 0.09020585, 0.09020585, 0.09, 0.09000002, 27.22264846], [1516729680000, 0.09020585, 0.09020585, 0.0899201, 0.09, 38.32467003], [1516729740000, 0.09, 0.09019778, 0.09, 0.09, 16.54027894], [1516729800000, 0.09, 0.09019778, 0.09, 0.09, 26.06714603], [1516729860000, 0.09019776, 0.09019777, 0.09, 0.09, 3.1400496], [1516729920000, 0.09, 0.09019776, 0.09, 0.09, 54.29642046], [1516729980000, 0.09, 0.09000001, 0.0899202, 0.09000001, 46.96674781], [1516730040000, 0.090001, 0.09019776, 0.09, 0.09019776, 13.64596512], [1516730100000, 0.09015248, 0.09019778, 0.0900001, 0.09019778, 44.66681998], [1516730160000, 0.09015247, 0.09019778, 0.0900001, 0.0900001, 10.38609237], [1516730220000, 0.0900001, 0.09019778, 0.0900001, 0.09000011, 11.97721343], [1516730280000, 0.09019778, 0.09028191, 0.09000011, 0.0902, 29.94914276], [1516730340000, 0.0902, 0.0902819, 0.09000011, 0.0900009, 8.21050787], [1516730400000, 0.0900009, 0.09030907, 0.09000011, 0.09020587, 10.98500583], [1516730460000, 0.09020587, 0.09028192, 0.09000011, 0.09000012, 4.17724623], [1516730520000, 0.09000012, 0.09027218, 0.09000005, 0.09000005, 29.64184124], [1516730580000, 0.0900001, 0.09019999, 0.09, 0.09, 40.23172917], [1516730640000, 0.09, 0.0900001, 0.08991955, 0.0900001, 38.76774415], [1516730700000, 0.09000006, 0.0900001, 0.08999, 0.08999, 15.42524354], [1516730760000, 0.08999, 0.09009999, 0.08981, 0.08989, 8.3634575], [1516730820000, 0.08989, 0.0901, 0.08989, 0.08989, 1.79658428], [1516730880000, 0.08989, 0.0901, 0.0897915, 0.09000012, 31.2237309], [1516730940000, 0.09000015, 0.09022004, 0.09000012, 0.09000012, 7.68086269], [1516731000000, 0.09000012, 0.09035599, 0.08999, 0.08999, 10.05292908], [1516731060000, 0.08999, 0.0902742, 0.0897915, 0.09027419, 26.09945665], [1516731120000, 0.09027387, 0.0902742, 0.08977701, 0.09027419, 20.04862316], [1516731180000, 0.09027417, 0.09027417, 0.09, 0.09026896, 7.61879894], [1516731240000, 0.09026894, 0.09026896, 0.09, 0.09, 14.14389189], [1516731300000, 0.09026892, 0.09026892, 0.09, 0.090232, 6.82344904], [1516731360000, 0.09023199, 0.09023199, 0.09, 0.09023197, 19.79224348], [1516731420000, 0.09023099, 0.09023099, 0.09, 0.09000001, 0.97492769], [1516731480000, 0.0902309, 0.09023091, 0.09000001, 0.09023091, 2.26179567], [1516731540000, 0.09023091, 0.09023091, 0.09000001, 0.09023, 7.8550162], [1516731600000, 0.09023, 0.09023, 0.09022996, 0.09022996, 58.8415043], [1516731660000, 0.09023, 0.09023092, 0.0901, 0.09022994, 5.02967362], [1516731720000, 0.09022994, 0.090552, 0.09011, 0.09022996, 22.74430781], [1516731780000, 0.09022996, 0.09052198, 0.09022996, 0.09023, 6.03638368], [1516731840000, 0.09023, 0.09023, 0.09, 0.09000002, 10.14766105], [1516731900000, 0.09000002, 0.09048495, 0.09, 0.09, 7.43038361], [1516731960000, 0.09, 0.09047492, 0.09, 0.09000003, 2.23119032], [1516732020000, 0.09000003, 0.09048499, 0.09000003, 0.09000004, 8.1052208], [1516732080000, 0.09003257, 0.09048498, 0.09000003, 0.09025876, 11.7694159], [1516732140000, 0.09025876, 0.09025876, 0.0901, 0.09025876, 5.56893746], [1516732200000, 0.09025876, 0.09025876, 0.09012, 0.09012, 2.94770975], [1516732260000, 0.09025876, 0.09047899, 0.09025876, 0.09047898, 13.67987176], [1516732320000, 0.09033993, 0.09047898, 0.09033993, 0.09033993, 44.56938098], [1516732380000, 0.09033993, 0.09047399, 0.09025876, 0.09025876, 25.31037666], [1516732440000, 0.09025876, 0.09039999, 0.09025876, 0.09038999, 4.61928197], [1516732500000, 0.09025876, 0.09039, 0.09025876, 0.09031981, 17.8313306], [1516732560000, 0.09031981, 0.09048499, 0.09031981, 0.09045061, 157.70856559], [1516732620000, 0.09039999, 0.09046413, 0.09004257, 0.09004257, 116.72988957], [1516732680000, 0.09029981, 0.09039999, 0.09004257, 0.09039999, 7.98472335], [1516732740000, 0.09037999, 0.090381, 0.09004257, 0.09038097, 9.41922829], [1516732800000, 0.09004257, 0.09038097, 0.09004257, 0.09004257, 67.33275799], [1516732860000, 0.09031328, 0.09031328, 0.08982, 0.0899955, 41.57059024], [1516732920000, 0.08997187, 0.09029997, 0.08977701, 0.09028188, 5.07791286], [1516732980000, 0.09028182, 0.09028182, 0.08977701, 0.09018999, 13.8954275], [1516733040000, 0.09018999, 0.09018999, 0.08975, 0.08975, 81.94995991], [1516733100000, 0.08975, 0.09013978, 0.08950465, 0.08954034, 42.50019367], [1516733160000, 0.08952034, 0.089742, 0.0895007, 0.08950465, 10.98799755], [1516733220000, 0.08950465, 0.08991599, 0.08950465, 0.08952465, 19.33546357], [1516733280000, 0.08952465, 0.08995662, 0.08952465, 0.0897678, 10.00272774], [1516733340000, 0.08976781, 0.08978782, 0.08952465, 0.08952465, 29.11066435], [1516733400000, 0.08952465, 0.08976774, 0.08950001, 0.08950002, 10.68759473], [1516733460000, 0.08950002, 0.08976773, 0.0895, 0.0895007, 12.88055185], [1516733520000, 0.08972497, 0.08972497, 0.08945832, 0.08946411, 14.04355735], [1516733580000, 0.08944846, 0.08944846, 0.0893509, 0.08937091, 7.48199435], [1516733640000, 0.08937091, 0.08950034, 0.08930399, 0.08939465, 7.19583072], [1516733700000, 0.08935101, 0.08967499, 0.08924855, 0.08925, 54.75308705], [1516733760000, 0.08925, 0.08925, 0.08915487, 0.08924778, 27.40484052], [1516733820000, 0.08924778, 0.08925, 0.08924778, 0.08925, 15.46125854], [1516733880000, 0.08925, 0.08939465, 0.08924778, 0.08939465, 34.78391361], [1516733940000, 0.08939465, 0.08963491, 0.08937465, 0.08962999, 57.07972184], [1516734000000, 0.08959999, 0.08969499, 0.08924778, 0.08946832, 28.30406101], [1516734060000, 0.08924779, 0.08946827, 0.08924778, 0.08946795, 12.80734241], [1516734120000, 0.08925, 0.08946832, 0.08924778, 0.08925, 17.20382784], [1516734180000, 0.08925, 0.08973634, 0.08925, 0.0895, 6.23364849], [1516734240000, 0.0895, 0.08973631, 0.08924782, 0.08972097, 57.06697989], [1516734300000, 0.08927, 0.08972097, 0.08924782, 0.08945, 23.96782323], [1516734360000, 0.08924782, 0.08945, 0.08924778, 0.08927237, 6.38049519], [1516734420000, 0.08927237, 0.08927237, 0.08925955, 0.08927237, 2.25129961], [1516734480000, 0.08927237, 0.08927237, 0.08925955, 0.08927237, 8.23243389], [1516734540000, 0.08924783, 0.08927237, 0.08924783, 0.08924783, 12.91498733], [1516734600000, 0.08924783, 0.08927237, 0.08911295, 0.08911295, 38.01707689], [1516734660000, 0.08923783, 0.08945, 0.08916298, 0.08928187, 31.46149837], [1516734720000, 0.08945, 0.08969799, 0.08910867, 0.08928187, 8.89085001], [1516734780000, 0.08925, 0.08944999, 0.08910001, 0.08944999, 5.88917484], [1516734840000, 0.08944999, 0.08944999, 0.08910001, 0.08934999, 4.4899828], [1516734900000, 0.08944999, 0.08944999, 0.08934999, 0.08934999, 2.69850535], [1516734960000, 0.08934999, 0.08944999, 0.08910001, 0.08910002, 21.44292932], [1516735020000, 0.08944999, 0.08963996, 0.0892, 0.08963994, 2.76915649], [1516735080000, 0.08934999, 0.08970999, 0.08911585, 0.08911586, 13.57498906], [1516735140000, 0.0895, 0.0895, 0.0891214, 0.08920001, 2.37549722], [1516735200000, 0.08971, 0.08972096, 0.0895, 0.08971, 2.27778471], [1516735260000, 0.08972095, 0.08972096, 0.08970999, 0.08972096, 2.67747079], [1516735320000, 0.08971, 0.08972598, 0.08970997, 0.08972096, 16.50555968], [1516735380000, 0.08972096, 0.08972598, 0.08968498, 0.08972096, 29.22279604], [1516735440000, 0.08972598, 0.08972598, 0.0895, 0.08950001, 6.53821445], [1516735500000, 0.08972598, 0.08972598, 0.0895, 0.08950002, 5.261958], [1516735560000, 0.08950002, 0.08972598, 0.08950002, 0.08972598, 4.80938848], [1516735620000, 0.08950002, 0.08972598, 0.0895, 0.08972598, 4.46054045], [1516735680000, 0.08972598, 0.08972598, 0.0895, 0.08972548, 15.9689519], [1516735740000, 0.08972548, 0.08972548, 0.0895, 0.08950001, 1.82784254], [1516735800000, 0.08950001, 0.08972, 0.0892001, 0.08971999, 5.50856157], [1516735860000, 0.08971995, 0.08971997, 0.08922534, 0.08922534, 3.94710577], [1516735920000, 0.08948, 0.08971995, 0.08922534, 0.08971995, 4.2995157], [1516735980000, 0.08971994, 0.08971995, 0.089226, 0.08922602, 13.79063185], [1516736040000, 0.08971994, 0.08971994, 0.0892713, 0.08971992, 15.92602328], [1516736100000, 0.08927133, 0.08972, 0.08927132, 0.08971992, 5.69243414], [1516736160000, 0.08971992, 0.08972, 0.08930001, 0.08930004, 9.02231432], [1516736220000, 0.08971999, 0.090023, 0.08930002, 0.090023, 61.99646013], [1516736280000, 0.0899744, 0.09001799, 0.08930006, 0.09000299, 3.87231435], [1516736340000, 0.09000299, 0.09000299, 0.089305, 0.08994299, 10.56469486], [1516736400000, 0.08989999, 0.08989999, 0.0894, 0.0894, 10.86402213], [1516736460000, 0.0894, 0.08988497, 0.08930502, 0.08987998, 19.12579604], [1516736520000, 0.08988497, 0.089885, 0.089875, 0.08987998, 6.86527884], [1516736580000, 0.08987998, 0.08999798, 0.08987998, 0.08987998, 9.98824166], [1516736640000, 0.08993132, 0.09000299, 0.08950001, 0.09000299, 2.83967211], [1516736700000, 0.09000001, 0.09000299, 0.0895835, 0.09, 11.81996338], [1516736760000, 0.09, 0.09000299, 0.0897, 0.08975, 6.20877208], [1516736820000, 0.08975, 0.09000299, 0.08975, 0.09000299, 29.53892083], [1516736880000, 0.09000299, 0.09000299, 0.09, 0.09, 4.93374805], [1516736940000, 0.09, 0.09003257, 0.09, 0.0900001, 10.2294861], [1516737000000, 0.0900001, 0.09003257, 0.09, 0.09, 9.73142659], [1516737060000, 0.09, 0.09003257, 0.08975001, 0.0898, 12.30000023], [1516737120000, 0.0898, 0.09003257, 0.08975001, 0.09003257, 15.71927764], [1516737180000, 0.08975005, 0.09003257, 0.08975005, 0.09003257, 10.83884405], [1516737240000, 0.08975005, 0.09003257, 0.08975005, 0.08975005, 4.50482996], [1516737300000, 0.08979289, 0.09003257, 0.08975005, 0.09003257, 12.00590183], [1516737360000, 0.09003257, 0.09003257, 0.08975005, 0.08975005, 38.29784618], [1516737420000, 0.08999998, 0.08999999, 0.08975002, 0.08975005, 34.09622292], [1516737480000, 0.08975002, 0.08975005, 0.08975001, 0.08975001, 31.67644274], [1516737540000, 0.08975001, 0.08975005, 0.08975, 0.08975004, 17.55469607], [1516737600000, 0.08975004, 0.08975004, 0.0896, 0.08975003, 32.46389746], [1516737660000, 0.0896, 0.08975004, 0.089511, 0.08975003, 10.18726402], [1516737720000, 0.08975003, 0.08975004, 0.0896, 0.0896, 3.88532563], [1516737780000, 0.0896, 0.0896, 0.08951121, 0.0896, 2.34579318], [1516737840000, 0.0896, 0.0896, 0.08951121, 0.0896, 8.56363673], [1516737900000, 0.08975004, 0.08975004, 0.0896, 0.08975004, 1.19207026], [1516737960000, 0.08975004, 0.08975004, 0.08951541, 0.08951541, 5.09177291], [1516738020000, 0.08975004, 0.09, 0.08951547, 0.09, 35.17202428], [1516738080000, 0.09, 0.09, 0.08951541, 0.08951548, 18.93644584], [1516738140000, 0.08973926, 0.089995, 0.08951547, 0.08954003, 2.47113053], [1516738200000, 0.08998548, 0.08999526, 0.08954003, 0.08999526, 4.72237399], [1516738260000, 0.08954503, 0.08999525, 0.08954503, 0.08997524, 6.30790117], [1516738320000, 0.08997524, 0.08999525, 0.08964, 0.08999525, 4.15725552], [1516738380000, 0.08999525, 0.08999527, 0.08964, 0.08999526, 2.55593326], [1516738440000, 0.08999526, 0.09, 0.08964001, 0.08999526, 13.11066226], [1516738500000, 0.08999526, 0.09, 0.089719, 0.08971902, 3.94171617], [1516738560000, 0.08971901, 0.08999526, 0.089719, 0.08997525, 2.98566313], [1516738620000, 0.08972001, 0.08997525, 0.08972001, 0.08997525, 14.40525467], [1516738680000, 0.08997525, 0.08997525, 0.08996525, 0.08996525, 4.07292873], [1516738740000, 0.08996526, 0.08997525, 0.08996525, 0.08996526, 16.40480832], [1516738800000, 0.08996526, 0.08997525, 0.08996525, 0.08996526, 14.04869045], [1516738860000, 0.08996525, 0.08996526, 0.08996525, 0.08996526, 23.63897313], [1516738920000, 0.08996526, 0.08997525, 0.08964001, 0.08972, 18.93170458], [1516738980000, 0.08980972, 0.08997525, 0.08964001, 0.08997525, 15.42045737], [1516739040000, 0.08997525, 0.08997525, 0.08983975, 0.08997525, 23.42544856], [1516739100000, 0.08983976, 0.08997526, 0.08983976, 0.08997526, 10.7228662], [1516739160000, 0.08983976, 0.08997526, 0.08983976, 0.08997524, 5.05397811], [1516739220000, 0.08997524, 0.08997526, 0.08983975, 0.08983975, 34.22476116], [1516739280000, 0.08983976, 0.08997526, 0.08983975, 0.08997525, 7.5790798], [1516739340000, 0.08983975, 0.08997525, 0.08983975, 0.08997525, 4.92204015], [1516739400000, 0.089975, 0.08997525, 0.0898398, 0.0898398, 9.47244209], [1516739460000, 0.08997525, 0.08997525, 0.08983981, 0.08997525, 4.66258174], [1516739520000, 0.08997525, 0.08997525, 0.08992982, 0.08997525, 5.89564106], [1516739580000, 0.08992983, 0.08997526, 0.08992983, 0.08997526, 26.67492074], [1516739640000, 0.08997526, 0.08997526, 0.08993999, 0.08994, 8.57035253], [1516739700000, 0.08994, 0.08997526, 0.08994, 0.08997526, 20.16667023], [1516739760000, 0.08994, 0.08994, 0.08993999, 0.08993999, 3.83052732], [1516739820000, 0.08992983, 0.08994, 0.0899, 0.08992989, 5.61769193], [1516739880000, 0.08994, 0.08997526, 0.08992989, 0.08992989, 8.69296155], [1516739940000, 0.08997526, 0.09003257, 0.08992989, 0.09, 33.77112061], [1516740000000, 0.09003257, 0.09039997, 0.08997526, 0.0903718, 10.22192155], [1516740060000, 0.09032999, 0.09032999, 0.08992989, 0.09030999, 8.06741063], [1516740120000, 0.09030999, 0.09033497, 0.09, 0.090309, 14.12846545], [1516740180000, 0.09005498, 0.09046414, 0.0899, 0.0899, 29.8595031], [1516740240000, 0.09019, 0.09045414, 0.0899, 0.09045414, 45.90487671], [1516740300000, 0.09045414, 0.09046414, 0.0902, 0.0902, 10.51900171], [1516740360000, 0.0904541, 0.09045413, 0.0902, 0.0902, 7.68286698], [1516740420000, 0.0902, 0.09044409, 0.0902, 0.09035, 3.61934319], [1516740480000, 0.09034999, 0.090439, 0.09034999, 0.090439, 3.88836774], [1516740540000, 0.090439, 0.09044413, 0.0903, 0.090439, 10.78306139], [1516740600000, 0.090439, 0.09044412, 0.09030002, 0.09044412, 3.39722954], [1516740660000, 0.090444, 0.09044411, 0.090205, 0.09030001, 14.85720619], [1516740720000, 0.09020502, 0.09030005, 0.09020001, 0.09020001, 9.1683591], [1516740780000, 0.0903, 0.090464, 0.09020001, 0.090464, 42.94945442], [1516740840000, 0.09020501, 0.09044413, 0.09020005, 0.0903, 4.39158143], [1516740900000, 0.0903, 0.09046414, 0.09020005, 0.0903, 19.35589907], [1516740960000, 0.09046414, 0.0905, 0.0903, 0.0903, 1.79473687], [1516741020000, 0.0903, 0.09049999, 0.0901, 0.09049498, 96.3220421], [1516741080000, 0.09047498, 0.09048498, 0.0901, 0.0901, 9.30535825], [1516741140000, 0.0901, 0.0904441, 0.0901, 0.0901, 6.3208938], [1516741200000, 0.09024899, 0.09024899, 0.09, 0.09015, 30.07762605], [1516741260000, 0.09015, 0.09015, 0.09, 0.09005, 11.36210981], [1516741320000, 0.09000001, 0.09005, 0.09, 0.09005, 27.1196278], [1516741380000, 0.09005, 0.09042, 0.09, 0.09040499, 30.09753406], [1516741440000, 0.09040499, 0.09040499, 0.08997254, 0.08998, 25.0263183], [1516741500000, 0.08998, 0.09033337, 0.0899, 0.0899294, 7.77720229], [1516741560000, 0.0899294, 0.09030996, 0.0899, 0.0899, 15.87007228], [1516741620000, 0.09000505, 0.09042996, 0.09000505, 0.09042996, 7.12664721], [1516741680000, 0.09040498, 0.09042998, 0.0901, 0.09042996, 9.98046605], [1516741740000, 0.09040995, 0.09040996, 0.09038995, 0.09038995, 14.2024741], [1516741800000, 0.09011988, 0.09038995, 0.0901, 0.0902, 0.70405925], [1516741860000, 0.0902, 0.09049999, 0.09010001, 0.09049999, 12.52814545], [1516741920000, 0.09010001, 0.09049499, 0.0901, 0.09049499, 15.26304378], [1516741980000, 0.09049499, 0.0905, 0.0901, 0.09049999, 14.94311684], [1516742040000, 0.09011002, 0.0905, 0.09010001, 0.0902, 13.71081496], [1516742100000, 0.0902, 0.0905, 0.0902, 0.09049998, 6.70813717], [1516742160000, 0.0902, 0.0905, 0.0901, 0.0905, 80.93205148], [1516742220000, 0.0905, 0.09050001, 0.0902, 0.0902, 5.20600565], [1516742280000, 0.09047996, 0.09047997, 0.0902, 0.0902, 4.8495152], [1516742340000, 0.09020001, 0.09046993, 0.0902, 0.09045538, 3.67472868], [1516742400000, 0.09020001, 0.09045541, 0.0902, 0.0904554, 12.34560115], [1516742460000, 0.0904554, 0.09055736, 0.0903, 0.09045536, 35.61992446], [1516742520000, 0.0902, 0.09055736, 0.0902, 0.09044981, 26.45070361], [1516742580000, 0.0904043, 0.09055736, 0.0904043, 0.09041, 15.25883763], [1516742640000, 0.09041, 0.09055736, 0.09041, 0.09051243, 17.07767804], [1516742700000, 0.09042, 0.09055736, 0.09040428, 0.09055734, 33.63592954], [1516742760000, 0.09055734, 0.09055736, 0.09040428, 0.09040428, 17.12780122], [1516742820000, 0.09055734, 0.09055734, 0.09042001, 0.09055734, 17.55242383], [1516742880000, 0.09055734, 0.09055736, 0.09042001, 0.09055736, 16.73472379], [1516742940000, 0.09051043, 0.09059999, 0.09042001, 0.09059999, 21.10610947], [1516743000000, 0.09059999, 0.0906, 0.09042001, 0.09059999, 15.57328864], [1516743060000, 0.09059998, 0.09059998, 0.09042001, 0.090538, 6.62228664], [1516743120000, 0.090538, 0.09079998, 0.090538, 0.09079998, 17.74197133], [1516743180000, 0.090538, 0.0906207, 0.090538, 0.09054507, 3.61118875], [1516743240000, 0.09054506, 0.0906941, 0.09042001, 0.0905, 19.78854401], [1516743300000, 0.09040428, 0.0906, 0.09020022, 0.09020022, 79.94022732], [1516743360000, 0.09020022, 0.09072999, 0.09020022, 0.09066998, 25.54605781], [1516743420000, 0.09033, 0.09068292, 0.09033, 0.09061696, 243.93581669], [1516743480000, 0.09061696, 0.09067998, 0.09033, 0.090331, 12.58761487], [1516743540000, 0.090331, 0.09059998, 0.090331, 0.09033101, 190.03679983], [1516743600000, 0.09033101, 0.09073612, 0.090331, 0.09073612, 221.78244355], [1516743660000, 0.09073612, 0.09079998, 0.090331, 0.09079998, 22.37872988], [1516743720000, 0.09075999, 0.09075999, 0.090331, 0.09075229, 6.83105298], [1516743780000, 0.09033551, 0.09075229, 0.09033551, 0.09075223, 2.1826233], [1516743840000, 0.09075199, 0.09075199, 0.09034001, 0.09075195, 1.86179193], [1516743900000, 0.0907519, 0.09075204, 0.09043101, 0.09075188, 38.53682629], [1516743960000, 0.09043103, 0.0907519, 0.09043103, 0.09043103, 4.23525936], [1516744020000, 0.09075184, 0.0907519, 0.0904501, 0.09045011, 16.16665321], [1516744080000, 0.09045011, 0.09075189, 0.09045011, 0.09075181, 7.59651156], [1516744140000, 0.09075181, 0.09075181, 0.0904501, 0.0904501, 19.91761255], [1516744200000, 0.09045011, 0.09075181, 0.09045011, 0.09054065, 2.65256076], [1516744260000, 0.09075181, 0.09075229, 0.0904501, 0.09054065, 19.62385235], [1516744320000, 0.0904501, 0.09075229, 0.0904501, 0.09054065, 12.42142384], [1516744380000, 0.09075229, 0.09079999, 0.09045, 0.09045, 63.94420043], [1516744440000, 0.09045, 0.09081013, 0.09045, 0.09045, 9.66596224], [1516744500000, 0.09045, 0.09084583, 0.09045, 0.09045, 12.57421695], [1516744560000, 0.0905, 0.09082998, 0.09045, 0.09082993, 7.78669341], [1516744620000, 0.09045, 0.09082992, 0.09045, 0.09082898, 10.65816906], [1516744680000, 0.09082898, 0.09082898, 0.09045, 0.0904501, 23.19717219], [1516744740000, 0.09045001, 0.0908199, 0.09045001, 0.09081891, 6.19134013], [1516744800000, 0.09065001, 0.09081891, 0.09045, 0.09080986, 16.25279844], [1516744860000, 0.09080982, 0.09080986, 0.09045, 0.0908, 6.24253742], [1516744920000, 0.0908, 0.0908, 0.09045, 0.0906, 2.55630316], [1516744980000, 0.0906, 0.0906, 0.09045001, 0.0906, 2.22279486], [1516745040000, 0.0906, 0.0908, 0.09045024, 0.0904503, 5.82182296], [1516745100000, 0.0908, 0.0908, 0.0904503, 0.0904503, 14.10719314], [1516745160000, 0.09079995, 0.09079995, 0.09044169, 0.09044169, 52.3133099], [1516745220000, 0.09078999, 0.09078999, 0.0905, 0.0905, 18.8219178], [1516745280000, 0.0905, 0.09050001, 0.0905, 0.09050001, 4.61715224], [1516745340000, 0.0905, 0.09050001, 0.0905, 0.09050001, 30.81706219], [1516745400000, 0.09050001, 0.09065996, 0.09043101, 0.09043101, 18.60996547], [1516745460000, 0.09065542, 0.09065542, 0.09035, 0.09065087, 14.83628046], [1516745520000, 0.09065087, 0.09065087, 0.09034, 0.09034, 16.66102309], [1516745580000, 0.09058159, 0.0909, 0.09034, 0.09035796, 50.09274756], [1516745640000, 0.09075997, 0.09075997, 0.09039, 0.09039001, 6.36395055], [1516745700000, 0.09039001, 0.09076092, 0.09039, 0.0904, 5.10330733], [1516745760000, 0.0907609, 0.0907609, 0.0906, 0.09060001, 3.3220007], [1516745820000, 0.0907609, 0.09089996, 0.09060001, 0.0906609, 58.38789205], [1516745880000, 0.0906609, 0.0906609, 0.09060001, 0.0906609, 7.96034936], [1516745940000, 0.09060001, 0.0906609, 0.0904, 0.0904, 28.75737694], [1516746000000, 0.09060001, 0.0906609, 0.0906, 0.0906, 5.59769187], [1516746060000, 0.0906, 0.09074585, 0.0906, 0.0906001, 5.55242162], [1516746120000, 0.09073954, 0.09088792, 0.0906001, 0.0906001, 17.64595483], [1516746180000, 0.09073024, 0.09083289, 0.0907, 0.09075, 27.00778938], [1516746240000, 0.0907, 0.09084297, 0.0907, 0.0907, 4.12850859], [1516746300000, 0.0908, 0.0909, 0.0908, 0.09085, 43.37930894], [1516746360000, 0.09085, 0.09089987, 0.0908, 0.09088644, 25.9592561], [1516746420000, 0.09089098, 0.09089098, 0.09088644, 0.09088644, 22.17189119], [1516746480000, 0.09089098, 0.09089098, 0.0908, 0.090881, 29.77464107], [1516746540000, 0.09089098, 0.09089098, 0.0908, 0.0908, 2.69028283], [1516746600000, 0.0908, 0.0908, 0.0906, 0.0906, 102.56669092], [1516746660000, 0.09079998, 0.09089098, 0.0905, 0.09050001, 23.18390215], [1516746720000, 0.09089098, 0.09089098, 0.09089097, 0.09089097, 2.12277524], [1516746780000, 0.09089097, 0.09089098, 0.09089097, 0.09089098, 12.40721595], [1516746840000, 0.0907, 0.09089098, 0.09062812, 0.09089098, 7.30365702], [1516746900000, 0.09089097, 0.09089098, 0.09067735, 0.0907, 23.335458], [1516746960000, 0.0907, 0.09098438, 0.0907, 0.0909, 30.70304392], [1516747020000, 0.0909, 0.09095, 0.0909, 0.09095, 35.11085874], [1516747080000, 0.09093166, 0.09098438, 0.09070001, 0.09070001, 34.82719048], [1516747140000, 0.09093166, 0.091, 0.09061001, 0.09061001, 10.14178396], [1516747200000, 0.09070001, 0.09099988, 0.0907, 0.09098894, 3.65460223], [1516747260000, 0.0908, 0.09098894, 0.0907, 0.0907, 10.51637173], [1516747320000, 0.0908, 0.09099, 0.0907, 0.09075, 18.80337566], [1516747380000, 0.09099, 0.09099, 0.09098, 0.09098, 2.34895146], [1516747440000, 0.09098, 0.09099, 0.0905005, 0.09098, 20.69180883], [1516747500000, 0.09098, 0.09098, 0.09061001, 0.09097991, 6.26150506], [1516747560000, 0.09061002, 0.09097999, 0.09061001, 0.09097999, 34.24719344], [1516747620000, 0.09097999, 0.09097999, 0.09061002, 0.09065002, 27.64741894], [1516747680000, 0.09065002, 0.09097987, 0.0905, 0.0905, 20.50852402], [1516747740000, 0.09062, 0.09062, 0.0905, 0.0905, 4.93184785], [1516747800000, 0.0906, 0.09097977, 0.0905, 0.09097977, 5.67472463], [1516747860000, 0.0909797, 0.0909797, 0.0906, 0.09097967, 2.32811725], [1516747920000, 0.09097967, 0.09097967, 0.0905, 0.090975, 3.88502363], [1516747980000, 0.09097496, 0.09097496, 0.0907, 0.09097495, 5.22419221], [1516748040000, 0.09097495, 0.09097966, 0.0907, 0.09097497, 11.56854058], [1516748100000, 0.09097497, 0.090975, 0.09046, 0.09046, 21.60423147], [1516748160000, 0.0909749, 0.0909749, 0.09045, 0.09097484, 7.04477444], [1516748220000, 0.09097483, 0.09097483, 0.0905, 0.09050001, 9.50965554], [1516748280000, 0.0905, 0.09097463, 0.0905, 0.0905, 8.24828486], [1516748340000, 0.0907, 0.09097482, 0.0905, 0.0907, 17.03883679], [1516748400000, 0.0907, 0.09097482, 0.0905, 0.0906, 11.24153397], [1516748460000, 0.0906, 0.09097482, 0.0906, 0.09097482, 3.43277228], [1516748520000, 0.09097482, 0.09097483, 0.09070001, 0.09070001, 26.42723785], [1516748580000, 0.09097, 0.09097483, 0.09097, 0.09097, 5.11700289], [1516748640000, 0.0908, 0.0908, 0.09070001, 0.0908, 1.96352525], [1516748700000, 0.0908, 0.09097, 0.09069896, 0.0907005, 15.31069261], [1516748760000, 0.0907005, 0.09097, 0.09050001, 0.09050001, 4.27048188], [1516748820000, 0.09096995, 0.09096997, 0.09050001, 0.09050002, 7.92231513], [1516748880000, 0.09095988, 0.09096997, 0.09050002, 0.09096997, 8.7739344], [1516748940000, 0.09095978, 0.09096997, 0.0905001, 0.0909695, 18.70232423], [1516749000000, 0.09096949, 0.09096949, 0.09050002, 0.09050002, 5.44138091], [1516749060000, 0.09096891, 0.0909695, 0.0905, 0.0909685, 45.30131093], [1516749120000, 0.0905, 0.0909685, 0.0905, 0.09096, 4.5750873], [1516749180000, 0.0905, 0.09094994, 0.0905, 0.09050002, 10.04517836], [1516749240000, 0.09088992, 0.09089, 0.09088989, 0.09089, 15.49799249], [1516749300000, 0.09089, 0.09094996, 0.09088989, 0.09088989, 3.4797087], [1516749360000, 0.09094996, 0.09096849, 0.0908, 0.09089, 19.98859249], [1516749420000, 0.09089, 0.09096853, 0.09050002, 0.09096853, 40.36394132], [1516749480000, 0.09096852, 0.09096997, 0.09050003, 0.09096997, 10.89361693], [1516749540000, 0.09096997, 0.09096997, 0.0906, 0.09096997, 10.26376314], [1516749600000, 0.09096995, 0.09096997, 0.090601, 0.09096997, 1.44838766], [1516749660000, 0.09060553, 0.09096997, 0.09060101, 0.09095894, 21.96934395], [1516749720000, 0.09095894, 0.09096997, 0.09060557, 0.09060557, 28.08777734], [1516749780000, 0.09095894, 0.09096997, 0.09065057, 0.09096997, 6.71988237], [1516749840000, 0.09096988, 0.09096988, 0.09065664, 0.09065664, 5.90424362], [1516749900000, 0.09096988, 0.09096988, 0.0908, 0.0908, 10.98894896], [1516749960000, 0.0908, 0.09096988, 0.09076988, 0.09096988, 25.84480433], [1516750020000, 0.09096988, 0.09096997, 0.0908, 0.09096997, 21.18313115], [1516750080000, 0.090969, 0.09096997, 0.0908, 0.09096997, 4.60766719], [1516750140000, 0.09096995, 0.09096995, 0.09076988, 0.09076988, 53.86392985], [1516750200000, 0.0908, 0.0908, 0.09077, 0.0908, 10.20828141], [1516750260000, 0.0908, 0.09096995, 0.09060556, 0.09060557, 86.93407106], [1516750320000, 0.09060556, 0.09096997, 0.09045, 0.09096997, 162.61266337], [1516750380000, 0.09096996, 0.09096997, 0.09096996, 0.09096996, 1.23163113], [1516750440000, 0.09045681, 0.09096997, 0.09045681, 0.09096996, 0.07469153], [1516750500000, 0.09096995, 0.09096995, 0.0909698, 0.09096994, 0.7636884], [1516750560000, 0.09050799, 0.09096995, 0.09050799, 0.09095, 45.29226556], [1516750620000, 0.09095, 0.0909541, 0.09050799, 0.09050799, 9.16958535], [1516750680000, 0.09050799, 0.09092675, 0.09050799, 0.09088411, 5.90294103], [1516750740000, 0.09050799, 0.09087559, 0.09050799, 0.09087544, 43.9746129], [1516750800000, 0.09087559, 0.09096993, 0.09050799, 0.09050801, 14.79300193], [1516750860000, 0.09096981, 0.09096981, 0.09050799, 0.09051801, 7.00132472], [1516750920000, 0.09087767, 0.09089287, 0.09045, 0.09050799, 31.41581701], [1516750980000, 0.09050799, 0.09050799, 0.09038, 0.09046, 6.31560977], [1516751040000, 0.09046, 0.09050799, 0.09038, 0.09050799, 4.77697754], [1516751100000, 0.09050799, 0.09096994, 0.09038, 0.09038, 33.3826134], [1516751160000, 0.09096993, 0.09096993, 0.090345, 0.0905, 71.42535807], [1516751220000, 0.0905, 0.09096994, 0.0905, 0.090965, 2.09725881], [1516751280000, 0.09052079, 0.09096994, 0.09051001, 0.09096994, 2.04883332], [1516751340000, 0.09095994, 0.09096994, 0.09069416, 0.09071106, 2.41796571], [1516751400000, 0.09096994, 0.09096994, 0.0907111, 0.0907111, 4.28113193], [1516751460000, 0.09096993, 0.09096993, 0.0907111, 0.09096993, 1.04154944], [1516751520000, 0.09095993, 0.09096993, 0.09064251, 0.09096992, 3.43284005], [1516751580000, 0.09096992, 0.09096993, 0.09062075, 0.09062075, 3.08374818], [1516751640000, 0.09064251, 0.09096997, 0.09051001, 0.09051001, 80.67298579], [1516751700000, 0.09066312, 0.091036, 0.09066312, 0.091036, 296.5723742], [1516751760000, 0.09100001, 0.09105662, 0.091, 0.0910358, 122.09954311], [1516751820000, 0.0910358, 0.09103581, 0.090762, 0.091, 163.21514982], [1516751880000, 0.09078853, 0.09103579, 0.090668, 0.090762, 113.13981773], [1516751940000, 0.090762, 0.090762, 0.090668, 0.09076187, 42.33897955], [1516752000000, 0.09076187, 0.090762, 0.090668, 0.09076192, 33.96314077], [1516752060000, 0.09076192, 0.09111267, 0.09067301, 0.09098589, 26.90664652], [1516752120000, 0.09069302, 0.09099584, 0.09068301, 0.09076182, 11.68779779], [1516752180000, 0.09076182, 0.09076182, 0.09068301, 0.09076182, 9.38726999], [1516752240000, 0.09076182, 0.09076182, 0.09076182, 0.09076182, 14.67026573], [1516752300000, 0.090777, 0.09111261, 0.09076182, 0.09076182, 2.82779363], [1516752360000, 0.091, 0.09111269, 0.09076701, 0.09111259, 16.92967248], [1516752420000, 0.09076701, 0.0911126, 0.09076182, 0.0911126, 20.60342545], [1516752480000, 0.0911126, 0.09120663, 0.09076183, 0.0911127, 11.92579201], [1516752540000, 0.0912, 0.09123999, 0.09076183, 0.09076184, 13.92800358], [1516752600000, 0.09077183, 0.09123997, 0.09077183, 0.09123995, 5.74681334], [1516752660000, 0.09123995, 0.09123996, 0.09077184, 0.09123996, 13.92971355], [1516752720000, 0.091, 0.09123994, 0.091, 0.0911755, 9.9201655], [1516752780000, 0.09114781, 0.09114781, 0.091, 0.09106641, 38.88249436], [1516752840000, 0.09106641, 0.09107935, 0.091, 0.0910001, 18.98493503], [1516752900000, 0.091, 0.09112509, 0.091, 0.0910001, 5.43144455], [1516752960000, 0.0910001, 0.0910001, 0.0908, 0.0908, 19.05404248], [1516753020000, 0.0908, 0.09095135, 0.0908, 0.0908, 8.61548521], [1516753080000, 0.09095135, 0.09095135, 0.0908, 0.0908, 15.03093781], [1516753140000, 0.09095134, 0.09095134, 0.09077, 0.09077, 23.20688712], [1516753200000, 0.09077, 0.09095123, 0.09076711, 0.09077, 12.2511571], [1516753260000, 0.09077, 0.09095132, 0.09075001, 0.09095089, 48.23612924], [1516753320000, 0.09095085, 0.09095103, 0.09066801, 0.090683, 48.07840205], [1516753380000, 0.090668, 0.09095085, 0.090668, 0.09095062, 24.60076392], [1516753440000, 0.09066801, 0.09094589, 0.090668, 0.09093941, 10.47919098], [1516753500000, 0.09093941, 0.09095085, 0.090668, 0.090668, 39.73941442], [1516753560000, 0.090668, 0.09095085, 0.090668, 0.09066801, 11.00911109], [1516753620000, 0.090678, 0.09095052, 0.090678, 0.09069798, 3.75625359], [1516753680000, 0.09095, 0.09095052, 0.090688, 0.09069798, 8.06602766], [1516753740000, 0.09069798, 0.09094969, 0.09069798, 0.09069799, 4.6769312], [1516753800000, 0.09094967, 0.09094968, 0.09069798, 0.09069799, 7.34464105], [1516753860000, 0.09069799, 0.09069799, 0.090678, 0.09068799, 33.88888462], [1516753920000, 0.090678, 0.09068799, 0.090668, 0.090668, 17.29979318], [1516753980000, 0.09068799, 0.09088852, 0.090668, 0.090668, 27.26725942], [1516754040000, 0.090668, 0.09088852, 0.090668, 0.09088851, 35.90955639], [1516754100000, 0.09066802, 0.09066802, 0.090668, 0.09066802, 3.66985583], [1516754160000, 0.09066802, 0.09066802, 0.090668, 0.09066802, 1.12904105], [1516754220000, 0.09066802, 0.09094994, 0.09066801, 0.09066802, 12.73668449], [1516754280000, 0.090673, 0.09094994, 0.09066803, 0.09094994, 15.92102446], [1516754340000, 0.09076367, 0.09076367, 0.09066802, 0.09068, 10.11178138], [1516754400000, 0.09094993, 0.09094994, 0.09066802, 0.09066803, 28.62010559], [1516754460000, 0.09066802, 0.09066803, 0.09066802, 0.09066803, 6.06023951], [1516754520000, 0.09066802, 0.09066803, 0.09066802, 0.09066803, 15.05372678], [1516754580000, 0.09094994, 0.09094994, 0.09066803, 0.09066803, 6.98260604], [1516754640000, 0.09066803, 0.09066804, 0.09066803, 0.09066804, 15.35066599], [1516754700000, 0.09075879, 0.090951, 0.09066804, 0.09066804, 12.91803483], [1516754760000, 0.090951, 0.091, 0.09066804, 0.0907, 3.02033306], [1516754820000, 0.09095, 0.09095, 0.09066804, 0.0907, 51.93678294], [1516754880000, 0.09066804, 0.0907, 0.09066801, 0.09066801, 19.07261141], [1516754940000, 0.09068, 0.0907, 0.09066801, 0.0907, 4.45771605], [1516755000000, 0.09066802, 0.0907, 0.09066801, 0.09066801, 5.54008754], [1516755060000, 0.09068, 0.09095, 0.09066801, 0.09095, 15.05726747], [1516755120000, 0.09094, 0.091, 0.090691, 0.09095, 44.0007472], [1516755180000, 0.09095346, 0.09113331, 0.09069101, 0.09070001, 38.02470171], [1516755240000, 0.090809, 0.090832, 0.09070001, 0.09083199, 3.37644561], [1516755300000, 0.090809, 0.0911333, 0.090809, 0.09083199, 6.04228499], [1516755360000, 0.09083199, 0.09083199, 0.09070002, 0.09083196, 3.52108676], [1516755420000, 0.09083196, 0.09083196, 0.09070901, 0.09070901, 8.26680863], [1516755480000, 0.09070002, 0.09070901, 0.0907, 0.0907, 9.38715122], [1516755540000, 0.09070001, 0.09070001, 0.0907, 0.0907, 6.59142236], [1516755600000, 0.09070001, 0.09074995, 0.09066801, 0.09074995, 9.39512453], [1516755660000, 0.0907, 0.0907, 0.09066549, 0.09066549, 35.00038253], [1516755720000, 0.09066549, 0.0907, 0.09066549, 0.09066549, 41.433693], [1516755780000, 0.09066549, 0.0907, 0.09066549, 0.09066549, 19.30101263], [1516755840000, 0.0907, 0.09083195, 0.09066549, 0.09083195, 9.28927242], [1516755900000, 0.09083195, 0.09083196, 0.0907, 0.09083196, 6.88370111], [1516755960000, 0.09082741, 0.09083196, 0.09082741, 0.09083196, 2.08949533], [1516756020000, 0.090701, 0.09100362, 0.090701, 0.09099805, 32.01034711], [1516756080000, 0.09099802, 0.09099802, 0.09083196, 0.09083196, 19.62910841], [1516756140000, 0.09098976, 0.09098978, 0.09083196, 0.09083196, 6.66465842], [1516756200000, 0.09083196, 0.09099805, 0.09083196, 0.09083197, 62.50070004], [1516756260000, 0.09083197, 0.09095899, 0.09083196, 0.09095899, 5.82213682], [1516756320000, 0.09083196, 0.09100362, 0.09083196, 0.09083196, 31.73014216], [1516756380000, 0.09100362, 0.09100362, 0.09083196, 0.09083196, 6.96227509], [1516756440000, 0.09083196, 0.0909418, 0.09083196, 0.09083196, 2.08609681], [1516756500000, 0.09083196, 0.09094169, 0.09083196, 0.09094158, 6.65197997], [1516756560000, 0.09093975, 0.09093975, 0.090701, 0.090701, 14.83138514], [1516756620000, 0.090701, 0.09081419, 0.090701, 0.090701, 1.78076202], [1516756680000, 0.090701, 0.09089496, 0.090701, 0.090701, 13.42197426], [1516756740000, 0.09089496, 0.09090616, 0.09070101, 0.09070101, 10.72046053], [1516756800000, 0.09070101, 0.0909418, 0.09070101, 0.0909418, 2.51345757], [1516756860000, 0.09070102, 0.0909418, 0.09070101, 0.0909418, 8.8858369], [1516756920000, 0.0909418, 0.0909418, 0.09070101, 0.09070101, 8.77457969], [1516756980000, 0.09094179, 0.09094179, 0.09070101, 0.09094179, 5.13673854], [1516757040000, 0.090702, 0.09094179, 0.09070101, 0.09070101, 2.50600537], [1516757100000, 0.09091086, 0.09094178, 0.09070101, 0.09070101, 13.06167416], [1516757160000, 0.09086366, 0.09091086, 0.0908214, 0.09091086, 3.73717331], [1516757220000, 0.09091086, 0.09094178, 0.09070101, 0.09070101, 20.48145731], [1516757280000, 0.09070101, 0.09091086, 0.09070101, 0.09070102, 7.62953489], [1516757340000, 0.09070555, 0.0908, 0.09070555, 0.0908, 0.26701963], [1516757400000, 0.0908, 0.09091083, 0.0908, 0.0908, 3.77140068], [1516757460000, 0.0908, 0.09091085, 0.09071001, 0.09071001, 14.39423861], [1516757520000, 0.09071001, 0.09091073, 0.09071, 0.09071, 9.29640302], [1516757580000, 0.09071001, 0.09091073, 0.09071001, 0.09071002, 5.62587476], [1516757640000, 0.09071002, 0.09071002, 0.09071001, 0.09071001, 8.36345567], [1516757700000, 0.09071002, 0.09071002, 0.09071, 0.09071, 8.02984179], [1516757760000, 0.09071002, 0.09071002, 0.09071, 0.09071, 6.67422444], [1516757820000, 0.09071, 0.09071002, 0.09071, 0.09071001, 7.48541543], [1516757880000, 0.09071001, 0.09071002, 0.09071001, 0.09071001, 8.56068235], [1516757940000, 0.09071002, 0.09071002, 0.09071001, 0.09071002, 11.05097302], [1516758000000, 0.09085606, 0.09085606, 0.09066549, 0.09066549, 43.42720264], [1516758060000, 0.09066549, 0.09084971, 0.09066549, 0.09084971, 2.64114278], [1516758120000, 0.09084971, 0.0908584, 0.09066549, 0.09084971, 30.00207607], [1516758180000, 0.09084971, 0.09084971, 0.09066549, 0.09066549, 5.48318972], [1516758240000, 0.09080774, 0.09085412, 0.09066549, 0.09066549, 27.17568872], [1516758300000, 0.09066549, 0.09074503, 0.09066315, 0.09072682, 6.4129392], [1516758360000, 0.09072256, 0.09072256, 0.09066315, 0.09071233, 75.46493102], [1516758420000, 0.09066316, 0.09068893, 0.09066315, 0.09066315, 31.87608446], [1516758480000, 0.09066911, 0.09071233, 0.09066315, 0.09070182, 9.52514577], [1516758540000, 0.09070185, 0.09071233, 0.09066951, 0.09066951, 20.44248384], [1516758600000, 0.09066951, 0.09066951, 0.09066315, 0.09066315, 8.919498], [1516758660000, 0.09066951, 0.09066951, 0.09066313, 0.09066313, 3.96535569], [1516758720000, 0.09066314, 0.09066314, 0.09066313, 0.09066314, 7.12514869], [1516758780000, 0.09066314, 0.09082555, 0.09066313, 0.09066318, 7.02594179], [1516758840000, 0.09066318, 0.0908584, 0.09066313, 0.0908584, 15.59491751], [1516758900000, 0.0908584, 0.09091086, 0.09066313, 0.0909, 4.96614274], [1516758960000, 0.09091086, 0.09094179, 0.09066314, 0.09093674, 5.05984744], [1516759020000, 0.09093658, 0.09093658, 0.09066314, 0.09092921, 1.12449156], [1516759080000, 0.09092921, 0.09092921, 0.09066316, 0.09066316, 5.35651916], [1516759140000, 0.09066316, 0.09092911, 0.09066316, 0.09066318, 2.90593357], [1516759200000, 0.09066318, 0.09067317, 0.09066316, 0.09066316, 5.73146543], [1516759260000, 0.09067317, 0.09067317, 0.09067316, 0.09067317, 0.86903498], [1516759320000, 0.09066316, 0.09092911, 0.09066316, 0.09084896, 13.33995926], [1516759380000, 0.09066317, 0.09084896, 0.09066317, 0.09082822, 4.12858456], [1516759440000, 0.09067317, 0.09067317, 0.09066314, 0.09066314, 6.04745438], [1516759500000, 0.09066314, 0.09081267, 0.09066314, 0.09066314, 3.60739929], [1516759560000, 0.09066314, 0.0907, 0.09066314, 0.09066315, 1.84392372], [1516759620000, 0.0907, 0.0907, 0.090665, 0.0907, 1.92212702], [1516759680000, 0.0907, 0.0907, 0.0906655, 0.0907, 3.53623146], [1516759740000, 0.0906655, 0.0914, 0.090665, 0.090665, 316.78036619], [1516759800000, 0.090665, 0.09087515, 0.090665, 0.09066501, 4.32209485], [1516759860000, 0.09066501, 0.09081584, 0.09066501, 0.09066502, 10.0682198], [1516759920000, 0.09090596, 0.09093088, 0.09066501, 0.09066501, 1.50456116], [1516759980000, 0.09093087, 0.09112113, 0.09066502, 0.09066502, 8.24626308], [1516760040000, 0.09097352, 0.09097352, 0.09066503, 0.09066503, 4.16108194], [1516760100000, 0.09097352, 0.09097352, 0.09066703, 0.09097352, 0.62558974], [1516760160000, 0.09066703, 0.09097352, 0.09066703, 0.09066704, 0.30476825], [1516760220000, 0.09097352, 0.09100487, 0.09097, 0.09098637, 5.29972969], [1516760280000, 0.09098301, 0.09098645, 0.09066503, 0.09098645, 7.94027972], [1516760340000, 0.09066956, 0.09098645, 0.09066705, 0.0909863, 7.07389523], [1516760400000, 0.0909863, 0.09098645, 0.09066706, 0.09098645, 3.32541265], [1516760460000, 0.09098645, 0.09098645, 0.0909864, 0.09098645, 9.72207509], [1516760520000, 0.09098645, 0.09098645, 0.09066706, 0.09066707, 4.89847228], [1516760580000, 0.09066706, 0.09098644, 0.09066706, 0.09098644, 4.88043129], [1516760640000, 0.09066706, 0.09098642, 0.09066706, 0.09066706, 6.97011532], [1516760700000, 0.09066706, 0.09066706, 0.09066706, 0.09066706, 4.57898431], [1516760760000, 0.09098642, 0.09098645, 0.09066707, 0.09066707, 10.35667778], [1516760820000, 0.09098642, 0.09098642, 0.09066708, 0.09098642, 18.25266468], [1516760880000, 0.09098642, 0.09098645, 0.09098641, 0.09098642, 10.54152744], [1516760940000, 0.09098645, 0.09099999, 0.09084841, 0.09084841, 41.56782235], [1516761000000, 0.09084841, 0.09098645, 0.09084841, 0.09084841, 0.84192053], [1516761060000, 0.09084841, 0.09099999, 0.09066708, 0.09099999, 18.7670833], [1516761120000, 0.09099999, 0.09099999, 0.09098646, 0.09099999, 2.40450186], [1516761180000, 0.09098646, 0.09102452, 0.09098646, 0.09098646, 4.0035593], [1516761240000, 0.09098646, 0.09102452, 0.09098646, 0.0910245, 7.2973156], [1516761300000, 0.0910245, 0.0910245, 0.09098646, 0.09099, 17.62291342], [1516761360000, 0.09099, 0.090999, 0.09099, 0.09099, 5.49366626], [1516761420000, 0.09099, 0.09102452, 0.09098648, 0.09102452, 24.19256937], [1516761480000, 0.09102452, 0.09102452, 0.09099, 0.09102452, 5.36832502], [1516761540000, 0.09102452, 0.09102452, 0.09099001, 0.09102452, 6.50212832], [1516761600000, 0.09102451, 0.09102452, 0.0910245, 0.09102452, 11.79793404], [1516761660000, 0.09102452, 0.09135502, 0.09099001, 0.09112451, 13.21884187], [1516761720000, 0.09112451, 0.09129771, 0.09099001, 0.09099001, 8.47535096], [1516761780000, 0.0911245, 0.0911245, 0.09099001, 0.091124, 3.38835743], [1516761840000, 0.091124, 0.091124, 0.09099002, 0.09099002, 0.95702957], [1516761900000, 0.091057, 0.091057, 0.09100002, 0.091057, 8.05082623], [1516761960000, 0.09105, 0.091057, 0.09100003, 0.09105699, 2.78040645], [1516762020000, 0.09100003, 0.09100003, 0.09100003, 0.09100003, 0.07991131], [1516762080000, 0.09100004, 0.091055, 0.09100004, 0.09100005, 1.33629649], [1516762140000, 0.09105499, 0.09105699, 0.09100005, 0.09105699, 6.87453729], [1516762200000, 0.09100006, 0.091124, 0.09100005, 0.09105699, 12.00323125], [1516762260000, 0.09105699, 0.09139996, 0.09105699, 0.09105709, 15.72917212], [1516762320000, 0.09105699, 0.0910571, 0.09105699, 0.09105699, 7.18846756], [1516762380000, 0.09105699, 0.0910571, 0.09105699, 0.0910571, 4.68363772], [1516762440000, 0.0910571, 0.0910571, 0.09100003, 0.09100003, 28.75830802], [1516762500000, 0.0910571, 0.0910571, 0.09100003, 0.0910571, 21.5212104], [1516762560000, 0.09103, 0.09103001, 0.09100003, 0.09103, 10.26342819], [1516762620000, 0.09103, 0.091418, 0.09102001, 0.09136778, 13.38730801], [1516762680000, 0.09136778, 0.09136845, 0.09103006, 0.09103006, 12.23860925], [1516762740000, 0.09136744, 0.09136778, 0.09103001, 0.09130033, 22.12714821], [1516762800000, 0.09129589, 0.0912959, 0.09103001, 0.09103001, 6.98335543], [1516762860000, 0.09125999, 0.09125999, 0.09103, 0.09125998, 1.12149848], [1516762920000, 0.09125998, 0.09125998, 0.09103002, 0.09124173, 1.80393372], [1516762980000, 0.09103002, 0.09125999, 0.09103002, 0.09103002, 21.92126958], [1516763040000, 0.09125999, 0.0913632, 0.09103002, 0.0913632, 14.64299449], [1516763100000, 0.09126, 0.09145028, 0.09103002, 0.09139999, 3.18605162], [1516763160000, 0.09139499, 0.0914, 0.09103002, 0.0914, 6.51950605], [1516763220000, 0.09103003, 0.09139999, 0.09103003, 0.09105, 1.07650394], [1516763280000, 0.09105, 0.0914, 0.09105, 0.0911, 6.47070596], [1516763340000, 0.0911, 0.09139998, 0.0911, 0.0911911, 5.30326508], [1516763400000, 0.0911911, 0.0911911, 0.09110001, 0.09110001, 32.35194715], [1516763460000, 0.09110001, 0.0911911, 0.09110001, 0.09110001, 43.96612068], [1516763520000, 0.09110001, 0.0911911, 0.09110001, 0.09110001, 67.12751577], [1516763580000, 0.09110001, 0.09110002, 0.09105, 0.09105, 34.04173703], [1516763640000, 0.09105, 0.09110002, 0.09105, 0.09105, 1.49186605], [1516763700000, 0.09105, 0.0911, 0.09066706, 0.09066706, 13.19490573], [1516763760000, 0.0911, 0.091191, 0.09066706, 0.09066801, 6.41282044], [1516763820000, 0.09066803, 0.091191, 0.09066705, 0.091191, 3.27246873], [1516763880000, 0.09108, 0.09108, 0.09107, 0.09108, 5.68295433], [1516763940000, 0.09108, 0.091191, 0.09108, 0.091191, 8.46625354], [1516764000000, 0.09108, 0.09125999, 0.09108, 0.09108, 8.88953132], [1516764060000, 0.09108, 0.09108, 0.09070001, 0.09070001, 5.16060095], [1516764120000, 0.09107544, 0.09125999, 0.0907001, 0.091, 142.9544985], [1516764180000, 0.091, 0.0912246, 0.09070013, 0.091, 5.92130104], [1516764240000, 0.091, 0.09118039, 0.09070012, 0.09116514, 5.25452413], [1516764300000, 0.091, 0.091, 0.09070013, 0.091, 3.47508609], [1516764360000, 0.09070013, 0.091, 0.09070013, 0.091, 3.70882737], [1516764420000, 0.0908, 0.09125999, 0.0908, 0.0908, 49.56426118], [1516764480000, 0.091, 0.0913322, 0.0908, 0.09119115, 37.48058593], [1516764540000, 0.09099999, 0.091, 0.0908, 0.0908, 28.42766658], [1516764600000, 0.0908, 0.0909, 0.0908, 0.0909, 8.56467401], [1516764660000, 0.0909, 0.0909, 0.0908, 0.0909, 7.11400453], [1516764720000, 0.0909, 0.0912, 0.0908, 0.0909, 5.43908484], [1516764780000, 0.0909, 0.0912, 0.0909, 0.09119999, 2.36166673], [1516764840000, 0.09090001, 0.09119999, 0.0909, 0.0909, 17.81600611], [1516764900000, 0.091, 0.09119998, 0.09090001, 0.091, 14.90207956], [1516764960000, 0.091, 0.09119998, 0.091, 0.091, 0.75461857], [1516765020000, 0.091, 0.09119998, 0.091, 0.09100001, 7.5789806], [1516765080000, 0.09119998, 0.09131999, 0.09119998, 0.0913, 79.90469856], [1516765140000, 0.0913, 0.09131993, 0.09126382, 0.09126382, 31.3114051], [1516765200000, 0.09126382, 0.09130274, 0.09119998, 0.09128836, 7.69463362], [1516765260000, 0.09128836, 0.09130282, 0.09128836, 0.09128836, 1.08032671], [1516765320000, 0.09128836, 0.09130984, 0.09128836, 0.09130983, 14.02276256], [1516765380000, 0.09130983, 0.09130983, 0.09128836, 0.09128836, 7.07600559], [1516765440000, 0.09128839, 0.09146, 0.09128839, 0.09130983, 30.88936458], [1516765500000, 0.09130983, 0.09146, 0.09128836, 0.09128836, 10.09580521], [1516765560000, 0.09128836, 0.09146, 0.09128836, 0.09128837, 24.14488436], [1516765620000, 0.09128837, 0.09139951, 0.09128837, 0.09128837, 10.50536794], [1516765680000, 0.09128837, 0.09146, 0.09128837, 0.09128865, 21.36176756], [1516765740000, 0.09128837, 0.09140122, 0.09128837, 0.0912884, 9.95670304], [1516765800000, 0.09128837, 0.09146, 0.09128837, 0.09128865, 12.79562154], [1516765860000, 0.09140398, 0.09140398, 0.09128865, 0.09140035, 1.6486662], [1516765920000, 0.09128866, 0.09140034, 0.09128866, 0.09128866, 2.98206376], [1516765980000, 0.0914003, 0.0914339, 0.09128837, 0.09128837, 19.7570413], [1516766040000, 0.09128837, 0.09146, 0.09119998, 0.0912, 29.82313072], [1516766100000, 0.09137713, 0.09145983, 0.09119998, 0.09119998, 11.45595431], [1516766160000, 0.09144975, 0.09144975, 0.0912, 0.09120001, 32.95770519], [1516766220000, 0.09121, 0.09136893, 0.09119998, 0.09119998, 25.44859119], [1516766280000, 0.09119998, 0.09135899, 0.09119998, 0.09119998, 33.91287787], [1516766340000, 0.09119998, 0.091344, 0.09119998, 0.091295, 5.69663911], [1516766400000, 0.09119998, 0.091295, 0.09090001, 0.091295, 9.74663715], [1516766460000, 0.09129498, 0.09129498, 0.09129497, 0.09129497, 0.971246], [1516766520000, 0.0912949, 0.09129497, 0.0912949, 0.09129497, 1.12748922], [1516766580000, 0.09129497, 0.09129497, 0.0912, 0.0912, 0.0837521], [1516766640000, 0.0912, 0.09128999, 0.091, 0.091, 1.77258012], [1516766700000, 0.0911, 0.09129496, 0.09090001, 0.09129496, 7.26225937], [1516766760000, 0.0911, 0.09128999, 0.09090001, 0.09119999, 59.25169477], [1516766820000, 0.09119999, 0.09119999, 0.09090001, 0.09090003, 6.98100016], [1516766880000, 0.09119999, 0.09128033, 0.0911, 0.09119999, 53.86638512], [1516766940000, 0.09119999, 0.09129496, 0.09119999, 0.09119999, 36.97063564], [1516767000000, 0.09119999, 0.09129497, 0.09119999, 0.0912, 20.12912698], [1516767060000, 0.09119999, 0.09129497, 0.09119999, 0.0912, 31.20472386], [1516767120000, 0.09129497, 0.091375, 0.09119999, 0.09119999, 51.56383496], [1516767180000, 0.09119999, 0.091375, 0.09119999, 0.09119999, 26.87326371], [1516767240000, 0.09119999, 0.09119999, 0.09090001, 0.09090001, 2.63980722], [1516767300000, 0.09090003, 0.09118, 0.09090001, 0.09118, 1.44351205], [1516767360000, 0.09117088, 0.09118, 0.09117, 0.09118, 0.98219181], [1516767420000, 0.09118, 0.09118, 0.09091502, 0.09091505, 5.67898176], [1516767480000, 0.09091, 0.091179, 0.09091, 0.091169, 4.62895411], [1516767540000, 0.09116999, 0.09116999, 0.09091, 0.09116, 7.20647694], [1516767600000, 0.091169, 0.091169, 0.0909207, 0.09115999, 2.98368312], [1516767660000, 0.09115999, 0.09116, 0.09115999, 0.09116, 2.58447456], [1516767720000, 0.09116, 0.09118, 0.09091, 0.09116, 8.35875039], [1516767780000, 0.09096034, 0.09118, 0.09096034, 0.09118, 4.02129809], [1516767840000, 0.09096034, 0.09118, 0.09096034, 0.09118, 9.83813801], [1516767900000, 0.09117998, 0.09118, 0.09096034, 0.09118, 9.54718805], [1516767960000, 0.09118, 0.09118, 0.09096035, 0.09118, 4.98148965], [1516768020000, 0.09098, 0.09118, 0.09096035, 0.09117997, 2.3342467], [1516768080000, 0.09117997, 0.09118, 0.09096034, 0.09096034, 13.15261339], [1516768140000, 0.09096035, 0.09117999, 0.09096034, 0.09117999, 7.24913368], [1516768200000, 0.09117, 0.09118, 0.09115997, 0.09117, 6.04146658], [1516768260000, 0.09118, 0.09118, 0.09117, 0.09118, 4.67697361], [1516768320000, 0.09117, 0.09118, 0.09115997, 0.09116, 5.26356996], [1516768380000, 0.09117, 0.09118, 0.09115997, 0.09115997, 6.04433824], [1516768440000, 0.0911799, 0.0911799, 0.09115997, 0.09116, 23.8334898], [1516768500000, 0.09115997, 0.0911799, 0.09115997, 0.0911799, 7.45407505], [1516768560000, 0.09116, 0.09118, 0.09075, 0.09118, 173.81665113], [1516768620000, 0.0911799, 0.09118, 0.0911799, 0.0911799, 13.99978309], [1516768680000, 0.09118, 0.09118, 0.0911799, 0.09117996, 14.8828423], [1516768740000, 0.09117996, 0.09118, 0.0911799, 0.09118, 37.17542805], [1516768800000, 0.09118, 0.09125, 0.0911799, 0.09125, 29.43608143], [1516768860000, 0.09118445, 0.09141509, 0.0911799, 0.09138223, 5.08667115], [1516768920000, 0.09118006, 0.0913822, 0.09077001, 0.0913, 11.97031066], [1516768980000, 0.0913, 0.0913, 0.09077005, 0.0909363, 8.97503086], [1516769040000, 0.09126999, 0.09129999, 0.0909363, 0.09095704, 2.95057025], [1516769100000, 0.09126999, 0.09129999, 0.090957, 0.09126999, 5.01731938], [1516769160000, 0.09126999, 0.09126999, 0.090957, 0.09126999, 8.70865206], [1516769220000, 0.090957, 0.09126999, 0.090957, 0.09126999, 6.15978907], [1516769280000, 0.09126999, 0.09126999, 0.09126999, 0.09126999, 3.06178968], [1516769340000, 0.0909581, 0.09126999, 0.090958, 0.09126999, 1.00915681], [1516769400000, 0.09126999, 0.09126999, 0.090958, 0.090958, 0.90676802], [1516769460000, 0.09126999, 0.09126999, 0.0909581, 0.09126998, 7.56223689], [1516769520000, 0.09126999, 0.09126999, 0.090957, 0.09126998, 18.99670323], [1516769580000, 0.0909571, 0.09126999, 0.09070015, 0.0907002, 40.01168362], [1516769640000, 0.091265, 0.09126999, 0.09070014, 0.09072301, 8.43168316], [1516769700000, 0.09126998, 0.09126998, 0.09074104, 0.09126998, 3.15202473], [1516769760000, 0.09123398, 0.09125197, 0.0909892, 0.0909892, 3.79116801], [1516769820000, 0.0909892, 0.0912636, 0.0909, 0.0912636, 6.52989447], [1516769880000, 0.09090001, 0.09125197, 0.0909, 0.09090002, 11.23999212], [1516769940000, 0.09123397, 0.09126998, 0.09123397, 0.09126998, 24.99305889], [1516770000000, 0.09126998, 0.09126998, 0.0911512, 0.0912636, 6.54950939], [1516770060000, 0.0911512, 0.09126998, 0.0909, 0.09126998, 23.38483912], [1516770120000, 0.0912, 0.09126998, 0.09072302, 0.09072302, 34.69123235], [1516770180000, 0.09126, 0.0912699, 0.090895, 0.09124198, 6.33279049], [1516770240000, 0.0912526, 0.09126998, 0.0907754, 0.09126998, 14.61455025], [1516770300000, 0.0912, 0.0912, 0.0907754, 0.0912, 5.08086469], [1516770360000, 0.0912, 0.0912, 0.0907934, 0.09079361, 1.46883288], [1516770420000, 0.0912, 0.0912, 0.09119, 0.09119, 0.02041003], [1516770480000, 0.09085311, 0.0912, 0.09085311, 0.09119, 2.81321766], [1516770540000, 0.09119, 0.09119, 0.091018, 0.09119, 2.9243929], [1516770600000, 0.091046, 0.09119, 0.091038, 0.091038, 3.71010681], [1516770660000, 0.09119, 0.09119, 0.09109601, 0.09118999, 3.60687623], [1516770720000, 0.09109601, 0.0912, 0.09109601, 0.091126, 12.30640038], [1516770780000, 0.091136, 0.0912, 0.091127, 0.091136, 1.93777883], [1516770840000, 0.091136, 0.091136, 0.091127, 0.091136, 1.64373284], [1516770900000, 0.091136, 0.09125998, 0.091127, 0.09125998, 11.82463263], [1516770960000, 0.09129999, 0.09129999, 0.09125998, 0.09129999, 2.5680929], [1516771020000, 0.09119, 0.0913, 0.09118998, 0.09119, 4.45609499], [1516771140000, 0.0912, 0.0913, 0.09119, 0.0913, 38.60524304], [1516771200000, 0.091195, 0.091195, 0.09119, 0.091195, 6.52805818], [1516771260000, 0.09119, 0.0913, 0.09119, 0.091195, 6.51384619], [1516771320000, 0.091195, 0.0913, 0.091195, 0.0913, 4.42791867], [1516771380000, 0.09129999, 0.0913, 0.091195, 0.0913, 4.69004253], [1516771440000, 0.0913, 0.0913, 0.0913, 0.0913, 12.09286064], [1516771500000, 0.0913, 0.0913, 0.09120327, 0.09120327, 38.02216937], [1516771560000, 0.0913, 0.09141509, 0.09120327, 0.09141509, 26.92666961], [1516771620000, 0.09141509, 0.0914151, 0.09120327, 0.0914151, 15.47598909], [1516771680000, 0.0914151, 0.09143518, 0.09120328, 0.091325, 10.857396], [1516771740000, 0.091325, 0.0915, 0.09120327, 0.09120327, 73.5171096], [1516771800000, 0.0914, 0.0915, 0.09120327, 0.0915, 21.52462155], [1516771860000, 0.0914, 0.0915, 0.09120327, 0.09120327, 15.30673864], [1516771920000, 0.0914, 0.09152, 0.0914, 0.09150001, 145.44286484], [1516771980000, 0.09150001, 0.09154704, 0.0915, 0.0915, 21.09626806], [1516772040000, 0.0915, 0.09155, 0.09149543, 0.09154704, 48.88142995], [1516772100000, 0.09120328, 0.09120328, 0.09120328, 0.09120328, 0.04], [1516772160000, 0.09120328, 0.0912033, 0.09120328, 0.0912033, 5.41626044], [1516772220000, 0.0912033, 0.09152, 0.0912033, 0.09120331, 10.97096315], [1516772280000, 0.09142997, 0.09145, 0.09142997, 0.09142998, 3.350679], [1516772340000, 0.09120331, 0.09120331, 0.09120331, 0.09120331, 1.68479651], [1516772400000, 0.09142998, 0.09144999, 0.09142997, 0.09142998, 0.44393557], [1516772460000, 0.09142998, 0.09142998, 0.09120331, 0.09125, 0.90918729], [1516772520000, 0.09144997, 0.09144999, 0.09125, 0.09142997, 2.14882776], [1516772580000, 0.09142997, 0.09144999, 0.09125, 0.09125, 16.06091789], [1516772640000, 0.09144999, 0.09144999, 0.09144999, 0.09144999, 0.90019801], [1516772700000, 0.09144998, 0.09144999, 0.09125, 0.09144998, 5.16062398], [1516772760000, 0.09144998, 0.09145, 0.09125, 0.09145, 20.09687798], [1516772820000, 0.0912501, 0.0912501, 0.0912033, 0.09125, 56.97907437], [1516772880000, 0.09125, 0.09145, 0.09121001, 0.09145, 7.69455043], [1516772940000, 0.09121001, 0.09145, 0.09121001, 0.09144, 15.57089536], [1516773000000, 0.09143999, 0.09143999, 0.09122801, 0.09122801, 1.28089465], [1516773060000, 0.09143999, 0.09155806, 0.09143999, 0.09155074, 210.36519475], [1516773120000, 0.09155074, 0.0915777, 0.09155074, 0.0915777, 1.13073868], [1516773180000, 0.09157644, 0.0916, 0.09157644, 0.09157644, 4.06791952], [1516773240000, 0.09155806, 0.0916, 0.09155806, 0.09155806, 1.74322083], [1516773300000, 0.09155806, 0.0916, 0.09155074, 0.09155074, 2.40202301], [1516773360000, 0.09155074, 0.091668, 0.09155074, 0.09160586, 48.19746444], [1516773420000, 0.09160586, 0.091668, 0.09160585, 0.09160585, 75.09907805], [1516773480000, 0.09160585, 0.091668, 0.09160585, 0.09160585, 32.5530701], [1516773540000, 0.09160585, 0.09166, 0.0916, 0.09162638, 17.65114486], [1516773600000, 0.09162638, 0.0916401, 0.0916, 0.0916, 18.84228008], [1516773660000, 0.0916, 0.0916, 0.09155074, 0.09155074, 33.46029109], [1516773720000, 0.09155075, 0.0916, 0.09155074, 0.0916, 5.30814776], [1516773780000, 0.09155074, 0.0916, 0.09155074, 0.091551, 11.00786193], [1516773840000, 0.091551, 0.0916, 0.09155074, 0.09155074, 19.71412056], [1516773900000, 0.09155074, 0.0916, 0.09155074, 0.09155074, 11.01667383], [1516773960000, 0.09155074, 0.09159, 0.09120801, 0.09159, 5.38876261], [1516774020000, 0.09158999, 0.09159, 0.09122877, 0.09124678, 76.65698544], [1516774080000, 0.09120801, 0.09124678, 0.0912033, 0.09124678, 10.23249864], [1516774140000, 0.09124678, 0.09124678, 0.0912033, 0.0912033, 9.15462146], [1516774200000, 0.09120331, 0.09124678, 0.09120331, 0.09124675, 2.16608867], [1516774260000, 0.09124675, 0.09124678, 0.0912033, 0.0912033, 5.59056146], [1516774320000, 0.09124678, 0.09124678, 0.0912033, 0.0912033, 11.37968063], [1516774380000, 0.09124675, 0.09124678, 0.0912033, 0.09124678, 1.73678923], [1516774440000, 0.0912033, 0.091585, 0.0912033, 0.091585, 2.01824924], [1516774500000, 0.09124678, 0.091585, 0.09124678, 0.09124678, 2.80045519], [1516774560000, 0.09158499, 0.09158499, 0.09124678, 0.09158498, 8.93368335], [1516774620000, 0.09158498, 0.09158499, 0.0912034, 0.09158498, 13.93741161], [1516774680000, 0.09120342, 0.09158497, 0.09120328, 0.09158497, 14.48361646], [1516774740000, 0.09157497, 0.09158495, 0.09120328, 0.0915849, 1.8688398], [1516774800000, 0.09158494, 0.09158495, 0.09121, 0.09121, 0.80746111], [1516774860000, 0.09155998, 0.09156, 0.0913908, 0.0913908, 11.51063191], [1516774920000, 0.0913908, 0.09154998, 0.09122002, 0.09122002, 58.14292507], [1516774980000, 0.09154996, 0.09154996, 0.09122004, 0.09154996, 5.08281771], [1516775040000, 0.09123, 0.09154996, 0.09123, 0.09152996, 11.04984858], [1516775100000, 0.09152996, 0.09154996, 0.0913, 0.09130004, 12.32517214], [1516775160000, 0.09152995, 0.09152995, 0.09130003, 0.09152995, 40.99713614], [1516775220000, 0.09152995, 0.09152995, 0.09130005, 0.09130007, 3.4082182], [1516775280000, 0.09138, 0.09145, 0.09131, 0.09132, 2.42320765], [1516775340000, 0.09145, 0.09152995, 0.09131, 0.09131, 2.18640191], [1516775400000, 0.09131, 0.09152995, 0.09131, 0.09140001, 21.12981692], [1516775460000, 0.09140001, 0.09154996, 0.09140001, 0.09152995, 20.00300368], [1516775520000, 0.09152995, 0.09156, 0.09131001, 0.09156, 44.58626322], [1516775580000, 0.09153, 0.09156, 0.09131, 0.09131, 12.33125681], [1516775640000, 0.09131001, 0.09156, 0.09122001, 0.09122001, 45.80834669], [1516775700000, 0.09122001, 0.0913834, 0.09111, 0.0913834, 8.29328318], [1516775760000, 0.09111, 0.09149499, 0.091109, 0.09111002, 45.0012746], [1516775820000, 0.091111, 0.09147698, 0.09111002, 0.09111002, 40.83354454], [1516775880000, 0.09111002, 0.0914228, 0.091109, 0.091109, 8.93884017], [1516775940000, 0.091109, 0.0913419, 0.091109, 0.091109, 22.32983086], [1516776000000, 0.091109, 0.09130577, 0.091109, 0.091109, 13.65791668], [1516776060000, 0.091109, 0.09127999, 0.091, 0.09109997, 11.16333472], [1516776120000, 0.091, 0.09109999, 0.09081011, 0.09098, 10.57262334], [1516776180000, 0.09098, 0.09098, 0.09075001, 0.09098, 15.66721188], [1516776240000, 0.09075002, 0.091, 0.09075002, 0.09099999, 23.92577797], [1516776300000, 0.09075002, 0.09099999, 0.09074, 0.09074999, 17.05495038], [1516776360000, 0.09074, 0.09074999, 0.09070016, 0.09070016, 7.34746634], [1516776420000, 0.09074, 0.0909897, 0.09070014, 0.09074, 11.68151029], [1516776480000, 0.09098968, 0.09098968, 0.09083083, 0.09083083, 4.42514963], [1516776540000, 0.09083083, 0.09098967, 0.09075001, 0.09098967, 7.11429902], [1516776600000, 0.09098967, 0.091, 0.09075001, 0.09099997, 8.89562862], [1516776660000, 0.09099997, 0.091, 0.09076, 0.09076, 48.54280977], [1516776720000, 0.091, 0.091, 0.0908, 0.09080001, 6.01843801], [1516776780000, 0.09080001, 0.091, 0.0908, 0.091, 4.18234073], [1516776840000, 0.09080022, 0.09099999, 0.09080022, 0.09080022, 6.51154039], [1516776900000, 0.09080022, 0.091, 0.09080022, 0.09080022, 1.87768447], [1516776960000, 0.091, 0.09108644, 0.09080022, 0.09097745, 12.07230382], [1516777020000, 0.09097745, 0.09097745, 0.09080022, 0.09080022, 1.40091296], [1516777080000, 0.09097745, 0.09097745, 0.09081022, 0.09097745, 0.36809039], [1516777140000, 0.09097745, 0.09097745, 0.09083021, 0.09097741, 2.58027388], [1516777200000, 0.09086019, 0.091, 0.09083021, 0.09083021, 49.68062948], [1516777260000, 0.09083021, 0.091, 0.09080022, 0.091, 27.4112673], [1516777320000, 0.091, 0.091, 0.09075001, 0.09075001, 68.57118479], [1516777380000, 0.09075001, 0.09099996, 0.09074, 0.0908, 23.97458715], [1516777440000, 0.0908014, 0.091, 0.09070013, 0.09071814, 20.35711179], [1516777500000, 0.09094363, 0.091, 0.09071814, 0.09094387, 22.34865408], [1516777560000, 0.09072, 0.091, 0.09070013, 0.09080001, 8.090623], [1516777620000, 0.09070013, 0.09098983, 0.09070001, 0.09070001, 41.4660292], [1516777680000, 0.09070001, 0.09090781, 0.09066313, 0.09066313, 33.06857082], [1516777740000, 0.09066504, 0.0908898, 0.09066313, 0.09066313, 75.96796576], [1516777800000, 0.09066312, 0.09066313, 0.09064999, 0.09066313, 8.61051036], [1516777860000, 0.0906631, 0.09066311, 0.09053472, 0.09053472, 222.69216461], [1516777920000, 0.09059999, 0.09069999, 0.09052002, 0.09052002, 61.55502523], [1516777980000, 0.09060001, 0.09073515, 0.09052002, 0.09052336, 33.81250293], [1516778040000, 0.09069, 0.09073, 0.09052002, 0.09052336, 23.89017982], [1516778100000, 0.09052336, 0.0906, 0.09052336, 0.0906, 24.3338955], [1516778160000, 0.09059996, 0.0906, 0.0905234, 0.0906, 13.26836363], [1516778220000, 0.0906, 0.0908203, 0.0906, 0.0906, 10.45248562], [1516778280000, 0.0908203, 0.09097684, 0.09060003, 0.0908736, 12.95085327], [1516778340000, 0.09095886, 0.09097686, 0.0908736, 0.09095886, 20.03812905], [1516778400000, 0.09095886, 0.091, 0.09095886, 0.09097686, 7.74012657], [1516778460000, 0.091, 0.091, 0.0908736, 0.0908736, 22.08867111], [1516778520000, 0.0909999, 0.091, 0.0908736, 0.09099999, 18.61359593], [1516778580000, 0.091, 0.091, 0.0908736, 0.0908736, 13.51189355], [1516778640000, 0.091, 0.091, 0.091, 0.091, 12.85640009], [1516778700000, 0.091, 0.091, 0.091, 0.091, 7.97287351], [1516778760000, 0.091, 0.091, 0.0908, 0.0908, 18.01614059], [1516778820000, 0.091, 0.091, 0.09052341, 0.091, 37.11645673], [1516778880000, 0.091, 0.091, 0.09055945, 0.09057746, 6.7362531], [1516778940000, 0.09059547, 0.09099999, 0.09059547, 0.09099999, 3.7741078], [1516779000000, 0.09061347, 0.09099999, 0.09061347, 0.09099985, 3.63572977], [1516779060000, 0.0907, 0.09099985, 0.0907, 0.0907, 68.14976699], [1516779120000, 0.0907, 0.09099972, 0.0907, 0.0907, 2.32064293], [1516779180000, 0.0907, 0.09077997, 0.0907, 0.090718, 9.10444966], [1516779240000, 0.090718, 0.09077997, 0.0907094, 0.09077996, 31.8110076], [1516779300000, 0.0907799, 0.0908, 0.0907799, 0.0908, 26.46194512], [1516779360000, 0.0908, 0.09099983, 0.09077996, 0.09099983, 3.17767257], [1516779420000, 0.09082, 0.09099983, 0.09082, 0.09082, 13.56784272], [1516779480000, 0.09096983, 0.091, 0.09082, 0.091, 5.13937545], [1516779540000, 0.091, 0.09110444, 0.09082001, 0.09110444, 17.55454088], [1516779600000, 0.09110444, 0.09114999, 0.09110444, 0.09111443, 4.24207765], [1516779660000, 0.09114999, 0.09114999, 0.09111443, 0.09111443, 3.60970283], [1516779720000, 0.09114999, 0.09114999, 0.09082001, 0.09114999, 20.67832864], [1516779780000, 0.09099999, 0.09114999, 0.09085604, 0.09085604, 3.07528372], [1516779840000, 0.09114999, 0.09114999, 0.09085605, 0.09088403, 4.91089768], [1516779900000, 0.0909054, 0.09114999, 0.09085605, 0.0909054, 21.86687058], [1516779960000, 0.09114998, 0.09114999, 0.09085605, 0.09085605, 11.17370671], [1516780020000, 0.09085605, 0.09114998, 0.09085605, 0.09114998, 12.86017159], [1516780080000, 0.09114998, 0.09114998, 0.09086604, 0.09086604, 3.85241774], [1516780140000, 0.09086607, 0.09114998, 0.09086607, 0.09086609, 8.56364368], [1516780200000, 0.09086609, 0.09114898, 0.09086608, 0.09086608, 11.24386204], [1516780260000, 0.09114897, 0.09114998, 0.09086612, 0.09114998, 3.367514], [1516780320000, 0.09114998, 0.09114998, 0.09114997, 0.09114997, 3.24192023], [1516780380000, 0.09114998, 0.09114998, 0.09096411, 0.091, 2.79251754], [1516780440000, 0.09114996, 0.09114998, 0.09096411, 0.09114997, 8.53139468], [1516780500000, 0.09114998, 0.09115, 0.09096411, 0.09114998, 14.0145016], [1516780560000, 0.09114998, 0.09114999, 0.09096411, 0.09096411, 10.50636471], [1516780620000, 0.09096411, 0.0912654, 0.0908662, 0.0912654, 3.64019527], [1516780680000, 0.09096411, 0.0912474, 0.09086613, 0.09086613, 11.06698249], [1516780740000, 0.09086613, 0.0912294, 0.09086613, 0.0908663, 2.94495702], [1516780800000, 0.09122937, 0.0912474, 0.09086613, 0.0908663, 15.6646704], [1516780860000, 0.0908663, 0.0912474, 0.0908663, 0.09092035, 1.84697169], [1516780920000, 0.09124739, 0.0913, 0.09092035, 0.09109102, 6.3302385], [1516780980000, 0.0912, 0.09139999, 0.09109101, 0.09139999, 23.5987428], [1516781040000, 0.09131, 0.09138198, 0.0913, 0.09131, 19.35169278], [1516781100000, 0.09131, 0.09139999, 0.0913, 0.09139998, 21.88931405], [1516781160000, 0.09139998, 0.09139998, 0.0913, 0.09133, 6.43128177], [1516781220000, 0.09133, 0.09139998, 0.09133, 0.09139998, 9.95356751], [1516781280000, 0.09139301, 0.09139999, 0.0908663, 0.09139301, 56.70262984], [1516781340000, 0.09086631, 0.09139294, 0.09086631, 0.09137494, 2.3080997], [1516781400000, 0.09135694, 0.09137494, 0.09135694, 0.09135893, 0.64806279], [1516781460000, 0.09135893, 0.09139301, 0.09089842, 0.09090001, 6.53774656], [1516781520000, 0.0913, 0.0913, 0.09089999, 0.09125, 1.80793335], [1516781580000, 0.09124999, 0.09138797, 0.09086612, 0.09138797, 36.79183919], [1516781640000, 0.09138797, 0.09138797, 0.09088641, 0.09088641, 6.41057908], [1516781700000, 0.09088642, 0.09088642, 0.09088642, 0.09088642, 0.25654656], [1516781760000, 0.09088642, 0.09138796, 0.09088642, 0.09138794, 7.0990856], [1516781820000, 0.09138792, 0.09139301, 0.09088642, 0.09139301, 13.67708127], [1516781880000, 0.09137501, 0.09139301, 0.09137501, 0.09139301, 4.91667444], [1516781940000, 0.09139301, 0.09139999, 0.09139301, 0.09139301, 37.3794011], [1516782000000, 0.09139999, 0.09139999, 0.09137501, 0.09137501, 12.46495041], [1516782060000, 0.09139301, 0.09139999, 0.09137501, 0.09139999, 39.35904598], [1516782120000, 0.09139999, 0.09139999, 0.09137501, 0.09139999, 57.77473471], [1516782180000, 0.09139998, 0.09139999, 0.09137501, 0.09139998, 13.01722963], [1516782240000, 0.09139998, 0.09139999, 0.09137501, 0.09137501, 17.51026078], [1516782300000, 0.09137501, 0.09139999, 0.09106461, 0.09106461, 45.8455991], [1516782360000, 0.09139999, 0.0914, 0.09139999, 0.0914, 5.6811161], [1516782420000, 0.09139999, 0.0914, 0.09139999, 0.0914, 9.96621225], [1516782480000, 0.0914, 0.0914, 0.09139999, 0.0914, 18.62567629], [1516782540000, 0.0914, 0.0914, 0.09139999, 0.09139999, 13.58486512], [1516782600000, 0.0914, 0.09144212, 0.09139999, 0.09144212, 19.24039957], [1516782660000, 0.091447, 0.091447, 0.09139999, 0.09144212, 13.97991188], [1516782720000, 0.091447, 0.09152, 0.09144212, 0.0915, 26.92649399], [1516782780000, 0.0915, 0.0915445, 0.0915, 0.0915445, 7.28458002], [1516782840000, 0.09150001, 0.0915445, 0.0915, 0.0915, 20.00754796], [1516782900000, 0.0915, 0.0915445, 0.0915, 0.091544, 9.76005316], [1516782960000, 0.0915445, 0.0915445, 0.091544, 0.0915445, 17.73168902], [1516783020000, 0.0915445, 0.09161998, 0.091544, 0.0915445, 16.08246426], [1516783080000, 0.0915445, 0.091668, 0.0915445, 0.09161998, 6.83810353], [1516783140000, 0.09161998, 0.09161998, 0.09161998, 0.09161998, 5.51290512], [1516783200000, 0.09162, 0.091668, 0.09161998, 0.09165999, 33.32330346], [1516783260000, 0.09161998, 0.091668, 0.09161998, 0.09161998, 12.90127157], [1516783320000, 0.091668, 0.091668, 0.09161998, 0.09161998, 10.8666788], [1516783380000, 0.091668, 0.091668, 0.09161998, 0.09161998, 18.02509616], [1516783440000, 0.091668, 0.091668, 0.09161998, 0.09161999, 10.28689044], [1516783500000, 0.09161998, 0.091668, 0.0915445, 0.0915445, 53.04686237], [1516783560000, 0.09161998, 0.09161998, 0.09154445, 0.09154445, 19.96781072], [1516783620000, 0.0915445, 0.091668, 0.091544, 0.091668, 34.3611109], [1516783680000, 0.09166499, 0.091668, 0.0915445, 0.0915445, 61.94169044], [1516783740000, 0.0915445, 0.09167203, 0.0915445, 0.091545, 25.75805078], [1516783800000, 0.091545, 0.09169999, 0.091545, 0.091545, 7.42635169], [1516783860000, 0.09161998, 0.09169999, 0.09154501, 0.09154501, 1.49788167], [1516783920000, 0.09154501, 0.09169999, 0.09145028, 0.09145029, 89.5454886], [1516783980000, 0.09145029, 0.09154451, 0.0914, 0.0914, 29.77164803], [1516784040000, 0.0914, 0.09154451, 0.0914, 0.09154451, 24.12951964], [1516784100000, 0.09154451, 0.09175796, 0.09154451, 0.0917, 14.90593568], [1516784160000, 0.09154451, 0.0917, 0.0914, 0.0914, 27.98723575], [1516784220000, 0.09169898, 0.09169898, 0.0914, 0.09169884, 3.3250038], [1516784280000, 0.09169883, 0.09169883, 0.0914, 0.0914, 6.78468956], [1516784340000, 0.0915, 0.09169867, 0.0915, 0.0915, 2.69632867], [1516784400000, 0.09169867, 0.09169867, 0.0915, 0.09159, 15.16580298], [1516784460000, 0.09159, 0.09159, 0.09151, 0.09158988, 10.76067636], [1516784520000, 0.09158988, 0.09169859, 0.09151, 0.09158988, 14.21075587], [1516784580000, 0.09158988, 0.09169856, 0.09151, 0.09151007, 7.96997879], [1516784640000, 0.09151007, 0.09154604, 0.09151007, 0.09154604, 5.70744462], [1516784700000, 0.0916985, 0.0916985, 0.09151, 0.09169849, 24.70410236], [1516784760000, 0.09169449, 0.09169849, 0.09151, 0.09169448, 9.99624753], [1516784820000, 0.09151001, 0.09169448, 0.09151001, 0.09169446, 4.69700222], [1516784880000, 0.09169446, 0.0916985, 0.09169446, 0.0916985, 18.88662034], [1516784940000, 0.09169856, 0.09169856, 0.09169446, 0.09169856, 18.59569384], [1516785000000, 0.09169856, 0.0917, 0.09169446, 0.09169446, 18.47283217], [1516785060000, 0.0917, 0.09177198, 0.09169446, 0.09177198, 36.73868453], [1516785120000, 0.09177198, 0.09177198, 0.09175796, 0.09175796, 7.53779914], [1516785180000, 0.091758, 0.091758, 0.09151, 0.09169446, 19.28543043], [1516785240000, 0.09169446, 0.09169447, 0.09151, 0.09169446, 3.62538638], [1516785300000, 0.09169446, 0.09169447, 0.09151, 0.09151, 9.14874186], [1516785360000, 0.0916, 0.0916, 0.09151, 0.09152, 8.64022678], [1516785420000, 0.09152, 0.0916, 0.09152, 0.09152102, 16.41310584], [1516785480000, 0.09152102, 0.0916, 0.09152102, 0.0916, 16.1803862], [1516785540000, 0.09155, 0.0916, 0.09152102, 0.091522, 8.53440386], [1516785600000, 0.0916, 0.09169447, 0.091522, 0.091522, 52.42693896], [1516785660000, 0.091523, 0.09169447, 0.091522, 0.091522, 61.59041026], [1516785720000, 0.091523, 0.09169445, 0.091512, 0.091512, 34.76184619], [1516785780000, 0.091512, 0.09152102, 0.09116464, 0.0913, 21.80819851], [1516785840000, 0.0913, 0.0915, 0.09114664, 0.0913, 9.74909341], [1516785900000, 0.091409, 0.0915, 0.0913, 0.0913, 24.5794697], [1516785960000, 0.0913, 0.09148986, 0.09114664, 0.0914898, 7.25604707], [1516786020000, 0.09114666, 0.0915, 0.09114666, 0.0911504, 14.8523344], [1516786080000, 0.0911504, 0.0911504, 0.09114666, 0.0911504, 14.08249456], [1516786140000, 0.0915, 0.0915, 0.09114667, 0.0915, 3.50644991], [1516786200000, 0.09114667, 0.0915, 0.09114667, 0.0911475, 3.88678275], [1516786260000, 0.09149799, 0.09149799, 0.09114667, 0.0911475, 11.99590378], [1516786320000, 0.09114667, 0.09149799, 0.09114667, 0.0914936, 30.45251338], [1516786380000, 0.0914936, 0.0914979, 0.09114667, 0.09114667, 10.69289629], [1516786440000, 0.09114667, 0.0914979, 0.09114667, 0.09114667, 1.21073995], [1516786500000, 0.0914979, 0.09149799, 0.09145, 0.09145, 4.00368693], [1516786560000, 0.09145, 0.09149799, 0.09115203, 0.09115204, 6.84002213], [1516786620000, 0.09149799, 0.0915, 0.09115204, 0.09149992, 7.32518461], [1516786680000, 0.09149999, 0.09149999, 0.09115206, 0.09149982, 4.19073622], [1516786740000, 0.09149, 0.09149, 0.091157, 0.09149, 7.43614845], [1516786800000, 0.09149, 0.0915, 0.091236, 0.0915, 7.35422147], [1516786860000, 0.0915, 0.091512, 0.09149, 0.091512, 13.10471346], [1516786920000, 0.091512, 0.09159982, 0.0915, 0.0915, 62.99108325], [1516786980000, 0.09169447, 0.091706, 0.0916, 0.09169447, 3.77355771], [1516787040000, 0.09169447, 0.09172357, 0.0915, 0.09172357, 6.82471782], [1516787100000, 0.09160003, 0.091758, 0.09160003, 0.091758, 15.00597752], [1516787160000, 0.091758, 0.09177, 0.09172357, 0.09172357, 14.53142972], [1516787220000, 0.09177, 0.09178229, 0.09172357, 0.09177474, 17.65805898], [1516787280000, 0.09172358, 0.091758, 0.09160005, 0.09160005, 52.45802064], [1516787340000, 0.09160005, 0.09172348, 0.09149, 0.09149, 21.88647561], [1516787400000, 0.0915, 0.0915, 0.09149, 0.0915, 8.33628503], [1516787460000, 0.0915, 0.0915, 0.09149, 0.0915, 1.42480953], [1516787520000, 0.091495, 0.0917836, 0.09149, 0.09149, 46.46054423], [1516787580000, 0.09149, 0.09155744, 0.09149, 0.09149004, 10.40867139], [1516787640000, 0.09161327, 0.09171242, 0.09115701, 0.09171237, 30.20322722], [1516787700000, 0.09170124, 0.09179758, 0.09117998, 0.09117998, 30.0549716], [1516787760000, 0.09155743, 0.09155743, 0.09117998, 0.09117998, 4.41276764], [1516787820000, 0.09117998, 0.09155743, 0.09117998, 0.09155742, 0.81874013], [1516787880000, 0.09154799, 0.09154799, 0.0915, 0.09154341, 17.17931732], [1516787940000, 0.09154338, 0.09154338, 0.09115701, 0.09115701, 48.31887818], [1516788000000, 0.09149999, 0.09149999, 0.091115, 0.09145997, 469.85746662], [1516788060000, 0.0910009, 0.09145993, 0.0910009, 0.09105001, 63.344463], [1516788120000, 0.09105001, 0.09114106, 0.091, 0.09105, 6.30077314], [1516788180000, 0.09105001, 0.09132159, 0.0910012, 0.09123396, 8.28248902], [1516788240000, 0.09103001, 0.09120959, 0.09099545, 0.09120501, 25.37750178], [1516788300000, 0.09090291, 0.09120501, 0.09088641, 0.09099544, 12.18687067], [1516788360000, 0.09099544, 0.091205, 0.09085796, 0.09088641, 16.27450937], [1516788420000, 0.09085796, 0.09088641, 0.09075, 0.09076, 65.49410731], [1516788480000, 0.09088638, 0.09088638, 0.0907095, 0.09088636, 22.54047086], [1516788540000, 0.09088637, 0.09088637, 0.0907044, 0.09070955, 13.60559106], [1516788600000, 0.09086835, 0.09099542, 0.0907044, 0.0907095, 39.73389375], [1516788660000, 0.09088876, 0.0911356, 0.09071, 0.09112294, 35.36441629], [1516788720000, 0.09112294, 0.09123397, 0.0907533, 0.09123397, 62.4610941], [1516788780000, 0.09123397, 0.09134414, 0.0907098, 0.09123397, 71.0877676], [1516788840000, 0.09086496, 0.09122941, 0.09078906, 0.09083892, 4.64195155], [1516788900000, 0.09083892, 0.09122941, 0.0908284, 0.09122941, 16.92789239], [1516788960000, 0.09122941, 0.09122941, 0.0908389, 0.09122941, 9.1168847], [1516789020000, 0.09083891, 0.09085693, 0.09083891, 0.09085693, 0.28413465], [1516789080000, 0.09117074, 0.09122941, 0.09085693, 0.09116, 4.78793704], [1516789140000, 0.09116, 0.09116, 0.09087493, 0.0909, 43.64961155], [1516789200000, 0.09116, 0.09116, 0.0909, 0.091, 11.03500739], [1516789260000, 0.091018, 0.09115999, 0.091, 0.09100002, 22.63005871], [1516789320000, 0.09100002, 0.09115998, 0.09100002, 0.09115997, 8.696201], [1516789380000, 0.09115997, 0.09115997, 0.091, 0.09100002, 13.82562205], [1516789440000, 0.09100002, 0.09122941, 0.091, 0.0912, 36.11551691], [1516789500000, 0.09121141, 0.09121141, 0.0912, 0.09121, 69.23791548], [1516789560000, 0.09121001, 0.09121141, 0.0912, 0.0912003, 96.42105662], [1516789620000, 0.0912003, 0.09121141, 0.0912, 0.0912, 17.93937333], [1516789680000, 0.0912, 0.091211, 0.0912, 0.0912, 47.91451994], [1516789740000, 0.0912, 0.091211, 0.0912, 0.0912, 75.63368576], [1516789800000, 0.0912001, 0.0912001, 0.0912, 0.0912, 28.34703493], [1516789860000, 0.0912, 0.09122941, 0.0912, 0.0912, 38.74378946], [1516789920000, 0.0912, 0.09122941, 0.0912, 0.09120001, 30.6324767], [1516789980000, 0.09122941, 0.09122941, 0.09120001, 0.09120001, 24.5406358], [1516790040000, 0.09120001, 0.09145024, 0.09120001, 0.09120001, 10.50293274], [1516790100000, 0.09132, 0.0913636, 0.09120001, 0.09120001, 10.09071149], [1516790160000, 0.09120002, 0.09136359, 0.09120002, 0.09120002, 6.55505653], [1516790220000, 0.09120002, 0.09143225, 0.09120002, 0.0913536, 2.74119171], [1516790280000, 0.09120003, 0.09137823, 0.09120003, 0.09120004, 10.01618617], [1516790340000, 0.09137823, 0.09137823, 0.09120003, 0.09120003, 9.60309103], [1516790400000, 0.09120004, 0.0913636, 0.09120003, 0.0913476, 8.00479138], [1516790460000, 0.0913476, 0.0913636, 0.09120002, 0.09120002, 10.61364353], [1516790520000, 0.0913, 0.0913, 0.09120002, 0.09120002, 2.0328822], [1516790580000, 0.09120002, 0.09141424, 0.09120002, 0.09120002, 2.8303199], [1516790640000, 0.09120002, 0.09137819, 0.09120002, 0.09120003, 1.79744746], [1516790700000, 0.09120003, 0.09120003, 0.09120002, 0.09120003, 27.59079317], [1516790760000, 0.09120003, 0.09120003, 0.09120002, 0.09120002, 66.38080901], [1516790820000, 0.09120002, 0.091378, 0.0911, 0.091195, 377.58823509], [1516790880000, 0.09135299, 0.09135299, 0.09089293, 0.0911, 8.95934698], [1516790940000, 0.09129897, 0.09129897, 0.0911, 0.09128356, 2.05847461], [1516791000000, 0.0911, 0.09128355, 0.0911, 0.0911, 17.80230692], [1516791060000, 0.0911, 0.09128336, 0.090906, 0.09091, 11.27891345], [1516791120000, 0.09091, 0.0911, 0.09091, 0.0911, 46.50951595], [1516791180000, 0.0911, 0.09114999, 0.09091, 0.09114993, 1.07685772], [1516791240000, 0.0911, 0.09115, 0.09092, 0.09092, 15.31714788], [1516791300000, 0.09114993, 0.09115, 0.09092, 0.09114991, 18.34395174], [1516791360000, 0.09092001, 0.09114991, 0.09092001, 0.09092003, 3.72589023], [1516791420000, 0.09092002, 0.0911499, 0.09092002, 0.09092003, 9.43497608], [1516791480000, 0.09092003, 0.09114993, 0.09092003, 0.0909204, 4.49339636], [1516791540000, 0.09114993, 0.09115, 0.09114993, 0.09114993, 17.32350489], [1516791600000, 0.09115, 0.09115, 0.09114993, 0.09114999, 52.77410375], [1516791660000, 0.09114999, 0.09114999, 0.0909205, 0.09114993, 4.75557673], [1516791720000, 0.09114993, 0.09114993, 0.090948, 0.090966, 3.40544734], [1516791780000, 0.09114993, 0.09115, 0.090966, 0.09114999, 66.59872702], [1516791840000, 0.09115, 0.09115, 0.09114999, 0.09115, 4.76531036], [1516791900000, 0.09127499, 0.091275, 0.09115, 0.091275, 1.60994013], [1516791960000, 0.091275, 0.091275, 0.09115002, 0.09115002, 0.15242427], [1516792020000, 0.09115002, 0.091275, 0.09115002, 0.09119002, 7.67307687], [1516792080000, 0.091275, 0.091275, 0.09119003, 0.09119003, 6.20924466], [1516792140000, 0.091275, 0.091275, 0.09119003, 0.091275, 10.74803854], [1516792200000, 0.09119004, 0.091275, 0.09119003, 0.09119003, 33.19601162], [1516792260000, 0.09119003, 0.091275, 0.09119003, 0.09119004, 26.59611917], [1516792320000, 0.09119004, 0.091275, 0.09119003, 0.09119003, 26.88206254], [1516792380000, 0.09119003, 0.091275, 0.09119003, 0.09119003, 17.99867386], [1516792440000, 0.09119003, 0.09119004, 0.09119003, 0.09119004, 26.09601813], [1516792500000, 0.09119003, 0.091275, 0.09119003, 0.09119004, 17.47785202], [1516792560000, 0.09119004, 0.09128287, 0.09119003, 0.09119003, 28.57884675], [1516792620000, 0.09125, 0.0912833, 0.09125, 0.091275, 11.6480333], [1516792680000, 0.09131698, 0.09131698, 0.091275, 0.091275, 25.35282166], [1516792740000, 0.091275, 0.09135798, 0.091275, 0.091275, 60.44937895], [1516792800000, 0.091275, 0.09135799, 0.091275, 0.09135798, 75.44186027], [1516792860000, 0.091275, 0.09135799, 0.09119, 0.09135799, 28.32921381], [1516792920000, 0.09119, 0.09135798, 0.09118999, 0.09118999, 3.71729811], [1516792980000, 0.09118999, 0.09135799, 0.09115002, 0.091275, 6.6367659], [1516793040000, 0.09135798, 0.09143225, 0.09114999, 0.09135798, 14.46349769], [1516793100000, 0.09135798, 0.09143225, 0.09114999, 0.09143225, 14.1017976], [1516793160000, 0.09141425, 0.09141425, 0.09116799, 0.09116799, 18.18006333], [1516793220000, 0.09118999, 0.0912, 0.09118999, 0.091196, 7.26817055], [1516793280000, 0.09118999, 0.09141425, 0.09118999, 0.09141421, 9.7237601], [1516793340000, 0.091409, 0.09141423, 0.09118, 0.09139618, 27.07009538], [1516793400000, 0.09123349, 0.09141423, 0.09123349, 0.09139161, 12.20455943], [1516793460000, 0.09139161, 0.0914, 0.09118, 0.09123349, 29.3138351], [1516793520000, 0.09118001, 0.09143225, 0.09118001, 0.0914, 23.61475449], [1516793580000, 0.09143225, 0.09143225, 0.09118, 0.09142198, 21.31521534], [1516793640000, 0.09118, 0.09120003, 0.09092003, 0.09092003, 57.08998239], [1516793700000, 0.09092003, 0.09143225, 0.09092003, 0.0914236, 79.73332576], [1516793760000, 0.091422, 0.09144999, 0.09112366, 0.09144999, 40.77347912], [1516793820000, 0.09140418, 0.09144999, 0.09116922, 0.09116922, 39.31011146], [1516793880000, 0.09140418, 0.09144999, 0.09099219, 0.091445, 19.86777077], [1516793940000, 0.09119, 0.091445, 0.09118999, 0.09124, 42.48977803], [1516794000000, 0.09144499, 0.09144499, 0.09106095, 0.09118999, 15.76668165], [1516794060000, 0.0910617, 0.09145, 0.0910617, 0.09145, 3.28625638], [1516794120000, 0.09124, 0.09145, 0.09124, 0.0914, 10.4878945], [1516794180000, 0.0914, 0.0914, 0.09098907, 0.09106095, 32.62498818], [1516794240000, 0.09106095, 0.0914, 0.09099917, 0.09107898, 52.74839434], [1516794300000, 0.0914, 0.0914, 0.09107898, 0.09139999, 18.00748418], [1516794360000, 0.09139999, 0.0914, 0.09113304, 0.0914, 17.32686009], [1516794420000, 0.09145, 0.091494, 0.0914, 0.091494, 35.65618547], [1516794480000, 0.0914, 0.09149998, 0.0914, 0.091495, 6.07233781], [1516794540000, 0.091494, 0.09149499, 0.09123704, 0.09123704, 53.32132882], [1516794600000, 0.09123704, 0.09149517, 0.09123704, 0.091494, 13.66176886], [1516794660000, 0.0914, 0.09149399, 0.0914, 0.0914, 2.08094485], [1516794720000, 0.09140001, 0.09149141, 0.0914, 0.09145023, 4.06526456], [1516794780000, 0.09145023, 0.0914914, 0.0913, 0.0914505, 19.47547887], [1516794840000, 0.09149135, 0.091494, 0.09145022, 0.09145022, 7.95739999], [1516794900000, 0.09145022, 0.091494, 0.09145022, 0.09145023, 21.26811424], [1516794960000, 0.09145022, 0.091494, 0.0913, 0.0914929, 11.64822663], [1516795020000, 0.0914929, 0.0914929, 0.0913181, 0.0913181, 4.70637543], [1516795080000, 0.09140941, 0.091494, 0.09140941, 0.091494, 21.62908262], [1516795140000, 0.09149289, 0.091498, 0.09149289, 0.0914929, 32.96198093], [1516795200000, 0.0914929, 0.09149998, 0.091061, 0.09106108, 36.74096319], [1516795260000, 0.09149998, 0.09149998, 0.091061, 0.09146999, 5.83264884], [1516795320000, 0.09146999, 0.09149286, 0.09107, 0.09147485, 23.97332836], [1516795380000, 0.09149286, 0.09149286, 0.09107917, 0.09107917, 28.18643738], [1516795440000, 0.09135, 0.09145, 0.09107917, 0.091449, 15.91059899], [1516795500000, 0.091449, 0.091449, 0.09107945, 0.0914336, 14.32436798], [1516795560000, 0.0914336, 0.091434, 0.09107945, 0.0914336, 8.26968228], [1516795620000, 0.0914436, 0.091449, 0.0910795, 0.0910795, 6.92870312], [1516795680000, 0.09144897, 0.091449, 0.09113083, 0.091449, 17.96927557], [1516795740000, 0.091449, 0.09145682, 0.091449, 0.091449, 11.69607814], [1516795800000, 0.0914, 0.09149289, 0.09113083, 0.09149289, 69.90192583], [1516795860000, 0.09149287, 0.0914929, 0.0914, 0.09149287, 13.57063], [1516795920000, 0.09149287, 0.09149287, 0.09113083, 0.09149215, 8.51700081], [1516795980000, 0.0914, 0.09155, 0.09113083, 0.09113083, 257.09446408], [1516796040000, 0.09153186, 0.09163196, 0.09107, 0.09153449, 165.37004988], [1516796100000, 0.09151649, 0.09163192, 0.09113084, 0.0912, 24.01279152], [1516796160000, 0.09145045, 0.09153455, 0.09120001, 0.09125001, 12.76026608], [1516796220000, 0.09131, 0.09161393, 0.09120001, 0.09130815, 13.69028324], [1516796280000, 0.09125001, 0.09130815, 0.091223, 0.09125001, 40.53129436], [1516796340000, 0.09130815, 0.09130815, 0.09125001, 0.09130815, 35.17191734], [1516796400000, 0.09125001, 0.09130815, 0.09125001, 0.09125001, 6.69428211], [1516796460000, 0.0913, 0.0913, 0.09125001, 0.0913, 41.33323708], [1516796520000, 0.0913, 0.0913, 0.0912191, 0.09125001, 52.88931874], [1516796580000, 0.0912191, 0.09123199, 0.09092, 0.09106096, 40.68490287], [1516796640000, 0.09106096, 0.09121397, 0.0908, 0.090965, 174.47671864], [1516796700000, 0.090965, 0.09117795, 0.09080001, 0.09109841, 18.98369139], [1516796760000, 0.09109841, 0.09109841, 0.09080001, 0.09103542, 15.30991532], [1516796820000, 0.09103542, 0.09109841, 0.09080002, 0.09107562, 9.42612405], [1516796880000, 0.09109841, 0.09109842, 0.09084002, 0.09085802, 3.64845511], [1516796940000, 0.09109841, 0.09109842, 0.09085802, 0.091, 54.6486745], [1516797000000, 0.09103541, 0.09103541, 0.09087603, 0.09087604, 21.25187377], [1516797060000, 0.091, 0.091, 0.09087605, 0.09089406, 9.77962582], [1516797120000, 0.09099998, 0.09099999, 0.09087603, 0.09087605, 59.72491624], [1516797180000, 0.09087605, 0.09089404, 0.09087604, 0.09089404, 25.05943625], [1516797240000, 0.09089404, 0.090895, 0.09076999, 0.090895, 88.41262683], [1516797300000, 0.09087603, 0.091095, 0.09087603, 0.09099999, 43.80650261], [1516797360000, 0.09099999, 0.09121397, 0.090895, 0.090895, 15.83407406], [1516797420000, 0.0909, 0.09123198, 0.090895, 0.090895, 34.37357132], [1516797480000, 0.090895, 0.091, 0.09075, 0.090895, 75.66733667], [1516797540000, 0.09089505, 0.09124999, 0.090895, 0.09089505, 48.1485822], [1516797600000, 0.09089505, 0.09123197, 0.090895, 0.0912, 14.64733557], [1516797660000, 0.09089501, 0.0912, 0.090895, 0.090895, 21.70395366], [1516797720000, 0.090895, 0.0911, 0.090895, 0.09089505, 18.7960676], [1516797780000, 0.09089505, 0.0911, 0.090895, 0.0909, 19.08733826], [1516797840000, 0.0909, 0.0911, 0.0909, 0.0911, 6.94946266], [1516797900000, 0.0911, 0.0912, 0.090895, 0.09109999, 96.37821515], [1516797960000, 0.090895, 0.09108198, 0.0907, 0.090704, 92.51104987], [1516798020000, 0.09072501, 0.09090658, 0.0907, 0.09070001, 59.85511713], [1516798080000, 0.09070001, 0.0908463, 0.09053, 0.0905301, 30.75673022], [1516798140000, 0.09079684, 0.09083999, 0.09053, 0.09069198, 34.01557966], [1516798200000, 0.09069198, 0.090841, 0.09053013, 0.09080299, 7.06887813], [1516798260000, 0.09080299, 0.09082299, 0.0905301, 0.09078178, 13.7856844], [1516798320000, 0.09078626, 0.09082299, 0.09053, 0.09079666, 18.56287955], [1516798380000, 0.09054811, 0.09085, 0.09053, 0.09082299, 100.28426463], [1516798440000, 0.09082299, 0.09085, 0.090548, 0.09078456, 52.48335251], [1516798500000, 0.09080729, 0.09085, 0.09055003, 0.09081729, 43.37901359], [1516798560000, 0.09081729, 0.09084999, 0.0905962, 0.09081728, 8.1726436], [1516798620000, 0.09081728, 0.09081729, 0.09081728, 0.09081729, 52.49979705], [1516798680000, 0.09081728, 0.09124997, 0.09081728, 0.091085, 35.24029159], [1516798740000, 0.09123197, 0.09123197, 0.090846, 0.09085, 5.77158444], [1516798800000, 0.0911736, 0.09117796, 0.09115081, 0.09116359, 9.03929864], [1516798860000, 0.09116359, 0.09117796, 0.09094096, 0.09095, 7.248212], [1516798920000, 0.091177, 0.091177, 0.09094103, 0.09096804, 21.21350694], [1516798980000, 0.09098605, 0.09126359, 0.09096804, 0.09126358, 12.1664239], [1516799040000, 0.090995, 0.09126358, 0.090995, 0.090995, 12.97057372], [1516799100000, 0.090995, 0.091295, 0.09096804, 0.090995, 35.39072485], [1516799160000, 0.091295, 0.091295, 0.09096804, 0.09129399, 6.27015616], [1516799220000, 0.09129398, 0.09129399, 0.09096804, 0.09122, 7.0088472], [1516799280000, 0.09122, 0.09122, 0.09096806, 0.09121998, 4.64075067], [1516799340000, 0.09117, 0.09121999, 0.09096804, 0.09096806, 29.73023294], [1516799400000, 0.09096806, 0.09121999, 0.09096805, 0.09096806, 8.54156938], [1516799460000, 0.09096806, 0.09121999, 0.09096804, 0.09118397, 39.81366534], [1516799520000, 0.09096804, 0.0911736, 0.09086825, 0.09096804, 94.65634603], [1516799580000, 0.09096804, 0.09096804, 0.09065, 0.09096349, 35.69825414], [1516799640000, 0.09096349, 0.09121991, 0.09063, 0.09117699, 85.74279948], [1516799700000, 0.09096349, 0.09117699, 0.09063001, 0.09092559, 12.06149737], [1516799760000, 0.09092559, 0.09093764, 0.09057796, 0.09066061, 5.10659874], [1516799820000, 0.09091964, 0.09094358, 0.09063001, 0.09077632, 15.4955235], [1516799880000, 0.09077632, 0.09094358, 0.09077632, 0.09077632, 64.67062674], [1516799940000, 0.09077632, 0.09087478, 0.09063001, 0.09063001, 47.08364083], [1516800000000, 0.09060097, 0.09074999, 0.09060097, 0.09063001, 35.83828622], [1516800060000, 0.09060097, 0.09072257, 0.09060097, 0.09068003, 11.45822914], [1516800120000, 0.09072257, 0.0909, 0.09068003, 0.09077698, 16.01408024], [1516800180000, 0.09089545, 0.09117495, 0.09077698, 0.09117495, 97.18264217], [1516800240000, 0.09115694, 0.091175, 0.090777, 0.09115693, 30.19956067], [1516800300000, 0.09107996, 0.09121991, 0.09107996, 0.09107996, 64.41049693], [1516800360000, 0.09107999, 0.09115694, 0.09077701, 0.09077701, 30.99712189], [1516800420000, 0.09077701, 0.09113411, 0.09077698, 0.09078, 22.02359641], [1516800480000, 0.09113411, 0.09113411, 0.09078, 0.0911341, 25.60687077], [1516800540000, 0.09113411, 0.09113411, 0.0909, 0.091, 16.36831569], [1516800600000, 0.09113408, 0.09115689, 0.09113408, 0.09115359, 45.34620887], [1516800660000, 0.09115356, 0.09115358, 0.09080001, 0.09113409, 33.59493479], [1516800720000, 0.09113409, 0.09113411, 0.09113409, 0.09113409, 22.89120727], [1516800780000, 0.09113409, 0.0911341, 0.09107996, 0.09113, 17.21764951], [1516800840000, 0.09113, 0.09113409, 0.09107996, 0.09113409, 27.04553273], [1516800900000, 0.09113409, 0.09115358, 0.09107996, 0.09113411, 22.93459079], [1516800960000, 0.09115358, 0.09115358, 0.09015358, 0.09115358, 256.18160545], [1516801020000, 0.09115358, 0.09115358, 0.090821, 0.09115356, 134.20160662], [1516801080000, 0.09115356, 0.09115357, 0.09082102, 0.09092102, 6.74609757], [1516801140000, 0.09115357, 0.0911569, 0.090821, 0.09082102, 40.86129172], [1516801200000, 0.09082102, 0.091149, 0.09075, 0.09114899, 46.33062679], [1516801260000, 0.09114899, 0.09126513, 0.09075001, 0.0907944, 20.10513636], [1516801320000, 0.09125, 0.09126499, 0.09075001, 0.09075001, 19.03951275], [1516801380000, 0.09080865, 0.09123988, 0.09075001, 0.09123986, 12.76946712], [1516801440000, 0.09123985, 0.091256, 0.09075002, 0.09080874, 28.61082087], [1516801500000, 0.09080874, 0.09123984, 0.09080865, 0.09123984, 10.73611101], [1516801560000, 0.09123984, 0.09123984, 0.09080865, 0.09123, 28.36254082], [1516801620000, 0.09123, 0.09123, 0.09080866, 0.09080866, 24.25914654], [1516801680000, 0.09083902, 0.09083902, 0.09080866, 0.09080866, 15.81825743], [1516801740000, 0.09083902, 0.09083902, 0.09080866, 0.09080866, 11.96222425], [1516801800000, 0.09083902, 0.09123, 0.09080866, 0.09123, 9.43578648], [1516801860000, 0.0912136, 0.09123, 0.09082187, 0.09082187, 19.56758614], [1516801920000, 0.09083902, 0.09083902, 0.09080866, 0.09082187, 19.93176311], [1516801980000, 0.09083902, 0.09106497, 0.09080865, 0.09080865, 33.47081889], [1516802040000, 0.09080866, 0.09120903, 0.09080866, 0.09080867, 14.18549567], [1516802100000, 0.09080867, 0.09121617, 0.09080866, 0.09120901, 23.30129711], [1516802160000, 0.09120901, 0.09123981, 0.09088, 0.09088, 14.84136136], [1516802220000, 0.0912398, 0.09123981, 0.0908493, 0.09091, 28.55778161], [1516802280000, 0.09091, 0.09122019, 0.0909, 0.09121596, 69.30862436], [1516802340000, 0.09091, 0.09121999, 0.09088001, 0.09088001, 36.13176635], [1516802400000, 0.09119978, 0.09133498, 0.09088001, 0.09133498, 110.25054502], [1516802460000, 0.09133498, 0.092, 0.09122018, 0.09199999, 1471.54827307], [1516802520000, 0.09199999, 0.09243346, 0.09126514, 0.09228, 1903.44474152], [1516802580000, 0.09234729, 0.092575, 0.09142883, 0.092575, 812.67074175], [1516802640000, 0.09255, 0.0926517, 0.09162682, 0.09248995, 696.63061679], [1516802700000, 0.0921913, 0.0926568, 0.09219126, 0.09229612, 404.86711814], [1516802760000, 0.09229612, 0.09269999, 0.09229611, 0.09269999, 653.44777687], [1516802820000, 0.09269998, 0.0928, 0.09229613, 0.0927975, 1134.66404343], [1516802880000, 0.0927975, 0.0929, 0.0921, 0.09247576, 705.17122983], [1516802940000, 0.09247576, 0.0929, 0.09247576, 0.09284018, 463.07772154], [1516803000000, 0.0928402, 0.09290992, 0.09256833, 0.09284934, 1043.5516055], [1516803060000, 0.09284935, 0.09292131, 0.0926246, 0.09262461, 647.69806796], [1516803120000, 0.09290989, 0.09292131, 0.09262464, 0.09289994, 402.84854576], [1516803180000, 0.09289993, 0.09292131, 0.09184947, 0.0925, 690.30130429], [1516803240000, 0.09270001, 0.09292131, 0.09222582, 0.09289983, 480.52945785], [1516803300000, 0.09289983, 0.0933, 0.0927, 0.0932899, 1164.67055663], [1516803360000, 0.0933, 0.0934694, 0.09270007, 0.09298, 493.7470565], [1516803420000, 0.09297999, 0.0933, 0.09271233, 0.09298003, 278.42693714], [1516803480000, 0.09271236, 0.09309998, 0.0925, 0.0926345, 191.0132115], [1516803540000, 0.09256, 0.09309992, 0.0922495, 0.09242838, 222.08363972], [1516803600000, 0.09242838, 0.09293673, 0.09209047, 0.09242836, 115.1394552], [1516803660000, 0.09291873, 0.09293672, 0.09244635, 0.0929006, 24.97768209], [1516803720000, 0.09290054, 0.09293671, 0.09242836, 0.09242839, 114.27458391], [1516803780000, 0.09248078, 0.09287, 0.09242839, 0.09259924, 31.66952537], [1516803840000, 0.0926, 0.092673, 0.09242837, 0.0925808, 59.14697742], [1516803900000, 0.0925808, 0.09285999, 0.09242837, 0.09259925, 71.91850927], [1516803960000, 0.09259924, 0.09259998, 0.09245, 0.09259023, 59.5685766], [1516804020000, 0.09259998, 0.09285999, 0.09248, 0.0926, 18.78686416], [1516804080000, 0.09284199, 0.09288882, 0.0926, 0.09282697, 52.9653795], [1516804140000, 0.09282696, 0.09282698, 0.09260002, 0.09260003, 92.38918347], [1516804200000, 0.09260003, 0.09282696, 0.0926, 0.09282696, 45.01470002], [1516804260000, 0.09280897, 0.09282698, 0.0926, 0.09280897, 31.08418878], [1516804320000, 0.09280897, 0.0929, 0.09261002, 0.0929, 34.21279594], [1516804380000, 0.09289997, 0.09309897, 0.09287785, 0.09309897, 103.6331196], [1516804440000, 0.0930636, 0.09309897, 0.0926, 0.09283678, 168.72372314], [1516804500000, 0.09260001, 0.09283678, 0.09242835, 0.09249, 56.48548622], [1516804560000, 0.09249, 0.09303917, 0.09242837, 0.0927232, 76.62343918], [1516804620000, 0.0927232, 0.09289999, 0.092508, 0.092508, 68.24544062], [1516804680000, 0.092508, 0.0929, 0.0925, 0.092508, 48.27819107], [1516804740000, 0.09289989, 0.0928999, 0.092508, 0.0928999, 59.69966687], [1516804800000, 0.0928999, 0.0928999, 0.09251802, 0.09289989, 27.68830053], [1516804860000, 0.09251803, 0.09251803, 0.0925, 0.09251802, 61.45954453], [1516804920000, 0.09251802, 0.0927, 0.09251802, 0.0927, 112.70379382], [1516804980000, 0.0927, 0.09289989, 0.0927, 0.09270001, 54.77690881], [1516805040000, 0.0928936, 0.0928999, 0.0927, 0.0927, 75.83796622], [1516805100000, 0.092702, 0.0928999, 0.0927, 0.09288536, 141.94400343], [1516805160000, 0.09288536, 0.09288536, 0.09251802, 0.09251803, 132.12526388], [1516805220000, 0.09253, 0.09270005, 0.0925, 0.09260005, 101.12196249], [1516805280000, 0.09260005, 0.0927, 0.09211304, 0.09234803, 67.29707514], [1516805340000, 0.09234803, 0.0927, 0.09233303, 0.09260001, 17.53482052], [1516805400000, 0.09260001, 0.09260005, 0.09259, 0.09259999, 43.26051272], [1516805460000, 0.09260005, 0.09266382, 0.09211304, 0.09260005, 23.38980074], [1516805520000, 0.09260005, 0.0926818, 0.09214906, 0.0926818, 35.31078249], [1516805580000, 0.09260005, 0.09260005, 0.09214, 0.09257689, 10.2200447], [1516805640000, 0.0925765, 0.0925765, 0.09214002, 0.09244371, 37.71157641], [1516805700000, 0.09244371, 0.0925765, 0.09216729, 0.0925765, 16.02022667], [1516805760000, 0.0925765, 0.0927, 0.09244371, 0.0927, 34.60770014], [1516805820000, 0.0926836, 0.0927, 0.09245, 0.0926936, 28.24324009], [1516805880000, 0.0926836, 0.09288536, 0.09245011, 0.09288536, 23.73296155], [1516805940000, 0.0927, 0.0927, 0.09245011, 0.09269999, 13.71974946], [1516806000000, 0.0926836, 0.09269999, 0.092176, 0.0926836, 15.07610877], [1516806060000, 0.09257689, 0.0926836, 0.092176, 0.09268358, 20.90530185], [1516806120000, 0.09257689, 0.09269999, 0.09220746, 0.09268358, 13.44049434], [1516806180000, 0.09268358, 0.09269999, 0.09222548, 0.09222548, 20.8165993], [1516806240000, 0.09268359, 0.0926936, 0.09222549, 0.09257689, 23.70675694], [1516806300000, 0.092695, 0.0927, 0.09232502, 0.09269999, 33.83797941], [1516806360000, 0.09269999, 0.0927, 0.09232502, 0.09232502, 33.58414341], [1516806420000, 0.0926836, 0.0926836, 0.09257689, 0.0925769, 8.1674899], [1516806480000, 0.09266506, 0.09266506, 0.09249499, 0.09249501, 20.13752142], [1516806540000, 0.09249501, 0.0925769, 0.09232502, 0.09232502, 20.49732949], [1516806600000, 0.09232502, 0.09257689, 0.09222548, 0.09222548, 35.96261995], [1516806660000, 0.09222548, 0.092325, 0.09190279, 0.09219998, 64.18396348], [1516806720000, 0.09219998, 0.09219998, 0.09169, 0.09219996, 21.5629558], [1516806780000, 0.09198007, 0.09219993, 0.09196507, 0.092, 9.98007958], [1516806840000, 0.092, 0.09219995, 0.092, 0.092, 27.50084199], [1516806900000, 0.092, 0.09219995, 0.09196507, 0.09219992, 20.63251009], [1516806960000, 0.09206822, 0.09219998, 0.09196507, 0.09206822, 8.73598313], [1516807020000, 0.09206822, 0.092325, 0.09196507, 0.092325, 13.42315796], [1516807080000, 0.092325, 0.092325, 0.0922, 0.09220001, 7.74110082], [1516807140000, 0.09228888, 0.0923, 0.09196507, 0.09196507, 48.44746603], [1516807200000, 0.0920474, 0.0923, 0.09172002, 0.09196507, 42.54534314], [1516807260000, 0.09196507, 0.09229997, 0.09172002, 0.09196507, 17.43179724], [1516807320000, 0.09225889, 0.09225889, 0.09174999, 0.09174999, 14.74586245], [1516807380000, 0.09175, 0.09193, 0.09172002, 0.09174999, 13.98572827], [1516807440000, 0.09175, 0.09192, 0.09175, 0.09192, 16.69205344], [1516807500000, 0.09191998, 0.09192, 0.09191998, 0.09191998, 62.68667828], [1516807560000, 0.09191998, 0.09224084, 0.09191998, 0.09221499, 18.55901055], [1516807620000, 0.09192, 0.09221499, 0.09191998, 0.09213885, 41.7715963], [1516807680000, 0.09213885, 0.09221499, 0.09192, 0.09192001, 3.52707448], [1516807740000, 0.09192001, 0.09221499, 0.09192, 0.09221498, 16.65992765], [1516807800000, 0.09221499, 0.09240431, 0.09213885, 0.09213885, 42.73706474], [1516807860000, 0.09213885, 0.09256362, 0.09213885, 0.09239969, 159.42930053], [1516807920000, 0.0923997, 0.09256363, 0.09239969, 0.09239969, 32.63512519], [1516807980000, 0.0923997, 0.09269999, 0.09221499, 0.09235, 55.03200713], [1516808040000, 0.09221503, 0.09235, 0.09213884, 0.09213885, 21.12330495], [1516808100000, 0.09213885, 0.09235, 0.09213884, 0.09235, 12.04281869], [1516808160000, 0.09213885, 0.09235, 0.09213884, 0.09213884, 33.62320683], [1516808220000, 0.09213884, 0.092349, 0.09213884, 0.09213884, 11.29432096], [1516808280000, 0.09213884, 0.09234885, 0.0918, 0.0919408, 29.58418821], [1516808340000, 0.09213884, 0.09213884, 0.0919228, 0.09213884, 7.50302282], [1516808400000, 0.09213884, 0.09219992, 0.0918, 0.09213884, 37.69795588], [1516808460000, 0.09213884, 0.0922, 0.0918228, 0.0922, 26.82078738], [1516808520000, 0.09218192, 0.092349, 0.09218192, 0.0922, 18.8413869], [1516808580000, 0.0922, 0.09234899, 0.09182281, 0.09234899, 19.23263403], [1516808640000, 0.09234899, 0.092349, 0.09234899, 0.09234899, 72.01101313], [1516808700000, 0.09234897, 0.092349, 0.09184083, 0.09219998, 17.17366335], [1516808760000, 0.09219998, 0.092683, 0.09185884, 0.09248298, 75.24364144], [1516808820000, 0.0924128, 0.0924128, 0.092, 0.09210007, 12.0229058], [1516808880000, 0.09210007, 0.09210007, 0.0921, 0.09210007, 11.47444886], [1516808940000, 0.09210007, 0.09239999, 0.09210007, 0.09210007, 8.58155395], [1516809000000, 0.0921001, 0.09239514, 0.09210007, 0.09210012, 64.29185166], [1516809060000, 0.09211289, 0.09239511, 0.0921, 0.09210007, 45.45728535], [1516809120000, 0.09210007, 0.09238, 0.0921, 0.09210007, 45.90315605], [1516809180000, 0.0921, 0.09238, 0.09182282, 0.09238, 30.64738244], [1516809240000, 0.0921, 0.0924128, 0.09182282, 0.092, 42.85386298], [1516809300000, 0.092, 0.0923948, 0.092, 0.092, 14.37163492], [1516809360000, 0.092, 0.09239472, 0.092, 0.092, 74.24372445], [1516809420000, 0.092, 0.09239459, 0.092, 0.0921, 4.74623834], [1516809480000, 0.09238459, 0.09238459, 0.091841, 0.091841, 22.50412771], [1516809540000, 0.092, 0.09238465, 0.09185, 0.092, 16.72185181], [1516809600000, 0.09232, 0.09238463, 0.09185, 0.0919954, 8.86105068], [1516809660000, 0.09185004, 0.09230001, 0.09185, 0.09229999, 10.69144499], [1516809720000, 0.09229999, 0.09229999, 0.09185, 0.092285, 29.54781537], [1516809780000, 0.092, 0.092285, 0.092, 0.092, 10.33266213], [1516809840000, 0.092, 0.09228499, 0.092, 0.09227998, 9.9880586], [1516809900000, 0.09227998, 0.09227998, 0.092, 0.092, 36.59798863], [1516809960000, 0.092, 0.09207563, 0.0919954, 0.0919954, 20.75410976], [1516810020000, 0.0919954, 0.092, 0.0919954, 0.09199999, 7.6208128], [1516810080000, 0.092, 0.09228499, 0.09199999, 0.09228499, 42.63402289], [1516810140000, 0.09228499, 0.092285, 0.0921, 0.09211, 6.37081727], [1516810200000, 0.09211, 0.092285, 0.09211, 0.09211, 16.12684337], [1516810260000, 0.09211, 0.09228499, 0.09211, 0.09215, 17.52470214], [1516810320000, 0.09228499, 0.092285, 0.092111, 0.092111, 37.91229935], [1516810380000, 0.092111, 0.09228498, 0.09211, 0.092111, 15.12696317], [1516810440000, 0.09215, 0.092285, 0.092018, 0.09220009, 10.99914892], [1516810500000, 0.09220009, 0.0922001, 0.092018, 0.0920504, 19.4212739], [1516810560000, 0.092036, 0.0922001, 0.092018, 0.092018, 9.30882292], [1516810620000, 0.092018, 0.092018, 0.0919954, 0.0919954, 12.06335305], [1516810680000, 0.0919954, 0.0919999, 0.0919954, 0.09199541, 38.6970552], [1516810740000, 0.09199541, 0.092018, 0.0919954, 0.092015, 15.77608012], [1516810800000, 0.092018, 0.092018, 0.09201796, 0.09201796, 7.04720397], [1516810860000, 0.092018, 0.092018, 0.09201796, 0.09201797, 3.41685937], [1516810920000, 0.09201797, 0.092018, 0.09201797, 0.09201797, 9.7081008], [1516810980000, 0.09201797, 0.09201799, 0.09201797, 0.09201797, 3.33255811], [1516811040000, 0.092018, 0.09220009, 0.09201797, 0.0922, 24.1228427], [1516811100000, 0.0922, 0.0922001, 0.09201801, 0.09202, 5.95388309], [1516811160000, 0.09202, 0.0922001, 0.09201798, 0.09201999, 16.60584158], [1516811220000, 0.09201999, 0.09202, 0.09201797, 0.09201998, 35.74582743], [1516811280000, 0.09201797, 0.09202, 0.09201797, 0.09202, 17.24696273], [1516811340000, 0.09202, 0.09202, 0.09202, 0.09202, 17.51699545], [1516811400000, 0.09202, 0.09202, 0.0919954, 0.09202, 58.20921404], [1516811460000, 0.0922001, 0.092285, 0.09202, 0.0922849, 4.62214543], [1516811520000, 0.0922849, 0.0922849, 0.09202, 0.09202, 2.12317291], [1516811580000, 0.09202, 0.09238, 0.0919954, 0.0919954, 15.36971244], [1516811640000, 0.09237999, 0.0925, 0.0919954, 0.09239464, 14.29458041], [1516811700000, 0.09239465, 0.0924936, 0.0921, 0.0921, 7.41956611], [1516811760000, 0.09239465, 0.0925432, 0.0921, 0.09239465, 5.10896089], [1516811820000, 0.09239465, 0.09239465, 0.09210005, 0.09210005, 1.59136495], [1516811880000, 0.09210005, 0.09239465, 0.0921, 0.09239464, 11.55114927], [1516811940000, 0.09210001, 0.09239465, 0.0921, 0.09210005, 18.24199907], [1516812000000, 0.09239465, 0.09239465, 0.09210005, 0.09238, 9.83571372], [1516812060000, 0.09238, 0.09238, 0.09216, 0.09216, 1.31851457], [1516812120000, 0.09216, 0.09239465, 0.09215, 0.09217, 6.04079138], [1516812180000, 0.09237999, 0.09239465, 0.09216028, 0.09216028, 7.84191125], [1516812240000, 0.09239, 0.09239, 0.09216028, 0.09216999, 3.65983631], [1516812300000, 0.09217, 0.092385, 0.09217, 0.09217001, 7.69499725], [1516812360000, 0.09217001, 0.09238399, 0.09217, 0.09217, 20.91577916], [1516812420000, 0.09216029, 0.09217, 0.09216028, 0.09216028, 4.26034664], [1516812480000, 0.0921603, 0.09217, 0.09216028, 0.09216028, 17.52967937], [1516812540000, 0.09217, 0.09217, 0.09216, 0.09216, 41.77167547], [1516812600000, 0.09228241, 0.09238398, 0.09216, 0.09216, 5.16658754], [1516812660000, 0.09216669, 0.09238396, 0.09216, 0.09238396, 10.07988452], [1516812720000, 0.09238396, 0.09238396, 0.09216, 0.09238396, 4.64838882], [1516812780000, 0.09238396, 0.09238396, 0.09216, 0.09216, 2.12587798], [1516812840000, 0.09216, 0.09238392, 0.09216, 0.09238392, 0.94161246], [1516812900000, 0.09238391, 0.09238392, 0.09216, 0.09238391, 14.1839126], [1516812960000, 0.09238391, 0.09238395, 0.09210006, 0.09238395, 67.66401234], [1516813020000, 0.09238395, 0.09238396, 0.09216001, 0.09216001, 23.32307561], [1516813080000, 0.09238396, 0.09238396, 0.09216001, 0.0923839, 4.96887399], [1516813140000, 0.0923839, 0.09238396, 0.092155, 0.0923839, 9.15867159], [1516813200000, 0.09238388, 0.09238388, 0.09238388, 0.09238388, 2.29050761], [1516813260000, 0.09238387, 0.09238396, 0.09238387, 0.09238387, 13.05086704], [1516813320000, 0.09238396, 0.09238396, 0.092155, 0.0923839, 9.35238393], [1516813380000, 0.09238396, 0.09238396, 0.09236, 0.09238396, 3.68852152], [1516813440000, 0.09238396, 0.09238396, 0.09236, 0.09236, 13.424081], [1516813500000, 0.092361, 0.092361, 0.09236, 0.092361, 8.94326319], [1516813560000, 0.092361, 0.092361, 0.09229157, 0.09229157, 1.15243654], [1516813620000, 0.09229157, 0.09229157, 0.09216001, 0.09227549, 12.01603326], [1516813680000, 0.09229156, 0.09229156, 0.09215, 0.09227549, 19.24270904], [1516813740000, 0.09227549, 0.09227549, 0.09227548, 0.09227548, 3.51406147], [1516813800000, 0.09227547, 0.09229154, 0.09227547, 0.09229154, 18.86917437], [1516813860000, 0.09229153, 0.09229154, 0.09227549, 0.09229154, 18.57426061], [1516813920000, 0.09227549, 0.092361, 0.09227549, 0.09229154, 10.96247904], [1516813980000, 0.09229154, 0.09236099, 0.09227549, 0.09236, 17.22140651], [1516814040000, 0.09236098, 0.09236098, 0.09215001, 0.09215001, 29.30451307], [1516814100000, 0.092235, 0.092235, 0.09215, 0.09215, 26.64494901], [1516814160000, 0.09215001, 0.092291, 0.09215001, 0.092291, 7.78951769], [1516814220000, 0.092291, 0.092291, 0.09215005, 0.09223499, 1.1344578], [1516814280000, 0.09223499, 0.092291, 0.09215005, 0.092235, 3.85840347], [1516814340000, 0.09223499, 0.092291, 0.09217501, 0.092291, 3.26756398], [1516814400000, 0.09223501, 0.09229099, 0.09223499, 0.09229099, 9.85262981], [1516814460000, 0.0922901, 0.092291, 0.092235, 0.092291, 11.91000889], [1516814520000, 0.092291, 0.09235002, 0.092291, 0.09235002, 31.0293879], [1516814580000, 0.09235002, 0.09236098, 0.092291, 0.09236097, 22.97967877], [1516814640000, 0.09236098, 0.0926, 0.09236097, 0.0926, 24.00718845], [1516814700000, 0.09238399, 0.09259999, 0.09238399, 0.09259998, 9.67260064], [1516814760000, 0.09259998, 0.09259998, 0.09238399, 0.092384, 5.62232187], [1516814820000, 0.092384, 0.09268296, 0.092384, 0.09238401, 7.35704128], [1516814880000, 0.09238401, 0.09268292, 0.092384, 0.09268292, 10.1517815], [1516814940000, 0.09268292, 0.09268292, 0.09238402, 0.09238402, 3.98765379], [1516815000000, 0.09258291, 0.09268292, 0.09258291, 0.09268287, 17.34896234], [1516815060000, 0.09258282, 0.09268284, 0.09238399, 0.09258292, 93.87855589], [1516815120000, 0.09258292, 0.09268284, 0.09236097, 0.09256792, 8.9649245], [1516815180000, 0.09256793, 0.09266784, 0.09236097, 0.09266784, 0.56057193], [1516815240000, 0.09236097, 0.09266784, 0.09236097, 0.09256793, 5.46743832], [1516815300000, 0.09256793, 0.09268295, 0.09236097, 0.09256793, 13.03912639], [1516815360000, 0.09254414, 0.09268295, 0.0925239, 0.09268295, 12.78313529], [1516815420000, 0.09263598, 0.09263598, 0.092361, 0.09237, 9.04659376], [1516815480000, 0.09237, 0.09268292, 0.09237, 0.09268292, 6.02948503], [1516815540000, 0.09254479, 0.09268292, 0.09236097, 0.092361, 26.1470261], [1516815600000, 0.092361, 0.09239001, 0.09229103, 0.09237, 9.92860284], [1516815660000, 0.09237, 0.09239001, 0.092361, 0.09239001, 13.1491542], [1516815720000, 0.09239001, 0.0926829, 0.09239001, 0.09256793, 5.90969897], [1516815780000, 0.09256793, 0.09268292, 0.09256793, 0.09268292, 3.32797162], [1516815840000, 0.09256793, 0.09268292, 0.09256793, 0.09256793, 6.81319379], [1516815900000, 0.09256793, 0.09268292, 0.09245103, 0.09245103, 5.03786673], [1516815960000, 0.09245103, 0.09245103, 0.09237902, 0.09237902, 2.2451345], [1516816020000, 0.09245103, 0.09256793, 0.09245, 0.09256793, 4.75147111], [1516816080000, 0.09256793, 0.09268292, 0.09256793, 0.0926, 15.59865108], [1516816140000, 0.09256793, 0.09268292, 0.09256793, 0.09268292, 20.99594508], [1516816200000, 0.09256795, 0.09268292, 0.09256795, 0.09268, 10.30521267], [1516816260000, 0.09268, 0.092683, 0.092479, 0.09268, 30.62110653], [1516816320000, 0.092683, 0.092683, 0.0926, 0.0926, 29.11090085], [1516816380000, 0.09248, 0.0926, 0.09248, 0.09248, 5.68075222], [1516816440000, 0.0926, 0.0926, 0.09248003, 0.0926, 25.16343949], [1516816500000, 0.0926, 0.0926, 0.09255, 0.09259, 10.78745405], [1516816560000, 0.09248, 0.09259, 0.09247901, 0.09247902, 30.87914478], [1516816620000, 0.09247902, 0.09259, 0.09247901, 0.09259, 5.90694837], [1516816680000, 0.09251, 0.09259, 0.09251, 0.09251001, 13.05621596], [1516816740000, 0.09259, 0.092683, 0.09259, 0.0926, 33.97424539], [1516816800000, 0.09260001, 0.09269999, 0.09251002, 0.09251002, 10.63947436], [1516816860000, 0.09269999, 0.09269999, 0.09252, 0.09252, 2.11059851], [1516816920000, 0.09269999, 0.0927, 0.09252, 0.0927, 8.49905946], [1516816980000, 0.0927, 0.0927, 0.09252001, 0.0927, 7.3859556], [1516817040000, 0.09252001, 0.0927, 0.09252001, 0.0927, 4.1907626], [1516817100000, 0.09272303, 0.09292, 0.09252002, 0.09253, 15.41554888], [1516817160000, 0.09272303, 0.09285469, 0.09253, 0.09273506, 49.97378653], [1516817220000, 0.09273506, 0.09285213, 0.09253016, 0.09253016, 13.09945571], [1516817280000, 0.09272303, 0.0928, 0.09253016, 0.09263017, 3.05342229], [1516817340000, 0.09263018, 0.09285215, 0.09253015, 0.09263018, 16.62962428], [1516817400000, 0.09263016, 0.09284282, 0.09253015, 0.09282954, 9.00728656], [1516817460000, 0.09282954, 0.09282954, 0.09253015, 0.09273509, 9.17566078], [1516817520000, 0.09273509, 0.0927351, 0.09253015, 0.09273509, 3.10080624], [1516817580000, 0.09273508, 0.09273508, 0.0925301, 0.0925301, 5.58939618], [1516817640000, 0.0925301, 0.09273509, 0.0925301, 0.09254, 1.24732731], [1516817700000, 0.09254, 0.09273502, 0.0925301, 0.09273502, 15.9678642], [1516817760000, 0.0925301, 0.09273502, 0.0925301, 0.0925301, 7.6119056], [1516817820000, 0.0925301, 0.09253015, 0.0925301, 0.09253015, 4.03296205], [1516817880000, 0.0925301, 0.09253015, 0.09253001, 0.0925301, 4.13330595], [1516817940000, 0.0925301, 0.09253015, 0.09250001, 0.0925301, 10.59012021], [1516818000000, 0.09250001, 0.09253, 0.09250001, 0.09250001, 8.81556441], [1516818060000, 0.09250001, 0.09253015, 0.09250001, 0.09253015, 12.24938603], [1516818120000, 0.09250002, 0.09253015, 0.0925, 0.09253015, 34.51818301], [1516818180000, 0.09253015, 0.09253015, 0.0925, 0.09253015, 36.42138186], [1516818240000, 0.0925, 0.0925, 0.092479, 0.092479, 16.44212285], [1516818300000, 0.092479, 0.09247901, 0.0924501, 0.0924501, 65.5990885], [1516818360000, 0.0924501, 0.092479, 0.09238652, 0.09238652, 14.83872595], [1516818420000, 0.09238652, 0.09238652, 0.09238, 0.09238652, 6.18339362], [1516818480000, 0.09238651, 0.09238652, 0.092379, 0.09238, 7.81161834], [1516818540000, 0.09237901, 0.09238, 0.09237901, 0.09237901, 8.93480848], [1516818600000, 0.09237999, 0.09238, 0.09237901, 0.09237998, 4.70964246], [1516818660000, 0.09237998, 0.09237998, 0.09229404, 0.09237998, 6.41784013], [1516818720000, 0.09237998, 0.09238, 0.09237901, 0.09238, 8.40380778], [1516818780000, 0.09238, 0.09238001, 0.09238, 0.09238, 10.52989349], [1516818840000, 0.09238001, 0.09238001, 0.09238, 0.09238, 0.68588083], [1516818900000, 0.09238, 0.09238001, 0.09238, 0.09238001, 8.2152878], [1516818960000, 0.09238001, 0.09238001, 0.09238, 0.09238, 14.59150172], [1516819020000, 0.09238, 0.09238, 0.09229103, 0.09237997, 25.29805995], [1516819080000, 0.09237997, 0.09237997, 0.09229104, 0.09237996, 13.27320388], [1516819140000, 0.09237995, 0.09237997, 0.09229102, 0.09237997, 48.33795196], [1516819200000, 0.09229105, 0.09237997, 0.09229105, 0.09237997, 12.66595323], [1516819260000, 0.09234, 0.09237997, 0.09234, 0.09237997, 4.96073264], [1516819320000, 0.09234, 0.09237997, 0.09234, 0.09234497, 9.17550144], [1516819380000, 0.09237995, 0.09238001, 0.09234, 0.09238001, 9.0344609], [1516819440000, 0.09238001, 0.09238001, 0.09234, 0.09237998, 8.59166606], [1516819500000, 0.09238001, 0.09238001, 0.09237998, 0.09237998, 3.01877333], [1516819560000, 0.09238001, 0.09242941, 0.09238001, 0.09242941, 7.97466295], [1516819620000, 0.092479, 0.0925, 0.09238652, 0.09238652, 4.19304748], [1516819680000, 0.09238665, 0.09242941, 0.09238665, 0.09238666, 6.33803735], [1516819740000, 0.09238666, 0.0925, 0.09238666, 0.092479, 36.05236621], [1516819800000, 0.0925, 0.09253015, 0.0925, 0.09251508, 13.46653036], [1516819860000, 0.09253014, 0.09253014, 0.0925, 0.0925, 7.9054893], [1516819920000, 0.09251508, 0.09253015, 0.09242256, 0.0925, 3.10879789], [1516819980000, 0.09238666, 0.09253014, 0.09238666, 0.09249, 7.67575481], [1516820040000, 0.09249, 0.09249, 0.09238667, 0.09238668, 7.49840171], [1516820100000, 0.09238668, 0.09253015, 0.09238667, 0.09253015, 12.02506297], [1516820160000, 0.09253015, 0.09253015, 0.09253015, 0.09253015, 2.27688794], [1516820220000, 0.09253014, 0.09253015, 0.09253014, 0.09253014, 1.9235562], [1516820280000, 0.09253015, 0.09253015, 0.09238668, 0.09253014, 14.22425273], [1516820340000, 0.09253015, 0.09253015, 0.09253015, 0.09253015, 17.16728094], [1516820400000, 0.09253015, 0.09253015, 0.09253014, 0.09253015, 18.07150937], [1516820460000, 0.09253015, 0.09253015, 0.09238668, 0.09238668, 10.44491593], [1516820520000, 0.09253014, 0.09253014, 0.09238668, 0.09241, 4.05069136], [1516820580000, 0.09251014, 0.09251014, 0.0923867, 0.0923867, 9.55408181], [1516820640000, 0.0924, 0.09253015, 0.0923867, 0.0923867, 6.31178454], [1516820700000, 0.09251015, 0.09251015, 0.09239, 0.0924, 9.74134651], [1516820760000, 0.09238671, 0.0924, 0.09238668, 0.09239, 21.13619218], [1516820820000, 0.0924, 0.09251015, 0.0924, 0.09245, 5.10586536], [1516820880000, 0.09244999, 0.09245, 0.0924, 0.09245, 35.87628896], [1516820940000, 0.09245, 0.09254, 0.09245, 0.09245, 4.18011812], [1516821000000, 0.09254, 0.09299899, 0.09254, 0.09299895, 35.34420112], [1516821060000, 0.09299888, 0.09299888, 0.09254, 0.092998, 7.4388709], [1516821120000, 0.092998, 0.092998, 0.09245, 0.09295994, 17.67967688], [1516821180000, 0.09295994, 0.09295999, 0.09293669, 0.0929599, 5.78580641], [1516821240000, 0.09295993, 0.09295999, 0.09254, 0.09254, 4.00732682], [1516821300000, 0.09254001, 0.09254001, 0.09254001, 0.09254001, 4.04301176], [1516821360000, 0.09254001, 0.09293999, 0.09254, 0.09293999, 10.45757413], [1516821420000, 0.09293995, 0.09293995, 0.09254001, 0.09290992, 15.09237661], [1516821480000, 0.09290992, 0.09290992, 0.09254002, 0.09269996, 17.47021055], [1516821540000, 0.09254003, 0.09269996, 0.09254003, 0.09255004, 1.78510435], [1516821600000, 0.0926498, 0.09265, 0.09254001, 0.09254001, 11.33547711], [1516821660000, 0.09254001, 0.0926497, 0.09254001, 0.09264969, 3.86657094], [1516821720000, 0.09254001, 0.09264969, 0.09254001, 0.09264968, 5.50194944], [1516821780000, 0.09254001, 0.09264968, 0.09254, 0.09254001, 7.28600957], [1516821840000, 0.09254001, 0.09264968, 0.09254, 0.09254, 5.79394176], [1516821900000, 0.09254, 0.09264, 0.09238668, 0.09238668, 53.99608529], [1516821960000, 0.09263989, 0.09264, 0.09238668, 0.0923867, 8.99867715], [1516822020000, 0.0925, 0.09254, 0.0923867, 0.09254, 3.03059404], [1516822080000, 0.0925, 0.09254, 0.0925, 0.09254, 26.24918841], [1516822140000, 0.09254, 0.09254, 0.09238668, 0.09254, 4.44532766], [1516822200000, 0.09253999, 0.09253999, 0.09238652, 0.09238667, 6.91811551], [1516822260000, 0.09238652, 0.09253999, 0.09238652, 0.09238653, 4.36657791], [1516822320000, 0.09238653, 0.09253999, 0.09238653, 0.09253999, 8.68796901], [1516822380000, 0.09253999, 0.09253999, 0.09215, 0.09238652, 22.47722058], [1516822440000, 0.09252999, 0.09252999, 0.09203105, 0.09234, 61.72070065], [1516822500000, 0.09233, 0.09253999, 0.091999, 0.09252999, 120.58869554], [1516822560000, 0.09253997, 0.09254, 0.09237652, 0.09238652, 4.07020495], [1516822620000, 0.09253, 0.09253, 0.09238652, 0.09238652, 7.66218657], [1516822680000, 0.09238657, 0.09253, 0.09238652, 0.09253, 6.1148986], [1516822740000, 0.09253, 0.09253, 0.09199905, 0.09199907, 72.18162781], [1516822800000, 0.09253, 0.09253, 0.092049, 0.09253, 6.44553557], [1516822860000, 0.092529, 0.09253, 0.092529, 0.09253, 15.03312708], [1516822920000, 0.09253, 0.09253, 0.092525, 0.09252985, 5.59001326], [1516822980000, 0.09238095, 0.09252998, 0.09227894, 0.092525, 3.09525965], [1516823040000, 0.09252998, 0.09253, 0.09227894, 0.0925, 4.72887978], [1516823100000, 0.09252998, 0.09253, 0.0925, 0.09253, 15.87093947], [1516823160000, 0.09252998, 0.09254, 0.09252998, 0.09253, 34.3306219], [1516823220000, 0.09253, 0.09254, 0.09227894, 0.09227895, 13.36095868], [1516823280000, 0.09252998, 0.09254, 0.09199908, 0.09254, 68.12085883], [1516823340000, 0.09227896, 0.09253999, 0.09199907, 0.09252, 8.36871672], [1516823400000, 0.09252, 0.09254, 0.09199946, 0.09226094, 22.9204796], [1516823460000, 0.092505, 0.09254, 0.09226094, 0.09254, 22.97019294], [1516823520000, 0.09254, 0.09254, 0.09227, 0.09254, 5.39099366], [1516823580000, 0.09254, 0.09254, 0.09253999, 0.09253999, 0.46403463], [1516823640000, 0.09253997, 0.09253997, 0.09253997, 0.09253997, 0.47946517], [1516823700000, 0.09253997, 0.09253999, 0.09233001, 0.09253997, 5.88825102], [1516823760000, 0.09253999, 0.09254, 0.09228001, 0.09228001, 24.84902201], [1516823820000, 0.09247895, 0.09254, 0.09201847, 0.09227, 11.61108155], [1516823880000, 0.09227, 0.09253999, 0.09222222, 0.09253999, 14.8386764], [1516823940000, 0.09222222, 0.09253998, 0.09201847, 0.09252996, 6.08936597], [1516824000000, 0.09252996, 0.09253999, 0.09222222, 0.09253999, 4.9261226], [1516824060000, 0.09251742, 0.09253999, 0.09222242, 0.09253999, 6.54440659], [1516824120000, 0.09253999, 0.09253999, 0.09222242, 0.09222242, 10.68979859], [1516824180000, 0.09253999, 0.09253999, 0.09228613, 0.09253999, 2.52817515], [1516824240000, 0.09253999, 0.09253999, 0.09228613, 0.09250871, 36.73698423], [1516824300000, 0.09228613, 0.09250859, 0.09228613, 0.09245, 2.68116742], [1516824360000, 0.09245, 0.09250859, 0.09245, 0.09250859, 11.89757135], [1516824420000, 0.09250859, 0.09250859, 0.0923, 0.0923, 2.94898795], [1516824480000, 0.09250859, 0.09250859, 0.0923, 0.0924, 4.51561147], [1516824540000, 0.0924, 0.09250859, 0.0923, 0.09250859, 4.81881245], [1516824600000, 0.09250859, 0.09250859, 0.09228615, 0.09230462, 8.37597012], [1516824660000, 0.09230462, 0.09250859, 0.09228614, 0.0922862, 15.55327142], [1516824720000, 0.09250858, 0.09250859, 0.09228615, 0.09228615, 1.59428695], [1516824780000, 0.09250858, 0.09250858, 0.09228615, 0.09228615, 4.81397358], [1516824840000, 0.09228615, 0.09250859, 0.09228615, 0.09228615, 11.44451595], [1516824900000, 0.0925079, 0.09250872, 0.0925079, 0.09250872, 2.68697048], [1516824960000, 0.09250872, 0.09253998, 0.09228615, 0.09250872, 2.67537312], [1516825020000, 0.09253998, 0.09254, 0.09228615, 0.09253996, 8.54497411], [1516825080000, 0.09254, 0.09254, 0.09253996, 0.09254, 8.26151997], [1516825140000, 0.09254, 0.09254, 0.09253999, 0.09253999, 9.308251], [1516825200000, 0.09254, 0.09254, 0.09253999, 0.09253999, 36.06172251], [1516825260000, 0.09253999, 0.09254, 0.09253996, 0.09253996, 49.7518753], [1516825320000, 0.09254, 0.09254, 0.09250999, 0.09253996, 2.46022297], [1516825380000, 0.09253996, 0.09254, 0.09250999, 0.09254, 21.3903323], [1516825440000, 0.09254, 0.09254, 0.09229033, 0.09250999, 6.73169179], [1516825500000, 0.09250999, 0.09254, 0.09228614, 0.09228614, 10.0901129], [1516825560000, 0.09254, 0.09254, 0.09228615, 0.09254, 6.54226715], [1516825620000, 0.09253999, 0.09253999, 0.09228614, 0.09229105, 2.42564051], [1516825680000, 0.09253999, 0.09253999, 0.09229105, 0.09253999, 8.51233795], [1516825740000, 0.09253999, 0.09253999, 0.09253999, 0.09253999, 21.00010495], [1516825800000, 0.09229111, 0.09254, 0.09229111, 0.09254, 33.18397312], [1516825860000, 0.09254, 0.09254001, 0.09254, 0.09254001, 3.27604341], [1516825920000, 0.09254001, 0.09255246, 0.09254, 0.09254001, 2.52116866], [1516825980000, 0.09254001, 0.09255246, 0.09254001, 0.09254001, 4.8806134], [1516826040000, 0.09255246, 0.09264999, 0.09255246, 0.09264999, 5.63387766], [1516826100000, 0.09269999, 0.09289, 0.09269999, 0.0927905, 6.11177315], [1516826160000, 0.0929, 0.09295993, 0.09271798, 0.09287329, 22.93898367], [1516826220000, 0.09287329, 0.09287329, 0.09229112, 0.09229112, 18.76520326], [1516826280000, 0.09287327, 0.09287327, 0.09229113, 0.09287309, 25.18277128], [1516826340000, 0.09287309, 0.09287327, 0.09228614, 0.09287327, 45.13264545], [1516826400000, 0.09273396, 0.09287327, 0.09201861, 0.09287326, 61.11562737], [1516826460000, 0.09287326, 0.09297543, 0.09287326, 0.09297202, 41.78759651], [1516826520000, 0.09297543, 0.093, 0.09297202, 0.093, 104.7174721], [1516826580000, 0.09299898, 0.093, 0.09229128, 0.09299218, 9.9444743], [1516826640000, 0.09299, 0.09299, 0.09294717, 0.09295148, 5.31999853], [1516826700000, 0.09295148, 0.0929899, 0.09279898, 0.09287329, 11.93908621], [1516826760000, 0.09287329, 0.09299, 0.09279899, 0.09288329, 32.55284933], [1516826820000, 0.09288329, 0.09299, 0.09280898, 0.09280898, 29.60777076], [1516826880000, 0.09287329, 0.09287329, 0.09280898, 0.09286, 5.22303963], [1516826940000, 0.09280898, 0.09287329, 0.09280898, 0.09286, 15.64517727], [1516827000000, 0.09286, 0.09287, 0.09280898, 0.09287, 6.36285484], [1516827060000, 0.09287, 0.09287, 0.0925, 0.09286999, 8.35712796], [1516827120000, 0.09286999, 0.09287, 0.0925, 0.09286999, 2.17768961], [1516827180000, 0.09286999, 0.09286999, 0.09255, 0.09255, 9.60013547], [1516827240000, 0.09255, 0.09287, 0.09255, 0.09255, 2.14398738], [1516827300000, 0.09255, 0.0928, 0.09230062, 0.09278999, 21.0922484], [1516827360000, 0.09278999, 0.09279, 0.09255, 0.09255, 15.3008711], [1516827420000, 0.09277158, 0.09279, 0.09255, 0.09277144, 4.71799225], [1516827480000, 0.09277144, 0.09279, 0.09255, 0.09277142, 13.02872537], [1516827540000, 0.09277142, 0.09277143, 0.09255, 0.09277143, 4.03886752], [1516827600000, 0.09255, 0.0927713, 0.09210001, 0.09255001, 28.43384895], [1516827660000, 0.09255001, 0.09255001, 0.09210402, 0.09255001, 1.24813592], [1516827720000, 0.09255001, 0.09274974, 0.09255, 0.09255, 4.9420942], [1516827780000, 0.09255, 0.09274972, 0.09210786, 0.09255001, 7.68840891], [1516827840000, 0.09274, 0.09274, 0.09210785, 0.09272649, 9.03161433], [1516827900000, 0.09272649, 0.09272651, 0.09210791, 0.09272651, 2.82962186], [1516827960000, 0.09272651, 0.09272651, 0.09210795, 0.09210795, 2.23577467], [1516828020000, 0.09250013, 0.09250013, 0.09210792, 0.09250013, 13.69434259], [1516828080000, 0.09250012, 0.09250013, 0.09215401, 0.09250013, 13.17308027], [1516828140000, 0.09241239, 0.09250013, 0.092154, 0.09250013, 13.39680473], [1516828200000, 0.09250011, 0.09250013, 0.09210792, 0.09250011, 32.5353854], [1516828260000, 0.0925, 0.09250011, 0.09215403, 0.0925, 4.53979557], [1516828320000, 0.09245, 0.09245, 0.09215403, 0.09244999, 3.92171271], [1516828380000, 0.09244999, 0.0925, 0.09216587, 0.09244999, 11.41238942], [1516828440000, 0.09244999, 0.0925, 0.09244999, 0.0925, 16.10175498], [1516828500000, 0.0925, 0.0927265, 0.0923, 0.092386, 23.0181015], [1516828560000, 0.0927265, 0.0927265, 0.092386, 0.092386, 3.94477924], [1516828620000, 0.0925, 0.0925, 0.092386, 0.0925, 16.01028131], [1516828680000, 0.0925, 0.0925, 0.09245, 0.09247, 5.37586994], [1516828740000, 0.09245, 0.0927265, 0.09245, 0.0925, 3.80958496], [1516828800000, 0.0926, 0.0926, 0.0926, 0.0926, 4.08728415], [1516828860000, 0.0926, 0.0926, 0.0925, 0.09250005, 8.84837151], [1516828920000, 0.09250005, 0.09289645, 0.09250005, 0.0927265, 64.06058137], [1516828980000, 0.0927265, 0.09289643, 0.09272649, 0.09272649, 11.56339607], [1516829040000, 0.09272649, 0.0928964, 0.09250154, 0.0927033, 63.70474832], [1516829100000, 0.09270329, 0.0928963, 0.09250156, 0.092625, 13.46764879], [1516829160000, 0.09269999, 0.0927, 0.09250155, 0.0927, 29.19861684], [1516829220000, 0.0927, 0.09281327, 0.09250155, 0.09250156, 13.68750177], [1516829280000, 0.09266183, 0.09281324, 0.09250162, 0.09281317, 4.83747228], [1516829340000, 0.09281318, 0.09281321, 0.09250162, 0.092771, 12.2454022], [1516829400000, 0.09277099, 0.09277099, 0.09250163, 0.09250163, 16.31654831], [1516829460000, 0.09250163, 0.09277094, 0.09250163, 0.09277093, 22.68209498], [1516829520000, 0.09277094, 0.092808, 0.09250162, 0.09250162, 30.09512926], [1516829580000, 0.09250162, 0.09281321, 0.09250162, 0.09280799, 17.80843377], [1516829640000, 0.09280799, 0.09281322, 0.09259413, 0.09281322, 39.28907629], [1516829700000, 0.09280799, 0.09285351, 0.0926017, 0.09281322, 46.71374318], [1516829760000, 0.09285351, 0.09285352, 0.09281323, 0.09285352, 33.98065237], [1516829820000, 0.09281323, 0.09289645, 0.09260169, 0.09260169, 35.37460055], [1516829880000, 0.09260169, 0.09291, 0.09260169, 0.09291, 4.74390331], [1516829940000, 0.09291, 0.09291, 0.09260169, 0.09291, 16.76031884], [1516830000000, 0.09291, 0.09291, 0.09260169, 0.0928911, 3.07904756], [1516830060000, 0.0928911, 0.09291, 0.09260169, 0.09260169, 8.12859618], [1516830120000, 0.09291, 0.09297999, 0.09291, 0.09297999, 5.36095025], [1516830180000, 0.09292089, 0.09299, 0.09292089, 0.09297999, 57.27957499], [1516830240000, 0.09299, 0.09299, 0.0927099, 0.0927099, 3.45507657], [1516830300000, 0.09299, 0.09299, 0.0927099, 0.09299, 4.97123251], [1516830360000, 0.09298999, 0.09299, 0.0927099, 0.09297999, 7.09921586], [1516830420000, 0.09297999, 0.09297999, 0.0927099, 0.09295675, 19.25072872], [1516830480000, 0.0927099, 0.09295675, 0.0927099, 0.09295675, 2.61260467], [1516830540000, 0.09295675, 0.09295675, 0.09271, 0.0927143, 14.2541842], [1516830600000, 0.09272, 0.09295675, 0.09272, 0.09295675, 5.21572731], [1516830660000, 0.09295675, 0.093, 0.09273099, 0.09273099, 138.16066638], [1516830720000, 0.09282273, 0.093, 0.09273099, 0.093, 19.37488545], [1516830780000, 0.093, 0.093, 0.09282273, 0.09284273, 143.30904032], [1516830840000, 0.09284276, 0.093, 0.09284276, 0.0929, 23.46233571], [1516830900000, 0.0929005, 0.093, 0.09284276, 0.09284276, 35.16420226], [1516830960000, 0.09284276, 0.09299996, 0.09284276, 0.09299996, 10.00489098], [1516831020000, 0.09299999, 0.09299999, 0.0929099, 0.0929099, 32.70995348], [1516831080000, 0.0929099, 0.09299999, 0.0929099, 0.0929099, 16.30252695], [1516831140000, 0.0929099, 0.09299998, 0.09273133, 0.09282273, 58.80365389], [1516831200000, 0.09282273, 0.09300422, 0.09282273, 0.09300422, 48.02714712], [1516831260000, 0.09300422, 0.09301802, 0.09290001, 0.09290003, 12.18323245], [1516831320000, 0.0929003, 0.0929003, 0.09282273, 0.09288503, 19.85026681], [1516831380000, 0.09288503, 0.09301802, 0.09282276, 0.09282299, 8.38451581], [1516831440000, 0.09300422, 0.09302, 0.09282299, 0.0928231, 7.5602727], [1516831500000, 0.092823, 0.0928231, 0.09282299, 0.09282299, 30.37766243], [1516831560000, 0.092823, 0.0928231, 0.092731, 0.092731, 39.7298759], [1516831620000, 0.09273099, 0.092823, 0.09272, 0.09275, 54.9762182], [1516831680000, 0.092823, 0.092823, 0.09275003, 0.09275099, 9.70968921], [1516831740000, 0.092823, 0.0928231, 0.092823, 0.092823, 10.42009453], [1516831800000, 0.0928231, 0.0928233, 0.09282299, 0.0928233, 13.47950127], [1516831860000, 0.0928233, 0.09303896, 0.09275099, 0.09303896, 50.07398836], [1516831920000, 0.09303896, 0.093039, 0.092751, 0.09301457, 23.29881691], [1516831980000, 0.09301457, 0.093039, 0.09275199, 0.093039, 7.33868842], [1516832040000, 0.09301574, 0.0930547, 0.09275, 0.09275, 19.58111473], [1516832100000, 0.09301574, 0.09315, 0.09275, 0.0927956, 53.96070234], [1516832160000, 0.0927956, 0.0932345, 0.0927956, 0.09302004, 36.82384284], [1516832220000, 0.09302004, 0.09304329, 0.0928, 0.09299681, 29.39712766], [1516832280000, 0.09304329, 0.09322781, 0.09275003, 0.09304329, 42.61849237], [1516832340000, 0.09304329, 0.09322497, 0.09290001, 0.09290001, 17.45862962], [1516832400000, 0.09290001, 0.09303717, 0.09275003, 0.09275003, 76.66603805], [1516832460000, 0.09275001, 0.09275003, 0.09271, 0.09275003, 90.81927588], [1516832520000, 0.09271, 0.09275003, 0.09271, 0.09275003, 20.31780417], [1516832580000, 0.0930372, 0.09321346, 0.09275003, 0.09275003, 5.94074217], [1516832640000, 0.09281111, 0.09319249, 0.09275003, 0.09316164, 5.91790266], [1516832700000, 0.09316164, 0.09319249, 0.09271001, 0.09275003, 5.45152206], [1516832760000, 0.0928, 0.09310181, 0.09271, 0.093, 9.79524377], [1516832820000, 0.093, 0.09305, 0.093, 0.09305, 7.73021094], [1516832880000, 0.09305, 0.09305, 0.09304498, 0.09304898, 7.68578128], [1516832940000, 0.09304, 0.093049, 0.09271001, 0.09304, 5.78777862], [1516833000000, 0.09275004, 0.093049, 0.09275004, 0.093049, 3.73963399], [1516833060000, 0.093049, 0.093049, 0.09275004, 0.093049, 9.44826944], [1516833120000, 0.093049, 0.09310181, 0.0929, 0.0929, 21.77051492], [1516833180000, 0.09309181, 0.09310181, 0.0929, 0.0931, 4.21059037], [1516833240000, 0.09309, 0.09324998, 0.0929, 0.0929, 111.8423852], [1516833300000, 0.0929, 0.0931, 0.0929, 0.0929, 10.40211735], [1516833360000, 0.0931, 0.0931, 0.0929, 0.0929, 42.88503128], [1516833420000, 0.0929, 0.0929, 0.09275004, 0.09275004, 9.4602859], [1516833480000, 0.09275004, 0.09275004, 0.09275003, 0.09275004, 22.67553186], [1516833540000, 0.09275003, 0.0932, 0.09272, 0.09319308, 25.88709697], [1516833600000, 0.09319308, 0.0932124, 0.09275004, 0.0932124, 4.77548345], [1516833660000, 0.09319306, 0.09319309, 0.09275004, 0.09319306, 2.19522454], [1516833720000, 0.09319306, 0.09321236, 0.09275045, 0.09319306, 58.26573923], [1516833780000, 0.09275044, 0.09320772, 0.09275004, 0.09319273, 4.2629981], [1516833840000, 0.09319273, 0.09321236, 0.0931927, 0.09319273, 49.75264655], [1516833900000, 0.09319273, 0.09321235, 0.09274004, 0.09274004, 12.55198951], [1516833960000, 0.09274004, 0.09321236, 0.09274004, 0.09321236, 3.57545151], [1516834020000, 0.09321235, 0.09321235, 0.09275004, 0.0932, 6.61259511], [1516834080000, 0.09275004, 0.0932123, 0.09271, 0.09321229, 88.25920134], [1516834140000, 0.09321228, 0.09321228, 0.09271002, 0.09271002, 0.46252262], [1516834200000, 0.09271003, 0.09312999, 0.09271003, 0.09312999, 1.77111204], [1516834260000, 0.09312999, 0.09313, 0.09280427, 0.09280427, 8.34378113], [1516834320000, 0.09313, 0.09313, 0.092715, 0.09312999, 4.11593579], [1516834380000, 0.093, 0.09312999, 0.093, 0.0931, 8.00986435], [1516834440000, 0.09312999, 0.09313, 0.093, 0.0931, 8.78984877], [1516834500000, 0.0931, 0.09321225, 0.0931, 0.0931, 6.17130705], [1516834560000, 0.09321225, 0.09321225, 0.09310001, 0.09310001, 5.69556373], [1516834620000, 0.0932, 0.09321225, 0.093, 0.093, 26.66150502], [1516834680000, 0.09320999, 0.09321225, 0.093, 0.09320999, 28.13866221], [1516834740000, 0.09320999, 0.09321225, 0.09320999, 0.09320999, 35.4968571], [1516834800000, 0.09321, 0.09321226, 0.093, 0.09321, 18.42012542], [1516834860000, 0.09321226, 0.09321229, 0.09321, 0.09321226, 3.93289786], [1516834920000, 0.09321226, 0.09321229, 0.09321, 0.09321228, 18.0445688], [1516834980000, 0.09321226, 0.09321228, 0.093, 0.093009, 8.69594425], [1516835040000, 0.09321228, 0.09321228, 0.093, 0.09321227, 5.16743315], [1516835100000, 0.093, 0.09321227, 0.093, 0.09321226, 5.13312994], [1516835160000, 0.09321226, 0.09321226, 0.09300001, 0.09321226, 3.45948341], [1516835220000, 0.09321226, 0.09321228, 0.09300002, 0.09321226, 18.42443526], [1516835280000, 0.09321226, 0.09321227, 0.0932, 0.09321226, 4.41243538], [1516835340000, 0.09321227, 0.09321227, 0.09300004, 0.09300005, 12.1883578], [1516835400000, 0.09300005, 0.09321227, 0.09300005, 0.09321227, 9.47721416], [1516835460000, 0.09320001, 0.09321228, 0.09320001, 0.09321228, 9.95557368], [1516835520000, 0.09321227, 0.09321227, 0.09320001, 0.09320001, 4.13794325], [1516835580000, 0.09321227, 0.09321227, 0.0932, 0.09321227, 11.51443973], [1516835640000, 0.09320002, 0.09321226, 0.0932, 0.09321226, 13.58748949], [1516835700000, 0.09321226, 0.09321226, 0.0932, 0.0932, 6.80412165], [1516835760000, 0.0932, 0.09321226, 0.0932, 0.0932, 7.00399584], [1516835820000, 0.09321226, 0.09321226, 0.0932, 0.0932, 25.85308347], [1516835880000, 0.0932, 0.0932, 0.09310001, 0.0931068, 56.12297727], [1516835940000, 0.0931068, 0.0932, 0.0931068, 0.0932, 32.4997277], [1516836000000, 0.0932, 0.0932, 0.09310001, 0.09319999, 23.98903148], [1516836060000, 0.09319999, 0.0932, 0.09319999, 0.0932, 3.42630703], [1516836120000, 0.0932, 0.0932, 0.09310002, 0.09310002, 7.07072185], [1516836180000, 0.0932, 0.0932, 0.09310001, 0.09310002, 12.2006485], [1516836240000, 0.09310002, 0.09310002, 0.09310001, 0.09310002, 19.35447921], [1516836300000, 0.09310002, 0.09321, 0.09270991, 0.09321, 80.37486497], [1516836360000, 0.09321, 0.09321226, 0.0932, 0.09321, 21.85703463], [1516836420000, 0.09321226, 0.09321226, 0.09294824, 0.09321226, 15.66734781], [1516836480000, 0.09321226, 0.09321229, 0.09304237, 0.09321229, 60.00337706], [1516836540000, 0.09321228, 0.09321228, 0.09304237, 0.09321223, 21.30341338], [1516836600000, 0.09321223, 0.09321229, 0.09302521, 0.09321229, 34.79692509], [1516836660000, 0.09321229, 0.09325, 0.09302524, 0.09325, 37.11294326], [1516836720000, 0.09324999, 0.09325, 0.09323455, 0.09325, 71.67219545], [1516836780000, 0.09325, 0.09325, 0.093235, 0.09325, 64.85107155], [1516836840000, 0.09325, 0.09329, 0.09323455, 0.09329, 57.68198816], [1516836900000, 0.09329, 0.09349997, 0.09325001, 0.09349997, 74.39819061], [1516836960000, 0.09349997, 0.09349997, 0.0934695, 0.0934898, 31.86699976], [1516837020000, 0.0934898, 0.09349997, 0.09346952, 0.09349997, 40.15289242], [1516837080000, 0.09349997, 0.09349997, 0.09346952, 0.09349997, 18.78531813], [1516837140000, 0.09346952, 0.09349997, 0.09346952, 0.09349997, 30.73960977], [1516837200000, 0.09349997, 0.09349998, 0.0934999, 0.09349997, 50.87207609], [1516837260000, 0.09349998, 0.09349998, 0.09349997, 0.09349998, 36.33949369], [1516837320000, 0.09349998, 0.09349998, 0.09349997, 0.09349998, 101.18286127], [1516837380000, 0.09349997, 0.09349998, 0.09349996, 0.09349998, 131.23181259], [1516837440000, 0.09349998, 0.09366744, 0.09349996, 0.09366744, 121.03660061], [1516837500000, 0.09366744, 0.09374074, 0.09364875, 0.09373706, 32.38477592], [1516837560000, 0.09373706, 0.09375, 0.09373, 0.093745, 22.4745306], [1516837620000, 0.093745, 0.09379447, 0.093745, 0.09379447, 54.07199082], [1516837680000, 0.09379447, 0.09398, 0.09378221, 0.09380964, 54.67235358], [1516837740000, 0.09380964, 0.09398, 0.09377104, 0.09377104, 42.80881635], [1516837800000, 0.09377104, 0.09398, 0.09377104, 0.09380966, 14.77543964], [1516837860000, 0.09397978, 0.0939836, 0.09380966, 0.09398116, 22.33455928], [1516837920000, 0.093978, 0.093999, 0.09380966, 0.09399, 22.66770191], [1516837980000, 0.09399001, 0.09399998, 0.09399001, 0.09399998, 24.35945543], [1516838040000, 0.09399998, 0.094, 0.09399905, 0.094, 31.02920464], [1516838100000, 0.094, 0.094, 0.09399001, 0.09399002, 57.56793493], [1516838160000, 0.094, 0.094, 0.09395168, 0.09395168, 43.0708867], [1516838220000, 0.09390598, 0.094, 0.09382, 0.09382, 63.29453692], [1516838280000, 0.09390598, 0.09390598, 0.09346951, 0.093523, 62.94796322], [1516838340000, 0.09348011, 0.09374499, 0.09270991, 0.09360707, 64.53508581], [1516838400000, 0.09364263, 0.09364263, 0.09277621, 0.09338417, 65.36599834], [1516838460000, 0.09338415, 0.09338415, 0.09287001, 0.09338395, 22.43684023], [1516838520000, 0.09338394, 0.09338395, 0.09287001, 0.09338001, 22.19998337], [1516838580000, 0.09338001, 0.09338393, 0.09300001, 0.09337532, 41.12237843], [1516838640000, 0.09337518, 0.09338006, 0.09287002, 0.09321508, 15.54783443], [1516838700000, 0.09321508, 0.09338393, 0.09321508, 0.09335198, 60.06879788], [1516838760000, 0.09335198, 0.09338392, 0.0933, 0.0933, 13.80601753], [1516838820000, 0.09331, 0.09338391, 0.09321508, 0.09321508, 7.91882535], [1516838880000, 0.09322508, 0.09338391, 0.09301502, 0.09321508, 17.58265124], [1516838940000, 0.09303362, 0.0933839, 0.093, 0.0931, 23.2639315], [1516839000000, 0.09321507, 0.09328968, 0.0931, 0.09328968, 10.96089579], [1516839060000, 0.0933839, 0.0933839, 0.092911, 0.0931, 26.24210563], [1516839120000, 0.0931, 0.09328967, 0.09290101, 0.09328887, 4.65982723], [1516839180000, 0.09328795, 0.09328795, 0.09289917, 0.09326444, 9.39270867], [1516839240000, 0.09326444, 0.0932831, 0.09290002, 0.09326384, 4.09691116], [1516839300000, 0.09326383, 0.09326383, 0.09289999, 0.0931, 7.87399828], [1516839360000, 0.0931, 0.09326189, 0.09290002, 0.09290002, 8.97389845], [1516839420000, 0.09290002, 0.09326189, 0.09290002, 0.09291503, 4.47129138], [1516839480000, 0.09293003, 0.0932432, 0.09291503, 0.09311502, 8.14982891], [1516839540000, 0.09311502, 0.09324319, 0.093, 0.0932042, 20.14037747], [1516839600000, 0.09320422, 0.09320422, 0.09313002, 0.09313002, 8.0362367], [1516839660000, 0.09313002, 0.09314502, 0.09311502, 0.09313003, 12.95268555], [1516839720000, 0.09314502, 0.0932042, 0.09313001, 0.0932042, 15.87768726], [1516839780000, 0.09313003, 0.0932042, 0.09313002, 0.0932042, 7.43752414], [1516839840000, 0.0931942, 0.0932042, 0.09313002, 0.09313002, 7.48459068], [1516839900000, 0.0932, 0.0932, 0.09291502, 0.09291502, 7.70090844], [1516839960000, 0.09313, 0.0932042, 0.09290002, 0.09320419, 25.9360787], [1516840020000, 0.09291502, 0.09320419, 0.09288, 0.09313, 21.49658901], [1516840080000, 0.09313, 0.09320419, 0.093, 0.09313, 8.89314672], [1516840140000, 0.09313, 0.09320419, 0.09313, 0.09313, 8.7204893], [1516840200000, 0.09313, 0.09320417, 0.09313, 0.09313002, 8.50581113], [1516840260000, 0.09313002, 0.09320416, 0.09313001, 0.09313001, 10.27348389], [1516840320000, 0.09313001, 0.09320415, 0.09313001, 0.09313001, 9.39008601], [1516840380000, 0.09313001, 0.09320415, 0.09313, 0.09313, 21.23602619], [1516840440000, 0.09313, 0.09320415, 0.09312, 0.09313, 6.30674649], [1516840500000, 0.09313, 0.09320415, 0.09300003, 0.09320415, 4.3085421], [1516840560000, 0.09320415, 0.09326189, 0.09300006, 0.09326189, 22.72292478], [1516840620000, 0.09326189, 0.09364264, 0.0931, 0.09333795, 16.74220132], [1516840680000, 0.09333795, 0.09334795, 0.0932, 0.0932, 11.91586427], [1516840740000, 0.09334795, 0.09334795, 0.0932, 0.09334795, 24.93017395], [1516840800000, 0.09333795, 0.09364264, 0.09310002, 0.09364195, 10.35150483], [1516840860000, 0.09364195, 0.09364261, 0.09334795, 0.09363995, 9.43094647], [1516840920000, 0.09358132, 0.09363999, 0.09334795, 0.09363999, 7.8494508], [1516840980000, 0.09358132, 0.09363999, 0.09334797, 0.09334797, 9.36242096], [1516841040000, 0.09360996, 0.09360996, 0.093348, 0.09335001, 4.70394211], [1516841100000, 0.09356996, 0.09357996, 0.093349, 0.0935699, 13.97905032], [1516841160000, 0.0935699, 0.09360996, 0.09334902, 0.09357999, 20.07227584], [1516841220000, 0.09360996, 0.09360996, 0.09334902, 0.09360996, 42.24402167], [1516841280000, 0.0935699, 0.09360996, 0.0935699, 0.09360992, 11.47784907], [1516841340000, 0.09360992, 0.09360996, 0.09334903, 0.09360996, 12.5424807], [1516841400000, 0.09360996, 0.09360996, 0.09334797, 0.09360996, 18.19178439], [1516841460000, 0.09360996, 0.09364264, 0.09335, 0.09364264, 12.9400579], [1516841520000, 0.09364, 0.09364264, 0.09363999, 0.09363999, 6.19576327], [1516841580000, 0.09363999, 0.09389999, 0.09335001, 0.09388997, 24.04796127], [1516841640000, 0.09388, 0.09388, 0.09335001, 0.09363, 31.4434985], [1516841700000, 0.09384, 0.09384, 0.09363, 0.09383896, 8.98035607], [1516841760000, 0.09383896, 0.09383896, 0.09363, 0.09383691, 18.43456689], [1516841820000, 0.09383691, 0.09383691, 0.09363, 0.09363001, 40.42074264], [1516841880000, 0.09363001, 0.09388, 0.09363, 0.09387895, 45.16762856], [1516841940000, 0.09363001, 0.09387994, 0.09363, 0.09363, 9.74286969], [1516842000000, 0.09363001, 0.09387994, 0.09363, 0.09363956, 46.9803393], [1516842060000, 0.09363956, 0.09363956, 0.09363, 0.09363956, 36.59978957], [1516842120000, 0.09363956, 0.09387962, 0.09363, 0.09387962, 7.63667802], [1516842180000, 0.09387962, 0.09388, 0.09363, 0.09388, 28.52721706], [1516842240000, 0.0936396, 0.09388, 0.09363, 0.09387994, 88.68129468], [1516842300000, 0.09387994, 0.094, 0.09363, 0.09387994, 65.98653116], [1516842360000, 0.09387994, 0.09387994, 0.09363, 0.09387983, 8.60307902], [1516842420000, 0.09387993, 0.094, 0.09363003, 0.09363003, 29.50805639], [1516842480000, 0.09363003, 0.094, 0.09363003, 0.0939, 12.89472792], [1516842540000, 0.09389, 0.094, 0.09388, 0.0939, 12.92932822], [1516842600000, 0.0939, 0.094, 0.0939, 0.0939, 1.30280245], [1516842660000, 0.0939, 0.094, 0.0939, 0.094, 30.4884184], [1516842720000, 0.094, 0.094, 0.09390005, 0.094, 7.4680433], [1516842780000, 0.094, 0.094, 0.09390007, 0.09390008, 50.05660222], [1516842840000, 0.0939001, 0.094, 0.0939001, 0.094, 17.12143118], [1516842900000, 0.094, 0.094, 0.0939, 0.09390011, 5.63962545], [1516842960000, 0.09390011, 0.094, 0.09390011, 0.093975, 10.64397629], [1516843020000, 0.09390012, 0.094, 0.0939001, 0.093975, 13.55981005], [1516843080000, 0.093975, 0.093975, 0.09390011, 0.093975, 9.29221646], [1516843140000, 0.093975, 0.093975, 0.0939, 0.0939, 16.55660984], [1516843200000, 0.093975, 0.093975, 0.0939, 0.093975, 7.75989874], [1516843260000, 0.093974, 0.093975, 0.093974, 0.093974, 8.68848491], [1516843320000, 0.093974, 0.093975, 0.09390901, 0.093974, 7.13809239], [1516843380000, 0.09397399, 0.093975, 0.09391904, 0.09391904, 15.40680358], [1516843440000, 0.093975, 0.093975, 0.09391904, 0.09391906, 2.11338995], [1516843500000, 0.09391906, 0.093975, 0.09391906, 0.093975, 6.90050642], [1516843560000, 0.093975, 0.093975, 0.0939191, 0.0939199, 5.16556842], [1516843620000, 0.0939199, 0.0939199, 0.0939191, 0.0939199, 36.29037628], [1516843680000, 0.0939199, 0.093975, 0.0939199, 0.0939349, 13.57975592], [1516843740000, 0.0939349, 0.094, 0.0939349, 0.093975, 23.5982963], [1516843800000, 0.094, 0.094, 0.093975, 0.09397501, 2.60637689], [1516843860000, 0.09398502, 0.094, 0.093975, 0.094, 21.75368489], [1516843920000, 0.093975, 0.0940117, 0.093975, 0.094, 72.48273108], [1516843980000, 0.09399999, 0.094, 0.093975, 0.094, 22.51061], [1516844040000, 0.093975, 0.094, 0.0939199, 0.09391991, 9.2886128], [1516844100000, 0.09391991, 0.094, 0.0939199, 0.0939199, 39.36403888], [1516844160000, 0.09399999, 0.094, 0.09390902, 0.09399997, 28.53492341], [1516844220000, 0.09399997, 0.09399997, 0.0939199, 0.0939199, 92.88081593], [1516844280000, 0.09399991, 0.09399991, 0.0939, 0.0939199, 171.54077492], [1516844340000, 0.09399986, 0.09399986, 0.0939, 0.0939, 17.96670854], [1516844400000, 0.09390999, 0.09391987, 0.0939, 0.09391987, 9.03221739], [1516844460000, 0.09391001, 0.0939199, 0.09391, 0.0939199, 13.29002766], [1516844520000, 0.0939199, 0.0939999, 0.09391987, 0.0939199, 13.88682249], [1516844580000, 0.09399988, 0.09399988, 0.09391995, 0.09399987, 3.61318281], [1516844640000, 0.09399987, 0.09399994, 0.09391996, 0.09399994, 27.46749707], [1516844700000, 0.09399994, 0.09399999, 0.09399986, 0.09399994, 25.72285173], [1516844760000, 0.09399999, 0.0941, 0.09399993, 0.09409999, 19.44943428], [1516844820000, 0.09409999, 0.09410001, 0.09409999, 0.0941, 33.09721166], [1516844880000, 0.0941, 0.09410001, 0.09409999, 0.09409999, 30.7670925], [1516844940000, 0.0941, 0.09410001, 0.09409999, 0.09410001, 17.75703996], [1516845000000, 0.09410001, 0.0942, 0.09410001, 0.0942, 8.80854746], [1516845060000, 0.09419194, 0.0943, 0.094146, 0.0943, 175.62149817], [1516845120000, 0.0943, 0.0943, 0.09429999, 0.09429999, 49.92622443], [1516845180000, 0.09429999, 0.0943, 0.094205, 0.09429999, 17.30680921], [1516845240000, 0.09420501, 0.09420501, 0.0941001, 0.0942, 8.6427821], [1516845300000, 0.0942, 0.0943, 0.0942, 0.0943, 47.60422943], [1516845360000, 0.0943, 0.0943, 0.0942, 0.0942, 12.30597861], [1516845420000, 0.09411, 0.09429998, 0.09411, 0.09411001, 7.78610247], [1516845480000, 0.09429993, 0.09429993, 0.094, 0.094, 109.38011758], [1516845540000, 0.094, 0.09410001, 0.0939, 0.09390003, 127.80319133], [1516845600000, 0.09390003, 0.09426938, 0.0939, 0.09390007, 62.70007955], [1516845660000, 0.09414159, 0.0943, 0.09390007, 0.09399391, 107.26553557], [1516845720000, 0.09399391, 0.09429999, 0.09399391, 0.09429999, 17.46773969], [1516845780000, 0.09429999, 0.09429999, 0.09400002, 0.09429997, 10.15893686], [1516845840000, 0.09429997, 0.09429997, 0.09400002, 0.09400007, 15.35370231], [1516845900000, 0.09429997, 0.09429999, 0.09400006, 0.09403716, 7.76774525], [1516845960000, 0.09400006, 0.0943, 0.09400006, 0.0943, 9.8009504], [1516846020000, 0.09429896, 0.09430001, 0.09402716, 0.09430001, 17.09530964], [1516846080000, 0.09430001, 0.09430001, 0.09402717, 0.09402717, 29.42617002], [1516846140000, 0.09407849, 0.0942, 0.09402717, 0.0940935, 28.65218051], [1516846200000, 0.0940935, 0.09429973, 0.094, 0.09429973, 25.41608497], [1516846260000, 0.09429973, 0.0943663, 0.09416997, 0.0943, 14.11203077], [1516846320000, 0.09436634, 0.09441829, 0.0943663, 0.0943663, 68.56932899], [1516846380000, 0.0943663, 0.09441829, 0.0943663, 0.0943663, 55.39050435], [1516846440000, 0.09441819, 0.09441819, 0.09417001, 0.0943663, 73.5540016], [1516846500000, 0.0943663, 0.09441829, 0.09416997, 0.09441819, 200.97297235], [1516846560000, 0.09441824, 0.09443484, 0.09441814, 0.09441814, 178.34280728], [1516846620000, 0.09441342, 0.09443482, 0.09417002, 0.09443482, 18.42630058], [1516846680000, 0.09441828, 0.0945, 0.09417005, 0.0945, 29.77630536], [1516846740000, 0.0945, 0.09459619, 0.0945, 0.09450009, 127.20505971], [1516846800000, 0.09455695, 0.09463999, 0.09417002, 0.09459999, 53.74499697], [1516846860000, 0.09459999, 0.09463995, 0.09441827, 0.09460001, 34.79550266], [1516846920000, 0.09460001, 0.0946399, 0.09460001, 0.09460003, 25.51315234], [1516846980000, 0.09460003, 0.09464796, 0.09460002, 0.09463989, 21.59383522], [1516847040000, 0.09464, 0.09464, 0.09443486, 0.09446392, 44.78316497], [1516847100000, 0.09451001, 0.09466996, 0.09443487, 0.09466525, 60.30644658], [1516847160000, 0.09448678, 0.09467301, 0.09448678, 0.09448703, 9.92238269], [1516847220000, 0.09462017, 0.09470715, 0.09462017, 0.09470715, 66.83212908], [1516847280000, 0.09470715, 0.09479999, 0.09448701, 0.09479999, 69.64186064], [1516847340000, 0.09479999, 0.09479999, 0.0946769, 0.09479999, 178.91508903], [1516847400000, 0.09473691, 0.09479999, 0.0945, 0.09465779, 137.8649547], [1516847460000, 0.09465779, 0.09479999, 0.09450003, 0.09465782, 23.01231841], [1516847520000, 0.094799, 0.09479999, 0.09465789, 0.094799, 26.27505324], [1516847580000, 0.094799, 0.09479999, 0.09479899, 0.09479999, 72.73659941], [1516847640000, 0.09479999, 0.094804, 0.09479999, 0.09479999, 25.88854152], [1516847700000, 0.09479999, 0.0948, 0.09465782, 0.094658, 16.01308644], [1516847760000, 0.094658, 0.09481103, 0.094658, 0.09481103, 58.94776146], [1516847820000, 0.09479984, 0.09481103, 0.09479984, 0.09481094, 162.56666464], [1516847880000, 0.09479984, 0.09481094, 0.09465789, 0.09465789, 83.09987433], [1516847940000, 0.09479985, 0.09481088, 0.09465789, 0.09481083, 11.03238708], [1516848000000, 0.09481083, 0.09481083, 0.09465789, 0.09481079, 25.66426545], [1516848060000, 0.0947, 0.09481088, 0.0947, 0.09481088, 19.58042837], [1516848120000, 0.09481094, 0.09482767, 0.09481088, 0.09482767, 43.35810504], [1516848180000, 0.09482765, 0.09482767, 0.094658, 0.094658, 78.75315721], [1516848240000, 0.094658, 0.09482767, 0.09465789, 0.09465789, 37.11086026], [1516848300000, 0.0946579, 0.0946579, 0.09417002, 0.09417002, 33.51774957], [1516848360000, 0.09424178, 0.09439999, 0.0939939, 0.09399392, 112.84151698], [1516848420000, 0.09399392, 0.09439997, 0.09390001, 0.09439984, 66.44023071], [1516848480000, 0.09439984, 0.09439984, 0.094, 0.094, 51.20306104], [1516848540000, 0.094, 0.09433195, 0.094, 0.09400011, 7.80911283], [1516848600000, 0.09400011, 0.09433195, 0.0939, 0.09433193, 118.85335575], [1516848660000, 0.09433193, 0.09433193, 0.094, 0.09433186, 5.75315073], [1516848720000, 0.09433185, 0.09433185, 0.09363007, 0.09380903, 39.54030495], [1516848780000, 0.09380903, 0.09427727, 0.09363007, 0.09427727, 62.89807391], [1516848840000, 0.09390069, 0.0944, 0.09390069, 0.0941989, 70.76744112], [1516848900000, 0.0941989, 0.0943318, 0.09409861, 0.09419888, 27.58012919], [1516848960000, 0.09419888, 0.09426514, 0.09405, 0.09409861, 39.11742723], [1516849020000, 0.09426492, 0.09426493, 0.09409861, 0.09409862, 11.89757036], [1516849080000, 0.09409862, 0.09426492, 0.09409862, 0.09426492, 52.88093442], [1516849140000, 0.09426492, 0.09434, 0.0940999, 0.09426511, 11.68033822], [1516849200000, 0.09426511, 0.09443999, 0.09426511, 0.0944399, 44.97581171], [1516849260000, 0.09426512, 0.0945, 0.09426511, 0.09426511, 16.47018167], [1516849320000, 0.09427536, 0.09443889, 0.09426511, 0.09443889, 28.6792834], [1516849380000, 0.0943, 0.09443889, 0.0942651, 0.09426511, 71.46185305], [1516849440000, 0.09426511, 0.0944399, 0.0942651, 0.09428011, 9.28905786], [1516849500000, 0.09428011, 0.0945, 0.09428011, 0.0942999, 9.35003838], [1516849560000, 0.09449999, 0.09450006, 0.0942999, 0.09450006, 13.19145622], [1516849620000, 0.09450003, 0.09458155, 0.0945, 0.0945151, 18.14231471], [1516849680000, 0.0945151, 0.0946798, 0.09450003, 0.0945001, 39.87387217], [1516849740000, 0.0945001, 0.09481087, 0.09409991, 0.09450004, 71.19299915], [1516849800000, 0.09450004, 0.094825, 0.0941, 0.094815, 473.03838376], [1516849860000, 0.094825, 0.09482767, 0.09481083, 0.09481083, 199.9871632], [1516849920000, 0.09481083, 0.09482516, 0.0941, 0.09479194, 40.34062189], [1516849980000, 0.09475, 0.09479195, 0.0941, 0.09451486, 22.4850821], [1516850040000, 0.09450485, 0.09451483, 0.09443576, 0.09443576, 8.3700946], [1516850100000, 0.09451482, 0.09451512, 0.09451482, 0.09451512, 111.80798802], [1516850160000, 0.09451482, 0.09473639, 0.09451482, 0.09451482, 51.28566844], [1516850220000, 0.09451482, 0.09451507, 0.09451482, 0.09451482, 43.08748585], [1516850280000, 0.09451482, 0.09451506, 0.09451482, 0.09451482, 42.71899404], [1516850340000, 0.094515, 0.094515, 0.09451482, 0.09451499, 45.22407013], [1516850400000, 0.09451499, 0.094515, 0.09451482, 0.09451482, 365.33888014], [1516850460000, 0.094515, 0.094515, 0.09451482, 0.09451482, 82.11843295], [1516850520000, 0.09451483, 0.09473637, 0.09451482, 0.09451482, 48.20386222], [1516850580000, 0.09473637, 0.09473637, 0.09451482, 0.09451482, 52.34157841], [1516850640000, 0.09473617, 0.09473617, 0.09451482, 0.09451482, 6.99225546], [1516850700000, 0.09451482, 0.09473601, 0.09451482, 0.09451482, 23.61486661], [1516850760000, 0.09451482, 0.09473593, 0.09451482, 0.09451482, 147.35467653], [1516850820000, 0.09451482, 0.0946412, 0.09443576, 0.0944358, 3.07358781], [1516850880000, 0.0944358, 0.09451482, 0.0944358, 0.0945, 21.95812789], [1516850940000, 0.0945, 0.09464115, 0.0945, 0.0945, 25.82428712], [1516851000000, 0.09461818, 0.09461818, 0.09443576, 0.0944358, 57.20077272], [1516851060000, 0.0944358, 0.09449999, 0.09422182, 0.09443172, 33.05472524], [1516851120000, 0.09422182, 0.09443576, 0.09422182, 0.09422191, 7.68276365], [1516851180000, 0.09422191, 0.094414, 0.09422191, 0.09422192, 2.00964383], [1516851240000, 0.09422191, 0.09422192, 0.09422183, 0.09422192, 17.70430194], [1516851300000, 0.09422184, 0.09422295, 0.09422183, 0.09422295, 2.97278874], [1516851360000, 0.09422295, 0.09449999, 0.09422192, 0.09449999, 11.0982257], [1516851420000, 0.09449999, 0.09449999, 0.09422182, 0.09449694, 21.0867758], [1516851480000, 0.09430001, 0.09449595, 0.09422182, 0.09431381, 18.65889236], [1516851540000, 0.09431381, 0.09431381, 0.09422182, 0.09422182, 12.48703511], [1516851600000, 0.09422185, 0.0945, 0.09422182, 0.09432881, 13.08492037], [1516851660000, 0.09432881, 0.0946181, 0.09426457, 0.09461809, 15.67998806], [1516851720000, 0.09461809, 0.0946181, 0.09426457, 0.094618, 14.65342084], [1516851780000, 0.09461799, 0.09461799, 0.09422182, 0.09422182, 8.35087731], [1516851840000, 0.09423183, 0.09461792, 0.09422183, 0.09461588, 8.27512028], [1516851900000, 0.09461, 0.09461809, 0.09422184, 0.09432184, 27.83590438], [1516851960000, 0.09461579, 0.09461579, 0.09451579, 0.09452579, 20.56052211], [1516852020000, 0.09451579, 0.09461579, 0.09451579, 0.0945158, 15.54289482], [1516852080000, 0.0945158, 0.09452579, 0.09432202, 0.09451585, 13.87861194], [1516852140000, 0.09443126, 0.09451585, 0.09422184, 0.09432202, 7.96150369], [1516852200000, 0.09432202, 0.09451585, 0.09422182, 0.09451585, 29.99773621], [1516852260000, 0.09451585, 0.09461579, 0.09422182, 0.09461579, 19.93476702], [1516852320000, 0.09461579, 0.09461579, 0.09451585, 0.09461577, 21.32760225], [1516852380000, 0.09452585, 0.09461579, 0.09426, 0.09452584, 45.44962494], [1516852440000, 0.09452584, 0.09461579, 0.09425, 0.09452584, 24.57182976], [1516852500000, 0.09452584, 0.09461579, 0.09452251, 0.094615, 18.74299904], [1516852560000, 0.094615, 0.09461579, 0.09452584, 0.09461579, 17.63726085], [1516852620000, 0.09461579, 0.09461579, 0.09452585, 0.09452586, 16.19999797], [1516852680000, 0.09452586, 0.09461566, 0.09452585, 0.09452586, 12.87477442], [1516852740000, 0.09461497, 0.09461579, 0.09452584, 0.09452584, 34.06797428], [1516852800000, 0.09452584, 0.09461579, 0.09452251, 0.09461579, 47.8499728], [1516852860000, 0.09461579, 0.09464126, 0.09422182, 0.09422183, 26.24490367], [1516852920000, 0.0945, 0.0947, 0.09422182, 0.0947, 17.26634076], [1516852980000, 0.09469527, 0.09473593, 0.09422182, 0.09422182, 32.96847428], [1516853040000, 0.09459733, 0.09459733, 0.09409862, 0.09409863, 7.94575526], [1516853100000, 0.09446299, 0.0944799, 0.09409862, 0.09409862, 9.15642091], [1516853160000, 0.094099, 0.09430662, 0.094099, 0.094099, 4.49664902], [1516853220000, 0.094099, 0.09430662, 0.094099, 0.09430661, 13.02775614], [1516853280000, 0.09430661, 0.09430662, 0.0943065, 0.09430661, 21.17399761], [1516853340000, 0.09430662, 0.09430662, 0.0942066, 0.09430661, 6.7392423], [1516853400000, 0.09430661, 0.09468987, 0.09409862, 0.09409962, 70.04249414], [1516853460000, 0.09461095, 0.09461095, 0.09409862, 0.09460795, 13.40234679], [1516853520000, 0.09460795, 0.09460895, 0.09409862, 0.09460695, 34.7476293], [1516853580000, 0.09460695, 0.09460695, 0.09409862, 0.09452946, 20.2622231], [1516853640000, 0.09452942, 0.09460495, 0.094529, 0.094529, 13.81781575], [1516853700000, 0.09452942, 0.09452942, 0.09409863, 0.09412, 6.51456742], [1516853760000, 0.09452892, 0.09452892, 0.09412, 0.09452889, 15.17434317], [1516853820000, 0.09452888, 0.09452888, 0.09414001, 0.0945288, 10.3237369], [1516853880000, 0.0945288, 0.09452942, 0.0945, 0.09452887, 74.20291809], [1516853940000, 0.09452887, 0.09460895, 0.0945288, 0.09452895, 94.78575572], [1516854000000, 0.0945288, 0.09461169, 0.0945288, 0.09453879, 74.33294792], [1516854060000, 0.09453879, 0.09468999, 0.0945288, 0.09468999, 9.82296354], [1516854120000, 0.09468998, 0.09468999, 0.0945288, 0.0945288, 26.50410232], [1516854180000, 0.0945288, 0.0945288, 0.09418001, 0.09445, 9.64109614], [1516854240000, 0.09444998, 0.0945288, 0.09418002, 0.09444998, 19.05459199], [1516854300000, 0.09444998, 0.0947364, 0.09444998, 0.09473638, 192.93990602], [1516854360000, 0.09473638, 0.0947364, 0.09444998, 0.09444998, 112.39671734], [1516854420000, 0.09444998, 0.09473635, 0.09444998, 0.09444998, 11.43578882], [1516854480000, 0.09473632, 0.09473633, 0.09444998, 0.09444998, 26.86057721], [1516854540000, 0.09444998, 0.09459527, 0.09418001, 0.09418002, 41.84354102], [1516854600000, 0.09418002, 0.09444892, 0.09418002, 0.09444892, 8.85676144], [1516854660000, 0.09444795, 0.09444892, 0.09418003, 0.09438002, 6.30073316], [1516854720000, 0.09438002, 0.09444892, 0.0942, 0.09438002, 25.16000611], [1516854780000, 0.09438002, 0.09444997, 0.09438002, 0.09444997, 9.21784013], [1516854840000, 0.09444892, 0.09444892, 0.09420001, 0.0944, 77.2197202], [1516854900000, 0.0944, 0.09444892, 0.09418001, 0.0944, 103.50182842], [1516854960000, 0.0942, 0.0944, 0.094, 0.09439896, 100.37972086], [1516855020000, 0.09439896, 0.0944, 0.09424241, 0.09439886, 30.32314019], [1516855080000, 0.09439886, 0.09444997, 0.094, 0.09424242, 52.50204263], [1516855140000, 0.09439896, 0.0944, 0.09400002, 0.09439796, 14.6649478], [1516855200000, 0.09439796, 0.09444998, 0.09426741, 0.09444998, 97.96503682], [1516855260000, 0.09444998, 0.09475, 0.09428241, 0.09446498, 44.49092214], [1516855320000, 0.09469617, 0.09469617, 0.09469616, 0.09469617, 3.79080951], [1516855380000, 0.09469617, 0.09475, 0.0944149, 0.09475, 22.08547743], [1516855440000, 0.09475, 0.09475, 0.0944149, 0.0944149, 7.74854343], [1516855500000, 0.09474, 0.09478, 0.09474, 0.09478, 21.28700693], [1516855560000, 0.09477, 0.09479, 0.0944149, 0.09479, 60.69658872], [1516855620000, 0.09478, 0.0948, 0.09439999, 0.09479, 16.34530277], [1516855680000, 0.09455, 0.09455, 0.09439999, 0.09449327, 33.5538594], [1516855740000, 0.09441616, 0.09481083, 0.09439999, 0.09481083, 15.75833419], [1516855800000, 0.09481082, 0.09494339, 0.09441616, 0.09481129, 78.68560887], [1516855860000, 0.09481083, 0.09481083, 0.09441616, 0.09481078, 8.55931126], [1516855920000, 0.09461348, 0.09494339, 0.09461348, 0.09480075, 106.64638785], [1516855980000, 0.09480075, 0.09494338, 0.09470818, 0.09470819, 74.17527468], [1516856040000, 0.09470819, 0.09492315, 0.09470818, 0.0947082, 11.78129817], [1516856100000, 0.09470818, 0.0947082, 0.09470818, 0.0947082, 6.61682151], [1516856160000, 0.09470819, 0.0947082, 0.09470723, 0.09470723, 11.61338733], [1516856220000, 0.09470723, 0.0947082, 0.09461348, 0.09461348, 14.76462736], [1516856280000, 0.09470818, 0.09490994, 0.09461348, 0.0949099, 64.75738703], [1516856340000, 0.0947, 0.09490989, 0.0947, 0.0947, 4.22451829], [1516856400000, 0.09461348, 0.09469999, 0.09461348, 0.09461348, 15.87136965], [1516856460000, 0.0947, 0.0947, 0.09461348, 0.09461348, 11.05187495], [1516856520000, 0.09461348, 0.09461348, 0.09440001, 0.09440001, 24.86197782], [1516856580000, 0.09440001, 0.09459583, 0.09439989, 0.09439989, 10.65738731], [1516856640000, 0.09459583, 0.0947, 0.09459582, 0.09469999, 12.13436193], [1516856700000, 0.09469999, 0.0947, 0.09439989, 0.09439989, 15.57420389], [1516856760000, 0.09469998, 0.09469998, 0.09439891, 0.09439891, 66.3142038], [1516856820000, 0.09439892, 0.09439892, 0.09403527, 0.09403528, 111.03863937], [1516856880000, 0.09439, 0.09469995, 0.09400002, 0.09469892, 45.80050309], [1516856940000, 0.09469893, 0.09469894, 0.09439002, 0.09447002, 14.48112971], [1516857000000, 0.09447002, 0.09469995, 0.09439002, 0.09447002, 8.62582205], [1516857060000, 0.09469695, 0.09469695, 0.09447002, 0.09447099, 16.35478089], [1516857120000, 0.09447099, 0.09447099, 0.09439, 0.09439, 48.40326897], [1516857180000, 0.09439, 0.09447099, 0.09439, 0.09447099, 16.12734072], [1516857240000, 0.09447099, 0.09469692, 0.0944, 0.0944, 23.88706701], [1516857300000, 0.09469, 0.09469, 0.09447099, 0.09468999, 0.6411053], [1516857360000, 0.09447099, 0.09468998, 0.09447099, 0.0945, 20.86708711], [1516857420000, 0.0945, 0.0945, 0.0944, 0.09447, 10.07388024], [1516857480000, 0.09447, 0.09447097, 0.0944, 0.09440486, 20.20974256], [1516857540000, 0.09447097, 0.09447097, 0.09440501, 0.09440501, 17.8540584], [1516857600000, 0.09440502, 0.09447097, 0.09440502, 0.09440502, 0.43560775], [1516857660000, 0.09440502, 0.0944705, 0.09440501, 0.0944705, 17.26093648], [1516857720000, 0.0944705, 0.0944705, 0.09440501, 0.09447049, 7.52633843], [1516857780000, 0.09447049, 0.0944705, 0.09440501, 0.09441, 6.61774212], [1516857840000, 0.09441, 0.09447, 0.09439, 0.09439, 37.59594016], [1516857900000, 0.09439, 0.09447097, 0.09439, 0.09447097, 41.45926268], [1516857960000, 0.09447097, 0.0945, 0.09439001, 0.0945, 15.26545311], [1516858020000, 0.0945, 0.0945, 0.094483, 0.094483, 1.62658969], [1516858080000, 0.094483, 0.094483, 0.09439001, 0.09439001, 25.02571519], [1516858140000, 0.094483, 0.0945, 0.09439001, 0.0945, 25.000921], [1516858200000, 0.0945, 0.0946, 0.094483, 0.0946, 11.52819801], [1516858260000, 0.09448311, 0.0946, 0.09448299, 0.09448299, 5.62918524], [1516858320000, 0.09448299, 0.09448311, 0.09439, 0.09448311, 6.69143573], [1516858380000, 0.0944815, 0.094525, 0.09439, 0.09448374, 20.88026236], [1516858440000, 0.09448374, 0.094525, 0.09439, 0.09439, 46.55135371], [1516858500000, 0.09439, 0.094525, 0.09439, 0.09448296, 10.9669559], [1516858560000, 0.0945, 0.094525, 0.09448296, 0.09450001, 8.03765906], [1516858620000, 0.094525, 0.09459997, 0.094525, 0.09459997, 35.35692306], [1516858680000, 0.09459997, 0.09467999, 0.094525, 0.094525, 52.5171639], [1516858740000, 0.09461497, 0.0947, 0.094525, 0.09467997, 27.27371763], [1516858800000, 0.09453, 0.09467894, 0.09439, 0.094614, 69.88362293], [1516858860000, 0.094614, 0.09467999, 0.09439, 0.09461495, 64.38870555], [1516858920000, 0.09461495, 0.0947, 0.09461495, 0.09461495, 65.57961118], [1516858980000, 0.09461496, 0.0947, 0.09461495, 0.09461495, 62.0776587], [1516859040000, 0.0947, 0.0947, 0.09461495, 0.09461495, 56.33794975], [1516859100000, 0.0946999, 0.0946999, 0.09461495, 0.0946995, 3.98047875], [1516859160000, 0.09469979, 0.09469988, 0.09461495, 0.09469941, 33.52764148], [1516859220000, 0.09469941, 0.09469941, 0.09461495, 0.09461495, 43.92432096], [1516859280000, 0.09461495, 0.0946994, 0.09461495, 0.09461495, 62.64902316], [1516859340000, 0.09461495, 0.09469941, 0.09461495, 0.09461495, 10.42292209], [1516859400000, 0.094699, 0.0946994, 0.09461495, 0.09461495, 35.16655026], [1516859460000, 0.09461495, 0.09469941, 0.09461495, 0.09469941, 119.01582071], [1516859520000, 0.0946994, 0.09469941, 0.0946994, 0.0946994, 69.89077688], [1516859580000, 0.0946994, 0.09478149, 0.0946994, 0.09469988, 85.91104234], [1516859640000, 0.09469988, 0.09489986, 0.09469988, 0.09478149, 284.47107365], [1516859700000, 0.09478149, 0.09489986, 0.09469988, 0.09478149, 184.34210224], [1516859760000, 0.09469988, 0.09470988, 0.09469988, 0.0947, 116.43069242], [1516859820000, 0.09469988, 0.0947, 0.09469988, 0.09469988, 100.57163975], [1516859880000, 0.09469988, 0.09476, 0.09469988, 0.09469988, 94.72329207], [1516859940000, 0.09469988, 0.09475999, 0.09469988, 0.09469988, 48.42461414], [1516860000000, 0.09469988, 0.09475997, 0.09462001, 0.09462001, 209.29436623], [1516860060000, 0.09462001, 0.09469941, 0.09461495, 0.09462001, 26.52801798], [1516860120000, 0.09462001, 0.09462001, 0.09439, 0.09439, 8.18195933], [1516860180000, 0.09459999, 0.09459999, 0.09439, 0.09439, 83.88184305], [1516860240000, 0.09439, 0.09459785, 0.09439, 0.09459592, 41.38569412], [1516860300000, 0.09459585, 0.09459588, 0.09439, 0.09439, 39.76526748], [1516860360000, 0.09442001, 0.09459396, 0.09439, 0.094588, 29.9387685], [1516860420000, 0.094588, 0.094588, 0.09439, 0.09458694, 208.80293718], [1516860480000, 0.09458694, 0.09459476, 0.09439, 0.09439, 150.78560884], [1516860540000, 0.0944, 0.0944, 0.09439, 0.09439999, 77.40265085], [1516860600000, 0.09439999, 0.09440501, 0.09439, 0.09439003, 28.62078299], [1516860660000, 0.09439003, 0.09439003, 0.09439, 0.09439003, 18.62695064], [1516860720000, 0.09439003, 0.09439003, 0.0942, 0.09432, 76.99798849], [1516860780000, 0.09432, 0.09432, 0.0942, 0.0942, 27.10859875], [1516860840000, 0.09429999, 0.09431998, 0.0942, 0.09429999, 2.98151228], [1516860900000, 0.09429999, 0.09429999, 0.09418001, 0.09429, 28.57994764], [1516860960000, 0.09429, 0.09429999, 0.09426336, 0.09429999, 12.20213765], [1516861020000, 0.09429999, 0.09429999, 0.09423, 0.09426337, 60.62353846], [1516861080000, 0.09426337, 0.09429999, 0.09423002, 0.09423067, 43.54993424], [1516861140000, 0.09423067, 0.09429999, 0.09418, 0.09429999, 43.15201834], [1516861200000, 0.09429999, 0.09429999, 0.0941, 0.09416669, 42.42526115], [1516861260000, 0.09429999, 0.09429999, 0.0941, 0.09429997, 36.78051352], [1516861320000, 0.09429997, 0.0945, 0.09429997, 0.09449998, 13.82627829], [1516861380000, 0.09429999, 0.09469696, 0.09416667, 0.09430013, 47.99888814], [1516861440000, 0.09430013, 0.09459388, 0.09430013, 0.0944, 11.43630315], [1516861500000, 0.09453894, 0.09453894, 0.0942, 0.09453803, 34.30160023], [1516861560000, 0.09452, 0.09453797, 0.09416667, 0.09449776, 24.31971408], [1516861620000, 0.09449776, 0.09449776, 0.09415169, 0.09448985, 23.37832038], [1516861680000, 0.09448985, 0.09448985, 0.0941517, 0.0941517, 29.81103195], [1516861740000, 0.0941517, 0.09447, 0.0941517, 0.09442885, 51.94750662], [1516861800000, 0.09442885, 0.09442885, 0.09424587, 0.09442793, 12.61132075], [1516861860000, 0.09442793, 0.09442793, 0.09415171, 0.09415171, 6.29219096], [1516861920000, 0.09424586, 0.09435001, 0.09415171, 0.09434999, 37.59239401], [1516861980000, 0.09434998, 0.09434998, 0.09401502, 0.09432982, 16.92192482], [1516862040000, 0.09432975, 0.09432982, 0.0940379, 0.09432793, 39.43003583], [1516862100000, 0.0942, 0.09429995, 0.0940379, 0.09429895, 18.22451882], [1516862160000, 0.0941, 0.09429993, 0.0941, 0.09429, 20.7540944], [1516862220000, 0.09428993, 0.0943, 0.0942833, 0.09429993, 41.37004716], [1516862280000, 0.09429993, 0.09432, 0.0942833, 0.094315, 23.79049633], [1516862340000, 0.094315, 0.09433, 0.0942833, 0.09429, 23.9648896], [1516862400000, 0.094315, 0.09441999, 0.0942833, 0.09431231, 8.66572278], [1516862460000, 0.09441986, 0.09441986, 0.0942833, 0.09440788, 13.39459359], [1516862520000, 0.09440787, 0.09447, 0.09432997, 0.09447, 17.70291022], [1516862580000, 0.09447, 0.0945, 0.09440788, 0.0944199, 7.8580499], [1516862640000, 0.0944199, 0.0944199, 0.09420003, 0.09420004, 23.1318511], [1516862700000, 0.0944078, 0.09440784, 0.0942, 0.0942, 4.19784486], [1516862760000, 0.09440779, 0.09440779, 0.0942, 0.0942, 4.97732892], [1516862820000, 0.09440778, 0.09440778, 0.09440778, 0.09440778, 1.76256283], [1516862880000, 0.09440778, 0.09440779, 0.0942, 0.09422002, 42.8803395], [1516862940000, 0.09440778, 0.0945, 0.0942, 0.09431433, 49.05476287], [1516863000000, 0.09431433, 0.0945, 0.09411523, 0.09449996, 26.09417677], [1516863060000, 0.09449996, 0.09449997, 0.09411524, 0.09412525, 13.80003711], [1516863120000, 0.09412525, 0.09448, 0.0941, 0.09446995, 34.21127379], [1516863180000, 0.09446895, 0.09446895, 0.09410001, 0.09440762, 33.47143583], [1516863240000, 0.09421941, 0.0944068, 0.09399885, 0.09412527, 123.96220451], [1516863300000, 0.09412527, 0.09446891, 0.0939, 0.094117, 95.28308879], [1516863360000, 0.094117, 0.09449999, 0.09369999, 0.09386501, 59.13429983], [1516863420000, 0.09449989, 0.0944999, 0.09386501, 0.09449474, 13.83627127], [1516863480000, 0.09407501, 0.09449467, 0.09386511, 0.09407501, 40.74299595], [1516863540000, 0.09407501, 0.09449459, 0.09386511, 0.09386518, 30.20487835], [1516863600000, 0.09386519, 0.09448441, 0.09386519, 0.09416986, 20.04770983], [1516863660000, 0.09416986, 0.09418486, 0.09416899, 0.09416985, 10.47298902], [1516863720000, 0.094169, 0.09445971, 0.094169, 0.09441894, 27.17434484], [1516863780000, 0.09441894, 0.09441894, 0.09391773, 0.09402703, 23.51091542], [1516863840000, 0.09393273, 0.09416984, 0.09386511, 0.09404203, 15.34586119], [1516863900000, 0.09404203, 0.09441995, 0.09404199, 0.09404203, 14.08473541], [1516863960000, 0.09404203, 0.09404203, 0.09397398, 0.09397398, 10.86089292], [1516864020000, 0.094027, 0.09402702, 0.09397398, 0.09402701, 37.7256804], [1516864080000, 0.09402701, 0.09402702, 0.09401, 0.09402701, 13.93885735], [1516864140000, 0.094027, 0.09402701, 0.094027, 0.094027, 8.46170626], [1516864200000, 0.094027, 0.09441841, 0.09402, 0.09402, 100.9880986], [1516864260000, 0.09402, 0.0944184, 0.0939741, 0.09397415, 134.70927311], [1516864320000, 0.09438831, 0.09439799, 0.09364999, 0.0940208, 78.7538562], [1516864380000, 0.0940208, 0.0943197, 0.09364999, 0.093718, 5.81500958], [1516864440000, 0.093718, 0.09431485, 0.093718, 0.09428121, 9.93362426], [1516864500000, 0.09428121, 0.09428121, 0.09371803, 0.09371803, 4.28853781], [1516864560000, 0.09428116, 0.09444, 0.09371803, 0.09372, 49.91964935], [1516864620000, 0.094, 0.09402957, 0.09372, 0.09375, 12.74400271], [1516864680000, 0.09387479, 0.09402957, 0.093721, 0.09402926, 45.94507583], [1516864740000, 0.09402926, 0.09402926, 0.093721, 0.093721, 18.89046277], [1516864800000, 0.093721, 0.09401956, 0.093721, 0.094019, 3.17338784], [1516864860000, 0.093975, 0.09401895, 0.093721, 0.0940186, 10.33121147], [1516864920000, 0.09401855, 0.0940186, 0.093721, 0.09400985, 39.14645998], [1516864980000, 0.09400978, 0.09400978, 0.09372111, 0.09400949, 3.38352156], [1516865040000, 0.09372111, 0.09400944, 0.0935, 0.0940091, 92.41389251], [1516865100000, 0.0940091, 0.09401, 0.0936101, 0.09379621, 11.3206217], [1516865160000, 0.09379621, 0.09379621, 0.0935663, 0.09379621, 15.20857804], [1516865220000, 0.09356631, 0.09379621, 0.09356631, 0.09379621, 10.53467649], [1516865280000, 0.09379621, 0.09379621, 0.0936, 0.09361, 45.18421581], [1516865340000, 0.09379621, 0.0940091, 0.0936, 0.0940091, 14.61525098], [1516865400000, 0.0940091, 0.0940091, 0.093625, 0.09364, 5.61469957], [1516865460000, 0.09400519, 0.09401998, 0.09390643, 0.09390643, 12.93247054], [1516865520000, 0.09401998, 0.09401998, 0.09390643, 0.09401998, 17.02149661], [1516865580000, 0.09401998, 0.09435998, 0.09390643, 0.09435992, 30.90884481], [1516865640000, 0.09435992, 0.09435993, 0.094, 0.09435988, 18.46214692], [1516865700000, 0.09435988, 0.09435998, 0.094, 0.094, 12.23931733], [1516865760000, 0.09435995, 0.09435995, 0.094, 0.094, 4.44393827], [1516865820000, 0.09435699, 0.09435699, 0.094, 0.094, 4.00376477], [1516865880000, 0.094, 0.09431989, 0.094, 0.09430991, 2.27046282], [1516865940000, 0.09430991, 0.09435, 0.094, 0.0943099, 15.05362149], [1516866000000, 0.0942999, 0.09429999, 0.09390643, 0.09390643, 48.84298096], [1516866060000, 0.094, 0.094, 0.09384016, 0.09384016, 22.01776299], [1516866120000, 0.094, 0.094, 0.0938, 0.09381588, 9.69274699], [1516866180000, 0.0939999, 0.09429986, 0.0939999, 0.094, 28.22418356], [1516866240000, 0.09429983, 0.09429983, 0.09400001, 0.0941, 67.66427639], [1516866300000, 0.0941, 0.09429977, 0.094, 0.09429969, 36.01266878], [1516866360000, 0.09410001, 0.09429967, 0.09410001, 0.09429967, 13.13591171], [1516866420000, 0.09410001, 0.09429965, 0.09382739, 0.09382739, 27.22985703], [1516866480000, 0.094, 0.09409995, 0.0938, 0.09381597, 39.75431662], [1516866540000, 0.09381597, 0.09408797, 0.0938, 0.09383, 3.8467438], [1516866600000, 0.09407796, 0.0941, 0.09383, 0.09394497, 32.35158974], [1516866660000, 0.09383002, 0.09394493, 0.0938, 0.0938, 59.23094768], [1516866720000, 0.09389999, 0.0939, 0.093625, 0.09383, 67.26632084], [1516866780000, 0.09383, 0.09394497, 0.093625, 0.09380005, 42.67584189], [1516866840000, 0.09394497, 0.09394497, 0.093626, 0.09393, 9.46824418], [1516866900000, 0.09393, 0.09394497, 0.093626, 0.09392999, 40.2650212], [1516866960000, 0.09392999, 0.09394497, 0.093626, 0.09394495, 4.2587915], [1516867020000, 0.09394495, 0.09394497, 0.09362606, 0.09394497, 25.47820352], [1516867080000, 0.09394497, 0.09394497, 0.09386468, 0.09386468, 11.77244108], [1516867140000, 0.09386468, 0.09394497, 0.0937737, 0.0937737, 15.14415271], [1516867200000, 0.0937737, 0.09394508, 0.0937737, 0.09394497, 17.86499348], [1516867260000, 0.0937737, 0.09394497, 0.0937737, 0.09394497, 3.15269887], [1516867320000, 0.09394508, 0.09394508, 0.09394497, 0.09394498, 7.05925152], [1516867380000, 0.09394498, 0.09394508, 0.0937, 0.09394508, 37.50387374], [1516867440000, 0.09394508, 0.09394508, 0.09394508, 0.09394508, 19.68904817], [1516867500000, 0.09394507, 0.09394508, 0.0938, 0.09394508, 2.03131793], [1516867560000, 0.09394508, 0.09399999, 0.0938, 0.0939, 18.60819551], [1516867620000, 0.09399999, 0.094, 0.0939, 0.0939, 26.56115148], [1516867680000, 0.093999, 0.094, 0.0937, 0.0938, 37.41934342], [1516867740000, 0.0938, 0.094, 0.0937, 0.093711, 12.06299381], [1516867800000, 0.09394508, 0.09399899, 0.09394508, 0.09394508, 5.90730196], [1516867860000, 0.09394509, 0.09399899, 0.0937, 0.0937, 60.39954684], [1516867920000, 0.09370256, 0.09399896, 0.09357899, 0.09381436, 34.79430933], [1516867980000, 0.09399896, 0.09399896, 0.0936, 0.0936, 9.53061063], [1516868040000, 0.09397893, 0.09399893, 0.0936, 0.09397995, 11.29499895], [1516868100000, 0.0936, 0.09397997, 0.0935, 0.0935, 26.69484012], [1516868160000, 0.0935, 0.09399897, 0.09344497, 0.0935, 78.98501426], [1516868220000, 0.09373903, 0.09399897, 0.0935, 0.09350001, 74.15291691], [1516868280000, 0.09350001, 0.09397994, 0.09350001, 0.09350002, 25.50714282], [1516868340000, 0.09350001, 0.09399997, 0.0935, 0.09350006, 16.70301659], [1516868400000, 0.09350005, 0.09397, 0.0935, 0.0935301, 13.52485686], [1516868460000, 0.09385234, 0.09396987, 0.0935, 0.0935, 8.4361011], [1516868520000, 0.0935, 0.094, 0.09344498, 0.0934746, 44.09327338], [1516868580000, 0.09386297, 0.0939, 0.0934746, 0.093848, 13.36606456], [1516868640000, 0.09385799, 0.093858, 0.0934746, 0.093848, 18.96661027], [1516868700000, 0.093848, 0.0939, 0.0935, 0.0935, 45.49629608], [1516868760000, 0.09389, 0.09399999, 0.09379999, 0.0938, 19.47983571], [1516868820000, 0.0938, 0.09415285, 0.0934746, 0.09396528, 48.0047351], [1516868880000, 0.09396528, 0.09396528, 0.0934746, 0.09347461, 21.1796932], [1516868940000, 0.09395525, 0.09395527, 0.0934746, 0.09395527, 14.61740857], [1516869000000, 0.09347461, 0.09395518, 0.09347461, 0.09347461, 3.31647728], [1516869060000, 0.09347462, 0.09393992, 0.09347462, 0.09392994, 1.78293937], [1516869120000, 0.09392896, 0.09392896, 0.09348967, 0.09392896, 13.09249631], [1516869180000, 0.09392896, 0.09392896, 0.09348967, 0.09375514, 12.96887196], [1516869240000, 0.09375514, 0.09392896, 0.09375514, 0.0937552, 19.57127946], [1516869300000, 0.0937552, 0.09392896, 0.09375514, 0.09375514, 18.23425844], [1516869360000, 0.09392889, 0.0939289, 0.09347466, 0.0937552, 45.0110539], [1516869420000, 0.0937552, 0.0939289, 0.09368951, 0.0937708, 7.15810507], [1516869480000, 0.0937708, 0.0939552, 0.09347462, 0.09395519, 22.8842808], [1516869540000, 0.0937858, 0.09395519, 0.0937708, 0.0937708, 10.09428839], [1516869600000, 0.09395519, 0.09395519, 0.0937708, 0.09394516, 10.0905209], [1516869660000, 0.0937708, 0.09393512, 0.09347464, 0.09392505, 9.65353634], [1516869720000, 0.09392505, 0.09392505, 0.09351196, 0.09351217, 2.05386807], [1516869780000, 0.09392495, 0.09392499, 0.09351221, 0.09351245, 6.10955782], [1516869840000, 0.09391499, 0.09392499, 0.09351245, 0.09392499, 38.41644603], [1516869900000, 0.09392499, 0.09392499, 0.09351234, 0.09392497, 4.59291875], [1516869960000, 0.09392497, 0.09392497, 0.09351234, 0.09389992, 19.27844121], [1516870020000, 0.09389992, 0.09389992, 0.09351234, 0.09389986, 12.23192738], [1516870080000, 0.09373, 0.09389983, 0.0937, 0.0937, 4.1799575], [1516870140000, 0.0937, 0.09389957, 0.0937, 0.0937, 9.46405885], [1516870200000, 0.09370001, 0.09389496, 0.09352, 0.09369985, 25.48206564], [1516870260000, 0.09369985, 0.09389275, 0.093513, 0.093513, 59.12240725], [1516870320000, 0.093513, 0.09389929, 0.09351234, 0.09389928, 47.41066431], [1516870380000, 0.093894, 0.09389928, 0.09351234, 0.09351234, 6.47296684], [1516870440000, 0.09389889, 0.09389889, 0.09388889, 0.0938981, 3.48082103], [1516870500000, 0.0938981, 0.09389889, 0.09351235, 0.09389889, 6.4222298], [1516870560000, 0.09389889, 0.09389889, 0.0938981, 0.09389889, 22.07787966], [1516870620000, 0.09389889, 0.09389889, 0.0938981, 0.09389889, 43.43202873], [1516870680000, 0.09389889, 0.09389889, 0.09351236, 0.09389884, 18.97703359], [1516870740000, 0.09389887, 0.09389889, 0.0936, 0.09389888, 3.57528594], [1516870800000, 0.09389888, 0.09389889, 0.09389888, 0.09389888, 1.3591096], [1516870860000, 0.0938988, 0.0938988, 0.09389878, 0.09389878, 5.23804377], [1516870920000, 0.0937, 0.09389878, 0.09360001, 0.09360001, 52.39778834], [1516870980000, 0.0938987, 0.0938987, 0.0936, 0.0936, 17.63472694], [1516871040000, 0.0936, 0.09389865, 0.09351244, 0.09351244, 14.39243051], [1516871100000, 0.0937, 0.0937, 0.09351234, 0.09351235, 30.90179072], [1516871160000, 0.09351236, 0.09369998, 0.0935, 0.09351236, 39.6190155], [1516871220000, 0.09351236, 0.09369994, 0.09347461, 0.09354236, 20.46422393], [1516871280000, 0.09369991, 0.09369991, 0.09347461, 0.09369987, 14.17770936], [1516871340000, 0.09369987, 0.09389861, 0.09352, 0.09389859, 18.27687411], [1516871400000, 0.09389858, 0.09389859, 0.09352, 0.09363241, 5.6775804], [1516871460000, 0.09386531, 0.09386531, 0.093521, 0.09352101, 7.32952801], [1516871520000, 0.09352101, 0.0938053, 0.09352101, 0.09353601, 9.25283368], [1516871580000, 0.09374999, 0.09374999, 0.09353601, 0.09374, 3.76465698], [1516871640000, 0.09374, 0.09374999, 0.09353601, 0.09353601, 16.59215738], [1516871700000, 0.09352101, 0.09375, 0.09352101, 0.0937299, 8.13058635], [1516871760000, 0.09372991, 0.09375, 0.09352101, 0.09352101, 71.50523106], [1516871820000, 0.0935206, 0.09372984, 0.09347461, 0.09347461, 153.73272793], [1516871880000, 0.09352, 0.09353499, 0.09344497, 0.09351999, 23.58997793], [1516871940000, 0.09351999, 0.09351999, 0.093465, 0.09351999, 15.38681394], [1516872000000, 0.09351999, 0.09372987, 0.09351998, 0.09351999, 13.249164], [1516872060000, 0.09372986, 0.09372986, 0.09351999, 0.09361999, 14.18243236], [1516872120000, 0.09362, 0.09372984, 0.09351998, 0.0935687, 13.22502803], [1516872180000, 0.0937298, 0.09372987, 0.0935687, 0.09356871, 21.96505802], [1516872240000, 0.09356871, 0.09372987, 0.09356871, 0.09356872, 22.47854401], [1516872300000, 0.09372985, 0.09372987, 0.09351998, 0.09372987, 61.25693086], [1516872360000, 0.09372987, 0.09372987, 0.09351998, 0.09371677, 7.35510081], [1516872420000, 0.0936, 0.09372987, 0.0936, 0.09372974, 50.0993294], [1516872480000, 0.0936, 0.09372974, 0.09351998, 0.0936, 1.05825924], [1516872540000, 0.0936, 0.09372505, 0.09351998, 0.09372505, 4.93363163], [1516872600000, 0.09372505, 0.09372986, 0.09351531, 0.09353031, 17.95453155], [1516872660000, 0.09353031, 0.09372964, 0.0934, 0.09351531, 13.27185928], [1516872720000, 0.09351524, 0.09372987, 0.09345001, 0.09372987, 18.17838776], [1516872780000, 0.09372987, 0.09372987, 0.09353, 0.09353029, 5.16224707], [1516872840000, 0.09353029, 0.09372987, 0.09353029, 0.09372987, 5.3130801], [1516872900000, 0.09354529, 0.09375, 0.09354529, 0.09372988, 40.94812819], [1516872960000, 0.09375, 0.09375, 0.0935453, 0.09372987, 6.56052065], [1516873020000, 0.09372986, 0.09374999, 0.09354529, 0.09374998, 10.87462601], [1516873080000, 0.09374998, 0.09374998, 0.09351531, 0.09354529, 7.7532949], [1516873140000, 0.09374998, 0.09374998, 0.09337453, 0.09338913, 45.27873732], [1516873200000, 0.09374998, 0.09374998, 0.09340001, 0.09374998, 2.29218574], [1516873260000, 0.09374998, 0.09374998, 0.09338914, 0.09365167, 19.23543664], [1516873320000, 0.0937453, 0.09374998, 0.09365167, 0.09374998, 9.65518997], [1516873380000, 0.09374998, 0.09374998, 0.09365167, 0.09374998, 5.32075893], [1516873440000, 0.09374998, 0.09374998, 0.09368168, 0.09374998, 3.60131808], [1516873500000, 0.09374995, 0.09374999, 0.09374994, 0.09374998, 13.35247043], [1516873560000, 0.09374998, 0.09374999, 0.09374994, 0.09374999, 7.1298651], [1516873620000, 0.09374999, 0.09374999, 0.09374994, 0.09374998, 17.88373158], [1516873680000, 0.09374998, 0.09375, 0.09368168, 0.09368168, 14.81821892], [1516873740000, 0.09375, 0.09375, 0.09334795, 0.09368169, 54.43150536], [1516873800000, 0.09368169, 0.09374999, 0.09334795, 0.09374999, 8.67813362], [1516873860000, 0.09374999, 0.09375, 0.09334795, 0.09366929, 14.40946826], [1516873920000, 0.09366929, 0.09375, 0.09334796, 0.09375, 21.96318476], [1516873980000, 0.09375, 0.09375, 0.09374999, 0.09375, 11.89138032], [1516874040000, 0.09375, 0.0938, 0.09337005, 0.0938, 28.00914333], [1516874100000, 0.0938, 0.09384141, 0.0935168, 0.0938, 46.26130722], [1516874160000, 0.09384141, 0.0939, 0.0938, 0.0939, 29.91227564], [1516874220000, 0.0938, 0.0939, 0.09351728, 0.0939, 13.89473565], [1516874280000, 0.0939, 0.09396529, 0.09387, 0.09396529, 39.75704926], [1516874340000, 0.09396529, 0.09399999, 0.09393997, 0.09396529, 5.6668239], [1516874400000, 0.09399998, 0.0941529, 0.09396529, 0.09399999, 12.52846213], [1516874460000, 0.0941529, 0.09422675, 0.0941529, 0.09422675, 7.99473443], [1516874520000, 0.0942, 0.09428897, 0.0939654, 0.09428897, 9.36208463], [1516874580000, 0.09428897, 0.09435, 0.0939654, 0.09435, 22.31587233], [1516874640000, 0.09435, 0.09445828, 0.0939842, 0.09443467, 38.30540404], [1516874700000, 0.09443467, 0.09449897, 0.0944, 0.09449, 18.83622972], [1516874760000, 0.09449, 0.0945, 0.09398427, 0.0944, 52.60098628], [1516874820000, 0.09411687, 0.0944, 0.09398501, 0.0944, 14.96713068], [1516874880000, 0.0944, 0.0944, 0.09398502, 0.09420001, 20.63922587], [1516874940000, 0.09420001, 0.0944, 0.0942, 0.0944, 3.91071509], [1516875000000, 0.0944, 0.0944, 0.09421501, 0.09421501, 8.00293249], [1516875060000, 0.09422, 0.0944, 0.09421501, 0.09438999, 3.40946161], [1516875120000, 0.09438999, 0.09438999, 0.09422, 0.09438999, 15.27463155], [1516875180000, 0.09438999, 0.09438999, 0.09421501, 0.09421501, 12.09770547], [1516875240000, 0.09421501, 0.09438998, 0.09400384, 0.09438995, 32.44424974], [1516875300000, 0.09438998, 0.0944, 0.09438995, 0.0944, 17.96692432], [1516875360000, 0.09445, 0.0946391, 0.094235, 0.09439, 5.7928942], [1516875420000, 0.09438, 0.09439, 0.09438, 0.09439, 14.55238873], [1516875480000, 0.09439, 0.09439, 0.09438, 0.09439, 9.84175743], [1516875540000, 0.09439, 0.09439, 0.09438, 0.09439, 6.19464872], [1516875600000, 0.09438999, 0.0946391, 0.09438, 0.0944, 5.69435396], [1516875660000, 0.09438, 0.09479875, 0.09428, 0.09479875, 4.05058917], [1516875720000, 0.0944, 0.0947557, 0.09398426, 0.09398426, 15.83354438], [1516875780000, 0.0942399, 0.09479876, 0.09398423, 0.09398424, 11.18890978], [1516875840000, 0.09398424, 0.09429258, 0.09398421, 0.09419458, 50.87948806], [1516875900000, 0.09398422, 0.09429258, 0.09398422, 0.09419458, 5.78914302], [1516875960000, 0.09429258, 0.09429258, 0.09398422, 0.09429258, 2.45260609], [1516876020000, 0.094, 0.09429258, 0.094, 0.09429248, 10.14878475], [1516876080000, 0.09429248, 0.09429258, 0.094, 0.09429237, 55.73029309], [1516876140000, 0.09429237, 0.09429237, 0.094015, 0.09429222, 6.87588952], [1516876200000, 0.09429222, 0.09429227, 0.094015, 0.09420001, 9.44653595], [1516876260000, 0.09420001, 0.09420001, 0.09399276, 0.09399276, 25.93050732], [1516876320000, 0.094, 0.094, 0.09399276, 0.094, 15.14342483], [1516876380000, 0.094, 0.09420001, 0.09387, 0.094, 22.5929517], [1516876440000, 0.0942, 0.09420001, 0.09387, 0.094, 4.27255217], [1516876500000, 0.09420001, 0.09420001, 0.09399995, 0.09399995, 7.66614684], [1516876560000, 0.09399995, 0.09399995, 0.09387, 0.09399994, 8.03654491], [1516876620000, 0.09399995, 0.09417855, 0.09399994, 0.09399994, 3.09145478], [1516876680000, 0.09399994, 0.09417849, 0.09399994, 0.09417849, 8.40520137], [1516876740000, 0.09417849, 0.09417854, 0.09417849, 0.09417849, 5.58835369], [1516876800000, 0.09417849, 0.09417849, 0.09399994, 0.09417849, 11.34353157], [1516876860000, 0.09417848, 0.09417849, 0.09399994, 0.09417849, 9.31917178], [1516876920000, 0.09399995, 0.0941783, 0.09399994, 0.0941783, 13.79802197], [1516876980000, 0.0941783, 0.09417849, 0.0941, 0.09417849, 2.7987051], [1516877040000, 0.09417849, 0.09417849, 0.09417848, 0.09417849, 6.83151176], [1516877100000, 0.09417849, 0.09417849, 0.09399995, 0.09417848, 4.34824455], [1516877160000, 0.09417848, 0.09417848, 0.0941783, 0.09417848, 4.11983298], [1516877220000, 0.09417848, 0.09417848, 0.0941783, 0.09417848, 9.99722929], [1516877280000, 0.09417848, 0.09417848, 0.09399995, 0.09399995, 14.37249578], [1516877340000, 0.09417848, 0.09417848, 0.09399994, 0.09399995, 21.02912694], [1516877400000, 0.094, 0.09417, 0.09399995, 0.09416516, 4.32188326], [1516877460000, 0.09416516, 0.09417844, 0.09399994, 0.09416516, 48.00431186], [1516877520000, 0.09417, 0.09417, 0.09399994, 0.09417, 50.73622379], [1516877580000, 0.09417, 0.09417, 0.09416999, 0.09417, 8.26886748], [1516877640000, 0.09417, 0.09417, 0.09399994, 0.09417, 9.73797677], [1516877700000, 0.09399995, 0.09417, 0.09399994, 0.09417, 3.21713547], [1516877760000, 0.09417, 0.09417848, 0.09417, 0.09417, 12.24407757], [1516877820000, 0.09417848, 0.09417849, 0.09417, 0.09417, 20.41674294], [1516877880000, 0.09417849, 0.09429223, 0.09417, 0.09429223, 12.76210536], [1516877940000, 0.09429223, 0.09429223, 0.09417, 0.09429222, 16.3434159], [1516878000000, 0.09429223, 0.09429223, 0.09417, 0.09429222, 5.45689596], [1516878060000, 0.09429222, 0.09429222, 0.09399994, 0.09429222, 19.83895863], [1516878120000, 0.09429222, 0.09429223, 0.09399994, 0.09399994, 32.86541329], [1516878180000, 0.09429223, 0.09429223, 0.09399994, 0.09429223, 27.18079291], [1516878240000, 0.09399995, 0.09429223, 0.09399995, 0.09429223, 1.52771527], [1516878300000, 0.09399995, 0.09429223, 0.09399994, 0.0942, 7.74392434], [1516878360000, 0.0942922, 0.09429222, 0.0942, 0.09429222, 5.34822307], [1516878420000, 0.09429222, 0.09429222, 0.0942922, 0.09429222, 5.79381682], [1516878480000, 0.09429222, 0.09429222, 0.09400011, 0.0942922, 4.44769758], [1516878540000, 0.0942922, 0.09429222, 0.0942922, 0.09429222, 9.5812672], [1516878600000, 0.09429222, 0.09429222, 0.09400011, 0.09400011, 25.87973259], [1516878660000, 0.0942922, 0.09429222, 0.0940054, 0.09429222, 10.9011617], [1516878720000, 0.09400541, 0.09429222, 0.09400541, 0.0942825, 5.77431517], [1516878780000, 0.0942825, 0.0942825, 0.09417377, 0.09417401, 4.40355658], [1516878840000, 0.0942825, 0.09432222, 0.0942825, 0.09432222, 17.18877689], [1516878900000, 0.09432222, 0.09432222, 0.09429221, 0.09432222, 22.41699009], [1516878960000, 0.09432222, 0.09432222, 0.09429222, 0.09432222, 162.2969098], [1516879020000, 0.09432222, 0.09432222, 0.09429222, 0.09432222, 4.34285101], [1516879080000, 0.09432222, 0.09432222, 0.0943, 0.09432222, 41.30508631], [1516879140000, 0.09432222, 0.09432222, 0.0943, 0.09432222, 135.22332764], [1516879200000, 0.09432222, 0.09432222, 0.09432222, 0.09432222, 43.21659375], [1516879260000, 0.09430474, 0.09439223, 0.09430474, 0.09439223, 8.29234135], [1516879320000, 0.094337, 0.0944, 0.09432222, 0.09432222, 3.15685022], [1516879380000, 0.0944, 0.0944, 0.09432222, 0.09439998, 1.4230189], [1516879440000, 0.09439998, 0.0944, 0.09432222, 0.0944, 3.41708089], [1516879500000, 0.0944, 0.0944, 0.09432223, 0.09432223, 5.67813602], [1516879560000, 0.09432223, 0.09439984, 0.09430474, 0.09430474, 17.11078288], [1516879620000, 0.09439984, 0.09439984, 0.09430474, 0.09430475, 3.77404461], [1516879680000, 0.09439984, 0.0944, 0.09430476, 0.0944, 3.12303321], [1516879740000, 0.0944, 0.0944, 0.09439984, 0.09439984, 7.79459901], [1516879800000, 0.09439984, 0.09439984, 0.09439983, 0.09439984, 6.15084252], [1516879860000, 0.0945, 0.09452942, 0.09439984, 0.0944, 17.65602033], [1516879920000, 0.09452942, 0.09459991, 0.0944, 0.09440001, 8.30938976], [1516879980000, 0.09459991, 0.09459991, 0.09440001, 0.09459991, 3.60450391], [1516880040000, 0.09459991, 0.09459991, 0.09440003, 0.09459974, 18.7339934], [1516880100000, 0.09440003, 0.09469617, 0.09440003, 0.09440007, 15.21928012], [1516880160000, 0.09445, 0.09445, 0.09441, 0.09445, 46.86185841], [1516880220000, 0.09445, 0.09447655, 0.09441001, 0.09447655, 20.11997021], [1516880280000, 0.09447655, 0.09459977, 0.09441001, 0.09441001, 11.34082445], [1516880340000, 0.09441001, 0.09441002, 0.09430476, 0.09430476, 3.7256421], [1516880400000, 0.09441001, 0.09441002, 0.09417401, 0.09417401, 20.22854195], [1516880460000, 0.09417402, 0.09439999, 0.09411734, 0.09439999, 9.38032408], [1516880520000, 0.09418903, 0.09441002, 0.09418902, 0.09420403, 10.90121405], [1516880580000, 0.09420404, 0.09441001, 0.09418905, 0.09420001, 4.17040764], [1516880640000, 0.09440989, 0.09440989, 0.09400955, 0.094215, 18.43345813], [1516880700000, 0.094215, 0.09440975, 0.09400955, 0.09400955, 25.34377199], [1516880760000, 0.0942, 0.0942, 0.09399994, 0.09399994, 28.14350965], [1516880820000, 0.0941, 0.0942, 0.09399994, 0.094006, 20.40424283], [1516880880000, 0.0942, 0.0942, 0.09399994, 0.0941, 24.35404513], [1516880940000, 0.0941, 0.0941, 0.09399994, 0.0941, 24.24370176], [1516881000000, 0.09418499, 0.094185, 0.0941, 0.094185, 4.50516643], [1516881060000, 0.094185, 0.0942, 0.09410002, 0.09410002, 8.66730477], [1516881120000, 0.0942, 0.0942, 0.0941, 0.0941, 45.46067651], [1516881180000, 0.0941, 0.0942, 0.09400601, 0.09419999, 17.85402469], [1516881240000, 0.09410002, 0.09419998, 0.09399994, 0.09419998, 21.550845], [1516881300000, 0.09402101, 0.0942, 0.09402101, 0.0942, 13.45747714], [1516881360000, 0.0942, 0.0942, 0.0941, 0.094115, 21.41831097], [1516881420000, 0.094115, 0.0942, 0.09410002, 0.09412, 11.96780164], [1516881480000, 0.0942, 0.0942, 0.09412, 0.09412, 4.55060722], [1516881540000, 0.09412, 0.0942, 0.09412, 0.09419999, 11.80922606], [1516881600000, 0.09419998, 0.09419998, 0.09412002, 0.09412002, 8.24168333], [1516881660000, 0.09412002, 0.09419998, 0.09412002, 0.09412002, 12.80675125], [1516881720000, 0.09419996, 0.0942, 0.09412, 0.0942, 26.57318283], [1516881780000, 0.0942, 0.0942, 0.09412, 0.09419999, 27.7198338], [1516881840000, 0.09419999, 0.09419999, 0.09412, 0.09419999, 31.48027367], [1516881900000, 0.09419998, 0.09419999, 0.09413502, 0.09419999, 7.26849214], [1516881960000, 0.09419999, 0.09419999, 0.09412, 0.09412, 4.9274252], [1516882020000, 0.09412001, 0.09419998, 0.0941, 0.09412, 38.93630504], [1516882080000, 0.09412001, 0.09419999, 0.09412001, 0.09412002, 15.1845144], [1516882140000, 0.09412002, 0.09419998, 0.09412, 0.09419997, 10.770643], [1516882200000, 0.09419998, 0.09420002, 0.09412002, 0.09420002, 21.83907843], [1516882260000, 0.09420002, 0.09429998, 0.09420002, 0.09429996, 2.72096996], [1516882320000, 0.09420002, 0.0943, 0.09420002, 0.09420002, 5.30148713], [1516882380000, 0.09420003, 0.09423498, 0.09420002, 0.09420002, 4.63685066], [1516882440000, 0.09420003, 0.09420003, 0.09412, 0.09412002, 27.79949154], [1516882500000, 0.09420002, 0.094355, 0.09412, 0.09412002, 41.05975684], [1516882560000, 0.0943314, 0.0943314, 0.09420002, 0.09432999, 4.10004398], [1516882620000, 0.09432999, 0.09433, 0.09412, 0.09432999, 13.1473626], [1516882680000, 0.09432999, 0.09432999, 0.09412001, 0.09412001, 2.28893618], [1516882740000, 0.09412001, 0.09432999, 0.09412, 0.09412, 41.14151058], [1516882800000, 0.09412, 0.09412001, 0.094115, 0.094115, 82.19847485], [1516882860000, 0.09412001, 0.09412001, 0.09399994, 0.09399994, 49.27820667], [1516882920000, 0.09399994, 0.09412001, 0.09352, 0.09412001, 35.8836076], [1516882980000, 0.09411999, 0.09432982, 0.0937798, 0.09432982, 40.33357601], [1516883040000, 0.09432982, 0.09432988, 0.09411999, 0.09411999, 126.52510938], [1516883100000, 0.09411999, 0.09411999, 0.0937798, 0.09411, 1.82394743], [1516883160000, 0.09387, 0.09410982, 0.09352003, 0.0939, 3.0391772], [1516883220000, 0.0939, 0.09409997, 0.0937798, 0.09391499, 3.44796142], [1516883280000, 0.0937798, 0.09409996, 0.0937798, 0.09389999, 19.42917579], [1516883340000, 0.09389999, 0.09409998, 0.0937798, 0.0937798, 28.94839391], [1516883400000, 0.09382117, 0.0941, 0.09354001, 0.09405, 71.38815313], [1516883460000, 0.09409999, 0.09432988, 0.09377985, 0.09428767, 20.49898443], [1516883520000, 0.09428765, 0.09428765, 0.09377991, 0.09378987, 3.66153261], [1516883580000, 0.09426998, 0.09426998, 0.09378987, 0.09378988, 2.17015643], [1516883640000, 0.09378988, 0.09420272, 0.09378987, 0.09420269, 6.74566522], [1516883700000, 0.09420272, 0.09420272, 0.09377986, 0.09377986, 12.79525009], [1516883760000, 0.09377986, 0.09407124, 0.09377986, 0.09407122, 4.64404027], [1516883820000, 0.09407122, 0.09407122, 0.09377986, 0.09377987, 8.86440467], [1516883880000, 0.09407119, 0.09407119, 0.09377988, 0.09407118, 4.40191842], [1516883940000, 0.09407118, 0.09407122, 0.094, 0.094, 30.3866513], [1516884000000, 0.094, 0.09407122, 0.094, 0.094, 102.74430678], [1516884060000, 0.094, 0.094, 0.09377986, 0.09379999, 60.45977298], [1516884120000, 0.09397648, 0.09397648, 0.09377986, 0.09379999, 7.09250968], [1516884180000, 0.09387651, 0.094, 0.09379999, 0.094, 48.36091647], [1516884240000, 0.09397648, 0.09407122, 0.09379999, 0.09379999, 17.62018925], [1516884300000, 0.09379999, 0.09407122, 0.09379999, 0.09407117, 28.23031714], [1516884360000, 0.09407119, 0.09407122, 0.09377986, 0.09377986, 9.12631027], [1516884420000, 0.09377986, 0.09402456, 0.09377654, 0.0937766, 7.38081809], [1516884480000, 0.09379998, 0.09400103, 0.09358987, 0.094001, 104.38953567], [1516884540000, 0.0938, 0.0938765, 0.09358987, 0.09358987, 8.15690934], [1516884600000, 0.09364398, 0.09379997, 0.09347, 0.09354001, 36.92642941], [1516884660000, 0.09354001, 0.09379995, 0.0933, 0.0935166, 32.44311326], [1516884720000, 0.0935166, 0.09376909, 0.09318, 0.09353997, 41.70097479], [1516884780000, 0.09355497, 0.09375886, 0.09318, 0.09355001, 4.62539922], [1516884840000, 0.09356501, 0.09356501, 0.093011, 0.0934235, 23.990061], [1516884900000, 0.0934235, 0.09342366, 0.09301101, 0.09342349, 17.23727937], [1516884960000, 0.09342349, 0.0934235, 0.09304981, 0.09342349, 4.80358528], [1516885020000, 0.09304981, 0.09342348, 0.09304981, 0.09334999, 6.7439302], [1516885080000, 0.09334999, 0.09334999, 0.09304989, 0.09334999, 8.77074933], [1516885140000, 0.09334999, 0.09334999, 0.09304989, 0.09334999, 19.15112038], [1516885200000, 0.09334999, 0.09334999, 0.09304981, 0.09334999, 7.33411899], [1516885260000, 0.09334999, 0.09335, 0.09304981, 0.09304983, 39.80459605], [1516885320000, 0.09334998, 0.09335, 0.09304981, 0.09335, 17.59641289], [1516885380000, 0.09332664, 0.09335, 0.09305, 0.09332664, 22.7977637], [1516885440000, 0.09332664, 0.09335, 0.09305001, 0.0933266, 4.63910751], [1516885500000, 0.0933266, 0.0933266, 0.09305001, 0.09305001, 12.32279756], [1516885560000, 0.0933, 0.0933266, 0.09305001, 0.0933266, 4.98632992], [1516885620000, 0.09306601, 0.0933266, 0.093066, 0.0933266, 5.26998328], [1516885680000, 0.09313996, 0.09332664, 0.09313996, 0.0933266, 41.09826273], [1516885740000, 0.09332664, 0.09350608, 0.09313997, 0.09350608, 16.96995048], [1516885800000, 0.09340789, 0.09393053, 0.0933266, 0.09350121, 26.78503528], [1516885860000, 0.09350118, 0.0935012, 0.09332664, 0.09332665, 9.14706777], [1516885920000, 0.09332665, 0.09374052, 0.09332664, 0.09332664, 31.70696004], [1516885980000, 0.0937405, 0.0937405, 0.09332665, 0.09373296, 42.93601859], [1516886040000, 0.09373296, 0.09373296, 0.09332666, 0.09332666, 73.09526049], [1516886100000, 0.09373043, 0.09373043, 0.09332666, 0.09369966, 4.51221672], [1516886160000, 0.09333296, 0.09369962, 0.09332667, 0.09333109, 7.4227863], [1516886220000, 0.09359958, 0.09366622, 0.0934, 0.0934, 6.58224288], [1516886280000, 0.0936661, 0.0936664, 0.0935, 0.09366149, 7.31914571], [1516886340000, 0.09366149, 0.0936615, 0.0935, 0.09366149, 24.66585398], [1516886400000, 0.09366149, 0.09369778, 0.09366149, 0.0936662, 6.88798669], [1516886460000, 0.0936662, 0.09369947, 0.09361, 0.09361, 38.67762267], [1516886520000, 0.09366152, 0.093954, 0.09350003, 0.09350003, 12.87042482], [1516886580000, 0.09361, 0.09395399, 0.09361, 0.09395392, 8.68808661], [1516886640000, 0.09395383, 0.09395383, 0.0935, 0.09361, 42.52023978], [1516886700000, 0.09361, 0.09388576, 0.09332667, 0.0935, 33.71893249], [1516886760000, 0.09360531, 0.09360531, 0.0935, 0.0935, 32.41393655], [1516886820000, 0.0935, 0.09360532, 0.0935, 0.09350002, 16.04711253], [1516886880000, 0.09350002, 0.09379999, 0.0935, 0.0935, 30.04144241], [1516886940000, 0.09379995, 0.09379995, 0.09350001, 0.09360532, 45.93372712], [1516887000000, 0.09350003, 0.09372236, 0.0935, 0.09360531, 59.6306028], [1516887060000, 0.09360531, 0.09372244, 0.09351286, 0.0937224, 17.62317134], [1516887120000, 0.09369897, 0.09372244, 0.09351057, 0.09372241, 10.01519633], [1516887180000, 0.09369897, 0.09372237, 0.093501, 0.093501, 6.72694592], [1516887240000, 0.09369885, 0.09372242, 0.09369876, 0.09369876, 5.08207314], [1516887300000, 0.09369876, 0.09390987, 0.09369876, 0.09369885, 34.76677241], [1516887360000, 0.09386154, 0.09387438, 0.09369876, 0.09369876, 33.87544172], [1516887420000, 0.09369876, 0.09369885, 0.09332667, 0.09350102, 28.26001874], [1516887480000, 0.09350102, 0.09369873, 0.09332667, 0.09369869, 16.28020033], [1516887540000, 0.09369869, 0.09369869, 0.09332666, 0.09332667, 86.86910868], [1516887600000, 0.09332667, 0.09369446, 0.09332666, 0.09332667, 15.39223903], [1516887660000, 0.09369433, 0.09369433, 0.09332667, 0.09369429, 18.87334921], [1516887720000, 0.09332667, 0.09369428, 0.09332667, 0.09369425, 7.25060996], [1516887780000, 0.09332668, 0.09369423, 0.09332667, 0.09332667, 4.32424992], [1516887840000, 0.09332667, 0.09369876, 0.09332667, 0.09369421, 5.17040582], [1516887900000, 0.09369421, 0.09374499, 0.09369408, 0.09374499, 91.78669034], [1516887960000, 0.09372753, 0.09372753, 0.09349419, 0.09349419, 19.9435908], [1516888020000, 0.09369531, 0.09369531, 0.09349419, 0.09349419, 2.35043765], [1516888080000, 0.09349419, 0.0936813, 0.09349419, 0.0936775, 8.42793783], [1516888140000, 0.0936775, 0.0936775, 0.0934942, 0.09366726, 8.01073682], [1516888200000, 0.09366726, 0.0936813, 0.09352726, 0.09368129, 4.92397122], [1516888260000, 0.09366726, 0.09384881, 0.09352726, 0.09366728, 8.62581302], [1516888320000, 0.09384883, 0.09393549, 0.0936813, 0.09393549, 11.13058191], [1516888380000, 0.09382538, 0.09393548, 0.0936813, 0.09393547, 0.62875632], [1516888440000, 0.09393547, 0.09393547, 0.09369131, 0.09387079, 25.96417884], [1516888500000, 0.0937, 0.09391332, 0.09352726, 0.0936064, 35.64838906], [1516888560000, 0.09352727, 0.0939307, 0.09352726, 0.0939307, 1.31403891], [1516888620000, 0.0939307, 0.09393071, 0.0939307, 0.0939307, 9.2369147], [1516888680000, 0.0939307, 0.093931, 0.09393069, 0.09393071, 9.43361025], [1516888740000, 0.09393071, 0.093931, 0.09393071, 0.09393099, 9.90382224], [1516888800000, 0.09393099, 0.093935, 0.09393071, 0.09393071, 12.54346033], [1516888860000, 0.09393071, 0.093935, 0.09379999, 0.0938, 16.05448029], [1516888920000, 0.09380999, 0.093935, 0.09363639, 0.093935, 58.8591603], [1516888980000, 0.09395399, 0.093954, 0.0936164, 0.09395396, 26.71938062], [1516889040000, 0.09395396, 0.09395396, 0.0936164, 0.093935, 33.24280918], [1516889100000, 0.09393499, 0.09393499, 0.09363601, 0.09363601, 8.28383804], [1516889160000, 0.09373412, 0.09395401, 0.093636, 0.093954, 11.05150467], [1516889220000, 0.09363639, 0.093999, 0.09363639, 0.09384832, 4.30054846], [1516889280000, 0.09363639, 0.09399897, 0.09363603, 0.093637, 2.26632228], [1516889340000, 0.093637, 0.09399799, 0.09363299, 0.09399795, 19.17225764], [1516889400000, 0.09399795, 0.09399989, 0.09363603, 0.09399989, 5.9175366], [1516889460000, 0.09371009, 0.09399988, 0.09363604, 0.09371009, 2.484688], [1516889520000, 0.09371009, 0.09399998, 0.09371009, 0.09399998, 44.70979063], [1516889580000, 0.09399998, 0.09400599, 0.09399998, 0.09400599, 10.24030278], [1516889640000, 0.094, 0.09400601, 0.09399998, 0.094006, 19.05663337], [1516889700000, 0.094006, 0.09407, 0.09363608, 0.09407, 39.40969207], [1516889760000, 0.094, 0.094, 0.09367122, 0.09399988, 5.63196342], [1516889820000, 0.09399988, 0.09399988, 0.09367124, 0.09399664, 4.66245394], [1516889880000, 0.09399664, 0.09399664, 0.09399594, 0.09399594, 2.23544304], [1516889940000, 0.09399594, 0.09407122, 0.09399594, 0.094, 14.1745573], [1516890000000, 0.09407122, 0.09408, 0.094, 0.09407997, 17.83783999], [1516890060000, 0.09407998, 0.09407998, 0.09400002, 0.09407998, 8.66991385], [1516890120000, 0.09407998, 0.09417473, 0.09363603, 0.094153, 115.55381138], [1516890180000, 0.094153, 0.0941747, 0.09408, 0.094158, 5.71466212], [1516890240000, 0.09408001, 0.09408001, 0.09408, 0.09408001, 4.46770612], [1516890300000, 0.094157, 0.094157, 0.09407997, 0.09407997, 7.00401573], [1516890360000, 0.09363604, 0.09407997, 0.09363604, 0.093917, 6.40018564], [1516890420000, 0.09393201, 0.09408, 0.09364611, 0.09408, 9.1778274], [1516890480000, 0.09408, 0.094158, 0.09402092, 0.09402092, 26.42932929], [1516890540000, 0.09408, 0.09439999, 0.09402092, 0.09405, 43.84522634], [1516890600000, 0.09408, 0.09434341, 0.09405, 0.09405, 54.44269826], [1516890660000, 0.094051, 0.0944, 0.094051, 0.09408, 12.48028436], [1516890720000, 0.09408, 0.09439981, 0.094051, 0.09439969, 6.94741078], [1516890780000, 0.09439891, 0.09439899, 0.09399795, 0.094, 14.38461956], [1516890840000, 0.094, 0.09439997, 0.094, 0.09408001, 7.88420973], [1516890900000, 0.09408002, 0.09439996, 0.09408002, 0.09423381, 8.62099182], [1516890960000, 0.0943799, 0.09439996, 0.09408002, 0.09423381, 1.79587426], [1516891020000, 0.09423381, 0.09439995, 0.09423381, 0.09423382, 5.28449865], [1516891080000, 0.09423382, 0.09423382, 0.09408005, 0.09408005, 2.19444671], [1516891140000, 0.09408005, 0.0943999, 0.09408005, 0.0943999, 8.18909867], [1516891200000, 0.09439987, 0.0943999, 0.0942338, 0.09439986, 5.26890816], [1516891260000, 0.09439986, 0.09439987, 0.0941, 0.09439985, 3.74433089], [1516891320000, 0.09439985, 0.09439987, 0.09408007, 0.09439985, 80.620452], [1516891380000, 0.0943998, 0.09439985, 0.09411, 0.0943, 2.16740383], [1516891440000, 0.09411001, 0.09411001, 0.09408001, 0.09411, 23.22948101], [1516891500000, 0.09411, 0.09429999, 0.09411, 0.09429999, 3.33853122], [1516891560000, 0.09429999, 0.09439985, 0.09411006, 0.09439984, 33.46744526], [1516891620000, 0.09412005, 0.09412005, 0.09411006, 0.09411907, 3.79509923], [1516891680000, 0.09414905, 0.09439984, 0.09408001, 0.09411907, 6.71620587], [1516891740000, 0.09411907, 0.0943, 0.09408001, 0.09411907, 27.71893406], [1516891800000, 0.09411907, 0.0943998, 0.09389169, 0.09389169, 17.34727417], [1516891860000, 0.09389169, 0.0941, 0.09379001, 0.09394824, 13.55174795], [1516891920000, 0.09394824, 0.09394824, 0.093939, 0.09394824, 13.26375974], [1516891980000, 0.09387234, 0.09394824, 0.0936164, 0.09379, 56.59192402], [1516892040000, 0.09379, 0.09379, 0.0936314, 0.09379, 9.82967067], [1516892100000, 0.09379, 0.0938999, 0.0936, 0.0936, 6.78647332], [1516892160000, 0.0936, 0.09386836, 0.0935, 0.0935, 25.23186453], [1516892220000, 0.09359999, 0.09359999, 0.0935, 0.09359999, 20.61406464], [1516892280000, 0.09359999, 0.09359999, 0.09351, 0.09359999, 8.32229774], [1516892340000, 0.09359999, 0.0938999, 0.09359999, 0.09373074, 9.9743814], [1516892400000, 0.09380501, 0.09389988, 0.09380501, 0.09380501, 8.09332368], [1516892460000, 0.09389981, 0.09389982, 0.09359, 0.09380503, 5.36192584], [1516892520000, 0.09380503, 0.0938998, 0.09359, 0.0938998, 9.48417855], [1516892580000, 0.09375521, 0.09389981, 0.0937552, 0.09380503, 25.91783999], [1516892640000, 0.09385, 0.0938999, 0.09379, 0.0938999, 16.06361737], [1516892700000, 0.0938999, 0.09394816, 0.0935, 0.09394814, 35.14662572], [1516892760000, 0.09394814, 0.09394815, 0.0935, 0.09394717, 5.50600114], [1516892820000, 0.09394599, 0.09394599, 0.09350002, 0.09394594, 4.66505861], [1516892880000, 0.09392123, 0.09392123, 0.09350001, 0.09390152, 8.60749074], [1516892940000, 0.09387776, 0.09387776, 0.09350002, 0.09387774, 1.49786253], [1516893000000, 0.09387773, 0.09387775, 0.09350002, 0.09387766, 79.37082815], [1516893060000, 0.09387766, 0.09387766, 0.09350003, 0.09351423, 1.47041465], [1516893120000, 0.09351508, 0.09387699, 0.09349419, 0.09349419, 57.00221682], [1516893180000, 0.09350011, 0.09387585, 0.0935001, 0.09367577, 12.3160118], [1516893240000, 0.09367576, 0.09367577, 0.09332667, 0.09367572, 45.34998749], [1516893300000, 0.09367572, 0.09367572, 0.09328225, 0.0936756, 5.3793037], [1516893360000, 0.09356275, 0.09356275, 0.09313997, 0.09313997, 10.49317843], [1516893420000, 0.09355273, 0.09355273, 0.0931, 0.09355263, 15.78018174], [1516893480000, 0.09355261, 0.09355271, 0.09313998, 0.09314, 29.11133556], [1516893540000, 0.09355198, 0.09355198, 0.09314, 0.09352996, 2.38223257], [1516893600000, 0.09352996, 0.09352998, 0.09314, 0.09332568, 49.41629932], [1516893660000, 0.09314005, 0.09352996, 0.09314, 0.0933257, 5.32433568], [1516893720000, 0.09352995, 0.09352995, 0.09324171, 0.09324201, 17.90816802], [1516893780000, 0.09352995, 0.09352995, 0.09324201, 0.093243, 12.98834273], [1516893840000, 0.09351994, 0.09351995, 0.09324301, 0.09324312, 9.27301562], [1516893900000, 0.09351993, 0.09351995, 0.093244, 0.09324501, 6.17330535], [1516893960000, 0.09324501, 0.09352996, 0.09324501, 0.0935, 47.00925896], [1516894020000, 0.0935, 0.09352996, 0.0932461, 0.09333978, 25.74567316], [1516894080000, 0.09334, 0.09334, 0.0932463, 0.0932463, 22.65105574], [1516894140000, 0.0932463, 0.094, 0.093246, 0.09332999, 124.56180624], [1516894200000, 0.09333, 0.09375641, 0.09332999, 0.09363037, 6.38454777], [1516894260000, 0.0937009, 0.093712, 0.09333, 0.09333, 18.12719306], [1516894320000, 0.09333001, 0.09394893, 0.09333001, 0.09333001, 233.53294433], [1516894380000, 0.09333001, 0.09333001, 0.09333001, 0.09333001, 5.56139696], [1516894440000, 0.09333003, 0.09356999, 0.09333003, 0.09356999, 9.18275872], [1516894500000, 0.09333003, 0.09377091, 0.09333001, 0.09356999, 15.54322372], [1516894560000, 0.09333001, 0.09375037, 0.09333, 0.09356999, 34.32469815], [1516894620000, 0.09356999, 0.09377093, 0.0932613, 0.09377093, 87.17545974], [1516894680000, 0.09377093, 0.09386791, 0.09325, 0.09337014, 29.63875206], [1516894740000, 0.09363348, 0.09377089, 0.09326201, 0.09356998, 6.50107871], [1516894800000, 0.09356997, 0.09356998, 0.09356996, 0.09356996, 2.2393608], [1516894860000, 0.09356997, 0.09370098, 0.09356996, 0.09356998, 27.71935939], [1516894920000, 0.09356998, 0.09377089, 0.09356996, 0.09356996, 14.52886766], [1516894980000, 0.09356996, 0.09377071, 0.09356996, 0.09356996, 47.33974646], [1516895040000, 0.09363338, 0.09377053, 0.093439, 0.093439, 4.10232569], [1516895100000, 0.09377048, 0.0937708, 0.09355001, 0.09355001, 10.25718221], [1516895160000, 0.09355001, 0.09371033, 0.09355001, 0.09355003, 11.04928768], [1516895220000, 0.09371032, 0.09371032, 0.09355002, 0.0935501, 13.34018949], [1516895280000, 0.0935501, 0.09371033, 0.0935501, 0.09371033, 21.02731458], [1516895340000, 0.09371033, 0.09371033, 0.0935501, 0.0935501, 11.43221456], [1516895400000, 0.09371, 0.09371, 0.0935501, 0.0935501, 10.34958148], [1516895460000, 0.0935502, 0.09371, 0.09355002, 0.0935501, 29.1917679], [1516895520000, 0.0935501, 0.09371033, 0.0935501, 0.09371033, 6.62483459], [1516895580000, 0.09371032, 0.09371032, 0.0937103, 0.09371032, 5.09499159], [1516895640000, 0.09371032, 0.09371033, 0.09370561, 0.0937103, 15.0508162], [1516895700000, 0.0937103, 0.09371033, 0.09355012, 0.0937103, 6.33568876], [1516895760000, 0.09371033, 0.09371033, 0.09371032, 0.09371033, 5.3242707], [1516895820000, 0.09371033, 0.09371033, 0.09371032, 0.09371033, 10.16657561], [1516895880000, 0.09371033, 0.09377089, 0.09371033, 0.09377089, 12.45085098], [1516895940000, 0.09377089, 0.09377089, 0.0935501, 0.09377, 17.05776908], [1516896000000, 0.09377, 0.09377089, 0.0935501, 0.09377089, 2.92507261], [1516896060000, 0.09377089, 0.09377089, 0.09358788, 0.09377089, 3.31945503], [1516896120000, 0.09377089, 0.0940379, 0.0935501, 0.09377089, 83.28165353], [1516896180000, 0.0939, 0.0939, 0.09358779, 0.0939, 8.37301505], [1516896240000, 0.09389999, 0.0939, 0.09366523, 0.09385, 15.02219827], [1516896300000, 0.09389858, 0.0939, 0.09389858, 0.09389858, 34.3479733], [1516896360000, 0.09389958, 0.0939, 0.09389858, 0.0939, 54.78556723], [1516896420000, 0.0939, 0.0939, 0.09324301, 0.09324301, 150.60289622], [1516896480000, 0.09389958, 0.094365, 0.09384, 0.094365, 40.98059183], [1516896540000, 0.09435431, 0.09439996, 0.0941191, 0.09439996, 13.15719875], [1516896600000, 0.09413167, 0.094365, 0.09399392, 0.09399958, 30.56323642], [1516896660000, 0.09390009, 0.09427589, 0.09390009, 0.09399392, 2.27199672], [1516896720000, 0.09399958, 0.09399958, 0.09399391, 0.09399958, 23.05596323], [1516896780000, 0.09427589, 0.09429958, 0.09399958, 0.09429958, 21.65775621], [1516896840000, 0.09413167, 0.0942995, 0.094, 0.0941995, 6.49669931], [1516896900000, 0.0941995, 0.0941995, 0.094, 0.0941995, 5.31764927], [1516896960000, 0.0941995, 0.09429949, 0.09401, 0.0941995, 21.14979467], [1516897020000, 0.0941995, 0.09419952, 0.0941995, 0.09419952, 5.65807156], [1516897080000, 0.09429949, 0.09429949, 0.0941995, 0.09429949, 34.62692866], [1516897140000, 0.09429948, 0.09429948, 0.09421452, 0.09421452, 1.8913415], [1516897200000, 0.0941995, 0.09429948, 0.0941995, 0.09421452, 13.84590028], [1516897260000, 0.09421453, 0.09429947, 0.09401, 0.09401, 4.40604346], [1516897320000, 0.09410649, 0.09429948, 0.09410649, 0.09429948, 24.455782], [1516897380000, 0.09429948, 0.09429949, 0.09400001, 0.09400001, 39.73890049], [1516897440000, 0.0942994, 0.0942994, 0.09427306, 0.09427306, 1.32073987], [1516897500000, 0.09427306, 0.09427306, 0.09410265, 0.09410265, 5.08944577], [1516897560000, 0.09410265, 0.09410265, 0.09400003, 0.0941, 2.15942845], [1516897620000, 0.0941, 0.0941, 0.09400003, 0.0940999, 13.66516477], [1516897680000, 0.0940999, 0.0941, 0.09403337, 0.09403337, 4.48626901], [1516897740000, 0.0940999, 0.0940999, 0.09403337, 0.0940999, 1.54783625], [1516897800000, 0.0940998, 0.0940999, 0.09403337, 0.09403337, 4.26009605], [1516897860000, 0.0940998, 0.0940998, 0.09403337, 0.09403337, 11.30127716], [1516897920000, 0.09403337, 0.0940998, 0.09400003, 0.09400003, 8.26183528], [1516897980000, 0.0940998, 0.0940998, 0.09400003, 0.09409979, 3.87913124], [1516898040000, 0.09409979, 0.09409979, 0.09403338, 0.09403338, 1.39599978], [1516898100000, 0.09403338, 0.09409979, 0.09403337, 0.09403337, 4.52976812], [1516898160000, 0.0940001, 0.09403337, 0.0940001, 0.09403337, 11.19000344], [1516898220000, 0.09403338, 0.09409979, 0.09403338, 0.09409979, 1.14990863], [1516898280000, 0.09409979, 0.09409979, 0.094, 0.09409978, 13.23712215], [1516898340000, 0.09403339, 0.09409978, 0.09403339, 0.09409978, 13.14581034], [1516898400000, 0.09409977, 0.09409978, 0.09403339, 0.09409978, 8.33704469], [1516898460000, 0.09409978, 0.09409978, 0.0940335, 0.09409978, 3.34548266], [1516898520000, 0.094099, 0.094099, 0.09405, 0.09405, 24.25869399], [1516898580000, 0.09405, 0.09409898, 0.09403342, 0.09409898, 12.42017699], [1516898640000, 0.09409898, 0.09409898, 0.09403342, 0.09403342, 17.48874111], [1516898700000, 0.09403342, 0.09409897, 0.0939996, 0.09409897, 24.07452439], [1516898760000, 0.0939996, 0.09409897, 0.0939996, 0.09409897, 0.71791936], [1516898820000, 0.09409898, 0.09409978, 0.09409897, 0.09409978, 14.15738382], [1516898880000, 0.09409978, 0.09409978, 0.09409977, 0.09409977, 1.04992569], [1516898940000, 0.09409978, 0.09409978, 0.0939996, 0.09409977, 18.8564984], [1516899000000, 0.09409977, 0.09409977, 0.0939996, 0.0939996, 2.69541413], [1516899060000, 0.0939996, 0.09409978, 0.0939996, 0.09399961, 7.0796017], [1516899120000, 0.0939996, 0.09409977, 0.0939996, 0.09399961, 11.11988824], [1516899180000, 0.09409977, 0.09409977, 0.09399961, 0.0940997, 3.15752303], [1516899240000, 0.09409977, 0.09409977, 0.0940997, 0.09409976, 2.07983897], [1516899300000, 0.09409976, 0.09409977, 0.0940997, 0.09409977, 9.89024747], [1516899360000, 0.09409977, 0.09409977, 0.09409972, 0.09409972, 6.01637275], [1516899420000, 0.09409972, 0.09409972, 0.0940997, 0.09409972, 20.43780544], [1516899480000, 0.09409972, 0.09409972, 0.0940997, 0.0940997, 7.74802034], [1516899540000, 0.09409971, 0.09409971, 0.0940997, 0.09409971, 21.2228077], [1516899600000, 0.0940997, 0.09409971, 0.0940997, 0.09409971, 16.86728688], [1516899660000, 0.0940997, 0.09409971, 0.0940997, 0.0940997, 65.96729016], [1516899720000, 0.09409971, 0.09409972, 0.0940997, 0.09409971, 26.95123383], [1516899780000, 0.09409971, 0.09409977, 0.0940997, 0.09409977, 74.0757475], [1516899840000, 0.09409977, 0.09409979, 0.0940997, 0.09409979, 15.69099932], [1516899900000, 0.0940998, 0.09439996, 0.0940997, 0.09411501, 6.08194419], [1516899960000, 0.0943, 0.09443895, 0.09411501, 0.0943999, 23.51212589], [1516900020000, 0.0943999, 0.0943999, 0.09411599, 0.09413002, 1.61079305], [1516900080000, 0.0943978, 0.0943999, 0.09412001, 0.09414002, 5.72752699], [1516900140000, 0.0943999, 0.09439995, 0.0942, 0.09439995, 3.5742342], [1516900200000, 0.09439995, 0.09439995, 0.0943999, 0.09439995, 30.76412876], [1516900260000, 0.09443895, 0.0945, 0.09439995, 0.09439995, 7.4825868], [1516900320000, 0.0944489, 0.09451491, 0.0944489, 0.0945, 26.11621704], [1516900380000, 0.0945149, 0.09455094, 0.0945, 0.09455094, 8.89266997], [1516900440000, 0.09454999, 0.09469617, 0.0945, 0.0945, 14.06620432], [1516900500000, 0.09454325, 0.09468999, 0.0945, 0.09455094, 3.39446108], [1516900560000, 0.09468999, 0.09469613, 0.09455094, 0.09465, 16.85494064], [1516900620000, 0.09465, 0.09469616, 0.0945, 0.09455094, 28.3953373], [1516900680000, 0.09455094, 0.09465, 0.0945, 0.0945, 22.02561871], [1516900740000, 0.09453596, 0.094536, 0.0945, 0.094536, 46.91774823], [1516900800000, 0.094536, 0.09469616, 0.094536, 0.09469616, 18.84177469], [1516900860000, 0.094536, 0.09469616, 0.094536, 0.09469615, 1.59866913], [1516900920000, 0.09469615, 0.09469615, 0.094536, 0.09469615, 9.12744858], [1516900980000, 0.094536, 0.09469616, 0.0944489, 0.0944489, 43.80119692], [1516901040000, 0.094536, 0.094536, 0.09420005, 0.09431671, 5.68285281], [1516901100000, 0.09449, 0.09449999, 0.09431671, 0.09449, 2.52543042], [1516901160000, 0.09449, 0.0945, 0.09440499, 0.0945, 8.05719212], [1516901220000, 0.0945, 0.0945, 0.09431671, 0.0945, 4.49844836], [1516901280000, 0.09440499, 0.0945, 0.09431672, 0.09431672, 20.94132139], [1516901340000, 0.09431672, 0.09454999, 0.09431671, 0.09454999, 31.12152828], [1516901400000, 0.09431671, 0.09455, 0.09431671, 0.09455, 14.75772621], [1516901460000, 0.09455, 0.09455, 0.09431675, 0.09454999, 3.03889243], [1516901520000, 0.09454999, 0.09455, 0.09454999, 0.09454999, 54.20239235], [1516901580000, 0.09454999, 0.09454999, 0.09454999, 0.09454999, 2.4151906], [1516901640000, 0.09454999, 0.09454999, 0.09447408, 0.0945, 1.75777236], [1516901700000, 0.0945, 0.09454999, 0.0945, 0.0945, 1.76934132], [1516901760000, 0.09454999, 0.0946, 0.09454999, 0.0946, 12.93054353], [1516901820000, 0.09455, 0.0946, 0.0944, 0.09441888, 39.64010656], [1516901880000, 0.09441888, 0.09441888, 0.09431671, 0.09441888, 44.8477244], [1516901940000, 0.09441888, 0.09469615, 0.094415, 0.094415, 7.3632278], [1516902000000, 0.09469612, 0.09469614, 0.0945, 0.0945, 25.32374423], [1516902060000, 0.0945, 0.09469612, 0.0945, 0.09469611, 5.52625467], [1516902120000, 0.09469611, 0.09469613, 0.09450002, 0.09469611, 5.11641018], [1516902180000, 0.09469613, 0.09469614, 0.0945, 0.09469613, 32.87511779], [1516902240000, 0.09469614, 0.09469615, 0.09469613, 0.09469614, 4.89608381], [1516902300000, 0.09469615, 0.09469615, 0.09469612, 0.09469612, 4.71848171], [1516902360000, 0.09469613, 0.09469614, 0.0944, 0.0944, 11.9353436], [1516902420000, 0.0944, 0.094415, 0.0943255, 0.0944, 9.82741638], [1516902480000, 0.0944, 0.0944, 0.0944, 0.0944, 7.40290073], [1516902540000, 0.0944, 0.09469615, 0.0943257, 0.09469615, 38.64394065], [1516902600000, 0.09469615, 0.09469615, 0.09469614, 0.09469614, 1.32002418], [1516902660000, 0.09469612, 0.09469612, 0.094415, 0.09469612, 1.86497973], [1516902720000, 0.09469612, 0.09469614, 0.094415, 0.09469609, 5.18592746], [1516902780000, 0.09469609, 0.09469613, 0.09443, 0.09468806, 2.32498465], [1516902840000, 0.094415, 0.09468806, 0.094415, 0.09443388, 0.3752129], [1516902900000, 0.09443388, 0.09468806, 0.09443388, 0.09443501, 3.16918804], [1516902960000, 0.09462177, 0.09468806, 0.09443501, 0.09468804, 9.73159713], [1516903020000, 0.09468804, 0.09468805, 0.09443501, 0.09443511, 23.72688028], [1516903080000, 0.09468201, 0.09468201, 0.09443501, 0.09443501, 5.73049031], [1516903140000, 0.09468, 0.09468, 0.09443511, 0.09443511, 3.01651473], [1516903200000, 0.094679, 0.094679, 0.09443511, 0.09467898, 6.46508599], [1516903260000, 0.09467894, 0.09467894, 0.09443501, 0.09443501, 32.54588286], [1516903320000, 0.09445, 0.09467892, 0.09443501, 0.09467891, 18.85709234], [1516903380000, 0.09467891, 0.09467891, 0.09453501, 0.09453501, 1.34259627], [1516903440000, 0.0946789, 0.09467891, 0.09443503, 0.09443503, 5.51880451], [1516903500000, 0.09467891, 0.09467892, 0.09467891, 0.09467891, 2.2576791], [1516903560000, 0.09467892, 0.09467892, 0.0946789, 0.09467891, 5.69240293], [1516903620000, 0.0946789, 0.0946789, 0.09443503, 0.09443503, 12.45313329], [1516903680000, 0.09467885, 0.09467885, 0.09443501, 0.09443501, 231.28827733], [1516903740000, 0.09443503, 0.09467887, 0.09443388, 0.0945294, 177.95695435], [1516903800000, 0.09465, 0.09465281, 0.09443388, 0.09443388, 2.46453416], [1516903860000, 0.09443388, 0.09443388, 0.09442, 0.09443388, 0.69643477], [1516903920000, 0.09442, 0.09443388, 0.09441501, 0.09443388, 2.52139835], [1516903980000, 0.0945294, 0.09464299, 0.09437593, 0.09437593, 12.14144397], [1516904040000, 0.09437593, 0.09437593, 0.0943257, 0.0943257, 7.79268619], [1516904100000, 0.09437593, 0.09437593, 0.09411501, 0.09411501, 44.95194197], [1516904160000, 0.09437593, 0.09437593, 0.0942, 0.09437593, 4.91772582], [1516904220000, 0.0942, 0.09437593, 0.0942, 0.09437592, 2.81384508], [1516904280000, 0.09420001, 0.09437592, 0.09420001, 0.09420001, 3.87001342], [1516904340000, 0.09420002, 0.0943759, 0.09420001, 0.0943759, 2.51060654], [1516904400000, 0.09420001, 0.09437592, 0.09420001, 0.0943759, 1.53018031], [1516904460000, 0.09437592, 0.09437592, 0.09420001, 0.09420001, 3.61675726], [1516904520000, 0.09420001, 0.09437592, 0.09420001, 0.09437591, 2.55244844], [1516904580000, 0.09437592, 0.09437592, 0.09437591, 0.09437591, 6.14321485], [1516904640000, 0.09437591, 0.09437591, 0.09420001, 0.09437591, 1.54422774], [1516904700000, 0.09437591, 0.09437591, 0.09420001, 0.09420001, 2.66228299], [1516904760000, 0.0943759, 0.09437591, 0.09420001, 0.09420002, 4.28996983], [1516904820000, 0.0943759, 0.0943759, 0.09437589, 0.09437589, 0.86383184], [1516904880000, 0.09437589, 0.0943759, 0.09437589, 0.0943759, 3.2697259], [1516904940000, 0.0943759, 0.0943759, 0.0943759, 0.0943759, 1.1933405], [1516905000000, 0.0943759, 0.0943759, 0.09437589, 0.09437589, 5.22307107], [1516905060000, 0.09437589, 0.09437589, 0.09420001, 0.094375, 5.60083237], [1516905120000, 0.094375, 0.09437588, 0.09420002, 0.09437587, 5.90017644], [1516905180000, 0.09437587, 0.09437587, 0.09420001, 0.0942002, 4.73980131], [1516905240000, 0.09420022, 0.09437587, 0.09420022, 0.09437586, 2.51468597], [1516905300000, 0.094371, 0.09437588, 0.094371, 0.09437588, 21.91255711], [1516905360000, 0.09437588, 0.09437588, 0.09411501, 0.09437, 11.0170376], [1516905420000, 0.09437, 0.09437, 0.09411501, 0.09411501, 5.98428945], [1516905480000, 0.09411501, 0.09411501, 0.09411, 0.09411, 6.43783959], [1516905540000, 0.09411, 0.09411501, 0.09411, 0.09411501, 8.50222737], [1516905600000, 0.09411501, 0.09437, 0.09411501, 0.09437, 1.98493588], [1516905660000, 0.09437, 0.09437, 0.09411601, 0.09437, 5.21044924], [1516905720000, 0.09411601, 0.09437, 0.09411001, 0.0943, 3.11527402], [1516905780000, 0.09435, 0.09437, 0.0943, 0.0943, 2.46074357], [1516905840000, 0.0943, 0.09437, 0.0943, 0.09437, 3.15230321], [1516905900000, 0.0943, 0.09437, 0.0943, 0.09437, 2.19528747], [1516905960000, 0.09437, 0.09437, 0.0942, 0.0942, 0.45650004], [1516906020000, 0.0943, 0.09437, 0.09411505, 0.0942, 14.93978474], [1516906080000, 0.0942, 0.0942, 0.09411505, 0.0942, 4.91163169], [1516906140000, 0.09411505, 0.0942, 0.09411505, 0.0942, 2.24135487], [1516906200000, 0.0942, 0.0942, 0.09411505, 0.09419999, 14.36675832], [1516906260000, 0.09411506, 0.09419999, 0.09411506, 0.09411506, 5.21107962], [1516906320000, 0.09419999, 0.09419999, 0.09411505, 0.09419995, 6.72116943], [1516906380000, 0.09419995, 0.09419995, 0.09411505, 0.09419, 4.18293383], [1516906440000, 0.09419001, 0.09419001, 0.09419, 0.09419, 0.78117175], [1516906500000, 0.09419, 0.09419, 0.09414505, 0.09415504, 9.17889777], [1516906560000, 0.09414504, 0.09414504, 0.09411505, 0.09414504, 9.0085229], [1516906620000, 0.09412507, 0.09414504, 0.09411505, 0.09414504, 21.23817674], [1516906680000, 0.09414504, 0.0942, 0.09411501, 0.0942, 81.12366769], [1516906740000, 0.0942, 0.09437, 0.0942, 0.09437, 5.18627727], [1516906800000, 0.09437, 0.09437, 0.0942, 0.09437, 8.44132941], [1516906860000, 0.09429499, 0.09437, 0.09411501, 0.09437, 6.12448897], [1516906920000, 0.09437, 0.09437, 0.09429499, 0.09437, 6.05648296], [1516906980000, 0.09437, 0.09437, 0.094295, 0.09437, 3.24731223], [1516907040000, 0.09437, 0.09437, 0.094295, 0.094295, 1.41070412], [1516907100000, 0.09437, 0.09437, 0.094295, 0.09429505, 1.85818133], [1516907160000, 0.09429505, 0.09435, 0.094295, 0.094296, 6.56770047], [1516907220000, 0.09435, 0.09435, 0.094296, 0.09435, 6.19080618], [1516907280000, 0.09435, 0.09435, 0.0943, 0.0943, 1.95983165], [1516907340000, 0.0943, 0.09433, 0.0943, 0.09433, 2.03174656], [1516907400000, 0.09433, 0.09433, 0.09429505, 0.09433, 9.74356978], [1516907460000, 0.09433, 0.09435, 0.09431499, 0.09435, 6.02230755], [1516907520000, 0.09435, 0.09435, 0.09431499, 0.09435, 2.57390216], [1516907580000, 0.09435, 0.09437, 0.09431499, 0.09437, 50.06911302], [1516907640000, 0.09437, 0.0945, 0.09433385, 0.09435, 28.07551584], [1516907700000, 0.09444435, 0.09469611, 0.09444435, 0.0946789, 62.7741731], [1516907760000, 0.0946789, 0.09469615, 0.0946789, 0.09469615, 21.71506952], [1516907820000, 0.09469615, 0.094709, 0.09469615, 0.0947, 27.9586588], [1516907880000, 0.09469999, 0.0948, 0.09469999, 0.09479876, 8.82588613], [1516907940000, 0.0948, 0.09480585, 0.09475, 0.09478585, 16.26413866], [1516908000000, 0.09478585, 0.0948, 0.09475, 0.0947658, 7.31297393], [1516908060000, 0.0947658, 0.0948, 0.09471002, 0.09471002, 9.75955108], [1516908120000, 0.0947758, 0.0948, 0.09471002, 0.09471002, 12.85818087], [1516908180000, 0.09471002, 0.0948, 0.09469, 0.09471004, 11.98171323], [1516908240000, 0.0948, 0.0948, 0.09471002, 0.09471004, 6.95030736], [1516908300000, 0.09471004, 0.0948, 0.09471004, 0.0948, 17.09529801], [1516908360000, 0.0948, 0.0948, 0.09471005, 0.09471005, 4.36909621], [1516908420000, 0.0948, 0.09481, 0.09471002, 0.09481, 42.78829864], [1516908480000, 0.09475, 0.094927, 0.09471002, 0.094927, 85.16823633], [1516908540000, 0.094711, 0.09492787, 0.094711, 0.09492787, 7.68073619], [1516908600000, 0.09492787, 0.09492998, 0.09475, 0.09475, 4.51098229], [1516908660000, 0.0948, 0.09492785, 0.0948, 0.0948, 2.28615533], [1516908720000, 0.0948, 0.0948, 0.094711, 0.094711, 3.40710097], [1516908780000, 0.0948, 0.0948, 0.0948, 0.0948, 0.17546619], [1516908840000, 0.0948, 0.0948, 0.0948, 0.0948, 0.83464297], [1516908900000, 0.0948, 0.09492787, 0.09471112, 0.0948, 15.54551592], [1516908960000, 0.09492787, 0.09492998, 0.09471002, 0.09471003, 63.965169], [1516909020000, 0.09471005, 0.09471005, 0.09471002, 0.09471005, 28.16843909], [1516909080000, 0.09471003, 0.09471005, 0.09471002, 0.09471002, 10.09560168], [1516909140000, 0.09471002, 0.09471005, 0.09471002, 0.09471005, 5.58850002], [1516909200000, 0.09471005, 0.09471005, 0.09471002, 0.09471005, 1.51773593], [1516909260000, 0.09471005, 0.09491441, 0.09471002, 0.09491, 39.82458495], [1516909320000, 0.09491, 0.09491, 0.09471152, 0.09471152, 2.33709697], [1516909380000, 0.09491, 0.09491, 0.09471002, 0.09485697, 15.56861397], [1516909440000, 0.09490999, 0.09491, 0.09471002, 0.09491, 9.54771305], [1516909500000, 0.09491, 0.09491, 0.09471002, 0.09471002, 4.14244003], [1516909560000, 0.09490998, 0.09491, 0.09471002, 0.094711, 47.76516109], [1516909620000, 0.09491, 0.09491, 0.09471002, 0.09480725, 25.72570709], [1516909680000, 0.09491, 0.09491, 0.09480725, 0.09480725, 3.34986015], [1516909740000, 0.09480725, 0.09491, 0.09471002, 0.09471002, 47.67391246], [1516909800000, 0.09471002, 0.09491, 0.09471002, 0.09490999, 24.57712974], [1516909860000, 0.09471003, 0.09491, 0.09471002, 0.0949, 16.29348067], [1516909920000, 0.0949, 0.0949, 0.09471002, 0.09489997, 2.79328829], [1516909980000, 0.09471002, 0.09489997, 0.09471002, 0.09471002, 3.79170408], [1516910040000, 0.09489997, 0.09489997, 0.09471002, 0.09471002, 4.6674198], [1516910100000, 0.09489997, 0.09489997, 0.09471002, 0.09471003, 2.45456468], [1516910160000, 0.09480474, 0.0949, 0.09480474, 0.0949, 2.96813083], [1516910220000, 0.0949, 0.0949, 0.09489954, 0.09489954, 13.0313465], [1516910280000, 0.09489954, 0.0949, 0.09480475, 0.09480475, 14.73308077], [1516910340000, 0.09489999, 0.09491, 0.09480475, 0.09491, 22.4144857], [1516910400000, 0.09480475, 0.09491, 0.09480475, 0.09491, 3.8321273], [1516910460000, 0.09491, 0.09492998, 0.09480475, 0.09492998, 4.56852192], [1516910520000, 0.09492998, 0.09492998, 0.09480475, 0.0949299, 9.6479083], [1516910580000, 0.0949299, 0.09493, 0.09489955, 0.09489955, 24.13465764], [1516910640000, 0.09493, 0.09493, 0.09472, 0.09472, 29.6468619], [1516910700000, 0.09489955, 0.09489955, 0.09472, 0.09472, 3.88631145], [1516910760000, 0.09487958, 0.09487958, 0.09472, 0.09472, 16.81796365], [1516910820000, 0.09472, 0.09487957, 0.09472, 0.09487957, 1.18822161], [1516910880000, 0.09487957, 0.09487957, 0.09472, 0.09487957, 7.73237135], [1516910940000, 0.09487952, 0.09487958, 0.09472, 0.09487958, 9.67735337], [1516911000000, 0.09472, 0.09487958, 0.09472, 0.09472001, 10.48166286], [1516911060000, 0.09488959, 0.09488959, 0.09488958, 0.09488958, 1.26239042], [1516911120000, 0.09488958, 0.09488959, 0.09473001, 0.09488959, 6.29187177], [1516911180000, 0.09488959, 0.09489959, 0.09473001, 0.09473001, 3.26432681], [1516911240000, 0.09489959, 0.09489959, 0.09473003, 0.09489959, 4.66579973], [1516911300000, 0.09489959, 0.09489959, 0.09471002, 0.094746, 26.59612065], [1516911360000, 0.09471002, 0.094746, 0.0947, 0.0947, 11.62916277], [1516911420000, 0.09470476, 0.09487958, 0.09469, 0.09485956, 9.29929784], [1516911480000, 0.09485956, 0.09487958, 0.09485956, 0.09487958, 13.93322453], [1516911540000, 0.09469, 0.09487958, 0.09464, 0.094879, 15.1908875], [1516911600000, 0.09468999, 0.09485956, 0.094259, 0.09445236, 3.84808303], [1516911660000, 0.09475, 0.094879, 0.09450001, 0.09475, 3.6775656], [1516911720000, 0.09475, 0.094879, 0.09475, 0.094879, 14.2399106], [1516911780000, 0.0947, 0.094879, 0.0947, 0.09487898, 4.8150293], [1516911840000, 0.094879, 0.09487958, 0.0947, 0.0947, 6.49720128], [1516911900000, 0.0947, 0.094879, 0.0947, 0.094879, 6.15477282], [1516911960000, 0.0947, 0.094879, 0.0947, 0.09487899, 7.34128424], [1516912020000, 0.09487899, 0.09487899, 0.09487899, 0.09487899, 3.34499535], [1516912080000, 0.09487899, 0.094879, 0.09487898, 0.094879, 45.55212659], [1516912140000, 0.094879, 0.094879, 0.094879, 0.094879, 16.08213344], [1516912200000, 0.094879, 0.0948996, 0.09478979, 0.0948996, 9.36858498], [1516912260000, 0.0948996, 0.0949, 0.094879, 0.0949, 10.41778064], [1516912320000, 0.0949, 0.09493, 0.0947, 0.09478739, 5.68852154], [1516912380000, 0.09493, 0.09493, 0.09478739, 0.09493, 14.03937175], [1516912440000, 0.09493, 0.09493, 0.0949, 0.0949, 14.25406928], [1516912500000, 0.09493, 0.09493, 0.0949, 0.09492, 9.05974766], [1516912560000, 0.09492, 0.09493, 0.0949, 0.09493, 15.83603734], [1516912620000, 0.094929, 0.09493, 0.0949, 0.09493, 18.46634085], [1516912680000, 0.09493, 0.09493, 0.0949, 0.0949, 6.21333379], [1516912740000, 0.09492, 0.09493, 0.0949, 0.09493, 6.79696264], [1516912800000, 0.09493, 0.09493, 0.0949, 0.09493, 9.51722318], [1516912860000, 0.09493, 0.09493, 0.09478739, 0.09492999, 9.82418478], [1516912920000, 0.09492999, 0.09493, 0.09492911, 0.09492999, 5.673915], [1516912980000, 0.09492999, 0.09492999, 0.09492911, 0.09492995, 10.94634029], [1516913040000, 0.09492995, 0.09493, 0.09478739, 0.09493, 12.41574657], [1516913100000, 0.09493, 0.09493, 0.09492995, 0.09492995, 13.5858163], [1516913160000, 0.09492995, 0.09492995, 0.09478739, 0.09492995, 12.2791195], [1516913220000, 0.09493, 0.09493, 0.09492999, 0.09493, 4.99787353], [1516913280000, 0.09493, 0.09493, 0.09492999, 0.09492999, 3.70185765], [1516913340000, 0.09493, 0.09493, 0.09492999, 0.09493, 20.31806963], [1516913400000, 0.09493, 0.09493, 0.09492999, 0.09492999, 10.95602293], [1516913460000, 0.09492999, 0.09493, 0.09492999, 0.09493, 1.29032913], [1516913520000, 0.09493, 0.09493, 0.09492999, 0.09493, 33.81007977], [1516913580000, 0.09493, 0.09493, 0.09485059, 0.09485059, 3.27672382], [1516913640000, 0.0949275, 0.09493, 0.09485059, 0.09492, 7.6002482], [1516913700000, 0.09485059, 0.09492, 0.0948505, 0.09490999, 3.22305349], [1516913760000, 0.0948505, 0.09492, 0.0948505, 0.09492, 31.3933911], [1516913820000, 0.09492, 0.09492, 0.09492, 0.09492, 1.79083837], [1516913880000, 0.09492, 0.09493, 0.0948506, 0.0948506, 12.47533464], [1516913940000, 0.0948506, 0.09493, 0.09485051, 0.09493, 11.38618486], [1516914000000, 0.09485061, 0.09493, 0.09485051, 0.09493, 25.58346011], [1516914060000, 0.09485051, 0.09493, 0.09485051, 0.09485051, 59.64315097], [1516914120000, 0.09485051, 0.09493, 0.0948, 0.09492999, 12.40188756], [1516914180000, 0.09485061, 0.09493, 0.09485061, 0.09485062, 2.50173578], [1516914240000, 0.09493, 0.09493, 0.09485061, 0.09485061, 5.19261489], [1516914300000, 0.0948506, 0.09485061, 0.09474014, 0.09474014, 5.53422053], [1516914360000, 0.0948, 0.09492999, 0.09479, 0.09492999, 5.66186659], [1516914420000, 0.09483061, 0.09492999, 0.09474014, 0.09483061, 4.17630158], [1516914480000, 0.09492999, 0.09492999, 0.09483061, 0.09483061, 5.65075453], [1516914540000, 0.09483061, 0.09492999, 0.09483061, 0.0949, 10.93709634], [1516914600000, 0.0949, 0.09492999, 0.09483061, 0.09483061, 12.4450626], [1516914660000, 0.09483061, 0.09492999, 0.0948, 0.09492999, 1.99227973], [1516914720000, 0.09492999, 0.09492999, 0.09474014, 0.0948306, 12.51538873], [1516914780000, 0.0948306, 0.09483061, 0.0948306, 0.09483061, 3.58069708], [1516914840000, 0.09483061, 0.09483061, 0.0948306, 0.0948306, 7.73991218], [1516914900000, 0.0948306, 0.09493, 0.0948306, 0.09493, 9.43356482], [1516914960000, 0.09493, 0.09493, 0.09474014, 0.09493, 11.07923029], [1516915020000, 0.0948306, 0.09493, 0.09460001, 0.09493, 8.79808981], [1516915080000, 0.09493, 0.09493, 0.09460001, 0.09492999, 4.69483764], [1516915140000, 0.09492999, 0.09492999, 0.0948, 0.09492999, 3.54741547], [1516915200000, 0.09492999, 0.09493, 0.09471001, 0.09471001, 6.39240933], [1516915260000, 0.09493, 0.09493, 0.09493, 0.09493, 5.68774275], [1516915320000, 0.09492999, 0.09493, 0.09475, 0.09492999, 3.15627709], [1516915380000, 0.09475, 0.09493, 0.09471001, 0.09471001, 10.0262062], [1516915440000, 0.09471001, 0.09493, 0.09460001, 0.09492999, 15.3569526], [1516915500000, 0.09492999, 0.09492999, 0.09460001, 0.09460001, 29.35482569], [1516915560000, 0.09460001, 0.09493, 0.09446736, 0.09492992, 39.08159408], [1516915620000, 0.09460003, 0.09493, 0.09446736, 0.09446738, 91.61294891], [1516915680000, 0.09460004, 0.09492954, 0.09446736, 0.09446736, 35.87926804], [1516915740000, 0.09446736, 0.0948, 0.09446736, 0.09446736, 166.46949846], [1516915800000, 0.0947, 0.09479999, 0.0944321, 0.09445535, 20.41443479], [1516915860000, 0.09446737, 0.09477, 0.0944321, 0.0944321, 5.38652311], [1516915920000, 0.0944321, 0.09445535, 0.09431, 0.0944321, 7.39979121], [1516915980000, 0.09445535, 0.09445535, 0.09431, 0.09445535, 41.50138199], [1516916040000, 0.09445535, 0.09469999, 0.09445535, 0.09469993, 9.73175189], [1516916100000, 0.09469993, 0.09469993, 0.09445535, 0.09469984, 5.27603099], [1516916160000, 0.09469985, 0.09469985, 0.09434199, 0.09469, 16.60392361], [1516916220000, 0.09466633, 0.09466633, 0.0942559, 0.09466631, 4.20154436], [1516916280000, 0.09466629, 0.09466631, 0.09417534, 0.09448524, 17.85685717], [1516916340000, 0.09466628, 0.09466628, 0.094225, 0.09463641, 3.23144065], [1516916400000, 0.09463641, 0.0946663, 0.0946364, 0.0946663, 4.71992185], [1516916460000, 0.09463641, 0.0946663, 0.09443641, 0.09443641, 5.93319709], [1516916520000, 0.09466627, 0.09466631, 0.09430421, 0.09443641, 13.80400873], [1516916580000, 0.0946663, 0.09466631, 0.09443641, 0.09466631, 1.89184374], [1516916640000, 0.09466631, 0.09466631, 0.09443641, 0.09466631, 20.50994533], [1516916700000, 0.0946663, 0.09466631, 0.09443641, 0.09443641, 4.85742329], [1516916760000, 0.09443641, 0.09466631, 0.0941, 0.0946663, 216.89599859], [1516916820000, 0.0946663, 0.09466631, 0.09454659, 0.09466631, 24.94813725], [1516916880000, 0.094666, 0.09466631, 0.0943695, 0.09466, 10.52690445], [1516916940000, 0.09465999, 0.09465999, 0.0943695, 0.0943695, 12.6460339], [1516917000000, 0.0943695, 0.09452974, 0.0943695, 0.09452974, 3.37112705], [1516917060000, 0.09452974, 0.09465999, 0.094126, 0.094126, 39.61272031], [1516917120000, 0.09465998, 0.09465998, 0.094125, 0.09428087, 10.76071468], [1516917180000, 0.09428087, 0.09429587, 0.094125, 0.09429587, 35.59868328], [1516917240000, 0.09465993, 0.09465993, 0.09429587, 0.0946599, 14.0325155], [1516917300000, 0.09465996, 0.09465998, 0.0944321, 0.0945, 7.44236638], [1516917360000, 0.09465998, 0.09465998, 0.0941866, 0.0942191, 13.95695531], [1516917420000, 0.09441206, 0.09447638, 0.0942341, 0.09447638, 2.21575569], [1516917480000, 0.09441206, 0.09447638, 0.09441206, 0.09447638, 16.21210834], [1516917540000, 0.09441206, 0.09466631, 0.09441206, 0.09466631, 39.16591753], [1516917600000, 0.09447638, 0.09469359, 0.0941321, 0.09469355, 30.11515989], [1516917660000, 0.09469355, 0.09469355, 0.09413211, 0.09466, 2.44124277], [1516917720000, 0.09457533, 0.09469345, 0.09424615, 0.094693, 6.5532399], [1516917780000, 0.094693, 0.094693, 0.09424616, 0.09464609, 2.60738185], [1516917840000, 0.09464618, 0.09464619, 0.09431515, 0.09431515, 3.77949278], [1516917900000, 0.09429457, 0.09464619, 0.09429457, 0.09464609, 6.10463875], [1516917960000, 0.09464609, 0.09464609, 0.09433015, 0.09461469, 1.73819132], [1516918020000, 0.09461469, 0.09466, 0.0941, 0.09433016, 37.43817399], [1516918080000, 0.09433016, 0.094693, 0.09410003, 0.09419413, 23.43168655], [1516918140000, 0.09420913, 0.09482998, 0.09419413, 0.09469999, 16.16453437], [1516918200000, 0.09469999, 0.09469999, 0.09469977, 0.09469977, 1.02353202], [1516918260000, 0.09469977, 0.0946999, 0.09428831, 0.09469977, 6.78356345], [1516918320000, 0.09469976, 0.09482999, 0.09410001, 0.09482999, 43.189782], [1516918380000, 0.09478048, 0.09478048, 0.09469615, 0.09469615, 1.30323224], [1516918440000, 0.09464083, 0.09464083, 0.0945, 0.0945, 1.86195832], [1516918500000, 0.0945, 0.09469615, 0.0945, 0.09469615, 1.88478333], [1516918560000, 0.09467955, 0.09469615, 0.09457041, 0.0946795, 15.12948095], [1516918620000, 0.09469615, 0.09469615, 0.0946795, 0.09467955, 7.57149249], [1516918680000, 0.09469615, 0.09469615, 0.09457052, 0.09467955, 5.70460001], [1516918740000, 0.09467955, 0.09469615, 0.09457052, 0.09467955, 28.41190533], [1516918800000, 0.09469615, 0.09483, 0.09467955, 0.09482999, 13.19854902], [1516918860000, 0.09482999, 0.09483, 0.09467955, 0.09467955, 8.32591031], [1516918920000, 0.0946796, 0.09483, 0.09462503, 0.09483, 4.22397097], [1516918980000, 0.09483, 0.09483, 0.0945924, 0.0945924, 6.8685696], [1516919040000, 0.0945924, 0.09483, 0.0945924, 0.0945924, 8.35587383], [1516919100000, 0.09482, 0.09482, 0.09459239, 0.09459239, 17.24053309], [1516919160000, 0.09476629, 0.09481998, 0.09457052, 0.09479155, 15.75647385], [1516919220000, 0.09479154, 0.09479154, 0.09457052, 0.09457052, 35.50552661], [1516919280000, 0.09479152, 0.09479152, 0.09457052, 0.0946, 2.62906428], [1516919340000, 0.0946, 0.09479151, 0.09457049, 0.09479151, 13.96541718], [1516919400000, 0.0947915, 0.0947915, 0.09431021, 0.09457049, 8.15856853], [1516919460000, 0.09457049, 0.09479151, 0.0941, 0.09475421, 33.48938537], [1516919520000, 0.09475421, 0.09475421, 0.09405639, 0.09469611, 29.23177199], [1516919580000, 0.09433698, 0.09469607, 0.09433697, 0.09469605, 17.45701264], [1516919640000, 0.09469605, 0.09469606, 0.09433697, 0.09469605, 18.94393846], [1516919700000, 0.09469605, 0.09469606, 0.09455802, 0.09469606, 17.67000118], [1516919760000, 0.09469605, 0.09469606, 0.0945, 0.0945, 12.3141229], [1516919820000, 0.09469605, 0.09469605, 0.0945, 0.09469605, 31.63709398], [1516919880000, 0.09469604, 0.09469604, 0.09445, 0.09445, 25.6641984], [1516919940000, 0.09450004, 0.09469606, 0.09445, 0.0945, 18.34295562], [1516920000000, 0.0945, 0.09469606, 0.09445, 0.09445, 8.65619928], [1516920060000, 0.09469603, 0.09469606, 0.09433697, 0.09433697, 7.47909895], [1516920120000, 0.09445, 0.09469602, 0.09445, 0.0945, 1.21191881], [1516920180000, 0.0945, 0.09469606, 0.0945, 0.09469602, 15.92815343], [1516920240000, 0.09469611, 0.09469615, 0.09459802, 0.09459802, 1.38622249], [1516920300000, 0.09469604, 0.09478059, 0.09459802, 0.09477059, 4.78951253], [1516920360000, 0.0946962, 0.09479154, 0.094599, 0.094599, 11.13278054], [1516920420000, 0.094599, 0.09477048, 0.094599, 0.094599, 9.83575876], [1516920480000, 0.094599, 0.09481915, 0.094599, 0.094599, 33.13453877], [1516920540000, 0.09477028, 0.09480992, 0.094599, 0.09480992, 23.18209295], [1516920600000, 0.09480992, 0.09481999, 0.094599, 0.09459902, 5.16804038], [1516920660000, 0.09479492, 0.09481999, 0.094599, 0.09481999, 18.74566969], [1516920720000, 0.09481998, 0.09481998, 0.0945, 0.0945945, 6.594042], [1516920780000, 0.0945945, 0.09481892, 0.0945, 0.0948189, 4.09793955], [1516920840000, 0.0948189, 0.09481892, 0.0948089, 0.0948089, 5.3175254], [1516920900000, 0.0948089, 0.09481998, 0.0945945, 0.09466306, 5.77893218], [1516920960000, 0.09466306, 0.09481999, 0.09466306, 0.09475781, 7.97943663], [1516921020000, 0.09475781, 0.0948, 0.09475781, 0.09475781, 14.93357458], [1516921080000, 0.0948, 0.0948, 0.09475781, 0.09475781, 22.31489214], [1516921140000, 0.09475781, 0.0948, 0.09475781, 0.09475781, 6.3918114], [1516921200000, 0.094758, 0.09478816, 0.09475781, 0.094758, 2.53525683], [1516921260000, 0.09478816, 0.0948, 0.094758, 0.09478816, 29.42801212], [1516921320000, 0.09478816, 0.09480971, 0.09478816, 0.09478816, 1.19634038], [1516921380000, 0.09479999, 0.09481999, 0.094758, 0.094758, 27.60507405], [1516921440000, 0.0948, 0.09483, 0.094758, 0.09483, 17.18468242], [1516921500000, 0.094758, 0.09483, 0.094758, 0.09482997, 7.26877736], [1516921560000, 0.09482997, 0.09483, 0.094758, 0.09481994, 42.52585619], [1516921620000, 0.094758, 0.09483, 0.094758, 0.09483, 12.02563052], [1516921680000, 0.09483, 0.09483, 0.094758, 0.09482999, 42.70048414], [1516921740000, 0.094758, 0.09482999, 0.0945945, 0.09475781, 13.85939145], [1516921800000, 0.09475781, 0.09483, 0.09475781, 0.0948, 11.1906511], [1516921860000, 0.0948, 0.09483, 0.09445, 0.09445, 7.83650413], [1516921920000, 0.09446, 0.09483, 0.09445, 0.09447, 20.9926484], [1516921980000, 0.09481903, 0.09482999, 0.09445, 0.09445, 23.3045335], [1516922040000, 0.09448999, 0.09448999, 0.09417532, 0.09448999, 9.72577516], [1516922100000, 0.0946992, 0.09477275, 0.09439987, 0.09439987, 33.76938368], [1516922160000, 0.09439987, 0.09439987, 0.09417532, 0.09431989, 6.55797022], [1516922220000, 0.09431989, 0.09439987, 0.0943, 0.09439987, 13.16711417], [1516922280000, 0.09439987, 0.09439987, 0.0943, 0.09439987, 43.37889945], [1516922340000, 0.09417532, 0.09439987, 0.09415306, 0.09432048, 7.27288552], [1516922400000, 0.09432048, 0.09439987, 0.0943, 0.09439987, 10.60125191], [1516922460000, 0.0943205, 0.0943205, 0.09415999, 0.0943205, 2.76149542], [1516922520000, 0.0943205, 0.09439987, 0.09415001, 0.09439987, 6.39270992], [1516922580000, 0.09439987, 0.09480484, 0.09410001, 0.09480484, 20.70016767], [1516922640000, 0.09458834, 0.094827, 0.0941, 0.0941, 8.57118063], [1516922700000, 0.09421365, 0.09452183, 0.09421365, 0.09451178, 1.91815559], [1516922760000, 0.09450178, 0.09469615, 0.09410001, 0.0943685, 11.10705127], [1516922820000, 0.09413002, 0.09450173, 0.09411502, 0.09450095, 2.20539657], [1516922880000, 0.09414502, 0.09449981, 0.09410001, 0.09449981, 4.27492647], [1516922940000, 0.09410001, 0.09449981, 0.09410001, 0.09449981, 5.61132026], [1516923000000, 0.0944998, 0.09449981, 0.09410001, 0.0943108, 1.15955267], [1516923060000, 0.09410002, 0.0947705, 0.09410001, 0.09472795, 15.81904171], [1516923120000, 0.09472795, 0.09472795, 0.09410001, 0.09410001, 21.69231996], [1516923180000, 0.09431079, 0.09469613, 0.09410003, 0.09410003, 2.60628442], [1516923240000, 0.09420002, 0.09469087, 0.09410003, 0.0946797, 16.87080295], [1516923300000, 0.09466974, 0.09467969, 0.09410003, 0.09410003, 13.89587029], [1516923360000, 0.09457999, 0.09458894, 0.09456695, 0.09456695, 0.97232266], [1516923420000, 0.09456695, 0.09458894, 0.09410003, 0.09410003, 35.5385451], [1516923480000, 0.09410004, 0.09456666, 0.09410003, 0.09410003, 6.97509745], [1516923540000, 0.09452439, 0.09452439, 0.09410006, 0.09444893, 1.49673852], [1516923600000, 0.09410006, 0.0944, 0.09410003, 0.09410006, 37.09352482], [1516923660000, 0.09410006, 0.0942, 0.09410006, 0.09419998, 2.18930611], [1516923720000, 0.09419998, 0.09419998, 0.09410001, 0.09410001, 13.94910952], [1516923780000, 0.09410003, 0.09410003, 0.0941, 0.0941, 15.42622287], [1516923840000, 0.0941, 0.09419998, 0.0941, 0.0941, 24.46020885], [1516923900000, 0.09419998, 0.09439766, 0.09406029, 0.09406029, 13.85797005], [1516923960000, 0.09406029, 0.09439765, 0.09406029, 0.09437992, 7.49806095], [1516924020000, 0.09437683, 0.09437992, 0.0942, 0.09434894, 6.8816109], [1516924080000, 0.09433894, 0.09435895, 0.0942, 0.09434795, 14.39421621], [1516924140000, 0.09433794, 0.09434795, 0.0943, 0.0943, 1.77623071], [1516924200000, 0.0942978, 0.09429788, 0.09415, 0.09429775, 16.85512269], [1516924260000, 0.09429775, 0.09429775, 0.0941, 0.0941, 4.19409883], [1516924320000, 0.0942977, 0.09429771, 0.0941, 0.09410001, 6.18275465], [1516924380000, 0.09429779, 0.094299, 0.0941, 0.0942977, 7.00862443], [1516924440000, 0.0942977, 0.0943, 0.09410001, 0.09410001, 8.32994277], [1516924500000, 0.09410001, 0.09435989, 0.09410001, 0.0943, 4.70812944], [1516924560000, 0.09435989, 0.09435989, 0.0943, 0.0943, 37.71184448], [1516924620000, 0.09429999, 0.09435, 0.09429999, 0.09434894, 29.48759994], [1516924680000, 0.0943, 0.0943, 0.09410001, 0.09410001, 5.41089816], [1516924740000, 0.09410003, 0.09429896, 0.09410001, 0.09410001, 8.83289608], [1516924800000, 0.09412002, 0.09429897, 0.09410001, 0.09412002, 18.8285237], [1516924860000, 0.09428897, 0.09428897, 0.094, 0.094035, 30.0516001], [1516924920000, 0.094036, 0.09428897, 0.094, 0.09428897, 14.85454035], [1516924980000, 0.09428896, 0.09428897, 0.09400002, 0.09425, 11.40900843], [1516925040000, 0.09400002, 0.09400002, 0.094, 0.09400002, 15.78797298], [1516925100000, 0.09400002, 0.09400002, 0.094, 0.094, 17.49651875], [1516925160000, 0.094, 0.09424996, 0.09389, 0.09400003, 14.8231785], [1516925220000, 0.09400003, 0.09425, 0.094, 0.09425, 21.18801152], [1516925280000, 0.09400003, 0.09425, 0.094, 0.09424999, 6.98240554], [1516925340000, 0.09424998, 0.09424999, 0.09389, 0.09389, 23.62655736], [1516925400000, 0.09389, 0.09424998, 0.093883, 0.093883, 11.03983248], [1516925460000, 0.093882, 0.09424999, 0.09385, 0.0942008, 10.7750186], [1516925520000, 0.0942008, 0.09424999, 0.09385003, 0.09405627, 8.91783417], [1516925580000, 0.09424999, 0.09425, 0.09424999, 0.09424999, 8.94341946], [1516925640000, 0.09424999, 0.09425, 0.09385, 0.09405627, 9.59116923], [1516925700000, 0.09385004, 0.09405627, 0.09385, 0.09405627, 35.18924376], [1516925760000, 0.09385001, 0.09405627, 0.09385001, 0.09404627, 2.11110239], [1516925820000, 0.09404627, 0.09404627, 0.09385001, 0.09404627, 10.67743874], [1516925880000, 0.09385003, 0.09405627, 0.09385002, 0.0940527, 8.53699389], [1516925940000, 0.09404627, 0.09405627, 0.09385001, 0.09405627, 9.87488299], [1516926000000, 0.09405626, 0.09405627, 0.09385001, 0.09394386, 2.7691953], [1516926060000, 0.09385002, 0.09405, 0.09385001, 0.09404999, 3.67703521], [1516926120000, 0.09404999, 0.09404999, 0.09399693, 0.09404998, 1.68009781], [1516926180000, 0.09399695, 0.09405627, 0.09394386, 0.09405627, 14.4594209], [1516926240000, 0.09405627, 0.09405627, 0.093875, 0.09394386, 6.11979367], [1516926300000, 0.093875, 0.09405627, 0.093875, 0.09394386, 41.34213246], [1516926360000, 0.0940378, 0.09405627, 0.09387, 0.09405627, 6.20700755], [1516926420000, 0.09387, 0.09425, 0.09387, 0.09405627, 63.73461], [1516926480000, 0.09387002, 0.09405627, 0.09387002, 0.09405627, 7.75232084], [1516926540000, 0.09405627, 0.09405627, 0.0939, 0.09405627, 48.33772759], [1516926600000, 0.09425, 0.09425, 0.0939, 0.09424896, 87.62658462], [1516926660000, 0.09424895, 0.09424895, 0.09387, 0.09390001, 28.38752211], [1516926720000, 0.09390001, 0.09423876, 0.0937808, 0.09384999, 121.56309126], [1516926780000, 0.0937808, 0.09384999, 0.0937808, 0.09384999, 18.83255766], [1516926840000, 0.09384999, 0.09384999, 0.09374, 0.09384999, 13.95665282], [1516926900000, 0.09378082, 0.09384999, 0.09374, 0.09384998, 5.09558423], [1516926960000, 0.09384998, 0.09384999, 0.09384998, 0.09384998, 24.23262853], [1516927020000, 0.09384999, 0.09384999, 0.09384998, 0.09384999, 13.6996556], [1516927080000, 0.09384998, 0.09425, 0.09374, 0.09415956, 246.532377], [1516927140000, 0.093741, 0.09435, 0.09373998, 0.09412022, 265.40696976], [1516927200000, 0.09373998, 0.09418021, 0.09349075, 0.09417531, 103.692982], [1516927260000, 0.09379374, 0.09417496, 0.093425, 0.09350402, 20.85015249], [1516927320000, 0.09410432, 0.09417489, 0.09350405, 0.09379374, 6.28564772], [1516927380000, 0.09410395, 0.09410395, 0.09379374, 0.09410395, 2.24659199], [1516927440000, 0.09379374, 0.0941749, 0.09379374, 0.09410395, 9.35048394], [1516927500000, 0.09417394, 0.09417394, 0.09384999, 0.09410395, 22.4897101], [1516927560000, 0.09410295, 0.09410395, 0.094, 0.09400001, 11.25069572], [1516927620000, 0.09384998, 0.09410294, 0.0933379, 0.09410192, 144.17490578], [1516927680000, 0.09378, 0.0941019, 0.09360879, 0.09401449, 3.44683286], [1516927740000, 0.09401449, 0.0941029, 0.09360879, 0.094, 34.37285571], [1516927800000, 0.094, 0.09410188, 0.09361046, 0.09405752, 6.36196735], [1516927860000, 0.09410183, 0.09410185, 0.0936105, 0.094, 13.62118966], [1516927920000, 0.094, 0.09405282, 0.09342613, 0.0935065, 27.53187717], [1516927980000, 0.09403399, 0.09405282, 0.093338, 0.09356, 61.99395624], [1516928040000, 0.09356498, 0.09404, 0.0933379, 0.09400485, 60.83230244], [1516928100000, 0.09361051, 0.09403776, 0.0936105, 0.09402694, 4.85445923], [1516928160000, 0.09402688, 0.09402688, 0.093522, 0.093522, 11.72969356], [1516928220000, 0.094, 0.09402486, 0.093522, 0.0940219, 12.92392815], [1516928280000, 0.09401899, 0.09401899, 0.09352303, 0.09352303, 1.81142503], [1516928340000, 0.09399876, 0.09399876, 0.09352305, 0.09352305, 7.41802346], [1516928400000, 0.093995, 0.093995, 0.09380001, 0.09380001, 5.17842837], [1516928460000, 0.0938, 0.09399479, 0.09352303, 0.09399476, 5.82882806], [1516928520000, 0.09399476, 0.09399476, 0.09353, 0.093534, 2.39685959], [1516928580000, 0.09380001, 0.09398478, 0.09380001, 0.09398478, 0.43105822], [1516928640000, 0.09390309, 0.09398395, 0.09353403, 0.09398391, 5.81044226], [1516928700000, 0.09353404, 0.09398378, 0.09353404, 0.09353501, 0.79566165], [1516928760000, 0.09353504, 0.0939, 0.09353504, 0.09388883, 0.69458879], [1516928820000, 0.09388687, 0.09388687, 0.09379893, 0.09388682, 3.41446808], [1516928880000, 0.09388393, 0.09388393, 0.09356, 0.09388289, 23.09611341], [1516928940000, 0.09388289, 0.0938829, 0.09357, 0.09387699, 18.57124755], [1516929000000, 0.09387599, 0.09387599, 0.093585, 0.09358694, 8.01290163], [1516929060000, 0.093873, 0.093873, 0.09358502, 0.09358502, 5.41045582], [1516929120000, 0.09387195, 0.09387195, 0.09356001, 0.09356001, 19.18933471], [1516929180000, 0.09387164, 0.09387164, 0.09387073, 0.09387073, 1.11841472], [1516929240000, 0.09387061, 0.09387061, 0.0935601, 0.09356011, 7.25781401], [1516929300000, 0.09386971, 0.09386971, 0.09365367, 0.09365367, 10.73305155], [1516929360000, 0.09386795, 0.093868, 0.09356011, 0.09386695, 27.68603324], [1516929420000, 0.09386794, 0.093868, 0.09386695, 0.093868, 79.03692734], [1516929480000, 0.09386793, 0.09386799, 0.09356011, 0.09356011, 11.39085179], [1516929540000, 0.09386694, 0.09386695, 0.09356011, 0.093568, 25.97344946], [1516929600000, 0.093568, 0.09386695, 0.093568, 0.09386588, 4.25878726], [1516929660000, 0.09386576, 0.09386576, 0.093583, 0.09386493, 7.22454023], [1516929720000, 0.09386493, 0.09386493, 0.093583, 0.093583, 10.80492831], [1516929780000, 0.093583, 0.09386386, 0.093583, 0.09386289, 8.77195354], [1516929840000, 0.09386289, 0.09386289, 0.0936, 0.093692, 53.38068437], [1516929900000, 0.09374887, 0.09374887, 0.09356801, 0.0936, 48.37781235], [1516929960000, 0.09369187, 0.09369188, 0.0936, 0.0936, 29.96030529], [1516930020000, 0.0936918, 0.09369183, 0.09356011, 0.09356011, 59.60997225], [1516930080000, 0.09369099, 0.093691, 0.0935601, 0.09356013, 10.56396435], [1516930140000, 0.09369094, 0.09388682, 0.09369094, 0.093691, 40.82121538], [1516930200000, 0.093885, 0.09388679, 0.093522, 0.09388388, 55.12497873], [1516930260000, 0.09388388, 0.09388388, 0.09330935, 0.0935229, 35.32019326], [1516930320000, 0.09342153, 0.09356011, 0.09330879, 0.09355011, 25.43880569], [1516930380000, 0.09343431, 0.09356011, 0.09330941, 0.09331555, 15.82319492], [1516930440000, 0.09331555, 0.09388676, 0.0933094, 0.09388614, 12.1574875], [1516930500000, 0.09344335, 0.09388614, 0.09330933, 0.09336501, 40.53135183], [1516930560000, 0.09373316, 0.09386571, 0.09330938, 0.09333046, 22.33129743], [1516930620000, 0.09340901, 0.09386571, 0.09333044, 0.093691, 40.30067584], [1516930680000, 0.093691, 0.093691, 0.0933, 0.09366097, 10.99500942], [1516930740000, 0.09365994, 0.09365994, 0.09330001, 0.09364693, 20.44232952], [1516930800000, 0.09364693, 0.09364894, 0.09330002, 0.09330004, 12.73015361], [1516930860000, 0.09330004, 0.09399999, 0.09330004, 0.09395389, 25.27070084], [1516930920000, 0.09364789, 0.09399988, 0.09331004, 0.09332001, 17.69163948], [1516930980000, 0.09388999, 0.09389, 0.09332001, 0.09351, 12.97351863], [1516931040000, 0.09378999, 0.09378999, 0.09350001, 0.09354, 3.92656583], [1516931100000, 0.09351, 0.09376958, 0.09339779, 0.09339779, 14.09318839], [1516931160000, 0.09341279, 0.09373991, 0.09332005, 0.09341779, 44.2979884], [1516931220000, 0.09341779, 0.09343278, 0.09332006, 0.09342779, 12.42685296], [1516931280000, 0.09344279, 0.09369981, 0.09341778, 0.0934531, 3.28464961], [1516931340000, 0.09346299, 0.0934681, 0.09341, 0.09342779, 15.21709003], [1516931400000, 0.0934681, 0.09361995, 0.0934681, 0.09360894, 11.66159278], [1516931460000, 0.09360891, 0.09360894, 0.09360888, 0.09360888, 9.66056386], [1516931520000, 0.09360891, 0.09363995, 0.09341, 0.09341, 72.8262008], [1516931580000, 0.09341, 0.09364, 0.09341, 0.09364, 5.95436642], [1516931640000, 0.09364, 0.09364, 0.09332007, 0.09364, 133.50663575], [1516931700000, 0.09376958, 0.0939999, 0.09333507, 0.09395119, 15.12668798], [1516931760000, 0.0939277, 0.09396055, 0.09375958, 0.09375958, 7.05338028], [1516931820000, 0.09392768, 0.09404, 0.09375958, 0.09404, 24.98327449], [1516931880000, 0.09392768, 0.09392795, 0.09375959, 0.09392795, 7.76367204], [1516931940000, 0.09403005, 0.09404371, 0.09375959, 0.09399, 34.37723436], [1516932000000, 0.09375959, 0.09387779, 0.09375, 0.09375, 24.67409121], [1516932060000, 0.09375, 0.09384648, 0.09364, 0.09364, 29.59340772], [1516932120000, 0.09364, 0.09394713, 0.09355994, 0.09387735, 35.06289412], [1516932180000, 0.09355994, 0.09385458, 0.09338421, 0.093595, 5.22201559], [1516932240000, 0.093595, 0.09395206, 0.09332005, 0.09366788, 20.8261441], [1516932300000, 0.09333333, 0.09393706, 0.0933095, 0.09330994, 29.99531807], [1516932360000, 0.09359027, 0.09367319, 0.0933, 0.0933, 56.89446473], [1516932420000, 0.09330002, 0.09395622, 0.09327259, 0.09346672, 67.70377059], [1516932480000, 0.09346672, 0.09375018, 0.09346672, 0.09362075, 8.97825561], [1516932540000, 0.09362074, 0.09373766, 0.09327259, 0.0936932, 13.48257505], [1516932600000, 0.09369321, 0.09369321, 0.09327259, 0.09361677, 9.11892025], [1516932660000, 0.09329259, 0.09361674, 0.09327259, 0.09327259, 19.85026916], [1516932720000, 0.0934592, 0.0934592, 0.09324768, 0.093459, 3.89820227], [1516932780000, 0.0932725, 0.09353711, 0.0932, 0.09353711, 12.40417854], [1516932840000, 0.0932, 0.09353711, 0.09303501, 0.09303501, 55.18562155], [1516932900000, 0.09303501, 0.09350068, 0.093011, 0.09303501, 59.72274618], [1516932960000, 0.09303501, 0.09331388, 0.093, 0.09331388, 83.05855669], [1516933020000, 0.09330388, 0.09330388, 0.093, 0.093, 62.97290142], [1516933080000, 0.0932638, 0.0932638, 0.093, 0.09326377, 62.94576257], [1516933140000, 0.09326378, 0.09336383, 0.093, 0.09328556, 34.01141447], [1516933200000, 0.0930001, 0.09328556, 0.0930001, 0.09328556, 9.72974751], [1516933260000, 0.093011, 0.09328556, 0.0930001, 0.09328556, 9.52718262], [1516933320000, 0.09328556, 0.09328556, 0.0930031, 0.09309726, 2.22343321], [1516933380000, 0.09309726, 0.09309726, 0.0930001, 0.09309726, 7.58351614], [1516933440000, 0.0930001, 0.09309726, 0.0930001, 0.09309726, 7.46788123], [1516933500000, 0.0930965, 0.09345258, 0.0930965, 0.09329961, 17.7485101], [1516933560000, 0.09329961, 0.09338896, 0.0930965, 0.09331356, 4.47612439], [1516933620000, 0.09331356, 0.09331356, 0.0931, 0.0931, 2.62568295], [1516933680000, 0.09331355, 0.09331355, 0.09300011, 0.09331354, 4.8615277], [1516933740000, 0.09330354, 0.09331354, 0.09300011, 0.09300012, 4.99411372], [1516933800000, 0.09300014, 0.09331355, 0.09300011, 0.09331355, 23.50039498], [1516933860000, 0.09331355, 0.09331355, 0.09315682, 0.09331355, 38.3023468], [1516933920000, 0.09331355, 0.09353712, 0.09331355, 0.09353712, 6.37989767], [1516933980000, 0.09331355, 0.09345352, 0.09331354, 0.09331354, 3.24698752], [1516934040000, 0.09345352, 0.09353712, 0.09331354, 0.09331355, 5.8955517], [1516934100000, 0.09332892, 0.09332892, 0.09331355, 0.09332892, 2.01154503], [1516934160000, 0.09332892, 0.09345352, 0.09331354, 0.09345352, 5.63111976], [1516934220000, 0.09345352, 0.09353712, 0.09345352, 0.09345352, 3.89238808], [1516934280000, 0.09345352, 0.09353712, 0.09345352, 0.09345352, 5.83652302], [1516934340000, 0.09345352, 0.09356425, 0.09345352, 0.09356425, 5.21892301], [1516934400000, 0.09356425, 0.0939627, 0.09345352, 0.09345352, 15.87000634], [1516934460000, 0.09345352, 0.09380684, 0.09345352, 0.09380681, 7.36486683], [1516934520000, 0.0935, 0.09371205, 0.09345352, 0.09345352, 8.44976443], [1516934580000, 0.09345352, 0.09371205, 0.09345352, 0.09371205, 11.85992372], [1516934640000, 0.09346, 0.093711, 0.09331354, 0.09331354, 133.3364231], [1516934700000, 0.09334138, 0.09334205, 0.09301496, 0.09334205, 32.83627055], [1516934760000, 0.09301496, 0.09334205, 0.0930001, 0.0930001, 19.76730496], [1516934820000, 0.09334205, 0.09334205, 0.09300015, 0.09305, 35.93346281], [1516934880000, 0.09305, 0.09330168, 0.09288311, 0.09299999, 58.89935489], [1516934940000, 0.09299999, 0.09330073, 0.09275001, 0.09307698, 81.42703156], [1516935000000, 0.09308945, 0.0931, 0.09282401, 0.09282401, 3.93435158], [1516935060000, 0.09309999, 0.0931, 0.09282401, 0.09285, 0.76781401], [1516935120000, 0.09309996, 0.09309996, 0.09285, 0.09285701, 0.63589936], [1516935180000, 0.09285701, 0.09309998, 0.09285, 0.09309998, 10.31619737], [1516935240000, 0.09309997, 0.09309997, 0.09285, 0.092857, 2.39998796], [1516935300000, 0.092857, 0.09309988, 0.09262996, 0.09262996, 81.45611652], [1516935360000, 0.092666, 0.09300966, 0.09259295, 0.092666, 17.57741229], [1516935420000, 0.09299643, 0.09299958, 0.09256, 0.09289998, 36.77083921], [1516935480000, 0.09289997, 0.09289999, 0.0925, 0.0925, 38.30519515], [1516935540000, 0.0925, 0.09279999, 0.092414, 0.09249599, 27.79363991], [1516935600000, 0.09249599, 0.09251099, 0.0921, 0.09251099, 103.1065702], [1516935660000, 0.09250099, 0.09276924, 0.09235, 0.09276923, 12.98093344], [1516935720000, 0.0927, 0.0927, 0.092497, 0.0927, 8.29604195], [1516935780000, 0.0927, 0.0928, 0.09207453, 0.0928, 52.40899474], [1516935840000, 0.0926, 0.0928, 0.0925, 0.0928, 23.73549161], [1516935900000, 0.0928, 0.09289997, 0.0925, 0.09289997, 18.44030926], [1516935960000, 0.09289997, 0.09289997, 0.09254777, 0.09289997, 9.6000868], [1516936020000, 0.09289997, 0.09289997, 0.09280002, 0.09289997, 12.20564509], [1516936080000, 0.09289997, 0.09289997, 0.09280002, 0.09289997, 23.60291], [1516936140000, 0.0929, 0.093095, 0.0929, 0.09291, 7.28963294], [1516936200000, 0.09299965, 0.0931, 0.09291, 0.0931, 11.4154811], [1516936260000, 0.0931, 0.09325, 0.09291, 0.09322832, 90.39993877], [1516936320000, 0.09322832, 0.09325, 0.09289997, 0.09289997, 21.56966687], [1516936380000, 0.09324999, 0.09324999, 0.09281, 0.09281, 27.47429919], [1516936440000, 0.0931, 0.0931, 0.09280001, 0.09291, 44.04026865], [1516936500000, 0.09309992, 0.09324996, 0.0926, 0.09280002, 20.31339779], [1516936560000, 0.09291, 0.09321075, 0.09260004, 0.09295175, 5.49810907], [1516936620000, 0.09295172, 0.09295175, 0.09262662, 0.09262662, 0.49317024], [1516936680000, 0.09275175, 0.09295175, 0.09275175, 0.09295175, 11.23737486], [1516936740000, 0.09276, 0.09295175, 0.0925, 0.09295175, 26.0497721], [1516936800000, 0.09295175, 0.09295175, 0.09262, 0.09262001, 3.0553648], [1516936860000, 0.0927, 0.0927, 0.09261501, 0.0927, 15.06567441], [1516936920000, 0.0927, 0.0927, 0.092615, 0.0927, 8.6046974], [1516936980000, 0.0927, 0.09295175, 0.09261501, 0.0927, 1.63545486], [1516937040000, 0.09295175, 0.09295175, 0.0927, 0.09295175, 5.63941554], [1516937100000, 0.09295175, 0.09295175, 0.092615, 0.092615, 3.69492171], [1516937160000, 0.09295175, 0.09295175, 0.092695, 0.092695, 2.06878927], [1516937220000, 0.09295171, 0.09295175, 0.092695, 0.09295175, 4.43314657], [1516937280000, 0.092695, 0.09295175, 0.092695, 0.0926951, 19.18551076], [1516937340000, 0.09295175, 0.09295175, 0.0926951, 0.0926951, 6.99515656], [1516937400000, 0.09295174, 0.09295174, 0.0926951, 0.0926951, 2.79679474], [1516937460000, 0.0926951, 0.09295175, 0.092695, 0.09295175, 3.08659705], [1516937520000, 0.09295175, 0.09295175, 0.0926951, 0.09295175, 5.28475391], [1516937580000, 0.09269511, 0.09295175, 0.09261501, 0.0928, 52.42114814], [1516937640000, 0.0928, 0.09295175, 0.09279999, 0.09295175, 4.88611142], [1516937700000, 0.09279999, 0.09295175, 0.09279999, 0.09281, 9.19703349], [1516937760000, 0.09281, 0.09309527, 0.09281, 0.0930447, 6.02454486], [1516937820000, 0.092825, 0.0930447, 0.09279999, 0.0930447, 10.13941532], [1516937880000, 0.0930447, 0.0930447, 0.09285457, 0.09304469, 4.13676452], [1516937940000, 0.09304469, 0.0930447, 0.09286458, 0.0930447, 12.08962304], [1516938000000, 0.0930447, 0.09309992, 0.09304469, 0.0930447, 36.03676622], [1516938060000, 0.09309991, 0.09309992, 0.09304469, 0.09304469, 42.9440636], [1516938120000, 0.09309991, 0.09309991, 0.09286459, 0.09309991, 12.93755644], [1516938180000, 0.09309991, 0.09309991, 0.092865, 0.092865, 10.80126817], [1516938240000, 0.0930999, 0.09309992, 0.092865, 0.09309992, 7.15505038], [1516938300000, 0.09309992, 0.09323723, 0.092865, 0.092865, 5.78227267], [1516938360000, 0.092865, 0.09323723, 0.092865, 0.09323723, 10.17951048], [1516938420000, 0.09323723, 0.09323723, 0.09287457, 0.0928746, 3.97660179], [1516938480000, 0.0929675, 0.093237, 0.0928746, 0.0929, 3.72776271], [1516938540000, 0.0931, 0.0931, 0.093, 0.093, 6.39100216], [1516938600000, 0.093, 0.0931, 0.093, 0.0931, 1.58268541], [1516938660000, 0.0931, 0.09323723, 0.0931, 0.09323723, 15.27086552], [1516938720000, 0.0932, 0.09323723, 0.0932, 0.0932, 21.97283407], [1516938780000, 0.0932, 0.0932, 0.09310003, 0.0932, 5.47117295], [1516938840000, 0.0932, 0.09321858, 0.09319996, 0.09321858, 2.93850161], [1516938900000, 0.09321858, 0.09323723, 0.09319996, 0.09323723, 10.67058913], [1516938960000, 0.09319996, 0.09323723, 0.09310005, 0.09323723, 52.76071321], [1516939020000, 0.09324999, 0.09324999, 0.09310003, 0.09310006, 27.35763013], [1516939080000, 0.09324999, 0.09324999, 0.09310006, 0.09324998, 6.25355614], [1516939140000, 0.09324998, 0.09324998, 0.09310003, 0.09310003, 47.91881873], [1516939200000, 0.09310006, 0.09324998, 0.093, 0.09310004, 41.46812773], [1516939260000, 0.09310004, 0.09324998, 0.09268372, 0.09315342, 39.91047192], [1516939320000, 0.09313952, 0.09324997, 0.092615, 0.09314809, 26.88146861], [1516939380000, 0.09314809, 0.09324998, 0.09260011, 0.093, 2.12173261], [1516939440000, 0.093, 0.09324999, 0.09260102, 0.09319457, 50.54143221], [1516939500000, 0.0931203, 0.0931203, 0.093, 0.09312024, 2.0242946], [1516939560000, 0.093, 0.09312992, 0.09260215, 0.092604, 6.04053451], [1516939620000, 0.09312011, 0.09312011, 0.09260401, 0.09304072, 3.12651277], [1516939680000, 0.0930403, 0.09318748, 0.09260502, 0.09304072, 6.34178251], [1516939740000, 0.09311257, 0.09311257, 0.09261, 0.09261, 6.62675678], [1516939800000, 0.09262, 0.09311253, 0.09261101, 0.0931125, 8.34011561], [1516939860000, 0.093031, 0.09311249, 0.09261101, 0.09304072, 1.91861018], [1516939920000, 0.09304072, 0.09304682, 0.092604, 0.09304682, 31.4178682], [1516939980000, 0.0930468, 0.09304682, 0.0930468, 0.09304682, 11.11431728], [1516940040000, 0.0930468, 0.09304682, 0.09261101, 0.0930468, 10.8894957], [1516940100000, 0.0930468, 0.0930468, 0.092612, 0.09304669, 8.83477446], [1516940160000, 0.09304669, 0.09304669, 0.09262, 0.09262101, 9.60578339], [1516940220000, 0.093, 0.093, 0.0926221, 0.09265, 10.81698504], [1516940280000, 0.093, 0.0930468, 0.09298999, 0.0930468, 13.42733111], [1516940340000, 0.093, 0.0930468, 0.093, 0.093, 8.99152338], [1516940400000, 0.0930468, 0.0931125, 0.093, 0.0931125, 16.36668598], [1516940460000, 0.09311253, 0.09324767, 0.09304682, 0.09304683, 2.87523701], [1516940520000, 0.09322765, 0.09324767, 0.0931, 0.0931, 0.62109015], [1516940580000, 0.0931, 0.09324767, 0.09305, 0.09324767, 50.93295936], [1516940640000, 0.09324767, 0.093249, 0.09305001, 0.093249, 15.74336715], [1516940700000, 0.09324767, 0.09325, 0.09324767, 0.09325, 13.84300177], [1516940760000, 0.093249, 0.09325, 0.09305102, 0.09325, 8.2559722], [1516940820000, 0.0931, 0.09325, 0.09305103, 0.09323135, 1.66863534], [1516940880000, 0.09323135, 0.09325, 0.09305104, 0.09325, 17.6394207], [1516940940000, 0.09325, 0.09325, 0.09305104, 0.09305104, 6.34356469], [1516941000000, 0.09305104, 0.09325, 0.09305104, 0.09305104, 17.44094082], [1516941060000, 0.09305104, 0.09325, 0.09305104, 0.09322999, 26.5377947], [1516941120000, 0.09305106, 0.09323998, 0.09305104, 0.09305104, 10.33550006], [1516941180000, 0.09305104, 0.09325, 0.09305104, 0.09325, 29.66905437], [1516941240000, 0.09325, 0.09325, 0.09305104, 0.09305104, 5.82297736], [1516941300000, 0.09305104, 0.09325, 0.09305104, 0.09305105, 39.72025521], [1516941360000, 0.09323, 0.09323, 0.09305105, 0.0932299, 1.76629487], [1516941420000, 0.09305105, 0.09305105, 0.09305104, 0.09305104, 13.91468745], [1516941480000, 0.09305105, 0.09305105, 0.09305104, 0.09305104, 2.79082068], [1516941540000, 0.09305104, 0.09305105, 0.09305104, 0.09305105, 6.86105353], [1516941600000, 0.09305104, 0.09323, 0.09305104, 0.09323, 9.22156178], [1516941660000, 0.09323, 0.09323, 0.09305105, 0.09315, 10.98100774], [1516941720000, 0.09323, 0.09323, 0.09306138, 0.09306138, 8.70939548], [1516941780000, 0.09306138, 0.09322999, 0.09305105, 0.09305105, 8.09793198], [1516941840000, 0.09322999, 0.09322999, 0.09322999, 0.09322999, 0.17930245], [1516941900000, 0.09322999, 0.09322999, 0.09305104, 0.09305104, 87.05014209], [1516941960000, 0.09305104, 0.09316504, 0.09262101, 0.09262101, 87.42402672], [1516942020000, 0.09263603, 0.09316504, 0.09262101, 0.09316504, 6.03692851], [1516942080000, 0.0929, 0.09322999, 0.09269921, 0.09320998, 3.19485534], [1516942140000, 0.09320998, 0.09320998, 0.09319996, 0.09320996, 0.77270576], [1516942200000, 0.09320995, 0.09320997, 0.09305105, 0.09319996, 3.65366768], [1516942260000, 0.09319996, 0.0932, 0.09305108, 0.09319996, 3.15776862], [1516942320000, 0.09319996, 0.09320996, 0.09319996, 0.09320996, 50.22853867], [1516942380000, 0.09320996, 0.09320996, 0.09319996, 0.09320001, 16.99593702], [1516942440000, 0.09320996, 0.09324, 0.09276485, 0.09324, 22.03753613], [1516942500000, 0.09321, 0.09324, 0.09276485, 0.09276486, 6.14892808], [1516942560000, 0.09323999, 0.09323999, 0.09276486, 0.09276486, 6.01408941], [1516942620000, 0.09323999, 0.09324449, 0.093, 0.093, 3.45246765], [1516942680000, 0.09299, 0.093, 0.09276493, 0.093, 2.05992964], [1516942740000, 0.0929, 0.093, 0.0929, 0.093, 7.56386073], [1516942800000, 0.09322133, 0.09322134, 0.093, 0.093, 3.87614484], [1516942860000, 0.093, 0.0933129, 0.093, 0.09325001, 130.46930309], [1516942920000, 0.09325, 0.09331288, 0.093, 0.093, 1.42878569], [1516942980000, 0.093, 0.09331287, 0.0929, 0.0929, 4.02001094], [1516943040000, 0.09331287, 0.09379468, 0.09290001, 0.09332, 25.55189794], [1516943100000, 0.09376465, 0.09376465, 0.09332, 0.09332, 40.2814427], [1516943160000, 0.09364521, 0.0936607, 0.0929, 0.09290002, 17.03667928], [1516943220000, 0.09290003, 0.09332, 0.09290002, 0.09332, 4.5583461], [1516943280000, 0.09327, 0.09332, 0.09290003, 0.09332, 10.84567265], [1516943340000, 0.09332, 0.09332, 0.09291816, 0.09311906, 2.98396131], [1516943400000, 0.09291816, 0.09332, 0.09291816, 0.0929183, 33.29313401], [1516943460000, 0.0929183, 0.09332, 0.0929183, 0.09311906, 2.29089184], [1516943520000, 0.09311906, 0.09332, 0.09311906, 0.09311906, 2.06161812], [1516943580000, 0.09311906, 0.09311906, 0.09297007, 0.09297007, 1.42187284], [1516943640000, 0.09311906, 0.09311906, 0.09291832, 0.09311906, 4.35208651], [1516943700000, 0.09291833, 0.09311906, 0.0929183, 0.09291835, 15.56108461], [1516943760000, 0.09291835, 0.09311906, 0.09291816, 0.09311906, 23.27600059], [1516943820000, 0.09311906, 0.09326799, 0.09291816, 0.09311906, 5.17726451], [1516943880000, 0.0931, 0.0931, 0.09291816, 0.0931, 4.75360702], [1516943940000, 0.0931, 0.0931, 0.09291816, 0.0931, 5.72318551], [1516944000000, 0.0931, 0.0934559, 0.093, 0.0934559, 18.66199945], [1516944060000, 0.09345589, 0.0934559, 0.093, 0.0931, 2.09974456], [1516944120000, 0.09314749, 0.09356842, 0.09300007, 0.09300007, 2.60527211], [1516944180000, 0.0931, 0.0935684, 0.0931, 0.0935684, 1.61886237], [1516944240000, 0.0935584, 0.09374483, 0.09314749, 0.09314749, 4.0429717], [1516944300000, 0.09314749, 0.09314749, 0.09300643, 0.09314749, 4.74149853], [1516944360000, 0.09314749, 0.09386805, 0.09301103, 0.09369855, 5.2289297], [1516944420000, 0.09369855, 0.09369855, 0.093015, 0.09302, 36.03360711], [1516944480000, 0.09358213, 0.09366334, 0.09302001, 0.09363656, 8.02374986], [1516944540000, 0.09363656, 0.09366335, 0.093021, 0.09366324, 19.0036535], [1516944600000, 0.09302123, 0.09342908, 0.09302101, 0.09332681, 8.41677751], [1516944660000, 0.09331681, 0.09366334, 0.09330022, 0.0933269, 3.85185115], [1516944720000, 0.09332681, 0.09367199, 0.09312005, 0.09367199, 30.97315067], [1516944780000, 0.09312, 0.09366354, 0.09311999, 0.0931201, 8.40249609], [1516944840000, 0.09320357, 0.09366331, 0.093031, 0.0931201, 49.218922], [1516944900000, 0.0931201, 0.09366333, 0.09303115, 0.09303115, 43.0849599], [1516944960000, 0.09364701, 0.09367, 0.093036, 0.0933977, 14.57806743], [1516945020000, 0.09339771, 0.09368213, 0.09331525, 0.09368211, 5.20057827], [1516945080000, 0.093682, 0.093714, 0.09331525, 0.09368199, 73.09839816], [1516945140000, 0.09368199, 0.09371399, 0.09368199, 0.09371399, 120.26648555], [1516945200000, 0.09371399, 0.09385131, 0.09331525, 0.09331525, 22.48864812], [1516945260000, 0.09331525, 0.09380777, 0.09320501, 0.09379594, 7.63069224], [1516945320000, 0.09380769, 0.09380769, 0.09331525, 0.09379567, 3.80491812], [1516945380000, 0.09379567, 0.09379586, 0.09331526, 0.0937956, 9.56626031], [1516945440000, 0.09379558, 0.09379559, 0.09331526, 0.09379553, 5.67186988], [1516945500000, 0.09379553, 0.09379553, 0.09333, 0.09379549, 3.52856146], [1516945560000, 0.09333026, 0.09356291, 0.09333001, 0.09333002, 18.14025366], [1516945620000, 0.09333003, 0.0935629, 0.09333001, 0.09333003, 32.66471442], [1516945680000, 0.09333003, 0.0936, 0.09333001, 0.09333003, 63.02562174], [1516945740000, 0.0936, 0.0936, 0.09302, 0.09302, 30.19591831], [1516945800000, 0.09333003, 0.09333003, 0.09302, 0.09304, 6.11087721], [1516945860000, 0.09326803, 0.09333001, 0.09304002, 0.09333001, 4.23107236], [1516945920000, 0.09333001, 0.09333001, 0.09332, 0.09332, 4.27042648], [1516945980000, 0.09333001, 0.09333001, 0.09332, 0.09333001, 1.52660159], [1516946040000, 0.09333001, 0.09333001, 0.09304003, 0.09333001, 9.72919815], [1516946100000, 0.09333001, 0.09333001, 0.09304007, 0.09304007, 7.07612558], [1516946160000, 0.0931331, 0.09349, 0.09304009, 0.09342344, 6.5717286], [1516946220000, 0.09348, 0.0935, 0.09347, 0.09348, 3.14737712], [1516946280000, 0.09349999, 0.09349999, 0.09305, 0.09348, 4.97539842], [1516946340000, 0.09348, 0.0935, 0.09307802, 0.0935, 43.35210159], [1516946400000, 0.0935, 0.09380779, 0.09307805, 0.09380779, 12.24945301], [1516946460000, 0.09379556, 0.09379556, 0.09335734, 0.09335734, 2.21575138], [1516946520000, 0.09379552, 0.09379552, 0.09335736, 0.09335736, 1.75684148], [1516946580000, 0.09335736, 0.0935, 0.09335736, 0.0935, 6.62571678], [1516946640000, 0.0935, 0.09359358, 0.0935, 0.09359357, 0.51101782], [1516946700000, 0.09359358, 0.09359358, 0.09359357, 0.09359357, 0.25443913], [1516946760000, 0.09359358, 0.09386804, 0.09359357, 0.09380779, 12.41208048], [1516946820000, 0.09380779, 0.09380779, 0.0935, 0.0935, 7.40756819], [1516946880000, 0.0936, 0.0936, 0.0935, 0.0936, 31.16072809], [1516946940000, 0.0936, 0.0936, 0.0936, 0.0936, 8.62689627], [1516947000000, 0.0936, 0.09388807, 0.0936, 0.09388805, 11.29860893], [1516947060000, 0.0938, 0.09388805, 0.093616, 0.093616, 9.36188517], [1516947120000, 0.09388805, 0.09395, 0.093616, 0.09388805, 24.82273736], [1516947180000, 0.09395, 0.09395, 0.093616, 0.09388804, 14.3722936], [1516947240000, 0.09388804, 0.093999, 0.09388804, 0.09398023, 69.44717369], [1516947300000, 0.093999, 0.094, 0.09398023, 0.09398023, 10.90493436], [1516947360000, 0.09395, 0.09398023, 0.09361611, 0.09398022, 12.75939594], [1516947420000, 0.09395, 0.09398023, 0.0936162, 0.0936162, 4.92064455], [1516947480000, 0.09361621, 0.09398023, 0.0936162, 0.09398023, 8.4910866], [1516947540000, 0.09361622, 0.09398023, 0.09361622, 0.09369, 0.42865999], [1516947600000, 0.09369, 0.09398023, 0.09367, 0.0937, 3.92419043], [1516947660000, 0.0937, 0.09398023, 0.09361623, 0.09361623, 9.38239051], [1516947720000, 0.09398013, 0.09398023, 0.09361627, 0.09398012, 3.57645326], [1516947780000, 0.09398, 0.09398023, 0.09379204, 0.09398023, 1.4248129], [1516947840000, 0.09398023, 0.09398023, 0.09361624, 0.09398009, 8.50316558], [1516947900000, 0.09361624, 0.09398009, 0.09361624, 0.09398009, 1.0558548], [1516947960000, 0.09398009, 0.09398009, 0.09361611, 0.09361611, 16.99569735], [1516948020000, 0.09397, 0.09397, 0.09361611, 0.0939696, 1.54896268], [1516948080000, 0.09396, 0.09396, 0.09361611, 0.09395, 4.31608097], [1516948140000, 0.09394999, 0.09395, 0.09361611, 0.0939495, 71.12885431], [1516948200000, 0.0939495, 0.09397995, 0.0939495, 0.09397995, 21.37565809], [1516948260000, 0.09397995, 0.09397995, 0.0939495, 0.0939495, 9.37975217], [1516948320000, 0.0939495, 0.09397995, 0.09361612, 0.09361612, 5.893026], [1516948380000, 0.09361612, 0.09394899, 0.09361612, 0.09393899, 0.54920935], [1516948440000, 0.09390898, 0.09394899, 0.09361612, 0.09394899, 4.09881175], [1516948500000, 0.09394898, 0.09397995, 0.09361617, 0.09397995, 2.52556225], [1516948560000, 0.09397995, 0.09397996, 0.09394899, 0.09394899, 11.01755601], [1516948620000, 0.09392555, 0.0939799, 0.09366044, 0.0939799, 10.17672448], [1516948680000, 0.09374904, 0.0939799, 0.09370001, 0.0939799, 2.87062998], [1516948740000, 0.09375001, 0.0939799, 0.09370001, 0.0939799, 2.81749483], [1516948800000, 0.0939699, 0.0939799, 0.09361618, 0.09361618, 26.61218063], [1516948860000, 0.09361618, 0.0939799, 0.09361618, 0.0936214, 9.27149715], [1516948920000, 0.0936364, 0.09375096, 0.0936214, 0.0936514, 2.59874296], [1516948980000, 0.09367, 0.09368, 0.09367, 0.09367, 2.15813639], [1516949040000, 0.09367, 0.0939611, 0.09365141, 0.09365141, 24.3718758], [1516949100000, 0.09382102, 0.09382102, 0.09365141, 0.09382102, 11.8482175], [1516949160000, 0.09365142, 0.09381101, 0.09365142, 0.09381101, 2.95975696], [1516949220000, 0.09381102, 0.09397996, 0.0936515, 0.09365151, 81.05782532], [1516949280000, 0.09365151, 0.09397996, 0.0936515, 0.09365151, 16.97272441], [1516949340000, 0.09397894, 0.09397894, 0.09397894, 0.09397894, 0.94640026], [1516949400000, 0.09365151, 0.09397894, 0.09365151, 0.09365152, 1.45079155], [1516949460000, 0.09365152, 0.09365152, 0.09365151, 0.09365152, 3.70787946], [1516949520000, 0.09365152, 0.09365152, 0.09365151, 0.09365152, 2.64393901], [1516949580000, 0.09365152, 0.09365152, 0.09365151, 0.09365152, 13.76106186], [1516949640000, 0.09365152, 0.09365152, 0.09365151, 0.09365152, 5.69430233], [1516949700000, 0.09365151, 0.09365152, 0.09365151, 0.09365152, 4.88154763], [1516949760000, 0.09397891, 0.09397892, 0.09365153, 0.09397891, 15.81876269], [1516949820000, 0.09397891, 0.09397996, 0.09397891, 0.09397996, 24.12832829], [1516949880000, 0.09397996, 0.09398023, 0.09397891, 0.09397891, 10.53319768], [1516949940000, 0.09397892, 0.093999, 0.09397891, 0.093999, 3.74868308], [1516950000000, 0.09397891, 0.09399, 0.09397891, 0.09399, 1.95659105], [1516950060000, 0.09399, 0.093999, 0.09397891, 0.09397891, 21.68258316], [1516950120000, 0.09397891, 0.093999, 0.09397891, 0.09397941, 4.00870946], [1516950180000, 0.093999, 0.094, 0.093999, 0.094, 11.95944055], [1516950240000, 0.094, 0.094, 0.09398001, 0.09398001, 14.09902995], [1516950300000, 0.093999, 0.094, 0.09397941, 0.09397941, 22.31134159], [1516950360000, 0.09397941, 0.09398, 0.0936515, 0.0936515, 13.57997608], [1516950420000, 0.0936515, 0.094, 0.0936515, 0.09365152, 23.44784647], [1516950480000, 0.09393, 0.09395, 0.09393, 0.09395, 1.5835582], [1516950540000, 0.09395, 0.09399999, 0.09367724, 0.09399999, 3.20999838], [1516950600000, 0.09399999, 0.094, 0.0938, 0.094, 2.20860376], [1516950660000, 0.094, 0.094, 0.0938, 0.09399872, 4.69854697], [1516950720000, 0.09395695, 0.094, 0.09395695, 0.09399999, 6.56072416], [1516950780000, 0.09399999, 0.094, 0.09399999, 0.09399999, 7.29799255], [1516950840000, 0.09399999, 0.094, 0.09399999, 0.094, 9.00029346], [1516950900000, 0.094, 0.09417532, 0.09399999, 0.094, 27.27508353], [1516950960000, 0.09417532, 0.09422987, 0.09399999, 0.09399999, 16.31087558], [1516951020000, 0.09399999, 0.09422996, 0.09399999, 0.09399999, 17.19870942], [1516951080000, 0.094, 0.09425, 0.094, 0.09400001, 7.17134397], [1516951140000, 0.09425, 0.09442606, 0.09400003, 0.0943819, 71.70631246], [1516951200000, 0.09438189, 0.09438189, 0.09400004, 0.09404619, 4.885275], [1516951260000, 0.0942819, 0.09438189, 0.09400003, 0.09400005, 26.45031635], [1516951320000, 0.09400005, 0.09421994, 0.094, 0.09400005, 10.49804948], [1516951380000, 0.09420991, 0.09421895, 0.0939999, 0.09419997, 51.74805335], [1516951440000, 0.09399944, 0.0941989, 0.09399944, 0.09399944, 9.31091994], [1516951500000, 0.09419879, 0.09419879, 0.09399945, 0.09405, 3.80994573], [1516951560000, 0.09405, 0.09405, 0.09367001, 0.09399944, 11.20222797], [1516951620000, 0.09374062, 0.09399944, 0.09374062, 0.09399892, 4.03603381], [1516951680000, 0.0938653, 0.09399944, 0.09367, 0.09399944, 2.65864599], [1516951740000, 0.09399944, 0.09399944, 0.09379687, 0.09379687, 3.12825699], [1516951800000, 0.09394511, 0.09399944, 0.09379687, 0.09399944, 11.48738926], [1516951860000, 0.09399944, 0.09399944, 0.09393192, 0.09399944, 25.5422856], [1516951920000, 0.09399943, 0.09399944, 0.0937, 0.093999, 20.21303638], [1516951980000, 0.093999, 0.093999, 0.09366651, 0.09397999, 22.09878095], [1516952040000, 0.09372744, 0.09397999, 0.0936992, 0.09397999, 14.22282707], [1516952100000, 0.09397999, 0.093999, 0.09373357, 0.09397999, 4.77630521], [1516952160000, 0.093999, 0.09399944, 0.09373358, 0.09399944, 30.92365779], [1516952220000, 0.09399944, 0.09399944, 0.09385869, 0.09399944, 47.56265031], [1516952280000, 0.09399944, 0.09413289, 0.09385869, 0.09413289, 6.67102009], [1516952340000, 0.09412289, 0.09413289, 0.09385869, 0.09399944, 3.2403601], [1516952400000, 0.09385869, 0.09399944, 0.09385869, 0.09399944, 4.0070902], [1516952460000, 0.09397944, 0.09412289, 0.09385869, 0.09385869, 7.67665031], [1516952520000, 0.094, 0.09412289, 0.09385869, 0.09411288, 8.12261], [1516952580000, 0.09409, 0.09409001, 0.09385869, 0.09409001, 4.44898192], [1516952640000, 0.09409001, 0.09413289, 0.09398942, 0.09399, 5.91243723], [1516952700000, 0.09413289, 0.09413289, 0.0941, 0.09413289, 6.41176461], [1516952760000, 0.0940001, 0.09419891, 0.094, 0.09419891, 22.13255922], [1516952820000, 0.09419891, 0.0942819, 0.09400001, 0.09419891, 11.40764648], [1516952880000, 0.09419891, 0.0942, 0.09400001, 0.09400002, 2.91621744], [1516952940000, 0.09400002, 0.0942818, 0.09400002, 0.09400004, 7.15588594], [1516953000000, 0.0942818, 0.0942818, 0.0941, 0.09410001, 5.92341459], [1516953060000, 0.0942818, 0.0944, 0.09410001, 0.0942818, 90.8419804], [1516953120000, 0.0942818, 0.0944, 0.09410001, 0.09410001, 10.86506345], [1516953180000, 0.09410001, 0.0942818, 0.09410001, 0.0942818, 14.55157469], [1516953240000, 0.0942818, 0.09442606, 0.09411001, 0.09442606, 3.08707915], [1516953300000, 0.0942818, 0.09442606, 0.09411001, 0.09411001, 27.029954], [1516953360000, 0.094419, 0.09442606, 0.09411001, 0.09411001, 12.81306015], [1516953420000, 0.09411001, 0.09442099, 0.09411001, 0.09411001, 3.96684582], [1516953480000, 0.09411001, 0.09442606, 0.09410968, 0.09411001, 21.4114733], [1516953540000, 0.09411001, 0.09448008, 0.09400649, 0.09400649, 50.84054573], [1516953600000, 0.09400649, 0.09448004, 0.09400649, 0.09447998, 11.19951865], [1516953660000, 0.09446996, 0.09447999, 0.0940065, 0.0940065, 40.08922917], [1516953720000, 0.09400759, 0.09447998, 0.0940065, 0.0940065, 67.02174605], [1516953780000, 0.0940065, 0.09448, 0.0940065, 0.09448, 130.33338542], [1516953840000, 0.09448, 0.09448002, 0.09400653, 0.09403645, 83.61935268], [1516953900000, 0.09403645, 0.09448, 0.09387021, 0.09404602, 104.38613339], [1516953960000, 0.09391749, 0.09452917, 0.09385871, 0.09426086, 70.3909745], [1516954020000, 0.093955, 0.0945, 0.093955, 0.09402644, 20.88755048], [1516954080000, 0.09401644, 0.0945, 0.09395503, 0.09404144, 89.28283838], [1516954140000, 0.09412867, 0.09432867, 0.0939551, 0.09412867, 20.67772647], [1516954200000, 0.09412867, 0.09412867, 0.093745, 0.0939551, 29.78660708], [1516954260000, 0.0938587, 0.0939551, 0.09365144, 0.09365144, 39.02919941], [1516954320000, 0.09365144, 0.0939551, 0.09365144, 0.0939551, 38.61529013], [1516954380000, 0.09366651, 0.0939551, 0.09365145, 0.0939, 36.45871097], [1516954440000, 0.0939, 0.09412867, 0.09378726, 0.09411862, 15.09731926], [1516954500000, 0.09411862, 0.09412867, 0.0937, 0.09409999, 8.67304593], [1516954560000, 0.09370007, 0.09407995, 0.09370007, 0.09405992, 4.50814899], [1516954620000, 0.09403991, 0.09404991, 0.09370008, 0.09380001, 16.40101461], [1516954680000, 0.09403991, 0.09403991, 0.09370008, 0.09370055, 39.16245441], [1516954740000, 0.09399995, 0.09399995, 0.093636, 0.09369056, 14.97660571], [1516954800000, 0.09389, 0.09389, 0.0936214, 0.09370057, 19.42214479], [1516954860000, 0.09370223, 0.0938889, 0.09361617, 0.09362139, 15.69904479], [1516954920000, 0.09362139, 0.0938798, 0.09361612, 0.0936214, 18.17206077], [1516954980000, 0.09363139, 0.0938889, 0.0935, 0.0938789, 234.22803915], [1516955040000, 0.0938889, 0.09407994, 0.0938889, 0.09407994, 55.85330331], [1516955100000, 0.09408994, 0.0945, 0.09387891, 0.09387891, 79.6179695], [1516955160000, 0.09399995, 0.09447124, 0.0938789, 0.09445099, 82.64289932], [1516955220000, 0.09390001, 0.09445099, 0.0938789, 0.09390043, 34.50951169], [1516955280000, 0.09444099, 0.09444099, 0.0938789, 0.09390002, 47.14840174], [1516955340000, 0.09399392, 0.09488985, 0.09399392, 0.09457178, 99.39403523], [1516955400000, 0.09418151, 0.09489599, 0.09399392, 0.09425, 33.48263612], [1516955460000, 0.09487983, 0.09488983, 0.09425, 0.09469617, 8.18453377], [1516955520000, 0.0946, 0.09469617, 0.09399393, 0.094294, 82.62687359], [1516955580000, 0.09425001, 0.09487219, 0.09409103, 0.09429402, 55.11523668], [1516955640000, 0.09445407, 0.09469615, 0.09409601, 0.09429403, 38.24262798], [1516955700000, 0.09429403, 0.09445407, 0.09399392, 0.09429403, 78.57524269], [1516955760000, 0.09429403, 0.0943763, 0.09404565, 0.0943763, 89.78528276], [1516955820000, 0.0943763, 0.094825, 0.09410897, 0.09478234, 47.24799444], [1516955880000, 0.09432413, 0.094592, 0.09409399, 0.094592, 67.84464857], [1516955940000, 0.09444826, 0.0948722, 0.09435108, 0.094592, 40.76977122], [1516956000000, 0.0946, 0.0948722, 0.09439548, 0.09456475, 23.49989254], [1516956060000, 0.094607, 0.0948722, 0.09449751, 0.09449751, 41.68379262], [1516956120000, 0.09487219, 0.09487219, 0.094607, 0.09487219, 10.57179495], [1516956180000, 0.09487191, 0.09487953, 0.09462203, 0.0948722, 40.68964788], [1516956240000, 0.09487953, 0.09489985, 0.09487219, 0.09489984, 65.5515394], [1516956300000, 0.09489984, 0.09489985, 0.09472606, 0.0948722, 6.36790115], [1516956360000, 0.0948722, 0.09489984, 0.09472606, 0.09472607, 6.7547172], [1516956420000, 0.09472607, 0.09489984, 0.09472607, 0.094872, 18.47370608], [1516956480000, 0.094872, 0.094872, 0.09472607, 0.094872, 12.90700967], [1516956540000, 0.094872, 0.09489984, 0.094872, 0.09489984, 163.02139697], [1516956600000, 0.09489985, 0.09489985, 0.09487199, 0.09488984, 106.05669895], [1516956660000, 0.09488984, 0.09488984, 0.09487199, 0.09488984, 14.83582748], [1516956720000, 0.09488984, 0.09489985, 0.09487199, 0.09489985, 45.00032528], [1516956780000, 0.09489984, 0.09489999, 0.09489984, 0.09489985, 98.61547409], [1516956840000, 0.09489985, 0.09489999, 0.094872, 0.094872, 19.6067646], [1516956900000, 0.094872, 0.0949, 0.09472607, 0.0949, 22.05695496], [1516956960000, 0.0949, 0.09492641, 0.09472608, 0.09491721, 21.60690926], [1516957020000, 0.09491721, 0.09491721, 0.09472871, 0.09491721, 98.76302133], [1516957080000, 0.09475, 0.09492749, 0.09475, 0.09492749, 28.50909373], [1516957140000, 0.09492749, 0.09492749, 0.0949172, 0.09492749, 32.00597173], [1516957200000, 0.09492749, 0.09493, 0.0949172, 0.09493, 110.58007837], [1516957260000, 0.09492999, 0.09494, 0.0949172, 0.09494, 82.98808147], [1516957320000, 0.09493, 0.09494, 0.0949172, 0.09494, 31.43376787], [1516957380000, 0.09494, 0.09498999, 0.09491721, 0.0949809, 59.2121208], [1516957440000, 0.0949809, 0.09498999, 0.09494, 0.09498999, 33.80312545], [1516957500000, 0.09498999, 0.09499999, 0.09494, 0.09499999, 26.77265394], [1516957560000, 0.09499999, 0.095, 0.09494, 0.095, 160.2874075], [1516957620000, 0.095, 0.0950003, 0.09494002, 0.0950003, 94.54158472], [1516957680000, 0.0950003, 0.0950595, 0.0950003, 0.0950595, 28.29056278], [1516957740000, 0.09505332, 0.0950742, 0.09500637, 0.09506499, 107.05397437], [1516957800000, 0.09506499, 0.0950742, 0.0950342, 0.09506499, 6.55462434], [1516957860000, 0.09506498, 0.09508999, 0.09500637, 0.0950342, 19.36997388], [1516957920000, 0.09500637, 0.09508393, 0.09500637, 0.09508393, 6.46320655], [1516957980000, 0.0950839, 0.09508393, 0.0950064, 0.0950065, 34.7545593], [1516958040000, 0.0950065, 0.095083, 0.09500637, 0.09500638, 6.44194487], [1516958100000, 0.09501565, 0.09508999, 0.09500637, 0.09500637, 9.57108426], [1516958160000, 0.09508999, 0.0952, 0.09508999, 0.0952, 25.21910288], [1516958220000, 0.0952, 0.0952022, 0.09508999, 0.09509002, 10.02251517], [1516958280000, 0.0952, 0.0952, 0.09508999, 0.0951, 7.5620721], [1516958340000, 0.09509, 0.09519, 0.09508999, 0.09509, 16.62411891], [1516958400000, 0.09509, 0.09509, 0.09508999, 0.09508999, 18.68819698], [1516958460000, 0.0951, 0.09519999, 0.09508999, 0.09519998, 4.29851837], [1516958520000, 0.095195, 0.095195, 0.09508999, 0.09509, 32.80233974], [1516958580000, 0.09509, 0.09519999, 0.09509, 0.09519999, 16.47651386], [1516958640000, 0.09509, 0.0952, 0.09509, 0.09519999, 24.61540492], [1516958700000, 0.09519999, 0.09519999, 0.09509, 0.09519999, 7.62830748], [1516958760000, 0.09519999, 0.0952, 0.09511201, 0.0952, 16.71400501], [1516958820000, 0.09519999, 0.0952, 0.0950003, 0.0952, 78.56490582], [1516958880000, 0.0952, 0.0952022, 0.0950003, 0.0952, 11.91525344], [1516958940000, 0.0952, 0.0952022, 0.09494003, 0.0952022, 53.93230373], [1516959000000, 0.0951, 0.09523457, 0.09500001, 0.09523457, 190.09366531], [1516959060000, 0.09523457, 0.09527378, 0.09494003, 0.09500001, 48.94325675], [1516959120000, 0.0952, 0.09527378, 0.0952, 0.09527378, 11.67474918], [1516959180000, 0.09526607, 0.0953364, 0.0950617, 0.0953364, 25.43942861], [1516959240000, 0.09532859, 0.09536106, 0.09500005, 0.0953, 18.74036314], [1516959300000, 0.09536106, 0.09536106, 0.09500002, 0.09501996, 8.93019696], [1516959360000, 0.09501996, 0.09536106, 0.09500002, 0.09536106, 27.12164725], [1516959420000, 0.09522917, 0.09536239, 0.09503201, 0.095035, 19.25570676], [1516959480000, 0.0952, 0.09522917, 0.09503202, 0.09503202, 23.38021568], [1516959540000, 0.09521904, 0.09522917, 0.09503203, 0.09503824, 14.15179774], [1516959600000, 0.09503824, 0.09522916, 0.09503201, 0.09503201, 14.06907789], [1516959660000, 0.09503201, 0.09522916, 0.09501996, 0.09501997, 33.10809942], [1516959720000, 0.09502, 0.09522917, 0.09502, 0.09522917, 57.34897942], [1516959780000, 0.09522917, 0.09539105, 0.0950316, 0.09515216, 9.15781222], [1516959840000, 0.09515216, 0.09556707, 0.09515216, 0.09536, 62.4385621], [1516959900000, 0.09536001, 0.09551902, 0.09536001, 0.0955, 17.09285743], [1516959960000, 0.0955, 0.0955429, 0.09548, 0.09548, 17.83629139], [1516960020000, 0.09551902, 0.09553121, 0.09548, 0.09548, 46.61993951], [1516960080000, 0.09548, 0.09548001, 0.0954131, 0.0954131, 28.90350221], [1516960140000, 0.09548001, 0.09548001, 0.0951, 0.09538802, 9.54572285], [1516960200000, 0.09518946, 0.09548001, 0.09510001, 0.09548001, 15.25929677], [1516960260000, 0.09538802, 0.09548001, 0.09501996, 0.095221, 65.60972935], [1516960320000, 0.095221, 0.09548001, 0.09522099, 0.095251, 22.78410093], [1516960380000, 0.095241, 0.095251, 0.0952045, 0.0952045, 13.82437812], [1516960440000, 0.0952045, 0.095251, 0.0952045, 0.095221, 21.1787494], [1516960500000, 0.095236, 0.09553121, 0.095221, 0.095519, 170.80612689], [1516960560000, 0.09553121, 0.09555555, 0.0952511, 0.09549464, 14.02471471], [1516960620000, 0.0954946, 0.095519, 0.09525111, 0.09538505, 40.87242888], [1516960680000, 0.09551899, 0.09555555, 0.09538505, 0.09551899, 30.25043563], [1516960740000, 0.09551899, 0.0957, 0.0953, 0.09538506, 49.40120098], [1516960800000, 0.09538506, 0.09575045, 0.0953, 0.09538508, 33.90012739], [1516960860000, 0.09538508, 0.09575045, 0.095221, 0.09575045, 100.32026557], [1516960920000, 0.09575045, 0.0958, 0.095251, 0.09575045, 19.94279983], [1516960980000, 0.0957505, 0.0958, 0.0957, 0.09579999, 47.02447904], [1516961040000, 0.09579999, 0.0958, 0.09527, 0.09527, 14.19971136], [1516961100000, 0.0954632, 0.0957505, 0.09527, 0.09527, 17.60093274], [1516961160000, 0.09534921, 0.095799, 0.09527, 0.0953, 33.55383167], [1516961220000, 0.09549999, 0.095799, 0.09530001, 0.09575048, 75.93934804], [1516961280000, 0.09575048, 0.09579899, 0.09501998, 0.09569999, 28.01768856], [1516961340000, 0.09569999, 0.095799, 0.09501998, 0.0953005, 24.44336164], [1516961400000, 0.0953005, 0.09568999, 0.09501998, 0.09502002, 16.03087978], [1516961460000, 0.0953006, 0.0953006, 0.09502, 0.09502, 33.37239296], [1516961520000, 0.09502, 0.0954951, 0.09502, 0.0953006, 17.60205], [1516961580000, 0.0953106, 0.0955, 0.095, 0.095, 44.87156942], [1516961640000, 0.0955, 0.0955, 0.09504003, 0.09505003, 6.98673021], [1516961700000, 0.09505003, 0.0956422, 0.09505003, 0.09552529, 14.08263604], [1516961760000, 0.09550001, 0.09550001, 0.09506505, 0.09547174, 7.04611095], [1516961820000, 0.09547174, 0.0955, 0.09506507, 0.09534921, 6.48786663], [1516961880000, 0.09548999, 0.0955, 0.09534921, 0.0955, 41.67863373], [1516961940000, 0.0955, 0.09578454, 0.0955, 0.0955, 72.72901508], [1516962000000, 0.0956, 0.09579999, 0.09506507, 0.0955, 45.95987725], [1516962060000, 0.0955, 0.09570537, 0.095, 0.09500002, 178.7743648], [1516962120000, 0.0956, 0.09577112, 0.09500002, 0.0957337, 18.6922427], [1516962180000, 0.0950002, 0.0959, 0.0950002, 0.09573371, 113.6061381], [1516962240000, 0.09573371, 0.09578373, 0.09548526, 0.0955, 9.85455692], [1516962300000, 0.09569999, 0.09593978, 0.0955, 0.0955, 18.62060009], [1516962360000, 0.0958, 0.09598, 0.0955, 0.09580002, 23.38036055], [1516962420000, 0.09580002, 0.09580002, 0.09550004, 0.09550004, 13.77959723], [1516962480000, 0.09550002, 0.09580002, 0.09500009, 0.09500016, 44.49526496], [1516962540000, 0.0954853, 0.09579577, 0.09501021, 0.0954853, 7.03393651], [1516962600000, 0.09501163, 0.0957, 0.09501163, 0.09549529, 2.87460217], [1516962660000, 0.0957, 0.0957, 0.0954853, 0.0954853, 4.10790786], [1516962720000, 0.0954953, 0.09569998, 0.0954853, 0.0954853, 10.98329074], [1516962780000, 0.09569998, 0.09569999, 0.0954853, 0.0954853, 12.44126997], [1516962840000, 0.09569998, 0.09569998, 0.09504096, 0.0954853, 16.43801788], [1516962900000, 0.09533252, 0.09576718, 0.09504096, 0.09569998, 17.29702738], [1516962960000, 0.0954853, 0.09576716, 0.09504097, 0.09575998, 82.40451154], [1516963020000, 0.09549529, 0.09576, 0.0954853, 0.09559078, 13.58056395], [1516963080000, 0.09559078, 0.09575998, 0.09559078, 0.09559078, 24.20365321], [1516963140000, 0.09559078, 0.09575998, 0.09559078, 0.09559078, 16.01604816], [1516963200000, 0.09559079, 0.09575995, 0.09559078, 0.0955908, 5.4494453], [1516963260000, 0.09575992, 0.09575992, 0.0955908, 0.09559081, 34.21528295], [1516963320000, 0.095759, 0.09580002, 0.0954853, 0.0954853, 123.48167153], [1516963380000, 0.09568064, 0.09577604, 0.09507, 0.09507, 14.16368588], [1516963440000, 0.0953996, 0.09566682, 0.09507, 0.09507001, 7.60546055], [1516963500000, 0.0953996, 0.09569353, 0.09507001, 0.09569353, 14.52261443], [1516963560000, 0.09569353, 0.09577591, 0.09507501, 0.09577591, 4.77983344], [1516963620000, 0.09569353, 0.09577591, 0.09569353, 0.09569353, 8.05148065], [1516963680000, 0.09569353, 0.0957759, 0.09569353, 0.09569354, 6.57021267], [1516963740000, 0.09575, 0.09575, 0.09508001, 0.09575, 33.95149967], [1516963800000, 0.09555542, 0.09577591, 0.09555542, 0.09577591, 9.17140699], [1516963860000, 0.09575, 0.0957908, 0.09559997, 0.0957908, 9.50512576], [1516963920000, 0.09579985, 0.0958, 0.0957908, 0.0958, 11.27167267], [1516963980000, 0.09579985, 0.0959423, 0.09579985, 0.0959423, 15.0878381], [1516964040000, 0.09598, 0.09599899, 0.0959423, 0.09598, 43.02107733], [1516964100000, 0.09599898, 0.09599995, 0.09594225, 0.09594225, 46.85664622], [1516964160000, 0.0959, 0.09599999, 0.09547469, 0.09599994, 106.1129513], [1516964220000, 0.09594225, 0.09599998, 0.09594225, 0.09594225, 22.71158184], [1516964280000, 0.09594225, 0.09594226, 0.09594225, 0.09594225, 8.89507346], [1516964340000, 0.09594225, 0.095999, 0.09565442, 0.09565442, 32.11954461], [1516964400000, 0.09565442, 0.09594226, 0.09547468, 0.09594, 7.19805371], [1516964460000, 0.09547468, 0.09574, 0.09529996, 0.09574, 6.56486871], [1516964520000, 0.09584747, 0.09594, 0.09574001, 0.09584747, 17.11006583], [1516964580000, 0.09584746, 0.09584746, 0.09574001, 0.09574001, 3.25098042], [1516964640000, 0.09574001, 0.09584745, 0.09528723, 0.09528744, 23.63126634], [1516964700000, 0.09528744, 0.09584746, 0.09528744, 0.09584746, 16.33777551], [1516964760000, 0.09584745, 0.09584747, 0.09584745, 0.09584746, 46.50257441], [1516964820000, 0.09584746, 0.09594, 0.09584745, 0.09594, 15.36728534], [1516964880000, 0.09594, 0.09594, 0.09584747, 0.0959, 21.42320196], [1516964940000, 0.0959208, 0.09594, 0.0959, 0.0959, 8.75918287], [1516965000000, 0.09593999, 0.09594, 0.0959, 0.09594, 28.19978579], [1516965060000, 0.09590002, 0.09594, 0.0959, 0.0959, 37.49563197], [1516965120000, 0.09594, 0.09594, 0.0959, 0.0959, 63.39465166], [1516965180000, 0.095939, 0.09594, 0.095939, 0.09594, 25.07828348], [1516965240000, 0.095939, 0.095999, 0.095939, 0.095999, 9.97618801], [1516965300000, 0.095999, 0.09599998, 0.095939, 0.095999, 18.22343714], [1516965360000, 0.095999, 0.095999, 0.095939, 0.09593901, 12.72902625], [1516965420000, 0.095999, 0.095999, 0.09593901, 0.0959798, 5.48481802], [1516965480000, 0.0959798, 0.09599987, 0.09593901, 0.09599901, 8.15278986], [1516965540000, 0.09599901, 0.09599998, 0.09599901, 0.09599901, 13.7757335], [1516965600000, 0.09599901, 0.09599999, 0.09599901, 0.09599901, 5.8419105], [1516965660000, 0.09599901, 0.09599999, 0.09599901, 0.09599999, 3.81600155], [1516965720000, 0.09599999, 0.09599999, 0.09599998, 0.09599999, 6.14693338], [1516965780000, 0.09599999, 0.09599999, 0.09599998, 0.09599998, 8.49208924], [1516965840000, 0.09599998, 0.09599999, 0.09593901, 0.09593901, 23.01732572], [1516965900000, 0.095999, 0.09599999, 0.095939, 0.09599901, 71.16326156], [1516965960000, 0.09599901, 0.09599999, 0.09593901, 0.09599998, 15.70801027], [1516966020000, 0.09599998, 0.09599998, 0.09593901, 0.09599997, 63.70180214], [1516966080000, 0.09599997, 0.09599998, 0.095939, 0.09597901, 13.9323773], [1516966140000, 0.09597901, 0.09599997, 0.09593901, 0.09593901, 3.88257822], [1516966200000, 0.095999, 0.09599998, 0.09593901, 0.09593901, 25.72850452], [1516966260000, 0.09597597, 0.09599997, 0.095939, 0.09593901, 16.37432518], [1516966320000, 0.09599994, 0.09599995, 0.095939, 0.095939, 9.99555192], [1516966380000, 0.095939, 0.09593901, 0.0959, 0.0959, 6.26224486], [1516966440000, 0.095939, 0.095939, 0.0959, 0.0959, 15.25190913], [1516966500000, 0.0959, 0.095939, 0.0959, 0.0959, 20.3825094], [1516966560000, 0.0959, 0.095939, 0.0959, 0.0959, 18.3332484], [1516966620000, 0.095939, 0.095939, 0.0959, 0.0959, 9.0277958], [1516966680000, 0.095939, 0.095939, 0.0959, 0.0959, 14.48835328], [1516966740000, 0.095919, 0.095939, 0.0959, 0.0959, 11.01780308], [1516966800000, 0.09590046, 0.095939, 0.0959, 0.0959, 50.50467382], [1516966860000, 0.0959, 0.095939, 0.0959, 0.0959, 28.55473787], [1516966920000, 0.09592999, 0.09593, 0.09557908, 0.09579, 17.07486963], [1516966980000, 0.09579, 0.09589999, 0.09557908, 0.09589999, 3.41212489], [1516967040000, 0.0959, 0.0959, 0.0958, 0.0958, 15.51768207], [1516967100000, 0.0958, 0.095939, 0.0958, 0.0959, 38.76463976], [1516967160000, 0.095939, 0.09598, 0.09547709, 0.09598, 12.27136022], [1516967220000, 0.09598991, 0.09598991, 0.09598, 0.09598991, 36.04022067], [1516967280000, 0.09598002, 0.09598991, 0.09547709, 0.09598001, 32.60853509], [1516967340000, 0.09598001, 0.095983, 0.09547709, 0.09597999, 8.00524573], [1516967400000, 0.09598, 0.09598, 0.09597999, 0.09597999, 0.79387961], [1516967460000, 0.09597999, 0.09597999, 0.0955, 0.09597999, 6.62828866], [1516967520000, 0.09597999, 0.09597999, 0.0955, 0.0959799, 1.47529738], [1516967580000, 0.0955927, 0.0959799, 0.0955777, 0.0955777, 5.33380527], [1516967640000, 0.0955777, 0.0959799, 0.09547709, 0.09590767, 12.95380254], [1516967700000, 0.0959799, 0.09598, 0.09590767, 0.0959799, 13.11825269], [1516967760000, 0.0959799, 0.09597999, 0.09590767, 0.09590767, 17.63756051], [1516967820000, 0.09597999, 0.09597999, 0.09590767, 0.09590768, 8.98029724], [1516967880000, 0.09590767, 0.0959077, 0.09590767, 0.09590767, 5.99291516], [1516967940000, 0.09590768, 0.0959077, 0.09590767, 0.09590768, 6.57979544], [1516968000000, 0.09590768, 0.0959077, 0.09590768, 0.09590769, 5.71423876], [1516968060000, 0.0959077, 0.0959077, 0.09590769, 0.09590769, 17.13409214], [1516968120000, 0.0959077, 0.0959077, 0.09590769, 0.0959077, 19.33323235], [1516968180000, 0.0959077, 0.09597999, 0.09590769, 0.0959077, 45.2382921], [1516968240000, 0.09592688, 0.09599999, 0.09592688, 0.09599998, 204.48562398], [1516968300000, 0.09599999, 0.096, 0.09590769, 0.096, 101.40387429], [1516968360000, 0.096, 0.09600735, 0.0959269, 0.09600735, 37.88660992], [1516968420000, 0.09600735, 0.09607859, 0.09592689, 0.09600998, 26.88846499], [1516968480000, 0.09603839, 0.09607859, 0.09603839, 0.0960384, 28.43937634], [1516968540000, 0.0960384, 0.09607859, 0.09603839, 0.09603841, 7.06456639], [1516968600000, 0.0960384, 0.09607859, 0.09603839, 0.09607859, 23.31315971], [1516968660000, 0.09607859, 0.09639999, 0.09607859, 0.09608827, 71.6438778], [1516968720000, 0.0960883, 0.09639999, 0.0960883, 0.09619221, 2.25037814], [1516968780000, 0.09639999, 0.09639999, 0.0960888, 0.09608881, 34.58095505], [1516968840000, 0.09608881, 0.09639999, 0.0960888, 0.09639998, 303.31146492], [1516968900000, 0.09639999, 0.09650371, 0.0960888, 0.0965, 89.03337735], [1516968960000, 0.0965, 0.09656695, 0.09639035, 0.09656695, 42.03149119], [1516969020000, 0.0964035, 0.0966373, 0.09639035, 0.0966373, 55.15451875], [1516969080000, 0.0966373, 0.09667, 0.0964, 0.09666999, 14.9896978], [1516969140000, 0.09640359, 0.09666999, 0.09640359, 0.0964037, 13.77748385], [1516969200000, 0.09665998, 0.09666999, 0.09640371, 0.09666999, 25.66570741], [1516969260000, 0.09666999, 0.09666999, 0.0966659, 0.09666999, 16.70313523], [1516969320000, 0.09666999, 0.09667991, 0.0966659, 0.09667, 16.74862169], [1516969380000, 0.09667, 0.09677553, 0.09667, 0.09677553, 39.31872045], [1516969440000, 0.09677553, 0.09680818, 0.09676385, 0.09680818, 7.36324858], [1516969500000, 0.09681, 0.0969, 0.09681, 0.0969, 19.22539608], [1516969560000, 0.09688138, 0.096939, 0.09688138, 0.09693562, 30.54451881], [1516969620000, 0.09693562, 0.09693562, 0.0969, 0.0969, 29.71590082], [1516969680000, 0.0969, 0.09696694, 0.0969, 0.09696694, 39.36772676], [1516969740000, 0.09694247, 0.097, 0.09693563, 0.097, 242.20051442], [1516969800000, 0.097, 0.097, 0.09693562, 0.097, 25.83196281], [1516969860000, 0.097, 0.097, 0.09693562, 0.09693563, 21.60032988], [1516969920000, 0.097, 0.097, 0.09693562, 0.09693562, 31.55505773], [1516969980000, 0.09693562, 0.09693563, 0.0969, 0.0969, 41.97289987], [1516970040000, 0.0969, 0.0969, 0.09674852, 0.09674852, 15.86364461], [1516970100000, 0.09676385, 0.0969, 0.09667, 0.09676385, 25.97838747], [1516970160000, 0.09676385, 0.0969, 0.0966659, 0.096806, 4.86239956], [1516970220000, 0.096806, 0.09699998, 0.0967, 0.09699998, 28.03646694], [1516970280000, 0.09693563, 0.09699998, 0.0969, 0.09695001, 4.13620312], [1516970340000, 0.09695001, 0.09699998, 0.09689, 0.09699998, 27.77814303], [1516970400000, 0.09699997, 0.09699999, 0.09689, 0.09689, 32.77688396], [1516970460000, 0.09689, 0.09689, 0.096806, 0.09685999, 11.16892569], [1516970520000, 0.09685999, 0.09689, 0.09655944, 0.09655944, 15.12788605], [1516970580000, 0.0965, 0.096806, 0.09620721, 0.09639999, 17.46217782], [1516970640000, 0.0965, 0.09689, 0.09602365, 0.09608835, 45.55519132], [1516970700000, 0.09608835, 0.0968, 0.096, 0.09635, 73.09869778], [1516970760000, 0.09635, 0.09635, 0.09600004, 0.09600004, 6.57660847], [1516970820000, 0.09608838, 0.09679975, 0.09608837, 0.09608837, 29.53962636], [1516970880000, 0.096306, 0.0967998, 0.09608838, 0.096777, 10.91487105], [1516970940000, 0.09635002, 0.096777, 0.09608853, 0.0961273, 32.81626781], [1516971000000, 0.096777, 0.0967998, 0.09612736, 0.09679979, 3.8114575], [1516971060000, 0.09679978, 0.09679979, 0.0961875, 0.09679979, 29.14932923], [1516971120000, 0.0967998, 0.09679999, 0.09618748, 0.09618748, 68.85125938], [1516971180000, 0.09618749, 0.09679999, 0.09618749, 0.09679958, 11.80271791], [1516971240000, 0.09621673, 0.09679958, 0.09620673, 0.09621675, 11.57795094], [1516971300000, 0.09621676, 0.09679958, 0.09621676, 0.09622, 14.93978054], [1516971360000, 0.09679381, 0.09679381, 0.09621678, 0.09679332, 4.29806466], [1516971420000, 0.09679332, 0.09679333, 0.09622201, 0.09677998, 13.01623575], [1516971480000, 0.09677998, 0.09678, 0.09622202, 0.09676995, 5.73252534], [1516971540000, 0.09648, 0.09677997, 0.09622203, 0.09672495, 11.20789203], [1516971600000, 0.09672495, 0.09677992, 0.09622209, 0.09622215, 12.98580185], [1516971660000, 0.0966829, 0.0966829, 0.09622215, 0.09668276, 5.45264735], [1516971720000, 0.09668274, 0.09668274, 0.09622, 0.096222, 10.55738405], [1516971780000, 0.096222, 0.09658399, 0.09622001, 0.09622193, 28.17287133], [1516971840000, 0.09622192, 0.09655299, 0.09621678, 0.09621678, 32.71800195], [1516971900000, 0.09621678, 0.09622, 0.09621678, 0.09621678, 22.44390704], [1516971960000, 0.09621678, 0.096527, 0.09621678, 0.096527, 28.86405212], [1516972020000, 0.096527, 0.09656, 0.09621678, 0.09643168, 92.08812282], [1516972080000, 0.09643166, 0.09652496, 0.0962168, 0.09652489, 23.39374047], [1516972140000, 0.0965249, 0.09652496, 0.09621678, 0.09652492, 15.09256757], [1516972200000, 0.09652492, 0.09656, 0.09621686, 0.09642257, 43.10835726], [1516972260000, 0.09652496, 0.09655998, 0.09642257, 0.09642257, 12.117001], [1516972320000, 0.09642258, 0.09655996, 0.09621676, 0.09621676, 25.27984252], [1516972380000, 0.09639994, 0.09639999, 0.09608973, 0.09639999, 68.23557728], [1516972440000, 0.0964, 0.0964, 0.09590769, 0.09597305, 29.13711972], [1516972500000, 0.09594189, 0.09636231, 0.0959077, 0.09595189, 10.25495828], [1516972560000, 0.09594189, 0.09636228, 0.09594189, 0.09595189, 18.82937782], [1516972620000, 0.09592689, 0.09636223, 0.09590771, 0.09595189, 9.55067254], [1516972680000, 0.09595189, 0.09636223, 0.09590769, 0.09629999, 23.73255723], [1516972740000, 0.09629999, 0.09631627, 0.09590769, 0.09590769, 11.18738453], [1516972800000, 0.09595189, 0.09629215, 0.09590769, 0.096291, 9.73029753], [1516972860000, 0.09629099, 0.09629099, 0.09590769, 0.09590769, 16.81635093], [1516972920000, 0.09595421, 0.096, 0.09590769, 0.09595, 19.22513011], [1516972980000, 0.0959077, 0.096, 0.09590769, 0.09590772, 60.80663582], [1516973040000, 0.096, 0.096, 0.09590772, 0.09590773, 6.13096114], [1516973100000, 0.09599999, 0.09599999, 0.09590772, 0.09590772, 3.09710105], [1516973160000, 0.09590772, 0.09590773, 0.09590769, 0.09590769, 104.3582032], [1516973220000, 0.09590769, 0.09590773, 0.09590769, 0.09590769, 52.55782188], [1516973280000, 0.09590769, 0.0959077, 0.09590769, 0.09590769, 12.2597172], [1516973340000, 0.0959077, 0.09590773, 0.09590769, 0.09590769, 4.85932283], [1516973400000, 0.09590769, 0.09628381, 0.09590769, 0.09628381, 18.57542477], [1516973460000, 0.0962838, 0.0962838, 0.09590769, 0.096, 72.46198907], [1516973520000, 0.09590769, 0.096, 0.09590769, 0.096, 13.16695189], [1516973580000, 0.0959077, 0.09636223, 0.09590769, 0.09636216, 17.34892928], [1516973640000, 0.09636213, 0.09636216, 0.09590778, 0.096, 13.28661814], [1516973700000, 0.096, 0.09627699, 0.096, 0.096, 1.93487206], [1516973760000, 0.096, 0.09636218, 0.096, 0.096, 9.38228119], [1516973820000, 0.096, 0.09636204, 0.096, 0.09636199, 5.96815888], [1516973880000, 0.09636193, 0.09636193, 0.09600001, 0.09636155, 1.43165274], [1516973940000, 0.09600009, 0.0963615, 0.09590769, 0.09590769, 66.20038288], [1516974000000, 0.09590769, 0.09629998, 0.09590769, 0.09619997, 7.09903905], [1516974060000, 0.0959077, 0.09619997, 0.0959077, 0.09619996, 7.42407179], [1516974120000, 0.09619996, 0.09619997, 0.09619515, 0.09619996, 14.77610639], [1516974180000, 0.09619997, 0.09619997, 0.09619996, 0.09619996, 6.03286565], [1516974240000, 0.09619996, 0.09619997, 0.09590774, 0.096199, 7.59305067], [1516974300000, 0.096199, 0.096199, 0.09590776, 0.096198, 1.75259075], [1516974360000, 0.096198, 0.096198, 0.096198, 0.096198, 9.24677477], [1516974420000, 0.096198, 0.09619997, 0.096198, 0.09619997, 33.68205037], [1516974480000, 0.09619898, 0.09636195, 0.096198, 0.096198, 5.35904049], [1516974540000, 0.096198, 0.09636, 0.09619799, 0.096198, 15.86503801], [1516974600000, 0.096198, 0.09636, 0.096198, 0.09619802, 8.19052538], [1516974660000, 0.09619802, 0.0963621, 0.09619802, 0.0963621, 34.1881145], [1516974720000, 0.0963621, 0.09636212, 0.09636, 0.09636212, 35.50045154], [1516974780000, 0.09636212, 0.09669999, 0.096362, 0.09636223, 37.63576855], [1516974840000, 0.09636223, 0.09669999, 0.096362, 0.0965712, 17.03421314], [1516974900000, 0.0965723, 0.0968, 0.096362, 0.0966, 120.64604801], [1516974960000, 0.0967003, 0.09677893, 0.0963625, 0.0966, 25.70272365], [1516975020000, 0.0966, 0.09686676, 0.0963625, 0.0963625, 26.75005475], [1516975080000, 0.09674, 0.096844, 0.0963625, 0.09668221, 45.50303233], [1516975140000, 0.09636251, 0.09688798, 0.09636251, 0.09687032, 11.07657678], [1516975200000, 0.0968, 0.09699999, 0.0963625, 0.0963625, 64.88667121], [1516975260000, 0.09636254, 0.09686487, 0.0963625, 0.09677761, 28.37330385], [1516975320000, 0.09636254, 0.09677769, 0.0963625, 0.0965, 5.20278847], [1516975380000, 0.0965, 0.0965, 0.0963626, 0.0963626, 3.78323122], [1516975440000, 0.0963626, 0.09675528, 0.0963626, 0.096501, 8.2321372], [1516975500000, 0.096501, 0.09675528, 0.0965, 0.0965, 55.73551861], [1516975560000, 0.0965, 0.09662671, 0.0965, 0.0965, 5.80097927], [1516975620000, 0.0965, 0.09668878, 0.0963626, 0.0965, 96.21088386], [1516975680000, 0.0965, 0.09661818, 0.096362, 0.096362, 12.74604179], [1516975740000, 0.096362, 0.0965, 0.09619801, 0.0963, 6.32767312], [1516975800000, 0.0963, 0.09636, 0.09590773, 0.096198, 6.64206393], [1516975860000, 0.096198, 0.09661818, 0.096198, 0.09636, 83.9468361], [1516975920000, 0.09636, 0.096363, 0.096198, 0.09622188, 2.27359294], [1516975980000, 0.09622188, 0.09652188, 0.0960102, 0.09635, 2.8369335], [1516976040000, 0.09652188, 0.09652188, 0.09652188, 0.09652188, 2.51176285], [1516976100000, 0.09652188, 0.0966, 0.09636303, 0.0966, 3.00852292], [1516976160000, 0.09636303, 0.0964, 0.09636303, 0.0964, 3.80973473], [1516976220000, 0.0964, 0.0964, 0.09636303, 0.0964, 8.99590869], [1516976280000, 0.09636303, 0.0964, 0.09634999, 0.09634999, 4.83266431], [1516976340000, 0.09639999, 0.0964, 0.09607059, 0.09607059, 19.31501961], [1516976400000, 0.09633891, 0.09633891, 0.09611191, 0.09612, 7.71387928], [1516976460000, 0.09612, 0.09612001, 0.09611191, 0.09612, 6.58627681], [1516976520000, 0.09612, 0.0963999, 0.09608, 0.09612002, 71.67373993], [1516976580000, 0.096349, 0.09669871, 0.0963, 0.09666089, 198.37876085], [1516976640000, 0.09666089, 0.0967, 0.09666087, 0.09666087, 43.05746304], [1516976700000, 0.0967, 0.0967, 0.09666087, 0.09666087, 4.42486692], [1516976760000, 0.09634189, 0.09669997, 0.09612003, 0.09612008, 3.92202255], [1516976820000, 0.09612008, 0.09669993, 0.09612007, 0.09669993, 3.06328971], [1516976880000, 0.09634189, 0.09634189, 0.09612009, 0.09634188, 7.54871953], [1516976940000, 0.09634188, 0.09634188, 0.09612012, 0.09634188, 16.18159215], [1516977000000, 0.09634188, 0.09664641, 0.09612009, 0.09612009, 46.31257725], [1516977060000, 0.09612008, 0.09666328, 0.09612007, 0.09666327, 37.30149821], [1516977120000, 0.09666324, 0.09666326, 0.0962, 0.0962, 18.41662521], [1516977180000, 0.09666326, 0.096888, 0.09652175, 0.09652175, 94.34383613], [1516977240000, 0.09652175, 0.09652175, 0.09612007, 0.09631905, 35.77703184], [1516977300000, 0.09652175, 0.09665261, 0.0961201, 0.09665254, 34.65504058], [1516977360000, 0.09645923, 0.09655204, 0.0962177, 0.0965169, 14.95085489], [1516977420000, 0.09621771, 0.0965169, 0.09621771, 0.09641689, 1.80853346], [1516977480000, 0.09641689, 0.09651689, 0.09621772, 0.09635, 4.37865439], [1516977540000, 0.09641688, 0.09641688, 0.09635, 0.09635, 2.51743652], [1516977600000, 0.09635, 0.09635, 0.09635, 0.09635, 2.0322875], [1516977660000, 0.09635001, 0.09641688, 0.09635, 0.09635, 13.55969666], [1516977720000, 0.09635, 0.09641688, 0.0961201, 0.0961201, 78.77255658], [1516977780000, 0.0961201, 0.09641688, 0.09612007, 0.09612007, 5.16086313], [1516977840000, 0.09635, 0.09651689, 0.09612007, 0.09612007, 30.23227524], [1516977900000, 0.09612111, 0.09651689, 0.09612007, 0.09649999, 5.39433127], [1516977960000, 0.09649995, 0.09649995, 0.096, 0.0961, 3.79714689], [1516978020000, 0.09600002, 0.09612006, 0.096, 0.09609999, 12.56889735], [1516978080000, 0.09612005, 0.09612006, 0.09600002, 0.09612006, 22.85982873], [1516978140000, 0.09612007, 0.0965, 0.09612006, 0.09649999, 8.34165087], [1516978200000, 0.09649999, 0.09649999, 0.09612007, 0.0963, 4.28900529], [1516978260000, 0.0963, 0.0963, 0.09612007, 0.09621, 17.49058278], [1516978320000, 0.09621, 0.09621, 0.09612006, 0.09621, 9.1761418], [1516978380000, 0.09612007, 0.09621, 0.09609999, 0.09609999, 15.6191514], [1516978440000, 0.096, 0.0961, 0.096, 0.0961, 26.97086073], [1516978500000, 0.0961, 0.0961, 0.096, 0.096, 18.68198798], [1516978560000, 0.0960002, 0.0960002, 0.096, 0.09600001, 22.71635671], [1516978620000, 0.09600001, 0.09612006, 0.09590773, 0.09600001, 63.20465875], [1516978680000, 0.096, 0.096, 0.09590772, 0.09590772, 18.45739971], [1516978740000, 0.09590773, 0.0961, 0.09590769, 0.09590772, 29.03993864], [1516978800000, 0.09612006, 0.09612006, 0.09590769, 0.09590769, 3.1534237], [1516978860000, 0.09600002, 0.09600002, 0.09590773, 0.09600002, 0.84125483], [1516978920000, 0.09600002, 0.09612006, 0.09600001, 0.09600001, 5.44367569], [1516978980000, 0.09612005, 0.09612006, 0.09600001, 0.09612004, 5.41134529], [1516979040000, 0.09612005, 0.09621, 0.09600001, 0.09600001, 23.51032726], [1516979100000, 0.09610009, 0.09621, 0.09600001, 0.09600001, 8.87245464], [1516979160000, 0.09600001, 0.09610009, 0.09600001, 0.09600001, 11.0982262], [1516979220000, 0.09600001, 0.09600001, 0.096, 0.09600001, 35.56818324], [1516979280000, 0.09610009, 0.09620999, 0.09590769, 0.09590769, 7.30740448], [1516979340000, 0.09590769, 0.09620999, 0.09590769, 0.09590769, 3.31565125], [1516979400000, 0.09620989, 0.09620994, 0.09590769, 0.09600002, 83.25139978], [1516979460000, 0.09600002, 0.09621, 0.09590769, 0.09590769, 82.78762775], [1516979520000, 0.09590769, 0.09599997, 0.0959, 0.0959, 77.5037865], [1516979580000, 0.0959, 0.0959, 0.09548794, 0.09558343, 19.95019202], [1516979640000, 0.09587406, 0.09617759, 0.0954, 0.09558343, 33.50514355], [1516979700000, 0.09558343, 0.09599995, 0.09512744, 0.09599993, 93.67971905], [1516979760000, 0.09592597, 0.0959999, 0.09512747, 0.0956434, 42.8471606], [1516979820000, 0.09562843, 0.09584, 0.09515108, 0.0954503, 50.08339858], [1516979880000, 0.0954503, 0.09584, 0.09508002, 0.09561229, 62.30529217], [1516979940000, 0.09561229, 0.09586261, 0.09510002, 0.0954502, 28.44966839], [1516980000000, 0.09545023, 0.09583497, 0.09510013, 0.0954502, 24.34367145], [1516980060000, 0.0954502, 0.09583497, 0.09511002, 0.09545023, 15.73271223], [1516980120000, 0.09545023, 0.09579999, 0.09520001, 0.09579998, 20.76744737], [1516980180000, 0.09579998, 0.09579999, 0.09545061, 0.09545061, 48.89758588], [1516980240000, 0.09578992, 0.09578993, 0.09545061, 0.09545091, 16.49492592], [1516980300000, 0.09545061, 0.09573285, 0.09545023, 0.095452, 17.5640975], [1516980360000, 0.09573285, 0.09579998, 0.095452, 0.09579998, 6.80448859], [1516980420000, 0.09545202, 0.09579998, 0.09545201, 0.09545221, 4.6857136], [1516980480000, 0.09545221, 0.0959, 0.09545221, 0.09579997, 16.92742692], [1516980540000, 0.0958626, 0.0958626, 0.0956, 0.0956, 5.15654366], [1516980600000, 0.0956, 0.0956, 0.0954713, 0.0955999, 2.32042253], [1516980660000, 0.0955999, 0.0956, 0.09547131, 0.0956, 8.58889148], [1516980720000, 0.0958626, 0.09596227, 0.0955999, 0.0955999, 6.40348681], [1516980780000, 0.0959623, 0.09608836, 0.0955999, 0.0955999, 31.32037967], [1516980840000, 0.09572115, 0.09590263, 0.0955999, 0.0959026, 4.17511921], [1516980900000, 0.0959026, 0.0959026, 0.0955999, 0.09588894, 8.96994762], [1516980960000, 0.09588894, 0.09588895, 0.09547132, 0.09548635, 116.99619164], [1516981020000, 0.09548635, 0.09588895, 0.09547132, 0.09584948, 6.09001457], [1516981080000, 0.09584948, 0.09588895, 0.09547132, 0.0958889, 44.18953888], [1516981140000, 0.09584948, 0.095898, 0.09547132, 0.09584948, 33.88091605], [1516981200000, 0.09584948, 0.09584948, 0.09547132, 0.0958494, 7.29908143], [1516981260000, 0.09584939, 0.09584939, 0.09547132, 0.09584939, 5.00729803], [1516981320000, 0.09547138, 0.0958494, 0.09547132, 0.09584938, 59.67127204], [1516981380000, 0.0958494, 0.0958494, 0.09547132, 0.09547166, 25.46664946], [1516981440000, 0.0958167, 0.09590262, 0.09556715, 0.09584938, 24.15969025], [1516981500000, 0.09584938, 0.09584948, 0.09556715, 0.09584948, 2.3971488], [1516981560000, 0.09584947, 0.09590262, 0.09584938, 0.09584948, 5.35490521], [1516981620000, 0.09584948, 0.09584948, 0.0958167, 0.09584938, 12.3419824], [1516981680000, 0.09584936, 0.09584936, 0.09556715, 0.0958167, 15.7788606], [1516981740000, 0.0958167, 0.0958167, 0.09566757, 0.09566757, 7.68938744], [1516981800000, 0.0958167, 0.0958167, 0.09566757, 0.09566758, 33.77849951], [1516981860000, 0.09566758, 0.09621, 0.09566758, 0.0957632, 22.30341598], [1516981920000, 0.09566759, 0.09604951, 0.09566757, 0.096027, 21.12309291], [1516981980000, 0.09566761, 0.09602698, 0.0956432, 0.09598829, 43.28012869], [1516982040000, 0.09566761, 0.09596572, 0.09559104, 0.09559105, 54.21264949], [1516982100000, 0.09559105, 0.09566756, 0.0954713, 0.0955067, 58.23391094], [1516982160000, 0.0955067, 0.09566751, 0.09545024, 0.0955067, 23.32488151], [1516982220000, 0.0955067, 0.09560219, 0.0955067, 0.09560219, 8.00188482], [1516982280000, 0.09557219, 0.09586195, 0.09557219, 0.09586193, 9.2320701], [1516982340000, 0.09586194, 0.09586194, 0.09558219, 0.09558219, 46.953247], [1516982400000, 0.095861, 0.096017, 0.0952, 0.09526651, 82.205036], [1516982460000, 0.0952, 0.09529523, 0.09511002, 0.09511002, 132.29829051], [1516982520000, 0.09529521, 0.09529521, 0.09445024, 0.09499997, 92.98609543], [1516982580000, 0.09482029, 0.095, 0.09445024, 0.0949999, 105.13141747], [1516982640000, 0.09499989, 0.09529522, 0.0948, 0.09499987, 57.17723915], [1516982700000, 0.09499987, 0.09510693, 0.09499987, 0.0951, 23.40240004], [1516982760000, 0.0951, 0.09510693, 0.0948, 0.0949999, 4.10025529], [1516982820000, 0.0949999, 0.09510693, 0.0949999, 0.09510693, 39.48678549], [1516982880000, 0.09510693, 0.09510693, 0.0949999, 0.0951, 56.44112436], [1516982940000, 0.09509999, 0.09510693, 0.0949999, 0.0949999, 66.15260395], [1516983000000, 0.0949999, 0.09510693, 0.0949999, 0.095, 49.58252549], [1516983060000, 0.0951069, 0.09510693, 0.0949999, 0.0949999, 38.39734903], [1516983120000, 0.09510692, 0.09510693, 0.0949999, 0.09510689, 20.45490445], [1516983180000, 0.095, 0.09510693, 0.0949999, 0.09510689, 62.66539071], [1516983240000, 0.09510213, 0.09510693, 0.0949999, 0.09510693, 155.06323428], [1516983300000, 0.0949999, 0.09510692, 0.0949999, 0.0951069, 6.67504514], [1516983360000, 0.0951069, 0.0951069, 0.0949999, 0.095095, 40.40474842], [1516983420000, 0.0951, 0.09510689, 0.0949, 0.0949999, 32.08926067], [1516983480000, 0.0949999, 0.0951069, 0.09463753, 0.0951069, 44.35809804], [1516983540000, 0.0951069, 0.0951069, 0.09465254, 0.09499996, 11.62895174], [1516983600000, 0.0951, 0.0951, 0.0949916, 0.09499996, 8.62909812], [1516983660000, 0.09499995, 0.09499995, 0.09466863, 0.09477907, 26.79915346], [1516983720000, 0.09498995, 0.09499996, 0.09465255, 0.09499995, 24.57365158], [1516983780000, 0.09499995, 0.0951069, 0.09479408, 0.0951069, 34.26191328], [1516983840000, 0.095, 0.0951069, 0.095, 0.095, 12.2326455], [1516983900000, 0.095, 0.0951069, 0.094985, 0.0951069, 20.55157363], [1516983960000, 0.09510689, 0.0951069, 0.09510689, 0.0951069, 3.3548926], [1516984020000, 0.0951069, 0.09510693, 0.0951069, 0.09510693, 17.16080194], [1516984080000, 0.0951069, 0.09510693, 0.09510689, 0.09510689, 21.58503657], [1516984140000, 0.09510693, 0.09528999, 0.09510689, 0.09510689, 26.80879599], [1516984200000, 0.09528998, 0.09528998, 0.09510689, 0.09526615, 44.36261771], [1516984260000, 0.09526615, 0.0952852, 0.09526615, 0.0952852, 14.25034806], [1516984320000, 0.09528519, 0.09529, 0.09526615, 0.09526615, 7.3079006], [1516984380000, 0.09526616, 0.09544491, 0.09526615, 0.09534602, 7.96677482], [1516984440000, 0.09534601, 0.0954449, 0.09510695, 0.09534602, 8.6268664], [1516984500000, 0.0953469, 0.09542206, 0.09529522, 0.095346, 32.36279951], [1516984560000, 0.095346, 0.09542206, 0.09510689, 0.09533891, 14.71378821], [1516984620000, 0.09528023, 0.0953389, 0.0951069, 0.09528023, 7.61214504], [1516984680000, 0.09528023, 0.09533889, 0.0951169, 0.09533889, 2.00177585], [1516984740000, 0.09533888, 0.09541412, 0.09511691, 0.09541381, 32.13434953], [1516984800000, 0.09511693, 0.09541381, 0.09511693, 0.0954, 7.35678596], [1516984860000, 0.09538999, 0.09539, 0.09511691, 0.09538995, 17.80550968], [1516984920000, 0.09511695, 0.09511695, 0.0951169, 0.09511691, 5.66277929], [1516984980000, 0.09511691, 0.09511691, 0.0951069, 0.0951169, 23.18165622], [1516985040000, 0.0951169, 0.0954, 0.0951069, 0.09511691, 23.33918322], [1516985100000, 0.09541375, 0.09541375, 0.09504746, 0.09510689, 8.12565582], [1516985160000, 0.09510689, 0.09541354, 0.09510689, 0.09527963, 5.71148381], [1516985220000, 0.09541352, 0.09541352, 0.0951069, 0.09527961, 3.31924941], [1516985280000, 0.095115, 0.09527961, 0.095115, 0.09527961, 6.62147687], [1516985340000, 0.09512, 0.09527963, 0.09511501, 0.09527961, 10.64475956], [1516985400000, 0.09527961, 0.09527963, 0.09504745, 0.0952795, 12.02877802], [1516985460000, 0.0952795, 0.09527963, 0.09504747, 0.09527963, 19.91841307], [1516985520000, 0.09526962, 0.09526963, 0.09526962, 0.09526962, 0.91145467], [1516985580000, 0.09526962, 0.09527963, 0.09504747, 0.0951505, 26.35486592], [1516985640000, 0.0951505, 0.09526962, 0.09504745, 0.09504745, 15.17032009], [1516985700000, 0.09526962, 0.0952796, 0.09500011, 0.09500011, 30.99948234], [1516985760000, 0.09500011, 0.09527963, 0.09500011, 0.09527963, 9.4674293], [1516985820000, 0.09527963, 0.09527963, 0.09500011, 0.09500011, 4.51588098], [1516985880000, 0.09527963, 0.09527963, 0.09500012, 0.09500016, 9.6188006], [1516985940000, 0.0950002, 0.0950002, 0.09500016, 0.09500016, 5.28223208], [1516986000000, 0.09500016, 0.09527963, 0.09500016, 0.09500019, 13.26349061], [1516986060000, 0.09527962, 0.09540349, 0.09527962, 0.09540349, 26.0592876], [1516986120000, 0.09541345, 0.09541352, 0.09530002, 0.09541352, 5.05354203], [1516986180000, 0.09541352, 0.09541352, 0.09541, 0.09541352, 1.92513546], [1516986240000, 0.09541003, 0.09541352, 0.09541, 0.09541, 16.1100309], [1516986300000, 0.09541352, 0.09549518, 0.09530001, 0.09549518, 22.62822462], [1516986360000, 0.09549518, 0.0955, 0.09549518, 0.0954952, 6.68060043], [1516986420000, 0.09549521, 0.0957079, 0.09530001, 0.09530001, 33.52471042], [1516986480000, 0.0953, 0.09530001, 0.0951, 0.0953, 26.77315658], [1516986540000, 0.09528961, 0.0953, 0.09510001, 0.09527962, 1.32816912], [1516986600000, 0.09527962, 0.09527962, 0.09510002, 0.09510002, 5.0980144], [1516986660000, 0.09510002, 0.09527962, 0.09510002, 0.09510002, 2.15058094], [1516986720000, 0.09527962, 0.09527962, 0.09525, 0.09525, 4.42091357], [1516986780000, 0.09525, 0.09525, 0.09515, 0.09524999, 6.63774639], [1516986840000, 0.09524999, 0.09525, 0.095, 0.09525, 56.81411421], [1516986900000, 0.09525, 0.09525, 0.09525, 0.09525, 5.33292742], [1516986960000, 0.09525, 0.09525, 0.09524999, 0.09524999, 6.38962506], [1516987020000, 0.095081, 0.09524999, 0.095081, 0.09524999, 6.28169666], [1516987080000, 0.09524999, 0.09524999, 0.09508, 0.09508, 4.35457804], [1516987140000, 0.09508, 0.09524999, 0.095, 0.09524998, 7.95574636], [1516987200000, 0.09524998, 0.09524999, 0.09524998, 0.09524998, 21.93680394], [1516987260000, 0.09524998, 0.09524998, 0.09500001, 0.09500001, 8.74737184], [1516987320000, 0.09524995, 0.09524995, 0.09500003, 0.09500003, 4.27051416], [1516987380000, 0.09500003, 0.09517995, 0.09500003, 0.09500005, 6.97703692], [1516987440000, 0.09517995, 0.0952, 0.09517994, 0.09517995, 1.14879019], [1516987500000, 0.09517995, 0.09519999, 0.0951, 0.09519999, 7.30606076], [1516987560000, 0.09517997, 0.09524998, 0.09517997, 0.09524998, 7.84089532], [1516987620000, 0.09524998, 0.09524999, 0.0952499, 0.09524999, 18.61141341], [1516987680000, 0.09524999, 0.09524999, 0.0952499, 0.0952499, 35.65631817], [1516987740000, 0.09524999, 0.09524999, 0.0952499, 0.09524991, 3.03236196], [1516987800000, 0.09524999, 0.09525, 0.09524991, 0.09525, 7.42261301], [1516987860000, 0.09525, 0.0953, 0.0952499, 0.0952499, 7.01604824], [1516987920000, 0.09527962, 0.09527963, 0.09525, 0.09527962, 7.69855888], [1516987980000, 0.09527962, 0.09527963, 0.0952499, 0.09527963, 26.53321021], [1516988040000, 0.09527963, 0.09527963, 0.09527962, 0.09527962, 12.33241229], [1516988100000, 0.09527962, 0.09527963, 0.09527962, 0.09527963, 8.40954239], [1516988160000, 0.09527963, 0.09527963, 0.09527, 0.09527, 1.28000327], [1516988220000, 0.09527959, 0.09527959, 0.09525001, 0.09527336, 1.06037517], [1516988280000, 0.09527959, 0.09527959, 0.09525, 0.09527959, 26.10702132], [1516988340000, 0.09525, 0.09527959, 0.0952499, 0.09525001, 29.48148264], [1516988400000, 0.0952499, 0.09525001, 0.0952499, 0.0952499, 6.71019415], [1516988460000, 0.0952499, 0.09525, 0.0951, 0.09518, 24.12550167], [1516988520000, 0.09517995, 0.09517995, 0.0951, 0.09512995, 4.73665984], [1516988580000, 0.09512995, 0.0951799, 0.09512995, 0.0951799, 1.69990982], [1516988640000, 0.095179, 0.09527961, 0.095, 0.095, 37.24999665], [1516988700000, 0.09500001, 0.09527955, 0.095, 0.09527954, 17.55550088], [1516988760000, 0.0952796, 0.09527961, 0.09500002, 0.09507, 5.20407068], [1516988820000, 0.09507, 0.09527954, 0.09507, 0.09527954, 2.58927695], [1516988880000, 0.09526014, 0.09527954, 0.09526014, 0.09527954, 6.25463624], [1516988940000, 0.09527954, 0.09527962, 0.095278, 0.09527962, 8.86517933], [1516989000000, 0.09527954, 0.09527962, 0.09527954, 0.09527962, 1.70246618], [1516989060000, 0.09527962, 0.09527962, 0.09527954, 0.09527954, 3.19430762], [1516989120000, 0.09527954, 0.09530001, 0.095278, 0.095278, 16.06824407], [1516989180000, 0.095278, 0.09527962, 0.095278, 0.09527954, 0.54867685], [1516989240000, 0.095278, 0.0955598, 0.095278, 0.09527954, 8.6462488], [1516989300000, 0.09527954, 0.09548923, 0.09527954, 0.09527954, 2.79943098], [1516989360000, 0.09548921, 0.09548921, 0.095279, 0.095279, 8.76717138], [1516989420000, 0.095279, 0.0954892, 0.095278, 0.095278, 4.87207363], [1516989480000, 0.095279, 0.09548918, 0.095259, 0.095278, 7.61646081], [1516989540000, 0.095278, 0.095278, 0.0952562, 0.0952562, 15.57896269], [1516989600000, 0.0952562, 0.09547754, 0.095, 0.0952562, 6.95737258], [1516989660000, 0.0952562, 0.0952562, 0.095, 0.095, 1.75677321], [1516989720000, 0.095, 0.09525599, 0.095, 0.095, 11.77989023], [1516989780000, 0.09525599, 0.09525599, 0.09496, 0.09525598, 7.27053064], [1516989840000, 0.09500001, 0.095256, 0.09500001, 0.09525598, 28.6534819], [1516989900000, 0.09525598, 0.095279, 0.09499146, 0.09525588, 3.74665272], [1516989960000, 0.09525587, 0.09525587, 0.09499146, 0.09525586, 3.90212914], [1516990020000, 0.09523, 0.09523, 0.095, 0.09523, 5.10934863], [1516990080000, 0.09522999, 0.09525587, 0.09500003, 0.09500003, 42.10710925], [1516990140000, 0.0952, 0.0952, 0.09500003, 0.09500003, 2.85533923], [1516990200000, 0.09500003, 0.09500003, 0.09500003, 0.09500003, 3.76433448], [1516990260000, 0.09500003, 0.09525587, 0.09500003, 0.0952, 5.51650157], [1516990320000, 0.0952, 0.09525587, 0.0952, 0.09525587, 5.91721278], [1516990380000, 0.09500004, 0.09525587, 0.09500004, 0.09500004, 1.38697944], [1516990440000, 0.09500004, 0.09525587, 0.09500004, 0.09500005, 0.92148454], [1516990500000, 0.09525587, 0.09535, 0.09500005, 0.09500005, 12.93667347], [1516990560000, 0.09500005, 0.095279, 0.09500005, 0.095279, 6.67971456], [1516990620000, 0.0950905, 0.09535, 0.0950905, 0.095279, 13.88972043], [1516990680000, 0.095279, 0.09535, 0.09500007, 0.09500007, 11.07562122], [1516990740000, 0.09500007, 0.09544366, 0.09500006, 0.09500006, 23.43520159], [1516990800000, 0.09500006, 0.09541931, 0.09500006, 0.09500006, 11.85697063], [1516990860000, 0.09513, 0.09542103, 0.09500006, 0.09500006, 4.03580112], [1516990920000, 0.09500008, 0.09539, 0.09500008, 0.09500008, 1.689552], [1516990980000, 0.09539, 0.09539, 0.09500008, 0.0950999, 1.45401452], [1516991040000, 0.0950999, 0.09539, 0.09500008, 0.09539, 12.64829156], [1516991100000, 0.09539, 0.09539, 0.09508008, 0.09539, 8.59037838], [1516991160000, 0.0953759, 0.0953759, 0.09500009, 0.09536081, 2.65196121], [1516991220000, 0.09536081, 0.09536081, 0.09500008, 0.09500008, 3.83063394], [1516991280000, 0.09500009, 0.0951, 0.09500006, 0.0951, 41.67611487], [1516991340000, 0.09535696, 0.09535696, 0.09500008, 0.0951, 1.94390185], [1516991400000, 0.0950001, 0.0951, 0.09500008, 0.09509999, 1.5127242], [1516991460000, 0.0951, 0.09510001, 0.0951, 0.09510001, 1.94404212], [1516991520000, 0.09510001, 0.09538998, 0.09510001, 0.09538997, 7.550457], [1516991580000, 0.09538997, 0.09539, 0.09500006, 0.09510001, 9.1663779], [1516991640000, 0.09515149, 0.09536914, 0.09510001, 0.09510001, 2.31989561], [1516991700000, 0.09535912, 0.09538999, 0.09510001, 0.0953591, 6.40395696], [1516991760000, 0.0953491, 0.09538999, 0.09500006, 0.09500006, 55.90890612], [1516991820000, 0.09507, 0.09511501, 0.09500006, 0.0951, 6.85903655], [1516991880000, 0.09514999, 0.09522729, 0.09514999, 0.09522729, 3.26340132], [1516991940000, 0.09514999, 0.09522729, 0.09507, 0.09522729, 13.49832474], [1516992000000, 0.09522729, 0.09522729, 0.09507, 0.09515, 8.33347487], [1516992060000, 0.09521693, 0.09522723, 0.09500001, 0.09500001, 4.85084726], [1516992120000, 0.09500001, 0.09500003, 0.095, 0.095, 9.7360726], [1516992180000, 0.095, 0.09500003, 0.0947, 0.0949327, 22.25686501], [1516992240000, 0.0948, 0.0949327, 0.0947, 0.0949, 5.30453613], [1516992300000, 0.09493246, 0.0949327, 0.0949, 0.0949327, 15.60308395], [1516992360000, 0.0949, 0.0949327, 0.0948, 0.0948, 5.24578167], [1516992420000, 0.0948, 0.0949, 0.0948, 0.0948, 5.58794045], [1516992480000, 0.0948, 0.09488, 0.0948, 0.094801, 1.53914132], [1516992540000, 0.094801, 0.09485999, 0.0948, 0.0948, 32.00823736], [1516992600000, 0.09485999, 0.09485999, 0.0948, 0.0948, 6.23047989], [1516992660000, 0.09485998, 0.09485998, 0.0948, 0.0948, 14.01953874], [1516992720000, 0.09484998, 0.09484998, 0.0948, 0.09483998, 1.22210617], [1516992780000, 0.09485998, 0.09485998, 0.0948, 0.0948, 59.16880946], [1516992840000, 0.0948, 0.0948, 0.0947, 0.09479996, 49.79213469], [1516992900000, 0.09479996, 0.09480001, 0.0947, 0.0947, 6.94049394], [1516992960000, 0.0947999, 0.0948, 0.0947, 0.0948, 5.84139877], [1516993020000, 0.0948, 0.09480001, 0.0947, 0.0947, 43.52039987], [1516993080000, 0.0947, 0.09485998, 0.0947, 0.0947, 6.26098819], [1516993140000, 0.09485998, 0.09488, 0.0946376, 0.0946376, 3.04973418], [1516993200000, 0.09487, 0.0949327, 0.09463754, 0.0949327, 1.75211278], [1516993260000, 0.0949, 0.0949, 0.0946376, 0.0946376, 2.23776204], [1516993320000, 0.09488, 0.0949327, 0.09488, 0.0949327, 13.15520703], [1516993380000, 0.0949327, 0.0949915, 0.0946376, 0.0949327, 16.27912171], [1516993440000, 0.0946479, 0.0949915, 0.0946479, 0.0949327, 9.00125288], [1516993500000, 0.09494, 0.09494, 0.0946479, 0.09494, 6.54548194], [1516993560000, 0.09494, 0.0949915, 0.09474, 0.09474, 3.22599194], [1516993620000, 0.0949915, 0.09499999, 0.0946479, 0.09485998, 5.75461714], [1516993680000, 0.09485997, 0.095, 0.09474, 0.09475, 32.98772049], [1516993740000, 0.095, 0.095, 0.09475, 0.09476, 21.9092617], [1516993800000, 0.09475, 0.09476, 0.09475, 0.09475999, 0.51673356], [1516993860000, 0.09475999, 0.09514, 0.09475003, 0.09513996, 11.40575288], [1516993920000, 0.09513996, 0.09513996, 0.09475003, 0.09485, 28.25140763], [1516993980000, 0.09485, 0.09485, 0.09476, 0.09476003, 7.57264733], [1516994040000, 0.09476003, 0.09513953, 0.09476003, 0.09476006, 2.40532376], [1516994100000, 0.09513942, 0.09513942, 0.09476, 0.09513935, 7.63385088], [1516994160000, 0.09476, 0.09513936, 0.09476, 0.09476, 17.58727348], [1516994220000, 0.09476, 0.09513935, 0.09476, 0.09513934, 9.10758871], [1516994280000, 0.09512933, 0.09513933, 0.09476002, 0.09510927, 3.2303465], [1516994340000, 0.09513933, 0.09513933, 0.09476002, 0.09476002, 6.33037816], [1516994400000, 0.09477, 0.09513935, 0.09476002, 0.09506, 23.39622227], [1516994460000, 0.09506, 0.09512926, 0.09477, 0.09487, 2.37210638], [1516994520000, 0.09487, 0.09503999, 0.09486475, 0.09503999, 49.87821485], [1516994580000, 0.09503999, 0.09505999, 0.09476002, 0.09476002, 46.89759384], [1516994640000, 0.09506, 0.09513936, 0.0946479, 0.0946479, 13.36256689], [1516994700000, 0.09489817, 0.09489817, 0.0946479, 0.0946479, 16.26070161], [1516994760000, 0.09489817, 0.09513397, 0.0946479, 0.09489817, 57.48728398], [1516994820000, 0.09489817, 0.09513399, 0.09465, 0.09485999, 3.66689732], [1516994880000, 0.095, 0.09513398, 0.095, 0.095, 16.35847141], [1516994940000, 0.095, 0.09503388, 0.09463761, 0.09503388, 11.50713526], [1516995000000, 0.09503388, 0.09503388, 0.095, 0.095, 0.56294623], [1516995060000, 0.09503388, 0.09503388, 0.095, 0.095, 1.28621583], [1516995120000, 0.095, 0.09503388, 0.095, 0.095, 10.56767634], [1516995180000, 0.09500388, 0.09503388, 0.095, 0.095, 12.11298839], [1516995240000, 0.09503388, 0.09503388, 0.09463761, 0.095, 24.39219038], [1516995300000, 0.09499999, 0.09499999, 0.09499999, 0.09499999, 1.07631263], [1516995360000, 0.09499997, 0.09499999, 0.094696, 0.094696, 9.20125191], [1516995420000, 0.094696, 0.09499998, 0.09463762, 0.09499998, 6.40489265], [1516995480000, 0.09499998, 0.09499998, 0.09499997, 0.09499998, 4.16325871], [1516995540000, 0.09463765, 0.09499995, 0.09463762, 0.09495995, 0.79656205], [1516995600000, 0.09494995, 0.09499991, 0.09463762, 0.09463763, 2.30729359], [1516995660000, 0.09463763, 0.09491995, 0.09463762, 0.09463763, 1.66474246], [1516995720000, 0.09491995, 0.09499999, 0.09491995, 0.09499999, 1.21001018], [1516995780000, 0.09491995, 0.09499999, 0.09463763, 0.09499999, 7.70995871], [1516995840000, 0.09493763, 0.09499999, 0.09493763, 0.09495995, 0.31509725], [1516995900000, 0.09499999, 0.09499999, 0.09495995, 0.09495995, 21.78763325], [1516995960000, 0.09499998, 0.09499998, 0.09478902, 0.09478902, 0.4545934], [1516996020000, 0.09499998, 0.09499998, 0.0947, 0.09478901, 2.02015035], [1516996080000, 0.09478901, 0.09478901, 0.09470002, 0.094789, 8.08297464], [1516996140000, 0.094789, 0.09478901, 0.094789, 0.09478901, 0.74422777], [1516996200000, 0.09478901, 0.09478901, 0.094789, 0.09478901, 1.14706486], [1516996260000, 0.09478901, 0.09478901, 0.09463762, 0.09463762, 6.22356265], [1516996320000, 0.09463762, 0.09478901, 0.09463762, 0.09478901, 1.6948013], [1516996380000, 0.09478901, 0.09478901, 0.09463763, 0.09463763, 6.51421706], [1516996440000, 0.09478901, 0.09478901, 0.09463763, 0.09463763, 7.77365326], [1516996500000, 0.09463763, 0.09478901, 0.09463762, 0.09478901, 27.19373049], [1516996560000, 0.09463763, 0.09478901, 0.09463762, 0.09478901, 2.08876826], [1516996620000, 0.09478901, 0.09499998, 0.09478901, 0.09478901, 2.93055664], [1516996680000, 0.09478901, 0.09478901, 0.09463762, 0.09463763, 4.68556239], [1516996740000, 0.09478901, 0.095, 0.09463763, 0.09499998, 72.47196729], [1516996800000, 0.09499998, 0.095, 0.09499998, 0.09499998, 7.82124598], [1516996860000, 0.095, 0.095, 0.09499998, 0.09499998, 24.68428963], [1516996920000, 0.09499997, 0.09499997, 0.09478901, 0.09478901, 3.53463872], [1516996980000, 0.09499996, 0.09499996, 0.0947892, 0.0947892, 3.19856663], [1516997040000, 0.09499994, 0.09499994, 0.09478901, 0.0947892, 3.32097692], [1516997100000, 0.09478919, 0.0947892, 0.09463763, 0.09478902, 7.60210028], [1516997160000, 0.09478902, 0.09478902, 0.09463764, 0.09478902, 2.24283454], [1516997220000, 0.09478902, 0.0947892, 0.09463766, 0.09463766, 5.65622306], [1516997280000, 0.0947892, 0.0947892, 0.09471334, 0.0947892, 0.30656188], [1516997340000, 0.0947892, 0.0947892, 0.0947892, 0.0947892, 1.88156269], [1516997400000, 0.0947892, 0.0947892, 0.09463763, 0.0947892, 6.97500545], [1516997460000, 0.0947892, 0.0947892, 0.09469828, 0.09469828, 0.81233028], [1516997520000, 0.09472, 0.0947892, 0.09472, 0.0947892, 7.33329759], [1516997580000, 0.0947892, 0.0947892, 0.09478919, 0.0947892, 2.74323737], [1516997640000, 0.0947892, 0.0947892, 0.09472, 0.0947892, 7.19381049], [1516997700000, 0.0947892, 0.0947892, 0.09472, 0.0947892, 8.94132909], [1516997760000, 0.0947892, 0.0947892, 0.09472001, 0.09478919, 2.24830678], [1516997820000, 0.09478918, 0.0947892, 0.09472002, 0.09478919, 7.08043639], [1516997880000, 0.09478919, 0.0947892, 0.09472002, 0.0947892, 3.69765282], [1516997940000, 0.0947892, 0.0947892, 0.09472002, 0.0947892, 6.28664944], [1516998000000, 0.0947892, 0.0947892, 0.09472002, 0.0947892, 8.96395709], [1516998060000, 0.0947892, 0.0947892, 0.09472002, 0.09472002, 1.37294208], [1516998120000, 0.09478919, 0.0947892, 0.09472002, 0.09478919, 10.34131561], [1516998180000, 0.09478919, 0.0947892, 0.09472002, 0.09472002, 0.80029881], [1516998240000, 0.09472003, 0.09472003, 0.09472002, 0.09472002, 6.17370531], [1516998300000, 0.09472003, 0.0947892, 0.09472002, 0.0947892, 5.96182699], [1516998360000, 0.0947892, 0.0949992, 0.0947892, 0.0949992, 3.5306539], [1516998420000, 0.0947892, 0.09503424, 0.0947892, 0.09503424, 3.8580056], [1516998480000, 0.09503424, 0.09513399, 0.09478925, 0.09478925, 2.08287466], [1516998540000, 0.09513398, 0.09513399, 0.09478925, 0.09513398, 5.24982538], [1516998600000, 0.09478926, 0.09513398, 0.09478926, 0.09478926, 23.07207995], [1516998660000, 0.09513398, 0.09513398, 0.09478926, 0.09478926, 0.41418969], [1516998720000, 0.09478926, 0.09513398, 0.09478926, 0.09478926, 1.3070943], [1516998780000, 0.0948, 0.09513398, 0.0947892, 0.0948, 8.56522841], [1516998840000, 0.0948, 0.09513398, 0.09474544, 0.09513398, 3.76675373], [1516998900000, 0.09474545, 0.0948, 0.09474545, 0.0948, 5.60630232], [1516998960000, 0.0948, 0.0948, 0.09478926, 0.0948, 2.66281729], [1516999020000, 0.0948, 0.0948, 0.09479462, 0.09479462, 2.45547969], [1516999080000, 0.09478926, 0.0948, 0.09474544, 0.0948, 1.49152607], [1516999140000, 0.0948, 0.0948, 0.09478928, 0.0948, 7.30322138], [1516999200000, 0.0948, 0.0948, 0.09478926, 0.0948, 5.08500968], [1516999260000, 0.0948, 0.0948, 0.09474544, 0.0948, 36.5883504], [1516999320000, 0.09475, 0.09500856, 0.09475, 0.0948, 1.20539224], [1516999380000, 0.0948, 0.0948, 0.0948, 0.0948, 1.38648826], [1516999440000, 0.0948, 0.0948, 0.09474544, 0.0948, 4.35882419], [1516999500000, 0.0948, 0.0948, 0.09474544, 0.0948, 7.11222049], [1516999560000, 0.0948, 0.0948, 0.09474544, 0.09474544, 0.29179097], [1516999620000, 0.0948, 0.0948, 0.09474544, 0.0948, 9.83125201], [1516999680000, 0.09500856, 0.09512136, 0.0948, 0.09512136, 1.79787894], [1516999740000, 0.0948, 0.0948, 0.09474544, 0.09474545, 7.98546327], [1516999800000, 0.09493494, 0.09512136, 0.09474544, 0.09474544, 3.4413162], [1516999860000, 0.0948, 0.09512136, 0.0948, 0.09512136, 24.36360487], [1516999920000, 0.09512136, 0.09513399, 0.095, 0.09512136, 17.33808398], [1516999980000, 0.09512136, 0.09513399, 0.09512136, 0.09512136, 4.30248356], [1517000040000, 0.09513399, 0.09513399, 0.09512136, 0.09512136, 4.21458505], [1517000100000, 0.09513398, 0.09513398, 0.09474544, 0.09480001, 3.34553213], [1517000160000, 0.09512136, 0.09512136, 0.09512136, 0.09512136, 1.27951124], [1517000220000, 0.09512136, 0.09514996, 0.09489913, 0.095, 24.26228197], [1517000280000, 0.09514996, 0.0952, 0.09512136, 0.09512136, 2.97002361], [1517000340000, 0.09510636, 0.0952, 0.095, 0.0952, 4.92345305], [1517000400000, 0.09514996, 0.09515, 0.09514996, 0.09514996, 10.57919166], [1517000460000, 0.09515, 0.09515, 0.09514996, 0.09514996, 10.32598015], [1517000520000, 0.09514997, 0.09544355, 0.09514996, 0.09540296, 21.58217263], [1517000580000, 0.09533717, 0.09540296, 0.09500001, 0.0950001, 5.33938766], [1517000640000, 0.0950001, 0.09544356, 0.095, 0.095, 8.69448816], [1517000700000, 0.09541758, 0.09544356, 0.09500001, 0.09500001, 9.30787352], [1517000760000, 0.0950001, 0.0950001, 0.09500001, 0.0950001, 0.47396822], [1517000820000, 0.0950001, 0.0950001, 0.09500001, 0.09500001, 8.01489918], [1517000880000, 0.09500001, 0.09534154, 0.09500001, 0.09500001, 37.99860864], [1517000940000, 0.09500002, 0.09534155, 0.09500002, 0.09524154, 8.55675173], [1517001000000, 0.09524154, 0.09541757, 0.09524154, 0.09528154, 5.12492845], [1517001060000, 0.09540757, 0.09541757, 0.09500002, 0.09539257, 12.81624483], [1517001120000, 0.09534155, 0.09541757, 0.09500004, 0.09509504, 4.24836855], [1517001180000, 0.09509504, 0.09533987, 0.09500002, 0.09500002, 10.99562834], [1517001240000, 0.09500002, 0.09524452, 0.09500002, 0.09500002, 5.97217604], [1517001300000, 0.09500002, 0.09524452, 0.09500002, 0.09524452, 7.73784781], [1517001360000, 0.09502398, 0.09524452, 0.09500003, 0.09524452, 8.54014987], [1517001420000, 0.0952, 0.0952, 0.09500002, 0.0952, 11.97401131], [1517001480000, 0.0952, 0.0952, 0.09500002, 0.09519998, 4.56847703], [1517001540000, 0.09519998, 0.09519999, 0.09500002, 0.09500002, 3.2208843], [1517001600000, 0.09502002, 0.09519999, 0.09502002, 0.09519999, 7.21082707], [1517001660000, 0.09515999, 0.0952, 0.09515999, 0.0952, 5.52482982], [1517001720000, 0.0952, 0.0952, 0.09519999, 0.0952, 23.78549393], [1517001780000, 0.0952, 0.09555987, 0.0952, 0.0952, 41.24536498], [1517001840000, 0.0952, 0.09549868, 0.09519999, 0.09525, 4.00574198], [1517001900000, 0.09525, 0.09555988, 0.09525, 0.09530001, 6.49415646], [1517001960000, 0.09555988, 0.096, 0.095255, 0.0956, 25.66127881], [1517002020000, 0.09557001, 0.0956, 0.09557001, 0.0956, 11.56123116], [1517002080000, 0.09557001, 0.09557001, 0.09525, 0.09557, 8.26635924], [1517002140000, 0.09555989, 0.09557, 0.09555988, 0.09555988, 2.95200172], [1517002200000, 0.09555988, 0.09557, 0.09525, 0.09555988, 3.82176207], [1517002260000, 0.09555988, 0.09557001, 0.09525, 0.09555987, 4.89510115], [1517002320000, 0.09555987, 0.09559995, 0.095515, 0.095515, 1.25177125], [1517002380000, 0.09554987, 0.09559995, 0.095515, 0.095515, 17.29432946], [1517002440000, 0.095515, 0.09559995, 0.095515, 0.09559995, 9.88905112], [1517002500000, 0.09559995, 0.09559995, 0.09502002, 0.095595, 22.49378262], [1517002560000, 0.09555988, 0.095595, 0.09555988, 0.095595, 7.18881762], [1517002620000, 0.095595, 0.09559995, 0.09555988, 0.09559995, 7.70109998], [1517002680000, 0.09559995, 0.09559995, 0.095595, 0.095595, 4.68406084], [1517002740000, 0.09559995, 0.0956, 0.095595, 0.0956, 11.88823161], [1517002800000, 0.0956, 0.09599998, 0.09559995, 0.09559995, 6.33825616], [1517002860000, 0.0958708, 0.0958708, 0.0955999, 0.0956, 10.15948028], [1517002920000, 0.0956, 0.09590123, 0.09555988, 0.09555988, 8.58959562], [1517002980000, 0.0956, 0.09594273, 0.09555988, 0.0956, 7.73098096], [1517003040000, 0.0956, 0.09591946, 0.09555988, 0.09585, 6.38635127], [1517003100000, 0.09587, 0.09587, 0.09585, 0.09585, 22.66054536], [1517003160000, 0.09585, 0.09587, 0.09555988, 0.09585, 8.25901965], [1517003220000, 0.09585, 0.09587, 0.09585, 0.09585, 15.49991431], [1517003280000, 0.09585, 0.095869, 0.09585, 0.09586, 18.71823471], [1517003340000, 0.095869, 0.09587, 0.09585, 0.09587, 34.04967162], [1517003400000, 0.09587, 0.09587, 0.09586, 0.09586, 60.44951391], [1517003460000, 0.09586, 0.09587, 0.0958599, 0.09586, 142.65420187], [1517003520000, 0.09586, 0.09587, 0.09555988, 0.09555989, 4.37239402], [1517003580000, 0.09579188, 0.09581094, 0.09555989, 0.09555989, 6.51015733], [1517003640000, 0.0955599, 0.09580844, 0.09555988, 0.09555988, 7.39901377], [1517003700000, 0.09553599, 0.09571225, 0.09534506, 0.095712, 7.69452986], [1517003760000, 0.09555988, 0.0958, 0.09555988, 0.09570225, 0.85129922], [1517003820000, 0.0955, 0.09570225, 0.09522506, 0.0955, 17.37062334], [1517003880000, 0.0955, 0.09553597, 0.09522506, 0.09522506, 4.1738259], [1517003940000, 0.0955, 0.0955, 0.09522506, 0.0955, 3.65240112], [1517004000000, 0.0955, 0.0955, 0.09522506, 0.09522506, 5.16810029], [1517004060000, 0.0955, 0.0955, 0.09522001, 0.09522506, 7.0023721], [1517004120000, 0.09522506, 0.09522506, 0.09503431, 0.09522506, 5.44449303], [1517004180000, 0.09522506, 0.0955, 0.09522506, 0.09549999, 5.73864114], [1517004240000, 0.09549999, 0.0955, 0.09549999, 0.0955, 2.86046079], [1517004300000, 0.0955, 0.09558399, 0.09549999, 0.09558399, 2.21300345], [1517004360000, 0.09559995, 0.09569699, 0.09559995, 0.095692, 0.85296689], [1517004420000, 0.095692, 0.09569699, 0.09555988, 0.09555988, 29.13163176], [1517004480000, 0.09555988, 0.09567508, 0.09513069, 0.09513069, 11.74915272], [1517004540000, 0.09567508, 0.09567508, 0.09549999, 0.09567508, 2.3365427], [1517004600000, 0.09567507, 0.09567507, 0.0952, 0.0952, 3.68493501], [1517004660000, 0.095675, 0.095675, 0.0952, 0.0956639, 4.27020197], [1517004720000, 0.09549999, 0.09567507, 0.0952, 0.095377, 8.71676444], [1517004780000, 0.09565508, 0.09565508, 0.095377, 0.09565506, 7.72922146], [1517004840000, 0.095377, 0.09564, 0.0952, 0.09563997, 9.92988269], [1517004900000, 0.09563997, 0.095815, 0.0952, 0.0952, 25.37866008], [1517004960000, 0.095377, 0.09577047, 0.095377, 0.09569, 4.05095169], [1517005020000, 0.09569, 0.09569, 0.0953771, 0.09566, 2.19538591], [1517005080000, 0.09566, 0.09566, 0.09566, 0.09566, 3.12441826], [1517005140000, 0.09566, 0.09568, 0.0953773, 0.0953773, 29.57102824], [1517005200000, 0.0953773, 0.0953773, 0.0953771, 0.0953773, 3.7699116], [1517005260000, 0.0953773, 0.095675, 0.0953771, 0.095675, 14.63331144], [1517005320000, 0.095675, 0.095675, 0.0953773, 0.09539, 7.64223116], [1517005380000, 0.095675, 0.09568, 0.095675, 0.09568, 6.03475493], [1517005440000, 0.09568, 0.09568, 0.0954, 0.09568, 3.46336976], [1517005500000, 0.0954, 0.09585998, 0.0954, 0.09584771, 81.46159238], [1517005560000, 0.0958, 0.09585998, 0.0958, 0.0958, 16.74225326], [1517005620000, 0.0958, 0.09585998, 0.09553775, 0.09553775, 51.24038388], [1517005680000, 0.09585989, 0.09585989, 0.09553775, 0.09584499, 2.62018217], [1517005740000, 0.0956, 0.09585998, 0.09553775, 0.09553775, 4.63425153], [1517005800000, 0.09582465, 0.09582465, 0.09553775, 0.09553775, 37.49378705], [1517005860000, 0.09582465, 0.09584499, 0.09553775, 0.09584499, 0.98163616], [1517005920000, 0.09553779, 0.09585998, 0.09553775, 0.09585998, 16.537805], [1517005980000, 0.09585998, 0.09587, 0.09558773, 0.09582465, 69.38158046], [1517006040000, 0.09585999, 0.095869, 0.09553775, 0.09553775, 29.67643182], [1517006100000, 0.095865, 0.095865, 0.09553775, 0.09582009, 5.50347802], [1517006160000, 0.095864, 0.095864, 0.09553775, 0.09553775, 2.64667073], [1517006220000, 0.09553775, 0.09577992, 0.09553775, 0.09553777, 1.19971104], [1517006280000, 0.09577991, 0.09577991, 0.09555, 0.09577989, 4.5017845], [1517006340000, 0.0957799, 0.0957799, 0.09555, 0.09555, 8.70254683], [1517006400000, 0.09573304, 0.09577988, 0.09555, 0.09577988, 5.82438827], [1517006460000, 0.09577988, 0.09577988, 0.0955505, 0.09577985, 3.23816821], [1517006520000, 0.09577984, 0.09577984, 0.09555, 0.09555, 26.81660175], [1517006580000, 0.09555, 0.09577, 0.09553777, 0.09553777, 20.52740847], [1517006640000, 0.09553777, 0.09577, 0.09553777, 0.09576999, 12.09835888], [1517006700000, 0.09576999, 0.09577, 0.09553777, 0.09576999, 12.9627329], [1517006760000, 0.09576999, 0.09577984, 0.09576999, 0.09576999, 8.83839771], [1517006820000, 0.09576999, 0.09576999, 0.09553777, 0.09553777, 9.70314572], [1517006880000, 0.09553777, 0.09576999, 0.09553777, 0.09553777, 1.70019108], [1517006940000, 0.09576999, 0.09577987, 0.09553777, 0.09576999, 6.30454216], [1517007000000, 0.09577986, 0.09577986, 0.09553778, 0.09576999, 5.42966344], [1517007060000, 0.09576999, 0.09576999, 0.09553778, 0.09576999, 7.20479514], [1517007120000, 0.09576999, 0.09576999, 0.09553778, 0.09553778, 3.11213603], [1517007180000, 0.09553778, 0.09553779, 0.09553778, 0.09553779, 1.56253694], [1517007240000, 0.09553779, 0.09576999, 0.09553778, 0.09576999, 6.55359277], [1517007300000, 0.09576999, 0.0957799, 0.09576999, 0.09577987, 7.48279922], [1517007360000, 0.09577987, 0.09577987, 0.09560747, 0.09561, 6.93057174], [1517007420000, 0.09560747, 0.09561, 0.09560747, 0.09561, 21.46060718], [1517007480000, 0.09561, 0.09561, 0.09560747, 0.095609, 6.88271963], [1517007540000, 0.09561, 0.09577987, 0.09560747, 0.09560747, 42.6159339], [1517007600000, 0.09561, 0.09561, 0.09553778, 0.09561, 6.15731413], [1517007660000, 0.09561, 0.09576799, 0.09553778, 0.09553778, 11.10687951], [1517007720000, 0.09570599, 0.09570599, 0.09553776, 0.09553776, 4.55106479], [1517007780000, 0.09560768, 0.09576497, 0.09553776, 0.09553776, 3.16013978], [1517007840000, 0.09569099, 0.09569099, 0.0953589, 0.0953589, 10.5262427], [1517007900000, 0.09553777, 0.095592, 0.0953589, 0.0953589, 5.60059016], [1517007960000, 0.09561597, 0.09561597, 0.0952, 0.09525522, 15.72170732], [1517008020000, 0.09525522, 0.09525522, 0.0952, 0.09525522, 11.28293944], [1517008080000, 0.09525522, 0.09525522, 0.0952, 0.09520001, 4.59260553], [1517008140000, 0.0952, 0.09525522, 0.09515, 0.09515, 38.02512736], [1517008200000, 0.09509482, 0.09515, 0.0950343, 0.09503432, 15.09506137], [1517008260000, 0.09515, 0.09515, 0.09505, 0.09515, 2.93932198], [1517008320000, 0.09515, 0.09515, 0.09505, 0.09515, 0.50832099], [1517008380000, 0.09515, 0.09515, 0.09503431, 0.09515, 2.19809382], [1517008440000, 0.09515, 0.09515, 0.09512, 0.09515, 2.14827073], [1517008500000, 0.09515, 0.09515, 0.09503431, 0.09503431, 4.89186983], [1517008560000, 0.09503431, 0.09519999, 0.09503431, 0.09515, 15.71265556], [1517008620000, 0.09516, 0.0952, 0.09515, 0.09515, 28.87513654], [1517008680000, 0.0952, 0.0952, 0.09515, 0.09515, 20.52172895], [1517008740000, 0.09515, 0.0952, 0.0950343, 0.095075, 18.55198867], [1517008800000, 0.095075, 0.09519998, 0.09500005, 0.09500005, 9.10756687], [1517008860000, 0.09518341, 0.09518341, 0.09500001, 0.09505485, 3.32916755], [1517008920000, 0.09505485, 0.09505485, 0.09500001, 0.09505484, 6.57343587], [1517008980000, 0.09505484, 0.09519998, 0.09500001, 0.09500001, 9.83577487], [1517009040000, 0.09500001, 0.09519998, 0.09500001, 0.09500002, 3.93594607], [1517009100000, 0.09500002, 0.09519897, 0.09500001, 0.0951, 36.02146279], [1517009160000, 0.09505905, 0.0951, 0.09488368, 0.09488368, 10.09069252], [1517009220000, 0.094987, 0.09514158, 0.09488368, 0.094987, 14.48797326], [1517009280000, 0.094987, 0.09519184, 0.09488368, 0.09519182, 7.720149], [1517009340000, 0.09519179, 0.09519179, 0.09487, 0.09487, 37.91059307], [1517009400000, 0.09488368, 0.09503547, 0.09488368, 0.09488368, 25.46299344], [1517009460000, 0.09503546, 0.09503546, 0.09457, 0.094764, 219.76591168], [1517009520000, 0.09463764, 0.094764, 0.0944, 0.09463761, 227.02712185], [1517009580000, 0.09463763, 0.09481982, 0.0942509, 0.09433538, 88.0773109], [1517009640000, 0.09461343, 0.09461343, 0.094363, 0.09461342, 6.9270143], [1517009700000, 0.09461341, 0.09461342, 0.09416, 0.09436301, 76.30445587], [1517009760000, 0.09420001, 0.09460334, 0.09416, 0.0943327, 26.9622622], [1517009820000, 0.0943327, 0.0943327, 0.0942301, 0.0942301, 15.3941842], [1517009880000, 0.0942301, 0.09449998, 0.0942301, 0.09449998, 21.34507802], [1517009940000, 0.09449998, 0.09449999, 0.09413, 0.094421, 45.52754394], [1517010000000, 0.094421, 0.09444458, 0.0942, 0.09425341, 6.45693313], [1517010060000, 0.09425341, 0.09425341, 0.09425341, 0.09425341, 4.95130295], [1517010120000, 0.09425341, 0.09449999, 0.09425341, 0.0944, 8.85296072], [1517010180000, 0.0945, 0.0945, 0.09425341, 0.0944, 27.29895839], [1517010240000, 0.0943764, 0.09487367, 0.0943764, 0.09454302, 14.37150445], [1517010300000, 0.09454302, 0.09468899, 0.0944, 0.09450009, 30.59274895], [1517010360000, 0.09450009, 0.09461615, 0.0944, 0.0945, 19.65231428], [1517010420000, 0.0944, 0.0945, 0.09425344, 0.0945, 14.88936279], [1517010480000, 0.09450007, 0.094606, 0.09430005, 0.0944, 23.95300045], [1517010540000, 0.0944, 0.09459427, 0.09425344, 0.0945, 37.0657636], [1517010600000, 0.0945, 0.09461615, 0.0945, 0.09459427, 8.86673881], [1517010660000, 0.09459426, 0.09459427, 0.0945, 0.0945, 2.29878762], [1517010720000, 0.09459427, 0.09459427, 0.0945, 0.09459426, 5.38143755], [1517010780000, 0.09459426, 0.09459427, 0.0945, 0.09459426, 3.06642921], [1517010840000, 0.09459426, 0.09459426, 0.0945, 0.09459426, 11.46134406], [1517010900000, 0.0945005, 0.09461615, 0.0945, 0.0946151, 25.703024], [1517010960000, 0.0946151, 0.09461615, 0.0946151, 0.09461615, 11.10577555], [1517011020000, 0.09461615, 0.094925, 0.09461511, 0.094915, 11.12212946], [1517011080000, 0.094885, 0.095, 0.09461511, 0.09461511, 18.45536912], [1517011140000, 0.09461511, 0.09499997, 0.09461511, 0.09462, 2.5778883], [1517011200000, 0.09497999, 0.09498997, 0.09461511, 0.09492445, 34.33886041], [1517011260000, 0.09461511, 0.09493445, 0.09461511, 0.09493442, 9.95913851], [1517011320000, 0.09470972, 0.0950343, 0.09461511, 0.09486, 35.89070758], [1517011380000, 0.09465, 0.09486, 0.09461514, 0.09486, 10.51505022], [1517011440000, 0.09461514, 0.09486, 0.09461514, 0.09485989, 4.2130199], [1517011500000, 0.09485989, 0.09501304, 0.09461515, 0.09461515, 25.72191914], [1517011560000, 0.0946179, 0.09487295, 0.09461515, 0.0946179, 3.19569094], [1517011620000, 0.09461515, 0.0946179, 0.0941, 0.0945005, 73.82392214], [1517011680000, 0.0945005, 0.0945005, 0.09411505, 0.0944905, 6.38360266], [1517011740000, 0.0944905, 0.09461514, 0.09415004, 0.0945005, 7.39476577], [1517011800000, 0.0945005, 0.09461514, 0.09448049, 0.09461508, 6.316649], [1517011860000, 0.09461508, 0.09487295, 0.09448049, 0.0945005, 15.49382167], [1517011920000, 0.0944905, 0.0945005, 0.09448049, 0.0945005, 4.23654762], [1517011980000, 0.09448049, 0.0950343, 0.09448049, 0.0950343, 10.35502452], [1517012040000, 0.0945005, 0.0945005, 0.0944, 0.0945005, 45.58649501], [1517012100000, 0.0945005, 0.09503546, 0.094425, 0.09502981, 17.90730041], [1517012160000, 0.09502, 0.09516892, 0.09442, 0.09516892, 16.73852673], [1517012220000, 0.09511761, 0.09511761, 0.094516, 0.09501989, 20.13547778], [1517012280000, 0.094711, 0.09501989, 0.094711, 0.09501989, 18.56770587], [1517012340000, 0.09501989, 0.09501989, 0.094711, 0.09501895, 14.02512008], [1517012400000, 0.09501895, 0.09501895, 0.0947125, 0.09501792, 3.52496764], [1517012460000, 0.09501792, 0.09502, 0.0947125, 0.09501888, 9.38899448], [1517012520000, 0.0947125, 0.09502, 0.0947125, 0.09473252, 2.21044076], [1517012580000, 0.09473253, 0.0951176, 0.09473253, 0.0951176, 11.00759043], [1517012640000, 0.0950343, 0.09527909, 0.09473251, 0.0951176, 36.30316782], [1517012700000, 0.0950443, 0.09517794, 0.09473251, 0.09512794, 8.35142801], [1517012760000, 0.09512794, 0.09512794, 0.094711, 0.0949999, 2.80808658], [1517012820000, 0.09499893, 0.09499893, 0.094711, 0.09473251, 3.33605024], [1517012880000, 0.09473251, 0.09498996, 0.09473251, 0.09473251, 13.73548477], [1517012940000, 0.0948, 0.0948, 0.09470852, 0.0948, 10.12027982], [1517013000000, 0.0948, 0.09498996, 0.09463777, 0.09498996, 2.74981354], [1517013060000, 0.09498996, 0.09498996, 0.09457429, 0.09498996, 6.61888554], [1517013120000, 0.09498996, 0.09498996, 0.09458243, 0.09498995, 10.00921394], [1517013180000, 0.09498995, 0.09498995, 0.09473251, 0.09473251, 7.70797432], [1517013240000, 0.09496995, 0.09498995, 0.09473251, 0.09473252, 6.92223891], [1517013300000, 0.09473252, 0.09473252, 0.09457429, 0.09471251, 12.86194085], [1517013360000, 0.09457429, 0.09496893, 0.09457429, 0.0945743, 6.89764213], [1517013420000, 0.0945743, 0.09498994, 0.0945743, 0.0945743, 3.86177803], [1517013480000, 0.0945743, 0.09498794, 0.0945743, 0.0945743, 9.29039991], [1517013540000, 0.0945743, 0.09490994, 0.0945743, 0.0948899, 13.26430722], [1517013600000, 0.0948899, 0.0948899, 0.0945743, 0.09486989, 26.41055666], [1517013660000, 0.09486989, 0.09486989, 0.09457432, 0.09486988, 2.69879424], [1517013720000, 0.09486988, 0.09486989, 0.09457433, 0.09457433, 1.3619362], [1517013780000, 0.09457433, 0.0948698, 0.09457433, 0.0948698, 2.4191623], [1517013840000, 0.0948698, 0.0948698, 0.0945743, 0.0945743, 6.55056659], [1517013900000, 0.0945743, 0.09486972, 0.0945743, 0.09486894, 7.6458664], [1517013960000, 0.09486894, 0.09486894, 0.0945743, 0.0948689, 6.29578831], [1517014020000, 0.094595, 0.09498995, 0.09457501, 0.09498993, 19.19775495], [1517014080000, 0.09498992, 0.09498992, 0.09457501, 0.09498992, 13.62665317], [1517014140000, 0.09498989, 0.09498989, 0.09457501, 0.09457501, 58.42674052], [1517014200000, 0.09495829, 0.09495829, 0.09457501, 0.09457501, 1.47209141], [1517014260000, 0.09457501, 0.09498993, 0.09457501, 0.0948, 10.51585266], [1517014320000, 0.0948, 0.09498995, 0.0948, 0.09498991, 5.20429222], [1517014380000, 0.0948, 0.09498995, 0.0948, 0.09498988, 8.45837657], [1517014440000, 0.09498986, 0.09498987, 0.0948, 0.0948, 12.62185093], [1517014500000, 0.09485285, 0.094985, 0.0948, 0.0948, 8.46200136], [1517014560000, 0.0948, 0.0949849, 0.0948, 0.0949848, 2.90704677], [1517014620000, 0.0949848, 0.09498995, 0.0946, 0.09495439, 3.06661027], [1517014680000, 0.0946, 0.09498, 0.0946, 0.09498, 3.27700466], [1517014740000, 0.0946, 0.09498, 0.0946, 0.09462999, 11.12892123], [1517014800000, 0.09497986, 0.09497992, 0.09497975, 0.09497975, 6.86805662], [1517014860000, 0.09463, 0.09497975, 0.09462999, 0.09462999, 21.32083596], [1517014920000, 0.09497975, 0.09498995, 0.09462, 0.09498995, 30.22683452], [1517014980000, 0.09498995, 0.09498996, 0.09498995, 0.09498995, 18.61728629], [1517015040000, 0.09498995, 0.09529997, 0.09498995, 0.09498996, 12.52150907], [1517015100000, 0.0952999, 0.0952999, 0.09498995, 0.09529983, 4.62945031], [1517015160000, 0.09529983, 0.09529983, 0.09498995, 0.09498995, 11.17231903], [1517015220000, 0.09498995, 0.09499, 0.09498995, 0.09499, 14.44286773], [1517015280000, 0.09499, 0.09499, 0.09498995, 0.09499, 19.54847996], [1517015340000, 0.09499, 0.09499, 0.09499, 0.09499, 4.33482752], [1517015400000, 0.09499, 0.09499, 0.09498995, 0.09498995, 7.23389154], [1517015460000, 0.09498995, 0.09527497, 0.09498995, 0.09527492, 9.70108201], [1517015520000, 0.09527493, 0.09529979, 0.09499002, 0.09527489, 15.7912859], [1517015580000, 0.09527489, 0.0953, 0.09527489, 0.0953, 56.68647353], [1517015640000, 0.0953, 0.09555988, 0.0953, 0.0953048, 83.73480201], [1517015700000, 0.09530001, 0.09548933, 0.09530001, 0.09530481, 22.44908626], [1517015760000, 0.09530481, 0.09543896, 0.09530001, 0.09530001, 20.65730625], [1517015820000, 0.09530501, 0.09548932, 0.0953, 0.0953, 92.52791649], [1517015880000, 0.0953, 0.09538893, 0.09529984, 0.09529984, 24.99366783], [1517015940000, 0.09529984, 0.09538892, 0.09529983, 0.09529983, 53.2798329], [1517016000000, 0.09537891, 0.09537892, 0.09506543, 0.0952, 39.15116661], [1517016060000, 0.0952, 0.0952, 0.09500001, 0.0952, 2.13608082], [1517016120000, 0.0952, 0.0955, 0.09500001, 0.09549975, 10.56756642], [1517016180000, 0.09549975, 0.09549976, 0.09515571, 0.09521, 6.67673558], [1517016240000, 0.09515571, 0.09549975, 0.09515571, 0.0951558, 5.41361151], [1517016300000, 0.09521, 0.09521, 0.095, 0.09521, 6.56042916], [1517016360000, 0.0951557, 0.0951557, 0.095, 0.0951557, 2.55259457], [1517016420000, 0.095, 0.0951557, 0.09499003, 0.09499003, 12.90763644], [1517016480000, 0.095, 0.095, 0.09499004, 0.09499004, 2.34918469], [1517016540000, 0.09499004, 0.095, 0.09499003, 0.09499003, 27.25443248], [1517016600000, 0.09499003, 0.095, 0.09499003, 0.095, 8.3917592], [1517016660000, 0.095, 0.09515568, 0.09499001, 0.09499001, 35.10866889], [1517016720000, 0.09499001, 0.0951557, 0.09498995, 0.09498997, 35.49436895], [1517016780000, 0.09515569, 0.0951557, 0.0949797, 0.0949797, 18.78755101], [1517016840000, 0.09498997, 0.09498997, 0.09485697, 0.0949797, 55.4385693], [1517016900000, 0.0949797, 0.0949797, 0.09462, 0.09464002, 37.97793063], [1517016960000, 0.09464002, 0.0949899, 0.0946, 0.0949899, 33.47465539], [1517017020000, 0.09464002, 0.09498991, 0.09464002, 0.09464005, 1.79070868], [1517017080000, 0.0949899, 0.09504975, 0.09464005, 0.09504975, 17.86092454], [1517017140000, 0.0949899, 0.09504975, 0.09464005, 0.095, 8.37131386], [1517017200000, 0.095, 0.09504973, 0.09465005, 0.0950497, 1.44287549], [1517017260000, 0.0950497, 0.09504973, 0.09482, 0.09504973, 33.65954533], [1517017320000, 0.0950497, 0.0950497, 0.09483, 0.09504963, 8.49247236], [1517017380000, 0.09483, 0.09503959, 0.09483, 0.09503957, 8.83124658], [1517017440000, 0.09503957, 0.09503957, 0.09484, 0.09484, 22.63418942], [1517017500000, 0.09503954, 0.09503954, 0.09483, 0.09483, 20.18283387], [1517017560000, 0.09483999, 0.09504961, 0.09483, 0.09484, 4.79911432], [1517017620000, 0.09504961, 0.09512736, 0.09483, 0.09512735, 64.12359249], [1517017680000, 0.09483, 0.09483999, 0.09482999, 0.09483, 7.58809363], [1517017740000, 0.09483, 0.09508715, 0.09483, 0.09499999, 47.08891821], [1517017800000, 0.09483015, 0.09499999, 0.09482, 0.09482, 66.88884058], [1517017860000, 0.09482001, 0.09482001, 0.0947, 0.0947, 27.48297952], [1517017920000, 0.0947, 0.09481795, 0.09465005, 0.09472, 22.35473918], [1517017980000, 0.09473, 0.09517988, 0.09465005, 0.09465005, 43.3949162], [1517018040000, 0.09472999, 0.09509262, 0.09464005, 0.09508094, 9.13646418], [1517018100000, 0.09507086, 0.09508069, 0.09505994, 0.09505994, 4.33861276], [1517018160000, 0.09473, 0.09504891, 0.09464005, 0.09483998, 18.39741333], [1517018220000, 0.09473, 0.0948389, 0.09473, 0.09483795, 26.98780341], [1517018280000, 0.09473, 0.09503987, 0.09472999, 0.09472999, 5.51225764], [1517018340000, 0.09473, 0.095, 0.09464006, 0.09464006, 14.65423363], [1517018400000, 0.09464006, 0.09499895, 0.09464005, 0.09499893, 6.657242], [1517018460000, 0.0949989, 0.09499891, 0.09464006, 0.09499888, 6.55245898], [1517018520000, 0.0949, 0.0949, 0.09464006, 0.09464006, 7.21173225], [1517018580000, 0.09485, 0.09505992, 0.09464006, 0.09505992, 12.24716551], [1517018640000, 0.09505994, 0.09517987, 0.09464501, 0.095, 3.76739648], [1517018700000, 0.095, 0.09511707, 0.09464503, 0.09511707, 5.03780738], [1517018760000, 0.09511707, 0.09535901, 0.09464507, 0.09480001, 27.96743675], [1517018820000, 0.09534901, 0.09537989, 0.09480002, 0.09536499, 17.22833316], [1517018880000, 0.09535998, 0.09549, 0.09480006, 0.09547999, 11.99132787], [1517018940000, 0.09539992, 0.09539992, 0.0949, 0.09495, 3.70916535], [1517019000000, 0.095, 0.09537497, 0.095, 0.09531495, 13.22356538], [1517019060000, 0.09483001, 0.095425, 0.09483001, 0.095425, 13.07427579], [1517019120000, 0.09526494, 0.09539499, 0.09487, 0.09487, 0.83290323], [1517019180000, 0.09522, 0.09533998, 0.09489, 0.0949, 0.57831713], [1517019240000, 0.0949, 0.09535, 0.0949, 0.09528999, 18.0291111], [1517019300000, 0.09528499, 0.09528499, 0.09487002, 0.0949, 20.03221884], [1517019360000, 0.0949, 0.09518498, 0.09469619, 0.09513999, 24.83763541], [1517019420000, 0.0949, 0.09506998, 0.0949, 0.0949, 22.85578103], [1517019480000, 0.0949, 0.09506998, 0.0949, 0.09490001, 25.58333161], [1517019540000, 0.09490001, 0.09501494, 0.09480002, 0.09501492, 14.71657182], [1517019600000, 0.09501492, 0.09501493, 0.09464005, 0.09464005, 26.7826979], [1517019660000, 0.09480002, 0.094946, 0.09457429, 0.09457429, 153.18894521], [1517019720000, 0.09457429, 0.09491599, 0.09457429, 0.09457431, 5.45620338], [1517019780000, 0.09457431, 0.09457431, 0.0945743, 0.0945743, 11.99472489], [1517019840000, 0.0945743, 0.09495746, 0.0945743, 0.09490118, 2.28484779], [1517019900000, 0.0945743, 0.09495746, 0.09457429, 0.0945743, 63.31443565], [1517019960000, 0.0945743, 0.0945743, 0.09457429, 0.0945743, 11.69865674], [1517020020000, 0.09494198, 0.09494198, 0.0945743, 0.09490192, 1.90574587], [1517020080000, 0.09471165, 0.09488176, 0.0945743, 0.0945743, 9.50215197], [1517020140000, 0.09466165, 0.09469165, 0.0945743, 0.094691, 27.97678356], [1517020200000, 0.094691, 0.094691, 0.09457431, 0.09457431, 0.82980108], [1517020260000, 0.094691, 0.0949536, 0.09457436, 0.09493999, 6.66026318], [1517020320000, 0.09493999, 0.09495, 0.09457436, 0.09457438, 9.43660616], [1517020380000, 0.09489999, 0.09495, 0.09457438, 0.09495, 10.27406966], [1517020440000, 0.0948, 0.09505997, 0.09457439, 0.0945744, 29.24065161], [1517020500000, 0.09503997, 0.09505997, 0.09480007, 0.09505997, 7.5663616], [1517020560000, 0.09505996, 0.09505997, 0.09480008, 0.09480009, 13.19895019], [1517020620000, 0.0948001, 0.09505498, 0.0948001, 0.09480021, 19.19662818], [1517020680000, 0.09480021, 0.09502499, 0.09480008, 0.09500999, 83.00399696], [1517020740000, 0.09500999, 0.09500999, 0.09457431, 0.0949368, 50.35607606], [1517020800000, 0.09457442, 0.09492283, 0.09457442, 0.09457443, 3.94027101], [1517020860000, 0.09457443, 0.09489298, 0.09457443, 0.09457445, 5.90095737], [1517020920000, 0.09487297, 0.09488799, 0.09457429, 0.09457439, 157.41993125], [1517020980000, 0.09457439, 0.0947442, 0.09457429, 0.0947442, 25.7901505], [1517021040000, 0.0947442, 0.09479746, 0.09457439, 0.09457441, 3.28070826], [1517021100000, 0.0947442, 0.09492261, 0.09457443, 0.09457444, 23.05976628], [1517021160000, 0.0949, 0.09492261, 0.0945743, 0.0949226, 23.04692546], [1517021220000, 0.09492261, 0.09501499, 0.09457432, 0.09492261, 17.00376903], [1517021280000, 0.09492261, 0.09501498, 0.0949226, 0.09492263, 25.87885213], [1517021340000, 0.09492263, 0.09501499, 0.09470001, 0.09499496, 9.03036001], [1517021400000, 0.09499496, 0.09501499, 0.09470004, 0.09479781, 16.09764568], [1517021460000, 0.09479781, 0.09501498, 0.09457444, 0.09479783, 16.01021931], [1517021520000, 0.09479783, 0.09494504, 0.09470004, 0.09470004, 3.3858041], [1517021580000, 0.09494503, 0.09494504, 0.09470004, 0.09470004, 3.57361568], [1517021640000, 0.09470004, 0.09492502, 0.09470004, 0.09488128, 17.59500626], [1517021700000, 0.09488128, 0.09500999, 0.09470004, 0.09500999, 21.49350354], [1517021760000, 0.09494503, 0.09500499, 0.09470004, 0.09477783, 1.14478847], [1517021820000, 0.09478783, 0.09494503, 0.09470005, 0.09494503, 10.94290974], [1517021880000, 0.09494502, 0.09494502, 0.09470006, 0.09470011, 11.47928471], [1517021940000, 0.09471, 0.09494499, 0.09471, 0.09471001, 9.49738115], [1517022000000, 0.0949, 0.09500496, 0.09472101, 0.09500496, 42.95320185], [1517022060000, 0.09500496, 0.09500496, 0.09472102, 0.0949, 12.64251727], [1517022120000, 0.0949, 0.09501495, 0.09472105, 0.0949, 31.65817644], [1517022180000, 0.09490001, 0.09500499, 0.09480001, 0.09480002, 8.12899435], [1517022240000, 0.09487628, 0.09505998, 0.09480001, 0.09480002, 19.5228982], [1517022300000, 0.09480002, 0.095055, 0.09472105, 0.09480001, 43.07374201], [1517022360000, 0.09472105, 0.09480002, 0.09470004, 0.09470004, 24.2678326], [1517022420000, 0.09498499, 0.09498499, 0.09457444, 0.09457444, 12.65071123], [1517022480000, 0.09470004, 0.09470004, 0.09457445, 0.09470004, 1.70554291], [1517022540000, 0.09457445, 0.09470004, 0.09457444, 0.09470004, 42.47911487], [1517022600000, 0.09470004, 0.09497, 0.09457432, 0.09497, 4.07950543], [1517022660000, 0.09490745, 0.09497, 0.09470004, 0.09470004, 3.64909596], [1517022720000, 0.094701, 0.09497, 0.09460005, 0.09497, 4.5102136], [1517022780000, 0.09497, 0.09505998, 0.09497, 0.09497001, 10.72658571], [1517022840000, 0.09505998, 0.09505998, 0.09497, 0.09497001, 10.40543332], [1517022900000, 0.09497002, 0.09505998, 0.09497, 0.09497001, 23.47226328], [1517022960000, 0.09497001, 0.095, 0.09497, 0.09497002, 63.79494949], [1517023020000, 0.095, 0.095, 0.09466318, 0.09466319, 29.1837675], [1517023080000, 0.09466319, 0.0949, 0.09466319, 0.09466319, 26.37490141], [1517023140000, 0.09466318, 0.09466318, 0.0945, 0.0945, 94.59872916], [1517023200000, 0.0945, 0.09466318, 0.0945, 0.09466318, 32.45230581], [1517023260000, 0.09466318, 0.095, 0.09451501, 0.09451501, 2.33606205], [1517023320000, 0.09464318, 0.09466318, 0.09451502, 0.09464318, 2.31472504], [1517023380000, 0.09464318, 0.09464318, 0.09463818, 0.09464318, 2.07174944], [1517023440000, 0.09464318, 0.09464318, 0.09462999, 0.09464318, 1.06571051], [1517023500000, 0.09464318, 0.09505998, 0.09453001, 0.09479837, 8.07076845], [1517023560000, 0.09505998, 0.09529499, 0.0947984, 0.09479841, 3.41358764], [1517023620000, 0.09525982, 0.09525982, 0.0947984, 0.09479841, 49.58502065], [1517023680000, 0.09524498, 0.09524498, 0.09479841, 0.09519999, 5.56780898], [1517023740000, 0.09489842, 0.09489842, 0.09489841, 0.09489841, 76.87360539], [1517023800000, 0.09489841, 0.09489842, 0.09479841, 0.09489842, 7.11272094], [1517023860000, 0.09489842, 0.09508989, 0.09489841, 0.095, 13.758181], [1517023920000, 0.09489851, 0.09508994, 0.0948985, 0.0948985, 13.69714153], [1517023980000, 0.09489851, 0.09508994, 0.0948985, 0.0950899, 9.57788092], [1517024040000, 0.09498, 0.09508994, 0.09479843, 0.09479843, 2.0552377], [1517024100000, 0.09508993, 0.09508994, 0.09479841, 0.09479841, 10.60158006], [1517024160000, 0.09494418, 0.09508994, 0.09479841, 0.09507997, 2.26002964], [1517024220000, 0.09507997, 0.0950899, 0.09479841, 0.09507997, 26.5180039], [1517024280000, 0.09508987, 0.0950899, 0.09479841, 0.09479842, 4.0854464], [1517024340000, 0.09479842, 0.09479843, 0.09479842, 0.09479843, 3.57680432], [1517024400000, 0.095089, 0.095089, 0.0947985, 0.095089, 1.2609601], [1517024460000, 0.0947985, 0.095089, 0.0947985, 0.095089, 7.90223387], [1517024520000, 0.095089, 0.095089, 0.09479857, 0.0950889, 4.85835597], [1517024580000, 0.095079, 0.0950889, 0.09479862, 0.09508889, 3.08177014], [1517024640000, 0.09508889, 0.0950889, 0.09479862, 0.09479864, 7.78383266], [1517024700000, 0.09508858, 0.09508859, 0.09508858, 0.09508859, 3.0751829], [1517024760000, 0.09508858, 0.0950889, 0.09500004, 0.09508859, 5.52766156], [1517024820000, 0.09508858, 0.09508858, 0.09500007, 0.09508849, 4.44667538], [1517024880000, 0.09508849, 0.09508858, 0.09500009, 0.09506849, 23.159679], [1517024940000, 0.09508849, 0.09508849, 0.094867, 0.09505848, 61.70574501], [1517025000000, 0.09505847, 0.09508858, 0.09500001, 0.09500002, 53.79722586], [1517025060000, 0.09506858, 0.09507858, 0.09500003, 0.09500003, 2.3057844], [1517025120000, 0.09500002, 0.09507855, 0.09500002, 0.09500002, 3.30161953], [1517025180000, 0.09500003, 0.09507858, 0.09500003, 0.09507858, 5.01111959], [1517025240000, 0.09507858, 0.09507858, 0.09500002, 0.09500004, 5.25484522], [1517025300000, 0.09500002, 0.09506858, 0.09500002, 0.09506858, 4.3997145], [1517025360000, 0.09507858, 0.09530019, 0.09505858, 0.09530019, 10.60108305], [1517025420000, 0.09530019, 0.09530019, 0.09500006, 0.09500006, 11.51819746], [1517025480000, 0.09507858, 0.09530019, 0.09500006, 0.09530019, 4.67948415], [1517025540000, 0.09500006, 0.09587, 0.09500006, 0.0953002, 356.52701037], [1517025600000, 0.0953002, 0.09547467, 0.09505613, 0.09547467, 25.54417214], [1517025660000, 0.09518401, 0.09560575, 0.09505613, 0.09518402, 34.9610591], [1517025720000, 0.09518402, 0.09557572, 0.0950343, 0.09555571, 37.65044784], [1517025780000, 0.09555571, 0.09555571, 0.09503436, 0.09503455, 2.46975864], [1517025840000, 0.09553514, 0.09554513, 0.09503562, 0.09503562, 4.94212571], [1517025900000, 0.09535, 0.09535, 0.09517817, 0.09517817, 11.17107247], [1517025960000, 0.09517818, 0.09533995, 0.09503562, 0.09503563, 87.4061169], [1517026020000, 0.0953399, 0.09533991, 0.09503564, 0.09503565, 35.33631521], [1517026080000, 0.09503565, 0.09503568, 0.09500006, 0.09503568, 67.33124606], [1517026140000, 0.09503568, 0.09503568, 0.094858, 0.095, 41.44240886], [1517026200000, 0.09489842, 0.095, 0.09489842, 0.095, 2.88714547], [1517026260000, 0.095, 0.095, 0.09489842, 0.09489843, 15.92284908], [1517026320000, 0.09489843, 0.095, 0.09489843, 0.09489843, 5.11213466], [1517026380000, 0.09489843, 0.09489843, 0.09489842, 0.09489842, 14.02188957], [1517026440000, 0.094858, 0.09489842, 0.09479861, 0.09489842, 1.49699633], [1517026500000, 0.09489842, 0.09489843, 0.09487842, 0.09489843, 18.25941222], [1517026560000, 0.09489843, 0.09489843, 0.09479861, 0.09489843, 0.77875977], [1517026620000, 0.09489842, 0.095, 0.09489842, 0.095, 21.43243396], [1517026680000, 0.09486696, 0.095, 0.09484121, 0.09484121, 1.43293975], [1517026740000, 0.095, 0.095, 0.09484123, 0.09484123, 12.63501294], [1517026800000, 0.09484123, 0.095, 0.09484123, 0.095, 7.45416198], [1517026860000, 0.09492061, 0.095, 0.09484126, 0.09492061, 2.29863727], [1517026920000, 0.095, 0.095, 0.09492061, 0.09492061, 3.28213405], [1517026980000, 0.09492061, 0.09492061, 0.09484126, 0.09492061, 23.86900945], [1517027040000, 0.09492061, 0.095, 0.09484126, 0.09484126, 5.682387], [1517027100000, 0.09484134, 0.095, 0.09484126, 0.095, 1.18020519], [1517027160000, 0.09499, 0.095, 0.09499, 0.095, 6.28550043], [1517027220000, 0.095, 0.095, 0.09484127, 0.09484127, 1.23991886], [1517027280000, 0.09492, 0.095, 0.09492, 0.09493999, 8.26011657], [1517027340000, 0.09493999, 0.095, 0.09493999, 0.095, 5.66686214], [1517027400000, 0.09499998, 0.095, 0.09493999, 0.09499998, 18.86904016], [1517027460000, 0.09499998, 0.09499998, 0.09484127, 0.09484127, 1.25890077], [1517027520000, 0.09499999, 0.095, 0.09484127, 0.09484128, 1.3551992], [1517027580000, 0.09484128, 0.09484128, 0.09484127, 0.09484128, 3.86240801], [1517027640000, 0.09484127, 0.095, 0.09484127, 0.095, 2.41843027], [1517027700000, 0.095, 0.095, 0.09484126, 0.09484127, 4.78004597], [1517027760000, 0.09484127, 0.09484127, 0.0947986, 0.09479861, 24.02214569], [1517027820000, 0.09484127, 0.09484127, 0.0947986, 0.0947986, 10.46980605], [1517027880000, 0.09484122, 0.09484122, 0.09479849, 0.09484122, 6.27081948], [1517027940000, 0.0948135, 0.09484122, 0.0948135, 0.0948135, 7.49580282], [1517028000000, 0.09484122, 0.09484127, 0.09484122, 0.09484127, 8.82933471], [1517028060000, 0.09484123, 0.09484127, 0.09484123, 0.09484127, 12.8114575], [1517028120000, 0.09484127, 0.09484127, 0.09484124, 0.09484127, 18.69629512], [1517028180000, 0.09484127, 0.095, 0.09484127, 0.095, 3.05125163], [1517028240000, 0.0948835, 0.0948835, 0.09484128, 0.0948835, 5.63668864], [1517028300000, 0.0948835, 0.095, 0.0948835, 0.095, 0.8789939], [1517028360000, 0.09494175, 0.095, 0.09494174, 0.095, 14.66637709], [1517028420000, 0.095, 0.0952185, 0.095, 0.095, 4.9027956], [1517028480000, 0.0952185, 0.09524835, 0.09494177, 0.09494178, 5.62679337], [1517028540000, 0.09494178, 0.095, 0.09494175, 0.09494176, 38.28521215], [1517028600000, 0.09499, 0.09499995, 0.09499, 0.09499995, 3.91222682], [1517028660000, 0.095, 0.095, 0.09499995, 0.095, 7.10365591], [1517028720000, 0.095, 0.09524738, 0.09484129, 0.09484129, 50.15089802], [1517028780000, 0.09524737, 0.09524737, 0.09484144, 0.09484145, 4.48308614], [1517028840000, 0.09484145, 0.09489, 0.09484145, 0.09489, 4.26304887], [1517028900000, 0.0949, 0.0949, 0.09484167, 0.0949, 4.32732104], [1517028960000, 0.0951, 0.09522342, 0.0949, 0.09490011, 6.39095392], [1517029020000, 0.09490012, 0.09522342, 0.09490012, 0.09522342, 4.53397022], [1517029080000, 0.0951, 0.09522342, 0.09490018, 0.09522342, 10.38252282], [1517029140000, 0.09522342, 0.09522342, 0.09510003, 0.0952234, 3.01175358], [1517029200000, 0.0952234, 0.0952234, 0.09490011, 0.09490012, 29.46519541], [1517029260000, 0.09490012, 0.09510003, 0.09490012, 0.09510003, 1.65075969], [1517029320000, 0.09509999, 0.09519508, 0.09490101, 0.09507622, 5.26050054], [1517029380000, 0.09507621, 0.09519508, 0.09507621, 0.09507622, 7.51837419], [1517029440000, 0.09507622, 0.09522342, 0.09507622, 0.0950763, 6.27729793], [1517029500000, 0.09522342, 0.09522342, 0.09507641, 0.09522342, 8.4596518], [1517029560000, 0.09507643, 0.09522342, 0.09507643, 0.09522342, 10.99280471], [1517029620000, 0.09522342, 0.09534997, 0.09522342, 0.09522343, 6.92541835], [1517029680000, 0.09522343, 0.09522343, 0.09522342, 0.09522343, 7.12042281], [1517029740000, 0.09522343, 0.09522343, 0.09522342, 0.09522342, 12.738258], [1517029800000, 0.09522343, 0.09522344, 0.09522343, 0.09522343, 15.56135478], [1517029860000, 0.09522343, 0.09522343, 0.09508701, 0.09508707, 9.84154904], [1517029920000, 0.09508708, 0.0953499, 0.09508708, 0.09508741, 1.3924021], [1517029980000, 0.0950875, 0.09508751, 0.0950875, 0.09508751, 0.61450801], [1517030040000, 0.0950883, 0.09534988, 0.0950883, 0.095089, 25.32658009], [1517030100000, 0.095089, 0.09534988, 0.095089, 0.0953494, 8.92417502], [1517030160000, 0.09508901, 0.09534926, 0.09508901, 0.09534902, 9.08340696], [1517030220000, 0.09534891, 0.09534902, 0.09534891, 0.09534902, 12.21115778], [1517030280000, 0.09534903, 0.09551889, 0.09509021, 0.09509022, 212.30191596], [1517030340000, 0.09521417, 0.09521418, 0.0950903, 0.09509035, 32.58287152], [1517030400000, 0.09509036, 0.09521418, 0.09509036, 0.09521418, 17.59190824], [1517030460000, 0.09521418, 0.09545399, 0.09509055, 0.09509068, 28.07717522], [1517030520000, 0.09509068, 0.09544383, 0.09509068, 0.09538982, 21.93542044], [1517030580000, 0.09538979, 0.09538979, 0.09509086, 0.09538962, 10.73927177], [1517030640000, 0.09536575, 0.09538973, 0.09509115, 0.09509115, 12.60867413], [1517030700000, 0.09530328, 0.09538942, 0.0950903, 0.09509117, 18.37779792], [1517030760000, 0.09509117, 0.09528815, 0.09509117, 0.09509118, 27.24035111], [1517030820000, 0.09509119, 0.09528757, 0.09509119, 0.09518952, 29.02131588], [1517030880000, 0.09528821, 0.09549599, 0.09518951, 0.09518952, 35.20900012], [1517030940000, 0.09518952, 0.09538792, 0.09509119, 0.09509119, 68.63788582], [1517031000000, 0.09510003, 0.09528788, 0.09507621, 0.0951, 551.86613933], [1517031060000, 0.09509997, 0.09546099, 0.09507622, 0.09507622, 21.406788], [1517031120000, 0.09507622, 0.09550068, 0.09507621, 0.09550062, 19.57831301], [1517031180000, 0.09548, 0.09550062, 0.09507622, 0.09507623, 22.94693673], [1517031240000, 0.09507623, 0.09541998, 0.09507623, 0.09507623, 12.2307818], [1517031300000, 0.09507623, 0.09550064, 0.09507623, 0.09517623, 12.01958974], [1517031360000, 0.09541999, 0.09550064, 0.09517623, 0.09517624, 2.17466854], [1517031420000, 0.09517624, 0.09541997, 0.09517624, 0.09517624, 11.78750765], [1517031480000, 0.09541987, 0.09541988, 0.09517625, 0.09517626, 13.60862082], [1517031540000, 0.09517625, 0.09541987, 0.09507621, 0.09507626, 71.37925186], [1517031600000, 0.09507626, 0.09541986, 0.09507622, 0.09507622, 2.97568036], [1517031660000, 0.09507622, 0.09540999, 0.09507622, 0.09540998, 29.21160932], [1517031720000, 0.09508001, 0.09540993, 0.09507621, 0.09507623, 253.45883914], [1517031780000, 0.09507623, 0.09540993, 0.09507621, 0.09507622, 373.88056063], [1517031840000, 0.09507622, 0.09507624, 0.09507621, 0.09507622, 120.71269894], [1517031900000, 0.09507622, 0.09507624, 0.09507621, 0.09507621, 122.17497813], [1517031960000, 0.09507621, 0.09507624, 0.09507621, 0.09507621, 175.97316017], [1517032020000, 0.09507622, 0.09507624, 0.09507621, 0.09507622, 253.85868685], [1517032080000, 0.09507622, 0.09520825, 0.09507621, 0.09507622, 85.49728677], [1517032140000, 0.09507622, 0.09525828, 0.09507621, 0.0950821, 36.35685368], [1517032200000, 0.09523827, 0.09524827, 0.09507622, 0.09522816, 1.51352084], [1517032260000, 0.09522814, 0.09522816, 0.09507622, 0.09522816, 16.08343067], [1517032320000, 0.09507624, 0.09529998, 0.09507622, 0.09507622, 17.83476016], [1517032380000, 0.09525808, 0.09525808, 0.09507621, 0.09524819, 38.00684795], [1517032440000, 0.09524819, 0.09524819, 0.09507621, 0.09507622, 39.9927266], [1517032500000, 0.09507622, 0.09507623, 0.09507621, 0.09507622, 71.16799211], [1517032560000, 0.09507622, 0.09507625, 0.09507621, 0.09507621, 86.90006501], [1517032620000, 0.09507622, 0.09507625, 0.09507621, 0.09507625, 13.01556608], [1517032680000, 0.09507625, 0.09507625, 0.09507622, 0.09507625, 5.84791665], [1517032740000, 0.09507625, 0.09507625, 0.09507621, 0.09507621, 366.89743782], [1517032800000, 0.09507622, 0.09507625, 0.09507621, 0.09507625, 41.53624723], [1517032860000, 0.09507622, 0.09507624, 0.09500001, 0.0950762, 73.12969972], [1517032920000, 0.09500001, 0.0950762, 0.0949, 0.09500001, 8.4372352], [1517032980000, 0.09500001, 0.09500001, 0.0947, 0.0947, 50.19256767], [1517033040000, 0.0947, 0.09494696, 0.09462779, 0.09467323, 6.49732073], [1517033100000, 0.09493197, 0.09493197, 0.09467323, 0.09493195, 2.61771639], [1517033160000, 0.09493195, 0.09494657, 0.09467602, 0.09494655, 7.42525933], [1517033220000, 0.09494656, 0.09494657, 0.09494655, 0.09494656, 52.72316632], [1517033280000, 0.09494656, 0.09494657, 0.09467602, 0.09467602, 17.45136253], [1517033340000, 0.09494591, 0.09494591, 0.09467602, 0.09469102, 105.58289385], [1517033400000, 0.0949457, 0.09494656, 0.0946752, 0.09494656, 8.95211787], [1517033460000, 0.094705, 0.09494656, 0.0946751, 0.09494655, 9.85772332], [1517033520000, 0.09494652, 0.09494652, 0.0946278, 0.0946278, 44.21381332], [1517033580000, 0.09462779, 0.09469011, 0.094575, 0.09469011, 5.81471327], [1517033640000, 0.094665, 0.09492769, 0.09464992, 0.09467512, 55.59583724], [1517033700000, 0.09467511, 0.09469012, 0.09450001, 0.09467493, 42.77820085], [1517033760000, 0.09467493, 0.09492299, 0.09467493, 0.09469002, 4.46863622], [1517033820000, 0.09467507, 0.09469002, 0.09467507, 0.09467507, 18.23071007], [1517033880000, 0.09467508, 0.09469002, 0.09467508, 0.09469002, 23.11468062], [1517033940000, 0.09469002, 0.09469002, 0.0946751, 0.0946751, 42.34487743], [1517034000000, 0.0946751, 0.0946899, 0.09450003, 0.09450003, 10.13468259], [1517034060000, 0.09450003, 0.09467688, 0.094415, 0.09450002, 51.76281794], [1517034120000, 0.09450002, 0.09453648, 0.094399, 0.09449985, 16.19706353], [1517034180000, 0.09449985, 0.09449985, 0.094415, 0.09449985, 10.18071934], [1517034240000, 0.09449985, 0.09449985, 0.09422221, 0.09449985, 13.55458123], [1517034300000, 0.09449985, 0.09449985, 0.09449984, 0.09449985, 23.78695766], [1517034360000, 0.09449985, 0.09449985, 0.09422223, 0.09449985, 8.47788911], [1517034420000, 0.09449985, 0.09449985, 0.09431481, 0.09449985, 13.22282205], [1517034480000, 0.09449985, 0.09467581, 0.09449985, 0.09464704, 23.36106104], [1517034540000, 0.09459998, 0.09494656, 0.09459998, 0.09494656, 7.46073739], [1517034600000, 0.09494656, 0.09494758, 0.09432, 0.09449976, 83.3052185], [1517034660000, 0.09449976, 0.09503422, 0.09449974, 0.09482774, 12.43603833], [1517034720000, 0.09480774, 0.09493758, 0.09449976, 0.0948258, 4.7933476], [1517034780000, 0.09480768, 0.09480768, 0.09449976, 0.09449976, 1.52226511], [1517034840000, 0.09449976, 0.09480663, 0.09449976, 0.09480655, 10.73227845], [1517034900000, 0.0947, 0.09480639, 0.09463499, 0.09463499, 20.53507792], [1517034960000, 0.09459977, 0.09483501, 0.09459977, 0.09483501, 27.99664168], [1517035020000, 0.09463601, 0.09491537, 0.094635, 0.09476998, 11.33509188], [1517035080000, 0.09476996, 0.09476996, 0.094635, 0.09476995, 22.01368934], [1517035140000, 0.09476994, 0.09476994, 0.0945, 0.09476789, 28.13143433], [1517035200000, 0.0945, 0.09476769, 0.09430824, 0.09449976, 35.18800311], [1517035260000, 0.09449976, 0.09449976, 0.09430825, 0.09430825, 16.9890576], [1517035320000, 0.09430826, 0.09449976, 0.09430824, 0.09449923, 9.79188407], [1517035380000, 0.09449912, 0.09449912, 0.09431824, 0.09449845, 2.56820622], [1517035440000, 0.09449902, 0.09449902, 0.09431824, 0.09449902, 12.35082013], [1517035500000, 0.09449901, 0.09449902, 0.09431824, 0.094499, 11.31037675], [1517035560000, 0.09433823, 0.09449901, 0.09431824, 0.09432824, 5.4533267], [1517035620000, 0.09432823, 0.094499, 0.094328, 0.09448999, 33.40826685], [1517035680000, 0.09448999, 0.09449899, 0.0941521, 0.09449899, 37.11495653], [1517035740000, 0.09449899, 0.094499, 0.09449899, 0.09449899, 8.97866185], [1517035800000, 0.09432801, 0.09449899, 0.09432801, 0.09449899, 1.98980633], [1517035860000, 0.094499, 0.094499, 0.09432801, 0.09432801, 1.51697389], [1517035920000, 0.09432801, 0.094499, 0.09432801, 0.09449, 18.88203602], [1517035980000, 0.09449899, 0.09449899, 0.09432802, 0.09449899, 4.98268863], [1517036040000, 0.09449899, 0.09449901, 0.09432805, 0.09449901, 23.7019148], [1517036100000, 0.09449901, 0.09488999, 0.09449901, 0.09484499, 3.32716519], [1517036160000, 0.09451476, 0.09478999, 0.09449977, 0.094785, 0.90371961], [1517036220000, 0.094785, 0.09491541, 0.09449901, 0.09491541, 56.17496757], [1517036280000, 0.09491541, 0.095, 0.09450002, 0.09478503, 32.36640578], [1517036340000, 0.09478503, 0.09499988, 0.09478501, 0.09478501, 13.11823404], [1517036400000, 0.09478501, 0.09478501, 0.09450503, 0.09478501, 5.30035484], [1517036460000, 0.09478501, 0.09478501, 0.09478002, 0.09478002, 14.25254035], [1517036520000, 0.09478002, 0.095, 0.09450507, 0.09450507, 48.15928037], [1517036580000, 0.09450507, 0.09499999, 0.09450507, 0.09499999, 25.04225751], [1517036640000, 0.09499999, 0.09499999, 0.09455251, 0.09456252, 22.16422052], [1517036700000, 0.09499999, 0.09499999, 0.09455253, 0.09499999, 1.91702331], [1517036760000, 0.09455257, 0.09499999, 0.09455257, 0.09457001, 2.1452134], [1517036820000, 0.09498976, 0.09499999, 0.09457001, 0.0946646, 9.45897783], [1517036880000, 0.09498976, 0.09499999, 0.0946646, 0.09473205, 17.45198742], [1517036940000, 0.09473205, 0.09499998, 0.09455252, 0.0947321, 20.43250879], [1517037000000, 0.0947321, 0.094995, 0.09473206, 0.0949948, 7.11732372], [1517037060000, 0.09499, 0.0949948, 0.09499, 0.0949948, 0.67142619], [1517037120000, 0.0949948, 0.0949948, 0.09473206, 0.09473206, 3.83420586], [1517037180000, 0.09499479, 0.09499479, 0.0947321, 0.09499479, 2.71701658], [1517037240000, 0.09489479, 0.09495361, 0.09473211, 0.09495361, 18.0272123], [1517037300000, 0.09495361, 0.0949948, 0.09460956, 0.09460966, 4.10021813], [1517037360000, 0.0949536, 0.0949536, 0.09455262, 0.09460971, 25.44123764], [1517037420000, 0.09489, 0.09492353, 0.09450001, 0.09462471, 88.67807673], [1517037480000, 0.09487498, 0.09493899, 0.09450001, 0.09483498, 27.57368082], [1517037540000, 0.09450001, 0.0948, 0.0944, 0.0944, 8.41199763], [1517037600000, 0.09432811, 0.09495358, 0.09432811, 0.09437528, 5.57785196], [1517037660000, 0.09439652, 0.094944, 0.09432807, 0.09468, 9.57547402], [1517037720000, 0.09468, 0.09493898, 0.09468, 0.09492898, 4.78463335], [1517037780000, 0.09492897, 0.094944, 0.09449092, 0.09492897, 4.54384536], [1517037840000, 0.09494898, 0.094949, 0.094329, 0.09461, 15.63081384], [1517037900000, 0.094949, 0.0949948, 0.094949, 0.09495359, 78.58218261], [1517037960000, 0.09495359, 0.09495361, 0.09495359, 0.09495361, 26.18716575], [1517038020000, 0.0949536, 0.09499479, 0.09461001, 0.09499479, 15.50347415], [1517038080000, 0.09499479, 0.09499479, 0.09499479, 0.09499479, 0.43119887], [1517038140000, 0.09461001, 0.09499478, 0.09461, 0.09461002, 3.56844714], [1517038200000, 0.09499478, 0.09499478, 0.09499478, 0.09499478, 0.1311641], [1517038260000, 0.09499471, 0.09499471, 0.09461, 0.09461001, 3.16438365], [1517038320000, 0.09480479, 0.09499478, 0.09450597, 0.09499462, 27.34159609], [1517038380000, 0.09499462, 0.09499478, 0.09488, 0.09499478, 10.44759891], [1517038440000, 0.09499478, 0.09499478, 0.09488, 0.09488001, 15.34349682], [1517038500000, 0.09488001, 0.09493733, 0.09450597, 0.09450597, 14.94400263], [1517038560000, 0.09450597, 0.09493733, 0.09449092, 0.09493733, 3.48494807], [1517038620000, 0.09495, 0.09495, 0.09488001, 0.09494998, 2.56307595], [1517038680000, 0.09494998, 0.09494998, 0.09488001, 0.09488001, 1.52750716], [1517038740000, 0.09494998, 0.09494998, 0.09488, 0.09488, 9.67979348], [1517038800000, 0.09494998, 0.09494998, 0.09488, 0.09493, 15.97751635], [1517038860000, 0.09494998, 0.09499478, 0.09493, 0.09499478, 15.0371532], [1517038920000, 0.09499478, 0.0949948, 0.09494999, 0.0949948, 15.43902272], [1517038980000, 0.0949948, 0.0949948, 0.09494999, 0.09495, 23.61494681], [1517039040000, 0.09495, 0.0949948, 0.09488, 0.09494999, 5.29953439], [1517039100000, 0.09494999, 0.09494999, 0.09488501, 0.09488501, 0.75067986], [1517039160000, 0.09494999, 0.09494999, 0.09488504, 0.09494999, 2.78838643], [1517039220000, 0.0949948, 0.09499999, 0.09495, 0.0949948, 5.83664653], [1517039280000, 0.09495361, 0.09499999, 0.09495, 0.09499999, 10.66119972], [1517039340000, 0.095, 0.0950343, 0.09499999, 0.09500001, 27.7523072], [1517039400000, 0.09500001, 0.0950343, 0.09500001, 0.09503417, 12.10604171], [1517039460000, 0.09503417, 0.09503417, 0.09500001, 0.09503404, 10.97246418], [1517039520000, 0.09500001, 0.09503417, 0.095, 0.09500001, 26.44238002], [1517039580000, 0.09500001, 0.09503417, 0.095, 0.095, 16.11625926], [1517039640000, 0.09500001, 0.09503, 0.09495, 0.09499999, 48.6059431], [1517039700000, 0.09499999, 0.09503417, 0.09494998, 0.09503417, 19.75201815], [1517039760000, 0.09503416, 0.09503416, 0.09494998, 0.09494998, 23.35347376], [1517039820000, 0.09494998, 0.09503416, 0.09488505, 0.09488505, 3.07923423], [1517039880000, 0.0949948, 0.09503416, 0.09488505, 0.09488505, 0.51050502], [1517039940000, 0.09488002, 0.09488002, 0.09485751, 0.09486505, 5.75310819], [1517040000000, 0.09472526, 0.09486505, 0.09472525, 0.09474025, 1.44307227], [1517040060000, 0.09474025, 0.09486505, 0.09474025, 0.09486505, 19.51929103], [1517040120000, 0.09492197, 0.09503416, 0.09472525, 0.09493697, 8.80452735], [1517040180000, 0.094922, 0.094922, 0.09492197, 0.09492197, 1.04381369], [1517040240000, 0.09493697, 0.09503416, 0.094928, 0.09503416, 6.36785311], [1517040300000, 0.09493697, 0.09503416, 0.0947, 0.0947, 7.42471716], [1517040360000, 0.0947, 0.09503417, 0.0947, 0.09503417, 6.80793504], [1517040420000, 0.09503417, 0.09503417, 0.0947001, 0.09503417, 1.53385144], [1517040480000, 0.09503417, 0.09503417, 0.09501, 0.09501, 2.32159565], [1517040540000, 0.09503417, 0.09503417, 0.09476951, 0.09503407, 4.08707538], [1517040600000, 0.09503416, 0.09503416, 0.09476951, 0.09503402, 3.99233351], [1517040660000, 0.0948, 0.09503402, 0.0948, 0.09503401, 2.04423026], [1517040720000, 0.09476951, 0.09503398, 0.09476951, 0.09486505, 7.01395382], [1517040780000, 0.09503398, 0.09503398, 0.09476, 0.09476, 6.01603052], [1517040840000, 0.09476, 0.09503397, 0.09476, 0.09479, 5.77161693], [1517040900000, 0.09479, 0.09503397, 0.09479, 0.094875, 15.54317364], [1517040960000, 0.09503394, 0.09503397, 0.094875, 0.094875, 91.55317775], [1517041020000, 0.094875, 0.09503397, 0.094875, 0.094875, 2.30753381], [1517041080000, 0.09503396, 0.09503397, 0.094875, 0.09503396, 20.66048598], [1517041140000, 0.09487501, 0.09503397, 0.094775, 0.09503393, 12.32439228], [1517041200000, 0.09503389, 0.09503395, 0.09475981, 0.09479, 28.43126105], [1517041260000, 0.09503378, 0.09503397, 0.09503378, 0.09503397, 24.35391246], [1517041320000, 0.09481, 0.0950343, 0.09481, 0.0950343, 17.94689586], [1517041380000, 0.0950343, 0.09504339, 0.09503401, 0.09504339, 5.56259506], [1517041440000, 0.09504339, 0.09509335, 0.0950343, 0.09509334, 2.22310038], [1517041500000, 0.0950933, 0.0950933, 0.09482, 0.0950933, 2.55001636], [1517041560000, 0.0950933, 0.0950933, 0.09482, 0.0950933, 6.07062695], [1517041620000, 0.09509329, 0.09509335, 0.09509329, 0.09509335, 72.78565052], [1517041680000, 0.09509335, 0.09509335, 0.0950933, 0.0950933, 1.22777528], [1517041740000, 0.0950933, 0.0952, 0.0950933, 0.0952, 4.96015333], [1517041800000, 0.0952, 0.09524816, 0.0949, 0.09524816, 7.98171844], [1517041860000, 0.09524816, 0.09524927, 0.0949949, 0.09524818, 47.74619344], [1517041920000, 0.09524927, 0.09524927, 0.0949949, 0.0952482, 3.60920846], [1517041980000, 0.094995, 0.09524927, 0.0949949, 0.09524927, 6.35235706], [1517042040000, 0.09525, 0.09529994, 0.09499491, 0.0952482, 3.41511528], [1517042100000, 0.09525, 0.09529994, 0.09500001, 0.09500001, 17.50949086], [1517042160000, 0.0952482, 0.09524999, 0.09500001, 0.09524999, 5.52703489], [1517042220000, 0.0951, 0.09524999, 0.09500001, 0.09524999, 15.25819999], [1517042280000, 0.09524998, 0.09524998, 0.09524998, 0.09524998, 1.61828447], [1517042340000, 0.09524998, 0.09524999, 0.0952482, 0.09524999, 11.72368161], [1517042400000, 0.09524999, 0.09524999, 0.0951, 0.0951, 7.86451226], [1517042460000, 0.09524997, 0.09524997, 0.09500013, 0.095245, 2.32621938], [1517042520000, 0.095245, 0.095245, 0.09501513, 0.09524, 1.3833302], [1517042580000, 0.09524, 0.09524999, 0.0951, 0.0951, 5.13929011], [1517042640000, 0.09524, 0.09524999, 0.0951, 0.0951, 3.64498843], [1517042700000, 0.09524999, 0.09524999, 0.09510001, 0.09510001, 1.99368067], [1517042760000, 0.09524997, 0.09524997, 0.09510001, 0.09510001, 26.30885527], [1517042820000, 0.09524996, 0.09524997, 0.09510001, 0.0952, 9.67805165], [1517042880000, 0.09510001, 0.0952, 0.09501526, 0.0952, 15.9449874], [1517042940000, 0.0952, 0.0952, 0.09503026, 0.095115, 8.43264354], [1517043000000, 0.09519, 0.0952, 0.09501527, 0.095115, 2.36939788], [1517043060000, 0.095115, 0.0951909, 0.09501527, 0.09501527, 2.03912382], [1517043120000, 0.0951909, 0.09524996, 0.09501527, 0.09524996, 11.69224322], [1517043180000, 0.09524995, 0.09524995, 0.09521499, 0.09524995, 2.34539341], [1517043240000, 0.09524995, 0.09524997, 0.0952001, 0.09524997, 12.40131431], [1517043300000, 0.0952001, 0.09524997, 0.09511527, 0.09524996, 8.1060432], [1517043360000, 0.09524996, 0.09524996, 0.09511527, 0.09524, 8.02288976], [1517043420000, 0.09523999, 0.09524, 0.095238, 0.09524, 10.59211021], [1517043480000, 0.09501532, 0.09524, 0.09501532, 0.09524, 4.66205824], [1517043540000, 0.09523, 0.09524, 0.09523, 0.09523996, 15.99087506], [1517043600000, 0.09523996, 0.09523996, 0.09512011, 0.09523994, 4.08891392], [1517043660000, 0.0952, 0.0952, 0.09508716, 0.09508716, 1.14655309], [1517043720000, 0.09502294, 0.09519998, 0.0950201, 0.09519998, 12.31838077], [1517043780000, 0.09519998, 0.09519998, 0.09508717, 0.09519998, 2.89457101], [1517043840000, 0.0950876, 0.09523996, 0.0950876, 0.09519998, 10.93529781], [1517043900000, 0.09523996, 0.09524, 0.09519998, 0.09523995, 4.78466397], [1517043960000, 0.09520018, 0.09524, 0.09520008, 0.09524, 8.604456], [1517044020000, 0.09524, 0.09524997, 0.09524, 0.09524, 46.67757335], [1517044080000, 0.09524, 0.09524997, 0.09524, 0.09524997, 1.89370994], [1517044140000, 0.09524, 0.09529663, 0.09524, 0.09529663, 15.159356], [1517044200000, 0.09529662, 0.09529662, 0.09525, 0.09529662, 4.58580176], [1517044260000, 0.09529662, 0.09529663, 0.09525, 0.09529662, 7.39950959], [1517044320000, 0.0952966, 0.09532, 0.0952966, 0.09532, 12.2052166], [1517044380000, 0.09532, 0.09532, 0.09529662, 0.09532, 0.25076485], [1517044440000, 0.09532, 0.09535326, 0.09525, 0.09535326, 6.71659557], [1517044500000, 0.09535904, 0.09544679, 0.09526, 0.09526, 6.26838371], [1517044560000, 0.09526, 0.0954, 0.09526, 0.0954, 1.64084253], [1517044620000, 0.09539999, 0.0954, 0.09526, 0.0954, 53.43188212], [1517044680000, 0.0954, 0.0954, 0.09526, 0.0954, 10.08469569], [1517044740000, 0.09526, 0.0954, 0.09526, 0.0954, 1.59263725], [1517044800000, 0.0954, 0.09549876, 0.0954, 0.09549876, 18.69091583], [1517044860000, 0.09549875, 0.0955, 0.0954, 0.0954, 15.14281897], [1517044920000, 0.0954, 0.09550069, 0.0954, 0.09550069, 26.6461488], [1517044980000, 0.095525, 0.09555888, 0.0954, 0.09549994, 8.88510069], [1517045040000, 0.0954, 0.09549992, 0.0954, 0.09541, 16.36413565], [1517045100000, 0.09549991, 0.09555988, 0.095411, 0.09555988, 5.41466603], [1517045160000, 0.09555988, 0.09557142, 0.09555988, 0.09556665, 6.19142798], [1517045220000, 0.09559481, 0.09560747, 0.0954999, 0.09560747, 43.17393333], [1517045280000, 0.09560747, 0.0957, 0.095567, 0.095567, 4.86868303], [1517045340000, 0.09569992, 0.09582343, 0.09556701, 0.0957, 11.11735578], [1517045400000, 0.0957, 0.09583, 0.09559844, 0.09581991, 11.53412647], [1517045460000, 0.09559845, 0.09585, 0.09559844, 0.09584946, 31.52210042], [1517045520000, 0.09584946, 0.09584983, 0.09559844, 0.0955985, 1.60492749], [1517045580000, 0.0955985, 0.0955985, 0.09559844, 0.09559845, 6.90268433], [1517045640000, 0.09559845, 0.09594254, 0.09559844, 0.09594254, 10.85279583], [1517045700000, 0.09594254, 0.09599457, 0.09559845, 0.09559845, 8.24486655], [1517045760000, 0.09591423, 0.096, 0.09559845, 0.09559845, 14.71820057], [1517045820000, 0.0955985, 0.0955985, 0.0955, 0.0955, 8.90825138], [1517045880000, 0.09559845, 0.0955985, 0.0955, 0.0955, 14.10198252], [1517045940000, 0.0955, 0.0955, 0.09535101, 0.0955, 22.19291161], [1517046000000, 0.0955, 0.0955985, 0.09543645, 0.09543645, 22.28561288], [1517046060000, 0.0955984, 0.0955985, 0.09543645, 0.09543645, 7.91700888], [1517046120000, 0.09543645, 0.0955985, 0.09543645, 0.09545145, 6.32174208], [1517046180000, 0.09558997, 0.0955985, 0.09544864, 0.0955985, 5.18249314], [1517046240000, 0.0955985, 0.096, 0.09546119, 0.0954612, 4.96163618], [1517046300000, 0.09599987, 0.09599999, 0.09548, 0.09548, 23.73213748], [1517046360000, 0.09559756, 0.09599989, 0.09548, 0.09548, 2.78469578], [1517046420000, 0.09589993, 0.09589993, 0.09546129, 0.09548, 8.18836103], [1517046480000, 0.09548, 0.09548, 0.09545145, 0.09547999, 6.8434124], [1517046540000, 0.09547999, 0.09548, 0.09545145, 0.09545145, 7.59315698], [1517046600000, 0.09548, 0.09548, 0.09548, 0.09548, 1.8581273], [1517046660000, 0.09553017, 0.09570286, 0.09553017, 0.09553017, 2.7785688], [1517046720000, 0.09570286, 0.09572014, 0.09553, 0.09553, 1.56972782], [1517046780000, 0.09553017, 0.09565226, 0.09548, 0.09548, 35.31424392], [1517046840000, 0.09547999, 0.09547999, 0.0954368, 0.09543681, 9.61382018], [1517046900000, 0.09543681, 0.09543681, 0.095415, 0.0954368, 4.11643888], [1517046960000, 0.0954368, 0.0954368, 0.095415, 0.095415, 3.99793287], [1517047020000, 0.0954368, 0.0954368, 0.095415, 0.0954368, 11.99345644], [1517047080000, 0.095415, 0.09543681, 0.095415, 0.0954368, 13.95640946], [1517047140000, 0.0954368, 0.09543681, 0.09541502, 0.09543681, 1.42985796], [1517047200000, 0.09543681, 0.09548, 0.09541502, 0.09543681, 17.47567116], [1517047260000, 0.09548, 0.09548, 0.095415, 0.09543681, 8.79337277], [1517047320000, 0.09543671, 0.09543681, 0.095415, 0.09543678, 29.59698039], [1517047380000, 0.09543668, 0.09543668, 0.09525, 0.09525, 8.30380376], [1517047440000, 0.09525, 0.09533, 0.09525, 0.09529997, 23.7547888], [1517047500000, 0.0953, 0.09532994, 0.09525, 0.09529996, 5.08849097], [1517047560000, 0.09532994, 0.09532994, 0.09532, 0.09532994, 4.13330727], [1517047620000, 0.09529996, 0.09532994, 0.09529996, 0.09532994, 1.87582711], [1517047680000, 0.09532994, 0.09532994, 0.09529996, 0.09532994, 4.94241151], [1517047740000, 0.09532994, 0.09532994, 0.09529996, 0.09529996, 7.25291727], [1517047800000, 0.09532994, 0.09532994, 0.09532994, 0.09532994, 9.42345177], [1517047860000, 0.09532994, 0.09543679, 0.09532994, 0.09543679, 39.6499591], [1517047920000, 0.09543679, 0.09543681, 0.09529996, 0.09543681, 38.69184117], [1517047980000, 0.09543681, 0.09544068, 0.09529996, 0.09544068, 11.61268996], [1517048040000, 0.09548, 0.09548, 0.09529996, 0.09544068, 5.54469613], [1517048100000, 0.0953, 0.09544068, 0.09525, 0.09544068, 3.89089636], [1517048160000, 0.09544068, 0.09548, 0.0954405, 0.09548, 1.52166511], [1517048220000, 0.09548, 0.09548, 0.09531501, 0.09531501, 13.57802627], [1517048280000, 0.09539532, 0.09548, 0.09531501, 0.09548, 9.92872456], [1517048340000, 0.09539532, 0.09548, 0.09539532, 0.09544066, 5.08995342], [1517048400000, 0.09539532, 0.095615, 0.09539532, 0.09548, 5.6682601], [1517048460000, 0.09548, 0.095615, 0.09531501, 0.095615, 5.05622974], [1517048520000, 0.095615, 0.0957, 0.09532, 0.0957, 21.30968073], [1517048580000, 0.0957957, 0.0959, 0.095391, 0.0957957, 24.61361561], [1517048640000, 0.0957957, 0.0958999, 0.0957, 0.095895, 3.21302084], [1517048700000, 0.09589979, 0.0959, 0.09558062, 0.095894, 4.74510618], [1517048760000, 0.09558062, 0.09589424, 0.09558062, 0.09558062, 12.16782313], [1517048820000, 0.09589349, 0.09589349, 0.09558062, 0.0958, 6.547461], [1517048880000, 0.09558062, 0.09589346, 0.09558062, 0.09589346, 61.70265322], [1517048940000, 0.09589346, 0.09589431, 0.095815, 0.095815, 42.62311321], [1517049000000, 0.09589431, 0.0959, 0.095815, 0.095815, 18.95352758], [1517049060000, 0.0959, 0.0959, 0.095815, 0.095855, 24.38704304], [1517049120000, 0.09589431, 0.096, 0.095855, 0.096, 20.44626031], [1517049180000, 0.09589421, 0.0959901, 0.095855, 0.0958942, 18.98603422], [1517049240000, 0.0958942, 0.096, 0.095815, 0.095815, 26.69967986], [1517049300000, 0.095815, 0.095855, 0.095815, 0.09581502, 21.39415944], [1517049360000, 0.095815, 0.09581502, 0.095815, 0.095815, 21.53250739], [1517049420000, 0.09581502, 0.09581502, 0.095815, 0.095815, 44.70926413], [1517049480000, 0.095815, 0.09581502, 0.095815, 0.095815, 34.16142557], [1517049540000, 0.09581502, 0.09581502, 0.095815, 0.09581501, 9.45688973], [1517049600000, 0.09581501, 0.09581502, 0.095815, 0.09581501, 19.14999906], [1517049660000, 0.09581502, 0.09581502, 0.09581501, 0.09581501, 0.96501959], [1517049720000, 0.09581501, 0.096, 0.095815, 0.095815, 11.19822492], [1517049780000, 0.095815, 0.096, 0.095815, 0.095815, 11.30544034], [1517049840000, 0.0959998, 0.0959999, 0.095815, 0.0959998, 18.12561508], [1517049900000, 0.0959998, 0.0959999, 0.0959998, 0.0959998, 2.59014553], [1517049960000, 0.0959997, 0.0959999, 0.095815, 0.0959999, 6.504421], [1517050020000, 0.0959999, 0.0959999, 0.095815, 0.095815, 6.16501277], [1517050080000, 0.09599963, 0.0959999, 0.095815, 0.09599963, 76.62584889], [1517050140000, 0.09599963, 0.09599989, 0.095815, 0.09581501, 18.8447511], [1517050200000, 0.09594041, 0.0959999, 0.095825, 0.095825, 13.6630974], [1517050260000, 0.0959404, 0.09594976, 0.095825, 0.09594976, 2.77238732], [1517050320000, 0.09594976, 0.0959999, 0.0959404, 0.0959404, 9.43564145], [1517050380000, 0.0959404, 0.0959999, 0.0959404, 0.095999, 3.49881971], [1517050440000, 0.0959404, 0.09599898, 0.0959404, 0.09599869, 2.55518478], [1517050500000, 0.09599869, 0.0959998, 0.095815, 0.0959998, 40.58781169], [1517050560000, 0.09599869, 0.0959999, 0.09599869, 0.09599869, 18.66205208], [1517050620000, 0.0959999, 0.09599991, 0.09599869, 0.09599991, 1.35454206], [1517050680000, 0.09599991, 0.096, 0.09599869, 0.096, 2.39908541], [1517050740000, 0.096, 0.09600001, 0.09599869, 0.09600001, 16.65842196], [1517050800000, 0.096, 0.09600008, 0.096, 0.09600001, 4.4198859], [1517050860000, 0.09600001, 0.0960268, 0.09599869, 0.09599869, 8.1206057], [1517050920000, 0.0960268, 0.09602689, 0.09581501, 0.09602674, 23.28648602], [1517050980000, 0.09602674, 0.096027, 0.09581501, 0.0960268, 7.12746849], [1517051040000, 0.09581502, 0.0960269, 0.09581502, 0.0960269, 8.30459438], [1517051100000, 0.096, 0.0960269, 0.09591082, 0.096, 6.79344863], [1517051160000, 0.096, 0.0960269, 0.096, 0.09602657, 34.10134019], [1517051220000, 0.096, 0.09602689, 0.095815, 0.095815, 95.12121563], [1517051280000, 0.095815, 0.09599998, 0.095815, 0.09581501, 12.03785528], [1517051340000, 0.09581501, 0.09599978, 0.095815, 0.095815, 4.65457987], [1517051400000, 0.09599932, 0.09599987, 0.095815, 0.09585, 105.47649073], [1517051460000, 0.095815, 0.096, 0.0958, 0.0958, 50.65577188], [1517051520000, 0.0958, 0.096022, 0.0958, 0.0958, 40.60490309], [1517051580000, 0.0958, 0.0959, 0.09560421, 0.09579999, 7.28311693], [1517051640000, 0.09560421, 0.09579999, 0.09560421, 0.09560421, 24.21289349], [1517051700000, 0.09560423, 0.0957999, 0.09560421, 0.09579977, 47.76508993], [1517051760000, 0.09560433, 0.09589282, 0.09560433, 0.09589282, 12.8320206], [1517051820000, 0.09589282, 0.09589282, 0.09560421, 0.09581199, 38.25224887], [1517051880000, 0.09581199, 0.09593048, 0.09560421, 0.09593048, 13.91063477], [1517051940000, 0.09593048, 0.096022, 0.09573048, 0.096022, 16.61519894], [1517052000000, 0.09581199, 0.0960267, 0.09573048, 0.09581199, 18.02483], [1517052060000, 0.09593, 0.096027, 0.09581203, 0.096027, 23.12448598], [1517052120000, 0.0960267, 0.0961, 0.09581203, 0.09603, 19.93782662], [1517052180000, 0.09603, 0.0961, 0.09603, 0.0961, 3.69199474], [1517052240000, 0.09610642, 0.09610643, 0.09610642, 0.09610643, 3.67062118], [1517052300000, 0.09610643, 0.09612, 0.09610642, 0.09611976, 11.30455101], [1517052360000, 0.09610642, 0.09611974, 0.09581203, 0.09611, 24.78557087], [1517052420000, 0.0959, 0.09612, 0.0959, 0.09611974, 43.32914319], [1517052480000, 0.09611974, 0.09613325, 0.09590001, 0.09590001, 12.54841432], [1517052540000, 0.0959, 0.09613325, 0.0959, 0.09590001, 39.01932026], [1517052600000, 0.09613424, 0.09621, 0.096, 0.096, 11.57436117], [1517052660000, 0.09621, 0.096211, 0.09595587, 0.09595587, 9.39634209], [1517052720000, 0.09613325, 0.09629518, 0.095905, 0.09629518, 34.73565668], [1517052780000, 0.09629518, 0.09633356, 0.096, 0.09601, 8.85386671], [1517052840000, 0.09601001, 0.09633356, 0.09601001, 0.09633356, 9.36638724], [1517052900000, 0.096317, 0.09633356, 0.09601001, 0.09633348, 2.95151125], [1517052960000, 0.09633341, 0.09633356, 0.096, 0.09633347, 4.35559914], [1517053020000, 0.09633347, 0.09633347, 0.096, 0.096, 7.14951951], [1517053080000, 0.096, 0.096333, 0.096, 0.096333, 6.9762061], [1517053140000, 0.09600001, 0.09633294, 0.09600001, 0.09633293, 11.83604242], [1517053200000, 0.09633293, 0.09633293, 0.09604235, 0.0961, 7.95373152], [1517053260000, 0.0961, 0.096333, 0.0961, 0.09610001, 4.79372065], [1517053320000, 0.0962, 0.0964, 0.09610011, 0.0962, 113.01778285], [1517053380000, 0.0964, 0.09649985, 0.0961097, 0.09642, 12.80026483], [1517053440000, 0.09649981, 0.0965, 0.09610971, 0.09615778, 19.74842446], [1517053500000, 0.09642, 0.09649, 0.09612421, 0.09649, 1.2206285], [1517053560000, 0.09612422, 0.09649, 0.09612421, 0.09612445, 4.45986249], [1517053620000, 0.09648998, 0.09648999, 0.09648997, 0.09648999, 11.82580637], [1517053680000, 0.09648998, 0.09648999, 0.09619839, 0.0962093, 3.92499985], [1517053740000, 0.09648998, 0.09648998, 0.0962093, 0.09648998, 1.59158694], [1517053800000, 0.09620942, 0.09648998, 0.09620942, 0.0964899, 5.79450828], [1517053860000, 0.0964899, 0.09648999, 0.09638998, 0.09648999, 4.00275381], [1517053920000, 0.09648999, 0.09648999, 0.09648998, 0.09648999, 1.34419979], [1517053980000, 0.09648999, 0.09648999, 0.09640001, 0.09648996, 1.89505988], [1517054040000, 0.09648996, 0.09648999, 0.09642996, 0.09648999, 6.12086852], [1517054100000, 0.09648999, 0.09648999, 0.09642996, 0.09642998, 8.29827343], [1517054160000, 0.09642996, 0.09648998, 0.09642996, 0.09642997, 4.88337041], [1517054220000, 0.09642998, 0.09642998, 0.09642997, 0.09642997, 12.00144802], [1517054280000, 0.09642998, 0.09642998, 0.09642996, 0.09642997, 7.89974599], [1517054340000, 0.09642997, 0.09642998, 0.09642997, 0.09642997, 1.45104871], [1517054400000, 0.09642997, 0.09642998, 0.09642978, 0.09642998, 26.55321642], [1517054460000, 0.09642998, 0.0965169, 0.09640004, 0.09642978, 58.19157631], [1517054520000, 0.0965, 0.09659845, 0.09640002, 0.0965343, 41.91510215], [1517054580000, 0.09659845, 0.09659845, 0.09653428, 0.0965343, 2.83501588], [1517054640000, 0.09656, 0.09665254, 0.09656, 0.09663, 11.153401], [1517054700000, 0.09661319, 0.096699, 0.0965343, 0.0965343, 13.4888696], [1517054760000, 0.0965343, 0.096699, 0.0965343, 0.096699, 2.80302349], [1517054820000, 0.096699, 0.09675, 0.0965343, 0.0965343, 17.66883726], [1517054880000, 0.0965343, 0.09682754, 0.0965343, 0.09682754, 17.50692154], [1517054940000, 0.09682754, 0.09682754, 0.09669999, 0.0967, 2.81528162], [1517055000000, 0.0967, 0.0967, 0.09653433, 0.0967, 8.15863809], [1517055060000, 0.0967, 0.0967, 0.09655494, 0.09655494, 1.4891326], [1517055120000, 0.09669999, 0.0968, 0.09655494, 0.0968, 10.08473371], [1517055180000, 0.09670001, 0.0968, 0.09670001, 0.09679999, 1.4777087], [1517055240000, 0.09679997, 0.09679997, 0.09670001, 0.09670317, 0.63232813], [1517055300000, 0.09679996, 0.09679997, 0.09665, 0.09665, 7.01536957], [1517055360000, 0.09679995, 0.09679995, 0.09656, 0.09670001, 13.62468507], [1517055420000, 0.09665, 0.09679994, 0.09665, 0.09679993, 12.16451208], [1517055480000, 0.09670002, 0.09679997, 0.09670001, 0.09679995, 9.17385691], [1517055540000, 0.09679997, 0.0968, 0.09670009, 0.09679999, 29.29805966], [1517055600000, 0.09679999, 0.09682754, 0.09679999, 0.09682754, 25.0899805], [1517055660000, 0.09679999, 0.09682754, 0.09679999, 0.0968, 8.05958922], [1517055720000, 0.09682752, 0.09682754, 0.0968, 0.0968, 6.4507367], [1517055780000, 0.09682752, 0.09682754, 0.0968, 0.09682754, 27.49865513], [1517055840000, 0.09682753, 0.096885, 0.09680003, 0.09682754, 26.85528062], [1517055900000, 0.096885, 0.096885, 0.096801, 0.09682754, 11.85076943], [1517055960000, 0.09682754, 0.09688497, 0.09682754, 0.09683, 24.22699216], [1517056020000, 0.09683, 0.09683, 0.09682754, 0.09682754, 7.25323515], [1517056080000, 0.09682754, 0.096883, 0.09682754, 0.096883, 14.45017029], [1517056140000, 0.09688, 0.096883, 0.09648315, 0.09648315, 43.05404985], [1517056200000, 0.09646141, 0.09682753, 0.0962093, 0.09649815, 14.86064182], [1517056260000, 0.09649815, 0.09649815, 0.09620934, 0.09649814, 10.09763468], [1517056320000, 0.09649814, 0.0968275, 0.09620938, 0.09669044, 59.93148577], [1517056380000, 0.09682749, 0.096883, 0.09622444, 0.09622456, 41.09016609], [1517056440000, 0.09688299, 0.09688299, 0.09668823, 0.09685997, 20.92260237], [1517056500000, 0.096688, 0.096688, 0.09634175, 0.09667993, 4.11787828], [1517056560000, 0.09634175, 0.09667992, 0.09634175, 0.09665999, 4.85869816], [1517056620000, 0.09664, 0.09666, 0.09635676, 0.09665991, 55.23478709], [1517056680000, 0.09665991, 0.09666, 0.09635677, 0.09635677, 8.38243446], [1517056740000, 0.09635677, 0.0966599, 0.09635677, 0.09635689, 2.36321518], [1517056800000, 0.09665973, 0.09665973, 0.0963569, 0.09665969, 9.26107621], [1517056860000, 0.0966595, 0.0966595, 0.09640001, 0.09665945, 5.56629068], [1517056920000, 0.09640005, 0.09665943, 0.09640005, 0.09665499, 33.60880299], [1517056980000, 0.09665499, 0.0966595, 0.09640005, 0.09665499, 12.26137673], [1517057040000, 0.09665499, 0.09667993, 0.09665499, 0.09666, 40.32738763], [1517057100000, 0.09665499, 0.09666, 0.09640005, 0.09666, 7.64520933], [1517057160000, 0.09665999, 0.09665999, 0.09650007, 0.09650007, 4.0749995], [1517057220000, 0.09650007, 0.09666, 0.09650007, 0.09666, 3.58204971], [1517057280000, 0.09666, 0.09666, 0.0965001, 0.09665999, 4.8684666], [1517057340000, 0.09665999, 0.09665999, 0.0965001, 0.09665998, 5.34096601], [1517057400000, 0.09665998, 0.09666, 0.0965001, 0.0965001, 6.17048826], [1517057460000, 0.09650015, 0.096659, 0.09650008, 0.096659, 11.08152491], [1517057520000, 0.096659, 0.096659, 0.09650015, 0.09650015, 9.68731523], [1517057580000, 0.09650015, 0.096658, 0.09650015, 0.096658, 1.02355163], [1517057640000, 0.096658, 0.096658, 0.096658, 0.096658, 4.33211534], [1517057700000, 0.096658, 0.09665897, 0.09650008, 0.09665897, 0.81580221], [1517057760000, 0.09665896, 0.09665897, 0.09655, 0.09655, 12.96308333], [1517057820000, 0.09655, 0.09655, 0.0965385, 0.0965385, 0.31990883], [1517057880000, 0.0965385, 0.0965385, 0.09640005, 0.09652999, 7.71017923], [1517057940000, 0.09652999, 0.0965384, 0.09640005, 0.0964667, 9.40657009], [1517058000000, 0.0965384, 0.0965384, 0.0965384, 0.0965384, 12.62212398], [1517058060000, 0.0965384, 0.0965385, 0.0964817, 0.0965385, 5.18962048], [1517058120000, 0.0965385, 0.0965385, 0.0964817, 0.09653849, 20.49314124], [1517058180000, 0.09653849, 0.09653849, 0.0964817, 0.09653849, 7.19787357], [1517058240000, 0.0964817, 0.09653849, 0.0964817, 0.09653849, 4.86068665], [1517058300000, 0.09653849, 0.09653849, 0.09653849, 0.09653849, 4.31867114], [1517058360000, 0.09653849, 0.09665897, 0.09648171, 0.09665897, 12.03023288], [1517058420000, 0.096658, 0.09665897, 0.096658, 0.096658, 4.26713135], [1517058480000, 0.096658, 0.09665897, 0.096658, 0.096658, 2.75107967], [1517058540000, 0.096658, 0.0967188, 0.096658, 0.09665897, 7.02399223], [1517058600000, 0.09665897, 0.0968188, 0.096658, 0.0968188, 6.53488338], [1517058660000, 0.09681878, 0.0968188, 0.096666, 0.0966661, 0.85718682], [1517058720000, 0.09681879, 0.09688199, 0.0966661, 0.0966661, 10.83493477], [1517058780000, 0.09687915, 0.09687915, 0.0966662, 0.0966662, 1.56388607], [1517058840000, 0.09687914, 0.09687914, 0.0967, 0.0967, 3.3149662], [1517058900000, 0.09687899, 0.09687899, 0.09672, 0.09687895, 18.14457144], [1517058960000, 0.09678956, 0.09680956, 0.096666, 0.096666, 51.1847761], [1517059020000, 0.09680956, 0.09680956, 0.09674, 0.09680956, 4.19614486], [1517059080000, 0.09674, 0.09674, 0.096666, 0.09674, 14.15925846], [1517059140000, 0.09674, 0.09680956, 0.09666601, 0.09666601, 2.16744264], [1517059200000, 0.09666601, 0.096882, 0.09666601, 0.09687895, 25.82208181], [1517059260000, 0.09687895, 0.09688, 0.096658, 0.0967, 12.24679034], [1517059320000, 0.096658, 0.096809, 0.0964817, 0.09665799, 12.45685829], [1517059380000, 0.09665799, 0.09680899, 0.09665799, 0.09680898, 7.24637558], [1517059440000, 0.0967, 0.09680896, 0.0967, 0.0967, 9.64215227], [1517059500000, 0.0967, 0.096888, 0.0967, 0.09675, 93.32750489], [1517059560000, 0.09688792, 0.096888, 0.0967, 0.09670002, 17.52054125], [1517059620000, 0.09670002, 0.096888, 0.09670002, 0.09688782, 184.84017095], [1517059680000, 0.09688782, 0.096888, 0.09670002, 0.09670002, 11.22244866], [1517059740000, 0.09670002, 0.09670002, 0.0967, 0.0967, 19.80812177], [1517059800000, 0.0967, 0.09687988, 0.0967, 0.09687, 81.25365974], [1517059860000, 0.0967, 0.09686998, 0.09649836, 0.0965, 27.54941017], [1517059920000, 0.0965, 0.09687999, 0.0965, 0.09650011, 23.43297107], [1517059980000, 0.09686999, 0.09686999, 0.09650011, 0.09686996, 7.90060573], [1517060040000, 0.09686985, 0.09686985, 0.0965, 0.09686984, 32.1912064], [1517060100000, 0.09686984, 0.09686984, 0.0965, 0.0967, 14.07039682], [1517060160000, 0.0967, 0.0967, 0.09669999, 0.0967, 3.22979383], [1517060220000, 0.0968, 0.09685996, 0.0967, 0.0967, 21.09232931], [1517060280000, 0.0968498, 0.09685996, 0.0967, 0.0967, 6.84109629], [1517060340000, 0.0967, 0.09684999, 0.0967, 0.09670001, 2.39749007], [1517060400000, 0.09670001, 0.09670001, 0.0967, 0.09670001, 10.61550226], [1517060460000, 0.09670001, 0.09679999, 0.0967, 0.09670001, 12.37851851], [1517060520000, 0.09670001, 0.09686984, 0.09670001, 0.09686984, 8.91837795], [1517060580000, 0.09670001, 0.09686984, 0.0967, 0.09686984, 16.51552383], [1517060640000, 0.0967, 0.09686983, 0.0967, 0.0967, 12.94444013], [1517060700000, 0.09686983, 0.09686983, 0.0967, 0.09670001, 3.3697941], [1517060760000, 0.09670001, 0.0968, 0.09670001, 0.09670001, 2.4246963], [1517060820000, 0.09670001, 0.0968, 0.09670001, 0.0968, 8.15287263], [1517060880000, 0.09679999, 0.09686981, 0.09679999, 0.0968, 2.04617302], [1517060940000, 0.0968, 0.09686983, 0.0968, 0.0968, 14.03306584], [1517061000000, 0.09686983, 0.09686983, 0.0968, 0.0968, 6.23558033], [1517061060000, 0.0968, 0.09686983, 0.0968, 0.0968, 5.14486342], [1517061120000, 0.09686982, 0.09686983, 0.09679999, 0.09679999, 33.95236169], [1517061180000, 0.09679999, 0.09679999, 0.09669999, 0.09669999, 4.62351185], [1517061240000, 0.09673, 0.09679999, 0.0966, 0.0966, 5.58621228], [1517061300000, 0.09679999, 0.09679999, 0.0966, 0.0967, 0.59920968], [1517061360000, 0.0967, 0.09679986, 0.09650488, 0.09669993, 3.20776986], [1517061420000, 0.09669993, 0.09669993, 0.09650488, 0.09650488, 2.06107905], [1517061480000, 0.09650488, 0.09679999, 0.09650488, 0.09650488, 5.03863917], [1517061540000, 0.09650488, 0.09679999, 0.09650488, 0.09650488, 5.83222624], [1517061600000, 0.09656002, 0.09679998, 0.09654791, 0.09654793, 4.65534438], [1517061660000, 0.09654793, 0.09657502, 0.09654793, 0.09656002, 14.63430673], [1517061720000, 0.09679999, 0.09687498, 0.09654793, 0.09687498, 16.77692229], [1517061780000, 0.0966566, 0.09679998, 0.09654793, 0.0966566, 12.36459004], [1517061840000, 0.0966566, 0.09679999, 0.09654793, 0.09654793, 6.56815396], [1517061900000, 0.09679998, 0.09679998, 0.09664447, 0.09664447, 1.29133711], [1517061960000, 0.09679989, 0.0967999, 0.09654793, 0.09654793, 20.07761741], [1517062020000, 0.0967999, 0.09679997, 0.09664449, 0.09679985, 24.40650969], [1517062080000, 0.0966445, 0.09679985, 0.09664449, 0.0966445, 3.57609913], [1517062140000, 0.09664449, 0.09679997, 0.09657542, 0.09679997, 53.43120895], [1517062200000, 0.09679996, 0.09679996, 0.09661603, 0.09679981, 6.8362178], [1517062260000, 0.09661603, 0.09679984, 0.09661603, 0.09661605, 18.54789846], [1517062320000, 0.09661605, 0.09679899, 0.09661603, 0.09661603, 17.50118535], [1517062380000, 0.09679898, 0.09679898, 0.09661603, 0.09661603, 9.99595534], [1517062440000, 0.09679888, 0.09679889, 0.09661604, 0.09679888, 6.84995676], [1517062500000, 0.09679888, 0.09679889, 0.09661604, 0.09679889, 9.21544854], [1517062560000, 0.09679888, 0.09679888, 0.09661603, 0.09661603, 12.43964475], [1517062620000, 0.09661603, 0.09679878, 0.09661603, 0.09661603, 12.39758102], [1517062680000, 0.09679871, 0.09679871, 0.09661604, 0.09679866, 4.01255434], [1517062740000, 0.09679855, 0.0967986, 0.09661606, 0.0967986, 1.83893055], [1517062800000, 0.09679866, 0.09679878, 0.0967986, 0.09679871, 19.91262426], [1517062860000, 0.09679871, 0.09679889, 0.09679871, 0.09679871, 16.04262282], [1517062920000, 0.09679871, 0.09679878, 0.09679871, 0.09679871, 18.91643327], [1517062980000, 0.09679878, 0.09679889, 0.0967, 0.09679889, 15.09380319], [1517063040000, 0.09679889, 0.09679889, 0.0967, 0.0967, 4.22142954], [1517063100000, 0.0967, 0.0967, 0.09662001, 0.09669, 17.42712289], [1517063160000, 0.09669, 0.09679888, 0.09662, 0.09669, 15.89322827], [1517063220000, 0.09679, 0.09679814, 0.09662, 0.09679814, 2.46678903], [1517063280000, 0.09679, 0.09679879, 0.09662, 0.09662001, 5.33723743], [1517063340000, 0.09662001, 0.09662001, 0.09662, 0.09662, 15.56230482], [1517063400000, 0.09662001, 0.09677999, 0.09662, 0.09669, 15.50251521], [1517063460000, 0.09669, 0.09677994, 0.09669, 0.0967, 18.46229688], [1517063520000, 0.0967, 0.09677, 0.09662005, 0.09662005, 15.18103756], [1517063580000, 0.09669, 0.09676999, 0.09662, 0.0967699, 23.64374106], [1517063640000, 0.09669, 0.09676993, 0.09669, 0.0967699, 5.78662441], [1517063700000, 0.09669, 0.0967699, 0.09669, 0.09676989, 1.10007881], [1517063760000, 0.09676989, 0.09677991, 0.09662, 0.09662, 21.41920207], [1517063820000, 0.09662, 0.09676975, 0.09662, 0.0967696, 3.20541709], [1517063880000, 0.0967696, 0.0967696, 0.09662, 0.09662, 35.27740999], [1517063940000, 0.09662, 0.09676582, 0.09662, 0.09662, 15.95747136], [1517064000000, 0.0967656, 0.09676564, 0.09662, 0.0967, 22.90500188], [1517064060000, 0.09669989, 0.09669989, 0.09662, 0.09662, 6.94459981], [1517064120000, 0.096621, 0.096621, 0.09662, 0.0966205, 16.28193028], [1517064180000, 0.0966205, 0.0966205, 0.09662, 0.09662, 13.54191622], [1517064240000, 0.09662001, 0.0966205, 0.09662, 0.09662045, 32.16797218], [1517064300000, 0.09662045, 0.0966205, 0.09662, 0.09662, 24.098173], [1517064360000, 0.09662, 0.0966997, 0.09662, 0.0966997, 11.61900028], [1517064420000, 0.0966997, 0.0967697, 0.09662044, 0.09671469, 18.46745452], [1517064480000, 0.0966205, 0.09671469, 0.09662044, 0.09662044, 25.30661191], [1517064540000, 0.0966205, 0.0967, 0.09662001, 0.09662001, 37.21048026], [1517064600000, 0.09662044, 0.0966205, 0.09662, 0.0966205, 36.04903646], [1517064660000, 0.0966205, 0.09671469, 0.09662001, 0.09662001, 27.91440907], [1517064720000, 0.09671468, 0.09671469, 0.09662001, 0.09671469, 7.01326285], [1517064780000, 0.09671469, 0.0967699, 0.0966201, 0.09676988, 15.76931244], [1517064840000, 0.09676988, 0.09676988, 0.0966201, 0.0966201, 23.69942687], [1517064900000, 0.0966201, 0.09672958, 0.09662, 0.09662, 57.11168896], [1517064960000, 0.09672943, 0.09672943, 0.09662, 0.09672892, 31.50286962], [1517065020000, 0.09662, 0.09672796, 0.09662, 0.09662, 24.7621903], [1517065080000, 0.09662, 0.0967276, 0.09662, 0.09662, 42.298936], [1517065140000, 0.09662, 0.09662, 0.09662, 0.09662, 9.87424908], [1517065200000, 0.09662, 0.09662001, 0.09662, 0.09662001, 42.03369932], [1517065260000, 0.09662001, 0.09662001, 0.09662, 0.09662001, 32.20585409], [1517065320000, 0.09662001, 0.09672782, 0.09662, 0.09662001, 44.66403144], [1517065380000, 0.09669997, 0.09669997, 0.09662, 0.09662, 68.77224955], [1517065440000, 0.09662001, 0.09662001, 0.09662, 0.09662001, 11.49338636], [1517065500000, 0.09662, 0.09662001, 0.09662, 0.09662, 74.01862611], [1517065560000, 0.09662, 0.09662001, 0.0965, 0.0965075, 47.4006246], [1517065620000, 0.0965, 0.0965075, 0.0964817, 0.0965, 26.10530768], [1517065680000, 0.09650001, 0.0965075, 0.0965, 0.09650001, 10.36254566], [1517065740000, 0.09650001, 0.09650001, 0.0962352, 0.096335, 48.36567463], [1517065800000, 0.096335, 0.096335, 0.0962352, 0.0962352, 8.8011189], [1517065860000, 0.0962352, 0.09650001, 0.0962094, 0.0962352, 11.05340003], [1517065920000, 0.0965, 0.09650001, 0.09625876, 0.09625876, 1.09462439], [1517065980000, 0.09647639, 0.09647639, 0.09625876, 0.09625876, 5.33577542], [1517066040000, 0.09645, 0.09645, 0.0962352, 0.09635355, 9.69143839], [1517066100000, 0.09644999, 0.09647639, 0.09635355, 0.09635356, 3.99363527], [1517066160000, 0.09635356, 0.09644991, 0.09635356, 0.09644991, 3.23577605], [1517066220000, 0.09647639, 0.09647639, 0.09635356, 0.09635356, 13.51985783], [1517066280000, 0.09635356, 0.09647639, 0.09635355, 0.09647639, 9.66260054], [1517066340000, 0.09647639, 0.09647639, 0.09635356, 0.09647638, 7.2635218], [1517066400000, 0.09635356, 0.09647638, 0.09635355, 0.09638356, 21.73849759], [1517066460000, 0.09647638, 0.09647639, 0.09636856, 0.09647639, 10.22276327], [1517066520000, 0.09647639, 0.09647639, 0.09636857, 0.09636857, 10.53331152], [1517066580000, 0.09636857, 0.09647639, 0.09636857, 0.09647639, 7.40908245], [1517066640000, 0.09647639, 0.09647639, 0.09636857, 0.09647638, 4.03903077], [1517066700000, 0.09647638, 0.0965, 0.09638357, 0.0965, 16.28646664], [1517066760000, 0.0965, 0.0965, 0.09647639, 0.09649998, 1.64893269], [1517066820000, 0.09649998, 0.09649998, 0.09647639, 0.09649998, 1.89426035], [1517066880000, 0.09649998, 0.09649998, 0.09647639, 0.09647639, 8.12568332], [1517066940000, 0.09647639, 0.09647639, 0.09636, 0.09639857, 5.87673439], [1517067000000, 0.09639857, 0.0966, 0.09639856, 0.09649998, 84.84962398], [1517067060000, 0.09649998, 0.09662, 0.09649497, 0.09661996, 11.31298193], [1517067120000, 0.09649497, 0.09661996, 0.09626, 0.09635355, 26.65877927], [1517067180000, 0.09661995, 0.09661995, 0.09635355, 0.0965, 27.34579685], [1517067240000, 0.09637, 0.09659979, 0.09626001, 0.096375, 23.04748709], [1517067300000, 0.096375, 0.0965, 0.0962094, 0.09637485, 24.76067337], [1517067360000, 0.09637485, 0.09649483, 0.09616814, 0.0962, 39.12045753], [1517067420000, 0.0962, 0.0962, 0.09616814, 0.0962, 54.30726333], [1517067480000, 0.0962, 0.096495, 0.0961, 0.09649499, 9.55704491], [1517067540000, 0.09631, 0.09649495, 0.09619999, 0.09631, 30.88555874], [1517067600000, 0.09649482, 0.09649491, 0.09611, 0.09639998, 7.71289614], [1517067660000, 0.09639993, 0.09650883, 0.09639993, 0.09650883, 37.15960213], [1517067720000, 0.09650883, 0.09650883, 0.09639996, 0.09639996, 6.75800627], [1517067780000, 0.09639996, 0.09639996, 0.09601, 0.09601, 21.23954239], [1517067840000, 0.09639986, 0.09639988, 0.09601, 0.09638999, 8.1050758], [1517067900000, 0.09638997, 0.09638997, 0.096009, 0.09601, 11.5069888], [1517067960000, 0.096009, 0.09633799, 0.09581203, 0.09581203, 148.49120003], [1517068020000, 0.0959, 0.0959, 0.095395, 0.09579499, 145.51469499], [1517068080000, 0.09579499, 0.09579499, 0.095381, 0.09574995, 35.16603959], [1517068140000, 0.09574994, 0.09574994, 0.09508717, 0.09508717, 72.61090115], [1517068200000, 0.095381, 0.09553, 0.09505, 0.09538099, 29.9191345], [1517068260000, 0.09552999, 0.09552999, 0.09508718, 0.09519999, 11.06231204], [1517068320000, 0.09519999, 0.09538098, 0.095092, 0.09538098, 10.90581822], [1517068380000, 0.09538098, 0.09553003, 0.09528998, 0.09553002, 13.42159418], [1517068440000, 0.09553002, 0.0958, 0.095381, 0.09574993, 53.984096], [1517068500000, 0.09574993, 0.09574993, 0.09538098, 0.09566777, 9.8018391], [1517068560000, 0.0956677, 0.0956677, 0.0953, 0.095381, 12.19085781], [1517068620000, 0.095381, 0.0956669, 0.095381, 0.095381, 54.85490079], [1517068680000, 0.095381, 0.09566674, 0.09529, 0.0956428, 36.05436977], [1517068740000, 0.09529, 0.09564276, 0.09525, 0.09529, 9.92892351], [1517068800000, 0.09529, 0.09529, 0.0952, 0.0952, 43.46390674], [1517068860000, 0.09520001, 0.09529, 0.0952, 0.09529, 33.27126289], [1517068920000, 0.09528994, 0.09562199, 0.0952, 0.09562196, 53.2177204], [1517068980000, 0.09562197, 0.09564276, 0.09561696, 0.09561699, 13.25067738], [1517069040000, 0.09561685, 0.09561685, 0.09529001, 0.0955917, 9.19440895], [1517069100000, 0.09559161, 0.09562196, 0.09501541, 0.09562195, 131.46666354], [1517069160000, 0.09529501, 0.09563797, 0.09511043, 0.0952955, 41.87377502], [1517069220000, 0.09555986, 0.09555988, 0.0952955, 0.09555986, 11.97545705], [1517069280000, 0.09555985, 0.09563796, 0.0952955, 0.09555986, 8.61394911], [1517069340000, 0.0956378, 0.09564299, 0.09555986, 0.09564276, 4.75490213], [1517069400000, 0.09564276, 0.09566789, 0.09564276, 0.095651, 3.7857748], [1517069460000, 0.09566769, 0.09575, 0.0952955, 0.09529561, 15.40061589], [1517069520000, 0.09564299, 0.09574999, 0.0952956, 0.09564294, 8.18502642], [1517069580000, 0.09564288, 0.09564299, 0.09530601, 0.09564288, 2.47798403], [1517069640000, 0.09564293, 0.09564299, 0.09530603, 0.09530603, 14.36172056], [1517069700000, 0.09557994, 0.09558, 0.09530602, 0.09558, 44.92068278], [1517069760000, 0.09558, 0.09558, 0.09530611, 0.09558, 48.16631754], [1517069820000, 0.09558, 0.09558, 0.09557999, 0.09557999, 30.40186069], [1517069880000, 0.09558, 0.09558, 0.09530615, 0.09558, 37.72994526], [1517069940000, 0.09558, 0.09558, 0.09557999, 0.09557999, 10.71641964], [1517070000000, 0.09557999, 0.09558, 0.09530619, 0.0955799, 14.10334585], [1517070060000, 0.0954, 0.09557999, 0.09530656, 0.0955749, 30.72465442], [1517070120000, 0.09557019, 0.09559999, 0.0954, 0.09558, 45.99488842], [1517070180000, 0.09559999, 0.09564299, 0.0954, 0.09564299, 71.00977607], [1517070240000, 0.09564291, 0.09564291, 0.0954, 0.09564282, 17.9064312], [1517070300000, 0.09540002, 0.09564275, 0.09540001, 0.09540003, 12.71895079], [1517070360000, 0.09540003, 0.0958, 0.09540003, 0.0954001, 30.8530463], [1517070420000, 0.09579989, 0.09579989, 0.09562, 0.09562, 7.50890034], [1517070480000, 0.09564291, 0.09579951, 0.09562, 0.09579945, 6.08547296], [1517070540000, 0.09579945, 0.09579945, 0.09562, 0.09579944, 2.58620601], [1517070600000, 0.09579944, 0.09579945, 0.09562012, 0.09562012, 1.42662196], [1517070660000, 0.09579943, 0.09579944, 0.09562013, 0.09562013, 6.78485527], [1517070720000, 0.09579944, 0.0957996, 0.09579943, 0.0957996, 14.57628672], [1517070780000, 0.09579959, 0.0957997, 0.09562011, 0.09562015, 31.89930675], [1517070840000, 0.09579938, 0.09579938, 0.09562015, 0.095799, 1.59305701], [1517070900000, 0.095799, 0.0957997, 0.09562011, 0.09562011, 94.83208547], [1517070960000, 0.09562012, 0.0957997, 0.09562011, 0.09562012, 93.85492345], [1517071020000, 0.09562011, 0.09562012, 0.09562011, 0.09562012, 9.55342593], [1517071080000, 0.09562012, 0.09562012, 0.09562011, 0.09562011, 31.47499772], [1517071140000, 0.09562012, 0.09579969, 0.09562011, 0.09562011, 16.94004943], [1517071200000, 0.09562011, 0.09579968, 0.09562011, 0.09579968, 48.9970577], [1517071260000, 0.09579959, 0.09579967, 0.09562011, 0.09579959, 13.0404846], [1517071320000, 0.0957995, 0.0957995, 0.09571, 0.095797, 3.40083506], [1517071380000, 0.09579693, 0.09579693, 0.09562011, 0.09579692, 11.78949439], [1517071440000, 0.09579692, 0.09579959, 0.09579692, 0.09579959, 1.11430297], [1517071500000, 0.09579959, 0.09579967, 0.09570083, 0.09579959, 3.02150667], [1517071560000, 0.09579959, 0.09579959, 0.09579632, 0.09579632, 12.23544806], [1517071620000, 0.09579632, 0.09579959, 0.09579632, 0.09579959, 35.89335152], [1517071680000, 0.09579967, 0.09579968, 0.0957996, 0.09579968, 4.82932907], [1517071740000, 0.0957996, 0.09579969, 0.0957996, 0.09579969, 1.71409528], [1517071800000, 0.09579969, 0.096, 0.09579969, 0.09581489, 15.25415997], [1517071860000, 0.09581489, 0.09591831, 0.09579969, 0.09579971, 2.19244243], [1517071920000, 0.09591831, 0.096, 0.09591831, 0.096, 2.27790263], [1517071980000, 0.096, 0.096, 0.09591831, 0.096, 13.2306145], [1517072040000, 0.096, 0.096, 0.09591831, 0.096, 2.26345095], [1517072100000, 0.096, 0.096, 0.0959183, 0.096, 21.41026953], [1517072160000, 0.096, 0.09627574, 0.09599, 0.09624, 81.42147694], [1517072220000, 0.09624, 0.09624, 0.096007, 0.09600711, 2.26924073], [1517072280000, 0.09600711, 0.09623997, 0.096007, 0.096007, 19.27915277], [1517072340000, 0.09623499, 0.09623499, 0.09579971, 0.096, 43.07998713], [1517072400000, 0.096007, 0.09624, 0.0957997, 0.0957997, 32.70640036], [1517072460000, 0.096, 0.096, 0.09586, 0.096, 18.3290182], [1517072520000, 0.096, 0.09623976, 0.09586, 0.096, 8.48400333], [1517072580000, 0.096, 0.096, 0.0958042, 0.0958192, 19.67536991], [1517072640000, 0.0958192, 0.09600664, 0.0958192, 0.09600663, 10.82463629], [1517072700000, 0.09600663, 0.09623998, 0.09600662, 0.09600663, 13.47896153], [1517072760000, 0.09623998, 0.09643761, 0.09600663, 0.09636, 21.12780418], [1517072820000, 0.09600663, 0.09649, 0.09600663, 0.09600663, 27.55682362], [1517072880000, 0.09636, 0.09636, 0.09600663, 0.09600663, 39.78444673], [1517072940000, 0.096355, 0.096355, 0.09600663, 0.09600663, 98.74833777], [1517073000000, 0.09633987, 0.09633987, 0.09600662, 0.09600662, 13.5248728], [1517073060000, 0.09630663, 0.09630663, 0.09592982, 0.09595178, 9.67997528], [1517073120000, 0.09595178, 0.09596678, 0.09592982, 0.09592982, 42.89605281], [1517073180000, 0.0961, 0.0963, 0.09595178, 0.0961, 4.73924286], [1517073240000, 0.0961, 0.09614403, 0.09595178, 0.09614402, 2.99959558], [1517073300000, 0.0961, 0.0961, 0.095808, 0.095823, 10.2444066], [1517073360000, 0.096, 0.09609986, 0.095808, 0.09609975, 5.23171158], [1517073420000, 0.09609975, 0.09609975, 0.0957997, 0.0959, 20.6363255], [1517073480000, 0.0957998, 0.0959, 0.09579632, 0.09579632, 111.2943131], [1517073540000, 0.09579632, 0.0958888, 0.09579632, 0.09581459, 101.34109812], [1517073600000, 0.0958888, 0.0958888, 0.09562011, 0.09562011, 78.8032822], [1517073660000, 0.095715, 0.0958888, 0.09562011, 0.0958888, 36.59812027], [1517073720000, 0.0958888, 0.09599994, 0.09568267, 0.09581458, 25.98556912], [1517073780000, 0.09599994, 0.09599994, 0.09568268, 0.09588878, 42.29440563], [1517073840000, 0.09571801, 0.0960999, 0.09571801, 0.09609988, 11.21451484], [1517073900000, 0.0959038, 0.09609988, 0.09571301, 0.09588878, 11.25202536], [1517073960000, 0.09588878, 0.0960999, 0.0956838, 0.09575995, 43.20995275], [1517074020000, 0.09599993, 0.0960999, 0.09575994, 0.09609979, 19.03800822], [1517074080000, 0.09609979, 0.09609979, 0.095801, 0.095801, 11.89086315], [1517074140000, 0.09609978, 0.09609978, 0.0959605, 0.09609978, 18.62751363], [1517074200000, 0.09609978, 0.09609978, 0.09581601, 0.09609964, 8.80381246], [1517074260000, 0.09599993, 0.09609978, 0.095806, 0.096, 19.60255397], [1517074320000, 0.09599994, 0.09609966, 0.095901, 0.095901, 8.49146362], [1517074380000, 0.095901, 0.095901, 0.09580101, 0.09580101, 13.15361875], [1517074440000, 0.09580105, 0.09590082, 0.09580101, 0.09590081, 6.24220926], [1517074500000, 0.09590081, 0.09590081, 0.095806, 0.095806, 5.48983948], [1517074560000, 0.09590081, 0.09590081, 0.0959008, 0.09590081, 6.76190372], [1517074620000, 0.09590081, 0.09590082, 0.09590079, 0.09590081, 7.78613021], [1517074680000, 0.09590081, 0.09590081, 0.09590079, 0.09590081, 5.86690157], [1517074740000, 0.09590081, 0.09590081, 0.09590079, 0.09590081, 1.32644935], [1517074800000, 0.09590081, 0.09590082, 0.09581001, 0.09581001, 41.27601984], [1517074860000, 0.09590079, 0.09599998, 0.09581001, 0.09590081, 31.28488769], [1517074920000, 0.09590081, 0.09609966, 0.09590081, 0.09590082, 12.18057764], [1517074980000, 0.09609966, 0.09609966, 0.09590082, 0.09590082, 10.04728366], [1517075040000, 0.09609966, 0.09614404, 0.09590082, 0.09614404, 11.7357951], [1517075100000, 0.09609977, 0.09614404, 0.09590082, 0.09600001, 8.36991152], [1517075160000, 0.09609977, 0.09609977, 0.09590081, 0.09590081, 32.54814834], [1517075220000, 0.09590081, 0.09609977, 0.09575994, 0.09575994, 39.37728625], [1517075280000, 0.0959008, 0.096095, 0.09575995, 0.09575995, 6.39310361], [1517075340000, 0.09609493, 0.09609496, 0.09575995, 0.09590079, 13.65334048], [1517075400000, 0.09575995, 0.09575995, 0.09575994, 0.09575995, 13.1065733], [1517075460000, 0.09575995, 0.09575995, 0.09575994, 0.09575995, 5.05881191], [1517075520000, 0.09575994, 0.09575995, 0.09575994, 0.09575995, 2.33849417], [1517075580000, 0.09575995, 0.09575995, 0.09568267, 0.09575995, 4.2027464], [1517075640000, 0.09604998, 0.096095, 0.09568267, 0.09568267, 8.72003816], [1517075700000, 0.096095, 0.096095, 0.09568267, 0.09609499, 4.62797371], [1517075760000, 0.09609499, 0.096095, 0.09575995, 0.096095, 2.82775622], [1517075820000, 0.096095, 0.09609976, 0.096, 0.096, 32.19173533], [1517075880000, 0.096, 0.096, 0.09575995, 0.09575995, 8.18944692], [1517075940000, 0.09568267, 0.0958, 0.09568267, 0.09568273, 5.48313226], [1517076000000, 0.0958, 0.095895, 0.09575995, 0.0958, 18.81828798], [1517076060000, 0.0958, 0.09609977, 0.09575994, 0.09575994, 88.63591076], [1517076120000, 0.09575995, 0.09575995, 0.09575994, 0.09575995, 8.10200993], [1517076180000, 0.09575995, 0.09575995, 0.09565, 0.09565, 9.40515212], [1517076240000, 0.09575992, 0.09579999, 0.09565, 0.09565001, 25.66723542], [1517076300000, 0.09565001, 0.0959, 0.09562013, 0.0959, 33.05621443], [1517076360000, 0.09589999, 0.09589999, 0.09562014, 0.09562014, 1.7782988], [1517076420000, 0.09586999, 0.09586999, 0.09562019, 0.09562019, 22.94303839], [1517076480000, 0.09575, 0.09575, 0.09562018, 0.09575, 19.93483686], [1517076540000, 0.09575, 0.09575, 0.09562013, 0.09562013, 13.7586155], [1517076600000, 0.09575, 0.09575, 0.09562021, 0.09562021, 1.45803842], [1517076660000, 0.09574899, 0.09574999, 0.09574899, 0.09574999, 2.05729565], [1517076720000, 0.09575, 0.09586999, 0.09574999, 0.09586999, 43.16415114], [1517076780000, 0.09586999, 0.09586999, 0.09575, 0.095755, 7.18952133], [1517076840000, 0.09586999, 0.09624, 0.095755, 0.09599999, 14.85894951], [1517076900000, 0.09622999, 0.09626996, 0.09597922, 0.09597922, 85.59236592], [1517076960000, 0.09623997, 0.0963, 0.0959, 0.09597925, 7.66418914], [1517077020000, 0.09597925, 0.09624036, 0.09597925, 0.09619228, 17.23966845], [1517077080000, 0.0961923, 0.09624034, 0.09597927, 0.09623553, 1.07931807], [1517077140000, 0.09597927, 0.09624036, 0.09597925, 0.09623998, 8.2502492], [1517077200000, 0.09623998, 0.09623999, 0.09597925, 0.09623999, 3.01133864], [1517077260000, 0.09623999, 0.09623999, 0.09597925, 0.09623999, 5.17455971], [1517077320000, 0.09623999, 0.09624036, 0.09623997, 0.09624036, 12.52232627], [1517077380000, 0.09624036, 0.09624036, 0.09597925, 0.09624036, 7.10006031], [1517077440000, 0.09597925, 0.09624036, 0.09597925, 0.09624036, 8.71524736], [1517077500000, 0.09624, 0.09624036, 0.09624, 0.09624036, 6.0897429], [1517077560000, 0.09624036, 0.09624036, 0.09597925, 0.09624036, 8.25626172], [1517077620000, 0.09624036, 0.09624036, 0.09624036, 0.09624036, 5.14365433], [1517077680000, 0.09624035, 0.09624036, 0.09599942, 0.09624036, 25.20344123], [1517077740000, 0.09624036, 0.09624036, 0.09599942, 0.09624036, 5.70654184], [1517077800000, 0.09624036, 0.09624036, 0.09599943, 0.09599943, 2.69283549], [1517077860000, 0.09624036, 0.09624036, 0.09600011, 0.09600011, 1.95664432], [1517077920000, 0.09600011, 0.09624036, 0.09599999, 0.09600011, 5.55132461], [1517077980000, 0.09600011, 0.09624036, 0.09600011, 0.09624035, 9.52284681], [1517078040000, 0.09624035, 0.09624036, 0.09600011, 0.09624036, 3.6760936], [1517078100000, 0.09624035, 0.09624036, 0.09600016, 0.09600016, 20.57090842], [1517078160000, 0.09624043, 0.09624044, 0.0960005, 0.09624043, 22.86871955], [1517078220000, 0.09624043, 0.09624043, 0.09600051, 0.09600051, 4.11613911], [1517078280000, 0.096235, 0.096235, 0.09600051, 0.0961, 2.08835475], [1517078340000, 0.09623, 0.09623, 0.0961, 0.0961, 5.75723744], [1517078400000, 0.0961, 0.0961, 0.09600051, 0.0961, 4.90099845], [1517078460000, 0.09600052, 0.0961, 0.09600051, 0.0961, 4.85267752], [1517078520000, 0.0961, 0.0962, 0.0961, 0.0962, 12.82154213], [1517078580000, 0.0962, 0.0962, 0.09619999, 0.0962, 1.61785357], [1517078640000, 0.0962, 0.096259, 0.0961, 0.09619999, 59.51347665], [1517078700000, 0.09625891, 0.09650001, 0.09619999, 0.09620005, 17.00891743], [1517078760000, 0.09634239, 0.09649885, 0.09619999, 0.09619999, 22.2520324], [1517078820000, 0.09649878, 0.09649878, 0.09619999, 0.09619999, 2.49803414], [1517078880000, 0.09619999, 0.09647469, 0.09619999, 0.0964746, 13.62933777], [1517078940000, 0.09645963, 0.0964988, 0.0962, 0.09630001, 10.13352917], [1517079000000, 0.0964988, 0.0964988, 0.09620001, 0.09620001, 7.43052745], [1517079060000, 0.09634999, 0.09634999, 0.0962, 0.09625, 3.94535054], [1517079120000, 0.09635, 0.0964988, 0.09625, 0.09635, 16.05778256], [1517079180000, 0.09635, 0.09649879, 0.09635, 0.09635, 15.31507655], [1517079240000, 0.09635101, 0.09635101, 0.0962511, 0.09635101, 0.98063587], [1517079300000, 0.096351, 0.096351, 0.096201, 0.0962511, 3.0536561], [1517079360000, 0.09635099, 0.09635099, 0.0962511, 0.09635, 4.12827268], [1517079420000, 0.0962511, 0.0962511, 0.0962511, 0.0962511, 1.30516497], [1517079480000, 0.09634998, 0.09634998, 0.096201, 0.096201, 4.95695319], [1517079540000, 0.09634997, 0.09634997, 0.0962, 0.0962, 11.49381776], [1517079600000, 0.09620001, 0.09634498, 0.096199, 0.0962, 1.95553248], [1517079660000, 0.09634487, 0.09634997, 0.09610002, 0.09634476, 18.3004573], [1517079720000, 0.09610002, 0.09634997, 0.09610002, 0.09634476, 3.03457625], [1517079780000, 0.09634476, 0.09634476, 0.0961, 0.0961, 11.48849201], [1517079840000, 0.09634467, 0.09634467, 0.0961, 0.0963443, 5.35360082], [1517079900000, 0.0961, 0.09634429, 0.09601521, 0.0961, 26.218586], [1517079960000, 0.0961, 0.0961, 0.09601521, 0.09601521, 0.99266857], [1517080020000, 0.09601521, 0.09601521, 0.09600051, 0.09601521, 13.10225546], [1517080080000, 0.09601521, 0.0961, 0.09601385, 0.0961, 6.45766021], [1517080140000, 0.09601521, 0.0961, 0.09600052, 0.09600052, 5.28590098], [1517080200000, 0.09600052, 0.09600052, 0.09600017, 0.09600051, 7.90136434], [1517080260000, 0.09600051, 0.0961, 0.09600051, 0.096089, 25.82983816], [1517080320000, 0.096089, 0.0961, 0.09601001, 0.09602, 4.30588218], [1517080380000, 0.09602, 0.096089, 0.09602, 0.09602001, 2.63168517], [1517080440000, 0.09602001, 0.09602001, 0.09602, 0.09602, 1.86062615], [1517080500000, 0.09602001, 0.096089, 0.09602, 0.09602, 9.77777282], [1517080560000, 0.09608, 0.09608, 0.09602, 0.09602, 2.24923161], [1517080620000, 0.09608, 0.09627597, 0.09602, 0.09627597, 39.27871839], [1517080680000, 0.09627597, 0.09634997, 0.09603, 0.09634997, 32.8514817], [1517080740000, 0.09632411, 0.09635, 0.09632411, 0.09635, 7.17452854], [1517080800000, 0.09636, 0.09636, 0.09632411, 0.09632411, 38.52202799], [1517080860000, 0.09634997, 0.09642, 0.09632411, 0.09641, 2.36303915], [1517080920000, 0.09642, 0.09642, 0.09641, 0.09641, 26.32094637], [1517080980000, 0.09641, 0.09649879, 0.09641, 0.09642, 14.57036626], [1517081040000, 0.09642, 0.09649879, 0.09637, 0.09649825, 12.23823885], [1517081100000, 0.09637, 0.09649825, 0.09603, 0.09649825, 7.49454917], [1517081160000, 0.09641, 0.0965, 0.09634997, 0.0965, 19.27938317], [1517081220000, 0.09649997, 0.09649997, 0.09603, 0.09649997, 9.02951928], [1517081280000, 0.09649997, 0.09649997, 0.09606092, 0.09606092, 2.11698148], [1517081340000, 0.09606092, 0.09645412, 0.09606092, 0.09645412, 11.3974543], [1517081400000, 0.09606092, 0.0964999, 0.09606092, 0.09606092, 5.30566841], [1517081460000, 0.0964999, 0.0964999, 0.09606093, 0.09626092, 1.23050548], [1517081520000, 0.09626092, 0.09649791, 0.09626092, 0.09649299, 6.14388068], [1517081580000, 0.0964, 0.0964, 0.09606093, 0.09607, 1.0151048], [1517081640000, 0.0964, 0.09649995, 0.0961, 0.0964, 4.59427275], [1517081700000, 0.0964, 0.0964, 0.0961, 0.0961, 4.55538107], [1517081760000, 0.0964, 0.09649997, 0.09607002, 0.09611, 19.94204209], [1517081820000, 0.09649989, 0.09649997, 0.09649989, 0.09649997, 2.28617917], [1517081880000, 0.09649999, 0.09649999, 0.09611, 0.09612922, 3.60231938], [1517081940000, 0.09649998, 0.09649998, 0.0962, 0.0962, 1.32283037], [1517082000000, 0.09649996, 0.09649996, 0.09612922, 0.09649995, 12.99835384], [1517082060000, 0.09649994, 0.09649996, 0.09611, 0.09649995, 14.93819095], [1517082120000, 0.09649995, 0.09649995, 0.09611, 0.09611, 8.93174217], [1517082180000, 0.09649994, 0.09649994, 0.09611, 0.09649978, 3.05225543], [1517082240000, 0.09611, 0.09649996, 0.09611, 0.09611, 17.13952719], [1517082300000, 0.09649, 0.09649994, 0.09611, 0.09611, 7.67385192], [1517082360000, 0.09611, 0.09649986, 0.09611, 0.09611, 3.79701684], [1517082420000, 0.0961101, 0.09649986, 0.0961101, 0.09649986, 16.54240587], [1517082480000, 0.096111, 0.09649986, 0.096111, 0.09611111, 1.78711167], [1517082540000, 0.09649899, 0.09649899, 0.09615, 0.09648799, 0.61927033], [1517082600000, 0.09616, 0.09649898, 0.09615, 0.09615, 7.02855959], [1517082660000, 0.096495, 0.09649799, 0.09615, 0.09615001, 3.44971874], [1517082720000, 0.09649787, 0.09649798, 0.09615001, 0.096497, 8.18129088], [1517082780000, 0.096497, 0.096497, 0.09615, 0.096152, 0.94718391], [1517082840000, 0.096152, 0.096152, 0.09615001, 0.096152, 0.48563907], [1517082900000, 0.096152, 0.09649, 0.09615001, 0.09615198, 4.53349452], [1517082960000, 0.09615198, 0.09649, 0.09615198, 0.09617, 1.32929726], [1517083020000, 0.09616001, 0.09617, 0.0961505, 0.09617, 19.99216941], [1517083080000, 0.09615001, 0.09617, 0.09615001, 0.09617, 24.20113065], [1517083140000, 0.09617, 0.09617, 0.09615002, 0.09617, 18.68040604], [1517083200000, 0.09616999, 0.09617, 0.09616999, 0.09617, 1.97174577], [1517083260000, 0.09616999, 0.09617, 0.09616666, 0.09616666, 10.0968136], [1517083320000, 0.09616666, 0.09642964, 0.09616666, 0.0964296, 11.64533476], [1517083380000, 0.09616667, 0.09616675, 0.09611, 0.09611, 5.27045141], [1517083440000, 0.0961667, 0.09641494, 0.09606093, 0.09607003, 56.0860686], [1517083500000, 0.09607003, 0.09641497, 0.09602, 0.09602, 9.78323799], [1517083560000, 0.09602002, 0.09638499, 0.09601001, 0.09601001, 63.92733911], [1517083620000, 0.09637498, 0.09637498, 0.09599942, 0.096, 9.59640127], [1517083680000, 0.09599942, 0.096, 0.09597925, 0.096, 37.15052792], [1517083740000, 0.096, 0.09607999, 0.09584, 0.09607, 4.89733304], [1517083800000, 0.09607997, 0.09607999, 0.09607, 0.09607999, 4.71291252], [1517083860000, 0.09607001, 0.09607999, 0.09607001, 0.09607999, 26.60419625], [1517083920000, 0.09607999, 0.09607999, 0.09580001, 0.096, 33.85090972], [1517083980000, 0.09607997, 0.09607999, 0.096, 0.09607999, 11.76049939], [1517084040000, 0.09607999, 0.09649698, 0.09607997, 0.09631056, 13.28361829], [1517084100000, 0.09631056, 0.09649698, 0.0961, 0.09649697, 9.08265539], [1517084160000, 0.09649697, 0.09649698, 0.09608, 0.09649697, 16.66592847], [1517084220000, 0.09649697, 0.09649697, 0.096081, 0.096081, 3.99117634], [1517084280000, 0.09647758, 0.09647758, 0.09622301, 0.09647753, 2.42735195], [1517084340000, 0.09647748, 0.09647748, 0.09622305, 0.09630785, 4.13387617], [1517084400000, 0.09630785, 0.09647738, 0.09622305, 0.09647737, 9.92359047], [1517084460000, 0.09630785, 0.09647766, 0.09622305, 0.09635918, 10.39317863], [1517084520000, 0.09630001, 0.09645, 0.09630001, 0.09645, 3.48305211], [1517084580000, 0.09643071, 0.09645, 0.0963502, 0.09638353, 14.65203268], [1517084640000, 0.09638353, 0.09638353, 0.0963502, 0.09638353, 8.51516008], [1517084700000, 0.09638353, 0.09638353, 0.0963521, 0.096353, 4.03903811], [1517084760000, 0.096353, 0.09638353, 0.0963521, 0.0963521, 10.2794382], [1517084820000, 0.0963502, 0.0963521, 0.0963502, 0.0963502, 5.88610221], [1517084880000, 0.09635207, 0.0963521, 0.09635207, 0.0963521, 13.17906455], [1517084940000, 0.0963521, 0.0963521, 0.096351, 0.096352, 4.17042294], [1517085000000, 0.096352, 0.096352, 0.09622308, 0.096352, 21.64234888], [1517085060000, 0.096351, 0.096351, 0.09622305, 0.096351, 11.17381502], [1517085120000, 0.09635099, 0.096351, 0.0962231, 0.09635099, 13.69490742], [1517085180000, 0.09635099, 0.09635099, 0.0962231, 0.09629, 4.01524499], [1517085240000, 0.09629, 0.09629, 0.0962231, 0.0962231, 37.32968388], [1517085300000, 0.0962231, 0.09629, 0.0962231, 0.09629, 16.95530613], [1517085360000, 0.09629, 0.0963, 0.0962605, 0.0963, 47.2315403], [1517085420000, 0.09635096, 0.09635096, 0.0963, 0.09635096, 13.5714265], [1517085480000, 0.09629, 0.09635099, 0.09626051, 0.09635099, 34.33725699], [1517085540000, 0.09635099, 0.09649797, 0.09635099, 0.09649797, 5.44693398], [1517085600000, 0.09649797, 0.09649798, 0.09640736, 0.09649798, 4.1858264], [1517085660000, 0.09649798, 0.0965, 0.096497, 0.0965, 9.94759917], [1517085720000, 0.0965, 0.09652877, 0.09649798, 0.096498, 5.93401916], [1517085780000, 0.096498, 0.09658408, 0.096498, 0.09658408, 2.49415485], [1517085840000, 0.09658408, 0.09662093, 0.09658408, 0.0965997, 5.27078887], [1517085900000, 0.0965997, 0.09669874, 0.0965997, 0.0965997, 29.85134738], [1517085960000, 0.0965997, 0.0965997, 0.09659966, 0.09659966, 41.12431239], [1517086020000, 0.0965997, 0.0965997, 0.09659966, 0.0965997, 18.7093564], [1517086080000, 0.09659966, 0.0965997, 0.096498, 0.096498, 2.15196014], [1517086140000, 0.09659966, 0.0965997, 0.096498, 0.096498, 10.37131103], [1517086200000, 0.09669874, 0.09674993, 0.096498, 0.09674993, 6.79547546], [1517086260000, 0.09670493, 0.096902, 0.09670493, 0.096732, 187.14712691], [1517086320000, 0.096732, 0.096902, 0.096732, 0.09690199, 1.66883908], [1517086380000, 0.096902, 0.096902, 0.09690199, 0.09690199, 10.05159753], [1517086440000, 0.096902, 0.096902, 0.09687905, 0.09690199, 12.77469086], [1517086500000, 0.09690198, 0.096902, 0.09670494, 0.09687421, 10.12872411], [1517086560000, 0.09687421, 0.096902, 0.09670492, 0.0969, 74.6019906], [1517086620000, 0.096902, 0.096902, 0.09650962, 0.096521, 19.31622846], [1517086680000, 0.09687762, 0.096897, 0.0965096, 0.0965096, 8.36157275], [1517086740000, 0.0965096, 0.096902, 0.0965096, 0.0965096, 8.57311408], [1517086800000, 0.0965096, 0.0965096, 0.09649798, 0.0965096, 19.46855101], [1517086860000, 0.0965096, 0.09683773, 0.09640738, 0.09640739, 24.89294923], [1517086920000, 0.096497, 0.096902, 0.09640739, 0.096902, 9.97555365], [1517086980000, 0.09653, 0.09654, 0.09627095, 0.09654, 31.49636731], [1517087040000, 0.09663, 0.09683773, 0.09663, 0.09683773, 5.38144913], [1517087100000, 0.09683773, 0.096902, 0.09653, 0.09683773, 14.40280719], [1517087160000, 0.09683773, 0.096902, 0.09655, 0.096902, 4.46496406], [1517087220000, 0.09655, 0.096902, 0.09655, 0.09655005, 0.91840406], [1517087280000, 0.09655005, 0.0969046, 0.09655005, 0.0969046, 68.21103793], [1517087340000, 0.096902, 0.09690855, 0.09643736, 0.096902, 21.20743168], [1517087400000, 0.09690855, 0.0969092, 0.096902, 0.096902, 9.04072212], [1517087460000, 0.0969092, 0.0969092, 0.09643736, 0.09666944, 6.99972764], [1517087520000, 0.096892, 0.096902, 0.09666944, 0.09666944, 2.5947418], [1517087580000, 0.09666944, 0.096892, 0.0964374, 0.09666945, 4.41933707], [1517087640000, 0.09666945, 0.0969, 0.09666945, 0.0969, 7.58929124], [1517087700000, 0.0969, 0.09690919, 0.0969, 0.0969021, 8.80762844], [1517087760000, 0.0969091, 0.09691724, 0.0969, 0.0969, 38.33391069], [1517087820000, 0.09691725, 0.09692665, 0.0969, 0.09692665, 2.86410832], [1517087880000, 0.09692665, 0.09698, 0.09692665, 0.09698, 8.74345112], [1517087940000, 0.09697, 0.09699999, 0.09692665, 0.09699999, 23.19027485], [1517088000000, 0.09699999, 0.0971, 0.09699999, 0.0971, 74.36129253], [1517088060000, 0.0971, 0.0973, 0.09699998, 0.09699998, 80.9340511], [1517088120000, 0.0971, 0.0973188, 0.09699999, 0.09702197, 17.00067064], [1517088180000, 0.09700001, 0.09731387, 0.09699999, 0.09718886, 23.15681884], [1517088240000, 0.0972, 0.09734399, 0.09699998, 0.09699998, 128.65257322], [1517088300000, 0.09734399, 0.09734399, 0.09698838, 0.09699002, 12.63067687], [1517088360000, 0.09698838, 0.097, 0.09689205, 0.0969, 46.87314522], [1517088420000, 0.09699998, 0.09734398, 0.09699998, 0.09734398, 7.67913592], [1517088480000, 0.0971, 0.09734396, 0.097, 0.09732899, 6.49822519], [1517088540000, 0.0970001, 0.09732899, 0.09700001, 0.09731899, 27.36397533], [1517088600000, 0.09731898, 0.09731899, 0.0970005, 0.09730889, 11.50186389], [1517088660000, 0.09717302, 0.09730889, 0.0970005, 0.0970005, 5.37553067], [1517088720000, 0.0970005, 0.09706567, 0.0970005, 0.09706567, 5.83041952], [1517088780000, 0.0970005, 0.09717302, 0.0970005, 0.09706567, 41.94686334], [1517088840000, 0.09706567, 0.097173, 0.097, 0.09700001, 18.86356251], [1517088900000, 0.09700001, 0.097173, 0.09700001, 0.09700001, 22.79662278], [1517088960000, 0.09700001, 0.0970001, 0.09700001, 0.09700001, 14.58329721], [1517089020000, 0.09700009, 0.0970001, 0.09700009, 0.09700009, 1.18340496], [1517089080000, 0.09700009, 0.0970001, 0.09700001, 0.09700001, 15.51669664], [1517089140000, 0.09700009, 0.0970001, 0.097, 0.0970001, 7.09983535], [1517089200000, 0.0970001, 0.09717302, 0.09700001, 0.09717302, 2.86730753], [1517089260000, 0.09717302, 0.09717302, 0.0969229, 0.0970001, 6.96359855], [1517089320000, 0.0970001, 0.0972999, 0.09693129, 0.09693129, 9.74324646], [1517089380000, 0.09719999, 0.09719999, 0.0969229, 0.0969229, 8.11149028], [1517089440000, 0.09717997, 0.09717997, 0.09701982, 0.09701982, 0.23598951], [1517089500000, 0.09692291, 0.09717998, 0.09692291, 0.09701982, 1.58596876], [1517089560000, 0.09717998, 0.09717998, 0.09692291, 0.09692291, 1.28884857], [1517089620000, 0.09701982, 0.09701982, 0.09701982, 0.09701982, 4.18531329], [1517089680000, 0.09701981, 0.09701982, 0.09693, 0.09701982, 2.01427384], [1517089740000, 0.09693, 0.09701982, 0.09693, 0.09693, 4.6413386], [1517089800000, 0.09693, 0.09717998, 0.09692292, 0.09717995, 32.23982269], [1517089860000, 0.09701982, 0.09717995, 0.09692291, 0.09717993, 3.44155311], [1517089920000, 0.09717992, 0.09717992, 0.09692291, 0.09692291, 3.32995438], [1517089980000, 0.09692291, 0.09717995, 0.09692291, 0.09692291, 49.86207194], [1517090040000, 0.09693, 0.09717998, 0.09692291, 0.09717991, 5.68207191], [1517090100000, 0.09717991, 0.09717997, 0.09692291, 0.09717749, 7.4335243], [1517090160000, 0.09717749, 0.09717749, 0.097, 0.09700001, 3.12170552], [1517090220000, 0.09700001, 0.09717996, 0.09700001, 0.09709999, 7.17621163], [1517090280000, 0.09717994, 0.09717994, 0.09700001, 0.09709999, 19.00538246], [1517090340000, 0.09709999, 0.097344, 0.09692291, 0.0971, 80.18921221], [1517090400000, 0.0971, 0.09734399, 0.09700458, 0.09734396, 9.93730169], [1517090460000, 0.0971, 0.09734394, 0.0971, 0.0971, 3.13466847], [1517090520000, 0.09713927, 0.09734396, 0.09713927, 0.09713927, 12.30416666], [1517090580000, 0.09734391, 0.09734392, 0.09692291, 0.09732572, 33.58098309], [1517090640000, 0.0971393, 0.09732572, 0.09692291, 0.09692293, 42.86129937], [1517090700000, 0.09692293, 0.0973, 0.09692293, 0.0973, 0.71443254], [1517090760000, 0.0973, 0.0973, 0.09692293, 0.09701985, 6.33026165], [1517090820000, 0.09701985, 0.0972907, 0.09701985, 0.09719999, 7.91410595], [1517090880000, 0.09719999, 0.0972, 0.09701985, 0.09701985, 6.49499592], [1517090940000, 0.09719998, 0.0973, 0.09701985, 0.09701985, 4.26565053], [1517091000000, 0.09719998, 0.09729999, 0.09719998, 0.09729999, 3.64193245], [1517091060000, 0.09729999, 0.09732552, 0.09729999, 0.09730982, 13.77365724], [1517091120000, 0.09730982, 0.09732552, 0.09730982, 0.09730983, 9.0118339], [1517091180000, 0.09730983, 0.09732552, 0.09693, 0.09732548, 23.40444681], [1517091240000, 0.097, 0.09732548, 0.097, 0.09732543, 7.3089742], [1517091300000, 0.09732543, 0.09732552, 0.0970001, 0.0970001, 2.04259302], [1517091360000, 0.09732552, 0.09732567, 0.09700011, 0.09732541, 6.58687139], [1517091420000, 0.09700011, 0.09733905, 0.09700011, 0.09733905, 12.31844425], [1517091480000, 0.09734399, 0.09737, 0.09734399, 0.09737, 38.91867251], [1517091540000, 0.09737, 0.09737, 0.097344, 0.097344, 21.33632481], [1517091600000, 0.097364, 0.097364, 0.097344, 0.097344, 7.75466045], [1517091660000, 0.097364, 0.09737415, 0.097344, 0.09737415, 24.38477695], [1517091720000, 0.09737, 0.09737563, 0.09734501, 0.09737563, 3.87084114], [1517091780000, 0.09737416, 0.0973896, 0.09737416, 0.09737563, 8.2868395], [1517091840000, 0.0973896, 0.0974001, 0.09737783, 0.0974001, 13.4477927], [1517091900000, 0.0974001, 0.09744, 0.0974001, 0.09742297, 3.07470427], [1517091960000, 0.09744, 0.09745268, 0.09742297, 0.09745268, 12.10910457], [1517092020000, 0.09744, 0.09747198, 0.09744, 0.09745268, 45.36031587], [1517092080000, 0.09745858, 0.09748, 0.09742297, 0.09747355, 11.57769168], [1517092140000, 0.09747355, 0.09749934, 0.09747198, 0.09747198, 18.47757293], [1517092200000, 0.097473, 0.097473, 0.09747198, 0.09747198, 22.27332238], [1517092260000, 0.09747198, 0.0974996, 0.097344, 0.097344, 40.31123126], [1517092320000, 0.0974996, 0.0974996, 0.097344, 0.09734401, 2.1697568], [1517092380000, 0.09734401, 0.0975, 0.097344, 0.0975, 44.96453523], [1517092440000, 0.0975, 0.0975188, 0.097349, 0.09744786, 5.92569403], [1517092500000, 0.0975188, 0.09768304, 0.09751109, 0.0975111, 105.38136923], [1517092560000, 0.09751109, 0.09753716, 0.09751109, 0.09751109, 13.43481103], [1517092620000, 0.0975111, 0.0975111, 0.09751109, 0.0975111, 4.24167586], [1517092680000, 0.0975111, 0.0976, 0.097344, 0.09734401, 113.45042242], [1517092740000, 0.09751108, 0.09751109, 0.097344, 0.09751109, 25.87336687], [1517092800000, 0.09751109, 0.0976, 0.09734405, 0.09751109, 28.90447241], [1517092860000, 0.0976, 0.09768718, 0.09751109, 0.09751109, 52.67338356], [1517092920000, 0.09751109, 0.09768716, 0.097511, 0.097511, 16.46647923], [1517092980000, 0.09768714, 0.09768714, 0.097344, 0.097344, 15.34061033], [1517093040000, 0.09765999, 0.09768718, 0.097344, 0.09734401, 9.48235025], [1517093100000, 0.09765855, 0.09770001, 0.09765855, 0.0977, 22.22729177], [1517093160000, 0.0977, 0.0977188, 0.0977, 0.0977, 18.32719949], [1517093220000, 0.0977002, 0.0978188, 0.0977, 0.09779, 13.23049021], [1517093280000, 0.09779, 0.09798998, 0.0977, 0.09786, 19.82287554], [1517093340000, 0.09780666, 0.09786, 0.0977, 0.09770001, 5.09659591], [1517093400000, 0.09776213, 0.09785989, 0.09770001, 0.09770003, 2.39417328], [1517093460000, 0.09784989, 0.09785989, 0.0977, 0.0977, 47.34852807], [1517093520000, 0.0977, 0.09779, 0.0977, 0.09779, 7.16375826], [1517093580000, 0.09779, 0.09779, 0.0977, 0.0977, 28.75031294], [1517093640000, 0.09778999, 0.098, 0.09739001, 0.09739001, 112.90829017], [1517093700000, 0.09799499, 0.09799499, 0.09739002, 0.09796, 11.72944595], [1517093760000, 0.09796, 0.09797997, 0.09742502, 0.09742508, 8.37801474], [1517093820000, 0.09742508, 0.09797, 0.09742508, 0.0979699, 9.39173811], [1517093880000, 0.0977, 0.09796976, 0.09742601, 0.09742601, 46.27594491], [1517093940000, 0.0977, 0.09796899, 0.097426, 0.09742601, 13.40872134], [1517094000000, 0.0978, 0.0978, 0.09742506, 0.09742601, 24.50855436], [1517094060000, 0.0978, 0.0978, 0.09774995, 0.09774995, 15.28298431], [1517094120000, 0.09774995, 0.09794899, 0.09742505, 0.09742507, 228.82924529], [1517094180000, 0.09747377, 0.09794897, 0.09697498, 0.0975, 50.93430944], [1517094240000, 0.0975, 0.098, 0.0975, 0.0975, 130.63745106], [1517094300000, 0.0975, 0.09799995, 0.0975, 0.09799894, 6.28485869], [1517094360000, 0.09799791, 0.09799791, 0.09755001, 0.09755001, 5.68111428], [1517094420000, 0.09799778, 0.09799778, 0.09755002, 0.0976, 6.34919508], [1517094480000, 0.09760002, 0.09799592, 0.0976, 0.09796394, 20.17629834], [1517094540000, 0.09760001, 0.09795193, 0.09755001, 0.09755001, 77.43104157], [1517094600000, 0.09760001, 0.09760001, 0.09755001, 0.09755001, 11.68993327], [1517094660000, 0.09759896, 0.09759896, 0.09755001, 0.09755003, 18.56723857], [1517094720000, 0.09755003, 0.09781466, 0.09750001, 0.09750001, 9.32889803], [1517094780000, 0.09750001, 0.09755001, 0.09715765, 0.09744157, 64.90581224], [1517094840000, 0.09745157, 0.097529, 0.09694, 0.09694003, 15.38847851], [1517094900000, 0.09745098, 0.09745098, 0.09689999, 0.09689999, 49.30230127], [1517094960000, 0.0969, 0.0974398, 0.09689999, 0.09716221, 46.2900556], [1517095020000, 0.0969, 0.09716221, 0.0969, 0.09716221, 6.13043673], [1517095080000, 0.09716221, 0.09716221, 0.096901, 0.0971622, 4.74494293], [1517095140000, 0.0971622, 0.09738591, 0.0971622, 0.09738591, 13.12967051], [1517095200000, 0.0973859, 0.0973859, 0.0971622, 0.09738273, 6.09047879], [1517095260000, 0.09738273, 0.09738273, 0.09738195, 0.09738195, 13.29141819], [1517095320000, 0.097382, 0.097382, 0.0972, 0.0972, 44.65651903], [1517095380000, 0.0973819, 0.0973819, 0.0972, 0.0972, 0.97674963], [1517095440000, 0.09738189, 0.09738197, 0.0972, 0.0972, 10.33127908], [1517095500000, 0.0972, 0.09738197, 0.096905, 0.097365, 21.16004249], [1517095560000, 0.096911, 0.097365, 0.096905, 0.097365, 8.18725695], [1517095620000, 0.097, 0.097365, 0.096908, 0.097355, 9.99295512], [1517095680000, 0.097355, 0.0973859, 0.097355, 0.0973859, 47.77620675], [1517095740000, 0.0973859, 0.0973859, 0.097355, 0.097355, 0.50674481], [1517095800000, 0.09738588, 0.09738589, 0.097001, 0.09738495, 10.85682453], [1517095860000, 0.09738493, 0.09738493, 0.09700001, 0.09700002, 8.84015262], [1517095920000, 0.09700002, 0.09736999, 0.0969, 0.09700002, 25.05522786], [1517095980000, 0.09736894, 0.09736894, 0.0969, 0.09700002, 6.98955401], [1517096040000, 0.09700002, 0.09732997, 0.09690012, 0.09700002, 14.95412125], [1517096100000, 0.09690012, 0.09700002, 0.0968, 0.0968, 40.04930806], [1517096160000, 0.09680156, 0.097, 0.09654361, 0.09697998, 25.66759094], [1517096220000, 0.09684772, 0.0969, 0.09658068, 0.0969, 3.79543829], [1517096280000, 0.0969, 0.09697998, 0.09658603, 0.0968, 7.02422622], [1517096340000, 0.09697998, 0.097, 0.09690001, 0.09697998, 7.10039921], [1517096400000, 0.09697998, 0.09699999, 0.0969, 0.09699998, 7.86189089], [1517096460000, 0.09699998, 0.09733599, 0.0968, 0.09699999, 219.11582927], [1517096520000, 0.09733597, 0.09733598, 0.097, 0.09733389, 43.14386901], [1517096580000, 0.097, 0.097, 0.0968, 0.097, 14.07957977], [1517096640000, 0.097, 0.09701, 0.0968, 0.0968, 10.14520295], [1517096700000, 0.0968, 0.09719399, 0.096586, 0.097, 6.67733544], [1517096760000, 0.097, 0.097, 0.09678431, 0.09678431, 21.74137414], [1517096820000, 0.09678431, 0.0969, 0.09678431, 0.09678431, 13.22451285], [1517096880000, 0.09678431, 0.09689994, 0.09678431, 0.0968999, 5.81086456], [1517096940000, 0.0968999, 0.09715217, 0.09662, 0.09689989, 9.82107808], [1517097000000, 0.09689989, 0.09689989, 0.09678431, 0.09689986, 8.12401085], [1517097060000, 0.09689986, 0.09689986, 0.09678431, 0.09689986, 6.16208462], [1517097120000, 0.09689986, 0.09733499, 0.09678431, 0.09678431, 16.88309237], [1517097180000, 0.0968999, 0.09729499, 0.09678431, 0.0968999, 2.566544], [1517097240000, 0.09725, 0.09725997, 0.0968999, 0.09725993, 24.61277882], [1517097300000, 0.09725992, 0.09725992, 0.09719999, 0.09719999, 3.49312911], [1517097360000, 0.09719999, 0.09719999, 0.0969, 0.09719998, 3.07392018], [1517097420000, 0.09719998, 0.09719998, 0.0969, 0.0970999, 5.0973776], [1517097480000, 0.0970999, 0.097199, 0.09692, 0.0970998, 16.1769327], [1517097540000, 0.09709973, 0.097199, 0.09696, 0.097199, 34.8360878], [1517097600000, 0.097199, 0.0972, 0.09696003, 0.0972, 15.07741139], [1517097660000, 0.09719999, 0.09719999, 0.09696003, 0.097, 14.57210225], [1517097720000, 0.097, 0.09715, 0.09692, 0.09694939, 12.53845268], [1517097780000, 0.097, 0.09714996, 0.09694939, 0.097, 2.07371741], [1517097840000, 0.09694941, 0.0972, 0.09692, 0.0972, 15.29584994], [1517097900000, 0.09719, 0.09725993, 0.09692, 0.09694942, 1.426737], [1517097960000, 0.09694943, 0.09725992, 0.09694943, 0.09725992, 2.76140704], [1517098020000, 0.09725992, 0.09737563, 0.09694943, 0.09694944, 5.75178895], [1517098080000, 0.09694944, 0.09735563, 0.09694944, 0.09735561, 0.9059567], [1517098140000, 0.09735561, 0.09737563, 0.09694944, 0.09737563, 3.98732235], [1517098200000, 0.09737563, 0.09745157, 0.09694944, 0.09745157, 11.31206678], [1517098260000, 0.0973756, 0.09746157, 0.09694943, 0.09716, 24.96517525], [1517098320000, 0.09716, 0.09749998, 0.09694943, 0.09694944, 10.36458528], [1517098380000, 0.09694944, 0.097544, 0.09694943, 0.09694946, 11.6291273], [1517098440000, 0.09748999, 0.09749995, 0.09694947, 0.09749995, 42.22023181], [1517098500000, 0.09749996, 0.097549, 0.09695401, 0.09716475, 21.44127199], [1517098560000, 0.09716475, 0.09737563, 0.09699481, 0.0973699, 14.44530644], [1517098620000, 0.09716475, 0.09739999, 0.0969948, 0.0969948, 71.17342874], [1517098680000, 0.0969948, 0.0975, 0.0969948, 0.0975, 23.12811245], [1517098740000, 0.0975, 0.09754888, 0.0969948, 0.09719997, 18.11058812], [1517098800000, 0.0971999, 0.0971999, 0.09694943, 0.09714885, 51.829031], [1517098860000, 0.09694943, 0.09714795, 0.0968, 0.09707952, 5.55451033], [1517098920000, 0.0971, 0.09748998, 0.09673628, 0.09748998, 15.82236219], [1517098980000, 0.09683004, 0.09712, 0.0966674, 0.09683003, 10.87599948], [1517099040000, 0.09705, 0.09709993, 0.09683002, 0.09709993, 9.2477239], [1517099100000, 0.09709992, 0.09736, 0.096835, 0.09714594, 17.53819948], [1517099160000, 0.09714594, 0.09735891, 0.096835, 0.096835, 5.13687986], [1517099220000, 0.09733, 0.09748988, 0.09686499, 0.09748988, 32.25526425], [1517099280000, 0.09735891, 0.09735891, 0.09690498, 0.0973, 3.36886751], [1517099340000, 0.09693497, 0.09728995, 0.09692497, 0.0972899, 1.50435019], [1517099400000, 0.0972899, 0.0972899, 0.097, 0.0972899, 5.33039308], [1517099460000, 0.0972899, 0.0975, 0.0972899, 0.0974998, 5.56759965], [1517099520000, 0.09749979, 0.0974998, 0.09728995, 0.0974997, 8.71449373], [1517099580000, 0.09749963, 0.09749963, 0.09728995, 0.09728995, 0.82458301], [1517099640000, 0.09728995, 0.09739, 0.09728995, 0.09728995, 10.5714294], [1517099700000, 0.09728995, 0.09728996, 0.0972899, 0.09728993, 10.38281921], [1517099760000, 0.0972899, 0.09743997, 0.0968899, 0.09743983, 45.18831793], [1517099820000, 0.09743973, 0.09743973, 0.09688991, 0.09741999, 7.43131789], [1517099880000, 0.09688991, 0.0973, 0.09688991, 0.09688991, 14.86350465], [1517099940000, 0.09719541, 0.09719541, 0.09688991, 0.097, 2.35131266], [1517100000000, 0.097, 0.09719541, 0.09688995, 0.0971954, 4.49952543], [1517100060000, 0.09688995, 0.09719539, 0.09688991, 0.09719537, 6.63010632], [1517100120000, 0.09719536, 0.09719537, 0.09688992, 0.09719536, 2.27584436], [1517100180000, 0.09719536, 0.09719536, 0.09688992, 0.09719535, 14.5708813], [1517100240000, 0.09688995, 0.09719535, 0.09688995, 0.09699485, 5.7671507], [1517100300000, 0.09699485, 0.09719535, 0.09688995, 0.09688995, 8.69210454], [1517100360000, 0.097, 0.09718954, 0.09688995, 0.097, 17.53831004], [1517100420000, 0.09688998, 0.09699999, 0.09688996, 0.09688996, 13.5605879], [1517100480000, 0.09699998, 0.097, 0.09699, 0.09699, 4.46003271], [1517100540000, 0.096999, 0.09718954, 0.096999, 0.09718954, 39.68894412], [1517100600000, 0.09718954, 0.09719535, 0.09700005, 0.09719, 4.90940562], [1517100660000, 0.09719, 0.09719, 0.09718954, 0.09718954, 11.28022849], [1517100720000, 0.09719, 0.09719535, 0.09718954, 0.09719535, 7.72192409], [1517100780000, 0.09719, 0.09719535, 0.09718954, 0.09718954, 15.79415733], [1517100840000, 0.09718954, 0.09719536, 0.09718954, 0.09719536, 19.09408246], [1517100900000, 0.09719535, 0.09719535, 0.096999, 0.09718954, 35.58570289], [1517100960000, 0.09718954, 0.09718954, 0.09688996, 0.09688996, 21.909053], [1517101020000, 0.096989, 0.0971895, 0.09688996, 0.096989, 11.24182831], [1517101080000, 0.0971895, 0.09719536, 0.096989, 0.096989, 13.97425474], [1517101140000, 0.09719536, 0.09719541, 0.09715, 0.09719541, 5.23341368], [1517101200000, 0.09719541, 0.0972, 0.09719535, 0.0972, 9.57035823], [1517101260000, 0.0972, 0.0972, 0.09719535, 0.0972, 17.85566328], [1517101320000, 0.0972, 0.0972, 0.09719541, 0.09719542, 2.04808294], [1517101380000, 0.09719542, 0.0974005, 0.09719541, 0.09719542, 12.2904012], [1517101440000, 0.09719542, 0.0974005, 0.09719542, 0.0972005, 9.95667342], [1517101500000, 0.0972005, 0.0974005, 0.0972005, 0.0972005, 9.84336417], [1517101560000, 0.09720053, 0.09740049, 0.0972, 0.09740048, 8.37693091], [1517101620000, 0.09725001, 0.09740046, 0.09725001, 0.09740022, 22.79775552], [1517101680000, 0.09725002, 0.0974005, 0.09725002, 0.09735606, 11.00982794], [1517101740000, 0.097253, 0.09735604, 0.09720053, 0.09725, 33.56870006], [1517101800000, 0.09720053, 0.09720053, 0.09720049, 0.09720049, 6.71979827], [1517101860000, 0.09720052, 0.09725001, 0.0972, 0.09725001, 9.80498991], [1517101920000, 0.0972, 0.09725001, 0.0972, 0.09720049, 6.23054868], [1517101980000, 0.09720049, 0.09735606, 0.09720049, 0.09735597, 8.66092055], [1517102040000, 0.09735588, 0.09735588, 0.0972, 0.0973, 10.95428869], [1517102100000, 0.0972, 0.0973, 0.0972, 0.0973, 4.43386248], [1517102160000, 0.097201, 0.0974005, 0.09719542, 0.09719544, 10.61766427], [1517102220000, 0.09719544, 0.09740036, 0.09719544, 0.0974002, 1.15987832], [1517102280000, 0.0974002, 0.0974003, 0.09719544, 0.0974003, 9.91239693], [1517102340000, 0.09740028, 0.09740029, 0.09719544, 0.09740027, 5.44137094], [1517102400000, 0.09740028, 0.09740028, 0.09719543, 0.09740026, 16.51846653], [1517102460000, 0.09719544, 0.09740029, 0.09719541, 0.09740029, 24.55503838], [1517102520000, 0.09740029, 0.0974005, 0.09719541, 0.09719541, 14.18046141], [1517102580000, 0.09740027, 0.09740027, 0.09719541, 0.09719541, 6.83623802], [1517102640000, 0.0972, 0.09734859, 0.09719541, 0.09719541, 15.04707926], [1517102700000, 0.09719541, 0.09719542, 0.09719541, 0.09719542, 0.72186645], [1517102760000, 0.09734858, 0.09734859, 0.09719542, 0.09734859, 3.79660438], [1517102820000, 0.0973486, 0.09735, 0.09734859, 0.0973486, 6.35998337], [1517102880000, 0.09735, 0.0974005, 0.09734859, 0.09735, 17.21580829], [1517102940000, 0.09735, 0.0974005, 0.09734859, 0.0974005, 23.87006], [1517103000000, 0.0974005, 0.097443, 0.09719541, 0.09719541, 39.56991558], [1517103060000, 0.09719541, 0.09719541, 0.09714861, 0.09715, 8.21220005], [1517103120000, 0.09715, 0.09744295, 0.09715, 0.0974005, 30.10722376], [1517103180000, 0.0974005, 0.09748998, 0.0972, 0.09740045, 20.79573202], [1517103240000, 0.09740045, 0.09740045, 0.0972, 0.0972, 5.73465225], [1517103300000, 0.0972, 0.09740045, 0.09706392, 0.09740045, 8.94249352], [1517103360000, 0.09715, 0.09740044, 0.09688998, 0.096894, 16.65758122], [1517103420000, 0.0974, 0.0974, 0.096894, 0.096913, 43.67831893], [1517103480000, 0.096913, 0.09738999, 0.096904, 0.09738996, 5.01136533], [1517103540000, 0.09738997, 0.09738997, 0.096904, 0.09738991, 4.21974556], [1517103600000, 0.09738983, 0.09738983, 0.09738, 0.09738, 0.51946094], [1517103660000, 0.09736996, 0.09736996, 0.096895, 0.09735499, 2.50778687], [1517103720000, 0.09734998, 0.0973549, 0.09691, 0.09733, 2.2505195], [1517103780000, 0.0973298, 0.0973298, 0.09691, 0.0973198, 5.51995953], [1517103840000, 0.09731969, 0.09731969, 0.09730999, 0.09730999, 1.3964156], [1517103900000, 0.0973, 0.0973, 0.09691025, 0.09728199, 1.63199786], [1517103960000, 0.09728198, 0.09728198, 0.096912, 0.096912, 5.92410031], [1517104020000, 0.09727995, 0.09727996, 0.0969103, 0.096927, 10.17358603], [1517104080000, 0.096927, 0.09727975, 0.0969253, 0.09727975, 14.2186142], [1517104140000, 0.09727975, 0.0972799, 0.0969253, 0.096942, 7.08844434], [1517104200000, 0.096957, 0.09727987, 0.096942, 0.09727987, 3.93643994], [1517104260000, 0.09727987, 0.0972799, 0.096957, 0.096957, 6.19566589], [1517104320000, 0.09725555, 0.0972799, 0.096942, 0.096957, 3.56317311], [1517104380000, 0.0972799, 0.0972799, 0.0969571, 0.0969571, 5.35286928], [1517104440000, 0.09727471, 0.0972799, 0.09727471, 0.0972799, 4.48574636], [1517104500000, 0.0972799, 0.0972799, 0.09696, 0.097, 10.82927471], [1517104560000, 0.097, 0.0972799, 0.09695711, 0.0972799, 10.67498473], [1517104620000, 0.0972799, 0.0972799, 0.09701002, 0.0972799, 3.96935689], [1517104680000, 0.09701002, 0.0972799, 0.09701002, 0.09701003, 1.01925634], [1517104740000, 0.09701003, 0.09727989, 0.09701003, 0.09727989, 0.5764042], [1517104800000, 0.09718261, 0.0972799, 0.09718261, 0.0972799, 5.09732411], [1517104860000, 0.09727989, 0.09727989, 0.09727989, 0.09727989, 4.30211046], [1517104920000, 0.09718261, 0.0972799, 0.09701003, 0.0972799, 2.24720012], [1517104980000, 0.0972799, 0.0972799, 0.09701003, 0.0972799, 2.94755498], [1517105040000, 0.0971198, 0.09727987, 0.0971198, 0.0971198, 0.7884696], [1517105100000, 0.09727969, 0.09727969, 0.09701001, 0.09727967, 26.01138699], [1517105160000, 0.09727499, 0.09727499, 0.09701002, 0.09726494, 5.63471067], [1517105220000, 0.09724491, 0.09725483, 0.09701002, 0.09701002, 9.90359358], [1517105280000, 0.0972006, 0.0972006, 0.0972006, 0.0972006, 1.87489851], [1517105340000, 0.0972006, 0.0972206, 0.09701002, 0.0972006, 3.42419285], [1517105400000, 0.0972106, 0.0972206, 0.0972006, 0.0972206, 1.64142138], [1517105460000, 0.0972206, 0.09727, 0.0972006, 0.09727, 16.02134463], [1517105520000, 0.09727, 0.09727, 0.0972006, 0.0972206, 1.33498768], [1517105580000, 0.0972006, 0.09727, 0.0972006, 0.0972006, 7.64160311], [1517105640000, 0.0972206, 0.09727969, 0.0972006, 0.09727969, 26.50901728], [1517105700000, 0.09727969, 0.09727969, 0.0972006, 0.0972006, 9.66240799], [1517105760000, 0.09727965, 0.09727969, 0.0972006, 0.09727969, 26.86400403], [1517105820000, 0.09720061, 0.09727969, 0.09720061, 0.09727969, 14.82456163], [1517105880000, 0.09727969, 0.09728195, 0.09726961, 0.09726961, 1.65200667], [1517105940000, 0.09720062, 0.09728195, 0.09720061, 0.09726961, 5.94641992], [1517106000000, 0.0972819, 0.09728195, 0.09720061, 0.09728195, 2.82162209], [1517106060000, 0.09728195, 0.09728195, 0.09720061, 0.09728195, 0.42996346], [1517106120000, 0.0972019, 0.09728195, 0.09720061, 0.09720061, 4.98613133], [1517106180000, 0.09720061, 0.09738, 0.09720061, 0.09735, 6.37616495], [1517106240000, 0.09735, 0.0974, 0.09728195, 0.0974, 45.65465619], [1517106300000, 0.0974, 0.0974005, 0.09728195, 0.09728195, 23.99861599], [1517106360000, 0.0974005, 0.0974005, 0.09728195, 0.09728196, 1.38870081], [1517106420000, 0.09728196, 0.09740048, 0.09728196, 0.09740045, 3.02363929], [1517106480000, 0.09740045, 0.09740047, 0.09728196, 0.0974, 13.92933328], [1517106540000, 0.0974, 0.09740044, 0.0972006, 0.097201, 143.18884098], [1517106600000, 0.097201, 0.0972011, 0.09720061, 0.09720101, 4.18969394], [1517106660000, 0.09720101, 0.09720101, 0.09720061, 0.09720062, 2.04889541], [1517106720000, 0.09720101, 0.09736999, 0.09720061, 0.09735, 9.71783444], [1517106780000, 0.09735, 0.09735, 0.09720061, 0.0973499, 7.63287009], [1517106840000, 0.09720061, 0.09737, 0.0972006, 0.09720061, 34.16999653], [1517106900000, 0.09720061, 0.09736994, 0.0972006, 0.0973499, 16.43074586], [1517106960000, 0.0973499, 0.0973499, 0.0972006, 0.097201, 6.59950784], [1517107020000, 0.09720061, 0.09748999, 0.09720061, 0.09748998, 6.87847387], [1517107080000, 0.09748993, 0.09748993, 0.097201, 0.0974899, 0.83377027], [1517107140000, 0.097201, 0.09748988, 0.097201, 0.097216, 2.91043939], [1517107200000, 0.09748967, 0.09748967, 0.097316, 0.09748953, 14.0283008], [1517107260000, 0.09748953, 0.09748975, 0.09734991, 0.09748953, 7.18356938], [1517107320000, 0.09748953, 0.09756, 0.09736491, 0.09755998, 21.29750341], [1517107380000, 0.09755998, 0.09765, 0.09734991, 0.09755997, 35.25542323], [1517107440000, 0.097575, 0.09765001, 0.097316, 0.09755, 3.13911716], [1517107500000, 0.09753001, 0.09755, 0.09753001, 0.09753001, 26.83315196], [1517107560000, 0.09753001, 0.09766659, 0.097216, 0.097316, 29.91066351], [1517107620000, 0.097216, 0.097316, 0.097216, 0.097316, 17.06490455], [1517107680000, 0.097316, 0.09763512, 0.09721601, 0.097316, 17.78422267], [1517107740000, 0.09763503, 0.09763513, 0.09763496, 0.09763513, 20.76746595], [1517107800000, 0.09763513, 0.09763513, 0.097316, 0.09755418, 5.84083939], [1517107860000, 0.09758172, 0.0978, 0.09731601, 0.0976, 17.07208553], [1517107920000, 0.0976, 0.097892, 0.09731603, 0.09780295, 9.27440971], [1517107980000, 0.0975756, 0.09780292, 0.09721601, 0.09721601, 7.88992491], [1517108040000, 0.09731603, 0.097795, 0.09731602, 0.09779395, 3.04252671], [1517108100000, 0.09731602, 0.09779347, 0.09721602, 0.0977629, 27.6763945], [1517108160000, 0.09776289, 0.09777291, 0.09731603, 0.09731606, 2.27341617], [1517108220000, 0.09777093, 0.09777093, 0.09731604, 0.09776896, 13.01279021], [1517108280000, 0.09776896, 0.09776896, 0.09731603, 0.09771895, 9.10858278], [1517108340000, 0.09731603, 0.0977489, 0.09731603, 0.0975792, 29.27505145], [1517108400000, 0.0975792, 0.0975792, 0.097319, 0.0975792, 4.60194331], [1517108460000, 0.097319, 0.0977069, 0.097319, 0.09758, 4.35930102], [1517108520000, 0.09758, 0.0977069, 0.09731901, 0.09756997, 9.37583767], [1517108580000, 0.09756997, 0.0977069, 0.09731901, 0.09754559, 1.66541207], [1517108640000, 0.09769999, 0.09769999, 0.09733001, 0.09733001, 3.61323187], [1517108700000, 0.09769999, 0.09769999, 0.09733001, 0.09739, 8.27648169], [1517108760000, 0.09739, 0.0977069, 0.09733001, 0.097405, 39.02769551], [1517108820000, 0.09741, 0.0977069, 0.09741, 0.09741, 2.59275436], [1517108880000, 0.0977069, 0.0977069, 0.09741, 0.09741, 7.11305242], [1517108940000, 0.09770673, 0.09770673, 0.09741, 0.09770673, 1.58036809], [1517109000000, 0.09770673, 0.09770673, 0.0975, 0.09751, 20.49006804], [1517109060000, 0.09767, 0.09768, 0.097405, 0.09742, 13.08862655], [1517109120000, 0.09742, 0.09763899, 0.09742, 0.09742, 23.3655744], [1517109180000, 0.09742, 0.09763889, 0.097405, 0.09763874, 11.37945224], [1517109240000, 0.097405, 0.0976, 0.097405, 0.09759999, 17.82521793], [1517109300000, 0.09755, 0.09763875, 0.0973, 0.09763875, 64.62731892], [1517109360000, 0.09731, 0.0975, 0.097216, 0.09723599, 115.58716214], [1517109420000, 0.09723599, 0.09723599, 0.097216, 0.09723599, 17.86088316], [1517109480000, 0.097216, 0.09723599, 0.097216, 0.09723599, 8.31394291], [1517109540000, 0.09721601, 0.09742, 0.097216, 0.09742, 19.33665295], [1517109600000, 0.09724598, 0.09742, 0.097216, 0.097236, 7.8327502], [1517109660000, 0.09741895, 0.0975, 0.09721601, 0.09741895, 9.53113719], [1517109720000, 0.09723599, 0.09763875, 0.09721601, 0.09722599, 7.86770869], [1517109780000, 0.09722599, 0.0977069, 0.09722599, 0.09722599, 11.95235113], [1517109840000, 0.09770199, 0.09770199, 0.09722599, 0.09759979, 5.35992543], [1517109900000, 0.09726753, 0.09759895, 0.0972006, 0.09749999, 42.9827789], [1517109960000, 0.09749981, 0.09749981, 0.0972006, 0.09739393, 165.11053387], [1517110020000, 0.0972156, 0.097694, 0.0972156, 0.09769288, 4.77588065], [1517110080000, 0.09738899, 0.09769193, 0.0972159, 0.09766995, 5.15795918], [1517110140000, 0.09721598, 0.09766989, 0.0971521, 0.0976479, 37.01044042], [1517110200000, 0.0971521, 0.09760786, 0.0971521, 0.0971521, 14.64510119], [1517110260000, 0.09715211, 0.0973999, 0.0971521, 0.09738989, 3.0093103], [1517110320000, 0.09715213, 0.09744205, 0.09715213, 0.09744203, 6.21784089], [1517110380000, 0.09744205, 0.09745, 0.09718212, 0.09745, 11.38840399], [1517110440000, 0.09745, 0.09745, 0.09715213, 0.09744991, 1.50036802], [1517110500000, 0.09744991, 0.09744994, 0.09715213, 0.09744994, 14.82140777], [1517110560000, 0.09744994, 0.09756315, 0.09744994, 0.09756315, 19.35465817], [1517110620000, 0.09755994, 0.097629, 0.09744994, 0.097629, 17.27099375], [1517110680000, 0.097629, 0.0976298, 0.09752271, 0.0976298, 17.1460288], [1517110740000, 0.09752272, 0.0976298, 0.09752272, 0.0976298, 7.48204779], [1517110800000, 0.0976298, 0.0976298, 0.09744994, 0.09744994, 4.70551886], [1517110860000, 0.09744994, 0.09765822, 0.097395, 0.09762979, 7.13719697], [1517110920000, 0.09762979, 0.09762979, 0.09762978, 0.09762978, 10.92558426], [1517110980000, 0.09762978, 0.09762979, 0.09762978, 0.09762978, 11.21558594], [1517111040000, 0.09762978, 0.09762979, 0.09740002, 0.0976, 4.23270008], [1517111100000, 0.09759999, 0.09759999, 0.09740001, 0.09759999, 11.90424877], [1517111160000, 0.09759999, 0.0977489, 0.09759998, 0.09772674, 29.04721943], [1517111220000, 0.09772674, 0.0979, 0.097694, 0.09787792, 18.90557089], [1517111280000, 0.09787069, 0.09789306, 0.097694, 0.097694, 25.69055348], [1517111340000, 0.09788798, 0.09796419, 0.097694, 0.09796419, 12.66094352], [1517111400000, 0.09794999, 0.09794999, 0.0977, 0.09771928, 1.43928595], [1517111460000, 0.09771928, 0.09798884, 0.09771928, 0.09771928, 13.76098652], [1517111520000, 0.09797523, 0.09797524, 0.09771928, 0.09797521, 6.42116291], [1517111580000, 0.09797522, 0.09799998, 0.09797522, 0.09799997, 19.74252493], [1517111640000, 0.09797523, 0.09799999, 0.09797033, 0.09797523, 32.46829599], [1517111700000, 0.09797523, 0.09799999, 0.09772524, 0.09798754, 6.10086685], [1517111760000, 0.09798754, 0.09799998, 0.0977401, 0.09795, 20.72734309], [1517111820000, 0.09795, 0.098, 0.0977401, 0.09799999, 13.84324797], [1517111880000, 0.09799999, 0.098, 0.09774014, 0.09774027, 7.81613719], [1517111940000, 0.098, 0.09800001, 0.09799997, 0.09800001, 31.95562329], [1517112000000, 0.09800001, 0.09802, 0.098, 0.0980002, 11.88779819], [1517112060000, 0.0980002, 0.0980002, 0.09800001, 0.09800018, 12.50277082], [1517112120000, 0.09800019, 0.0980348, 0.09800002, 0.09800003, 8.51086091], [1517112180000, 0.09800017, 0.09800017, 0.09800002, 0.09800002, 4.28374651], [1517112240000, 0.09800002, 0.09801963, 0.09800002, 0.09800042, 9.60517149], [1517112300000, 0.09801963, 0.098216, 0.09800042, 0.0982, 96.2008376], [1517112360000, 0.098216, 0.09826927, 0.09800002, 0.0982, 104.13581882], [1517112420000, 0.0982, 0.09826927, 0.09800002, 0.09800002, 37.45700302], [1517112480000, 0.09826927, 0.09826928, 0.098, 0.09826927, 30.71587461], [1517112540000, 0.09800004, 0.0982699, 0.09800003, 0.09800003, 3.53663152], [1517112600000, 0.09800003, 0.0982543, 0.09799997, 0.09807793, 11.26568798], [1517112660000, 0.09807793, 0.0982543, 0.09799997, 0.09825, 11.75966634], [1517112720000, 0.09807793, 0.0982543, 0.09807792, 0.09825, 5.52245087], [1517112780000, 0.09825, 0.0982543, 0.09807793, 0.09825, 9.60586831], [1517112840000, 0.0982543, 0.09827, 0.09825424, 0.09825431, 42.66953113], [1517112900000, 0.09825431, 0.0983, 0.09807792, 0.09807804, 76.79790927], [1517112960000, 0.09829998, 0.0983, 0.09829034, 0.09829998, 9.97970468], [1517113020000, 0.09829998, 0.0983, 0.09807869, 0.09829034, 17.16754004], [1517113080000, 0.09829034, 0.0983, 0.09807869, 0.0980787, 34.53400053], [1517113140000, 0.09807872, 0.0983, 0.09807872, 0.09829999, 9.95802234], [1517113200000, 0.0983, 0.0983, 0.09829034, 0.0983, 29.83434615], [1517113260000, 0.09829998, 0.0983, 0.09829034, 0.0983, 53.4858155], [1517113320000, 0.09829034, 0.09829997, 0.09808411, 0.09808411, 14.99096144], [1517113380000, 0.09808414, 0.0983, 0.09808414, 0.09825, 56.26744605], [1517113440000, 0.09824997, 0.09824997, 0.0981, 0.09824953, 32.31021635], [1517113500000, 0.09824953, 0.09825, 0.0982, 0.09824953, 5.78478429], [1517113560000, 0.09824955, 0.09825, 0.0981, 0.09824999, 31.43041157], [1517113620000, 0.09824998, 0.0983, 0.09810004, 0.09829999, 26.79333558], [1517113680000, 0.09829997, 0.0983, 0.0981001, 0.098105, 3.31930412], [1517113740000, 0.098105, 0.0983, 0.098105, 0.09829994, 15.32042733], [1517113800000, 0.09829994, 0.0983, 0.09814, 0.09829995, 45.80859331], [1517113860000, 0.0983, 0.0983, 0.09829995, 0.09829999, 17.56888991], [1517113920000, 0.09829996, 0.0983, 0.09829994, 0.09829995, 23.24458859], [1517113980000, 0.0983, 0.09833891, 0.0983, 0.09833891, 20.47137219], [1517114040000, 0.09833843, 0.0984347, 0.098337, 0.0984347, 22.69656398], [1517114100000, 0.09834, 0.0984502, 0.09833895, 0.0984502, 22.25809], [1517114160000, 0.0984502, 0.09846761, 0.09829994, 0.09835602, 39.8439009], [1517114220000, 0.09829995, 0.09841435, 0.09818962, 0.09841428, 14.51141927], [1517114280000, 0.09829996, 0.09841426, 0.09818965, 0.09820192, 12.99013365], [1517114340000, 0.09820192, 0.09841426, 0.09818961, 0.0984, 44.68394741], [1517114400000, 0.0984, 0.09841426, 0.09818961, 0.09835, 38.75862216], [1517114460000, 0.09818961, 0.09841426, 0.09818961, 0.09818961, 22.4529939], [1517114520000, 0.09834999, 0.09835, 0.0981896, 0.0981896, 17.93353407], [1517114580000, 0.0981896, 0.09818961, 0.09814, 0.09814001, 5.63275326], [1517114640000, 0.09814001, 0.09848, 0.09814, 0.09827217, 31.09756801], [1517114700000, 0.09827216, 0.09827217, 0.09812474, 0.09827217, 24.92247133], [1517114760000, 0.09827217, 0.09827218, 0.09814, 0.09814001, 7.60382269], [1517114820000, 0.09827216, 0.0983, 0.09826218, 0.0983, 21.87730734], [1517114880000, 0.0983, 0.0983, 0.0982622, 0.0983, 56.19128971], [1517114940000, 0.09827001, 0.09847218, 0.09827001, 0.09847218, 19.56799024], [1517115000000, 0.09846472, 0.09847218, 0.09846472, 0.09847217, 33.67577855], [1517115060000, 0.09846473, 0.09847218, 0.09846472, 0.09846474, 31.09179391], [1517115120000, 0.09847218, 0.0985, 0.09827002, 0.09846472, 41.49033656], [1517115180000, 0.09849998, 0.09849998, 0.09826218, 0.09831443, 29.88048483], [1517115240000, 0.09828504, 0.09833443, 0.0979724, 0.09813939, 121.57411147], [1517115300000, 0.098, 0.09808577, 0.0976, 0.09761518, 17.53540948], [1517115360000, 0.09761518, 0.09789599, 0.0972425, 0.09779499, 77.78019205], [1517115420000, 0.0972426, 0.09779498, 0.09724253, 0.09776997, 20.35510057], [1517115480000, 0.09724254, 0.09775649, 0.0972425, 0.09769999, 30.66686389], [1517115540000, 0.09769998, 0.09769998, 0.0972425, 0.09769994, 6.34348748], [1517115600000, 0.09769989, 0.09769998, 0.09769989, 0.09769994, 212.2602606], [1517115660000, 0.09769993, 0.0977, 0.09769993, 0.09769999, 44.17969338], [1517115720000, 0.09769993, 0.0978, 0.09769993, 0.09769993, 25.575391], [1517115780000, 0.09769994, 0.0978, 0.09728959, 0.09728959, 42.76804487], [1517115840000, 0.09736515, 0.09778997, 0.09736515, 0.09778995, 12.71851456], [1517115900000, 0.09778995, 0.09797998, 0.0975, 0.09795998, 10.33590889], [1517115960000, 0.09794, 0.09795998, 0.09767814, 0.09793988, 44.86518241], [1517116020000, 0.09767814, 0.0979395, 0.09767814, 0.09767814, 18.72914586], [1517116080000, 0.09767814, 0.09792988, 0.0975, 0.09770001, 24.44236264], [1517116140000, 0.09770001, 0.09791139, 0.09770001, 0.09770001, 15.3893369], [1517116200000, 0.09770001, 0.09793349, 0.09770001, 0.09792988, 16.40485041], [1517116260000, 0.09792988, 0.09793349, 0.09770001, 0.09770001, 10.36138016], [1517116320000, 0.09770001, 0.09793349, 0.0977, 0.097933, 3.90821923], [1517116380000, 0.097933, 0.09795, 0.097933, 0.09793349, 36.27428974], [1517116440000, 0.09793349, 0.09794998, 0.0977, 0.09770001, 15.51487024], [1517116500000, 0.09794499, 0.09794974, 0.09779, 0.0979, 6.3570102], [1517116560000, 0.09794471, 0.09798548, 0.0979447, 0.09794472, 23.78319387], [1517116620000, 0.09798547, 0.09798548, 0.09798547, 0.09798548, 3.11032879], [1517116680000, 0.09798548, 0.09798548, 0.09794472, 0.09798547, 16.31065363], [1517116740000, 0.09798547, 0.098, 0.09794471, 0.09794473, 86.5972083], [1517116800000, 0.09794473, 0.09820729, 0.09794471, 0.09820729, 34.69231284], [1517116860000, 0.09820729, 0.09832999, 0.09794471, 0.09809028, 32.50429734], [1517116920000, 0.09809028, 0.09828997, 0.09794471, 0.09828996, 16.09943068], [1517116980000, 0.09794472, 0.09816427, 0.09794472, 0.09816424, 6.51384275], [1517117040000, 0.09794472, 0.09826497, 0.09794472, 0.09825994, 33.05809811], [1517117100000, 0.09794472, 0.09843, 0.09794472, 0.098, 16.51657138], [1517117160000, 0.09810272, 0.09810272, 0.098, 0.09810272, 10.86189197], [1517117220000, 0.09810271, 0.09810272, 0.09800001, 0.09800001, 17.51121986], [1517117280000, 0.09809029, 0.09825994, 0.09800001, 0.09801002, 18.17202479], [1517117340000, 0.0982, 0.0982, 0.09801002, 0.0982, 33.89334122], [1517117400000, 0.0982, 0.0982, 0.09801002, 0.09801002, 36.31128634], [1517117460000, 0.09801002, 0.09817999, 0.09794472, 0.09800001, 52.91561609], [1517117520000, 0.09800001, 0.09800001, 0.0975, 0.09770001, 27.08212289], [1517117580000, 0.09770001, 0.09787031, 0.0975, 0.09770006, 8.87624913], [1517117640000, 0.09787031, 0.09787031, 0.09770001, 0.09787029, 29.0831653], [1517117700000, 0.09787029, 0.0978703, 0.09770006, 0.09787029, 0.82388944], [1517117760000, 0.09787029, 0.09805, 0.09787029, 0.09805, 20.43769928], [1517117820000, 0.09804999, 0.09804999, 0.09790001, 0.09804999, 6.66464181], [1517117880000, 0.09790001, 0.09804997, 0.09790001, 0.09804996, 12.99262635], [1517117940000, 0.09804997, 0.09804997, 0.09790021, 0.09790021, 11.01458122], [1517118000000, 0.09790021, 0.09804997, 0.0978703, 0.09804997, 13.56780464], [1517118060000, 0.09804999, 0.09804999, 0.09804997, 0.09804999, 35.17675409], [1517118120000, 0.09804999, 0.09819327, 0.09804997, 0.09819321, 10.66370791], [1517118180000, 0.09804997, 0.09804997, 0.09790051, 0.09804997, 9.32048731], [1517118240000, 0.09804996, 0.09804997, 0.09803997, 0.09803997, 10.94418914], [1517118300000, 0.09804997, 0.0982, 0.09790051, 0.0982, 12.56297828], [1517118360000, 0.09819327, 0.098255, 0.09819327, 0.098255, 2.68686909], [1517118420000, 0.0982499, 0.09825994, 0.09819, 0.09825994, 27.88425708], [1517118480000, 0.09825994, 0.09825994, 0.09803997, 0.09803997, 36.37919299], [1517118540000, 0.09825994, 0.09825994, 0.09785001, 0.09805497, 13.95733375], [1517118600000, 0.0982, 0.09825994, 0.09786502, 0.09825994, 31.29111198], [1517118660000, 0.09825994, 0.09825994, 0.09784, 0.09824993, 13.07649212], [1517118720000, 0.09824993, 0.09825994, 0.09786504, 0.09825994, 23.75939023], [1517118780000, 0.09825994, 0.09825994, 0.0982, 0.09825994, 16.66037162], [1517118840000, 0.0982, 0.0982599, 0.0982, 0.0982, 2.06471403], [1517118900000, 0.0982, 0.0984, 0.0982, 0.0984, 85.92507983], [1517118960000, 0.0984, 0.0984, 0.09825994, 0.0984, 16.37124078], [1517119020000, 0.0984, 0.0984, 0.09825994, 0.09839999, 7.09491067], [1517119080000, 0.0984, 0.0984, 0.09826002, 0.0984, 22.5611343], [1517119140000, 0.09826002, 0.0985, 0.09826002, 0.09826002, 45.04867162], [1517119200000, 0.0984, 0.0985, 0.09826002, 0.09837995, 8.61043164], [1517119260000, 0.09839995, 0.09848996, 0.09837995, 0.09837995, 17.5774997], [1517119320000, 0.09837995, 0.09848996, 0.0982601, 0.09837995, 16.64159004], [1517119380000, 0.09837995, 0.09848991, 0.09826002, 0.09826002, 17.28171703], [1517119440000, 0.09826002, 0.0983, 0.0982, 0.0983, 64.59032895], [1517119500000, 0.0983, 0.0983, 0.0982, 0.0982, 8.15579633], [1517119560000, 0.09826, 0.0982998, 0.09800002, 0.09800002, 63.78465298], [1517119620000, 0.09800002, 0.09821, 0.098, 0.09800001, 23.90845046], [1517119680000, 0.09820996, 0.09820996, 0.09800001, 0.09820981, 3.36157417], [1517119740000, 0.09807573, 0.09807573, 0.09770001, 0.09770001, 15.40128901], [1517119800000, 0.09770001, 0.0980605, 0.09770001, 0.09804047, 10.23070172], [1517119860000, 0.0979, 0.09802, 0.0979, 0.09801993, 3.10249868], [1517119920000, 0.0980199, 0.09802334, 0.09790001, 0.09801982, 15.72905887], [1517119980000, 0.09801989, 0.09801989, 0.09790001, 0.09801982, 39.92631879], [1517120040000, 0.09801982, 0.0982099, 0.098, 0.09812894, 12.95487946], [1517120100000, 0.09820986, 0.09820987, 0.098, 0.098, 2.32557893], [1517120160000, 0.098, 0.09812874, 0.098, 0.098, 7.42977156], [1517120220000, 0.098, 0.09812041, 0.098, 0.09812041, 8.02908579], [1517120280000, 0.09812041, 0.09812041, 0.098, 0.098, 12.87033918], [1517120340000, 0.09801501, 0.0981285, 0.098, 0.09807644, 17.50623718], [1517120400000, 0.09807644, 0.09812849, 0.09800002, 0.09800002, 8.87528835], [1517120460000, 0.0981191, 0.0981191, 0.09790002, 0.09811904, 8.44248641], [1517120520000, 0.09790002, 0.09811902, 0.09790002, 0.09811878, 4.85991675], [1517120580000, 0.09790004, 0.09811878, 0.09790002, 0.09790005, 7.57705661], [1517120640000, 0.09790004, 0.09811878, 0.09790004, 0.09800049, 13.07445749], [1517120700000, 0.0981187, 0.0981187, 0.09790002, 0.09800049, 9.20603081], [1517120760000, 0.09800049, 0.09800049, 0.09790003, 0.098, 3.83497425], [1517120820000, 0.09799996, 0.098, 0.09790003, 0.09799996, 4.63732103], [1517120880000, 0.09799999, 0.098, 0.09799996, 0.09799999, 6.57180083], [1517120940000, 0.09799999, 0.098, 0.09790003, 0.09790003, 34.57155894], [1517121000000, 0.098, 0.09800049, 0.09790003, 0.09800049, 4.77982901], [1517121060000, 0.09800049, 0.09800049, 0.09799003, 0.09800049, 0.59229172], [1517121120000, 0.09800049, 0.09811836, 0.09800049, 0.09811836, 5.16654309], [1517121180000, 0.09811835, 0.09811836, 0.09800049, 0.09811835, 5.84848611], [1517121240000, 0.09811835, 0.09811841, 0.0980005, 0.09811841, 28.04896563], [1517121300000, 0.09811895, 0.09811895, 0.09811841, 0.09811895, 26.30464822], [1517121360000, 0.09811894, 0.098125, 0.09811836, 0.098125, 18.78399537], [1517121420000, 0.0981185, 0.09811895, 0.0981185, 0.09811895, 7.32567791], [1517121480000, 0.09811895, 0.0981289, 0.09811895, 0.0981289, 36.22361009], [1517121540000, 0.0981289, 0.09820993, 0.0981289, 0.09820991, 5.70721368], [1517121600000, 0.09820991, 0.09820993, 0.098119, 0.09820991, 25.91320823], [1517121660000, 0.09820993, 0.09829998, 0.0982001, 0.09829997, 115.93188216], [1517121720000, 0.09821, 0.09829999, 0.09821, 0.09829999, 24.24414212], [1517121780000, 0.09829999, 0.09839998, 0.09829999, 0.09837543, 71.07544155], [1517121840000, 0.09837543, 0.0984, 0.09829999, 0.0984, 14.03308607], [1517121900000, 0.0984, 0.0985, 0.09839999, 0.09842001, 16.75386527], [1517121960000, 0.09843, 0.0985, 0.09842, 0.09847922, 23.30193827], [1517122020000, 0.09843, 0.09849994, 0.09843, 0.09843, 19.71633715], [1517122080000, 0.09843, 0.09847834, 0.09839999, 0.09847121, 96.46526965], [1517122140000, 0.09847121, 0.0985, 0.09829999, 0.09829999, 68.29773931], [1517122200000, 0.0985, 0.09855001, 0.0983, 0.09855, 9.44799186], [1517122260000, 0.09850006, 0.09855001, 0.0983, 0.09850005, 10.72860142], [1517122320000, 0.09850005, 0.09850549, 0.09830006, 0.09830006, 5.5124212], [1517122380000, 0.0985047, 0.0985047, 0.09829999, 0.09850008, 28.96912663], [1517122440000, 0.09850008, 0.09850584, 0.09850008, 0.09850584, 20.95209597], [1517122500000, 0.09850584, 0.09850584, 0.09850402, 0.09850402, 13.78359744], [1517122560000, 0.09850402, 0.098505, 0.09850402, 0.09850402, 21.46075504], [1517122620000, 0.098505, 0.09855, 0.09850402, 0.098505, 27.70070214], [1517122680000, 0.098505, 0.09857342, 0.098505, 0.09856965, 13.16695068], [1517122740000, 0.09856965, 0.09858333, 0.098567, 0.09858, 29.02813977], [1517122800000, 0.09857342, 0.09861, 0.09857342, 0.0986, 24.23266953], [1517122860000, 0.0986, 0.09861, 0.09858333, 0.098609, 9.58732727], [1517122920000, 0.09861, 0.09867307, 0.098609, 0.09861488, 10.47958519], [1517122980000, 0.09867307, 0.09867307, 0.09861488, 0.0986149, 14.13778712], [1517123040000, 0.09867307, 0.09868499, 0.0986149, 0.09868499, 11.02663226], [1517123100000, 0.09868499, 0.098699, 0.09868499, 0.098691, 20.27945571], [1517123160000, 0.09869069, 0.0987, 0.0986149, 0.0986149, 24.79733635], [1517123220000, 0.098609, 0.0987, 0.098567, 0.09861491, 12.9433087], [1517123280000, 0.0987, 0.0987, 0.09861491, 0.09861491, 37.82769887], [1517123340000, 0.09861493, 0.09869992, 0.098505, 0.09859006, 31.82533729], [1517123400000, 0.09859006, 0.09861491, 0.09850501, 0.09859006, 11.27327599], [1517123460000, 0.09861491, 0.09861491, 0.09859007, 0.09859007, 20.61616598], [1517123520000, 0.09861486, 0.098681, 0.09859007, 0.09861491, 36.2864424], [1517123580000, 0.09861491, 0.0986999, 0.0986149, 0.09869875, 15.1771175], [1517123640000, 0.09869875, 0.098705, 0.09869875, 0.098705, 11.98397331], [1517123700000, 0.0987, 0.0987322, 0.0986998, 0.0987092, 11.29128275], [1517123760000, 0.09871093, 0.09876495, 0.098705, 0.0987649, 10.80334094], [1517123820000, 0.09876495, 0.098765, 0.0987649, 0.098765, 41.63175485], [1517123880000, 0.0987649, 0.098765, 0.0987649, 0.098765, 62.18684119], [1517123940000, 0.098765, 0.098765, 0.09871, 0.09876499, 166.32982867], [1517124000000, 0.09876499, 0.098765, 0.09871002, 0.09876499, 16.6211222], [1517124060000, 0.09876499, 0.098765, 0.09871, 0.098765, 120.67049179], [1517124120000, 0.098765, 0.098765, 0.09861489, 0.09876399, 11.70936274], [1517124180000, 0.09861491, 0.09861491, 0.09861489, 0.0986149, 31.26547913], [1517124240000, 0.0986149, 0.098765, 0.09861487, 0.0986299, 47.97376573], [1517124300000, 0.098765, 0.098765, 0.09861487, 0.098755, 14.50663156], [1517124360000, 0.09861499, 0.098765, 0.09861487, 0.098755, 26.04092614], [1517124420000, 0.09875489, 0.09875489, 0.09861489, 0.09875487, 18.19724398], [1517124480000, 0.09875478, 0.09875487, 0.09861487, 0.09875477, 22.88248713], [1517124540000, 0.09875477, 0.09875488, 0.09861487, 0.09875477, 27.83835273], [1517124600000, 0.09875488, 0.0988, 0.09875477, 0.0988, 25.69860865], [1517124660000, 0.0988, 0.09882909, 0.09875477, 0.09876547, 15.40254251], [1517124720000, 0.09879, 0.09882909, 0.09876547, 0.09882908, 20.32897337], [1517124780000, 0.09882908, 0.09882999, 0.09876547, 0.09882999, 4.57248466], [1517124840000, 0.09882999, 0.0989, 0.09882999, 0.09889631, 61.36218831], [1517124900000, 0.0988963, 0.09891996, 0.09885, 0.098909, 28.70933522], [1517124960000, 0.098909, 0.098909, 0.09882909, 0.09883908, 58.61086278], [1517125020000, 0.0988963, 0.098909, 0.0988963, 0.09890123, 14.64481959], [1517125080000, 0.09890123, 0.09897959, 0.09890123, 0.09897959, 14.3477727], [1517125140000, 0.09897959, 0.099, 0.09897959, 0.099, 24.93892897], [1517125200000, 0.099, 0.09900001, 0.0989999, 0.09900001, 106.93244538], [1517125260000, 0.09900001, 0.09900008, 0.09899997, 0.09900008, 27.37377121], [1517125320000, 0.09900011, 0.09909, 0.09900008, 0.09909, 38.06240271], [1517125380000, 0.09908999, 0.09909, 0.09899999, 0.09906261, 32.22022346], [1517125440000, 0.09902516, 0.09907272, 0.09902516, 0.09906772, 22.2768998], [1517125500000, 0.09907272, 0.09909, 0.09906772, 0.09908, 56.50449648], [1517125560000, 0.09907272, 0.09909, 0.09907272, 0.09908, 30.0343643], [1517125620000, 0.09908, 0.09909, 0.09892296, 0.09892296, 76.28452654], [1517125680000, 0.0989212, 0.09899, 0.09875486, 0.09875488, 16.25761112], [1517125740000, 0.09875487, 0.09898757, 0.09861709, 0.09898757, 34.06969045], [1517125800000, 0.09898757, 0.09899999, 0.09861709, 0.09861709, 21.20559645], [1517125860000, 0.09897799, 0.098978, 0.09861709, 0.0986271, 31.09734849], [1517125920000, 0.09865209, 0.09897798, 0.0986271, 0.0989779, 5.6625767], [1517125980000, 0.0989779, 0.0989779, 0.09861983, 0.09897789, 5.84130601], [1517126040000, 0.09897789, 0.0989779, 0.09862791, 0.09897788, 7.72165985], [1517126100000, 0.09897788, 0.0989779, 0.09862791, 0.09897788, 4.70183359], [1517126160000, 0.09897788, 0.09897788, 0.09861709, 0.098737, 6.10476355], [1517126220000, 0.098737, 0.09897786, 0.09861399, 0.09873705, 23.78949128], [1517126280000, 0.09897779, 0.0989778, 0.09861399, 0.0987371, 9.44325967], [1517126340000, 0.0987371, 0.09897777, 0.0987371, 0.09897777, 15.30246412], [1517126400000, 0.0987441, 0.09897778, 0.0987441, 0.0988, 9.67811676], [1517126460000, 0.0988, 0.09897777, 0.09873706, 0.09896738, 11.13333672], [1517126520000, 0.0987441, 0.09897777, 0.09873706, 0.0989674, 42.33492414], [1517126580000, 0.0989674, 0.0989674, 0.09873706, 0.09885568, 15.49002313], [1517126640000, 0.0989499, 0.09896739, 0.098744, 0.098744, 11.52136411], [1517126700000, 0.09887068, 0.09896744, 0.098744, 0.09896744, 9.80973031], [1517126760000, 0.09896744, 0.09897, 0.09896743, 0.09897, 26.30654251], [1517126820000, 0.09897, 0.09897779, 0.098969, 0.09897779, 25.45256595], [1517126880000, 0.09897779, 0.098985, 0.09897779, 0.098978, 36.8933572], [1517126940000, 0.098985, 0.09898752, 0.098978, 0.09898752, 37.54434561], [1517127000000, 0.098978, 0.09908999, 0.0989778, 0.09908999, 34.91890476], [1517127060000, 0.09909, 0.0990999, 0.09898752, 0.09908999, 6.89278661], [1517127120000, 0.09908999, 0.09910356, 0.09908999, 0.09908999, 19.68894681], [1517127180000, 0.09910356, 0.09910356, 0.09898752, 0.09908999, 6.49750287], [1517127240000, 0.09908999, 0.09910369, 0.09898752, 0.09898752, 8.31820907], [1517127300000, 0.09908504, 0.09912, 0.098969, 0.09898752, 17.4916451], [1517127360000, 0.09908999, 0.0991, 0.098969, 0.09908999, 20.30881722], [1517127420000, 0.0991, 0.0991, 0.09898752, 0.09898752, 49.34686405], [1517127480000, 0.09908998, 0.09908998, 0.098969, 0.098969, 18.19884381], [1517127540000, 0.098969, 0.09898752, 0.098965, 0.098965, 21.33120531], [1517127600000, 0.098744, 0.098969, 0.098744, 0.09896898, 10.79696693], [1517127660000, 0.09896897, 0.09896898, 0.09896896, 0.09896897, 47.80000096], [1517127720000, 0.09896896, 0.09896898, 0.09896895, 0.09896898, 19.04713017], [1517127780000, 0.09896899, 0.09896899, 0.09896898, 0.09896898, 10.39638022], [1517127840000, 0.09896899, 0.098969, 0.09875, 0.09875001, 16.88387482], [1517127900000, 0.09875001, 0.09894, 0.09875, 0.09894, 13.49165431], [1517127960000, 0.09896898, 0.098969, 0.09894, 0.098969, 2.64945651], [1517128020000, 0.098969, 0.09908999, 0.098969, 0.09899689, 3.93009752], [1517128080000, 0.09908999, 0.09910356, 0.09894, 0.09910355, 10.64419359], [1517128140000, 0.09910355, 0.09910356, 0.09894, 0.09894001, 22.42807346], [1517128200000, 0.0991, 0.0991, 0.09894, 0.09909994, 37.3397436], [1517128260000, 0.09909994, 0.0991, 0.09895, 0.0991, 9.27554927], [1517128320000, 0.0991, 0.09912437, 0.0991, 0.0991241, 14.43264195], [1517128380000, 0.09912756, 0.09916543, 0.09895001, 0.0991194, 86.23299553], [1517128440000, 0.0991194, 0.09912318, 0.09895001, 0.09912318, 30.18703664], [1517128500000, 0.099, 0.09912756, 0.099, 0.099, 12.78134408], [1517128560000, 0.099, 0.09919203, 0.09895001, 0.09895001, 36.390556], [1517128620000, 0.09918597, 0.09918597, 0.09895001, 0.09918571, 27.75228968], [1517128680000, 0.0991857, 0.09918586, 0.0991857, 0.09918586, 6.94514668], [1517128740000, 0.09918571, 0.09918598, 0.099, 0.099, 33.83971716], [1517128800000, 0.099, 0.09919201, 0.09895002, 0.099186, 18.27711164], [1517128860000, 0.09919199, 0.0992, 0.099186, 0.09919366, 8.69822838], [1517128920000, 0.099186, 0.09919366, 0.09905896, 0.09905896, 87.93250879], [1517128980000, 0.09905896, 0.09919366, 0.09896, 0.09909366, 4.40799785], [1517129040000, 0.099192, 0.099192, 0.099, 0.09917306, 22.81374157], [1517129100000, 0.099, 0.09919366, 0.09896, 0.09899999, 36.06164668], [1517129160000, 0.09899999, 0.09919365, 0.09899999, 0.09899999, 46.42685959], [1517129220000, 0.09919363, 0.09919364, 0.09899999, 0.099, 23.2327581], [1517129280000, 0.09903, 0.09903, 0.09899999, 0.09899999, 27.08673767], [1517129340000, 0.099, 0.09903, 0.09899999, 0.09902999, 22.36949231], [1517129400000, 0.09899999, 0.09903, 0.09899999, 0.09902999, 6.10059508], [1517129460000, 0.09902999, 0.09902999, 0.09899999, 0.09902999, 5.40289626], [1517129520000, 0.09902999, 0.09903, 0.099, 0.09903, 15.15175029], [1517129580000, 0.099, 0.09903, 0.09899999, 0.09903, 18.11844596], [1517129640000, 0.09903, 0.09903, 0.099015, 0.09903, 15.92078828], [1517129700000, 0.09903, 0.09903, 0.09899999, 0.099015, 27.14454117], [1517129760000, 0.09899999, 0.099015, 0.09899999, 0.099015, 10.19946215], [1517129820000, 0.099015, 0.09903, 0.099015, 0.099015, 14.46142089], [1517129880000, 0.09903, 0.09919363, 0.099015, 0.09903, 39.90014923], [1517129940000, 0.09903, 0.09919366, 0.09903, 0.09919366, 41.26718555], [1517130000000, 0.09919366, 0.09919366, 0.09909999, 0.0991, 17.21081342], [1517130060000, 0.0991, 0.099195, 0.099065, 0.099065, 10.81419009], [1517130120000, 0.09909999, 0.09919169, 0.099065, 0.09919169, 3.93482733], [1517130180000, 0.099195, 0.099195, 0.099065, 0.09919499, 6.2973635], [1517130240000, 0.09919499, 0.09919499, 0.0991, 0.0991, 12.56872344], [1517130300000, 0.09919166, 0.09919166, 0.099015, 0.09919166, 30.56861665], [1517130360000, 0.0991917, 0.0991917, 0.09919159, 0.0991917, 17.86590172], [1517130420000, 0.0991917, 0.0991917, 0.09899999, 0.0991917, 56.89363808], [1517130480000, 0.0991917, 0.099195, 0.0991917, 0.099195, 8.78550734], [1517130540000, 0.0992, 0.0992, 0.099195, 0.09919999, 18.7984695], [1517130600000, 0.099195, 0.09947654, 0.09914, 0.09914, 71.86889156], [1517130660000, 0.09914, 0.09944194, 0.09899999, 0.09944194, 25.49266037], [1517130720000, 0.09915501, 0.09944194, 0.09899999, 0.09905, 14.30529239], [1517130780000, 0.09941342, 0.09941342, 0.099, 0.09905001, 10.64678365], [1517130840000, 0.09923109, 0.09939895, 0.09905001, 0.09939892, 26.69015538], [1517130900000, 0.09939892, 0.0994, 0.09905005, 0.09905005, 8.55060265], [1517130960000, 0.09905006, 0.09939989, 0.09905003, 0.09939969, 48.64560452], [1517131020000, 0.09939969, 0.0993997, 0.09905005, 0.09905005, 19.75275206], [1517131080000, 0.09939959, 0.09939959, 0.09905003, 0.09905005, 42.11880781], [1517131140000, 0.09928995, 0.09928995, 0.09905003, 0.09928987, 13.24535869], [1517131200000, 0.09906506, 0.09928987, 0.09906506, 0.09928986, 9.93924354], [1517131260000, 0.09928986, 0.09928986, 0.09928976, 0.09928976, 7.55194345], [1517131320000, 0.09906507, 0.09928986, 0.09906507, 0.09928986, 7.2299628], [1517131380000, 0.09906507, 0.09928882, 0.09906505, 0.09924972, 5.99709523], [1517131440000, 0.09924972, 0.09924972, 0.09910085, 0.09924972, 15.16115577], [1517131500000, 0.09924972, 0.09928999, 0.09924968, 0.09928995, 45.35885493], [1517131560000, 0.09928999, 0.09939969, 0.09924968, 0.0993, 9.28720088], [1517131620000, 0.0993, 0.09939968, 0.09924968, 0.09939968, 34.60285689], [1517131680000, 0.09939968, 0.0993997, 0.09939968, 0.0993997, 11.98052673], [1517131740000, 0.0993997, 0.09944194, 0.09939969, 0.09944193, 15.51632382], [1517131800000, 0.09944193, 0.09944194, 0.09939974, 0.09943696, 11.09102028], [1517131860000, 0.09943696, 0.09943696, 0.09939993, 0.09942, 23.5187813], [1517131920000, 0.09942, 0.09943696, 0.09942, 0.09943696, 9.15371329], [1517131980000, 0.09944194, 0.09944194, 0.09943695, 0.09943695, 15.7053542], [1517132040000, 0.09944194, 0.09947, 0.09943699, 0.09947, 104.36594525], [1517132100000, 0.09947, 0.09947, 0.09939993, 0.099437, 24.25616434], [1517132160000, 0.09943699, 0.09947, 0.09939993, 0.09939993, 9.39178322], [1517132220000, 0.09939993, 0.09947, 0.09939993, 0.09939993, 49.38665268], [1517132280000, 0.09939993, 0.09943698, 0.09939993, 0.09943697, 10.72940652], [1517132340000, 0.09943697, 0.09943698, 0.09939993, 0.09939993, 26.53476339], [1517132400000, 0.09939993, 0.09947, 0.09939993, 0.09945, 31.37758014], [1517132460000, 0.09946999, 0.09947, 0.09945, 0.09946995, 17.23844051], [1517132520000, 0.09946995, 0.09947, 0.09945, 0.09947, 18.03332894], [1517132580000, 0.09947, 0.09947, 0.09939993, 0.0994699, 74.65440434], [1517132640000, 0.0994699, 0.09947, 0.09939994, 0.09939994, 4.73802826], [1517132700000, 0.09946984, 0.09951799, 0.09939994, 0.09951799, 173.12096178], [1517132760000, 0.09953002, 0.09972727, 0.09947665, 0.09972727, 112.138681], [1517132820000, 0.09972726, 0.09973966, 0.0994953, 0.09949532, 37.58475157], [1517132880000, 0.09949532, 0.09973966, 0.09949532, 0.0996, 17.87244058], [1517132940000, 0.0996, 0.0997, 0.09959999, 0.09969999, 40.01900875], [1517133000000, 0.099601, 0.09973966, 0.09959999, 0.09969999, 36.5153761], [1517133060000, 0.0997, 0.09973966, 0.099601, 0.09970002, 23.25314133], [1517133120000, 0.09973961, 0.0997588, 0.09970002, 0.09973966, 19.55143451], [1517133180000, 0.09973966, 0.09977, 0.09973961, 0.099765, 14.35447576], [1517133240000, 0.09977, 0.09979626, 0.0997588, 0.09979626, 25.62636673], [1517133300000, 0.09979626, 0.09979626, 0.0997588, 0.09979626, 12.2136917], [1517133360000, 0.099796, 0.09979626, 0.099795, 0.09979626, 51.35704894], [1517133420000, 0.099795, 0.0998, 0.099795, 0.09979626, 23.86527918], [1517133480000, 0.0998, 0.0998, 0.09979626, 0.09979627, 16.54553213], [1517133540000, 0.0998, 0.09999999, 0.09979627, 0.0999, 226.99620451], [1517133600000, 0.0999999, 0.0999999, 0.09991501, 0.09999989, 13.16707503], [1517133660000, 0.09999989, 0.0999999, 0.09999988, 0.0999999, 40.43469105], [1517133720000, 0.09999989, 0.0999999, 0.0999151, 0.09999988, 27.82968754], [1517133780000, 0.09999988, 0.0999999, 0.09999957, 0.0999999, 20.44145299], [1517133840000, 0.0999999, 0.09999997, 0.0999999, 0.09999994, 14.03074471], [1517133900000, 0.09999995, 0.1, 0.09999993, 0.1, 122.37710116], [1517133960000, 0.1, 0.10000001, 0.09999999, 0.1, 677.20540849], [1517134020000, 0.1, 0.10000001, 0.1, 0.1, 45.49097571], [1517134080000, 0.10000001, 0.10000007, 0.1, 0.10000007, 12.51759485], [1517134140000, 0.10000009, 0.10004997, 0.10000009, 0.10004, 7.27953144], [1517134200000, 0.10004, 0.10018395, 0.10004, 0.10018394, 23.0300091], [1517134260000, 0.100175, 0.10032951, 0.100175, 0.10026693, 33.20362271], [1517134320000, 0.10027344, 0.10049999, 0.10026693, 0.10043892, 34.95966587], [1517134380000, 0.10043892, 0.10043892, 0.100329, 0.10036631, 94.4692929], [1517134440000, 0.10043889, 0.1006, 0.1004268, 0.10052717, 211.88793063], [1517134500000, 0.10052717, 0.100651, 0.10052717, 0.10060896, 196.08771278], [1517134560000, 0.100651, 0.10089, 0.10056, 0.10087992, 51.52929082], [1517134620000, 0.10089, 0.1013858, 0.10070309, 0.1012, 304.77213056], [1517134680000, 0.10125001, 0.1015567, 0.10125, 0.1014999, 359.48073799], [1517134740000, 0.10136002, 0.10149999, 0.101317, 0.10136, 116.61363331], [1517134800000, 0.10136, 0.10136002, 0.10125865, 0.10125867, 58.31512939], [1517134860000, 0.10125901, 0.10134898, 0.10125867, 0.10126001, 29.7005472], [1517134920000, 0.10131066, 0.10135539, 0.10126, 0.10135539, 31.216743], [1517134980000, 0.10132899, 0.10143027, 0.10132897, 0.10136003, 50.31068876], [1517135040000, 0.10141527, 0.10177993, 0.10136003, 0.1016584, 154.28584499], [1517135100000, 0.10168608, 0.102, 0.1016, 0.10199997, 281.92273767], [1517135160000, 0.10189002, 0.10203042, 0.10189002, 0.102, 202.02137046], [1517135220000, 0.102, 0.10221999, 0.102, 0.1022, 156.66990785], [1517135280000, 0.1022, 0.10252584, 0.10209997, 0.1025, 145.49167537], [1517135340000, 0.1025, 0.10267833, 0.1025, 0.10261406, 59.9423783], [1517135400000, 0.10256619, 0.1029604, 0.1025156, 0.10289999, 76.87155073], [1517135460000, 0.10289999, 0.10315416, 0.10279707, 0.10315416, 304.92315902], [1517135520000, 0.10316529, 0.10348, 0.10315416, 0.1034, 423.8003258], [1517135580000, 0.1034, 0.104, 0.1032, 0.104, 553.37598592], [1517135640000, 0.104, 0.10419, 0.1036, 0.10419, 293.53052982], [1517135700000, 0.10398457, 0.1045, 0.1037, 0.10398467, 308.50496903], [1517135760000, 0.10398467, 0.10498499, 0.10398466, 0.10398467, 328.79253957], [1517135820000, 0.10448067, 0.10498499, 0.10398467, 0.10418093, 119.14150207], [1517135880000, 0.10418093, 0.104481, 0.10337574, 0.10337574, 201.34399021], [1517135940000, 0.10337574, 0.1038, 0.1031653, 0.10318, 174.26338847], [1517136000000, 0.10318, 0.1035, 0.10229262, 0.10229282, 129.74538745], [1517136060000, 0.10229282, 0.1031653, 0.10229282, 0.10263817, 61.73595835], [1517136120000, 0.10263818, 0.10339998, 0.10263818, 0.10339998, 109.95825317], [1517136180000, 0.10339998, 0.10450001, 0.10310002, 0.10397748, 593.90417735], [1517136240000, 0.1035532, 0.10397746, 0.10320001, 0.10330001, 96.44974782], [1517136300000, 0.10330001, 0.10378496, 0.10320028, 0.10323, 136.00778227], [1517136360000, 0.1033, 0.10333324, 0.1031, 0.10311503, 170.77758312], [1517136420000, 0.10311503, 0.1031532, 0.103, 0.10300001, 64.65296947], [1517136480000, 0.10310002, 0.1031532, 0.10296415, 0.10299846, 67.60368773], [1517136540000, 0.102995, 0.10299846, 0.10280001, 0.102964, 25.73232718], [1517136600000, 0.102964, 0.10299999, 0.1028, 0.10299817, 46.08509799], [1517136660000, 0.10299724, 0.10299749, 0.10239523, 0.10295, 162.0517245], [1517136720000, 0.10295, 0.10295, 0.10250005, 0.10250032, 27.39535238], [1517136780000, 0.10250033, 0.10294955, 0.10250031, 0.10294874, 21.33152624], [1517136840000, 0.10294909, 0.10352318, 0.10294874, 0.103, 72.60897168], [1517136900000, 0.10352309, 0.1035231, 0.103, 0.10300003, 38.51088931], [1517136960000, 0.10349161, 0.10349161, 0.10300006, 0.10305, 42.82478806], [1517137020000, 0.10329594, 0.10329969, 0.103, 0.103, 225.15087073], [1517137080000, 0.103, 0.10329, 0.10295, 0.103, 23.90870274], [1517137140000, 0.103, 0.10327, 0.10295, 0.1032, 74.70959843], [1517137200000, 0.1032, 0.10329002, 0.10295001, 0.10329002, 11.22385367], [1517137260000, 0.10329002, 0.10339182, 0.10329002, 0.10329999, 19.52570398], [1517137320000, 0.10339181, 0.10339181, 0.10329561, 0.10329999, 68.29834421], [1517137380000, 0.10329611, 0.10339178, 0.10329611, 0.10339173, 67.98087528], [1517137440000, 0.10329999, 0.10339796, 0.10329999, 0.10339796, 40.87110333], [1517137500000, 0.10339, 0.10340298, 0.10339, 0.103398, 30.54892574], [1517137560000, 0.103398, 0.1034, 0.10329999, 0.10329999, 172.45050493], [1517137620000, 0.10329999, 0.10329999, 0.103, 0.103, 42.1568317], [1517137680000, 0.10319998, 0.10325645, 0.10289502, 0.10289502, 36.18341004], [1517137740000, 0.10289502, 0.10304602, 0.10280646, 0.103046, 91.73667015], [1517137800000, 0.103044, 0.10304602, 0.10299792, 0.10304602, 174.76668927], [1517137860000, 0.10304602, 0.10339699, 0.10304602, 0.10339699, 30.253267], [1517137920000, 0.10339699, 0.10339699, 0.10330001, 0.1033763, 22.28764402], [1517137980000, 0.1033763, 0.1034, 0.10330001, 0.10339999, 31.63792556], [1517138040000, 0.10340298, 0.103479, 0.10339999, 0.10347898, 26.26225842], [1517138100000, 0.103479, 0.103783, 0.10347898, 0.1037188, 33.07778142], [1517138160000, 0.10378102, 0.1041, 0.1037188, 0.10400003, 25.93107248], [1517138220000, 0.10403, 0.1041857, 0.104, 0.10405, 121.37386016], [1517138280000, 0.10403, 0.10405, 0.104, 0.104031, 76.4228247], [1517138340000, 0.10404998, 0.10418558, 0.104031, 0.10418558, 125.50340818], [1517138400000, 0.10416, 0.10418526, 0.10379004, 0.10399979, 79.59479279], [1517138460000, 0.10399979, 0.10433312, 0.10379, 0.10395, 311.42742794], [1517138520000, 0.10394998, 0.10394998, 0.10379001, 0.10394997, 15.83432933], [1517138580000, 0.10395, 0.104, 0.10394997, 0.10399, 21.17444762], [1517138640000, 0.104, 0.10424739, 0.1039899, 0.10424497, 18.36449402], [1517138700000, 0.10424497, 0.10425, 0.10400002, 0.10425, 125.24984244], [1517138760000, 0.10425, 0.1043, 0.10424497, 0.10424764, 126.67769299], [1517138820000, 0.10424498, 0.1045, 0.10424498, 0.104499, 212.54221865], [1517138880000, 0.104499, 0.10453639, 0.10438228, 0.10441068, 128.00238377], [1517138940000, 0.10441068, 0.10460819, 0.10441068, 0.1046, 26.10886531], [1517139000000, 0.1046, 0.10477769, 0.1045237, 0.1045237, 111.64592756], [1517139060000, 0.1045237, 0.10452371, 0.10424764, 0.10426264, 142.21882965], [1517139120000, 0.10438228, 0.1045237, 0.10424764, 0.10429264, 27.4525036], [1517139180000, 0.10429264, 0.10438229, 0.104015, 0.10438227, 82.27420413], [1517139240000, 0.10415, 0.1045237, 0.10404, 0.104149, 47.12758699], [1517139300000, 0.10406, 0.104377, 0.10402501, 0.104377, 37.44019181], [1517139360000, 0.10437, 0.10437, 0.1041, 0.1042041, 36.96381089], [1517139420000, 0.10435889, 0.10435889, 0.104, 0.10425889, 77.52767679], [1517139480000, 0.10410001, 0.10425889, 0.103948, 0.104, 47.08532236], [1517139540000, 0.104, 0.10419998, 0.103948, 0.10419998, 47.26382581], [1517139600000, 0.10419998, 0.10419999, 0.103948, 0.10419999, 228.5445179], [1517139660000, 0.10419998, 0.10435993, 0.10419998, 0.10425461, 47.80192895], [1517139720000, 0.10425461, 0.1045237, 0.10410002, 0.1044, 12.08570889], [1517139780000, 0.104399, 0.1045, 0.104377, 0.10440001, 12.79514889], [1517139840000, 0.1044, 0.10465783, 0.1044, 0.10465783, 24.66115077], [1517139900000, 0.10465782, 0.1047777, 0.10449989, 0.1045, 102.29234965], [1517139960000, 0.10449989, 0.10469941, 0.1044, 0.10457885, 118.79791242], [1517140020000, 0.10457883, 0.10457883, 0.1044, 0.1044, 32.7005402], [1517140080000, 0.10439999, 0.1046447, 0.10439999, 0.1046447, 31.21715968], [1517140140000, 0.1046, 0.1046447, 0.10434313, 0.10457796, 20.36006161], [1517140200000, 0.10457796, 0.1046447, 0.10440001, 0.10464469, 38.45800911], [1517140260000, 0.1046447, 0.10468888, 0.10464469, 0.10468888, 35.65641738], [1517140320000, 0.1046447, 0.1046994, 0.10440006, 0.10468941, 51.95979882], [1517140380000, 0.10469939, 0.1047777, 0.10468941, 0.104777, 36.76212685], [1517140440000, 0.1047777, 0.1049, 0.1047, 0.10478941, 81.31404136], [1517140500000, 0.10478941, 0.10528974, 0.10478941, 0.10508951, 298.15931313], [1517140560000, 0.1050631, 0.10528972, 0.1049, 0.10524766, 360.93204215], [1517140620000, 0.10506313, 0.10524764, 0.10499999, 0.10499999, 93.78294857], [1517140680000, 0.10499999, 0.10524758, 0.10499999, 0.10522, 34.12414264], [1517140740000, 0.1052, 0.10525, 0.10515, 0.10524752, 103.39095555], [1517140800000, 0.10525, 0.1053763, 0.1052, 0.10529005, 209.31074191], [1517140860000, 0.10526, 0.1053, 0.1052, 0.1052, 272.89392733], [1517140920000, 0.10529005, 0.10549, 0.1052, 0.10545482, 194.58326755], [1517140980000, 0.10545482, 0.10559999, 0.10520001, 0.10558477, 435.24989294], [1517141040000, 0.1055248, 0.10559999, 0.1052, 0.105525, 159.02797372], [1517141100000, 0.105525, 0.10559999, 0.10500001, 0.10532401, 72.88548342], [1517141160000, 0.10518693, 0.105324, 0.10502308, 0.10502309, 65.03108786], [1517141220000, 0.10502309, 0.10505891, 0.1045, 0.10482903, 98.35814512], [1517141280000, 0.1045, 0.10496109, 0.10440001, 0.10489475, 152.23211083], [1517141340000, 0.10489475, 0.10489976, 0.10450001, 0.10484999, 63.56083697], [1517141400000, 0.10484998, 0.10484998, 0.10440002, 0.10450002, 70.20983574], [1517141460000, 0.10450002, 0.1048, 0.1044, 0.10450002, 57.30742971], [1517141520000, 0.10450002, 0.1048, 0.10450002, 0.10450005, 41.45984677], [1517141580000, 0.10477999, 0.10477999, 0.10450005, 0.10477972, 72.73305255], [1517141640000, 0.1045002, 0.10477978, 0.1045, 0.1045, 104.80042446], [1517141700000, 0.1045, 0.10450005, 0.10391264, 0.10391264, 172.67119923], [1517141760000, 0.104, 0.10417549, 0.10388209, 0.10417548, 223.27592512], [1517141820000, 0.10417548, 0.10429625, 0.104, 0.1040003, 55.86562887], [1517141880000, 0.10417549, 0.10439698, 0.1040003, 0.10439324, 137.09749635], [1517141940000, 0.10429624, 0.10449852, 0.10429624, 0.10439698, 141.20801108], [1517142000000, 0.10439698, 0.10447993, 0.10429658, 0.1043702, 31.93647522], [1517142060000, 0.1043702, 0.1043702, 0.10429658, 0.10437019, 14.13885367], [1517142120000, 0.1043702, 0.1043702, 0.10429661, 0.10437, 26.22045426], [1517142180000, 0.10436, 0.10489983, 0.10436, 0.10487, 41.66389411], [1517142240000, 0.10436917, 0.10489983, 0.10436005, 0.10486999, 8.69659101], [1517142300000, 0.10487, 0.10499999, 0.10487, 0.10498, 57.55938227], [1517142360000, 0.10498, 0.10539999, 0.10498, 0.10539999, 33.29224063], [1517142420000, 0.10518694, 0.10539999, 0.10518167, 0.10539994, 72.58371698], [1517142480000, 0.10518701, 0.10539994, 0.10518701, 0.10523, 25.93209943], [1517142540000, 0.10534994, 0.10539989, 0.10523, 0.10535002, 207.31642155], [1517142600000, 0.10539898, 0.10539898, 0.10518701, 0.10518701, 133.5853974], [1517142660000, 0.10524, 0.10535, 0.10518694, 0.10535, 73.28470124], [1517142720000, 0.10535, 0.10535, 0.10487, 0.10515592, 36.75899337], [1517142780000, 0.10510001, 0.1051559, 0.10486999, 0.10486999, 61.76085301], [1517142840000, 0.10489995, 0.10499996, 0.10432797, 0.10496808, 57.04863934], [1517142900000, 0.1049, 0.105, 0.10442983, 0.10442984, 31.35106488], [1517142960000, 0.10487377, 0.10499999, 0.10442991, 0.10487377, 95.99093617], [1517143020000, 0.10487378, 0.105, 0.1044301, 0.10487377, 30.51455422], [1517143080000, 0.10487377, 0.10487377, 0.10460001, 0.1048729, 10.26123707], [1517143140000, 0.10460001, 0.1048729, 0.10443001, 0.10460001, 44.57190196], [1517143200000, 0.10449762, 0.10487241, 0.10435733, 0.10435733, 44.21061345], [1517143260000, 0.10436002, 0.10466631, 0.10429665, 0.10429665, 24.52917475], [1517143320000, 0.10429665, 0.10432486, 0.10429624, 0.1043096, 54.12361476], [1517143380000, 0.1043096, 0.10431, 0.10399999, 0.10399999, 79.42537482], [1517143440000, 0.10399999, 0.10429664, 0.10395631, 0.10426118, 29.47997061], [1517143500000, 0.10426118, 0.10426119, 0.10400004, 0.10426118, 21.6889113], [1517143560000, 0.10426118, 0.10426118, 0.10420804, 0.10420804, 6.88071726], [1517143620000, 0.10420804, 0.10428, 0.10400005, 0.10420804, 30.9558026], [1517143680000, 0.10426099, 0.10426099, 0.10400003, 0.10400005, 29.85185498], [1517143740000, 0.10400005, 0.10400005, 0.103986, 0.103986, 32.49447158], [1517143800000, 0.10399999, 0.10400002, 0.10391266, 0.10391266, 19.57189984], [1517143860000, 0.10394948, 0.10395631, 0.10379669, 0.103956, 61.33989782], [1517143920000, 0.1038, 0.10393448, 0.1036, 0.1036, 26.59904465], [1517143980000, 0.10360409, 0.10360409, 0.1029, 0.10314749, 218.61149839], [1517144040000, 0.10314749, 0.103465, 0.103, 0.1032, 65.1409495], [1517144100000, 0.1033032, 0.1033032, 0.10300002, 0.1032, 37.75096611], [1517144160000, 0.10316001, 0.10345, 0.10300002, 0.10345, 113.46689855], [1517144220000, 0.10345, 0.10415933, 0.10343999, 0.1041, 105.74249363], [1517144280000, 0.1041, 0.1041, 0.10345, 0.1037537, 34.53074994], [1517144340000, 0.1037537, 0.1042, 0.1037537, 0.104, 25.65886793], [1517144400000, 0.104, 0.10426098, 0.10375371, 0.10424998, 60.25945028], [1517144460000, 0.10424998, 0.10424998, 0.104, 0.10424987, 12.19794371], [1517144520000, 0.10424987, 0.10424987, 0.104, 0.104, 11.01635606], [1517144580000, 0.104, 0.10416957, 0.104, 0.10400001, 16.25769831], [1517144640000, 0.10400002, 0.10424994, 0.104, 0.1041, 65.31682656], [1517144700000, 0.1041, 0.10424, 0.1041, 0.1042, 46.7225879], [1517144760000, 0.1042, 0.10424, 0.1041001, 0.10424, 28.6774943], [1517144820000, 0.10424, 0.10487288, 0.104172, 0.10487241, 86.74348587], [1517144880000, 0.10428007, 0.10487241, 0.10428007, 0.1044001, 19.55111771], [1517144940000, 0.1044001, 0.10472, 0.1044, 0.10467954, 76.81760197], [1517145000000, 0.10467954, 0.10475994, 0.1042, 0.10457494, 33.14272796], [1517145060000, 0.10457494, 0.10457494, 0.10420921, 0.104573, 51.83793138], [1517145120000, 0.10421, 0.104573, 0.10417201, 0.104209, 48.09398228], [1517145180000, 0.10457281, 0.10457281, 0.1041, 0.1041, 29.98905881], [1517145240000, 0.10439997, 0.10439997, 0.104, 0.10400001, 245.26696977], [1517145300000, 0.10400001, 0.10439983, 0.10389617, 0.10399997, 36.96543122], [1517145360000, 0.104, 0.10410399, 0.10389615, 0.1041039, 51.85783849], [1517145420000, 0.1041039, 0.1041039, 0.10399997, 0.10410378, 42.5765505], [1517145480000, 0.10410376, 0.1041039, 0.10389615, 0.10410376, 55.57091814], [1517145540000, 0.10399997, 0.10410399, 0.1038, 0.1038, 35.83632206], [1517145600000, 0.10386936, 0.1041039, 0.10357807, 0.10389615, 25.16558272], [1517145660000, 0.10389615, 0.10410399, 0.10386935, 0.10386936, 47.63407124], [1517145720000, 0.104, 0.104, 0.10386935, 0.10386937, 42.09325334], [1517145780000, 0.10386937, 0.104, 0.10386935, 0.1039, 20.47110572], [1517145840000, 0.1039, 0.10410399, 0.1038694, 0.10397, 17.89971706], [1517145900000, 0.10410399, 0.10437, 0.10410399, 0.104104, 44.97987146], [1517145960000, 0.10436997, 0.10436997, 0.10392301, 0.10392301, 15.62151891], [1517146020000, 0.10392301, 0.10424767, 0.10392301, 0.10397011, 8.89894116], [1517146080000, 0.10397011, 0.10420632, 0.10397011, 0.10397011, 4.43189923], [1517146140000, 0.10419, 0.10430863, 0.10386935, 0.10419, 117.35558083], [1517146200000, 0.10386935, 0.10419, 0.10386935, 0.10417998, 10.7949732], [1517146260000, 0.10417995, 0.10417995, 0.10386935, 0.10387004, 13.31538539], [1517146320000, 0.10387004, 0.10415864, 0.10386995, 0.10399999, 5.3883012], [1517146380000, 0.10389, 0.10403738, 0.10389, 0.10399999, 17.26254934], [1517146440000, 0.10399999, 0.10484998, 0.10399998, 0.10399999, 95.5126918], [1517146500000, 0.10461021, 0.10461023, 0.10399999, 0.10432401, 6.73493816], [1517146560000, 0.10432401, 0.10451815, 0.10432401, 0.10432424, 4.89004815], [1517146620000, 0.10451814, 0.10451814, 0.10432424, 0.10451806, 4.92907243], [1517146680000, 0.10451806, 0.10451806, 0.10432425, 0.10432431, 17.25355343], [1517146740000, 0.104325, 0.10451811, 0.104325, 0.10451804, 8.22846512], [1517146800000, 0.10451804, 0.10451814, 0.10451804, 0.10451814, 37.72758566], [1517146860000, 0.10461021, 0.10474999, 0.10451798, 0.10474999, 30.58209236], [1517146920000, 0.10474999, 0.10474999, 0.10451798, 0.10451798, 47.10629912], [1517146980000, 0.10474995, 0.10474996, 0.10451798, 0.10474992, 11.31700354], [1517147040000, 0.10474992, 0.10486, 0.10451898, 0.10469531, 26.45764534], [1517147100000, 0.10469531, 0.10486, 0.10433, 0.10485995, 52.30291053], [1517147160000, 0.10433, 0.10485994, 0.10433, 0.10435228, 2.99602866], [1517147220000, 0.10435152, 0.1048598, 0.10435152, 0.1048598, 6.78395001], [1517147280000, 0.10483999, 0.10483999, 0.10435229, 0.104438, 8.10129226], [1517147340000, 0.10481351, 0.10481351, 0.104438, 0.1045, 49.69167303], [1517147400000, 0.1045, 0.1047909, 0.10433, 0.10479047, 83.833054], [1517147460000, 0.1045009, 0.10479048, 0.104438, 0.1045, 18.28938354], [1517147520000, 0.10474998, 0.10474998, 0.10450001, 0.10450003, 5.07303834], [1517147580000, 0.10474948, 0.1047495, 0.10450004, 0.10474929, 8.96219182], [1517147640000, 0.1047295, 0.10479023, 0.10452, 0.10479023, 27.06958603], [1517147700000, 0.10479023, 0.10485995, 0.1047295, 0.10485995, 38.52716572], [1517147760000, 0.10485995, 0.10499665, 0.10479023, 0.10485991, 28.71732742], [1517147820000, 0.10485991, 0.10485995, 0.10479988, 0.10485995, 107.80159106], [1517147880000, 0.10485995, 0.10498, 0.1048599, 0.10485995, 30.83110361], [1517147940000, 0.10498, 0.105, 0.10485995, 0.10498, 27.30978768], [1517148000000, 0.10498, 0.10498, 0.10485995, 0.10485995, 16.00479381], [1517148060000, 0.10496478, 0.10496478, 0.10485995, 0.1048973, 18.94958361], [1517148120000, 0.10489728, 0.1048973, 0.10485995, 0.10489729, 21.19254246], [1517148180000, 0.10489729, 0.1049, 0.10452003, 0.10489727, 48.48603784], [1517148240000, 0.10479988, 0.10497998, 0.10452001, 0.10452001, 24.42058298], [1517148300000, 0.10452001, 0.10497, 0.10452, 0.10484978, 16.33290723], [1517148360000, 0.10484978, 0.10484978, 0.1045, 0.1045009, 60.93314912], [1517148420000, 0.10451, 0.10467002, 0.1045009, 0.10467001, 32.63192928], [1517148480000, 0.10467002, 0.10467002, 0.1045, 0.1045, 102.72613041], [1517148540000, 0.10460051, 0.10465, 0.1045, 0.10465, 61.47428703], [1517148600000, 0.10465, 0.10465, 0.1045, 0.10465, 27.21369748], [1517148660000, 0.10465, 0.10465, 0.1045, 0.10465, 28.45718713], [1517148720000, 0.10465, 0.10484964, 0.10464998, 0.10464998, 28.6059339], [1517148780000, 0.10467383, 0.10485, 0.1045, 0.10465, 83.43266548], [1517148840000, 0.10465, 0.10499919, 0.10432501, 0.10489999, 173.06897039], [1517148900000, 0.10464997, 0.10497208, 0.10432501, 0.10464884, 64.34594312], [1517148960000, 0.10464884, 0.10487981, 0.10464884, 0.10464884, 69.01775201], [1517149020000, 0.10464884, 0.10479957, 0.10464884, 0.1047994, 47.96766183], [1517149080000, 0.1047991, 0.1047991, 0.104346, 0.10469978, 3.20263666], [1517149140000, 0.104515, 0.10469895, 0.10449999, 0.10469696, 7.52249741], [1517149200000, 0.104515, 0.10469596, 0.10449998, 0.1045, 20.65606078], [1517149260000, 0.10469396, 0.10469396, 0.1045, 0.10455, 3.8782017], [1517149320000, 0.10467991, 0.10467991, 0.10450003, 0.10455, 16.07362057], [1517149380000, 0.10455, 0.1046759, 0.10450003, 0.10466999, 6.84885098], [1517149440000, 0.10466999, 0.10466999, 0.10450003, 0.10450003, 7.46696301], [1517149500000, 0.10454999, 0.10467587, 0.10450003, 0.10455, 3.68044013], [1517149560000, 0.1046, 0.1046, 0.10455, 0.10459999, 8.12639008], [1517149620000, 0.1046, 0.1046, 0.10456, 0.10459, 18.90296744], [1517149680000, 0.1046, 0.1046, 0.10455, 0.1046, 24.11179962], [1517149740000, 0.1046, 0.1046, 0.104562, 0.1046, 19.07474198], [1517149800000, 0.10459999, 0.1046, 0.1045, 0.10459997, 27.84762414], [1517149860000, 0.10459002, 0.10459999, 0.10455, 0.10459997, 9.42139472], [1517149920000, 0.10459999, 0.1046, 0.1045901, 0.1046, 15.89629923], [1517149980000, 0.1045902, 0.1046, 0.10455, 0.1045902, 28.209567], [1517150040000, 0.1045902, 0.1045902, 0.10442294, 0.10442294, 16.31331895], [1517150100000, 0.10442294, 0.1045902, 0.104346, 0.10454995, 41.9718893], [1517150160000, 0.1045902, 0.1046, 0.104347, 0.104347, 24.21454677], [1517150220000, 0.10453495, 0.10459861, 0.10453495, 0.10454995, 16.39379773], [1517150280000, 0.10434701, 0.10454996, 0.10434701, 0.1045499, 7.82410132], [1517150340000, 0.10454705, 0.10454993, 0.10434702, 0.1045499, 18.15251081], [1517150400000, 0.10454706, 0.10454993, 0.10434704, 0.10434704, 40.13459367], [1517150460000, 0.10454991, 0.10454996, 0.10454991, 0.10454993, 12.50027137], [1517150520000, 0.10454993, 0.10454995, 0.10434704, 0.10434704, 31.15758308], [1517150580000, 0.104549, 0.104549, 0.10434701, 0.10434705, 25.43012139], [1517150640000, 0.10434705, 0.1045475, 0.104325, 0.1045475, 24.03209005], [1517150700000, 0.10435, 0.1045475, 0.10435, 0.1044159, 9.60045679], [1517150760000, 0.1044159, 0.10454636, 0.10439999, 0.10439999, 15.58611541], [1517150820000, 0.10439999, 0.104545, 0.10432875, 0.10454498, 50.61972201], [1517150880000, 0.1044159, 0.10444834, 0.1043243, 0.1043243, 20.97923831], [1517150940000, 0.1043243, 0.10441586, 0.10428118, 0.10428118, 22.21539245], [1517151000000, 0.10428116, 0.10428118, 0.104104, 0.10428116, 19.91898023], [1517151060000, 0.10428116, 0.10428116, 0.1041, 0.10427696, 10.15656845], [1517151120000, 0.10427696, 0.10427696, 0.10400002, 0.104115, 20.39635835], [1517151180000, 0.104115, 0.104115, 0.1040001, 0.10411498, 41.58965119], [1517151240000, 0.10411498, 0.10411499, 0.10400002, 0.10402, 27.46120675], [1517151300000, 0.10411494, 0.104115, 0.10402, 0.10411499, 22.53914913], [1517151360000, 0.10411499, 0.10427688, 0.10402, 0.10402, 48.87535538], [1517151420000, 0.10402, 0.1041149, 0.10402, 0.10411482, 11.61243156], [1517151480000, 0.10411479, 0.10411483, 0.104, 0.104, 42.5983373], [1517151540000, 0.10400003, 0.10404275, 0.104, 0.10404269, 16.5570107], [1517151600000, 0.10404269, 0.10411482, 0.10387004, 0.1041148, 36.04248405], [1517151660000, 0.10411478, 0.10411482, 0.10387007, 0.10387007, 26.90652203], [1517151720000, 0.10408549, 0.10408549, 0.10387013, 0.104, 61.60745918], [1517151780000, 0.104, 0.104, 0.10387013, 0.10388, 29.59464328], [1517151840000, 0.10388, 0.10399997, 0.10388, 0.10399994, 4.22331267], [1517151900000, 0.10399994, 0.10399995, 0.103888, 0.103888, 11.41161568], [1517151960000, 0.10389508, 0.10399984, 0.10388, 0.10399963, 39.47614667], [1517152020000, 0.10388, 0.1039996, 0.10387015, 0.103974, 106.31728292], [1517152080000, 0.103888, 0.103974, 0.10387015, 0.10387015, 19.75429316], [1517152140000, 0.10397294, 0.10397294, 0.10387015, 0.10387015, 39.69266603], [1517152200000, 0.10397293, 0.10397297, 0.10387012, 0.10397293, 12.54415738], [1517152260000, 0.10397293, 0.10399, 0.10387012, 0.103974, 12.7088725], [1517152320000, 0.103974, 0.103974, 0.10390476, 0.10391, 6.39111308], [1517152380000, 0.103945, 0.103945, 0.1038449, 0.103945, 25.97179261], [1517152440000, 0.103945, 0.103945, 0.1038, 0.1038062, 15.12268313], [1517152500000, 0.1038062, 0.103945, 0.10379066, 0.1038062, 25.15563367], [1517152560000, 0.10380619, 0.103944, 0.10380619, 0.103944, 10.38337327], [1517152620000, 0.103944, 0.103944, 0.10394, 0.10394, 12.47335299], [1517152680000, 0.10394, 0.103944, 0.10380619, 0.10393993, 47.13082923], [1517152740000, 0.10393986, 0.10393993, 0.1036849, 0.10393987, 10.24968515], [1517152800000, 0.10393978, 0.10393991, 0.103635, 0.10393989, 18.29027534], [1517152860000, 0.10393989, 0.10393989, 0.103656, 0.10393987, 9.78079641], [1517152920000, 0.10393985, 0.10393985, 0.10362617, 0.103635, 24.32030793], [1517152980000, 0.103635, 0.10385622, 0.10339663, 0.10385622, 46.38745941], [1517153040000, 0.10385622, 0.10397399, 0.10362617, 0.10385623, 78.45088003], [1517153100000, 0.10385622, 0.10397356, 0.103531, 0.10360352, 41.32439326], [1517153160000, 0.10360352, 0.10360352, 0.10335034, 0.1036, 41.21078742], [1517153220000, 0.1035353, 0.10360352, 0.10335001, 0.10335003, 98.25979024], [1517153280000, 0.1036, 0.1036, 0.10335003, 0.10345894, 27.19003069], [1517153340000, 0.10345894, 0.1036, 0.10342658, 0.10359999, 20.05477658], [1517153400000, 0.10358, 0.1036, 0.10353001, 0.1036, 26.96639524], [1517153460000, 0.10359999, 0.1036, 0.10335003, 0.10353001, 43.25796084], [1517153520000, 0.10335003, 0.10353001, 0.10324679, 0.10352999, 31.05261763], [1517153580000, 0.10352999, 0.10352999, 0.1032468, 0.103529, 23.23503301], [1517153640000, 0.10325002, 0.103529, 0.10325002, 0.10329671, 18.44790302], [1517153700000, 0.1034, 0.10352899, 0.10319352, 0.1032969, 26.00577542], [1517153760000, 0.1034, 0.10351231, 0.103317, 0.10351, 8.1675628], [1517153820000, 0.10351, 0.10351, 0.10341001, 0.10350999, 11.82357355], [1517153880000, 0.10350999, 0.10350999, 0.10341003, 0.10341004, 8.22642848], [1517153940000, 0.1035099, 0.1035099, 0.10341004, 0.10341005, 4.04606042], [1517154000000, 0.10350989, 0.1035099, 0.10341005, 0.1035099, 27.41810842], [1517154060000, 0.1035099, 0.10351, 0.1035, 0.1035099, 52.32959057], [1517154120000, 0.10351, 0.1036, 0.10351, 0.10357, 14.73586136], [1517154180000, 0.10357, 0.10391999, 0.10353001, 0.103769, 16.77217257], [1517154240000, 0.103769, 0.103769, 0.10354, 0.10376872, 9.26893677], [1517154300000, 0.1037687, 0.10376872, 0.10341006, 0.10343657, 29.96099279], [1517154360000, 0.10343657, 0.10376857, 0.10333325, 0.103542, 74.43317941], [1517154420000, 0.1037682, 0.10376822, 0.10341006, 0.10343854, 24.65163579], [1517154480000, 0.10343854, 0.10376822, 0.10341003, 0.10376822, 35.93342327], [1517154540000, 0.10376822, 0.10376822, 0.10341003, 0.10376821, 28.81188054], [1517154600000, 0.10376821, 0.10376822, 0.1036, 0.1036, 8.3945631], [1517154660000, 0.1036, 0.1036, 0.10330676, 0.1036, 44.61629226], [1517154720000, 0.1036, 0.1036, 0.10333567, 0.10359999, 28.37462399], [1517154780000, 0.10359999, 0.1036, 0.10333567, 0.1036, 35.82327986], [1517154840000, 0.1036, 0.1036, 0.10343901, 0.1036, 15.61213933], [1517154900000, 0.10343902, 0.1035, 0.10343901, 0.1035, 6.23891369], [1517154960000, 0.10343902, 0.1035, 0.10343901, 0.10343902, 14.20962659], [1517155020000, 0.1035, 0.1035, 0.10343901, 0.103471, 17.68847546], [1517155080000, 0.103461, 0.10349999, 0.103336, 0.10347098, 19.46773233], [1517155140000, 0.10333601, 0.10347098, 0.10331534, 0.103336, 2.52464149], [1517155200000, 0.103336, 0.10347098, 0.1032, 0.103336, 8.40466838], [1517155260000, 0.103336, 0.1035, 0.103336, 0.1035, 10.99253359], [1517155320000, 0.1035, 0.1035, 0.10347095, 0.10347096, 26.38434731], [1517155380000, 0.10333601, 0.10347098, 0.10320001, 0.10347, 52.85298077], [1517155440000, 0.10347, 0.10347098, 0.10347, 0.10347098, 24.68930791], [1517155500000, 0.10347097, 0.10347098, 0.103229, 0.10347, 5.90150324], [1517155560000, 0.10347, 0.10347, 0.103229, 0.10346991, 3.8501502], [1517155620000, 0.1034699, 0.10347097, 0.10336654, 0.10336654, 42.86110255], [1517155680000, 0.10336654, 0.10347, 0.10324227, 0.10347, 5.78686627], [1517155740000, 0.10324259, 0.10347, 0.10324257, 0.10346998, 8.03912373], [1517155800000, 0.10346998, 0.10347098, 0.1032426, 0.10346991, 12.66406797], [1517155860000, 0.10346991, 0.10347098, 0.10346991, 0.10347097, 3.85288262], [1517155920000, 0.10347097, 0.10347098, 0.10346991, 0.10347092, 19.43928792], [1517155980000, 0.10347092, 0.10347098, 0.10346991, 0.10347098, 51.94357322], [1517156040000, 0.10346991, 0.10347098, 0.10346991, 0.10347097, 43.24675265], [1517156100000, 0.10347097, 0.10347097, 0.10326029, 0.10326029, 68.90189831], [1517156160000, 0.10336029, 0.10344914, 0.10310658, 0.10318, 80.37544931], [1517156220000, 0.10318, 0.10345028, 0.10310658, 0.10318, 20.32264659], [1517156280000, 0.10314329, 0.10318, 0.10303252, 0.10309389, 13.91025801], [1517156340000, 0.10303536, 0.10327, 0.103, 0.103, 69.26821146], [1517156400000, 0.103, 0.10300001, 0.1029999, 0.10300001, 30.38966676], [1517156460000, 0.10300001, 0.10300001, 0.10284209, 0.10289711, 17.05089809], [1517156520000, 0.10300001, 0.10349999, 0.10289711, 0.10344987, 10.98677989], [1517156580000, 0.10344987, 0.10344987, 0.10289616, 0.10342397, 46.03115259], [1517156640000, 0.103423, 0.10342396, 0.10289616, 0.10319998, 9.01169729], [1517156700000, 0.10319998, 0.10319998, 0.103, 0.103, 5.07877162], [1517156760000, 0.103, 0.10300002, 0.10289616, 0.10300002, 7.10147783], [1517156820000, 0.10300002, 0.1034499, 0.10300002, 0.1034, 19.04679464], [1517156880000, 0.1034, 0.10344981, 0.10300003, 0.1034, 21.45866277], [1517156940000, 0.10342918, 0.10344987, 0.10300004, 0.10344987, 8.52083619], [1517157000000, 0.1032, 0.10341995, 0.1032, 0.1032, 0.57329481], [1517157060000, 0.1032, 0.103488, 0.10300627, 0.1032, 13.81350829], [1517157120000, 0.10348699, 0.10348699, 0.1032, 0.1032, 30.66088774], [1517157180000, 0.10343, 0.10343, 0.1032, 0.10320001, 14.07502709], [1517157240000, 0.10342829, 0.10342922, 0.10320001, 0.10320002, 6.35088156], [1517157300000, 0.10342921, 0.10342922, 0.1034292, 0.1034292, 0.94062884], [1517157360000, 0.1034292, 0.10343, 0.10320003, 0.10342919, 24.74527249], [1517157420000, 0.10342919, 0.10342999, 0.10342919, 0.10342919, 10.62356569], [1517157480000, 0.10342999, 0.10342999, 0.10342915, 0.10342915, 5.14700645], [1517157540000, 0.10342915, 0.10342999, 0.1033, 0.10342915, 28.52239205], [1517157600000, 0.10342915, 0.10342915, 0.10321, 0.10321, 11.82567505], [1517157660000, 0.10321, 0.10342915, 0.10320002, 0.10342915, 6.52829522], [1517157720000, 0.10320999, 0.10342915, 0.10320003, 0.10321, 7.89681373], [1517157780000, 0.10320999, 0.10321, 0.10320003, 0.10321, 8.1519885], [1517157840000, 0.10320003, 0.103429, 0.10320002, 0.10320003, 4.79553811], [1517157900000, 0.10320003, 0.103429, 0.1032, 0.10342898, 45.16392149], [1517157960000, 0.10342915, 0.10342915, 0.103428, 0.103428, 39.33756372], [1517158020000, 0.103428, 0.10342915, 0.103428, 0.103428, 2.30736429], [1517158080000, 0.103428, 0.10342898, 0.10320012, 0.10320015, 9.70453719], [1517158140000, 0.10320015, 0.10320015, 0.10320003, 0.10320003, 11.44343776], [1517158200000, 0.10320003, 0.10342915, 0.1032, 0.10342914, 15.63024265], [1517158260000, 0.10320016, 0.10342915, 0.10320016, 0.10342914, 13.48071001], [1517158320000, 0.10342914, 0.10342915, 0.10341914, 0.10341914, 22.72659032], [1517158380000, 0.10341914, 0.10342914, 0.10341914, 0.10341914, 17.41926222], [1517158440000, 0.10341915, 0.10342914, 0.10341914, 0.10341914, 14.72464996], [1517158500000, 0.10342914, 0.103459, 0.10341914, 0.103459, 26.65340166], [1517158560000, 0.10343, 0.10348699, 0.10341914, 0.10348699, 16.14345268], [1517158620000, 0.10341914, 0.10341916, 0.10341914, 0.10341914, 10.14243272], [1517158680000, 0.10348697, 0.10348697, 0.10341914, 0.10341914, 11.04626987], [1517158740000, 0.10345899, 0.10345899, 0.10341914, 0.10341914, 11.02430306], [1517158800000, 0.10341998, 0.10342, 0.10341914, 0.10342, 8.18650858], [1517158860000, 0.10341914, 0.10345899, 0.10320017, 0.10320017, 87.17861204], [1517158920000, 0.10341914, 0.10341914, 0.1032, 0.10341913, 91.72787014], [1517158980000, 0.10341897, 0.10341914, 0.10341897, 0.10341897, 2.07091304], [1517159040000, 0.10341913, 0.10341932, 0.1032, 0.1032, 20.06917717], [1517159100000, 0.10341905, 0.10341932, 0.1032, 0.10320001, 3.37197031], [1517159160000, 0.1032, 0.10321, 0.1032, 0.1032, 17.73022806], [1517159220000, 0.1032, 0.10320001, 0.1032, 0.1032, 19.50316212], [1517159280000, 0.10315, 0.1032, 0.10284206, 0.10300002, 13.38167093], [1517159340000, 0.10300002, 0.10300002, 0.103, 0.10300002, 7.89872986], [1517159400000, 0.10300002, 0.10308304, 0.10300001, 0.10300002, 13.4780249], [1517159460000, 0.10300001, 0.10318176, 0.10300001, 0.10314956, 9.64732174], [1517159520000, 0.10314956, 0.10317176, 0.10300001, 0.10316176, 25.94789583], [1517159580000, 0.10316176, 0.10320001, 0.10314956, 0.10314956, 13.65724624], [1517159640000, 0.10314956, 0.10320001, 0.10314956, 0.10320001, 12.82169469], [1517159700000, 0.10314956, 0.10341928, 0.10314956, 0.10340925, 6.48727544], [1517159760000, 0.10340925, 0.10341928, 0.10314956, 0.1031501, 7.89798503], [1517159820000, 0.10316955, 0.10341928, 0.1031501, 0.10315011, 17.73048896], [1517159880000, 0.10341928, 0.10341928, 0.1031701, 0.10341923, 16.59406112], [1517159940000, 0.1032, 0.10341924, 0.10319029, 0.10341924, 57.40039951], [1517160000000, 0.10341908, 0.10359999, 0.10319029, 0.10359999, 47.01561923], [1517160060000, 0.10359999, 0.10391496, 0.10341908, 0.10359998, 96.02356687], [1517160120000, 0.10359998, 0.104, 0.10359998, 0.10359998, 81.658279], [1517160180000, 0.10359998, 0.10399997, 0.10359998, 0.10391994, 136.75543664], [1517160240000, 0.10391994, 0.10391999, 0.10360999, 0.10362, 9.28114045], [1517160300000, 0.10361, 0.10391947, 0.10360999, 0.10361, 23.14054993], [1517160360000, 0.10362, 0.10362, 0.10361, 0.10361, 28.30233504], [1517160420000, 0.10361, 0.10362, 0.10361, 0.10361001, 12.69870794], [1517160480000, 0.103611, 0.10362, 0.10361001, 0.10362, 2.41905007], [1517160540000, 0.10362, 0.10362, 0.10361003, 0.10362, 25.2076151], [1517160600000, 0.10362, 0.10362, 0.10361001, 0.10362, 32.78966761], [1517160660000, 0.10362, 0.10362, 0.10361001, 0.10362, 7.73440678], [1517160720000, 0.10362, 0.10381111, 0.10362, 0.10362, 50.89158242], [1517160780000, 0.10362, 0.10393, 0.10361001, 0.10361001, 16.40994307], [1517160840000, 0.10363, 0.10363, 0.10361, 0.10361, 15.08155765], [1517160900000, 0.10361001, 0.103612, 0.10361, 0.10361001, 1.55100325], [1517160960000, 0.103612, 0.10378999, 0.103612, 0.1037, 41.04899173], [1517161020000, 0.10376998, 0.10399999, 0.1037, 0.1037, 28.44258394], [1517161080000, 0.10370001, 0.10370001, 0.1037, 0.1037, 32.84688663], [1517161140000, 0.10370001, 0.10370001, 0.1037, 0.1037, 15.34628837], [1517161200000, 0.10370001, 0.10399998, 0.1037, 0.1037, 12.46687711], [1517161260000, 0.10399991, 0.10399993, 0.10370001, 0.10370001, 12.01568434], [1517161320000, 0.10399969, 0.10399969, 0.10370001, 0.10370011, 20.43902174], [1517161380000, 0.10370102, 0.1038, 0.103701, 0.1038, 6.71399494], [1517161440000, 0.1038, 0.104, 0.10379998, 0.104, 21.87773957], [1517161500000, 0.104, 0.104, 0.10370202, 0.10378998, 12.71969584], [1517161560000, 0.10379998, 0.10379998, 0.10378998, 0.10379998, 19.83543014], [1517161620000, 0.10378998, 0.10379998, 0.10378998, 0.10379, 13.04086418], [1517161680000, 0.10379, 0.10379998, 0.10378998, 0.10378998, 11.73681852], [1517161740000, 0.10379998, 0.10379998, 0.10378998, 0.10379998, 24.7225802], [1517161800000, 0.10379997, 0.10379997, 0.1037, 0.10370213, 12.45573311], [1517161860000, 0.10370213, 0.10378998, 0.10361201, 0.10361202, 10.55418801], [1517161920000, 0.10361202, 0.10379998, 0.10361201, 0.10379997, 10.31153332], [1517161980000, 0.10379998, 0.1038, 0.10378998, 0.10379998, 33.93124355], [1517162040000, 0.10379998, 0.1038, 0.10379998, 0.1038, 14.45601277], [1517162100000, 0.1038, 0.10389999, 0.10379998, 0.10379999, 7.13587656], [1517162160000, 0.10379998, 0.10399999, 0.10379998, 0.10399999, 12.42005238], [1517162220000, 0.10399997, 0.10399999, 0.10379998, 0.10390379, 4.65574989], [1517162280000, 0.10390379, 0.10399998, 0.10390379, 0.10395379, 5.60258589], [1517162340000, 0.10395379, 0.10399999, 0.10395379, 0.10399999, 4.33287697], [1517162400000, 0.10399997, 0.104332, 0.10399997, 0.10399997, 118.6968565], [1517162460000, 0.10399997, 0.10399999, 0.10399997, 0.10399999, 5.74295409], [1517162520000, 0.10399999, 0.104332, 0.10399997, 0.10399999, 6.7260624], [1517162580000, 0.10420527, 0.105, 0.10399997, 0.10399997, 366.246566], [1517162640000, 0.10399997, 0.1045, 0.10395379, 0.10409778, 58.98258675], [1517162700000, 0.10409778, 0.10448987, 0.104, 0.10447981, 13.71104553], [1517162760000, 0.1044798, 0.1044798, 0.10409778, 0.10447807, 28.73434593], [1517162820000, 0.10447803, 0.10447807, 0.10447404, 0.10447806, 23.79899155], [1517162880000, 0.10447806, 0.10447982, 0.10447806, 0.10447982, 20.32821787], [1517162940000, 0.1045, 0.10469739, 0.10447982, 0.10448, 21.38238469], [1517163000000, 0.10468312, 0.10475, 0.10447982, 0.1047, 9.91276247], [1517163060000, 0.1047, 0.10481204, 0.1047, 0.1047, 5.62560696], [1517163120000, 0.10471, 0.105, 0.10447982, 0.104812, 39.06228386], [1517163180000, 0.104812, 0.10500001, 0.10447985, 0.10447985, 152.33242509], [1517163240000, 0.10447985, 0.10500022, 0.10447985, 0.1049852, 4.34375405], [1517163300000, 0.1049852, 0.1049852, 0.104659, 0.10498499, 28.04799654], [1517163360000, 0.104985, 0.105, 0.104659, 0.104992, 19.50536791], [1517163420000, 0.104992, 0.104992, 0.104659, 0.10465901, 2.73043883], [1517163480000, 0.10498498, 0.104985, 0.10465901, 0.104766, 6.68148958], [1517163540000, 0.104985, 0.1050993, 0.104766, 0.104766, 56.5368018], [1517163600000, 0.104985, 0.10506929, 0.10466134, 0.10476601, 20.78590842], [1517163660000, 0.10503929, 0.1050993, 0.104659, 0.104659, 39.19049046], [1517163720000, 0.104659, 0.10506928, 0.104659, 0.104659, 26.25726887], [1517163780000, 0.10465905, 0.1050688, 0.104659, 0.1050688, 14.72984171], [1517163840000, 0.1050688, 0.10506928, 0.1050688, 0.10506926, 8.06112163], [1517163900000, 0.10506927, 0.10506928, 0.10506927, 0.10506928, 5.54441963], [1517163960000, 0.1050993, 0.10509999, 0.10506928, 0.10509999, 20.44875327], [1517164020000, 0.10509999, 0.105165, 0.10509999, 0.105165, 8.14034184], [1517164080000, 0.105165, 0.1051755, 0.10515, 0.1051755, 19.12941313], [1517164140000, 0.10517402, 0.1051755, 0.10516503, 0.105166, 26.00525193], [1517164200000, 0.10516503, 0.105166, 0.105165, 0.105166, 25.47489567], [1517164260000, 0.105165, 0.1051665, 0.105156, 0.105165, 23.26904326], [1517164320000, 0.105156, 0.105165, 0.105156, 0.105164, 8.98373959], [1517164380000, 0.105164, 0.1051755, 0.105156, 0.1051741, 35.12159118], [1517164440000, 0.1051755, 0.10517554, 0.105156, 0.10517554, 27.39349385], [1517164500000, 0.10517553, 0.1052499, 0.1051755, 0.10519, 13.50873155], [1517164560000, 0.1052489, 0.1052499, 0.10517553, 0.10524, 23.33222636], [1517164620000, 0.1052498, 0.1052498, 0.10517553, 0.10521945, 16.99980803], [1517164680000, 0.10521945, 0.10521945, 0.10517553, 0.105216, 12.28384871], [1517164740000, 0.10517553, 0.105216, 0.10517553, 0.10521597, 31.78912654], [1517164800000, 0.10517575, 0.10521945, 0.10517575, 0.10520041, 28.62054649], [1517164860000, 0.1052, 0.1052498, 0.1052, 0.10520041, 22.84899331], [1517164920000, 0.10524979, 0.1052498, 0.10521945, 0.10521945, 31.11554039], [1517164980000, 0.10521946, 0.10524979, 0.1052, 0.10521945, 31.11398851], [1517165040000, 0.10524977, 0.10524979, 0.1052, 0.1052, 18.9962826], [1517165100000, 0.10524977, 0.10524978, 0.1052, 0.10524978, 13.77068224], [1517165160000, 0.1052, 0.10524978, 0.105156, 0.10524978, 19.8471141], [1517165220000, 0.10524978, 0.10524978, 0.105156, 0.105156, 16.83581135], [1517165280000, 0.10519997, 0.1052, 0.1051, 0.1051, 33.72235905], [1517165340000, 0.105156, 0.1052, 0.10506927, 0.1051, 8.39974412], [1517165400000, 0.10506927, 0.10519964, 0.10506927, 0.10508, 6.69051425], [1517165460000, 0.10506927, 0.10508, 0.10506927, 0.10506928, 35.05781123], [1517165520000, 0.10506928, 0.10508, 0.10499825, 0.105, 7.58777721], [1517165580000, 0.10499825, 0.10507495, 0.104738, 0.10507495, 4.85071603], [1517165640000, 0.10507495, 0.10507495, 0.104664, 0.104738, 6.24915714], [1517165700000, 0.10473, 0.10504308, 0.10465904, 0.10502, 22.89641763], [1517165760000, 0.1049985, 0.104999, 0.10499825, 0.104999, 4.04321433], [1517165820000, 0.10501, 0.10501, 0.10499825, 0.104999, 29.98270067], [1517165880000, 0.10500998, 0.10500998, 0.10495, 0.10499825, 2.37069358], [1517165940000, 0.10495001, 0.10499825, 0.104738, 0.10495001, 11.70229461], [1517166000000, 0.1048, 0.10495001, 0.10447982, 0.10473651, 21.78119951], [1517166060000, 0.10473651, 0.10473651, 0.10447982, 0.10473651, 5.41446774], [1517166120000, 0.10473651, 0.10495001, 0.10473001, 0.10482409, 26.31513991], [1517166180000, 0.10482408, 0.10482408, 0.10473001, 0.10482342, 20.8773161], [1517166240000, 0.10447983, 0.10482337, 0.104476, 0.1046233, 7.1154745], [1517166300000, 0.1046233, 0.10481448, 0.10435, 0.10475006, 42.81275181], [1517166360000, 0.104726, 0.10473807, 0.104726, 0.10473799, 2.65242847], [1517166420000, 0.104726, 0.10473804, 0.1046233, 0.104726, 11.79213005], [1517166480000, 0.10469178, 0.10469178, 0.10447542, 0.10447542, 14.78280107], [1517166540000, 0.10447542, 0.1046233, 0.10424979, 0.10424979, 5.01413307], [1517166600000, 0.10446407, 0.1044641, 0.10424979, 0.10425978, 7.39421326], [1517166660000, 0.1044641, 0.1044641, 0.10400007, 0.10425978, 5.48582779], [1517166720000, 0.10425978, 0.10425978, 0.10421462, 0.10425972, 7.59386614], [1517166780000, 0.10425972, 0.10425972, 0.10422465, 0.10422465, 5.0656629], [1517166840000, 0.10422465, 0.10425969, 0.10422465, 0.10422465, 26.26582931], [1517166900000, 0.10425969, 0.10427342, 0.10422465, 0.10425965, 12.75891982], [1517166960000, 0.10424215, 0.10425965, 0.10422465, 0.10422465, 3.46968968], [1517167020000, 0.10422465, 0.10424215, 0.10422465, 0.10422466, 5.19102817], [1517167080000, 0.10422466, 0.10424214, 0.10422465, 0.10423458, 7.61220088], [1517167140000, 0.10424, 0.10424214, 0.10424, 0.10424, 8.25268506], [1517167200000, 0.10424, 0.10424212, 0.10422465, 0.10422465, 25.04887622], [1517167260000, 0.10422465, 0.10424212, 0.10400007, 0.10400007, 8.78380297], [1517167320000, 0.10424211, 0.10424211, 0.1039, 0.10400007, 5.02887275], [1517167380000, 0.10400009, 0.1042421, 0.10400009, 0.10422465, 1.27597852], [1517167440000, 0.1040001, 0.1042421, 0.1040001, 0.1042421, 6.35874789], [1517167500000, 0.1042421, 0.1042421, 0.1041, 0.1041, 26.65100204], [1517167560000, 0.10424, 0.1042421, 0.10400007, 0.10400028, 35.65829939], [1517167620000, 0.10400028, 0.104001, 0.10379998, 0.1038, 58.46582628], [1517167680000, 0.104, 0.104, 0.103801, 0.104, 14.28466372], [1517167740000, 0.104, 0.10410289, 0.10380103, 0.1041, 8.65432411], [1517167800000, 0.1041, 0.1042421, 0.1041, 0.10424209, 2.21117885], [1517167860000, 0.10424209, 0.1042421, 0.10410258, 0.104242, 3.31258063], [1517167920000, 0.104242, 0.104242, 0.10410292, 0.10410292, 12.10694748], [1517167980000, 0.104242, 0.1042421, 0.104242, 0.1042421, 2.5244303], [1517168040000, 0.104242, 0.1042421, 0.1041045, 0.10424198, 0.87973164], [1517168100000, 0.10424198, 0.1042421, 0.10424198, 0.1042421, 10.35874477], [1517168160000, 0.1042421, 0.1042421, 0.10410291, 0.10410291, 25.74977704], [1517168220000, 0.10424198, 0.10424198, 0.10410296, 0.104105, 17.37581666], [1517168280000, 0.104105, 0.104105, 0.10410297, 0.104104, 15.37430572], [1517168340000, 0.104104, 0.104105, 0.104104, 0.10410499, 16.02135276], [1517168400000, 0.10410499, 0.104105, 0.10410455, 0.10410499, 9.37546736], [1517168460000, 0.104105, 0.104105, 0.10410499, 0.104105, 37.29594216], [1517168520000, 0.104105, 0.10424195, 0.10410499, 0.10424195, 18.59307922], [1517168580000, 0.104109, 0.10424195, 0.104109, 0.10424195, 1.34366657], [1517168640000, 0.10424195, 0.10424198, 0.10424195, 0.10424195, 11.35244713], [1517168700000, 0.10424195, 0.10424198, 0.10424195, 0.10424198, 8.9470112], [1517168760000, 0.10424198, 0.10424198, 0.10424197, 0.10424198, 7.29379122], [1517168820000, 0.10424198, 0.10424198, 0.10411899, 0.10424196, 16.30664502], [1517168880000, 0.10424198, 0.10424205, 0.10411899, 0.10424205, 30.50096981], [1517168940000, 0.10424197, 0.10424214, 0.10424197, 0.10424214, 20.39647282], [1517169000000, 0.10424198, 0.1044641, 0.10424198, 0.10424198, 38.11780466], [1517169060000, 0.10424199, 0.10424199, 0.10424198, 0.10424199, 4.07186334], [1517169120000, 0.10446408, 0.10446409, 0.10424198, 0.10424199, 2.9308162], [1517169180000, 0.10424199, 0.10438056, 0.10424198, 0.10424198, 7.12270696], [1517169240000, 0.10424198, 0.10424199, 0.10411899, 0.10424186, 2.68292666], [1517169300000, 0.10424186, 0.10424199, 0.10424186, 0.10424199, 16.9882867], [1517169360000, 0.10424199, 0.10445, 0.10424199, 0.10430001, 10.75663288], [1517169420000, 0.10443998, 0.10443999, 0.10430001, 0.10443001, 13.67691888], [1517169480000, 0.10443001, 0.10443001, 0.10424186, 0.10430001, 11.51713223], [1517169540000, 0.10430001, 0.10443999, 0.10424186, 0.10424186, 59.22205893], [1517169600000, 0.10442234, 0.10443999, 0.10424186, 0.10424187, 13.59259765], [1517169660000, 0.10424187, 0.10431639, 0.10424186, 0.10424186, 19.44203163], [1517169720000, 0.10424187, 0.10425, 0.10424186, 0.10425, 15.07980183], [1517169780000, 0.10425, 0.104642, 0.104248, 0.10425, 102.65947131], [1517169840000, 0.10425, 0.10464198, 0.10425, 0.10464189, 105.3959871], [1517169900000, 0.10462689, 0.105, 0.10440429, 0.105, 61.3928168], [1517169960000, 0.105, 0.10525, 0.1043, 0.10512432, 179.00176816], [1517170020000, 0.10483698, 0.10483698, 0.10430001, 0.10441069, 9.41171578], [1517170080000, 0.10441071, 0.10499989, 0.10441071, 0.10499989, 1.74958595], [1517170140000, 0.10499987, 0.10499989, 0.10441069, 0.10441101, 9.50917725], [1517170200000, 0.10441102, 0.10481291, 0.10441102, 0.10441102, 3.31258882], [1517170260000, 0.10467168, 0.10467171, 0.10441106, 0.10467168, 4.5651348], [1517170320000, 0.10467168, 0.10467171, 0.10441106, 0.10441107, 16.22180938], [1517170380000, 0.10441106, 0.10521147, 0.10441106, 0.10500441, 39.56905161], [1517170440000, 0.10500441, 0.10500441, 0.10441106, 0.10441106, 53.35520403], [1517170500000, 0.10441106, 0.1045, 0.10411899, 0.10411899, 32.55097625], [1517170560000, 0.10441103, 0.10441103, 0.10411899, 0.10411903, 8.60340109], [1517170620000, 0.104119, 0.10441096, 0.10411899, 0.10411899, 25.00405092], [1517170680000, 0.10427338, 0.10427338, 0.10411899, 0.10411899, 3.37775351], [1517170740000, 0.10427337, 0.10427338, 0.1037, 0.1037, 41.93072964], [1517170800000, 0.10407842, 0.10441097, 0.10364998, 0.10405328, 33.61066683], [1517170860000, 0.10405328, 0.10441069, 0.10369006, 0.10369006, 11.02911122], [1517170920000, 0.1041911, 0.1041911, 0.10365089, 0.10405209, 88.07601188], [1517170980000, 0.10405209, 0.10414552, 0.10405209, 0.10405209, 41.0467797], [1517171040000, 0.10405209, 0.10414544, 0.10405209, 0.10413, 5.95238498], [1517171100000, 0.10410336, 0.1041453, 0.10405209, 0.1040521, 22.71680285], [1517171160000, 0.1040521, 0.1041453, 0.1040521, 0.10414529, 26.44630642], [1517171220000, 0.1040521, 0.10414256, 0.10363665, 0.10363665, 29.54271553], [1517171280000, 0.10405209, 0.10414254, 0.10361203, 0.10399999, 14.49702856], [1517171340000, 0.10399999, 0.104, 0.10361203, 0.10399999, 0.95784949], [1517171400000, 0.103613, 0.104, 0.10361203, 0.10399479, 29.88840679], [1517171460000, 0.10399478, 0.104, 0.10366, 0.10399478, 19.63020494], [1517171520000, 0.10399476, 0.104, 0.10321501, 0.10399479, 95.05953154], [1517171580000, 0.10397391, 0.1041453, 0.1035, 0.10399479, 43.87207328], [1517171640000, 0.10399479, 0.10399479, 0.10382, 0.10382, 6.54974893], [1517171700000, 0.10381059, 0.10399478, 0.10381059, 0.10381059, 43.80852942], [1517171760000, 0.10382, 0.10399478, 0.10382, 0.10389999, 71.445465], [1517171820000, 0.10389999, 0.10389999, 0.1036035, 0.10373466, 6.91376169], [1517171880000, 0.1036035, 0.10373468, 0.1036035, 0.10373464, 3.05453966], [1517171940000, 0.10367347, 0.10373464, 0.1036035, 0.1036035, 9.74021193], [1517172000000, 0.10373464, 0.10373464, 0.1035, 0.10373464, 6.57084909], [1517172060000, 0.10373468, 0.10389999, 0.10351471, 0.10373464, 3.77399853], [1517172120000, 0.103878, 0.10398, 0.10373464, 0.10398, 1.67937931], [1517172180000, 0.10395226, 0.10398228, 0.10395226, 0.1039822, 4.02494312], [1517172240000, 0.1039822, 0.104, 0.10395227, 0.10395227, 9.74511865], [1517172300000, 0.10395227, 0.104, 0.10373465, 0.10373465, 14.70429501], [1517172360000, 0.10373465, 0.104, 0.10373465, 0.104, 1.47591514], [1517172420000, 0.10399794, 0.10409233, 0.10399794, 0.104, 0.8859616], [1517172480000, 0.104, 0.10407783, 0.104, 0.10400001, 8.96413413], [1517172540000, 0.104075, 0.1040778, 0.104, 0.104, 14.93597643], [1517172600000, 0.10400001, 0.10400002, 0.10373468, 0.10400002, 4.57029771], [1517172660000, 0.10400002, 0.1040778, 0.10400001, 0.10400001, 16.911676], [1517172720000, 0.104, 0.1040778, 0.104, 0.1040778, 9.59562404], [1517172780000, 0.1040778, 0.10434634, 0.104, 0.10434629, 32.54808794], [1517172840000, 0.1042, 0.10434501, 0.104055, 0.1043449, 57.87978151], [1517172900000, 0.104055, 0.104055, 0.104, 0.104055, 5.23163818], [1517172960000, 0.104055, 0.104055, 0.10401, 0.104055, 22.08964438], [1517173020000, 0.104055, 0.104055, 0.10401, 0.10401, 12.22600986], [1517173080000, 0.10401, 0.104054, 0.10401, 0.104054, 3.85796309], [1517173140000, 0.104054, 0.104054, 0.10400001, 0.10400001, 11.39367879], [1517173200000, 0.10400001, 0.104054, 0.10400001, 0.10403, 4.95965846], [1517173260000, 0.104054, 0.104054, 0.10386009, 0.10403, 24.19471398], [1517173320000, 0.10393468, 0.10403, 0.1039, 0.10400001, 3.57993678], [1517173380000, 0.10391, 0.104, 0.10374212, 0.104, 23.65531827], [1517173440000, 0.10400001, 0.104054, 0.1038, 0.104, 31.20307301], [1517173500000, 0.104054, 0.104054, 0.1038, 0.104, 33.95961449], [1517173560000, 0.104, 0.104055, 0.104, 0.104054, 11.80737012], [1517173620000, 0.104054, 0.104055, 0.10394159, 0.104055, 7.95466792], [1517173680000, 0.104054, 0.1045, 0.104054, 0.104054, 8.84044041], [1517173740000, 0.104054, 0.1045, 0.10394159, 0.104, 8.93776259], [1517173800000, 0.10398539, 0.104, 0.10398539, 0.104, 8.31010852], [1517173860000, 0.104, 0.10456422, 0.10399999, 0.10400003, 6.46470204], [1517173920000, 0.10400003, 0.10456415, 0.10400001, 0.10456133, 8.93531186], [1517173980000, 0.10400007, 0.10456132, 0.10400006, 0.10409134, 4.93079471], [1517174040000, 0.10435862, 0.10456001, 0.1034185, 0.10455998, 60.93800936], [1517174100000, 0.10434117, 0.10456001, 0.10403578, 0.10403578, 5.84771091], [1517174160000, 0.10403578, 0.10441069, 0.10403578, 0.10441069, 7.5899458], [1517174220000, 0.10441069, 0.10441069, 0.10403601, 0.10441068, 7.97092888], [1517174280000, 0.10403601, 0.10441068, 0.10403601, 0.10441068, 0.67248021], [1517174340000, 0.10403604, 0.1044, 0.104036, 0.104036, 8.30020441], [1517174400000, 0.1044, 0.1044, 0.10403601, 0.1042, 3.1665912], [1517174460000, 0.10414005, 0.1044, 0.10414004, 0.1042, 32.20392275], [1517174520000, 0.1044, 0.10441067, 0.1044, 0.10441067, 3.32957504], [1517174580000, 0.10441068, 0.10441068, 0.1042, 0.10420001, 20.81280678], [1517174640000, 0.10420001, 0.10441067, 0.10420001, 0.10441067, 19.77474301], [1517174700000, 0.10431247, 0.10431248, 0.10420002, 0.10420003, 11.5758695], [1517174760000, 0.10441066, 0.10441067, 0.10420006, 0.10441063, 25.15181608], [1517174820000, 0.10420506, 0.10441059, 0.10420506, 0.10441054, 8.83050684], [1517174880000, 0.10441058, 0.10441058, 0.10420507, 0.10420908, 4.43860521], [1517174940000, 0.10434642, 0.10434642, 0.10420506, 0.10420958, 19.06740354], [1517175000000, 0.10420506, 0.1044105, 0.10420009, 0.1044105, 13.80672162], [1517175060000, 0.10420362, 0.1044105, 0.10420002, 0.10420002, 14.17965672], [1517175120000, 0.10420003, 0.10434642, 0.1042, 0.1042, 20.31956069], [1517175180000, 0.1043, 0.10434642, 0.1042, 0.1042, 13.47045402], [1517175240000, 0.1042, 0.10441047, 0.10414, 0.1042, 15.31501412], [1517175300000, 0.10414002, 0.10429999, 0.10414, 0.10414006, 10.61932341], [1517175360000, 0.10417247, 0.10430001, 0.10403578, 0.10403578, 41.35242166], [1517175420000, 0.10403578, 0.10430001, 0.10361072, 0.1039, 15.98107816], [1517175480000, 0.1039, 0.1044, 0.1039, 0.10402, 19.17657193], [1517175540000, 0.10402, 0.10439992, 0.1039, 0.1043995, 11.77288676], [1517175600000, 0.10402002, 0.10439948, 0.10402, 0.10439946, 9.96480247], [1517175660000, 0.10402006, 0.1044, 0.10402005, 0.1044, 10.89550173], [1517175720000, 0.1044, 0.1044105, 0.10402007, 0.10439935, 11.41973516], [1517175780000, 0.10439934, 0.10439935, 0.10402005, 0.10402005, 42.34329057], [1517175840000, 0.10402005, 0.10430304, 0.10376766, 0.10430297, 13.83375754], [1517175900000, 0.10429253, 0.10430295, 0.1031801, 0.10429245, 37.5851269], [1517175960000, 0.10402008, 0.10403, 0.10402, 0.10402007, 6.65841391], [1517176020000, 0.10402002, 0.1042, 0.10402002, 0.10402002, 21.39702718], [1517176080000, 0.10402008, 0.10402008, 0.1036, 0.10402, 39.59153716], [1517176140000, 0.10402, 0.10402002, 0.10360006, 0.10402002, 10.76468924], [1517176200000, 0.10402002, 0.10402008, 0.10402, 0.10402002, 14.44499083], [1517176260000, 0.10402002, 0.10439996, 0.10381805, 0.10402008, 43.90579363], [1517176320000, 0.10402002, 0.10402008, 0.10402002, 0.10402008, 42.06462369], [1517176380000, 0.1042, 0.1042, 0.10402008, 0.1042, 16.63487848], [1517176440000, 0.1042, 0.10439895, 0.10406255, 0.10420001, 17.40107734], [1517176500000, 0.1042, 0.10439895, 0.1041787, 0.10419999, 12.18151996], [1517176560000, 0.10419999, 0.10439895, 0.10419999, 0.10420002, 6.88835621], [1517176620000, 0.10420003, 0.10439892, 0.10420003, 0.10420003, 14.95978264], [1517176680000, 0.10420004, 0.10420009, 0.10420004, 0.10420009, 9.2708298], [1517176740000, 0.10439888, 0.1043989, 0.10420009, 0.1043989, 7.86071185], [1517176800000, 0.10439887, 0.10439891, 0.10439887, 0.1043989, 11.57081409], [1517176860000, 0.1043989, 0.10439891, 0.10439888, 0.10439891, 10.62279968], [1517176920000, 0.10439891, 0.10439893, 0.10439891, 0.10439892, 5.66878676], [1517176980000, 0.10439996, 0.10439996, 0.10439894, 0.10439894, 4.2178523], [1517177040000, 0.10439901, 0.1045948, 0.10439901, 0.1045948, 23.65338456], [1517177100000, 0.1045948, 0.10471183, 0.1045948, 0.10471183, 3.41668303], [1517177160000, 0.10471183, 0.104999, 0.10471183, 0.10485737, 18.71727309], [1517177220000, 0.10485737, 0.105, 0.10481067, 0.10498997, 59.37916716], [1517177280000, 0.1049, 0.10510511, 0.10481067, 0.10481067, 43.20682278], [1517177340000, 0.10481067, 0.10510511, 0.1047326, 0.10498997, 46.31760491], [1517177400000, 0.105, 0.10510511, 0.105, 0.1051, 23.69288434], [1517177460000, 0.10510499, 0.10510502, 0.10500001, 0.10500002, 10.10140672], [1517177520000, 0.10510499, 0.10525, 0.10490012, 0.10525, 24.17879626], [1517177580000, 0.10524214, 0.10526438, 0.10524214, 0.10526438, 30.33767407], [1517177640000, 0.10527097, 0.10531001, 0.10525, 0.10525, 19.00613588], [1517177700000, 0.10530999, 0.10531001, 0.10525, 0.10525, 12.75624507], [1517177760000, 0.10525002, 0.10531597, 0.10524999, 0.10531003, 15.57853518], [1517177820000, 0.10531597, 0.10539977, 0.10531004, 0.10531599, 18.74376597], [1517177880000, 0.10539977, 0.10539977, 0.10531598, 0.10531599, 12.18123448], [1517177940000, 0.10539966, 0.1054104, 0.10531599, 0.1054104, 25.35905893], [1517178000000, 0.105316, 0.10541468, 0.105316, 0.1054107, 10.58503352], [1517178060000, 0.10541867, 0.10542968, 0.10541068, 0.10541068, 50.86511101], [1517178120000, 0.10541068, 0.1054107, 0.105316, 0.105316, 18.45572514], [1517178180000, 0.105316, 0.10541071, 0.105316, 0.105316, 7.41751525], [1517178240000, 0.10541071, 0.10541102, 0.105316, 0.10541102, 5.44190272], [1517178300000, 0.10541915, 0.10549949, 0.10541102, 0.10549666, 12.25040551], [1517178360000, 0.10549949, 0.1055, 0.10549665, 0.10549949, 26.97219642], [1517178420000, 0.10549949, 0.10549949, 0.10546597, 0.105466, 13.10993702], [1517178480000, 0.10547554, 0.10549668, 0.10546599, 0.105466, 67.39664495], [1517178540000, 0.105466, 0.10549664, 0.10531597, 0.10531597, 73.36443235], [1517178600000, 0.10531597, 0.10546598, 0.10500766, 0.10500767, 8.71571073], [1517178660000, 0.10500767, 0.10546598, 0.10500766, 0.10500768, 19.08780088], [1517178720000, 0.10500768, 0.10546596, 0.10455739, 0.1053648, 21.09956305], [1517178780000, 0.10500002, 0.10539499, 0.10500002, 0.10520001, 12.11961773], [1517178840000, 0.10520001, 0.10534999, 0.10457, 0.10457, 8.56831265], [1517178900000, 0.105, 0.10500001, 0.10456, 0.10500001, 22.87182184], [1517178960000, 0.105, 0.1053, 0.1047, 0.1053, 22.52064631], [1517179020000, 0.10525504, 0.10525506, 0.10500002, 0.10525506, 47.94053051], [1517179080000, 0.10525506, 0.10529999, 0.10500001, 0.10525504, 43.5870384], [1517179140000, 0.10525504, 0.1052551, 0.10461, 0.10461, 22.27391165], [1517179200000, 0.10525504, 0.1052551, 0.104615, 0.1052551, 14.04611079], [1517179260000, 0.1052551, 0.1052551, 0.105, 0.10512752, 9.56670488], [1517179320000, 0.10512752, 0.10527807, 0.10463, 0.10512875, 22.40971764], [1517179380000, 0.10512754, 0.10512754, 0.104636, 0.10512, 14.39107418], [1517179440000, 0.10512, 0.10527278, 0.10464101, 0.10464101, 39.66227935], [1517179500000, 0.10512, 0.10512, 0.10511998, 0.10511999, 7.07215977], [1517179560000, 0.10511998, 0.10512, 0.10480488, 0.10480488, 11.63984815], [1517179620000, 0.10511896, 0.10511896, 0.10481489, 0.10481489, 6.54843711], [1517179680000, 0.10480489, 0.1048149, 0.10480488, 0.10481489, 14.85621645], [1517179740000, 0.10481489, 0.10481489, 0.10481489, 0.10481489, 3.5288547], [1517179800000, 0.10480492, 0.10481489, 0.10480489, 0.10481489, 15.40243137], [1517179860000, 0.10481488, 0.10538998, 0.10481488, 0.10538995, 17.94111606], [1517179920000, 0.10538995, 0.10539495, 0.1048149, 0.10515016, 4.89083928], [1517179980000, 0.10515016, 0.10539495, 0.105, 0.10515017, 4.06125597], [1517180040000, 0.10539494, 0.10539494, 0.104805, 0.104805, 26.45612375], [1517180100000, 0.10515018, 0.10530681, 0.10515018, 0.10515019, 8.34984165], [1517180160000, 0.10530666, 0.10530675, 0.10480489, 0.10515018, 14.58734446], [1517180220000, 0.10515019, 0.10530686, 0.10515018, 0.10515018, 35.53594883], [1517180280000, 0.10530675, 0.10530675, 0.1048049, 0.1053067, 14.90209949], [1517180340000, 0.10530674, 0.10530675, 0.1048049, 0.1048049, 20.9231302], [1517180400000, 0.10515023, 0.10515023, 0.1048049, 0.10498509, 2.70399369], [1517180460000, 0.10498509, 0.10515018, 0.10481004, 0.10515018, 7.83418498], [1517180520000, 0.10515023, 0.1052, 0.10515019, 0.10515023, 31.33109924], [1517180580000, 0.10519999, 0.1052, 0.10515023, 0.10515026, 11.65345855], [1517180640000, 0.10515027, 0.105229, 0.10515023, 0.105229, 7.81516565], [1517180700000, 0.10521, 0.10539493, 0.1052, 0.10521001, 13.91336927], [1517180760000, 0.10539492, 0.1054, 0.10521002, 0.10539488, 11.25132435], [1517180820000, 0.10534221, 0.10539489, 0.10534221, 0.10534222, 28.8347258], [1517180880000, 0.10534222, 0.10534224, 0.10523, 0.10524162, 38.24213896], [1517180940000, 0.10524162, 0.10524162, 0.10515018, 0.10515018, 68.80378729], [1517181000000, 0.10515023, 0.10521001, 0.10515023, 0.10515027, 18.16085577], [1517181060000, 0.10515027, 0.1052099, 0.10498509, 0.10498509, 20.43967609], [1517181120000, 0.10498508, 0.10498508, 0.10482489, 0.104984, 25.44142347], [1517181180000, 0.104984, 0.104984, 0.10482005, 0.10486001, 36.36213341], [1517181240000, 0.10486001, 0.104984, 0.10486, 0.104883, 35.2488891], [1517181300000, 0.104984, 0.104984, 0.10488299, 0.104984, 10.13947921], [1517181360000, 0.104984, 0.104984, 0.104983, 0.10498399, 7.52477583], [1517181420000, 0.10498398, 0.10498398, 0.10488301, 0.10498302, 13.35754856], [1517181480000, 0.10498302, 0.10498302, 0.10488302, 0.10498302, 11.22032841], [1517181540000, 0.10498302, 0.104984, 0.10490401, 0.10498303, 49.11899227], [1517181600000, 0.104984, 0.105, 0.10498302, 0.10499999, 2.71050367], [1517181660000, 0.10499999, 0.10499999, 0.10490401, 0.10490401, 14.26833801], [1517181720000, 0.10490401, 0.105, 0.10490401, 0.10499999, 10.95759214], [1517181780000, 0.105, 0.10500002, 0.105, 0.10500001, 16.91658814], [1517181840000, 0.10517296, 0.10534122, 0.10499999, 0.10499999, 21.04720717], [1517181900000, 0.10520999, 0.10520999, 0.10490403, 0.1052, 14.72636698], [1517181960000, 0.10519999, 0.1052, 0.10510004, 0.10510005, 6.19099263], [1517182020000, 0.10510005, 0.10510006, 0.10510004, 0.10510006, 19.73513914], [1517182080000, 0.10510006, 0.10520001, 0.10510004, 0.10510004, 35.08840111], [1517182140000, 0.10510004, 0.1052, 0.10510004, 0.10510006, 9.39851238], [1517182200000, 0.10519997, 0.10519997, 0.10510006, 0.10510007, 3.12975426], [1517182260000, 0.10510007, 0.10510007, 0.10510004, 0.10510007, 22.47076395], [1517182320000, 0.10519991, 0.1052, 0.10510006, 0.10519977, 2.96140187], [1517182380000, 0.10519977, 0.10520995, 0.10519971, 0.10520001, 46.1141099], [1517182440000, 0.10520001, 0.10529405, 0.1052, 0.10520995, 22.60083688], [1517182500000, 0.10520995, 0.10529405, 0.10520995, 0.10520996, 12.9368063], [1517182560000, 0.10521, 0.10521, 0.1052, 0.10520995, 6.09945066], [1517182620000, 0.10520995, 0.10521, 0.1052, 0.10520001, 6.30048396], [1517182680000, 0.10520001, 0.10520002, 0.1052, 0.1052, 20.80824145], [1517182740000, 0.10520001, 0.10521, 0.105, 0.10500001, 22.58306647], [1517182800000, 0.10500001, 0.10519977, 0.10500001, 0.10519965, 3.39281624], [1517182860000, 0.10519965, 0.10519966, 0.105, 0.10515175, 13.22809859], [1517182920000, 0.10515175, 0.10519, 0.10486001, 0.10518992, 20.83969639], [1517182980000, 0.10500002, 0.10518998, 0.10500002, 0.10500004, 9.53710903], [1517183040000, 0.10518989, 0.10529405, 0.10500002, 0.10500013, 41.71114402], [1517183100000, 0.10518968, 0.10518989, 0.10486, 0.1051, 43.84313758], [1517183160000, 0.10510001, 0.10518989, 0.1051, 0.10518955, 9.13186684], [1517183220000, 0.10518955, 0.10529401, 0.1051, 0.10518949, 41.16631036], [1517183280000, 0.10510001, 0.10518955, 0.1051, 0.10518954, 115.86488983], [1517183340000, 0.1051, 0.10518955, 0.10482002, 0.10518955, 14.22438233], [1517183400000, 0.10529398, 0.10529398, 0.10518955, 0.10528799, 15.51077919], [1517183460000, 0.10528793, 0.1053, 0.10518955, 0.10528793, 31.40576381], [1517183520000, 0.10528793, 0.10534122, 0.10508341, 0.10518956, 7.39566626], [1517183580000, 0.10518956, 0.10528793, 0.10500034, 0.10510002, 46.15085534], [1517183640000, 0.1051, 0.10528781, 0.1051, 0.10510003, 58.44108598], [1517183700000, 0.10528748, 0.10528748, 0.1051, 0.10518985, 46.13187897], [1517183760000, 0.1051898, 0.10518985, 0.10500034, 0.1051, 93.0414084], [1517183820000, 0.10500036, 0.1050999, 0.10500034, 0.10500035, 68.13790009], [1517183880000, 0.10500034, 0.10500035, 0.105, 0.10500035, 53.59171289], [1517183940000, 0.10500001, 0.10500035, 0.105, 0.105, 154.62498439], [1517184000000, 0.10500035, 0.10500035, 0.10480498, 0.10500035, 52.74160721], [1517184060000, 0.10500035, 0.1054, 0.10480505, 0.1054, 50.86122214], [1517184120000, 0.10539999, 0.1054, 0.1049999, 0.1050005, 12.03799598], [1517184180000, 0.10523942, 0.10523942, 0.105, 0.105, 69.67229898], [1517184240000, 0.105, 0.10505, 0.105, 0.10500002, 81.03747087], [1517184300000, 0.10500002, 0.10504995, 0.10480505, 0.10480505, 40.4177966], [1517184360000, 0.105, 0.10523949, 0.10480505, 0.10523949, 28.47752483], [1517184420000, 0.10500004, 0.10544526, 0.10500004, 0.10544525, 16.8626019], [1517184480000, 0.10544524, 0.10546599, 0.10504137, 0.10543958, 15.92639378], [1517184540000, 0.10542955, 0.1055, 0.10515102, 0.10548987, 32.69200434], [1517184600000, 0.1053366, 0.10548985, 0.10523137, 0.10523139, 13.54849408], [1517184660000, 0.10548981, 0.1055, 0.10512349, 0.10515002, 36.66877191], [1517184720000, 0.10523137, 0.10556597, 0.10523137, 0.10552, 40.12802895], [1517184780000, 0.10555199, 0.105552, 0.10523137, 0.10523139, 38.0283133], [1517184840000, 0.10550001, 0.10552002, 0.10515002, 0.10515002, 40.55427343], [1517184900000, 0.10515002, 0.10549998, 0.10515002, 0.10549998, 7.94554242], [1517184960000, 0.10515003, 0.10549995, 0.10515003, 0.10530896, 3.09467058], [1517185020000, 0.10530896, 0.10549995, 0.1051501, 0.10549995, 5.09567803], [1517185080000, 0.10549995, 0.10549995, 0.10530896, 0.10530896, 9.52701123], [1517185140000, 0.10531, 0.10549976, 0.10515012, 0.10549947, 53.1891057], [1517185200000, 0.10520001, 0.10549935, 0.10515012, 0.10549935, 24.0305918], [1517185260000, 0.10549935, 0.10549935, 0.10520002, 0.10520002, 9.65818475], [1517185320000, 0.10520002, 0.10520009, 0.1052, 0.1052, 19.28271672], [1517185380000, 0.10520002, 0.10555198, 0.10520002, 0.10555197, 20.45409635], [1517185440000, 0.1052001, 0.10555197, 0.10520009, 0.10530899, 28.28795887], [1517185500000, 0.10520011, 0.10531, 0.1052001, 0.10531, 6.8563133], [1517185560000, 0.10531, 0.10555197, 0.1053, 0.10555197, 13.0616569], [1517185620000, 0.10555197, 0.10555197, 0.105309, 0.1054, 37.20826449], [1517185680000, 0.10540001, 0.10547889, 0.1054, 0.10540011, 12.97650406], [1517185740000, 0.10540011, 0.10551639, 0.1054, 0.10540101, 8.90386254], [1517185800000, 0.10540102, 0.10551639, 0.1054, 0.10540102, 17.03295031], [1517185860000, 0.10540102, 0.1055467, 0.10540003, 0.10554669, 110.54922911], [1517185920000, 0.10554669, 0.1055467, 0.1054, 0.1054, 155.5818232], [1517185980000, 0.1054, 0.10554669, 0.10530001, 0.10540002, 21.48745645], [1517186040000, 0.1055, 0.10554669, 0.1054, 0.10540004, 12.19908045], [1517186100000, 0.10540005, 0.10554667, 0.10540002, 0.10540004, 78.30387694], [1517186160000, 0.10540005, 0.10554662, 0.1054, 0.10540003, 80.29048604], [1517186220000, 0.10554661, 0.10554662, 0.10540002, 0.10549472, 18.90786269], [1517186280000, 0.10540004, 0.10549472, 0.10540002, 0.10540004, 9.3811321], [1517186340000, 0.10540002, 0.10540004, 0.10520009, 0.10540002, 45.5783435], [1517186400000, 0.10540002, 0.10540004, 0.1052, 0.1054, 16.11838333], [1517186460000, 0.10540001, 0.10540002, 0.1052, 0.10539985, 7.05437541], [1517186520000, 0.10539986, 0.10540002, 0.10506238, 0.10506238, 18.45540531], [1517186580000, 0.10507238, 0.10539985, 0.105, 0.105, 19.36773388], [1517186640000, 0.10515001, 0.10539996, 0.105, 0.105, 29.6002882], [1517186700000, 0.10539978, 0.1054, 0.105, 0.1053999, 17.47579382], [1517186760000, 0.1053999, 0.1053999, 0.10507324, 0.10507326, 4.81101181], [1517186820000, 0.10507326, 0.10539988, 0.10507325, 0.10539986, 11.86279558], [1517186880000, 0.10539987, 0.10539988, 0.10507332, 0.10539988, 13.32942709], [1517186940000, 0.10539987, 0.1055, 0.10507333, 0.1051, 27.3970882], [1517187000000, 0.10510001, 0.10510001, 0.1051, 0.10510001, 13.12820471], [1517187060000, 0.10510001, 0.10510001, 0.1051, 0.10510001, 34.43678327], [1517187120000, 0.1051, 0.1055, 0.1051, 0.10531022, 10.75149627], [1517187180000, 0.10531022, 0.10549993, 0.10510003, 0.10510003, 16.60415966], [1517187240000, 0.10510003, 0.1054999, 0.10510003, 0.10510003, 47.09086194], [1517187300000, 0.10529021, 0.10549988, 0.10510003, 0.10519999, 38.79702211], [1517187360000, 0.10511001, 0.1052, 0.10510003, 0.10510003, 35.31313291], [1517187420000, 0.10510003, 0.1055, 0.10510002, 0.1055, 18.23205708], [1517187480000, 0.10554599, 0.10554599, 0.10512001, 0.10512002, 42.06450633], [1517187540000, 0.10512003, 0.105546, 0.10512002, 0.10512004, 2.55046075], [1517187600000, 0.10554599, 0.10554599, 0.10512004, 0.10548997, 5.69974601], [1517187660000, 0.10512009, 0.10512009, 0.10512004, 0.10512007, 7.1337018], [1517187720000, 0.10512008, 0.10517, 0.10510001, 0.10512007, 18.70447332], [1517187780000, 0.10512009, 0.10517, 0.10512009, 0.10512101, 3.12856476], [1517187840000, 0.10517, 0.10517, 0.10512101, 0.10512102, 4.76901356], [1517187900000, 0.10512102, 0.10517, 0.10512102, 0.10516999, 3.7561508], [1517187960000, 0.10512103, 0.10517, 0.10512103, 0.10517, 23.81053268], [1517188020000, 0.10517, 0.10546399, 0.10516999, 0.10544287, 12.16288538], [1517188080000, 0.10517001, 0.10544286, 0.10516999, 0.10516999, 23.02498126], [1517188140000, 0.10516999, 0.10517, 0.10512103, 0.10516, 8.91228097], [1517188200000, 0.10516, 0.10516999, 0.1051211, 0.10516999, 6.85539352], [1517188260000, 0.10515003, 0.10517, 0.10512107, 0.10515, 10.75156504], [1517188320000, 0.1051211, 0.10515, 0.1051, 0.1051, 69.90606539], [1517188380000, 0.1051, 0.1051, 0.10507324, 0.10509999, 4.7182849], [1517188440000, 0.10507325, 0.10509999, 0.105, 0.10507325, 11.24782297], [1517188500000, 0.10507325, 0.10516999, 0.10507325, 0.10516999, 19.75600968], [1517188560000, 0.1051, 0.10517, 0.10507325, 0.10517, 14.78490634], [1517188620000, 0.10507326, 0.10507327, 0.10492829, 0.104937, 38.43027162], [1517188680000, 0.10493701, 0.10517, 0.10492829, 0.10493704, 20.87324314], [1517188740000, 0.10493704, 0.10493704, 0.10482, 0.1048201, 9.27600359], [1517188800000, 0.1049128, 0.10517001, 0.10482, 0.1048201, 24.73755026], [1517188860000, 0.10482011, 0.10517001, 0.104805, 0.104805, 33.84015391], [1517188920000, 0.10480501, 0.10482, 0.104805, 0.104805, 33.51214633], [1517188980000, 0.10482, 0.10482, 0.1048, 0.1048, 156.27432272], [1517189040000, 0.10480015, 0.10482, 0.1046, 0.10461, 79.63226357], [1517189100000, 0.10461, 0.10482, 0.10461, 0.10462001, 13.19066354], [1517189160000, 0.10462001, 0.10463605, 0.10461004, 0.104612, 23.57657673], [1517189220000, 0.10461005, 0.104612, 0.10405, 0.10410006, 48.42131701], [1517189280000, 0.10410006, 0.10448412, 0.103505, 0.10421059, 125.55053914], [1517189340000, 0.10421059, 0.10430837, 0.103961, 0.104211, 32.72226137], [1517189400000, 0.104211, 0.1044, 0.10407092, 0.10425972, 74.90033604], [1517189460000, 0.10430832, 0.10461099, 0.10373201, 0.10373201, 152.30542873], [1517189520000, 0.10459, 0.10474325, 0.10459, 0.10474325, 27.43174765], [1517189580000, 0.10461999, 0.10470801, 0.10459, 0.10459, 37.18161456], [1517189640000, 0.104708, 0.104708, 0.10415401, 0.10458993, 18.81555714], [1517189700000, 0.10415402, 0.10458993, 0.10391999, 0.10458987, 4.78151927], [1517189760000, 0.10458987, 0.10458987, 0.10407786, 0.10458986, 20.09397807], [1517189820000, 0.10415406, 0.10517001, 0.10415406, 0.10458989, 89.7153427], [1517189880000, 0.10484995, 0.10514, 0.10458989, 0.10459, 60.44632461], [1517189940000, 0.10459, 0.10502999, 0.10458992, 0.10459, 15.85376444], [1517190000000, 0.10458993, 0.105, 0.10458992, 0.10459, 68.37040736], [1517190060000, 0.10459, 0.10459002, 0.10350098, 0.10412442, 131.98780205], [1517190120000, 0.1037, 0.10441062, 0.1037, 0.10440099, 121.35332357], [1517190180000, 0.10440098, 0.10440099, 0.10371999, 0.10432096, 88.02493337], [1517190240000, 0.10432096, 0.10432096, 0.10372999, 0.10373001, 123.75735564], [1517190300000, 0.10432089, 0.10432089, 0.10373001, 0.10400999, 11.64826538], [1517190360000, 0.10400999, 0.1040832, 0.10373002, 0.10402299, 48.60060862], [1517190420000, 0.10402299, 0.10428999, 0.10377, 0.104023, 60.54192359], [1517190480000, 0.104023, 0.1043209, 0.10377, 0.1043209, 15.86281357], [1517190540000, 0.1043209, 0.1043209, 0.10378002, 0.10409999, 24.40902497], [1517190600000, 0.10409999, 0.1041, 0.10378005, 0.10384002, 41.45362653], [1517190660000, 0.10409999, 0.1041, 0.10384002, 0.1041, 35.69657948], [1517190720000, 0.1041, 0.1041, 0.10384008, 0.10393011, 31.7864722], [1517190780000, 0.10392011, 0.1041, 0.10384009, 0.1041, 12.92967462], [1517190840000, 0.1041, 0.1041, 0.10399843, 0.10402844, 44.63312184], [1517190900000, 0.10402844, 0.10439096, 0.10393011, 0.10410001, 21.50848666], [1517190960000, 0.10439096, 0.10441069, 0.10410003, 0.1044106, 2.95534293], [1517191020000, 0.1044106, 0.104411, 0.10410003, 0.10412007, 50.57497851], [1517191080000, 0.10412008, 0.10438999, 0.10410003, 0.10410003, 6.1439298], [1517191140000, 0.10412007, 0.10413007, 0.10400001, 0.10402845, 11.34849639], [1517191200000, 0.10410004, 0.10413007, 0.10368928, 0.10377999, 96.63635046], [1517191260000, 0.10374002, 0.103954, 0.10367, 0.10367, 38.42275352], [1517191320000, 0.103954, 0.10410003, 0.103501, 0.10393, 23.43194382], [1517191380000, 0.10392999, 0.10392999, 0.103501, 0.103501, 10.77703659], [1517191440000, 0.1036102, 0.10392996, 0.10350028, 0.10350098, 27.2567653], [1517191500000, 0.10350098, 0.10350098, 0.1035, 0.1035, 115.65239594], [1517191560000, 0.10350027, 0.10388999, 0.1034104, 0.10386995, 33.82105504], [1517191620000, 0.1034104, 0.10386991, 0.10330001, 0.10341041, 15.13992654], [1517191680000, 0.10341042, 0.10384994, 0.103194, 0.10329485, 102.5671064], [1517191740000, 0.10319401, 0.10382434, 0.10301909, 0.10341042, 35.44603354], [1517191800000, 0.1035, 0.10372999, 0.10341, 0.10350001, 32.66078241], [1517191860000, 0.10350002, 0.10374998, 0.10350001, 0.10350001, 26.99536365], [1517191920000, 0.10350001, 0.10371079, 0.10337307, 0.10341483, 15.39700325], [1517191980000, 0.10341484, 0.10380998, 0.10341483, 0.10371079, 18.81387745], [1517192040000, 0.10371079, 0.1037745, 0.10350004, 0.1037693, 11.71697888], [1517192100000, 0.1037745, 0.10393, 0.10376413, 0.10388998, 17.19199177], [1517192160000, 0.10393, 0.10413007, 0.10385, 0.10413007, 20.81217102], [1517192220000, 0.10410204, 0.10438997, 0.10410004, 0.10420481, 17.32882342], [1517192280000, 0.10420481, 0.1044, 0.1042, 0.1044, 8.36736907], [1517192340000, 0.1044, 0.10454698, 0.10420001, 0.10440003, 13.16660722], [1517192400000, 0.10449998, 0.1045, 0.1042005, 0.10440005, 11.46587924], [1517192460000, 0.10440005, 0.10454694, 0.10420001, 0.10420002, 18.75963081], [1517192520000, 0.10420001, 0.10449999, 0.1042, 0.10420003, 8.30059833], [1517192580000, 0.10420003, 0.1045, 0.10420002, 0.10449996, 25.33744692], [1517192640000, 0.10449997, 0.1045, 0.10420009, 0.1045, 19.31184414], [1517192700000, 0.10420011, 0.10449999, 0.10420011, 0.10449998, 25.28166732], [1517192760000, 0.10422013, 0.10449998, 0.104, 0.10413007, 127.63601901], [1517192820000, 0.10413007, 0.10413007, 0.1037745, 0.10377451, 26.4114436], [1517192880000, 0.10411, 0.10413005, 0.10377452, 0.10413004, 21.59075337], [1517192940000, 0.10413004, 0.10416006, 0.10378453, 0.10416006, 10.73367359], [1517193000000, 0.1042001, 0.1043001, 0.10378501, 0.10428999, 4.19560199], [1517193060000, 0.10422012, 0.10428999, 0.1042001, 0.10425, 153.99501505], [1517193120000, 0.10424999, 0.10425, 0.10380502, 0.10414584, 2.66524636], [1517193180000, 0.10414584, 0.10428999, 0.10377451, 0.10424999, 48.60798354], [1517193240000, 0.10424999, 0.10428998, 0.10384, 0.10389831, 3.3173032], [1517193300000, 0.10390831, 0.10428996, 0.10390831, 0.10428994, 1.38079952], [1517193360000, 0.10391831, 0.10428997, 0.10390834, 0.10428997, 7.56583017], [1517193420000, 0.10428998, 0.1043001, 0.10428997, 0.1043001, 20.40304585], [1517193480000, 0.10430004, 0.1043001, 0.10377451, 0.10428997, 75.36234276], [1517193540000, 0.10402085, 0.1043, 0.1038, 0.1043, 20.06016518], [1517193600000, 0.1043, 0.1043001, 0.1043, 0.10430001, 7.67578402], [1517193660000, 0.10430001, 0.10448822, 0.10430001, 0.1043001, 7.25344697], [1517193720000, 0.1043001, 0.10449999, 0.1043001, 0.1043001, 18.05467615], [1517193780000, 0.1043001, 0.1043001, 0.10402882, 0.10429999, 7.1710397], [1517193840000, 0.10429999, 0.1043, 0.10403884, 0.1043, 6.78280096], [1517193900000, 0.10405885, 0.10448, 0.10403886, 0.10443994, 10.61880738], [1517193960000, 0.10443994, 0.10449999, 0.10403885, 0.10403885, 16.81560793], [1517194020000, 0.10447998, 0.10448, 0.10403889, 0.10448, 1.12274379], [1517194080000, 0.10448, 0.10449999, 0.10403889, 0.10449999, 3.27447732], [1517194140000, 0.10449998, 0.10454695, 0.10407908, 0.10449999, 8.49956497], [1517194200000, 0.1045, 0.10454695, 0.10449999, 0.10451002, 40.65312769], [1517194260000, 0.1045, 0.10454695, 0.10449999, 0.1045, 27.24452723], [1517194320000, 0.1041345, 0.10461, 0.1040891, 0.10458986, 12.67099848], [1517194380000, 0.1041445, 0.10470616, 0.1041445, 0.10460477, 10.42368616], [1517194440000, 0.10419537, 0.10469103, 0.10409133, 0.10469103, 25.48890422], [1517194500000, 0.10469103, 0.10469103, 0.10419543, 0.10445207, 3.5659263], [1517194560000, 0.10424414, 0.10468, 0.10424414, 0.10468, 2.53370388], [1517194620000, 0.10445209, 0.1046963, 0.10445209, 0.10468, 36.0769853], [1517194680000, 0.10468, 0.1046963, 0.10421544, 0.10467999, 9.44620619], [1517194740000, 0.10447, 0.10447, 0.10419544, 0.10419544, 4.13894442], [1517194800000, 0.10445209, 0.10445209, 0.10445209, 0.10445209, 0.35642508], [1517194860000, 0.10445208, 0.10468, 0.10430543, 0.1045, 19.62550319], [1517194920000, 0.10468, 0.10473739, 0.1045, 0.10473739, 6.28883387], [1517194980000, 0.10450001, 0.10473737, 0.1045, 0.104505, 4.2399428], [1517195040000, 0.10473739, 0.10483, 0.1046, 0.1046, 16.46974118], [1517195100000, 0.10460003, 0.10486998, 0.10460003, 0.10460005, 10.01476992], [1517195160000, 0.10460006, 0.10486997, 0.10460006, 0.10462006, 3.15389034], [1517195220000, 0.10462006, 0.10462006, 0.10461005, 0.10461007, 23.18564443], [1517195280000, 0.10461007, 0.10462006, 0.10461006, 0.10461006, 25.0679628], [1517195340000, 0.10462006, 0.10462006, 0.10461006, 0.10461007, 21.44382501], [1517195400000, 0.10461007, 0.10462006, 0.10461006, 0.10462006, 25.05909604], [1517195460000, 0.10462007, 0.10486998, 0.10461005, 0.10462, 28.67267355], [1517195520000, 0.10486996, 0.10486996, 0.10462, 0.10462012, 12.32232483], [1517195580000, 0.10484896, 0.10486995, 0.10462, 0.104621, 1.89602002], [1517195640000, 0.10462102, 0.10486996, 0.10462102, 0.1048698, 28.88556875], [1517195700000, 0.10486978, 0.10486979, 0.10460005, 0.10460005, 100.11444697], [1517195760000, 0.10460005, 0.10460006, 0.10402923, 0.10459996, 160.45655897], [1517195820000, 0.10450001, 0.10459, 0.10402924, 0.10402927, 1.80598448], [1517195880000, 0.10449896, 0.10449896, 0.10402928, 0.10448896, 1.80675461], [1517195940000, 0.10425005, 0.10447994, 0.10425, 0.10425004, 3.50904197], [1517196000000, 0.10444897, 0.10444897, 0.10425005, 0.10444, 7.19444393], [1517196060000, 0.10443996, 0.10443996, 0.10426, 0.10426002, 5.77802667], [1517196120000, 0.10426004, 0.10427, 0.10426002, 0.10426003, 4.52168176], [1517196180000, 0.10426003, 0.10444887, 0.10426003, 0.10444882, 8.80409883], [1517196240000, 0.10444887, 0.1046, 0.10444882, 0.10444884, 14.13462641], [1517196300000, 0.1046, 0.1046, 0.10450001, 0.10459987, 14.66317544], [1517196360000, 0.10459987, 0.10459994, 0.1045, 0.1045, 4.51464311], [1517196420000, 0.1045, 0.10459973, 0.1045, 0.1045002, 10.88246125], [1517196480000, 0.1045002, 0.10459973, 0.1045, 0.10459964, 12.95711826], [1517196540000, 0.10459964, 0.10459987, 0.10444885, 0.10444885, 29.80357365], [1517196600000, 0.10459987, 0.10459994, 0.10444882, 0.10459994, 15.0057787], [1517196660000, 0.10459994, 0.1046, 0.10444883, 0.10459994, 1.62604198], [1517196720000, 0.10444885, 0.10459994, 0.10444885, 0.10444885, 7.63561551], [1517196780000, 0.10459788, 0.10459788, 0.1041, 0.10446885, 47.22432464], [1517196840000, 0.10446885, 0.10446885, 0.10444885, 0.10446885, 13.3741202], [1517196900000, 0.10446885, 0.10446885, 0.10444886, 0.10446885, 2.14707656], [1517196960000, 0.10446885, 0.10446885, 0.10444885, 0.10444887, 10.33938993], [1517197020000, 0.10423864, 0.10444887, 0.10422866, 0.10424868, 3.75357811], [1517197080000, 0.10424868, 0.10444887, 0.10424868, 0.10444794, 8.78146855], [1517197140000, 0.10444695, 0.10444887, 0.10424869, 0.10424869, 27.53915392], [1517197200000, 0.10424869, 0.10444695, 0.10410001, 0.1044, 13.98639635], [1517197260000, 0.1044, 0.10446885, 0.10425862, 0.10425862, 28.50189681], [1517197320000, 0.10427862, 0.10446784, 0.10425862, 0.10446784, 12.7996022], [1517197380000, 0.10446691, 0.10446691, 0.10425863, 0.10441111, 1.43049045], [1517197440000, 0.10431, 0.10441111, 0.10402998, 0.10440993, 94.47253866], [1517197500000, 0.10438004, 0.1044111, 0.10437004, 0.10441001, 7.20052108], [1517197560000, 0.10438005, 0.1044111, 0.10437003, 0.10437004, 5.56609262], [1517197620000, 0.10437004, 0.1044111, 0.10434, 0.10437004, 17.95349889], [1517197680000, 0.10437004, 0.10437004, 0.103679, 0.10436498, 29.52482605], [1517197740000, 0.10436498, 0.10437, 0.10436477, 0.10436498, 3.91344627], [1517197800000, 0.10436498, 0.104365, 0.10436498, 0.10436499, 4.30291743], [1517197860000, 0.10436499, 0.104365, 0.10436498, 0.10436499, 4.43248205], [1517197920000, 0.104365, 0.10437, 0.10386, 0.10436498, 6.53274919], [1517197980000, 0.10386002, 0.10437004, 0.10386002, 0.10437003, 19.08066404], [1517198040000, 0.10437002, 0.10437003, 0.10390501, 0.10437003, 6.85949205], [1517198100000, 0.10437003, 0.10441048, 0.10390001, 0.10441048, 22.51256719], [1517198160000, 0.10441039, 0.10441048, 0.10341848, 0.10395201, 119.39394313], [1517198220000, 0.1042, 0.1042, 0.10393697, 0.10395308, 5.66011519], [1517198280000, 0.1041, 0.1042, 0.10395307, 0.1042, 1.29897813], [1517198340000, 0.1041, 0.10420001, 0.10329998, 0.10329998, 55.6451503], [1517198400000, 0.10431506, 0.10431506, 0.1036, 0.10395307, 3.33332816], [1517198460000, 0.10395307, 0.10395307, 0.10363006, 0.10395307, 6.43728915], [1517198520000, 0.10395307, 0.10395307, 0.103953, 0.10395307, 25.31940229], [1517198580000, 0.10395302, 0.10419999, 0.10361005, 0.10361005, 55.94438775], [1517198640000, 0.10419989, 0.10419999, 0.10361005, 0.1041005, 3.78332055], [1517198700000, 0.1041, 0.1041, 0.10369004, 0.10409999, 0.88124425], [1517198760000, 0.10409999, 0.1041, 0.10409999, 0.1041, 1.64903494], [1517198820000, 0.1040998, 0.1041, 0.1040998, 0.1041, 6.48735392], [1517198880000, 0.1041, 0.1041005, 0.1040999, 0.10409991, 69.08274282], [1517198940000, 0.10409992, 0.10419998, 0.10409992, 0.10419998, 12.02002031], [1517199000000, 0.10419998, 0.10419999, 0.10369004, 0.10378775, 48.24242529], [1517199060000, 0.10419999, 0.10419999, 0.10392039, 0.10419989, 9.10602957], [1517199120000, 0.1041998, 0.10419999, 0.103958, 0.10419999, 9.12549155], [1517199180000, 0.10419983, 0.10419999, 0.103958, 0.104199, 5.68368807], [1517199240000, 0.104199, 0.104199, 0.103998, 0.104058, 5.20078941], [1517199300000, 0.10419899, 0.10419976, 0.103958, 0.10419976, 23.59106716], [1517199360000, 0.10419976, 0.10419999, 0.10395801, 0.104199, 52.57806579], [1517199420000, 0.104199, 0.10431482, 0.10395802, 0.10399999, 22.40533848], [1517199480000, 0.10399999, 0.10431482, 0.10399999, 0.10431481, 5.34342021], [1517199540000, 0.10400002, 0.10431482, 0.10400001, 0.104313, 4.55485525], [1517199600000, 0.104313, 0.1043148, 0.10400001, 0.10400001, 33.04922993], [1517199660000, 0.10431261, 0.10431261, 0.10415653, 0.10415657, 7.83204935], [1517199720000, 0.10415657, 0.10431259, 0.10400013, 0.10431258, 32.44183168], [1517199780000, 0.10431258, 0.10431258, 0.10400012, 0.10400012, 28.11651237], [1517199840000, 0.10400013, 0.10400013, 0.1040001, 0.10400012, 71.47503919], [1517199900000, 0.10400011, 0.10400012, 0.1040001, 0.10400011, 48.36961423], [1517199960000, 0.1040001, 0.10400012, 0.1040001, 0.10400011, 37.96912585], [1517200020000, 0.10400012, 0.10400013, 0.1040001, 0.10400013, 32.26763018], [1517200080000, 0.10400013, 0.10400013, 0.10400002, 0.10400013, 33.89721899], [1517200140000, 0.10400012, 0.10400013, 0.10400001, 0.10400001, 7.07387333], [1517200200000, 0.10400001, 0.10400013, 0.104, 0.104, 7.54814341], [1517200260000, 0.104, 0.10400002, 0.10378775, 0.10378775, 8.24584987], [1517200320000, 0.10395282, 0.10395283, 0.10378775, 0.10395282, 9.22096098], [1517200380000, 0.10395281, 0.10400002, 0.10378775, 0.10395301, 51.3116612], [1517200440000, 0.10400002, 0.10400002, 0.103953, 0.103953, 15.22135723], [1517200500000, 0.103953, 0.10400002, 0.10378775, 0.10400002, 9.23655046], [1517200560000, 0.10400002, 0.10400002, 0.10400001, 0.10400002, 3.64580083], [1517200620000, 0.10400002, 0.10400013, 0.104, 0.10400013, 24.40938209], [1517200680000, 0.10400013, 0.10400013, 0.10400005, 0.10400005, 29.68462656], [1517200740000, 0.10400003, 0.10400005, 0.10400003, 0.10400005, 21.84807647], [1517200800000, 0.10400005, 0.10400013, 0.10400005, 0.10400012, 22.57181074], [1517200860000, 0.10400012, 0.10412972, 0.10400001, 0.10412972, 11.72610178], [1517200920000, 0.10412972, 0.10431198, 0.10412972, 0.10431198, 19.44721593], [1517200980000, 0.10414, 0.10431198, 0.10414, 0.10431197, 41.69515832], [1517201040000, 0.10414017, 0.10431199, 0.10414017, 0.1041403, 15.26821484], [1517201100000, 0.10414038, 0.10446885, 0.10414018, 0.10446881, 83.13799592], [1517201160000, 0.10446881, 0.10446882, 0.10431203, 0.10434205, 57.51675546], [1517201220000, 0.10444269, 0.10446885, 0.10435205, 0.10446884, 168.80734331], [1517201280000, 0.1045, 0.10488, 0.10446884, 0.10488, 50.19083884], [1517201340000, 0.10487999, 0.10487999, 0.10447515, 0.10472504, 22.37254579], [1517201400000, 0.10472504, 0.10487999, 0.10457, 0.10475102, 14.6315218], [1517201460000, 0.10475102, 0.10488, 0.10472505, 0.10472511, 10.83830291], [1517201520000, 0.10472511, 0.10488498, 0.10472511, 0.10488498, 9.43943304], [1517201580000, 0.10488, 0.10490001, 0.10472507, 0.10472507, 9.91220382], [1517201640000, 0.10472507, 0.10498998, 0.10472507, 0.10494001, 32.38073103], [1517201700000, 0.10495001, 0.1051, 0.10494001, 0.10501998, 28.91620092], [1517201760000, 0.10502, 0.10514585, 0.10501998, 0.10514585, 50.03298323], [1517201820000, 0.10514585, 0.10526437, 0.1051, 0.1052, 34.91073355], [1517201880000, 0.1052, 0.10526438, 0.10517003, 0.10520001, 64.13926043], [1517201940000, 0.10520003, 0.10526437, 0.1052, 0.10520005, 24.27105532], [1517202000000, 0.10520006, 0.10526437, 0.10520006, 0.10526436, 11.53409296], [1517202060000, 0.10526437, 0.10534995, 0.1052, 0.10534995, 32.41889861], [1517202120000, 0.10534995, 0.10543521, 0.10510001, 0.10510001, 161.65407032], [1517202180000, 0.10543519, 0.10543519, 0.10520001, 0.10520003, 41.35021389], [1517202240000, 0.10520004, 0.10543519, 0.10520001, 0.10520001, 8.98970409], [1517202300000, 0.10520001, 0.10537999, 0.10501998, 0.10501998, 58.62332243], [1517202360000, 0.10501998, 0.10502001, 0.10501998, 0.10502001, 0.66438266], [1517202420000, 0.10536999, 0.10536999, 0.10502004, 0.10502005, 3.53664991], [1517202480000, 0.10536995, 0.10536995, 0.10502006, 0.10520003, 6.80932397], [1517202540000, 0.10502009, 0.10529997, 0.10502001, 0.10529097, 22.66422511], [1517202600000, 0.10529097, 0.10529995, 0.10520001, 0.10529995, 8.50139447], [1517202660000, 0.10528098, 0.10529995, 0.10502001, 0.10519992, 18.83815615], [1517202720000, 0.1052001, 0.10528095, 0.1052, 0.1052, 18.4137151], [1517202780000, 0.1052, 0.1052, 0.10502001, 0.1052, 6.54564869], [1517202840000, 0.10502005, 0.1052, 0.10502005, 0.10519999, 9.08245277], [1517202900000, 0.10519999, 0.1052, 0.10502011, 0.1052, 13.83231412], [1517202960000, 0.1052, 0.1052, 0.10519999, 0.1052, 6.92639566], [1517203020000, 0.1052, 0.1052, 0.10502008, 0.10502008, 39.97542963], [1517203080000, 0.10502007, 0.1052, 0.10502001, 0.10502004, 10.35784117], [1517203140000, 0.10502006, 0.1052, 0.10502006, 0.1052, 46.63145686], [1517203200000, 0.10528098, 0.10528098, 0.10502001, 0.10502001, 53.8831282], [1517203260000, 0.10502009, 0.10519391, 0.105, 0.10519294, 22.01586873], [1517203320000, 0.10502014, 0.10519, 0.105, 0.10502016, 1.40246837], [1517203380000, 0.10518999, 0.10519, 0.10502017, 0.10518996, 3.96344079], [1517203440000, 0.10518996, 0.10528098, 0.10518996, 0.10528098, 3.27046092], [1517203500000, 0.10528098, 0.1052999, 0.10502017, 0.105199, 23.1352265], [1517203560000, 0.10528095, 0.1052999, 0.10493705, 0.10493705, 69.688357], [1517203620000, 0.10502014, 0.1052999, 0.10493705, 0.1052999, 30.88926552], [1517203680000, 0.10502015, 0.10529989, 0.10493707, 0.10493707, 8.46829123], [1517203740000, 0.10493707, 0.10502014, 0.10473771, 0.10493705, 28.59060385], [1517203800000, 0.10493705, 0.10493705, 0.10478757, 0.1049358, 7.89907054], [1517203860000, 0.1049358, 0.1049358, 0.10472505, 0.10477255, 29.1022956], [1517203920000, 0.1049339, 0.10502014, 0.10493387, 0.10502014, 61.44636253], [1517203980000, 0.10493709, 0.1052999, 0.10493488, 0.10493488, 3.57304477], [1517204040000, 0.10519994, 0.10519995, 0.104935, 0.10493501, 7.35717659], [1517204100000, 0.104936, 0.10519867, 0.104936, 0.10519794, 8.24620811], [1517204160000, 0.104937, 0.10518997, 0.10493681, 0.10493702, 1.9679668], [1517204220000, 0.10493702, 0.10516995, 0.10493701, 0.1049371, 7.85474143], [1517204280000, 0.1049371, 0.10510992, 0.1049371, 0.10510992, 13.51115031], [1517204340000, 0.10510902, 0.10510992, 0.105109, 0.10510901, 8.701359], [1517204400000, 0.10510902, 0.10524656, 0.10494001, 0.10510992, 24.3436988], [1517204460000, 0.10510992, 0.10524656, 0.10510992, 0.10510992, 38.10732219], [1517204520000, 0.10510993, 0.10524496, 0.10443451, 0.10446597, 69.81396347], [1517204580000, 0.10493392, 0.10510992, 0.10493392, 0.10493395, 6.69840701], [1517204640000, 0.10493395, 0.10510992, 0.10493395, 0.10493395, 6.90155611], [1517204700000, 0.10510992, 0.10522, 0.10493396, 0.10493398, 3.3641199], [1517204760000, 0.10508796, 0.1051099, 0.10493395, 0.10508696, 2.63963764], [1517204820000, 0.10508696, 0.1051099, 0.10495, 0.10508696, 4.02610903], [1517204880000, 0.10495, 0.10508696, 0.10495, 0.10496, 12.17888311], [1517204940000, 0.10496, 0.1051099, 0.10496, 0.10508682, 18.58693837], [1517205000000, 0.1051, 0.10549335, 0.1051, 0.1051, 389.23696312], [1517205060000, 0.10533645, 0.10533646, 0.1050956, 0.10525, 10.57780904], [1517205120000, 0.10509862, 0.1053147, 0.10509862, 0.1053147, 16.50661671], [1517205180000, 0.10529, 0.1053147, 0.10485598, 0.10525001, 53.87674855], [1517205240000, 0.10519, 0.10529997, 0.104743, 0.10525001, 15.52015454], [1517205300000, 0.10525001, 0.1053, 0.105175, 0.10524476, 23.20607403], [1517205360000, 0.10529, 0.10529, 0.10455, 0.1046, 14.3556953], [1517205420000, 0.1046, 0.10516, 0.1046, 0.10515196, 14.81677124], [1517205480000, 0.10515287, 0.10528998, 0.10515287, 0.10515287, 35.61682595], [1517205540000, 0.10475585, 0.10515288, 0.10458001, 0.10515288, 83.78738587], [1517205600000, 0.105148, 0.10515288, 0.10459102, 0.10515288, 6.67013493], [1517205660000, 0.10515288, 0.10525, 0.105, 0.10500001, 28.75900125], [1517205720000, 0.10500001, 0.10500001, 0.105, 0.10500001, 38.77234217], [1517205780000, 0.10500001, 0.10500001, 0.105, 0.10500001, 4.66125838], [1517205840000, 0.10500001, 0.10500001, 0.105, 0.105, 6.67620875], [1517205900000, 0.10500001, 0.10500001, 0.105, 0.10500001, 14.26973496], [1517205960000, 0.10500001, 0.10500001, 0.105, 0.105, 22.80946428], [1517206020000, 0.10500001, 0.10500001, 0.105, 0.105, 19.22305499], [1517206080000, 0.10500001, 0.10500001, 0.105, 0.10500001, 46.92478676], [1517206140000, 0.10500001, 0.10524998, 0.105, 0.10500001, 23.19800942], [1517206200000, 0.10524998, 0.10531469, 0.10500002, 0.10525001, 7.29328417], [1517206260000, 0.10525001, 0.10531469, 0.105, 0.10500003, 42.64660236], [1517206320000, 0.10500001, 0.10500003, 0.10500001, 0.10500003, 8.12867997], [1517206380000, 0.10500003, 0.10524694, 0.10500001, 0.10510501, 4.81689064], [1517206440000, 0.10524497, 0.10524497, 0.105105, 0.105105, 32.84404242], [1517206500000, 0.105105, 0.105105, 0.10500001, 0.10500001, 36.9521123], [1517206560000, 0.105105, 0.105105, 0.1048001, 0.105105, 18.79779829], [1517206620000, 0.105105, 0.10524497, 0.10481001, 0.105105, 14.46104123], [1517206680000, 0.10523497, 0.10524497, 0.10510501, 0.10524497, 12.97277499], [1517206740000, 0.10510504, 0.10524497, 0.10481501, 0.10524494, 9.2269421], [1517206800000, 0.10524497, 0.10524694, 0.10524494, 0.10524694, 25.82994429], [1517206860000, 0.10525, 0.10530469, 0.10524494, 0.10530469, 12.3622557], [1517206920000, 0.10524694, 0.10531469, 0.10524496, 0.10524496, 26.59697011], [1517206980000, 0.10524496, 0.10530465, 0.10524494, 0.10530465, 17.8706225], [1517207040000, 0.10530461, 0.10530461, 0.10524494, 0.10524495, 18.46602624], [1517207100000, 0.10524496, 0.10530465, 0.10521863, 0.10524494, 44.3658658], [1517207160000, 0.10524495, 0.10530465, 0.105, 0.10524494, 4.07955031], [1517207220000, 0.10530465, 0.10530465, 0.10500001, 0.10500001, 22.51347619], [1517207280000, 0.10524496, 0.10530464, 0.10500001, 0.10530464, 13.005469], [1517207340000, 0.10530464, 0.10530465, 0.10524498, 0.10524498, 14.47482343], [1517207400000, 0.10524498, 0.10530465, 0.10524496, 0.10524498, 16.34891055], [1517207460000, 0.10530464, 0.10530465, 0.10524496, 0.10524496, 34.189851], [1517207520000, 0.10524509, 0.10524509, 0.10500002, 0.10519999, 20.72636642], [1517207580000, 0.10519999, 0.10530465, 0.10519999, 0.10530465, 15.82796347], [1517207640000, 0.10530465, 0.10559772, 0.10500001, 0.10503762, 150.94789546], [1517207700000, 0.10556997, 0.10559771, 0.105005, 0.10559695, 7.79252616], [1517207760000, 0.10558695, 0.10559696, 0.10510003, 0.10559583, 6.82497936], [1517207820000, 0.10559583, 0.10559772, 0.10510012, 0.10557996, 49.12480084], [1517207880000, 0.10557996, 0.10557996, 0.1051002, 0.10557198, 4.80654365], [1517207940000, 0.10520011, 0.10557095, 0.10510021, 0.10555192, 10.55377143], [1517208000000, 0.1052, 0.10555191, 0.10510023, 0.10551096, 11.64631711], [1517208060000, 0.10510501, 0.10549996, 0.10510004, 0.10510032, 78.6797808], [1517208120000, 0.10510006, 0.10532292, 0.10510004, 0.10532086, 3.6891858], [1517208180000, 0.10510026, 0.10510032, 0.1049, 0.10510002, 24.45766643], [1517208240000, 0.10508794, 0.10508992, 0.10481005, 0.10481005, 22.48246346], [1517208300000, 0.10481006, 0.1050466, 0.10481005, 0.10481005, 6.59573542], [1517208360000, 0.10481006, 0.10508994, 0.1048001, 0.1048001, 45.85324315], [1517208420000, 0.1048001, 0.1048001, 0.10480001, 0.10480001, 29.140506], [1517208480000, 0.10480001, 0.1048001, 0.104586, 0.10460003, 24.38426779], [1517208540000, 0.1048001, 0.1048001, 0.10460003, 0.10480009, 8.34270665], [1517208600000, 0.10480006, 0.10480009, 0.10480006, 0.10480008, 8.0825433], [1517208660000, 0.10480009, 0.105004, 0.1048, 0.1048, 14.39824241], [1517208720000, 0.1048, 0.10500401, 0.10460003, 0.10489999, 7.58226095], [1517208780000, 0.104895, 0.10489998, 0.1048001, 0.10489998, 2.30978184], [1517208840000, 0.10489998, 0.10489998, 0.10489998, 0.10489998, 1.70045783], [1517208900000, 0.10489998, 0.1049, 0.10489998, 0.10489998, 22.07470829], [1517208960000, 0.10489999, 0.105, 0.104586, 0.104586, 477.45379301], [1517209020000, 0.10495606, 0.10500399, 0.10458602, 0.10499399, 6.2012201], [1517209080000, 0.10458608, 0.10499397, 0.10458605, 0.10499394, 11.35601575], [1517209140000, 0.104989, 0.10499392, 0.1046218, 0.10498899, 6.26329924], [1517209200000, 0.10498899, 0.10499399, 0.10458608, 0.10458609, 10.61999808], [1517209260000, 0.1045861, 0.1045861, 0.10458608, 0.1045861, 72.74414588], [1517209320000, 0.10458609, 0.1045861, 0.10458609, 0.10458609, 35.59711527], [1517209380000, 0.10458609, 0.105305, 0.10458609, 0.10527023, 31.4700483], [1517209440000, 0.10527013, 0.10528999, 0.10458614, 0.10512199, 9.94258429], [1517209500000, 0.10500001, 0.10500001, 0.10480001, 0.105, 18.65918141], [1517209560000, 0.105, 0.105, 0.10480001, 0.10480001, 9.83397508], [1517209620000, 0.10499999, 0.10499999, 0.10480001, 0.10485001, 23.19975253], [1517209680000, 0.10485001, 0.10499999, 0.10485001, 0.10499999, 7.32769323], [1517209740000, 0.10499999, 0.10512188, 0.1048, 0.1048, 47.90092904], [1517209800000, 0.1050001, 0.1050001, 0.10465, 0.10480011, 5.43085813], [1517209860000, 0.10480012, 0.10480012, 0.10465, 0.10465002, 7.67647479], [1517209920000, 0.1048001, 0.10480013, 0.10465006, 0.10480012, 12.1126132], [1517209980000, 0.10480012, 0.10499998, 0.10465007, 0.10499997, 33.11544352], [1517210040000, 0.10480013, 0.105, 0.10480012, 0.10480012, 36.26008095], [1517210100000, 0.10465021, 0.10499993, 0.10465007, 0.10499976, 7.60814135], [1517210160000, 0.10499973, 0.10499973, 0.10474477, 0.10475477, 10.87001995], [1517210220000, 0.1046501, 0.10499984, 0.10458614, 0.10499984, 11.92623583], [1517210280000, 0.10475501, 0.105, 0.10475501, 0.1049999, 5.34981695], [1517210340000, 0.10499982, 0.10499983, 0.10475501, 0.10489991, 9.1918519], [1517210400000, 0.10477599, 0.1049, 0.10475502, 0.10475503, 7.6654284], [1517210460000, 0.1048, 0.1049, 0.10465016, 0.10475503, 20.08005926], [1517210520000, 0.10475502, 0.10475503, 0.10475, 0.10475502, 6.26888839], [1517210580000, 0.10475, 0.10489999, 0.10465016, 0.10489973, 13.3182618], [1517210640000, 0.10489973, 0.10489973, 0.10475503, 0.10489972, 17.04139454], [1517210700000, 0.10489972, 0.10489972, 0.10465016, 0.10489968, 31.62924091], [1517210760000, 0.10465019, 0.10489972, 0.10465019, 0.1047, 12.12193641], [1517210820000, 0.1048997, 0.1048997, 0.10470001, 0.10470002, 9.40023812], [1517210880000, 0.10470003, 0.1048997, 0.10470003, 0.10489969, 5.40767398], [1517210940000, 0.10489969, 0.10489969, 0.10470051, 0.10488972, 15.16009274], [1517211000000, 0.10470055, 0.10489969, 0.10470051, 0.10488972, 5.59316336], [1517211060000, 0.10488972, 0.10488972, 0.1048, 0.10480002, 16.93349204], [1517211120000, 0.10485, 0.10489969, 0.10481, 0.10488972, 1.57075274], [1517211180000, 0.10488972, 0.1048997, 0.10485002, 0.1048997, 16.86092428], [1517211240000, 0.1048997, 0.10489978, 0.10489969, 0.10489973, 31.03773328], [1517211300000, 0.10489974, 0.105, 0.10481, 0.10481, 94.65296229], [1517211360000, 0.10481, 0.10499997, 0.10481, 0.10499996, 4.95028587], [1517211420000, 0.10499996, 0.10499997, 0.10481, 0.10481, 17.66056535], [1517211480000, 0.10481, 0.10499996, 0.1048, 0.10499995, 9.13966567], [1517211540000, 0.10499995, 0.10499995, 0.1048, 0.1048, 16.90578285], [1517211600000, 0.10480001, 0.1049, 0.10465019, 0.1046502, 65.91142124], [1517211660000, 0.1046502, 0.1046502, 0.10465016, 0.10465019, 8.0442125], [1517211720000, 0.10465019, 0.1046502, 0.10458607, 0.10458611, 37.49870158], [1517211780000, 0.10458609, 0.10458611, 0.10449984, 0.10449984, 33.56633607], [1517211840000, 0.10457501, 0.104586, 0.10446187, 0.1044809, 12.65517679], [1517211900000, 0.1044809, 0.104586, 0.10446187, 0.10446187, 17.79568147], [1517211960000, 0.1044959, 0.104586, 0.1043199, 0.10458599, 15.6269873], [1517212020000, 0.10458599, 0.104586, 0.10439854, 0.104493, 14.56716921], [1517212080000, 0.104493, 0.104493, 0.104493, 0.104493, 2.80150418], [1517212140000, 0.104493, 0.10479999, 0.10439855, 0.104493, 27.16261112], [1517212200000, 0.10458661, 0.10477964, 0.1044, 0.10440003, 70.14888959], [1517212260000, 0.10440003, 0.10473795, 0.10440003, 0.10451801, 7.53068376], [1517212320000, 0.10451801, 0.10451801, 0.1044, 0.10450802, 7.52915324], [1517212380000, 0.10450802, 0.10451801, 0.10450802, 0.10450802, 3.07255608], [1517212440000, 0.10450803, 0.10473863, 0.10450802, 0.1045081, 6.08668124], [1517212500000, 0.10450812, 0.10477957, 0.10450804, 0.10477956, 9.05698167], [1517212560000, 0.10477954, 0.10477954, 0.10450808, 0.10477933, 1.32283869], [1517212620000, 0.10477912, 0.10477964, 0.10450809, 0.10450809, 19.90620479], [1517212680000, 0.10460001, 0.1047696, 0.1044, 0.1044, 37.51171182], [1517212740000, 0.10439855, 0.10450809, 0.10428611, 0.10450809, 37.11414115], [1517212800000, 0.10450809, 0.1046, 0.104301, 0.104301, 21.26134408], [1517212860000, 0.104301, 0.10459999, 0.10407401, 0.10459994, 103.78485348], [1517212920000, 0.10459993, 0.1048, 0.10399999, 0.10416501, 85.86806406], [1517212980000, 0.104165, 0.10455992, 0.10394855, 0.10453999, 33.8858383], [1517213040000, 0.104099, 0.1045, 0.1038005, 0.1038005, 177.2273025], [1517213100000, 0.10384501, 0.104, 0.10375209, 0.10399999, 50.87219198], [1517213160000, 0.10399999, 0.10419159, 0.10375209, 0.10400563, 34.69802392], [1517213220000, 0.10400563, 0.10419157, 0.10361006, 0.10397, 31.30294572], [1517213280000, 0.10397, 0.10413741, 0.103652, 0.10401063, 30.26459331], [1517213340000, 0.10397, 0.10413377, 0.103652, 0.10376565, 17.25340847], [1517213400000, 0.10400544, 0.10448999, 0.10365201, 0.10365201, 21.30357574], [1517213460000, 0.1043046, 0.10446999, 0.1038, 0.10436998, 54.78152514], [1517213520000, 0.10436998, 0.10449999, 0.10436998, 0.10436998, 36.6378022], [1517213580000, 0.10437, 0.10443878, 0.10413755, 0.10437, 11.4310279], [1517213640000, 0.10437, 0.1044, 0.10413756, 0.1044, 12.63962471], [1517213700000, 0.10437, 0.10437, 0.10413756, 0.10431376, 17.76555397], [1517213760000, 0.10432377, 0.10437, 0.10413756, 0.10437, 5.80422452], [1517213820000, 0.1043138, 0.10437, 0.10413756, 0.1043138, 5.84734999], [1517213880000, 0.1043138, 0.10437, 0.10413758, 0.10436999, 39.64242864], [1517213940000, 0.10436999, 0.10437, 0.1043138, 0.10437, 61.22164401], [1517214000000, 0.10437, 0.10437, 0.10435156, 0.10437, 83.84068329], [1517214060000, 0.10437, 0.1045, 0.10437, 0.1045, 116.61046922], [1517214120000, 0.1045, 0.1045, 0.104371, 0.1045, 80.83873263], [1517214180000, 0.1045, 0.1045, 0.10440003, 0.1045, 79.92400006], [1517214240000, 0.1045, 0.1045, 0.10440004, 0.10440005, 4.99758954], [1517214300000, 0.10440005, 0.1045, 0.10440005, 0.1045, 32.78473873], [1517214360000, 0.1045, 0.1045, 0.10445004, 0.1045, 46.9092245], [1517214420000, 0.1045, 0.1045, 0.10445005, 0.1045, 50.61673839], [1517214480000, 0.1045, 0.1045, 0.10445006, 0.1045, 39.5659534], [1517214540000, 0.1045, 0.1045, 0.1045, 0.1045, 83.12735317], [1517214600000, 0.1045, 0.1045, 0.104491, 0.1045, 14.20800658], [1517214660000, 0.1045, 0.10459568, 0.10445113, 0.10459568, 10.93568111], [1517214720000, 0.10459568, 0.1046, 0.10431382, 0.1046, 138.91024625], [1517214780000, 0.10440002, 0.1046, 0.10413756, 0.10431391, 51.35957292], [1517214840000, 0.10431391, 0.10459, 0.10413761, 0.10459, 39.83131976], [1517214900000, 0.10440002, 0.1046, 0.10432891, 0.10440001, 16.84782326], [1517214960000, 0.10441502, 0.1046, 0.10440002, 0.10441502, 13.06049133], [1517215020000, 0.10441502, 0.10459999, 0.10440002, 0.10459999, 60.59339738], [1517215080000, 0.10459999, 0.1046, 0.10440004, 0.1046, 30.35961352], [1517215140000, 0.10459999, 0.10499, 0.10459999, 0.104718, 105.90753967], [1517215200000, 0.10471804, 0.1048, 0.104416, 0.10441602, 26.9636654], [1517215260000, 0.10479996, 0.10479996, 0.10441602, 0.10469995, 52.35964587], [1517215320000, 0.10460001, 0.10479999, 0.10441603, 0.10460002, 51.56574115], [1517215380000, 0.10460002, 0.10477995, 0.10441602, 0.1047699, 12.59995755], [1517215440000, 0.1047699, 0.10476993, 0.10440004, 0.10476988, 15.94188677], [1517215500000, 0.10476988, 0.1047699, 0.10440005, 0.104477, 58.05045192], [1517215560000, 0.104477, 0.104477, 0.104, 0.10444604, 101.89754475], [1517215620000, 0.10444604, 0.104477, 0.10444602, 0.10444603, 9.47445966], [1517215680000, 0.10444604, 0.10444604, 0.10444603, 0.10444604, 12.40314347], [1517215740000, 0.10444604, 0.10478, 0.10444603, 0.10449201, 53.21224576], [1517215800000, 0.10478, 0.10478, 0.104492, 0.10477999, 7.0686576], [1517215860000, 0.10477999, 0.10478, 0.10444603, 0.10477999, 23.52010141], [1517215920000, 0.10477, 0.10478, 0.10476, 0.10477, 3.61886736], [1517215980000, 0.10477, 0.10478, 0.1044807, 0.10478, 39.6038825], [1517216040000, 0.10478, 0.10478459, 0.1044807, 0.104784, 2.6376928], [1517216100000, 0.104784, 0.104784, 0.10444603, 0.10478, 16.39688213], [1517216160000, 0.10478, 0.1047829, 0.10448075, 0.10448076, 17.67931238], [1517216220000, 0.10448076, 0.1047829, 0.10448076, 0.10478289, 7.90232459], [1517216280000, 0.10478289, 0.1047829, 0.1044958, 0.1047829, 23.5884696], [1517216340000, 0.1047828, 0.10478288, 0.104778, 0.1047828, 12.38669377], [1517216400000, 0.10450002, 0.1047828, 0.10450001, 0.1047828, 7.40881865], [1517216460000, 0.1047828, 0.10478288, 0.10455003, 0.10455003, 8.50854992], [1517216520000, 0.10478288, 0.1047829, 0.10455003, 0.10478289, 30.24525054], [1517216580000, 0.10478288, 0.1047829, 0.10477, 0.1047829, 42.37465579], [1517216640000, 0.10478289, 0.1047829, 0.10455003, 0.1047829, 12.6204554], [1517216700000, 0.1047829, 0.1047829, 0.10455003, 0.10455004, 21.53769843], [1517216760000, 0.10455004, 0.10455004, 0.10455003, 0.10455003, 10.23214868], [1517216820000, 0.10455003, 0.10476299, 0.10444602, 0.10444602, 58.97580694], [1517216880000, 0.10444603, 0.10476999, 0.1042, 0.10455009, 3.22950688], [1517216940000, 0.10478459, 0.104795, 0.1045501, 0.1047846, 0.72732901], [1517217000000, 0.104795, 0.104795, 0.10478461, 0.10478463, 4.00978676], [1517217060000, 0.104795, 0.1048, 0.10478461, 0.1048, 79.61140236], [1517217120000, 0.1048, 0.1048, 0.10479002, 0.1047902, 2.72602359], [1517217180000, 0.1047902, 0.1048, 0.10479002, 0.10479002, 29.27205945], [1517217240000, 0.10479003, 0.1048, 0.10455, 0.10478461, 37.64606935], [1517217300000, 0.10479502, 0.10483, 0.10455, 0.104815, 7.9259693], [1517217360000, 0.104815, 0.10498497, 0.10455009, 0.1045501, 37.72355796], [1517217420000, 0.1046, 0.10496999, 0.10455, 0.10496999, 32.69852793], [1517217480000, 0.10496997, 0.10496997, 0.10455012, 0.1047, 8.5009011], [1517217540000, 0.1047, 0.10492924, 0.1046, 0.10491423, 39.41640872], [1517217600000, 0.10491423, 0.10491423, 0.10455012, 0.10455012, 23.08179534], [1517217660000, 0.10455016, 0.10479503, 0.10455016, 0.10479493, 4.38815914], [1517217720000, 0.10479491, 0.10488899, 0.10461015, 0.10461018, 11.90071498], [1517217780000, 0.10461018, 0.10488881, 0.1045501, 0.10455017, 43.57243368], [1517217840000, 0.10479988, 0.10479988, 0.10455011, 0.10455011, 5.27948458], [1517217900000, 0.10459001, 0.10479986, 0.10459, 0.10479986, 5.45092427], [1517217960000, 0.10479986, 0.10479986, 0.1045501, 0.10478986, 7.17659026], [1517218020000, 0.10479984, 0.10479986, 0.10460001, 0.10479974, 2.87184081], [1517218080000, 0.10479981, 0.10479982, 0.10468, 0.10470001, 19.54690151], [1517218140000, 0.10470001, 0.10470003, 0.1047, 0.10470003, 8.02047004], [1517218200000, 0.10479982, 0.10479982, 0.10470005, 0.104799, 6.49032547], [1517218260000, 0.104799, 0.10499496, 0.10470003, 0.10499496, 55.30046228], [1517218320000, 0.10470003, 0.10499497, 0.10470003, 0.10499497, 10.13900013], [1517218380000, 0.10499495, 0.10499497, 0.10470009, 0.1047001, 12.50560437], [1517218440000, 0.1047201, 0.10499497, 0.1047001, 0.10470011, 23.05572503], [1517218500000, 0.10499497, 0.10499497, 0.1047001, 0.1047001, 25.65964904], [1517218560000, 0.10499495, 0.10499495, 0.10470005, 0.10470009, 34.1398824], [1517218620000, 0.10470009, 0.10470009, 0.10470005, 0.10470005, 12.85090557], [1517218680000, 0.10470011, 0.10472, 0.10470005, 0.10472, 13.29715265], [1517218740000, 0.10488005, 0.10488005, 0.1047, 0.1047, 39.46462066], [1517218800000, 0.10460004, 0.10470004, 0.10460003, 0.10470004, 4.90802678], [1517218860000, 0.10470001, 0.10495999, 0.1046, 0.10495999, 28.23611282], [1517218920000, 0.10470004, 0.10495999, 0.1047, 0.10470004, 13.80533554], [1517218980000, 0.10470004, 0.10489999, 0.10459449, 0.10470001, 21.0015432], [1517219040000, 0.10470001, 0.1049, 0.10455014, 0.10471503, 28.87596654], [1517219100000, 0.10489999, 0.10489999, 0.1045501, 0.10488991, 31.34740057], [1517219160000, 0.10455015, 0.1046845, 0.10420001, 0.10468438, 109.35706422], [1517219220000, 0.10425002, 0.10468429, 0.10420002, 0.10420003, 10.87638577], [1517219280000, 0.10420003, 0.10466189, 0.1042, 0.10456851, 23.2717164], [1517219340000, 0.1042, 0.1045682, 0.10410907, 0.10412912, 15.62423915], [1517219400000, 0.104524, 0.10452696, 0.10412912, 0.10414003, 3.42495344], [1517219460000, 0.10452681, 0.10453846, 0.10452674, 0.10452676, 14.05703612], [1517219520000, 0.10452676, 0.10453845, 0.10414005, 0.10453843, 15.80321855], [1517219580000, 0.10453845, 0.1047047, 0.10453841, 0.10453842, 11.26722605], [1517219640000, 0.10453842, 0.10477997, 0.1045384, 0.1045384, 6.85452347], [1517219700000, 0.10470467, 0.10470467, 0.1045384, 0.10470456, 8.18504347], [1517219760000, 0.1047, 0.1047, 0.10454001, 0.10454003, 3.4533872], [1517219820000, 0.10469983, 0.10469983, 0.10454004, 0.10469983, 3.15903375], [1517219880000, 0.10469982, 0.10469982, 0.10454003, 0.10454004, 8.00633384], [1517219940000, 0.10463146, 0.10469983, 0.10463146, 0.10463146, 9.08680638], [1517220000000, 0.1047, 0.10481858, 0.10469999, 0.10481857, 20.21720954], [1517220060000, 0.10481858, 0.10485999, 0.10469999, 0.10470003, 16.55198397], [1517220120000, 0.10470003, 0.10486, 0.10431, 0.10453841, 93.19396251], [1517220180000, 0.10453841, 0.10488, 0.10431, 0.10485998, 34.82994154], [1517220240000, 0.10442676, 0.10489999, 0.10431, 0.1048999, 38.14859694], [1517220300000, 0.10489982, 0.10489982, 0.1045, 0.10470002, 7.07883897], [1517220360000, 0.10470002, 0.10489987, 0.10450001, 0.10450002, 21.28092136], [1517220420000, 0.10489987, 0.1049, 0.10450002, 0.1048599, 8.33055382], [1517220480000, 0.10470001, 0.10485992, 0.1047, 0.1048599, 7.81582371], [1517220540000, 0.10486, 0.1049, 0.1048599, 0.10485992, 6.02382038], [1517220600000, 0.10485992, 0.1049, 0.10485992, 0.10485992, 38.43193454], [1517220660000, 0.1049, 0.1049, 0.1047, 0.10470001, 11.74125824], [1517220720000, 0.1049, 0.1049, 0.10470001, 0.1049, 12.75462773], [1517220780000, 0.1049, 0.1049, 0.10450002, 0.10461223, 41.42104045], [1517220840000, 0.10461223, 0.1049, 0.10458084, 0.10461223, 6.43328728], [1517220900000, 0.10461223, 0.10489, 0.10461223, 0.10489, 4.73500047], [1517220960000, 0.10488999, 0.10489, 0.1046123, 0.10488999, 14.71010495], [1517221020000, 0.10489, 0.1049, 0.10465, 0.10465001, 21.81171289], [1517221080000, 0.10486, 0.1049, 0.10465, 0.1048599, 6.30202898], [1517221140000, 0.1048599, 0.1049, 0.1048599, 0.1049, 7.56574149], [1517221200000, 0.1049, 0.1049, 0.10488006, 0.1049, 40.09793507], [1517221260000, 0.1049, 0.1049, 0.10465003, 0.1049, 14.96968221], [1517221320000, 0.1049, 0.1049, 0.10465101, 0.10465105, 21.72549002], [1517221380000, 0.10487, 0.1049, 0.1046511, 0.1049, 20.86450644], [1517221440000, 0.1048, 0.1049, 0.10470032, 0.1049, 2.21710184], [1517221500000, 0.1049, 0.105, 0.10470045, 0.10470047, 62.22409953], [1517221560000, 0.1049, 0.1049, 0.10470048, 0.10470048, 17.85199441], [1517221620000, 0.10470052, 0.1049, 0.10470048, 0.10481503, 9.08221546], [1517221680000, 0.10489998, 0.105, 0.10481503, 0.105, 72.10266001], [1517221740000, 0.10499997, 0.105, 0.10482002, 0.10482002, 24.35891746], [1517221800000, 0.10482002, 0.10499999, 0.10482002, 0.10482003, 6.9988864], [1517221860000, 0.10482003, 0.105, 0.104756, 0.10475601, 31.82571945], [1517221920000, 0.10475601, 0.105, 0.10475601, 0.10482001, 11.61550002], [1517221980000, 0.10482001, 0.105, 0.104756, 0.10483052, 17.69943904], [1517222040000, 0.10483052, 0.105, 0.10483, 0.105, 15.62748246], [1517222100000, 0.10483053, 0.105, 0.10483, 0.105, 7.62113982], [1517222160000, 0.10486005, 0.105, 0.10486003, 0.10486003, 62.88210551], [1517222220000, 0.10486002, 0.10499998, 0.10483052, 0.10499998, 9.75265781], [1517222280000, 0.10499997, 0.10499998, 0.10486005, 0.10486007, 10.73711692], [1517222340000, 0.10499996, 0.105, 0.10486007, 0.105, 13.01503484], [1517222400000, 0.10501903, 0.10509999, 0.105, 0.10500002, 11.72126164], [1517222460000, 0.1050999, 0.1050999, 0.10502365, 0.10502365, 7.9803209], [1517222520000, 0.10502402, 0.10509, 0.10502, 0.10502364, 5.74105185], [1517222580000, 0.10502005, 0.10509987, 0.10502, 0.10502, 42.7266564], [1517222640000, 0.10502005, 0.10509987, 0.10502001, 0.10506, 15.58912553], [1517222700000, 0.10509987, 0.10509987, 0.10500002, 0.10506001, 42.25230418], [1517222760000, 0.10509987, 0.10509987, 0.10500002, 0.10506002, 29.6104711], [1517222820000, 0.10506002, 0.10509985, 0.10500002, 0.10500002, 21.22736257], [1517222880000, 0.10500002, 0.105002, 0.1048601, 0.105, 17.46808602], [1517222940000, 0.105, 0.10500001, 0.10483, 0.10500001, 34.78098251], [1517223000000, 0.10500001, 0.10506002, 0.10465102, 0.10465102, 57.05250451], [1517223060000, 0.10499999, 0.10500008, 0.10471, 0.10471003, 14.95649865], [1517223120000, 0.10499999, 0.105, 0.10471005, 0.10471008, 6.49088471], [1517223180000, 0.10472006, 0.105, 0.10472006, 0.105, 10.90734333], [1517223240000, 0.10499999, 0.1051, 0.10472006, 0.10472007, 16.50039767], [1517223300000, 0.10472008, 0.10508986, 0.10472007, 0.1049, 27.72956136], [1517223360000, 0.1049, 0.10508985, 0.1049, 0.10508982, 3.30125605], [1517223420000, 0.10508982, 0.10508982, 0.10490003, 0.1050898, 7.80861656], [1517223480000, 0.1050898, 0.10508983, 0.10490002, 0.10508983, 39.97754912], [1517223540000, 0.10508983, 0.10508983, 0.10490012, 0.10490015, 8.12401226], [1517223600000, 0.10490018, 0.10508982, 0.10490018, 0.10508982, 2.72109018], [1517223660000, 0.10508982, 0.10508983, 0.104905, 0.10508983, 22.81166326], [1517223720000, 0.10500002, 0.10508983, 0.10500002, 0.10508983, 11.06078879], [1517223780000, 0.10508983, 0.10509, 0.10500002, 0.10508987, 36.53377192], [1517223840000, 0.10509, 0.1051, 0.10500111, 0.10508988, 9.62298721], [1517223900000, 0.10509998, 0.10509998, 0.10500002, 0.10500002, 6.40089528], [1517223960000, 0.10500002, 0.10508988, 0.10490501, 0.10490501, 21.97674084], [1517224020000, 0.10508987, 0.1051, 0.10490502, 0.1049667, 17.13488069], [1517224080000, 0.10496671, 0.10508974, 0.10496671, 0.10508967, 6.2268045], [1517224140000, 0.10508955, 0.1051, 0.10496671, 0.10496671, 29.46462561], [1517224200000, 0.10508928, 0.10508928, 0.10496671, 0.10496678, 13.31794273], [1517224260000, 0.10496678, 0.10508921, 0.10496678, 0.105, 24.99290983], [1517224320000, 0.105, 0.1050877, 0.10496675, 0.105, 12.09179064], [1517224380000, 0.10499998, 0.105, 0.10491, 0.10491001, 30.65449], [1517224440000, 0.105, 0.10508933, 0.10491001, 0.10508923, 15.1715837], [1517224500000, 0.10508923, 0.10508924, 0.10491003, 0.10506997, 11.57174902], [1517224560000, 0.10506995, 0.10506995, 0.10490501, 0.10506991, 89.00409173], [1517224620000, 0.10490602, 0.1050318, 0.10472009, 0.10491002, 149.27069967], [1517224680000, 0.10491002, 0.1050318, 0.10491002, 0.1050318, 16.35808583], [1517224740000, 0.10506991, 0.10508923, 0.1050468, 0.10508923, 8.73644721], [1517224800000, 0.10508924, 0.10508924, 0.10508, 0.10508923, 24.32085621], [1517224860000, 0.10508924, 0.10508933, 0.10508922, 0.10508933, 15.10809162], [1517224920000, 0.10508933, 0.10508933, 0.10508922, 0.10508927, 26.17008218], [1517224980000, 0.10508928, 0.10509, 0.10475479, 0.105089, 38.30866253], [1517225040000, 0.10508924, 0.10508925, 0.10475492, 0.10508901, 11.60328468], [1517225100000, 0.10508901, 0.10508924, 0.10475491, 0.1048, 17.78148233], [1517225160000, 0.1048089, 0.105089, 0.1048089, 0.10488001, 42.11289492], [1517225220000, 0.10488001, 0.10496, 0.10483, 0.10483002, 28.24668708], [1517225280000, 0.10483002, 0.10496, 0.10483, 0.10483001, 20.7037184], [1517225340000, 0.10483001, 0.10483001, 0.10475491, 0.10477374, 54.33866473], [1517225400000, 0.10477375, 0.10495994, 0.10475491, 0.10495994, 29.30565553], [1517225460000, 0.10495994, 0.10495994, 0.1048, 0.10483006, 21.01961763], [1517225520000, 0.10495986, 0.10496, 0.10472006, 0.10496, 59.68099387], [1517225580000, 0.10472137, 0.10496, 0.10472005, 0.10496, 73.97005588], [1517225640000, 0.10496, 0.10509, 0.10472005, 0.1047698, 23.14638797], [1517225700000, 0.105, 0.10508997, 0.10472006, 0.105, 12.02339021], [1517225760000, 0.105, 0.10508996, 0.10476982, 0.10499, 32.05692367], [1517225820000, 0.10499, 0.105, 0.10472005, 0.10499995, 33.00275899], [1517225880000, 0.10499989, 0.105, 0.10473, 0.10473, 28.7230912], [1517225940000, 0.10499989, 0.10508997, 0.10472005, 0.10499986, 30.69030503], [1517226000000, 0.10499986, 0.10508997, 0.10484321, 0.10508997, 45.52307391], [1517226060000, 0.10508997, 0.10509, 0.10499988, 0.10499989, 18.22850132], [1517226120000, 0.10499989, 0.10509, 0.10499988, 0.10499989, 6.7775382], [1517226180000, 0.10499989, 0.10508913, 0.10499978, 0.1050891, 13.02024496], [1517226240000, 0.1049999, 0.10509, 0.10499989, 0.10508913, 11.20201495], [1517226300000, 0.10508914, 0.10509, 0.1049, 0.10507, 22.77080956], [1517226360000, 0.10507, 0.10507, 0.10499989, 0.10506997, 54.74358565], [1517226420000, 0.10506997, 0.10508999, 0.10499989, 0.10508999, 15.43550133], [1517226480000, 0.10507, 0.10509999, 0.10472005, 0.10509995, 26.06948047], [1517226540000, 0.10509995, 0.10509995, 0.10507002, 0.10507002, 4.19300791], [1517226600000, 0.10507002, 0.10509999, 0.10472006, 0.10472006, 33.45655039], [1517226660000, 0.10509998, 0.10509999, 0.10507002, 0.10507002, 18.5969964], [1517226720000, 0.10507002, 0.10509999, 0.104711, 0.10472, 44.10604269], [1517226780000, 0.10472, 0.10509991, 0.10471101, 0.10509981, 10.27636563], [1517226840000, 0.1050998, 0.10509991, 0.10481999, 0.10483002, 18.42030216], [1517226900000, 0.1049, 0.10509991, 0.104831, 0.104831, 25.98824963], [1517226960000, 0.10500001, 0.1050999, 0.10500001, 0.10509971, 6.85987694], [1517227020000, 0.10509971, 0.10509991, 0.10483101, 0.10483101, 43.01856567], [1517227080000, 0.1050997, 0.1050997, 0.10483105, 0.1050997, 3.89888792], [1517227140000, 0.1050997, 0.1051, 0.10483102, 0.1050999, 67.50702251], [1517227200000, 0.1050999, 0.1051, 0.1050999, 0.10509992, 11.65401752], [1517227260000, 0.10509992, 0.10509999, 0.105, 0.10509998, 16.93131203], [1517227320000, 0.10500001, 0.10509998, 0.10500001, 0.10509998, 7.92441091], [1517227380000, 0.10509998, 0.1051, 0.10483105, 0.1051, 72.96904839], [1517227440000, 0.105, 0.1051, 0.10483105, 0.10509998, 5.6602234], [1517227500000, 0.10509998, 0.10509999, 0.10484107, 0.10509999, 6.67470794], [1517227560000, 0.10509999, 0.10509999, 0.10487108, 0.10509998, 8.32658003], [1517227620000, 0.10509998, 0.10509999, 0.1048911, 0.10509999, 24.44515669], [1517227680000, 0.10509999, 0.1051, 0.10509998, 0.1051, 15.71479494], [1517227740000, 0.1051, 0.1051, 0.10490112, 0.1051, 7.2032869], [1517227800000, 0.10509999, 0.1051, 0.10509998, 0.1051, 1.06969346], [1517227860000, 0.1051, 0.1051, 0.105, 0.10509999, 4.31336008], [1517227920000, 0.10505, 0.10509999, 0.10500001, 0.10509999, 4.48419614], [1517227980000, 0.10509999, 0.1051, 0.10509999, 0.1051, 5.67260302], [1517228040000, 0.10509999, 0.1052, 0.10509999, 0.10510001, 27.47927228], [1517228100000, 0.1052, 0.1052, 0.10509999, 0.1052, 4.60528172], [1517228160000, 0.1052, 0.1052, 0.10510005, 0.1052, 10.62140138], [1517228220000, 0.1052, 0.1052, 0.10510006, 0.1052, 109.42010161], [1517228280000, 0.10529494, 0.10529494, 0.1052, 0.1052, 16.79507863], [1517228340000, 0.10520001, 0.10529489, 0.1052, 0.10525001, 8.10956582], [1517228400000, 0.10525001, 0.10529496, 0.10525, 0.10529487, 13.26363638], [1517228460000, 0.10529496, 0.10551857, 0.10529496, 0.1055, 254.18841454], [1517228520000, 0.10529498, 0.10549999, 0.10526, 0.10549999, 86.76173246], [1517228580000, 0.10549999, 0.1055699, 0.10526003, 0.10554002, 61.07018468], [1517228640000, 0.1055699, 0.10556991, 0.1055001, 0.10556988, 60.74189618], [1517228700000, 0.10554002, 0.106, 0.10554, 0.10569386, 148.77510374], [1517228760000, 0.10560011, 0.10599999, 0.10554, 0.10599999, 210.36549127], [1517228820000, 0.10554002, 0.10574991, 0.10526, 0.10554002, 29.12443399], [1517228880000, 0.10554002, 0.10578991, 0.10554001, 0.10563, 7.62973306], [1517228940000, 0.10563, 0.10577998, 0.10554002, 0.10554002, 4.51450077], [1517229000000, 0.10577992, 0.10580001, 0.10554001, 0.10554007, 10.42436496], [1517229060000, 0.1056, 0.1056, 0.10526005, 0.10526005, 134.31171771], [1517229120000, 0.10540003, 0.10554, 0.10533615, 0.10554, 9.79154865], [1517229180000, 0.10540005, 0.10554, 0.10540005, 0.10553999, 7.70416236], [1517229240000, 0.10540006, 0.10553999, 0.10512507, 0.10517089, 27.34890928], [1517229300000, 0.10540006, 0.10540006, 0.10510005, 0.10510007, 7.8369906], [1517229360000, 0.10510008, 0.1053, 0.10510001, 0.10510006, 52.58372231], [1517229420000, 0.10510006, 0.10535, 0.10510001, 0.1053, 78.14885694], [1517229480000, 0.10530001, 0.10535, 0.10510001, 0.10528948, 15.13858065], [1517229540000, 0.10515623, 0.10528948, 0.10515623, 0.10528948, 6.80540998], [1517229600000, 0.10528948, 0.1053, 0.10501954, 0.10528948, 23.33559264], [1517229660000, 0.10528948, 0.10528948, 0.10516623, 0.10516625, 10.82983698], [1517229720000, 0.10528947, 0.1053, 0.10528947, 0.10528948, 14.08715695], [1517229780000, 0.1053, 0.1053, 0.10528944, 0.10528944, 7.91290647], [1517229840000, 0.10528948, 0.1053, 0.10528948, 0.1053, 2.56228199], [1517229900000, 0.10528949, 0.1053, 0.10515623, 0.10528952, 51.56075274], [1517229960000, 0.1053, 0.1053, 0.10528952, 0.10528952, 13.57421568], [1517230020000, 0.10529999, 0.10529999, 0.1052895, 0.10528952, 5.43758738], [1517230080000, 0.10528952, 0.10529998, 0.1052895, 0.10529998, 5.13791033], [1517230140000, 0.10529996, 0.10529997, 0.10515622, 0.10529996, 44.54298289], [1517230200000, 0.10529996, 0.10529999, 0.1051, 0.10529995, 28.86718341], [1517230260000, 0.10529995, 0.10529999, 0.10529995, 0.10529998, 19.8548263], [1517230320000, 0.10529998, 0.10529999, 0.10510003, 0.10529999, 9.74886073], [1517230380000, 0.10529999, 0.1053, 0.10529995, 0.10529996, 4.70096794], [1517230440000, 0.10529996, 0.1054895, 0.10510004, 0.1053, 52.22614571], [1517230500000, 0.10530001, 0.1054895, 0.1053, 0.10530001, 8.55228008], [1517230560000, 0.10530001, 0.10548, 0.10530001, 0.10547971, 9.32899599], [1517230620000, 0.10547959, 0.10547963, 0.10530001, 0.10547963, 30.23879655], [1517230680000, 0.10547963, 0.10547963, 0.10530004, 0.10532143, 10.83767004], [1517230740000, 0.10547944, 0.10547944, 0.10532143, 0.10534144, 29.69484322], [1517230800000, 0.10534144, 0.10548948, 0.10530004, 0.10530004, 86.49735807], [1517230860000, 0.10548896, 0.10548896, 0.10530001, 0.1053505, 21.33850974], [1517230920000, 0.10536004, 0.10547892, 0.10531007, 0.10547869, 16.00227136], [1517230980000, 0.10547869, 0.10547873, 0.10531007, 0.10547869, 41.90894581], [1517231040000, 0.10531018, 0.10547863, 0.1053, 0.10532508, 20.05017451], [1517231100000, 0.10532508, 0.10547848, 0.1053, 0.10547831, 19.30590428], [1517231160000, 0.10531114, 0.10547826, 0.1053, 0.10547821, 52.89976983], [1517231220000, 0.10533501, 0.10547821, 0.1053, 0.1053, 153.95997592], [1517231280000, 0.1053, 0.10531001, 0.10529999, 0.10531, 209.9726866], [1517231340000, 0.10530999, 0.10531, 0.10513154, 0.10530999, 13.10593478], [1517231400000, 0.10531, 0.10531001, 0.10510007, 0.10510007, 4.08693934], [1517231460000, 0.10510009, 0.10547822, 0.10510007, 0.105101, 5.82516155], [1517231520000, 0.10510103, 0.1052972, 0.105101, 0.1052972, 17.71816841], [1517231580000, 0.10529722, 0.10547824, 0.105297, 0.1052972, 62.22470682], [1517231640000, 0.1052973, 0.10547809, 0.10511, 0.10511, 19.58108763], [1517231700000, 0.10529397, 0.10529397, 0.10511003, 0.10511003, 3.06805412], [1517231760000, 0.10511006, 0.10529268, 0.10511, 0.10529249, 28.41911932], [1517231820000, 0.10529196, 0.10547818, 0.10529195, 0.10529268, 26.66817931], [1517231880000, 0.10547814, 0.10547814, 0.10511, 0.10544983, 24.93509708], [1517231940000, 0.10529255, 0.10544975, 0.10529195, 0.10544971, 7.42448546], [1517232000000, 0.10544969, 0.10544989, 0.10529196, 0.10529197, 15.56414312], [1517232060000, 0.10529196, 0.10543587, 0.10529196, 0.10541, 5.48935963], [1517232120000, 0.10540473, 0.10541, 0.10530103, 0.10541, 7.10989941], [1517232180000, 0.10540999, 0.10540999, 0.10530107, 0.10540997, 5.58431259], [1517232240000, 0.10540999, 0.10541, 0.1053, 0.1053, 36.94897502], [1517232300000, 0.10540999, 0.10544989, 0.1053, 0.1053, 28.72433077], [1517232360000, 0.1053, 0.10530001, 0.1053, 0.1053, 48.77304176], [1517232420000, 0.10530001, 0.10541, 0.1053, 0.10541, 11.28100648], [1517232480000, 0.10544989, 0.10547802, 0.10530001, 0.10530022, 18.80164541], [1517232540000, 0.10530012, 0.10544, 0.1053, 0.10543999, 9.41254034], [1517232600000, 0.10530002, 0.1056, 0.10530002, 0.10530004, 71.55862432], [1517232660000, 0.10557989, 0.10557989, 0.10530001, 0.10550983, 62.68166391], [1517232720000, 0.10550983, 0.10550983, 0.10530001, 0.10549959, 13.27726655], [1517232780000, 0.10530005, 0.1056, 0.10530004, 0.10550953, 27.92858975], [1517232840000, 0.10556, 0.10556, 0.10550953, 0.10550954, 10.26089923], [1517232900000, 0.10555984, 0.10555984, 0.10531, 0.10550953, 40.22311027], [1517232960000, 0.10550955, 0.10550955, 0.10530004, 0.10531001, 10.78610603], [1517233020000, 0.10550373, 0.1055095, 0.10531001, 0.10531001, 33.546607], [1517233080000, 0.10531001, 0.10550939, 0.10531001, 0.10531001, 9.98267027], [1517233140000, 0.10531834, 0.10549976, 0.10531001, 0.10531003, 15.78599396], [1517233200000, 0.10531003, 0.10549975, 0.10531002, 0.10531099, 8.63079957], [1517233260000, 0.10548, 0.10548, 0.10531099, 0.10531201, 5.61450953], [1517233320000, 0.10531255, 0.10547695, 0.10531005, 0.10531103, 17.30040224], [1517233380000, 0.10531103, 0.10544483, 0.10531005, 0.10532, 14.33353187], [1517233440000, 0.10532, 0.1054448, 0.10531302, 0.10531304, 10.73993442], [1517233500000, 0.10532, 0.10532, 0.10531001, 0.10531001, 63.00997456], [1517233560000, 0.10531001, 0.10531003, 0.10530001, 0.10531002, 18.75644125], [1517233620000, 0.10531002, 0.10531003, 0.10530001, 0.10531002, 11.05666782], [1517233680000, 0.10531002, 0.10531003, 0.10530001, 0.10531001, 6.26916128], [1517233740000, 0.10531001, 0.10531003, 0.1053, 0.10531002, 7.78212212], [1517233800000, 0.10531002, 0.10531002, 0.1053, 0.1053, 5.29670834], [1517233860000, 0.1053, 0.10531003, 0.10529197, 0.1053, 22.50300337], [1517233920000, 0.10531003, 0.10531003, 0.10529181, 0.10529181, 7.58741183], [1517233980000, 0.10529181, 0.10529197, 0.10511, 0.10511001, 3.46508093], [1517234040000, 0.10511001, 0.10529197, 0.10511001, 0.10525, 10.446217], [1517234100000, 0.10525, 0.10525, 0.10524999, 0.10524999, 1.1290568], [1517234160000, 0.10524999, 0.10524999, 0.10511007, 0.10524999, 18.64165059], [1517234220000, 0.10524999, 0.10524999, 0.10514533, 0.10524999, 17.39617904], [1517234280000, 0.10514538, 0.10531003, 0.10514538, 0.10529199, 90.21582301], [1517234340000, 0.10531003, 0.10531003, 0.10514535, 0.1053, 245.98975826], [1517234400000, 0.1053, 0.1053, 0.10514535, 0.1052925, 7.24692906], [1517234460000, 0.1052925, 0.1053, 0.10514534, 0.10529253, 7.30341153], [1517234520000, 0.1053, 0.1053, 0.10529253, 0.10529253, 15.92763037], [1517234580000, 0.10529251, 0.1053, 0.1052925, 0.1053, 7.55748169], [1517234640000, 0.10529254, 0.1053, 0.10529, 0.10529002, 14.63895792], [1517234700000, 0.10529002, 0.1053, 0.10529002, 0.1053, 24.45164077], [1517234760000, 0.10529005, 0.10529999, 0.10529005, 0.10529101, 5.65634135], [1517234820000, 0.10529101, 0.10529998, 0.105291, 0.105291, 9.14089172], [1517234880000, 0.10529997, 0.10529998, 0.10529104, 0.10529998, 13.25516913], [1517234940000, 0.10529998, 0.105313, 0.10529997, 0.105313, 50.10364257], [1517235000000, 0.105313, 0.10555, 0.10531004, 0.10553813, 17.73320651], [1517235060000, 0.10553813, 0.10553816, 0.10533, 0.1055, 12.05660354], [1517235120000, 0.10532903, 0.10549991, 0.10532903, 0.10544533, 18.95072881], [1517235180000, 0.10544, 0.1055, 0.10544, 0.10544012, 33.93759266], [1517235240000, 0.1055, 0.1055, 0.10544, 0.10544023, 13.46634104], [1517235300000, 0.10544527, 0.10553814, 0.10544, 0.10544, 41.26545401], [1517235360000, 0.10549996, 0.10553814, 0.10532902, 0.10533001, 31.74655836], [1517235420000, 0.10553813, 0.10553813, 0.10533001, 0.10533011, 22.50305286], [1517235480000, 0.10533003, 0.10543984, 0.10533001, 0.10543983, 9.11468053], [1517235540000, 0.105435, 0.10555, 0.10533001, 0.1054, 73.6584778], [1517235600000, 0.10540001, 0.10555, 0.1054, 0.10542002, 17.24146105], [1517235660000, 0.10542003, 0.10554999, 0.10542, 0.10542, 32.57594871], [1517235720000, 0.10554999, 0.10554999, 0.10542082, 0.10542086, 14.80065847], [1517235780000, 0.105421, 0.105421, 0.10542082, 0.10542085, 13.20672584], [1517235840000, 0.10542085, 0.10554796, 0.10542083, 0.10542085, 3.51248723], [1517235900000, 0.10554796, 0.105548, 0.10542083, 0.10554799, 58.50626633], [1517235960000, 0.105548, 0.10554999, 0.10542083, 0.10554782, 45.09798008], [1517236020000, 0.10546317, 0.10554782, 0.10546317, 0.10554775, 1.84707363], [1517236080000, 0.10554775, 0.10554776, 0.1054208, 0.10554776, 8.87150171], [1517236140000, 0.10554208, 0.10554776, 0.10546321, 0.10550001, 13.66111645], [1517236200000, 0.10550002, 0.1055474, 0.10550001, 0.10550004, 25.01341394], [1517236260000, 0.10550003, 0.10550004, 0.1055, 0.10550004, 13.60877533], [1517236320000, 0.10550003, 0.10550004, 0.1055, 0.10550004, 16.73062499], [1517236380000, 0.10550004, 0.10550004, 0.1055, 0.10550004, 17.54068702], [1517236440000, 0.10550004, 0.10555, 0.10550003, 0.10555, 28.34148206], [1517236500000, 0.1055474, 0.1055474, 0.10550005, 0.1055001, 5.89745426], [1517236560000, 0.1055001, 0.1055001, 0.10550008, 0.10550009, 6.90203462], [1517236620000, 0.1055001, 0.1055001, 0.10550004, 0.10550004, 11.84367036], [1517236680000, 0.1055001, 0.1055001, 0.10550004, 0.10550005, 18.47665536], [1517236740000, 0.10550005, 0.10555, 0.10550004, 0.10550004, 45.5825173], [1517236800000, 0.1055001, 0.10555, 0.1055, 0.1055, 304.22352455], [1517236860000, 0.1055001, 0.10555, 0.1055, 0.10555, 6.98673535], [1517236920000, 0.10550005, 0.10555774, 0.10550005, 0.10555, 3.23562807], [1517236980000, 0.10555774, 0.10569, 0.10555774, 0.10569, 4.94623701], [1517237040000, 0.10569, 0.1057, 0.10555, 0.10569889, 23.99875453], [1517237100000, 0.10569889, 0.10569889, 0.10550002, 0.10569889, 3.76040187], [1517237160000, 0.10569889, 0.105699, 0.10555555, 0.10555555, 44.10822451], [1517237220000, 0.10569888, 0.10569888, 0.10555555, 0.10564999, 70.20685304], [1517237280000, 0.10564999, 0.10565, 0.10555558, 0.10559999, 15.43914579], [1517237340000, 0.10555603, 0.10559999, 0.105556, 0.10559999, 3.51397011], [1517237400000, 0.10559999, 0.10565, 0.10555555, 0.10555555, 27.97907933], [1517237460000, 0.10555555, 0.10555604, 0.10555555, 0.10555558, 39.00466066], [1517237520000, 0.105556, 0.10555602, 0.10555558, 0.10555602, 13.80248041], [1517237580000, 0.10555602, 0.1056, 0.10555602, 0.1056, 3.41776793], [1517237640000, 0.10560001, 0.10565, 0.105556, 0.10560001, 100.6361077], [1517237700000, 0.10565, 0.10565, 0.10560001, 0.10565, 49.08968508], [1517237760000, 0.10565, 0.10577239, 0.10562501, 0.1056989, 37.64894907], [1517237820000, 0.10575001, 0.10599998, 0.10560001, 0.10562, 57.42397884], [1517237880000, 0.10599998, 0.106, 0.10562, 0.10562002, 199.27681725], [1517237940000, 0.10562001, 0.10599993, 0.10562, 0.10599966, 69.22635482], [1517238000000, 0.10568481, 0.10599965, 0.10560002, 0.10562051, 65.72455552], [1517238060000, 0.10599848, 0.10599849, 0.10562003, 0.10562003, 52.36561322], [1517238120000, 0.10562066, 0.10586621, 0.10562003, 0.105796, 11.45643342], [1517238180000, 0.10563569, 0.10586595, 0.10562066, 0.10586577, 44.72077339], [1517238240000, 0.10562068, 0.10586576, 0.10562068, 0.10563572, 6.69790608], [1517238300000, 0.10580722, 0.10580743, 0.10580717, 0.10580717, 34.17929885], [1517238360000, 0.10563574, 0.10580717, 0.10563573, 0.10563575, 8.8908199], [1517238420000, 0.10563576, 0.10580669, 0.10563576, 0.1056358, 16.35883961], [1517238480000, 0.10580666, 0.10580666, 0.10563581, 0.10563581, 10.99213414], [1517238540000, 0.10563584, 0.10580645, 0.10563582, 0.10580644, 3.55319812], [1517238600000, 0.10580644, 0.10580645, 0.10563685, 0.10580601, 22.45466337], [1517238660000, 0.10580644, 0.10580718, 0.10580601, 0.10580601, 65.52385818], [1517238720000, 0.10580601, 0.10580601, 0.10564, 0.10564, 39.61695621], [1517238780000, 0.10575318, 0.10575337, 0.10563688, 0.10575337, 8.65507683], [1517238840000, 0.105753, 0.10580718, 0.10563688, 0.10575318, 16.36648539], [1517238900000, 0.10575337, 0.10580718, 0.10575318, 0.105755, 19.68617626], [1517238960000, 0.105755, 0.10589899, 0.105755, 0.105755, 14.59261932], [1517239020000, 0.105755, 0.10589899, 0.105755, 0.10589899, 126.37465071], [1517239080000, 0.10589899, 0.10589899, 0.10575502, 0.10575502, 10.40623102], [1517239140000, 0.10575503, 0.10586701, 0.105755, 0.10575502, 7.00941182], [1517239200000, 0.10575502, 0.10589999, 0.10575502, 0.105899, 14.59286233], [1517239260000, 0.10589899, 0.10589899, 0.10576, 0.1058, 3.01156852], [1517239320000, 0.1058, 0.10589899, 0.105755, 0.105755, 42.05067054], [1517239380000, 0.105755, 0.10589898, 0.105754, 0.105754, 61.02784874], [1517239440000, 0.105754, 0.10589899, 0.10563685, 0.10563685, 131.97183747], [1517239500000, 0.1057425, 0.105754, 0.10563685, 0.1057425, 4.17169273], [1517239560000, 0.1057425, 0.105754, 0.1057425, 0.10575, 3.97022396], [1517239620000, 0.10575001, 0.105754, 0.10575, 0.10575001, 17.75967389], [1517239680000, 0.105754, 0.105754, 0.10575002, 0.10575012, 4.99596931], [1517239740000, 0.10575012, 0.105754, 0.10575012, 0.10575013, 7.56136471], [1517239800000, 0.105754, 0.105754, 0.10575012, 0.10575025, 28.90851989], [1517239860000, 0.105754, 0.105754, 0.10575026, 0.105754, 2.97529469], [1517239920000, 0.10575399, 0.105754, 0.10575012, 0.10575013, 28.83366627], [1517239980000, 0.10575399, 0.105754, 0.10575012, 0.105754, 12.17050822], [1517240040000, 0.10575012, 0.105754, 0.1057, 0.1057, 11.21014283], [1517240100000, 0.1057539, 0.105754, 0.10565, 0.10565, 12.01828599], [1517240160000, 0.10575397, 0.10575397, 0.10563572, 0.10563572, 9.11142337], [1517240220000, 0.10564, 0.10564, 0.10562066, 0.10562067, 39.32752139], [1517240280000, 0.10563571, 0.10563999, 0.10562001, 0.10562001, 18.18937221], [1517240340000, 0.10563988, 0.10564, 0.10562001, 0.10564, 4.62507046], [1517240400000, 0.10562068, 0.10562068, 0.10562001, 0.10562001, 19.62974939], [1517240460000, 0.10562002, 0.10562002, 0.10555555, 0.1056, 10.98421604], [1517240520000, 0.10555555, 0.10555555, 0.10550003, 0.10550003, 23.07170348], [1517240580000, 0.1055554, 0.10555555, 0.10550003, 0.10555555, 6.06394324], [1517240640000, 0.10555554, 0.10562001, 0.10555001, 0.10555555, 10.97768753], [1517240700000, 0.10555555, 0.10555555, 0.10555, 0.10555554, 5.24508017], [1517240760000, 0.10555554, 0.10555555, 0.1055, 0.1055, 16.87591934], [1517240820000, 0.10550003, 0.10555002, 0.10550003, 0.10555, 13.78737349], [1517240880000, 0.10555, 0.10555554, 0.10555, 0.10555002, 4.23450971], [1517240940000, 0.10555003, 0.10555554, 0.10555003, 0.10555554, 3.54504548], [1517241000000, 0.10555554, 0.10555554, 0.10555004, 0.1055555, 3.1682055], [1517241060000, 0.10555553, 0.10555554, 0.10555003, 0.10555003, 9.32526592], [1517241120000, 0.10555003, 0.10555003, 0.10555002, 0.10555002, 15.31194501], [1517241180000, 0.10555002, 0.1055555, 0.10550001, 0.10550001, 15.14820527], [1517241240000, 0.1055555, 0.1055555, 0.10550001, 0.10550001, 8.80267943], [1517241300000, 0.1055555, 0.1055555, 0.10550001, 0.1055555, 4.29295324], [1517241360000, 0.1055555, 0.1055555, 0.10550001, 0.10555002, 4.90147235], [1517241420000, 0.10555002, 0.1055555, 0.10555002, 0.1055555, 27.75255523], [1517241480000, 0.10555551, 0.10555555, 0.1055555, 0.10555555, 5.17214746], [1517241540000, 0.10555555, 0.10562001, 0.10555551, 0.1056, 8.92488418], [1517241600000, 0.1056, 0.10562001, 0.1056, 0.1056, 5.14367241], [1517241660000, 0.10562, 0.10562002, 0.1056, 0.10560001, 28.63727528], [1517241720000, 0.10560001, 0.10562002, 0.10555552, 0.10555552, 11.81945265], [1517241780000, 0.10562, 0.10562, 0.10555552, 0.10555553, 15.1765346], [1517241840000, 0.10555553, 0.10562067, 0.10555552, 0.10555553, 22.75699165], [1517241900000, 0.10555553, 0.10562068, 0.10555551, 0.10555551, 9.80445996], [1517241960000, 0.10562068, 0.10562068, 0.10555551, 0.1056, 19.10428486], [1517242020000, 0.1056, 0.10562068, 0.1056, 0.1056, 6.32520188], [1517242080000, 0.1056, 0.105635, 0.10555552, 0.1056, 9.35432079], [1517242140000, 0.1056, 0.10562067, 0.10555552, 0.10562067, 9.38508216], [1517242200000, 0.10562067, 0.105635, 0.10555552, 0.10555552, 17.01469252], [1517242260000, 0.10555551, 0.10555551, 0.10555, 0.10555, 125.7048514], [1517242320000, 0.1055501, 0.10555551, 0.10550001, 0.10550001, 6.84562318], [1517242380000, 0.10555551, 0.10555551, 0.10550001, 0.105555, 2.19503017], [1517242440000, 0.10555501, 0.1055555, 0.105555, 0.10555502, 4.7833129], [1517242500000, 0.1055555, 0.1055555, 0.10555, 0.10555, 9.11738144], [1517242560000, 0.10555, 0.10555, 0.1055, 0.10550002, 47.62417904], [1517242620000, 0.1055, 0.10555551, 0.1054, 0.10542518, 51.57385402], [1517242680000, 0.10542518, 0.10555551, 0.10542517, 0.10555551, 9.74564669], [1517242740000, 0.10555551, 0.10555551, 0.10542518, 0.10555551, 14.0282391], [1517242800000, 0.10555551, 0.10555551, 0.10542518, 0.10555537, 11.94535699], [1517242860000, 0.10555537, 0.10555551, 0.10542518, 0.10555551, 60.53087008], [1517242920000, 0.10555551, 0.10555551, 0.10542518, 0.10555551, 18.55774725], [1517242980000, 0.10555537, 0.10555551, 0.10542518, 0.1055, 1.79401686], [1517243040000, 0.1055, 0.10555551, 0.10542518, 0.10555, 19.85466931], [1517243100000, 0.10555, 0.10555, 0.10542518, 0.10555, 8.02357197], [1517243160000, 0.10554, 0.10555, 0.10534442, 0.10534442, 43.99957896], [1517243220000, 0.10534424, 0.10555, 0.10533002, 0.10555, 30.98267836], [1517243280000, 0.10554, 0.10554, 0.10529, 0.10529, 28.53957958], [1517243340000, 0.10529, 0.10555, 0.10510009, 0.10553999, 42.51065542], [1517243400000, 0.10524674, 0.10555, 0.105, 0.10553998, 29.28316734], [1517243460000, 0.10511509, 0.10553998, 0.10471992, 0.10513013, 17.28824648], [1517243520000, 0.10553998, 0.10553998, 0.10479192, 0.10482005, 35.06553773], [1517243580000, 0.10553996, 0.10553996, 0.10485001, 0.10549998, 20.68679247], [1517243640000, 0.10487006, 0.10550998, 0.104711, 0.10515201, 21.75427621], [1517243700000, 0.10515201, 0.10553999, 0.1048708, 0.10553998, 2.8983173], [1517243760000, 0.1054, 0.10540001, 0.10538001, 0.10540001, 3.77319101], [1517243820000, 0.10515201, 0.10540001, 0.1051493, 0.10540001, 6.3712596], [1517243880000, 0.10540001, 0.10540001, 0.10530921, 0.10540001, 7.48802717], [1517243940000, 0.10540001, 0.10540001, 0.10540001, 0.10540001, 5.07132469], [1517244000000, 0.10538021, 0.10538021, 0.1053802, 0.10538021, 4.77932699], [1517244060000, 0.10538021, 0.10540001, 0.1053802, 0.1053802, 11.92483073], [1517244120000, 0.10540001, 0.10540001, 0.1053802, 0.10540001, 5.78783179], [1517244180000, 0.10529686, 0.1054, 0.10513098, 0.1054, 9.02286496], [1517244240000, 0.1054, 0.1055, 0.1053, 0.10549998, 8.9705195], [1517244300000, 0.10549998, 0.10549998, 0.1054, 0.10549996, 2.62658463], [1517244360000, 0.10545, 0.10549996, 0.10530001, 0.10549994, 15.48831344], [1517244420000, 0.10530001, 0.10549994, 0.10500001, 0.10500002, 57.63468896], [1517244480000, 0.10500002, 0.10529998, 0.104792, 0.105, 69.88998611], [1517244540000, 0.105, 0.105, 0.10479202, 0.1047921, 9.53593836], [1517244600000, 0.10483367, 0.10499999, 0.10483367, 0.10499999, 4.7177379], [1517244660000, 0.10499999, 0.105, 0.10485, 0.105, 7.9624488], [1517244720000, 0.10499999, 0.105, 0.10499999, 0.105, 3.40020397], [1517244780000, 0.10515749, 0.10535, 0.10515749, 0.10525999, 4.87844964], [1517244840000, 0.10534999, 0.10534999, 0.105157, 0.10526, 5.41365667], [1517244900000, 0.10526, 0.10535, 0.10526, 0.10535, 67.17228432], [1517244960000, 0.10526, 0.10535, 0.10526, 0.10526, 4.21725934], [1517245020000, 0.10533998, 0.10533998, 0.1047921, 0.10526, 12.26891844], [1517245080000, 0.10526, 0.10533997, 0.1047921, 0.10533997, 17.65913333], [1517245140000, 0.10490001, 0.10532999, 0.1049, 0.1049, 15.03636674], [1517245200000, 0.10532998, 0.10532998, 0.1049, 0.10532499, 9.60259423], [1517245260000, 0.10532499, 0.10532499, 0.105, 0.105, 6.05346041], [1517245320000, 0.105, 0.10532, 0.104711, 0.10531499, 28.32606988], [1517245380000, 0.10530999, 0.10530999, 0.1049, 0.105, 3.00390719], [1517245440000, 0.10528999, 0.10528999, 0.105, 0.105, 1.71951994], [1517245500000, 0.10527, 0.10530998, 0.105, 0.1052949, 4.27739712], [1517245560000, 0.10530997, 0.10530998, 0.105, 0.105295, 3.73525799], [1517245620000, 0.10529, 0.10529499, 0.105, 0.10528999, 30.3140224], [1517245680000, 0.10528999, 0.10529, 0.105, 0.105, 8.43081628], [1517245740000, 0.10528, 0.10528, 0.105, 0.10526, 2.70558454], [1517245800000, 0.10526, 0.10528, 0.10471003, 0.10471003, 14.40281867], [1517245860000, 0.10527499, 0.10528, 0.10465102, 0.10527497, 16.31618279], [1517245920000, 0.105, 0.10527497, 0.10459, 0.10476336, 8.42352863], [1517245980000, 0.10527496, 0.105295, 0.10476335, 0.10477836, 41.5213497], [1517246040000, 0.105285, 0.1053, 0.10476338, 0.10529, 6.96053161], [1517246100000, 0.10529999, 0.10529999, 0.10456312, 0.10456312, 17.92454597], [1517246160000, 0.10528499, 0.10528499, 0.10450004, 0.10524699, 47.83576345], [1517246220000, 0.10522199, 0.10522199, 0.10473524, 0.10494935, 3.47725726], [1517246280000, 0.10493935, 0.10518699, 0.10450005, 0.105, 2.42905726], [1517246340000, 0.105, 0.105, 0.10450009, 0.105, 25.63297405], [1517246400000, 0.105, 0.105, 0.10481421, 0.10481421, 11.05500245], [1517246460000, 0.10499995, 0.10499999, 0.104651, 0.10499998, 1.35448047], [1517246520000, 0.10499998, 0.10499998, 0.10459, 0.10499997, 2.80123091], [1517246580000, 0.10466601, 0.10499997, 0.1045151, 0.10498997, 4.32357567], [1517246640000, 0.1046375, 0.10499996, 0.1046375, 0.1049799, 0.70597699], [1517246700000, 0.104998, 0.104998, 0.1049799, 0.104988, 0.42321987], [1517246760000, 0.104988, 0.10499998, 0.10464, 0.10498, 22.11552668], [1517246820000, 0.10498002, 0.10499998, 0.10464, 0.10464, 12.2496122], [1517246880000, 0.10464, 0.10499997, 0.10464, 0.10499997, 1.00652998], [1517246940000, 0.104999, 0.10499997, 0.1045001, 0.104999, 22.78308189], [1517247000000, 0.10499997, 0.10499997, 0.104999, 0.1049999, 0.80169614], [1517247060000, 0.1049999, 0.10499997, 0.1049999, 0.10499996, 10.5163255], [1517247120000, 0.10499991, 0.10499997, 0.10499, 0.10499997, 11.38740772], [1517247180000, 0.10499901, 0.10499997, 0.10499, 0.10499997, 4.62259509], [1517247240000, 0.10499997, 0.10499998, 0.10498998, 0.10499998, 12.56402922], [1517247300000, 0.10499998, 0.10499998, 0.104876, 0.104876, 3.04600484], [1517247360000, 0.10498998, 0.105, 0.10498998, 0.105, 84.54341653], [1517247420000, 0.105, 0.105, 0.10498998, 0.105, 65.17935669], [1517247480000, 0.10498999, 0.1051996, 0.10498998, 0.10518807, 16.24563802], [1517247540000, 0.10518807, 0.10518807, 0.105, 0.105, 16.11336863], [1517247600000, 0.10512759, 0.10512759, 0.105, 0.10512755, 12.61833277], [1517247660000, 0.1051, 0.10512755, 0.105, 0.105, 6.82604515], [1517247720000, 0.105, 0.10512755, 0.10487502, 0.10498998, 67.85065794], [1517247780000, 0.10498998, 0.10512754, 0.10483, 0.105, 5.74617393], [1517247840000, 0.105, 0.105, 0.10483001, 0.10499999, 3.09316191], [1517247900000, 0.10499999, 0.10499999, 0.10483001, 0.10499999, 7.90074698], [1517247960000, 0.10486001, 0.10499999, 0.1048452, 0.10489003, 1.38516448], [1517248020000, 0.10499999, 0.10499999, 0.10483, 0.1048452, 7.75123016], [1517248080000, 0.1048452, 0.10499998, 0.10483002, 0.10483002, 8.60164347], [1517248140000, 0.10483002, 0.10499999, 0.1045001, 0.10499999, 9.44654999], [1517248200000, 0.10499999, 0.105, 0.10483003, 0.105, 35.61677913], [1517248260000, 0.10499999, 0.105, 0.1045001, 0.10499498, 28.33475592], [1517248320000, 0.1045001, 0.10499498, 0.10450004, 0.10450005, 52.78982177], [1517248380000, 0.10499495, 0.10499495, 0.10450002, 0.1049949, 11.57420303], [1517248440000, 0.1049949, 0.1049949, 0.104575, 0.1049949, 10.36573633], [1517248500000, 0.10460001, 0.1049949, 0.1046, 0.10499489, 0.89234356], [1517248560000, 0.10499486, 0.10499486, 0.10460003, 0.10499394, 21.97862794], [1517248620000, 0.10460003, 0.10499394, 0.1046, 0.1049939, 19.45173712], [1517248680000, 0.1049939, 0.1049939, 0.10460004, 0.10460005, 11.86059301], [1517248740000, 0.10499383, 0.10499383, 0.10460004, 0.10492018, 59.00158797], [1517248800000, 0.10460004, 0.10493018, 0.10451, 0.10492018, 15.02220036], [1517248860000, 0.10492019, 0.10497985, 0.10450007, 0.10497974, 7.74414081], [1517248920000, 0.1046, 0.10497974, 0.10451, 0.10497969, 7.06216158], [1517248980000, 0.104511, 0.10497969, 0.104511, 0.10497965, 7.98092726], [1517249040000, 0.10497965, 0.10497965, 0.10452, 0.10452, 2.77077528], [1517249100000, 0.10497959, 0.10497959, 0.10452105, 0.10452105, 1.40573318], [1517249160000, 0.10452105, 0.10496999, 0.10452105, 0.10453107, 6.26514546], [1517249220000, 0.10495499, 0.10495499, 0.10493999, 0.10493999, 2.04655037], [1517249280000, 0.10495499, 0.10495499, 0.10458102, 0.10489799, 3.13084833], [1517249340000, 0.10489799, 0.10492361, 0.10459102, 0.10482, 5.34072617], [1517249400000, 0.1048979, 0.10492353, 0.10482999, 0.10487168, 14.0850277], [1517249460000, 0.10487168, 0.10492349, 0.10483009, 0.10487168, 7.68076527], [1517249520000, 0.10487168, 0.10487168, 0.10482999, 0.10482999, 5.43400929], [1517249580000, 0.10483, 0.10499382, 0.104666, 0.10491168, 195.48469784], [1517249640000, 0.10491168, 0.10491168, 0.10470002, 0.10491167, 1.49004836], [1517249700000, 0.10491167, 0.10491168, 0.10485, 0.10491167, 4.70208578], [1517249760000, 0.10491168, 0.10491168, 0.104666, 0.104666, 31.97360082], [1517249820000, 0.104666, 0.10491168, 0.10459103, 0.10481628, 6.23359696], [1517249880000, 0.10481628, 0.10491168, 0.10452002, 0.10491161, 25.60390727], [1517249940000, 0.10491168, 0.10491168, 0.10481628, 0.10491168, 11.42184682], [1517250000000, 0.10491168, 0.10499484, 0.10463883, 0.10499484, 15.50949258], [1517250060000, 0.10496709, 0.10499484, 0.10463883, 0.10491161, 3.72889975], [1517250120000, 0.10491161, 0.105066, 0.10475294, 0.10475294, 25.23962432], [1517250180000, 0.10501849, 0.10506995, 0.10475294, 0.1050076, 12.39508772], [1517250240000, 0.10500758, 0.10500758, 0.10475294, 0.10475294, 10.41453261], [1517250300000, 0.10497993, 0.10497993, 0.1045, 0.1045, 27.78236518], [1517250360000, 0.10475294, 0.10475294, 0.1045, 0.1045, 4.1209591], [1517250420000, 0.10475289, 0.10475289, 0.1045, 0.10475286, 10.59892974], [1517250480000, 0.10475287, 0.1047529, 0.10450053, 0.10475289, 10.26823394], [1517250540000, 0.10451001, 0.10475289, 0.1045, 0.10475285, 40.19190126], [1517250600000, 0.10475285, 0.10475285, 0.10451051, 0.10451059, 2.8959496], [1517250660000, 0.10475199, 0.1047529, 0.1045106, 0.10461514, 4.19410488], [1517250720000, 0.10461514, 0.10475289, 0.10451061, 0.10451061, 11.94552651], [1517250780000, 0.10451061, 0.1047529, 0.10451061, 0.10475285, 3.11979475], [1517250840000, 0.10475285, 0.1047529, 0.10451061, 0.10451061, 3.66366289], [1517250900000, 0.1047529, 0.1047529, 0.10451058, 0.10451058, 24.44968068], [1517250960000, 0.10451058, 0.10451061, 0.10448901, 0.1045, 85.36998278], [1517251020000, 0.1045, 0.1045, 0.10448901, 0.10449995, 1.67653725], [1517251080000, 0.10449995, 0.1045, 0.1044, 0.1044, 18.4602307], [1517251140000, 0.104445, 0.104445, 0.1044, 0.104445, 13.79751731], [1517251200000, 0.104445, 0.10448901, 0.1044, 0.10448901, 16.49816583], [1517251260000, 0.104489, 0.104489, 0.10431, 0.10448899, 10.16456215], [1517251320000, 0.10448899, 0.104489, 0.10432, 0.10448898, 2.22746683], [1517251380000, 0.10448895, 0.10448897, 0.10431, 0.10448893, 35.63774565], [1517251440000, 0.10448893, 0.10448893, 0.10421, 0.10432, 64.7081701], [1517251500000, 0.10447, 0.10448901, 0.10421, 0.10448901, 8.58449374], [1517251560000, 0.10448901, 0.10451061, 0.10421001, 0.10449, 3.62407313], [1517251620000, 0.1045106, 0.1045106, 0.10421001, 0.10449, 6.54508333], [1517251680000, 0.10449, 0.10451059, 0.1043, 0.10449, 2.53899158], [1517251740000, 0.10451058, 0.10451059, 0.10421, 0.10421001, 26.98522327], [1517251800000, 0.10445998, 0.10451059, 0.10421001, 0.10421001, 1.01930054], [1517251860000, 0.10451058, 0.10451058, 0.1045105, 0.1045105, 0.95074071], [1517251920000, 0.10451056, 0.10451056, 0.10421003, 0.10451047, 7.4909716], [1517251980000, 0.1045105, 0.1045105, 0.10421001, 0.10451, 49.17949247], [1517252040000, 0.10451, 0.10451, 0.10421003, 0.10421003, 21.29034734], [1517252100000, 0.10421003, 0.10451, 0.10421001, 0.10421001, 35.38461493], [1517252160000, 0.10448998, 0.10450998, 0.10421001, 0.10421002, 9.1249045], [1517252220000, 0.1044, 0.1044, 0.10423873, 0.10439, 1.24333965], [1517252280000, 0.10439, 0.10449996, 0.10423876, 0.10442463, 2.44847954], [1517252340000, 0.10449996, 0.10449998, 0.10442463, 0.10442464, 12.06187586], [1517252400000, 0.10442464, 0.10449996, 0.10442463, 0.10442463, 5.88535675], [1517252460000, 0.10442463, 0.10442464, 0.10442463, 0.10442464, 28.7178264], [1517252520000, 0.10442464, 0.10442464, 0.10423879, 0.10423879, 1.91626171], [1517252580000, 0.10423879, 0.10442463, 0.10423879, 0.10442413, 6.25417982], [1517252640000, 0.10442413, 0.10449998, 0.10442413, 0.10442463, 6.05046472], [1517252700000, 0.10442464, 0.10449997, 0.10442463, 0.10442464, 7.83856202], [1517252760000, 0.10442464, 0.10449997, 0.10442464, 0.10442464, 1.22858308], [1517252820000, 0.10449997, 0.10449997, 0.1044, 0.1044, 4.21199774], [1517252880000, 0.10449997, 0.10449997, 0.1044, 0.10449997, 37.38079375], [1517252940000, 0.10449997, 0.10451061, 0.10440005, 0.10451061, 4.27992172], [1517253000000, 0.10451059, 0.10451059, 0.10440006, 0.10440006, 8.58693734], [1517253060000, 0.1045105, 0.10451061, 0.10440005, 0.10440007, 13.53349801], [1517253120000, 0.10440007, 0.10440007, 0.10440005, 0.10440007, 2.18682924], [1517253180000, 0.10440007, 0.10442464, 0.10440005, 0.10440007, 4.59635758], [1517253240000, 0.10440007, 0.10440007, 0.10440006, 0.10440006, 3.5876279], [1517253300000, 0.10440006, 0.10442464, 0.10440005, 0.10440006, 8.6526322], [1517253360000, 0.10442464, 0.10442464, 0.10423877, 0.1044, 20.29662447], [1517253420000, 0.1044, 0.10442464, 0.1044, 0.1044, 1.42102637], [1517253480000, 0.1044, 0.10442464, 0.10423877, 0.10423877, 2.95503297], [1517253540000, 0.10441463, 0.10442464, 0.10441463, 0.10442464, 6.42527448], [1517253600000, 0.10442464, 0.10442464, 0.10442463, 0.10442464, 8.85536274], [1517253660000, 0.10442464, 0.10442464, 0.10442463, 0.10442464, 2.37359216], [1517253720000, 0.10442464, 0.10442464, 0.10433878, 0.10442464, 1.58079912], [1517253780000, 0.10433879, 0.10442464, 0.10433879, 0.10442464, 3.40370366], [1517253840000, 0.10442464, 0.10442464, 0.10433879, 0.10442464, 2.48528083], [1517253900000, 0.10442464, 0.10442464, 0.1043388, 0.1043388, 9.66841909], [1517253960000, 0.10442464, 0.10442464, 0.1043388, 0.10433881, 3.71982202], [1517254020000, 0.10442464, 0.10442464, 0.10433882, 0.10442464, 2.47003022], [1517254080000, 0.10442464, 0.10442464, 0.10433882, 0.10442464, 5.0132166], [1517254140000, 0.10433882, 0.10442464, 0.10433882, 0.10442464, 4.06551935], [1517254200000, 0.10442464, 0.10442464, 0.10433884, 0.10442463, 11.59994264], [1517254260000, 0.10442464, 0.10451061, 0.10442464, 0.10451061, 13.59330268], [1517254320000, 0.10451061, 0.10451061, 0.1043388, 0.10444464, 55.08714578], [1517254380000, 0.10444464, 0.10451061, 0.1043388, 0.10451061, 5.47428884], [1517254440000, 0.10451061, 0.10451061, 0.10422, 0.10422, 10.16135785], [1517254500000, 0.10427886, 0.10466597, 0.10422, 0.10451061, 6.6106881], [1517254560000, 0.10451061, 0.10466597, 0.10421003, 0.10466594, 11.99320967], [1517254620000, 0.10451061, 0.10466594, 0.10421159, 0.10421159, 3.75270039], [1517254680000, 0.10421159, 0.10466593, 0.10421159, 0.1045, 3.9032631], [1517254740000, 0.10453, 0.10466595, 0.10421003, 0.1045001, 11.49328005], [1517254800000, 0.1045001, 0.1045001, 0.10424, 0.1043, 4.04848463], [1517254860000, 0.1043, 0.1044043, 0.10424, 0.1043, 2.91223392], [1517254920000, 0.1045001, 0.10466595, 0.1043, 0.1043, 8.13587267], [1517254980000, 0.10466593, 0.10466595, 0.1043, 0.1043, 4.23292305], [1517255040000, 0.10430001, 0.10466591, 0.10421003, 0.10421003, 6.54188837], [1517255100000, 0.10466591, 0.10466591, 0.10423001, 0.10466588, 2.23371653], [1517255160000, 0.10442464, 0.10466592, 0.10442464, 0.10466592, 0.70298616], [1517255220000, 0.10466593, 0.10466593, 0.10442468, 0.10466593, 24.35311326], [1517255280000, 0.1044249, 0.10466593, 0.1044249, 0.1044249, 1.72072776], [1517255340000, 0.10466587, 0.10466588, 0.10424338, 0.10440426, 6.80013185], [1517255400000, 0.10440426, 0.10466582, 0.10425631, 0.1046658, 6.93884895], [1517255460000, 0.1046658, 0.1046658, 0.1042564, 0.10439281, 7.7760661], [1517255520000, 0.10466575, 0.10466583, 0.10466575, 0.10466578, 13.60225117], [1517255580000, 0.10466578, 0.10466593, 0.10466578, 0.10466579, 10.14290617], [1517255640000, 0.10466583, 0.10466593, 0.10466583, 0.10466585, 8.6793497], [1517255700000, 0.10466593, 0.1047529, 0.10466593, 0.1047529, 12.08930211], [1517255760000, 0.10475, 0.10481985, 0.10475, 0.10475, 5.22594471], [1517255820000, 0.10475, 0.1048198, 0.1042957, 0.10431979, 30.38375457], [1517255880000, 0.10431979, 0.10481985, 0.10429576, 0.10431979, 7.77002444], [1517255940000, 0.10481985, 0.10481985, 0.10431984, 0.10431984, 6.37843436], [1517256000000, 0.10481985, 0.10481985, 0.10450002, 0.10481985, 0.65527277], [1517256060000, 0.104502, 0.10481985, 0.10450003, 0.10481985, 17.95662591], [1517256120000, 0.10479129, 0.10481984, 0.10431985, 0.10481984, 5.64061803], [1517256180000, 0.10481984, 0.10481984, 0.10478985, 0.10481983, 10.04191169], [1517256240000, 0.10481983, 0.10481983, 0.10441001, 0.10441001, 1.59697308], [1517256300000, 0.10480499, 0.10480499, 0.10432744, 0.10451001, 5.10859649], [1517256360000, 0.10451001, 0.10480499, 0.10432744, 0.10432744, 10.49677801], [1517256420000, 0.10436, 0.10436, 0.10431986, 0.10431986, 2.57901816], [1517256480000, 0.10431986, 0.10436, 0.10431986, 0.10436, 7.956686], [1517256540000, 0.1043199, 0.10432744, 0.1043199, 0.10432744, 0.94276497], [1517256600000, 0.10432744, 0.10436, 0.10431991, 0.10436, 17.34926552], [1517256660000, 0.10436, 0.10436, 0.10434, 0.10435, 1.02806979], [1517256720000, 0.104358, 0.104358, 0.1043198, 0.1043198, 24.81938036], [1517256780000, 0.10433, 0.10435799, 0.10421002, 0.10421002, 123.75481187], [1517256840000, 0.1043198, 0.1043198, 0.10421001, 0.10421002, 10.10702244], [1517256900000, 0.10421002, 0.10424999, 0.10411, 0.10415742, 82.01438029], [1517256960000, 0.10421001, 0.10424999, 0.10411, 0.10411, 20.17761207], [1517257020000, 0.10424998, 0.10424998, 0.10411, 0.10424998, 9.00227221], [1517257080000, 0.10424998, 0.10424998, 0.10411, 0.10411, 5.93750007], [1517257140000, 0.10424996, 0.10424998, 0.10411, 0.10411, 9.84122055], [1517257200000, 0.10414003, 0.10424999, 0.10411, 0.10424999, 6.39696925], [1517257260000, 0.10424999, 0.10424999, 0.1042, 0.10423863, 11.81898517], [1517257320000, 0.10423863, 0.10424999, 0.10423863, 0.10424999, 18.4822945], [1517257380000, 0.10424999, 0.10454296, 0.10424998, 0.10454296, 7.2149102], [1517257440000, 0.10424998, 0.10454296, 0.10424998, 0.10424999, 71.72701573], [1517257500000, 0.10454295, 0.10454296, 0.10423863, 0.10423863, 17.39076993], [1517257560000, 0.10454293, 0.10454294, 0.10409997, 0.10409998, 26.88177307], [1517257620000, 0.10409998, 0.10423862, 0.10409998, 0.10423862, 1.27663385], [1517257680000, 0.10423862, 0.10423862, 0.1041, 0.10423862, 3.26867927], [1517257740000, 0.1042, 0.10423862, 0.1042, 0.1042, 3.4280774], [1517257800000, 0.1042, 0.10423862, 0.1042, 0.10423861, 2.72309733], [1517257860000, 0.10423861, 0.10423861, 0.1042, 0.10420001, 2.67178415], [1517257920000, 0.10420001, 0.10423862, 0.1041, 0.1041, 18.39710073], [1517257980000, 0.1042, 0.10423862, 0.1042, 0.10423, 7.73877631], [1517258040000, 0.10423, 0.10423862, 0.10409997, 0.10423, 8.22781969], [1517258100000, 0.1042386, 0.1042386, 0.1042386, 0.1042386, 2.17090258], [1517258160000, 0.104231, 0.1042386, 0.104231, 0.104231, 2.27794302], [1517258220000, 0.1042386, 0.1042386, 0.104231, 0.104231, 8.1709066], [1517258280000, 0.104231, 0.1042386, 0.10409997, 0.10423859, 34.2851751], [1517258340000, 0.10423859, 0.10424999, 0.10409997, 0.10424999, 9.35487108], [1517258400000, 0.10424999, 0.10425, 0.10424999, 0.10424999, 17.60936267], [1517258460000, 0.10425, 0.10425, 0.10409997, 0.10424999, 2.139335], [1517258520000, 0.10424999, 0.10425, 0.10409997, 0.10409997, 5.03876977], [1517258580000, 0.10424999, 0.10424999, 0.1040999, 0.10424998, 32.29003223], [1517258640000, 0.10424998, 0.10425, 0.1040999, 0.10424998, 41.97907711], [1517258700000, 0.1040999, 0.10425, 0.10402516, 0.10405, 36.57681034], [1517258760000, 0.10402517, 0.10405, 0.10402517, 0.10405, 8.0824338], [1517258820000, 0.10405, 0.10405, 0.10402518, 0.10405, 9.05934134], [1517258880000, 0.10405, 0.10405, 0.10402518, 0.10405, 5.50437655], [1517258940000, 0.10405, 0.10405, 0.10402518, 0.10405, 9.92958308], [1517259000000, 0.10405, 0.10405, 0.1040252, 0.1040252, 22.51703497], [1517259060000, 0.1040252, 0.1040252, 0.10400099, 0.10400489, 61.51376621], [1517259120000, 0.10402516, 0.10402516, 0.104, 0.10402516, 44.78330692], [1517259180000, 0.10402516, 0.10405, 0.104, 0.10405, 3.53254378], [1517259240000, 0.10405, 0.10405, 0.10404027, 0.10405, 5.0044246], [1517259300000, 0.10405, 0.10405025, 0.10400666, 0.10405024, 8.9332372], [1517259360000, 0.10405024, 0.10425, 0.10400666, 0.10405024, 6.81385715], [1517259420000, 0.10405024, 0.10405024, 0.10404501, 0.10404501, 2.2685227], [1517259480000, 0.10404501, 0.10405024, 0.10404501, 0.10405024, 5.53701261], [1517259540000, 0.10404502, 0.10405024, 0.10404501, 0.10405023, 6.67154901], [1517259600000, 0.10405024, 0.10405024, 0.1040502, 0.1040502, 21.08630257], [1517259660000, 0.10405, 0.10405, 0.104045, 0.104045, 9.61015897], [1517259720000, 0.104045, 0.104045, 0.10400001, 0.10404499, 103.20732443], [1517259780000, 0.10404499, 0.104045, 0.10400002, 0.104045, 8.34695183], [1517259840000, 0.104045, 0.104045, 0.104, 0.104045, 22.08673073], [1517259900000, 0.10404499, 0.104045, 0.10400001, 0.10400002, 6.97338248], [1517259960000, 0.10404499, 0.10404499, 0.104, 0.10404498, 8.80146926], [1517260020000, 0.104043, 0.10404498, 0.10397751, 0.10404399, 6.61514855], [1517260080000, 0.104044, 0.104044, 0.10404399, 0.10404399, 1.11833068], [1517260140000, 0.10398001, 0.10404, 0.10397751, 0.10399643, 4.35990425], [1517260200000, 0.10399643, 0.10403997, 0.10391, 0.10391, 11.43646604], [1517260260000, 0.10391001, 0.10396649, 0.10391, 0.10395, 0.98528335], [1517260320000, 0.10392, 0.10392, 0.10391, 0.103915, 15.48586902], [1517260380000, 0.10391, 0.103915, 0.10371, 0.1038, 16.23200282], [1517260440000, 0.1038, 0.1038, 0.10371, 0.1038, 9.94923331], [1517260500000, 0.1038, 0.1038, 0.10371, 0.1038, 26.78029431], [1517260560000, 0.103799, 0.1038, 0.10370188, 0.10371, 25.26278245], [1517260620000, 0.10371, 0.1038, 0.10371, 0.1038, 41.05548893], [1517260680000, 0.1038, 0.1038, 0.10371001, 0.10371001, 6.21000479], [1517260740000, 0.1038, 0.1038, 0.10371001, 0.10379002, 7.29904946], [1517260800000, 0.10371005, 0.1038, 0.10371005, 0.1038, 4.98001359], [1517260860000, 0.1038, 0.1038, 0.1037122, 0.1037122, 8.76589287], [1517260920000, 0.10379002, 0.104, 0.10371002, 0.10371221, 5.27980858], [1517260980000, 0.10380001, 0.104044, 0.1037122, 0.104044, 16.14119312], [1517261040000, 0.104044, 0.104045, 0.10371225, 0.104045, 1.95466625], [1517261100000, 0.104045, 0.104045, 0.10371225, 0.104045, 4.01601535], [1517261160000, 0.104045, 0.104045, 0.10372001, 0.104044, 11.03428709], [1517261220000, 0.104044, 0.10405, 0.10382804, 0.10405, 34.02056597], [1517261280000, 0.10404401, 0.10405, 0.10404401, 0.10405, 4.6953207], [1517261340000, 0.10405, 0.10405, 0.10382805, 0.10405, 46.66973615], [1517261400000, 0.10405023, 0.10405023, 0.10382805, 0.10405023, 9.97846799], [1517261460000, 0.10405022, 0.10405023, 0.10382805, 0.10382806, 8.98246619], [1517261520000, 0.10405022, 0.10405023, 0.10382806, 0.10405023, 10.08548911], [1517261580000, 0.10390213, 0.10405024, 0.10390213, 0.10405023, 9.98356521], [1517261640000, 0.10405023, 0.10405024, 0.10405023, 0.10405023, 12.48460961], [1517261700000, 0.10405024, 0.1042329, 0.10405023, 0.10423287, 8.98762519], [1517261760000, 0.10405023, 0.10423287, 0.10405023, 0.10423286, 5.44146523], [1517261820000, 0.10409, 0.10423285, 0.1040875, 0.10423279, 83.65689341], [1517261880000, 0.10423279, 0.10423279, 0.1040875, 0.10423277, 23.15961628], [1517261940000, 0.10410001, 0.10423276, 0.10409, 0.10423276, 1.94710877], [1517262000000, 0.10410001, 0.10423276, 0.10410001, 0.10417273, 23.71892817], [1517262060000, 0.10410002, 0.10417273, 0.10410001, 0.10417273, 18.35819742], [1517262120000, 0.10417273, 0.10423275, 0.10411501, 0.10423275, 17.51803271], [1517262180000, 0.10417, 0.10423275, 0.10409, 0.10416999, 35.06838155], [1517262240000, 0.10409, 0.10416999, 0.10409, 0.10416999, 14.61040523], [1517262300000, 0.10409001, 0.10416999, 0.10409001, 0.10409001, 9.69277526], [1517262360000, 0.10409001, 0.1041, 0.10409, 0.10409999, 36.78832201], [1517262420000, 0.1041, 0.10416997, 0.10409, 0.10409999, 39.87299603], [1517262480000, 0.1041, 0.104125, 0.10409, 0.10412499, 23.78571864], [1517262540000, 0.10409, 0.104125, 0.10409, 0.104125, 267.84626072], [1517262600000, 0.104125, 0.10423277, 0.10409, 0.10423276, 16.53092665], [1517262660000, 0.10423276, 0.10423278, 0.10415, 0.10415, 90.50135305], [1517262720000, 0.10415, 0.1043, 0.10415, 0.1043, 11.40966904], [1517262780000, 0.1043, 0.10453, 0.10415101, 0.10447979, 43.0770294], [1517262840000, 0.10430001, 0.10445, 0.1041592, 0.1041592, 8.4521944], [1517262900000, 0.1041592, 0.10445, 0.10415, 0.1041592, 40.69129126], [1517262960000, 0.1041592, 0.10445, 0.10415, 0.10415, 9.35543294], [1517263020000, 0.10415, 0.10444999, 0.10415, 0.10444999, 38.63824034], [1517263080000, 0.10415001, 0.10444998, 0.10415, 0.10415001, 12.79765781], [1517263140000, 0.10415001, 0.10415009, 0.10415, 0.10415009, 37.48968746], [1517263200000, 0.1042, 0.10444996, 0.10415001, 0.1042, 6.23653176], [1517263260000, 0.1042, 0.10439995, 0.1042, 0.1043, 16.22323462], [1517263320000, 0.1042, 0.10439993, 0.1042, 0.10439992, 4.18443666], [1517263380000, 0.10439992, 0.10439995, 0.1043, 0.10430001, 2.44334517], [1517263440000, 0.10430001, 0.10454294, 0.10429999, 0.10430001, 14.79887691], [1517263500000, 0.10429999, 0.10430001, 0.10420121, 0.10430001, 3.49238352], [1517263560000, 0.10430001, 0.10430001, 0.10420121, 0.10430001, 3.6411192], [1517263620000, 0.10430001, 0.10430001, 0.10420123, 0.10430001, 1.34272025], [1517263680000, 0.10430001, 0.10454294, 0.10420122, 0.10454294, 7.14961511], [1517263740000, 0.10454294, 0.10454294, 0.10430005, 0.10435, 2.10565577], [1517263800000, 0.10448294, 0.10454294, 0.10435001, 0.10435001, 1.1980947], [1517263860000, 0.10452294, 0.10462999, 0.10430005, 0.10435002, 31.54689245], [1517263920000, 0.10460787, 0.10460788, 0.10430005, 0.10435002, 35.55503733], [1517263980000, 0.1044, 0.10460788, 0.10430005, 0.10430005, 13.50858845], [1517264040000, 0.104607, 0.10460788, 0.10430005, 0.10460788, 42.6134138], [1517264100000, 0.10460699, 0.10460699, 0.10430055, 0.10430059, 6.2238688], [1517264160000, 0.10430059, 0.104507, 0.10430055, 0.10430055, 88.08006416], [1517264220000, 0.10450699, 0.10450699, 0.10430055, 0.10430055, 3.46560058], [1517264280000, 0.10430055, 0.10450696, 0.1042, 0.10430005, 21.5369746], [1517264340000, 0.10430055, 0.10456999, 0.10430055, 0.10430055, 26.08986418], [1517264400000, 0.10430055, 0.10450697, 0.10430055, 0.10430055, 4.3283977], [1517264460000, 0.10430055, 0.10450697, 0.10430055, 0.10430055, 22.21604844], [1517264520000, 0.10430055, 0.10450696, 0.10415001, 0.10415001, 28.38349602], [1517264580000, 0.10450693, 0.10450693, 0.10415001, 0.10415001, 11.16749379], [1517264640000, 0.10450692, 0.10459999, 0.10415003, 0.10421, 5.45978956], [1517264700000, 0.10450688, 0.10450688, 0.10415, 0.10415, 13.79266574], [1517264760000, 0.10415005, 0.10476386, 0.10415, 0.10422119, 131.05913878], [1517264820000, 0.10422119, 0.10466999, 0.10415005, 0.10449998, 1.65449942], [1517264880000, 0.10449998, 0.1045, 0.10422192, 0.10423, 1.59545579], [1517264940000, 0.1045, 0.1045, 0.10422192, 0.1045, 4.40949559], [1517265000000, 0.1045, 0.1045, 0.10432192, 0.1045, 2.67101564], [1517265060000, 0.1045, 0.1045, 0.10432193, 0.1045, 1.95025888], [1517265120000, 0.1045, 0.1045, 0.10432193, 0.10432194, 11.77079015], [1517265180000, 0.1045, 0.10460689, 0.10432194, 0.10460689, 7.67470065], [1517265240000, 0.10432194, 0.1046069, 0.10432194, 0.10460689, 9.87717483], [1517265300000, 0.10460689, 0.10460689, 0.10460689, 0.10460689, 1.22557799], [1517265360000, 0.1045, 0.1048, 0.10432194, 0.1048, 18.43838698], [1517265420000, 0.1048, 0.10499999, 0.10460689, 0.10499999, 20.98430301], [1517265480000, 0.10471149, 0.10496, 0.10460689, 0.10496, 18.1054794], [1517265540000, 0.10471149, 0.10501, 0.1046069, 0.10471149, 5.53715859], [1517265600000, 0.105, 0.10501999, 0.10463, 0.10501999, 5.71863456], [1517265660000, 0.10500999, 0.10505099, 0.10463, 0.10499999, 36.50752931], [1517265720000, 0.10505099, 0.10505099, 0.1047115, 0.10499999, 34.0406745], [1517265780000, 0.1047375, 0.10499999, 0.10460689, 0.1046069, 21.11283176], [1517265840000, 0.10497998, 0.10497998, 0.10460689, 0.10460689, 6.31511191], [1517265900000, 0.10496997, 0.105026, 0.10460689, 0.10460689, 7.60960211], [1517265960000, 0.10460689, 0.10498999, 0.1045615, 0.1045615, 20.35256313], [1517266020000, 0.10456152, 0.10469688, 0.10432194, 0.10432194, 18.32713825], [1517266080000, 0.10432194, 0.1044, 0.10420001, 0.10432194, 22.32016081], [1517266140000, 0.1044, 0.1044, 0.10432194, 0.1044, 0.39269857], [1517266200000, 0.1044, 0.1045615, 0.1044, 0.1044, 10.02274053], [1517266260000, 0.1045615, 0.10456151, 0.10432195, 0.1044, 7.14956609], [1517266320000, 0.10456151, 0.10469689, 0.10440001, 0.10468689, 1.78466041], [1517266380000, 0.10466689, 0.10468689, 0.10440002, 0.10445, 22.71619104], [1517266440000, 0.10445, 0.10468689, 0.10445, 0.10463136, 22.643679], [1517266500000, 0.10463136, 0.104692, 0.10445, 0.104692, 23.52201107], [1517266560000, 0.10461136, 0.10463136, 0.10432194, 0.10432194, 40.83780658], [1517266620000, 0.10463136, 0.10463136, 0.10432194, 0.10432195, 5.96907843], [1517266680000, 0.10432194, 0.10463135, 0.1042, 0.1042, 6.71219358], [1517266740000, 0.10429479, 0.10463135, 0.1042, 0.10462098, 1.83023071], [1517266800000, 0.10462098, 0.10462098, 0.1042, 0.104501, 3.02200331], [1517266860000, 0.104501, 0.10459597, 0.104501, 0.10459581, 3.07172364], [1517266920000, 0.10459581, 0.10459581, 0.1042, 0.10457997, 26.04750313], [1517266980000, 0.10420001, 0.10457998, 0.10420001, 0.10457997, 5.98240099], [1517267040000, 0.10457997, 0.10460096, 0.1043, 0.1043, 25.10356041], [1517267100000, 0.1043, 0.10457997, 0.1042, 0.10457473, 19.05499002], [1517267160000, 0.10457473, 0.10457997, 0.10420011, 0.10455999, 8.4808707], [1517267220000, 0.1043001, 0.10453999, 0.10420015, 0.10453999, 10.48715365], [1517267280000, 0.10420028, 0.10453999, 0.10420012, 0.10453999, 11.31811869], [1517267340000, 0.10420014, 0.10420014, 0.10420011, 0.10420013, 10.72414393], [1517267400000, 0.10420014, 0.10420014, 0.10420013, 0.10420013, 5.08951226], [1517267460000, 0.10420014, 0.10420014, 0.10420013, 0.10420013, 1.87972363], [1517267520000, 0.10420013, 0.10457997, 0.10420012, 0.10420012, 29.75029377], [1517267580000, 0.10420012, 0.10454908, 0.10420012, 0.10420013, 14.00172607], [1517267640000, 0.1045, 0.10462097, 0.10420014, 0.10461909, 25.30191152], [1517267700000, 0.104205, 0.10487, 0.10420014, 0.10461909, 3.90519976], [1517267760000, 0.1046191, 0.10486998, 0.10461909, 0.10486995, 21.61157958], [1517267820000, 0.10461909, 0.10486995, 0.10461909, 0.10486895, 11.09660752], [1517267880000, 0.1048689, 0.105, 0.10461909, 0.10461909, 28.63293174], [1517267940000, 0.10461909, 0.10499991, 0.10461909, 0.10499894, 3.17548425], [1517268000000, 0.10499796, 0.10499796, 0.104255, 0.10461895, 11.96314016], [1517268060000, 0.10460894, 0.10499595, 0.10429001, 0.10462028, 9.22997464], [1517268120000, 0.10499595, 0.10499595, 0.10461895, 0.10461895, 15.42895551], [1517268180000, 0.10461896, 0.10499496, 0.10441203, 0.10449345, 5.86325937], [1517268240000, 0.10499442, 0.10499442, 0.10449346, 0.10461895, 5.08075117], [1517268300000, 0.10449346, 0.10498999, 0.10449346, 0.10462, 1.94247526], [1517268360000, 0.10498999, 0.10498999, 0.1046, 0.1046, 26.05336715], [1517268420000, 0.10479442, 0.10479695, 0.10462001, 0.10479693, 1.39825019], [1517268480000, 0.10479693, 0.10479693, 0.1046, 0.1046, 5.02793357], [1517268540000, 0.10479695, 0.10479695, 0.1046, 0.10479695, 2.79682422], [1517268600000, 0.10479695, 0.10479695, 0.10479693, 0.10479694, 6.76669797], [1517268660000, 0.10479693, 0.10479694, 0.1046, 0.1046, 10.56713434], [1517268720000, 0.10460001, 0.10479495, 0.1046, 0.1046, 9.500484], [1517268780000, 0.1046, 0.1047948, 0.1046, 0.1047948, 4.43459292], [1517268840000, 0.10479475, 0.10479478, 0.10460001, 0.10460001, 4.62645943], [1517268900000, 0.10460001, 0.10479685, 0.10447448, 0.10450001, 21.93115423], [1517268960000, 0.10450001, 0.1046, 0.10450001, 0.10450003, 12.11281306], [1517269020000, 0.10450003, 0.1046, 0.10450003, 0.10450003, 8.8750918], [1517269080000, 0.10459993, 0.10459993, 0.10450003, 0.10450003, 5.29507453], [1517269140000, 0.10451, 0.1046, 0.10450003, 0.10450003, 8.59412426], [1517269200000, 0.1046, 0.1046, 0.10441202, 0.10450003, 23.82505841], [1517269260000, 0.10450003, 0.10478698, 0.10420015, 0.10450003, 30.10959907], [1517269320000, 0.10450003, 0.10475, 0.10450003, 0.10450003, 3.89063367], [1517269380000, 0.10450003, 0.10450003, 0.10420015, 0.10420016, 3.63460386], [1517269440000, 0.10420016, 0.10420016, 0.10420015, 0.10420015, 11.49111712], [1517269500000, 0.10420015, 0.1045, 0.10420015, 0.1045, 13.53783937], [1517269560000, 0.1045, 0.1045, 0.10420016, 0.10420016, 0.33905265], [1517269620000, 0.104205, 0.10470699, 0.104205, 0.1045, 3.91786837], [1517269680000, 0.10420599, 0.1045, 0.104205, 0.10420501, 7.16886657], [1517269740000, 0.10420501, 0.1046, 0.10420501, 0.10420501, 7.21966619], [1517269800000, 0.10420501, 0.10479695, 0.10420018, 0.10479692, 72.2462589], [1517269860000, 0.10479692, 0.10479695, 0.104205, 0.10479596, 7.0481305], [1517269920000, 0.10479596, 0.10479695, 0.10420018, 0.10420509, 32.91622185], [1517269980000, 0.10420509, 0.1047869, 0.10420509, 0.10477927, 13.78436046], [1517270040000, 0.10477918, 0.10477918, 0.10425504, 0.10425504, 2.08379545], [1517270100000, 0.10425504, 0.10425504, 0.10420019, 0.10420019, 6.5520404], [1517270160000, 0.10425504, 0.10425504, 0.10420019, 0.10425504, 10.52554444], [1517270220000, 0.10420019, 0.1044844, 0.10420013, 0.1044844, 32.389982], [1517270280000, 0.10425505, 0.10477, 0.10425504, 0.104634, 14.15800123], [1517270340000, 0.1042551, 0.10425511, 0.10425504, 0.1042551, 16.64678978], [1517270400000, 0.1042551, 0.1046, 0.1042551, 0.1042551, 4.67958849], [1517270460000, 0.1042551, 0.10459998, 0.1042551, 0.10459992, 3.93538701], [1517270520000, 0.10459998, 0.10479695, 0.10459957, 0.10476896, 43.08688115], [1517270580000, 0.10476896, 0.10479695, 0.10476896, 0.10476896, 9.24185016], [1517270640000, 0.10479695, 0.10479695, 0.1042551, 0.104792, 60.87052206], [1517270700000, 0.10479694, 0.10479695, 0.104792, 0.10479695, 4.99545955], [1517270760000, 0.10478695, 0.10479695, 0.1042551, 0.10426, 12.49258325], [1517270820000, 0.10479695, 0.10479695, 0.10425511, 0.10425511, 27.77169704], [1517270880000, 0.10426, 0.10479683, 0.10426, 0.10478681, 3.01851551], [1517270940000, 0.10477681, 0.10477681, 0.10426, 0.10468, 2.29222908], [1517271000000, 0.10467, 0.10467995, 0.10433343, 0.1043643, 6.71273317], [1517271060000, 0.1043643, 0.10466895, 0.10426, 0.10426001, 2.32684922], [1517271120000, 0.10426001, 0.10479695, 0.10426, 0.10479695, 36.65548988], [1517271180000, 0.10479694, 0.10479695, 0.10426001, 0.10479694, 38.13789269], [1517271240000, 0.10479694, 0.10479694, 0.1043643, 0.10479694, 9.45825394], [1517271300000, 0.10479693, 0.10479694, 0.10436431, 0.10436432, 4.25552715], [1517271360000, 0.10436431, 0.10479483, 0.10436431, 0.10477983, 5.64789809], [1517271420000, 0.10476983, 0.10477983, 0.10436431, 0.10436431, 8.24979317], [1517271480000, 0.10477785, 0.10477795, 0.10436432, 0.10477596, 7.56715811], [1517271540000, 0.10436436, 0.10479694, 0.10436432, 0.10436432, 23.21514573], [1517271600000, 0.10436432, 0.10476892, 0.10436432, 0.10476892, 3.32017824], [1517271660000, 0.10476793, 0.10479695, 0.10436432, 0.10475992, 40.30227795], [1517271720000, 0.10475889, 0.10475889, 0.10436432, 0.10441, 10.66283477], [1517271780000, 0.10441, 0.10474598, 0.1043643, 0.1043643, 48.28444052], [1517271840000, 0.1043643, 0.10474579, 0.1043643, 0.1043643, 2.65003003], [1517271900000, 0.1043643, 0.10474559, 0.1043643, 0.1043643, 4.68509641], [1517271960000, 0.10474099, 0.10474099, 0.10436431, 0.10473999, 54.07475659], [1517272020000, 0.10472499, 0.10473499, 0.10436431, 0.10473497, 16.68718819], [1517272080000, 0.10473498, 0.10479695, 0.10436432, 0.10479694, 82.03297742], [1517272140000, 0.1047667, 0.10479694, 0.1044, 0.10440001, 20.85919982], [1517272200000, 0.10474181, 0.10474181, 0.10440001, 0.10440002, 9.81648095], [1517272260000, 0.10474181, 0.10478179, 0.10440005, 0.10471216, 4.57115123], [1517272320000, 0.10478178, 0.10478179, 0.10453233, 0.10453234, 16.96022526], [1517272380000, 0.10453236, 0.10478178, 0.10453236, 0.10453236, 6.74113825], [1517272440000, 0.10474999, 0.10474999, 0.10453237, 0.10453237, 8.13066266], [1517272500000, 0.10474999, 0.10474999, 0.10453236, 0.1047, 8.35996231], [1517272560000, 0.1047, 0.1047, 0.10453238, 0.10454237, 9.87781835], [1517272620000, 0.10454237, 0.10454237, 0.10453238, 0.10453238, 14.99752524], [1517272680000, 0.10453238, 0.1047, 0.10453238, 0.10468, 12.51530597], [1517272740000, 0.1047, 0.1047, 0.10454237, 0.10468, 9.66109952], [1517272800000, 0.10468, 0.10468, 0.10454237, 0.104655, 5.12287938], [1517272860000, 0.10454238, 0.104655, 0.10453238, 0.10454238, 22.53181494], [1517272920000, 0.10454238, 0.104655, 0.10454237, 0.10454238, 4.42173271], [1517272980000, 0.104655, 0.10479695, 0.104655, 0.10477237, 9.86582561], [1517273040000, 0.10479695, 0.10479695, 0.10477237, 0.10477238, 22.11391595], [1517273100000, 0.10477238, 0.10479695, 0.10477237, 0.10479695, 70.40803244], [1517273160000, 0.10479695, 0.10479695, 0.10454242, 0.10479695, 17.03707423], [1517273220000, 0.10479694, 0.10479695, 0.10454244, 0.10479694, 7.19037754], [1517273280000, 0.10479695, 0.10479695, 0.10479694, 0.10479695, 6.37168144], [1517273340000, 0.10479695, 0.10479695, 0.10454244, 0.10454244, 6.22625286], [1517273400000, 0.1047, 0.10479695, 0.10454244, 0.10479695, 6.38109093], [1517273460000, 0.10479695, 0.10479695, 0.10454244, 0.10479695, 2.24178758], [1517273520000, 0.10479695, 0.10479695, 0.10454245, 0.10454245, 3.647324], [1517273580000, 0.10454244, 0.1047, 0.10454244, 0.10454245, 8.4286842], [1517273640000, 0.1047, 0.1047, 0.10454245, 0.10465, 9.86525], [1517273700000, 0.10465, 0.10479695, 0.10454245, 0.10454245, 10.08115646], [1517273760000, 0.10465, 0.10465, 0.1046001, 0.10465, 0.26416525], [1517273820000, 0.10465, 0.10465, 0.1046001, 0.1046001, 18.45878967], [1517273880000, 0.1046001, 0.10465, 0.1046001, 0.1046001, 22.6494794], [1517273940000, 0.10460011, 0.10465, 0.1046001, 0.1046001, 2.54515557], [1517274000000, 0.10465, 0.10465, 0.1046001, 0.1046001, 4.2196725], [1517274060000, 0.10463005, 0.10465, 0.10453238, 0.10453238, 19.19326913], [1517274120000, 0.1046001, 0.10463005, 0.10453211, 0.10463005, 7.79642764], [1517274180000, 0.10463, 0.10463005, 0.1045, 0.1045, 3.44649927], [1517274240000, 0.1045, 0.1045, 0.10440004, 0.10440004, 1.7808757], [1517274300000, 0.1045, 0.1045, 0.10440001, 0.10440001, 24.14791573], [1517274360000, 0.10440002, 0.10449999, 0.10440001, 0.10449998, 10.42990786], [1517274420000, 0.10449998, 0.10449998, 0.10440001, 0.10449998, 14.8152975], [1517274480000, 0.10449998, 0.1045, 0.10440004, 0.1045, 12.9855347], [1517274540000, 0.10440004, 0.1045, 0.10440004, 0.10440005, 9.48533542], [1517274600000, 0.1044999, 0.1044999, 0.10441001, 0.1044999, 19.48566043], [1517274660000, 0.1044999, 0.10479693, 0.10442002, 0.10479693, 5.90677379], [1517274720000, 0.10456301, 0.10456301, 0.1044999, 0.1044999, 0.93775497], [1517274780000, 0.10449993, 0.10478699, 0.1044999, 0.1044999, 16.53140713], [1517274840000, 0.10478199, 0.10478199, 0.1044999, 0.1045999, 11.12719223], [1517274900000, 0.1045999, 0.10478198, 0.10457236, 0.10478197, 9.1391587], [1517274960000, 0.10478197, 0.10478197, 0.10457236, 0.10459991, 15.09401048], [1517275020000, 0.10457237, 0.10478194, 0.10457236, 0.10459991, 46.06903217], [1517275080000, 0.10459991, 0.10467383, 0.10457236, 0.10459991, 10.75769452], [1517275140000, 0.10459991, 0.10479694, 0.10459991, 0.10479694, 25.63678288], [1517275200000, 0.10479694, 0.10479694, 0.10457236, 0.10457236, 18.2249598], [1517275260000, 0.1045999, 0.10479694, 0.1045, 0.1045, 8.28039536], [1517275320000, 0.1045, 0.10479694, 0.1044999, 0.1046, 15.0670024], [1517275380000, 0.1046, 0.1046, 0.10443001, 0.10443001, 9.85687297], [1517275440000, 0.10443001, 0.1046, 0.10443, 0.1046, 9.15143887], [1517275500000, 0.1046, 0.1046, 0.1044301, 0.1046, 11.09974821], [1517275560000, 0.1046, 0.10479694, 0.1044301, 0.1047969, 5.9059868], [1517275620000, 0.10479689, 0.1047969, 0.1044301, 0.1047969, 30.91292948], [1517275680000, 0.1047768, 0.10479694, 0.10443013, 0.1047969, 6.60076704], [1517275740000, 0.10443014, 0.1047969, 0.10443014, 0.10450101, 14.62236729], [1517275800000, 0.10450101, 0.1047969, 0.10450101, 0.10450201, 10.53101728], [1517275860000, 0.10450201, 0.1047969, 0.1044301, 0.1044301, 14.66662061], [1517275920000, 0.1044301, 0.10479694, 0.1044301, 0.10479691, 43.49990847], [1517275980000, 0.10479166, 0.10479694, 0.10443011, 0.10443012, 21.19878093], [1517276040000, 0.10443012, 0.10479691, 0.1044301, 0.10443013, 59.92148563], [1517276100000, 0.10479681, 0.10479691, 0.10443013, 0.10479691, 11.71180373], [1517276160000, 0.10479691, 0.10479693, 0.10443014, 0.10479693, 2.41124356], [1517276220000, 0.10479694, 0.10479694, 0.10444, 0.10444, 7.13866401], [1517276280000, 0.10479694, 0.10479694, 0.10444, 0.10444, 3.44638877], [1517276340000, 0.1046, 0.10479694, 0.10444, 0.10444, 7.20440125], [1517276400000, 0.10479694, 0.10479694, 0.10458734, 0.10458734, 13.13199279], [1517276460000, 0.10479694, 0.10479694, 0.10443014, 0.10443014, 22.89125917], [1517276520000, 0.10443014, 0.10459694, 0.10443014, 0.10443014, 6.43048059], [1517276580000, 0.10443014, 0.10458694, 0.10443014, 0.10443016, 12.78950138], [1517276640000, 0.10443015, 0.10443016, 0.10443014, 0.10443014, 18.48320429], [1517276700000, 0.10443014, 0.10479694, 0.10443014, 0.10479694, 11.83964177], [1517276760000, 0.10443015, 0.10469, 0.10443015, 0.10469, 5.27117594], [1517276820000, 0.10469, 0.10469, 0.10443017, 0.10469, 3.41764111], [1517276880000, 0.10443016, 0.10469, 0.10443014, 0.10443014, 15.11200081], [1517276940000, 0.10443014, 0.1046, 0.10443014, 0.1046, 12.03913633], [1517277000000, 0.1044402, 0.10445014, 0.10443014, 0.10445014, 12.51615916], [1517277060000, 0.10445014, 0.10469, 0.10443014, 0.10469, 41.16769481], [1517277120000, 0.10469, 0.10469, 0.10443014, 0.10469, 4.93604918], [1517277180000, 0.10448999, 0.10469, 0.10443014, 0.10469, 6.86902024], [1517277240000, 0.10469, 0.10469, 0.10443014, 0.10469, 14.94289576], [1517277300000, 0.10468997, 0.10469, 0.10468997, 0.10468997, 23.9307984], [1517277360000, 0.10469, 0.10479693, 0.10443, 0.10443, 119.84908859], [1517277420000, 0.10443, 0.10469, 0.10415005, 0.10435825, 189.54862357], [1517277480000, 0.10435825, 0.10435825, 0.104, 0.10433799, 92.41689275], [1517277540000, 0.104, 0.10453999, 0.10380569, 0.1039, 28.67447871], [1517277600000, 0.10391, 0.10440099, 0.10380569, 0.1038999, 5.50018197], [1517277660000, 0.1038999, 0.1038999, 0.10380569, 0.1038999, 7.1194888], [1517277720000, 0.10380569, 0.10439592, 0.10380569, 0.10439097, 4.17454614], [1517277780000, 0.10380569, 0.10439037, 0.10380569, 0.1043, 9.19575666], [1517277840000, 0.1043, 0.1043, 0.1039, 0.10429959, 3.50142817], [1517277900000, 0.10427873, 0.10429959, 0.1039, 0.10429958, 21.5335735], [1517277960000, 0.10427872, 0.10439594, 0.10427872, 0.10427873, 17.94963852], [1517278020000, 0.10427873, 0.10431454, 0.1039, 0.10424078, 41.96754852], [1517278080000, 0.103915, 0.10427351, 0.10380569, 0.1040534, 12.24185968], [1517278140000, 0.1040534, 0.1040534, 0.10405317, 0.10405317, 19.10628051], [1517278200000, 0.10405317, 0.10449999, 0.10405317, 0.1040534, 23.4387532], [1517278260000, 0.10449999, 0.10449999, 0.10405317, 0.10448997, 16.90889481], [1517278320000, 0.10410001, 0.10449999, 0.10405317, 0.10405317, 52.21514329], [1517278380000, 0.10410001, 0.10448999, 0.104, 0.104, 17.07064032], [1517278440000, 0.10439998, 0.10439998, 0.10382648, 0.104, 25.05458782], [1517278500000, 0.10438984, 0.10438984, 0.104, 0.104015, 4.67262324], [1517278560000, 0.104, 0.10435206, 0.1039942, 0.10433696, 44.97172808], [1517278620000, 0.104, 0.1043369, 0.1038, 0.10380002, 52.63195381], [1517278680000, 0.10380002, 0.104, 0.10380002, 0.10399999, 7.05770785], [1517278740000, 0.10390382, 0.104, 0.1038, 0.104, 4.6873691], [1517278800000, 0.104, 0.104, 0.10399997, 0.104, 7.76831071], [1517278860000, 0.10399999, 0.1043369, 0.10399997, 0.10399997, 131.13046042], [1517278920000, 0.10399997, 0.10433689, 0.1038, 0.10433685, 34.36899848], [1517278980000, 0.10433683, 0.10433683, 0.1038, 0.10380509, 2.99105806], [1517279040000, 0.10433675, 0.10433675, 0.10380509, 0.10433152, 2.75150171], [1517279100000, 0.10431152, 0.10433153, 0.10389006, 0.10432153, 3.14360247], [1517279160000, 0.10432153, 0.1043368, 0.10432153, 0.10433152, 1.39752354], [1517279220000, 0.103895, 0.10433695, 0.10389014, 0.10389506, 18.02593949], [1517279280000, 0.1043315, 0.1043315, 0.10400001, 0.1043315, 12.86142917], [1517279340000, 0.1043315, 0.10448999, 0.10400109, 0.10448999, 11.04178348], [1517279400000, 0.1043315, 0.10459999, 0.1043315, 0.10448999, 3.14686557], [1517279460000, 0.10448999, 0.104491, 0.10448999, 0.104491, 20.6482811], [1517279520000, 0.104491, 0.10459999, 0.10449, 0.10459, 28.74162948], [1517279580000, 0.10458, 0.10458999, 0.10448999, 0.10458997, 12.85716829], [1517279640000, 0.10458997, 0.1046, 0.10448999, 0.1046, 14.11646699], [1517279700000, 0.10448999, 0.1046, 0.10448999, 0.1046, 17.75123022], [1517279760000, 0.1046, 0.1046, 0.10448999, 0.1046, 5.75132814], [1517279820000, 0.1046, 0.1046, 0.10448999, 0.10449, 26.54224575], [1517279880000, 0.10449, 0.1046, 0.10448999, 0.10459998, 31.69570658], [1517279940000, 0.10459998, 0.10459999, 0.10448999, 0.10459999, 28.14120026], [1517280000000, 0.10459999, 0.10459999, 0.1045, 0.1045, 8.90197015], [1517280060000, 0.1045, 0.10459998, 0.10448999, 0.104513, 11.50126192], [1517280120000, 0.104513, 0.10459998, 0.10448999, 0.10449, 18.66135957], [1517280180000, 0.10449001, 0.1046, 0.10448999, 0.10449, 12.55148845], [1517280240000, 0.1046, 0.10479694, 0.10448999, 0.10479693, 77.27940444], [1517280300000, 0.10479688, 0.10479695, 0.10449, 0.10479685, 66.73225547], [1517280360000, 0.10449001, 0.10479682, 0.10449001, 0.10449101, 9.70491425], [1517280420000, 0.10479193, 0.10479199, 0.10420301, 0.10433151, 86.64164474], [1517280480000, 0.10420301, 0.10448997, 0.10385, 0.10387523, 18.22912018], [1517280540000, 0.10387523, 0.10444499, 0.10385, 0.10400016, 24.97853395], [1517280600000, 0.10400016, 0.10441999, 0.10400016, 0.10438999, 0.72426743], [1517280660000, 0.10400017, 0.10438999, 0.10380001, 0.10380009, 30.72605359], [1517280720000, 0.104, 0.10438887, 0.10380014, 0.1039, 4.10321398], [1517280780000, 0.10437898, 0.10437898, 0.1039, 0.10391999, 11.64308199], [1517280840000, 0.10420301, 0.10435898, 0.1039, 0.10433399, 7.25819267], [1517280900000, 0.10433399, 0.10433897, 0.1039, 0.1039, 5.83196736], [1517280960000, 0.10391, 0.104338, 0.1039, 0.104338, 0.30577864], [1517281020000, 0.104119, 0.104338, 0.104, 0.10400001, 5.49882178], [1517281080000, 0.104335, 0.104335, 0.10400001, 0.10433275, 3.95659919], [1517281140000, 0.10400001, 0.1043348, 0.10400001, 0.1043348, 21.51249332], [1517281200000, 0.1043348, 0.10433492, 0.10400002, 0.10400002, 10.54772727], [1517281260000, 0.10433489, 0.10433494, 0.10400003, 0.10433485, 5.15394469], [1517281320000, 0.10433485, 0.10433486, 0.10400003, 0.10432954, 23.92504682], [1517281380000, 0.10432952, 0.10432952, 0.10400001, 0.10400001, 45.32633686], [1517281440000, 0.10400001, 0.10431999, 0.10392, 0.10400001, 40.49983315], [1517281500000, 0.10392, 0.10432949, 0.10392, 0.10393, 39.66457117], [1517281560000, 0.10393, 0.10429999, 0.10381002, 0.10429998, 31.00591592], [1517281620000, 0.10429998, 0.10429998, 0.10379601, 0.10379601, 83.93834497], [1517281680000, 0.10429, 0.10429499, 0.10380003, 0.10380003, 1.06580265], [1517281740000, 0.10419999, 0.10419999, 0.10386999, 0.10419998, 2.74313692], [1517281800000, 0.10419998, 0.10419998, 0.10379601, 0.10379601, 23.75394499], [1517281860000, 0.10380003, 0.10429999, 0.10379601, 0.10419985, 8.20387108], [1517281920000, 0.10416117, 0.10428992, 0.10380003, 0.10428987, 85.6988878], [1517281980000, 0.10393382, 0.10428987, 0.10380003, 0.10393382, 2.14995929], [1517282040000, 0.10393382, 0.10419999, 0.10379601, 0.10379601, 19.46021573], [1517282100000, 0.10380003, 0.10419999, 0.10379545, 0.10393382, 74.78217678], [1517282160000, 0.10379545, 0.10418498, 0.10371, 0.103944, 20.61226567], [1517282220000, 0.1039, 0.103944, 0.1037, 0.10372, 30.19347307], [1517282280000, 0.10371999, 0.10392, 0.10369989, 0.1037, 26.97349378], [1517282340000, 0.10370001, 0.10392002, 0.10358035, 0.10390499, 165.74847601], [1517282400000, 0.10390499, 0.10390499, 0.1035, 0.10357525, 51.85919131], [1517282460000, 0.10357525, 0.10391998, 0.10357525, 0.1037, 23.22056128], [1517282520000, 0.10370001, 0.10391998, 0.10351998, 0.10351998, 59.84166842], [1517282580000, 0.10351998, 0.10391996, 0.10345, 0.10352, 42.55212282], [1517282640000, 0.10352, 0.10389887, 0.1033, 0.10388899, 68.42289268], [1517282700000, 0.10388898, 0.10388899, 0.1032999, 0.10352, 10.72480986], [1517282760000, 0.10369999, 0.10369999, 0.10319831, 0.10319831, 70.86134746], [1517282820000, 0.10351999, 0.10351999, 0.10311407, 0.10311407, 27.95156959], [1517282880000, 0.10319324, 0.10324484, 0.10301909, 0.10324484, 86.77392546], [1517282940000, 0.10324484, 0.10349995, 0.10301909, 0.10301909, 37.61890927], [1517283000000, 0.10302485, 0.10347999, 0.10300001, 0.1032398, 44.52065373], [1517283060000, 0.10300001, 0.10336372, 0.103, 0.10323979, 217.31340624], [1517283120000, 0.103359, 0.10349995, 0.10300001, 0.10336373, 23.90135876], [1517283180000, 0.10336373, 0.10336373, 0.103, 0.1032, 46.81739734], [1517283240000, 0.1032, 0.10336372, 0.103, 0.10336372, 27.3093655], [1517283300000, 0.1030002, 0.10336371, 0.1030001, 0.10318192, 7.95758553], [1517283360000, 0.10335898, 0.10335898, 0.10319194, 0.10335898, 15.26351584], [1517283420000, 0.10335898, 0.10335899, 0.10319194, 0.10335898, 152.17151941], [1517283480000, 0.10335899, 0.10335899, 0.10335898, 0.10335899, 44.345219], [1517283540000, 0.10335898, 0.10351999, 0.10335898, 0.10351999, 58.60248186], [1517283600000, 0.10336, 0.10388887, 0.10335898, 0.10335898, 33.30378811], [1517283660000, 0.10351999, 0.10382994, 0.10335898, 0.10351995, 59.50487836], [1517283720000, 0.10335898, 0.10352, 0.10335898, 0.10335898, 37.56772282], [1517283780000, 0.10335898, 0.10352, 0.10305, 0.10319361, 29.1708533], [1517283840000, 0.10352, 0.10372999, 0.10319362, 0.10319362, 2.2872687], [1517283900000, 0.10319362, 0.10370999, 0.10319362, 0.10370997, 9.953099], [1517283960000, 0.10370995, 0.10370995, 0.10319364, 0.10321365, 17.73259893], [1517284020000, 0.10321365, 0.1037, 0.10321364, 0.10321366, 12.255286], [1517284080000, 0.10369998, 0.10369998, 0.10321365, 0.10369997, 17.21225377], [1517284140000, 0.10369995, 0.10369995, 0.10321366, 0.10368887, 12.32372911], [1517284200000, 0.10368887, 0.10369995, 0.10334247, 0.10369995, 22.4247271], [1517284260000, 0.10369995, 0.10369995, 0.10321371, 0.10334813, 5.64450433], [1517284320000, 0.10369994, 0.10369994, 0.10321378, 0.10369992, 5.13751936], [1517284380000, 0.10369992, 0.10369992, 0.10325381, 0.10369989, 15.69114728], [1517284440000, 0.10369989, 0.10369989, 0.10325381, 0.10369988, 25.51189703], [1517284500000, 0.10369988, 0.10369988, 0.10325381, 0.10327501, 58.76718873], [1517284560000, 0.103368, 0.10356001, 0.10321371, 0.10321371, 75.14416137], [1517284620000, 0.10356, 0.10356001, 0.10356, 0.10356001, 1.52757492], [1517284680000, 0.10356001, 0.10356001, 0.10321365, 0.10321365, 23.02168787], [1517284740000, 0.10356, 0.10369991, 0.1032138, 0.10321381, 47.26167625], [1517284800000, 0.10334246, 0.10356, 0.10321381, 0.10321381, 16.97462975], [1517284860000, 0.1032138, 0.10355992, 0.10319361, 0.10319361, 17.86720172], [1517284920000, 0.10354997, 0.10354999, 0.10319361, 0.10354996, 4.55679641], [1517284980000, 0.10355, 0.10355, 0.10319363, 0.10353998, 26.99587755], [1517285040000, 0.10353998, 0.10353998, 0.10319362, 0.10319366, 34.98982005], [1517285100000, 0.10320366, 0.10353998, 0.10319366, 0.10320366, 11.49305171], [1517285160000, 0.10320366, 0.10353997, 0.10319366, 0.10319369, 15.43076468], [1517285220000, 0.10353996, 0.10353996, 0.10319364, 0.103194, 90.84668427], [1517285280000, 0.103194, 0.10353996, 0.10319364, 0.10319364, 40.56736235], [1517285340000, 0.10319364, 0.10319364, 0.10319361, 0.10319364, 12.93387174], [1517285400000, 0.10319364, 0.10353998, 0.10319361, 0.10353997, 6.8098503], [1517285460000, 0.10353998, 0.10353998, 0.10353997, 0.10353998, 3.78811811], [1517285520000, 0.10353998, 0.10355, 0.10319364, 0.10355, 11.91151583], [1517285580000, 0.10353998, 0.10354987, 0.10353998, 0.10353998, 6.76401897], [1517285640000, 0.10354987, 0.10355, 0.10353998, 0.10353998, 26.82463573], [1517285700000, 0.10353998, 0.10355, 0.10353998, 0.10355, 10.51508656], [1517285760000, 0.10355, 0.10355991, 0.10353998, 0.10353998, 1.94387776], [1517285820000, 0.10355991, 0.1036, 0.10353998, 0.1036, 32.57599752], [1517285880000, 0.10359999, 0.10359999, 0.1035, 0.1035, 14.73342119], [1517285940000, 0.1035, 0.1036, 0.1035, 0.10359999, 15.09065764], [1517286000000, 0.10359999, 0.10369991, 0.10359999, 0.1036, 32.01000862], [1517286060000, 0.10369993, 0.1037, 0.10369993, 0.10369998, 2.24810797], [1517286120000, 0.10369998, 0.10388887, 0.10369998, 0.10388887, 2.40279534], [1517286180000, 0.10388887, 0.10388887, 0.1037, 0.10370001, 2.35105244], [1517286240000, 0.1037, 0.10396007, 0.1037, 0.10396007, 8.72494955], [1517286300000, 0.10371999, 0.10388887, 0.1037, 0.10388887, 2.57676785], [1517286360000, 0.10388887, 0.10388887, 0.103825, 0.103825, 8.53057109], [1517286420000, 0.10388887, 0.10388887, 0.103825, 0.103825, 13.94449979], [1517286480000, 0.103825, 0.10388887, 0.103825, 0.103825, 12.84020862], [1517286540000, 0.10388884, 0.10388887, 0.103825, 0.10388884, 13.96778229], [1517286600000, 0.10388884, 0.10388887, 0.103825, 0.103825, 27.2587828], [1517286660000, 0.10388887, 0.103973, 0.10359999, 0.1036, 19.17872491], [1517286720000, 0.103889, 0.103973, 0.1036, 0.103973, 8.01128232], [1517286780000, 0.103973, 0.103973, 0.10389, 0.1039, 2.28623882], [1517286840000, 0.1039, 0.103973, 0.10359999, 0.10359999, 5.56192494], [1517286900000, 0.103973, 0.103973, 0.10359999, 0.103973, 3.76971075], [1517286960000, 0.103973, 0.103973, 0.103602, 0.103972, 1.66882711], [1517287020000, 0.103972, 0.10397814, 0.103972, 0.103973, 10.79279036], [1517287080000, 0.103973, 0.104, 0.103607, 0.10361201, 9.59005417], [1517287140000, 0.103973, 0.10430158, 0.103973, 0.10430158, 40.92019794], [1517287200000, 0.10422588, 0.10433494, 0.103973, 0.10397301, 4.93170941], [1517287260000, 0.10397301, 0.10438899, 0.10397301, 0.10397301, 9.21756183], [1517287320000, 0.104302, 0.104389, 0.10429678, 0.104302, 3.62088053], [1517287380000, 0.104302, 0.10441069, 0.104282, 0.10430199, 6.69552988], [1517287440000, 0.10397305, 0.104302, 0.10397305, 0.104, 3.7441871], [1517287500000, 0.104302, 0.10441067, 0.104, 0.10441061, 15.59796598], [1517287560000, 0.104, 0.10441058, 0.104, 0.10441057, 9.59260802], [1517287620000, 0.10400022, 0.10441056, 0.10400022, 0.10441038, 3.53176847], [1517287680000, 0.10400028, 0.1044104, 0.10400026, 0.1044104, 2.575603], [1517287740000, 0.1041043, 0.10441056, 0.1041043, 0.1041043, 2.03793771], [1517287800000, 0.10440995, 0.10441058, 0.10400025, 0.10441057, 31.94851561]]
\ No newline at end of file
diff --git a/tests/testdata/LTC_BTC-1m.json b/tests/testdata/LTC_BTC-1m.json
deleted file mode 100644
index 0cf8e4d1e..000000000
--- a/tests/testdata/LTC_BTC-1m.json
+++ /dev/null
@@ -1 +0,0 @@
-[[1516423980000, 0.01633016, 0.01633016, 0.016258, 0.016293, 180.50968441], [1516424040000, 0.016293, 0.0163399, 0.01624259, 0.01633986, 133.7983874], [1516424100000, 0.01633986, 0.01640497, 0.01629501, 0.01636763, 46.71679643], [1516424160000, 0.01633986, 0.01645497, 0.01633986, 0.01643076, 60.12407209], [1516424220000, 0.01636763, 0.01643414, 0.01629, 0.01643414, 138.47349622], [1516424280000, 0.016294, 0.016294, 0.0162402, 0.01625802, 274.35030713], [1516424340000, 0.01625802, 0.0162856, 0.0162333, 0.0162826, 221.14090513], [1516424400000, 0.01628259, 0.01638286, 0.01623501, 0.016292, 81.01338219], [1516424460000, 0.01638282, 0.01638282, 0.0162826, 0.01638, 26.47795748], [1516424520000, 0.01637999, 0.01637999, 0.01623331, 0.01636899, 37.89741099], [1516424580000, 0.01623738, 0.01636897, 0.01623738, 0.01636866, 7.16922211], [1516424640000, 0.01623738, 0.01636899, 0.01618, 0.01630348, 179.760112], [1516424700000, 0.01630348, 0.01636899, 0.01621611, 0.01636899, 28.51980161], [1516424760000, 0.01636897, 0.016375, 0.01636, 0.016375, 37.19664813], [1516424820000, 0.016375, 0.016379, 0.016325, 0.016325, 41.37016975], [1516424880000, 0.016325, 0.01636897, 0.01627001, 0.01627003, 96.45567538], [1516424940000, 0.01628712, 0.016325, 0.01628712, 0.01628712, 31.07808804], [1516425000000, 0.01628712, 0.01628712, 0.01624041, 0.01627, 41.88425527], [1516425060000, 0.01628712, 0.01636899, 0.01628712, 0.01632467, 83.98057524], [1516425120000, 0.01634101, 0.01634101, 0.01624339, 0.01624745, 54.7332745], [1516425180000, 0.01624745, 0.01627001, 0.01624745, 0.01627001, 81.19684267], [1516425240000, 0.01627001, 0.016341, 0.01621438, 0.0162172, 94.13905236], [1516425300000, 0.0162172, 0.016336, 0.01620518, 0.01620522, 84.36622356], [1516425360000, 0.016207, 0.01628999, 0.01620517, 0.01628894, 41.04664147], [1516425420000, 0.01628999, 0.01628999, 0.016209, 0.01628899, 33.65784843], [1516425480000, 0.01628989, 0.01628999, 0.01621805, 0.016222, 16.70267174], [1516425540000, 0.016289, 0.01633599, 0.016289, 0.01633165, 42.08026575], [1516425600000, 0.01633165, 0.01634101, 0.01629, 0.01629, 51.51194876], [1516425660000, 0.01629, 0.01633599, 0.01621815, 0.016258, 107.85211237], [1516425720000, 0.016257, 0.01633159, 0.016256, 0.016263, 44.67588712], [1516425780000, 0.0163316, 0.01633161, 0.01626301, 0.01633142, 12.13674171], [1516425840000, 0.01633142, 0.0163316, 0.01625437, 0.0163316, 45.57352417], [1516425900000, 0.0163316, 0.01633163, 0.01633142, 0.01633142, 99.91998235], [1516425960000, 0.01625431, 0.01633142, 0.01624008, 0.01633142, 4.52767194], [1516426020000, 0.01628292, 0.01633142, 0.01628292, 0.01633142, 41.68288182], [1516426080000, 0.01633141, 0.01633142, 0.01625901, 0.01625901, 46.13337996], [1516426140000, 0.01623906, 0.01633138, 0.01623906, 0.01633138, 28.86984573], [1516426200000, 0.01630009, 0.01633159, 0.0163, 0.01633142, 76.52886853], [1516426260000, 0.01633159, 0.01638, 0.01633137, 0.01637998, 138.33994769], [1516426320000, 0.01633138, 0.01639, 0.01633137, 0.01638, 65.753367], [1516426380000, 0.01638, 0.01638999, 0.01634601, 0.01634602, 78.65507273], [1516426440000, 0.01638001, 0.01638001, 0.01634601, 0.01634601, 30.05290248], [1516426500000, 0.01638001, 0.01638001, 0.01634602, 0.01634602, 71.44287511], [1516426560000, 0.01638, 0.01638, 0.01638, 0.01638, 7.40719876], [1516426620000, 0.01638, 0.01638001, 0.01630372, 0.01630372, 140.4188273], [1516426680000, 0.016375, 0.016375, 0.01625907, 0.01628988, 212.74090396], [1516426740000, 0.01628988, 0.01637999, 0.01625939, 0.01627502, 30.74882295], [1516426800000, 0.01637998, 0.01638001, 0.01627507, 0.01638001, 122.66860229], [1516426860000, 0.01638001, 0.01638001, 0.01631447, 0.01633, 24.81391093], [1516426920000, 0.01637994, 0.01638001, 0.01627901, 0.01627901, 84.77217532], [1516426980000, 0.01627911, 0.01638999, 0.01627911, 0.01632504, 69.05840782], [1516427040000, 0.01632505, 0.01638001, 0.01632505, 0.01637967, 14.65335469], [1516427100000, 0.01637967, 0.01638001, 0.01637967, 0.01638, 31.65295889], [1516427160000, 0.01638001, 0.01638001, 0.01625914, 0.01625914, 60.67475401], [1516427220000, 0.01625914, 0.01637999, 0.01625914, 0.01637997, 16.7566626], [1516427280000, 0.01634, 0.01636999, 0.01627003, 0.01636995, 60.37363817], [1516427340000, 0.01627003, 0.01638, 0.01627003, 0.01627005, 97.8948329], [1516427400000, 0.01627005, 0.01627006, 0.01627003, 0.01627003, 39.4418301], [1516427460000, 0.01627006, 0.01632, 0.01627006, 0.01632, 39.02336878], [1516427520000, 0.01632, 0.01637999, 0.01627009, 0.01637999, 14.61499858], [1516427580000, 0.01632, 0.01638, 0.01627101, 0.01628601, 74.35605478], [1516427640000, 0.01637996, 0.01637996, 0.01637996, 0.01637996, 19.90879027], [1516427700000, 0.01637996, 0.01637998, 0.01637996, 0.01637997, 60.51025961], [1516427760000, 0.01637997, 0.01637998, 0.01637997, 0.01637998, 9.83881622], [1516427820000, 0.01637998, 0.01637998, 0.01628711, 0.01637997, 104.67656271], [1516427880000, 0.01628711, 0.01637997, 0.01627602, 0.01628722, 25.30150253], [1516427940000, 0.01637, 0.0163799, 0.01623163, 0.01637492, 118.13430442], [1516428000000, 0.01625701, 0.01637493, 0.01625701, 0.01626202, 20.68171296], [1516428060000, 0.01626202, 0.0163, 0.01623177, 0.01624201, 102.10416292], [1516428120000, 0.0163, 0.01635, 0.01624201, 0.01624201, 86.38485012], [1516428180000, 0.01624201, 0.01636, 0.01623164, 0.01636, 13.05457456], [1516428240000, 0.0163599, 0.01637493, 0.0162781, 0.016355, 7.53090184], [1516428300000, 0.016355, 0.016355, 0.01623163, 0.01623703, 31.92590265], [1516428360000, 0.01623703, 0.0162781, 0.016237, 0.0162781, 17.69938138], [1516428420000, 0.01624201, 0.01635988, 0.01624201, 0.01625202, 182.5528493], [1516428480000, 0.01634988, 0.01634988, 0.01625205, 0.01634988, 12.64791896], [1516428540000, 0.01625202, 0.016345, 0.01625202, 0.01634499, 53.32346893], [1516428600000, 0.01624201, 0.01624201, 0.01623163, 0.016237, 45.03578978], [1516428660000, 0.01623201, 0.016345, 0.01623201, 0.016345, 79.20326626], [1516428720000, 0.01634489, 0.01634489, 0.01623203, 0.01633995, 6.33560159], [1516428780000, 0.01633995, 0.01633995, 0.01623722, 0.01633995, 3.23040809], [1516428840000, 0.01633994, 0.01633995, 0.01623714, 0.01623737, 40.29847204], [1516428900000, 0.01624312, 0.01624312, 0.01623714, 0.01623737, 22.25587062], [1516428960000, 0.01623714, 0.01623737, 0.01623714, 0.01623737, 42.41856749], [1516429020000, 0.01623737, 0.01623737, 0.01623714, 0.01623714, 26.23458827], [1516429080000, 0.01623737, 0.01623737, 0.01623701, 0.01623701, 34.3018525], [1516429140000, 0.01623701, 0.01623714, 0.016237, 0.016237, 45.20303869], [1516429200000, 0.01623714, 0.01623714, 0.016237, 0.01623714, 65.08561322], [1516429260000, 0.016237, 0.01628899, 0.016237, 0.01628899, 113.10610393], [1516429320000, 0.01623715, 0.016295, 0.01623715, 0.01623715, 0.54925103], [1516429380000, 0.01629499, 0.01633, 0.01623714, 0.01623714, 38.61184151], [1516429440000, 0.01623714, 0.01631, 0.01623699, 0.01623699, 64.24259965], [1516429500000, 0.01623163, 0.01623699, 0.01623163, 0.01623165, 3.91034104], [1516429560000, 0.01623165, 0.01623699, 0.01621, 0.016236, 12.80677854], [1516429620000, 0.016236, 0.016236, 0.01623598, 0.016236, 9.80226659], [1516429680000, 0.01623598, 0.01623598, 0.01623598, 0.01623598, 16.65280074], [1516429740000, 0.01623598, 0.016236, 0.01623598, 0.01623598, 84.62476154], [1516429800000, 0.01623598, 0.01630998, 0.01621501, 0.01630998, 32.38849281], [1516429860000, 0.016317, 0.0163498, 0.01623598, 0.01623598, 127.27502997], [1516429920000, 0.01634982, 0.01634982, 0.01621, 0.01621, 1.98301317], [1516429980000, 0.016236, 0.01634982, 0.01623, 0.01623002, 6.42921514], [1516430040000, 0.01623002, 0.016345, 0.01623002, 0.01623002, 8.02758323], [1516430100000, 0.01623003, 0.01624, 0.01623003, 0.01624, 1.99731442], [1516430160000, 0.0163449, 0.01634491, 0.01621517, 0.016335, 61.97788735], [1516430220000, 0.01625332, 0.016335, 0.016221, 0.01624101, 11.07573574], [1516430280000, 0.01622501, 0.016335, 0.01622501, 0.01626966, 5.22454227], [1516430340000, 0.01626965, 0.01626966, 0.01625, 0.016256, 11.28424292], [1516430400000, 0.01626966, 0.016345, 0.01626966, 0.01634, 14.24627011], [1516430460000, 0.01633998, 0.01634, 0.016256, 0.016256, 3.15173761], [1516430520000, 0.01631001, 0.01631001, 0.01625601, 0.01625601, 3.93240788], [1516430580000, 0.01633994, 0.01633995, 0.016256, 0.01630482, 6.11242724], [1516430640000, 0.01630482, 0.01630482, 0.01621517, 0.01621517, 27.23828369], [1516430700000, 0.01630475, 0.01630475, 0.01621517, 0.01621517, 16.82919298], [1516430760000, 0.01621517, 0.016303, 0.01621517, 0.01621517, 8.00947859], [1516430820000, 0.01630295, 0.01630295, 0.01623518, 0.01630294, 1.98365429], [1516430880000, 0.01625, 0.01627793, 0.01625, 0.01625, 1.40089622], [1516430940000, 0.01625, 0.01625, 0.01623517, 0.01623517, 19.2361325], [1516431000000, 0.01623517, 0.01623517, 0.01623517, 0.01623517, 0.51536644], [1516431060000, 0.01624964, 0.01624964, 0.01623517, 0.01624964, 6.61264557], [1516431120000, 0.01623517, 0.01624963, 0.01623517, 0.01624963, 33.06447887], [1516431180000, 0.01622, 0.01624963, 0.01622, 0.01624963, 9.64531756], [1516431240000, 0.01624963, 0.01630399, 0.01623517, 0.01630399, 49.03712357], [1516431300000, 0.01623517, 0.01630482, 0.01623517, 0.01627299, 17.44708418], [1516431360000, 0.01627299, 0.01630482, 0.01627299, 0.01630482, 12.88703167], [1516431420000, 0.01630482, 0.01634988, 0.01630482, 0.01634988, 66.85756059], [1516431480000, 0.01634988, 0.01635, 0.01634988, 0.01634999, 27.59116698], [1516431540000, 0.01634999, 0.01635, 0.01625001, 0.01625001, 100.2933759], [1516431600000, 0.01634988, 0.01634988, 0.01625501, 0.01634988, 39.5859734], [1516431660000, 0.01634988, 0.01635399, 0.01629899, 0.01635399, 19.70403635], [1516431720000, 0.01635397, 0.01635399, 0.01635397, 0.01635399, 14.07362295], [1516431780000, 0.01629899, 0.01635399, 0.01629899, 0.01635366, 9.81239977], [1516431840000, 0.0163, 0.01635399, 0.0163, 0.01635399, 2.84551002], [1516431900000, 0.01635399, 0.01635399, 0.01635399, 0.01635399, 9.70183784], [1516431960000, 0.0163, 0.01635, 0.0163, 0.0163, 4.80759005], [1516432020000, 0.0163, 0.01635399, 0.0163, 0.01635399, 21.27750138], [1516432080000, 0.01635399, 0.01635399, 0.0163, 0.0163, 22.96706687], [1516432140000, 0.01635, 0.01635, 0.0163, 0.0163, 7.3266948], [1516432200000, 0.01631725, 0.01635399, 0.0163, 0.0163, 6.83108667], [1516432260000, 0.0163, 0.0163, 0.01627, 0.01628253, 12.72030619], [1516432320000, 0.01627, 0.01627, 0.01627, 0.01627, 0.38134642], [1516432380000, 0.01628253, 0.01635399, 0.01627, 0.01634707, 11.18954813], [1516432440000, 0.01628253, 0.01634708, 0.01627, 0.01627, 50.29416108], [1516432500000, 0.01634704, 0.01634706, 0.01621517, 0.01622001, 34.29864014], [1516432560000, 0.01622001, 0.01634705, 0.01621005, 0.01621011, 91.0338647], [1516432620000, 0.01634, 0.01634, 0.01621013, 0.016215, 32.74038645], [1516432680000, 0.016329, 0.01633, 0.01621082, 0.01621083, 42.37633565], [1516432740000, 0.016215, 0.01622, 0.016215, 0.01622, 30.28634503], [1516432800000, 0.01628501, 0.016318, 0.016215, 0.01631796, 22.21705885], [1516432860000, 0.016316, 0.016316, 0.01621138, 0.01631597, 18.04509304], [1516432920000, 0.0162114, 0.01631593, 0.01621138, 0.01631585, 6.32592648], [1516432980000, 0.01625, 0.01633394, 0.01621138, 0.01632898, 93.66145514], [1516433040000, 0.01632899, 0.01632899, 0.01621138, 0.01621138, 17.02609694], [1516433100000, 0.01629998, 0.01630305, 0.01627107, 0.01630305, 2.67016386], [1516433160000, 0.01630305, 0.01634499, 0.01621001, 0.01634499, 106.59138226], [1516433220000, 0.01627464, 0.01634997, 0.01622502, 0.01623002, 27.8373041], [1516433280000, 0.01633999, 0.01634499, 0.01623003, 0.01634499, 5.249154], [1516433340000, 0.01634499, 0.01634499, 0.01629152, 0.01634498, 18.27767369], [1516433400000, 0.01629152, 0.01634498, 0.01629151, 0.01634498, 2.99214835], [1516433460000, 0.01634498, 0.01634498, 0.01629, 0.01629, 13.56329429], [1516433520000, 0.0163, 0.0163, 0.01624498, 0.01624498, 8.84501082], [1516433580000, 0.01624498, 0.01624499, 0.01623003, 0.01623003, 39.90509892], [1516433640000, 0.01624498, 0.0163, 0.01623501, 0.01623501, 32.56997721], [1516433700000, 0.01629999, 0.01634, 0.01629999, 0.01634, 5.52752428], [1516433760000, 0.01625, 0.01634, 0.01625, 0.01634, 1.05834301], [1516433820000, 0.01634, 0.01634, 0.01625, 0.01625, 4.11729885], [1516433880000, 0.01625, 0.01634479, 0.01625, 0.01634478, 4.50872163], [1516433940000, 0.01634477, 0.01634478, 0.01625001, 0.016255, 31.00277666], [1516434000000, 0.016255, 0.01634, 0.016255, 0.016255, 23.67769141], [1516434060000, 0.01626, 0.016335, 0.01625002, 0.01625002, 42.23064125], [1516434120000, 0.01631999, 0.01631999, 0.0162465, 0.0162465, 8.45384868], [1516434180000, 0.01631996, 0.01631996, 0.0162465, 0.01631996, 4.61804165], [1516434240000, 0.01623501, 0.01631996, 0.01621501, 0.01631996, 9.1884425], [1516434300000, 0.0162465, 0.01631996, 0.0162465, 0.01631996, 18.49707119], [1516434360000, 0.0162465, 0.0162465, 0.0162101, 0.0162101, 19.22008007], [1516434420000, 0.0162101, 0.01631986, 0.0162101, 0.01622001, 10.50325306], [1516434480000, 0.0162465, 0.01631996, 0.01622303, 0.0162465, 12.72814518], [1516434540000, 0.01631995, 0.01631995, 0.01624651, 0.016257, 12.19936802], [1516434600000, 0.01628624, 0.01631895, 0.01626, 0.01626, 4.17390613], [1516434660000, 0.01626, 0.01626, 0.01626, 0.01626, 0.321], [1516434720000, 0.01628797, 0.016318, 0.01626, 0.016318, 46.5790084], [1516434780000, 0.016318, 0.01631893, 0.01621005, 0.01621005, 82.01057658], [1516434840000, 0.016318, 0.016318, 0.01622001, 0.01624809, 10.95028882], [1516434900000, 0.016225, 0.01624809, 0.01621005, 0.016215, 21.71711436], [1516434960000, 0.01622, 0.01624809, 0.0162052, 0.01621, 55.58075445], [1516435020000, 0.01624809, 0.01624809, 0.01621, 0.01624809, 13.08936361], [1516435080000, 0.01624809, 0.01624809, 0.01621001, 0.01624809, 8.03593246], [1516435140000, 0.01624809, 0.016265, 0.01624809, 0.016265, 24.65843106], [1516435200000, 0.016265, 0.016265, 0.0162101, 0.01622622, 6.99473654], [1516435260000, 0.016265, 0.016265, 0.01623, 0.01623, 4.1370174], [1516435320000, 0.016241, 0.016241, 0.01623, 0.016241, 17.77835336], [1516435380000, 0.016241, 0.016265, 0.016241, 0.016241, 73.92586318], [1516435440000, 0.016246, 0.016246, 0.016246, 0.016246, 0.942], [1516435500000, 0.01626485, 0.01626499, 0.01626485, 0.01626485, 13.48268621], [1516435560000, 0.01626499, 0.01626499, 0.01626486, 0.01626499, 10.30000396], [1516435620000, 0.01626499, 0.016265, 0.01626499, 0.016265, 29.0963077], [1516435680000, 0.01626499, 0.016265, 0.01626499, 0.01626499, 87.8377099], [1516435740000, 0.01626499, 0.016265, 0.01626499, 0.016265, 5.71711364], [1516435800000, 0.016265, 0.01631888, 0.016265, 0.01631888, 17.17650601], [1516435860000, 0.01627, 0.01631799, 0.016265, 0.01631799, 28.76732602], [1516435920000, 0.01631799, 0.01631799, 0.016265, 0.016267, 22.03911244], [1516435980000, 0.01631799, 0.01631799, 0.016267, 0.016267, 6.20520855], [1516436040000, 0.01631749, 0.01631799, 0.01631749, 0.01631749, 181.49916343], [1516436100000, 0.01631749, 0.01631799, 0.01631749, 0.01631749, 12.86315375], [1516436160000, 0.0163178, 0.01631799, 0.0163178, 0.01631799, 28.13399261], [1516436220000, 0.01631805, 0.01631805, 0.01631749, 0.01631749, 15.18671139], [1516436280000, 0.01631799, 0.01631889, 0.01631799, 0.01631805, 27.27888861], [1516436340000, 0.01631805, 0.01631887, 0.01631805, 0.01631887, 32.12085712], [1516436400000, 0.01631887, 0.01631895, 0.01631886, 0.01631889, 8.33216754], [1516436460000, 0.01631889, 0.0163199, 0.01631749, 0.0163199, 56.22161847], [1516436520000, 0.01631749, 0.0163199, 0.01631749, 0.0163199, 0.45814692], [1516436580000, 0.01631988, 0.01631988, 0.01631749, 0.01631749, 7.81511205], [1516436640000, 0.01631749, 0.01631996, 0.01631749, 0.01631989, 5.15759589], [1516436700000, 0.01631996, 0.01631996, 0.01631749, 0.01631749, 19.72494473], [1516436760000, 0.01631749, 0.01631989, 0.01631749, 0.01631749, 19.63425326], [1516436820000, 0.01631949, 0.01631949, 0.01631749, 0.01631949, 19.81928128], [1516436880000, 0.01631749, 0.01631949, 0.0163, 0.01631949, 11.48101789], [1516436940000, 0.0163, 0.0163, 0.01627, 0.01627, 2.63384064], [1516437000000, 0.0163, 0.0163, 0.01627, 0.01627, 3.61526524], [1516437060000, 0.0163, 0.0163, 0.01627, 0.01627, 5.1379233], [1516437120000, 0.0163, 0.0163, 0.01629999, 0.0163, 5.49697602], [1516437180000, 0.0163, 0.0163, 0.01626701, 0.01626701, 6.36665059], [1516437240000, 0.01628845, 0.0163, 0.01626501, 0.0163, 4.17544877], [1516437300000, 0.01629999, 0.0163, 0.016265, 0.01629918, 16.56152949], [1516437360000, 0.01629918, 0.01629918, 0.016265, 0.016265, 29.45450668], [1516437420000, 0.01629883, 0.01629883, 0.016265, 0.01626501, 6.6202542], [1516437480000, 0.01626501, 0.01626501, 0.01626501, 0.01626501, 206.51883152], [1516437540000, 0.0162926, 0.01629295, 0.016265, 0.016265, 60.47039238], [1516437600000, 0.01626501, 0.01629999, 0.01626501, 0.01629999, 49.06744589], [1516437660000, 0.016265, 0.01629999, 0.016265, 0.016265, 61.07703732], [1516437720000, 0.016265, 0.01629964, 0.016265, 0.01629964, 16.99631225], [1516437780000, 0.016265, 0.01629931, 0.016265, 0.016265, 72.87807625], [1516437840000, 0.016265, 0.0162993, 0.016265, 0.01626501, 14.13502791], [1516437900000, 0.01626501, 0.016294, 0.016265, 0.01629397, 72.08849276], [1516437960000, 0.01629397, 0.01629399, 0.016265, 0.016265, 16.76960141], [1516438020000, 0.01629366, 0.01629366, 0.01626485, 0.01626485, 37.74343748], [1516438080000, 0.01626485, 0.01626485, 0.01626, 0.01626, 110.75366966], [1516438140000, 0.01626, 0.01626, 0.01622, 0.01626, 17.44114534], [1516438200000, 0.01622, 0.01626485, 0.01621, 0.01626485, 36.83644029], [1516438260000, 0.01625999, 0.01626484, 0.01620517, 0.01620517, 8.57599935], [1516438320000, 0.01625999, 0.01625999, 0.0162, 0.0162, 75.09737028], [1516438380000, 0.0162, 0.01620517, 0.01616654, 0.01620005, 44.39698992], [1516438440000, 0.01616655, 0.01618, 0.01613879, 0.0161788, 26.07860665], [1516438500000, 0.0161788, 0.01618, 0.01613879, 0.01618, 13.89636086], [1516438560000, 0.01615802, 0.01618, 0.01615479, 0.01615479, 8.01102217], [1516438620000, 0.01615802, 0.01618, 0.01615, 0.01618, 20.86545735], [1516438680000, 0.01615, 0.01618, 0.01615, 0.01616, 5.26867686], [1516438740000, 0.01616, 0.01616, 0.0161333, 0.01615, 13.62647355], [1516438800000, 0.01613483, 0.01618, 0.01613483, 0.01618, 67.27690635], [1516438860000, 0.01617916, 0.01618, 0.01613483, 0.01617916, 41.67753981], [1516438920000, 0.01617918, 0.01618, 0.0161333, 0.01613483, 73.94355436], [1516438980000, 0.01613483, 0.01618, 0.01611799, 0.01611799, 27.69480783], [1516439040000, 0.01611799, 0.01618, 0.01611799, 0.01618, 92.69254909], [1516439100000, 0.01618, 0.01618, 0.01611799, 0.01618, 3.88848938], [1516439160000, 0.0161202, 0.01618, 0.0161202, 0.016121, 10.82616716], [1516439220000, 0.01617999, 0.01618, 0.01617999, 0.01618, 66.36257953], [1516439280000, 0.01617999, 0.01618, 0.016123, 0.016123, 38.61761372], [1516439340000, 0.01617999, 0.01618, 0.01617999, 0.01617999, 19.61845124], [1516439400000, 0.01618, 0.01618, 0.016134, 0.01613401, 41.33497981], [1516439460000, 0.01613401, 0.01617899, 0.01613401, 0.01613401, 2.98630343], [1516439520000, 0.01613401, 0.0161789, 0.01612301, 0.0161789, 64.46794607], [1516439580000, 0.0161789, 0.0161789, 0.0161341, 0.0161341, 19.25635411], [1516439640000, 0.0161789, 0.01620005, 0.0161341, 0.01620005, 78.7981985], [1516439700000, 0.01615, 0.01625, 0.01615, 0.01625, 11.7718706], [1516439760000, 0.01617, 0.01618, 0.01617, 0.01618, 9.34080124], [1516439820000, 0.01620003, 0.016255, 0.01620003, 0.01625, 35.28592958], [1516439880000, 0.016217, 0.01625, 0.01618, 0.01618, 18.31321297], [1516439940000, 0.01623249, 0.01625, 0.01618, 0.01620002, 13.55283421], [1516440000000, 0.01620002, 0.016245, 0.0161341, 0.01624498, 5.13294541], [1516440060000, 0.01613902, 0.01625999, 0.016135, 0.01614004, 21.15810705], [1516440120000, 0.01624499, 0.01624499, 0.01615601, 0.01615601, 0.7697872], [1516440180000, 0.01623999, 0.01625, 0.01617101, 0.01625, 21.16256116], [1516440240000, 0.01624499, 0.01626, 0.01624499, 0.01626, 60.0017299], [1516440300000, 0.01624499, 0.01626483, 0.01617101, 0.01617101, 16.79267415], [1516440360000, 0.01626483, 0.01626483, 0.01619976, 0.01626482, 7.50974272], [1516440420000, 0.01626482, 0.01626482, 0.01617101, 0.01617101, 3.70584516], [1516440480000, 0.016176, 0.01626482, 0.01617101, 0.01617101, 32.78737898], [1516440540000, 0.01617103, 0.01617103, 0.016166, 0.01617103, 59.17584065], [1516440600000, 0.01617103, 0.01617103, 0.01617102, 0.01617103, 117.72492065], [1516440660000, 0.01617102, 0.01617103, 0.016123, 0.01617103, 36.64023408], [1516440720000, 0.01617103, 0.01617103, 0.016128, 0.01617102, 20.53026425], [1516440780000, 0.016128, 0.01617102, 0.016118, 0.016147, 2.53407683], [1516440840000, 0.01611801, 0.01617102, 0.016118, 0.01614699, 49.16435457], [1516440900000, 0.016118, 0.01617102, 0.016118, 0.016118, 48.53530088], [1516440960000, 0.01616, 0.01617102, 0.016118, 0.0161707, 32.16406742], [1516441020000, 0.016118, 0.016147, 0.0161, 0.0161, 83.64328993], [1516441080000, 0.01613349, 0.0161707, 0.01609689, 0.01609689, 41.63501553], [1516441200000, 0.01614184, 0.01617102, 0.016102, 0.01617102, 21.62487709], [1516441260000, 0.01617102, 0.01617102, 0.016129, 0.01616331, 41.22945943], [1516441320000, 0.01617102, 0.01617102, 0.01616331, 0.016171, 2.90567711], [1516441380000, 0.016171, 0.016171, 0.01612407, 0.01616331, 15.90632214], [1516441440000, 0.01616331, 0.01617102, 0.01612407, 0.016171, 20.16303587], [1516441500000, 0.016171, 0.016171, 0.01612418, 0.01612418, 20.18471747], [1516441560000, 0.01612418, 0.016171, 0.01612405, 0.01612901, 98.5695167], [1516441620000, 0.01617068, 0.01617068, 0.01612405, 0.016125, 12.20318288], [1516441680000, 0.0161706, 0.0161706, 0.016125, 0.01617058, 1.92495936], [1516441740000, 0.0161706, 0.01622965, 0.016125, 0.016225, 141.94945986], [1516441800000, 0.016225, 0.01622966, 0.01612503, 0.01612506, 24.850379], [1516441860000, 0.01622498, 0.01622966, 0.01622468, 0.01622966, 14.91615036], [1516441920000, 0.01622, 0.01622, 0.01612507, 0.01612507, 4.20976745], [1516441980000, 0.01622, 0.01622, 0.01621, 0.01621, 2.01004926], [1516442100000, 0.01620999, 0.01621, 0.01617572, 0.01617572, 12.84685343], [1516442160000, 0.01617572, 0.01621, 0.01617572, 0.01621, 15.615905], [1516442220000, 0.01621, 0.01622, 0.01617572, 0.01617572, 16.78099049], [1516442280000, 0.016219, 0.01626481, 0.016219, 0.01626481, 18.59107456], [1516442340000, 0.01626481, 0.01626481, 0.01626481, 0.01626481, 0.13556876], [1516442400000, 0.01626481, 0.016268, 0.01626481, 0.016268, 49.99654139], [1516442460000, 0.01626485, 0.01629394, 0.01626485, 0.01629394, 8.05598912], [1516442520000, 0.01629394, 0.01629394, 0.016268, 0.01629394, 14.70646411], [1516442580000, 0.01629396, 0.01629396, 0.016268, 0.016268, 11.69620482], [1516442640000, 0.01628559, 0.01629396, 0.016268, 0.01629395, 47.61039511], [1516442700000, 0.01629394, 0.01629395, 0.016268, 0.016268, 36.97579676], [1516442760000, 0.016268, 0.01629396, 0.01626483, 0.01626483, 30.20269404], [1516442820000, 0.01626483, 0.01629396, 0.01626483, 0.01629396, 60.42958102], [1516442880000, 0.01629396, 0.01629396, 0.01626483, 0.01626483, 8.79088853], [1516442940000, 0.01629396, 0.01629396, 0.01626485, 0.01626485, 27.17579528], [1516443000000, 0.01626485, 0.01629396, 0.01626485, 0.01629395, 108.45889458], [1516443060000, 0.01626485, 0.01629394, 0.01626485, 0.01629394, 2.92406744], [1516443120000, 0.01629396, 0.01629396, 0.01626485, 0.01626485, 20.0390854], [1516443180000, 0.01629394, 0.01629394, 0.01629394, 0.01629394, 1.61632638], [1516443240000, 0.01629394, 0.01629394, 0.01626483, 0.01626483, 22.05378866], [1516443300000, 0.01629396, 0.01635, 0.01626483, 0.01635, 26.50672105], [1516443360000, 0.01635, 0.01635394, 0.01626485, 0.01626485, 3.00571017], [1516443420000, 0.01635394, 0.01635394, 0.01635394, 0.01635394, 1.47271501], [1516443480000, 0.01626485, 0.01635394, 0.01626485, 0.01626485, 9.72927487], [1516443540000, 0.01635394, 0.01635394, 0.01626483, 0.01626483, 15.88078081], [1516443600000, 0.01635394, 0.01635394, 0.01626483, 0.01626485, 4.88134022], [1516443660000, 0.01626485, 0.01635399, 0.01626483, 0.016289, 20.74321952], [1516443720000, 0.016289, 0.01635395, 0.01626483, 0.01626483, 7.95473371], [1516443780000, 0.01626483, 0.01626483, 0.01626483, 0.01626483, 11.82110887], [1516443840000, 0.01626484, 0.01626484, 0.01620396, 0.01620396, 15.90728268], [1516443900000, 0.01620903, 0.01626481, 0.01620903, 0.016229, 15.0429862], [1516443960000, 0.01624786, 0.01626481, 0.01624786, 0.01626481, 2.00573199], [1516444020000, 0.01624786, 0.01626481, 0.01624786, 0.01626481, 4.49132627], [1516444080000, 0.01626481, 0.01626483, 0.01626481, 0.01626483, 6.08261911], [1516444140000, 0.01626483, 0.016289, 0.01626483, 0.016289, 27.09616708], [1516444200000, 0.016289, 0.016289, 0.01626484, 0.01626485, 4.17101048], [1516444260000, 0.016289, 0.016289, 0.01628899, 0.016289, 8.50944511], [1516444320000, 0.01628899, 0.016289, 0.01628899, 0.016289, 10.17433938], [1516444380000, 0.016289, 0.01634387, 0.016289, 0.01633899, 25.25981994], [1516444440000, 0.01628909, 0.01633899, 0.01626485, 0.01628903, 11.88974612], [1516444500000, 0.01628903, 0.01634385, 0.01628903, 0.01628904, 4.7796887], [1516444560000, 0.01628906, 0.0163438, 0.01628906, 0.01634377, 58.88088115], [1516444620000, 0.01634367, 0.01634367, 0.01628906, 0.01628907, 2.17788658], [1516444680000, 0.01634353, 0.01634353, 0.01628907, 0.01633899, 10.97750965], [1516444740000, 0.01633889, 0.01634326, 0.01628907, 0.01633869, 16.97005585], [1516444800000, 0.01628907, 0.01633869, 0.01628907, 0.01633818, 48.34595988], [1516444860000, 0.0162891, 0.01633869, 0.0162891, 0.0162891, 4.97808368], [1516444920000, 0.0162891, 0.01633869, 0.0162891, 0.0162891, 9.55644282], [1516444980000, 0.0162891, 0.0162891, 0.01628907, 0.0162891, 7.96989501], [1516445040000, 0.01628908, 0.01633, 0.01628908, 0.01633, 5.80991915], [1516445100000, 0.01633, 0.01634352, 0.01628907, 0.01628907, 25.87898295], [1516445160000, 0.01634351, 0.01634367, 0.01628907, 0.01634367, 47.11516086], [1516445220000, 0.01634367, 0.01634367, 0.01628908, 0.01628908, 12.12602883], [1516445280000, 0.01634367, 0.01634381, 0.01628908, 0.01628909, 10.02417392], [1516445340000, 0.01628909, 0.01634369, 0.01628908, 0.01634369, 31.70757678], [1516445400000, 0.01628909, 0.0163437, 0.01628909, 0.0162891, 15.02612395], [1516445460000, 0.0162891, 0.01634251, 0.01628906, 0.01628906, 82.03509017], [1516445520000, 0.01628906, 0.01628909, 0.01618156, 0.01628906, 133.09830321], [1516445580000, 0.01628906, 0.01628908, 0.01628906, 0.01628906, 27.18325459], [1516445640000, 0.01628906, 0.01628908, 0.01628906, 0.01628906, 5.32487878], [1516445700000, 0.01628906, 0.01628908, 0.01628906, 0.01628906, 18.66749689], [1516445760000, 0.01628907, 0.01628908, 0.01617572, 0.01628908, 143.96438017], [1516445820000, 0.01628399, 0.01628874, 0.016191, 0.01628874, 3.15016615], [1516445880000, 0.01628873, 0.01628873, 0.01619103, 0.016196, 68.2560914], [1516445940000, 0.01623176, 0.01628907, 0.01623176, 0.01628907, 4.89080915], [1516446000000, 0.01628907, 0.01628908, 0.01628906, 0.01628906, 15.00028692], [1516446060000, 0.01628906, 0.01628908, 0.01628906, 0.01628906, 42.99933843], [1516446120000, 0.01628906, 0.01628908, 0.01628906, 0.01628907, 15.6581237], [1516446180000, 0.01628907, 0.01628908, 0.016201, 0.01628908, 16.20023519], [1516446240000, 0.01628906, 0.01628908, 0.01619603, 0.01623209, 25.09365939], [1516446300000, 0.01623209, 0.01623209, 0.016201, 0.01623209, 1.67127519], [1516446360000, 0.016232, 0.01628908, 0.01620101, 0.01628908, 11.69516253], [1516446420000, 0.01620101, 0.01628908, 0.01620101, 0.01628908, 5.13874252], [1516446480000, 0.01628907, 0.01628907, 0.01628907, 0.01628907, 34.71858966], [1516446540000, 0.01621143, 0.01628907, 0.01620625, 0.01623867, 13.82049064], [1516446600000, 0.01628907, 0.01628908, 0.01628906, 0.01628908, 22.30336364], [1516446660000, 0.01624, 0.01628906, 0.01624, 0.01624, 6.33970063], [1516446720000, 0.01624, 0.01628906, 0.016235, 0.016235, 15.28706075], [1516446780000, 0.01628906, 0.01628908, 0.016235, 0.016235, 25.982997], [1516446840000, 0.016235, 0.01628908, 0.01621603, 0.01628906, 34.44808218], [1516446900000, 0.01628905, 0.01628906, 0.01628905, 0.01628906, 9.24282999], [1516446960000, 0.01628906, 0.01628906, 0.01628905, 0.01628906, 1.58400643], [1516447020000, 0.01628906, 0.01628906, 0.01628905, 0.01628906, 4.85338607], [1516447080000, 0.01628905, 0.01628908, 0.01628905, 0.01628906, 10.29193148], [1516447140000, 0.01628908, 0.01628908, 0.01628905, 0.01628908, 5.38852441], [1516447200000, 0.01628908, 0.01628908, 0.01628905, 0.01628908, 3.91961997], [1516447260000, 0.01628905, 0.01628908, 0.01628905, 0.01628905, 4.86572898], [1516447320000, 0.01628905, 0.01628905, 0.01622501, 0.01622502, 12.42998805], [1516447380000, 0.016289, 0.016289, 0.01622503, 0.01622503, 21.96605237], [1516447440000, 0.01622503, 0.016289, 0.01622503, 0.01622503, 13.71820634], [1516447500000, 0.016289, 0.016289, 0.01622503, 0.016289, 5.02600967], [1516447560000, 0.01625, 0.016289, 0.01623001, 0.016289, 27.03090067], [1516447620000, 0.01623001, 0.01628, 0.01623001, 0.01628, 2.15080154], [1516447680000, 0.01628, 0.016289, 0.01624, 0.01624, 7.76570957], [1516447740000, 0.01624, 0.01628901, 0.01624, 0.01628, 8.78558736], [1516447800000, 0.01628, 0.01628901, 0.016239, 0.016239, 16.2123304], [1516447860000, 0.01623503, 0.01628, 0.01623503, 0.01628, 7.15500258], [1516447920000, 0.01628, 0.01628, 0.01623508, 0.01628, 3.59551056], [1516447980000, 0.01628, 0.01628908, 0.01625136, 0.01625138, 10.23398668], [1516448040000, 0.01625138, 0.01628908, 0.016245, 0.01628908, 17.62781102], [1516448100000, 0.01624, 0.016289, 0.01624, 0.01624, 4.34884617], [1516448160000, 0.01624, 0.01628908, 0.01624, 0.01628908, 22.48326151], [1516448220000, 0.01628908, 0.01628908, 0.01625, 0.01625, 4.9674897], [1516448280000, 0.01628875, 0.01628875, 0.01625, 0.01628842, 10.30432372], [1516448340000, 0.01628875, 0.01629899, 0.016235, 0.016235, 16.80578555], [1516448400000, 0.01629899, 0.0163489, 0.01623, 0.0162307, 64.09267612], [1516448460000, 0.0163423, 0.0163423, 0.01624001, 0.01634163, 10.39587983], [1516448520000, 0.016241, 0.01634366, 0.01624001, 0.0162402, 38.78110729], [1516448580000, 0.0162402, 0.01633633, 0.0162307, 0.01631362, 49.63937138], [1516448640000, 0.0162307, 0.01631363, 0.0162307, 0.01631363, 17.92073458], [1516448700000, 0.01631363, 0.01631369, 0.01623, 0.01631363, 31.75535874], [1516448760000, 0.016235, 0.01625, 0.01623002, 0.01625, 23.37053404], [1516448820000, 0.01624, 0.01625, 0.01623001, 0.01623001, 49.09415396], [1516448880000, 0.01623001, 0.01625, 0.01623001, 0.01623001, 18.6763467], [1516448940000, 0.01623001, 0.01625, 0.01623001, 0.01625, 1.56234772], [1516449000000, 0.01623001, 0.01625, 0.01623, 0.01623001, 9.96804511], [1516449060000, 0.01623001, 0.01625, 0.01623, 0.01623, 9.1115267], [1516449120000, 0.01623, 0.01623, 0.01622503, 0.01623, 15.44418772], [1516449180000, 0.01623, 0.01623, 0.01622503, 0.01623, 35.80917335], [1516449240000, 0.01623, 0.01629396, 0.01623, 0.01623, 39.87416597], [1516449300000, 0.01622503, 0.01627899, 0.01621246, 0.01621246, 34.0707811], [1516449360000, 0.01621246, 0.016284, 0.0162, 0.016284, 7.12738058], [1516449420000, 0.01627365, 0.01628399, 0.0162, 0.01628367, 11.1387301], [1516449480000, 0.01627331, 0.01627331, 0.0162, 0.0162, 23.95896615], [1516449540000, 0.0162, 0.0162, 0.0162, 0.0162, 97.53325078], [1516449600000, 0.0162, 0.01626724, 0.01619103, 0.0162, 48.5941836], [1516449660000, 0.01626167, 0.01626167, 0.0162, 0.0162, 28.98306826], [1516449720000, 0.0162, 0.01625622, 0.0162, 0.0162, 6.25000221], [1516449780000, 0.01620745, 0.01625622, 0.0162, 0.01625622, 1.35217865], [1516449840000, 0.01625589, 0.01625589, 0.0162, 0.0162, 15.09160915], [1516449900000, 0.0162162, 0.01625622, 0.0162, 0.01625622, 1.78818086], [1516449960000, 0.01624668, 0.016252, 0.01619102, 0.01619102, 9.44725492], [1516450020000, 0.01625167, 0.01625622, 0.01619102, 0.01624668, 35.69395273], [1516450080000, 0.01624668, 0.01624668, 0.01619201, 0.01619201, 1.74216233], [1516450140000, 0.01624636, 0.01624636, 0.01619201, 0.01619201, 18.18959049], [1516450200000, 0.01619201, 0.0162466, 0.016192, 0.016192, 34.15082821], [1516450260000, 0.0162466, 0.0162466, 0.016222, 0.016222, 5.42498316], [1516450320000, 0.01624659, 0.01624659, 0.01619102, 0.01619102, 20.93288067], [1516450380000, 0.016222, 0.0162464, 0.01619, 0.01619, 6.98924613], [1516450440000, 0.01619, 0.0162164, 0.01619, 0.01619, 7.19739694], [1516450500000, 0.01621639, 0.0162465, 0.01621639, 0.0162164, 9.29168123], [1516450560000, 0.0162164, 0.0162164, 0.016151, 0.01618088, 8.60005096], [1516450620000, 0.0162164, 0.0162464, 0.01618088, 0.0162164, 27.12983504], [1516450680000, 0.0162164, 0.01624639, 0.01615103, 0.01615103, 47.69675316], [1516450740000, 0.01615103, 0.0162163, 0.01614343, 0.016151, 35.22628498], [1516450800000, 0.016151, 0.016211, 0.016151, 0.01621, 1.90571289], [1516450860000, 0.016151, 0.01621, 0.016151, 0.01621, 10.92764055], [1516450920000, 0.016206, 0.01621, 0.01614343, 0.0162, 12.44668989], [1516450980000, 0.0162, 0.01621, 0.01619968, 0.01619968, 9.00574929], [1516451040000, 0.01614343, 0.01614343, 0.01612507, 0.01612507, 44.79331686], [1516451100000, 0.01619968, 0.01619968, 0.0161, 0.01614343, 23.48987851], [1516451160000, 0.01614343, 0.0162, 0.01614343, 0.01614343, 2.51743396], [1516451220000, 0.01619968, 0.0162161, 0.01611004, 0.01614343, 19.02850206], [1516451280000, 0.01614343, 0.0162, 0.01611005, 0.01614343, 26.75585517], [1516451340000, 0.01614343, 0.01614343, 0.01611004, 0.01614343, 55.10063687], [1516451400000, 0.01614343, 0.01614343, 0.01611004, 0.01611004, 25.19898971], [1516451460000, 0.01611004, 0.01614343, 0.01611004, 0.01614343, 7.26694165], [1516451520000, 0.01614343, 0.01614343, 0.01611004, 0.01614343, 48.88864375], [1516451580000, 0.0162, 0.0162, 0.01614343, 0.01614343, 15.31715008], [1516451640000, 0.01614343, 0.0162, 0.01614343, 0.0162, 2.29510539], [1516451700000, 0.01620599, 0.01621099, 0.01614343, 0.0162, 7.79397673], [1516451760000, 0.0162, 0.01621, 0.01614343, 0.01614343, 4.38653626], [1516451820000, 0.01614343, 0.016206, 0.01614343, 0.016206, 0.35404366], [1516451880000, 0.01614343, 0.01619, 0.01614343, 0.01619, 7.21615446], [1516451940000, 0.01619, 0.01621099, 0.01614343, 0.01621099, 25.72089472], [1516452000000, 0.01621099, 0.016216, 0.01614343, 0.01621099, 14.88951278], [1516452060000, 0.0162161, 0.0162163, 0.0162161, 0.0162163, 56.03719448], [1516452120000, 0.0162163, 0.0162163, 0.0162162, 0.0162162, 20.24624296], [1516452180000, 0.01621629, 0.0162163, 0.0162162, 0.0162163, 8.6585722], [1516452240000, 0.0162163, 0.0162163, 0.01619, 0.01619, 76.78405709], [1516452300000, 0.01619, 0.0162162, 0.01619, 0.0162162, 16.16782805], [1516452360000, 0.0162162, 0.01624639, 0.0162162, 0.01624639, 152.59147281], [1516452420000, 0.01624639, 0.01624639, 0.0162164, 0.0162164, 34.07145455], [1516452480000, 0.01624639, 0.01625655, 0.0162162, 0.0162162, 76.23549324], [1516452540000, 0.01624637, 0.01624637, 0.0162162, 0.01624637, 6.28829571], [1516452600000, 0.01624637, 0.01625654, 0.01614801, 0.016235, 20.03832538], [1516452660000, 0.016235, 0.01624699, 0.01614801, 0.016153, 4.65401465], [1516452720000, 0.016153, 0.01625654, 0.016153, 0.01625654, 0.4643387], [1516452780000, 0.01624699, 0.01624699, 0.01615302, 0.01615302, 8.19514542], [1516452840000, 0.01624699, 0.01624699, 0.01624699, 0.01624699, 10.03790629], [1516452900000, 0.01616576, 0.01624699, 0.01615303, 0.01617, 22.40183983], [1516452960000, 0.01617, 0.016241, 0.01615303, 0.016241, 16.84367492], [1516453020000, 0.01624099, 0.01624099, 0.01615303, 0.01615303, 3.7671113], [1516453080000, 0.01624097, 0.01624097, 0.01615303, 0.01615303, 3.89724415], [1516453140000, 0.01615304, 0.01615304, 0.01615304, 0.01615304, 2.44665957], [1516453200000, 0.01615304, 0.01623, 0.01615303, 0.01623, 39.135527], [1516453260000, 0.01615304, 0.01623, 0.01615304, 0.01623, 5.64808404], [1516453320000, 0.01623, 0.01623, 0.01623, 0.01623, 0.414702], [1516453380000, 0.01615306, 0.01623, 0.01615306, 0.0162299, 10.46334657], [1516453440000, 0.01615308, 0.0162299, 0.01615308, 0.0162, 2.37361458], [1516453500000, 0.0162, 0.0162299, 0.0162, 0.0162299, 11.22639067], [1516453560000, 0.0162, 0.01622988, 0.0162, 0.01622988, 1.2463709], [1516453620000, 0.01622988, 0.01622988, 0.0162, 0.0162, 4.71776804], [1516453680000, 0.01622989, 0.01622989, 0.0162, 0.01620001, 6.28572509], [1516453740000, 0.01620001, 0.01622994, 0.01620001, 0.01622994, 8.33946631], [1516453800000, 0.01623, 0.01623, 0.01622994, 0.01622994, 37.44265625], [1516453860000, 0.01622994, 0.016241, 0.01620001, 0.01622994, 55.85314361], [1516453920000, 0.01620001, 0.01624698, 0.01620001, 0.01620004, 6.11099824], [1516453980000, 0.0162469, 0.01625654, 0.01620004, 0.01620005, 6.02023025], [1516454040000, 0.01620005, 0.0162726, 0.01620005, 0.01627259, 90.87435777], [1516454100000, 0.01621624, 0.01627261, 0.01621624, 0.01627261, 6.64486791], [1516454160000, 0.01627261, 0.01627261, 0.01621624, 0.01622, 28.47768815], [1516454220000, 0.01622, 0.01627237, 0.01622, 0.01622, 18.4619579], [1516454280000, 0.01627239, 0.01627247, 0.01622, 0.01625998, 70.99489297], [1516454340000, 0.01625988, 0.01625988, 0.01622, 0.01625988, 7.25538462], [1516454400000, 0.01622, 0.01625998, 0.01622, 0.01624362, 7.18106841], [1516454460000, 0.01625998, 0.01627259, 0.01622, 0.01622, 34.78740612], [1516454520000, 0.01622, 0.01627257, 0.01622, 0.01622, 5.83749478], [1516454580000, 0.01622, 0.01627224, 0.01622, 0.01622, 5.68857811], [1516454640000, 0.01622, 0.01627212, 0.01622, 0.01627212, 0.5032087], [1516454700000, 0.01622, 0.01627223, 0.01622, 0.01622, 4.98350587], [1516454760000, 0.01626, 0.01626, 0.01622, 0.01625999, 20.67390498], [1516454820000, 0.01626, 0.01627222, 0.01622, 0.01622, 41.55517561], [1516454880000, 0.01627023, 0.01627023, 0.01622, 0.01622, 22.18145161], [1516454940000, 0.01626799, 0.01626799, 0.01621624, 0.01626795, 41.70465587], [1516455000000, 0.01621624, 0.01621624, 0.01616001, 0.01620005, 29.36690949], [1516455060000, 0.01620005, 0.01620005, 0.01616001, 0.01620005, 4.62883941], [1516455120000, 0.0162, 0.01620005, 0.01616002, 0.01620005, 22.24975624], [1516455180000, 0.01620005, 0.01620005, 0.0162, 0.0162, 10.48741438], [1516455240000, 0.0162, 0.0162, 0.0162, 0.0162, 2.47100239], [1516455300000, 0.0162, 0.01625799, 0.01616002, 0.01616002, 28.2239355], [1516455360000, 0.01625748, 0.01625748, 0.01616002, 0.01616002, 15.11257223], [1516455420000, 0.01616002, 0.016227, 0.01616002, 0.016227, 9.98683292], [1516455480000, 0.01622699, 0.01622699, 0.01616002, 0.01616002, 16.71729732], [1516455540000, 0.01615555, 0.01616002, 0.01615555, 0.01615555, 39.52484811], [1516455600000, 0.01616002, 0.01624699, 0.01616002, 0.01616002, 32.71008363], [1516455660000, 0.016232, 0.016232, 0.01616003, 0.01622699, 41.61988884], [1516455720000, 0.01616007, 0.016217, 0.01616003, 0.01616003, 27.51162743], [1516455780000, 0.01621699, 0.01623321, 0.01615555, 0.01616004, 229.8659093], [1516455840000, 0.01616004, 0.01623293, 0.01616004, 0.01616004, 163.34776552], [1516455900000, 0.01616004, 0.01625197, 0.01613, 0.01624723, 169.22453647], [1516455960000, 0.01623295, 0.016256, 0.01619041, 0.01620661, 132.17816221], [1516456020000, 0.01620661, 0.01626279, 0.01620661, 0.01620661, 97.09885946], [1516456080000, 0.01620659, 0.016223, 0.01614001, 0.0162228, 65.88254801], [1516456140000, 0.016145, 0.01623923, 0.016145, 0.01623923, 66.68719472], [1516456200000, 0.016145, 0.01625, 0.016145, 0.01614501, 55.78866465], [1516456260000, 0.0162, 0.01624, 0.01614501, 0.01624, 52.95000007], [1516456320000, 0.01624, 0.01625624, 0.01614502, 0.01614502, 37.11748949], [1516456380000, 0.01615, 0.01625, 0.016145, 0.01624, 35.30273447], [1516456440000, 0.01624, 0.01625999, 0.01619938, 0.0162395, 26.62803278], [1516456500000, 0.0162395, 0.01627625, 0.01623, 0.016258, 39.42613757], [1516456560000, 0.016258, 0.01627426, 0.01615602, 0.01627425, 37.03867851], [1516456620000, 0.01627425, 0.01627425, 0.01615101, 0.01615101, 59.58183181], [1516456680000, 0.016263, 0.01626899, 0.016155, 0.01626899, 4.84938897], [1516456740000, 0.016258, 0.016258, 0.01615503, 0.016253, 19.24161557], [1516456800000, 0.01616, 0.01625, 0.01615503, 0.01616, 16.02858898], [1516456860000, 0.01625, 0.016264, 0.016161, 0.016264, 9.02494193], [1516456920000, 0.01625, 0.01625, 0.016165, 0.016165, 3.00806852], [1516456980000, 0.01619999, 0.0162, 0.01616005, 0.0162, 15.47004121], [1516457040000, 0.01625, 0.01625, 0.0162, 0.0162, 12.56206028], [1516457100000, 0.01624, 0.01625, 0.0162, 0.0162, 4.37811954], [1516457160000, 0.0162, 0.01625, 0.01619999, 0.0162, 16.65795141], [1516457220000, 0.01619999, 0.01619999, 0.016199, 0.016199, 14.47781333], [1516457280000, 0.016199, 0.016199, 0.01610002, 0.01610002, 99.31967234], [1516457340000, 0.01619, 0.01619, 0.01619, 0.01619, 3.32953246], [1516457400000, 0.016189, 0.01619899, 0.01612, 0.01619, 21.57999574], [1516457460000, 0.01619, 0.01619, 0.016126, 0.01619, 6.43115754], [1516457520000, 0.01618998, 0.01619, 0.01612503, 0.01618998, 10.61497308], [1516457580000, 0.01614613, 0.01614613, 0.01610008, 0.01610018, 24.17185741], [1516457640000, 0.016107, 0.0161899, 0.01610002, 0.0161899, 32.08307023], [1516457700000, 0.01618989, 0.01619, 0.016104, 0.01619, 26.31383658], [1516457760000, 0.01610004, 0.01619, 0.01610004, 0.01619, 2.17884822], [1516457820000, 0.01619, 0.01619, 0.01611201, 0.01611602, 10.63272879], [1516457880000, 0.01611602, 0.01617989, 0.01611001, 0.01617989, 13.88109008], [1516457940000, 0.01617989, 0.0161799, 0.01611002, 0.01617988, 12.07991725], [1516458000000, 0.01611002, 0.01617988, 0.01610107, 0.01612, 36.95722584], [1516458060000, 0.01612, 0.01617981, 0.01612, 0.01612001, 8.7358397], [1516458120000, 0.01617975, 0.01617975, 0.01617, 0.01617975, 1.66747483], [1516458180000, 0.01617899, 0.016179, 0.01612003, 0.01612003, 8.839728], [1516458240000, 0.016177, 0.016177, 0.01612241, 0.01612241, 14.27033348], [1516458300000, 0.01612241, 0.0161765, 0.01612003, 0.01612241, 32.91758354], [1516458360000, 0.016177, 0.01617989, 0.01612003, 0.01612003, 40.63401097], [1516458420000, 0.01617596, 0.01617596, 0.01612003, 0.01612003, 2.12290421], [1516458480000, 0.01617596, 0.01617596, 0.01610108, 0.01614963, 22.19744169], [1516458540000, 0.01614963, 0.01615, 0.01614962, 0.01614963, 6.42955259], [1516458600000, 0.01614963, 0.01617668, 0.01614963, 0.01617668, 6.28171882], [1516458660000, 0.01617595, 0.01617691, 0.01614963, 0.01614963, 6.77111704], [1516458720000, 0.01614963, 0.016177, 0.01610201, 0.01610201, 19.83074618], [1516458780000, 0.01617694, 0.01617694, 0.01610201, 0.01617689, 19.00264642], [1516458840000, 0.016103, 0.016103, 0.016103, 0.016103, 0.87493171], [1516458900000, 0.016103, 0.0161768, 0.01610107, 0.01610107, 105.83379199], [1516458960000, 0.01610107, 0.016103, 0.01610107, 0.016103, 96.18337178], [1516459020000, 0.016103, 0.016103, 0.01610107, 0.01610107, 107.62233867], [1516459080000, 0.01610107, 0.01610107, 0.01610002, 0.01610107, 40.7708371], [1516459140000, 0.01610107, 0.01610107, 0.0161, 0.01610107, 39.83584785], [1516459200000, 0.01610107, 0.0161767, 0.0161, 0.0161767, 81.16596343], [1516459260000, 0.01610001, 0.0161767, 0.0161, 0.0161367, 5.0345414], [1516459320000, 0.0161366, 0.0161366, 0.01610003, 0.0161366, 6.7134295], [1516459380000, 0.01610101, 0.0161366, 0.01610005, 0.01613657, 49.47576383], [1516459440000, 0.01613657, 0.016175, 0.01610101, 0.0161367, 15.90723419], [1516459500000, 0.0161367, 0.0161367, 0.01610501, 0.0161367, 11.95236923], [1516459560000, 0.0161367, 0.01615, 0.016135, 0.01615, 14.34455313], [1516459620000, 0.016175, 0.0161767, 0.016175, 0.0161767, 38.17813013], [1516459680000, 0.0161767, 0.01617989, 0.01615, 0.01615, 42.61998787], [1516459740000, 0.01615, 0.01617491, 0.01613658, 0.01613659, 9.82751644], [1516459800000, 0.01617491, 0.01617491, 0.01617486, 0.01617486, 3.27998229], [1516459860000, 0.01617486, 0.01617491, 0.016138, 0.01617491, 9.14199262], [1516459920000, 0.01617491, 0.01617491, 0.01617486, 0.01617491, 25.88530672], [1516459980000, 0.01617486, 0.01617989, 0.01617486, 0.01617486, 69.5205458], [1516460040000, 0.01617486, 0.01617989, 0.01614101, 0.01617989, 62.20204283], [1516460100000, 0.01617988, 0.016198, 0.01615615, 0.016198, 8.9780855], [1516460160000, 0.016198, 0.016199, 0.01613001, 0.01614001, 129.63580199], [1516460220000, 0.016198, 0.016198, 0.01614003, 0.01614003, 2.39197494], [1516460280000, 0.01614002, 0.01619798, 0.01614001, 0.01619797, 134.55397025], [1516460340000, 0.01619798, 0.01619798, 0.01611601, 0.01619798, 16.19423534], [1516460400000, 0.01611903, 0.01619798, 0.01611903, 0.01619798, 27.90449588], [1516460460000, 0.01612101, 0.01619798, 0.01612101, 0.01612102, 2.79810699], [1516460520000, 0.01612103, 0.0161979, 0.01612103, 0.0161979, 6.34131223], [1516460580000, 0.01618, 0.0161979, 0.01618, 0.01618, 16.21425558], [1516460640000, 0.0161775, 0.0161775, 0.016122, 0.01617733, 10.7046435], [1516460700000, 0.01617733, 0.01617733, 0.016122, 0.01616, 9.18610265], [1516460760000, 0.01616, 0.01617732, 0.016122, 0.01617732, 37.47641769], [1516460820000, 0.01617732, 0.01617732, 0.016122, 0.0161772, 73.97836176], [1516460880000, 0.0161772, 0.01617732, 0.0161772, 0.01617732, 2.25159354], [1516460940000, 0.0161772, 0.0161772, 0.016122, 0.01617719, 34.56798814], [1516461000000, 0.01617719, 0.01617732, 0.01611034, 0.01611034, 20.30949332], [1516461060000, 0.01617731, 0.01617732, 0.01611034, 0.01617731, 28.21920522], [1516461120000, 0.01617731, 0.01617732, 0.01617731, 0.01617731, 13.87873656], [1516461180000, 0.01617732, 0.01617732, 0.01611701, 0.01617732, 57.79927795], [1516461240000, 0.01617732, 0.01617732, 0.01611501, 0.01617731, 12.76003714], [1516461300000, 0.01617731, 0.01619798, 0.01617731, 0.01619798, 12.70369298], [1516461360000, 0.0161773, 0.01619798, 0.0161773, 0.01619798, 0.22338226], [1516461420000, 0.0161773, 0.01619798, 0.01612001, 0.01619798, 3.15669389], [1516461480000, 0.01619798, 0.016199, 0.01611501, 0.01611501, 35.60338908], [1516461540000, 0.016199, 0.016199, 0.01612001, 0.016199, 13.40290784], [1516461600000, 0.01612201, 0.0162, 0.01612201, 0.0162, 38.04625813], [1516461660000, 0.016134, 0.0162, 0.01612602, 0.0162, 64.84622128], [1516461720000, 0.0162, 0.0162, 0.016199, 0.0162, 13.01708007], [1516461780000, 0.0162, 0.0162, 0.016199, 0.0162, 13.89017859], [1516461840000, 0.016199, 0.0162, 0.016199, 0.0162, 6.53216061], [1516461900000, 0.0162, 0.0162, 0.016199, 0.01619989, 60.77068395], [1516461960000, 0.01619989, 0.0162, 0.01619989, 0.01619989, 19.60378569], [1516462020000, 0.01619999, 0.0162, 0.01619989, 0.01619989, 6.19799796], [1516462080000, 0.0162, 0.0162, 0.01613201, 0.01613701, 9.98568663], [1516462140000, 0.01619798, 0.01619798, 0.016138, 0.01619798, 16.43646017], [1516462200000, 0.016138, 0.01625, 0.016138, 0.016143, 35.9731599], [1516462260000, 0.01624999, 0.01624999, 0.016142, 0.01623219, 27.71697645], [1516462320000, 0.01623219, 0.01623219, 0.01614301, 0.01623219, 9.1515144], [1516462380000, 0.01624498, 0.01624498, 0.01623219, 0.01623219, 10.1028395], [1516462440000, 0.01614883, 0.01623112, 0.01614883, 0.01614888, 68.73463503], [1516462500000, 0.01614888, 0.01623217, 0.01614888, 0.01623217, 25.24412448], [1516462560000, 0.01623219, 0.01624, 0.01623217, 0.01623217, 25.62895674], [1516462620000, 0.01624, 0.01624, 0.016235, 0.016235, 7.69146646], [1516462680000, 0.01624, 0.01624, 0.016235, 0.016235, 11.44069697], [1516462740000, 0.016235, 0.01624, 0.01619, 0.01624, 47.34351073], [1516462800000, 0.016235, 0.01624, 0.01619, 0.01619, 17.11394128], [1516462860000, 0.016235, 0.016235, 0.0162, 0.016235, 10.31550418], [1516462920000, 0.0162, 0.01625, 0.0162, 0.01625, 139.04559485], [1516462980000, 0.01624, 0.01627996, 0.01620001, 0.0162002, 52.97516633], [1516463040000, 0.01627996, 0.01627996, 0.0162002, 0.01627996, 6.69793187], [1516463100000, 0.0162002, 0.01628, 0.0162002, 0.01620021, 40.38981078], [1516463160000, 0.01620021, 0.01620021, 0.0162, 0.01620021, 82.2856338], [1516463220000, 0.0162002, 0.01620021, 0.0162, 0.01620021, 180.97002559], [1516463280000, 0.01620001, 0.01620021, 0.0162, 0.0162, 14.7675638], [1516463340000, 0.01620021, 0.01628, 0.0162, 0.0162799, 93.49396435], [1516463400000, 0.01620001, 0.01620001, 0.0162, 0.01620001, 82.79460299], [1516463460000, 0.01620001, 0.01620001, 0.0162, 0.01620001, 117.31356386], [1516463520000, 0.01620001, 0.01620001, 0.0162, 0.01620001, 15.71251128], [1516463580000, 0.01620001, 0.01620001, 0.0162, 0.0162, 17.07817867], [1516463640000, 0.01620001, 0.01620001, 0.0162, 0.01620001, 104.41382176], [1516463700000, 0.01620001, 0.01620001, 0.0162, 0.01620001, 8.51205749], [1516463760000, 0.01620001, 0.01620001, 0.0162, 0.01620001, 14.13257974], [1516463820000, 0.01620001, 0.01620001, 0.0162, 0.0162, 7.10427159], [1516463880000, 0.01620001, 0.01620001, 0.0162, 0.01620001, 6.64164136], [1516463940000, 0.0162, 0.01620001, 0.0162, 0.01620001, 51.56579092], [1516464000000, 0.0162, 0.01620001, 0.0162, 0.01620001, 29.04448654], [1516464060000, 0.01620001, 0.01620001, 0.0162, 0.0162, 26.98123677], [1516464120000, 0.0162, 0.01620001, 0.0162, 0.0162, 16.27287357], [1516464180000, 0.01620001, 0.01620001, 0.0162, 0.0162, 61.81988214], [1516464240000, 0.0162, 0.0162, 0.016171, 0.0162, 1.61407182], [1516464300000, 0.0162, 0.01620001, 0.016171, 0.016171, 30.69677973], [1516464360000, 0.01619999, 0.01620001, 0.016171, 0.01620001, 50.47877723], [1516464420000, 0.01620001, 0.01620001, 0.016171, 0.01620001, 19.86995317], [1516464480000, 0.01620001, 0.01620001, 0.016176, 0.01620001, 2.6294817], [1516464540000, 0.01620001, 0.01620001, 0.016176, 0.01620001, 10.43923189], [1516464600000, 0.016176, 0.016176, 0.016171, 0.016176, 32.28174782], [1516464660000, 0.016176, 0.01620001, 0.016176, 0.01620001, 14.69306252], [1516464720000, 0.01620001, 0.01620001, 0.016171, 0.01620001, 28.30824762], [1516464780000, 0.01620056, 0.01620056, 0.01620005, 0.01620056, 1.87714983], [1516464840000, 0.01620056, 0.01627, 0.01620005, 0.01622001, 32.23781396], [1516464900000, 0.01620006, 0.01620007, 0.01620006, 0.01620007, 10.28253476], [1516464960000, 0.01620007, 0.01620007, 0.01620006, 0.01620006, 47.70519667], [1516465020000, 0.01620006, 0.01620006, 0.016166, 0.016166, 22.59594525], [1516465080000, 0.016166, 0.01620001, 0.016166, 0.016167, 2.84961857], [1516465140000, 0.016167, 0.01620007, 0.016166, 0.01620007, 4.13829076], [1516465200000, 0.01620007, 0.01620007, 0.01616701, 0.01620007, 2.63836049], [1516465260000, 0.01616701, 0.01616701, 0.01615951, 0.01615951, 0.61969786], [1516465320000, 0.01615001, 0.01620007, 0.01615001, 0.01616, 9.58141271], [1516465380000, 0.01615001, 0.01620007, 0.01615001, 0.01620007, 27.34311689], [1516465440000, 0.01622001, 0.01625, 0.01622001, 0.01625, 3.75853829], [1516465500000, 0.01625, 0.01625951, 0.01622001, 0.01625951, 69.49389128], [1516465560000, 0.01625951, 0.01625951, 0.01620007, 0.01622001, 9.0225565], [1516465620000, 0.01620007, 0.01622001, 0.01620007, 0.01622001, 5.80923025], [1516465680000, 0.01622001, 0.01622001, 0.01620007, 0.01620007, 4.17628231], [1516465740000, 0.01622001, 0.01622001, 0.01620007, 0.01620007, 23.95052742], [1516465800000, 0.01620007, 0.01622001, 0.01615, 0.01622001, 15.82024583], [1516465860000, 0.01622001, 0.01622001, 0.01615, 0.01622001, 10.31825431], [1516465920000, 0.01615001, 0.01621, 0.01615, 0.01621, 6.77973206], [1516465980000, 0.01621, 0.01622001, 0.01615001, 0.01615002, 11.55462899], [1516466040000, 0.01622001, 0.01622001, 0.01615, 0.01615011, 4.18316351], [1516466100000, 0.01619999, 0.01619999, 0.01615012, 0.01619999, 9.08815692], [1516466160000, 0.01619999, 0.01619999, 0.01615011, 0.01619999, 10.12789078], [1516466220000, 0.01615013, 0.01619999, 0.01615, 0.01615013, 6.21184501], [1516466280000, 0.01615013, 0.01619999, 0.01615011, 0.01619999, 6.32994455], [1516466340000, 0.01615011, 0.01619999, 0.01615011, 0.01619996, 91.90042806], [1516466400000, 0.01619996, 0.01619999, 0.0161995, 0.01619996, 11.45757809], [1516466460000, 0.01619996, 0.01619999, 0.0161995, 0.01619999, 28.97266324], [1516466520000, 0.0161995, 0.0161995, 0.01615, 0.01615, 47.99095368], [1516466580000, 0.01615011, 0.0161995, 0.01615011, 0.01615011, 14.04139441], [1516466640000, 0.0161995, 0.0161995, 0.0161995, 0.0161995, 2.63769478], [1516466700000, 0.0161995, 0.0161995, 0.01615012, 0.01615012, 7.30981827], [1516466760000, 0.01615012, 0.016199, 0.01615011, 0.016159, 33.35462285], [1516466820000, 0.016199, 0.0161995, 0.01616627, 0.016199, 14.94984701], [1516466880000, 0.016199, 0.0161995, 0.016199, 0.01619949, 67.17612955], [1516466940000, 0.01619949, 0.0161995, 0.016154, 0.01619949, 38.27011695], [1516467000000, 0.01616502, 0.01625951, 0.01616502, 0.01625012, 36.58266362], [1516467060000, 0.01625951, 0.01628, 0.01625951, 0.01625951, 32.90106815], [1516467120000, 0.0162789, 0.016284, 0.01625954, 0.01628, 72.33115172], [1516467180000, 0.0162799, 0.016284, 0.0162789, 0.0162789, 13.55779018], [1516467240000, 0.0162789, 0.01630921, 0.0162789, 0.01630921, 50.23365627], [1516467300000, 0.01630921, 0.0163139, 0.0162789, 0.0162789, 15.46973407], [1516467360000, 0.0162789, 0.0163138, 0.0162789, 0.01628, 13.1536004], [1516467420000, 0.016281, 0.01635399, 0.016281, 0.01635267, 31.41607138], [1516467480000, 0.016281, 0.016281, 0.016281, 0.016281, 1.72385717], [1516467540000, 0.01635267, 0.01635267, 0.016279, 0.016279, 104.87948949], [1516467600000, 0.01630364, 0.01635399, 0.016279, 0.016279, 4.64910102], [1516467660000, 0.01634899, 0.01635398, 0.0162789, 0.0162789, 43.59752152], [1516467720000, 0.0162789, 0.0162789, 0.01624303, 0.01627888, 20.52748109], [1516467780000, 0.01624303, 0.0163439, 0.016194, 0.0162, 234.71709352], [1516467840000, 0.01634367, 0.01634367, 0.01627888, 0.01627888, 18.6514652], [1516467900000, 0.016339, 0.016339, 0.01627888, 0.01627888, 5.25594], [1516467960000, 0.016339, 0.01634378, 0.01627889, 0.01627889, 53.02189583], [1516468020000, 0.01629628, 0.01629628, 0.01628, 0.01628001, 6.25737366], [1516468080000, 0.01628001, 0.01628001, 0.01627888, 0.01627888, 15.07780609], [1516468140000, 0.01627888, 0.01628, 0.01627888, 0.01628, 22.94389775], [1516468200000, 0.01627888, 0.01627888, 0.016278, 0.016278, 158.01800241], [1516468260000, 0.016278, 0.01633399, 0.016278, 0.016278, 72.25290289], [1516468320000, 0.016278, 0.016278, 0.01623999, 0.01624, 11.8607189], [1516468380000, 0.01624, 0.01624, 0.01623999, 0.01623999, 5.48387044], [1516468440000, 0.01631822, 0.01632859, 0.01631822, 0.01631822, 4.8306053], [1516468500000, 0.01631823, 0.01635267, 0.01631823, 0.01631823, 24.16242318], [1516468560000, 0.01631823, 0.01631823, 0.01631822, 0.01631822, 36.60178507], [1516468620000, 0.01631822, 0.0163199, 0.016315, 0.0163199, 13.3086654], [1516468680000, 0.0163199, 0.01635, 0.01631822, 0.01631823, 27.57529178], [1516468740000, 0.01634867, 0.01635267, 0.01634867, 0.01635267, 85.14176514], [1516468800000, 0.01635266, 0.01635399, 0.01635266, 0.01635399, 94.68274587], [1516468860000, 0.01635399, 0.01640482, 0.0163539, 0.01640482, 230.18705987], [1516468920000, 0.01640482, 0.01649998, 0.01640482, 0.01643, 129.88324617], [1516468980000, 0.01649965, 0.0165, 0.01644501, 0.01649932, 122.73718179], [1516469040000, 0.01649999, 0.01652567, 0.01649932, 0.01652567, 57.29800048], [1516469100000, 0.016526, 0.01659498, 0.01652567, 0.01652567, 110.24959653], [1516469160000, 0.01652597, 0.01657864, 0.01652567, 0.01653597, 22.16940883], [1516469220000, 0.01654159, 0.01660579, 0.01643001, 0.01643001, 87.02229286], [1516469280000, 0.01649, 0.01653306, 0.01644001, 0.01644002, 19.2786954], [1516469340000, 0.01644002, 0.01652799, 0.01643, 0.01652799, 24.65293531], [1516469400000, 0.01644009, 0.01652297, 0.01644009, 0.01652297, 8.94371977], [1516469460000, 0.01652296, 0.01652296, 0.01643, 0.01643099, 39.12068167], [1516469520000, 0.01652295, 0.01652799, 0.01643099, 0.01643099, 122.93653956], [1516469580000, 0.016518, 0.01652295, 0.016431, 0.01651699, 26.97805493], [1516469640000, 0.016516, 0.016516, 0.01643111, 0.01643129, 3.14133446], [1516469700000, 0.01651599, 0.01651599, 0.01643129, 0.01648499, 21.2574213], [1516469760000, 0.01643115, 0.01648496, 0.016431, 0.016431, 12.12478013], [1516469820000, 0.01643115, 0.016465, 0.01643, 0.01643, 105.70332199], [1516469880000, 0.01643, 0.016431, 0.0163945, 0.01640242, 48.39933884], [1516469940000, 0.01640242, 0.01641496, 0.0163, 0.01638286, 90.96409154], [1516470000000, 0.01638286, 0.01638286, 0.0163, 0.01638285, 40.67246357], [1516470060000, 0.01638281, 0.016387, 0.01632556, 0.016387, 24.88313999], [1516470120000, 0.016387, 0.016387, 0.01632599, 0.01632599, 3.436724], [1516470180000, 0.01638199, 0.016387, 0.01632556, 0.01634, 13.87868712], [1516470240000, 0.01634, 0.016375, 0.01634, 0.01634, 4.38429738], [1516470300000, 0.01634, 0.01637999, 0.01634, 0.01634001, 8.46951792], [1516470360000, 0.01637999, 0.01638, 0.01634001, 0.01637999, 34.88455375], [1516470420000, 0.01634, 0.01638, 0.01634, 0.01635, 79.85456635], [1516470480000, 0.01635, 0.01637999, 0.01632556, 0.01637999, 89.12059362], [1516470540000, 0.01637999, 0.01637999, 0.01629, 0.01632, 58.9482837], [1516470600000, 0.0163, 0.01637999, 0.0163, 0.01637999, 9.06390461], [1516470660000, 0.01632082, 0.01637999, 0.0163, 0.01632082, 25.27743506], [1516470720000, 0.01632082, 0.01648999, 0.01629002, 0.01632081, 305.5954293], [1516470780000, 0.01629039, 0.01647496, 0.01629039, 0.01646, 55.71188816], [1516470840000, 0.01645499, 0.01670094, 0.01634601, 0.01654, 3064.27367668], [1516470900000, 0.01654, 0.0165831, 0.01645495, 0.01651498, 11.70410574], [1516470960000, 0.01651498, 0.01653, 0.01651498, 0.01651499, 14.49120589], [1516471020000, 0.01651498, 0.01651499, 0.01651498, 0.01651499, 31.14924204], [1516471080000, 0.01651499, 0.01654, 0.01651499, 0.01652996, 22.06418044], [1516471140000, 0.01652996, 0.01652996, 0.01652996, 0.01652996, 5.10291068], [1516471200000, 0.01652996, 0.01654, 0.01652996, 0.01653998, 31.3100057], [1516471260000, 0.01653998, 0.01654, 0.01652996, 0.01653137, 10.1993275], [1516471320000, 0.01653133, 0.01653133, 0.01645495, 0.0165, 38.09031103], [1516471380000, 0.0165, 0.01653137, 0.0165, 0.0165, 39.92573492], [1516471440000, 0.0165, 0.01653147, 0.01643601, 0.01643601, 140.97463952], [1516471500000, 0.01643601, 0.0165315, 0.01643601, 0.01643601, 93.10354918], [1516471560000, 0.01643601, 0.01669999, 0.016395, 0.01643601, 406.25494027], [1516471620000, 0.01646999, 0.01656398, 0.016436, 0.01651498, 5.93217393], [1516471680000, 0.0164821, 0.01651498, 0.01641008, 0.01651498, 15.39534923], [1516471740000, 0.0164821, 0.01651482, 0.0164821, 0.0164821, 44.90719714], [1516471800000, 0.0164821, 0.0164821, 0.0164821, 0.0164821, 7.61955309], [1516471860000, 0.0165, 0.0165, 0.01643001, 0.01649497, 86.31401282], [1516471920000, 0.01643001, 0.0165, 0.01640311, 0.016495, 22.46653911], [1516471980000, 0.0164771, 0.016495, 0.01640311, 0.016495, 11.8431035], [1516472040000, 0.01649999, 0.01649999, 0.0164032, 0.0164999, 40.74602613], [1516472100000, 0.0164101, 0.016495, 0.0164032, 0.016495, 7.63224213], [1516472160000, 0.0164032, 0.01649, 0.01640311, 0.01640311, 5.70218757], [1516472220000, 0.0164032, 0.0164032, 0.016365, 0.0164031, 21.76506749], [1516472280000, 0.01640311, 0.01648483, 0.0164, 0.01640311, 66.69350954], [1516472340000, 0.01640311, 0.01648483, 0.016395, 0.01648482, 16.92143081], [1516472400000, 0.0164848, 0.01649999, 0.0164848, 0.01648481, 24.07074899], [1516472460000, 0.01649999, 0.01649999, 0.01648481, 0.01648482, 9.79993503], [1516472520000, 0.01648482, 0.01648482, 0.01648482, 0.01648482, 4.87585918], [1516472580000, 0.01648482, 0.01649993, 0.01648482, 0.01648482, 4.17506469], [1516472640000, 0.01648482, 0.01648483, 0.01648481, 0.01648483, 19.2580066], [1516472700000, 0.01648483, 0.01649997, 0.01648482, 0.016499, 21.84765837], [1516472760000, 0.01648482, 0.01649997, 0.01648482, 0.01648482, 42.70207751], [1516472820000, 0.016499, 0.0165, 0.01648482, 0.01648482, 12.52460781], [1516472880000, 0.01648482, 0.01649898, 0.01648482, 0.01648482, 23.69115027], [1516472940000, 0.01649898, 0.016499, 0.01648483, 0.01648483, 12.86197015], [1516473000000, 0.01649898, 0.0165, 0.016485, 0.016485, 36.48097875], [1516473060000, 0.016488, 0.01654, 0.016485, 0.016488, 54.23612801], [1516473120000, 0.0165165, 0.0165165, 0.016488, 0.01651567, 19.42363675], [1516473180000, 0.0165158, 0.0165158, 0.016488, 0.016488, 4.96335253], [1516473240000, 0.0165, 0.01651567, 0.0165, 0.01651567, 14.79474939], [1516473300000, 0.01651567, 0.01653, 0.01650001, 0.01653, 55.39063182], [1516473360000, 0.01653, 0.01653, 0.01651567, 0.01653, 4.78544484], [1516473420000, 0.01653, 0.0165665, 0.01651587, 0.01653, 26.10994499], [1516473480000, 0.01656313, 0.0165665, 0.01651567, 0.01651567, 15.34445692], [1516473540000, 0.01653, 0.01653, 0.0164848, 0.016485, 53.57720552], [1516473600000, 0.016485, 0.01651567, 0.01646201, 0.01646201, 94.88084684], [1516473660000, 0.01646201, 0.01651567, 0.01645206, 0.01646201, 32.01587285], [1516473720000, 0.01646202, 0.01646202, 0.01646202, 0.01646202, 0.18526187], [1516473780000, 0.01651565, 0.01651565, 0.01646203, 0.01651565, 15.39901169], [1516473840000, 0.01651564, 0.01651565, 0.01648884, 0.01651564, 7.7971919], [1516473900000, 0.01651565, 0.01651566, 0.01646202, 0.01651564, 54.00165941], [1516473960000, 0.01651566, 0.01653, 0.01651564, 0.01653, 49.27676091], [1516474020000, 0.01653, 0.01653567, 0.0164705, 0.016511, 18.76627555], [1516474080000, 0.0164705, 0.0164705, 0.01633001, 0.01633001, 20.85907581], [1516474140000, 0.01633014, 0.016461, 0.01633001, 0.01645099, 37.59991824], [1516474200000, 0.01633002, 0.01645099, 0.01633002, 0.016335, 23.18855413], [1516474260000, 0.01644599, 0.016461, 0.01634, 0.01644599, 24.67742203], [1516474320000, 0.01634502, 0.01644566, 0.01634502, 0.01644566, 24.64683442], [1516474380000, 0.01636735, 0.01644556, 0.01636735, 0.01637736, 18.616265], [1516474440000, 0.01637736, 0.01637736, 0.0163678, 0.01637733, 8.87130998], [1516474500000, 0.01637733, 0.01637736, 0.0163678, 0.0163678, 22.26771923], [1516474560000, 0.0163678, 0.01637736, 0.0163678, 0.01637736, 8.76777164], [1516474620000, 0.01637736, 0.01649097, 0.01637736, 0.01644599, 32.92212314], [1516474680000, 0.01644589, 0.01644589, 0.01637736, 0.01638736, 4.54847148], [1516474740000, 0.01644589, 0.01644598, 0.01644589, 0.01644598, 1.92991666], [1516474800000, 0.01644598, 0.0165, 0.01644598, 0.01644599, 12.53386283], [1516474860000, 0.0165, 0.0165, 0.01642649, 0.016495, 15.80610821], [1516474920000, 0.0165, 0.0165, 0.0164267, 0.0165, 11.09990726], [1516474980000, 0.01649998, 0.01649998, 0.01642671, 0.01649996, 3.7042416], [1516475040000, 0.01649996, 0.01649998, 0.01642672, 0.01649998, 41.4198088], [1516475100000, 0.01649998, 0.0165, 0.01649995, 0.0165, 28.04986604], [1516475160000, 0.01649995, 0.01651564, 0.01649995, 0.01649995, 33.80730497], [1516475220000, 0.01649995, 0.01649997, 0.0164267, 0.01649997, 40.78289144], [1516475280000, 0.01649997, 0.01668465, 0.01649997, 0.01668465, 201.63451395], [1516475340000, 0.01651093, 0.01663599, 0.01651092, 0.01651092, 21.57723763], [1516475400000, 0.01651092, 0.01656999, 0.01651092, 0.01652, 29.24722342], [1516475460000, 0.01651097, 0.01658319, 0.01644, 0.016573, 135.22948211], [1516475520000, 0.01657797, 0.01657797, 0.01644001, 0.01657299, 6.32271903], [1516475580000, 0.0165165, 0.0165165, 0.01647, 0.01651092, 4.3468864], [1516475640000, 0.01651092, 0.01652651, 0.01651, 0.01652651, 8.15795277], [1516475700000, 0.01651, 0.01652651, 0.01647, 0.01651, 16.41597208], [1516475760000, 0.01651, 0.01651, 0.01644001, 0.01644001, 19.59154015], [1516475820000, 0.01647, 0.01647, 0.0164, 0.01640002, 15.80795972], [1516475880000, 0.01647, 0.01647, 0.01640003, 0.01647, 11.44739149], [1516475940000, 0.01646999, 0.01647, 0.01640004, 0.01640004, 14.85743751], [1516476000000, 0.01646999, 0.01646999, 0.01640004, 0.01646999, 24.3164874], [1516476060000, 0.016465, 0.016465, 0.01640005, 0.01646499, 26.81545049], [1516476120000, 0.01646, 0.01646499, 0.01645, 0.01645, 11.24987985], [1516476180000, 0.01644999, 0.01646999, 0.01640006, 0.01646999, 66.60521914], [1516476240000, 0.01646999, 0.01646999, 0.0164, 0.016445, 57.96633539], [1516476300000, 0.016445, 0.016445, 0.0164, 0.016445, 10.80622907], [1516476360000, 0.016445, 0.01650198, 0.01644499, 0.01650196, 50.96535842], [1516476420000, 0.01640011, 0.01649579, 0.01640011, 0.016471, 64.03693861], [1516476480000, 0.01648088, 0.01648088, 0.01638286, 0.01638286, 17.48039246], [1516476540000, 0.01638286, 0.01649917, 0.01638286, 0.01649917, 29.050845], [1516476600000, 0.01638286, 0.01649906, 0.01638286, 0.01640001, 22.79915591], [1516476660000, 0.01649761, 0.01649761, 0.01640003, 0.016493, 15.80586822], [1516476720000, 0.016493, 0.016493, 0.01640015, 0.01640015, 49.93799759], [1516476780000, 0.016405, 0.01648967, 0.016405, 0.01645967, 20.51079854], [1516476840000, 0.016485, 0.01648934, 0.016485, 0.01648934, 11.52608337], [1516476900000, 0.016485, 0.01648967, 0.016485, 0.01648967, 15.60638032], [1516476960000, 0.01648967, 0.0165, 0.016485, 0.01648967, 19.08514356], [1516477020000, 0.0165, 0.01650196, 0.01648967, 0.01650196, 14.99893775], [1516477080000, 0.01650196, 0.01650196, 0.01650113, 0.01650113, 23.40695432], [1516477140000, 0.01650112, 0.01650989, 0.01648967, 0.01650989, 10.87785569], [1516477200000, 0.01650988, 0.0165099, 0.01648967, 0.01648967, 7.9646196], [1516477260000, 0.0165099, 0.0165099, 0.01650989, 0.01650989, 17.43871172], [1516477320000, 0.01650989, 0.0165099, 0.01650989, 0.01650989, 3.26728936], [1516477380000, 0.01650989, 0.01650989, 0.01648967, 0.01648967, 10.67685865], [1516477440000, 0.0165, 0.0165, 0.01648967, 0.0165, 3.16910096], [1516477500000, 0.0165, 0.0165, 0.016485, 0.016485, 36.77914744], [1516477560000, 0.016495, 0.0165, 0.01644379, 0.01644379, 57.40746854], [1516477620000, 0.01644379, 0.016485, 0.01640766, 0.01642989, 9.91207582], [1516477680000, 0.0164438, 0.016485, 0.01642989, 0.01642989, 26.88847682], [1516477740000, 0.0164438, 0.0164438, 0.01641004, 0.01641004, 17.26158878], [1516477800000, 0.01642989, 0.0165, 0.01641501, 0.0165, 40.22166518], [1516477860000, 0.0165, 0.01650989, 0.01642, 0.01642502, 36.40542601], [1516477920000, 0.01642, 0.016509, 0.01642, 0.016509, 6.19688975], [1516477980000, 0.01650989, 0.01650989, 0.016504, 0.016504, 46.90458077], [1516478040000, 0.01650989, 0.01650989, 0.016504, 0.016504, 16.99273135], [1516478100000, 0.01644628, 0.0165099, 0.01644628, 0.0165099, 45.623635], [1516478160000, 0.01650499, 0.01650986, 0.01650499, 0.01650986, 39.89188497], [1516478220000, 0.01644678, 0.01650466, 0.01642501, 0.01648819, 17.95584622], [1516478280000, 0.01648819, 0.01650464, 0.01642001, 0.01642001, 41.07683966], [1516478340000, 0.016425, 0.01642501, 0.01642001, 0.01642501, 2.1637094], [1516478400000, 0.01648967, 0.01648967, 0.01642501, 0.0164883, 33.03716648], [1516478460000, 0.01644501, 0.01644501, 0.01642501, 0.01642501, 60.3183104], [1516478520000, 0.01642501, 0.01642501, 0.01641504, 0.01642469, 16.81374491], [1516478580000, 0.01642469, 0.01642469, 0.01641504, 0.01642469, 20.45073411], [1516478640000, 0.01642468, 0.01642469, 0.01642468, 0.01642469, 23.81202448], [1516478700000, 0.01642468, 0.01642469, 0.01642468, 0.01642468, 27.24302119], [1516478760000, 0.01642468, 0.01644499, 0.01642468, 0.01644499, 42.17469708], [1516478820000, 0.01644499, 0.01649941, 0.01640015, 0.01649941, 102.6418569], [1516478880000, 0.01649931, 0.01649931, 0.01642468, 0.01642468, 4.03190826], [1516478940000, 0.01643468, 0.01650989, 0.01642468, 0.01650989, 29.589165], [1516479000000, 0.01649931, 0.01650985, 0.01642468, 0.01642468, 40.11309111], [1516479060000, 0.01642468, 0.01642468, 0.01642468, 0.01642468, 50.0671246], [1516479120000, 0.01650966, 0.01650966, 0.01642468, 0.01649498, 36.09559516], [1516479180000, 0.01649496, 0.01649496, 0.01640016, 0.01640016, 26.95574065], [1516479240000, 0.01640016, 0.01640147, 0.01640016, 0.01640146, 3.82867113], [1516479300000, 0.01640146, 0.01640146, 0.01640016, 0.01640016, 45.30844646], [1516479360000, 0.01640018, 0.01640018, 0.01640016, 0.01640016, 17.50466244], [1516479420000, 0.01640016, 0.01645, 0.01640016, 0.016405, 60.95728959], [1516479480000, 0.01645, 0.01645, 0.016405, 0.01645, 9.31330786], [1516479540000, 0.01644899, 0.01650981, 0.01641, 0.01645, 87.90571062], [1516479600000, 0.01642, 0.0165099, 0.016415, 0.01650981, 63.80071233], [1516479660000, 0.01650981, 0.01650981, 0.01649707, 0.0165, 11.03118269], [1516479720000, 0.0165, 0.0165, 0.016425, 0.01649707, 10.97704562], [1516479780000, 0.01649707, 0.0165, 0.01643937, 0.01644, 27.30310234], [1516479840000, 0.016445, 0.0165099, 0.016445, 0.01645001, 5.5513254], [1516479900000, 0.0165098, 0.01651, 0.01645501, 0.01651, 29.6541767], [1516479960000, 0.01651498, 0.01651498, 0.01651, 0.01651, 9.32298553], [1516480020000, 0.01651, 0.01651498, 0.01651, 0.01651497, 16.37856977], [1516480080000, 0.01651498, 0.01653843, 0.01651497, 0.01653843, 13.69219506], [1516480140000, 0.01653843, 0.01653843, 0.01651497, 0.016515, 2.77874112], [1516480200000, 0.016515, 0.01652, 0.016515, 0.016515, 10.72378531], [1516480260000, 0.016515, 0.0165418, 0.016515, 0.01651999, 14.12289347], [1516480320000, 0.01651497, 0.01656967, 0.01651487, 0.01656967, 18.99426616], [1516480380000, 0.01656967, 0.01657, 0.01651487, 0.01651487, 14.46208815], [1516480440000, 0.01651487, 0.01656967, 0.01651487, 0.016515, 8.50184084], [1516480500000, 0.01656999, 0.01657, 0.01651487, 0.01657, 21.11020501], [1516480560000, 0.01657, 0.01657, 0.01651, 0.01651, 27.68132906], [1516480620000, 0.01657, 0.01657, 0.01651, 0.01657, 50.14809223], [1516480680000, 0.01651, 0.01651, 0.01651, 0.01651, 4.11256053], [1516480740000, 0.01657, 0.01664, 0.01651, 0.01656999, 66.69751835], [1516480800000, 0.01651, 0.01656966, 0.01651, 0.01652, 25.64647752], [1516480860000, 0.01654, 0.01655, 0.01651, 0.01651001, 70.60610792], [1516480920000, 0.0165, 0.01652, 0.0165, 0.0165, 136.03858612], [1516480980000, 0.01651999, 0.01652, 0.0165, 0.0165, 30.86219173], [1516481040000, 0.01651, 0.01652, 0.0165, 0.0165, 44.01762272], [1516481100000, 0.0165, 0.0165001, 0.0165, 0.0165001, 4.32459272], [1516481160000, 0.0165, 0.01650008, 0.0165, 0.01650008, 16.15974135], [1516481220000, 0.01650009, 0.0165001, 0.01650008, 0.01650008, 13.11504225], [1516481280000, 0.01650008, 0.0165001, 0.01650008, 0.0165001, 4.96181905], [1516481340000, 0.01651932, 0.01651932, 0.0165001, 0.0165001, 3.92979619], [1516481400000, 0.0165001, 0.01652, 0.0165001, 0.01651964, 18.02668446], [1516481460000, 0.01651964, 0.01652, 0.01651964, 0.01651999, 40.605485], [1516481520000, 0.01652, 0.01652001, 0.01651999, 0.01651999, 50.21482296], [1516481580000, 0.01652, 0.01652, 0.01651964, 0.01651964, 21.10295678], [1516481640000, 0.01651964, 0.01651999, 0.01650008, 0.01650008, 13.08464227], [1516481700000, 0.01651998, 0.01651999, 0.0165001, 0.0165001, 7.02221195], [1516481760000, 0.0165001, 0.01651998, 0.0165001, 0.0165001, 28.49869319], [1516481820000, 0.01651999, 0.01651999, 0.01650008, 0.0165001, 11.0945604], [1516481880000, 0.0165001, 0.0165001, 0.01650008, 0.01650008, 17.22503921], [1516481940000, 0.01650009, 0.01650009, 0.01650001, 0.01650001, 60.63138038], [1516482000000, 0.01650008, 0.01650008, 0.0165, 0.01650008, 38.24681627], [1516482060000, 0.0165, 0.01650008, 0.0165, 0.0165, 34.81884728], [1516482120000, 0.0165, 0.01650008, 0.0165, 0.0165, 231.44101581], [1516482180000, 0.01650003, 0.01654999, 0.0165, 0.0165, 238.19566526], [1516482240000, 0.01654994, 0.01656, 0.0165, 0.01654992, 109.89077675], [1516482300000, 0.0165, 0.01654996, 0.0165, 0.0165, 31.1870496], [1516482360000, 0.0165, 0.01654799, 0.0165, 0.0165, 13.39116264], [1516482420000, 0.0165, 0.01651, 0.0165, 0.01651, 92.59267887], [1516482480000, 0.01651, 0.01652, 0.0165, 0.0165, 5.09315387], [1516482540000, 0.0165, 0.0165, 0.0165, 0.0165, 9.665], [1516482600000, 0.01652, 0.01652, 0.0165, 0.01652, 46.30819795], [1516482660000, 0.0165, 0.01651999, 0.0165, 0.0165, 53.04814394], [1516482720000, 0.0165, 0.01652, 0.0165, 0.01652, 34.39883481], [1516482780000, 0.0165, 0.01652, 0.0165, 0.0165, 20.60518341], [1516482840000, 0.01652, 0.01654999, 0.0165, 0.01651999, 98.56573951], [1516482900000, 0.01652, 0.01652, 0.0165, 0.0165, 25.49566905], [1516482960000, 0.01652, 0.01652, 0.0165, 0.01651967, 26.89983132], [1516483020000, 0.01651967, 0.01651967, 0.0165, 0.01650001, 19.6959525], [1516483080000, 0.01650001, 0.01650001, 0.0165, 0.0165, 2.63063993], [1516483140000, 0.01650001, 0.01651967, 0.0165, 0.01650001, 25.91532206], [1516483200000, 0.01650001, 0.01652999, 0.01650001, 0.01650001, 52.99445671], [1516483260000, 0.01650001, 0.01652998, 0.0165, 0.0165, 20.11465189], [1516483320000, 0.0165, 0.01650001, 0.0165, 0.0165, 92.57227859], [1516483380000, 0.0165, 0.01652998, 0.0165, 0.01652998, 20.60131811], [1516483440000, 0.0165, 0.0165165, 0.0165, 0.0165, 31.46782718], [1516483500000, 0.01652993, 0.01652993, 0.0165, 0.0165, 14.07333545], [1516483560000, 0.0165, 0.01652699, 0.0165, 0.01652, 5.56732185], [1516483620000, 0.01650002, 0.01650002, 0.01650002, 0.01650002, 14.11434483], [1516483680000, 0.01650002, 0.01650002, 0.0165, 0.0165, 44.27472693], [1516483740000, 0.01650002, 0.01652696, 0.0165, 0.0165, 51.25569475], [1516483800000, 0.0165, 0.01652997, 0.0165, 0.016522, 101.29268232], [1516483860000, 0.0165, 0.0165, 0.0165, 0.0165, 3.34048716], [1516483920000, 0.0165, 0.01650001, 0.0165, 0.01650001, 81.2184145], [1516483980000, 0.01650001, 0.016515, 0.0165, 0.0165, 26.79497212], [1516484040000, 0.016515, 0.01651998, 0.0165, 0.0165, 36.0956889], [1516484100000, 0.0165, 0.01651998, 0.0165, 0.0165, 4.92836862], [1516484160000, 0.01652, 0.016522, 0.0165, 0.0165, 23.68695319], [1516484220000, 0.0165, 0.01652199, 0.0165, 0.0165, 16.84754607], [1516484280000, 0.0165, 0.01652199, 0.0165, 0.0165, 6.66022453], [1516484340000, 0.0165, 0.016522, 0.0165, 0.016522, 9.24739398], [1516484400000, 0.01650001, 0.016522, 0.0165, 0.0165, 25.73631471], [1516484460000, 0.0165, 0.016522, 0.0165, 0.016522, 14.27556946], [1516484520000, 0.01651, 0.016522, 0.0165, 0.016522, 23.23797015], [1516484580000, 0.0165, 0.01652199, 0.0165, 0.0165, 3.3683755], [1516484640000, 0.0165, 0.0165219, 0.0165, 0.0165, 31.49934529], [1516484700000, 0.0165, 0.01652189, 0.0165, 0.0165, 86.91569364], [1516484760000, 0.01651776, 0.01652188, 0.0165, 0.016517, 81.04156853], [1516484820000, 0.016517, 0.016517, 0.0165, 0.0165, 6.40435279], [1516484880000, 0.0165, 0.0165003, 0.0165, 0.0165003, 3.24792709], [1516484940000, 0.0165, 0.0165003, 0.0165, 0.0165003, 0.60952003], [1516485000000, 0.0165, 0.0165, 0.0165, 0.0165, 14.27764383], [1516485060000, 0.0165003, 0.0165003, 0.0165, 0.0165, 24.63363256], [1516485120000, 0.0165, 0.01652189, 0.0165, 0.0165, 4.84614663], [1516485180000, 0.0165, 0.0165, 0.0165, 0.0165, 29.72651562], [1516485240000, 0.0165003, 0.0165219, 0.0165003, 0.0165003, 17.40592989], [1516485300000, 0.0165003, 0.01652189, 0.0165003, 0.01652189, 3.45886038], [1516485360000, 0.0165003, 0.01652189, 0.01650005, 0.01650005, 81.69511843], [1516485420000, 0.01650005, 0.01652149, 0.0165, 0.0165, 41.03994317], [1516485480000, 0.0165, 0.0165211, 0.0165, 0.0165, 52.68813041], [1516485540000, 0.01652096, 0.01652096, 0.0165, 0.0165, 35.26715604], [1516485600000, 0.01650794, 0.01650794, 0.0165, 0.0165, 44.88474456], [1516485660000, 0.01650794, 0.01650794, 0.0165, 0.0165, 30.96867249], [1516485720000, 0.01650794, 0.01650794, 0.0165, 0.0165, 23.77129773], [1516485780000, 0.0165, 0.01650794, 0.0165, 0.0165075, 28.63714697], [1516485840000, 0.0165, 0.0165075, 0.0165, 0.0165, 23.85791714], [1516485900000, 0.0165, 0.01650748, 0.0165, 0.0165, 11.36965824], [1516485960000, 0.0165, 0.01650749, 0.0165, 0.0165, 197.14912983], [1516486020000, 0.0165, 0.01650794, 0.0165, 0.01650299, 81.74057826], [1516486080000, 0.01650794, 0.01650794, 0.01650299, 0.01650299, 17.78873908], [1516486140000, 0.01650751, 0.01652096, 0.01650299, 0.01650751, 26.24612159], [1516486200000, 0.01650751, 0.01650752, 0.01650299, 0.016505, 29.27514864], [1516486260000, 0.01650751, 0.0167, 0.01650299, 0.016505, 333.45720704], [1516486320000, 0.016503, 0.016505, 0.01650299, 0.016505, 46.72751605], [1516486380000, 0.016503, 0.01663609, 0.016503, 0.01663488, 35.17811139], [1516486440000, 0.01650301, 0.01663299, 0.01650299, 0.01650299, 69.45098564], [1516486500000, 0.01650299, 0.01663179, 0.01647999, 0.01650299, 67.93132519], [1516486560000, 0.016503, 0.016503, 0.01645999, 0.01645999, 27.1527129], [1516486620000, 0.01644999, 0.01656737, 0.01644, 0.01644, 20.85118814], [1516486680000, 0.01644, 0.01646168, 0.01641, 0.01641, 13.47455907], [1516486740000, 0.01641, 0.01650299, 0.016405, 0.01650299, 56.64251634], [1516486800000, 0.01655998, 0.01655998, 0.01640504, 0.01641001, 42.18169805], [1516486860000, 0.016415, 0.01655497, 0.016415, 0.0165, 24.03067946], [1516486920000, 0.0165, 0.01655494, 0.01642501, 0.0165, 7.66365583], [1516486980000, 0.0165, 0.01652999, 0.01641501, 0.01641501, 7.60872642], [1516487040000, 0.01641501, 0.0165, 0.01641501, 0.01641501, 4.91520037], [1516487100000, 0.01647, 0.0165, 0.01642, 0.01642, 6.66493434], [1516487160000, 0.01642, 0.0164575, 0.01642, 0.0164575, 18.17163852], [1516487220000, 0.01642, 0.0164575, 0.01642, 0.0164575, 30.25078854], [1516487280000, 0.0164575, 0.0165, 0.0164575, 0.0164575, 5.41376932], [1516487340000, 0.0165, 0.01653, 0.0164575, 0.01653, 8.12738535], [1516487400000, 0.0164575, 0.01653, 0.0164575, 0.01653, 2.07619724], [1516487460000, 0.01645751, 0.0165299, 0.01645751, 0.0165299, 4.17741581], [1516487520000, 0.01645751, 0.01652999, 0.01645751, 0.01652999, 6.10787828], [1516487580000, 0.01652999, 0.01652999, 0.01648866, 0.01648866, 23.26246123], [1516487640000, 0.016525, 0.01653, 0.01648866, 0.01648866, 30.61616719], [1516487700000, 0.01652996, 0.01652997, 0.01648866, 0.01652997, 18.21282133], [1516487760000, 0.0165, 0.01652995, 0.01649, 0.01649, 2.91582272], [1516487820000, 0.01649, 0.01652995, 0.01649, 0.01652962, 3.2531409], [1516487880000, 0.01652928, 0.01652961, 0.0165, 0.0165, 9.96068316], [1516487940000, 0.0165, 0.01650776, 0.0164899, 0.0164899, 14.19403745], [1516488000000, 0.01649, 0.0165, 0.0164899, 0.01649, 30.14179362], [1516488060000, 0.01649001, 0.01650962, 0.01649, 0.01649, 11.00248669], [1516488120000, 0.0165, 0.0165, 0.01649, 0.01649, 18.12430049], [1516488180000, 0.01649, 0.0165, 0.01649, 0.01649, 10.90068596], [1516488240000, 0.01649, 0.01650993, 0.01649, 0.01649999, 8.44189753], [1516488300000, 0.01649999, 0.01650989, 0.01649, 0.01650988, 9.5625428], [1516488360000, 0.01649999, 0.01650987, 0.01649001, 0.01649999, 22.89910038], [1516488420000, 0.01649001, 0.01649999, 0.01649001, 0.0164998, 53.13676487], [1516488480000, 0.016495, 0.016495, 0.01649001, 0.016495, 36.22350712], [1516488540000, 0.016495, 0.0164952, 0.016495, 0.0164952, 7.45387911], [1516488600000, 0.01649999, 0.01649999, 0.0164952, 0.0164952, 12.83263156], [1516488660000, 0.0164952, 0.01649998, 0.0164952, 0.0164952, 21.81264967], [1516488720000, 0.01649997, 0.01649999, 0.0164952, 0.0164952, 55.48864695], [1516488780000, 0.0164952, 0.01654991, 0.0164952, 0.01651649, 21.77122769], [1516488840000, 0.01654993, 0.01655999, 0.0164952, 0.0164952, 49.41739256], [1516488900000, 0.0164952, 0.01655989, 0.0164952, 0.0164952, 29.52563686], [1516488960000, 0.0164952, 0.016559, 0.0164952, 0.016559, 25.34542401], [1516489020000, 0.016559, 0.01657556, 0.0164952, 0.0164952, 38.09154252], [1516489080000, 0.016513, 0.01654, 0.0164952, 0.0164952, 115.94586362], [1516489140000, 0.0164955, 0.0164955, 0.01649, 0.01649, 70.4297349], [1516489200000, 0.01649, 0.0165124, 0.01649, 0.01649, 37.32678881], [1516489260000, 0.0165124, 0.01656995, 0.01649, 0.01656986, 9.79925652], [1516489320000, 0.01656982, 0.01656982, 0.01649, 0.01649, 237.00554562], [1516489380000, 0.01649, 0.01656976, 0.01649, 0.0165697, 107.76316541], [1516489440000, 0.016499, 0.01656968, 0.01649, 0.0165, 29.26723421], [1516489500000, 0.0165, 0.01656956, 0.01649, 0.01649, 46.61334379], [1516489560000, 0.01650649, 0.01656937, 0.01649, 0.01649002, 81.2856406], [1516489620000, 0.01649038, 0.01656936, 0.01649002, 0.01649002, 51.50298982], [1516489680000, 0.01649002, 0.01656, 0.01649002, 0.01655995, 210.23681016], [1516489740000, 0.01649003, 0.01655, 0.01640403, 0.0164323, 50.33507416], [1516489800000, 0.0164323, 0.0164323, 0.01640016, 0.0164323, 7.60019281], [1516489860000, 0.01640796, 0.0164323, 0.01640796, 0.01640796, 7.24064727], [1516489920000, 0.0164323, 0.01643233, 0.0164323, 0.0164323, 3.71803545], [1516489980000, 0.01640996, 0.01643233, 0.01640503, 0.01640503, 39.97721439], [1516490040000, 0.01640503, 0.0165, 0.01640503, 0.0165, 19.61795411], [1516490100000, 0.0165, 0.0165, 0.016409, 0.016489, 2.09187706], [1516490160000, 0.016489, 0.0165, 0.01641, 0.0165, 27.45482831], [1516490220000, 0.01649, 0.0165, 0.01641, 0.0165, 19.14043156], [1516490280000, 0.0165, 0.0165, 0.01640015, 0.016466, 20.55672058], [1516490340000, 0.016466, 0.01647999, 0.01640015, 0.016466, 76.52474355], [1516490400000, 0.016466, 0.01648, 0.01640016, 0.016475, 19.06355019], [1516490460000, 0.01640016, 0.016475, 0.01640016, 0.01640016, 29.80079735], [1516490520000, 0.01640016, 0.01648, 0.01640015, 0.016475, 47.95787274], [1516490580000, 0.016477, 0.016477, 0.01640016, 0.016477, 4.68261759], [1516490640000, 0.016477, 0.016477, 0.01640016, 0.01647699, 19.62300138], [1516490700000, 0.01647699, 0.01647699, 0.01640016, 0.01645, 2.2869994], [1516490760000, 0.016445, 0.016445, 0.01640016, 0.016445, 8.680016], [1516490820000, 0.016445, 0.016445, 0.01640015, 0.01640015, 50.19474638], [1516490880000, 0.01644499, 0.016445, 0.01640015, 0.01640015, 7.21945252], [1516490940000, 0.016445, 0.016445, 0.01644467, 0.01644467, 3.54718991], [1516491000000, 0.01640015, 0.01644467, 0.01640015, 0.01640015, 8.97600483], [1516491060000, 0.01640015, 0.01640015, 0.01640015, 0.01640015, 57.07615676], [1516491120000, 0.016415, 0.016445, 0.016404, 0.016445, 5.86410749], [1516491180000, 0.01641, 0.016445, 0.01641, 0.016445, 5.51623844], [1516491240000, 0.01640015, 0.016445, 0.01640015, 0.016445, 6.64703943], [1516491300000, 0.016445, 0.016445, 0.01640015, 0.01640015, 17.53088148], [1516491360000, 0.01640015, 0.016445, 0.0164, 0.016445, 33.63317036], [1516491420000, 0.016445, 0.01652096, 0.016445, 0.0165, 127.51679571], [1516491480000, 0.01642257, 0.016521, 0.01642257, 0.0165, 53.13582289], [1516491540000, 0.01642257, 0.01652099, 0.0164, 0.01652091, 41.14835828], [1516491600000, 0.01640003, 0.01640004, 0.0164, 0.01640003, 9.98934693], [1516491660000, 0.01651995, 0.01651995, 0.01640004, 0.01640006, 19.01429081], [1516491720000, 0.01640006, 0.01651948, 0.01640004, 0.01640007, 42.31693655], [1516491780000, 0.01640007, 0.016518, 0.01640007, 0.01651799, 13.35314009], [1516491840000, 0.0165, 0.016518, 0.01641039, 0.016518, 46.30014648], [1516491900000, 0.016518, 0.01655996, 0.0164, 0.01651799, 42.14202548], [1516491960000, 0.01651799, 0.01652, 0.01640101, 0.01652, 22.40753823], [1516492020000, 0.01645975, 0.01655499, 0.016405, 0.016405, 13.81161165], [1516492080000, 0.01646418, 0.01646418, 0.01640501, 0.01642, 15.04789039], [1516492140000, 0.01642, 0.01653039, 0.01640501, 0.01653039, 16.05420226], [1516492200000, 0.01653029, 0.01653029, 0.01653028, 0.01653028, 1.59069317], [1516492260000, 0.01642003, 0.01650211, 0.01642, 0.01649967, 90.88741142], [1516492320000, 0.01649967, 0.01649967, 0.016415, 0.016415, 5.31369246], [1516492380000, 0.016405, 0.01649967, 0.016405, 0.01647, 5.14073861], [1516492440000, 0.01649967, 0.01649967, 0.01649967, 0.01649967, 16.86901961], [1516492500000, 0.01649999, 0.0165, 0.01649967, 0.01649967, 15.62005555], [1516492560000, 0.0165, 0.0165, 0.01649967, 0.0165, 17.71507921], [1516492620000, 0.0165, 0.01652997, 0.01649967, 0.01649967, 22.47328819], [1516492680000, 0.01649967, 0.01652996, 0.01647, 0.01649967, 4.15624576], [1516492740000, 0.01649967, 0.01649967, 0.01645017, 0.01647, 2.97456205], [1516492800000, 0.01645017, 0.01647, 0.016425, 0.01645017, 40.22039657], [1516492860000, 0.01645017, 0.01652998, 0.01645017, 0.01647, 61.81678963], [1516492920000, 0.01647, 0.01647, 0.01647, 0.01647, 5.48676717], [1516492980000, 0.01647, 0.0165, 0.01647, 0.0165, 5.85962238], [1516493040000, 0.0165, 0.0165, 0.0165, 0.0165, 1.50315355], [1516493100000, 0.01647001, 0.0165, 0.01647001, 0.01648648, 12.81768478], [1516493160000, 0.01648648, 0.01653031, 0.01643804, 0.01643809, 77.82155871], [1516493220000, 0.016465, 0.016465, 0.01643812, 0.01643903, 10.21973655], [1516493280000, 0.01653031, 0.01654373, 0.01643903, 0.01643905, 9.70467901], [1516493340000, 0.01643905, 0.01654365, 0.01643905, 0.01654365, 16.02818327], [1516493400000, 0.01643918, 0.01654373, 0.01643904, 0.01654373, 19.28450014], [1516493460000, 0.0165, 0.01656, 0.016444, 0.016444, 37.26791475], [1516493520000, 0.016444, 0.016444, 0.016425, 0.016425, 18.86456536], [1516493580000, 0.01656, 0.0165693, 0.01642501, 0.01643003, 13.12888326], [1516493640000, 0.0165, 0.01656, 0.016405, 0.0165, 9.80581584], [1516493700000, 0.01642801, 0.01655, 0.01642801, 0.01655, 9.52157914], [1516493760000, 0.01655, 0.01655, 0.016428, 0.016433, 15.77112926], [1516493820000, 0.01643301, 0.01654499, 0.016428, 0.01654499, 12.6537421], [1516493880000, 0.01643301, 0.016549, 0.01643301, 0.016469, 26.20642144], [1516493940000, 0.01646901, 0.016549, 0.01646901, 0.01646903, 1.07962304], [1516494000000, 0.01646904, 0.016549, 0.01646904, 0.016545, 15.10061468], [1516494060000, 0.016545, 0.016549, 0.016545, 0.016549, 59.45041828], [1516494120000, 0.016545, 0.016545, 0.01650002, 0.016543, 4.77943151], [1516494180000, 0.01654299, 0.016543, 0.01650003, 0.016543, 13.0001371], [1516494240000, 0.01650003, 0.016545, 0.01650003, 0.01650003, 48.72297194], [1516494300000, 0.016545, 0.01656965, 0.01650003, 0.01650003, 123.74042076], [1516494360000, 0.01650003, 0.01654649, 0.01650003, 0.01654649, 19.2953025], [1516494420000, 0.01650201, 0.0165465, 0.016502, 0.016502, 51.56854851], [1516494480000, 0.016502, 0.01653, 0.01650101, 0.01650101, 91.85164665], [1516494540000, 0.01650101, 0.01656965, 0.01650002, 0.01654649, 187.54924656], [1516494600000, 0.01656965, 0.01656965, 0.016469, 0.01654649, 17.78703053], [1516494660000, 0.01654649, 0.01654649, 0.01641873, 0.01642, 12.60107345], [1516494720000, 0.01647, 0.01647, 0.01647, 0.01647, 3.06671697], [1516494780000, 0.01647, 0.01648, 0.01647, 0.01648, 4.31320527], [1516494840000, 0.01648, 0.01648, 0.01644616, 0.01644622, 3.51473154], [1516494900000, 0.01647, 0.0165, 0.01647, 0.0165, 7.05293308], [1516494960000, 0.016529, 0.01656827, 0.0165, 0.0165, 40.59805148], [1516495020000, 0.01652899, 0.01652899, 0.01649, 0.01649, 8.84796005], [1516495080000, 0.0165, 0.0165145, 0.0165, 0.0165, 2.52125311], [1516495140000, 0.0165, 0.016529, 0.01641874, 0.01641877, 32.08967399], [1516495200000, 0.01641879, 0.016529, 0.01641875, 0.01642402, 12.56464608], [1516495260000, 0.01644044, 0.01644044, 0.01641873, 0.01641873, 73.74052184], [1516495320000, 0.01641873, 0.01643517, 0.01641873, 0.01641873, 14.68868925], [1516495380000, 0.01641873, 0.01651997, 0.01641873, 0.01651997, 21.91098136], [1516495440000, 0.01651997, 0.01651999, 0.01642901, 0.01642901, 40.62187575], [1516495500000, 0.01651997, 0.01651997, 0.01647, 0.01647, 8.67290894], [1516495560000, 0.01647, 0.01651998, 0.01642901, 0.01651998, 45.07111593], [1516495620000, 0.01651997, 0.01651998, 0.01651997, 0.01651997, 33.72395003], [1516495680000, 0.01651997, 0.01651998, 0.01651997, 0.01651998, 48.54775286], [1516495740000, 0.01651997, 0.01651998, 0.01651997, 0.01651998, 33.34885207], [1516495800000, 0.01651997, 0.01651998, 0.01651997, 0.01651997, 57.51607019], [1516495860000, 0.01651997, 0.01651998, 0.01651997, 0.01651997, 30.83340932], [1516495920000, 0.01651998, 0.01651998, 0.01651997, 0.01651997, 29.21911874], [1516495980000, 0.01651997, 0.01651998, 0.01651997, 0.01651997, 30.08821442], [1516496040000, 0.01651997, 0.01651998, 0.01651997, 0.01651997, 148.89146955], [1516496100000, 0.01651997, 0.01651998, 0.01651997, 0.01651997, 26.79905723], [1516496160000, 0.01651997, 0.01651997, 0.01641873, 0.01641874, 173.42616968], [1516496220000, 0.01641873, 0.01651898, 0.01641873, 0.01651898, 25.67094366], [1516496280000, 0.01641874, 0.016505, 0.01641873, 0.01650499, 104.74609789], [1516496340000, 0.01650499, 0.01650499, 0.01641873, 0.01641873, 136.25292506], [1516496400000, 0.01641873, 0.01649999, 0.01641873, 0.01649999, 30.65659485], [1516496460000, 0.01645, 0.01645, 0.01640009, 0.016402, 61.20560314], [1516496520000, 0.0164, 0.016402, 0.01639999, 0.01639999, 22.3728557], [1516496580000, 0.0164, 0.01642999, 0.01639, 0.01642999, 67.06841727], [1516496640000, 0.01642999, 0.01642999, 0.016402, 0.016402, 10.95427703], [1516496700000, 0.016402, 0.01648551, 0.016402, 0.016402, 53.67393237], [1516496760000, 0.016402, 0.01649999, 0.016402, 0.016402, 35.14514035], [1516496820000, 0.01640198, 0.01649998, 0.01639, 0.01639, 10.61110898], [1516496880000, 0.01649998, 0.01649999, 0.01649996, 0.01649999, 0.59947517], [1516496940000, 0.01648997, 0.01649998, 0.01639, 0.01639005, 10.76004677], [1516497000000, 0.01639006, 0.01649996, 0.01639002, 0.01639002, 17.48008369], [1516497060000, 0.01639002, 0.01649995, 0.01639002, 0.01649995, 19.6737019], [1516497120000, 0.01649995, 0.01649996, 0.01646695, 0.01646695, 14.51411934], [1516497180000, 0.01639, 0.01639601, 0.01638601, 0.01639601, 16.2112773], [1516497240000, 0.01646695, 0.01649995, 0.01639602, 0.01639602, 28.35072061], [1516497300000, 0.01639602, 0.01649995, 0.01639601, 0.01639601, 20.53574345], [1516497360000, 0.01639602, 0.01649944, 0.01639602, 0.01649, 8.75028071], [1516497420000, 0.01649, 0.01649, 0.01639602, 0.01639602, 3.85095975], [1516497480000, 0.01639601, 0.01639602, 0.01639601, 0.01639601, 12.09474378], [1516497540000, 0.01639602, 0.01648899, 0.01638286, 0.01648899, 60.58290488], [1516497600000, 0.016489, 0.016489, 0.01637, 0.01638286, 18.80255028], [1516497660000, 0.01637, 0.01638286, 0.01637, 0.01638286, 19.60345009], [1516497720000, 0.01647996, 0.01647996, 0.01634044, 0.01634044, 20.79794231], [1516497780000, 0.01634045, 0.0164699, 0.01634, 0.01634001, 20.98385631], [1516497840000, 0.01638101, 0.01638101, 0.01634, 0.016345, 11.06935427], [1516497900000, 0.01633997, 0.01645998, 0.01633997, 0.016458, 6.24583804], [1516497960000, 0.016345, 0.016458, 0.01632999, 0.01633996, 22.15453915], [1516498020000, 0.016458, 0.016458, 0.01633501, 0.01633501, 3.57903493], [1516498080000, 0.01634, 0.016458, 0.016337, 0.01634, 3.3773732], [1516498140000, 0.01634, 0.01645, 0.01634, 0.01645, 2.47893513], [1516498200000, 0.01644999, 0.01644999, 0.0164, 0.0164, 1.95842562], [1516498260000, 0.01645, 0.01645, 0.01634701, 0.01645, 32.68058999], [1516498320000, 0.01645, 0.01645, 0.01635801, 0.01635801, 54.81102072], [1516498380000, 0.01635801, 0.01639997, 0.01635801, 0.01639997, 90.56231589], [1516498440000, 0.01639997, 0.01639997, 0.01639997, 0.01639997, 15.3982562], [1516498500000, 0.01639996, 0.01644967, 0.01639996, 0.01644967, 5.24193689], [1516498560000, 0.01644967, 0.01645, 0.01641637, 0.01641637, 0.6703204], [1516498620000, 0.01641637, 0.01644965, 0.01641637, 0.01644965, 13.28743256], [1516498680000, 0.01641647, 0.01644964, 0.01641637, 0.01644964, 18.05039315], [1516498740000, 0.01641637, 0.01644933, 0.01634707, 0.01634707, 14.08301319], [1516498800000, 0.01641637, 0.01641637, 0.01641637, 0.01641637, 24.09984141], [1516498860000, 0.01641637, 0.01641637, 0.01635204, 0.01636201, 26.12625238], [1516498920000, 0.016415, 0.01641637, 0.01636207, 0.01636208, 32.6765429], [1516498980000, 0.01636209, 0.01641637, 0.01636208, 0.01641637, 23.06738189], [1516499040000, 0.01636216, 0.01641637, 0.01636216, 0.01641637, 4.22809374], [1516499100000, 0.01641637, 0.01641637, 0.01636208, 0.01637207, 10.96319654], [1516499160000, 0.01641637, 0.01641637, 0.01636209, 0.01637883, 18.6124427], [1516499220000, 0.01637883, 0.01641637, 0.01637883, 0.01641637, 19.15775669], [1516499280000, 0.01639562, 0.01641637, 0.01639562, 0.01641637, 2.98037841], [1516499340000, 0.01641637, 0.01641637, 0.01639561, 0.01639561, 26.76038752], [1516499400000, 0.01639561, 0.01641637, 0.01639561, 0.01639561, 9.69197146], [1516499460000, 0.01639562, 0.01644933, 0.01636208, 0.01644933, 113.56015024], [1516499520000, 0.01644933, 0.01644933, 0.01641637, 0.01641637, 12.05573366], [1516499580000, 0.01641637, 0.01641637, 0.01641636, 0.01641637, 9.25058605], [1516499640000, 0.01641636, 0.01641637, 0.01641636, 0.01641637, 13.67467995], [1516499700000, 0.01641637, 0.01641637, 0.01641636, 0.01641636, 11.03741913], [1516499760000, 0.01641637, 0.01641637, 0.01641636, 0.01641636, 8.56670707], [1516499820000, 0.01641637, 0.01644933, 0.01641637, 0.01644933, 0.60535715], [1516499880000, 0.01644933, 0.01644933, 0.01641636, 0.01641636, 46.13538201], [1516499940000, 0.01644932, 0.01644932, 0.01641636, 0.01641638, 2.00878392], [1516500000000, 0.01641638, 0.01644933, 0.01641638, 0.0164493, 10.16830698], [1516500060000, 0.01644933, 0.01644933, 0.01644931, 0.01644931, 6.48636679], [1516500120000, 0.01644933, 0.01644933, 0.01644932, 0.01644932, 11.77725315], [1516500180000, 0.01644932, 0.01644933, 0.01641636, 0.01641636, 29.4761039], [1516500240000, 0.01644925, 0.01644933, 0.01641636, 0.01641636, 32.85086467], [1516500300000, 0.01641636, 0.01644933, 0.01641636, 0.01641636, 5.48819563], [1516500360000, 0.01641636, 0.016449, 0.01641636, 0.01644899, 2.56063278], [1516500420000, 0.0164486, 0.0164486, 0.0164486, 0.0164486, 0.13429852], [1516500480000, 0.01641883, 0.016449, 0.01641883, 0.016449, 54.68100927], [1516500540000, 0.016449, 0.01644933, 0.016449, 0.01644933, 55.02619824], [1516500600000, 0.016449, 0.01644933, 0.016449, 0.01644933, 23.6379679], [1516500660000, 0.01644929, 0.01644933, 0.016449, 0.016449, 54.6696172], [1516500720000, 0.01644933, 0.01644933, 0.01641883, 0.01644933, 21.50712038], [1516500780000, 0.01644933, 0.01644933, 0.01641636, 0.01644933, 17.68547688], [1516500840000, 0.01644933, 0.01644933, 0.01641636, 0.01641636, 4.90736776], [1516500900000, 0.01641637, 0.01643933, 0.01641637, 0.01643933, 34.57582286], [1516500960000, 0.01643933, 0.01644933, 0.01641636, 0.01644933, 8.88862982], [1516501020000, 0.01643933, 0.016449, 0.01641636, 0.01643933, 64.12517163], [1516501080000, 0.01643933, 0.01644933, 0.01641636, 0.01641636, 62.69146137], [1516501140000, 0.01644931, 0.01644931, 0.01638201, 0.01644926, 68.32969009], [1516501200000, 0.01644926, 0.01644926, 0.01638701, 0.01638801, 27.33804276], [1516501260000, 0.01644926, 0.01644926, 0.01644921, 0.01644921, 4.99224415], [1516501320000, 0.01644921, 0.01644921, 0.01638801, 0.0164492, 25.72903933], [1516501380000, 0.0164492, 0.0164492, 0.01638826, 0.01639301, 5.00757687], [1516501440000, 0.01644917, 0.01644917, 0.016355, 0.01644917, 32.1690867], [1516501500000, 0.01644917, 0.0164492, 0.01638828, 0.0164492, 21.73667865], [1516501560000, 0.0164, 0.01644918, 0.0164, 0.01644918, 9.0224045], [1516501620000, 0.01641, 0.01644918, 0.01641, 0.01644918, 8.1056464], [1516501680000, 0.0164, 0.01641, 0.0164, 0.01640002, 12.66276638], [1516501740000, 0.01644918, 0.01644918, 0.01640002, 0.01644918, 6.95639303], [1516501800000, 0.01640001, 0.01644918, 0.01637156, 0.01644918, 9.45132271], [1516501860000, 0.01637156, 0.01644918, 0.01637154, 0.01637154, 9.25750085], [1516501920000, 0.016449, 0.016449, 0.01635162, 0.01635169, 176.05679922], [1516501980000, 0.016449, 0.016449, 0.01639, 0.01644895, 56.17581202], [1516502040000, 0.016439, 0.016439, 0.01635702, 0.01639002, 7.94804238], [1516502100000, 0.01639002, 0.0164485, 0.01635702, 0.01639002, 7.79365665], [1516502160000, 0.01639002, 0.01642, 0.01639002, 0.01642, 38.23111188], [1516502220000, 0.01642, 0.01642, 0.01639002, 0.0164199, 15.96019883], [1516502280000, 0.01639002, 0.0164199, 0.01634702, 0.01634702, 40.05340374], [1516502340000, 0.0163515, 0.01637898, 0.01633546, 0.01633546, 23.02250524], [1516502400000, 0.016335, 0.01639002, 0.016335, 0.01635302, 28.93144298], [1516502460000, 0.01635302, 0.01637898, 0.01632999, 0.01632999, 8.95098967], [1516502520000, 0.01632999, 0.01637898, 0.01632999, 0.01635, 1.23559237], [1516502580000, 0.01637897, 0.01637898, 0.01632999, 0.01632999, 7.27374988], [1516502640000, 0.01632999, 0.01632999, 0.0163254, 0.0163254, 16.43779344], [1516502700000, 0.01632599, 0.016326, 0.0163254, 0.01632599, 8.21059819], [1516502760000, 0.01632599, 0.01632599, 0.01632599, 0.01632599, 0.06123702], [1516502820000, 0.0163254, 0.0163254, 0.01632501, 0.01632501, 17.16256299], [1516502880000, 0.01632501, 0.01632501, 0.0163, 0.01632, 7.37206988], [1516502940000, 0.01632, 0.01632501, 0.016215, 0.016215, 57.28910243], [1516503000000, 0.01632501, 0.01632501, 0.01632499, 0.01632499, 0.3837567], [1516503060000, 0.01632496, 0.01632496, 0.01625, 0.01625, 6.84950282], [1516503120000, 0.01625005, 0.01632599, 0.01625, 0.0163, 38.63915713], [1516503180000, 0.01632501, 0.01632599, 0.016325, 0.01632599, 11.55702764], [1516503240000, 0.01632599, 0.01632599, 0.01632599, 0.01632599, 0.76462562], [1516503300000, 0.01631, 0.01632599, 0.0163, 0.01632599, 20.4523701], [1516503360000, 0.01632598, 0.01632599, 0.01632598, 0.01632599, 1.43757086], [1516503420000, 0.016326, 0.01635, 0.01632599, 0.01632599, 13.93688508], [1516503480000, 0.01632599, 0.01632599, 0.01632598, 0.01632598, 7.53140224], [1516503540000, 0.01632598, 0.01632599, 0.01632598, 0.01632598, 7.81812994], [1516503600000, 0.01632598, 0.01632599, 0.01625, 0.01632598, 21.05846618], [1516503660000, 0.01632598, 0.01632599, 0.01622501, 0.01632566, 58.37870572], [1516503720000, 0.01622921, 0.01632566, 0.01622501, 0.01632566, 3.30469784], [1516503780000, 0.01626036, 0.016316, 0.01622, 0.01622, 49.29587545], [1516503840000, 0.01622, 0.01627759, 0.01622, 0.01622, 13.67060953], [1516503900000, 0.01627777, 0.0163, 0.01622, 0.01627777, 13.73631324], [1516503960000, 0.01627777, 0.0163, 0.01622, 0.0163, 5.48207634], [1516504020000, 0.0163, 0.0163, 0.01629966, 0.01629966, 2.66689995], [1516504080000, 0.01622, 0.0163, 0.01622, 0.01622, 108.12267961], [1516504140000, 0.01622, 0.01629967, 0.01622, 0.01629967, 2.85653607], [1516504200000, 0.01622005, 0.0163, 0.01622, 0.01622, 15.25262255], [1516504260000, 0.01622, 0.01623302, 0.01621001, 0.016211, 1.20153172], [1516504320000, 0.01622, 0.0163, 0.01621001, 0.01622, 24.61949237], [1516504380000, 0.01628, 0.0163, 0.01622, 0.01622, 14.40663851], [1516504440000, 0.01622, 0.01622, 0.016215, 0.01622, 13.1735906], [1516504500000, 0.01621499, 0.01622, 0.01621176, 0.01621499, 22.65496652], [1516504560000, 0.01621499, 0.01632566, 0.01621176, 0.01632566, 42.13135576], [1516504620000, 0.01632566, 0.01632599, 0.016215, 0.016215, 42.46383934], [1516504680000, 0.01632599, 0.01632599, 0.01622001, 0.01632599, 10.87538734], [1516504740000, 0.01622, 0.01632393, 0.01622, 0.01622, 8.31754546], [1516504800000, 0.01622, 0.01622001, 0.01622, 0.01622001, 4.68421052], [1516504860000, 0.016316, 0.01631898, 0.01631399, 0.01631399, 0.83664764], [1516504920000, 0.01623623, 0.01630895, 0.016223, 0.016223, 9.12730763], [1516504980000, 0.01622741, 0.01622741, 0.01622741, 0.01622741, 19.79609278], [1516505040000, 0.01622742, 0.01630794, 0.01622742, 0.01630793, 21.06462437], [1516505100000, 0.01623, 0.01630794, 0.01623, 0.01630794, 26.4434512], [1516505160000, 0.01623, 0.01630794, 0.01623, 0.01625834, 2.91155981], [1516505220000, 0.01623, 0.0163075, 0.01621, 0.01621, 114.05591813], [1516505280000, 0.01623, 0.01623, 0.01621, 0.01621, 11.26185493], [1516505340000, 0.01630649, 0.0163075, 0.01630649, 0.0163075, 1.25951792], [1516505400000, 0.01630649, 0.0163075, 0.016208, 0.0162082, 15.2372273], [1516505460000, 0.0162082, 0.01630197, 0.01620505, 0.01630197, 6.24794069], [1516505520000, 0.01620505, 0.01630195, 0.016201, 0.016201, 14.08728636], [1516505580000, 0.016201, 0.016203, 0.016201, 0.016203, 4.3757927], [1516505640000, 0.016205, 0.01630192, 0.016205, 0.016208, 1.43150974], [1516505700000, 0.01630194, 0.01630194, 0.016208, 0.016208, 16.90469858], [1516505760000, 0.016208, 0.01630161, 0.016208, 0.016208, 12.37666216], [1516505820000, 0.01620801, 0.01629966, 0.01620801, 0.01620801, 3.32169975], [1516505880000, 0.01620801, 0.016299, 0.01620801, 0.0162985, 22.04040831], [1516505940000, 0.01620801, 0.01629849, 0.0162, 0.01620802, 44.96076648], [1516506000000, 0.01620802, 0.01629849, 0.0162, 0.0162, 10.56266138], [1516506060000, 0.01621, 0.0162985, 0.01621, 0.01621, 94.29462176], [1516506120000, 0.01623, 0.01623, 0.01623, 0.01623, 0.7146404], [1516506180000, 0.01623, 0.01623, 0.01623, 0.01623, 68.55563253], [1516506240000, 0.01623, 0.01623, 0.01621003, 0.01623, 7.32377922], [1516506300000, 0.01621004, 0.01623, 0.01621004, 0.01623, 79.55897552], [1516506360000, 0.01622, 0.01632599, 0.016216, 0.01630194, 26.03555487], [1516506420000, 0.016215, 0.01622, 0.016215, 0.01622, 1.46199436], [1516506480000, 0.016325, 0.01632529, 0.01622, 0.01622, 4.88752631], [1516506540000, 0.0163252, 0.0163252, 0.01622, 0.01632084, 42.53963381], [1516506600000, 0.01622, 0.01632084, 0.01622, 0.01632084, 1.71118366], [1516506660000, 0.016316, 0.01632083, 0.016225, 0.016225, 4.30805942], [1516506720000, 0.016225, 0.01632079, 0.016225, 0.0162255, 2.98683125], [1516506780000, 0.016256, 0.01632075, 0.0162255, 0.0162255, 16.34748755], [1516506840000, 0.016256, 0.016256, 0.0162255, 0.0162255, 3.0490005], [1516506900000, 0.01622551, 0.01622551, 0.01622, 0.01622, 17.5320035], [1516506960000, 0.0162255, 0.01623, 0.0162255, 0.0162255, 31.86872104], [1516507020000, 0.01623, 0.016256, 0.0162255, 0.016256, 21.89660754], [1516507080000, 0.016256, 0.0163207, 0.016256, 0.01628, 25.61581058], [1516507140000, 0.01626, 0.01628, 0.016256, 0.01628, 6.37081574], [1516507200000, 0.01626101, 0.0163207, 0.016256, 0.016261, 45.08108586], [1516507260000, 0.016261, 0.01632075, 0.01623, 0.016256, 44.07197458], [1516507320000, 0.016256, 0.01632, 0.016256, 0.01632, 1.12978766], [1516507380000, 0.016225, 0.01630995, 0.016225, 0.01630995, 17.32724407], [1516507440000, 0.016225, 0.0163094, 0.016225, 0.0163094, 31.94619039], [1516507500000, 0.01630939, 0.01632, 0.016305, 0.0163095, 112.20197864], [1516507560000, 0.01622502, 0.01622502, 0.016215, 0.016215, 56.2460419], [1516507620000, 0.01622502, 0.0163095, 0.01621002, 0.01622502, 63.19206464], [1516507680000, 0.01621002, 0.01622502, 0.01621002, 0.01622502, 17.52637173], [1516507740000, 0.01622502, 0.01622502, 0.01621002, 0.01621002, 2.1889781], [1516507800000, 0.01629, 0.01629, 0.01621002, 0.01621002, 23.98997667], [1516507860000, 0.01621002, 0.01621002, 0.01619481, 0.01619481, 68.65903984], [1516507920000, 0.01624968, 0.01624968, 0.01617148, 0.01617148, 92.92535064], [1516507980000, 0.01617148, 0.01624, 0.0161497, 0.0162, 113.90967719], [1516508040000, 0.01615935, 0.01629599, 0.01614884, 0.01628597, 42.79740248], [1516508100000, 0.01628597, 0.01628597, 0.01615406, 0.016169, 62.1948173], [1516508160000, 0.016169, 0.01630099, 0.01615137, 0.01615137, 27.97963898], [1516508220000, 0.01621451, 0.01631097, 0.01615141, 0.01631097, 47.43068945], [1516508280000, 0.01617005, 0.016295, 0.01617005, 0.016295, 5.8221719], [1516508340000, 0.01630065, 0.01630065, 0.01618001, 0.01618501, 31.88265432], [1516508400000, 0.01629467, 0.016295, 0.016185, 0.01629, 76.06126758], [1516508460000, 0.01629, 0.01629599, 0.01619, 0.01619, 130.64366286], [1516508520000, 0.01619, 0.01629599, 0.01619, 0.01619, 7.96185881], [1516508580000, 0.01629596, 0.01629597, 0.01619, 0.01619, 56.30979925], [1516508640000, 0.01629595, 0.01629595, 0.01619, 0.01619001, 3.42002418], [1516508700000, 0.01619, 0.01629593, 0.01618501, 0.01626535, 18.29626406], [1516508760000, 0.01629586, 0.01634999, 0.01619502, 0.01619502, 244.37361445], [1516508820000, 0.016205, 0.01620502, 0.01619502, 0.01620502, 21.2274972], [1516508880000, 0.01626534, 0.01628752, 0.01621003, 0.01626326, 2.08548947], [1516508940000, 0.01621001, 0.01626326, 0.01621001, 0.01626326, 2.38434105], [1516509000000, 0.01621012, 0.01621012, 0.01620189, 0.016207, 86.08298211], [1516509060000, 0.016207, 0.016207, 0.016202, 0.01620502, 18.23127994], [1516509120000, 0.016207, 0.01634914, 0.016207, 0.01628398, 4.12478275], [1516509180000, 0.01628398, 0.01634875, 0.016207, 0.016207, 23.4612057], [1516509240000, 0.01628398, 0.01634778, 0.01620801, 0.01620801, 1.61380399], [1516509300000, 0.016207, 0.01633999, 0.01620503, 0.01633996, 3.41840542], [1516509360000, 0.01620801, 0.01620812, 0.01620801, 0.01620811, 5.28097258], [1516509420000, 0.01632, 0.01632, 0.01631992, 0.01632, 0.72036272], [1516509480000, 0.01621303, 0.01632, 0.01621303, 0.01632, 101.50546609], [1516509540000, 0.01632, 0.01632, 0.01621303, 0.01632, 55.24164845], [1516509600000, 0.01631999, 0.01631999, 0.01621303, 0.01621303, 15.77261552], [1516509660000, 0.01621303, 0.016218, 0.01620811, 0.016218, 9.28061312], [1516509720000, 0.016218, 0.01631, 0.01620811, 0.01621303, 3.5444711], [1516509780000, 0.01628109, 0.01630499, 0.01621303, 0.01630499, 7.3663627], [1516509840000, 0.01629997, 0.01629997, 0.01621303, 0.01629495, 17.7253489], [1516509900000, 0.01629495, 0.01629496, 0.01621503, 0.01621503, 13.11411987], [1516509960000, 0.01621503, 0.01621503, 0.01620811, 0.01620811, 35.53230997], [1516510020000, 0.01620811, 0.01621502, 0.01620811, 0.01621502, 18.52251641], [1516510080000, 0.01621502, 0.01629485, 0.01618, 0.01618, 52.01851713], [1516510140000, 0.01616638, 0.01628398, 0.01616638, 0.016171, 47.78030136], [1516510200000, 0.0161664, 0.01627699, 0.01616637, 0.01616637, 12.43044542], [1516510260000, 0.01616637, 0.01630996, 0.01616637, 0.0163, 122.51700418], [1516510320000, 0.01616164, 0.01629999, 0.01616164, 0.016295, 55.28562063], [1516510380000, 0.016295, 0.01633499, 0.01629499, 0.01633499, 28.45461459], [1516510440000, 0.016335, 0.016335, 0.01622808, 0.016335, 56.87731605], [1516510500000, 0.01629998, 0.016335, 0.01623305, 0.01633498, 10.64392366], [1516510620000, 0.0162282, 0.01633, 0.0162282, 0.01623302, 53.53559506], [1516510680000, 0.01623302, 0.01633488, 0.01623301, 0.01633488, 10.78882574], [1516510740000, 0.01623301, 0.01633486, 0.01623301, 0.01623301, 17.7982535], [1516510800000, 0.01632798, 0.016335, 0.01623301, 0.0163, 88.55285043], [1516510860000, 0.0163, 0.016335, 0.0163, 0.01630001, 22.18795922], [1516510920000, 0.016335, 0.01634761, 0.01623303, 0.0163, 38.91755913], [1516510980000, 0.0163, 0.01634761, 0.0162331, 0.016251, 78.26148625], [1516511040000, 0.016251, 0.01634761, 0.01623801, 0.0163476, 25.68038551], [1516511100000, 0.0163476, 0.01635, 0.0163476, 0.01635, 31.86429017], [1516511160000, 0.01635, 0.01637449, 0.01635, 0.01635, 12.40679434], [1516511220000, 0.01635, 0.0163745, 0.01635, 0.0163744, 41.92584472], [1516511280000, 0.0163744, 0.01639002, 0.0163476, 0.0163476, 35.64908506], [1516511340000, 0.01634761, 0.01636899, 0.01614882, 0.016359, 403.88870939], [1516511400000, 0.01635899, 0.01636898, 0.01619905, 0.016327, 20.88421981], [1516511460000, 0.01628714, 0.0163, 0.01619375, 0.01619376, 63.56255539], [1516511520000, 0.01629992, 0.0163, 0.01618361, 0.0163, 153.43480678], [1516511580000, 0.01629184, 0.01632699, 0.01618362, 0.01618363, 190.70148402], [1516511640000, 0.01618363, 0.01629698, 0.01618361, 0.01618361, 35.022561], [1516511700000, 0.01628999, 0.016295, 0.01618361, 0.01618361, 89.52884306], [1516511760000, 0.01619, 0.016285, 0.016166, 0.016275, 71.81723271], [1516511820000, 0.016275, 0.016275, 0.01617, 0.01617, 1.25435039], [1516511880000, 0.01627, 0.01627, 0.01614963, 0.01614963, 26.85406257], [1516511940000, 0.0162468, 0.01626996, 0.0162468, 0.0162468, 11.529956], [1516512000000, 0.016157, 0.0162468, 0.01615207, 0.0162468, 18.98097931], [1516512060000, 0.016162, 0.0162468, 0.016162, 0.016163, 1.78117893], [1516512120000, 0.016163, 0.016164, 0.016163, 0.016164, 8.02505555], [1516512180000, 0.016164, 0.0162468, 0.016164, 0.0162, 16.24019098], [1516512240000, 0.0162, 0.0162467, 0.0162, 0.01621, 27.45383281], [1516512300000, 0.01621, 0.01628498, 0.01621, 0.01628498, 4.99432935], [1516512360000, 0.0162467, 0.01628499, 0.0162, 0.01628, 145.72236674], [1516512420000, 0.01628, 0.01629595, 0.0162, 0.016291, 95.41523606], [1516512480000, 0.01623068, 0.01623068, 0.0162, 0.0162, 1.25040198], [1516512540000, 0.01621, 0.01629594, 0.0162, 0.01629594, 29.01981768], [1516512600000, 0.01629595, 0.01629595, 0.0162, 0.01621447, 83.69803054], [1516512660000, 0.01621447, 0.01621447, 0.0162, 0.01621447, 33.16499794], [1516512720000, 0.01629594, 0.01635999, 0.01620003, 0.01620003, 89.19045604], [1516512780000, 0.01620003, 0.01634999, 0.01620003, 0.016335, 65.24419716], [1516512840000, 0.016335, 0.016335, 0.01620003, 0.01633, 33.85211518], [1516512900000, 0.01622, 0.01633, 0.016215, 0.016215, 21.7954448], [1516512960000, 0.01621002, 0.01622, 0.0162, 0.01622, 11.62517], [1516513020000, 0.016215, 0.01631999, 0.01620003, 0.01620501, 2.63102749], [1516513080000, 0.01621, 0.01632498, 0.01620501, 0.01620502, 37.06096204], [1516513140000, 0.01620502, 0.016319, 0.01620502, 0.016319, 77.03379699], [1516513200000, 0.01632497, 0.01632498, 0.01627, 0.01627, 4.75085288], [1516513260000, 0.01627, 0.016335, 0.01620001, 0.01633499, 22.37851636], [1516513320000, 0.01633499, 0.01633499, 0.0162, 0.0162, 33.45394376], [1516513380000, 0.01620999, 0.01631, 0.0162, 0.01631, 14.51685529], [1516513440000, 0.01621001, 0.01631992, 0.01621, 0.01631992, 29.71957698], [1516513500000, 0.016315, 0.016315, 0.016205, 0.016205, 2.97091589], [1516513560000, 0.016205, 0.01631, 0.01617777, 0.0162, 64.62884958], [1516513620000, 0.01618905, 0.01631, 0.01617776, 0.01618905, 11.24555242], [1516513680000, 0.01620524, 0.01620524, 0.01620524, 0.01620524, 7.57143223], [1516513740000, 0.01620524, 0.01629595, 0.01617776, 0.01629595, 7.4304883], [1516513800000, 0.0163, 0.0163, 0.01617776, 0.01620524, 29.1410045], [1516513860000, 0.01620523, 0.01620524, 0.01620523, 0.01620524, 9.441393], [1516513920000, 0.01630497, 0.01630497, 0.01620524, 0.01620524, 1.11763411], [1516513980000, 0.01620524, 0.016305, 0.01620524, 0.016295, 41.95023207], [1516514040000, 0.01628, 0.01630499, 0.01628, 0.01628, 11.77042508], [1516514100000, 0.01628, 0.01629997, 0.01628, 0.01629997, 8.98004397], [1516514160000, 0.01629997, 0.01629997, 0.01628, 0.01628, 3.76994251], [1516514220000, 0.01629995, 0.01629997, 0.01628, 0.01629997, 4.70117893], [1516514280000, 0.01628, 0.01629499, 0.01628, 0.01629498, 23.0419074], [1516514340000, 0.01628, 0.01628001, 0.01628, 0.01628001, 27.09767401], [1516514400000, 0.01629, 0.01629, 0.0161989, 0.0161989, 28.2033274], [1516514460000, 0.0161989, 0.0161989, 0.0161989, 0.0161989, 0.17098], [1516514520000, 0.016199, 0.016273, 0.016199, 0.016199, 4.91826511], [1516514580000, 0.01626598, 0.01627299, 0.016199, 0.016199, 4.28173733], [1516514640000, 0.01627299, 0.016285, 0.016199, 0.0162019, 16.30356117], [1516514700000, 0.01626771, 0.01628996, 0.0162019, 0.01628996, 11.85319805], [1516514760000, 0.0162019, 0.01628996, 0.0162019, 0.01628996, 3.81685663], [1516514820000, 0.01628996, 0.01629998, 0.01628995, 0.01629998, 11.66021932], [1516514880000, 0.016209, 0.016305, 0.0162019, 0.01629998, 27.73611342], [1516514940000, 0.016295, 0.016295, 0.016199, 0.016199, 9.42536556], [1516515000000, 0.01619903, 0.016295, 0.016199, 0.016199, 7.92154558], [1516515060000, 0.01629997, 0.01629997, 0.016199, 0.016199, 32.66353675], [1516515120000, 0.01619901, 0.01619901, 0.016199, 0.016199, 5.68674091], [1516515180000, 0.016199, 0.01619901, 0.016199, 0.01619901, 7.65347195], [1516515240000, 0.01619902, 0.01629499, 0.01619902, 0.01619902, 2.47695505], [1516515300000, 0.01619902, 0.01629997, 0.01619902, 0.01629499, 15.08592066], [1516515360000, 0.01619902, 0.01629998, 0.016199, 0.01629998, 15.29661608], [1516515420000, 0.016199, 0.01629997, 0.016199, 0.01629499, 15.12529915], [1516515480000, 0.01629, 0.01629, 0.01619909, 0.0161991, 6.18226533], [1516515540000, 0.0161991, 0.01629499, 0.016199, 0.01628999, 5.1499368], [1516515600000, 0.01629498, 0.01629499, 0.016199, 0.01629497, 5.46334491], [1516515660000, 0.01629499, 0.01629499, 0.0162, 0.01629399, 5.63114965], [1516515720000, 0.01620002, 0.0162939, 0.01620002, 0.0162939, 3.09998372], [1516515780000, 0.016271, 0.01629399, 0.016271, 0.01629399, 55.92672744], [1516515840000, 0.01620002, 0.01629389, 0.01620002, 0.01629389, 15.26211998], [1516515900000, 0.01628038, 0.01628038, 0.01620008, 0.01620008, 12.23277382], [1516515960000, 0.0162795, 0.0162795, 0.0162001, 0.0162001, 16.62767983], [1516516020000, 0.01627939, 0.01627939, 0.0162001, 0.0162001, 13.81253554], [1516516080000, 0.01620009, 0.0162001, 0.01620009, 0.0162001, 0.20416648], [1516516140000, 0.01620009, 0.01626999, 0.01620009, 0.01620009, 11.08049064], [1516516200000, 0.01627, 0.01627, 0.01620009, 0.01626999, 5.38373058], [1516516260000, 0.01626999, 0.01626999, 0.0162001, 0.01626999, 89.54679883], [1516516320000, 0.01626999, 0.01629498, 0.01626999, 0.01626999, 114.04156882], [1516516380000, 0.01626999, 0.01629498, 0.01620008, 0.01620008, 17.16081379], [1516516440000, 0.01629474, 0.01629499, 0.01620008, 0.0162002, 13.60261054], [1516516500000, 0.01629148, 0.01629149, 0.01629148, 0.01629149, 1.23621996], [1516516560000, 0.01629149, 0.01629149, 0.01620051, 0.01620051, 27.38264165], [1516516620000, 0.01620055, 0.01620055, 0.01620008, 0.01620008, 34.30898801], [1516516680000, 0.01620055, 0.01620055, 0.0162, 0.01620001, 122.93868241], [1516516740000, 0.01620055, 0.01629998, 0.01620002, 0.01629998, 48.58208634], [1516516800000, 0.01621676, 0.01629998, 0.0162001, 0.01629998, 4.36907536], [1516516860000, 0.01629997, 0.016315, 0.01621676, 0.01629998, 45.14125025], [1516516920000, 0.01621676, 0.01632035, 0.01620201, 0.01620201, 4.31638395], [1516516980000, 0.016206, 0.01624969, 0.016206, 0.01624969, 6.05498012], [1516517040000, 0.01624969, 0.01632041, 0.01624969, 0.01632008, 2.45738667], [1516517100000, 0.01624969, 0.01632042, 0.01624969, 0.01624969, 2.90881505], [1516517160000, 0.01624969, 0.01624969, 0.01624969, 0.01624969, 0.54657062], [1516517220000, 0.01624969, 0.01632039, 0.016206, 0.01632, 39.85093612], [1516517280000, 0.01631489, 0.01631489, 0.016206, 0.01630899, 37.58353963], [1516517340000, 0.016309, 0.016309, 0.016206, 0.016216, 5.66588781], [1516517400000, 0.016309, 0.016309, 0.016212, 0.016212, 0.53948078], [1516517460000, 0.01620607, 0.01630889, 0.01620607, 0.01630889, 2.21102271], [1516517520000, 0.01630885, 0.01630885, 0.016212, 0.016212, 9.44202576], [1516517580000, 0.016212, 0.016212, 0.016206, 0.016212, 13.31995903], [1516517640000, 0.01626036, 0.01630884, 0.016212, 0.01630882, 27.41330969], [1516517700000, 0.01630882, 0.01631497, 0.016212, 0.0163087, 36.26587336], [1516517760000, 0.016212, 0.01630871, 0.016212, 0.01630869, 11.53395966], [1516517820000, 0.01630864, 0.01630867, 0.016212, 0.016212, 9.68024512], [1516517880000, 0.016212, 0.01630858, 0.016212, 0.01630858, 0.75210745], [1516517940000, 0.016216, 0.01630856, 0.016212, 0.0163, 16.34972745], [1516518000000, 0.0163, 0.0163, 0.01621999, 0.0163, 23.3557934], [1516518060000, 0.01621999, 0.0163, 0.01621999, 0.01622001, 2.13962026], [1516518120000, 0.01622001, 0.0163, 0.0162, 0.016204, 138.70986002], [1516518180000, 0.016204, 0.01620999, 0.016204, 0.01620999, 16.01218135], [1516518240000, 0.01620999, 0.0163, 0.0162, 0.016204, 24.45266552], [1516518300000, 0.0163, 0.0163, 0.01620511, 0.01620522, 24.28506], [1516518360000, 0.01621001, 0.0163, 0.01621001, 0.0163, 2.58890589], [1516518420000, 0.0163, 0.0163, 0.01620521, 0.0163, 15.57925522], [1516518480000, 0.0163, 0.0163, 0.0162041, 0.01620521, 1.23739563], [1516518540000, 0.01620521, 0.016299, 0.01620521, 0.016298, 4.5289914], [1516518600000, 0.01629799, 0.016299, 0.016204, 0.016299, 11.58261127], [1516518660000, 0.016299, 0.01629997, 0.016204, 0.016205, 15.68328121], [1516518720000, 0.016205, 0.01629899, 0.016204, 0.016204, 20.02973832], [1516518780000, 0.0162, 0.01629595, 0.0162, 0.01629595, 9.54943008], [1516518840000, 0.016205, 0.01629595, 0.016205, 0.01622121, 17.99544238], [1516518900000, 0.01622121, 0.0163, 0.01622121, 0.01622121, 47.64198467], [1516518960000, 0.01622121, 0.0163, 0.01622121, 0.0163, 46.22248274], [1516519020000, 0.0163, 0.0163, 0.01622121, 0.01622121, 27.08993021], [1516519140000, 0.0162999, 0.0162999, 0.016226, 0.01622601, 8.54408566], [1516519200000, 0.0162999, 0.0163, 0.01625, 0.01625, 9.87448017], [1516519260000, 0.0163, 0.0163, 0.0163, 0.0163, 9.33641521], [1516519320000, 0.0163, 0.0163, 0.01625001, 0.0163, 9.78996419], [1516519380000, 0.0163, 0.0163, 0.01626, 0.0163, 1.36390492], [1516519440000, 0.01626, 0.0163, 0.01625, 0.01625, 44.16716992], [1516519500000, 0.01626, 0.01626, 0.01625, 0.01625, 18.59923487], [1516519560000, 0.01625, 0.0163, 0.016204, 0.0163, 9.2806012], [1516519620000, 0.0162042, 0.0163, 0.016204, 0.0163, 3.32211729], [1516519680000, 0.0163, 0.0163, 0.01622, 0.0162201, 15.95455603], [1516519740000, 0.0163, 0.0163, 0.0162201, 0.0162201, 1.19529148], [1516519800000, 0.0163, 0.0163, 0.0162203, 0.0163, 3.19737362], [1516519860000, 0.0163, 0.0163, 0.01622095, 0.0163, 6.6616802], [1516519920000, 0.01622105, 0.01629999, 0.01622105, 0.01622115, 20.15163369], [1516519980000, 0.01629999, 0.01629999, 0.01622115, 0.01629999, 4.17425189], [1516520040000, 0.01622105, 0.01629999, 0.016205, 0.0162051, 10.94151419], [1516520100000, 0.016205, 0.01628999, 0.01620001, 0.01628499, 6.3303524], [1516520160000, 0.01628499, 0.01628999, 0.0162, 0.01620001, 16.55025134], [1516520220000, 0.01620001, 0.01629, 0.0162, 0.01620001, 41.07886097], [1516520280000, 0.01629, 0.01634999, 0.01614882, 0.01631866, 594.17418595], [1516520340000, 0.01632043, 0.01632043, 0.01618033, 0.01632043, 101.24540525], [1516520400000, 0.01632, 0.01632043, 0.01618012, 0.01618012, 40.50653607], [1516520460000, 0.01618012, 0.01631499, 0.01614882, 0.01628648, 36.98671384], [1516520520000, 0.01628648, 0.01632043, 0.016174, 0.0161741, 23.68782995], [1516520580000, 0.0163, 0.01632043, 0.01617901, 0.0162445, 16.22780785], [1516520640000, 0.0162445, 0.01632043, 0.01620213, 0.01620213, 4.97790894], [1516520700000, 0.0161941, 0.01634999, 0.01619402, 0.01619402, 141.81894199], [1516520760000, 0.016215, 0.01633516, 0.016194, 0.016194, 32.29202317], [1516520820000, 0.016294, 0.01629897, 0.01610401, 0.01614001, 329.32572782], [1516520880000, 0.01626016, 0.016279, 0.01626016, 0.016279, 19.98856056], [1516520940000, 0.01627898, 0.016279, 0.016145, 0.01627399, 22.79182238], [1516521000000, 0.01625, 0.01628398, 0.01615, 0.01616, 143.17809945], [1516521060000, 0.01616001, 0.01630908, 0.01614511, 0.01614511, 239.52806408], [1516521120000, 0.01614512, 0.01623007, 0.01613705, 0.01623007, 71.94308773], [1516521180000, 0.0161471, 0.01627888, 0.0161471, 0.01616801, 28.51817394], [1516521240000, 0.01627888, 0.01630792, 0.01627888, 0.01630792, 15.000768], [1516521300000, 0.01628399, 0.01630792, 0.01616801, 0.01630599, 32.50558898], [1516521360000, 0.01617811, 0.01630663, 0.016173, 0.01617877, 9.63797173], [1516521420000, 0.01617877, 0.01626998, 0.01617877, 0.01617877, 13.10679507], [1516521480000, 0.01626499, 0.01626499, 0.01617878, 0.016264, 8.57340178], [1516521540000, 0.0161841, 0.01630099, 0.0161841, 0.01630099, 17.38690789], [1516521600000, 0.0161841, 0.016291, 0.0161841, 0.0161841, 7.98460811], [1516521660000, 0.0161841, 0.016291, 0.016184, 0.01629, 25.34375746], [1516521720000, 0.01628598, 0.01629099, 0.01618466, 0.01628598, 6.49433574], [1516521780000, 0.01628596, 0.01628596, 0.01617878, 0.01617878, 13.01426587], [1516521840000, 0.016184, 0.01629098, 0.01617877, 0.016182, 136.77187522], [1516521900000, 0.01617878, 0.01630671, 0.01617877, 0.01617877, 49.13624498], [1516521960000, 0.01617879, 0.01630671, 0.01617877, 0.0163015, 53.35651443], [1516522020000, 0.01618001, 0.01629984, 0.01618001, 0.01618001, 13.27851963], [1516522080000, 0.01629891, 0.016299, 0.01618001, 0.01619, 46.14131321], [1516522140000, 0.016189, 0.016189, 0.01618003, 0.016189, 4.93880133], [1516522200000, 0.01618107, 0.01629802, 0.016179, 0.016189, 45.86753595], [1516522260000, 0.016189, 0.01629796, 0.0161472, 0.01617899, 31.39123733], [1516522320000, 0.01617899, 0.01627998, 0.01617879, 0.01627998, 21.89325947], [1516522380000, 0.01627998, 0.01629802, 0.01617879, 0.01629802, 30.69843658], [1516522440000, 0.01629619, 0.01629619, 0.0161472, 0.0161472, 19.80324136], [1516522500000, 0.01614905, 0.01616801, 0.01614905, 0.01614905, 2.22275195], [1516522560000, 0.016154, 0.01615401, 0.016154, 0.01615401, 0.5576219], [1516522620000, 0.0162, 0.0162, 0.01616801, 0.0162, 6.04874396], [1516522680000, 0.01621, 0.01628993, 0.01621, 0.01627996, 7.474941], [1516522740000, 0.01627996, 0.01627996, 0.01616, 0.01616, 14.94933013], [1516522800000, 0.01621, 0.01621, 0.0161558, 0.0161655, 55.70903995], [1516522860000, 0.016164, 0.01625999, 0.01615, 0.01625999, 83.70577816], [1516522920000, 0.01626496, 0.01626496, 0.016165, 0.01626496, 4.38546474], [1516522980000, 0.01626496, 0.01626496, 0.01620105, 0.01620105, 8.36306079], [1516523040000, 0.01626496, 0.01629, 0.01620136, 0.01629, 134.83049782], [1516523100000, 0.01629, 0.01629, 0.01620615, 0.016289, 40.96752181], [1516523160000, 0.01628997, 0.01629, 0.01621646, 0.01622103, 62.25894519], [1516523220000, 0.01629, 0.01629, 0.01621602, 0.01629, 68.55573429], [1516523280000, 0.01621664, 0.01629, 0.01621664, 0.01629, 1.34212333], [1516523340000, 0.01629, 0.0163, 0.016225, 0.016225, 4.97602414], [1516523400000, 0.01629, 0.01629, 0.01622501, 0.01622501, 2.37611728], [1516523460000, 0.01628, 0.01628, 0.016225, 0.01628, 4.64545862], [1516523520000, 0.01628, 0.01628, 0.016225, 0.01628, 5.90891129], [1516523580000, 0.01628, 0.01628, 0.016225, 0.0162777, 6.7226974], [1516523640000, 0.0162777, 0.0162777, 0.016221, 0.0162777, 19.91488379], [1516523700000, 0.0162777, 0.0162777, 0.01627767, 0.01627767, 3.5930316], [1516523760000, 0.01627, 0.01627, 0.01622103, 0.01627, 3.59078466], [1516523820000, 0.01627, 0.01627, 0.01622103, 0.01627, 2.99746246], [1516523880000, 0.01627, 0.01627, 0.01622, 0.01622, 48.34709924], [1516523940000, 0.01622, 0.01627, 0.01622, 0.01622, 62.49500802], [1516524000000, 0.01624499, 0.01627, 0.01622, 0.01627, 61.36303562], [1516524060000, 0.01622, 0.01627, 0.01616722, 0.016225, 65.0074816], [1516524120000, 0.01616732, 0.01627, 0.01615701, 0.01627, 45.36431063], [1516524180000, 0.016164, 0.01626499, 0.016154, 0.01622405, 20.75444254], [1516524240000, 0.01622405, 0.01625, 0.01615909, 0.01615909, 6.43551281], [1516524300000, 0.01622405, 0.01625, 0.0161591, 0.01622405, 9.59449849], [1516524360000, 0.01625, 0.01625, 0.01619, 0.01625, 3.21629792], [1516524420000, 0.01623, 0.01623, 0.01619001, 0.0162, 1.23018116], [1516524480000, 0.01623, 0.01624, 0.01619021, 0.01619021, 3.16829856], [1516524540000, 0.01623, 0.0162777, 0.01619023, 0.0162777, 47.39691902], [1516524600000, 0.01623003, 0.0162885, 0.01623001, 0.0162885, 23.06522377], [1516524660000, 0.0162885, 0.01628996, 0.016215, 0.01628996, 16.8120628], [1516524720000, 0.01628996, 0.01629, 0.016203, 0.01620601, 16.65819972], [1516524780000, 0.01620602, 0.01628996, 0.0162, 0.0162, 6.49154259], [1516524840000, 0.01620311, 0.0163015, 0.01620301, 0.01620301, 28.94214113], [1516524900000, 0.016209, 0.01630117, 0.016209, 0.01630117, 19.64148634], [1516524960000, 0.01630117, 0.01630117, 0.01621011, 0.01621101, 5.81530364], [1516525020000, 0.01629, 0.01629, 0.0162221, 0.01629, 6.99227946], [1516525080000, 0.0162112, 0.01629, 0.0161472, 0.0161472, 67.40063984], [1516525140000, 0.016232, 0.01630671, 0.01618106, 0.01623201, 67.05980796], [1516525200000, 0.01623201, 0.01631828, 0.01623201, 0.0163, 22.56345037], [1516525260000, 0.01632042, 0.01632043, 0.01627271, 0.01627271, 11.98233866], [1516525320000, 0.01632042, 0.01632045, 0.01627271, 0.01629, 24.87122949], [1516525380000, 0.01629, 0.01632, 0.01627271, 0.01627271, 54.698321], [1516525440000, 0.01627271, 0.01632, 0.01627271, 0.0163, 0.92969801], [1516525500000, 0.0163, 0.01634999, 0.01627271, 0.01633399, 11.10819943], [1516525560000, 0.01633399, 0.01633399, 0.01632, 0.01632, 5.56421499], [1516525620000, 0.01633397, 0.01633397, 0.01627271, 0.01627271, 12.88183319], [1516525680000, 0.01627271, 0.01633399, 0.01627271, 0.01632, 32.28809179], [1516525740000, 0.01627271, 0.01632, 0.01627271, 0.01632, 9.13180099], [1516525800000, 0.01632, 0.01633, 0.01627271, 0.01627271, 3.94647894], [1516525860000, 0.01633399, 0.01634996, 0.01627271, 0.01628271, 25.54480011], [1516525920000, 0.01633, 0.01633, 0.01628271, 0.01632999, 5.04595112], [1516525980000, 0.01629271, 0.01633, 0.01629271, 0.01629271, 116.43482968], [1516526040000, 0.01629271, 0.01634999, 0.01629271, 0.01634999, 266.72339285], [1516526100000, 0.01629271, 0.01636981, 0.01629271, 0.01634182, 42.61977244], [1516526160000, 0.01629275, 0.01634182, 0.01629271, 0.01629271, 16.98904423], [1516526220000, 0.01629275, 0.01634182, 0.01629271, 0.01629271, 77.05940824], [1516526280000, 0.01634175, 0.01634175, 0.01628271, 0.01628271, 45.75227118], [1516526340000, 0.01628271, 0.0163499, 0.01628271, 0.0163499, 8.19720883], [1516526400000, 0.01631633, 0.0163499, 0.01628271, 0.01628271, 10.21556659], [1516526460000, 0.01628271, 0.01634178, 0.01628271, 0.01634177, 89.98951673], [1516526520000, 0.01634177, 0.01634177, 0.01628271, 0.01628271, 80.64133639], [1516526580000, 0.01634981, 0.01634981, 0.01628271, 0.01628271, 13.03259123], [1516526640000, 0.01628271, 0.01628272, 0.01628271, 0.01628272, 5.50464613], [1516526700000, 0.01628272, 0.01634974, 0.01627271, 0.01627271, 65.12386929], [1516526760000, 0.01627271, 0.01634976, 0.01620626, 0.01620701, 29.27041974], [1516526820000, 0.01620701, 0.01634838, 0.01620701, 0.01620701, 8.20356378], [1516526880000, 0.01634787, 0.01634787, 0.01620704, 0.01622201, 4.75932951], [1516526940000, 0.016222, 0.01622213, 0.016222, 0.01622213, 64.2510972], [1516527000000, 0.01633998, 0.01633998, 0.01622773, 0.01623, 8.11888023], [1516527060000, 0.01623001, 0.016325, 0.01623001, 0.016325, 3.36396467], [1516527120000, 0.016325, 0.016325, 0.01623002, 0.01623002, 12.06164441], [1516527180000, 0.01623002, 0.01632391, 0.01623, 0.01632371, 13.31764176], [1516527240000, 0.01632371, 0.01632392, 0.01620705, 0.01620705, 41.91780563], [1516527300000, 0.01632391, 0.01632391, 0.01620708, 0.01621201, 8.43692555], [1516527360000, 0.016321, 0.016321, 0.01623213, 0.01623213, 0.65599754], [1516527420000, 0.01623224, 0.016321, 0.01623224, 0.016321, 18.15203369], [1516527480000, 0.01632424, 0.01632424, 0.01625701, 0.016262, 5.623699], [1516527540000, 0.01625701, 0.01632424, 0.01625701, 0.01626205, 11.43038988], [1516527600000, 0.0163, 0.0163247, 0.01626205, 0.0163247, 3.73575849], [1516527660000, 0.016321, 0.01633499, 0.0162927, 0.01633499, 0.44224709], [1516527720000, 0.0163, 0.0163247, 0.0163, 0.0163247, 3.10246892], [1516527780000, 0.0163, 0.01633499, 0.0162927, 0.01633499, 8.74378507], [1516527840000, 0.0162927, 0.01633998, 0.0162927, 0.016335, 28.35852525], [1516527900000, 0.016335, 0.01634, 0.0162927, 0.01634, 24.05675109], [1516527960000, 0.01634977, 0.01634977, 0.0162927, 0.0162927, 19.26803974], [1516528020000, 0.016345, 0.016345, 0.01629271, 0.01629271, 18.39530933], [1516528080000, 0.01629271, 0.016345, 0.0162927, 0.0162927, 26.87340183], [1516528140000, 0.01634976, 0.01634976, 0.0162927, 0.0162927, 21.05489002], [1516528200000, 0.0162927, 0.0162927, 0.0162927, 0.0162927, 6.86459291], [1516528260000, 0.01629281, 0.01634974, 0.01629281, 0.01634974, 3.76769151], [1516528320000, 0.01629281, 0.01634974, 0.0162927, 0.016296, 7.24909846], [1516528380000, 0.01634974, 0.01634976, 0.016296, 0.016296, 31.38349792], [1516528440000, 0.01634974, 0.01634974, 0.016294, 0.016294, 21.40245588], [1516528500000, 0.01634974, 0.01634976, 0.016297, 0.01634976, 17.15343419], [1516528560000, 0.016294, 0.01634975, 0.01621624, 0.01634973, 8.08176716], [1516528620000, 0.01624801, 0.01634975, 0.016243, 0.01634975, 14.50721147], [1516528680000, 0.01625, 0.01634973, 0.01623979, 0.01634973, 9.82434399], [1516528740000, 0.016241, 0.01634973, 0.01623601, 0.016345, 6.85846639], [1516528800000, 0.01623609, 0.0163, 0.01620623, 0.01620623, 10.21116424], [1516528860000, 0.01620623, 0.01628997, 0.01620001, 0.01628997, 5.54954701], [1516528920000, 0.01620001, 0.01628497, 0.0162, 0.0162, 7.385059], [1516528980000, 0.016265, 0.016265, 0.0162, 0.0162, 18.70316587], [1516529040000, 0.01619978, 0.0162, 0.01618273, 0.0162, 8.34885874], [1516529100000, 0.0162, 0.0162, 0.01617657, 0.01617657, 28.0273231], [1516529160000, 0.0162, 0.0162, 0.0161471, 0.01617271, 34.56700962], [1516529220000, 0.01617271, 0.01617271, 0.0161704, 0.01617271, 7.53506116], [1516529280000, 0.01617271, 0.0162, 0.01612701, 0.01612701, 51.59698055], [1516529340000, 0.01613701, 0.01613701, 0.01613701, 0.01613701, 2.3832515], [1516529400000, 0.01614201, 0.0162, 0.016142, 0.016152, 14.81747342], [1516529460000, 0.0162, 0.0162, 0.016153, 0.0162, 30.44252371], [1516529520000, 0.016201, 0.01629986, 0.0162, 0.0162, 17.66022533], [1516529580000, 0.0162929, 0.0162929, 0.0162, 0.0162, 22.08757001], [1516529640000, 0.0162, 0.01630333, 0.0162, 0.0163, 7.37443452], [1516529700000, 0.0162, 0.0163, 0.0162, 0.0162, 8.52661863], [1516529760000, 0.0162, 0.0162, 0.0162, 0.0162, 8.51170311], [1516529820000, 0.0163, 0.0163, 0.01620001, 0.0163, 18.63917142], [1516529880000, 0.0163, 0.0163, 0.0162, 0.01620501, 35.06763876], [1516529940000, 0.01620503, 0.01631636, 0.01620005, 0.01620005, 10.32741354], [1516530000000, 0.01620006, 0.01631827, 0.01620005, 0.01620005, 5.1508718], [1516530060000, 0.016212, 0.01633397, 0.016212, 0.016212, 23.73689207], [1516530120000, 0.016212, 0.01621701, 0.01620624, 0.01620624, 6.8451892], [1516530180000, 0.01631821, 0.01631821, 0.01620626, 0.01621501, 15.07237727], [1516530240000, 0.01621501, 0.01631825, 0.01621005, 0.01622, 13.39011266], [1516530300000, 0.01631825, 0.01631825, 0.016225, 0.01631825, 11.55799455], [1516530360000, 0.01631675, 0.01631826, 0.01622501, 0.01623, 53.57933863], [1516530420000, 0.01623001, 0.01623001, 0.01623, 0.01623, 23.62939823], [1516530480000, 0.01623, 0.01623001, 0.01622, 0.01623001, 45.98516872], [1516530540000, 0.01623, 0.01626825, 0.01622007, 0.01623, 14.57608171], [1516530600000, 0.01622501, 0.01631826, 0.01622501, 0.0163, 5.20066126], [1516530660000, 0.0163, 0.0163, 0.01622503, 0.01622503, 5.9560793], [1516530720000, 0.0163, 0.01631826, 0.01622401, 0.01631826, 30.78642778], [1516530780000, 0.01622401, 0.01622401, 0.01622401, 0.01622401, 26.83984111], [1516530840000, 0.01622401, 0.01622402, 0.01622, 0.01622402, 70.85509494], [1516530900000, 0.01622402, 0.01631826, 0.01622402, 0.01622901, 74.45823645], [1516530960000, 0.016234, 0.01631826, 0.016234, 0.01631826, 27.38691572], [1516531020000, 0.01631826, 0.01631826, 0.016236, 0.01631826, 15.24347707], [1516531080000, 0.01631826, 0.01631826, 0.01624101, 0.01631826, 21.57308417], [1516531140000, 0.01631825, 0.01631826, 0.01623702, 0.01623702, 5.62671865], [1516531200000, 0.01623702, 0.01631826, 0.01622743, 0.01622744, 101.25808096], [1516531260000, 0.01625325, 0.01631826, 0.01625325, 0.01631826, 21.91057839], [1516531320000, 0.01625325, 0.01631826, 0.01622743, 0.01625328, 2.56483993], [1516531380000, 0.01625327, 0.01631826, 0.01625327, 0.01631826, 25.48425212], [1516531440000, 0.01631826, 0.01631826, 0.01625325, 0.01631066, 3.99623584], [1516531500000, 0.01631066, 0.01631826, 0.01625327, 0.01631826, 116.32058373], [1516531560000, 0.01625329, 0.01625329, 0.01625327, 0.01625328, 12.96510903], [1516531620000, 0.01625339, 0.01625339, 0.01625328, 0.01625338, 25.3261672], [1516531680000, 0.01625338, 0.01625338, 0.01625328, 0.0162533, 18.92145284], [1516531740000, 0.0162533, 0.01630796, 0.01625327, 0.01630796, 21.62026262], [1516531800000, 0.01625338, 0.01631797, 0.01625338, 0.01631797, 10.84863097], [1516531860000, 0.01625338, 0.01631797, 0.01625338, 0.01631793, 29.36501641], [1516531920000, 0.01631793, 0.01631797, 0.01631793, 0.01631797, 8.74056978], [1516531980000, 0.01631797, 0.01631826, 0.01631797, 0.01631826, 23.68375637], [1516532040000, 0.01631826, 0.01631826, 0.01631826, 0.01631826, 0.2088494], [1516532100000, 0.01631826, 0.01631826, 0.01625711, 0.01631793, 6.23731825], [1516532160000, 0.01631793, 0.01631826, 0.01631793, 0.01631793, 12.28313928], [1516532220000, 0.0162661, 0.01631825, 0.0162661, 0.01631825, 1.8624789], [1516532280000, 0.01631825, 0.01631826, 0.01631825, 0.01631826, 66.29106229], [1516532340000, 0.01631825, 0.01631826, 0.01626713, 0.01626723, 48.83674591], [1516532400000, 0.01631825, 0.01631825, 0.01631825, 0.01631825, 1.1395068], [1516532460000, 0.01631825, 0.01631826, 0.0163, 0.01631826, 7.99443567], [1516532520000, 0.01631825, 0.01631825, 0.01631825, 0.01631825, 7.64769366], [1516532580000, 0.01631826, 0.01631826, 0.01625338, 0.01625338, 38.3823856], [1516532640000, 0.01625338, 0.01631826, 0.01625338, 0.01631826, 35.61136116], [1516532700000, 0.01631826, 0.01631826, 0.01625339, 0.01625339, 5.24930484], [1516532760000, 0.01625339, 0.0163182, 0.01625338, 0.0163182, 12.00965781], [1516532820000, 0.01625801, 0.0163182, 0.01625338, 0.01625339, 25.79086749], [1516532880000, 0.0163, 0.01631826, 0.0163, 0.0163, 10.51012559], [1516532940000, 0.01626002, 0.0163, 0.01626002, 0.0163, 2.53823972], [1516533000000, 0.0163, 0.01631826, 0.01627301, 0.01627301, 13.64592133], [1516533060000, 0.01631826, 0.01631826, 0.01628928, 0.01628928, 16.42468871], [1516533120000, 0.016334, 0.01634973, 0.016334, 0.01634973, 3.33904401], [1516533180000, 0.01634973, 0.01634976, 0.01630002, 0.01630002, 31.89287735], [1516533240000, 0.01634976, 0.01634976, 0.0163, 0.0163, 8.02375634], [1516533300000, 0.01631725, 0.01634976, 0.01627, 0.01634976, 24.06157579], [1516533360000, 0.01634977, 0.01634977, 0.01625339, 0.01634977, 13.8062093], [1516533420000, 0.01634977, 0.01634977, 0.01634977, 0.01634977, 1.43032483], [1516533480000, 0.01634977, 0.01639441, 0.01634977, 0.01639441, 17.7414598], [1516533540000, 0.01634978, 0.01634978, 0.01626159, 0.01626159, 1.94390734], [1516533600000, 0.0163, 0.0163, 0.01625901, 0.01627786, 4.54313149], [1516533660000, 0.01627786, 0.01634978, 0.01625338, 0.01634977, 19.17377727], [1516533720000, 0.01634977, 0.01634977, 0.01625342, 0.01625342, 1.81678376], [1516533780000, 0.016254, 0.01634977, 0.01625341, 0.01634977, 15.26856382], [1516533840000, 0.01634837, 0.01634977, 0.01625341, 0.01634977, 5.40141702], [1516533900000, 0.01625349, 0.01634977, 0.01625349, 0.01625349, 1.91925602], [1516533960000, 0.01625351, 0.01625351, 0.01625351, 0.01625351, 0.15], [1516534020000, 0.01634977, 0.01634977, 0.01625602, 0.01625602, 10.60950733], [1516534080000, 0.01634977, 0.01634977, 0.016258, 0.016258, 28.00571569], [1516534140000, 0.01634977, 0.01634977, 0.01625801, 0.01625801, 20.66275402], [1516534200000, 0.01629, 0.01634977, 0.016265, 0.01634977, 11.79426858], [1516534260000, 0.01627, 0.01627, 0.016265, 0.016265, 1.73437411], [1516534320000, 0.01627, 0.01634978, 0.01625349, 0.01625349, 65.43833537], [1516534380000, 0.01633799, 0.01636997, 0.01625602, 0.016365, 15.32983557], [1516534440000, 0.01625779, 0.0163945, 0.01625779, 0.01625779, 0.3277236], [1516534500000, 0.01639404, 0.01639404, 0.01625341, 0.01625347, 7.54897498], [1516534560000, 0.01639284, 0.01639284, 0.01625347, 0.01639258, 24.21768802], [1516534620000, 0.01639223, 0.01639223, 0.01625354, 0.01626301, 13.70881374], [1516534680000, 0.01638644, 0.01639208, 0.01627201, 0.01631062, 49.23562028], [1516534740000, 0.01631062, 0.01631062, 0.01627201, 0.01627201, 19.34948132], [1516534800000, 0.01631062, 0.01632, 0.01631062, 0.01631069, 9.10168666], [1516534860000, 0.01632, 0.01638644, 0.01631069, 0.01631069, 22.17211143], [1516534920000, 0.01632, 0.0164058, 0.01626311, 0.01626311, 118.14630041], [1516534980000, 0.01626313, 0.01640477, 0.01626301, 0.01627, 14.32362123], [1516535040000, 0.01627, 0.01640464, 0.01625501, 0.01625508, 79.41299711], [1516535100000, 0.01637599, 0.01637599, 0.01636088, 0.01636088, 3.31384231], [1516535160000, 0.01636086, 0.01636086, 0.01625509, 0.01636069, 40.98920545], [1516535220000, 0.0162551, 0.01636595, 0.0162551, 0.01625514, 2.35845293], [1516535280000, 0.01636595, 0.01636595, 0.01625524, 0.01625536, 8.80567645], [1516535340000, 0.01625536, 0.01636996, 0.01625536, 0.01626004, 9.29535883], [1516535400000, 0.01625538, 0.01637, 0.01625538, 0.01636997, 58.11070143], [1516535460000, 0.01636996, 0.01636996, 0.01634712, 0.01634712, 2.80519694], [1516535520000, 0.01628, 0.016365, 0.01628, 0.01636, 2.94404436], [1516535580000, 0.01629628, 0.0163599, 0.01625509, 0.01625509, 40.88216771], [1516535640000, 0.01625509, 0.01628, 0.01625509, 0.01628, 25.21287291], [1516535700000, 0.01628, 0.01628, 0.01625509, 0.01628, 5.32137127], [1516535760000, 0.01632869, 0.01636643, 0.01628, 0.01628, 8.9187138], [1516535820000, 0.01636643, 0.01636643, 0.01625509, 0.01636642, 28.54158495], [1516535880000, 0.01625697, 0.01636, 0.01625513, 0.01636, 20.21651908], [1516535940000, 0.01636643, 0.01637, 0.01626001, 0.01626001, 6.95552417], [1516536000000, 0.01637, 0.01638094, 0.016259, 0.016259, 7.36225163], [1516536060000, 0.01625901, 0.01637, 0.01625531, 0.01625534, 10.88485458], [1516536120000, 0.01625535, 0.01635, 0.01625535, 0.01625903, 7.28917044], [1516536180000, 0.01625903, 0.01635, 0.01625531, 0.01634997, 47.46795619], [1516536240000, 0.01634997, 0.01634998, 0.01625904, 0.01625904, 2.55618151], [1516536300000, 0.0163497, 0.01634997, 0.01625338, 0.01625338, 236.58004691], [1516536360000, 0.01625328, 0.01625905, 0.01625193, 0.01625905, 0.51514153], [1516536420000, 0.01634367, 0.016344, 0.01625905, 0.016344, 6.07317122], [1516536480000, 0.01634366, 0.01634366, 0.01632723, 0.01632723, 1.12081449], [1516536540000, 0.0162591, 0.016327, 0.0162591, 0.0162591, 2.13788435], [1516536600000, 0.016327, 0.01633934, 0.0162591, 0.01633, 4.78189605], [1516536660000, 0.01625913, 0.01632967, 0.01625912, 0.016319, 10.48236992], [1516536720000, 0.016319, 0.01633915, 0.016319, 0.01633882, 41.47248246], [1516536780000, 0.01633882, 0.01635, 0.01633784, 0.01634997, 40.8990081], [1516536840000, 0.01634997, 0.01635, 0.016319, 0.016319, 9.22029649], [1516536900000, 0.016319, 0.01633784, 0.01625912, 0.01625912, 6.09822053], [1516536960000, 0.01625912, 0.01638098, 0.01625911, 0.01625911, 24.65467875], [1516537020000, 0.01630469, 0.01638088, 0.01625911, 0.01625911, 53.03746077], [1516537080000, 0.01625911, 0.01630469, 0.01625911, 0.01625911, 9.3987395], [1516537140000, 0.01625911, 0.01625911, 0.01622744, 0.01622744, 77.29233149], [1516537200000, 0.01623149, 0.01635998, 0.01622745, 0.01624, 13.53962292], [1516537260000, 0.01624, 0.01632998, 0.01622747, 0.0162275, 14.82234013], [1516537320000, 0.01632998, 0.01633, 0.01622751, 0.01622751, 103.56894112], [1516537380000, 0.01632998, 0.01632999, 0.01622751, 0.016231, 29.45672722], [1516537440000, 0.01632999, 0.01634998, 0.0162301, 0.01634, 21.41784481], [1516537500000, 0.01633999, 0.01634, 0.01622763, 0.01632, 2.17378207], [1516537560000, 0.01632, 0.01632, 0.01632, 0.01632, 14.2179426], [1516537620000, 0.01632, 0.01632, 0.01622757, 0.01632, 0.39921962], [1516537680000, 0.01632, 0.01637099, 0.01622765, 0.01635578, 37.31698652], [1516537740000, 0.016335, 0.016335, 0.016247, 0.016335, 1.09335933], [1516537800000, 0.01634997, 0.01634998, 0.01624625, 0.01628346, 45.72207552], [1516537860000, 0.01633999, 0.01634, 0.01622743, 0.01622743, 8.15889264], [1516537920000, 0.01633999, 0.01634, 0.01622743, 0.01634, 10.37835847], [1516537980000, 0.0162583, 0.01634, 0.0162583, 0.01634, 2.26716304], [1516538040000, 0.01634, 0.01634, 0.01622743, 0.01634, 7.8607687], [1516538100000, 0.01634, 0.01635634, 0.01625751, 0.01625751, 5.42435879], [1516538160000, 0.01635634, 0.01635634, 0.01625751, 0.01625751, 2.56798183], [1516538220000, 0.0163635, 0.0163635, 0.01625751, 0.0163635, 2.85086183], [1516538280000, 0.0163635, 0.0163635, 0.01625751, 0.01625751, 4.45799356], [1516538340000, 0.01625751, 0.01636146, 0.01623301, 0.01623302, 32.17723652], [1516538400000, 0.01636112, 0.01636112, 0.01623301, 0.01636075, 9.08921727], [1516538460000, 0.01636044, 0.01636044, 0.01622743, 0.01629967, 4.38622705], [1516538520000, 0.01622743, 0.01629967, 0.01622743, 0.01629967, 0.51605697], [1516538580000, 0.01622745, 0.01629934, 0.01622744, 0.01629934, 11.03086667], [1516538640000, 0.01629934, 0.01629967, 0.01622745, 0.01629934, 27.647323], [1516538700000, 0.01629934, 0.01629934, 0.01622743, 0.01629934, 8.77680025], [1516538760000, 0.01629934, 0.01629934, 0.01622743, 0.01629934, 5.51477033], [1516538820000, 0.01629934, 0.01629934, 0.01629934, 0.01629934, 21.242954], [1516538880000, 0.01622745, 0.01622745, 0.01620625, 0.01620626, 63.29443612], [1516538940000, 0.016299, 0.016299, 0.01620626, 0.01620626, 0.47138147], [1516539000000, 0.016299, 0.016299, 0.01620739, 0.016299, 1.6912296], [1516539060000, 0.01629897, 0.016299, 0.016208, 0.016208, 6.71687615], [1516539120000, 0.0162989, 0.01629897, 0.0162989, 0.01629897, 6.85199291], [1516539180000, 0.01629897, 0.01629934, 0.01629897, 0.01629934, 6.89118144], [1516539240000, 0.01629934, 0.0163, 0.01622976, 0.0163, 35.01587413], [1516539300000, 0.0163, 0.0163, 0.01623061, 0.01629883, 20.92248918], [1516539360000, 0.01629883, 0.01633, 0.01622003, 0.01622003, 35.15219903], [1516539420000, 0.016325, 0.016325, 0.016208, 0.01631999, 27.47816632], [1516539480000, 0.01629402, 0.01632, 0.01621301, 0.01632, 43.03102179], [1516539540000, 0.01621801, 0.01632, 0.01621302, 0.01632, 14.59028269], [1516539600000, 0.01629999, 0.01632, 0.01621302, 0.01629999, 3.76190669], [1516539660000, 0.01629999, 0.01632, 0.016219, 0.01632, 6.9781012], [1516539720000, 0.01632, 0.01632, 0.01628, 0.01628, 4.51161358], [1516539780000, 0.01621303, 0.01628, 0.01621303, 0.016223, 7.32062455], [1516539840000, 0.0162281, 0.01632, 0.01622101, 0.01622802, 14.3670214], [1516539900000, 0.01629166, 0.01632, 0.01623, 0.01632, 7.0652448], [1516539960000, 0.01631, 0.01631, 0.01623001, 0.01623201, 21.28567441], [1516540020000, 0.01631, 0.01631, 0.01631, 0.01631, 0.38161885], [1516540080000, 0.01631, 0.01631, 0.01623206, 0.01631, 15.9619648], [1516540140000, 0.01631, 0.01631, 0.01623301, 0.01623301, 6.22761661], [1516540200000, 0.01623401, 0.016304, 0.01623401, 0.016304, 15.60565457], [1516540260000, 0.01623601, 0.01631, 0.01623601, 0.01631, 14.88500577], [1516540320000, 0.01631, 0.01636, 0.01623899, 0.01636, 68.04148566], [1516540380000, 0.01634, 0.01637022, 0.01634, 0.01634, 29.14386231], [1516540440000, 0.01634, 0.01634, 0.01623899, 0.01624, 3.30867414], [1516540500000, 0.01634, 0.01636497, 0.016239, 0.01624, 14.10812053], [1516540560000, 0.01633897, 0.01633897, 0.01631, 0.01631, 0.36479521], [1516540620000, 0.01624, 0.01633597, 0.01624, 0.01624001, 21.64524584], [1516540680000, 0.01624001, 0.01633597, 0.01624, 0.01633597, 21.07127816], [1516540740000, 0.01628948, 0.01633597, 0.01623202, 0.01628948, 45.93941152], [1516540800000, 0.01628947, 0.01628948, 0.01628947, 0.01628948, 1.23739639], [1516540860000, 0.01628948, 0.01628948, 0.01623606, 0.01628948, 1.91656666], [1516540920000, 0.01628948, 0.01628948, 0.01623202, 0.01623606, 28.31885747], [1516540980000, 0.01623606, 0.01623606, 0.01623202, 0.01623606, 20.59208754], [1516541040000, 0.01623606, 0.01633885, 0.01623606, 0.0162894, 9.59450303], [1516541100000, 0.01623203, 0.01633885, 0.01623203, 0.01633884, 3.02187375], [1516541160000, 0.01633884, 0.01633885, 0.01623203, 0.01623203, 4.63185195], [1516541220000, 0.01629598, 0.0163123, 0.01629598, 0.0163123, 3.2977847], [1516541280000, 0.0163123, 0.0163123, 0.01623202, 0.01629598, 8.9824698], [1516541340000, 0.01629599, 0.01629599, 0.01623202, 0.01623202, 5.28165877], [1516541400000, 0.01629599, 0.01629599, 0.01623202, 0.01623202, 3.93618573], [1516541460000, 0.01623202, 0.01629566, 0.01623202, 0.01629566, 2.12724047], [1516541520000, 0.01629599, 0.01629599, 0.01629566, 0.01629566, 24.81540709], [1516541580000, 0.01629599, 0.01629599, 0.01623202, 0.01628942, 15.24836499], [1516541640000, 0.01628942, 0.01628942, 0.01623202, 0.01623202, 11.87707625], [1516541700000, 0.01628942, 0.01628942, 0.01628942, 0.01628942, 14.58800626], [1516541760000, 0.01628942, 0.01628942, 0.01623203, 0.01628942, 10.90320484], [1516541820000, 0.01629566, 0.01629566, 0.01629566, 0.01629566, 2.89133805], [1516541880000, 0.01629599, 0.01629599, 0.01628942, 0.01629599, 5.29846746], [1516541940000, 0.01629599, 0.0163388, 0.01629599, 0.0162968, 2.91633955], [1516542000000, 0.0163387, 0.0163387, 0.01628942, 0.01628949, 16.94392061], [1516542060000, 0.01628949, 0.0162968, 0.01628942, 0.01628942, 7.80909871], [1516542120000, 0.01628942, 0.01628949, 0.01628942, 0.01628942, 5.52041143], [1516542180000, 0.01628942, 0.0162968, 0.01623202, 0.0162968, 8.54649159], [1516542240000, 0.01628949, 0.01628949, 0.01623202, 0.01623202, 0.47441641], [1516542300000, 0.01623202, 0.0162968, 0.01622, 0.01622, 11.88843062], [1516542360000, 0.0162968, 0.0162968, 0.01622, 0.01622, 1.81661723], [1516542420000, 0.01622, 0.01623202, 0.01622, 0.01623202, 5.74219179], [1516542480000, 0.01623202, 0.0162968, 0.016232, 0.0162968, 6.07809989], [1516542540000, 0.01621001, 0.0162968, 0.01621001, 0.0162968, 3.48644228], [1516542600000, 0.0162968, 0.0162968, 0.0162295, 0.01628051, 17.68660901], [1516542660000, 0.01628051, 0.0162968, 0.0162133, 0.01621352, 30.30412455], [1516542720000, 0.01621428, 0.01629679, 0.01621428, 0.01629679, 16.44142045], [1516542780000, 0.0163, 0.0163, 0.01629679, 0.01629679, 0.87368983], [1516542840000, 0.016299, 0.016299, 0.016299, 0.016299, 9.16858243], [1516542900000, 0.0162999, 0.0162999, 0.01629679, 0.01629679, 7.12452696], [1516542960000, 0.01629679, 0.0163, 0.01622401, 0.01622401, 60.12248337], [1516543020000, 0.01622411, 0.0162999, 0.01621813, 0.01621888, 2.04696893], [1516543080000, 0.0162999, 0.01632899, 0.0162999, 0.0162999, 88.68308701], [1516543140000, 0.01632899, 0.01633884, 0.0162999, 0.01633884, 33.61589288], [1516543200000, 0.01633874, 0.01637098, 0.01626401, 0.01626401, 14.69150473], [1516543260000, 0.01626401, 0.0163702, 0.01626401, 0.0163499, 8.06515876], [1516543320000, 0.01626401, 0.0163449, 0.01626401, 0.0163, 12.42954462], [1516543380000, 0.0163, 0.0163, 0.01626401, 0.01629999, 6.43261363], [1516543440000, 0.01629999, 0.01635, 0.01629999, 0.01635, 29.91538952], [1516543500000, 0.01629999, 0.0163559, 0.01626401, 0.01635048, 10.34973546], [1516543560000, 0.01626402, 0.01626402, 0.01626402, 0.01626402, 10.62411781], [1516543620000, 0.01626401, 0.0163505, 0.01626401, 0.01626401, 5.27711758], [1516543680000, 0.01626401, 0.01626401, 0.01626401, 0.01626401, 40.57340085], [1516543740000, 0.016265, 0.0163559, 0.016265, 0.01627411, 19.88655968], [1516543800000, 0.01627411, 0.01634035, 0.01627411, 0.01634035, 43.92789626], [1516543860000, 0.01629551, 0.01634033, 0.01626401, 0.01634033, 16.19782798], [1516543920000, 0.01629551, 0.01634033, 0.01629551, 0.01629551, 4.33504402], [1516543980000, 0.0163, 0.0163, 0.0163, 0.0163, 0.54146049], [1516544040000, 0.01629551, 0.01629551, 0.01626401, 0.01629551, 3.68], [1516544100000, 0.0163, 0.0163559, 0.01629551, 0.01629551, 7.31970293], [1516544160000, 0.0163559, 0.0163559, 0.01626401, 0.0163559, 3.37143153], [1516544220000, 0.01629553, 0.01635589, 0.01629553, 0.01629554, 10.24208519], [1516544280000, 0.01635589, 0.01635589, 0.01629552, 0.01635589, 12.56295306], [1516544340000, 0.01635589, 0.01635589, 0.01635001, 0.01635001, 7.76131454], [1516544400000, 0.01635002, 0.01639768, 0.01635002, 0.01639768, 56.99202655], [1516544460000, 0.01635001, 0.01639768, 0.01630601, 0.01639768, 32.54341449], [1516544520000, 0.01639768, 0.01639768, 0.01629552, 0.01629553, 17.50822114], [1516544580000, 0.01629564, 0.01639768, 0.01629554, 0.01639768, 31.70750081], [1516544640000, 0.01639735, 0.01639735, 0.01629553, 0.01629553, 1.82076343], [1516544700000, 0.01639733, 0.01639768, 0.01639708, 0.01639711, 5.89243507], [1516544760000, 0.01629554, 0.0162956, 0.01629553, 0.01629553, 4.13937565], [1516544820000, 0.01638599, 0.01638631, 0.01629552, 0.01629552, 20.83093162], [1516544880000, 0.01629552, 0.0163863, 0.01629552, 0.01629552, 5.592715], [1516544940000, 0.01629562, 0.01635956, 0.01629552, 0.01635956, 33.52322005], [1516545000000, 0.01635956, 0.01639729, 0.01629552, 0.01639729, 17.84419862], [1516545060000, 0.01629552, 0.01639733, 0.01629552, 0.01639733, 1.90737616], [1516545120000, 0.016387, 0.01639731, 0.01629555, 0.0163553, 11.80565736], [1516545180000, 0.0163553, 0.01644918, 0.0163553, 0.0163553, 69.1952763], [1516545240000, 0.01629563, 0.01629563, 0.01629563, 0.01629563, 2.00665523], [1516545300000, 0.0163553, 0.0163553, 0.01629563, 0.01629563, 4.53415659], [1516545360000, 0.0163553, 0.0163553, 0.0163553, 0.0163553, 0.30243358], [1516545420000, 0.01635528, 0.01635529, 0.01629559, 0.01629559, 9.87301093], [1516545480000, 0.01629559, 0.016351, 0.01629559, 0.016351, 31.133269], [1516545540000, 0.01629555, 0.0163553, 0.01629555, 0.016351, 13.77709727], [1516545600000, 0.01635101, 0.0163553, 0.01635101, 0.01635101, 3.83457575], [1516545660000, 0.016351, 0.01635529, 0.016351, 0.01635529, 13.41828315], [1516545720000, 0.01635529, 0.0163553, 0.0163501, 0.0163501, 76.19285336], [1516545780000, 0.01635528, 0.01635529, 0.01635011, 0.01635011, 29.29929558], [1516545840000, 0.01635011, 0.0163529, 0.01635011, 0.01635011, 18.16132796], [1516545900000, 0.0163528, 0.0163529, 0.0163528, 0.0163529, 22.19682898], [1516545960000, 0.0163528, 0.0163529, 0.01627401, 0.01628711, 73.73061761], [1516546020000, 0.01627401, 0.01629555, 0.01627401, 0.01629555, 12.7263756], [1516546080000, 0.01629555, 0.01631, 0.01627402, 0.01631, 8.30728513], [1516546140000, 0.01631, 0.01635529, 0.01627402, 0.01627911, 38.25266991], [1516546200000, 0.01635529, 0.01635529, 0.01631, 0.01635529, 66.5917191], [1516546260000, 0.01635529, 0.01635529, 0.01627401, 0.01635529, 12.94025175], [1516546320000, 0.01627401, 0.016361, 0.01626401, 0.01626401, 65.82187251], [1516546380000, 0.01626698, 0.01639, 0.01625, 0.01625001, 54.67076274], [1516546440000, 0.01626401, 0.01637988, 0.01624002, 0.01626401, 30.04018891], [1516546500000, 0.01626401, 0.01626401, 0.01621609, 0.01626401, 13.07125402], [1516546560000, 0.01626401, 0.01626401, 0.01621823, 0.01626401, 3.26033826], [1516546620000, 0.01622401, 0.01626401, 0.01622401, 0.01626401, 8.0269962], [1516546680000, 0.01626401, 0.01633, 0.01622402, 0.01633, 11.00854422], [1516546740000, 0.01624112, 0.01633, 0.01624112, 0.01627701, 13.6793382], [1516546800000, 0.01633, 0.01634, 0.01627705, 0.01634, 11.48452824], [1516546860000, 0.016286, 0.0163999, 0.016286, 0.016368, 21.73019473], [1516546920000, 0.0164, 0.01641415, 0.016368, 0.016368, 15.41805904], [1516546980000, 0.01635199, 0.01640001, 0.01635199, 0.01640001, 9.13646784], [1516547040000, 0.01640001, 0.01640001, 0.01634, 0.01634, 1.5427084], [1516547100000, 0.01634, 0.016354, 0.01627416, 0.016354, 23.37571225], [1516547160000, 0.01629416, 0.016354, 0.01626698, 0.016354, 9.68366674], [1516547220000, 0.01626698, 0.016354, 0.01626698, 0.01626699, 18.91231593], [1516547280000, 0.016354, 0.016354, 0.01626698, 0.01626698, 1.14139069], [1516547340000, 0.01626698, 0.01639058, 0.01626698, 0.016354, 5.63929932], [1516547400000, 0.0163907, 0.0163907, 0.016354, 0.0163907, 8.33004786], [1516547460000, 0.0163904, 0.0163904, 0.016354, 0.016354, 6.47362509], [1516547520000, 0.01635401, 0.01637036, 0.0162807, 0.0162807, 10.49984841], [1516547580000, 0.01628071, 0.0163907, 0.01628071, 0.0163907, 8.77338489], [1516547640000, 0.0163, 0.0163907, 0.0162807, 0.01639066, 3.99101379], [1516547700000, 0.01639036, 0.01639063, 0.0162807, 0.016368, 28.56950223], [1516547760000, 0.01628079, 0.01628079, 0.01626699, 0.01627571, 54.9915283], [1516547820000, 0.0162807, 0.01628601, 0.0162807, 0.01628601, 0.41925222], [1516547880000, 0.01628601, 0.01636133, 0.01628181, 0.01635555, 28.19199962], [1516547940000, 0.01635555, 0.01635555, 0.01631073, 0.01635554, 3.31699644], [1516548000000, 0.01631074, 0.01635545, 0.01631074, 0.01634, 4.37014263], [1516548060000, 0.01631501, 0.01635555, 0.01631501, 0.016335, 42.05259722], [1516548120000, 0.016335, 0.016384, 0.016316, 0.016335, 45.06179623], [1516548180000, 0.016335, 0.016335, 0.01631601, 0.01633499, 2.52667353], [1516548240000, 0.01633333, 0.01633333, 0.01633333, 0.01633333, 6.52438046], [1516548300000, 0.01633333, 0.01633499, 0.016326, 0.016326, 6.89017354], [1516548360000, 0.01632101, 0.016335, 0.01632101, 0.016335, 4.53702729], [1516548420000, 0.016335, 0.0163882, 0.01631602, 0.0163882, 17.42391988], [1516548480000, 0.0163882, 0.01639, 0.016388, 0.01639, 10.06323699], [1516548540000, 0.0163897, 0.01639, 0.0163882, 0.0163882, 5.87382429], [1516548600000, 0.0163882, 0.0164, 0.016388, 0.016388, 18.01495008], [1516548660000, 0.0164, 0.01645, 0.0164, 0.01642, 38.01450265], [1516548720000, 0.01645054, 0.01646736, 0.01642, 0.01642, 93.07873481], [1516548780000, 0.0164, 0.01646735, 0.016388, 0.01640636, 85.23534759], [1516548840000, 0.01638801, 0.01638801, 0.016388, 0.016388, 35.23819987], [1516548900000, 0.01638801, 0.0164505, 0.016388, 0.016388, 10.92867769], [1516548960000, 0.016388, 0.016388, 0.016388, 0.016388, 8.39041403], [1516549020000, 0.016388, 0.016388, 0.01631732, 0.01635, 3.58821631], [1516549080000, 0.01635, 0.01635, 0.016317, 0.016317, 3.70002764], [1516549140000, 0.01635, 0.0163588, 0.016345, 0.0163588, 32.95181574], [1516549200000, 0.0163588, 0.016388, 0.0163588, 0.0163588, 14.586075], [1516549260000, 0.0163588, 0.0163588, 0.01628604, 0.01630641, 65.72585051], [1516549320000, 0.016298, 0.016298, 0.016298, 0.016298, 1.07913743], [1516549380000, 0.0163588, 0.0163588, 0.01628172, 0.01629, 38.09930193], [1516549440000, 0.01628253, 0.0164492, 0.01628172, 0.01639998, 197.17136092], [1516549500000, 0.01639969, 0.01639996, 0.016267, 0.01639499, 92.47566973], [1516549560000, 0.01637999, 0.01639977, 0.01637999, 0.01639498, 861.73153973], [1516549620000, 0.01639497, 0.01639498, 0.01628103, 0.01632881, 55.00680572], [1516549680000, 0.01632963, 0.01639, 0.01632963, 0.016389, 3.01033298], [1516549740000, 0.01639, 0.01639498, 0.01632963, 0.01632963, 25.041245], [1516549800000, 0.01639498, 0.01639498, 0.01632963, 0.01639497, 8.45442812], [1516549860000, 0.0163949, 0.01639498, 0.01632963, 0.01639498, 27.58509923], [1516549920000, 0.01639498, 0.01639498, 0.01637861, 0.01639491, 2.80733455], [1516549980000, 0.01637491, 0.01639491, 0.01629111, 0.01639491, 5.01323469], [1516550040000, 0.01639497, 0.01639498, 0.01639491, 0.01639491, 5.61236716], [1516550100000, 0.01639491, 0.01642726, 0.016296, 0.01642721, 16.27046341], [1516550160000, 0.01639491, 0.01642716, 0.01629405, 0.01642716, 4.74738948], [1516550220000, 0.01639491, 0.01642729, 0.01629901, 0.01630717, 45.99213842], [1516550280000, 0.01630708, 0.01630711, 0.01630708, 0.01630709, 11.45708524], [1516550340000, 0.01630709, 0.01630959, 0.01630709, 0.01630959, 8.87622024], [1516550400000, 0.0163834, 0.01642295, 0.0163834, 0.01642295, 8.56536167], [1516550460000, 0.01642295, 0.016434, 0.01633249, 0.01633249, 28.89827606], [1516550520000, 0.01636706, 0.0164492, 0.01633249, 0.01636706, 45.89276426], [1516550580000, 0.01633249, 0.016424, 0.01633249, 0.016424, 3.95343237], [1516550640000, 0.0163725, 0.0163725, 0.01633249, 0.01633249, 10.60851893], [1516550700000, 0.01633249, 0.016363, 0.01628103, 0.01636297, 47.06324852], [1516550760000, 0.01636297, 0.01636297, 0.01626698, 0.01626698, 6.71527171], [1516550820000, 0.01633249, 0.0163325, 0.01625, 0.01625, 20.84715059], [1516550880000, 0.01636288, 0.01636288, 0.01625, 0.0163325, 11.07158558], [1516550940000, 0.0163325, 0.0163325, 0.01633102, 0.01633102, 11.20812272], [1516551000000, 0.01625, 0.01633102, 0.01625, 0.01633097, 115.11926421], [1516551060000, 0.01625, 0.01633098, 0.01625, 0.01625, 23.26619627], [1516551120000, 0.016269, 0.016269, 0.01625, 0.016269, 6.66950039], [1516551180000, 0.01632092, 0.01632872, 0.016269, 0.01631904, 3.29328801], [1516551240000, 0.01631904, 0.01633098, 0.0163, 0.0163, 13.42914025], [1516551300000, 0.0163, 0.016348, 0.016269, 0.0163, 52.32106548], [1516551360000, 0.0163, 0.01632098, 0.01621609, 0.01626901, 45.408096], [1516551420000, 0.01626901, 0.01626901, 0.01623456, 0.01623456, 4.50685019], [1516551480000, 0.01623456, 0.01629998, 0.01621609, 0.01621609, 13.13198095], [1516551540000, 0.01621609, 0.01629998, 0.01621609, 0.01621609, 11.19252716], [1516551600000, 0.016218, 0.01625998, 0.01621609, 0.01625998, 33.23369318], [1516551660000, 0.01625996, 0.01625998, 0.01622, 0.01625998, 12.68954167], [1516551720000, 0.01629998, 0.01633098, 0.01629998, 0.0163, 14.10264853], [1516551780000, 0.01633098, 0.01636278, 0.01633098, 0.01636278, 10.36890273], [1516551840000, 0.01636278, 0.01636279, 0.01633098, 0.01633098, 23.05347161], [1516551900000, 0.01633098, 0.01636279, 0.0163, 0.0163, 17.73851417], [1516551960000, 0.0163, 0.01635999, 0.01622201, 0.01629998, 15.35485816], [1516552020000, 0.01626999, 0.01633999, 0.01622201, 0.01622201, 61.92914883], [1516552080000, 0.01622201, 0.01626999, 0.01622, 0.01626999, 17.50313522], [1516552140000, 0.0162225, 0.01626999, 0.016222, 0.0162225, 11.54351514], [1516552200000, 0.0162225, 0.0162225, 0.01622, 0.0162225, 8.01322399], [1516552260000, 0.0162225, 0.01626999, 0.01622, 0.01626999, 51.28018247], [1516552320000, 0.01622076, 0.01626999, 0.01621801, 0.01621802, 71.54379232], [1516552380000, 0.01632492, 0.01632492, 0.01623111, 0.01632492, 3.57258124], [1516552440000, 0.01632492, 0.01636279, 0.01632492, 0.01635, 64.69029057], [1516552500000, 0.01636279, 0.01641275, 0.01635, 0.01641275, 54.84666058], [1516552560000, 0.01641275, 0.01643598, 0.01635, 0.01641274, 18.58076505], [1516552620000, 0.01643598, 0.01644, 0.01641274, 0.01641274, 43.37353565], [1516552680000, 0.01641274, 0.01645, 0.01641274, 0.0164418, 51.37921097], [1516552740000, 0.0164419, 0.0164505, 0.0164419, 0.0164505, 6.57903524], [1516552800000, 0.0164505, 0.0164555, 0.01645, 0.01645, 15.57258798], [1516552860000, 0.01645, 0.01655939, 0.01645, 0.01645, 248.42795974], [1516552920000, 0.01648783, 0.01648783, 0.01645, 0.01647373, 11.51601581], [1516552980000, 0.01645017, 0.01647378, 0.01645017, 0.01647373, 207.38477279], [1516553040000, 0.01647373, 0.016502, 0.01647373, 0.01647374, 35.064489], [1516553100000, 0.0165019, 0.0165019, 0.01647373, 0.01647374, 55.50943645], [1516553160000, 0.01647374, 0.01652497, 0.01647374, 0.01647374, 85.62715125], [1516553220000, 0.01652419, 0.01652419, 0.01647374, 0.01647374, 40.14262545], [1516553280000, 0.01647374, 0.0165, 0.01645015, 0.01645015, 25.70486342], [1516553340000, 0.01645015, 0.01647524, 0.01645, 0.01645, 44.71649488], [1516553400000, 0.0164418, 0.0164418, 0.01637496, 0.01641556, 17.71349832], [1516553460000, 0.01644098, 0.01644098, 0.01638286, 0.01638286, 1.71336436], [1516553520000, 0.01638286, 0.01638286, 0.0163515, 0.01637496, 1.97900411], [1516553580000, 0.01635151, 0.01637496, 0.0163515, 0.01635157, 2.35004874], [1516553640000, 0.01635158, 0.01638279, 0.01635158, 0.01638279, 0.9829646], [1516553700000, 0.01635158, 0.01638279, 0.01635158, 0.01638279, 6.00096588], [1516553760000, 0.01635159, 0.01642576, 0.01635159, 0.01638286, 23.94828688], [1516553820000, 0.01642576, 0.01644098, 0.01642576, 0.01642576, 10.4597257], [1516553880000, 0.01642576, 0.01652593, 0.01638286, 0.01642576, 32.27650509], [1516553940000, 0.01638288, 0.01642576, 0.01638288, 0.01642576, 3.238275], [1516554000000, 0.01642576, 0.01650979, 0.01642576, 0.01650978, 10.32519967], [1516554060000, 0.01650978, 0.01650978, 0.01638288, 0.016383, 25.24814814], [1516554120000, 0.01642576, 0.01642576, 0.016383, 0.016383, 18.98736849], [1516554180000, 0.01642576, 0.01642576, 0.016383, 0.01642576, 7.6778581], [1516554240000, 0.01642576, 0.01642576, 0.016388, 0.01642576, 5.94104984], [1516554300000, 0.01638321, 0.01642576, 0.0163832, 0.01642576, 6.158079], [1516554360000, 0.016388, 0.01642576, 0.016388, 0.01641, 53.45506935], [1516554420000, 0.01641, 0.01642657, 0.01638322, 0.0164, 171.37530673], [1516554480000, 0.0164, 0.0164, 0.01638322, 0.0164, 40.51325521], [1516554540000, 0.0164, 0.0164, 0.01638324, 0.0164, 52.54307866], [1516554600000, 0.0164, 0.0164, 0.0163849, 0.0164, 219.40328414], [1516554660000, 0.0164, 0.01642575, 0.01638492, 0.01638494, 46.06121627], [1516554720000, 0.01638495, 0.01649999, 0.01638495, 0.01640935, 56.14084739], [1516554780000, 0.01649987, 0.01649987, 0.01642574, 0.01642574, 1.39960967], [1516554840000, 0.01640935, 0.01646679, 0.0164, 0.01642573, 2.66045036], [1516554900000, 0.0164, 0.01640388, 0.01638489, 0.01638489, 32.70793188], [1516554960000, 0.01638489, 0.01638489, 0.0163832, 0.016384, 37.56289308], [1516555020000, 0.016384, 0.0164, 0.016384, 0.016384, 12.84000973], [1516555080000, 0.016384, 0.01639, 0.016384, 0.01638482, 6.75340984], [1516555140000, 0.01638482, 0.0164, 0.01638482, 0.0164, 4.93245467], [1516555200000, 0.0164, 0.01640934, 0.0163832, 0.01640934, 29.73726234], [1516555260000, 0.01638301, 0.01638301, 0.016383, 0.016383, 10.2], [1516555320000, 0.016385, 0.01647145, 0.016383, 0.01640146, 20.43656837], [1516555380000, 0.01640146, 0.01649987, 0.01640146, 0.01640925, 82.98993967], [1516555440000, 0.01649797, 0.01649987, 0.01640148, 0.01649987, 30.18241414], [1516555500000, 0.01649797, 0.01649797, 0.01649797, 0.01649797, 51.32447501], [1516555560000, 0.01649796, 0.01649796, 0.01640149, 0.0164015, 7.88399201], [1516555620000, 0.016485, 0.016485, 0.01640162, 0.01640162, 7.75196527], [1516555680000, 0.01640175, 0.01648344, 0.01640175, 0.01646, 35.75487533], [1516555740000, 0.01645998, 0.01646, 0.01640162, 0.01640162, 82.93242877], [1516555800000, 0.01640163, 0.01648342, 0.01640163, 0.01648342, 53.0779608], [1516555860000, 0.01648342, 0.01648342, 0.01648342, 0.01648342, 0.56888467], [1516555920000, 0.01648, 0.01648, 0.01640703, 0.01645701, 3.10005396], [1516555980000, 0.01645701, 0.01645701, 0.01640713, 0.01645701, 248.00238971], [1516556040000, 0.01641201, 0.01649987, 0.01641201, 0.01649797, 301.97392297], [1516556100000, 0.01649797, 0.0165, 0.01649797, 0.0165, 25.05316161], [1516556160000, 0.0165, 0.01650978, 0.01649797, 0.01649797, 13.64439443], [1516556220000, 0.01649798, 0.01650987, 0.01649797, 0.01650987, 3.10371138], [1516556280000, 0.01650987, 0.01653, 0.01650987, 0.01653, 1.92199125], [1516556340000, 0.01653, 0.0165648, 0.01653, 0.01653001, 33.47743433], [1516556400000, 0.01653, 0.016535, 0.01653, 0.016533, 14.13295665], [1516556460000, 0.01654331, 0.01657, 0.01653001, 0.0165648, 13.50561487], [1516556520000, 0.0165648, 0.0166, 0.01653001, 0.01659998, 73.8647358], [1516556580000, 0.01659998, 0.0166, 0.01659998, 0.01659998, 5.35204656], [1516556640000, 0.01659998, 0.0166, 0.01649804, 0.01649809, 15.53173635], [1516556700000, 0.01649831, 0.01659998, 0.01649831, 0.01652001, 28.6162713], [1516556760000, 0.01652022, 0.0165999, 0.01652022, 0.0165999, 3.58842951], [1516556820000, 0.01655001, 0.01663425, 0.01655, 0.0165999, 81.43437251], [1516556880000, 0.0165999, 0.01663855, 0.01655013, 0.01655013, 77.19597314], [1516556940000, 0.01655014, 0.01663425, 0.01655014, 0.0166342, 9.9718056], [1516557000000, 0.0166342, 0.01663425, 0.0166342, 0.01663421, 13.63633836], [1516557060000, 0.01663421, 0.01663855, 0.01663421, 0.01663425, 8.10698491], [1516557120000, 0.01663855, 0.016648, 0.0166342, 0.0166342, 19.34480146], [1516557180000, 0.01660638, 0.01660638, 0.0165502, 0.0165502, 1.93795982], [1516557240000, 0.01656766, 0.01664, 0.01655022, 0.01655022, 16.01040005], [1516557300000, 0.01655023, 0.01655023, 0.01655021, 0.01655021, 1.10253745], [1516557360000, 0.01655021, 0.01655022, 0.01655021, 0.01655021, 61.47993084], [1516557420000, 0.01655022, 0.016648, 0.01655022, 0.01656765, 12.57482323], [1516557480000, 0.016648, 0.016648, 0.01656517, 0.0165842, 4.28504518], [1516557540000, 0.01656517, 0.01658421, 0.0165502, 0.0165502, 44.43820502], [1516557600000, 0.01658421, 0.01664816, 0.01655022, 0.01655022, 66.02452104], [1516557660000, 0.01664814, 0.01664814, 0.0166, 0.01664814, 1.38841668], [1516557720000, 0.0166, 0.0166, 0.01655022, 0.01655022, 19.20887122], [1516557780000, 0.01655022, 0.01664815, 0.01655022, 0.01655022, 33.85413878], [1516557840000, 0.01655022, 0.01655022, 0.0165502, 0.01655022, 76.83990738], [1516557900000, 0.01655022, 0.01655022, 0.0165502, 0.0165502, 10.16675205], [1516557960000, 0.01655011, 0.01655022, 0.01655011, 0.01655011, 52.51109989], [1516558020000, 0.01655022, 0.01655022, 0.01649885, 0.01650401, 92.00236277], [1516558080000, 0.01655011, 0.01655022, 0.01649886, 0.01649886, 113.35867816], [1516558140000, 0.01649887, 0.01655022, 0.01649887, 0.01649893, 41.72607769], [1516558200000, 0.01655022, 0.0166, 0.01649903, 0.01659999, 18.46048105], [1516558260000, 0.016504, 0.01650412, 0.01650004, 0.01650004, 123.80800842], [1516558320000, 0.01650004, 0.01650413, 0.01650003, 0.01650413, 11.59514091], [1516558380000, 0.01659998, 0.01659999, 0.01650413, 0.01659999, 8.57118596], [1516558440000, 0.016599, 0.016599, 0.01650412, 0.01650412, 3.09382571], [1516558500000, 0.01650003, 0.01659, 0.01649893, 0.01649893, 44.97616869], [1516558560000, 0.01649893, 0.01649893, 0.016498, 0.016498, 59.08879321], [1516558620000, 0.01648582, 0.01649893, 0.0164423, 0.01644239, 31.66513113], [1516558680000, 0.01649893, 0.01649893, 0.01644247, 0.0164426, 10.78519984], [1516558740000, 0.01649893, 0.0165845, 0.01644402, 0.01644444, 7.23910912], [1516558800000, 0.01649893, 0.01658446, 0.01644408, 0.0165, 9.41402913], [1516558860000, 0.0165, 0.01658, 0.0165, 0.0165, 64.20967683], [1516558920000, 0.0165, 0.01657, 0.0165, 0.01650001, 11.70684642], [1516558980000, 0.01655, 0.01655, 0.01648005, 0.01648005, 6.51855117], [1516559040000, 0.0165, 0.01655, 0.01648005, 0.01648005, 14.56392172], [1516559100000, 0.01655, 0.01655022, 0.01655, 0.01655022, 22.29148432], [1516559160000, 0.01655022, 0.01655022, 0.01648021, 0.01655022, 10.43544189], [1516559220000, 0.016481, 0.01659999, 0.01648021, 0.01648022, 18.03452112], [1516559280000, 0.01652, 0.01653, 0.01648022, 0.01653, 29.04794968], [1516559340000, 0.01653, 0.01663987, 0.01648022, 0.01663987, 121.05101532], [1516559400000, 0.01653, 0.01665, 0.01648038, 0.01655044, 52.84605601], [1516559460000, 0.01648112, 0.01662974, 0.01648112, 0.01655044, 16.90829287], [1516559520000, 0.01655044, 0.01655044, 0.01655044, 0.01655044, 3.63246266], [1516559580000, 0.0166, 0.0166, 0.01655044, 0.01655045, 12.63803933], [1516559640000, 0.01655045, 0.01655045, 0.01655044, 0.01655044, 22.57291888], [1516559700000, 0.01655044, 0.01655045, 0.01655044, 0.01655045, 55.03878935], [1516559760000, 0.01655045, 0.01664386, 0.01650042, 0.01655, 104.46823405], [1516559820000, 0.01664376, 0.01665202, 0.01655, 0.01665202, 57.39755402], [1516559880000, 0.0166, 0.0166, 0.01650048, 0.0166, 19.10217867], [1516559940000, 0.0166, 0.0166, 0.0165, 0.0166, 14.3314433], [1516560000000, 0.0166, 0.01663365, 0.0166, 0.01663365, 13.09232591], [1516560060000, 0.01663365, 0.01663365, 0.016632, 0.01663365, 2.33618348], [1516560120000, 0.0166, 0.01663366, 0.01652, 0.01652001, 53.40292975], [1516560180000, 0.01652, 0.01655, 0.01650045, 0.01650047, 24.4990622], [1516560240000, 0.01655, 0.01655, 0.01650047, 0.01655, 3.73638911], [1516560300000, 0.01655, 0.0165999, 0.01655, 0.0165999, 3.14950234], [1516560360000, 0.01655, 0.0165999, 0.01650078, 0.01650078, 17.29681282], [1516560420000, 0.01657529, 0.0165999, 0.01657529, 0.01657529, 20.53947307], [1516560480000, 0.01657529, 0.01659523, 0.01657529, 0.01659523, 5.40035001], [1516560540000, 0.01650078, 0.01659523, 0.01650078, 0.01659523, 8.47274149], [1516560600000, 0.01659523, 0.01659523, 0.0165949, 0.01659523, 22.09690742], [1516560660000, 0.01659523, 0.0165999, 0.01650101, 0.01651234, 14.91726616], [1516560720000, 0.01651234, 0.01659989, 0.01650101, 0.01653251, 17.50531023], [1516560780000, 0.01653251, 0.01666, 0.01653251, 0.01666, 19.48713602], [1516560840000, 0.01665903, 0.01665903, 0.01651498, 0.01663111, 5.75720835], [1516560900000, 0.01663111, 0.01663111, 0.0166299, 0.01662998, 2.0494916], [1516560960000, 0.01651498, 0.01663, 0.01651457, 0.01652, 4.47614731], [1516561020000, 0.01651457, 0.01653, 0.01651457, 0.01653, 5.08587357], [1516561080000, 0.01653, 0.01660518, 0.01651234, 0.01659999, 25.75784551], [1516561140000, 0.01659999, 0.01659999, 0.01651234, 0.01651234, 6.3931689], [1516561200000, 0.01651234, 0.01659998, 0.01651234, 0.01651234, 18.56952382], [1516561260000, 0.01651234, 0.0165999, 0.016501, 0.01656202, 9.40134604], [1516561320000, 0.01656202, 0.01656202, 0.016502, 0.01651, 12.11126474], [1516561380000, 0.01651, 0.0166311, 0.01650101, 0.01650101, 49.02518312], [1516561440000, 0.01650102, 0.0166311, 0.01650078, 0.01659101, 6.27425212], [1516561560000, 0.01659101, 0.01659101, 0.016528, 0.016528, 3.78104903], [1516561620000, 0.016501, 0.01658366, 0.016501, 0.01658366, 5.65873732], [1516561680000, 0.01658366, 0.01658366, 0.01656202, 0.01656202, 8.6884962], [1516561740000, 0.01658364, 0.01658366, 0.01656202, 0.01658364, 10.83629022], [1516561800000, 0.01658364, 0.01661, 0.01656202, 0.01661, 50.89582855], [1516561860000, 0.01663, 0.01663, 0.01656202, 0.01656254, 12.36323955], [1516561920000, 0.01656202, 0.0166311, 0.01656202, 0.01663107, 30.89382942], [1516561980000, 0.01656254, 0.01663107, 0.01653213, 0.01653213, 3.37048976], [1516562040000, 0.01663105, 0.01663105, 0.01652202, 0.01652203, 3.19737183], [1516562100000, 0.01652202, 0.0166595, 0.01650112, 0.0165012, 36.28093624], [1516562160000, 0.01652204, 0.01655, 0.01652204, 0.01652945, 11.49637548], [1516562220000, 0.01652946, 0.0166595, 0.01652946, 0.01665947, 64.53865268], [1516562280000, 0.01652947, 0.0166, 0.01650076, 0.0166, 55.69803431], [1516562340000, 0.01659999, 0.0166, 0.01659999, 0.0166, 1.48593713], [1516562400000, 0.01659999, 0.01663924, 0.01650091, 0.01652211, 13.21158481], [1516562460000, 0.01652216, 0.01652218, 0.01652216, 0.01652217, 15.70102066], [1516562520000, 0.01652943, 0.01658942, 0.01652943, 0.01653701, 14.37790957], [1516562580000, 0.01653701, 0.01660529, 0.01653, 0.01660529, 17.58236696], [1516562640000, 0.016625, 0.01663923, 0.016601, 0.016601, 10.35882632], [1516562700000, 0.016625, 0.016625, 0.016601, 0.016625, 32.67943166], [1516562760000, 0.016625, 0.01663924, 0.016625, 0.01663924, 29.94231118], [1516562820000, 0.01663924, 0.01664816, 0.01663924, 0.01664816, 1.89791618], [1516562880000, 0.01664817, 0.01664818, 0.01664817, 0.01664818, 8.37489781], [1516562940000, 0.01664818, 0.01664818, 0.01664816, 0.01664816, 28.33790126], [1516563000000, 0.01663924, 0.01664818, 0.01663924, 0.01663924, 10.69912228], [1516563060000, 0.0166437, 0.0166595, 0.01663924, 0.01664816, 14.49304289], [1516563120000, 0.0166437, 0.01666666, 0.01663924, 0.01666534, 61.01650414], [1516563180000, 0.01666534, 0.01666535, 0.01666534, 0.01666534, 47.11126844], [1516563240000, 0.01666534, 0.01666535, 0.01666534, 0.01666534, 8.16492596], [1516563300000, 0.01666535, 0.01666535, 0.01666534, 0.01666534, 32.3628621], [1516563360000, 0.01666534, 0.01666535, 0.016661, 0.016661, 11.42947311], [1516563420000, 0.01663924, 0.01663924, 0.01663924, 0.01663924, 11.63577417], [1516563480000, 0.01663924, 0.01663924, 0.016601, 0.016601, 4.9977745], [1516563540000, 0.01665665, 0.01666535, 0.01654001, 0.01654978, 73.0328878], [1516563600000, 0.01654978, 0.01666535, 0.01654, 0.01666535, 43.579772], [1516563660000, 0.01666534, 0.01666535, 0.01666534, 0.01666534, 14.23870566], [1516563720000, 0.01666502, 0.01666502, 0.01654025, 0.01666502, 96.09239434], [1516563780000, 0.0165404, 0.01666006, 0.0165404, 0.01654051, 4.77160831], [1516563840000, 0.01666005, 0.01666006, 0.01656, 0.01666006, 7.29151985], [1516563900000, 0.01663035, 0.016665, 0.01656101, 0.01656101, 128.40212755], [1516563960000, 0.01665, 0.01666501, 0.01656101, 0.0166, 10.81653119], [1516564020000, 0.0166, 0.01666502, 0.01657, 0.01666502, 32.8325462], [1516564080000, 0.01666501, 0.01666501, 0.01657002, 0.01657002, 1.45548977], [1516564140000, 0.01666501, 0.01666501, 0.01657002, 0.01657002, 18.39379344], [1516564200000, 0.01657003, 0.01664575, 0.01657002, 0.01664575, 18.72773776], [1516564260000, 0.01664575, 0.01664575, 0.01657004, 0.01657006, 10.63364297], [1516564320000, 0.01664575, 0.01664575, 0.01664575, 0.01664575, 4.41951652], [1516564380000, 0.01664575, 0.016665, 0.01658749, 0.01664575, 23.89175464], [1516564440000, 0.01664574, 0.01664575, 0.01658749, 0.01664525, 12.44653429], [1516564500000, 0.01658749, 0.01664525, 0.01658749, 0.01658749, 47.24180527], [1516564560000, 0.01658749, 0.01660749, 0.01657002, 0.0166, 43.88877825], [1516564620000, 0.0166, 0.0166, 0.01657002, 0.0166, 44.47974982], [1516564680000, 0.01657002, 0.0166, 0.01654022, 0.01657002, 10.183002], [1516564740000, 0.01659999, 0.01659999, 0.01657002, 0.01659999, 7.98077735], [1516564800000, 0.01659999, 0.01659999, 0.01655, 0.01659998, 25.41319359], [1516564860000, 0.01659998, 0.01666, 0.01659998, 0.01666, 87.83102341], [1516564920000, 0.01666, 0.0166601, 0.01666, 0.01666, 21.00215766], [1516564980000, 0.01664523, 0.01664523, 0.0166, 0.0166, 4.64726964], [1516565040000, 0.0166, 0.0166, 0.01655723, 0.0166, 76.88618005], [1516565100000, 0.0166, 0.0166, 0.01655723, 0.0166, 234.51741929], [1516565160000, 0.0166284, 0.01666, 0.0166, 0.01665999, 23.21163658], [1516565220000, 0.01665999, 0.016665, 0.0166345, 0.0166345, 25.3929993], [1516565280000, 0.0166345, 0.01666, 0.0166345, 0.0166345, 2.16], [1516565340000, 0.01665999, 0.01665999, 0.0166345, 0.0166345, 1.95147169], [1516565400000, 0.0166345, 0.01666498, 0.0166345, 0.0166345, 5.48229915], [1516565460000, 0.01666, 0.016662, 0.01663455, 0.016662, 35.77984457], [1516565520000, 0.01666001, 0.01666498, 0.01663455, 0.01663455, 6.1981964], [1516565580000, 0.016655, 0.01665998, 0.01663455, 0.01663455, 44.79445877], [1516565640000, 0.016652, 0.01665998, 0.01663455, 0.01663455, 44.90044469], [1516565700000, 0.01664999, 0.016655, 0.01660083, 0.016654, 60.00423912], [1516565760000, 0.01660083, 0.0166155, 0.01660083, 0.0166155, 4.22154146], [1516565820000, 0.0166155, 0.0166155, 0.01660083, 0.01660083, 4.6316472], [1516565880000, 0.0166155, 0.01663, 0.01660083, 0.01660083, 12.71783358], [1516565940000, 0.01660083, 0.016615, 0.01655729, 0.01661, 8.75886369], [1516566000000, 0.01660999, 0.01661, 0.016606, 0.016606, 8.38437379], [1516566060000, 0.01660999, 0.01660999, 0.016565, 0.016565, 0.96217719], [1516566120000, 0.016565, 0.01660974, 0.016565, 0.0166097, 4.28755146], [1516566180000, 0.016565, 0.01663455, 0.016565, 0.01663455, 15.32696067], [1516566240000, 0.01663, 0.01663, 0.0166097, 0.0166296, 18.08673047], [1516566300000, 0.0166296, 0.0166296, 0.0166097, 0.0166097, 3.54481697], [1516566360000, 0.01662959, 0.01664, 0.0166097, 0.0166097, 20.3015381], [1516566420000, 0.0166097, 0.01660974, 0.0166097, 0.01660974, 33.7434189], [1516566480000, 0.01660974, 0.01663093, 0.01660974, 0.01660974, 30.0893206], [1516566540000, 0.01660974, 0.01660974, 0.0166097, 0.0166097, 58.21779137], [1516566600000, 0.01660974, 0.01660974, 0.0166097, 0.01660974, 12.75100342], [1516566660000, 0.01660974, 0.01660974, 0.0166097, 0.01660971, 7.51509915], [1516566720000, 0.01660971, 0.01660974, 0.01660971, 0.01660971, 15.04087378], [1516566780000, 0.01660974, 0.01660974, 0.01660971, 0.01660971, 24.08573013], [1516566840000, 0.01660971, 0.01660971, 0.0166097, 0.0166097, 22.36771641], [1516566900000, 0.016605, 0.0166097, 0.01655723, 0.0166097, 7.24108444], [1516566960000, 0.01655723, 0.0166, 0.01655722, 0.01655722, 10.43929732], [1516567020000, 0.0166, 0.0166, 0.01654017, 0.01654017, 26.06841881], [1516567080000, 0.01655722, 0.0166, 0.01655722, 0.0166, 29.20381697], [1516567140000, 0.01655722, 0.016605, 0.01655722, 0.0166, 22.97584542], [1516567200000, 0.016603, 0.0166097, 0.016603, 0.0166097, 4.66747233], [1516567260000, 0.0166097, 0.0166097, 0.01655722, 0.01660969, 36.68672338], [1516567320000, 0.01655722, 0.01655722, 0.01655722, 0.01655722, 46.33577876], [1516567380000, 0.01655722, 0.01655722, 0.01655722, 0.01655722, 14.19538557], [1516567440000, 0.0166, 0.0166, 0.01655722, 0.01655722, 0.97881724], [1516567500000, 0.0166, 0.01660969, 0.0166, 0.0166, 16.94253307], [1516567560000, 0.01660969, 0.01660969, 0.0166, 0.0166, 11.35748914], [1516567620000, 0.01659659, 0.0166, 0.01655722, 0.01655722, 24.04959671], [1516567680000, 0.01655722, 0.01655722, 0.01654017, 0.01654017, 16.61177305], [1516567740000, 0.01654017, 0.01655722, 0.01652223, 0.01655722, 19.5017567], [1516567800000, 0.016545, 0.016545, 0.01653, 0.016545, 1.54682678], [1516567860000, 0.016545, 0.01655722, 0.016545, 0.01655722, 25.93297521], [1516567920000, 0.01653, 0.01655722, 0.01653, 0.01655722, 17.9988334], [1516567980000, 0.016557, 0.01655722, 0.01653002, 0.016557, 11.18869851], [1516568040000, 0.016557, 0.01655722, 0.01653002, 0.01653008, 85.31337893], [1516568100000, 0.01655722, 0.01662223, 0.01653011, 0.01662223, 58.91431714], [1516568160000, 0.01659747, 0.01659747, 0.01653041, 0.01659747, 10.41198591], [1516568220000, 0.01657087, 0.01664, 0.01653009, 0.01653009, 39.83660369], [1516568280000, 0.01653009, 0.0166, 0.01653009, 0.01658657, 36.28970398], [1516568340000, 0.01658657, 0.01658657, 0.01653009, 0.01658656, 3.35779854], [1516568400000, 0.01653009, 0.01658657, 0.01653009, 0.0165301, 36.49934044], [1516568460000, 0.0165301, 0.01655, 0.01652224, 0.01655, 74.88849316], [1516568520000, 0.016529, 0.01658657, 0.016529, 0.01658657, 3.81477447], [1516568580000, 0.01655, 0.01655, 0.0165319, 0.01654999, 1.64607455], [1516568640000, 0.01654999, 0.01655, 0.0165309, 0.01655, 53.10651647], [1516568700000, 0.01655083, 0.01662153, 0.01653095, 0.01662153, 21.30954637], [1516568760000, 0.01663, 0.01665, 0.01662153, 0.01662153, 21.07512078], [1516568820000, 0.01662153, 0.01665, 0.01662153, 0.01665, 3.33343548], [1516568880000, 0.01665, 0.01665, 0.01662153, 0.016648, 19.45452393], [1516568940000, 0.016648, 0.01665, 0.01662153, 0.01662153, 22.13968727], [1516569000000, 0.01662153, 0.01662153, 0.01653602, 0.01654101, 11.9620412], [1516569060000, 0.01662052, 0.01662052, 0.01653601, 0.01654101, 45.09168428], [1516569120000, 0.01654102, 0.01661052, 0.01654102, 0.0166101, 26.66663744], [1516569180000, 0.0166101, 0.01661052, 0.01654101, 0.01655046, 25.64772524], [1516569240000, 0.01661052, 0.01661052, 0.01653601, 0.01661052, 15.79546799], [1516569300000, 0.01661052, 0.01662052, 0.01661052, 0.01661052, 15.78709718], [1516569360000, 0.01662051, 0.01662052, 0.01661052, 0.01661052, 45.06314254], [1516569420000, 0.01661052, 0.01662052, 0.01653601, 0.01653601, 33.49953832], [1516569480000, 0.0165309, 0.01661, 0.01652217, 0.01652217, 112.23852663], [1516569540000, 0.0165309, 0.0165309, 0.01651396, 0.01651396, 58.04383299], [1516569600000, 0.0165309, 0.0165309, 0.016502, 0.016502, 41.84250876], [1516569660000, 0.0165309, 0.0165309, 0.016502, 0.0165307, 40.80878303], [1516569720000, 0.016502, 0.0165207, 0.016502, 0.01650201, 11.82744513], [1516569780000, 0.0165307, 0.0165509, 0.01650201, 0.0165509, 50.20653559], [1516569840000, 0.0165505, 0.01665898, 0.0165505, 0.01664899, 79.40603541], [1516569900000, 0.01663899, 0.01665895, 0.01652936, 0.01652936, 13.24500701], [1516569960000, 0.01665598, 0.01665598, 0.01652936, 0.01652936, 12.55505087], [1516570020000, 0.01652936, 0.01665898, 0.01652936, 0.01665898, 19.27717236], [1516570080000, 0.01662165, 0.01662165, 0.01652937, 0.01662164, 3.98609933], [1516570140000, 0.01662164, 0.01663072, 0.01662164, 0.01662165, 44.65836761], [1516570200000, 0.0166307, 0.0166307, 0.01652938, 0.0165294, 8.34064432], [1516570260000, 0.01662165, 0.01663069, 0.01652995, 0.01653111, 23.29780788], [1516570320000, 0.01653121, 0.01659496, 0.01653121, 0.01653225, 21.45071771], [1516570380000, 0.016537, 0.01663067, 0.01653132, 0.01663067, 4.32223943], [1516570440000, 0.01653601, 0.01663067, 0.01653601, 0.01663067, 15.06019861], [1516570500000, 0.01653943, 0.01663069, 0.01653943, 0.01663069, 40.98863079], [1516570560000, 0.01663069, 0.01663069, 0.01655955, 0.01663067, 8.53582221], [1516570620000, 0.01656556, 0.01663067, 0.01656556, 0.01656694, 2.44464671], [1516570680000, 0.01656694, 0.01663067, 0.01654, 0.01662354, 29.95409471], [1516570740000, 0.01662354, 0.01663067, 0.01653945, 0.01653945, 15.78790992], [1516570800000, 0.01663067, 0.01663072, 0.01663067, 0.01663067, 55.02346841], [1516570860000, 0.01663067, 0.01663067, 0.01653943, 0.01653943, 6.49889891], [1516570920000, 0.01653944, 0.01662353, 0.01653944, 0.01662353, 29.22937006], [1516570980000, 0.01662353, 0.01662353, 0.01654001, 0.0165401, 33.02332179], [1516571040000, 0.0165401, 0.01661999, 0.0165401, 0.0165401, 7.64857997], [1516571100000, 0.0165401, 0.0166188, 0.0165401, 0.0166188, 23.70536843], [1516571160000, 0.01661879, 0.01661879, 0.01653131, 0.01653944, 27.81695675], [1516571220000, 0.01653944, 0.0166139, 0.01652937, 0.01652937, 58.50493404], [1516571280000, 0.01658004, 0.01658004, 0.01650701, 0.01653704, 69.01243045], [1516571340000, 0.01651202, 0.01653704, 0.01651202, 0.01653704, 4.0779119], [1516571400000, 0.01653704, 0.016615, 0.01653704, 0.016615, 35.15480542], [1516571460000, 0.016615, 0.016616, 0.01661399, 0.016616, 83.37442314], [1516571520000, 0.01653705, 0.016616, 0.01653705, 0.016616, 1.04345506], [1516571580000, 0.016616, 0.016616, 0.01653705, 0.01653705, 2.93463175], [1516571640000, 0.01653705, 0.0166158, 0.01653704, 0.01658169, 13.55407905], [1516571700000, 0.01658169, 0.01661879, 0.01658169, 0.01658169, 15.83287303], [1516571760000, 0.01658169, 0.01661879, 0.01653704, 0.01661879, 8.29688608], [1516571820000, 0.01653704, 0.01662352, 0.01653704, 0.01662, 9.57261649], [1516571880000, 0.01656665, 0.01661704, 0.01656665, 0.01656665, 3.62324039], [1516571940000, 0.01656665, 0.01661, 0.01656665, 0.01656665, 8.13423561], [1516572000000, 0.01661, 0.01666, 0.01661, 0.0166158, 53.24298953], [1516572060000, 0.01665999, 0.01665999, 0.01656665, 0.01656665, 4.52848949], [1516572120000, 0.01656665, 0.01662, 0.01656665, 0.01662, 3.28400343], [1516572180000, 0.01662, 0.01666498, 0.01662, 0.01662, 15.24562089], [1516572240000, 0.01656665, 0.01662, 0.01656665, 0.01656667, 9.6395218], [1516572300000, 0.0166199, 0.01666, 0.01656665, 0.01656666, 19.06930268], [1516572360000, 0.01666, 0.01666, 0.01656665, 0.01656665, 34.42355681], [1516572420000, 0.01666, 0.01666, 0.01656665, 0.01656665, 7.25492566], [1516572480000, 0.01666, 0.01666, 0.01656665, 0.01656665, 22.84949649], [1516572540000, 0.01656665, 0.01656665, 0.01653401, 0.01653401, 35.99765925], [1516572600000, 0.01656606, 0.01665049, 0.01652928, 0.01665049, 65.66784216], [1516572660000, 0.01656665, 0.01665049, 0.0165202, 0.0165208, 24.99305863], [1516572720000, 0.01663655, 0.01663655, 0.01652083, 0.01662519, 41.91226721], [1516572780000, 0.01662519, 0.016632, 0.01653544, 0.01653544, 15.388619], [1516572840000, 0.01653544, 0.01662519, 0.01651332, 0.01662519, 61.67609801], [1516572900000, 0.016625, 0.016625, 0.01651502, 0.01655, 32.76993298], [1516572960000, 0.01655, 0.01661, 0.01651505, 0.01659434, 14.44267175], [1516573020000, 0.01659434, 0.01659434, 0.016502, 0.016502, 13.0985561], [1516573080000, 0.016502, 0.016625, 0.0165, 0.0165606, 55.12950693], [1516573140000, 0.0165606, 0.01662499, 0.01648401, 0.01661, 67.73671536], [1516573200000, 0.01661, 0.01662492, 0.01650001, 0.016502, 9.02488867], [1516573260000, 0.0166, 0.01662, 0.016501, 0.016615, 12.83377783], [1516573320000, 0.01661499, 0.01661499, 0.01650002, 0.01650201, 9.19623243], [1516573380000, 0.01650201, 0.01650201, 0.01650002, 0.01650201, 22.92274451], [1516573440000, 0.01650201, 0.016625, 0.01650002, 0.016625, 66.73141801], [1516573500000, 0.01650008, 0.01662499, 0.01650001, 0.01650001, 173.13311559], [1516573560000, 0.01650001, 0.01663, 0.01650001, 0.01650001, 60.56161978], [1516573620000, 0.01658104, 0.01658104, 0.01650002, 0.01655, 23.10034637], [1516573680000, 0.01658104, 0.01658104, 0.01658104, 0.01658104, 4.80006924], [1516573740000, 0.01658104, 0.01661999, 0.01658104, 0.01658104, 5.55097888], [1516573800000, 0.01658104, 0.01662, 0.01658104, 0.01658104, 7.7616214], [1516573860000, 0.01658104, 0.01658104, 0.01655, 0.01655, 10.20180666], [1516573920000, 0.01655, 0.01658104, 0.01653502, 0.01653502, 4.65076878], [1516573980000, 0.01653502, 0.01658104, 0.01652074, 0.01658, 28.92098425], [1516574040000, 0.01658, 0.01658103, 0.01651, 0.01651, 72.8865285], [1516574100000, 0.01658, 0.01658104, 0.0165001, 0.01658104, 51.50131428], [1516574160000, 0.01658104, 0.01658104, 0.01650011, 0.01658104, 14.63413797], [1516574220000, 0.01658104, 0.01658104, 0.01650011, 0.01658104, 7.83321501], [1516574280000, 0.01658104, 0.01663655, 0.01650011, 0.01650608, 149.53509648], [1516574340000, 0.01650612, 0.01658104, 0.01650612, 0.01650718, 24.33714465], [1516574400000, 0.01656964, 0.01656964, 0.01650696, 0.0165696, 32.28369273], [1516574460000, 0.01650696, 0.0165696, 0.01650696, 0.0165696, 5.21067888], [1516574520000, 0.0165696, 0.01656964, 0.01650695, 0.0165696, 23.02458918], [1516574580000, 0.01656964, 0.01656964, 0.0165696, 0.01656964, 44.57579341], [1516574640000, 0.01656964, 0.01656964, 0.01656964, 0.01656964, 21.26243872], [1516574700000, 0.01656964, 0.01656964, 0.0165696, 0.0165696, 6.93002841], [1516574760000, 0.01656964, 0.01661, 0.0165696, 0.01661, 18.87773375], [1516574820000, 0.01659, 0.016635, 0.01659, 0.01662662, 3.39284981], [1516574880000, 0.01662662, 0.01662699, 0.01662662, 0.01662699, 0.76630785], [1516574940000, 0.01662699, 0.01663, 0.01662699, 0.01662699, 2.38477582], [1516575000000, 0.01663, 0.01663498, 0.01662699, 0.01662699, 45.6385769], [1516575060000, 0.0166345, 0.0166345, 0.0165696, 0.01662699, 1.615662], [1516575120000, 0.0165696, 0.01662699, 0.0165696, 0.01662699, 6.7820528], [1516575180000, 0.01662699, 0.01662699, 0.0165696, 0.0165696, 12.03512216], [1516575240000, 0.0165696, 0.01662699, 0.0165696, 0.01662699, 8.66848199], [1516575300000, 0.01662699, 0.01662699, 0.016555, 0.016555, 10.33908269], [1516575360000, 0.016555, 0.016626, 0.01654001, 0.016555, 5.1976108], [1516575420000, 0.016555, 0.016625, 0.016555, 0.016625, 29.65945221], [1516575480000, 0.016625, 0.016625, 0.01654001, 0.01654001, 23.39449779], [1516575540000, 0.016625, 0.016625, 0.01654075, 0.01660567, 12.11219538], [1516575600000, 0.01660567, 0.01662, 0.01654001, 0.01655001, 42.92569621], [1516575660000, 0.01662, 0.01662, 0.01654001, 0.01662, 38.98650972], [1516575720000, 0.01662, 0.01662, 0.01654001, 0.01660722, 18.20743957], [1516575780000, 0.01662, 0.01662, 0.01654001, 0.01662, 11.22670737], [1516575840000, 0.01654001, 0.01662, 0.01654001, 0.01660722, 29.00633553], [1516575900000, 0.01660722, 0.01660722, 0.01654001, 0.01654001, 13.42712111], [1516575960000, 0.01654001, 0.0166072, 0.01654001, 0.01660718, 17.31325721], [1516576020000, 0.01654001, 0.01660719, 0.01654001, 0.01654001, 23.63848908], [1516576080000, 0.01660718, 0.01660722, 0.01654001, 0.01654001, 8.88933998], [1516576140000, 0.01654001, 0.01660722, 0.01654001, 0.01654001, 4.27360507], [1516576200000, 0.01654, 0.01660722, 0.01654, 0.01660722, 41.40981753], [1516576260000, 0.01660713, 0.01660713, 0.01653005, 0.01660712, 16.62623409], [1516576320000, 0.01660712, 0.01660712, 0.01653005, 0.01653005, 29.01106572], [1516576380000, 0.01653005, 0.01660388, 0.0165001, 0.0165001, 25.48324084], [1516576440000, 0.01660388, 0.01660388, 0.0165001, 0.01660385, 29.92886695], [1516576500000, 0.0165001, 0.01659999, 0.0165, 0.0165, 39.84982697], [1516576560000, 0.01659998, 0.01659998, 0.0165, 0.0165, 11.8884879], [1516576620000, 0.0165, 0.01659987, 0.0165, 0.0165, 7.27080478], [1516576680000, 0.0165, 0.01659987, 0.0165, 0.01659987, 28.95432804], [1516576740000, 0.01653, 0.01653, 0.01650001, 0.01650001, 11.36560341], [1516576800000, 0.01653, 0.01658999, 0.0165, 0.01658999, 8.59906617], [1516576860000, 0.01658999, 0.01658999, 0.0165, 0.01658998, 31.55042218], [1516576920000, 0.0165, 0.01658998, 0.0165, 0.01658998, 11.47231455], [1516576980000, 0.01658999, 0.01658999, 0.01658999, 0.01658999, 3.2546049], [1516577040000, 0.01658999, 0.01658999, 0.0165, 0.01650001, 6.34143073], [1516577100000, 0.01658999, 0.01658999, 0.0165, 0.0165, 13.8728683], [1516577160000, 0.01650001, 0.01650001, 0.0165, 0.0165, 8.37417239], [1516577220000, 0.0165, 0.0165, 0.0165, 0.0165, 4.68222375], [1516577280000, 0.0165, 0.01658999, 0.0165, 0.01651, 10.29732154], [1516577340000, 0.01651, 0.01658998, 0.0165, 0.01658998, 27.36281763], [1516577400000, 0.01658998, 0.01658998, 0.0165, 0.0165, 12.1823108], [1516577460000, 0.016501, 0.01658997, 0.0165, 0.01656998, 30.67648344], [1516577520000, 0.0165, 0.01657, 0.0165, 0.01657, 39.31523256], [1516577580000, 0.01657, 0.01657, 0.0165, 0.0165, 7.60081407], [1516577640000, 0.01657, 0.01657, 0.0165, 0.0165, 4.98632452], [1516577700000, 0.01657, 0.01657, 0.0165, 0.01657, 20.21989345], [1516577760000, 0.01657, 0.01657, 0.0165, 0.0165, 10.38423777], [1516577820000, 0.0165, 0.0165, 0.0165, 0.0165, 21.78994497], [1516577880000, 0.01657, 0.016584, 0.0165, 0.0165, 17.0949273], [1516577940000, 0.016584, 0.01658997, 0.0165, 0.016584, 11.80176784], [1516578000000, 0.016584, 0.01658998, 0.01650001, 0.01658998, 8.17193753], [1516578060000, 0.01650016, 0.01658998, 0.01650003, 0.01650003, 18.21965695], [1516578120000, 0.01650004, 0.01657999, 0.01650004, 0.01657999, 5.0232668], [1516578180000, 0.016578, 0.01658998, 0.016578, 0.01657999, 56.50503273], [1516578240000, 0.01657999, 0.01658998, 0.01657999, 0.01657999, 11.38105083], [1516578300000, 0.01657999, 0.0165899, 0.01652637, 0.01652637, 14.22805627], [1516578360000, 0.01657999, 0.01658989, 0.01657999, 0.01658989, 1.08749329], [1516578420000, 0.01658989, 0.0165899, 0.01652637, 0.01652637, 6.65379856], [1516578480000, 0.01658987, 0.01658987, 0.01653987, 0.01653987, 8.86786653], [1516578540000, 0.01652647, 0.01658987, 0.01652647, 0.01652647, 33.89704701], [1516578600000, 0.01652657, 0.01658952, 0.01652657, 0.01658952, 10.18174747], [1516578660000, 0.01658952, 0.01658987, 0.01652791, 0.01658952, 36.99791128], [1516578720000, 0.01658987, 0.01658998, 0.0165269, 0.01658998, 21.5926412], [1516578780000, 0.01658998, 0.01659999, 0.01658998, 0.01659999, 158.81552307], [1516578840000, 0.01658998, 0.01662, 0.01658998, 0.01662, 25.14969584], [1516578900000, 0.01662, 0.01662, 0.01652638, 0.01652639, 4.08083207], [1516578960000, 0.01652925, 0.01662, 0.01652638, 0.01652638, 5.70723983], [1516579020000, 0.01652638, 0.0166, 0.01652638, 0.0166, 1.91354313], [1516579080000, 0.0166, 0.0166, 0.01650985, 0.01652637, 39.71603504], [1516579140000, 0.01652637, 0.01652637, 0.01650985, 0.01650985, 11.7949039], [1516579200000, 0.01650985, 0.01650985, 0.0165, 0.0165, 74.707958], [1516579260000, 0.01650985, 0.01652637, 0.0165, 0.01652637, 28.07856399], [1516579320000, 0.0165, 0.01662542, 0.0165, 0.0166, 44.5142804], [1516579380000, 0.01651203, 0.0166, 0.01651203, 0.01651203, 3.50161405], [1516579440000, 0.0166, 0.0166, 0.0165, 0.01659578, 74.00268699], [1516579500000, 0.01651203, 0.01661479, 0.0165, 0.01650001, 9.66753852], [1516579560000, 0.01650001, 0.01661458, 0.01650001, 0.01656, 28.36131593], [1516579620000, 0.01656, 0.01662699, 0.0165, 0.01650002, 121.91925863], [1516579680000, 0.01650002, 0.01658412, 0.0165, 0.0165, 13.73416853], [1516579740000, 0.0165, 0.016579, 0.0165, 0.016579, 1.80732035], [1516579800000, 0.0165, 0.01661, 0.0165, 0.01661, 119.97573491], [1516579860000, 0.01660999, 0.01663, 0.01651, 0.01651, 236.9120689], [1516579920000, 0.01653595, 0.01653595, 0.01651, 0.01653595, 1.89347075], [1516579980000, 0.01653595, 0.0166, 0.01653595, 0.01653595, 6.24209623], [1516580040000, 0.01653595, 0.0166, 0.0165, 0.01650481, 35.42258702], [1516580100000, 0.0165, 0.01653415, 0.0165, 0.01653415, 39.61378996], [1516580160000, 0.0165, 0.01661971, 0.0165, 0.01650001, 15.97623251], [1516580220000, 0.0166196, 0.01665699, 0.01650007, 0.01652826, 396.25101002], [1516580280000, 0.01652826, 0.01652826, 0.01650013, 0.01652826, 24.67873165], [1516580340000, 0.01650253, 0.01650253, 0.01650012, 0.01650253, 2.24968612], [1516580400000, 0.01659, 0.0166, 0.0165, 0.0166, 155.60892432], [1516580460000, 0.0166, 0.0166, 0.01649349, 0.0165, 90.83419372], [1516580520000, 0.01659349, 0.0166, 0.01649349, 0.01659349, 24.15093174], [1516580580000, 0.01649941, 0.01662873, 0.01649349, 0.01662873, 41.71041031], [1516580640000, 0.01662873, 0.01664816, 0.01652925, 0.01652925, 33.5550984], [1516580700000, 0.01652925, 0.01660969, 0.01652925, 0.0166, 2.24073146], [1516580760000, 0.01659967, 0.01659967, 0.01650435, 0.01652925, 10.18487201], [1516580820000, 0.01652925, 0.01652925, 0.01649353, 0.01652592, 8.28805562], [1516580880000, 0.01659967, 0.0166, 0.01659, 0.01659, 8.93910177], [1516580940000, 0.01659, 0.01659969, 0.01659, 0.01659, 7.98251937], [1516581000000, 0.01659969, 0.01659969, 0.01659, 0.01659, 38.04849283], [1516581060000, 0.01659, 0.01659963, 0.01651, 0.01659961, 8.32615977], [1516581120000, 0.01659961, 0.0166, 0.01651, 0.0166, 41.37222411], [1516581180000, 0.0165996, 0.0166, 0.0165996, 0.0166, 5.48237654], [1516581240000, 0.0165996, 0.0166, 0.01651, 0.01651, 9.27858582], [1516581300000, 0.0166, 0.0166, 0.016445, 0.01644503, 186.27917944], [1516581360000, 0.01644503, 0.01653816, 0.01644503, 0.01653816, 7.34878416], [1516581420000, 0.01653816, 0.01660998, 0.01646771, 0.01646771, 11.96930062], [1516581480000, 0.01646771, 0.01660976, 0.01644502, 0.01644502, 62.81833791], [1516581540000, 0.0165, 0.0165, 0.016445, 0.016445, 30.80608571], [1516581600000, 0.01644501, 0.01659818, 0.01644501, 0.01659818, 3.19565642], [1516581660000, 0.0165, 0.0166, 0.0165, 0.016517, 42.28489888], [1516581720000, 0.0165, 0.0165, 0.0165, 0.0165, 15.88446549], [1516581780000, 0.01644527, 0.0165, 0.01644515, 0.01645501, 7.20380792], [1516581840000, 0.01645527, 0.0165, 0.01645527, 0.0165, 5.35684347], [1516581900000, 0.0165, 0.01655743, 0.0165, 0.01655743, 11.85867163], [1516581960000, 0.01655743, 0.01655743, 0.01646647, 0.0165, 4.79439049], [1516582020000, 0.0165, 0.0165, 0.0165, 0.0165, 3.10405432], [1516582080000, 0.0165, 0.0165, 0.0165, 0.0165, 6.12259722], [1516582140000, 0.0165, 0.01655743, 0.01647652, 0.01655743, 3.18828963], [1516582200000, 0.01655743, 0.01655743, 0.01646773, 0.01655743, 4.66594172], [1516582260000, 0.01655743, 0.0166, 0.01646774, 0.016574, 12.99266141], [1516582320000, 0.01659987, 0.01659987, 0.01647403, 0.01647403, 9.09057281], [1516582380000, 0.01647405, 0.01659968, 0.01647405, 0.01657399, 6.60112117], [1516582440000, 0.01657399, 0.01657399, 0.01647408, 0.01647408, 22.05867481], [1516582500000, 0.01647408, 0.01660999, 0.016474, 0.01647408, 39.84883784], [1516582560000, 0.01657405, 0.01657405, 0.01647412, 0.01657372, 35.64312642], [1516582620000, 0.01657372, 0.01657405, 0.01647419, 0.01647434, 26.63707061], [1516582680000, 0.01647439, 0.01656969, 0.01647439, 0.01647443, 27.96113316], [1516582740000, 0.01647446, 0.01656903, 0.01647446, 0.01647457, 3.84162749], [1516582800000, 0.01656837, 0.01656867, 0.01647457, 0.01656867, 2.78363606], [1516582860000, 0.01647462, 0.01656867, 0.01647462, 0.01650001, 2.49300189], [1516582920000, 0.01650001, 0.01656867, 0.01648, 0.01651, 4.83403566], [1516582980000, 0.01651, 0.016568, 0.01650003, 0.01650003, 22.00980005], [1516583040000, 0.01650003, 0.01650004, 0.01647454, 0.01650004, 17.7230937], [1516583100000, 0.01655967, 0.01655967, 0.016474, 0.016474, 12.23419466], [1516583160000, 0.016474, 0.01649967, 0.016474, 0.016474, 5.42876336], [1516583220000, 0.016474, 0.016474, 0.016474, 0.016474, 32.7639574], [1516583280000, 0.01649932, 0.01649932, 0.01649932, 0.01649932, 1.37850834], [1516583340000, 0.01648, 0.01649931, 0.01648, 0.01649931, 21.59957436], [1516583400000, 0.01650003, 0.01656, 0.01650003, 0.01656, 14.47700926], [1516583460000, 0.01656, 0.01656767, 0.01656, 0.01656, 54.73148379], [1516583520000, 0.01656, 0.01656933, 0.01656, 0.01656933, 73.90606472], [1516583580000, 0.01656933, 0.01656933, 0.01646774, 0.01646774, 13.4343611], [1516583640000, 0.01646772, 0.01646774, 0.01646647, 0.01646774, 34.79267631], [1516583700000, 0.01646857, 0.01650003, 0.01646857, 0.01650003, 2.71435945], [1516583760000, 0.01653451, 0.01656933, 0.01647007, 0.01656933, 4.70346774], [1516583820000, 0.01656933, 0.01656933, 0.01647402, 0.01647402, 4.34879176], [1516583880000, 0.01656931, 0.0166175, 0.01647002, 0.0164704, 22.34434066], [1516583940000, 0.0164704, 0.01661574, 0.0164704, 0.01661574, 2.22592436], [1516584000000, 0.01647041, 0.01661503, 0.01647041, 0.01661446, 33.8269201], [1516584060000, 0.01661474, 0.0166175, 0.0164704, 0.0165184, 44.58396267], [1516584120000, 0.0165184, 0.01664497, 0.0165184, 0.01664409, 13.77043476], [1516584180000, 0.01664397, 0.01664397, 0.01648045, 0.01648045, 28.9912481], [1516584240000, 0.0166, 0.0166, 0.01648042, 0.01659988, 3.45535927], [1516584300000, 0.01648043, 0.01659983, 0.01648041, 0.01648043, 35.1988481], [1516584360000, 0.01648043, 0.01650622, 0.01648041, 0.01648041, 9.88484642], [1516584420000, 0.01648041, 0.01648041, 0.01648041, 0.01648041, 0.723638], [1516584480000, 0.01657253, 0.01658611, 0.0164704, 0.01648041, 30.41192319], [1516584540000, 0.0164704, 0.01648041, 0.0164704, 0.01648041, 2.43653781], [1516584600000, 0.01648041, 0.01648041, 0.0164704, 0.01648041, 8.31339271], [1516584660000, 0.01648041, 0.01658494, 0.01648041, 0.01658483, 24.12440369], [1516584720000, 0.01648046, 0.01658424, 0.01648041, 0.01648041, 8.45473399], [1516584780000, 0.01655989, 0.0165599, 0.0164704, 0.0164704, 21.47641104], [1516584840000, 0.01646866, 0.01657647, 0.01646866, 0.01656053, 4.6486608], [1516584900000, 0.01646868, 0.0165605, 0.01646868, 0.0165605, 20.99871316], [1516584960000, 0.01650337, 0.0165605, 0.01646865, 0.01646865, 9.55928279], [1516585020000, 0.01649425, 0.0165605, 0.01646865, 0.01656049, 7.79789354], [1516585080000, 0.01646865, 0.0165605, 0.01646865, 0.0165, 13.27395715], [1516585140000, 0.0165, 0.0165, 0.01646857, 0.0165, 36.56895878], [1516585200000, 0.0165, 0.0166, 0.01646857, 0.0166, 14.82942895], [1516585260000, 0.0165537, 0.0165537, 0.016489, 0.016489, 15.06935579], [1516585320000, 0.0165537, 0.0165537, 0.01650401, 0.0165535, 4.69954665], [1516585380000, 0.0165535, 0.0165537, 0.01650507, 0.01650513, 30.14500141], [1516585440000, 0.01650322, 0.01661284, 0.01650322, 0.016515, 49.63547011], [1516585500000, 0.01661276, 0.01661276, 0.01649965, 0.01649965, 4.95622421], [1516585560000, 0.01651501, 0.01661255, 0.01651501, 0.01661255, 32.05284994], [1516585620000, 0.01655, 0.01661192, 0.01655, 0.01655, 2.15673], [1516585680000, 0.01655, 0.01661255, 0.016506, 0.01653, 12.7715969], [1516585740000, 0.01650601, 0.01664367, 0.016469, 0.016511, 36.07632398], [1516585800000, 0.01656931, 0.01661322, 0.01656931, 0.01661322, 3.25573042], [1516585860000, 0.01660213, 0.01660213, 0.0165, 0.0165, 8.80187541], [1516585920000, 0.01660213, 0.01660213, 0.016506, 0.01660211, 7.93827725], [1516585980000, 0.01660211, 0.01660213, 0.016506, 0.01650601, 83.47135136], [1516586040000, 0.01660213, 0.01660213, 0.01650601, 0.01650602, 6.04481374], [1516586100000, 0.0166, 0.01660213, 0.01650602, 0.0165065, 7.5484652], [1516586160000, 0.01660213, 0.01660213, 0.01650656, 0.01660213, 13.9983704], [1516586220000, 0.01660212, 0.01660212, 0.01650658, 0.01650658, 84.67426441], [1516586280000, 0.01660212, 0.01660213, 0.0165081, 0.0165081, 1.5363551], [1516586340000, 0.01651301, 0.01660212, 0.016511, 0.016511, 5.84975761], [1516586400000, 0.01651101, 0.01660212, 0.01650664, 0.01660212, 19.7476134], [1516586460000, 0.01660212, 0.01660213, 0.01660212, 0.01660212, 4.04499911], [1516586520000, 0.01660212, 0.01660212, 0.01653251, 0.01660212, 2.98436303], [1516586580000, 0.01660212, 0.016645, 0.01660212, 0.016645, 21.81019483], [1516586640000, 0.01660213, 0.016645, 0.01653285, 0.01653889, 6.85838647], [1516586700000, 0.01653317, 0.016645, 0.01653251, 0.0166, 2.29259419], [1516586760000, 0.0166, 0.01664438, 0.0166, 0.01664437, 3.07283241], [1516586820000, 0.01664437, 0.01664437, 0.0166, 0.01664, 6.47907062], [1516586880000, 0.0166, 0.01663998, 0.0166, 0.0166, 12.22921274], [1516586940000, 0.0166, 0.01664, 0.0166, 0.01664, 37.54212149], [1516587000000, 0.01663999, 0.01663999, 0.01660011, 0.01660011, 5.20664751], [1516587060000, 0.01663998, 0.01663998, 0.0166, 0.0166, 12.49929578], [1516587120000, 0.01660011, 0.01660011, 0.0166, 0.0166, 133.93863825], [1516587180000, 0.0166, 0.016639, 0.01650658, 0.01650658, 70.08480636], [1516587240000, 0.01650659, 0.01661234, 0.01650659, 0.01651202, 7.6008414], [1516587300000, 0.01651202, 0.01661233, 0.01650658, 0.01651202, 14.80904545], [1516587360000, 0.01651202, 0.0166399, 0.01651202, 0.01663985, 11.1678545], [1516587420000, 0.0166, 0.0166, 0.01652853, 0.0166, 1.24701826], [1516587480000, 0.01654, 0.0166, 0.01654, 0.0166, 7.90496354], [1516587540000, 0.01654, 0.0166, 0.01652853, 0.0166, 19.38625671], [1516587600000, 0.0166, 0.01664437, 0.0166, 0.0166, 264.14511443], [1516587660000, 0.0166, 0.01660001, 0.0166, 0.01660001, 25.60036579], [1516587720000, 0.01660001, 0.0166438, 0.0166, 0.0166, 48.31682958], [1516587780000, 0.0166, 0.01663611, 0.0166, 0.01660017, 26.84817189], [1516587840000, 0.01663, 0.0166361, 0.01660017, 0.01660018, 3.26057235], [1516587900000, 0.0166361, 0.01663612, 0.01660017, 0.01660018, 33.29522228], [1516587960000, 0.01661679, 0.01664816, 0.01661679, 0.01664816, 47.25117721], [1516588020000, 0.01664466, 0.01664816, 0.01664466, 0.01664816, 19.24323607], [1516588080000, 0.01665, 0.01665, 0.01664816, 0.01664816, 4.01731161], [1516588140000, 0.01664816, 0.01665, 0.01664466, 0.01664466, 36.03791095], [1516588200000, 0.01664466, 0.01666534, 0.01664466, 0.01666534, 87.38834121], [1516588260000, 0.01666534, 0.01666666, 0.01664467, 0.01664467, 57.02334051], [1516588320000, 0.01664467, 0.01666666, 0.01664467, 0.01664467, 21.47649639], [1516588380000, 0.0166653, 0.01666666, 0.0166653, 0.0166653, 26.7096973], [1516588440000, 0.0166653, 0.01666666, 0.01664467, 0.0166653, 181.31114901], [1516588500000, 0.016666, 0.01670906, 0.0166, 0.0167, 254.86351436], [1516588560000, 0.0167, 0.0167, 0.0166, 0.0166, 65.30084301], [1516588620000, 0.0166, 0.01660001, 0.0166, 0.0166, 5.98234982], [1516588680000, 0.01660001, 0.01664993, 0.0166, 0.01660001, 10.09905498], [1516588740000, 0.0166001, 0.0166001, 0.0166001, 0.0166001, 3.68616836], [1516588800000, 0.01664993, 0.01667498, 0.0166001, 0.0166001, 7.36739571], [1516588860000, 0.0166001, 0.0166996, 0.0166001, 0.0166996, 10.73848148], [1516588920000, 0.01665785, 0.01665785, 0.01660011, 0.01660011, 11.06446098], [1516588980000, 0.0166909, 0.0166909, 0.01660011, 0.01660011, 0.44947206], [1516589040000, 0.01660011, 0.0166592, 0.0166001, 0.0166592, 6.63626501], [1516589100000, 0.01665, 0.01672799, 0.0166001, 0.0166001, 89.02540587], [1516589160000, 0.0166001, 0.01668119, 0.0166001, 0.0166001, 3.42123249], [1516589220000, 0.01669089, 0.01669089, 0.0166001, 0.01660011, 11.47405041], [1516589280000, 0.01660011, 0.01666523, 0.01660011, 0.01660011, 7.73628831], [1516589340000, 0.01660011, 0.01665998, 0.01660011, 0.01660011, 3.80389691], [1516589400000, 0.01660011, 0.01664999, 0.01660011, 0.01660011, 29.01549637], [1516589460000, 0.01660011, 0.01664998, 0.01660011, 0.01664998, 21.15984273], [1516589520000, 0.01660011, 0.01660011, 0.01660011, 0.01660011, 56.08499914], [1516589580000, 0.01660011, 0.01660011, 0.01660011, 0.01660011, 4.48376021], [1516589640000, 0.01660011, 0.01666521, 0.01660011, 0.01666521, 6.70630384], [1516589700000, 0.01666521, 0.01666523, 0.01660011, 0.01660011, 28.58642899], [1516589760000, 0.01660011, 0.01666523, 0.01660011, 0.01666523, 6.65210123], [1516589820000, 0.01660011, 0.01670682, 0.01660011, 0.01667, 20.69075091], [1516589880000, 0.01667, 0.01670423, 0.01667, 0.01670423, 168.42561845], [1516589940000, 0.01667, 0.01670423, 0.01667, 0.01667, 66.04473694], [1516590000000, 0.01667, 0.01668866, 0.01660011, 0.01660011, 14.30532154], [1516590060000, 0.01660011, 0.01672798, 0.01660011, 0.01672798, 36.61197462], [1516590120000, 0.01660012, 0.01672787, 0.01660012, 0.01660012, 12.48682586], [1516590180000, 0.01660015, 0.0167, 0.01660015, 0.0167, 4.28856781], [1516590240000, 0.0167, 0.0167, 0.01660013, 0.01660022, 60.25883531], [1516590300000, 0.01669967, 0.01669967, 0.01660113, 0.01669934, 3.29555249], [1516590360000, 0.01669867, 0.01669867, 0.01660113, 0.01668924, 12.10749802], [1516590420000, 0.01668967, 0.01668967, 0.01660113, 0.01660113, 0.73041028], [1516590480000, 0.01668959, 0.01668959, 0.01660113, 0.01668918, 5.19499084], [1516590540000, 0.01660114, 0.01660114, 0.01660113, 0.01660113, 16.57302471], [1516590600000, 0.01660114, 0.01668678, 0.01660113, 0.01660113, 35.65432571], [1516590660000, 0.01660114, 0.01668678, 0.01660114, 0.01668637, 7.63207643], [1516590720000, 0.01668604, 0.01668637, 0.01660113, 0.01660144, 10.3282441], [1516590780000, 0.01660144, 0.01668645, 0.01660144, 0.01660227, 17.51204245], [1516590840000, 0.01668645, 0.01668678, 0.01660144, 0.01660145, 11.31368909], [1516590900000, 0.01660147, 0.01660147, 0.01660146, 0.01660146, 2.1], [1516590960000, 0.01660412, 0.0168, 0.01660411, 0.01675, 435.06750105], [1516591020000, 0.01674541, 0.0167949, 0.01660432, 0.01660474, 115.76872281], [1516591080000, 0.01660505, 0.01677, 0.01660505, 0.01664817, 31.80635932], [1516591140000, 0.01664818, 0.01676485, 0.01664818, 0.0166482, 2.92405066], [1516591200000, 0.0166815, 0.0166815, 0.0166482, 0.0166815, 3.36116757], [1516591260000, 0.0167, 0.01678492, 0.01668144, 0.01668144, 114.05437701], [1516591320000, 0.01668144, 0.0167, 0.01668144, 0.0167, 32.34552947], [1516591380000, 0.01668144, 0.01678492, 0.01664819, 0.01678491, 47.6428785], [1516591440000, 0.01664821, 0.01678399, 0.01664818, 0.01664818, 7.24779816], [1516591500000, 0.01664826, 0.01664826, 0.01664826, 0.01664826, 0.03494149], [1516591560000, 0.01667, 0.01667, 0.01667, 0.01667, 1.47239495], [1516591620000, 0.01667005, 0.01678266, 0.01665013, 0.01665013, 28.13432829], [1516591680000, 0.01665013, 0.01678312, 0.01665013, 0.01665014, 11.62730846], [1516591740000, 0.01665016, 0.016784, 0.01665014, 0.016784, 22.70591037], [1516591800000, 0.0166502, 0.01677996, 0.0166502, 0.01677996, 2.42875689], [1516591860000, 0.01665021, 0.01677997, 0.01665021, 0.01677997, 4.01996344], [1516591920000, 0.0166502, 0.0166502, 0.01665016, 0.01665016, 4.60387452], [1516591980000, 0.01665016, 0.01679583, 0.01665016, 0.01679583, 40.58871149], [1516592040000, 0.0166502, 0.01678399, 0.01665019, 0.01678399, 14.3918221], [1516592100000, 0.0166502, 0.01678397, 0.01665019, 0.01677899, 2.57430162], [1516592160000, 0.01676896, 0.01677898, 0.01664818, 0.01664818, 31.37193213], [1516592220000, 0.01665019, 0.0166951, 0.01664818, 0.01664818, 5.5002693], [1516592280000, 0.01664818, 0.01668399, 0.01661001, 0.0166482, 10.6358844], [1516592340000, 0.01668399, 0.01669897, 0.0166482, 0.01666, 5.23850384], [1516592400000, 0.01666001, 0.016661, 0.0166482, 0.0166482, 8.07751045], [1516592460000, 0.01664823, 0.01664823, 0.01664818, 0.01664818, 2.47484023], [1516592520000, 0.01664818, 0.01669898, 0.01660113, 0.01660113, 143.47871627], [1516592580000, 0.0166023, 0.0166023, 0.01660101, 0.01660101, 1.81074132], [1516592640000, 0.016601, 0.01665, 0.01660011, 0.01660011, 25.37230275], [1516592700000, 0.01660022, 0.01660022, 0.01660011, 0.01660022, 9.0800545], [1516592760000, 0.0166002, 0.01660022, 0.01657999, 0.01659999, 14.97146822], [1516592820000, 0.01657999, 0.01666, 0.016539, 0.0165452, 65.48009646], [1516592880000, 0.01655001, 0.01665998, 0.016539, 0.01665998, 77.68672865], [1516592940000, 0.01654521, 0.01669846, 0.01654521, 0.01655, 9.38935459], [1516593000000, 0.01655, 0.0168, 0.01655, 0.0166165, 337.79154059], [1516593060000, 0.01658999, 0.0166165, 0.016555, 0.01658999, 21.07123305], [1516593120000, 0.01658999, 0.01658999, 0.01655527, 0.01658999, 29.05091148], [1516593180000, 0.01656, 0.01669987, 0.01656, 0.01669987, 36.85741568], [1516593240000, 0.01669977, 0.01669982, 0.01663337, 0.01669982, 36.28376252], [1516593300000, 0.01663337, 0.01669949, 0.01663337, 0.01663337, 15.28625923], [1516593360000, 0.01663337, 0.01663337, 0.01663337, 0.01663337, 9.78585011], [1516593420000, 0.01658992, 0.01663337, 0.01656, 0.01658992, 17.9534968], [1516593480000, 0.01658992, 0.01658992, 0.01656089, 0.01658991, 1.96596639], [1516593540000, 0.01658991, 0.01663337, 0.01658991, 0.01663337, 31.67837978], [1516593600000, 0.01658992, 0.01669861, 0.01658992, 0.01658992, 8.41778054], [1516593660000, 0.01669851, 0.01669851, 0.01658992, 0.01658992, 0.69373179], [1516593720000, 0.01669839, 0.0168, 0.01669838, 0.0168, 20.99303949], [1516593780000, 0.01669838, 0.01679299, 0.01659006, 0.01678385, 25.36982933], [1516593840000, 0.01664816, 0.01664918, 0.01659007, 0.01659007, 47.96086012], [1516593900000, 0.01660008, 0.01660008, 0.01660008, 0.01660008, 0.03006727], [1516593960000, 0.01659007, 0.01670088, 0.01658992, 0.01658992, 15.39470562], [1516594020000, 0.01658992, 0.01658992, 0.01658992, 0.01658992, 1.6523528], [1516594080000, 0.01658992, 0.01665228, 0.01656083, 0.01665228, 21.4747071], [1516594140000, 0.01665228, 0.01665228, 0.01656084, 0.01656084, 2.3871542], [1516594200000, 0.016561, 0.016561, 0.01656083, 0.01656083, 3.15810071], [1516594260000, 0.01656083, 0.01656283, 0.01656083, 0.01656283, 11.91614973], [1516594320000, 0.01665228, 0.01668307, 0.01656, 0.01668258, 7.51923901], [1516594380000, 0.01668215, 0.01668215, 0.01655999, 0.01656, 30.92989267], [1516594440000, 0.01656, 0.01656, 0.01655011, 0.01655999, 6.73382741], [1516594500000, 0.01655011, 0.01656, 0.01655011, 0.01656, 4.51603081], [1516594560000, 0.01656, 0.01656, 0.01656, 0.01656, 13.32896221], [1516594620000, 0.01656, 0.0166, 0.01656, 0.0166, 23.75478092], [1516594680000, 0.01656001, 0.01659966, 0.01656, 0.01656, 8.77430229], [1516594740000, 0.01656, 0.01659933, 0.016508, 0.016508, 36.10212993], [1516594800000, 0.016508, 0.016508, 0.0165, 0.016508, 32.44689384], [1516594860000, 0.0165992, 0.0165992, 0.01650801, 0.01659912, 5.81611315], [1516594920000, 0.01650801, 0.01659932, 0.016508, 0.01654561, 57.30903764], [1516594980000, 0.01654561, 0.01659932, 0.01654561, 0.01659932, 1.06671714], [1516595040000, 0.016599, 0.0166, 0.01655932, 0.01655932, 16.83061458], [1516595100000, 0.01655932, 0.01662998, 0.01655932, 0.0166299, 22.72583516], [1516595160000, 0.01662987, 0.01662987, 0.01662977, 0.01662977, 13.19899702], [1516595220000, 0.01655933, 0.01655933, 0.01655933, 0.01655933, 9.86378142], [1516595280000, 0.01655933, 0.01662977, 0.01655933, 0.01655933, 9.27619933], [1516595340000, 0.01655933, 0.01662967, 0.01655933, 0.01662961, 27.17849329], [1516595400000, 0.01655933, 0.0166133, 0.01655933, 0.01656, 10.16372591], [1516595460000, 0.01656, 0.01660677, 0.01655933, 0.01655933, 2.96953819], [1516595520000, 0.01660677, 0.01661329, 0.01655933, 0.01655933, 52.15132419], [1516595580000, 0.01655933, 0.01660002, 0.01655933, 0.01655934, 1.1072936], [1516595640000, 0.01655934, 0.01655934, 0.01655933, 0.01655934, 28.81478004], [1516595700000, 0.01655934, 0.0166, 0.01655934, 0.0166, 3.41925626], [1516595760000, 0.0166, 0.0166, 0.01655933, 0.01655933, 12.56516031], [1516595820000, 0.01655933, 0.01655934, 0.01655933, 0.01655933, 68.5952132], [1516595880000, 0.01655933, 0.01655933, 0.01655933, 0.01655933, 6.91020011], [1516595940000, 0.01659992, 0.0166, 0.01655933, 0.01655933, 36.67391932], [1516596000000, 0.01655933, 0.0166, 0.01653173, 0.0166, 31.9004091], [1516596060000, 0.0166, 0.0166, 0.01651603, 0.01652101, 6.60408674], [1516596120000, 0.01652102, 0.0166, 0.01652102, 0.01652601, 3.39034698], [1516596180000, 0.01652601, 0.01652604, 0.01652601, 0.01652604, 1.53136775], [1516596240000, 0.01652106, 0.01657962, 0.01652106, 0.01657962, 3.20741946], [1516596300000, 0.01657962, 0.01657962, 0.01652112, 0.01657962, 8.43987258], [1516596360000, 0.01652116, 0.0166, 0.01652115, 0.0165212, 71.42306412], [1516596420000, 0.01652124, 0.01652126, 0.01652124, 0.01652126, 35.40904322], [1516596480000, 0.0165213, 0.01659967, 0.0165213, 0.01659967, 4.50911328], [1516596540000, 0.0166, 0.0166, 0.01659967, 0.0166, 5.05301884], [1516596600000, 0.01659967, 0.01659967, 0.0165, 0.0165, 205.75338887], [1516596660000, 0.01659967, 0.0166, 0.01650083, 0.01650083, 2.58801292], [1516596720000, 0.01650084, 0.01659967, 0.01650083, 0.01650085, 10.6087279], [1516596780000, 0.01650131, 0.01650131, 0.01650131, 0.01650131, 0.92444614], [1516596840000, 0.01659966, 0.01659966, 0.0165996, 0.01659966, 6.14354018], [1516596900000, 0.01659966, 0.01659997, 0.01659966, 0.01659966, 25.6851818], [1516596960000, 0.01659963, 0.01659963, 0.01650083, 0.01650083, 9.52611073], [1516597020000, 0.01650083, 0.01650166, 0.0165, 0.01650166, 4.39458032], [1516597080000, 0.01650166, 0.01659883, 0.0165, 0.01659883, 4.3299534], [1516597140000, 0.0165, 0.01659882, 0.01646857, 0.01646857, 153.20364792], [1516597200000, 0.01654595, 0.01659882, 0.01646864, 0.01659881, 4.90032908], [1516597260000, 0.01654595, 0.01654595, 0.01646865, 0.01654595, 3.18057245], [1516597320000, 0.01654595, 0.01654595, 0.01646908, 0.01654595, 3.3338897], [1516597380000, 0.01654562, 0.01654595, 0.01647402, 0.01654595, 34.49181859], [1516597440000, 0.01654595, 0.01659467, 0.01654595, 0.01659467, 19.80597452], [1516597500000, 0.01659466, 0.01659996, 0.01650103, 0.01659996, 41.44594138], [1516597560000, 0.01659997, 0.0166, 0.016484, 0.0166, 153.92429088], [1516597620000, 0.0166, 0.0166, 0.01649201, 0.01650904, 8.60253995], [1516597680000, 0.01651022, 0.0166, 0.01650904, 0.01650904, 0.73147466], [1516597740000, 0.01650936, 0.01659967, 0.01650936, 0.01659967, 6.10030985], [1516597800000, 0.01659659, 0.01659967, 0.01650851, 0.01659967, 26.52766195], [1516597860000, 0.01656975, 0.0166, 0.01651001, 0.01651303, 86.06100649], [1516597920000, 0.01656975, 0.0166, 0.01650851, 0.0166, 8.81388979], [1516597980000, 0.01650851, 0.0166, 0.01650851, 0.01650854, 4.22093733], [1516598040000, 0.0166, 0.0166, 0.01650855, 0.0166, 8.45633686], [1516598100000, 0.01659999, 0.0166, 0.01650865, 0.01650865, 7.84652772], [1516598160000, 0.0166, 0.0166, 0.01650873, 0.01650873, 9.77831668], [1516598220000, 0.01650873, 0.0166, 0.0165087, 0.01650881, 4.69393215], [1516598280000, 0.0166, 0.0166, 0.01651001, 0.01656, 8.93932008], [1516598340000, 0.01656, 0.01659999, 0.01652095, 0.01652095, 0.97139112], [1516598400000, 0.01659999, 0.01659999, 0.0165213, 0.01652151, 8.19905752], [1516598460000, 0.01659999, 0.01659999, 0.01659999, 0.01659999, 0.13342852], [1516598520000, 0.01659999, 0.01659999, 0.01653016, 0.01659999, 4.09243617], [1516598580000, 0.01659999, 0.01659999, 0.01654701, 0.01659999, 36.78205354], [1516598640000, 0.01659999, 0.0166, 0.01654669, 0.0166, 8.61333779], [1516598700000, 0.0166, 0.0166, 0.01654668, 0.016549, 18.19168915], [1516598760000, 0.01654901, 0.0166, 0.01654901, 0.0166, 3.77074576], [1516598820000, 0.01654911, 0.0166, 0.0165467, 0.0165467, 17.77727068], [1516598880000, 0.0166, 0.0166, 0.01654668, 0.01654905, 8.38243872], [1516598940000, 0.0166, 0.0166, 0.01654905, 0.01654905, 103.91708703], [1516599000000, 0.01654905, 0.0166, 0.01650898, 0.0166, 103.55515052], [1516599060000, 0.0166, 0.0166, 0.01651201, 0.01651201, 7.23852295], [1516599120000, 0.01656561, 0.0166, 0.01650894, 0.0166, 10.56521569], [1516599180000, 0.0166, 0.0166, 0.0166, 0.0166, 0.35951113], [1516599240000, 0.0166, 0.0166, 0.01650701, 0.0166, 20.79600383], [1516599300000, 0.0166, 0.0166, 0.01649703, 0.0166, 10.85605952], [1516599360000, 0.0166, 0.0166, 0.0166, 0.0166, 0.34264849], [1516599420000, 0.0166, 0.0166, 0.01650211, 0.01655, 4.52279152], [1516599480000, 0.01655, 0.01655, 0.016507, 0.01655, 17.33652408], [1516599540000, 0.016508, 0.01655, 0.01649704, 0.01655, 11.237596], [1516599600000, 0.01650301, 0.01655, 0.01650103, 0.01654999, 3.57831583], [1516599660000, 0.01654999, 0.0166, 0.01650302, 0.01650309, 9.90106646], [1516599720000, 0.01650309, 0.0166, 0.01650309, 0.0166, 1.47148344], [1516599780000, 0.01650309, 0.01650311, 0.01650309, 0.01650309, 1.00978596], [1516599840000, 0.01650324, 0.0166, 0.01650324, 0.01659999, 1.38935286], [1516599900000, 0.01650324, 0.0166, 0.01650324, 0.01650324, 16.99763856], [1516599960000, 0.0166, 0.01662977, 0.01650325, 0.01662964, 44.22464494], [1516600020000, 0.01662953, 0.01662963, 0.0165156, 0.01651561, 37.9789851], [1516600080000, 0.01661269, 0.0166127, 0.01661269, 0.0166127, 0.75443023], [1516600140000, 0.0166127, 0.01662977, 0.01651596, 0.0166127, 10.63470586], [1516600200000, 0.0166127, 0.0166127, 0.01651601, 0.01651603, 12.75939261], [1516600260000, 0.0166, 0.0166, 0.01651561, 0.01651631, 5.66680554], [1516600320000, 0.01651634, 0.01662977, 0.01651634, 0.01651734, 22.28220155], [1516600380000, 0.01651756, 0.01651776, 0.01651736, 0.01651757, 7.48913192], [1516600440000, 0.01651757, 0.0166, 0.01651757, 0.0165176, 1.62744223], [1516600500000, 0.0166, 0.0166, 0.01651762, 0.0166, 9.56502345], [1516600560000, 0.01651766, 0.01651769, 0.01651766, 0.01651769, 4.29913148], [1516600620000, 0.0166, 0.0166, 0.01651769, 0.01651769, 14.2101444], [1516600680000, 0.01651769, 0.0166, 0.01651769, 0.0166, 36.1023399], [1516600740000, 0.01651769, 0.0166, 0.0165176, 0.0166, 24.38419944], [1516600800000, 0.0166, 0.0166, 0.01651769, 0.01659999, 11.22333797], [1516600860000, 0.01659999, 0.01659999, 0.01651769, 0.01659999, 7.86709065], [1516600920000, 0.01659999, 0.01662974, 0.01651769, 0.01651769, 67.02958236], [1516600980000, 0.01651769, 0.01659999, 0.01651769, 0.01659999, 3.74057631], [1516601040000, 0.01659999, 0.01662971, 0.01651769, 0.01651769, 1.37745056], [1516601100000, 0.01659999, 0.01659999, 0.01651769, 0.01659999, 34.34979691], [1516601160000, 0.01651769, 0.01651769, 0.01651769, 0.01651769, 7.28927471], [1516601220000, 0.01651769, 0.01659998, 0.01651769, 0.01659998, 14.30238952], [1516601280000, 0.01659998, 0.01659998, 0.01659998, 0.01659998, 1.0], [1516601340000, 0.01659995, 0.01659996, 0.0165177, 0.01659996, 5.16060088], [1516601460000, 0.0165177, 0.01659994, 0.01645758, 0.01659982, 48.96051402], [1516601520000, 0.01659981, 0.01659993, 0.01645773, 0.01645783, 8.03479174], [1516601580000, 0.0165998, 0.0165998, 0.01645791, 0.01645791, 0.19942106], [1516601640000, 0.01645809, 0.01659998, 0.01645809, 0.01645815, 39.28005643], [1516601700000, 0.01645821, 0.01659997, 0.01645821, 0.01659995, 10.2190942], [1516601760000, 0.01645784, 0.0165999, 0.01645784, 0.01645789, 6.06767794], [1516601820000, 0.01659926, 0.01659926, 0.01645784, 0.01645784, 4.52001365], [1516601880000, 0.01645784, 0.01659803, 0.01645783, 0.01645783, 11.65276222], [1516601940000, 0.01645783, 0.01659701, 0.01645783, 0.01646, 9.28106472], [1516602000000, 0.01659617, 0.01659617, 0.01645783, 0.01646, 10.96575977], [1516602060000, 0.01646, 0.01659492, 0.01646, 0.01646002, 3.60213847], [1516602120000, 0.01659433, 0.01659433, 0.01659431, 0.01659431, 6.8216339], [1516602180000, 0.01646001, 0.01657, 0.01645756, 0.01645756, 94.53233524], [1516602240000, 0.01645783, 0.01645783, 0.01645757, 0.01645783, 2.99257851], [1516602300000, 0.01655997, 0.01655997, 0.01655988, 0.01655988, 7.43098709], [1516602360000, 0.01645782, 0.01645782, 0.01645782, 0.01645782, 0.0348248], [1516602420000, 0.01648, 0.01659622, 0.01645755, 0.01645755, 137.83207568], [1516602480000, 0.01645782, 0.01645782, 0.01645755, 0.01645782, 7.05879198], [1516602540000, 0.01655986, 0.01655986, 0.01645788, 0.01645788, 8.80867587], [1516602600000, 0.01645788, 0.01655971, 0.01645787, 0.01645787, 20.64563642], [1516602660000, 0.01645788, 0.01655407, 0.01645787, 0.01645788, 23.11994376], [1516602720000, 0.01645787, 0.01647435, 0.01645787, 0.01645787, 3.24364942], [1516602780000, 0.01652405, 0.0165596, 0.01645787, 0.0165596, 4.05562821], [1516602840000, 0.01655959, 0.0165596, 0.01645755, 0.01645755, 10.20331144], [1516602900000, 0.0164576, 0.0165596, 0.0164576, 0.0165596, 0.32763747], [1516602960000, 0.01652494, 0.01652494, 0.0164576, 0.0164576, 2.55205586], [1516603020000, 0.01645761, 0.01645761, 0.01645755, 0.01645755, 3.5628323], [1516603080000, 0.01655926, 0.01655927, 0.01645757, 0.01645757, 10.13734636], [1516603140000, 0.01655926, 0.01655926, 0.01645757, 0.01645757, 3.24297425], [1516603200000, 0.01645757, 0.0165596, 0.01645755, 0.01647706, 13.05854535], [1516603260000, 0.01647706, 0.01647706, 0.01647706, 0.01647706, 16.6306194], [1516603320000, 0.01647706, 0.01647706, 0.016445, 0.016445, 4.7131366], [1516603380000, 0.01647706, 0.01647706, 0.016445, 0.01647705, 20.15934872], [1516603440000, 0.01647706, 0.01655922, 0.01646666, 0.01646666, 32.13410832], [1516603500000, 0.01647702, 0.01647703, 0.016445, 0.016445, 96.16567314], [1516603560000, 0.01647703, 0.01655919, 0.016445, 0.016445, 126.46750392], [1516603620000, 0.016445, 0.016445, 0.01642, 0.016445, 22.47541824], [1516603680000, 0.016445, 0.01655687, 0.016445, 0.01644501, 22.06418379], [1516603740000, 0.0164421, 0.0164421, 0.01642, 0.01642, 5.79543515], [1516603800000, 0.01642, 0.0164421, 0.01641251, 0.01641251, 20.18381465], [1516603860000, 0.0164421, 0.0164421, 0.0164421, 0.0164421, 13.33984723], [1516603920000, 0.0165, 0.0165, 0.01644211, 0.01644211, 2.97179215], [1516603980000, 0.01644211, 0.01644211, 0.01644211, 0.01644211, 1.51916517], [1516604040000, 0.01644211, 0.0165, 0.0164421, 0.0164421, 9.48550391], [1516604100000, 0.01644212, 0.0165, 0.01644211, 0.0165, 2.5876418], [1516604160000, 0.01644212, 0.0165, 0.0164421, 0.01644212, 6.97716636], [1516604220000, 0.01644213, 0.01644213, 0.01644213, 0.01644213, 2.1], [1516604280000, 0.01644212, 0.01647903, 0.01644212, 0.01647903, 0.68866754], [1516604340000, 0.01644213, 0.01647903, 0.01644213, 0.01647903, 12.16996842], [1516604400000, 0.01647923, 0.01647923, 0.01644216, 0.01644216, 10.46589653], [1516604460000, 0.01644216, 0.01647904, 0.01644216, 0.01647904, 0.47234355], [1516604520000, 0.01647904, 0.01647904, 0.01644216, 0.01647903, 12.22873443], [1516604580000, 0.016465, 0.016465, 0.01644399, 0.01644399, 1.12299835], [1516604640000, 0.01644399, 0.016459, 0.01644399, 0.016459, 12.62612989], [1516604700000, 0.016459, 0.01647904, 0.01644399, 0.01647904, 30.93235846], [1516604760000, 0.01644492, 0.01647904, 0.01644492, 0.01647904, 23.6966979], [1516604820000, 0.01644492, 0.01647904, 0.01644492, 0.01644492, 7.47320904], [1516604880000, 0.01644492, 0.01647904, 0.01644492, 0.01644492, 4.04816426], [1516604940000, 0.01644493, 0.01647904, 0.01644493, 0.01647904, 1.5439525], [1516605000000, 0.01647904, 0.01647904, 0.01644493, 0.01647904, 24.80056778], [1516605060000, 0.01647904, 0.01647904, 0.01644493, 0.01647904, 2.97077243], [1516605120000, 0.01647904, 0.01647904, 0.01647904, 0.01647904, 0.8758449], [1516605180000, 0.01647904, 0.01647904, 0.01644493, 0.01644493, 36.83529452], [1516605240000, 0.01647904, 0.01647904, 0.01641241, 0.01644539, 46.53795011], [1516605300000, 0.01644539, 0.01647904, 0.01644539, 0.01647904, 25.35548184], [1516605360000, 0.016455, 0.016455, 0.01644539, 0.016455, 21.38505737], [1516605420000, 0.01644539, 0.01646912, 0.01644539, 0.016455, 15.93143069], [1516605480000, 0.01644539, 0.016455, 0.01644539, 0.01644539, 3.20917611], [1516605540000, 0.016455, 0.016455, 0.01640713, 0.016455, 11.50032098], [1516605600000, 0.01640713, 0.016455, 0.01640713, 0.016455, 19.61871947], [1516605660000, 0.016455, 0.016455, 0.01640713, 0.016455, 7.01470478], [1516605720000, 0.01640714, 0.016455, 0.01640233, 0.01640233, 69.23922421], [1516605780000, 0.0164015, 0.016455, 0.01639001, 0.016455, 9.61751306], [1516605840000, 0.016455, 0.016455, 0.01639001, 0.01639001, 53.62297579], [1516605900000, 0.01639003, 0.016455, 0.01639003, 0.016455, 68.06794442], [1516605960000, 0.01639003, 0.016455, 0.01639, 0.016455, 7.84025636], [1516606020000, 0.01639, 0.016455, 0.01639, 0.01639, 0.52933595], [1516606080000, 0.016455, 0.016455, 0.016455, 0.016455, 1.79980255], [1516606140000, 0.01639, 0.016455, 0.01639, 0.01639003, 7.55041618], [1516606200000, 0.016455, 0.016455, 0.01639004, 0.016455, 4.75544663], [1516606260000, 0.016455, 0.016455, 0.01643855, 0.016455, 4.70523688], [1516606320000, 0.016455, 0.016455, 0.01643855, 0.01645411, 4.00841505], [1516606380000, 0.01645411, 0.016455, 0.01643855, 0.01643855, 19.91778682], [1516606440000, 0.016455, 0.016455, 0.01640001, 0.01645411, 31.89690047], [1516606500000, 0.01643855, 0.016455, 0.0164, 0.016455, 20.14451122], [1516606560000, 0.0164, 0.016455, 0.0164, 0.0164001, 5.08330053], [1516606620000, 0.01645412, 0.01645412, 0.0164003, 0.0164003, 7.0189991], [1516606680000, 0.01645412, 0.01647903, 0.01645412, 0.016455, 3.32295385], [1516606740000, 0.01645412, 0.016455, 0.01645412, 0.01645412, 8.79360134], [1516606800000, 0.016453, 0.016455, 0.016453, 0.016455, 16.508073], [1516606860000, 0.01647903, 0.01647904, 0.01647903, 0.01647904, 5.02115817], [1516606920000, 0.01647903, 0.01647904, 0.016453, 0.01645301, 20.90214069], [1516606980000, 0.01645301, 0.0164752, 0.016453, 0.016453, 13.17510029], [1516607040000, 0.0164003, 0.016453, 0.0164003, 0.016453, 2.24441318], [1516607100000, 0.01647903, 0.01647904, 0.016453, 0.016453, 27.155273], [1516607160000, 0.01647904, 0.01647904, 0.016453, 0.016454, 7.85014732], [1516607220000, 0.01647, 0.016474, 0.016453, 0.016453, 20.17812959], [1516607280000, 0.016453, 0.016453, 0.0164004, 0.016453, 1.84942835], [1516607340000, 0.0164004, 0.0164004, 0.0164, 0.0164, 5.84405579], [1516607400000, 0.0164004, 0.01647904, 0.0164004, 0.01647904, 17.2735359], [1516607460000, 0.01647904, 0.01647904, 0.0164, 0.01647, 12.62191065], [1516607520000, 0.01647, 0.01647, 0.0164, 0.0164, 6.68950018], [1516607580000, 0.0164, 0.01647, 0.0164, 0.01647, 28.13622348], [1516607640000, 0.01640414, 0.01640414, 0.01640414, 0.01640414, 2.92050247], [1516607700000, 0.01642054, 0.01647, 0.01637699, 0.01640413, 42.99370814], [1516607760000, 0.01647, 0.01647, 0.01647, 0.01647, 3.29750892], [1516607820000, 0.01647, 0.01647, 0.016405, 0.016405, 9.63817578], [1516607880000, 0.01647, 0.01647, 0.016377, 0.016377, 17.18270284], [1516607940000, 0.01647, 0.01647, 0.01647, 0.01647, 22.44331612], [1516608000000, 0.01640413, 0.016479, 0.016377, 0.016479, 8.25249362], [1516608060000, 0.01647851, 0.01647851, 0.01635151, 0.01637699, 25.60811564], [1516608120000, 0.01645915, 0.01645915, 0.01637701, 0.01645912, 0.48319604], [1516608180000, 0.01637702, 0.01637702, 0.01637701, 0.01637701, 0.62554378], [1516608240000, 0.01637701, 0.01645, 0.01637701, 0.01645, 2.17604266], [1516608300000, 0.01637701, 0.01645, 0.01637701, 0.01645, 8.27351258], [1516608360000, 0.01637701, 0.0164369, 0.01637701, 0.01637701, 7.19049281], [1516608420000, 0.016375, 0.01645915, 0.016375, 0.01645915, 16.49289946], [1516608480000, 0.01645915, 0.01647893, 0.01638241, 0.01638241, 128.55693912], [1516608540000, 0.01642998, 0.01647904, 0.01638135, 0.01638135, 44.19604259], [1516608600000, 0.0164664, 0.0164664, 0.01638135, 0.01642999, 33.09973873], [1516608660000, 0.01637701, 0.01642999, 0.016375, 0.016375, 8.27847248], [1516608720000, 0.016375, 0.01637701, 0.016375, 0.016375, 2.54991209], [1516608780000, 0.01637701, 0.01642999, 0.01637701, 0.01638465, 11.00084198], [1516608840000, 0.01638465, 0.01641442, 0.0163761, 0.0163761, 23.41574974], [1516608900000, 0.01642999, 0.01642999, 0.01642951, 0.01642999, 7.04711485], [1516608960000, 0.01642999, 0.01647903, 0.0163761, 0.0163761, 19.58162227], [1516609020000, 0.016465, 0.016465, 0.0163761, 0.0163761, 1.50666879], [1516609080000, 0.01646499, 0.016465, 0.0163761, 0.016465, 9.36961661], [1516609140000, 0.016465, 0.016465, 0.016376, 0.0163761, 22.64179164], [1516609200000, 0.0163761, 0.01646498, 0.016375, 0.016375, 71.74446042], [1516609260000, 0.01646244, 0.01647904, 0.016375, 0.016375, 130.40367104], [1516609320000, 0.0163765, 0.0163765, 0.0163765, 0.0163765, 1.9833687], [1516609380000, 0.01647187, 0.01647899, 0.0163765, 0.0163765, 6.74141391], [1516609440000, 0.01637651, 0.01647899, 0.0163765, 0.01647899, 2.84033933], [1516609500000, 0.0163765, 0.016479, 0.0163765, 0.016479, 5.32813313], [1516609560000, 0.0163765, 0.016479, 0.016375, 0.016375, 18.85475026], [1516609620000, 0.016479, 0.01647904, 0.01637636, 0.01647901, 9.72076731], [1516609680000, 0.01647901, 0.01647901, 0.01637505, 0.01637505, 6.19798353], [1516609740000, 0.016469, 0.016469, 0.01637504, 0.01637504, 1.83978051], [1516609800000, 0.016469, 0.016469, 0.01639332, 0.016469, 2.91428291], [1516609860000, 0.016469, 0.01646901, 0.01637505, 0.01637505, 4.10354215], [1516609920000, 0.01637507, 0.01645277, 0.01637507, 0.01637507, 2.70672956], [1516609980000, 0.01638507, 0.016479, 0.01638507, 0.016479, 21.25574169], [1516610040000, 0.01647904, 0.01647904, 0.01645277, 0.01645277, 20.25090337], [1516610100000, 0.01647163, 0.01647163, 0.01645277, 0.01645277, 4.3940931], [1516610160000, 0.01647163, 0.01647163, 0.01645277, 0.01646057, 33.8224935], [1516610220000, 0.01646057, 0.016466, 0.01645277, 0.016466, 54.64336841], [1516610280000, 0.0164606, 0.016466, 0.01645277, 0.01645277, 4.46816348], [1516610340000, 0.016466, 0.016466, 0.01645277, 0.01646061, 15.0046182], [1516610400000, 0.01645277, 0.01645839, 0.01645277, 0.01645277, 10.52033481], [1516610460000, 0.01645277, 0.01645277, 0.01645277, 0.01645277, 0.9], [1516610520000, 0.01645277, 0.01645277, 0.01638366, 0.01641, 7.75505577], [1516610580000, 0.01641, 0.01645172, 0.01638339, 0.01645172, 8.83034151], [1516610640000, 0.01645172, 0.01645439, 0.01638348, 0.01645439, 73.5267511], [1516610700000, 0.01645173, 0.016466, 0.0163836, 0.0163845, 17.45340149], [1516610760000, 0.016466, 0.01650627, 0.016466, 0.016466, 146.01580505], [1516610820000, 0.01650625, 0.01654432, 0.0163849, 0.01654432, 4.62517985], [1516610880000, 0.0165442, 0.0165442, 0.01639105, 0.01643, 7.31227198], [1516610940000, 0.01643, 0.0165, 0.01643, 0.01643, 6.23976567], [1516611000000, 0.0165, 0.01654381, 0.01640005, 0.01654283, 37.27730096], [1516611060000, 0.01654281, 0.01654282, 0.01640027, 0.01643, 26.66158455], [1516611120000, 0.01643002, 0.016538, 0.01640029, 0.0164003, 62.65123984], [1516611180000, 0.01640028, 0.01652697, 0.01639132, 0.01652697, 5.98223584], [1516611240000, 0.01652681, 0.01652682, 0.016393, 0.016393, 51.87848795], [1516611300000, 0.016393, 0.016522, 0.01639128, 0.01639128, 105.02482018], [1516611360000, 0.01644, 0.01645644, 0.01644, 0.01645644, 4.45257163], [1516611420000, 0.01649227, 0.01652695, 0.01644, 0.01649227, 56.08374383], [1516611480000, 0.01645644, 0.01645644, 0.016393, 0.01645644, 6.4066233], [1516611540000, 0.01639307, 0.01649285, 0.01639299, 0.01639328, 9.47478528], [1516611600000, 0.01639328, 0.016537, 0.01639328, 0.016537, 11.95897932], [1516611660000, 0.01640193, 0.01653688, 0.01640193, 0.01648732, 14.28172677], [1516611720000, 0.01648732, 0.01648732, 0.01640254, 0.016406, 2.2006946], [1516611780000, 0.016405, 0.01652254, 0.016405, 0.01652254, 18.37427845], [1516611840000, 0.01648732, 0.01648733, 0.01648732, 0.01648733, 12.08287555], [1516611900000, 0.0164061, 0.01648732, 0.016406, 0.016406, 3.92709458], [1516611960000, 0.01648487, 0.01648729, 0.01640601, 0.01645, 6.79442578], [1516612020000, 0.01645, 0.01645, 0.01640601, 0.01645, 21.69161656], [1516612080000, 0.01645, 0.016486, 0.01645, 0.016486, 24.38493426], [1516612140000, 0.01645001, 0.016486, 0.01645, 0.016486, 10.00115523], [1516612200000, 0.01645001, 0.016486, 0.01645, 0.01645, 54.74727473], [1516612260000, 0.016486, 0.01648601, 0.01645, 0.01645, 20.39622448], [1516612320000, 0.01648, 0.01648, 0.01641015, 0.01645, 33.49251572], [1516612380000, 0.01648, 0.01648, 0.01640601, 0.01640601, 12.54494209], [1516612440000, 0.01641014, 0.01646175, 0.01640602, 0.01646175, 29.9846517], [1516612500000, 0.01646176, 0.01646176, 0.01641013, 0.01641013, 7.20606614], [1516612560000, 0.01645, 0.01647865, 0.01640602, 0.01640602, 7.66466804], [1516612620000, 0.01640602, 0.01647832, 0.01640602, 0.01640605, 7.96346338], [1516612680000, 0.016478, 0.01647992, 0.01640605, 0.01647992, 9.82676339], [1516612740000, 0.01647992, 0.01647992, 0.01640605, 0.01640605, 2.74939069], [1516612800000, 0.0164599, 0.0164599, 0.01640605, 0.01640606, 9.11843786], [1516612860000, 0.0164599, 0.01645992, 0.0164599, 0.01645992, 15.51289813], [1516612920000, 0.01645992, 0.01645992, 0.01645992, 0.01645992, 0.06720116], [1516612980000, 0.01645992, 0.01645993, 0.01645992, 0.01645992, 8.54801028], [1516613040000, 0.0164599, 0.01647992, 0.0164599, 0.01647992, 19.40248818], [1516613100000, 0.01647992, 0.01647992, 0.01640605, 0.01640605, 12.92715642], [1516613160000, 0.01640606, 0.01640606, 0.01640606, 0.01640606, 1.25252127], [1516613220000, 0.01640606, 0.01647992, 0.01640605, 0.01640605, 1.76446454], [1516613280000, 0.016411, 0.016411, 0.01640605, 0.01640605, 3.13291512], [1516613340000, 0.01640605, 0.01647992, 0.01640605, 0.01640608, 5.01592023], [1516613400000, 0.01640608, 0.0164799, 0.01640608, 0.01640613, 15.14314733], [1516613460000, 0.0164799, 0.0164799, 0.01640613, 0.0164799, 6.19894903], [1516613520000, 0.0164799, 0.01647992, 0.01642, 0.01647992, 56.10372509], [1516613580000, 0.01647992, 0.01647992, 0.016425, 0.016425, 4.09963985], [1516613640000, 0.01643, 0.01648, 0.01643, 0.01643, 34.53914428], [1516613700000, 0.01647965, 0.01647965, 0.01647965, 0.01647965, 6.17299449], [1516613760000, 0.01647965, 0.01647965, 0.01643, 0.01647965, 46.50752916], [1516613820000, 0.01647965, 0.01647965, 0.01647965, 0.01647965, 5.46526629], [1516613880000, 0.01647999, 0.01647999, 0.01647965, 0.01647965, 1.06693596], [1516613940000, 0.01647965, 0.01647999, 0.01647965, 0.01647965, 13.75383061], [1516614000000, 0.01647999, 0.01647999, 0.01643, 0.01643, 15.63289549], [1516614060000, 0.01647965, 0.01647965, 0.01643, 0.016431, 6.11386024], [1516614120000, 0.016431, 0.01647997, 0.016431, 0.01647997, 11.80189073], [1516614180000, 0.016431, 0.01647999, 0.01643049, 0.0164311, 4.33479873], [1516614240000, 0.016431, 0.01648427, 0.01643051, 0.01648394, 11.96530435], [1516614300000, 0.01648394, 0.01648394, 0.01643099, 0.01643099, 16.18410963], [1516614360000, 0.01643099, 0.01647896, 0.01643099, 0.01643099, 3.23779819], [1516614420000, 0.01643099, 0.01643099, 0.01640604, 0.01640604, 60.21175534], [1516614480000, 0.01643098, 0.01648168, 0.01640604, 0.01640604, 51.29024324], [1516614540000, 0.01640604, 0.01646999, 0.01640604, 0.01640604, 12.83232506], [1516614600000, 0.01646997, 0.01646998, 0.01640604, 0.01646997, 1.66518049], [1516614660000, 0.01640604, 0.0164594, 0.01640604, 0.0164594, 0.3519956], [1516614720000, 0.01640604, 0.01646997, 0.01640604, 0.01640604, 6.05014139], [1516614780000, 0.0164061, 0.01646997, 0.0164061, 0.0164061, 16.56142186], [1516614840000, 0.01646998, 0.01646998, 0.01640611, 0.01640611, 3.45595454], [1516614900000, 0.0164699, 0.01647, 0.01640611, 0.01647, 39.99236838], [1516614960000, 0.01640611, 0.01646966, 0.01640611, 0.01646966, 7.2887845], [1516615020000, 0.01646989, 0.01646989, 0.01640604, 0.01640604, 18.27357974], [1516615080000, 0.01641, 0.01646967, 0.01640611, 0.01641, 34.68789867], [1516615140000, 0.01640611, 0.01640611, 0.01640604, 0.01640604, 0.55064683], [1516615200000, 0.0164181, 0.01645, 0.0164181, 0.01645, 12.81220756], [1516615260000, 0.0164181, 0.01642, 0.0164181, 0.0164181, 3.53467631], [1516615320000, 0.0164181, 0.01644958, 0.0164181, 0.0164181, 11.60491047], [1516615380000, 0.01645, 0.01645, 0.01641821, 0.01641821, 11.26601739], [1516615440000, 0.01641821, 0.01645, 0.01641821, 0.01641966, 10.93917806], [1516615500000, 0.01645, 0.01645, 0.01641966, 0.01641966, 17.79503768], [1516615560000, 0.01645, 0.01645, 0.01641966, 0.01645, 4.80816569], [1516615620000, 0.01645, 0.01645, 0.01641966, 0.01641966, 11.63056891], [1516615680000, 0.016449, 0.016449, 0.01641966, 0.016449, 8.54136023], [1516615740000, 0.016449, 0.016449, 0.01641966, 0.016449, 8.03194646], [1516615800000, 0.016449, 0.01645, 0.016449, 0.01645, 2.33653534], [1516615860000, 0.01645, 0.01645, 0.016439, 0.01644, 5.07308884], [1516615920000, 0.01644841, 0.01645, 0.01644, 0.01644, 12.23443862], [1516615980000, 0.01644, 0.01644001, 0.01644, 0.01644, 4.058945], [1516616040000, 0.01644, 0.01644001, 0.01644, 0.01644001, 21.19730953], [1516616100000, 0.01644001, 0.01645, 0.01644, 0.01644, 9.94322749], [1516616160000, 0.01645, 0.01645, 0.01641821, 0.01644002, 42.49609311], [1516616220000, 0.016439, 0.01647, 0.0164081, 0.0164081, 140.05416521], [1516616280000, 0.016439, 0.016439, 0.0164081, 0.0164081, 37.61299994], [1516616340000, 0.016439, 0.01647, 0.0164081, 0.0164081, 35.77472095], [1516616400000, 0.01645, 0.01647, 0.0164081, 0.0164081, 16.16385163], [1516616460000, 0.0164081, 0.01647, 0.0164081, 0.0164081, 4.71897276], [1516616520000, 0.01643355, 0.01647, 0.01643355, 0.01646, 13.06308875], [1516616580000, 0.01646, 0.01647, 0.01646, 0.01646, 23.54456866], [1516616640000, 0.01646, 0.01647, 0.01646, 0.01646, 17.31591845], [1516616700000, 0.01646, 0.01647, 0.01646, 0.01647, 57.44024924], [1516616760000, 0.01647, 0.01647, 0.01646, 0.01646, 13.32907207], [1516616820000, 0.01646, 0.01647, 0.01646, 0.01647, 2.35602616], [1516616880000, 0.0164601, 0.01647, 0.0164601, 0.01647, 8.82089265], [1516616940000, 0.01647, 0.01647, 0.01646, 0.01646, 8.63026019], [1516617000000, 0.0164601, 0.01647, 0.01646, 0.01647, 26.09717477], [1516617060000, 0.01647, 0.01647, 0.0164601, 0.01647, 14.69145996], [1516617120000, 0.0164601, 0.01647, 0.0164601, 0.0164601, 25.25417986], [1516617180000, 0.0164601, 0.01647, 0.01646, 0.01646, 41.8778068], [1516617240000, 0.01646, 0.01647, 0.01641001, 0.01646, 45.46693944], [1516617300000, 0.01646, 0.01646, 0.01641001, 0.01641001, 9.11023001], [1516617360000, 0.01641001, 0.01646, 0.01641001, 0.01646, 4.51501504], [1516617420000, 0.01641001, 0.01646, 0.01641001, 0.01641001, 15.42911711], [1516617480000, 0.01646, 0.01646, 0.01641001, 0.01641001, 81.76765837], [1516617540000, 0.01646, 0.01646, 0.01641001, 0.01645864, 2.62309861], [1516617600000, 0.01645967, 0.01646, 0.01641001, 0.01645, 14.51633917], [1516617660000, 0.01645, 0.01647, 0.01645, 0.01645, 285.89572185], [1516617720000, 0.01645, 0.01646999, 0.01641001, 0.01641001, 44.65127305], [1516617780000, 0.01641001, 0.01646999, 0.01641, 0.01641, 30.17958067], [1516617840000, 0.01647, 0.01647, 0.01640601, 0.01647, 31.56130611], [1516617900000, 0.01646967, 0.0164846, 0.016405, 0.01647, 61.87865346], [1516617960000, 0.01647, 0.01647, 0.01639187, 0.01639187, 12.93858125], [1516618020000, 0.01639187, 0.01639187, 0.01638, 0.01639187, 51.58279159], [1516618080000, 0.01644327, 0.01644327, 0.01639186, 0.01644327, 14.52618683], [1516618140000, 0.01644328, 0.01648459, 0.01639186, 0.01647327, 10.4348443], [1516618200000, 0.01647327, 0.01647327, 0.01639297, 0.01639297, 11.96448558], [1516618260000, 0.01647325, 0.01647325, 0.01639297, 0.01646, 15.72409493], [1516618320000, 0.01646, 0.01646, 0.0163995, 0.0163995, 1.68458297], [1516618380000, 0.0163995, 0.01645, 0.0163995, 0.0163995, 2.93990109], [1516618440000, 0.01644328, 0.01644328, 0.0163995, 0.0163995, 29.28440105], [1516618500000, 0.0163995, 0.01640589, 0.01639297, 0.01639297, 19.98738323], [1516618560000, 0.01644328, 0.01648459, 0.01640589, 0.01640589, 56.48659393], [1516618620000, 0.01645988, 0.01645988, 0.01645988, 0.01645988, 7.54801648], [1516618680000, 0.01645988, 0.0164599, 0.01640588, 0.0164599, 50.89835518], [1516618740000, 0.0164599, 0.0164599, 0.01635253, 0.01645979, 40.35443003], [1516618800000, 0.0164588, 0.01648459, 0.01635297, 0.01635297, 66.05951757], [1516618860000, 0.01635302, 0.01650534, 0.01635302, 0.01646582, 37.73467354], [1516618920000, 0.01646582, 0.01650529, 0.01635428, 0.01649997, 41.34442911], [1516618980000, 0.01635447, 0.01648993, 0.01635151, 0.01648993, 210.56196517], [1516619040000, 0.01648991, 0.01648991, 0.01635153, 0.01644018, 10.82245291], [1516619100000, 0.01644018, 0.0164599, 0.01635156, 0.01644018, 46.11578294], [1516619160000, 0.01644018, 0.01648578, 0.0163549, 0.01635491, 13.67678662], [1516619220000, 0.01635491, 0.01644018, 0.01635491, 0.01644018, 3.67774781], [1516619280000, 0.01644018, 0.01644018, 0.01635491, 0.01644018, 19.37510663], [1516619340000, 0.01635491, 0.01644018, 0.01635491, 0.016439, 21.64273768], [1516619400000, 0.01644018, 0.01644018, 0.016439, 0.016439, 3.37241888], [1516619460000, 0.016439, 0.01644018, 0.01635186, 0.01635188, 7.04798807], [1516619520000, 0.01644017, 0.01644018, 0.01635196, 0.01644018, 21.86183812], [1516619580000, 0.01644017, 0.01644017, 0.016352, 0.016355, 23.20230101], [1516619640000, 0.01643973, 0.01643973, 0.01635525, 0.01635525, 2.04674912], [1516619700000, 0.01635526, 0.01643973, 0.01635526, 0.016366, 3.88450979], [1516619760000, 0.016366, 0.01643973, 0.016366, 0.016366, 5.11520819], [1516619820000, 0.0164, 0.0164164, 0.016366, 0.016366, 22.37863021], [1516619880000, 0.016366, 0.01644018, 0.016366, 0.01637565, 41.14093235], [1516619940000, 0.0164394, 0.01644018, 0.016431, 0.01644018, 5.45335509], [1516620000000, 0.0164394, 0.01644018, 0.0164394, 0.0164394, 3.11473117], [1516620060000, 0.0164394, 0.01644, 0.01639895, 0.01639895, 17.87357744], [1516620120000, 0.01637011, 0.01644, 0.01637001, 0.01644, 3.99138851], [1516620180000, 0.01644, 0.01644, 0.01641922, 0.01641922, 12.48816528], [1516620240000, 0.01641922, 0.01641922, 0.01641922, 0.01641922, 0.21333884], [1516620300000, 0.01641922, 0.01641922, 0.01637, 0.01637, 11.63780128], [1516620360000, 0.01641922, 0.01644, 0.01641922, 0.01643967, 38.04996516], [1516620420000, 0.0164395, 0.01644, 0.01641922, 0.01641922, 12.30635231], [1516620480000, 0.01641922, 0.01644, 0.01641922, 0.0164395, 1.561048], [1516620540000, 0.0164395, 0.01644, 0.01641922, 0.01643967, 1.95986507], [1516620600000, 0.01643967, 0.01643967, 0.016355, 0.01637, 22.78060644], [1516620660000, 0.01641922, 0.01643802, 0.01641922, 0.01641923, 27.42186157], [1516620720000, 0.01643892, 0.01648431, 0.01641923, 0.01641923, 37.45635429], [1516620780000, 0.01641923, 0.01643977, 0.01637001, 0.01641923, 16.02626259], [1516620840000, 0.01641923, 0.01648433, 0.01641909, 0.01648267, 68.29032536], [1516620900000, 0.01638401, 0.01648267, 0.01638401, 0.01648267, 28.00211594], [1516620960000, 0.01643914, 0.01643914, 0.01641935, 0.01643914, 3.13245068], [1516621020000, 0.01648164, 0.01648545, 0.01638001, 0.01638001, 13.92128877], [1516621080000, 0.01648545, 0.01648545, 0.01638003, 0.01642915, 5.43252424], [1516621140000, 0.01642915, 0.016485, 0.01642915, 0.016485, 2.7651539], [1516621200000, 0.016485, 0.016485, 0.01648467, 0.01648467, 14.85164644], [1516621260000, 0.01648467, 0.016485, 0.01638002, 0.01638002, 21.4895951], [1516621320000, 0.01638003, 0.01648467, 0.01638001, 0.01638403, 9.32821116], [1516621380000, 0.01638402, 0.01648577, 0.01638402, 0.01648464, 21.22614965], [1516621440000, 0.01639002, 0.01648465, 0.01639, 0.01648463, 11.48234199], [1516621500000, 0.01648463, 0.01648465, 0.01639, 0.01639922, 6.23710752], [1516621560000, 0.01648465, 0.01648465, 0.01639, 0.016481, 35.38828139], [1516621620000, 0.01639, 0.01648465, 0.01639, 0.01648465, 17.03667608], [1516621680000, 0.01639922, 0.01648464, 0.01635372, 0.01648322, 41.50233463], [1516621740000, 0.01648322, 0.01648464, 0.01637407, 0.01639992, 30.20839457], [1516621800000, 0.01639992, 0.01648465, 0.01637419, 0.01648, 87.54050857], [1516621860000, 0.01638119, 0.016479, 0.01638119, 0.0163813, 3.50413061], [1516621920000, 0.01638133, 0.01638661, 0.01638133, 0.01638661, 5.06217015], [1516621980000, 0.01641643, 0.01647899, 0.01639929, 0.01647899, 43.73305477], [1516622040000, 0.01641645, 0.016479, 0.01641643, 0.01641644, 21.89385278], [1516622100000, 0.01647899, 0.016479, 0.01641644, 0.01642001, 40.31746957], [1516622160000, 0.01642002, 0.01648465, 0.01642002, 0.01648465, 71.28101806], [1516622220000, 0.01648465, 0.01651498, 0.01645001, 0.01651498, 102.74566747], [1516622280000, 0.01651, 0.0165368, 0.01651, 0.01653678, 9.01578475], [1516622340000, 0.01653678, 0.0165368, 0.01647998, 0.01647998, 136.76442068], [1516622400000, 0.01654283, 0.01655, 0.01654283, 0.01655, 42.20701456], [1516622460000, 0.01654283, 0.01654967, 0.01654283, 0.01654283, 32.04340205], [1516622520000, 0.01654283, 0.01654865, 0.01646011, 0.01647513, 64.44635932], [1516622580000, 0.01647513, 0.01654665, 0.01647513, 0.01647513, 41.42659304], [1516622640000, 0.01647514, 0.01647998, 0.01647513, 0.01647513, 16.85112866], [1516622700000, 0.01647513, 0.01654797, 0.01647513, 0.01654283, 33.87917079], [1516622760000, 0.01652455, 0.01652455, 0.01647513, 0.0164766, 8.43789319], [1516622820000, 0.01647965, 0.01647998, 0.01647965, 0.01647998, 3.72770267], [1516622880000, 0.01647965, 0.01647998, 0.01647513, 0.01647513, 21.98877116], [1516622940000, 0.01647627, 0.01647998, 0.0164762, 0.01647998, 17.03338543], [1516623000000, 0.01647998, 0.0165475, 0.01647998, 0.01647999, 3.83091215], [1516623060000, 0.0165475, 0.01655971, 0.01647999, 0.01647999, 55.91943248], [1516623120000, 0.01647999, 0.01655996, 0.01647999, 0.01648, 10.08474131], [1516623180000, 0.0165459, 0.0165459, 0.01641657, 0.01648, 34.93345252], [1516623240000, 0.01648, 0.01648, 0.01648, 0.01648, 18.89890077], [1516623300000, 0.0165, 0.0165, 0.0165, 0.0165, 20.56559858], [1516623360000, 0.0165459, 0.0165459, 0.01650001, 0.01650001, 6.30409707], [1516623420000, 0.01650001, 0.01654591, 0.01650001, 0.01651144, 8.84294132], [1516623480000, 0.01652144, 0.0165459, 0.01652144, 0.01654588, 2.73105534], [1516623540000, 0.01654588, 0.01654588, 0.01654587, 0.01654588, 51.07111727], [1516623600000, 0.01654588, 0.01654588, 0.01643201, 0.01643502, 36.46079467], [1516623660000, 0.01643902, 0.0165, 0.01643521, 0.0165, 17.51928075], [1516623720000, 0.0164352, 0.01654588, 0.01641836, 0.01654588, 27.42123972], [1516623780000, 0.01654588, 0.01654591, 0.01641661, 0.01654591, 17.83789027], [1516623840000, 0.01641837, 0.01657, 0.01641837, 0.01650785, 13.31104201], [1516623900000, 0.01641848, 0.01650783, 0.01641848, 0.01650782, 1.69041926], [1516623960000, 0.01650782, 0.01650783, 0.01642134, 0.01645007, 16.45274531], [1516624020000, 0.0165, 0.01650782, 0.01642161, 0.01649007, 13.65149057], [1516624080000, 0.01647085, 0.01649007, 0.01647085, 0.01649007, 4.45572669], [1516624140000, 0.01649007, 0.01649007, 0.01647085, 0.01647085, 8.29162119], [1516624200000, 0.01647086, 0.01650785, 0.01647085, 0.01647085, 10.15470195], [1516624260000, 0.01647085, 0.01650782, 0.01647085, 0.01647086, 4.42881767], [1516624320000, 0.01650782, 0.01650782, 0.01647086, 0.016485, 30.01586279], [1516624380000, 0.016485, 0.01650785, 0.016485, 0.016485, 21.5022853], [1516624440000, 0.016485, 0.01650785, 0.016485, 0.01650785, 14.75783147], [1516624500000, 0.01650785, 0.01654699, 0.01647085, 0.01647085, 38.19373266], [1516624560000, 0.01647085, 0.01653199, 0.01647085, 0.01647085, 2.73948581], [1516624620000, 0.01647085, 0.01647085, 0.01642158, 0.01647085, 10.1464404], [1516624680000, 0.01647085, 0.01655674, 0.01643, 0.01643001, 20.95086383], [1516624740000, 0.01655673, 0.01655673, 0.01643006, 0.01647085, 80.18840225], [1516624800000, 0.01647085, 0.01655698, 0.01643005, 0.01655698, 47.79428964], [1516624860000, 0.01655666, 0.01655698, 0.01643006, 0.01643006, 3.40919538], [1516624920000, 0.01643005, 0.01655, 0.01643005, 0.01643011, 2.87972108], [1516624980000, 0.0165499, 0.01654998, 0.01643051, 0.01643051, 2.71148951], [1516625040000, 0.01654499, 0.01654499, 0.0164307, 0.01643073, 13.93974374], [1516625100000, 0.01643073, 0.01647989, 0.01643072, 0.01647989, 7.56118402], [1516625160000, 0.01654494, 0.01654967, 0.01647989, 0.01647989, 1.28617358], [1516625220000, 0.01654958, 0.01654958, 0.01644, 0.01644, 12.02983306], [1516625280000, 0.01644, 0.01647989, 0.01644, 0.01644, 0.45004522], [1516625340000, 0.01647989, 0.01647989, 0.01644001, 0.01644001, 2.48113105], [1516625400000, 0.01647989, 0.01647989, 0.01644002, 0.01644002, 23.37729119], [1516625460000, 0.01647989, 0.01647989, 0.01644002, 0.01647989, 10.01584371], [1516625520000, 0.01647989, 0.0165, 0.01644002, 0.0165, 33.79819608], [1516625580000, 0.0165, 0.01653698, 0.016444, 0.016444, 24.33129602], [1516625640000, 0.016444, 0.01653653, 0.016444, 0.01653632, 10.53751809], [1516625700000, 0.0164446, 0.0165363, 0.0164446, 0.016445, 4.29253039], [1516625760000, 0.01652099, 0.01653625, 0.01644501, 0.01644501, 4.27179419], [1516625820000, 0.01645, 0.01653606, 0.01645, 0.0164501, 8.45356745], [1516625880000, 0.01653493, 0.01653493, 0.01644501, 0.01644501, 42.48827202], [1516625940000, 0.01644501, 0.01653424, 0.01644501, 0.01644502, 29.30134541], [1516626000000, 0.01649434, 0.01652886, 0.01649434, 0.01652886, 2.87567133], [1516626060000, 0.016528, 0.016528, 0.01649434, 0.01649434, 4.35464523], [1516626120000, 0.01649434, 0.01649434, 0.01644502, 0.01644502, 1.56449223], [1516626180000, 0.01644502, 0.01649433, 0.01644502, 0.01649433, 7.71167725], [1516626240000, 0.01649434, 0.01652799, 0.01649433, 0.01649433, 4.39738312], [1516626300000, 0.01649432, 0.01649432, 0.01644501, 0.0164943, 18.84197157], [1516626360000, 0.01644502, 0.01644502, 0.016445, 0.016445, 38.81278695], [1516626420000, 0.0164943, 0.0164943, 0.0164943, 0.0164943, 7.4276277], [1516626480000, 0.01644501, 0.016528, 0.01644501, 0.016496, 27.64077583], [1516626540000, 0.0164943, 0.0165, 0.0164943, 0.0164943, 12.2395002], [1516626600000, 0.0165, 0.01653632, 0.0164943, 0.0164943, 16.15222422], [1516626660000, 0.01653632, 0.01653841, 0.01649429, 0.01649429, 97.26851026], [1516626720000, 0.01649396, 0.01655, 0.01643072, 0.01643072, 321.0747854], [1516626780000, 0.01643072, 0.01644501, 0.01641224, 0.01641224, 26.67323573], [1516626840000, 0.01641832, 0.01652497, 0.01641831, 0.01641831, 29.00781713], [1516626900000, 0.01652486, 0.01652486, 0.01641227, 0.01651, 9.59990991], [1516626960000, 0.01651, 0.01651, 0.01638332, 0.01639301, 50.91432482], [1516627020000, 0.01641831, 0.01651, 0.01639301, 0.01639324, 44.76550504], [1516627080000, 0.01639313, 0.01650499, 0.01638831, 0.01641861, 12.11730634], [1516627140000, 0.01641861, 0.01650996, 0.01637879, 0.01637879, 108.25393944], [1516627200000, 0.01641882, 0.01641882, 0.01637412, 0.01637878, 24.39604962], [1516627260000, 0.01637878, 0.01637878, 0.01635928, 0.01637876, 76.42013349], [1516627320000, 0.01637878, 0.01637878, 0.01636, 0.01636, 22.6256045], [1516627380000, 0.01637682, 0.01641882, 0.01637, 0.01639513, 40.52047605], [1516627440000, 0.01639513, 0.01639513, 0.01637, 0.01637002, 28.84332098], [1516627500000, 0.01639513, 0.016485, 0.01637, 0.01648499, 110.34837445], [1516627560000, 0.01648499, 0.01648999, 0.01637003, 0.01637003, 14.81781391], [1516627620000, 0.01637003, 0.016475, 0.01636, 0.01636, 37.27547628], [1516627680000, 0.01648, 0.01648, 0.0163515, 0.01641455, 83.35060263], [1516627740000, 0.01646496, 0.01646496, 0.01636, 0.01636, 53.03971598], [1516627800000, 0.01636, 0.01639932, 0.0163515, 0.0163515, 10.40091053], [1516627860000, 0.01639932, 0.01641455, 0.01634492, 0.01634492, 85.33148959], [1516627920000, 0.0163515, 0.01641455, 0.01631688, 0.01641455, 31.34101125], [1516627980000, 0.01631688, 0.01646233, 0.01630001, 0.01646233, 95.46159538], [1516628040000, 0.01641439, 0.01646492, 0.0163, 0.0163, 59.4192249], [1516628100000, 0.01638553, 0.01641455, 0.01629754, 0.01641455, 98.74956425], [1516628160000, 0.01638037, 0.01638037, 0.01629, 0.01638037, 8.50822135], [1516628220000, 0.01638037, 0.01641455, 0.01629152, 0.01638037, 14.1725114], [1516628280000, 0.01641455, 0.01641455, 0.01638037, 0.01638037, 7.407997], [1516628340000, 0.01630001, 0.01641, 0.01630001, 0.01638037, 17.89118603], [1516628400000, 0.01638037, 0.01641455, 0.016311, 0.016311, 17.50330976], [1516628460000, 0.016311, 0.01641455, 0.016311, 0.01635, 72.00207607], [1516628520000, 0.01635, 0.01641455, 0.01635, 0.01641455, 83.84740389], [1516628580000, 0.01635, 0.016455, 0.01635, 0.01635, 384.43927551], [1516628640000, 0.01635001, 0.016443, 0.016316, 0.01635, 84.73528351], [1516628700000, 0.01632, 0.01641443, 0.01631101, 0.01633515, 18.72973616], [1516628760000, 0.01633515, 0.01641443, 0.0163259, 0.0163259, 117.02901372], [1516628820000, 0.01641443, 0.01641443, 0.0163259, 0.01641443, 3.21160801], [1516628880000, 0.01641443, 0.01641443, 0.01635, 0.01635, 16.41197537], [1516628940000, 0.01635, 0.01641442, 0.01635, 0.01641442, 28.68179815], [1516629000000, 0.016409, 0.01641443, 0.0162801, 0.0162855, 61.52648109], [1516629060000, 0.016409, 0.016409, 0.01628011, 0.01628012, 17.46562798], [1516629120000, 0.01628011, 0.016409, 0.01628011, 0.01628011, 102.54868439], [1516629180000, 0.0162801, 0.01640898, 0.0162801, 0.01628077, 7.22067819], [1516629240000, 0.01640896, 0.016409, 0.0162808, 0.016409, 58.49541573], [1516629300000, 0.016409, 0.01649661, 0.016409, 0.01642841, 106.17664906], [1516629360000, 0.01642841, 0.01647301, 0.01642539, 0.01647301, 20.05834327], [1516629420000, 0.01647301, 0.01649662, 0.01647301, 0.01648948, 33.94194676], [1516629480000, 0.01648948, 0.01650651, 0.01647301, 0.01647301, 91.2208414], [1516629540000, 0.01647301, 0.01650651, 0.0164256, 0.016506, 77.88842668], [1516629600000, 0.016506, 0.01650747, 0.016506, 0.01650747, 25.77510341], [1516629660000, 0.01650766, 0.0165263, 0.0165, 0.0165, 49.41032471], [1516629720000, 0.0165263, 0.016545, 0.01649662, 0.01649662, 32.43988396], [1516629780000, 0.01649662, 0.01653199, 0.01638294, 0.01638407, 37.26586487], [1516629840000, 0.01638299, 0.01653697, 0.01637008, 0.01637008, 81.09630904], [1516629900000, 0.01653498, 0.016545, 0.01635258, 0.0164301, 105.74776718], [1516629960000, 0.0165, 0.01651499, 0.01639001, 0.0164301, 25.51816039], [1516630020000, 0.0164301, 0.016521, 0.01639, 0.01639009, 21.07766166], [1516630080000, 0.01651998, 0.016521, 0.01638981, 0.01643011, 173.54286327], [1516630140000, 0.01651987, 0.016535, 0.01643011, 0.016435, 45.87222475], [1516630200000, 0.01650294, 0.01655, 0.01650294, 0.0165465, 32.56671706], [1516630260000, 0.0165465, 0.0165465, 0.016435, 0.016435, 61.21092889], [1516630320000, 0.01652, 0.01654998, 0.01647, 0.01653, 32.24514576], [1516630380000, 0.01653, 0.01655, 0.01653, 0.01653, 254.15763861], [1516630440000, 0.016535, 0.01655, 0.01653, 0.01655, 52.28462964], [1516630500000, 0.01655, 0.01655, 0.01647, 0.01655, 16.4546881], [1516630560000, 0.01647, 0.01655, 0.01644501, 0.01653, 17.64867888], [1516630620000, 0.01654, 0.01654, 0.0165, 0.01650011, 32.96849747], [1516630680000, 0.01654, 0.01654, 0.01650011, 0.01651, 22.42371729], [1516630740000, 0.01651, 0.01654, 0.01651, 0.01654, 23.59302539], [1516630800000, 0.01654, 0.01655, 0.01654, 0.01654, 30.04761761], [1516630860000, 0.01654967, 0.01655, 0.01654, 0.01654, 19.08984062], [1516630920000, 0.01654, 0.01655, 0.01651, 0.01655, 43.22300308], [1516630980000, 0.01654999, 0.016577, 0.0165, 0.016577, 332.32255409], [1516631040000, 0.016577, 0.016587, 0.01655, 0.01655, 88.52045685], [1516631100000, 0.0165502, 0.01656, 0.01655, 0.01656, 49.27790845], [1516631160000, 0.01656, 0.01659378, 0.01656, 0.01659378, 44.10443438], [1516631220000, 0.0165935, 0.01659378, 0.0165935, 0.01659378, 11.44743047], [1516631280000, 0.01659378, 0.016597, 0.01659378, 0.01659378, 41.70784272], [1516631340000, 0.01659378, 0.0166, 0.01659378, 0.016597, 41.03331366], [1516631400000, 0.016597, 0.016601, 0.016597, 0.016597, 35.60808853], [1516631460000, 0.016597, 0.01660898, 0.0164, 0.01660898, 347.77689155], [1516631520000, 0.016601, 0.01660898, 0.01647001, 0.01657456, 5.93060297], [1516631580000, 0.01657456, 0.016597, 0.01657456, 0.01657456, 55.35856561], [1516631640000, 0.01657456, 0.016619, 0.01649001, 0.01659, 104.59716917], [1516631700000, 0.01652046, 0.01662977, 0.01652046, 0.01662977, 7.14262561], [1516631760000, 0.01652091, 0.01662975, 0.01652087, 0.01659805, 19.14751953], [1516631820000, 0.01659805, 0.01659806, 0.01659805, 0.01659805, 13.76451076], [1516631880000, 0.01659805, 0.01659805, 0.01652174, 0.01659805, 5.6998418], [1516631940000, 0.01659805, 0.01662975, 0.01656485, 0.01659805, 24.61388672], [1516632000000, 0.01656485, 0.01662977, 0.01656485, 0.01659805, 16.01321172], [1516632060000, 0.016628, 0.016628, 0.01656485, 0.01656485, 28.14302155], [1516632120000, 0.01656485, 0.01656487, 0.01652095, 0.01652205, 63.28060055], [1516632180000, 0.01652209, 0.01656484, 0.01652209, 0.01655654, 23.35395312], [1516632240000, 0.01656485, 0.016598, 0.01655654, 0.01655666, 15.91703507], [1516632300000, 0.01655666, 0.01657, 0.0165209, 0.01657, 28.28457978], [1516632360000, 0.01652091, 0.01657, 0.01650805, 0.01650805, 58.62685202], [1516632420000, 0.01652091, 0.01652091, 0.01643301, 0.01650805, 29.22090042], [1516632480000, 0.01650805, 0.01652, 0.01650805, 0.016519, 24.36401298], [1516632540000, 0.016519, 0.01652091, 0.01643538, 0.01652091, 89.81411903], [1516632600000, 0.01652, 0.01652091, 0.01648468, 0.01649, 14.68650489], [1516632660000, 0.01652091, 0.01652091, 0.01643503, 0.0165, 28.35625529], [1516632720000, 0.0165, 0.01652091, 0.0165, 0.0165, 289.76771478], [1516632780000, 0.0165209, 0.01652091, 0.01646517, 0.01652091, 204.86412549], [1516632840000, 0.01652091, 0.01652091, 0.01646616, 0.01650001, 150.62037672], [1516632900000, 0.01652091, 0.01663, 0.016483, 0.0164831, 124.19984282], [1516632960000, 0.01648312, 0.0166297, 0.01648312, 0.0164901, 9.44312744], [1516633020000, 0.01649018, 0.01661999, 0.01649018, 0.01661999, 220.78318731], [1516633080000, 0.01650004, 0.01662967, 0.01650003, 0.01651007, 7.39493712], [1516633140000, 0.01651012, 0.01651029, 0.01651012, 0.01651029, 10.51145079], [1516633200000, 0.01652681, 0.01653, 0.01652681, 0.01653, 2.33821871], [1516633260000, 0.01654, 0.01657, 0.01654, 0.01654001, 14.22387255], [1516633320000, 0.01654001, 0.01657, 0.01654, 0.01657, 33.841966], [1516633380000, 0.01654003, 0.01657, 0.01654002, 0.01654003, 67.11473117], [1516633440000, 0.01654001, 0.01657, 0.01654001, 0.01654003, 24.59824247], [1516633500000, 0.01657, 0.01662456, 0.01654001, 0.01654001, 29.72478194], [1516633560000, 0.01654002, 0.01662432, 0.01654001, 0.01654005, 15.16487102], [1516633620000, 0.01654018, 0.01662432, 0.01654018, 0.01654018, 3.54467563], [1516633680000, 0.0166246, 0.01662465, 0.01654018, 0.01654028, 12.10500197], [1516633740000, 0.0165403, 0.01662927, 0.01654013, 0.01662927, 42.08379456], [1516633800000, 0.0165403, 0.016625, 0.01654001, 0.01654002, 93.10327717], [1516633860000, 0.01654002, 0.01663, 0.01654002, 0.01654013, 23.01965396], [1516633920000, 0.01663, 0.01663, 0.01654023, 0.01656131, 9.41819884], [1516633980000, 0.01657788, 0.01663, 0.01656131, 0.01663, 17.07908643], [1516634040000, 0.01663, 0.01663775, 0.01663, 0.01663, 38.59706051], [1516634100000, 0.01663, 0.016651, 0.01663, 0.01663, 77.46631822], [1516634160000, 0.01657787, 0.016646, 0.01656131, 0.01656131, 8.5537696], [1516634220000, 0.01656131, 0.016646, 0.01654252, 0.01654252, 6.94568163], [1516634280000, 0.01656131, 0.01664599, 0.01654002, 0.01658472, 14.71264606], [1516634340000, 0.01654252, 0.01658471, 0.01654252, 0.01654252, 6.60292754], [1516634400000, 0.01654253, 0.01658471, 0.01654252, 0.01658471, 60.56552903], [1516634460000, 0.01658471, 0.01658471, 0.0165426, 0.0165426, 13.00766134], [1516634520000, 0.0165426, 0.01655, 0.01654252, 0.01655, 8.91367394], [1516634580000, 0.01658471, 0.01658471, 0.01655, 0.016584, 11.15132982], [1516634640000, 0.01655011, 0.01658471, 0.01655011, 0.01658451, 51.21910977], [1516634700000, 0.01658451, 0.01659607, 0.01655001, 0.01659607, 33.7797675], [1516634760000, 0.01658471, 0.01659607, 0.01655, 0.01655001, 2.57837715], [1516634820000, 0.01655003, 0.01655003, 0.01655003, 0.01655003, 0.55339918], [1516634880000, 0.01655003, 0.016646, 0.01655001, 0.01659607, 54.88568645], [1516634940000, 0.01664599, 0.016651, 0.01659607, 0.01665099, 25.93223186], [1516635000000, 0.01665099, 0.01665099, 0.01659607, 0.01659607, 33.94193555], [1516635060000, 0.01659607, 0.01662127, 0.01659607, 0.01659607, 17.56945855], [1516635120000, 0.01659607, 0.016646, 0.01659607, 0.01659607, 108.54204147], [1516635180000, 0.01659607, 0.016651, 0.01655001, 0.01655032, 87.02952981], [1516635240000, 0.01659607, 0.01659607, 0.01655014, 0.01655014, 3.20541481], [1516635300000, 0.01659599, 0.01659607, 0.01655015, 0.01659607, 52.37840087], [1516635360000, 0.01659599, 0.01659607, 0.01659599, 0.01659607, 2.85955299], [1516635420000, 0.01655501, 0.01659, 0.01655007, 0.01655007, 15.37645489], [1516635480000, 0.01655503, 0.01659607, 0.01655503, 0.01655511, 47.83115529], [1516635540000, 0.01655511, 0.01659607, 0.01655256, 0.01659607, 28.1210767], [1516635600000, 0.01655511, 0.01659607, 0.01655011, 0.01659607, 6.826917], [1516635660000, 0.01655003, 0.0166001, 0.01655001, 0.0166001, 14.1880858], [1516635720000, 0.0166001, 0.01665594, 0.0166001, 0.0166001, 83.56695068], [1516635780000, 0.01665, 0.01669, 0.0166001, 0.0166001, 217.44077045], [1516635840000, 0.0166001, 0.0166517, 0.01655918, 0.0166517, 22.279], [1516635900000, 0.0166517, 0.0166517, 0.01655002, 0.01655002, 8.31323994], [1516635960000, 0.01655918, 0.0166517, 0.01655303, 0.01655305, 20.09796882], [1516636020000, 0.01655401, 0.01657055, 0.0165517, 0.01655485, 4.08468298], [1516636080000, 0.0166, 0.016684, 0.01655901, 0.016684, 17.30540564], [1516636140000, 0.016684, 0.016695, 0.01657484, 0.01658001, 62.27368585], [1516636200000, 0.01666999, 0.016675, 0.01658001, 0.0166, 242.734685], [1516636260000, 0.01658002, 0.016689, 0.01657484, 0.0166, 67.34909934], [1516636320000, 0.0166, 0.0166, 0.0166, 0.0166, 10.193521], [1516636380000, 0.01668897, 0.01669899, 0.01660001, 0.016601, 46.68521102], [1516636440000, 0.01660101, 0.016695, 0.016601, 0.016601, 9.11303878], [1516636500000, 0.016601, 0.016695, 0.016601, 0.016601, 63.67400031], [1516636560000, 0.016601, 0.016601, 0.016601, 0.016601, 9.84821738], [1516636620000, 0.0166895, 0.01668991, 0.016601, 0.01668991, 2.96941813], [1516636680000, 0.01668991, 0.01668999, 0.016601, 0.01668704, 13.33674558], [1516636740000, 0.01668704, 0.01668704, 0.01660101, 0.0166011, 18.19345819], [1516636800000, 0.01668704, 0.01668916, 0.0166011, 0.0166011, 8.51925401], [1516636860000, 0.01662868, 0.01668999, 0.016602, 0.01661, 7.66546622], [1516636920000, 0.01661111, 0.0166511, 0.01661111, 0.01661111, 6.3202719], [1516636980000, 0.0166511, 0.01666591, 0.01662, 0.01663, 45.07696078], [1516637040000, 0.01666591, 0.01666591, 0.01663, 0.016635, 11.43869409], [1516637100000, 0.016635, 0.01665, 0.01661, 0.01661, 11.27500346], [1516637160000, 0.01663, 0.016631, 0.01663, 0.01663, 58.48012424], [1516637220000, 0.01663, 0.016631, 0.01663, 0.01663, 7.32087111], [1516637280000, 0.01663, 0.016635, 0.01663, 0.016635, 38.66955253], [1516637340000, 0.016635, 0.01666591, 0.01663, 0.01663, 137.80378365], [1516637400000, 0.01663, 0.016631, 0.01663, 0.01663, 89.38544473], [1516637460000, 0.01663, 0.016631, 0.01661, 0.01661339, 19.54435776], [1516637520000, 0.016631, 0.016631, 0.01655483, 0.01655483, 32.39161478], [1516637580000, 0.01658452, 0.016631, 0.01656001, 0.016631, 97.31185286], [1516637640000, 0.01656503, 0.016631, 0.01656501, 0.016631, 134.13430088], [1516637700000, 0.016631, 0.01666591, 0.016631, 0.01666591, 40.28333941], [1516637760000, 0.016631, 0.016631, 0.016631, 0.016631, 26.43222734], [1516637820000, 0.01663115, 0.01666875, 0.016631, 0.016631, 55.18659819], [1516637880000, 0.01663115, 0.01666591, 0.016631, 0.016631, 38.13020485], [1516637940000, 0.01663101, 0.01666591, 0.016631, 0.016631, 21.3597139], [1516638000000, 0.016631, 0.016647, 0.016566, 0.016566, 28.16177918], [1516638060000, 0.016566, 0.01663, 0.01655483, 0.0166, 12.4429212], [1516638120000, 0.0166, 0.01662, 0.01655483, 0.01655483, 9.15104316], [1516638180000, 0.0166, 0.01661967, 0.016557, 0.016557, 10.64856865], [1516638240000, 0.01661867, 0.016619, 0.016557, 0.016619, 16.21930002], [1516638300000, 0.016619, 0.016619, 0.016557, 0.016618, 3.40480052], [1516638360000, 0.016557, 0.01661795, 0.01655483, 0.01661795, 53.97085375], [1516638420000, 0.01661755, 0.01661795, 0.01655483, 0.01655483, 21.34271707], [1516638480000, 0.01655483, 0.01661795, 0.01655483, 0.01661795, 7.47768222], [1516638540000, 0.01655483, 0.0166179, 0.01655483, 0.0166179, 19.13865972], [1516638600000, 0.0166179, 0.0166179, 0.01655483, 0.01655483, 18.85551689], [1516638660000, 0.016614, 0.016614, 0.01655483, 0.01655483, 34.77991604], [1516638720000, 0.01655483, 0.0165999, 0.016545, 0.01655484, 53.27128518], [1516638780000, 0.0165999, 0.01661795, 0.01655484, 0.01655484, 93.27064987], [1516638840000, 0.01655484, 0.01661795, 0.01655484, 0.01655484, 8.80796608], [1516638900000, 0.0166138, 0.0166138, 0.01655484, 0.01655485, 12.07288933], [1516638960000, 0.01655485, 0.01655485, 0.01655485, 0.01655485, 5.15340253], [1516639020000, 0.01655485, 0.01655485, 0.01654001, 0.01654001, 54.9963096], [1516639080000, 0.01655485, 0.01655485, 0.01654001, 0.01654002, 3.31599042], [1516639140000, 0.01654002, 0.01654002, 0.01654001, 0.01654001, 9.5141697], [1516639200000, 0.01654001, 0.016616, 0.01654001, 0.016616, 32.76148012], [1516639260000, 0.01655485, 0.01655485, 0.01654001, 0.01654001, 4.74668075], [1516639320000, 0.01655485, 0.01661795, 0.01654001, 0.01654001, 55.03370523], [1516639380000, 0.01661795, 0.01666588, 0.01654002, 0.01654002, 119.25526818], [1516639440000, 0.01661765, 0.01661765, 0.01654004, 0.0165548, 19.17066914], [1516639500000, 0.0165548, 0.0165548, 0.01654001, 0.01654001, 103.35254176], [1516639560000, 0.01654001, 0.01655475, 0.01654001, 0.01655475, 22.07763312], [1516639620000, 0.01654001, 0.01655475, 0.01654001, 0.01655475, 34.10124376], [1516639680000, 0.01654128, 0.0166026, 0.01654128, 0.0166026, 77.34909747], [1516639740000, 0.0166026, 0.01664001, 0.016565, 0.016565, 99.63944391], [1516639800000, 0.01664, 0.01664, 0.01656497, 0.01663999, 12.48944305], [1516639860000, 0.01663999, 0.01664001, 0.01655007, 0.01655007, 65.36409551], [1516639920000, 0.01664001, 0.01664001, 0.016552, 0.016552, 8.87933781], [1516639980000, 0.01664001, 0.01664001, 0.016552, 0.016552, 1.0058274], [1516640040000, 0.0166, 0.0166, 0.016559, 0.0166, 12.43599294], [1516640100000, 0.0166, 0.0166, 0.016553, 0.01659998, 18.73372011], [1516640160000, 0.01659998, 0.0166, 0.01659998, 0.01659998, 13.81989932], [1516640220000, 0.0166, 0.0166, 0.016553, 0.016553, 20.78556433], [1516640280000, 0.0166, 0.0166, 0.0166, 0.0166, 7.37910781], [1516640340000, 0.0166, 0.0166, 0.01655301, 0.01655301, 1.61696466], [1516640400000, 0.0166, 0.0166, 0.016553, 0.016553, 8.4314764], [1516640460000, 0.016553, 0.0166, 0.016553, 0.0166, 2.63979878], [1516640520000, 0.0166, 0.0166, 0.016552, 0.0166, 15.64713871], [1516640580000, 0.0166, 0.0166, 0.016552, 0.0166, 2.60223727], [1516640640000, 0.0166, 0.0166, 0.01654, 0.01654, 8.84584538], [1516640700000, 0.016552, 0.01659999, 0.016552, 0.016553, 2.84236406], [1516640760000, 0.01659999, 0.01659999, 0.016553, 0.016553, 27.98481419], [1516640820000, 0.016553, 0.01659999, 0.016553, 0.01659999, 10.76840703], [1516640880000, 0.016553, 0.016553, 0.01651563, 0.01651563, 26.91621168], [1516640940000, 0.01653, 0.01659964, 0.01651498, 0.01651498, 8.76265838], [1516641000000, 0.01651563, 0.01659898, 0.01651168, 0.01655, 12.8501348], [1516641060000, 0.01651168, 0.0165432, 0.01651168, 0.01654318, 6.37102345], [1516641120000, 0.01654318, 0.01654318, 0.01651168, 0.01654285, 4.73548452], [1516641180000, 0.01654285, 0.01654316, 0.01650838, 0.01654285, 4.27694891], [1516641240000, 0.01651169, 0.01654314, 0.01650838, 0.01654314, 3.90243775], [1516641300000, 0.01652571, 0.01652571, 0.01652561, 0.01652571, 9.79138779], [1516641360000, 0.01652571, 0.01654318, 0.01650701, 0.01654318, 34.70176629], [1516641420000, 0.01654318, 0.01659865, 0.01654318, 0.01654318, 15.70278465], [1516641480000, 0.01654319, 0.01659898, 0.01652353, 0.01652901, 46.43330476], [1516641540000, 0.01652901, 0.01654, 0.01652901, 0.01654, 102.90253559], [1516641600000, 0.01652903, 0.01654, 0.01652901, 0.01654, 153.30412112], [1516641660000, 0.01655, 0.01659, 0.01655, 0.01659, 25.95525169], [1516641720000, 0.01658998, 0.0166, 0.01658998, 0.01659, 13.47925873], [1516641780000, 0.01658998, 0.01659, 0.01658998, 0.01659, 3.72266514], [1516641840000, 0.01659, 0.01659, 0.01655, 0.01655001, 21.95921537], [1516641900000, 0.01655, 0.01655414, 0.01655, 0.01655001, 11.95284198], [1516641960000, 0.01657, 0.016589, 0.01655001, 0.016589, 3.6541109], [1516642020000, 0.01655002, 0.01655002, 0.01655002, 0.01655002, 0.74171], [1516642080000, 0.01655002, 0.016589, 0.01655002, 0.016589, 6.75218301], [1516642140000, 0.01655004, 0.016589, 0.01655004, 0.016589, 15.16664629], [1516642200000, 0.016589, 0.016589, 0.01656, 0.01657, 19.62814568], [1516642260000, 0.01658898, 0.01658898, 0.01657, 0.01658657, 27.58166993], [1516642320000, 0.01658657, 0.01658898, 0.01652353, 0.01652353, 9.49399259], [1516642380000, 0.01658865, 0.01658865, 0.01652154, 0.01652154, 69.79001797], [1516642440000, 0.01652154, 0.01658832, 0.01652154, 0.01658831, 18.11844306], [1516642500000, 0.01658567, 0.01658567, 0.01652156, 0.01652157, 7.94224951], [1516642560000, 0.01657, 0.01657, 0.01656, 0.01657, 9.19303497], [1516642620000, 0.01657, 0.01657, 0.01652157, 0.01657, 10.94838991], [1516642680000, 0.01657, 0.01657, 0.01650702, 0.01657, 12.55576961], [1516642740000, 0.01657, 0.01657, 0.01656999, 0.01656999, 4.03358032], [1516642800000, 0.0165699, 0.01656999, 0.01654, 0.01656999, 68.76292071], [1516642860000, 0.01656999, 0.01657, 0.01654084, 0.01657, 22.42435103], [1516642920000, 0.01657, 0.01657, 0.01657, 0.01657, 5.79329134], [1516642980000, 0.01658831, 0.01658865, 0.01657, 0.01658865, 167.45179244], [1516643040000, 0.01658865, 0.01658865, 0.01657, 0.01658658, 28.88797114], [1516643100000, 0.01658658, 0.01658865, 0.01658658, 0.01658865, 3.86434757], [1516643160000, 0.01658865, 0.01658865, 0.01657, 0.01657, 4.93859095], [1516643220000, 0.01658865, 0.01662734, 0.016572, 0.01662734, 104.95715066], [1516643280000, 0.01663884, 0.01663884, 0.01663, 0.01663, 9.51556833], [1516643340000, 0.01663, 0.01663498, 0.01658865, 0.01663498, 13.59941223], [1516643400000, 0.01663498, 0.0166395, 0.01663498, 0.01663498, 12.54843856], [1516643460000, 0.01663498, 0.01663917, 0.01658865, 0.01663884, 36.77525706], [1516643520000, 0.01663884, 0.01663916, 0.01663, 0.01663916, 34.5660695], [1516643580000, 0.01663915, 0.01663916, 0.01654086, 0.01654086, 75.81488489], [1516643640000, 0.01657, 0.01657, 0.01654083, 0.01657, 12.63262814], [1516643700000, 0.01663916, 0.01663916, 0.01657, 0.01657, 38.1437696], [1516643760000, 0.016629, 0.016629, 0.01657, 0.01657, 1.44331968], [1516643820000, 0.016619, 0.016619, 0.01654, 0.01654001, 17.78393417], [1516643880000, 0.01657, 0.01662, 0.01654, 0.01662, 14.68299211], [1516643940000, 0.016625, 0.016625, 0.016555, 0.016555, 6.95311622], [1516644000000, 0.016555, 0.016555, 0.01654, 0.016555, 18.49555302], [1516644060000, 0.016555, 0.01662479, 0.01654501, 0.01662479, 3.82221354], [1516644120000, 0.01662, 0.016625, 0.01662, 0.01662, 4.63401358], [1516644180000, 0.01662, 0.01662479, 0.01654501, 0.01655502, 38.42162105], [1516644240000, 0.01662478, 0.01662478, 0.01655502, 0.01662478, 14.60447605], [1516644300000, 0.01662479, 0.016625, 0.01655504, 0.01662478, 12.96827282], [1516644360000, 0.01662478, 0.01662478, 0.01662478, 0.01662478, 19.48757904], [1516644420000, 0.01662478, 0.01662478, 0.01662478, 0.01662478, 0.42607082], [1516644480000, 0.01662478, 0.016634, 0.01655504, 0.01655504, 33.33441648], [1516644540000, 0.016629, 0.016629, 0.01655504, 0.01655504, 1.4745679], [1516644600000, 0.01655504, 0.016629, 0.01655504, 0.016629, 9.83931289], [1516644660000, 0.01662902, 0.01662904, 0.01655504, 0.01662902, 13.09498601], [1516644720000, 0.01662902, 0.01663899, 0.01655504, 0.01655504, 14.18773348], [1516644780000, 0.01662867, 0.01662867, 0.01655502, 0.01655504, 43.76563348], [1516644840000, 0.01655504, 0.01655504, 0.01655502, 0.01655504, 11.55135387], [1516644900000, 0.01655504, 0.01655504, 0.01653001, 0.01653001, 37.2763239], [1516644960000, 0.016555, 0.01655502, 0.01653, 0.01655502, 81.89068101], [1516645020000, 0.01655499, 0.01655499, 0.01654654, 0.01654654, 2.75510483], [1516645080000, 0.01654654, 0.01654654, 0.01653, 0.01653, 60.40108001], [1516645140000, 0.01654654, 0.01655499, 0.0165154, 0.0165491, 21.72242764], [1516645200000, 0.0165491, 0.01655499, 0.0165154, 0.0165491, 4.05069687], [1516645260000, 0.0165491, 0.0165491, 0.016549, 0.016549, 13.00397044], [1516645320000, 0.01651542, 0.01655499, 0.0165001, 0.01655499, 7.56738961], [1516645380000, 0.01655499, 0.01655499, 0.0165, 0.0165317, 30.89194512], [1516645440000, 0.01654909, 0.016623, 0.01654909, 0.01655499, 52.98354683], [1516645500000, 0.01655499, 0.01655499, 0.0165, 0.01654909, 139.79856055], [1516645560000, 0.01654909, 0.01655499, 0.01654909, 0.01654913, 27.96115749], [1516645620000, 0.01654913, 0.01655498, 0.01654909, 0.01655498, 11.69648628], [1516645680000, 0.01654909, 0.01655498, 0.01654909, 0.01654909, 38.44020499], [1516645740000, 0.01655, 0.01655499, 0.0165, 0.0165, 49.11416109], [1516645800000, 0.01655, 0.01655499, 0.01644, 0.01655499, 41.81502308], [1516645860000, 0.01655498, 0.01655499, 0.01644018, 0.01655499, 22.56504945], [1516645980000, 0.0164758, 0.01655299, 0.0164758, 0.01655, 12.54493646], [1516646040000, 0.0164758, 0.0164758, 0.0164758, 0.0164758, 11.47032815], [1516646100000, 0.0164402, 0.0164758, 0.0164402, 0.0164758, 9.21397425], [1516646160000, 0.0164758, 0.0164758, 0.0164403, 0.0164758, 21.40307594], [1516646220000, 0.0164758, 0.0165448, 0.0164758, 0.0165448, 1.28413662], [1516646280000, 0.0164758, 0.0164758, 0.0164402, 0.0164402, 25.0548766], [1516646340000, 0.0164402, 0.0165448, 0.0164402, 0.0165448, 5.73061761], [1516646400000, 0.016544, 0.0165448, 0.0164402, 0.0164731, 4.87276077], [1516646460000, 0.01645664, 0.0165448, 0.0164402, 0.0165448, 3.51764111], [1516646520000, 0.016544, 0.016544, 0.016544, 0.016544, 57.86098073], [1516646580000, 0.016544, 0.0165447, 0.016544, 0.0165447, 90.86676312], [1516646640000, 0.016544, 0.016544, 0.016544, 0.016544, 4.71649845], [1516646700000, 0.016544, 0.0165447, 0.016544, 0.016544, 58.54747247], [1516646760000, 0.016544, 0.0165447, 0.016544, 0.0165447, 18.74462955], [1516646820000, 0.0165447, 0.0165447, 0.016544, 0.016544, 4.85119554], [1516646880000, 0.01654405, 0.01654469, 0.016544, 0.01654469, 19.10159558], [1516646940000, 0.01654469, 0.01654469, 0.016544, 0.016544, 9.97652033], [1516647000000, 0.01654401, 0.01654468, 0.01654401, 0.01654468, 4.78306751], [1516647060000, 0.01654468, 0.0165447, 0.01654468, 0.01654468, 44.97168531], [1516647120000, 0.0165447, 0.0165448, 0.01654468, 0.0165448, 1.26671568], [1516647180000, 0.0165448, 0.01657154, 0.01654477, 0.01657154, 10.15530308], [1516647240000, 0.0166, 0.01662834, 0.016544, 0.01654468, 28.58605201], [1516647300000, 0.0166, 0.01662834, 0.01654468, 0.01662749, 29.64067597], [1516647360000, 0.01654468, 0.01654468, 0.01654468, 0.01654468, 20.15355169], [1516647420000, 0.01654468, 0.01662749, 0.01654468, 0.01662749, 0.71094061], [1516647480000, 0.01662749, 0.01662749, 0.01654468, 0.01654468, 3.50205937], [1516647540000, 0.01662748, 0.01662748, 0.01654468, 0.01654468, 37.18316], [1516647600000, 0.01654469, 0.016622, 0.01654468, 0.01654468, 30.0496843], [1516647660000, 0.01654468, 0.016627, 0.01654468, 0.016622, 2.96185706], [1516647720000, 0.01654468, 0.0165448, 0.016544, 0.0165448, 27.32169621], [1516647780000, 0.01661198, 0.01661198, 0.016544, 0.01654468, 66.49805024], [1516647840000, 0.0166, 0.0166, 0.016544, 0.0165998, 13.6100837], [1516647900000, 0.01659979, 0.0166, 0.016544, 0.016599, 11.72997127], [1516647960000, 0.016544, 0.0166042, 0.016544, 0.0166042, 33.06338521], [1516648020000, 0.016599, 0.01661, 0.016544, 0.016544, 5.05820157], [1516648080000, 0.016544, 0.016544, 0.016544, 0.016544, 6.8145], [1516648140000, 0.016544, 0.01660995, 0.016544, 0.016544, 24.49503146], [1516648200000, 0.016544, 0.01661842, 0.016544, 0.016544, 47.40045769], [1516648260000, 0.016544, 0.01654455, 0.016544, 0.01654455, 1.69648717], [1516648320000, 0.01654455, 0.01654455, 0.01654455, 0.01654455, 4.2736525], [1516648380000, 0.01654455, 0.01660928, 0.016544, 0.016544, 5.10522697], [1516648440000, 0.016544, 0.016544, 0.016544, 0.016544, 2.97493845], [1516648500000, 0.016544, 0.01654401, 0.016544, 0.01654401, 2.18268054], [1516648560000, 0.01654401, 0.01660824, 0.016544, 0.016544, 32.68208257], [1516648620000, 0.016544, 0.01654401, 0.016544, 0.01654401, 20.10268361], [1516648680000, 0.01654401, 0.01654401, 0.016544, 0.01654401, 42.62715769], [1516648740000, 0.01654401, 0.01660858, 0.016544, 0.016544, 13.10575326], [1516648800000, 0.016544, 0.01660825, 0.016544, 0.01659967, 14.46262753], [1516648860000, 0.01659967, 0.01659967, 0.016544, 0.01659967, 15.54154972], [1516648920000, 0.01659967, 0.01659967, 0.016544, 0.0165441, 5.14414765], [1516648980000, 0.01658149, 0.01658149, 0.0165441, 0.01658116, 12.65071602], [1516649040000, 0.01658115, 0.01658149, 0.01658115, 0.01658116, 13.09287797], [1516649100000, 0.01658115, 0.01658115, 0.016544, 0.016544, 40.26709407], [1516649160000, 0.01658049, 0.01658049, 0.0165441, 0.01657982, 16.92280036], [1516649220000, 0.0165441, 0.01657965, 0.0165441, 0.01657948, 9.00480113], [1516649280000, 0.01657928, 0.01657928, 0.0165541, 0.0165541, 20.6183309], [1516649340000, 0.01655411, 0.0165788, 0.0165541, 0.01655411, 12.44143775], [1516649400000, 0.01655411, 0.01656211, 0.01654402, 0.01654402, 96.68237857], [1516649460000, 0.01655377, 0.01655377, 0.01654401, 0.01655343, 89.13709772], [1516649520000, 0.01654401, 0.01655326, 0.016544, 0.01655326, 10.7731552], [1516649580000, 0.016544, 0.01655292, 0.016544, 0.016544, 56.28387115], [1516649640000, 0.01655258, 0.01657897, 0.016544, 0.01655224, 18.27689466], [1516649700000, 0.0165482, 0.01655207, 0.016544, 0.01655173, 55.39276016], [1516649760000, 0.01655241, 0.01655241, 0.016544, 0.01655224, 96.93046879], [1516649820000, 0.01655224, 0.01655241, 0.016544, 0.01655156, 17.58950131], [1516649880000, 0.01655156, 0.01655156, 0.016544, 0.01655105, 47.38728329], [1516649940000, 0.016544, 0.01655105, 0.016544, 0.01655088, 83.71685605], [1516650000000, 0.01655105, 0.01655173, 0.01655037, 0.01655037, 51.34680196], [1516650060000, 0.01655037, 0.01655173, 0.01654401, 0.01654401, 64.59157277], [1516650120000, 0.016544, 0.01654986, 0.016544, 0.016544, 4.02847143], [1516650180000, 0.01654935, 0.016552, 0.016544, 0.01655166, 47.54728366], [1516650240000, 0.01655183, 0.01655183, 0.01655183, 0.01655183, 5.82114077], [1516650300000, 0.016544, 0.016552, 0.016544, 0.01655115, 28.52386878], [1516650360000, 0.01655115, 0.01655115, 0.01655115, 0.01655115, 29.20013532], [1516650420000, 0.016544, 0.01655047, 0.016544, 0.016544, 47.3343934], [1516650480000, 0.016544, 0.016544, 0.016544, 0.016544, 21.73484175], [1516650540000, 0.01654979, 0.01654979, 0.01654945, 0.01654945, 8.28584208], [1516650600000, 0.016544, 0.0165494, 0.016544, 0.0165494, 12.38480201], [1516650660000, 0.01654894, 0.01654894, 0.016544, 0.016544, 55.43410979], [1516650720000, 0.0165486, 0.01661759, 0.01654401, 0.01654843, 196.75681976], [1516650780000, 0.01654401, 0.0166247, 0.01654401, 0.01654843, 1.34802962], [1516650840000, 0.01654843, 0.01654843, 0.01654843, 0.01654843, 1.79630042], [1516650900000, 0.01654843, 0.01659561, 0.01654843, 0.01654843, 24.76454748], [1516650960000, 0.01654843, 0.01659528, 0.01654843, 0.01659528, 3.72839075], [1516651020000, 0.01654843, 0.01659528, 0.01654843, 0.01659528, 10.66567936], [1516651080000, 0.01659528, 0.0165954, 0.01654843, 0.01659527, 19.30028075], [1516651140000, 0.01654843, 0.0165951, 0.01654843, 0.01654843, 1.36383134], [1516651200000, 0.01654843, 0.01659183, 0.01654843, 0.01654843, 72.04837485], [1516651260000, 0.01659149, 0.01659183, 0.01659149, 0.01659149, 41.53539828], [1516651320000, 0.016592, 0.016592, 0.01654843, 0.01654843, 10.21671928], [1516651380000, 0.01654843, 0.016699, 0.01654843, 0.01662435, 260.66916604], [1516651440000, 0.01661193, 0.0166241, 0.01654848, 0.0166241, 3.68626348], [1516651500000, 0.01662376, 0.01662376, 0.01656416, 0.01656416, 12.46546226], [1516651560000, 0.01654848, 0.01662359, 0.01654848, 0.01656416, 13.72633205], [1516651620000, 0.01662274, 0.01662274, 0.01656416, 0.01656416, 21.24438704], [1516651680000, 0.01656416, 0.01656416, 0.01656416, 0.01656416, 2.11128764], [1516651740000, 0.01656416, 0.01656416, 0.01654848, 0.01654848, 10.92614372], [1516651800000, 0.01654848, 0.01654848, 0.01654843, 0.01654843, 30.91975129], [1516651860000, 0.01654843, 0.01654848, 0.01654843, 0.01654847, 75.49971621], [1516651920000, 0.01654847, 0.01654848, 0.01654843, 0.01654848, 16.96936897], [1516651980000, 0.01654848, 0.01654848, 0.01654843, 0.01654848, 62.93409331], [1516652040000, 0.01654848, 0.01654848, 0.01654831, 0.01654831, 125.14450265], [1516652100000, 0.01654401, 0.01654797, 0.016544, 0.01654763, 16.05826164], [1516652160000, 0.01654763, 0.01654763, 0.01650154, 0.01650154, 11.97571644], [1516652220000, 0.01650153, 0.01654729, 0.01647211, 0.01654678, 27.83421602], [1516652280000, 0.01654678, 0.01654678, 0.01648994, 0.01652983, 18.7503117], [1516652340000, 0.01652983, 0.01652995, 0.01649901, 0.01649901, 12.06797868], [1516652400000, 0.01649901, 0.01653, 0.01648994, 0.01652898, 130.53094061], [1516652460000, 0.01652898, 0.01652898, 0.01651565, 0.01652864, 35.25209727], [1516652520000, 0.01652847, 0.01652847, 0.01651565, 0.01652813, 84.73054834], [1516652580000, 0.01652813, 0.016547, 0.01651565, 0.01651565, 65.59039574], [1516652640000, 0.01652762, 0.016547, 0.01651566, 0.016547, 156.47232628], [1516652700000, 0.01651588, 0.01654848, 0.01651588, 0.01654848, 638.83726417], [1516652760000, 0.01652101, 0.01654848, 0.01652055, 0.01654831, 117.8943918], [1516652820000, 0.01652504, 0.0165595, 0.01652056, 0.01654797, 91.40599609], [1516652880000, 0.01654797, 0.01654797, 0.01652101, 0.01654763, 115.01089612], [1516652940000, 0.01654746, 0.01654746, 0.016547, 0.01654729, 51.27230565], [1516653000000, 0.0165478, 0.01658428, 0.0165478, 0.01658411, 17.65789264], [1516653060000, 0.01658411, 0.01658411, 0.01658377, 0.01658377, 3.20922751], [1516653120000, 0.016548, 0.0165836, 0.01654749, 0.016548, 25.69158493], [1516653180000, 0.0165482, 0.0165482, 0.0165475, 0.01654783, 11.77469039], [1516653240000, 0.0165475, 0.016548, 0.016523, 0.016548, 27.26128596], [1516653300000, 0.01652302, 0.01654766, 0.01652302, 0.01654766, 78.94861074], [1516653360000, 0.01652302, 0.01654766, 0.01652302, 0.01654766, 4.91830973], [1516653420000, 0.01652302, 0.01654715, 0.01652302, 0.01652303, 8.28330442], [1516653480000, 0.01654664, 0.01654664, 0.01652303, 0.01652303, 2.49366958], [1516653540000, 0.01654664, 0.01654698, 0.01652302, 0.01654698, 9.35755813], [1516653600000, 0.01654698, 0.01654766, 0.01654664, 0.01654766, 8.57095937], [1516653660000, 0.01654647, 0.01654647, 0.01652302, 0.01654613, 11.16828277], [1516653720000, 0.01654596, 0.01654596, 0.01652302, 0.01654579, 24.87028113], [1516653780000, 0.01652302, 0.01654766, 0.016523, 0.01654766, 17.07753551], [1516653840000, 0.01654562, 0.016548, 0.01654562, 0.016548, 9.21810244], [1516653900000, 0.01654562, 0.01657766, 0.01654562, 0.01657766, 6.21636316], [1516653960000, 0.01657766, 0.01658326, 0.01652305, 0.01652305, 19.11875513], [1516654020000, 0.01653, 0.01658428, 0.01653, 0.01658411, 8.50038876], [1516654080000, 0.01653, 0.01658411, 0.01652302, 0.01653, 21.82090558], [1516654140000, 0.01653, 0.01657967, 0.01653, 0.01657948, 63.7637484], [1516654200000, 0.01653, 0.01657948, 0.01653, 0.01657914, 11.34996898], [1516654260000, 0.01657931, 0.01658462, 0.01653, 0.01653, 35.24690134], [1516654320000, 0.01653, 0.01658462, 0.01653, 0.01653, 26.69990264], [1516654380000, 0.01653, 0.01658462, 0.01653, 0.01653, 15.52437182], [1516654440000, 0.01657795, 0.01657795, 0.01653, 0.01653001, 8.50727443], [1516654500000, 0.01653, 0.01653001, 0.01652984, 0.01653, 61.76834345], [1516654560000, 0.01652984, 0.01652984, 0.01648999, 0.01648999, 32.35361597], [1516654620000, 0.01652302, 0.01652302, 0.01648884, 0.01648982, 23.5838879], [1516654680000, 0.01648982, 0.01648982, 0.01648884, 0.01648948, 34.61291402], [1516654740000, 0.01648931, 0.01648982, 0.01648884, 0.01648897, 77.05041366], [1516654800000, 0.01648981, 0.01648982, 0.01647211, 0.01648897, 165.65659031], [1516654860000, 0.01648981, 0.01648982, 0.01647211, 0.01648931, 153.80588653], [1516654920000, 0.01648931, 0.01649, 0.01647212, 0.01648897, 89.87001786], [1516654980000, 0.01648897, 0.01648914, 0.01647212, 0.01648897, 115.3975701], [1516655040000, 0.01648897, 0.01656, 0.016477, 0.01656, 16.65399764], [1516655100000, 0.01656, 0.0166, 0.01647212, 0.0166, 245.16838264], [1516655160000, 0.0166, 0.01661954, 0.0166, 0.0166, 3.85064888], [1516655220000, 0.0166, 0.0166, 0.01649974, 0.01649978, 10.26429612], [1516655280000, 0.01649982, 0.01658268, 0.01649982, 0.01658267, 2.44616331], [1516655340000, 0.01658267, 0.0166, 0.0165051, 0.01650521, 24.90162523], [1516655400000, 0.01653521, 0.01659915, 0.01650354, 0.01650901, 21.42740065], [1516655460000, 0.01650354, 0.01650354, 0.0165, 0.0165, 0.40600893], [1516655520000, 0.01650901, 0.01650901, 0.01648755, 0.01648755, 10.9667069], [1516655580000, 0.01648755, 0.0165, 0.01647211, 0.01647211, 59.9780759], [1516655640000, 0.01648721, 0.01648721, 0.01647211, 0.01647974, 39.06346478], [1516655700000, 0.01648687, 0.01648687, 0.01647211, 0.01647221, 140.09419973], [1516655760000, 0.01647221, 0.01647221, 0.01645211, 0.01645211, 125.93872291], [1516655820000, 0.01645213, 0.01645213, 0.01645211, 0.01645211, 20.56211515], [1516655880000, 0.01645213, 0.016509, 0.01645211, 0.01647221, 68.06356159], [1516655940000, 0.01647102, 0.01647102, 0.01645212, 0.01646212, 32.91944349], [1516656000000, 0.01646212, 0.01647068, 0.01645211, 0.01645211, 231.71057616], [1516656060000, 0.01645211, 0.01647068, 0.01644999, 0.01644999, 133.78062376], [1516656120000, 0.01644999, 0.01646981, 0.0164, 0.0164325, 116.23951289], [1516656180000, 0.01642005, 0.01646481, 0.0164, 0.01645498, 35.61852098], [1516656240000, 0.01641, 0.01641, 0.01638981, 0.01638981, 12.86406409], [1516656300000, 0.01644483, 0.01644483, 0.01638981, 0.01638982, 29.85374939], [1516656360000, 0.01638982, 0.01644432, 0.01638484, 0.01638484, 17.86049875], [1516656420000, 0.01638668, 0.01638964, 0.01638484, 0.01638484, 45.33946417], [1516656480000, 0.01638484, 0.01638653, 0.01638294, 0.01638482, 20.87382879], [1516656540000, 0.01638482, 0.01638619, 0.01638102, 0.01638585, 93.37243447], [1516656600000, 0.01638585, 0.01650398, 0.01638585, 0.01647068, 49.54203917], [1516656660000, 0.01650398, 0.01650399, 0.01641022, 0.01647, 14.89936718], [1516656720000, 0.01639501, 0.01647, 0.01638586, 0.01641001, 3.03408681], [1516656780000, 0.01641001, 0.01650398, 0.01638585, 0.01650398, 47.86844653], [1516656840000, 0.01639102, 0.01650398, 0.01638784, 0.01638853, 90.45336426], [1516656900000, 0.01638875, 0.01650399, 0.01638875, 0.01650399, 8.67414964], [1516656960000, 0.01647, 0.01650399, 0.01645, 0.01645, 11.25044635], [1516657020000, 0.01650399, 0.01650399, 0.01645, 0.01650399, 1.34058114], [1516657080000, 0.01650399, 0.01650901, 0.01638482, 0.01650901, 36.57363088], [1516657140000, 0.016391, 0.01650893, 0.01638483, 0.01638483, 17.89681319], [1516657200000, 0.01642484, 0.016504, 0.01638482, 0.01643615, 4.84907505], [1516657260000, 0.01643615, 0.01650396, 0.01638482, 0.01638601, 65.95559095], [1516657320000, 0.01645615, 0.016499, 0.01639105, 0.01639106, 6.0511276], [1516657380000, 0.01639107, 0.01650396, 0.01639106, 0.01650396, 5.90872267], [1516657440000, 0.016499, 0.016504, 0.01638102, 0.0163915, 25.19415229], [1516657500000, 0.0163915, 0.01650382, 0.0163915, 0.01639701, 13.83713549], [1516657560000, 0.016397, 0.01646101, 0.01638102, 0.016397, 55.18707929], [1516657620000, 0.0163915, 0.016397, 0.01638102, 0.01638102, 38.22785948], [1516657680000, 0.01638102, 0.016397, 0.01638102, 0.01638102, 22.33985841], [1516657740000, 0.016397, 0.01646101, 0.01638102, 0.01639782, 11.1094341], [1516657800000, 0.016397, 0.01649999, 0.01638102, 0.0164415, 74.11268216], [1516657860000, 0.0164415, 0.01650889, 0.016374, 0.01649873, 54.3758251], [1516657920000, 0.01649873, 0.01649873, 0.01636904, 0.01636914, 173.12145358], [1516657980000, 0.016498, 0.016498, 0.01638052, 0.01639771, 12.33134386], [1516658040000, 0.01639771, 0.01649873, 0.01639771, 0.01639852, 4.23423647], [1516658100000, 0.016498, 0.0165089, 0.01641901, 0.01641902, 10.95760423], [1516658160000, 0.0165089, 0.01655, 0.01642912, 0.01655, 72.42603813], [1516658220000, 0.01653001, 0.016581, 0.01653001, 0.016581, 7.55573639], [1516658280000, 0.016581, 0.01659394, 0.016566, 0.01657667, 16.6327326], [1516658340000, 0.016566, 0.016566, 0.016531, 0.01656599, 46.78959888], [1516658400000, 0.016531, 0.016566, 0.016531, 0.016531, 39.29713141], [1516658460000, 0.016561, 0.016591, 0.016561, 0.016591, 15.98184595], [1516658520000, 0.016566, 0.01659099, 0.016531, 0.016531, 33.43888586], [1516658580000, 0.01658599, 0.016588, 0.016531, 0.01658595, 9.26136579], [1516658640000, 0.01654753, 0.01658595, 0.01645395, 0.01645395, 8.02579758], [1516658700000, 0.01645326, 0.01658099, 0.01642925, 0.01657587, 64.91185124], [1516658760000, 0.01655599, 0.01655599, 0.01648, 0.01654992, 5.19854462], [1516658820000, 0.01648, 0.01658595, 0.01641903, 0.01658081, 61.45577712], [1516658880000, 0.01648001, 0.01657099, 0.01648, 0.01653, 41.15977463], [1516658940000, 0.01645135, 0.01653, 0.01641901, 0.01653, 18.40011075], [1516659000000, 0.01644001, 0.01653, 0.01644001, 0.01651269, 15.86648275], [1516659060000, 0.01651269, 0.01653, 0.01644606, 0.01647222, 1.88825703], [1516659120000, 0.01653, 0.01656599, 0.01644091, 0.01653, 42.68454337], [1516659180000, 0.01652999, 0.01652999, 0.0164722, 0.01652999, 45.18348556], [1516659240000, 0.01652999, 0.01652999, 0.01647254, 0.01652996, 34.9548234], [1516659300000, 0.01652996, 0.01652999, 0.01647266, 0.01652999, 37.4253769], [1516659360000, 0.01652998, 0.01652999, 0.01652997, 0.01652999, 14.34268732], [1516659420000, 0.01652999, 0.01653, 0.0164722, 0.0164722, 12.78334861], [1516659480000, 0.01652999, 0.01655598, 0.0164722, 0.0164722, 7.77808893], [1516659540000, 0.01657091, 0.01657597, 0.01644221, 0.0164722, 22.72914942], [1516659600000, 0.0164722, 0.01656599, 0.0164422, 0.01656597, 23.4747213], [1516659660000, 0.01656599, 0.01656599, 0.01645, 0.01645134, 19.53804424], [1516659720000, 0.0164501, 0.016546, 0.0164501, 0.01654599, 9.64113228], [1516659780000, 0.01654599, 0.016591, 0.0164501, 0.01645134, 51.62890059], [1516659840000, 0.01658098, 0.01659915, 0.01645219, 0.01659915, 22.99790735], [1516659900000, 0.01645709, 0.0166, 0.01645709, 0.0166, 76.25519555], [1516659960000, 0.01659999, 0.01663425, 0.0164658, 0.01663422, 180.83966795], [1516660020000, 0.01659909, 0.0165991, 0.01646751, 0.01646767, 36.0800198], [1516660080000, 0.01646767, 0.01659858, 0.01646758, 0.016483, 5.19449777], [1516660140000, 0.01659389, 0.01659845, 0.01647842, 0.01647842, 5.06943818], [1516660200000, 0.01657889, 0.01659392, 0.01647842, 0.01654007, 34.55232502], [1516660260000, 0.01653, 0.01659999, 0.016482, 0.01654007, 19.43980027], [1516660320000, 0.01654104, 0.01654104, 0.01649, 0.016541, 5.66038748], [1516660380000, 0.016541, 0.01659999, 0.016541, 0.016541, 2.13482249], [1516660440000, 0.016599, 0.016599, 0.01649001, 0.01649001, 128.01275039], [1516660500000, 0.01649006, 0.01659418, 0.01649006, 0.01659418, 5.20086049], [1516660560000, 0.01659417, 0.01659417, 0.01649005, 0.01649005, 9.44057529], [1516660620000, 0.01649001, 0.01649006, 0.016456, 0.01649006, 43.45321138], [1516660680000, 0.016455, 0.01655301, 0.016455, 0.01655301, 35.94065642], [1516660740000, 0.01655301, 0.01659417, 0.01648235, 0.01659417, 15.73636886], [1516660800000, 0.01655301, 0.01659418, 0.01655301, 0.01655302, 15.73810305], [1516660860000, 0.01655302, 0.01655302, 0.01648246, 0.01655302, 16.26923709], [1516660920000, 0.01654594, 0.01655302, 0.01648253, 0.016519, 15.50873474], [1516660980000, 0.016519, 0.01655302, 0.01646347, 0.01649722, 26.90243802], [1516661040000, 0.01650202, 0.01650202, 0.01650202, 0.01650202, 0.84411375], [1516661100000, 0.01655301, 0.01659272, 0.01650001, 0.01658668, 3.51835299], [1516661160000, 0.01658668, 0.01659272, 0.01651401, 0.01659272, 9.77952127], [1516661220000, 0.01651404, 0.0166, 0.01651404, 0.01651487, 35.75487801], [1516661280000, 0.01651487, 0.01663189, 0.01647225, 0.01647225, 45.13819896], [1516661340000, 0.01651487, 0.01661998, 0.01645233, 0.01651487, 22.44664795], [1516661400000, 0.01651487, 0.016615, 0.01647201, 0.01647722, 49.2020553], [1516661460000, 0.01646202, 0.01660994, 0.016455, 0.01647, 78.70349185], [1516661520000, 0.01646465, 0.01660387, 0.01646465, 0.01658, 14.63750177], [1516661580000, 0.01648576, 0.01661, 0.01648576, 0.01652301, 8.44722232], [1516661640000, 0.01654201, 0.01654201, 0.01648523, 0.01654201, 0.43648141], [1516661700000, 0.01654201, 0.01654201, 0.0165, 0.01654201, 9.59789739], [1516661760000, 0.01654201, 0.01658, 0.0165002, 0.01658, 6.35248933], [1516661820000, 0.01658, 0.01659272, 0.01657917, 0.01659272, 6.0029545], [1516661880000, 0.01659272, 0.01659272, 0.01653031, 0.01653031, 9.96255968], [1516661940000, 0.01659272, 0.01663189, 0.01659272, 0.01659272, 47.15254609], [1516662000000, 0.01653501, 0.01663189, 0.01653033, 0.01663189, 29.61051289], [1516662060000, 0.01663189, 0.01663425, 0.01653031, 0.01663424, 88.18074968], [1516662120000, 0.016535, 0.01663422, 0.01653031, 0.01658, 27.2041344], [1516662180000, 0.01658, 0.01658, 0.016467, 0.01648701, 86.11108942], [1516662240000, 0.01658, 0.01663388, 0.0165, 0.01663388, 53.07928572], [1516662300000, 0.01663392, 0.01663422, 0.01650005, 0.01663421, 31.347393], [1516662360000, 0.016526, 0.01665001, 0.016526, 0.016531, 52.39029751], [1516662420000, 0.01659, 0.01664999, 0.01659, 0.01659, 25.1865385], [1516662480000, 0.01659, 0.01664933, 0.01654001, 0.01654001, 17.49710687], [1516662540000, 0.016644, 0.01664933, 0.01654002, 0.01663999, 42.09677821], [1516662600000, 0.01663999, 0.01664396, 0.01654002, 0.016639, 43.44282004], [1516662660000, 0.01663, 0.01664363, 0.01654002, 0.01664363, 9.83616364], [1516662720000, 0.016555, 0.01663867, 0.01654003, 0.016555, 10.43301672], [1516662780000, 0.01663846, 0.01663846, 0.01654003, 0.016555, 16.90204553], [1516662840000, 0.01654002, 0.01664396, 0.01654002, 0.01664396, 44.90365738], [1516662900000, 0.01654002, 0.01664363, 0.01654002, 0.016628, 30.22237249], [1516662960000, 0.01662299, 0.01662299, 0.016526, 0.016526, 34.1483685], [1516663020000, 0.016526, 0.01654003, 0.01651587, 0.01654003, 18.7389105], [1516663080000, 0.01654003, 0.01654003, 0.0165, 0.01651504, 39.08051928], [1516663140000, 0.01651504, 0.01662246, 0.01650002, 0.01651504, 1.83466861], [1516663200000, 0.01661113, 0.01661113, 0.01650001, 0.01650001, 40.86692918], [1516663260000, 0.01650005, 0.01660928, 0.01650001, 0.01650001, 53.9821606], [1516663320000, 0.01650001, 0.01659875, 0.01650001, 0.01659875, 9.10109932], [1516663380000, 0.0165982, 0.0165982, 0.01650002, 0.01650005, 1.14696041], [1516663440000, 0.01650005, 0.01659864, 0.01650001, 0.01650003, 12.70486139], [1516663500000, 0.01659732, 0.01659732, 0.01650002, 0.01650002, 4.56161325], [1516663560000, 0.01650001, 0.01655, 0.01650001, 0.01650002, 12.54324809], [1516663620000, 0.01650002, 0.01650002, 0.01650001, 0.01650001, 3.6745216], [1516663680000, 0.01650002, 0.01650002, 0.01650001, 0.01650001, 112.28111701], [1516663740000, 0.01650001, 0.01659099, 0.01650001, 0.01657922, 5.44031283], [1516663800000, 0.01657834, 0.01657834, 0.01650002, 0.01657766, 4.41605542], [1516663860000, 0.01657709, 0.01657709, 0.01650002, 0.01650002, 17.92121832], [1516663920000, 0.01650002, 0.01656578, 0.01650002, 0.01650002, 9.57879063], [1516663980000, 0.01650002, 0.01657619, 0.01650002, 0.01656998, 10.82890317], [1516664040000, 0.01656966, 0.01656966, 0.01656566, 0.01656599, 8.44727557], [1516664100000, 0.01656599, 0.01656965, 0.01650003, 0.01655, 5.42717006], [1516664160000, 0.01650023, 0.01655, 0.01650023, 0.01650023, 2.84551506], [1516664220000, 0.01650023, 0.01655, 0.01650023, 0.01655, 42.64622146], [1516664280000, 0.01655, 0.0165772, 0.0165003, 0.01655, 26.81091558], [1516664340000, 0.0165772, 0.01659863, 0.01650024, 0.01650024, 10.45561215], [1516664400000, 0.016504, 0.01659779, 0.016504, 0.016504, 13.65947581], [1516664460000, 0.016504, 0.01659864, 0.016504, 0.016504, 17.91099646], [1516664520000, 0.0165984, 0.0165984, 0.016504, 0.01650475, 42.08255084], [1516664580000, 0.01650475, 0.0165984, 0.01650475, 0.01650475, 3.09426759], [1516664640000, 0.01650475, 0.01659863, 0.016504, 0.01659863, 4.28907853], [1516664700000, 0.01650474, 0.01660928, 0.016504, 0.01650901, 105.21483043], [1516664760000, 0.01658218, 0.01658218, 0.01650002, 0.016509, 86.63258027], [1516664820000, 0.016509, 0.01660057, 0.01650002, 0.01650002, 25.36586327], [1516664880000, 0.01650002, 0.01660057, 0.01650002, 0.01660057, 5.4797563], [1516664940000, 0.01650003, 0.01660057, 0.01650002, 0.01660057, 49.05437256], [1516665000000, 0.01660057, 0.01660928, 0.01650005, 0.01660057, 17.04002213], [1516665060000, 0.01660057, 0.01660057, 0.01650004, 0.01650007, 9.04608378], [1516665120000, 0.01656929, 0.01656929, 0.01656929, 0.01656929, 43.93914171], [1516665180000, 0.01656929, 0.01660057, 0.01650003, 0.01650004, 22.92819238], [1516665240000, 0.01650004, 0.01660927, 0.01650003, 0.01650003, 59.87076996], [1516665300000, 0.01650003, 0.01660906, 0.01650003, 0.01660902, 25.2388218], [1516665360000, 0.01650006, 0.01655004, 0.01650005, 0.01650009, 40.72228337], [1516665420000, 0.0165001, 0.01655004, 0.0165001, 0.01655002, 114.1250415], [1516665480000, 0.01655002, 0.01655089, 0.01655002, 0.01655088, 47.51785943], [1516665540000, 0.01655087, 0.01656743, 0.01650003, 0.01650011, 10.86386012], [1516665600000, 0.01655, 0.01660903, 0.01650008, 0.01660902, 16.92666369], [1516665660000, 0.01650025, 0.01660904, 0.01650024, 0.01650059, 44.64024083], [1516665720000, 0.01660902, 0.01660927, 0.01650065, 0.01660903, 47.93767077], [1516665780000, 0.01660903, 0.01660928, 0.01660903, 0.01660903, 72.10980477], [1516665840000, 0.01651341, 0.01661689, 0.01651341, 0.01660903, 18.14153644], [1516665900000, 0.01651363, 0.01663, 0.01651363, 0.01663, 59.3499098], [1516665960000, 0.01660984, 0.01665001, 0.01651387, 0.01651387, 41.36678209], [1516666020000, 0.01653303, 0.01664999, 0.01653302, 0.01664999, 5.8401769], [1516666080000, 0.01664999, 0.01665, 0.01653324, 0.0165333, 8.11814471], [1516666140000, 0.01664999, 0.01669884, 0.01664999, 0.01664999, 73.60299934], [1516666200000, 0.01669874, 0.0167, 0.01654002, 0.01654406, 139.74445527], [1516666260000, 0.01664999, 0.0167, 0.01655103, 0.01655103, 24.60002894], [1516666320000, 0.01669988, 0.01669988, 0.01655612, 0.01656204, 5.39472613], [1516666380000, 0.01656216, 0.01656216, 0.01656213, 0.01656213, 8.22165836], [1516666440000, 0.01656213, 0.01656213, 0.01653901, 0.01656203, 13.96878472], [1516666500000, 0.0166729, 0.01668989, 0.0166729, 0.0166729, 12.07298709], [1516666560000, 0.01667998, 0.016695, 0.01656203, 0.01656203, 47.50502469], [1516666620000, 0.01656212, 0.01668999, 0.01656212, 0.01668998, 4.07930031], [1516666680000, 0.01668998, 0.01668999, 0.01656701, 0.01668967, 3.41968265], [1516666740000, 0.01668967, 0.01668967, 0.0165672, 0.01662323, 16.84896322], [1516666800000, 0.01666, 0.01667, 0.01656203, 0.01656204, 6.08461517], [1516666860000, 0.01656204, 0.01666967, 0.01656204, 0.01657201, 18.53359273], [1516666920000, 0.016668, 0.01666967, 0.016668, 0.016668, 28.68930224], [1516666980000, 0.016668, 0.01666967, 0.016668, 0.01666966, 13.87054212], [1516667040000, 0.01666966, 0.0167, 0.01656806, 0.016668, 142.68075232], [1516667100000, 0.01656814, 0.01666767, 0.01656804, 0.01656805, 20.81811852], [1516667160000, 0.0165681, 0.0166, 0.0165681, 0.0165681, 2.42205653], [1516667220000, 0.01666765, 0.01666765, 0.0166, 0.0166, 5.18812578], [1516667280000, 0.01666766, 0.01666766, 0.01666765, 0.01666765, 4.88612523], [1516667340000, 0.01666765, 0.0167, 0.0166, 0.0166999, 47.09551342], [1516667400000, 0.0166998, 0.0166999, 0.0166, 0.01668999, 16.39411325], [1516667460000, 0.01666755, 0.01668799, 0.0166, 0.0166, 25.86560877], [1516667520000, 0.0166, 0.01667299, 0.01655371, 0.01655371, 10.78759732], [1516667580000, 0.01665799, 0.01665799, 0.01655371, 0.01655371, 0.3581774], [1516667640000, 0.0166798, 0.0166798, 0.01655, 0.01665998, 8.70063914], [1516667700000, 0.01654785, 0.01654785, 0.01653199, 0.01653199, 3.27737675], [1516667760000, 0.01653199, 0.016655, 0.01650601, 0.016655, 19.65158186], [1516667820000, 0.01665499, 0.016655, 0.01654557, 0.01654557, 4.0678527], [1516667880000, 0.0166, 0.016655, 0.01652501, 0.01665, 43.33296427], [1516667940000, 0.01665499, 0.016655, 0.01652028, 0.01652046, 19.11910932], [1516668000000, 0.01661, 0.01667194, 0.01650501, 0.01650501, 26.66496349], [1516668060000, 0.01651498, 0.016649, 0.01650505, 0.016649, 7.10747496], [1516668120000, 0.016649, 0.01665, 0.01650506, 0.0166, 18.2763314], [1516668180000, 0.01663989, 0.01663989, 0.01651119, 0.01651121, 77.21077088], [1516668240000, 0.01659, 0.01659, 0.01651122, 0.01658, 25.50338465], [1516668300000, 0.01651111, 0.016626, 0.01650012, 0.01658, 47.56482918], [1516668360000, 0.0166259, 0.016631, 0.01658, 0.01658, 48.75648639], [1516668420000, 0.01663557, 0.01663557, 0.01658, 0.01658, 32.43093922], [1516668480000, 0.01658, 0.016636, 0.01651501, 0.01657998, 41.94271612], [1516668540000, 0.01652301, 0.01657998, 0.01652301, 0.01656969, 13.78657628], [1516668600000, 0.01657998, 0.01657998, 0.01657423, 0.0165799, 7.10639699], [1516668660000, 0.0165799, 0.016583, 0.0165201, 0.016583, 6.98606962], [1516668720000, 0.01657483, 0.016639, 0.01651001, 0.016639, 9.93098353], [1516668780000, 0.01651001, 0.01663865, 0.01651001, 0.01651501, 2.14043596], [1516668840000, 0.0165748, 0.01663399, 0.016571, 0.01663399, 5.48672986], [1516668900000, 0.01663356, 0.01663366, 0.016571, 0.016571, 1.51813236], [1516668960000, 0.016628, 0.016628, 0.016571, 0.01662465, 42.58178298], [1516669020000, 0.016571, 0.016624, 0.01650012, 0.016571, 28.95580932], [1516669080000, 0.01650014, 0.016624, 0.01650014, 0.016571, 51.2230943], [1516669140000, 0.016571, 0.016614, 0.01650015, 0.0166, 71.65882642], [1516669200000, 0.01650015, 0.0166, 0.01650015, 0.0166, 29.16139126], [1516669260000, 0.0166, 0.0166, 0.01650017, 0.01650017, 5.86510774], [1516669320000, 0.0165999, 0.0165999, 0.01650017, 0.01659989, 4.38280777], [1516669380000, 0.01654183, 0.01654183, 0.01650013, 0.01654183, 15.60470839], [1516669440000, 0.0166, 0.0166, 0.01654183, 0.01654183, 2.76440357], [1516669500000, 0.01654183, 0.0166, 0.01650013, 0.0165999, 16.2220076], [1516669560000, 0.0165999, 0.0166, 0.0165999, 0.0165999, 25.12426169], [1516669620000, 0.016502, 0.0166, 0.01650012, 0.01650013, 16.67748841], [1516669680000, 0.01650013, 0.01650013, 0.01650012, 0.01650012, 7.08811382], [1516669740000, 0.01650012, 0.01650013, 0.01650012, 0.01650013, 25.75523044], [1516669800000, 0.01650012, 0.01658431, 0.01650012, 0.01650012, 26.1180481], [1516669860000, 0.01658431, 0.01658434, 0.01650012, 0.016579, 26.51231974], [1516669920000, 0.01657879, 0.01657899, 0.0165, 0.016501, 30.61972141], [1516669980000, 0.016501, 0.016501, 0.01650012, 0.01650012, 6.2709004], [1516670040000, 0.01650012, 0.01657378, 0.01650005, 0.01650005, 0.69761459], [1516670100000, 0.01650005, 0.01656878, 0.0165, 0.0165, 5.36882049], [1516670160000, 0.01655899, 0.01655899, 0.0165, 0.0165, 32.74245883], [1516670220000, 0.01655856, 0.01655856, 0.01650289, 0.01650289, 29.12650951], [1516670280000, 0.01650289, 0.01655794, 0.0165, 0.01650289, 59.76106158], [1516670340000, 0.01650001, 0.0165399, 0.0165, 0.01650288, 48.94064772], [1516670400000, 0.01650288, 0.01655841, 0.0165, 0.0165, 32.9758464], [1516670460000, 0.0165, 0.01651, 0.0165, 0.0165, 77.63867703], [1516670520000, 0.0165, 0.01651, 0.0165, 0.0165, 7.26942387], [1516670580000, 0.01651, 0.01651, 0.0165, 0.0165, 16.32788505], [1516670640000, 0.0165, 0.0165, 0.0165, 0.0165, 2.71666192], [1516670700000, 0.0165, 0.01651, 0.0165, 0.01651, 17.53264188], [1516670760000, 0.0165, 0.016545, 0.0165, 0.01654499, 15.23004524], [1516670820000, 0.0165, 0.016545, 0.0165, 0.01654, 29.39739683], [1516670880000, 0.0165, 0.016545, 0.0165, 0.01654499, 5.51103746], [1516670940000, 0.01650001, 0.01655889, 0.0165, 0.01654499, 109.00918068], [1516671000000, 0.0165, 0.01654, 0.01649808, 0.01649808, 29.79215376], [1516671060000, 0.01649376, 0.016538, 0.01646999, 0.016538, 27.7821333], [1516671120000, 0.01646999, 0.016538, 0.01646999, 0.01646999, 1.88049087], [1516671180000, 0.01653796, 0.01653796, 0.01646999, 0.01646999, 9.72857358], [1516671240000, 0.01646999, 0.01656878, 0.01645, 0.01656878, 138.46242659], [1516671300000, 0.01651331, 0.01653795, 0.01644999, 0.01645, 36.33815811], [1516671360000, 0.01645, 0.01645, 0.016434, 0.01645, 11.69862429], [1516671420000, 0.01645, 0.01654898, 0.016434, 0.016543, 26.45648331], [1516671480000, 0.016434, 0.01654299, 0.016434, 0.01654299, 46.23382325], [1516671540000, 0.01643401, 0.01654299, 0.01643401, 0.01653797, 3.58394855], [1516671600000, 0.01654299, 0.01654299, 0.01654299, 0.01654299, 0.27674537], [1516671660000, 0.01643425, 0.01654815, 0.01643425, 0.01643428, 16.15727854], [1516671720000, 0.01654814, 0.01654814, 0.01640455, 0.01653299, 207.17005836], [1516671780000, 0.0164053, 0.01653298, 0.0164053, 0.016528, 5.91877845], [1516671840000, 0.01653298, 0.01653298, 0.01640803, 0.01647, 15.93619329], [1516671900000, 0.01647, 0.016523, 0.01647, 0.01647, 7.03543057], [1516671960000, 0.01647, 0.01653295, 0.01647, 0.01647, 25.81609165], [1516672020000, 0.01647, 0.01647, 0.01647, 0.01647, 2.31559072], [1516672080000, 0.01647, 0.01647, 0.01644, 0.01647, 3.96886426], [1516672140000, 0.01647, 0.01647, 0.01644, 0.01644, 2.92174865], [1516672200000, 0.01646967, 0.016549, 0.01646967, 0.016549, 39.00748385], [1516672260000, 0.01652399, 0.01652399, 0.01647, 0.01647, 3.1820785], [1516672320000, 0.01647, 0.01651899, 0.01647, 0.01651899, 18.04540465], [1516672380000, 0.01647, 0.01652397, 0.0164053, 0.01651899, 26.73601414], [1516672440000, 0.01644, 0.016514, 0.0164053, 0.016514, 6.09887517], [1516672500000, 0.01644013, 0.016514, 0.0164053, 0.01650899, 39.04486881], [1516672560000, 0.01650899, 0.01650899, 0.0164053, 0.01650899, 1.25552302], [1516672620000, 0.016504, 0.01650899, 0.0164053, 0.016434, 62.71978123], [1516672680000, 0.016504, 0.016504, 0.0164053, 0.0164053, 5.22451659], [1516672740000, 0.01640531, 0.0165083, 0.01640531, 0.016504, 12.96005682], [1516672800000, 0.01642, 0.016504, 0.016414, 0.01642, 10.47614134], [1516672860000, 0.0165083, 0.01654899, 0.01641401, 0.01654899, 38.62376398], [1516672920000, 0.016418, 0.01653899, 0.01640531, 0.01641, 35.88645305], [1516672980000, 0.01641002, 0.016509, 0.01641002, 0.01643, 5.73603095], [1516673040000, 0.01643446, 0.0165, 0.01641803, 0.01641803, 22.62917368], [1516673100000, 0.01641803, 0.0165, 0.01641404, 0.0165, 91.2297428], [1516673160000, 0.016495, 0.0165, 0.01641403, 0.01641403, 17.60237232], [1516673220000, 0.016419, 0.01656878, 0.0164, 0.0164, 88.15792713], [1516673280000, 0.01640362, 0.01649999, 0.0164, 0.01649999, 6.00428936], [1516673340000, 0.01641002, 0.01652399, 0.01641, 0.01641001, 109.13164025], [1516673400000, 0.01641, 0.01648, 0.01638601, 0.01638601, 13.63512733], [1516673460000, 0.01640074, 0.01640074, 0.01638286, 0.01638286, 23.96891849], [1516673520000, 0.0164, 0.0165, 0.0164, 0.0165, 11.58742341], [1516673580000, 0.0165, 0.01652499, 0.01640543, 0.01649998, 36.41587309], [1516673640000, 0.01640543, 0.01650499, 0.01640543, 0.01640543, 17.50121755], [1516673700000, 0.01640543, 0.01640543, 0.01638008, 0.01640543, 11.87184769], [1516673760000, 0.0164, 0.01640543, 0.0164, 0.01640543, 2.14705761], [1516673820000, 0.0164, 0.0164, 0.01638, 0.01638, 8.64108111], [1516673880000, 0.01638, 0.01647799, 0.01638, 0.01647797, 24.68085493], [1516673940000, 0.01647797, 0.01647797, 0.01638007, 0.01640362, 4.80611077], [1516674000000, 0.01647797, 0.01647797, 0.01640362, 0.01647797, 7.67884014], [1516674060000, 0.0164583, 0.0164583, 0.01638, 0.01639658, 18.49262844], [1516674120000, 0.01638, 0.01639658, 0.01638, 0.01638, 17.17877968], [1516674180000, 0.01639, 0.01639, 0.01639, 0.01639, 0.13461574], [1516674240000, 0.01639, 0.01639, 0.01638208, 0.01639, 5.25753929], [1516674300000, 0.01639658, 0.01639658, 0.01639, 0.01639, 6.18742456], [1516674360000, 0.01647795, 0.01650999, 0.01639, 0.01639, 137.46660546], [1516674420000, 0.01639001, 0.01649999, 0.01639001, 0.01639501, 30.69288002], [1516674480000, 0.01639501, 0.01647795, 0.01639, 0.01647299, 68.06830719], [1516674540000, 0.01639001, 0.01647299, 0.01639, 0.01640362, 4.17430564], [1516674600000, 0.01640362, 0.01647197, 0.01639, 0.01639, 5.42869377], [1516674660000, 0.01647194, 0.01649498, 0.01639, 0.01639, 16.85704611], [1516674720000, 0.01639001, 0.01639001, 0.01639, 0.01639, 17.01966039], [1516674780000, 0.01639001, 0.01639001, 0.01639, 0.01639001, 27.62963185], [1516674840000, 0.01645134, 0.01645134, 0.01639001, 0.01639001, 5.32060456], [1516674900000, 0.0164, 0.0164, 0.01639, 0.01639001, 22.56747006], [1516674960000, 0.01639001, 0.01640362, 0.01639, 0.0164, 11.01317097], [1516675020000, 0.01640362, 0.01645134, 0.0164, 0.01645, 3.66837029], [1516675080000, 0.01640001, 0.016449, 0.01639002, 0.016449, 26.26777466], [1516675140000, 0.01639002, 0.01639002, 0.01639, 0.01639, 33.72909425], [1516675200000, 0.0164, 0.01644911, 0.01639, 0.01639, 34.12177896], [1516675260000, 0.0164, 0.01645, 0.01638139, 0.01638139, 47.33518564], [1516675320000, 0.01638139, 0.01639, 0.01637, 0.01639, 12.93578029], [1516675380000, 0.01637, 0.01639, 0.01637, 0.01638, 4.70605695], [1516675440000, 0.01639, 0.01639, 0.01638, 0.01638, 14.49619195], [1516675500000, 0.01639, 0.01639, 0.01638, 0.01638999, 0.6524513], [1516675560000, 0.01639, 0.01639, 0.01638999, 0.01639, 23.89061898], [1516675620000, 0.01639, 0.01639, 0.01638587, 0.01638587, 29.11883542], [1516675680000, 0.0163884, 0.0164, 0.0163884, 0.0164, 9.02583271], [1516675740000, 0.0164, 0.01645, 0.0163884, 0.01640639, 6.67260299], [1516675800000, 0.01644499, 0.01645, 0.01641, 0.01645, 11.28179215], [1516675860000, 0.01645, 0.01645, 0.01641, 0.016445, 9.54123397], [1516675920000, 0.016445, 0.016445, 0.01641, 0.01641002, 21.08992857], [1516675980000, 0.01641002, 0.01644501, 0.01641002, 0.01641003, 8.16259823], [1516676040000, 0.01641003, 0.01647996, 0.01641003, 0.01647499, 66.77545748], [1516676100000, 0.01641003, 0.01646499, 0.01641003, 0.01641003, 3.82764723], [1516676160000, 0.01641003, 0.016433, 0.01641003, 0.01641003, 1.02408491], [1516676220000, 0.01641003, 0.0164236, 0.01641, 0.01641, 33.64821145], [1516676280000, 0.01641002, 0.01641003, 0.01641, 0.01641003, 12.41461926], [1516676340000, 0.01641, 0.01641003, 0.016369, 0.016369, 18.40516474], [1516676400000, 0.01641001, 0.01641003, 0.01641001, 0.01641001, 13.43564275], [1516676460000, 0.016369, 0.01641002, 0.016369, 0.016369, 10.58143895], [1516676520000, 0.01641, 0.01641003, 0.016369, 0.01641, 26.22688707], [1516676580000, 0.01641, 0.01641, 0.01641, 0.01641, 1.25825622], [1516676640000, 0.01641003, 0.01644996, 0.01641, 0.01644996, 3.38358718], [1516676700000, 0.01644997, 0.01644997, 0.01641, 0.01641, 36.72330017], [1516676760000, 0.01641, 0.01641001, 0.016366, 0.016366, 40.66319443], [1516676820000, 0.01641001, 0.01643499, 0.016366, 0.01643499, 10.74119139], [1516676880000, 0.01636601, 0.01643498, 0.016366, 0.016366, 2.95599244], [1516676940000, 0.01643498, 0.01644995, 0.016366, 0.016366, 26.00516617], [1516677000000, 0.016366, 0.01636601, 0.016365, 0.016365, 18.71950974], [1516677060000, 0.016365, 0.01636601, 0.016365, 0.01636601, 4.16897874], [1516677120000, 0.01644996, 0.01644996, 0.01644995, 0.01644996, 36.87633373], [1516677180000, 0.01636598, 0.016448, 0.01636598, 0.01636598, 3.94460696], [1516677240000, 0.016448, 0.016448, 0.016365, 0.016365, 2.9164883], [1516677300000, 0.016366, 0.016448, 0.016365, 0.016365, 17.51739778], [1516677360000, 0.0164402, 0.01644996, 0.016365, 0.01636501, 45.39338143], [1516677420000, 0.016365, 0.01636501, 0.01636, 0.01636, 13.72767512], [1516677480000, 0.01636501, 0.01636501, 0.01635688, 0.01635688, 10.69892062], [1516677540000, 0.01636501, 0.01636501, 0.01635289, 0.01635289, 21.89971277], [1516677600000, 0.01635289, 0.01636501, 0.01633495, 0.01635289, 34.28651833], [1516677660000, 0.01635289, 0.01635289, 0.01632997, 0.01632997, 3.49757199], [1516677720000, 0.0163528, 0.01635289, 0.01631605, 0.01633381, 41.37445042], [1516677780000, 0.01635285, 0.01635289, 0.016352, 0.016352, 5.1524692], [1516677840000, 0.016352, 0.01635289, 0.01633381, 0.01635289, 8.33483692], [1516677900000, 0.01633383, 0.01635201, 0.01633382, 0.01635201, 9.20050721], [1516677960000, 0.016352, 0.016352, 0.01633381, 0.016352, 2.33094784], [1516678020000, 0.01633382, 0.01635289, 0.01633381, 0.01633381, 18.39576333], [1516678080000, 0.01633381, 0.0163528, 0.016329, 0.0163528, 96.84129669], [1516678140000, 0.016329, 0.01644996, 0.01632801, 0.01644996, 20.45803227], [1516678200000, 0.01635281, 0.01644996, 0.01635281, 0.01644996, 4.42849246], [1516678260000, 0.01635281, 0.016485, 0.0163528, 0.01644467, 178.99949632], [1516678320000, 0.01635292, 0.01647999, 0.01635291, 0.01635601, 139.22980173], [1516678380000, 0.016358, 0.01644656, 0.0163528, 0.01640644, 62.16282465], [1516678440000, 0.01644656, 0.01648198, 0.0163528, 0.016477, 51.73389981], [1516678500000, 0.0163528, 0.01648999, 0.0163528, 0.0163528, 19.72193597], [1516678560000, 0.0163528, 0.01645123, 0.016329, 0.01633001, 26.72486138], [1516678620000, 0.01635339, 0.01645123, 0.01633002, 0.01635339, 41.21475178], [1516678680000, 0.016352, 0.01645123, 0.01633501, 0.01645123, 117.793646], [1516678740000, 0.01645123, 0.01649082, 0.01634501, 0.01648999, 65.23163728], [1516678800000, 0.01638676, 0.01638676, 0.01638676, 0.01638676, 5.02662816], [1516678860000, 0.01635503, 0.01638676, 0.016355, 0.01638676, 3.60514986], [1516678920000, 0.01638676, 0.01648999, 0.01638676, 0.016485, 12.35643131], [1516678980000, 0.016475, 0.0165, 0.016319, 0.01645, 260.33635545], [1516679040000, 0.01645, 0.0165023, 0.01645, 0.01645, 167.90007696], [1516679100000, 0.016361, 0.016497, 0.016361, 0.01648501, 97.20313532], [1516679160000, 0.01648501, 0.01649649, 0.01636101, 0.01649649, 96.49577015], [1516679220000, 0.01648501, 0.01650999, 0.01636115, 0.01636119, 54.82370292], [1516679280000, 0.01636119, 0.01636119, 0.01635007, 0.01636119, 21.28700272], [1516679340000, 0.01636, 0.01636102, 0.01636, 0.01636085, 57.80275302], [1516679400000, 0.01636085, 0.01647, 0.01635557, 0.016465, 228.10254499], [1516679460000, 0.01646983, 0.01648501, 0.01632909, 0.01636099, 245.00438282], [1516679520000, 0.01645134, 0.01647961, 0.01645134, 0.01645134, 5.50732418], [1516679580000, 0.01645134, 0.01645134, 0.01641111, 0.01644988, 3.71671085], [1516679640000, 0.01644971, 0.01644971, 0.01643, 0.01644954, 7.93715089], [1516679700000, 0.0164498, 0.0164498, 0.01641111, 0.01641111, 78.58625401], [1516679760000, 0.01641111, 0.01641116, 0.01641111, 0.01641111, 21.56766727], [1516679820000, 0.01641112, 0.01644861, 0.01641112, 0.01641112, 32.46754022], [1516679880000, 0.01641112, 0.01646489, 0.01641112, 0.01642854, 92.04216819], [1516679940000, 0.01642844, 0.01644783, 0.01641112, 0.01644497, 340.52988796], [1516680000000, 0.01644732, 0.016448, 0.01644498, 0.01644498, 100.69286122], [1516680060000, 0.016448, 0.01651, 0.01644498, 0.01645, 188.71611885], [1516680120000, 0.01645, 0.01651, 0.01644498, 0.01644498, 82.36085959], [1516680180000, 0.01644499, 0.01646083, 0.01644498, 0.01645523, 69.60313843], [1516680240000, 0.01644498, 0.01645506, 0.01644498, 0.01645472, 32.18842141], [1516680300000, 0.01644498, 0.01650499, 0.01644497, 0.01644497, 198.73666157], [1516680360000, 0.01648979, 0.0164898, 0.01644497, 0.01644497, 32.34136702], [1516680420000, 0.0164451, 0.01648448, 0.01642854, 0.01648431, 59.79089992], [1516680480000, 0.01642854, 0.01644497, 0.01641112, 0.01642854, 76.36748048], [1516680540000, 0.01642854, 0.01642854, 0.01641112, 0.01642854, 30.55527069], [1516680600000, 0.01642854, 0.01644412, 0.01642854, 0.01642854, 7.24076411], [1516680660000, 0.01644378, 0.01644378, 0.01641112, 0.01641112, 2.25913852], [1516680720000, 0.01641112, 0.01642205, 0.01641112, 0.01641112, 20.31362133], [1516680780000, 0.01641113, 0.01650499, 0.01641112, 0.01649499, 90.57544804], [1516680840000, 0.01641114, 0.01649981, 0.01641114, 0.01641114, 15.97866074], [1516680900000, 0.01641114, 0.01641114, 0.01641114, 0.01641114, 44.99555047], [1516680960000, 0.01641114, 0.01648238, 0.01641114, 0.01641114, 51.33870121], [1516681020000, 0.01641114, 0.01648187, 0.01641114, 0.01648187, 3.67077256], [1516681080000, 0.01641114, 0.01647855, 0.01641114, 0.01641114, 14.48794188], [1516681140000, 0.01647821, 0.01647821, 0.01647804, 0.01647804, 4.42746065], [1516681200000, 0.016464, 0.016464, 0.01646383, 0.01646383, 1.30340115], [1516681320000, 0.01646783, 0.01646783, 0.01641112, 0.01641112, 47.91236338], [1516681380000, 0.01641114, 0.01642, 0.01641112, 0.01641112, 177.60409581], [1516681440000, 0.01641112, 0.01641915, 0.01641112, 0.01641113, 11.20497495], [1516681500000, 0.01642, 0.01646765, 0.01641113, 0.01642, 7.10540495], [1516681560000, 0.01642, 0.01646664, 0.01641113, 0.01646664, 19.49618686], [1516681620000, 0.01642, 0.01642999, 0.01641113, 0.01641113, 59.74412188], [1516681680000, 0.01641113, 0.01641114, 0.01638, 0.0164108, 87.95325142], [1516681740000, 0.01635, 0.01638, 0.01631901, 0.01635557, 13.0658181], [1516681800000, 0.01635557, 0.01635557, 0.01631901, 0.01635506, 21.78127887], [1516681860000, 0.01635506, 0.01635506, 0.01631901, 0.01635472, 108.70735443], [1516681920000, 0.01631951, 0.01635489, 0.01631951, 0.01631951, 11.42152803], [1516681980000, 0.01635404, 0.01635404, 0.01631951, 0.01635404, 31.50813125], [1516682040000, 0.01631951, 0.0163537, 0.01631901, 0.016324, 13.44346355], [1516682100000, 0.016353, 0.016353, 0.016324, 0.01635249, 12.97556271], [1516682160000, 0.01635249, 0.01635249, 0.01635215, 0.01635232, 14.93052307], [1516682220000, 0.01632422, 0.01635198, 0.01632422, 0.01635181, 15.55801602], [1516682280000, 0.01635181, 0.01635181, 0.016321, 0.016324, 19.58365525], [1516682340000, 0.0163513, 0.0163513, 0.016324, 0.01632401, 27.34853698], [1516682400000, 0.01635113, 0.01635181, 0.01632401, 0.01635096, 186.78244021], [1516682460000, 0.01635079, 0.01635198, 0.01632002, 0.01635198, 160.46338808], [1516682520000, 0.01635198, 0.01635198, 0.01634, 0.01634, 83.16207317], [1516682580000, 0.01634, 0.01635198, 0.01634, 0.016345, 40.41564273], [1516682640000, 0.01634, 0.01635079, 0.01634, 0.01635062, 20.88062516], [1516682700000, 0.01635062, 0.01635062, 0.01634, 0.016345, 3.29522704], [1516682760000, 0.01634, 0.01635, 0.01634, 0.01634994, 30.37311095], [1516682820000, 0.01635, 0.01635, 0.01634, 0.01635, 7.49699794], [1516682880000, 0.01634, 0.01635079, 0.01631902, 0.01631902, 45.08975755], [1516682940000, 0.01635028, 0.01635028, 0.01631901, 0.01631901, 5.77793376], [1516683000000, 0.01635079, 0.01635079, 0.016324, 0.016324, 10.86665041], [1516683060000, 0.01635079, 0.016353, 0.01632775, 0.016353, 84.34557859], [1516683120000, 0.01635232, 0.01635232, 0.01632606, 0.01632775, 26.66733424], [1516683180000, 0.01632775, 0.016351, 0.01632606, 0.0163505, 21.79553417], [1516683240000, 0.0163505, 0.01643, 0.01632607, 0.01632607, 113.13591331], [1516683300000, 0.01632901, 0.01635, 0.016324, 0.01634949, 145.36208728], [1516683360000, 0.01634949, 0.01634949, 0.01631902, 0.01632151, 239.32506619], [1516683420000, 0.01632151, 0.01635, 0.01631902, 0.016321, 200.5270994], [1516683480000, 0.01631911, 0.01635, 0.01631911, 0.01632049, 99.02461522], [1516683540000, 0.01632049, 0.01643, 0.01632032, 0.01642983, 140.49821564], [1516683600000, 0.01643, 0.01643, 0.016324, 0.01642927, 6.84284975], [1516683660000, 0.01632501, 0.01633145, 0.016325, 0.016325, 16.8916458], [1516683720000, 0.0163241, 0.0163241, 0.01632049, 0.01632066, 23.95621515], [1516683780000, 0.01632049, 0.01632083, 0.01632, 0.01632015, 85.94998209], [1516683840000, 0.01632015, 0.0163241, 0.01631913, 0.01631913, 131.62758839], [1516683900000, 0.01632, 0.0164, 0.01631913, 0.0164, 15.10953576], [1516683960000, 0.01639932, 0.0164, 0.01632, 0.01632601, 72.91609482], [1516684020000, 0.01639174, 0.01639174, 0.01632601, 0.01632601, 9.14518593], [1516684080000, 0.01637662, 0.01637983, 0.01632601, 0.01632913, 13.65195076], [1516684140000, 0.01632913, 0.01637949, 0.01632601, 0.01637664, 50.38379362], [1516684200000, 0.0163669, 0.01638, 0.01632601, 0.01637647, 18.90213252], [1516684260000, 0.01632602, 0.0163763, 0.01632602, 0.01636, 52.33940722], [1516684320000, 0.01633001, 0.01635983, 0.01632601, 0.01633022, 34.49732129], [1516684380000, 0.01633022, 0.01639174, 0.01633001, 0.01639174, 368.72611523], [1516684440000, 0.01638, 0.01643577, 0.01633001, 0.01643577, 187.70979217], [1516684500000, 0.01643, 0.01649734, 0.01643, 0.01649734, 37.01137551], [1516684560000, 0.01649734, 0.01649734, 0.01645, 0.01645, 12.43022187], [1516684620000, 0.01649734, 0.01649734, 0.01645, 0.0164972, 12.14115341], [1516684680000, 0.01645, 0.01647, 0.01645, 0.01647, 8.62157577], [1516684740000, 0.01645, 0.01647, 0.01645, 0.01645009, 124.19884774], [1516684800000, 0.01645009, 0.01645009, 0.01645, 0.01645, 80.26084474], [1516684860000, 0.01645009, 0.01645009, 0.01645, 0.01645009, 50.9185895], [1516684920000, 0.01645009, 0.01646645, 0.01643, 0.01646645, 79.79627788], [1516684980000, 0.01646645, 0.01648647, 0.01646645, 0.01648647, 5.39014501], [1516685040000, 0.01648647, 0.01648648, 0.01645111, 0.01645111, 116.02409091], [1516685100000, 0.01648648, 0.01648648, 0.01646, 0.01646, 12.01698484], [1516685160000, 0.01646, 0.01646, 0.01645111, 0.01645111, 33.78789297], [1516685220000, 0.01645111, 0.01645999, 0.01645111, 0.01645999, 5.81598852], [1516685280000, 0.01645999, 0.01648099, 0.01643, 0.01643, 229.2428983], [1516685340000, 0.01643, 0.01643, 0.01640002, 0.01643, 17.22167888], [1516685400000, 0.01643, 0.01648, 0.01640503, 0.01643, 6.36078361], [1516685460000, 0.01648, 0.016481, 0.01648, 0.01648, 30.45258395], [1516685520000, 0.016481, 0.016516, 0.01648, 0.01648, 92.96146279], [1516685580000, 0.016526, 0.016526, 0.01648, 0.0164972, 5.67346635], [1516685640000, 0.01648, 0.0164972, 0.01637001, 0.01637001, 26.85119342], [1516685700000, 0.01648, 0.016521, 0.01640007, 0.016521, 38.76917166], [1516685760000, 0.0164972, 0.01651099, 0.01638, 0.01638, 5.1999436], [1516685820000, 0.01640372, 0.01651498, 0.01640372, 0.01651498, 8.81910415], [1516685880000, 0.01640376, 0.016521, 0.01640376, 0.01640376, 13.5419956], [1516685940000, 0.016521, 0.016521, 0.016521, 0.016521, 3.33895246], [1516686000000, 0.016521, 0.016521, 0.01640392, 0.01640392, 14.85158926], [1516686060000, 0.01640399, 0.016516, 0.01640399, 0.01642399, 26.91334462], [1516686120000, 0.01642399, 0.016526, 0.01642399, 0.016526, 36.44794353], [1516686180000, 0.01652099, 0.01652099, 0.01647, 0.01652099, 12.63822643], [1516686240000, 0.01652099, 0.01652099, 0.01647, 0.01647, 4.43815478], [1516686300000, 0.01652099, 0.01652099, 0.01640905, 0.01640905, 23.28352566], [1516686360000, 0.01652099, 0.016526, 0.01642003, 0.01642065, 65.32501933], [1516686420000, 0.01652099, 0.01652099, 0.01642118, 0.01652099, 3.20091052], [1516686480000, 0.01652099, 0.01652099, 0.01642269, 0.01652099, 1.27164253], [1516686540000, 0.01642804, 0.01642806, 0.01642804, 0.01642806, 3.75225367], [1516686600000, 0.01651, 0.01652099, 0.01642807, 0.0164285, 29.85736928], [1516686660000, 0.0164285, 0.01642851, 0.01642806, 0.01642851, 75.12445396], [1516686720000, 0.01642826, 0.0164855, 0.01640431, 0.01640431, 38.36426509], [1516686780000, 0.01640409, 0.01645, 0.01640376, 0.01640376, 21.86308816], [1516686840000, 0.01640375, 0.01640376, 0.0164, 0.0164, 23.71751335], [1516686900000, 0.0164, 0.0164, 0.01638287, 0.0164, 49.76807917], [1516686960000, 0.01639, 0.0164, 0.01638288, 0.0164, 89.91996116], [1516687020000, 0.01638288, 0.01644967, 0.01638287, 0.01644967, 8.5988026], [1516687080000, 0.01644967, 0.01644967, 0.01644967, 0.01644967, 0.27063665], [1516687140000, 0.01644967, 0.01644967, 0.0163829, 0.01644967, 117.07802515], [1516687200000, 0.01644959, 0.01644959, 0.01637501, 0.01637501, 27.93313417], [1516687260000, 0.0164495, 0.0164495, 0.01637501, 0.0164495, 20.51829202], [1516687320000, 0.01638001, 0.0164495, 0.01638001, 0.0164495, 28.30930531], [1516687380000, 0.01638033, 0.0164495, 0.01637506, 0.01637506, 18.1777052], [1516687440000, 0.01637506, 0.0164495, 0.01637506, 0.01644949, 11.68174283], [1516687500000, 0.01644949, 0.0164495, 0.01637517, 0.0164495, 4.26320417], [1516687560000, 0.01644949, 0.0164495, 0.01636001, 0.016445, 40.09677837], [1516687680000, 0.01636001, 0.01636001, 0.01636001, 0.01636001, 4.61083972], [1516687740000, 0.01636001, 0.01636011, 0.01636001, 0.01636001, 20.05103623], [1516687800000, 0.016365, 0.0164495, 0.016365, 0.016365, 5.11794495], [1516687860000, 0.0164445, 0.0164445, 0.01637002, 0.0164444, 12.41945723], [1516687920000, 0.01637002, 0.0164495, 0.01637002, 0.0164495, 19.50776331], [1516687980000, 0.0164495, 0.0164495, 0.01637527, 0.016386, 12.13232523], [1516688040000, 0.016386, 0.01644967, 0.01637, 0.01637533, 17.84776845], [1516688100000, 0.01637543, 0.016475, 0.01637543, 0.01644, 25.26860754], [1516688160000, 0.01644966, 0.01648, 0.01644, 0.01646612, 51.24419881], [1516688220000, 0.01646612, 0.01646612, 0.01644, 0.01644, 1.10380076], [1516688280000, 0.01646612, 0.01646612, 0.01637545, 0.01646612, 3.12846787], [1516688340000, 0.01646612, 0.01646612, 0.01637545, 0.01646612, 8.28992978], [1516688400000, 0.01646612, 0.01646612, 0.01637546, 0.01646612, 4.9444391], [1516688460000, 0.016475, 0.016475, 0.01637533, 0.01637533, 4.74378918], [1516688520000, 0.01637533, 0.01637545, 0.01637533, 0.01637545, 15.43061515], [1516688580000, 0.01637763, 0.01645134, 0.01637545, 0.01637763, 26.9557929], [1516688640000, 0.01645134, 0.01647999, 0.01637763, 0.01637765, 12.95930377], [1516688700000, 0.01637765, 0.01637765, 0.01637545, 0.01637763, 4.27860134], [1516688760000, 0.01637762, 0.01637765, 0.01637762, 0.01637765, 42.72389255], [1516688820000, 0.01637765, 0.01637765, 0.01637765, 0.01637765, 19.95769707], [1516688880000, 0.01637765, 0.01637765, 0.01637763, 0.01637763, 33.3630564], [1516688940000, 0.01637765, 0.01637765, 0.01637764, 0.01637765, 11.14879403], [1516689000000, 0.01637764, 0.01637765, 0.01637764, 0.01637764, 101.14241956], [1516689060000, 0.01637765, 0.01637765, 0.01637763, 0.01637764, 48.92663227], [1516689120000, 0.01637764, 0.01645134, 0.01637545, 0.01645134, 39.22884239], [1516689180000, 0.01645134, 0.01645134, 0.01645134, 0.01645134, 13.18038951], [1516689240000, 0.01648, 0.01648, 0.01645134, 0.01645135, 33.81080268], [1516689300000, 0.01645135, 0.016459, 0.01645134, 0.016459, 34.27819606], [1516689360000, 0.01648997, 0.01653, 0.016459, 0.01653, 30.25036157], [1516689420000, 0.01645901, 0.016529, 0.01645901, 0.01645901, 56.8960488], [1516689480000, 0.01645901, 0.01650986, 0.01645901, 0.01645901, 4.0222791], [1516689540000, 0.01645901, 0.01649947, 0.01645901, 0.01645901, 4.14599493], [1516689600000, 0.01645901, 0.01645901, 0.01639, 0.01639, 22.84974765], [1516689660000, 0.01648967, 0.01648967, 0.01638286, 0.01639301, 30.98468939], [1516689720000, 0.01639302, 0.01648967, 0.01639302, 0.01648967, 46.44223003], [1516689780000, 0.01648967, 0.016495, 0.01648967, 0.01649432, 3.17552424], [1516689840000, 0.01648967, 0.01649964, 0.01648967, 0.01649254, 3.30805619], [1516689900000, 0.0164837, 0.0164837, 0.01640362, 0.01640362, 0.43948875], [1516689960000, 0.01640901, 0.01648968, 0.01640901, 0.01648968, 27.18670435], [1516690020000, 0.01647286, 0.0165, 0.01647286, 0.01647286, 95.94050125], [1516690080000, 0.01647286, 0.01649997, 0.01640363, 0.01649997, 17.54786904], [1516690140000, 0.01640371, 0.01649997, 0.01640371, 0.01649997, 11.84763253], [1516690200000, 0.01649997, 0.01649997, 0.01649997, 0.01649997, 36.01693315], [1516690260000, 0.01649997, 0.01649997, 0.01640509, 0.01649997, 50.33367501], [1516690320000, 0.01648984, 0.01649997, 0.01648984, 0.01648984, 26.26062557], [1516690380000, 0.01649997, 0.01649997, 0.01643519, 0.01643519, 15.00156584], [1516690440000, 0.01649997, 0.01649997, 0.01647, 0.01647, 18.61126638], [1516690500000, 0.01649989, 0.01649989, 0.01647, 0.01649989, 21.94000147], [1516690560000, 0.01649989, 0.0164999, 0.01642006, 0.0164999, 41.84094959], [1516690620000, 0.01649997, 0.01649997, 0.01642007, 0.01642007, 14.45264103], [1516690680000, 0.01642006, 0.016495, 0.01642006, 0.016495, 1.66789806], [1516690740000, 0.01648, 0.01648, 0.01642006, 0.01642006, 0.85895115], [1516690800000, 0.01642006, 0.016495, 0.01640367, 0.016495, 40.24737052], [1516690860000, 0.01649649, 0.01649996, 0.01640368, 0.01640368, 5.64373225], [1516690920000, 0.01649996, 0.01649996, 0.01640368, 0.01649996, 44.84858697], [1516690980000, 0.01640372, 0.01651, 0.01640372, 0.01640376, 9.15613762], [1516691040000, 0.01640368, 0.01650491, 0.01640368, 0.01650491, 1.65466988], [1516691100000, 0.01650499, 0.01650499, 0.01640368, 0.01640368, 53.31535134], [1516691160000, 0.01640369, 0.01650998, 0.01640368, 0.01640368, 16.24273584], [1516691220000, 0.01640368, 0.01646613, 0.01640368, 0.01640887, 5.23971881], [1516691280000, 0.01646613, 0.01650999, 0.01646613, 0.01650999, 11.84413065], [1516691340000, 0.01650995, 0.01650998, 0.01645221, 0.01650998, 6.29021781], [1516691400000, 0.01640891, 0.01645221, 0.01640891, 0.01640892, 8.46106222], [1516691460000, 0.01640892, 0.01650998, 0.01640892, 0.01650998, 8.08780871], [1516691520000, 0.01650997, 0.01650997, 0.01640893, 0.01640893, 10.12068939], [1516691580000, 0.01640893, 0.01651, 0.01640892, 0.01649999, 112.44255561], [1516691640000, 0.01640892, 0.0165, 0.01640892, 0.0165, 1.34126984], [1516691700000, 0.01649996, 0.01651, 0.01640893, 0.01650932, 10.5604553], [1516691760000, 0.01650932, 0.01651, 0.01640908, 0.01651, 8.84648295], [1516691820000, 0.01651, 0.01651, 0.01640894, 0.01640894, 15.9600614], [1516691880000, 0.01640894, 0.016409, 0.01640894, 0.016409, 6.09386851], [1516691940000, 0.01640914, 0.016505, 0.01640914, 0.01640915, 4.09289301], [1516692000000, 0.01650497, 0.016505, 0.01640916, 0.0164175, 24.04748357], [1516692060000, 0.0164175, 0.0164175, 0.01640916, 0.0164175, 7.68217571], [1516692120000, 0.0164175, 0.0164175, 0.01636001, 0.01637765, 86.50045662], [1516692180000, 0.01637765, 0.01637765, 0.01636001, 0.01637765, 16.37571277], [1516692240000, 0.01637765, 0.01637765, 0.01636001, 0.01637, 46.15297864], [1516692300000, 0.01637, 0.0164, 0.01635999, 0.01636001, 67.79056528], [1516692360000, 0.01636001, 0.01648, 0.01635999, 0.01647996, 15.1148712], [1516692420000, 0.01647995, 0.01647996, 0.01635999, 0.0163611, 2.4751416], [1516692480000, 0.01640362, 0.01649994, 0.01640362, 0.01640362, 3.42314499], [1516692540000, 0.016439, 0.016439, 0.01640362, 0.01640362, 2.66208276], [1516692600000, 0.01640362, 0.01644118, 0.01640362, 0.01640362, 21.80350791], [1516692660000, 0.0163611, 0.01644118, 0.01635999, 0.01635999, 18.25150898], [1516692720000, 0.01635999, 0.01644118, 0.01635999, 0.01644118, 5.48950299], [1516692780000, 0.01644118, 0.01644118, 0.01636, 0.01644118, 10.51184823], [1516692840000, 0.01636001, 0.01644118, 0.01636001, 0.01637003, 5.60505068], [1516692900000, 0.01644118, 0.01644118, 0.01637107, 0.01644118, 84.13786631], [1516692960000, 0.01644118, 0.01644118, 0.01637107, 0.01644118, 2.18528102], [1516693020000, 0.01644118, 0.01644118, 0.01637128, 0.01637128, 17.1540231], [1516693080000, 0.0163713, 0.01644118, 0.01637128, 0.01637128, 11.21933682], [1516693140000, 0.01644118, 0.01644118, 0.01644118, 0.01644118, 2.16285752], [1516693200000, 0.01637128, 0.01637128, 0.01637127, 0.01637127, 2.0], [1516693260000, 0.016375, 0.01644118, 0.01637128, 0.01637128, 3.67272146], [1516693320000, 0.01644118, 0.0165, 0.01644118, 0.0165, 8.1563652], [1516693380000, 0.01644118, 0.01650989, 0.01637129, 0.016376, 14.18696732], [1516693440000, 0.01650497, 0.01650497, 0.01637608, 0.016381, 2.06146918], [1516693500000, 0.0165, 0.01650497, 0.0163765, 0.0163765, 2.91197909], [1516693560000, 0.0165, 0.0165, 0.01639605, 0.01639605, 4.65878261], [1516693620000, 0.01639625, 0.01649, 0.01639625, 0.01649, 13.78068405], [1516693680000, 0.01649001, 0.0165, 0.01649001, 0.01649001, 61.21311108], [1516693740000, 0.01649, 0.016499, 0.01640022, 0.016499, 25.27969675], [1516693800000, 0.01649, 0.016499, 0.01649, 0.01649, 49.97160064], [1516693860000, 0.01649799, 0.016498, 0.01641, 0.01641001, 49.42830435], [1516693920000, 0.01641003, 0.01648999, 0.01641003, 0.01641003, 6.57509454], [1516693980000, 0.01641003, 0.016485, 0.01641003, 0.01641003, 8.26888351], [1516694040000, 0.01641003, 0.016485, 0.01641003, 0.01641003, 15.92084649], [1516694100000, 0.01641003, 0.01648967, 0.01641003, 0.01648434, 35.28462067], [1516694160000, 0.01648435, 0.01649004, 0.01648435, 0.01649004, 10.66838573], [1516694220000, 0.01649004, 0.016499, 0.01648435, 0.01649002, 16.09119091], [1516694280000, 0.01649002, 0.016499, 0.01641086, 0.01641086, 4.99632312], [1516694340000, 0.01641086, 0.01652, 0.01641086, 0.01641088, 18.66794247], [1516694400000, 0.01651988, 0.01651988, 0.01645, 0.01645001, 21.39891632], [1516694460000, 0.01645, 0.01645001, 0.01645, 0.01645, 2.97087072], [1516694520000, 0.01645001, 0.01645001, 0.01645, 0.01645, 31.78072442], [1516694580000, 0.01645, 0.01645001, 0.01645, 0.01645, 31.49467174], [1516694640000, 0.01645001, 0.01646357, 0.01645, 0.01646357, 8.18545621], [1516694700000, 0.01646357, 0.01646357, 0.01645, 0.01646357, 34.28242896], [1516694760000, 0.01645, 0.01645, 0.01639001, 0.01641085, 27.51805348], [1516694820000, 0.01645, 0.01645, 0.01642726, 0.01642726, 0.70907534], [1516694880000, 0.01642726, 0.01645, 0.01637004, 0.01642888, 29.78059497], [1516694940000, 0.01642888, 0.01642888, 0.016391, 0.016391, 4.61641076], [1516695000000, 0.01642888, 0.01646357, 0.016391, 0.016391, 4.81151173], [1516695060000, 0.01640362, 0.01640362, 0.016396, 0.016396, 1.87950734], [1516695120000, 0.01644444, 0.01646357, 0.01640362, 0.01644444, 20.97731334], [1516695180000, 0.01640362, 0.01644134, 0.0164, 0.01644134, 7.82177768], [1516695240000, 0.01644134, 0.01644444, 0.01640001, 0.01640601, 14.32353973], [1516695300000, 0.01644444, 0.01651999, 0.01640601, 0.01650999, 4.87074325], [1516695360000, 0.01650999, 0.01650999, 0.01641, 0.016415, 24.73332399], [1516695420000, 0.01645134, 0.01650498, 0.016385, 0.016385, 14.6275448], [1516695480000, 0.01639001, 0.0164, 0.01637004, 0.01637004, 13.74238546], [1516695540000, 0.0164, 0.0164, 0.0164, 0.0164, 54.28658157], [1516695600000, 0.0164, 0.01650498, 0.01637005, 0.01650497, 28.32102773], [1516695660000, 0.01637008, 0.01639501, 0.01637008, 0.01639501, 1.79596342], [1516695720000, 0.01650495, 0.01650497, 0.01639508, 0.01639509, 6.06903461], [1516695780000, 0.01639509, 0.01639509, 0.01637886, 0.01637886, 1.86691455], [1516695840000, 0.01639509, 0.01649999, 0.01639509, 0.01649999, 62.64618159], [1516695900000, 0.01649, 0.01656878, 0.01639509, 0.01656878, 205.09664392], [1516695960000, 0.01648987, 0.0165249, 0.01640001, 0.016405, 13.56029466], [1516696020000, 0.01652477, 0.01652477, 0.016386, 0.01651, 19.17369522], [1516696080000, 0.01651, 0.01651, 0.016414, 0.0165, 22.7329083], [1516696140000, 0.0165, 0.01650999, 0.016391, 0.01650999, 8.17200861], [1516696200000, 0.01651499, 0.01651499, 0.016391, 0.0165, 34.5912156], [1516696260000, 0.01639, 0.01650116, 0.01639, 0.01639, 7.59450577], [1516696320000, 0.0164, 0.0164, 0.0164, 0.0164, 6.76635579], [1516696380000, 0.01639, 0.0164, 0.01638058, 0.0164, 20.23315961], [1516696440000, 0.016386, 0.01647028, 0.016386, 0.01647028, 12.76662864], [1516696500000, 0.01647028, 0.01647028, 0.0164, 0.0164, 7.7166942], [1516696560000, 0.0164, 0.01651, 0.0164, 0.01651, 7.70357053], [1516696620000, 0.0165, 0.01651, 0.01640001, 0.01651, 11.9581802], [1516696680000, 0.01650999, 0.01650999, 0.01640365, 0.01640365, 7.44239501], [1516696740000, 0.01640366, 0.01640366, 0.01640365, 0.01640365, 1.12126484], [1516696800000, 0.01649998, 0.0165, 0.01640365, 0.01649996, 9.39312279], [1516696860000, 0.01649996, 0.01649996, 0.016409, 0.016409, 3.22729249], [1516696920000, 0.01640904, 0.01640908, 0.01640904, 0.01640908, 1.581], [1516696980000, 0.016486, 0.0165, 0.01642002, 0.0165, 16.05296422], [1516697040000, 0.01642401, 0.01649999, 0.01642, 0.01642001, 208.67280297], [1516697100000, 0.01649999, 0.01649999, 0.01642001, 0.01649998, 3.93011615], [1516697160000, 0.01649998, 0.01649998, 0.016425, 0.016425, 11.26300136], [1516697220000, 0.0164995, 0.0165, 0.01642, 0.01649999, 11.55486598], [1516697280000, 0.01649999, 0.0165, 0.01649999, 0.0165, 6.75153872], [1516697340000, 0.0165, 0.0165, 0.01642, 0.01642, 2.13467558], [1516697400000, 0.01642011, 0.0165, 0.01642, 0.01642, 6.99793656], [1516697460000, 0.01642011, 0.0165149, 0.01642, 0.01642, 46.98365615], [1516697520000, 0.0165, 0.01651486, 0.01642, 0.01648849, 13.61116222], [1516697580000, 0.01643, 0.01643, 0.01642, 0.01643, 6.56841438], [1516697640000, 0.01643, 0.01651222, 0.01643, 0.01643, 39.89371922], [1516697700000, 0.01651221, 0.01651221, 0.01643, 0.01650999, 8.53415896], [1516697760000, 0.01643, 0.01650999, 0.01643, 0.01650999, 4.31315626], [1516697820000, 0.01650999, 0.01651221, 0.01643, 0.01643, 37.51643548], [1516697880000, 0.01643, 0.01650999, 0.01643, 0.01643, 7.99134201], [1516697940000, 0.01643, 0.01651, 0.01643, 0.01643, 7.16446171], [1516698000000, 0.01651, 0.01651, 0.01643, 0.01651, 1.24422562], [1516698060000, 0.01643, 0.01650999, 0.01643, 0.01650999, 6.41382609], [1516698120000, 0.01643, 0.01650999, 0.01643, 0.01643, 13.19749024], [1516698180000, 0.01650999, 0.01650999, 0.01643, 0.01650999, 3.84866241], [1516698240000, 0.01650999, 0.01650999, 0.016435, 0.016435, 0.71397296], [1516698300000, 0.01644, 0.01651221, 0.01643, 0.01651221, 19.18961112], [1516698360000, 0.01651082, 0.01652477, 0.01643, 0.01652477, 55.90421095], [1516698420000, 0.01651221, 0.01653101, 0.01648, 0.01648, 15.87705349], [1516698480000, 0.01653505, 0.016549, 0.01648, 0.01648, 25.43143932], [1516698540000, 0.01647315, 0.01650896, 0.01643009, 0.01643009, 7.66017784], [1516698600000, 0.01643009, 0.01651332, 0.01643, 0.01651332, 0.62347747], [1516698660000, 0.016513, 0.01651332, 0.01643, 0.01643, 8.14259833], [1516698720000, 0.01651298, 0.01651298, 0.01651297, 0.01651297, 5.81132464], [1516698780000, 0.01651297, 0.01651297, 0.01643, 0.01643, 29.54243841], [1516698840000, 0.01643, 0.01651, 0.01643, 0.01643, 17.38872005], [1516698900000, 0.01650999, 0.01651, 0.01643, 0.01643528, 41.65495962], [1516698960000, 0.01643528, 0.016518, 0.01642001, 0.01642001, 26.33376434], [1516699020000, 0.0165232, 0.016525, 0.01642504, 0.0165005, 29.21258399], [1516699080000, 0.01644504, 0.0165005, 0.016428, 0.016435, 13.79136301], [1516699140000, 0.01643502, 0.01643502, 0.01643003, 0.01643003, 25.28985918], [1516699200000, 0.01643003, 0.01643003, 0.01643003, 0.01643003, 2.92844204], [1516699260000, 0.01649369, 0.0165005, 0.01643003, 0.01643003, 5.13508263], [1516699320000, 0.01643509, 0.0165005, 0.01643003, 0.01643003, 5.84376002], [1516699380000, 0.01650048, 0.01650049, 0.01650048, 0.01650049, 15.9416789], [1516699440000, 0.01643003, 0.01650048, 0.01643003, 0.01643009, 2.07335521], [1516699500000, 0.01643009, 0.01643009, 0.01643003, 0.01643003, 2.56681094], [1516699560000, 0.01643009, 0.016455, 0.01643009, 0.016455, 0.89579173], [1516699620000, 0.016455, 0.016455, 0.01643003, 0.01643003, 16.47034134], [1516699680000, 0.01643009, 0.01645499, 0.01643003, 0.01645499, 7.11707226], [1516699740000, 0.01643003, 0.016455, 0.01643003, 0.01643003, 4.84552206], [1516699800000, 0.01645499, 0.01645499, 0.01643003, 0.01645499, 15.59052453], [1516699860000, 0.01645499, 0.01645499, 0.01643003, 0.01643003, 35.25154043], [1516699920000, 0.01643549, 0.0164505, 0.01643003, 0.0164505, 4.90260843], [1516699980000, 0.0164505, 0.0165005, 0.0164505, 0.0164505, 5.82478962], [1516700040000, 0.016433, 0.01652497, 0.01643003, 0.01652494, 4.16562682], [1516700100000, 0.01644232, 0.01652491, 0.01644232, 0.0165249, 7.84524381], [1516700160000, 0.0165249, 0.0165249, 0.01644232, 0.01644447, 2.01842663], [1516700220000, 0.01652998, 0.01652999, 0.01651149, 0.01651149, 2.05372911], [1516700280000, 0.01651149, 0.01651149, 0.01651149, 0.01651149, 17.09657256], [1516700340000, 0.01651149, 0.01655876, 0.01645374, 0.01655399, 44.03176876], [1516700400000, 0.01644447, 0.016539, 0.016435, 0.016539, 5.63357759], [1516700460000, 0.01643603, 0.01653898, 0.01643321, 0.01643499, 1.74236259], [1516700520000, 0.01643499, 0.01653395, 0.01643005, 0.01653395, 11.19586751], [1516700580000, 0.01652896, 0.01652896, 0.01643499, 0.01643499, 6.83865039], [1516700640000, 0.01643009, 0.01643009, 0.01643005, 0.01643009, 1.76912235], [1516700700000, 0.01643009, 0.016533, 0.01643005, 0.01653298, 12.9278659], [1516700760000, 0.01653295, 0.01653295, 0.01643006, 0.01643007, 10.50373553], [1516700820000, 0.01648, 0.01648, 0.01643212, 0.01643212, 13.52597188], [1516700880000, 0.01647999, 0.01647999, 0.01643005, 0.01643005, 12.77149456], [1516700940000, 0.01643005, 0.01647999, 0.01643005, 0.01643005, 14.90615813], [1516701000000, 0.01643005, 0.01648, 0.01643005, 0.01643005, 46.58303997], [1516701060000, 0.01643005, 0.0165, 0.01643005, 0.01643005, 37.25341754], [1516701120000, 0.0165, 0.0165, 0.01643005, 0.01643005, 6.48515376], [1516701180000, 0.01643005, 0.01649983, 0.01643005, 0.01649983, 2.28601484], [1516701240000, 0.01649983, 0.01649983, 0.01643005, 0.01643005, 18.99008774], [1516701300000, 0.01648223, 0.01648223, 0.01643005, 0.01643005, 2.26998798], [1516701360000, 0.01646, 0.0164998, 0.01643005, 0.0164998, 1.43933472], [1516701420000, 0.01643005, 0.01649982, 0.01643005, 0.01643005, 7.67251433], [1516701480000, 0.016495, 0.016495, 0.01642, 0.016495, 46.09854743], [1516701540000, 0.016495, 0.016495, 0.01643006, 0.01643006, 5.90859852], [1516701600000, 0.016495, 0.01649983, 0.01642, 0.01642, 7.88606017], [1516701660000, 0.01647765, 0.01649982, 0.01642, 0.01642, 13.00776712], [1516701720000, 0.01647765, 0.01647765, 0.01642, 0.01643, 24.52556954], [1516701780000, 0.01642, 0.01648157, 0.01642, 0.01642001, 6.45244832], [1516701840000, 0.01642001, 0.01648157, 0.01642, 0.01642, 40.46149896], [1516701900000, 0.01642, 0.01648157, 0.01642, 0.01648153, 5.58975943], [1516701960000, 0.01642, 0.01642001, 0.01642, 0.01642, 224.3598575], [1516702020000, 0.01642, 0.01648152, 0.01642, 0.01648152, 4.46822365], [1516702080000, 0.01648151, 0.01648152, 0.01642, 0.01642, 9.38276526], [1516702140000, 0.01648153, 0.01648153, 0.0164201, 0.0164201, 13.21046684], [1516702200000, 0.01648153, 0.01648153, 0.0164201, 0.01648153, 13.28131161], [1516702260000, 0.01648153, 0.01648153, 0.0164201, 0.0164201, 2.08319896], [1516702320000, 0.0164201, 0.01648, 0.01642, 0.01642, 31.78978057], [1516702380000, 0.01648, 0.01648, 0.01647999, 0.01647999, 0.61268975], [1516702440000, 0.01642, 0.01643, 0.01642, 0.01642, 12.22188631], [1516702500000, 0.01648, 0.01648, 0.01642, 0.01642, 58.76651703], [1516702560000, 0.01642001, 0.01648071, 0.01642, 0.01642, 51.00506168], [1516702620000, 0.01642, 0.01642, 0.01642, 0.01642, 2.37308892], [1516702680000, 0.01648071, 0.01649477, 0.01642, 0.01642001, 46.98791949], [1516702740000, 0.01649, 0.01649, 0.01642001, 0.01642001, 2.94967379], [1516702800000, 0.01642001, 0.01642001, 0.01642001, 0.01642001, 13.70421846], [1516702860000, 0.01642001, 0.01648999, 0.01642, 0.01648999, 16.69393603], [1516702920000, 0.01648999, 0.01648999, 0.01641999, 0.01641999, 11.01162023], [1516702980000, 0.016485, 0.01648999, 0.016485, 0.016485, 42.75363093], [1516703040000, 0.016485, 0.01649462, 0.016485, 0.016485, 19.65239857], [1516703100000, 0.01649461, 0.01649461, 0.01641999, 0.01641999, 2.46461623], [1516703160000, 0.0164946, 0.0164946, 0.01641313, 0.0164946, 5.78467372], [1516703220000, 0.01641999, 0.01641999, 0.01641313, 0.01641313, 6.58140323], [1516703280000, 0.01641313, 0.01641999, 0.01641313, 0.01641999, 10.1143112], [1516703340000, 0.01641999, 0.01641999, 0.01641313, 0.01641313, 12.29078543], [1516703400000, 0.01641313, 0.01641998, 0.01640365, 0.01641998, 0.76700343], [1516703460000, 0.01641998, 0.01649, 0.01640365, 0.01640365, 24.90079269], [1516703520000, 0.01648499, 0.01648499, 0.01640365, 0.01640365, 5.52781729], [1516703580000, 0.01640157, 0.01640365, 0.01640157, 0.01640365, 0.32221051], [1516703640000, 0.016405, 0.01647997, 0.01640365, 0.01647997, 7.09464302], [1516703700000, 0.01640157, 0.01646533, 0.01640005, 0.01640005, 12.42142659], [1516703760000, 0.0164547, 0.01649459, 0.01640005, 0.01642, 18.26128568], [1516703820000, 0.01642, 0.01648464, 0.01642, 0.01642, 15.79843653], [1516703880000, 0.01648498, 0.01648498, 0.01642, 0.01642, 18.42937686], [1516703940000, 0.01640005, 0.016402, 0.01640005, 0.01640005, 6.83384373], [1516704000000, 0.016402, 0.01641211, 0.0164, 0.0164, 19.96187569], [1516704060000, 0.0164, 0.0164943, 0.0164, 0.0164, 4.81110957], [1516704120000, 0.016494, 0.016509, 0.0164, 0.0164, 41.90403254], [1516704180000, 0.0164, 0.01649389, 0.016392, 0.016392, 55.81967335], [1516704240000, 0.016392, 0.01650397, 0.016392, 0.01650397, 6.35749499], [1516704300000, 0.016494, 0.01650897, 0.016392, 0.01650897, 6.08379811], [1516704360000, 0.016494, 0.016494, 0.0163925, 0.0163925, 6.41787523], [1516704420000, 0.0163925, 0.01648898, 0.0163925, 0.01648887, 7.0127798], [1516704480000, 0.0163925, 0.01648863, 0.0163925, 0.0163925, 12.55959934], [1516704540000, 0.01639202, 0.01648697, 0.01639, 0.01648663, 32.52572066], [1516704600000, 0.01639002, 0.01639002, 0.01639, 0.01639, 2.19112607], [1516704660000, 0.01639, 0.01639001, 0.01638, 0.01639001, 5.41352008], [1516704720000, 0.01639001, 0.01639001, 0.016388, 0.01639001, 40.83143424], [1516704780000, 0.01639001, 0.0163901, 0.016389, 0.016389, 16.06011783], [1516704840000, 0.0163901, 0.01648199, 0.016389, 0.01640649, 27.81348268], [1516704900000, 0.01639011, 0.01647698, 0.016389, 0.016389, 7.97812601], [1516704960000, 0.01647699, 0.016477, 0.016389, 0.01646, 9.98428804], [1516705020000, 0.01646, 0.01646, 0.01646, 0.01646, 0.15040928], [1516705080000, 0.01645999, 0.01646, 0.016389, 0.016389, 7.88997804], [1516705140000, 0.01646, 0.01646, 0.016389, 0.016389, 1.97957759], [1516705200000, 0.01645997, 0.01645997, 0.016389, 0.0163895, 5.41038387], [1516705260000, 0.01645992, 0.01645992, 0.0164, 0.0164, 0.11371581], [1516705320000, 0.0164, 0.01645986, 0.0163895, 0.01645981, 16.87619778], [1516705380000, 0.01645981, 0.01645981, 0.01645981, 0.01645981, 0.88149232], [1516705440000, 0.01645976, 0.01645976, 0.0163895, 0.0164597, 3.70090213], [1516705500000, 0.0163895, 0.01645496, 0.016389, 0.01645496, 4.58535101], [1516705560000, 0.016389, 0.01645495, 0.016389, 0.016389, 14.08678995], [1516705620000, 0.01645489, 0.0164549, 0.016389, 0.016389, 14.75803465], [1516705680000, 0.016389, 0.016389, 0.016389, 0.016389, 7.07637704], [1516705740000, 0.016454, 0.016454, 0.01639, 0.01639, 14.60772215], [1516705800000, 0.01639, 0.01643384, 0.01639, 0.01639, 10.19114354], [1516705860000, 0.01639, 0.01645399, 0.01638901, 0.01643379, 35.92808], [1516705920000, 0.01643381, 0.01645408, 0.01643381, 0.01643381, 32.82498267], [1516705980000, 0.01643381, 0.016505, 0.01643381, 0.01643381, 23.44867773], [1516706040000, 0.01643381, 0.01649998, 0.01639101, 0.01643381, 16.33939163], [1516706100000, 0.01643381, 0.016505, 0.01643381, 0.016505, 5.57682733], [1516706160000, 0.01649499, 0.01649499, 0.01643381, 0.01643381, 2.61625152], [1516706220000, 0.01649499, 0.016505, 0.01638901, 0.01640502, 52.64698543], [1516706280000, 0.01641, 0.01641, 0.01641, 0.01641, 0.38267188], [1516706340000, 0.01641, 0.01650499, 0.01641, 0.01650499, 5.02076968], [1516706400000, 0.01650496, 0.01650496, 0.01641, 0.01650496, 8.71915028], [1516706460000, 0.01650496, 0.01650496, 0.01641018, 0.01641503, 8.23525939], [1516706520000, 0.01650496, 0.01650497, 0.01642005, 0.01642006, 3.46181899], [1516706580000, 0.01642006, 0.01650497, 0.01642006, 0.0165048, 3.2319451], [1516706640000, 0.016425, 0.016431, 0.016425, 0.016431, 14.84076747], [1516706700000, 0.0165048, 0.0165048, 0.0165045, 0.0165045, 0.79202741], [1516706760000, 0.0165045, 0.0165048, 0.016436, 0.016436, 11.81342096], [1516706820000, 0.0165045, 0.0165048, 0.016432, 0.0165048, 5.58315763], [1516706880000, 0.01643701, 0.0165048, 0.016431, 0.016436, 12.14203504], [1516706940000, 0.01643205, 0.01652359, 0.0164255, 0.0164255, 40.92702621], [1516707000000, 0.01644743, 0.01653, 0.016431, 0.01651355, 28.98802767], [1516707060000, 0.01652998, 0.01652998, 0.01651355, 0.016525, 20.59723887], [1516707120000, 0.01651355, 0.01652498, 0.01651355, 0.01651355, 95.20666254], [1516707180000, 0.016436, 0.016436, 0.016431, 0.016436, 1.45110375], [1516707240000, 0.016436, 0.01649998, 0.016436, 0.01649998, 10.28337115], [1516707300000, 0.016436, 0.016525, 0.016436, 0.01652, 20.0880817], [1516707360000, 0.016525, 0.01652998, 0.016436, 0.016436, 62.39447553], [1516707420000, 0.01652498, 0.016525, 0.016436, 0.01652499, 11.50599604], [1516707480000, 0.016437, 0.016515, 0.016436, 0.016436, 7.31730874], [1516707540000, 0.01652, 0.01652, 0.016436, 0.016437, 14.8970406], [1516707600000, 0.0164998, 0.0164998, 0.0164, 0.016455, 17.32646044], [1516707660000, 0.01640505, 0.016455, 0.01638988, 0.016455, 70.21234665], [1516707720000, 0.016455, 0.016455, 0.01641001, 0.01641001, 10.09039964], [1516707780000, 0.016455, 0.016455, 0.016455, 0.016455, 4.14033601], [1516707840000, 0.016455, 0.016524, 0.016454, 0.016524, 50.58507639], [1516707900000, 0.016455, 0.016524, 0.01642009, 0.016524, 11.17168273], [1516707960000, 0.016424, 0.01652998, 0.01642203, 0.01644, 61.66675117], [1516708020000, 0.01650248, 0.01652998, 0.01644016, 0.0165299, 16.21168877], [1516708080000, 0.0165299, 0.01652998, 0.01644096, 0.01652998, 61.52395007], [1516708140000, 0.01652, 0.01652998, 0.01644131, 0.01652995, 29.94301583], [1516708200000, 0.01644164, 0.01651, 0.01641, 0.01644166, 102.11707313], [1516708260000, 0.01641501, 0.01651, 0.01641501, 0.01646, 18.64083715], [1516708320000, 0.01650899, 0.01651, 0.01646, 0.01646, 25.99618719], [1516708380000, 0.01646, 0.01651, 0.01646, 0.01646001, 14.06138589], [1516708440000, 0.01646001, 0.01651, 0.01642002, 0.01644, 27.44956728], [1516708500000, 0.01644, 0.01651, 0.01644, 0.01651, 8.41255187], [1516708560000, 0.01651, 0.01651, 0.01642534, 0.01651, 30.14925163], [1516708620000, 0.01642534, 0.01651, 0.01641506, 0.01643008, 90.83390261], [1516708680000, 0.01650999, 0.01650999, 0.01643002, 0.01643002, 1.03490594], [1516708740000, 0.01643002, 0.01648033, 0.01641501, 0.01643002, 175.36393923], [1516708800000, 0.01643002, 0.0165, 0.01643002, 0.01643777, 98.7674173], [1516708860000, 0.01648033, 0.0165, 0.01644811, 0.0165, 21.53870967], [1516708920000, 0.0165, 0.0165, 0.01643777, 0.01644301, 20.46757366], [1516708980000, 0.01649998, 0.01651, 0.01644802, 0.01650911, 49.62819517], [1516709040000, 0.01649998, 0.01652998, 0.01645305, 0.01645805, 49.29146606], [1516709100000, 0.01652996, 0.016539, 0.01645831, 0.016539, 336.24003794], [1516709160000, 0.016539, 0.01654, 0.01652998, 0.01652998, 96.14557646], [1516709220000, 0.01652998, 0.016539, 0.01652998, 0.01653867, 63.44282017], [1516709280000, 0.01653867, 0.016539, 0.01652998, 0.016539, 56.49646264], [1516709340000, 0.016539, 0.01654, 0.01652998, 0.01652998, 42.86803993], [1516709400000, 0.01653967, 0.01653967, 0.01652998, 0.01652998, 78.01452314], [1516709460000, 0.01652998, 0.01653967, 0.01652998, 0.01652998, 60.17292821], [1516709520000, 0.01654, 0.01655876, 0.01654, 0.01655876, 3.72033365], [1516709580000, 0.01655876, 0.01656877, 0.01652998, 0.01653967, 28.93780486], [1516709640000, 0.01655875, 0.0165588, 0.01655875, 0.0165588, 13.10169775], [1516709700000, 0.0165588, 0.01656878, 0.01655876, 0.01656878, 68.57288407], [1516709760000, 0.01656878, 0.01657171, 0.01655877, 0.01656878, 123.7744704], [1516709820000, 0.01657171, 0.01659, 0.01657171, 0.01658918, 102.11485806], [1516709880000, 0.0165892, 0.01659, 0.01658918, 0.01658918, 14.00596222], [1516709940000, 0.0165892, 0.0165892, 0.01658918, 0.01658918, 6.62028247], [1516710000000, 0.0165892, 0.01659, 0.01656878, 0.01656878, 45.84182006], [1516710060000, 0.01659, 0.01659, 0.01656878, 0.01656895, 14.18029486], [1516710120000, 0.01659, 0.01659, 0.01656895, 0.01656895, 29.01749413], [1516710180000, 0.01656895, 0.01658896, 0.01656878, 0.01656878, 60.91600556], [1516710240000, 0.01656895, 0.0166, 0.01656895, 0.016589, 61.26936518], [1516710300000, 0.0166, 0.0166049, 0.01656895, 0.01656895, 9.70458717], [1516710360000, 0.01656895, 0.01660468, 0.01656878, 0.01656878, 207.1616207], [1516710420000, 0.01656878, 0.01659847, 0.01655877, 0.01655877, 59.66007796], [1516710480000, 0.01655877, 0.01659745, 0.01655876, 0.01655876, 33.70369771], [1516710540000, 0.01655876, 0.01659662, 0.01655876, 0.01655876, 10.66416614], [1516710600000, 0.01655876, 0.01659495, 0.01655876, 0.01655876, 13.34053781], [1516710660000, 0.01655876, 0.01659497, 0.01655876, 0.01655876, 6.90943921], [1516710720000, 0.01659495, 0.01659495, 0.01655876, 0.01655877, 9.92437317], [1516710780000, 0.01655877, 0.01659497, 0.01655876, 0.01659497, 2.41111186], [1516710840000, 0.01655876, 0.01655877, 0.01655876, 0.01655877, 0.6874365], [1516710900000, 0.01657769, 0.01659495, 0.01657769, 0.01657769, 18.63418639], [1516710960000, 0.01658998, 0.01658998, 0.01657769, 0.01657769, 4.15969987], [1516711020000, 0.01657769, 0.01658997, 0.01655877, 0.0165777, 18.07384218], [1516711080000, 0.0165777, 0.0165777, 0.0164933, 0.01655876, 42.64923434], [1516711140000, 0.01658997, 0.01658997, 0.01649311, 0.01649311, 26.30343724], [1516711200000, 0.01658997, 0.01658997, 0.01649311, 0.01649311, 2.3525252], [1516711260000, 0.01650801, 0.01659462, 0.01650801, 0.01650805, 1.78630516], [1516711320000, 0.01652, 0.01655826, 0.01650804, 0.01650804, 8.55542898], [1516711380000, 0.01650818, 0.01658964, 0.01650808, 0.01650821, 23.40238597], [1516711440000, 0.0165082, 0.01658996, 0.01649314, 0.01658996, 235.52796782], [1516711500000, 0.01658964, 0.01658964, 0.01649317, 0.0165, 10.69293932], [1516711560000, 0.01649311, 0.01649311, 0.01645801, 0.01649235, 75.9076204], [1516711620000, 0.01656111, 0.01656111, 0.01656011, 0.0165611, 25.66849827], [1516711680000, 0.01646901, 0.01646901, 0.01646901, 0.01646901, 0.48985158], [1516711740000, 0.01656167, 0.01656167, 0.016469, 0.016469, 48.2244219], [1516711800000, 0.01656167, 0.01656167, 0.01643231, 0.01656167, 220.38096061], [1516711860000, 0.01653538, 0.01653538, 0.01642876, 0.0164531, 38.65450323], [1516711920000, 0.01653423, 0.01655999, 0.01653423, 0.01655997, 2.52969212], [1516711980000, 0.01655999, 0.01655999, 0.01653423, 0.016559, 7.91859051], [1516712040000, 0.01655899, 0.01655999, 0.01644801, 0.01655897, 6.71204652], [1516712100000, 0.01655894, 0.01655894, 0.016538, 0.01655894, 28.79235462], [1516712160000, 0.01655894, 0.01655894, 0.01654, 0.01654, 43.42160597], [1516712220000, 0.0165589, 0.0165589, 0.01655889, 0.01655889, 2.13499345], [1516712280000, 0.01654, 0.01655889, 0.01645213, 0.016538, 23.00751311], [1516712340000, 0.016538, 0.016538, 0.01648002, 0.016538, 20.98675403], [1516712400000, 0.016538, 0.016538, 0.01648001, 0.01648002, 1.71105031], [1516712460000, 0.01648, 0.016538, 0.01644703, 0.0165379, 14.17131959], [1516712520000, 0.0165379, 0.0165379, 0.01648001, 0.01653789, 12.13868045], [1516712580000, 0.01653788, 0.01653788, 0.01653788, 0.01653788, 1.16666513], [1516712640000, 0.01653788, 0.01653789, 0.01653788, 0.01653789, 6.48553352], [1516712700000, 0.01653789, 0.01653789, 0.01653788, 0.01653788, 2.34471959], [1516712760000, 0.01653788, 0.01653789, 0.01645272, 0.01645272, 14.56772065], [1516712820000, 0.01645272, 0.01653789, 0.0164429, 0.0164429, 11.46854312], [1516712880000, 0.0164429, 0.01653789, 0.0164429, 0.0165378, 2.93060605], [1516712940000, 0.016534, 0.016534, 0.01644501, 0.016534, 2.31453521], [1516713000000, 0.016534, 0.016534, 0.01644501, 0.01653399, 5.56717032], [1516713060000, 0.016531, 0.01653397, 0.01643246, 0.01643624, 86.93154024], [1516713120000, 0.01653188, 0.01653196, 0.01643622, 0.01643622, 25.42095144], [1516713180000, 0.01643622, 0.01643622, 0.01641501, 0.0164247, 66.67933692], [1516713240000, 0.01651, 0.01651, 0.0164247, 0.01650996, 45.33724862], [1516713300000, 0.01650599, 0.01650599, 0.01642471, 0.01643, 5.60435243], [1516713360000, 0.01643, 0.01647117, 0.01641502, 0.01641502, 35.56723204], [1516713420000, 0.01641512, 0.0164955, 0.01641512, 0.0164955, 13.83954079], [1516713480000, 0.0164955, 0.0164955, 0.01641594, 0.01648227, 2.39430893], [1516713540000, 0.01648227, 0.0164955, 0.01648227, 0.0164955, 143.83483328], [1516713600000, 0.01649549, 0.01649549, 0.016495, 0.01649505, 7.4653005], [1516713660000, 0.01649505, 0.0164955, 0.01648227, 0.0164825, 23.02468963], [1516713720000, 0.01648227, 0.0164955, 0.01648227, 0.01648227, 0.20067037], [1516713780000, 0.01648227, 0.01648826, 0.01648227, 0.01648227, 12.10963775], [1516713840000, 0.01648227, 0.01648227, 0.01648227, 0.01648227, 0.17518693], [1516713900000, 0.01648227, 0.01648227, 0.01643021, 0.01643021, 3.42677162], [1516713960000, 0.01645, 0.01645, 0.01643021, 0.01645, 53.54944527], [1516714020000, 0.01643021, 0.01648825, 0.01643021, 0.01645, 127.88749822], [1516714080000, 0.01643021, 0.01648825, 0.01643021, 0.01648825, 66.51078875], [1516714140000, 0.01648825, 0.01648825, 0.01643021, 0.01643021, 27.83729216], [1516714200000, 0.01648825, 0.01648825, 0.01643021, 0.01648825, 18.37747073], [1516714260000, 0.01648825, 0.01648825, 0.01644, 0.01644, 6.6641098], [1516714320000, 0.01644, 0.01648825, 0.01644, 0.01648825, 1.56255348], [1516714380000, 0.01648825, 0.01648825, 0.01642, 0.01648825, 33.77109385], [1516714440000, 0.01648825, 0.01648825, 0.016425, 0.01648825, 7.45030452], [1516714500000, 0.01648825, 0.01648825, 0.01642501, 0.01642501, 11.23422013], [1516714560000, 0.01642501, 0.01648825, 0.01642501, 0.01647, 20.17445897], [1516714620000, 0.01647, 0.01647, 0.01642, 0.01642, 13.52568734], [1516714680000, 0.01647, 0.01648825, 0.01642, 0.01642, 9.73443988], [1516714740000, 0.01648825, 0.01648825, 0.01641602, 0.01648825, 30.89352962], [1516714800000, 0.01642, 0.01648825, 0.01642, 0.016488, 2.63192696], [1516714860000, 0.016488, 0.016488, 0.01642, 0.016488, 0.72715625], [1516714920000, 0.016488, 0.016488, 0.01642, 0.016459, 9.38683544], [1516714980000, 0.016459, 0.016459, 0.01642, 0.01642, 17.38397809], [1516715040000, 0.016458, 0.016458, 0.01641602, 0.016458, 6.88297429], [1516715100000, 0.016458, 0.016459, 0.01641782, 0.016459, 22.42046351], [1516715160000, 0.01642601, 0.01648824, 0.01641783, 0.01648824, 116.38242391], [1516715220000, 0.01642801, 0.01648825, 0.01642801, 0.016433, 5.54911716], [1516715280000, 0.01648825, 0.0164955, 0.016488, 0.016488, 58.90890687], [1516715340000, 0.0164955, 0.0165, 0.016488, 0.0165, 10.48704722], [1516715400000, 0.0164955, 0.01655, 0.016489, 0.0165, 21.89903536], [1516715460000, 0.016489, 0.0165, 0.016489, 0.0165, 8.40000001], [1516715520000, 0.01655, 0.01655, 0.01648901, 0.01655, 7.03928957], [1516715580000, 0.01654998, 0.01655, 0.016488, 0.01655, 48.2592611], [1516715640000, 0.01655, 0.01655, 0.016488, 0.01654999, 35.2472988], [1516715700000, 0.01654999, 0.01655997, 0.01654999, 0.01654999, 5.16882946], [1516715760000, 0.01654999, 0.01654999, 0.016488, 0.01654999, 38.21746542], [1516715820000, 0.01651576, 0.01654999, 0.016488, 0.016488, 13.90379856], [1516715880000, 0.01654999, 0.01654999, 0.01648801, 0.01654999, 5.82979286], [1516715940000, 0.01655, 0.01655, 0.01648801, 0.01649, 36.66486533], [1516716000000, 0.01655, 0.01655996, 0.01654999, 0.01654999, 14.24951726], [1516716060000, 0.01655996, 0.01655997, 0.01654999, 0.01654999, 11.24974211], [1516716120000, 0.01654999, 0.01655998, 0.01654999, 0.01655998, 5.12567663], [1516716180000, 0.01654999, 0.01655998, 0.01654999, 0.01655997, 8.17688166], [1516716240000, 0.01654999, 0.01655999, 0.01648, 0.01655999, 8.5002518], [1516716300000, 0.01655999, 0.01655999, 0.01648, 0.01648, 13.26690443], [1516716360000, 0.01648, 0.01655999, 0.01648, 0.01655999, 2.8414335], [1516716420000, 0.01655999, 0.01659074, 0.01648235, 0.01648235, 54.30156754], [1516716480000, 0.01655999, 0.01655999, 0.01648235, 0.01655999, 0.86429366], [1516716540000, 0.01654556, 0.01655999, 0.01648, 0.01648, 10.31581303], [1516716600000, 0.01654556, 0.01654556, 0.01647301, 0.01648, 16.76931532], [1516716660000, 0.01648, 0.01648, 0.016473, 0.016473, 14.06829751], [1516716720000, 0.016473, 0.01648, 0.01643665, 0.01648, 23.5263366], [1516716780000, 0.01648, 0.01654556, 0.01647, 0.01648, 10.49704212], [1516716840000, 0.01655999, 0.016566, 0.01648824, 0.01648824, 11.35181681], [1516716900000, 0.016572, 0.016577, 0.01648824, 0.01648824, 6.58080919], [1516716960000, 0.01648824, 0.01648824, 0.01648824, 0.01648824, 4.5251978], [1516717020000, 0.01648824, 0.01655699, 0.01648824, 0.01655699, 6.16599134], [1516717080000, 0.01649, 0.01649, 0.01648824, 0.01648825, 6.12518817], [1516717140000, 0.01648825, 0.01655699, 0.01643701, 0.01648825, 6.87178397], [1516717200000, 0.01644201, 0.01648825, 0.01642718, 0.016431, 232.72155565], [1516717260000, 0.016431, 0.01643622, 0.01642717, 0.01643622, 34.72129467], [1516717320000, 0.01643622, 0.01648825, 0.01642717, 0.01642717, 5.76697334], [1516717380000, 0.01642717, 0.016432, 0.01642717, 0.0164272, 1.65594923], [1516717440000, 0.0164272, 0.016432, 0.01642719, 0.01643, 39.89844163], [1516717500000, 0.016432, 0.016433, 0.01643, 0.016433, 11.22196083], [1516717560000, 0.016433, 0.016433, 0.01643, 0.016433, 14.22786029], [1516717620000, 0.016433, 0.01653998, 0.01643, 0.01643622, 27.08402686], [1516717680000, 0.01643622, 0.01655699, 0.01643622, 0.01643623, 25.85570627], [1516717740000, 0.01643623, 0.01654699, 0.01643623, 0.01643633, 28.31121549], [1516717800000, 0.01643633, 0.016443, 0.01643633, 0.01643633, 11.40989215], [1516717860000, 0.01643624, 0.01654195, 0.01643624, 0.01643633, 8.46977892], [1516717920000, 0.0165419, 0.0165419, 0.01643632, 0.01643632, 5.54751002], [1516717980000, 0.01649998, 0.01649998, 0.01643631, 0.01643631, 2.60441514], [1516718040000, 0.01643632, 0.01645, 0.016433, 0.016433, 77.25339889], [1516718100000, 0.016438, 0.01648209, 0.016438, 0.01648209, 4.89903952], [1516718160000, 0.01643302, 0.01648209, 0.01643302, 0.01645, 14.34390728], [1516718220000, 0.01648208, 0.01648208, 0.016451, 0.01648208, 2.80996126], [1516718280000, 0.01648208, 0.01648208, 0.01645, 0.016451, 2.49754932], [1516718340000, 0.016451, 0.016451, 0.01645, 0.016451, 9.77229514], [1516718400000, 0.016451, 0.016451, 0.01645001, 0.016451, 17.74969341], [1516718460000, 0.01645001, 0.016451, 0.01645001, 0.016451, 43.94003433], [1516718520000, 0.016451, 0.01648209, 0.01641782, 0.01648209, 70.8317208], [1516718580000, 0.01648209, 0.0164933, 0.01641782, 0.01648209, 1.43192297], [1516718640000, 0.01648199, 0.0164933, 0.016417, 0.01648209, 6.94619741], [1516718700000, 0.0164933, 0.01651419, 0.01643459, 0.0164933, 11.94967022], [1516718760000, 0.0164933, 0.0164933, 0.0164933, 0.0164933, 5.50250299], [1516718820000, 0.01641783, 0.01649329, 0.01641783, 0.01649329, 0.39274299], [1516718880000, 0.01641783, 0.0164529, 0.01641783, 0.016423, 19.50871074], [1516718940000, 0.016423, 0.0164529, 0.016423, 0.0164529, 17.74842843], [1516719000000, 0.0164529, 0.0164933, 0.01641782, 0.01641782, 99.49436752], [1516719060000, 0.0164933, 0.016513, 0.016432, 0.016432, 3.14468836], [1516719120000, 0.016432, 0.01649005, 0.01641782, 0.01641782, 15.58585394], [1516719180000, 0.01641782, 0.01641782, 0.01641602, 0.01641602, 104.11156645], [1516719240000, 0.01649005, 0.01649005, 0.01641503, 0.01641503, 12.02361388], [1516719300000, 0.01649005, 0.01651, 0.01647838, 0.01649006, 4.22137682], [1516719360000, 0.01649006, 0.0165, 0.01649006, 0.01649006, 4.01333087], [1516719420000, 0.01649999, 0.01649999, 0.01649006, 0.01649006, 6.3393419], [1516719480000, 0.016494, 0.016494, 0.01649006, 0.01649006, 16.49722953], [1516719540000, 0.016494, 0.016494, 0.01649006, 0.01649006, 3.08920759], [1516719600000, 0.01649007, 0.01649372, 0.01649006, 0.01649372, 6.7393218], [1516719660000, 0.01649372, 0.01649398, 0.01649007, 0.01649007, 5.81745058], [1516719720000, 0.01649007, 0.01649396, 0.01649006, 0.01649396, 12.02704043], [1516719780000, 0.01649006, 0.01649395, 0.01649006, 0.01649006, 39.29065368], [1516719840000, 0.01649006, 0.016513, 0.01649006, 0.016513, 42.99082571], [1516719900000, 0.016513, 0.01651419, 0.01651243, 0.01651243, 20.41748002], [1516719960000, 0.016513, 0.01651419, 0.01651243, 0.01651243, 4.54415513], [1516720020000, 0.016513, 0.016513, 0.01649006, 0.01649006, 13.95601254], [1516720080000, 0.01649006, 0.01651419, 0.01649006, 0.01649006, 5.17274422], [1516720140000, 0.016513, 0.016513, 0.016513, 0.016513, 5.28327268], [1516720200000, 0.01651419, 0.01654186, 0.016513, 0.016513, 11.3215021], [1516720260000, 0.016513, 0.01655114, 0.01649006, 0.016513, 76.48106428], [1516720320000, 0.01651301, 0.016546, 0.01643401, 0.01643401, 21.04842016], [1516720380000, 0.01647469, 0.01647469, 0.01642391, 0.016434, 100.98722762], [1516720440000, 0.01647469, 0.01647469, 0.01643, 0.01647469, 14.38000874], [1516720500000, 0.01647469, 0.0165, 0.016424, 0.0165, 3.90701086], [1516720560000, 0.016429, 0.0165, 0.01641504, 0.01641504, 37.26509215], [1516720620000, 0.01641503, 0.01641503, 0.016405, 0.01641503, 52.82638985], [1516720680000, 0.01640501, 0.01649, 0.016403, 0.016403, 28.42576744], [1516720740000, 0.01649, 0.01649, 0.01641, 0.01649, 21.60699317], [1516720800000, 0.01649, 0.0165, 0.01641, 0.0165, 18.39267596], [1516720860000, 0.0165, 0.0165, 0.0165, 0.0165, 3.6363636], [1516720920000, 0.0165, 0.01653, 0.01641175, 0.016415, 27.4627824], [1516720980000, 0.01648, 0.01652399, 0.01641175, 0.01652399, 15.29714517], [1516721040000, 0.016524, 0.016524, 0.0165, 0.0165, 4.57971962], [1516721100000, 0.01651498, 0.01651498, 0.0164105, 0.0164105, 15.08045366], [1516721160000, 0.0164105, 0.01651, 0.01641002, 0.01641002, 2.29764082], [1516721220000, 0.01649006, 0.01649006, 0.01641002, 0.01641003, 7.88798717], [1516721280000, 0.01647, 0.01647, 0.01641002, 0.01647, 2.04242972], [1516721340000, 0.01647, 0.01647, 0.01641002, 0.01647, 90.26045133], [1516721400000, 0.01641003, 0.01647, 0.01641003, 0.01646998, 284.5564034], [1516721460000, 0.01646998, 0.01651, 0.01641003, 0.01651, 77.41987925], [1516721520000, 0.01651, 0.01651, 0.01649999, 0.01649999, 4.79196926], [1516721580000, 0.01650081, 0.01650996, 0.01649999, 0.01649999, 16.97584314], [1516721640000, 0.01649999, 0.01651, 0.01649999, 0.01651, 18.41591147], [1516721700000, 0.01651496, 0.01654, 0.01651, 0.01651001, 45.38883603], [1516721760000, 0.01651001, 0.01654, 0.01651001, 0.01651001, 15.26482898], [1516721820000, 0.01651001, 0.01654, 0.01651001, 0.01651001, 10.26736182], [1516721880000, 0.01654, 0.01655115, 0.01651001, 0.01654, 102.52713215], [1516721940000, 0.01654, 0.01655699, 0.01651001, 0.01655519, 216.87251432], [1516722000000, 0.01651001, 0.01655518, 0.01651001, 0.01651002, 24.2187868], [1516722060000, 0.01655482, 0.01655482, 0.01651001, 0.01651001, 33.58866109], [1516722120000, 0.01651001, 0.01651002, 0.01649999, 0.01649999, 54.42066696], [1516722180000, 0.01654164, 0.01654164, 0.01649999, 0.01649999, 2.60553078], [1516722240000, 0.01649999, 0.0165303, 0.01649999, 0.01651, 38.00286618], [1516722300000, 0.01651, 0.01653522, 0.01649999, 0.01652967, 26.49475722], [1516722360000, 0.01651, 0.01651, 0.01649999, 0.01649999, 112.51795692], [1516722420000, 0.01649999, 0.016529, 0.01649999, 0.01649999, 18.02317856], [1516722480000, 0.01649999, 0.01652865, 0.01649999, 0.01649999, 21.84615689], [1516722540000, 0.01652865, 0.01652865, 0.01649999, 0.01649999, 20.37581858], [1516722600000, 0.01649999, 0.01652865, 0.01649999, 0.01652863, 2.34828821], [1516722660000, 0.01649999, 0.01652865, 0.01649999, 0.01649999, 73.44660211], [1516722720000, 0.01649999, 0.01652865, 0.01649999, 0.01649999, 21.01752842], [1516722780000, 0.01649999, 0.01652864, 0.01649999, 0.01650033, 42.73154319], [1516722840000, 0.01652864, 0.01652864, 0.0165, 0.0165, 89.18358996], [1516722900000, 0.0165, 0.01650033, 0.01649999, 0.0165, 58.8846544], [1516722960000, 0.0165, 0.01650033, 0.0165, 0.0165003, 17.71243134], [1516723020000, 0.0165, 0.0165002, 0.01648, 0.01649999, 44.3025178], [1516723080000, 0.01648001, 0.01649915, 0.01647921, 0.01649, 39.33666585], [1516723140000, 0.01649998, 0.01649998, 0.01649, 0.01649, 143.11586043], [1516723200000, 0.01649, 0.01649, 0.01648, 0.01649, 26.50709929], [1516723260000, 0.01649, 0.01649915, 0.01648999, 0.01649, 22.17007662], [1516723320000, 0.01649, 0.0165003, 0.01649, 0.01649, 40.70987572], [1516723380000, 0.01650029, 0.01650029, 0.01649, 0.01649, 8.9940683], [1516723440000, 0.01649832, 0.01650033, 0.01649, 0.01649, 29.95447955], [1516723500000, 0.01650033, 0.01650033, 0.01649831, 0.01649831, 1.83126542], [1516723560000, 0.01650032, 0.0165769, 0.01649831, 0.01656, 75.17971135], [1516723620000, 0.01649831, 0.01655999, 0.01649831, 0.01653999, 39.23911314], [1516723680000, 0.01649999, 0.01654, 0.01649999, 0.01649999, 16.88702453], [1516723740000, 0.01653999, 0.01653999, 0.01649999, 0.01649999, 89.20836595], [1516723800000, 0.01649999, 0.01649999, 0.01649, 0.016494, 75.67094062], [1516723860000, 0.01649, 0.0165, 0.01649, 0.0165, 22.99508878], [1516723920000, 0.016494, 0.01652994, 0.01649, 0.01652994, 10.72266547], [1516723980000, 0.01650001, 0.01653967, 0.01650001, 0.01650001, 27.4449694], [1516724040000, 0.01653, 0.01654, 0.01650001, 0.01650001, 252.20651516], [1516724100000, 0.01653999, 0.01654, 0.0164805, 0.0164805, 71.48578824], [1516724160000, 0.01648997, 0.01648999, 0.01648001, 0.01648915, 12.46602039], [1516724220000, 0.01648915, 0.01648998, 0.01647921, 0.01647998, 126.25006954], [1516724280000, 0.01647998, 0.01647999, 0.016445, 0.016445, 27.1320118], [1516724340000, 0.016445, 0.01645091, 0.016431, 0.016431, 23.14944343], [1516724400000, 0.016431, 0.016437, 0.016431, 0.01643105, 54.304553], [1516724460000, 0.01643105, 0.01643105, 0.016431, 0.01643105, 67.74220006], [1516724520000, 0.01643105, 0.01643105, 0.016431, 0.01643101, 21.63689759], [1516724580000, 0.01643101, 0.01643105, 0.016431, 0.016431, 8.94045365], [1516724640000, 0.01643105, 0.01643105, 0.016431, 0.016431, 3.15152575], [1516724700000, 0.01643105, 0.01643105, 0.01642074, 0.01642074, 20.55695007], [1516724760000, 0.01642074, 0.016431, 0.01638286, 0.01638286, 62.05198254], [1516724820000, 0.01638286, 0.01638286, 0.01638, 0.01638, 28.60114085], [1516724880000, 0.01638, 0.01638, 0.01635, 0.01636635, 102.73205917], [1516724940000, 0.01636635, 0.016382, 0.01636635, 0.016382, 27.11097639], [1516725000000, 0.01636635, 0.01642099, 0.01636635, 0.01641094, 64.19343337], [1516725060000, 0.0164, 0.01643102, 0.016382, 0.016382, 116.59443162], [1516725120000, 0.016382, 0.016382, 0.01636635, 0.01636717, 26.65754213], [1516725180000, 0.01636717, 0.016382, 0.01636717, 0.01638, 13.35507833], [1516725240000, 0.016382, 0.01643102, 0.016382, 0.01643102, 38.83693631], [1516725300000, 0.01643102, 0.01643102, 0.016382, 0.01643102, 15.33047637], [1516725360000, 0.01643102, 0.01643105, 0.016382, 0.016382, 30.9659972], [1516725420000, 0.016382, 0.01643102, 0.01638, 0.01638, 28.34503064], [1516725480000, 0.016382, 0.016382, 0.01637105, 0.01637105, 18.39695332], [1516725540000, 0.01636717, 0.01638, 0.01634108, 0.01634108, 39.27729716], [1516725600000, 0.0163401, 0.01634108, 0.0163401, 0.01634011, 42.92506459], [1516725660000, 0.01634011, 0.01636717, 0.0163401, 0.01636717, 52.93564365], [1516725720000, 0.01636717, 0.01638, 0.0163411, 0.01638, 35.86027643], [1516725780000, 0.01638, 0.01638, 0.0163411, 0.01638, 50.19872437], [1516725840000, 0.01638, 0.01638, 0.01637722, 0.01637722, 31.2209], [1516725900000, 0.01637722, 0.01637722, 0.0163411, 0.01637666, 16.62694405], [1516725960000, 0.01637666, 0.01637722, 0.0163411, 0.0163511, 40.48520514], [1516726020000, 0.0163511, 0.01638, 0.0163401, 0.0163401, 65.67880923], [1516726080000, 0.01638, 0.01638, 0.01632001, 0.01638, 120.19815769], [1516726140000, 0.01638, 0.01638, 0.0163401, 0.01638, 32.3259322], [1516726200000, 0.01638, 0.01638, 0.01637722, 0.01638, 41.07534732], [1516726260000, 0.01638, 0.01638, 0.01634012, 0.01637996, 81.55539979], [1516726320000, 0.01634014, 0.01637996, 0.01634014, 0.01637996, 38.27079769], [1516726380000, 0.01637, 0.01638, 0.01637, 0.01638, 41.96449943], [1516726440000, 0.01638, 0.01638, 0.01635744, 0.01638, 41.28368794], [1516726500000, 0.01638, 0.01638, 0.01635745, 0.01638, 77.03070922], [1516726560000, 0.01637, 0.01638, 0.01636002, 0.016378, 13.03507717], [1516726620000, 0.01638, 0.01643006, 0.016378, 0.016378, 14.14982558], [1516726680000, 0.01639, 0.016437, 0.0163401, 0.0163401, 83.05773591], [1516726740000, 0.0163401, 0.01644001, 0.01633684, 0.01644001, 40.77651762], [1516726800000, 0.01634203, 0.01644, 0.01634202, 0.01634205, 35.94724866], [1516726860000, 0.01634205, 0.01641853, 0.01633684, 0.01633684, 75.87286123], [1516726920000, 0.01634205, 0.0164236, 0.01633359, 0.0164236, 101.21280374], [1516726980000, 0.01641525, 0.01643854, 0.01641525, 0.01641525, 14.18727678], [1516727040000, 0.01641525, 0.016416, 0.01634711, 0.01641521, 21.86414501], [1516727100000, 0.01641519, 0.01641521, 0.01633359, 0.01633359, 24.12258545], [1516727160000, 0.01641521, 0.01641521, 0.01635, 0.01638, 12.93858915], [1516727220000, 0.01638, 0.0164152, 0.01638, 0.01638, 9.24404531], [1516727280000, 0.0164152, 0.01641525, 0.01638, 0.01638, 47.12875988], [1516727340000, 0.01641521, 0.01641525, 0.01638, 0.01638, 89.57181935], [1516727400000, 0.01643006, 0.01644001, 0.01638001, 0.01638001, 5.75348606], [1516727460000, 0.01638001, 0.01644174, 0.01638001, 0.01642262, 39.28373265], [1516727520000, 0.01638001, 0.01642179, 0.01638001, 0.01638001, 16.44431966], [1516727580000, 0.01638001, 0.01642262, 0.01638001, 0.01638001, 33.44301004], [1516727640000, 0.01638001, 0.01643068, 0.01638001, 0.01642261, 13.77981194], [1516727700000, 0.01642261, 0.01643068, 0.01638, 0.01638002, 43.80607075], [1516727760000, 0.016381, 0.01642261, 0.01638009, 0.01640699, 13.07249752], [1516727820000, 0.016381, 0.016381, 0.01633359, 0.01635, 14.66469826], [1516727880000, 0.01633359, 0.01633969, 0.01632587, 0.01632587, 21.38792892], [1516727940000, 0.01632587, 0.01633359, 0.01632001, 0.01632001, 94.59161948], [1516728000000, 0.01632001, 0.01638, 0.01632, 0.01638, 53.53412162], [1516728060000, 0.01638, 0.01638002, 0.01632, 0.01632, 17.0366476], [1516728120000, 0.01632006, 0.01637998, 0.01632, 0.01632006, 41.92901909], [1516728180000, 0.01632006, 0.01632006, 0.01632, 0.01632005, 14.74545631], [1516728240000, 0.01632005, 0.01632005, 0.01632, 0.01632, 8.78363658], [1516728300000, 0.01632002, 0.01632004, 0.01632, 0.01632004, 18.14757631], [1516728360000, 0.01632004, 0.01637995, 0.01632, 0.01632004, 30.90985745], [1516728420000, 0.01632, 0.01637992, 0.01632, 0.01637992, 11.91844025], [1516728480000, 0.01632004, 0.01637993, 0.01632004, 0.01637989, 13.95705589], [1516728540000, 0.01637989, 0.01637991, 0.01632004, 0.01632004, 7.2221349], [1516728600000, 0.01637933, 0.01637933, 0.01632004, 0.01633, 48.20439792], [1516728660000, 0.0163793, 0.0163793, 0.01632004, 0.01632004, 5.51674858], [1516728720000, 0.01632004, 0.01637699, 0.01632004, 0.01632004, 52.47563215], [1516728780000, 0.01632004, 0.01637198, 0.01632004, 0.01632004, 4.10462595], [1516728840000, 0.01637098, 0.01637098, 0.01633, 0.01633, 36.10860763], [1516728900000, 0.01632004, 0.01637097, 0.01632004, 0.01632004, 21.22458424], [1516728960000, 0.01632004, 0.01637097, 0.01632004, 0.01632004, 42.7194927], [1516729020000, 0.01637096, 0.01637198, 0.01637096, 0.01637097, 22.82223058], [1516729080000, 0.01632004, 0.01637097, 0.01632, 0.01632004, 37.50836524], [1516729140000, 0.01632004, 0.01637103, 0.01631605, 0.01631605, 44.6976068], [1516729200000, 0.01632, 0.01637101, 0.01632, 0.016371, 33.32460359], [1516729260000, 0.016371, 0.01637999, 0.01631605, 0.01636596, 195.92016663], [1516729320000, 0.01635999, 0.01635999, 0.01631605, 0.01631605, 11.78004148], [1516729380000, 0.01631198, 0.01631605, 0.01631198, 0.01631605, 3.91954727], [1516729440000, 0.01631605, 0.01631605, 0.01631111, 0.01631111, 20.62184275], [1516729500000, 0.01631111, 0.01631198, 0.01631, 0.01631111, 19.10022096], [1516729560000, 0.01631, 0.01634997, 0.01631, 0.01634997, 51.44852028], [1516729620000, 0.01634997, 0.01638002, 0.01631605, 0.01634996, 26.16071371], [1516729680000, 0.01631605, 0.01634996, 0.01631605, 0.01634996, 29.04504552], [1516729740000, 0.01631111, 0.01634996, 0.01631111, 0.01631111, 2.51689784], [1516729800000, 0.01631111, 0.01636998, 0.01631111, 0.01634995, 12.01343154], [1516729860000, 0.01634995, 0.01634995, 0.01631111, 0.01634995, 1.92051997], [1516729920000, 0.01631111, 0.01636998, 0.01631, 0.01631, 202.8262927], [1516729980000, 0.01631, 0.01636996, 0.01631, 0.01636996, 7.45719824], [1516730040000, 0.01631111, 0.01631111, 0.01631, 0.01631, 3.96221774], [1516730100000, 0.01636998, 0.01636998, 0.0163025, 0.016305, 40.36943815], [1516730160000, 0.016305, 0.01634998, 0.01630252, 0.01632132, 7.19343406], [1516730220000, 0.01634998, 0.01636998, 0.01630252, 0.01630252, 114.07842602], [1516730280000, 0.016305, 0.01636995, 0.016305, 0.01636995, 2.23414392], [1516730340000, 0.01631001, 0.01636995, 0.016305, 0.01636995, 11.01017636], [1516730400000, 0.01636995, 0.01636995, 0.01631, 0.01636995, 22.43559295], [1516730460000, 0.01636995, 0.01636995, 0.016325, 0.01636995, 29.48000838], [1516730520000, 0.016325, 0.01633, 0.01631433, 0.01631435, 3.71862456], [1516730580000, 0.016325, 0.016325, 0.01631435, 0.01631435, 1.99643281], [1516730640000, 0.01631435, 0.016325, 0.01631435, 0.01631435, 18.2978245], [1516730700000, 0.01631435, 0.01632499, 0.01631435, 0.01631435, 9.56934827], [1516730760000, 0.01632499, 0.016325, 0.01631436, 0.01632499, 4.84523998], [1516730820000, 0.01631436, 0.01632499, 0.01631435, 0.01631437, 7.38146713], [1516730880000, 0.01631437, 0.01631437, 0.01631437, 0.01631437, 6.5805363], [1516730940000, 0.01632499, 0.01636995, 0.01631437, 0.016353, 22.35419603], [1516731000000, 0.01631437, 0.01636995, 0.01631437, 0.01636995, 17.3594808], [1516731060000, 0.01636995, 0.01636995, 0.01631437, 0.01636994, 66.91775991], [1516731120000, 0.01636994, 0.01636994, 0.0163144, 0.01636594, 6.3761696], [1516731180000, 0.0163144, 0.01636594, 0.01631435, 0.01636334, 9.77446983], [1516731240000, 0.01636594, 0.01636594, 0.01636334, 0.01636334, 9.21046425], [1516731300000, 0.01631435, 0.01636594, 0.01631435, 0.01636594, 6.84983531], [1516731360000, 0.01636594, 0.01636994, 0.01636594, 0.01636595, 9.00929606], [1516731420000, 0.01636994, 0.01636995, 0.01636594, 0.01636594, 9.33346459], [1516731480000, 0.01636594, 0.01636998, 0.01631435, 0.01631435, 24.43540357], [1516731540000, 0.01636512, 0.01638231, 0.01631435, 0.01631435, 29.43743995], [1516731600000, 0.01636593, 0.01636998, 0.01631435, 0.01636997, 24.11727726], [1516731660000, 0.01636997, 0.01636997, 0.01636997, 0.01636997, 7.9643087], [1516731720000, 0.01636997, 0.01636997, 0.01631782, 0.01636997, 12.19737319], [1516731780000, 0.01631782, 0.01636997, 0.0163162, 0.01636997, 10.67059133], [1516731840000, 0.01636997, 0.01636998, 0.01631635, 0.01636997, 22.16260187], [1516731900000, 0.01631782, 0.01636998, 0.0163163, 0.01636998, 3.16018775], [1516731960000, 0.01636998, 0.01636998, 0.01636998, 0.01636998, 7.82107831], [1516732020000, 0.01636997, 0.01636997, 0.01636997, 0.01636997, 0.85150733], [1516732080000, 0.01636997, 0.0164, 0.01636997, 0.0164, 5.03913433], [1516732140000, 0.01637078, 0.01642261, 0.01636998, 0.01642261, 30.59906229], [1516732200000, 0.0164126, 0.01642004, 0.01640001, 0.01640001, 50.22043926], [1516732260000, 0.01640001, 0.01642499, 0.01640001, 0.01642499, 72.24341891], [1516732320000, 0.01641261, 0.01642006, 0.01641258, 0.01641258, 14.05594229], [1516732380000, 0.01641261, 0.01643175, 0.01641261, 0.01643175, 42.92417663], [1516732440000, 0.01642028, 0.01643175, 0.0164, 0.01641261, 13.15465384], [1516732500000, 0.01641261, 0.01641261, 0.0164, 0.0164, 8.63762446], [1516732560000, 0.01640001, 0.016436, 0.01640001, 0.01640001, 7.98235898], [1516732620000, 0.01640001, 0.01643488, 0.01640001, 0.01640001, 6.89078614], [1516732680000, 0.01643, 0.01643, 0.01636998, 0.01636998, 12.20438868], [1516732740000, 0.01639998, 0.01640001, 0.01636998, 0.01636998, 4.42809723], [1516732800000, 0.01640001, 0.01643, 0.01636998, 0.01639712, 6.32083824], [1516732860000, 0.01636998, 0.01639714, 0.01636998, 0.01636998, 10.65742591], [1516732920000, 0.01639697, 0.01639706, 0.01633969, 0.01633969, 22.5558626], [1516732980000, 0.01633969, 0.01636995, 0.0163162, 0.0163162, 4.37953459], [1516733040000, 0.0163162, 0.0163162, 0.016301, 0.01631538, 65.69554479], [1516733100000, 0.01631538, 0.0163162, 0.01630097, 0.0163162, 17.88150374], [1516733160000, 0.01631538, 0.01633961, 0.01631538, 0.01633961, 18.6208095], [1516733220000, 0.016301, 0.01633961, 0.016301, 0.01632, 4.77457805], [1516733280000, 0.01632, 0.01633961, 0.016301, 0.016301, 28.46938775], [1516733340000, 0.016301, 0.01630101, 0.01630046, 0.01630046, 39.26281465], [1516733400000, 0.01630046, 0.01630048, 0.01630046, 0.01630048, 32.49801769], [1516733460000, 0.01630046, 0.01630048, 0.01630046, 0.01630048, 122.61850219], [1516733520000, 0.01630048, 0.01632, 0.0162797, 0.0162801, 216.90633407], [1516733580000, 0.0162801, 0.01629, 0.01626, 0.01626001, 17.22217489], [1516733640000, 0.01627, 0.0163, 0.01626001, 0.01626001, 37.23223713], [1516733700000, 0.01627, 0.01627, 0.0162518, 0.01625552, 106.66649677], [1516733760000, 0.01625277, 0.01625552, 0.0162518, 0.0162518, 7.69539924], [1516733820000, 0.0162518, 0.0162518, 0.01624005, 0.01624005, 47.06763597], [1516733880000, 0.01624005, 0.01625211, 0.01624005, 0.01625211, 50.18686472], [1516733940000, 0.01625211, 0.01625211, 0.01625211, 0.01625211, 23.99006297], [1516734000000, 0.01625211, 0.01626, 0.01624005, 0.01626, 43.40577856], [1516734060000, 0.01626, 0.01626, 0.01625414, 0.01626, 41.47430309], [1516734120000, 0.01625414, 0.0163, 0.01625414, 0.0163, 28.48301179], [1516734180000, 0.0163, 0.0163, 0.0162995, 0.0162995, 3.71023288], [1516734240000, 0.016265, 0.0163, 0.016265, 0.0162995, 31.21171523], [1516734300000, 0.0163, 0.0163, 0.0162995, 0.0163, 11.11769135], [1516734360000, 0.0162995, 0.0163, 0.01625415, 0.0162995, 29.60686326], [1516734420000, 0.0162995, 0.0162995, 0.0162651, 0.01626511, 4.17027296], [1516734480000, 0.01626511, 0.016269, 0.01625414, 0.01625414, 171.98422196], [1516734540000, 0.016299, 0.0162995, 0.01626511, 0.016299, 48.66966047], [1516734600000, 0.016299, 0.016299, 0.01626511, 0.016299, 9.65887612], [1516734660000, 0.0162652, 0.016299, 0.01623326, 0.01626521, 121.40044086], [1516734720000, 0.01626521, 0.01626521, 0.01623325, 0.01626521, 4.30304492], [1516734780000, 0.01626521, 0.016299, 0.01626521, 0.0162821, 7.66277178], [1516734840000, 0.01626521, 0.01626521, 0.01623325, 0.01626521, 35.49048236], [1516734900000, 0.01626521, 0.016299, 0.01626521, 0.01629899, 2.66223064], [1516734960000, 0.01629899, 0.01630046, 0.01626521, 0.01626521, 47.43845031], [1516735020000, 0.01630046, 0.01631999, 0.01626521, 0.01631999, 11.08449456], [1516735080000, 0.01631999, 0.01632204, 0.01623325, 0.01632204, 4.02131741], [1516735140000, 0.01631, 0.01631, 0.01624949, 0.01631, 12.62862053], [1516735200000, 0.01631, 0.01632112, 0.01623001, 0.0163059, 12.63071719], [1516735260000, 0.0163059, 0.01632112, 0.0163059, 0.0163059, 16.43686928], [1516735320000, 0.0163059, 0.01632111, 0.01625001, 0.01625001, 27.92782121], [1516735380000, 0.016305, 0.016305, 0.01625, 0.016305, 2.48711592], [1516735440000, 0.016305, 0.016305, 0.01625, 0.016305, 6.20962861], [1516735500000, 0.016305, 0.016305, 0.01623001, 0.016233, 17.68798333], [1516735560000, 0.016235, 0.01625, 0.01623003, 0.01625, 12.69700243], [1516735620000, 0.016305, 0.016305, 0.016305, 0.016305, 0.07630873], [1516735680000, 0.01628989, 0.01628989, 0.01628986, 0.01628986, 7.44546359], [1516735740000, 0.01628989, 0.0162899, 0.01628989, 0.0162899, 3.93481481], [1516735800000, 0.0162899, 0.01632111, 0.0162899, 0.01632111, 24.16548105], [1516735860000, 0.0163211, 0.01632112, 0.0163211, 0.01632111, 19.79636651], [1516735920000, 0.01632112, 0.01632112, 0.01632111, 0.01632112, 10.70283606], [1516735980000, 0.01632111, 0.01632112, 0.0163211, 0.01632112, 4.98892939], [1516736040000, 0.01632112, 0.01632112, 0.01632112, 0.01632112, 13.95558815], [1516736100000, 0.01632112, 0.01639498, 0.01632112, 0.01632204, 9.95518597], [1516736160000, 0.01638499, 0.01638499, 0.01632112, 0.01632204, 17.91157696], [1516736220000, 0.01632112, 0.01632204, 0.01632112, 0.01632204, 9.83644917], [1516736280000, 0.01632112, 0.01638, 0.01632112, 0.01633, 11.76297289], [1516736340000, 0.01638, 0.01638, 0.01633, 0.01633, 31.86080168], [1516736400000, 0.01633, 0.01638, 0.01633, 0.01636, 20.16753794], [1516736460000, 0.01636, 0.01636, 0.01633, 0.01636, 0.54112245], [1516736520000, 0.01633, 0.01638499, 0.01633, 0.01638, 22.44063958], [1516736580000, 0.01636, 0.01636, 0.01633, 0.01636, 16.20142894], [1516736640000, 0.01636, 0.01638992, 0.01636, 0.01636, 108.49689803], [1516736700000, 0.01636, 0.0164, 0.01633, 0.01633, 161.21635772], [1516736760000, 0.01633, 0.01639998, 0.01632112, 0.01632112, 14.86030386], [1516736820000, 0.01632112, 0.01632112, 0.01625006, 0.01625012, 15.93038535], [1516736880000, 0.01626402, 0.01637499, 0.01625, 0.01636999, 97.12263231], [1516736940000, 0.01636, 0.01636, 0.01625003, 0.01625003, 0.86879224], [1516737000000, 0.01629, 0.01636399, 0.01629, 0.01629, 4.46213144], [1516737060000, 0.016358, 0.01636399, 0.01629, 0.01629, 3.02271457], [1516737120000, 0.01625002, 0.01629, 0.01625002, 0.01626512, 9.9823486], [1516737180000, 0.01626512, 0.01626512, 0.01625001, 0.01626512, 32.63741209], [1516737240000, 0.01626512, 0.01626512, 0.01625001, 0.01626512, 237.24885578], [1516737300000, 0.01626512, 0.01636433, 0.01626512, 0.01635994, 34.11418562], [1516737360000, 0.016359, 0.01635961, 0.01628138, 0.0163013, 6.93163279], [1516737420000, 0.0163013, 0.01636999, 0.01628138, 0.01628138, 2.47601768], [1516737480000, 0.01628138, 0.01636431, 0.01628138, 0.01629, 0.71474398], [1516737540000, 0.01628139, 0.01629, 0.01626512, 0.01626838, 8.7508258], [1516737600000, 0.01628999, 0.01636298, 0.01628999, 0.01635467, 7.32601597], [1516737660000, 0.01635467, 0.01635467, 0.01628999, 0.01635299, 5.50908064], [1516737720000, 0.01629988, 0.01634999, 0.01625001, 0.01625001, 17.11755169], [1516737780000, 0.016335, 0.016335, 0.01626515, 0.01628999, 3.35191808], [1516737840000, 0.01632867, 0.01632867, 0.01626515, 0.01626515, 5.16996368], [1516737900000, 0.01626519, 0.01634499, 0.01626515, 0.01626516, 14.19572394], [1516737960000, 0.01632799, 0.01632799, 0.01626515, 0.01626516, 35.18619243], [1516738020000, 0.01626517, 0.01635, 0.01626516, 0.01626517, 12.75186525], [1516738080000, 0.01626517, 0.01634319, 0.01626516, 0.01626517, 4.85402856], [1516738140000, 0.016338, 0.01633967, 0.01624983, 0.01633967, 33.00471674], [1516738200000, 0.01626519, 0.01633967, 0.01626518, 0.01626519, 4.02170596], [1516738260000, 0.01633967, 0.01633967, 0.01633966, 0.01633966, 1.29696644], [1516738320000, 0.01633966, 0.01633966, 0.01626521, 0.01632332, 14.51218566], [1516738380000, 0.01632332, 0.01635, 0.0162653, 0.01635, 10.36878561], [1516738440000, 0.01635, 0.01636465, 0.01633967, 0.01636465, 10.17487595], [1516738500000, 0.01636465, 0.01636999, 0.0162652, 0.01633967, 6.23494974], [1516738560000, 0.01636998, 0.01636999, 0.01636995, 0.01636995, 23.60406982], [1516738620000, 0.016365, 0.016365, 0.01626518, 0.01626519, 47.59010722], [1516738680000, 0.01628146, 0.01636999, 0.01626505, 0.01636999, 11.37969933], [1516738740000, 0.01636999, 0.01636999, 0.01630727, 0.01636498, 5.94324674], [1516738800000, 0.01630727, 0.01636498, 0.01630727, 0.01636489, 4.49250778], [1516738860000, 0.01630727, 0.0163628, 0.01630727, 0.01634499, 5.96022619], [1516738920000, 0.016308, 0.016308, 0.01626505, 0.01626505, 19.47838493], [1516738980000, 0.01626505, 0.01630001, 0.01626505, 0.01626505, 4.53074997], [1516739040000, 0.01626505, 0.01630727, 0.01626505, 0.01630001, 2.11469019], [1516739100000, 0.01630001, 0.016361, 0.01625006, 0.016361, 11.17918887], [1516739160000, 0.016361, 0.016365, 0.01636079, 0.0163609, 7.60803176], [1516739220000, 0.01636999, 0.016378, 0.01626107, 0.016378, 11.1071877], [1516739280000, 0.016373, 0.016373, 0.016373, 0.016373, 2.42368811], [1516739340000, 0.01637799, 0.01638, 0.01637799, 0.016378, 5.39317897], [1516739400000, 0.01626666, 0.016378, 0.01626073, 0.016378, 26.58993815], [1516739460000, 0.01635, 0.01635, 0.01635, 0.01635, 3.49749461], [1516739520000, 0.01635, 0.01635, 0.01627073, 0.01635, 3.53683347], [1516739580000, 0.01627074, 0.01627074, 0.01626, 0.01627074, 1.41395255], [1516739640000, 0.01627074, 0.016363, 0.016255, 0.016255, 40.74946503], [1516739700000, 0.01625505, 0.016363, 0.01625505, 0.01635, 25.9728507], [1516739760000, 0.01634, 0.016363, 0.01627073, 0.01627073, 9.00137319], [1516739820000, 0.01627072, 0.016276, 0.01626572, 0.016276, 59.80577398], [1516739880000, 0.016276, 0.016276, 0.01627058, 0.016276, 14.82196448], [1516739940000, 0.016276, 0.016363, 0.016271, 0.016276, 42.65772761], [1516740000000, 0.016281, 0.01638, 0.01627102, 0.016333, 27.15637438], [1516740060000, 0.01633267, 0.01633267, 0.01633266, 0.01633267, 9.52803846], [1516740120000, 0.01633267, 0.01633267, 0.01627104, 0.016276, 13.34014576], [1516740180000, 0.01633267, 0.01633267, 0.01633266, 0.01633267, 28.97147391], [1516740240000, 0.01633267, 0.01633267, 0.01633266, 0.01633267, 10.99088102], [1516740300000, 0.01633266, 0.01633267, 0.01633266, 0.01633266, 5.13876814], [1516740360000, 0.01633266, 0.01633266, 0.01627601, 0.01633266, 10.93788594], [1516740420000, 0.01633266, 0.01633266, 0.01633, 0.0163326, 0.26768819], [1516740480000, 0.016329, 0.016329, 0.01627601, 0.016281, 8.29452009], [1516740540000, 0.016329, 0.016329, 0.01627601, 0.01627601, 19.48142438], [1516740600000, 0.01632834, 0.01632834, 0.016276, 0.016281, 6.21321417], [1516740660000, 0.01632867, 0.01632867, 0.01629, 0.01629, 1.61141567], [1516740720000, 0.01629, 0.01632866, 0.01629, 0.01629, 26.23610399], [1516740780000, 0.01629, 0.016329, 0.01629, 0.01629, 23.93112285], [1516740840000, 0.01629, 0.01632778, 0.016281, 0.016281, 29.28034104], [1516740900000, 0.01629, 0.01629, 0.01628102, 0.01629, 9.19005746], [1516740960000, 0.01628102, 0.01628102, 0.016276, 0.01627999, 103.63125919], [1516741020000, 0.01627999, 0.01628, 0.01627999, 0.01627999, 17.83554432], [1516741080000, 0.01627999, 0.01628, 0.01627999, 0.01628, 19.76651505], [1516741140000, 0.01628, 0.01628, 0.01627999, 0.01628, 8.95903266], [1516741200000, 0.01627999, 0.01628, 0.016276, 0.01628, 27.34349934], [1516741260000, 0.01628, 0.01628, 0.016276, 0.01628, 5.78283119], [1516741320000, 0.01628, 0.01628, 0.016276, 0.016276, 7.98631265], [1516741380000, 0.016276, 0.01628, 0.01627102, 0.01627999, 43.03792513], [1516741440000, 0.01627102, 0.01627999, 0.01627102, 0.016278, 7.46472445], [1516741500000, 0.016278, 0.016278, 0.01627, 0.016278, 59.66450076], [1516741560000, 0.016278, 0.016278, 0.01625007, 0.016278, 10.30412475], [1516741620000, 0.01625007, 0.016278, 0.01625007, 0.016278, 19.10206577], [1516741680000, 0.016278, 0.016278, 0.01625005, 0.01627799, 32.8956481], [1516741740000, 0.01627799, 0.01628, 0.01627799, 0.01628, 15.27358469], [1516741800000, 0.01627999, 0.01629, 0.01627799, 0.01629, 3.41942593], [1516741860000, 0.01629, 0.01632778, 0.01629, 0.01632778, 15.26245975], [1516741920000, 0.01632778, 0.01633267, 0.01632778, 0.01633267, 16.18376951], [1516741980000, 0.01632778, 0.01637, 0.01632778, 0.01636998, 2.20087292], [1516742040000, 0.01632778, 0.01633, 0.0163, 0.0163, 9.33546188], [1516742100000, 0.0163, 0.01632778, 0.0163, 0.01632778, 3.082127], [1516742160000, 0.01632778, 0.01632778, 0.016285, 0.0163, 7.19883039], [1516742220000, 0.0163, 0.0163, 0.016285, 0.0163, 9.00579505], [1516742280000, 0.01629999, 0.0163, 0.01627799, 0.0163, 22.42749248], [1516742340000, 0.01627799, 0.0163, 0.016267, 0.0162999, 51.97898437], [1516742400000, 0.0162999, 0.01632778, 0.01627601, 0.01632778, 13.26827535], [1516742460000, 0.01632778, 0.01632953, 0.0163, 0.01632953, 20.16242956], [1516742520000, 0.0163794, 0.0163794, 0.0163295, 0.0163734, 14.79209871], [1516742580000, 0.01632778, 0.01638877, 0.01632778, 0.016385, 10.7546486], [1516742640000, 0.01637998, 0.01638826, 0.01632778, 0.016385, 30.43763414], [1516742700000, 0.016385, 0.01638824, 0.01632778, 0.01638824, 4.39137227], [1516742760000, 0.01637999, 0.01637999, 0.01637997, 0.01637997, 0.70439004], [1516742820000, 0.016375, 0.01637997, 0.0163, 0.01634, 5.1384437], [1516742880000, 0.01634, 0.01637997, 0.01633998, 0.01633998, 52.14706465], [1516742940000, 0.01633998, 0.01637997, 0.0163, 0.01637907, 27.00692332], [1516743000000, 0.01637907, 0.01637907, 0.0163, 0.01637, 19.56662928], [1516743060000, 0.01637907, 0.01637907, 0.0163, 0.01637907, 1.39867782], [1516743120000, 0.01637907, 0.01637997, 0.01637, 0.01637907, 17.11411184], [1516743180000, 0.01637907, 0.01637997, 0.016305, 0.016305, 35.65918028], [1516743240000, 0.01637999, 0.01637999, 0.01637997, 0.01637997, 4.66763049], [1516743300000, 0.01637999, 0.01637999, 0.0163, 0.0163, 2.00234668], [1516743360000, 0.0163, 0.01637999, 0.0163, 0.01637999, 10.5639401], [1516743420000, 0.01637999, 0.01637999, 0.01630001, 0.01630001, 1.02764258], [1516743480000, 0.01637999, 0.01638878, 0.01630001, 0.01638824, 15.97661641], [1516743540000, 0.01638824, 0.01639, 0.01631002, 0.01639, 45.64970887], [1516743600000, 0.01638845, 0.01639, 0.01631004, 0.01638845, 4.94871112], [1516743660000, 0.01638845, 0.01639, 0.01638845, 0.01638845, 6.08473795], [1516743720000, 0.01639, 0.0164, 0.01638845, 0.01639, 31.82091146], [1516743780000, 0.01639, 0.0164, 0.01638845, 0.01638845, 48.65616287], [1516743840000, 0.01638845, 0.01638845, 0.01634912, 0.01634912, 28.23867861], [1516743900000, 0.01632003, 0.01638845, 0.01632003, 0.01638845, 49.40524371], [1516743960000, 0.01632001, 0.0164, 0.01632001, 0.01639, 26.48274594], [1516744020000, 0.01639, 0.01643006, 0.01639, 0.01643006, 47.44472781], [1516744080000, 0.0164, 0.01643489, 0.0164, 0.01643489, 4.22705877], [1516744140000, 0.01640082, 0.01643489, 0.01633, 0.01633, 20.52975941], [1516744200000, 0.01640001, 0.01643485, 0.01633981, 0.01640002, 18.34449559], [1516744260000, 0.01640002, 0.01643988, 0.01633969, 0.01643485, 12.94898357], [1516744320000, 0.0164, 0.01643989, 0.0163397, 0.0164, 9.27461641], [1516744380000, 0.0164399, 0.0164399, 0.0163397, 0.01643475, 27.11996719], [1516744440000, 0.01643475, 0.01643475, 0.01635001, 0.01635001, 23.81444023], [1516744500000, 0.01643442, 0.01643442, 0.01636, 0.01643442, 8.02076545], [1516744560000, 0.01635002, 0.01643442, 0.01635002, 0.01643, 12.54581299], [1516744620000, 0.01635001, 0.01643, 0.01635001, 0.01643, 3.28895926], [1516744680000, 0.01643, 0.01643475, 0.01635026, 0.01635026, 45.25951841], [1516744740000, 0.01635026, 0.01635026, 0.01635026, 0.01635026, 10.74191664], [1516744800000, 0.01635026, 0.01643957, 0.01635026, 0.01643475, 149.54220799], [1516744860000, 0.01643475, 0.01645, 0.01635026, 0.01635026, 96.29234252], [1516744920000, 0.0164, 0.0164, 0.01635026, 0.01639, 4.78855988], [1516744980000, 0.0164, 0.016434, 0.01639, 0.01639, 35.83792128], [1516745040000, 0.01639, 0.01639967, 0.01639, 0.01639, 0.80837984], [1516745100000, 0.01639934, 0.01639934, 0.01639, 0.01639, 16.72867305], [1516745160000, 0.01639, 0.01639967, 0.01638, 0.01638, 16.16312765], [1516745220000, 0.01638, 0.01638966, 0.01635027, 0.01638933, 29.64249777], [1516745280000, 0.01635027, 0.01638949, 0.01635027, 0.01635027, 4.60983359], [1516745340000, 0.01635027, 0.01639, 0.01635, 0.01635, 23.42487885], [1516745400000, 0.01635027, 0.01635027, 0.01634, 0.01634, 4.7455551], [1516745460000, 0.01634, 0.01634, 0.01633969, 0.01634, 11.01094862], [1516745520000, 0.01634, 0.01634, 0.0163105, 0.0163105, 96.73733645], [1516745580000, 0.01632001, 0.01634, 0.01632001, 0.01632001, 17.16059033], [1516745640000, 0.01635, 0.0163899, 0.01632001, 0.01632001, 2.50912085], [1516745700000, 0.01635, 0.01635, 0.01631003, 0.01631003, 24.57094685], [1516745760000, 0.01632, 0.01632, 0.01631003, 0.01631003, 22.59740692], [1516745820000, 0.01631003, 0.01635, 0.01631003, 0.01631003, 10.56851896], [1516745880000, 0.01635, 0.0164, 0.01631003, 0.01631003, 2.67293727], [1516745940000, 0.01635, 0.01639967, 0.01635, 0.01635, 23.88922863], [1516746000000, 0.01639934, 0.01639934, 0.01631003, 0.01635, 18.81387848], [1516746060000, 0.01631003, 0.01635, 0.01631003, 0.01635, 10.38919351], [1516746120000, 0.01631003, 0.01634999, 0.01631003, 0.01634999, 2.14305538], [1516746180000, 0.01634999, 0.01635, 0.01631003, 0.01635, 7.00601579], [1516746240000, 0.01635, 0.01635, 0.01631003, 0.01631003, 15.29177761], [1516746300000, 0.01631003, 0.01635, 0.01631003, 0.01635, 17.25079516], [1516746360000, 0.01635, 0.01635, 0.01631003, 0.01631003, 7.81495374], [1516746420000, 0.01634999, 0.01635, 0.01634999, 0.01635, 36.37929423], [1516746480000, 0.01631003, 0.01641607, 0.01631003, 0.01637, 43.77576895], [1516746540000, 0.01641607, 0.01643006, 0.01632001, 0.01643006, 4.3132481], [1516746600000, 0.01643006, 0.01643006, 0.01631501, 0.01643006, 15.57846396], [1516746660000, 0.01643006, 0.0164555, 0.01633, 0.0163397, 12.58550853], [1516746720000, 0.0163452, 0.01645546, 0.0163452, 0.01634554, 3.82976928], [1516746780000, 0.01645534, 0.0164655, 0.01633969, 0.016346, 56.87473954], [1516746840000, 0.0164555, 0.01648989, 0.01635, 0.01635, 50.38899142], [1516746900000, 0.01639906, 0.0164554, 0.01635003, 0.01635003, 8.3843655], [1516746960000, 0.01635003, 0.0164554, 0.01635, 0.01635, 12.15329443], [1516747020000, 0.01635, 0.01643999, 0.01635, 0.01643999, 12.43714113], [1516747080000, 0.01644, 0.0164554, 0.01635, 0.01635, 6.70540668], [1516747140000, 0.01635, 0.01644, 0.01630503, 0.01644, 41.88587427], [1516747200000, 0.01644, 0.01647165, 0.01632004, 0.01647165, 10.89163681], [1516747260000, 0.01647153, 0.01647153, 0.01633502, 0.01643006, 2.97048598], [1516747320000, 0.01642, 0.01643, 0.01635501, 0.01642967, 2.83715733], [1516747380000, 0.01642967, 0.01642967, 0.01635501, 0.01642834, 3.2473678], [1516747440000, 0.016423, 0.01642834, 0.016356, 0.01642801, 11.98113876], [1516747500000, 0.01642801, 0.016469, 0.016356, 0.016356, 28.24380693], [1516747560000, 0.01646096, 0.01646096, 0.016356, 0.016356, 1.7078676], [1516747620000, 0.016356, 0.01644998, 0.016356, 0.01644998, 0.85918723], [1516747680000, 0.01644496, 0.01644496, 0.01635601, 0.01644493, 5.14535454], [1516747740000, 0.0164449, 0.0164449, 0.01635601, 0.01644483, 2.90360343], [1516747800000, 0.01635601, 0.01644489, 0.01635601, 0.01635601, 14.85530853], [1516747860000, 0.01644482, 0.01644482, 0.01635601, 0.016435, 6.31105514], [1516747920000, 0.01635601, 0.016435, 0.01635601, 0.01635601, 2.15560899], [1516747980000, 0.0164399, 0.0164399, 0.01635601, 0.01635601, 9.65266062], [1516748040000, 0.01635601, 0.01643989, 0.01635601, 0.01636, 1.03376257], [1516748100000, 0.01643989, 0.01643991, 0.01643989, 0.01643991, 8.17587759], [1516748160000, 0.01643991, 0.01643991, 0.0163601, 0.0163601, 1.79553462], [1516748220000, 0.0163601, 0.01643991, 0.0163601, 0.0163601, 5.0995936], [1516748280000, 0.0164399, 0.01643991, 0.01637001, 0.01637001, 32.07244889], [1516748340000, 0.01643499, 0.0164399, 0.0163701, 0.0164399, 3.43156974], [1516748400000, 0.01643986, 0.0164399, 0.01637001, 0.01643, 9.02099646], [1516748460000, 0.01637254, 0.01643498, 0.01637, 0.01643, 28.94659699], [1516748520000, 0.01642, 0.01642, 0.01637, 0.01637, 12.90819817], [1516748580000, 0.0164, 0.0164, 0.016356, 0.016356, 26.14561671], [1516748640000, 0.016356, 0.016356, 0.016306, 0.016356, 12.57686265], [1516748700000, 0.016356, 0.016356, 0.0163, 0.0163, 48.35970789], [1516748760000, 0.016356, 0.016356, 0.0163, 0.016356, 18.02580647], [1516748820000, 0.016356, 0.01642994, 0.016356, 0.0163997, 34.93071458], [1516748880000, 0.0163997, 0.016425, 0.016356, 0.01642497, 86.01558132], [1516748940000, 0.01641999, 0.01641999, 0.016356, 0.0164149, 3.51292511], [1516749000000, 0.0164149, 0.0164149, 0.016356, 0.016356, 2.46996892], [1516749060000, 0.016356, 0.01641, 0.016301, 0.016301, 8.61518762], [1516749120000, 0.016301, 0.01640479, 0.01630001, 0.01630001, 18.38557523], [1516749180000, 0.016301, 0.0164044, 0.0163, 0.0164044, 25.98504503], [1516749240000, 0.01630009, 0.0164042, 0.01630009, 0.01630009, 4.48632366], [1516749300000, 0.01630009, 0.0164039, 0.01630009, 0.01640377, 3.2546835], [1516749360000, 0.01640377, 0.0164039, 0.01630001, 0.0164039, 81.67986097], [1516749420000, 0.0164039, 0.0164039, 0.01639275, 0.0164, 17.08853436], [1516749480000, 0.016403, 0.0164039, 0.01639275, 0.01639999, 18.80424906], [1516749540000, 0.01639275, 0.01639999, 0.016301, 0.01639275, 59.54326898], [1516749600000, 0.01639275, 0.016404, 0.016301, 0.016404, 38.46872976], [1516749660000, 0.016404, 0.01643399, 0.016318, 0.016318, 65.81313264], [1516749720000, 0.01642898, 0.01642898, 0.016329, 0.01642498, 30.82888918], [1516749780000, 0.016329, 0.01642399, 0.016329, 0.01633022, 4.58341426], [1516749840000, 0.01639999, 0.01643, 0.01639999, 0.01643, 17.59062211], [1516749900000, 0.01642999, 0.01643006, 0.01639396, 0.01643, 52.83478213], [1516749960000, 0.01643, 0.01643, 0.01634785, 0.01642779, 27.31941253], [1516750020000, 0.01642779, 0.01642779, 0.01632903, 0.01642775, 24.09442204], [1516750080000, 0.01642775, 0.01643899, 0.01633722, 0.0163376, 68.75221549], [1516750140000, 0.01643399, 0.016434, 0.01633969, 0.01633969, 17.15238363], [1516750200000, 0.01633969, 0.0164338, 0.01633969, 0.0164338, 11.71715712], [1516750260000, 0.0164337, 0.01643897, 0.01633719, 0.01638, 57.73429668], [1516750320000, 0.01638, 0.01638, 0.01633969, 0.01638, 5.45610321], [1516750380000, 0.01638, 0.01638, 0.0163397, 0.01638, 3.91915123], [1516750440000, 0.01638, 0.01638, 0.01633969, 0.01638, 0.4702601], [1516750500000, 0.01638, 0.01638, 0.01638, 0.01638, 1.70344726], [1516750560000, 0.01638, 0.01638, 0.01633, 0.01633, 30.33272946], [1516750620000, 0.01634, 0.01634, 0.01633, 0.01634, 1.87853068], [1516750680000, 0.01634, 0.01634, 0.01633, 0.01633, 13.7878852], [1516750740000, 0.01633, 0.01633, 0.01633, 0.01633, 0.23930425], [1516750800000, 0.01632903, 0.01633, 0.01632903, 0.01632915, 15.53387542], [1516750860000, 0.01632915, 0.01632945, 0.01632903, 0.01632903, 9.68801449], [1516750920000, 0.01632945, 0.01634, 0.016301, 0.01633999, 16.84402158], [1516750980000, 0.01633999, 0.01634, 0.01633999, 0.01634, 7.0638429], [1516751040000, 0.0163398, 0.01634, 0.0163101, 0.01634, 10.32844664], [1516751100000, 0.01634, 0.01634, 0.016301, 0.01634, 27.25021976], [1516751160000, 0.01632524, 0.01634, 0.01630601, 0.016338, 64.41642999], [1516751220000, 0.016338, 0.01633999, 0.01631101, 0.016338, 17.38556545], [1516751280000, 0.016338, 0.01634, 0.016338, 0.01634, 12.81412057], [1516751340000, 0.01637, 0.01637, 0.016338, 0.01634, 8.86810106], [1516751400000, 0.01634, 0.01638, 0.01633805, 0.01638, 25.39456978], [1516751460000, 0.01638, 0.01638, 0.01633805, 0.01634301, 5.05205936], [1516751520000, 0.01638, 0.01638, 0.01634301, 0.01638, 7.18952444], [1516751580000, 0.01634301, 0.01638, 0.01634301, 0.01638, 4.71491344], [1516751640000, 0.01638, 0.01638, 0.01634302, 0.01638, 59.70935307], [1516751700000, 0.01638, 0.01642899, 0.01634307, 0.01638, 64.55503772], [1516751760000, 0.01638, 0.01642926, 0.01638, 0.0163805, 6.10031041], [1516751820000, 0.0163805, 0.01644998, 0.016348, 0.016348, 44.51665593], [1516751880000, 0.016348, 0.01638, 0.016348, 0.01635303, 7.4348993], [1516751940000, 0.01638, 0.0163805, 0.01638, 0.0163805, 5.48739124], [1516752000000, 0.0163805, 0.0163805, 0.01634306, 0.01638049, 62.57164475], [1516752060000, 0.01638049, 0.0164715, 0.01634307, 0.01638049, 59.39575986], [1516752120000, 0.01638047, 0.01642805, 0.01638047, 0.01642805, 9.79565405], [1516752180000, 0.01639688, 0.01639688, 0.0163432, 0.01639688, 8.03718021], [1516752240000, 0.01639688, 0.01639688, 0.016353, 0.01639688, 25.25610693], [1516752300000, 0.01639688, 0.01642805, 0.01637301, 0.01642805, 4.46971296], [1516752360000, 0.01642805, 0.01642805, 0.01637003, 0.01642803, 5.44837124], [1516752420000, 0.016428, 0.01642801, 0.01637803, 0.01638049, 2.73812043], [1516752480000, 0.01642799, 0.0164715, 0.01638057, 0.01638057, 93.99953452], [1516752540000, 0.01638058, 0.0164714, 0.01638049, 0.0163806, 173.986179], [1516752600000, 0.0164714, 0.016484, 0.0163806, 0.0164714, 61.88436247], [1516752660000, 0.0164714, 0.01648398, 0.0164714, 0.0164714, 12.01186491], [1516752720000, 0.0164714, 0.01648398, 0.0164714, 0.0164714, 40.02184891], [1516752780000, 0.0164714, 0.016479, 0.01638049, 0.01638049, 8.71876029], [1516752840000, 0.0164714, 0.0164749, 0.01639101, 0.01639101, 2.89128448], [1516752900000, 0.01647138, 0.0164714, 0.01647138, 0.01647138, 4.49421333], [1516752960000, 0.0164714, 0.016484, 0.01647138, 0.016484, 26.10451019], [1516753020000, 0.016484, 0.016484, 0.01638049, 0.01639087, 37.41804676], [1516753080000, 0.01639087, 0.01639087, 0.01638522, 0.01639087, 16.22502679], [1516753140000, 0.01639087, 0.01648395, 0.01639087, 0.01648395, 10.41471519], [1516753200000, 0.01646583, 0.01648398, 0.01639087, 0.01648398, 2.79585892], [1516753260000, 0.01639087, 0.01639087, 0.01639087, 0.01639087, 5.757], [1516753320000, 0.01639087, 0.01648386, 0.01639087, 0.01639087, 3.69856303], [1516753380000, 0.01639087, 0.01647384, 0.01639087, 0.01639588, 3.71011543], [1516753440000, 0.01647351, 0.0164839, 0.01639588, 0.01639588, 40.67628303], [1516753500000, 0.01639588, 0.0164839, 0.01639588, 0.01639588, 6.36664729], [1516753560000, 0.0164839, 0.0164839, 0.01639087, 0.01639087, 25.35819199], [1516753620000, 0.01639087, 0.0164838, 0.01639087, 0.0164838, 18.37319219], [1516753680000, 0.01639588, 0.0164, 0.01639588, 0.01639589, 0.70342364], [1516753740000, 0.01639588, 0.01639588, 0.01639087, 0.01639588, 5.38021317], [1516753800000, 0.01639588, 0.01639588, 0.01638049, 0.01639588, 25.7578109], [1516753860000, 0.01639588, 0.01648313, 0.01639588, 0.01648313, 15.73201729], [1516753920000, 0.01639588, 0.0164831, 0.01638049, 0.0164831, 2.58914931], [1516753980000, 0.01638049, 0.0164831, 0.01638049, 0.01638049, 17.07091256], [1516754040000, 0.01638049, 0.01648308, 0.01638049, 0.01648308, 1.69293716], [1516754100000, 0.01648308, 0.01648308, 0.0164, 0.0164, 2.22352814], [1516754160000, 0.0164, 0.016479, 0.01638501, 0.01643629, 13.87468941], [1516754220000, 0.0164, 0.01647899, 0.01638049, 0.01638049, 22.85807899], [1516754280000, 0.0163805, 0.01647864, 0.0163805, 0.0163805, 49.18437766], [1516754340000, 0.01646284, 0.01646332, 0.01646284, 0.01646332, 0.94973855], [1516754400000, 0.01646297, 0.01646297, 0.01637, 0.01646295, 256.74023665], [1516754460000, 0.01637501, 0.01638001, 0.01637003, 0.01638001, 7.73], [1516754520000, 0.01638001, 0.01642643, 0.01637002, 0.01642643, 8.47791739], [1516754580000, 0.01642643, 0.01642643, 0.016375, 0.01642643, 2.9243026], [1516754640000, 0.0164256, 0.01645, 0.01637001, 0.01637001, 164.81659083], [1516754700000, 0.01645, 0.01646167, 0.01637001, 0.01637001, 36.45806154], [1516754760000, 0.01637, 0.01646067, 0.01637, 0.01644828, 8.39739016], [1516754820000, 0.01644828, 0.01644828, 0.01637004, 0.01637101, 8.86074187], [1516754880000, 0.01644, 0.01644, 0.01637101, 0.01637111, 42.14307859], [1516754940000, 0.01642, 0.01643999, 0.01637112, 0.01643999, 10.22395092], [1516755000000, 0.01643999, 0.01643999, 0.016376, 0.01643998, 9.34793388], [1516755060000, 0.01643, 0.01643999, 0.01643, 0.01643999, 6.13899991], [1516755120000, 0.01643999, 0.01643999, 0.01643, 0.01643998, 17.43242634], [1516755180000, 0.01643998, 0.01644, 0.01643333, 0.01643333, 54.36478539], [1516755240000, 0.01644, 0.01644, 0.01643333, 0.01644, 18.72098842], [1516755300000, 0.01643333, 0.01643333, 0.01643333, 0.01643333, 8.53611555], [1516755360000, 0.01643333, 0.01643333, 0.0164, 0.01643, 8.52277642], [1516755420000, 0.01643, 0.01643, 0.01643, 0.01643, 5.23818956], [1516755480000, 0.01643, 0.01643, 0.0164, 0.01643, 8.41798734], [1516755540000, 0.01643, 0.01643, 0.01640001, 0.01640001, 87.54875255], [1516755600000, 0.01643, 0.01643, 0.0164, 0.01640083, 24.19003863], [1516755660000, 0.01643, 0.01643, 0.01636228, 0.01637001, 58.80175123], [1516755720000, 0.01637002, 0.01643, 0.01637002, 0.01643, 13.41245269], [1516755780000, 0.016427, 0.01656, 0.01637501, 0.01640002, 603.04210572], [1516755840000, 0.01640006, 0.0165, 0.01640002, 0.01640003, 22.39629258], [1516755900000, 0.01640004, 0.01649978, 0.01640003, 0.01640003, 1.06325143], [1516755960000, 0.01640003, 0.01640003, 0.01640003, 0.01640003, 10.33211], [1516756020000, 0.01649897, 0.01649978, 0.01640004, 0.01649976, 304.09813793], [1516756080000, 0.01640004, 0.01649592, 0.01640004, 0.01640007, 62.18843341], [1516756140000, 0.01649488, 0.01649488, 0.01640007, 0.01649477, 10.01499176], [1516756200000, 0.01641229, 0.01649595, 0.01640006, 0.01640006, 65.10418129], [1516756260000, 0.01641029, 0.01649386, 0.01641029, 0.01649386, 1.17393054], [1516756320000, 0.01649309, 0.01649309, 0.01641029, 0.01641029, 8.46914505], [1516756380000, 0.0164924, 0.01649252, 0.016425, 0.016425, 25.45862952], [1516756440000, 0.0164897, 0.0164897, 0.016425, 0.016425, 5.668827], [1516756500000, 0.0164896, 0.0164896, 0.016425, 0.01642501, 9.59882789], [1516756560000, 0.0164339, 0.01647889, 0.0164339, 0.0164339, 15.38968542], [1516756620000, 0.0164339, 0.01647379, 0.01642501, 0.01647379, 12.71733642], [1516756680000, 0.0164339, 0.0164709, 0.0164339, 0.0164339, 3.39798407], [1516756740000, 0.0164705, 0.0164705, 0.01640004, 0.01645726, 13.3488072], [1516756800000, 0.01640004, 0.01645723, 0.01640004, 0.01645723, 41.26204921], [1516756860000, 0.01640004, 0.0164572, 0.01640004, 0.01640004, 13.08654694], [1516756920000, 0.01640004, 0.01645647, 0.01640004, 0.01640004, 0.36564431], [1516756980000, 0.01640004, 0.01645546, 0.01640004, 0.01640004, 41.95847137], [1516757040000, 0.01640004, 0.01640004, 0.016365, 0.016365, 36.7798003], [1516757100000, 0.016365, 0.016365, 0.01636228, 0.016365, 7.74760317], [1516757160000, 0.01636229, 0.016365, 0.01636229, 0.01636229, 6.60640102], [1516757220000, 0.01636229, 0.01636229, 0.01636228, 0.01636229, 24.71369212], [1516757280000, 0.01636228, 0.01636229, 0.01636228, 0.01636229, 15.60639835], [1516757340000, 0.01636229, 0.016365, 0.01635, 0.01636, 40.39304984], [1516757400000, 0.01636, 0.016365, 0.016353, 0.016353, 10.59581103], [1516757460000, 0.016365, 0.016365, 0.016365, 0.016365, 3.60173814], [1516757520000, 0.01640237, 0.01646995, 0.01635, 0.01646995, 10.6019656], [1516757580000, 0.01635, 0.01646938, 0.01635, 0.01635, 1.9304744], [1516757640000, 0.01635001, 0.01635001, 0.01634906, 0.01635001, 5.92355835], [1516757700000, 0.01635, 0.01635001, 0.01635, 0.01635001, 6.92404911], [1516757760000, 0.01635, 0.01646399, 0.01635, 0.01635001, 6.93258505], [1516757820000, 0.016354, 0.01645498, 0.016354, 0.01645487, 13.38946335], [1516757880000, 0.01641, 0.01641, 0.016354, 0.01641, 5.41378658], [1516757940000, 0.01641, 0.01643998, 0.0164, 0.0164, 12.44414847], [1516758000000, 0.0164, 0.01642997, 0.016354, 0.0164, 16.52300784], [1516758060000, 0.0164002, 0.0164002, 0.01635, 0.01635, 3.764313], [1516758120000, 0.016354, 0.0164, 0.01634906, 0.0164, 40.74226209], [1516758180000, 0.01634748, 0.0164002, 0.01634, 0.0164002, 190.03484789], [1516758240000, 0.01634, 0.0164001, 0.01634, 0.01634, 43.15105123], [1516758300000, 0.01634, 0.0164002, 0.01634, 0.01634, 30.45040781], [1516758360000, 0.01634, 0.01634, 0.01633969, 0.01633969, 7.25612878], [1516758420000, 0.01634, 0.01634, 0.016338, 0.01634, 14.08727942], [1516758480000, 0.0164002, 0.0164002, 0.016358, 0.016358, 9.49891716], [1516758540000, 0.0164002, 0.0164002, 0.016358, 0.016358, 2.35461767], [1516758600000, 0.016358, 0.01640018, 0.016358, 0.016358, 33.82177341], [1516758660000, 0.016358, 0.0164, 0.016358, 0.0164, 13.48393138], [1516758720000, 0.01635801, 0.01640019, 0.01635801, 0.01638535, 10.98883663], [1516758780000, 0.01638535, 0.01643499, 0.01635801, 0.01638535, 29.92457027], [1516758840000, 0.01635801, 0.01645487, 0.01635801, 0.01643496, 16.50414364], [1516758900000, 0.01643495, 0.01643495, 0.01635801, 0.01635801, 19.53714488], [1516758960000, 0.01635801, 0.01644499, 0.01635801, 0.01635848, 5.86825174], [1516759020000, 0.01643497, 0.01643497, 0.01635848, 0.01635848, 17.34338104], [1516759080000, 0.01635848, 0.01642497, 0.01635848, 0.01635848, 15.00373554], [1516759140000, 0.01635848, 0.016409, 0.01635848, 0.016409, 2.30048472], [1516759200000, 0.01635848, 0.01639999, 0.01635848, 0.01639999, 6.87008373], [1516759260000, 0.01635848, 0.01635848, 0.01635801, 0.01635801, 37.85948612], [1516759320000, 0.016358, 0.01639999, 0.016355, 0.01639999, 6.13456926], [1516759380000, 0.01639999, 0.0164, 0.016358, 0.016358, 3.29341459], [1516759440000, 0.016358, 0.016358, 0.016355, 0.016355, 9.64047201], [1516759500000, 0.016355, 0.016399, 0.016355, 0.016399, 1.19992338], [1516759560000, 0.016399, 0.016399, 0.016355, 0.016355, 1.85905269], [1516759620000, 0.016355, 0.016398, 0.016355, 0.016355, 0.87965873], [1516759680000, 0.01638798, 0.01638798, 0.016355, 0.016355, 1.84002398], [1516759740000, 0.016356, 0.01638798, 0.016355, 0.016355, 6.44032625], [1516759800000, 0.01637998, 0.01638798, 0.016355, 0.016356, 46.52219789], [1516759860000, 0.01636398, 0.01636398, 0.01636398, 0.01636398, 5.530101], [1516759920000, 0.01636398, 0.01636398, 0.016355, 0.016355, 18.12727726], [1516759980000, 0.016355, 0.016355, 0.016355, 0.016355, 1.40677837], [1516760040000, 0.0163785, 0.0163785, 0.01635, 0.016355, 6.48380781], [1516760100000, 0.01636, 0.01636, 0.01636, 0.01636, 0.97738998], [1516760160000, 0.01636, 0.01636, 0.01633, 0.01633, 16.95512973], [1516760220000, 0.0163775, 0.0163785, 0.016301, 0.016301, 10.4743302], [1516760280000, 0.016301, 0.01637849, 0.016301, 0.01637849, 12.25369317], [1516760340000, 0.01637849, 0.01637849, 0.0163, 0.0163, 253.51858267], [1516760400000, 0.01637849, 0.0163785, 0.01637849, 0.01637849, 0.84665824], [1516760460000, 0.01637849, 0.01637849, 0.0163, 0.0163, 15.9546854], [1516760520000, 0.016334, 0.0163785, 0.016334, 0.01636, 2.56905312], [1516760580000, 0.01637777, 0.0163785, 0.01636003, 0.01636003, 1.16867791], [1516760640000, 0.01636003, 0.01636003, 0.01636, 0.01636, 13.56380511], [1516760700000, 0.01636, 0.01636, 0.01636, 0.01636, 2.66902736], [1516760760000, 0.01636, 0.01638798, 0.01636, 0.01636, 62.58727863], [1516760820000, 0.01636, 0.01638798, 0.01636, 0.01636, 6.67958748], [1516760880000, 0.01638798, 0.01638798, 0.01636, 0.01636, 17.58441263], [1516760940000, 0.016387, 0.016387, 0.01636, 0.016387, 6.95192698], [1516761000000, 0.016387, 0.01638798, 0.01636, 0.01638798, 10.46530418], [1516761060000, 0.01638698, 0.01638798, 0.01636, 0.01638798, 3.43307886], [1516761120000, 0.0163879, 0.0163879, 0.01636, 0.01636, 1.99115903], [1516761180000, 0.01636, 0.0163879, 0.01636, 0.01636, 4.77861171], [1516761240000, 0.01636, 0.0163879, 0.01636, 0.0163879, 5.60868612], [1516761300000, 0.01636, 0.0163879, 0.01636, 0.0163879, 4.54718913], [1516761360000, 0.01636, 0.01636, 0.01636, 0.01636, 26.31090934], [1516761420000, 0.0163879, 0.01638797, 0.01636, 0.01638797, 5.95059741], [1516761480000, 0.01636, 0.0163879, 0.01636, 0.0163879, 10.48906985], [1516761540000, 0.0163879, 0.01638798, 0.0163879, 0.01638797, 23.22031096], [1516761600000, 0.01638797, 0.01638798, 0.01636898, 0.01636898, 26.61213986], [1516761660000, 0.01638788, 0.01638798, 0.01636898, 0.01638798, 15.91702886], [1516761720000, 0.01636898, 0.01638798, 0.01636, 0.01636, 43.13093022], [1516761780000, 0.01638798, 0.01638798, 0.01636, 0.01636, 27.49555031], [1516761840000, 0.016387, 0.016387, 0.01636, 0.01636, 14.24786211], [1516761900000, 0.016383, 0.016383, 0.01636, 0.01636, 3.20897894], [1516761960000, 0.016334, 0.01638, 0.0163, 0.0163797, 108.11033974], [1516762020000, 0.0163797, 0.01638798, 0.01637765, 0.01637874, 57.75829242], [1516762080000, 0.01637874, 0.01637874, 0.01630729, 0.0163073, 2.88193175], [1516762140000, 0.01637874, 0.01637874, 0.0163, 0.01637874, 0.82359692], [1516762200000, 0.016378, 0.01639999, 0.016378, 0.01637874, 16.43136244], [1516762260000, 0.01637874, 0.01639999, 0.01630545, 0.01639999, 8.8193451], [1516762320000, 0.01638, 0.0164, 0.01638, 0.01638, 4.45352778], [1516762380000, 0.0164, 0.016412, 0.01638, 0.01638, 15.23173808], [1516762440000, 0.0164, 0.01641189, 0.01638, 0.01638, 12.63812636], [1516762500000, 0.0164098, 0.0164098, 0.01638, 0.0164098, 8.90346784], [1516762560000, 0.01638, 0.0164098, 0.01630545, 0.0164098, 3.35730566], [1516762620000, 0.0164098, 0.0164098, 0.0164097, 0.0164097, 2.46938249], [1516762680000, 0.01630555, 0.01630555, 0.01630555, 0.01630555, 0.98644705], [1516762740000, 0.01630545, 0.0164, 0.0163, 0.01630001, 7.80032605], [1516762800000, 0.01630001, 0.0164, 0.01630001, 0.01630003, 19.28906223], [1516762860000, 0.01639467, 0.01639467, 0.01639467, 0.01639467, 0.48685396], [1516762920000, 0.0163993, 0.01639931, 0.01630005, 0.01630005, 10.18713929], [1516762980000, 0.016342, 0.01639897, 0.01630005, 0.016342, 4.31864151], [1516763040000, 0.016342, 0.01639897, 0.01630005, 0.01630005, 16.2965284], [1516763100000, 0.01639864, 0.01639864, 0.01639864, 0.01639864, 1.02525625], [1516763160000, 0.01630008, 0.01639831, 0.01630008, 0.01630012, 7.3254536], [1516763220000, 0.01630012, 0.01639831, 0.01630012, 0.01639831, 17.33849494], [1516763280000, 0.016389, 0.016394, 0.0163, 0.01635, 12.42638551], [1516763340000, 0.01635, 0.01635, 0.01630005, 0.01634998, 2.07874941], [1516763400000, 0.01634998, 0.01634998, 0.01630012, 0.01630012, 1.81453425], [1516763460000, 0.01630012, 0.01633992, 0.01630012, 0.01633992, 6.68565081], [1516763520000, 0.01630006, 0.01635, 0.01630006, 0.01635, 6.975389], [1516763580000, 0.01633992, 0.01635, 0.01633992, 0.01635, 2.0305383], [1516763640000, 0.01630015, 0.01635, 0.01630015, 0.01635, 0.56544457], [1516763700000, 0.01635, 0.01635, 0.01623001, 0.01635, 235.07369475], [1516763760000, 0.01635, 0.01635, 0.016266, 0.01627468, 1.48439855], [1516763820000, 0.01627468, 0.01633969, 0.01627468, 0.016277, 45.29974719], [1516763880000, 0.016277, 0.01633969, 0.016277, 0.016287, 5.51671859], [1516763940000, 0.016287, 0.01633969, 0.01628203, 0.01633967, 12.24098022], [1516764000000, 0.01633966, 0.01633967, 0.01629, 0.01629, 2.46629356], [1516764060000, 0.01629, 0.01633967, 0.01629, 0.01629, 3.40812055], [1516764120000, 0.01633967, 0.01633967, 0.01629, 0.01629, 174.01463616], [1516764180000, 0.016277, 0.01633967, 0.01627468, 0.01628001, 22.00622239], [1516764240000, 0.01627471, 0.01633967, 0.01627471, 0.01633967, 18.41557966], [1516764300000, 0.01633967, 0.01633967, 0.0163, 0.0163, 14.15268288], [1516764360000, 0.01633967, 0.01633967, 0.0163, 0.01633967, 5.51023552], [1516764420000, 0.01633967, 0.01633967, 0.01630001, 0.01630001, 1.50030883], [1516764480000, 0.01630001, 0.01633967, 0.01630001, 0.01633967, 56.85486851], [1516764540000, 0.01633967, 0.01635, 0.01633967, 0.0163499, 5.10723027], [1516764600000, 0.01634989, 0.01634989, 0.01633968, 0.01633968, 6.73589885], [1516764660000, 0.01634988, 0.016379, 0.01634988, 0.016379, 24.15175231], [1516764720000, 0.016379, 0.016379, 0.01633968, 0.01633968, 4.90256468], [1516764780000, 0.01633968, 0.01634, 0.01633968, 0.01633968, 2.53335356], [1516764840000, 0.01633969, 0.01634, 0.01633969, 0.01634, 26.74359738], [1516764900000, 0.01634, 0.01637899, 0.01633971, 0.01637899, 8.25650555], [1516764960000, 0.0163397, 0.01637899, 0.0163397, 0.01637899, 4.06948395], [1516765020000, 0.01637899, 0.01637899, 0.01633972, 0.01637899, 30.59977275], [1516765080000, 0.01637899, 0.01638286, 0.01637899, 0.01638286, 34.15906297], [1516765140000, 0.01638286, 0.0164, 0.01636, 0.01638999, 17.93649216], [1516765200000, 0.01636, 0.01638999, 0.01636, 0.01638999, 13.13880593], [1516765260000, 0.01638999, 0.01639009, 0.01638999, 0.01638999, 3.29099919], [1516765320000, 0.01638999, 0.0164, 0.01635006, 0.01635006, 4.64463209], [1516765380000, 0.0164, 0.01641109, 0.01635005, 0.01635006, 38.54289391], [1516765440000, 0.01635006, 0.01635006, 0.01635006, 0.01635006, 25.30646514], [1516765500000, 0.01641109, 0.01641109, 0.01635006, 0.01635007, 17.46104927], [1516765560000, 0.01635007, 0.01641076, 0.01635007, 0.01641076, 11.36308545], [1516765620000, 0.0163501, 0.0163501, 0.01635009, 0.01635009, 5.28237366], [1516765680000, 0.01635009, 0.01641, 0.01635009, 0.01641, 7.98252641], [1516765740000, 0.01635009, 0.01641, 0.01635009, 0.016355, 2.66081843], [1516765800000, 0.016355, 0.01641076, 0.016351, 0.01641076, 2.72751394], [1516765860000, 0.01641076, 0.01641076, 0.016355, 0.01640996, 3.2337673], [1516765920000, 0.016351, 0.01640996, 0.016351, 0.01640996, 5.89559853], [1516765980000, 0.01640996, 0.01640996, 0.01640996, 0.01640996, 0.2967924], [1516766040000, 0.016351, 0.01640956, 0.016351, 0.016351, 2.69065523], [1516766100000, 0.016351, 0.01640956, 0.016351, 0.01640956, 27.05533828], [1516766160000, 0.016351, 0.01640996, 0.016351, 0.01640996, 18.60680576], [1516766220000, 0.01640996, 0.0164107, 0.01635009, 0.0164107, 49.03917127], [1516766280000, 0.0164107, 0.0164107, 0.01635009, 0.01635009, 13.26033005], [1516766340000, 0.01641037, 0.0164107, 0.01635006, 0.01635006, 39.50272757], [1516766400000, 0.01635006, 0.0164107, 0.01635006, 0.0164107, 27.67600442], [1516766460000, 0.0164107, 0.01641189, 0.01635006, 0.01641189, 16.54691262], [1516766520000, 0.016352, 0.01641189, 0.016352, 0.01641189, 5.6588334], [1516766580000, 0.01641189, 0.01641189, 0.016352, 0.016352, 4.14374529], [1516766640000, 0.016352, 0.01641189, 0.016352, 0.016352, 2.32431744], [1516766700000, 0.016411, 0.01641189, 0.016411, 0.01641189, 1.82804214], [1516766760000, 0.01641189, 0.01641189, 0.016411, 0.01641189, 69.97944871], [1516766820000, 0.016411, 0.01641189, 0.016411, 0.01641189, 10.01193353], [1516766880000, 0.016411, 0.01641189, 0.016411, 0.01641189, 11.70431233], [1516766940000, 0.01641157, 0.01641189, 0.01641157, 0.01641189, 25.83852066], [1516767000000, 0.01641157, 0.01641189, 0.016411, 0.016411, 6.24909035], [1516767060000, 0.01641103, 0.01641189, 0.01641103, 0.01641103, 5.98833033], [1516767120000, 0.01641103, 0.01641189, 0.01641103, 0.01641189, 10.57863129], [1516767180000, 0.01641189, 0.01641189, 0.01641103, 0.01641103, 22.67797296], [1516767240000, 0.01641103, 0.01641668, 0.016411, 0.01641189, 22.29559921], [1516767300000, 0.01641668, 0.016419, 0.01641668, 0.01641668, 1.80329916], [1516767360000, 0.01641665, 0.016419, 0.01641665, 0.016419, 12.24700849], [1516767420000, 0.016419, 0.01642, 0.016411, 0.01642, 40.12598867], [1516767480000, 0.016419, 0.016419, 0.016411, 0.016411, 26.24584505], [1516767600000, 0.016411, 0.01642, 0.016411, 0.016411, 14.00452007], [1516767660000, 0.01642, 0.01643006, 0.016411, 0.01642582, 48.62134056], [1516767720000, 0.01642552, 0.01642552, 0.016411, 0.016411, 20.35568784], [1516767780000, 0.016411, 0.01642552, 0.016411, 0.01642552, 8.13436222], [1516767840000, 0.01642552, 0.01642552, 0.01636001, 0.01636001, 66.88300625], [1516767900000, 0.016411, 0.01642552, 0.01636001, 0.01636001, 4.25617211], [1516767960000, 0.01638799, 0.016411, 0.01635501, 0.016411, 6.51216769], [1516768020000, 0.016411, 0.01642552, 0.016411, 0.016411, 1.97656645], [1516768080000, 0.01641, 0.01641, 0.01635007, 0.01641, 33.75001581], [1516768140000, 0.01641, 0.016411, 0.01635501, 0.01635501, 8.63873482], [1516768200000, 0.01641, 0.01641, 0.016363, 0.016363, 3.64939689], [1516768260000, 0.01640988, 0.016411, 0.0163644, 0.016411, 80.34801691], [1516768320000, 0.0163644, 0.016411, 0.0163644, 0.016411, 9.19500064], [1516768380000, 0.01636442, 0.01641009, 0.01636442, 0.01636442, 1.64797351], [1516768440000, 0.01636442, 0.01641008, 0.01636442, 0.01636442, 43.27083371], [1516768500000, 0.01636442, 0.01641008, 0.01636442, 0.01641008, 1.54519105], [1516768560000, 0.01641, 0.01641, 0.01636442, 0.01636442, 4.76718952], [1516768620000, 0.0164, 0.01641008, 0.0164, 0.01641008, 12.23279561], [1516768680000, 0.01641, 0.01641098, 0.01641, 0.01641098, 20.34665135], [1516768740000, 0.01641098, 0.01645, 0.01641008, 0.01641008, 4.88845929], [1516768800000, 0.01641008, 0.01641008, 0.01641008, 0.01641008, 0.05285817], [1516768860000, 0.01636442, 0.01641008, 0.01636442, 0.01636442, 8.65737368], [1516768920000, 0.01636442, 0.01636442, 0.0163644, 0.0163644, 38.15661298], [1516768980000, 0.0163644, 0.0163644, 0.01635659, 0.0163644, 10.44656468], [1516769040000, 0.0163644, 0.0163644, 0.0163644, 0.0163644, 2.78619348], [1516769100000, 0.0163644, 0.0163644, 0.01635006, 0.0163644, 44.9405461], [1516769160000, 0.0163644, 0.0163644, 0.01635306, 0.0163644, 11.54118538], [1516769220000, 0.0163644, 0.01641008, 0.01635606, 0.01641008, 18.65832292], [1516769280000, 0.01641008, 0.01641008, 0.01641008, 0.01641008, 2.61367935], [1516769340000, 0.01635906, 0.01641008, 0.01635906, 0.01635906, 66.60284995], [1516769400000, 0.01635908, 0.01641008, 0.01635906, 0.01641008, 34.90183953], [1516769460000, 0.01636209, 0.01645, 0.01636209, 0.01645, 22.86122153], [1516769520000, 0.0164525, 0.0164555, 0.01645248, 0.0164555, 2.16957429], [1516769580000, 0.0164555, 0.0164555, 0.0163644, 0.0164506, 9.88056838], [1516769640000, 0.01645458, 0.0164555, 0.0163644, 0.01644554, 2.24498695], [1516769700000, 0.01644554, 0.01645455, 0.0163644, 0.01644429, 31.50286865], [1516769760000, 0.01644429, 0.01645449, 0.0163644, 0.01645149, 26.16168947], [1516769820000, 0.01644402, 0.01644849, 0.01644402, 0.01644849, 6.79899375], [1516769880000, 0.01644402, 0.01644849, 0.01644402, 0.01644402, 4.15920715], [1516769940000, 0.016444, 0.01644402, 0.01644102, 0.01644402, 17.60043169], [1516770000000, 0.016438, 0.016438, 0.01643498, 0.01643498, 1.5960191], [1516770060000, 0.0164349, 0.0164349, 0.01636782, 0.0164319, 0.3965699], [1516770120000, 0.01643, 0.0164319, 0.01642698, 0.0164319, 56.95948849], [1516770180000, 0.0164349, 0.016435, 0.01643, 0.016432, 25.4075097], [1516770240000, 0.01643, 0.016435, 0.01643, 0.016435, 10.73039158], [1516770300000, 0.01643, 0.016435, 0.01643, 0.01643499, 114.42058038], [1516770360000, 0.01643, 0.01643499, 0.01636783, 0.01643, 7.93403773], [1516770420000, 0.01636783, 0.016427, 0.01635309, 0.016427, 13.24249152], [1516770480000, 0.016427, 0.016427, 0.01635006, 0.016427, 33.97223058], [1516770540000, 0.016427, 0.01643892, 0.016355, 0.016358, 28.45343233], [1516770600000, 0.016358, 0.01642688, 0.016355, 0.016358, 17.36642465], [1516770660000, 0.016358, 0.01642087, 0.016355, 0.016355, 3.79487744], [1516770720000, 0.016358, 0.01641487, 0.016355, 0.016358, 5.39039762], [1516770780000, 0.01641471, 0.01641471, 0.016355, 0.01641171, 15.21002786], [1516770840000, 0.01641171, 0.01641171, 0.016358, 0.01641171, 3.34412363], [1516770900000, 0.01641171, 0.016416, 0.016355, 0.016355, 14.2803693], [1516770960000, 0.016416, 0.016416, 0.016355, 0.016355, 22.04031968], [1516771020000, 0.016413, 0.016413, 0.01639, 0.01639, 1.10305517], [1516771080000, 0.016416, 0.016416, 0.0164064, 0.016413, 2.29861237], [1516771140000, 0.0164064, 0.016408, 0.0164064, 0.016408, 3.86276016], [1516771200000, 0.016408, 0.01644197, 0.0164064, 0.0164064, 18.94497978], [1516771260000, 0.01644197, 0.01644197, 0.0164064, 0.0164064, 10.55558702], [1516771320000, 0.0164064, 0.01644811, 0.0164064, 0.0164064, 7.35109691], [1516771380000, 0.0164064, 0.01644195, 0.0164064, 0.01644195, 9.53224382], [1516771440000, 0.01644195, 0.01644195, 0.0163345, 0.01633967, 226.30268611], [1516771500000, 0.01633967, 0.01633967, 0.01633967, 0.01633967, 17.25957433], [1516771560000, 0.01633967, 0.016421, 0.01633967, 0.016421, 2.64616923], [1516771620000, 0.01642098, 0.01642098, 0.01642098, 0.01642098, 1.72609709], [1516771680000, 0.01642097, 0.01642097, 0.01642097, 0.01642097, 0.18493392], [1516771740000, 0.0164, 0.0164, 0.0164, 0.0164, 2.0], [1516771800000, 0.0164, 0.0164, 0.01633967, 0.0164, 1.2916954], [1516771860000, 0.01633967, 0.0164, 0.016315, 0.016315, 7.19135039], [1516771920000, 0.016319, 0.016324, 0.016319, 0.016324, 2.29248103], [1516771980000, 0.016324, 0.0164, 0.016324, 0.0164, 27.93467646], [1516772040000, 0.016329, 0.0164, 0.016329, 0.0164, 1.51201647], [1516772100000, 0.0164, 0.0164, 0.016329, 0.016329, 3.72174073], [1516772160000, 0.01632901, 0.0164, 0.016329, 0.0164, 2.33357131], [1516772220000, 0.016334, 0.0164, 0.016334, 0.016334, 8.09699186], [1516772280000, 0.016334, 0.0164, 0.016334, 0.016334, 13.76451765], [1516772340000, 0.0164, 0.0164, 0.016334, 0.01639999, 4.21695362], [1516772400000, 0.016334, 0.01639999, 0.016334, 0.016334, 4.78043108], [1516772460000, 0.01639999, 0.01639999, 0.016334, 0.01639999, 3.17080393], [1516772520000, 0.01639999, 0.01639999, 0.01639999, 0.01639999, 14.65621473], [1516772580000, 0.01639999, 0.01639999, 0.016334, 0.01633401, 11.06069535], [1516772640000, 0.01639999, 0.01639999, 0.016334, 0.016334, 41.41732397], [1516772700000, 0.016334, 0.016334, 0.016334, 0.016334, 3.23474931], [1516772760000, 0.016334, 0.016334, 0.016334, 0.016334, 1.40633815], [1516772820000, 0.016334, 0.01634, 0.016334, 0.01634, 2.09780113], [1516772880000, 0.016334, 0.01634, 0.016334, 0.01633401, 9.70736436], [1516772940000, 0.016335, 0.016335, 0.01633399, 0.01633399, 46.27180008], [1516773000000, 0.016334, 0.016334, 0.016315, 0.016334, 14.04346684], [1516773060000, 0.016334, 0.01634, 0.01631, 0.01631, 14.88893887], [1516773120000, 0.01633401, 0.01633401, 0.01631, 0.01631, 6.72776455], [1516773180000, 0.01633, 0.01633, 0.01631, 0.01631001, 3.81258351], [1516773240000, 0.01633, 0.01633, 0.01631, 0.01631, 6.31729032], [1516773300000, 0.01633, 0.01634, 0.01633, 0.01633, 38.03987602], [1516773360000, 0.01633, 0.01634, 0.01633, 0.01634, 2.16780916], [1516773420000, 0.01633, 0.016395, 0.01633, 0.01633, 6.19655904], [1516773480000, 0.01633, 0.01639467, 0.0163, 0.01633, 9.85296391], [1516773540000, 0.01630301, 0.01633, 0.01630301, 0.01633, 18.40033654], [1516773600000, 0.01639966, 0.01639966, 0.01630901, 0.01632, 2.56045029], [1516773660000, 0.01632, 0.01632, 0.01632, 0.01632, 1.03842332], [1516773720000, 0.01632, 0.01639999, 0.01632, 0.01635557, 8.25305597], [1516773780000, 0.01632003, 0.01635557, 0.016309, 0.01632003, 5.05174194], [1516773840000, 0.01635557, 0.01639999, 0.016309, 0.01632003, 29.73169275], [1516773900000, 0.01632003, 0.01632003, 0.01631201, 0.01632003, 7.77872392], [1516773960000, 0.01631202, 0.01632003, 0.01631202, 0.01632003, 2.2998915], [1516774020000, 0.01631202, 0.01639699, 0.01631202, 0.01639699, 7.93983828], [1516774080000, 0.0163211, 0.01639999, 0.0163211, 0.01639699, 3.64538311], [1516774140000, 0.0163211, 0.01639999, 0.0163211, 0.01639999, 5.62889601], [1516774200000, 0.01639697, 0.01639697, 0.01639397, 0.01639397, 2.08595764], [1516774260000, 0.0163211, 0.01639065, 0.0163211, 0.01639065, 2.30038672], [1516774320000, 0.01638765, 0.01638765, 0.016309, 0.016309, 37.40774682], [1516774380000, 0.01633, 0.0163873, 0.01633, 0.01637795, 4.68492873], [1516774440000, 0.01631003, 0.0163716, 0.01631003, 0.0163716, 3.95943959], [1516774500000, 0.0163716, 0.01639699, 0.016309, 0.01631304, 47.72628223], [1516774560000, 0.01639998, 0.01639998, 0.01631304, 0.01631304, 1.96019637], [1516774620000, 0.01639988, 0.01639999, 0.01632, 0.01632, 22.77849075], [1516774680000, 0.01639986, 0.01639999, 0.01639986, 0.01639998, 10.84321194], [1516774740000, 0.01639997, 0.01639997, 0.01639997, 0.01639997, 3.89214904], [1516774800000, 0.01639997, 0.01639998, 0.01639997, 0.01639997, 28.86168303], [1516774860000, 0.01639998, 0.01639999, 0.01639997, 0.01639999, 27.29555329], [1516774920000, 0.01639998, 0.0164, 0.01632007, 0.01639997, 27.31201229], [1516774980000, 0.0164, 0.0164, 0.01632007, 0.01632007, 6.40457869], [1516775040000, 0.01632007, 0.01632007, 0.01632007, 0.01632007, 0.05], [1516775100000, 0.01636004, 0.01636004, 0.01632007, 0.01636004, 9.8341506], [1516775160000, 0.01632308, 0.0164, 0.01632007, 0.01632308, 5.22484307], [1516775220000, 0.0164, 0.0164, 0.01632307, 0.0164, 29.01786457], [1516775280000, 0.0164, 0.01643201, 0.01632441, 0.0164, 124.89354011], [1516775340000, 0.01642901, 0.01642901, 0.01633969, 0.01633969, 22.39122546], [1516775400000, 0.0164145, 0.01642901, 0.01633969, 0.0164115, 17.52548251], [1516775460000, 0.01642901, 0.01642901, 0.01635, 0.01642601, 4.04618358], [1516775520000, 0.01642601, 0.01642601, 0.01635, 0.01635, 12.27708949], [1516775580000, 0.01635, 0.016429, 0.01633969, 0.016429, 54.74774695], [1516775640000, 0.0164266, 0.016429, 0.01633969, 0.016426, 4.97226064], [1516775700000, 0.016426, 0.016436, 0.01633969, 0.016436, 11.08335458], [1516775760000, 0.01642799, 0.016428, 0.01633969, 0.01633969, 35.23335062], [1516775820000, 0.01633969, 0.01644149, 0.01633969, 0.01633969, 9.8423301], [1516775880000, 0.01641559, 0.01641559, 0.016309, 0.016309, 45.41486796], [1516775940000, 0.016309, 0.01641999, 0.016307, 0.016307, 59.57745334], [1516776000000, 0.016307, 0.01630701, 0.0163, 0.01630701, 5.27969098], [1516776060000, 0.01630701, 0.016309, 0.0163, 0.0163, 10.32252235], [1516776120000, 0.016309, 0.016309, 0.0163, 0.0163, 1.9356698], [1516776180000, 0.016309, 0.016309, 0.0163, 0.01630001, 16.44340432], [1516776240000, 0.016305, 0.016309, 0.0163, 0.016309, 32.81366921], [1516776300000, 0.01630501, 0.016309, 0.01630501, 0.01630501, 1.12571839], [1516776360000, 0.01630501, 0.01630501, 0.01627468, 0.01630501, 13.07396944], [1516776420000, 0.01630501, 0.016309, 0.01630501, 0.016309, 73.00133487], [1516776480000, 0.01630501, 0.0163976, 0.01630501, 0.01632531, 28.16251823], [1516776540000, 0.01634999, 0.01636634, 0.01634999, 0.01636634, 17.62542314], [1516776600000, 0.01636634, 0.01637, 0.01630501, 0.01636634, 88.04781534], [1516776660000, 0.01636334, 0.01636334, 0.01636334, 0.01636334, 1.04835777], [1516776720000, 0.01630501, 0.01636634, 0.01630501, 0.01636634, 1.65481222], [1516776780000, 0.01630501, 0.01636, 0.016275, 0.016275, 10.60644577], [1516776840000, 0.01636, 0.01636, 0.01636, 0.01636, 1.44037975], [1516776900000, 0.01636, 0.01636, 0.01628001, 0.01628001, 18.34320725], [1516776960000, 0.01628001, 0.01636, 0.01628001, 0.01628002, 0.23272292], [1516777020000, 0.01635, 0.01636634, 0.01628002, 0.01636634, 23.91544663], [1516777080000, 0.01636634, 0.01636634, 0.01636634, 0.01636634, 4.23622778], [1516777140000, 0.01636634, 0.01636634, 0.01629502, 0.01629502, 6.00325152], [1516777200000, 0.01629502, 0.01629502, 0.016295, 0.01629502, 2.13159953], [1516777260000, 0.016295, 0.01636634, 0.016295, 0.01629502, 2.52898009], [1516777320000, 0.01629502, 0.01636634, 0.01629, 0.01636634, 16.42157031], [1516777380000, 0.01629, 0.01629, 0.01628002, 0.016285, 5.46071899], [1516777440000, 0.016285, 0.016285, 0.0162801, 0.016285, 15.04506813], [1516777500000, 0.016285, 0.01636634, 0.016285, 0.016285, 5.39207724], [1516777560000, 0.016285, 0.016286, 0.016285, 0.016286, 2.44261439], [1516777620000, 0.016287, 0.01636291, 0.016285, 0.0163626, 4.6446393], [1516777680000, 0.01636059, 0.01636059, 0.01635795, 0.01635795, 2.33050394], [1516777740000, 0.01635795, 0.01635795, 0.016285, 0.016285, 6.68932199], [1516777800000, 0.01635493, 0.01635793, 0.016285, 0.01634557, 4.98428552], [1516777860000, 0.016285, 0.01632996, 0.016285, 0.016285, 33.00740048], [1516777920000, 0.016285, 0.01631493, 0.01627468, 0.01630948, 84.60093483], [1516777980000, 0.01630948, 0.01630948, 0.01627468, 0.01627468, 21.09558376], [1516778040000, 0.01630799, 0.01630799, 0.016265, 0.016265, 17.37347402], [1516778100000, 0.01627468, 0.01632993, 0.016265, 0.016265, 3.46520093], [1516778160000, 0.0163086, 0.0163086, 0.016265, 0.0163, 3.29656262], [1516778220000, 0.0163, 0.0163, 0.016265, 0.016265, 44.6762277], [1516778280000, 0.01629999, 0.0163, 0.016265, 0.0163, 14.10386711], [1516778340000, 0.0163, 0.01634799, 0.0163, 0.0163086, 36.68306717], [1516778400000, 0.0163086, 0.016344, 0.01628001, 0.016344, 5.36257641], [1516778460000, 0.01628001, 0.01633699, 0.01628001, 0.01633699, 5.93745524], [1516778520000, 0.01628001, 0.016341, 0.016265, 0.0163, 17.44740885], [1516778580000, 0.0163, 0.016338, 0.016265, 0.016265, 1.62724031], [1516778640000, 0.016338, 0.01634499, 0.016268, 0.016268, 13.31687238], [1516778700000, 0.01634498, 0.01634499, 0.016268, 0.016268, 6.25762058], [1516778760000, 0.01634497, 0.01634499, 0.016265, 0.01634499, 30.13840533], [1516778820000, 0.01629, 0.01634499, 0.01629, 0.01634499, 25.23404834], [1516778880000, 0.016293, 0.01634499, 0.01629, 0.016291, 42.96700413], [1516778940000, 0.01629, 0.01634499, 0.01629, 0.01629, 34.23332212], [1516779000000, 0.01629, 0.01634499, 0.01629, 0.01634499, 11.82820018], [1516779060000, 0.016307, 0.01634499, 0.01629, 0.01629, 19.05686917], [1516779120000, 0.01629, 0.01629, 0.01629, 0.01629, 2.0730947], [1516779180000, 0.016307, 0.016307, 0.016295, 0.016305, 1.81137758], [1516779240000, 0.016305, 0.016305, 0.016265, 0.016305, 15.45799883], [1516779300000, 0.016268, 0.016305, 0.016265, 0.016265, 7.38934628], [1516779360000, 0.01626505, 0.016305, 0.01626505, 0.01626505, 9.2057714], [1516779420000, 0.016305, 0.016307, 0.016305, 0.016307, 173.73915165], [1516779480000, 0.016307, 0.01631, 0.016307, 0.01631, 15.91702753], [1516779540000, 0.01631, 0.01635794, 0.01626511, 0.01635794, 79.27483956], [1516779600000, 0.01635794, 0.0164, 0.01631001, 0.01631001, 98.28799346], [1516779660000, 0.016397, 0.016397, 0.01631002, 0.01631302, 6.73296503], [1516779720000, 0.0163931, 0.01643, 0.01631263, 0.01631564, 100.08462917], [1516779780000, 0.01632601, 0.01643, 0.01632301, 0.01643, 137.36255975], [1516779840000, 0.01635793, 0.01643, 0.01631, 0.01632403, 130.44015338], [1516779900000, 0.01640048, 0.01643, 0.01632703, 0.01633333, 60.39277549], [1516779960000, 0.01633333, 0.01642634, 0.01632703, 0.01634, 96.18099759], [1516780020000, 0.01634, 0.01643, 0.01633353, 0.01643, 93.93084498], [1516780080000, 0.01639969, 0.01643, 0.01633353, 0.01641412, 48.37270245], [1516780140000, 0.01639961, 0.01641412, 0.01632403, 0.01632703, 112.2341366], [1516780200000, 0.01639901, 0.01639901, 0.01627001, 0.01627001, 30.35462087], [1516780260000, 0.01635, 0.01639099, 0.016289, 0.01635, 38.02016672], [1516780320000, 0.01635, 0.016376, 0.01629211, 0.01629212, 6.36655585], [1516780380000, 0.01629213, 0.01636398, 0.0162921, 0.01629216, 30.53619477], [1516780440000, 0.01629215, 0.01629215, 0.01626505, 0.01629215, 8.78576636], [1516780500000, 0.01629215, 0.01629215, 0.01628001, 0.016282, 1.62294895], [1516780560000, 0.01629215, 0.01629215, 0.01628001, 0.01628003, 2.62970562], [1516780620000, 0.01629215, 0.01629215, 0.01628005, 0.01628007, 7.5513066], [1516780680000, 0.01629215, 0.01629215, 0.01628007, 0.01628007, 28.52245996], [1516780740000, 0.01628008, 0.01629215, 0.01628008, 0.01629115, 10.66712851], [1516780800000, 0.01629115, 0.01629115, 0.01628012, 0.01628012, 23.87687162], [1516780860000, 0.01629115, 0.01629115, 0.01628038, 0.0162911, 13.19779194], [1516780920000, 0.0162911, 0.01629115, 0.01628432, 0.01629115, 31.63895971], [1516780980000, 0.01629115, 0.01636259, 0.01628432, 0.01636258, 60.76915588], [1516781040000, 0.01628432, 0.01639299, 0.01628052, 0.01628052, 60.63434116], [1516781100000, 0.01628052, 0.0162822, 0.01628051, 0.01628052, 18.38787935], [1516781160000, 0.01628085, 0.01628085, 0.01628085, 0.01628085, 0.71017427], [1516781220000, 0.01628085, 0.01641, 0.01628057, 0.01637899, 9.18047837], [1516781280000, 0.01631078, 0.01637597, 0.01631078, 0.01631078, 4.54100421], [1516781340000, 0.01631078, 0.016361, 0.0162808, 0.0162808, 9.29301774], [1516781400000, 0.0162808, 0.0162808, 0.01628052, 0.0162808, 6.63946149], [1516781460000, 0.0162808, 0.0162808, 0.01628053, 0.0162808, 28.99], [1516781520000, 0.01638796, 0.01638796, 0.0162808, 0.0162838, 2.11525198], [1516781580000, 0.0162868, 0.01638791, 0.016286, 0.01638791, 4.47803934], [1516781640000, 0.016286, 0.01638791, 0.0162838, 0.01637999, 13.90503695], [1516781700000, 0.0162838, 0.01638, 0.0162838, 0.01638, 12.20890615], [1516781760000, 0.016287, 0.01638, 0.016287, 0.01628711, 13.56163811], [1516781820000, 0.01629, 0.01629303, 0.01629, 0.01629003, 8.48543478], [1516781880000, 0.01629303, 0.01638, 0.01629003, 0.01629003, 8.36712846], [1516781940000, 0.0163786, 0.0163786, 0.01629003, 0.01629003, 1.03825357], [1516782000000, 0.01629003, 0.0163756, 0.01629003, 0.01637559, 7.58619968], [1516782060000, 0.01629306, 0.01637558, 0.01629003, 0.01637558, 57.24382608], [1516782120000, 0.01629003, 0.01629003, 0.01628711, 0.01629003, 2.05043552], [1516782180000, 0.01629003, 0.01637556, 0.01628714, 0.01637556, 4.65887147], [1516782240000, 0.01629004, 0.01637555, 0.01629004, 0.01637552, 2.34403554], [1516782300000, 0.01637552, 0.01637552, 0.0162801, 0.01637549, 5.14089769], [1516782360000, 0.01637548, 0.01637548, 0.01635793, 0.01635793, 18.69524547], [1516782420000, 0.01635793, 0.01637546, 0.01635793, 0.01637546, 2.13331216], [1516782480000, 0.01637545, 0.01637546, 0.01628011, 0.01628011, 10.22741172], [1516782540000, 0.01628012, 0.01635793, 0.01628012, 0.01628312, 5.17105819], [1516782600000, 0.01628801, 0.01635794, 0.01628801, 0.01635794, 33.77098198], [1516782660000, 0.01635794, 0.016358, 0.01630305, 0.016358, 7.53342525], [1516782720000, 0.01637542, 0.01637543, 0.01628801, 0.01635794, 63.85267085], [1516782780000, 0.01637436, 0.01637553, 0.01635794, 0.01635796, 16.36867839], [1516782840000, 0.01635795, 0.01635795, 0.01635794, 0.01635794, 12.04046155], [1516782900000, 0.01635794, 0.01635795, 0.01629301, 0.01635795, 2.41720023], [1516782960000, 0.01635795, 0.01635796, 0.01629902, 0.01635795, 11.24248865], [1516783020000, 0.01635795, 0.01635796, 0.01630701, 0.01635796, 29.71024443], [1516783080000, 0.01637553, 0.01637553, 0.01635796, 0.01636882, 6.39376592], [1516783140000, 0.01636882, 0.01637553, 0.01636882, 0.01637552, 9.21548967], [1516783200000, 0.01636882, 0.01637552, 0.01636882, 0.0163755, 9.17969077], [1516783260000, 0.01636882, 0.01637555, 0.01636882, 0.01637553, 250.97751802], [1516783320000, 0.01636882, 0.01636882, 0.01635796, 0.01635796, 1.57120238], [1516783380000, 0.0163688, 0.01636882, 0.01635796, 0.0163688, 0.82746588], [1516783440000, 0.01636882, 0.01636882, 0.0163688, 0.01636882, 0.49678834], [1516783500000, 0.01636882, 0.01636882, 0.01635796, 0.01636882, 19.36427794], [1516783560000, 0.01636882, 0.01638797, 0.01636882, 0.01636882, 30.30997486], [1516783620000, 0.01636882, 0.01638496, 0.01636882, 0.01638496, 28.02129662], [1516783680000, 0.01636882, 0.01639985, 0.01630702, 0.01630702, 43.89041835], [1516783740000, 0.01630702, 0.01639985, 0.01630702, 0.0163876, 73.25387908], [1516783800000, 0.0163876, 0.0164, 0.01630703, 0.01639999, 34.10779417], [1516783860000, 0.01639998, 0.01639999, 0.01630703, 0.01639508, 8.88191319], [1516783920000, 0.01639509, 0.01639509, 0.01631003, 0.016311, 8.00719588], [1516783980000, 0.01638906, 0.016425, 0.016309, 0.01636788, 28.69788157], [1516784040000, 0.01636788, 0.01636788, 0.01631212, 0.01636788, 7.61966772], [1516784100000, 0.01636788, 0.01642482, 0.01636788, 0.01641676, 13.91510883], [1516784160000, 0.01636788, 0.01641666, 0.01634369, 0.01634369, 4.307705], [1516784220000, 0.016367, 0.01641665, 0.01634369, 0.0164145, 4.0047604], [1516784280000, 0.0164097, 0.0164097, 0.0163467, 0.0164, 6.19782953], [1516784340000, 0.0164, 0.0164, 0.0163467, 0.0163467, 11.71818902], [1516784400000, 0.01639723, 0.0163998, 0.0163467, 0.0163998, 33.51122085], [1516784460000, 0.0163497, 0.0163998, 0.0163497, 0.016351, 1.9501923], [1516784520000, 0.01637475, 0.01639999, 0.01637475, 0.01639999, 2.22230403], [1516784580000, 0.01639, 0.01639999, 0.0163467, 0.0163467, 21.10408485], [1516784640000, 0.01639999, 0.01639999, 0.016354, 0.01639999, 5.99136635], [1516784700000, 0.016354, 0.01639999, 0.016352, 0.01639999, 11.26478738], [1516784760000, 0.01639999, 0.01639999, 0.0163527, 0.01639999, 28.7193601], [1516784820000, 0.0164, 0.0164415, 0.0164, 0.0164097, 107.88523283], [1516784880000, 0.01642999, 0.0164415, 0.01642999, 0.01642999, 39.85093264], [1516784940000, 0.01642999, 0.0164415, 0.01642999, 0.01642999, 88.90310719], [1516785000000, 0.0164415, 0.0164415, 0.01642999, 0.01644149, 26.32651533], [1516785060000, 0.01644149, 0.01644149, 0.01642999, 0.01642999, 7.68717466], [1516785120000, 0.01644148, 0.0164415, 0.01642999, 0.01642999, 21.14364642], [1516785180000, 0.01642999, 0.01645, 0.01642999, 0.01644999, 45.81425762], [1516785240000, 0.01642999, 0.01645, 0.01642999, 0.01642999, 50.62964356], [1516785300000, 0.01643697, 0.01645, 0.0164097, 0.0164097, 24.77125353], [1516785360000, 0.01642997, 0.01642997, 0.0164097, 0.01642997, 7.94474629], [1516785420000, 0.0164097, 0.01642997, 0.0164097, 0.0164097, 3.96827135], [1516785480000, 0.0164097, 0.01644199, 0.0164097, 0.0164097, 3.83007944], [1516785540000, 0.0164097, 0.0164097, 0.0163467, 0.0164097, 8.02168483], [1516785600000, 0.01638877, 0.01638877, 0.01638877, 0.01638877, 1.66066966], [1516785660000, 0.0164097, 0.0164097, 0.016388, 0.016388, 15.67994462], [1516785720000, 0.0164097, 0.0164097, 0.01634369, 0.01634369, 34.10475057], [1516785780000, 0.01638877, 0.01638877, 0.01633969, 0.01638877, 2.19696436], [1516785840000, 0.01638877, 0.01638877, 0.01633969, 0.01638877, 6.04122439], [1516785900000, 0.01638877, 0.01638877, 0.01633969, 0.01638795, 2.86662242], [1516785960000, 0.01638877, 0.01638877, 0.01633975, 0.01638795, 8.41390625], [1516786020000, 0.01638795, 0.01638795, 0.01633975, 0.01638795, 28.13953864], [1516786080000, 0.01638794, 0.01638794, 0.01633975, 0.01633975, 0.76171234], [1516786140000, 0.01633975, 0.01638795, 0.016318, 0.01633975, 43.32876887], [1516786200000, 0.01633975, 0.01634, 0.016318, 0.016318, 4.04353102], [1516786260000, 0.016318, 0.016383, 0.016318, 0.0163397, 8.590961], [1516786320000, 0.01633969, 0.0163397, 0.01633969, 0.01633969, 18.02896239], [1516786380000, 0.0163397, 0.0163397, 0.016318, 0.016318, 27.23631806], [1516786440000, 0.01633969, 0.01633969, 0.016318, 0.01631801, 6.2918343], [1516786500000, 0.01633968, 0.0163397, 0.01631801, 0.0163397, 14.7133425], [1516786560000, 0.01638297, 0.01638297, 0.01631801, 0.01631801, 6.3835821], [1516786620000, 0.01636759, 0.016383, 0.01631801, 0.01631801, 9.83400846], [1516786680000, 0.01638359, 0.01638494, 0.016318, 0.016318, 16.77326738], [1516786740000, 0.016318, 0.01631801, 0.016318, 0.01631801, 23.60186006], [1516786800000, 0.01631801, 0.01631801, 0.016318, 0.01631801, 8.59399632], [1516786860000, 0.01631801, 0.01631801, 0.016318, 0.01631801, 4.64383771], [1516786920000, 0.016318, 0.01631801, 0.016318, 0.01631801, 5.0247122], [1516786980000, 0.01631801, 0.01631801, 0.01631561, 0.01631767, 12.63914045], [1516787040000, 0.01631734, 0.016318, 0.01631561, 0.01631767, 5.98952907], [1516787100000, 0.01631766, 0.016318, 0.01631766, 0.016318, 13.48089757], [1516787160000, 0.016318, 0.01631801, 0.016318, 0.01631801, 23.32719406], [1516787220000, 0.01631801, 0.01631801, 0.016318, 0.01631801, 13.28190722], [1516787280000, 0.01631801, 0.01631801, 0.01631734, 0.01631734, 27.57799143], [1516787340000, 0.01631734, 0.01631734, 0.01631561, 0.01631561, 10.20272027], [1516787400000, 0.016317, 0.016317, 0.01631561, 0.016317, 7.41305395], [1516787460000, 0.016317, 0.016317, 0.01631699, 0.016317, 34.87373985], [1516787520000, 0.016317, 0.016317, 0.01631561, 0.016317, 15.79057226], [1516787580000, 0.016317, 0.016317, 0.01631561, 0.01631561, 4.26588266], [1516787640000, 0.01631561, 0.01631634, 0.01631561, 0.01631561, 0.85214199], [1516787700000, 0.01631634, 0.01631667, 0.01631561, 0.01631634, 8.66544833], [1516787760000, 0.01631667, 0.01631667, 0.01628801, 0.01631167, 175.09227387], [1516787820000, 0.01631167, 0.0163156, 0.01628007, 0.01628801, 150.79892034], [1516787880000, 0.01628007, 0.01631198, 0.01628, 0.01631198, 33.7344988], [1516787940000, 0.01631198, 0.01631198, 0.01626505, 0.01626506, 16.2929179], [1516788000000, 0.01626506, 0.01631198, 0.016265, 0.01631197, 22.1349947], [1516788060000, 0.016265, 0.0163119, 0.016265, 0.01631185, 29.263913], [1516788120000, 0.01630898, 0.01630898, 0.016265, 0.016307, 10.98301277], [1516788180000, 0.016265, 0.01626502, 0.016265, 0.016265, 5.22791563], [1516788240000, 0.016265, 0.016307, 0.016265, 0.016265, 3.2191735], [1516788300000, 0.016265, 0.01630199, 0.016265, 0.016265, 19.40654886], [1516788360000, 0.016265, 0.016282, 0.01624, 0.01624, 48.26689792], [1516788420000, 0.01624, 0.01628872, 0.01624, 0.01628656, 11.42132649], [1516788480000, 0.01624, 0.01627899, 0.01623, 0.01623, 5.83102031], [1516788540000, 0.01627759, 0.01627759, 0.01622958, 0.016277, 0.88791587], [1516788600000, 0.0162776, 0.0162776, 0.01623, 0.0162776, 5.40060097], [1516788660000, 0.01623001, 0.0162776, 0.01623001, 0.0162776, 1.91005176], [1516788720000, 0.0162776, 0.0162776, 0.01621801, 0.01621801, 42.84578314], [1516788780000, 0.01622903, 0.01622903, 0.0162201, 0.0162201, 34.97354839], [1516788840000, 0.016229, 0.0162776, 0.0162001, 0.0162776, 133.42945604], [1516788900000, 0.0162776, 0.016307, 0.01620016, 0.016307, 8.78036058], [1516788960000, 0.016307, 0.016307, 0.01622025, 0.016307, 6.19434881], [1516789020000, 0.016307, 0.016312, 0.01621, 0.016312, 24.75473712], [1516789080000, 0.01630699, 0.01631199, 0.01620508, 0.01631199, 13.32076717], [1516789140000, 0.01630699, 0.01631198, 0.01630699, 0.01631198, 0.84916312], [1516789200000, 0.01631198, 0.016317, 0.01622004, 0.01622007, 9.0685108], [1516789260000, 0.01631198, 0.01631198, 0.01627993, 0.01627993, 0.16601853], [1516789320000, 0.01631198, 0.01631198, 0.01627993, 0.01627993, 0.79327198], [1516789380000, 0.01631198, 0.01631198, 0.01627993, 0.01627993, 2.31122112], [1516789440000, 0.01631198, 0.01631698, 0.01627993, 0.01631698, 88.24369617], [1516789500000, 0.01631698, 0.01631698, 0.01627993, 0.01627993, 7.76080538], [1516789560000, 0.01631689, 0.01631689, 0.01628, 0.01631689, 1.66313042], [1516789620000, 0.01631689, 0.0163169, 0.01628, 0.01629, 9.02166357], [1516789680000, 0.0163169, 0.01631734, 0.0163169, 0.01631734, 48.31637415], [1516789740000, 0.01631734, 0.01631734, 0.016317, 0.01631734, 4.10501826], [1516789800000, 0.01631734, 0.01631734, 0.01628, 0.01628, 5.31936708], [1516789860000, 0.01628, 0.01631734, 0.01622501, 0.01631734, 17.41941112], [1516789920000, 0.01631734, 0.01631734, 0.01623001, 0.01631734, 6.74527978], [1516789980000, 0.01631734, 0.01631734, 0.0162504, 0.01631734, 18.14415988], [1516790040000, 0.01631734, 0.01631734, 0.01631734, 0.01631734, 3.82177674], [1516790100000, 0.01631734, 0.01631734, 0.01624748, 0.01624749, 30.17133602], [1516790160000, 0.01624831, 0.01631734, 0.01624831, 0.01631734, 11.20047997], [1516790220000, 0.01631734, 0.01631734, 0.01625133, 0.01631734, 6.10738211], [1516790280000, 0.01631734, 0.01631734, 0.01625241, 0.01631734, 5.31509546], [1516790340000, 0.01631733, 0.01631733, 0.01626, 0.0163, 2.67335915], [1516790400000, 0.0163, 0.0163001, 0.01626001, 0.016299, 8.37706933], [1516790460000, 0.016299, 0.0163, 0.01626001, 0.0163, 6.45301864], [1516790520000, 0.0163, 0.0163, 0.01626001, 0.01627, 3.98543163], [1516790580000, 0.01627, 0.0162999, 0.01627, 0.01627, 6.90423566], [1516790640000, 0.0162999, 0.0162999, 0.01627, 0.01627, 0.1230866], [1516790700000, 0.0162999, 0.0163, 0.01627001, 0.0163, 14.45113259], [1516790760000, 0.01627102, 0.0163, 0.01626, 0.0163, 62.88657137], [1516790820000, 0.01626, 0.0163, 0.01626, 0.0162605, 8.42479739], [1516790880000, 0.0162605, 0.0163, 0.0162483, 0.01624832, 20.69270833], [1516790940000, 0.01624831, 0.01628, 0.01624831, 0.01624831, 3.95839575], [1516791000000, 0.0162777, 0.01639, 0.01624831, 0.01639, 505.67362645], [1516791060000, 0.01624834, 0.0163712, 0.01624834, 0.01625002, 133.20297779], [1516791120000, 0.01636769, 0.01637106, 0.01625501, 0.0163, 28.89521883], [1516791180000, 0.0163, 0.01636658, 0.0163, 0.01636658, 10.79620849], [1516791240000, 0.01636636, 0.01636637, 0.01625503, 0.01625503, 7.75414358], [1516791300000, 0.016362, 0.016362, 0.01625503, 0.01636199, 24.47933063], [1516791360000, 0.01635653, 0.01635653, 0.01625502, 0.0163565, 30.80702914], [1516791420000, 0.0162747, 0.0162747, 0.01625502, 0.0162747, 11.02617545], [1516791480000, 0.0162747, 0.01635649, 0.01625502, 0.01635649, 21.52046046], [1516791540000, 0.01635649, 0.01635649, 0.01635649, 0.01635649, 54.93728751], [1516791600000, 0.01635649, 0.01636173, 0.0162747, 0.01627471, 18.51690608], [1516791660000, 0.01627471, 0.01637109, 0.01627471, 0.01637107, 36.9289326], [1516791720000, 0.01627776, 0.01628, 0.01627776, 0.01628, 7.14771033], [1516791780000, 0.01635864, 0.01635864, 0.01625502, 0.01625805, 5.86099796], [1516791840000, 0.01626301, 0.0163555, 0.01626301, 0.0162721, 2.04631458], [1516791900000, 0.0163555, 0.0163555, 0.0162724, 0.0163555, 10.17680441], [1516791960000, 0.0163555, 0.0163555, 0.01626503, 0.0163555, 1.88073], [1516792020000, 0.0163555, 0.0163555, 0.016256, 0.016256, 10.999], [1516792080000, 0.01635, 0.01635, 0.01625809, 0.01635, 24.34538285], [1516792140000, 0.01635, 0.01635, 0.01627856, 0.0163498, 8.14714271], [1516792200000, 0.01634979, 0.01634979, 0.01634978, 0.01634978, 1.90938375], [1516792260000, 0.01627856, 0.01634978, 0.01627856, 0.01627856, 0.9612988], [1516792320000, 0.0163049, 0.01634978, 0.01627856, 0.01627856, 0.90710517], [1516792380000, 0.0163049, 0.016349, 0.01627856, 0.016349, 2.6831116], [1516792440000, 0.01627856, 0.016349, 0.01627856, 0.01627856, 3.02833868], [1516792500000, 0.01627856, 0.01630898, 0.01627856, 0.01630898, 4.86884275], [1516792560000, 0.01630898, 0.01630898, 0.01627856, 0.01630816, 15.32984], [1516792620000, 0.01630898, 0.01630898, 0.01627856, 0.01627856, 8.86135265], [1516792680000, 0.01630898, 0.01630898, 0.01627856, 0.01627856, 4.19421599], [1516792740000, 0.01627856, 0.01627856, 0.01627856, 0.01627856, 27.18745888], [1516792800000, 0.01627856, 0.01630898, 0.01627856, 0.01627856, 2.88695514], [1516792860000, 0.01627856, 0.01630898, 0.01627856, 0.01627856, 10.07484167], [1516792920000, 0.01630898, 0.01630898, 0.01627857, 0.01627857, 5.65181363], [1516792980000, 0.01630898, 0.01634899, 0.01627857, 0.01627857, 10.19509798], [1516793040000, 0.01627936, 0.01627936, 0.01627857, 0.01627936, 12.54997959], [1516793100000, 0.01627858, 0.01627936, 0.01627856, 0.01627936, 27.68937986], [1516793160000, 0.01627936, 0.01635, 0.01627858, 0.01635, 17.53500821], [1516793220000, 0.01627937, 0.01627937, 0.01627937, 0.01627937, 0.06], [1516793280000, 0.016347, 0.016347, 0.01627937, 0.01627937, 9.52118081], [1516793340000, 0.01634699, 0.01634699, 0.0163456, 0.0163456, 0.92348171], [1516793400000, 0.01627937, 0.01634559, 0.01624831, 0.01624831, 105.27919552], [1516793460000, 0.016331, 0.016331, 0.01625, 0.01625, 30.433043], [1516793520000, 0.01625, 0.01633969, 0.01622501, 0.01622501, 257.40206168], [1516793580000, 0.01632198, 0.01632198, 0.016225, 0.01622501, 3.35797329], [1516793640000, 0.01631396, 0.01631396, 0.01622, 0.01622, 124.73032443], [1516793700000, 0.01622501, 0.01629695, 0.01622001, 0.01622001, 4.4472974], [1516793760000, 0.01622002, 0.016225, 0.01622002, 0.016225, 29.51674909], [1516793820000, 0.01629699, 0.01629999, 0.01622002, 0.01622002, 14.30239784], [1516793880000, 0.01622002, 0.01629558, 0.01622002, 0.016225, 5.58569727], [1516793940000, 0.016225, 0.01629999, 0.01622002, 0.016225, 58.87049892], [1516794000000, 0.01629999, 0.0163277, 0.01623, 0.016236, 31.40382205], [1516794060000, 0.0163256, 0.01633969, 0.0163256, 0.0163277, 63.66078313], [1516794120000, 0.0163177, 0.0163277, 0.0163177, 0.0163277, 16.23694897], [1516794180000, 0.0163277, 0.0163277, 0.016243, 0.016243, 2.88774747], [1516794240000, 0.01632769, 0.01632769, 0.01626201, 0.01632768, 35.27084942], [1516794300000, 0.01624902, 0.01632768, 0.016233, 0.01632767, 68.59438305], [1516794360000, 0.01632767, 0.0163277, 0.01632641, 0.0163277, 9.51519136], [1516794420000, 0.01626001, 0.0163277, 0.01626001, 0.0163277, 0.62279202], [1516794480000, 0.0163277, 0.01633969, 0.0163277, 0.01633969, 7.71538604], [1516794540000, 0.01633, 0.01635, 0.01633, 0.016347, 64.40753607], [1516794600000, 0.016347, 0.016365, 0.01633, 0.016365, 25.09738492], [1516794660000, 0.01634881, 0.01636099, 0.01633, 0.01633, 29.01603657], [1516794720000, 0.01636098, 0.01636098, 0.01633, 0.01633, 55.2106507], [1516794780000, 0.01636, 0.01636098, 0.01633, 0.01636, 15.93762699], [1516794840000, 0.01636098, 0.01636098, 0.01636, 0.01636, 6.63636783], [1516794900000, 0.01636, 0.01636098, 0.01636, 0.01636, 19.97719589], [1516794960000, 0.01636, 0.01636098, 0.01636, 0.01636005, 20.03534066], [1516795020000, 0.01636098, 0.01636098, 0.01636, 0.01636097, 2.27828276], [1516795080000, 0.01636, 0.01636, 0.01629, 0.01629, 138.17503339], [1516795140000, 0.01635999, 0.01636098, 0.01629, 0.0163, 28.7054146], [1516795200000, 0.01633002, 0.01636098, 0.0163, 0.0163, 19.58493252], [1516795260000, 0.0163, 0.01633859, 0.0163, 0.0163, 49.03562837], [1516795320000, 0.0163, 0.01633859, 0.0163, 0.01633859, 7.31569481], [1516795380000, 0.01633859, 0.01633859, 0.0163, 0.0163, 9.08957815], [1516795440000, 0.01633859, 0.01635, 0.0163, 0.01635, 20.44280227], [1516795500000, 0.01635, 0.01635, 0.0163, 0.0163, 20.60383704], [1516795560000, 0.01634095, 0.01634095, 0.0163, 0.0163366, 7.60792657], [1516795620000, 0.0163356, 0.01633795, 0.01630001, 0.01630001, 12.41253598], [1516795680000, 0.0163256, 0.0163256, 0.0163, 0.0163, 32.33946695], [1516795740000, 0.016303, 0.01636098, 0.016303, 0.016303, 34.15536332], [1516795800000, 0.016303, 0.01635798, 0.016303, 0.016303, 16.0954424], [1516795860000, 0.01635798, 0.01635798, 0.016303, 0.01635798, 11.37929335], [1516795920000, 0.016303, 0.01630301, 0.016303, 0.01630301, 3.67520694], [1516795980000, 0.01630301, 0.01635999, 0.016303, 0.016303, 30.19400692], [1516796040000, 0.016303, 0.01630301, 0.016303, 0.016303, 9.37047884], [1516796100000, 0.01630301, 0.01637109, 0.016303, 0.01637109, 58.67398278], [1516796160000, 0.01637108, 0.01637109, 0.016303, 0.016303, 13.66528219], [1516796220000, 0.016371, 0.016371, 0.016303, 0.016303, 15.13559693], [1516796280000, 0.016303, 0.016303, 0.01626257, 0.01626558, 23.7453809], [1516796340000, 0.01626558, 0.01630255, 0.01626257, 0.01626257, 12.66432406], [1516796400000, 0.01626257, 0.01629, 0.01625, 0.01625, 13.23083482], [1516796460000, 0.016255, 0.016255, 0.01625, 0.01625, 3.29654706], [1516796520000, 0.01625001, 0.01625001, 0.01625, 0.01625, 20.48339352], [1516796580000, 0.01625, 0.01625003, 0.01622003, 0.01622303, 173.90628409], [1516796640000, 0.01625003, 0.01625003, 0.01622003, 0.01622303, 69.95540611], [1516796700000, 0.01624221, 0.01624221, 0.01622003, 0.01622003, 190.77937747], [1516796760000, 0.0162422, 0.01624221, 0.01624, 0.01624, 5.48145653], [1516796820000, 0.01624, 0.01633969, 0.01622501, 0.01633969, 18.19781323], [1516796880000, 0.01625846, 0.01625846, 0.016225, 0.01625846, 4.26214031], [1516796940000, 0.01625846, 0.01625846, 0.01625846, 0.01625846, 4.54292534], [1516797000000, 0.01625846, 0.01631, 0.0162255, 0.01623, 23.20633637], [1516797060000, 0.0162255, 0.01623, 0.0162255, 0.01623, 6.22688899], [1516797120000, 0.016228, 0.01625847, 0.0162255, 0.0162255, 33.31993165], [1516797180000, 0.0162255, 0.01631, 0.0162255, 0.01631, 3.77255493], [1516797240000, 0.01631, 0.01631, 0.0162255, 0.01631, 26.6938764], [1516797300000, 0.01631, 0.01631, 0.016225, 0.016225, 23.0949187], [1516797360000, 0.01630999, 0.01631, 0.01622845, 0.01622999, 22.76474683], [1516797420000, 0.01622999, 0.01629992, 0.016225, 0.01629992, 30.32824606], [1516797480000, 0.01622999, 0.01627689, 0.01622002, 0.01622002, 265.47483181], [1516797540000, 0.01625786, 0.0163, 0.01622002, 0.0163, 32.81280636], [1516797600000, 0.01629992, 0.01629992, 0.01622003, 0.01629089, 9.42884151], [1516797660000, 0.01622003, 0.01627886, 0.01622002, 0.01622002, 2.85906189], [1516797720000, 0.01622003, 0.01629488, 0.01622002, 0.01622002, 47.29176376], [1516797780000, 0.01629185, 0.01629185, 0.01622002, 0.01622003, 6.85141619], [1516797840000, 0.01628581, 0.01628581, 0.01622002, 0.01627981, 64.85973929], [1516797900000, 0.01627981, 0.01627981, 0.01622003, 0.01622003, 8.55165164], [1516797960000, 0.01622003, 0.01627659, 0.01622, 0.01622, 417.86496922], [1516798020000, 0.01622, 0.01626099, 0.01621, 0.01621, 35.27964765], [1516798080000, 0.01622001, 0.01625797, 0.01620105, 0.0162192, 9.79068975], [1516798140000, 0.0162192, 0.01625194, 0.0162001, 0.01624891, 22.87449134], [1516798200000, 0.01625558, 0.01625558, 0.01622001, 0.01625253, 20.60805973], [1516798260000, 0.01622001, 0.01625249, 0.0162, 0.01624254, 183.22071581], [1516798320000, 0.01624254, 0.01624254, 0.0162, 0.01624254, 8.55882284], [1516798380000, 0.01622001, 0.01624254, 0.01622001, 0.01624254, 9.87083859], [1516798440000, 0.01622001, 0.01624254, 0.01622001, 0.01624254, 35.17766925], [1516798500000, 0.01624254, 0.01624254, 0.01622001, 0.01624254, 40.56410588], [1516798560000, 0.01622001, 0.01624254, 0.01622001, 0.01624253, 14.33604075], [1516798620000, 0.01624254, 0.0163, 0.01622001, 0.016297, 66.03625058], [1516798680000, 0.016297, 0.0163, 0.01624554, 0.016248, 17.59909319], [1516798740000, 0.01624554, 0.0163, 0.01624554, 0.01624554, 14.93549287], [1516798800000, 0.01624554, 0.016323, 0.01624554, 0.01631003, 85.99049153], [1516798860000, 0.01631003, 0.01633696, 0.01631003, 0.01633695, 45.53516584], [1516798920000, 0.01633695, 0.01637107, 0.0163, 0.0163, 67.34606836], [1516798980000, 0.01633, 0.01636798, 0.0163, 0.0163, 11.52941629], [1516799040000, 0.01636488, 0.0163659, 0.01630001, 0.0163616, 8.94479575], [1516799100000, 0.0163586, 0.01637109, 0.01630001, 0.0163706, 2.5170077], [1516799160000, 0.01636809, 0.0163706, 0.01630001, 0.01636759, 22.82283705], [1516799220000, 0.01630001, 0.0163676, 0.0163, 0.01636559, 37.53882052], [1516799280000, 0.0163656, 0.0163656, 0.01629999, 0.016365, 18.23097361], [1516799340000, 0.016365, 0.016365, 0.01629999, 0.01629999, 5.79604728], [1516799400000, 0.01635, 0.016364, 0.01625901, 0.01629999, 27.2652931], [1516799460000, 0.01629999, 0.01629999, 0.01626803, 0.01626803, 9.13670844], [1516799520000, 0.01626502, 0.01629999, 0.01626502, 0.01626808, 21.68109216], [1516799580000, 0.01627407, 0.01629999, 0.01627301, 0.01629999, 88.19312994], [1516799640000, 0.01629999, 0.01629999, 0.01622091, 0.01628, 78.49959898], [1516799700000, 0.01627367, 0.01629999, 0.01622091, 0.01622901, 141.38488302], [1516799760000, 0.01622901, 0.01629999, 0.0162244, 0.01622906, 41.13236263], [1516799820000, 0.01627769, 0.01627769, 0.01622861, 0.01627769, 13.61829686], [1516799880000, 0.01627769, 0.01633346, 0.01627769, 0.01629397, 11.86032849], [1516799940000, 0.01625901, 0.01627767, 0.01624715, 0.01624715, 13.89625549], [1516800000000, 0.01624715, 0.01627767, 0.01624715, 0.01625901, 46.44717194], [1516800060000, 0.01625901, 0.01627767, 0.01625901, 0.01627766, 22.54993276], [1516800120000, 0.01627766, 0.01627767, 0.01627766, 0.01627767, 54.60575322], [1516800180000, 0.01627767, 0.01627767, 0.01627766, 0.01627767, 24.4804142], [1516800240000, 0.01627767, 0.01627767, 0.01625901, 0.01627766, 158.81398085], [1516800300000, 0.01627766, 0.01627767, 0.016247, 0.016247, 101.55045001], [1516800360000, 0.016247, 0.01627767, 0.016247, 0.01627766, 77.56684595], [1516800420000, 0.01627766, 0.01627766, 0.01623164, 0.0162776, 4.72402769], [1516800480000, 0.01627766, 0.01627766, 0.0162776, 0.0162776, 9.83593998], [1516800540000, 0.01627766, 0.01627766, 0.0162776, 0.01627766, 16.63351355], [1516800600000, 0.01627766, 0.01627766, 0.0162776, 0.01627765, 33.84193682], [1516800660000, 0.01627765, 0.01627765, 0.0162776, 0.01627765, 4.30566927], [1516800720000, 0.0162776, 0.01633958, 0.0162776, 0.0163, 14.23754364], [1516800780000, 0.0163, 0.016435, 0.01629397, 0.01633969, 595.8528374], [1516800840000, 0.01633969, 0.01633969, 0.0162776, 0.01627765, 28.21815396], [1516800900000, 0.0162776, 0.01633615, 0.0162776, 0.0162776, 15.84476207], [1516800960000, 0.0162776, 0.01632458, 0.01622001, 0.01622001, 103.65341032], [1516801020000, 0.01627765, 0.01632429, 0.01622301, 0.01622301, 8.43619597], [1516801080000, 0.01628739, 0.01628739, 0.01622301, 0.01622601, 7.45270489], [1516801140000, 0.01622601, 0.01628739, 0.01622601, 0.01623202, 1.63981721], [1516801200000, 0.01623202, 0.01628739, 0.01622902, 0.01622902, 5.04322898], [1516801260000, 0.01628656, 0.01628656, 0.01622601, 0.01622903, 8.19251625], [1516801320000, 0.01622903, 0.01628737, 0.01622301, 0.01622301, 6.3932014], [1516801380000, 0.01628737, 0.01628737, 0.01622301, 0.01622303, 10.85047523], [1516801440000, 0.01622703, 0.01628737, 0.01622303, 0.01622303, 40.80845055], [1516801500000, 0.01628717, 0.01628717, 0.01622303, 0.01622303, 12.2672758], [1516801560000, 0.01622303, 0.01626303, 0.01622303, 0.01622303, 31.94832683], [1516801620000, 0.01622304, 0.01626303, 0.01622303, 0.01622304, 28.42498451], [1516801680000, 0.01626303, 0.01626303, 0.01622303, 0.01626303, 64.27397618], [1516801740000, 0.01622304, 0.01626303, 0.01622304, 0.01626299, 1.78772499], [1516801800000, 0.01626299, 0.01626299, 0.01622304, 0.01622306, 17.17971512], [1516801860000, 0.01622306, 0.01626299, 0.01622306, 0.01626299, 43.18120997], [1516801920000, 0.01626299, 0.01626303, 0.01622303, 0.01622303, 20.59454369], [1516801980000, 0.01624968, 0.01624968, 0.01622303, 0.01624968, 44.93486141], [1516802040000, 0.01625, 0.01625, 0.0161, 0.01625, 664.7173625], [1516802100000, 0.01620905, 0.01620905, 0.01616063, 0.01620905, 70.39729106], [1516802160000, 0.01624, 0.01624982, 0.01620905, 0.01620905, 77.81731404], [1516802220000, 0.01624979, 0.01624979, 0.01620905, 0.01624875, 28.46308643], [1516802280000, 0.01624978, 0.01624978, 0.01620906, 0.01624721, 32.565643], [1516802340000, 0.01624721, 0.01624721, 0.01620906, 0.01620916, 42.20628376], [1516802400000, 0.0162472, 0.0162472, 0.016126, 0.01624719, 49.35394378], [1516802460000, 0.0162472, 0.0162472, 0.01620906, 0.01620906, 19.89478731], [1516802520000, 0.01620906, 0.01624721, 0.01616752, 0.01624721, 189.87105852], [1516802580000, 0.01624721, 0.01624721, 0.01617954, 0.01617954, 3.63345434], [1516802640000, 0.016247, 0.016247, 0.01617955, 0.01618255, 5.95844114], [1516802700000, 0.016247, 0.01624721, 0.01616752, 0.01616752, 32.55210292], [1516802760000, 0.01616752, 0.01624721, 0.01611605, 0.01621326, 77.81774349], [1516802820000, 0.01621326, 0.01624497, 0.01612275, 0.01612882, 46.88748871], [1516802880000, 0.01612883, 0.016245, 0.0161258, 0.01613183, 226.44136685], [1516802940000, 0.01613183, 0.01613183, 0.0161318, 0.0161318, 102.50794631], [1516803000000, 0.01613183, 0.01613183, 0.0161318, 0.01613183, 130.80673853], [1516803060000, 0.01613183, 0.01613183, 0.0161318, 0.01613183, 78.6635216], [1516803120000, 0.0161319, 0.01621325, 0.0161319, 0.0161319, 9.8643662], [1516803180000, 0.0161319, 0.01618299, 0.016116, 0.016127, 12.37484762], [1516803240000, 0.016127, 0.016127, 0.01610099, 0.01610099, 22.90821534], [1516803300000, 0.01611601, 0.01612, 0.01608343, 0.01609381, 113.98351593], [1516803360000, 0.01610308, 0.01610308, 0.01607, 0.01607007, 42.29412358], [1516803420000, 0.0160734, 0.01607973, 0.01600001, 0.0160601, 137.88122311], [1516803480000, 0.01604998, 0.01607192, 0.01600306, 0.0160601, 45.97468808], [1516803540000, 0.01607, 0.01608309, 0.0160601, 0.01607973, 38.06343594], [1516803600000, 0.01607973, 0.016127, 0.01607339, 0.01607339, 56.23522384], [1516803660000, 0.01607339, 0.01607973, 0.0160601, 0.0160797, 85.39723246], [1516803720000, 0.01607973, 0.01607973, 0.0160797, 0.0160797, 47.09562602], [1516803780000, 0.01607972, 0.01607973, 0.0160797, 0.0160797, 40.21853351], [1516803840000, 0.0160797, 0.01607973, 0.0160601, 0.0160601, 267.95337119], [1516803900000, 0.0160601, 0.0160601, 0.01603631, 0.0160601, 27.90035916], [1516803960000, 0.0160601, 0.01607973, 0.0160344, 0.0160344, 116.29330264], [1516804020000, 0.0160344, 0.01603631, 0.01600501, 0.0160363, 180.27727711], [1516804080000, 0.0160363, 0.01603631, 0.01599846, 0.01599846, 957.48742937], [1516804140000, 0.01599932, 0.016, 0.01596001, 0.016, 242.84659769], [1516804200000, 0.016, 0.01607888, 0.01589727, 0.01600056, 288.30880092], [1516804260000, 0.01607585, 0.01609849, 0.01600059, 0.01609849, 326.38039287], [1516804320000, 0.01600605, 0.0161279, 0.01600605, 0.016123, 553.0752952], [1516804380000, 0.016123, 0.0161279, 0.0160861, 0.01610388, 10.02904555], [1516804440000, 0.01612, 0.01612, 0.01610388, 0.0161039, 16.6928396], [1516804500000, 0.01612, 0.016123, 0.01607952, 0.01607952, 64.29092167], [1516804560000, 0.01607952, 0.01612, 0.01601937, 0.0161, 72.99063563], [1516804620000, 0.01606645, 0.01609998, 0.01602251, 0.01602251, 39.03027203], [1516804680000, 0.01609995, 0.01609997, 0.01609995, 0.01609995, 83.17247671], [1516804740000, 0.01609995, 0.01609997, 0.01609995, 0.01609997, 21.12545136], [1516804800000, 0.01609995, 0.01609997, 0.01609995, 0.01609995, 12.96955678], [1516804860000, 0.01609994, 0.01609994, 0.01604503, 0.01609994, 3.55832202], [1516804920000, 0.01609994, 0.01609995, 0.01604603, 0.01604603, 33.62648752], [1516804980000, 0.01604604, 0.01609995, 0.01604603, 0.01604604, 21.46955187], [1516805040000, 0.01604603, 0.01609995, 0.01604603, 0.01609995, 26.83140208], [1516805100000, 0.01604903, 0.01612, 0.01604604, 0.01609994, 45.44757738], [1516805160000, 0.01609993, 0.01609993, 0.0160999, 0.0160999, 3.57799857], [1516805220000, 0.0160999, 0.01609993, 0.01604915, 0.01604915, 155.23527435], [1516805280000, 0.0160491, 0.0160999, 0.01604904, 0.0160899, 10.64605109], [1516805340000, 0.0160899, 0.0160999, 0.01605702, 0.0160999, 64.03832813], [1516805400000, 0.0160988, 0.0160988, 0.01605702, 0.01605702, 43.83095714], [1516805460000, 0.01606002, 0.01609155, 0.01605702, 0.01609155, 139.54489828], [1516805520000, 0.01605705, 0.0160999, 0.01603, 0.01609155, 191.96577452], [1516805580000, 0.01609155, 0.01609992, 0.01609155, 0.0160999, 22.62700364], [1516805640000, 0.0160999, 0.01609994, 0.01603003, 0.01603013, 58.27840887], [1516805700000, 0.0161, 0.0161, 0.01603307, 0.0161, 22.79836081], [1516805760000, 0.0161, 0.0161, 0.01603307, 0.0161, 37.29572058], [1516805820000, 0.0161, 0.01612, 0.016047, 0.01612, 13.42019034], [1516805880000, 0.016111, 0.016123, 0.01603, 0.01603, 35.96922688], [1516805940000, 0.01611699, 0.01611699, 0.016047, 0.01611398, 4.78852398], [1516806000000, 0.01611398, 0.01611398, 0.01604001, 0.01604001, 29.90925852], [1516806060000, 0.016047, 0.016047, 0.01604001, 0.01604001, 6.06590096], [1516806120000, 0.016047, 0.016047, 0.01604001, 0.016047, 17.21493949], [1516806180000, 0.016047, 0.016047, 0.01604001, 0.016047, 45.37214521], [1516806240000, 0.016047, 0.016047, 0.01604001, 0.016047, 54.00211938], [1516806300000, 0.016047, 0.0161, 0.01604001, 0.01604001, 15.03586676], [1516806360000, 0.016042, 0.016096, 0.016042, 0.016096, 11.12258137], [1516806420000, 0.0161, 0.0161, 0.016047, 0.016047, 10.30199361], [1516806480000, 0.01609599, 0.01610079, 0.01609599, 0.01610079, 40.99145326], [1516806540000, 0.0161, 0.01610001, 0.0161, 0.0161, 15.8149905], [1516806600000, 0.0161, 0.01610079, 0.0161, 0.0161, 82.74692834], [1516806660000, 0.01610001, 0.01610001, 0.0161, 0.0161, 14.65883765], [1516806720000, 0.0161, 0.01610079, 0.0161, 0.0161, 49.08689982], [1516806780000, 0.0161, 0.0161279, 0.016064, 0.0161, 90.23341861], [1516806840000, 0.0161, 0.0161, 0.01604201, 0.016043, 172.24301284], [1516806900000, 0.016112, 0.01614735, 0.01603, 0.016041, 73.74045854], [1516806960000, 0.016041, 0.01606032, 0.016035, 0.01605705, 14.23584687], [1516807020000, 0.01606032, 0.01606032, 0.016041, 0.016041, 40.57154808], [1516807080000, 0.016041, 0.016041, 0.01603, 0.01604, 9.23962167], [1516807140000, 0.016041, 0.016041, 0.01604, 0.016041, 8.78795705], [1516807200000, 0.016041, 0.01614735, 0.01604, 0.01614734, 44.93841179], [1516807260000, 0.01613148, 0.01613149, 0.01604102, 0.01612599, 4.97067225], [1516807320000, 0.01604102, 0.01613082, 0.01604102, 0.01604102, 70.19803258], [1516807380000, 0.01613148, 0.01613149, 0.01603, 0.01603, 292.01592337], [1516807440000, 0.01603, 0.01607, 0.01603, 0.01607, 25.35088059], [1516807500000, 0.0161046, 0.0161046, 0.01604102, 0.01604102, 15.54789772], [1516807560000, 0.01610427, 0.01610427, 0.01600608, 0.01601146, 7.82379618], [1516807620000, 0.01601146, 0.01613149, 0.0160079, 0.01610343, 77.23215422], [1516807680000, 0.01610343, 0.01610343, 0.01601, 0.01601, 9.30175799], [1516807740000, 0.01601, 0.01601, 0.01601, 0.01601, 13.22680931], [1516807800000, 0.01612728, 0.01613016, 0.01601081, 0.01610899, 2.64541259], [1516807860000, 0.0161, 0.01610299, 0.01601081, 0.01609999, 4.39202999], [1516807920000, 0.0160938, 0.0160938, 0.01601081, 0.01601081, 10.444896], [1516807980000, 0.01601081, 0.01608996, 0.01601081, 0.016019, 33.13134452], [1516808040000, 0.01604, 0.01608996, 0.01604, 0.01604, 18.9442718], [1516808100000, 0.01604, 0.01608997, 0.01604, 0.01604, 3.76241576], [1516808160000, 0.01604, 0.01608997, 0.01604, 0.01608997, 17.04433081], [1516808220000, 0.01608997, 0.01608997, 0.01605, 0.01605, 37.52071637], [1516808280000, 0.01608998, 0.01608998, 0.01604, 0.01604, 24.94770842], [1516808340000, 0.01604, 0.01608997, 0.01601081, 0.016015, 24.14148359], [1516808400000, 0.016012, 0.01608996, 0.016012, 0.01608, 9.5880521], [1516808460000, 0.01608696, 0.01608696, 0.016016, 0.016016, 17.15671095], [1516808520000, 0.016016, 0.01608899, 0.016016, 0.016019, 4.56203095], [1516808580000, 0.016019, 0.016089, 0.016015, 0.016069, 31.42481148], [1516808640000, 0.016069, 0.016069, 0.01600789, 0.01600789, 5.91143902], [1516808700000, 0.016015, 0.01603704, 0.016, 0.016015, 56.87726981], [1516808760000, 0.01603704, 0.01603704, 0.01599, 0.01599, 16.62699687], [1516808820000, 0.01599, 0.01599, 0.01597361, 0.01599, 15.84913235], [1516808880000, 0.01599, 0.01599, 0.01596, 0.01597361, 5.96687409], [1516808940000, 0.01597361, 0.01597361, 0.015953, 0.01596, 41.5357962], [1516809000000, 0.015953, 0.01596, 0.01591213, 0.015953, 52.65453194], [1516809060000, 0.015953, 0.015953, 0.01595299, 0.015953, 18.01621241], [1516809120000, 0.015953, 0.01597361, 0.015953, 0.01597361, 192.12166379], [1516809180000, 0.01597361, 0.016015, 0.01597, 0.016015, 183.92151452], [1516809240000, 0.016015, 0.01607559, 0.016015, 0.016069, 85.27281139], [1516809300000, 0.016069, 0.0161, 0.01604101, 0.01607202, 36.79920259], [1516809360000, 0.01608998, 0.01612, 0.01608998, 0.01612, 25.3311431], [1516809420000, 0.01612, 0.01612, 0.0161115, 0.0161115, 16.62312736], [1516809480000, 0.0161115, 0.01612, 0.0161115, 0.01612, 21.77911796], [1516809540000, 0.01611152, 0.01612, 0.01611152, 0.01611999, 15.92297783], [1516809600000, 0.01611999, 0.01612, 0.01611999, 0.01612, 10.07357192], [1516809660000, 0.01612, 0.01612, 0.0161115, 0.01611152, 8.41278782], [1516809720000, 0.0161115, 0.01611999, 0.0161115, 0.0161115, 17.36607867], [1516809780000, 0.01611967, 0.01611967, 0.0161115, 0.01611935, 8.9836889], [1516809840000, 0.01611967, 0.01611999, 0.0161115, 0.01611999, 39.40347388], [1516809900000, 0.01611999, 0.01611999, 0.01611935, 0.01611999, 7.6873297], [1516809960000, 0.01611999, 0.01612, 0.01611999, 0.01611999, 52.0536323], [1516810020000, 0.01612, 0.01612, 0.01611999, 0.01612, 49.62933649], [1516810080000, 0.01612, 0.01612, 0.01611999, 0.01612, 37.77107195], [1516810140000, 0.01612, 0.01612, 0.01611999, 0.01612, 11.48746108], [1516810200000, 0.01611999, 0.01612, 0.01611999, 0.01612, 9.06422147], [1516810260000, 0.01612, 0.01612, 0.01611999, 0.01611999, 49.76256739], [1516810320000, 0.01611999, 0.01611999, 0.01611152, 0.01611999, 8.69765058], [1516810380000, 0.01611999, 0.01611999, 0.01611152, 0.01611999, 4.89666165], [1516810440000, 0.01611999, 0.01611999, 0.01611999, 0.01611999, 7.09835979], [1516810500000, 0.01611999, 0.01611999, 0.01611151, 0.01611999, 1.37755422], [1516810560000, 0.01611999, 0.01611999, 0.01611151, 0.01611358, 1.89294887], [1516810620000, 0.01611358, 0.01611999, 0.01611151, 0.01611999, 51.04781316], [1516810680000, 0.01611996, 0.01611996, 0.01602421, 0.01611358, 22.64397016], [1516810740000, 0.01602736, 0.01611358, 0.01602736, 0.01611358, 32.70367138], [1516810800000, 0.01611358, 0.01611358, 0.01611358, 0.01611358, 9.6936455], [1516810860000, 0.01611358, 0.01611358, 0.01611358, 0.01611358, 2.59434301], [1516810920000, 0.01611358, 0.01611358, 0.0161, 0.0161, 8.33079748], [1516810980000, 0.0161, 0.01611358, 0.01605771, 0.0161, 55.40968982], [1516811040000, 0.0161, 0.01611999, 0.01609, 0.01611999, 147.15608776], [1516811100000, 0.01611995, 0.01611995, 0.01609, 0.01611358, 25.65342422], [1516811160000, 0.01611358, 0.01611358, 0.016093, 0.01611358, 27.60336671], [1516811220000, 0.016093, 0.01611358, 0.01609, 0.01609, 45.99144341], [1516811280000, 0.01609, 0.01609001, 0.01604278, 0.01605301, 72.06941601], [1516811340000, 0.01606204, 0.01609001, 0.01606204, 0.01609, 12.21474456], [1516811400000, 0.01608961, 0.01609001, 0.01608961, 0.01608961, 13.76588759], [1516811460000, 0.01604579, 0.01608961, 0.01604579, 0.01606961, 23.5949337], [1516811520000, 0.0160444, 0.01608961, 0.0160444, 0.01608961, 16.4390526], [1516811580000, 0.01606961, 0.01606961, 0.01605265, 0.01606961, 10.60113702], [1516811640000, 0.01606961, 0.01609, 0.0160398, 0.01603981, 96.18261657], [1516811700000, 0.01609001, 0.01609003, 0.01603979, 0.01609001, 29.28845825], [1516811760000, 0.01609001, 0.0161159, 0.01603978, 0.01603978, 23.46902561], [1516811820000, 0.01609, 0.01609, 0.01609, 0.01609, 2.2146085], [1516811880000, 0.01609, 0.01609, 0.01600331, 0.01600501, 102.26661483], [1516811940000, 0.01604, 0.01609, 0.01604, 0.01609, 5.91934214], [1516812000000, 0.01609, 0.01609, 0.01604, 0.01604, 10.14560046], [1516812060000, 0.01608999, 0.01608999, 0.016005, 0.01604, 13.33470155], [1516812120000, 0.01604, 0.01608999, 0.01604, 0.01608998, 13.1853784], [1516812180000, 0.01608998, 0.01608998, 0.01604, 0.01604, 2.53959869], [1516812240000, 0.01608997, 0.01608998, 0.01604, 0.01604, 4.44544485], [1516812300000, 0.01608998, 0.01608998, 0.01604, 0.01604, 3.48565741], [1516812360000, 0.01608997, 0.01608998, 0.01608995, 0.01608997, 2.83572349], [1516812420000, 0.01608998, 0.01608998, 0.01604, 0.01608998, 7.73921382], [1516812480000, 0.01608998, 0.01608998, 0.01600501, 0.01608997, 304.4678122], [1516812540000, 0.01608997, 0.01608998, 0.01600505, 0.01600505, 9.97074116], [1516812600000, 0.0160899, 0.0160899, 0.01600511, 0.01608987, 230.68292766], [1516812660000, 0.01608986, 0.01608987, 0.01601875, 0.01601876, 5.05999104], [1516812720000, 0.01601876, 0.01608987, 0.01600984, 0.01608984, 9.43064502], [1516812780000, 0.0160188, 0.01608986, 0.01600984, 0.0160188, 59.36982918], [1516812840000, 0.01608985, 0.01608997, 0.0160188, 0.0160895, 55.694057], [1516812900000, 0.0160188, 0.0160895, 0.01600511, 0.0160188, 12.4581047], [1516812960000, 0.0160188, 0.0160188, 0.01600512, 0.0160178, 37.21604975], [1516813020000, 0.0160178, 0.01608995, 0.01601003, 0.01601201, 44.96717887], [1516813080000, 0.01608995, 0.01608995, 0.0160895, 0.01608995, 19.27036145], [1516813140000, 0.01608995, 0.01608995, 0.01601201, 0.01601201, 8.19548365], [1516813200000, 0.01607, 0.01609, 0.01601201, 0.01609, 63.67146574], [1516813260000, 0.01609, 0.0161159, 0.01609, 0.01609, 24.30741451], [1516813320000, 0.0161159, 0.0161159, 0.01609, 0.0161128, 22.60330616], [1516813380000, 0.01609, 0.0161128, 0.01609, 0.01611199, 25.29276637], [1516813440000, 0.01607, 0.01611199, 0.0160124, 0.01611199, 79.16143187], [1516813500000, 0.01611199, 0.01611199, 0.0161119, 0.01611198, 70.62745372], [1516813560000, 0.01602265, 0.01611198, 0.01601242, 0.01611198, 55.40150049], [1516813620000, 0.01611198, 0.01611198, 0.01601281, 0.01601285, 5.56272939], [1516813680000, 0.01611198, 0.01611198, 0.01611198, 0.01611198, 11.58414652], [1516813740000, 0.01611198, 0.01611198, 0.01601406, 0.01601503, 15.98568488], [1516813800000, 0.01602528, 0.01614149, 0.01602528, 0.01614149, 152.93327328], [1516813860000, 0.01614149, 0.01614149, 0.01614149, 0.01614149, 19.64557987], [1516813920000, 0.01614149, 0.01614149, 0.01614149, 0.01614149, 22.27189774], [1516813980000, 0.01614149, 0.01617, 0.01607501, 0.01616511, 108.36576536], [1516814040000, 0.01616511, 0.01617192, 0.01604839, 0.016167, 127.94328427], [1516814100000, 0.016167, 0.01617192, 0.01605807, 0.01617189, 20.33108782], [1516814160000, 0.01617179, 0.01617189, 0.01605903, 0.01605903, 5.66685406], [1516814220000, 0.01617169, 0.01617169, 0.01617169, 0.01617169, 0.09780917], [1516814280000, 0.01617, 0.01617169, 0.01605906, 0.01605906, 8.6585238], [1516814340000, 0.01616988, 0.01616988, 0.0161, 0.01616978, 8.41660216], [1516814400000, 0.01616976, 0.01616978, 0.0161, 0.01616976, 28.44065918], [1516814460000, 0.01616966, 0.01617189, 0.01616964, 0.01616964, 23.12033906], [1516814520000, 0.01614, 0.01616956, 0.0161, 0.01610001, 7.27710888], [1516814580000, 0.01610001, 0.0161072, 0.0161, 0.016104, 5.71859892], [1516814640000, 0.01610399, 0.016104, 0.01610001, 0.016104, 1.33176423], [1516814700000, 0.016104, 0.0161072, 0.0161, 0.0161072, 38.93350689], [1516814760000, 0.016104, 0.016169, 0.016104, 0.016104, 4.69379288], [1516814820000, 0.016104, 0.01617189, 0.0161, 0.0161, 41.95319249], [1516814880000, 0.01611199, 0.01611199, 0.01611199, 0.01611199, 0.9287], [1516814940000, 0.01611199, 0.01611199, 0.0161, 0.0161, 26.8094301], [1516815000000, 0.0161, 0.01617179, 0.0161, 0.01617179, 26.59296599], [1516815060000, 0.01617169, 0.01617169, 0.01605906, 0.01605915, 27.10707535], [1516815120000, 0.01616193, 0.01616193, 0.01605903, 0.01614998, 5.32752314], [1516815180000, 0.01614998, 0.01617011, 0.01602116, 0.01602116, 37.71018229], [1516815240000, 0.0161, 0.0161, 0.01603111, 0.01603112, 4.54018741], [1516815300000, 0.01605903, 0.01616511, 0.01605903, 0.01616511, 6.54707078], [1516815360000, 0.01616511, 0.0161701, 0.01605922, 0.01605922, 14.0497354], [1516815420000, 0.01605932, 0.01617005, 0.01605932, 0.01616602, 13.45460744], [1516815480000, 0.01610303, 0.01616601, 0.01610303, 0.01610303, 12.5625489], [1516815540000, 0.01610303, 0.01610303, 0.01605934, 0.01605934, 8.95230239], [1516815600000, 0.01605933, 0.01616515, 0.01605933, 0.01605934, 11.08762421], [1516815660000, 0.01610301, 0.01616325, 0.01605303, 0.01605935, 13.23769333], [1516815720000, 0.01616315, 0.01616315, 0.01605934, 0.01605935, 11.26083], [1516815780000, 0.01606201, 0.01616299, 0.01606201, 0.01616263, 60.02816118], [1516815840000, 0.01616246, 0.01616495, 0.01605939, 0.01605939, 17.1029337], [1516815900000, 0.0161, 0.01616693, 0.01605935, 0.01608167, 28.12532814], [1516815960000, 0.01608167, 0.01616661, 0.01605938, 0.01616661, 53.24021698], [1516816020000, 0.016162, 0.016162, 0.01609776, 0.016098, 7.76582786], [1516816080000, 0.01616167, 0.01616167, 0.0161, 0.01616104, 4.275846], [1516816140000, 0.01616136, 0.01616136, 0.0161001, 0.016161, 32.85127697], [1516816200000, 0.01616001, 0.01616136, 0.01610002, 0.01616136, 8.66588552], [1516816260000, 0.01616001, 0.0161666, 0.01616001, 0.01616001, 48.15387101], [1516816320000, 0.01616001, 0.01616659, 0.01616001, 0.01616659, 13.30984571], [1516816380000, 0.01616001, 0.0161666, 0.01616001, 0.0161666, 44.131605], [1516816440000, 0.01616659, 0.0161666, 0.01605294, 0.01605294, 133.73769421], [1516816500000, 0.01616656, 0.01616656, 0.01602247, 0.01602388, 206.67326929], [1516816560000, 0.01602412, 0.01615697, 0.01602412, 0.01615697, 306.91614571], [1516816620000, 0.01615699, 0.016157, 0.0160312, 0.01603131, 174.10144714], [1516816680000, 0.01603141, 0.0161519, 0.01603141, 0.01614694, 1.69616685], [1516816740000, 0.01614693, 0.01614694, 0.01614655, 0.01614655, 2.77741889], [1516816800000, 0.01603725, 0.01614653, 0.01603725, 0.01614653, 12.93801021], [1516816860000, 0.01614653, 0.01614653, 0.01603747, 0.0161465, 31.91093514], [1516816920000, 0.0161465, 0.01614652, 0.01604204, 0.0161, 18.05216725], [1516816980000, 0.0161, 0.01614652, 0.0161, 0.0161465, 7.40111946], [1516817040000, 0.01614649, 0.0161465, 0.01605, 0.01605, 71.00170024], [1516817100000, 0.01605, 0.01614649, 0.01605, 0.01614649, 55.82837411], [1516817160000, 0.016135, 0.01613699, 0.016125, 0.016125, 7.57378426], [1516817220000, 0.01605, 0.016125, 0.01605, 0.01612499, 2.52276757], [1516817280000, 0.01612499, 0.01612499, 0.01612499, 0.01612499, 13.37], [1516817340000, 0.016124, 0.016124, 0.016124, 0.016124, 1.36158936], [1516817400000, 0.01605051, 0.01612397, 0.01605051, 0.01612397, 9.37310807], [1516817460000, 0.01610051, 0.01612363, 0.01610051, 0.01610051, 24.42355927], [1516817520000, 0.01605052, 0.01612, 0.01605052, 0.01605053, 10.81439301], [1516817580000, 0.01605053, 0.01605054, 0.01605052, 0.01605053, 4.13428163], [1516817640000, 0.01605053, 0.01606, 0.01605052, 0.01606, 55.81741851], [1516817700000, 0.016099, 0.016099, 0.01609899, 0.01609899, 7.13421293], [1516817760000, 0.01609896, 0.01609898, 0.01609896, 0.01609898, 4.30798949], [1516817820000, 0.01606015, 0.01609899, 0.01606, 0.01606, 5.68666214], [1516817880000, 0.01606, 0.01606004, 0.01606, 0.01606004, 8.90506744], [1516817940000, 0.01606, 0.01606004, 0.01606, 0.01606001, 16.00829093], [1516818000000, 0.01606001, 0.01609894, 0.01606, 0.01606, 67.33463296], [1516818060000, 0.01606, 0.01606001, 0.01605051, 0.01605051, 27.99457836], [1516818120000, 0.01606, 0.01606, 0.01605051, 0.01606, 1.67507685], [1516818180000, 0.01605052, 0.01605052, 0.01605052, 0.01605052, 5.40766795], [1516818240000, 0.01605052, 0.01605052, 0.0160505, 0.0160505, 3.80803787], [1516818300000, 0.0160505, 0.01605052, 0.0160505, 0.0160505, 8.11330292], [1516818360000, 0.01604, 0.0160505, 0.01602461, 0.01604, 20.26915444], [1516818420000, 0.016025, 0.0160505, 0.0160246, 0.01604, 39.12938979], [1516818480000, 0.01604, 0.0160505, 0.01604, 0.0160505, 1.89271434], [1516818540000, 0.016039, 0.0160505, 0.016039, 0.0160505, 8.48875956], [1516818600000, 0.016039, 0.0160505, 0.01602461, 0.01605, 7.73426425], [1516818660000, 0.01605, 0.01605, 0.01602464, 0.016039, 11.17510633], [1516818720000, 0.016039, 0.016039, 0.0160246, 0.016039, 17.26416493], [1516818780000, 0.016039, 0.0160505, 0.01602461, 0.0160505, 53.73846071], [1516818840000, 0.016039, 0.0160505, 0.01602461, 0.0160505, 11.83929754], [1516818900000, 0.0160505, 0.01608, 0.0160505, 0.01608, 31.76015901], [1516818960000, 0.01606001, 0.01608, 0.01605952, 0.01607, 11.32293317], [1516819020000, 0.01608, 0.01608, 0.01603004, 0.01607, 23.02528954], [1516819080000, 0.01607, 0.01609895, 0.01607, 0.01608, 46.66456806], [1516819140000, 0.01608, 0.01609895, 0.01608, 0.01609, 6.60609638], [1516819200000, 0.01609, 0.01609, 0.01603032, 0.01609, 25.47151877], [1516819260000, 0.01609, 0.01609, 0.01608522, 0.01608554, 10.89910621], [1516819320000, 0.01608968, 0.01609, 0.01608536, 0.01608536, 9.31880226], [1516819380000, 0.01608534, 0.01608536, 0.01603014, 0.01603014, 27.72342041], [1516819440000, 0.01608, 0.01608554, 0.01603014, 0.01608554, 20.70787195], [1516819500000, 0.01609, 0.01609, 0.01608554, 0.01608554, 6.18990636], [1516819560000, 0.016089, 0.016089, 0.01608554, 0.01608554, 6.07437219], [1516819620000, 0.016089, 0.01609, 0.01604616, 0.016089, 32.32751742], [1516819680000, 0.016089, 0.01609, 0.01608884, 0.016089, 46.66550576], [1516819740000, 0.01604616, 0.016089, 0.01604616, 0.01604616, 10.16296531], [1516819800000, 0.016089, 0.01609, 0.016089, 0.016089, 11.91580361], [1516819860000, 0.0160899, 0.01609895, 0.0160899, 0.016095, 5.06465189], [1516819920000, 0.01609895, 0.016137, 0.016095, 0.016095, 55.78032125], [1516819980000, 0.016095, 0.01612999, 0.016095, 0.016095, 8.76708988], [1516820040000, 0.01612998, 0.016136, 0.01604616, 0.016095, 33.19443674], [1516820100000, 0.016095, 0.01612995, 0.01603017, 0.01612995, 29.51468468], [1516820160000, 0.01606545, 0.01611999, 0.01606545, 0.01611999, 3.06081492], [1516820220000, 0.01606545, 0.01606545, 0.01604001, 0.01606545, 17.52559219], [1516820280000, 0.01606545, 0.01606545, 0.01606545, 0.01606545, 35.59713909], [1516820340000, 0.01606545, 0.01606545, 0.01606545, 0.01606545, 1.055856], [1516820400000, 0.01607, 0.01611999, 0.01606545, 0.01611999, 2.23233617], [1516820460000, 0.01606545, 0.01611999, 0.01604009, 0.01611999, 27.07522827], [1516820580000, 0.01611998, 0.01611998, 0.01604009, 0.01604012, 11.76556437], [1516820640000, 0.01604012, 0.01604013, 0.01604012, 0.01604013, 16.6674546], [1516820700000, 0.01604014, 0.01611997, 0.01604014, 0.0161199, 2.84292456], [1516820760000, 0.0161199, 0.01611998, 0.01604042, 0.01604141, 15.71609858], [1516820820000, 0.01604141, 0.0160425, 0.01604141, 0.0160425, 21.7514655], [1516820880000, 0.0161199, 0.0161199, 0.01604251, 0.0161199, 4.94910189], [1516820940000, 0.01611989, 0.01611989, 0.01611989, 0.01611989, 2.12627746], [1516821000000, 0.01604253, 0.0161199, 0.01604253, 0.01611989, 20.430296], [1516821060000, 0.01611989, 0.0161199, 0.01611989, 0.01611989, 15.93125256], [1516821120000, 0.016115, 0.016115, 0.01604251, 0.016115, 18.63881211], [1516821180000, 0.016115, 0.01611988, 0.016115, 0.01611988, 11.63509137], [1516821240000, 0.016115, 0.016115, 0.016115, 0.016115, 13.78510208], [1516821300000, 0.016115, 0.0161199, 0.016115, 0.01611988, 36.10020997], [1516821360000, 0.01611988, 0.01611988, 0.01611988, 0.01611988, 12.38920697], [1516821420000, 0.0161198, 0.0161198, 0.01606, 0.01606, 6.46717162], [1516821480000, 0.0161, 0.01611498, 0.01606, 0.01606, 4.41934804], [1516821540000, 0.01611498, 0.01611498, 0.01606, 0.01611494, 16.26469849], [1516821600000, 0.01611491, 0.01611492, 0.01606, 0.01606007, 20.06987899], [1516821660000, 0.01606008, 0.01611487, 0.01606008, 0.01610996, 0.41887439], [1516821720000, 0.01606008, 0.01611486, 0.01606007, 0.01611486, 53.86946672], [1516821780000, 0.01606007, 0.01611486, 0.01606007, 0.01611486, 16.48222299], [1516821840000, 0.01606001, 0.0161148, 0.01606, 0.01611479, 18.1335743], [1516821900000, 0.01611479, 0.01611479, 0.0160425, 0.01604251, 49.79257539], [1516821960000, 0.01604251, 0.01604251, 0.01604042, 0.01604042, 17.66501463], [1516822020000, 0.01604041, 0.01605, 0.01604041, 0.0160425, 30.39696041], [1516822080000, 0.0160425, 0.01605, 0.01604009, 0.01605, 38.65592345], [1516822140000, 0.01605, 0.01605, 0.0160425, 0.0160425, 1.84474503], [1516822200000, 0.01604009, 0.0160425, 0.01603508, 0.0160425, 12.31626743], [1516822260000, 0.01603508, 0.0160425, 0.01603507, 0.0160425, 34.45418237], [1516822320000, 0.0160425, 0.01605, 0.01603507, 0.01605, 24.75832078], [1516822380000, 0.01605, 0.01605, 0.01603507, 0.01603507, 10.64761454], [1516822440000, 0.0160425, 0.0160425, 0.01603025, 0.01603025, 21.12947863], [1516822500000, 0.01603507, 0.0160425, 0.016016, 0.0160425, 67.28139494], [1516822560000, 0.016016, 0.01604, 0.016016, 0.01604, 18.30025311], [1516822620000, 0.01604, 0.01604, 0.01603999, 0.01603999, 1.29594625], [1516822680000, 0.01602801, 0.01604, 0.016028, 0.01604, 6.98742894], [1516822740000, 0.01604, 0.01604, 0.016016, 0.016035, 68.20370362], [1516822800000, 0.01604, 0.01604, 0.016035, 0.0160355, 11.80788551], [1516822860000, 0.016039, 0.01604, 0.0160355, 0.0160355, 3.53870824], [1516822920000, 0.016039, 0.016039, 0.0160355, 0.0160355, 0.9191466], [1516822980000, 0.016039, 0.01604, 0.0160355, 0.0160355, 35.7592654], [1516823040000, 0.016036, 0.016039, 0.016036, 0.016039, 1.13203905], [1516823100000, 0.016036, 0.01604, 0.0160355, 0.016039, 7.62115866], [1516823160000, 0.016039, 0.01604, 0.016035, 0.016035, 28.61720269], [1516823220000, 0.01604, 0.01604, 0.016035, 0.016039, 11.53491], [1516823280000, 0.016039, 0.01604, 0.016039, 0.01604, 2.20377249], [1516823340000, 0.01604, 0.01604, 0.016035, 0.016039, 40.14202108], [1516823400000, 0.016039, 0.016039, 0.016035, 0.016039, 39.28394581], [1516823460000, 0.016039, 0.016039, 0.016039, 0.016039, 12.27563439], [1516823520000, 0.016039, 0.01605, 0.016039, 0.01605, 16.10702758], [1516823580000, 0.01605, 0.01609, 0.016035, 0.01609, 14.41876914], [1516823640000, 0.01609, 0.01609, 0.016035, 0.01609, 4.19501528], [1516823700000, 0.01609, 0.01609, 0.01609, 0.01609, 3.40313827], [1516823760000, 0.01609, 0.0161, 0.016035, 0.01609, 10.84701976], [1516823820000, 0.01609, 0.01609, 0.016035, 0.016035, 8.03770616], [1516823880000, 0.016035, 0.01605, 0.016016, 0.016016, 18.56249604], [1516823940000, 0.01605, 0.016075, 0.01605, 0.01605, 10.82599545], [1516824000000, 0.01604, 0.01609, 0.0160181, 0.0160181, 18.08529671], [1516824060000, 0.01608968, 0.0161, 0.0160181, 0.0161, 16.93727917], [1516824120000, 0.0161, 0.0161, 0.01601601, 0.01607391, 36.5260051], [1516824180000, 0.01601601, 0.01605, 0.01601601, 0.01601601, 3.11537051], [1516824240000, 0.01605, 0.01608998, 0.01605, 0.01608986, 17.97884941], [1516824300000, 0.01602601, 0.01609, 0.01602601, 0.0160889, 3.9072414], [1516824360000, 0.0160889, 0.0160889, 0.01602601, 0.01602601, 12.42569624], [1516824420000, 0.01602601, 0.01602601, 0.01601601, 0.01602601, 48.27718859], [1516824480000, 0.01601602, 0.01602601, 0.01601601, 0.01602601, 54.21963272], [1516824540000, 0.01601604, 0.0160261, 0.016016, 0.0160261, 42.52105278], [1516824600000, 0.01605475, 0.01605475, 0.0160261, 0.01605475, 6.67824766], [1516824660000, 0.01605475, 0.01608, 0.01602601, 0.0160261, 23.63237653], [1516824720000, 0.01608, 0.01608, 0.0160261, 0.0160261, 7.25616165], [1516824780000, 0.0160261, 0.016035, 0.01601601, 0.01602396, 25.58489578], [1516824840000, 0.01602396, 0.016081, 0.01602396, 0.016081, 36.12328675], [1516824900000, 0.01603, 0.016081, 0.01603, 0.016081, 15.35592853], [1516824960000, 0.016081, 0.016081, 0.01608098, 0.01608098, 14.42680713], [1516825020000, 0.01608098, 0.01608098, 0.01605, 0.01605, 8.94659768], [1516825080000, 0.01608098, 0.016081, 0.01605, 0.01606, 51.71485827], [1516825140000, 0.01608098, 0.016081, 0.01606, 0.01606, 3.06050654], [1516825200000, 0.0160804, 0.016081, 0.0160601, 0.016081, 6.1769934], [1516825260000, 0.016081, 0.016088, 0.0160601, 0.016088, 18.41766779], [1516825320000, 0.016088, 0.01609, 0.016088, 0.01609, 31.71593213], [1516825380000, 0.01608101, 0.01609, 0.01608101, 0.01608433, 10.3073628], [1516825440000, 0.01609, 0.01609, 0.01609, 0.01609, 10.12987391], [1516825500000, 0.01608999, 0.01608999, 0.01608999, 0.01608999, 45.81312621], [1516825560000, 0.01608999, 0.01609, 0.01608505, 0.01608505, 40.04671562], [1516825620000, 0.01608505, 0.016095, 0.016083, 0.016083, 46.51825611], [1516825680000, 0.01608555, 0.016095, 0.01608301, 0.016084, 45.53666946], [1516825740000, 0.016084, 0.0161, 0.01608301, 0.016095, 39.11226677], [1516825800000, 0.0161, 0.0161, 0.016095, 0.016095, 30.37535352], [1516825860000, 0.016095, 0.01609999, 0.016083, 0.016083, 11.17260233], [1516825920000, 0.01609998, 0.01609999, 0.016083, 0.016083, 13.19585585], [1516825980000, 0.016095, 0.0161, 0.016095, 0.0161, 28.03489835], [1516826040000, 0.01609999, 0.01611, 0.016083, 0.01611, 45.03480564], [1516826100000, 0.01611399, 0.01612999, 0.016083, 0.01612999, 65.79342551], [1516826160000, 0.01612999, 0.01612999, 0.01608301, 0.01612999, 16.5335377], [1516826220000, 0.01612999, 0.0161405, 0.016083, 0.01608301, 41.68210666], [1516826280000, 0.01611399, 0.0161465, 0.01608, 0.01609, 27.77788615], [1516826340000, 0.01609, 0.01614, 0.01609, 0.0161, 13.09627698], [1516826400000, 0.01614, 0.01614, 0.01608001, 0.01608001, 62.38477213], [1516826460000, 0.01614, 0.01614023, 0.01609003, 0.01614023, 80.59891038], [1516826520000, 0.01614023, 0.01614023, 0.01609003, 0.01609003, 12.8672529], [1516826580000, 0.01614023, 0.0161465, 0.01609003, 0.01614023, 222.32723401], [1516826640000, 0.01614023, 0.01614346, 0.01614023, 0.01614023, 35.75171202], [1516826700000, 0.01614023, 0.01614346, 0.01614023, 0.01614042, 12.38848441], [1516826760000, 0.01614042, 0.01614346, 0.01614042, 0.01614042, 56.50118036], [1516826820000, 0.01614346, 0.0161465, 0.01614042, 0.01614346, 5.05535642], [1516826880000, 0.01614346, 0.0161465, 0.01614346, 0.01614346, 16.64483197], [1516826940000, 0.0161465, 0.01615, 0.01614346, 0.01614346, 10.47819471], [1516827000000, 0.01614346, 0.0161599, 0.01614346, 0.01615113, 59.90450193], [1516827060000, 0.01615113, 0.01615113, 0.01615113, 0.01615113, 40.62749492], [1516827120000, 0.01615113, 0.01615513, 0.01615113, 0.01615513, 4.96229275], [1516827180000, 0.01615513, 0.01615513, 0.01615113, 0.01615113, 7.5266501], [1516827240000, 0.01615513, 0.0161599, 0.01615113, 0.01615113, 29.68060415], [1516827300000, 0.0161599, 0.0161599, 0.01615113, 0.01615113, 21.50536231], [1516827360000, 0.0161599, 0.01616, 0.01615989, 0.0161599, 3.80053524], [1516827420000, 0.0161599, 0.0161599, 0.01615989, 0.01615989, 21.75873661], [1516827480000, 0.01615113, 0.0161599, 0.01614346, 0.0161599, 35.48541525], [1516827540000, 0.01615, 0.0161599, 0.01614346, 0.01614346, 19.71128902], [1516827600000, 0.01614346, 0.0161599, 0.01614346, 0.01614346, 8.20129643], [1516827660000, 0.01614346, 0.01614346, 0.01614346, 0.01614346, 20.87887747], [1516827720000, 0.01614346, 0.01614346, 0.01609012, 0.01614345, 6.72022265], [1516827780000, 0.01614343, 0.01614343, 0.01608013, 0.01609002, 5.56239253], [1516827840000, 0.01609002, 0.01614305, 0.01609002, 0.01614303, 19.43732264], [1516827900000, 0.01614303, 0.01614305, 0.01609002, 0.01609002, 4.42237715], [1516827960000, 0.01609002, 0.01614273, 0.01609002, 0.01614273, 5.55163698], [1516828020000, 0.01614273, 0.01614273, 0.01609002, 0.01609002, 6.86838099], [1516828080000, 0.01609002, 0.01614138, 0.01609002, 0.01609002, 13.10871783], [1516828140000, 0.01614106, 0.01614138, 0.01609002, 0.01613968, 13.66088789], [1516828200000, 0.01609002, 0.01613668, 0.01609002, 0.01609002, 18.833069], [1516828260000, 0.01609002, 0.01611, 0.0160602, 0.0160602, 56.60059122], [1516828320000, 0.01608, 0.0161, 0.0160602, 0.01609002, 118.22828546], [1516828380000, 0.01609002, 0.0161, 0.0160602, 0.01609968, 33.49331114], [1516828440000, 0.01609002, 0.01609002, 0.01606023, 0.01606023, 11.26192649], [1516828500000, 0.01606023, 0.01606023, 0.0160602, 0.01606023, 47.3370394], [1516828560000, 0.01606023, 0.0160897, 0.01606023, 0.0160897, 25.33179672], [1516828620000, 0.01609002, 0.01609002, 0.01606023, 0.0160897, 1.5786663], [1516828680000, 0.01608968, 0.01609002, 0.01606023, 0.01609002, 11.71122692], [1516828740000, 0.01608968, 0.01609002, 0.01608968, 0.01609002, 16.05290404], [1516828800000, 0.01609001, 0.01611, 0.01606021, 0.01606021, 39.07073597], [1516828860000, 0.01606021, 0.01606021, 0.0160602, 0.01606021, 25.88567441], [1516828920000, 0.01606021, 0.01606021, 0.01603052, 0.01603052, 43.35238467], [1516828980000, 0.01606021, 0.01606021, 0.01606021, 0.01606021, 0.39691001], [1516829040000, 0.01611, 0.01614025, 0.01606025, 0.01614025, 15.47717692], [1516829100000, 0.0161, 0.01614013, 0.01603031, 0.01606025, 24.4449357], [1516829160000, 0.01603034, 0.01606025, 0.01603034, 0.01606025, 1.01410266], [1516829220000, 0.01603034, 0.01603035, 0.01603034, 0.01603035, 4.36905524], [1516829280000, 0.01606025, 0.01606025, 0.01603036, 0.01606025, 69.56260274], [1516829340000, 0.01603037, 0.01606025, 0.01603037, 0.01606025, 1.79701142], [1516829400000, 0.01606, 0.01606, 0.01603036, 0.01603036, 31.73269043], [1516829460000, 0.01603036, 0.01603036, 0.01603027, 0.01603036, 9.16966334], [1516829520000, 0.01603036, 0.01603036, 0.01603028, 0.01603029, 4.17787098], [1516829580000, 0.01603029, 0.01603036, 0.01603028, 0.01603028, 28.20815863], [1516829640000, 0.01603027, 0.01603027, 0.01603, 0.01603027, 17.86400632], [1516829700000, 0.01603, 0.01603037, 0.01603, 0.01603037, 76.46945953], [1516829760000, 0.01603027, 0.01609999, 0.01603001, 0.01609999, 35.84479215], [1516829820000, 0.01606025, 0.01609999, 0.01606025, 0.01606025, 31.3439097], [1516829880000, 0.01606025, 0.0161, 0.01606025, 0.0161, 38.55590072], [1516829940000, 0.0161, 0.0161, 0.01608389, 0.01608389, 27.25983809], [1516830000000, 0.01608388, 0.01608388, 0.01606025, 0.01608388, 12.282018], [1516830060000, 0.01606025, 0.01608388, 0.01606025, 0.01606026, 6.37604222], [1516830120000, 0.01606026, 0.01606026, 0.01603, 0.01606025, 27.61351213], [1516830180000, 0.01606025, 0.01606025, 0.01601286, 0.01601286, 30.26702834], [1516830240000, 0.01603, 0.01603, 0.01601286, 0.01603, 54.95129371], [1516830300000, 0.01603, 0.01606026, 0.01603, 0.01606026, 20.51245939], [1516830360000, 0.01606026, 0.01607633, 0.01603, 0.01607633, 24.08391402], [1516830420000, 0.01607633, 0.01608358, 0.01603001, 0.01603001, 9.57065673], [1516830480000, 0.01603001, 0.0160839, 0.01603001, 0.01608355, 38.50133666], [1516830540000, 0.01608388, 0.01613971, 0.01608355, 0.01608355, 79.35047439], [1516830600000, 0.01608355, 0.01608388, 0.01608355, 0.01608388, 8.67980132], [1516830660000, 0.01608355, 0.01612376, 0.01608355, 0.01608355, 23.14700299], [1516830720000, 0.01608355, 0.01612376, 0.01603007, 0.01603007, 28.05641138], [1516830780000, 0.01612356, 0.0161397, 0.01603014, 0.01612356, 7.98440203], [1516830840000, 0.01612356, 0.01613214, 0.01612356, 0.01612356, 35.511404], [1516830900000, 0.01612356, 0.01613214, 0.01603023, 0.01612356, 65.8909854], [1516830960000, 0.01604001, 0.01613214, 0.01604001, 0.01604014, 16.46669592], [1516831020000, 0.01613182, 0.01613214, 0.01604966, 0.01604966, 49.20741147], [1516831080000, 0.01604966, 0.0161397, 0.01604966, 0.01613214, 8.91775675], [1516831140000, 0.01605804, 0.01613214, 0.01605804, 0.01605804, 98.30814106], [1516831200000, 0.01613204, 0.01613971, 0.01606, 0.01613971, 68.672114], [1516831260000, 0.01613971, 0.01614024, 0.01606, 0.01609, 19.10450497], [1516831320000, 0.01614, 0.01614, 0.01613971, 0.01613973, 27.10690993], [1516831380000, 0.01613975, 0.01614, 0.01606, 0.01612, 15.94793717], [1516831440000, 0.01612, 0.01612, 0.01606, 0.01606001, 25.84305372], [1516831500000, 0.01612, 0.0161201, 0.01606001, 0.0161201, 26.02068788], [1516831560000, 0.01614, 0.01614, 0.01613, 0.01614, 6.31104939], [1516831620000, 0.01613, 0.01614, 0.01612, 0.01612, 46.47539217], [1516831680000, 0.0161397, 0.0161397, 0.01612, 0.01612, 9.23986729], [1516831740000, 0.01612, 0.01614025, 0.01612, 0.01614025, 73.77705752], [1516831800000, 0.01614025, 0.01614998, 0.01614025, 0.01614025, 13.24588034], [1516831860000, 0.01614025, 0.01614085, 0.01614025, 0.01614025, 54.51636252], [1516831920000, 0.01614055, 0.01614085, 0.01614025, 0.01614085, 19.51605647], [1516831980000, 0.01614085, 0.01614085, 0.01608, 0.01614025, 209.98674053], [1516832040000, 0.01608001, 0.01608001, 0.01608001, 0.01608001, 29.70049886], [1516832100000, 0.01608001, 0.01612969, 0.01606001, 0.01612969, 126.85962738], [1516832160000, 0.0160812, 0.01612937, 0.0160812, 0.01612937, 3.25743529], [1516832220000, 0.01612937, 0.01612969, 0.0160812, 0.0161296, 23.51793789], [1516832280000, 0.01608121, 0.0161296, 0.01608121, 0.0161296, 2.77811446], [1516832340000, 0.0161296, 0.0161296, 0.01608204, 0.0161296, 4.3018155], [1516832400000, 0.01608204, 0.0161296, 0.01608204, 0.01612959, 16.43653112], [1516832460000, 0.01612959, 0.01612959, 0.0160812, 0.0160821, 245.16912583], [1516832520000, 0.0161145, 0.01612, 0.0160821, 0.01612, 70.63756547], [1516832580000, 0.01612, 0.01612, 0.01611, 0.01611, 81.10195091], [1516832640000, 0.0160822, 0.01611, 0.01606003, 0.0160822, 24.98810836], [1516832700000, 0.0160822, 0.01612969, 0.0160822, 0.0160822, 91.03476348], [1516832760000, 0.0160822, 0.01612968, 0.01606, 0.01606, 18.12159872], [1516832820000, 0.0160812, 0.0160812, 0.01606, 0.01606, 9.92211231], [1516832880000, 0.01606, 0.0160812, 0.01605804, 0.01606, 12.15588599], [1516832940000, 0.01606, 0.01612499, 0.01605804, 0.01612499, 42.7047273], [1516833000000, 0.01606001, 0.01612499, 0.01606, 0.01606, 15.07743486], [1516833060000, 0.01605804, 0.01612499, 0.01605804, 0.01606001, 0.93686182], [1516833120000, 0.01612969, 0.01612969, 0.01606001, 0.01606001, 2.42019828], [1516833180000, 0.01612499, 0.01612969, 0.01612499, 0.01612969, 2.97272578], [1516833240000, 0.0161, 0.0161, 0.0161, 0.0161, 17.69145151], [1516833300000, 0.0161, 0.01612969, 0.0161, 0.01612807, 4.08143381], [1516833360000, 0.01612888, 0.01612888, 0.0161, 0.01611, 25.79932551], [1516833420000, 0.01612807, 0.01612807, 0.0161, 0.0161, 37.92087567], [1516833480000, 0.0161, 0.01612806, 0.0161, 0.0161, 12.13248117], [1516833540000, 0.01612806, 0.01612806, 0.01610001, 0.01612806, 0.90337271], [1516833600000, 0.01610001, 0.01612807, 0.01610001, 0.01612807, 7.72167685], [1516833660000, 0.01610001, 0.01610001, 0.01610001, 0.01610001, 2.86262077], [1516833720000, 0.01610002, 0.01612969, 0.01610001, 0.01610001, 23.21743348], [1516833780000, 0.01611002, 0.01613346, 0.01610001, 0.01610001, 21.78967307], [1516833840000, 0.01610001, 0.01612969, 0.01610001, 0.01610001, 9.78519388], [1516833900000, 0.01610001, 0.01612968, 0.0161, 0.0161, 89.9808601], [1516833960000, 0.0161, 0.01613345, 0.0161, 0.0161, 85.7198368], [1516834020000, 0.0161, 0.01613, 0.01605, 0.01613, 8.5854076], [1516834080000, 0.0161, 0.0161, 0.01605, 0.01605, 24.43308843], [1516834140000, 0.01605, 0.01609, 0.01605, 0.01609, 31.87561558], [1516834200000, 0.0160899, 0.0160899, 0.01605, 0.01605, 18.30875742], [1516834260000, 0.0160899, 0.0160899, 0.01605, 0.01605002, 5.75592069], [1516834320000, 0.0160899, 0.0161, 0.01605, 0.01605, 17.29477015], [1516834380000, 0.0161, 0.0161, 0.0160899, 0.0160899, 6.82140818], [1516834440000, 0.0160899, 0.0160899, 0.0160423, 0.0160423, 66.08447617], [1516834500000, 0.01608989, 0.01608989, 0.01604229, 0.01608989, 78.14442788], [1516834560000, 0.01604229, 0.0160423, 0.01604229, 0.0160423, 9.65581639], [1516834620000, 0.0160423, 0.0160423, 0.01604025, 0.01604228, 9.03012868], [1516834680000, 0.01604228, 0.01604228, 0.01603025, 0.01604228, 248.76688432], [1516834740000, 0.01603024, 0.01604025, 0.01603024, 0.01604025, 19.20041817], [1516834800000, 0.01604025, 0.01609999, 0.01603027, 0.01603028, 31.35231246], [1516834860000, 0.01609999, 0.0161, 0.01603029, 0.0161, 19.13570763], [1516834920000, 0.01603025, 0.01613659, 0.01603024, 0.01609, 102.27745022], [1516834980000, 0.0161139, 0.01613765, 0.01609, 0.01610977, 98.74797807], [1516835040000, 0.0161259, 0.01613758, 0.01603025, 0.01603025, 33.37487408], [1516835100000, 0.01603025, 0.01613278, 0.01603024, 0.01603024, 11.60200761], [1516835160000, 0.01603025, 0.01612999, 0.01603025, 0.01603025, 38.19809678], [1516835220000, 0.0161104, 0.0161104, 0.01603024, 0.0161104, 6.24971241], [1516835280000, 0.01603024, 0.01603026, 0.01603024, 0.01603026, 3.8517336], [1516835340000, 0.01603026, 0.01607012, 0.01603026, 0.01603026, 11.22136936], [1516835400000, 0.01603026, 0.01605452, 0.01603026, 0.01603026, 1.075], [1516835460000, 0.0161103, 0.0161103, 0.0161101, 0.0161101, 1.3465039], [1516835520000, 0.0161103, 0.0161103, 0.01603026, 0.01611, 7.5952036], [1516835580000, 0.0161099, 0.0161103, 0.01603027, 0.01611021, 19.76947751], [1516835640000, 0.01603027, 0.01611021, 0.01603027, 0.01603027, 4.18673562], [1516835700000, 0.01611021, 0.01613345, 0.01611021, 0.01613345, 24.80507739], [1516835760000, 0.0161279, 0.01615, 0.01604631, 0.01612648, 143.95923393], [1516835820000, 0.01612648, 0.0161278, 0.0160463, 0.01604632, 9.73495606], [1516835880000, 0.0161278, 0.0161278, 0.01604632, 0.01604632, 4.48452279], [1516835940000, 0.01604632, 0.0161278, 0.01604632, 0.0161278, 5.46764964], [1516836000000, 0.01606329, 0.01614999, 0.01604632, 0.01604632, 26.01908275], [1516836060000, 0.01608967, 0.0160998, 0.01604632, 0.0160998, 42.78842223], [1516836120000, 0.01608967, 0.0160998, 0.01604632, 0.01605, 30.31671133], [1516836180000, 0.01604632, 0.01605, 0.01604632, 0.01605, 18.36642203], [1516836240000, 0.01605, 0.01605, 0.01604632, 0.01604632, 30.99554595], [1516836300000, 0.01604632, 0.01605, 0.01604632, 0.01604632, 18.28519417], [1516836360000, 0.01605, 0.01612499, 0.01604632, 0.01604632, 50.02173294], [1516836420000, 0.0161149, 0.0161149, 0.01604632, 0.01604633, 10.66023893], [1516836480000, 0.0161149, 0.0161149, 0.01604636, 0.01604636, 1.85306017], [1516836540000, 0.0161149, 0.0161463, 0.01604635, 0.01604635, 164.58699291], [1516836600000, 0.01610593, 0.01610593, 0.01604635, 0.01604635, 1.91217361], [1516836660000, 0.0160496, 0.0160496, 0.0160496, 0.0160496, 0.99499601], [1516836720000, 0.01610512, 0.01614546, 0.01604636, 0.01610512, 100.58547555], [1516836780000, 0.01614545, 0.01614545, 0.01604635, 0.01604635, 9.43874154], [1516836840000, 0.01610512, 0.01615, 0.01610512, 0.01610512, 65.71181085], [1516836900000, 0.01614993, 0.01614993, 0.01604634, 0.01610512, 20.38827844], [1516836960000, 0.01604635, 0.01610512, 0.01604635, 0.01604636, 7.99104592], [1516837020000, 0.01604635, 0.01604636, 0.01604634, 0.01604634, 20.0078341], [1516837080000, 0.01604634, 0.01604634, 0.01602228, 0.01602228, 125.21337666], [1516837140000, 0.01602228, 0.016041, 0.01601201, 0.016013, 17.99188962], [1516837200000, 0.016013, 0.016036, 0.01601, 0.01601, 59.26877092], [1516837260000, 0.01601299, 0.016013, 0.01600511, 0.01601, 43.01473011], [1516837320000, 0.01601, 0.01601, 0.016005, 0.01601, 51.35757216], [1516837380000, 0.016005, 0.016013, 0.01591001, 0.01591001, 429.77356496], [1516837440000, 0.01593, 0.01597997, 0.01590999, 0.01590999, 105.43560227], [1516837500000, 0.01594996, 0.01597498, 0.01590999, 0.01590999, 14.99706188], [1516837560000, 0.01596499, 0.01596499, 0.01591001, 0.01591003, 2.69369461], [1516837620000, 0.0159275, 0.01597996, 0.01591001, 0.01597996, 169.67612371], [1516837680000, 0.01597996, 0.01597996, 0.01590999, 0.01596246, 76.86445216], [1516837740000, 0.01590999, 0.01596999, 0.01590999, 0.01591, 4.75528689], [1516837800000, 0.01591, 0.01597996, 0.01590999, 0.01593999, 17.0745676], [1516837860000, 0.01596999, 0.01597495, 0.01591004, 0.01594001, 11.2892423], [1516837920000, 0.01597, 0.01597499, 0.01594001, 0.01594001, 44.56598748], [1516837980000, 0.01597995, 0.01597996, 0.01594001, 0.01594001, 29.91380586], [1516838040000, 0.01597995, 0.01597995, 0.01594001, 0.01594001, 6.87109863], [1516838100000, 0.01594001, 0.01594001, 0.01591007, 0.01594001, 10.67179167], [1516838160000, 0.01591514, 0.01594001, 0.01591005, 0.01593001, 13.89556799], [1516838220000, 0.01593001, 0.01594001, 0.01593001, 0.01593001, 14.37491875], [1516838280000, 0.01592987, 0.01592987, 0.0159, 0.0159, 60.0008008], [1516838340000, 0.0159, 0.0159, 0.01589568, 0.01589568, 17.42268052], [1516838400000, 0.01589649, 0.01589727, 0.01589445, 0.01589727, 29.47879643], [1516838460000, 0.01589727, 0.01589727, 0.01589446, 0.01589727, 31.87387846], [1516838520000, 0.01589727, 0.0158973, 0.01588888, 0.01588888, 19.52834953], [1516838580000, 0.01588888, 0.0159, 0.01588, 0.01588, 60.67921048], [1516838640000, 0.01588, 0.01588, 0.01586828, 0.01586829, 48.18372022], [1516838700000, 0.01588, 0.0159, 0.01586829, 0.0159, 29.40214968], [1516838760000, 0.0159, 0.0159, 0.0158682, 0.0158682, 55.15186208], [1516838820000, 0.0158682, 0.0158682, 0.01586031, 0.0158682, 59.56738914], [1516838880000, 0.0158682, 0.0158682, 0.01585009, 0.0158682, 175.1176957], [1516838940000, 0.01585009, 0.0158682, 0.01585009, 0.0158682, 39.33077119], [1516839000000, 0.01585009, 0.0158682, 0.01585009, 0.0158682, 22.57933871], [1516839060000, 0.0158682, 0.0158682, 0.01585009, 0.0158682, 75.48999802], [1516839120000, 0.01585009, 0.01586819, 0.01585009, 0.01586819, 4.01793276], [1516839180000, 0.01586819, 0.01586819, 0.0158501, 0.015865, 6.78115426], [1516839240000, 0.01586819, 0.01586819, 0.015865, 0.015865, 13.96976674], [1516839300000, 0.015865, 0.0158682, 0.01585009, 0.0158682, 130.78253687], [1516839360000, 0.0158682, 0.0158682, 0.01585009, 0.01585009, 7.77363586], [1516839420000, 0.0158682, 0.0158682, 0.01585009, 0.01586801, 10.17952858], [1516839480000, 0.01586801, 0.016, 0.01585009, 0.01593594, 98.66136184], [1516839540000, 0.01599899, 0.01599899, 0.01586001, 0.01593, 86.66409803], [1516839600000, 0.01589423, 0.01596399, 0.01585009, 0.015935, 39.34912497], [1516839660000, 0.01586001, 0.01586001, 0.01586, 0.01586001, 6.0441939], [1516839720000, 0.01586001, 0.015935, 0.01586, 0.01586002, 16.19588602], [1516839780000, 0.01588, 0.015935, 0.01588, 0.01588, 22.99309388], [1516839840000, 0.01592499, 0.01592499, 0.01586003, 0.01588, 19.08927775], [1516839900000, 0.01588, 0.0159, 0.01586002, 0.0159, 56.88993852], [1516839960000, 0.0159, 0.0159, 0.01586005, 0.0159, 1.98350997], [1516840020000, 0.0159, 0.0159, 0.01586004, 0.01586005, 10.0407642], [1516840080000, 0.01586006, 0.0159, 0.01586006, 0.0159, 2.76134653], [1516840140000, 0.01586007, 0.0159, 0.01586007, 0.01586007, 0.74490409], [1516840200000, 0.01586007, 0.01589, 0.01586004, 0.01589, 18.23912014], [1516840260000, 0.01589, 0.01589999, 0.01589, 0.01589999, 31.38618084], [1516840320000, 0.01589999, 0.0159, 0.01589002, 0.01589002, 4.26626199], [1516840380000, 0.01586009, 0.0159, 0.01586009, 0.0158601, 23.25797344], [1516840440000, 0.01589002, 0.01589002, 0.0158601, 0.01589002, 5.9761068], [1516840500000, 0.0159, 0.0159, 0.0158601, 0.0159, 42.59711605], [1516840560000, 0.0159, 0.0159, 0.01586009, 0.01586009, 50.84019589], [1516840620000, 0.0159, 0.0159, 0.0158601, 0.0158601, 46.70109571], [1516840680000, 0.0159, 0.0159, 0.0158601, 0.01586011, 10.90314127], [1516840740000, 0.0159, 0.0159, 0.01586013, 0.01589999, 24.03282756], [1516840800000, 0.01589999, 0.0159, 0.01586014, 0.0159, 13.24644461], [1516840860000, 0.015935, 0.015935, 0.0159, 0.0159, 19.38383226], [1516840920000, 0.0159, 0.0159, 0.01586015, 0.01586015, 12.98270425], [1516840980000, 0.0158617, 0.015935, 0.01580343, 0.01580343, 155.74691434], [1516841040000, 0.01586015, 0.01596495, 0.01580344, 0.01593405, 110.54168421], [1516841100000, 0.01582107, 0.01593, 0.0158, 0.015879, 204.62797515], [1516841160000, 0.0159, 0.0159, 0.01585, 0.01585, 23.92554158], [1516841220000, 0.01585, 0.01587, 0.01585, 0.01587, 7.54789243], [1516841280000, 0.01587, 0.01587, 0.01583959, 0.01585, 112.78085632], [1516841340000, 0.01585, 0.01585, 0.015825, 0.01585, 26.78757205], [1516841400000, 0.01585, 0.01585, 0.0158255, 0.0158255, 64.24841356], [1516841460000, 0.01585, 0.01585, 0.01585, 0.01585, 130.88490183], [1516841520000, 0.01585, 0.01587, 0.01585, 0.01587, 36.80129809], [1516841580000, 0.01587, 0.01592997, 0.01585, 0.01592997, 19.55018371], [1516841640000, 0.0159, 0.01592997, 0.0159, 0.0159, 1.59609183], [1516841700000, 0.01592996, 0.01592996, 0.01586, 0.01588, 1.38286098], [1516841760000, 0.01588, 0.01588, 0.01588, 0.01588, 29.54134448], [1516841820000, 0.01588, 0.01588, 0.01586003, 0.01586003, 8.82577956], [1516841880000, 0.01588, 0.01588, 0.01586002, 0.01586003, 5.89566146], [1516841940000, 0.01588, 0.01588, 0.01586003, 0.01586005, 6.48700833], [1516842000000, 0.01588, 0.01588, 0.01586005, 0.01588, 56.96815729], [1516842060000, 0.01588, 0.01592997, 0.01586007, 0.01592997, 16.77404647], [1516842120000, 0.01588, 0.01592997, 0.01586008, 0.01592997, 6.9925872], [1516842180000, 0.01592997, 0.01592997, 0.01586008, 0.01589999, 2.02821938], [1516842240000, 0.0159, 0.0159, 0.01586003, 0.01586003, 27.65126385], [1516842300000, 0.0159, 0.01592997, 0.01586003, 0.015925, 4.81843173], [1516842360000, 0.01586003, 0.015925, 0.01586003, 0.015925, 7.7206215], [1516842420000, 0.015925, 0.01592997, 0.0158613, 0.01592499, 22.30373336], [1516842480000, 0.01592499, 0.01592501, 0.01592499, 0.01592499, 32.01615045], [1516842540000, 0.01592501, 0.01592994, 0.01586003, 0.01586003, 14.91700444], [1516842600000, 0.01592501, 0.01592501, 0.01590893, 0.01592501, 9.19905742], [1516842660000, 0.01592501, 0.01592993, 0.01590893, 0.01592898, 19.86621316], [1516842720000, 0.01592898, 0.01592898, 0.015826, 0.01592898, 56.51724616], [1516842780000, 0.01592897, 0.01592897, 0.0158205, 0.015921, 26.96616029], [1516842840000, 0.0158205, 0.015924, 0.01580112, 0.0159235, 57.71792864], [1516842900000, 0.01585, 0.0159235, 0.01581166, 0.01581723, 111.80033708], [1516842960000, 0.01581723, 0.0159235, 0.01581723, 0.01586, 34.93304631], [1516843020000, 0.01582721, 0.01586, 0.01582232, 0.01586, 26.5965029], [1516843080000, 0.01586, 0.0159089, 0.01581811, 0.0159089, 128.51108103], [1516843140000, 0.01581822, 0.0159089, 0.01581822, 0.01581832, 60.80835576], [1516843200000, 0.01590889, 0.01590889, 0.01582937, 0.01590889, 71.05816428], [1516843260000, 0.01590888, 0.01590888, 0.01588, 0.01588, 10.56997494], [1516843320000, 0.01588, 0.01588, 0.01582937, 0.01588, 29.65262133], [1516843380000, 0.01590885, 0.0159089, 0.01588, 0.01588, 27.37236864], [1516843440000, 0.01588, 0.01590889, 0.01583088, 0.01583088, 12.92654277], [1516843500000, 0.01583088, 0.01588, 0.01583078, 0.01583078, 38.37716297], [1516843560000, 0.01583078, 0.0159089, 0.01583078, 0.0159089, 18.92231648], [1516843620000, 0.01588, 0.0159089, 0.01588, 0.01588001, 42.35842249], [1516843680000, 0.01588001, 0.01592895, 0.01582937, 0.01592894, 122.89605429], [1516843740000, 0.01582937, 0.01591393, 0.01580095, 0.01580126, 14.90619311], [1516843800000, 0.0158013, 0.01592878, 0.0158013, 0.01581126, 54.96849999], [1516843860000, 0.0159139, 0.0159139, 0.01581126, 0.01581126, 3.24552432], [1516843920000, 0.01591387, 0.0159139, 0.01581131, 0.01590898, 8.06822677], [1516843980000, 0.01581501, 0.01588873, 0.01581132, 0.01588873, 2.74132213], [1516844040000, 0.0158887, 0.01588873, 0.0158113, 0.01588873, 22.23431079], [1516844100000, 0.01588873, 0.01588873, 0.0158113, 0.01581131, 12.7186247], [1516844160000, 0.01586, 0.01588873, 0.01586, 0.01588873, 6.34216799], [1516844220000, 0.01588873, 0.01588873, 0.01586, 0.01586, 1.434801], [1516844280000, 0.01588873, 0.01588873, 0.01586, 0.01588872, 9.30309664], [1516844340000, 0.01588873, 0.01588873, 0.01588841, 0.01588841, 4.34326142], [1516844400000, 0.01582519, 0.01588841, 0.01582518, 0.01582521, 29.86342418], [1516844460000, 0.01582521, 0.0158884, 0.01582519, 0.0158884, 21.07831994], [1516844520000, 0.01586, 0.01588873, 0.01586, 0.015888, 18.69813297], [1516844580000, 0.01588871, 0.01588871, 0.015884, 0.015888, 12.08764551], [1516844640000, 0.015888, 0.01588841, 0.01584041, 0.01584085, 25.16346686], [1516844700000, 0.01584085, 0.01588873, 0.01581175, 0.01588873, 40.326205], [1516844760000, 0.01588871, 0.01588873, 0.01588871, 0.01588871, 27.40557934], [1516844820000, 0.01588871, 0.0159139, 0.01584233, 0.01584233, 48.96341659], [1516844880000, 0.015909, 0.01591358, 0.015909, 0.015909, 17.77957986], [1516844940000, 0.01591357, 0.01591357, 0.01591, 0.01591, 2.33662228], [1516845000000, 0.01591, 0.01591357, 0.015909, 0.015909, 37.3876542], [1516845060000, 0.01591, 0.01592898, 0.0159, 0.01592898, 141.39601279], [1516845120000, 0.01591358, 0.01598228, 0.01591358, 0.01598228, 25.2362794], [1516845180000, 0.01598228, 0.01598228, 0.01591835, 0.01591869, 25.00205896], [1516845240000, 0.01598228, 0.01599, 0.01584245, 0.01584248, 54.13366355], [1516845300000, 0.01598968, 0.01598968, 0.01584269, 0.01598927, 24.37887656], [1516845360000, 0.01591869, 0.01598927, 0.01585901, 0.01598299, 162.20275821], [1516845420000, 0.01588, 0.015974, 0.01588, 0.01597399, 1.54756952], [1516845480000, 0.015879, 0.01595499, 0.015879, 0.01595499, 3.37542807], [1516845540000, 0.015879, 0.015879, 0.01587401, 0.015879, 25.68107114], [1516845600000, 0.015879, 0.01593494, 0.01587479, 0.01593494, 12.33236087], [1516845660000, 0.01593494, 0.01593494, 0.01587479, 0.01587479, 4.96728086], [1516845720000, 0.01587479, 0.01587479, 0.01587401, 0.01587401, 12.58853287], [1516845780000, 0.01587401, 0.01587479, 0.01587401, 0.01587479, 28.18836247], [1516845840000, 0.01587479, 0.01587479, 0.01584806, 0.01584806, 24.05534186], [1516845900000, 0.01584806, 0.015874, 0.01581133, 0.01581133, 18.68571515], [1516845960000, 0.01581133, 0.01587399, 0.01581133, 0.01581501, 22.86052435], [1516846020000, 0.01581501, 0.01582, 0.01581, 0.01582, 129.19808286], [1516846080000, 0.01581, 0.01582, 0.01581, 0.01582, 19.84316868], [1516846140000, 0.015825, 0.01587398, 0.01582, 0.01587398, 27.93079394], [1516846200000, 0.01587398, 0.01587398, 0.015873, 0.015873, 3.16815755], [1516846260000, 0.015873, 0.015873, 0.01582, 0.015873, 7.56144069], [1516846320000, 0.01582, 0.015873, 0.01582, 0.01582001, 3.71329541], [1516846380000, 0.01587299, 0.01587299, 0.01582001, 0.01587299, 0.56968525], [1516846440000, 0.01582001, 0.01587299, 0.01582, 0.01587299, 40.4833537], [1516846500000, 0.01581214, 0.01590989, 0.01581214, 0.01590989, 26.32183571], [1516846560000, 0.01590989, 0.01591869, 0.01581218, 0.01590989, 17.27522191], [1516846620000, 0.0158121, 0.0158121, 0.01581081, 0.01581093, 0.86034109], [1516846680000, 0.01584628, 0.01590989, 0.01584628, 0.0159, 10.07345264], [1516846740000, 0.0159, 0.0159, 0.0159, 0.0159, 5.71942766], [1516846800000, 0.01590988, 0.01595526, 0.01590988, 0.01590989, 7.11363163], [1516846860000, 0.01597399, 0.015984, 0.01590989, 0.01590989, 7.31650141], [1516846920000, 0.01590989, 0.01598922, 0.01590988, 0.01590988, 21.45003911], [1516846980000, 0.01590988, 0.01595, 0.01584625, 0.0159, 120.83008974], [1516847040000, 0.01584625, 0.0159, 0.01584625, 0.0159, 2.47279479], [1516847100000, 0.0159, 0.01591778, 0.0159, 0.01591778, 4.428832], [1516847160000, 0.01594478, 0.01594478, 0.01584625, 0.01584625, 12.38387944], [1516847220000, 0.01584625, 0.01594478, 0.01584625, 0.01594477, 11.80171418], [1516847280000, 0.01584626, 0.01594, 0.01584626, 0.01594, 12.28598527], [1516847340000, 0.01584626, 0.01594474, 0.01584626, 0.01584626, 7.03101542], [1516847400000, 0.015935, 0.01594, 0.01584626, 0.01584626, 10.06992787], [1516847460000, 0.01584626, 0.01587842, 0.01584625, 0.01587842, 96.33596726], [1516847520000, 0.01587892, 0.0159, 0.01584626, 0.01589, 8.25055403], [1516847580000, 0.01584787, 0.015937, 0.01584787, 0.0159, 51.16406313], [1516847640000, 0.015937, 0.015937, 0.0159, 0.0159, 12.77678059], [1516847700000, 0.0159, 0.0159, 0.0159, 0.0159, 21.39343561], [1516847760000, 0.0159, 0.0159, 0.01584625, 0.01584626, 9.55318723], [1516847820000, 0.01584626, 0.01584626, 0.0158008, 0.01584625, 15.54582914], [1516847880000, 0.01584605, 0.01584605, 0.01580081, 0.01580081, 16.47072638], [1516847940000, 0.01580082, 0.01584605, 0.01580082, 0.01584605, 14.42711398], [1516848000000, 0.01582582, 0.01584625, 0.01582582, 0.01584625, 68.33818451], [1516848060000, 0.0158462, 0.0158462, 0.01582582, 0.01582582, 5.274338], [1516848120000, 0.0158462, 0.01584625, 0.01580082, 0.01580082, 13.18705706], [1516848180000, 0.01580083, 0.01584625, 0.01580081, 0.01584625, 101.03102637], [1516848240000, 0.01584625, 0.01589399, 0.01580081, 0.01589399, 45.3065043], [1516848300000, 0.01589399, 0.01589399, 0.01580085, 0.01580085, 9.71001309], [1516848360000, 0.01580085, 0.015875, 0.01580079, 0.01580079, 87.77602643], [1516848420000, 0.01580001, 0.01580079, 0.01579, 0.01580001, 22.45894547], [1516848480000, 0.01579, 0.01580001, 0.01579, 0.01579, 11.95359611], [1516848540000, 0.01579, 0.01579, 0.0157835, 0.01579, 35.57074106], [1516848600000, 0.01579, 0.01580001, 0.01578, 0.01580001, 78.43474698], [1516848660000, 0.0158, 0.01586099, 0.0157895, 0.01582289, 22.31127088], [1516848720000, 0.0158229, 0.0158229, 0.01578001, 0.01578012, 20.33601115], [1516848780000, 0.0157897, 0.0157897, 0.01578001, 0.0157801, 5.44549682], [1516848840000, 0.0157801, 0.01585099, 0.01578005, 0.01585099, 12.46762085], [1516848900000, 0.01578012, 0.01578012, 0.01577001, 0.01577001, 66.87499422], [1516848960000, 0.01577001, 0.01577001, 0.01572011, 0.01577001, 43.03916686], [1516849020000, 0.01573287, 0.01579874, 0.01573287, 0.01579874, 21.13693974], [1516849080000, 0.01579874, 0.01585098, 0.01579874, 0.01579874, 6.01480378], [1516849140000, 0.01579874, 0.01586306, 0.01579874, 0.01586306, 60.61198147], [1516849200000, 0.015897, 0.015937, 0.0158255, 0.01582551, 39.79129204], [1516849260000, 0.01585732, 0.01594475, 0.01583601, 0.01594475, 38.8906146], [1516849320000, 0.01585732, 0.01594478, 0.01585732, 0.0158632, 5.07991535], [1516849380000, 0.0158632, 0.01595, 0.0158632, 0.01587906, 30.76311604], [1516849440000, 0.0158632, 0.01595, 0.0158632, 0.015945, 35.17004746], [1516849500000, 0.015945, 0.015945, 0.0159, 0.01594499, 26.82918207], [1516849560000, 0.0159, 0.01594, 0.01587, 0.01587, 43.077329], [1516849620000, 0.01588, 0.01589999, 0.01579874, 0.015804, 20.77467746], [1516849680000, 0.01585331, 0.01589993, 0.01579874, 0.01589992, 40.46775992], [1516849740000, 0.01589992, 0.01589993, 0.01580757, 0.01580757, 33.46813215], [1516849800000, 0.01580757, 0.01589993, 0.01579875, 0.01579876, 37.46496164], [1516849860000, 0.01580757, 0.01589992, 0.01579877, 0.01587, 1.01607967], [1516849920000, 0.01587, 0.01589, 0.01579874, 0.01589, 3.93754408], [1516849980000, 0.01589, 0.01589, 0.01579876, 0.01579876, 8.07294747], [1516850040000, 0.01580901, 0.01589, 0.015804, 0.01589, 22.24291416], [1516850100000, 0.01589, 0.01589, 0.01579876, 0.01589, 13.28482683], [1516850160000, 0.01579876, 0.01589, 0.01579876, 0.01579877, 6.21385589], [1516850220000, 0.01579877, 0.01579877, 0.01579876, 0.01579876, 10.98478848], [1516850280000, 0.01579876, 0.015804, 0.01579876, 0.01579876, 11.07182668], [1516850340000, 0.015804, 0.015804, 0.015804, 0.015804, 2.61483353], [1516850400000, 0.015804, 0.01588998, 0.01579881, 0.01579881, 14.63562244], [1516850460000, 0.01588998, 0.01588999, 0.01579888, 0.01579888, 29.30419987], [1516850520000, 0.01579888, 0.01588998, 0.01579881, 0.01588998, 12.91597153], [1516850580000, 0.015803, 0.01581053, 0.01579874, 0.01579874, 65.16816695], [1516850640000, 0.01588998, 0.01588999, 0.01579876, 0.01579876, 9.98079473], [1516850700000, 0.01588989, 0.01588999, 0.01579876, 0.01579876, 5.91871204], [1516850760000, 0.01579876, 0.01579876, 0.01579875, 0.01579875, 26.75632136], [1516850820000, 0.01579874, 0.01579875, 0.01579874, 0.01579875, 3.44837298], [1516850880000, 0.01579875, 0.01579876, 0.01579875, 0.01579875, 4.30945266], [1516850940000, 0.01579876, 0.01579876, 0.01579876, 0.01579876, 5.34460028], [1516851000000, 0.01579876, 0.01579876, 0.01579874, 0.01579874, 22.91217439], [1516851060000, 0.01579874, 0.01579876, 0.01579874, 0.01579875, 15.87365403], [1516851120000, 0.01579874, 0.01579876, 0.01579874, 0.01579874, 32.9047505], [1516851180000, 0.01579252, 0.01579252, 0.01578374, 0.0157925, 100.31806912], [1516851240000, 0.0157925, 0.01579367, 0.01574887, 0.01574887, 8.29437217], [1516851300000, 0.01578, 0.01579874, 0.01570511, 0.015781, 28.55582685], [1516851360000, 0.015781, 0.01579876, 0.01571596, 0.015716, 51.43868305], [1516851420000, 0.01579876, 0.01579876, 0.01571615, 0.01573002, 23.05428144], [1516851480000, 0.01577935, 0.01577935, 0.015735, 0.01577935, 198.96130379], [1516851540000, 0.01577935, 0.01577935, 0.01574501, 0.01575723, 33.03341116], [1516851600000, 0.01575723, 0.01579876, 0.0157451, 0.01579876, 90.40991293], [1516851660000, 0.01578374, 0.01579876, 0.01574514, 0.01578374, 52.60700375], [1516851720000, 0.01574518, 0.01585499, 0.01574515, 0.01578374, 30.29449434], [1516851780000, 0.01578374, 0.01578374, 0.01573545, 0.0157356, 46.96873019], [1516851840000, 0.01578374, 0.01578374, 0.0157357, 0.01578374, 13.19574215], [1516851900000, 0.01573581, 0.01578374, 0.01573581, 0.01578374, 62.33194093], [1516851960000, 0.01573613, 0.0158, 0.01573613, 0.0158, 18.12754601], [1516852020000, 0.01573688, 0.0158, 0.01573688, 0.0158, 3.7995701], [1516852080000, 0.0158, 0.0158, 0.01573798, 0.01573802, 24.69711814], [1516852140000, 0.0158, 0.0158, 0.0157999, 0.0157999, 8.23314096], [1516852200000, 0.01573852, 0.0158, 0.01573845, 0.01573852, 7.89669682], [1516852260000, 0.01573852, 0.0158, 0.01573731, 0.0158, 5.38076085], [1516852320000, 0.0158, 0.0158, 0.01573732, 0.0158, 9.91002722], [1516852380000, 0.01573845, 0.0158, 0.01573733, 0.0158, 16.38801375], [1516852440000, 0.0158, 0.0158, 0.01573815, 0.01573816, 22.42327324], [1516852500000, 0.01573817, 0.01578889, 0.01573816, 0.01573817, 20.02863683], [1516852560000, 0.01578889, 0.0158, 0.01578538, 0.0158, 30.19153397], [1516852620000, 0.01578538, 0.0158, 0.01575889, 0.01575891, 10.21958299], [1516852680000, 0.01575891, 0.0158, 0.01575891, 0.01575891, 5.02765664], [1516852740000, 0.01575891, 0.0158, 0.01575891, 0.0158, 58.8689036], [1516852800000, 0.0158, 0.0158, 0.01575891, 0.01575891, 7.92078674], [1516852860000, 0.0158, 0.0158, 0.01575923, 0.0158, 26.52284018], [1516852920000, 0.01575951, 0.0158, 0.01575951, 0.0158, 11.87241824], [1516852980000, 0.0158, 0.01588, 0.0158, 0.0158006, 12.02605866], [1516853040000, 0.01588, 0.01588, 0.0158006, 0.0158006, 7.72145779], [1516853100000, 0.01588, 0.01588, 0.0158, 0.01586, 3.65687027], [1516853160000, 0.01586, 0.01586, 0.01586, 0.01586, 1.32247682], [1516853220000, 0.015825, 0.01586, 0.01580002, 0.01580002, 9.96787995], [1516853280000, 0.01580002, 0.01588, 0.01580002, 0.0158006, 21.36665457], [1516853340000, 0.01580002, 0.01588, 0.01580002, 0.0158032, 5.10816844], [1516853400000, 0.015805, 0.01588, 0.0158032, 0.01588, 3.51609954], [1516853460000, 0.01588, 0.01588, 0.0158032, 0.0158032, 6.90078191], [1516853520000, 0.0158132, 0.01588497, 0.01580002, 0.0158032, 65.22373807], [1516853580000, 0.01581581, 0.01588999, 0.01580002, 0.01588999, 54.79882899], [1516853640000, 0.01588497, 0.01589, 0.01580003, 0.01580006, 49.05044965], [1516853700000, 0.01580006, 0.01589, 0.01580002, 0.01589, 34.07556428], [1516853760000, 0.01580002, 0.01589, 0.0157731, 0.01577337, 76.73921754], [1516853820000, 0.01577348, 0.01589, 0.01577348, 0.01589, 12.31887459], [1516853880000, 0.01577426, 0.01577426, 0.01577423, 0.01577426, 10.49488278], [1516853940000, 0.01578004, 0.01588997, 0.01578004, 0.01588994, 3.15344007], [1516854000000, 0.01588988, 0.01589, 0.01578036, 0.01582636, 95.82372003], [1516854060000, 0.01582637, 0.01588994, 0.01580705, 0.01582638, 24.63956049], [1516854120000, 0.01588994, 0.01588994, 0.01582638, 0.01582641, 31.79605982], [1516854180000, 0.01588993, 0.01588994, 0.01582638, 0.01582638, 6.61270079], [1516854240000, 0.01582638, 0.01588994, 0.01582638, 0.01582638, 64.95305192], [1516854300000, 0.01589, 0.01589, 0.01582639, 0.01589, 14.4824675], [1516854360000, 0.01589, 0.0159, 0.015836, 0.01584001, 29.36513487], [1516854420000, 0.01589, 0.01589, 0.01584001, 0.01589, 13.03183914], [1516854480000, 0.01586, 0.0159, 0.01586, 0.0159, 72.65209864], [1516854540000, 0.0159, 0.01593023, 0.01586005, 0.01588003, 11.11631882], [1516854600000, 0.01593352, 0.01595885, 0.01588015, 0.01588059, 70.73164714], [1516854660000, 0.01588239, 0.01595885, 0.01588059, 0.015886, 3.97023287], [1516854720000, 0.0159495, 0.01596802, 0.0159495, 0.01596545, 25.71556247], [1516854780000, 0.01596545, 0.01596801, 0.01596545, 0.01596801, 9.49922953], [1516854840000, 0.015968, 0.015968, 0.01596545, 0.01596545, 12.87943376], [1516854900000, 0.015968, 0.01598895, 0.015968, 0.01598597, 9.37161039], [1516854960000, 0.01598597, 0.01598599, 0.01592004, 0.01592004, 62.8068876], [1516855020000, 0.01598142, 0.01598142, 0.01593, 0.01593797, 13.11880992], [1516855080000, 0.0159814, 0.01598142, 0.01593797, 0.01597779, 30.06201835], [1516855140000, 0.01598141, 0.01598141, 0.015977, 0.015977, 7.36075973], [1516855200000, 0.015977, 0.01597779, 0.01593, 0.01597779, 4.82034466], [1516855260000, 0.01597, 0.01597, 0.01597, 0.01597, 4.06911207], [1516855320000, 0.01593, 0.01597, 0.01593, 0.01595, 0.46858881], [1516855380000, 0.01593001, 0.01597, 0.01593001, 0.01597, 6.99109475], [1516855440000, 0.01595, 0.01596, 0.01595, 0.01596, 8.06217466], [1516855500000, 0.01596, 0.01596, 0.01596, 0.01596, 11.65353313], [1516855560000, 0.01596, 0.01596, 0.0159505, 0.01596, 24.12998092], [1516855620000, 0.01596, 0.01596, 0.0159505, 0.0159505, 2.81997905], [1516855680000, 0.01596, 0.01596, 0.0159505, 0.0159505, 10.38726509], [1516855740000, 0.0159505, 0.01597748, 0.0159505, 0.01596, 28.54332555], [1516855800000, 0.01596, 0.01596, 0.01596, 0.01596, 0.06912068], [1516855860000, 0.0159505, 0.01597768, 0.01593, 0.01593, 7.22222953], [1516855920000, 0.01593, 0.01593, 0.01593, 0.01593, 11.96039417], [1516855980000, 0.01597668, 0.01597668, 0.01597666, 0.01597666, 0.84205944], [1516856040000, 0.01596, 0.01597666, 0.01593, 0.01597666, 6.41403129], [1516856100000, 0.01597769, 0.01597769, 0.01597666, 0.01597769, 5.23558554], [1516856160000, 0.01597769, 0.01597778, 0.01597769, 0.01597778, 10.19524468], [1516856220000, 0.01597769, 0.01597778, 0.01597666, 0.01597666, 3.43019906], [1516856280000, 0.0159778, 0.0159778, 0.01593, 0.01593, 25.79481629], [1516856340000, 0.015935, 0.01597666, 0.015935, 0.01597666, 1.27921175], [1516856400000, 0.01597666, 0.01597666, 0.015935, 0.01597666, 4.12209647], [1516856460000, 0.01597666, 0.01597666, 0.015938, 0.015938, 5.92852153], [1516856520000, 0.01597666, 0.01597666, 0.015938, 0.01596999, 8.00879602], [1516856580000, 0.015938, 0.01597666, 0.015938, 0.01596999, 2.0866084], [1516856640000, 0.01596999, 0.015975, 0.01595, 0.01595, 13.58347385], [1516856700000, 0.01595, 0.01595, 0.01593, 0.01595, 91.47707837], [1516856760000, 0.015945, 0.01595, 0.01593, 0.015945, 27.53817], [1516856820000, 0.015945, 0.015945, 0.01593, 0.01593, 7.4185671], [1516856880000, 0.01593, 0.015945, 0.01593, 0.01593, 69.37209787], [1516856940000, 0.01594499, 0.015945, 0.01593, 0.01594, 12.79895109], [1516857000000, 0.01594, 0.015945, 0.01593, 0.01593, 178.54833704], [1516857060000, 0.01593, 0.015944, 0.01593, 0.015935, 21.79366472], [1516857120000, 0.015935, 0.015935, 0.01588049, 0.01588049, 35.45721693], [1516857180000, 0.01593, 0.01593, 0.0159102, 0.0159102, 6.55555331], [1516857240000, 0.01588049, 0.0159102, 0.01588, 0.0159102, 13.66971986], [1516857300000, 0.0159102, 0.01593, 0.01581283, 0.015929, 59.68041297], [1516857360000, 0.01593, 0.01593, 0.015929, 0.01593, 5.61658855], [1516857420000, 0.015929, 0.01593, 0.015929, 0.015929, 4.41801625], [1516857480000, 0.01593, 0.01593, 0.015929, 0.01593, 6.68529315], [1516857540000, 0.0159295, 0.01593, 0.015929, 0.01593, 2.10849417], [1516857600000, 0.015929, 0.01593, 0.015929, 0.015929, 37.31580717], [1516857660000, 0.01593, 0.01593, 0.015929, 0.01593, 11.18754841], [1516857720000, 0.01592907, 0.01593, 0.01592907, 0.01593, 29.1803024], [1516857780000, 0.01593, 0.01593, 0.01593, 0.01593, 75.71418107], [1516857840000, 0.01593, 0.01593, 0.01592949, 0.01593, 31.74771779], [1516857900000, 0.01592949, 0.01593, 0.01592949, 0.01592949, 17.42923725], [1516857960000, 0.01592949, 0.01593, 0.01592949, 0.01592952, 11.51772723], [1516858020000, 0.01592953, 0.01592999, 0.01592952, 0.01592999, 3.2595616], [1516858080000, 0.01592954, 0.01592999, 0.01592952, 0.01592999, 3.90591321], [1516858140000, 0.01592952, 0.01592999, 0.01592952, 0.01592999, 4.77869461], [1516858200000, 0.01592999, 0.015945, 0.01592952, 0.015945, 10.35559409], [1516858260000, 0.015945, 0.015945, 0.01592952, 0.015945, 28.77470781], [1516858320000, 0.01592952, 0.01592952, 0.01592949, 0.01592949, 44.03283327], [1516858380000, 0.01592949, 0.015945, 0.01592949, 0.01592949, 7.84802761], [1516858440000, 0.01592949, 0.01592949, 0.01592949, 0.01592949, 20.63881439], [1516858500000, 0.01592949, 0.015945, 0.01592949, 0.015945, 26.42267543], [1516858560000, 0.01592955, 0.015945, 0.0159, 0.015929, 45.24279998], [1516858620000, 0.01592898, 0.015929, 0.0159, 0.015929, 3.8634778], [1516858680000, 0.01592898, 0.015929, 0.01591, 0.01591, 6.99340596], [1516858740000, 0.015928, 0.015929, 0.015928, 0.015929, 21.76486311], [1516858800000, 0.015929, 0.015929, 0.01588049, 0.0159, 12.49206642], [1516858860000, 0.0159, 0.0159, 0.01584003, 0.01588, 22.65385257], [1516858920000, 0.01588, 0.01588, 0.01584004, 0.0158799, 6.55629159], [1516858980000, 0.01584005, 0.01587989, 0.01584005, 0.01587989, 34.29195456], [1516859040000, 0.01584009, 0.01587989, 0.01584009, 0.01584011, 516.82921072], [1516859100000, 0.01587988, 0.0158799, 0.01584014, 0.0158799, 53.07967984], [1516859160000, 0.0158799, 0.015929, 0.0158799, 0.01588091, 18.63237335], [1516859220000, 0.01588102, 0.015929, 0.01588102, 0.015929, 15.84647938], [1516859280000, 0.01588079, 0.015929, 0.01583983, 0.01588082, 50.08775518], [1516859340000, 0.01588082, 0.01592955, 0.01588079, 0.01592955, 14.31772132], [1516859400000, 0.01592955, 0.01594436, 0.01592955, 0.01594436, 5.88564652], [1516859460000, 0.01593251, 0.015945, 0.01588079, 0.015945, 34.49229647], [1516859520000, 0.01594468, 0.01594468, 0.01588083, 0.0158809, 70.30115566], [1516859580000, 0.01591468, 0.01591468, 0.01588079, 0.01591468, 21.26903009], [1516859640000, 0.01591465, 0.01591468, 0.01591465, 0.01591468, 58.36189895], [1516859700000, 0.01591465, 0.01591468, 0.01588094, 0.01588094, 6.79077375], [1516859760000, 0.01591436, 0.01591468, 0.01588079, 0.01588079, 22.67036571], [1516859820000, 0.01591468, 0.015945, 0.01588079, 0.015945, 9.40207691], [1516859880000, 0.015945, 0.015945, 0.01588079, 0.01589773, 14.48179131], [1516859940000, 0.01589773, 0.01589773, 0.01583999, 0.01583999, 52.06333713], [1516860000000, 0.015895, 0.01591468, 0.01584012, 0.01591468, 18.17017272], [1516860060000, 0.01591468, 0.015915, 0.01584055, 0.015915, 5.59208357], [1516860120000, 0.015915, 0.015945, 0.015915, 0.015945, 2.6150246], [1516860180000, 0.0159449, 0.015945, 0.01584193, 0.015875, 6.46263761], [1516860240000, 0.01594468, 0.0159449, 0.01594468, 0.0159449, 2.74253821], [1516860300000, 0.01587519, 0.01599, 0.01587504, 0.01587504, 73.09202912], [1516860360000, 0.0159449, 0.01598999, 0.0159449, 0.0159449, 7.77764609], [1516860420000, 0.01598967, 0.015995, 0.0159449, 0.0159449, 27.38259146], [1516860480000, 0.0159449, 0.01598999, 0.0159449, 0.01598999, 32.00596399], [1516860540000, 0.0159449, 0.01596605, 0.0159449, 0.0159449, 26.03239482], [1516860600000, 0.0159449, 0.01596605, 0.0159449, 0.01594491, 1.37217595], [1516860660000, 0.01596605, 0.01598997, 0.01594491, 0.01594491, 13.3677451], [1516860720000, 0.01594491, 0.01598989, 0.0159449, 0.01594491, 65.61062855], [1516860780000, 0.01594491, 0.01594491, 0.01587504, 0.01587504, 17.83803071], [1516860840000, 0.01584226, 0.01596924, 0.01584226, 0.01587504, 45.5104127], [1516860900000, 0.01587509, 0.01598987, 0.01587509, 0.01598987, 15.74163388], [1516860960000, 0.01588028, 0.01598987, 0.01588028, 0.01598987, 22.54491622], [1516861020000, 0.01598987, 0.01598988, 0.01589267, 0.01598988, 12.20139827], [1516861080000, 0.01598988, 0.01598988, 0.01589481, 0.01589489, 12.25059554], [1516861140000, 0.01589492, 0.01598988, 0.0158949, 0.01598988, 62.31057982], [1516861200000, 0.01589553, 0.01598987, 0.01589553, 0.01589553, 3.50925332], [1516861260000, 0.01589553, 0.01598985, 0.01589553, 0.01589554, 3.00721322], [1516861320000, 0.01589554, 0.01589633, 0.01589497, 0.01589633, 8.76866783], [1516861380000, 0.01589633, 0.0159898, 0.01589623, 0.01589623, 43.53008384], [1516861440000, 0.01589791, 0.01598985, 0.01589555, 0.01589555, 6.05502133], [1516861500000, 0.01598985, 0.01598985, 0.01589791, 0.0158987, 22.12629078], [1516861560000, 0.01593827, 0.01598985, 0.0158987, 0.01598985, 3.35610488], [1516861620000, 0.0158987, 0.01598985, 0.01589267, 0.01589269, 28.72760185], [1516861680000, 0.01589949, 0.0158995, 0.01589949, 0.0158995, 12.16737954], [1516861740000, 0.01598985, 0.01598988, 0.0158996, 0.01598988, 12.52622585], [1516861800000, 0.01598988, 0.01598988, 0.01589998, 0.01590002, 9.36202756], [1516861860000, 0.01590002, 0.01598828, 0.01589266, 0.01590002, 44.28025177], [1516861920000, 0.0158929, 0.01590002, 0.01589266, 0.01589266, 33.75714027], [1516861980000, 0.01589266, 0.0159607, 0.01584037, 0.01584058, 82.28658494], [1516862040000, 0.01595097, 0.01595098, 0.0158406, 0.0158406, 6.28971251], [1516862100000, 0.01584071, 0.01595097, 0.01584071, 0.01595097, 2.10422671], [1516862160000, 0.01595094, 0.01597, 0.01584059, 0.01584059, 95.77968498], [1516862220000, 0.0158417, 0.01592048, 0.01581193, 0.01592048, 125.54619449], [1516862280000, 0.0158406, 0.01592048, 0.0158406, 0.01592048, 1.39495768], [1516862340000, 0.0158802, 0.01592048, 0.01584059, 0.01592048, 1.26131153], [1516862400000, 0.01592048, 0.01594299, 0.0158802, 0.01594114, 5.9875068], [1516862460000, 0.0158802, 0.01595093, 0.01584, 0.01584, 16.99481774], [1516862520000, 0.01592048, 0.01592048, 0.01592048, 0.01592048, 1.94008784], [1516862580000, 0.01584, 0.01592047, 0.01584, 0.01592047, 15.94384029], [1516862640000, 0.01592047, 0.01592047, 0.01585, 0.01592047, 2.16530258], [1516862700000, 0.01585001, 0.01592047, 0.01585, 0.01585, 32.42616723], [1516862760000, 0.015934, 0.01594091, 0.01585, 0.01585, 5.76730766], [1516862820000, 0.01585002, 0.0159, 0.01585, 0.0159, 11.62957881], [1516862880000, 0.0159, 0.01594092, 0.01585, 0.01594092, 5.65856061], [1516862940000, 0.01585002, 0.01595093, 0.01585002, 0.01585002, 4.90154199], [1516863000000, 0.01585004, 0.01594093, 0.01585004, 0.01585004, 3.68665851], [1516863060000, 0.01585015, 0.0158521, 0.01585015, 0.0158521, 9.48475027], [1516863120000, 0.0158522, 0.01594092, 0.0158522, 0.01594092, 15.36506842], [1516863180000, 0.01594092, 0.01595097, 0.01585814, 0.01587072, 19.67012558], [1516863240000, 0.01595097, 0.01595097, 0.01587082, 0.01587122, 3.29529597], [1516863300000, 0.01595097, 0.01598959, 0.01588616, 0.01588616, 5.06468816], [1516863360000, 0.01588618, 0.01598958, 0.01588616, 0.01589411, 33.3802568], [1516863420000, 0.01589415, 0.01598958, 0.01589415, 0.01598958, 0.76013963], [1516863480000, 0.01598958, 0.01598958, 0.0158961, 0.0158962, 5.61030789], [1516863540000, 0.01589623, 0.01594, 0.01589623, 0.01589657, 4.46118525], [1516863600000, 0.01594, 0.01594, 0.01589666, 0.01594, 5.61734061], [1516863660000, 0.01589617, 0.01594, 0.01589617, 0.01594, 65.21170697], [1516863720000, 0.01594, 0.01594, 0.01589411, 0.01589411, 40.6821542], [1516863780000, 0.01594, 0.01594, 0.015887, 0.01589411, 48.76581628], [1516863840000, 0.01589411, 0.01589411, 0.01589411, 0.01589411, 16.65309604], [1516863900000, 0.015893, 0.01589411, 0.015893, 0.01589411, 23.48004894], [1516863960000, 0.01589411, 0.01589411, 0.015893, 0.015893, 58.96210007], [1516864020000, 0.01589411, 0.01594, 0.015893, 0.01589411, 129.23235064], [1516864080000, 0.01589411, 0.01589411, 0.015889, 0.015889, 5.28910615], [1516864140000, 0.015889, 0.01589411, 0.01588695, 0.015894, 22.0966384], [1516864200000, 0.01589411, 0.0159, 0.015894, 0.0159, 11.84662386], [1516864260000, 0.0159, 0.01594, 0.01589411, 0.01594, 22.82885042], [1516864320000, 0.01594, 0.01594, 0.01589411, 0.01594, 1.12420058], [1516864380000, 0.01590001, 0.01594, 0.01590001, 0.01590001, 16.13314031], [1516864440000, 0.01590001, 0.01590001, 0.0159, 0.0159, 12.4360246], [1516864500000, 0.01589411, 0.0159, 0.01585959, 0.0159, 56.68773962], [1516864560000, 0.0159, 0.01590001, 0.01586003, 0.01586005, 82.44566232], [1516864620000, 0.0159, 0.01590001, 0.01586007, 0.01586007, 49.10239297], [1516864680000, 0.01590001, 0.01590001, 0.01586501, 0.01590001, 14.46329776], [1516864740000, 0.01590001, 0.01590001, 0.0159, 0.01590001, 5.4591968], [1516864800000, 0.01590001, 0.01590001, 0.0159, 0.01590001, 26.68308444], [1516864860000, 0.01590001, 0.01590001, 0.0159, 0.01590001, 17.58093236], [1516864920000, 0.0159, 0.01590001, 0.0159, 0.01590001, 28.33949774], [1516864980000, 0.01590001, 0.01590002, 0.0159, 0.01590002, 18.01967795], [1516865040000, 0.0159, 0.01594, 0.0159, 0.01590001, 5.11324182], [1516865100000, 0.01590001, 0.01594, 0.01590001, 0.01594, 2.34730439], [1516865160000, 0.0159846, 0.0159846, 0.01586088, 0.01586089, 16.29346415], [1516865220000, 0.01586142, 0.015985, 0.01586142, 0.01586257, 17.58565556], [1516865280000, 0.01598499, 0.01598499, 0.01587808, 0.015884, 18.50138292], [1516865340000, 0.0159, 0.01590001, 0.0159, 0.01590001, 8.15165282], [1516865400000, 0.01590001, 0.01590001, 0.01586089, 0.01590001, 28.61220905], [1516865460000, 0.01590001, 0.01590001, 0.0159, 0.0159, 95.64580155], [1516865520000, 0.0159, 0.01594923, 0.0159, 0.0159, 16.41017209], [1516865580000, 0.01598498, 0.015985, 0.0159, 0.0159, 11.04218316], [1516865640000, 0.0159, 0.01597001, 0.0159, 0.01597, 30.94017745], [1516865700000, 0.01597001, 0.01598267, 0.0159, 0.01598267, 179.40213305], [1516865760000, 0.0159, 0.0159, 0.0159, 0.0159, 4.62972439], [1516865820000, 0.01598266, 0.015985, 0.01590035, 0.01590035, 1.97756483], [1516865880000, 0.01590035, 0.01590086, 0.0159, 0.0159, 7.4099974], [1516865940000, 0.01598494, 0.01598494, 0.0159, 0.0159, 4.02679586], [1516866000000, 0.0159, 0.01597539, 0.0159, 0.0159, 5.3523173], [1516866060000, 0.0159, 0.01597539, 0.0159, 0.0159009, 3.34072486], [1516866120000, 0.0159009, 0.01598987, 0.0159009, 0.01598987, 9.07890473], [1516866180000, 0.01597539, 0.01598987, 0.0159, 0.01598987, 1.94632592], [1516866240000, 0.01598987, 0.01598987, 0.0159, 0.0159, 71.7536415], [1516866300000, 0.01590001, 0.01598987, 0.01590001, 0.01598987, 10.06434207], [1516866360000, 0.01590001, 0.01598987, 0.01590001, 0.01590001, 0.99581302], [1516866420000, 0.01598987, 0.01598988, 0.0159, 0.0159, 65.23882093], [1516866480000, 0.01598987, 0.01598987, 0.0159, 0.01594, 5.1404388], [1516866540000, 0.0159, 0.01594, 0.0159, 0.0159, 41.49674147], [1516866600000, 0.0159, 0.01594, 0.0159, 0.01594, 5.14894571], [1516866660000, 0.0159, 0.01598984, 0.0159, 0.01598499, 104.84377489], [1516866720000, 0.0159, 0.01598497, 0.0159, 0.0159, 14.88970247], [1516866780000, 0.0159, 0.01598, 0.0159, 0.0159, 12.11756617], [1516866840000, 0.01597999, 0.01597999, 0.0159, 0.01597988, 12.98091971], [1516866900000, 0.0159, 0.01597971, 0.0158609, 0.0159, 5.14714141], [1516866960000, 0.01596899, 0.01596899, 0.01586088, 0.0159, 7.20118512], [1516867020000, 0.0159, 0.01596297, 0.01586088, 0.01596297, 7.82967077], [1516867080000, 0.01596297, 0.015963, 0.01586088, 0.015866, 13.91307037], [1516867140000, 0.015866, 0.01596299, 0.01586087, 0.01586087, 34.25212372], [1516867200000, 0.01586087, 0.01596299, 0.01585003, 0.01585501, 20.43106681], [1516867260000, 0.01596286, 0.01596286, 0.01586, 0.01586, 0.42954683], [1516867320000, 0.01586, 0.01597973, 0.01585794, 0.01585848, 53.95719288], [1516867380000, 0.0159797, 0.01597973, 0.01587003, 0.01587631, 13.73672212], [1516867440000, 0.0159, 0.0159, 0.01586006, 0.0159, 9.61317361], [1516867500000, 0.01597808, 0.01597808, 0.0159, 0.0159, 6.45550742], [1516867560000, 0.0159, 0.01598968, 0.0159, 0.01598968, 13.13095462], [1516867620000, 0.01590001, 0.01590001, 0.0159, 0.0159, 28.56579853], [1516867680000, 0.01598959, 0.01598959, 0.0159, 0.01590001, 7.51952556], [1516867740000, 0.0159896, 0.01598987, 0.0159, 0.0159, 8.73979203], [1516867800000, 0.01598987, 0.01598987, 0.0159, 0.0159, 2.15663517], [1516867860000, 0.01590012, 0.01598987, 0.0159, 0.01598987, 6.84490833], [1516867920000, 0.0159, 0.015989, 0.0159, 0.01590001, 2.18884931], [1516867980000, 0.01590001, 0.015989, 0.01590001, 0.01590002, 11.89850346], [1516868040000, 0.01590796, 0.01590796, 0.01590001, 0.01590002, 5.32718628], [1516868100000, 0.01590796, 0.01597999, 0.0159, 0.01590001, 51.76246398], [1516868160000, 0.01590001, 0.01590001, 0.01590001, 0.01590001, 3.72186314], [1516868220000, 0.01597, 0.01597, 0.0159, 0.01590001, 11.39868329], [1516868280000, 0.01590001, 0.01597, 0.01590001, 0.0159699, 23.87454487], [1516868340000, 0.0159699, 0.01598987, 0.0159699, 0.0159699, 61.02201475], [1516868400000, 0.0159845, 0.015985, 0.01590029, 0.01590029, 27.03632842], [1516868460000, 0.01590029, 0.015985, 0.01590029, 0.01590029, 37.60220667], [1516868520000, 0.015985, 0.015985, 0.01590002, 0.01590029, 28.0679293], [1516868580000, 0.01590029, 0.015985, 0.01590005, 0.01590005, 10.86457239], [1516868640000, 0.01590008, 0.01598987, 0.01590008, 0.015985, 40.36628973], [1516868700000, 0.015985, 0.015985, 0.01598497, 0.01598497, 0.31623169], [1516868760000, 0.01598397, 0.01598397, 0.01592003, 0.01592003, 21.61972079], [1516868820000, 0.01592003, 0.016, 0.015901, 0.01591001, 143.68116647], [1516868880000, 0.01598496, 0.01599999, 0.01590501, 0.01599999, 5.71995713], [1516868940000, 0.01599999, 0.01599999, 0.01590004, 0.01590004, 1.09022794], [1516869000000, 0.01590111, 0.0159984, 0.01590111, 0.0159984, 17.49551297], [1516869060000, 0.01590204, 0.01595115, 0.01590204, 0.01595115, 2.24753373], [1516869120000, 0.01590283, 0.016, 0.0159022, 0.016, 165.01608546], [1516869180000, 0.01590223, 0.016, 0.01590223, 0.016, 34.51847075], [1516869240000, 0.016, 0.016, 0.015907, 0.015907, 9.49142257], [1516869300000, 0.01600002, 0.01600012, 0.01590701, 0.01600012, 13.78242226], [1516869360000, 0.01600012, 0.01600012, 0.015912, 0.015922, 1.17814168], [1516869420000, 0.016, 0.016, 0.015922, 0.016, 9.84493494], [1516869480000, 0.0160001, 0.0160001, 0.016, 0.0160001, 3.32553564], [1516869540000, 0.01600012, 0.01600014, 0.01600012, 0.01600012, 28.17197016], [1516869600000, 0.01600705, 0.01603007, 0.016, 0.016, 36.56830919], [1516869660000, 0.016, 0.01604633, 0.016, 0.016, 45.76597864], [1516869720000, 0.016, 0.016, 0.01590702, 0.01590704, 16.14914551], [1516869780000, 0.01597788, 0.016012, 0.01597788, 0.016012, 4.32147617], [1516869840000, 0.01590708, 0.01601597, 0.01590702, 0.01601597, 5.92720556], [1516869900000, 0.01590716, 0.016045, 0.01590716, 0.016045, 29.57629166], [1516869960000, 0.015912, 0.015912, 0.015912, 0.015912, 1.99], [1516870020000, 0.016022, 0.016022, 0.01591202, 0.01591205, 4.73411388], [1516870080000, 0.01601699, 0.01601699, 0.01591201, 0.01601699, 5.00758216], [1516870140000, 0.01591202, 0.01601698, 0.01591202, 0.01601698, 2.10057179], [1516870200000, 0.016, 0.01601694, 0.01591201, 0.01601693, 13.75649453], [1516870260000, 0.01591203, 0.01591203, 0.01591203, 0.01591203, 4.8065068], [1516870320000, 0.0159171, 0.01601692, 0.01591204, 0.01591204, 75.43232147], [1516870380000, 0.01591204, 0.01591204, 0.01591204, 0.01591204, 50.44204102], [1516870440000, 0.01591204, 0.01591204, 0.015907, 0.01591201, 55.76276234], [1516870500000, 0.01591201, 0.01591204, 0.01591201, 0.01591204, 21.68665332], [1516870560000, 0.01591204, 0.01591204, 0.015907, 0.01591204, 18.30637968], [1516870620000, 0.01591204, 0.01591204, 0.015907, 0.01591204, 3.40787216], [1516870680000, 0.01591204, 0.01591204, 0.015907, 0.015907, 6.1931736], [1516870740000, 0.01591204, 0.01591204, 0.015907, 0.01591204, 3.85597963], [1516870800000, 0.01590701, 0.01591204, 0.01590113, 0.01590601, 27.68438588], [1516870860000, 0.01591204, 0.016, 0.01591204, 0.016, 84.20609557], [1516870920000, 0.01591208, 0.01601699, 0.01591208, 0.01601699, 10.26352307], [1516870980000, 0.01591267, 0.01602658, 0.01591267, 0.01602657, 77.76569047], [1516871040000, 0.016, 0.01602657, 0.016, 0.01602657, 19.19559172], [1516871100000, 0.016, 0.01602657, 0.016, 0.016, 9.35520638], [1516871160000, 0.01602655, 0.01602655, 0.016, 0.016, 14.45962485], [1516871220000, 0.016, 0.01602653, 0.016, 0.016, 1.99346651], [1516871280000, 0.016, 0.01602657, 0.01598662, 0.01602657, 38.08211224], [1516871340000, 0.01598664, 0.01602657, 0.01598664, 0.01602555, 26.5190303], [1516871400000, 0.01598666, 0.01602699, 0.01598665, 0.01598667, 54.85938261], [1516871460000, 0.01598669, 0.01602656, 0.01598668, 0.0159867, 2.34070101], [1516871520000, 0.01602656, 0.01602699, 0.01598673, 0.01598673, 21.36728572], [1516871580000, 0.01598673, 0.01602699, 0.01598673, 0.01598677, 182.58512255], [1516871640000, 0.01602699, 0.01602699, 0.01598675, 0.01602699, 66.77484819], [1516871700000, 0.01602699, 0.01602699, 0.01598675, 0.01602699, 13.12955473], [1516871760000, 0.016027, 0.01604633, 0.016027, 0.01604633, 16.525776], [1516871820000, 0.016027, 0.01604633, 0.01598676, 0.01599001, 10.53336221], [1516871880000, 0.01599002, 0.01599002, 0.01599001, 0.01599002, 46.40923813], [1516871940000, 0.01603, 0.01605, 0.01599002, 0.01605, 104.11676833], [1516872000000, 0.01603, 0.01605, 0.01599002, 0.01599003, 11.72522215], [1516872060000, 0.01599003, 0.01599003, 0.01598676, 0.01598676, 72.30294613], [1516872120000, 0.01599002, 0.01604, 0.01598676, 0.01599002, 43.71894616], [1516872180000, 0.01604998, 0.01604998, 0.01599002, 0.01599002, 2.86964324], [1516872240000, 0.016049, 0.016049, 0.01599002, 0.01599003, 12.50249447], [1516872300000, 0.01599003, 0.01604898, 0.01599003, 0.01599003, 2.05182767], [1516872360000, 0.01604898, 0.01604898, 0.01599004, 0.01599004, 3.95521656], [1516872420000, 0.01599004, 0.01604898, 0.01599004, 0.01599004, 11.51550428], [1516872480000, 0.01599004, 0.01599004, 0.01599004, 0.01599004, 0.62834746], [1516872540000, 0.01604, 0.01604889, 0.01599004, 0.01599004, 3.31970509], [1516872600000, 0.01604889, 0.01604889, 0.01599002, 0.01599002, 17.41145543], [1516872660000, 0.01599004, 0.01599004, 0.01598669, 0.01599004, 37.31913796], [1516872720000, 0.01598669, 0.01599004, 0.01595508, 0.01599004, 34.23706454], [1516872780000, 0.01599003, 0.01599003, 0.01592222, 0.01595508, 17.95031908], [1516872840000, 0.01594103, 0.01595, 0.01592222, 0.01594998, 4.48011436], [1516872900000, 0.01594998, 0.01599003, 0.01592222, 0.01592222, 2.91143982], [1516872960000, 0.01595, 0.01595, 0.01592222, 0.01595, 23.04685158], [1516873020000, 0.01592223, 0.01599003, 0.01592223, 0.01598999, 8.83068234], [1516873080000, 0.01599, 0.0160499, 0.01598999, 0.01599, 34.20073561], [1516873140000, 0.0160499, 0.0160499, 0.01594102, 0.01596001, 2.74052258], [1516873200000, 0.01596007, 0.0160499, 0.01595003, 0.0160499, 6.88877784], [1516873260000, 0.01600599, 0.01605, 0.01595009, 0.01605, 7.55539559], [1516873320000, 0.01605, 0.01605, 0.01600599, 0.01605, 12.30159965], [1516873380000, 0.01605, 0.01605, 0.01600599, 0.01605, 5.19284646], [1516873440000, 0.0160362, 0.01605, 0.01600599, 0.0160362, 3.91281264], [1516873500000, 0.0160362, 0.0160362, 0.01600599, 0.0160361, 9.56051165], [1516873560000, 0.0160361, 0.0160361, 0.01600599, 0.01600599, 2.38358793], [1516873620000, 0.0160361, 0.0160362, 0.01600599, 0.01600599, 2.14198433], [1516873680000, 0.01603619, 0.01603619, 0.01600599, 0.01600599, 1.34947507], [1516873740000, 0.01603618, 0.01603618, 0.01595015, 0.01603615, 27.37666002], [1516873800000, 0.015955, 0.01603618, 0.01593422, 0.01598, 58.36243742], [1516873860000, 0.01598, 0.01600286, 0.01598, 0.016, 4.06488719], [1516873920000, 0.016, 0.016, 0.01592235, 0.016, 13.09341928], [1516873980000, 0.01599714, 0.01599714, 0.01592222, 0.01592222, 45.24398932], [1516874040000, 0.01592222, 0.01596998, 0.01590114, 0.01596998, 14.64233064], [1516874100000, 0.01591206, 0.01596998, 0.01591206, 0.01596998, 2.35060349], [1516874160000, 0.016, 0.016, 0.01590116, 0.016, 11.05941292], [1516874220000, 0.016, 0.01600286, 0.01590302, 0.01600286, 9.30197593], [1516874280000, 0.01600286, 0.01600286, 0.01592, 0.01592, 1.33116336], [1516874340000, 0.01600285, 0.01600286, 0.01592166, 0.01592179, 2.83246142], [1516874400000, 0.01592189, 0.01600286, 0.01592189, 0.01600286, 8.56878244], [1516874460000, 0.01600285, 0.01600286, 0.01600285, 0.01600285, 4.4221773], [1516874520000, 0.01600285, 0.01600285, 0.01600285, 0.01600285, 1.6125755], [1516874580000, 0.01592179, 0.01592179, 0.01590118, 0.01590118, 0.72125541], [1516874640000, 0.01592179, 0.01592179, 0.01592179, 0.01592179, 25.0], [1516874700000, 0.016, 0.016, 0.01592179, 0.01592179, 0.54827294], [1516874760000, 0.0159219, 0.016, 0.01592189, 0.016, 7.55539047], [1516874820000, 0.016, 0.0160015, 0.0159219, 0.0160015, 211.01124497], [1516874880000, 0.0160015, 0.0160025, 0.0160015, 0.0160025, 7.81187214], [1516874940000, 0.0160025, 0.01600284, 0.0160025, 0.0160026, 9.09902061], [1516875000000, 0.0160026, 0.0160026, 0.0160025, 0.0160025, 43.00902026], [1516875060000, 0.0160025, 0.0160026, 0.0160025, 0.0160025, 13.66735197], [1516875120000, 0.0160026, 0.01600284, 0.0160025, 0.0160025, 13.43354104], [1516875180000, 0.0160025, 0.0160026, 0.0159618, 0.016, 41.65829013], [1516875240000, 0.0160025, 0.0160025, 0.0159618, 0.0160025, 6.19083772], [1516875300000, 0.0160025, 0.0160025, 0.0159618, 0.0159618, 5.54827946], [1516875360000, 0.0160025, 0.0160025, 0.0159618, 0.0160025, 9.6529541], [1516875420000, 0.0159618, 0.0160025, 0.0159618, 0.0159618, 10.60733254], [1516875480000, 0.0160025, 0.0160025, 0.0159618, 0.0159618, 4.51682598], [1516875540000, 0.0159618, 0.0159618, 0.01595, 0.01595, 2.1249058], [1516875600000, 0.0159618, 0.0159618, 0.0159, 0.01595, 99.23595027], [1516875660000, 0.01595, 0.01596179, 0.0159, 0.01595, 5.72954232], [1516875720000, 0.01590002, 0.01595, 0.01590002, 0.01592001, 10.17559285], [1516875780000, 0.01595, 0.01596179, 0.01592001, 0.01595, 5.80416472], [1516875840000, 0.01595, 0.01596179, 0.01595, 0.01596179, 3.06485041], [1516875900000, 0.01596179, 0.0159618, 0.01592003, 0.0159618, 24.5855152], [1516875960000, 0.0159618, 0.0159618, 0.01590001, 0.01590001, 21.49620759], [1516876020000, 0.01590011, 0.0160025, 0.0159001, 0.0160025, 24.33325433], [1516876080000, 0.01590011, 0.0159618, 0.01590011, 0.01590014, 8.27085949], [1516876140000, 0.0159618, 0.01596181, 0.0159, 0.0159, 39.37361177], [1516876200000, 0.0159618, 0.0160027, 0.01590011, 0.0160027, 2.26262241], [1516876260000, 0.01600262, 0.0160027, 0.01590041, 0.01597069, 1.0843392], [1516876320000, 0.01597069, 0.01597069, 0.01597069, 0.01597069, 0.75205541], [1516876380000, 0.0160027, 0.0160027, 0.0160027, 0.0160027, 3.75713759], [1516876440000, 0.01597069, 0.0160027, 0.01597069, 0.01600032, 0.77991105], [1516876500000, 0.01597069, 0.01600032, 0.01597069, 0.01600032, 9.59519617], [1516876560000, 0.01597069, 0.01600032, 0.01597069, 0.01600032, 2.60328482], [1516876620000, 0.01598069, 0.01600032, 0.01598069, 0.016, 2.23604918], [1516876680000, 0.016, 0.01600285, 0.01598069, 0.01600285, 16.05474767], [1516876740000, 0.0160027, 0.01600285, 0.01597069, 0.01597069, 10.38574035], [1516876800000, 0.01597069, 0.01600285, 0.01597069, 0.01600285, 12.18265282], [1516876860000, 0.01600285, 0.01601, 0.01600285, 0.01600285, 0.24743582], [1516876920000, 0.01601, 0.01602479, 0.01600285, 0.01600285, 26.50086724], [1516876980000, 0.01602478, 0.01602478, 0.01600285, 0.01602477, 3.45880622], [1516877040000, 0.01602477, 0.01602477, 0.01597069, 0.01602476, 8.86409452], [1516877100000, 0.01597069, 0.01602476, 0.01594694, 0.01594694, 8.74922657], [1516877160000, 0.01597069, 0.01603, 0.01594694, 0.01603, 19.3539529], [1516877220000, 0.01602999, 0.01603618, 0.01594694, 0.01603618, 41.73296168], [1516877280000, 0.01594694, 0.0160362, 0.01592001, 0.0160362, 35.4287285], [1516877340000, 0.01603617, 0.01603617, 0.01593025, 0.01603617, 4.50505645], [1516877400000, 0.01603617, 0.01603617, 0.016, 0.016, 2.83041582], [1516877460000, 0.016, 0.01603617, 0.016, 0.016, 3.81330881], [1516877520000, 0.016, 0.016, 0.016, 0.016, 0.62445744], [1516877580000, 0.016, 0.016, 0.01592132, 0.016, 73.60557883], [1516877640000, 0.01592009, 0.01592009, 0.01592009, 0.01592009, 2.20653838], [1516877700000, 0.016, 0.016, 0.01592021, 0.01592032, 10.48691993], [1516877760000, 0.016, 0.01603617, 0.01592036, 0.016016, 45.80297655], [1516877820000, 0.01603, 0.0160425, 0.016, 0.01603, 68.07409964], [1516877880000, 0.01603, 0.01603, 0.016, 0.016016, 14.663288], [1516877940000, 0.0160168, 0.0160425, 0.016016, 0.016016, 47.21658906], [1516878000000, 0.01593208, 0.0160425, 0.01593208, 0.01593403, 98.91299405], [1516878060000, 0.016, 0.0160425, 0.01593439, 0.016016, 18.68646404], [1516878120000, 0.016016, 0.01605, 0.01593454, 0.01593475, 38.55417426], [1516878180000, 0.01601601, 0.01605, 0.01597935, 0.01603202, 29.71229364], [1516878240000, 0.01603202, 0.01605002, 0.01593687, 0.01605002, 27.47668724], [1516878300000, 0.01593687, 0.01605002, 0.01593487, 0.01605001, 29.64279072], [1516878360000, 0.01593557, 0.01604938, 0.01593475, 0.01593477, 6.94713641], [1516878420000, 0.01593477, 0.01604919, 0.01593475, 0.01593477, 20.34060046], [1516878480000, 0.01597, 0.01604859, 0.01597, 0.01597, 67.48845181], [1516878540000, 0.01597, 0.01604782, 0.01597, 0.01597, 4.80365373], [1516878600000, 0.01597, 0.01604743, 0.01597, 0.01603995, 20.06264972], [1516878660000, 0.01597, 0.01597, 0.01593477, 0.01596999, 5.51269223], [1516878720000, 0.01596999, 0.01597, 0.01593478, 0.01593478, 1.71896765], [1516878780000, 0.01596999, 0.01603632, 0.01593477, 0.01593477, 10.41522414], [1516878840000, 0.01593477, 0.016031, 0.01593477, 0.016031, 2.57836314], [1516878900000, 0.01602, 0.01602, 0.01593478, 0.01593478, 21.84169097], [1516878960000, 0.01593478, 0.01593479, 0.01593478, 0.01593479, 4.20667859], [1516879020000, 0.01593479, 0.01593479, 0.01593477, 0.01593478, 9.70307691], [1516879080000, 0.01593478, 0.01601868, 0.01593478, 0.01593479, 6.94564516], [1516879140000, 0.01601868, 0.01601868, 0.01593479, 0.01593479, 4.54284404], [1516879200000, 0.01601868, 0.01601868, 0.01593479, 0.01593479, 40.0413118], [1516879260000, 0.01601868, 0.01601868, 0.01590001, 0.01591985, 37.46172928], [1516879320000, 0.01591985, 0.01591987, 0.01591985, 0.01591987, 15.50324278], [1516879380000, 0.01591987, 0.016, 0.01591987, 0.01593478, 6.51574465], [1516879440000, 0.01592, 0.01593478, 0.01592, 0.01593477, 27.72491083], [1516879500000, 0.01593477, 0.01593477, 0.0159, 0.01592, 19.92488373], [1516879560000, 0.01592, 0.01593478, 0.0159, 0.01593478, 28.5411721], [1516879620000, 0.01593478, 0.01593478, 0.01590001, 0.01593478, 41.82037469], [1516879680000, 0.01593478, 0.016, 0.01590002, 0.01593478, 7.56259607], [1516879740000, 0.01593478, 0.01593478, 0.01590002, 0.01593477, 9.82556034], [1516879800000, 0.0159, 0.01593477, 0.01588267, 0.01593477, 21.17701237], [1516879860000, 0.01593477, 0.01593477, 0.01590005, 0.01590008, 18.52992478], [1516879920000, 0.01593476, 0.01593477, 0.01590006, 0.01593475, 11.73878187], [1516879980000, 0.01593475, 0.01593477, 0.01590006, 0.01593477, 11.96144615], [1516880040000, 0.01593, 0.01593, 0.01590007, 0.01590007, 0.78393313], [1516880100000, 0.01590007, 0.01593477, 0.01590007, 0.01593477, 7.62937994], [1516880160000, 0.01593, 0.01593477, 0.01590007, 0.01593477, 20.05069448], [1516880220000, 0.01593477, 0.015989, 0.01588276, 0.015989, 25.53890109], [1516880280000, 0.01598992, 0.015995, 0.01598988, 0.01599496, 6.64297349], [1516880340000, 0.01599496, 0.01599991, 0.01589916, 0.01599986, 7.75446913], [1516880400000, 0.01599978, 0.01599991, 0.015999, 0.015999, 5.24402213], [1516880460000, 0.0159993, 0.01599931, 0.01589972, 0.01589979, 6.39886962], [1516880520000, 0.01589985, 0.01589991, 0.0158998, 0.01589989, 14.94352304], [1516880580000, 0.01589987, 0.015995, 0.01589987, 0.015995, 1.28606419], [1516880640000, 0.015995, 0.01599997, 0.01588322, 0.0159993, 14.31337537], [1516880700000, 0.0159993, 0.0159993, 0.01588989, 0.01598999, 6.18375279], [1516880760000, 0.01598999, 0.015995, 0.01598999, 0.01598999, 6.24568828], [1516880820000, 0.015995, 0.015995, 0.01598999, 0.01598999, 5.79233525], [1516880880000, 0.01599499, 0.015995, 0.0159, 0.0159, 25.25017924], [1516880940000, 0.0159, 0.01599, 0.0159, 0.01599, 7.54583029], [1516881000000, 0.01599, 0.01599997, 0.01599, 0.01599, 27.36979256], [1516881060000, 0.01599, 0.01599997, 0.01599, 0.01599001, 32.30595559], [1516881120000, 0.01599001, 0.01599997, 0.01599, 0.01599, 20.05922629], [1516881180000, 0.01590004, 0.01599997, 0.01590004, 0.01599996, 13.35435901], [1516881240000, 0.01599997, 0.016, 0.01599996, 0.016, 55.51370932], [1516881300000, 0.01599997, 0.016, 0.01599997, 0.016, 4.08597788], [1516881360000, 0.016, 0.016, 0.01595002, 0.01596378, 8.74094926], [1516881420000, 0.01599997, 0.01599997, 0.01595025, 0.01595025, 3.3291343], [1516881480000, 0.01599997, 0.01599997, 0.01595022, 0.01599997, 6.18391804], [1516881540000, 0.01599997, 0.01599997, 0.01595001, 0.01599997, 7.91972284], [1516881600000, 0.0159503, 0.01599997, 0.01594014, 0.01599997, 11.45000268], [1516881660000, 0.01594045, 0.01599997, 0.01594002, 0.01599997, 22.38799065], [1516881720000, 0.01599997, 0.01599997, 0.01599996, 0.01599997, 1.4499258], [1516881780000, 0.01599997, 0.01602, 0.01599997, 0.01602, 18.13442149], [1516881840000, 0.01602, 0.01603, 0.01602, 0.01603, 36.86355555], [1516881900000, 0.01602, 0.01603478, 0.01599996, 0.01603478, 5.13420575], [1516881960000, 0.01603478, 0.01605002, 0.01599996, 0.01603, 36.59909549], [1516882020000, 0.01603, 0.01603, 0.016, 0.016, 19.66744819], [1516882080000, 0.016, 0.016, 0.01597882, 0.01597882, 24.56809959], [1516882140000, 0.01597882, 0.01597882, 0.01594, 0.01594001, 10.63351403], [1516882200000, 0.01597882, 0.01603, 0.01589342, 0.01592615, 43.20688321], [1516882260000, 0.01592631, 0.016, 0.01592631, 0.016, 22.26896904], [1516882320000, 0.016, 0.01603, 0.01593806, 0.01595104, 14.66707068], [1516882380000, 0.01595104, 0.01603, 0.01595104, 0.01603, 5.4629777], [1516882440000, 0.01603, 0.01605002, 0.01595105, 0.01605002, 7.56835661], [1516882500000, 0.01605002, 0.01605002, 0.01595105, 0.01595105, 5.09805618], [1516882560000, 0.01605002, 0.01605002, 0.01605002, 0.01605002, 2.12934182], [1516882620000, 0.01605002, 0.01605032, 0.01595111, 0.01605002, 15.89711626], [1516882680000, 0.0160505, 0.0160605, 0.01600859, 0.0160605, 19.0498098], [1516882740000, 0.0160505, 0.0160605, 0.01600859, 0.01600859, 8.8020674], [1516882800000, 0.01600859, 0.01600859, 0.01595106, 0.01600859, 9.76748452], [1516882860000, 0.01595108, 0.01600859, 0.01595108, 0.01600859, 6.91817902], [1516882920000, 0.01600859, 0.01600859, 0.01592756, 0.01600859, 7.98777276], [1516882980000, 0.01600859, 0.01600859, 0.01592763, 0.01600859, 13.50964675], [1516883040000, 0.01600859, 0.01600859, 0.01594305, 0.01600859, 8.23406301], [1516883100000, 0.01600859, 0.01600859, 0.01595302, 0.01595302, 5.1146617], [1516883160000, 0.01595302, 0.01600859, 0.01595302, 0.01600859, 6.73657223], [1516883220000, 0.01600859, 0.01600859, 0.016, 0.01600859, 3.85582813], [1516883280000, 0.01600859, 0.01600859, 0.016, 0.01600859, 1.77330023], [1516883340000, 0.01600859, 0.0160605, 0.016, 0.016, 5.79069213], [1516883400000, 0.016, 0.0160605, 0.016, 0.01600101, 6.82752897], [1516883460000, 0.0160605, 0.01607, 0.0160605, 0.01607, 14.09694742], [1516883520000, 0.01607, 0.01607, 0.016013, 0.016013, 28.89476738], [1516883580000, 0.01598056, 0.016013, 0.0159632, 0.016013, 4.47340619], [1516883640000, 0.016013, 0.016013, 0.01596338, 0.01601, 14.050648], [1516883700000, 0.01601, 0.01607, 0.01596441, 0.01601, 15.84098408], [1516883760000, 0.01607, 0.01607, 0.01596448, 0.01596448, 32.87640962], [1516883820000, 0.01606999, 0.01607, 0.01596459, 0.01607, 95.90530317], [1516883880000, 0.01607, 0.01607, 0.01596463, 0.01601, 6.98804446], [1516883940000, 0.016, 0.01606, 0.01596506, 0.01604984, 22.28654341], [1516884000000, 0.01604984, 0.01606, 0.01598142, 0.01598201, 26.51665882], [1516884060000, 0.01605999, 0.01606, 0.01605999, 0.01605999, 12.87962134], [1516884120000, 0.01605999, 0.01606, 0.01598213, 0.01598213, 20.09136088], [1516884180000, 0.01598212, 0.01606, 0.01598212, 0.01598333, 20.06077542], [1516884240000, 0.01598333, 0.016057, 0.01598333, 0.01598338, 10.20316596], [1516884300000, 0.01605999, 0.01606, 0.016057, 0.016057, 9.67326061], [1516884360000, 0.016057, 0.016057, 0.01598338, 0.016057, 7.30465502], [1516884420000, 0.016057, 0.01605999, 0.01598338, 0.01605999, 9.07275207], [1516884480000, 0.01605999, 0.01605999, 0.01598339, 0.01598667, 4.66832959], [1516884540000, 0.01605999, 0.01606, 0.01598667, 0.01606, 9.57821514], [1516884600000, 0.01606, 0.01607, 0.01606, 0.01606, 122.87145996], [1516884660000, 0.01607, 0.01607, 0.01606, 0.01607, 5.57762682], [1516884720000, 0.01606, 0.01606, 0.01606, 0.01606, 37.84611092], [1516884780000, 0.01606, 0.01607, 0.01606, 0.01606, 35.79996013], [1516884840000, 0.01606, 0.01607, 0.01606, 0.01606, 7.26168833], [1516884900000, 0.01606, 0.01607, 0.01606, 0.01606, 10.50177136], [1516884960000, 0.01607, 0.01607, 0.01606, 0.01606, 17.52442927], [1516885020000, 0.01606001, 0.01607, 0.01606, 0.01607, 21.45151962], [1516885080000, 0.01606, 0.01607, 0.01606, 0.01606001, 14.27263852], [1516885140000, 0.01606001, 0.01607, 0.01606, 0.01606, 23.2890255], [1516885200000, 0.01606, 0.01606997, 0.01606, 0.01606997, 18.76255703], [1516885260000, 0.01606997, 0.01606997, 0.01598669, 0.01606497, 1.9], [1516885320000, 0.01598669, 0.01606492, 0.01595, 0.01598669, 4.63990853], [1516885380000, 0.01598669, 0.01606495, 0.01594304, 0.016, 43.39232554], [1516885440000, 0.01606, 0.01606, 0.01594302, 0.01594404, 38.21386129], [1516885500000, 0.016, 0.01606, 0.0159444, 0.0159444, 4.69147597], [1516885560000, 0.016, 0.01605994, 0.016, 0.01605987, 3.81649668], [1516885620000, 0.016, 0.016, 0.01595001, 0.01595001, 2.53434186], [1516885680000, 0.016, 0.016, 0.01599, 0.01599, 0.50276495], [1516885740000, 0.01599, 0.01599, 0.01595001, 0.01598999, 3.46423092], [1516885800000, 0.01599, 0.016, 0.01598999, 0.016, 27.11023673], [1516885860000, 0.016, 0.01606494, 0.01595001, 0.01595001, 30.48575903], [1516885920000, 0.01605996, 0.01605996, 0.01594301, 0.01595, 11.20200324], [1516885980000, 0.01594301, 0.01595001, 0.0159008, 0.0159008, 62.04386431], [1516886040000, 0.01595, 0.01595001, 0.01595, 0.01595001, 10.76215082], [1516886100000, 0.01595001, 0.01595001, 0.01594936, 0.01594937, 86.7176195], [1516886160000, 0.01595001, 0.01595001, 0.01594937, 0.01595001, 4.70554136], [1516886220000, 0.01595001, 0.01595001, 0.01594936, 0.01595001, 15.95042392], [1516886280000, 0.01595001, 0.01595001, 0.01594301, 0.01594301, 21.38847911], [1516886340000, 0.01595001, 0.01595001, 0.01594301, 0.01595001, 209.15978297], [1516886400000, 0.01595001, 0.01595001, 0.01594301, 0.01595001, 54.60302323], [1516886460000, 0.01595001, 0.01595001, 0.01595001, 0.01595001, 1.6048381], [1516886520000, 0.01595001, 0.01595001, 0.01594301, 0.01595001, 2.31344673], [1516886580000, 0.01595001, 0.01595001, 0.01594301, 0.01595001, 19.14032162], [1516886640000, 0.01595001, 0.01595001, 0.01594302, 0.01594302, 68.704556], [1516886700000, 0.01595001, 0.01595001, 0.01595001, 0.01595001, 30.74812335], [1516886760000, 0.01595001, 0.01595001, 0.01594302, 0.01595001, 4.68906208], [1516886820000, 0.015944, 0.01595001, 0.015944, 0.01594405, 12.58329617], [1516886880000, 0.01594405, 0.01595001, 0.01594401, 0.01594402, 103.46101212], [1516886940000, 0.01595, 0.01595001, 0.01595, 0.01595001, 8.69595205], [1516887000000, 0.01595001, 0.01595001, 0.01595, 0.01595001, 39.64275021], [1516887060000, 0.01595001, 0.01595001, 0.01595, 0.01595001, 33.35638363], [1516887120000, 0.01595001, 0.01595001, 0.01595, 0.01595, 4.94245415], [1516887180000, 0.01595001, 0.01595001, 0.01595, 0.01595, 4.1326963], [1516887240000, 0.01595, 0.01596, 0.01595, 0.01596, 6.48749043], [1516887300000, 0.016, 0.016, 0.01595, 0.01599968, 6.53119584], [1516887360000, 0.016, 0.016, 0.016, 0.016, 18.42115735], [1516887420000, 0.01595, 0.01604499, 0.01595, 0.01595, 41.32806577], [1516887480000, 0.01595, 0.01604496, 0.01595, 0.01599968, 22.11287655], [1516887540000, 0.01599968, 0.01603994, 0.01595, 0.01595, 16.64319875], [1516887600000, 0.01595, 0.01603988, 0.01595, 0.01595, 46.8652433], [1516887660000, 0.01595, 0.016, 0.01595, 0.01595, 22.65957594], [1516887720000, 0.01603977, 0.01603977, 0.016, 0.01603962, 14.68824792], [1516887780000, 0.01603976, 0.01603976, 0.016, 0.01603975, 3.32760387], [1516887840000, 0.016, 0.01603972, 0.016, 0.01603972, 6.95310646], [1516887900000, 0.01603972, 0.01603972, 0.016, 0.016, 4.27411033], [1516887960000, 0.01603971, 0.01603971, 0.01595, 0.016003, 63.83643809], [1516888020000, 0.01600299, 0.01600299, 0.01595, 0.01595, 7.85124834], [1516888080000, 0.01595, 0.01600299, 0.01595, 0.01595001, 8.1205337], [1516888140000, 0.01595001, 0.01600299, 0.01595, 0.01595001, 18.01955512], [1516888200000, 0.01595001, 0.01595001, 0.01595, 0.01595001, 8.14557719], [1516888260000, 0.01595, 0.01595001, 0.01595, 0.01595, 8.74453528], [1516888320000, 0.01595, 0.01595001, 0.01595, 0.01595, 17.0780958], [1516888380000, 0.01595001, 0.01595001, 0.01595, 0.01595001, 1.0156045], [1516888440000, 0.01595001, 0.01595001, 0.01595, 0.01595, 61.3198669], [1516888500000, 0.01595001, 0.01595001, 0.01595, 0.01595, 2.82727255], [1516888560000, 0.01595001, 0.01595001, 0.01595, 0.01595001, 11.11281571], [1516888620000, 0.01595001, 0.01595001, 0.01595, 0.01595, 24.52799777], [1516888680000, 0.01595001, 0.01595001, 0.01595001, 0.01595001, 6.9782195], [1516888740000, 0.01595001, 0.01595001, 0.01595, 0.01595001, 5.51248897], [1516888800000, 0.01595001, 0.01600299, 0.01595, 0.01595001, 48.25705025], [1516888860000, 0.01595004, 0.01600299, 0.01595, 0.01595001, 12.79887768], [1516888920000, 0.01595001, 0.01603975, 0.01595, 0.01595022, 38.23729953], [1516888980000, 0.01603975, 0.01603975, 0.01595042, 0.01603974, 10.7212866], [1516889040000, 0.01603953, 0.01603953, 0.01595042, 0.01595042, 10.83996835], [1516889100000, 0.01595043, 0.01603974, 0.01595042, 0.01597416, 15.50675453], [1516889160000, 0.015975, 0.015975, 0.01595, 0.01595, 45.91360327], [1516889220000, 0.01595, 0.01595001, 0.01595, 0.01595001, 0.64575381], [1516889280000, 0.01595002, 0.0159501, 0.01595002, 0.0159501, 0.91327863], [1516889340000, 0.01595012, 0.01603674, 0.01595012, 0.01603674, 16.32519781], [1516889400000, 0.01595012, 0.01603673, 0.01595012, 0.01595012, 11.37802394], [1516889460000, 0.01595012, 0.01603497, 0.01595011, 0.01595011, 1.04817856], [1516889520000, 0.01603296, 0.01603296, 0.01595011, 0.01602, 6.19287028], [1516889580000, 0.016018, 0.016018, 0.016, 0.01601798, 7.82317849], [1516889640000, 0.01601798, 0.01601798, 0.0159501, 0.0159501, 35.91765778], [1516889700000, 0.015955, 0.01601798, 0.0159501, 0.01601597, 23.07357854], [1516889760000, 0.015955, 0.01601596, 0.015955, 0.01601596, 15.86174723], [1516889820000, 0.01601596, 0.01601596, 0.015955, 0.015955, 11.00074501], [1516889880000, 0.01601, 0.01601596, 0.0159501, 0.0159501, 18.44227896], [1516889940000, 0.0159501, 0.01601, 0.0159501, 0.01601, 6.63204915], [1516890000000, 0.0159501, 0.01600598, 0.0159501, 0.0159501, 7.24839379], [1516890060000, 0.0159501, 0.0159501, 0.01595, 0.0159501, 51.37741947], [1516890120000, 0.0160059, 0.01600596, 0.01595, 0.01595, 24.76633692], [1516890180000, 0.016, 0.016, 0.01595001, 0.01595001, 3.98885709], [1516890240000, 0.01595001, 0.01595001, 0.01594997, 0.01595001, 21.97655694], [1516890300000, 0.01599994, 0.016008, 0.0159999, 0.016008, 10.68393842], [1516890360000, 0.0160059, 0.016008, 0.0160059, 0.016008, 11.52041828], [1516890420000, 0.01601, 0.01601597, 0.01594997, 0.016008, 33.20719296], [1516890480000, 0.016008, 0.016008, 0.01595, 0.01595, 3.40937418], [1516890540000, 0.01595, 0.01595, 0.01595, 0.01595, 1.0], [1516890600000, 0.01595, 0.016008, 0.01595, 0.016008, 45.63004212], [1516890660000, 0.01594999, 0.01594999, 0.01594999, 0.01594999, 2.75500872], [1516890720000, 0.016, 0.016008, 0.016, 0.016008, 11.21390696], [1516890780000, 0.016008, 0.01601597, 0.016008, 0.016008, 2.33001693], [1516890840000, 0.016008, 0.016008, 0.016008, 0.016008, 2.45969832], [1516890900000, 0.016009, 0.016009, 0.01600001, 0.01600001, 8.13766155], [1516890960000, 0.01600899, 0.01600899, 0.01600001, 0.01600899, 2.51602641], [1516891020000, 0.01600899, 0.01600899, 0.016, 0.016, 22.56668279], [1516891080000, 0.01595333, 0.01595333, 0.01594999, 0.01595333, 10.22520171], [1516891140000, 0.01595333, 0.01595333, 0.0159533, 0.0159533, 6.09248251], [1516891200000, 0.01599353, 0.01599353, 0.0159533, 0.0159533, 5.23169477], [1516891260000, 0.01597343, 0.01599353, 0.01594997, 0.0159533, 25.396986], [1516891320000, 0.0159533, 0.016, 0.01594998, 0.016, 30.45885073], [1516891380000, 0.01595, 0.01599, 0.01595, 0.01599, 3.4377906], [1516891440000, 0.01599, 0.01599, 0.01599, 0.01599, 4.51852327], [1516891500000, 0.01599, 0.01601597, 0.01595331, 0.01599, 108.65934563], [1516891560000, 0.01599, 0.01599, 0.01595332, 0.01599, 14.68128525], [1516891620000, 0.01599, 0.01599, 0.01595332, 0.01599, 15.68769407], [1516891680000, 0.01598999, 0.01598999, 0.01595336, 0.01598998, 70.35604693], [1516891740000, 0.01598998, 0.01599, 0.0159635, 0.01598998, 9.41005982], [1516891800000, 0.01596351, 0.01598998, 0.01596351, 0.01598998, 5.82799053], [1516891860000, 0.01598998, 0.01598998, 0.01596352, 0.01596453, 46.51196733], [1516891920000, 0.01598998, 0.01598998, 0.01596351, 0.01598998, 4.64993645], [1516891980000, 0.01598998, 0.01598998, 0.01598351, 0.01598998, 2.01113317], [1516892040000, 0.01598998, 0.01599, 0.01598351, 0.01599, 34.77458355], [1516892100000, 0.01599, 0.01603295, 0.01599, 0.01603295, 53.18393091], [1516892160000, 0.01603295, 0.01603975, 0.01601723, 0.01603975, 45.31459626], [1516892220000, 0.01603975, 0.01603975, 0.01603975, 0.01603975, 3.44434206], [1516892280000, 0.016, 0.01603975, 0.016, 0.01603975, 4.92287727], [1516892340000, 0.016, 0.01603975, 0.016, 0.01603975, 19.771066], [1516892400000, 0.01603975, 0.01603975, 0.016, 0.01603975, 14.35325708], [1516892460000, 0.01603975, 0.01604499, 0.016, 0.01604499, 41.63273858], [1516892520000, 0.016, 0.01604499, 0.016, 0.01604499, 15.1532721], [1516892580000, 0.016, 0.01604499, 0.016, 0.016, 2.96250913], [1516892640000, 0.016, 0.016, 0.01599, 0.01599, 11.92953172], [1516892700000, 0.01599, 0.01604484, 0.01599, 0.01604484, 17.29208805], [1516892760000, 0.01604484, 0.01604489, 0.016, 0.016, 7.62120449], [1516892820000, 0.016, 0.01604499, 0.015999, 0.015999, 6.12913958], [1516892880000, 0.015999, 0.015999, 0.015999, 0.015999, 27.01382841], [1516892940000, 0.01604499, 0.01605352, 0.015999, 0.015999, 47.21244433], [1516893000000, 0.015999, 0.01605001, 0.015999, 0.016, 18.36223287], [1516893060000, 0.01604981, 0.01604981, 0.015999, 0.015999, 28.56766138], [1516893120000, 0.015999, 0.0160498, 0.015999, 0.015999, 4.31219612], [1516893180000, 0.015999, 0.016, 0.015999, 0.015999, 16.69218209], [1516893240000, 0.016, 0.016, 0.015999, 0.015999, 7.05331349], [1516893300000, 0.016, 0.016, 0.0159995, 0.016, 9.08083947], [1516893360000, 0.0159995, 0.0159995, 0.0159995, 0.0159995, 12.06604722], [1516893420000, 0.0159995, 0.0159995, 0.015999, 0.0159995, 8.15699719], [1516893480000, 0.0159995, 0.01599951, 0.0159995, 0.0159995, 24.57122539], [1516893540000, 0.0159995, 0.0159995, 0.015999, 0.015999, 49.89852984], [1516893600000, 0.01599948, 0.0159995, 0.01599, 0.015999, 10.89709346], [1516893660000, 0.015999, 0.016, 0.015999, 0.016, 10.77559918], [1516893720000, 0.016, 0.016, 0.01599005, 0.01599005, 7.6812858], [1516893780000, 0.01599999, 0.016, 0.01599999, 0.016, 2.60096611], [1516893840000, 0.016, 0.01602001, 0.015999, 0.016, 24.80506797], [1516893900000, 0.01601998, 0.01605, 0.01599999, 0.01601998, 7.96925551], [1516893960000, 0.01605, 0.01605, 0.01601998, 0.01601999, 3.04874773], [1516894020000, 0.01601998, 0.01601999, 0.01601998, 0.01601999, 40.00939727], [1516894080000, 0.01601999, 0.01601999, 0.01601998, 0.01601999, 39.12783758], [1516894140000, 0.01601999, 0.01601999, 0.01601998, 0.01601999, 13.86319903], [1516894200000, 0.01601999, 0.01605, 0.01601999, 0.01605, 14.69967755], [1516894260000, 0.016045, 0.016045, 0.01601999, 0.01602, 8.87984195], [1516894320000, 0.01602, 0.016045, 0.01601999, 0.01602, 12.33440032], [1516894380000, 0.016045, 0.016045, 0.01602, 0.01602, 12.82174971], [1516894440000, 0.01601999, 0.01602, 0.01601998, 0.01601998, 7.83823225], [1516894500000, 0.016, 0.01605001, 0.01599, 0.01599008, 414.71689229], [1516894560000, 0.01599008, 0.01606, 0.01599008, 0.01599408, 234.45980748], [1516894620000, 0.01605, 0.01605, 0.01599409, 0.01604968, 2.46611547], [1516894680000, 0.01604968, 0.01605999, 0.01604968, 0.01605999, 6.09258133], [1516894740000, 0.01605999, 0.01605999, 0.016, 0.016, 15.92879567], [1516894800000, 0.016, 0.01605, 0.016, 0.016, 11.34982947], [1516894860000, 0.016, 0.016, 0.01599, 0.01599, 69.66995998], [1516894920000, 0.01598998, 0.016, 0.01598998, 0.016, 55.84083291], [1516894980000, 0.01605999, 0.01605999, 0.01605999, 0.01605999, 0.40343266], [1516895040000, 0.01599335, 0.01605968, 0.01598998, 0.01598999, 145.71903126], [1516895100000, 0.01598999, 0.01605999, 0.01598999, 0.01605, 13.73847007], [1516895160000, 0.01605, 0.01605999, 0.01598998, 0.01598998, 4.89010852], [1516895220000, 0.0160001, 0.01606, 0.0160001, 0.01606, 41.90794743], [1516895280000, 0.01605, 0.01606492, 0.01600001, 0.01606492, 6.28740043], [1516895340000, 0.01607, 0.01608989, 0.01606492, 0.01607, 20.48419805], [1516895400000, 0.01607, 0.01609, 0.01606, 0.01608495, 55.56301853], [1516895460000, 0.01608495, 0.01609, 0.0160005, 0.0160005, 15.56871368], [1516895520000, 0.0160005, 0.01608495, 0.0160005, 0.01608495, 5.12295649], [1516895580000, 0.0160005, 0.01608496, 0.0160005, 0.01608496, 27.30117689], [1516895640000, 0.01608496, 0.01608999, 0.01608495, 0.01608495, 51.44689185], [1516895700000, 0.01608495, 0.01608999, 0.0160005, 0.01608494, 70.26877263], [1516895760000, 0.01608494, 0.01608494, 0.0160005, 0.01608494, 8.95012822], [1516895820000, 0.01608494, 0.01608494, 0.0160005, 0.01600051, 25.2622462], [1516895880000, 0.01608492, 0.01608492, 0.0160005, 0.0160005, 15.47342424], [1516895940000, 0.01600051, 0.01600051, 0.01600001, 0.01600051, 8.56157464], [1516896000000, 0.01600051, 0.01600051, 0.01596051, 0.01597, 21.15790524], [1516896060000, 0.01596051, 0.01596051, 0.0159501, 0.01596051, 41.27399406], [1516896120000, 0.01597, 0.01597, 0.01596051, 0.01597, 11.14472371], [1516896180000, 0.01597, 0.01600001, 0.01594302, 0.01600001, 288.58791855], [1516896240000, 0.01594997, 0.01596592, 0.01594997, 0.01596592, 2.87396385], [1516896300000, 0.01599997, 0.0160005, 0.01590086, 0.01598, 392.71396837], [1516896360000, 0.01600049, 0.01600051, 0.01590107, 0.016, 124.9064831], [1516896420000, 0.01598002, 0.01599968, 0.01591629, 0.01596727, 8.06142271], [1516896480000, 0.01596727, 0.01596727, 0.01596725, 0.01596725, 81.20168682], [1516896540000, 0.01596725, 0.01596727, 0.01591623, 0.01596727, 29.97980927], [1516896600000, 0.01596725, 0.01596725, 0.01596723, 0.01596723, 8.65208153], [1516896660000, 0.01596723, 0.01596727, 0.01591627, 0.01596721, 28.99420343], [1516896720000, 0.01596721, 0.01596727, 0.0159164, 0.01596727, 110.90003457], [1516896780000, 0.01598002, 0.01600051, 0.01596727, 0.01600051, 13.82008544], [1516896840000, 0.01600051, 0.01604533, 0.016, 0.01604533, 10.54441025], [1516896900000, 0.01604533, 0.01607501, 0.016, 0.01603001, 22.82333837], [1516896960000, 0.01603002, 0.01607154, 0.01590608, 0.01606878, 325.12304845], [1516897020000, 0.01606864, 0.01606864, 0.0159201, 0.0160684, 227.12675373], [1516897080000, 0.01600001, 0.0160682, 0.01600001, 0.016063, 50.89924976], [1516897140000, 0.016063, 0.016063, 0.01593447, 0.01600001, 216.10051284], [1516897200000, 0.01593452, 0.01600001, 0.01590617, 0.01593445, 372.07413182], [1516897260000, 0.01593445, 0.016, 0.01590622, 0.016, 347.4177124], [1516897320000, 0.01600001, 0.01600001, 0.01593446, 0.01594478, 48.41745768], [1516897380000, 0.016, 0.016, 0.01594477, 0.01598578, 19.61432145], [1516897440000, 0.01598578, 0.01600001, 0.01590705, 0.01600001, 694.85430484], [1516897500000, 0.01590732, 0.01600001, 0.01590732, 0.016, 1.62397954], [1516897560000, 0.01599999, 0.01600001, 0.0159071, 0.0159071, 213.97949688], [1516897620000, 0.01598663, 0.016, 0.01598663, 0.016, 3.14726611], [1516897680000, 0.01599999, 0.016, 0.01598664, 0.01599999, 14.90939207], [1516897740000, 0.016, 0.01600001, 0.016, 0.01600001, 48.00768201], [1516897800000, 0.016, 0.01600001, 0.01599999, 0.01599999, 17.30852682], [1516897860000, 0.01598664, 0.01599999, 0.01598664, 0.01599, 5.3176494], [1516897920000, 0.01599, 0.01599999, 0.01590717, 0.01598664, 183.50028981], [1516897980000, 0.01598664, 0.01600001, 0.01595002, 0.01600001, 93.79824632], [1516898040000, 0.01603998, 0.01603998, 0.01600001, 0.01603998, 4.70946327], [1516898100000, 0.01603998, 0.016063, 0.01600006, 0.0160629, 20.96881639], [1516898160000, 0.01604, 0.01606289, 0.01603999, 0.01606289, 22.34035416], [1516898220000, 0.01606281, 0.01606281, 0.01597, 0.0160628, 17.10361542], [1516898280000, 0.016, 0.01606272, 0.016, 0.01606272, 8.85988931], [1516898340000, 0.0160627, 0.016063, 0.01599001, 0.0159909, 50.39922305], [1516898400000, 0.0160625, 0.01606269, 0.0160625, 0.01606269, 7.89428232], [1516898460000, 0.01606269, 0.01606269, 0.01601251, 0.01606269, 4.29353573], [1516898520000, 0.01606269, 0.016063, 0.01602001, 0.01602033, 59.42993771], [1516898580000, 0.016063, 0.016063, 0.01602044, 0.01602108, 26.2318672], [1516898640000, 0.016063, 0.016063, 0.01602119, 0.016063, 13.81764523], [1516898700000, 0.01606864, 0.01606864, 0.016063, 0.016063, 21.19802863], [1516898760000, 0.01606863, 0.01606863, 0.016063, 0.01606863, 14.86489501], [1516898820000, 0.016066, 0.01607967, 0.016063, 0.01607967, 21.34901506], [1516898880000, 0.01607967, 0.01608269, 0.01607967, 0.01608269, 31.49295607], [1516898940000, 0.01608489, 0.01608495, 0.0160827, 0.01608489, 41.84134664], [1516899000000, 0.01608495, 0.01612, 0.01608492, 0.01612, 160.62244208], [1516899060000, 0.01610332, 0.01612, 0.0161, 0.01610332, 15.09442211], [1516899120000, 0.01610332, 0.01612397, 0.01610332, 0.01612397, 40.49327677], [1516899180000, 0.01612397, 0.01612501, 0.0161228, 0.01612501, 39.39762574], [1516899240000, 0.016125, 0.01612698, 0.016124, 0.01612698, 30.47161765], [1516899300000, 0.01612698, 0.01613001, 0.01612698, 0.01613, 45.78163652], [1516899360000, 0.01613, 0.0161599, 0.01613, 0.0161599, 56.91092156], [1516899420000, 0.01615236, 0.016167, 0.01614983, 0.01616, 13.96779161], [1516899480000, 0.0161599, 0.01617, 0.0161599, 0.01617, 37.03991652], [1516899540000, 0.01617, 0.01617, 0.01616974, 0.01617, 116.03036144], [1516899600000, 0.01617, 0.01617189, 0.01616974, 0.01617189, 5.8190165], [1516899660000, 0.01616975, 0.01617189, 0.01616975, 0.01617189, 5.99976881], [1516899720000, 0.01617189, 0.01618098, 0.01617, 0.016179, 8.37961646], [1516899780000, 0.01618, 0.01618, 0.016178, 0.01618, 19.00680583], [1516899840000, 0.01618, 0.01618098, 0.016178, 0.016179, 3.79567328], [1516899900000, 0.01617803, 0.01618927, 0.01617801, 0.01617966, 19.81046276], [1516899960000, 0.01617899, 0.01618001, 0.01617899, 0.01617899, 18.42703944], [1516900020000, 0.01618, 0.01618925, 0.01617899, 0.01618923, 19.8744782], [1516900080000, 0.01618923, 0.01618925, 0.01617899, 0.01618923, 8.77454027], [1516900140000, 0.01618923, 0.01618925, 0.01617899, 0.01617899, 19.05412274], [1516900200000, 0.016179, 0.016179, 0.01617899, 0.016179, 11.93730263], [1516900260000, 0.01618919, 0.0162, 0.016179, 0.01618887, 23.12880267], [1516900320000, 0.01618887, 0.01618919, 0.016185, 0.01618919, 40.51797947], [1516900380000, 0.01618919, 0.0162, 0.016179, 0.016179, 83.63554237], [1516900440000, 0.016185, 0.0162, 0.016185, 0.01619, 122.66995214], [1516900500000, 0.016199, 0.0162, 0.016179, 0.016185, 71.26025227], [1516900560000, 0.016179, 0.016185, 0.01617899, 0.01617899, 17.10851985], [1516900620000, 0.016178, 0.01617899, 0.01616974, 0.01616974, 29.34414367], [1516900680000, 0.01616975, 0.01617899, 0.01616974, 0.01617899, 4.87916014], [1516900740000, 0.01617898, 0.0162006, 0.01617898, 0.01617898, 23.22664693], [1516900800000, 0.01617899, 0.0162006, 0.01617899, 0.0162, 35.95926721], [1516900860000, 0.0162, 0.0162, 0.01617899, 0.01619993, 10.16353095], [1516900920000, 0.01617901, 0.01619993, 0.016179, 0.016179, 10.9023384], [1516900980000, 0.016179, 0.01617901, 0.016179, 0.01617901, 11.82721852], [1516901040000, 0.01619992, 0.01620299, 0.01617901, 0.0161795, 15.27524902], [1516901100000, 0.0161795, 0.01619768, 0.0161795, 0.01617951, 15.36995961], [1516901160000, 0.01617971, 0.01619766, 0.01617971, 0.01617971, 7.59319436], [1516901220000, 0.01618, 0.0162, 0.01618, 0.01618, 44.5185706], [1516901280000, 0.01619998, 0.0162, 0.01618, 0.01618001, 7.70140476], [1516901340000, 0.01618001, 0.0162, 0.01617951, 0.01619976, 23.86051115], [1516901400000, 0.01617951, 0.0161998, 0.01617951, 0.01617952, 11.3007366], [1516901460000, 0.01617952, 0.0161998, 0.01617902, 0.0161998, 16.54150139], [1516901520000, 0.0161998, 0.0161999, 0.01618002, 0.01619976, 5.63091224], [1516901580000, 0.01618003, 0.0161997, 0.01618, 0.01618004, 45.26960885], [1516901640000, 0.01619899, 0.016199, 0.01618, 0.01618, 13.23898332], [1516901700000, 0.01619868, 0.01619868, 0.01617899, 0.01617899, 20.24740727], [1516901760000, 0.01617892, 0.01617901, 0.01616, 0.01616, 11.96225631], [1516901820000, 0.01616, 0.01617969, 0.01616, 0.01617968, 21.94326433], [1516901880000, 0.016179, 0.01617968, 0.01616152, 0.01616152, 5.76308443], [1516901940000, 0.01616002, 0.01616003, 0.0161589, 0.01616003, 7.88280577], [1516902000000, 0.01616152, 0.01617968, 0.01616002, 0.01617968, 24.21734909], [1516902060000, 0.01617968, 0.01618001, 0.01616003, 0.01618001, 17.8248672], [1516902120000, 0.01618001, 0.01618001, 0.01616003, 0.01618001, 25.99267499], [1516902180000, 0.01619, 0.0161982, 0.01619, 0.01619, 16.36812923], [1516902240000, 0.016165, 0.01619976, 0.01616005, 0.01616005, 24.47934699], [1516902300000, 0.0161795, 0.01619, 0.0161795, 0.01617968, 4.43720229], [1516902360000, 0.01617968, 0.01619, 0.01617968, 0.01617968, 2.53576755], [1516902420000, 0.01619, 0.01619, 0.01617968, 0.01617968, 12.65713391], [1516902480000, 0.01619976, 0.01619976, 0.01617968, 0.01619, 7.11737722], [1516902540000, 0.01619, 0.0162, 0.01619, 0.01619, 15.83615167], [1516902600000, 0.01619976, 0.0162, 0.01619, 0.0162, 13.39930658], [1516902660000, 0.01619, 0.0162, 0.01619, 0.01619, 8.60582416], [1516902720000, 0.01619, 0.016191, 0.01619, 0.01619, 7.34141488], [1516902780000, 0.016191, 0.016191, 0.01616005, 0.01619, 14.30050871], [1516902840000, 0.01619, 0.01619, 0.01618968, 0.01618968, 0.6895551], [1516902900000, 0.01617, 0.01618935, 0.01617, 0.01617, 4.71505654], [1516902960000, 0.01618935, 0.01618936, 0.01616005, 0.01616006, 21.29838478], [1516903020000, 0.0161601, 0.01618921, 0.0161601, 0.01618921, 2.45228475], [1516903080000, 0.01618921, 0.01618968, 0.0161601, 0.01618936, 43.46910679], [1516903140000, 0.01618936, 0.01618936, 0.01616011, 0.01616011, 70.35056594], [1516903200000, 0.01616011, 0.01623278, 0.0161601, 0.01616011, 65.99628253], [1516903260000, 0.0162, 0.01623213, 0.01612013, 0.01613, 73.07748527], [1516903320000, 0.01613, 0.01613, 0.01611961, 0.016125, 65.12053686], [1516903380000, 0.016125, 0.016125, 0.016115, 0.016115, 34.19919159], [1516903440000, 0.0161196, 0.01619968, 0.016115, 0.01611959, 31.37486752], [1516903500000, 0.016199, 0.016199, 0.01612111, 0.01612111, 11.58290277], [1516903560000, 0.01612111, 0.01612111, 0.016115, 0.016115, 22.57383442], [1516903620000, 0.016115, 0.01611959, 0.016115, 0.01611959, 12.56383345], [1516903680000, 0.01611959, 0.01619976, 0.016115, 0.01613723, 59.65686502], [1516903740000, 0.01612111, 0.01612111, 0.01611501, 0.01612111, 6.48064453], [1516903800000, 0.01619944, 0.01619944, 0.01612111, 0.01612111, 15.4302763], [1516903860000, 0.01617999, 0.01619902, 0.01612111, 0.01612111, 37.63973332], [1516903920000, 0.01619904, 0.01619905, 0.01612111, 0.016125, 9.64230215], [1516903980000, 0.01619902, 0.01619902, 0.01612111, 0.01612111, 27.68821295], [1516904040000, 0.01612111, 0.01612111, 0.01611501, 0.01611501, 8.16501957], [1516904100000, 0.01612111, 0.01619497, 0.01611501, 0.01619489, 10.70450296], [1516904160000, 0.01619485, 0.01619485, 0.01611501, 0.01618994, 10.62400254], [1516904220000, 0.0161899, 0.01618994, 0.01611501, 0.01611501, 4.43063085], [1516904280000, 0.01611501, 0.01618995, 0.016115, 0.01618995, 10.70265772], [1516904340000, 0.01618995, 0.01618995, 0.01616495, 0.01616495, 11.23259669], [1516904400000, 0.01616495, 0.01618, 0.01616495, 0.01616495, 20.02031151], [1516904460000, 0.01616495, 0.01616495, 0.016115, 0.016115, 1.69852487], [1516904520000, 0.01616495, 0.01616495, 0.016115, 0.016115, 1.65443657], [1516904580000, 0.01616492, 0.01618, 0.016115, 0.01618, 5.23311551], [1516904640000, 0.01618, 0.01618894, 0.01616, 0.01618894, 147.36843428], [1516904700000, 0.01618999, 0.01619, 0.016115, 0.016115, 154.51181603], [1516904760000, 0.01618894, 0.01618894, 0.016115, 0.016115, 1.23533066], [1516904820000, 0.01618876, 0.01618893, 0.016115, 0.01618877, 49.36813458], [1516904880000, 0.01618877, 0.01618877, 0.01611501, 0.01618877, 9.49395748], [1516904940000, 0.01618877, 0.01618877, 0.01611501, 0.0161785, 26.02491199], [1516905000000, 0.01611501, 0.01619976, 0.016115, 0.01619976, 58.60157873], [1516905060000, 0.016115, 0.01621899, 0.016115, 0.01618877, 14.30182092], [1516905120000, 0.016118, 0.016214, 0.016115, 0.01621355, 8.7245012], [1516905180000, 0.016118, 0.016118, 0.016118, 0.016118, 11.10014288], [1516905240000, 0.016118, 0.016118, 0.016115, 0.016115, 10.72617938], [1516905300000, 0.016118, 0.016118, 0.016115, 0.016118, 14.610252], [1516905360000, 0.016118, 0.016118, 0.0161155, 0.0161155, 2.42970857], [1516905420000, 0.016118, 0.016118, 0.0161155, 0.01611551, 75.46808923], [1516905480000, 0.016118, 0.016118, 0.016115, 0.016118, 8.1469588], [1516905540000, 0.016118, 0.01621288, 0.016115, 0.016115, 23.71628612], [1516905600000, 0.01621286, 0.01621286, 0.0161031, 0.0161031, 80.09060519], [1516905660000, 0.01612305, 0.01612305, 0.01610319, 0.01612305, 5.35767201], [1516905720000, 0.0161066, 0.016123, 0.0161066, 0.016123, 29.81846163], [1516905780000, 0.016123, 0.01621141, 0.016123, 0.01621, 141.92071526], [1516905840000, 0.01621, 0.0162114, 0.01621, 0.01621, 85.32367022], [1516905900000, 0.01620996, 0.01620998, 0.01610661, 0.01620992, 8.32083872], [1516905960000, 0.01610661, 0.0162099, 0.01610661, 0.01612315, 0.92317655], [1516906020000, 0.01612325, 0.01612325, 0.01612325, 0.01612325, 0.44575628], [1516906080000, 0.01620886, 0.01620886, 0.01612325, 0.01612325, 0.661], [1516906140000, 0.0161234, 0.0161234, 0.01612325, 0.01612325, 11.40263922], [1516906200000, 0.0161234, 0.01612341, 0.01612325, 0.0161234, 7.36502006], [1516906260000, 0.0161234, 0.01619993, 0.0161234, 0.01619927, 22.46329844], [1516906320000, 0.01619922, 0.01619922, 0.01612341, 0.01612341, 11.26708118], [1516906380000, 0.01612341, 0.01616659, 0.01610309, 0.01616499, 36.52733159], [1516906440000, 0.01616499, 0.01616499, 0.01612341, 0.01612341, 10.06640915], [1516906500000, 0.01612341, 0.01615998, 0.01610306, 0.01615998, 16.84479018], [1516906560000, 0.01615993, 0.01615993, 0.01610303, 0.01610303, 29.07138771], [1516906620000, 0.01610305, 0.01610305, 0.01610303, 0.01610305, 3.44707099], [1516906680000, 0.01610305, 0.01614635, 0.01610305, 0.01610305, 12.65898136], [1516906740000, 0.01613999, 0.01613999, 0.01610305, 0.01610305, 19.95163413], [1516906800000, 0.01610305, 0.01610305, 0.01610305, 0.01610305, 9.46839011], [1516906860000, 0.01610305, 0.01610305, 0.01610303, 0.01610303, 7.05657217], [1516906920000, 0.01610303, 0.01610303, 0.0161, 0.0161, 24.11678747], [1516906980000, 0.01610303, 0.01610303, 0.016069, 0.016069, 137.28566681], [1516907040000, 0.016069, 0.016069, 0.016069, 0.016069, 19.15076676], [1516907100000, 0.016069, 0.01609697, 0.01606261, 0.016069, 20.18913682], [1516907160000, 0.016069, 0.016069, 0.01606261, 0.01606261, 1.18494332], [1516907220000, 0.01609, 0.01609, 0.01596231, 0.01609, 58.3165642], [1516907280000, 0.01609, 0.01609, 0.01601035, 0.01601035, 8.81599985], [1516907340000, 0.01601035, 0.01606242, 0.01601035, 0.01606242, 4.26687706], [1516907400000, 0.01608987, 0.01608987, 0.01606242, 0.01606242, 18.42678989], [1516907460000, 0.01608984, 0.01608984, 0.01602, 0.01602, 8.62780749], [1516907520000, 0.01606232, 0.01606232, 0.01602, 0.01602759, 12.63025569], [1516907580000, 0.01602759, 0.01606192, 0.01602759, 0.01602759, 5.65720568], [1516907640000, 0.01606156, 0.01606156, 0.01602759, 0.0160612, 9.76004029], [1516907700000, 0.01602759, 0.0160612, 0.01602759, 0.01602759, 3.08840307], [1516907760000, 0.0160276, 0.0160276, 0.01602259, 0.01602259, 37.9032545], [1516907820000, 0.01602259, 0.016027, 0.01602259, 0.01602259, 7.19399196], [1516907880000, 0.016027, 0.016027, 0.01602005, 0.01602699, 62.69100397], [1516907940000, 0.01602699, 0.01602699, 0.01602005, 0.01602005, 13.94090282], [1516908000000, 0.01602699, 0.016027, 0.01602005, 0.016027, 19.61607907], [1516908060000, 0.016027, 0.016027, 0.01602699, 0.01602699, 11.57422321], [1516908120000, 0.016027, 0.01606232, 0.01602005, 0.01602005, 46.60081863], [1516908180000, 0.01602006, 0.01602699, 0.01602005, 0.01602699, 13.40774099], [1516908240000, 0.01602699, 0.01602699, 0.01602006, 0.01602699, 0.82397778], [1516908300000, 0.01602699, 0.01606232, 0.01602006, 0.01602699, 22.92366992], [1516908360000, 0.01602006, 0.01606232, 0.01602005, 0.01602699, 40.42427827], [1516908420000, 0.01602699, 0.016088, 0.01602699, 0.01608798, 11.13048988], [1516908480000, 0.01608799, 0.01608799, 0.01602006, 0.01602699, 3.96551145], [1516908540000, 0.01602699, 0.01602699, 0.01602699, 0.01602699, 0.06879021], [1516908600000, 0.016088, 0.01608985, 0.01602699, 0.01608985, 14.72805194], [1516908660000, 0.01608985, 0.01608985, 0.01602699, 0.01602699, 11.72192462], [1516908720000, 0.01602699, 0.01608885, 0.01602699, 0.0160888, 2.32601904], [1516908780000, 0.01605, 0.01605, 0.01602005, 0.01602005, 46.33816957], [1516908840000, 0.01602006, 0.01605, 0.01602006, 0.016027, 5.63957855], [1516908900000, 0.01605, 0.01605, 0.01605, 0.01605, 25.0002109], [1516908960000, 0.01603, 0.01605, 0.01602699, 0.01604603, 12.06480369], [1516909020000, 0.01605, 0.01605, 0.01604603, 0.01604603, 8.77195654], [1516909080000, 0.01605, 0.01608985, 0.01605, 0.0160569, 72.39020184], [1516909140000, 0.01605691, 0.01608985, 0.01605691, 0.01605691, 14.8808108], [1516909200000, 0.01608985, 0.01608985, 0.01605691, 0.01605691, 44.95992945], [1516909260000, 0.01605691, 0.01608985, 0.0160569, 0.01605691, 13.38647647], [1516909320000, 0.0160569, 0.01608985, 0.0160569, 0.01608985, 7.72971568], [1516909380000, 0.01605691, 0.01608985, 0.01605691, 0.01608985, 7.73576494], [1516909440000, 0.01608985, 0.01608985, 0.0160569, 0.01608985, 4.05198224], [1516909500000, 0.01605691, 0.01605691, 0.01605691, 0.01605691, 16.77903022], [1516909560000, 0.0160569, 0.01605691, 0.01604603, 0.01604603, 20.39477731], [1516909620000, 0.0160569, 0.0160569, 0.0160569, 0.0160569, 21.8141178], [1516909680000, 0.01604666, 0.0160569, 0.01604606, 0.01604966, 26.8193027], [1516909740000, 0.0160569, 0.01608985, 0.01604606, 0.01605828, 21.7330037], [1516909800000, 0.01604606, 0.0160892, 0.01604606, 0.0160892, 7.16156244], [1516909860000, 0.01608888, 0.0160892, 0.01604606, 0.01608888, 33.34800645], [1516909920000, 0.01608888, 0.01608888, 0.01605828, 0.01605828, 6.28231203], [1516909980000, 0.01605828, 0.01608985, 0.01605828, 0.01608984, 26.6989371], [1516910040000, 0.01608985, 0.01608985, 0.01605829, 0.01605829, 1.58094362], [1516910100000, 0.016068, 0.016068, 0.01605829, 0.01605829, 2.56631332], [1516910160000, 0.01605829, 0.016068, 0.01605829, 0.0160583, 20.14623399], [1516910220000, 0.0160583, 0.0160583, 0.0160583, 0.0160583, 1.13245954], [1516910280000, 0.0160583, 0.016068, 0.01605828, 0.01605828, 61.23640273], [1516910340000, 0.01605833, 0.016068, 0.01605828, 0.01605828, 15.94875013], [1516910400000, 0.016068, 0.0161, 0.01605828, 0.0161, 160.63147242], [1516910460000, 0.01605828, 0.01605828, 0.01604606, 0.01604606, 9.73731234], [1516910520000, 0.01604608, 0.01604608, 0.01604608, 0.01604608, 0.06870846], [1516910580000, 0.01609899, 0.01609899, 0.01604609, 0.01604609, 2.96372095], [1516910640000, 0.01608999, 0.016132, 0.01604606, 0.01609393, 81.92188397], [1516910700000, 0.01609393, 0.01609395, 0.01603, 0.01603001, 27.62067474], [1516910760000, 0.01605, 0.01605, 0.01603001, 0.01605, 12.99702138], [1516910820000, 0.01605, 0.0160624, 0.01603001, 0.01603001, 9.50128555], [1516910880000, 0.01605, 0.01609, 0.0160305, 0.0160305, 33.36410151], [1516910940000, 0.0160305, 0.0160305, 0.01603001, 0.01603001, 2.75577668], [1516911000000, 0.01603001, 0.01603001, 0.01602228, 0.01602228, 5.82559311], [1516911060000, 0.01603, 0.01603, 0.01602228, 0.01603, 28.03813749], [1516911120000, 0.01603, 0.01603001, 0.01602, 0.01603, 50.74759307], [1516911180000, 0.01603, 0.01603001, 0.01602, 0.01603, 19.82224899], [1516911240000, 0.01603001, 0.01606998, 0.01601035, 0.01601035, 33.93374736], [1516911300000, 0.01602, 0.01606349, 0.01601035, 0.01602, 11.96676534], [1516911360000, 0.01602, 0.01602, 0.016, 0.016, 26.49488923], [1516911420000, 0.016, 0.01602, 0.01599601, 0.016, 7.56211741], [1516911480000, 0.01599601, 0.016, 0.0159827, 0.016, 8.11905807], [1516911540000, 0.0159827, 0.0159927, 0.0159827, 0.0159827, 11.33130821], [1516911600000, 0.0159827, 0.0159827, 0.0159702, 0.0159827, 14.6074039], [1516911660000, 0.0159827, 0.0159827, 0.01597022, 0.0159827, 5.13046304], [1516911720000, 0.01598269, 0.01598269, 0.01597022, 0.015975, 8.50696945], [1516911780000, 0.015975, 0.01598268, 0.01597022, 0.01597022, 19.99060965], [1516911840000, 0.01597499, 0.01597499, 0.01597006, 0.01597006, 17.75458499], [1516911900000, 0.01596605, 0.01596605, 0.01595101, 0.01596129, 53.89898731], [1516911960000, 0.01596129, 0.01596129, 0.01595101, 0.01595101, 13.25610143], [1516912020000, 0.01596128, 0.01597006, 0.01595101, 0.01596127, 22.13262653], [1516912080000, 0.01596127, 0.01596127, 0.01595104, 0.01595104, 11.79178795], [1516912140000, 0.01595104, 0.01595104, 0.01595101, 0.01595101, 6.96421335], [1516912200000, 0.01595101, 0.01596127, 0.01595101, 0.01596127, 25.24576734], [1516912260000, 0.01596127, 0.01596127, 0.01595101, 0.01595101, 24.33287604], [1516912320000, 0.01595101, 0.01596127, 0.01595101, 0.01596127, 10.07317195], [1516912380000, 0.01596127, 0.01596127, 0.01595127, 0.01596127, 38.06842966], [1516912440000, 0.01596127, 0.01596127, 0.01595127, 0.01595127, 33.70208101], [1516912500000, 0.01595628, 0.01596127, 0.01595129, 0.015958, 54.0306383], [1516912560000, 0.01596127, 0.01596127, 0.015958, 0.015958, 30.00678703], [1516912620000, 0.01596125, 0.01596125, 0.015958, 0.01595994, 4.82830741], [1516912680000, 0.015958, 0.01595994, 0.015958, 0.015958, 17.62503401], [1516912740000, 0.01595899, 0.0159827, 0.015958, 0.0159827, 17.64984378], [1516912800000, 0.01595899, 0.01598269, 0.015958, 0.01598268, 11.08324734], [1516912860000, 0.015958, 0.01599998, 0.015951, 0.01599997, 27.43941337], [1516912920000, 0.015951, 0.01599986, 0.015951, 0.015951, 8.11019472], [1516912980000, 0.015951, 0.015951, 0.01592606, 0.015951, 8.91973926], [1516913040000, 0.01592606, 0.01595099, 0.01592606, 0.01592606, 1.21483828], [1516913100000, 0.01595099, 0.016, 0.01592606, 0.01595099, 58.97165423], [1516913160000, 0.01599917, 0.01599917, 0.01592606, 0.01595098, 7.27088292], [1516913220000, 0.01595097, 0.01599916, 0.01592606, 0.01599916, 8.34479837], [1516913280000, 0.01599917, 0.01599972, 0.01592, 0.01592, 8.63118129], [1516913340000, 0.01595099, 0.01595099, 0.01591701, 0.01592, 3.57791691], [1516913400000, 0.01592, 0.01595099, 0.01592, 0.01595099, 17.98625599], [1516913460000, 0.01595099, 0.01599913, 0.01591101, 0.01591101, 30.83987153], [1516913520000, 0.01591101, 0.01591141, 0.01590717, 0.01591141, 12.53110121], [1516913580000, 0.01590717, 0.01590717, 0.01589568, 0.01589568, 38.26502392], [1516913640000, 0.01589568, 0.0159, 0.01589568, 0.01589568, 47.98992041], [1516913700000, 0.0159, 0.0159, 0.01589568, 0.0159, 2.90477267], [1516913760000, 0.01589568, 0.0159, 0.01589568, 0.01589568, 15.47839335], [1516913820000, 0.0159, 0.0159, 0.01589568, 0.01589568, 45.74201079], [1516913880000, 0.0159, 0.0159, 0.01589568, 0.0159, 40.92678108], [1516913940000, 0.0159, 0.01599916, 0.0159, 0.015932, 27.41726902], [1516914000000, 0.015999, 0.01604821, 0.015932, 0.01604821, 50.34386659], [1516914060000, 0.01604793, 0.01604793, 0.01601516, 0.01601517, 62.20529322], [1516914120000, 0.01601516, 0.01606994, 0.01601516, 0.01604, 76.28471762], [1516914180000, 0.01604, 0.016045, 0.01601516, 0.01604499, 41.66861449], [1516914240000, 0.01604499, 0.01604499, 0.01601516, 0.016025, 21.76616766], [1516914300000, 0.016025, 0.01604498, 0.016025, 0.016025, 13.80587469], [1516914360000, 0.016025, 0.016045, 0.016, 0.016, 24.60468218], [1516914420000, 0.01601516, 0.016025, 0.01601516, 0.01601517, 9.69182518], [1516914480000, 0.016025, 0.016025, 0.01599916, 0.01599916, 2.69854375], [1516914540000, 0.01599916, 0.01601517, 0.01594, 0.01599916, 9.97624959], [1516914600000, 0.01594, 0.01604994, 0.0159, 0.01604994, 27.68963388], [1516914660000, 0.01601517, 0.01601517, 0.01590043, 0.01593503, 1.13440214], [1516914720000, 0.0160498, 0.0160498, 0.01593719, 0.01604895, 5.51360512], [1516914780000, 0.01594, 0.016044, 0.01594, 0.01594, 17.30487267], [1516914840000, 0.01594001, 0.016026, 0.01594, 0.01600994, 22.12097924], [1516914900000, 0.01602, 0.01602, 0.01590002, 0.01601999, 27.00724206], [1516914960000, 0.01601998, 0.01601999, 0.01591003, 0.01601499, 4.52654666], [1516915020000, 0.01601499, 0.016015, 0.016005, 0.016005, 3.88299777], [1516915080000, 0.016005, 0.01600999, 0.01591005, 0.01600998, 95.9284837], [1516915140000, 0.01600998, 0.01600999, 0.01600998, 0.01600998, 11.97171542], [1516915200000, 0.016005, 0.01600998, 0.01591008, 0.01600998, 38.13509247], [1516915260000, 0.01600998, 0.01601, 0.01600998, 0.01601, 4.08131462], [1516915320000, 0.01601, 0.016015, 0.01592509, 0.016015, 1.84847767], [1516915380000, 0.01601999, 0.01601999, 0.01592509, 0.01601999, 11.71703263], [1516915440000, 0.01601999, 0.01601999, 0.01592515, 0.01594713, 8.38005998], [1516915500000, 0.01601999, 0.01602, 0.01592511, 0.01602, 45.37391362], [1516915560000, 0.01602, 0.01602, 0.01601999, 0.01601999, 5.90758569], [1516915620000, 0.01602, 0.01602, 0.01601999, 0.01601999, 67.63728402], [1516915680000, 0.01593, 0.01602, 0.01593, 0.015935, 17.12024359], [1516915740000, 0.01601999, 0.01601999, 0.015981, 0.015981, 6.00966407], [1516915800000, 0.016015, 0.016049, 0.01594005, 0.016049, 49.88851514], [1516915860000, 0.01604, 0.016049, 0.015945, 0.0159452, 9.01432928], [1516915920000, 0.016045, 0.016045, 0.01594521, 0.016045, 3.19227339], [1516915980000, 0.016045, 0.01604995, 0.01604, 0.01604, 31.69716538], [1516916040000, 0.01604, 0.016045, 0.01604, 0.01604, 2.97258127], [1516916100000, 0.016045, 0.01607066, 0.01594515, 0.01604, 28.61319112], [1516916160000, 0.01606, 0.01606493, 0.01594718, 0.01605422, 11.2532615], [1516916220000, 0.01605419, 0.01605554, 0.01594718, 0.01594718, 24.32307786], [1516916280000, 0.01594718, 0.01605418, 0.015947, 0.01605417, 23.31703669], [1516916340000, 0.01605417, 0.01605417, 0.01594919, 0.015959, 14.53623279], [1516916400000, 0.01605413, 0.01605413, 0.01594919, 0.01594919, 8.85730174], [1516916460000, 0.01594919, 0.01594919, 0.01594919, 0.01594919, 2.45], [1516916520000, 0.01594919, 0.01604395, 0.01594918, 0.016039, 15.89316602], [1516916580000, 0.01594918, 0.01594919, 0.01594918, 0.01594919, 4.57446166], [1516916640000, 0.01594919, 0.01598216, 0.01594918, 0.01598216, 10.7575391], [1516916700000, 0.01598216, 0.01598216, 0.01598216, 0.01598216, 10.32179332], [1516916760000, 0.01598216, 0.01598216, 0.01594922, 0.01598216, 13.30667758], [1516916820000, 0.01598216, 0.01598216, 0.01594921, 0.01598216, 5.50143907], [1516916880000, 0.01598216, 0.01598216, 0.01598216, 0.01598216, 28.69754224], [1516916940000, 0.01598217, 0.01598217, 0.01598216, 0.01598216, 24.14178681], [1516917000000, 0.01598217, 0.01598217, 0.01598216, 0.01598217, 17.98989016], [1516917060000, 0.01598216, 0.01598216, 0.01596, 0.01598216, 6.72319132], [1516917120000, 0.01598215, 0.01598216, 0.01598215, 0.01598216, 21.11620994], [1516917180000, 0.01596, 0.01598216, 0.01596, 0.01596, 2.70398664], [1516917240000, 0.01596, 0.01598216, 0.01594919, 0.01596, 6.43131813], [1516917300000, 0.01598215, 0.01598215, 0.01594918, 0.01597215, 22.25677731], [1516917360000, 0.01598215, 0.01598215, 0.015962, 0.015962, 3.84808659], [1516917420000, 0.015962, 0.01598214, 0.015962, 0.01598214, 1.38758272], [1516917480000, 0.015964, 0.01598215, 0.015964, 0.01598215, 49.31033984], [1516917540000, 0.01598215, 0.01598216, 0.01598215, 0.01598215, 46.31669373], [1516917600000, 0.015975, 0.01598215, 0.01596521, 0.01598215, 27.04573652], [1516917660000, 0.01596615, 0.01599999, 0.015962, 0.015962, 17.91866659], [1516917720000, 0.015962, 0.015963, 0.015962, 0.015963, 5.70454923], [1516917780000, 0.015962, 0.01596521, 0.01594918, 0.01594918, 51.24326345], [1516917840000, 0.015963, 0.015963, 0.01594005, 0.01594005, 6.51865704], [1516917900000, 0.01594005, 0.01594918, 0.015935, 0.015935, 10.99288527], [1516917960000, 0.015935, 0.015963, 0.015935, 0.015963, 19.48089835], [1516918020000, 0.015963, 0.015963, 0.01594005, 0.01594005, 3.7692093], [1516918080000, 0.015963, 0.015963, 0.01594005, 0.01594005, 6.13391338], [1516918140000, 0.015961, 0.015963, 0.0159216, 0.0159216, 16.59264841], [1516918200000, 0.01594005, 0.016, 0.01594005, 0.016, 31.37338206], [1516918260000, 0.01594005, 0.01595152, 0.0159216, 0.01595152, 1.83528731], [1516918320000, 0.01595152, 0.01595152, 0.01595152, 0.01595152, 5.7405105], [1516918380000, 0.016, 0.016001, 0.01595152, 0.016001, 5.53239399], [1516918440000, 0.015952, 0.015952, 0.01595152, 0.01595152, 10.6086666], [1516918500000, 0.016001, 0.01602999, 0.016001, 0.016017, 7.99958257], [1516918560000, 0.016001, 0.016017, 0.016, 0.016013, 12.50294452], [1516918620000, 0.016013, 0.016017, 0.016, 0.016, 4.28696922], [1516918680000, 0.016, 0.016, 0.016, 0.016, 15.21597113], [1516918740000, 0.01599999, 0.016, 0.01599999, 0.016, 5.44250153], [1516918800000, 0.01599999, 0.01600506, 0.01599999, 0.01599999, 22.31130515], [1516918860000, 0.01600506, 0.01601999, 0.01600506, 0.01600506, 4.54012293], [1516918920000, 0.01600506, 0.01602, 0.01599999, 0.01602, 4.90533079], [1516918980000, 0.01599999, 0.01605419, 0.01599999, 0.016015, 41.15744032], [1516919040000, 0.01600506, 0.016015, 0.01600506, 0.01600506, 17.65787717], [1516919100000, 0.01600506, 0.01600506, 0.01599999, 0.016, 64.62731208], [1516919160000, 0.01600468, 0.01600506, 0.01599999, 0.01600506, 39.81751643], [1516919220000, 0.01600468, 0.01600506, 0.01600468, 0.0160047, 23.49599472], [1516919280000, 0.0160047, 0.016015, 0.01600468, 0.016015, 20.47979621], [1516919340000, 0.01600468, 0.016015, 0.01600468, 0.016015, 5.65524073], [1516919400000, 0.016015, 0.01602, 0.0160047, 0.016015, 25.57541934], [1516919460000, 0.016015, 0.01605454, 0.0160047, 0.01605454, 13.40332594], [1516919520000, 0.01605454, 0.016086, 0.01600468, 0.01605454, 24.97825676], [1516919580000, 0.0160047, 0.01605454, 0.0160047, 0.0160545, 7.6595618], [1516919640000, 0.0160545, 0.01605454, 0.0160545, 0.01605454, 7.47424635], [1516919700000, 0.0160545, 0.01605454, 0.0160047, 0.0160047, 32.00075721], [1516919760000, 0.0160047, 0.0160047, 0.0160047, 0.0160047, 13.53267334], [1516919820000, 0.0160047, 0.0160047, 0.01600469, 0.0160047, 8.09645624], [1516919880000, 0.01608599, 0.01608599, 0.0160047, 0.0160047, 8.02897847], [1516919940000, 0.0160047, 0.0160047, 0.01600468, 0.0160047, 8.16895207], [1516920000000, 0.0160047, 0.0160047, 0.01600469, 0.01600469, 7.24795028], [1516920060000, 0.0160047, 0.0160047, 0.01600468, 0.0160047, 17.0061014], [1516920120000, 0.0160047, 0.01605118, 0.0160047, 0.01605118, 3.25501212], [1516920180000, 0.0160047, 0.0160047, 0.0160047, 0.0160047, 0.24794247], [1516920240000, 0.01605118, 0.01605118, 0.01600468, 0.01600468, 20.03887584], [1516920300000, 0.01605118, 0.01605118, 0.01600469, 0.01605118, 1.44693367], [1516920360000, 0.01605001, 0.01605118, 0.01605001, 0.01605054, 6.44795038], [1516920420000, 0.01605054, 0.01605054, 0.01600469, 0.01605054, 3.90989547], [1516920480000, 0.01605054, 0.01605054, 0.01600554, 0.01601, 10.81251921], [1516920540000, 0.01601, 0.01605, 0.01601, 0.01605, 2.20067835], [1516920600000, 0.01605, 0.01605086, 0.01601, 0.01605086, 20.91364447], [1516920660000, 0.01605, 0.016051, 0.01600554, 0.016051, 35.87348882], [1516920720000, 0.016051, 0.016051, 0.01605049, 0.01605049, 4.70801651], [1516920780000, 0.01605049, 0.01605049, 0.01600469, 0.01600469, 3.22011076], [1516920840000, 0.016051, 0.016051, 0.01600468, 0.01600468, 3.20404713], [1516920900000, 0.01600468, 0.016051, 0.01600468, 0.016051, 14.08185176], [1516920960000, 0.016051, 0.016051, 0.016051, 0.016051, 1.06826405], [1516921020000, 0.01600468, 0.01605118, 0.016, 0.016, 28.84249499], [1516921080000, 0.016, 0.01600468, 0.016, 0.01600468, 53.7707729], [1516921140000, 0.01605118, 0.01605118, 0.01603512, 0.01603512, 1.5794409], [1516921200000, 0.01605118, 0.01605118, 0.01603512, 0.01603512, 2.43193303], [1516921260000, 0.01603512, 0.01605117, 0.01603512, 0.01605117, 18.05071791], [1516921320000, 0.01605117, 0.01605117, 0.01603512, 0.0160511, 4.77747859], [1516921380000, 0.0160511, 0.0160511, 0.01603512, 0.0160511, 10.23979547], [1516921440000, 0.0160511, 0.01605117, 0.0160511, 0.0160511, 21.87533248], [1516921500000, 0.01603512, 0.01605117, 0.0160067, 0.01605117, 22.92312583], [1516921560000, 0.01600669, 0.01605116, 0.01600468, 0.01605116, 17.5775608], [1516921620000, 0.0160511, 0.01605116, 0.01603512, 0.01605116, 4.80139734], [1516921680000, 0.01605116, 0.01605116, 0.01600468, 0.01605116, 19.00332312], [1516921740000, 0.016005, 0.01605116, 0.016005, 0.01605116, 2.3282718], [1516921800000, 0.01605116, 0.01605116, 0.01605115, 0.01605115, 3.51104519], [1516921860000, 0.01605115, 0.01605116, 0.016, 0.01605115, 11.74460324], [1516921920000, 0.01605, 0.01605115, 0.016, 0.01605114, 13.57966354], [1516921980000, 0.016046, 0.016046, 0.01604599, 0.01604599, 5.73004828], [1516922040000, 0.01604595, 0.01604595, 0.016, 0.01604494, 4.96546623], [1516922100000, 0.016, 0.01604494, 0.016, 0.01604494, 12.85691896], [1516922160000, 0.016, 0.01602, 0.01594301, 0.01602, 42.58218728], [1516922220000, 0.01602, 0.01602, 0.01594701, 0.016, 11.24288976], [1516922280000, 0.016, 0.01602, 0.015962, 0.01602, 5.31239692], [1516922340000, 0.01595704, 0.01602, 0.01595704, 0.01602, 9.10851489], [1516922400000, 0.01602, 0.0160449, 0.01595705, 0.01602, 20.24540516], [1516922460000, 0.01595705, 0.01602, 0.01595705, 0.01595706, 20.70391482], [1516922520000, 0.01595706, 0.01602, 0.01595706, 0.01601998, 36.55091301], [1516922580000, 0.01601998, 0.01602, 0.01601, 0.01601, 14.29302423], [1516922640000, 0.01601996, 0.01601996, 0.015932, 0.015932, 44.20399325], [1516922700000, 0.01593, 0.01601994, 0.01593, 0.01601994, 17.08172166], [1516922760000, 0.01601, 0.01601, 0.01594081, 0.015943, 2.96189485], [1516922820000, 0.01601, 0.01601, 0.01594302, 0.01600999, 3.84669323], [1516922880000, 0.01594302, 0.01600999, 0.01594302, 0.01600999, 26.08317737], [1516922940000, 0.01600999, 0.01601996, 0.01600101, 0.01601996, 19.79586471], [1516923000000, 0.01600101, 0.01601001, 0.01600101, 0.01600101, 10.95018177], [1516923060000, 0.01600101, 0.01600101, 0.01594302, 0.01594302, 6.670779], [1516923120000, 0.01594302, 0.01600101, 0.01594302, 0.01595302, 4.4668997], [1516923180000, 0.01600101, 0.01600101, 0.015957, 0.01600101, 6.91582394], [1516923240000, 0.01600101, 0.01600101, 0.01595701, 0.01595702, 0.95231337], [1516923300000, 0.01595702, 0.016045, 0.01594303, 0.01601101, 31.63395198], [1516923360000, 0.016045, 0.016045, 0.01601102, 0.01601102, 21.5378655], [1516923420000, 0.016045, 0.01605114, 0.016006, 0.016006, 55.24231162], [1516923480000, 0.01600101, 0.01605114, 0.01600101, 0.01600101, 6.43873651], [1516923540000, 0.01600101, 0.01605113, 0.01600101, 0.01600101, 8.48774192], [1516923600000, 0.01601102, 0.01605113, 0.01601102, 0.01601102, 6.67939803], [1516923660000, 0.01605113, 0.01605113, 0.01601102, 0.01601102, 16.57776096], [1516923720000, 0.01601102, 0.01605, 0.01601102, 0.01601102, 27.53249015], [1516923780000, 0.01601102, 0.01605113, 0.01601102, 0.01605113, 78.22550044], [1516923840000, 0.0160511, 0.01605113, 0.01600102, 0.01605113, 18.81693771], [1516923900000, 0.01605113, 0.01605113, 0.01600101, 0.01605113, 9.5879636], [1516923960000, 0.01603107, 0.01605113, 0.01600101, 0.01605113, 18.21670616], [1516924020000, 0.01600101, 0.01605114, 0.01600101, 0.01605113, 12.15467786], [1516924080000, 0.01605114, 0.01605114, 0.01605113, 0.01605113, 1.6357135], [1516924140000, 0.01605113, 0.01605113, 0.01600111, 0.01605113, 6.22749006], [1516924200000, 0.01605114, 0.01605118, 0.01600101, 0.01600101, 37.92964793], [1516924260000, 0.01605, 0.01605, 0.0160012, 0.0160012, 7.33813724], [1516924320000, 0.01600101, 0.01605, 0.01600101, 0.01605, 0.5630635], [1516924380000, 0.01605, 0.01605118, 0.01600101, 0.01605, 41.50739476], [1516924440000, 0.01605118, 0.016091, 0.01605, 0.01605, 68.45296355], [1516924500000, 0.01605118, 0.016091, 0.01600101, 0.01600102, 11.4610948], [1516924560000, 0.01600101, 0.01605118, 0.01600101, 0.016002, 8.9202919], [1516924620000, 0.01600201, 0.01600202, 0.01600201, 0.01600202, 1.31127695], [1516924680000, 0.01600209, 0.01609098, 0.01600209, 0.01602047, 0.73539544], [1516924740000, 0.01602047, 0.01609, 0.01602047, 0.01608659, 10.5278857], [1516924800000, 0.01608659, 0.016132, 0.016007, 0.01608659, 65.64483828], [1516924860000, 0.01608657, 0.01608657, 0.016012, 0.01608657, 2.91116439], [1516924920000, 0.01608657, 0.01608657, 0.01600201, 0.016004, 8.87253015], [1516924980000, 0.016004, 0.01608657, 0.01600201, 0.01600201, 4.19096729], [1516925040000, 0.01600202, 0.01608657, 0.01600201, 0.01608657, 22.4034252], [1516925100000, 0.01608657, 0.01608657, 0.01602, 0.01608657, 15.78486109], [1516925160000, 0.01608657, 0.01608657, 0.01602, 0.01602, 20.9783233], [1516925220000, 0.01602, 0.01602, 0.01600614, 0.01602, 25.79905108], [1516925280000, 0.01602, 0.01610983, 0.01600614, 0.01600614, 25.82544901], [1516925340000, 0.01600614, 0.01602001, 0.01600101, 0.01600615, 27.67594325], [1516925400000, 0.01600615, 0.01600615, 0.01597, 0.01600101, 7.00022866], [1516925460000, 0.01600101, 0.01600101, 0.0159216, 0.01600101, 29.38945497], [1516925520000, 0.01592701, 0.01593301, 0.01592701, 0.01593301, 5.32340728], [1516925580000, 0.01592901, 0.016, 0.01592901, 0.015944, 52.3379561], [1516925640000, 0.015944, 0.016, 0.01593802, 0.01599998, 52.81068653], [1516925700000, 0.01599998, 0.016, 0.01592774, 0.016, 46.50423677], [1516925760000, 0.01600101, 0.01600101, 0.01598, 0.016, 10.43100536], [1516925820000, 0.01599997, 0.016, 0.0159217, 0.0159217, 154.00185818], [1516925880000, 0.01592161, 0.016, 0.0159216, 0.01592164, 62.42440069], [1516925940000, 0.016, 0.016, 0.01592164, 0.016, 5.35114368], [1516926000000, 0.01592175, 0.016048, 0.01592171, 0.01592209, 83.2100277], [1516926060000, 0.01592214, 0.016045, 0.01592214, 0.01592309, 8.12439448], [1516926120000, 0.01604799, 0.01604799, 0.016, 0.01603963, 12.89394079], [1516926180000, 0.01603958, 0.01603958, 0.01603949, 0.01603949, 1.93808673], [1516926240000, 0.01603949, 0.01603949, 0.015934, 0.015934, 41.12793883], [1516926300000, 0.015934, 0.016, 0.015934, 0.01593401, 2.85131039], [1516926360000, 0.01593402, 0.016, 0.01593401, 0.016, 2.11380119], [1516926420000, 0.01593405, 0.016, 0.01593401, 0.016, 19.28830925], [1516926480000, 0.01598001, 0.016, 0.01598001, 0.01599999, 2.60797214], [1516926540000, 0.01599998, 0.016, 0.01598001, 0.01599999, 7.8797373], [1516926600000, 0.01599998, 0.01599998, 0.01598, 0.0159999, 17.94086468], [1516926660000, 0.0159999, 0.0159999, 0.01598, 0.01599989, 4.07706], [1516926720000, 0.0159997, 0.0159997, 0.01599969, 0.01599969, 3.23956563], [1516926780000, 0.0159995, 0.0159995, 0.01598, 0.015999, 12.02374095], [1516926840000, 0.01598, 0.01598, 0.01594649, 0.01598, 14.31938063], [1516926900000, 0.01594649, 0.01598, 0.01592281, 0.01597997, 29.15317623], [1516926960000, 0.01597997, 0.01597997, 0.01592279, 0.01597996, 8.83206468], [1516927020000, 0.01597996, 0.01601386, 0.01592279, 0.016, 133.72614831], [1516927080000, 0.016, 0.01605, 0.0159217, 0.01602988, 28.03300888], [1516927140000, 0.01593723, 0.01604998, 0.01593723, 0.01593723, 2.93437151], [1516927200000, 0.01593723, 0.01604816, 0.01592255, 0.01604437, 12.5890977], [1516927260000, 0.01604436, 0.01604472, 0.0159218, 0.015932, 38.00844257], [1516927320000, 0.01604423, 0.01604424, 0.0159216, 0.01592701, 36.20422934], [1516927380000, 0.01603163, 0.01603163, 0.01592701, 0.01592701, 3.9267254], [1516927440000, 0.01603157, 0.01603159, 0.0159216, 0.016027, 25.8364402], [1516927500000, 0.01592706, 0.01602196, 0.01591008, 0.01601695, 17.16889792], [1516927560000, 0.01601695, 0.01601695, 0.01591008, 0.0159101, 16.42149849], [1516927620000, 0.0159101, 0.016017, 0.01591008, 0.015915, 27.88946157], [1516927680000, 0.015915, 0.01601199, 0.015915, 0.016, 55.9221424], [1516927740000, 0.01591501, 0.01601197, 0.015915, 0.01591501, 46.38060808], [1516927800000, 0.01591502, 0.015995, 0.015915, 0.01599498, 41.05203485], [1516927860000, 0.01591502, 0.01591502, 0.01591502, 0.01591502, 5.79682391], [1516927920000, 0.01591509, 0.01599494, 0.01591502, 0.01599494, 13.42753653], [1516927980000, 0.01599494, 0.01599495, 0.01591502, 0.01591509, 14.21594267], [1516928040000, 0.0159151, 0.01599495, 0.01591502, 0.01591502, 15.90982909], [1516928100000, 0.01591502, 0.015995, 0.0159, 0.01592, 49.25837607], [1516928160000, 0.01592, 0.01598102, 0.01592, 0.01598102, 9.78292703], [1516928220000, 0.01591502, 0.01599497, 0.01591502, 0.01599497, 9.72646552], [1516928280000, 0.01591502, 0.01599, 0.01591502, 0.01599, 20.84794388], [1516928340000, 0.01591502, 0.01598919, 0.01591502, 0.01591502, 3.55804075], [1516928400000, 0.01591502, 0.0159892, 0.01591502, 0.01598919, 6.80216304], [1516928460000, 0.01598919, 0.01598919, 0.01591505, 0.01591505, 5.25141548], [1516928520000, 0.01591505, 0.01591505, 0.01591503, 0.01591505, 16.10585494], [1516928580000, 0.01591503, 0.01591505, 0.01591503, 0.01591505, 10.25949012], [1516928640000, 0.01591503, 0.01591505, 0.01591503, 0.01591503, 51.75157066], [1516928700000, 0.01591503, 0.01591505, 0.01591503, 0.01591505, 16.92786166], [1516928760000, 0.01591505, 0.01591505, 0.01591503, 0.01591505, 0.7600844], [1516928820000, 0.01591505, 0.01598918, 0.01591502, 0.01591502, 65.80766291], [1516928880000, 0.01591503, 0.01591503, 0.01591502, 0.01591502, 25.95792345], [1516928940000, 0.01591502, 0.01591502, 0.01590925, 0.01590925, 60.91176407], [1516929000000, 0.01591501, 0.01591501, 0.0159, 0.0159, 17.02530895], [1516929060000, 0.01591501, 0.01591501, 0.01590007, 0.01590007, 9.91712942], [1516929120000, 0.01591501, 0.01591501, 0.01587833, 0.01590007, 36.78334049], [1516929180000, 0.01590007, 0.01591501, 0.01590007, 0.01591501, 8.59879461], [1516929240000, 0.01590008, 0.01590009, 0.01590008, 0.01590009, 2.52051934], [1516929300000, 0.01591, 0.01591502, 0.0159001, 0.01591502, 29.91453613], [1516929360000, 0.01591502, 0.01591502, 0.01590007, 0.01590007, 6.65887286], [1516929420000, 0.0159001, 0.01591502, 0.0159001, 0.01591502, 30.21670068], [1516929480000, 0.0159001, 0.01591502, 0.0159001, 0.01591502, 15.91922734], [1516929540000, 0.01591002, 0.01591502, 0.015868, 0.015868, 14.67726535], [1516929600000, 0.01586917, 0.01591502, 0.0158569, 0.01585691, 18.3637266], [1516929660000, 0.01591502, 0.01591502, 0.015915, 0.015915, 2.31636659], [1516929720000, 0.01591252, 0.01591502, 0.01585502, 0.0158569, 26.27678247], [1516929780000, 0.01591501, 0.01591501, 0.0158569, 0.0158569, 4.1024245], [1516929840000, 0.015915, 0.01591501, 0.01585691, 0.01585691, 10.57683257], [1516929900000, 0.01585691, 0.01591502, 0.0158569, 0.0158569, 82.56548905], [1516929960000, 0.01585691, 0.01591501, 0.01585691, 0.01585691, 66.0853323], [1516930020000, 0.01585691, 0.0159, 0.0158569, 0.0159, 25.52044519], [1516930080000, 0.0159, 0.0159, 0.0158871, 0.0158871, 8.87801923], [1516930140000, 0.0159, 0.0159, 0.01584001, 0.01585, 83.25349468], [1516930200000, 0.01585, 0.0159, 0.01585, 0.0159, 5.92314799], [1516930260000, 0.0159, 0.0159, 0.0158989, 0.0159, 7.48460462], [1516930320000, 0.0159, 0.0159, 0.0158989, 0.0158989, 4.06500383], [1516930380000, 0.0158989, 0.0158989, 0.0158841, 0.0158841, 21.43387957], [1516930440000, 0.01585317, 0.0158841, 0.01585317, 0.0158838, 42.5088553], [1516930500000, 0.01585317, 0.0158838, 0.01585, 0.0158838, 7.10985455], [1516930560000, 0.0158838, 0.0158838, 0.01588379, 0.01588379, 1.9414858], [1516930620000, 0.01588379, 0.01588379, 0.01585, 0.01585, 4.87133659], [1516930680000, 0.01587379, 0.0158838, 0.01585001, 0.0158838, 18.15240937], [1516930740000, 0.0158838, 0.0158838, 0.0158838, 0.0158838, 2.47844405], [1516930800000, 0.0158838, 0.0158838, 0.0158838, 0.0158838, 2.59139715], [1516930860000, 0.01585006, 0.0158838, 0.01585, 0.01585001, 1.65984452], [1516930920000, 0.01585005, 0.0158838, 0.01585001, 0.01585001, 8.93414353], [1516930980000, 0.01585001, 0.0158838, 0.01585, 0.0158838, 10.01768577], [1516931040000, 0.01585001, 0.0158838, 0.01585001, 0.01585001, 5.71757936], [1516931100000, 0.0158838, 0.0158838, 0.01585001, 0.01585001, 1.15934424], [1516931160000, 0.01585001, 0.01585001, 0.01585, 0.01585001, 19.66476011], [1516931220000, 0.01585, 0.01585001, 0.01585, 0.01585, 13.90049054], [1516931280000, 0.01585001, 0.01585001, 0.01585001, 0.01585001, 4.08953617], [1516931340000, 0.01588378, 0.0158838, 0.01585, 0.01585001, 22.72716046], [1516931400000, 0.0158838, 0.0158838, 0.0158501, 0.0158501, 1.43878026], [1516931460000, 0.0158838, 0.0158838, 0.0158501, 0.0158838, 7.63482872], [1516931520000, 0.0158838, 0.0158838, 0.01585312, 0.015883, 8.12065577], [1516931580000, 0.015883, 0.0158838, 0.015883, 0.0158838, 9.19742654], [1516931640000, 0.015883, 0.0158838, 0.015883, 0.0158838, 16.19135566], [1516931700000, 0.015883, 0.0158838, 0.015883, 0.015883, 5.80957485], [1516931760000, 0.015883, 0.0158838, 0.015883, 0.015883, 5.28936898], [1516931820000, 0.0158838, 0.0158999, 0.015883, 0.0158999, 6.63161504], [1516931880000, 0.0158999, 0.01591502, 0.0158838, 0.0159, 5.30236789], [1516931940000, 0.0158838, 0.0158838, 0.0158838, 0.0158838, 0.51446479], [1516932000000, 0.0158838, 0.0158838, 0.015883, 0.015883, 44.13114839], [1516932060000, 0.0158838, 0.0158838, 0.015883, 0.0158838, 28.86269523], [1516932120000, 0.015883, 0.0158838, 0.01585001, 0.0158838, 205.26882802], [1516932180000, 0.0158838, 0.0158838, 0.01585001, 0.01587999, 28.18095997], [1516932240000, 0.01585001, 0.0158808, 0.01585001, 0.01585002, 0.90563971], [1516932300000, 0.01585001, 0.0158838, 0.01585001, 0.0158838, 40.89998805], [1516932360000, 0.0158838, 0.0158838, 0.01585001, 0.01585001, 106.08852583], [1516932420000, 0.01585001, 0.01589999, 0.01585001, 0.01589999, 21.26373485], [1516932480000, 0.01588379, 0.01589999, 0.01585001, 0.01589998, 21.41997953], [1516932540000, 0.01589998, 0.01589998, 0.01589498, 0.01589498, 0.71094253], [1516932600000, 0.01589498, 0.01589999, 0.01589498, 0.01589499, 15.9974006], [1516932660000, 0.01589499, 0.01589999, 0.01584, 0.01584, 47.94492577], [1516932720000, 0.01583002, 0.01585896, 0.01581767, 0.01585896, 23.54942138], [1516932780000, 0.01583002, 0.01584598, 0.01581591, 0.01583002, 8.3351583], [1516932840000, 0.01583002, 0.01586099, 0.01583002, 0.01583002, 41.44010573], [1516932900000, 0.01583002, 0.01583932, 0.01581001, 0.01581001, 3.7583349], [1516932960000, 0.01581001, 0.0158109, 0.0158, 0.0158, 27.62937822], [1516933020000, 0.01580001, 0.015824, 0.01578779, 0.01578779, 71.14944516], [1516933080000, 0.0158092, 0.01581802, 0.01578779, 0.015801, 7.81059046], [1516933140000, 0.01580099, 0.01580099, 0.01578, 0.01578779, 9.29205902], [1516933200000, 0.015801, 0.015801, 0.01578779, 0.0157944, 14.67700986], [1516933260000, 0.0157944, 0.0158062, 0.01578779, 0.0157878, 20.19026261], [1516933320000, 0.0157878, 0.0157878, 0.01576, 0.0157878, 16.42763646], [1516933380000, 0.0157878, 0.0157878, 0.0157591, 0.01575978, 14.18091108], [1516933440000, 0.0157878, 0.0157878, 0.01575978, 0.01575978, 19.16796292], [1516933500000, 0.0157906, 0.0158062, 0.01575978, 0.01575978, 11.50084717], [1516933560000, 0.0158056, 0.0158056, 0.01575978, 0.01580319, 2.67742199], [1516933620000, 0.01575979, 0.01580619, 0.01575979, 0.01575979, 4.44420358], [1516933680000, 0.015761, 0.01576105, 0.01575978, 0.01576105, 17.74118155], [1516933740000, 0.015761, 0.01580619, 0.01575978, 0.0158016, 11.43474725], [1516933800000, 0.01576, 0.0158062, 0.01575978, 0.01575978, 32.42059369], [1516933860000, 0.0158062, 0.0158062, 0.01576006, 0.01576006, 7.95558394], [1516933920000, 0.01576006, 0.01581616, 0.01576006, 0.0158156, 11.38777523], [1516933980000, 0.0158156, 0.0158192, 0.01575978, 0.0158192, 22.72683048], [1516934040000, 0.0158192, 0.01581921, 0.01575978, 0.01575978, 5.84838218], [1516934100000, 0.01581612, 0.01581613, 0.01575978, 0.01581013, 3.52788964], [1516934160000, 0.0158101, 0.01581011, 0.01575979, 0.01576062, 5.64904003], [1516934220000, 0.01580658, 0.01580659, 0.01580066, 0.01580659, 3.68450799], [1516934280000, 0.01580066, 0.0158046, 0.01580066, 0.0158046, 1.47053558], [1516934340000, 0.01580066, 0.01580659, 0.01580066, 0.01580659, 6.56728765], [1516934400000, 0.01580659, 0.01580659, 0.01576069, 0.01576069, 4.00389747], [1516934460000, 0.01576068, 0.01580659, 0.01576068, 0.01576892, 12.97041899], [1516934520000, 0.01576892, 0.01580659, 0.01576892, 0.01578, 8.80633176], [1516934580000, 0.01578, 0.01580659, 0.0157712, 0.0157712, 15.11472053], [1516934640000, 0.01577192, 0.015806, 0.01577192, 0.01577192, 7.2040039], [1516934700000, 0.015806, 0.01581011, 0.01577192, 0.01577192, 15.52124763], [1516934760000, 0.01581011, 0.01581011, 0.01575978, 0.01575978, 66.31455181], [1516934820000, 0.01575978, 0.01581009, 0.01575978, 0.015761, 12.80317515], [1516934880000, 0.015761, 0.01580407, 0.01575, 0.01575, 39.09586435], [1516934940000, 0.01575, 0.01575697, 0.01573511, 0.01573511, 21.30649421], [1516935000000, 0.01573511, 0.01575699, 0.01573001, 0.01573001, 30.1901055], [1516935060000, 0.01573001, 0.01575695, 0.01571593, 0.01572756, 47.3608685], [1516935120000, 0.01572756, 0.015757, 0.01571517, 0.015757, 8.34518968], [1516935180000, 0.01575699, 0.0157606, 0.01571517, 0.01571517, 30.89690687], [1516935240000, 0.01573646, 0.01573646, 0.01571517, 0.01573646, 8.07474691], [1516935300000, 0.01573646, 0.01578099, 0.01571517, 0.01578099, 9.97594572], [1516935360000, 0.01577959, 0.015786, 0.01571517, 0.01573646, 5.40769864], [1516935420000, 0.01573646, 0.015774, 0.01573646, 0.01573646, 7.06389206], [1516935480000, 0.01574252, 0.01578599, 0.01571517, 0.01578599, 20.47839148], [1516935540000, 0.01577697, 0.01577697, 0.01571517, 0.01571517, 8.16262638], [1516935600000, 0.015769, 0.015769, 0.01571517, 0.01576299, 1.77945431], [1516935660000, 0.01571527, 0.01572386, 0.01571517, 0.01571517, 1.65814302], [1516935720000, 0.01571517, 0.01571517, 0.01571517, 0.01571517, 0.4384579], [1516935780000, 0.01571517, 0.015725, 0.0157042, 0.01572442, 50.11150324], [1516935840000, 0.01572442, 0.015725, 0.01570045, 0.015701, 19.64221945], [1516935900000, 0.015701, 0.015725, 0.01570032, 0.01570032, 75.4588901], [1516935960000, 0.01570032, 0.015725, 0.0157, 0.015725, 24.27608508], [1516936020000, 0.015725, 0.015725, 0.01570152, 0.015725, 32.72356588], [1516936080000, 0.015725, 0.015725, 0.01570452, 0.01570452, 14.92986339], [1516936140000, 0.01570452, 0.01576867, 0.01570452, 0.01576867, 14.79797368], [1516936200000, 0.01576835, 0.01576867, 0.01570152, 0.01570152, 25.47551771], [1516936260000, 0.01570031, 0.01576835, 0.01570001, 0.01576835, 50.44820849], [1516936320000, 0.01576835, 0.01576835, 0.01570031, 0.01576, 8.89650214], [1516936380000, 0.01576, 0.01576, 0.01570331, 0.01576, 21.10283509], [1516936440000, 0.01576, 0.01576835, 0.01576, 0.01576, 16.00911672], [1516936500000, 0.01576, 0.01576801, 0.01576, 0.01576, 1.73051299], [1516936560000, 0.01576, 0.015767, 0.01576, 0.01576, 15.01193474], [1516936620000, 0.01576, 0.01576, 0.01574, 0.01574, 11.93321983], [1516936680000, 0.01574, 0.01576, 0.01574, 0.01575574, 7.86113995], [1516936740000, 0.01576, 0.01576, 0.01575574, 0.01576, 4.95806205], [1516936800000, 0.01575574, 0.01575999, 0.01575574, 0.01575999, 1.62451776], [1516936860000, 0.01575998, 0.01575998, 0.01575574, 0.01575991, 2.85459609], [1516936920000, 0.01575991, 0.01575991, 0.01575574, 0.0157599, 3.11610794], [1516936980000, 0.01575991, 0.01575991, 0.0157003, 0.0157599, 45.37157504], [1516937040000, 0.0157003, 0.0157599, 0.01570001, 0.0157003, 27.66680494], [1516937100000, 0.0157003, 0.0157599, 0.01570001, 0.015759, 41.83900269], [1516937160000, 0.015759, 0.0157599, 0.0157569, 0.01575899, 12.11171646], [1516937220000, 0.015757, 0.01575899, 0.01570001, 0.01575899, 24.23560237], [1516937280000, 0.01573428, 0.01575899, 0.01570001, 0.01575599, 2.23428368], [1516937340000, 0.01575599, 0.01575899, 0.01575599, 0.01575599, 19.69996519], [1516937400000, 0.01575899, 0.015759, 0.01575599, 0.015759, 12.57687561], [1516937460000, 0.01575599, 0.01576, 0.015755, 0.0157599, 13.3626911], [1516937520000, 0.0157599, 0.01576867, 0.0157599, 0.01576867, 23.12896144], [1516937580000, 0.01576, 0.01576867, 0.01576, 0.01576867, 12.08993283], [1516937640000, 0.01576867, 0.015799, 0.01576867, 0.015793, 11.27216762], [1516937700000, 0.015793, 0.015793, 0.01576867, 0.01576867, 1.70785039], [1516937760000, 0.015793, 0.015793, 0.01576867, 0.015793, 6.11652211], [1516937820000, 0.015793, 0.01579998, 0.015793, 0.015796, 26.83319875], [1516937880000, 0.015796, 0.01579998, 0.01576, 0.01579998, 35.08563354], [1516937940000, 0.01579054, 0.01579054, 0.01576, 0.01579054, 5.58189182], [1516938000000, 0.01576, 0.01579054, 0.01571444, 0.01571444, 8.13929303], [1516938060000, 0.01576, 0.0158, 0.01576, 0.0158, 21.41579857], [1516938120000, 0.0158, 0.0158, 0.0158, 0.0158, 16.07585225], [1516938180000, 0.01576001, 0.0158, 0.01576001, 0.0158, 49.60313755], [1516938240000, 0.01576001, 0.0158, 0.01570031, 0.0158, 75.73668801], [1516938300000, 0.01579999, 0.01579999, 0.01570043, 0.01570048, 6.06312803], [1516938360000, 0.01570052, 0.01570052, 0.01570052, 0.01570052, 0.26445496], [1516938420000, 0.01572099, 0.01579999, 0.01570053, 0.01570104, 18.91452575], [1516938480000, 0.01570105, 0.01579999, 0.01570105, 0.01570106, 11.02892638], [1516938540000, 0.01573441, 0.01579991, 0.01570106, 0.01579991, 21.56001111], [1516938600000, 0.01579991, 0.01579991, 0.01571, 0.01578665, 16.14858446], [1516938660000, 0.01578665, 0.0158, 0.01571009, 0.0157986, 84.03937602], [1516938720000, 0.01579824, 0.01579824, 0.0157101, 0.0157101, 6.59684797], [1516938780000, 0.01571009, 0.01579824, 0.01571009, 0.0157101, 18.20239418], [1516938840000, 0.01571011, 0.0157986, 0.0157101, 0.0157101, 12.60630066], [1516938900000, 0.0157986, 0.0157986, 0.0157101, 0.0157102, 11.27750161], [1516938960000, 0.01577586, 0.0157986, 0.01571021, 0.01577586, 11.17507318], [1516939020000, 0.01577586, 0.01577586, 0.01571022, 0.01571022, 3.62522421], [1516939080000, 0.01577586, 0.01577586, 0.01571024, 0.01577586, 4.62290057], [1516939140000, 0.01571024, 0.01577586, 0.01571024, 0.01577586, 15.99921807], [1516939200000, 0.01577586, 0.01577586, 0.01577585, 0.01577585, 5.42200756], [1516939260000, 0.0157128, 0.01577585, 0.0157128, 0.01577585, 4.46640394], [1516939320000, 0.01577585, 0.0158, 0.0157201, 0.01577585, 27.36621144], [1516939380000, 0.01579759, 0.0157976, 0.0157201, 0.0157976, 10.17186408], [1516939440000, 0.0157976, 0.0157976, 0.01577585, 0.01577585, 1.45279164], [1516939500000, 0.0157976, 0.0157976, 0.0157261, 0.0157976, 6.41829134], [1516939560000, 0.0157291, 0.01579755, 0.0157291, 0.01573, 10.61195188], [1516939620000, 0.015732, 0.01579754, 0.0157201, 0.0157201, 11.63676744], [1516939680000, 0.01579754, 0.01579754, 0.0157261, 0.0157261, 10.97694558], [1516939740000, 0.0157231, 0.01579754, 0.0157231, 0.01572611, 10.01325003], [1516939800000, 0.01572612, 0.01572612, 0.01572311, 0.01572611, 19.42919664], [1516939860000, 0.0157261, 0.01572611, 0.0157261, 0.0157261, 3.39475141], [1516939920000, 0.01572611, 0.01572611, 0.0157231, 0.01572611, 6.9224032], [1516939980000, 0.01572611, 0.01572611, 0.0157231, 0.01572611, 6.1938013], [1516940040000, 0.01572611, 0.01572611, 0.0157261, 0.0157261, 11.00097157], [1516940100000, 0.0157261, 0.01572611, 0.0157261, 0.01572611, 15.24825871], [1516940160000, 0.0157261, 0.01572612, 0.0157261, 0.01572612, 16.19270833], [1516940220000, 0.01572611, 0.01572612, 0.01572611, 0.01572612, 9.40113349], [1516940280000, 0.01572612, 0.01579754, 0.01572611, 0.01572611, 12.8118972], [1516940340000, 0.01572611, 0.01572611, 0.0157261, 0.0157261, 72.57203182], [1516940400000, 0.01579754, 0.01579754, 0.0157261, 0.015731, 13.85681985], [1516940460000, 0.0157975, 0.01579754, 0.015731, 0.015731, 17.43312332], [1516940520000, 0.01579754, 0.01579754, 0.015731, 0.015731, 16.42283627], [1516940580000, 0.015731, 0.01579689, 0.015731, 0.015731, 7.8546152], [1516940640000, 0.015731, 0.01579499, 0.015731, 0.015731, 8.92978557], [1516940700000, 0.015791, 0.015791, 0.015731, 0.015791, 14.57649817], [1516940760000, 0.01578799, 0.015788, 0.015735, 0.01578799, 4.76590068], [1516940820000, 0.01578799, 0.01578799, 0.015731, 0.01573499, 40.66423284], [1516940880000, 0.01573499, 0.01573499, 0.01573499, 0.01573499, 44.05844034], [1516940940000, 0.01573499, 0.0157856, 0.01573499, 0.01573499, 23.15421365], [1516941000000, 0.01573499, 0.01579754, 0.01573499, 0.015735, 54.62120665], [1516941060000, 0.015735, 0.01579754, 0.015735, 0.015735, 11.88390752], [1516941120000, 0.01579754, 0.01579754, 0.01574, 0.01574, 3.35864104], [1516941180000, 0.01574, 0.015741, 0.015739, 0.015741, 0.63409267], [1516941240000, 0.015741, 0.01578, 0.015735, 0.015735, 1.32493277], [1516941300000, 0.015741, 0.015741, 0.015735, 0.015741, 30.15015505], [1516941360000, 0.015741, 0.01578, 0.015738, 0.01578, 30.82370093], [1516941420000, 0.01578, 0.01578, 0.015738, 0.01578, 31.3590177], [1516941480000, 0.01578, 0.01579, 0.01578, 0.01578, 5.82625318], [1516941540000, 0.01578, 0.01579, 0.01578, 0.01579, 32.28373097], [1516941600000, 0.01579, 0.01579754, 0.01578, 0.01579754, 29.74083173], [1516941660000, 0.01579754, 0.01579754, 0.01578, 0.01579754, 14.82129646], [1516941720000, 0.01578, 0.01579754, 0.01578, 0.01579754, 4.02087109], [1516941780000, 0.01579754, 0.01579754, 0.01579754, 0.01579754, 1.06009237], [1516941840000, 0.01578, 0.01579, 0.01574101, 0.01579, 9.51375255], [1516941900000, 0.01574101, 0.01578, 0.015738, 0.01577, 17.86711866], [1516941960000, 0.015738, 0.01578578, 0.015731, 0.015731, 64.12193244], [1516942020000, 0.015725, 0.015738, 0.015718, 0.015718, 14.08974654], [1516942080000, 0.015738, 0.015738, 0.015718, 0.015738, 3.28600026], [1516942140000, 0.015738, 0.015738, 0.015718, 0.015738, 1.78574774], [1516942200000, 0.015738, 0.015738, 0.015718, 0.015738, 21.12653759], [1516942260000, 0.015738, 0.015738, 0.015738, 0.015738, 6.51864746], [1516942320000, 0.015738, 0.015738, 0.015738, 0.015738, 5.44762604], [1516942380000, 0.015738, 0.015738, 0.015738, 0.015738, 8.16172468], [1516942440000, 0.015738, 0.015738, 0.0157185, 0.0157185, 0.85332208], [1516942500000, 0.01573799, 0.015738, 0.0157185, 0.015738, 8.12055242], [1516942560000, 0.01573799, 0.015738, 0.015718, 0.015718, 17.0312141], [1516942620000, 0.01571105, 0.015718, 0.01571105, 0.015718, 9.65599742], [1516942680000, 0.015718, 0.015738, 0.01571105, 0.015738, 25.35251865], [1516942740000, 0.015738, 0.01579, 0.01571107, 0.01579, 2.80670673], [1516942800000, 0.01579, 0.01579, 0.01571105, 0.01579, 12.62494475], [1516942860000, 0.01579, 0.01579, 0.01579, 0.01579, 1.02316726], [1516942980000, 0.01579, 0.01579, 0.015716, 0.015716, 93.72283024], [1516943040000, 0.01571601, 0.015721, 0.01571601, 0.015721, 16.28825899], [1516943100000, 0.01579, 0.01579, 0.01571601, 0.01571601, 3.17425671], [1516943160000, 0.01573172, 0.01579, 0.01571601, 0.01571601, 7.3853817], [1516943220000, 0.01571608, 0.01579, 0.01571607, 0.01571607, 4.29558795], [1516943280000, 0.01579, 0.01579, 0.01571607, 0.01571607, 5.96841426], [1516943340000, 0.01571607, 0.01575303, 0.01571607, 0.01575303, 1.90570601], [1516943400000, 0.015721, 0.0157976, 0.015721, 0.01575303, 60.17830886], [1516943460000, 0.01579759, 0.01579759, 0.01575303, 0.01575303, 19.74161579], [1516943520000, 0.01579759, 0.0157976, 0.0157211, 0.01579758, 16.45069936], [1516943580000, 0.01579758, 0.01579758, 0.0157211, 0.0157211, 0.49062311], [1516943700000, 0.0157956, 0.01579757, 0.01579457, 0.01579757, 3.57725326], [1516943760000, 0.01579659, 0.01579659, 0.01579659, 0.01579659, 29.72683653], [1516943820000, 0.01579658, 0.01579659, 0.015716, 0.01579659, 63.81017541], [1516943880000, 0.0157211, 0.0158, 0.0157211, 0.0158, 66.57378271], [1516943940000, 0.015722, 0.01573, 0.0157211, 0.0157211, 11.90285202], [1516944000000, 0.0157241, 0.0157946, 0.015716, 0.0157946, 22.33330671], [1516944060000, 0.0157946, 0.0157946, 0.015716, 0.015716, 25.93907781], [1516944120000, 0.0157946, 0.0157946, 0.015716, 0.015716, 12.70223833], [1516944180000, 0.015719, 0.015719, 0.0157174, 0.0157184, 2.7197812], [1516944240000, 0.0157916, 0.0157946, 0.0157916, 0.0157946, 1.45215704], [1516944300000, 0.01571901, 0.0157946, 0.01571901, 0.01572201, 9.05637915], [1516944360000, 0.01572201, 0.0157946, 0.01572201, 0.0157946, 6.23968682], [1516944420000, 0.01579, 0.0157946, 0.01571901, 0.01576078, 38.21962497], [1516944480000, 0.01576078, 0.01579455, 0.015719, 0.015719, 5.74803808], [1516944540000, 0.01577655, 0.01579455, 0.015716, 0.01579452, 11.45311229], [1516944600000, 0.01571901, 0.01579451, 0.01571901, 0.0157945, 7.36191262], [1516944660000, 0.01579449, 0.01579449, 0.015716, 0.01579449, 8.05940042], [1516944720000, 0.01575, 0.01576, 0.015716, 0.015716, 2.13854992], [1516944780000, 0.01574999, 0.01575, 0.015716, 0.015716, 26.23301783], [1516944840000, 0.01572, 0.01575, 0.015716, 0.015716, 8.07897176], [1516944900000, 0.01572, 0.01575, 0.015716, 0.01575, 9.65025277], [1516944960000, 0.01575, 0.01575, 0.01575, 0.01575, 1.5338469], [1516945020000, 0.015716, 0.01579448, 0.015716, 0.01579448, 26.46239167], [1516945080000, 0.01579148, 0.01579148, 0.01579148, 0.01579148, 1.3925632], [1516945140000, 0.01578848, 0.01579148, 0.01578848, 0.01579148, 18.81855992], [1516945200000, 0.01579148, 0.01579149, 0.01579148, 0.01579148, 18.73449728], [1516945260000, 0.01579148, 0.01579148, 0.01571601, 0.01579148, 5.0307044], [1516945320000, 0.01578848, 0.01578848, 0.01578848, 0.01578848, 5.97403674], [1516945380000, 0.01579, 0.01579, 0.01571604, 0.01571604, 3.56488434], [1516945440000, 0.01579, 0.01579, 0.01572251, 0.01572251, 1.95179714], [1516945500000, 0.01572256, 0.0157899, 0.01572255, 0.015784, 12.722559], [1516945560000, 0.0157204, 0.01575605, 0.01571609, 0.01575605, 5.49041253], [1516945620000, 0.01575605, 0.01579148, 0.01571609, 0.01571609, 6.5086891], [1516945680000, 0.01571609, 0.01579149, 0.01571609, 0.01571621, 21.52203437], [1516945740000, 0.0157162, 0.01579, 0.015716, 0.01571601, 33.26891383], [1516945800000, 0.015716, 0.015791, 0.015716, 0.015791, 8.66693222], [1516945860000, 0.0157162, 0.015789, 0.01571601, 0.015789, 4.29091056], [1516945920000, 0.01572, 0.01572, 0.01572, 0.01572, 1.83623513], [1516945980000, 0.01572, 0.01572, 0.01572, 0.01572, 1.31670391], [1516946040000, 0.015789, 0.01579, 0.01572, 0.01579, 10.33557748], [1516946100000, 0.01572, 0.01579, 0.01572, 0.01579, 5.63094062], [1516946160000, 0.01572, 0.01579, 0.01572, 0.01579, 1.72238256], [1516946220000, 0.01572, 0.01572, 0.01571601, 0.01571601, 27.97997333], [1516946280000, 0.01572, 0.01572, 0.015716, 0.01571601, 151.51594325], [1516946340000, 0.01571601, 0.01571601, 0.015716, 0.015716, 46.31836244], [1516946400000, 0.015716, 0.01571601, 0.015716, 0.01571601, 73.27570166], [1516946460000, 0.01571601, 0.01571601, 0.015716, 0.01571601, 9.41247357], [1516946520000, 0.01571601, 0.01579, 0.015716, 0.01579, 1.65790585], [1516946580000, 0.01579, 0.01579449, 0.01579, 0.01579449, 9.37486457], [1516946640000, 0.01579449, 0.01579449, 0.01579, 0.01579, 5.95065389], [1516946700000, 0.01579, 0.01579449, 0.01579, 0.01579449, 17.49323673], [1516946760000, 0.01579, 0.01579449, 0.01579, 0.01579, 20.72919599], [1516946820000, 0.01579, 0.01579449, 0.01579, 0.01579, 30.75537099], [1516946880000, 0.01579449, 0.01579449, 0.01579, 0.01579449, 12.547761], [1516946940000, 0.01579, 0.01579449, 0.01571566, 0.01571566, 60.49313884], [1516947000000, 0.01571565, 0.01579449, 0.01571565, 0.01579449, 19.07719793], [1516947060000, 0.01572141, 0.01572142, 0.01572141, 0.01572142, 3.40455917], [1516947120000, 0.01579449, 0.01579449, 0.01572142, 0.01572142, 7.43225084], [1516947180000, 0.01575, 0.01579449, 0.01575, 0.01579449, 0.86503617], [1516947240000, 0.01575, 0.01579449, 0.01575, 0.01579449, 9.43657459], [1516947300000, 0.01579449, 0.01579449, 0.01579449, 0.01579449, 0.90690653], [1516947360000, 0.01579449, 0.01579449, 0.015755, 0.015755, 4.36137828], [1516947420000, 0.015755, 0.015755, 0.01572341, 0.015755, 18.78129422], [1516947480000, 0.015755, 0.015755, 0.0157244, 0.0157245, 34.79900574], [1516947540000, 0.0157245, 0.0157245, 0.01571565, 0.01571565, 17.55253737], [1516947600000, 0.01579142, 0.0158, 0.01572451, 0.0157998, 17.97101387], [1516947660000, 0.01572454, 0.0157998, 0.01572453, 0.0157998, 1.46253911], [1516947720000, 0.0158, 0.0158, 0.01571867, 0.0158, 19.5014556], [1516947780000, 0.01575303, 0.0158, 0.0157105, 0.0157105, 103.51667354], [1516947840000, 0.01579294, 0.01579294, 0.01571051, 0.01571051, 0.70086093], [1516947900000, 0.01578257, 0.01578257, 0.0157, 0.0157, 51.15748445], [1516947960000, 0.0157074, 0.01577, 0.0157074, 0.0157105, 6.73520411], [1516948020000, 0.01571041, 0.01571041, 0.01570741, 0.01571041, 61.94137203], [1516948080000, 0.01571041, 0.01571041, 0.01570742, 0.01571041, 25.9492091], [1516948140000, 0.015769, 0.015769, 0.01570002, 0.01573, 27.81813705], [1516948200000, 0.01573, 0.01579998, 0.01570002, 0.01579698, 31.98174116], [1516948260000, 0.01576868, 0.01578831, 0.01570034, 0.01570034, 14.29358813], [1516948320000, 0.01577787, 0.01577787, 0.01572034, 0.01572034, 2.25791363], [1516948380000, 0.01572034, 0.01578205, 0.01572034, 0.01572034, 4.31846537], [1516948440000, 0.01578506, 0.01578506, 0.01578506, 0.01578506, 2.76508022], [1516948500000, 0.01578206, 0.01578206, 0.0157205, 0.0157205, 7.29365994], [1516948560000, 0.01578, 0.01578, 0.01572034, 0.01572034, 60.44871801], [1516948620000, 0.01572034, 0.01577499, 0.01572034, 0.01572034, 2.10237488], [1516948680000, 0.01576193, 0.01576193, 0.01572034, 0.01576193, 2.2741977], [1516948740000, 0.01572036, 0.01576737, 0.01572035, 0.01572035, 10.09353804], [1516948800000, 0.01572035, 0.01577, 0.01572035, 0.01572035, 9.2990651], [1516948860000, 0.01572035, 0.01576193, 0.01572035, 0.01576193, 13.58097226], [1516948920000, 0.015762, 0.01576994, 0.01576193, 0.01576994, 5.59023693], [1516948980000, 0.01576193, 0.01576694, 0.01572035, 0.01576694, 6.13557473], [1516949040000, 0.015731, 0.015731, 0.015731, 0.015731, 2.1995804], [1516949100000, 0.0157311, 0.01576392, 0.0157311, 0.01576092, 2.28305393], [1516949160000, 0.0157311, 0.0157311, 0.0157311, 0.0157311, 11.1144561], [1516949220000, 0.0157311, 0.0157311, 0.015731, 0.015731, 3.1881197], [1516949280000, 0.015731, 0.015731, 0.015731, 0.015731, 15.86464304], [1516949340000, 0.015731, 0.015731, 0.015731, 0.015731, 19.548704], [1516949400000, 0.01576092, 0.01577555, 0.015731, 0.01577555, 27.01185952], [1516949460000, 0.01577555, 0.01577594, 0.015732, 0.015732, 8.43547467], [1516949520000, 0.01577555, 0.01577595, 0.01577555, 0.01577595, 15.93670811], [1516949580000, 0.01577594, 0.01578, 0.01577594, 0.01577899, 17.71533559], [1516949640000, 0.01577999, 0.01578, 0.01577899, 0.01577899, 11.55858693], [1516949700000, 0.01577899, 0.01578, 0.01577899, 0.01577899, 3.42716865], [1516949760000, 0.01577899, 0.01577899, 0.01577899, 0.01577899, 2.66291002], [1516949820000, 0.01577999, 0.01578, 0.01577594, 0.01578, 48.60861176], [1516949880000, 0.01578, 0.01578, 0.01578, 0.01578, 6.48230976], [1516949940000, 0.01578, 0.01578204, 0.01578, 0.01578204, 0.97768042], [1516950000000, 0.01578204, 0.01578504, 0.01578204, 0.01578503, 11.20751411], [1516950060000, 0.01578504, 0.01578504, 0.01578204, 0.01578204, 5.06343219], [1516950120000, 0.01578504, 0.01578504, 0.01578204, 0.01578204, 13.44075746], [1516950180000, 0.01578504, 0.01578504, 0.01578, 0.01578504, 1.95221538], [1516950240000, 0.01578, 0.01578504, 0.015732, 0.015732, 8.09019248], [1516950300000, 0.01578, 0.01579, 0.015732, 0.01579, 4.54767528], [1516950360000, 0.01579, 0.01579, 0.01579, 0.01579, 0.10508069], [1516950420000, 0.01579, 0.01579, 0.0157344, 0.01575, 3.34293866], [1516950480000, 0.01575, 0.01579, 0.01575, 0.01579, 1.12542326], [1516950540000, 0.01575001, 0.01579, 0.01575001, 0.01579, 0.39966559], [1516950600000, 0.01579, 0.01579, 0.01575301, 0.01579, 2.18218898], [1516950660000, 0.01579, 0.01579, 0.0157842, 0.0157842, 0.28998754], [1516950720000, 0.01575001, 0.0157842, 0.0157494, 0.01575301, 41.18339786], [1516950780000, 0.0157441, 0.0157842, 0.01574111, 0.0157842, 6.80371732], [1516950840000, 0.01575001, 0.0157842, 0.01575001, 0.0157842, 12.98634472], [1516950900000, 0.0157842, 0.0157842, 0.01576, 0.01576711, 4.63163694], [1516950960000, 0.01579, 0.01579, 0.0157842, 0.0157842, 1.03428827], [1516951020000, 0.0157842, 0.01578999, 0.0157842, 0.01578999, 5.86781588], [1516951080000, 0.01578999, 0.01578999, 0.01573202, 0.0157842, 133.24641752], [1516951140000, 0.01573809, 0.0157842, 0.01573809, 0.0157842, 19.3505923], [1516951200000, 0.01574413, 0.0157842, 0.01574413, 0.0157742, 16.38606458], [1516951260000, 0.0157742, 0.0157842, 0.01574744, 0.0157742, 8.73624952], [1516951320000, 0.01578419, 0.01580406, 0.01574719, 0.01580406, 69.94269833], [1516951380000, 0.01580406, 0.01580406, 0.01579, 0.01579, 13.14695678], [1516951440000, 0.01579, 0.01579, 0.01573204, 0.01579, 71.11529255], [1516951500000, 0.01579, 0.01579, 0.0157354, 0.01573541, 2.01245519], [1516951560000, 0.01579, 0.01579, 0.01579, 0.01579, 1.66719616], [1516951620000, 0.01579, 0.01579, 0.01574441, 0.01574441, 13.09342498], [1516951680000, 0.01579, 0.01580759, 0.01574441, 0.01579, 22.40122772], [1516951740000, 0.01574441, 0.01580759, 0.01574441, 0.01580459, 15.62725617], [1516951800000, 0.01574441, 0.01580757, 0.01574441, 0.01580757, 25.43118348], [1516951860000, 0.01574441, 0.0158, 0.015744, 0.0157444, 46.27677562], [1516951920000, 0.01579, 0.01579, 0.01578999, 0.01578999, 0.14005036], [1516951980000, 0.0157444, 0.0158, 0.015744, 0.01579, 59.47695171], [1516952040000, 0.01579, 0.01579, 0.01578, 0.01578, 3.33405786], [1516952100000, 0.01578, 0.01578, 0.015747, 0.015747, 9.43864908], [1516952160000, 0.01578, 0.015795, 0.01574699, 0.01578, 9.39183848], [1516952220000, 0.01578, 0.01578, 0.01578, 0.01578, 12.44950033], [1516952280000, 0.01579999, 0.01579999, 0.01574401, 0.01574742, 6.03054048], [1516952340000, 0.01577219, 0.01579999, 0.0157474, 0.0157474, 6.9501599], [1516952400000, 0.01579, 0.01579977, 0.01579, 0.01579, 4.38401618], [1516952460000, 0.01579977, 0.01579977, 0.01579, 0.01579, 2.80943277], [1516952520000, 0.01579, 0.01579, 0.01574401, 0.01579, 10.41353853], [1516952580000, 0.01579, 0.01580757, 0.01579, 0.01580757, 12.62030822], [1516952640000, 0.01580757, 0.01580759, 0.01579441, 0.01580759, 107.82219761], [1516952700000, 0.01580759, 0.01583932, 0.01579444, 0.01583932, 15.19321405], [1516952760000, 0.01580261, 0.01584, 0.01579445, 0.01579445, 14.52888726], [1516952820000, 0.01579446, 0.01584999, 0.01579065, 0.01579065, 3.28624997], [1516952880000, 0.01584699, 0.01584699, 0.01584698, 0.01584698, 0.21953381], [1516952940000, 0.01584698, 0.01584698, 0.01579067, 0.01584397, 2.99936782], [1516953000000, 0.015843, 0.01584698, 0.01579067, 0.01584, 8.94928937], [1516953060000, 0.01579067, 0.01579067, 0.01579067, 0.01579067, 48.78997106], [1516953120000, 0.01579067, 0.01579067, 0.01575864, 0.01579067, 56.82277913], [1516953180000, 0.01575883, 0.01579067, 0.01575883, 0.01579067, 7.31975378], [1516953240000, 0.01579067, 0.01584999, 0.01577446, 0.01577801, 72.68655066], [1516953300000, 0.01584999, 0.01584999, 0.01577801, 0.01584999, 12.13481703], [1516953360000, 0.01578897, 0.0159, 0.01578897, 0.01586584, 62.02801738], [1516953420000, 0.01580533, 0.01584999, 0.01580533, 0.01581438, 22.34171358], [1516953480000, 0.01582541, 0.0159, 0.01582541, 0.0159, 0.87527732], [1516953540000, 0.01582641, 0.0159, 0.0158255, 0.0159, 69.70460636], [1516953600000, 0.015889, 0.015889, 0.01585, 0.015889, 11.37127993], [1516953660000, 0.01585001, 0.0159, 0.01585001, 0.01585001, 27.98680105], [1516953720000, 0.01585001, 0.01585001, 0.01585, 0.01585001, 16.63990306], [1516953780000, 0.01585, 0.01595999, 0.01585, 0.01595999, 43.38069663], [1516953840000, 0.01591683, 0.01595499, 0.01587868, 0.01595199, 1.53924013], [1516953900000, 0.01587868, 0.01595199, 0.01582952, 0.01587868, 323.02015944], [1516953960000, 0.01587869, 0.01589488, 0.01587869, 0.01589488, 26.26759629], [1516954020000, 0.01589488, 0.01594834, 0.01589488, 0.01594834, 8.16784398], [1516954080000, 0.01594834, 0.01595198, 0.01589489, 0.01589568, 63.13579445], [1516954140000, 0.01594, 0.01597, 0.01589569, 0.01590173, 110.03969011], [1516954200000, 0.01594834, 0.01594834, 0.01587869, 0.01594668, 66.65946988], [1516954260000, 0.01589489, 0.015941, 0.01587868, 0.01593902, 21.91179511], [1516954320000, 0.01589488, 0.01594534, 0.01589488, 0.01589488, 60.26343929], [1516954380000, 0.01589488, 0.0159, 0.01587488, 0.01587488, 11.15344519], [1516954440000, 0.01587868, 0.01587868, 0.01585, 0.01585, 1.17889912], [1516954500000, 0.01585, 0.01593994, 0.01585, 0.01593795, 26.47109079], [1516954560000, 0.01587488, 0.01587488, 0.01587488, 0.01587488, 14.2392287], [1516954620000, 0.01587488, 0.0159, 0.01587488, 0.01587488, 33.58131594], [1516954680000, 0.01587488, 0.015897, 0.01578618, 0.01578618, 29.38791756], [1516954740000, 0.01579755, 0.01579755, 0.01576564, 0.01578618, 17.32837445], [1516954800000, 0.01578618, 0.015877, 0.01578618, 0.01580198, 14.42224665], [1516954860000, 0.01587699, 0.01587699, 0.01580198, 0.01580198, 22.88664927], [1516954920000, 0.01580198, 0.01580198, 0.01571, 0.0157361, 311.0404433], [1516954980000, 0.01587094, 0.01587699, 0.01577322, 0.01587699, 69.82413395], [1516955040000, 0.01587699, 0.01594, 0.01587699, 0.01593692, 92.9015657], [1516955100000, 0.01588, 0.01594534, 0.01588, 0.01594534, 50.04307078], [1516955160000, 0.01594534, 0.01597909, 0.01588701, 0.01590101, 49.04915988], [1516955220000, 0.01597909, 0.0159795, 0.01589622, 0.015911, 18.24020671], [1516955280000, 0.015911, 0.01599, 0.0158834, 0.01595371, 60.26515213], [1516955340000, 0.01595371, 0.01597829, 0.01588362, 0.015892, 10.41613948], [1516955400000, 0.015894, 0.01598999, 0.015894, 0.01597829, 33.72311504], [1516955460000, 0.01597829, 0.016, 0.01590801, 0.01597529, 37.79801254], [1516955520000, 0.01599, 0.016, 0.01597529, 0.0159908, 12.86765776], [1516955580000, 0.0159908, 0.015997, 0.01592101, 0.0159878, 23.38319218], [1516955640000, 0.01592703, 0.016, 0.01591112, 0.015916, 102.17629364], [1516955700000, 0.01596992, 0.015997, 0.015916, 0.015995, 36.82736768], [1516955760000, 0.01599, 0.01599, 0.015916, 0.01598068, 13.99390527], [1516955820000, 0.015916, 0.01596703, 0.01591112, 0.01591112, 9.58613604], [1516955880000, 0.01591112, 0.01593999, 0.01590801, 0.01593999, 34.52901213], [1516955940000, 0.01590801, 0.01593467, 0.01577442, 0.01577585, 76.96526083], [1516956000000, 0.01582, 0.01597368, 0.01577888, 0.01578705, 65.54465832], [1516956060000, 0.01589396, 0.015917, 0.01582, 0.015897, 18.93985082], [1516956120000, 0.015897, 0.015917, 0.015823, 0.01582302, 24.84394876], [1516956180000, 0.015914, 0.015914, 0.01582, 0.015903, 39.26105065], [1516956240000, 0.01582, 0.015917, 0.01582, 0.015917, 69.67107996], [1516956300000, 0.01581, 0.01585849, 0.01581, 0.01581, 6.13226548], [1516956360000, 0.01581, 0.015855, 0.01578001, 0.01578001, 14.28968153], [1516956420000, 0.015852, 0.01585549, 0.01576, 0.01576, 52.07460737], [1516956480000, 0.01576003, 0.01585, 0.01575, 0.0157744, 98.2415852], [1516956540000, 0.0157744, 0.01585549, 0.015773, 0.01578041, 58.35141861], [1516956600000, 0.01578342, 0.01585849, 0.01578342, 0.01585849, 14.70590421], [1516956660000, 0.01585849, 0.01589999, 0.01578374, 0.01587136, 23.84521813], [1516956720000, 0.01580463, 0.01587136, 0.01580463, 0.01587136, 4.4292667], [1516956780000, 0.01587136, 0.01587136, 0.01582569, 0.015871, 1.11911929], [1516956840000, 0.015871, 0.0159, 0.015871, 0.0159, 184.89992421], [1516956900000, 0.01587544, 0.01595, 0.01587137, 0.01587137, 27.85861894], [1516956960000, 0.01587845, 0.015949, 0.01587845, 0.015949, 19.55531932], [1516957020000, 0.015949, 0.015949, 0.01590503, 0.015947, 3.29229861], [1516957080000, 0.01595, 0.01595, 0.01587137, 0.01587137, 20.92336024], [1516957140000, 0.01594968, 0.01595, 0.01587436, 0.01588037, 3.95392344], [1516957200000, 0.01587736, 0.01595, 0.01587736, 0.01595, 11.64897742], [1516957260000, 0.01595, 0.01595, 0.015925, 0.015925, 3.89054432], [1516957320000, 0.015925, 0.01595, 0.01576231, 0.01587191, 42.5591149], [1516957380000, 0.01587501, 0.01594969, 0.01587, 0.015946, 13.21067616], [1516957440000, 0.015943, 0.01595, 0.0158731, 0.01594669, 19.74922192], [1516957500000, 0.01595, 0.01595, 0.01594669, 0.01595, 115.74315201], [1516957560000, 0.01595, 0.01598, 0.01594669, 0.01598, 75.56964545], [1516957620000, 0.01598, 0.01598, 0.01588918, 0.01588918, 100.12667696], [1516957680000, 0.01598, 0.01598, 0.01587312, 0.015979, 15.03507111], [1516957740000, 0.015979, 0.01598368, 0.01589, 0.01598368, 34.92143747], [1516957800000, 0.01590717, 0.01598368, 0.01590717, 0.01591701, 27.60358272], [1516957860000, 0.015979, 0.01598368, 0.01591701, 0.01595, 19.74422413], [1516957920000, 0.01591702, 0.01595, 0.01591701, 0.01595, 47.32042881], [1516957980000, 0.01595, 0.01595, 0.01591701, 0.01591701, 5.95971983], [1516958040000, 0.01595, 0.01595, 0.01591701, 0.01595, 6.09273276], [1516958100000, 0.01595, 0.01595, 0.01583782, 0.01583782, 18.51115712], [1516958160000, 0.01583782, 0.0159356, 0.01583782, 0.0159356, 24.86221605], [1516958220000, 0.01593554, 0.0159356, 0.01584911, 0.0159356, 9.73275928], [1516958280000, 0.015941, 0.015941, 0.0158491, 0.01593799, 7.95807824], [1516958340000, 0.0159456, 0.0159466, 0.01584912, 0.0159356, 15.65954536], [1516958400000, 0.015854, 0.0159356, 0.015854, 0.0159356, 2.40417301], [1516958460000, 0.01593799, 0.01593799, 0.01584912, 0.01584912, 6.84913986], [1516958520000, 0.01586134, 0.0159356, 0.01586134, 0.0159356, 10.10201124], [1516958580000, 0.0159356, 0.01595, 0.0159356, 0.01595, 47.78578931], [1516958640000, 0.01597511, 0.01597511, 0.01595, 0.01597511, 8.65995075], [1516958700000, 0.01597511, 0.01597511, 0.01595, 0.0159751, 24.95418513], [1516958760000, 0.0159751, 0.01599, 0.01594962, 0.01595141, 74.99354697], [1516958820000, 0.01599, 0.01599, 0.01594963, 0.01595, 11.5797474], [1516958880000, 0.01599, 0.01599, 0.015987, 0.015987, 2.88591249], [1516958940000, 0.01595555, 0.015987, 0.01595, 0.015987, 17.70106646], [1516959000000, 0.015984, 0.015987, 0.01595, 0.01595, 3.32202342], [1516959060000, 0.015987, 0.01599, 0.01595, 0.01595, 1.14402941], [1516959120000, 0.01598, 0.01598, 0.01595, 0.01598, 14.98506662], [1516959180000, 0.01598, 0.01599, 0.01598, 0.01598999, 57.99485038], [1516959240000, 0.01598001, 0.016, 0.015953, 0.015953, 100.21789958], [1516959300000, 0.015953, 0.016, 0.015953, 0.01599999, 284.49228061], [1516959360000, 0.016, 0.016, 0.01595, 0.016, 25.73594693], [1516959420000, 0.015955, 0.016, 0.01595, 0.01599999, 5.60178458], [1516959480000, 0.01595341, 0.01599999, 0.01595041, 0.01599999, 27.13563879], [1516959540000, 0.01599999, 0.01599999, 0.01593707, 0.01598, 46.6285424], [1516959600000, 0.015928, 0.01599999, 0.015905, 0.01595, 52.48063841], [1516959660000, 0.01595002, 0.01599999, 0.01595002, 0.01595306, 48.01503185], [1516959720000, 0.01599, 0.016, 0.01599, 0.01599, 43.42673994], [1516959780000, 0.01600459, 0.01600459, 0.01600459, 0.01600459, 23.08344512], [1516959840000, 0.01600459, 0.01602, 0.01600459, 0.0160046, 121.16182637], [1516959900000, 0.01602, 0.0160211, 0.01600459, 0.0160211, 5.55061098], [1516959960000, 0.0160211, 0.0160211, 0.01600459, 0.01600459, 21.7831873], [1516960020000, 0.0160211, 0.016024, 0.01600459, 0.01600459, 9.88392727], [1516960080000, 0.01600459, 0.01602502, 0.01600459, 0.01602502, 23.3009846], [1516960140000, 0.01600459, 0.01602502, 0.01600459, 0.01600459, 33.75693042], [1516960200000, 0.01600501, 0.01600501, 0.01592912, 0.01600459, 33.71613768], [1516960260000, 0.01600459, 0.01602502, 0.01595117, 0.01596, 121.89764428], [1516960320000, 0.01595718, 0.01602202, 0.01595718, 0.015959, 8.90898437], [1516960380000, 0.015959, 0.015959, 0.01590503, 0.01591602, 82.9961228], [1516960440000, 0.0159344, 0.015959, 0.01591602, 0.01591603, 27.35170253], [1516960500000, 0.0159589, 0.015959, 0.0159174, 0.01591902, 18.73735279], [1516960560000, 0.015959, 0.015959, 0.0159174, 0.0159194, 5.77858192], [1516960620000, 0.015959, 0.015959, 0.01584912, 0.01587715, 65.4573027], [1516960680000, 0.015959, 0.015959, 0.01585, 0.01589021, 77.06484919], [1516960740000, 0.01595879, 0.015959, 0.01587721, 0.015959, 127.60763445], [1516960800000, 0.01589021, 0.016, 0.01588031, 0.016, 237.76817125], [1516960860000, 0.016, 0.016, 0.015913, 0.016, 55.96139474], [1516960920000, 0.016, 0.016, 0.015922, 0.015998, 29.19850979], [1516960980000, 0.015998, 0.01605, 0.01592401, 0.01597, 96.75135471], [1516961040000, 0.01597, 0.016, 0.01594003, 0.016, 16.81020406], [1516961100000, 0.01595747, 0.016, 0.01595747, 0.016, 4.52492446], [1516961160000, 0.016, 0.016, 0.01591801, 0.01595669, 13.26158568], [1516961220000, 0.01595668, 0.01597, 0.01592707, 0.01595669, 24.614987], [1516961280000, 0.01595669, 0.01599699, 0.01591803, 0.01591803, 11.84554107], [1516961340000, 0.01591803, 0.01599699, 0.01591803, 0.01599699, 12.89433717], [1516961400000, 0.01595669, 0.01599699, 0.01592104, 0.01599699, 45.50496285], [1516961460000, 0.01599696, 0.01599699, 0.01592115, 0.01599699, 40.8651906], [1516961520000, 0.01599699, 0.01599699, 0.01593027, 0.01599699, 23.82195613], [1516961580000, 0.01595442, 0.01599699, 0.01595441, 0.01599699, 109.84433082], [1516961640000, 0.01599699, 0.01599999, 0.01595442, 0.01599999, 145.68957391], [1516961700000, 0.01599699, 0.01599999, 0.01599699, 0.01599999, 22.36631231], [1516961760000, 0.01599998, 0.01599999, 0.01599998, 0.01599998, 31.86300971], [1516961820000, 0.01599998, 0.016, 0.01599998, 0.016, 43.27715322], [1516961880000, 0.016, 0.01601, 0.01599998, 0.01601, 46.27152714], [1516961940000, 0.01601, 0.01605, 0.01601, 0.01604699, 26.82801511], [1516962000000, 0.016047, 0.016047, 0.01599998, 0.016045, 43.07666262], [1516962060000, 0.016042, 0.016045, 0.016042, 0.016042, 9.43879004], [1516962120000, 0.016042, 0.01604496, 0.016042, 0.01604201, 5.3914175], [1516962180000, 0.01604201, 0.016045, 0.016042, 0.016045, 23.14122813], [1516962240000, 0.01604201, 0.016045, 0.016042, 0.016045, 6.57598566], [1516962300000, 0.01604201, 0.01605, 0.016042, 0.01605, 14.61345754], [1516962360000, 0.01604995, 0.01605, 0.016042, 0.016042, 33.42159238], [1516962420000, 0.01605, 0.01605, 0.016042, 0.016042, 22.21889786], [1516962480000, 0.016042, 0.01604695, 0.016042, 0.016042, 14.26634364], [1516962540000, 0.016042, 0.01605, 0.016042, 0.01604668, 17.7508596], [1516962600000, 0.016042, 0.016042, 0.016, 0.016, 42.85697233], [1516962660000, 0.01604168, 0.016042, 0.01604168, 0.01604199, 0.6331875], [1516962720000, 0.01602001, 0.01604199, 0.0159545, 0.01604199, 110.6262314], [1516962780000, 0.01597562, 0.01602001, 0.01597562, 0.01597562, 20.14867656], [1516962840000, 0.01597562, 0.01604166, 0.01597561, 0.01604166, 9.62464475], [1516962900000, 0.01603867, 0.01603867, 0.01597562, 0.01603835, 10.50409111], [1516962960000, 0.01603235, 0.01603835, 0.01603, 0.01603835, 8.69396707], [1516963020000, 0.01603835, 0.01603835, 0.01595442, 0.01603, 2.55806122], [1516963080000, 0.016029, 0.01603235, 0.016029, 0.01602935, 7.35896518], [1516963140000, 0.016029, 0.01605, 0.01595443, 0.01595443, 380.92494759], [1516963200000, 0.0159554, 0.01602899, 0.0159554, 0.01602899, 12.2838561], [1516963260000, 0.01602899, 0.016029, 0.015959, 0.016029, 58.27242564], [1516963320000, 0.015967, 0.01605, 0.015962, 0.016042, 2.40045514], [1516963380000, 0.016047, 0.016047, 0.015967, 0.016047, 19.93132961], [1516963440000, 0.016039, 0.01605, 0.015971, 0.016047, 36.05464079], [1516963500000, 0.01602, 0.016047, 0.01602, 0.016044, 1.7496569], [1516963560000, 0.016044, 0.016048, 0.016044, 0.016044, 41.27289649], [1516963620000, 0.016048, 0.01605, 0.016048, 0.01604996, 32.76218944], [1516963680000, 0.01604995, 0.01608654, 0.015975, 0.01606497, 167.43578808], [1516963740000, 0.01597501, 0.01606799, 0.015975, 0.015978, 43.21109432], [1516963800000, 0.015978, 0.016068, 0.015967, 0.01598001, 10.19045054], [1516963860000, 0.01598001, 0.01608655, 0.01598001, 0.0160389, 60.00431802], [1516963920000, 0.01599205, 0.01609099, 0.01599002, 0.01599002, 53.34229208], [1516963980000, 0.01609068, 0.01609068, 0.01599303, 0.01607809, 17.05246924], [1516964040000, 0.01604012, 0.01604612, 0.01604012, 0.01604612, 10.58692387], [1516964100000, 0.01604912, 0.016091, 0.01604012, 0.01608608, 16.52433232], [1516964160000, 0.01608608, 0.016087, 0.01600004, 0.01600004, 52.2092821], [1516964220000, 0.01608571, 0.01609, 0.01600605, 0.01604, 27.63088243], [1516964280000, 0.016035, 0.016091, 0.01602709, 0.01608239, 74.91684842], [1516964340000, 0.01608239, 0.01608239, 0.01602409, 0.01608239, 45.14168818], [1516964400000, 0.01602409, 0.01608239, 0.01602409, 0.01608239, 86.55266043], [1516964460000, 0.016082, 0.016082, 0.01607939, 0.0160794, 0.71967131], [1516964520000, 0.01607939, 0.01608239, 0.01602409, 0.01602409, 24.06597727], [1516964580000, 0.01602409, 0.01607078, 0.01602409, 0.01602409, 5.58528606], [1516964640000, 0.01602409, 0.01608238, 0.01599002, 0.01607238, 39.42368714], [1516964700000, 0.01607238, 0.01607238, 0.01607, 0.01607238, 15.9804958], [1516964760000, 0.01607, 0.01607238, 0.01601463, 0.01607206, 75.12582301], [1516964820000, 0.01607206, 0.01607206, 0.01603441, 0.01607174, 8.02702745], [1516964880000, 0.01603, 0.01608138, 0.01602541, 0.01608138, 7.53675501], [1516964940000, 0.01608138, 0.01608138, 0.0160739, 0.016081, 20.3942346], [1516965000000, 0.016081, 0.01608138, 0.0160739, 0.01608138, 6.36836907], [1516965060000, 0.01608138, 0.01608238, 0.0160739, 0.0160739, 26.14002102], [1516965120000, 0.016081, 0.01608238, 0.01602841, 0.01602841, 4.80975237], [1516965180000, 0.0160739, 0.01608238, 0.01602843, 0.01608238, 16.9866366], [1516965240000, 0.01608238, 0.016091, 0.01603445, 0.01608, 33.68483314], [1516965300000, 0.016091, 0.01609468, 0.01608, 0.01608, 19.15241032], [1516965360000, 0.01609468, 0.01609468, 0.01608, 0.01609468, 8.74317229], [1516965420000, 0.01609468, 0.01609468, 0.01608, 0.01609468, 17.68574687], [1516965480000, 0.01609468, 0.01609468, 0.01603001, 0.01603001, 21.75879249], [1516965540000, 0.01609468, 0.01609469, 0.01603003, 0.01608, 49.85451273], [1516965600000, 0.01608, 0.01609469, 0.0160361, 0.01609469, 46.684097], [1516965660000, 0.01609469, 0.01613333, 0.01609469, 0.01613333, 59.94229335], [1516965720000, 0.0161, 0.0161, 0.01605765, 0.0161, 26.85882369], [1516965780000, 0.0161, 0.0161, 0.01603002, 0.0161, 68.42276062], [1516965840000, 0.01609999, 0.0161, 0.01601941, 0.0161, 57.95888526], [1516965900000, 0.01604644, 0.01609999, 0.01602247, 0.01609999, 5.32663443], [1516965960000, 0.01604742, 0.01604742, 0.01597706, 0.01604345, 32.23108008], [1516966020000, 0.01601011, 0.01604345, 0.01601011, 0.01603401, 59.44618539], [1516966080000, 0.01604345, 0.01609998, 0.01604306, 0.01609998, 9.57109319], [1516966140000, 0.01609998, 0.0161, 0.01604607, 0.01609, 39.18103107], [1516966200000, 0.01604646, 0.01609, 0.01602303, 0.0160899, 159.71501288], [1516966260000, 0.01603401, 0.0160899, 0.01602125, 0.0160899, 183.16671862], [1516966320000, 0.01602727, 0.01608989, 0.01602727, 0.016043, 11.92281891], [1516966380000, 0.016043, 0.0160899, 0.01603801, 0.016043, 10.99158918], [1516966440000, 0.01602426, 0.0160899, 0.01602426, 0.01608989, 9.53496655], [1516966500000, 0.01608989, 0.0161, 0.01608989, 0.01609, 67.6159648], [1516966560000, 0.0161, 0.0161, 0.01604327, 0.01609068, 14.99372398], [1516966620000, 0.01608768, 0.016097, 0.01602425, 0.01606158, 6.03203562], [1516966680000, 0.01602425, 0.01605858, 0.01602425, 0.0160243, 1.26023857], [1516966740000, 0.0160243, 0.01605556, 0.0160243, 0.01605556, 61.15622345], [1516966800000, 0.0160243, 0.01605556, 0.016, 0.01605556, 61.43266468], [1516966860000, 0.016, 0.01605556, 0.01597707, 0.016, 90.66969631], [1516966920000, 0.01597707, 0.01606158, 0.01597707, 0.01606158, 8.33119221], [1516966980000, 0.01606158, 0.01606158, 0.01601817, 0.01606158, 43.87978823], [1516967040000, 0.01606158, 0.01606158, 0.01599001, 0.01606158, 11.54442392], [1516967100000, 0.01606158, 0.0161, 0.01599603, 0.01609999, 24.63596285], [1516967160000, 0.016097, 0.0161, 0.01606004, 0.01606004, 8.20786672], [1516967220000, 0.01608868, 0.016096, 0.01600406, 0.01600429, 5.7047494], [1516967280000, 0.01608409, 0.01609966, 0.01601563, 0.01601834, 1.34206867], [1516967340000, 0.01609966, 0.01609966, 0.01601441, 0.01601441, 40.68215393], [1516967400000, 0.01601444, 0.01609665, 0.01601444, 0.01609665, 10.52155797], [1516967460000, 0.01601061, 0.01609366, 0.01601061, 0.01609366, 29.73792923], [1516967520000, 0.01609366, 0.01609666, 0.01609366, 0.01609665, 6.82824599], [1516967580000, 0.01609633, 0.01609665, 0.01609633, 0.01609633, 2.54030203], [1516967640000, 0.01609665, 0.01609665, 0.01603745, 0.01609665, 42.89849469], [1516967700000, 0.0160967, 0.01609965, 0.01604205, 0.01609965, 12.61262857], [1516967760000, 0.01609964, 0.01609965, 0.0160133, 0.0160133, 4.2631485], [1516967820000, 0.01602301, 0.01604938, 0.01602301, 0.01604938, 34.2268684], [1516967880000, 0.01604938, 0.01604938, 0.01602565, 0.01604938, 23.98099492], [1516967940000, 0.01609964, 0.01609965, 0.01609964, 0.01609964, 5.75431055], [1516968000000, 0.01609964, 0.01609964, 0.01609964, 0.01609964, 4.23214296], [1516968060000, 0.01609964, 0.0161, 0.01604464, 0.01604464, 15.15319807], [1516968120000, 0.01604464, 0.0161, 0.01603566, 0.01604465, 68.18479056], [1516968180000, 0.0161, 0.01613665, 0.01604465, 0.01611663, 30.12085947], [1516968240000, 0.01604465, 0.01604465, 0.01604465, 0.01604465, 1.9326927], [1516968300000, 0.01604465, 0.0160464, 0.01604465, 0.0160464, 5.3763748], [1516968360000, 0.01604465, 0.01611, 0.01602866, 0.01602866, 11.90081506], [1516968420000, 0.016034, 0.016039, 0.01602871, 0.016039, 1.9900938], [1516968480000, 0.016105, 0.016105, 0.01602868, 0.01603141, 3.66015103], [1516968540000, 0.01603141, 0.016112, 0.01603141, 0.01611168, 26.3149381], [1516968600000, 0.01611168, 0.016112, 0.01604601, 0.01604601, 1.98096723], [1516968660000, 0.01605502, 0.016112, 0.016033, 0.016112, 3.81550935], [1516968720000, 0.01611167, 0.016112, 0.01603741, 0.01603741, 16.50133168], [1516968780000, 0.01611135, 0.01611167, 0.016035, 0.01611167, 3.81011281], [1516968840000, 0.01611165, 0.01611165, 0.0160394, 0.01611165, 1.93337911], [1516968900000, 0.01611165, 0.01611166, 0.01603502, 0.01611166, 5.83756245], [1516968960000, 0.01611166, 0.01611166, 0.01605842, 0.01605842, 4.90578586], [1516969020000, 0.01611135, 0.01611135, 0.01606441, 0.01606441, 70.64901077], [1516969080000, 0.01606441, 0.01606441, 0.01603742, 0.01606441, 36.97534761], [1516969140000, 0.01611132, 0.01611132, 0.01604444, 0.01604444, 4.89097794], [1516969200000, 0.01606441, 0.0161055, 0.01606441, 0.01606441, 9.39516715], [1516969260000, 0.01606441, 0.01606441, 0.01603441, 0.01604444, 10.83023498], [1516969320000, 0.01604444, 0.01604444, 0.01603442, 0.01604444, 157.19229048], [1516969380000, 0.01606441, 0.01607583, 0.01603441, 0.0160758, 24.35517173], [1516969440000, 0.0160758, 0.01607583, 0.0160758, 0.01607583, 12.0708828], [1516969500000, 0.0160758, 0.01607583, 0.01604469, 0.01607583, 111.87879021], [1516969560000, 0.01607583, 0.0161, 0.01607583, 0.01607583, 19.85025405], [1516969620000, 0.01607583, 0.0161, 0.01604471, 0.01607582, 1.48675835], [1516969680000, 0.01607582, 0.01607584, 0.01604585, 0.01607584, 9.76007955], [1516969740000, 0.01607584, 0.0161, 0.01607584, 0.01607585, 2.55217295], [1516969800000, 0.01607585, 0.01607585, 0.01607584, 0.01607584, 19.30217503], [1516969860000, 0.01607584, 0.01609572, 0.01607584, 0.01607584, 35.82355281], [1516969920000, 0.01604706, 0.01607584, 0.01603004, 0.01603004, 28.67519751], [1516969980000, 0.01603271, 0.01608, 0.016005, 0.01607968, 30.08356295], [1516970040000, 0.016076, 0.01608, 0.01601042, 0.01608, 7.41371066], [1516970100000, 0.01601701, 0.01608, 0.016015, 0.016077, 49.13171913], [1516970160000, 0.016077, 0.01608, 0.01607, 0.01607, 15.34440839], [1516970220000, 0.01608, 0.01608, 0.01604003, 0.01604003, 34.10598772], [1516970280000, 0.01608, 0.01609967, 0.01604003, 0.01604303, 5.01988441], [1516970340000, 0.01604304, 0.0161, 0.01604304, 0.0161, 10.30093652], [1516970400000, 0.0161, 0.0161, 0.0161, 0.0161, 3.13464366], [1516970460000, 0.0161, 0.0161, 0.01604003, 0.01604003, 8.58238763], [1516970520000, 0.01604003, 0.016098, 0.01601007, 0.01601007, 13.67901672], [1516970580000, 0.01604003, 0.0161, 0.01600501, 0.01601103, 20.11688419], [1516970640000, 0.01601704, 0.0161, 0.01601704, 0.0161, 13.66067375], [1516970700000, 0.01609968, 0.0161, 0.01602801, 0.0161, 6.29546893], [1516970760000, 0.0161, 0.0161, 0.01602705, 0.0160945, 17.65296231], [1516970820000, 0.0160945, 0.0161, 0.0160945, 0.0161, 27.5812763], [1516970880000, 0.01609999, 0.01609999, 0.01603602, 0.01603602, 7.96833555], [1516970940000, 0.01604806, 0.01604806, 0.01604806, 0.01604806, 1.97831582], [1516971000000, 0.01603902, 0.0161, 0.01603902, 0.01605408, 16.28109181], [1516971060000, 0.01609999, 0.0161, 0.0160601, 0.0161, 34.20592995], [1516971120000, 0.0161, 0.0161, 0.01603602, 0.0161, 10.15004683], [1516971180000, 0.0161, 0.0161, 0.01607616, 0.01607616, 46.11819972], [1516971240000, 0.01607616, 0.0161, 0.01607616, 0.01607616, 59.25318802], [1516971300000, 0.01609999, 0.0161, 0.01607616, 0.0161, 61.28045078], [1516971360000, 0.01609, 0.0161, 0.01608888, 0.01609, 41.12066027], [1516971420000, 0.01608888, 0.0161, 0.01608888, 0.01609999, 31.43566138], [1516971480000, 0.01609999, 0.01609999, 0.01608888, 0.01609999, 18.16040279], [1516971540000, 0.01609999, 0.0161, 0.01608888, 0.0161, 44.7902525], [1516971600000, 0.0161, 0.0161, 0.01608888, 0.0161, 35.4032456], [1516971660000, 0.0161, 0.01611999, 0.01608888, 0.01611167, 52.85594526], [1516971720000, 0.01610551, 0.01611, 0.01608888, 0.01608888, 10.88143435], [1516971780000, 0.01608898, 0.01611967, 0.01608888, 0.01608888, 9.34746642], [1516971840000, 0.01608888, 0.01608888, 0.01608888, 0.01608888, 9.74406433], [1516971900000, 0.01609548, 0.01611999, 0.01603001, 0.01611135, 30.8538513], [1516971960000, 0.01611135, 0.01611967, 0.01600503, 0.01601001, 22.03881102], [1516972020000, 0.01601308, 0.0161, 0.01601308, 0.01602981, 6.55372065], [1516972080000, 0.01603604, 0.01608, 0.01603302, 0.01603302, 36.41544743], [1516972140000, 0.01603302, 0.01605555, 0.01603302, 0.01603902, 98.98635227], [1516972200000, 0.01604204, 0.01609997, 0.01604204, 0.01604811, 5.83331169], [1516972260000, 0.01604512, 0.01609995, 0.01604512, 0.01605442, 5.39263196], [1516972320000, 0.01609993, 0.01609993, 0.01605442, 0.0160584, 10.21149154], [1516972380000, 0.01604814, 0.0160999, 0.01604814, 0.01609987, 95.42375648], [1516972440000, 0.01605131, 0.01609987, 0.01604816, 0.01609987, 31.15641423], [1516972500000, 0.01609987, 0.01609987, 0.0160482, 0.01609982, 9.87064364], [1516972560000, 0.01605418, 0.01609982, 0.01605418, 0.01605741, 19.47246352], [1516972620000, 0.01605718, 0.01609979, 0.01605718, 0.01609979, 24.72169384], [1516972680000, 0.01609947, 0.01609979, 0.01604814, 0.01604814, 38.81545821], [1516972740000, 0.0160494, 0.01609979, 0.01603002, 0.01604441, 89.6091389], [1516972800000, 0.016075, 0.01609987, 0.01604442, 0.01604744, 56.50345231], [1516972860000, 0.01609987, 0.01609987, 0.01604442, 0.01609987, 12.83626537], [1516972920000, 0.01609987, 0.01609987, 0.01605646, 0.01609987, 8.90855235], [1516972980000, 0.0160987, 0.0161, 0.0160987, 0.0160999, 28.44880159], [1516973040000, 0.0161, 0.0161, 0.0160999, 0.0161, 7.24417627], [1516973100000, 0.0161, 0.0161, 0.01605045, 0.0161, 69.76780835], [1516973160000, 0.01605947, 0.0161415, 0.01605647, 0.01611999, 281.77653055], [1516973220000, 0.01611999, 0.0161415, 0.01611999, 0.0161415, 61.98879394], [1516973280000, 0.0161415, 0.0161415, 0.01611999, 0.0161415, 25.96934687], [1516973340000, 0.01611999, 0.0161415, 0.01611999, 0.01612999, 24.07222716], [1516973400000, 0.01612999, 0.0161415, 0.01612999, 0.016141, 30.27466423], [1516973460000, 0.0161415, 0.0161415, 0.01611999, 0.016133, 27.47125584], [1516973520000, 0.016133, 0.016145, 0.01613, 0.016145, 50.32037454], [1516973580000, 0.016145, 0.01614788, 0.016145, 0.01614788, 8.64424147], [1516973640000, 0.016145, 0.0161498, 0.01613, 0.01613, 18.61177491], [1516973700000, 0.01613, 0.01614999, 0.01613, 0.0161499, 5.68433959], [1516973760000, 0.01614987, 0.0161499, 0.01611999, 0.01611999, 19.47975498], [1516973820000, 0.01614643, 0.01614999, 0.01614643, 0.01614999, 69.56257376], [1516973880000, 0.01614999, 0.01614999, 0.016066, 0.01611999, 20.06894502], [1516973940000, 0.01611999, 0.01614999, 0.01609601, 0.01611911, 196.19917357], [1516974000000, 0.01614999, 0.01616666, 0.01614999, 0.01616, 105.89581739], [1516974060000, 0.01614999, 0.01616, 0.01609641, 0.01609641, 18.92608965], [1516974120000, 0.01614999, 0.01614999, 0.01606626, 0.01607402, 6.44372075], [1516974180000, 0.01612, 0.01614355, 0.01607403, 0.01607403, 16.30992681], [1516974240000, 0.01614054, 0.01614054, 0.01607404, 0.01607941, 11.01072905], [1516974300000, 0.01613754, 0.01614966, 0.01607941, 0.01614966, 13.94162357], [1516974360000, 0.01613754, 0.01614998, 0.01607705, 0.01607705, 18.79203094], [1516974420000, 0.01613754, 0.01613754, 0.01607404, 0.01607404, 5.88224364], [1516974480000, 0.01607404, 0.01613188, 0.01607404, 0.01607404, 19.94934003], [1516974540000, 0.016137, 0.016137, 0.016137, 0.016137, 6.58991212], [1516974600000, 0.01613701, 0.01613753, 0.016137, 0.016137, 6.20250959], [1516974660000, 0.016137, 0.0161371, 0.01611773, 0.01611773, 15.61969194], [1516974720000, 0.016137, 0.016137, 0.01606104, 0.01607402, 16.93018617], [1516974780000, 0.01607402, 0.01612, 0.01607402, 0.01612, 6.13757899], [1516974840000, 0.01612, 0.01612, 0.01607702, 0.01608003, 7.38644504], [1516974900000, 0.01609656, 0.0161, 0.0160794, 0.0161, 10.86540918], [1516974960000, 0.0161, 0.01612, 0.01607702, 0.01611899, 9.22034758], [1516975020000, 0.01611099, 0.01611099, 0.01608501, 0.01611, 31.55331708], [1516975080000, 0.016105, 0.01611099, 0.01608541, 0.01611099, 44.451103], [1516975140000, 0.01611099, 0.01611899, 0.01611099, 0.016111, 13.68048078], [1516975200000, 0.016111, 0.01614998, 0.01611099, 0.01614966, 6.59816661], [1516975260000, 0.01614966, 0.01614998, 0.0161, 0.0161, 12.75978956], [1516975320000, 0.01614998, 0.01614998, 0.0161, 0.01614995, 36.67242696], [1516975380000, 0.01610001, 0.01614998, 0.01610001, 0.01614995, 33.1016033], [1516975440000, 0.01611101, 0.01614998, 0.01610303, 0.01614998, 6.18111029], [1516975500000, 0.01614998, 0.01614998, 0.01614997, 0.01614998, 14.7645216], [1516975560000, 0.01614998, 0.01614998, 0.0161, 0.01614998, 12.77332944], [1516975620000, 0.01614997, 0.01614997, 0.0161034, 0.01610351, 0.95905155], [1516975680000, 0.01613997, 0.01613997, 0.01610342, 0.01610342, 17.64696481], [1516975740000, 0.01613996, 0.01613996, 0.0161, 0.0161, 28.29409782], [1516975800000, 0.0161, 0.01613997, 0.0161, 0.0161, 33.83818812], [1516975860000, 0.0161, 0.0161, 0.01607026, 0.0161, 15.3178037], [1516975920000, 0.01613997, 0.01613997, 0.01607014, 0.01613996, 43.20445517], [1516975980000, 0.01613996, 0.01613996, 0.01607314, 0.01607615, 10.92291205], [1516976040000, 0.01613964, 0.01613964, 0.01606708, 0.01608, 8.31592078], [1516976100000, 0.0160684, 0.01613, 0.01606708, 0.01608, 27.92572426], [1516976160000, 0.01608, 0.01613, 0.01608, 0.01612, 3.06213801], [1516976220000, 0.01608, 0.01612, 0.01604601, 0.01612, 28.59591151], [1516976280000, 0.01605504, 0.01612, 0.01605504, 0.01612, 2.37647835], [1516976340000, 0.01612, 0.01613, 0.01612, 0.01612, 4.34506492], [1516976400000, 0.01612, 0.01612, 0.01606841, 0.01606841, 14.15841649], [1516976460000, 0.01606865, 0.01612, 0.01606865, 0.01607466, 14.71016975], [1516976520000, 0.01607467, 0.01613, 0.01607467, 0.01612, 7.22177263], [1516976580000, 0.01613, 0.01613, 0.0160777, 0.01608069, 1.55330115], [1516976640000, 0.01608069, 0.01612, 0.01608069, 0.01612, 3.69720194], [1516976700000, 0.01612, 0.01612, 0.01607769, 0.01607769, 4.11635495], [1516976760000, 0.01608069, 0.01612, 0.01608069, 0.01611, 2.77421056], [1516976820000, 0.01611, 0.01611, 0.01607769, 0.01610968, 3.83349886], [1516976880000, 0.01611, 0.01611, 0.01610968, 0.01610968, 1.93986643], [1516976940000, 0.0160777, 0.0161075, 0.01607769, 0.01607769, 16.55332533], [1516977000000, 0.01607769, 0.01610968, 0.01607769, 0.01610968, 14.62617774], [1516977060000, 0.0160777, 0.0161, 0.01607466, 0.01607466, 9.77540264], [1516977120000, 0.0160777, 0.01610968, 0.01606875, 0.01607466, 11.22463678], [1516977180000, 0.01607466, 0.01607466, 0.01606875, 0.01606875, 4.51513286], [1516977240000, 0.01607466, 0.01607466, 0.01606875, 0.01607466, 22.11329639], [1516977300000, 0.01606875, 0.0161, 0.01606875, 0.01606875, 22.1561063], [1516977360000, 0.01607466, 0.01609073, 0.01607466, 0.01607466, 3.90810851], [1516977420000, 0.01609073, 0.01609073, 0.01606875, 0.01606875, 3.93713559], [1516977480000, 0.01609073, 0.01609073, 0.01606875, 0.01606875, 6.00040953], [1516977540000, 0.01606875, 0.01609073, 0.01606875, 0.01606875, 19.7978088], [1516977600000, 0.01606875, 0.01606875, 0.01606875, 0.01606875, 28.36615779], [1516977660000, 0.01606875, 0.01606875, 0.01606875, 0.01606875, 0.47893779], [1516977720000, 0.0160906, 0.0160906, 0.01606875, 0.0160906, 12.74650429], [1516977780000, 0.0160906, 0.01609073, 0.01609, 0.0160906, 7.99573343], [1516977840000, 0.01609073, 0.01609073, 0.0160906, 0.0160906, 5.33243802], [1516977900000, 0.0160906, 0.01609072, 0.01606875, 0.0160907, 16.56419556], [1516977960000, 0.0160907, 0.01609073, 0.01606875, 0.01606875, 9.59667802], [1516978020000, 0.0160907, 0.01609073, 0.01606875, 0.01606875, 10.63258333], [1516978080000, 0.01609072, 0.01609999, 0.01606991, 0.01606992, 8.00673402], [1516978140000, 0.01609997, 0.01609999, 0.01606992, 0.01609997, 8.55840398], [1516978200000, 0.01609997, 0.01609999, 0.01606875, 0.01609999, 16.82265117], [1516978260000, 0.01609073, 0.01609073, 0.01606875, 0.01609073, 26.14001117], [1516978320000, 0.01609073, 0.01609999, 0.01606876, 0.01609071, 16.19354478], [1516978380000, 0.01609071, 0.01609071, 0.01606875, 0.01606875, 1.36806322], [1516978440000, 0.0160906, 0.01609999, 0.01606875, 0.01609999, 49.57928861], [1516978500000, 0.01609999, 0.01609999, 0.01606875, 0.01609999, 34.10885204], [1516978560000, 0.01609999, 0.01609999, 0.01609999, 0.01609999, 35.9129218], [1516978620000, 0.01609999, 0.01609999, 0.01608, 0.01608, 50.66270271], [1516978680000, 0.01608, 0.0161, 0.01607441, 0.0161, 38.90759185], [1516978740000, 0.0161, 0.0161, 0.016075, 0.01608, 7.46540315], [1516978800000, 0.01608, 0.01611, 0.0160714, 0.01611, 22.78524467], [1516978860000, 0.01608404, 0.016174, 0.01606875, 0.016174, 76.43519812], [1516978920000, 0.01607175, 0.016174, 0.01603, 0.01607176, 85.19158743], [1516978980000, 0.01616364, 0.016174, 0.01607175, 0.01607175, 38.00127437], [1516979040000, 0.01607175, 0.01616691, 0.01605511, 0.01615785, 9.82391], [1516979100000, 0.01605824, 0.01616388, 0.01605821, 0.01616087, 3.16927164], [1516979160000, 0.01616297, 0.01616391, 0.01615787, 0.01615787, 95.21003387], [1516979220000, 0.01616391, 0.01616391, 0.01615787, 0.01615787, 25.80947032], [1516979280000, 0.01615787, 0.01616091, 0.01615787, 0.01615787, 93.28955488], [1516979340000, 0.01615787, 0.01615788, 0.01615787, 0.01615787, 40.22177563], [1516979400000, 0.01615787, 0.01615787, 0.01605001, 0.01605302, 91.09502068], [1516979460000, 0.01607572, 0.01611602, 0.01605604, 0.01607572, 7.15587026], [1516979520000, 0.01611602, 0.01611602, 0.01603, 0.01603157, 28.95267524], [1516979580000, 0.01603157, 0.016148, 0.0160268, 0.01605, 29.04895287], [1516979640000, 0.01605, 0.01612999, 0.016021, 0.016021, 59.6319361], [1516979700000, 0.016046, 0.016047, 0.016021, 0.016047, 13.93061465], [1516979760000, 0.016047, 0.016047, 0.016021, 0.016021, 39.6051135], [1516979820000, 0.016021, 0.01604401, 0.016021, 0.016021, 34.27399053], [1516979880000, 0.016021, 0.01604401, 0.016021, 0.01604, 26.78261878], [1516979940000, 0.01604101, 0.01605605, 0.016022, 0.01604479, 28.90924035], [1516980000000, 0.01609699, 0.01609699, 0.016021, 0.016021, 10.15202435], [1516980060000, 0.01608199, 0.01608199, 0.016021, 0.016021, 10.16963904], [1516980120000, 0.016021, 0.01606, 0.016021, 0.01605999, 11.91441942], [1516980180000, 0.01606, 0.01606, 0.016021, 0.01602101, 8.83002533], [1516980240000, 0.01605096, 0.01605096, 0.016021, 0.016021, 0.78615844], [1516980300000, 0.01605096, 0.01605096, 0.016021, 0.01605, 26.68219813], [1516980360000, 0.016021, 0.01605097, 0.016021, 0.01604997, 18.26310099], [1516980420000, 0.01604997, 0.016059, 0.0160234, 0.016059, 20.9468568], [1516980480000, 0.01602423, 0.016059, 0.01602423, 0.016059, 9.52552715], [1516980540000, 0.01605899, 0.01605899, 0.0160234, 0.0160274, 19.42507853], [1516980600000, 0.0160274, 0.01605898, 0.0160274, 0.01605898, 19.42545392], [1516980660000, 0.01603041, 0.016059, 0.01602501, 0.016059, 32.98058144], [1516980720000, 0.016059, 0.016059, 0.01603001, 0.016059, 18.64467159], [1516980780000, 0.016058, 0.01608199, 0.01602675, 0.01602675, 44.65654202], [1516980840000, 0.01602676, 0.01608199, 0.01602676, 0.01608199, 11.29149477], [1516980900000, 0.01608199, 0.01608199, 0.01603, 0.01603, 11.07933734], [1516980960000, 0.01608199, 0.01608199, 0.01603, 0.016031, 19.91137186], [1516981020000, 0.016031, 0.01608167, 0.016031, 0.01608167, 14.93900438], [1516981080000, 0.01608167, 0.016085, 0.01608167, 0.016085, 35.35212212], [1516981140000, 0.01613764, 0.01613764, 0.01603, 0.01603906, 50.36480453], [1516981200000, 0.01613699, 0.01613699, 0.01602341, 0.01604999, 49.71750264], [1516981260000, 0.01604999, 0.01612399, 0.01604999, 0.01604999, 12.81490134], [1516981320000, 0.01604999, 0.016114, 0.0160234, 0.01611098, 6.25736426], [1516981380000, 0.01610798, 0.01610798, 0.0160234, 0.0160234, 48.87514706], [1516981440000, 0.0160234, 0.01602942, 0.0160234, 0.016024, 9.09578738], [1516981500000, 0.01602942, 0.01602942, 0.016021, 0.0160234, 54.57471371], [1516981560000, 0.0160234, 0.01608773, 0.0160234, 0.01602342, 11.60349786], [1516981620000, 0.01602342, 0.01610797, 0.01602342, 0.01610698, 24.26401386], [1516981680000, 0.01611066, 0.01611066, 0.01602941, 0.01610696, 31.13115405], [1516981740000, 0.01603241, 0.01603321, 0.01602941, 0.01602941, 17.5752851], [1516981800000, 0.01602941, 0.01603321, 0.01602941, 0.01603321, 15.91375314], [1516981860000, 0.0161, 0.0161, 0.016021, 0.016021, 83.34297332], [1516981920000, 0.016021, 0.01603243, 0.015972, 0.016021, 106.57055561], [1516981980000, 0.016021, 0.016021, 0.015967, 0.015967, 14.43776585], [1516982040000, 0.016, 0.016, 0.01595442, 0.016, 34.15099537], [1516982100000, 0.016, 0.016, 0.015963, 0.015963, 5.07558457], [1516982160000, 0.01596305, 0.016, 0.015963, 0.016, 25.90936712], [1516982220000, 0.016, 0.016, 0.01596541, 0.015973, 57.41371898], [1516982280000, 0.015973, 0.016089, 0.01596542, 0.015973, 88.05960499], [1516982340000, 0.0160838, 0.0160838, 0.01596802, 0.01596804, 2.40500259], [1516982400000, 0.016, 0.016, 0.0159559, 0.0159559, 20.57506881], [1516982460000, 0.0159559, 0.01596808, 0.01594267, 0.01594267, 118.92413358], [1516982520000, 0.01594267, 0.01595443, 0.01589, 0.01592, 82.53947252], [1516982580000, 0.01592, 0.01595558, 0.01586001, 0.0158634, 76.80916861], [1516982640000, 0.01595558, 0.0159559, 0.01595558, 0.01595558, 12.88943264], [1516982700000, 0.01592001, 0.01602999, 0.01592001, 0.0159559, 8.08139637], [1516982760000, 0.0159559, 0.01602826, 0.0159559, 0.0159559, 13.58780224], [1516982820000, 0.01595591, 0.016015, 0.01592001, 0.01595558, 61.30836984], [1516982880000, 0.0159551, 0.0159551, 0.01595509, 0.01595509, 2.41287253], [1516982940000, 0.01595509, 0.0159551, 0.015925, 0.01595478, 11.77410225], [1516983000000, 0.0159549, 0.0159549, 0.01592009, 0.015954, 21.05974347], [1516983060000, 0.015925, 0.015954, 0.01592001, 0.015932, 64.06149378], [1516983120000, 0.015954, 0.015954, 0.015932, 0.015954, 19.48528818], [1516983180000, 0.015954, 0.01595509, 0.015954, 0.01595509, 24.61374176], [1516983240000, 0.0159549, 0.016, 0.01595485, 0.01595485, 7.63491528], [1516983300000, 0.01595485, 0.016, 0.01595485, 0.016, 23.02361227], [1516983360000, 0.016, 0.01602597, 0.016, 0.016, 60.53083165], [1516983420000, 0.016, 0.016, 0.01595485, 0.01595485, 34.21207238], [1516983480000, 0.016, 0.016, 0.01595485, 0.01595485, 43.855957], [1516983540000, 0.016, 0.016, 0.01595485, 0.01595555, 45.57999026], [1516983600000, 0.01595555, 0.016, 0.01595555, 0.016, 6.43194237], [1516983660000, 0.016, 0.016, 0.01596, 0.016, 23.04551004], [1516983720000, 0.016, 0.016, 0.01596001, 0.016, 12.6838281], [1516983780000, 0.016, 0.016, 0.01596001, 0.01596001, 75.79532439], [1516983840000, 0.01596145, 0.016, 0.01596001, 0.016, 29.01784386], [1516983900000, 0.01596081, 0.016, 0.01596081, 0.01599, 7.68056918], [1516983960000, 0.016, 0.016, 0.01599, 0.016, 4.80734681], [1516984020000, 0.016, 0.016, 0.0159901, 0.01599999, 9.4872243], [1516984080000, 0.01599998, 0.016, 0.01599998, 0.016, 18.17558401], [1516984140000, 0.016, 0.016, 0.015932, 0.015932, 101.9728707], [1516984200000, 0.01599, 0.01603496, 0.01594201, 0.01603198, 26.40322127], [1516984260000, 0.01602866, 0.01602866, 0.01594201, 0.015968, 52.86817542], [1516984320000, 0.01602866, 0.01602866, 0.01595781, 0.015968, 24.22111138], [1516984380000, 0.015968, 0.01602834, 0.015968, 0.01602802, 6.57633615], [1516984440000, 0.01602834, 0.01602834, 0.016, 0.01602802, 0.82947048], [1516984500000, 0.0160277, 0.01602834, 0.0160277, 0.01602802, 2.25909522], [1516984560000, 0.01602802, 0.01602802, 0.016028, 0.016028, 6.02500236], [1516984620000, 0.016028, 0.01602834, 0.016, 0.01602834, 10.20564684], [1516984680000, 0.01602802, 0.01602803, 0.01602802, 0.01602803, 9.23158158], [1516984740000, 0.01602803, 0.01602803, 0.016, 0.016, 2.931477], [1516984800000, 0.016005, 0.016005, 0.016, 0.016005, 60.98247589], [1516984860000, 0.0160277, 0.0160277, 0.016, 0.016, 58.24882802], [1516984920000, 0.016, 0.01600001, 0.016, 0.01600001, 14.42566745], [1516984980000, 0.01602133, 0.01602133, 0.01600001, 0.01600001, 7.80848429], [1516985040000, 0.016018, 0.01601837, 0.016, 0.016, 24.64846775], [1516985100000, 0.01601, 0.01601, 0.016, 0.016, 11.22180331], [1516985160000, 0.016, 0.0160277, 0.016, 0.01601, 6.34977125], [1516985220000, 0.0160247, 0.0160247, 0.01601, 0.01601499, 6.88316239], [1516985280000, 0.01601499, 0.016024, 0.01601499, 0.01601499, 5.40577758], [1516985340000, 0.01601768, 0.01602068, 0.016013, 0.016013, 14.01498088], [1516985400000, 0.016013, 0.016013, 0.015932, 0.015986, 50.84195192], [1516985460000, 0.015986, 0.015986, 0.015985, 0.015985, 9.75292501], [1516985520000, 0.015985, 0.01598599, 0.015985, 0.015985, 22.83036697], [1516985580000, 0.015985, 0.01598599, 0.015935, 0.015985, 14.65343323], [1516985640000, 0.015984, 0.015985, 0.015984, 0.015985, 6.99657212], [1516985700000, 0.015985, 0.015985, 0.0159354, 0.015985, 41.67940162], [1516985760000, 0.015985, 0.01598599, 0.015985, 0.015985, 54.42093816], [1516985820000, 0.01598599, 0.01598599, 0.015985, 0.015985, 57.10409611], [1516985880000, 0.01598598, 0.01598598, 0.015985, 0.01598598, 5.6920088], [1516985940000, 0.015985, 0.015986, 0.015985, 0.015986, 37.00859768], [1516986000000, 0.015985, 0.016, 0.015985, 0.015986, 16.77014226], [1516986060000, 0.016023, 0.016023, 0.016023, 0.016023, 1.67458379], [1516986120000, 0.01601774, 0.01601774, 0.015986, 0.015986, 29.90314806], [1516986180000, 0.015986, 0.01600623, 0.015986, 0.01600623, 3.33254558], [1516986240000, 0.015986, 0.01600323, 0.01598, 0.01598, 302.20068432], [1516986300000, 0.01598, 0.01598, 0.01594, 0.01598, 23.77364838], [1516986360000, 0.01598, 0.01598, 0.015932, 0.01598, 843.02878645], [1516986420000, 0.01597699, 0.01597699, 0.015932, 0.015932, 1.38819149], [1516986480000, 0.01597099, 0.015971, 0.01597099, 0.015971, 0.40815591], [1516986540000, 0.015971, 0.01598, 0.015971, 0.01598, 14.65202666], [1516986600000, 0.01598, 0.01598, 0.01598, 0.01598, 13.25743419], [1516986660000, 0.01598, 0.01598, 0.015971, 0.01597968, 3.95906136], [1516986720000, 0.015971, 0.015971, 0.015971, 0.015971, 2.7225161], [1516986780000, 0.01597968, 0.01597968, 0.015932, 0.015932, 42.57798452], [1516986840000, 0.01597968, 0.01598, 0.015979, 0.01598, 33.13079684], [1516986900000, 0.0159796, 0.0159796, 0.015932, 0.015932, 114.39150043], [1516986960000, 0.01592004, 0.015932, 0.01589506, 0.015932, 34.25411583], [1516987020000, 0.0159799, 0.01598, 0.0159799, 0.0159799, 48.76072158], [1516987080000, 0.01597533, 0.0159799, 0.01597533, 0.01597533, 2.91249686], [1516987140000, 0.01597533, 0.0159799, 0.01597533, 0.015977, 4.4741967], [1516987200000, 0.01597533, 0.0159799, 0.01597533, 0.0159799, 12.17911029], [1516987260000, 0.01597533, 0.0159799, 0.01597, 0.01597, 15.49208516], [1516987320000, 0.0159799, 0.0159799, 0.01591107, 0.01591107, 23.4907818], [1516987380000, 0.01597, 0.01597, 0.01597, 0.01597, 0.10828273], [1516987440000, 0.01597, 0.0159799, 0.01591414, 0.01597, 14.07545318], [1516987500000, 0.01597, 0.0159799, 0.01592, 0.01597, 29.59652088], [1516987560000, 0.01592, 0.0159799, 0.01592, 0.0159799, 12.16871425], [1516987620000, 0.01598, 0.01598, 0.01598, 0.01598, 19.36542286], [1516987680000, 0.016, 0.016019, 0.016, 0.01600323, 35.2218933], [1516987740000, 0.01602399, 0.01602399, 0.016, 0.016, 33.22685568], [1516987800000, 0.016, 0.0160226, 0.0159799, 0.01599999, 9.48166242], [1516987860000, 0.01598, 0.016, 0.0159799, 0.0159799, 27.45721242], [1516987920000, 0.016, 0.016, 0.0159799, 0.0159799, 3.14611165], [1516987980000, 0.01599999, 0.01599999, 0.0159799, 0.01599999, 3.50542821], [1516988040000, 0.01599996, 0.01599996, 0.015945, 0.015945, 8.39970937], [1516988100000, 0.01592003, 0.015945, 0.01590012, 0.015945, 2.00101378], [1516988160000, 0.01590012, 0.015945, 0.01590012, 0.015945, 23.59834278], [1516988220000, 0.015945, 0.015945, 0.01590643, 0.01590643, 7.2449783], [1516988280000, 0.01590643, 0.01594, 0.01589, 0.01589, 5.86373194], [1516988340000, 0.01594, 0.01594, 0.01589004, 0.01594, 5.08233435], [1516988400000, 0.01589014, 0.01594, 0.01589005, 0.01594, 4.29465358], [1516988460000, 0.0158901, 0.01589013, 0.0158901, 0.0158901, 1.35698629], [1516988520000, 0.0158901, 0.0158901, 0.01588003, 0.0158901, 13.79333403], [1516988580000, 0.01593, 0.015945, 0.01589015, 0.01594, 45.63176532], [1516988640000, 0.01593968, 0.01594, 0.01589015, 0.01589015, 16.49504508], [1516988700000, 0.01593967, 0.01593967, 0.01589015, 0.01589015, 4.78654726], [1516988760000, 0.01589017, 0.01594, 0.01589015, 0.01589015, 11.04509411], [1516988820000, 0.01589015, 0.01594, 0.01589015, 0.01594, 15.33762689], [1516988880000, 0.01589015, 0.01593999, 0.01589015, 0.01593999, 6.24135396], [1516988940000, 0.01593999, 0.01594, 0.0158905, 0.01594, 8.56386956], [1516989000000, 0.01589051, 0.01589105, 0.01589015, 0.01589051, 6.61016234], [1516989060000, 0.01589051, 0.015945, 0.01589051, 0.015945, 48.46520516], [1516989120000, 0.015893, 0.01598998, 0.01589051, 0.01589051, 25.35459314], [1516989180000, 0.01589051, 0.0159441, 0.01589051, 0.01589051, 17.69397432], [1516989240000, 0.01589051, 0.01598951, 0.01589051, 0.01598951, 2.56581967], [1516989300000, 0.01589055, 0.01589055, 0.01589051, 0.01589051, 2.060525], [1516989360000, 0.01589051, 0.01598658, 0.01589015, 0.01589051, 4.08301283], [1516989420000, 0.01589051, 0.01589051, 0.01589051, 0.01589051, 3.69299301], [1516989480000, 0.01598651, 0.01598651, 0.01589015, 0.01590662, 15.6546723], [1516989540000, 0.01589222, 0.01590662, 0.01589015, 0.01590662, 23.27540506], [1516989600000, 0.01590662, 0.01590662, 0.01589015, 0.01590662, 1.86801551], [1516989660000, 0.01590662, 0.015975, 0.01589015, 0.01589015, 4.51507991], [1516989720000, 0.01587501, 0.01589051, 0.01586001, 0.01589051, 38.94525428], [1516989780000, 0.01589051, 0.015957, 0.0158624, 0.015957, 3.23162561], [1516989840000, 0.01596197, 0.01596197, 0.015906, 0.015906, 17.95389996], [1516989900000, 0.015906, 0.0159251, 0.015906, 0.0159251, 3.82283566], [1516989960000, 0.015906, 0.0159251, 0.015906, 0.0159251, 4.32278937], [1516990020000, 0.0159251, 0.0159251, 0.0159251, 0.0159251, 9.3691], [1516990080000, 0.015915, 0.015915, 0.015906, 0.015915, 2.80493829], [1516990140000, 0.0159251, 0.0159251, 0.015915, 0.0159251, 5.28638632], [1516990200000, 0.0159251, 0.0159251, 0.0159251, 0.0159251, 23.50092424], [1516990260000, 0.0159251, 0.0159251, 0.015915, 0.0159251, 12.19573197], [1516990320000, 0.0159113, 0.0159251, 0.0159055, 0.0159251, 5.24595316], [1516990380000, 0.0159251, 0.01596198, 0.0159251, 0.0159251, 3.01205214], [1516990440000, 0.0159251, 0.01596198, 0.0159251, 0.0159251, 24.31716242], [1516990500000, 0.01596198, 0.01596198, 0.0159251, 0.0159251, 6.31595508], [1516990560000, 0.0159251, 0.0159251, 0.0159251, 0.0159251, 4.99319538], [1516990620000, 0.0159251, 0.01596188, 0.0159251, 0.01596188, 1.035629], [1516990680000, 0.0159251, 0.01596187, 0.0159251, 0.0159251, 8.23233069], [1516990740000, 0.0159251, 0.01596175, 0.0159251, 0.01596067, 28.47059473], [1516990800000, 0.01595999, 0.01595999, 0.0158624, 0.0158624, 4.45799821], [1516990860000, 0.01595996, 0.01595996, 0.0158624, 0.0159251, 59.06028606], [1516990920000, 0.015925, 0.0159251, 0.01587604, 0.0159251, 22.64213501], [1516990980000, 0.0159251, 0.0159251, 0.0159251, 0.0159251, 6.69014578], [1516991040000, 0.01595999, 0.01595999, 0.0159251, 0.0159251, 8.56413125], [1516991100000, 0.01596198, 0.01596198, 0.0159251, 0.0159251, 3.95080136], [1516991160000, 0.0159251, 0.01596198, 0.0159251, 0.01596198, 8.65069676], [1516991220000, 0.01596198, 0.01596198, 0.0159251, 0.0159251, 56.64538819], [1516991280000, 0.01593277, 0.01594102, 0.01593277, 0.01594102, 2.83102756], [1516991340000, 0.01594102, 0.01596198, 0.01587164, 0.0159, 7.06415879], [1516991400000, 0.01587164, 0.0159, 0.0158715, 0.0159, 14.25121281], [1516991460000, 0.0159, 0.0159, 0.0159, 0.0159, 9.86162909], [1516991520000, 0.0159251, 0.01594102, 0.01588, 0.01588, 16.63914864], [1516991580000, 0.0159, 0.0159, 0.01587102, 0.01587102, 32.02134226], [1516991640000, 0.0158624, 0.01587102, 0.01586, 0.01587102, 14.10004344], [1516991700000, 0.01586003, 0.01587102, 0.01586, 0.01587102, 36.49069315], [1516991760000, 0.01587102, 0.01587102, 0.01587102, 0.01587102, 2.89183305], [1516991820000, 0.01587102, 0.01587102, 0.01586, 0.01587102, 28.7756105], [1516991880000, 0.01587102, 0.01587102, 0.01586005, 0.01586005, 16.33998236], [1516991940000, 0.01587101, 0.01587102, 0.01586005, 0.01587101, 3.88258222], [1516992000000, 0.01586005, 0.01586005, 0.01584912, 0.01586, 5.56050327], [1516992060000, 0.01586, 0.01586, 0.01584916, 0.01584916, 12.38211399], [1516992120000, 0.01584916, 0.01587102, 0.01584912, 0.01587102, 28.4934245], [1516992180000, 0.01587102, 0.01587102, 0.01584912, 0.015871, 2.56728486], [1516992240000, 0.015871, 0.015871, 0.01584913, 0.015871, 0.45529611], [1516992300000, 0.015871, 0.015871, 0.01584913, 0.01584913, 4.6795821], [1516992360000, 0.015871, 0.01587102, 0.01584912, 0.01584912, 16.11496864], [1516992420000, 0.015871, 0.01587102, 0.01584913, 0.01587102, 13.08527516], [1516992480000, 0.01584913, 0.01587102, 0.01584913, 0.01587102, 30.55167161], [1516992540000, 0.01584913, 0.01587102, 0.01583001, 0.01587101, 181.62846962], [1516992600000, 0.01587101, 0.01587102, 0.01583001, 0.01587102, 8.34805836], [1516992660000, 0.01583301, 0.01587102, 0.01583301, 0.01587102, 0.20130053], [1516992720000, 0.01587102, 0.01587102, 0.01587102, 0.01587102, 16.57684763], [1516992780000, 0.015834, 0.01587101, 0.01582701, 0.01587101, 152.69197654], [1516992840000, 0.01587101, 0.01587101, 0.01587101, 0.01587101, 11.2601169], [1516992900000, 0.01587101, 0.01587101, 0.015835, 0.015835, 8.31819818], [1516992960000, 0.01587101, 0.01587101, 0.01583703, 0.01583703, 2.5558065], [1516993020000, 0.01584003, 0.01587101, 0.01583703, 0.01587101, 15.14753552], [1516993080000, 0.01584, 0.01584, 0.015837, 0.01584, 8.78867484], [1516993140000, 0.01584, 0.01584, 0.01583403, 0.01584, 61.22662632], [1516993200000, 0.01584, 0.015871, 0.01582701, 0.01583405, 20.7639332], [1516993260000, 0.01583405, 0.01583405, 0.01582701, 0.01583405, 6.26593607], [1516993320000, 0.015834, 0.01587101, 0.01582705, 0.01587101, 135.14733406], [1516993380000, 0.01582704, 0.01587102, 0.01582704, 0.01587, 15.39356129], [1516993440000, 0.01583405, 0.01583405, 0.01580001, 0.01580001, 20.86139253], [1516993500000, 0.01583405, 0.01586998, 0.015827, 0.015827, 2.95515117], [1516993560000, 0.015827, 0.01587102, 0.015827, 0.01586993, 40.31203593], [1516993620000, 0.01586993, 0.01586995, 0.01586993, 0.01586993, 39.26584213], [1516993680000, 0.015871, 0.015871, 0.01586993, 0.01586993, 10.47557108], [1516993740000, 0.015871, 0.015871, 0.01580001, 0.01580001, 45.40687387], [1516993800000, 0.01580001, 0.015868, 0.0158, 0.01586499, 5.54225745], [1516993860000, 0.015863, 0.015863, 0.015857, 0.01586299, 5.39798436], [1516993920000, 0.0158, 0.01585999, 0.01578368, 0.01578368, 13.42057895], [1516993980000, 0.01578368, 0.01578368, 0.01576101, 0.01576101, 181.34210797], [1516994040000, 0.01576101, 0.01585499, 0.01576, 0.01585499, 86.83659649], [1516994100000, 0.01585499, 0.01585499, 0.01584889, 0.01584889, 27.67202731], [1516994160000, 0.01584589, 0.01584888, 0.01579199, 0.01584585, 39.43114881], [1516994220000, 0.01584588, 0.01586993, 0.01584585, 0.01584585, 53.47661175], [1516994280000, 0.01584585, 0.01585698, 0.01580323, 0.01580323, 36.35682597], [1516994340000, 0.01584999, 0.015866, 0.01584999, 0.01585699, 29.08061106], [1516994400000, 0.01585699, 0.015866, 0.01579199, 0.01585699, 5.47507354], [1516994460000, 0.01579503, 0.0158, 0.01579503, 0.0158, 3.85680232], [1516994520000, 0.0158, 0.0158, 0.0158, 0.0158, 40.51353944], [1516994580000, 0.0158, 0.01580079, 0.0158, 0.0158, 10.89026968], [1516994640000, 0.01580079, 0.01580079, 0.0158, 0.0158, 7.66642847], [1516994700000, 0.0158, 0.0158, 0.01579999, 0.0158, 16.56224964], [1516994760000, 0.01580001, 0.01581626, 0.01580001, 0.01581626, 21.84046149], [1516994820000, 0.01586993, 0.01586993, 0.0158184, 0.0158184, 4.05813002], [1516994880000, 0.0158184, 0.01586689, 0.0158184, 0.0158184, 1.79700619], [1516994940000, 0.01586296, 0.01586296, 0.01586296, 0.01586296, 1.71799723], [1516995000000, 0.01586296, 0.01586296, 0.01581839, 0.0158184, 55.33520694], [1516995060000, 0.0158184, 0.0158184, 0.0158022, 0.0158184, 7.81700816], [1516995120000, 0.0158184, 0.0158184, 0.0158022, 0.0158022, 31.30266312], [1516995180000, 0.0158022, 0.01582208, 0.0158022, 0.01582208, 7.30448099], [1516995240000, 0.0158024, 0.01582208, 0.01580222, 0.01580222, 7.84769147], [1516995300000, 0.01580222, 0.0158568, 0.01580222, 0.015805, 3.42364133], [1516995360000, 0.0158538, 0.0158568, 0.015805, 0.01585676, 5.06129713], [1516995420000, 0.01585676, 0.01585676, 0.015761, 0.015761, 73.03570389], [1516995480000, 0.01585675, 0.01585676, 0.01585675, 0.01585676, 25.21918338], [1516995540000, 0.01585676, 0.01585676, 0.01585675, 0.01585676, 2.40854184], [1516995600000, 0.01585675, 0.01585676, 0.01585675, 0.01585676, 18.94823607], [1516995660000, 0.01585675, 0.01585676, 0.01585675, 0.01585676, 19.59908941], [1516995720000, 0.01585675, 0.01585675, 0.01585675, 0.01585675, 7.11108251], [1516995780000, 0.01585675, 0.0158598, 0.0158374, 0.01585, 102.87272186], [1516995840000, 0.01585, 0.0158598, 0.01583741, 0.01584784, 54.3218924], [1516995900000, 0.01584784, 0.01585979, 0.01584784, 0.01584804, 6.594299], [1516995960000, 0.01584804, 0.01584804, 0.01584, 0.01584804, 20.13812681], [1516996020000, 0.01580975, 0.01584804, 0.01580975, 0.01581273, 24.20383362], [1516996080000, 0.01584804, 0.01584804, 0.0158097, 0.01584804, 19.38272944], [1516996140000, 0.01584804, 0.01584804, 0.0158097, 0.01584804, 26.3734299], [1516996200000, 0.01584804, 0.01584804, 0.0158114, 0.01584804, 23.5372137], [1516996260000, 0.01584804, 0.01584804, 0.01578012, 0.01578933, 19.46517851], [1516996320000, 0.01584804, 0.01584804, 0.01578634, 0.01584804, 14.24498915], [1516996380000, 0.01584804, 0.0158598, 0.01578946, 0.01584804, 41.35209142], [1516996440000, 0.01584804, 0.01586993, 0.0157954, 0.01584804, 14.14855849], [1516996500000, 0.01584804, 0.01584804, 0.01579241, 0.01584804, 120.2905953], [1516996560000, 0.01584804, 0.01584804, 0.01581045, 0.01581045, 3.14094681], [1516996620000, 0.01581045, 0.01584803, 0.01581045, 0.01584803, 10.67861611], [1516996680000, 0.01584803, 0.01584803, 0.01584803, 0.01584803, 1.63862707], [1516996740000, 0.01581045, 0.01584804, 0.01581045, 0.01584804, 20.08684249], [1516996800000, 0.01584804, 0.01584804, 0.01581045, 0.01584804, 23.04608898], [1516996860000, 0.01584804, 0.01584804, 0.0158136, 0.01584804, 2.40477868], [1516996920000, 0.01584804, 0.01584804, 0.01584803, 0.01584804, 23.18500645], [1516996980000, 0.01584804, 0.01584804, 0.0158169, 0.01584804, 92.87218599], [1516997040000, 0.01584804, 0.01584804, 0.01581689, 0.01584804, 122.42596404], [1516997100000, 0.01584804, 0.01586995, 0.01584804, 0.01586995, 47.4467847], [1516997160000, 0.01586995, 0.01586995, 0.0158169, 0.01586995, 21.6701405], [1516997220000, 0.01586995, 0.01586995, 0.01586, 0.01586995, 44.90384907], [1516997280000, 0.01586995, 0.01586995, 0.01586, 0.01586995, 27.50462256], [1516997340000, 0.0158644, 0.0158644, 0.0158644, 0.0158644, 1.15243649], [1516997400000, 0.01586995, 0.01586995, 0.0158644, 0.0158644, 7.03150249], [1516997460000, 0.0158644, 0.01586989, 0.01581798, 0.01582099, 15.67601454], [1516997520000, 0.0158644, 0.01586989, 0.01582701, 0.015861, 6.5720742], [1516997580000, 0.015861, 0.015861, 0.01581798, 0.015861, 60.16953579], [1516997640000, 0.01583241, 0.01583241, 0.01581797, 0.01581797, 45.16601615], [1516997700000, 0.0158114, 0.01583241, 0.01579546, 0.01583241, 24.81495254], [1516997760000, 0.01579846, 0.01586989, 0.01579846, 0.01583241, 3.72638], [1516997820000, 0.01586988, 0.01586989, 0.01583241, 0.01586989, 5.03243458], [1516997880000, 0.01586989, 0.01586989, 0.01583241, 0.01583241, 19.54009517], [1516997940000, 0.01583241, 0.01583241, 0.01583241, 0.01583241, 1.694032], [1516998000000, 0.01586988, 0.01586989, 0.01586988, 0.01586988, 3.45429017], [1516998060000, 0.01586988, 0.01586989, 0.01586988, 0.01586989, 2.84265205], [1516998120000, 0.01586989, 0.01587, 0.01583242, 0.01587, 7.23528312], [1516998180000, 0.01586989, 0.01587, 0.01586988, 0.01587, 14.87938569], [1516998240000, 0.01587, 0.01587, 0.01583241, 0.01583241, 3.524387], [1516998300000, 0.01587, 0.01587, 0.01587, 0.01587, 0.06931317], [1516998360000, 0.01587, 0.01587, 0.01583242, 0.01587, 4.05958793], [1516998420000, 0.01587, 0.01587, 0.01579551, 0.01579551, 263.64927712], [1516998480000, 0.01587, 0.01587, 0.01579856, 0.01579856, 4.13224952], [1516998540000, 0.0158699, 0.015871, 0.01579, 0.015871, 234.02833087], [1516998600000, 0.015871, 0.015871, 0.01581111, 0.015871, 6.90608652], [1516998720000, 0.01587095, 0.01587095, 0.015815, 0.015815, 9.79826444], [1516998780000, 0.01583111, 0.01587, 0.01583111, 0.01583333, 16.93447058], [1516998840000, 0.01587, 0.01587, 0.01583333, 0.01587, 3.6155456], [1516998900000, 0.01587, 0.01587095, 0.01587, 0.01587, 8.16861439], [1516998960000, 0.01586999, 0.01587, 0.01586999, 0.01587, 1.00517516], [1516999020000, 0.01584444, 0.015871, 0.01584444, 0.01584444, 138.60234503], [1516999080000, 0.015871, 0.015871, 0.01584444, 0.015871, 42.74374343], [1516999140000, 0.015871, 0.015871, 0.015871, 0.015871, 36.54188863], [1516999200000, 0.015871, 0.015871, 0.01584445, 0.015871, 29.50097245], [1516999260000, 0.01585, 0.015871, 0.01585, 0.015871, 8.59263937], [1516999320000, 0.015871, 0.015871, 0.01585, 0.015871, 5.80134599], [1516999380000, 0.015871, 0.015871, 0.01583685, 0.01583685, 8.96186594], [1516999440000, 0.01583685, 0.01583764, 0.01583685, 0.01583685, 8.43955938], [1516999500000, 0.015861, 0.015871, 0.01583848, 0.015871, 13.29357645], [1516999560000, 0.01583848, 0.015871, 0.01583848, 0.015871, 8.05003441], [1516999620000, 0.015871, 0.015871, 0.0158395, 0.0158395, 97.53620112], [1516999680000, 0.01587095, 0.01587102, 0.01587095, 0.015871, 42.120025], [1516999740000, 0.01588, 0.01588, 0.01584, 0.01588, 13.13906224], [1516999800000, 0.015871, 0.01588, 0.01584001, 0.01584001, 8.15688103], [1516999860000, 0.01588, 0.01589549, 0.01588, 0.01589549, 33.93551758], [1516999920000, 0.0159, 0.01591925, 0.0159, 0.0159, 5.81119864], [1516999980000, 0.0159, 0.01594239, 0.0159, 0.0159, 20.99225764], [1517000040000, 0.01591, 0.01599997, 0.0159, 0.01599997, 93.24905917], [1517000100000, 0.01596689, 0.01599997, 0.01593939, 0.01593939, 45.59733525], [1517000160000, 0.01593939, 0.015977, 0.01585802, 0.01585805, 36.01305283], [1517000220000, 0.015969, 0.015969, 0.015964, 0.015964, 3.3198178], [1517000280000, 0.015964, 0.015979, 0.0159632, 0.015964, 67.30985735], [1517000340000, 0.015964, 0.015979, 0.01587601, 0.015964, 95.76293848], [1517000400000, 0.015964, 0.015964, 0.01595981, 0.01595981, 4.51722446], [1517000460000, 0.01587601, 0.0159568, 0.01585504, 0.0159568, 9.57770675], [1517000520000, 0.0159568, 0.01597899, 0.01589549, 0.01589549, 30.14877017], [1517000580000, 0.01589549, 0.015979, 0.01589549, 0.015979, 22.1092624], [1517000640000, 0.015979, 0.015979, 0.01597596, 0.015976, 6.30728823], [1517000700000, 0.015976, 0.015979, 0.01589549, 0.01589549, 6.13043036], [1517000760000, 0.01597596, 0.01597596, 0.01597596, 0.01597596, 1.699031], [1517000820000, 0.01597596, 0.01597596, 0.01589549, 0.01597596, 1.79496603], [1517000880000, 0.01597596, 0.015979, 0.01589849, 0.01589849, 84.483862], [1517000940000, 0.01597596, 0.015979, 0.0158764, 0.01596, 36.61263215], [1517001000000, 0.01596, 0.01596, 0.0158864, 0.01596, 13.29550072], [1517001060000, 0.01596, 0.01596, 0.01589, 0.01596, 8.3113281], [1517001120000, 0.01596, 0.01596, 0.0158864, 0.01589, 15.41120255], [1517001180000, 0.01589, 0.01589, 0.015888, 0.01588801, 9.73962229], [1517001240000, 0.01588999, 0.01590589, 0.01588999, 0.01589001, 23.74733378], [1517001300000, 0.01592645, 0.01596, 0.01589002, 0.01592645, 12.35312766], [1517001360000, 0.01595995, 0.01596, 0.01592645, 0.01592645, 19.66860805], [1517001420000, 0.01592645, 0.01596, 0.01592645, 0.01592645, 11.93674882], [1517001480000, 0.01592645, 0.01595777, 0.0159, 0.0159, 22.30024261], [1517001540000, 0.01590798, 0.01590798, 0.0159, 0.0159, 6.0359497], [1517001600000, 0.015903, 0.015979, 0.015903, 0.01590658, 30.23012716], [1517001660000, 0.01590658, 0.01599986, 0.01590657, 0.01599986, 48.7042017], [1517001720000, 0.01599985, 0.01599985, 0.015904, 0.01599984, 12.07058668], [1517001780000, 0.01599984, 0.01599984, 0.015904, 0.015904, 9.0236616], [1517001840000, 0.01598398, 0.01598398, 0.0159114, 0.0159114, 0.56167413], [1517001900000, 0.01598398, 0.01598399, 0.01591141, 0.01591141, 50.17148374], [1517001960000, 0.01591141, 0.01597, 0.01590701, 0.01597, 15.51678076], [1517002020000, 0.01597, 0.01597, 0.01590401, 0.01597, 10.98029273], [1517002080000, 0.01597, 0.01597, 0.01596, 0.01596999, 5.82260385], [1517002140000, 0.01596, 0.01597, 0.01590701, 0.01591604, 7.02951726], [1517002200000, 0.01597, 0.01597001, 0.01591603, 0.01597001, 16.34271716], [1517002260000, 0.01597001, 0.01599996, 0.01591805, 0.01599996, 23.13823543], [1517002320000, 0.01599996, 0.01599996, 0.01591911, 0.01599995, 11.37603122], [1517002380000, 0.01599695, 0.01599996, 0.01590403, 0.01590403, 14.49058331], [1517002440000, 0.01599995, 0.01599995, 0.01599995, 0.01599995, 0.23091985], [1517002500000, 0.01599995, 0.01599997, 0.01599995, 0.01599997, 138.5257611], [1517002560000, 0.01599997, 0.01599997, 0.0159124, 0.01599997, 12.13102031], [1517002620000, 0.01599997, 0.01599997, 0.01592831, 0.01592831, 0.48254283], [1517002680000, 0.01592831, 0.015995, 0.01590503, 0.01591041, 7.23506825], [1517002740000, 0.01591041, 0.015995, 0.01591041, 0.015995, 1.05845504], [1517002800000, 0.015995, 0.015995, 0.01590001, 0.01591043, 18.51430667], [1517002860000, 0.015995, 0.015995, 0.01590002, 0.015995, 14.64219773], [1517002920000, 0.015994, 0.015994, 0.015994, 0.015994, 0.44561445], [1517003040000, 0.01599, 0.015993, 0.01599, 0.015993, 2.68204416], [1517003100000, 0.01599, 0.01599, 0.01590007, 0.01590007, 20.2850874], [1517003160000, 0.015934, 0.015934, 0.01591342, 0.015932, 12.88243266], [1517003220000, 0.015932, 0.015932, 0.01590912, 0.015932, 6.07188354], [1517003280000, 0.015932, 0.015932, 0.015922, 0.015932, 76.50897757], [1517003340000, 0.015932, 0.015932, 0.015917, 0.015917, 29.01529419], [1517003400000, 0.015917, 0.015932, 0.015917, 0.015932, 16.38891567], [1517003460000, 0.015932, 0.015932, 0.01590913, 0.015932, 27.37900869], [1517003520000, 0.015932, 0.015932, 0.01593, 0.01593, 0.99109784], [1517003580000, 0.015929, 0.01593, 0.015929, 0.01593, 4.30822132], [1517003640000, 0.01593, 0.01593, 0.015915, 0.01593, 32.4939307], [1517003700000, 0.01593, 0.015932, 0.015905, 0.015932, 59.19076005], [1517003760000, 0.015905, 0.015934, 0.015905, 0.015905, 17.39643542], [1517003820000, 0.015934, 0.015995, 0.0159044, 0.0159044, 14.03925114], [1517003880000, 0.015995, 0.015995, 0.0159044, 0.015992, 8.0282877], [1517003940000, 0.01599499, 0.01599997, 0.01590912, 0.01590912, 69.72961294], [1517004000000, 0.01590913, 0.01599997, 0.01590913, 0.01599997, 23.43129626], [1517004060000, 0.01599997, 0.01599997, 0.01590918, 0.01590927, 5.60541647], [1517004120000, 0.01593597, 0.01593597, 0.01590927, 0.01593597, 59.44372197], [1517004180000, 0.01593597, 0.01599997, 0.01590935, 0.01590935, 41.87486357], [1517004240000, 0.01599997, 0.01602202, 0.01590935, 0.01599995, 110.1784867], [1517004300000, 0.01599995, 0.01599995, 0.01590943, 0.01590943, 2.27645187], [1517004360000, 0.01599995, 0.01599995, 0.01592012, 0.01593, 6.51377552], [1517004420000, 0.01593, 0.01599995, 0.01592014, 0.01599995, 2.13455455], [1517004480000, 0.01599995, 0.01599995, 0.01593, 0.01599995, 3.53995694], [1517004540000, 0.01593, 0.01599995, 0.01593, 0.01599995, 12.93360348], [1517004600000, 0.01599995, 0.01602781, 0.01598395, 0.01598395, 4.59142112], [1517004660000, 0.01598395, 0.01602779, 0.01591505, 0.01591505, 12.86291157], [1517004720000, 0.01591501, 0.01593, 0.01591501, 0.01591505, 12.62323761], [1517004780000, 0.01593, 0.01593, 0.01590912, 0.01591505, 4.87245427], [1517004840000, 0.01591505, 0.01591505, 0.01590913, 0.01591505, 25.73315175], [1517004900000, 0.01591505, 0.01593, 0.01590915, 0.01593, 11.00798185], [1517004960000, 0.01591505, 0.01598395, 0.01591001, 0.01591505, 2.98185265], [1517005020000, 0.01591489, 0.01591505, 0.01591489, 0.01591505, 5.93931963], [1517005080000, 0.01591505, 0.016, 0.0159149, 0.0159149, 4.34411183], [1517005140000, 0.01598395, 0.01598395, 0.01591492, 0.01591492, 18.99849811], [1517005200000, 0.01598395, 0.016, 0.01598395, 0.01598395, 8.63710959], [1517005260000, 0.01598395, 0.016, 0.01591496, 0.01598395, 16.24025291], [1517005320000, 0.01594399, 0.016, 0.01592401, 0.016, 6.64601242], [1517005380000, 0.015936, 0.016015, 0.0159149, 0.0159149, 4.26691442], [1517005440000, 0.0159149, 0.016015, 0.0159149, 0.01594506, 3.36726639], [1517005500000, 0.01594506, 0.01601505, 0.01594506, 0.01601505, 13.01282473], [1517005560000, 0.016015, 0.016015, 0.01591901, 0.01591902, 8.56959007], [1517005620000, 0.01591902, 0.016, 0.01591902, 0.01594608, 8.25486905], [1517005680000, 0.016013, 0.016015, 0.01594662, 0.01595612, 23.10065927], [1517005740000, 0.01595622, 0.016013, 0.01595622, 0.016013, 13.20182423], [1517005800000, 0.016013, 0.01602781, 0.016013, 0.01602781, 101.68159105], [1517005860000, 0.01602781, 0.01603122, 0.01602781, 0.01603122, 69.29946266], [1517005920000, 0.01602781, 0.01603122, 0.015975, 0.015975, 14.4327478], [1517005980000, 0.0160278, 0.01603122, 0.0160278, 0.0160278, 0.49565702], [1517006040000, 0.01597501, 0.0160279, 0.01597501, 0.01598, 11.84033816], [1517006100000, 0.015975, 0.015975, 0.01597, 0.015975, 13.24201218], [1517006160000, 0.01597004, 0.01603121, 0.01597, 0.01603121, 59.75624069], [1517006220000, 0.01598549, 0.01598549, 0.01598549, 0.01598549, 0.77616978], [1517006280000, 0.01598549, 0.01598549, 0.01597, 0.01598549, 4.98472735], [1517006340000, 0.01598549, 0.01604, 0.01598549, 0.01598549, 7.38619172], [1517006400000, 0.01597673, 0.01604, 0.01597673, 0.01597673, 6.34184788], [1517006460000, 0.01603998, 0.01603998, 0.01597673, 0.01597673, 7.55526892], [1517006520000, 0.01597673, 0.01602, 0.01597, 0.01597, 11.67816311], [1517006580000, 0.01597, 0.01601968, 0.01597, 0.01597, 7.14817403], [1517006640000, 0.01597, 0.01601968, 0.01597, 0.01601968, 2.01637627], [1517006700000, 0.01601968, 0.01602, 0.01597, 0.01601968, 30.46085098], [1517006760000, 0.01601967, 0.01601967, 0.01597, 0.01597, 12.4654048], [1517006820000, 0.01601968, 0.01601968, 0.01597, 0.01597, 0.83717896], [1517006880000, 0.01597, 0.01602, 0.01597, 0.01602, 31.88917982], [1517006940000, 0.01602, 0.01602, 0.01598597, 0.01598597, 6.85334977], [1517007000000, 0.01598597, 0.01602, 0.01598597, 0.01602, 3.59498284], [1517007060000, 0.01601995, 0.01602, 0.01597005, 0.01598597, 15.84211513], [1517007120000, 0.01598597, 0.01598597, 0.01597005, 0.01598597, 2.58391983], [1517007180000, 0.01598597, 0.01601995, 0.01597041, 0.01601995, 16.57628431], [1517007240000, 0.01601995, 0.01601995, 0.01598597, 0.01601995, 26.04415318], [1517007300000, 0.01601995, 0.01601995, 0.01598597, 0.01601995, 11.1275217], [1517007360000, 0.01598597, 0.01602, 0.01598597, 0.01602, 19.67196884], [1517007420000, 0.0159875, 0.0159875, 0.01598597, 0.01598597, 5.466589], [1517007480000, 0.01601968, 0.01601968, 0.0159702, 0.0159702, 3.87452561], [1517007540000, 0.01601968, 0.01601968, 0.0159702, 0.01601968, 14.00347471], [1517007600000, 0.01601936, 0.01601968, 0.01597006, 0.015971, 39.13217834], [1517007660000, 0.015971, 0.015971, 0.01597006, 0.01597006, 4.77514945], [1517007720000, 0.01601936, 0.01601936, 0.01600936, 0.01600936, 3.99151675], [1517007780000, 0.01600936, 0.01600936, 0.01597, 0.01597, 53.31044363], [1517007840000, 0.01597, 0.01601936, 0.01597, 0.01597, 6.76398565], [1517007900000, 0.01601936, 0.01601936, 0.01597, 0.01601936, 1.52162483], [1517007960000, 0.01601935, 0.01601936, 0.01597, 0.01597, 3.55155897], [1517008020000, 0.01597, 0.01597, 0.01597, 0.01597, 1.0], [1517008080000, 0.01597, 0.01601933, 0.01597, 0.01601932, 73.12616367], [1517008140000, 0.01601932, 0.01601933, 0.01597, 0.01601932, 13.38374436], [1517008200000, 0.01597, 0.01601933, 0.01597, 0.01597, 11.00153814], [1517008260000, 0.016015, 0.016015, 0.01597, 0.01597, 1.29284977], [1517008320000, 0.01599466, 0.016, 0.01597, 0.01597, 14.52667648], [1517008380000, 0.0159992, 0.016, 0.01597, 0.01597, 27.9365842], [1517008440000, 0.01597, 0.01597, 0.01596353, 0.01596353, 13.64351502], [1517008500000, 0.01596353, 0.01597, 0.01593, 0.01593, 9.62971987], [1517008560000, 0.01593353, 0.01597, 0.01593, 0.01593353, 26.07792478], [1517008620000, 0.01593353, 0.01597, 0.01593353, 0.01593353, 4.32099151], [1517008680000, 0.01597, 0.01597, 0.01593353, 0.01593353, 22.87038648], [1517008740000, 0.01593353, 0.01596, 0.01593353, 0.01593353, 10.82168783], [1517008800000, 0.01593353, 0.01593353, 0.01593, 0.01593, 20.37211788], [1517008860000, 0.01593353, 0.01596, 0.01593, 0.01593, 10.82168746], [1517008920000, 0.01596, 0.01596, 0.01593, 0.01593, 5.63646446], [1517008980000, 0.01595968, 0.01596, 0.01593, 0.01596, 33.48840141], [1517009040000, 0.01596, 0.01597, 0.01596, 0.01596, 4.31418931], [1517009100000, 0.01596, 0.01596968, 0.01596, 0.01596, 5.47263511], [1517009160000, 0.01596, 0.01596968, 0.01596, 0.01596, 5.31070185], [1517009220000, 0.01596, 0.01596436, 0.01596, 0.01596, 8.95588305], [1517009280000, 0.01596436, 0.01596436, 0.01596, 0.01596, 1.19467456], [1517009340000, 0.01593, 0.01597, 0.01592, 0.01592, 63.88578094], [1517009400000, 0.01592, 0.01592, 0.01592, 0.01592, 7.68653581], [1517009460000, 0.01596436, 0.01596968, 0.01592, 0.01592, 1.920436], [1517009520000, 0.01596, 0.01596, 0.01591575, 0.01592, 28.44913415], [1517009580000, 0.01591575, 0.01594, 0.01591575, 0.01593968, 9.90198921], [1517009640000, 0.01592, 0.0159387, 0.01592, 0.01592, 1.69461558], [1517009700000, 0.01592, 0.01593192, 0.01591575, 0.015916, 17.07104005], [1517009760000, 0.0159387, 0.0159387, 0.0159149, 0.0159149, 29.49354437], [1517009820000, 0.01591304, 0.0159149, 0.01586003, 0.0158864, 76.88723943], [1517009880000, 0.01587841, 0.015898, 0.01584, 0.01584, 86.19633796], [1517009940000, 0.0158975, 0.0159134, 0.01584, 0.01584, 2.14694862], [1517010000000, 0.01584, 0.01591308, 0.01584, 0.01584, 17.89389709], [1517010060000, 0.01584, 0.01584, 0.0158395, 0.01584, 9.82354421], [1517010120000, 0.01584, 0.01584, 0.01583848, 0.01583848, 4.30705888], [1517010180000, 0.01583848, 0.01583968, 0.01583848, 0.0158395, 1.97306156], [1517010240000, 0.01583848, 0.01583848, 0.01581, 0.01581, 3.7641513], [1517010300000, 0.01583, 0.01583, 0.01580002, 0.015805, 43.3474271], [1517010360000, 0.015805, 0.01591424, 0.01580001, 0.01580001, 237.60901068], [1517010420000, 0.01580001, 0.01589968, 0.01579997, 0.01585, 8.04082542], [1517010480000, 0.01584, 0.01585, 0.01580002, 0.01585, 9.88907606], [1517010540000, 0.01585, 0.01585, 0.01585, 0.01585, 0.64812282], [1517010600000, 0.01585, 0.01585, 0.01580002, 0.01585, 7.84338338], [1517010660000, 0.01585, 0.01585, 0.01580077, 0.01580078, 8.91910899], [1517010720000, 0.01580078, 0.01580078, 0.01580077, 0.01580078, 10.52226127], [1517010780000, 0.01585, 0.01589969, 0.01580177, 0.01589968, 5.28496372], [1517010840000, 0.01584585, 0.01589902, 0.01580077, 0.01589835, 46.64170226], [1517010900000, 0.01580077, 0.01589967, 0.01580002, 0.01589967, 0.58825611], [1517010960000, 0.01589967, 0.01589967, 0.01589935, 0.01589935, 1.45267691], [1517011020000, 0.01589935, 0.01589935, 0.015795, 0.01581985, 40.35547424], [1517011080000, 0.01581985, 0.0159, 0.01579011, 0.01579011, 158.05646506], [1517011140000, 0.01579001, 0.0159, 0.01579001, 0.01585, 14.94125227], [1517011200000, 0.01585, 0.01585, 0.0157901, 0.015796, 4.38150174], [1517011260000, 0.015791, 0.015796, 0.01579, 0.015796, 8.35700247], [1517011320000, 0.015796, 0.0159, 0.01579, 0.0159, 18.75098422], [1517011380000, 0.01585, 0.01589999, 0.01585, 0.01585, 33.31818477], [1517011440000, 0.01579, 0.01585, 0.01579, 0.01583, 6.46337187], [1517011500000, 0.01579, 0.01583, 0.01579, 0.01583, 4.096033], [1517011560000, 0.01583, 0.01583, 0.01579, 0.01583, 5.55069836], [1517011620000, 0.01579, 0.01583, 0.01579, 0.01583, 13.03283059], [1517011680000, 0.01583, 0.01585, 0.01577755, 0.01585, 36.81979176], [1517011740000, 0.0158, 0.0158, 0.01577755, 0.0158, 6.53916104], [1517011800000, 0.0158, 0.01584999, 0.01577756, 0.0157777, 18.62689218], [1517011860000, 0.0158, 0.0158, 0.01578301, 0.0158, 2.68825053], [1517011920000, 0.01578301, 0.0158, 0.01578301, 0.0158, 19.36861629], [1517011980000, 0.0158, 0.0158, 0.01578301, 0.01579998, 5.722347], [1517012040000, 0.01579997, 0.0158, 0.01579997, 0.01579998, 38.18336634], [1517012100000, 0.01579998, 0.0158, 0.01579998, 0.0158, 141.55982108], [1517012160000, 0.0158, 0.0158, 0.01578301, 0.0158, 46.29611105], [1517012220000, 0.0158, 0.0158, 0.01579999, 0.01579999, 15.43342972], [1517012280000, 0.01579999, 0.0158, 0.01578306, 0.0158, 28.83469789], [1517012340000, 0.01578305, 0.0158, 0.01578305, 0.0158, 39.0500908], [1517012400000, 0.0158, 0.0158, 0.0157831, 0.0158, 58.0554424], [1517012460000, 0.0158, 0.0158, 0.0157831, 0.0158, 21.81309502], [1517012520000, 0.0158, 0.0158, 0.01578308, 0.0158, 102.11464213], [1517012580000, 0.0158, 0.0158, 0.01578306, 0.0158, 109.79356619], [1517012640000, 0.01584999, 0.01584999, 0.01584999, 0.01584999, 0.12285764], [1517012700000, 0.01584999, 0.01584999, 0.01583, 0.01584999, 5.88465922], [1517012760000, 0.01584999, 0.01584999, 0.01580054, 0.01584999, 70.09773495], [1517012820000, 0.01584999, 0.01591594, 0.01566632, 0.015806, 592.62467275], [1517012880000, 0.01581513, 0.01589899, 0.01581513, 0.01581513, 4.98448502], [1517012940000, 0.01589113, 0.01589891, 0.01581513, 0.01589113, 6.49895865], [1517013000000, 0.01589113, 0.01589889, 0.01581513, 0.01581513, 7.82129434], [1517013060000, 0.01589113, 0.01589113, 0.01581513, 0.01581513, 1.21321958], [1517013120000, 0.01581513, 0.01581513, 0.01581513, 0.01581513, 0.0612], [1517013180000, 0.01583582, 0.01583582, 0.01581513, 0.01581513, 16.5397351], [1517013240000, 0.01583582, 0.01583582, 0.01581, 0.01581, 88.96381761], [1517013300000, 0.01581, 0.01581, 0.01580079, 0.01580999, 9.95842905], [1517013360000, 0.01580999, 0.01581, 0.01580079, 0.01580999, 39.75692495], [1517013420000, 0.01580999, 0.01581, 0.01580079, 0.01581, 140.20367922], [1517013480000, 0.01581, 0.01581, 0.01580999, 0.01581, 562.34501077], [1517013540000, 0.01581, 0.01581, 0.01581, 0.01581, 504.20432557], [1517013600000, 0.01581, 0.01581, 0.01581, 0.01581, 40.75863134], [1517013660000, 0.01581, 0.01581, 0.01580999, 0.01581, 9.22036879], [1517013720000, 0.01581, 0.01581, 0.01580999, 0.01581, 122.73771879], [1517013780000, 0.01580999, 0.01581, 0.01580999, 0.01581, 10.04233736], [1517013840000, 0.01580999, 0.01581, 0.01580999, 0.01581, 318.41345012], [1517013900000, 0.01581, 0.01581, 0.01580999, 0.01581, 31.55707506], [1517013960000, 0.01581, 0.01581, 0.01580999, 0.01581, 67.40150126], [1517014020000, 0.01581, 0.01581, 0.01580999, 0.01580999, 45.92082498], [1517014080000, 0.01581, 0.0158591, 0.01581, 0.0158591, 24.42614212], [1517014140000, 0.01586531, 0.01589099, 0.0158591, 0.0158591, 8.0898433], [1517014200000, 0.0158591, 0.01589099, 0.0158591, 0.01589099, 5.23178516], [1517014260000, 0.015877, 0.015877, 0.015877, 0.015877, 1.43064825], [1517014320000, 0.01589098, 0.01589098, 0.01580999, 0.01580999, 17.48423948], [1517014380000, 0.01580999, 0.01580999, 0.01580999, 0.01580999, 0.44915395], [1517014440000, 0.01588999, 0.01588999, 0.01580999, 0.01580999, 3.53634944], [1517014500000, 0.01580999, 0.01580999, 0.0158075, 0.0158075, 27.22245367], [1517014560000, 0.0158075, 0.01588999, 0.0158075, 0.0158075, 13.19432966], [1517014620000, 0.01588999, 0.01588999, 0.0158075, 0.0158075, 41.14685901], [1517014680000, 0.01588999, 0.01588999, 0.0158075, 0.0158075, 1.3782752], [1517014740000, 0.01588999, 0.01588999, 0.01581277, 0.01588999, 310.02767388], [1517014800000, 0.01581277, 0.01581277, 0.0158075, 0.0158075, 66.6953642], [1517014860000, 0.01581277, 0.01581277, 0.0158075, 0.01581277, 26.13679463], [1517014920000, 0.01581277, 0.01581277, 0.0158075, 0.01580778, 123.82106419], [1517014980000, 0.01580778, 0.01588998, 0.01580079, 0.015806, 956.40333345], [1517015040000, 0.01580079, 0.015806, 0.01580079, 0.015806, 28.28934797], [1517015100000, 0.01580079, 0.015806, 0.015791, 0.015806, 110.85110191], [1517015160000, 0.015806, 0.01588932, 0.015801, 0.01588932, 0.77057306], [1517015220000, 0.01588932, 0.01588932, 0.015796, 0.01588931, 9.76066587], [1517015280000, 0.01588931, 0.01588999, 0.01580601, 0.01580601, 32.7037986], [1517015340000, 0.01588922, 0.01588922, 0.01588922, 0.01588922, 0.31751333], [1517015400000, 0.01588922, 0.01588922, 0.0157911, 0.015889, 24.28076325], [1517015460000, 0.015796, 0.015796, 0.015796, 0.015796, 1.85502934], [1517015520000, 0.01579655, 0.01588888, 0.01579655, 0.0158, 7.05461783], [1517015580000, 0.015798, 0.01580001, 0.015798, 0.01580001, 3.21549105], [1517015640000, 0.01588, 0.01588, 0.01580113, 0.01580201, 0.71783187], [1517015700000, 0.01584101, 0.01584101, 0.01584101, 0.01584101, 0.97798854], [1517015760000, 0.01588, 0.01588, 0.01584101, 0.01584101, 13.35503114], [1517015820000, 0.015856, 0.01588, 0.015856, 0.01588, 1.07097422], [1517015880000, 0.01588, 0.01588, 0.01581667, 0.015879, 11.81669469], [1517015940000, 0.01588, 0.01588888, 0.01588, 0.01588888, 0.79649107], [1517016000000, 0.01588888, 0.01588999, 0.01588888, 0.01588999, 27.78034453], [1517016060000, 0.01588999, 0.01588999, 0.01584601, 0.015889, 3.57351991], [1517016120000, 0.015889, 0.01588999, 0.01584601, 0.01588922, 11.59197836], [1517016180000, 0.01588922, 0.01588922, 0.0158891, 0.01588922, 0.97146938], [1517016240000, 0.0158891, 0.01588922, 0.01585101, 0.01588909, 11.12863977], [1517016300000, 0.01584602, 0.01588909, 0.01584602, 0.01588896, 1.35180526], [1517016360000, 0.01588896, 0.01588909, 0.01584602, 0.01588896, 7.47744528], [1517016420000, 0.01584602, 0.01588864, 0.01584601, 0.01584601, 14.31445319], [1517016480000, 0.01584601, 0.01588864, 0.01581701, 0.01581701, 5.86557043], [1517016540000, 0.01581701, 0.01588896, 0.01581701, 0.01588864, 33.01932746], [1517016600000, 0.01581701, 0.01588864, 0.01581701, 0.01588864, 13.88177814], [1517016660000, 0.01588864, 0.01588864, 0.01581702, 0.01584602, 3.24461168], [1517016720000, 0.01584602, 0.01588864, 0.01580203, 0.01588722, 27.56361368], [1517016780000, 0.01588864, 0.01588999, 0.01581202, 0.01581202, 18.71266431], [1517016840000, 0.01581202, 0.01581202, 0.01581202, 0.01581202, 0.4028101], [1517016900000, 0.01588922, 0.01588922, 0.01588922, 0.01588922, 3.64388905], [1517016960000, 0.01581703, 0.01588922, 0.01581703, 0.01581704, 1.35975597], [1517017020000, 0.01581704, 0.01581704, 0.01581704, 0.01581704, 0.31690902], [1517017080000, 0.01581704, 0.01588818, 0.01581703, 0.01588818, 102.15333195], [1517017140000, 0.01588818, 0.0158885, 0.01581712, 0.01583294, 8.32647079], [1517017200000, 0.01588817, 0.01588817, 0.01581709, 0.01588817, 3.89807182], [1517017260000, 0.01588817, 0.01588817, 0.01581702, 0.01581704, 7.81564667], [1517017320000, 0.015888, 0.015888, 0.01581703, 0.0158879, 4.80230767], [1517017380000, 0.01581702, 0.0158879, 0.01581702, 0.01581703, 7.3692516], [1517017440000, 0.01581703, 0.0158879, 0.01581703, 0.01581703, 4.5792153], [1517017500000, 0.0158879, 0.0158879, 0.01582201, 0.01588, 10.7603161], [1517017560000, 0.01588, 0.01588, 0.01582701, 0.01588, 15.13246859], [1517017620000, 0.01588, 0.01588, 0.01588, 0.01588, 10.23170275], [1517017680000, 0.01587999, 0.01587999, 0.01582723, 0.01582723, 1.25029556], [1517017740000, 0.01582734, 0.0158799, 0.01582734, 0.01582734, 9.34825254], [1517017800000, 0.01587918, 0.0158795, 0.01587273, 0.0158795, 4.96333245], [1517017860000, 0.01587949, 0.0158795, 0.01587949, 0.0158795, 15.36422544], [1517017920000, 0.0158795, 0.0158795, 0.01587949, 0.01587949, 3.12677167], [1517017980000, 0.0158795, 0.0158795, 0.01587949, 0.01587949, 16.13961081], [1517018040000, 0.0158795, 0.01588, 0.01587949, 0.01588, 1.01213405], [1517018100000, 0.01588, 0.01588, 0.0158795, 0.0158795, 27.37897817], [1517018160000, 0.0158795, 0.01588, 0.01582705, 0.01588, 24.93401202], [1517018220000, 0.015837, 0.01588, 0.01583201, 0.01583201, 11.03131192], [1517018280000, 0.01582706, 0.015837, 0.01582705, 0.01582705, 27.74400171], [1517018340000, 0.015837, 0.01588, 0.015837, 0.01588, 8.90338669], [1517018400000, 0.01583779, 0.01588, 0.01583779, 0.01588, 6.56548871], [1517018460000, 0.01588, 0.01588, 0.01588, 0.01588, 1.06703072], [1517018520000, 0.01588, 0.01588, 0.01583812, 0.01588, 30.56562173], [1517018580000, 0.01588, 0.01588994, 0.01584301, 0.01588994, 3.39480092], [1517018640000, 0.01588994, 0.01589909, 0.015853, 0.01585301, 35.75746577], [1517018700000, 0.01588818, 0.015916, 0.015863, 0.015916, 21.80234931], [1517018760000, 0.015916, 0.015929, 0.01585, 0.01586005, 5.1493956], [1517018820000, 0.015916, 0.015929, 0.01587605, 0.015929, 10.86446236], [1517018880000, 0.01588001, 0.01592971, 0.01588001, 0.015929, 1.16783472], [1517018940000, 0.015929, 0.01592971, 0.015929, 0.01592971, 18.43096499], [1517019000000, 0.01592971, 0.01595802, 0.01592971, 0.01595802, 3.0687385], [1517019060000, 0.01595802, 0.0159595, 0.01595802, 0.0159595, 6.53325765], [1517019120000, 0.0159595, 0.01596813, 0.0159595, 0.01595951, 3.27152764], [1517019180000, 0.01595951, 0.01597, 0.015929, 0.01597, 11.19873051], [1517019240000, 0.01595951, 0.01597, 0.0159002, 0.01596897, 15.7029834], [1517019300000, 0.0159002, 0.01596891, 0.0159002, 0.01596891, 8.93259109], [1517019360000, 0.01596851, 0.01596851, 0.01596851, 0.01596851, 0.3], [1517019420000, 0.0159002, 0.01595735, 0.0158795, 0.0159002, 4.92508825], [1517019480000, 0.0158795, 0.015933, 0.0158795, 0.01587951, 9.1773155], [1517019540000, 0.015927, 0.015927, 0.01583779, 0.015921, 34.59608766], [1517019600000, 0.015921, 0.015921, 0.01581702, 0.01581702, 10.04520722], [1517019660000, 0.01581702, 0.015827, 0.01581702, 0.015827, 12.36533837], [1517019720000, 0.015826, 0.015827, 0.01581702, 0.01581702, 6.20017931], [1517019780000, 0.015827, 0.01590259, 0.01581702, 0.01581702, 10.27565778], [1517019840000, 0.01581702, 0.015822, 0.015801, 0.015801, 18.92550288], [1517019900000, 0.015822, 0.015822, 0.015801, 0.015801, 1.09377573], [1517019960000, 0.015822, 0.015822, 0.015801, 0.015801, 23.66329055], [1517020020000, 0.015822, 0.015822, 0.015801, 0.015801, 4.26548191], [1517020080000, 0.015822, 0.015822, 0.015801, 0.015801, 4.27772342], [1517020140000, 0.015822, 0.015822, 0.0158011, 0.0158011, 9.24783069], [1517020200000, 0.0158011, 0.015822, 0.0158011, 0.015822, 6.84113134], [1517020260000, 0.015822, 0.015822, 0.015822, 0.015822, 0.45023236], [1517020320000, 0.01582199, 0.01588934, 0.0158011, 0.01588934, 46.18208305], [1517020380000, 0.01582199, 0.01588968, 0.015801, 0.0158011, 8.30478052], [1517020440000, 0.01582199, 0.01589, 0.015801, 0.01588999, 3.13611023], [1517020500000, 0.015801, 0.01588994, 0.015801, 0.015801, 13.62959458], [1517020560000, 0.01588994, 0.01588994, 0.015801, 0.015801, 24.0417115], [1517020620000, 0.01583824, 0.01588961, 0.01583824, 0.01588961, 14.35575453], [1517020680000, 0.01588961, 0.01588993, 0.015791, 0.015791, 324.50425598], [1517020740000, 0.0158383, 0.0158383, 0.015791, 0.015791, 2.08617229], [1517020800000, 0.015794, 0.015794, 0.015791, 0.015794, 6.94540177], [1517020860000, 0.015794, 0.015794, 0.01579398, 0.015794, 9.2271532], [1517020920000, 0.015794, 0.015794, 0.015791, 0.015794, 12.79504636], [1517020980000, 0.015794, 0.015794, 0.015791, 0.01579399, 9.43255347], [1517021040000, 0.015791, 0.015795, 0.015791, 0.01579499, 13.93423942], [1517021100000, 0.01579499, 0.01588367, 0.015791, 0.01588333, 16.19494831], [1517021160000, 0.015791, 0.01587333, 0.015791, 0.015791, 2.54408059], [1517021220000, 0.015791, 0.0158, 0.015791, 0.0158, 17.12780295], [1517021280000, 0.0158, 0.01587298, 0.0158, 0.01587298, 7.39199824], [1517021340000, 0.01585, 0.0158733, 0.01585, 0.01585, 6.25361209], [1517021400000, 0.0158733, 0.01588954, 0.015791, 0.01587366, 81.14762521], [1517021460000, 0.015791, 0.01587366, 0.015791, 0.01582499, 34.0978393], [1517021520000, 0.01582499, 0.01586899, 0.01582499, 0.01586899, 15.94694496], [1517021580000, 0.01586898, 0.01587362, 0.01582499, 0.01582499, 7.66447504], [1517021640000, 0.01582499, 0.01582499, 0.01582499, 0.01582499, 1.41414679], [1517021700000, 0.01582499, 0.01587358, 0.015791, 0.015791, 3.47112798], [1517021760000, 0.01587357, 0.01587357, 0.01587356, 0.01587356, 1.26819553], [1517021820000, 0.015791, 0.01587325, 0.015791, 0.01587068, 1.02284612], [1517021880000, 0.01587068, 0.015871, 0.015791, 0.015791, 3.55239467], [1517021940000, 0.01587068, 0.01587098, 0.015821, 0.015821, 1.37181769], [1517022000000, 0.01583228, 0.01587098, 0.01583228, 0.015835, 4.95060143], [1517022060000, 0.01587098, 0.01587098, 0.01584, 0.01587098, 6.63933734], [1517022120000, 0.015835, 0.015835, 0.015835, 0.015835, 36.34594461], [1517022180000, 0.015835, 0.015835, 0.015791, 0.015791, 61.53133819], [1517022240000, 0.015791, 0.015791, 0.015791, 0.015791, 0.42418928], [1517022300000, 0.015791, 0.015835, 0.015791, 0.015791, 14.70917924], [1517022360000, 0.015791, 0.01583, 0.015791, 0.01583, 0.40816897], [1517022420000, 0.01583, 0.01583, 0.01581, 0.01581, 11.29134662], [1517022480000, 0.01581, 0.01581, 0.01581, 0.01581, 5.15154786], [1517022540000, 0.01583, 0.01583, 0.01581005, 0.01581005, 1.11299773], [1517022600000, 0.01581005, 0.01583, 0.01581, 0.01582002, 155.58367378], [1517022660000, 0.01582002, 0.01582002, 0.01581, 0.01581, 14.56969018], [1517022720000, 0.015829, 0.015829, 0.01581, 0.01581, 4.44298566], [1517022780000, 0.01581, 0.01583, 0.01581, 0.01583, 6.29076712], [1517022840000, 0.0158225, 0.0158225, 0.015815, 0.015815, 7.1954857], [1517022900000, 0.015815, 0.015835, 0.015791, 0.015791, 11.76491321], [1517022960000, 0.015791, 0.015835, 0.015791, 0.015791, 8.81195799], [1517023020000, 0.015791, 0.015791, 0.015791, 0.015791, 11.7733459], [1517023080000, 0.015791, 0.015835, 0.015791, 0.015835, 2.00958669], [1517023140000, 0.015835, 0.015835, 0.015791, 0.015835, 0.3316429], [1517023200000, 0.015835, 0.01587068, 0.015813, 0.01587068, 2.80352759], [1517023260000, 0.01587068, 0.01587068, 0.015813, 0.015813, 10.94575195], [1517023320000, 0.015813, 0.015871, 0.015813, 0.015813, 6.46617194], [1517023380000, 0.015813, 0.01587067, 0.015813, 0.015813, 5.25935359], [1517023440000, 0.015813, 0.01587035, 0.01581, 0.01581, 2.0569957], [1517023500000, 0.015871, 0.015871, 0.015791, 0.015791, 3.93064728], [1517023560000, 0.01581, 0.01581, 0.01581, 0.01581, 0.49362277], [1517023620000, 0.01581, 0.01587366, 0.01581, 0.01581, 16.16245912], [1517023680000, 0.01587366, 0.01587366, 0.01581, 0.01581, 8.31296115], [1517023740000, 0.01581, 0.01584183, 0.015791, 0.01584183, 3.11743035], [1517023800000, 0.01584183, 0.01584183, 0.01584183, 0.01584183, 3.41182715], [1517023860000, 0.01584183, 0.01587333, 0.01584183, 0.01587301, 18.10153624], [1517023920000, 0.01584183, 0.01587301, 0.01583575, 0.01587301, 5.51105777], [1517023980000, 0.01584183, 0.01584183, 0.01584183, 0.01584183, 2.0], [1517024040000, 0.01584183, 0.01584183, 0.01582301, 0.01582301, 5.32164985], [1517024100000, 0.01582301, 0.01584183, 0.015791, 0.015791, 52.99260762], [1517024160000, 0.01584183, 0.01584183, 0.015791, 0.01580715, 11.97650767], [1517024220000, 0.01580715, 0.01580715, 0.015791, 0.015791, 8.47560587], [1517024280000, 0.015791, 0.01580715, 0.015791, 0.01580715, 0.61765314], [1517024340000, 0.01579101, 0.01587366, 0.01579101, 0.01579101, 1.4844914], [1517024400000, 0.01579602, 0.01587366, 0.01579101, 0.01579101, 1.3951552], [1517024460000, 0.01583233, 0.01583233, 0.01583233, 0.01583233, 1.00705224], [1517024520000, 0.01583233, 0.015855, 0.01583233, 0.015855, 24.31392579], [1517024580000, 0.015855, 0.01587366, 0.015855, 0.01587366, 11.84782963], [1517024640000, 0.01587366, 0.01588954, 0.015855, 0.015855, 8.81219813], [1517024700000, 0.0158552, 0.0158552, 0.015855, 0.0158552, 32.42590315], [1517024760000, 0.0158552, 0.01587366, 0.015855, 0.015855, 4.81145784], [1517024820000, 0.01587366, 0.01587366, 0.015855, 0.01585502, 7.1885144], [1517024880000, 0.01587366, 0.01587366, 0.015855, 0.015855, 10.00223277], [1517024940000, 0.01585502, 0.0158551, 0.015855, 0.0158551, 8.54091082], [1517025000000, 0.0158551, 0.01588954, 0.0158551, 0.01588954, 11.96643295], [1517025060000, 0.01588954, 0.01588954, 0.01585519, 0.01588953, 4.91028927], [1517025120000, 0.01588953, 0.01588954, 0.0158551, 0.01588953, 19.93151713], [1517025180000, 0.01588953, 0.01588954, 0.01579103, 0.01588954, 11.69053734], [1517025240000, 0.01588954, 0.01588954, 0.01579102, 0.01579102, 1.7706671], [1517025300000, 0.0158, 0.01589099, 0.0158, 0.01589099, 4.51457428], [1517025360000, 0.0158, 0.0158, 0.015791, 0.015791, 5.01743768], [1517025420000, 0.015791, 0.0158, 0.015791, 0.0158, 20.36876189], [1517025480000, 0.0158, 0.0158, 0.01579103, 0.01579103, 69.15352954], [1517025540000, 0.0158, 0.0158, 0.01579103, 0.0158, 32.15785404], [1517025600000, 0.0158, 0.0158, 0.015791, 0.0158, 92.03012206], [1517025660000, 0.0158, 0.0158, 0.01579551, 0.0158, 2.44550724], [1517025720000, 0.0158, 0.0158, 0.01579551, 0.0158, 10.44072226], [1517025780000, 0.01579551, 0.0158, 0.01579551, 0.0158, 0.58401462], [1517025840000, 0.01579551, 0.0158, 0.01579551, 0.01579551, 3.32520651], [1517025900000, 0.01579551, 0.01579551, 0.01579551, 0.01579551, 0.77272846], [1517025960000, 0.01579551, 0.01579551, 0.01579102, 0.01579551, 1.3133667], [1517026020000, 0.015791, 0.01579551, 0.015791, 0.01579551, 0.90162933], [1517026080000, 0.015791, 0.0157955, 0.015791, 0.015791, 2.00673959], [1517026140000, 0.0157955, 0.0157955, 0.0157955, 0.0157955, 0.24765755], [1517026200000, 0.0157955, 0.0157955, 0.0157955, 0.0157955, 1.18582948], [1517026260000, 0.0157955, 0.015885, 0.01579325, 0.01588499, 39.63132128], [1517026320000, 0.01579325, 0.0157955, 0.01579325, 0.0157955, 5.18674618], [1517026380000, 0.01579325, 0.0157955, 0.015775, 0.015775, 62.69354667], [1517026440000, 0.015775, 0.015781, 0.015775, 0.015775, 30.12295919], [1517026500000, 0.015781, 0.01586968, 0.015781, 0.01586968, 5.08059227], [1517026560000, 0.01587364, 0.01587364, 0.015775, 0.015869, 27.85290112], [1517026620000, 0.01577502, 0.01586868, 0.015775, 0.015775, 9.83301191], [1517026680000, 0.015775, 0.01586468, 0.015775, 0.01586468, 0.69219684], [1517026740000, 0.015775, 0.01586468, 0.015775, 0.0157751, 5.36918758], [1517026800000, 0.0157751, 0.01586867, 0.015775, 0.0157751, 37.39562744], [1517026860000, 0.015778, 0.015778, 0.015778, 0.015778, 5.73415749], [1517026920000, 0.015778, 0.01586865, 0.015778, 0.01586864, 2.94038226], [1517026980000, 0.01577801, 0.01586399, 0.015778, 0.015778, 11.96844108], [1517027040000, 0.0157751, 0.01586, 0.0157751, 0.015778, 2.89649551], [1517027160000, 0.01578, 0.015855, 0.01578, 0.015855, 8.00286786], [1517027220000, 0.01585899, 0.01585899, 0.015778, 0.015778, 10.53719806], [1517027280000, 0.01578, 0.01578, 0.015778, 0.01578, 6.60099367], [1517027340000, 0.01578, 0.01578, 0.015778, 0.01578, 6.9505061], [1517027400000, 0.015778, 0.015855, 0.0157751, 0.015855, 16.74360911], [1517027460000, 0.015855, 0.015855, 0.015779, 0.015779, 2.11509897], [1517027520000, 0.015779, 0.01585497, 0.015779, 0.01585497, 2.33880091], [1517027580000, 0.015779, 0.01585497, 0.015779, 0.01585497, 13.73525503], [1517027640000, 0.015779, 0.01585497, 0.0157751, 0.01585497, 15.3398101], [1517027700000, 0.015855, 0.015855, 0.01577512, 0.01577512, 8.68055075], [1517027760000, 0.01577512, 0.01585468, 0.01577512, 0.01585468, 6.75018623], [1517027820000, 0.01577513, 0.01577513, 0.01577513, 0.01577513, 1.57638176], [1517027880000, 0.01577513, 0.01577653, 0.01577513, 0.01577653, 9.16683311], [1517027940000, 0.0157766, 0.0157766, 0.01577513, 0.01577513, 14.36315852], [1517028000000, 0.01577653, 0.015854, 0.01577513, 0.015854, 16.51233022], [1517028060000, 0.015854, 0.015854, 0.01577513, 0.01577513, 34.30322745], [1517028180000, 0.01577514, 0.015864, 0.01577513, 0.01577513, 43.22727015], [1517028240000, 0.01577513, 0.01577514, 0.01577513, 0.01577514, 2.29727331], [1517028300000, 0.01577515, 0.015864, 0.01577515, 0.015864, 1.56908894], [1517028360000, 0.01577521, 0.015864, 0.0157752, 0.0157752, 5.86418446], [1517028420000, 0.0157752, 0.015869, 0.0157752, 0.0157752, 22.81967342], [1517028480000, 0.01581956, 0.01581956, 0.01581956, 0.01581956, 2.25970715], [1517028540000, 0.01586998, 0.01586998, 0.01584477, 0.01584477, 0.79221537], [1517028600000, 0.01584477, 0.01586999, 0.01584477, 0.01584477, 2.35922782], [1517028660000, 0.01584477, 0.01586999, 0.01584477, 0.01584477, 6.15229273], [1517028720000, 0.01584477, 0.015865, 0.01584477, 0.01584477, 5.81564767], [1517028780000, 0.01586999, 0.01587, 0.01584477, 0.01584477, 5.24016433], [1517028840000, 0.01587, 0.01587, 0.01584477, 0.01584477, 12.70034646], [1517028900000, 0.01584477, 0.015865, 0.01584477, 0.01584477, 1.08720146], [1517028960000, 0.015865, 0.015865, 0.0158, 0.01584477, 7.45082965], [1517029020000, 0.0158, 0.01584477, 0.0157752, 0.01584477, 16.77191568], [1517029080000, 0.0158699, 0.0158699, 0.01584477, 0.01584477, 3.14770931], [1517029140000, 0.01578, 0.0158699, 0.01578, 0.01584477, 4.50553205], [1517029200000, 0.01577521, 0.01584477, 0.01577521, 0.01578001, 12.25882734], [1517029260000, 0.01584477, 0.0158699, 0.01581238, 0.0158699, 3.07523371], [1517029320000, 0.01581238, 0.01584477, 0.01581238, 0.01584477, 2.21234511], [1517029380000, 0.01582, 0.0158699, 0.01582, 0.0158699, 1.78005339], [1517029440000, 0.0158699, 0.0158699, 0.01582, 0.01582, 3.07259871], [1517029500000, 0.01582, 0.01582, 0.01582, 0.01582, 1.10400531], [1517029560000, 0.01582, 0.01582, 0.01582, 0.01582, 1.96791399], [1517029680000, 0.0158699, 0.0158699, 0.01582, 0.01582, 25.83591361], [1517029740000, 0.01582, 0.01582, 0.01582, 0.01582, 0.63788622], [1517029800000, 0.0158425, 0.015865, 0.01582, 0.01582, 30.51412986], [1517029860000, 0.01585468, 0.01585468, 0.01582, 0.01582, 2.02225455], [1517029920000, 0.01582, 0.015865, 0.01581989, 0.01582, 9.61176854], [1517029980000, 0.015865, 0.015865, 0.01583, 0.01583, 5.67850287], [1517030040000, 0.01583, 0.01583, 0.01581989, 0.01581989, 7.25125333], [1517030100000, 0.0158199, 0.0158199, 0.0158199, 0.0158199, 0.60551014], [1517030160000, 0.0158199, 0.015895, 0.01581989, 0.01588497, 140.93317175], [1517030220000, 0.01581989, 0.01588499, 0.015775, 0.015775, 139.14636027], [1517030280000, 0.01587997, 0.01588, 0.015775, 0.01588, 7.93524188], [1517030340000, 0.01577508, 0.01577508, 0.01577501, 0.01577501, 6.0473774], [1517030400000, 0.01577503, 0.01587967, 0.01577503, 0.01582742, 8.69064318], [1517030460000, 0.01582742, 0.01587977, 0.01582742, 0.01582742, 13.04522223], [1517030520000, 0.01582742, 0.01587978, 0.01582742, 0.01587978, 5.79545245], [1517030580000, 0.01582742, 0.01587978, 0.01582742, 0.01587977, 3.25360919], [1517030640000, 0.01587977, 0.01587977, 0.01587977, 0.01587977, 6.07363915], [1517030700000, 0.01587978, 0.01587978, 0.01585, 0.01585, 5.62946696], [1517030760000, 0.01578001, 0.01587978, 0.015775, 0.015785, 14.9473081], [1517030820000, 0.015785, 0.01587978, 0.015785, 0.01587978, 5.08183569], [1517030880000, 0.01586946, 0.01586947, 0.01582749, 0.01586947, 9.53015859], [1517030940000, 0.01586946, 0.01586947, 0.01582749, 0.01582749, 6.51226091], [1517031000000, 0.01584321, 0.01584847, 0.015785, 0.015785, 60.41441131], [1517031120000, 0.01579, 0.01586915, 0.015785, 0.015785, 12.670824], [1517031180000, 0.01586867, 0.01586868, 0.015785, 0.01586867, 8.51372657], [1517031240000, 0.015868, 0.015868, 0.015868, 0.015868, 70.45011404], [1517031300000, 0.015866, 0.015868, 0.015785, 0.015866, 24.93051925], [1517031360000, 0.015866, 0.015866, 0.015785, 0.015785, 3.26686506], [1517031420000, 0.015785, 0.015868, 0.015785, 0.015868, 25.342527], [1517031480000, 0.01586799, 0.015868, 0.0157952, 0.015868, 9.09445452], [1517031540000, 0.01579521, 0.015868, 0.01579521, 0.01579521, 41.03391531], [1517031600000, 0.015868, 0.015868, 0.015805, 0.015805, 17.6363336], [1517031660000, 0.0158, 0.0158, 0.0157952, 0.0158, 43.67566731], [1517031720000, 0.01579, 0.01586799, 0.01579, 0.01586799, 9.02900341], [1517031780000, 0.01586799, 0.01586947, 0.01579501, 0.01586947, 167.6932275], [1517031840000, 0.01587499, 0.01592082, 0.015815, 0.01592082, 51.47542238], [1517031900000, 0.01592525, 0.01594658, 0.01588501, 0.01593985, 15.88799754], [1517031960000, 0.01586805, 0.01594658, 0.01586805, 0.015894, 24.54876266], [1517032020000, 0.015894, 0.0159612, 0.015894, 0.0159612, 104.03605644], [1517032080000, 0.0159612, 0.0159612, 0.015894, 0.015894, 1.98377727], [1517032140000, 0.015894, 0.01598493, 0.015894, 0.01598493, 37.09506023], [1517032200000, 0.01592902, 0.01598493, 0.01592902, 0.01594406, 5.3280375], [1517032260000, 0.0159612, 0.016, 0.01595348, 0.01595348, 10.59341148], [1517032320000, 0.01594428, 0.016, 0.01594428, 0.01596401, 18.49077666], [1517032380000, 0.01597, 0.01597, 0.01596401, 0.01596402, 5.23708973], [1517032440000, 0.01596403, 0.01599999, 0.01596403, 0.01599999, 3.06358994], [1517032500000, 0.01599999, 0.01601, 0.01597001, 0.01601, 6.55289759], [1517032560000, 0.01599, 0.01601001, 0.01599, 0.01601001, 6.59837246], [1517032620000, 0.01601, 0.01601001, 0.01601, 0.01601001, 67.41962198], [1517032680000, 0.01601001, 0.01604, 0.01597842, 0.01601, 106.63311313], [1517032740000, 0.01597844, 0.0160405, 0.01597844, 0.01601149, 76.61139899], [1517032800000, 0.01601149, 0.01603, 0.01601149, 0.0160115, 3.16764739], [1517032860000, 0.01601149, 0.0160405, 0.01601149, 0.0160115, 6.43997919], [1517032920000, 0.0160115, 0.0160405, 0.0160115, 0.0160405, 6.37421242], [1517032980000, 0.0160115, 0.01604238, 0.0160115, 0.01604238, 31.64202949], [1517033040000, 0.01604625, 0.01605109, 0.0160115, 0.01605109, 22.37631099], [1517033100000, 0.01605109, 0.01605109, 0.01605108, 0.01605109, 5.17285036], [1517033160000, 0.01605109, 0.01606, 0.01597845, 0.0160511, 27.75945505], [1517033220000, 0.01598801, 0.01605834, 0.01598801, 0.01605802, 19.86477368], [1517033280000, 0.01605834, 0.01606, 0.01597002, 0.01605, 58.1338944], [1517033340000, 0.01605, 0.0160502, 0.01605, 0.0160502, 19.25300451], [1517033400000, 0.0160502, 0.01605968, 0.0160502, 0.01605483, 2.24185951], [1517033460000, 0.01605483, 0.01605483, 0.01605, 0.01605, 24.75737896], [1517033520000, 0.01605968, 0.01606, 0.01598001, 0.01598001, 15.33419467], [1517033580000, 0.01605968, 0.01606, 0.01601808, 0.01601808, 6.35513417], [1517033640000, 0.01601808, 0.01601808, 0.015985, 0.015985, 2.39004718], [1517033700000, 0.01601808, 0.01601808, 0.015985, 0.01601808, 9.59761972], [1517033760000, 0.01601808, 0.01606, 0.01601808, 0.01606, 17.39331393], [1517033820000, 0.01598501, 0.01606, 0.015953, 0.01606, 41.83876667], [1517033880000, 0.015985, 0.0159855, 0.01598051, 0.01598051, 19.98733533], [1517033940000, 0.01598051, 0.0159855, 0.01598051, 0.0159855, 3.78224106], [1517034000000, 0.0159855, 0.0159855, 0.01598524, 0.01598524, 0.91357404], [1517034060000, 0.01598524, 0.01598524, 0.01598524, 0.01598524, 1.56399994], [1517034120000, 0.01598524, 0.01604884, 0.01598524, 0.01604884, 12.74424084], [1517034180000, 0.01600075, 0.01600075, 0.0159853, 0.01600074, 4.90950508], [1517034240000, 0.0159853, 0.01600074, 0.01598524, 0.01600074, 2.75129246], [1517034300000, 0.01598525, 0.01600075, 0.01598524, 0.01598524, 17.16581983], [1517034360000, 0.01604884, 0.01604884, 0.01598524, 0.01598524, 1.42012809], [1517034420000, 0.01604884, 0.01604884, 0.01598525, 0.01598525, 1.74908676], [1517034480000, 0.01604852, 0.01604852, 0.01598525, 0.01598525, 6.6234154], [1517034540000, 0.01603968, 0.01604884, 0.01603968, 0.01604, 12.14243289], [1517034600000, 0.01604, 0.01604, 0.01603968, 0.01603968, 8.8487044], [1517034660000, 0.01603968, 0.01604, 0.01599299, 0.01599299, 5.38604878], [1517034720000, 0.01599299, 0.016, 0.01599299, 0.01599299, 2.82173098], [1517034780000, 0.016, 0.01603999, 0.016, 0.01603999, 0.53451554], [1517034840000, 0.01599299, 0.01599299, 0.01599298, 0.01599298, 2.15617434], [1517034900000, 0.01599298, 0.01599299, 0.01599298, 0.01599299, 3.60298156], [1517034960000, 0.015993, 0.016039, 0.01599299, 0.016039, 68.42210703], [1517035020000, 0.016039, 0.0160495, 0.01599379, 0.01599379, 57.48868026], [1517035080000, 0.01599379, 0.01606, 0.01598525, 0.01606, 3.70914249], [1517035140000, 0.01606, 0.01606, 0.01598524, 0.01606, 56.92624082], [1517035200000, 0.01606, 0.01606, 0.01599009, 0.01599009, 16.53865534], [1517035260000, 0.01599009, 0.01604394, 0.01599009, 0.01602599, 6.97072526], [1517035320000, 0.01604394, 0.01606, 0.01602599, 0.01602599, 11.34672049], [1517035380000, 0.01606, 0.01606273, 0.01606, 0.01606273, 5.55564521], [1517035440000, 0.01606139, 0.01606273, 0.01602604, 0.01606139, 8.68860254], [1517035500000, 0.01606139, 0.01607, 0.01602604, 0.01606273, 6.97550788], [1517035560000, 0.01607, 0.01607, 0.01606139, 0.0160614, 1.95551982], [1517035620000, 0.0160614, 0.01607, 0.01606139, 0.01607, 27.11724189], [1517035680000, 0.016071, 0.016071, 0.01607, 0.01607, 5.47931909], [1517035740000, 0.01606139, 0.0160614, 0.01606139, 0.0160614, 3.59285675], [1517035800000, 0.01606139, 0.0160614, 0.01602, 0.0160614, 13.2522492], [1517035860000, 0.0160614, 0.016079, 0.0160614, 0.0160614, 24.30396334], [1517035920000, 0.0160614, 0.01607899, 0.0160614, 0.0160614, 17.57177822], [1517035980000, 0.0160614, 0.01607867, 0.0160614, 0.0160614, 21.41946384], [1517036040000, 0.0160614, 0.01607867, 0.0160614, 0.01607867, 0.16237456], [1517036100000, 0.0160614, 0.01607899, 0.0160614, 0.01607899, 14.81638496], [1517036160000, 0.01607899, 0.01607899, 0.0160614, 0.01606141, 13.59638165], [1517036220000, 0.01606141, 0.01607868, 0.01606141, 0.01607868, 14.58219416], [1517036280000, 0.01606141, 0.01606141, 0.01606141, 0.01606141, 1.97499471], [1517036340000, 0.01607836, 0.01607836, 0.01606141, 0.01606141, 1.7441955], [1517036400000, 0.01606141, 0.01606141, 0.0160614, 0.0160614, 11.74621357], [1517036460000, 0.01606141, 0.01607804, 0.01606141, 0.01606972, 2.70695696], [1517036520000, 0.01607804, 0.016079, 0.01606972, 0.01606972, 12.72771296], [1517036580000, 0.01606972, 0.016079, 0.01606972, 0.01606978, 23.64135328], [1517036640000, 0.01606978, 0.016079, 0.01606972, 0.01606972, 1.98027698], [1517036700000, 0.016079, 0.016079, 0.01606972, 0.01606972, 5.19906514], [1517036760000, 0.016079, 0.01608825, 0.015993, 0.01608825, 12.22742002], [1517036820000, 0.016079, 0.01608825, 0.01599303, 0.01599801, 36.79299739], [1517036880000, 0.01599301, 0.01607068, 0.01599301, 0.01599301, 4.92562762], [1517036940000, 0.01607068, 0.01607068, 0.01607068, 0.01607068, 0.20935364], [1517037000000, 0.01607068, 0.01607068, 0.016, 0.016, 5.53918464], [1517037060000, 0.016, 0.016, 0.016, 0.016, 1.69610159], [1517037120000, 0.016, 0.016067, 0.016, 0.016, 2.45525175], [1517037180000, 0.016, 0.01607004, 0.015993, 0.015993, 5.5056303], [1517037240000, 0.016, 0.01607004, 0.016, 0.01607004, 0.46387555], [1517037300000, 0.01606972, 0.01606972, 0.015993, 0.015998, 25.03707316], [1517037360000, 0.015998, 0.015998, 0.015993, 0.015993, 1.94234239], [1517037420000, 0.015993, 0.01606972, 0.01597901, 0.01598401, 36.35216944], [1517037480000, 0.015989, 0.0160694, 0.01598403, 0.0160694, 9.67635223], [1517037540000, 0.0160694, 0.01606972, 0.0160694, 0.01606972, 1.71514915], [1517037600000, 0.01598911, 0.0160694, 0.01598911, 0.01599501, 8.38136457], [1517037660000, 0.016, 0.01606935, 0.016, 0.01606935, 2.98553535], [1517037720000, 0.01606934, 0.01606967, 0.01606934, 0.01606967, 6.97038674], [1517037780000, 0.01606967, 0.01606967, 0.01606934, 0.01606934, 2.84757876], [1517037840000, 0.01606967, 0.01606967, 0.01606934, 0.01606967, 4.37950536], [1517037900000, 0.01606934, 0.01606967, 0.01600001, 0.01600001, 18.30490583], [1517037960000, 0.01606934, 0.01606934, 0.01606934, 0.01606934, 24.32010805], [1517038020000, 0.01600001, 0.01606934, 0.01600001, 0.01606932, 32.20232427], [1517038080000, 0.01606932, 0.01606932, 0.01600001, 0.01606932, 3.70516353], [1517038140000, 0.01606932, 0.01606932, 0.01600004, 0.01600004, 8.17897616], [1517038200000, 0.01600014, 0.016069, 0.01600003, 0.01600005, 3.90621568], [1517038260000, 0.01600007, 0.016069, 0.01600007, 0.016069, 3.4500881], [1517038320000, 0.016069, 0.016069, 0.01600002, 0.01600002, 2.47664816], [1517038380000, 0.01600003, 0.016068, 0.01600001, 0.01600002, 2.26610179], [1517038440000, 0.01606, 0.01606, 0.01600002, 0.01600002, 4.6644833], [1517038500000, 0.01606, 0.01606, 0.01606, 0.01606, 0.06890622], [1517038560000, 0.01605, 0.01606, 0.01600004, 0.01600004, 4.43317311], [1517038620000, 0.01600005, 0.01605968, 0.01600004, 0.01600005, 8.64072815], [1517038680000, 0.01600005, 0.01600005, 0.01600005, 0.01600005, 0.56594386], [1517038740000, 0.01600004, 0.01600004, 0.01600004, 0.01600004, 5.11387152], [1517038800000, 0.01600005, 0.01605968, 0.01597019, 0.016, 63.41749929], [1517038860000, 0.016, 0.016, 0.01598004, 0.016, 2.48619188], [1517038920000, 0.01598006, 0.01603935, 0.01596101, 0.01603935, 20.35255893], [1517038980000, 0.016, 0.01603935, 0.015966, 0.015983, 12.9788599], [1517039040000, 0.01598301, 0.01603935, 0.01598301, 0.01603933, 13.84194052], [1517039100000, 0.01603933, 0.01603933, 0.01600001, 0.01603933, 1.53050226], [1517039160000, 0.01600006, 0.01603933, 0.01600006, 0.01603933, 1.19574961], [1517039220000, 0.01600007, 0.01603933, 0.01600007, 0.01603933, 4.54673356], [1517039280000, 0.01603933, 0.01606, 0.015978, 0.01598301, 27.65235199], [1517039340000, 0.01606, 0.01606768, 0.01606, 0.01606768, 2.1953015], [1517039400000, 0.01606, 0.016068, 0.01606, 0.01606768, 10.24260552], [1517039460000, 0.0160677, 0.016068, 0.01606768, 0.01606768, 10.90690152], [1517039520000, 0.01606768, 0.016068, 0.01606768, 0.01606768, 24.68133851], [1517039580000, 0.01606799, 0.01606799, 0.01606768, 0.01606768, 0.58394614], [1517039640000, 0.01606768, 0.01606768, 0.01606768, 0.01606768, 0.52935919], [1517039700000, 0.016068, 0.01606968, 0.01598646, 0.01598646, 2.71571724], [1517039760000, 0.01606968, 0.01606968, 0.01598651, 0.01598651, 5.74348041], [1517039880000, 0.01606968, 0.01606968, 0.01598657, 0.01598659, 2.40697199], [1517039940000, 0.01606968, 0.01606968, 0.016, 0.016, 1.25492148], [1517040000000, 0.01606936, 0.01606936, 0.01599706, 0.016067, 2.7831759], [1517040060000, 0.01606936, 0.01606936, 0.01606936, 0.01606936, 0.1714524], [1517040120000, 0.016, 0.01606904, 0.016, 0.016, 1.27309131], [1517040180000, 0.016, 0.016, 0.016, 0.016, 1.3152179], [1517040240000, 0.01599706, 0.01599706, 0.01599706, 0.01599706, 2.7611728], [1517040300000, 0.016, 0.01606935, 0.01599706, 0.01606904, 7.14710341], [1517040360000, 0.01599706, 0.01599706, 0.01599706, 0.01599706, 4.6059179], [1517040420000, 0.01599706, 0.016064, 0.01599703, 0.01599705, 10.29225911], [1517040480000, 0.016064, 0.01606871, 0.01599203, 0.01599203, 5.59181593], [1517040540000, 0.016064, 0.016064, 0.016056, 0.016056, 6.48388024], [1517040600000, 0.01606368, 0.01606871, 0.016056, 0.016056, 46.01120442], [1517040660000, 0.01606871, 0.01606871, 0.01598646, 0.01606871, 34.96843667], [1517040720000, 0.01598646, 0.01606871, 0.01598646, 0.01606839, 9.17733461], [1517040780000, 0.01598651, 0.01598651, 0.01598651, 0.01598651, 1.40260311], [1517040840000, 0.01606807, 0.01606807, 0.01598651, 0.01598651, 5.38301893], [1517040900000, 0.01598651, 0.01606871, 0.01598651, 0.01606839, 7.86873783], [1517040960000, 0.01606838, 0.01606839, 0.015929, 0.0160205, 42.40873412], [1517041020000, 0.0160205, 0.016085, 0.0160205, 0.016077, 85.79692844], [1517041080000, 0.016077, 0.016077, 0.01596, 0.01599, 3.3760087], [1517041140000, 0.01597504, 0.015985, 0.01597504, 0.015985, 3.86090682], [1517041200000, 0.01599002, 0.01608468, 0.01598, 0.01598, 7.73824856], [1517041260000, 0.01608468, 0.01608468, 0.01608436, 0.01608436, 8.24370499], [1517041320000, 0.01608435, 0.01608435, 0.01597501, 0.01598002, 3.09674641], [1517041380000, 0.01599001, 0.01599001, 0.01597502, 0.01598503, 1.96587078], [1517041440000, 0.01599001, 0.01608468, 0.01599001, 0.01599004, 7.25467899], [1517041500000, 0.016079, 0.01608404, 0.01598005, 0.01599001, 4.66127107], [1517041560000, 0.01599001, 0.01599002, 0.01598004, 0.01599001, 4.57318104], [1517041620000, 0.01599001, 0.01600362, 0.01596049, 0.01598001, 5.84886165], [1517041680000, 0.01607868, 0.01607868, 0.01598105, 0.016, 6.98488841], [1517041740000, 0.016, 0.016074, 0.01597684, 0.01598201, 2.58765296], [1517041800000, 0.01598202, 0.01606968, 0.01598202, 0.01606868, 19.35978185], [1517041860000, 0.01599, 0.01606867, 0.01599, 0.01599, 26.53669372], [1517041920000, 0.016065, 0.01606832, 0.01599, 0.01606493, 2.07838836], [1517041980000, 0.01606493, 0.01606788, 0.0159585, 0.0159585, 4.62215821], [1517042040000, 0.01599, 0.01606325, 0.01599, 0.01606325, 1.67294975], [1517042100000, 0.01599, 0.01606832, 0.01599, 0.01606325, 12.75641134], [1517042160000, 0.0160429, 0.01606799, 0.01599, 0.01606325, 12.42827246], [1517042220000, 0.01599, 0.01599, 0.01595863, 0.01599, 15.33524728], [1517042280000, 0.01599, 0.01608404, 0.015976, 0.01598101, 9.24429231], [1517042340000, 0.01607867, 0.01608404, 0.01598601, 0.01608404, 18.06131903], [1517042400000, 0.01608404, 0.01608404, 0.01607999, 0.01607999, 9.36101864], [1517042460000, 0.01607999, 0.01608404, 0.015975, 0.01608404, 21.00436142], [1517042520000, 0.01599001, 0.01599001, 0.01599001, 0.01599001, 4.08164041], [1517042580000, 0.01599004, 0.01608403, 0.01599004, 0.01608403, 2.539964], [1517042640000, 0.01608403, 0.01608403, 0.01599007, 0.01599007, 5.20140784], [1517042700000, 0.01599401, 0.01608402, 0.01599401, 0.01599401, 11.4651936], [1517042760000, 0.01608402, 0.01608403, 0.01608402, 0.01608403, 4.60014773], [1517042820000, 0.01597004, 0.01608403, 0.01597004, 0.016084, 4.50373094], [1517042880000, 0.016084, 0.01608403, 0.016084, 0.016084, 20.16811024], [1517042940000, 0.01608403, 0.01608404, 0.01608403, 0.01608403, 9.27703369], [1517043000000, 0.01608403, 0.01608436, 0.01608403, 0.01608436, 13.12094866], [1517043060000, 0.01608403, 0.01608436, 0.01608403, 0.01608431, 13.52414867], [1517043120000, 0.01608431, 0.01608431, 0.01608431, 0.01608431, 0.93676608], [1517043180000, 0.01608435, 0.01608436, 0.01608431, 0.01608431, 5.54604489], [1517043240000, 0.01608431, 0.01608431, 0.01599001, 0.01599001, 0.8127225], [1517043300000, 0.01599001, 0.01608436, 0.01599001, 0.01608436, 3.1947148], [1517043360000, 0.01608436, 0.01608436, 0.01608436, 0.01608436, 11.35669615], [1517043420000, 0.01608436, 0.01608436, 0.01608436, 0.01608436, 0.1], [1517043480000, 0.01608436, 0.01608436, 0.01608404, 0.01608404, 1.096389], [1517043540000, 0.01600001, 0.01600001, 0.01600001, 0.01600001, 9.46540677], [1517043600000, 0.01600002, 0.01608404, 0.01600002, 0.01608404, 1.7066821], [1517043660000, 0.01608404, 0.01608404, 0.0160837, 0.0160837, 0.68391055], [1517043720000, 0.01608308, 0.01608308, 0.01600003, 0.01600003, 8.57895276], [1517043780000, 0.01608308, 0.01608308, 0.01600003, 0.01608308, 3.25093467], [1517043900000, 0.01608276, 0.0160834, 0.01600201, 0.0160834, 19.09248726], [1517043960000, 0.0160021, 0.01600266, 0.0160021, 0.01600266, 5.06783], [1517044020000, 0.016083, 0.0160834, 0.016083, 0.016083, 4.93798323], [1517044080000, 0.0160834, 0.0160834, 0.016083, 0.016083, 2.34188062], [1517044140000, 0.016083, 0.016083, 0.01600002, 0.01600002, 10.06511498], [1517044200000, 0.01608435, 0.01608436, 0.01600258, 0.01608435, 13.66433586], [1517044260000, 0.01608435, 0.01608436, 0.01608435, 0.01608435, 3.8503103], [1517044320000, 0.01608427, 0.01608427, 0.01600002, 0.01600002, 7.50196962], [1517044380000, 0.01600002, 0.01600002, 0.01598501, 0.01600002, 47.4033666], [1517044440000, 0.015985, 0.01600002, 0.015985, 0.01600002, 12.61171199], [1517044500000, 0.0159872, 0.0160539, 0.01598, 0.0159872, 7.22517674], [1517044560000, 0.0159872, 0.0159872, 0.0159872, 0.0159872, 0.90075859], [1517044620000, 0.0160539, 0.0160539, 0.0160539, 0.0160539, 0.18885824], [1517044680000, 0.0159872, 0.0159872, 0.0159872, 0.0159872, 0.43573664], [1517044740000, 0.016, 0.0160539, 0.016, 0.016, 12.68058111], [1517044800000, 0.016, 0.0160539, 0.016, 0.016, 3.63618443], [1517044860000, 0.0160539, 0.0160539, 0.016, 0.016, 2.06295808], [1517044920000, 0.016, 0.016, 0.016, 0.016, 0.401], [1517044980000, 0.016, 0.016, 0.016, 0.016, 0.26019803], [1517045040000, 0.016002, 0.016002, 0.016002, 0.016002, 10.269766], [1517045100000, 0.016002, 0.01605388, 0.016, 0.016, 28.7641685], [1517045220000, 0.01605199, 0.0160539, 0.01605199, 0.0160539, 7.4302399], [1517045280000, 0.01605389, 0.01605389, 0.01598721, 0.01598721, 2.50957317], [1517045340000, 0.0159872, 0.01608435, 0.0159872, 0.016081, 30.09216148], [1517045400000, 0.01605391, 0.01608435, 0.0160539, 0.01608098, 9.28321687], [1517045460000, 0.01608098, 0.01608098, 0.0160539, 0.0160539, 30.81537235], [1517045520000, 0.0160539, 0.01608095, 0.0160539, 0.01608095, 6.70852282], [1517045580000, 0.01608095, 0.01608436, 0.0160539, 0.0160539, 11.81149762], [1517045640000, 0.0160539, 0.016081, 0.0160539, 0.0160539, 4.87972585], [1517045700000, 0.0160539, 0.016081, 0.0160539, 0.01608068, 6.04202542], [1517045760000, 0.01608068, 0.016081, 0.01608068, 0.01608068, 5.36855956], [1517045820000, 0.01608068, 0.016081, 0.0160539, 0.01608068, 1.44126969], [1517045880000, 0.0160539, 0.01608068, 0.0160539, 0.01608068, 0.70326371], [1517045940000, 0.01608068, 0.01608436, 0.01608068, 0.01608436, 9.2986881], [1517046000000, 0.016081, 0.01608436, 0.0160539, 0.01608436, 3.50353228], [1517046060000, 0.0160539, 0.01608436, 0.0160539, 0.0160539, 23.05871177], [1517046120000, 0.0160539, 0.01608899, 0.0160539, 0.01608899, 6.89439279], [1517046180000, 0.01608899, 0.016091, 0.0160539, 0.016091, 117.53679053], [1517046240000, 0.0160539, 0.01609063, 0.0160539, 0.016054, 13.89908907], [1517046300000, 0.016054, 0.016091, 0.0160539, 0.0160539, 68.30978528], [1517046360000, 0.0160539, 0.016091, 0.0160539, 0.0160539, 31.20705158], [1517046420000, 0.01609, 0.01609, 0.0160539, 0.01609, 33.36850363], [1517046480000, 0.0160539, 0.0160539, 0.0160539, 0.0160539, 0.1373498], [1517046540000, 0.0160539, 0.01608996, 0.0160539, 0.0160539, 129.22171764], [1517046600000, 0.0160539, 0.01608985, 0.0160539, 0.0160539, 28.06790228], [1517046660000, 0.0160539, 0.01608175, 0.0160539, 0.0160539, 8.07788051], [1517046720000, 0.0160539, 0.01608175, 0.0160539, 0.0160539, 286.71015219], [1517046780000, 0.0160539, 0.0160817, 0.0160539, 0.0160539, 46.83748308], [1517046840000, 0.0160539, 0.01608174, 0.0160539, 0.016054, 21.56046426], [1517046900000, 0.01608174, 0.01608174, 0.0160539, 0.01605394, 45.59595747], [1517046960000, 0.01605394, 0.01605394, 0.01605394, 0.01605394, 21.17117667], [1517047020000, 0.016054, 0.0160585, 0.016054, 0.016054, 1.37556012], [1517047080000, 0.01608174, 0.01608174, 0.016054, 0.016054, 7.58979094], [1517047140000, 0.01605401, 0.0160816, 0.016054, 0.0160816, 6.55019499], [1517047200000, 0.0160816, 0.0160816, 0.016054, 0.016077, 4.90261064], [1517047260000, 0.016077, 0.0160816, 0.016054, 0.016054, 0.87536428], [1517047320000, 0.016054, 0.016054, 0.016054, 0.016054, 28.11178701], [1517047380000, 0.016054, 0.016077, 0.016054, 0.01605404, 40.61338714], [1517047440000, 0.016077, 0.016077, 0.01605404, 0.01605404, 11.23369268], [1517047500000, 0.01605405, 0.01605405, 0.01605404, 0.01605404, 8.45456635], [1517047560000, 0.01605404, 0.01605405, 0.01605404, 0.01605405, 7.56487299], [1517047620000, 0.01605405, 0.0160769, 0.01605404, 0.0160769, 27.16508281], [1517047680000, 0.01605405, 0.01605405, 0.01605405, 0.01605405, 0.69888657], [1517047740000, 0.01605405, 0.01607689, 0.01605404, 0.01605405, 8.97664978], [1517047800000, 0.01607688, 0.01607689, 0.01605405, 0.01605405, 15.37945866], [1517047860000, 0.01607689, 0.01608159, 0.01605405, 0.01605405, 42.27422344], [1517047920000, 0.01608157, 0.01608157, 0.01605404, 0.01605404, 20.01177973], [1517047980000, 0.01605404, 0.01608155, 0.01605404, 0.01605404, 3.80009769], [1517048040000, 0.01608155, 0.01608155, 0.016054, 0.01608153, 42.07812383], [1517048100000, 0.016054, 0.016054, 0.0160539, 0.0160539, 30.41149583], [1517048160000, 0.0160539, 0.0160539, 0.0160539, 0.0160539, 6.38088792], [1517048220000, 0.0160539, 0.016054, 0.0160539, 0.0160539, 6.32498696], [1517048280000, 0.0160539, 0.016054, 0.0160539, 0.0160539, 62.82539017], [1517048340000, 0.0160539, 0.0160539, 0.0160539, 0.0160539, 174.91148292], [1517048400000, 0.0160539, 0.016054, 0.01598722, 0.01605398, 93.33974779], [1517048460000, 0.01598722, 0.01605398, 0.01598722, 0.01598722, 8.22764831], [1517048520000, 0.01604895, 0.01604895, 0.01598722, 0.01598722, 17.54072829], [1517048580000, 0.0160389, 0.0160389, 0.01599724, 0.016029, 7.79551458], [1517048640000, 0.01602898, 0.01602898, 0.01598722, 0.01601667, 14.99230462], [1517048700000, 0.01601667, 0.01601667, 0.01598722, 0.01601667, 55.07546187], [1517048760000, 0.01598722, 0.01601667, 0.01598722, 0.01598722, 8.58274254], [1517048820000, 0.01598722, 0.01601663, 0.01598721, 0.01601663, 8.85714235], [1517048880000, 0.01601663, 0.01601663, 0.01597504, 0.01597504, 35.79072977], [1517048940000, 0.01597505, 0.01597505, 0.01597504, 0.01597504, 9.5711492], [1517049000000, 0.01597504, 0.01601643, 0.01597504, 0.01597504, 4.64167435], [1517049060000, 0.01597504, 0.01600699, 0.01595742, 0.01597373, 4.63661042], [1517049120000, 0.01595742, 0.01597373, 0.01591402, 0.01591402, 14.70284751], [1517049180000, 0.01591402, 0.01591402, 0.01591402, 0.01591402, 12.2248738], [1517049240000, 0.01597663, 0.01597663, 0.015914, 0.015914, 6.46416371], [1517049300000, 0.0159145, 0.016034, 0.015914, 0.015914, 75.06828055], [1517049360000, 0.01595383, 0.01595383, 0.015914, 0.015914, 13.79499763], [1517049420000, 0.0159538, 0.0159538, 0.0159525, 0.0159525, 3.38389605], [1517049480000, 0.0159525, 0.0159525, 0.01591401, 0.0159525, 16.34627963], [1517049540000, 0.0159525, 0.0159525, 0.01591401, 0.01591401, 7.91072912], [1517049600000, 0.01591401, 0.0159538, 0.01591401, 0.01591401, 6.0485166], [1517049660000, 0.01591401, 0.0159538, 0.01591401, 0.0159538, 2.90967184], [1517049720000, 0.01591402, 0.0159538, 0.01591402, 0.0159538, 1.70737507], [1517049780000, 0.0159538, 0.0159538, 0.0159538, 0.0159538, 6.23855662], [1517049840000, 0.01591756, 0.01591756, 0.01591756, 0.01591756, 4.29600892], [1517049900000, 0.0159538, 0.0159538, 0.01591756, 0.0159538, 6.01881605], [1517049960000, 0.0159538, 0.0159538, 0.01593, 0.0159538, 5.10503645], [1517050020000, 0.0159538, 0.0159538, 0.01593, 0.01593, 0.59656063], [1517050080000, 0.0159528, 0.01595379, 0.01593, 0.01593, 8.15112178], [1517050140000, 0.01595379, 0.01595379, 0.01593, 0.01593, 7.53678458], [1517050200000, 0.01593, 0.01595378, 0.01593, 0.01593, 3.33520003], [1517050260000, 0.01593, 0.01593, 0.015914, 0.015914, 189.38306296], [1517050320000, 0.01591399, 0.015914, 0.0159, 0.015914, 7.90524251], [1517050380000, 0.0159, 0.0159005, 0.0159, 0.0159, 1.55131648], [1517050440000, 0.0159, 0.01591399, 0.01589291, 0.01591399, 3.0394599], [1517050500000, 0.01591399, 0.01591399, 0.01589015, 0.01589015, 17.15924413], [1517050560000, 0.01589014, 0.01589014, 0.01589, 0.01589014, 3.80585306], [1517050620000, 0.01589014, 0.01589014, 0.015887, 0.01589014, 9.97857673], [1517050680000, 0.01589014, 0.01589014, 0.01589014, 0.01589014, 0.91343912], [1517050740000, 0.01589014, 0.01589014, 0.015832, 0.015832, 11.48131068], [1517050800000, 0.0158901, 0.01589014, 0.01584247, 0.01589014, 11.71600472], [1517050860000, 0.01589014, 0.01589014, 0.01584247, 0.01584247, 0.81934392], [1517050920000, 0.01589014, 0.01589014, 0.01589014, 0.01589014, 2.69192184], [1517050980000, 0.01589015, 0.01591399, 0.01589014, 0.01591399, 4.12777923], [1517051040000, 0.01591399, 0.01591399, 0.015848, 0.01589014, 0.8083472], [1517051100000, 0.01591399, 0.015914, 0.0159, 0.015914, 108.43984315], [1517051160000, 0.015914, 0.015914, 0.01589014, 0.01589014, 6.81128542], [1517051220000, 0.015914, 0.01595383, 0.015848, 0.01595383, 15.11936308], [1517051280000, 0.0158901, 0.01589014, 0.01584801, 0.01589014, 1.18907664], [1517051340000, 0.01589014, 0.01589014, 0.01589014, 0.01589014, 1.14617911], [1517051400000, 0.01589014, 0.015944, 0.01589, 0.015944, 4.85299158], [1517051460000, 0.0158901, 0.01589014, 0.01589, 0.01589, 7.84176236], [1517051520000, 0.01587413, 0.01589014, 0.01584247, 0.01589014, 34.78817322], [1517051580000, 0.01584247, 0.01589, 0.01582644, 0.01589, 34.0507085], [1517051640000, 0.01589, 0.01589, 0.01589, 0.01589, 3.91425513], [1517051700000, 0.01589, 0.01589, 0.01582644, 0.01589, 12.16646085], [1517051760000, 0.01588999, 0.01589014, 0.015844, 0.01589, 82.87230673], [1517051820000, 0.01589, 0.01595381, 0.015859, 0.01589, 6.52143267], [1517051880000, 0.01589, 0.01595383, 0.01586152, 0.01586703, 38.2752343], [1517051940000, 0.01595383, 0.01595383, 0.01595383, 0.01595383, 1.65560655], [1517052000000, 0.01595383, 0.01595383, 0.01588232, 0.01588232, 5.69594143], [1517052060000, 0.01588237, 0.01595383, 0.01588237, 0.01595383, 22.68268955], [1517052120000, 0.01595383, 0.01595383, 0.01590907, 0.01595383, 43.17759909], [1517052180000, 0.0159091, 0.01595383, 0.0159091, 0.01595383, 15.52113356], [1517052240000, 0.01592515, 0.01595382, 0.01592019, 0.01595382, 2.49642878], [1517052300000, 0.01595382, 0.01595383, 0.01592573, 0.01595383, 24.0783316], [1517052360000, 0.01595383, 0.01595383, 0.01595382, 0.01595383, 40.14621921], [1517052420000, 0.01595382, 0.01595383, 0.01595382, 0.01595383, 12.84512155], [1517052480000, 0.01595382, 0.01595383, 0.01595382, 0.01595382, 6.91889067], [1517052540000, 0.01595383, 0.01595383, 0.01595382, 0.01595382, 18.44288177], [1517052600000, 0.01595383, 0.01595383, 0.01595382, 0.01595382, 8.41803996], [1517052660000, 0.01595382, 0.01595383, 0.01592551, 0.01595383, 55.21333478], [1517052720000, 0.01595383, 0.016, 0.0159255, 0.016, 209.62323025], [1517052780000, 0.016, 0.016, 0.01595506, 0.016, 10.76822101], [1517052840000, 0.016, 0.016, 0.01595872, 0.01595872, 7.11275878], [1517052900000, 0.0159999, 0.0159999, 0.01595872, 0.01595872, 5.66683995], [1517052960000, 0.0159999, 0.016, 0.0159999, 0.0159999, 14.83089017], [1517053020000, 0.0159999, 0.016, 0.0159999, 0.0159999, 6.84670438], [1517053080000, 0.0159999, 0.016, 0.0159999, 0.0159999, 12.66377463], [1517053140000, 0.016, 0.016, 0.0159999, 0.016, 15.67455883], [1517053200000, 0.0159999, 0.016, 0.0159999, 0.016, 34.83045498], [1517053260000, 0.016, 0.016, 0.0159999, 0.016, 2.65592109], [1517053320000, 0.016, 0.016, 0.0159999, 0.0159999, 0.67197632], [1517053380000, 0.016, 0.016, 0.016, 0.016, 3.05005577], [1517053440000, 0.016, 0.016, 0.0159999, 0.0159999, 22.22911506], [1517053500000, 0.016, 0.016, 0.016, 0.016, 18.02381731], [1517053560000, 0.0159999, 0.016, 0.01597846, 0.01597846, 1.26511729], [1517053620000, 0.016, 0.016, 0.01597846, 0.016, 4.49587539], [1517053680000, 0.01597846, 0.016, 0.01597846, 0.016, 3.80819337], [1517053740000, 0.016, 0.016, 0.01597846, 0.016, 5.53302801], [1517053800000, 0.01597846, 0.016, 0.01597846, 0.016, 1.82320578], [1517053860000, 0.016, 0.016, 0.01595463, 0.01595463, 8.59674787], [1517053920000, 0.01592551, 0.016, 0.01592551, 0.016, 12.49393927], [1517053980000, 0.016, 0.016, 0.0159315, 0.016, 14.96889878], [1517054040000, 0.0159315, 0.0159315, 0.0159315, 0.0159315, 3.77612165], [1517054100000, 0.016, 0.016, 0.01592599, 0.01592599, 24.70462372], [1517054160000, 0.016, 0.016, 0.016, 0.016, 8.02008513], [1517054220000, 0.016, 0.016, 0.01599999, 0.016, 7.68840236], [1517054280000, 0.0159502, 0.0159502, 0.0159502, 0.0159502, 0.55184406], [1517054340000, 0.0159502, 0.0159502, 0.01595, 0.01595, 9.2585089], [1517054400000, 0.0159502, 0.016, 0.0159502, 0.016, 7.99299104], [1517054460000, 0.016, 0.016, 0.0159503, 0.016, 2.46292732], [1517054520000, 0.0159503, 0.016, 0.0159502, 0.016, 6.5212192], [1517054580000, 0.0159502, 0.016, 0.01592551, 0.01592551, 1.74293138], [1517054640000, 0.016, 0.016, 0.01592551, 0.016, 6.43364247], [1517054700000, 0.015965, 0.015965, 0.01596, 0.01596, 4.58124655], [1517054760000, 0.015965, 0.015965, 0.01596, 0.015965, 21.54320128], [1517054820000, 0.015975, 0.015975, 0.01592553, 0.01592553, 53.83802744], [1517054880000, 0.015975, 0.015975, 0.01592552, 0.01592555, 2.54641391], [1517054940000, 0.015975, 0.015975, 0.01592553, 0.01593101, 2.9111656], [1517055000000, 0.015975, 0.016, 0.01592552, 0.016, 21.85963538], [1517055060000, 0.01592553, 0.01594, 0.01592553, 0.01594, 4.15495815], [1517055120000, 0.01596996, 0.01596996, 0.01592553, 0.01594, 5.9778932], [1517055180000, 0.01594, 0.01594, 0.01592599, 0.01592599, 18.67160595], [1517055240000, 0.01594, 0.01594655, 0.01592553, 0.01594655, 34.2630916], [1517055300000, 0.01594655, 0.015984, 0.015931, 0.015984, 42.59815133], [1517055360000, 0.015983, 0.015984, 0.01593101, 0.015983, 7.16294642], [1517055420000, 0.015983, 0.015983, 0.015905, 0.01593103, 29.37810221], [1517055480000, 0.015983, 0.01599953, 0.015983, 0.01599953, 15.88290139], [1517055540000, 0.015984, 0.01599999, 0.015984, 0.01599994, 17.23978609], [1517055600000, 0.01599994, 0.01599999, 0.01599994, 0.01599994, 18.48061493], [1517055660000, 0.01599994, 0.01599994, 0.01592403, 0.01599994, 12.34356378], [1517055720000, 0.01599994, 0.01599999, 0.01599444, 0.01599999, 16.171439], [1517055780000, 0.01599999, 0.01599999, 0.01599994, 0.01599994, 19.80917983], [1517055840000, 0.01599999, 0.01599999, 0.01599994, 0.01599994, 8.89357695], [1517055900000, 0.01599999, 0.01599999, 0.01599994, 0.01599999, 14.85753642], [1517055960000, 0.01599994, 0.01599998, 0.01599994, 0.01599994, 11.94959061], [1517056020000, 0.01599998, 0.01599998, 0.01599994, 0.01599994, 20.06890686], [1517056080000, 0.01599998, 0.01599998, 0.01599994, 0.01599998, 3.62241516], [1517056140000, 0.01599994, 0.01599998, 0.01599994, 0.01599998, 4.17103574], [1517056200000, 0.01599994, 0.01599999, 0.015944, 0.01599999, 23.72134881], [1517056260000, 0.01599999, 0.016, 0.01592501, 0.01592501, 8.83622548], [1517056320000, 0.01599967, 0.01599999, 0.01594001, 0.01594501, 1.78673181], [1517056380000, 0.01599967, 0.01599999, 0.01599967, 0.01599999, 1.28761299], [1517056440000, 0.01599999, 0.01599999, 0.01599999, 0.01599999, 3.84560183], [1517056500000, 0.01595, 0.01599999, 0.01595, 0.01599999, 0.16912231], [1517056560000, 0.01599999, 0.016, 0.01599999, 0.016, 3.39335043], [1517056620000, 0.016, 0.016, 0.016, 0.016, 5.27672095], [1517056680000, 0.016, 0.016, 0.01595, 0.01599968, 13.53813378], [1517056740000, 0.01599968, 0.01599968, 0.01599968, 0.01599968, 2.35290552], [1517056800000, 0.01599968, 0.016, 0.01599968, 0.016, 7.1016901], [1517056860000, 0.01599968, 0.016, 0.01599968, 0.01599968, 3.76433644], [1517056920000, 0.01599968, 0.016, 0.01595168, 0.016, 148.54934693], [1517056980000, 0.016, 0.016, 0.015965, 0.016, 2.10290882], [1517057040000, 0.016, 0.016, 0.01597, 0.016, 8.66708923], [1517057100000, 0.01597003, 0.016, 0.01597003, 0.016, 1.7704437], [1517057160000, 0.01598002, 0.01599999, 0.01598002, 0.01598501, 3.27981154], [1517057220000, 0.01599999, 0.01602, 0.01595503, 0.01602, 19.2741094], [1517057280000, 0.01602, 0.01602669, 0.01602, 0.01602669, 0.31076296], [1517057340000, 0.01602494, 0.01603, 0.01601804, 0.01601804, 24.34218747], [1517057400000, 0.01602494, 0.01602669, 0.01602494, 0.01602494, 3.01509039], [1517057460000, 0.01602494, 0.01602669, 0.01602494, 0.0160252, 2.9890998], [1517057520000, 0.01602669, 0.01602669, 0.0160252, 0.0160252, 5.18467503], [1517057580000, 0.01602669, 0.01603899, 0.01602524, 0.01603816, 17.64812004], [1517057640000, 0.01603824, 0.01605, 0.01603824, 0.01605, 1.95608631], [1517057700000, 0.01603825, 0.01603899, 0.01603816, 0.01603899, 6.35847561], [1517057760000, 0.01603898, 0.01603898, 0.01603898, 0.01603898, 2.68472], [1517057820000, 0.01603866, 0.01603866, 0.01603806, 0.01603806, 22.08751436], [1517057880000, 0.01603895, 0.01603895, 0.01603806, 0.01603866, 1.08313725], [1517057940000, 0.01603866, 0.01603866, 0.01603806, 0.01603866, 3.08215744], [1517058000000, 0.01603866, 0.01603866, 0.0160252, 0.01603806, 6.48410576], [1517058060000, 0.016026, 0.016032, 0.016026, 0.016032, 0.82071149], [1517058120000, 0.016026, 0.01603898, 0.016026, 0.01603898, 57.65502537], [1517058180000, 0.01603898, 0.01603898, 0.016032, 0.016032, 3.1532234], [1517058240000, 0.01603898, 0.01603898, 0.01595001, 0.01595001, 21.22199065], [1517058300000, 0.0160252, 0.0160252, 0.0160252, 0.0160252, 4.94526802], [1517058360000, 0.0160252, 0.0160252, 0.0159602, 0.0160252, 13.41817602], [1517058420000, 0.0160252, 0.0160252, 0.0160252, 0.0160252, 1.83198606], [1517058480000, 0.0160252, 0.0160252, 0.016, 0.0160252, 2.41690316], [1517058540000, 0.0160252, 0.0160252, 0.016025, 0.016025, 0.96852316], [1517058600000, 0.016025, 0.0160252, 0.016025, 0.0160252, 0.63150564], [1517058660000, 0.016025, 0.016025, 0.01602499, 0.01602499, 0.20176853], [1517058720000, 0.01602499, 0.01602499, 0.016, 0.01600001, 2.8671432], [1517058780000, 0.01600001, 0.01602499, 0.01600001, 0.01600001, 3.76282782], [1517058840000, 0.01602499, 0.01602499, 0.01600001, 0.01602499, 35.89033965], [1517058900000, 0.01600001, 0.0160248, 0.01600001, 0.0160248, 0.87899107], [1517058960000, 0.01602, 0.01602499, 0.01602, 0.01602, 2.21545252], [1517059020000, 0.01602, 0.01602, 0.01590403, 0.016, 66.79689578], [1517059080000, 0.016, 0.016, 0.01591994, 0.016, 46.05788358], [1517059140000, 0.016, 0.016, 0.01592681, 0.016, 14.95425095], [1517059200000, 0.016, 0.016, 0.01591943, 0.016, 7.8802097], [1517059260000, 0.01591965, 0.016, 0.01591943, 0.01591943, 5.98196034], [1517059380000, 0.01591946, 0.016, 0.01590901, 0.01592027, 54.6511644], [1517059440000, 0.016, 0.016, 0.016, 0.016, 1.899227], [1517059500000, 0.0159203, 0.016, 0.0159203, 0.016, 5.96390867], [1517059560000, 0.01592026, 0.01592026, 0.01590501, 0.01590512, 2.96029428], [1517059620000, 0.01599999, 0.01599999, 0.01592, 0.01592, 5.5796259], [1517059680000, 0.01599936, 0.01599936, 0.01592002, 0.01592002, 2.38561712], [1517059740000, 0.01599935, 0.01599968, 0.01589001, 0.01599968, 66.77179205], [1517059800000, 0.01592026, 0.01598745, 0.01592026, 0.01598745, 5.8510446], [1517059860000, 0.01592167, 0.01598745, 0.01592158, 0.01598745, 11.40680532], [1517059920000, 0.01592178, 0.01598745, 0.01592178, 0.01592181, 1.79393721], [1517059980000, 0.01598744, 0.01599411, 0.01592158, 0.01592159, 22.37609891], [1517060040000, 0.01599411, 0.01599935, 0.015897, 0.01599412, 77.16354749], [1517060100000, 0.01598745, 0.01598745, 0.01590756, 0.01598745, 110.6428599], [1517060160000, 0.01589012, 0.01598713, 0.01589012, 0.01598713, 36.80676776], [1517060220000, 0.01598745, 0.01598745, 0.01598713, 0.01598745, 7.67276966], [1517060280000, 0.01598713, 0.01598713, 0.01598713, 0.01598713, 10.06896172], [1517060340000, 0.01598745, 0.01598745, 0.01589514, 0.015906, 42.14217581], [1517060400000, 0.01591621, 0.01598745, 0.01591621, 0.01591621, 7.56999867], [1517060460000, 0.0159, 0.0159478, 0.0159, 0.01590565, 18.91656241], [1517060520000, 0.01590587, 0.01598745, 0.01590587, 0.01598745, 5.59451725], [1517060580000, 0.01598745, 0.01598745, 0.01591193, 0.01591291, 1.49576974], [1517060640000, 0.01591143, 0.01599935, 0.01582739, 0.01599935, 320.04774889], [1517060700000, 0.01599497, 0.01599497, 0.01592, 0.01592, 35.74575208], [1517060760000, 0.01592, 0.01599497, 0.01588701, 0.0159313, 30.50237773], [1517060820000, 0.0159313, 0.01599497, 0.01590215, 0.01599497, 10.2343214], [1517060880000, 0.0159318, 0.01599497, 0.0159318, 0.01596, 11.53866845], [1517060940000, 0.01595, 0.01599497, 0.01590218, 0.01599497, 13.2150662], [1517061000000, 0.01599497, 0.01599497, 0.01595, 0.01599497, 23.54344687], [1517061060000, 0.01595, 0.01599497, 0.015912, 0.01599497, 5.82076048], [1517061120000, 0.01592223, 0.01599497, 0.01592223, 0.01593211, 23.75868953], [1517061180000, 0.01593218, 0.01599935, 0.01593218, 0.01599934, 28.12560256], [1517061240000, 0.01599935, 0.01599935, 0.01599934, 0.01599935, 24.51530771], [1517061300000, 0.01599935, 0.01599967, 0.015938, 0.015938, 2.55726741], [1517061360000, 0.01599935, 0.01599935, 0.01594003, 0.01594003, 2.18212946], [1517061420000, 0.01599934, 0.01599934, 0.01594001, 0.01594003, 2.94317696], [1517061480000, 0.01595, 0.01599902, 0.01594005, 0.01594086, 20.64654117], [1517061540000, 0.01599502, 0.01599502, 0.01599502, 0.01599502, 0.38150241], [1517061600000, 0.01599502, 0.01599502, 0.01599502, 0.01599502, 0.72849759], [1517061660000, 0.01594088, 0.01599901, 0.01594001, 0.01594001, 13.26919169], [1517061720000, 0.01599901, 0.016, 0.01599901, 0.016, 14.16200585], [1517061780000, 0.01599935, 0.016, 0.01594001, 0.016, 19.83405581], [1517061840000, 0.016, 0.016, 0.01594047, 0.01594047, 66.618948], [1517061900000, 0.01594058, 0.016, 0.01594058, 0.016, 0.47753177], [1517061960000, 0.01597012, 0.016, 0.01578601, 0.016, 601.14449727], [1517062020000, 0.01589221, 0.015984, 0.01589221, 0.015984, 26.73872276], [1517062080000, 0.015987, 0.01598745, 0.01589264, 0.01589264, 11.4252378], [1517062140000, 0.01598744, 0.01598744, 0.01589285, 0.01589285, 1.23869547], [1517062200000, 0.015896, 0.015987, 0.015896, 0.01597548, 15.8535902], [1517062260000, 0.01597555, 0.01598668, 0.01597555, 0.01597555, 5.00329987], [1517062320000, 0.01597668, 0.0160252, 0.01597555, 0.01600003, 100.6011906], [1517062380000, 0.01599999, 0.01603049, 0.01599999, 0.01603016, 6.61362363], [1517062440000, 0.01598668, 0.01599967, 0.01598667, 0.01598667, 7.22022344], [1517062500000, 0.01599999, 0.01599999, 0.01598667, 0.01598667, 23.94923618], [1517062560000, 0.01598667, 0.01598667, 0.01598667, 0.01598667, 0.06896371], [1517062620000, 0.01598667, 0.01599963, 0.01598667, 0.01599963, 3.39891593], [1517062680000, 0.01599959, 0.01599967, 0.01598667, 0.01598667, 12.76521], [1517062740000, 0.01598667, 0.01599999, 0.01598667, 0.01598667, 8.37940818], [1517062800000, 0.01599967, 0.01599967, 0.01598667, 0.01598667, 78.66063227], [1517062860000, 0.01598667, 0.01599963, 0.01598667, 0.01599963, 4.69356199], [1517062920000, 0.01599926, 0.01599926, 0.015999, 0.01599926, 9.30123017], [1517062980000, 0.01599931, 0.01599931, 0.01598667, 0.01598667, 8.57187926], [1517063040000, 0.01599926, 0.01599926, 0.01599926, 0.01599926, 20.01148829], [1517063100000, 0.01599931, 0.01599999, 0.01599926, 0.01599999, 8.9218044], [1517063160000, 0.01599926, 0.01599999, 0.01599926, 0.01599999, 18.92826936], [1517063220000, 0.01599999, 0.01603, 0.01599999, 0.01602998, 47.42052731], [1517063280000, 0.01602997, 0.0160305, 0.01600088, 0.01600088, 32.14510916], [1517063340000, 0.016, 0.0160305, 0.016, 0.0160305, 21.94247559], [1517063400000, 0.01600089, 0.0160305, 0.01598667, 0.01598667, 11.82255593], [1517063460000, 0.01600089, 0.016001, 0.01600089, 0.016001, 3.93017243], [1517063520000, 0.016001, 0.0160305, 0.016001, 0.0160305, 8.56475859], [1517063580000, 0.01603018, 0.01603898, 0.01598667, 0.01598667, 34.83897392], [1517063640000, 0.01603018, 0.01603018, 0.01598667, 0.01598667, 4.7870817], [1517063700000, 0.01598667, 0.01598667, 0.01598667, 0.01598667, 3.26177364], [1517063760000, 0.01598667, 0.01598667, 0.01598667, 0.01598667, 0.33784395], [1517063820000, 0.01598667, 0.01603011, 0.01598667, 0.01598667, 3.9102395], [1517063880000, 0.01603008, 0.01603009, 0.01599667, 0.01603006, 26.45058783], [1517063940000, 0.01603006, 0.01603006, 0.01599667, 0.01599667, 10.51156015], [1517064000000, 0.016, 0.016, 0.01598667, 0.01598667, 3.94137005], [1517064060000, 0.01598667, 0.016, 0.01598667, 0.01598667, 55.14819238], [1517064120000, 0.01599996, 0.016, 0.01599996, 0.01599996, 12.59075468], [1517064180000, 0.01599996, 0.016, 0.01597548, 0.01597548, 8.99958092], [1517064240000, 0.01597548, 0.01597548, 0.01594, 0.01594, 1.15050263], [1517064300000, 0.01594, 0.01600499, 0.0159, 0.01600332, 42.55029338], [1517064360000, 0.01596258, 0.01596258, 0.0159, 0.0159, 0.92184847], [1517064420000, 0.01596258, 0.01596258, 0.0159, 0.01596258, 6.99030742], [1517064480000, 0.01596254, 0.01596258, 0.0159, 0.0159, 3.71805489], [1517064540000, 0.01596258, 0.01596258, 0.0159, 0.015903, 9.87094466], [1517064600000, 0.01596258, 0.01596258, 0.01596258, 0.01596258, 3.49067177], [1517064660000, 0.01596258, 0.01598745, 0.01589804, 0.015908, 20.08971197], [1517064720000, 0.01598745, 0.01598745, 0.015898, 0.015908, 5.13386284], [1517064780000, 0.0159, 0.015908, 0.01589262, 0.01589263, 69.30562832], [1517064840000, 0.015908, 0.015982, 0.01589263, 0.015982, 18.3595633], [1517064900000, 0.015908, 0.015981, 0.01589263, 0.01589263, 9.06213092], [1517064960000, 0.015986, 0.015986, 0.01589263, 0.01589263, 7.41219776], [1517065020000, 0.015982, 0.015982, 0.01589804, 0.01589804, 4.88688935], [1517065080000, 0.01594968, 0.01594968, 0.01589263, 0.01589263, 15.76003912], [1517065140000, 0.015977, 0.015977, 0.015905, 0.015905, 0.18194505], [1517065200000, 0.01589263, 0.01598745, 0.01588763, 0.01598745, 67.14913581], [1517065260000, 0.015893, 0.01598745, 0.015893, 0.01598745, 1.29415722], [1517065320000, 0.01598745, 0.01598745, 0.01589301, 0.0159, 8.44191203], [1517065380000, 0.015977, 0.015977, 0.0159, 0.0159, 1.76610191], [1517065440000, 0.0159, 0.0159, 0.0159, 0.0159, 8.13764897], [1517065500000, 0.01593, 0.01593, 0.0159, 0.0159, 1.7034898], [1517065560000, 0.0159, 0.0159, 0.01589301, 0.01589301, 2.83156424], [1517065620000, 0.01597, 0.01598529, 0.01589301, 0.01589301, 80.34639186], [1517065680000, 0.0159, 0.0159, 0.01589301, 0.01589301, 0.97878186], [1517065740000, 0.01589301, 0.01589301, 0.015893, 0.015893, 6.31019087], [1517065800000, 0.015893, 0.01589301, 0.01589, 0.01589301, 23.98122663], [1517065860000, 0.01589301, 0.01589301, 0.01589, 0.01589, 11.68606767], [1517065920000, 0.01589301, 0.01589301, 0.01589, 0.01589201, 2.98661775], [1517065980000, 0.01589201, 0.01589301, 0.01589201, 0.01589201, 4.66887451], [1517066040000, 0.01589201, 0.01589201, 0.01589201, 0.01589201, 4.15987254], [1517066100000, 0.01589201, 0.01589201, 0.01589, 0.01589, 3.57521223], [1517066160000, 0.01589, 0.01589201, 0.01587241, 0.01587241, 41.97673466], [1517066220000, 0.015892, 0.01589301, 0.01589, 0.01589301, 83.96142087], [1517066280000, 0.01589301, 0.01589301, 0.01589, 0.01589301, 13.29997127], [1517066340000, 0.01589301, 0.0159, 0.01589301, 0.0159, 26.0026035], [1517066400000, 0.0159, 0.01598745, 0.015895, 0.0159, 56.84384903], [1517066460000, 0.01598745, 0.01598745, 0.01598745, 0.01598745, 2.20702747], [1517066520000, 0.01598745, 0.01598745, 0.01598745, 0.01598745, 0.12940715], [1517066580000, 0.01598741, 0.01598741, 0.01597, 0.01598701, 10.73517226], [1517066700000, 0.01598692, 0.01598692, 0.015899, 0.015899, 5.26951351], [1517066760000, 0.01598692, 0.01598692, 0.015899, 0.015899, 5.03778927], [1517066820000, 0.01598692, 0.01598701, 0.01589901, 0.01589901, 9.24571781], [1517066880000, 0.01598198, 0.015982, 0.01598194, 0.01598198, 18.60885821], [1517066940000, 0.01597773, 0.01597773, 0.01597773, 0.01597773, 0.59496842], [1517067000000, 0.015964, 0.015973, 0.015897, 0.015973, 11.31065678], [1517067060000, 0.0159, 0.0159, 0.0159, 0.0159, 0.37346302], [1517067120000, 0.015973, 0.01597773, 0.01590015, 0.015972, 28.9724088], [1517067180000, 0.01590016, 0.01597772, 0.01590015, 0.01597772, 10.70573969], [1517067240000, 0.01597772, 0.01597773, 0.01590015, 0.01597201, 17.68880318], [1517067300000, 0.01590016, 0.01598701, 0.0159, 0.01598701, 22.67378835], [1517067360000, 0.01597201, 0.01597201, 0.0159, 0.0159, 2.54381578], [1517067420000, 0.01590001, 0.01598701, 0.01590001, 0.01598695, 3.73074281], [1517067480000, 0.01590001, 0.01598694, 0.01590001, 0.01598694, 2.98236669], [1517067540000, 0.0159869, 0.0159869, 0.01590002, 0.01590002, 11.26052505], [1517067600000, 0.01590006, 0.0159868, 0.01590006, 0.01590024, 49.53864095], [1517067660000, 0.01590024, 0.0159868, 0.01590024, 0.01592358, 2.98057018], [1517067780000, 0.01592358, 0.01592359, 0.01592358, 0.01592359, 4.86129904], [1517067840000, 0.01592359, 0.0159868, 0.01590228, 0.0159868, 8.06112816], [1517067900000, 0.015977, 0.015977, 0.015977, 0.015977, 3.5880931], [1517067960000, 0.01590228, 0.01590228, 0.01590002, 0.01590002, 16.34653133], [1517068020000, 0.01590002, 0.01593, 0.01590002, 0.01593, 47.54000679], [1517068080000, 0.01590228, 0.01593, 0.01590228, 0.01590228, 50.9024084], [1517068140000, 0.01592998, 0.01592998, 0.01590228, 0.01590228, 7.43443628], [1517068200000, 0.01590228, 0.01590228, 0.01590228, 0.01590228, 9.2908947], [1517068260000, 0.01590228, 0.015929, 0.01590228, 0.01592898, 16.17212152], [1517068320000, 0.01590228, 0.01592898, 0.01590228, 0.01590228, 25.4109554], [1517068380000, 0.01590228, 0.01592898, 0.01590228, 0.01590228, 17.76588422], [1517068440000, 0.01590228, 0.01592799, 0.01590228, 0.01590228, 10.67936362], [1517068500000, 0.01592794, 0.01592794, 0.01590228, 0.01590228, 0.69558572], [1517068560000, 0.01591228, 0.01591228, 0.01591228, 0.01591228, 1.13560985], [1517068620000, 0.01592789, 0.01592789, 0.0158924, 0.0159023, 13.8942064], [1517068680000, 0.0159023, 0.01592787, 0.01587701, 0.0159023, 25.73319209], [1517068740000, 0.0159023, 0.01592, 0.0159023, 0.0159023, 23.48094812], [1517068800000, 0.0159023, 0.01591995, 0.01587701, 0.0159023, 27.71913118], [1517068860000, 0.0159023, 0.01591982, 0.0158724, 0.0158724, 67.46408106], [1517068920000, 0.0159023, 0.0159023, 0.0158724, 0.01590229, 10.37631178], [1517068980000, 0.0158724, 0.0158724, 0.01586494, 0.0158724, 17.51522822], [1517069040000, 0.01586494, 0.0158724, 0.01586494, 0.0158724, 2.3488399], [1517069100000, 0.01586494, 0.01586494, 0.015854, 0.015854, 16.40739539], [1517069160000, 0.01586299, 0.01586299, 0.01585, 0.01585, 4.32998269], [1517069220000, 0.01584, 0.01585, 0.01581359, 0.01581998, 5.27890865], [1517069280000, 0.01581998, 0.01582, 0.01581998, 0.01581998, 22.87476985], [1517069340000, 0.01581998, 0.01582, 0.01581459, 0.01582, 23.44121207], [1517069400000, 0.01585, 0.01585, 0.01581359, 0.01585, 17.37373249], [1517069460000, 0.01584999, 0.01585, 0.0158147, 0.01584999, 30.09325224], [1517069520000, 0.01584998, 0.01584999, 0.0158147, 0.01584998, 27.30316738], [1517069580000, 0.01584998, 0.01584998, 0.01579301, 0.01581459, 18.67982915], [1517069640000, 0.01581445, 0.0158145, 0.01581445, 0.0158145, 22.80788287], [1517069700000, 0.01581459, 0.01581459, 0.01581445, 0.01581445, 22.3606864], [1517069760000, 0.01581459, 0.01581459, 0.01581445, 0.01581459, 6.36929273], [1517069820000, 0.01581459, 0.01581459, 0.01579301, 0.01581459, 92.97629888], [1517069880000, 0.01584998, 0.015897, 0.01581, 0.01586, 19.47590801], [1517069940000, 0.01586, 0.01589699, 0.0158, 0.0158, 12.81679874], [1517070000000, 0.01589698, 0.01589698, 0.0158168, 0.01589697, 4.17414572], [1517070060000, 0.015895, 0.015895, 0.0158168, 0.0158168, 4.11118824], [1517070120000, 0.01587612, 0.01588, 0.01581, 0.01588, 4.18399853], [1517070180000, 0.01587612, 0.01587612, 0.01581, 0.01587612, 5.88141003], [1517070240000, 0.015801, 0.015801, 0.01578667, 0.01578667, 49.72042592], [1517070300000, 0.015801, 0.01587612, 0.015801, 0.01587612, 20.15789768], [1517070360000, 0.01587611, 0.01587611, 0.01581, 0.01581, 5.4066913], [1517070420000, 0.01587612, 0.01587612, 0.01581, 0.01581, 3.53421925], [1517070480000, 0.01581, 0.01581002, 0.015796, 0.01581, 24.36313553], [1517070540000, 0.0158, 0.0158, 0.01579601, 0.0158, 38.40323506], [1517070600000, 0.0158, 0.0158, 0.0157999, 0.0158, 6.49723688], [1517070660000, 0.0158, 0.0158, 0.015796, 0.01579601, 27.94977163], [1517070720000, 0.01579996, 0.01579996, 0.01578601, 0.015796, 44.5637897], [1517070780000, 0.015796, 0.015796, 0.01578602, 0.015796, 4.09700386], [1517070840000, 0.01578602, 0.015796, 0.01578602, 0.01578603, 13.97041159], [1517070900000, 0.01578603, 0.015796, 0.01578603, 0.01579599, 4.7412468], [1517070960000, 0.01578603, 0.01579599, 0.01577755, 0.01577891, 30.46244521], [1517071020000, 0.01578601, 0.01579599, 0.01578601, 0.01579599, 9.85507086], [1517071080000, 0.01579599, 0.0157966, 0.01578619, 0.0157966, 25.34481538], [1517071140000, 0.0158, 0.0158, 0.0157966, 0.0158, 9.74299478], [1517071200000, 0.0158, 0.01580001, 0.0157966, 0.0158, 6.47974681], [1517071260000, 0.01580001, 0.01580999, 0.01580001, 0.01580002, 4.90549619], [1517071320000, 0.01580001, 0.01580002, 0.01580001, 0.01580001, 7.26015779], [1517071380000, 0.01580002, 0.01580002, 0.01580001, 0.01580002, 11.96629357], [1517071440000, 0.01580002, 0.01581002, 0.0158, 0.01581002, 63.68407337], [1517071500000, 0.01581002, 0.01581002, 0.01581002, 0.01581002, 17.67113487], [1517071560000, 0.01581002, 0.01584998, 0.01581002, 0.01584998, 32.50780565], [1517071620000, 0.01584999, 0.01584999, 0.01584998, 0.01584998, 5.13739511], [1517071680000, 0.01584998, 0.01584999, 0.01581001, 0.01584999, 12.68491097], [1517071740000, 0.01581002, 0.01584999, 0.01580002, 0.01584998, 78.65465718], [1517071800000, 0.01584998, 0.01584998, 0.01580026, 0.01580026, 23.7958862], [1517071860000, 0.01581008, 0.01581008, 0.01580002, 0.01580002, 37.68803458], [1517071920000, 0.01580026, 0.01581008, 0.01580026, 0.01581008, 1.21199398], [1517071980000, 0.01581008, 0.01581008, 0.01581, 0.01581, 6.14482541], [1517072040000, 0.01581008, 0.01581008, 0.01581, 0.01581008, 30.56362816], [1517072100000, 0.01581, 0.01585, 0.01581, 0.01581008, 14.57630259], [1517072160000, 0.01581008, 0.01581011, 0.01581, 0.01581, 27.15159385], [1517072220000, 0.01584999, 0.01584999, 0.01580002, 0.01580002, 28.3265529], [1517072280000, 0.01580026, 0.01580026, 0.01580002, 0.01580002, 2.67401211], [1517072340000, 0.01580002, 0.01580013, 0.015775, 0.015775, 101.85467199], [1517072400000, 0.01577754, 0.01580003, 0.015775, 0.015775, 23.86126741], [1517072460000, 0.01577754, 0.0158, 0.01577754, 0.0158, 0.48507452], [1517072520000, 0.01580001, 0.01580001, 0.01580001, 0.01580001, 0.23192631], [1517072580000, 0.01580001, 0.01580001, 0.01577777, 0.01577777, 8.25727444], [1517072640000, 0.0158, 0.0158, 0.01579, 0.01579, 3.70037979], [1517072700000, 0.01579, 0.01579, 0.01577777, 0.01577777, 19.62680308], [1517072760000, 0.01577777, 0.01577777, 0.01577754, 0.01577754, 30.54448209], [1517072820000, 0.01577754, 0.01577754, 0.01577754, 0.01577754, 0.42324469], [1517072880000, 0.01577502, 0.01577778, 0.01577502, 0.01577778, 43.27049126], [1517072940000, 0.01577778, 0.01577778, 0.01577501, 0.01577778, 13.45215405], [1517073000000, 0.015777, 0.01577778, 0.015775, 0.015775, 51.34725829], [1517073060000, 0.015775, 0.01577777, 0.015775, 0.015775, 18.55086295], [1517073120000, 0.01577778, 0.01577778, 0.015775, 0.01577778, 18.09899118], [1517073180000, 0.015775, 0.01577778, 0.015775, 0.01577778, 6.65790798], [1517073240000, 0.01577778, 0.01577778, 0.01577503, 0.01577503, 6.79075095], [1517073300000, 0.01577778, 0.01577778, 0.015775, 0.015775, 100.2077553], [1517073360000, 0.0157777, 0.0157777, 0.015775, 0.015775, 37.06676345], [1517073420000, 0.015775, 0.0157769, 0.015775, 0.0157768, 39.10004678], [1517073480000, 0.015775, 0.01581, 0.015775, 0.015775, 96.57743064], [1517073540000, 0.015775, 0.0158, 0.01577408, 0.015775, 71.2162371], [1517073600000, 0.015775, 0.015775, 0.01577408, 0.01577408, 39.77559307], [1517073660000, 0.01579999, 0.01579999, 0.01577408, 0.01577408, 3.70476634], [1517073720000, 0.01579999, 0.01579999, 0.01577408, 0.01577408, 5.42299279], [1517073780000, 0.01579999, 0.01579999, 0.01577408, 0.01577408, 8.71461548], [1517073840000, 0.01579999, 0.01579999, 0.01577408, 0.015795, 7.3694864], [1517073900000, 0.015795, 0.01579999, 0.01577408, 0.01579999, 26.14354742], [1517073960000, 0.01579999, 0.01579999, 0.01577408, 0.01577408, 12.50325026], [1517074020000, 0.015795, 0.015795, 0.01577408, 0.015795, 27.01505297], [1517074080000, 0.01577408, 0.015795, 0.01577408, 0.015795, 10.62760055], [1517074140000, 0.015795, 0.01579999, 0.01577408, 0.01577408, 9.5585758], [1517074200000, 0.01579967, 0.01579967, 0.01577408, 0.01579967, 11.43094917], [1517074260000, 0.0157999, 0.0157999, 0.01577428, 0.01577428, 1.10797136], [1517074320000, 0.01577428, 0.01578, 0.01577428, 0.01577428, 9.32551088], [1517074380000, 0.01577428, 0.0157998, 0.01577428, 0.01577428, 12.0361094], [1517074440000, 0.0157998, 0.0157998, 0.0157998, 0.0157998, 1.62171979], [1517074500000, 0.0157998, 0.0157998, 0.01577777, 0.0157996, 3.94921135], [1517074560000, 0.0157996, 0.0157998, 0.01577408, 0.01577408, 4.40901593], [1517074620000, 0.01577428, 0.0157998, 0.01577408, 0.0157998, 28.58869906], [1517074680000, 0.0157998, 0.0157998, 0.01577428, 0.0157998, 6.00662479], [1517074740000, 0.0157998, 0.0158, 0.0157998, 0.0158, 114.0252014], [1517074800000, 0.01584935, 0.01584967, 0.0158, 0.01584967, 7.61868744], [1517074860000, 0.01580001, 0.01584967, 0.01580001, 0.01584962, 3.10063669], [1517074920000, 0.01584962, 0.01585, 0.0158, 0.01585, 23.41807141], [1517074980000, 0.0158, 0.01581, 0.0158, 0.01581, 3.63649769], [1517075040000, 0.01581, 0.01584968, 0.0158, 0.01582, 6.40090899], [1517075100000, 0.01584968, 0.01585, 0.01582, 0.01584968, 53.12248599], [1517075160000, 0.01584964, 0.01585, 0.01584659, 0.01585, 3.70588572], [1517075220000, 0.01584659, 0.01585, 0.0158, 0.01585, 35.1199409], [1517075280000, 0.01585, 0.01585, 0.01576001, 0.01585, 26.51190015], [1517075340000, 0.01585, 0.01585, 0.01585, 0.01585, 0.07741834], [1517075400000, 0.01578002, 0.01578002, 0.0157601, 0.0157601, 24.43124467], [1517075460000, 0.01576426, 0.01576426, 0.01576426, 0.01576426, 0.45551793], [1517075520000, 0.015764, 0.01576426, 0.015764, 0.01576426, 10.55126391], [1517075580000, 0.01576426, 0.0158, 0.01576426, 0.0158, 14.4335198], [1517075640000, 0.0158, 0.0158, 0.0158, 0.0158, 6.47368217], [1517075700000, 0.01576445, 0.0158, 0.01576435, 0.0158, 1.61754335], [1517075760000, 0.015769, 0.01581512, 0.01576501, 0.01581512, 16.62881995], [1517075820000, 0.01581512, 0.01581512, 0.01580002, 0.01580002, 3.00400478], [1517075880000, 0.01584998, 0.01584998, 0.01581, 0.01581001, 5.11273971], [1517075940000, 0.01584998, 0.01584998, 0.01584997, 0.01584997, 1.52253203], [1517076000000, 0.01584996, 0.01584996, 0.01581001, 0.01581001, 3.43377321], [1517076060000, 0.01581001, 0.01584996, 0.01581001, 0.01584996, 14.24088924], [1517076120000, 0.01584997, 0.01584997, 0.01584995, 0.01584995, 18.50604188], [1517076180000, 0.01584995, 0.01584995, 0.01581001, 0.01581001, 3.95261805], [1517076240000, 0.01580004, 0.01580004, 0.01580002, 0.01580004, 11.37756488], [1517076300000, 0.0158, 0.01580004, 0.0158, 0.01580004, 4.03570918], [1517076360000, 0.01576501, 0.0158, 0.015765, 0.0158, 46.40239701], [1517076420000, 0.0158, 0.01580004, 0.0158, 0.01580004, 2.61316347], [1517076480000, 0.01580004, 0.01581001, 0.01580004, 0.01580004, 5.38280705], [1517076540000, 0.01580004, 0.01581001, 0.01580004, 0.01581001, 1.22086879], [1517076600000, 0.01581001, 0.01584963, 0.01581001, 0.01581001, 7.70417645], [1517076660000, 0.01581001, 0.01584922, 0.01581001, 0.01581001, 4.29933373], [1517076720000, 0.01584921, 0.01584921, 0.01581001, 0.01581646, 11.56600676], [1517076780000, 0.01584922, 0.01584922, 0.01584921, 0.01584921, 12.88545589], [1517076840000, 0.01584921, 0.01584926, 0.01584921, 0.01584926, 23.30399838], [1517076900000, 0.01584926, 0.01584963, 0.01584922, 0.0158493, 3.61752684], [1517076960000, 0.01584963, 0.01585, 0.01584921, 0.01585, 23.07574065], [1517077020000, 0.01584932, 0.01584932, 0.0158493, 0.0158493, 4.49159858], [1517077080000, 0.01584932, 0.01585, 0.01584921, 0.01584921, 25.36693219], [1517077140000, 0.01584921, 0.01585, 0.01584921, 0.01585, 27.31334189], [1517077200000, 0.01584921, 0.01585, 0.01584921, 0.01585, 10.7145979], [1517077260000, 0.01585, 0.01585, 0.01584921, 0.01585, 4.5197023], [1517077320000, 0.01585, 0.01585, 0.01584921, 0.01584921, 53.21724038], [1517077380000, 0.01584921, 0.01587398, 0.01584921, 0.01584921, 20.27601619], [1517077440000, 0.01585472, 0.01587611, 0.01584921, 0.01584924, 30.68486881], [1517077500000, 0.0158761, 0.01589699, 0.01584921, 0.01584921, 37.68333726], [1517077560000, 0.01584921, 0.01588699, 0.01584921, 0.01584922, 5.56098542], [1517077620000, 0.01584922, 0.01588699, 0.01584921, 0.01584922, 20.52107777], [1517077680000, 0.01586772, 0.01588699, 0.01584921, 0.01588699, 13.01780445], [1517077740000, 0.01588699, 0.01588699, 0.01584921, 0.01584921, 10.37237872], [1517077800000, 0.01588699, 0.01588699, 0.01584923, 0.01584923, 12.43377994], [1517077860000, 0.01584923, 0.01584923, 0.01584923, 0.01584923, 2.72730748], [1517077920000, 0.01584923, 0.01588698, 0.01584923, 0.01586771, 0.64679059], [1517077980000, 0.01584924, 0.01586771, 0.01584924, 0.01586771, 4.5489643], [1517078040000, 0.01584925, 0.0158677, 0.01584923, 0.01584923, 10.12817336], [1517078100000, 0.01584923, 0.01584923, 0.01584921, 0.01584921, 12.0566124], [1517078160000, 0.01584921, 0.01584921, 0.01584921, 0.01584921, 16.70419537], [1517078220000, 0.01584921, 0.01584921, 0.01584921, 0.01584921, 6.82920877], [1517078280000, 0.01584921, 0.01584923, 0.01584921, 0.01584921, 2.17256216], [1517078340000, 0.01584921, 0.015887, 0.01584921, 0.01584921, 46.24723415], [1517078400000, 0.01584921, 0.01588699, 0.01584921, 0.01584921, 26.51262084], [1517078460000, 0.01584921, 0.01584923, 0.01584921, 0.01584923, 5.01567543], [1517078520000, 0.01584923, 0.015887, 0.01584921, 0.01584921, 25.14798457], [1517078580000, 0.01584923, 0.01584923, 0.01584921, 0.01584921, 4.96521988], [1517078640000, 0.01584921, 0.015887, 0.01584921, 0.015887, 30.10381526], [1517078700000, 0.015887, 0.015887, 0.01584921, 0.015887, 3.79386731], [1517078760000, 0.01584921, 0.015887, 0.01584921, 0.015887, 13.50338344], [1517078820000, 0.01584921, 0.01588699, 0.01584921, 0.01584921, 194.87764541], [1517078880000, 0.01584921, 0.015887, 0.01584921, 0.01584922, 4.20821252], [1517078940000, 0.01584922, 0.01584922, 0.01584921, 0.01584922, 35.59098382], [1517079000000, 0.01584922, 0.01584922, 0.01581001, 0.01581001, 2.95059714], [1517079060000, 0.01584, 0.01584922, 0.015825, 0.015825, 30.93177398], [1517079120000, 0.015825, 0.01584921, 0.01581926, 0.01581926, 1.64186106], [1517079180000, 0.01581926, 0.01581926, 0.01581001, 0.01581926, 6.9292034], [1517079240000, 0.01581926, 0.01581926, 0.01581926, 0.01581926, 4.18188498], [1517079300000, 0.01583, 0.01584921, 0.01580756, 0.01580756, 13.90961103], [1517079360000, 0.01580756, 0.01581926, 0.01580004, 0.01580004, 7.06143854], [1517079420000, 0.01580004, 0.01581926, 0.01579436, 0.01579455, 6.69985979], [1517079480000, 0.01579455, 0.01581926, 0.01579455, 0.01581926, 12.77716465], [1517079540000, 0.01581926, 0.01581926, 0.0158, 0.0158, 5.40711762], [1517079600000, 0.01581926, 0.01581926, 0.0157945, 0.0157945, 8.41622561], [1517079660000, 0.0158, 0.0158, 0.0157945, 0.0158, 8.27217677], [1517079720000, 0.0158, 0.0158, 0.0157945, 0.0158, 5.16187701], [1517079780000, 0.0158, 0.015845, 0.015795, 0.015845, 24.90041625], [1517079840000, 0.0158, 0.015845, 0.0158, 0.015845, 3.24416699], [1517079900000, 0.0158, 0.01580001, 0.015795, 0.015795, 19.47663402], [1517079960000, 0.0158, 0.0158, 0.0157945, 0.0158, 1.3012795], [1517080020000, 0.0158, 0.0158, 0.0157945, 0.01579451, 30.33361981], [1517080080000, 0.01579451, 0.0158, 0.01579451, 0.01579452, 11.65798666], [1517080140000, 0.01579453, 0.01579453, 0.01579452, 0.01579452, 6.46700317], [1517080200000, 0.01579452, 0.0158, 0.0157945, 0.0158, 7.12238697], [1517080260000, 0.0157945, 0.0158, 0.01576901, 0.0157945, 4.72109479], [1517080320000, 0.0157945, 0.0157945, 0.01576901, 0.01576902, 33.03725624], [1517080380000, 0.0157944, 0.0157944, 0.01576902, 0.0157944, 13.96433462], [1517080440000, 0.01579, 0.0157944, 0.01577, 0.01577, 1.97012955], [1517080500000, 0.0157944, 0.0157944, 0.0157944, 0.0157944, 10.90984281], [1517080560000, 0.0157944, 0.0157944, 0.01577005, 0.0157944, 7.67468365], [1517080620000, 0.01577005, 0.0157944, 0.01576901, 0.0157944, 4.59573285], [1517080680000, 0.01577005, 0.01577005, 0.01576434, 0.01576434, 4.98571346], [1517080740000, 0.01576434, 0.01576434, 0.01576426, 0.01576426, 23.45699846], [1517080800000, 0.01576426, 0.0157944, 0.01576401, 0.0157944, 56.6253764], [1517080860000, 0.01577001, 0.0158, 0.01577001, 0.0158, 67.67493014], [1517080920000, 0.015774, 0.0158, 0.015774, 0.0158, 10.33348125], [1517080980000, 0.0158, 0.0158, 0.015774, 0.015774, 19.82256792], [1517081040000, 0.015774, 0.0158, 0.01576401, 0.0158, 11.7290904], [1517081100000, 0.0158, 0.0158, 0.0158, 0.0158, 14.55141639], [1517081160000, 0.0158, 0.0158, 0.0158, 0.0158, 1.80752988], [1517081220000, 0.0158, 0.01581924, 0.0158, 0.01581924, 8.40647563], [1517081280000, 0.01581924, 0.01581924, 0.01581924, 0.01581924, 1.39222085], [1517081340000, 0.01581925, 0.01581925, 0.01581925, 0.01581925, 6.00744103], [1517081400000, 0.01581924, 0.01581925, 0.01581924, 0.01581924, 16.9093107], [1517081460000, 0.01581924, 0.01582, 0.01581924, 0.01582, 19.89328981], [1517081520000, 0.01582, 0.015845, 0.01582, 0.01582, 5.6963238], [1517081580000, 0.015845, 0.015845, 0.015782, 0.015782, 14.5026116], [1517081640000, 0.01584, 0.01584, 0.01576902, 0.015782, 6.52126955], [1517081700000, 0.015782, 0.01584, 0.01576902, 0.01576902, 0.53060963], [1517081760000, 0.01584, 0.01584, 0.01578114, 0.0158399, 8.06508572], [1517081820000, 0.01578115, 0.0158399, 0.01576906, 0.01576906, 93.81136688], [1517081880000, 0.01576906, 0.0158399, 0.01576906, 0.01576907, 26.58844341], [1517081940000, 0.0158399, 0.01584909, 0.015774, 0.015774, 50.75438927], [1517082000000, 0.0157813, 0.01584909, 0.0157748, 0.0157813, 3.63352076], [1517082060000, 0.015782, 0.015782, 0.015782, 0.015782, 3.88636837], [1517082120000, 0.015782, 0.01578201, 0.015782, 0.01578201, 5.11675698], [1517082180000, 0.01584775, 0.01584775, 0.015783, 0.015784, 25.53450828], [1517082240000, 0.01583962, 0.0158426, 0.015784, 0.01584228, 18.16711435], [1517082300000, 0.015784, 0.01584228, 0.015784, 0.01584228, 3.68402734], [1517082360000, 0.01584188, 0.01584188, 0.015784, 0.015784, 12.54927745], [1517082420000, 0.01578401, 0.0158, 0.01578401, 0.0158, 6.0030158], [1517082480000, 0.0158, 0.0158, 0.015784, 0.015784, 9.13064204], [1517082540000, 0.0158, 0.01583, 0.0158, 0.01580001, 19.24186191], [1517082600000, 0.01580001, 0.01582347, 0.01580001, 0.01580001, 11.4797014], [1517082660000, 0.01581347, 0.01581347, 0.01580001, 0.01580001, 3.393291], [1517082720000, 0.01581315, 0.01581347, 0.01580001, 0.01580001, 15.36030202], [1517082780000, 0.01581347, 0.01581347, 0.01580001, 0.01581346, 23.02754079], [1517082840000, 0.01580001, 0.01580001, 0.015782, 0.015782, 30.55811002], [1517082900000, 0.015782, 0.01581306, 0.015782, 0.01581306, 73.26892077], [1517082960000, 0.0158, 0.01581306, 0.0158, 0.01581306, 30.22406961], [1517083020000, 0.01581305, 0.01581306, 0.01581305, 0.01581305, 1.59485779], [1517083080000, 0.01581306, 0.01584501, 0.01581306, 0.01584501, 3.65445903], [1517083140000, 0.01582347, 0.015845, 0.01582347, 0.01582347, 27.70158385], [1517083200000, 0.01584464, 0.01584499, 0.01582347, 0.01582347, 8.15548206], [1517083260000, 0.01582347, 0.01584459, 0.01582347, 0.01582347, 2.36508305], [1517083320000, 0.01582347, 0.01582349, 0.01581306, 0.01581306, 21.89632469], [1517083380000, 0.01581306, 0.01581306, 0.0158, 0.0158, 11.96067377], [1517083440000, 0.015782, 0.0158, 0.015782, 0.0158, 6.88052293], [1517083500000, 0.015782, 0.015782, 0.015782, 0.015782, 1.09805845], [1517083560000, 0.015782, 0.015782, 0.015782, 0.015782, 25.13103107], [1517083620000, 0.01579811, 0.01579811, 0.015792, 0.015792, 1.07768557], [1517083680000, 0.015792, 0.015792, 0.015782, 0.01578201, 2.87261956], [1517083740000, 0.01578201, 0.01579197, 0.01578201, 0.01579197, 10.12819341], [1517083800000, 0.01578201, 0.01579811, 0.015782, 0.01578296, 18.94658046], [1517083860000, 0.01579197, 0.01579811, 0.01578296, 0.01578296, 0.60461342], [1517083920000, 0.01579808, 0.01579809, 0.015783, 0.015783, 6.99491545], [1517083980000, 0.015783, 0.01579809, 0.01578296, 0.01579809, 1.62544519], [1517084040000, 0.015783, 0.015783, 0.01578297, 0.01578297, 2.5979476], [1517084100000, 0.01578297, 0.01578297, 0.01578296, 0.01578297, 5.55396309], [1517084160000, 0.01578297, 0.01578297, 0.01578296, 0.01578296, 6.5556801], [1517084220000, 0.015782, 0.01578296, 0.01576777, 0.01578296, 36.61085225], [1517084280000, 0.01578296, 0.015783, 0.01578296, 0.01578296, 28.68745273], [1517084340000, 0.01578296, 0.01578297, 0.01578296, 0.01578297, 13.53251349], [1517084400000, 0.015783, 0.015783, 0.01578297, 0.01578297, 6.99012096], [1517084460000, 0.01578297, 0.01578297, 0.01578297, 0.01578297, 3.39077902], [1517084520000, 0.01578298, 0.01578298, 0.01578297, 0.01578297, 7.31678309], [1517084580000, 0.01578297, 0.015783, 0.01578297, 0.015783, 13.00548692], [1517084640000, 0.015783, 0.0158, 0.01578296, 0.01578296, 69.08055902], [1517084700000, 0.0158, 0.0158, 0.01578296, 0.015783, 1.27337106], [1517084760000, 0.0158, 0.0158, 0.01576777, 0.01576777, 4.93522601], [1517084820000, 0.01576778, 0.015783, 0.01576777, 0.015783, 1.47278629], [1517084880000, 0.01576778, 0.01579, 0.01576778, 0.01579, 6.84321772], [1517084940000, 0.01579, 0.0158, 0.01579, 0.0158, 4.91260074], [1517085000000, 0.0158, 0.015824, 0.01576778, 0.015824, 19.02185564], [1517085060000, 0.015824, 0.015824, 0.01579001, 0.01579001, 1.1703345], [1517085120000, 0.015824, 0.015824, 0.01579001, 0.01579001, 22.25319415], [1517085180000, 0.01579001, 0.0158, 0.01579001, 0.01579001, 2.82771407], [1517085240000, 0.01579001, 0.01581717, 0.01579001, 0.01579001, 6.24256915], [1517085300000, 0.01579001, 0.01583877, 0.01579001, 0.01579009, 8.90214672], [1517085360000, 0.01579009, 0.01581716, 0.01579009, 0.01579009, 0.26121893], [1517085420000, 0.01579797, 0.01579797, 0.01579009, 0.01579009, 6.01225184], [1517085480000, 0.01579797, 0.01579797, 0.01579001, 0.01579001, 13.50622865], [1517085540000, 0.01579001, 0.01579002, 0.01579001, 0.01579002, 2.24431695], [1517085600000, 0.01579003, 0.01579797, 0.01579003, 0.01579797, 4.49686292], [1517085660000, 0.01579004, 0.01579797, 0.01579004, 0.01579797, 53.73745441], [1517085720000, 0.01579797, 0.01579797, 0.01579005, 0.01579204, 36.28397789], [1517085780000, 0.01579204, 0.01579204, 0.01579204, 0.01579204, 1.35038043], [1517085840000, 0.01579005, 0.01579204, 0.01579005, 0.01579005, 2.41443844], [1517085900000, 0.01579204, 0.01579797, 0.01579204, 0.01579204, 18.75282296], [1517085960000, 0.01579797, 0.01579797, 0.01579204, 0.01579204, 5.29704174], [1517086020000, 0.01579204, 0.01579797, 0.01579204, 0.01579212, 120.74460883], [1517086080000, 0.01579797, 0.01579797, 0.01579212, 0.01579797, 8.71714991], [1517086140000, 0.01579797, 0.01579797, 0.01579797, 0.01579797, 4.01463876], [1517086200000, 0.01579212, 0.01584922, 0.01579212, 0.01584922, 133.30059905], [1517086260000, 0.01582999, 0.01582999, 0.01579796, 0.01582999, 1.78175948], [1517086320000, 0.01581079, 0.01581079, 0.01579796, 0.01579796, 11.69950943], [1517086380000, 0.01579796, 0.01579796, 0.01579223, 0.01579796, 16.85781391], [1517086440000, 0.01579796, 0.015848, 0.01579796, 0.0158, 25.36888966], [1517086500000, 0.0158, 0.015848, 0.0158, 0.0158, 16.33994812], [1517086560000, 0.01582877, 0.015848, 0.0158287, 0.0158287, 8.05368633], [1517086620000, 0.015848, 0.015848, 0.0158095, 0.0158287, 5.1073805], [1517086680000, 0.0158287, 0.01584643, 0.0158287, 0.0158287, 16.08571174], [1517086740000, 0.01584643, 0.01584643, 0.01577001, 0.01577002, 125.78452782], [1517086800000, 0.01579, 0.01584611, 0.01577002, 0.01584611, 56.59921644], [1517086860000, 0.01583, 0.01583, 0.01579, 0.01579, 13.64892318], [1517086920000, 0.01579, 0.015848, 0.01577301, 0.01583778, 57.68737071], [1517086980000, 0.01584768, 0.015848, 0.01577501, 0.015848, 40.03215348], [1517087040000, 0.01582877, 0.015848, 0.01577501, 0.01577501, 13.39507003], [1517087100000, 0.01581, 0.01581, 0.01581, 0.01581, 3.35806], [1517087160000, 0.015848, 0.015848, 0.01581, 0.01581, 14.23455013], [1517087220000, 0.01581, 0.015848, 0.01581, 0.015848, 25.70194064], [1517087280000, 0.015848, 0.015848, 0.01580996, 0.01580996, 15.62184191], [1517087340000, 0.01580996, 0.01581, 0.01579301, 0.01580301, 8.87598227], [1517087400000, 0.01579301, 0.01580301, 0.01579301, 0.01579301, 6.4717036], [1517087460000, 0.01579301, 0.01581, 0.01579301, 0.01581, 3.47045722], [1517087520000, 0.01579301, 0.01581, 0.015793, 0.01581, 23.53114994], [1517087580000, 0.01579301, 0.01581, 0.01579301, 0.01581, 0.18442625], [1517087640000, 0.01579301, 0.01581, 0.01579301, 0.01579301, 1.02950419], [1517087700000, 0.01581, 0.01581, 0.01577571, 0.01577571, 1.03991741], [1517087760000, 0.01581, 0.01581, 0.015792, 0.01581, 9.28185791], [1517087820000, 0.015792, 0.01581, 0.015792, 0.015792, 7.29391708], [1517087880000, 0.015792, 0.015792, 0.01577571, 0.015792, 3.98594529], [1517087940000, 0.015792, 0.015792, 0.01577501, 0.015792, 2.94729046], [1517088000000, 0.015792, 0.015792, 0.01577286, 0.01577286, 9.3870675], [1517088060000, 0.01577286, 0.015792, 0.01577286, 0.01577287, 7.59400084], [1517088120000, 0.015792, 0.01581, 0.01577285, 0.01577285, 19.2195036], [1517088180000, 0.01577286, 0.01581, 0.01577286, 0.01581, 5.86260247], [1517088240000, 0.01579082, 0.015815, 0.01577287, 0.01577289, 11.51492389], [1517088300000, 0.015848, 0.015848, 0.01577289, 0.015848, 12.62049911], [1517088360000, 0.015848, 0.015848, 0.01577291, 0.01582892, 8.14219632], [1517088420000, 0.01577292, 0.01582877, 0.01577291, 0.01577293, 11.67499292], [1517088480000, 0.01577293, 0.01582, 0.01577291, 0.01582, 9.01670476], [1517088540000, 0.01582, 0.01582891, 0.01582, 0.01582, 50.25404356], [1517088600000, 0.01580537, 0.01581998, 0.0157729, 0.01581998, 10.30026263], [1517088660000, 0.01581998, 0.01582891, 0.0157655, 0.0157655, 107.83604648], [1517088720000, 0.01580537, 0.01580537, 0.01576551, 0.01580537, 18.11386205], [1517088780000, 0.0157656, 0.0157656, 0.01576552, 0.01576552, 1.22144984], [1517088840000, 0.0157656, 0.01580535, 0.0157656, 0.0157656, 5.49256404], [1517088900000, 0.0157656, 0.0157656, 0.0157656, 0.0157656, 0.75755202], [1517088960000, 0.01576561, 0.01577, 0.0157656, 0.01576564, 4.72452533], [1517089020000, 0.01578617, 0.01580535, 0.0157861, 0.01578617, 9.66664275], [1517089080000, 0.01578617, 0.01578617, 0.01576563, 0.01576563, 71.99431557], [1517089140000, 0.01576563, 0.01576563, 0.0157656, 0.0157656, 45.14303809], [1517089200000, 0.01576697, 0.01576697, 0.0157656, 0.01576697, 11.15860917], [1517089260000, 0.01578612, 0.01578617, 0.01576697, 0.01576697, 13.65430069], [1517089320000, 0.01576697, 0.01576698, 0.01576697, 0.01576698, 7.35672399], [1517089380000, 0.01578596, 0.01578596, 0.01576698, 0.01578592, 9.56956192], [1517089440000, 0.01578596, 0.015786, 0.01576698, 0.015786, 13.57218461], [1517089500000, 0.01576697, 0.01578604, 0.01576697, 0.01578604, 9.15163047], [1517089560000, 0.015767, 0.01578608, 0.015767, 0.015767, 8.88341993], [1517089620000, 0.015767, 0.01578608, 0.01576699, 0.01576702, 17.48016968], [1517089680000, 0.01576702, 0.01576703, 0.01576701, 0.01576703, 9.73713589], [1517089740000, 0.01578608, 0.01578612, 0.01576703, 0.01576975, 20.07649006], [1517089800000, 0.01578612, 0.01578612, 0.01577379, 0.01577379, 15.08022435], [1517089860000, 0.01577379, 0.01578612, 0.01576702, 0.01576702, 9.66144792], [1517089920000, 0.01576702, 0.01578612, 0.01576702, 0.01576976, 8.06434964], [1517089980000, 0.01576702, 0.01576702, 0.01576562, 0.01576562, 8.12014656], [1517090040000, 0.0157656, 0.01576702, 0.0157656, 0.01576562, 13.68708152], [1517090100000, 0.01576561, 0.01576562, 0.01576561, 0.01576562, 0.24698932], [1517090160000, 0.01576562, 0.01576562, 0.0157655, 0.0157655, 59.03328548], [1517090220000, 0.0157655, 0.01576976, 0.0157655, 0.01576976, 9.47021821], [1517090280000, 0.01578612, 0.01578612, 0.0157656, 0.015775, 6.35345022], [1517090340000, 0.0157656, 0.0157656, 0.0157656, 0.0157656, 1.03925467], [1517090400000, 0.01576562, 0.015775, 0.01576562, 0.015775, 4.69198528], [1517090460000, 0.015775, 0.01582, 0.015775, 0.01582, 11.09599608], [1517090520000, 0.01582, 0.01584474, 0.0157656, 0.0157656, 20.28433965], [1517090580000, 0.01576975, 0.01576975, 0.0157656, 0.0157656, 1.57349601], [1517090640000, 0.01577, 0.01583898, 0.01577, 0.0157701, 5.64135934], [1517090700000, 0.01583897, 0.01583897, 0.0157701, 0.01583897, 16.25736097], [1517090760000, 0.01581975, 0.01583898, 0.01577001, 0.01583892, 15.88155081], [1517090820000, 0.01583892, 0.01583987, 0.01577, 0.01577, 30.03236731], [1517090880000, 0.01577047, 0.015823, 0.01577, 0.015823, 5.30430991], [1517090940000, 0.015823, 0.01582318, 0.01577083, 0.01577083, 16.91597829], [1517091000000, 0.01577083, 0.015835, 0.01577048, 0.01582997, 22.24401297], [1517091060000, 0.01577091, 0.01582997, 0.0157709, 0.01582997, 34.29108821], [1517091120000, 0.01582997, 0.01583499, 0.0157709, 0.0157715, 13.59099067], [1517091180000, 0.01583496, 0.01583498, 0.01581771, 0.01583497, 30.27251053], [1517091240000, 0.01583497, 0.01583499, 0.01583497, 0.01583498, 136.58150943], [1517091300000, 0.01583498, 0.01583499, 0.01583497, 0.01583497, 68.45117908], [1517091360000, 0.01583497, 0.01583498, 0.01583497, 0.01583497, 296.74634439], [1517091420000, 0.01583497, 0.01583497, 0.01583497, 0.01583497, 72.08353135], [1517091480000, 0.01583497, 0.01583499, 0.01583497, 0.01583497, 52.02615834], [1517091540000, 0.01583499, 0.01583499, 0.01583497, 0.01583497, 71.12777383], [1517091600000, 0.01583498, 0.01583498, 0.01583497, 0.01583497, 3.15902045], [1517091660000, 0.01583497, 0.01583498, 0.01583497, 0.01583498, 28.16857176], [1517091720000, 0.01583497, 0.01583498, 0.01583497, 0.01583498, 7.8391355], [1517091780000, 0.01583497, 0.01583498, 0.01583497, 0.01583497, 7.2953396], [1517091840000, 0.01583498, 0.01583498, 0.01583497, 0.01583497, 35.40927712], [1517091900000, 0.01583498, 0.015835, 0.01583497, 0.01583498, 69.13053145], [1517091960000, 0.01583498, 0.01583498, 0.01583497, 0.01583497, 46.37620901], [1517092020000, 0.01583497, 0.01584922, 0.01583497, 0.015837, 29.49075184], [1517092080000, 0.015837, 0.015837, 0.015837, 0.015837, 4.85064049], [1517092140000, 0.015837, 0.0158485, 0.01583497, 0.01583497, 16.61520501], [1517092200000, 0.01583497, 0.01583628, 0.01583497, 0.01583497, 17.14974141], [1517092260000, 0.01583497, 0.01583628, 0.01583497, 0.01583497, 6.54027779], [1517092320000, 0.01583623, 0.01583628, 0.01583497, 0.01583623, 39.90797945], [1517092380000, 0.01583623, 0.01583624, 0.01583623, 0.01583623, 1.6516985], [1517092440000, 0.01583623, 0.01583627, 0.01583623, 0.01583623, 8.3499935], [1517092500000, 0.01583623, 0.01583627, 0.01583623, 0.01583623, 26.76733881], [1517092560000, 0.01583627, 0.01583627, 0.01583623, 0.01583623, 23.29705201], [1517092620000, 0.01583627, 0.01583627, 0.01583627, 0.01583627, 47.42135752], [1517092680000, 0.01583627, 0.01583628, 0.01583627, 0.01583628, 23.48205976], [1517092740000, 0.01583655, 0.01584882, 0.01583628, 0.01584882, 17.08528101], [1517092800000, 0.01583628, 0.01584882, 0.01583628, 0.01583628, 24.14732872], [1517092860000, 0.01584882, 0.01584882, 0.01583628, 0.01583628, 8.71349094], [1517092920000, 0.01584882, 0.01584882, 0.01583628, 0.01584812, 5.08090484], [1517092980000, 0.01584882, 0.01584882, 0.01584812, 0.01584812, 10.40404236], [1517093040000, 0.01584812, 0.01584882, 0.01584812, 0.01584812, 4.76670337], [1517093100000, 0.01584812, 0.01584882, 0.01584812, 0.01584812, 5.28197549], [1517093160000, 0.01584812, 0.01584812, 0.01583628, 0.01583628, 1.34664823], [1517093220000, 0.01583628, 0.01584882, 0.01583628, 0.01584882, 30.46305904], [1517093280000, 0.0158375, 0.01584882, 0.0158375, 0.01584882, 4.26292342], [1517093340000, 0.01584882, 0.01584922, 0.01584882, 0.01584882, 0.39721295], [1517093400000, 0.01584922, 0.01584922, 0.01584882, 0.01584899, 4.38655308], [1517093460000, 0.01584921, 0.01584921, 0.01584899, 0.01584921, 1.76375022], [1517093520000, 0.015849, 0.01584921, 0.015849, 0.01584921, 1.32697453], [1517093580000, 0.015849, 0.01584922, 0.015849, 0.01584921, 31.02618967], [1517093640000, 0.01584922, 0.01584922, 0.01583, 0.01583, 106.63731805], [1517093700000, 0.01583, 0.01583, 0.0158108, 0.0158108, 14.72489812], [1517093760000, 0.01579162, 0.0158108, 0.01578559, 0.0158108, 8.24950728], [1517093820000, 0.01578559, 0.0158108, 0.01578559, 0.0158108, 8.21800739], [1517093880000, 0.01583, 0.01583, 0.01578946, 0.01578946, 7.70652008], [1517093940000, 0.01578946, 0.01583, 0.01578946, 0.0157898, 18.31470929], [1517094000000, 0.01578559, 0.0157898, 0.01578559, 0.0157898, 3.12122372], [1517094060000, 0.01578999, 0.01578999, 0.0157715, 0.0157898, 24.86891902], [1517094120000, 0.0157898, 0.0157898, 0.01577151, 0.01577153, 0.91331266], [1517094180000, 0.01578979, 0.01578979, 0.01577155, 0.01577155, 69.47074307], [1517094240000, 0.01578979, 0.01578979, 0.015777, 0.015777, 6.30611596], [1517094300000, 0.01578978, 0.01583, 0.01577616, 0.01583, 13.58488665], [1517094360000, 0.01578979, 0.01583, 0.01578979, 0.01583, 16.06852624], [1517094420000, 0.01583, 0.01583, 0.01583, 0.01583, 0.58075479], [1517094480000, 0.01583, 0.01584889, 0.01583, 0.01584889, 0.34076377], [1517094540000, 0.01584889, 0.01584921, 0.01583, 0.01583, 7.03294997], [1517094600000, 0.01583, 0.01584922, 0.01583, 0.01584921, 11.31498031], [1517094660000, 0.01583, 0.01584921, 0.015782, 0.015782, 21.0785219], [1517094720000, 0.01583, 0.01584922, 0.015782, 0.01584922, 5.02491656], [1517094780000, 0.0158108, 0.01584922, 0.015782, 0.01578201, 16.25967794], [1517094840000, 0.015787, 0.01583, 0.015787, 0.01583, 1.95409563], [1517094900000, 0.01583, 0.01584922, 0.01583, 0.01584922, 11.17261622], [1517094960000, 0.01584922, 0.01584922, 0.01583, 0.01583, 6.38200315], [1517095020000, 0.01583, 0.01584922, 0.01583, 0.01584922, 27.42765094], [1517095080000, 0.01584922, 0.01585, 0.01584922, 0.01585, 1.88702606], [1517095140000, 0.01584922, 0.01584922, 0.01584922, 0.01584922, 2.88899101], [1517095200000, 0.01584922, 0.01586452, 0.01584922, 0.01586452, 41.96991289], [1517095260000, 0.01586, 0.01586549, 0.01584922, 0.01584922, 36.67124843], [1517095320000, 0.01586, 0.01586, 0.01586, 0.01586, 7.40296487], [1517095380000, 0.01586, 0.01586, 0.01586, 0.01586, 0.94900491], [1517095440000, 0.01586, 0.01586545, 0.01586, 0.01586, 15.33711416], [1517095500000, 0.01584922, 0.01586549, 0.01584922, 0.01586549, 37.50461804], [1517095560000, 0.01586549, 0.01586549, 0.01586, 0.01586, 6.70801022], [1517095620000, 0.01586, 0.01586548, 0.01584922, 0.01584922, 22.09207697], [1517095680000, 0.01586548, 0.01586548, 0.01584, 0.01584623, 6.48947969], [1517095740000, 0.01584623, 0.01584623, 0.01584, 0.01584, 1.72885544], [1517095800000, 0.01584, 0.01584623, 0.01583, 0.015845, 8.78251581], [1517095860000, 0.015845, 0.015845, 0.0157852, 0.0157852, 5.47413808], [1517095920000, 0.01583, 0.01583, 0.01579, 0.01583, 2.62334105], [1517095980000, 0.015829, 0.015887, 0.015792, 0.015792, 94.56690693], [1517096040000, 0.015792, 0.015845, 0.015792, 0.015796, 21.09834001], [1517096100000, 0.015845, 0.015887, 0.01579606, 0.01586773, 12.44053877], [1517096160000, 0.015887, 0.01589001, 0.01586773, 0.01589001, 29.08623063], [1517096220000, 0.01589, 0.0159, 0.01589, 0.01589, 70.98445957], [1517096280000, 0.01589, 0.01589, 0.01581027, 0.015825, 11.99579851], [1517096340000, 0.015825, 0.01589, 0.01582, 0.01582, 12.66317742], [1517096400000, 0.015825, 0.01589, 0.015825, 0.01589, 5.54770565], [1517096460000, 0.01589, 0.01589, 0.01589, 0.01589, 12.86270976], [1517096520000, 0.01589, 0.01593, 0.0158707, 0.0158707, 59.30579405], [1517096580000, 0.0158707, 0.01588966, 0.0158707, 0.01588966, 5.48551614], [1517096640000, 0.01587038, 0.01588862, 0.01582501, 0.01588862, 3.36117718], [1517096700000, 0.01586934, 0.01594616, 0.01583, 0.01588, 19.09681786], [1517096760000, 0.01586073, 0.01586073, 0.01583004, 0.01584149, 0.69600375], [1517096820000, 0.01583004, 0.01583004, 0.01582502, 0.01583004, 55.23978321], [1517096880000, 0.01584149, 0.01584149, 0.01584149, 0.01584149, 7.16636371], [1517096940000, 0.01584149, 0.01586073, 0.015835, 0.01584149, 4.63088715], [1517097000000, 0.01584149, 0.01586073, 0.015835, 0.015835, 7.93814863], [1517097060000, 0.01586073, 0.01588, 0.015832, 0.01588, 8.01075752], [1517097120000, 0.01587968, 0.01588, 0.01584149, 0.01584149, 4.92114461], [1517097180000, 0.01584149, 0.01586041, 0.015832, 0.01586041, 1.81755626], [1517097240000, 0.01583809, 0.01588, 0.015825, 0.015825, 36.85927731], [1517097300000, 0.01586041, 0.01588, 0.015825, 0.015825, 6.10679128], [1517097360000, 0.015879, 0.01588, 0.015825, 0.01588, 7.0439172], [1517097420000, 0.01588, 0.01588, 0.015825, 0.01582501, 4.69048991], [1517097480000, 0.01587995, 0.01587995, 0.01587995, 0.01587995, 0.12563012], [1517097540000, 0.01586068, 0.01587991, 0.01582501, 0.01582501, 1.45382465], [1517097600000, 0.01587991, 0.01594, 0.01587991, 0.01592065, 58.3573662], [1517097660000, 0.01590134, 0.01591992, 0.015825, 0.01587991, 3.34978293], [1517097720000, 0.01587991, 0.01587991, 0.01587991, 0.01587991, 6.16503377], [1517097780000, 0.01587991, 0.01589994, 0.01587991, 0.01587991, 10.0944305], [1517097840000, 0.01587991, 0.01588065, 0.01584631, 0.01584631, 26.9404772], [1517097900000, 0.01582709, 0.01582709, 0.015825, 0.015825, 6.60393065], [1517097960000, 0.01586, 0.01592999, 0.01586, 0.01586, 27.55520975], [1517098020000, 0.01586, 0.01589981, 0.01586, 0.015875, 57.3037987], [1517098080000, 0.015875, 0.015875, 0.015875, 0.015875, 3.80862468], [1517098140000, 0.015875, 0.01587991, 0.015875, 0.01587991, 43.81536699], [1517098200000, 0.015875, 0.01587749, 0.015875, 0.01587749, 23.38923389], [1517098260000, 0.01586, 0.01587749, 0.01586, 0.01586, 4.70332885], [1517098320000, 0.01586, 0.01586, 0.01586, 0.01586, 5.56895222], [1517098380000, 0.01586, 0.01587995, 0.01586, 0.01586, 11.94295986], [1517098440000, 0.01586, 0.01587994, 0.015825, 0.01587991, 6.37986552], [1517098500000, 0.0158799, 0.01587991, 0.015825, 0.01587991, 33.22615746], [1517098560000, 0.01586064, 0.01588, 0.01579, 0.01588, 113.11488581], [1517098620000, 0.0158, 0.01588, 0.0158, 0.01588, 14.16647355], [1517098680000, 0.01588, 0.01589981, 0.015795, 0.01586073, 3.08002452], [1517098740000, 0.01586073, 0.01586073, 0.01586073, 0.01586073, 6.08897994], [1517098800000, 0.01587991, 0.01589978, 0.01587991, 0.01589978, 2.15880147], [1517098860000, 0.01589981, 0.01592191, 0.01578521, 0.01578521, 57.42951868], [1517098920000, 0.01581, 0.01591923, 0.01578521, 0.01580502, 40.63280084], [1517098980000, 0.015901, 0.015901, 0.015901, 0.015901, 1.06445062], [1517099040000, 0.015901, 0.01594704, 0.01585, 0.01588171, 129.38855065], [1517099100000, 0.01588171, 0.015942, 0.01588171, 0.01588171, 0.32912692], [1517099160000, 0.01588171, 0.01588171, 0.01585, 0.01585, 14.58256584], [1517099220000, 0.01585, 0.01585, 0.01585, 0.01585, 8.0], [1517099280000, 0.01585, 0.01585, 0.01585, 0.01585, 61.92740072], [1517099340000, 0.01585, 0.01585, 0.015842, 0.01585, 26.03203706], [1517099400000, 0.01585, 0.01585309, 0.01585, 0.01585, 15.22110149], [1517099460000, 0.01585309, 0.01585309, 0.01585, 0.01585, 6.29136689], [1517099520000, 0.01585309, 0.01590499, 0.01585, 0.01585, 39.30702032], [1517099580000, 0.01585, 0.01585, 0.015841, 0.01585, 6.58612439], [1517099640000, 0.01585, 0.01585, 0.015841, 0.015845, 2.86473371], [1517099700000, 0.015841, 0.015841, 0.01578703, 0.01580603, 11.62178755], [1517099760000, 0.01580603, 0.01580603, 0.01578703, 0.01580603, 74.12141821], [1517099820000, 0.01580603, 0.015845, 0.01580603, 0.015845, 32.76031535], [1517099880000, 0.01583539, 0.01583539, 0.01581, 0.01583539, 1.47135427], [1517099940000, 0.01583539, 0.015845, 0.01583539, 0.015845, 24.44039765], [1517100000000, 0.01583539, 0.01585, 0.01578573, 0.01585, 73.59592368], [1517100060000, 0.015845, 0.01585, 0.015845, 0.015845, 2.4874339], [1517100120000, 0.015845, 0.01585, 0.015845, 0.015845, 50.55078224], [1517100180000, 0.015845, 0.01585, 0.015845, 0.015845, 13.72757662], [1517100240000, 0.015845, 0.01585, 0.015845, 0.01585, 29.91983314], [1517100300000, 0.01585, 0.01585, 0.015845, 0.01585, 1.01327046], [1517100360000, 0.015845, 0.01585, 0.015845, 0.015845, 32.1934416], [1517100420000, 0.01585, 0.01585, 0.015845, 0.015845, 31.0185657], [1517100480000, 0.015845, 0.01585, 0.015845, 0.015845, 65.41381837], [1517100540000, 0.015845, 0.01585, 0.015845, 0.01585, 8.35972998], [1517100600000, 0.015845, 0.01585, 0.015845, 0.015845, 39.89832293], [1517100660000, 0.015845, 0.015845, 0.01578702, 0.015845, 27.54813583], [1517100720000, 0.01584, 0.015845, 0.015792, 0.015845, 5.3494432], [1517100780000, 0.01579204, 0.015845, 0.01579204, 0.015845, 4.54746135], [1517100840000, 0.01582, 0.015844, 0.01579201, 0.015844, 2.7174368], [1517100900000, 0.015844, 0.015845, 0.015844, 0.015845, 4.54230867], [1517100960000, 0.015845, 0.015845, 0.01584, 0.015845, 6.88494268], [1517101020000, 0.015844, 0.015844, 0.01579702, 0.01583, 2.55977148], [1517101080000, 0.01583, 0.01583, 0.01579701, 0.01579701, 23.62335531], [1517101140000, 0.01580202, 0.0158135, 0.01579701, 0.0158135, 23.24249752], [1517101200000, 0.01580202, 0.01583, 0.01579701, 0.01583, 62.54519399], [1517101260000, 0.01583, 0.01583, 0.01579201, 0.01579201, 5.49768868], [1517101320000, 0.01583, 0.01583, 0.01580001, 0.01580011, 134.41376192], [1517101380000, 0.01583, 0.01583, 0.01581, 0.01581, 11.19647438], [1517101440000, 0.01583, 0.01583, 0.01581, 0.01583, 9.35466492], [1517101500000, 0.01583, 0.01583, 0.01581001, 0.01583, 4.67769218], [1517101560000, 0.01583, 0.01583, 0.01583, 0.01583, 5.25550624], [1517101620000, 0.01583, 0.01583, 0.01581001, 0.01583, 36.64084415], [1517101680000, 0.01583, 0.01583, 0.01583, 0.01583, 13.67475198], [1517101740000, 0.01583, 0.01583, 0.01578572, 0.01578572, 62.28160486], [1517101800000, 0.01584986, 0.01585, 0.01584986, 0.01585, 6.86317741], [1517101860000, 0.01584986, 0.01585, 0.01578701, 0.01585, 4.03562814], [1517101920000, 0.01585, 0.01585, 0.01580201, 0.01580201, 0.62333353], [1517101980000, 0.01585, 0.01585, 0.01585, 0.01585, 0.06977014], [1517102040000, 0.01585, 0.01585, 0.01579201, 0.01580593, 6.95190491], [1517102100000, 0.01580594, 0.01584999, 0.01578573, 0.01578573, 29.13442154], [1517102160000, 0.01584999, 0.01585, 0.01584999, 0.01585, 5.93449256], [1517102220000, 0.01578572, 0.01585, 0.01578572, 0.01585, 5.41005263], [1517102280000, 0.01585, 0.01585, 0.01579705, 0.01584995, 5.62156344], [1517102340000, 0.01584995, 0.01584995, 0.01578706, 0.01584995, 2.17629232], [1517102400000, 0.01584995, 0.01584995, 0.01578715, 0.01578727, 6.41672554], [1517102460000, 0.01584995, 0.01584995, 0.01584995, 0.01584995, 1.3964332], [1517102520000, 0.01584995, 0.01584995, 0.01584995, 0.01584995, 23.61865609], [1517102580000, 0.01584995, 0.01585, 0.01584995, 0.01585, 0.62252089], [1517102640000, 0.01585, 0.01585, 0.01584995, 0.01584995, 16.40520034], [1517102700000, 0.01585, 0.01586167, 0.01585, 0.01586167, 1.50436458], [1517102760000, 0.01586165, 0.01586165, 0.01586165, 0.01586165, 0.1], [1517102820000, 0.01586165, 0.015862, 0.01584995, 0.015862, 12.5581315], [1517102880000, 0.015862, 0.015862, 0.015862, 0.015862, 2.05462935], [1517102940000, 0.01585005, 0.01585005, 0.01584995, 0.01584995, 1.0], [1517103000000, 0.01586194, 0.01586194, 0.01584996, 0.01584996, 4.18265799], [1517103060000, 0.01586194, 0.015875, 0.01586194, 0.015875, 19.95971346], [1517103120000, 0.015875, 0.01588968, 0.015875, 0.01588968, 4.67269386], [1517103180000, 0.01588968, 0.01588968, 0.01588968, 0.01588968, 3.39433361], [1517103240000, 0.01588968, 0.01589, 0.01584996, 0.01584996, 10.73221668], [1517103300000, 0.01589, 0.01589, 0.01588968, 0.01588968, 2.31956001], [1517103360000, 0.01588968, 0.01589, 0.01584995, 0.01589, 9.39339798], [1517103420000, 0.01584995, 0.01588968, 0.01584995, 0.01588968, 2.64397815], [1517103480000, 0.01588968, 0.01588968, 0.01588968, 0.01588968, 1.70330459], [1517103540000, 0.01584997, 0.01584997, 0.01584997, 0.01584997, 5.16720917], [1517103600000, 0.01584997, 0.01584997, 0.01584995, 0.01584997, 17.2386916], [1517103660000, 0.01584997, 0.01584997, 0.01584995, 0.01584995, 0.91525798], [1517103720000, 0.01584995, 0.01588932, 0.01584995, 0.01586582, 1.87791086], [1517103780000, 0.01588932, 0.01590489, 0.015889, 0.01590489, 16.51269824], [1517103840000, 0.01588932, 0.01588932, 0.01588932, 0.01588932, 1.54687757], [1517103900000, 0.01588932, 0.0159, 0.01584995, 0.01584995, 1.5091995], [1517103960000, 0.01586067, 0.01589999, 0.01584995, 0.01584995, 36.10194651], [1517104020000, 0.01584995, 0.01589999, 0.01582644, 0.01582644, 19.20927203], [1517104080000, 0.01582644, 0.01589967, 0.01582644, 0.015895, 11.4307605], [1517104140000, 0.015895, 0.015895, 0.01582644, 0.01582644, 11.25218108], [1517104200000, 0.01589436, 0.01589999, 0.01580201, 0.01589999, 20.62985797], [1517104260000, 0.01589999, 0.01591688, 0.01580204, 0.01591688, 8.09071168], [1517104320000, 0.01589999, 0.01589999, 0.015805, 0.015805, 10.74998948], [1517104380000, 0.01584322, 0.01589999, 0.01584322, 0.01589999, 8.4751152], [1517104440000, 0.01584322, 0.015907, 0.01581001, 0.015907, 5.49031139], [1517104500000, 0.01584322, 0.01584322, 0.01580201, 0.01580201, 6.28118917], [1517104560000, 0.01580201, 0.01580201, 0.0158, 0.0158, 8.74055185], [1517104620000, 0.01585133, 0.01585133, 0.01585133, 0.01585133, 0.25551289], [1517104680000, 0.01585133, 0.01585133, 0.01580001, 0.01580001, 4.45637973], [1517104740000, 0.0158, 0.0158, 0.0158, 0.0158, 4.53299755], [1517104800000, 0.0158499, 0.0158499, 0.0158, 0.0158, 7.97229148], [1517104860000, 0.01584986, 0.01584986, 0.0158, 0.01584982, 1.10902904], [1517104920000, 0.0158, 0.0158399, 0.0158, 0.0158, 6.59117504], [1517104980000, 0.0158399, 0.0158399, 0.0158399, 0.0158399, 5.40411294], [1517105040000, 0.0158399, 0.01584978, 0.0158399, 0.0158399, 6.77357362], [1517105100000, 0.0158399, 0.01584973, 0.0158, 0.0158, 91.79869084], [1517105160000, 0.01580001, 0.01583976, 0.01580001, 0.01583976, 2.04638078], [1517105220000, 0.01583976, 0.01583976, 0.01583976, 0.01583976, 4.71168158], [1517105280000, 0.01583976, 0.01583976, 0.01583911, 0.01583911, 2.42160008], [1517105340000, 0.01582326, 0.01583879, 0.01580002, 0.01583879, 2.59095771], [1517105400000, 0.01581, 0.01583847, 0.01581, 0.01581, 2.81890874], [1517105520000, 0.0158098, 0.01581, 0.01580002, 0.0158098, 6.32683883], [1517105580000, 0.01580002, 0.01580002, 0.01580002, 0.01580002, 1.0], [1517105640000, 0.01580002, 0.01580091, 0.01580002, 0.01580002, 1.80540318], [1517105700000, 0.01580002, 0.01580061, 0.01580002, 0.01580002, 0.87316364], [1517105760000, 0.01580002, 0.01580061, 0.01580002, 0.01580061, 15.13066684], [1517105820000, 0.01580061, 0.01580061, 0.01580002, 0.01580059, 8.01880551], [1517105880000, 0.01580059, 0.01580061, 0.01580002, 0.01580061, 21.70785901], [1517105940000, 0.01580061, 0.01581, 0.01580001, 0.01580001, 39.04383883], [1517106000000, 0.01580683, 0.01583911, 0.01580001, 0.01583911, 19.0740737], [1517106060000, 0.01580002, 0.01583911, 0.01580002, 0.01583911, 5.1014371], [1517106120000, 0.01580002, 0.0158391, 0.01580001, 0.0158391, 1.27030987], [1517106180000, 0.01580001, 0.01583909, 0.01580001, 0.01583909, 3.91096196], [1517106240000, 0.01580001, 0.01583908, 0.01580001, 0.015801, 7.37416527], [1517106300000, 0.01580003, 0.01583908, 0.01580003, 0.01583908, 10.04056316], [1517106360000, 0.01583908, 0.01583909, 0.01583908, 0.01583909, 10.61929453], [1517106420000, 0.0158391, 0.0158391, 0.0158391, 0.0158391, 5.84671833], [1517106480000, 0.01583909, 0.01583911, 0.01583909, 0.01583911, 6.8794207], [1517106540000, 0.01583911, 0.01585133, 0.01583, 0.01583, 53.88286288], [1517106600000, 0.01583911, 0.01585133, 0.01583911, 0.01585133, 8.44585158], [1517106660000, 0.01585133, 0.01585133, 0.015835, 0.01585133, 5.83957402], [1517106720000, 0.01585133, 0.01585133, 0.01585133, 0.01585133, 5.55884281], [1517106780000, 0.01585133, 0.01585133, 0.01585133, 0.01585133, 2.25546097], [1517106840000, 0.01585133, 0.01585133, 0.015835, 0.015835, 11.68633086], [1517106900000, 0.01585133, 0.01585134, 0.01585133, 0.01585134, 3.62389871], [1517106960000, 0.01585134, 0.015893, 0.01585134, 0.01585134, 0.79742146], [1517107020000, 0.015893, 0.01590507, 0.015893, 0.01589999, 15.72642006], [1517107080000, 0.01589999, 0.01589999, 0.01589999, 0.01589999, 1.16501142], [1517107140000, 0.0159, 0.0159, 0.01589999, 0.01589999, 1.73396648], [1517107200000, 0.01589999, 0.01594704, 0.01589999, 0.01594704, 68.94471684], [1517107320000, 0.015945, 0.015945, 0.01587134, 0.01587134, 16.45402105], [1517107380000, 0.01587134, 0.01587134, 0.01583639, 0.0158364, 13.88641691], [1517107440000, 0.01587134, 0.015935, 0.01582, 0.015935, 14.00547142], [1517107500000, 0.01587134, 0.015925, 0.01587134, 0.015925, 3.70726978], [1517107560000, 0.015935, 0.01594672, 0.01587134, 0.01594672, 1.36879186], [1517107620000, 0.015932, 0.015932, 0.015932, 0.015932, 0.041123], [1517107680000, 0.01588199, 0.01593668, 0.01588199, 0.01593668, 4.19360875], [1517107740000, 0.01588199, 0.01594639, 0.01588199, 0.01594639, 32.24204978], [1517107800000, 0.01588199, 0.01594671, 0.01587134, 0.015946, 1.07113517], [1517107860000, 0.015946, 0.015946, 0.01587134, 0.015946, 1.48511925], [1517107920000, 0.015946, 0.015946, 0.01583638, 0.01583638, 3.25806808], [1517107980000, 0.015945, 0.015949, 0.015945, 0.015949, 42.36493558], [1517108040000, 0.015949, 0.015949, 0.01584, 0.01584004, 25.53714145], [1517108100000, 0.01584102, 0.01586925, 0.01583653, 0.01583653, 8.02903948], [1517108160000, 0.01586925, 0.01586925, 0.01584725, 0.01584725, 2.15002429], [1517108220000, 0.01586925, 0.01595, 0.01586925, 0.01595, 2.05212566], [1517108280000, 0.01584725, 0.01584725, 0.01584725, 0.01584725, 0.035], [1517108340000, 0.0158694, 0.01586942, 0.0158694, 0.01586942, 1.43068625], [1517108400000, 0.01586942, 0.01588529, 0.0158694, 0.0158694, 7.31231402], [1517108460000, 0.0158694, 0.01594999, 0.01586925, 0.01586925, 16.76896092], [1517108520000, 0.01595, 0.01595, 0.01586925, 0.015945, 11.03843233], [1517108580000, 0.01586925, 0.01586925, 0.01586925, 0.01586925, 5.06966433], [1517108640000, 0.01586925, 0.01586925, 0.01583834, 0.01583836, 6.58933318], [1517108700000, 0.01583836, 0.01593, 0.01583304, 0.01593, 4.29042019], [1517108760000, 0.01593348, 0.01593348, 0.015843, 0.01584301, 21.77165062], [1517108820000, 0.01584301, 0.01584301, 0.01583836, 0.01584301, 80.13708699], [1517108880000, 0.01584301, 0.01584301, 0.01583836, 0.01583836, 7.20984992], [1517108940000, 0.01583836, 0.01583836, 0.01582571, 0.01582571, 26.097298], [1517109000000, 0.01583836, 0.01584301, 0.01583836, 0.01584301, 19.52419484], [1517109060000, 0.01584301, 0.01584301, 0.01584301, 0.01584301, 0.13400388], [1517109120000, 0.01584301, 0.01585885, 0.01583836, 0.01584301, 28.4144662], [1517109180000, 0.01593, 0.01593, 0.01584301, 0.01584301, 1.15915102], [1517109240000, 0.01584301, 0.01593, 0.015843, 0.01590968, 3.43000623], [1517109300000, 0.01590968, 0.01594, 0.015843, 0.0159, 7.8863698], [1517109360000, 0.015843, 0.0159, 0.015843, 0.0159, 0.6378829], [1517109420000, 0.015848, 0.015848, 0.01584301, 0.01584397, 20.6391872], [1517109480000, 0.01584397, 0.015848, 0.01583851, 0.015848, 13.18509343], [1517109540000, 0.015848, 0.015848, 0.01583851, 0.01583851, 0.36229345], [1517109600000, 0.0158385, 0.01583851, 0.0158385, 0.01583851, 0.97189805], [1517109660000, 0.01583851, 0.01589968, 0.01583851, 0.01589968, 0.67721516], [1517109720000, 0.01589968, 0.01589968, 0.01589968, 0.01589968, 1.08641712], [1517109780000, 0.015843, 0.01589968, 0.015843, 0.015843, 0.42317965], [1517109840000, 0.01589968, 0.01589968, 0.01589968, 0.01589968, 0.04400773], [1517109900000, 0.01589968, 0.01589968, 0.01588, 0.01589968, 3.56759337], [1517109960000, 0.01588, 0.01588, 0.01588, 0.01588, 0.6797404], [1517110020000, 0.0158801, 0.015885, 0.01588, 0.01588, 4.33738389], [1517110080000, 0.0158801, 0.0159, 0.0158801, 0.0159, 2.99896682], [1517110140000, 0.0159, 0.01593853, 0.01583836, 0.01583836, 13.58277325], [1517110200000, 0.01589968, 0.0159, 0.01583836, 0.01583836, 3.46912286], [1517110260000, 0.01583836, 0.01593931, 0.01583836, 0.01593931, 16.51859683], [1517110320000, 0.01583836, 0.01583836, 0.01583836, 0.01583836, 2.75865948], [1517110380000, 0.01584397, 0.015937, 0.01583836, 0.01583836, 2.82569547], [1517110440000, 0.01583836, 0.01583836, 0.01583101, 0.015836, 17.9194982], [1517110500000, 0.01589836, 0.01589836, 0.01589836, 0.01589836, 5.14983656], [1517110560000, 0.01583101, 0.01589836, 0.01583101, 0.01589836, 2.56630843], [1517110620000, 0.01588, 0.01588, 0.01584003, 0.01588, 7.44122097], [1517110680000, 0.01588, 0.015937, 0.01588, 0.015937, 1.16182092], [1517110740000, 0.01588, 0.015937, 0.01588, 0.01588, 1.30865824], [1517110800000, 0.01588, 0.015937, 0.01588, 0.01588, 9.48929775], [1517110860000, 0.015937, 0.015937, 0.01588, 0.01588, 16.31262598], [1517110920000, 0.01588, 0.01593698, 0.01588, 0.01588, 72.51704891], [1517110980000, 0.01588, 0.01593698, 0.01588, 0.0159, 4.22274838], [1517111040000, 0.0159, 0.01593698, 0.01588, 0.01593698, 7.13177132], [1517111100000, 0.01588, 0.015937, 0.01588, 0.015937, 15.77440249], [1517111160000, 0.01593698, 0.01593698, 0.015841, 0.01593698, 5.76281881], [1517111220000, 0.01593698, 0.01593698, 0.01584601, 0.01585001, 2.63715048], [1517111280000, 0.01592421, 0.01592421, 0.01592421, 0.01592421, 0.9], [1517111340000, 0.01585001, 0.01585001, 0.01585001, 0.01585001, 15.77225229], [1517111400000, 0.01592, 0.015929, 0.01585002, 0.01591, 5.33867848], [1517111460000, 0.01591, 0.01591, 0.01591, 0.01591, 0.1048714], [1517111520000, 0.01591, 0.01591, 0.01585001, 0.01585001, 0.40423698], [1517111580000, 0.01585001, 0.01591, 0.01585001, 0.01591, 4.41282738], [1517111640000, 0.0159, 0.0159, 0.01585002, 0.01585002, 2.68261992], [1517111700000, 0.01585005, 0.0159, 0.01585002, 0.015855, 2.48974976], [1517111760000, 0.015855, 0.015855, 0.01585002, 0.015855, 31.11969493], [1517111820000, 0.015855, 0.0159, 0.01585001, 0.01585001, 27.50625201], [1517111880000, 0.01585001, 0.01585001, 0.01585, 0.01585001, 35.12584392], [1517111940000, 0.01585001, 0.01585001, 0.01585001, 0.01585001, 19.30627664], [1517112000000, 0.01585, 0.01585001, 0.01585, 0.01585, 10.9091038], [1517112060000, 0.01585001, 0.01585001, 0.01585, 0.01585001, 58.6296932], [1517112120000, 0.01585001, 0.01595, 0.01585001, 0.01595, 50.11939105], [1517112180000, 0.01594983, 0.01594984, 0.01594982, 0.01594982, 18.41317113], [1517112240000, 0.01588526, 0.01594949, 0.01585001, 0.01594949, 0.55495597], [1517112300000, 0.01594, 0.01594, 0.01585, 0.01585, 52.31241376], [1517112360000, 0.01585, 0.01594, 0.01585, 0.01594, 20.03694299], [1517112420000, 0.01586, 0.01594, 0.01586, 0.01586, 14.78382294], [1517112480000, 0.01593996, 0.01593996, 0.01586, 0.01593995, 2.27744368], [1517112540000, 0.01593995, 0.01593995, 0.01586, 0.01586, 4.73962696], [1517112600000, 0.01586, 0.01586, 0.01586, 0.01586, 5.63119942], [1517112660000, 0.01586, 0.01586, 0.01586, 0.01586, 0.13911802], [1517112720000, 0.01586, 0.01586, 0.01586, 0.01586, 1.49575779], [1517112780000, 0.01586, 0.01586, 0.01584511, 0.01584511, 1.55221485], [1517112840000, 0.01593994, 0.01593994, 0.01584511, 0.01584511, 0.27406646], [1517112900000, 0.01584511, 0.01586961, 0.0158451, 0.0158451, 7.48902401], [1517112960000, 0.0158451, 0.0158451, 0.0158451, 0.0158451, 1.57079517], [1517113020000, 0.01593235, 0.01593235, 0.01584003, 0.01584003, 71.53424481], [1517113080000, 0.01593214, 0.01593214, 0.01593214, 0.01593214, 0.06904282], [1517113140000, 0.01584003, 0.0159321, 0.01584003, 0.0159321, 1.36222932], [1517113260000, 0.01584005, 0.01584005, 0.01584005, 0.01584005, 0.86], [1517113320000, 0.01585, 0.0159302, 0.01585, 0.01585, 7.050406], [1517113380000, 0.01585001, 0.01585001, 0.01585001, 0.01585001, 0.06955832], [1517113440000, 0.01592847, 0.01592847, 0.015855, 0.0159, 15.33524347], [1517113500000, 0.01589999, 0.01590868, 0.015855, 0.0158585, 45.4546626], [1517113560000, 0.01591, 0.01591, 0.015855, 0.015855, 34.50382319], [1517113620000, 0.015855, 0.015855, 0.015855, 0.015855, 22.38251726], [1517113680000, 0.015855, 0.01589967, 0.0158525, 0.0158525, 7.35147437], [1517113740000, 0.0158525, 0.01589958, 0.01584005, 0.01584005, 32.10896558], [1517113800000, 0.01589887, 0.01589888, 0.01582567, 0.0158401, 21.1588067], [1517113860000, 0.01584005, 0.01584005, 0.01581052, 0.01581052, 1.43133053], [1517113920000, 0.01581687, 0.01583978, 0.01581052, 0.01581052, 7.40169878], [1517113980000, 0.01581052, 0.01583978, 0.01581052, 0.01583946, 3.16748652], [1517114040000, 0.01583946, 0.01585594, 0.01583946, 0.0158401, 60.85526533], [1517114100000, 0.01586974, 0.01589, 0.01581053, 0.01588999, 20.02147012], [1517114220000, 0.01581053, 0.01588999, 0.015782, 0.015787, 174.89015753], [1517114280000, 0.01583055, 0.01583055, 0.015777, 0.015777, 25.64579935], [1517114340000, 0.01578, 0.01588999, 0.01578, 0.01588999, 50.1044757], [1517114400000, 0.01579401, 0.01579461, 0.01579401, 0.01579461, 1.66536025], [1517114460000, 0.01579431, 0.01579431, 0.01579431, 0.01579431, 0.90307795], [1517114520000, 0.01583015, 0.01583015, 0.01579431, 0.01579431, 2.95864083], [1517114580000, 0.01579431, 0.01579461, 0.015782, 0.015782, 24.44672534], [1517114640000, 0.01579461, 0.01579461, 0.015782, 0.01578201, 1.07484064], [1517114700000, 0.01578201, 0.01579461, 0.01577701, 0.015782, 3.87887226], [1517114760000, 0.01579461, 0.01579461, 0.01579461, 0.01579461, 1.92935042], [1517114820000, 0.01579461, 0.01579461, 0.01574, 0.01579461, 271.54071331], [1517114880000, 0.01579461, 0.01586367, 0.01577701, 0.01586367, 40.04314619], [1517114940000, 0.01587761, 0.01587762, 0.015769, 0.015769, 2.56277484], [1517115000000, 0.01587693, 0.01587693, 0.01574502, 0.01586931, 28.49293407], [1517115060000, 0.01586896, 0.01587, 0.01577001, 0.01577001, 26.81056768], [1517115180000, 0.01586968, 0.01586998, 0.01586968, 0.01586968, 11.34888164], [1517115240000, 0.01586968, 0.01587, 0.01577001, 0.01580001, 21.93319113], [1517115300000, 0.01580001, 0.01586999, 0.0158, 0.0158, 34.49535081], [1517115360000, 0.01580007, 0.01580007, 0.01580001, 0.01580001, 1.06321688], [1517115420000, 0.01580001, 0.01580001, 0.0158, 0.01580001, 4.25270892], [1517115480000, 0.01580001, 0.01580007, 0.01580001, 0.01580001, 12.77168019], [1517115540000, 0.0158, 0.01580001, 0.0158, 0.01580001, 17.1995818], [1517115600000, 0.01580001, 0.01586956, 0.0158, 0.01586956, 32.85313276], [1517115660000, 0.01586957, 0.01586957, 0.0158, 0.0158, 14.19571322], [1517115720000, 0.0158, 0.01580001, 0.0158, 0.01580001, 35.40574306], [1517115780000, 0.01580001, 0.01586925, 0.01580001, 0.01580001, 1.14978342], [1517115840000, 0.01580001, 0.01586862, 0.01580001, 0.01580002, 6.71290548], [1517115900000, 0.01580002, 0.01586858, 0.01580002, 0.01586857, 15.02224378], [1517115960000, 0.01580002, 0.01580002, 0.0158, 0.0158, 3.19433918], [1517116020000, 0.0158, 0.01580001, 0.0158, 0.0158, 31.12178366], [1517116080000, 0.0158, 0.01580001, 0.0158, 0.0158, 142.28989784], [1517116140000, 0.0158, 0.0158665, 0.0158, 0.0158665, 51.16785923], [1517116200000, 0.01580001, 0.01586651, 0.0158, 0.0158, 31.76567509], [1517116260000, 0.0158, 0.0158, 0.0158, 0.0158, 0.74833321], [1517116320000, 0.01586648, 0.01586649, 0.0158, 0.0158, 2.32064527], [1517116380000, 0.01585994, 0.01585994, 0.0158, 0.0158, 105.56653846], [1517116440000, 0.0158, 0.01581, 0.0158, 0.0158, 1.72899114], [1517116500000, 0.01581, 0.01581, 0.0158, 0.0158, 19.67526378], [1517116560000, 0.0158, 0.01581, 0.0158, 0.01581, 21.47789373], [1517116620000, 0.0158, 0.01581, 0.0158, 0.0158, 98.559913], [1517116680000, 0.0158, 0.01581, 0.0158, 0.0158, 90.69703879], [1517116740000, 0.0158, 0.0158, 0.0158, 0.0158, 19.79273704], [1517116800000, 0.0158, 0.01580091, 0.0158, 0.0158, 7.65659711], [1517116860000, 0.0158, 0.0158, 0.0158, 0.0158, 0.68881352], [1517116920000, 0.0158, 0.01580005, 0.0158, 0.01580005, 1.27562401], [1517116980000, 0.01580005, 0.01580065, 0.01577001, 0.01577001, 17.02201958], [1517117040000, 0.01577, 0.01588, 0.01574, 0.01577002, 23.848669], [1517117100000, 0.01577002, 0.01584517, 0.01574, 0.01584505, 6.91498571], [1517117160000, 0.01574001, 0.015781, 0.015728, 0.015781, 45.18191626], [1517117220000, 0.01573303, 0.01584502, 0.01573303, 0.01584502, 55.20183687], [1517117280000, 0.01574001, 0.01583499, 0.01574, 0.01582499, 15.60674138], [1517117340000, 0.01576075, 0.01582499, 0.01574501, 0.01582499, 3.95872], [1517117400000, 0.01575501, 0.01583453, 0.01574001, 0.01583453, 64.97741803], [1517117460000, 0.01583453, 0.01584502, 0.01576, 0.01576001, 22.31584212], [1517117520000, 0.01584499, 0.01584499, 0.015745, 0.015751, 2.21235496], [1517117580000, 0.015751, 0.01584502, 0.01571808, 0.0158208, 66.63769787], [1517117640000, 0.01575832, 0.0158208, 0.01574169, 0.0158208, 31.02695484], [1517117700000, 0.01574502, 0.0158208, 0.01572302, 0.01575003, 2.62633547], [1517117760000, 0.01578004, 0.01583844, 0.01574, 0.01575005, 9.14538424], [1517117820000, 0.01575005, 0.015835, 0.01575005, 0.01575005, 3.2693894], [1517117880000, 0.01575005, 0.01575005, 0.01575005, 0.01575005, 0.37795762], [1517117940000, 0.01575005, 0.01583999, 0.01575005, 0.01575007, 9.79680402], [1517118000000, 0.01583497, 0.01583497, 0.01575005, 0.01575005, 1.16861415], [1517118060000, 0.01583396, 0.01583396, 0.015738, 0.01573801, 7.13378819], [1517118120000, 0.0157381, 0.015835, 0.0157381, 0.015835, 27.05224799], [1517118180000, 0.01573804, 0.01573844, 0.01573802, 0.01573844, 3.41079119], [1517118240000, 0.01583999, 0.01584, 0.0158339, 0.01583995, 1.17094624], [1517118300000, 0.01583995, 0.01583995, 0.01573803, 0.01573803, 8.89064148], [1517118360000, 0.0158, 0.01583995, 0.0158, 0.0158, 12.02127797], [1517118420000, 0.0158, 0.01583995, 0.0158, 0.0158339, 10.38721777], [1517118480000, 0.0158339, 0.01583995, 0.0158, 0.0158339, 5.8114991], [1517118540000, 0.0158339, 0.0158339, 0.0158, 0.0158, 1.51662463], [1517118600000, 0.0158, 0.01583389, 0.0158, 0.0158, 12.88064644], [1517118660000, 0.0158, 0.01583387, 0.01567955, 0.01567955, 445.68362444], [1517118720000, 0.0157, 0.01581868, 0.01569999, 0.01577849, 101.9815972], [1517118780000, 0.01577849, 0.015817, 0.01577849, 0.01577849, 8.7206435], [1517118840000, 0.01577849, 0.01581, 0.015705, 0.01581, 3.61924436], [1517118900000, 0.01581, 0.01581, 0.01581, 0.01581, 3.42212985], [1517118960000, 0.01581597, 0.01581597, 0.01581, 0.01581, 12.91243547], [1517119020000, 0.01580996, 0.01580996, 0.01571003, 0.01571003, 4.01547321], [1517119080000, 0.01571003, 0.01580399, 0.01571003, 0.01571003, 6.76870525], [1517119140000, 0.01571003, 0.01576, 0.01571003, 0.01576, 55.10716697], [1517119200000, 0.01576, 0.01576001, 0.01571014, 0.01576001, 1.29025919], [1517119260000, 0.01576001, 0.01579967, 0.01571014, 0.0157302, 4.29303683], [1517119320000, 0.0157302, 0.01579968, 0.0157302, 0.01579968, 6.60139035], [1517119380000, 0.0158, 0.0158, 0.01571022, 0.01571022, 9.77400809], [1517119440000, 0.01579968, 0.01579968, 0.01571022, 0.01571022, 0.87270351], [1517119500000, 0.01571023, 0.015794, 0.01571023, 0.015794, 2.31634127], [1517119560000, 0.01571024, 0.01571024, 0.01571023, 0.01571023, 5.00773666], [1517119620000, 0.01578, 0.01578, 0.01571023, 0.01578, 2.31054376], [1517119680000, 0.01578023, 0.01579258, 0.0157103, 0.0157103, 12.60430117], [1517119740000, 0.0157103, 0.0157929, 0.0157103, 0.0157929, 19.47128994], [1517119800000, 0.0157103, 0.0157929, 0.0157103, 0.0157103, 11.03756734], [1517119860000, 0.0157103, 0.0157103, 0.01571023, 0.0157103, 10.6440229], [1517119920000, 0.0157103, 0.0157103, 0.0157102, 0.0157103, 17.02225103], [1517119980000, 0.0157103, 0.0157103, 0.0157102, 0.0157102, 6.90998752], [1517120040000, 0.0157102, 0.0157102, 0.0157102, 0.0157102, 7.25320485], [1517120100000, 0.015786, 0.015786, 0.01571023, 0.01571023, 0.46733123], [1517120160000, 0.01577799, 0.015778, 0.01571023, 0.01571023, 3.38863002], [1517120220000, 0.01571023, 0.01577298, 0.0157102, 0.01577298, 6.47205667], [1517120280000, 0.01575, 0.01575, 0.01570001, 0.01570001, 39.51342224], [1517120340000, 0.01570001, 0.01571, 0.01569999, 0.01571, 38.51794528], [1517120400000, 0.01571, 0.01571, 0.01570004, 0.01570004, 31.20303678], [1517120460000, 0.01569999, 0.01570053, 0.01569999, 0.01570004, 11.21629863], [1517120520000, 0.0157, 0.01570004, 0.01567995, 0.01570004, 29.95237169], [1517120580000, 0.01570004, 0.01570004, 0.015681, 0.01570004, 13.60165452], [1517120640000, 0.01570004, 0.01570004, 0.0157, 0.01570003, 15.00317332], [1517120700000, 0.0157, 0.01570003, 0.0157, 0.01570003, 2.94774062], [1517120760000, 0.0157, 0.0157, 0.015681, 0.015681, 7.09592415], [1517120820000, 0.0157, 0.0157, 0.0157, 0.0157, 0.6817559], [1517120880000, 0.0157, 0.0157, 0.0157, 0.0157, 2.07311062], [1517120940000, 0.0157, 0.0157, 0.01568101, 0.0157, 17.33982239], [1517121000000, 0.0157, 0.0157, 0.0157, 0.0157, 8.21747924], [1517121060000, 0.0157, 0.0157, 0.0157, 0.0157, 0.92856685], [1517121120000, 0.01568101, 0.0157, 0.01568101, 0.01568101, 12.66024808], [1517121180000, 0.0157, 0.01570004, 0.01568101, 0.01568101, 15.2657815], [1517121240000, 0.01568101, 0.0157, 0.01568101, 0.0157, 25.42276321], [1517121300000, 0.0157, 0.0157, 0.01568101, 0.01568101, 22.83667818], [1517121360000, 0.01568101, 0.01569999, 0.015681, 0.01569999, 29.93579112], [1517121420000, 0.015681, 0.015681, 0.01567955, 0.01567955, 33.25245276], [1517121480000, 0.01567955, 0.01567955, 0.01567955, 0.01567955, 0.39019686], [1517121540000, 0.01567955, 0.01569999, 0.0156713, 0.01569999, 83.66826886], [1517121600000, 0.01569999, 0.01569999, 0.01569999, 0.01569999, 21.78763944], [1517121660000, 0.01569999, 0.01569999, 0.01569999, 0.01569999, 1.63962997], [1517121720000, 0.01569999, 0.0157, 0.01569999, 0.0157, 1.84083167], [1517121780000, 0.01569999, 0.0157, 0.01569999, 0.01569999, 0.25849721], [1517121840000, 0.01569999, 0.01571, 0.01569999, 0.01571, 42.96754421], [1517121900000, 0.01570022, 0.01571, 0.01570021, 0.01570021, 18.77776214], [1517121960000, 0.01570021, 0.01571, 0.01570021, 0.01570021, 50.81734955], [1517122020000, 0.01570021, 0.01570025, 0.01570021, 0.01570025, 2.24223408], [1517122080000, 0.01570021, 0.01570025, 0.01570021, 0.01570025, 49.62063315], [1517122140000, 0.01570044, 0.01571, 0.01570044, 0.01571, 33.92935052], [1517122200000, 0.01571, 0.01574999, 0.01570044, 0.0157102, 15.29449367], [1517122260000, 0.01571001, 0.015783, 0.01571, 0.01571, 13.98007505], [1517122320000, 0.01571, 0.01578444, 0.01571, 0.01578444, 315.1035979], [1517122380000, 0.01578444, 0.0158, 0.01578444, 0.01578444, 94.72954425], [1517122440000, 0.01578444, 0.01578448, 0.01572984, 0.01578444, 67.88880293], [1517122500000, 0.01578444, 0.01579999, 0.01567955, 0.01567955, 304.26303903], [1517122560000, 0.015725, 0.015725, 0.0156713, 0.0156713, 4.78293552], [1517122620000, 0.0156713, 0.01567135, 0.0156713, 0.01567131, 13.03492298], [1517122680000, 0.01572, 0.015725, 0.01567131, 0.01567131, 30.19533131], [1517122740000, 0.0157, 0.01572, 0.0157, 0.0157, 3.89250243], [1517122800000, 0.0157, 0.015725, 0.0157, 0.015725, 10.84658554], [1517122860000, 0.01567131, 0.015725, 0.01567131, 0.01567131, 17.29402944], [1517122920000, 0.01567131, 0.01572481, 0.01567131, 0.015681, 13.15321661], [1517122980000, 0.01567135, 0.015681, 0.01567135, 0.015681, 13.81065906], [1517123040000, 0.01572481, 0.01572481, 0.01568101, 0.01568101, 0.16773155], [1517123100000, 0.01572481, 0.01572481, 0.01572481, 0.01572481, 11.17710943], [1517123160000, 0.01572481, 0.015725, 0.01568599, 0.01572481, 9.94711707], [1517123220000, 0.01572481, 0.01572481, 0.01572, 0.01572481, 49.13887774], [1517123280000, 0.01572069, 0.01572481, 0.01568166, 0.01572481, 10.88416353], [1517123340000, 0.01572069, 0.01572481, 0.01568632, 0.0157248, 19.5687107], [1517123400000, 0.01572481, 0.015725, 0.01572481, 0.015725, 52.76001374], [1517123460000, 0.015725, 0.01577968, 0.015691, 0.01577968, 40.61481084], [1517123520000, 0.01577968, 0.01577968, 0.015725, 0.015725, 4.82372959], [1517123580000, 0.01577936, 0.01577936, 0.01577888, 0.0157792, 13.53876042], [1517123640000, 0.0157792, 0.01579868, 0.01568167, 0.01568167, 61.13817001], [1517123700000, 0.01579797, 0.015798, 0.01568173, 0.0157792, 20.05125008], [1517123760000, 0.01577139, 0.015796, 0.01577139, 0.015796, 17.01945327], [1517123820000, 0.0156932, 0.0156932, 0.01569301, 0.01569301, 5.31345658], [1517123880000, 0.01577139, 0.0157792, 0.01568256, 0.015688, 12.53803181], [1517123940000, 0.0157792, 0.0157792, 0.01568802, 0.0157792, 9.1121115], [1517124000000, 0.015693, 0.0157792, 0.015693, 0.0157792, 0.96374569], [1517124060000, 0.0157792, 0.0157792, 0.015708, 0.0157792, 7.55267007], [1517124120000, 0.0157792, 0.0157792, 0.01571001, 0.0157792, 6.88277731], [1517124180000, 0.0157982, 0.0157982, 0.01570951, 0.0157982, 10.2265328], [1517124240000, 0.01573, 0.01579818, 0.01569601, 0.01569601, 9.34414756], [1517124300000, 0.01579819, 0.0157982, 0.01567, 0.01579818, 86.38469945], [1517124360000, 0.01579818, 0.01579818, 0.0157, 0.0157, 5.70201941], [1517124420000, 0.0157, 0.01579797, 0.0157, 0.0157, 3.08244945], [1517124480000, 0.01579796, 0.01579796, 0.0157, 0.01579796, 2.45087299], [1517124540000, 0.01579796, 0.01579813, 0.0157443, 0.01579813, 6.0085427], [1517124600000, 0.015798, 0.015798, 0.0157443, 0.015798, 1.72290219], [1517124660000, 0.015798, 0.01579866, 0.01570001, 0.0157443, 4.14273671], [1517124720000, 0.0157, 0.0157442, 0.0157, 0.0157442, 4.00726061], [1517124780000, 0.0157442, 0.0157442, 0.01570001, 0.01570001, 8.97048255], [1517124840000, 0.01570001, 0.01579999, 0.01570001, 0.015705, 244.87805688], [1517124900000, 0.015705, 0.015705, 0.01566638, 0.01568003, 212.91242053], [1517124960000, 0.01568003, 0.015705, 0.015675, 0.01569145, 164.680992], [1517125020000, 0.01569145, 0.01569145, 0.01569144, 0.01569145, 27.09901804], [1517125080000, 0.01569145, 0.015704, 0.01568559, 0.01569144, 14.93727738], [1517125140000, 0.01569144, 0.015704, 0.0156856, 0.01568562, 8.02286577], [1517125200000, 0.015704, 0.015704, 0.01568562, 0.01568562, 12.89867381], [1517125260000, 0.015704, 0.015704, 0.01568563, 0.015704, 1.33474701], [1517125320000, 0.015704, 0.015704, 0.01568569, 0.015704, 15.77246028], [1517125380000, 0.015704, 0.015704, 0.0156857, 0.015704, 14.25451483], [1517125440000, 0.015704, 0.015704, 0.01568573, 0.015704, 9.93589907], [1517125500000, 0.01568575, 0.015704, 0.01568575, 0.0157034, 5.34749004], [1517125560000, 0.0157034, 0.015704, 0.0157, 0.015704, 25.69302333], [1517125620000, 0.01570005, 0.015704, 0.01569626, 0.015704, 10.63754979], [1517125680000, 0.015704, 0.015704, 0.01569636, 0.01569636, 17.23937024], [1517125740000, 0.015704, 0.015704, 0.01569639, 0.015704, 1.61384944], [1517125800000, 0.015704, 0.015704, 0.015695, 0.015695, 70.82801426], [1517125860000, 0.015702, 0.015704, 0.01569002, 0.015691, 3.34299964], [1517125920000, 0.015693, 0.015704, 0.015691, 0.015691, 21.80798691], [1517125980000, 0.015691, 0.015704, 0.01569, 0.01569001, 17.46520318], [1517126040000, 0.01569, 0.015704, 0.01569, 0.01569, 80.23971403], [1517126100000, 0.015704, 0.0158, 0.01569011, 0.01569015, 46.19239703], [1517126160000, 0.01579996, 0.0158, 0.01579996, 0.0158, 3.74897891], [1517126220000, 0.015696, 0.01579991, 0.015696, 0.01579991, 22.51874049], [1517126280000, 0.0156969, 0.01576686, 0.01569602, 0.01576686, 5.74048859], [1517126340000, 0.01569604, 0.01569604, 0.01569602, 0.01569602, 12.87438665], [1517126400000, 0.01569603, 0.01576686, 0.01569603, 0.01569603, 14.63642836], [1517126460000, 0.01576686, 0.0158, 0.01569603, 0.0158, 17.71765795], [1517126520000, 0.01576687, 0.0158, 0.01576687, 0.01576687, 15.34802486], [1517126580000, 0.01576687, 0.0158, 0.01576687, 0.01576689, 35.09914007], [1517126640000, 0.0157999, 0.0158, 0.01569603, 0.0157495, 45.01108325], [1517126700000, 0.01571105, 0.01576688, 0.01571105, 0.01576688, 9.72090469], [1517126760000, 0.01576688, 0.01576688, 0.01571116, 0.015714, 2.97369324], [1517126820000, 0.01571502, 0.01571502, 0.01571502, 0.01571502, 4.52315736], [1517126880000, 0.01571502, 0.01571705, 0.01571502, 0.01571705, 6.46992961], [1517126940000, 0.0157495, 0.0157495, 0.01571715, 0.01571715, 3.04685116], [1517127000000, 0.01573328, 0.01573328, 0.01571717, 0.01573328, 29.82525759], [1517127060000, 0.01573328, 0.0157495, 0.01572, 0.0157495, 2.08732381], [1517127120000, 0.01572003, 0.01575, 0.01572003, 0.01572201, 10.19815084], [1517127180000, 0.015725, 0.01575, 0.015725, 0.01575, 7.60235387], [1517127240000, 0.01574001, 0.01575, 0.01574001, 0.01575, 2.95425901], [1517127300000, 0.0157401, 0.01576687, 0.0157401, 0.01576687, 7.39914317], [1517127360000, 0.01575001, 0.01579999, 0.01575001, 0.01579999, 12.13361121], [1517127420000, 0.01579999, 0.01579999, 0.01576101, 0.01576101, 5.24420777], [1517127480000, 0.01576101, 0.0157611, 0.0157501, 0.0157501, 4.52597497], [1517127540000, 0.0157509, 0.015799, 0.01575011, 0.015799, 11.24991609], [1517127600000, 0.015799, 0.01579967, 0.0157501, 0.01575017, 4.17865894], [1517127660000, 0.01575018, 0.01579999, 0.0157501, 0.0157501, 22.4270456], [1517127720000, 0.0157501, 0.01576, 0.0157501, 0.01576, 2.7], [1517127780000, 0.0157501, 0.01576, 0.01574002, 0.0157501, 6.57479129], [1517127840000, 0.01576, 0.01576, 0.01574002, 0.01576, 25.21811226], [1517127900000, 0.01576, 0.01576, 0.01574003, 0.0157599, 3.91770138], [1517127960000, 0.01575011, 0.01579, 0.01575011, 0.01579, 17.42335753], [1517128020000, 0.01579, 0.0158, 0.01576, 0.01576, 7.16334943], [1517128080000, 0.01576001, 0.01576001, 0.01576001, 0.01576001, 0.71936532], [1517128140000, 0.0158, 0.0158, 0.01576, 0.01576, 8.7063886], [1517128200000, 0.01579968, 0.01579968, 0.01576, 0.01579968, 3.95009247], [1517128260000, 0.01579968, 0.01579968, 0.01579968, 0.01579968, 0.54013832], [1517128320000, 0.01576001, 0.01579968, 0.01576, 0.01579968, 4.87656123], [1517128380000, 0.01579968, 0.01579968, 0.01576001, 0.01579968, 1.09923501], [1517128440000, 0.01579968, 0.0158, 0.01579968, 0.0158, 2.40172165], [1517128500000, 0.0158, 0.0158, 0.01576, 0.01576, 11.62174752], [1517128560000, 0.0157997, 0.0158, 0.01576, 0.01576, 12.64346659], [1517128620000, 0.01576001, 0.01577577, 0.01576001, 0.01577577, 1.82015991], [1517128680000, 0.0158, 0.0158, 0.01577577, 0.01577577, 2.6047568], [1517128740000, 0.015799, 0.0157999, 0.01577577, 0.01577577, 34.56567714], [1517128800000, 0.015799, 0.015799, 0.01577577, 0.015799, 1.79682925], [1517128860000, 0.01577577, 0.015799, 0.01577577, 0.01577577, 1.08455636], [1517128980000, 0.0157758, 0.0157758, 0.01577577, 0.01577577, 35.90958341], [1517129040000, 0.01577577, 0.015798, 0.01576001, 0.01576001, 8.7318483], [1517129100000, 0.01576001, 0.01579768, 0.01574, 0.01577577, 29.67708251], [1517129160000, 0.01579768, 0.01579768, 0.01574001, 0.01579768, 9.78862218], [1517129220000, 0.01574, 0.01579768, 0.01574, 0.01579768, 34.79230548], [1517129280000, 0.01579768, 0.0158, 0.01579768, 0.015798, 21.02067272], [1517129340000, 0.015798, 0.015798, 0.01579768, 0.01579768, 67.5856485], [1517129400000, 0.0158, 0.01582499, 0.015798, 0.0158, 7.08826572], [1517129460000, 0.015798, 0.015798, 0.015798, 0.015798, 0.74558133], [1517129520000, 0.01579768, 0.01579999, 0.01579768, 0.01579768, 8.21172461], [1517129580000, 0.015798, 0.01579999, 0.01578888, 0.015798, 6.07175633], [1517129640000, 0.015798, 0.015798, 0.01574001, 0.015743, 113.83888811], [1517129700000, 0.01578, 0.01578, 0.01578, 0.01578, 0.3], [1517129760000, 0.01579795, 0.01579795, 0.01578, 0.01578, 5.59688933], [1517129820000, 0.01578002, 0.015792, 0.01578002, 0.0157801, 29.75556769], [1517129880000, 0.01579196, 0.015796, 0.01573357, 0.015796, 39.81557529], [1517129940000, 0.01572001, 0.015796, 0.01572001, 0.01573, 13.74639688], [1517130000000, 0.01573, 0.01579568, 0.01572011, 0.01579568, 27.47280773], [1517130060000, 0.01579568, 0.01579568, 0.01572017, 0.01574, 14.57025278], [1517130120000, 0.01572119, 0.0157951, 0.01572119, 0.015795, 6.24435225], [1517130180000, 0.0157951, 0.0157951, 0.01574001, 0.01574001, 0.64765802], [1517130240000, 0.01574001, 0.01579478, 0.01574001, 0.01575, 1.27048419], [1517130300000, 0.01575, 0.0157951, 0.01575, 0.0157951, 57.8218624], [1517130360000, 0.01579997, 0.01579997, 0.01575, 0.01575, 4.8566844], [1517130420000, 0.01575001, 0.01579991, 0.01575001, 0.01579986, 4.52657458], [1517130480000, 0.01579986, 0.01579986, 0.01575017, 0.01579986, 2.36088571], [1517130540000, 0.01579986, 0.01579986, 0.015761, 0.01579986, 8.91541716], [1517130600000, 0.01579986, 0.01580001, 0.01579986, 0.01580001, 14.79636555], [1517130660000, 0.01580001, 0.01580001, 0.01580001, 0.01580001, 3.79992095], [1517130720000, 0.01582467, 0.01582467, 0.01582467, 0.01582467, 0.0745], [1517130780000, 0.01582499, 0.01582499, 0.0158248, 0.0158248, 3.61316007], [1517130840000, 0.0158248, 0.01582499, 0.0158248, 0.01582499, 3.92103821], [1517130900000, 0.01582499, 0.01582499, 0.0158248, 0.01582499, 8.89772594], [1517130960000, 0.01582499, 0.01582499, 0.01574503, 0.01582499, 15.20466901], [1517131020000, 0.01582499, 0.01582499, 0.01582499, 0.01582499, 1.13760204], [1517131080000, 0.01575028, 0.01582499, 0.01575028, 0.01575043, 39.75418144], [1517131140000, 0.01575053, 0.01582769, 0.01575053, 0.01582769, 33.34128901], [1517131200000, 0.01582802, 0.01582802, 0.01576901, 0.01582801, 1.70906304], [1517131260000, 0.01582801, 0.01582802, 0.01582801, 0.01582802, 14.06317784], [1517131320000, 0.01582802, 0.01582802, 0.0158277, 0.0158277, 1.55691785], [1517131380000, 0.01582802, 0.01582802, 0.01582802, 0.01582802, 6.5752212], [1517131440000, 0.01582802, 0.01582802, 0.01579506, 0.01579509, 17.45601097], [1517131500000, 0.01579509, 0.01582802, 0.01575502, 0.01582802, 1.79613218], [1517131560000, 0.01582802, 0.01583387, 0.01579355, 0.01583387, 13.58457273], [1517131620000, 0.01583387, 0.01583777, 0.01581049, 0.01581049, 66.94089259], [1517131680000, 0.01585, 0.01585, 0.0158105, 0.01585, 72.42500024], [1517131740000, 0.01585, 0.01585, 0.0158105, 0.0158105, 18.43738706], [1517131800000, 0.01581503, 0.015849, 0.01581503, 0.01581503, 7.28466388], [1517131860000, 0.01585, 0.015868, 0.01581504, 0.01586799, 31.03219852], [1517131920000, 0.01586799, 0.01587877, 0.01582044, 0.01582048, 11.82356207], [1517131980000, 0.01586764, 0.01586796, 0.01582046, 0.01586796, 7.64589781], [1517132040000, 0.01586, 0.01586, 0.01582126, 0.01586, 7.88629046], [1517132100000, 0.01586796, 0.01587877, 0.01580975, 0.01580975, 24.34517535], [1517132160000, 0.01580974, 0.01580974, 0.01578032, 0.01580974, 41.74141218], [1517132220000, 0.01578077, 0.01586, 0.01578077, 0.01586, 13.13387254], [1517132280000, 0.01579005, 0.01586, 0.01579005, 0.01579019, 4.52530924], [1517132340000, 0.01586, 0.01586, 0.01579014, 0.01579014, 0.69630434], [1517132400000, 0.01585, 0.01585, 0.01580005, 0.01580084, 5.72356166], [1517132460000, 0.01585, 0.01585, 0.01579012, 0.01579012, 26.04790207], [1517132520000, 0.01579012, 0.01579012, 0.01579011, 0.01579012, 3.7429075], [1517132580000, 0.01583, 0.01583, 0.01575902, 0.01576105, 33.30715224], [1517132640000, 0.01581012, 0.015829, 0.01576105, 0.015829, 63.49946156], [1517132700000, 0.015829, 0.01583, 0.015829, 0.01583, 7.59102888], [1517132760000, 0.01583, 0.01586, 0.01575918, 0.01586, 25.60789587], [1517132820000, 0.01585, 0.01585, 0.01585, 0.01585, 2.00700299], [1517132880000, 0.01585, 0.01585968, 0.01585, 0.01585, 15.89093175], [1517132940000, 0.01585, 0.01586, 0.0157598, 0.0157598, 95.249824], [1517133000000, 0.01575981, 0.01585998, 0.0157598, 0.01578566, 14.25160144], [1517133060000, 0.01579001, 0.01579001, 0.01579001, 0.01579001, 0.38694883], [1517133120000, 0.01579001, 0.01579001, 0.01579001, 0.01579001, 1.36947885], [1517133180000, 0.01585977, 0.01585977, 0.01579001, 0.01585975, 0.62408566], [1517133240000, 0.01585899, 0.01585899, 0.01579001, 0.01579001, 1.19042212], [1517133300000, 0.01579001, 0.01584995, 0.01579001, 0.01579713, 13.46648247], [1517133360000, 0.01579713, 0.015849, 0.01579713, 0.01579713, 5.32914832], [1517133420000, 0.01584895, 0.01584895, 0.01579713, 0.015798, 3.75380115], [1517133480000, 0.01584895, 0.015849, 0.015798, 0.015798, 15.14158064], [1517133540000, 0.01584859, 0.01589115, 0.0158485, 0.01589115, 47.7387268], [1517133600000, 0.015848, 0.01587909, 0.015798, 0.01579969, 38.57448967], [1517133660000, 0.01579968, 0.01579969, 0.015798, 0.01579969, 6.97450414], [1517133720000, 0.015798, 0.01579969, 0.015798, 0.01579969, 159.2868078], [1517133780000, 0.01579969, 0.01584988, 0.01579969, 0.01584988, 4.4383213], [1517133840000, 0.01583, 0.01585, 0.0158, 0.01585, 6.20454768], [1517133900000, 0.01584995, 0.0158502, 0.0158, 0.01584996, 11.43679851], [1517133960000, 0.01584996, 0.01588847, 0.01584995, 0.01584995, 7.57524191], [1517134020000, 0.01584996, 0.01584996, 0.01584995, 0.01584995, 1.33758883], [1517134080000, 0.01584996, 0.01592, 0.01584995, 0.01584995, 202.22235235], [1517134140000, 0.01584995, 0.01589895, 0.01584995, 0.01584995, 20.61766171], [1517134200000, 0.01584995, 0.01584995, 0.01584995, 0.01584995, 0.96553361], [1517134260000, 0.01585, 0.01589594, 0.01585, 0.01589594, 3.3715384], [1517134320000, 0.01589594, 0.01589594, 0.01584995, 0.01584995, 26.63759471], [1517134380000, 0.01584995, 0.01589593, 0.01584995, 0.01589593, 3.1822239], [1517134440000, 0.01589593, 0.01589593, 0.01584995, 0.01584995, 3.8987305], [1517134500000, 0.01584995, 0.01584995, 0.015805, 0.01584995, 3.98582729], [1517134560000, 0.01584995, 0.01584995, 0.015805, 0.01584995, 11.66937709], [1517134620000, 0.01584995, 0.01584995, 0.015805, 0.0158498, 8.49094852], [1517134680000, 0.015891, 0.015895, 0.0158498, 0.01585, 10.40132151], [1517134740000, 0.01585, 0.015908, 0.01584995, 0.0158913, 56.82375586], [1517134800000, 0.0158913, 0.0158913, 0.01580004, 0.0158913, 11.59404404], [1517134860000, 0.01589098, 0.0158913, 0.015801, 0.0158913, 17.77007151], [1517134920000, 0.01589126, 0.015908, 0.015803, 0.015908, 14.42476921], [1517134980000, 0.015807, 0.01591995, 0.01580505, 0.01591995, 57.81452561], [1517135040000, 0.01591995, 0.01591995, 0.01581005, 0.01591246, 3.50456334], [1517135100000, 0.015907, 0.015907, 0.01581053, 0.01581053, 1.12865405], [1517135160000, 0.01581296, 0.01591235, 0.01581296, 0.01586, 29.10676461], [1517135220000, 0.01581337, 0.01591238, 0.01581337, 0.01591238, 22.61320835], [1517135280000, 0.01591238, 0.01591238, 0.01586, 0.01588, 17.20619483], [1517135340000, 0.01588, 0.01588, 0.01588, 0.01588, 15.46630026], [1517135400000, 0.01588, 0.01588, 0.01586, 0.01588, 14.03781099], [1517135460000, 0.01588, 0.01588, 0.01588, 0.01588, 10.07941243], [1517135520000, 0.01588, 0.01588, 0.01586, 0.01586, 7.53766695], [1517135580000, 0.01588, 0.01591237, 0.01588, 0.01591237, 48.03794103], [1517135640000, 0.01586126, 0.01591238, 0.01586126, 0.01591238, 15.09419007], [1517135700000, 0.01586147, 0.01591238, 0.01586147, 0.01591238, 3.51191735], [1517135760000, 0.01591238, 0.015931, 0.01588, 0.015931, 46.53836645], [1517135820000, 0.0159, 0.01593, 0.01588, 0.01588, 5.78274448], [1517135880000, 0.01593, 0.01594299, 0.01588, 0.015926, 85.6383164], [1517135940000, 0.015926, 0.01594444, 0.015926, 0.015926, 4.40922991], [1517136000000, 0.01594, 0.01594, 0.01590437, 0.015926, 13.09343454], [1517136060000, 0.015926, 0.015926, 0.0158802, 0.01592598, 21.00262001], [1517136120000, 0.01592598, 0.01592598, 0.0158802, 0.01592598, 11.08659778], [1517136180000, 0.0158802, 0.01592598, 0.01586126, 0.01592598, 65.04467992], [1517136240000, 0.01592597, 0.01592597, 0.01586, 0.015925, 10.60987073], [1517136300000, 0.015925, 0.01594592, 0.01586, 0.01592496, 21.85040741], [1517136360000, 0.01592496, 0.015955, 0.01586, 0.01592496, 90.1108032], [1517136420000, 0.01592496, 0.01596521, 0.01592496, 0.01596521, 11.84116127], [1517136480000, 0.01596521, 0.01596521, 0.01586601, 0.01595, 27.75049012], [1517136540000, 0.01586, 0.01596456, 0.01586, 0.01586005, 6.69789245], [1517136600000, 0.01586008, 0.01596456, 0.01586007, 0.01596456, 40.85150343], [1517136660000, 0.01596456, 0.01596456, 0.015869, 0.01596, 33.64834319], [1517136720000, 0.01596, 0.01596456, 0.01586003, 0.01596456, 23.05787317], [1517136780000, 0.01596456, 0.01596456, 0.01586002, 0.01587, 7.60626497], [1517136840000, 0.01596299, 0.01596299, 0.01586005, 0.01587, 27.27522365], [1517136900000, 0.01587, 0.01596455, 0.01587, 0.015963, 20.87729733], [1517136960000, 0.01589975, 0.01596455, 0.01586, 0.01586004, 29.17061833], [1517137020000, 0.01586009, 0.01596455, 0.01586006, 0.01596451, 25.59533831], [1517137080000, 0.0158602, 0.0159645, 0.01586019, 0.0159645, 20.04900749], [1517137140000, 0.01586021, 0.01596438, 0.01586021, 0.01596428, 12.0087351], [1517137200000, 0.01596428, 0.0159645, 0.01589175, 0.01589175, 16.66469925], [1517137260000, 0.01596447, 0.01596447, 0.01589175, 0.01589175, 6.78706374], [1517137320000, 0.01589176, 0.0159631, 0.01589175, 0.01593942, 4.62078078], [1517137380000, 0.0159631, 0.0159631, 0.01593942, 0.01593949, 5.59376778], [1517137440000, 0.01593949, 0.01596451, 0.01593942, 0.01593942, 22.46607329], [1517137500000, 0.01596451, 0.01596451, 0.01589177, 0.01589177, 92.13143223], [1517137560000, 0.01596447, 0.0159645, 0.01596446, 0.0159645, 11.64722328], [1517137620000, 0.01593944, 0.01596449, 0.01589177, 0.01596449, 8.51547769], [1517137680000, 0.01596449, 0.01596451, 0.01596, 0.01596, 6.52537264], [1517137740000, 0.01596, 0.01596, 0.01596, 0.01596, 0.31994228], [1517137800000, 0.01589177, 0.01596, 0.01589177, 0.0159394, 6.4574023], [1517137860000, 0.0159394, 0.01596, 0.0159394, 0.01596, 8.63150151], [1517137920000, 0.01596, 0.01596, 0.0159394, 0.0159394, 13.87279215], [1517137980000, 0.01596, 0.01596, 0.0159394, 0.01596, 2.11055521], [1517138040000, 0.0159394, 0.01596, 0.0159394, 0.01596, 17.7946789], [1517138100000, 0.01593942, 0.0159395, 0.01593941, 0.01593941, 13.6890999], [1517138160000, 0.01593941, 0.01593942, 0.01589177, 0.01593941, 24.32657798], [1517138220000, 0.01593941, 0.01593942, 0.01586662, 0.01587001, 10.71173118], [1517138280000, 0.01593942, 0.01596, 0.01587081, 0.01587081, 15.55766437], [1517138340000, 0.01593942, 0.01593942, 0.01587082, 0.01593941, 23.73075955], [1517138400000, 0.01593942, 0.01593942, 0.01586, 0.01586079, 103.54555274], [1517138460000, 0.01586081, 0.01593942, 0.01586081, 0.01586084, 8.28485895], [1517138520000, 0.01587101, 0.01593942, 0.01587101, 0.01587103, 9.70181157], [1517138580000, 0.01593941, 0.01593942, 0.01593941, 0.01593941, 18.27736949], [1517138640000, 0.01593941, 0.01593941, 0.0159394, 0.0159394, 5.55126226], [1517138700000, 0.0159394, 0.0159394, 0.0159394, 0.0159394, 0.48199841], [1517138760000, 0.01588114, 0.0159394, 0.01588114, 0.0159394, 5.84774867], [1517138820000, 0.01593939, 0.01596, 0.01589601, 0.0159, 100.83510835], [1517138880000, 0.01593, 0.01593, 0.01590001, 0.01593, 41.13778591], [1517138940000, 0.01593, 0.01597345, 0.01593, 0.01597345, 109.10928936], [1517139000000, 0.01597345, 0.01597345, 0.01596, 0.01597344, 7.08601464], [1517139060000, 0.01597344, 0.01597345, 0.01596, 0.01596001, 6.77177681], [1517139120000, 0.01596, 0.0159734, 0.01596, 0.01596001, 12.32479794], [1517139180000, 0.0159734, 0.01597345, 0.0159734, 0.01597345, 7.1874655], [1517139240000, 0.0159734, 0.01597344, 0.0159734, 0.01597344, 3.2082266], [1517139300000, 0.0159734, 0.01597345, 0.0159734, 0.01597344, 42.12670348], [1517139360000, 0.01597345, 0.01597811, 0.01597345, 0.01597345, 68.0754391], [1517139420000, 0.01597811, 0.01599, 0.01597811, 0.01599, 87.54102959], [1517139480000, 0.01599232, 0.01599232, 0.01599, 0.01599232, 39.14820908], [1517139540000, 0.01599232, 0.01599997, 0.01599232, 0.0159999, 66.32847438], [1517139600000, 0.0159999, 0.01599999, 0.0159999, 0.01599999, 5.79083163], [1517139660000, 0.01599999, 0.016, 0.0159734, 0.0159999, 35.18568922], [1517139720000, 0.01599997, 0.01599997, 0.0159999, 0.01599997, 6.29748485], [1517139780000, 0.01599997, 0.01599997, 0.01599997, 0.01599997, 0.0689069], [1517139840000, 0.01599997, 0.01599999, 0.01599997, 0.01599999, 7.32135504], [1517139900000, 0.01599997, 0.016, 0.01599997, 0.016, 8.36004374], [1517139960000, 0.016, 0.016, 0.01599997, 0.01599999, 65.0414386], [1517140020000, 0.016, 0.016, 0.01599999, 0.016, 99.63201446], [1517140080000, 0.016, 0.016, 0.01599999, 0.016, 15.62340415], [1517140140000, 0.016, 0.016006, 0.016, 0.016, 45.63910366], [1517140200000, 0.016, 0.016, 0.01599999, 0.016, 9.31433172], [1517140260000, 0.016, 0.016, 0.01599999, 0.01599999, 9.65909377], [1517140320000, 0.01599999, 0.01599999, 0.01599999, 0.01599999, 4.36951448], [1517140380000, 0.01599999, 0.016, 0.01599999, 0.016, 5.51367291], [1517140440000, 0.016, 0.016, 0.01599998, 0.01599999, 15.49248433], [1517140500000, 0.01599998, 0.01599999, 0.01594008, 0.01599999, 33.33826944], [1517140560000, 0.01599999, 0.01599999, 0.01599999, 0.01599999, 13.70196929], [1517140620000, 0.01599999, 0.016, 0.01599998, 0.016, 17.77887948], [1517140680000, 0.016006, 0.016006, 0.016, 0.016006, 6.5028501], [1517140740000, 0.016, 0.016006, 0.016, 0.016, 23.1149219], [1517140800000, 0.016, 0.01600595, 0.016, 0.01600595, 46.68589743], [1517140860000, 0.01600595, 0.01600595, 0.016, 0.016, 51.15310044], [1517140920000, 0.016, 0.01600599, 0.01599999, 0.01599999, 23.63899791], [1517140980000, 0.01599999, 0.016006, 0.01594099, 0.016006, 17.7950192], [1517141040000, 0.016006, 0.01600808, 0.016, 0.01600808, 64.70286901], [1517141100000, 0.01600808, 0.01603006, 0.01600808, 0.01603006, 26.30172503], [1517141160000, 0.01603006, 0.016075, 0.01603006, 0.016075, 128.47533123], [1517141220000, 0.016075, 0.016075, 0.016006, 0.01605559, 70.55025851], [1517141280000, 0.01605559, 0.01607506, 0.016045, 0.016045, 8.18755359], [1517141340000, 0.01607506, 0.01607506, 0.016045, 0.016045, 16.09640755], [1517141400000, 0.016045, 0.01607587, 0.016045, 0.01607587, 17.94466784], [1517141460000, 0.01607587, 0.0161, 0.016006, 0.016006, 100.51218606], [1517141520000, 0.01609, 0.016095, 0.016006, 0.016095, 9.48343025], [1517141580000, 0.01602896, 0.01602896, 0.01602896, 0.01602896, 1.05118179], [1517141640000, 0.01608999, 0.016095, 0.01602896, 0.01608968, 8.97549891], [1517141700000, 0.016094, 0.016094, 0.016006, 0.01609368, 28.1910971], [1517141760000, 0.016006, 0.01609468, 0.016006, 0.01608241, 21.01376577], [1517141820000, 0.01608241, 0.016094, 0.01600199, 0.01600199, 30.43622477], [1517141880000, 0.01609397, 0.01609397, 0.0159889, 0.0160102, 38.12536203], [1517141940000, 0.01607897, 0.016104, 0.01601021, 0.01602896, 101.8636588], [1517142000000, 0.01608897, 0.01608897, 0.01598892, 0.01608896, 47.36183832], [1517142060000, 0.01608896, 0.01608896, 0.01598749, 0.015991, 15.84676298], [1517142120000, 0.015991, 0.016087, 0.015991, 0.01608599, 86.78245599], [1517142180000, 0.01599901, 0.01608599, 0.01599101, 0.01608599, 16.0174318], [1517142240000, 0.01604, 0.01604, 0.01598899, 0.01598899, 14.55800817], [1517142300000, 0.01606893, 0.01608, 0.01601093, 0.01601094, 24.58256219], [1517142360000, 0.01601094, 0.01610295, 0.01601094, 0.01610295, 33.93833585], [1517142420000, 0.01610295, 0.016104, 0.01601094, 0.01601094, 2.88946521], [1517142480000, 0.016099, 0.016099, 0.01601094, 0.01601094, 5.35071728], [1517142540000, 0.01601094, 0.016099, 0.01601094, 0.016099, 5.32246066], [1517142600000, 0.016021, 0.0161049, 0.016021, 0.0161049, 34.25035223], [1517142660000, 0.0161049, 0.016111, 0.01601603, 0.016111, 12.01968919], [1517142720000, 0.016108, 0.01611, 0.01601603, 0.01611, 12.26842145], [1517142780000, 0.01601605, 0.01611, 0.01601605, 0.01611, 18.4275237], [1517142840000, 0.01611, 0.01611111, 0.01601606, 0.01601606, 10.51093436], [1517142900000, 0.01611111, 0.01612, 0.01601606, 0.01612, 10.62243027], [1517142960000, 0.0161134, 0.016125, 0.01601607, 0.0161134, 4.18090604], [1517143020000, 0.0161134, 0.0161134, 0.01602, 0.01602, 2.68574416], [1517143080000, 0.016021, 0.01611339, 0.01602, 0.01602101, 16.93772175], [1517143140000, 0.01602101, 0.01602101, 0.01601607, 0.01602101, 4.48600211], [1517143200000, 0.01602101, 0.01609335, 0.01601607, 0.01609335, 34.69133015], [1517143260000, 0.01609335, 0.01611339, 0.01601607, 0.01601607, 41.6978029], [1517143320000, 0.01601801, 0.016026, 0.01601801, 0.016026, 1.66984682], [1517143380000, 0.016021, 0.01609647, 0.01602, 0.01609647, 2.32692122], [1517143440000, 0.01601801, 0.01609647, 0.01601607, 0.01609, 4.58067267], [1517143500000, 0.01604977, 0.01611, 0.01601608, 0.01609, 15.2564897], [1517143560000, 0.01601609, 0.01609, 0.01601608, 0.01601608, 39.40867334], [1517143620000, 0.01609302, 0.0161134, 0.01601609, 0.0161134, 36.89171327], [1517143680000, 0.01611338, 0.01611338, 0.0160161, 0.0160161, 25.932156], [1517143740000, 0.01611338, 0.0161134, 0.01601612, 0.016018, 31.95244685], [1517143800000, 0.016017, 0.016108, 0.01601607, 0.01601607, 64.87611988], [1517143860000, 0.016108, 0.01611338, 0.01601608, 0.01601611, 37.27702825], [1517143920000, 0.016025, 0.01610796, 0.01601611, 0.01601613, 33.39877717], [1517143980000, 0.016025, 0.01604688, 0.01601613, 0.01604688, 52.36608362], [1517144040000, 0.01604688, 0.016103, 0.01598749, 0.01601608, 48.60093692], [1517144100000, 0.01610287, 0.01610287, 0.01608674, 0.01610284, 4.91995774], [1517144160000, 0.01601608, 0.0161, 0.01601608, 0.016018, 7.54293813], [1517144220000, 0.0161, 0.0161, 0.01599603, 0.01603274, 8.37814593], [1517144280000, 0.01603274, 0.0161, 0.01600602, 0.01609968, 19.89086199], [1517144340000, 0.01600605, 0.01609936, 0.01600605, 0.01609904, 3.87850272], [1517144400000, 0.01609904, 0.01609904, 0.016001, 0.01600301, 91.64410487], [1517144460000, 0.016093, 0.016093, 0.01600301, 0.01600301, 1.44382262], [1517144520000, 0.01600642, 0.01609298, 0.01600642, 0.01609295, 3.86276633], [1517144580000, 0.01609295, 0.016093, 0.01600973, 0.016093, 12.51701825], [1517144640000, 0.01609291, 0.016093, 0.01600997, 0.01608919, 5.5031267], [1517144700000, 0.01608919, 0.01609, 0.01601009, 0.01609, 25.87133468], [1517144760000, 0.01601051, 0.016093, 0.01601051, 0.01609296, 8.4619031], [1517144820000, 0.01601603, 0.01609296, 0.01601603, 0.01609296, 15.999], [1517144880000, 0.01609, 0.016092, 0.01601605, 0.01609, 7.73554879], [1517144940000, 0.016091, 0.016091, 0.01602998, 0.01602998, 15.38464858], [1517145000000, 0.01602005, 0.016091, 0.0160101, 0.01609099, 8.51030197], [1517145060000, 0.01609, 0.016145, 0.01603, 0.01613699, 289.8024243], [1517145120000, 0.016145, 0.01617352, 0.016061, 0.01617352, 119.18408065], [1517145180000, 0.01617068, 0.0162, 0.01615, 0.0162, 486.95133684], [1517145240000, 0.01612, 0.01620118, 0.01612, 0.01620117, 218.38241312], [1517145300000, 0.01620117, 0.0162125, 0.01614501, 0.01614501, 197.06700454], [1517145360000, 0.01615001, 0.0162426, 0.01615001, 0.0162001, 100.83731039], [1517145420000, 0.01620031, 0.01624859, 0.01617, 0.01618, 89.57329984], [1517145480000, 0.01618, 0.0162425, 0.01618, 0.01620044, 22.47951739], [1517145540000, 0.01618101, 0.01620044, 0.016181, 0.01618108, 25.10757303], [1517145600000, 0.01618108, 0.01620044, 0.016181, 0.016181, 32.86842172], [1517145660000, 0.01617, 0.01620044, 0.01614501, 0.0161601, 67.74453523], [1517145720000, 0.01620043, 0.01620043, 0.0161601, 0.0161601, 4.20509114], [1517145780000, 0.01620042, 0.01620043, 0.01616011, 0.01616011, 103.05484875], [1517145840000, 0.01620042, 0.01620043, 0.01616013, 0.01616013, 41.81838109], [1517145900000, 0.01620042, 0.01620042, 0.01616013, 0.01618474, 8.78229491], [1517145960000, 0.01618474, 0.01618474, 0.01614001, 0.01616011, 113.18681912], [1517146020000, 0.01616011, 0.0162004, 0.01610802, 0.01611801, 14.28098956], [1517146080000, 0.01611801, 0.01619993, 0.016113, 0.01616, 50.37144618], [1517146140000, 0.01619989, 0.01619989, 0.01616, 0.01619984, 21.56415387], [1517146200000, 0.01616, 0.01619989, 0.01614506, 0.01619989, 11.87317058], [1517146260000, 0.01619989, 0.0162, 0.01619982, 0.01619982, 19.99527642], [1517146320000, 0.01619982, 0.01620041, 0.01619982, 0.0162, 3.67190911], [1517146380000, 0.0162002, 0.01620044, 0.0162, 0.01620044, 28.10871677], [1517146440000, 0.01620044, 0.016218, 0.01619982, 0.01619982, 57.8653655], [1517146500000, 0.016213, 0.016213, 0.01614001, 0.0161998, 2.68141757], [1517146560000, 0.0161998, 0.0161998, 0.01618, 0.01619979, 8.7353873], [1517146620000, 0.01618, 0.01618, 0.01618, 0.01618, 0.36952875], [1517146680000, 0.01617999, 0.01617999, 0.01614006, 0.01614007, 14.78327414], [1517146740000, 0.01614009, 0.01617999, 0.01614007, 0.01617999, 9.57829416], [1517146800000, 0.01617999, 0.01617999, 0.01617998, 0.01617999, 5.00305969], [1517146860000, 0.01614007, 0.01614007, 0.01614005, 0.01614005, 0.59976538], [1517146920000, 0.016175, 0.016175, 0.0161, 0.016175, 11.27310865], [1517146980000, 0.01610005, 0.016175, 0.01609001, 0.016175, 17.55969534], [1517147040000, 0.01617999, 0.01618, 0.01613, 0.01618, 22.51110974], [1517147100000, 0.01617999, 0.01619947, 0.01613, 0.01618, 71.94228584], [1517147160000, 0.01619062, 0.01619979, 0.01618, 0.01618, 15.82222309], [1517147220000, 0.01618, 0.01618599, 0.01618, 0.01618, 6.4247666], [1517147280000, 0.01618, 0.01618, 0.01615, 0.01615, 14.44578839], [1517147340000, 0.01615, 0.01618, 0.01608927, 0.01617968, 51.48113955], [1517147400000, 0.01617968, 0.01621267, 0.01617968, 0.01621265, 65.49855576], [1517147460000, 0.01621265, 0.01621267, 0.01611001, 0.01616, 19.25416665], [1517147520000, 0.01616, 0.01621198, 0.01616, 0.01616, 26.60661819], [1517147580000, 0.01621198, 0.01621198, 0.01621198, 0.01621198, 5.05684516], [1517147640000, 0.01621198, 0.01621198, 0.016175, 0.016175, 4.75540337], [1517147700000, 0.016175, 0.01621133, 0.016175, 0.016175, 6.29445087], [1517147760000, 0.01621101, 0.01621101, 0.01615032, 0.01615622, 4.55954061], [1517147820000, 0.01617, 0.01617, 0.01617, 0.01617, 1.5509661], [1517147880000, 0.01619868, 0.01619868, 0.01617, 0.01617, 4.03685166], [1517147940000, 0.01617, 0.01618, 0.01616999, 0.01616999, 8.49228215], [1517148000000, 0.01616999, 0.01617, 0.01615622, 0.01615622, 68.5948502], [1517148060000, 0.0161562, 0.01615622, 0.01612, 0.01612, 1.93253492], [1517148120000, 0.01612, 0.0161562, 0.01612, 0.01612001, 1.06735446], [1517148180000, 0.0161562, 0.0161562, 0.01610501, 0.01610501, 1.70525982], [1517148240000, 0.01610501, 0.01610501, 0.0161, 0.01610001, 2.59031883], [1517148300000, 0.01610001, 0.0161562, 0.01610001, 0.01612, 11.68430209], [1517148360000, 0.01612, 0.01615, 0.01611001, 0.01612, 1.61654096], [1517148420000, 0.01611002, 0.01612, 0.01611002, 0.01612, 1.82978453], [1517148480000, 0.01612, 0.01614998, 0.01612, 0.01614998, 4.27618064], [1517148540000, 0.01612, 0.01612, 0.01611001, 0.01611001, 8.24904597], [1517148600000, 0.01612, 0.01612, 0.01611001, 0.01612, 3.58736382], [1517148660000, 0.01611329, 0.01612, 0.01611329, 0.01611329, 4.84074701], [1517148720000, 0.01612, 0.01612, 0.01612, 0.01612, 11.20818202], [1517148780000, 0.01611329, 0.01611329, 0.01606293, 0.01608001, 34.05162718], [1517148840000, 0.016102, 0.016102, 0.01608, 0.016102, 39.09875511], [1517148900000, 0.0161, 0.01612, 0.01608, 0.01608, 14.05384186], [1517148960000, 0.01606403, 0.01608, 0.01606403, 0.01606404, 136.87236586], [1517149020000, 0.01608, 0.01608, 0.01606404, 0.01608, 11.89169683], [1517149080000, 0.01608, 0.01608, 0.01606405, 0.01606405, 56.69717995], [1517149140000, 0.01607999, 0.01607999, 0.01606405, 0.01607999, 23.44066694], [1517149200000, 0.01608, 0.01608, 0.01607999, 0.01608, 21.08165386], [1517149260000, 0.01607999, 0.01608, 0.01607999, 0.01608, 10.97509112], [1517149320000, 0.01608, 0.01608, 0.01607999, 0.01608, 24.09546981], [1517149380000, 0.01608, 0.01608, 0.016078, 0.01608, 37.45344122], [1517149440000, 0.01608, 0.01608, 0.01608, 0.01608, 24.90480397], [1517149500000, 0.01608, 0.01608, 0.016078, 0.01608, 25.86638009], [1517149560000, 0.01608, 0.01608, 0.01607999, 0.01608, 2.43138075], [1517149620000, 0.01606405, 0.01608, 0.01606405, 0.01608, 0.56896788], [1517149680000, 0.01606405, 0.01608, 0.01606405, 0.01608, 79.19623731], [1517149740000, 0.01608, 0.01608, 0.01606406, 0.01606406, 4.26338387], [1517149800000, 0.01608, 0.01608, 0.01607999, 0.01607999, 7.45786969], [1517149860000, 0.01606406, 0.0161, 0.01606406, 0.0161, 123.51501676], [1517149920000, 0.01608, 0.01608, 0.01606406, 0.01608, 30.07339815], [1517149980000, 0.01608, 0.01609999, 0.01606407, 0.01609999, 38.36098897], [1517150040000, 0.01609999, 0.01609999, 0.01608, 0.01608, 3.70795644], [1517150100000, 0.0160999, 0.01609999, 0.01606411, 0.01606411, 14.91438661], [1517150160000, 0.01609999, 0.01609999, 0.01608, 0.01608002, 89.49679184], [1517150220000, 0.01609, 0.01609, 0.01608002, 0.01609, 3.89774778], [1517150280000, 0.01609, 0.01609, 0.01608998, 0.01608999, 2.84879975], [1517150340000, 0.01608002, 0.01608999, 0.01608, 0.01608, 1.55839535], [1517150400000, 0.01608998, 0.01608998, 0.01608001, 0.01608998, 4.40328687], [1517150460000, 0.01608998, 0.01608998, 0.01608001, 0.01608998, 4.07433801], [1517150520000, 0.01608998, 0.01608998, 0.01608001, 0.01608998, 5.30353238], [1517150580000, 0.01608998, 0.01608998, 0.01608, 0.016082, 31.80199973], [1517150640000, 0.016082, 0.016082, 0.0160641, 0.01608, 6.13374558], [1517150700000, 0.01608, 0.01608999, 0.01607999, 0.01607999, 7.91962751], [1517150760000, 0.01607999, 0.01607999, 0.016065, 0.016065, 1.21664965], [1517150820000, 0.01607998, 0.01607999, 0.016065, 0.01607999, 23.51361514], [1517150880000, 0.016065, 0.01607999, 0.016065, 0.01607999, 6.64466779], [1517150940000, 0.01607999, 0.01608999, 0.016065, 0.01608998, 19.09814696], [1517151000000, 0.01608998, 0.01609, 0.01607999, 0.01607999, 24.18542505], [1517151060000, 0.01609, 0.01609999, 0.01606294, 0.01606295, 13.3980384], [1517151120000, 0.01606294, 0.016087, 0.01606294, 0.016087, 1.12289349], [1517151180000, 0.016087, 0.0161, 0.01606294, 0.016087, 38.67419267], [1517151240000, 0.016087, 0.0161, 0.016087, 0.01609999, 4.54789833], [1517151300000, 0.016087, 0.0161, 0.01606293, 0.0161, 49.4237037], [1517151420000, 0.01609195, 0.01611, 0.01606293, 0.01611, 6.83022843], [1517151480000, 0.01611, 0.01611, 0.016105, 0.01610999, 0.65454668], [1517151540000, 0.01610999, 0.01611, 0.016105, 0.016105, 7.79479606], [1517151600000, 0.01611, 0.0161562, 0.01606294, 0.016064, 25.10076455], [1517151660000, 0.016064, 0.0161555, 0.01606293, 0.0161555, 7.11559674], [1517151720000, 0.01606293, 0.01606294, 0.01606293, 0.01606294, 7.40746121], [1517151780000, 0.01606294, 0.01615068, 0.01606294, 0.016063, 1.89639746], [1517151840000, 0.016063, 0.016063, 0.01606294, 0.01606294, 1.68307462], [1517151900000, 0.01606295, 0.0161, 0.01606294, 0.0161, 22.42869832], [1517151960000, 0.01606295, 0.0161, 0.01606293, 0.01606293, 9.37964748], [1517152020000, 0.01609999, 0.01609999, 0.01606293, 0.01606293, 4.53925405], [1517152080000, 0.0161, 0.01611982, 0.01606293, 0.0161, 5.83285487], [1517152140000, 0.0161, 0.0161, 0.0161, 0.0161, 8.45767098], [1517152200000, 0.0161, 0.01611918, 0.0161, 0.0161, 13.19111847], [1517152260000, 0.0161, 0.01611886, 0.0161, 0.0161, 19.30150876], [1517152320000, 0.0161, 0.01611822, 0.0161, 0.01611822, 3.56068516], [1517152380000, 0.01611822, 0.01611822, 0.01606293, 0.0161, 2.73955412], [1517152440000, 0.0161, 0.0161179, 0.01606293, 0.01606293, 4.37614941], [1517152500000, 0.0161, 0.01611758, 0.0161, 0.01611758, 4.96487458], [1517152560000, 0.016115, 0.0161179, 0.01606293, 0.01606293, 7.54859896], [1517152620000, 0.0161, 0.0161179, 0.01606293, 0.01611752, 18.12286069], [1517152680000, 0.01611752, 0.01611752, 0.01606293, 0.01611749, 7.65172252], [1517152740000, 0.01611749, 0.01611749, 0.01606294, 0.01611168, 3.82415484], [1517152800000, 0.01611168, 0.01611268, 0.01606294, 0.01606294, 8.81405821], [1517152860000, 0.016112, 0.016112, 0.01610668, 0.016107, 11.25381819], [1517152920000, 0.016107, 0.016107, 0.01607, 0.01607, 22.03902046], [1517152980000, 0.016102, 0.01610768, 0.01608, 0.01610736, 83.34347403], [1517153040000, 0.01610736, 0.01610768, 0.016107, 0.016107, 20.51423879], [1517153100000, 0.016107, 0.016107, 0.01607, 0.016103, 27.42406204], [1517153160000, 0.016103, 0.016107, 0.01606293, 0.01606293, 62.19559503], [1517153220000, 0.01606294, 0.01607, 0.01606294, 0.01607, 1.39884542], [1517153280000, 0.01607, 0.01607, 0.01606999, 0.01607, 6.64658124], [1517153340000, 0.01607, 0.01607, 0.01606999, 0.01607, 17.70488165], [1517153400000, 0.01607, 0.016107, 0.01607, 0.016107, 46.33727084], [1517153460000, 0.01606999, 0.01607, 0.01606999, 0.01606999, 1.3482135], [1517153520000, 0.01607, 0.01607, 0.01606999, 0.01607, 4.01073901], [1517153580000, 0.016107, 0.016107, 0.01606999, 0.01607, 16.83810455], [1517153640000, 0.01606999, 0.01606999, 0.01606999, 0.01606999, 14.13750023], [1517153700000, 0.01606999, 0.01606999, 0.016067, 0.016067, 9.21324283], [1517153760000, 0.016067, 0.01606999, 0.016067, 0.016067, 14.6335769], [1517153820000, 0.016063, 0.01606998, 0.016063, 0.01606699, 23.4696216], [1517153880000, 0.01606998, 0.01606999, 0.016063, 0.01606999, 37.91468649], [1517153940000, 0.01606998, 0.01606999, 0.016063, 0.01606999, 104.76507429], [1517154000000, 0.0161, 0.0161, 0.01607, 0.0161, 1.23107182], [1517154060000, 0.01607, 0.0161, 0.01607, 0.01608, 6.39350365], [1517154120000, 0.01608, 0.0161, 0.01608, 0.01608, 93.58915525], [1517154180000, 0.0161, 0.0161, 0.01608, 0.0161, 19.76625372], [1517154240000, 0.0161, 0.016107, 0.01608, 0.016107, 5.16986972], [1517154300000, 0.016107, 0.016107, 0.01610009, 0.01610009, 14.23430218], [1517154360000, 0.016107, 0.01611, 0.016107, 0.01611, 6.63291732], [1517154420000, 0.01611264, 0.01615, 0.01611, 0.01612009, 5.889699], [1517154480000, 0.01612009, 0.01615, 0.01612009, 0.01615, 7.18221713], [1517154540000, 0.01615, 0.016155, 0.0161201, 0.0161201, 4.27167871], [1517154600000, 0.01612999, 0.01615495, 0.01612999, 0.01615491, 0.86301023], [1517154660000, 0.01615491, 0.01615491, 0.01612999, 0.01612999, 2.65019227], [1517154720000, 0.0161549, 0.016155, 0.0161549, 0.016155, 9.8869233], [1517154780000, 0.01615495, 0.016155, 0.01615495, 0.01615495, 4.83778062], [1517154840000, 0.01615495, 0.01615551, 0.0161202, 0.0161202, 16.8316785], [1517154900000, 0.0161202, 0.01615495, 0.0161201, 0.01615495, 6.14808452], [1517154960000, 0.01615551, 0.01615551, 0.01615551, 0.01615551, 2.68533684], [1517155020000, 0.01615551, 0.01615615, 0.0161201, 0.01615551, 17.96602335], [1517155080000, 0.0161555, 0.0161555, 0.016151, 0.0161555, 2.3921912], [1517155140000, 0.016151, 0.016151, 0.016151, 0.016151, 1.28783141], [1517155200000, 0.0161555, 0.01615551, 0.016151, 0.016151, 44.96196097], [1517155260000, 0.0161555, 0.0161555, 0.016151, 0.0161555, 17.544844], [1517155320000, 0.01615551, 0.01615759, 0.0161555, 0.01615621, 87.22713514], [1517155380000, 0.01615621, 0.01615938, 0.01615621, 0.01615621, 54.38758134], [1517155440000, 0.01615621, 0.0161655, 0.0161555, 0.0161655, 7.3636111], [1517155500000, 0.0161655, 0.01618751, 0.0161655, 0.0161655, 16.61306657], [1517155560000, 0.0161655, 0.01618746, 0.0161655, 0.0161874, 8.69673405], [1517155620000, 0.0161874, 0.0161874, 0.01618739, 0.0161874, 4.00847439], [1517155680000, 0.01618746, 0.01618746, 0.0161874, 0.0161874, 18.59902087], [1517155740000, 0.01618742, 0.01618742, 0.0161556, 0.0161556, 16.45015486], [1517155800000, 0.0161556, 0.01615565, 0.0161556, 0.0161556, 4.03540181], [1517155860000, 0.0161555, 0.01615555, 0.0161555, 0.0161555, 12.1448902], [1517155920000, 0.01615555, 0.0161874, 0.0161555, 0.0161555, 40.98410768], [1517155980000, 0.01615101, 0.0161874, 0.01615101, 0.01615101, 15.80065575], [1517156040000, 0.01615101, 0.01618742, 0.01615101, 0.01618742, 20.08429801], [1517156100000, 0.01618742, 0.01620799, 0.01615101, 0.0162, 75.74095802], [1517156160000, 0.0162, 0.01620069, 0.016151, 0.016151, 19.58574828], [1517156220000, 0.01615101, 0.0162, 0.016151, 0.0162, 5.24000445], [1517156280000, 0.01615102, 0.0162, 0.016151, 0.01615101, 29.68385254], [1517156340000, 0.01615101, 0.0162, 0.01615101, 0.0162, 6.3924222], [1517156400000, 0.01615101, 0.0162, 0.01615101, 0.01615101, 4.69602694], [1517156460000, 0.01615101, 0.01619513, 0.016151, 0.01619513, 38.4874111], [1517156520000, 0.0161511, 0.0161511, 0.0161201, 0.016151, 49.38991525], [1517156580000, 0.016151, 0.016151, 0.01612011, 0.01612011, 9.77558698], [1517156640000, 0.0161301, 0.016151, 0.01612011, 0.016151, 3.85249265], [1517156700000, 0.016151, 0.01619513, 0.01612009, 0.01612009, 12.21326301], [1517156760000, 0.01612009, 0.01612009, 0.01611265, 0.01612009, 11.08947399], [1517156820000, 0.01612009, 0.01618999, 0.01612009, 0.01618997, 4.56203763], [1517156880000, 0.01618997, 0.01618997, 0.01612009, 0.01612009, 5.88883173], [1517156940000, 0.01617999, 0.01618, 0.01617999, 0.01617999, 12.84651879], [1517157000000, 0.0161234, 0.01618499, 0.0161234, 0.01618, 2.61289549], [1517157060000, 0.016122, 0.01618, 0.016122, 0.01617979, 69.33026336], [1517157120000, 0.01617, 0.01617, 0.016169, 0.0161697, 2.01153728], [1517157180000, 0.01612201, 0.01612201, 0.01612201, 0.01612201, 2.88999626], [1517157240000, 0.01612201, 0.01615, 0.01612201, 0.01612201, 1.49406442], [1517157300000, 0.01612201, 0.01617, 0.01612201, 0.01615, 23.30056449], [1517157360000, 0.01615, 0.01615, 0.016121, 0.016121, 9.02238906], [1517157420000, 0.01612201, 0.01615, 0.01612201, 0.01615, 5.0], [1517157480000, 0.01615, 0.01617, 0.01615, 0.01615, 18.53259481], [1517157540000, 0.01615, 0.01617, 0.01615, 0.01615, 14.63673848], [1517157600000, 0.01615, 0.01617, 0.01615, 0.01615, 15.76650119], [1517157660000, 0.01616971, 0.01617, 0.01615, 0.01616971, 26.74605564], [1517157720000, 0.01615, 0.01616971, 0.01615, 0.01615001, 26.41587326], [1517157780000, 0.01615, 0.01615001, 0.01612202, 0.01615, 32.12801784], [1517157840000, 0.01612202, 0.01614999, 0.01612202, 0.01612202, 3.29997859], [1517157900000, 0.01612202, 0.01614502, 0.01612202, 0.0161333, 39.22031707], [1517157960000, 0.0161333, 0.01615, 0.0161333, 0.01615, 9.26783201], [1517158020000, 0.01615, 0.01615, 0.01613331, 0.01614999, 51.37745559], [1517158080000, 0.01614999, 0.01615, 0.01612202, 0.016132, 24.15359261], [1517158140000, 0.0161333, 0.01613331, 0.01613, 0.016132, 5.75857631], [1517158200000, 0.016132, 0.016132, 0.01612202, 0.01612202, 1.70861958], [1517158260000, 0.016132, 0.016132, 0.01612202, 0.016132, 11.03844603], [1517158320000, 0.016132, 0.016132, 0.016121, 0.016121, 2.66436331], [1517158380000, 0.016121, 0.01614899, 0.016121, 0.01614899, 9.00397762], [1517158440000, 0.01614899, 0.01614899, 0.01611, 0.01611, 23.01076113], [1517158500000, 0.01611, 0.01611264, 0.01611, 0.01611264, 6.44044393], [1517158560000, 0.01611, 0.01611264, 0.01611, 0.01611, 2.96206868], [1517158620000, 0.016112, 0.016112, 0.01611, 0.01611199, 19.80471124], [1517158680000, 0.01611199, 0.01611199, 0.01611, 0.01611199, 4.33745698], [1517158740000, 0.016112, 0.016112, 0.016112, 0.016112, 3.39758889], [1517158800000, 0.01611001, 0.016112, 0.01611, 0.01611, 9.33338197], [1517158860000, 0.016112, 0.016112, 0.01611, 0.01611, 21.67728278], [1517158920000, 0.01611, 0.01611, 0.0161, 0.0161, 9.69250934], [1517158980000, 0.01608, 0.0161, 0.01608, 0.01609209, 30.11429669], [1517159040000, 0.0160921, 0.016107, 0.01608, 0.01608, 13.24235664], [1517159100000, 0.016107, 0.016112, 0.01608, 0.016107, 7.78475592], [1517159160000, 0.016107, 0.016112, 0.01607538, 0.01607538, 14.5592994], [1517159220000, 0.016079, 0.01611264, 0.01607701, 0.016079, 9.91234708], [1517159280000, 0.016079, 0.016079, 0.01607701, 0.016079, 9.15231277], [1517159340000, 0.016079, 0.01609508, 0.016079, 0.01608, 22.42935524], [1517159400000, 0.01608001, 0.01611263, 0.01608001, 0.01608002, 1.26523224], [1517159460000, 0.01611263, 0.01615001, 0.01611263, 0.01615001, 21.04626873], [1517159520000, 0.01617, 0.01618, 0.01617, 0.01617, 74.80514526], [1517159580000, 0.01617, 0.01617, 0.01615001, 0.01615281, 6.84612136], [1517159640000, 0.01615001, 0.0161524, 0.01615001, 0.01615001, 32.38190063], [1517159700000, 0.01615001, 0.01617997, 0.01615001, 0.01615001, 52.58958151], [1517159760000, 0.01617, 0.01617, 0.01615001, 0.01615001, 3.51069457], [1517159820000, 0.01615001, 0.01615001, 0.01615001, 0.01615001, 2.89487662], [1517159880000, 0.01615001, 0.01615001, 0.01615001, 0.01615001, 0.53151066], [1517159940000, 0.01615001, 0.01617997, 0.01608004, 0.01609412, 75.29780347], [1517160000000, 0.01609412, 0.016174, 0.01609412, 0.016174, 4.6726899], [1517160060000, 0.01616, 0.016175, 0.01608004, 0.01608004, 24.14181726], [1517160120000, 0.01608003, 0.01609, 0.01608003, 0.01609, 1.40835313], [1517160180000, 0.016174, 0.016174, 0.016174, 0.016174, 0.45599807], [1517160240000, 0.01617495, 0.01617495, 0.01608204, 0.0161, 13.45331332], [1517160300000, 0.01617396, 0.016174, 0.01608206, 0.01617392, 14.81422789], [1517160360000, 0.01608206, 0.01617392, 0.01608205, 0.01617, 11.40162899], [1517160420000, 0.01617, 0.01617392, 0.01608205, 0.01608205, 5.1622882], [1517160480000, 0.01608205, 0.01617388, 0.01608205, 0.01617, 13.80460793], [1517160540000, 0.01616996, 0.01617, 0.01608205, 0.01608205, 7.34115779], [1517160600000, 0.01617, 0.01617388, 0.01609, 0.016169, 7.28999441], [1517160660000, 0.01616895, 0.01616895, 0.01609, 0.01609, 1.17637697], [1517160720000, 0.01609, 0.0161332, 0.01609, 0.0161332, 6.34832775], [1517160780000, 0.0161332, 0.01613325, 0.01609, 0.01609899, 20.27684044], [1517160840000, 0.01609, 0.01609, 0.01608205, 0.01608205, 10.11370597], [1517160900000, 0.01608205, 0.01609, 0.01608205, 0.01608206, 3.71698996], [1517160960000, 0.01608205, 0.01608206, 0.01608205, 0.01608206, 1.48097228], [1517161020000, 0.01609, 0.01609, 0.01607701, 0.01608206, 31.86359526], [1517161080000, 0.01608206, 0.01609, 0.01607701, 0.01609, 8.09534014], [1517161140000, 0.01609, 0.01609899, 0.01608999, 0.01609899, 3.14944927], [1517161200000, 0.01608999, 0.01609899, 0.01607539, 0.01609899, 12.26416578], [1517161260000, 0.0161077, 0.0161332, 0.01609899, 0.01609899, 4.12933328], [1517161320000, 0.0161328, 0.0161332, 0.01609899, 0.01609899, 13.51826725], [1517161380000, 0.01609899, 0.01617, 0.01609899, 0.01617, 62.14857226], [1517161440000, 0.016169, 0.016169, 0.01616888, 0.01616888, 1.28189304], [1517161500000, 0.01616884, 0.01616884, 0.01608949, 0.016149, 1.49286507], [1517161560000, 0.016149, 0.016149, 0.01614892, 0.01614892, 6.16460634], [1517161620000, 0.0160895, 0.01610387, 0.0160895, 0.01610387, 0.74240551], [1517161680000, 0.01610387, 0.01610387, 0.0160895, 0.0160895, 59.62226763], [1517161740000, 0.0160895, 0.0160895, 0.0160895, 0.0160895, 1.45896219], [1517161800000, 0.0160895, 0.0160895, 0.016081, 0.0160895, 2.70409434], [1517161860000, 0.0160895, 0.0160895, 0.01607538, 0.01607538, 9.89216569], [1517161920000, 0.0160895, 0.0160895, 0.01607538, 0.01608947, 33.90399614], [1517161980000, 0.01608947, 0.0160895, 0.01608947, 0.0160895, 13.89082021], [1517162040000, 0.0160895, 0.0160895, 0.01607538, 0.0160895, 6.37666004], [1517162100000, 0.01608948, 0.0160895, 0.01608948, 0.0160895, 59.58438485], [1517162160000, 0.0160895, 0.0160895, 0.0160895, 0.0160895, 10.45474569], [1517162220000, 0.01607701, 0.0160895, 0.016077, 0.016077, 3.12620545], [1517162280000, 0.01607701, 0.0160895, 0.01607538, 0.01607538, 5.41785862], [1517162340000, 0.01608949, 0.01608949, 0.01607701, 0.01607701, 23.11345007], [1517162400000, 0.01608949, 0.01608949, 0.01607701, 0.01608949, 6.31211346], [1517162460000, 0.01608949, 0.0160895, 0.01607701, 0.0160895, 24.95984055], [1517162520000, 0.0160895, 0.0160895, 0.01608949, 0.0160895, 29.1775997], [1517162580000, 0.0160895, 0.0160895, 0.01607701, 0.0160895, 82.55614551], [1517162640000, 0.0160895, 0.0160895, 0.01606294, 0.01607701, 37.34313561], [1517162700000, 0.0160895, 0.0160895, 0.01606294, 0.0160895, 9.87009602], [1517162760000, 0.0160895, 0.01617, 0.01608, 0.01608, 63.44335062], [1517162820000, 0.01608, 0.01617, 0.01608, 0.01617, 17.8407689], [1517162880000, 0.01617, 0.01617388, 0.01617, 0.01617388, 8.38578586], [1517162940000, 0.01617388, 0.01618, 0.01606809, 0.01617895, 93.22722921], [1517163000000, 0.01617895, 0.01617996, 0.01612236, 0.0161638, 7.95389119], [1517163060000, 0.01616375, 0.0161638, 0.01608, 0.01616375, 11.96501644], [1517163120000, 0.01609812, 0.01609812, 0.016078, 0.01609812, 8.78916138], [1517163180000, 0.01616237, 0.01618, 0.01609813, 0.016175, 236.28797046], [1517163240000, 0.01614, 0.016175, 0.01614, 0.016175, 9.20094052], [1517163300000, 0.016175, 0.01618, 0.0161, 0.01618, 18.81950013], [1517163360000, 0.016175, 0.016175, 0.01610055, 0.01610055, 6.29011645], [1517163420000, 0.01610055, 0.016175, 0.01610055, 0.016175, 5.27530509], [1517163480000, 0.016175, 0.01618, 0.016175, 0.01618, 12.66436809], [1517163540000, 0.01618, 0.01618, 0.016175, 0.016175, 12.47016464], [1517163600000, 0.01617999, 0.01617999, 0.016175, 0.016175, 21.85024626], [1517163660000, 0.01617501, 0.01617999, 0.01617501, 0.01617501, 1.91395587], [1517163720000, 0.01617501, 0.01617999, 0.01617501, 0.01617999, 2.5817904], [1517163780000, 0.01617501, 0.01617998, 0.016175, 0.016175, 7.14178241], [1517163840000, 0.016175, 0.01617998, 0.016175, 0.016175, 13.53104633], [1517163900000, 0.016175, 0.01617998, 0.016175, 0.01617501, 3.0541714], [1517163960000, 0.01617501, 0.01617998, 0.01617501, 0.01617501, 4.25013123], [1517164020000, 0.01617998, 0.01617998, 0.01617501, 0.01617502, 36.48906608], [1517164080000, 0.01617502, 0.01617502, 0.01617502, 0.01617502, 11.08522288], [1517164140000, 0.01617502, 0.01617998, 0.01617502, 0.01617998, 50.28474817], [1517164200000, 0.01617998, 0.01617998, 0.01617504, 0.01617997, 25.12449131], [1517164260000, 0.01617997, 0.01617997, 0.01617506, 0.01617506, 15.17861698], [1517164320000, 0.01617506, 0.01617897, 0.016175, 0.016175, 119.72260359], [1517164380000, 0.016175, 0.016175, 0.016175, 0.016175, 5.0], [1517164440000, 0.016175, 0.01617997, 0.016175, 0.016175, 9.8820069], [1517164500000, 0.016175, 0.01617997, 0.01610001, 0.01617997, 40.91332473], [1517164560000, 0.01617997, 0.01617998, 0.0161251, 0.01617998, 9.08947337], [1517164620000, 0.01617998, 0.016181, 0.01617997, 0.016181, 156.19763252], [1517164680000, 0.01617998, 0.01618996, 0.01617998, 0.01618996, 12.06179072], [1517164740000, 0.01618996, 0.01618996, 0.01617997, 0.01618996, 32.7888714], [1517164800000, 0.01618997, 0.0162, 0.01617998, 0.0162, 13.63106872], [1517164860000, 0.0162, 0.016211, 0.0162, 0.016211, 20.02625949], [1517164920000, 0.016211, 0.016211, 0.016211, 0.016211, 2.2306425], [1517164980000, 0.01621267, 0.01621271, 0.016211, 0.01621271, 13.96931578], [1517165040000, 0.01621267, 0.01621271, 0.016211, 0.016211, 21.18259352], [1517165100000, 0.01621102, 0.01621549, 0.01621102, 0.01621549, 24.34807042], [1517165160000, 0.01621549, 0.01624859, 0.01621549, 0.01621549, 15.24272427], [1517165220000, 0.01621102, 0.01625, 0.01620005, 0.01620005, 69.06630101], [1517165280000, 0.01620006, 0.01620006, 0.01620006, 0.01620006, 5.64076457], [1517165340000, 0.01620006, 0.01624921, 0.01620005, 0.01624921, 25.13297454], [1517165400000, 0.0162001, 0.01624921, 0.01617997, 0.01624921, 45.6924065], [1517165460000, 0.01624921, 0.01624921, 0.01615, 0.01615001, 2.98367336], [1517165520000, 0.0162, 0.0162, 0.01615, 0.01615088, 18.00177296], [1517165580000, 0.01615088, 0.01615088, 0.01615, 0.01615088, 23.27104842], [1517165640000, 0.01615003, 0.01615088, 0.01615003, 0.01615088, 12.87622855], [1517165700000, 0.01615088, 0.01619741, 0.01615088, 0.016155, 14.08255302], [1517165760000, 0.01619741, 0.0162, 0.01615501, 0.0162, 13.83525075], [1517165820000, 0.0162, 0.0162, 0.01615001, 0.01615002, 2.42847096], [1517165880000, 0.0162, 0.0162, 0.01615001, 0.01615005, 2.38200081], [1517165940000, 0.01615005, 0.01619, 0.01615005, 0.01619, 4.52072656], [1517166000000, 0.01615006, 0.0162, 0.01615006, 0.0162, 7.76893164], [1517166060000, 0.0162, 0.01624922, 0.01619006, 0.01624922, 26.92080872], [1517166120000, 0.01624922, 0.01625086, 0.01619006, 0.01619006, 24.91093914], [1517166180000, 0.01619006, 0.01625086, 0.01619005, 0.01619005, 8.34842607], [1517166240000, 0.01619006, 0.0162, 0.01619005, 0.01619005, 18.13227787], [1517166300000, 0.01619005, 0.01619005, 0.01619, 0.01619005, 22.86188367], [1517166360000, 0.01619005, 0.0162, 0.01619, 0.0162, 20.35318165], [1517166420000, 0.01619007, 0.0162, 0.01619005, 0.01619006, 16.0070194], [1517166480000, 0.01619006, 0.0162, 0.01619006, 0.0162, 12.25132994], [1517166540000, 0.0162, 0.0162, 0.01619741, 0.01619741, 44.46345024], [1517166600000, 0.01619006, 0.0162, 0.01619006, 0.016195, 40.19660516], [1517166660000, 0.0162, 0.01625, 0.01619009, 0.016195, 16.49221433], [1517166720000, 0.016195, 0.016195, 0.01619009, 0.016195, 27.51833351], [1517166780000, 0.016195, 0.01621119, 0.01619019, 0.0161903, 22.44533344], [1517166840000, 0.01619019, 0.01619019, 0.0161901, 0.01619019, 1.88261764], [1517166900000, 0.01619011, 0.01625, 0.01619011, 0.01625, 16.11699964], [1517166960000, 0.0161903, 0.0161903, 0.01619011, 0.01619029, 1.51415047], [1517167020000, 0.01619029, 0.0161903, 0.01619029, 0.0161903, 5.10753799], [1517167080000, 0.01625, 0.01625, 0.0161903, 0.0161903, 6.28645057], [1517167140000, 0.01625, 0.01625, 0.016195, 0.016195, 18.11705245], [1517167200000, 0.01624, 0.01625, 0.01619101, 0.01619101, 14.35795361], [1517167260000, 0.01619101, 0.016195, 0.01619101, 0.016195, 6.99885311], [1517167320000, 0.016225, 0.01624, 0.016195, 0.01624, 7.06591211], [1517167380000, 0.016195, 0.01624, 0.016195, 0.016195, 16.98389259], [1517167440000, 0.01624, 0.01624, 0.016195, 0.016195, 16.440207], [1517167500000, 0.01624, 0.01625, 0.016195, 0.016195, 3.5625029], [1517167560000, 0.016248, 0.01625, 0.016195, 0.01625, 8.4786725], [1517167620000, 0.01625022, 0.01625022, 0.01619501, 0.01619501, 27.482474], [1517167680000, 0.01624998, 0.01624998, 0.0162, 0.01624997, 5.70336214], [1517167740000, 0.01624998, 0.01624998, 0.01624997, 0.01624997, 8.09524558], [1517167800000, 0.01624999, 0.01625021, 0.01624997, 0.01625021, 21.90402309], [1517167860000, 0.01625, 0.01625019, 0.01624997, 0.01624997, 74.93254396], [1517167920000, 0.01624997, 0.016251, 0.01624997, 0.0162502, 7.35658029], [1517167980000, 0.01625015, 0.01625015, 0.01625, 0.01625, 3.85171641], [1517168040000, 0.0162501, 0.0162502, 0.01625, 0.0162502, 30.66873212], [1517168100000, 0.016251, 0.016252, 0.01625009, 0.016252, 23.7448884], [1517168160000, 0.016252, 0.016253, 0.0162502, 0.016251, 9.71161811], [1517168220000, 0.0162502, 0.016251, 0.01625009, 0.0162508, 17.50054641], [1517168280000, 0.016251, 0.016252, 0.016251, 0.016252, 27.12738233], [1517168340000, 0.016252, 0.016253, 0.016251, 0.016251, 5.45527981], [1517168400000, 0.016251, 0.016251, 0.01624997, 0.01624997, 13.73782116], [1517168460000, 0.01624997, 0.01625, 0.01619501, 0.01619501, 14.09165206], [1517168520000, 0.01619501, 0.0162177, 0.016195, 0.01619501, 14.62847199], [1517168580000, 0.01619501, 0.01619502, 0.01619501, 0.01619502, 0.96816073], [1517168640000, 0.01619505, 0.01621119, 0.01619505, 0.01619506, 36.40337004], [1517168700000, 0.01621119, 0.0162112, 0.01621119, 0.01621119, 22.8618566], [1517168760000, 0.0161951, 0.01621119, 0.0161903, 0.0161903, 19.20543267], [1517168820000, 0.01621119, 0.01621119, 0.01621119, 0.01621119, 14.24938597], [1517168880000, 0.0162112, 0.01624997, 0.0161903, 0.01621495, 13.57664687], [1517168940000, 0.01621495, 0.01624996, 0.0161903, 0.0161903, 7.25262256], [1517169000000, 0.0161903, 0.01621628, 0.0161903, 0.0161903, 6.1348894], [1517169060000, 0.01621495, 0.01621495, 0.01621495, 0.01621495, 1.52917651], [1517169120000, 0.01621495, 0.01621495, 0.01619031, 0.01621495, 4.39873706], [1517169180000, 0.0162149, 0.01621495, 0.0161903, 0.0161903, 39.54385303], [1517169240000, 0.0162, 0.01621495, 0.0162, 0.0162, 8.71289853], [1517169300000, 0.01621495, 0.01621495, 0.01619012, 0.01619012, 21.32311862], [1517169360000, 0.01621495, 0.01621495, 0.016195, 0.016195, 2.91667293], [1517169420000, 0.016195, 0.01621494, 0.016195, 0.016195, 14.52666808], [1517169480000, 0.0162, 0.0162, 0.01619012, 0.01619012, 12.06115476], [1517169540000, 0.01619012, 0.016195, 0.01619012, 0.0161912, 5.32460822], [1517169600000, 0.016195, 0.016195, 0.01619013, 0.016195, 8.04852512], [1517169660000, 0.01619013, 0.016195, 0.01619005, 0.01619005, 932.95257315], [1517169720000, 0.01619004, 0.0162, 0.01619, 0.0162, 53.12047592], [1517169780000, 0.0162, 0.0162, 0.01619, 0.0162, 33.03440422], [1517169840000, 0.01619001, 0.01627315, 0.01619001, 0.01627315, 82.11588093], [1517169900000, 0.01625999, 0.01627272, 0.01619001, 0.0162, 52.92167756], [1517169960000, 0.0162, 0.0162, 0.01619001, 0.0162, 51.9140869], [1517170020000, 0.0162, 0.01629, 0.0162, 0.01623875, 52.29330858], [1517170080000, 0.0162324, 0.01628998, 0.0162324, 0.01623876, 187.13364427], [1517170140000, 0.01623876, 0.01628994, 0.01619001, 0.01628994, 19.92797851], [1517170200000, 0.01628994, 0.01629, 0.01621001, 0.01628994, 41.06704764], [1517170260000, 0.01628994, 0.01628994, 0.01621001, 0.01628993, 12.20358787], [1517170320000, 0.01628593, 0.0162955, 0.0162787, 0.0162955, 93.67460813], [1517170380000, 0.01628994, 0.01629999, 0.0162787, 0.01629828, 125.59507297], [1517170440000, 0.01629999, 0.0163, 0.01628993, 0.01629999, 36.9736774], [1517170500000, 0.01629999, 0.0163, 0.01625927, 0.01625927, 45.72460095], [1517170560000, 0.01625003, 0.01631, 0.01625003, 0.01631, 82.60229897], [1517170620000, 0.01631, 0.01634, 0.01631, 0.0163102, 43.61122426], [1517170680000, 0.0163102, 0.0163102, 0.016265, 0.0162989, 57.35974514], [1517170740000, 0.0162989, 0.01630999, 0.01626, 0.01630999, 17.238922], [1517170800000, 0.01629369, 0.01631, 0.01629369, 0.01631, 21.14323625], [1517170860000, 0.01631, 0.01634, 0.01630001, 0.01634, 72.37484416], [1517170920000, 0.01634, 0.01635, 0.01630009, 0.01635, 290.37019089], [1517170980000, 0.01635, 0.01635, 0.01632005, 0.01632019, 240.83864215], [1517171040000, 0.01635, 0.01637455, 0.01634, 0.01637455, 19.33780491], [1517171100000, 0.01636928, 0.01638081, 0.01635001, 0.01638081, 33.42344077], [1517171160000, 0.01638081, 0.01638646, 0.01636452, 0.01638539, 57.6836103], [1517171220000, 0.01638547, 0.01639501, 0.01638539, 0.01639501, 94.76331624], [1517171280000, 0.01638539, 0.0164, 0.016382, 0.016382, 42.36021904], [1517171340000, 0.016382, 0.0164, 0.016382, 0.01639501, 152.77645724], [1517171400000, 0.01639501, 0.0164415, 0.01639501, 0.0164415, 47.77495748], [1517171460000, 0.0164415, 0.0164415, 0.01639504, 0.01639504, 30.10560582], [1517171520000, 0.01641, 0.0164462, 0.01639504, 0.01641002, 127.83231669], [1517171580000, 0.01641004, 0.01645, 0.01639714, 0.01644999, 89.02279998], [1517171640000, 0.01644, 0.0164624, 0.01641001, 0.01641212, 148.90083949], [1517171700000, 0.01645, 0.016474, 0.01641401, 0.01644, 182.68435262], [1517171760000, 0.01644, 0.01647702, 0.01641811, 0.0164766, 106.08733016], [1517171820000, 0.0164766, 0.01648095, 0.0164766, 0.0164766, 34.78209195], [1517171880000, 0.0164775, 0.01648095, 0.016474, 0.0164775, 24.71645322], [1517171940000, 0.0164775, 0.01649, 0.0164766, 0.01648597, 49.11592029], [1517172000000, 0.01648095, 0.01649998, 0.0164766, 0.0164768, 44.62418653], [1517172060000, 0.01648999, 0.01649998, 0.0164766, 0.01649, 17.07931037], [1517172120000, 0.01649, 0.0165, 0.0164766, 0.0164766, 81.36904962], [1517172180000, 0.0164766, 0.0164858, 0.016445, 0.016445, 50.4966946], [1517172240000, 0.016445, 0.016445, 0.01639504, 0.01639504, 295.3149539], [1517172300000, 0.01639504, 0.01639504, 0.01627001, 0.01635, 590.91779523], [1517172360000, 0.01635, 0.01639504, 0.0162288, 0.01630325, 512.2348678], [1517172420000, 0.01630325, 0.016395, 0.01627001, 0.01637, 238.77068231], [1517172480000, 0.01630328, 0.01630328, 0.01630327, 0.01630328, 336.9281196], [1517172540000, 0.01630325, 0.01630328, 0.01630266, 0.01630266, 55.66893624], [1517172600000, 0.01630266, 0.016394, 0.01627, 0.01639394, 41.70103835], [1517172660000, 0.01639393, 0.016394, 0.01629008, 0.016389, 24.91987638], [1517172720000, 0.016389, 0.016394, 0.0162901, 0.01637898, 47.64257734], [1517172780000, 0.01637898, 0.016394, 0.0163, 0.016394, 17.08063232], [1517172840000, 0.016384, 0.016394, 0.01632, 0.016384, 16.10440649], [1517172900000, 0.01639398, 0.01639471, 0.01631, 0.01638367, 25.62303162], [1517172960000, 0.01638367, 0.016389, 0.01631001, 0.01638364, 40.58495365], [1517173020000, 0.01638364, 0.01638364, 0.01631005, 0.01638363, 17.7493022], [1517173080000, 0.01638363, 0.01638365, 0.01638363, 0.01638365, 35.16149683], [1517173140000, 0.01638365, 0.01639503, 0.01638365, 0.01639503, 3.22888022], [1517173200000, 0.01639503, 0.01639503, 0.01638367, 0.01639496, 14.89342854], [1517173260000, 0.01639504, 0.01639915, 0.01639496, 0.01639496, 15.87506744], [1517173320000, 0.01639911, 0.01639911, 0.01638367, 0.01638367, 9.65545777], [1517173380000, 0.01639496, 0.01639915, 0.01639496, 0.01639496, 10.32201967], [1517173440000, 0.01639496, 0.01639912, 0.01638367, 0.01639912, 23.740853], [1517173500000, 0.01639912, 0.0164, 0.01639912, 0.0163999, 20.20886925], [1517173560000, 0.01639912, 0.016445, 0.01638367, 0.01639912, 49.82474102], [1517173620000, 0.01644, 0.01644399, 0.01639912, 0.01639912, 4.86950268], [1517173680000, 0.0164398, 0.016441, 0.01639912, 0.01639914, 17.90647744], [1517173740000, 0.01639914, 0.016444, 0.01639913, 0.01639913, 24.84047439], [1517173800000, 0.01639913, 0.016445, 0.01639912, 0.016445, 16.88775252], [1517173860000, 0.016401, 0.016401, 0.01639912, 0.01639912, 9.37613435], [1517173920000, 0.01639912, 0.016401, 0.01639912, 0.01639912, 5.50483418], [1517173980000, 0.016401, 0.016401, 0.01639912, 0.016401, 7.21278957], [1517174040000, 0.016439, 0.0164398, 0.01639912, 0.01639912, 46.53126816], [1517174100000, 0.01639912, 0.016438, 0.01639912, 0.01639912, 51.29069014], [1517174160000, 0.01639912, 0.01643979, 0.01639912, 0.01643099, 190.15228806], [1517174220000, 0.01643098, 0.01643098, 0.01639912, 0.01639912, 35.67534747], [1517174280000, 0.01639912, 0.01639912, 0.01630703, 0.01630703, 33.77332693], [1517174340000, 0.01630703, 0.01635001, 0.01630703, 0.01635, 22.81334745], [1517174400000, 0.01635, 0.0163989, 0.01635, 0.01635, 5.83478606], [1517174460000, 0.01635, 0.0163842, 0.01630029, 0.0163842, 35.39746689], [1517174520000, 0.01631, 0.0163842, 0.01631, 0.0163842, 17.25102928], [1517174580000, 0.0163842, 0.01639886, 0.01631, 0.01631, 34.0579535], [1517174640000, 0.01631, 0.01634, 0.016288, 0.01634, 18.56400584], [1517174700000, 0.01634, 0.01634, 0.01628005, 0.01628005, 161.86918178], [1517174760000, 0.0163, 0.01641989, 0.0163, 0.01641976, 27.99483585], [1517174820000, 0.01641864, 0.01641864, 0.0163, 0.01630001, 5.48718104], [1517174880000, 0.01630001, 0.016405, 0.016288, 0.0163001, 13.71126474], [1517174940000, 0.0163001, 0.01640499, 0.0163001, 0.01639988, 1.57267909], [1517175000000, 0.0163001, 0.01639489, 0.0163, 0.01632, 5.03063641], [1517175060000, 0.01632, 0.01632, 0.01628, 0.01632, 17.07568147], [1517175120000, 0.01632, 0.016372, 0.01628292, 0.01632, 60.1547768], [1517175180000, 0.01632, 0.01632, 0.0163, 0.0163, 12.02], [1517175240000, 0.0163, 0.016395, 0.0163, 0.01637714, 16.80692698], [1517175300000, 0.016395, 0.01639999, 0.01631, 0.01631, 26.22392258], [1517175360000, 0.01631, 0.01631, 0.01631, 0.01631, 0.41095103], [1517175420000, 0.01639, 0.01639, 0.01633, 0.01633001, 5.09729253], [1517175480000, 0.0163301, 0.01638995, 0.01633001, 0.0163301, 18.16964206], [1517175540000, 0.0163301, 0.0163301, 0.0163301, 0.0163301, 17.31803115], [1517175600000, 0.0163301, 0.01635799, 0.0163301, 0.01635799, 12.23486283], [1517175660000, 0.01635799, 0.01639, 0.0163301, 0.01638995, 18.48767616], [1517175720000, 0.01638995, 0.01639, 0.0163301, 0.01638995, 14.41678113], [1517175780000, 0.0163301, 0.01639, 0.01633, 0.01633, 109.79199775], [1517175840000, 0.01633003, 0.01639, 0.01633003, 0.01638999, 34.87504785], [1517175900000, 0.01639, 0.01639, 0.01638995, 0.01639, 11.38289777], [1517175960000, 0.01639, 0.0164, 0.01639, 0.0164, 10.71553709], [1517176020000, 0.0164, 0.0164, 0.01633001, 0.01639, 13.8338145], [1517176080000, 0.01639992, 0.01639992, 0.01633002, 0.01639992, 7.78498773], [1517176140000, 0.01639999, 0.01639999, 0.01633002, 0.01633002, 28.61906984], [1517176200000, 0.01633002, 0.01636, 0.01633001, 0.01636, 13.32811418], [1517176260000, 0.01636, 0.01637818, 0.016359, 0.01636, 20.26494211], [1517176320000, 0.01636003, 0.01636003, 0.01636, 0.01636003, 2.92519704], [1517176380000, 0.01637816, 0.01637818, 0.01637816, 0.01637816, 1.10158661], [1517176440000, 0.01637816, 0.01637816, 0.01636005, 0.01637816, 11.86736624], [1517176500000, 0.01637816, 0.01637817, 0.01637816, 0.01637817, 25.82733109], [1517176560000, 0.01637816, 0.01637817, 0.01637816, 0.01637816, 59.85366932], [1517176620000, 0.01637816, 0.01637819, 0.01637816, 0.01637819, 67.97820978], [1517176680000, 0.01637819, 0.0164, 0.01637817, 0.0164, 46.93054898], [1517176740000, 0.0164005, 0.01642517, 0.0164, 0.01641589, 4.01013952], [1517176800000, 0.01641589, 0.01641966, 0.0164, 0.01641966, 4.03008802], [1517176860000, 0.01641964, 0.01643, 0.016378, 0.01643, 24.7593543], [1517176920000, 0.01643, 0.0164398, 0.01643, 0.0164398, 14.68093941], [1517176980000, 0.0164448, 0.016455, 0.01643, 0.01643, 23.91276613], [1517177040000, 0.01643, 0.01645, 0.01643, 0.01643, 9.89839029], [1517177100000, 0.01643, 0.01643, 0.016378, 0.016378, 11.43816075], [1517177160000, 0.01637804, 0.01643, 0.01636003, 0.01643, 29.6866577], [1517177220000, 0.01635001, 0.01643, 0.01635, 0.01643, 15.81908232], [1517177280000, 0.01643, 0.01643, 0.01638, 0.01638, 21.44953106], [1517177340000, 0.01638007, 0.01644763, 0.01638007, 0.01643, 62.04414673], [1517177400000, 0.01644763, 0.01644763, 0.01643001, 0.01644763, 4.85144082], [1517177460000, 0.01644763, 0.0164555, 0.01643002, 0.01643012, 4.63906724], [1517177520000, 0.0164302, 0.01648999, 0.0164302, 0.01648999, 14.38025769], [1517177580000, 0.01648999, 0.01648999, 0.0164302, 0.01648999, 37.43963473], [1517177640000, 0.01648999, 0.0165, 0.01648999, 0.0165, 55.40984598], [1517177700000, 0.01649999, 0.0165, 0.01649999, 0.01649999, 102.48562144], [1517177760000, 0.0165, 0.0165, 0.01649999, 0.01649999, 122.199404], [1517177820000, 0.0165, 0.0165, 0.01649999, 0.0165, 30.47666946], [1517177880000, 0.0165, 0.0165, 0.01649999, 0.01649999, 31.30801741], [1517177940000, 0.0165, 0.0165, 0.01649999, 0.01649999, 41.12694776], [1517178000000, 0.0165, 0.0165, 0.01649999, 0.0165, 70.69625095], [1517178060000, 0.0165, 0.0165, 0.01649999, 0.0165, 40.69354467], [1517178120000, 0.0165, 0.0165, 0.01649999, 0.0165, 11.13219297], [1517178180000, 0.0165, 0.016511, 0.01649999, 0.016511, 17.66877117], [1517178240000, 0.01651, 0.01651166, 0.01651, 0.01651166, 19.16715493], [1517178300000, 0.016511, 0.01651759, 0.016511, 0.01651759, 20.69854799], [1517178360000, 0.01651759, 0.01651759, 0.016511, 0.016511, 29.65936485], [1517178420000, 0.016511, 0.01651948, 0.01651085, 0.01651087, 35.91311274], [1517178480000, 0.01651087, 0.01652274, 0.01651087, 0.01652, 142.11541437], [1517178540000, 0.01652, 0.01652575, 0.01652, 0.01652575, 60.37482486], [1517178600000, 0.01652575, 0.01652575, 0.01652274, 0.01652274, 24.66849149], [1517178660000, 0.01652274, 0.01652575, 0.01652274, 0.01652274, 28.43284888], [1517178720000, 0.01652274, 0.01652575, 0.01652274, 0.01652575, 121.12529384], [1517178780000, 0.01652575, 0.01652575, 0.01645001, 0.01645003, 68.3083257], [1517178840000, 0.01645003, 0.01652575, 0.01643001, 0.01644, 29.42335963], [1517178900000, 0.01645004, 0.01652575, 0.01640227, 0.01652574, 143.5853162], [1517178960000, 0.01652574, 0.01652575, 0.01652574, 0.01652574, 83.67436583], [1517179020000, 0.01652574, 0.01652575, 0.01652574, 0.01652574, 11.7719498], [1517179080000, 0.01652575, 0.01652575, 0.01643, 0.01652221, 13.5097957], [1517179140000, 0.01652569, 0.01652569, 0.01644002, 0.01646, 3.11053752], [1517179200000, 0.01646, 0.01652221, 0.01641001, 0.01652221, 33.73800212], [1517179260000, 0.01652221, 0.01652569, 0.016456, 0.01652221, 24.82878243], [1517179320000, 0.01652568, 0.01652568, 0.016457, 0.016457, 8.01948564], [1517179380000, 0.01646, 0.01652567, 0.016456, 0.01652567, 14.32311262], [1517179440000, 0.016456, 0.0165221, 0.016423, 0.016456, 42.76741494], [1517179500000, 0.016456, 0.01652221, 0.01643001, 0.01652221, 36.86717767], [1517179560000, 0.01652221, 0.01652221, 0.01642501, 0.01642501, 62.06919875], [1517179620000, 0.01651001, 0.01651001, 0.01642501, 0.01651001, 15.48117148], [1517179680000, 0.01642802, 0.01651001, 0.01642802, 0.01643302, 7.44467996], [1517179740000, 0.01650999, 0.01651, 0.01643302, 0.016509, 51.77603453], [1517179800000, 0.016505, 0.016505, 0.01642502, 0.01650499, 5.13586086], [1517179860000, 0.01650499, 0.016509, 0.01642504, 0.01642504, 17.57175011], [1517179920000, 0.016509, 0.016509, 0.01642504, 0.0165, 21.21591571], [1517179980000, 0.0165, 0.016509, 0.0165, 0.01650899, 30.14885007], [1517180040000, 0.01650899, 0.016509, 0.01650899, 0.016509, 102.46433611], [1517180100000, 0.01650899, 0.016509, 0.01643108, 0.01650899, 36.46479968], [1517180160000, 0.01650899, 0.016509, 0.01644001, 0.01644001, 25.81062946], [1517180220000, 0.01644001, 0.016509, 0.01644001, 0.01650898, 11.27543492], [1517180280000, 0.01650898, 0.016509, 0.01644051, 0.01650333, 25.65810229], [1517180340000, 0.01650333, 0.016509, 0.01644062, 0.01650899, 2.39667329], [1517180400000, 0.01650899, 0.016509, 0.01650333, 0.01650333, 17.95942518], [1517180460000, 0.016509, 0.016509, 0.01650899, 0.016509, 7.5410196], [1517180520000, 0.016509, 0.01651001, 0.016506, 0.01651001, 24.17421355], [1517180580000, 0.01651001, 0.01651001, 0.01644068, 0.01650334, 15.77456889], [1517180640000, 0.01650334, 0.01650334, 0.01645107, 0.01645108, 38.86072315], [1517180700000, 0.01650334, 0.01652455, 0.01645109, 0.01645109, 33.3340158], [1517180760000, 0.01651001, 0.01651002, 0.01645601, 0.01650999, 10.64126784], [1517180820000, 0.01651002, 0.01652488, 0.01651002, 0.01652488, 5.99940237], [1517180880000, 0.01652567, 0.01655, 0.01650334, 0.01650334, 203.65875758], [1517180940000, 0.01655, 0.01655, 0.01645126, 0.01654, 10.17088672], [1517181000000, 0.01653001, 0.01655, 0.01653, 0.01653001, 28.79255995], [1517181060000, 0.01653001, 0.01655416, 0.01653001, 0.01655416, 8.04292434], [1517181120000, 0.01655053, 0.01656, 0.01653001, 0.01656, 6.79068502], [1517181180000, 0.01653007, 0.016554, 0.01653007, 0.01653007, 10.20042921], [1517181240000, 0.01653007, 0.016561, 0.01653007, 0.016561, 30.99363142], [1517181300000, 0.01653007, 0.01656388, 0.01653007, 0.01656388, 118.27670298], [1517181360000, 0.01656388, 0.0165639, 0.016561, 0.016561, 48.37524465], [1517181420000, 0.016561, 0.01656356, 0.01653017, 0.01653017, 130.7578433], [1517181480000, 0.01653333, 0.016559, 0.016461, 0.01653, 21.32352478], [1517181540000, 0.01653, 0.0165605, 0.01645602, 0.0164571, 36.34721917], [1517181600000, 0.01645711, 0.01656389, 0.01645711, 0.01656389, 24.87991835], [1517181660000, 0.01656389, 0.01656389, 0.01653, 0.01655867, 28.52782301], [1517181720000, 0.01655867, 0.01655867, 0.01653, 0.01655867, 11.05128537], [1517181780000, 0.01655867, 0.01655867, 0.01653, 0.01655867, 12.42432482], [1517181840000, 0.01655867, 0.01656498, 0.01645713, 0.01645713, 27.37051017], [1517181900000, 0.01647002, 0.0165605, 0.01647001, 0.0165605, 22.74201959], [1517181960000, 0.01648007, 0.0165605, 0.01648001, 0.01648007, 12.65426877], [1517182020000, 0.01648007, 0.01656045, 0.01648, 0.01648, 108.17778242], [1517182080000, 0.01648001, 0.01648007, 0.01648, 0.01648001, 4.36127352], [1517182140000, 0.01648001, 0.016555, 0.01647001, 0.01653, 30.53370781], [1517182200000, 0.01653, 0.01653, 0.01653, 0.01653, 25.99464163], [1517182260000, 0.01653, 0.016555, 0.01647107, 0.0165, 17.92178153], [1517182320000, 0.0165, 0.0165165, 0.01647107, 0.0165, 4.02921518], [1517182380000, 0.01647888, 0.01652, 0.01647888, 0.01652, 14.94644507], [1517182440000, 0.01652, 0.01653, 0.01652, 0.01653, 26.52680174], [1517182500000, 0.01652, 0.01653, 0.01652, 0.01652, 15.2414553], [1517182560000, 0.01653, 0.01653, 0.01652, 0.01652001, 19.030494], [1517182620000, 0.01653, 0.01653, 0.01652, 0.01652001, 28.36222545], [1517182680000, 0.01652001, 0.01653, 0.01652, 0.01652001, 8.52796654], [1517182740000, 0.01652, 0.01652001, 0.01652, 0.01652001, 8.02600092], [1517182800000, 0.01652001, 0.01652001, 0.01650004, 0.01652001, 50.56862044], [1517182860000, 0.01650007, 0.01652001, 0.01650004, 0.01650004, 5.47484376], [1517182920000, 0.016507, 0.01652001, 0.0165, 0.01652001, 49.81961339], [1517182980000, 0.01652001, 0.01652001, 0.0165001, 0.0165001, 14.93724233], [1517183040000, 0.01651501, 0.01652, 0.0165001, 0.0165005, 19.84021979], [1517183100000, 0.0165005, 0.0165005, 0.0165, 0.0165005, 37.36661049], [1517183160000, 0.01652, 0.01652, 0.0165005, 0.0165005, 3.73247277], [1517183220000, 0.01651987, 0.01652, 0.0165005, 0.0165005, 7.869857], [1517183280000, 0.01652, 0.01652, 0.0165005, 0.01651999, 106.87711136], [1517183340000, 0.01651999, 0.01651999, 0.01650001, 0.01651999, 15.00506865], [1517183400000, 0.01650001, 0.01651998, 0.0165, 0.01651998, 144.49971308], [1517183460000, 0.01651998, 0.01651998, 0.01650011, 0.01651998, 46.0861659], [1517183520000, 0.01651998, 0.01651998, 0.01650011, 0.01650011, 5.10843047], [1517183580000, 0.01650011, 0.01651998, 0.01650011, 0.01651998, 5.14341889], [1517183640000, 0.01651997, 0.01651998, 0.01650011, 0.01651998, 27.29880789], [1517183700000, 0.01651998, 0.01651999, 0.0165, 0.0165, 89.46045726], [1517183760000, 0.01651987, 0.01651999, 0.0165, 0.01651998, 73.74817801], [1517183820000, 0.01651998, 0.01651998, 0.0165, 0.01651997, 7.93000094], [1517183880000, 0.01651997, 0.01651997, 0.0165, 0.0165, 3.81299628], [1517183940000, 0.01651997, 0.01651998, 0.0165, 0.016518, 31.8344813], [1517184000000, 0.0165, 0.01651998, 0.0165, 0.01651997, 11.45239626], [1517184060000, 0.01651997, 0.01651997, 0.01650001, 0.0165198, 21.75610133], [1517184120000, 0.01650001, 0.01651997, 0.01650001, 0.01651997, 45.38673699], [1517184180000, 0.01651997, 0.01651997, 0.01651996, 0.01651996, 22.48961586], [1517184240000, 0.01651996, 0.01651998, 0.01651996, 0.01651997, 21.61561654], [1517184300000, 0.01651997, 0.01651998, 0.01651996, 0.01651998, 11.01332388], [1517184360000, 0.01651998, 0.01651998, 0.0165, 0.01651998, 37.8296723], [1517184420000, 0.0165199, 0.01651998, 0.0165, 0.0165, 29.34338837], [1517184480000, 0.01651284, 0.01651998, 0.01647892, 0.01651, 42.6385855], [1517184540000, 0.01651, 0.01651998, 0.01647892, 0.01647894, 17.28162122], [1517184600000, 0.01647894, 0.01652001, 0.01647893, 0.01652001, 220.93876843], [1517184660000, 0.01651998, 0.01652001, 0.01647001, 0.016479, 68.6622647], [1517184720000, 0.01651998, 0.01652001, 0.01647001, 0.01652001, 9.98736461], [1517184780000, 0.01652001, 0.01652001, 0.01645127, 0.01647127, 98.51136697], [1517184840000, 0.01645126, 0.01652001, 0.01640244, 0.016404, 121.55214408], [1517184900000, 0.01640755, 0.01652001, 0.016406, 0.01652, 115.39166058], [1517184960000, 0.01651833, 0.01651833, 0.016444, 0.01648696, 13.65870946], [1517185020000, 0.016444, 0.01648696, 0.016444, 0.01648696, 3.22630933], [1517185080000, 0.01648696, 0.016489, 0.016445, 0.01648696, 13.97720763], [1517185140000, 0.01648696, 0.016515, 0.016412, 0.01651333, 28.42144839], [1517185200000, 0.01651333, 0.01652, 0.01651333, 0.01651999, 4.07988521], [1517185260000, 0.01651333, 0.01651833, 0.01642, 0.01642009, 25.78507447], [1517185320000, 0.01642009, 0.01642009, 0.01640244, 0.01642, 58.26163871], [1517185380000, 0.01642, 0.01642, 0.01638001, 0.0164, 71.27952747], [1517185440000, 0.01642, 0.01642, 0.01638003, 0.01641999, 22.67868198], [1517185500000, 0.01641999, 0.01651, 0.01641999, 0.01641999, 37.74477983], [1517185560000, 0.01641999, 0.01641999, 0.01638, 0.01638003, 6.86192631], [1517185620000, 0.01641999, 0.01641999, 0.01638009, 0.01641994, 2.24670997], [1517185680000, 0.01641994, 0.01641999, 0.0163801, 0.01641994, 9.89511521], [1517185740000, 0.01638011, 0.01648928, 0.01638011, 0.01648928, 6.49952885], [1517185800000, 0.01641999, 0.01648931, 0.01638011, 0.01648928, 9.25206184], [1517185860000, 0.01648928, 0.01648928, 0.01648895, 0.01648928, 12.09768776], [1517185920000, 0.01641999, 0.01648893, 0.0163893, 0.01645, 34.39189627], [1517185980000, 0.01645, 0.01645916, 0.016387, 0.01645916, 14.65304978], [1517186040000, 0.01639, 0.01645916, 0.01639, 0.01645916, 35.68195816], [1517186100000, 0.01645916, 0.01648964, 0.01645916, 0.01645916, 14.90657468], [1517186160000, 0.01645916, 0.01648964, 0.01639202, 0.01645916, 10.74789063], [1517186220000, 0.01645916, 0.01645916, 0.01645909, 0.01645909, 17.38871953], [1517186280000, 0.01645909, 0.01645909, 0.01641, 0.01645909, 5.26035165], [1517186340000, 0.01645909, 0.01645916, 0.01645909, 0.01645916, 7.14249957], [1517186400000, 0.01645909, 0.01645909, 0.01640971, 0.01641, 46.03464872], [1517186460000, 0.01641, 0.01641, 0.0164, 0.01640001, 49.21492649], [1517186520000, 0.01640001, 0.01640999, 0.01640001, 0.01640515, 58.88083684], [1517186580000, 0.01640513, 0.01640513, 0.0164, 0.01640513, 46.52114075], [1517186640000, 0.01640513, 0.01640999, 0.016401, 0.01640999, 52.49356538], [1517186700000, 0.016401, 0.01640999, 0.016401, 0.01640513, 25.62958881], [1517186760000, 0.01640513, 0.01640999, 0.01640513, 0.01640513, 12.06140378], [1517186820000, 0.01640999, 0.01641, 0.01640513, 0.01641, 52.80780235], [1517186880000, 0.01641, 0.01641, 0.01640513, 0.01640513, 39.52210741], [1517186940000, 0.01640999, 0.01640999, 0.01640513, 0.01640513, 48.21088205], [1517187000000, 0.01640999, 0.01640999, 0.01640413, 0.01640999, 17.62478045], [1517187060000, 0.0164049, 0.01640999, 0.01640413, 0.01640999, 8.85379178], [1517187120000, 0.01640999, 0.01641, 0.0164049, 0.01641, 56.19676185], [1517187180000, 0.01641, 0.01641, 0.01640999, 0.01641, 62.88338594], [1517187240000, 0.01641, 0.01641, 0.01640445, 0.01641, 51.1021724], [1517187300000, 0.01641, 0.01641, 0.0164049, 0.0164049, 101.6573515], [1517187360000, 0.01640489, 0.01640489, 0.0164042, 0.01640489, 4.02788999], [1517187420000, 0.0164042, 0.01640999, 0.01639, 0.01639, 72.90742362], [1517187480000, 0.01640999, 0.01640999, 0.01639, 0.01640999, 11.27258702], [1517187540000, 0.01640999, 0.01641, 0.0163801, 0.0163801, 72.73250808], [1517187600000, 0.0163801, 0.01641, 0.01638, 0.01641, 12.8175985], [1517187660000, 0.01638, 0.01641, 0.01636312, 0.01636312, 57.47938542], [1517187720000, 0.01636312, 0.01638, 0.01633001, 0.01638, 38.28419365], [1517187780000, 0.01638, 0.01638, 0.01633053, 0.01636999, 12.78386163], [1517187840000, 0.0163313, 0.01637, 0.0163313, 0.01636999, 41.12172062], [1517187900000, 0.01638, 0.01638, 0.01633001, 0.01636999, 88.84729363], [1517187960000, 0.01636999, 0.01636999, 0.01633001, 0.01633001, 23.8109343], [1517188020000, 0.01636999, 0.01637, 0.01633001, 0.01633001, 10.50456798], [1517188080000, 0.01633002, 0.01637, 0.01633001, 0.01637, 7.25424712], [1517188140000, 0.01633002, 0.01637, 0.01633001, 0.01637, 6.40280591], [1517188200000, 0.01637, 0.01637, 0.01633001, 0.01636999, 16.90871173], [1517188260000, 0.01633002, 0.01636999, 0.01633001, 0.01636999, 5.9874249], [1517188320000, 0.01633005, 0.01636, 0.01633005, 0.01636, 37.8629736], [1517188380000, 0.01634, 0.01636, 0.01634, 0.01636, 1.86639664], [1517188440000, 0.01634, 0.01636, 0.01634, 0.01636, 16.71330225], [1517188500000, 0.01634, 0.01636, 0.01633001, 0.01635, 109.27770657], [1517188560000, 0.01635, 0.01635, 0.01632794, 0.01633, 37.07188609], [1517188620000, 0.01633, 0.01634998, 0.01633, 0.01633, 10.28446748], [1517188680000, 0.01634994, 0.01636, 0.01633, 0.01636, 60.26406138], [1517188740000, 0.01634994, 0.0164, 0.01633001, 0.01635001, 55.79289607], [1517188800000, 0.01636, 0.01641, 0.01635001, 0.01636, 36.68445784], [1517188860000, 0.01641, 0.01641, 0.01636, 0.01636, 28.75363287], [1517188920000, 0.01641, 0.01641, 0.01636, 0.01636, 17.99557015], [1517188980000, 0.01640967, 0.01640999, 0.01636, 0.01636, 35.75085572], [1517189040000, 0.01636, 0.01636, 0.01633001, 0.01633001, 151.37942947], [1517189100000, 0.01635, 0.01645999, 0.01633084, 0.01645999, 238.28447129], [1517189160000, 0.0164, 0.0164, 0.01638005, 0.01639501, 24.41542892], [1517189220000, 0.01639502, 0.016456, 0.01638001, 0.016456, 72.09241859], [1517189280000, 0.01635083, 0.01645099, 0.01634, 0.0163588, 22.67214975], [1517189340000, 0.0163588, 0.01644099, 0.0163588, 0.01640439, 7.15922323], [1517189400000, 0.01633083, 0.01640437, 0.01633, 0.01633083, 73.77788053], [1517189460000, 0.01633083, 0.01633083, 0.01633, 0.01633, 42.07434812], [1517189520000, 0.01633, 0.01633083, 0.01633, 0.01633083, 48.72967665], [1517189580000, 0.01633083, 0.01633083, 0.01633, 0.01633083, 19.99064468], [1517189640000, 0.01639827, 0.01639827, 0.01633001, 0.01633001, 8.31292676], [1517189700000, 0.01635559, 0.01639757, 0.01635559, 0.01639756, 26.75203212], [1517189760000, 0.01635559, 0.01639749, 0.01633001, 0.0163331, 12.86484072], [1517189820000, 0.0163331, 0.0163971, 0.01633001, 0.01633001, 10.899498], [1517189880000, 0.0163331, 0.01639705, 0.01633001, 0.01633001, 17.48365809], [1517189940000, 0.01633001, 0.01639702, 0.01633001, 0.01633001, 24.50209977], [1517190000000, 0.01633001, 0.01638199, 0.01633, 0.01633, 7.96517579], [1517190060000, 0.01633, 0.01637978, 0.01633, 0.01633, 18.77612471], [1517190120000, 0.01633, 0.01635, 0.01633, 0.01633, 69.35355509], [1517190180000, 0.01633, 0.01637697, 0.01629124, 0.01629124, 49.16394266], [1517190240000, 0.01633, 0.01634888, 0.01633, 0.01633, 41.40467975], [1517190300000, 0.0163135, 0.01633, 0.01629124, 0.01629124, 7.41080536], [1517190360000, 0.01629124, 0.01637697, 0.016255, 0.016255, 66.34836076], [1517190420000, 0.01633912, 0.01637054, 0.01625, 0.01633912, 95.39096352], [1517190480000, 0.01625, 0.01636035, 0.01623377, 0.0163, 37.48192404], [1517190540000, 0.0163, 0.0163, 0.016247, 0.0163, 19.26257043], [1517190600000, 0.0163, 0.016345, 0.01624701, 0.01624701, 6.0405208], [1517190660000, 0.016247, 0.01626315, 0.016247, 0.01624702, 1.30263874], [1517190720000, 0.01624702, 0.016252, 0.01624702, 0.016252, 3.52440113], [1517190780000, 0.01634, 0.01634, 0.01624702, 0.0163, 4.51701262], [1517190840000, 0.01625202, 0.01634481, 0.01625202, 0.0163, 34.73924046], [1517190900000, 0.016345, 0.016345, 0.0163, 0.0163, 1.90250041], [1517190960000, 0.01630001, 0.01635, 0.0163, 0.0163, 51.54105064], [1517191020000, 0.0163, 0.0163, 0.01625202, 0.01626315, 7.06244799], [1517191080000, 0.0162632, 0.01634967, 0.0162632, 0.01634, 3.11185032], [1517191140000, 0.01634, 0.01634967, 0.01634, 0.01634967, 10.80645992], [1517191200000, 0.01634, 0.01634967, 0.01631413, 0.01631413, 39.70286462], [1517191260000, 0.01631413, 0.01634967, 0.01631413, 0.01631413, 32.90520546], [1517191320000, 0.01631413, 0.01634967, 0.01625, 0.01625202, 36.50489513], [1517191380000, 0.01625202, 0.01630399, 0.01622192, 0.01626899, 65.85998014], [1517191440000, 0.01630399, 0.016304, 0.01626899, 0.01626899, 9.94789265], [1517191500000, 0.01626899, 0.01629897, 0.01620071, 0.01620071, 14.29937386], [1517191560000, 0.01622249, 0.0162225, 0.01619001, 0.01620071, 57.10173302], [1517191620000, 0.01620071, 0.016284, 0.0162007, 0.01625999, 86.95975319], [1517191680000, 0.01620071, 0.01628897, 0.0162007, 0.0162007, 91.35140168], [1517191740000, 0.0162007, 0.01626499, 0.01616605, 0.01622249, 17.65349937], [1517191800000, 0.01622249, 0.01625496, 0.01622249, 0.01622249, 45.71871878], [1517191860000, 0.0162249, 0.0162249, 0.01622249, 0.01622249, 36.60750616], [1517191920000, 0.01622249, 0.01622249, 0.01615879, 0.01615879, 34.30251082], [1517191980000, 0.016222, 0.01622482, 0.016222, 0.016222, 29.12412883], [1517192040000, 0.016222, 0.01622478, 0.01615879, 0.01615879, 0.50992629], [1517192100000, 0.01622478, 0.0162249, 0.01615879, 0.01622489, 7.37028403], [1517192160000, 0.01622489, 0.01622489, 0.01622478, 0.01622478, 1.94666808], [1517192220000, 0.01622478, 0.0162249, 0.01622474, 0.01622478, 28.0420504], [1517192280000, 0.0162249, 0.0162249, 0.01622478, 0.0162249, 14.04784235], [1517192340000, 0.0162249, 0.0162249, 0.01615, 0.01615, 65.02289252], [1517192400000, 0.0162249, 0.0162249, 0.016141, 0.0162248, 7.80251433], [1517192460000, 0.0161829, 0.01622335, 0.0161441, 0.01622335, 1.0404846], [1517192520000, 0.0161599, 0.0161599, 0.0161599, 0.0161599, 10.43452313], [1517192580000, 0.016165, 0.016222, 0.016165, 0.01619275, 4.70651723], [1517192640000, 0.01619275, 0.01619275, 0.01619275, 0.01619275, 10.12792107], [1517192700000, 0.01619275, 0.01619275, 0.0161927, 0.01619275, 7.10431282], [1517192760000, 0.01619274, 0.01629999, 0.0161927, 0.01629999, 43.96050234], [1517192820000, 0.01622491, 0.01629998, 0.01622491, 0.01623492, 6.52277866], [1517192880000, 0.01629998, 0.016305, 0.01629998, 0.016305, 16.93607478], [1517192940000, 0.016305, 0.01631411, 0.0163, 0.016301, 41.60901045], [1517193000000, 0.016301, 0.01631404, 0.016198, 0.016198, 29.51459563], [1517193060000, 0.016198, 0.01624297, 0.016198, 0.0162392, 2.35173949], [1517193120000, 0.01624297, 0.016301, 0.01624297, 0.01624297, 7.46263473], [1517193180000, 0.01624297, 0.016301, 0.0162392, 0.01624297, 25.21055359], [1517193240000, 0.0162392, 0.0162392, 0.0162392, 0.0162392, 8.34853123], [1517193300000, 0.0162392, 0.01624297, 0.0162392, 0.0162392, 2.87790401], [1517193360000, 0.0162392, 0.0162392, 0.0162392, 0.0162392, 4.37188033], [1517193420000, 0.01624297, 0.01624297, 0.0162392, 0.0162392, 9.86207526], [1517193480000, 0.0162392, 0.016285, 0.0162392, 0.0162392, 19.90601282], [1517193540000, 0.0162392, 0.01632478, 0.0162392, 0.01632478, 9.4256449], [1517193600000, 0.01628496, 0.01628496, 0.016198, 0.01622, 127.47064885], [1517193660000, 0.01622, 0.01622, 0.01620301, 0.01622, 17.91206513], [1517193720000, 0.01622, 0.01622, 0.01622, 0.01622, 7.7085158], [1517193780000, 0.01622, 0.01622, 0.01620302, 0.01622, 13.461348], [1517193840000, 0.01622, 0.01622, 0.01620802, 0.01620802, 13.0187461], [1517193900000, 0.01622, 0.01622, 0.01620801, 0.01622, 11.18011143], [1517193960000, 0.01620801, 0.01622, 0.01620801, 0.01620803, 29.92716499], [1517194020000, 0.01620804, 0.016314, 0.01620803, 0.01631264, 20.53630787], [1517194080000, 0.01620805, 0.01631922, 0.01620805, 0.01620805, 14.90847295], [1517194140000, 0.01631397, 0.01631397, 0.01620804, 0.01620805, 6.84626616], [1517194200000, 0.01620805, 0.01631473, 0.01620805, 0.016314, 24.02121141], [1517194260000, 0.01621004, 0.01621004, 0.01621003, 0.01621003, 5.37499911], [1517194320000, 0.01621003, 0.01631922, 0.01621003, 0.01630499, 12.70555644], [1517194380000, 0.016299, 0.016299, 0.01621004, 0.01621004, 3.89705619], [1517194440000, 0.01621004, 0.01625004, 0.01621004, 0.01625004, 0.96775527], [1517194500000, 0.01625004, 0.01625004, 0.01625, 0.01625, 10.61634034], [1517194560000, 0.01621005, 0.01621005, 0.01621004, 0.01621004, 1.0], [1517194620000, 0.01625, 0.01625, 0.01625, 0.01625, 0.48949979], [1517194680000, 0.01621004, 0.01621004, 0.0161927, 0.0161927, 53.9969217], [1517194740000, 0.0161927, 0.01619273, 0.0161927, 0.01619273, 48.33560849], [1517194800000, 0.01619273, 0.01619273, 0.0161927, 0.0161927, 6.22521154], [1517194860000, 0.01619273, 0.01619273, 0.0161927, 0.01619273, 20.93611577], [1517194920000, 0.01619273, 0.01632, 0.01619273, 0.01619801, 45.40648239], [1517194980000, 0.01631879, 0.01631879, 0.01620306, 0.0163, 2.43121171], [1517195040000, 0.01620519, 0.01631851, 0.01620307, 0.01631851, 12.57477075], [1517195100000, 0.01631657, 0.01631657, 0.01620519, 0.0162052, 5.54339075], [1517195160000, 0.0162052, 0.01622141, 0.0162052, 0.01622141, 2.90687147], [1517195220000, 0.01620519, 0.0163, 0.01620519, 0.0163, 6.59272246], [1517195280000, 0.0163, 0.01631199, 0.01621005, 0.01621005, 5.19057055], [1517195340000, 0.0162052, 0.0162052, 0.0162052, 0.0162052, 0.39], [1517195400000, 0.0163, 0.0163, 0.0163, 0.0163, 22.70784918], [1517195460000, 0.0163, 0.0163, 0.01621, 0.01621307, 18.63981041], [1517195520000, 0.01629738, 0.01629738, 0.01621801, 0.01621801, 3.50809155], [1517195580000, 0.016208, 0.016218, 0.01620305, 0.016218, 7.84090845], [1517195640000, 0.016218, 0.01621801, 0.01620307, 0.01621801, 8.5520016], [1517195700000, 0.01629738, 0.016302, 0.01620322, 0.01620322, 12.70198901], [1517195760000, 0.0162857, 0.01630797, 0.01628565, 0.01628565, 5.17637032], [1517195820000, 0.01621801, 0.01628565, 0.01621801, 0.01621802, 5.77197289], [1517195880000, 0.01621802, 0.01621802, 0.0161927, 0.016218, 12.86438853], [1517195940000, 0.016218, 0.016218, 0.0161927, 0.0161927, 9.22770484], [1517196000000, 0.0161927, 0.016218, 0.0161927, 0.016218, 142.87724595], [1517196060000, 0.016218, 0.016218, 0.01619293, 0.016218, 1.87787782], [1517196120000, 0.016218, 0.016218, 0.01619293, 0.016218, 60.45965265], [1517196180000, 0.016218, 0.016305, 0.016218, 0.01629998, 41.21851291], [1517196240000, 0.01629964, 0.01629964, 0.01629862, 0.01629862, 17.04381744], [1517196300000, 0.01628999, 0.01630497, 0.01621, 0.01621, 4.9432082], [1517196360000, 0.0163, 0.01630432, 0.016211, 0.01625, 1.61302569], [1517196420000, 0.01630466, 0.01630466, 0.01625, 0.01625001, 2.00756026], [1517196480000, 0.01630331, 0.01630331, 0.01625, 0.01625, 4.6261971], [1517196540000, 0.01625015, 0.0163022, 0.016145, 0.01614508, 225.27977447], [1517196600000, 0.01630148, 0.01631799, 0.0162969, 0.0162969, 83.37272101], [1517196660000, 0.01629689, 0.016297, 0.01629689, 0.016297, 10.18045275], [1517196720000, 0.016297, 0.016297, 0.0162, 0.0162, 1.0493224], [1517196780000, 0.0162, 0.016297, 0.0162, 0.0162, 1.04458202], [1517196840000, 0.016297, 0.01630158, 0.01623, 0.01623, 45.06635675], [1517196900000, 0.01630158, 0.01630158, 0.01623, 0.01623001, 5.6017187], [1517196960000, 0.01630158, 0.016315, 0.01630153, 0.016315, 10.35332109], [1517197020000, 0.01630154, 0.016315, 0.01623001, 0.01623001, 11.83506277], [1517197080000, 0.01623001, 0.01631799, 0.01623001, 0.01631299, 40.15431234], [1517197140000, 0.01631495, 0.01631499, 0.01623001, 0.01623001, 2.19426759], [1517197200000, 0.0163129, 0.01632, 0.01621, 0.016315, 122.52054831], [1517197260000, 0.01623003, 0.01623003, 0.01623003, 0.01623003, 3.39331128], [1517197320000, 0.01623003, 0.01623003, 0.01623003, 0.01623003, 1.73908657], [1517197380000, 0.01623003, 0.01632, 0.01623001, 0.01623001, 54.65814292], [1517197440000, 0.01631499, 0.01634499, 0.01622, 0.01622, 363.87533769], [1517197500000, 0.01629, 0.01629, 0.01622001, 0.01629, 5.64654553], [1517197560000, 0.01622001, 0.01633917, 0.01621734, 0.01633917, 376.89041006], [1517197620000, 0.01622004, 0.01633799, 0.01622004, 0.01633799, 59.05248989], [1517197680000, 0.01632599, 0.01633589, 0.016255, 0.01633589, 44.80411374], [1517197740000, 0.01632097, 0.01632099, 0.01627, 0.01627, 15.52504649], [1517197800000, 0.01626991, 0.01632398, 0.01622101, 0.01632398, 14.25800887], [1517197860000, 0.01627, 0.01628, 0.01622009, 0.01622102, 5.19896458], [1517197920000, 0.01622102, 0.01622102, 0.01622102, 0.01622102, 0.57962509], [1517197980000, 0.01622102, 0.01622103, 0.0162201, 0.01622103, 12.56408906], [1517198040000, 0.01627, 0.01627967, 0.01622105, 0.01622105, 10.40429048], [1517198100000, 0.01622105, 0.01628, 0.01622105, 0.01628, 10.12977661], [1517198160000, 0.01628, 0.01628, 0.01622108, 0.01628, 3.14787297], [1517198220000, 0.01628, 0.01628, 0.01628, 0.01628, 5.80507319], [1517198280000, 0.01622108, 0.01622108, 0.01622105, 0.01622105, 4.4613129], [1517198340000, 0.01622108, 0.01622108, 0.01622105, 0.01622108, 8.0462961], [1517198400000, 0.01622108, 0.01622108, 0.01622105, 0.01622108, 6.71702077], [1517198460000, 0.01622106, 0.01627967, 0.01622106, 0.01627934, 45.87365041], [1517198520000, 0.016225, 0.016225, 0.016225, 0.016225, 36.06345621], [1517198580000, 0.016225, 0.016225, 0.01622105, 0.016225, 22.83255193], [1517198640000, 0.01622106, 0.01622468, 0.01622105, 0.01622106, 26.83974173], [1517198700000, 0.01622106, 0.016225, 0.01622106, 0.016225, 20.0464602], [1517198760000, 0.016225, 0.016225, 0.01622107, 0.016225, 6.22352022], [1517198820000, 0.01622107, 0.01622607, 0.01622106, 0.01622607, 11.8010861], [1517198880000, 0.01622106, 0.01627499, 0.01622106, 0.01622106, 14.76230572], [1517198940000, 0.01626999, 0.01627, 0.01626999, 0.01627, 11.12905109], [1517199000000, 0.01627495, 0.01627495, 0.01622105, 0.01622105, 33.57939999], [1517199060000, 0.01622109, 0.01627495, 0.01621001, 0.01627494, 24.43300617], [1517199120000, 0.01626999, 0.0162749, 0.01621, 0.01621, 9.93032903], [1517199180000, 0.01626997, 0.01626998, 0.01626997, 0.01626998, 7.2860301], [1517199240000, 0.0162211, 0.01626499, 0.01621, 0.01626, 6.15984066], [1517199300000, 0.016265, 0.01626998, 0.01621001, 0.01626899, 26.30496251], [1517199360000, 0.01621011, 0.01626, 0.01621011, 0.01621011, 7.76379469], [1517199420000, 0.0162101, 0.01621012, 0.01621, 0.01621012, 7.78387401], [1517199480000, 0.01625, 0.01625, 0.01621011, 0.01625, 23.85979472], [1517199540000, 0.01625, 0.01630998, 0.01621012, 0.01621012, 26.02868382], [1517199600000, 0.01629997, 0.01629997, 0.01621012, 0.01621012, 7.2425069], [1517199660000, 0.01621012, 0.01628998, 0.01621, 0.01621, 13.40720689], [1517199720000, 0.01627999, 0.01628, 0.01621, 0.01628, 41.3803972], [1517199780000, 0.016275, 0.016275, 0.016275, 0.016275, 1.53479847], [1517199840000, 0.016275, 0.016275, 0.01621005, 0.01621005, 3.85539007], [1517199900000, 0.016275, 0.01628, 0.01621005, 0.01628, 13.65703884], [1517199960000, 0.01628, 0.01628, 0.01621005, 0.01621005, 1.90319216], [1517200020000, 0.01621006, 0.0162395, 0.01621005, 0.0162395, 0.77465132], [1517200080000, 0.0162395, 0.01627967, 0.0162395, 0.0162395, 4.08778352], [1517200140000, 0.0162395, 0.01631799, 0.01621005, 0.01621005, 10.89850418], [1517200200000, 0.01621005, 0.01621005, 0.01621005, 0.01621005, 5.57854268], [1517200320000, 0.01629793, 0.01629793, 0.01621006, 0.01621006, 1.57277898], [1517200380000, 0.01629791, 0.01630499, 0.01621007, 0.01621007, 34.32235143], [1517200440000, 0.01627006, 0.01627006, 0.01621006, 0.01621006, 15.2186207], [1517200500000, 0.01621006, 0.01626798, 0.01621006, 0.0162101, 10.16100353], [1517200560000, 0.01625, 0.01625, 0.01621007, 0.01621007, 7.91365619], [1517200620000, 0.01621007, 0.0162101, 0.01621007, 0.0162101, 10.78658544], [1517200680000, 0.01621007, 0.01621007, 0.01621005, 0.01621005, 5.4928445], [1517200740000, 0.01621007, 0.01621007, 0.01621005, 0.01621005, 4.82969917], [1517200800000, 0.01621007, 0.01621007, 0.01621002, 0.01621002, 5.49118191], [1517200860000, 0.01621002, 0.01621007, 0.01621, 0.01621002, 6.8386686], [1517200920000, 0.01621, 0.01621002, 0.016136, 0.016136, 74.61367757], [1517200980000, 0.016136, 0.0162, 0.0161258, 0.0162, 18.76126544], [1517201040000, 0.0162, 0.01621002, 0.0162, 0.01621002, 4.86422873], [1517201100000, 0.01621002, 0.01621002, 0.01612582, 0.01613501, 3.35532466], [1517201160000, 0.01621, 0.01621002, 0.01613501, 0.01621002, 2.05464509], [1517201220000, 0.01621002, 0.01621002, 0.01614, 0.01614002, 5.35842875], [1517201280000, 0.016145, 0.01621, 0.01614001, 0.01615, 37.85667112], [1517201340000, 0.0162, 0.01626784, 0.01615, 0.01626784, 6.88497804], [1517201400000, 0.016263, 0.0162679, 0.0161562, 0.0162679, 12.22427189], [1517201460000, 0.01626299, 0.0162679, 0.016162, 0.01617, 29.33451293], [1517201520000, 0.01617, 0.01624807, 0.01617, 0.01624807, 14.04362096], [1517201580000, 0.01624807, 0.01624807, 0.01617001, 0.01624807, 7.39930643], [1517201640000, 0.01624804, 0.01624804, 0.01624804, 0.01624804, 0.08961241], [1517201700000, 0.01624802, 0.01624805, 0.01624802, 0.01624805, 15.27374374], [1517201760000, 0.01624806, 0.01624807, 0.01617631, 0.01617631, 21.11557103], [1517201820000, 0.01624802, 0.01626789, 0.01624802, 0.01624807, 17.18490775], [1517201880000, 0.01624807, 0.016263, 0.01624807, 0.016258, 3.57031222], [1517201940000, 0.01624807, 0.01626789, 0.016145, 0.016245, 21.7716692], [1517202000000, 0.01614002, 0.01624297, 0.01614002, 0.01619, 47.07880523], [1517202060000, 0.01624297, 0.01626789, 0.01623048, 0.01626789, 1.42671868], [1517202120000, 0.01619, 0.01626298, 0.01619, 0.01626298, 1.55504938], [1517202180000, 0.01619, 0.01619001, 0.01614733, 0.01616633, 64.89986508], [1517202240000, 0.01616633, 0.01618252, 0.0161451, 0.016165, 31.85734666], [1517202300000, 0.0162, 0.01624341, 0.01614186, 0.01624341, 5.74842815], [1517202360000, 0.01614186, 0.01623899, 0.01614186, 0.01623899, 17.42629836], [1517202420000, 0.01614191, 0.01614191, 0.01614191, 0.01614191, 4.71070608], [1517202480000, 0.01614192, 0.01623398, 0.01614191, 0.01623398, 6.39211173], [1517202540000, 0.01623397, 0.01623397, 0.01623397, 0.01623397, 4.69934558], [1517202600000, 0.01623395, 0.01623395, 0.01614192, 0.01623395, 2.52328171], [1517202660000, 0.016147, 0.01621, 0.016147, 0.01621, 0.26760222], [1517202720000, 0.01614701, 0.01621, 0.01614174, 0.016208, 3.62083574], [1517202780000, 0.016208, 0.016209, 0.01614701, 0.016209, 9.48765877], [1517202840000, 0.01614701, 0.01623392, 0.01614175, 0.01614176, 23.18875262], [1517202900000, 0.01620801, 0.016226, 0.016208, 0.016226, 2.78405483], [1517202960000, 0.016226, 0.01623294, 0.016208, 0.016208, 3.47482181], [1517203020000, 0.016208, 0.01623294, 0.016208, 0.0162329, 10.40087573], [1517203080000, 0.016208, 0.01623286, 0.016208, 0.01623286, 17.37621407], [1517203140000, 0.01620801, 0.01623283, 0.016208, 0.016208, 20.34157209], [1517203200000, 0.01620801, 0.01620801, 0.016208, 0.016208, 27.13636616], [1517203260000, 0.016208, 0.01620801, 0.016208, 0.01620801, 27.24266012], [1517203320000, 0.0162081, 0.01626297, 0.0162081, 0.01623281, 6.81557809], [1517203380000, 0.01623281, 0.01623282, 0.01623281, 0.01623281, 4.43789953], [1517203440000, 0.01623282, 0.01626789, 0.01623282, 0.01626789, 0.77102127], [1517203500000, 0.01626789, 0.01626789, 0.01620801, 0.01620801, 28.44225059], [1517203560000, 0.01626789, 0.01626789, 0.01620604, 0.01626788, 15.28633243], [1517203620000, 0.01620081, 0.01626667, 0.01618503, 0.01626667, 5.31495865], [1517203680000, 0.01626667, 0.01626667, 0.01619012, 0.01619022, 1.35381179], [1517203740000, 0.01626634, 0.01626634, 0.01619022, 0.01619022, 2.70433741], [1517203800000, 0.01619022, 0.01626467, 0.01619022, 0.01626467, 21.1227766], [1517203860000, 0.01626465, 0.01626466, 0.016209, 0.01626399, 22.61713647], [1517203920000, 0.0162129, 0.01626634, 0.0162129, 0.01626567, 9.02266809], [1517203980000, 0.01626565, 0.01626566, 0.01626366, 0.01626565, 40.66817205], [1517204040000, 0.01626366, 0.01626366, 0.0162, 0.01626366, 47.26212526], [1517204100000, 0.01626366, 0.01626563, 0.01626366, 0.01626366, 6.92338699], [1517204160000, 0.0162, 0.01626366, 0.0162, 0.01620001, 0.52249451], [1517204220000, 0.01620001, 0.01626366, 0.01620001, 0.01625, 26.01060012], [1517204280000, 0.01625, 0.01625, 0.01620063, 0.01620063, 1.92484926], [1517204340000, 0.01625, 0.01626366, 0.01625, 0.01626366, 21.61270306], [1517204400000, 0.01620064, 0.01620064, 0.01620064, 0.01620064, 1.96511222], [1517204460000, 0.01620063, 0.01620064, 0.01620001, 0.01620001, 19.00440558], [1517204520000, 0.01620001, 0.01620001, 0.01620001, 0.01620001, 0.36586476], [1517204580000, 0.01620064, 0.01626366, 0.01620001, 0.01626366, 22.32618747], [1517204640000, 0.01620001, 0.01620001, 0.01620001, 0.01620001, 20.01215774], [1517204700000, 0.01620001, 0.01620001, 0.01619022, 0.01619022, 18.39247309], [1517204760000, 0.01620001, 0.01626366, 0.01615503, 0.01626366, 30.16552492], [1517204820000, 0.01626359, 0.01626359, 0.01616002, 0.01616002, 1.28438236], [1517204880000, 0.01616005, 0.01625696, 0.01616002, 0.01625696, 7.20618303], [1517204940000, 0.01625599, 0.016256, 0.0162, 0.0162, 21.71147607], [1517205000000, 0.0162, 0.01625, 0.0162, 0.0162, 6.92573756], [1517205060000, 0.01625, 0.01625, 0.0162, 0.0162, 0.66039524], [1517205120000, 0.01620001, 0.01625, 0.01620001, 0.01625, 0.85723634], [1517205180000, 0.01624999, 0.01624999, 0.01622499, 0.01622499, 8.26789444], [1517205240000, 0.01624699, 0.01624699, 0.01614174, 0.0162409, 10.48645622], [1517205300000, 0.01624079, 0.01624079, 0.01614, 0.01614, 26.99453454], [1517205360000, 0.01622599, 0.01623999, 0.01613502, 0.01613502, 29.16559824], [1517205420000, 0.01621999, 0.01621999, 0.01621999, 0.01621999, 0.1356351], [1517205480000, 0.01621998, 0.016221, 0.016215, 0.016221, 19.879235], [1517205540000, 0.01621998, 0.01621999, 0.016215, 0.016215, 3.89809504], [1517205600000, 0.016215, 0.016215, 0.01613503, 0.01613503, 4.7554656], [1517205660000, 0.016215, 0.016215, 0.016215, 0.016215, 1.0], [1517205720000, 0.016215, 0.016245, 0.016215, 0.016215, 53.4314701], [1517205780000, 0.016215, 0.01621501, 0.016215, 0.01621501, 11.91598516], [1517205840000, 0.01621501, 0.01621501, 0.016215, 0.016215, 0.99924718], [1517205900000, 0.016215, 0.01621501, 0.016215, 0.01621501, 8.74182353], [1517205960000, 0.016215, 0.016215, 0.016215, 0.016215, 0.2039778], [1517206020000, 0.01621501, 0.01621501, 0.016215, 0.016215, 0.45469347], [1517206080000, 0.016145, 0.016215, 0.01614, 0.016215, 15.86528545], [1517206140000, 0.0162, 0.0162, 0.0162, 0.0162, 0.6895166], [1517206200000, 0.0162, 0.016215, 0.0162, 0.016215, 6.53585552], [1517206260000, 0.01620001, 0.01621502, 0.0162, 0.01621502, 6.50034024], [1517206320000, 0.01625, 0.01626366, 0.01622, 0.01622, 35.76284868], [1517206380000, 0.01622, 0.01626366, 0.01622, 0.01622, 23.67492343], [1517206440000, 0.01622, 0.01628989, 0.01622, 0.01626366, 140.74634419], [1517206500000, 0.01626366, 0.016285, 0.01626366, 0.016285, 9.6529902], [1517206560000, 0.0162899, 0.01629993, 0.016259, 0.016259, 80.1004099], [1517206620000, 0.016259, 0.01628999, 0.016259, 0.016259, 3.44954307], [1517206680000, 0.016259, 0.01628, 0.01615604, 0.016259, 181.79084001], [1517206740000, 0.016259, 0.01626155, 0.01622, 0.01626155, 1.85958159], [1517206800000, 0.01622, 0.01626154, 0.01622, 0.01626148, 5.90174225], [1517206860000, 0.01626148, 0.01626156, 0.01622572, 0.01626156, 12.79496276], [1517206920000, 0.016261, 0.016261, 0.01622572, 0.01622572, 0.67661453], [1517206980000, 0.01622572, 0.01622572, 0.0161803, 0.01622572, 11.37620399], [1517207040000, 0.01622572, 0.01622572, 0.01618, 0.01618, 3.92637893], [1517207100000, 0.01622572, 0.01622573, 0.01622572, 0.01622573, 15.30947377], [1517207160000, 0.01622572, 0.01622573, 0.01622572, 0.01622573, 28.62692375], [1517207220000, 0.01622574, 0.01622574, 0.01622573, 0.01622573, 8.0], [1517207280000, 0.01622574, 0.016261, 0.01622574, 0.016261, 5.1692149], [1517207340000, 0.016261, 0.01628, 0.016261, 0.01627999, 56.51702034], [1517207400000, 0.01627999, 0.01628, 0.01622574, 0.01622574, 13.37998698], [1517207460000, 0.01627997, 0.01627997, 0.01622574, 0.01622574, 13.995088], [1517207520000, 0.01622574, 0.01622574, 0.01622574, 0.01622574, 2.26615457], [1517207580000, 0.016275, 0.01628, 0.01622573, 0.01628, 108.23290612], [1517207640000, 0.01629499, 0.01629499, 0.01622573, 0.01622573, 46.38233817], [1517207700000, 0.01622573, 0.016295, 0.01622573, 0.01628699, 413.34035677], [1517207760000, 0.01628699, 0.016305, 0.01622, 0.01622, 35.3667216], [1517207820000, 0.01628699, 0.016306, 0.01622, 0.01622287, 4.33956725], [1517207880000, 0.01622, 0.01622001, 0.01622, 0.01622001, 24.09379444], [1517207940000, 0.01622001, 0.01622287, 0.01622, 0.01622001, 9.53366676], [1517208000000, 0.01622001, 0.01631799, 0.01622, 0.01631799, 0.64145071], [1517208060000, 0.01622001, 0.01628569, 0.01619401, 0.01622001, 163.89233104], [1517208120000, 0.01622001, 0.016298, 0.01622001, 0.01626599, 6.16848733], [1517208180000, 0.01626599, 0.01626599, 0.01626599, 0.01626599, 3.10671584], [1517208240000, 0.01625, 0.01626599, 0.01625, 0.01626599, 13.3463182], [1517208300000, 0.01626599, 0.016297, 0.01626599, 0.016297, 8.84518454], [1517208360000, 0.01629699, 0.01630196, 0.01626599, 0.01626599, 29.94417592], [1517208420000, 0.01625, 0.01626599, 0.01625, 0.01625, 8.63442315], [1517208480000, 0.01625, 0.01625, 0.01622008, 0.01622008, 7.5577178], [1517208540000, 0.01626599, 0.01630184, 0.01622008, 0.01622008, 46.7963567], [1517208600000, 0.01622008, 0.0163, 0.01622008, 0.01622008, 4.12156247], [1517208660000, 0.01627, 0.01627, 0.01622008, 0.01622008, 3.36875164], [1517208720000, 0.01622008, 0.01622008, 0.01622005, 0.01622005, 5.92855812], [1517208780000, 0.01622008, 0.01622008, 0.01622008, 0.01622008, 1.00280604], [1517208840000, 0.01622005, 0.01626499, 0.01616402, 0.01626, 9.35554044], [1517208900000, 0.01626005, 0.01626005, 0.0161502, 0.0161502, 23.77186624], [1517208960000, 0.01616402, 0.01625496, 0.01615, 0.01615014, 12.93417896], [1517209020000, 0.01619, 0.01619, 0.01615, 0.01615001, 46.67332434], [1517209080000, 0.01615, 0.01625486, 0.01615, 0.01615001, 5.0977359], [1517209140000, 0.01625447, 0.01625447, 0.01615, 0.01625424, 0.58748874], [1517209200000, 0.01615, 0.01625414, 0.01613502, 0.01615, 12.01452472], [1517209260000, 0.01615, 0.01615, 0.01613502, 0.01615, 4.58126085], [1517209320000, 0.01614999, 0.01615, 0.01614888, 0.01614888, 1.77268883], [1517209380000, 0.01614888, 0.01623821, 0.01614054, 0.01623821, 6.30269558], [1517209440000, 0.01624984, 0.01624984, 0.01613502, 0.01614, 31.19603666], [1517209500000, 0.01624792, 0.01625, 0.01614, 0.01624197, 15.6403712], [1517209560000, 0.01624197, 0.01624197, 0.01614, 0.01614, 0.94938052], [1517209620000, 0.01614001, 0.01614001, 0.01614, 0.01614, 13.52111809], [1517209680000, 0.01613502, 0.01614, 0.0161258, 0.01614, 25.10589941], [1517209740000, 0.01614, 0.01614, 0.01612582, 0.01612584, 203.55310526], [1517209800000, 0.01612584, 0.01614, 0.01612583, 0.01614, 24.2847952], [1517209860000, 0.01614, 0.01614, 0.01613999, 0.01613999, 0.13673055], [1517209920000, 0.01613999, 0.01613999, 0.01612583, 0.01613999, 2.2589257], [1517209980000, 0.01614, 0.01614, 0.01612583, 0.01614, 1.65347581], [1517210040000, 0.01614, 0.01614, 0.01612667, 0.01614, 1.6367305], [1517210100000, 0.01614, 0.0162388, 0.01614, 0.01614, 12.5045404], [1517210160000, 0.01623878, 0.01623878, 0.01614, 0.01614001, 45.0929736], [1517210220000, 0.01614001, 0.01614001, 0.01614, 0.01614, 5.52532265], [1517210280000, 0.01614, 0.01614001, 0.01614, 0.01614001, 18.44231448], [1517210340000, 0.01614001, 0.01614001, 0.01614, 0.01614001, 13.33940833], [1517210400000, 0.01614001, 0.01614001, 0.01614, 0.01614, 16.2948103], [1517210460000, 0.01614001, 0.01614001, 0.01614, 0.01614, 12.46389412], [1517210520000, 0.01614001, 0.01614001, 0.01614, 0.01614001, 24.734038], [1517210580000, 0.01614, 0.01614001, 0.01614, 0.01614001, 12.12617254], [1517210640000, 0.01614, 0.01614001, 0.01614, 0.01614001, 2.326098], [1517210700000, 0.01618839, 0.01618839, 0.01614, 0.01618839, 3.64439459], [1517210760000, 0.01618838, 0.01618839, 0.016139, 0.016139, 11.94851552], [1517210820000, 0.016139, 0.016139, 0.01612583, 0.016139, 2.90715947], [1517210880000, 0.01612583, 0.01612584, 0.01612583, 0.01612584, 1.13400098], [1517210940000, 0.016139, 0.016139, 0.01612583, 0.01612584, 13.01176298], [1517211000000, 0.01612583, 0.01612584, 0.01612583, 0.01612583, 12.84620318], [1517211060000, 0.01612584, 0.01612584, 0.01612583, 0.01612584, 7.96413259], [1517211120000, 0.01612584, 0.01612584, 0.01612583, 0.01612584, 11.63673806], [1517211180000, 0.01612584, 0.01612584, 0.01612583, 0.01612584, 38.87836824], [1517211240000, 0.01612584, 0.01613899, 0.01612583, 0.01613899, 18.98973617], [1517211300000, 0.01613899, 0.016139, 0.01612584, 0.016139, 18.26200911], [1517211360000, 0.01612584, 0.01612584, 0.01612584, 0.01612584, 4.30861876], [1517211420000, 0.01612584, 0.01612584, 0.01612584, 0.01612584, 1.06965997], [1517211480000, 0.01612584, 0.016139, 0.01612584, 0.01612584, 36.26720157], [1517211540000, 0.01612584, 0.016139, 0.01612584, 0.016139, 16.38946378], [1517211600000, 0.016139, 0.016188, 0.016139, 0.016139, 37.81341045], [1517211660000, 0.01618799, 0.016188, 0.01618799, 0.01618799, 7.32781162], [1517211720000, 0.01618798, 0.016188, 0.016139, 0.016188, 14.55545107], [1517211780000, 0.016188, 0.016188, 0.016139, 0.016188, 57.86140187], [1517211840000, 0.016171, 0.016188, 0.016171, 0.016171, 2.68598284], [1517211900000, 0.016171, 0.016188, 0.016171, 0.016172, 2.71070739], [1517211960000, 0.016188, 0.016188, 0.016172, 0.016172, 3.06304128], [1517212020000, 0.016188, 0.01618839, 0.016188, 0.01618801, 20.13510228], [1517212080000, 0.01618839, 0.01618939, 0.01618839, 0.01618839, 1.27068904], [1517212140000, 0.01618839, 0.01618839, 0.016188, 0.016188, 40.9614672], [1517212200000, 0.016188, 0.01618839, 0.016188, 0.01618839, 12.23870489], [1517212260000, 0.01618839, 0.01618839, 0.01612582, 0.01612582, 48.01819223], [1517212320000, 0.01612582, 0.01612582, 0.01612011, 0.01612582, 5.67198452], [1517212380000, 0.01612582, 0.01612582, 0.01612011, 0.01612582, 43.69725171], [1517212440000, 0.01612581, 0.01612582, 0.01612011, 0.01612012, 4.81722959], [1517212500000, 0.01612582, 0.01612582, 0.01612582, 0.01612582, 43.98484038], [1517212560000, 0.01612582, 0.01612582, 0.01612582, 0.01612582, 53.78500209], [1517212620000, 0.01612582, 0.01616613, 0.0161, 0.0161, 117.96878119], [1517212680000, 0.01612582, 0.01612582, 0.01611135, 0.01612582, 0.92867049], [1517212740000, 0.01618838, 0.01618838, 0.0161259, 0.01618838, 2.69233282], [1517212800000, 0.01613583, 0.01618839, 0.01613583, 0.01618838, 7.12868326], [1517212860000, 0.01618838, 0.01619999, 0.01613602, 0.01613602, 38.45676039], [1517212920000, 0.01614, 0.01619, 0.01614, 0.01614, 6.77003429], [1517212980000, 0.016142, 0.01615, 0.01614101, 0.01614101, 24.15948876], [1517213040000, 0.01614103, 0.01619999, 0.016141, 0.01618999, 30.0421002], [1517213100000, 0.016141, 0.016151, 0.016141, 0.016151, 2.90221597], [1517213160000, 0.016151, 0.016151, 0.016151, 0.016151, 0.99577157], [1517213220000, 0.016151, 0.01618897, 0.016151, 0.016151, 6.46007942], [1517213280000, 0.016151, 0.016151, 0.016151, 0.016151, 7.72685381], [1517213340000, 0.016151, 0.01618499, 0.016141, 0.016141, 24.27731307], [1517213400000, 0.016141, 0.016151, 0.016141, 0.016141, 32.03331714], [1517213460000, 0.016151, 0.016151, 0.016141, 0.016141, 6.62778753], [1517213520000, 0.016141, 0.016142, 0.016141, 0.016141, 46.6690009], [1517213580000, 0.016142, 0.016142, 0.016141, 0.016142, 15.32206226], [1517213640000, 0.016142, 0.016142, 0.016142, 0.016142, 3.39910429], [1517213700000, 0.016141, 0.016142, 0.01612587, 0.016142, 1.1502371], [1517213760000, 0.016142, 0.016142, 0.01612587, 0.01612587, 7.97068303], [1517213820000, 0.016142, 0.016142, 0.01612587, 0.01612587, 5.64947531], [1517213880000, 0.01614199, 0.01618894, 0.01611135, 0.01611135, 194.45344121], [1517213940000, 0.016184, 0.016184, 0.01607806, 0.01607806, 33.61622714], [1517214000000, 0.01607806, 0.01611135, 0.01606802, 0.01609454, 49.667088], [1517214060000, 0.01611135, 0.01611135, 0.01606977, 0.01606977, 19.86465835], [1517214120000, 0.01606977, 0.01611135, 0.01606297, 0.01611135, 34.84401058], [1517214180000, 0.01607683, 0.0161113, 0.01606602, 0.01609292, 8.95037516], [1517214240000, 0.01609292, 0.01609292, 0.01606602, 0.01606602, 4.36905294], [1517214300000, 0.01609292, 0.01609292, 0.016071, 0.01609292, 5.96541597], [1517214360000, 0.01609292, 0.01609292, 0.016071, 0.01609292, 6.50170048], [1517214420000, 0.01609292, 0.0161, 0.01606602, 0.01609292, 16.82866167], [1517214480000, 0.01609999, 0.01609999, 0.01607101, 0.01609999, 10.8547178], [1517214540000, 0.01609999, 0.01609999, 0.01607105, 0.016076, 13.86362115], [1517214600000, 0.016098, 0.01609999, 0.016076, 0.01609999, 40.31423444], [1517214660000, 0.01609999, 0.01609999, 0.01608101, 0.01609999, 12.82968843], [1517214720000, 0.01609999, 0.01609999, 0.01608102, 0.01609999, 93.28484068], [1517214780000, 0.01609999, 0.01609999, 0.01609099, 0.01609999, 42.02649657], [1517214840000, 0.01609999, 0.01609999, 0.01608101, 0.01609999, 5.03300607], [1517214900000, 0.01609999, 0.0161, 0.01606803, 0.0161, 21.96374065], [1517214960000, 0.0160888, 0.01611135, 0.0160888, 0.01611135, 7.11392258], [1517215020000, 0.01615015, 0.01618399, 0.01611, 0.01618399, 2.29466226], [1517215080000, 0.01618399, 0.01618799, 0.01612987, 0.01618797, 7.69992168], [1517215140000, 0.01618797, 0.01618797, 0.016096, 0.0161879, 11.88825166], [1517215200000, 0.01618785, 0.01618791, 0.01618785, 0.01618791, 30.00458229], [1517215260000, 0.0161879, 0.016188, 0.01610703, 0.01610703, 24.20172336], [1517215320000, 0.016188, 0.01618895, 0.0161879, 0.0161879, 3.68422057], [1517215380000, 0.01618895, 0.01620101, 0.0161879, 0.01620101, 40.5295908], [1517215440000, 0.01620101, 0.01621499, 0.0161879, 0.0161879, 26.60377401], [1517215500000, 0.0161879, 0.016201, 0.01610746, 0.016201, 5.27751502], [1517215560000, 0.016111, 0.016201, 0.01610703, 0.01610747, 47.71103649], [1517215620000, 0.01610751, 0.01620099, 0.01610751, 0.01620099, 20.66475776], [1517215680000, 0.01620099, 0.016201, 0.01620099, 0.01620099, 7.96660986], [1517215740000, 0.016201, 0.016201, 0.016196, 0.016196, 5.58012932], [1517215800000, 0.01619599, 0.01619599, 0.01610752, 0.01619099, 1.92111171], [1517215860000, 0.01619099, 0.01619099, 0.01619099, 0.01619099, 3.51120115], [1517215920000, 0.01619099, 0.016192, 0.01614061, 0.01614061, 16.21240667], [1517215980000, 0.01610753, 0.01614061, 0.01610753, 0.01614061, 3.59043581], [1517216040000, 0.01614061, 0.01614061, 0.01610401, 0.01610401, 41.28733212], [1517216100000, 0.01614061, 0.01614061, 0.01610401, 0.01611061, 5.02618397], [1517216160000, 0.01611061, 0.01611061, 0.01610403, 0.01610403, 3.81239431], [1517216220000, 0.01611061, 0.0161909, 0.01610404, 0.016109, 16.76817508], [1517216280000, 0.016181, 0.0161859, 0.016109, 0.01618589, 9.7678163], [1517216340000, 0.0161859, 0.0161859, 0.016109, 0.016109, 6.96972625], [1517216400000, 0.01618589, 0.0161859, 0.016109, 0.016109, 28.72826731], [1517216460000, 0.01611, 0.0161859, 0.01611, 0.0161859, 24.96547248], [1517216520000, 0.01619, 0.016201, 0.01619, 0.01620098, 61.60516827], [1517216580000, 0.01619, 0.0162, 0.01611001, 0.0162, 35.38883247], [1517216640000, 0.0162, 0.01620091, 0.0162, 0.0162, 27.6157749], [1517216700000, 0.01620068, 0.016201, 0.0162, 0.0162, 12.58492858], [1517216760000, 0.0162, 0.0162, 0.0162, 0.0162, 1.963048], [1517216820000, 0.0162, 0.0162, 0.01611, 0.01611, 10.69713044], [1517216880000, 0.01611, 0.01611, 0.01611, 0.01611, 0.3], [1517216940000, 0.01611, 0.016201, 0.01611, 0.016201, 17.47080029], [1517217000000, 0.01611, 0.016201, 0.01611, 0.01611, 1.31516546], [1517217060000, 0.016201, 0.016201, 0.01611001, 0.01611002, 6.22192154], [1517217120000, 0.01620068, 0.01620068, 0.01611, 0.01620068, 25.81549443], [1517217180000, 0.01620036, 0.01620068, 0.0162, 0.01620068, 23.40981621], [1517217240000, 0.01620068, 0.016201, 0.01620068, 0.01620068, 34.62797973], [1517217300000, 0.01620068, 0.016201, 0.01611, 0.016201, 34.67578643], [1517217360000, 0.016196, 0.016201, 0.01611, 0.016201, 28.97255328], [1517217420000, 0.016201, 0.016201, 0.01611001, 0.01611001, 6.06777006], [1517217480000, 0.01619597, 0.01619597, 0.01611001, 0.01611001, 25.09465747], [1517217540000, 0.01619099, 0.01619099, 0.01611001, 0.01611001, 4.71679778], [1517217600000, 0.01611001, 0.01611001, 0.01610001, 0.01611001, 11.69615805], [1517217660000, 0.01610003, 0.01611001, 0.01610003, 0.01611001, 2.86220345], [1517217720000, 0.01611001, 0.01611001, 0.01611001, 0.01611001, 3.49376596], [1517217780000, 0.01617499, 0.01617966, 0.01616468, 0.01616468, 22.64623835], [1517217840000, 0.01616468, 0.016173, 0.01611002, 0.01611002, 47.36573772], [1517217900000, 0.01616436, 0.01617797, 0.01611002, 0.01617797, 5.48428038], [1517217960000, 0.01611002, 0.01616436, 0.01611002, 0.01611002, 16.70007325], [1517218020000, 0.01611002, 0.01611005, 0.01608102, 0.01608103, 12.22309646], [1517218080000, 0.01611005, 0.01611005, 0.01608107, 0.01608107, 13.10793556], [1517218140000, 0.01611005, 0.01616434, 0.01608103, 0.01611005, 13.8868919], [1517218200000, 0.01611005, 0.01611005, 0.01608114, 0.01608114, 3.51261673], [1517218260000, 0.01611005, 0.01611005, 0.01611005, 0.01611005, 1.76589421], [1517218320000, 0.01608201, 0.01611005, 0.016082, 0.01608206, 53.22669065], [1517218380000, 0.01611005, 0.01611005, 0.01611005, 0.01611005, 11.40145918], [1517218440000, 0.01616433, 0.01616433, 0.0161101, 0.0161101, 10.28020469], [1517218500000, 0.0161101, 0.01616433, 0.01611009, 0.01611009, 40.9113659], [1517218560000, 0.0161101, 0.0161101, 0.01611009, 0.01611009, 2.90160435], [1517218620000, 0.01611009, 0.0161101, 0.01611009, 0.0161101, 7.95445816], [1517218680000, 0.0161101, 0.01615831, 0.0161101, 0.0161583, 21.55919204], [1517218740000, 0.01611009, 0.0161101, 0.01608102, 0.0161101, 23.76472881], [1517218800000, 0.0161101, 0.0161583, 0.01606293, 0.01606294, 45.78941983], [1517218860000, 0.016154, 0.0161583, 0.01606295, 0.016063, 5.82880493], [1517218920000, 0.01606301, 0.016154, 0.01606301, 0.016154, 2.54527504], [1517218980000, 0.01615397, 0.016154, 0.01615397, 0.01615397, 7.94006037], [1517219040000, 0.016154, 0.016154, 0.01606502, 0.01606502, 15.88843135], [1517219100000, 0.01608926, 0.016153, 0.01608926, 0.01608926, 9.47790679], [1517219160000, 0.016153, 0.01615396, 0.016153, 0.01615396, 4.08108799], [1517219220000, 0.01615396, 0.01615397, 0.01608927, 0.01608927, 22.08097674], [1517219280000, 0.01615397, 0.01615397, 0.01615396, 0.01615396, 0.24246304], [1517219340000, 0.01615395, 0.01615397, 0.01615395, 0.01615397, 44.5807241], [1517219400000, 0.01615395, 0.01615395, 0.01615395, 0.01615395, 0.58070025], [1517219460000, 0.01615395, 0.01615395, 0.01615395, 0.01615395, 0.07], [1517219520000, 0.01615394, 0.01615394, 0.01609, 0.01609001, 10.72789021], [1517219580000, 0.01615394, 0.01615397, 0.01609005, 0.01609005, 26.41103996], [1517219640000, 0.01615397, 0.01615397, 0.01609, 0.01615397, 26.74477616], [1517219700000, 0.01615397, 0.016154, 0.01609007, 0.016154, 39.44270248], [1517219760000, 0.016154, 0.016154, 0.0160954, 0.0160954, 39.50442343], [1517219820000, 0.0160954, 0.01615396, 0.01609, 0.01615393, 71.68759523], [1517219880000, 0.01614795, 0.01614795, 0.01609545, 0.01609545, 12.81666607], [1517219940000, 0.01614791, 0.01614791, 0.01609542, 0.0161479, 42.75968115], [1517220000000, 0.0161479, 0.01615831, 0.01609543, 0.01612799, 9.93455439], [1517220060000, 0.01612799, 0.01615299, 0.01612799, 0.01612799, 8.05735677], [1517220120000, 0.01612799, 0.01614796, 0.01609, 0.01609, 34.09513903], [1517220180000, 0.01614791, 0.01614791, 0.01609, 0.01609002, 9.95612823], [1517220240000, 0.01609003, 0.016138, 0.01609, 0.016138, 31.99961787], [1517220300000, 0.0161004, 0.0161583, 0.0161004, 0.0161004, 24.43251634], [1517220360000, 0.0161004, 0.01615819, 0.01609, 0.01609, 2.12613224], [1517220420000, 0.0161, 0.01610004, 0.01609, 0.01610004, 6.54739715], [1517220480000, 0.01610004, 0.016152, 0.01609, 0.01609002, 142.28430804], [1517220540000, 0.01609971, 0.016147, 0.01609971, 0.01609971, 1.83140145], [1517220600000, 0.01615199, 0.01615199, 0.01609971, 0.01609971, 2.33068756], [1517220660000, 0.01615198, 0.01615198, 0.01609, 0.01609, 17.51765511], [1517220720000, 0.01609, 0.01615199, 0.01609, 0.0161, 0.65180201], [1517220780000, 0.0161, 0.0161, 0.01609642, 0.01609642, 4.8400101], [1517220840000, 0.01609642, 0.0161, 0.01609642, 0.01609642, 11.73237412], [1517220900000, 0.0161, 0.01615198, 0.01609641, 0.01615198, 40.80284933], [1517220960000, 0.01615198, 0.01615198, 0.01609641, 0.01609641, 1.40549079], [1517221020000, 0.01609641, 0.01615198, 0.01609, 0.01610152, 7.7325931], [1517221080000, 0.016151, 0.016151, 0.01606293, 0.01606293, 16.33966902], [1517221140000, 0.016151, 0.016151, 0.01606294, 0.01606294, 4.58342827], [1517221200000, 0.01606295, 0.01614294, 0.01606293, 0.01614294, 31.13872114], [1517221260000, 0.016142, 0.016142, 0.01606293, 0.01608919, 42.68550834], [1517221320000, 0.01614293, 0.01614293, 0.01606293, 0.01613919, 10.57932651], [1517221380000, 0.01606296, 0.01606296, 0.01606296, 0.01606296, 0.918], [1517221440000, 0.016139, 0.016139, 0.01606296, 0.01606296, 22.98351366], [1517221500000, 0.01606296, 0.01606296, 0.01606293, 0.01606295, 13.42261022], [1517221560000, 0.01606294, 0.0160911, 0.01606294, 0.0160911, 34.82086496], [1517221620000, 0.01609111, 0.01609112, 0.0160911, 0.01609112, 6.4328865], [1517221680000, 0.01612899, 0.016139, 0.0160911, 0.01613799, 11.92188499], [1517221740000, 0.01613799, 0.016139, 0.0160911, 0.0160911, 30.5322571], [1517221800000, 0.0160911, 0.01613893, 0.0160911, 0.01613888, 31.88331569], [1517221860000, 0.01609991, 0.016139, 0.0160911, 0.0160911, 27.89749702], [1517221920000, 0.0160911, 0.0160911, 0.0160911, 0.0160911, 31.15494841], [1517221980000, 0.01609991, 0.01609991, 0.0160911, 0.01609991, 10.99162306], [1517222040000, 0.01609991, 0.01609991, 0.01609991, 0.01609991, 2.2091634], [1517222100000, 0.01609991, 0.01609991, 0.01609991, 0.01609991, 19.21679962], [1517222160000, 0.016139, 0.01613919, 0.01609991, 0.01613919, 6.62463112], [1517222220000, 0.01613919, 0.01614, 0.01613919, 0.01614, 9.73095249], [1517222280000, 0.01614, 0.01614293, 0.0160655, 0.0161, 8.44269599], [1517222340000, 0.01613996, 0.01614, 0.0161, 0.016139, 4.647715], [1517222400000, 0.0161, 0.016139, 0.0161, 0.016139, 21.28856951], [1517222460000, 0.016139, 0.016139, 0.0161, 0.0161, 4.47693431], [1517222520000, 0.01613895, 0.01613895, 0.0161, 0.0161, 10.55122438], [1517222580000, 0.01613894, 0.01613894, 0.0161, 0.0161, 26.15674414], [1517222640000, 0.01613894, 0.016139, 0.01612, 0.01613899, 3.43919338], [1517222700000, 0.01613894, 0.01613894, 0.01610002, 0.01612274, 5.06276144], [1517222760000, 0.01610002, 0.01610002, 0.0161, 0.0161, 2.81078433], [1517222820000, 0.01612274, 0.01615198, 0.0161, 0.01613894, 26.57196417], [1517222880000, 0.01613894, 0.01613894, 0.01611, 0.01611, 1.97254202], [1517222940000, 0.01613893, 0.01613893, 0.01610001, 0.01610001, 0.82054477], [1517223000000, 0.01611, 0.01611, 0.0161, 0.0161, 3.64883212], [1517223060000, 0.01611, 0.01611, 0.0161, 0.01611, 29.17531438], [1517223120000, 0.01610001, 0.01611, 0.0161, 0.0161, 11.07956369], [1517223180000, 0.01610001, 0.01610001, 0.0161, 0.0161, 21.90522], [1517223240000, 0.01611, 0.01611, 0.01610001, 0.01611, 11.85032569], [1517223300000, 0.01610003, 0.01610003, 0.01610001, 0.01610001, 9.16488521], [1517223360000, 0.01610001, 0.01610002, 0.01610001, 0.01610001, 26.36419127], [1517223420000, 0.01610003, 0.01610003, 0.01610001, 0.01610001, 7.55100847], [1517223480000, 0.01610001, 0.01611, 0.0161, 0.01611, 27.62746221], [1517223540000, 0.01611, 0.01611, 0.01610001, 0.01610001, 101.17027429], [1517223600000, 0.01610002, 0.01611, 0.01610001, 0.01610001, 3.43821922], [1517223660000, 0.01611, 0.01611, 0.01611, 0.01611, 0.29705656], [1517223720000, 0.01610001, 0.01611, 0.0161, 0.01611, 6.84127307], [1517223780000, 0.0161, 0.01611, 0.0161, 0.01611, 40.01885477], [1517223840000, 0.0161, 0.01611, 0.0161, 0.01611, 32.92591809], [1517223900000, 0.0161, 0.01611, 0.0161, 0.01611, 3.52781033], [1517223960000, 0.01611, 0.016152, 0.01610002, 0.01610003, 26.14388288], [1517224020000, 0.01610003, 0.01611, 0.01610003, 0.01611, 23.2463854], [1517224080000, 0.01612, 0.01612, 0.01611502, 0.01611502, 7.76072615], [1517224140000, 0.01612, 0.016152, 0.01611505, 0.016152, 1.95951014], [1517224200000, 0.016152, 0.016152, 0.0161151, 0.01611513, 7.51407931], [1517224260000, 0.01611514, 0.01615199, 0.01611513, 0.01611514, 3.482828], [1517224320000, 0.01611514, 0.01615831, 0.01611513, 0.01615831, 230.75744708], [1517224380000, 0.01611513, 0.01615831, 0.0161151, 0.0161151, 12.18440813], [1517224440000, 0.0161151, 0.01615831, 0.01611506, 0.01611506, 8.21027814], [1517224500000, 0.01611507, 0.01615831, 0.01611505, 0.01611513, 59.28224919], [1517224560000, 0.0161583, 0.0161583, 0.01611, 0.01611, 12.22008776], [1517224620000, 0.01611513, 0.01615831, 0.01611, 0.01615831, 28.75310549], [1517224680000, 0.01611, 0.01615831, 0.01611, 0.01611, 8.19226698], [1517224740000, 0.01615831, 0.01616436, 0.01615831, 0.01616436, 2.73797066], [1517224800000, 0.01616436, 0.01617797, 0.01611001, 0.01611001, 1.38765531], [1517224860000, 0.01617793, 0.0162, 0.01611, 0.0161237, 15.26821573], [1517224920000, 0.0161237, 0.0161237, 0.016118, 0.016118, 1.3860502], [1517224980000, 0.0161237, 0.0161237, 0.016118, 0.01611801, 11.18784276], [1517225040000, 0.01611801, 0.01611801, 0.016118, 0.016118, 1.12016602], [1517225100000, 0.016118, 0.016118, 0.01611, 0.01611, 15.60770517], [1517225160000, 0.016118, 0.01614261, 0.01611001, 0.01614261, 15.73161484], [1517225220000, 0.0161426, 0.0161426, 0.016118, 0.016118, 14.97281196], [1517225280000, 0.016118, 0.016118, 0.0161101, 0.016118, 6.50901056], [1517225340000, 0.016118, 0.016118, 0.01611001, 0.01611001, 10.69705979], [1517225400000, 0.016118, 0.016118, 0.01611001, 0.016118, 8.95615547], [1517225460000, 0.016118, 0.01616798, 0.01611001, 0.01611001, 17.73664379], [1517225520000, 0.01611001, 0.01615498, 0.0161, 0.0161, 16.38443685], [1517225580000, 0.01616499, 0.01616499, 0.0161, 0.0161, 19.96291552], [1517225640000, 0.0161, 0.01616495, 0.0161, 0.01613248, 7.98889956], [1517225700000, 0.01610001, 0.01616497, 0.01608577, 0.01608577, 6.56892382], [1517225760000, 0.01608577, 0.01615995, 0.0160655, 0.0160655, 51.05370497], [1517225820000, 0.0160655, 0.016068, 0.01606294, 0.016068, 54.31685394], [1517225880000, 0.01616494, 0.01616494, 0.016078, 0.01609001, 15.68572604], [1517225940000, 0.01609002, 0.01610457, 0.016086, 0.01610457, 31.94810373], [1517226000000, 0.01609002, 0.01610641, 0.01609, 0.01609001, 19.08494643], [1517226060000, 0.0161027, 0.01610641, 0.016091, 0.01610641, 14.89798575], [1517226120000, 0.01610641, 0.01610641, 0.01610641, 0.01610641, 1.444267], [1517226180000, 0.01610641, 0.01618989, 0.01610641, 0.01618989, 3.96590345], [1517226240000, 0.01616494, 0.01616494, 0.016108, 0.016108, 6.93010492], [1517226300000, 0.016108, 0.016108, 0.016108, 0.016108, 2.08596872], [1517226360000, 0.01610641, 0.016108, 0.016103, 0.01610301, 34.28507548], [1517226420000, 0.01610641, 0.01610641, 0.01610301, 0.01610301, 21.53743337], [1517226480000, 0.01610301, 0.01610302, 0.0160842, 0.01610302, 19.04874148], [1517226540000, 0.01610302, 0.01610302, 0.01610299, 0.016103, 2.86117574], [1517226600000, 0.016103, 0.0161064, 0.016103, 0.01610301, 24.53312195], [1517226660000, 0.01610302, 0.01610641, 0.01610302, 0.01610641, 20.59712625], [1517226720000, 0.01610641, 0.01610641, 0.016103, 0.0161064, 49.82151518], [1517226780000, 0.0161064, 0.01610641, 0.016103, 0.016103, 20.07612864], [1517226840000, 0.016103, 0.01610641, 0.016103, 0.01610641, 60.32989656], [1517226900000, 0.0161064, 0.01610641, 0.0161031, 0.0161031, 30.99752581], [1517226960000, 0.01610301, 0.01610639, 0.016103, 0.0161031, 6.39709299], [1517227020000, 0.016103, 0.01615049, 0.016103, 0.01615049, 8.44652742], [1517227080000, 0.01615049, 0.01615049, 0.01610301, 0.01610301, 0.75680954], [1517227140000, 0.01615046, 0.01615046, 0.016091, 0.016091, 100.84125999], [1517227200000, 0.016091, 0.01614912, 0.01608589, 0.01614912, 23.73262495], [1517227260000, 0.01614912, 0.01614912, 0.01610383, 0.01610383, 2.91105094], [1517227320000, 0.01610383, 0.01618, 0.01608589, 0.016175, 34.0003595], [1517227380000, 0.01610384, 0.01618, 0.01606973, 0.01606973, 27.77202644], [1517227440000, 0.01606972, 0.01617054, 0.016065, 0.01607001, 42.89893667], [1517227500000, 0.01616995, 0.01617998, 0.01612395, 0.01612395, 51.07654619], [1517227560000, 0.01612395, 0.01614272, 0.01612395, 0.01614272, 3.32916984], [1517227620000, 0.01612395, 0.01614272, 0.01612395, 0.01614272, 6.92514547], [1517227680000, 0.01612395, 0.01617998, 0.01612395, 0.01617998, 15.96816629], [1517227740000, 0.01617998, 0.01617998, 0.01612395, 0.01617998, 10.70049033], [1517227800000, 0.01612395, 0.01617998, 0.01612395, 0.01617996, 6.98882787], [1517227860000, 0.01617608, 0.01617998, 0.016137, 0.01617998, 23.7821941], [1517227920000, 0.01617996, 0.01617996, 0.016137, 0.016137, 6.78255894], [1517227980000, 0.01617994, 0.01617995, 0.01610002, 0.01610102, 21.2630136], [1517228040000, 0.01617495, 0.01617989, 0.01617495, 0.01617989, 11.83538774], [1517228100000, 0.01617989, 0.01617989, 0.01615, 0.01615, 2.27267551], [1517228160000, 0.01612, 0.01615, 0.01612, 0.01612, 8.63311837], [1517228220000, 0.01615, 0.01617496, 0.01615, 0.01615, 11.62446253], [1517228280000, 0.01615, 0.0162, 0.0161201, 0.0162, 23.12554642], [1517228340000, 0.01615, 0.01619999, 0.01613143, 0.01619997, 11.7816206], [1517228400000, 0.01619996, 0.01619996, 0.016073, 0.016073, 52.38831551], [1517228460000, 0.01612009, 0.01612009, 0.01605999, 0.01612009, 229.26705424], [1517228520000, 0.01619498, 0.01619498, 0.01618257, 0.01619, 1.56959699], [1517228580000, 0.01618257, 0.01618257, 0.0161202, 0.0161202, 1.15074], [1517228640000, 0.01612021, 0.01618894, 0.01612021, 0.01616069, 38.85240073], [1517228700000, 0.01616069, 0.01616069, 0.01612021, 0.01612021, 3.19985754], [1517228760000, 0.01612021, 0.01612021, 0.01612001, 0.0161201, 43.61172562], [1517228820000, 0.0161201, 0.01612021, 0.01606001, 0.01612021, 89.707398], [1517228880000, 0.0161201, 0.01612021, 0.0161201, 0.01612021, 43.55041938], [1517228940000, 0.01612015, 0.01612021, 0.01612015, 0.01612021, 12.10734785], [1517229000000, 0.0161202, 0.01612021, 0.01607101, 0.0161202, 34.87175442], [1517229060000, 0.01612019, 0.01612019, 0.01612019, 0.01612019, 0.06860196], [1517229120000, 0.01612019, 0.01612019, 0.01608708, 0.01608708, 6.77875487], [1517229180000, 0.01608709, 0.01612018, 0.01608708, 0.01612018, 41.4932877], [1517229240000, 0.01612018, 0.01612021, 0.01607601, 0.01612019, 97.57506386], [1517229300000, 0.01608165, 0.01612021, 0.01608165, 0.01612021, 44.02560416], [1517229360000, 0.01612021, 0.01612021, 0.01608167, 0.01608167, 26.9606445], [1517229420000, 0.01612021, 0.01615019, 0.01608273, 0.01615019, 2.01749721], [1517229480000, 0.01615018, 0.01619489, 0.01608273, 0.0161502, 39.51294849], [1517229540000, 0.01615019, 0.01619, 0.01614019, 0.01618997, 20.69400925], [1517229600000, 0.01615015, 0.0162, 0.01608825, 0.01618997, 48.4424183], [1517229660000, 0.01619497, 0.0162, 0.01608871, 0.01608871, 14.16401365], [1517229720000, 0.016195, 0.016195, 0.01608273, 0.01608277, 14.49241692], [1517229780000, 0.01608871, 0.01619, 0.01608277, 0.01608278, 13.4539355], [1517229840000, 0.01615115, 0.016195, 0.01608286, 0.01618998, 7.36162911], [1517229900000, 0.01618998, 0.01618998, 0.01608296, 0.01618998, 4.95583844], [1517229960000, 0.01618991, 0.01619, 0.0160828, 0.01608282, 18.99211105], [1517230020000, 0.01610895, 0.01618973, 0.01608411, 0.01611, 6.34022463], [1517230080000, 0.0161897, 0.01618973, 0.01611, 0.01618968, 6.00835168], [1517230140000, 0.01618968, 0.01618968, 0.01611005, 0.016111, 2.51198737], [1517230200000, 0.01618962, 0.016195, 0.016189, 0.016195, 38.95372136], [1517230260000, 0.016195, 0.016195, 0.01618968, 0.01618968, 2.42172324], [1517230320000, 0.016193, 0.016193, 0.01618, 0.01618, 11.93283426], [1517230380000, 0.01616996, 0.01616996, 0.01611003, 0.01616996, 14.63487603], [1517230440000, 0.01611004, 0.01617, 0.01611004, 0.01617, 6.92235689], [1517230500000, 0.01617, 0.01617, 0.01612618, 0.01612618, 15.92369022], [1517230560000, 0.01612618, 0.01617, 0.01611875, 0.01611875, 4.27285391], [1517230620000, 0.01617, 0.01617, 0.01617, 0.01617, 3.69829071], [1517230680000, 0.01612617, 0.01617, 0.01612617, 0.01617, 1.97693877], [1517230740000, 0.01617, 0.01618, 0.01617, 0.01618, 40.93842305], [1517230800000, 0.01617, 0.01617, 0.01617, 0.01617, 3.20693068], [1517230860000, 0.01618, 0.01618961, 0.01617, 0.01617, 84.32524708], [1517230920000, 0.01617, 0.01617, 0.0161188, 0.0161188, 1.52434312], [1517230980000, 0.0161188, 0.01617, 0.0161188, 0.01617, 3.05483884], [1517231040000, 0.01617991, 0.01618, 0.01612, 0.01618, 44.16664889], [1517231100000, 0.01618, 0.01618, 0.01611879, 0.01618, 9.72152625], [1517231160000, 0.01618, 0.01618, 0.01611882, 0.01618, 4.0940281], [1517231220000, 0.01618, 0.01618, 0.01618, 0.01618, 2.74171886], [1517231280000, 0.01617999, 0.01617999, 0.01611888, 0.01617999, 6.37160939], [1517231340000, 0.01617999, 0.01617999, 0.01617999, 0.01617999, 5.0256], [1517231400000, 0.01611888, 0.01617999, 0.01609911, 0.01616, 61.01604439], [1517231460000, 0.01617999, 0.01618, 0.01617, 0.01618, 8.72228062], [1517231520000, 0.01618, 0.01618, 0.01617, 0.01618, 4.50726497], [1517231580000, 0.01618, 0.01618001, 0.01618, 0.01618001, 29.32387768], [1517231640000, 0.01618, 0.01618001, 0.01617, 0.01618, 16.17896168], [1517231700000, 0.01618, 0.01618001, 0.01617999, 0.01618, 7.54044234], [1517231760000, 0.01618, 0.01618962, 0.01611528, 0.01617, 9.38400869], [1517231820000, 0.01617, 0.01617998, 0.01617, 0.01617, 2.4341025], [1517231880000, 0.01611528, 0.01617995, 0.01609911, 0.01611024, 11.65551119], [1517231940000, 0.01611044, 0.01618556, 0.01611044, 0.01618556, 12.23301541], [1517232000000, 0.01618556, 0.016189, 0.01617992, 0.01618556, 2.0034855], [1517232060000, 0.01618897, 0.01618898, 0.01618556, 0.01618556, 12.28326549], [1517232120000, 0.01618896, 0.01618898, 0.01618556, 0.016188, 12.36479791], [1517232180000, 0.01618797, 0.01618798, 0.01618556, 0.01618556, 4.79653455], [1517232240000, 0.01618795, 0.01618795, 0.01618556, 0.01618556, 4.09588686], [1517232300000, 0.01618556, 0.01618556, 0.01618556, 0.01618556, 6.86911312], [1517232360000, 0.01618556, 0.01618789, 0.01611002, 0.01612895, 1.88238695], [1517232420000, 0.01618556, 0.01618789, 0.01618556, 0.01618556, 3.07271187], [1517232480000, 0.01618556, 0.01618556, 0.01611001, 0.01611001, 2.82330779], [1517232540000, 0.01618556, 0.01618557, 0.01611002, 0.01611023, 3.72706953], [1517232600000, 0.01618556, 0.01618556, 0.01611024, 0.0161104, 10.88661068], [1517232660000, 0.01618556, 0.016189, 0.01612, 0.016189, 16.95516137], [1517232720000, 0.016189, 0.016189, 0.01612, 0.0161201, 1.4411647], [1517232780000, 0.01617163, 0.01617163, 0.01617111, 0.01617111, 3.89035209], [1517232840000, 0.01617111, 0.01617111, 0.01611016, 0.01617111, 5.14232313], [1517232900000, 0.01617111, 0.01617111, 0.0161711, 0.01617111, 3.79078384], [1517232960000, 0.01617111, 0.01617111, 0.01612001, 0.01612001, 5.15351188], [1517233020000, 0.01612001, 0.016121, 0.01612, 0.01612001, 40.35018554], [1517233080000, 0.0161711, 0.0161711, 0.01612002, 0.0161711, 2.24478021], [1517233140000, 0.0161711, 0.0161711, 0.01612, 0.01612, 2.54877908], [1517233200000, 0.01612002, 0.0161711, 0.01612002, 0.0161711, 7.17891444], [1517233260000, 0.01612001, 0.01612001, 0.0161, 0.0161, 20.4795], [1517233320000, 0.0161711, 0.0161711, 0.0160991, 0.0160991, 20.09339599], [1517233380000, 0.01609911, 0.0161711, 0.01609064, 0.0161711, 41.15929033], [1517233440000, 0.01617109, 0.0161711, 0.01610101, 0.01610101, 5.96715673], [1517233500000, 0.016101, 0.01615, 0.01610099, 0.01615, 7.39960167], [1517233560000, 0.01610099, 0.016193, 0.01610099, 0.016193, 103.54627574], [1517233620000, 0.01610106, 0.016193, 0.01610105, 0.01619297, 6.60042051], [1517233680000, 0.01610122, 0.016193, 0.01610122, 0.016192, 8.69658118], [1517233740000, 0.016192, 0.01619295, 0.016192, 0.016192, 13.82859921], [1517233800000, 0.01619293, 0.01619293, 0.016192, 0.0161929, 5.12574362], [1517233860000, 0.016192, 0.01619289, 0.016192, 0.01619289, 0.29806373], [1517233920000, 0.01610122, 0.01619289, 0.01610122, 0.01619289, 2.79662401], [1517233980000, 0.01619289, 0.0161929, 0.01619289, 0.01619289, 5.02136371], [1517234040000, 0.01619289, 0.01619289, 0.01619289, 0.01619289, 6.78046475], [1517234100000, 0.01619289, 0.0161929, 0.01610121, 0.01611233, 9.93801113], [1517234160000, 0.01612844, 0.01619292, 0.01612047, 0.01619289, 5.52938045], [1517234220000, 0.01619289, 0.01619292, 0.01619289, 0.0161929, 12.65263887], [1517234280000, 0.01619289, 0.01619291, 0.01610124, 0.01619291, 38.30679251], [1517234340000, 0.01612002, 0.01619291, 0.01612002, 0.01619291, 21.73894761], [1517234400000, 0.01619291, 0.016193, 0.01614002, 0.01614002, 43.49567079], [1517234460000, 0.016193, 0.016193, 0.01614001, 0.016193, 2.06258326], [1517234520000, 0.016193, 0.016193, 0.01615002, 0.01615002, 63.09960562], [1517234580000, 0.016193, 0.016193, 0.0161401, 0.0161401, 3.64854626], [1517234640000, 0.0161927, 0.0161927, 0.01614503, 0.0161927, 15.07390458], [1517234700000, 0.01616, 0.0161927, 0.01614503, 0.0161927, 3.12640324], [1517234760000, 0.01614504, 0.01614505, 0.01614503, 0.01614503, 32.44824868], [1517234820000, 0.01614503, 0.016193, 0.01614503, 0.016193, 8.84950194], [1517234880000, 0.01616507, 0.01616507, 0.01616507, 0.01616507, 1.45565846], [1517234940000, 0.016193, 0.016193, 0.01614507, 0.016193, 8.36811878], [1517235000000, 0.01619297, 0.01619297, 0.01614506, 0.01618998, 2.27883194], [1517235060000, 0.01618998, 0.01618998, 0.01614507, 0.01618998, 9.25726323], [1517235120000, 0.0161451, 0.0161451, 0.0161451, 0.0161451, 0.8484405], [1517235180000, 0.01614511, 0.01618998, 0.01614511, 0.01618998, 1.17948416], [1517235240000, 0.01618998, 0.01618998, 0.01614524, 0.01614526, 6.54073366], [1517235300000, 0.01618998, 0.01618998, 0.01614526, 0.01618998, 5.27944613], [1517235360000, 0.01618998, 0.01618998, 0.01614533, 0.01618998, 6.25359518], [1517235420000, 0.0161455, 0.01618998, 0.0161455, 0.0161455, 2.47119176], [1517235480000, 0.01614553, 0.01618997, 0.01614553, 0.01618997, 24.59879739], [1517235540000, 0.01614555, 0.01617555, 0.01614555, 0.01617555, 2.13153279], [1517235600000, 0.01617554, 0.01617555, 0.01614556, 0.01615, 30.4486322], [1517235660000, 0.01614556, 0.01618997, 0.01614556, 0.016155, 0.63770935], [1517235720000, 0.016155, 0.01618997, 0.016155, 0.01618997, 3.19327136], [1517235780000, 0.01618997, 0.01618998, 0.016159, 0.01618998, 4.18501025], [1517235840000, 0.01618998, 0.0162, 0.016155, 0.0162, 15.94365816], [1517235900000, 0.0162, 0.01621, 0.016155, 0.01621, 11.77176595], [1517235960000, 0.01621, 0.01621, 0.016155, 0.016155, 2.15382271], [1517236020000, 0.01615, 0.01621, 0.01614555, 0.01621, 4.77844743], [1517236080000, 0.01621, 0.016249, 0.0162, 0.016249, 29.91138644], [1517236140000, 0.01620001, 0.01620001, 0.01620001, 0.01620001, 5.61041728], [1517236200000, 0.01620001, 0.0162489, 0.0162, 0.01620001, 2.91808398], [1517236260000, 0.01620001, 0.01624998, 0.01620001, 0.01624998, 0.54669924], [1517236320000, 0.01624998, 0.01624999, 0.01624998, 0.01624999, 9.21756569], [1517236380000, 0.01624998, 0.01624999, 0.01624998, 0.01624999, 19.88003762], [1517236440000, 0.01624999, 0.01624999, 0.01624998, 0.01624998, 28.93525815], [1517236500000, 0.01624998, 0.01624999, 0.01624998, 0.01624999, 14.8425995], [1517236560000, 0.01624998, 0.01624999, 0.01624998, 0.01624999, 47.27369411], [1517236620000, 0.01624999, 0.01625, 0.01624998, 0.01625, 65.1319165], [1517236680000, 0.01625, 0.01625, 0.01624998, 0.01624998, 6.97565526], [1517236740000, 0.01624998, 0.01625, 0.01624998, 0.01624998, 1.39977666], [1517236800000, 0.01625, 0.01625346, 0.01624998, 0.01624998, 85.96309242], [1517236860000, 0.01625346, 0.01626, 0.01620007, 0.01626, 70.55850469], [1517236920000, 0.01624998, 0.01626, 0.01624998, 0.01624998, 5.54962472], [1517236980000, 0.01625, 0.01625, 0.01624998, 0.01624998, 5.85706803], [1517237040000, 0.01624998, 0.0162599, 0.01624998, 0.01624998, 11.07701774], [1517237100000, 0.01624998, 0.016299, 0.01624998, 0.016299, 23.11395927], [1517237160000, 0.01624998, 0.016295, 0.01624998, 0.01624998, 10.79277464], [1517237220000, 0.016295, 0.016295, 0.01624998, 0.016295, 8.03022142], [1517237280000, 0.01624998, 0.01624998, 0.01624998, 0.01624998, 1.63776212], [1517237340000, 0.01624998, 0.01624998, 0.01620007, 0.01624998, 31.06683467], [1517237400000, 0.01624998, 0.01624998, 0.01620007, 0.01624997, 33.8120383], [1517237460000, 0.01620007, 0.01624998, 0.01620007, 0.01620007, 6.95162001], [1517237520000, 0.01620007, 0.01620007, 0.01620007, 0.01620007, 1.4368543], [1517237580000, 0.01620007, 0.01620007, 0.01620007, 0.01620007, 7.75781084], [1517237640000, 0.01620007, 0.01620007, 0.01620007, 0.01620007, 18.6569867], [1517237700000, 0.01620007, 0.01620007, 0.01620001, 0.01620007, 6.86703699], [1517237760000, 0.01620007, 0.01623, 0.01619, 0.0162, 10.53251314], [1517237820000, 0.0162, 0.0162, 0.01619, 0.0162, 10.1945978], [1517237880000, 0.0162, 0.0162, 0.01619, 0.0162, 66.11075013], [1517237940000, 0.0162, 0.0162, 0.01619001, 0.01619002, 25.84795461], [1517238000000, 0.01619002, 0.0162, 0.01619001, 0.0162, 5.90904746], [1517238060000, 0.0162, 0.0162, 0.01619002, 0.01619002, 5.99883879], [1517238120000, 0.01619001, 0.0162, 0.01619001, 0.0162, 11.12988927], [1517238180000, 0.01619991, 0.0162, 0.01619991, 0.01619991, 2.86103947], [1517238240000, 0.01619991, 0.0162, 0.01619001, 0.0162, 52.3358283], [1517238300000, 0.0162, 0.0162, 0.01619, 0.01619, 34.18006832], [1517238360000, 0.01619001, 0.0162, 0.01619001, 0.0162, 8.77479189], [1517238420000, 0.0162, 0.0162, 0.01619, 0.01619, 28.25328309], [1517238480000, 0.0162, 0.0162, 0.01619, 0.01619, 63.36295291], [1517238540000, 0.01619001, 0.01619001, 0.016167, 0.01619, 38.33499372], [1517238600000, 0.01619, 0.01619, 0.01616207, 0.016167, 44.7223626], [1517238660000, 0.016167, 0.01619, 0.01616207, 0.01619, 63.74188552], [1517238720000, 0.01619, 0.0162, 0.01616207, 0.01619, 30.23406038], [1517238780000, 0.01619, 0.0162, 0.01616207, 0.01616209, 7.00649739], [1517238840000, 0.01616207, 0.0162, 0.01616207, 0.01616209, 1.23994048], [1517238900000, 0.01616209, 0.0162, 0.01616207, 0.0162, 10.47170655], [1517238960000, 0.01619999, 0.01619999, 0.01616207, 0.01619999, 4.13439544], [1517239020000, 0.0162, 0.0162, 0.01619999, 0.0162, 2.85008513], [1517239080000, 0.0162, 0.0162, 0.01619999, 0.01619999, 14.30419492], [1517239140000, 0.01619999, 0.0162, 0.01619999, 0.0162, 2.60807491], [1517239200000, 0.0162, 0.0162, 0.01619999, 0.01619999, 18.52300154], [1517239260000, 0.0162, 0.0162, 0.01619999, 0.01619999, 5.23709926], [1517239320000, 0.01619998, 0.01619998, 0.01616701, 0.01616702, 8.27668694], [1517239380000, 0.01616702, 0.01619998, 0.01616701, 0.01619998, 10.41768237], [1517239440000, 0.01616228, 0.01619998, 0.01616228, 0.01619998, 5.07921372], [1517239500000, 0.01619998, 0.0162, 0.01616228, 0.0162, 10.82998524], [1517239560000, 0.0162, 0.0162, 0.01616228, 0.0162, 1.86121672], [1517239620000, 0.0162, 0.0162, 0.01616228, 0.0162, 21.29760303], [1517239680000, 0.0162, 0.0162, 0.01616228, 0.0162, 10.89792062], [1517239740000, 0.01616298, 0.0162, 0.01616298, 0.01616298, 13.29718157], [1517239800000, 0.01616298, 0.01620005, 0.01616228, 0.01620005, 68.94486373], [1517239860000, 0.01620005, 0.01621627, 0.0162, 0.0162, 24.39415865], [1517239920000, 0.0162, 0.01620005, 0.0162, 0.0162, 107.51884439], [1517239980000, 0.0162, 0.0162, 0.01619968, 0.0162, 6.29381001], [1517240040000, 0.01616545, 0.0162, 0.01616545, 0.01616545, 15.60931104], [1517240100000, 0.01616545, 0.01616545, 0.01616228, 0.01616545, 18.14642585], [1517240160000, 0.01616545, 0.01616545, 0.01616228, 0.01616228, 27.56304922], [1517240220000, 0.01616228, 0.016199, 0.01616228, 0.016199, 16.48213446], [1517240280000, 0.016199, 0.016199, 0.01616208, 0.016199, 9.50804289], [1517240340000, 0.016199, 0.016199, 0.01616208, 0.01616208, 1.27657645], [1517240400000, 0.016199, 0.016199, 0.01616208, 0.01616217, 26.08306184], [1517240460000, 0.01616217, 0.01617833, 0.01616214, 0.01616217, 20.01327429], [1517240520000, 0.01616217, 0.0162, 0.01616207, 0.016199, 97.91993328], [1517240580000, 0.01616207, 0.0162, 0.01616207, 0.0162, 13.59642556], [1517240640000, 0.0162, 0.0162, 0.016163, 0.01619901, 11.42750197], [1517240700000, 0.01619901, 0.0162, 0.016163, 0.0162, 32.44315836], [1517240760000, 0.016163, 0.0162, 0.016163, 0.0162, 4.64437595], [1517240820000, 0.0162, 0.0162, 0.016163, 0.016163, 36.33435887], [1517240880000, 0.016163, 0.016163, 0.016163, 0.016163, 7.15307264], [1517240940000, 0.0162, 0.0162, 0.01615501, 0.01615501, 66.89327384], [1517241000000, 0.01616207, 0.01616207, 0.016151, 0.016151, 18.32822859], [1517241060000, 0.01615501, 0.01615898, 0.01615501, 0.01615898, 4.29379929], [1517241120000, 0.01615898, 0.01616207, 0.01610121, 0.0161014, 73.77064102], [1517241180000, 0.01615898, 0.01615898, 0.0161017, 0.01615898, 10.58278133], [1517241240000, 0.01612, 0.01616207, 0.01610191, 0.01616207, 11.51002766], [1517241300000, 0.01616207, 0.0162, 0.01616207, 0.0162, 8.32049331], [1517241360000, 0.0162, 0.0162, 0.01615898, 0.01615898, 12.99615785], [1517241420000, 0.0162, 0.01620005, 0.01615898, 0.01620005, 6.08623783], [1517241480000, 0.01620005, 0.01620005, 0.0161213, 0.01617001, 21.236682], [1517241540000, 0.0162, 0.0162, 0.01617001, 0.01617001, 1.59469435], [1517241600000, 0.0162, 0.0162, 0.01617003, 0.0162, 62.42308243], [1517241660000, 0.0162, 0.01620005, 0.01617001, 0.01617004, 5.53074925], [1517241720000, 0.01620004, 0.01620005, 0.01618, 0.0161801, 4.80780366], [1517241780000, 0.01620005, 0.01622999, 0.0161801, 0.0161801, 12.64134047], [1517241840000, 0.0161801, 0.01624299, 0.01617, 0.0161801, 10.50031977], [1517241900000, 0.0161801, 0.01624298, 0.016111, 0.0162, 42.00755021], [1517241960000, 0.01617981, 0.01617981, 0.01617981, 0.01617981, 0.06814048], [1517242020000, 0.01617981, 0.0162, 0.01617981, 0.0162, 6.73781796], [1517242080000, 0.016116, 0.01619661, 0.016116, 0.01611603, 12.19871189], [1517242140000, 0.01611602, 0.0162, 0.01611602, 0.016121, 18.06276223], [1517242200000, 0.01619968, 0.01619968, 0.016122, 0.01619968, 41.02264837], [1517242260000, 0.01612101, 0.0162, 0.01611601, 0.01619968, 37.81866124], [1517242320000, 0.0162, 0.016242, 0.01619968, 0.0162, 10.10300037], [1517242380000, 0.01622, 0.01622, 0.016121, 0.016121, 3.85577295], [1517242440000, 0.01619969, 0.01619969, 0.01619969, 0.01619969, 0.04174483], [1517242500000, 0.016121, 0.0161989, 0.01611601, 0.0161969, 12.13833762], [1517242560000, 0.0161969, 0.0161969, 0.01612, 0.01612, 4.07993654], [1517242620000, 0.01612, 0.01612, 0.01612, 0.01612, 10.8860738], [1517242680000, 0.01619658, 0.01619658, 0.01613, 0.01619658, 4.94544228], [1517242740000, 0.01619658, 0.0161969, 0.01619658, 0.0161969, 33.05176183], [1517242800000, 0.01619691, 0.0161988, 0.0161969, 0.0161988, 32.99802721], [1517242860000, 0.01619691, 0.0161988, 0.0161969, 0.0161969, 23.81872681], [1517242920000, 0.0161969, 0.0161969, 0.01612, 0.01612, 38.34843949], [1517242980000, 0.01612, 0.01619684, 0.01612, 0.0161209, 28.167659], [1517243040000, 0.0161209, 0.01616699, 0.01612, 0.01616699, 8.40687114], [1517243100000, 0.01616699, 0.01619684, 0.01616699, 0.01619684, 7.65147267], [1517243160000, 0.01619684, 0.0161969, 0.01612006, 0.01619684, 16.13910387], [1517243220000, 0.01614019, 0.0161969, 0.01614019, 0.01616699, 4.17563639], [1517243280000, 0.01616699, 0.01616699, 0.01612006, 0.01616699, 11.63143195], [1517243340000, 0.01616699, 0.01616699, 0.01616699, 0.01616699, 27.86703108], [1517243400000, 0.016122, 0.01619684, 0.016122, 0.01619684, 5.95229336], [1517243460000, 0.01619684, 0.01619684, 0.016122, 0.01612201, 6.93341638], [1517243520000, 0.01619683, 0.01619683, 0.01613, 0.01613, 3.05457064], [1517243640000, 0.01613, 0.01613, 0.01613, 0.01613, 4.61166946], [1517243700000, 0.01613011, 0.01619682, 0.0161301, 0.0161968, 19.51415719], [1517243760000, 0.0161968, 0.0161968, 0.0161301, 0.01619679, 8.82585151], [1517243820000, 0.01614, 0.0161968, 0.01614, 0.0161968, 12.69634135], [1517243880000, 0.01614, 0.01619679, 0.01614, 0.01614, 5.49389049], [1517243940000, 0.01614, 0.01619678, 0.01614, 0.016145, 1.00217052], [1517244000000, 0.016145, 0.0161968, 0.016145, 0.01614501, 9.57986661], [1517244060000, 0.0161967, 0.01619679, 0.01614501, 0.01619679, 20.24319086], [1517244120000, 0.01619679, 0.0161968, 0.01619679, 0.01619679, 27.18811001], [1517244180000, 0.01619679, 0.0161968, 0.01619679, 0.01619679, 24.67518865], [1517244240000, 0.01619679, 0.0161968, 0.01619679, 0.01619679, 26.89568573], [1517244300000, 0.01619679, 0.01619679, 0.01619679, 0.01619679, 23.29448629], [1517244360000, 0.0161968, 0.0161968, 0.01619679, 0.01619679, 27.78402778], [1517244420000, 0.01619679, 0.0161968, 0.01619679, 0.01619679, 8.42704594], [1517244480000, 0.0161968, 0.0161968, 0.01619679, 0.01619679, 12.00899765], [1517244540000, 0.0161968, 0.0161969, 0.01619679, 0.01619679, 44.04698007], [1517244600000, 0.01619679, 0.01619679, 0.01614502, 0.01614502, 3.7497761], [1517244660000, 0.01615, 0.01621978, 0.01615, 0.01621978, 27.2706142], [1517244720000, 0.01622009, 0.01625348, 0.01615, 0.01615, 17.35133345], [1517244780000, 0.01615066, 0.01615066, 0.01615066, 0.01615066, 4.04399604], [1517244840000, 0.01615066, 0.01615066, 0.01615066, 0.01615066, 4.44400981], [1517244900000, 0.01615066, 0.01623799, 0.01615, 0.01615, 32.44146553], [1517244960000, 0.01623293, 0.01623293, 0.01615, 0.01615, 19.56840979], [1517245020000, 0.0161502, 0.01622784, 0.0161502, 0.0161502, 6.58254513], [1517245080000, 0.0161502, 0.0161502, 0.0161502, 0.0161502, 1.8275349], [1517245140000, 0.0162279, 0.01622791, 0.0161502, 0.01622785, 6.46224119], [1517245200000, 0.0161502, 0.01622296, 0.0161502, 0.0161502, 2.19795418], [1517245260000, 0.0161502, 0.01622286, 0.0161502, 0.0161502, 23.74755228], [1517245320000, 0.01622288, 0.01622288, 0.0161502, 0.01621798, 0.97377097], [1517245380000, 0.01622289, 0.01622289, 0.0161502, 0.0161502, 4.07006648], [1517245440000, 0.01615021, 0.01622255, 0.01615021, 0.01622244, 130.86498691], [1517245500000, 0.01622244, 0.01622245, 0.01622244, 0.01622244, 85.63808512], [1517245560000, 0.01622244, 0.01622244, 0.0162224, 0.0162224, 21.56694495], [1517245620000, 0.0162224, 0.0162224, 0.01615021, 0.01615021, 12.32397285], [1517245680000, 0.01616, 0.01616, 0.01616, 0.01616, 12.07880528], [1517245740000, 0.01616, 0.01616, 0.01615501, 0.01615551, 8.96005154], [1517245800000, 0.01616, 0.01616, 0.01615501, 0.01615501, 15.73801832], [1517245860000, 0.01616, 0.01616, 0.01615501, 0.01616, 10.51698176], [1517245920000, 0.01616, 0.01616, 0.01615021, 0.01616, 54.47934442], [1517245980000, 0.01616, 0.01616, 0.016155, 0.016155, 0.41105608], [1517246040000, 0.01616, 0.01619968, 0.01616, 0.01616, 17.36296934], [1517246100000, 0.01616, 0.01616, 0.01615021, 0.01616, 18.96440212], [1517246160000, 0.01615021, 0.01616, 0.01615021, 0.01616, 5.88138197], [1517246220000, 0.01616, 0.01616, 0.01615021, 0.01615021, 14.46026655], [1517246280000, 0.01616, 0.01616, 0.01615, 0.01615, 10.41089686], [1517246340000, 0.01615021, 0.01616001, 0.01615021, 0.01616001, 4.20074309], [1517246400000, 0.01616002, 0.01620456, 0.01616001, 0.016165, 18.90129242], [1517246460000, 0.016165, 0.0161655, 0.016165, 0.0161655, 47.14195201], [1517246520000, 0.0162042, 0.01620621, 0.01616833, 0.01616833, 32.3129759], [1517246580000, 0.01616833, 0.01616833, 0.0161655, 0.0161655, 27.20058288], [1517246640000, 0.0161655, 0.0161655, 0.016165, 0.016165, 10.10091664], [1517246700000, 0.0161655, 0.01616833, 0.016165, 0.016165, 19.2906658], [1517246760000, 0.01616833, 0.0162, 0.016165, 0.01616833, 8.92817731], [1517246820000, 0.01616833, 0.01622237, 0.01616833, 0.01622207, 61.21484509], [1517246880000, 0.016166, 0.01622041, 0.016165, 0.01622041, 23.7103455], [1517246940000, 0.016165, 0.01621909, 0.016165, 0.016165, 11.38538736], [1517247000000, 0.016165, 0.016165, 0.016165, 0.016165, 7.5672902], [1517247060000, 0.016165, 0.0162, 0.01616, 0.0162, 50.61212292], [1517247120000, 0.016217, 0.016217, 0.01616, 0.01616, 3.91938936], [1517247180000, 0.01619999, 0.01619999, 0.01616, 0.01616, 29.8137499], [1517247240000, 0.01616, 0.01619982, 0.01615021, 0.01616, 40.08727605], [1517247300000, 0.01619972, 0.01619972, 0.01615021, 0.01615021, 13.06333897], [1517247360000, 0.01615021, 0.01615021, 0.01615021, 0.01615021, 3.86145958], [1517247420000, 0.01615021, 0.01618991, 0.01615021, 0.01615021, 10.11301082], [1517247480000, 0.01615021, 0.01615021, 0.01612201, 0.01614, 47.82595587], [1517247540000, 0.016139, 0.016139, 0.01612001, 0.01612001, 15.57271819], [1517247600000, 0.01612001, 0.01612001, 0.01612, 0.01612, 4.57766618], [1517247660000, 0.01612, 0.01612001, 0.01611102, 0.01612001, 23.71233007], [1517247720000, 0.01612001, 0.01612001, 0.01611102, 0.01611102, 17.15441471], [1517247780000, 0.01612, 0.01612, 0.01611102, 0.01612, 8.09787613], [1517247840000, 0.01612, 0.01612, 0.01612, 0.01612, 3.93967368], [1517247900000, 0.01611102, 0.01612, 0.01611102, 0.01612, 16.42318697], [1517247960000, 0.016115, 0.01612, 0.01611103, 0.01611103, 6.07592172], [1517248020000, 0.016118, 0.016118, 0.01611102, 0.01611102, 12.63755712], [1517248080000, 0.01611104, 0.01611104, 0.01611102, 0.01611102, 15.36302567], [1517248140000, 0.01611102, 0.01611104, 0.0161109, 0.0161109, 17.27570288], [1517248200000, 0.01611102, 0.01611104, 0.0161109, 0.01611102, 35.03898099], [1517248260000, 0.0161109, 0.01611104, 0.01610197, 0.01611101, 5.45932792], [1517248320000, 0.01611101, 0.01611104, 0.01610197, 0.01610197, 9.20003717], [1517248380000, 0.01611104, 0.01611104, 0.01610198, 0.01611104, 1.73820729], [1517248440000, 0.01610198, 0.01611104, 0.01610198, 0.01611104, 5.17537529], [1517248500000, 0.01611104, 0.01611104, 0.01610598, 0.01611104, 36.93221446], [1517248560000, 0.01610598, 0.01611104, 0.01610197, 0.01611104, 18.92901654], [1517248620000, 0.01611104, 0.01611104, 0.01610197, 0.01611104, 3.72595635], [1517248680000, 0.01611104, 0.016118, 0.01611104, 0.01611104, 8.04131647], [1517248740000, 0.016119, 0.016119, 0.016119, 0.016119, 2.96160129], [1517248800000, 0.01612, 0.01612, 0.016101, 0.01610197, 30.26789517], [1517248860000, 0.0161019, 0.01610197, 0.0161, 0.0161, 17.26053307], [1517248920000, 0.01609999, 0.0161, 0.01609999, 0.0161, 1.10319367], [1517248980000, 0.0161, 0.01611104, 0.0161, 0.0161, 7.5460085], [1517249040000, 0.01609999, 0.0161, 0.01609, 0.01609, 5.99880495], [1517249100000, 0.01609, 0.0161, 0.01609, 0.0161, 6.36287059], [1517249160000, 0.01609, 0.01611104, 0.01609, 0.0161, 11.78667731], [1517249220000, 0.0161, 0.01611104, 0.0161, 0.01611104, 8.99324356], [1517249280000, 0.0161, 0.01611104, 0.0161, 0.0161, 6.3460349], [1517249340000, 0.0161, 0.01611104, 0.0161, 0.0161, 8.96425057], [1517249400000, 0.0161, 0.01611104, 0.0161, 0.0161, 13.97119138], [1517249460000, 0.0161, 0.01612, 0.0161, 0.01611104, 26.27619709], [1517249520000, 0.01612, 0.01612, 0.01611104, 0.01612, 20.69143589], [1517249580000, 0.01611104, 0.01612, 0.0161, 0.01612, 13.96943775], [1517249640000, 0.01612001, 0.01612201, 0.01612, 0.01612201, 17.42348756], [1517249700000, 0.01612201, 0.01612201, 0.0161, 0.0161, 7.17459562], [1517249760000, 0.01612, 0.01612201, 0.01605999, 0.01605999, 305.62702263], [1517249820000, 0.01605999, 0.01612201, 0.01605999, 0.01612201, 2.8984438], [1517249880000, 0.01606, 0.01606, 0.01605999, 0.01605999, 2.20186398], [1517249940000, 0.01606, 0.01612199, 0.01605999, 0.01612199, 0.47307323], [1517250000000, 0.01606001, 0.01612201, 0.01605999, 0.01612201, 26.8818261], [1517250060000, 0.01612201, 0.01615878, 0.01612201, 0.01615878, 20.41660807], [1517250120000, 0.01613201, 0.01613201, 0.01612201, 0.01612201, 2.31477094], [1517250180000, 0.01612201, 0.01613201, 0.01605999, 0.01613201, 29.64127509], [1517250240000, 0.01605999, 0.01615878, 0.01605999, 0.01615878, 28.79161646], [1517250300000, 0.01613199, 0.01615878, 0.01606, 0.01606, 23.59242568], [1517250360000, 0.01609313, 0.01615878, 0.01609313, 0.01615878, 9.33038125], [1517250420000, 0.01609313, 0.0161, 0.01609313, 0.0161, 3.46910642], [1517250480000, 0.0161, 0.0161, 0.0161, 0.0161, 7.16784149], [1517250540000, 0.0161, 0.0161, 0.01609313, 0.0161, 16.2771921], [1517250600000, 0.0161, 0.0161, 0.0161, 0.0161, 8.79011759], [1517250660000, 0.0161, 0.0161, 0.01609315, 0.0161, 14.88762438], [1517250720000, 0.0161, 0.01614894, 0.0161, 0.01614893, 9.26459322], [1517250780000, 0.0161, 0.01614893, 0.0161, 0.0161, 32.72900954], [1517250840000, 0.01614893, 0.01614893, 0.01614, 0.01614, 15.32930593], [1517250900000, 0.01610002, 0.01614894, 0.0161, 0.01614894, 8.55954383], [1517250960000, 0.0161005, 0.01614894, 0.01610001, 0.01614893, 3.06328963], [1517251020000, 0.01614894, 0.01614894, 0.01610002, 0.01614894, 4.47998631], [1517251080000, 0.01610002, 0.01610002, 0.01610002, 0.01610002, 1.82484938], [1517251140000, 0.01610003, 0.01614894, 0.01610002, 0.01614398, 16.82851901], [1517251200000, 0.01613699, 0.01613699, 0.01610004, 0.01610004, 11.0439713], [1517251260000, 0.01610003, 0.01612898, 0.01610003, 0.01610003, 17.06567188], [1517251320000, 0.01612897, 0.01612897, 0.01609315, 0.01609315, 21.74654236], [1517251380000, 0.01609315, 0.01612898, 0.01606, 0.01609313, 15.32190797], [1517251440000, 0.0161, 0.0161, 0.01605999, 0.01608468, 11.33217361], [1517251500000, 0.0161, 0.01610002, 0.0161, 0.01610002, 11.02221397], [1517251560000, 0.01610002, 0.01612888, 0.01610002, 0.01610002, 17.25964005], [1517251620000, 0.01610002, 0.01611899, 0.0161, 0.01610005, 42.25928402], [1517251680000, 0.0161, 0.0161, 0.01605999, 0.01605999, 8.22559575], [1517251740000, 0.01605999, 0.01609106, 0.01605722, 0.01605722, 10.15782192], [1517251800000, 0.01605716, 0.01605999, 0.01604828, 0.01605716, 11.87701863], [1517251860000, 0.01605716, 0.01605716, 0.0160345, 0.01603783, 38.37184035], [1517251920000, 0.01603783, 0.01605716, 0.0160378, 0.0160378, 14.18967933], [1517251980000, 0.0160378, 0.0160378, 0.01603368, 0.01603368, 4.25323619], [1517252040000, 0.01603368, 0.01603368, 0.01602666, 0.01602666, 6.65021035], [1517252100000, 0.01602667, 0.01603097, 0.01600101, 0.01600101, 50.89456527], [1517252160000, 0.01600101, 0.016005, 0.01600101, 0.016005, 15.77130564], [1517252220000, 0.01600101, 0.016005, 0.01600101, 0.016005, 5.17954913], [1517252280000, 0.016005, 0.016005, 0.01600102, 0.016005, 41.05640995], [1517252340000, 0.016005, 0.016005, 0.01600103, 0.01600103, 4.34313917], [1517252400000, 0.01600103, 0.016005, 0.01600103, 0.016005, 12.46933197], [1517252460000, 0.016005, 0.016005, 0.016005, 0.016005, 21.33561664], [1517252520000, 0.016005, 0.01602666, 0.01600107, 0.01602666, 11.06844155], [1517252580000, 0.01602666, 0.01602666, 0.01600109, 0.016005, 17.10805298], [1517252640000, 0.016005, 0.016005, 0.016005, 0.016005, 2.24019168], [1517252700000, 0.016005, 0.01602666, 0.01600107, 0.01602666, 19.4451238], [1517252760000, 0.01602666, 0.01609106, 0.01600501, 0.01603097, 18.94067938], [1517252820000, 0.01609106, 0.01609106, 0.01602666, 0.016046, 1.8611285], [1517252880000, 0.01609, 0.01609, 0.016046, 0.016046, 3.9667408], [1517252940000, 0.016009, 0.01608, 0.016009, 0.0160375, 6.13748676], [1517253000000, 0.01607999, 0.01607999, 0.01600901, 0.01600901, 8.15463599], [1517253060000, 0.0160799, 0.0160799, 0.01600901, 0.01607986, 11.04369236], [1517253120000, 0.0160799, 0.0160799, 0.01600901, 0.01607982, 18.26932595], [1517253180000, 0.01607982, 0.01607982, 0.01600903, 0.01607982, 4.96559558], [1517253240000, 0.01607982, 0.01607982, 0.01600907, 0.01600907, 9.6575216], [1517253300000, 0.01600909, 0.01607982, 0.01600908, 0.01607982, 0.92071962], [1517253360000, 0.01602908, 0.01607972, 0.01602908, 0.01607972, 6.81821905], [1517253420000, 0.01607972, 0.01607972, 0.0160797, 0.0160797, 2.47657195], [1517253480000, 0.01605, 0.01607972, 0.01605, 0.01605, 49.07807772], [1517253540000, 0.01607966, 0.01607972, 0.01605001, 0.01607972, 33.78604932], [1517253600000, 0.01607972, 0.01607972, 0.01607972, 0.01607972, 6.19196554], [1517253660000, 0.016051, 0.01607982, 0.016051, 0.016051, 8.62378074], [1517253720000, 0.016055, 0.01607989, 0.01605101, 0.016055, 71.66949206], [1517253780000, 0.016052, 0.01607999, 0.01605101, 0.016055, 14.13815921], [1517253840000, 0.016055, 0.0160799, 0.01604092, 0.016055, 10.64771825], [1517253900000, 0.0160799, 0.01611089, 0.0160291, 0.01611089, 25.39907226], [1517253960000, 0.01611083, 0.01611084, 0.0160291, 0.01602914, 21.21138389], [1517254020000, 0.01602914, 0.01602914, 0.0160291, 0.0160291, 2.52023235], [1517254080000, 0.01602911, 0.01602911, 0.0160291, 0.0160291, 7.39029442], [1517254140000, 0.01602911, 0.01602911, 0.01602909, 0.01602911, 14.41392997], [1517254200000, 0.01602911, 0.01602911, 0.016009, 0.016009, 16.40112263], [1517254260000, 0.01600901, 0.01602911, 0.01600099, 0.01602911, 116.96700759], [1517254320000, 0.01602911, 0.01602911, 0.01602911, 0.01602911, 0.06886805], [1517254380000, 0.01602911, 0.01602911, 0.01600898, 0.01602911, 11.10306691], [1517254440000, 0.0160285, 0.01602911, 0.0160285, 0.01602851, 7.39775337], [1517254500000, 0.01602911, 0.0161109, 0.01602801, 0.01602911, 37.11731754], [1517254560000, 0.01602911, 0.0161, 0.01602805, 0.01602805, 36.32307492], [1517254620000, 0.01602911, 0.0161109, 0.01602911, 0.01610897, 18.73027595], [1517254680000, 0.01602911, 0.01611089, 0.01602911, 0.01611077, 8.00835118], [1517254740000, 0.01611076, 0.0161109, 0.01605441, 0.01611076, 18.80374844], [1517254800000, 0.01611079, 0.01611079, 0.01610897, 0.01611076, 31.15167665], [1517254920000, 0.016109, 0.016109, 0.0160295, 0.01603024, 11.25012722], [1517254980000, 0.01603024, 0.01603024, 0.0160295, 0.01603024, 9.56711385], [1517255040000, 0.01603024, 0.01603024, 0.01603024, 0.01603024, 1.4043642], [1517255100000, 0.01603024, 0.01603024, 0.01603024, 0.01603024, 0.14452055], [1517255160000, 0.01608, 0.01608, 0.01608, 0.01608, 2.47075044], [1517255220000, 0.01608, 0.01608, 0.01608, 0.01608, 22.04280082], [1517255280000, 0.01608, 0.01608, 0.016031, 0.016031, 2.95575222], [1517255340000, 0.01608999, 0.01608999, 0.01603101, 0.01608999, 5.01917103], [1517255400000, 0.01603201, 0.01603201, 0.01603102, 0.01603103, 1.02094478], [1517255460000, 0.01608999, 0.01608999, 0.01603104, 0.01608999, 13.44603675], [1517255520000, 0.01603204, 0.01608999, 0.01603204, 0.01608999, 4.45519445], [1517255580000, 0.01608999, 0.01608999, 0.01608999, 0.01608999, 1.05526624], [1517255640000, 0.01608999, 0.01610899, 0.01603206, 0.01603206, 5.19190723], [1517255700000, 0.01603206, 0.01610899, 0.01603105, 0.01603105, 188.99275634], [1517255760000, 0.01610899, 0.01610899, 0.01603105, 0.0160311, 9.54999058], [1517255880000, 0.01610899, 0.01610899, 0.01603115, 0.01610899, 3.20658586], [1517255940000, 0.01610899, 0.01611044, 0.01610899, 0.01610899, 3.10698982], [1517256000000, 0.016109, 0.01611076, 0.01610899, 0.01611076, 3.40506396], [1517256060000, 0.01611076, 0.01611076, 0.0161, 0.01611076, 8.21835313], [1517256120000, 0.01611076, 0.01611076, 0.01611044, 0.01611076, 3.29057998], [1517256180000, 0.01611076, 0.0161109, 0.01611044, 0.01611044, 10.91835055], [1517256240000, 0.01611044, 0.0161109, 0.01611044, 0.0161109, 13.13852708], [1517256300000, 0.01611044, 0.0161109, 0.0161, 0.0161, 22.71873533], [1517256360000, 0.0161, 0.0161109, 0.01603105, 0.01603115, 2.42178588], [1517256420000, 0.01603115, 0.0161109, 0.01603105, 0.0161109, 21.68196221], [1517256480000, 0.0161109, 0.0161109, 0.01603105, 0.01603105, 15.35142116], [1517256540000, 0.01610999, 0.01610999, 0.01603106, 0.0161, 5.83853148], [1517256600000, 0.0161, 0.0161, 0.01603108, 0.01603109, 15.70763543], [1517256660000, 0.01603109, 0.01603109, 0.01603106, 0.01603108, 4.56006126], [1517256720000, 0.01603108, 0.01603109, 0.01603108, 0.01603109, 12.36513666], [1517256780000, 0.01608999, 0.01608999, 0.01605109, 0.0160511, 11.92685366], [1517256840000, 0.01605109, 0.01605109, 0.01603109, 0.01603109, 9.65150804], [1517256900000, 0.01603109, 0.01605108, 0.01603109, 0.01605107, 16.57542019], [1517256960000, 0.01605107, 0.01605108, 0.01603111, 0.01603113, 13.14609239], [1517257020000, 0.01603113, 0.01604107, 0.01603113, 0.01603114, 14.59748074], [1517257080000, 0.01603113, 0.01603114, 0.01603113, 0.01603114, 27.47710151], [1517257140000, 0.01603114, 0.01608995, 0.01603113, 0.01603113, 21.61021597], [1517257200000, 0.01603113, 0.01603113, 0.01603113, 0.01603113, 16.09184971], [1517257260000, 0.01608499, 0.01608985, 0.01603105, 0.01603105, 167.84928867], [1517257320000, 0.01603113, 0.01603113, 0.01603106, 0.01603106, 17.49103059], [1517257380000, 0.01603105, 0.01603106, 0.01603105, 0.01603106, 25.8936729], [1517257440000, 0.01608996, 0.01609, 0.01603105, 0.01603105, 79.11743399], [1517257500000, 0.01603105, 0.01603106, 0.01603105, 0.01603106, 46.57851846], [1517257560000, 0.01603106, 0.01603107, 0.01603106, 0.01603107, 31.88956112], [1517257620000, 0.01603106, 0.01603106, 0.01603106, 0.01603106, 7.19789253], [1517257680000, 0.01603106, 0.01603106, 0.01603105, 0.01603105, 30.59248543], [1517257740000, 0.01603105, 0.01603106, 0.01603105, 0.01603105, 13.64207603], [1517257800000, 0.01603105, 0.01603106, 0.01603105, 0.01603106, 36.46592269], [1517257860000, 0.01603106, 0.01603107, 0.01603106, 0.01603107, 4.03096095], [1517257920000, 0.01608987, 0.01608987, 0.0160319, 0.0160319, 9.02711397], [1517257980000, 0.0160319, 0.01608984, 0.01603106, 0.01608984, 5.65119167], [1517258040000, 0.0160319, 0.0160319, 0.0160319, 0.0160319, 18.99894], [1517258100000, 0.01603191, 0.01608984, 0.01603189, 0.01608984, 15.67265936], [1517258160000, 0.01608984, 0.01608984, 0.01603189, 0.0160319, 13.57282279], [1517258220000, 0.0160319, 0.0160319, 0.01603105, 0.01603105, 38.49886751], [1517258280000, 0.01603106, 0.0160898, 0.01603106, 0.0160898, 4.47977985], [1517258340000, 0.01608983, 0.01608983, 0.01604, 0.01604, 3.12318336], [1517258400000, 0.0160898, 0.0160898, 0.0160898, 0.0160898, 0.88000843], [1517258460000, 0.01604001, 0.0160898, 0.01604001, 0.01608979, 4.95128359], [1517258520000, 0.01608978, 0.01608979, 0.01603105, 0.01603105, 4.39229276], [1517258580000, 0.01603106, 0.01608976, 0.01603106, 0.01603106, 11.41150514], [1517258640000, 0.01608975, 0.01608976, 0.01603106, 0.01608976, 9.61945107], [1517258700000, 0.01608976, 0.01608984, 0.01603111, 0.01603111, 61.43426034], [1517258760000, 0.01608983, 0.01608983, 0.01608976, 0.01608976, 23.1827638], [1517258820000, 0.0160898, 0.0160898, 0.0160898, 0.0160898, 14.39927399], [1517258880000, 0.01608981, 0.01608984, 0.0160898, 0.01608983, 42.7966832], [1517258940000, 0.01608984, 0.01609, 0.01608983, 0.01608983, 54.14106177], [1517259000000, 0.01608983, 0.01608983, 0.01608981, 0.01608981, 4.13325741], [1517259060000, 0.01608981, 0.01609, 0.01608981, 0.01608983, 42.04611336], [1517259120000, 0.01608983, 0.01609, 0.01608981, 0.01609, 23.63783517], [1517259180000, 0.016095, 0.016095, 0.01609, 0.01609, 9.24193257], [1517259240000, 0.016095, 0.016095, 0.01608981, 0.01608981, 13.57910663], [1517259300000, 0.01609, 0.016094, 0.01608981, 0.01608981, 10.93976302], [1517259360000, 0.016094, 0.01609981, 0.01608981, 0.01609981, 9.99211955], [1517259420000, 0.01609981, 0.0161, 0.01608981, 0.01608981, 66.50049527], [1517259480000, 0.01608981, 0.0161, 0.01608981, 0.01608981, 37.90439144], [1517259540000, 0.01608981, 0.0161, 0.01608981, 0.01609995, 65.51770896], [1517259600000, 0.01609995, 0.0161, 0.01609995, 0.01609995, 25.73888053], [1517259660000, 0.01609995, 0.01609999, 0.01608981, 0.01608981, 42.37167187], [1517259720000, 0.016095, 0.016095, 0.01608981, 0.01608981, 15.44055475], [1517259780000, 0.016095, 0.0161111, 0.01608981, 0.01608981, 208.77552991], [1517259840000, 0.01608981, 0.01610597, 0.01603354, 0.016089, 77.65249769], [1517259900000, 0.016089, 0.01608901, 0.01601, 0.01608901, 18.0951895], [1517259960000, 0.01608901, 0.01608901, 0.01601201, 0.01601201, 19.56891425], [1517260020000, 0.01601201, 0.01601201, 0.016012, 0.016012, 9.40741829], [1517260080000, 0.01601201, 0.0161109, 0.016012, 0.01611089, 36.61831907], [1517260140000, 0.01601203, 0.0161111, 0.01601202, 0.01610895, 22.05772559], [1517260200000, 0.01610894, 0.01610894, 0.0161089, 0.0161089, 2.03173845], [1517260260000, 0.0160223, 0.01610888, 0.0160223, 0.01610888, 1.38160762], [1517260320000, 0.0161, 0.0161, 0.0160223, 0.0161, 1.33937927], [1517260380000, 0.0161, 0.0161, 0.0160223, 0.0161, 10.48418352], [1517260440000, 0.0161, 0.01610887, 0.0161, 0.0161, 18.85719547], [1517260500000, 0.0161, 0.01610886, 0.0161, 0.01610886, 21.56757167], [1517260560000, 0.01610886, 0.01610887, 0.0161, 0.0161, 109.07542355], [1517260620000, 0.01610887, 0.01610887, 0.01610886, 0.01610886, 5.83179006], [1517260680000, 0.01610886, 0.01610886, 0.01601, 0.01601, 18.49181527], [1517260740000, 0.01602229, 0.0161, 0.01601, 0.01602229, 40.72369273], [1517260800000, 0.0161, 0.0161, 0.01602229, 0.01602229, 7.02285047], [1517260860000, 0.01602229, 0.01602229, 0.01600886, 0.01601024, 16.7844798], [1517260920000, 0.01601024, 0.01609986, 0.01600886, 0.01609986, 5.82949663], [1517260980000, 0.0160799, 0.0160999, 0.0160799, 0.0160999, 7.42406654], [1517261040000, 0.01609985, 0.0161, 0.0160799, 0.0160799, 24.3726666], [1517261100000, 0.01609985, 0.01609985, 0.0160799, 0.01609985, 5.65845039], [1517261160000, 0.0160799, 0.0160799, 0.01600886, 0.01601306, 14.91568979], [1517261220000, 0.01600886, 0.01600888, 0.01600886, 0.01600888, 2.71837044], [1517261280000, 0.016069, 0.01607, 0.016069, 0.01607, 9.96088143], [1517261340000, 0.01607, 0.01607, 0.01606999, 0.01606999, 7.4346882], [1517261400000, 0.01600886, 0.01606999, 0.01600886, 0.01606999, 28.27093242], [1517261460000, 0.01606999, 0.016101, 0.01606999, 0.016101, 131.7755662], [1517261520000, 0.016101, 0.016101, 0.01600885, 0.01610097, 10.33371966], [1517261580000, 0.01600102, 0.0161111, 0.016001, 0.0160086, 96.96049524], [1517261640000, 0.01611099, 0.0161111, 0.01602229, 0.016111, 11.93708632], [1517261700000, 0.0160223, 0.016111, 0.01600867, 0.016111, 12.24523424], [1517261760000, 0.0161, 0.0161109, 0.0161, 0.0161109, 4.69174902], [1517261820000, 0.01611, 0.01611, 0.01602463, 0.01602463, 7.52885723], [1517261880000, 0.01611, 0.0161111, 0.01602464, 0.01611078, 42.20926359], [1517261940000, 0.01611078, 0.0161111, 0.01611078, 0.01611078, 6.42795581], [1517262000000, 0.01611078, 0.01611078, 0.01603054, 0.01603054, 11.68557632], [1517262060000, 0.01603054, 0.01611, 0.01603054, 0.01611, 8.23757965], [1517262120000, 0.01603054, 0.01611, 0.01603054, 0.01611, 14.50648996], [1517262180000, 0.01603054, 0.0161111, 0.01603054, 0.01603059, 8.23388836], [1517262240000, 0.01604055, 0.01604055, 0.01603061, 0.01603061, 3.55258651], [1517262300000, 0.01610995, 0.01611, 0.01604205, 0.01611, 6.93945348], [1517262360000, 0.01603217, 0.01603219, 0.01603217, 0.01603218, 4.48619497], [1517262420000, 0.01611, 0.01611078, 0.01603217, 0.01611078, 22.35519854], [1517262480000, 0.01605007, 0.01611078, 0.01605004, 0.01605004, 27.76332686], [1517262540000, 0.01605009, 0.01610228, 0.01605009, 0.01610228, 4.24307469], [1517262600000, 0.0161, 0.01610228, 0.0161, 0.01610228, 5.07324038], [1517262660000, 0.01610228, 0.0161111, 0.01606075, 0.0161, 65.90176156], [1517262720000, 0.0161, 0.0161111, 0.0161, 0.0161111, 13.80664969], [1517262780000, 0.0161, 0.01611, 0.01606214, 0.01606214, 4.16379122], [1517262840000, 0.01611, 0.01612898, 0.01606118, 0.0161, 82.96564341], [1517262900000, 0.01606143, 0.0161, 0.01606143, 0.0161, 5.8489564], [1517262960000, 0.0161, 0.0161, 0.0160617, 0.0161, 5.47969338], [1517263020000, 0.0161, 0.0161, 0.01606122, 0.01608, 40.93443049], [1517263080000, 0.01608, 0.0161, 0.01605, 0.0161, 39.47098121], [1517263140000, 0.0161, 0.01611, 0.01600102, 0.01603, 331.24415133], [1517263200000, 0.01601203, 0.01608, 0.0160021, 0.01608, 16.25609901], [1517263260000, 0.01608, 0.01608, 0.0160136, 0.01608, 6.36331566], [1517263320000, 0.01608, 0.01608, 0.01602009, 0.01608, 20.45503632], [1517263380000, 0.01608, 0.01608, 0.01608, 0.01608, 2.06328895], [1517263440000, 0.01608, 0.01608, 0.01608, 0.01608, 16.1376398], [1517263500000, 0.01608, 0.01608, 0.01603, 0.01603, 7.15037139], [1517263560000, 0.01603, 0.01611, 0.01603, 0.01603002, 72.86647023], [1517263620000, 0.01611, 0.01611, 0.01603002, 0.01611, 3.57293789], [1517263680000, 0.01611, 0.01611, 0.01611, 0.01611, 4.42835168], [1517263740000, 0.01611, 0.01611, 0.01611, 0.01611, 8.37439885], [1517263800000, 0.01611, 0.0161109, 0.01611, 0.0161109, 13.67622555], [1517263860000, 0.01612898, 0.016195, 0.01604, 0.01604, 62.517254], [1517263920000, 0.01615, 0.01615, 0.0161109, 0.01615, 1.92058211], [1517263980000, 0.016155, 0.016155, 0.01606167, 0.0161109, 6.76687425], [1517264040000, 0.0161109, 0.0161109, 0.01606168, 0.01606168, 5.31917146], [1517264100000, 0.0160618, 0.0161109, 0.01606169, 0.01611089, 4.02501876], [1517264160000, 0.0160617, 0.01611089, 0.01606169, 0.01606169, 7.26802243], [1517264220000, 0.01606169, 0.0161109, 0.01606169, 0.01606169, 1.75083349], [1517264280000, 0.01611086, 0.01611086, 0.01611086, 0.01611086, 0.52591173], [1517264340000, 0.01606172, 0.01611082, 0.01606172, 0.01606172, 5.66332714], [1517264400000, 0.0161107, 0.0161107, 0.01606173, 0.01606173, 19.35517332], [1517264460000, 0.01610995, 0.01610995, 0.01606175, 0.01606177, 2.21298271], [1517264520000, 0.01610995, 0.01610996, 0.01607, 0.01610995, 36.14098497], [1517264580000, 0.01610995, 0.01610995, 0.01610995, 0.01610995, 13.76831013], [1517264640000, 0.0161107, 0.0161109, 0.01610995, 0.0161109, 9.2302889], [1517264700000, 0.01611095, 0.01618499, 0.0161109, 0.0161109, 3.97081008], [1517264760000, 0.0161109, 0.0161129, 0.0161109, 0.0161109, 7.66284382], [1517264820000, 0.0161109, 0.0161129, 0.01611, 0.0161129, 5.94110874], [1517264880000, 0.01611, 0.01617995, 0.01611, 0.01617995, 13.05245925], [1517264940000, 0.01611, 0.01617981, 0.01611, 0.01611, 10.05586017], [1517265000000, 0.01611, 0.01618499, 0.01611, 0.01618499, 60.86149094], [1517265060000, 0.01618399, 0.01618399, 0.01611, 0.01611, 12.03491601], [1517265120000, 0.01611, 0.01611, 0.01607, 0.01607773, 56.60335204], [1517265180000, 0.01607002, 0.01608004, 0.01607002, 0.01608004, 13.00215126], [1517265240000, 0.01608005, 0.01619797, 0.01607023, 0.01607048, 54.20919984], [1517265300000, 0.0161899, 0.016195, 0.0161898, 0.016195, 18.0935026], [1517265360000, 0.016195, 0.016195, 0.01609084, 0.01609084, 1.68542326], [1517265420000, 0.01619496, 0.01619496, 0.0161191, 0.0161191, 6.27613907], [1517265480000, 0.0161191, 0.0161191, 0.016101, 0.0161191, 7.67169747], [1517265540000, 0.0161191, 0.01617477, 0.01610106, 0.01617477, 16.46839501], [1517265600000, 0.01617477, 0.01619496, 0.01617477, 0.01617477, 7.43631085], [1517265660000, 0.01617477, 0.01617477, 0.0161191, 0.01617477, 12.14630315], [1517265720000, 0.01617477, 0.01617477, 0.01610129, 0.01617477, 7.14805651], [1517265780000, 0.01617477, 0.01619496, 0.01617477, 0.01619496, 57.49562346], [1517265840000, 0.016195, 0.016195, 0.0161926, 0.0161926, 107.07287363], [1517265900000, 0.01619797, 0.0161985, 0.01619797, 0.01619797, 10.44959176], [1517265960000, 0.0161985, 0.0162, 0.0161985, 0.0162, 22.53170366], [1517266020000, 0.01620249, 0.01620249, 0.0161985, 0.0162, 97.00834509], [1517266080000, 0.0162, 0.0162, 0.0161985, 0.0161985, 50.58228805], [1517266140000, 0.0162, 0.0162, 0.0161985, 0.0162, 4.28895496], [1517266200000, 0.0162, 0.0162, 0.0161161, 0.0161161, 7.99697182], [1517266260000, 0.0162, 0.0162, 0.016119, 0.016119, 12.66405125], [1517266320000, 0.01619999, 0.01619999, 0.01611902, 0.01619868, 1.81729496], [1517266380000, 0.016199, 0.016199, 0.016161, 0.01619868, 9.04438707], [1517266440000, 0.016171, 0.01619999, 0.016171, 0.01619868, 10.64815336], [1517266500000, 0.01619999, 0.0162, 0.016161, 0.016161, 115.22483498], [1517266560000, 0.01619868, 0.01619868, 0.01619868, 0.01619868, 2.0013959], [1517266620000, 0.01619868, 0.0162, 0.01619868, 0.0162, 7.44662713], [1517266680000, 0.016165, 0.01619868, 0.016161, 0.016161, 8.74913063], [1517266740000, 0.016161, 0.01619496, 0.016161, 0.01619496, 39.98501205], [1517266800000, 0.01619496, 0.0162, 0.0161109, 0.016131, 14.16972759], [1517266860000, 0.0162, 0.0162, 0.016111, 0.01612, 21.32678969], [1517266920000, 0.01612, 0.01618297, 0.016111, 0.01612, 35.46743733], [1517266980000, 0.016111, 0.01612, 0.016111, 0.01612, 19.50195398], [1517267040000, 0.01611999, 0.01611999, 0.016111, 0.016111, 24.9357737], [1517267100000, 0.016111, 0.01611999, 0.016111, 0.01611999, 17.54772108], [1517267160000, 0.01611999, 0.01618699, 0.016111, 0.016111, 118.43169431], [1517267220000, 0.01618097, 0.01618097, 0.016111, 0.01617985, 48.00215369], [1517267280000, 0.016111, 0.016111, 0.016111, 0.016111, 145.751675], [1517267340000, 0.01616996, 0.01616996, 0.016111, 0.016111, 13.93070128], [1517267400000, 0.016111, 0.01616964, 0.016111, 0.01616861, 41.37434099], [1517267460000, 0.01616861, 0.01616893, 0.016111, 0.016111, 45.93807817], [1517267520000, 0.01614996, 0.01614996, 0.016111, 0.01612, 10.49028039], [1517267580000, 0.01611919, 0.01612, 0.016111, 0.016111, 33.95924949], [1517267640000, 0.01612, 0.01612, 0.016111, 0.016111, 51.03159884], [1517267700000, 0.016111, 0.01612, 0.016111, 0.016111, 8.695835], [1517267760000, 0.016111, 0.016111, 0.016111, 0.016111, 33.77711592], [1517267820000, 0.016111, 0.01612, 0.016111, 0.016111, 7.92030932], [1517267880000, 0.016111, 0.01612, 0.016111, 0.016111, 17.72542998], [1517267940000, 0.01612, 0.01612, 0.016111, 0.016111, 5.98753416], [1517268000000, 0.016111, 0.01612, 0.016111, 0.01612, 38.99890962], [1517268060000, 0.01612, 0.01612, 0.01611101, 0.01612, 27.83896703], [1517268120000, 0.01612, 0.01612, 0.01611102, 0.01612, 7.15203679], [1517268180000, 0.01612, 0.01612, 0.01612, 0.01612, 18.66619148], [1517268240000, 0.01612, 0.01612, 0.01611102, 0.01612, 15.61687686], [1517268300000, 0.01612, 0.01612, 0.01611102, 0.01611102, 21.66184651], [1517268360000, 0.01612, 0.01612, 0.01611102, 0.01612, 3.56526131], [1517268420000, 0.01612, 0.01612, 0.016115, 0.016115, 4.37183807], [1517268480000, 0.016115, 0.01612, 0.01611102, 0.01612, 2.45996918], [1517268540000, 0.01611103, 0.01612, 0.01611103, 0.01612, 9.82758926], [1517268600000, 0.016115, 0.016115, 0.0161115, 0.0161115, 1.81185847], [1517268660000, 0.0161115, 0.01612, 0.0161115, 0.01612, 23.14441586], [1517268720000, 0.016115, 0.01612, 0.01611103, 0.016115, 5.94608871], [1517268780000, 0.016115, 0.016161, 0.016115, 0.016161, 4.06371199], [1517268840000, 0.016161, 0.016198, 0.016161, 0.016198, 5.77645905], [1517268900000, 0.016161, 0.01619297, 0.01611102, 0.01611197, 40.41765525], [1517268960000, 0.01611197, 0.0162, 0.01611197, 0.01619998, 26.37278857], [1517269020000, 0.01611102, 0.01619493, 0.01611102, 0.01619493, 2.08486046], [1517269080000, 0.01611102, 0.01611102, 0.01611102, 0.01611102, 2.02201738], [1517269140000, 0.0161947, 0.0161947, 0.0161946, 0.0161946, 26.01552237], [1517269200000, 0.01619403, 0.01619403, 0.016134, 0.01618738, 60.92217754], [1517269260000, 0.016134, 0.01618727, 0.016134, 0.016134, 2.32815687], [1517269320000, 0.0161112, 0.016134, 0.016107, 0.01611102, 288.38291033], [1517269380000, 0.016134, 0.016134, 0.016107, 0.016107, 23.67864383], [1517269440000, 0.016107, 0.016134, 0.016107, 0.016134, 63.14163423], [1517269500000, 0.01610701, 0.016134, 0.01610701, 0.016134, 6.26293849], [1517269560000, 0.016134, 0.016134, 0.01610701, 0.016134, 1.29123132], [1517269620000, 0.01613399, 0.01613399, 0.016107, 0.016107, 12.42670819], [1517269680000, 0.01613399, 0.016134, 0.01613399, 0.01613399, 20.49097584], [1517269740000, 0.016134, 0.016134, 0.01611799, 0.01611799, 4.35649883], [1517269800000, 0.01611799, 0.01611799, 0.01611799, 0.01611799, 1.05703628], [1517269860000, 0.01611799, 0.01611799, 0.016107, 0.01611799, 70.68083819], [1517269920000, 0.01610701, 0.01610701, 0.0161, 0.0161, 36.06368761], [1517269980000, 0.01611799, 0.0162, 0.01611799, 0.01611799, 28.05371802], [1517270040000, 0.01619997, 0.0162, 0.01611799, 0.0162, 27.07281292], [1517270100000, 0.01611799, 0.01611799, 0.01610008, 0.01611799, 2.78182779], [1517270160000, 0.01611799, 0.01618968, 0.01611799, 0.01618968, 6.04370083], [1517270220000, 0.01611799, 0.01619968, 0.01610009, 0.01610009, 16.47277706], [1517270280000, 0.01610009, 0.01610009, 0.01610008, 0.01610009, 137.84245316], [1517270340000, 0.0161001, 0.0161001, 0.01610009, 0.01610009, 0.85872769], [1517270400000, 0.0161005, 0.01619968, 0.01610012, 0.01619967, 10.78319804], [1517270460000, 0.01610014, 0.01610016, 0.01610014, 0.01610015, 66.04493267], [1517270520000, 0.01610015, 0.01610017, 0.01610015, 0.01610016, 17.16123962], [1517270580000, 0.01610016, 0.01610016, 0.01610014, 0.01610016, 9.90586331], [1517270640000, 0.01610016, 0.01610016, 0.01610014, 0.01610014, 7.79906232], [1517270700000, 0.01610014, 0.01610016, 0.01610014, 0.01610014, 15.84952036], [1517270760000, 0.01618204, 0.01618335, 0.01610015, 0.01610015, 3.05005009], [1517270820000, 0.01617657, 0.01617657, 0.01610016, 0.01610016, 1.12362745], [1517270880000, 0.01610016, 0.01618733, 0.01610016, 0.0161873, 11.79246364], [1517270940000, 0.01618702, 0.01619929, 0.01610016, 0.01610019, 47.918051], [1517271000000, 0.0161002, 0.0161002, 0.01610015, 0.01610019, 67.54882744], [1517271060000, 0.0161002, 0.01613968, 0.01610015, 0.01610015, 3.16823044], [1517271120000, 0.01614, 0.01614, 0.01614, 0.01614, 1.06027814], [1517271180000, 0.01614, 0.01619902, 0.01610015, 0.01614, 42.50297796], [1517271240000, 0.01610016, 0.01619499, 0.01610015, 0.01610015, 25.09157774], [1517271300000, 0.01615968, 0.01615968, 0.01610015, 0.01615962, 5.69486907], [1517271360000, 0.01610015, 0.01610015, 0.01610009, 0.01610009, 10.53898677], [1517271420000, 0.01610009, 0.01610015, 0.0161, 0.01610015, 90.97396534], [1517271480000, 0.01610008, 0.01612827, 0.0161, 0.01612827, 14.52791507], [1517271540000, 0.01610015, 0.01611827, 0.01610001, 0.01611827, 14.1187828], [1517271600000, 0.01611827, 0.01611827, 0.01610017, 0.01610017, 1.1242784], [1517271660000, 0.01611827, 0.01611827, 0.01610025, 0.01610025, 1.674879], [1517271720000, 0.01611827, 0.01611827, 0.01611827, 0.01611827, 11.99943073], [1517271780000, 0.01610026, 0.01612827, 0.01607, 0.01611827, 633.34416484], [1517271840000, 0.016127, 0.01619933, 0.01607, 0.01607, 55.9842099], [1517271900000, 0.01611827, 0.01611827, 0.01607, 0.01611827, 55.14993447], [1517271960000, 0.01611827, 0.01611827, 0.01611827, 0.01611827, 1.03082252], [1517272020000, 0.01607013, 0.01619999, 0.01607013, 0.0161, 73.291165], [1517272080000, 0.01607013, 0.0161, 0.01607013, 0.01607013, 4.99013157], [1517272140000, 0.01607013, 0.0161, 0.01607001, 0.01607001, 24.55478921], [1517272200000, 0.0161, 0.0161, 0.0161, 0.0161, 1.86335403], [1517272260000, 0.0161, 0.0161, 0.01608001, 0.01608001, 1.570338], [1517272320000, 0.01608001, 0.0161, 0.01608001, 0.01609999, 8.96387842], [1517272380000, 0.01609899, 0.016124, 0.01609899, 0.016124, 18.79376199], [1517272440000, 0.016099, 0.016124, 0.016099, 0.016124, 1.03651161], [1517272500000, 0.0161245, 0.01619932, 0.0161245, 0.01618995, 4.39048678], [1517272560000, 0.01618975, 0.01618975, 0.0161245, 0.0161245, 11.68549107], [1517272620000, 0.01617468, 0.01617468, 0.0161245, 0.0161245, 12.81910835], [1517272680000, 0.0161699, 0.0161699, 0.0161, 0.0161, 35.28398556], [1517272740000, 0.01616499, 0.01616499, 0.01615999, 0.01615999, 1.54173563], [1517272800000, 0.01615998, 0.01616, 0.016155, 0.01616, 9.54589668], [1517272860000, 0.01612425, 0.01612425, 0.0161, 0.0161, 0.88313284], [1517272920000, 0.0161, 0.01616499, 0.0161, 0.01616499, 12.2159396], [1517272980000, 0.0161, 0.01616488, 0.0161, 0.01615, 12.67006946], [1517273040000, 0.01615, 0.01616499, 0.0161, 0.01616499, 9.09329629], [1517273100000, 0.01616499, 0.01616499, 0.01615, 0.016155, 20.13625719], [1517273160000, 0.01616498, 0.01616498, 0.01607, 0.016125, 53.78693205], [1517273220000, 0.016125, 0.016125, 0.016125, 0.016125, 0.84547603], [1517273280000, 0.016125, 0.016125, 0.01612499, 0.016125, 8.71807768], [1517273340000, 0.016125, 0.01616499, 0.0161, 0.01616499, 9.75439695], [1517273400000, 0.01616498, 0.01616498, 0.01616496, 0.01616498, 4.78377932], [1517273460000, 0.01616498, 0.01616499, 0.01610001, 0.01616495, 15.44150642], [1517273520000, 0.01616495, 0.01616495, 0.01610002, 0.01616495, 20.45117305], [1517273580000, 0.01613246, 0.01616475, 0.01610001, 0.01610001, 1.5748424], [1517273640000, 0.01610001, 0.01616, 0.0161, 0.01610001, 24.47243549], [1517273700000, 0.01610001, 0.01610001, 0.0161, 0.01610001, 10.30486024], [1517273760000, 0.01610001, 0.01610001, 0.0161, 0.01610001, 12.81226379], [1517273820000, 0.01610001, 0.01610001, 0.01607, 0.01610001, 12.6468274], [1517273880000, 0.0160702, 0.01610001, 0.01607, 0.01610001, 5.07545212], [1517273940000, 0.01607001, 0.01610001, 0.01607001, 0.01610001, 14.7160891], [1517274000000, 0.01610001, 0.01616001, 0.01607, 0.01613038, 46.10706447], [1517274060000, 0.01616001, 0.016161, 0.01607, 0.01616001, 22.60778911], [1517274120000, 0.01616001, 0.01616001, 0.01607, 0.01607, 9.4375946], [1517274180000, 0.01607915, 0.01615996, 0.01607001, 0.01615995, 70.05101468], [1517274240000, 0.01615995, 0.01615995, 0.01607, 0.01607, 162.36923392], [1517274300000, 0.01606266, 0.01615994, 0.01601001, 0.01601803, 104.83494272], [1517274360000, 0.01615207, 0.01615207, 0.01602201, 0.0161109, 23.99114927], [1517274420000, 0.0161109, 0.0161109, 0.01604553, 0.01604553, 1.02109839], [1517274540000, 0.01609478, 0.0161109, 0.01609478, 0.0161109, 7.91671182], [1517274600000, 0.0161109, 0.01615, 0.0161109, 0.01615, 50.12161649], [1517274660000, 0.0161109, 0.01615, 0.0161109, 0.01615, 14.45206833], [1517274720000, 0.01615, 0.016165, 0.0161109, 0.0161109, 31.60244984], [1517274780000, 0.016165, 0.016165, 0.0161109, 0.0161109, 38.51923952], [1517274840000, 0.0161109, 0.016165, 0.0161109, 0.0161109, 19.02439289], [1517274900000, 0.0161109, 0.016165, 0.0161109, 0.0161109, 12.05553639], [1517274960000, 0.016165, 0.0161662, 0.0161109, 0.0161109, 4.23643494], [1517275020000, 0.0161109, 0.01616623, 0.0161109, 0.0161109, 6.15212188], [1517275080000, 0.0161109, 0.0161109, 0.01604721, 0.01604721, 7.40464152], [1517275140000, 0.016051, 0.0161109, 0.016051, 0.0161109, 1.95237618], [1517275200000, 0.0161109, 0.01616623, 0.0161109, 0.0161109, 15.64363851], [1517275260000, 0.0161109, 0.0161909, 0.0161109, 0.0161909, 51.78469848], [1517275320000, 0.01616623, 0.0161969, 0.0161109, 0.0161109, 36.08835841], [1517275380000, 0.0161109, 0.01619668, 0.0161109, 0.0161109, 2.53707839], [1517275440000, 0.01619602, 0.01619602, 0.01605145, 0.01605145, 15.7096496], [1517275500000, 0.01618938, 0.01618938, 0.01605142, 0.01618894, 8.61793247], [1517275560000, 0.01618886, 0.01618886, 0.01605142, 0.01618865, 8.4993896], [1517275620000, 0.01614831, 0.01618487, 0.01614831, 0.01614832, 32.67106329], [1517275680000, 0.01618485, 0.01618485, 0.01614831, 0.01618421, 31.82397781], [1517275740000, 0.01614831, 0.01618421, 0.01614831, 0.01614831, 8.63618192], [1517275800000, 0.01614831, 0.01614831, 0.01607042, 0.01614831, 5.46699641], [1517275860000, 0.01614831, 0.01614831, 0.01607224, 0.01614831, 15.51138117], [1517275920000, 0.01614831, 0.01618418, 0.01614831, 0.01618418, 21.8904273], [1517275980000, 0.01618418, 0.01618422, 0.01618418, 0.01618422, 80.75259038], [1517276040000, 0.01618418, 0.0162, 0.01618418, 0.0162, 74.02416973], [1517276100000, 0.0162, 0.0162, 0.01618418, 0.01618418, 68.05383914], [1517276160000, 0.01618418, 0.01619395, 0.01608, 0.01619392, 32.02558302], [1517276220000, 0.01618927, 0.01618929, 0.01607211, 0.01607211, 3.09219838], [1517276280000, 0.01617497, 0.01619389, 0.01607, 0.01607, 26.77148524], [1517276340000, 0.01608748, 0.0161, 0.01608748, 0.0161, 0.84349685], [1517276400000, 0.0161, 0.01619386, 0.01608014, 0.01608014, 16.00734446], [1517276460000, 0.01611289, 0.01619386, 0.01607021, 0.01607023, 24.77096551], [1517276520000, 0.01609001, 0.016187, 0.01609, 0.016187, 15.28242359], [1517276580000, 0.016187, 0.01619385, 0.016104, 0.01619382, 6.45538904], [1517276640000, 0.01611285, 0.01611285, 0.01607021, 0.01609002, 9.9783597], [1517276700000, 0.01617551, 0.0161938, 0.01609001, 0.01619379, 1.49661713], [1517276760000, 0.016092, 0.01619374, 0.016092, 0.01619374, 5.08713134], [1517276820000, 0.01610941, 0.01619386, 0.01609101, 0.01619386, 10.31419875], [1517276880000, 0.01619386, 0.01619386, 0.01619322, 0.01619386, 5.35410371], [1517276940000, 0.016137, 0.016137, 0.016137, 0.016137, 0.2388496], [1517277000000, 0.016137, 0.01619385, 0.016137, 0.01619385, 4.0518294], [1517277060000, 0.01619384, 0.0162, 0.01613705, 0.0162, 199.19901312], [1517277120000, 0.01613706, 0.0162, 0.01613706, 0.0162, 2.23236129], [1517277180000, 0.01613708, 0.0162, 0.01613708, 0.0162, 17.80931507], [1517277240000, 0.0161371, 0.0161371, 0.0161371, 0.0161371, 0.03902246], [1517277300000, 0.0161371, 0.0162, 0.01613708, 0.0162, 15.525053], [1517277360000, 0.0162, 0.0162, 0.01619999, 0.01619999, 3.92137976], [1517277420000, 0.01619999, 0.0162, 0.01613709, 0.01613901, 51.86686949], [1517277480000, 0.01613902, 0.01619999, 0.01613901, 0.01616951, 3.95100725], [1517277540000, 0.01616951, 0.01616951, 0.01614008, 0.01614008, 21.42825598], [1517277600000, 0.016142, 0.01615, 0.016142, 0.01615, 2.22596187], [1517277660000, 0.01615, 0.01619966, 0.01615, 0.01615, 4.34182875], [1517277720000, 0.01615, 0.01615, 0.01615, 0.01615, 9.65895772], [1517277780000, 0.01615005, 0.01619856, 0.01615005, 0.01619856, 3.46998797], [1517277840000, 0.01619856, 0.01619887, 0.01619856, 0.01619857, 41.48915148], [1517277900000, 0.01619857, 0.01619887, 0.01619857, 0.01619857, 10.01236107], [1517277960000, 0.01619857, 0.01619887, 0.01619857, 0.01619857, 46.95228353], [1517278020000, 0.01619857, 0.01619999, 0.01619857, 0.01619999, 22.17930075], [1517278080000, 0.01619999, 0.01619999, 0.01619887, 0.01619999, 13.16042242], [1517278140000, 0.01619999, 0.01619999, 0.01619857, 0.01619857, 9.77439721], [1517278200000, 0.01619857, 0.01619999, 0.01615005, 0.01615005, 46.58031103], [1517278260000, 0.01615005, 0.01615005, 0.01615, 0.01615005, 17.67567652], [1517278320000, 0.01615005, 0.01625298, 0.01615005, 0.0162, 101.96053106], [1517278380000, 0.0162, 0.0162, 0.01615, 0.01615, 3.58478921], [1517278440000, 0.01624856, 0.01624856, 0.01615, 0.01615, 41.76612301], [1517278500000, 0.0161669, 0.01624792, 0.01615, 0.01624792, 7.97563252], [1517278560000, 0.01615001, 0.01624744, 0.01615, 0.01615001, 13.36209416], [1517278620000, 0.01615001, 0.01617774, 0.01615, 0.01617774, 12.09550644], [1517278680000, 0.01615001, 0.01617774, 0.01615001, 0.01615001, 3.93033462], [1517278740000, 0.01615006, 0.01617773, 0.01615, 0.01617773, 24.54987355], [1517278800000, 0.01617773, 0.01624617, 0.01617773, 0.01624603, 25.80104798], [1517278860000, 0.01617773, 0.01624586, 0.01615, 0.01624539, 37.45866954], [1517278920000, 0.01624524, 0.01624524, 0.01615, 0.01615001, 310.2418972], [1517278980000, 0.01615001, 0.01615001, 0.01615001, 0.01615001, 0.39], [1517279040000, 0.01615001, 0.01622982, 0.0160702, 0.0160702, 117.16178191], [1517279100000, 0.01607, 0.01618938, 0.01607, 0.01618938, 64.39032285], [1517279160000, 0.016155, 0.01618938, 0.01615001, 0.01618938, 15.08858565], [1517279220000, 0.01618214, 0.01624999, 0.01618214, 0.01621, 43.22967172], [1517279280000, 0.01617919, 0.01623335, 0.0161, 0.0161, 25.98735021], [1517279340000, 0.0162, 0.0162, 0.0161, 0.0162, 1.60762939], [1517279400000, 0.0161, 0.01619998, 0.0161, 0.01619998, 4.88963906], [1517279460000, 0.0161, 0.01619998, 0.0161, 0.01619998, 0.72021067], [1517279520000, 0.01619997, 0.01619997, 0.0161, 0.0161, 32.20882404], [1517279580000, 0.01618972, 0.01618972, 0.01618972, 0.01618972, 1.7980045], [1517279640000, 0.0161, 0.0161, 0.0161, 0.0161, 7.22507509], [1517279700000, 0.0161, 0.01618971, 0.0161, 0.01618971, 5.53593691], [1517279760000, 0.0161039, 0.0161039, 0.0161039, 0.0161039, 5.16606111], [1517279820000, 0.01618962, 0.01618972, 0.0161039, 0.0161039, 70.77911266], [1517279880000, 0.0161, 0.0161039, 0.0161, 0.0161039, 6.70092929], [1517279940000, 0.0161039, 0.0161039, 0.01610322, 0.01610322, 3.8338087], [1517280000000, 0.0161039, 0.0161039, 0.0161039, 0.0161039, 19.81710747], [1517280060000, 0.01615647, 0.01615647, 0.01610322, 0.01610322, 19.90422258], [1517280120000, 0.01610322, 0.01624, 0.0161, 0.0161109, 68.19490559], [1517280180000, 0.01622801, 0.0162281, 0.01622801, 0.0162281, 6.30249537], [1517280240000, 0.01622749, 0.0162275, 0.016111, 0.016111, 3.46625383], [1517280300000, 0.016111, 0.01621555, 0.016111, 0.016111, 60.42035574], [1517280360000, 0.016111, 0.016111, 0.0161109, 0.0161109, 11.40011408], [1517280420000, 0.0161109, 0.0161109, 0.01606411, 0.0161109, 8.10720027], [1517280480000, 0.0161109, 0.0161109, 0.01605001, 0.01605001, 10.88330118], [1517280540000, 0.0161109, 0.0161109, 0.01605001, 0.0161109, 3.92405518], [1517280600000, 0.0161109, 0.016111, 0.01605002, 0.01611099, 30.03507684], [1517280660000, 0.01611099, 0.01611099, 0.0161109, 0.01611099, 7.34417223], [1517280720000, 0.0161109, 0.01611099, 0.0161109, 0.01611099, 3.78552668], [1517280780000, 0.01611099, 0.01611099, 0.0161109, 0.01611099, 11.29985724], [1517280840000, 0.01611099, 0.01611099, 0.0161109, 0.0161109, 1.78422037], [1517280900000, 0.0161109, 0.01611099, 0.0161109, 0.0161109, 47.29608307], [1517280960000, 0.01611099, 0.01611099, 0.0161109, 0.01611099, 11.42256778], [1517281020000, 0.01611099, 0.016111, 0.01611099, 0.01611099, 101.34635866], [1517281080000, 0.016111, 0.016111, 0.01611099, 0.01611099, 12.2059218], [1517281140000, 0.01611099, 0.016111, 0.0161109, 0.0161109, 12.42234352], [1517281200000, 0.01611092, 0.016111, 0.01611092, 0.01611092, 3.04658667], [1517281260000, 0.01611092, 0.016111, 0.0161109, 0.0161109, 23.70539656], [1517281320000, 0.016111, 0.016111, 0.0161109, 0.0161109, 3.18930941], [1517281380000, 0.01611099, 0.016111, 0.0161109, 0.0161109, 1.69998537], [1517281440000, 0.0161109, 0.016111, 0.0161109, 0.016111, 22.13005341], [1517281500000, 0.0161109, 0.016111, 0.01606003, 0.01606003, 4.79375512], [1517281560000, 0.01606003, 0.016111, 0.01606003, 0.01606003, 33.71986041], [1517281620000, 0.01606003, 0.01606003, 0.01605, 0.01606003, 81.76190918], [1517281680000, 0.01606003, 0.01606003, 0.01605001, 0.01606003, 16.48446744], [1517281740000, 0.01606003, 0.01606003, 0.01605001, 0.01606003, 78.71396426], [1517281800000, 0.01606003, 0.01606004, 0.01605, 0.01606004, 86.32796866], [1517281860000, 0.01606004, 0.016111, 0.01605, 0.01605, 9.09469822], [1517281920000, 0.016111, 0.016111, 0.016111, 0.016111, 4.16824237], [1517281980000, 0.016111, 0.016111, 0.016111, 0.016111, 7.41347618], [1517282040000, 0.01605802, 0.016175, 0.01605802, 0.01606405, 17.45800108], [1517282100000, 0.01606404, 0.0162, 0.01606303, 0.016111, 77.76522777], [1517282160000, 0.016111, 0.01611206, 0.016111, 0.01611206, 4.45121518], [1517282220000, 0.01611206, 0.01618835, 0.016111, 0.016111, 1.3437046], [1517282280000, 0.016111, 0.016111, 0.01606411, 0.01606411, 4.31843151], [1517282340000, 0.01606411, 0.01606412, 0.01606411, 0.01606411, 1.70147601], [1517282400000, 0.01611205, 0.01611206, 0.01606302, 0.01611206, 6.15404656], [1517282460000, 0.01606302, 0.01618009, 0.01605, 0.01618009, 2.22071548], [1517282520000, 0.01618006, 0.01618931, 0.01618005, 0.01618931, 19.1367835], [1517282580000, 0.01618931, 0.01618931, 0.01606055, 0.01616436, 49.93862267], [1517282640000, 0.01616436, 0.01619224, 0.01605006, 0.01618599, 209.38985049], [1517282700000, 0.01618599, 0.01618922, 0.01616476, 0.01618588, 6.00399574], [1517282760000, 0.01616472, 0.01616472, 0.01608748, 0.01616461, 4.59248791], [1517282820000, 0.01616456, 0.01616456, 0.01606412, 0.016065, 12.98853291], [1517282880000, 0.016065, 0.01616056, 0.016065, 0.016065, 11.13329237], [1517282940000, 0.016065, 0.01615999, 0.01602396, 0.01615999, 48.16406796], [1517283000000, 0.016028, 0.01615995, 0.01602229, 0.01615945, 57.89654299], [1517283060000, 0.01615934, 0.01615934, 0.0161582, 0.0161582, 67.86484068], [1517283120000, 0.01603837, 0.01615795, 0.01603837, 0.01603853, 9.72707526], [1517283180000, 0.01603853, 0.01614732, 0.01603318, 0.01614599, 39.53556208], [1517283240000, 0.01614588, 0.01614588, 0.01603804, 0.01613506, 23.97932402], [1517283300000, 0.01613481, 0.01613482, 0.0160382, 0.01613371, 19.34470498], [1517283360000, 0.0160382, 0.01614574, 0.0160382, 0.01603821, 7.05501905], [1517283420000, 0.01613999, 0.01613999, 0.01603852, 0.0161387, 8.89443606], [1517283480000, 0.01607319, 0.01613496, 0.0160385, 0.01613486, 75.8493178], [1517283540000, 0.01603852, 0.01612, 0.01603852, 0.01612, 4.46595646], [1517283600000, 0.01612, 0.01612, 0.01612, 0.01612, 0.6026129], [1517283660000, 0.01612, 0.01612, 0.01603831, 0.01603831, 6.18102511], [1517283720000, 0.01611899, 0.01611899, 0.01603821, 0.01603821, 11.12509154], [1517283780000, 0.01603821, 0.01603821, 0.0160382, 0.0160382, 22.65680743], [1517283840000, 0.0160382, 0.0160382, 0.0160382, 0.0160382, 1.70024331], [1517283900000, 0.0160382, 0.01611, 0.0160382, 0.01611, 3.30505496], [1517283960000, 0.0160382, 0.0160382, 0.0160382, 0.0160382, 0.42716788], [1517284020000, 0.0160382, 0.01611, 0.0160382, 0.01611, 23.57276934], [1517284080000, 0.01611, 0.01611899, 0.01611, 0.01611, 15.37559425], [1517284140000, 0.01611, 0.01611, 0.01611, 0.01611, 1.2862615], [1517284200000, 0.01611, 0.01611898, 0.01611, 0.01611, 26.78063317], [1517284260000, 0.01611, 0.01611999, 0.01611, 0.01611898, 8.68393659], [1517284320000, 0.01611898, 0.01611998, 0.0160626, 0.01611898, 5.55332198], [1517284380000, 0.01611898, 0.01613459, 0.01611898, 0.01611998, 21.69762848], [1517284440000, 0.01611998, 0.01611998, 0.016043, 0.016043, 14.59356785], [1517284500000, 0.01611898, 0.01611998, 0.01605357, 0.01611998, 4.51032489], [1517284560000, 0.01605357, 0.01611998, 0.01605357, 0.016064, 19.36949208], [1517284620000, 0.01611998, 0.01611998, 0.01605907, 0.01611998, 2.1473075], [1517284680000, 0.01611998, 0.01611998, 0.01606401, 0.01611998, 27.82474617], [1517284740000, 0.01611998, 0.01611998, 0.01606401, 0.01606401, 177.08060566], [1517284800000, 0.01606401, 0.01606401, 0.01606, 0.016064, 51.28652879], [1517284860000, 0.016064, 0.01611998, 0.01606, 0.01606, 41.89710053], [1517284920000, 0.01611, 0.01611998, 0.01611, 0.01611998, 28.40944572], [1517284980000, 0.01613459, 0.01613459, 0.01611998, 0.01613458, 3.21371784], [1517285040000, 0.01613458, 0.01614, 0.01613458, 0.01614, 16.42782318], [1517285100000, 0.01614, 0.01616059, 0.01614, 0.01616059, 11.01143107], [1517285160000, 0.0161606, 0.016165, 0.0161606, 0.01616467, 7.90712153], [1517285220000, 0.01616467, 0.016165, 0.01616466, 0.01616466, 12.65702775], [1517285280000, 0.01616466, 0.01618599, 0.016162, 0.016162, 9.18563809], [1517285340000, 0.016162, 0.016162, 0.01612, 0.01612, 15.24925], [1517285400000, 0.01611524, 0.016162, 0.01611524, 0.016162, 27.94441476], [1517285460000, 0.016162, 0.016162, 0.01611563, 0.016162, 7.96738155], [1517285520000, 0.01611001, 0.01611001, 0.01611, 0.01611, 11.42397778], [1517285580000, 0.01611, 0.01611, 0.01609905, 0.01611, 2.14684078], [1517285640000, 0.016162, 0.016162, 0.01608059, 0.01608065, 34.24063823], [1517285700000, 0.01608071, 0.01616199, 0.01608071, 0.01616199, 7.75156416], [1517285760000, 0.01616199, 0.016162, 0.01616199, 0.016162, 4.99164367], [1517285820000, 0.016162, 0.01618599, 0.01616199, 0.01616199, 19.99784078], [1517285880000, 0.01616199, 0.01618, 0.01616199, 0.01616199, 3.32098072], [1517285940000, 0.01616199, 0.01616199, 0.01616198, 0.01616198, 1.36246718], [1517286000000, 0.0160964, 0.01616198, 0.01609639, 0.01616198, 3.02019607], [1517286060000, 0.01616198, 0.01618, 0.016027, 0.016027, 35.82819511], [1517286120000, 0.01604115, 0.01613469, 0.01604115, 0.01613469, 2.89965071], [1517286180000, 0.01613469, 0.01618, 0.01604178, 0.01605, 100.05697966], [1517286240000, 0.01605045, 0.0161, 0.01605045, 0.0161, 55.14363471], [1517286300000, 0.0161, 0.01618, 0.01605146, 0.01618, 18.94705013], [1517286360000, 0.01618, 0.016185, 0.0161, 0.0161, 23.30816368], [1517286420000, 0.0161, 0.016185, 0.0161, 0.0161, 6.79864631], [1517286480000, 0.0161, 0.0161, 0.0161, 0.0161, 1.81704832], [1517286540000, 0.0161, 0.0161, 0.01608221, 0.01608221, 4.4259612], [1517286600000, 0.01608224, 0.01608701, 0.01608201, 0.01608701, 16.59585532], [1517286660000, 0.01608701, 0.01618497, 0.016077, 0.016155, 11.18284314], [1517286720000, 0.01607702, 0.016155, 0.01606045, 0.016155, 4.98153011], [1517286780000, 0.016155, 0.016155, 0.016155, 0.016155, 3.95493117], [1517286840000, 0.01607609, 0.01618496, 0.01607609, 0.01607904, 14.41544987], [1517286900000, 0.01618496, 0.01618499, 0.01607904, 0.01618499, 8.91495999], [1517286960000, 0.01618499, 0.01618499, 0.01608496, 0.01608496, 5.70333828], [1517287020000, 0.01608496, 0.01608496, 0.01607529, 0.01608496, 1.83802726], [1517287080000, 0.01608496, 0.01608496, 0.01607529, 0.01607529, 5.0], [1517287200000, 0.01609, 0.01617529, 0.01608496, 0.01608496, 27.94562754], [1517287260000, 0.01608496, 0.01617529, 0.01608496, 0.01608496, 1.67148134], [1517287320000, 0.01617528, 0.01617528, 0.01608496, 0.01608516, 3.74410268], [1517287380000, 0.01608496, 0.01617528, 0.01608496, 0.01617528, 5.0108806], [1517287440000, 0.01608506, 0.01617528, 0.016084, 0.01617528, 11.31488091], [1517287500000, 0.01608506, 0.01615, 0.01608506, 0.01615, 6.28752923], [1517287560000, 0.01615, 0.01615, 0.01608506, 0.01608506, 20.45176638], [1517287620000, 0.01614, 0.01614, 0.01608506, 0.01608506, 1.72773365], [1517287680000, 0.0161, 0.0161, 0.016084, 0.016084, 24.74757202], [1517287740000, 0.01608506, 0.016145, 0.01607222, 0.01607222, 6.85749049], [1517287800000, 0.016084, 0.016145, 0.01607222, 0.016145, 20.97095642]]
\ No newline at end of file
diff --git a/tests/testdata/NXT_BTC-1m.json b/tests/testdata/NXT_BTC-1m.json
deleted file mode 100644
index 7cb900bd1..000000000
--- a/tests/testdata/NXT_BTC-1m.json
+++ /dev/null
@@ -1 +0,0 @@
-[[1516423980000, 2.72e-05, 2.72e-05, 2.706e-05, 2.715e-05, 67615.02103143], [1516424040000, 2.707e-05, 2.715e-05, 2.707e-05, 2.714e-05, 19535.01722903], [1516424100000, 2.715e-05, 2.715e-05, 2.707e-05, 2.714e-05, 29513.51070932], [1516424160000, 2.714e-05, 2.737e-05, 2.714e-05, 2.714e-05, 18080.8090287], [1516424220000, 2.714e-05, 2.734e-05, 2.714e-05, 2.717e-05, 6765.87412545], [1516424280000, 2.72e-05, 2.72e-05, 2.717e-05, 2.717e-05, 48413.8624814], [1516424340000, 2.717e-05, 2.74e-05, 2.717e-05, 2.717e-05, 42507.22822852], [1516424400000, 2.717e-05, 2.717e-05, 2.706e-05, 2.706e-05, 52702.91226626], [1516424460000, 2.705e-05, 2.706e-05, 2.69e-05, 2.69e-05, 42591.16487894], [1516424520000, 2.69e-05, 2.69e-05, 2.68e-05, 2.686e-05, 111549.76277544], [1516424580000, 2.678e-05, 2.69e-05, 2.677e-05, 2.677e-05, 19529.50295453], [1516424640000, 2.675e-05, 2.69e-05, 2.673e-05, 2.69e-05, 16974.9246021], [1516424700000, 2.689e-05, 2.689e-05, 2.675e-05, 2.675e-05, 7542.90960284], [1516424760000, 2.675e-05, 2.681e-05, 2.673e-05, 2.675e-05, 15424.0767228], [1516424820000, 2.678e-05, 2.68e-05, 2.676e-05, 2.677e-05, 4416.56695932], [1516424880000, 2.68e-05, 2.681e-05, 2.677e-05, 2.681e-05, 28797.71035894], [1516424940000, 2.677e-05, 2.681e-05, 2.677e-05, 2.679e-05, 5765.02131265], [1516425000000, 2.681e-05, 2.681e-05, 2.669e-05, 2.669e-05, 13077.42940054], [1516425060000, 2.67e-05, 2.675e-05, 2.668e-05, 2.668e-05, 22570.8947177], [1516425120000, 2.666e-05, 2.676e-05, 2.646e-05, 2.676e-05, 33633.49146757], [1516425180000, 2.66e-05, 2.69e-05, 2.66e-05, 2.689e-05, 5211.26373158], [1516425240000, 2.689e-05, 2.689e-05, 2.687e-05, 2.687e-05, 1101.88720556], [1516425300000, 2.655e-05, 2.667e-05, 2.655e-05, 2.656e-05, 2872.26098056], [1516425360000, 2.655e-05, 2.666e-05, 2.655e-05, 2.666e-05, 6138.07482666], [1516425420000, 2.666e-05, 2.666e-05, 2.655e-05, 2.655e-05, 9156.06359065], [1516425480000, 2.655e-05, 2.664e-05, 2.65e-05, 2.65e-05, 7892.73662703], [1516425540000, 2.65e-05, 2.655e-05, 2.65e-05, 2.651e-05, 26247.84269994], [1516425600000, 2.651e-05, 2.684e-05, 2.65e-05, 2.684e-05, 10577.18289632], [1516425660000, 2.659e-05, 2.681e-05, 2.659e-05, 2.659e-05, 692.90770718], [1516425720000, 2.67e-05, 2.67e-05, 2.646e-05, 2.654e-05, 23429.80699743], [1516425780000, 2.658e-05, 2.658e-05, 2.654e-05, 2.658e-05, 4594.15675429], [1516425840000, 2.654e-05, 2.659e-05, 2.654e-05, 2.659e-05, 10972.79753262], [1516425900000, 2.659e-05, 2.659e-05, 2.646e-05, 2.658e-05, 18278.21444893], [1516425960000, 2.658e-05, 2.658e-05, 2.658e-05, 2.658e-05, 188.11136192], [1516426020000, 2.658e-05, 2.658e-05, 2.658e-05, 2.658e-05, 7092.44383398], [1516426080000, 2.656e-05, 2.656e-05, 2.65e-05, 2.653e-05, 2878.98756584], [1516426140000, 2.653e-05, 2.657e-05, 2.646e-05, 2.657e-05, 7199.09258562], [1516426200000, 2.658e-05, 2.658e-05, 2.65e-05, 2.65e-05, 7965.55880148], [1516426260000, 2.65e-05, 2.65e-05, 2.647e-05, 2.647e-05, 14166.17003889], [1516426320000, 2.647e-05, 2.647e-05, 2.647e-05, 2.647e-05, 11213.12791273], [1516426380000, 2.647e-05, 2.658e-05, 2.646e-05, 2.658e-05, 42346.4869197], [1516426440000, 2.658e-05, 2.658e-05, 2.647e-05, 2.647e-05, 3827.19056517], [1516426500000, 2.647e-05, 2.647e-05, 2.647e-05, 2.647e-05, 4571.2868818], [1516426560000, 2.647e-05, 2.658e-05, 2.647e-05, 2.658e-05, 2844.21640215], [1516426620000, 2.649e-05, 2.649e-05, 2.649e-05, 2.649e-05, 49.05538776], [1516426680000, 2.648e-05, 2.649e-05, 2.648e-05, 2.649e-05, 43392.47244759], [1516426740000, 2.649e-05, 2.649e-05, 2.648e-05, 2.648e-05, 30791.85539937], [1516426800000, 2.649e-05, 2.649e-05, 2.649e-05, 2.649e-05, 700.47436167], [1516426860000, 2.649e-05, 2.649e-05, 2.647e-05, 2.647e-05, 22444.9830913], [1516426920000, 2.648e-05, 2.649e-05, 2.635e-05, 2.635e-05, 25449.47652378], [1516426980000, 2.635e-05, 2.64e-05, 2.633e-05, 2.635e-05, 6333.80052332], [1516427040000, 2.633e-05, 2.639e-05, 2.63e-05, 2.632e-05, 122550.82447139], [1516427100000, 2.628e-05, 2.628e-05, 2.611e-05, 2.611e-05, 110286.19258354], [1516427160000, 2.613e-05, 2.632e-05, 2.613e-05, 2.632e-05, 30677.43527949], [1516427220000, 2.616e-05, 2.632e-05, 2.616e-05, 2.632e-05, 10568.80902125], [1516427280000, 2.635e-05, 2.635e-05, 2.631e-05, 2.632e-05, 14731.83515196], [1516427340000, 2.616e-05, 2.632e-05, 2.61e-05, 2.631e-05, 78930.3257632], [1516427400000, 2.611e-05, 2.63e-05, 2.611e-05, 2.614e-05, 20980.08008569], [1516427460000, 2.615e-05, 2.639e-05, 2.614e-05, 2.638e-05, 76550.11781456], [1516427520000, 2.639e-05, 2.639e-05, 2.638e-05, 2.638e-05, 4182.16216184], [1516427580000, 2.639e-05, 2.639e-05, 2.625e-05, 2.626e-05, 2429.133604], [1516427640000, 2.63e-05, 2.635e-05, 2.63e-05, 2.63e-05, 3119.97033507], [1516427700000, 2.63e-05, 2.639e-05, 2.628e-05, 2.628e-05, 23914.34704465], [1516427760000, 2.628e-05, 2.645e-05, 2.626e-05, 2.626e-05, 77385.60153092], [1516427820000, 2.631e-05, 2.644e-05, 2.631e-05, 2.644e-05, 5257.25948739], [1516427880000, 2.643e-05, 2.645e-05, 2.643e-05, 2.645e-05, 8594.2992982], [1516427940000, 2.645e-05, 2.649e-05, 2.645e-05, 2.649e-05, 9270.99112187], [1516428000000, 2.649e-05, 2.649e-05, 2.645e-05, 2.645e-05, 11376.72958497], [1516428060000, 2.646e-05, 2.646e-05, 2.645e-05, 2.645e-05, 5158.65770361], [1516428120000, 2.645e-05, 2.649e-05, 2.645e-05, 2.648e-05, 10249.2658512], [1516428180000, 2.648e-05, 2.648e-05, 2.648e-05, 2.648e-05, 9928.84942949], [1516428240000, 2.648e-05, 2.653e-05, 2.648e-05, 2.653e-05, 2760.56384782], [1516428300000, 2.656e-05, 2.656e-05, 2.653e-05, 2.653e-05, 3220.13179289], [1516428360000, 2.652e-05, 2.656e-05, 2.652e-05, 2.655e-05, 4502.79139239], [1516428420000, 2.655e-05, 2.659e-05, 2.655e-05, 2.659e-05, 25917.19970797], [1516428480000, 2.655e-05, 2.67e-05, 2.655e-05, 2.67e-05, 18568.16739818], [1516428540000, 2.674e-05, 2.694e-05, 2.674e-05, 2.681e-05, 3214.12935694], [1516428600000, 2.694e-05, 2.701e-05, 2.684e-05, 2.684e-05, 10602.56481973], [1516428660000, 2.698e-05, 2.698e-05, 2.698e-05, 2.698e-05, 18.93653811], [1516428720000, 2.701e-05, 2.709e-05, 2.686e-05, 2.709e-05, 52784.48895758], [1516428780000, 2.708e-05, 2.717e-05, 2.708e-05, 2.709e-05, 9952.88799549], [1516428840000, 2.709e-05, 2.717e-05, 2.708e-05, 2.709e-05, 11437.26883141], [1516428900000, 2.709e-05, 2.72e-05, 2.709e-05, 2.709e-05, 13761.61055048], [1516428960000, 2.71e-05, 2.717e-05, 2.71e-05, 2.717e-05, 2318.03033843], [1516429020000, 2.717e-05, 2.717e-05, 2.698e-05, 2.701e-05, 7391.85475499], [1516429080000, 2.69e-05, 2.69e-05, 2.685e-05, 2.685e-05, 37327.49543386], [1516429140000, 2.685e-05, 2.685e-05, 2.684e-05, 2.685e-05, 14345.55405099], [1516429200000, 2.684e-05, 2.685e-05, 2.68e-05, 2.684e-05, 16051.42978678], [1516429260000, 2.684e-05, 2.685e-05, 2.684e-05, 2.685e-05, 6487.53149991], [1516429320000, 2.684e-05, 2.699e-05, 2.675e-05, 2.699e-05, 21982.5852105], [1516429380000, 2.701e-05, 2.713e-05, 2.701e-05, 2.713e-05, 3300.29294812], [1516429440000, 2.715e-05, 2.727e-05, 2.715e-05, 2.715e-05, 31436.15285483], [1516429500000, 2.715e-05, 2.715e-05, 2.697e-05, 2.697e-05, 100.0], [1516429560000, 2.697e-05, 2.715e-05, 2.68e-05, 2.68e-05, 4816.63952882], [1516429620000, 2.681e-05, 2.681e-05, 2.674e-05, 2.674e-05, 10941.7337306], [1516429680000, 2.68e-05, 2.71e-05, 2.674e-05, 2.677e-05, 15987.54122726], [1516429740000, 2.7e-05, 2.712e-05, 2.7e-05, 2.712e-05, 2085.64869977], [1516429800000, 2.711e-05, 2.712e-05, 2.709e-05, 2.712e-05, 9207.00215118], [1516429860000, 2.719e-05, 2.719e-05, 2.717e-05, 2.718e-05, 1354.31080261], [1516429920000, 2.716e-05, 2.716e-05, 2.716e-05, 2.716e-05, 8834.63471799], [1516429980000, 2.716e-05, 2.716e-05, 2.716e-05, 2.716e-05, 290.56646168], [1516430040000, 2.716e-05, 2.728e-05, 2.716e-05, 2.728e-05, 110690.36303304], [1516430100000, 2.728e-05, 2.737e-05, 2.728e-05, 2.737e-05, 22389.67589052], [1516430160000, 2.737e-05, 2.737e-05, 2.719e-05, 2.719e-05, 41382.59618075], [1516430220000, 2.714e-05, 2.714e-05, 2.69e-05, 2.69e-05, 6181.25149442], [1516430340000, 2.691e-05, 2.712e-05, 2.691e-05, 2.691e-05, 17767.2595075], [1516430400000, 2.692e-05, 2.692e-05, 2.692e-05, 2.692e-05, 3465.01648575], [1516430460000, 2.708e-05, 2.724e-05, 2.708e-05, 2.724e-05, 9794.66727821], [1516430520000, 2.712e-05, 2.725e-05, 2.712e-05, 2.725e-05, 11279.78476356], [1516430580000, 2.725e-05, 2.725e-05, 2.725e-05, 2.725e-05, 109.0], [1516430640000, 2.721e-05, 2.746e-05, 2.721e-05, 2.729e-05, 71722.55789284], [1516430700000, 2.73e-05, 2.747e-05, 2.729e-05, 2.747e-05, 4698.0768049], [1516430880000, 2.731e-05, 2.731e-05, 2.731e-05, 2.731e-05, 8735.00235218], [1516430940000, 2.734e-05, 2.737e-05, 2.731e-05, 2.737e-05, 156953.95384868], [1516431000000, 2.737e-05, 2.737e-05, 2.712e-05, 2.713e-05, 29171.39774014], [1516431120000, 2.713e-05, 2.713e-05, 2.713e-05, 2.713e-05, 4893.99428078], [1516431180000, 2.713e-05, 2.713e-05, 2.713e-05, 2.713e-05, 6774.80809586], [1516431240000, 2.713e-05, 2.713e-05, 2.712e-05, 2.712e-05, 3630.855454], [1516431300000, 2.712e-05, 2.712e-05, 2.712e-05, 2.712e-05, 96.47757835], [1516431420000, 2.712e-05, 2.715e-05, 2.712e-05, 2.715e-05, 1765.2762635], [1516431480000, 2.716e-05, 2.717e-05, 2.716e-05, 2.717e-05, 1823.95246776], [1516431540000, 2.718e-05, 2.718e-05, 2.717e-05, 2.717e-05, 1509.35230538], [1516431660000, 2.719e-05, 2.722e-05, 2.719e-05, 2.722e-05, 1789.50343257], [1516431720000, 2.723e-05, 2.743e-05, 2.723e-05, 2.733e-05, 8042.04847232], [1516431780000, 2.733e-05, 2.733e-05, 2.733e-05, 2.733e-05, 1731.85344127], [1516431840000, 2.731e-05, 2.732e-05, 2.731e-05, 2.732e-05, 206.05002866], [1516431900000, 2.732e-05, 2.733e-05, 2.732e-05, 2.733e-05, 10847.30030265], [1516431960000, 2.733e-05, 2.733e-05, 2.731e-05, 2.733e-05, 4830.1180557], [1516432020000, 2.735e-05, 2.741e-05, 2.735e-05, 2.741e-05, 225.76066218], [1516432080000, 2.737e-05, 2.741e-05, 2.733e-05, 2.741e-05, 8835.8940555], [1516432140000, 2.741e-05, 2.741e-05, 2.734e-05, 2.734e-05, 2560.77518744], [1516432200000, 2.741e-05, 2.741e-05, 2.734e-05, 2.734e-05, 779.4944822], [1516432260000, 2.734e-05, 2.741e-05, 2.734e-05, 2.734e-05, 28106.41469389], [1516432320000, 2.734e-05, 2.74e-05, 2.734e-05, 2.734e-05, 23498.67113742], [1516432380000, 2.741e-05, 2.741e-05, 2.734e-05, 2.734e-05, 3532.01772314], [1516432440000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 5312.20400522], [1516432500000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 1981.14217553], [1516432560000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 7842.9075517], [1516432620000, 2.731e-05, 2.731e-05, 2.731e-05, 2.731e-05, 16535.42925953], [1516432740000, 2.715e-05, 2.719e-05, 2.714e-05, 2.719e-05, 4239.93303136], [1516432800000, 2.719e-05, 2.728e-05, 2.712e-05, 2.728e-05, 36007.7569128], [1516432860000, 2.728e-05, 2.729e-05, 2.728e-05, 2.728e-05, 24733.4063271], [1516432920000, 2.729e-05, 2.748e-05, 2.729e-05, 2.748e-05, 29547.76150538], [1516432980000, 2.728e-05, 2.728e-05, 2.728e-05, 2.728e-05, 8977.843115], [1516433040000, 2.745e-05, 2.746e-05, 2.745e-05, 2.746e-05, 4377.99299071], [1516433100000, 2.746e-05, 2.746e-05, 2.746e-05, 2.746e-05, 1510.62947147], [1516433160000, 2.746e-05, 2.746e-05, 2.745e-05, 2.745e-05, 2627.45330693], [1516433220000, 2.728e-05, 2.728e-05, 2.717e-05, 2.717e-05, 121227.88340935], [1516433280000, 2.714e-05, 2.74e-05, 2.712e-05, 2.74e-05, 41255.95070125], [1516433340000, 2.713e-05, 2.74e-05, 2.712e-05, 2.74e-05, 5510.27605717], [1516433400000, 2.74e-05, 2.745e-05, 2.74e-05, 2.745e-05, 21245.0], [1516433460000, 2.745e-05, 2.748e-05, 2.722e-05, 2.722e-05, 36987.91146335], [1516433520000, 2.722e-05, 2.744e-05, 2.715e-05, 2.744e-05, 1705.42011223], [1516433580000, 2.716e-05, 2.716e-05, 2.715e-05, 2.715e-05, 1960.52296856], [1516433640000, 2.717e-05, 2.717e-05, 2.715e-05, 2.717e-05, 4333.8030644], [1516433700000, 2.743e-05, 2.743e-05, 2.739e-05, 2.741e-05, 5735.56838481], [1516433760000, 2.739e-05, 2.739e-05, 2.739e-05, 2.739e-05, 500.0], [1516433820000, 2.739e-05, 2.74e-05, 2.738e-05, 2.738e-05, 396.19908089], [1516433880000, 2.738e-05, 2.758e-05, 2.738e-05, 2.758e-05, 103010.06424164], [1516433940000, 2.752e-05, 2.757e-05, 2.751e-05, 2.751e-05, 5528.06785742], [1516434000000, 2.757e-05, 2.758e-05, 2.75e-05, 2.75e-05, 92727.43759241], [1516434060000, 2.741e-05, 2.741e-05, 2.731e-05, 2.735e-05, 6979.99108991], [1516434180000, 2.757e-05, 2.757e-05, 2.756e-05, 2.757e-05, 2041.571858], [1516434240000, 2.736e-05, 2.736e-05, 2.736e-05, 2.736e-05, 536.67067708], [1516434300000, 2.736e-05, 2.736e-05, 2.735e-05, 2.735e-05, 3886.16133871], [1516434360000, 2.735e-05, 2.735e-05, 2.735e-05, 2.735e-05, 7167.94942594], [1516434420000, 2.735e-05, 2.735e-05, 2.735e-05, 2.735e-05, 11780.36823084], [1516434540000, 2.736e-05, 2.736e-05, 2.736e-05, 2.736e-05, 400.0], [1516434600000, 2.736e-05, 2.736e-05, 2.734e-05, 2.734e-05, 2807.17977942], [1516434660000, 2.734e-05, 2.734e-05, 2.721e-05, 2.729e-05, 6589.26450014], [1516434720000, 2.72e-05, 2.729e-05, 2.718e-05, 2.718e-05, 14895.63803148], [1516434780000, 2.729e-05, 2.729e-05, 2.729e-05, 2.729e-05, 8719.91926007], [1516434840000, 2.718e-05, 2.72e-05, 2.718e-05, 2.72e-05, 8952.16889805], [1516434900000, 2.725e-05, 2.725e-05, 2.725e-05, 2.725e-05, 2860.28347982], [1516434960000, 2.725e-05, 2.725e-05, 2.72e-05, 2.725e-05, 10809.80380697], [1516435020000, 2.724e-05, 2.735e-05, 2.724e-05, 2.735e-05, 6437.7569926], [1516435080000, 2.735e-05, 2.735e-05, 2.725e-05, 2.725e-05, 1997.2], [1516435140000, 2.725e-05, 2.725e-05, 2.725e-05, 2.725e-05, 300.98583303], [1516435200000, 2.725e-05, 2.725e-05, 2.725e-05, 2.725e-05, 20.7], [1516435260000, 2.721e-05, 2.721e-05, 2.72e-05, 2.72e-05, 7093.374498], [1516435320000, 2.725e-05, 2.725e-05, 2.717e-05, 2.717e-05, 293.41093385], [1516435380000, 2.725e-05, 2.742e-05, 2.725e-05, 2.742e-05, 2150.81324863], [1516435440000, 2.742e-05, 2.742e-05, 2.742e-05, 2.742e-05, 13596.40977788], [1516435500000, 2.721e-05, 2.745e-05, 2.721e-05, 2.745e-05, 28296.84301531], [1516435560000, 2.742e-05, 2.745e-05, 2.741e-05, 2.741e-05, 9203.12554936], [1516435620000, 2.741e-05, 2.742e-05, 2.741e-05, 2.742e-05, 3658.2943901], [1516435680000, 2.745e-05, 2.745e-05, 2.742e-05, 2.745e-05, 3564.59858129], [1516435740000, 2.746e-05, 2.75e-05, 2.746e-05, 2.746e-05, 18436.38356679], [1516435800000, 2.752e-05, 2.754e-05, 2.746e-05, 2.754e-05, 5358.19663917], [1516435860000, 2.747e-05, 2.759e-05, 2.747e-05, 2.759e-05, 24295.95084349], [1516435920000, 2.76e-05, 2.76e-05, 2.745e-05, 2.745e-05, 14707.63517753], [1516435980000, 2.745e-05, 2.745e-05, 2.742e-05, 2.742e-05, 449.84361362], [1516436040000, 2.742e-05, 2.742e-05, 2.742e-05, 2.742e-05, 511.78452567], [1516436100000, 2.742e-05, 2.742e-05, 2.742e-05, 2.742e-05, 5668.44225774], [1516436160000, 2.742e-05, 2.742e-05, 2.742e-05, 2.742e-05, 4805.66274693], [1516436220000, 2.744e-05, 2.744e-05, 2.744e-05, 2.744e-05, 18.44156131], [1516436280000, 2.744e-05, 2.75e-05, 2.744e-05, 2.75e-05, 2372.45369381], [1516436340000, 2.75e-05, 2.759e-05, 2.749e-05, 2.75e-05, 5498.93012786], [1516436400000, 2.75e-05, 2.765e-05, 2.75e-05, 2.764e-05, 3643.22139333], [1516436460000, 2.75e-05, 2.764e-05, 2.75e-05, 2.75e-05, 4805.01632949], [1516436520000, 2.764e-05, 2.764e-05, 2.75e-05, 2.75e-05, 2534.49967648], [1516436580000, 2.751e-05, 2.764e-05, 2.75e-05, 2.751e-05, 14590.89508547], [1516436640000, 2.752e-05, 2.752e-05, 2.752e-05, 2.752e-05, 7217.488408], [1516436700000, 2.752e-05, 2.757e-05, 2.751e-05, 2.751e-05, 23365.60812088], [1516436760000, 2.757e-05, 2.767e-05, 2.757e-05, 2.767e-05, 16529.79320651], [1516436820000, 2.762e-05, 2.767e-05, 2.762e-05, 2.767e-05, 22581.41626978], [1516436880000, 2.767e-05, 2.767e-05, 2.752e-05, 2.752e-05, 11351.81717143], [1516436940000, 2.767e-05, 2.767e-05, 2.767e-05, 2.767e-05, 36.14022406], [1516437000000, 2.752e-05, 2.752e-05, 2.752e-05, 2.752e-05, 3629.90452538], [1516437060000, 2.762e-05, 2.763e-05, 2.762e-05, 2.763e-05, 138.24701518], [1516437120000, 2.762e-05, 2.762e-05, 2.762e-05, 2.762e-05, 103.42001991], [1516437180000, 2.76e-05, 2.762e-05, 2.76e-05, 2.762e-05, 470.0], [1516437240000, 2.752e-05, 2.766e-05, 2.752e-05, 2.766e-05, 6066.42429409], [1516437300000, 2.752e-05, 2.765e-05, 2.744e-05, 2.744e-05, 27778.80434247], [1516437360000, 2.744e-05, 2.744e-05, 2.742e-05, 2.742e-05, 1425.90005927], [1516437420000, 2.74e-05, 2.74e-05, 2.73e-05, 2.73e-05, 2156.37584164], [1516437480000, 2.73e-05, 2.734e-05, 2.73e-05, 2.734e-05, 31368.93464947], [1516437540000, 2.727e-05, 2.727e-05, 2.716e-05, 2.716e-05, 195.78379595], [1516437600000, 2.716e-05, 2.716e-05, 2.712e-05, 2.714e-05, 28015.28260691], [1516437660000, 2.71e-05, 2.715e-05, 2.706e-05, 2.715e-05, 8072.9548056], [1516437720000, 2.715e-05, 2.716e-05, 2.715e-05, 2.716e-05, 3977.45160829], [1516437780000, 2.716e-05, 2.716e-05, 2.716e-05, 2.716e-05, 113.12817551], [1516437840000, 2.716e-05, 2.737e-05, 2.716e-05, 2.737e-05, 869.56690963], [1516437900000, 2.737e-05, 2.737e-05, 2.716e-05, 2.716e-05, 4495.38287409], [1516437960000, 2.718e-05, 2.718e-05, 2.718e-05, 2.718e-05, 259.95644811], [1516438080000, 2.729e-05, 2.73e-05, 2.724e-05, 2.73e-05, 2872.36151786], [1516438140000, 2.735e-05, 2.737e-05, 2.735e-05, 2.737e-05, 4017.48377858], [1516438200000, 2.724e-05, 2.724e-05, 2.724e-05, 2.724e-05, 278.0], [1516438260000, 2.724e-05, 2.737e-05, 2.724e-05, 2.735e-05, 3435.61436472], [1516438320000, 2.732e-05, 2.737e-05, 2.719e-05, 2.719e-05, 4319.54771975], [1516438380000, 2.719e-05, 2.732e-05, 2.719e-05, 2.719e-05, 19938.70388536], [1516438440000, 2.719e-05, 2.719e-05, 2.719e-05, 2.719e-05, 8017.24776338], [1516438500000, 2.719e-05, 2.719e-05, 2.719e-05, 2.719e-05, 771.95100466], [1516438560000, 2.718e-05, 2.718e-05, 2.707e-05, 2.707e-05, 13189.01726091], [1516438680000, 2.716e-05, 2.716e-05, 2.707e-05, 2.707e-05, 10904.46263346], [1516438740000, 2.709e-05, 2.71e-05, 2.709e-05, 2.71e-05, 2870.1578138], [1516438800000, 2.711e-05, 2.716e-05, 2.711e-05, 2.716e-05, 76.95823127], [1516438860000, 2.716e-05, 2.72e-05, 2.716e-05, 2.716e-05, 15999.04433722], [1516438920000, 2.716e-05, 2.716e-05, 2.7e-05, 2.705e-05, 40476.08078151], [1516438980000, 2.699e-05, 2.72e-05, 2.699e-05, 2.72e-05, 66254.25802269], [1516439040000, 2.72e-05, 2.72e-05, 2.72e-05, 2.72e-05, 6395.79892814], [1516439100000, 2.72e-05, 2.72e-05, 2.701e-05, 2.701e-05, 13305.74408793], [1516439160000, 2.701e-05, 2.71e-05, 2.701e-05, 2.71e-05, 1638.21827352], [1516439220000, 2.71e-05, 2.71e-05, 2.71e-05, 2.71e-05, 1896.76310079], [1516439280000, 2.72e-05, 2.72e-05, 2.72e-05, 2.72e-05, 2400.53419664], [1516439340000, 2.712e-05, 2.712e-05, 2.71e-05, 2.71e-05, 9752.01606706], [1516439400000, 2.71e-05, 2.71e-05, 2.701e-05, 2.701e-05, 2519.79851548], [1516439460000, 2.697e-05, 2.697e-05, 2.694e-05, 2.694e-05, 12586.14371593], [1516439520000, 2.697e-05, 2.697e-05, 2.69e-05, 2.69e-05, 708.91740517], [1516439580000, 2.69e-05, 2.697e-05, 2.69e-05, 2.697e-05, 6581.0891921], [1516439640000, 2.697e-05, 2.697e-05, 2.697e-05, 2.697e-05, 93.61534627], [1516439700000, 2.697e-05, 2.697e-05, 2.697e-05, 2.697e-05, 2050.10970903], [1516439760000, 2.697e-05, 2.697e-05, 2.685e-05, 2.685e-05, 2804.64600758], [1516439820000, 2.685e-05, 2.697e-05, 2.685e-05, 2.697e-05, 632.50264335], [1516439880000, 2.697e-05, 2.697e-05, 2.697e-05, 2.697e-05, 3790.90030278], [1516439940000, 2.697e-05, 2.697e-05, 2.697e-05, 2.697e-05, 600.0], [1516440000000, 2.697e-05, 2.701e-05, 2.697e-05, 2.701e-05, 21964.55691881], [1516440120000, 2.724e-05, 2.724e-05, 2.697e-05, 2.697e-05, 1865.89724427], [1516440180000, 2.697e-05, 2.697e-05, 2.697e-05, 2.697e-05, 194.76030853], [1516440240000, 2.698e-05, 2.698e-05, 2.698e-05, 2.698e-05, 361.05071506], [1516440300000, 2.699e-05, 2.699e-05, 2.688e-05, 2.688e-05, 106977.93754954], [1516440360000, 2.688e-05, 2.711e-05, 2.688e-05, 2.689e-05, 2464.56188442], [1516440420000, 2.69e-05, 2.711e-05, 2.689e-05, 2.71e-05, 5046.0], [1516440480000, 2.709e-05, 2.709e-05, 2.709e-05, 2.709e-05, 4267.91734496], [1516440540000, 2.705e-05, 2.705e-05, 2.705e-05, 2.705e-05, 2965.27642137], [1516440660000, 2.704e-05, 2.704e-05, 2.704e-05, 2.704e-05, 746.03668008], [1516440720000, 2.689e-05, 2.689e-05, 2.686e-05, 2.686e-05, 9309.79401531], [1516440780000, 2.688e-05, 2.688e-05, 2.688e-05, 2.688e-05, 4320.21401946], [1516440840000, 2.688e-05, 2.688e-05, 2.681e-05, 2.688e-05, 12393.62042806], [1516440900000, 2.688e-05, 2.688e-05, 2.688e-05, 2.688e-05, 11544.31204795], [1516440960000, 2.688e-05, 2.689e-05, 2.688e-05, 2.689e-05, 340.86537803], [1516441020000, 2.689e-05, 2.704e-05, 2.689e-05, 2.704e-05, 10224.54310641], [1516441140000, 2.703e-05, 2.703e-05, 2.688e-05, 2.688e-05, 21459.26261986], [1516441200000, 2.689e-05, 2.689e-05, 2.688e-05, 2.688e-05, 1735.62127977], [1516441260000, 2.688e-05, 2.688e-05, 2.68e-05, 2.68e-05, 3523.7005744], [1516441320000, 2.68e-05, 2.68e-05, 2.675e-05, 2.675e-05, 1137.0048631], [1516441380000, 2.697e-05, 2.697e-05, 2.683e-05, 2.684e-05, 2738.4416227], [1516441440000, 2.685e-05, 2.685e-05, 2.685e-05, 2.685e-05, 186.7214296], [1516441500000, 2.686e-05, 2.686e-05, 2.683e-05, 2.685e-05, 3833.91145063], [1516441560000, 2.685e-05, 2.685e-05, 2.685e-05, 2.685e-05, 3441.27843933], [1516441620000, 2.683e-05, 2.683e-05, 2.683e-05, 2.683e-05, 1120.0], [1516441680000, 2.689e-05, 2.689e-05, 2.685e-05, 2.685e-05, 3348.36389551], [1516441740000, 2.685e-05, 2.685e-05, 2.683e-05, 2.685e-05, 2696.29928549], [1516441800000, 2.683e-05, 2.685e-05, 2.683e-05, 2.685e-05, 3577.64126286], [1516441860000, 2.685e-05, 2.685e-05, 2.685e-05, 2.685e-05, 107.71402886], [1516441920000, 2.685e-05, 2.703e-05, 2.685e-05, 2.703e-05, 534.21737544], [1516441980000, 2.702e-05, 2.702e-05, 2.702e-05, 2.702e-05, 378.15498065], [1516442040000, 2.7e-05, 2.7e-05, 2.68e-05, 2.68e-05, 392.61070157], [1516442100000, 2.68e-05, 2.68e-05, 2.678e-05, 2.68e-05, 5440.86434676], [1516442160000, 2.68e-05, 2.68e-05, 2.68e-05, 2.68e-05, 1022.43198966], [1516442220000, 2.68e-05, 2.68e-05, 2.68e-05, 2.68e-05, 111.43768103], [1516442340000, 2.697e-05, 2.697e-05, 2.697e-05, 2.697e-05, 173.19115719], [1516442400000, 2.697e-05, 2.7e-05, 2.697e-05, 2.7e-05, 7122.39879188], [1516442460000, 2.68e-05, 2.699e-05, 2.68e-05, 2.681e-05, 633.26785678], [1516442520000, 2.681e-05, 2.698e-05, 2.681e-05, 2.698e-05, 13534.87200689], [1516442580000, 2.697e-05, 2.697e-05, 2.681e-05, 2.681e-05, 69.58516287], [1516442640000, 2.681e-05, 2.681e-05, 2.675e-05, 2.675e-05, 33575.03074833], [1516442700000, 2.675e-05, 2.697e-05, 2.675e-05, 2.675e-05, 12026.18682746], [1516442760000, 2.675e-05, 2.675e-05, 2.661e-05, 2.661e-05, 79812.83970944], [1516442820000, 2.662e-05, 2.698e-05, 2.662e-05, 2.695e-05, 697.20137137], [1516442880000, 2.672e-05, 2.695e-05, 2.67e-05, 2.695e-05, 1727.96855396], [1516442940000, 2.67e-05, 2.67e-05, 2.67e-05, 2.67e-05, 375.48133098], [1516443000000, 2.67e-05, 2.677e-05, 2.67e-05, 2.672e-05, 801.59219353], [1516443060000, 2.677e-05, 2.677e-05, 2.664e-05, 2.664e-05, 1253.57517883], [1516443120000, 2.665e-05, 2.693e-05, 2.664e-05, 2.693e-05, 1498.75961465], [1516443240000, 2.68e-05, 2.693e-05, 2.68e-05, 2.693e-05, 2999.76389768], [1516443300000, 2.691e-05, 2.693e-05, 2.691e-05, 2.693e-05, 12252.10766985], [1516443360000, 2.693e-05, 2.725e-05, 2.693e-05, 2.725e-05, 24048.98542261], [1516443420000, 2.72e-05, 2.721e-05, 2.719e-05, 2.719e-05, 19964.83610292], [1516443480000, 2.72e-05, 2.72e-05, 2.719e-05, 2.719e-05, 21511.41817771], [1516443540000, 2.719e-05, 2.721e-05, 2.719e-05, 2.721e-05, 29265.33676349], [1516443600000, 2.72e-05, 2.721e-05, 2.719e-05, 2.719e-05, 32696.029215], [1516443660000, 2.72e-05, 2.721e-05, 2.719e-05, 2.719e-05, 10343.47950539], [1516443720000, 2.72e-05, 2.72e-05, 2.719e-05, 2.719e-05, 2149.34571995], [1516443780000, 2.719e-05, 2.719e-05, 2.719e-05, 2.719e-05, 13588.86151791], [1516443900000, 2.689e-05, 2.718e-05, 2.689e-05, 2.718e-05, 13356.434846], [1516444020000, 2.692e-05, 2.692e-05, 2.691e-05, 2.691e-05, 6100.86361622], [1516444080000, 2.691e-05, 2.692e-05, 2.681e-05, 2.692e-05, 5634.71778475], [1516444140000, 2.693e-05, 2.693e-05, 2.693e-05, 2.693e-05, 270.0], [1516444200000, 2.695e-05, 2.697e-05, 2.695e-05, 2.697e-05, 2518.78403268], [1516444260000, 2.698e-05, 2.698e-05, 2.682e-05, 2.682e-05, 17835.03555334], [1516444320000, 2.682e-05, 2.682e-05, 2.682e-05, 2.682e-05, 1172.89304828], [1516444380000, 2.682e-05, 2.682e-05, 2.682e-05, 2.682e-05, 22717.43607318], [1516444440000, 2.697e-05, 2.697e-05, 2.681e-05, 2.681e-05, 11121.32188227], [1516444500000, 2.681e-05, 2.681e-05, 2.681e-05, 2.681e-05, 30675.21567846], [1516444560000, 2.697e-05, 2.697e-05, 2.697e-05, 2.697e-05, 1293.02077152], [1516444620000, 2.699e-05, 2.699e-05, 2.699e-05, 2.699e-05, 589.32592125], [1516444680000, 2.699e-05, 2.699e-05, 2.686e-05, 2.686e-05, 122.4824648], [1516444740000, 2.709e-05, 2.709e-05, 2.709e-05, 2.709e-05, 486.754908], [1516444800000, 2.709e-05, 2.709e-05, 2.709e-05, 2.709e-05, 1039.795742], [1516444920000, 2.709e-05, 2.709e-05, 2.709e-05, 2.709e-05, 924.38146231], [1516445040000, 2.687e-05, 2.687e-05, 2.686e-05, 2.686e-05, 849.79214594], [1516445160000, 2.686e-05, 2.686e-05, 2.686e-05, 2.686e-05, 6044.81586028], [1516445220000, 2.686e-05, 2.687e-05, 2.682e-05, 2.682e-05, 12092.69307397], [1516445280000, 2.686e-05, 2.686e-05, 2.682e-05, 2.682e-05, 458.35952672], [1516445340000, 2.683e-05, 2.69e-05, 2.683e-05, 2.69e-05, 5176.64302567], [1516445400000, 2.69e-05, 2.69e-05, 2.69e-05, 2.69e-05, 236.77386702], [1516445460000, 2.705e-05, 2.705e-05, 2.704e-05, 2.705e-05, 2258.14104308], [1516445520000, 2.708e-05, 2.708e-05, 2.708e-05, 2.708e-05, 4358.85180147], [1516445580000, 2.71e-05, 2.715e-05, 2.705e-05, 2.713e-05, 1116.44736461], [1516445640000, 2.71e-05, 2.711e-05, 2.71e-05, 2.71e-05, 1190.74806596], [1516445700000, 2.709e-05, 2.709e-05, 2.686e-05, 2.686e-05, 1078.07747697], [1516445760000, 2.686e-05, 2.709e-05, 2.686e-05, 2.709e-05, 105.54127572], [1516445820000, 2.687e-05, 2.687e-05, 2.685e-05, 2.685e-05, 4072.09275262], [1516445880000, 2.685e-05, 2.685e-05, 2.685e-05, 2.685e-05, 7563.00445967], [1516445940000, 2.683e-05, 2.683e-05, 2.683e-05, 2.683e-05, 221.61499713], [1516446000000, 2.685e-05, 2.685e-05, 2.685e-05, 2.685e-05, 4015.08379888], [1516446120000, 2.685e-05, 2.685e-05, 2.684e-05, 2.684e-05, 826.46319086], [1516446180000, 2.685e-05, 2.685e-05, 2.685e-05, 2.685e-05, 1531.53540728], [1516446240000, 2.684e-05, 2.685e-05, 2.684e-05, 2.684e-05, 3563.1533796], [1516446300000, 2.685e-05, 2.705e-05, 2.685e-05, 2.703e-05, 6924.97041676], [1516446360000, 2.708e-05, 2.708e-05, 2.707e-05, 2.707e-05, 1976.06136619], [1516446420000, 2.707e-05, 2.708e-05, 2.707e-05, 2.707e-05, 3351.54442635], [1516446480000, 2.706e-05, 2.707e-05, 2.706e-05, 2.707e-05, 2038.3862209], [1516446540000, 2.706e-05, 2.706e-05, 2.706e-05, 2.706e-05, 367.16920732], [1516446600000, 2.706e-05, 2.706e-05, 2.706e-05, 2.706e-05, 2421.0], [1516446660000, 2.687e-05, 2.687e-05, 2.687e-05, 2.687e-05, 1123.53937902], [1516446720000, 2.699e-05, 2.699e-05, 2.699e-05, 2.699e-05, 83.02385691], [1516446780000, 2.699e-05, 2.699e-05, 2.666e-05, 2.666e-05, 19259.70524217], [1516446840000, 2.674e-05, 2.694e-05, 2.666e-05, 2.666e-05, 1011.39525637], [1516446900000, 2.666e-05, 2.666e-05, 2.666e-05, 2.666e-05, 3155.37094881], [1516446960000, 2.688e-05, 2.688e-05, 2.688e-05, 2.688e-05, 153.90026497], [1516447020000, 2.684e-05, 2.684e-05, 2.68e-05, 2.68e-05, 804.18250944], [1516447080000, 2.68e-05, 2.68e-05, 2.668e-05, 2.668e-05, 515.42524086], [1516447200000, 2.669e-05, 2.68e-05, 2.668e-05, 2.68e-05, 15344.61131593], [1516447260000, 2.68e-05, 2.68e-05, 2.68e-05, 2.68e-05, 4535.59738711], [1516447320000, 2.68e-05, 2.698e-05, 2.68e-05, 2.698e-05, 5466.71853575], [1516447380000, 2.698e-05, 2.698e-05, 2.675e-05, 2.675e-05, 384.96036232], [1516447440000, 2.675e-05, 2.68e-05, 2.675e-05, 2.675e-05, 7126.37752089], [1516447500000, 2.675e-05, 2.675e-05, 2.675e-05, 2.675e-05, 1951.23731586], [1516447560000, 2.675e-05, 2.675e-05, 2.675e-05, 2.675e-05, 3539.77044642], [1516447620000, 2.672e-05, 2.675e-05, 2.671e-05, 2.671e-05, 2108.90699132], [1516447680000, 2.673e-05, 2.68e-05, 2.673e-05, 2.68e-05, 1772.39525108], [1516447740000, 2.682e-05, 2.682e-05, 2.682e-05, 2.682e-05, 500.0], [1516447860000, 2.683e-05, 2.683e-05, 2.683e-05, 2.683e-05, 1000.0], [1516447920000, 2.687e-05, 2.698e-05, 2.687e-05, 2.698e-05, 4344.08137753], [1516447980000, 2.698e-05, 2.698e-05, 2.698e-05, 2.698e-05, 546.73444704], [1516448040000, 2.698e-05, 2.698e-05, 2.698e-05, 2.698e-05, 754.29794215], [1516448160000, 2.697e-05, 2.699e-05, 2.697e-05, 2.698e-05, 2779.58495121], [1516448220000, 2.699e-05, 2.7e-05, 2.698e-05, 2.698e-05, 10049.0981366], [1516448280000, 2.698e-05, 2.698e-05, 2.675e-05, 2.675e-05, 20744.56215834], [1516448340000, 2.684e-05, 2.698e-05, 2.684e-05, 2.698e-05, 3182.10633775], [1516448400000, 2.698e-05, 2.698e-05, 2.686e-05, 2.698e-05, 3053.90638433], [1516448460000, 2.698e-05, 2.7e-05, 2.687e-05, 2.7e-05, 20976.14215789], [1516448520000, 2.7e-05, 2.7e-05, 2.698e-05, 2.7e-05, 3210.52490896], [1516448580000, 2.7e-05, 2.701e-05, 2.7e-05, 2.701e-05, 67.02405475], [1516448640000, 2.701e-05, 2.701e-05, 2.701e-05, 2.701e-05, 274.56576552], [1516448700000, 2.706e-05, 2.706e-05, 2.706e-05, 2.706e-05, 174.99999981], [1516448760000, 2.706e-05, 2.706e-05, 2.7e-05, 2.7e-05, 951.53590859], [1516448880000, 2.705e-05, 2.706e-05, 2.7e-05, 2.7e-05, 1570.63444933], [1516448940000, 2.7e-05, 2.707e-05, 2.7e-05, 2.707e-05, 5024.54719722], [1516449000000, 2.707e-05, 2.707e-05, 2.707e-05, 2.707e-05, 1121.10774684], [1516449060000, 2.707e-05, 2.707e-05, 2.7e-05, 2.7e-05, 11318.81336843], [1516449120000, 2.706e-05, 2.707e-05, 2.706e-05, 2.707e-05, 551.0790495], [1516449180000, 2.707e-05, 2.707e-05, 2.707e-05, 2.707e-05, 6770.25982452], [1516449240000, 2.7e-05, 2.7e-05, 2.698e-05, 2.698e-05, 15030.38567632], [1516449300000, 2.685e-05, 2.685e-05, 2.684e-05, 2.685e-05, 31264.58895755], [1516449360000, 2.685e-05, 2.685e-05, 2.679e-05, 2.679e-05, 4203.75940313], [1516449420000, 2.685e-05, 2.685e-05, 2.67e-05, 2.671e-05, 49732.65181511], [1516449480000, 2.674e-05, 2.674e-05, 2.671e-05, 2.671e-05, 21636.73489945], [1516449540000, 2.671e-05, 2.672e-05, 2.671e-05, 2.672e-05, 5846.86306744], [1516449600000, 2.672e-05, 2.672e-05, 2.672e-05, 2.672e-05, 9961.36810919], [1516449660000, 2.691e-05, 2.691e-05, 2.671e-05, 2.671e-05, 3023.51985375], [1516449720000, 2.691e-05, 2.691e-05, 2.691e-05, 2.691e-05, 3394.0304718], [1516449780000, 2.692e-05, 2.692e-05, 2.691e-05, 2.691e-05, 1616.65518446], [1516449840000, 2.692e-05, 2.692e-05, 2.691e-05, 2.692e-05, 1114.250311], [1516449900000, 2.696e-05, 2.696e-05, 2.696e-05, 2.696e-05, 749.47127364], [1516449960000, 2.694e-05, 2.695e-05, 2.692e-05, 2.692e-05, 4667.40094845], [1516450020000, 2.695e-05, 2.695e-05, 2.691e-05, 2.691e-05, 30269.23810161], [1516450080000, 2.691e-05, 2.691e-05, 2.67e-05, 2.67e-05, 2234.54086849], [1516450200000, 2.671e-05, 2.691e-05, 2.671e-05, 2.671e-05, 16585.35615207], [1516450260000, 2.691e-05, 2.692e-05, 2.691e-05, 2.692e-05, 3705.44663601], [1516450380000, 2.678e-05, 2.678e-05, 2.678e-05, 2.678e-05, 434.5234815], [1516450560000, 2.68e-05, 2.68e-05, 2.68e-05, 2.68e-05, 34.0], [1516450620000, 2.68e-05, 2.693e-05, 2.68e-05, 2.693e-05, 2195.1624557], [1516450680000, 2.694e-05, 2.694e-05, 2.694e-05, 2.694e-05, 133.83162027], [1516450740000, 2.693e-05, 2.693e-05, 2.693e-05, 2.693e-05, 1023.83194778], [1516450800000, 2.693e-05, 2.693e-05, 2.671e-05, 2.671e-05, 65846.9839426], [1516450860000, 2.692e-05, 2.692e-05, 2.671e-05, 2.671e-05, 663.0], [1516450920000, 2.691e-05, 2.691e-05, 2.691e-05, 2.691e-05, 210.91405408], [1516450980000, 2.689e-05, 2.69e-05, 2.689e-05, 2.69e-05, 883.88625241], [1516451100000, 2.672e-05, 2.672e-05, 2.671e-05, 2.671e-05, 1519.86287954], [1516451160000, 2.67e-05, 2.672e-05, 2.67e-05, 2.67e-05, 3575.17315856], [1516451220000, 2.69e-05, 2.69e-05, 2.67e-05, 2.67e-05, 9991.18940192], [1516451280000, 2.67e-05, 2.67e-05, 2.67e-05, 2.67e-05, 1500.0], [1516451340000, 2.69e-05, 2.69e-05, 2.69e-05, 2.69e-05, 335.481154], [1516451400000, 2.689e-05, 2.689e-05, 2.689e-05, 2.689e-05, 480.3387589], [1516451460000, 2.689e-05, 2.689e-05, 2.67e-05, 2.67e-05, 2161.75296402], [1516451520000, 2.67e-05, 2.67e-05, 2.67e-05, 2.67e-05, 3597.04805633], [1516451640000, 2.671e-05, 2.671e-05, 2.67e-05, 2.67e-05, 838.91119851], [1516451700000, 2.67e-05, 2.67e-05, 2.668e-05, 2.67e-05, 6534.84574288], [1516451820000, 2.675e-05, 2.675e-05, 2.675e-05, 2.675e-05, 44.42798963], [1516451880000, 2.675e-05, 2.675e-05, 2.675e-05, 2.675e-05, 107.0], [1516451940000, 2.671e-05, 2.671e-05, 2.671e-05, 2.671e-05, 100.0], [1516452000000, 2.674e-05, 2.674e-05, 2.674e-05, 2.674e-05, 65.0], [1516452060000, 2.674e-05, 2.674e-05, 2.674e-05, 2.674e-05, 188.18415859], [1516452120000, 2.674e-05, 2.674e-05, 2.674e-05, 2.674e-05, 1340.71491875], [1516452180000, 2.674e-05, 2.674e-05, 2.672e-05, 2.672e-05, 700.0], [1516452240000, 2.672e-05, 2.672e-05, 2.67e-05, 2.67e-05, 30061.78306121], [1516452300000, 2.67e-05, 2.674e-05, 2.67e-05, 2.674e-05, 369.53327293], [1516452360000, 2.673e-05, 2.674e-05, 2.673e-05, 2.674e-05, 1272.0], [1516452480000, 2.674e-05, 2.674e-05, 2.668e-05, 2.674e-05, 8406.99914247], [1516452540000, 2.677e-05, 2.677e-05, 2.668e-05, 2.668e-05, 1449.95336257], [1516452600000, 2.668e-05, 2.668e-05, 2.668e-05, 2.668e-05, 91.96703497], [1516452720000, 2.668e-05, 2.673e-05, 2.668e-05, 2.673e-05, 2574.72700833], [1516452780000, 2.688e-05, 2.688e-05, 2.674e-05, 2.674e-05, 320.43878299], [1516452840000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 152.28589224], [1516452900000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 26.22447019], [1516452960000, 2.669e-05, 2.669e-05, 2.668e-05, 2.669e-05, 167.97334153], [1516453020000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 277.54425175], [1516453080000, 2.674e-05, 2.674e-05, 2.674e-05, 2.674e-05, 34.07095525], [1516453140000, 2.674e-05, 2.674e-05, 2.674e-05, 2.674e-05, 1898.39352321], [1516453200000, 2.674e-05, 2.674e-05, 2.674e-05, 2.674e-05, 1040.03843929], [1516453260000, 2.674e-05, 2.689e-05, 2.674e-05, 2.674e-05, 2219.21191421], [1516453320000, 2.682e-05, 2.682e-05, 2.674e-05, 2.674e-05, 193.80846204], [1516453380000, 2.689e-05, 2.689e-05, 2.689e-05, 2.689e-05, 1600.0], [1516453440000, 2.689e-05, 2.689e-05, 2.689e-05, 2.689e-05, 118.46743565], [1516453500000, 2.689e-05, 2.689e-05, 2.675e-05, 2.675e-05, 1371.17943194], [1516453560000, 2.675e-05, 2.689e-05, 2.675e-05, 2.689e-05, 617.81766844], [1516453620000, 2.674e-05, 2.674e-05, 2.674e-05, 2.674e-05, 100.0], [1516453680000, 2.674e-05, 2.674e-05, 2.674e-05, 2.674e-05, 1997.69396087], [1516453800000, 2.674e-05, 2.688e-05, 2.674e-05, 2.688e-05, 14835.1011201], [1516453860000, 2.688e-05, 2.688e-05, 2.688e-05, 2.688e-05, 205.66565126], [1516453980000, 2.688e-05, 2.688e-05, 2.688e-05, 2.688e-05, 30.0], [1516454040000, 2.688e-05, 2.688e-05, 2.688e-05, 2.688e-05, 338.471035], [1516454100000, 2.688e-05, 2.688e-05, 2.677e-05, 2.677e-05, 376.568463], [1516454220000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 188.56332703], [1516454280000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 421.0462677], [1516454340000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 4267.98124265], [1516454460000, 2.678e-05, 2.678e-05, 2.678e-05, 2.678e-05, 631.63637717], [1516454520000, 2.679e-05, 2.679e-05, 2.679e-05, 2.679e-05, 364.61723387], [1516454580000, 2.686e-05, 2.686e-05, 2.686e-05, 2.686e-05, 74.2740134], [1516454640000, 2.686e-05, 2.686e-05, 2.686e-05, 2.686e-05, 1365.0616571], [1516454700000, 2.68e-05, 2.68e-05, 2.68e-05, 2.68e-05, 3108.57017903], [1516454760000, 2.68e-05, 2.68e-05, 2.678e-05, 2.679e-05, 7920.41413038], [1516454820000, 2.677e-05, 2.678e-05, 2.677e-05, 2.677e-05, 19494.50863733], [1516454880000, 2.687e-05, 2.687e-05, 2.687e-05, 2.687e-05, 1767.72614594], [1516454940000, 2.687e-05, 2.687e-05, 2.678e-05, 2.687e-05, 2387.27905091], [1516455000000, 2.687e-05, 2.687e-05, 2.677e-05, 2.677e-05, 5310.53293449], [1516455060000, 2.677e-05, 2.687e-05, 2.677e-05, 2.687e-05, 11312.6466468], [1516455300000, 2.687e-05, 2.687e-05, 2.687e-05, 2.687e-05, 2142.25432167], [1516455360000, 2.687e-05, 2.689e-05, 2.687e-05, 2.689e-05, 19151.80964319], [1516455540000, 2.689e-05, 2.689e-05, 2.679e-05, 2.679e-05, 1081.52010257], [1516455660000, 2.678e-05, 2.689e-05, 2.671e-05, 2.671e-05, 6004.28101512], [1516455780000, 2.672e-05, 2.672e-05, 2.671e-05, 2.671e-05, 4376.88678525], [1516455840000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 157.6154406], [1516455900000, 2.667e-05, 2.669e-05, 2.667e-05, 2.669e-05, 14685.73012633], [1516456020000, 2.67e-05, 2.671e-05, 2.669e-05, 2.671e-05, 1024.41556808], [1516456080000, 2.67e-05, 2.671e-05, 2.67e-05, 2.671e-05, 212.68356097], [1516456140000, 2.67e-05, 2.67e-05, 2.669e-05, 2.669e-05, 4300.03781794], [1516456200000, 2.67e-05, 2.67e-05, 2.67e-05, 2.67e-05, 1000.0], [1516456320000, 2.671e-05, 2.671e-05, 2.67e-05, 2.67e-05, 706.24857179], [1516456380000, 2.671e-05, 2.671e-05, 2.666e-05, 2.666e-05, 7186.04962302], [1516456440000, 2.666e-05, 2.666e-05, 2.666e-05, 2.666e-05, 1007.27371463], [1516456560000, 2.671e-05, 2.671e-05, 2.666e-05, 2.666e-05, 6209.66297336], [1516456620000, 2.666e-05, 2.666e-05, 2.666e-05, 2.666e-05, 12529.20864785], [1516456680000, 2.666e-05, 2.68e-05, 2.666e-05, 2.68e-05, 12586.7203638], [1516456740000, 2.666e-05, 2.68e-05, 2.666e-05, 2.68e-05, 8231.58318053], [1516456800000, 2.68e-05, 2.689e-05, 2.68e-05, 2.689e-05, 8252.75788138], [1516456860000, 2.688e-05, 2.688e-05, 2.666e-05, 2.666e-05, 1392.52380415], [1516456920000, 2.667e-05, 2.668e-05, 2.667e-05, 2.668e-05, 4674.1570471], [1516456980000, 2.667e-05, 2.667e-05, 2.665e-05, 2.665e-05, 36410.41160851], [1516457040000, 2.661e-05, 2.661e-05, 2.661e-05, 2.661e-05, 441.93153648], [1516457100000, 2.665e-05, 2.665e-05, 2.665e-05, 2.665e-05, 4783.64232007], [1516457160000, 2.688e-05, 2.689e-05, 2.688e-05, 2.689e-05, 6452.62386874], [1516457220000, 2.672e-05, 2.672e-05, 2.669e-05, 2.669e-05, 5595.3317175], [1516457280000, 2.67e-05, 2.67e-05, 2.669e-05, 2.669e-05, 941.57172747], [1516457340000, 2.669e-05, 2.669e-05, 2.667e-05, 2.667e-05, 2033.63787652], [1516457400000, 2.668e-05, 2.668e-05, 2.667e-05, 2.667e-05, 1055.82265831], [1516457460000, 2.685e-05, 2.688e-05, 2.685e-05, 2.688e-05, 314.22615085], [1516457520000, 2.688e-05, 2.688e-05, 2.667e-05, 2.667e-05, 37991.90774657], [1516457580000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 162.0], [1516457640000, 2.668e-05, 2.669e-05, 2.668e-05, 2.669e-05, 4624.707832], [1516457700000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 67.31958132], [1516457760000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 340.0627646], [1516457880000, 2.685e-05, 2.687e-05, 2.679e-05, 2.687e-05, 7407.67594261], [1516457940000, 2.671e-05, 2.671e-05, 2.669e-05, 2.671e-05, 10168.05299265], [1516458060000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 1447.7244], [1516458240000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 5797.5175353], [1516458300000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 9202.4824647], [1516458360000, 2.669e-05, 2.669e-05, 2.668e-05, 2.668e-05, 1871.63453373], [1516458420000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 312.16291855], [1516458480000, 2.669e-05, 2.669e-05, 2.668e-05, 2.668e-05, 3334.15084847], [1516458540000, 2.668e-05, 2.671e-05, 2.668e-05, 2.671e-05, 2363.58013244], [1516458600000, 2.668e-05, 2.668e-05, 2.668e-05, 2.668e-05, 19181.84744631], [1516458660000, 2.668e-05, 2.668e-05, 2.667e-05, 2.667e-05, 2061.45135019], [1516458720000, 2.668e-05, 2.668e-05, 2.668e-05, 2.668e-05, 8176.19332478], [1516458780000, 2.667e-05, 2.667e-05, 2.667e-05, 2.667e-05, 324.42008733], [1516458840000, 2.667e-05, 2.668e-05, 2.667e-05, 2.668e-05, 3635.85100569], [1516458900000, 2.668e-05, 2.671e-05, 2.668e-05, 2.668e-05, 2063.56920721], [1516458960000, 2.666e-05, 2.666e-05, 2.666e-05, 2.666e-05, 507.66485574], [1516459080000, 2.667e-05, 2.667e-05, 2.667e-05, 2.667e-05, 400.0], [1516459200000, 2.667e-05, 2.667e-05, 2.667e-05, 2.667e-05, 70.0], [1516459260000, 2.669e-05, 2.675e-05, 2.669e-05, 2.675e-05, 5309.81744711], [1516459320000, 2.675e-05, 2.675e-05, 2.675e-05, 2.675e-05, 1864.485981], [1516459380000, 2.677e-05, 2.677e-05, 2.671e-05, 2.671e-05, 2206.29717904], [1516459440000, 2.671e-05, 2.671e-05, 2.671e-05, 2.671e-05, 14496.60163958], [1516459560000, 2.668e-05, 2.67e-05, 2.668e-05, 2.668e-05, 337.73832244], [1516459620000, 2.668e-05, 2.67e-05, 2.668e-05, 2.67e-05, 5114.99925849], [1516459680000, 2.67e-05, 2.67e-05, 2.67e-05, 2.67e-05, 450.151003], [1516459740000, 2.668e-05, 2.668e-05, 2.668e-05, 2.668e-05, 620.65514812], [1516459860000, 2.668e-05, 2.668e-05, 2.668e-05, 2.668e-05, 25.0], [1516459920000, 2.668e-05, 2.668e-05, 2.667e-05, 2.667e-05, 503.06735258], [1516459980000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 200.0], [1516460040000, 2.669e-05, 2.669e-05, 2.669e-05, 2.669e-05, 373.73548145], [1516460100000, 2.669e-05, 2.676e-05, 2.669e-05, 2.676e-05, 2196.800082], [1516460160000, 2.676e-05, 2.676e-05, 2.676e-05, 2.676e-05, 700.10297926], [1516460280000, 2.676e-05, 2.676e-05, 2.667e-05, 2.667e-05, 1498.12786715], [1516460340000, 2.667e-05, 2.667e-05, 2.666e-05, 2.666e-05, 4000.0], [1516460400000, 2.667e-05, 2.667e-05, 2.666e-05, 2.666e-05, 1000.91660556], [1516460460000, 2.664e-05, 2.666e-05, 2.661e-05, 2.661e-05, 10434.71211888], [1516460520000, 2.661e-05, 2.664e-05, 2.661e-05, 2.664e-05, 236.24201203], [1516460580000, 2.671e-05, 2.671e-05, 2.661e-05, 2.67e-05, 16435.6289078], [1516460700000, 2.661e-05, 2.67e-05, 2.661e-05, 2.67e-05, 6378.23775825], [1516460880000, 2.665e-05, 2.665e-05, 2.665e-05, 2.665e-05, 79.60350022], [1516460940000, 2.665e-05, 2.665e-05, 2.665e-05, 2.665e-05, 1050.15684803], [1516461000000, 2.661e-05, 2.664e-05, 2.661e-05, 2.661e-05, 7053.71425418], [1516461060000, 2.661e-05, 2.661e-05, 2.655e-05, 2.655e-05, 14922.19552604], [1516461120000, 2.655e-05, 2.655e-05, 2.655e-05, 2.655e-05, 470.18457897], [1516461180000, 2.655e-05, 2.655e-05, 2.653e-05, 2.655e-05, 10051.93275456], [1516461240000, 2.653e-05, 2.653e-05, 2.647e-05, 2.65e-05, 16437.74110392], [1516461300000, 2.65e-05, 2.655e-05, 2.65e-05, 2.655e-05, 3816.94295307], [1516461360000, 2.655e-05, 2.67e-05, 2.655e-05, 2.655e-05, 7879.34607381], [1516461420000, 2.669e-05, 2.67e-05, 2.669e-05, 2.669e-05, 3771.80031406], [1516461480000, 2.67e-05, 2.67e-05, 2.67e-05, 2.67e-05, 12931.09777685], [1516461540000, 2.671e-05, 2.671e-05, 2.671e-05, 2.671e-05, 5630.37287946], [1516461660000, 2.671e-05, 2.675e-05, 2.671e-05, 2.671e-05, 10500.23848817], [1516461720000, 2.675e-05, 2.675e-05, 2.671e-05, 2.671e-05, 6143.38337141], [1516461780000, 2.671e-05, 2.688e-05, 2.671e-05, 2.688e-05, 4303.13375229], [1516461840000, 2.67e-05, 2.675e-05, 2.67e-05, 2.675e-05, 523.23797833], [1516461900000, 2.675e-05, 2.675e-05, 2.675e-05, 2.675e-05, 180.0], [1516461960000, 2.675e-05, 2.675e-05, 2.675e-05, 2.675e-05, 4520.64919755], [1516462020000, 2.675e-05, 2.675e-05, 2.675e-05, 2.675e-05, 2212.77047901], [1516462080000, 2.675e-05, 2.675e-05, 2.675e-05, 2.675e-05, 1060.40722257], [1516462140000, 2.675e-05, 2.675e-05, 2.67e-05, 2.67e-05, 9591.76345447], [1516462200000, 2.67e-05, 2.67e-05, 2.67e-05, 2.67e-05, 6447.48995367], [1516462320000, 2.66e-05, 2.66e-05, 2.647e-05, 2.647e-05, 10613.86502299], [1516462380000, 2.648e-05, 2.67e-05, 2.648e-05, 2.67e-05, 7426.96458641], [1516462440000, 2.67e-05, 2.67e-05, 2.643e-05, 2.643e-05, 8419.18193511], [1516462500000, 2.646e-05, 2.67e-05, 2.641e-05, 2.67e-05, 10200.0], [1516462560000, 2.642e-05, 2.656e-05, 2.642e-05, 2.656e-05, 510.95676191], [1516462620000, 2.656e-05, 2.669e-05, 2.656e-05, 2.669e-05, 1160.59230899], [1516462680000, 2.656e-05, 2.656e-05, 2.642e-05, 2.642e-05, 6879.52993135], [1516462860000, 2.656e-05, 2.658e-05, 2.656e-05, 2.658e-05, 5087.79270648], [1516462920000, 2.658e-05, 2.687e-05, 2.656e-05, 2.656e-05, 7675.56710364], [1516462980000, 2.674e-05, 2.674e-05, 2.674e-05, 2.674e-05, 260.51358], [1516463100000, 2.674e-05, 2.674e-05, 2.662e-05, 2.662e-05, 9120.15487661], [1516463160000, 2.663e-05, 2.663e-05, 2.662e-05, 2.662e-05, 5188.49375695], [1516463220000, 2.662e-05, 2.67e-05, 2.662e-05, 2.67e-05, 52.10429072], [1516463280000, 2.67e-05, 2.67e-05, 2.662e-05, 2.662e-05, 8075.45676205], [1516463340000, 2.662e-05, 2.663e-05, 2.662e-05, 2.662e-05, 8914.62314222], [1516463400000, 2.661e-05, 2.661e-05, 2.659e-05, 2.659e-05, 7347.95497191], [1516463460000, 2.659e-05, 2.67e-05, 2.659e-05, 2.67e-05, 9924.09231495], [1516463520000, 2.67e-05, 2.684e-05, 2.67e-05, 2.684e-05, 4513.75960506], [1516463580000, 2.663e-05, 2.663e-05, 2.663e-05, 2.663e-05, 1480.37439687], [1516463640000, 2.663e-05, 2.663e-05, 2.663e-05, 2.663e-05, 9477.38799313], [1516463700000, 2.662e-05, 2.663e-05, 2.662e-05, 2.663e-05, 717.50653609], [1516463760000, 2.665e-05, 2.666e-05, 2.662e-05, 2.662e-05, 11769.12325398], [1516463820000, 2.662e-05, 2.662e-05, 2.662e-05, 2.662e-05, 1578.57425576], [1516463880000, 2.682e-05, 2.682e-05, 2.682e-05, 2.682e-05, 72.21824026], [1516464180000, 2.68e-05, 2.68e-05, 2.68e-05, 2.68e-05, 106.80463021], [1516464240000, 2.68e-05, 2.68e-05, 2.68e-05, 2.68e-05, 282.03543573], [1516464300000, 2.68e-05, 2.68e-05, 2.667e-05, 2.667e-05, 368.96411474], [1516464360000, 2.667e-05, 2.667e-05, 2.667e-05, 2.667e-05, 361.0], [1516464420000, 2.679e-05, 2.679e-05, 2.679e-05, 2.679e-05, 1720.13471645], [1516464540000, 2.67e-05, 2.67e-05, 2.667e-05, 2.67e-05, 3424.80114631], [1516464600000, 2.667e-05, 2.669e-05, 2.667e-05, 2.669e-05, 3727.67766397], [1516464660000, 2.679e-05, 2.679e-05, 2.67e-05, 2.67e-05, 5759.82631989], [1516464720000, 2.68e-05, 2.68e-05, 2.68e-05, 2.68e-05, 1390.7074287], [1516464780000, 2.68e-05, 2.68e-05, 2.68e-05, 2.68e-05, 16495.42560981], [1516464840000, 2.68e-05, 2.688e-05, 2.679e-05, 2.685e-05, 17451.35819176], [1516464900000, 2.688e-05, 2.688e-05, 2.669e-05, 2.669e-05, 21223.32603835], [1516465020000, 2.68e-05, 2.68e-05, 2.667e-05, 2.667e-05, 11148.66793134], [1516465080000, 2.663e-05, 2.663e-05, 2.662e-05, 2.662e-05, 9525.77708275], [1516465140000, 2.663e-05, 2.663e-05, 2.662e-05, 2.662e-05, 6100.0], [1516465260000, 2.663e-05, 2.663e-05, 2.663e-05, 2.663e-05, 25.0], [1516465380000, 2.665e-05, 2.665e-05, 2.665e-05, 2.665e-05, 1116.49477901], [1516465440000, 2.665e-05, 2.665e-05, 2.665e-05, 2.665e-05, 1539.31088808], [1516465500000, 2.67e-05, 2.67e-05, 2.666e-05, 2.666e-05, 2053.41564517], [1516465560000, 2.666e-05, 2.666e-05, 2.666e-05, 2.666e-05, 60.0], [1516465620000, 2.67e-05, 2.67e-05, 2.67e-05, 2.67e-05, 500.0], [1516465680000, 2.67e-05, 2.67e-05, 2.67e-05, 2.67e-05, 356.62304911], [1516465740000, 2.67e-05, 2.689e-05, 2.67e-05, 2.689e-05, 5811.85963292], [1516465800000, 2.685e-05, 2.689e-05, 2.685e-05, 2.689e-05, 6895.41603862], [1516465860000, 2.689e-05, 2.689e-05, 2.689e-05, 2.689e-05, 24638.824557], [1516465920000, 2.69e-05, 2.69e-05, 2.685e-05, 2.685e-05, 16038.79964165], [1516465980000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 63.73007751], [1516466040000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 2008.09296278], [1516466100000, 2.678e-05, 2.678e-05, 2.678e-05, 2.678e-05, 1350.13992291], [1516466160000, 2.679e-05, 2.699e-05, 2.678e-05, 2.699e-05, 5611.69111534], [1516466220000, 2.699e-05, 2.699e-05, 2.678e-05, 2.678e-05, 5425.27483424], [1516466280000, 2.678e-05, 2.678e-05, 2.678e-05, 2.678e-05, 3771.84237003], [1516466340000, 2.678e-05, 2.678e-05, 2.678e-05, 2.678e-05, 388.56003069], [1516466400000, 2.678e-05, 2.678e-05, 2.678e-05, 2.678e-05, 399.49457491], [1516466520000, 2.68e-05, 2.699e-05, 2.68e-05, 2.699e-05, 1928.96700303], [1516466580000, 2.699e-05, 2.7e-05, 2.699e-05, 2.7e-05, 10100.0], [1516466640000, 2.699e-05, 2.699e-05, 2.699e-05, 2.699e-05, 43.4055998], [1516466820000, 2.699e-05, 2.7e-05, 2.699e-05, 2.699e-05, 1271.12304952], [1516466880000, 2.699e-05, 2.699e-05, 2.699e-05, 2.699e-05, 52.583279], [1516466940000, 2.68e-05, 2.68e-05, 2.68e-05, 2.68e-05, 644.940919], [1516467000000, 2.68e-05, 2.68e-05, 2.68e-05, 2.68e-05, 239.73992848], [1516467060000, 2.68e-05, 2.7e-05, 2.68e-05, 2.7e-05, 2230.61878348], [1516467120000, 2.7e-05, 2.705e-05, 2.685e-05, 2.685e-05, 2091.78158942], [1516467180000, 2.684e-05, 2.685e-05, 2.684e-05, 2.685e-05, 2824.3083167], [1516467240000, 2.704e-05, 2.704e-05, 2.704e-05, 2.704e-05, 941.72053172], [1516467300000, 2.703e-05, 2.703e-05, 2.682e-05, 2.682e-05, 231.2443948], [1516467360000, 2.694e-05, 2.694e-05, 2.694e-05, 2.694e-05, 26.48190289], [1516467420000, 2.694e-05, 2.701e-05, 2.694e-05, 2.701e-05, 278.80285937], [1516467480000, 2.692e-05, 2.705e-05, 2.692e-05, 2.705e-05, 4848.44072448], [1516467540000, 2.709e-05, 2.713e-05, 2.709e-05, 2.713e-05, 21766.55155679], [1516467600000, 2.713e-05, 2.72e-05, 2.713e-05, 2.72e-05, 13458.23304944], [1516467660000, 2.719e-05, 2.72e-05, 2.713e-05, 2.713e-05, 9965.53716179], [1516467720000, 2.705e-05, 2.74e-05, 2.705e-05, 2.74e-05, 50565.72118988], [1516467780000, 2.74e-05, 2.77e-05, 2.715e-05, 2.72e-05, 54036.33045391], [1516467840000, 2.723e-05, 2.748e-05, 2.723e-05, 2.74e-05, 3780.27850649], [1516467900000, 2.749e-05, 2.77e-05, 2.741e-05, 2.77e-05, 20813.91150464], [1516467960000, 2.768e-05, 2.77e-05, 2.751e-05, 2.751e-05, 74569.88284399], [1516468020000, 2.76e-05, 2.76e-05, 2.753e-05, 2.753e-05, 3950.78086808], [1516468080000, 2.757e-05, 2.759e-05, 2.754e-05, 2.759e-05, 5705.77004539], [1516468140000, 2.754e-05, 2.754e-05, 2.752e-05, 2.752e-05, 162.89689474], [1516468200000, 2.752e-05, 2.76e-05, 2.752e-05, 2.76e-05, 11836.33749861], [1516468260000, 2.76e-05, 2.76e-05, 2.76e-05, 2.76e-05, 2478.68402269], [1516468320000, 2.76e-05, 2.766e-05, 2.76e-05, 2.766e-05, 4679.624892], [1516468380000, 2.766e-05, 2.766e-05, 2.766e-05, 2.766e-05, 562.0], [1516468440000, 2.766e-05, 2.77e-05, 2.766e-05, 2.766e-05, 7842.92870683], [1516468500000, 2.766e-05, 2.774e-05, 2.766e-05, 2.774e-05, 4452.78043253], [1516468560000, 2.774e-05, 2.774e-05, 2.77e-05, 2.77e-05, 5071.00982939], [1516468620000, 2.77e-05, 2.773e-05, 2.77e-05, 2.773e-05, 1922.32455284], [1516468680000, 2.77e-05, 2.78e-05, 2.756e-05, 2.78e-05, 29182.99299138], [1516468740000, 2.781e-05, 2.783e-05, 2.771e-05, 2.783e-05, 22739.79581288], [1516468800000, 2.783e-05, 2.783e-05, 2.764e-05, 2.783e-05, 34916.23905133], [1516468860000, 2.782e-05, 2.782e-05, 2.781e-05, 2.782e-05, 12433.34656863], [1516468920000, 2.764e-05, 2.782e-05, 2.764e-05, 2.782e-05, 3751.82165618], [1516468980000, 2.781e-05, 2.782e-05, 2.76e-05, 2.765e-05, 2186.52878869], [1516469040000, 2.782e-05, 2.782e-05, 2.78e-05, 2.78e-05, 1411.40279244], [1516469100000, 2.78e-05, 2.78e-05, 2.756e-05, 2.767e-05, 1810.85493764], [1516469160000, 2.768e-05, 2.768e-05, 2.757e-05, 2.767e-05, 27385.89999606], [1516469220000, 2.766e-05, 2.767e-05, 2.756e-05, 2.756e-05, 344.20265599], [1516469280000, 2.756e-05, 2.756e-05, 2.738e-05, 2.738e-05, 7176.83441651], [1516469340000, 2.74e-05, 2.74e-05, 2.738e-05, 2.738e-05, 20714.34953639], [1516469400000, 2.738e-05, 2.747e-05, 2.738e-05, 2.738e-05, 49426.24277954], [1516469460000, 2.738e-05, 2.747e-05, 2.738e-05, 2.738e-05, 1247.94373551], [1516469520000, 2.738e-05, 2.738e-05, 2.738e-05, 2.738e-05, 1743.397541], [1516469580000, 2.738e-05, 2.766e-05, 2.737e-05, 2.766e-05, 6947.68192372], [1516469640000, 2.766e-05, 2.766e-05, 2.741e-05, 2.744e-05, 47025.09343323], [1516469700000, 2.766e-05, 2.766e-05, 2.766e-05, 2.766e-05, 90.38322487], [1516469760000, 2.76e-05, 2.781e-05, 2.76e-05, 2.778e-05, 19731.24062704], [1516469820000, 2.778e-05, 2.782e-05, 2.778e-05, 2.781e-05, 7329.66635675], [1516469880000, 2.774e-05, 2.774e-05, 2.766e-05, 2.773e-05, 842.9896628], [1516469940000, 2.773e-05, 2.783e-05, 2.773e-05, 2.782e-05, 23145.61429301], [1516470000000, 2.782e-05, 2.782e-05, 2.781e-05, 2.781e-05, 1625.85423645], [1516470060000, 2.78e-05, 2.781e-05, 2.78e-05, 2.781e-05, 4715.03084757], [1516470180000, 2.78e-05, 2.78e-05, 2.78e-05, 2.78e-05, 101.98722466], [1516470240000, 2.78e-05, 2.78e-05, 2.766e-05, 2.78e-05, 4889.47770833], [1516470300000, 2.766e-05, 2.766e-05, 2.766e-05, 2.766e-05, 138.13127738], [1516470360000, 2.762e-05, 2.766e-05, 2.762e-05, 2.762e-05, 1178.06542957], [1516470420000, 2.765e-05, 2.766e-05, 2.765e-05, 2.766e-05, 249.22898966], [1516470480000, 2.779e-05, 2.78e-05, 2.767e-05, 2.78e-05, 4144.6027242], [1516470540000, 2.768e-05, 2.768e-05, 2.768e-05, 2.768e-05, 7879.06707201], [1516470600000, 2.767e-05, 2.78e-05, 2.767e-05, 2.78e-05, 469.87199802], [1516470660000, 2.779e-05, 2.779e-05, 2.767e-05, 2.767e-05, 70.0], [1516470720000, 2.774e-05, 2.779e-05, 2.767e-05, 2.767e-05, 872.72638617], [1516470780000, 2.774e-05, 2.78e-05, 2.774e-05, 2.78e-05, 36791.55430902], [1516470840000, 2.78e-05, 2.78e-05, 2.78e-05, 2.78e-05, 355.87175989], [1516470960000, 2.779e-05, 2.779e-05, 2.779e-05, 2.779e-05, 2198.193119], [1516471020000, 2.779e-05, 2.78e-05, 2.779e-05, 2.78e-05, 10722.44797805], [1516471080000, 2.779e-05, 2.782e-05, 2.77e-05, 2.782e-05, 48072.56920788], [1516471140000, 2.782e-05, 2.782e-05, 2.782e-05, 2.782e-05, 38.1557376], [1516471200000, 2.782e-05, 2.782e-05, 2.772e-05, 2.782e-05, 1004.37697966], [1516471260000, 2.782e-05, 2.782e-05, 2.772e-05, 2.772e-05, 4334.22969229], [1516471320000, 2.78e-05, 2.78e-05, 2.779e-05, 2.779e-05, 7507.7884705], [1516471380000, 2.779e-05, 2.779e-05, 2.777e-05, 2.778e-05, 2082.21742742], [1516471440000, 2.778e-05, 2.778e-05, 2.777e-05, 2.778e-05, 3062.08216975], [1516471500000, 2.778e-05, 2.781e-05, 2.778e-05, 2.781e-05, 5149.39959488], [1516471560000, 2.778e-05, 2.778e-05, 2.778e-05, 2.778e-05, 150.0], [1516471620000, 2.777e-05, 2.778e-05, 2.777e-05, 2.778e-05, 5364.78257542], [1516471680000, 2.778e-05, 2.778e-05, 2.778e-05, 2.778e-05, 3041.6585499], [1516471740000, 2.78e-05, 2.78e-05, 2.767e-05, 2.767e-05, 4920.04204279], [1516471800000, 2.77e-05, 2.77e-05, 2.767e-05, 2.767e-05, 7798.92145284], [1516471860000, 2.766e-05, 2.766e-05, 2.766e-05, 2.766e-05, 100.0], [1516471920000, 2.766e-05, 2.766e-05, 2.761e-05, 2.761e-05, 7547.42499132], [1516471980000, 2.761e-05, 2.761e-05, 2.75e-05, 2.75e-05, 111.12821442], [1516472040000, 2.758e-05, 2.758e-05, 2.758e-05, 2.758e-05, 76.24264988], [1516472160000, 2.758e-05, 2.758e-05, 2.755e-05, 2.757e-05, 905.06025577], [1516472280000, 2.75e-05, 2.757e-05, 2.75e-05, 2.75e-05, 2753.38964026], [1516472340000, 2.75e-05, 2.75e-05, 2.75e-05, 2.75e-05, 1526.63969443], [1516472400000, 2.745e-05, 2.745e-05, 2.745e-05, 2.745e-05, 738.67048234], [1516472460000, 2.745e-05, 2.745e-05, 2.745e-05, 2.745e-05, 72.85974499], [1516472520000, 2.739e-05, 2.739e-05, 2.703e-05, 2.727e-05, 9956.67060473], [1516472580000, 2.722e-05, 2.727e-05, 2.703e-05, 2.722e-05, 8445.83520385], [1516472640000, 2.722e-05, 2.722e-05, 2.722e-05, 2.722e-05, 183.152623], [1516472700000, 2.714e-05, 2.722e-05, 2.71e-05, 2.715e-05, 24981.83894124], [1516472760000, 2.707e-05, 2.707e-05, 2.706e-05, 2.706e-05, 16397.04701585], [1516472820000, 2.706e-05, 2.707e-05, 2.706e-05, 2.707e-05, 1015.87464538], [1516472880000, 2.725e-05, 2.725e-05, 2.708e-05, 2.708e-05, 1361.28514307], [1516473000000, 2.711e-05, 2.711e-05, 2.711e-05, 2.711e-05, 758.0], [1516473060000, 2.711e-05, 2.711e-05, 2.711e-05, 2.711e-05, 912.76680355], [1516473120000, 2.722e-05, 2.722e-05, 2.714e-05, 2.714e-05, 1040.92122302], [1516473180000, 2.725e-05, 2.725e-05, 2.725e-05, 2.725e-05, 142.49279039], [1516473240000, 2.726e-05, 2.726e-05, 2.712e-05, 2.714e-05, 4939.65991529], [1516473360000, 2.726e-05, 2.726e-05, 2.726e-05, 2.726e-05, 50.0], [1516473420000, 2.743e-05, 2.743e-05, 2.734e-05, 2.734e-05, 7791.40421563], [1516473480000, 2.734e-05, 2.743e-05, 2.734e-05, 2.743e-05, 1789.53186107], [1516473540000, 2.735e-05, 2.743e-05, 2.735e-05, 2.743e-05, 973.66482504], [1516473600000, 2.735e-05, 2.75e-05, 2.735e-05, 2.75e-05, 5313.25777711], [1516473660000, 2.75e-05, 2.75e-05, 2.75e-05, 2.75e-05, 7751.88020941], [1516473720000, 2.754e-05, 2.757e-05, 2.754e-05, 2.755e-05, 150.0], [1516473780000, 2.75e-05, 2.751e-05, 2.75e-05, 2.75e-05, 4346.98263053], [1516473840000, 2.75e-05, 2.75e-05, 2.75e-05, 2.75e-05, 1281.09146547], [1516474020000, 2.749e-05, 2.749e-05, 2.749e-05, 2.749e-05, 506.771116], [1516474080000, 2.737e-05, 2.749e-05, 2.718e-05, 2.749e-05, 5497.131551], [1516474200000, 2.746e-05, 2.747e-05, 2.746e-05, 2.746e-05, 2586.75732925], [1516474320000, 2.74e-05, 2.74e-05, 2.72e-05, 2.72e-05, 8063.17320754], [1516474380000, 2.72e-05, 2.72e-05, 2.72e-05, 2.72e-05, 44.85294138], [1516474440000, 2.745e-05, 2.762e-05, 2.745e-05, 2.762e-05, 10164.49762226], [1516474620000, 2.75e-05, 2.752e-05, 2.73e-05, 2.73e-05, 5382.33329933], [1516474740000, 2.73e-05, 2.73e-05, 2.73e-05, 2.73e-05, 216.72850839], [1516474800000, 2.724e-05, 2.724e-05, 2.722e-05, 2.722e-05, 179.72681524], [1516474860000, 2.722e-05, 2.73e-05, 2.722e-05, 2.73e-05, 3131.43493534], [1516474920000, 2.73e-05, 2.73e-05, 2.73e-05, 2.73e-05, 2220.93503741], [1516474980000, 2.722e-05, 2.722e-05, 2.721e-05, 2.722e-05, 1988.59243757], [1516475040000, 2.73e-05, 2.73e-05, 2.73e-05, 2.73e-05, 8265.57292308], [1516475100000, 2.723e-05, 2.723e-05, 2.721e-05, 2.721e-05, 3256.71289402], [1516475220000, 2.721e-05, 2.729e-05, 2.72e-05, 2.729e-05, 1873.375], [1516475340000, 2.729e-05, 2.729e-05, 2.729e-05, 2.729e-05, 48.48704606], [1516475400000, 2.721e-05, 2.722e-05, 2.721e-05, 2.722e-05, 2202.96177495], [1516475460000, 2.722e-05, 2.75e-05, 2.722e-05, 2.75e-05, 26716.67522103], [1516475640000, 2.73e-05, 2.73e-05, 2.73e-05, 2.73e-05, 28.29519667], [1516475700000, 2.73e-05, 2.73e-05, 2.73e-05, 2.73e-05, 2377.75886249], [1516475880000, 2.73e-05, 2.73e-05, 2.73e-05, 2.73e-05, 200.0], [1516475940000, 2.749e-05, 2.749e-05, 2.749e-05, 2.749e-05, 1350.0], [1516476060000, 2.745e-05, 2.745e-05, 2.745e-05, 2.745e-05, 100.0], [1516476120000, 2.745e-05, 2.745e-05, 2.745e-05, 2.745e-05, 626.77595628], [1516476180000, 2.745e-05, 2.745e-05, 2.745e-05, 2.745e-05, 140.94617964], [1516476240000, 2.745e-05, 2.747e-05, 2.745e-05, 2.747e-05, 4684.37455986], [1516476300000, 2.745e-05, 2.747e-05, 2.745e-05, 2.747e-05, 4163.93594646], [1516476360000, 2.747e-05, 2.747e-05, 2.747e-05, 2.747e-05, 5385.81769932], [1516476480000, 2.745e-05, 2.746e-05, 2.745e-05, 2.746e-05, 5641.12702438], [1516476540000, 2.746e-05, 2.746e-05, 2.732e-05, 2.732e-05, 1090.30464486], [1516476660000, 2.746e-05, 2.746e-05, 2.746e-05, 2.746e-05, 1168.0118106], [1516476720000, 2.746e-05, 2.747e-05, 2.746e-05, 2.747e-05, 4403.77893636], [1516476840000, 2.747e-05, 2.747e-05, 2.746e-05, 2.747e-05, 2718.78275667], [1516476900000, 2.747e-05, 2.747e-05, 2.747e-05, 2.747e-05, 33.60598198], [1516476960000, 2.732e-05, 2.732e-05, 2.732e-05, 2.732e-05, 44.669446], [1516477020000, 2.745e-05, 2.745e-05, 2.745e-05, 2.745e-05, 100.0], [1516477080000, 2.745e-05, 2.75e-05, 2.741e-05, 2.75e-05, 3520.47436008], [1516477140000, 2.755e-05, 2.766e-05, 2.755e-05, 2.766e-05, 2172.37806845], [1516477200000, 2.763e-05, 2.763e-05, 2.752e-05, 2.762e-05, 1086.9183957], [1516477320000, 2.762e-05, 2.775e-05, 2.762e-05, 2.775e-05, 41454.07013243], [1516477380000, 2.772e-05, 2.772e-05, 2.772e-05, 2.772e-05, 69.82311477], [1516477500000, 2.76e-05, 2.76e-05, 2.76e-05, 2.76e-05, 7881.6158695], [1516477560000, 2.744e-05, 2.76e-05, 2.744e-05, 2.76e-05, 1982.39970536], [1516477620000, 2.76e-05, 2.76e-05, 2.747e-05, 2.76e-05, 1007.81373857], [1516477680000, 2.76e-05, 2.76e-05, 2.759e-05, 2.759e-05, 359.0661478], [1516477740000, 2.76e-05, 2.76e-05, 2.737e-05, 2.76e-05, 12381.1774877], [1516477800000, 2.76e-05, 2.76e-05, 2.742e-05, 2.742e-05, 1079.10681982], [1516477860000, 2.736e-05, 2.76e-05, 2.736e-05, 2.76e-05, 2810.40099926], [1516477920000, 2.76e-05, 2.768e-05, 2.76e-05, 2.768e-05, 1009.85705846], [1516477980000, 2.769e-05, 2.769e-05, 2.76e-05, 2.769e-05, 4219.1138183], [1516478040000, 2.76e-05, 2.76e-05, 2.76e-05, 2.76e-05, 1039.231104], [1516478100000, 2.767e-05, 2.767e-05, 2.76e-05, 2.76e-05, 8783.50139745], [1516478160000, 2.767e-05, 2.767e-05, 2.761e-05, 2.761e-05, 1252.03556755], [1516478220000, 2.761e-05, 2.761e-05, 2.76e-05, 2.76e-05, 997.20997678], [1516478340000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 657.71881356], [1516478400000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 1121.26377544], [1516478460000, 2.732e-05, 2.759e-05, 2.732e-05, 2.733e-05, 1739.41637344], [1516478520000, 2.759e-05, 2.759e-05, 2.733e-05, 2.733e-05, 848.06259381], [1516478580000, 2.732e-05, 2.734e-05, 2.732e-05, 2.733e-05, 2390.91198745], [1516478640000, 2.733e-05, 2.733e-05, 2.733e-05, 2.733e-05, 3721.36260514], [1516478820000, 2.74e-05, 2.757e-05, 2.733e-05, 2.754e-05, 11181.63747317], [1516478880000, 2.746e-05, 2.746e-05, 2.746e-05, 2.746e-05, 913.03815608], [1516478940000, 2.746e-05, 2.746e-05, 2.735e-05, 2.735e-05, 8238.97894255], [1516479000000, 2.735e-05, 2.735e-05, 2.735e-05, 2.735e-05, 228.91984447], [1516479120000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 1000.0], [1516479180000, 2.735e-05, 2.735e-05, 2.734e-05, 2.734e-05, 868.54097138], [1516479300000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 411.7976966], [1516479360000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 1149.0], [1516479420000, 2.734e-05, 2.734e-05, 2.73e-05, 2.73e-05, 5542.9975755], [1516479480000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 170.805127], [1516479540000, 2.73e-05, 2.73e-05, 2.73e-05, 2.73e-05, 9793.3569295], [1516479660000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 365.76444769], [1516479720000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 1576.26539306], [1516479780000, 2.735e-05, 2.735e-05, 2.735e-05, 2.735e-05, 96.679], [1516479840000, 2.735e-05, 2.735e-05, 2.735e-05, 2.735e-05, 476.71880079], [1516479900000, 2.748e-05, 2.748e-05, 2.748e-05, 2.748e-05, 482.0], [1516479960000, 2.748e-05, 2.748e-05, 2.748e-05, 2.748e-05, 103.36648199], [1516480080000, 2.735e-05, 2.735e-05, 2.735e-05, 2.735e-05, 1396.13389379], [1516480140000, 2.73e-05, 2.73e-05, 2.73e-05, 2.73e-05, 1870.60492308], [1516480200000, 2.73e-05, 2.73e-05, 2.73e-05, 2.73e-05, 2137.0], [1516480260000, 2.723e-05, 2.723e-05, 2.72e-05, 2.72e-05, 416.83846518], [1516480320000, 2.72e-05, 2.72e-05, 2.72e-05, 2.72e-05, 1093.11246638], [1516480380000, 2.719e-05, 2.719e-05, 2.718e-05, 2.718e-05, 2348.29677214], [1516480440000, 2.719e-05, 2.719e-05, 2.708e-05, 2.708e-05, 3924.4087684], [1516480500000, 2.717e-05, 2.717e-05, 2.708e-05, 2.708e-05, 1000.0], [1516480560000, 2.708e-05, 2.709e-05, 2.691e-05, 2.699e-05, 65808.96489983], [1516480620000, 2.702e-05, 2.702e-05, 2.697e-05, 2.697e-05, 817.38014196], [1516480680000, 2.7e-05, 2.7e-05, 2.7e-05, 2.7e-05, 680.0], [1516480860000, 2.719e-05, 2.719e-05, 2.719e-05, 2.719e-05, 66.200809], [1516480920000, 2.709e-05, 2.709e-05, 2.703e-05, 2.709e-05, 8014.73474479], [1516481040000, 2.719e-05, 2.72e-05, 2.719e-05, 2.72e-05, 1874.46585109], [1516481100000, 2.72e-05, 2.735e-05, 2.72e-05, 2.735e-05, 178.81730129], [1516481160000, 2.74e-05, 2.74e-05, 2.738e-05, 2.739e-05, 9524.72450679], [1516481220000, 2.738e-05, 2.739e-05, 2.738e-05, 2.739e-05, 866.81652932], [1516481280000, 2.742e-05, 2.742e-05, 2.736e-05, 2.736e-05, 341.18694924], [1516481340000, 2.74e-05, 2.74e-05, 2.736e-05, 2.736e-05, 830.12097901], [1516481460000, 2.736e-05, 2.738e-05, 2.736e-05, 2.736e-05, 1914.40830262], [1516481520000, 2.712e-05, 2.713e-05, 2.712e-05, 2.713e-05, 1028.608], [1516481580000, 2.713e-05, 2.713e-05, 2.712e-05, 2.712e-05, 3028.0], [1516481640000, 2.739e-05, 2.739e-05, 2.739e-05, 2.739e-05, 218.58835474], [1516481700000, 2.712e-05, 2.712e-05, 2.712e-05, 2.712e-05, 2117.34183872], [1516482000000, 2.734e-05, 2.734e-05, 2.73e-05, 2.73e-05, 167.52907268], [1516482060000, 2.712e-05, 2.712e-05, 2.712e-05, 2.712e-05, 84.68902973], [1516482120000, 2.73e-05, 2.73e-05, 2.73e-05, 2.73e-05, 1278.84615385], [1516482300000, 2.724e-05, 2.727e-05, 2.724e-05, 2.724e-05, 3827.82249449], [1516482360000, 2.72e-05, 2.72e-05, 2.72e-05, 2.72e-05, 330.59618117], [1516482420000, 2.713e-05, 2.713e-05, 2.712e-05, 2.712e-05, 2045.0], [1516482480000, 2.712e-05, 2.729e-05, 2.712e-05, 2.729e-05, 21862.34209585], [1516482720000, 2.728e-05, 2.728e-05, 2.728e-05, 2.728e-05, 100.0], [1516482780000, 2.728e-05, 2.728e-05, 2.728e-05, 2.728e-05, 100.0], [1516483020000, 2.712e-05, 2.72e-05, 2.712e-05, 2.72e-05, 8149.05600077], [1516483080000, 2.723e-05, 2.723e-05, 2.723e-05, 2.723e-05, 309.03727273], [1516483140000, 2.723e-05, 2.729e-05, 2.723e-05, 2.723e-05, 1257.9744645], [1516483200000, 2.728e-05, 2.728e-05, 2.723e-05, 2.723e-05, 288.09497389], [1516483380000, 2.723e-05, 2.729e-05, 2.723e-05, 2.723e-05, 8792.87221254], [1516483500000, 2.725e-05, 2.725e-05, 2.725e-05, 2.725e-05, 476.93250051], [1516483560000, 2.727e-05, 2.729e-05, 2.727e-05, 2.729e-05, 1845.31064813], [1516483620000, 2.73e-05, 2.73e-05, 2.73e-05, 2.73e-05, 4381.54284543], [1516483740000, 2.746e-05, 2.746e-05, 2.745e-05, 2.745e-05, 551.05786507], [1516483800000, 2.729e-05, 2.729e-05, 2.729e-05, 2.729e-05, 640.12081342], [1516483920000, 2.729e-05, 2.729e-05, 2.729e-05, 2.729e-05, 803.93676379], [1516483980000, 2.729e-05, 2.729e-05, 2.729e-05, 2.729e-05, 77.09575429], [1516484040000, 2.729e-05, 2.729e-05, 2.729e-05, 2.729e-05, 289.33883713], [1516484100000, 2.729e-05, 2.744e-05, 2.727e-05, 2.727e-05, 1510.88497122], [1516484160000, 2.727e-05, 2.727e-05, 2.727e-05, 2.727e-05, 663.07], [1516484220000, 2.744e-05, 2.744e-05, 2.727e-05, 2.727e-05, 393.14342972], [1516484340000, 2.727e-05, 2.727e-05, 2.727e-05, 2.727e-05, 51.38111465], [1516484580000, 2.727e-05, 2.727e-05, 2.727e-05, 2.727e-05, 66.0], [1516484760000, 2.742e-05, 2.742e-05, 2.742e-05, 2.742e-05, 180.4585454], [1516484880000, 2.742e-05, 2.75e-05, 2.742e-05, 2.75e-05, 3011.71005662], [1516484940000, 2.749e-05, 2.753e-05, 2.749e-05, 2.753e-05, 11052.16396814], [1516485000000, 2.753e-05, 2.753e-05, 2.753e-05, 2.753e-05, 3017.10328368], [1516485060000, 2.753e-05, 2.753e-05, 2.753e-05, 2.753e-05, 2740.3903983], [1516485120000, 2.74e-05, 2.74e-05, 2.74e-05, 2.74e-05, 180.04501125], [1516485240000, 2.74e-05, 2.753e-05, 2.74e-05, 2.753e-05, 778.22518018], [1516485540000, 2.74e-05, 2.753e-05, 2.74e-05, 2.753e-05, 249.99337446], [1516485660000, 2.753e-05, 2.753e-05, 2.748e-05, 2.748e-05, 1992.93405183], [1516485720000, 2.748e-05, 2.748e-05, 2.748e-05, 2.748e-05, 204.96427518], [1516485780000, 2.748e-05, 2.748e-05, 2.748e-05, 2.748e-05, 42.31631019], [1516485840000, 2.748e-05, 2.748e-05, 2.748e-05, 2.748e-05, 237.65884448], [1516485900000, 2.748e-05, 2.748e-05, 2.748e-05, 2.748e-05, 91.13716011], [1516485960000, 2.742e-05, 2.742e-05, 2.742e-05, 2.742e-05, 307.03467518], [1516486080000, 2.752e-05, 2.752e-05, 2.742e-05, 2.742e-05, 3958.45323831], [1516486200000, 2.752e-05, 2.752e-05, 2.752e-05, 2.752e-05, 2710.94036975], [1516486260000, 2.752e-05, 2.752e-05, 2.752e-05, 2.752e-05, 18.2], [1516486380000, 2.752e-05, 2.752e-05, 2.752e-05, 2.752e-05, 420.0], [1516486560000, 2.751e-05, 2.751e-05, 2.741e-05, 2.741e-05, 4057.1356729], [1516486620000, 2.741e-05, 2.741e-05, 2.74e-05, 2.74e-05, 2486.71975789], [1516486680000, 2.741e-05, 2.741e-05, 2.741e-05, 2.741e-05, 523.93967857], [1516486740000, 2.74e-05, 2.74e-05, 2.74e-05, 2.74e-05, 1914.51358304], [1516486800000, 2.741e-05, 2.741e-05, 2.741e-05, 2.741e-05, 500.0], [1516486920000, 2.741e-05, 2.741e-05, 2.741e-05, 2.741e-05, 68.21866472], [1516486980000, 2.74e-05, 2.74e-05, 2.74e-05, 2.74e-05, 283.84284713], [1516487040000, 2.741e-05, 2.741e-05, 2.741e-05, 2.741e-05, 100.0], [1516487160000, 2.74e-05, 2.74e-05, 2.74e-05, 2.74e-05, 1170.88684926], [1516487220000, 2.74e-05, 2.74e-05, 2.73e-05, 2.73e-05, 3465.56587535], [1516487340000, 2.731e-05, 2.75e-05, 2.73e-05, 2.75e-05, 6617.124092], [1516487400000, 2.75e-05, 2.75e-05, 2.75e-05, 2.75e-05, 6e-08], [1516487460000, 2.75e-05, 2.75e-05, 2.75e-05, 2.75e-05, 690.55211116], [1516487640000, 2.75e-05, 2.75e-05, 2.75e-05, 2.75e-05, 1324.71855706], [1516487700000, 2.75e-05, 2.75e-05, 2.728e-05, 2.728e-05, 10317.70451355], [1516487760000, 2.732e-05, 2.763e-05, 2.732e-05, 2.762e-05, 34031.25517133], [1516487820000, 2.762e-05, 2.762e-05, 2.734e-05, 2.734e-05, 857.192422], [1516487880000, 2.758e-05, 2.758e-05, 2.735e-05, 2.758e-05, 18880.93517129], [1516488000000, 2.759e-05, 2.762e-05, 2.759e-05, 2.762e-05, 309.27499146], [1516488060000, 2.762e-05, 2.762e-05, 2.733e-05, 2.733e-05, 13127.76701432], [1516488120000, 2.758e-05, 2.758e-05, 2.734e-05, 2.758e-05, 1392.00715195], [1516488180000, 2.758e-05, 2.758e-05, 2.758e-05, 2.758e-05, 1604.09274839], [1516488240000, 2.758e-05, 2.758e-05, 2.731e-05, 2.758e-05, 5698.57081165], [1516488360000, 2.732e-05, 2.732e-05, 2.732e-05, 2.732e-05, 155.4322515], [1516488420000, 2.732e-05, 2.732e-05, 2.732e-05, 2.732e-05, 200.000001], [1516488480000, 2.735e-05, 2.735e-05, 2.732e-05, 2.732e-05, 2211.8220185], [1516488540000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 133.41217168], [1516488720000, 2.734e-05, 2.734e-05, 2.734e-05, 2.734e-05, 100.0], [1516488780000, 2.733e-05, 2.733e-05, 2.733e-05, 2.733e-05, 750.0], [1516488840000, 2.731e-05, 2.731e-05, 2.731e-05, 2.731e-05, 481.19137807], [1516488900000, 2.732e-05, 2.734e-05, 2.732e-05, 2.734e-05, 1918.96526879], [1516488960000, 2.734e-05, 2.755e-05, 2.734e-05, 2.755e-05, 322.26877714], [1516489020000, 2.749e-05, 2.749e-05, 2.749e-05, 2.749e-05, 167.56376637], [1516489080000, 2.749e-05, 2.749e-05, 2.731e-05, 2.731e-05, 278.55982738], [1516489140000, 2.731e-05, 2.75e-05, 2.731e-05, 2.749e-05, 1295.60068878], [1516489200000, 2.749e-05, 2.75e-05, 2.749e-05, 2.75e-05, 18908.70315121], [1516489260000, 2.749e-05, 2.749e-05, 2.733e-05, 2.733e-05, 493.4691013], [1516489380000, 2.734e-05, 2.749e-05, 2.734e-05, 2.749e-05, 167.95665805], [1516489500000, 2.75e-05, 2.75e-05, 2.75e-05, 2.75e-05, 3823.42], [1516489560000, 2.75e-05, 2.75e-05, 2.75e-05, 2.75e-05, 931.59556696], [1516489620000, 2.749e-05, 2.749e-05, 2.749e-05, 2.749e-05, 400.0], [1516489680000, 2.749e-05, 2.749e-05, 2.727e-05, 2.727e-05, 19758.07980983], [1516489920000, 2.735e-05, 2.735e-05, 2.735e-05, 2.735e-05, 1000.0], [1516489980000, 2.749e-05, 2.75e-05, 2.733e-05, 2.733e-05, 2799.37299811], [1516490040000, 2.733e-05, 2.75e-05, 2.733e-05, 2.733e-05, 1565.9828349], [1516490100000, 2.733e-05, 2.733e-05, 2.733e-05, 2.733e-05, 100.0], [1516490280000, 2.751e-05, 2.755e-05, 2.751e-05, 2.755e-05, 2102.00321322], [1516490400000, 2.754e-05, 2.754e-05, 2.754e-05, 2.754e-05, 639.66697712], [1516490460000, 2.733e-05, 2.733e-05, 2.733e-05, 2.733e-05, 165.81588617], [1516490520000, 2.733e-05, 2.733e-05, 2.733e-05, 2.733e-05, 491.64134889], [1516490580000, 2.732e-05, 2.763e-05, 2.732e-05, 2.763e-05, 7200.23502744], [1516490640000, 2.732e-05, 2.763e-05, 2.732e-05, 2.762e-05, 1528.5842551], [1516490700000, 2.762e-05, 2.766e-05, 2.762e-05, 2.766e-05, 1623.02922074], [1516490820000, 2.764e-05, 2.766e-05, 2.764e-05, 2.766e-05, 200.601003], [1516490880000, 2.763e-05, 2.769e-05, 2.763e-05, 2.769e-05, 8119.17617824], [1516490940000, 2.738e-05, 2.738e-05, 2.738e-05, 2.738e-05, 72.66213288], [1516491000000, 2.751e-05, 2.751e-05, 2.751e-05, 2.751e-05, 1151.39566431], [1516491060000, 2.751e-05, 2.751e-05, 2.751e-05, 2.751e-05, 3538.25905865], [1516491120000, 2.751e-05, 2.751e-05, 2.736e-05, 2.736e-05, 5642.0866656], [1516491240000, 2.759e-05, 2.76e-05, 2.736e-05, 2.76e-05, 4037.40181592], [1516491360000, 2.76e-05, 2.76e-05, 2.751e-05, 2.751e-05, 745.7122958], [1516491420000, 2.751e-05, 2.76e-05, 2.751e-05, 2.76e-05, 7098.84510825], [1516491480000, 2.76e-05, 2.76e-05, 2.76e-05, 2.76e-05, 4573.79005554], [1516491540000, 2.761e-05, 2.761e-05, 2.761e-05, 2.761e-05, 166.24951478], [1516491600000, 2.761e-05, 2.761e-05, 2.761e-05, 2.761e-05, 82.22440026], [1516491660000, 2.761e-05, 2.761e-05, 2.761e-05, 2.761e-05, 200.0], [1516491720000, 2.761e-05, 2.761e-05, 2.76e-05, 2.76e-05, 2915.28212916], [1516491780000, 2.76e-05, 2.768e-05, 2.76e-05, 2.768e-05, 14522.28317861], [1516491840000, 2.76e-05, 2.76e-05, 2.76e-05, 2.76e-05, 653.21999708], [1516491900000, 2.76e-05, 2.76e-05, 2.76e-05, 2.76e-05, 3971.34009105], [1516491960000, 2.76e-05, 2.76e-05, 2.745e-05, 2.745e-05, 398.93908974], [1516492020000, 2.745e-05, 2.76e-05, 2.745e-05, 2.745e-05, 11204.27872797], [1516492080000, 2.745e-05, 2.76e-05, 2.745e-05, 2.76e-05, 1614.63930289], [1516492200000, 2.758e-05, 2.758e-05, 2.758e-05, 2.758e-05, 40.17998574], [1516492260000, 2.758e-05, 2.758e-05, 2.758e-05, 2.758e-05, 479.73503514], [1516492320000, 2.758e-05, 2.758e-05, 2.757e-05, 2.758e-05, 8040.08267434], [1516492380000, 2.758e-05, 2.758e-05, 2.758e-05, 2.758e-05, 2588.79550506], [1516492440000, 2.758e-05, 2.758e-05, 2.757e-05, 2.757e-05, 8496.15719358], [1516492500000, 2.746e-05, 2.757e-05, 2.746e-05, 2.746e-05, 1383.10911581], [1516492560000, 2.75e-05, 2.757e-05, 2.75e-05, 2.757e-05, 1969.96241776], [1516492620000, 2.746e-05, 2.746e-05, 2.743e-05, 2.743e-05, 3294.71741475], [1516492680000, 2.743e-05, 2.757e-05, 2.743e-05, 2.757e-05, 201.7271853], [1516492740000, 2.757e-05, 2.757e-05, 2.757e-05, 2.757e-05, 197.999999], [1516492800000, 2.757e-05, 2.759e-05, 2.736e-05, 2.736e-05, 4647.24492609], [1516492860000, 2.736e-05, 2.736e-05, 2.732e-05, 2.732e-05, 4973.5991275], [1516492980000, 2.731e-05, 2.731e-05, 2.73e-05, 2.731e-05, 1734.095421], [1516493040000, 2.759e-05, 2.76e-05, 2.732e-05, 2.732e-05, 731.13837768], [1516493100000, 2.759e-05, 2.759e-05, 2.759e-05, 2.759e-05, 2246.28691554], [1516493160000, 2.759e-05, 2.759e-05, 2.732e-05, 2.732e-05, 168.99255992], [1516493220000, 2.755e-05, 2.756e-05, 2.755e-05, 2.756e-05, 407.88339623], [1516493280000, 2.733e-05, 2.733e-05, 2.733e-05, 2.733e-05, 619.12297688], [1516493340000, 2.732e-05, 2.733e-05, 2.731e-05, 2.731e-05, 372.09460166], [1516493400000, 2.732e-05, 2.732e-05, 2.732e-05, 2.732e-05, 242.15563882], [1516493460000, 2.731e-05, 2.731e-05, 2.73e-05, 2.731e-05, 8292.6858223], [1516493520000, 2.731e-05, 2.731e-05, 2.725e-05, 2.725e-05, 8794.74410856], [1516493580000, 2.725e-05, 2.731e-05, 2.725e-05, 2.731e-05, 3926.077583], [1516493700000, 2.729e-05, 2.734e-05, 2.729e-05, 2.734e-05, 1287.94135035], [1516493760000, 2.724e-05, 2.724e-05, 2.724e-05, 2.724e-05, 3182.62873327], [1516493820000, 2.726e-05, 2.726e-05, 2.726e-05, 2.726e-05, 738.77646741], [1516493880000, 2.727e-05, 2.727e-05, 2.727e-05, 2.727e-05, 5132.04959826], [1516493940000, 2.729e-05, 2.734e-05, 2.727e-05, 2.734e-05, 6726.387218], [1516494000000, 2.734e-05, 2.74e-05, 2.734e-05, 2.74e-05, 968.2926681], [1516494060000, 2.74e-05, 2.74e-05, 2.74e-05, 2.74e-05, 185.75693069], [1516494120000, 2.74e-05, 2.75e-05, 2.739e-05, 2.739e-05, 4881.13792294], [1516494180000, 2.739e-05, 2.754e-05, 2.739e-05, 2.754e-05, 1013.50700622], [1516494240000, 2.749e-05, 2.749e-05, 2.749e-05, 2.749e-05, 142.44401601], [1516494300000, 2.733e-05, 2.733e-05, 2.732e-05, 2.732e-05, 1227.44689901], [1516494360000, 2.733e-05, 2.748e-05, 2.724e-05, 2.727e-05, 11975.73379982], [1516494420000, 2.748e-05, 2.748e-05, 2.728e-05, 2.728e-05, 1670.85406527], [1516494480000, 2.748e-05, 2.748e-05, 2.729e-05, 2.729e-05, 2831.36494538], [1516494540000, 2.729e-05, 2.73e-05, 2.729e-05, 2.73e-05, 7358.10892687], [1516494600000, 2.73e-05, 2.748e-05, 2.73e-05, 2.748e-05, 1864.4228938], [1516494660000, 2.747e-05, 2.748e-05, 2.724e-05, 2.724e-05, 19304.70335119], [1516494780000, 2.748e-05, 2.748e-05, 2.724e-05, 2.724e-05, 9499.53711771], [1516494840000, 2.724e-05, 2.724e-05, 2.724e-05, 2.724e-05, 5866.31727376], [1516494900000, 2.724e-05, 2.724e-05, 2.724e-05, 2.724e-05, 183.55359765], [1516494960000, 2.723e-05, 2.724e-05, 2.723e-05, 2.723e-05, 1698.19545912], [1516495020000, 2.723e-05, 2.723e-05, 2.714e-05, 2.714e-05, 18355.75904153], [1516495080000, 2.718e-05, 2.73e-05, 2.718e-05, 2.73e-05, 362.98426923], [1516495140000, 2.718e-05, 2.74e-05, 2.718e-05, 2.74e-05, 2376.99779249], [1516495200000, 2.74e-05, 2.74e-05, 2.73e-05, 2.73e-05, 4961.13021633], [1516495260000, 2.73e-05, 2.73e-05, 2.73e-05, 2.73e-05, 242.2351522], [1516495320000, 2.73e-05, 2.74e-05, 2.713e-05, 2.713e-05, 25547.83270205], [1516495380000, 2.713e-05, 2.74e-05, 2.713e-05, 2.714e-05, 26481.22793842], [1516495440000, 2.72e-05, 2.72e-05, 2.714e-05, 2.714e-05, 337.51730751], [1516495500000, 2.714e-05, 2.738e-05, 2.713e-05, 2.738e-05, 10119.31466472], [1516495560000, 2.725e-05, 2.735e-05, 2.725e-05, 2.735e-05, 1063.22729033], [1516495620000, 2.736e-05, 2.74e-05, 2.736e-05, 2.74e-05, 6231.50447566], [1516495680000, 2.738e-05, 2.74e-05, 2.733e-05, 2.737e-05, 5972.57124284], [1516495740000, 2.737e-05, 2.747e-05, 2.737e-05, 2.747e-05, 4053.88227054], [1516495860000, 2.733e-05, 2.739e-05, 2.733e-05, 2.739e-05, 2309.49574472], [1516495920000, 2.733e-05, 2.745e-05, 2.733e-05, 2.745e-05, 14285.96035355], [1516495980000, 2.743e-05, 2.743e-05, 2.731e-05, 2.731e-05, 1819.52910671], [1516496040000, 2.732e-05, 2.74e-05, 2.715e-05, 2.715e-05, 15302.47448634], [1516496100000, 2.718e-05, 2.742e-05, 2.705e-05, 2.707e-05, 53971.34746873], [1516496160000, 2.714e-05, 2.714e-05, 2.714e-05, 2.714e-05, 4353.4765109], [1516496220000, 2.708e-05, 2.708e-05, 2.704e-05, 2.704e-05, 7193.27338383], [1516496280000, 2.704e-05, 2.707e-05, 2.7e-05, 2.701e-05, 19762.12162726], [1516496340000, 2.702e-05, 2.726e-05, 2.7e-05, 2.701e-05, 13751.71557538], [1516496400000, 2.7e-05, 2.701e-05, 2.7e-05, 2.701e-05, 6625.03252592], [1516496460000, 2.701e-05, 2.701e-05, 2.7e-05, 2.7e-05, 2530.05231779], [1516496520000, 2.701e-05, 2.721e-05, 2.701e-05, 2.721e-05, 8318.20798111], [1516496580000, 2.721e-05, 2.721e-05, 2.721e-05, 2.721e-05, 1665.67806838], [1516496640000, 2.721e-05, 2.721e-05, 2.721e-05, 2.721e-05, 81.27861162], [1516496700000, 2.721e-05, 2.721e-05, 2.721e-05, 2.721e-05, 2318.72447363], [1516496760000, 2.721e-05, 2.721e-05, 2.704e-05, 2.704e-05, 3273.53450219], [1516496820000, 2.703e-05, 2.704e-05, 2.703e-05, 2.704e-05, 1327.72775377], [1516496880000, 2.721e-05, 2.721e-05, 2.721e-05, 2.721e-05, 217.64192434], [1516496940000, 2.705e-05, 2.705e-05, 2.704e-05, 2.704e-05, 480.73424316], [1516497000000, 2.704e-05, 2.704e-05, 2.704e-05, 2.704e-05, 4638.89411845], [1516497060000, 2.715e-05, 2.715e-05, 2.715e-05, 2.715e-05, 2816.51785359], [1516497120000, 2.704e-05, 2.705e-05, 2.704e-05, 2.704e-05, 12288.46114829], [1516497180000, 2.704e-05, 2.704e-05, 2.703e-05, 2.703e-05, 4275.4518625], [1516497240000, 2.703e-05, 2.704e-05, 2.702e-05, 2.704e-05, 12100.39999511], [1516497300000, 2.704e-05, 2.704e-05, 2.703e-05, 2.704e-05, 13433.04586065], [1516497360000, 2.703e-05, 2.704e-05, 2.703e-05, 2.704e-05, 1148.59335762], [1516497420000, 2.703e-05, 2.703e-05, 2.702e-05, 2.702e-05, 539.98509912], [1516497480000, 2.702e-05, 2.702e-05, 2.7e-05, 2.7e-05, 4355.35179656], [1516497600000, 2.702e-05, 2.704e-05, 2.702e-05, 2.702e-05, 6113.55211282], [1516497720000, 2.704e-05, 2.704e-05, 2.702e-05, 2.704e-05, 20110.01822395], [1516497780000, 2.703e-05, 2.704e-05, 2.703e-05, 2.704e-05, 13160.84114452], [1516497840000, 2.704e-05, 2.704e-05, 2.704e-05, 2.704e-05, 464.48927514], [1516497900000, 2.703e-05, 2.704e-05, 2.703e-05, 2.704e-05, 27185.82874093], [1516497960000, 2.702e-05, 2.702e-05, 2.7e-05, 2.7e-05, 33353.87450273], [1516498140000, 2.704e-05, 2.704e-05, 2.704e-05, 2.704e-05, 1496.88352], [1516498200000, 2.704e-05, 2.704e-05, 2.704e-05, 2.704e-05, 300.78424926], [1516498260000, 2.704e-05, 2.715e-05, 2.704e-05, 2.715e-05, 660.49400031], [1516498320000, 2.704e-05, 2.715e-05, 2.704e-05, 2.715e-05, 2454.10241134], [1516498380000, 2.71e-05, 2.71e-05, 2.71e-05, 2.71e-05, 477.70543421], [1516498440000, 2.715e-05, 2.715e-05, 2.715e-05, 2.715e-05, 2585.2521991], [1516498620000, 2.722e-05, 2.722e-05, 2.722e-05, 2.722e-05, 343.18470794], [1516498680000, 2.722e-05, 2.722e-05, 2.722e-05, 2.722e-05, 133.96422811], [1516498740000, 2.727e-05, 2.727e-05, 2.722e-05, 2.727e-05, 328.30471583], [1516498800000, 2.723e-05, 2.723e-05, 2.722e-05, 2.722e-05, 25000.0], [1516498860000, 2.722e-05, 2.74e-05, 2.722e-05, 2.74e-05, 8167.66585155], [1516498920000, 2.74e-05, 2.74e-05, 2.739e-05, 2.739e-05, 871.35236593], [1516498980000, 2.739e-05, 2.739e-05, 2.723e-05, 2.723e-05, 270.7153415], [1516499040000, 2.738e-05, 2.738e-05, 2.738e-05, 2.738e-05, 56.1646988], [1516499100000, 2.738e-05, 2.738e-05, 2.738e-05, 2.738e-05, 297.2955233], [1516499160000, 2.739e-05, 2.739e-05, 2.738e-05, 2.738e-05, 4044.18034174], [1516499220000, 2.738e-05, 2.739e-05, 2.738e-05, 2.739e-05, 1830.00267963], [1516499280000, 2.739e-05, 2.739e-05, 2.739e-05, 2.739e-05, 554.73372781], [1516499340000, 2.739e-05, 2.74e-05, 2.739e-05, 2.739e-05, 3138.80475296], [1516499400000, 2.739e-05, 2.739e-05, 2.738e-05, 2.738e-05, 732.17750838], [1516499460000, 2.739e-05, 2.739e-05, 2.738e-05, 2.738e-05, 2434.66550804], [1516499520000, 2.738e-05, 2.738e-05, 2.738e-05, 2.738e-05, 1236.9321683], [1516499580000, 2.74e-05, 2.74e-05, 2.74e-05, 2.74e-05, 41.60294746], [1516499640000, 2.738e-05, 2.738e-05, 2.738e-05, 2.738e-05, 366.18721955], [1516499700000, 2.738e-05, 2.739e-05, 2.737e-05, 2.739e-05, 19388.52107566], [1516499760000, 2.74e-05, 2.74e-05, 2.739e-05, 2.739e-05, 203.45293707], [1516499820000, 2.736e-05, 2.736e-05, 2.736e-05, 2.736e-05, 55.11129385], [1516499880000, 2.726e-05, 2.726e-05, 2.724e-05, 2.724e-05, 5684.69225771], [1516499940000, 2.725e-05, 2.738e-05, 2.725e-05, 2.738e-05, 2551.05010077], [1516500060000, 2.724e-05, 2.739e-05, 2.724e-05, 2.737e-05, 1631.92097451], [1516500120000, 2.737e-05, 2.737e-05, 2.737e-05, 2.737e-05, 1222.32173412], [1516500180000, 2.737e-05, 2.737e-05, 2.737e-05, 2.737e-05, 7312.86253824], [1516500360000, 2.738e-05, 2.739e-05, 2.738e-05, 2.739e-05, 3376.8655812], [1516500420000, 2.739e-05, 2.75e-05, 2.739e-05, 2.75e-05, 8069.85403307], [1516500540000, 2.75e-05, 2.75e-05, 2.75e-05, 2.75e-05, 576.28811156], [1516500600000, 2.75e-05, 2.75e-05, 2.74e-05, 2.74e-05, 3456.24617316], [1516500660000, 2.74e-05, 2.74e-05, 2.739e-05, 2.739e-05, 4871.51286511], [1516500720000, 2.737e-05, 2.739e-05, 2.737e-05, 2.739e-05, 520.4886624], [1516500780000, 2.739e-05, 2.739e-05, 2.739e-05, 2.739e-05, 1000.0], [1516500900000, 2.739e-05, 2.739e-05, 2.739e-05, 2.739e-05, 4843.64731654], [1516500960000, 2.739e-05, 2.739e-05, 2.737e-05, 2.737e-05, 416.59767593], [1516501080000, 2.737e-05, 2.739e-05, 2.737e-05, 2.737e-05, 2247.47666698], [1516501140000, 2.738e-05, 2.738e-05, 2.738e-05, 2.738e-05, 4529.36906501], [1516501260000, 2.737e-05, 2.737e-05, 2.737e-05, 2.737e-05, 605.50864501], [1516501320000, 2.732e-05, 2.732e-05, 2.73e-05, 2.73e-05, 1084.30968968], [1516501380000, 2.723e-05, 2.723e-05, 2.723e-05, 2.723e-05, 2927.93544831], [1516501440000, 2.723e-05, 2.73e-05, 2.723e-05, 2.73e-05, 917.52639105], [1516501560000, 2.724e-05, 2.724e-05, 2.723e-05, 2.723e-05, 2037.62024646], [1516501620000, 2.723e-05, 2.723e-05, 2.723e-05, 2.723e-05, 1664.71018591], [1516501680000, 2.723e-05, 2.723e-05, 2.723e-05, 2.723e-05, 3538.56469611], [1516501740000, 2.717e-05, 2.717e-05, 2.717e-05, 2.717e-05, 720.60742452], [1516501860000, 2.71e-05, 2.717e-05, 2.71e-05, 2.717e-05, 359.20720647], [1516501920000, 2.71e-05, 2.71e-05, 2.71e-05, 2.71e-05, 2988.93284192], [1516502040000, 2.702e-05, 2.702e-05, 2.7e-05, 2.7e-05, 2731.78461829], [1516502100000, 2.702e-05, 2.702e-05, 2.702e-05, 2.702e-05, 700.0], [1516502160000, 2.71e-05, 2.717e-05, 2.71e-05, 2.717e-05, 5226.85615839], [1516502220000, 2.717e-05, 2.717e-05, 2.717e-05, 2.717e-05, 1243.06747337], [1516502280000, 2.71e-05, 2.71e-05, 2.71e-05, 2.71e-05, 4428.04428044], [1516502340000, 2.71e-05, 2.724e-05, 2.709e-05, 2.724e-05, 8471.03866851], [1516502400000, 2.724e-05, 2.724e-05, 2.724e-05, 2.724e-05, 1328.59664348], [1516502460000, 2.71e-05, 2.71e-05, 2.71e-05, 2.71e-05, 4245.34698192], [1516502520000, 2.705e-05, 2.706e-05, 2.704e-05, 2.706e-05, 2240.49670151], [1516502580000, 2.71e-05, 2.724e-05, 2.71e-05, 2.724e-05, 17797.95375651], [1516502640000, 2.715e-05, 2.715e-05, 2.715e-05, 2.715e-05, 1462.17072419], [1516502760000, 2.715e-05, 2.715e-05, 2.715e-05, 2.715e-05, 208.92405667], [1516502820000, 2.722e-05, 2.723e-05, 2.722e-05, 2.723e-05, 3404.69497617], [1516502880000, 2.715e-05, 2.722e-05, 2.715e-05, 2.722e-05, 7000.0], [1516502940000, 2.715e-05, 2.722e-05, 2.715e-05, 2.715e-05, 3349.11459851], [1516503000000, 2.715e-05, 2.715e-05, 2.715e-05, 2.715e-05, 1361.90547826], [1516503060000, 2.715e-05, 2.715e-05, 2.704e-05, 2.704e-05, 7964.58353933], [1516503120000, 2.705e-05, 2.705e-05, 2.704e-05, 2.704e-05, 26443.84832774], [1516503180000, 2.704e-05, 2.704e-05, 2.702e-05, 2.702e-05, 433.69108616], [1516503240000, 2.7e-05, 2.7e-05, 2.7e-05, 2.7e-05, 2616.58879574], [1516503300000, 2.697e-05, 2.697e-05, 2.697e-05, 2.697e-05, 15207.17554134], [1516503360000, 2.7e-05, 2.723e-05, 2.7e-05, 2.723e-05, 6682.63081995], [1516503420000, 2.723e-05, 2.723e-05, 2.723e-05, 2.723e-05, 1895.98938068], [1516503480000, 2.697e-05, 2.697e-05, 2.697e-05, 2.697e-05, 307.12782744], [1516503540000, 2.697e-05, 2.697e-05, 2.697e-05, 2.697e-05, 1232.12529424], [1516503660000, 2.703e-05, 2.719e-05, 2.699e-05, 2.719e-05, 16632.55535242], [1516503720000, 2.719e-05, 2.72e-05, 2.719e-05, 2.72e-05, 2064.86186953], [1516503780000, 2.72e-05, 2.72e-05, 2.72e-05, 2.72e-05, 367.82227494], [1516503840000, 2.723e-05, 2.723e-05, 2.723e-05, 2.723e-05, 1690.6616153], [1516503900000, 2.724e-05, 2.73e-05, 2.724e-05, 2.73e-05, 2251.14685812], [1516503960000, 2.723e-05, 2.723e-05, 2.723e-05, 2.723e-05, 2788.42667885], [1516504020000, 2.723e-05, 2.723e-05, 2.723e-05, 2.723e-05, 4149.24124179], [1516504080000, 2.72e-05, 2.72e-05, 2.701e-05, 2.701e-05, 1570.49471743], [1516504140000, 2.701e-05, 2.719e-05, 2.701e-05, 2.719e-05, 2884.7959182], [1516504200000, 2.719e-05, 2.719e-05, 2.719e-05, 2.719e-05, 1487.64719316], [1516504260000, 2.717e-05, 2.717e-05, 2.704e-05, 2.704e-05, 317.69743564], [1516504320000, 2.704e-05, 2.704e-05, 2.704e-05, 2.704e-05, 2218.44814141], [1516504380000, 2.712e-05, 2.712e-05, 2.712e-05, 2.712e-05, 1503.999998], [1516504440000, 2.712e-05, 2.712e-05, 2.712e-05, 2.712e-05, 465.42408585], [1516504500000, 2.713e-05, 2.713e-05, 2.713e-05, 2.713e-05, 6474.16714386], [1516504620000, 2.713e-05, 2.713e-05, 2.713e-05, 2.713e-05, 3637.03129769], [1516504680000, 2.712e-05, 2.713e-05, 2.712e-05, 2.713e-05, 1563.16369872], [1516504740000, 2.7e-05, 2.7e-05, 2.699e-05, 2.7e-05, 386.00350925], [1516504800000, 2.7e-05, 2.713e-05, 2.699e-05, 2.713e-05, 14265.80489943], [1516504860000, 2.712e-05, 2.712e-05, 2.712e-05, 2.712e-05, 402.20429751], [1516504920000, 2.712e-05, 2.712e-05, 2.702e-05, 2.712e-05, 1945.02091177], [1516504980000, 2.711e-05, 2.711e-05, 2.711e-05, 2.711e-05, 842.52428826], [1516505040000, 2.711e-05, 2.712e-05, 2.711e-05, 2.711e-05, 2133.81669702], [1516505100000, 2.711e-05, 2.712e-05, 2.711e-05, 2.712e-05, 9401.96041707], [1516505160000, 2.711e-05, 2.712e-05, 2.711e-05, 2.711e-05, 10723.49821694], [1516505220000, 2.712e-05, 2.712e-05, 2.711e-05, 2.712e-05, 24832.12355994], [1516505280000, 2.712e-05, 2.712e-05, 2.711e-05, 2.711e-05, 1557.57649592], [1516505340000, 2.711e-05, 2.711e-05, 2.711e-05, 2.711e-05, 1637.50976116], [1516505400000, 2.711e-05, 2.711e-05, 2.711e-05, 2.711e-05, 650.0], [1516505460000, 2.711e-05, 2.711e-05, 2.711e-05, 2.711e-05, 34.90401396], [1516505520000, 2.711e-05, 2.711e-05, 2.711e-05, 2.711e-05, 2080.75635985], [1516505580000, 2.702e-05, 2.702e-05, 2.697e-05, 2.702e-05, 3572.33874952], [1516505640000, 2.697e-05, 2.702e-05, 2.697e-05, 2.702e-05, 4725.26945759], [1516505700000, 2.702e-05, 2.702e-05, 2.702e-05, 2.702e-05, 2639.23493746], [1516505760000, 2.711e-05, 2.711e-05, 2.711e-05, 2.711e-05, 1412.99115348], [1516505820000, 2.697e-05, 2.697e-05, 2.697e-05, 2.697e-05, 1065.15805121], [1516505880000, 2.702e-05, 2.702e-05, 2.702e-05, 2.702e-05, 2953.60599242], [1516506000000, 2.697e-05, 2.702e-05, 2.689e-05, 2.689e-05, 85539.02311712], [1516506060000, 2.689e-05, 2.69e-05, 2.689e-05, 2.69e-05, 21004.92591917], [1516506180000, 2.689e-05, 2.69e-05, 2.688e-05, 2.688e-05, 26361.40079333], [1516506240000, 2.69e-05, 2.69e-05, 2.69e-05, 2.69e-05, 384.16834759], [1516506300000, 2.69e-05, 2.69e-05, 2.687e-05, 2.687e-05, 24879.89512064], [1516506360000, 2.687e-05, 2.69e-05, 2.687e-05, 2.69e-05, 31782.18539336], [1516506420000, 2.69e-05, 2.699e-05, 2.69e-05, 2.699e-05, 15899.48019428], [1516506480000, 2.69e-05, 2.69e-05, 2.69e-05, 2.69e-05, 977.76326355], [1516506540000, 2.698e-05, 2.699e-05, 2.698e-05, 2.699e-05, 105813.29410818], [1516506600000, 2.699e-05, 2.699e-05, 2.699e-05, 2.699e-05, 21174.61939813], [1516506660000, 2.699e-05, 2.699e-05, 2.699e-05, 2.699e-05, 1226.42375166], [1516506720000, 2.699e-05, 2.702e-05, 2.699e-05, 2.702e-05, 1539.35551191], [1516506780000, 2.702e-05, 2.702e-05, 2.702e-05, 2.702e-05, 1658.49704099], [1516506840000, 2.71e-05, 2.716e-05, 2.71e-05, 2.716e-05, 1731.96901992], [1516506900000, 2.716e-05, 2.717e-05, 2.716e-05, 2.717e-05, 13673.63482636], [1516506960000, 2.717e-05, 2.717e-05, 2.716e-05, 2.717e-05, 8981.10559736], [1516507020000, 2.72e-05, 2.72e-05, 2.72e-05, 2.72e-05, 2121.93840684], [1516507080000, 2.723e-05, 2.723e-05, 2.72e-05, 2.723e-05, 14397.85389607], [1516507140000, 2.718e-05, 2.718e-05, 2.718e-05, 2.718e-05, 219.80920561], [1516507200000, 2.718e-05, 2.723e-05, 2.718e-05, 2.723e-05, 6387.93228491], [1516507260000, 2.723e-05, 2.723e-05, 2.723e-05, 2.723e-05, 2866.10870363], [1516507320000, 2.718e-05, 2.718e-05, 2.717e-05, 2.718e-05, 24148.24415818], [1516507380000, 2.718e-05, 2.718e-05, 2.717e-05, 2.717e-05, 946.11080395], [1516507440000, 2.718e-05, 2.718e-05, 2.717e-05, 2.718e-05, 621.30936101], [1516507500000, 2.717e-05, 2.718e-05, 2.717e-05, 2.718e-05, 32404.46200702], [1516507560000, 2.717e-05, 2.718e-05, 2.717e-05, 2.718e-05, 45050.48221401], [1516507620000, 2.721e-05, 2.721e-05, 2.721e-05, 2.721e-05, 27801.03842274], [1516507680000, 2.721e-05, 2.722e-05, 2.721e-05, 2.721e-05, 17576.07065479], [1516507740000, 2.718e-05, 2.722e-05, 2.717e-05, 2.717e-05, 31884.29562575], [1516507800000, 2.715e-05, 2.715e-05, 2.711e-05, 2.711e-05, 5490.16211256], [1516507860000, 2.709e-05, 2.709e-05, 2.709e-05, 2.709e-05, 90.71619138], [1516507920000, 2.721e-05, 2.722e-05, 2.708e-05, 2.721e-05, 67293.70188321], [1516507980000, 2.721e-05, 2.721e-05, 2.721e-05, 2.721e-05, 1153.81803657], [1516508040000, 2.71e-05, 2.71e-05, 2.708e-05, 2.708e-05, 8432.34805566], [1516508100000, 2.708e-05, 2.708e-05, 2.708e-05, 2.708e-05, 1334.7050452], [1516508160000, 2.699e-05, 2.699e-05, 2.695e-05, 2.695e-05, 545.86710238], [1516508220000, 2.695e-05, 2.695e-05, 2.689e-05, 2.689e-05, 7371.27671862], [1516508280000, 2.695e-05, 2.695e-05, 2.688e-05, 2.688e-05, 12210.07339477], [1516508340000, 2.69e-05, 2.692e-05, 2.69e-05, 2.692e-05, 882.36302909], [1516508400000, 2.692e-05, 2.692e-05, 2.687e-05, 2.688e-05, 9519.77731957], [1516508460000, 2.688e-05, 2.688e-05, 2.687e-05, 2.687e-05, 18702.7087443], [1516508520000, 2.687e-05, 2.688e-05, 2.687e-05, 2.687e-05, 6494.48799963], [1516508580000, 2.688e-05, 2.688e-05, 2.688e-05, 2.688e-05, 12211.61679134], [1516508640000, 2.688e-05, 2.688e-05, 2.687e-05, 2.687e-05, 640.41556348], [1516508700000, 2.687e-05, 2.688e-05, 2.686e-05, 2.688e-05, 13787.70822717], [1516508760000, 2.688e-05, 2.688e-05, 2.687e-05, 2.688e-05, 5429.37317231], [1516508820000, 2.688e-05, 2.709e-05, 2.688e-05, 2.709e-05, 6572.18249471], [1516508880000, 2.69e-05, 2.69e-05, 2.69e-05, 2.69e-05, 131.09167004], [1516508940000, 2.69e-05, 2.709e-05, 2.69e-05, 2.709e-05, 6172.5198563], [1516509000000, 2.69e-05, 2.69e-05, 2.69e-05, 2.69e-05, 7104.40827061], [1516509060000, 2.69e-05, 2.69e-05, 2.688e-05, 2.688e-05, 1862.54903464], [1516509120000, 2.688e-05, 2.688e-05, 2.686e-05, 2.686e-05, 26694.1945938], [1516509180000, 2.686e-05, 2.7e-05, 2.686e-05, 2.7e-05, 24640.29152977], [1516509240000, 2.698e-05, 2.698e-05, 2.689e-05, 2.689e-05, 1097.80315027], [1516509300000, 2.688e-05, 2.694e-05, 2.688e-05, 2.694e-05, 7543.06122133], [1516509360000, 2.694e-05, 2.695e-05, 2.693e-05, 2.693e-05, 6213.8627441], [1516509480000, 2.686e-05, 2.686e-05, 2.683e-05, 2.685e-05, 7649.26828054], [1516509540000, 2.685e-05, 2.685e-05, 2.683e-05, 2.683e-05, 6237.82347789], [1516509600000, 2.683e-05, 2.683e-05, 2.683e-05, 2.683e-05, 50.20505888], [1516509660000, 2.685e-05, 2.693e-05, 2.685e-05, 2.685e-05, 1230.00157998], [1516509720000, 2.693e-05, 2.695e-05, 2.693e-05, 2.695e-05, 6341.1530292], [1516509780000, 2.695e-05, 2.695e-05, 2.683e-05, 2.683e-05, 8806.72098373], [1516509840000, 2.687e-05, 2.687e-05, 2.684e-05, 2.684e-05, 551.43940411], [1516509900000, 2.684e-05, 2.684e-05, 2.684e-05, 2.684e-05, 2065.19591071], [1516509960000, 2.697e-05, 2.697e-05, 2.697e-05, 2.697e-05, 19.25362382], [1516510080000, 2.695e-05, 2.697e-05, 2.695e-05, 2.697e-05, 11445.43548977], [1516510140000, 2.684e-05, 2.696e-05, 2.684e-05, 2.696e-05, 2852.07276456], [1516510200000, 2.684e-05, 2.696e-05, 2.684e-05, 2.696e-05, 922.56621329], [1516510260000, 2.696e-05, 2.696e-05, 2.686e-05, 2.686e-05, 13457.8615342], [1516510320000, 2.696e-05, 2.714e-05, 2.696e-05, 2.714e-05, 1733.53072449], [1516510380000, 2.711e-05, 2.711e-05, 2.696e-05, 2.696e-05, 927.60129733], [1516510440000, 2.697e-05, 2.707e-05, 2.696e-05, 2.696e-05, 15598.58804429], [1516510500000, 2.707e-05, 2.707e-05, 2.696e-05, 2.696e-05, 18629.1683329], [1516510560000, 2.686e-05, 2.686e-05, 2.686e-05, 2.686e-05, 6427.90701519], [1516510620000, 2.686e-05, 2.686e-05, 2.686e-05, 2.686e-05, 600.04361784], [1516510680000, 2.706e-05, 2.706e-05, 2.706e-05, 2.706e-05, 6925.67693846], [1516510860000, 2.688e-05, 2.688e-05, 2.687e-05, 2.687e-05, 11394.34273032], [1516510920000, 2.705e-05, 2.705e-05, 2.684e-05, 2.684e-05, 59559.43257305], [1516510980000, 2.684e-05, 2.684e-05, 2.662e-05, 2.665e-05, 44732.67883813], [1516511040000, 2.661e-05, 2.676e-05, 2.652e-05, 2.655e-05, 12924.33349671], [1516511100000, 2.655e-05, 2.676e-05, 2.655e-05, 2.657e-05, 1923.25279283], [1516511160000, 2.663e-05, 2.676e-05, 2.663e-05, 2.676e-05, 2582.25373764], [1516511220000, 2.676e-05, 2.685e-05, 2.676e-05, 2.685e-05, 1078.99288853], [1516511280000, 2.677e-05, 2.677e-05, 2.676e-05, 2.676e-05, 5954.71839235], [1516511340000, 2.683e-05, 2.683e-05, 2.676e-05, 2.676e-05, 3688.96586661], [1516511400000, 2.676e-05, 2.684e-05, 2.676e-05, 2.684e-05, 22956.12782346], [1516511460000, 2.677e-05, 2.684e-05, 2.677e-05, 2.677e-05, 27931.13353294], [1516511520000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 8629.37937241], [1516511580000, 2.684e-05, 2.685e-05, 2.684e-05, 2.684e-05, 27870.14219897], [1516511640000, 2.685e-05, 2.686e-05, 2.685e-05, 2.686e-05, 257.63681253], [1516511700000, 2.691e-05, 2.691e-05, 2.686e-05, 2.686e-05, 935.24024399], [1516511760000, 2.7e-05, 2.7e-05, 2.7e-05, 2.7e-05, 29.50124973], [1516511820000, 2.7e-05, 2.7e-05, 2.7e-05, 2.7e-05, 1820.96684214], [1516511880000, 2.699e-05, 2.699e-05, 2.699e-05, 2.699e-05, 5622.66751813], [1516511940000, 2.7e-05, 2.7e-05, 2.699e-05, 2.7e-05, 557.60015227], [1516512000000, 2.7e-05, 2.704e-05, 2.7e-05, 2.704e-05, 1858.10624952], [1516512060000, 2.705e-05, 2.706e-05, 2.705e-05, 2.706e-05, 24567.36344605], [1516512120000, 2.705e-05, 2.705e-05, 2.703e-05, 2.703e-05, 7040.09600849], [1516512180000, 2.703e-05, 2.705e-05, 2.694e-05, 2.694e-05, 29172.9425991], [1516512240000, 2.694e-05, 2.702e-05, 2.694e-05, 2.702e-05, 45782.85190059], [1516512360000, 2.68e-05, 2.68e-05, 2.678e-05, 2.678e-05, 670.14154331], [1516512420000, 2.679e-05, 2.679e-05, 2.677e-05, 2.677e-05, 3425.3945658], [1516512480000, 2.677e-05, 2.678e-05, 2.677e-05, 2.677e-05, 2368.44449419], [1516512540000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 7121.61240843], [1516512600000, 2.678e-05, 2.678e-05, 2.677e-05, 2.677e-05, 25328.10799585], [1516512660000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 5322.16390609], [1516512720000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 2459.49206805], [1516512780000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 3473.64698858], [1516512840000, 2.676e-05, 2.677e-05, 2.676e-05, 2.677e-05, 4055.68530421], [1516512900000, 2.676e-05, 2.677e-05, 2.676e-05, 2.677e-05, 2282.9547537], [1516512960000, 2.691e-05, 2.691e-05, 2.691e-05, 2.691e-05, 216.5012113], [1516513020000, 2.691e-05, 2.691e-05, 2.691e-05, 2.691e-05, 783.00450948], [1516513080000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 25.55625805], [1516513140000, 2.677e-05, 2.691e-05, 2.677e-05, 2.691e-05, 4102.52858459], [1516513260000, 2.691e-05, 2.691e-05, 2.691e-05, 2.691e-05, 633.69718227], [1516513320000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 3694.47721847], [1516513380000, 2.69e-05, 2.69e-05, 2.69e-05, 2.69e-05, 943.07552136], [1516513440000, 2.664e-05, 2.664e-05, 2.664e-05, 2.664e-05, 12545.11292844], [1516513500000, 2.671e-05, 2.671e-05, 2.664e-05, 2.664e-05, 557.4744448], [1516513560000, 2.664e-05, 2.69e-05, 2.662e-05, 2.671e-05, 7263.09120004], [1516513620000, 2.69e-05, 2.69e-05, 2.675e-05, 2.675e-05, 1212.05625023], [1516513680000, 2.675e-05, 2.675e-05, 2.675e-05, 2.675e-05, 154.5084], [1516513740000, 2.675e-05, 2.69e-05, 2.675e-05, 2.69e-05, 3697.08844139], [1516513800000, 2.69e-05, 2.69e-05, 2.69e-05, 2.69e-05, 2815.99499406], [1516513860000, 2.691e-05, 2.691e-05, 2.663e-05, 2.663e-05, 1048.01558717], [1516513920000, 2.664e-05, 2.664e-05, 2.664e-05, 2.664e-05, 24413.0695904], [1516513980000, 2.664e-05, 2.674e-05, 2.663e-05, 2.663e-05, 6873.77078598], [1516514040000, 2.663e-05, 2.663e-05, 2.663e-05, 2.663e-05, 6076.5901803], [1516514100000, 2.663e-05, 2.663e-05, 2.663e-05, 2.663e-05, 1848.57633972], [1516514160000, 2.663e-05, 2.663e-05, 2.663e-05, 2.663e-05, 3150.15124577], [1516514220000, 2.663e-05, 2.663e-05, 2.663e-05, 2.663e-05, 3435.57373129], [1516514280000, 2.663e-05, 2.663e-05, 2.663e-05, 2.663e-05, 1591.44514141], [1516514340000, 2.663e-05, 2.663e-05, 2.663e-05, 2.663e-05, 1321.95671829], [1516514400000, 2.663e-05, 2.663e-05, 2.663e-05, 2.663e-05, 110.97799374], [1516514460000, 2.663e-05, 2.663e-05, 2.662e-05, 2.662e-05, 13619.66448777], [1516514520000, 2.662e-05, 2.662e-05, 2.662e-05, 2.662e-05, 1818.88222902], [1516514580000, 2.66e-05, 2.66e-05, 2.654e-05, 2.655e-05, 5222.99981375], [1516514640000, 2.654e-05, 2.654e-05, 2.643e-05, 2.643e-05, 61111.372341], [1516514700000, 2.646e-05, 2.646e-05, 2.646e-05, 2.646e-05, 721.23374297], [1516514760000, 2.663e-05, 2.663e-05, 2.663e-05, 2.663e-05, 44.68562668], [1516514880000, 2.662e-05, 2.662e-05, 2.66e-05, 2.66e-05, 4491.45998833], [1516514940000, 2.659e-05, 2.659e-05, 2.659e-05, 2.659e-05, 10576.49995133], [1516515000000, 2.659e-05, 2.659e-05, 2.659e-05, 2.659e-05, 5954.03131045], [1516515060000, 2.65e-05, 2.65e-05, 2.65e-05, 2.65e-05, 2657.76746015], [1516515120000, 2.65e-05, 2.65e-05, 2.65e-05, 2.65e-05, 157.0], [1516515180000, 2.651e-05, 2.651e-05, 2.65e-05, 2.65e-05, 2655.39631302], [1516515240000, 2.65e-05, 2.651e-05, 2.65e-05, 2.651e-05, 3164.41477387], [1516515300000, 2.66e-05, 2.66e-05, 2.66e-05, 2.66e-05, 200.0], [1516515360000, 2.651e-05, 2.651e-05, 2.651e-05, 2.651e-05, 44169.22997643], [1516515420000, 2.66e-05, 2.66e-05, 2.66e-05, 2.66e-05, 796.294125], [1516515480000, 2.66e-05, 2.672e-05, 2.66e-05, 2.663e-05, 2101.77496857], [1516515540000, 2.663e-05, 2.663e-05, 2.663e-05, 2.663e-05, 381.65091119], [1516515600000, 2.663e-05, 2.663e-05, 2.66e-05, 2.663e-05, 5745.41325569], [1516515660000, 2.66e-05, 2.663e-05, 2.66e-05, 2.663e-05, 2463.73690441], [1516515720000, 2.663e-05, 2.686e-05, 2.663e-05, 2.686e-05, 8164.81697976], [1516515780000, 2.686e-05, 2.69e-05, 2.686e-05, 2.69e-05, 49568.33643603], [1516515900000, 2.688e-05, 2.689e-05, 2.688e-05, 2.689e-05, 500.0], [1516515960000, 2.687e-05, 2.69e-05, 2.687e-05, 2.69e-05, 17533.38957439], [1516516020000, 2.664e-05, 2.664e-05, 2.664e-05, 2.664e-05, 2370.53865227], [1516516080000, 2.664e-05, 2.664e-05, 2.664e-05, 2.664e-05, 2034.46621622], [1516516140000, 2.691e-05, 2.691e-05, 2.691e-05, 2.691e-05, 284.74474135], [1516516200000, 2.664e-05, 2.691e-05, 2.664e-05, 2.691e-05, 2677.24996655], [1516516320000, 2.68e-05, 2.68e-05, 2.66e-05, 2.66e-05, 263.63352623], [1516516380000, 2.66e-05, 2.66e-05, 2.66e-05, 2.66e-05, 2893.29800178], [1516516440000, 2.657e-05, 2.66e-05, 2.654e-05, 2.654e-05, 1394.47445835], [1516516500000, 2.654e-05, 2.654e-05, 2.654e-05, 2.654e-05, 2.0], [1516516620000, 2.654e-05, 2.654e-05, 2.654e-05, 2.654e-05, 3721.42030413], [1516516680000, 2.654e-05, 2.654e-05, 2.654e-05, 2.654e-05, 2878.27730037], [1516516740000, 2.66e-05, 2.66e-05, 2.66e-05, 2.66e-05, 14251.61628891], [1516516800000, 2.66e-05, 2.66e-05, 2.652e-05, 2.659e-05, 37007.21201176], [1516516920000, 2.651e-05, 2.651e-05, 2.65e-05, 2.65e-05, 6114.14903488], [1516516980000, 2.65e-05, 2.65e-05, 2.647e-05, 2.65e-05, 19644.2048291], [1516517040000, 2.649e-05, 2.65e-05, 2.649e-05, 2.65e-05, 2932.60546204], [1516517100000, 2.65e-05, 2.65e-05, 2.65e-05, 2.65e-05, 850.69413752], [1516517160000, 2.65e-05, 2.65e-05, 2.65e-05, 2.65e-05, 1025.86975429], [1516517220000, 2.65e-05, 2.65e-05, 2.65e-05, 2.65e-05, 965.51219545], [1516517280000, 2.659e-05, 2.66e-05, 2.659e-05, 2.66e-05, 2000.28628608], [1516517340000, 2.649e-05, 2.649e-05, 2.647e-05, 2.647e-05, 2563.65875625], [1516517460000, 2.648e-05, 2.648e-05, 2.647e-05, 2.647e-05, 5851.75393921], [1516517580000, 2.66e-05, 2.66e-05, 2.66e-05, 2.66e-05, 172.87969924], [1516517640000, 2.66e-05, 2.66e-05, 2.66e-05, 2.66e-05, 3739.65742551], [1516517700000, 2.66e-05, 2.661e-05, 2.66e-05, 2.661e-05, 9699.19476125], [1516517760000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 11192.910395], [1516517820000, 2.677e-05, 2.677e-05, 2.677e-05, 2.677e-05, 39.11025573], [1516518000000, 2.657e-05, 2.677e-05, 2.657e-05, 2.677e-05, 2853.30983546], [1516518060000, 2.667e-05, 2.667e-05, 2.667e-05, 2.667e-05, 2390.29306187], [1516518120000, 2.657e-05, 2.666e-05, 2.657e-05, 2.666e-05, 118.67762421], [1516518240000, 2.658e-05, 2.658e-05, 2.656e-05, 2.656e-05, 3673.46552247], [1516518300000, 2.657e-05, 2.665e-05, 2.657e-05, 2.665e-05, 1281.36033389], [1516518360000, 2.665e-05, 2.665e-05, 2.665e-05, 2.665e-05, 2345.236086], [1516518420000, 2.665e-05, 2.665e-05, 2.665e-05, 2.665e-05, 510.0], [1516518480000, 2.665e-05, 2.665e-05, 2.657e-05, 2.657e-05, 11914.37316342], [1516518540000, 2.655e-05, 2.655e-05, 2.652e-05, 2.652e-05, 3149.09148588], [1516518600000, 2.65e-05, 2.652e-05, 2.648e-05, 2.652e-05, 3294.48119526], [1516518660000, 2.652e-05, 2.652e-05, 2.638e-05, 2.638e-05, 31531.70196488], [1516518720000, 2.652e-05, 2.652e-05, 2.652e-05, 2.652e-05, 391.0], [1516518780000, 2.652e-05, 2.652e-05, 2.652e-05, 2.652e-05, 24180.47386634], [1516518840000, 2.664e-05, 2.664e-05, 2.656e-05, 2.656e-05, 219.6433202], [1516518960000, 2.664e-05, 2.664e-05, 2.657e-05, 2.657e-05, 1036.23188405], [1516519020000, 2.657e-05, 2.657e-05, 2.657e-05, 2.657e-05, 3303.73649283], [1516519080000, 2.657e-05, 2.657e-05, 2.652e-05, 2.655e-05, 14831.6019227], [1516519140000, 2.655e-05, 2.656e-05, 2.655e-05, 2.656e-05, 7385.34672514], [1516519260000, 2.652e-05, 2.655e-05, 2.652e-05, 2.655e-05, 454.56078727], [1516519320000, 2.652e-05, 2.652e-05, 2.652e-05, 2.652e-05, 5219.50159135], [1516519500000, 2.652e-05, 2.655e-05, 2.631e-05, 2.631e-05, 19808.89607669], [1516519560000, 2.631e-05, 2.631e-05, 2.631e-05, 2.631e-05, 381.36363636], [1516519620000, 2.631e-05, 2.631e-05, 2.63e-05, 2.63e-05, 2158.33344406], [1516519680000, 2.63e-05, 2.653e-05, 2.63e-05, 2.63e-05, 2312.48015489], [1516519860000, 2.653e-05, 2.655e-05, 2.653e-05, 2.655e-05, 841.093516], [1516519920000, 2.636e-05, 2.636e-05, 2.632e-05, 2.636e-05, 50231.52822489], [1516519980000, 2.637e-05, 2.637e-05, 2.637e-05, 2.637e-05, 3423.14019736], [1516520220000, 2.638e-05, 2.638e-05, 2.638e-05, 2.638e-05, 100.0], [1516520280000, 2.638e-05, 2.638e-05, 2.63e-05, 2.632e-05, 25080.95049105], [1516520340000, 2.638e-05, 2.639e-05, 2.638e-05, 2.639e-05, 1453.47146665], [1516520400000, 2.639e-05, 2.639e-05, 2.639e-05, 2.639e-05, 12260.20026261], [1516520460000, 2.638e-05, 2.641e-05, 2.638e-05, 2.64e-05, 2920.46053678], [1516520580000, 2.638e-05, 2.638e-05, 2.638e-05, 2.638e-05, 1786.85520239], [1516520640000, 2.638e-05, 2.638e-05, 2.638e-05, 2.638e-05, 1628.25261906], [1516520700000, 2.633e-05, 2.633e-05, 2.627e-05, 2.627e-05, 2187.8758566], [1516520760000, 2.627e-05, 2.63e-05, 2.62e-05, 2.63e-05, 57942.0143988], [1516520820000, 2.63e-05, 2.63e-05, 2.615e-05, 2.618e-05, 80545.66041425], [1516520880000, 2.618e-05, 2.62e-05, 2.61e-05, 2.614e-05, 72298.19870622], [1516520940000, 2.614e-05, 2.62e-05, 2.61e-05, 2.61e-05, 16908.49676648], [1516521000000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 12177.924315], [1516521060000, 2.61e-05, 2.61e-05, 2.608e-05, 2.609e-05, 63775.02071077], [1516521120000, 2.61e-05, 2.62e-05, 2.609e-05, 2.619e-05, 25083.45318592], [1516521180000, 2.619e-05, 2.62e-05, 2.618e-05, 2.619e-05, 5339.74880911], [1516521240000, 2.619e-05, 2.62e-05, 2.619e-05, 2.62e-05, 4967.15057734], [1516521300000, 2.619e-05, 2.619e-05, 2.611e-05, 2.611e-05, 144.0], [1516521360000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 751.73842158], [1516521420000, 2.611e-05, 2.611e-05, 2.61e-05, 2.61e-05, 124.0], [1516521480000, 2.615e-05, 2.615e-05, 2.611e-05, 2.615e-05, 11771.32919068], [1516521540000, 2.612e-05, 2.612e-05, 2.611e-05, 2.611e-05, 1853.57552133], [1516521600000, 2.611e-05, 2.612e-05, 2.61e-05, 2.612e-05, 17073.77363897], [1516521660000, 2.61e-05, 2.61e-05, 2.609e-05, 2.609e-05, 11892.44235135], [1516521720000, 2.609e-05, 2.609e-05, 2.608e-05, 2.609e-05, 4513.86313316], [1516521780000, 2.607e-05, 2.609e-05, 2.605e-05, 2.609e-05, 4845.58829003], [1516521840000, 2.609e-05, 2.609e-05, 2.605e-05, 2.609e-05, 10267.13934416], [1516521900000, 2.609e-05, 2.609e-05, 2.609e-05, 2.609e-05, 4739.19336942], [1516521960000, 2.609e-05, 2.609e-05, 2.601e-05, 2.601e-05, 3443.08404289], [1516522020000, 2.601e-05, 2.608e-05, 2.601e-05, 2.608e-05, 2803.62218514], [1516522080000, 2.605e-05, 2.609e-05, 2.604e-05, 2.609e-05, 18194.70919016], [1516522140000, 2.609e-05, 2.61e-05, 2.608e-05, 2.609e-05, 14345.08458601], [1516522200000, 2.614e-05, 2.62e-05, 2.614e-05, 2.62e-05, 1606.84252515], [1516522260000, 2.62e-05, 2.62e-05, 2.62e-05, 2.62e-05, 279.64539047], [1516522320000, 2.62e-05, 2.62e-05, 2.62e-05, 2.62e-05, 2896.22138424], [1516522380000, 2.62e-05, 2.62e-05, 2.62e-05, 2.62e-05, 293.40953517], [1516522440000, 2.638e-05, 2.653e-05, 2.638e-05, 2.653e-05, 300.0], [1516522500000, 2.642e-05, 2.642e-05, 2.642e-05, 2.642e-05, 288.0], [1516522560000, 2.64e-05, 2.64e-05, 2.64e-05, 2.64e-05, 50.0], [1516522620000, 2.64e-05, 2.653e-05, 2.64e-05, 2.653e-05, 23608.09862236], [1516522800000, 2.641e-05, 2.641e-05, 2.626e-05, 2.626e-05, 185.54161961], [1516522860000, 2.641e-05, 2.641e-05, 2.641e-05, 2.641e-05, 530.84081385], [1516522920000, 2.653e-05, 2.653e-05, 2.645e-05, 2.646e-05, 524.67090788], [1516522980000, 2.653e-05, 2.653e-05, 2.653e-05, 2.653e-05, 3000.0], [1516523040000, 2.646e-05, 2.665e-05, 2.646e-05, 2.665e-05, 12230.67586727], [1516523100000, 2.665e-05, 2.68e-05, 2.661e-05, 2.68e-05, 20405.20348584], [1516523160000, 2.665e-05, 2.68e-05, 2.665e-05, 2.68e-05, 5182.26788396], [1516523220000, 2.68e-05, 2.68e-05, 2.676e-05, 2.676e-05, 941.0696471], [1516523280000, 2.68e-05, 2.68e-05, 2.676e-05, 2.676e-05, 3573.96821654], [1516523340000, 2.667e-05, 2.667e-05, 2.662e-05, 2.666e-05, 21403.3578311], [1516523400000, 2.675e-05, 2.676e-05, 2.667e-05, 2.676e-05, 782.63202425], [1516523460000, 2.676e-05, 2.68e-05, 2.676e-05, 2.676e-05, 5692.28466935], [1516523520000, 2.676e-05, 2.688e-05, 2.676e-05, 2.688e-05, 3197.44550185], [1516523580000, 2.689e-05, 2.692e-05, 2.688e-05, 2.689e-05, 5337.71250873], [1516523640000, 2.696e-05, 2.698e-05, 2.696e-05, 2.698e-05, 24781.76643054], [1516523700000, 2.698e-05, 2.698e-05, 2.698e-05, 2.698e-05, 2030.30968812], [1516523820000, 2.681e-05, 2.681e-05, 2.681e-05, 2.681e-05, 3067.18811366], [1516523880000, 2.681e-05, 2.681e-05, 2.681e-05, 2.681e-05, 900.0], [1516523940000, 2.679e-05, 2.699e-05, 2.676e-05, 2.699e-05, 89044.32344586], [1516524060000, 2.68e-05, 2.699e-05, 2.68e-05, 2.699e-05, 1991.04387136], [1516524120000, 2.7e-05, 2.7e-05, 2.7e-05, 2.7e-05, 3550.27811641], [1516524180000, 2.701e-05, 2.701e-05, 2.701e-05, 2.701e-05, 5107.66132705], [1516524240000, 2.675e-05, 2.702e-05, 2.675e-05, 2.702e-05, 14509.61541631], [1516524300000, 2.7e-05, 2.7e-05, 2.7e-05, 2.7e-05, 6456.75724554], [1516524360000, 2.7e-05, 2.7e-05, 2.7e-05, 2.7e-05, 399.46525483], [1516524540000, 2.675e-05, 2.675e-05, 2.675e-05, 2.675e-05, 121.08945408], [1516524600000, 2.675e-05, 2.675e-05, 2.675e-05, 2.675e-05, 482.6648178], [1516524660000, 2.698e-05, 2.7e-05, 2.698e-05, 2.7e-05, 37916.98368744], [1516524720000, 2.676e-05, 2.676e-05, 2.675e-05, 2.675e-05, 3574.81576826], [1516524780000, 2.672e-05, 2.672e-05, 2.672e-05, 2.672e-05, 2522.788851], [1516524840000, 2.672e-05, 2.674e-05, 2.671e-05, 2.671e-05, 6125.17592005], [1516524900000, 2.671e-05, 2.671e-05, 2.671e-05, 2.671e-05, 514.40932371], [1516524960000, 2.671e-05, 2.697e-05, 2.671e-05, 2.696e-05, 700.68634077], [1516525080000, 2.671e-05, 2.671e-05, 2.67e-05, 2.67e-05, 488.20754717], [1516525140000, 2.671e-05, 2.671e-05, 2.671e-05, 2.671e-05, 1696.31142353], [1516525200000, 2.668e-05, 2.668e-05, 2.668e-05, 2.668e-05, 1516.50581293], [1516525260000, 2.67e-05, 2.67e-05, 2.67e-05, 2.67e-05, 3425.2248539], [1516525320000, 2.669e-05, 2.689e-05, 2.669e-05, 2.689e-05, 25469.89407557], [1516525380000, 2.671e-05, 2.671e-05, 2.668e-05, 2.668e-05, 3034.06301318], [1516525440000, 2.668e-05, 2.668e-05, 2.668e-05, 2.668e-05, 270.92073254], [1516525560000, 2.668e-05, 2.668e-05, 2.668e-05, 2.668e-05, 4620.65998061], [1516525620000, 2.668e-05, 2.668e-05, 2.668e-05, 2.668e-05, 820.97506351], [1516525680000, 2.671e-05, 2.671e-05, 2.668e-05, 2.671e-05, 2561.62413672], [1516525800000, 2.671e-05, 2.671e-05, 2.668e-05, 2.668e-05, 3433.112246], [1516525860000, 2.668e-05, 2.668e-05, 2.668e-05, 2.668e-05, 9804.65737963], [1516525920000, 2.667e-05, 2.669e-05, 2.667e-05, 2.667e-05, 8270.31334554], [1516525980000, 2.665e-05, 2.665e-05, 2.631e-05, 2.631e-05, 2816.01776808], [1516526040000, 2.638e-05, 2.638e-05, 2.638e-05, 2.638e-05, 254.60971292], [1516526160000, 2.638e-05, 2.638e-05, 2.635e-05, 2.635e-05, 8767.90285751], [1516526220000, 2.659e-05, 2.659e-05, 2.659e-05, 2.659e-05, 2022.33427604], [1516526340000, 2.638e-05, 2.638e-05, 2.583e-05, 2.638e-05, 125894.94836356], [1516526400000, 2.588e-05, 2.626e-05, 2.588e-05, 2.62e-05, 19683.53805101], [1516526460000, 2.619e-05, 2.619e-05, 2.619e-05, 2.619e-05, 8824.54010862], [1516526520000, 2.619e-05, 2.62e-05, 2.619e-05, 2.62e-05, 420.94762583], [1516526580000, 2.619e-05, 2.619e-05, 2.581e-05, 2.619e-05, 37025.50803801], [1516526640000, 2.62e-05, 2.62e-05, 2.59e-05, 2.59e-05, 1702.07140255], [1516526700000, 2.619e-05, 2.619e-05, 2.619e-05, 2.619e-05, 38.08705613], [1516526760000, 2.619e-05, 2.619e-05, 2.619e-05, 2.619e-05, 216.61632302], [1516526820000, 2.617e-05, 2.617e-05, 2.59e-05, 2.59e-05, 8869.57762237], [1516527000000, 2.617e-05, 2.617e-05, 2.596e-05, 2.596e-05, 15547.78007679], [1516527060000, 2.616e-05, 2.616e-05, 2.602e-05, 2.602e-05, 2630.13959002], [1516527180000, 2.616e-05, 2.618e-05, 2.616e-05, 2.616e-05, 8520.88040286], [1516527240000, 2.616e-05, 2.619e-05, 2.616e-05, 2.619e-05, 3079.73298902], [1516527420000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 1061.83136976], [1516527480000, 2.602e-05, 2.616e-05, 2.602e-05, 2.616e-05, 2428.11907644], [1516527540000, 2.601e-05, 2.619e-05, 2.601e-05, 2.619e-05, 24277.18587283], [1516527600000, 2.619e-05, 2.619e-05, 2.619e-05, 2.619e-05, 1.01e-06], [1516527660000, 2.602e-05, 2.602e-05, 2.6e-05, 2.6e-05, 14992.14380032], [1516527720000, 2.595e-05, 2.595e-05, 2.585e-05, 2.59e-05, 5260.79088705], [1516527780000, 2.602e-05, 2.602e-05, 2.581e-05, 2.581e-05, 6608.09389209], [1516527840000, 2.581e-05, 2.581e-05, 2.58e-05, 2.58e-05, 3784.41622178], [1516527900000, 2.582e-05, 2.602e-05, 2.582e-05, 2.602e-05, 29142.49441588], [1516527960000, 2.602e-05, 2.602e-05, 2.602e-05, 2.602e-05, 3833.5895465], [1516528020000, 2.593e-05, 2.594e-05, 2.593e-05, 2.593e-05, 10059.61148088], [1516528080000, 2.593e-05, 2.593e-05, 2.593e-05, 2.593e-05, 341.55047661], [1516528140000, 2.594e-05, 2.594e-05, 2.594e-05, 2.594e-05, 307.96548989], [1516528200000, 2.595e-05, 2.602e-05, 2.594e-05, 2.602e-05, 17777.05192136], [1516528260000, 2.609e-05, 2.609e-05, 2.609e-05, 2.609e-05, 58.98698293], [1516528440000, 2.618e-05, 2.619e-05, 2.618e-05, 2.619e-05, 6819.52122366], [1516528500000, 2.619e-05, 2.619e-05, 2.619e-05, 2.619e-05, 176.50834403], [1516528560000, 2.609e-05, 2.614e-05, 2.609e-05, 2.614e-05, 8197.40629209], [1516528620000, 2.614e-05, 2.614e-05, 2.614e-05, 2.614e-05, 795.71334096], [1516528680000, 2.614e-05, 2.614e-05, 2.614e-05, 2.614e-05, 1038.08697291], [1516528740000, 2.61e-05, 2.61e-05, 2.594e-05, 2.594e-05, 35442.36256879], [1516528860000, 2.6e-05, 2.607e-05, 2.6e-05, 2.607e-05, 9433.37515985], [1516528920000, 2.613e-05, 2.613e-05, 2.613e-05, 2.613e-05, 2773.08870953], [1516528980000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 102.28437047], [1516529040000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 1172.28103504], [1516529100000, 2.607e-05, 2.607e-05, 2.582e-05, 2.582e-05, 5329.64855487], [1516529220000, 2.607e-05, 2.607e-05, 2.597e-05, 2.597e-05, 1901.8916133], [1516529280000, 2.597e-05, 2.597e-05, 2.597e-05, 2.597e-05, 906.09115178], [1516529340000, 2.606e-05, 2.607e-05, 2.6e-05, 2.607e-05, 6881.0519242], [1516529400000, 2.619e-05, 2.62e-05, 2.619e-05, 2.619e-05, 565.37407463], [1516529460000, 2.619e-05, 2.619e-05, 2.582e-05, 2.582e-05, 26672.55963454], [1516529520000, 2.59e-05, 2.59e-05, 2.59e-05, 2.59e-05, 623.4375], [1516529640000, 2.593e-05, 2.594e-05, 2.593e-05, 2.594e-05, 1108.23983176], [1516529700000, 2.62e-05, 2.62e-05, 2.62e-05, 2.62e-05, 80.0], [1516529760000, 2.62e-05, 2.631e-05, 2.62e-05, 2.631e-05, 2786.68455732], [1516529820000, 2.631e-05, 2.631e-05, 2.631e-05, 2.631e-05, 4671.08379261], [1516529880000, 2.631e-05, 2.631e-05, 2.631e-05, 2.631e-05, 3501.71938997], [1516530000000, 2.629e-05, 2.629e-05, 2.628e-05, 2.628e-05, 1094.61118597], [1516530060000, 2.628e-05, 2.628e-05, 2.627e-05, 2.627e-05, 2086.29128173], [1516530120000, 2.62e-05, 2.62e-05, 2.62e-05, 2.62e-05, 220.67145063], [1516530360000, 2.619e-05, 2.632e-05, 2.619e-05, 2.632e-05, 4065.92221784], [1516530420000, 2.633e-05, 2.634e-05, 2.618e-05, 2.618e-05, 13160.25305487], [1516530540000, 2.618e-05, 2.618e-05, 2.618e-05, 2.618e-05, 1912.06541005], [1516530660000, 2.62e-05, 2.62e-05, 2.62e-05, 2.62e-05, 210.30136753], [1516530720000, 2.632e-05, 2.632e-05, 2.632e-05, 2.632e-05, 897.13444351], [1516530780000, 2.627e-05, 2.627e-05, 2.627e-05, 2.627e-05, 2576.03654238], [1516530840000, 2.627e-05, 2.627e-05, 2.618e-05, 2.618e-05, 5384.72522851], [1516530900000, 2.63e-05, 2.63e-05, 2.618e-05, 2.618e-05, 1523.17547762], [1516530960000, 2.628e-05, 2.628e-05, 2.607e-05, 2.607e-05, 288.09496801], [1516531020000, 2.608e-05, 2.608e-05, 2.607e-05, 2.607e-05, 1008.78268511], [1516531080000, 2.607e-05, 2.608e-05, 2.593e-05, 2.608e-05, 35564.1059592], [1516531140000, 2.595e-05, 2.595e-05, 2.595e-05, 2.595e-05, 175.0], [1516531260000, 2.596e-05, 2.625e-05, 2.596e-05, 2.625e-05, 199.99999999], [1516531320000, 2.625e-05, 2.625e-05, 2.623e-05, 2.623e-05, 220.49181806], [1516531440000, 2.622e-05, 2.622e-05, 2.608e-05, 2.608e-05, 1119.36378379], [1516531500000, 2.608e-05, 2.622e-05, 2.608e-05, 2.622e-05, 233.08336031], [1516531560000, 2.622e-05, 2.622e-05, 2.607e-05, 2.607e-05, 64.46356781], [1516531620000, 2.618e-05, 2.618e-05, 2.607e-05, 2.607e-05, 5527.99875219], [1516531680000, 2.607e-05, 2.607e-05, 2.592e-05, 2.601e-05, 9856.58489689], [1516531740000, 2.601e-05, 2.601e-05, 2.601e-05, 2.601e-05, 889.98831902], [1516531800000, 2.601e-05, 2.601e-05, 2.601e-05, 2.601e-05, 198.69704074], [1516531920000, 2.601e-05, 2.601e-05, 2.6e-05, 2.601e-05, 1543.35361779], [1516531980000, 2.601e-05, 2.601e-05, 2.601e-05, 2.601e-05, 3649.04485], [1516532040000, 2.6e-05, 2.6e-05, 2.6e-05, 2.6e-05, 5053.87322201], [1516532100000, 2.6e-05, 2.6e-05, 2.6e-05, 2.6e-05, 306.27871363], [1516532160000, 2.6e-05, 2.601e-05, 2.6e-05, 2.601e-05, 22114.24388509], [1516532220000, 2.601e-05, 2.615e-05, 2.601e-05, 2.615e-05, 3546.63020847], [1516532280000, 2.602e-05, 2.602e-05, 2.601e-05, 2.602e-05, 12844.10249949], [1516532340000, 2.596e-05, 2.596e-05, 2.596e-05, 2.596e-05, 1326.32607696], [1516532400000, 2.612e-05, 2.612e-05, 2.612e-05, 2.612e-05, 80.64516129], [1516532460000, 2.61e-05, 2.61e-05, 2.609e-05, 2.609e-05, 279.92435361], [1516532520000, 2.609e-05, 2.609e-05, 2.609e-05, 2.609e-05, 45.59270516], [1516532640000, 2.608e-05, 2.608e-05, 2.597e-05, 2.597e-05, 6116.0432603], [1516532760000, 2.6e-05, 2.6e-05, 2.598e-05, 2.598e-05, 221.29943059], [1516532820000, 2.594e-05, 2.594e-05, 2.583e-05, 2.583e-05, 24716.67522103], [1516532880000, 2.603e-05, 2.603e-05, 2.603e-05, 2.603e-05, 6204.95919335], [1516532940000, 2.603e-05, 2.603e-05, 2.591e-05, 2.591e-05, 5669.21687384], [1516533000000, 2.591e-05, 2.606e-05, 2.591e-05, 2.591e-05, 9777.47939955], [1516533060000, 2.6e-05, 2.6e-05, 2.6e-05, 2.6e-05, 8750.8114932], [1516533120000, 2.591e-05, 2.591e-05, 2.591e-05, 2.591e-05, 160.0], [1516533180000, 2.591e-05, 2.596e-05, 2.591e-05, 2.591e-05, 4535.04330065], [1516533300000, 2.591e-05, 2.591e-05, 2.591e-05, 2.591e-05, 4520.27601352], [1516533360000, 2.591e-05, 2.599e-05, 2.591e-05, 2.599e-05, 6333.09058784], [1516533420000, 2.599e-05, 2.599e-05, 2.591e-05, 2.591e-05, 9393.97537311], [1516533480000, 2.592e-05, 2.592e-05, 2.592e-05, 2.592e-05, 3749.1885068], [1516533540000, 2.592e-05, 2.592e-05, 2.592e-05, 2.592e-05, 840.0], [1516533600000, 2.596e-05, 2.596e-05, 2.596e-05, 2.596e-05, 4420.61618265], [1516533660000, 2.597e-05, 2.6e-05, 2.597e-05, 2.6e-05, 9919.66408691], [1516533720000, 2.6e-05, 2.6e-05, 2.598e-05, 2.598e-05, 7596.14328493], [1516533780000, 2.609e-05, 2.609e-05, 2.598e-05, 2.598e-05, 1493.09451859], [1516533840000, 2.598e-05, 2.598e-05, 2.598e-05, 2.598e-05, 2000.13324353], [1516534020000, 2.608e-05, 2.608e-05, 2.599e-05, 2.6e-05, 16951.11513797], [1516534080000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 19950.31769855], [1516534140000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 27637.38081595], [1516534200000, 2.607e-05, 2.609e-05, 2.607e-05, 2.609e-05, 7036.18028022], [1516534260000, 2.609e-05, 2.609e-05, 2.609e-05, 2.609e-05, 955.83196091], [1516534320000, 2.609e-05, 2.609e-05, 2.609e-05, 2.609e-05, 4197.92951035], [1516534380000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 5994.18721889], [1516534500000, 2.608e-05, 2.609e-05, 2.608e-05, 2.609e-05, 32198.52010903], [1516534560000, 2.617e-05, 2.617e-05, 2.617e-05, 2.617e-05, 20.0], [1516534620000, 2.619e-05, 2.635e-05, 2.619e-05, 2.635e-05, 3083.02374992], [1516534680000, 2.635e-05, 2.635e-05, 2.635e-05, 2.635e-05, 20.0], [1516534740000, 2.617e-05, 2.617e-05, 2.617e-05, 2.617e-05, 857.10020911], [1516534800000, 2.612e-05, 2.612e-05, 2.599e-05, 2.607e-05, 6819.62237347], [1516534860000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 1925.46890016], [1516534920000, 2.612e-05, 2.612e-05, 2.612e-05, 2.612e-05, 507.52571099], [1516534980000, 2.612e-05, 2.612e-05, 2.612e-05, 2.612e-05, 372.92425319], [1516535100000, 2.63e-05, 2.63e-05, 2.607e-05, 2.63e-05, 40331.86895771], [1516535160000, 2.633e-05, 2.633e-05, 2.63e-05, 2.63e-05, 13192.9510698], [1516535220000, 2.609e-05, 2.609e-05, 2.605e-05, 2.605e-05, 1641.38840326], [1516535280000, 2.605e-05, 2.627e-05, 2.605e-05, 2.615e-05, 6853.20222758], [1516535340000, 2.615e-05, 2.623e-05, 2.615e-05, 2.623e-05, 701.623], [1516535400000, 2.623e-05, 2.623e-05, 2.623e-05, 2.623e-05, 752.27068242], [1516535460000, 2.623e-05, 2.623e-05, 2.61e-05, 2.61e-05, 3671.19195898], [1516535520000, 2.61e-05, 2.621e-05, 2.6e-05, 2.621e-05, 28093.18809614], [1516535580000, 2.621e-05, 2.621e-05, 2.611e-05, 2.611e-05, 2821.81190385], [1516535640000, 2.621e-05, 2.623e-05, 2.621e-05, 2.623e-05, 8737.73322397], [1516535700000, 2.629e-05, 2.629e-05, 2.623e-05, 2.623e-05, 41.07417432], [1516535760000, 2.625e-05, 2.629e-05, 2.625e-05, 2.629e-05, 1942.58584329], [1516535820000, 2.631e-05, 2.631e-05, 2.63e-05, 2.63e-05, 5630.47703485], [1516535880000, 2.63e-05, 2.63e-05, 2.625e-05, 2.625e-05, 2006.72634425], [1516535940000, 2.625e-05, 2.625e-05, 2.625e-05, 2.625e-05, 74.80421866], [1516536000000, 2.625e-05, 2.625e-05, 2.625e-05, 2.625e-05, 2357.85400335], [1516536060000, 2.629e-05, 2.644e-05, 2.629e-05, 2.644e-05, 129266.51402726], [1516536120000, 2.642e-05, 2.642e-05, 2.626e-05, 2.626e-05, 3295.57914387], [1516536180000, 2.626e-05, 2.627e-05, 2.626e-05, 2.627e-05, 1854.86928711], [1516536240000, 2.627e-05, 2.627e-05, 2.627e-05, 2.627e-05, 443.14325248], [1516536300000, 2.629e-05, 2.629e-05, 2.629e-05, 2.629e-05, 675.34983955], [1516536360000, 2.63e-05, 2.63e-05, 2.63e-05, 2.63e-05, 1804.52806818], [1516536420000, 2.629e-05, 2.63e-05, 2.629e-05, 2.63e-05, 2637.66615095], [1516536480000, 2.63e-05, 2.647e-05, 2.601e-05, 2.647e-05, 49868.01163948], [1516536600000, 2.64e-05, 2.644e-05, 2.64e-05, 2.644e-05, 3971.145], [1516536660000, 2.645e-05, 2.645e-05, 2.609e-05, 2.609e-05, 4961.93921098], [1516536720000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 343.18470794], [1516536780000, 2.629e-05, 2.629e-05, 2.625e-05, 2.625e-05, 594.07342992], [1516536840000, 2.644e-05, 2.645e-05, 2.637e-05, 2.644e-05, 12024.1045129], [1516536900000, 2.643e-05, 2.643e-05, 2.629e-05, 2.629e-05, 9139.32707081], [1516536960000, 2.625e-05, 2.629e-05, 2.605e-05, 2.605e-05, 11136.74475468], [1516537020000, 2.605e-05, 2.615e-05, 2.603e-05, 2.615e-05, 30990.28915629], [1516537080000, 2.604e-05, 2.629e-05, 2.604e-05, 2.608e-05, 779.2346717], [1516537140000, 2.629e-05, 2.629e-05, 2.629e-05, 2.629e-05, 76.07455306], [1516537200000, 2.629e-05, 2.631e-05, 2.629e-05, 2.631e-05, 6902.06467046], [1516537260000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 1000.0], [1516537320000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 11640.37550958], [1516537380000, 2.627e-05, 2.627e-05, 2.627e-05, 2.627e-05, 8361.40801436], [1516537440000, 2.607e-05, 2.627e-05, 2.607e-05, 2.627e-05, 1246.19106134], [1516537500000, 2.627e-05, 2.627e-05, 2.627e-05, 2.627e-05, 187.10893113], [1516537560000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 447.12477965], [1516537620000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 5448.45622362], [1516537680000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 3426.43678923], [1516537740000, 2.627e-05, 2.627e-05, 2.627e-05, 2.627e-05, 178.27248143], [1516537800000, 2.627e-05, 2.627e-05, 2.627e-05, 2.627e-05, 2325.44112141], [1516537860000, 2.627e-05, 2.628e-05, 2.609e-05, 2.628e-05, 2877.6594168], [1516537920000, 2.628e-05, 2.633e-05, 2.628e-05, 2.632e-05, 3021.61439984], [1516537980000, 2.613e-05, 2.613e-05, 2.612e-05, 2.612e-05, 5539.80925327], [1516538040000, 2.612e-05, 2.612e-05, 2.612e-05, 2.612e-05, 2340.58777401], [1516538100000, 2.63e-05, 2.63e-05, 2.61e-05, 2.61e-05, 562.8652155], [1516538160000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 191.66179551], [1516538220000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 156.92713793], [1516538280000, 2.608e-05, 2.608e-05, 2.608e-05, 2.608e-05, 114.6023214], [1516538340000, 2.61e-05, 2.612e-05, 2.61e-05, 2.612e-05, 1848.13836406], [1516538400000, 2.609e-05, 2.609e-05, 2.608e-05, 2.608e-05, 13088.26932161], [1516538460000, 2.607e-05, 2.632e-05, 2.604e-05, 2.632e-05, 2926.00887639], [1516538520000, 2.628e-05, 2.628e-05, 2.627e-05, 2.627e-05, 1525.20790537], [1516538580000, 2.625e-05, 2.625e-05, 2.625e-05, 2.625e-05, 653.76175683], [1516538640000, 2.625e-05, 2.625e-05, 2.625e-05, 2.625e-05, 5707.12175484], [1516538700000, 2.625e-05, 2.625e-05, 2.625e-05, 2.625e-05, 651.31662539], [1516538760000, 2.625e-05, 2.629e-05, 2.625e-05, 2.625e-05, 2914.29275627], [1516538820000, 2.625e-05, 2.626e-05, 2.625e-05, 2.626e-05, 1013.68899734], [1516538880000, 2.627e-05, 2.627e-05, 2.627e-05, 2.627e-05, 499.28870249], [1516538940000, 2.627e-05, 2.627e-05, 2.627e-05, 2.627e-05, 194.82906741], [1516539120000, 2.608e-05, 2.609e-05, 2.608e-05, 2.609e-05, 850.42989804], [1516539180000, 2.609e-05, 2.625e-05, 2.609e-05, 2.625e-05, 3498.21321422], [1516539240000, 2.619e-05, 2.619e-05, 2.619e-05, 2.619e-05, 2809.85915493], [1516539300000, 2.609e-05, 2.609e-05, 2.6e-05, 2.6e-05, 43100.27802066], [1516539360000, 2.601e-05, 2.601e-05, 2.601e-05, 2.601e-05, 4507.91895212], [1516539420000, 2.623e-05, 2.623e-05, 2.61e-05, 2.61e-05, 2100.33532101], [1516539480000, 2.61e-05, 2.623e-05, 2.61e-05, 2.61e-05, 982.05941155], [1516539540000, 2.616e-05, 2.616e-05, 2.61e-05, 2.61e-05, 8660.74990343], [1516539600000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 2817.17607947], [1516539660000, 2.609e-05, 2.61e-05, 2.598e-05, 2.598e-05, 11195.15083465], [1516539720000, 2.598e-05, 2.622e-05, 2.598e-05, 2.598e-05, 1237.01199867], [1516539780000, 2.598e-05, 2.598e-05, 2.598e-05, 2.598e-05, 1200.0], [1516539840000, 2.622e-05, 2.622e-05, 2.598e-05, 2.606e-05, 1300.10043238], [1516539900000, 2.606e-05, 2.606e-05, 2.598e-05, 2.606e-05, 470.44093377], [1516539960000, 2.598e-05, 2.598e-05, 2.598e-05, 2.598e-05, 77.32395794], [1516540080000, 2.622e-05, 2.622e-05, 2.622e-05, 2.622e-05, 38.63689605], [1516540140000, 2.622e-05, 2.623e-05, 2.622e-05, 2.623e-05, 456.60392774], [1516540200000, 2.623e-05, 2.623e-05, 2.623e-05, 2.623e-05, 114.08763641], [1516540260000, 2.623e-05, 2.623e-05, 2.622e-05, 2.622e-05, 5868.71866311], [1516540320000, 2.621e-05, 2.621e-05, 2.621e-05, 2.621e-05, 46.924338], [1516540380000, 2.615e-05, 2.615e-05, 2.601e-05, 2.615e-05, 1383.50834088], [1516540440000, 2.615e-05, 2.615e-05, 2.615e-05, 2.615e-05, 604.04650942], [1516540560000, 2.62e-05, 2.62e-05, 2.615e-05, 2.615e-05, 1028.68684585], [1516540620000, 2.616e-05, 2.616e-05, 2.615e-05, 2.615e-05, 3296.80750184], [1516540680000, 2.615e-05, 2.615e-05, 2.615e-05, 2.615e-05, 320.0], [1516540740000, 2.615e-05, 2.615e-05, 2.615e-05, 2.615e-05, 8.36865174], [1516540980000, 2.608e-05, 2.615e-05, 2.608e-05, 2.615e-05, 496.41677432], [1516541100000, 2.615e-05, 2.615e-05, 2.615e-05, 2.615e-05, 0.79562019], [1516541160000, 2.608e-05, 2.608e-05, 2.608e-05, 2.608e-05, 535.03683539], [1516541340000, 2.608e-05, 2.608e-05, 2.606e-05, 2.608e-05, 4074.44633131], [1516541400000, 2.608e-05, 2.624e-05, 2.608e-05, 2.624e-05, 42419.61359597], [1516541460000, 2.624e-05, 2.624e-05, 2.609e-05, 2.609e-05, 1048.87045695], [1516541520000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 2416.84831406], [1516541580000, 2.627e-05, 2.635e-05, 2.625e-05, 2.625e-05, 3847.95780313], [1516541640000, 2.625e-05, 2.644e-05, 2.61e-05, 2.61e-05, 11378.39126976], [1516541700000, 2.614e-05, 2.643e-05, 2.614e-05, 2.643e-05, 10124.41383066], [1516541760000, 2.643e-05, 2.643e-05, 2.615e-05, 2.618e-05, 14384.9541722], [1516541880000, 2.642e-05, 2.642e-05, 2.615e-05, 2.615e-05, 41323.28412665], [1516541940000, 2.615e-05, 2.615e-05, 2.615e-05, 2.615e-05, 5462.43183214], [1516542000000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 890.82433766], [1516542060000, 2.61e-05, 2.611e-05, 2.61e-05, 2.61e-05, 8754.48326507], [1516542120000, 2.609e-05, 2.609e-05, 2.603e-05, 2.603e-05, 7386.19302176], [1516542180000, 2.606e-05, 2.606e-05, 2.605e-05, 2.606e-05, 9141.29363371], [1516542240000, 2.606e-05, 2.615e-05, 2.603e-05, 2.615e-05, 7591.06762727], [1516542360000, 2.614e-05, 2.614e-05, 2.614e-05, 2.614e-05, 23.3469097], [1516542420000, 2.613e-05, 2.613e-05, 2.601e-05, 2.601e-05, 11761.94626031], [1516542480000, 2.601e-05, 2.601e-05, 2.601e-05, 2.601e-05, 4387.44354958], [1516542540000, 2.601e-05, 2.601e-05, 2.6e-05, 2.6e-05, 12196.37154055], [1516542600000, 2.599e-05, 2.6e-05, 2.599e-05, 2.599e-05, 3274.51564544], [1516542660000, 2.599e-05, 2.601e-05, 2.599e-05, 2.601e-05, 5142.02930111], [1516542720000, 2.601e-05, 2.615e-05, 2.6e-05, 2.6e-05, 3153.93414901], [1516542780000, 2.599e-05, 2.599e-05, 2.598e-05, 2.598e-05, 3416.79989366], [1516542840000, 2.597e-05, 2.597e-05, 2.591e-05, 2.594e-05, 2126.00835914], [1516542900000, 2.594e-05, 2.599e-05, 2.594e-05, 2.599e-05, 1698.84631864], [1516542960000, 2.599e-05, 2.599e-05, 2.599e-05, 2.599e-05, 66.78262111], [1516543020000, 2.602e-05, 2.602e-05, 2.602e-05, 2.602e-05, 821.90324379], [1516543080000, 2.614e-05, 2.615e-05, 2.614e-05, 2.615e-05, 14182.5375376], [1516543140000, 2.615e-05, 2.615e-05, 2.615e-05, 2.615e-05, 452.3215406], [1516543200000, 2.621e-05, 2.621e-05, 2.621e-05, 2.621e-05, 423.0], [1516543260000, 2.625e-05, 2.629e-05, 2.625e-05, 2.629e-05, 6943.32140991], [1516543320000, 2.621e-05, 2.641e-05, 2.621e-05, 2.641e-05, 1730.68634461], [1516543380000, 2.639e-05, 2.639e-05, 2.639e-05, 2.639e-05, 12857.09182897], [1516543440000, 2.628e-05, 2.628e-05, 2.628e-05, 2.628e-05, 519.02833], [1516543500000, 2.628e-05, 2.641e-05, 2.628e-05, 2.641e-05, 1490.3932139], [1516543560000, 2.622e-05, 2.622e-05, 2.622e-05, 2.622e-05, 24.08132413], [1516543680000, 2.63e-05, 2.63e-05, 2.622e-05, 2.622e-05, 3894.69766181], [1516543740000, 2.622e-05, 2.623e-05, 2.622e-05, 2.622e-05, 5279.30161397], [1516543800000, 2.621e-05, 2.621e-05, 2.621e-05, 2.621e-05, 2436.90027871], [1516543860000, 2.621e-05, 2.64e-05, 2.621e-05, 2.64e-05, 521.85080573], [1516543920000, 2.638e-05, 2.638e-05, 2.638e-05, 2.638e-05, 310.99594034], [1516543980000, 2.621e-05, 2.64e-05, 2.621e-05, 2.64e-05, 11077.13468488], [1516544040000, 2.621e-05, 2.621e-05, 2.621e-05, 2.621e-05, 30.0], [1516544100000, 2.64e-05, 2.642e-05, 2.64e-05, 2.642e-05, 15407.15038356], [1516544160000, 2.642e-05, 2.65e-05, 2.642e-05, 2.65e-05, 14215.26968238], [1516544220000, 2.642e-05, 2.642e-05, 2.642e-05, 2.642e-05, 11706.75950583], [1516544280000, 2.642e-05, 2.642e-05, 2.642e-05, 2.642e-05, 4242.55056772], [1516544340000, 2.64e-05, 2.64e-05, 2.64e-05, 2.64e-05, 72.15408448], [1516544400000, 2.63e-05, 2.63e-05, 2.63e-05, 2.63e-05, 14760.20397212], [1516544460000, 2.63e-05, 2.643e-05, 2.63e-05, 2.643e-05, 82661.19104647], [1516544520000, 2.643e-05, 2.643e-05, 2.643e-05, 2.643e-05, 63.38297276], [1516544700000, 2.64e-05, 2.643e-05, 2.64e-05, 2.643e-05, 5000.0], [1516544760000, 2.623e-05, 2.643e-05, 2.623e-05, 2.643e-05, 1732.21823694], [1516544820000, 2.643e-05, 2.643e-05, 2.643e-05, 2.643e-05, 9068.83899785], [1516544880000, 2.643e-05, 2.643e-05, 2.623e-05, 2.623e-05, 464.96350364], [1516544940000, 2.643e-05, 2.643e-05, 2.623e-05, 2.623e-05, 3507.97726404], [1516545000000, 2.62e-05, 2.62e-05, 2.62e-05, 2.62e-05, 2224.73521758], [1516545120000, 2.621e-05, 2.621e-05, 2.616e-05, 2.62e-05, 4863.06462163], [1516545180000, 2.621e-05, 2.621e-05, 2.621e-05, 2.621e-05, 57.51323751], [1516545240000, 2.621e-05, 2.643e-05, 2.621e-05, 2.643e-05, 17088.89340464], [1516545300000, 2.643e-05, 2.643e-05, 2.643e-05, 2.643e-05, 480.83046538], [1516545420000, 2.643e-05, 2.643e-05, 2.622e-05, 2.641e-05, 7501.47945594], [1516545480000, 2.622e-05, 2.641e-05, 2.621e-05, 2.621e-05, 11563.10082524], [1516545540000, 2.62e-05, 2.62e-05, 2.605e-05, 2.605e-05, 10254.28837635], [1516545600000, 2.605e-05, 2.605e-05, 2.605e-05, 2.605e-05, 586.76837318], [1516545660000, 2.617e-05, 2.621e-05, 2.617e-05, 2.621e-05, 238.43857306], [1516545720000, 2.618e-05, 2.618e-05, 2.617e-05, 2.617e-05, 1157.79530592], [1516545780000, 2.62e-05, 2.621e-05, 2.617e-05, 2.617e-05, 4367.81127826], [1516545840000, 2.605e-05, 2.605e-05, 2.605e-05, 2.605e-05, 12482.47447788], [1516545900000, 2.605e-05, 2.606e-05, 2.602e-05, 2.602e-05, 46932.50135703], [1516545960000, 2.607e-05, 2.607e-05, 2.602e-05, 2.602e-05, 3276.25804335], [1516546020000, 2.607e-05, 2.621e-05, 2.607e-05, 2.621e-05, 724.03942027], [1516546080000, 2.622e-05, 2.622e-05, 2.622e-05, 2.622e-05, 804.999999], [1516546140000, 2.622e-05, 2.622e-05, 2.621e-05, 2.621e-05, 10467.92385216], [1516546200000, 2.631e-05, 2.631e-05, 2.621e-05, 2.621e-05, 5050.31100342], [1516546320000, 2.63e-05, 2.63e-05, 2.63e-05, 2.63e-05, 1290.0], [1516546380000, 2.63e-05, 2.642e-05, 2.63e-05, 2.642e-05, 2161.42455585], [1516546440000, 2.642e-05, 2.642e-05, 2.642e-05, 2.642e-05, 311.63832181], [1516546500000, 2.622e-05, 2.644e-05, 2.621e-05, 2.644e-05, 26569.57333335], [1516546560000, 2.621e-05, 2.642e-05, 2.621e-05, 2.623e-05, 5179.57812347], [1516546620000, 2.624e-05, 2.624e-05, 2.606e-05, 2.606e-05, 1110.01077123], [1516546740000, 2.607e-05, 2.607e-05, 2.606e-05, 2.606e-05, 1589.951332], [1516546800000, 2.606e-05, 2.621e-05, 2.606e-05, 2.621e-05, 5214.72251706], [1516546860000, 2.621e-05, 2.621e-05, 2.621e-05, 2.621e-05, 574.89088134], [1516546980000, 2.61e-05, 2.61e-05, 2.608e-05, 2.61e-05, 1549.49991821], [1516547040000, 2.608e-05, 2.61e-05, 2.605e-05, 2.61e-05, 6112.73977521], [1516547100000, 2.619e-05, 2.62e-05, 2.619e-05, 2.619e-05, 576.43275546], [1516547160000, 2.619e-05, 2.619e-05, 2.619e-05, 2.619e-05, 2938.23854823], [1516547220000, 2.619e-05, 2.619e-05, 2.619e-05, 2.619e-05, 329.17837032], [1516547340000, 2.619e-05, 2.619e-05, 2.605e-05, 2.605e-05, 19766.2147782], [1516547400000, 2.605e-05, 2.605e-05, 2.605e-05, 2.605e-05, 3017.94936252], [1516547460000, 2.605e-05, 2.605e-05, 2.604e-05, 2.605e-05, 17581.43170561], [1516547520000, 2.605e-05, 2.606e-05, 2.605e-05, 2.606e-05, 4393.02450057], [1516547580000, 2.615e-05, 2.615e-05, 2.615e-05, 2.615e-05, 350.79480019], [1516547760000, 2.613e-05, 2.614e-05, 2.613e-05, 2.614e-05, 8011.6733024], [1516547820000, 2.614e-05, 2.614e-05, 2.614e-05, 2.614e-05, 587.39906011], [1516547880000, 2.613e-05, 2.613e-05, 2.613e-05, 2.613e-05, 722.64701579], [1516547940000, 2.613e-05, 2.613e-05, 2.607e-05, 2.607e-05, 1692.16988847], [1516548000000, 2.606e-05, 2.606e-05, 2.606e-05, 2.606e-05, 238.99403964], [1516548060000, 2.603e-05, 2.603e-05, 2.603e-05, 2.603e-05, 110.0], [1516548120000, 2.603e-05, 2.603e-05, 2.603e-05, 2.603e-05, 4153.47173854], [1516548180000, 2.606e-05, 2.606e-05, 2.603e-05, 2.603e-05, 3571.22063846], [1516548240000, 2.603e-05, 2.603e-05, 2.603e-05, 2.603e-05, 9695.37187344], [1516548300000, 2.603e-05, 2.606e-05, 2.603e-05, 2.606e-05, 5293.07865408], [1516548360000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 500.0], [1516548420000, 2.614e-05, 2.614e-05, 2.61e-05, 2.61e-05, 40.29513085], [1516548540000, 2.614e-05, 2.615e-05, 2.614e-05, 2.615e-05, 41514.7349166], [1516548600000, 2.615e-05, 2.615e-05, 2.615e-05, 2.615e-05, 222.1579034], [1516548660000, 2.615e-05, 2.615e-05, 2.615e-05, 2.615e-05, 3133.03877258], [1516548780000, 2.615e-05, 2.615e-05, 2.602e-05, 2.602e-05, 1289.19052273], [1516548840000, 2.601e-05, 2.601e-05, 2.6e-05, 2.6e-05, 22217.77812304], [1516548900000, 2.6e-05, 2.602e-05, 2.593e-05, 2.593e-05, 5119.22950846], [1516548960000, 2.593e-05, 2.593e-05, 2.593e-05, 2.593e-05, 200.0], [1516549020000, 2.593e-05, 2.602e-05, 2.593e-05, 2.595e-05, 251.00968382], [1516549080000, 2.602e-05, 2.619e-05, 2.602e-05, 2.619e-05, 1245.5722399], [1516549200000, 2.621e-05, 2.621e-05, 2.598e-05, 2.598e-05, 3337.88285918], [1516549260000, 2.597e-05, 2.598e-05, 2.596e-05, 2.598e-05, 15877.89074995], [1516549320000, 2.595e-05, 2.598e-05, 2.59e-05, 2.598e-05, 4543.00035418], [1516549380000, 2.598e-05, 2.598e-05, 2.598e-05, 2.598e-05, 4896.88846337], [1516549440000, 2.598e-05, 2.598e-05, 2.598e-05, 2.598e-05, 3176.93312359], [1516549560000, 2.598e-05, 2.598e-05, 2.59e-05, 2.59e-05, 9613.79001858], [1516549620000, 2.589e-05, 2.589e-05, 2.58e-05, 2.58e-05, 30826.23336364], [1516549680000, 2.58e-05, 2.58e-05, 2.58e-05, 2.58e-05, 4793.9224846], [1516549740000, 2.579e-05, 2.58e-05, 2.578e-05, 2.58e-05, 5678.52985582], [1516549800000, 2.579e-05, 2.579e-05, 2.579e-05, 2.579e-05, 324.67090788], [1516549860000, 2.607e-05, 2.607e-05, 2.6e-05, 2.604e-05, 2033.55424726], [1516549920000, 2.603e-05, 2.603e-05, 2.579e-05, 2.579e-05, 690.47619047], [1516549980000, 2.581e-05, 2.581e-05, 2.581e-05, 2.581e-05, 1000.0], [1516550040000, 2.579e-05, 2.579e-05, 2.577e-05, 2.577e-05, 35696.98985839], [1516550100000, 2.577e-05, 2.577e-05, 2.572e-05, 2.572e-05, 12857.61919653], [1516550160000, 2.571e-05, 2.571e-05, 2.567e-05, 2.569e-05, 10237.06347305], [1516550220000, 2.569e-05, 2.579e-05, 2.569e-05, 2.571e-05, 5038.92288783], [1516550280000, 2.579e-05, 2.579e-05, 2.579e-05, 2.579e-05, 127.95657231], [1516550400000, 2.574e-05, 2.574e-05, 2.56e-05, 2.56e-05, 15165.9362962], [1516550460000, 2.579e-05, 2.579e-05, 2.566e-05, 2.579e-05, 21683.56719906], [1516550520000, 2.566e-05, 2.579e-05, 2.561e-05, 2.579e-05, 4578.51714391], [1516550580000, 2.578e-05, 2.62e-05, 2.578e-05, 2.578e-05, 35804.48172534], [1516550640000, 2.567e-05, 2.578e-05, 2.563e-05, 2.572e-05, 38925.16152116], [1516550700000, 2.564e-05, 2.592e-05, 2.564e-05, 2.564e-05, 8210.35158137], [1516550760000, 2.586e-05, 2.586e-05, 2.586e-05, 2.586e-05, 188.57648782], [1516550880000, 2.584e-05, 2.584e-05, 2.583e-05, 2.583e-05, 4053.65141129], [1516550940000, 2.583e-05, 2.583e-05, 2.583e-05, 2.583e-05, 45.36829268], [1516551000000, 2.581e-05, 2.584e-05, 2.568e-05, 2.584e-05, 14070.98813508], [1516551060000, 2.58e-05, 2.58e-05, 2.563e-05, 2.569e-05, 9326.74677276], [1516551120000, 2.568e-05, 2.568e-05, 2.563e-05, 2.565e-05, 1760.97960002], [1516551180000, 2.569e-05, 2.575e-05, 2.564e-05, 2.564e-05, 4851.11002449], [1516551240000, 2.563e-05, 2.563e-05, 2.56e-05, 2.56e-05, 3818.99649944], [1516551300000, 2.559e-05, 2.581e-05, 2.557e-05, 2.557e-05, 13916.80704309], [1516551360000, 2.569e-05, 2.569e-05, 2.557e-05, 2.557e-05, 2561.71021953], [1516551420000, 2.558e-05, 2.558e-05, 2.555e-05, 2.555e-05, 3426.51035663], [1516551480000, 2.555e-05, 2.567e-05, 2.525e-05, 2.525e-05, 56512.64946947], [1516551540000, 2.533e-05, 2.546e-05, 2.518e-05, 2.543e-05, 20323.94407855], [1516551600000, 2.547e-05, 2.57e-05, 2.522e-05, 2.57e-05, 42293.38087692], [1516551780000, 2.56e-05, 2.561e-05, 2.543e-05, 2.543e-05, 6396.62698842], [1516551840000, 2.543e-05, 2.543e-05, 2.506e-05, 2.537e-05, 34502.03081191], [1516551900000, 2.522e-05, 2.537e-05, 2.522e-05, 2.53e-05, 1906.35960876], [1516551960000, 2.53e-05, 2.53e-05, 2.522e-05, 2.522e-05, 351.25703905], [1516552020000, 2.526e-05, 2.526e-05, 2.524e-05, 2.524e-05, 1344.87223416], [1516552080000, 2.524e-05, 2.524e-05, 2.524e-05, 2.524e-05, 659.55452512], [1516552140000, 2.524e-05, 2.524e-05, 2.506e-05, 2.506e-05, 9341.91962664], [1516552200000, 2.525e-05, 2.526e-05, 2.507e-05, 2.525e-05, 2685.16387921], [1516552260000, 2.524e-05, 2.528e-05, 2.524e-05, 2.528e-05, 44901.5670928], [1516552320000, 2.509e-05, 2.531e-05, 2.509e-05, 2.531e-05, 14123.01451845], [1516552380000, 2.518e-05, 2.529e-05, 2.51e-05, 2.529e-05, 1201.97020059], [1516552440000, 2.51e-05, 2.525e-05, 2.5e-05, 2.5e-05, 89047.08820134], [1516552500000, 2.501e-05, 2.501e-05, 2.496e-05, 2.5e-05, 28403.27651221], [1516552560000, 2.5e-05, 2.524e-05, 2.496e-05, 2.524e-05, 77601.58192443], [1516552620000, 2.522e-05, 2.525e-05, 2.501e-05, 2.519e-05, 5396.29065102], [1516552680000, 2.528e-05, 2.532e-05, 2.521e-05, 2.521e-05, 6057.75102371], [1516552740000, 2.521e-05, 2.521e-05, 2.52e-05, 2.52e-05, 664.58736353], [1516552800000, 2.52e-05, 2.52e-05, 2.52e-05, 2.52e-05, 4234.04717583], [1516552860000, 2.521e-05, 2.531e-05, 2.521e-05, 2.531e-05, 24980.0529478], [1516552920000, 2.531e-05, 2.534e-05, 2.531e-05, 2.534e-05, 336.77979479], [1516552980000, 2.533e-05, 2.533e-05, 2.529e-05, 2.529e-05, 756.98781756], [1516553040000, 2.528e-05, 2.532e-05, 2.528e-05, 2.528e-05, 10618.68006855], [1516553100000, 2.528e-05, 2.528e-05, 2.528e-05, 2.528e-05, 146.40005983], [1516553160000, 2.509e-05, 2.523e-05, 2.492e-05, 2.523e-05, 68507.54982305], [1516553220000, 2.524e-05, 2.524e-05, 2.499e-05, 2.499e-05, 18839.91626793], [1516553280000, 2.523e-05, 2.523e-05, 2.523e-05, 2.523e-05, 12748.08480186], [1516553340000, 2.523e-05, 2.524e-05, 2.523e-05, 2.524e-05, 6453.02318133], [1516553400000, 2.524e-05, 2.53e-05, 2.524e-05, 2.53e-05, 1266.15307354], [1516553460000, 2.53e-05, 2.534e-05, 2.53e-05, 2.534e-05, 4522.20537068], [1516553520000, 2.534e-05, 2.538e-05, 2.534e-05, 2.538e-05, 6509.42599582], [1516553580000, 2.55e-05, 2.56e-05, 2.55e-05, 2.56e-05, 7235.56318945], [1516553640000, 2.559e-05, 2.56e-05, 2.559e-05, 2.56e-05, 2095.66552369], [1516553700000, 2.54e-05, 2.54e-05, 2.538e-05, 2.538e-05, 660.408884], [1516553820000, 2.538e-05, 2.538e-05, 2.538e-05, 2.538e-05, 39.85651654], [1516553880000, 2.538e-05, 2.557e-05, 2.536e-05, 2.536e-05, 15807.65768913], [1516553940000, 2.54e-05, 2.54e-05, 2.538e-05, 2.538e-05, 131.05314961], [1516554000000, 2.538e-05, 2.538e-05, 2.523e-05, 2.534e-05, 2412.51323634], [1516554060000, 2.534e-05, 2.534e-05, 2.523e-05, 2.533e-05, 553.06338942], [1516554120000, 2.523e-05, 2.523e-05, 2.523e-05, 2.523e-05, 59.05099405], [1516554180000, 2.528e-05, 2.528e-05, 2.515e-05, 2.517e-05, 966.54159886], [1516554240000, 2.517e-05, 2.517e-05, 2.517e-05, 2.517e-05, 348.41994302], [1516554300000, 2.517e-05, 2.533e-05, 2.515e-05, 2.533e-05, 13666.51269995], [1516554360000, 2.534e-05, 2.534e-05, 2.534e-05, 2.534e-05, 21.70221598], [1516554420000, 2.535e-05, 2.547e-05, 2.535e-05, 2.547e-05, 6786.24906174], [1516554540000, 2.533e-05, 2.543e-05, 2.526e-05, 2.526e-05, 6176.05446198], [1516554600000, 2.543e-05, 2.547e-05, 2.543e-05, 2.547e-05, 4087.65026814], [1516554660000, 2.547e-05, 2.547e-05, 2.547e-05, 2.547e-05, 2173.20753211], [1516554720000, 2.547e-05, 2.547e-05, 2.542e-05, 2.542e-05, 1577.0], [1516554840000, 2.518e-05, 2.544e-05, 2.512e-05, 2.544e-05, 9698.54437205], [1516554900000, 2.514e-05, 2.514e-05, 2.512e-05, 2.512e-05, 12897.69587344], [1516554960000, 2.511e-05, 2.511e-05, 2.503e-05, 2.503e-05, 9274.71492943], [1516555020000, 2.502e-05, 2.504e-05, 2.502e-05, 2.504e-05, 3426.85238585], [1516555080000, 2.504e-05, 2.504e-05, 2.496e-05, 2.504e-05, 1995.49467306], [1516555140000, 2.504e-05, 2.504e-05, 2.497e-05, 2.497e-05, 2448.41363375], [1516555200000, 2.505e-05, 2.505e-05, 2.501e-05, 2.501e-05, 218.21856287], [1516555320000, 2.501e-05, 2.501e-05, 2.5e-05, 2.501e-05, 1882.3638434], [1516555380000, 2.521e-05, 2.521e-05, 2.507e-05, 2.507e-05, 1075.04669117], [1516555440000, 2.507e-05, 2.507e-05, 2.507e-05, 2.507e-05, 2079.77665413], [1516555500000, 2.507e-05, 2.507e-05, 2.507e-05, 2.507e-05, 1193.57971485], [1516555560000, 2.507e-05, 2.507e-05, 2.507e-05, 2.507e-05, 670.87505086], [1516555620000, 2.507e-05, 2.529e-05, 2.507e-05, 2.529e-05, 5647.08329724], [1516555680000, 2.511e-05, 2.511e-05, 2.51e-05, 2.51e-05, 271.2899864], [1516555740000, 2.503e-05, 2.503e-05, 2.492e-05, 2.492e-05, 47783.97298354], [1516555860000, 2.498e-05, 2.503e-05, 2.485e-05, 2.503e-05, 47553.9242135], [1516555920000, 2.503e-05, 2.503e-05, 2.503e-05, 2.503e-05, 81.35852903], [1516555980000, 2.488e-05, 2.488e-05, 2.488e-05, 2.488e-05, 300.0], [1516556040000, 2.49e-05, 2.49e-05, 2.488e-05, 2.488e-05, 4882.35258541], [1516556100000, 2.501e-05, 2.501e-05, 2.501e-05, 2.501e-05, 54.15741175], [1516556160000, 2.501e-05, 2.502e-05, 2.485e-05, 2.485e-05, 10910.9098747], [1516556220000, 2.485e-05, 2.485e-05, 2.482e-05, 2.482e-05, 2779.06793213], [1516556280000, 2.483e-05, 2.484e-05, 2.481e-05, 2.481e-05, 32966.843584], [1516556340000, 2.481e-05, 2.481e-05, 2.481e-05, 2.481e-05, 4354.38719888], [1516556400000, 2.48e-05, 2.485e-05, 2.48e-05, 2.482e-05, 8463.16681304], [1516556460000, 2.482e-05, 2.504e-05, 2.482e-05, 2.483e-05, 238.17590364], [1516556520000, 2.483e-05, 2.495e-05, 2.48e-05, 2.495e-05, 50737.06592411], [1516556580000, 2.498e-05, 2.498e-05, 2.483e-05, 2.49e-05, 3220.7673317], [1516556640000, 2.49e-05, 2.501e-05, 2.487e-05, 2.501e-05, 2813.40426439], [1516556700000, 2.486e-05, 2.5e-05, 2.486e-05, 2.5e-05, 20015.54654266], [1516556760000, 2.499e-05, 2.505e-05, 2.499e-05, 2.499e-05, 1660.44053504], [1516556820000, 2.515e-05, 2.515e-05, 2.515e-05, 2.515e-05, 15820.77716098], [1516556880000, 2.52e-05, 2.52e-05, 2.51e-05, 2.519e-05, 3222.26928027], [1516556940000, 2.51e-05, 2.51e-05, 2.51e-05, 2.51e-05, 1542.99889738], [1516557000000, 2.511e-05, 2.511e-05, 2.511e-05, 2.511e-05, 74.37790639], [1516557060000, 2.513e-05, 2.514e-05, 2.513e-05, 2.514e-05, 787.14072694], [1516557120000, 2.514e-05, 2.516e-05, 2.514e-05, 2.516e-05, 7998.57887884], [1516557180000, 2.514e-05, 2.517e-05, 2.51e-05, 2.51e-05, 10214.5354672], [1516557240000, 2.51e-05, 2.511e-05, 2.51e-05, 2.511e-05, 7166.75159282], [1516557300000, 2.499e-05, 2.499e-05, 2.499e-05, 2.499e-05, 327.79134454], [1516557360000, 2.499e-05, 2.499e-05, 2.499e-05, 2.499e-05, 603.39453571], [1516557420000, 2.499e-05, 2.499e-05, 2.499e-05, 2.499e-05, 1153.1710854], [1516557480000, 2.499e-05, 2.499e-05, 2.49e-05, 2.49e-05, 685.81814844], [1516557540000, 2.497e-05, 2.6e-05, 2.49e-05, 2.558e-05, 523671.55632516], [1516557600000, 2.553e-05, 2.553e-05, 2.516e-05, 2.54e-05, 23446.94187694], [1516557660000, 2.543e-05, 2.543e-05, 2.543e-05, 2.543e-05, 50.0], [1516557720000, 2.524e-05, 2.537e-05, 2.5e-05, 2.537e-05, 2298.11860506], [1516557780000, 2.537e-05, 2.538e-05, 2.537e-05, 2.538e-05, 585.48955879], [1516557840000, 2.528e-05, 2.53e-05, 2.511e-05, 2.53e-05, 467.48782554], [1516557900000, 2.538e-05, 2.538e-05, 2.516e-05, 2.533e-05, 10226.45516899], [1516557960000, 2.534e-05, 2.537e-05, 2.534e-05, 2.537e-05, 4620.4750413], [1516558020000, 2.528e-05, 2.53e-05, 2.528e-05, 2.529e-05, 16160.7756874], [1516558080000, 2.527e-05, 2.54e-05, 2.527e-05, 2.54e-05, 3988.86721862], [1516558200000, 2.54e-05, 2.54e-05, 2.54e-05, 2.54e-05, 39.27165354], [1516558260000, 2.54e-05, 2.54e-05, 2.54e-05, 2.54e-05, 163.99559645], [1516558320000, 2.533e-05, 2.533e-05, 2.533e-05, 2.533e-05, 115.26890187], [1516558380000, 2.54e-05, 2.54e-05, 2.529e-05, 2.54e-05, 2650.0], [1516558440000, 2.531e-05, 2.531e-05, 2.531e-05, 2.531e-05, 99.93130088], [1516558500000, 2.54e-05, 2.54e-05, 2.53e-05, 2.53e-05, 3210.35114405], [1516558560000, 2.539e-05, 2.539e-05, 2.539e-05, 2.539e-05, 39.67999212], [1516558620000, 2.539e-05, 2.539e-05, 2.53e-05, 2.53e-05, 4087.60662514], [1516558680000, 2.53e-05, 2.53e-05, 2.53e-05, 2.53e-05, 26994.05615842], [1516558740000, 2.53e-05, 2.53e-05, 2.525e-05, 2.53e-05, 1811.30885586], [1516558800000, 2.525e-05, 2.525e-05, 2.525e-05, 2.525e-05, 806.10245105], [1516558860000, 2.53e-05, 2.53e-05, 2.53e-05, 2.53e-05, 565.91007905], [1516559040000, 2.54e-05, 2.541e-05, 2.54e-05, 2.541e-05, 2715.55413591], [1516559100000, 2.541e-05, 2.541e-05, 2.54e-05, 2.54e-05, 6416.33236277], [1516559160000, 2.54e-05, 2.545e-05, 2.54e-05, 2.545e-05, 1402.03368671], [1516559220000, 2.545e-05, 2.557e-05, 2.543e-05, 2.543e-05, 3717.83512847], [1516559280000, 2.554e-05, 2.554e-05, 2.554e-05, 2.554e-05, 204.69127713], [1516559340000, 2.553e-05, 2.553e-05, 2.553e-05, 2.553e-05, 50.0], [1516559400000, 2.553e-05, 2.553e-05, 2.552e-05, 2.552e-05, 386.47856212], [1516559460000, 2.552e-05, 2.552e-05, 2.543e-05, 2.543e-05, 223.65316555], [1516559580000, 2.543e-05, 2.543e-05, 2.543e-05, 2.543e-05, 293.4295144], [1516559640000, 2.536e-05, 2.549e-05, 2.536e-05, 2.549e-05, 340.14468813], [1516559760000, 2.536e-05, 2.536e-05, 2.536e-05, 2.536e-05, 200.0], [1516559820000, 2.546e-05, 2.546e-05, 2.536e-05, 2.536e-05, 76.37815854], [1516559880000, 2.536e-05, 2.536e-05, 2.53e-05, 2.532e-05, 1878.38549197], [1516559940000, 2.532e-05, 2.532e-05, 2.532e-05, 2.532e-05, 472.40853659], [1516560000000, 2.539e-05, 2.539e-05, 2.529e-05, 2.529e-05, 1845.01745399], [1516560120000, 2.548e-05, 2.548e-05, 2.548e-05, 2.548e-05, 194.281977], [1516560180000, 2.527e-05, 2.527e-05, 2.527e-05, 2.527e-05, 78.94736842], [1516560240000, 2.523e-05, 2.544e-05, 2.517e-05, 2.517e-05, 3301.92553529], [1516560300000, 2.516e-05, 2.517e-05, 2.516e-05, 2.516e-05, 2641.9435046], [1516560360000, 2.515e-05, 2.516e-05, 2.515e-05, 2.515e-05, 2664.79093786], [1516560420000, 2.518e-05, 2.518e-05, 2.516e-05, 2.516e-05, 2396.11791674], [1516560480000, 2.538e-05, 2.538e-05, 2.538e-05, 2.538e-05, 43.341214], [1516560540000, 2.518e-05, 2.518e-05, 2.518e-05, 2.518e-05, 100.01], [1516560600000, 2.52e-05, 2.538e-05, 2.516e-05, 2.538e-05, 2770.27328696], [1516560660000, 2.532e-05, 2.532e-05, 2.532e-05, 2.532e-05, 2309.77020324], [1516560720000, 2.524e-05, 2.532e-05, 2.524e-05, 2.524e-05, 2574.57191886], [1516560840000, 2.538e-05, 2.538e-05, 2.538e-05, 2.538e-05, 2327.13641253], [1516560960000, 2.538e-05, 2.538e-05, 2.536e-05, 2.536e-05, 509.92949994], [1516561020000, 2.538e-05, 2.538e-05, 2.517e-05, 2.537e-05, 4925.63198824], [1516561080000, 2.537e-05, 2.537e-05, 2.537e-05, 2.537e-05, 1913.44719945], [1516561140000, 2.517e-05, 2.517e-05, 2.517e-05, 2.517e-05, 448.91524333], [1516561200000, 2.53e-05, 2.538e-05, 2.53e-05, 2.538e-05, 407.18791076], [1516561260000, 2.52e-05, 2.52e-05, 2.52e-05, 2.52e-05, 1418.71555396], [1516561320000, 2.52e-05, 2.52e-05, 2.516e-05, 2.516e-05, 11518.90887657], [1516561380000, 2.52e-05, 2.52e-05, 2.515e-05, 2.515e-05, 22962.78961709], [1516561440000, 2.517e-05, 2.517e-05, 2.515e-05, 2.515e-05, 2500.0], [1516561500000, 2.515e-05, 2.515e-05, 2.515e-05, 2.515e-05, 785.0], [1516561620000, 2.516e-05, 2.516e-05, 2.516e-05, 2.516e-05, 113.2385538], [1516561680000, 2.515e-05, 2.515e-05, 2.515e-05, 2.515e-05, 1000.0], [1516561740000, 2.515e-05, 2.515e-05, 2.515e-05, 2.515e-05, 47.83300199], [1516561800000, 2.516e-05, 2.526e-05, 2.515e-05, 2.515e-05, 1069.72525267], [1516561860000, 2.515e-05, 2.515e-05, 2.511e-05, 2.511e-05, 20838.4838362], [1516561920000, 2.51e-05, 2.511e-05, 2.504e-05, 2.504e-05, 1212.05895107], [1516561980000, 2.504e-05, 2.507e-05, 2.504e-05, 2.507e-05, 5370.03947631], [1516562040000, 2.507e-05, 2.521e-05, 2.507e-05, 2.516e-05, 5142.56660909], [1516562100000, 2.515e-05, 2.515e-05, 2.51e-05, 2.51e-05, 16092.1502401], [1516562220000, 2.512e-05, 2.512e-05, 2.512e-05, 2.512e-05, 38.507109], [1516562280000, 2.512e-05, 2.512e-05, 2.512e-05, 2.512e-05, 50.0], [1516562340000, 2.523e-05, 2.523e-05, 2.523e-05, 2.523e-05, 3118.524155], [1516562400000, 2.527e-05, 2.528e-05, 2.525e-05, 2.525e-05, 22967.26858678], [1516562460000, 2.525e-05, 2.528e-05, 2.525e-05, 2.528e-05, 10958.429051], [1516562520000, 2.528e-05, 2.545e-05, 2.528e-05, 2.545e-05, 24002.35476599], [1516562580000, 2.545e-05, 2.55e-05, 2.545e-05, 2.55e-05, 540.24633589], [1516562640000, 2.55e-05, 2.559e-05, 2.55e-05, 2.559e-05, 243.16228651], [1516562700000, 2.559e-05, 2.56e-05, 2.559e-05, 2.56e-05, 2867.22574594], [1516562760000, 2.56e-05, 2.56e-05, 2.56e-05, 2.56e-05, 478.29943511], [1516562820000, 2.56e-05, 2.575e-05, 2.56e-05, 2.575e-05, 942.19084135], [1516562880000, 2.568e-05, 2.568e-05, 2.568e-05, 2.568e-05, 36.39824906], [1516562940000, 2.56e-05, 2.56e-05, 2.56e-05, 2.56e-05, 30.0], [1516563000000, 2.56e-05, 2.56e-05, 2.56e-05, 2.56e-05, 82.22571298], [1516563060000, 2.56e-05, 2.56e-05, 2.56e-05, 2.56e-05, 17.77428702], [1516563120000, 2.56e-05, 2.56e-05, 2.56e-05, 2.56e-05, 28.18849842], [1516563180000, 2.56e-05, 2.564e-05, 2.551e-05, 2.551e-05, 991.64766219], [1516563240000, 2.567e-05, 2.567e-05, 2.566e-05, 2.567e-05, 3293.66223875], [1516563300000, 2.567e-05, 2.567e-05, 2.555e-05, 2.555e-05, 1391.18521355], [1516563360000, 2.555e-05, 2.567e-05, 2.555e-05, 2.567e-05, 802.34088849], [1516563420000, 2.567e-05, 2.567e-05, 2.567e-05, 2.567e-05, 9397.8072817], [1516563540000, 2.566e-05, 2.567e-05, 2.566e-05, 2.567e-05, 25470.02478597], [1516563600000, 2.567e-05, 2.567e-05, 2.567e-05, 2.567e-05, 1161.23399302], [1516563660000, 2.56e-05, 2.56e-05, 2.556e-05, 2.56e-05, 148.53517623], [1516563780000, 2.566e-05, 2.567e-05, 2.566e-05, 2.567e-05, 1292.4913917], [1516563840000, 2.567e-05, 2.567e-05, 2.567e-05, 2.567e-05, 340.99787927], [1516563900000, 2.568e-05, 2.575e-05, 2.568e-05, 2.575e-05, 941.11816066], [1516563960000, 2.567e-05, 2.575e-05, 2.567e-05, 2.567e-05, 2893.55266765], [1516564020000, 2.577e-05, 2.582e-05, 2.575e-05, 2.582e-05, 2745.21341814], [1516564080000, 2.582e-05, 2.582e-05, 2.582e-05, 2.582e-05, 4768.85433579], [1516564140000, 2.581e-05, 2.581e-05, 2.581e-05, 2.581e-05, 4235.28657651], [1516564200000, 2.575e-05, 2.581e-05, 2.567e-05, 2.567e-05, 1189.57101919], [1516564260000, 2.567e-05, 2.567e-05, 2.567e-05, 2.567e-05, 5602.01403432], [1516564320000, 2.569e-05, 2.574e-05, 2.569e-05, 2.574e-05, 7070.81125581], [1516564380000, 2.574e-05, 2.574e-05, 2.568e-05, 2.568e-05, 8062.90907244], [1516564500000, 2.582e-05, 2.582e-05, 2.582e-05, 2.582e-05, 256.93583366], [1516564560000, 2.575e-05, 2.594e-05, 2.575e-05, 2.582e-05, 21672.90076573], [1516564620000, 2.582e-05, 2.596e-05, 2.575e-05, 2.588e-05, 15618.31310845], [1516564680000, 2.588e-05, 2.588e-05, 2.568e-05, 2.57e-05, 10129.91906295], [1516564740000, 2.571e-05, 2.578e-05, 2.571e-05, 2.578e-05, 215.89925264], [1516564800000, 2.578e-05, 2.591e-05, 2.578e-05, 2.58e-05, 432.75123215], [1516564920000, 2.58e-05, 2.58e-05, 2.58e-05, 2.58e-05, 409.47320091], [1516564980000, 2.584e-05, 2.59e-05, 2.58e-05, 2.58e-05, 2186.83414865], [1516565040000, 2.58e-05, 2.585e-05, 2.58e-05, 2.585e-05, 5408.59756735], [1516565100000, 2.586e-05, 2.586e-05, 2.586e-05, 2.586e-05, 840.0], [1516565160000, 2.591e-05, 2.591e-05, 2.591e-05, 2.591e-05, 2139.90417725], [1516565220000, 2.58e-05, 2.591e-05, 2.58e-05, 2.591e-05, 7738.61949527], [1516565280000, 2.58e-05, 2.597e-05, 2.58e-05, 2.597e-05, 34217.18111668], [1516565340000, 2.588e-05, 2.588e-05, 2.588e-05, 2.588e-05, 7187.53519996], [1516565400000, 2.586e-05, 2.588e-05, 2.586e-05, 2.588e-05, 1080.29022456], [1516565460000, 2.588e-05, 2.588e-05, 2.588e-05, 2.588e-05, 628.46819893], [1516565520000, 2.588e-05, 2.588e-05, 2.588e-05, 2.588e-05, 864.60590931], [1516565640000, 2.588e-05, 2.588e-05, 2.588e-05, 2.588e-05, 187.49172728], [1516565820000, 2.578e-05, 2.579e-05, 2.578e-05, 2.579e-05, 4605.18867681], [1516565880000, 2.578e-05, 2.578e-05, 2.578e-05, 2.578e-05, 895.47356938], [1516565940000, 2.578e-05, 2.593e-05, 2.578e-05, 2.593e-05, 5081.29794554], [1516566000000, 2.578e-05, 2.578e-05, 2.578e-05, 2.578e-05, 9603.43859172], [1516566060000, 2.591e-05, 2.591e-05, 2.59e-05, 2.59e-05, 117.10550052], [1516566120000, 2.578e-05, 2.59e-05, 2.578e-05, 2.578e-05, 4627.98047108], [1516566180000, 2.59e-05, 2.591e-05, 2.59e-05, 2.591e-05, 2449.17309375], [1516566240000, 2.59e-05, 2.59e-05, 2.59e-05, 2.59e-05, 7205.22198772], [1516566300000, 2.578e-05, 2.578e-05, 2.578e-05, 2.578e-05, 315.46489563], [1516566360000, 2.578e-05, 2.578e-05, 2.578e-05, 2.578e-05, 600.0], [1516566420000, 2.59e-05, 2.591e-05, 2.59e-05, 2.591e-05, 7699.72983404], [1516566600000, 2.59e-05, 2.59e-05, 2.59e-05, 2.59e-05, 5678.64871478], [1516566660000, 2.59e-05, 2.59e-05, 2.59e-05, 2.59e-05, 638.64486343], [1516566780000, 2.591e-05, 2.591e-05, 2.59e-05, 2.591e-05, 175.0], [1516566840000, 2.591e-05, 2.591e-05, 2.591e-05, 2.591e-05, 107.04050166], [1516566900000, 2.591e-05, 2.591e-05, 2.591e-05, 2.591e-05, 7175.55785855], [1516566960000, 2.59e-05, 2.59e-05, 2.59e-05, 2.59e-05, 237.93512658], [1516567020000, 2.59e-05, 2.591e-05, 2.59e-05, 2.59e-05, 4518.00461412], [1516567080000, 2.591e-05, 2.591e-05, 2.591e-05, 2.591e-05, 2766.4810928], [1516567140000, 2.591e-05, 2.6e-05, 2.591e-05, 2.6e-05, 14426.22609216], [1516567260000, 2.6e-05, 2.6e-05, 2.6e-05, 2.6e-05, 1405.28409137], [1516567320000, 2.6e-05, 2.6e-05, 2.6e-05, 2.6e-05, 403.68194753], [1516567380000, 2.6e-05, 2.6e-05, 2.6e-05, 2.6e-05, 196.14762909], [1516567440000, 2.601e-05, 2.602e-05, 2.601e-05, 2.602e-05, 1562.06763758], [1516567500000, 2.6e-05, 2.6e-05, 2.59e-05, 2.59e-05, 1454.4194359], [1516567560000, 2.59e-05, 2.59e-05, 2.59e-05, 2.59e-05, 2016.03764525], [1516567620000, 2.59e-05, 2.6e-05, 2.59e-05, 2.6e-05, 1454.95169327], [1516567680000, 2.6e-05, 2.603e-05, 2.6e-05, 2.603e-05, 11822.17127549], [1516567740000, 2.607e-05, 2.615e-05, 2.607e-05, 2.615e-05, 6902.33058434], [1516567800000, 2.615e-05, 2.619e-05, 2.615e-05, 2.615e-05, 1726.05283546], [1516567860000, 2.621e-05, 2.626e-05, 2.615e-05, 2.615e-05, 7687.820899], [1516567920000, 2.616e-05, 2.616e-05, 2.612e-05, 2.612e-05, 6597.05859069], [1516567980000, 2.612e-05, 2.623e-05, 2.612e-05, 2.612e-05, 7533.64471998], [1516568040000, 2.605e-05, 2.605e-05, 2.603e-05, 2.603e-05, 1000.0], [1516568100000, 2.603e-05, 2.603e-05, 2.603e-05, 2.603e-05, 4290.51441631], [1516568220000, 2.603e-05, 2.603e-05, 2.59e-05, 2.591e-05, 3620.19607775], [1516568280000, 2.591e-05, 2.591e-05, 2.591e-05, 2.591e-05, 421.75125308], [1516568340000, 2.592e-05, 2.592e-05, 2.592e-05, 2.592e-05, 2529.26967119], [1516568400000, 2.592e-05, 2.592e-05, 2.592e-05, 2.592e-05, 700.0], [1516568460000, 2.592e-05, 2.592e-05, 2.592e-05, 2.592e-05, 386.19125474], [1516568520000, 2.591e-05, 2.591e-05, 2.59e-05, 2.59e-05, 2029.0], [1516568580000, 2.59e-05, 2.592e-05, 2.59e-05, 2.59e-05, 16268.31362625], [1516568700000, 2.59e-05, 2.59e-05, 2.59e-05, 2.59e-05, 85.79391228], [1516568760000, 2.59e-05, 2.59e-05, 2.59e-05, 2.59e-05, 200.99907552], [1516568820000, 2.592e-05, 2.592e-05, 2.592e-05, 2.592e-05, 2000.0], [1516568940000, 2.6e-05, 2.6e-05, 2.57e-05, 2.57e-05, 19432.5195182], [1516569060000, 2.599e-05, 2.608e-05, 2.599e-05, 2.607e-05, 9584.36580008], [1516569120000, 2.605e-05, 2.606e-05, 2.605e-05, 2.606e-05, 604.50213065], [1516569180000, 2.605e-05, 2.605e-05, 2.605e-05, 2.605e-05, 724.65316699], [1516569240000, 2.605e-05, 2.605e-05, 2.602e-05, 2.605e-05, 568.8661787], [1516569300000, 2.597e-05, 2.597e-05, 2.574e-05, 2.574e-05, 554.59616443], [1516569360000, 2.574e-05, 2.574e-05, 2.574e-05, 2.574e-05, 156.34796238], [1516569480000, 2.574e-05, 2.59e-05, 2.574e-05, 2.59e-05, 223.49952668], [1516569540000, 2.589e-05, 2.59e-05, 2.589e-05, 2.59e-05, 269.59459459], [1516569600000, 2.58e-05, 2.58e-05, 2.577e-05, 2.577e-05, 4572.11767446], [1516569660000, 2.578e-05, 2.578e-05, 2.578e-05, 2.578e-05, 241.93714546], [1516569720000, 2.577e-05, 2.577e-05, 2.577e-05, 2.577e-05, 1692.31385763], [1516569840000, 2.577e-05, 2.59e-05, 2.577e-05, 2.59e-05, 331.10846], [1516569900000, 2.59e-05, 2.59e-05, 2.59e-05, 2.59e-05, 100.0], [1516569960000, 2.59e-05, 2.59e-05, 2.59e-05, 2.59e-05, 590.06807306], [1516570020000, 2.59e-05, 2.598e-05, 2.59e-05, 2.598e-05, 7522.42525953], [1516570140000, 2.591e-05, 2.591e-05, 2.591e-05, 2.591e-05, 616.59436511], [1516570200000, 2.598e-05, 2.598e-05, 2.59e-05, 2.59e-05, 1702.73653613], [1516570260000, 2.598e-05, 2.598e-05, 2.59e-05, 2.59e-05, 660.6794995], [1516570320000, 2.599e-05, 2.599e-05, 2.59e-05, 2.59e-05, 5962.97047431], [1516570380000, 2.59e-05, 2.6e-05, 2.59e-05, 2.6e-05, 20795.029889], [1516570560000, 2.578e-05, 2.578e-05, 2.578e-05, 2.578e-05, 78.07468448], [1516570680000, 2.589e-05, 2.589e-05, 2.589e-05, 2.589e-05, 431.62103843], [1516570740000, 2.599e-05, 2.6e-05, 2.589e-05, 2.589e-05, 2624.847239], [1516570800000, 2.6e-05, 2.6e-05, 2.6e-05, 2.6e-05, 446.34325331], [1516571100000, 2.6e-05, 2.6e-05, 2.6e-05, 2.6e-05, 58.08597445], [1516571160000, 2.58e-05, 2.58e-05, 2.58e-05, 2.58e-05, 1000.0], [1516571280000, 2.599e-05, 2.599e-05, 2.59e-05, 2.59e-05, 1507.53873596], [1516571340000, 2.59e-05, 2.59e-05, 2.566e-05, 2.566e-05, 30037.54376543], [1516571400000, 2.589e-05, 2.598e-05, 2.566e-05, 2.597e-05, 11268.5590067], [1516571460000, 2.567e-05, 2.567e-05, 2.567e-05, 2.567e-05, 100.0], [1516571520000, 2.569e-05, 2.569e-05, 2.568e-05, 2.568e-05, 440.0], [1516571640000, 2.569e-05, 2.569e-05, 2.569e-05, 2.569e-05, 1712.21297932], [1516571700000, 2.587e-05, 2.587e-05, 2.587e-05, 2.587e-05, 221.51466], [1516571760000, 2.592e-05, 2.592e-05, 2.587e-05, 2.592e-05, 2649.64893579], [1516571820000, 2.597e-05, 2.597e-05, 2.597e-05, 2.597e-05, 153.78567583], [1516571880000, 2.591e-05, 2.591e-05, 2.587e-05, 2.587e-05, 2506.70955044], [1516571940000, 2.587e-05, 2.587e-05, 2.587e-05, 2.587e-05, 5.54411839], [1516572000000, 2.586e-05, 2.586e-05, 2.586e-05, 2.586e-05, 370.41332335], [1516572120000, 2.586e-05, 2.586e-05, 2.586e-05, 2.586e-05, 603.59870376], [1516572180000, 2.586e-05, 2.587e-05, 2.571e-05, 2.587e-05, 727.21579812], [1516572240000, 2.568e-05, 2.598e-05, 2.568e-05, 2.598e-05, 16865.67339671], [1516572300000, 2.598e-05, 2.598e-05, 2.568e-05, 2.568e-05, 7032.28292897], [1516572360000, 2.594e-05, 2.599e-05, 2.57e-05, 2.57e-05, 828.26026588], [1516572480000, 2.598e-05, 2.598e-05, 2.598e-05, 2.598e-05, 2600.45616798], [1516572600000, 2.57e-05, 2.57e-05, 2.57e-05, 2.57e-05, 54.17677181], [1516572660000, 2.571e-05, 2.573e-05, 2.571e-05, 2.571e-05, 1857.10110845], [1516572720000, 2.571e-05, 2.571e-05, 2.571e-05, 2.571e-05, 7169.01836428], [1516572780000, 2.575e-05, 2.575e-05, 2.575e-05, 2.575e-05, 4470.019708], [1516572840000, 2.575e-05, 2.599e-05, 2.575e-05, 2.598e-05, 6047.1857633], [1516572900000, 2.598e-05, 2.598e-05, 2.598e-05, 2.598e-05, 1840.90241753], [1516572960000, 2.598e-05, 2.599e-05, 2.598e-05, 2.599e-05, 1123.65248297], [1516573020000, 2.599e-05, 2.599e-05, 2.599e-05, 2.599e-05, 319.36434404], [1516573080000, 2.598e-05, 2.599e-05, 2.598e-05, 2.599e-05, 7054.31703407], [1516573140000, 2.577e-05, 2.599e-05, 2.577e-05, 2.599e-05, 1215.75623924], [1516573260000, 2.584e-05, 2.617e-05, 2.584e-05, 2.617e-05, 1920.0], [1516573320000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 4002.61692423], [1516573380000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 383.31731665], [1516573500000, 2.604e-05, 2.619e-05, 2.582e-05, 2.582e-05, 7702.12407972], [1516573560000, 2.618e-05, 2.618e-05, 2.614e-05, 2.614e-05, 598.38135473], [1516573620000, 2.614e-05, 2.614e-05, 2.614e-05, 2.614e-05, 24684.26879188], [1516573680000, 2.611e-05, 2.614e-05, 2.611e-05, 2.614e-05, 5506.18785858], [1516573800000, 2.612e-05, 2.612e-05, 2.612e-05, 2.612e-05, 39.85701654], [1516573860000, 2.614e-05, 2.614e-05, 2.614e-05, 2.614e-05, 169.23740746], [1516573920000, 2.614e-05, 2.614e-05, 2.614e-05, 2.614e-05, 100.0], [1516573980000, 2.607e-05, 2.607e-05, 2.607e-05, 2.607e-05, 1180.00793239], [1516574040000, 2.614e-05, 2.614e-05, 2.596e-05, 2.596e-05, 246.73514307], [1516574100000, 2.597e-05, 2.602e-05, 2.597e-05, 2.602e-05, 62.70397516], [1516574160000, 2.613e-05, 2.613e-05, 2.596e-05, 2.596e-05, 5097.68822639], [1516574220000, 2.593e-05, 2.596e-05, 2.593e-05, 2.596e-05, 1175.76685947], [1516574280000, 2.596e-05, 2.596e-05, 2.596e-05, 2.596e-05, 1605.67858858], [1516574340000, 2.596e-05, 2.625e-05, 2.596e-05, 2.596e-05, 6431.55281147], [1516574460000, 2.598e-05, 2.63e-05, 2.598e-05, 2.611e-05, 3147.99532516], [1516574520000, 2.625e-05, 2.625e-05, 2.625e-05, 2.625e-05, 320.53539978], [1516574640000, 2.625e-05, 2.625e-05, 2.62e-05, 2.62e-05, 3167.8511493], [1516574700000, 2.62e-05, 2.62e-05, 2.62e-05, 2.62e-05, 84.62454384], [1516574760000, 2.62e-05, 2.62e-05, 2.611e-05, 2.611e-05, 3096.41629293], [1516574820000, 2.604e-05, 2.625e-05, 2.604e-05, 2.604e-05, 1168.6045612], [1516574880000, 2.604e-05, 2.63e-05, 2.604e-05, 2.63e-05, 4166.25385921], [1516574940000, 2.615e-05, 2.615e-05, 2.615e-05, 2.615e-05, 292.51117904], [1516575060000, 2.634e-05, 2.639e-05, 2.634e-05, 2.639e-05, 1187.80417111], [1516575120000, 2.628e-05, 2.639e-05, 2.628e-05, 2.639e-05, 756.78537135], [1516575180000, 2.617e-05, 2.637e-05, 2.617e-05, 2.637e-05, 1894.99192686], [1516575240000, 2.636e-05, 2.636e-05, 2.636e-05, 2.636e-05, 4846.86200378], [1516575300000, 2.636e-05, 2.638e-05, 2.636e-05, 2.636e-05, 1278.95375526], [1516575360000, 2.636e-05, 2.636e-05, 2.636e-05, 2.636e-05, 33362.22972647], [1516575420000, 2.628e-05, 2.629e-05, 2.628e-05, 2.629e-05, 191.89780339], [1516575480000, 2.635e-05, 2.636e-05, 2.628e-05, 2.636e-05, 1933.49127556], [1516575540000, 2.636e-05, 2.636e-05, 2.636e-05, 2.636e-05, 23.98726649], [1516575600000, 2.636e-05, 2.636e-05, 2.636e-05, 2.636e-05, 1740.70561457], [1516575660000, 2.628e-05, 2.628e-05, 2.628e-05, 2.628e-05, 165.45566524], [1516575720000, 2.634e-05, 2.634e-05, 2.628e-05, 2.628e-05, 3680.71417539], [1516575780000, 2.628e-05, 2.628e-05, 2.628e-05, 2.628e-05, 1702.03010997], [1516575840000, 2.628e-05, 2.628e-05, 2.628e-05, 2.628e-05, 23170.37855708], [1516575960000, 2.628e-05, 2.628e-05, 2.628e-05, 2.628e-05, 150.0], [1516576020000, 2.628e-05, 2.628e-05, 2.628e-05, 2.628e-05, 320.92398973], [1516576080000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 18697.080831], [1516576140000, 2.625e-05, 2.628e-05, 2.625e-05, 2.628e-05, 2006.001003], [1516576260000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 818.71860668], [1516576380000, 2.61e-05, 2.61e-05, 2.61e-05, 2.61e-05, 316.95011892], [1516576500000, 2.61e-05, 2.61e-05, 2.6e-05, 2.6e-05, 3817.45120551], [1516576560000, 2.601e-05, 2.601e-05, 2.6e-05, 2.6e-05, 5083.85769725], [1516576620000, 2.6e-05, 2.636e-05, 2.6e-05, 2.636e-05, 932.40485466], [1516576740000, 2.629e-05, 2.629e-05, 2.629e-05, 2.629e-05, 595.5105169], [1516576800000, 2.628e-05, 2.63e-05, 2.628e-05, 2.63e-05, 238.96357665], [1516576860000, 2.63e-05, 2.63e-05, 2.612e-05, 2.612e-05, 2028.98518393], [1516576920000, 2.628e-05, 2.628e-05, 2.628e-05, 2.628e-05, 60.0], [1516576980000, 2.628e-05, 2.628e-05, 2.628e-05, 2.628e-05, 140.0], [1516577040000, 2.628e-05, 2.628e-05, 2.628e-05, 2.628e-05, 100.0], [1516577100000, 2.612e-05, 2.612e-05, 2.612e-05, 2.612e-05, 50.4906182], [1516577160000, 2.63e-05, 2.63e-05, 2.63e-05, 2.63e-05, 1754.17326839], [1516577340000, 2.629e-05, 2.629e-05, 2.629e-05, 2.629e-05, 1000.0], [1516577520000, 2.628e-05, 2.629e-05, 2.628e-05, 2.629e-05, 10000.0], [1516577640000, 2.615e-05, 2.615e-05, 2.615e-05, 2.615e-05, 40.0], [1516577700000, 2.615e-05, 2.615e-05, 2.612e-05, 2.612e-05, 3100.0], [1516577760000, 2.612e-05, 2.612e-05, 2.612e-05, 2.612e-05, 1814.08399937], [1516577820000, 2.628e-05, 2.628e-05, 2.628e-05, 2.628e-05, 628.86314697], [1516577880000, 2.628e-05, 2.628e-05, 2.612e-05, 2.612e-05, 527.3985732], [1516577940000, 2.612e-05, 2.612e-05, 2.59e-05, 2.59e-05, 31072.9838531], [1516578000000, 2.6e-05, 2.6e-05, 2.6e-05, 2.6e-05, 566.60723942], [1516578060000, 2.6e-05, 2.612e-05, 2.6e-05, 2.612e-05, 1242.18741943], [1516578120000, 2.612e-05, 2.612e-05, 2.612e-05, 2.612e-05, 93.32927253], [1516578180000, 2.612e-05, 2.612e-05, 2.581e-05, 2.581e-05, 15286.983933], [1516578240000, 2.611e-05, 2.611e-05, 2.611e-05, 2.611e-05, 641.92748948], [1516578300000, 2.611e-05, 2.612e-05, 2.611e-05, 2.612e-05, 1886.81383403], [1516578360000, 2.612e-05, 2.612e-05, 2.582e-05, 2.582e-05, 7980.05273396], [1516578480000, 2.587e-05, 2.587e-05, 2.582e-05, 2.582e-05, 2557.82282919], [1516578540000, 2.586e-05, 2.586e-05, 2.583e-05, 2.583e-05, 31347.40605266], [1516578600000, 2.588e-05, 2.588e-05, 2.588e-05, 2.588e-05, 2000.0], [1516578660000, 2.608e-05, 2.608e-05, 2.582e-05, 2.582e-05, 1291.97918028], [1516578720000, 2.609e-05, 2.609e-05, 2.586e-05, 2.586e-05, 4000.0], [1516578840000, 2.617e-05, 2.617e-05, 2.617e-05, 2.617e-05, 133.4074062], [1516578900000, 2.617e-05, 2.617e-05, 2.606e-05, 2.606e-05, 226.6486106], [1516578960000, 2.606e-05, 2.606e-05, 2.604e-05, 2.605e-05, 6469.01470254], [1516579080000, 2.591e-05, 2.591e-05, 2.583e-05, 2.583e-05, 5000.0], [1516579140000, 2.59e-05, 2.59e-05, 2.59e-05, 2.59e-05, 25278.34353153], [1516579200000, 2.59e-05, 2.59e-05, 2.59e-05, 2.59e-05, 181.22508155], [1516579320000, 2.59e-05, 2.621e-05, 2.585e-05, 2.59e-05, 2306.03179506], [1516579380000, 2.59e-05, 2.59e-05, 2.588e-05, 2.588e-05, 5063.23371666], [1516579440000, 2.588e-05, 2.588e-05, 2.583e-05, 2.583e-05, 15443.71674699], [1516579500000, 2.583e-05, 2.583e-05, 2.573e-05, 2.582e-05, 48786.54916366], [1516579560000, 2.582e-05, 2.583e-05, 2.573e-05, 2.583e-05, 9919.60417954], [1516579620000, 2.583e-05, 2.583e-05, 2.583e-05, 2.583e-05, 39.00406504], [1516579680000, 2.583e-05, 2.583e-05, 2.563e-05, 2.563e-05, 14041.35283296], [1516579740000, 2.565e-05, 2.583e-05, 2.565e-05, 2.583e-05, 13496.91982634], [1516579860000, 2.584e-05, 2.584e-05, 2.584e-05, 2.584e-05, 252.0671649], [1516579920000, 2.588e-05, 2.588e-05, 2.588e-05, 2.588e-05, 19.30894309], [1516579980000, 2.588e-05, 2.589e-05, 2.588e-05, 2.589e-05, 8632.87202593], [1516580040000, 2.584e-05, 2.584e-05, 2.583e-05, 2.583e-05, 6506.16941655], [1516580100000, 2.583e-05, 2.584e-05, 2.58e-05, 2.584e-05, 2907.08222369], [1516580220000, 2.602e-05, 2.602e-05, 2.602e-05, 2.602e-05, 67.37226941], [1516580280000, 2.603e-05, 2.603e-05, 2.563e-05, 2.563e-05, 5693.5907199], [1516580340000, 2.58e-05, 2.58e-05, 2.58e-05, 2.58e-05, 1395.1048951], [1516580400000, 2.582e-05, 2.601e-05, 2.58e-05, 2.601e-05, 8532.56416089], [1516580460000, 2.585e-05, 2.585e-05, 2.585e-05, 2.585e-05, 17041.50940794], [1516580520000, 2.598e-05, 2.598e-05, 2.598e-05, 2.598e-05, 38.47633705], [1516580580000, 2.599e-05, 2.603e-05, 2.59e-05, 2.602e-05, 8945.92972995], [1516580700000, 2.602e-05, 2.603e-05, 2.597e-05, 2.597e-05, 105815.63750432], [1516580760000, 2.597e-05, 2.598e-05, 2.597e-05, 2.597e-05, 2553.85703693], [1516580820000, 2.597e-05, 2.598e-05, 2.59e-05, 2.59e-05, 13784.41390889], [1516580880000, 2.59e-05, 2.603e-05, 2.59e-05, 2.603e-05, 26274.72493521], [1516581000000, 2.609e-05, 2.609e-05, 2.596e-05, 2.596e-05, 1984.25690304], [1516581060000, 2.596e-05, 2.619e-05, 2.596e-05, 2.619e-05, 14919.14759314], [1516581120000, 2.619e-05, 2.62e-05, 2.591e-05, 2.593e-05, 7582.76276719], [1516581180000, 2.596e-05, 2.596e-05, 2.596e-05, 2.596e-05, 26.30467431], [1516581300000, 2.597e-05, 2.597e-05, 2.597e-05, 2.597e-05, 231.38810056], [1516581420000, 2.618e-05, 2.62e-05, 2.618e-05, 2.62e-05, 18681.37902191], [1516581480000, 2.62e-05, 2.62e-05, 2.62e-05, 2.62e-05, 12049.39737804], [1516581540000, 2.621e-05, 2.627e-05, 2.602e-05, 2.627e-05, 518.8260145], [1516581600000, 2.627e-05, 2.63e-05, 2.627e-05, 2.63e-05, 19222.95660454], [1516581720000, 2.636e-05, 2.638e-05, 2.636e-05, 2.638e-05, 1082.80373595], [1516581780000, 2.638e-05, 2.653e-05, 2.638e-05, 2.649e-05, 59122.79317353], [1516581840000, 2.65e-05, 2.656e-05, 2.649e-05, 2.649e-05, 31787.13289921], [1516581900000, 2.65e-05, 2.657e-05, 2.649e-05, 2.65e-05, 8051.14946607], [1516581960000, 2.65e-05, 2.657e-05, 2.649e-05, 2.657e-05, 4598.16554542], [1516582020000, 2.658e-05, 2.662e-05, 2.657e-05, 2.662e-05, 4284.79473532], [1516582080000, 2.658e-05, 2.669e-05, 2.658e-05, 2.669e-05, 16091.00213154], [1516582140000, 2.669e-05, 2.677e-05, 2.669e-05, 2.669e-05, 5186.5949837], [1516582200000, 2.675e-05, 2.675e-05, 2.663e-05, 2.673e-05, 1126.06004692], [1516582260000, 2.678e-05, 2.678e-05, 2.659e-05, 2.659e-05, 7351.41176859], [1516582320000, 2.658e-05, 2.659e-05, 2.658e-05, 2.658e-05, 2915.53079046], [1516582440000, 2.663e-05, 2.678e-05, 2.66e-05, 2.66e-05, 8236.36667009], [1516582500000, 2.66e-05, 2.66e-05, 2.657e-05, 2.66e-05, 11561.52881336], [1516582560000, 2.676e-05, 2.678e-05, 2.66e-05, 2.678e-05, 5473.00008827], [1516582620000, 2.66e-05, 2.68e-05, 2.66e-05, 2.68e-05, 13963.60803655], [1516582680000, 2.681e-05, 2.69e-05, 2.681e-05, 2.69e-05, 17915.99292194], [1516582740000, 2.69e-05, 2.699e-05, 2.69e-05, 2.699e-05, 3670.53525031], [1516582800000, 2.699e-05, 2.7e-05, 2.69e-05, 2.69e-05, 32277.76517799], [1516582860000, 2.7e-05, 2.701e-05, 2.691e-05, 2.691e-05, 29544.6002313], [1516582920000, 2.691e-05, 2.702e-05, 2.691e-05, 2.702e-05, 10152.24578732], [1516582980000, 2.702e-05, 2.713e-05, 2.702e-05, 2.706e-05, 24138.97025857], [1516583040000, 2.713e-05, 2.713e-05, 2.703e-05, 2.713e-05, 30013.63935392], [1516583100000, 2.711e-05, 2.713e-05, 2.7e-05, 2.702e-05, 23705.89719714], [1516583160000, 2.702e-05, 2.713e-05, 2.702e-05, 2.712e-05, 10714.84777948], [1516583220000, 2.712e-05, 2.715e-05, 2.711e-05, 2.715e-05, 36007.12309804], [1516583280000, 2.717e-05, 2.736e-05, 2.714e-05, 2.73e-05, 102986.02589682], [1516583340000, 2.738e-05, 2.764e-05, 2.72e-05, 2.72e-05, 192889.67761579], [1516583400000, 2.72e-05, 2.745e-05, 2.711e-05, 2.715e-05, 21096.26749922], [1516583460000, 2.719e-05, 2.743e-05, 2.718e-05, 2.743e-05, 22861.5673109], [1516583520000, 2.743e-05, 2.747e-05, 2.727e-05, 2.747e-05, 36216.26550778], [1516583580000, 2.752e-05, 2.763e-05, 2.747e-05, 2.748e-05, 34143.23730042], [1516583640000, 2.747e-05, 2.751e-05, 2.738e-05, 2.738e-05, 22291.88003428], [1516583700000, 2.738e-05, 2.746e-05, 2.722e-05, 2.722e-05, 44213.66577766], [1516583760000, 2.722e-05, 2.75e-05, 2.719e-05, 2.75e-05, 15640.41208764], [1516583820000, 2.752e-05, 2.765e-05, 2.75e-05, 2.75e-05, 55698.36256887], [1516583880000, 2.75e-05, 2.764e-05, 2.75e-05, 2.761e-05, 14021.92117643], [1516583940000, 2.761e-05, 2.783e-05, 2.761e-05, 2.776e-05, 110083.91520955], [1516584000000, 2.776e-05, 2.81e-05, 2.776e-05, 2.802e-05, 190829.45490973], [1516584060000, 2.804e-05, 2.864e-05, 2.8e-05, 2.83e-05, 449638.12552917], [1516584120000, 2.856e-05, 2.866e-05, 2.782e-05, 2.83e-05, 257154.8166869], [1516584180000, 2.83e-05, 2.844e-05, 2.785e-05, 2.79e-05, 64826.81515794], [1516584240000, 2.799e-05, 2.856e-05, 2.79e-05, 2.853e-05, 129393.09475066], [1516584300000, 2.854e-05, 2.868e-05, 2.842e-05, 2.865e-05, 72109.03540728], [1516584360000, 2.864e-05, 2.867e-05, 2.829e-05, 2.855e-05, 105919.07035151], [1516584420000, 2.853e-05, 2.885e-05, 2.839e-05, 2.853e-05, 188207.57133994], [1516584480000, 2.873e-05, 2.882e-05, 2.853e-05, 2.866e-05, 151137.16992035], [1516584540000, 2.866e-05, 2.893e-05, 2.86e-05, 2.871e-05, 182780.57458008], [1516584600000, 2.871e-05, 2.893e-05, 2.867e-05, 2.888e-05, 121484.90877293], [1516584660000, 2.891e-05, 2.897e-05, 2.888e-05, 2.897e-05, 42325.216848], [1516584720000, 2.897e-05, 2.903e-05, 2.893e-05, 2.9e-05, 230028.82760934], [1516584780000, 2.904e-05, 2.914e-05, 2.879e-05, 2.91e-05, 135434.66038959], [1516584840000, 2.911e-05, 2.92e-05, 2.9e-05, 2.918e-05, 146042.4897655], [1516584900000, 2.919e-05, 2.926e-05, 2.9e-05, 2.9e-05, 110895.27386701], [1516584960000, 2.893e-05, 2.907e-05, 2.839e-05, 2.899e-05, 159428.91338422], [1516585020000, 2.899e-05, 2.9e-05, 2.844e-05, 2.853e-05, 85444.13943999], [1516585080000, 2.853e-05, 2.866e-05, 2.847e-05, 2.85e-05, 124534.45641977], [1516585140000, 2.849e-05, 2.85e-05, 2.814e-05, 2.816e-05, 84616.48368821], [1516585200000, 2.817e-05, 2.832e-05, 2.816e-05, 2.816e-05, 31064.99607621], [1516585260000, 2.816e-05, 2.816e-05, 2.778e-05, 2.805e-05, 120692.03757963], [1516585320000, 2.805e-05, 2.816e-05, 2.767e-05, 2.767e-05, 63075.8646036], [1516585380000, 2.775e-05, 2.775e-05, 2.727e-05, 2.738e-05, 61726.05923215], [1516585440000, 2.738e-05, 2.762e-05, 2.732e-05, 2.74e-05, 80212.36874501], [1516585500000, 2.762e-05, 2.765e-05, 2.739e-05, 2.765e-05, 54754.34552438], [1516585560000, 2.765e-05, 2.805e-05, 2.765e-05, 2.793e-05, 66112.04524231], [1516585620000, 2.799e-05, 2.8e-05, 2.762e-05, 2.762e-05, 32697.56483927], [1516585680000, 2.781e-05, 2.781e-05, 2.78e-05, 2.78e-05, 2058.3205907], [1516585740000, 2.78e-05, 2.781e-05, 2.77e-05, 2.78e-05, 34600.69144427], [1516585800000, 2.774e-05, 2.774e-05, 2.75e-05, 2.761e-05, 44607.95564752], [1516585860000, 2.771e-05, 2.771e-05, 2.763e-05, 2.763e-05, 73131.22847792], [1516585920000, 2.764e-05, 2.771e-05, 2.75e-05, 2.75e-05, 109570.60925723], [1516585980000, 2.746e-05, 2.765e-05, 2.735e-05, 2.735e-05, 54252.32528095], [1516586040000, 2.735e-05, 2.738e-05, 2.735e-05, 2.735e-05, 28053.47625194], [1516586100000, 2.732e-05, 2.732e-05, 2.72e-05, 2.72e-05, 32461.36745987], [1516586160000, 2.72e-05, 2.72e-05, 2.706e-05, 2.716e-05, 39649.90870584], [1516586220000, 2.716e-05, 2.716e-05, 2.711e-05, 2.716e-05, 66642.50051519], [1516586280000, 2.713e-05, 2.716e-05, 2.704e-05, 2.716e-05, 47636.39467669], [1516586340000, 2.715e-05, 2.716e-05, 2.713e-05, 2.716e-05, 14020.32301958], [1516586400000, 2.712e-05, 2.724e-05, 2.711e-05, 2.723e-05, 1961.80362421], [1516586460000, 2.723e-05, 2.757e-05, 2.723e-05, 2.725e-05, 12080.18612059], [1516586520000, 2.725e-05, 2.752e-05, 2.725e-05, 2.752e-05, 11562.61540958], [1516586580000, 2.752e-05, 2.752e-05, 2.751e-05, 2.752e-05, 19660.12137961], [1516586640000, 2.753e-05, 2.775e-05, 2.751e-05, 2.752e-05, 7474.62152918], [1516586700000, 2.76e-05, 2.76e-05, 2.751e-05, 2.751e-05, 46150.85464991], [1516586760000, 2.751e-05, 2.752e-05, 2.751e-05, 2.751e-05, 5035.68652032], [1516586820000, 2.751e-05, 2.764e-05, 2.751e-05, 2.751e-05, 5040.77310099], [1516586880000, 2.751e-05, 2.751e-05, 2.727e-05, 2.75e-05, 3710.8279943], [1516586940000, 2.727e-05, 2.751e-05, 2.727e-05, 2.731e-05, 15217.75479669], [1516587000000, 2.731e-05, 2.788e-05, 2.731e-05, 2.783e-05, 46230.8486333], [1516587060000, 2.768e-05, 2.781e-05, 2.757e-05, 2.78e-05, 64034.04666578], [1516587120000, 2.78e-05, 2.781e-05, 2.76e-05, 2.78e-05, 20834.64305251], [1516587180000, 2.78e-05, 2.783e-05, 2.759e-05, 2.783e-05, 3778.46676006], [1516587240000, 2.783e-05, 2.783e-05, 2.763e-05, 2.763e-05, 2095.66522762], [1516587300000, 2.759e-05, 2.763e-05, 2.758e-05, 2.763e-05, 14573.25571607], [1516587360000, 2.782e-05, 2.782e-05, 2.764e-05, 2.765e-05, 6742.31581861], [1516587420000, 2.766e-05, 2.766e-05, 2.766e-05, 2.766e-05, 2589.78577869], [1516587480000, 2.766e-05, 2.766e-05, 2.766e-05, 2.766e-05, 6390.87309166], [1516587540000, 2.766e-05, 2.779e-05, 2.766e-05, 2.779e-05, 3614.82818674], [1516587600000, 2.766e-05, 2.766e-05, 2.766e-05, 2.766e-05, 2625.845252], [1516587660000, 2.766e-05, 2.782e-05, 2.766e-05, 2.782e-05, 23633.66962537], [1516587720000, 2.779e-05, 2.788e-05, 2.779e-05, 2.788e-05, 21861.02703941], [1516587780000, 2.789e-05, 2.789e-05, 2.789e-05, 2.789e-05, 39.9], [1516587840000, 2.797e-05, 2.798e-05, 2.797e-05, 2.798e-05, 3579.70687311], [1516587900000, 2.799e-05, 2.805e-05, 2.798e-05, 2.805e-05, 46438.83683726], [1516587960000, 2.805e-05, 2.813e-05, 2.805e-05, 2.81e-05, 18972.92984783], [1516588020000, 2.813e-05, 2.824e-05, 2.813e-05, 2.821e-05, 33476.60311766], [1516588080000, 2.822e-05, 2.839e-05, 2.822e-05, 2.836e-05, 71258.78827222], [1516588140000, 2.839e-05, 2.84e-05, 2.829e-05, 2.84e-05, 140970.77845181], [1516588200000, 2.839e-05, 2.844e-05, 2.839e-05, 2.844e-05, 10440.73703112], [1516588260000, 2.845e-05, 2.86e-05, 2.845e-05, 2.86e-05, 18505.65265835], [1516588320000, 2.858e-05, 2.885e-05, 2.858e-05, 2.885e-05, 72067.4584824], [1516588380000, 2.885e-05, 2.89e-05, 2.885e-05, 2.89e-05, 79224.61915864], [1516588440000, 2.889e-05, 2.911e-05, 2.889e-05, 2.9e-05, 139343.73089745], [1516588500000, 2.899e-05, 2.903e-05, 2.888e-05, 2.9e-05, 55312.86097933], [1516588560000, 2.9e-05, 2.9e-05, 2.858e-05, 2.858e-05, 151757.42793934], [1516588620000, 2.855e-05, 2.855e-05, 2.828e-05, 2.828e-05, 52587.45108384], [1516588680000, 2.828e-05, 2.858e-05, 2.824e-05, 2.858e-05, 47815.48231122], [1516588740000, 2.858e-05, 2.896e-05, 2.858e-05, 2.894e-05, 32750.56029155], [1516588800000, 2.893e-05, 2.9e-05, 2.877e-05, 2.894e-05, 87666.28396281], [1516588860000, 2.9e-05, 2.903e-05, 2.892e-05, 2.892e-05, 16223.18997038], [1516588920000, 2.905e-05, 2.905e-05, 2.877e-05, 2.877e-05, 40212.52732895], [1516588980000, 2.89e-05, 2.891e-05, 2.877e-05, 2.877e-05, 53202.15942517], [1516589040000, 2.877e-05, 2.891e-05, 2.877e-05, 2.889e-05, 41175.2728041], [1516589100000, 2.878e-05, 2.878e-05, 2.877e-05, 2.878e-05, 11232.12620926], [1516589160000, 2.877e-05, 2.89e-05, 2.865e-05, 2.865e-05, 52726.94095694], [1516589220000, 2.873e-05, 2.895e-05, 2.873e-05, 2.89e-05, 12979.14583305], [1516589280000, 2.895e-05, 2.9e-05, 2.89e-05, 2.89e-05, 50979.67701904], [1516589340000, 2.89e-05, 2.905e-05, 2.86e-05, 2.869e-05, 23327.84789821], [1516589400000, 2.869e-05, 2.889e-05, 2.869e-05, 2.889e-05, 20670.47491698], [1516589460000, 2.889e-05, 2.889e-05, 2.887e-05, 2.887e-05, 13383.84828299], [1516589520000, 2.887e-05, 2.887e-05, 2.869e-05, 2.869e-05, 27382.06672454], [1516589580000, 2.86e-05, 2.869e-05, 2.849e-05, 2.849e-05, 42395.92822695], [1516589640000, 2.858e-05, 2.869e-05, 2.858e-05, 2.864e-05, 84597.91095883], [1516589700000, 2.864e-05, 2.865e-05, 2.833e-05, 2.833e-05, 72499.38760339], [1516589760000, 2.841e-05, 2.85e-05, 2.831e-05, 2.84e-05, 40514.58247266], [1516589820000, 2.84e-05, 2.84e-05, 2.824e-05, 2.824e-05, 67854.19580907], [1516589880000, 2.826e-05, 2.826e-05, 2.81e-05, 2.81e-05, 327670.46034676], [1516589940000, 2.824e-05, 2.824e-05, 2.806e-05, 2.806e-05, 45986.99082873], [1516590000000, 2.806e-05, 2.839e-05, 2.805e-05, 2.838e-05, 116984.57792619], [1516590060000, 2.836e-05, 2.836e-05, 2.81e-05, 2.81e-05, 43616.6559076], [1516590120000, 2.811e-05, 2.811e-05, 2.81e-05, 2.81e-05, 13678.30817393], [1516590180000, 2.81e-05, 2.827e-05, 2.81e-05, 2.81e-05, 13394.71879729], [1516590240000, 2.81e-05, 2.81e-05, 2.802e-05, 2.802e-05, 15397.22456429], [1516590300000, 2.803e-05, 2.803e-05, 2.803e-05, 2.803e-05, 2258.95661951], [1516590360000, 2.82e-05, 2.82e-05, 2.8e-05, 2.816e-05, 25727.21784747], [1516590420000, 2.839e-05, 2.84e-05, 2.816e-05, 2.818e-05, 12582.38191218], [1516590480000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 354.41149332], [1516590540000, 2.839e-05, 2.839e-05, 2.818e-05, 2.838e-05, 34701.30681881], [1516590600000, 2.838e-05, 2.85e-05, 2.838e-05, 2.85e-05, 22946.28638725], [1516590660000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 1706.033], [1516590720000, 2.851e-05, 2.883e-05, 2.851e-05, 2.883e-05, 10718.63311085], [1516590780000, 2.885e-05, 2.889e-05, 2.88e-05, 2.889e-05, 62460.23261882], [1516590840000, 2.888e-05, 2.896e-05, 2.885e-05, 2.896e-05, 97521.68164139], [1516590900000, 2.892e-05, 2.905e-05, 2.875e-05, 2.899e-05, 134798.03545184], [1516590960000, 2.9e-05, 2.9e-05, 2.899e-05, 2.899e-05, 40496.93430723], [1516591020000, 2.9e-05, 2.9e-05, 2.899e-05, 2.899e-05, 14801.73565298], [1516591080000, 2.899e-05, 2.899e-05, 2.875e-05, 2.875e-05, 3795.89768424], [1516591140000, 2.875e-05, 2.875e-05, 2.875e-05, 2.875e-05, 25052.83052923], [1516591200000, 2.875e-05, 2.885e-05, 2.875e-05, 2.885e-05, 14194.8209436], [1516591260000, 2.885e-05, 2.901e-05, 2.885e-05, 2.9e-05, 49025.01938958], [1516591320000, 2.901e-05, 2.906e-05, 2.857e-05, 2.906e-05, 54971.44637392], [1516591380000, 2.905e-05, 2.905e-05, 2.873e-05, 2.905e-05, 7561.29443966], [1516591440000, 2.874e-05, 2.875e-05, 2.874e-05, 2.874e-05, 19017.74057423], [1516591500000, 2.88e-05, 2.889e-05, 2.873e-05, 2.889e-05, 32268.99104045], [1516591560000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 13311.82432412], [1516591620000, 2.88e-05, 2.899e-05, 2.88e-05, 2.89e-05, 5963.61038346], [1516591680000, 2.89e-05, 2.89e-05, 2.861e-05, 2.89e-05, 21534.06373673], [1516591740000, 2.89e-05, 2.899e-05, 2.861e-05, 2.898e-05, 72584.36557427], [1516591800000, 2.891e-05, 2.899e-05, 2.864e-05, 2.899e-05, 52317.91963847], [1516591860000, 2.894e-05, 2.899e-05, 2.894e-05, 2.899e-05, 8532.9518563], [1516591920000, 2.898e-05, 2.899e-05, 2.871e-05, 2.899e-05, 71064.18569398], [1516591980000, 2.899e-05, 2.934e-05, 2.897e-05, 2.898e-05, 143432.74526468], [1516592040000, 2.899e-05, 2.942e-05, 2.899e-05, 2.942e-05, 66160.92771158], [1516592100000, 2.942e-05, 2.949e-05, 2.933e-05, 2.934e-05, 62377.66200929], [1516592160000, 2.95e-05, 2.956e-05, 2.934e-05, 2.939e-05, 91808.8737165], [1516592220000, 2.939e-05, 2.978e-05, 2.939e-05, 2.974e-05, 168529.9915901], [1516592280000, 2.976e-05, 2.999e-05, 2.97e-05, 2.995e-05, 266965.61597531], [1516592340000, 2.995e-05, 3e-05, 2.985e-05, 2.993e-05, 153192.80939755], [1516592400000, 2.993e-05, 2.993e-05, 2.981e-05, 2.986e-05, 101620.84347504], [1516592460000, 2.986e-05, 2.989e-05, 2.981e-05, 2.981e-05, 54268.69971297], [1516592520000, 2.973e-05, 2.981e-05, 2.939e-05, 2.957e-05, 86449.24158147], [1516592580000, 2.958e-05, 3.023e-05, 2.949e-05, 3.023e-05, 229931.04940714], [1516592640000, 3.022e-05, 3.071e-05, 3.017e-05, 3.035e-05, 241725.90314253], [1516592700000, 3.05e-05, 3.081e-05, 3.019e-05, 3.026e-05, 341959.49098251], [1516592760000, 3.026e-05, 3.099e-05, 3.025e-05, 3.077e-05, 309452.5041953], [1516592820000, 3.077e-05, 3.077e-05, 3.028e-05, 3.053e-05, 71061.18094004], [1516592880000, 3.065e-05, 3.08e-05, 3.053e-05, 3.073e-05, 128657.88820105], [1516592940000, 3.08e-05, 3.123e-05, 3.073e-05, 3.12e-05, 268183.11515845], [1516593000000, 3.124e-05, 3.128e-05, 3.05e-05, 3.109e-05, 428033.47443373], [1516593060000, 3.099e-05, 3.11e-05, 3.052e-05, 3.054e-05, 184682.57203054], [1516593120000, 3.054e-05, 3.075e-05, 3.052e-05, 3.075e-05, 114694.23222144], [1516593180000, 3.062e-05, 3.094e-05, 3.044e-05, 3.075e-05, 132153.58888669], [1516593240000, 3.075e-05, 3.1e-05, 3.075e-05, 3.099e-05, 125757.96795302], [1516593300000, 3.081e-05, 3.099e-05, 3.078e-05, 3.081e-05, 62417.14688744], [1516593360000, 3.081e-05, 3.098e-05, 3.081e-05, 3.098e-05, 37072.61677802], [1516593420000, 3.098e-05, 3.098e-05, 3.078e-05, 3.09e-05, 89800.10643797], [1516593480000, 3.09e-05, 3.096e-05, 3.089e-05, 3.096e-05, 73386.66319684], [1516593540000, 3.096e-05, 3.131e-05, 3.096e-05, 3.121e-05, 123692.32434112], [1516593600000, 3.129e-05, 3.14e-05, 3.095e-05, 3.119e-05, 305738.33148113], [1516593660000, 3.119e-05, 3.119e-05, 3.085e-05, 3.085e-05, 168689.45943195], [1516593720000, 3.085e-05, 3.085e-05, 3.06e-05, 3.066e-05, 60692.09949822], [1516593780000, 3.066e-05, 3.08e-05, 3.066e-05, 3.08e-05, 86391.11481579], [1516593840000, 3.082e-05, 3.096e-05, 3.082e-05, 3.095e-05, 52200.36638372], [1516593900000, 3.095e-05, 3.102e-05, 3.08e-05, 3.081e-05, 101821.78771623], [1516593960000, 3.07e-05, 3.081e-05, 3.054e-05, 3.061e-05, 120117.78388587], [1516594020000, 3.057e-05, 3.079e-05, 3.057e-05, 3.061e-05, 68240.96587512], [1516594080000, 3.056e-05, 3.058e-05, 3.05e-05, 3.052e-05, 113294.10592888], [1516594140000, 3.053e-05, 3.057e-05, 3.052e-05, 3.056e-05, 54159.40566864], [1516594200000, 3.054e-05, 3.057e-05, 3.054e-05, 3.057e-05, 23209.4155278], [1516594260000, 3.056e-05, 3.06e-05, 3.054e-05, 3.056e-05, 48416.18560427], [1516594320000, 3.061e-05, 3.061e-05, 3.053e-05, 3.053e-05, 43686.14007452], [1516594380000, 3.053e-05, 3.057e-05, 3.024e-05, 3.024e-05, 17536.38640617], [1516594440000, 3.029e-05, 3.03e-05, 3e-05, 3.001e-05, 80884.42516228], [1516594500000, 3e-05, 3.001e-05, 2.969e-05, 2.981e-05, 50369.57237388], [1516594560000, 2.981e-05, 3.023e-05, 2.981e-05, 3.017e-05, 100730.15743423], [1516594620000, 3e-05, 3.017e-05, 2.994e-05, 3.017e-05, 45253.24279857], [1516594680000, 3.017e-05, 3.059e-05, 3e-05, 3.028e-05, 77521.80093681], [1516594740000, 3.04e-05, 3.058e-05, 3.032e-05, 3.032e-05, 24095.88060876], [1516594800000, 3.055e-05, 3.056e-05, 3.035e-05, 3.035e-05, 40501.77802471], [1516594860000, 3.035e-05, 3.05e-05, 3.035e-05, 3.045e-05, 18429.32186151], [1516594920000, 3.038e-05, 3.045e-05, 3.037e-05, 3.037e-05, 18902.62277919], [1516594980000, 3.035e-05, 3.037e-05, 3.028e-05, 3.035e-05, 42281.29087725], [1516595040000, 3.033e-05, 3.033e-05, 3.024e-05, 3.028e-05, 9693.65773183], [1516595100000, 3.024e-05, 3.031e-05, 3.015e-05, 3.026e-05, 66900.27405406], [1516595160000, 3.015e-05, 3.026e-05, 3.008e-05, 3.015e-05, 22780.40743357], [1516595220000, 3.015e-05, 3.017e-05, 3.002e-05, 3.002e-05, 92966.08507571], [1516595280000, 3.003e-05, 3.017e-05, 3.002e-05, 3.008e-05, 12772.78077619], [1516595340000, 3.008e-05, 3.01e-05, 3.002e-05, 3.002e-05, 42550.39402016], [1516595400000, 3.008e-05, 3.01e-05, 3.002e-05, 3.01e-05, 14271.27601341], [1516595460000, 3.01e-05, 3.025e-05, 3.009e-05, 3.011e-05, 62687.1934947], [1516595520000, 3.011e-05, 3.035e-05, 3.011e-05, 3.035e-05, 23574.78928256], [1516595580000, 3.035e-05, 3.035e-05, 3.019e-05, 3.02e-05, 27173.21966618], [1516595640000, 3.019e-05, 3.035e-05, 3.019e-05, 3.034e-05, 26763.17158326], [1516595700000, 3.03e-05, 3.041e-05, 3.03e-05, 3.035e-05, 103059.45538449], [1516595760000, 3.042e-05, 3.049e-05, 3.035e-05, 3.037e-05, 5709.91382684], [1516595820000, 3.049e-05, 3.051e-05, 3.049e-05, 3.049e-05, 37420.80756932], [1516595880000, 3.053e-05, 3.059e-05, 3.038e-05, 3.054e-05, 53460.06763062], [1516595940000, 3.05e-05, 3.058e-05, 3.034e-05, 3.034e-05, 78906.59832103], [1516596000000, 3.035e-05, 3.038e-05, 3.034e-05, 3.038e-05, 36933.3900546], [1516596060000, 3.038e-05, 3.045e-05, 3.037e-05, 3.045e-05, 84719.42803586], [1516596120000, 3.045e-05, 3.06e-05, 3.038e-05, 3.06e-05, 54864.70594119], [1516596180000, 3.058e-05, 3.058e-05, 3.053e-05, 3.053e-05, 13534.89189498], [1516596240000, 3.052e-05, 3.052e-05, 3.042e-05, 3.042e-05, 7553.99547274], [1516596300000, 3.052e-05, 3.052e-05, 3.02e-05, 3.052e-05, 26707.67759696], [1516596360000, 3.052e-05, 3.054e-05, 3.021e-05, 3.047e-05, 15182.98029283], [1516596420000, 3.047e-05, 3.051e-05, 3.024e-05, 3.025e-05, 14559.54883197], [1516596480000, 3.025e-05, 3.026e-05, 3.023e-05, 3.025e-05, 28847.36986075], [1516596540000, 3.038e-05, 3.05e-05, 3.026e-05, 3.05e-05, 23317.86140897], [1516596600000, 3.028e-05, 3.049e-05, 3.028e-05, 3.03e-05, 13283.27216452], [1516596660000, 3.045e-05, 3.045e-05, 3.021e-05, 3.021e-05, 42819.16395206], [1516596720000, 3.023e-05, 3.03e-05, 3.021e-05, 3.021e-05, 27575.92295809], [1516596780000, 3.021e-05, 3.043e-05, 3.02e-05, 3.043e-05, 9378.70567306], [1516596840000, 3.04e-05, 3.04e-05, 3.022e-05, 3.022e-05, 7585.65285391], [1516596900000, 3.022e-05, 3.03e-05, 3.022e-05, 3.022e-05, 12610.50721474], [1516596960000, 3.022e-05, 3.022e-05, 3.02e-05, 3.02e-05, 109259.32798949], [1516597020000, 3.022e-05, 3.022e-05, 3.007e-05, 3.018e-05, 92250.36063049], [1516597080000, 3.018e-05, 3.018e-05, 3.005e-05, 3.006e-05, 7478.90904954], [1516597140000, 3.006e-05, 3.006e-05, 2.989e-05, 2.99e-05, 19478.81305364], [1516597200000, 3e-05, 3.016e-05, 2.987e-05, 3.006e-05, 32449.67008376], [1516597260000, 3.006e-05, 3.045e-05, 2.974e-05, 3.04e-05, 109285.41954687], [1516597320000, 3.04e-05, 3.046e-05, 2.994e-05, 3.035e-05, 44085.09460941], [1516597380000, 3.035e-05, 3.035e-05, 3.012e-05, 3.035e-05, 25102.18532547], [1516597440000, 3.046e-05, 3.058e-05, 3.035e-05, 3.058e-05, 144810.69251365], [1516597500000, 3.059e-05, 3.064e-05, 3.057e-05, 3.064e-05, 92736.4519427], [1516597560000, 3.064e-05, 3.068e-05, 3.061e-05, 3.068e-05, 107923.5110538], [1516597620000, 3.068e-05, 3.086e-05, 3.065e-05, 3.086e-05, 159920.75764587], [1516597680000, 3.086e-05, 3.11e-05, 3.086e-05, 3.104e-05, 152707.70326865], [1516597740000, 3.113e-05, 3.146e-05, 3.104e-05, 3.138e-05, 236635.34202356], [1516597800000, 3.138e-05, 3.16e-05, 3.138e-05, 3.159e-05, 185373.88333405], [1516597860000, 3.161e-05, 3.193e-05, 3.159e-05, 3.188e-05, 361345.98137258], [1516597920000, 3.188e-05, 3.196e-05, 3.151e-05, 3.155e-05, 152082.4870529], [1516597980000, 3.155e-05, 3.195e-05, 3.154e-05, 3.187e-05, 89042.86567766], [1516598040000, 3.173e-05, 3.174e-05, 3.16e-05, 3.16e-05, 70564.62842704], [1516598100000, 3.156e-05, 3.162e-05, 3.155e-05, 3.158e-05, 76795.24664109], [1516598160000, 3.158e-05, 3.189e-05, 3.151e-05, 3.171e-05, 79310.29579557], [1516598220000, 3.171e-05, 3.181e-05, 3.156e-05, 3.171e-05, 99331.98793476], [1516598280000, 3.171e-05, 3.175e-05, 3.159e-05, 3.174e-05, 73497.61463393], [1516598340000, 3.174e-05, 3.187e-05, 3.171e-05, 3.185e-05, 193627.06900242], [1516598400000, 3.185e-05, 3.185e-05, 3.165e-05, 3.178e-05, 77594.04295116], [1516598460000, 3.178e-05, 3.19e-05, 3.163e-05, 3.19e-05, 107077.46838709], [1516598520000, 3.189e-05, 3.201e-05, 3.188e-05, 3.201e-05, 174361.31207221], [1516598580000, 3.201e-05, 3.229e-05, 3.199e-05, 3.229e-05, 309128.31069318], [1516598640000, 3.229e-05, 3.257e-05, 3.229e-05, 3.254e-05, 235445.17891572], [1516598700000, 3.257e-05, 3.287e-05, 3.255e-05, 3.283e-05, 361434.47447711], [1516598760000, 3.283e-05, 3.286e-05, 3.209e-05, 3.249e-05, 346724.37008944], [1516598820000, 3.249e-05, 3.289e-05, 3.247e-05, 3.289e-05, 123198.34800288], [1516598880000, 3.288e-05, 3.301e-05, 3.258e-05, 3.275e-05, 703296.94584137], [1516598940000, 3.258e-05, 3.279e-05, 3.244e-05, 3.274e-05, 328899.19046331], [1516599000000, 3.268e-05, 3.29e-05, 3.187e-05, 3.225e-05, 297926.41928284], [1516599060000, 3.212e-05, 3.23e-05, 3.194e-05, 3.23e-05, 167857.5162198], [1516599120000, 3.229e-05, 3.23e-05, 3.18e-05, 3.194e-05, 185055.61181259], [1516599180000, 3.194e-05, 3.2e-05, 3.166e-05, 3.2e-05, 283871.84130739], [1516599240000, 3.195e-05, 3.235e-05, 3.195e-05, 3.212e-05, 373943.76157879], [1516599300000, 3.212e-05, 3.219e-05, 3.189e-05, 3.215e-05, 121570.97704428], [1516599360000, 3.215e-05, 3.227e-05, 3.192e-05, 3.2e-05, 66822.94995194], [1516599420000, 3.2e-05, 3.215e-05, 3.197e-05, 3.215e-05, 103902.41285452], [1516599480000, 3.215e-05, 3.26e-05, 3.215e-05, 3.26e-05, 105572.81945108], [1516599540000, 3.26e-05, 3.278e-05, 3.25e-05, 3.27e-05, 303207.70164915], [1516599600000, 3.27e-05, 3.28e-05, 3.26e-05, 3.269e-05, 115373.34217985], [1516599660000, 3.268e-05, 3.27e-05, 3.257e-05, 3.269e-05, 89960.03905965], [1516599720000, 3.269e-05, 3.269e-05, 3.248e-05, 3.248e-05, 94482.33225006], [1516599780000, 3.248e-05, 3.25e-05, 3.21e-05, 3.221e-05, 112329.94507079], [1516599840000, 3.223e-05, 3.25e-05, 3.223e-05, 3.25e-05, 115609.98363378], [1516599900000, 3.249e-05, 3.26e-05, 3.249e-05, 3.26e-05, 79859.88850243], [1516599960000, 3.26e-05, 3.281e-05, 3.26e-05, 3.277e-05, 150208.43301104], [1516600020000, 3.27e-05, 3.27e-05, 3.259e-05, 3.266e-05, 67772.35428363], [1516600080000, 3.259e-05, 3.259e-05, 3.244e-05, 3.245e-05, 54405.92390455], [1516600140000, 3.245e-05, 3.26e-05, 3.245e-05, 3.259e-05, 26927.46845098], [1516600200000, 3.259e-05, 3.259e-05, 3.25e-05, 3.253e-05, 64231.62832215], [1516600260000, 3.252e-05, 3.255e-05, 3.244e-05, 3.244e-05, 67501.71239901], [1516600320000, 3.251e-05, 3.253e-05, 3.24e-05, 3.249e-05, 82453.4798443], [1516600380000, 3.24e-05, 3.24e-05, 3.214e-05, 3.214e-05, 150266.8268109], [1516600440000, 3.214e-05, 3.218e-05, 3.189e-05, 3.189e-05, 111302.82449681], [1516600500000, 3.189e-05, 3.189e-05, 3.167e-05, 3.17e-05, 170456.83569085], [1516600560000, 3.169e-05, 3.2e-05, 3.169e-05, 3.2e-05, 37242.51581684], [1516600620000, 3.197e-05, 3.246e-05, 3.197e-05, 3.244e-05, 76697.84170429], [1516600680000, 3.244e-05, 3.247e-05, 3.201e-05, 3.22e-05, 161504.31054457], [1516600740000, 3.22e-05, 3.247e-05, 3.215e-05, 3.215e-05, 62496.96895783], [1516600800000, 3.246e-05, 3.265e-05, 3.246e-05, 3.265e-05, 91705.53653806], [1516600860000, 3.265e-05, 3.285e-05, 3.264e-05, 3.285e-05, 98794.97343109], [1516600920000, 3.285e-05, 3.301e-05, 3.285e-05, 3.3e-05, 399696.22942934], [1516600980000, 3.3e-05, 3.301e-05, 3.3e-05, 3.301e-05, 229850.05467919], [1516601040000, 3.301e-05, 3.377e-05, 3.301e-05, 3.377e-05, 789049.80340299], [1516601100000, 3.345e-05, 3.377e-05, 3.333e-05, 3.346e-05, 421474.28231362], [1516601160000, 3.346e-05, 3.383e-05, 3.346e-05, 3.383e-05, 214149.02656803], [1516601220000, 3.383e-05, 3.4e-05, 3.381e-05, 3.399e-05, 493607.29629128], [1516601280000, 3.399e-05, 3.412e-05, 3.397e-05, 3.411e-05, 266400.60697587], [1516601340000, 3.411e-05, 3.43e-05, 3.41e-05, 3.42e-05, 265444.51102334], [1516601400000, 3.426e-05, 3.444e-05, 3.42e-05, 3.444e-05, 314891.60315897], [1516601460000, 3.445e-05, 3.488e-05, 3.444e-05, 3.48e-05, 673166.31644854], [1516601520000, 3.488e-05, 3.518e-05, 3.48e-05, 3.518e-05, 975665.23261543], [1516601580000, 3.518e-05, 3.578e-05, 3.516e-05, 3.574e-05, 551210.13926983], [1516601640000, 3.575e-05, 3.584e-05, 3.409e-05, 3.478e-05, 1383942.56487749], [1516601700000, 3.478e-05, 3.499e-05, 3.444e-05, 3.445e-05, 438057.74706822], [1516601760000, 3.445e-05, 3.46e-05, 3.41e-05, 3.444e-05, 443988.7620101], [1516601820000, 3.431e-05, 3.5e-05, 3.428e-05, 3.5e-05, 673132.54237699], [1516601880000, 3.5e-05, 3.554e-05, 3.478e-05, 3.538e-05, 555582.17961041], [1516601940000, 3.519e-05, 3.6e-05, 3.519e-05, 3.595e-05, 577332.44617269], [1516602000000, 3.595e-05, 3.623e-05, 3.522e-05, 3.559e-05, 957504.30649664], [1516602060000, 3.539e-05, 3.539e-05, 3.468e-05, 3.525e-05, 414472.57518476], [1516602120000, 3.521e-05, 3.61e-05, 3.521e-05, 3.552e-05, 594017.70685716], [1516602180000, 3.552e-05, 3.596e-05, 3.542e-05, 3.573e-05, 221303.7682275], [1516602240000, 3.573e-05, 3.6e-05, 3.57e-05, 3.599e-05, 286419.94360927], [1516602300000, 3.599e-05, 3.622e-05, 3.587e-05, 3.62e-05, 407694.96718918], [1516602360000, 3.62e-05, 3.623e-05, 3.575e-05, 3.61e-05, 621484.89460036], [1516602420000, 3.61e-05, 3.634e-05, 3.61e-05, 3.625e-05, 342916.63958774], [1516602480000, 3.632e-05, 3.656e-05, 3.625e-05, 3.656e-05, 795320.07804748], [1516602540000, 3.656e-05, 3.668e-05, 3.653e-05, 3.668e-05, 507358.82461983], [1516602600000, 3.667e-05, 3.674e-05, 3.667e-05, 3.674e-05, 574607.88561082], [1516602660000, 3.673e-05, 3.678e-05, 3.642e-05, 3.642e-05, 631037.02803603], [1516602720000, 3.64e-05, 3.649e-05, 3.49e-05, 3.499e-05, 540133.91777333], [1516602780000, 3.499e-05, 3.503e-05, 3.45e-05, 3.498e-05, 732513.69673302], [1516602840000, 3.498e-05, 3.6e-05, 3.47e-05, 3.533e-05, 562069.4661393], [1516602900000, 3.54e-05, 3.549e-05, 3.533e-05, 3.533e-05, 174844.11365234], [1516602960000, 3.542e-05, 3.549e-05, 3.469e-05, 3.5e-05, 413796.87024802], [1516603020000, 3.5e-05, 3.5e-05, 3.465e-05, 3.469e-05, 289755.51212142], [1516603080000, 3.466e-05, 3.466e-05, 3.429e-05, 3.429e-05, 423268.71020957], [1516603140000, 3.426e-05, 3.479e-05, 3.418e-05, 3.471e-05, 255419.9109236], [1516603200000, 3.465e-05, 3.488e-05, 3.453e-05, 3.488e-05, 198998.30836981], [1516603260000, 3.488e-05, 3.488e-05, 3.465e-05, 3.475e-05, 97973.64493695], [1516603320000, 3.475e-05, 3.509e-05, 3.475e-05, 3.509e-05, 328071.94457838], [1516603380000, 3.51e-05, 3.589e-05, 3.51e-05, 3.589e-05, 246257.93284379], [1516603440000, 3.589e-05, 3.638e-05, 3.588e-05, 3.601e-05, 771191.29365602], [1516603500000, 3.601e-05, 3.601e-05, 3.51e-05, 3.555e-05, 341219.79281078], [1516603560000, 3.559e-05, 3.584e-05, 3.539e-05, 3.58e-05, 273421.19224559], [1516603620000, 3.572e-05, 3.575e-05, 3.518e-05, 3.518e-05, 194483.89538364], [1516603680000, 3.518e-05, 3.537e-05, 3.5e-05, 3.501e-05, 228243.19458892], [1516603740000, 3.511e-05, 3.56e-05, 3.511e-05, 3.539e-05, 252499.44873156], [1516603800000, 3.539e-05, 3.554e-05, 3.502e-05, 3.512e-05, 158687.63937392], [1516603860000, 3.512e-05, 3.512e-05, 3.451e-05, 3.456e-05, 264514.75969079], [1516603920000, 3.465e-05, 3.465e-05, 3.4e-05, 3.404e-05, 396242.94596092], [1516603980000, 3.404e-05, 3.409e-05, 3.324e-05, 3.331e-05, 434513.48110536], [1516604040000, 3.324e-05, 3.432e-05, 3.319e-05, 3.4e-05, 639226.39643504], [1516604100000, 3.405e-05, 3.471e-05, 3.4e-05, 3.462e-05, 285181.73322716], [1516604160000, 3.462e-05, 3.539e-05, 3.46e-05, 3.52e-05, 340978.56370775], [1516604220000, 3.52e-05, 3.536e-05, 3.503e-05, 3.511e-05, 312199.68316391], [1516604280000, 3.511e-05, 3.511e-05, 3.466e-05, 3.467e-05, 246095.85442671], [1516604340000, 3.467e-05, 3.467e-05, 3.4e-05, 3.442e-05, 224998.53605633], [1516604400000, 3.442e-05, 3.465e-05, 3.423e-05, 3.459e-05, 72877.05340645], [1516604460000, 3.453e-05, 3.479e-05, 3.36e-05, 3.363e-05, 231162.51386798], [1516604520000, 3.371e-05, 3.426e-05, 3.352e-05, 3.405e-05, 77825.43602962], [1516604580000, 3.42e-05, 3.46e-05, 3.405e-05, 3.459e-05, 151286.10790307], [1516604640000, 3.459e-05, 3.475e-05, 3.45e-05, 3.47e-05, 176862.82976179], [1516604700000, 3.47e-05, 3.47e-05, 3.409e-05, 3.42e-05, 71225.04353524], [1516604760000, 3.405e-05, 3.447e-05, 3.397e-05, 3.44e-05, 121149.1287943], [1516604820000, 3.425e-05, 3.451e-05, 3.4e-05, 3.44e-05, 182003.7889441], [1516604880000, 3.44e-05, 3.467e-05, 3.42e-05, 3.467e-05, 173965.8544134], [1516604940000, 3.467e-05, 3.497e-05, 3.452e-05, 3.48e-05, 98963.10655631], [1516605000000, 3.475e-05, 3.48e-05, 3.469e-05, 3.476e-05, 100253.30176684], [1516605060000, 3.476e-05, 3.534e-05, 3.468e-05, 3.53e-05, 535145.81220919], [1516605120000, 3.534e-05, 3.564e-05, 3.534e-05, 3.564e-05, 309456.88449637], [1516605180000, 3.56e-05, 3.597e-05, 3.56e-05, 3.583e-05, 179125.39356921], [1516605240000, 3.585e-05, 3.585e-05, 3.502e-05, 3.55e-05, 292816.03663121], [1516605300000, 3.552e-05, 3.552e-05, 3.503e-05, 3.512e-05, 100469.05667693], [1516605360000, 3.503e-05, 3.588e-05, 3.503e-05, 3.588e-05, 218463.77830091], [1516605420000, 3.553e-05, 3.588e-05, 3.55e-05, 3.585e-05, 192273.17547213], [1516605480000, 3.583e-05, 3.59e-05, 3.533e-05, 3.543e-05, 307269.21356953], [1516605540000, 3.542e-05, 3.569e-05, 3.542e-05, 3.565e-05, 98807.87893481], [1516605600000, 3.565e-05, 3.565e-05, 3.544e-05, 3.559e-05, 226110.97953746], [1516605660000, 3.542e-05, 3.546e-05, 3.525e-05, 3.533e-05, 143056.25537317], [1516605720000, 3.533e-05, 3.539e-05, 3.513e-05, 3.513e-05, 132024.047624], [1516605780000, 3.517e-05, 3.517e-05, 3.491e-05, 3.491e-05, 109657.37263461], [1516605840000, 3.491e-05, 3.5e-05, 3.45e-05, 3.475e-05, 122165.1930881], [1516605900000, 3.469e-05, 3.495e-05, 3.452e-05, 3.476e-05, 97715.35122037], [1516605960000, 3.499e-05, 3.5e-05, 3.478e-05, 3.495e-05, 70742.90840391], [1516606020000, 3.495e-05, 3.517e-05, 3.489e-05, 3.512e-05, 104731.58687933], [1516606080000, 3.512e-05, 3.512e-05, 3.478e-05, 3.499e-05, 39010.19163044], [1516606140000, 3.499e-05, 3.5e-05, 3.478e-05, 3.478e-05, 41185.73734186], [1516606200000, 3.478e-05, 3.478e-05, 3.455e-05, 3.455e-05, 45215.62299248], [1516606260000, 3.455e-05, 3.461e-05, 3.433e-05, 3.439e-05, 85251.15333785], [1516606320000, 3.433e-05, 3.433e-05, 3.385e-05, 3.4e-05, 185393.88503819], [1516606380000, 3.399e-05, 3.438e-05, 3.363e-05, 3.432e-05, 233325.85304443], [1516606440000, 3.432e-05, 3.465e-05, 3.431e-05, 3.465e-05, 134326.86168254], [1516606500000, 3.465e-05, 3.475e-05, 3.401e-05, 3.428e-05, 163417.13293471], [1516606560000, 3.424e-05, 3.43e-05, 3.4e-05, 3.4e-05, 55980.89790935], [1516606620000, 3.399e-05, 3.407e-05, 3.39e-05, 3.4e-05, 110790.47766439], [1516606680000, 3.4e-05, 3.417e-05, 3.393e-05, 3.393e-05, 198548.34088675], [1516606740000, 3.39e-05, 3.409e-05, 3.36e-05, 3.366e-05, 254253.0324141], [1516606800000, 3.363e-05, 3.366e-05, 3.322e-05, 3.322e-05, 182518.67797252], [1516606860000, 3.322e-05, 3.334e-05, 3.302e-05, 3.309e-05, 277523.48613171], [1516606920000, 3.309e-05, 3.334e-05, 3.308e-05, 3.313e-05, 204232.4464199], [1516606980000, 3.313e-05, 3.319e-05, 3.312e-05, 3.314e-05, 91928.92977492], [1516607040000, 3.311e-05, 3.316e-05, 3.309e-05, 3.313e-05, 141741.6963015], [1516607100000, 3.313e-05, 3.365e-05, 3.313e-05, 3.364e-05, 175388.27743466], [1516607160000, 3.364e-05, 3.4e-05, 3.335e-05, 3.4e-05, 279537.52624723], [1516607220000, 3.4e-05, 3.439e-05, 3.4e-05, 3.439e-05, 226459.2209326], [1516607280000, 3.436e-05, 3.444e-05, 3.41e-05, 3.443e-05, 314925.57369137], [1516607340000, 3.428e-05, 3.489e-05, 3.428e-05, 3.489e-05, 276983.89610617], [1516607400000, 3.489e-05, 3.5e-05, 3.445e-05, 3.479e-05, 317435.39034639], [1516607460000, 3.479e-05, 3.48e-05, 3.439e-05, 3.479e-05, 258769.5805913], [1516607520000, 3.445e-05, 3.48e-05, 3.445e-05, 3.458e-05, 96095.84072502], [1516607580000, 3.458e-05, 3.49e-05, 3.457e-05, 3.458e-05, 191421.44461468], [1516607640000, 3.463e-05, 3.493e-05, 3.459e-05, 3.491e-05, 92134.96588354], [1516607700000, 3.491e-05, 3.493e-05, 3.478e-05, 3.49e-05, 210212.49387013], [1516607760000, 3.478e-05, 3.478e-05, 3.461e-05, 3.469e-05, 70056.11013838], [1516607820000, 3.462e-05, 3.476e-05, 3.456e-05, 3.475e-05, 159915.08570792], [1516607880000, 3.457e-05, 3.462e-05, 3.44e-05, 3.445e-05, 97468.41018867], [1516607940000, 3.445e-05, 3.445e-05, 3.44e-05, 3.44e-05, 94126.72263339], [1516608000000, 3.439e-05, 3.439e-05, 3.421e-05, 3.421e-05, 63970.45191529], [1516608060000, 3.421e-05, 3.421e-05, 3.4e-05, 3.401e-05, 116637.49666356], [1516608120000, 3.401e-05, 3.401e-05, 3.389e-05, 3.389e-05, 123429.63745552], [1516608180000, 3.389e-05, 3.395e-05, 3.356e-05, 3.36e-05, 44208.01308987], [1516608240000, 3.356e-05, 3.356e-05, 3.315e-05, 3.325e-05, 321911.9791733], [1516608300000, 3.325e-05, 3.392e-05, 3.325e-05, 3.392e-05, 79316.49400246], [1516608360000, 3.371e-05, 3.396e-05, 3.371e-05, 3.371e-05, 88606.01540232], [1516608420000, 3.371e-05, 3.371e-05, 3.339e-05, 3.339e-05, 49212.67633082], [1516608480000, 3.339e-05, 3.359e-05, 3.33e-05, 3.331e-05, 69419.14163534], [1516608540000, 3.331e-05, 3.359e-05, 3.33e-05, 3.333e-05, 104979.17350584], [1516608600000, 3.333e-05, 3.359e-05, 3.333e-05, 3.34e-05, 52384.71735227], [1516608660000, 3.34e-05, 3.356e-05, 3.34e-05, 3.35e-05, 135360.75465655], [1516608720000, 3.35e-05, 3.357e-05, 3.333e-05, 3.333e-05, 122186.35904638], [1516608780000, 3.334e-05, 3.35e-05, 3.327e-05, 3.336e-05, 102681.47852545], [1516608840000, 3.336e-05, 3.354e-05, 3.327e-05, 3.329e-05, 109557.92748512], [1516608900000, 3.329e-05, 3.348e-05, 3.322e-05, 3.327e-05, 111863.01802113], [1516608960000, 3.327e-05, 3.327e-05, 3.307e-05, 3.309e-05, 114334.83887359], [1516609020000, 3.309e-05, 3.31e-05, 3.3e-05, 3.308e-05, 157938.14590603], [1516609080000, 3.31e-05, 3.317e-05, 3.308e-05, 3.31e-05, 36837.11678531], [1516609140000, 3.31e-05, 3.31e-05, 3.276e-05, 3.278e-05, 221267.52582254], [1516609200000, 3.276e-05, 3.3e-05, 3.272e-05, 3.3e-05, 126231.19061228], [1516609260000, 3.3e-05, 3.31e-05, 3.3e-05, 3.31e-05, 63764.61304807], [1516609320000, 3.31e-05, 3.315e-05, 3.3e-05, 3.3e-05, 46878.16068382], [1516609380000, 3.3e-05, 3.302e-05, 3.27e-05, 3.3e-05, 170543.00596495], [1516609440000, 3.293e-05, 3.3e-05, 3.269e-05, 3.296e-05, 92603.69434836], [1516609500000, 3.296e-05, 3.3e-05, 3.278e-05, 3.299e-05, 35212.05989659], [1516609560000, 3.299e-05, 3.335e-05, 3.277e-05, 3.317e-05, 178503.28692434], [1516609620000, 3.322e-05, 3.34e-05, 3.321e-05, 3.326e-05, 90685.70260115], [1516609680000, 3.338e-05, 3.35e-05, 3.323e-05, 3.348e-05, 133225.4077517], [1516609740000, 3.35e-05, 3.356e-05, 3.341e-05, 3.35e-05, 41301.82699819], [1516609800000, 3.35e-05, 3.36e-05, 3.35e-05, 3.36e-05, 58120.36488602], [1516609860000, 3.351e-05, 3.36e-05, 3.322e-05, 3.326e-05, 80893.13787088], [1516609920000, 3.325e-05, 3.326e-05, 3.309e-05, 3.323e-05, 97809.16772648], [1516609980000, 3.31e-05, 3.323e-05, 3.278e-05, 3.31e-05, 50627.23114567], [1516610040000, 3.306e-05, 3.306e-05, 3.284e-05, 3.284e-05, 47501.44666126], [1516610100000, 3.288e-05, 3.288e-05, 3.28e-05, 3.285e-05, 88700.49617437], [1516610160000, 3.285e-05, 3.288e-05, 3.27e-05, 3.27e-05, 65312.6197255], [1516610220000, 3.27e-05, 3.289e-05, 3.27e-05, 3.287e-05, 37290.30038357], [1516610280000, 3.287e-05, 3.304e-05, 3.271e-05, 3.304e-05, 120568.40484513], [1516610340000, 3.304e-05, 3.35e-05, 3.3e-05, 3.345e-05, 85540.84982258], [1516610400000, 3.325e-05, 3.345e-05, 3.288e-05, 3.305e-05, 49946.61899581], [1516610460000, 3.305e-05, 3.319e-05, 3.291e-05, 3.305e-05, 20389.59795738], [1516610520000, 3.309e-05, 3.309e-05, 3.275e-05, 3.275e-05, 59228.14416406], [1516610580000, 3.278e-05, 3.278e-05, 3.258e-05, 3.26e-05, 70507.51924881], [1516610640000, 3.258e-05, 3.26e-05, 3.239e-05, 3.24e-05, 181702.6459844], [1516610700000, 3.246e-05, 3.246e-05, 3.224e-05, 3.228e-05, 128822.25977241], [1516610760000, 3.228e-05, 3.228e-05, 3.209e-05, 3.209e-05, 140500.0686596], [1516610820000, 3.209e-05, 3.209e-05, 3.192e-05, 3.194e-05, 231710.67357996], [1516610880000, 3.194e-05, 3.221e-05, 3.194e-05, 3.221e-05, 118846.28335974], [1516610940000, 3.221e-05, 3.233e-05, 3.213e-05, 3.233e-05, 120850.78965931], [1516611000000, 3.239e-05, 3.264e-05, 3.233e-05, 3.264e-05, 170848.86312493], [1516611060000, 3.246e-05, 3.271e-05, 3.245e-05, 3.271e-05, 85388.12313627], [1516611120000, 3.27e-05, 3.27e-05, 3.239e-05, 3.239e-05, 87783.96634129], [1516611180000, 3.239e-05, 3.249e-05, 3.235e-05, 3.248e-05, 84240.88577083], [1516611240000, 3.248e-05, 3.248e-05, 3.241e-05, 3.244e-05, 15379.02798227], [1516611300000, 3.244e-05, 3.244e-05, 3.216e-05, 3.233e-05, 32327.152382], [1516611360000, 3.222e-05, 3.222e-05, 3.2e-05, 3.204e-05, 52669.3329949], [1516611420000, 3.221e-05, 3.221e-05, 3.195e-05, 3.203e-05, 46218.3458434], [1516611480000, 3.203e-05, 3.239e-05, 3.203e-05, 3.208e-05, 40682.8700282], [1516611540000, 3.237e-05, 3.238e-05, 3.209e-05, 3.21e-05, 6493.75791913], [1516611600000, 3.211e-05, 3.236e-05, 3.21e-05, 3.233e-05, 32123.90171519], [1516611660000, 3.233e-05, 3.235e-05, 3.227e-05, 3.23e-05, 44303.17514734], [1516611720000, 3.23e-05, 3.24e-05, 3.228e-05, 3.239e-05, 45216.75473745], [1516611780000, 3.239e-05, 3.247e-05, 3.235e-05, 3.244e-05, 81912.64964253], [1516611840000, 3.244e-05, 3.25e-05, 3.237e-05, 3.244e-05, 43155.516292], [1516611900000, 3.247e-05, 3.263e-05, 3.244e-05, 3.263e-05, 29401.39162475], [1516611960000, 3.263e-05, 3.265e-05, 3.244e-05, 3.244e-05, 38979.29932431], [1516612020000, 3.244e-05, 3.246e-05, 3.228e-05, 3.228e-05, 72454.53468798], [1516612080000, 3.228e-05, 3.244e-05, 3.228e-05, 3.229e-05, 27581.96589107], [1516612140000, 3.229e-05, 3.23e-05, 3.228e-05, 3.229e-05, 77438.62500328], [1516612200000, 3.228e-05, 3.238e-05, 3.228e-05, 3.238e-05, 33568.60766421], [1516612260000, 3.23e-05, 3.23e-05, 3.228e-05, 3.229e-05, 26213.94504716], [1516612320000, 3.23e-05, 3.239e-05, 3.229e-05, 3.239e-05, 23572.19493195], [1516612380000, 3.24e-05, 3.24e-05, 3.233e-05, 3.238e-05, 13056.7587776], [1516612440000, 3.239e-05, 3.24e-05, 3.234e-05, 3.239e-05, 32659.59753841], [1516612500000, 3.234e-05, 3.24e-05, 3.227e-05, 3.227e-05, 40897.81628327], [1516612560000, 3.228e-05, 3.23e-05, 3.227e-05, 3.227e-05, 33532.69400122], [1516612620000, 3.238e-05, 3.25e-05, 3.228e-05, 3.242e-05, 51074.15819921], [1516612680000, 3.249e-05, 3.265e-05, 3.233e-05, 3.265e-05, 90626.16444984], [1516612740000, 3.265e-05, 3.274e-05, 3.264e-05, 3.273e-05, 29344.4411887], [1516612800000, 3.273e-05, 3.307e-05, 3.273e-05, 3.307e-05, 94452.43723519], [1516612860000, 3.307e-05, 3.346e-05, 3.307e-05, 3.346e-05, 182811.66969373], [1516612920000, 3.346e-05, 3.377e-05, 3.346e-05, 3.373e-05, 225261.27791379], [1516612980000, 3.37e-05, 3.377e-05, 3.318e-05, 3.361e-05, 152405.78601507], [1516613040000, 3.361e-05, 3.369e-05, 3.335e-05, 3.369e-05, 136028.92940007], [1516613100000, 3.368e-05, 3.37e-05, 3.361e-05, 3.37e-05, 96206.09511909], [1516613160000, 3.37e-05, 3.39e-05, 3.368e-05, 3.379e-05, 111537.32923289], [1516613220000, 3.39e-05, 3.402e-05, 3.388e-05, 3.402e-05, 260107.32751012], [1516613280000, 3.4e-05, 3.417e-05, 3.4e-05, 3.41e-05, 123131.23627803], [1516613340000, 3.41e-05, 3.418e-05, 3.403e-05, 3.403e-05, 140034.9948029], [1516613400000, 3.403e-05, 3.41e-05, 3.344e-05, 3.355e-05, 56295.28575763], [1516613460000, 3.355e-05, 3.374e-05, 3.355e-05, 3.374e-05, 45080.2680311], [1516613520000, 3.374e-05, 3.38e-05, 3.334e-05, 3.334e-05, 185525.82044142], [1516613580000, 3.343e-05, 3.343e-05, 3.325e-05, 3.34e-05, 74519.15980247], [1516613640000, 3.335e-05, 3.335e-05, 3.315e-05, 3.317e-05, 138045.62326995], [1516613700000, 3.313e-05, 3.313e-05, 3.271e-05, 3.287e-05, 136093.93095663], [1516613760000, 3.3e-05, 3.322e-05, 3.287e-05, 3.303e-05, 51089.75630366], [1516613820000, 3.304e-05, 3.31e-05, 3.3e-05, 3.3e-05, 40521.81348187], [1516613880000, 3.3e-05, 3.301e-05, 3.292e-05, 3.301e-05, 99222.42046441], [1516613940000, 3.301e-05, 3.331e-05, 3.293e-05, 3.331e-05, 83312.76176818], [1516614000000, 3.338e-05, 3.338e-05, 3.318e-05, 3.328e-05, 16551.06346544], [1516614060000, 3.318e-05, 3.328e-05, 3.303e-05, 3.316e-05, 59156.0066601], [1516614120000, 3.316e-05, 3.329e-05, 3.316e-05, 3.324e-05, 5523.6629383], [1516614180000, 3.324e-05, 3.324e-05, 3.316e-05, 3.317e-05, 13658.87443029], [1516614240000, 3.306e-05, 3.317e-05, 3.306e-05, 3.317e-05, 18523.07668099], [1516614300000, 3.317e-05, 3.317e-05, 3.307e-05, 3.308e-05, 10033.28496505], [1516614360000, 3.308e-05, 3.308e-05, 3.306e-05, 3.306e-05, 33129.92321182], [1516614420000, 3.306e-05, 3.307e-05, 3.304e-05, 3.305e-05, 24395.83543271], [1516614480000, 3.305e-05, 3.305e-05, 3.3e-05, 3.305e-05, 61508.26074471], [1516614540000, 3.304e-05, 3.304e-05, 3.296e-05, 3.3e-05, 49870.74545262], [1516614600000, 3.3e-05, 3.3e-05, 3.297e-05, 3.3e-05, 29508.5295147], [1516614660000, 3.298e-05, 3.318e-05, 3.292e-05, 3.316e-05, 56585.89185803], [1516614720000, 3.316e-05, 3.316e-05, 3.3e-05, 3.3e-05, 4924.32349475], [1516614780000, 3.314e-05, 3.314e-05, 3.298e-05, 3.313e-05, 6571.01139272], [1516614840000, 3.313e-05, 3.313e-05, 3.298e-05, 3.3e-05, 14330.53168468], [1516614900000, 3.3e-05, 3.3e-05, 3.28e-05, 3.287e-05, 19756.40193935], [1516614960000, 3.28e-05, 3.286e-05, 3.24e-05, 3.246e-05, 58068.69460607], [1516615020000, 3.241e-05, 3.241e-05, 3.225e-05, 3.24e-05, 53717.70034762], [1516615080000, 3.239e-05, 3.24e-05, 3.222e-05, 3.238e-05, 18990.39505279], [1516615140000, 3.238e-05, 3.24e-05, 3.235e-05, 3.24e-05, 92907.01482433], [1516615200000, 3.24e-05, 3.273e-05, 3.235e-05, 3.271e-05, 115343.77931308], [1516615260000, 3.272e-05, 3.272e-05, 3.234e-05, 3.268e-05, 37431.48639432], [1516615320000, 3.268e-05, 3.268e-05, 3.25e-05, 3.251e-05, 34308.77848224], [1516615380000, 3.262e-05, 3.262e-05, 3.251e-05, 3.251e-05, 41262.20329851], [1516615440000, 3.257e-05, 3.263e-05, 3.251e-05, 3.257e-05, 11751.10387829], [1516615500000, 3.257e-05, 3.265e-05, 3.256e-05, 3.264e-05, 15388.07548503], [1516615560000, 3.264e-05, 3.289e-05, 3.264e-05, 3.28e-05, 38945.84802216], [1516615620000, 3.28e-05, 3.289e-05, 3.265e-05, 3.28e-05, 23393.88555174], [1516615680000, 3.28e-05, 3.289e-05, 3.265e-05, 3.266e-05, 72605.91689847], [1516615740000, 3.287e-05, 3.287e-05, 3.267e-05, 3.284e-05, 5925.03296619], [1516615800000, 3.284e-05, 3.284e-05, 3.268e-05, 3.268e-05, 28204.50855768], [1516615860000, 3.268e-05, 3.282e-05, 3.267e-05, 3.282e-05, 10224.10196342], [1516615920000, 3.275e-05, 3.282e-05, 3.268e-05, 3.268e-05, 2950.46012149], [1516615980000, 3.282e-05, 3.282e-05, 3.268e-05, 3.281e-05, 11371.66739331], [1516616040000, 3.282e-05, 3.282e-05, 3.265e-05, 3.282e-05, 25729.97251039], [1516616100000, 3.282e-05, 3.282e-05, 3.262e-05, 3.262e-05, 14137.11749293], [1516616160000, 3.26e-05, 3.262e-05, 3.25e-05, 3.26e-05, 60673.50768594], [1516616220000, 3.256e-05, 3.258e-05, 3.25e-05, 3.25e-05, 21640.87257357], [1516616280000, 3.25e-05, 3.25e-05, 3.229e-05, 3.229e-05, 55307.91415557], [1516616340000, 3.232e-05, 3.232e-05, 3.227e-05, 3.229e-05, 44447.39767688], [1516616400000, 3.228e-05, 3.249e-05, 3.227e-05, 3.237e-05, 36707.26450681], [1516616460000, 3.231e-05, 3.231e-05, 3.22e-05, 3.222e-05, 29692.09359437], [1516616520000, 3.222e-05, 3.222e-05, 3.213e-05, 3.213e-05, 23805.51786505], [1516616580000, 3.213e-05, 3.213e-05, 3.201e-05, 3.203e-05, 107473.96933763], [1516616640000, 3.201e-05, 3.211e-05, 3.182e-05, 3.201e-05, 140358.38451675], [1516616700000, 3.19e-05, 3.212e-05, 3.184e-05, 3.212e-05, 67568.23154251], [1516616760000, 3.213e-05, 3.22e-05, 3.213e-05, 3.22e-05, 44889.02110858], [1516616820000, 3.213e-05, 3.232e-05, 3.206e-05, 3.21e-05, 26280.03506434], [1516616880000, 3.21e-05, 3.226e-05, 3.208e-05, 3.21e-05, 55307.55992222], [1516616940000, 3.212e-05, 3.212e-05, 3.194e-05, 3.196e-05, 48021.5025754], [1516617000000, 3.196e-05, 3.21e-05, 3.196e-05, 3.197e-05, 16347.54165052], [1516617060000, 3.21e-05, 3.211e-05, 3.191e-05, 3.191e-05, 34156.07090902], [1516617120000, 3.207e-05, 3.207e-05, 3.186e-05, 3.187e-05, 123376.2046071], [1516617180000, 3.187e-05, 3.19e-05, 3.174e-05, 3.174e-05, 127900.71629913], [1516617240000, 3.178e-05, 3.178e-05, 3.171e-05, 3.174e-05, 68312.1554762], [1516617300000, 3.174e-05, 3.179e-05, 3.16e-05, 3.179e-05, 77848.86619294], [1516617360000, 3.178e-05, 3.179e-05, 3.155e-05, 3.155e-05, 70383.42584265], [1516617420000, 3.155e-05, 3.169e-05, 3.155e-05, 3.157e-05, 224872.39583441], [1516617480000, 3.156e-05, 3.169e-05, 3.141e-05, 3.145e-05, 367515.03426444], [1516617540000, 3.141e-05, 3.145e-05, 3.124e-05, 3.136e-05, 131351.58512857], [1516617600000, 3.136e-05, 3.168e-05, 3.136e-05, 3.149e-05, 40422.04844027], [1516617660000, 3.15e-05, 3.151e-05, 3.141e-05, 3.15e-05, 61089.31362346], [1516617720000, 3.15e-05, 3.161e-05, 3.14e-05, 3.15e-05, 101980.75393358], [1516617780000, 3.151e-05, 3.161e-05, 3.151e-05, 3.16e-05, 19432.55294391], [1516617840000, 3.16e-05, 3.16e-05, 3.145e-05, 3.146e-05, 31801.47245165], [1516617900000, 3.147e-05, 3.151e-05, 3.14e-05, 3.151e-05, 47107.19679498], [1516617960000, 3.151e-05, 3.151e-05, 3.12e-05, 3.12e-05, 52813.19102585], [1516618020000, 3.147e-05, 3.152e-05, 3.142e-05, 3.142e-05, 15252.33689766], [1516618080000, 3.15e-05, 3.15e-05, 3.138e-05, 3.139e-05, 63154.87530376], [1516618140000, 3.139e-05, 3.139e-05, 3.125e-05, 3.139e-05, 33719.0102593], [1516618200000, 3.139e-05, 3.139e-05, 3.126e-05, 3.128e-05, 42866.31139022], [1516618260000, 3.128e-05, 3.134e-05, 3.127e-05, 3.134e-05, 29267.43416181], [1516618320000, 3.134e-05, 3.138e-05, 3.129e-05, 3.138e-05, 26358.07831558], [1516618380000, 3.138e-05, 3.161e-05, 3.138e-05, 3.161e-05, 103179.48453472], [1516618440000, 3.16e-05, 3.178e-05, 3.15e-05, 3.178e-05, 67795.55574146], [1516618500000, 3.178e-05, 3.188e-05, 3.178e-05, 3.178e-05, 14148.46184901], [1516618560000, 3.179e-05, 3.188e-05, 3.16e-05, 3.16e-05, 15872.98371003], [1516618620000, 3.162e-05, 3.188e-05, 3.16e-05, 3.178e-05, 39970.05542254], [1516618680000, 3.178e-05, 3.218e-05, 3.178e-05, 3.199e-05, 66521.49433224], [1516618740000, 3.199e-05, 3.218e-05, 3.199e-05, 3.199e-05, 122302.17046158], [1516618800000, 3.2e-05, 3.224e-05, 3.2e-05, 3.217e-05, 74646.20751028], [1516618860000, 3.217e-05, 3.227e-05, 3.217e-05, 3.219e-05, 16306.0511457], [1516618920000, 3.219e-05, 3.245e-05, 3.219e-05, 3.245e-05, 52494.68136314], [1516618980000, 3.245e-05, 3.261e-05, 3.245e-05, 3.26e-05, 82819.22440929], [1516619040000, 3.26e-05, 3.26e-05, 3.24e-05, 3.257e-05, 91689.99284846], [1516619100000, 3.248e-05, 3.261e-05, 3.248e-05, 3.25e-05, 39528.0849812], [1516619160000, 3.261e-05, 3.261e-05, 3.25e-05, 3.25e-05, 53016.89378592], [1516619220000, 3.25e-05, 3.25e-05, 3.184e-05, 3.185e-05, 87089.30444266], [1516619280000, 3.213e-05, 3.213e-05, 3.185e-05, 3.21e-05, 67929.97328619], [1516619340000, 3.188e-05, 3.21e-05, 3.187e-05, 3.187e-05, 44404.13783014], [1516619400000, 3.19e-05, 3.209e-05, 3.187e-05, 3.189e-05, 23575.28600911], [1516619460000, 3.202e-05, 3.203e-05, 3.187e-05, 3.189e-05, 135263.40553388], [1516619520000, 3.188e-05, 3.189e-05, 3.184e-05, 3.184e-05, 31691.6495026], [1516619580000, 3.184e-05, 3.184e-05, 3.156e-05, 3.18e-05, 25089.16471082], [1516619640000, 3.18e-05, 3.18e-05, 3.152e-05, 3.161e-05, 52376.94042977], [1516619700000, 3.161e-05, 3.178e-05, 3.152e-05, 3.178e-05, 21508.83994905], [1516619760000, 3.178e-05, 3.178e-05, 3.161e-05, 3.162e-05, 34743.3709285], [1516619820000, 3.162e-05, 3.175e-05, 3.12e-05, 3.174e-05, 38466.02978016], [1516619880000, 3.173e-05, 3.175e-05, 3.146e-05, 3.158e-05, 5756.27940627], [1516619940000, 3.158e-05, 3.175e-05, 3.148e-05, 3.148e-05, 10477.40864538], [1516620000000, 3.158e-05, 3.175e-05, 3.144e-05, 3.144e-05, 37214.12151573], [1516620060000, 3.175e-05, 3.175e-05, 3.154e-05, 3.173e-05, 16356.25797815], [1516620120000, 3.173e-05, 3.18e-05, 3.155e-05, 3.174e-05, 37072.93474906], [1516620180000, 3.174e-05, 3.174e-05, 3.154e-05, 3.155e-05, 7279.2556268], [1516620240000, 3.17e-05, 3.17e-05, 3.154e-05, 3.154e-05, 23256.61496266], [1516620300000, 3.154e-05, 3.168e-05, 3.154e-05, 3.156e-05, 14495.05080132], [1516620360000, 3.169e-05, 3.169e-05, 3.155e-05, 3.168e-05, 24974.62698899], [1516620420000, 3.168e-05, 3.173e-05, 3.157e-05, 3.17e-05, 22490.0940436], [1516620480000, 3.17e-05, 3.183e-05, 3.17e-05, 3.183e-05, 33985.82120666], [1516620540000, 3.182e-05, 3.199e-05, 3.169e-05, 3.169e-05, 48851.12027512], [1516620600000, 3.17e-05, 3.17e-05, 3.146e-05, 3.161e-05, 23131.48677065], [1516620660000, 3.161e-05, 3.161e-05, 3.119e-05, 3.127e-05, 139203.22517354], [1516620720000, 3.153e-05, 3.157e-05, 3.123e-05, 3.144e-05, 70775.9953068], [1516620780000, 3.144e-05, 3.16e-05, 3.14e-05, 3.16e-05, 50541.41089346], [1516620840000, 3.16e-05, 3.225e-05, 3.16e-05, 3.208e-05, 36571.27599883], [1516620900000, 3.21e-05, 3.228e-05, 3.183e-05, 3.2e-05, 93365.24730796], [1516620960000, 3.201e-05, 3.224e-05, 3.193e-05, 3.203e-05, 32909.00917979], [1516621020000, 3.224e-05, 3.23e-05, 3.22e-05, 3.225e-05, 68151.86212777], [1516621080000, 3.228e-05, 3.233e-05, 3.208e-05, 3.23e-05, 33637.57712892], [1516621140000, 3.23e-05, 3.23e-05, 3.2e-05, 3.201e-05, 45049.5626562], [1516621200000, 3.201e-05, 3.225e-05, 3.2e-05, 3.225e-05, 32210.54814703], [1516621260000, 3.225e-05, 3.229e-05, 3.209e-05, 3.209e-05, 18135.26920495], [1516621320000, 3.229e-05, 3.229e-05, 3.208e-05, 3.209e-05, 3997.2839735], [1516621380000, 3.209e-05, 3.225e-05, 3.209e-05, 3.225e-05, 7760.40006205], [1516621440000, 3.209e-05, 3.233e-05, 3.209e-05, 3.222e-05, 57222.52761443], [1516621500000, 3.222e-05, 3.234e-05, 3.193e-05, 3.233e-05, 81170.58148897], [1516621560000, 3.233e-05, 3.234e-05, 3.233e-05, 3.234e-05, 35485.06857588], [1516621620000, 3.234e-05, 3.234e-05, 3.204e-05, 3.234e-05, 7649.75047123], [1516621680000, 3.232e-05, 3.233e-05, 3.204e-05, 3.221e-05, 4778.15811196], [1516621740000, 3.22e-05, 3.22e-05, 3.204e-05, 3.208e-05, 29471.92344734], [1516621800000, 3.208e-05, 3.217e-05, 3.208e-05, 3.216e-05, 20405.5803833], [1516621860000, 3.216e-05, 3.224e-05, 3.208e-05, 3.208e-05, 42249.45702829], [1516621920000, 3.208e-05, 3.208e-05, 3.192e-05, 3.192e-05, 10763.19384797], [1516621980000, 3.19e-05, 3.191e-05, 3.176e-05, 3.191e-05, 25805.2905441], [1516622040000, 3.191e-05, 3.199e-05, 3.191e-05, 3.199e-05, 35522.76346629], [1516622100000, 3.2e-05, 3.208e-05, 3.199e-05, 3.208e-05, 24729.61225698], [1516622160000, 3.208e-05, 3.227e-05, 3.208e-05, 3.216e-05, 39036.09181002], [1516622220000, 3.216e-05, 3.217e-05, 3.216e-05, 3.216e-05, 30757.93314372], [1516622280000, 3.217e-05, 3.217e-05, 3.198e-05, 3.2e-05, 85529.38327102], [1516622340000, 3.198e-05, 3.198e-05, 3.16e-05, 3.164e-05, 77609.61006646], [1516622400000, 3.164e-05, 3.168e-05, 3.164e-05, 3.168e-05, 47274.11714496], [1516622460000, 3.168e-05, 3.168e-05, 3.164e-05, 3.168e-05, 13061.83448736], [1516622520000, 3.168e-05, 3.2e-05, 3.168e-05, 3.175e-05, 23228.88318008], [1516622580000, 3.177e-05, 3.179e-05, 3.176e-05, 3.177e-05, 29983.03716951], [1516622640000, 3.177e-05, 3.177e-05, 3.17e-05, 3.176e-05, 15580.37812395], [1516622700000, 3.176e-05, 3.176e-05, 3.171e-05, 3.171e-05, 3457.68026169], [1516622760000, 3.171e-05, 3.176e-05, 3.17e-05, 3.17e-05, 21966.80230714], [1516622820000, 3.17e-05, 3.17e-05, 3.155e-05, 3.155e-05, 20342.43548158], [1516622880000, 3.155e-05, 3.17e-05, 3.149e-05, 3.158e-05, 64067.95686538], [1516622940000, 3.17e-05, 3.17e-05, 3.149e-05, 3.15e-05, 7199.89581562], [1516623000000, 3.151e-05, 3.176e-05, 3.151e-05, 3.176e-05, 1147.9540293], [1516623060000, 3.175e-05, 3.175e-05, 3.163e-05, 3.175e-05, 6516.28927246], [1516623120000, 3.175e-05, 3.175e-05, 3.154e-05, 3.174e-05, 6270.29931073], [1516623180000, 3.174e-05, 3.174e-05, 3.155e-05, 3.174e-05, 4133.36069449], [1516623240000, 3.157e-05, 3.157e-05, 3.157e-05, 3.157e-05, 1178.49059334], [1516623300000, 3.157e-05, 3.17e-05, 3.155e-05, 3.17e-05, 3796.39987803], [1516623360000, 3.158e-05, 3.172e-05, 3.158e-05, 3.172e-05, 18857.93202569], [1516623420000, 3.17e-05, 3.2e-05, 3.169e-05, 3.2e-05, 38985.88608492], [1516623480000, 3.2e-05, 3.2e-05, 3.172e-05, 3.172e-05, 17208.77912569], [1516623540000, 3.196e-05, 3.216e-05, 3.16e-05, 3.215e-05, 47344.00019197], [1516623600000, 3.215e-05, 3.216e-05, 3.214e-05, 3.215e-05, 17024.58695551], [1516623660000, 3.215e-05, 3.215e-05, 3.196e-05, 3.212e-05, 56125.33381328], [1516623720000, 3.214e-05, 3.231e-05, 3.214e-05, 3.23e-05, 49928.78493489], [1516623780000, 3.23e-05, 3.23e-05, 3.203e-05, 3.203e-05, 8105.34326907], [1516623840000, 3.205e-05, 3.229e-05, 3.204e-05, 3.229e-05, 15963.80965159], [1516623900000, 3.229e-05, 3.229e-05, 3.22e-05, 3.22e-05, 16590.9661996], [1516623960000, 3.221e-05, 3.233e-05, 3.219e-05, 3.233e-05, 63817.84826481], [1516624020000, 3.232e-05, 3.234e-05, 3.23e-05, 3.233e-05, 127882.467425], [1516624080000, 3.233e-05, 3.233e-05, 3.223e-05, 3.23e-05, 17508.81584323], [1516624140000, 3.223e-05, 3.246e-05, 3.223e-05, 3.246e-05, 48526.61581439], [1516624200000, 3.246e-05, 3.254e-05, 3.246e-05, 3.253e-05, 44338.03590307], [1516624260000, 3.251e-05, 3.251e-05, 3.224e-05, 3.227e-05, 75227.3457945], [1516624320000, 3.227e-05, 3.238e-05, 3.227e-05, 3.233e-05, 8870.51936719], [1516624380000, 3.235e-05, 3.25e-05, 3.233e-05, 3.25e-05, 45670.33552453], [1516624440000, 3.249e-05, 3.269e-05, 3.245e-05, 3.254e-05, 112790.47812765], [1516624500000, 3.249e-05, 3.271e-05, 3.249e-05, 3.271e-05, 84255.52815831], [1516624560000, 3.254e-05, 3.28e-05, 3.249e-05, 3.279e-05, 50106.20512838], [1516624620000, 3.28e-05, 3.316e-05, 3.279e-05, 3.314e-05, 138480.08577552], [1516624680000, 3.314e-05, 3.321e-05, 3.3e-05, 3.321e-05, 215109.28927082], [1516624740000, 3.321e-05, 3.347e-05, 3.32e-05, 3.347e-05, 113787.13979475], [1516624800000, 3.347e-05, 3.349e-05, 3.335e-05, 3.335e-05, 142861.78501358], [1516624860000, 3.334e-05, 3.349e-05, 3.301e-05, 3.333e-05, 103460.57860473], [1516624920000, 3.337e-05, 3.337e-05, 3.284e-05, 3.3e-05, 179927.61371517], [1516624980000, 3.3e-05, 3.336e-05, 3.3e-05, 3.32e-05, 33996.34048403], [1516625040000, 3.335e-05, 3.335e-05, 3.318e-05, 3.335e-05, 60695.24583177], [1516625100000, 3.334e-05, 3.344e-05, 3.334e-05, 3.334e-05, 112599.17205871], [1516625160000, 3.334e-05, 3.335e-05, 3.311e-05, 3.334e-05, 55336.23483014], [1516625220000, 3.335e-05, 3.35e-05, 3.334e-05, 3.339e-05, 50652.85750506], [1516625280000, 3.339e-05, 3.369e-05, 3.339e-05, 3.369e-05, 54749.66819617], [1516625340000, 3.369e-05, 3.385e-05, 3.369e-05, 3.375e-05, 184356.02219266], [1516625400000, 3.375e-05, 3.39e-05, 3.375e-05, 3.39e-05, 65029.85922752], [1516625460000, 3.39e-05, 3.39e-05, 3.376e-05, 3.387e-05, 79047.43944038], [1516625520000, 3.376e-05, 3.39e-05, 3.359e-05, 3.366e-05, 87787.7854203], [1516625580000, 3.363e-05, 3.387e-05, 3.359e-05, 3.387e-05, 83610.30720739], [1516625640000, 3.387e-05, 3.388e-05, 3.366e-05, 3.366e-05, 123434.2748977], [1516625700000, 3.366e-05, 3.384e-05, 3.365e-05, 3.366e-05, 96353.60557463], [1516625760000, 3.378e-05, 3.378e-05, 3.366e-05, 3.366e-05, 28957.5983204], [1516625820000, 3.37e-05, 3.37e-05, 3.345e-05, 3.36e-05, 50724.57004561], [1516625880000, 3.35e-05, 3.369e-05, 3.338e-05, 3.338e-05, 22821.59724281], [1516625940000, 3.335e-05, 3.338e-05, 3.316e-05, 3.316e-05, 53129.0392394], [1516626000000, 3.314e-05, 3.314e-05, 3.307e-05, 3.311e-05, 72875.57057473], [1516626060000, 3.308e-05, 3.33e-05, 3.307e-05, 3.324e-05, 55929.60536181], [1516626120000, 3.311e-05, 3.328e-05, 3.307e-05, 3.311e-05, 76718.48830009], [1516626180000, 3.311e-05, 3.312e-05, 3.307e-05, 3.307e-05, 41239.81272589], [1516626240000, 3.306e-05, 3.306e-05, 3.272e-05, 3.275e-05, 125216.17325976], [1516626300000, 3.275e-05, 3.299e-05, 3.275e-05, 3.275e-05, 34497.00080374], [1516626360000, 3.275e-05, 3.275e-05, 3.253e-05, 3.26e-05, 85330.64138871], [1516626420000, 3.261e-05, 3.29e-05, 3.256e-05, 3.29e-05, 46892.42836979], [1516626480000, 3.306e-05, 3.306e-05, 3.275e-05, 3.285e-05, 33581.12477776], [1516626540000, 3.285e-05, 3.314e-05, 3.28e-05, 3.28e-05, 68722.30767934], [1516626600000, 3.3e-05, 3.3e-05, 3.25e-05, 3.25e-05, 95647.11868106], [1516626660000, 3.25e-05, 3.25e-05, 3.227e-05, 3.228e-05, 53628.04030589], [1516626720000, 3.222e-05, 3.228e-05, 3.187e-05, 3.2e-05, 135781.13119349], [1516626780000, 3.2e-05, 3.2e-05, 3.162e-05, 3.187e-05, 109694.13614178], [1516626840000, 3.185e-05, 3.2e-05, 3.185e-05, 3.2e-05, 88849.6480424], [1516626900000, 3.2e-05, 3.206e-05, 3.18e-05, 3.185e-05, 90931.39059268], [1516626960000, 3.189e-05, 3.198e-05, 3.184e-05, 3.186e-05, 60002.49523354], [1516627020000, 3.186e-05, 3.186e-05, 3.163e-05, 3.166e-05, 167610.9383591], [1516627080000, 3.166e-05, 3.166e-05, 3.159e-05, 3.159e-05, 48427.40958887], [1516627140000, 3.159e-05, 3.176e-05, 3.152e-05, 3.176e-05, 247609.77659473], [1516627200000, 3.167e-05, 3.178e-05, 3.16e-05, 3.162e-05, 63491.46915842], [1516627260000, 3.161e-05, 3.162e-05, 3.149e-05, 3.149e-05, 113104.72646545], [1516627320000, 3.149e-05, 3.15e-05, 3.119e-05, 3.137e-05, 189833.79157723], [1516627380000, 3.146e-05, 3.149e-05, 3.137e-05, 3.138e-05, 82657.54373367], [1516627440000, 3.138e-05, 3.148e-05, 3.119e-05, 3.14e-05, 97155.74657024], [1516627500000, 3.14e-05, 3.146e-05, 3.128e-05, 3.14e-05, 68219.72551684], [1516627560000, 3.14e-05, 3.14e-05, 3.131e-05, 3.14e-05, 34994.8322634], [1516627620000, 3.14e-05, 3.14e-05, 3.116e-05, 3.119e-05, 91915.43508802], [1516627680000, 3.119e-05, 3.129e-05, 3.101e-05, 3.107e-05, 48688.49752609], [1516627740000, 3.102e-05, 3.102e-05, 3.087e-05, 3.087e-05, 201718.72340156], [1516627800000, 3.09e-05, 3.119e-05, 3.088e-05, 3.119e-05, 133597.07813671], [1516627860000, 3.119e-05, 3.128e-05, 3.109e-05, 3.109e-05, 57036.76669624], [1516627920000, 3.11e-05, 3.151e-05, 3.109e-05, 3.14e-05, 68988.69569334], [1516627980000, 3.149e-05, 3.185e-05, 3.14e-05, 3.185e-05, 78096.07580193], [1516628040000, 3.163e-05, 3.192e-05, 3.163e-05, 3.19e-05, 100903.68434091], [1516628100000, 3.166e-05, 3.19e-05, 3.165e-05, 3.183e-05, 29623.22950842], [1516628160000, 3.165e-05, 3.183e-05, 3.165e-05, 3.183e-05, 39791.51189674], [1516628220000, 3.183e-05, 3.188e-05, 3.164e-05, 3.165e-05, 106388.10696638], [1516628280000, 3.164e-05, 3.183e-05, 3.143e-05, 3.182e-05, 33360.17553638], [1516628340000, 3.163e-05, 3.182e-05, 3.152e-05, 3.163e-05, 42478.44081187], [1516628400000, 3.163e-05, 3.164e-05, 3.163e-05, 3.164e-05, 103854.46388462], [1516628460000, 3.164e-05, 3.165e-05, 3.128e-05, 3.128e-05, 106503.14918453], [1516628520000, 3.141e-05, 3.141e-05, 3.12e-05, 3.12e-05, 77044.66897873], [1516628580000, 3.112e-05, 3.124e-05, 3.033e-05, 3.052e-05, 427301.43686432], [1516628640000, 3.052e-05, 3.094e-05, 3.046e-05, 3.079e-05, 153282.43058766], [1516628700000, 3.079e-05, 3.079e-05, 3.05e-05, 3.051e-05, 198751.45418241], [1516628760000, 3.069e-05, 3.089e-05, 3.04e-05, 3.07e-05, 52412.6793628], [1516628820000, 3.07e-05, 3.076e-05, 3.032e-05, 3.044e-05, 65321.77853745], [1516628880000, 3.044e-05, 3.088e-05, 3.042e-05, 3.088e-05, 40933.55758263], [1516628940000, 3.075e-05, 3.087e-05, 3.07e-05, 3.079e-05, 43949.81647963], [1516629000000, 3.079e-05, 3.079e-05, 3.043e-05, 3.057e-05, 37431.69996212], [1516629060000, 3.057e-05, 3.057e-05, 3.04e-05, 3.057e-05, 95855.55919876], [1516629120000, 3.057e-05, 3.07e-05, 3.057e-05, 3.069e-05, 17517.74570519], [1516629180000, 3.07e-05, 3.07e-05, 3.069e-05, 3.069e-05, 20317.76072189], [1516629240000, 3.069e-05, 3.07e-05, 3.045e-05, 3.058e-05, 66030.76135517], [1516629300000, 3.058e-05, 3.068e-05, 3.043e-05, 3.045e-05, 102525.51853789], [1516629360000, 3.045e-05, 3.068e-05, 3.044e-05, 3.068e-05, 104370.14342342], [1516629420000, 3.068e-05, 3.07e-05, 3.047e-05, 3.065e-05, 100996.06236664], [1516629480000, 3.065e-05, 3.088e-05, 3.065e-05, 3.085e-05, 21073.6043331], [1516629540000, 3.088e-05, 3.108e-05, 3.079e-05, 3.108e-05, 73806.09619025], [1516629600000, 3.102e-05, 3.108e-05, 3.084e-05, 3.084e-05, 30017.16899262], [1516629660000, 3.084e-05, 3.1e-05, 3.07e-05, 3.085e-05, 50273.11508368], [1516629720000, 3.085e-05, 3.085e-05, 3.04e-05, 3.085e-05, 99391.69861735], [1516629780000, 3.085e-05, 3.124e-05, 3.085e-05, 3.118e-05, 99373.77498578], [1516629840000, 3.118e-05, 3.146e-05, 3.117e-05, 3.145e-05, 52671.68025621], [1516629900000, 3.144e-05, 3.146e-05, 3.108e-05, 3.14e-05, 42482.86397278], [1516629960000, 3.109e-05, 3.14e-05, 3.109e-05, 3.137e-05, 33906.22859382], [1516630020000, 3.137e-05, 3.137e-05, 3.117e-05, 3.121e-05, 26933.68170199], [1516630080000, 3.121e-05, 3.128e-05, 3.109e-05, 3.11e-05, 55567.62611153], [1516630140000, 3.111e-05, 3.127e-05, 3.109e-05, 3.127e-05, 21459.81653394], [1516630200000, 3.127e-05, 3.129e-05, 3.109e-05, 3.128e-05, 67712.40774715], [1516630260000, 3.128e-05, 3.128e-05, 3.086e-05, 3.11e-05, 51256.7578017], [1516630320000, 3.125e-05, 3.125e-05, 3.101e-05, 3.101e-05, 26121.01766187], [1516630380000, 3.11e-05, 3.11e-05, 3.086e-05, 3.099e-05, 5337.13999524], [1516630440000, 3.097e-05, 3.124e-05, 3.097e-05, 3.124e-05, 98320.23640359], [1516630500000, 3.103e-05, 3.123e-05, 3.1e-05, 3.122e-05, 47775.6759708], [1516630560000, 3.123e-05, 3.125e-05, 3.102e-05, 3.122e-05, 63579.71624352], [1516630620000, 3.123e-05, 3.125e-05, 3.122e-05, 3.125e-05, 13911.08398006], [1516630680000, 3.126e-05, 3.126e-05, 3.124e-05, 3.126e-05, 12559.28912518], [1516630740000, 3.125e-05, 3.135e-05, 3.125e-05, 3.135e-05, 27919.78866967], [1516630800000, 3.129e-05, 3.147e-05, 3.128e-05, 3.147e-05, 111155.56377467], [1516630860000, 3.146e-05, 3.157e-05, 3.135e-05, 3.148e-05, 30973.75384327], [1516630920000, 3.153e-05, 3.165e-05, 3.148e-05, 3.151e-05, 42673.29694382], [1516630980000, 3.164e-05, 3.164e-05, 3.152e-05, 3.152e-05, 18948.62350377], [1516631040000, 3.152e-05, 3.163e-05, 3.152e-05, 3.163e-05, 49619.26722527], [1516631100000, 3.163e-05, 3.163e-05, 3.155e-05, 3.162e-05, 34836.25130933], [1516631160000, 3.155e-05, 3.163e-05, 3.154e-05, 3.154e-05, 23157.08520594], [1516631220000, 3.155e-05, 3.155e-05, 3.154e-05, 3.154e-05, 9046.75837258], [1516631280000, 3.153e-05, 3.161e-05, 3.153e-05, 3.154e-05, 9356.3452417], [1516631340000, 3.154e-05, 3.161e-05, 3.153e-05, 3.161e-05, 15805.02341885], [1516631400000, 3.16e-05, 3.162e-05, 3.16e-05, 3.162e-05, 12380.24564649], [1516631460000, 3.162e-05, 3.162e-05, 3.155e-05, 3.155e-05, 38378.30275909], [1516631520000, 3.155e-05, 3.162e-05, 3.155e-05, 3.161e-05, 10112.84066192], [1516631580000, 3.16e-05, 3.161e-05, 3.16e-05, 3.16e-05, 11795.4511542], [1516631640000, 3.161e-05, 3.162e-05, 3.161e-05, 3.161e-05, 58484.72403748], [1516631700000, 3.161e-05, 3.161e-05, 3.155e-05, 3.159e-05, 40878.08749494], [1516631760000, 3.16e-05, 3.161e-05, 3.159e-05, 3.16e-05, 11569.07508061], [1516631820000, 3.16e-05, 3.16e-05, 3.148e-05, 3.148e-05, 23808.13231045], [1516631880000, 3.154e-05, 3.155e-05, 3.129e-05, 3.135e-05, 34198.85931405], [1516631940000, 3.135e-05, 3.151e-05, 3.13e-05, 3.147e-05, 48308.58712731], [1516632000000, 3.146e-05, 3.148e-05, 3.135e-05, 3.135e-05, 80317.08271742], [1516632060000, 3.136e-05, 3.146e-05, 3.135e-05, 3.146e-05, 20293.393373], [1516632120000, 3.145e-05, 3.147e-05, 3.136e-05, 3.146e-05, 15351.6628854], [1516632180000, 3.136e-05, 3.136e-05, 3.135e-05, 3.135e-05, 19096.81828646], [1516632240000, 3.135e-05, 3.136e-05, 3.1e-05, 3.101e-05, 13333.22646938], [1516632300000, 3.104e-05, 3.131e-05, 3.104e-05, 3.115e-05, 39604.76419344], [1516632360000, 3.115e-05, 3.13e-05, 3.11e-05, 3.11e-05, 22519.81120439], [1516632420000, 3.11e-05, 3.11e-05, 3.1e-05, 3.103e-05, 60370.66604914], [1516632480000, 3.103e-05, 3.103e-05, 3.098e-05, 3.103e-05, 57297.26162175], [1516632540000, 3.103e-05, 3.103e-05, 3.102e-05, 3.103e-05, 32801.15242116], [1516632600000, 3.103e-05, 3.11e-05, 3.103e-05, 3.103e-05, 14019.18544112], [1516632660000, 3.11e-05, 3.126e-05, 3.103e-05, 3.126e-05, 23887.58750882], [1516632720000, 3.103e-05, 3.103e-05, 3.09e-05, 3.103e-05, 28520.58964944], [1516632780000, 3.103e-05, 3.11e-05, 3.09e-05, 3.092e-05, 17051.30364104], [1516632840000, 3.099e-05, 3.103e-05, 3.069e-05, 3.102e-05, 44733.76753418], [1516632900000, 3.094e-05, 3.102e-05, 3.09e-05, 3.102e-05, 14147.96660398], [1516632960000, 3.106e-05, 3.106e-05, 3.1e-05, 3.1e-05, 3900.39467704], [1516633020000, 3.105e-05, 3.11e-05, 3.105e-05, 3.106e-05, 14070.67647657], [1516633080000, 3.11e-05, 3.121e-05, 3.106e-05, 3.107e-05, 10713.96828474], [1516633140000, 3.12e-05, 3.12e-05, 3.109e-05, 3.12e-05, 1359.89991579], [1516633200000, 3.11e-05, 3.11e-05, 3.11e-05, 3.11e-05, 5161.87462522], [1516633260000, 3.115e-05, 3.12e-05, 3.115e-05, 3.12e-05, 11086.28060847], [1516633320000, 3.119e-05, 3.125e-05, 3.116e-05, 3.116e-05, 20880.4358574], [1516633380000, 3.117e-05, 3.117e-05, 3.115e-05, 3.115e-05, 4012.30408976], [1516633440000, 3.119e-05, 3.119e-05, 3.115e-05, 3.115e-05, 9670.97479734], [1516633500000, 3.115e-05, 3.115e-05, 3.101e-05, 3.107e-05, 9096.34644348], [1516633560000, 3.107e-05, 3.116e-05, 3.107e-05, 3.116e-05, 11907.78072529], [1516633620000, 3.117e-05, 3.117e-05, 3.116e-05, 3.116e-05, 1420.70870398], [1516633680000, 3.117e-05, 3.121e-05, 3.117e-05, 3.121e-05, 2636.72821628], [1516633740000, 3.119e-05, 3.125e-05, 3.119e-05, 3.125e-05, 21237.0793857], [1516633800000, 3.121e-05, 3.125e-05, 3.106e-05, 3.106e-05, 68568.81578238], [1516633860000, 3.112e-05, 3.126e-05, 3.112e-05, 3.112e-05, 4380.78205512], [1516633920000, 3.112e-05, 3.123e-05, 3.112e-05, 3.114e-05, 2132.91924172], [1516633980000, 3.115e-05, 3.123e-05, 3.113e-05, 3.122e-05, 21388.73934675], [1516634040000, 3.123e-05, 3.124e-05, 3.112e-05, 3.123e-05, 10421.90080682], [1516634100000, 3.107e-05, 3.114e-05, 3.01e-05, 3.048e-05, 269844.54673211], [1516634160000, 3.05e-05, 3.113e-05, 3.05e-05, 3.071e-05, 1727.51869878], [1516634220000, 3.094e-05, 3.094e-05, 3.075e-05, 3.093e-05, 5560.62868067], [1516634280000, 3.075e-05, 3.093e-05, 3.073e-05, 3.075e-05, 14017.63882832], [1516634340000, 3.075e-05, 3.08e-05, 3.075e-05, 3.076e-05, 44305.29321891], [1516634400000, 3.076e-05, 3.076e-05, 3.075e-05, 3.075e-05, 13114.19714596], [1516634460000, 3.076e-05, 3.076e-05, 3.073e-05, 3.073e-05, 20701.15470339], [1516634520000, 3.08e-05, 3.088e-05, 3.069e-05, 3.088e-05, 18064.27219686], [1516634580000, 3.072e-05, 3.088e-05, 3.072e-05, 3.088e-05, 2680.00818384], [1516634640000, 3.084e-05, 3.084e-05, 3.083e-05, 3.083e-05, 12836.91214418], [1516634700000, 3.073e-05, 3.073e-05, 3.072e-05, 3.072e-05, 18928.97563323], [1516634760000, 3.072e-05, 3.073e-05, 3.072e-05, 3.072e-05, 21458.14213285], [1516634820000, 3.079e-05, 3.079e-05, 3.079e-05, 3.079e-05, 368.0], [1516634880000, 3.079e-05, 3.079e-05, 3.031e-05, 3.053e-05, 61756.65568877], [1516634940000, 3.07e-05, 3.07e-05, 3.053e-05, 3.068e-05, 26509.7053432], [1516635000000, 3.067e-05, 3.067e-05, 3.06e-05, 3.06e-05, 52161.29246107], [1516635060000, 3.06e-05, 3.07e-05, 3.06e-05, 3.067e-05, 8855.87357672], [1516635120000, 3.067e-05, 3.07e-05, 3.066e-05, 3.068e-05, 11873.17826702], [1516635180000, 3.069e-05, 3.07e-05, 3.067e-05, 3.07e-05, 55736.01934018], [1516635240000, 3.07e-05, 3.076e-05, 3.053e-05, 3.076e-05, 59714.99884408], [1516635300000, 3.051e-05, 3.076e-05, 3.051e-05, 3.076e-05, 1730.95999604], [1516635360000, 3.076e-05, 3.076e-05, 3.053e-05, 3.053e-05, 2195.47035163], [1516635420000, 3.053e-05, 3.075e-05, 3.053e-05, 3.075e-05, 8432.80332834], [1516635480000, 3.075e-05, 3.076e-05, 3.075e-05, 3.076e-05, 63781.31846415], [1516635540000, 3.075e-05, 3.076e-05, 3.075e-05, 3.076e-05, 22639.37747662], [1516635600000, 3.075e-05, 3.076e-05, 3.075e-05, 3.076e-05, 4979.98320523], [1516635660000, 3.076e-05, 3.076e-05, 3.053e-05, 3.074e-05, 8646.81133931], [1516635720000, 3.074e-05, 3.074e-05, 3.056e-05, 3.074e-05, 32484.15444477], [1516635780000, 3.074e-05, 3.076e-05, 3.073e-05, 3.076e-05, 24832.71056766], [1516635840000, 3.076e-05, 3.076e-05, 3.076e-05, 3.076e-05, 2119.3569707], [1516635900000, 3.06e-05, 3.072e-05, 3.06e-05, 3.063e-05, 7973.18165546], [1516635960000, 3.072e-05, 3.076e-05, 3.072e-05, 3.076e-05, 13489.13934565], [1516636020000, 3.066e-05, 3.075e-05, 3.065e-05, 3.065e-05, 50487.4212519], [1516636080000, 3.065e-05, 3.066e-05, 3.064e-05, 3.064e-05, 203848.77663635], [1516636140000, 3.066e-05, 3.076e-05, 3.066e-05, 3.076e-05, 35217.59899766], [1516636200000, 3.076e-05, 3.079e-05, 3.067e-05, 3.079e-05, 25412.0445558], [1516636260000, 3.079e-05, 3.079e-05, 3.078e-05, 3.078e-05, 24352.30916428], [1516636320000, 3.08e-05, 3.089e-05, 3.078e-05, 3.078e-05, 73550.15371567], [1516636380000, 3.078e-05, 3.078e-05, 3.067e-05, 3.07e-05, 22881.53588896], [1516636440000, 3.067e-05, 3.07e-05, 3.067e-05, 3.067e-05, 22532.88514337], [1516636500000, 3.067e-05, 3.069e-05, 3.066e-05, 3.067e-05, 17928.98733499], [1516636560000, 3.066e-05, 3.067e-05, 3.064e-05, 3.067e-05, 34489.56653443], [1516636620000, 3.066e-05, 3.067e-05, 3.064e-05, 3.066e-05, 11752.7106173], [1516636680000, 3.064e-05, 3.064e-05, 3.056e-05, 3.056e-05, 19195.57881411], [1516636740000, 3.056e-05, 3.056e-05, 3.043e-05, 3.043e-05, 9064.38496576], [1516636800000, 3.043e-05, 3.044e-05, 3.026e-05, 3.044e-05, 142906.48817998], [1516636860000, 3.044e-05, 3.057e-05, 3.038e-05, 3.045e-05, 30568.80014057], [1516636920000, 3.045e-05, 3.045e-05, 3.038e-05, 3.045e-05, 59344.9337486], [1516636980000, 3.044e-05, 3.045e-05, 3.026e-05, 3.045e-05, 67200.61747126], [1516637040000, 3.045e-05, 3.045e-05, 3.023e-05, 3.023e-05, 22333.37881948], [1516637100000, 3.026e-05, 3.029e-05, 3e-05, 3.022e-05, 110324.98530841], [1516637160000, 3.008e-05, 3.023e-05, 3e-05, 3.006e-05, 57906.24788908], [1516637220000, 3.006e-05, 3.006e-05, 3.002e-05, 3.004e-05, 16323.16119057], [1516637280000, 3.004e-05, 3.006e-05, 3e-05, 3.006e-05, 28294.47699996], [1516637340000, 3.002e-05, 3.006e-05, 3.001e-05, 3.005e-05, 20145.02129152], [1516637400000, 3.004e-05, 3.021e-05, 3.004e-05, 3.011e-05, 71551.79904601], [1516637460000, 3.018e-05, 3.04e-05, 3.011e-05, 3.04e-05, 98448.03274553], [1516637520000, 3.029e-05, 3.04e-05, 3.025e-05, 3.039e-05, 17956.69856224], [1516637580000, 3.028e-05, 3.04e-05, 3.028e-05, 3.028e-05, 7799.41008186], [1516637640000, 3.04e-05, 3.04e-05, 3.028e-05, 3.04e-05, 1875.84776244], [1516637700000, 3.04e-05, 3.04e-05, 3.032e-05, 3.032e-05, 2837.62306624], [1516637760000, 3.032e-05, 3.039e-05, 3.03e-05, 3.039e-05, 109896.7856471], [1516637820000, 3.037e-05, 3.038e-05, 3.033e-05, 3.038e-05, 7717.34192506], [1516637880000, 3.039e-05, 3.048e-05, 3.038e-05, 3.039e-05, 60081.77830206], [1516637940000, 3.05e-05, 3.05e-05, 3.049e-05, 3.05e-05, 1200.0], [1516638000000, 3.05e-05, 3.06e-05, 3.05e-05, 3.051e-05, 13705.81973087], [1516638060000, 3.05e-05, 3.06e-05, 3.05e-05, 3.06e-05, 7521.35790266], [1516638120000, 3.06e-05, 3.093e-05, 3.06e-05, 3.093e-05, 56167.77678552], [1516638180000, 3.095e-05, 3.095e-05, 3.093e-05, 3.093e-05, 20222.07220054], [1516638240000, 3.093e-05, 3.1e-05, 3.093e-05, 3.1e-05, 8043.70946587], [1516638300000, 3.1e-05, 3.112e-05, 3.1e-05, 3.112e-05, 35223.65148025], [1516638360000, 3.114e-05, 3.145e-05, 3.114e-05, 3.123e-05, 87864.83205859], [1516638420000, 3.123e-05, 3.16e-05, 3.123e-05, 3.16e-05, 179570.67927373], [1516638480000, 3.162e-05, 3.168e-05, 3.159e-05, 3.168e-05, 83016.16883953], [1516638540000, 3.16e-05, 3.168e-05, 3.12e-05, 3.12e-05, 70010.69206628], [1516638600000, 3.116e-05, 3.123e-05, 3.116e-05, 3.123e-05, 5716.11437146], [1516638660000, 3.125e-05, 3.154e-05, 3.124e-05, 3.145e-05, 61441.44961529], [1516638720000, 3.145e-05, 3.148e-05, 3.145e-05, 3.148e-05, 4516.69337986], [1516638780000, 3.148e-05, 3.159e-05, 3.145e-05, 3.145e-05, 32150.12250997], [1516638840000, 3.145e-05, 3.16e-05, 3.136e-05, 3.16e-05, 14620.28684298], [1516638900000, 3.16e-05, 3.186e-05, 3.16e-05, 3.18e-05, 76664.83735724], [1516638960000, 3.173e-05, 3.179e-05, 3.168e-05, 3.173e-05, 24955.13329997], [1516639020000, 3.173e-05, 3.179e-05, 3.16e-05, 3.169e-05, 29797.15513891], [1516639080000, 3.168e-05, 3.179e-05, 3.168e-05, 3.179e-05, 26823.81073951], [1516639140000, 3.179e-05, 3.179e-05, 3.169e-05, 3.169e-05, 1228.7670085], [1516639200000, 3.178e-05, 3.188e-05, 3.178e-05, 3.179e-05, 14807.95631829], [1516639260000, 3.188e-05, 3.2e-05, 3.18e-05, 3.2e-05, 61747.37050366], [1516639320000, 3.2e-05, 3.22e-05, 3.189e-05, 3.189e-05, 102883.65323305], [1516639380000, 3.199e-05, 3.212e-05, 3.188e-05, 3.201e-05, 101063.13470314], [1516639440000, 3.212e-05, 3.215e-05, 3.2e-05, 3.201e-05, 27319.27456373], [1516639500000, 3.201e-05, 3.212e-05, 3.2e-05, 3.21e-05, 20995.89075836], [1516639560000, 3.202e-05, 3.21e-05, 3.199e-05, 3.21e-05, 108780.00517612], [1516639620000, 3.19e-05, 3.207e-05, 3.19e-05, 3.19e-05, 5053.80185164], [1516639680000, 3.191e-05, 3.207e-05, 3.19e-05, 3.204e-05, 14470.37433643], [1516639740000, 3.204e-05, 3.204e-05, 3.19e-05, 3.191e-05, 39311.04550111], [1516639800000, 3.191e-05, 3.191e-05, 3.158e-05, 3.168e-05, 178426.48646632], [1516639860000, 3.158e-05, 3.186e-05, 3.144e-05, 3.144e-05, 34999.74704676], [1516639920000, 3.144e-05, 3.146e-05, 3.131e-05, 3.144e-05, 11374.88311439], [1516639980000, 3.145e-05, 3.15e-05, 3.145e-05, 3.15e-05, 6489.47365374], [1516640040000, 3.155e-05, 3.157e-05, 3.155e-05, 3.157e-05, 11131.62253232], [1516640100000, 3.158e-05, 3.158e-05, 3.15e-05, 3.15e-05, 20270.88062928], [1516640160000, 3.15e-05, 3.179e-05, 3.15e-05, 3.179e-05, 55357.58792347], [1516640220000, 3.179e-05, 3.179e-05, 3.152e-05, 3.152e-05, 4335.09967172], [1516640280000, 3.154e-05, 3.176e-05, 3.154e-05, 3.176e-05, 410.260556], [1516640340000, 3.176e-05, 3.176e-05, 3.156e-05, 3.17e-05, 8470.08183458], [1516640400000, 3.156e-05, 3.17e-05, 3.156e-05, 3.17e-05, 5490.07490379], [1516640460000, 3.16e-05, 3.17e-05, 3.16e-05, 3.16e-05, 22850.6608617], [1516640520000, 3.16e-05, 3.167e-05, 3.16e-05, 3.16e-05, 14957.21741193], [1516640580000, 3.16e-05, 3.166e-05, 3.16e-05, 3.166e-05, 5292.98723774], [1516640640000, 3.16e-05, 3.161e-05, 3.16e-05, 3.161e-05, 12464.68245975], [1516640700000, 3.161e-05, 3.161e-05, 3.16e-05, 3.16e-05, 6784.43113466], [1516640760000, 3.16e-05, 3.161e-05, 3.156e-05, 3.161e-05, 8098.68153875], [1516640820000, 3.159e-05, 3.161e-05, 3.156e-05, 3.156e-05, 369.20243716], [1516640880000, 3.157e-05, 3.157e-05, 3.152e-05, 3.152e-05, 21556.55538346], [1516640940000, 3.152e-05, 3.161e-05, 3.145e-05, 3.156e-05, 16949.36624464], [1516641000000, 3.156e-05, 3.161e-05, 3.156e-05, 3.161e-05, 25277.0124099], [1516641060000, 3.161e-05, 3.17e-05, 3.161e-05, 3.17e-05, 284.68133586], [1516641120000, 3.17e-05, 3.182e-05, 3.17e-05, 3.17e-05, 2000.02991003], [1516641180000, 3.18e-05, 3.182e-05, 3.17e-05, 3.17e-05, 16649.54774227], [1516641240000, 3.17e-05, 3.18e-05, 3.17e-05, 3.171e-05, 7917.34852546], [1516641300000, 3.171e-05, 3.182e-05, 3.171e-05, 3.171e-05, 10198.92412509], [1516641360000, 3.171e-05, 3.171e-05, 3.171e-05, 3.171e-05, 35.2], [1516641420000, 3.182e-05, 3.182e-05, 3.182e-05, 3.182e-05, 128.87923946], [1516641480000, 3.176e-05, 3.181e-05, 3.176e-05, 3.181e-05, 2767.67409247], [1516641540000, 3.181e-05, 3.183e-05, 3.181e-05, 3.183e-05, 17840.25931643], [1516641600000, 3.183e-05, 3.185e-05, 3.181e-05, 3.185e-05, 4620.80650417], [1516641660000, 3.185e-05, 3.185e-05, 3.185e-05, 3.185e-05, 9881.89990182], [1516641720000, 3.185e-05, 3.191e-05, 3.185e-05, 3.191e-05, 10203.63821604], [1516641780000, 3.191e-05, 3.199e-05, 3.19e-05, 3.199e-05, 22314.34957743], [1516641840000, 3.2e-05, 3.209e-05, 3.199e-05, 3.209e-05, 28214.34531345], [1516641900000, 3.2e-05, 3.25e-05, 3.2e-05, 3.215e-05, 229829.02931419], [1516641960000, 3.249e-05, 3.254e-05, 3.212e-05, 3.217e-05, 37926.51874602], [1516642020000, 3.217e-05, 3.244e-05, 3.217e-05, 3.244e-05, 2774.23909013], [1516642080000, 3.244e-05, 3.244e-05, 3.225e-05, 3.235e-05, 21206.24427234], [1516642140000, 3.235e-05, 3.267e-05, 3.231e-05, 3.261e-05, 15384.02784742], [1516642200000, 3.262e-05, 3.276e-05, 3.258e-05, 3.258e-05, 43498.18848122], [1516642260000, 3.235e-05, 3.279e-05, 3.235e-05, 3.236e-05, 178137.2911209], [1516642320000, 3.235e-05, 3.236e-05, 3.229e-05, 3.229e-05, 24808.93162064], [1516642380000, 3.229e-05, 3.267e-05, 3.229e-05, 3.267e-05, 42772.75800393], [1516642440000, 3.278e-05, 3.286e-05, 3.27e-05, 3.286e-05, 12764.91371131], [1516642500000, 3.287e-05, 3.291e-05, 3.286e-05, 3.291e-05, 53915.58204144], [1516642560000, 3.291e-05, 3.294e-05, 3.291e-05, 3.294e-05, 9906.97132767], [1516642620000, 3.294e-05, 3.294e-05, 3.29e-05, 3.292e-05, 128785.69386222], [1516642680000, 3.29e-05, 3.293e-05, 3.252e-05, 3.252e-05, 50424.88314576], [1516642740000, 3.253e-05, 3.254e-05, 3.233e-05, 3.254e-05, 34525.49409439], [1516642800000, 3.254e-05, 3.291e-05, 3.253e-05, 3.29e-05, 31730.00186525], [1516642860000, 3.29e-05, 3.293e-05, 3.287e-05, 3.293e-05, 50423.06017709], [1516642920000, 3.293e-05, 3.293e-05, 3.288e-05, 3.293e-05, 61432.90076665], [1516642980000, 3.29e-05, 3.293e-05, 3.289e-05, 3.292e-05, 39292.14390406], [1516643040000, 3.293e-05, 3.293e-05, 3.292e-05, 3.293e-05, 18878.08515377], [1516643100000, 3.292e-05, 3.293e-05, 3.287e-05, 3.293e-05, 18483.59989647], [1516643160000, 3.292e-05, 3.307e-05, 3.292e-05, 3.307e-05, 175675.51745], [1516643220000, 3.308e-05, 3.339e-05, 3.308e-05, 3.339e-05, 65273.27665504], [1516643280000, 3.339e-05, 3.358e-05, 3.338e-05, 3.358e-05, 146867.34317432], [1516643340000, 3.358e-05, 3.362e-05, 3.33e-05, 3.333e-05, 88697.28681265], [1516643400000, 3.333e-05, 3.355e-05, 3.333e-05, 3.354e-05, 23423.70632307], [1516643460000, 3.353e-05, 3.354e-05, 3.346e-05, 3.346e-05, 1841.17325969], [1516643520000, 3.346e-05, 3.354e-05, 3.335e-05, 3.336e-05, 74127.19524187], [1516643580000, 3.336e-05, 3.338e-05, 3.33e-05, 3.338e-05, 78172.49580339], [1516643640000, 3.338e-05, 3.36e-05, 3.335e-05, 3.359e-05, 12670.54593073], [1516643700000, 3.359e-05, 3.36e-05, 3.336e-05, 3.36e-05, 5595.33210268], [1516643760000, 3.36e-05, 3.378e-05, 3.335e-05, 3.371e-05, 86326.28567872], [1516643820000, 3.378e-05, 3.387e-05, 3.371e-05, 3.371e-05, 103680.87941072], [1516643880000, 3.371e-05, 3.382e-05, 3.353e-05, 3.353e-05, 45632.11559751], [1516643940000, 3.353e-05, 3.37e-05, 3.353e-05, 3.37e-05, 47973.24342538], [1516644000000, 3.37e-05, 3.38e-05, 3.357e-05, 3.357e-05, 36597.99930949], [1516644060000, 3.375e-05, 3.382e-05, 3.357e-05, 3.357e-05, 92265.12832355], [1516644120000, 3.377e-05, 3.391e-05, 3.346e-05, 3.346e-05, 115797.39263125], [1516644180000, 3.346e-05, 3.377e-05, 3.341e-05, 3.376e-05, 209023.97638025], [1516644240000, 3.377e-05, 3.397e-05, 3.366e-05, 3.394e-05, 96298.522244], [1516644300000, 3.392e-05, 3.397e-05, 3.368e-05, 3.39e-05, 39556.01405647], [1516644360000, 3.369e-05, 3.392e-05, 3.369e-05, 3.392e-05, 28895.63204021], [1516644420000, 3.385e-05, 3.399e-05, 3.37e-05, 3.39e-05, 194760.93850133], [1516644480000, 3.39e-05, 3.398e-05, 3.389e-05, 3.398e-05, 72829.24407077], [1516644540000, 3.39e-05, 3.398e-05, 3.371e-05, 3.371e-05, 23786.35914515], [1516644600000, 3.371e-05, 3.388e-05, 3.371e-05, 3.384e-05, 36740.60517202], [1516644660000, 3.384e-05, 3.397e-05, 3.384e-05, 3.387e-05, 9500.69244966], [1516644720000, 3.387e-05, 3.398e-05, 3.387e-05, 3.398e-05, 11194.28361857], [1516644780000, 3.398e-05, 3.398e-05, 3.397e-05, 3.397e-05, 58987.05216495], [1516644840000, 3.397e-05, 3.398e-05, 3.388e-05, 3.398e-05, 26696.03147078], [1516644900000, 3.397e-05, 3.398e-05, 3.396e-05, 3.398e-05, 26323.26228471], [1516644960000, 3.398e-05, 3.405e-05, 3.397e-05, 3.405e-05, 112741.14406721], [1516645020000, 3.405e-05, 3.426e-05, 3.405e-05, 3.426e-05, 123539.00454649], [1516645080000, 3.426e-05, 3.439e-05, 3.426e-05, 3.43e-05, 83046.87429103], [1516645140000, 3.43e-05, 3.435e-05, 3.426e-05, 3.434e-05, 49295.47079134], [1516645200000, 3.43e-05, 3.44e-05, 3.426e-05, 3.44e-05, 92576.45683176], [1516645260000, 3.44e-05, 3.459e-05, 3.44e-05, 3.459e-05, 135709.20352187], [1516645320000, 3.452e-05, 3.48e-05, 3.452e-05, 3.479e-05, 101965.91500818], [1516645380000, 3.479e-05, 3.487e-05, 3.471e-05, 3.479e-05, 195883.86155287], [1516645440000, 3.479e-05, 3.487e-05, 3.471e-05, 3.472e-05, 116006.31385127], [1516645500000, 3.477e-05, 3.487e-05, 3.473e-05, 3.473e-05, 37510.16370613], [1516645560000, 3.473e-05, 3.487e-05, 3.473e-05, 3.475e-05, 44825.2256553], [1516645620000, 3.475e-05, 3.475e-05, 3.446e-05, 3.456e-05, 71427.8070033], [1516645680000, 3.456e-05, 3.459e-05, 3.333e-05, 3.41e-05, 180733.41559094], [1516645740000, 3.41e-05, 3.41e-05, 3.335e-05, 3.335e-05, 52549.56461008], [1516645800000, 3.335e-05, 3.381e-05, 3.33e-05, 3.377e-05, 158147.25419167], [1516645860000, 3.377e-05, 3.413e-05, 3.375e-05, 3.399e-05, 91159.38476036], [1516645920000, 3.399e-05, 3.41e-05, 3.378e-05, 3.399e-05, 49349.50333191], [1516645980000, 3.399e-05, 3.399e-05, 3.385e-05, 3.399e-05, 6035.80056401], [1516646040000, 3.399e-05, 3.4e-05, 3.386e-05, 3.4e-05, 39989.03383873], [1516646100000, 3.399e-05, 3.4e-05, 3.385e-05, 3.4e-05, 44791.06543181], [1516646160000, 3.398e-05, 3.426e-05, 3.386e-05, 3.426e-05, 21562.93035119], [1516646220000, 3.42e-05, 3.42e-05, 3.398e-05, 3.42e-05, 43877.26723169], [1516646280000, 3.42e-05, 3.425e-05, 3.399e-05, 3.42e-05, 33670.13964691], [1516646340000, 3.419e-05, 3.42e-05, 3.405e-05, 3.419e-05, 67447.11891531], [1516646400000, 3.415e-05, 3.415e-05, 3.403e-05, 3.415e-05, 23625.80200971], [1516646460000, 3.415e-05, 3.418e-05, 3.414e-05, 3.415e-05, 17138.50458025], [1516646520000, 3.41e-05, 3.419e-05, 3.408e-05, 3.415e-05, 53835.03445323], [1516646580000, 3.415e-05, 3.427e-05, 3.414e-05, 3.427e-05, 38557.2304422], [1516646640000, 3.427e-05, 3.427e-05, 3.427e-05, 3.427e-05, 9309.52349687], [1516646700000, 3.43e-05, 3.438e-05, 3.43e-05, 3.437e-05, 18359.24657912], [1516646760000, 3.435e-05, 3.435e-05, 3.422e-05, 3.43e-05, 79160.54381746], [1516646820000, 3.425e-05, 3.43e-05, 3.425e-05, 3.43e-05, 27383.83110246], [1516646880000, 3.429e-05, 3.435e-05, 3.425e-05, 3.435e-05, 27457.45410802], [1516646940000, 3.435e-05, 3.44e-05, 3.43e-05, 3.437e-05, 35916.69830007], [1516647000000, 3.437e-05, 3.444e-05, 3.437e-05, 3.444e-05, 26940.4494858], [1516647060000, 3.445e-05, 3.479e-05, 3.445e-05, 3.477e-05, 86954.77613013], [1516647120000, 3.479e-05, 3.492e-05, 3.479e-05, 3.487e-05, 69763.85437432], [1516647180000, 3.487e-05, 3.496e-05, 3.482e-05, 3.496e-05, 96037.13954046], [1516647240000, 3.49e-05, 3.5e-05, 3.49e-05, 3.5e-05, 175369.73436851], [1516647300000, 3.497e-05, 3.507e-05, 3.496e-05, 3.507e-05, 193538.86765782], [1516647360000, 3.508e-05, 3.541e-05, 3.508e-05, 3.541e-05, 71123.97843197], [1516647420000, 3.541e-05, 3.555e-05, 3.541e-05, 3.541e-05, 276550.71426816], [1516647480000, 3.549e-05, 3.55e-05, 3.537e-05, 3.541e-05, 58701.07458652], [1516647540000, 3.54e-05, 3.54e-05, 3.536e-05, 3.54e-05, 66443.94256725], [1516647600000, 3.539e-05, 3.539e-05, 3.532e-05, 3.536e-05, 38725.73063335], [1516647660000, 3.528e-05, 3.53e-05, 3.49e-05, 3.51e-05, 271345.86880985], [1516647720000, 3.504e-05, 3.534e-05, 3.502e-05, 3.502e-05, 29870.93893958], [1516647780000, 3.5e-05, 3.503e-05, 3.477e-05, 3.482e-05, 147688.93098572], [1516647840000, 3.482e-05, 3.491e-05, 3.466e-05, 3.466e-05, 75418.06151435], [1516647900000, 3.466e-05, 3.477e-05, 3.435e-05, 3.477e-05, 53711.2186675], [1516647960000, 3.477e-05, 3.484e-05, 3.454e-05, 3.482e-05, 29908.87393141], [1516648020000, 3.482e-05, 3.497e-05, 3.47e-05, 3.482e-05, 31428.08326749], [1516648080000, 3.476e-05, 3.476e-05, 3.45e-05, 3.465e-05, 72845.17405551], [1516648140000, 3.465e-05, 3.482e-05, 3.45e-05, 3.47e-05, 35195.49439587], [1516648200000, 3.47e-05, 3.5e-05, 3.453e-05, 3.47e-05, 44043.08944582], [1516648260000, 3.47e-05, 3.47e-05, 3.455e-05, 3.456e-05, 30352.20481436], [1516648320000, 3.456e-05, 3.47e-05, 3.456e-05, 3.469e-05, 7309.14089761], [1516648380000, 3.47e-05, 3.47e-05, 3.454e-05, 3.47e-05, 65697.67111796], [1516648440000, 3.469e-05, 3.49e-05, 3.469e-05, 3.47e-05, 21758.40836758], [1516648500000, 3.479e-05, 3.495e-05, 3.47e-05, 3.479e-05, 13842.96423353], [1516648560000, 3.479e-05, 3.48e-05, 3.474e-05, 3.48e-05, 12747.96056804], [1516648620000, 3.48e-05, 3.496e-05, 3.48e-05, 3.48e-05, 24422.14453659], [1516648680000, 3.489e-05, 3.489e-05, 3.48e-05, 3.48e-05, 9165.99001168], [1516648740000, 3.479e-05, 3.496e-05, 3.458e-05, 3.496e-05, 75617.78623492], [1516648800000, 3.47e-05, 3.5e-05, 3.47e-05, 3.49e-05, 33359.82036198], [1516648860000, 3.49e-05, 3.49e-05, 3.47e-05, 3.485e-05, 22211.6517858], [1516648920000, 3.485e-05, 3.499e-05, 3.471e-05, 3.499e-05, 68436.77705049], [1516648980000, 3.497e-05, 3.522e-05, 3.473e-05, 3.522e-05, 93019.62653722], [1516649040000, 3.514e-05, 3.54e-05, 3.514e-05, 3.53e-05, 49157.9897128], [1516649100000, 3.535e-05, 3.551e-05, 3.53e-05, 3.551e-05, 62924.12498575], [1516649160000, 3.551e-05, 3.569e-05, 3.54e-05, 3.556e-05, 132326.74657811], [1516649220000, 3.556e-05, 3.57e-05, 3.549e-05, 3.569e-05, 87024.90189131], [1516649280000, 3.569e-05, 3.6e-05, 3.549e-05, 3.58e-05, 189626.41735104], [1516649340000, 3.58e-05, 3.599e-05, 3.576e-05, 3.59e-05, 107700.27759148], [1516649400000, 3.589e-05, 3.589e-05, 3.58e-05, 3.589e-05, 46933.97428567], [1516649460000, 3.588e-05, 3.588e-05, 3.569e-05, 3.569e-05, 67382.55363903], [1516649520000, 3.569e-05, 3.597e-05, 3.535e-05, 3.549e-05, 138951.69882924], [1516649580000, 3.549e-05, 3.622e-05, 3.549e-05, 3.622e-05, 448795.07729527], [1516649640000, 3.622e-05, 3.622e-05, 3.61e-05, 3.62e-05, 138945.54471802], [1516649700000, 3.62e-05, 3.621e-05, 3.55e-05, 3.571e-05, 136952.97968108], [1516649760000, 3.571e-05, 3.574e-05, 3.55e-05, 3.57e-05, 42471.36735748], [1516649820000, 3.569e-05, 3.57e-05, 3.534e-05, 3.55e-05, 124898.89793019], [1516649880000, 3.55e-05, 3.571e-05, 3.55e-05, 3.571e-05, 30693.35264245], [1516649940000, 3.575e-05, 3.62e-05, 3.575e-05, 3.62e-05, 94434.58121692], [1516650000000, 3.598e-05, 3.617e-05, 3.571e-05, 3.595e-05, 107836.48863924], [1516650060000, 3.6e-05, 3.6e-05, 3.571e-05, 3.59e-05, 61141.47133258], [1516650120000, 3.59e-05, 3.595e-05, 3.571e-05, 3.58e-05, 7897.11779273], [1516650180000, 3.58e-05, 3.59e-05, 3.551e-05, 3.565e-05, 37808.74769111], [1516650240000, 3.552e-05, 3.565e-05, 3.551e-05, 3.565e-05, 10132.15031355], [1516650300000, 3.56e-05, 3.59e-05, 3.555e-05, 3.562e-05, 29634.33698403], [1516650360000, 3.589e-05, 3.59e-05, 3.562e-05, 3.588e-05, 14718.48897289], [1516650420000, 3.575e-05, 3.588e-05, 3.562e-05, 3.562e-05, 20544.67765445], [1516650480000, 3.562e-05, 3.587e-05, 3.562e-05, 3.562e-05, 18527.03301699], [1516650540000, 3.562e-05, 3.58e-05, 3.562e-05, 3.58e-05, 11830.90444994], [1516650600000, 3.58e-05, 3.588e-05, 3.58e-05, 3.58e-05, 85557.4133946], [1516650660000, 3.58e-05, 3.587e-05, 3.563e-05, 3.586e-05, 58743.40087428], [1516650720000, 3.586e-05, 3.586e-05, 3.563e-05, 3.564e-05, 49836.77438387], [1516650780000, 3.564e-05, 3.579e-05, 3.55e-05, 3.55e-05, 76223.36119488], [1516650840000, 3.548e-05, 3.55e-05, 3.54e-05, 3.54e-05, 34956.54342285], [1516650900000, 3.548e-05, 3.548e-05, 3.521e-05, 3.522e-05, 7173.55234805], [1516650960000, 3.519e-05, 3.529e-05, 3.5e-05, 3.501e-05, 63844.82307216], [1516651020000, 3.501e-05, 3.53e-05, 3.501e-05, 3.521e-05, 17357.73326299], [1516651080000, 3.521e-05, 3.537e-05, 3.5e-05, 3.5e-05, 8964.03101217], [1516651140000, 3.5e-05, 3.523e-05, 3.5e-05, 3.505e-05, 9457.68283453], [1516651200000, 3.505e-05, 3.534e-05, 3.504e-05, 3.532e-05, 22118.33618083], [1516651260000, 3.533e-05, 3.551e-05, 3.533e-05, 3.55e-05, 30555.17512811], [1516651320000, 3.54e-05, 3.55e-05, 3.54e-05, 3.54e-05, 34101.4604231], [1516651380000, 3.541e-05, 3.541e-05, 3.499e-05, 3.514e-05, 87004.64958633], [1516651440000, 3.5e-05, 3.534e-05, 3.5e-05, 3.534e-05, 4684.13640002], [1516651500000, 3.535e-05, 3.545e-05, 3.527e-05, 3.535e-05, 56795.60630747], [1516651560000, 3.527e-05, 3.558e-05, 3.527e-05, 3.544e-05, 35870.09648349], [1516651620000, 3.563e-05, 3.569e-05, 3.527e-05, 3.533e-05, 20593.28110815], [1516651680000, 3.566e-05, 3.582e-05, 3.566e-05, 3.582e-05, 38015.02549476], [1516651740000, 3.571e-05, 3.583e-05, 3.571e-05, 3.583e-05, 21939.19618384], [1516651800000, 3.58e-05, 3.583e-05, 3.58e-05, 3.583e-05, 10052.48398978], [1516651860000, 3.583e-05, 3.583e-05, 3.582e-05, 3.583e-05, 25995.23403323], [1516651920000, 3.583e-05, 3.585e-05, 3.582e-05, 3.585e-05, 44414.39444342], [1516651980000, 3.584e-05, 3.588e-05, 3.581e-05, 3.583e-05, 16041.84146757], [1516652040000, 3.583e-05, 3.583e-05, 3.58e-05, 3.58e-05, 4165.63928655], [1516652100000, 3.579e-05, 3.58e-05, 3.571e-05, 3.571e-05, 26049.54321431], [1516652160000, 3.571e-05, 3.571e-05, 3.501e-05, 3.502e-05, 51787.41895367], [1516652220000, 3.55e-05, 3.55e-05, 3.54e-05, 3.546e-05, 21480.19613275], [1516652280000, 3.546e-05, 3.547e-05, 3.501e-05, 3.501e-05, 13194.44154307], [1516652340000, 3.502e-05, 3.535e-05, 3.5e-05, 3.5e-05, 34545.85492546], [1516652400000, 3.5e-05, 3.501e-05, 3.494e-05, 3.494e-05, 34513.15645406], [1516652460000, 3.494e-05, 3.494e-05, 3.471e-05, 3.471e-05, 67072.88002585], [1516652520000, 3.47e-05, 3.47e-05, 3.415e-05, 3.415e-05, 30712.06201019], [1516652580000, 3.421e-05, 3.421e-05, 3.388e-05, 3.413e-05, 130603.81211003], [1516652640000, 3.421e-05, 3.458e-05, 3.414e-05, 3.434e-05, 54558.6229673], [1516652700000, 3.434e-05, 3.457e-05, 3.425e-05, 3.425e-05, 120816.62221051], [1516652760000, 3.425e-05, 3.448e-05, 3.425e-05, 3.425e-05, 54798.45977736], [1516652820000, 3.445e-05, 3.445e-05, 3.398e-05, 3.398e-05, 39616.00758525], [1516652880000, 3.399e-05, 3.413e-05, 3.38e-05, 3.413e-05, 74033.08162085], [1516652940000, 3.387e-05, 3.415e-05, 3.35e-05, 3.413e-05, 153322.88248442], [1516653000000, 3.413e-05, 3.433e-05, 3.41e-05, 3.412e-05, 38784.54189404], [1516653060000, 3.41e-05, 3.45e-05, 3.409e-05, 3.449e-05, 13100.02127594], [1516653120000, 3.449e-05, 3.452e-05, 3.42e-05, 3.435e-05, 26457.52596248], [1516653180000, 3.435e-05, 3.448e-05, 3.435e-05, 3.438e-05, 39208.64568817], [1516653240000, 3.438e-05, 3.455e-05, 3.436e-05, 3.448e-05, 36389.3748724], [1516653300000, 3.448e-05, 3.448e-05, 3.438e-05, 3.438e-05, 15815.7691903], [1516653360000, 3.438e-05, 3.438e-05, 3.4e-05, 3.4e-05, 15599.7704665], [1516653420000, 3.4e-05, 3.423e-05, 3.398e-05, 3.41e-05, 60165.94941691], [1516653480000, 3.41e-05, 3.415e-05, 3.4e-05, 3.415e-05, 16897.87713666], [1516653540000, 3.415e-05, 3.415e-05, 3.404e-05, 3.404e-05, 19885.58324258], [1516653600000, 3.404e-05, 3.405e-05, 3.4e-05, 3.4e-05, 16802.22414523], [1516653660000, 3.403e-05, 3.405e-05, 3.4e-05, 3.4e-05, 23149.2195535], [1516653720000, 3.4e-05, 3.405e-05, 3.399e-05, 3.405e-05, 40268.03953428], [1516653780000, 3.4e-05, 3.4e-05, 3.388e-05, 3.388e-05, 14867.1943912], [1516653840000, 3.373e-05, 3.389e-05, 3.332e-05, 3.332e-05, 55080.58116937], [1516653900000, 3.338e-05, 3.338e-05, 3.33e-05, 3.335e-05, 84727.37526427], [1516653960000, 3.338e-05, 3.338e-05, 3.318e-05, 3.324e-05, 59567.90879715], [1516654020000, 3.324e-05, 3.335e-05, 3.308e-05, 3.31e-05, 64334.1991033], [1516654080000, 3.335e-05, 3.36e-05, 3.312e-05, 3.36e-05, 36703.45805004], [1516654140000, 3.348e-05, 3.389e-05, 3.347e-05, 3.389e-05, 43365.49376331], [1516654200000, 3.393e-05, 3.398e-05, 3.348e-05, 3.365e-05, 125520.11242719], [1516654260000, 3.369e-05, 3.39e-05, 3.314e-05, 3.39e-05, 29388.50967356], [1516654320000, 3.39e-05, 3.393e-05, 3.39e-05, 3.39e-05, 32366.20065497], [1516654380000, 3.371e-05, 3.39e-05, 3.311e-05, 3.365e-05, 82246.7121629], [1516654440000, 3.375e-05, 3.389e-05, 3.354e-05, 3.354e-05, 26431.83378276], [1516654500000, 3.354e-05, 3.354e-05, 3.325e-05, 3.325e-05, 65663.3161227], [1516654560000, 3.354e-05, 3.354e-05, 3.328e-05, 3.354e-05, 24944.02894088], [1516654620000, 3.354e-05, 3.354e-05, 3.325e-05, 3.34e-05, 25359.67826646], [1516654680000, 3.34e-05, 3.354e-05, 3.34e-05, 3.34e-05, 13716.5028721], [1516654740000, 3.34e-05, 3.354e-05, 3.337e-05, 3.354e-05, 61122.33143332], [1516654800000, 3.354e-05, 3.354e-05, 3.336e-05, 3.336e-05, 33721.42577645], [1516654860000, 3.336e-05, 3.336e-05, 3.325e-05, 3.325e-05, 11768.52403338], [1516654920000, 3.325e-05, 3.325e-05, 3.321e-05, 3.321e-05, 26742.38717156], [1516654980000, 3.321e-05, 3.321e-05, 3.319e-05, 3.321e-05, 15677.70073613], [1516655040000, 3.321e-05, 3.321e-05, 3.319e-05, 3.321e-05, 26492.6954088], [1516655100000, 3.32e-05, 3.354e-05, 3.32e-05, 3.354e-05, 27364.49698585], [1516655160000, 3.354e-05, 3.354e-05, 3.312e-05, 3.353e-05, 24394.51355218], [1516655220000, 3.325e-05, 3.353e-05, 3.32e-05, 3.352e-05, 8612.45999291], [1516655280000, 3.352e-05, 3.379e-05, 3.352e-05, 3.379e-05, 41506.39060032], [1516655340000, 3.383e-05, 3.383e-05, 3.354e-05, 3.376e-05, 20351.02043221], [1516655400000, 3.375e-05, 3.376e-05, 3.354e-05, 3.354e-05, 19818.70508819], [1516655460000, 3.354e-05, 3.4e-05, 3.333e-05, 3.4e-05, 83454.26339656], [1516655520000, 3.4e-05, 3.421e-05, 3.393e-05, 3.412e-05, 43921.47484797], [1516655580000, 3.421e-05, 3.437e-05, 3.421e-05, 3.43e-05, 54603.5806097], [1516655640000, 3.43e-05, 3.437e-05, 3.354e-05, 3.389e-05, 93634.27352399], [1516655700000, 3.4e-05, 3.437e-05, 3.4e-05, 3.437e-05, 26286.43852423], [1516655760000, 3.437e-05, 3.44e-05, 3.436e-05, 3.438e-05, 47122.58568422], [1516655820000, 3.44e-05, 3.445e-05, 3.438e-05, 3.445e-05, 10898.67579377], [1516655880000, 3.448e-05, 3.469e-05, 3.445e-05, 3.467e-05, 19411.48150676], [1516655940000, 3.467e-05, 3.47e-05, 3.456e-05, 3.456e-05, 41168.51639653], [1516656000000, 3.456e-05, 3.459e-05, 3.401e-05, 3.401e-05, 37554.38170674], [1516656060000, 3.4e-05, 3.433e-05, 3.354e-05, 3.354e-05, 31785.95965258], [1516656120000, 3.355e-05, 3.38e-05, 3.33e-05, 3.332e-05, 29244.30754649], [1516656180000, 3.33e-05, 3.355e-05, 3.33e-05, 3.355e-05, 71762.6684427], [1516656240000, 3.354e-05, 3.39e-05, 3.326e-05, 3.326e-05, 35939.61366419], [1516656300000, 3.327e-05, 3.341e-05, 3.325e-05, 3.325e-05, 16028.69516274], [1516656360000, 3.331e-05, 3.337e-05, 3.327e-05, 3.327e-05, 12277.23870876], [1516656420000, 3.329e-05, 3.35e-05, 3.329e-05, 3.35e-05, 28740.03123177], [1516656480000, 3.346e-05, 3.385e-05, 3.344e-05, 3.385e-05, 44816.43074964], [1516656540000, 3.385e-05, 3.421e-05, 3.371e-05, 3.384e-05, 20054.47226089], [1516656600000, 3.385e-05, 3.397e-05, 3.384e-05, 3.397e-05, 6401.79416744], [1516656660000, 3.397e-05, 3.413e-05, 3.388e-05, 3.388e-05, 11982.06840524], [1516656720000, 3.4e-05, 3.413e-05, 3.389e-05, 3.408e-05, 25310.1048039], [1516656780000, 3.408e-05, 3.413e-05, 3.404e-05, 3.407e-05, 39334.21807584], [1516656840000, 3.388e-05, 3.402e-05, 3.348e-05, 3.37e-05, 29830.61352289], [1516656900000, 3.37e-05, 3.383e-05, 3.37e-05, 3.383e-05, 21521.09819449], [1516656960000, 3.383e-05, 3.413e-05, 3.37e-05, 3.411e-05, 41561.86743605], [1516657020000, 3.386e-05, 3.42e-05, 3.386e-05, 3.412e-05, 51160.31888526], [1516657080000, 3.412e-05, 3.423e-05, 3.41e-05, 3.423e-05, 36655.95338879], [1516657140000, 3.424e-05, 3.424e-05, 3.419e-05, 3.424e-05, 12147.66537017], [1516657200000, 3.424e-05, 3.433e-05, 3.411e-05, 3.412e-05, 47412.74827429], [1516657260000, 3.412e-05, 3.413e-05, 3.401e-05, 3.401e-05, 14403.74798602], [1516657320000, 3.401e-05, 3.401e-05, 3.348e-05, 3.348e-05, 6933.70857948], [1516657380000, 3.35e-05, 3.351e-05, 3.347e-05, 3.351e-05, 9326.82603303], [1516657440000, 3.351e-05, 3.381e-05, 3.345e-05, 3.368e-05, 27934.65281885], [1516657500000, 3.368e-05, 3.37e-05, 3.351e-05, 3.368e-05, 29030.55293048], [1516657560000, 3.367e-05, 3.369e-05, 3.351e-05, 3.365e-05, 30598.9286696], [1516657620000, 3.365e-05, 3.407e-05, 3.353e-05, 3.407e-05, 98465.662046], [1516657680000, 3.375e-05, 3.41e-05, 3.37e-05, 3.399e-05, 14490.74742823], [1516657740000, 3.412e-05, 3.412e-05, 3.399e-05, 3.411e-05, 14412.13301389], [1516657800000, 3.41e-05, 3.468e-05, 3.41e-05, 3.442e-05, 44563.77410704], [1516657860000, 3.45e-05, 3.47e-05, 3.436e-05, 3.466e-05, 28977.72641874], [1516657920000, 3.466e-05, 3.49e-05, 3.466e-05, 3.49e-05, 73084.36954195], [1516657980000, 3.49e-05, 3.499e-05, 3.489e-05, 3.494e-05, 27567.48695156], [1516658040000, 3.497e-05, 3.499e-05, 3.494e-05, 3.497e-05, 33219.98352909], [1516658100000, 3.498e-05, 3.498e-05, 3.472e-05, 3.488e-05, 69470.0714455], [1516658160000, 3.488e-05, 3.488e-05, 3.471e-05, 3.472e-05, 40880.01019921], [1516658220000, 3.471e-05, 3.472e-05, 3.418e-05, 3.436e-05, 83292.85133549], [1516658280000, 3.436e-05, 3.472e-05, 3.418e-05, 3.435e-05, 19430.37103626], [1516658340000, 3.46e-05, 3.46e-05, 3.436e-05, 3.44e-05, 5003.76962425], [1516658400000, 3.44e-05, 3.468e-05, 3.436e-05, 3.441e-05, 56670.51761262], [1516658460000, 3.456e-05, 3.472e-05, 3.442e-05, 3.472e-05, 27599.55120104], [1516658520000, 3.479e-05, 3.491e-05, 3.47e-05, 3.487e-05, 64436.171362], [1516658580000, 3.486e-05, 3.495e-05, 3.46e-05, 3.495e-05, 78323.48774852], [1516658640000, 3.49e-05, 3.5e-05, 3.49e-05, 3.5e-05, 67487.71893578], [1516658700000, 3.5e-05, 3.515e-05, 3.5e-05, 3.515e-05, 89988.30222956], [1516658760000, 3.515e-05, 3.539e-05, 3.515e-05, 3.539e-05, 61515.09717308], [1516658820000, 3.539e-05, 3.541e-05, 3.519e-05, 3.519e-05, 36735.62502169], [1516658880000, 3.526e-05, 3.539e-05, 3.523e-05, 3.523e-05, 9615.55694872], [1516658940000, 3.523e-05, 3.538e-05, 3.515e-05, 3.515e-05, 17878.07011858], [1516659000000, 3.515e-05, 3.515e-05, 3.469e-05, 3.469e-05, 35180.45398476], [1516659060000, 3.491e-05, 3.508e-05, 3.469e-05, 3.5e-05, 46935.292657], [1516659120000, 3.5e-05, 3.5e-05, 3.491e-05, 3.5e-05, 34970.61843768], [1516659180000, 3.5e-05, 3.5e-05, 3.49e-05, 3.491e-05, 7819.37800666], [1516659240000, 3.491e-05, 3.501e-05, 3.49e-05, 3.501e-05, 11429.0366024], [1516659300000, 3.501e-05, 3.539e-05, 3.495e-05, 3.539e-05, 14459.09643635], [1516659360000, 3.515e-05, 3.55e-05, 3.513e-05, 3.54e-05, 46531.46718199], [1516659420000, 3.54e-05, 3.552e-05, 3.516e-05, 3.538e-05, 131335.36174139], [1516659480000, 3.538e-05, 3.554e-05, 3.538e-05, 3.552e-05, 22945.60102061], [1516659540000, 3.552e-05, 3.552e-05, 3.54e-05, 3.542e-05, 11853.04318408], [1516659600000, 3.542e-05, 3.542e-05, 3.508e-05, 3.523e-05, 32320.17026283], [1516659660000, 3.536e-05, 3.536e-05, 3.51e-05, 3.51e-05, 26711.8824264], [1516659720000, 3.508e-05, 3.523e-05, 3.505e-05, 3.522e-05, 6105.79288846], [1516659780000, 3.52e-05, 3.522e-05, 3.492e-05, 3.492e-05, 44116.04729151], [1516659840000, 3.492e-05, 3.523e-05, 3.465e-05, 3.519e-05, 39743.52427406], [1516659900000, 3.519e-05, 3.519e-05, 3.516e-05, 3.516e-05, 11223.59032258], [1516659960000, 3.517e-05, 3.523e-05, 3.515e-05, 3.523e-05, 109442.23533013], [1516660020000, 3.523e-05, 3.523e-05, 3.513e-05, 3.513e-05, 40157.23377963], [1516660080000, 3.513e-05, 3.514e-05, 3.511e-05, 3.512e-05, 35273.52822087], [1516660140000, 3.512e-05, 3.512e-05, 3.509e-05, 3.509e-05, 68887.50737304], [1516660200000, 3.5e-05, 3.507e-05, 3.479e-05, 3.482e-05, 27008.59716546], [1516660260000, 3.507e-05, 3.507e-05, 3.483e-05, 3.495e-05, 25477.65192765], [1516660320000, 3.495e-05, 3.5e-05, 3.484e-05, 3.495e-05, 26195.48764172], [1516660380000, 3.485e-05, 3.486e-05, 3.48e-05, 3.48e-05, 67999.57401586], [1516660440000, 3.482e-05, 3.552e-05, 3.48e-05, 3.552e-05, 154079.43441688], [1516660500000, 3.552e-05, 3.57e-05, 3.471e-05, 3.552e-05, 233447.86194217], [1516660560000, 3.51e-05, 3.55e-05, 3.51e-05, 3.55e-05, 8859.59961175], [1516660620000, 3.549e-05, 3.55e-05, 3.515e-05, 3.548e-05, 18233.44838878], [1516660680000, 3.548e-05, 3.57e-05, 3.518e-05, 3.57e-05, 55620.32309262], [1516660740000, 3.57e-05, 3.6e-05, 3.57e-05, 3.6e-05, 299631.54365836], [1516660800000, 3.6e-05, 3.62e-05, 3.6e-05, 3.6e-05, 99878.55659693], [1516660860000, 3.6e-05, 3.6e-05, 3.57e-05, 3.585e-05, 58012.91280803], [1516660920000, 3.585e-05, 3.588e-05, 3.55e-05, 3.566e-05, 41218.74041864], [1516660980000, 3.563e-05, 3.57e-05, 3.542e-05, 3.543e-05, 4000.14330078], [1516661040000, 3.543e-05, 3.56e-05, 3.521e-05, 3.543e-05, 41699.16624194], [1516661100000, 3.54e-05, 3.54e-05, 3.523e-05, 3.523e-05, 30772.33573512], [1516661160000, 3.523e-05, 3.54e-05, 3.52e-05, 3.525e-05, 23892.52722787], [1516661220000, 3.525e-05, 3.525e-05, 3.499e-05, 3.502e-05, 106796.34110531], [1516661280000, 3.525e-05, 3.525e-05, 3.49e-05, 3.499e-05, 45079.82301002], [1516661340000, 3.499e-05, 3.538e-05, 3.499e-05, 3.512e-05, 11500.96787639], [1516661400000, 3.512e-05, 3.535e-05, 3.502e-05, 3.535e-05, 57245.83780419], [1516661460000, 3.535e-05, 3.56e-05, 3.502e-05, 3.542e-05, 29741.15344294], [1516661520000, 3.542e-05, 3.559e-05, 3.507e-05, 3.507e-05, 40795.60971464], [1516661580000, 3.511e-05, 3.542e-05, 3.507e-05, 3.54e-05, 22851.37979431], [1516661640000, 3.539e-05, 3.598e-05, 3.539e-05, 3.596e-05, 98999.64607143], [1516661700000, 3.584e-05, 3.6e-05, 3.55e-05, 3.57e-05, 18295.04695307], [1516661760000, 3.57e-05, 3.59e-05, 3.57e-05, 3.59e-05, 26017.39477576], [1516661820000, 3.587e-05, 3.6e-05, 3.587e-05, 3.595e-05, 133106.75396726], [1516661880000, 3.6e-05, 3.611e-05, 3.59e-05, 3.59e-05, 98676.00068108], [1516661940000, 3.6e-05, 3.619e-05, 3.6e-05, 3.619e-05, 84338.18436848], [1516662000000, 3.619e-05, 3.62e-05, 3.615e-05, 3.615e-05, 157195.41017577], [1516662060000, 3.62e-05, 3.621e-05, 3.615e-05, 3.62e-05, 46009.84839073], [1516662120000, 3.617e-05, 3.619e-05, 3.612e-05, 3.612e-05, 38597.43781531], [1516662180000, 3.612e-05, 3.62e-05, 3.596e-05, 3.596e-05, 62907.48170397], [1516662240000, 3.594e-05, 3.612e-05, 3.59e-05, 3.6e-05, 16616.11804624], [1516662300000, 3.6e-05, 3.613e-05, 3.596e-05, 3.597e-05, 24608.49609447], [1516662360000, 3.596e-05, 3.597e-05, 3.56e-05, 3.561e-05, 59780.55665707], [1516662420000, 3.561e-05, 3.561e-05, 3.549e-05, 3.55e-05, 31772.14656166], [1516662480000, 3.55e-05, 3.55e-05, 3.542e-05, 3.542e-05, 52595.75914146], [1516662540000, 3.548e-05, 3.548e-05, 3.5e-05, 3.523e-05, 102036.65182013], [1516662600000, 3.523e-05, 3.523e-05, 3.494e-05, 3.504e-05, 34201.95421585], [1516662660000, 3.504e-05, 3.521e-05, 3.495e-05, 3.504e-05, 152827.29150604], [1516662720000, 3.521e-05, 3.521e-05, 3.499e-05, 3.52e-05, 53633.55516613], [1516662780000, 3.515e-05, 3.52e-05, 3.515e-05, 3.52e-05, 18348.21250502], [1516662840000, 3.52e-05, 3.533e-05, 3.517e-05, 3.533e-05, 108108.19051217], [1516662900000, 3.533e-05, 3.548e-05, 3.532e-05, 3.548e-05, 46648.68177654], [1516662960000, 3.548e-05, 3.559e-05, 3.548e-05, 3.559e-05, 41400.89436829], [1516663020000, 3.559e-05, 3.56e-05, 3.554e-05, 3.56e-05, 24156.16501214], [1516663080000, 3.559e-05, 3.56e-05, 3.517e-05, 3.535e-05, 28603.38124141], [1516663140000, 3.535e-05, 3.535e-05, 3.512e-05, 3.512e-05, 4681.5161743], [1516663200000, 3.517e-05, 3.532e-05, 3.517e-05, 3.532e-05, 15370.55927379], [1516663260000, 3.531e-05, 3.533e-05, 3.504e-05, 3.531e-05, 33599.47369369], [1516663320000, 3.531e-05, 3.531e-05, 3.504e-05, 3.53e-05, 23980.8958625], [1516663380000, 3.504e-05, 3.504e-05, 3.495e-05, 3.495e-05, 19185.36959684], [1516663440000, 3.49e-05, 3.49e-05, 3.473e-05, 3.473e-05, 41138.48128802], [1516663500000, 3.471e-05, 3.471e-05, 3.451e-05, 3.47e-05, 24468.44209725], [1516663560000, 3.47e-05, 3.473e-05, 3.46e-05, 3.47e-05, 12430.70491974], [1516663620000, 3.47e-05, 3.47e-05, 3.461e-05, 3.461e-05, 4577.75961495], [1516663680000, 3.461e-05, 3.461e-05, 3.459e-05, 3.46e-05, 42326.11816086], [1516663740000, 3.46e-05, 3.465e-05, 3.46e-05, 3.461e-05, 18911.73395506], [1516663800000, 3.461e-05, 3.465e-05, 3.455e-05, 3.455e-05, 56177.17403775], [1516663860000, 3.455e-05, 3.455e-05, 3.446e-05, 3.447e-05, 31523.2039246], [1516663920000, 3.446e-05, 3.447e-05, 3.429e-05, 3.429e-05, 73953.35479214], [1516663980000, 3.429e-05, 3.438e-05, 3.405e-05, 3.429e-05, 27265.31613318], [1516664040000, 3.429e-05, 3.437e-05, 3.412e-05, 3.429e-05, 48092.90723159], [1516664100000, 3.429e-05, 3.437e-05, 3.428e-05, 3.436e-05, 64471.01667903], [1516664160000, 3.447e-05, 3.449e-05, 3.441e-05, 3.449e-05, 16579.7889762], [1516664220000, 3.449e-05, 3.475e-05, 3.449e-05, 3.475e-05, 16534.01241918], [1516664280000, 3.481e-05, 3.514e-05, 3.481e-05, 3.503e-05, 7814.38931318], [1516664340000, 3.503e-05, 3.515e-05, 3.503e-05, 3.503e-05, 33972.31288766], [1516664400000, 3.513e-05, 3.513e-05, 3.504e-05, 3.512e-05, 6187.31956678], [1516664460000, 3.511e-05, 3.511e-05, 3.503e-05, 3.503e-05, 54543.0826451], [1516664520000, 3.503e-05, 3.508e-05, 3.502e-05, 3.502e-05, 12970.39634865], [1516664580000, 3.502e-05, 3.502e-05, 3.481e-05, 3.481e-05, 11342.75966245], [1516664640000, 3.481e-05, 3.495e-05, 3.462e-05, 3.472e-05, 20818.42991137], [1516664700000, 3.472e-05, 3.483e-05, 3.451e-05, 3.483e-05, 32437.08079201], [1516664760000, 3.47e-05, 3.483e-05, 3.462e-05, 3.483e-05, 16440.79372307], [1516664820000, 3.483e-05, 3.483e-05, 3.462e-05, 3.463e-05, 44150.47593385], [1516664880000, 3.48e-05, 3.48e-05, 3.463e-05, 3.48e-05, 44298.20605332], [1516664940000, 3.472e-05, 3.479e-05, 3.464e-05, 3.464e-05, 6406.70374232], [1516665000000, 3.464e-05, 3.472e-05, 3.464e-05, 3.465e-05, 12982.0655699], [1516665060000, 3.47e-05, 3.472e-05, 3.465e-05, 3.472e-05, 30684.46396244], [1516665120000, 3.472e-05, 3.493e-05, 3.465e-05, 3.479e-05, 27875.34459148], [1516665180000, 3.493e-05, 3.5e-05, 3.479e-05, 3.493e-05, 52130.50162109], [1516665240000, 3.506e-05, 3.516e-05, 3.49e-05, 3.512e-05, 27569.29286378], [1516665300000, 3.51e-05, 3.525e-05, 3.501e-05, 3.516e-05, 35934.78997103], [1516665360000, 3.516e-05, 3.52e-05, 3.516e-05, 3.516e-05, 30869.59654297], [1516665420000, 3.516e-05, 3.54e-05, 3.516e-05, 3.531e-05, 29300.52539202], [1516665480000, 3.531e-05, 3.557e-05, 3.53e-05, 3.53e-05, 70728.34639884], [1516665540000, 3.549e-05, 3.557e-05, 3.53e-05, 3.55e-05, 33332.36994261], [1516665600000, 3.557e-05, 3.557e-05, 3.446e-05, 3.446e-05, 174700.15203859], [1516665660000, 3.446e-05, 3.45e-05, 3.397e-05, 3.404e-05, 304456.01187688], [1516665720000, 3.394e-05, 3.448e-05, 3.387e-05, 3.448e-05, 146640.1380774], [1516665780000, 3.411e-05, 3.447e-05, 3.411e-05, 3.445e-05, 21555.04675049], [1516665840000, 3.425e-05, 3.445e-05, 3.412e-05, 3.412e-05, 33551.16356999], [1516665900000, 3.412e-05, 3.448e-05, 3.408e-05, 3.446e-05, 74253.83793203], [1516665960000, 3.446e-05, 3.45e-05, 3.412e-05, 3.418e-05, 54842.9173983], [1516666020000, 3.408e-05, 3.418e-05, 3.384e-05, 3.392e-05, 88441.81748183], [1516666080000, 3.393e-05, 3.393e-05, 3.37e-05, 3.371e-05, 86727.68398472], [1516666140000, 3.371e-05, 3.373e-05, 3.358e-05, 3.37e-05, 62090.49617843], [1516666200000, 3.369e-05, 3.369e-05, 3.352e-05, 3.356e-05, 35410.44740358], [1516666260000, 3.352e-05, 3.352e-05, 3.33e-05, 3.33e-05, 79913.62949468], [1516666320000, 3.331e-05, 3.331e-05, 3.317e-05, 3.317e-05, 58984.31560383], [1516666380000, 3.317e-05, 3.32e-05, 3.296e-05, 3.32e-05, 185849.8186199], [1516666440000, 3.32e-05, 3.329e-05, 3.32e-05, 3.321e-05, 57983.06887843], [1516666500000, 3.321e-05, 3.346e-05, 3.321e-05, 3.346e-05, 21156.35398473], [1516666560000, 3.346e-05, 3.352e-05, 3.321e-05, 3.323e-05, 104399.85006743], [1516666620000, 3.322e-05, 3.369e-05, 3.322e-05, 3.369e-05, 34266.01262235], [1516666680000, 3.369e-05, 3.369e-05, 3.316e-05, 3.316e-05, 35266.49475327], [1516666740000, 3.32e-05, 3.367e-05, 3.317e-05, 3.365e-05, 20887.90955906], [1516666800000, 3.365e-05, 3.367e-05, 3.344e-05, 3.344e-05, 9567.4590746], [1516666860000, 3.344e-05, 3.369e-05, 3.326e-05, 3.361e-05, 10858.54131131], [1516666920000, 3.361e-05, 3.369e-05, 3.36e-05, 3.369e-05, 13135.86039615], [1516666980000, 3.36e-05, 3.36e-05, 3.347e-05, 3.35e-05, 32157.79973878], [1516667040000, 3.35e-05, 3.35e-05, 3.306e-05, 3.311e-05, 75798.86946574], [1516667100000, 3.306e-05, 3.319e-05, 3.305e-05, 3.31e-05, 41672.87742427], [1516667160000, 3.31e-05, 3.318e-05, 3.297e-05, 3.298e-05, 24803.62609636], [1516667220000, 3.307e-05, 3.343e-05, 3.297e-05, 3.31e-05, 49574.17668808], [1516667280000, 3.341e-05, 3.341e-05, 3.311e-05, 3.337e-05, 10938.06740929], [1516667340000, 3.337e-05, 3.337e-05, 3.314e-05, 3.337e-05, 7701.99265338], [1516667400000, 3.337e-05, 3.343e-05, 3.337e-05, 3.34e-05, 17973.55995061], [1516667460000, 3.329e-05, 3.347e-05, 3.329e-05, 3.347e-05, 20676.71993978], [1516667520000, 3.347e-05, 3.347e-05, 3.322e-05, 3.322e-05, 18039.50227377], [1516667580000, 3.322e-05, 3.34e-05, 3.322e-05, 3.337e-05, 7726.86311183], [1516667640000, 3.337e-05, 3.347e-05, 3.337e-05, 3.347e-05, 7926.61860562], [1516667700000, 3.347e-05, 3.359e-05, 3.347e-05, 3.348e-05, 7037.62998875], [1516667760000, 3.349e-05, 3.349e-05, 3.346e-05, 3.349e-05, 13558.00501586], [1516667820000, 3.349e-05, 3.353e-05, 3.327e-05, 3.33e-05, 29296.50678733], [1516667880000, 3.33e-05, 3.348e-05, 3.33e-05, 3.345e-05, 16749.57482503], [1516667940000, 3.345e-05, 3.345e-05, 3.335e-05, 3.345e-05, 18574.93096801], [1516668000000, 3.345e-05, 3.348e-05, 3.344e-05, 3.345e-05, 32277.20202943], [1516668060000, 3.345e-05, 3.345e-05, 3.336e-05, 3.336e-05, 13832.30725557], [1516668120000, 3.336e-05, 3.337e-05, 3.336e-05, 3.337e-05, 16664.91083699], [1516668180000, 3.345e-05, 3.348e-05, 3.336e-05, 3.336e-05, 122126.94154786], [1516668240000, 3.348e-05, 3.359e-05, 3.348e-05, 3.359e-05, 22065.36774049], [1516668300000, 3.349e-05, 3.359e-05, 3.349e-05, 3.35e-05, 2821.46558532], [1516668360000, 3.351e-05, 3.359e-05, 3.349e-05, 3.359e-05, 10304.6562144], [1516668420000, 3.359e-05, 3.359e-05, 3.336e-05, 3.354e-05, 51768.02698396], [1516668480000, 3.348e-05, 3.356e-05, 3.281e-05, 3.296e-05, 117578.37574101], [1516668540000, 3.296e-05, 3.296e-05, 3.295e-05, 3.295e-05, 28166.73083224], [1516668600000, 3.295e-05, 3.323e-05, 3.295e-05, 3.323e-05, 91089.7448067], [1516668660000, 3.323e-05, 3.323e-05, 3.318e-05, 3.322e-05, 2629.60350168], [1516668720000, 3.323e-05, 3.323e-05, 3.305e-05, 3.305e-05, 6608.04639954], [1516668780000, 3.305e-05, 3.305e-05, 3.295e-05, 3.3e-05, 44940.25450735], [1516668840000, 3.295e-05, 3.3e-05, 3.284e-05, 3.294e-05, 76315.84341995], [1516668900000, 3.29e-05, 3.304e-05, 3.285e-05, 3.304e-05, 28791.86369764], [1516668960000, 3.303e-05, 3.303e-05, 3.289e-05, 3.303e-05, 30306.63936329], [1516669020000, 3.291e-05, 3.304e-05, 3.291e-05, 3.304e-05, 14376.93799626], [1516669080000, 3.305e-05, 3.31e-05, 3.305e-05, 3.305e-05, 8861.38257625], [1516669140000, 3.305e-05, 3.305e-05, 3.299e-05, 3.299e-05, 20524.6716165], [1516669200000, 3.289e-05, 3.289e-05, 3.285e-05, 3.286e-05, 19042.76465297], [1516669260000, 3.286e-05, 3.286e-05, 3.281e-05, 3.281e-05, 45986.98273765], [1516669320000, 3.285e-05, 3.286e-05, 3.28e-05, 3.281e-05, 22778.36040191], [1516669380000, 3.284e-05, 3.285e-05, 3.24e-05, 3.244e-05, 192744.8706197], [1516669440000, 3.244e-05, 3.254e-05, 3.239e-05, 3.242e-05, 70918.40625495], [1516669500000, 3.242e-05, 3.273e-05, 3.242e-05, 3.273e-05, 16391.03369709], [1516669560000, 3.273e-05, 3.287e-05, 3.271e-05, 3.286e-05, 43760.5267051], [1516669620000, 3.299e-05, 3.32e-05, 3.286e-05, 3.31e-05, 29913.51364794], [1516669680000, 3.311e-05, 3.341e-05, 3.311e-05, 3.331e-05, 30211.37442492], [1516669740000, 3.331e-05, 3.331e-05, 3.32e-05, 3.328e-05, 33989.55146463], [1516669800000, 3.325e-05, 3.325e-05, 3.314e-05, 3.324e-05, 11912.32456066], [1516669860000, 3.32e-05, 3.32e-05, 3.315e-05, 3.318e-05, 4324.02284302], [1516669920000, 3.318e-05, 3.319e-05, 3.318e-05, 3.318e-05, 42944.48597506], [1516669980000, 3.317e-05, 3.318e-05, 3.317e-05, 3.318e-05, 19580.29218695], [1516670040000, 3.318e-05, 3.318e-05, 3.316e-05, 3.317e-05, 12170.23029877], [1516670100000, 3.317e-05, 3.326e-05, 3.316e-05, 3.319e-05, 49153.72518046], [1516670160000, 3.326e-05, 3.326e-05, 3.326e-05, 3.326e-05, 6177.25676054], [1516670220000, 3.328e-05, 3.341e-05, 3.326e-05, 3.341e-05, 13458.63046755], [1516670280000, 3.342e-05, 3.343e-05, 3.329e-05, 3.329e-05, 31198.15869512], [1516670340000, 3.331e-05, 3.341e-05, 3.331e-05, 3.337e-05, 1562.38427517], [1516670400000, 3.336e-05, 3.338e-05, 3.336e-05, 3.338e-05, 5367.78390403], [1516670460000, 3.338e-05, 3.341e-05, 3.338e-05, 3.339e-05, 10527.00738648], [1516670520000, 3.339e-05, 3.341e-05, 3.339e-05, 3.339e-05, 98581.61541487], [1516670580000, 3.339e-05, 3.341e-05, 3.338e-05, 3.34e-05, 14884.51210248], [1516670640000, 3.341e-05, 3.341e-05, 3.338e-05, 3.339e-05, 9251.496769], [1516670700000, 3.338e-05, 3.341e-05, 3.338e-05, 3.339e-05, 30911.84836119], [1516670760000, 3.338e-05, 3.338e-05, 3.329e-05, 3.329e-05, 25293.01373458], [1516670820000, 3.326e-05, 3.326e-05, 3.29e-05, 3.294e-05, 22118.56207021], [1516670880000, 3.294e-05, 3.3e-05, 3.29e-05, 3.29e-05, 55993.15185855], [1516670940000, 3.29e-05, 3.29e-05, 3.252e-05, 3.254e-05, 28982.0583119], [1516671000000, 3.254e-05, 3.254e-05, 3.248e-05, 3.253e-05, 213925.26899511], [1516671060000, 3.253e-05, 3.253e-05, 3.24e-05, 3.24e-05, 92166.81741841], [1516671120000, 3.24e-05, 3.252e-05, 3.238e-05, 3.252e-05, 43803.25049053], [1516671180000, 3.243e-05, 3.253e-05, 3.243e-05, 3.253e-05, 37790.0252304], [1516671240000, 3.253e-05, 3.275e-05, 3.253e-05, 3.256e-05, 26914.96664131], [1516671300000, 3.256e-05, 3.274e-05, 3.253e-05, 3.274e-05, 27624.6748192], [1516671360000, 3.255e-05, 3.274e-05, 3.255e-05, 3.272e-05, 22034.85037199], [1516671420000, 3.272e-05, 3.276e-05, 3.265e-05, 3.276e-05, 25892.18694512], [1516671480000, 3.275e-05, 3.276e-05, 3.255e-05, 3.255e-05, 33341.41386044], [1516671540000, 3.257e-05, 3.265e-05, 3.253e-05, 3.255e-05, 44299.60885511], [1516671600000, 3.255e-05, 3.255e-05, 3.213e-05, 3.213e-05, 105183.94626133], [1516671660000, 3.229e-05, 3.229e-05, 3.205e-05, 3.205e-05, 68724.02615927], [1516671720000, 3.205e-05, 3.21e-05, 3.199e-05, 3.2e-05, 109529.96864067], [1516671780000, 3.2e-05, 3.201e-05, 3.199e-05, 3.201e-05, 9199.39144359], [1516671840000, 3.201e-05, 3.205e-05, 3.192e-05, 3.192e-05, 17553.76576775], [1516671900000, 3.193e-05, 3.199e-05, 3.187e-05, 3.187e-05, 41329.43692904], [1516671960000, 3.187e-05, 3.192e-05, 3.18e-05, 3.192e-05, 211157.66033576], [1516672020000, 3.188e-05, 3.231e-05, 3.18e-05, 3.231e-05, 154369.56591733], [1516672080000, 3.215e-05, 3.255e-05, 3.215e-05, 3.235e-05, 8225.31371789], [1516672140000, 3.236e-05, 3.236e-05, 3.201e-05, 3.201e-05, 47904.85463419], [1516672200000, 3.2e-05, 3.208e-05, 3.189e-05, 3.2e-05, 61624.81856581], [1516672260000, 3.2e-05, 3.229e-05, 3.19e-05, 3.198e-05, 22383.02655102], [1516672320000, 3.198e-05, 3.225e-05, 3.18e-05, 3.184e-05, 48695.38678254], [1516672380000, 3.184e-05, 3.224e-05, 3.184e-05, 3.198e-05, 2640.11510298], [1516672440000, 3.207e-05, 3.207e-05, 3.198e-05, 3.198e-05, 34993.42228332], [1516672500000, 3.208e-05, 3.216e-05, 3.198e-05, 3.216e-05, 7215.67455897], [1516672560000, 3.215e-05, 3.216e-05, 3.215e-05, 3.216e-05, 1668.89087029], [1516672620000, 3.222e-05, 3.228e-05, 3.222e-05, 3.227e-05, 1878.06157908], [1516672680000, 3.229e-05, 3.229e-05, 3.217e-05, 3.223e-05, 15267.30386378], [1516672740000, 3.223e-05, 3.224e-05, 3.2e-05, 3.2e-05, 25430.31405588], [1516672800000, 3.2e-05, 3.207e-05, 3.2e-05, 3.207e-05, 29345.78960351], [1516672860000, 3.201e-05, 3.207e-05, 3.201e-05, 3.201e-05, 11129.60081271], [1516672920000, 3.2e-05, 3.201e-05, 3.195e-05, 3.2e-05, 10866.31419749], [1516672980000, 3.2e-05, 3.2e-05, 3.192e-05, 3.192e-05, 12282.58108787], [1516673040000, 3.193e-05, 3.201e-05, 3.192e-05, 3.2e-05, 4524.73747367], [1516673100000, 3.192e-05, 3.2e-05, 3.192e-05, 3.198e-05, 2428.60801118], [1516673160000, 3.193e-05, 3.2e-05, 3.193e-05, 3.2e-05, 31188.31550877], [1516673220000, 3.2e-05, 3.208e-05, 3.2e-05, 3.208e-05, 25983.46267887], [1516673280000, 3.208e-05, 3.212e-05, 3.208e-05, 3.212e-05, 8831.1212535], [1516673340000, 3.212e-05, 3.249e-05, 3.212e-05, 3.249e-05, 136848.36479233], [1516673400000, 3.249e-05, 3.255e-05, 3.249e-05, 3.255e-05, 50213.22348533], [1516673460000, 3.255e-05, 3.259e-05, 3.254e-05, 3.259e-05, 27958.15211411], [1516673520000, 3.259e-05, 3.273e-05, 3.254e-05, 3.256e-05, 57947.15956335], [1516673580000, 3.264e-05, 3.264e-05, 3.228e-05, 3.239e-05, 78225.17174094], [1516673640000, 3.241e-05, 3.256e-05, 3.241e-05, 3.253e-05, 16823.61811685], [1516673700000, 3.253e-05, 3.264e-05, 3.253e-05, 3.256e-05, 36396.58811921], [1516673760000, 3.262e-05, 3.273e-05, 3.256e-05, 3.264e-05, 75394.97357769], [1516673820000, 3.264e-05, 3.273e-05, 3.256e-05, 3.271e-05, 26589.99039474], [1516673880000, 3.271e-05, 3.275e-05, 3.266e-05, 3.268e-05, 24163.91510814], [1516673940000, 3.272e-05, 3.3e-05, 3.27e-05, 3.3e-05, 50008.03250839], [1516674000000, 3.295e-05, 3.314e-05, 3.285e-05, 3.286e-05, 39009.47996465], [1516674060000, 3.3e-05, 3.319e-05, 3.285e-05, 3.3e-05, 24774.62111003], [1516674120000, 3.3e-05, 3.312e-05, 3.287e-05, 3.311e-05, 12892.33069584], [1516674180000, 3.311e-05, 3.33e-05, 3.302e-05, 3.33e-05, 60167.49089255], [1516674240000, 3.311e-05, 3.33e-05, 3.311e-05, 3.317e-05, 60419.98674688], [1516674300000, 3.311e-05, 3.329e-05, 3.311e-05, 3.325e-05, 82276.41352007], [1516674360000, 3.325e-05, 3.327e-05, 3.325e-05, 3.327e-05, 10858.54775916], [1516674420000, 3.326e-05, 3.326e-05, 3.312e-05, 3.317e-05, 24505.52983964], [1516674480000, 3.312e-05, 3.328e-05, 3.312e-05, 3.326e-05, 29660.9213662], [1516674540000, 3.328e-05, 3.339e-05, 3.328e-05, 3.332e-05, 50764.11512778], [1516674600000, 3.339e-05, 3.339e-05, 3.332e-05, 3.333e-05, 10743.49190005], [1516674660000, 3.333e-05, 3.338e-05, 3.327e-05, 3.329e-05, 9672.98160379], [1516674720000, 3.329e-05, 3.329e-05, 3.316e-05, 3.328e-05, 15036.18570804], [1516674780000, 3.328e-05, 3.328e-05, 3.316e-05, 3.317e-05, 20044.33235441], [1516674840000, 3.317e-05, 3.328e-05, 3.316e-05, 3.317e-05, 22230.90767933], [1516674900000, 3.328e-05, 3.328e-05, 3.317e-05, 3.318e-05, 15753.96282246], [1516674960000, 3.319e-05, 3.319e-05, 3.318e-05, 3.318e-05, 5996.98186461], [1516675020000, 3.318e-05, 3.328e-05, 3.315e-05, 3.328e-05, 19117.0748661], [1516675080000, 3.315e-05, 3.329e-05, 3.315e-05, 3.329e-05, 17481.52427167], [1516675140000, 3.319e-05, 3.319e-05, 3.319e-05, 3.319e-05, 1015.95329718], [1516675200000, 3.319e-05, 3.319e-05, 3.319e-05, 3.319e-05, 3141.67074519], [1516675260000, 3.319e-05, 3.329e-05, 3.319e-05, 3.328e-05, 20388.01343092], [1516675320000, 3.327e-05, 3.327e-05, 3.319e-05, 3.319e-05, 77808.82893799], [1516675380000, 3.325e-05, 3.326e-05, 3.319e-05, 3.326e-05, 9914.88394936], [1516675440000, 3.324e-05, 3.324e-05, 3.32e-05, 3.324e-05, 4444.63169913], [1516675500000, 3.324e-05, 3.325e-05, 3.321e-05, 3.321e-05, 15165.52396202], [1516675560000, 3.325e-05, 3.325e-05, 3.321e-05, 3.321e-05, 7129.64096576], [1516675620000, 3.321e-05, 3.325e-05, 3.317e-05, 3.317e-05, 17469.53272538], [1516675680000, 3.316e-05, 3.316e-05, 3.313e-05, 3.313e-05, 21019.5837629], [1516675740000, 3.312e-05, 3.314e-05, 3.312e-05, 3.312e-05, 2902.51389306], [1516675800000, 3.312e-05, 3.319e-05, 3.311e-05, 3.319e-05, 9230.61634084], [1516675860000, 3.319e-05, 3.319e-05, 3.311e-05, 3.311e-05, 1303.78273184], [1516675920000, 3.312e-05, 3.312e-05, 3.311e-05, 3.311e-05, 5000.0], [1516675980000, 3.317e-05, 3.319e-05, 3.301e-05, 3.319e-05, 22682.36986109], [1516676040000, 3.318e-05, 3.318e-05, 3.301e-05, 3.301e-05, 2836.79189616], [1516676100000, 3.318e-05, 3.319e-05, 3.317e-05, 3.318e-05, 6047.02605329], [1516676160000, 3.304e-05, 3.304e-05, 3.304e-05, 3.304e-05, 1638.1755748], [1516676220000, 3.304e-05, 3.304e-05, 3.304e-05, 3.304e-05, 2714.960473], [1516676280000, 3.305e-05, 3.318e-05, 3.305e-05, 3.306e-05, 1410.85097135], [1516676340000, 3.305e-05, 3.306e-05, 3.305e-05, 3.305e-05, 2168.22419202], [1516676400000, 3.305e-05, 3.305e-05, 3.287e-05, 3.287e-05, 7544.21247791], [1516676460000, 3.288e-05, 3.288e-05, 3.259e-05, 3.284e-05, 34172.45978737], [1516676520000, 3.284e-05, 3.284e-05, 3.266e-05, 3.266e-05, 336.36053593], [1516676580000, 3.267e-05, 3.284e-05, 3.266e-05, 3.279e-05, 4325.80440122], [1516676640000, 3.279e-05, 3.28e-05, 3.268e-05, 3.268e-05, 2775.1500784], [1516676700000, 3.268e-05, 3.278e-05, 3.266e-05, 3.278e-05, 1859.96890409], [1516676760000, 3.278e-05, 3.278e-05, 3.269e-05, 3.27e-05, 4789.64735309], [1516676820000, 3.27e-05, 3.277e-05, 3.27e-05, 3.27e-05, 5938.49637588], [1516676880000, 3.277e-05, 3.277e-05, 3.257e-05, 3.27e-05, 16174.07876373], [1516676940000, 3.277e-05, 3.277e-05, 3.257e-05, 3.257e-05, 15288.89443702], [1516677000000, 3.27e-05, 3.277e-05, 3.27e-05, 3.27e-05, 10813.16736126], [1516677060000, 3.257e-05, 3.27e-05, 3.257e-05, 3.27e-05, 4955.16823446], [1516677120000, 3.265e-05, 3.265e-05, 3.264e-05, 3.265e-05, 1010.04840231], [1516677180000, 3.264e-05, 3.264e-05, 3.257e-05, 3.264e-05, 11923.94213065], [1516677240000, 3.264e-05, 3.265e-05, 3.264e-05, 3.264e-05, 3999.0822871], [1516677300000, 3.264e-05, 3.264e-05, 3.248e-05, 3.249e-05, 23819.44757114], [1516677360000, 3.25e-05, 3.265e-05, 3.249e-05, 3.263e-05, 11008.80199133], [1516677420000, 3.259e-05, 3.263e-05, 3.25e-05, 3.263e-05, 3782.64656646], [1516677480000, 3.259e-05, 3.259e-05, 3.249e-05, 3.249e-05, 3009.6907812], [1516677540000, 3.249e-05, 3.249e-05, 3.245e-05, 3.245e-05, 11722.14422962], [1516677600000, 3.245e-05, 3.259e-05, 3.245e-05, 3.259e-05, 21346.32614418], [1516677660000, 3.259e-05, 3.269e-05, 3.259e-05, 3.268e-05, 4922.93673284], [1516677720000, 3.268e-05, 3.268e-05, 3.249e-05, 3.249e-05, 6990.94263659], [1516677780000, 3.248e-05, 3.249e-05, 3.243e-05, 3.243e-05, 44430.44022365], [1516677840000, 3.243e-05, 3.248e-05, 3.242e-05, 3.243e-05, 63467.42454209], [1516677900000, 3.243e-05, 3.255e-05, 3.243e-05, 3.244e-05, 13111.92672518], [1516677960000, 3.244e-05, 3.265e-05, 3.237e-05, 3.237e-05, 48801.46523127], [1516678020000, 3.237e-05, 3.237e-05, 3.227e-05, 3.227e-05, 24005.61351605], [1516678080000, 3.227e-05, 3.23e-05, 3.226e-05, 3.227e-05, 27253.43983011], [1516678140000, 3.226e-05, 3.227e-05, 3.221e-05, 3.225e-05, 6570.69878846], [1516678200000, 3.226e-05, 3.226e-05, 3.221e-05, 3.221e-05, 11824.00499902], [1516678260000, 3.221e-05, 3.221e-05, 3.217e-05, 3.218e-05, 28144.1929839], [1516678320000, 3.218e-05, 3.226e-05, 3.217e-05, 3.226e-05, 8838.17614195], [1516678380000, 3.226e-05, 3.226e-05, 3.209e-05, 3.209e-05, 184053.67935222], [1516678440000, 3.209e-05, 3.217e-05, 3.207e-05, 3.217e-05, 16656.31690744], [1516678500000, 3.217e-05, 3.217e-05, 3.207e-05, 3.208e-05, 8749.98566568], [1516678560000, 3.208e-05, 3.217e-05, 3.197e-05, 3.217e-05, 45326.4739855], [1516678620000, 3.201e-05, 3.217e-05, 3.197e-05, 3.2e-05, 78671.98595906], [1516678680000, 3.2e-05, 3.217e-05, 3.195e-05, 3.203e-05, 28610.73589269], [1516678740000, 3.203e-05, 3.225e-05, 3.203e-05, 3.225e-05, 15121.69135756], [1516678800000, 3.224e-05, 3.224e-05, 3.203e-05, 3.215e-05, 22184.30641299], [1516678860000, 3.215e-05, 3.215e-05, 3.201e-05, 3.201e-05, 27265.52018929], [1516678920000, 3.201e-05, 3.203e-05, 3.201e-05, 3.202e-05, 13424.87509817], [1516678980000, 3.203e-05, 3.203e-05, 3.2e-05, 3.202e-05, 22056.15409504], [1516679040000, 3.202e-05, 3.22e-05, 3.2e-05, 3.202e-05, 12297.8362101], [1516679100000, 3.202e-05, 3.202e-05, 3.179e-05, 3.198e-05, 57401.60268934], [1516679160000, 3.197e-05, 3.197e-05, 3.175e-05, 3.196e-05, 16379.79127222], [1516679220000, 3.196e-05, 3.198e-05, 3.196e-05, 3.196e-05, 5583.13446829], [1516679280000, 3.196e-05, 3.196e-05, 3.195e-05, 3.196e-05, 5296.92428959], [1516679340000, 3.19e-05, 3.19e-05, 3.177e-05, 3.179e-05, 31621.93007475], [1516679400000, 3.177e-05, 3.196e-05, 3.171e-05, 3.196e-05, 59192.64908835], [1516679460000, 3.18e-05, 3.196e-05, 3.18e-05, 3.196e-05, 12328.83199841], [1516679520000, 3.196e-05, 3.218e-05, 3.18e-05, 3.202e-05, 30691.15790719], [1516679580000, 3.202e-05, 3.218e-05, 3.202e-05, 3.218e-05, 5554.73334898], [1516679640000, 3.218e-05, 3.219e-05, 3.214e-05, 3.218e-05, 44473.34845983], [1516679700000, 3.219e-05, 3.234e-05, 3.219e-05, 3.229e-05, 34761.74876145], [1516679760000, 3.228e-05, 3.228e-05, 3.225e-05, 3.225e-05, 21327.62347211], [1516679820000, 3.225e-05, 3.225e-05, 3.212e-05, 3.214e-05, 5772.88864737], [1516679880000, 3.211e-05, 3.211e-05, 3.191e-05, 3.194e-05, 6848.22123706], [1516679940000, 3.194e-05, 3.211e-05, 3.193e-05, 3.211e-05, 7777.71925506], [1516680000000, 3.214e-05, 3.239e-05, 3.195e-05, 3.239e-05, 11150.82988917], [1516680060000, 3.239e-05, 3.243e-05, 3.239e-05, 3.24e-05, 88373.85404876], [1516680120000, 3.244e-05, 3.258e-05, 3.239e-05, 3.243e-05, 46632.40134001], [1516680180000, 3.254e-05, 3.259e-05, 3.25e-05, 3.251e-05, 17284.53967749], [1516680240000, 3.251e-05, 3.259e-05, 3.251e-05, 3.255e-05, 8676.2295545], [1516680300000, 3.259e-05, 3.261e-05, 3.259e-05, 3.261e-05, 111265.56059677], [1516680360000, 3.263e-05, 3.27e-05, 3.261e-05, 3.265e-05, 57980.17289887], [1516680420000, 3.265e-05, 3.276e-05, 3.265e-05, 3.276e-05, 12011.42033116], [1516680480000, 3.276e-05, 3.284e-05, 3.276e-05, 3.277e-05, 7087.73162378], [1516680540000, 3.278e-05, 3.284e-05, 3.277e-05, 3.284e-05, 9641.27196912], [1516680600000, 3.278e-05, 3.284e-05, 3.276e-05, 3.284e-05, 11846.51776141], [1516680660000, 3.283e-05, 3.283e-05, 3.276e-05, 3.276e-05, 15231.7395096], [1516680720000, 3.276e-05, 3.277e-05, 3.276e-05, 3.276e-05, 7496.61635863], [1516680780000, 3.278e-05, 3.278e-05, 3.278e-05, 3.278e-05, 2712.1547079], [1516680840000, 3.276e-05, 3.283e-05, 3.276e-05, 3.281e-05, 1651.13911522], [1516680900000, 3.276e-05, 3.281e-05, 3.276e-05, 3.276e-05, 3591.37527206], [1516680960000, 3.281e-05, 3.284e-05, 3.281e-05, 3.284e-05, 38801.66994824], [1516681020000, 3.284e-05, 3.284e-05, 3.284e-05, 3.284e-05, 11810.41026111], [1516681080000, 3.29e-05, 3.297e-05, 3.284e-05, 3.284e-05, 23181.62824747], [1516681140000, 3.297e-05, 3.297e-05, 3.279e-05, 3.279e-05, 5235.42374422], [1516681200000, 3.276e-05, 3.279e-05, 3.276e-05, 3.276e-05, 3768.62332614], [1516681260000, 3.276e-05, 3.28e-05, 3.276e-05, 3.28e-05, 8942.55926057], [1516681320000, 3.279e-05, 3.297e-05, 3.278e-05, 3.297e-05, 8628.34455546], [1516681380000, 3.299e-05, 3.3e-05, 3.297e-05, 3.3e-05, 2313.54848685], [1516681440000, 3.303e-05, 3.307e-05, 3.301e-05, 3.303e-05, 13282.02555718], [1516681500000, 3.303e-05, 3.314e-05, 3.3e-05, 3.303e-05, 25669.43962443], [1516681560000, 3.3e-05, 3.3e-05, 3.297e-05, 3.297e-05, 26772.47262672], [1516681620000, 3.297e-05, 3.304e-05, 3.277e-05, 3.301e-05, 17835.88827177], [1516681680000, 3.278e-05, 3.303e-05, 3.277e-05, 3.278e-05, 2369.54694168], [1516681740000, 3.303e-05, 3.304e-05, 3.302e-05, 3.304e-05, 6345.87841591], [1516681800000, 3.295e-05, 3.31e-05, 3.295e-05, 3.31e-05, 4328.69775116], [1516681860000, 3.309e-05, 3.312e-05, 3.295e-05, 3.312e-05, 7553.82565066], [1516681920000, 3.299e-05, 3.312e-05, 3.295e-05, 3.31e-05, 7922.89081808], [1516681980000, 3.309e-05, 3.309e-05, 3.309e-05, 3.309e-05, 338.4708371], [1516682040000, 3.304e-05, 3.304e-05, 3.285e-05, 3.304e-05, 648.30778672], [1516682100000, 3.3e-05, 3.304e-05, 3.293e-05, 3.293e-05, 1802.22780051], [1516682160000, 3.297e-05, 3.297e-05, 3.289e-05, 3.289e-05, 28948.89218687], [1516682220000, 3.291e-05, 3.297e-05, 3.291e-05, 3.297e-05, 34047.03799996], [1516682280000, 3.297e-05, 3.309e-05, 3.297e-05, 3.309e-05, 8273.72599663], [1516682340000, 3.298e-05, 3.298e-05, 3.298e-05, 3.298e-05, 6513.47312106], [1516682400000, 3.297e-05, 3.297e-05, 3.29e-05, 3.29e-05, 14451.97449082], [1516682460000, 3.291e-05, 3.291e-05, 3.288e-05, 3.29e-05, 3055.56556143], [1516682520000, 3.29e-05, 3.29e-05, 3.285e-05, 3.285e-05, 6165.09397618], [1516682580000, 3.281e-05, 3.281e-05, 3.265e-05, 3.265e-05, 20968.5637659], [1516682640000, 3.281e-05, 3.281e-05, 3.265e-05, 3.281e-05, 747.29362558], [1516682700000, 3.271e-05, 3.271e-05, 3.271e-05, 3.271e-05, 498.536402], [1516682760000, 3.271e-05, 3.271e-05, 3.265e-05, 3.265e-05, 15005.78764041], [1516682820000, 3.243e-05, 3.244e-05, 3.243e-05, 3.243e-05, 43583.48380883], [1516682880000, 3.243e-05, 3.243e-05, 3.239e-05, 3.239e-05, 8773.08516603], [1516682940000, 3.24e-05, 3.24e-05, 3.226e-05, 3.226e-05, 12290.72447576], [1516683000000, 3.226e-05, 3.226e-05, 3.217e-05, 3.217e-05, 15033.9448552], [1516683060000, 3.212e-05, 3.261e-05, 3.212e-05, 3.261e-05, 25623.79972782], [1516683120000, 3.262e-05, 3.262e-05, 3.24e-05, 3.24e-05, 3934.65593234], [1516683180000, 3.26e-05, 3.26e-05, 3.228e-05, 3.25e-05, 6023.69586618], [1516683240000, 3.25e-05, 3.25e-05, 3.229e-05, 3.23e-05, 464.10459831], [1516683300000, 3.25e-05, 3.25e-05, 3.231e-05, 3.231e-05, 1267.76989599], [1516683360000, 3.25e-05, 3.25e-05, 3.231e-05, 3.25e-05, 841.4346446], [1516683420000, 3.24e-05, 3.24e-05, 3.23e-05, 3.23e-05, 5837.78679888], [1516683480000, 3.23e-05, 3.23e-05, 3.23e-05, 3.23e-05, 5974.09022374], [1516683540000, 3.231e-05, 3.236e-05, 3.23e-05, 3.23e-05, 8372.67925896], [1516683600000, 3.229e-05, 3.23e-05, 3.229e-05, 3.23e-05, 504.43701342], [1516683660000, 3.23e-05, 3.236e-05, 3.23e-05, 3.23e-05, 11411.3209743], [1516683720000, 3.23e-05, 3.23e-05, 3.211e-05, 3.211e-05, 5462.08066669], [1516683780000, 3.212e-05, 3.229e-05, 3.211e-05, 3.229e-05, 5445.5430956], [1516683840000, 3.211e-05, 3.213e-05, 3.21e-05, 3.21e-05, 34416.14944238], [1516683900000, 3.211e-05, 3.211e-05, 3.201e-05, 3.201e-05, 5026.6740257], [1516683960000, 3.203e-05, 3.21e-05, 3.203e-05, 3.21e-05, 9967.29284214], [1516684020000, 3.204e-05, 3.204e-05, 3.2e-05, 3.204e-05, 10521.2192723], [1516684080000, 3.2e-05, 3.21e-05, 3.2e-05, 3.204e-05, 16319.25762721], [1516684140000, 3.204e-05, 3.21e-05, 3.204e-05, 3.204e-05, 23030.30046392], [1516684200000, 3.209e-05, 3.21e-05, 3.202e-05, 3.202e-05, 10425.9611265], [1516684260000, 3.203e-05, 3.203e-05, 3.201e-05, 3.201e-05, 34944.23493171], [1516684320000, 3.202e-05, 3.202e-05, 3.2e-05, 3.2e-05, 48440.11006475], [1516684380000, 3.2e-05, 3.2e-05, 3.198e-05, 3.198e-05, 8906.72812241], [1516684440000, 3.196e-05, 3.196e-05, 3.196e-05, 3.196e-05, 33981.68378568], [1516684500000, 3.195e-05, 3.196e-05, 3.19e-05, 3.19e-05, 14308.36036966], [1516684560000, 3.19e-05, 3.19e-05, 3.18e-05, 3.18e-05, 26626.21587724], [1516684620000, 3.182e-05, 3.19e-05, 3.182e-05, 3.19e-05, 1813.33588099], [1516684680000, 3.19e-05, 3.19e-05, 3.183e-05, 3.19e-05, 8835.4667815], [1516684740000, 3.19e-05, 3.19e-05, 3.181e-05, 3.182e-05, 10636.18605359], [1516684800000, 3.182e-05, 3.182e-05, 3.18e-05, 3.182e-05, 13099.9190728], [1516684860000, 3.18e-05, 3.18e-05, 3.179e-05, 3.18e-05, 60535.06727793], [1516684920000, 3.177e-05, 3.177e-05, 3.172e-05, 3.172e-05, 6109.70716293], [1516684980000, 3.176e-05, 3.177e-05, 3.172e-05, 3.173e-05, 24886.06156775], [1516685040000, 3.173e-05, 3.177e-05, 3.168e-05, 3.177e-05, 20619.76655766], [1516685100000, 3.177e-05, 3.177e-05, 3.168e-05, 3.168e-05, 4852.18277502], [1516685160000, 3.168e-05, 3.177e-05, 3.168e-05, 3.176e-05, 30606.94542248], [1516685220000, 3.176e-05, 3.176e-05, 3.168e-05, 3.168e-05, 12953.65794909], [1516685280000, 3.168e-05, 3.168e-05, 3.166e-05, 3.167e-05, 6213.34995449], [1516685340000, 3.168e-05, 3.176e-05, 3.168e-05, 3.168e-05, 16665.65433328], [1516685400000, 3.168e-05, 3.169e-05, 3.168e-05, 3.168e-05, 10298.76898804], [1516685460000, 3.175e-05, 3.175e-05, 3.167e-05, 3.168e-05, 6063.27893358], [1516685520000, 3.169e-05, 3.169e-05, 3.166e-05, 3.166e-05, 16025.107394], [1516685580000, 3.165e-05, 3.176e-05, 3.165e-05, 3.165e-05, 12398.35078401], [1516685640000, 3.165e-05, 3.18e-05, 3.165e-05, 3.18e-05, 35086.40814327], [1516685700000, 3.18e-05, 3.18e-05, 3.165e-05, 3.165e-05, 5452.61334882], [1516685760000, 3.17e-05, 3.199e-05, 3.165e-05, 3.199e-05, 64397.48160285], [1516685820000, 3.199e-05, 3.208e-05, 3.199e-05, 3.208e-05, 12498.00031343], [1516685880000, 3.208e-05, 3.225e-05, 3.19e-05, 3.203e-05, 69818.54565556], [1516685940000, 3.203e-05, 3.203e-05, 3.192e-05, 3.203e-05, 8649.8070655], [1516686000000, 3.203e-05, 3.243e-05, 3.203e-05, 3.243e-05, 56982.7198621], [1516686060000, 3.232e-05, 3.243e-05, 3.193e-05, 3.203e-05, 22009.71142276], [1516686180000, 3.238e-05, 3.238e-05, 3.238e-05, 3.238e-05, 822.77080766], [1516686240000, 3.237e-05, 3.238e-05, 3.237e-05, 3.238e-05, 7701.5132798], [1516686300000, 3.238e-05, 3.239e-05, 3.238e-05, 3.239e-05, 22615.15125282], [1516686360000, 3.242e-05, 3.243e-05, 3.239e-05, 3.243e-05, 3816.25800581], [1516686420000, 3.243e-05, 3.245e-05, 3.242e-05, 3.243e-05, 2325.26513638], [1516686480000, 3.242e-05, 3.259e-05, 3.24e-05, 3.241e-05, 75661.30984456], [1516686540000, 3.241e-05, 3.259e-05, 3.241e-05, 3.259e-05, 3951.48501656], [1516686600000, 3.259e-05, 3.26e-05, 3.259e-05, 3.26e-05, 27185.28626265], [1516686660000, 3.26e-05, 3.261e-05, 3.26e-05, 3.26e-05, 9918.52094103], [1516686720000, 3.26e-05, 3.261e-05, 3.26e-05, 3.26e-05, 27407.020995], [1516686780000, 3.261e-05, 3.261e-05, 3.26e-05, 3.26e-05, 6944.57563898], [1516686840000, 3.26e-05, 3.26e-05, 3.242e-05, 3.242e-05, 3869.60132107], [1516686900000, 3.241e-05, 3.242e-05, 3.238e-05, 3.242e-05, 31860.79696269], [1516686960000, 3.242e-05, 3.242e-05, 3.242e-05, 3.242e-05, 528.93487146], [1516687020000, 3.242e-05, 3.242e-05, 3.24e-05, 3.24e-05, 1293.06787329], [1516687080000, 3.241e-05, 3.241e-05, 3.238e-05, 3.238e-05, 9669.16185544], [1516687140000, 3.232e-05, 3.232e-05, 3.221e-05, 3.232e-05, 552.97674953], [1516687200000, 3.235e-05, 3.235e-05, 3.235e-05, 3.235e-05, 279.5460388], [1516687260000, 3.233e-05, 3.233e-05, 3.23e-05, 3.23e-05, 1581.95963934], [1516687320000, 3.23e-05, 3.24e-05, 3.192e-05, 3.24e-05, 19698.12767462], [1516687380000, 3.217e-05, 3.217e-05, 3.21e-05, 3.21e-05, 5073.08745253], [1516687440000, 3.21e-05, 3.21e-05, 3.192e-05, 3.192e-05, 7124.9880627], [1516687500000, 3.21e-05, 3.21e-05, 3.21e-05, 3.21e-05, 741.89723363], [1516687560000, 3.21e-05, 3.21e-05, 3.21e-05, 3.21e-05, 1246.105919], [1516687620000, 3.192e-05, 3.192e-05, 3.17e-05, 3.19e-05, 5069.07659639], [1516687680000, 3.19e-05, 3.19e-05, 3.169e-05, 3.19e-05, 13546.04539269], [1516687740000, 3.19e-05, 3.19e-05, 3.174e-05, 3.174e-05, 17301.44434501], [1516687800000, 3.209e-05, 3.209e-05, 3.202e-05, 3.209e-05, 2596.79831968], [1516687860000, 3.203e-05, 3.209e-05, 3.203e-05, 3.209e-05, 438.30242585], [1516687920000, 3.209e-05, 3.209e-05, 3.203e-05, 3.203e-05, 716.50564261], [1516687980000, 3.204e-05, 3.209e-05, 3.204e-05, 3.204e-05, 11945.77957209], [1516688040000, 3.209e-05, 3.209e-05, 3.204e-05, 3.205e-05, 4160.26557913], [1516688100000, 3.21e-05, 3.21e-05, 3.21e-05, 3.21e-05, 353.54818224], [1516688160000, 3.207e-05, 3.219e-05, 3.205e-05, 3.219e-05, 10750.78720207], [1516688220000, 3.219e-05, 3.235e-05, 3.2e-05, 3.229e-05, 12083.49281088], [1516688280000, 3.235e-05, 3.241e-05, 3.228e-05, 3.241e-05, 18670.835767], [1516688340000, 3.24e-05, 3.241e-05, 3.24e-05, 3.241e-05, 8807.7956647], [1516688400000, 3.24e-05, 3.241e-05, 3.223e-05, 3.241e-05, 20409.02095496], [1516688460000, 3.241e-05, 3.25e-05, 3.205e-05, 3.25e-05, 17999.42528615], [1516688520000, 3.25e-05, 3.255e-05, 3.25e-05, 3.255e-05, 3107.81781385], [1516688580000, 3.254e-05, 3.255e-05, 3.223e-05, 3.255e-05, 28055.63976178], [1516688640000, 3.241e-05, 3.252e-05, 3.225e-05, 3.249e-05, 20030.33155162], [1516688700000, 3.249e-05, 3.25e-05, 3.249e-05, 3.249e-05, 11430.02251468], [1516688760000, 3.256e-05, 3.256e-05, 3.256e-05, 3.256e-05, 1810.35466216], [1516688820000, 3.25e-05, 3.25e-05, 3.232e-05, 3.249e-05, 4862.2771745], [1516688880000, 3.234e-05, 3.234e-05, 3.234e-05, 3.234e-05, 31.34796238], [1516688940000, 3.255e-05, 3.255e-05, 3.255e-05, 3.255e-05, 2345.0], [1516689000000, 3.256e-05, 3.256e-05, 3.236e-05, 3.255e-05, 1582.38049842], [1516689060000, 3.255e-05, 3.255e-05, 3.253e-05, 3.253e-05, 7242.7810113], [1516689120000, 3.255e-05, 3.255e-05, 3.255e-05, 3.255e-05, 2918.90313884], [1516689180000, 3.255e-05, 3.255e-05, 3.253e-05, 3.255e-05, 6350.94004842], [1516689240000, 3.255e-05, 3.255e-05, 3.255e-05, 3.255e-05, 1821.85888656], [1516689300000, 3.255e-05, 3.256e-05, 3.255e-05, 3.256e-05, 15197.43169165], [1516689360000, 3.256e-05, 3.259e-05, 3.256e-05, 3.256e-05, 36967.51889717], [1516689420000, 3.258e-05, 3.258e-05, 3.256e-05, 3.256e-05, 1144.77266169], [1516689480000, 3.256e-05, 3.256e-05, 3.239e-05, 3.239e-05, 3769.40173138], [1516689540000, 3.256e-05, 3.256e-05, 3.238e-05, 3.238e-05, 10580.28357781], [1516689600000, 3.238e-05, 3.238e-05, 3.233e-05, 3.233e-05, 4473.75075356], [1516689660000, 3.235e-05, 3.235e-05, 3.235e-05, 3.235e-05, 4921.05931885], [1516689720000, 3.234e-05, 3.236e-05, 3.233e-05, 3.235e-05, 321.64121975], [1516689780000, 3.255e-05, 3.255e-05, 3.234e-05, 3.234e-05, 9700.45630708], [1516689840000, 3.255e-05, 3.255e-05, 3.234e-05, 3.234e-05, 2902.9651254], [1516689900000, 3.234e-05, 3.255e-05, 3.234e-05, 3.255e-05, 3642.26943836], [1516689960000, 3.254e-05, 3.254e-05, 3.234e-05, 3.234e-05, 5447.77398045], [1516690020000, 3.248e-05, 3.248e-05, 3.234e-05, 3.248e-05, 13868.92450863], [1516690080000, 3.246e-05, 3.246e-05, 3.231e-05, 3.231e-05, 76159.54536279], [1516690140000, 3.23e-05, 3.253e-05, 3.204e-05, 3.206e-05, 12767.25414773], [1516690260000, 3.21e-05, 3.21e-05, 3.207e-05, 3.207e-05, 79.92984218], [1516690320000, 3.253e-05, 3.253e-05, 3.21e-05, 3.249e-05, 7324.06636873], [1516690380000, 3.242e-05, 3.242e-05, 3.241e-05, 3.241e-05, 546.9745254], [1516690440000, 3.241e-05, 3.241e-05, 3.211e-05, 3.212e-05, 635.37152896], [1516690500000, 3.212e-05, 3.212e-05, 3.212e-05, 3.212e-05, 3546.18599888], [1516690560000, 3.212e-05, 3.212e-05, 3.211e-05, 3.211e-05, 4402.55365302], [1516690620000, 3.212e-05, 3.212e-05, 3.205e-05, 3.211e-05, 2471.80676266], [1516690680000, 3.212e-05, 3.212e-05, 3.211e-05, 3.211e-05, 1978.05546174], [1516690740000, 3.211e-05, 3.211e-05, 3.205e-05, 3.205e-05, 9178.39678885], [1516690800000, 3.211e-05, 3.211e-05, 3.2e-05, 3.2e-05, 14302.97721017], [1516690860000, 3.2e-05, 3.211e-05, 3.2e-05, 3.211e-05, 9584.9222647], [1516690920000, 3.201e-05, 3.211e-05, 3.2e-05, 3.211e-05, 3086.60772207], [1516690980000, 3.202e-05, 3.211e-05, 3.2e-05, 3.2e-05, 9765.89853575], [1516691040000, 3.2e-05, 3.2e-05, 3.18e-05, 3.185e-05, 20506.92047326], [1516691100000, 3.185e-05, 3.211e-05, 3.18e-05, 3.209e-05, 51734.4142572], [1516691160000, 3.209e-05, 3.211e-05, 3.209e-05, 3.209e-05, 8630.3173026], [1516691220000, 3.21e-05, 3.21e-05, 3.209e-05, 3.209e-05, 7130.51455836], [1516691280000, 3.209e-05, 3.209e-05, 3.18e-05, 3.181e-05, 27812.28599625], [1516691340000, 3.181e-05, 3.181e-05, 3.18e-05, 3.181e-05, 13475.16457196], [1516691400000, 3.181e-05, 3.183e-05, 3.181e-05, 3.183e-05, 817.62612361], [1516691460000, 3.2e-05, 3.209e-05, 3.18e-05, 3.209e-05, 17522.96080769], [1516691520000, 3.206e-05, 3.206e-05, 3.18e-05, 3.18e-05, 8898.24410145], [1516691580000, 3.204e-05, 3.205e-05, 3.204e-05, 3.204e-05, 3099.31034811], [1516691700000, 3.187e-05, 3.187e-05, 3.18e-05, 3.18e-05, 7441.05801048], [1516691760000, 3.187e-05, 3.187e-05, 3.177e-05, 3.177e-05, 28608.91385456], [1516691820000, 3.185e-05, 3.201e-05, 3.185e-05, 3.199e-05, 589.74524543], [1516691880000, 3.189e-05, 3.192e-05, 3.177e-05, 3.192e-05, 4997.67845891], [1516691940000, 3.192e-05, 3.192e-05, 3.17e-05, 3.17e-05, 1997.57820327], [1516692000000, 3.182e-05, 3.192e-05, 3.18e-05, 3.181e-05, 6183.33640559], [1516692060000, 3.181e-05, 3.19e-05, 3.181e-05, 3.19e-05, 2562.768456], [1516692120000, 3.19e-05, 3.19e-05, 3.181e-05, 3.19e-05, 48808.38631178], [1516692180000, 3.19e-05, 3.192e-05, 3.19e-05, 3.192e-05, 2822.64241825], [1516692240000, 3.192e-05, 3.193e-05, 3.192e-05, 3.193e-05, 32244.75700051], [1516692300000, 3.193e-05, 3.194e-05, 3.193e-05, 3.193e-05, 777.43170709], [1516692360000, 3.194e-05, 3.194e-05, 3.193e-05, 3.193e-05, 815.34360254], [1516692420000, 3.193e-05, 3.194e-05, 3.193e-05, 3.193e-05, 5365.05735816], [1516692480000, 3.193e-05, 3.193e-05, 3.192e-05, 3.193e-05, 2713.34991386], [1516692540000, 3.194e-05, 3.194e-05, 3.19e-05, 3.19e-05, 5008.08000784], [1516692600000, 3.19e-05, 3.19e-05, 3.18e-05, 3.18e-05, 3606.94028595], [1516692660000, 3.181e-05, 3.19e-05, 3.165e-05, 3.165e-05, 34572.49299007], [1516692720000, 3.168e-05, 3.194e-05, 3.165e-05, 3.193e-05, 27263.73496973], [1516692780000, 3.193e-05, 3.193e-05, 3.193e-05, 3.193e-05, 6452.72690417], [1516692900000, 3.19e-05, 3.194e-05, 3.19e-05, 3.194e-05, 16193.07131731], [1516692960000, 3.191e-05, 3.191e-05, 3.177e-05, 3.178e-05, 1722.77989408], [1516693020000, 3.178e-05, 3.193e-05, 3.178e-05, 3.178e-05, 22688.6662679], [1516693080000, 3.177e-05, 3.179e-05, 3.177e-05, 3.178e-05, 2856.02647167], [1516693140000, 3.178e-05, 3.179e-05, 3.178e-05, 3.179e-05, 1159.68229712], [1516693260000, 3.188e-05, 3.188e-05, 3.188e-05, 3.188e-05, 31.28940509], [1516693320000, 3.181e-05, 3.181e-05, 3.18e-05, 3.18e-05, 974.18387817], [1516693380000, 3.181e-05, 3.19e-05, 3.181e-05, 3.19e-05, 1792.74428321], [1516693500000, 3.188e-05, 3.188e-05, 3.188e-05, 3.188e-05, 1178.38542847], [1516693560000, 3.183e-05, 3.193e-05, 3.183e-05, 3.183e-05, 31386.56577678], [1516693620000, 3.182e-05, 3.182e-05, 3.182e-05, 3.182e-05, 18.00247738], [1516693680000, 3.182e-05, 3.182e-05, 3.179e-05, 3.179e-05, 2369.32204687], [1516693740000, 3.179e-05, 3.18e-05, 3.179e-05, 3.18e-05, 3214.53697449], [1516693800000, 3.181e-05, 3.19e-05, 3.18e-05, 3.18e-05, 4626.64451929], [1516693860000, 3.184e-05, 3.194e-05, 3.184e-05, 3.194e-05, 22776.89955334], [1516693920000, 3.193e-05, 3.194e-05, 3.193e-05, 3.194e-05, 9909.47848247], [1516693980000, 3.194e-05, 3.194e-05, 3.194e-05, 3.194e-05, 1946.63294388], [1516694040000, 3.194e-05, 3.211e-05, 3.194e-05, 3.211e-05, 11744.95780501], [1516694100000, 3.194e-05, 3.194e-05, 3.194e-05, 3.194e-05, 2128.41125313], [1516694160000, 3.194e-05, 3.196e-05, 3.194e-05, 3.196e-05, 10773.34240755], [1516694220000, 3.196e-05, 3.196e-05, 3.196e-05, 3.196e-05, 2515.80716375], [1516694280000, 3.211e-05, 3.211e-05, 3.196e-05, 3.196e-05, 11028.52836481], [1516694340000, 3.21e-05, 3.21e-05, 3.205e-05, 3.205e-05, 1720.71784468], [1516694400000, 3.205e-05, 3.211e-05, 3.205e-05, 3.205e-05, 2425.08480189], [1516694460000, 3.205e-05, 3.205e-05, 3.205e-05, 3.205e-05, 277.09707241], [1516694580000, 3.206e-05, 3.206e-05, 3.17e-05, 3.17e-05, 124955.56353479], [1516694640000, 3.17e-05, 3.172e-05, 3.16e-05, 3.171e-05, 44333.32677249], [1516694700000, 3.176e-05, 3.176e-05, 3.16e-05, 3.176e-05, 61419.15435807], [1516694760000, 3.176e-05, 3.176e-05, 3.176e-05, 3.176e-05, 135.6891743], [1516694820000, 3.176e-05, 3.176e-05, 3.176e-05, 3.176e-05, 2701.33503256], [1516694940000, 3.177e-05, 3.177e-05, 3.176e-05, 3.177e-05, 6488.27496285], [1516695000000, 3.177e-05, 3.177e-05, 3.16e-05, 3.16e-05, 25100.7605677], [1516695060000, 3.176e-05, 3.176e-05, 3.172e-05, 3.172e-05, 1462.67389782], [1516695120000, 3.171e-05, 3.171e-05, 3.171e-05, 3.171e-05, 3318.82333617], [1516695180000, 3.171e-05, 3.176e-05, 3.163e-05, 3.176e-05, 12130.63480558], [1516695240000, 3.171e-05, 3.171e-05, 3.163e-05, 3.163e-05, 155.06784117], [1516695300000, 3.176e-05, 3.176e-05, 3.176e-05, 3.176e-05, 618.17215042], [1516695360000, 3.176e-05, 3.187e-05, 3.176e-05, 3.176e-05, 1079.71111483], [1516695420000, 3.172e-05, 3.199e-05, 3.163e-05, 3.199e-05, 18825.72929799], [1516695480000, 3.198e-05, 3.199e-05, 3.182e-05, 3.182e-05, 4821.11676501], [1516695540000, 3.182e-05, 3.182e-05, 3.182e-05, 3.182e-05, 1040.45213803], [1516695600000, 3.182e-05, 3.182e-05, 3.176e-05, 3.182e-05, 1151.19413576], [1516695660000, 3.182e-05, 3.182e-05, 3.182e-05, 3.182e-05, 1118.98305279], [1516695720000, 3.182e-05, 3.182e-05, 3.182e-05, 3.182e-05, 367.59517414], [1516695780000, 3.182e-05, 3.182e-05, 3.16e-05, 3.179e-05, 19471.26706446], [1516695840000, 3.169e-05, 3.179e-05, 3.169e-05, 3.179e-05, 1047.40117874], [1516695900000, 3.179e-05, 3.18e-05, 3.179e-05, 3.18e-05, 2501.71902661], [1516695960000, 3.18e-05, 3.205e-05, 3.18e-05, 3.205e-05, 10357.81119637], [1516696020000, 3.205e-05, 3.228e-05, 3.2e-05, 3.221e-05, 35689.93918394], [1516696080000, 3.222e-05, 3.222e-05, 3.207e-05, 3.222e-05, 7908.29082811], [1516696140000, 3.222e-05, 3.222e-05, 3.222e-05, 3.222e-05, 615.63409268], [1516696200000, 3.222e-05, 3.228e-05, 3.222e-05, 3.228e-05, 7017.81549421], [1516696260000, 3.228e-05, 3.229e-05, 3.228e-05, 3.229e-05, 3208.0441832], [1516696320000, 3.228e-05, 3.238e-05, 3.228e-05, 3.233e-05, 34950.35239185], [1516696380000, 3.229e-05, 3.233e-05, 3.228e-05, 3.228e-05, 2073.34233277], [1516696440000, 3.207e-05, 3.232e-05, 3.201e-05, 3.23e-05, 3815.3668001], [1516696500000, 3.23e-05, 3.239e-05, 3.206e-05, 3.239e-05, 13208.78086557], [1516696620000, 3.238e-05, 3.239e-05, 3.21e-05, 3.211e-05, 2075.94149176], [1516696680000, 3.23e-05, 3.234e-05, 3.23e-05, 3.234e-05, 1186.53609067], [1516696740000, 3.235e-05, 3.235e-05, 3.23e-05, 3.23e-05, 4775.25785581], [1516696800000, 3.235e-05, 3.235e-05, 3.23e-05, 3.23e-05, 6797.22630041], [1516696860000, 3.212e-05, 3.212e-05, 3.212e-05, 3.212e-05, 310.55417186], [1516696920000, 3.212e-05, 3.212e-05, 3.212e-05, 3.212e-05, 191.13959553], [1516696980000, 3.211e-05, 3.211e-05, 3.208e-05, 3.208e-05, 5599.65130153], [1516697040000, 3.208e-05, 3.208e-05, 3.204e-05, 3.204e-05, 94169.88522477], [1516697100000, 3.204e-05, 3.204e-05, 3.189e-05, 3.189e-05, 8570.51335718], [1516697160000, 3.205e-05, 3.205e-05, 3.204e-05, 3.204e-05, 30511.31817969], [1516697220000, 3.204e-05, 3.205e-05, 3.204e-05, 3.205e-05, 13455.14267614], [1516697280000, 3.204e-05, 3.205e-05, 3.204e-05, 3.205e-05, 371.41355502], [1516697340000, 3.204e-05, 3.205e-05, 3.204e-05, 3.204e-05, 5471.40091045], [1516697400000, 3.204e-05, 3.205e-05, 3.192e-05, 3.205e-05, 6639.46386545], [1516697460000, 3.205e-05, 3.205e-05, 3.205e-05, 3.205e-05, 685.2281062], [1516697520000, 3.206e-05, 3.206e-05, 3.206e-05, 3.206e-05, 102.07514284], [1516697580000, 3.208e-05, 3.228e-05, 3.207e-05, 3.208e-05, 404.60649962], [1516697640000, 3.21e-05, 3.21e-05, 3.206e-05, 3.206e-05, 13493.28947197], [1516697700000, 3.206e-05, 3.207e-05, 3.206e-05, 3.207e-05, 516.45681983], [1516697760000, 3.227e-05, 3.227e-05, 3.208e-05, 3.208e-05, 3960.88740945], [1516697820000, 3.208e-05, 3.233e-05, 3.208e-05, 3.233e-05, 7270.64113578], [1516697880000, 3.231e-05, 3.231e-05, 3.231e-05, 3.231e-05, 5132.0025227], [1516697940000, 3.21e-05, 3.212e-05, 3.209e-05, 3.212e-05, 3672.76549955], [1516698000000, 3.231e-05, 3.231e-05, 3.231e-05, 3.231e-05, 60.95017022], [1516698060000, 3.231e-05, 3.231e-05, 3.231e-05, 3.231e-05, 1331.53478557], [1516698120000, 3.232e-05, 3.232e-05, 3.212e-05, 3.229e-05, 16647.95123341], [1516698180000, 3.228e-05, 3.228e-05, 3.212e-05, 3.213e-05, 9160.29170575], [1516698240000, 3.227e-05, 3.227e-05, 3.213e-05, 3.213e-05, 7238.51814096], [1516698300000, 3.227e-05, 3.227e-05, 3.213e-05, 3.213e-05, 1820.31444518], [1516698360000, 3.227e-05, 3.227e-05, 3.227e-05, 3.227e-05, 1104.31366017], [1516698420000, 3.227e-05, 3.227e-05, 3.213e-05, 3.213e-05, 11298.73787434], [1516698480000, 3.227e-05, 3.227e-05, 3.214e-05, 3.227e-05, 4802.11560918], [1516698540000, 3.227e-05, 3.227e-05, 3.227e-05, 3.227e-05, 21532.22588956], [1516698600000, 3.227e-05, 3.227e-05, 3.213e-05, 3.213e-05, 21784.29547037], [1516698720000, 3.213e-05, 3.213e-05, 3.213e-05, 3.213e-05, 240.43782858], [1516698780000, 3.227e-05, 3.227e-05, 3.226e-05, 3.227e-05, 21419.89865743], [1516698840000, 3.213e-05, 3.214e-05, 3.213e-05, 3.213e-05, 31653.02705227], [1516698900000, 3.227e-05, 3.227e-05, 3.227e-05, 3.227e-05, 130.44808568], [1516699020000, 3.214e-05, 3.227e-05, 3.213e-05, 3.213e-05, 9298.34197041], [1516699080000, 3.213e-05, 3.213e-05, 3.213e-05, 3.213e-05, 141.39356956], [1516699140000, 3.214e-05, 3.214e-05, 3.213e-05, 3.213e-05, 2477.65656092], [1516699200000, 3.222e-05, 3.222e-05, 3.222e-05, 3.222e-05, 70.06726457], [1516699260000, 3.217e-05, 3.217e-05, 3.216e-05, 3.216e-05, 432.31446846], [1516699320000, 3.216e-05, 3.219e-05, 3.216e-05, 3.219e-05, 12934.82691847], [1516699380000, 3.219e-05, 3.219e-05, 3.216e-05, 3.216e-05, 988.26109142], [1516699440000, 3.219e-05, 3.219e-05, 3.219e-05, 3.219e-05, 4695.995403], [1516699500000, 3.219e-05, 3.219e-05, 3.219e-05, 3.219e-05, 12663.36320155], [1516699560000, 3.219e-05, 3.22e-05, 3.219e-05, 3.219e-05, 9121.91200317], [1516699620000, 3.219e-05, 3.22e-05, 3.219e-05, 3.22e-05, 1675.63903632], [1516699680000, 3.222e-05, 3.222e-05, 3.222e-05, 3.222e-05, 928.77094972], [1516699740000, 3.222e-05, 3.227e-05, 3.221e-05, 3.227e-05, 6777.347773], [1516699800000, 3.222e-05, 3.223e-05, 3.222e-05, 3.223e-05, 1044.0], [1516699860000, 3.227e-05, 3.227e-05, 3.227e-05, 3.227e-05, 11523.32759761], [1516699920000, 3.227e-05, 3.227e-05, 3.227e-05, 3.227e-05, 2303.3859462], [1516699980000, 3.227e-05, 3.237e-05, 3.227e-05, 3.23e-05, 11213.89434294], [1516700040000, 3.237e-05, 3.24e-05, 3.237e-05, 3.24e-05, 9499.25004393], [1516700100000, 3.24e-05, 3.24e-05, 3.227e-05, 3.24e-05, 31734.41399465], [1516700160000, 3.24e-05, 3.253e-05, 3.24e-05, 3.253e-05, 64880.96039733], [1516700220000, 3.24e-05, 3.253e-05, 3.239e-05, 3.25e-05, 23638.07403592], [1516700280000, 3.25e-05, 3.25e-05, 3.25e-05, 3.25e-05, 4247.09487818], [1516700340000, 3.25e-05, 3.25e-05, 3.231e-05, 3.231e-05, 1711.83356878], [1516700460000, 3.232e-05, 3.247e-05, 3.232e-05, 3.247e-05, 118.34718156], [1516700640000, 3.244e-05, 3.249e-05, 3.239e-05, 3.239e-05, 47366.30214255], [1516700700000, 3.239e-05, 3.239e-05, 3.233e-05, 3.234e-05, 7440.00495341], [1516700760000, 3.234e-05, 3.239e-05, 3.234e-05, 3.239e-05, 3253.73140476], [1516700820000, 3.234e-05, 3.234e-05, 3.234e-05, 3.234e-05, 476.7761385], [1516700880000, 3.237e-05, 3.237e-05, 3.237e-05, 3.237e-05, 2258.01917342], [1516700940000, 3.247e-05, 3.247e-05, 3.247e-05, 3.247e-05, 154.15792644], [1516701000000, 3.246e-05, 3.247e-05, 3.246e-05, 3.247e-05, 10233.83941372], [1516701060000, 3.247e-05, 3.247e-05, 3.247e-05, 3.247e-05, 1801.96261216], [1516701120000, 3.253e-05, 3.256e-05, 3.247e-05, 3.247e-05, 9573.71737037], [1516701180000, 3.247e-05, 3.247e-05, 3.247e-05, 3.247e-05, 10105.50046076], [1516701240000, 3.256e-05, 3.256e-05, 3.247e-05, 3.247e-05, 2875.81409119], [1516701300000, 3.247e-05, 3.247e-05, 3.247e-05, 3.247e-05, 14985.81013258], [1516701360000, 3.247e-05, 3.252e-05, 3.247e-05, 3.248e-05, 967.49547693], [1516701420000, 3.25e-05, 3.25e-05, 3.249e-05, 3.25e-05, 6013.78535525], [1516701480000, 3.249e-05, 3.249e-05, 3.247e-05, 3.247e-05, 20366.47111032], [1516701540000, 3.247e-05, 3.247e-05, 3.239e-05, 3.239e-05, 3221.35179165], [1516701600000, 3.239e-05, 3.246e-05, 3.239e-05, 3.239e-05, 4033.16595955], [1516701660000, 3.239e-05, 3.239e-05, 3.239e-05, 3.239e-05, 1819.83538737], [1516701720000, 3.24e-05, 3.242e-05, 3.24e-05, 3.24e-05, 1121.15286265], [1516701780000, 3.24e-05, 3.241e-05, 3.24e-05, 3.24e-05, 5106.42323138], [1516701840000, 3.241e-05, 3.241e-05, 3.241e-05, 3.241e-05, 5143.07535471], [1516701900000, 3.242e-05, 3.242e-05, 3.24e-05, 3.24e-05, 3644.98787277], [1516701960000, 3.24e-05, 3.24e-05, 3.24e-05, 3.24e-05, 1392.026316], [1516702020000, 3.24e-05, 3.24e-05, 3.24e-05, 3.24e-05, 5979.66174779], [1516702080000, 3.239e-05, 3.239e-05, 3.239e-05, 3.239e-05, 2089.44604045], [1516702140000, 3.238e-05, 3.238e-05, 3.238e-05, 3.238e-05, 37382.01356121], [1516702200000, 3.238e-05, 3.24e-05, 3.238e-05, 3.238e-05, 6133.08667556], [1516702260000, 3.234e-05, 3.24e-05, 3.233e-05, 3.24e-05, 8501.50100299], [1516702320000, 3.24e-05, 3.24e-05, 3.238e-05, 3.238e-05, 2305.77283642], [1516702380000, 3.233e-05, 3.238e-05, 3.233e-05, 3.238e-05, 6183.34970203], [1516702440000, 3.236e-05, 3.238e-05, 3.236e-05, 3.238e-05, 110.00802238], [1516702500000, 3.234e-05, 3.234e-05, 3.234e-05, 3.234e-05, 15.71589419], [1516702560000, 3.234e-05, 3.234e-05, 3.234e-05, 3.234e-05, 3077.93041368], [1516702620000, 3.233e-05, 3.234e-05, 3.233e-05, 3.234e-05, 905.11319932], [1516702680000, 3.233e-05, 3.233e-05, 3.233e-05, 3.233e-05, 8488.26477905], [1516702740000, 3.232e-05, 3.232e-05, 3.232e-05, 3.232e-05, 955.48624497], [1516702800000, 3.233e-05, 3.233e-05, 3.232e-05, 3.232e-05, 4626.31907293], [1516702860000, 3.231e-05, 3.231e-05, 3.231e-05, 3.231e-05, 4000.0], [1516702920000, 3.231e-05, 3.231e-05, 3.231e-05, 3.231e-05, 147.77818942], [1516702980000, 3.23e-05, 3.231e-05, 3.23e-05, 3.23e-05, 10131.09494032], [1516703040000, 3.227e-05, 3.227e-05, 3.22e-05, 3.226e-05, 13213.3108036], [1516703100000, 3.221e-05, 3.221e-05, 3.201e-05, 3.201e-05, 79818.43688875], [1516703160000, 3.202e-05, 3.213e-05, 3.2e-05, 3.213e-05, 13206.49752768], [1516703220000, 3.212e-05, 3.212e-05, 3.201e-05, 3.201e-05, 5133.51531315], [1516703280000, 3.201e-05, 3.21e-05, 3.201e-05, 3.201e-05, 28215.86955269], [1516703340000, 3.2e-05, 3.201e-05, 3.186e-05, 3.186e-05, 5844.89182507], [1516703400000, 3.2e-05, 3.2e-05, 3.186e-05, 3.186e-05, 958.476391], [1516703460000, 3.187e-05, 3.187e-05, 3.187e-05, 3.187e-05, 10301.06255218], [1516703520000, 3.188e-05, 3.195e-05, 3.17e-05, 3.195e-05, 63643.67031899], [1516703580000, 3.195e-05, 3.196e-05, 3.17e-05, 3.196e-05, 12313.28573197], [1516703640000, 3.194e-05, 3.195e-05, 3.173e-05, 3.193e-05, 5948.49598205], [1516703700000, 3.175e-05, 3.192e-05, 3.17e-05, 3.192e-05, 62514.66952768], [1516703760000, 3.176e-05, 3.176e-05, 3.162e-05, 3.166e-05, 26501.15658073], [1516703820000, 3.166e-05, 3.166e-05, 3.16e-05, 3.16e-05, 30084.69425955], [1516703880000, 3.166e-05, 3.166e-05, 3.166e-05, 3.166e-05, 9677.40947984], [1516703940000, 3.19e-05, 3.19e-05, 3.166e-05, 3.166e-05, 110.0], [1516704000000, 3.189e-05, 3.189e-05, 3.189e-05, 3.189e-05, 313.57792411], [1516704060000, 3.188e-05, 3.188e-05, 3.169e-05, 3.169e-05, 3785.02725918], [1516704120000, 3.169e-05, 3.19e-05, 3.166e-05, 3.19e-05, 11174.4363447], [1516704240000, 3.167e-05, 3.169e-05, 3.166e-05, 3.168e-05, 5165.79939729], [1516704300000, 3.168e-05, 3.189e-05, 3.162e-05, 3.168e-05, 8073.09772378], [1516704360000, 3.168e-05, 3.186e-05, 3.168e-05, 3.168e-05, 1960.60562734], [1516704420000, 3.168e-05, 3.168e-05, 3.161e-05, 3.162e-05, 7594.0447623], [1516704480000, 3.162e-05, 3.184e-05, 3.16e-05, 3.184e-05, 20416.93263065], [1516704540000, 3.184e-05, 3.184e-05, 3.165e-05, 3.165e-05, 3317.61692058], [1516704660000, 3.182e-05, 3.182e-05, 3.166e-05, 3.166e-05, 3525.0], [1516704720000, 3.166e-05, 3.171e-05, 3.165e-05, 3.165e-05, 14519.27257716], [1516704780000, 3.165e-05, 3.166e-05, 3.164e-05, 3.166e-05, 2521.22163346], [1516704840000, 3.166e-05, 3.184e-05, 3.166e-05, 3.184e-05, 1089.6863505], [1516704900000, 3.184e-05, 3.184e-05, 3.16e-05, 3.16e-05, 49180.35589338], [1516704960000, 3.184e-05, 3.184e-05, 3.176e-05, 3.176e-05, 605.31240206], [1516705020000, 3.177e-05, 3.183e-05, 3.176e-05, 3.176e-05, 3410.68514553], [1516705080000, 3.16e-05, 3.176e-05, 3.16e-05, 3.176e-05, 317.71307412], [1516705140000, 3.176e-05, 3.176e-05, 3.176e-05, 3.176e-05, 1922.04658379], [1516705200000, 3.176e-05, 3.176e-05, 3.176e-05, 3.176e-05, 88.25833517], [1516705260000, 3.176e-05, 3.176e-05, 3.176e-05, 3.176e-05, 90.0], [1516705320000, 3.176e-05, 3.183e-05, 3.163e-05, 3.163e-05, 1546.2600485], [1516705380000, 3.163e-05, 3.163e-05, 3.163e-05, 3.163e-05, 3110.78609278], [1516705440000, 3.164e-05, 3.164e-05, 3.163e-05, 3.163e-05, 458.99776687], [1516705500000, 3.163e-05, 3.163e-05, 3.16e-05, 3.16e-05, 18152.50524461], [1516705560000, 3.161e-05, 3.161e-05, 3.16e-05, 3.16e-05, 58009.24943983], [1516705620000, 3.16e-05, 3.177e-05, 3.16e-05, 3.177e-05, 1864.91448795], [1516705680000, 3.177e-05, 3.177e-05, 3.16e-05, 3.16e-05, 359.96407652], [1516705740000, 3.16e-05, 3.16e-05, 3.152e-05, 3.158e-05, 11718.99543175], [1516705800000, 3.158e-05, 3.159e-05, 3.152e-05, 3.157e-05, 3078.12149299], [1516705860000, 3.157e-05, 3.158e-05, 3.157e-05, 3.158e-05, 2539.80688529], [1516705920000, 3.158e-05, 3.159e-05, 3.158e-05, 3.159e-05, 3302.58856523], [1516705980000, 3.159e-05, 3.16e-05, 3.158e-05, 3.16e-05, 1810.33974151], [1516706040000, 3.158e-05, 3.181e-05, 3.158e-05, 3.181e-05, 6941.22202206], [1516706100000, 3.16e-05, 3.174e-05, 3.16e-05, 3.174e-05, 2451.15106365], [1516706160000, 3.16e-05, 3.16e-05, 3.158e-05, 3.158e-05, 3440.50089869], [1516706220000, 3.158e-05, 3.16e-05, 3.154e-05, 3.16e-05, 4757.70227375], [1516706280000, 3.16e-05, 3.16e-05, 3.16e-05, 3.16e-05, 342.95407358], [1516706400000, 3.154e-05, 3.154e-05, 3.118e-05, 3.143e-05, 75051.10379107], [1516706460000, 3.137e-05, 3.145e-05, 3.131e-05, 3.145e-05, 7403.4617933], [1516706520000, 3.145e-05, 3.183e-05, 3.145e-05, 3.183e-05, 12668.92921896], [1516706580000, 3.176e-05, 3.179e-05, 3.155e-05, 3.179e-05, 6517.32913228], [1516706700000, 3.164e-05, 3.179e-05, 3.163e-05, 3.164e-05, 4825.51091405], [1516706760000, 3.178e-05, 3.178e-05, 3.178e-05, 3.178e-05, 78.74606671], [1516706820000, 3.178e-05, 3.179e-05, 3.178e-05, 3.179e-05, 3602.53127635], [1516706880000, 3.166e-05, 3.184e-05, 3.157e-05, 3.157e-05, 61048.7896687], [1516706940000, 3.156e-05, 3.156e-05, 3.139e-05, 3.141e-05, 164235.92728063], [1516707000000, 3.157e-05, 3.158e-05, 3.125e-05, 3.125e-05, 9198.85791655], [1516707060000, 3.167e-05, 3.168e-05, 3.167e-05, 3.168e-05, 1158.78291991], [1516707120000, 3.161e-05, 3.161e-05, 3.143e-05, 3.15e-05, 7730.85278234], [1516707180000, 3.15e-05, 3.157e-05, 3.15e-05, 3.154e-05, 13129.61392725], [1516707240000, 3.142e-05, 3.154e-05, 3.1e-05, 3.13e-05, 77190.23271828], [1516707300000, 3.13e-05, 3.154e-05, 3.13e-05, 3.149e-05, 10775.96982411], [1516707360000, 3.131e-05, 3.147e-05, 3.13e-05, 3.146e-05, 9555.19257683], [1516707420000, 3.145e-05, 3.145e-05, 3.13e-05, 3.13e-05, 8951.26391342], [1516707480000, 3.138e-05, 3.147e-05, 3.136e-05, 3.136e-05, 11500.79656586], [1516707540000, 3.136e-05, 3.136e-05, 3.131e-05, 3.131e-05, 3829.19917927], [1516707600000, 3.131e-05, 3.131e-05, 3.131e-05, 3.131e-05, 2705.53424587], [1516707660000, 3.131e-05, 3.136e-05, 3.131e-05, 3.136e-05, 12745.23903067], [1516707720000, 3.137e-05, 3.137e-05, 3.136e-05, 3.136e-05, 18910.81478643], [1516707780000, 3.132e-05, 3.132e-05, 3.13e-05, 3.13e-05, 9939.10359306], [1516707840000, 3.131e-05, 3.131e-05, 3.106e-05, 3.131e-05, 44969.38415202], [1516707900000, 3.13e-05, 3.131e-05, 3.105e-05, 3.131e-05, 69394.45579187], [1516707960000, 3.13e-05, 3.131e-05, 3.102e-05, 3.13e-05, 42429.88308647], [1516708020000, 3.105e-05, 3.129e-05, 3.104e-05, 3.127e-05, 80970.40550962], [1516708080000, 3.104e-05, 3.125e-05, 3.09e-05, 3.099e-05, 113149.51386759], [1516708140000, 3.099e-05, 3.121e-05, 3.071e-05, 3.091e-05, 31746.56166603], [1516708200000, 3.091e-05, 3.099e-05, 3.072e-05, 3.097e-05, 15295.121504], [1516708260000, 3.098e-05, 3.098e-05, 3.095e-05, 3.096e-05, 12800.67751723], [1516708320000, 3.095e-05, 3.095e-05, 3.08e-05, 3.086e-05, 3535.10014719], [1516708380000, 3.086e-05, 3.086e-05, 3.081e-05, 3.081e-05, 18000.60992823], [1516708440000, 3.078e-05, 3.078e-05, 3.074e-05, 3.074e-05, 28982.00961954], [1516708500000, 3.074e-05, 3.078e-05, 3.074e-05, 3.078e-05, 26623.54510768], [1516708560000, 3.075e-05, 3.078e-05, 3.075e-05, 3.075e-05, 21217.94161787], [1516708620000, 3.075e-05, 3.075e-05, 3.074e-05, 3.075e-05, 29094.05211954], [1516708680000, 3.075e-05, 3.087e-05, 3.075e-05, 3.075e-05, 34247.49652939], [1516708740000, 3.075e-05, 3.123e-05, 3.074e-05, 3.123e-05, 45021.73642534], [1516708800000, 3.126e-05, 3.134e-05, 3.081e-05, 3.097e-05, 21983.36853403], [1516708860000, 3.112e-05, 3.112e-05, 3.112e-05, 3.112e-05, 310.35165137], [1516708920000, 3.126e-05, 3.136e-05, 3.123e-05, 3.126e-05, 1680.0701399], [1516708980000, 3.125e-05, 3.136e-05, 3.114e-05, 3.136e-05, 12571.95171308], [1516709040000, 3.136e-05, 3.137e-05, 3.136e-05, 3.136e-05, 4591.51585016], [1516709100000, 3.121e-05, 3.121e-05, 3.116e-05, 3.117e-05, 5854.39184048], [1516709160000, 3.117e-05, 3.117e-05, 3.116e-05, 3.116e-05, 15630.17787481], [1516709220000, 3.117e-05, 3.137e-05, 3.116e-05, 3.117e-05, 10809.70796681], [1516709280000, 3.117e-05, 3.118e-05, 3.117e-05, 3.118e-05, 7625.70284636], [1516709340000, 3.119e-05, 3.119e-05, 3.119e-05, 3.119e-05, 500.0], [1516709400000, 3.127e-05, 3.139e-05, 3.117e-05, 3.118e-05, 14490.25639543], [1516709460000, 3.118e-05, 3.119e-05, 3.118e-05, 3.119e-05, 592.18134456], [1516709520000, 3.135e-05, 3.135e-05, 3.119e-05, 3.119e-05, 10424.73370931], [1516709580000, 3.119e-05, 3.135e-05, 3.119e-05, 3.119e-05, 880.92681819], [1516709640000, 3.119e-05, 3.134e-05, 3.119e-05, 3.134e-05, 15971.91252152], [1516709700000, 3.119e-05, 3.134e-05, 3.119e-05, 3.134e-05, 4897.18615051], [1516709760000, 3.12e-05, 3.139e-05, 3.114e-05, 3.138e-05, 21025.79903516], [1516709820000, 3.137e-05, 3.14e-05, 3.135e-05, 3.135e-05, 21223.238531], [1516709880000, 3.116e-05, 3.116e-05, 3.116e-05, 3.116e-05, 248.27600435], [1516709940000, 3.117e-05, 3.135e-05, 3.116e-05, 3.135e-05, 849.79061008], [1516710000000, 3.134e-05, 3.134e-05, 3.118e-05, 3.118e-05, 843.21154545], [1516710060000, 3.118e-05, 3.133e-05, 3.118e-05, 3.133e-05, 2164.22468658], [1516710120000, 3.133e-05, 3.133e-05, 3.133e-05, 3.133e-05, 761.36985125], [1516710180000, 3.133e-05, 3.133e-05, 3.121e-05, 3.121e-05, 1734.5991529], [1516710240000, 3.13e-05, 3.13e-05, 3.127e-05, 3.13e-05, 265.35947712], [1516710300000, 3.13e-05, 3.134e-05, 3.125e-05, 3.125e-05, 68560.79495926], [1516710360000, 3.13e-05, 3.134e-05, 3.13e-05, 3.131e-05, 2234.01271426], [1516710420000, 3.131e-05, 3.134e-05, 3.131e-05, 3.134e-05, 27147.93365976], [1516710480000, 3.134e-05, 3.14e-05, 3.134e-05, 3.14e-05, 15595.99163445], [1516710540000, 3.15e-05, 3.16e-05, 3.14e-05, 3.16e-05, 9708.17247971], [1516710600000, 3.156e-05, 3.156e-05, 3.144e-05, 3.144e-05, 2810.61430711], [1516710660000, 3.144e-05, 3.16e-05, 3.143e-05, 3.16e-05, 6359.66683589], [1516710720000, 3.16e-05, 3.167e-05, 3.144e-05, 3.165e-05, 18317.78479586], [1516710780000, 3.168e-05, 3.171e-05, 3.168e-05, 3.171e-05, 5640.416003], [1516710840000, 3.169e-05, 3.171e-05, 3.151e-05, 3.152e-05, 6273.7837663], [1516710900000, 3.153e-05, 3.155e-05, 3.152e-05, 3.153e-05, 2218.47772587], [1516710960000, 3.153e-05, 3.155e-05, 3.153e-05, 3.155e-05, 2524.51905003], [1516711020000, 3.155e-05, 3.171e-05, 3.155e-05, 3.155e-05, 8146.38827916], [1516711080000, 3.157e-05, 3.157e-05, 3.156e-05, 3.156e-05, 150.87136439], [1516711140000, 3.171e-05, 3.171e-05, 3.171e-05, 3.171e-05, 4239.59221066], [1516711200000, 3.171e-05, 3.175e-05, 3.171e-05, 3.173e-05, 4337.95036536], [1516711260000, 3.173e-05, 3.175e-05, 3.173e-05, 3.173e-05, 3685.19339637], [1516711320000, 3.175e-05, 3.175e-05, 3.173e-05, 3.173e-05, 1061.95643473], [1516711380000, 3.174e-05, 3.174e-05, 3.173e-05, 3.174e-05, 3022.76802886], [1516711440000, 3.174e-05, 3.177e-05, 3.174e-05, 3.174e-05, 10087.74661794], [1516711500000, 3.174e-05, 3.175e-05, 3.174e-05, 3.174e-05, 5986.44483371], [1516711560000, 3.18e-05, 3.18e-05, 3.174e-05, 3.18e-05, 394.43353192], [1516711620000, 3.18e-05, 3.18e-05, 3.174e-05, 3.174e-05, 4744.65457182], [1516711680000, 3.18e-05, 3.18e-05, 3.18e-05, 3.18e-05, 127.59688827], [1516711740000, 3.18e-05, 3.181e-05, 3.18e-05, 3.181e-05, 10495.73608308], [1516711800000, 3.18e-05, 3.184e-05, 3.18e-05, 3.18e-05, 15433.06028966], [1516711860000, 3.179e-05, 3.187e-05, 3.179e-05, 3.187e-05, 71766.22278562], [1516711920000, 3.187e-05, 3.187e-05, 3.18e-05, 3.18e-05, 5889.75492229], [1516711980000, 3.18e-05, 3.18e-05, 3.18e-05, 3.18e-05, 6529.24593906], [1516712040000, 3.18e-05, 3.18e-05, 3.15e-05, 3.173e-05, 37076.79555822], [1516712100000, 3.173e-05, 3.173e-05, 3.155e-05, 3.155e-05, 974.42987589], [1516712160000, 3.153e-05, 3.153e-05, 3.15e-05, 3.151e-05, 5083.1358486], [1516712220000, 3.15e-05, 3.172e-05, 3.15e-05, 3.172e-05, 3032.64464966], [1516712280000, 3.151e-05, 3.171e-05, 3.15e-05, 3.171e-05, 4356.43031572], [1516712340000, 3.169e-05, 3.174e-05, 3.169e-05, 3.174e-05, 7254.96949311], [1516712400000, 3.155e-05, 3.19e-05, 3.155e-05, 3.19e-05, 7437.95158126], [1516712460000, 3.189e-05, 3.189e-05, 3.189e-05, 3.189e-05, 117.27598119], [1516712520000, 3.189e-05, 3.19e-05, 3.189e-05, 3.19e-05, 10629.21287702], [1516712580000, 3.19e-05, 3.193e-05, 3.189e-05, 3.193e-05, 6608.48355639], [1516712640000, 3.194e-05, 3.194e-05, 3.193e-05, 3.193e-05, 5285.57505185], [1516712700000, 3.193e-05, 3.2e-05, 3.193e-05, 3.193e-05, 26290.57850912], [1516712760000, 3.2e-05, 3.201e-05, 3.2e-05, 3.201e-05, 18839.36718397], [1516712820000, 3.201e-05, 3.208e-05, 3.201e-05, 3.203e-05, 7238.66838005], [1516712880000, 3.203e-05, 3.203e-05, 3.203e-05, 3.203e-05, 2758.53965994], [1516712940000, 3.203e-05, 3.203e-05, 3.2e-05, 3.203e-05, 9790.76281645], [1516713000000, 3.203e-05, 3.203e-05, 3.2e-05, 3.2e-05, 23326.0109986], [1516713060000, 3.2e-05, 3.219e-05, 3.2e-05, 3.21e-05, 34404.14825854], [1516713120000, 3.21e-05, 3.21e-05, 3.2e-05, 3.203e-05, 19670.88268082], [1516713180000, 3.203e-05, 3.205e-05, 3.203e-05, 3.205e-05, 4456.64489567], [1516713240000, 3.205e-05, 3.205e-05, 3.203e-05, 3.203e-05, 6047.10026201], [1516713300000, 3.205e-05, 3.205e-05, 3.174e-05, 3.174e-05, 2185.52607461], [1516713360000, 3.185e-05, 3.185e-05, 3.185e-05, 3.185e-05, 16.19599551], [1516713420000, 3.185e-05, 3.205e-05, 3.185e-05, 3.19e-05, 4654.20645517], [1516713540000, 3.191e-05, 3.215e-05, 3.19e-05, 3.215e-05, 15657.12978313], [1516713600000, 3.215e-05, 3.215e-05, 3.207e-05, 3.207e-05, 1305.9963194], [1516713660000, 3.207e-05, 3.215e-05, 3.207e-05, 3.214e-05, 1224.93529438], [1516713720000, 3.214e-05, 3.214e-05, 3.193e-05, 3.193e-05, 2203.70289376], [1516713780000, 3.194e-05, 3.2e-05, 3.194e-05, 3.2e-05, 2092.87355748], [1516713840000, 3.199e-05, 3.199e-05, 3.194e-05, 3.194e-05, 270.00815855], [1516713900000, 3.194e-05, 3.199e-05, 3.194e-05, 3.199e-05, 4968.03213078], [1516714020000, 3.194e-05, 3.2e-05, 3.194e-05, 3.2e-05, 6321.06357675], [1516714080000, 3.197e-05, 3.2e-05, 3.197e-05, 3.2e-05, 9644.18874358], [1516714140000, 3.203e-05, 3.204e-05, 3.203e-05, 3.204e-05, 145.59993128], [1516714200000, 3.219e-05, 3.238e-05, 3.21e-05, 3.237e-05, 11992.81274804], [1516714260000, 3.238e-05, 3.238e-05, 3.228e-05, 3.228e-05, 30469.75324492], [1516714320000, 3.228e-05, 3.238e-05, 3.228e-05, 3.238e-05, 1389.90285031], [1516714380000, 3.231e-05, 3.237e-05, 3.228e-05, 3.232e-05, 7490.42033744], [1516714440000, 3.236e-05, 3.237e-05, 3.232e-05, 3.237e-05, 10692.77467118], [1516714500000, 3.237e-05, 3.237e-05, 3.237e-05, 3.237e-05, 2838.68531781], [1516714560000, 3.237e-05, 3.238e-05, 3.237e-05, 3.238e-05, 1013.92574295], [1516714620000, 3.237e-05, 3.238e-05, 3.231e-05, 3.231e-05, 9448.56624125], [1516714680000, 3.231e-05, 3.236e-05, 3.21e-05, 3.21e-05, 6254.15750009], [1516714740000, 3.219e-05, 3.219e-05, 3.21e-05, 3.211e-05, 3042.19862625], [1516714800000, 3.211e-05, 3.211e-05, 3.205e-05, 3.205e-05, 11574.43934728], [1516714860000, 3.205e-05, 3.205e-05, 3.205e-05, 3.205e-05, 202.98266006], [1516714920000, 3.205e-05, 3.206e-05, 3.205e-05, 3.206e-05, 2884.07306913], [1516714980000, 3.228e-05, 3.228e-05, 3.206e-05, 3.206e-05, 9495.58512575], [1516715040000, 3.205e-05, 3.205e-05, 3.203e-05, 3.203e-05, 9355.13472827], [1516715100000, 3.203e-05, 3.203e-05, 3.196e-05, 3.196e-05, 5622.4635575], [1516715160000, 3.196e-05, 3.205e-05, 3.196e-05, 3.205e-05, 6451.73267222], [1516715220000, 3.205e-05, 3.206e-05, 3.205e-05, 3.205e-05, 6112.20649275], [1516715280000, 3.205e-05, 3.227e-05, 3.205e-05, 3.227e-05, 11571.39243507], [1516715340000, 3.207e-05, 3.256e-05, 3.207e-05, 3.256e-05, 25033.80860676], [1516715400000, 3.23e-05, 3.256e-05, 3.23e-05, 3.256e-05, 12089.02551896], [1516715460000, 3.256e-05, 3.256e-05, 3.225e-05, 3.252e-05, 19062.18926983], [1516715520000, 3.226e-05, 3.255e-05, 3.22e-05, 3.254e-05, 13958.23044857], [1516715580000, 3.252e-05, 3.258e-05, 3.252e-05, 3.252e-05, 29734.32054863], [1516715640000, 3.252e-05, 3.255e-05, 3.251e-05, 3.255e-05, 8551.64661056], [1516715700000, 3.255e-05, 3.255e-05, 3.255e-05, 3.255e-05, 11191.79291552], [1516715760000, 3.255e-05, 3.255e-05, 3.218e-05, 3.218e-05, 10635.99264565], [1516715820000, 3.218e-05, 3.223e-05, 3.218e-05, 3.223e-05, 3544.35410504], [1516715880000, 3.223e-05, 3.25e-05, 3.223e-05, 3.223e-05, 857.45918619], [1516715940000, 3.25e-05, 3.25e-05, 3.223e-05, 3.25e-05, 6363.28960971], [1516716000000, 3.25e-05, 3.25e-05, 3.25e-05, 3.25e-05, 963.28046657], [1516716060000, 3.256e-05, 3.258e-05, 3.253e-05, 3.253e-05, 1130.76335684], [1516716120000, 3.253e-05, 3.258e-05, 3.253e-05, 3.258e-05, 6466.28139436], [1516716180000, 3.258e-05, 3.258e-05, 3.254e-05, 3.257e-05, 8582.50327922], [1516716240000, 3.258e-05, 3.258e-05, 3.254e-05, 3.254e-05, 5728.77131164], [1516716300000, 3.258e-05, 3.258e-05, 3.254e-05, 3.254e-05, 14678.28793019], [1516716360000, 3.254e-05, 3.27e-05, 3.254e-05, 3.27e-05, 35933.24708405], [1516716420000, 3.221e-05, 3.249e-05, 3.219e-05, 3.249e-05, 1301.66729619], [1516716480000, 3.219e-05, 3.249e-05, 3.219e-05, 3.249e-05, 6190.88864444], [1516716540000, 3.249e-05, 3.249e-05, 3.22e-05, 3.22e-05, 3085.57860279], [1516716600000, 3.22e-05, 3.22e-05, 3.22e-05, 3.22e-05, 11108.04700147], [1516716660000, 3.246e-05, 3.246e-05, 3.22e-05, 3.241e-05, 4775.07396063], [1516716720000, 3.24e-05, 3.24e-05, 3.22e-05, 3.22e-05, 3216.21758544], [1516716780000, 3.219e-05, 3.22e-05, 3.218e-05, 3.22e-05, 4132.71260575], [1516716840000, 3.22e-05, 3.22e-05, 3.218e-05, 3.22e-05, 2613.82355034], [1516716900000, 3.22e-05, 3.22e-05, 3.211e-05, 3.211e-05, 1431.688564], [1516716960000, 3.211e-05, 3.211e-05, 3.211e-05, 3.211e-05, 19915.05343717], [1516717020000, 3.211e-05, 3.219e-05, 3.21e-05, 3.21e-05, 5613.08899731], [1516717080000, 3.21e-05, 3.21e-05, 3.196e-05, 3.196e-05, 1706.27660647], [1516717140000, 3.196e-05, 3.196e-05, 3.18e-05, 3.196e-05, 7577.79769841], [1516717200000, 3.18e-05, 3.18e-05, 3.175e-05, 3.175e-05, 4365.71253843], [1516717260000, 3.175e-05, 3.196e-05, 3.175e-05, 3.196e-05, 140.29376315], [1516717320000, 3.181e-05, 3.192e-05, 3.176e-05, 3.192e-05, 1216.50088528], [1516717440000, 3.192e-05, 3.192e-05, 3.191e-05, 3.192e-05, 548.40399451], [1516717500000, 3.19e-05, 3.192e-05, 3.19e-05, 3.19e-05, 4600.87328817], [1516717560000, 3.19e-05, 3.19e-05, 3.15e-05, 3.15e-05, 36740.12406496], [1516717620000, 3.168e-05, 3.188e-05, 3.168e-05, 3.188e-05, 23196.16360205], [1516717680000, 3.187e-05, 3.192e-05, 3.187e-05, 3.191e-05, 34159.49942308], [1516717800000, 3.195e-05, 3.196e-05, 3.19e-05, 3.19e-05, 16881.94022819], [1516717860000, 3.19e-05, 3.19e-05, 3.19e-05, 3.19e-05, 4773.78927633], [1516717920000, 3.19e-05, 3.195e-05, 3.19e-05, 3.195e-05, 4813.82085473], [1516717980000, 3.195e-05, 3.196e-05, 3.19e-05, 3.19e-05, 3658.75306664], [1516718040000, 3.195e-05, 3.195e-05, 3.189e-05, 3.19e-05, 414.23256976], [1516718100000, 3.189e-05, 3.189e-05, 3.167e-05, 3.167e-05, 14320.7143261], [1516718160000, 3.17e-05, 3.191e-05, 3.162e-05, 3.191e-05, 13867.35475705], [1516718220000, 3.191e-05, 3.191e-05, 3.191e-05, 3.191e-05, 67.41375597], [1516718400000, 3.167e-05, 3.188e-05, 3.162e-05, 3.188e-05, 47585.37569216], [1516718460000, 3.189e-05, 3.191e-05, 3.186e-05, 3.191e-05, 9244.14710782], [1516718520000, 3.191e-05, 3.191e-05, 3.186e-05, 3.186e-05, 191.33813851], [1516718580000, 3.186e-05, 3.186e-05, 3.178e-05, 3.178e-05, 1260.67053102], [1516718640000, 3.19e-05, 3.19e-05, 3.19e-05, 3.19e-05, 747.11485377], [1516718700000, 3.168e-05, 3.168e-05, 3.168e-05, 3.168e-05, 150.0], [1516718760000, 3.191e-05, 3.208e-05, 3.188e-05, 3.188e-05, 12372.18056671], [1516718820000, 3.172e-05, 3.193e-05, 3.169e-05, 3.193e-05, 17548.2041092], [1516718880000, 3.188e-05, 3.193e-05, 3.159e-05, 3.17e-05, 50004.72894033], [1516718940000, 3.17e-05, 3.17e-05, 3.159e-05, 3.159e-05, 4301.8710823], [1516719000000, 3.189e-05, 3.189e-05, 3.159e-05, 3.159e-05, 999.98117224], [1516719060000, 3.159e-05, 3.192e-05, 3.159e-05, 3.192e-05, 5376.29813805], [1516719120000, 3.192e-05, 3.192e-05, 3.131e-05, 3.15e-05, 175281.04745567], [1516719180000, 3.149e-05, 3.15e-05, 3.149e-05, 3.15e-05, 55878.85999823], [1516719240000, 3.15e-05, 3.15e-05, 3.145e-05, 3.15e-05, 4401.12292428], [1516719300000, 3.15e-05, 3.183e-05, 3.125e-05, 3.126e-05, 63556.09665513], [1516719360000, 3.126e-05, 3.171e-05, 3.117e-05, 3.171e-05, 74122.83863623], [1516719420000, 3.153e-05, 3.184e-05, 3.118e-05, 3.147e-05, 2437.63983655], [1516719480000, 3.147e-05, 3.166e-05, 3.147e-05, 3.147e-05, 2210.11342404], [1516719540000, 3.166e-05, 3.177e-05, 3.147e-05, 3.176e-05, 7205.26441064], [1516719600000, 3.176e-05, 3.177e-05, 3.176e-05, 3.177e-05, 3483.73562559], [1516719660000, 3.177e-05, 3.178e-05, 3.15e-05, 3.15e-05, 6493.16548421], [1516719720000, 3.153e-05, 3.176e-05, 3.15e-05, 3.176e-05, 11028.93013339], [1516719780000, 3.175e-05, 3.175e-05, 3.175e-05, 3.175e-05, 1022.88188976], [1516719840000, 3.175e-05, 3.175e-05, 3.175e-05, 3.175e-05, 426.80951792], [1516719900000, 3.176e-05, 3.176e-05, 3.162e-05, 3.175e-05, 13206.92105781], [1516719960000, 3.175e-05, 3.181e-05, 3.175e-05, 3.176e-05, 448.94177232], [1516720020000, 3.176e-05, 3.189e-05, 3.175e-05, 3.189e-05, 12294.29707742], [1516720080000, 3.177e-05, 3.177e-05, 3.176e-05, 3.176e-05, 5096.12558334], [1516720140000, 3.177e-05, 3.177e-05, 3.176e-05, 3.176e-05, 3844.0], [1516720200000, 3.189e-05, 3.189e-05, 3.176e-05, 3.176e-05, 4541.52390221], [1516720260000, 3.177e-05, 3.189e-05, 3.177e-05, 3.189e-05, 426.2999953], [1516720320000, 3.188e-05, 3.188e-05, 3.188e-05, 3.188e-05, 78.0], [1516720380000, 3.188e-05, 3.188e-05, 3.179e-05, 3.188e-05, 3673.31109398], [1516720440000, 3.188e-05, 3.188e-05, 3.188e-05, 3.188e-05, 548.34990256], [1516720500000, 3.188e-05, 3.194e-05, 3.188e-05, 3.194e-05, 53481.3200714], [1516720560000, 3.194e-05, 3.2e-05, 3.192e-05, 3.192e-05, 9346.64715526], [1516720620000, 3.195e-05, 3.208e-05, 3.195e-05, 3.208e-05, 16121.40583154], [1516720680000, 3.208e-05, 3.225e-05, 3.201e-05, 3.22e-05, 3607.95348417], [1516720740000, 3.227e-05, 3.236e-05, 3.212e-05, 3.236e-05, 12772.06911193], [1516720800000, 3.236e-05, 3.236e-05, 3.207e-05, 3.236e-05, 7292.50771975], [1516720860000, 3.236e-05, 3.239e-05, 3.236e-05, 3.237e-05, 13211.50090709], [1516720920000, 3.239e-05, 3.25e-05, 3.21e-05, 3.21e-05, 21410.09299044], [1516720980000, 3.21e-05, 3.222e-05, 3.207e-05, 3.207e-05, 5108.62718215], [1516721040000, 3.21e-05, 3.211e-05, 3.179e-05, 3.21e-05, 48162.51456104], [1516721100000, 3.21e-05, 3.21e-05, 3.21e-05, 3.21e-05, 1649.9081772], [1516721160000, 3.213e-05, 3.234e-05, 3.213e-05, 3.234e-05, 2000.0], [1516721220000, 3.229e-05, 3.232e-05, 3.21e-05, 3.232e-05, 7044.10019874], [1516721280000, 3.231e-05, 3.231e-05, 3.231e-05, 3.231e-05, 1502.5538173], [1516721340000, 3.231e-05, 3.231e-05, 3.21e-05, 3.231e-05, 2535.08255604], [1516721400000, 3.231e-05, 3.231e-05, 3.21e-05, 3.225e-05, 13343.30765364], [1516721460000, 3.225e-05, 3.225e-05, 3.225e-05, 3.225e-05, 2880.62574686], [1516721520000, 3.225e-05, 3.232e-05, 3.225e-05, 3.232e-05, 8576.60851509], [1516721580000, 3.232e-05, 3.232e-05, 3.232e-05, 3.232e-05, 1090.67627959], [1516721640000, 3.212e-05, 3.232e-05, 3.211e-05, 3.211e-05, 7989.02053563], [1516721700000, 3.221e-05, 3.221e-05, 3.221e-05, 3.221e-05, 31.24021297], [1516721760000, 3.231e-05, 3.232e-05, 3.231e-05, 3.232e-05, 17498.57882382], [1516721820000, 3.232e-05, 3.235e-05, 3.232e-05, 3.235e-05, 74484.82176421], [1516721880000, 3.235e-05, 3.24e-05, 3.235e-05, 3.24e-05, 26950.05299653], [1516721940000, 3.24e-05, 3.24e-05, 3.237e-05, 3.237e-05, 17750.97739651], [1516722000000, 3.25e-05, 3.255e-05, 3.237e-05, 3.25e-05, 11549.24415452], [1516722060000, 3.251e-05, 3.27e-05, 3.251e-05, 3.255e-05, 28605.45421807], [1516722120000, 3.255e-05, 3.256e-05, 3.255e-05, 3.256e-05, 928.71031571], [1516722180000, 3.256e-05, 3.256e-05, 3.25e-05, 3.251e-05, 10658.97963728], [1516722240000, 3.25e-05, 3.274e-05, 3.237e-05, 3.27e-05, 103146.29702156], [1516722300000, 3.27e-05, 3.27e-05, 3.238e-05, 3.25e-05, 22610.21096449], [1516722360000, 3.25e-05, 3.25e-05, 3.24e-05, 3.25e-05, 10502.08410255], [1516722420000, 3.25e-05, 3.268e-05, 3.239e-05, 3.268e-05, 1010.43271239], [1516722480000, 3.242e-05, 3.25e-05, 3.242e-05, 3.244e-05, 2360.88921972], [1516722540000, 3.243e-05, 3.243e-05, 3.243e-05, 3.243e-05, 879.7321069], [1516722600000, 3.244e-05, 3.27e-05, 3.243e-05, 3.243e-05, 7438.17451118], [1516722660000, 3.243e-05, 3.259e-05, 3.243e-05, 3.259e-05, 2025.09355726], [1516722720000, 3.243e-05, 3.243e-05, 3.243e-05, 3.243e-05, 56847.70641422], [1516722780000, 3.245e-05, 3.259e-05, 3.243e-05, 3.243e-05, 2794.76954699], [1516722840000, 3.243e-05, 3.243e-05, 3.243e-05, 3.243e-05, 1464.4809879], [1516722960000, 3.251e-05, 3.257e-05, 3.243e-05, 3.243e-05, 1398.24711595], [1516723020000, 3.243e-05, 3.243e-05, 3.243e-05, 3.243e-05, 907.76567798], [1516723080000, 3.243e-05, 3.257e-05, 3.243e-05, 3.257e-05, 208.73099307], [1516723140000, 3.257e-05, 3.258e-05, 3.244e-05, 3.244e-05, 40263.82096038], [1516723200000, 3.244e-05, 3.247e-05, 3.243e-05, 3.243e-05, 15073.35496301], [1516723260000, 3.247e-05, 3.256e-05, 3.247e-05, 3.256e-05, 2006.001003], [1516723320000, 3.238e-05, 3.238e-05, 3.238e-05, 3.238e-05, 10566.70304593], [1516723380000, 3.237e-05, 3.237e-05, 3.225e-05, 3.237e-05, 1270.49470381], [1516723440000, 3.225e-05, 3.247e-05, 3.207e-05, 3.237e-05, 43744.57582306], [1516723500000, 3.236e-05, 3.236e-05, 3.235e-05, 3.235e-05, 1175.0743833], [1516723560000, 3.23e-05, 3.23e-05, 3.23e-05, 3.23e-05, 500.0], [1516723620000, 3.229e-05, 3.237e-05, 3.225e-05, 3.237e-05, 26596.8652953], [1516723680000, 3.235e-05, 3.237e-05, 3.235e-05, 3.237e-05, 4617.156988], [1516723740000, 3.207e-05, 3.207e-05, 3.2e-05, 3.2e-05, 62055.60646319], [1516723800000, 3.197e-05, 3.233e-05, 3.197e-05, 3.232e-05, 13052.21572557], [1516723920000, 3.232e-05, 3.232e-05, 3.232e-05, 3.232e-05, 2573.58892372], [1516723980000, 3.231e-05, 3.231e-05, 3.206e-05, 3.206e-05, 4927.42695219], [1516724040000, 3.207e-05, 3.207e-05, 3.206e-05, 3.206e-05, 5656.29314165], [1516724100000, 3.209e-05, 3.209e-05, 3.209e-05, 3.209e-05, 2130.93040665], [1516724160000, 3.209e-05, 3.209e-05, 3.209e-05, 3.209e-05, 4961.71232918], [1516724220000, 3.228e-05, 3.228e-05, 3.22e-05, 3.228e-05, 1339.67506468], [1516724280000, 3.228e-05, 3.228e-05, 3.215e-05, 3.215e-05, 3907.32453453], [1516724340000, 3.215e-05, 3.227e-05, 3.215e-05, 3.227e-05, 2427.56964671], [1516724400000, 3.227e-05, 3.227e-05, 3.211e-05, 3.211e-05, 2821.45516193], [1516724460000, 3.211e-05, 3.227e-05, 3.208e-05, 3.208e-05, 16543.28444281], [1516724520000, 3.226e-05, 3.226e-05, 3.226e-05, 3.226e-05, 335.31906535], [1516724580000, 3.209e-05, 3.209e-05, 3.208e-05, 3.208e-05, 32306.00695833], [1516724640000, 3.208e-05, 3.208e-05, 3.208e-05, 3.208e-05, 1564.14401534], [1516724700000, 3.208e-05, 3.208e-05, 3.206e-05, 3.206e-05, 7952.29909088], [1516724760000, 3.208e-05, 3.208e-05, 3.2e-05, 3.201e-05, 9215.96566728], [1516724820000, 3.201e-05, 3.208e-05, 3.189e-05, 3.189e-05, 4082.74489245], [1516724880000, 3.189e-05, 3.2e-05, 3.173e-05, 3.173e-05, 17163.55145493], [1516724940000, 3.171e-05, 3.179e-05, 3.16e-05, 3.178e-05, 40196.60746775], [1516725000000, 3.179e-05, 3.182e-05, 3.179e-05, 3.182e-05, 33856.63646401], [1516725060000, 3.185e-05, 3.207e-05, 3.184e-05, 3.207e-05, 10787.68402977], [1516725120000, 3.2e-05, 3.2e-05, 3.187e-05, 3.187e-05, 6849.00623041], [1516725180000, 3.199e-05, 3.2e-05, 3.186e-05, 3.2e-05, 20899.8015047], [1516725240000, 3.2e-05, 3.2e-05, 3.189e-05, 3.189e-05, 6618.46045045], [1516725300000, 3.189e-05, 3.199e-05, 3.185e-05, 3.185e-05, 6432.92819742], [1516725360000, 3.182e-05, 3.185e-05, 3.162e-05, 3.179e-05, 15323.6950893], [1516725420000, 3.178e-05, 3.179e-05, 3.178e-05, 3.179e-05, 15223.77034424], [1516725480000, 3.178e-05, 3.179e-05, 3.161e-05, 3.178e-05, 11462.40394466], [1516725540000, 3.178e-05, 3.179e-05, 3.177e-05, 3.179e-05, 25648.64204386], [1516725600000, 3.179e-05, 3.179e-05, 3.178e-05, 3.179e-05, 13317.60778999], [1516725660000, 3.178e-05, 3.179e-05, 3.161e-05, 3.179e-05, 73778.31683688], [1516725720000, 3.179e-05, 3.2e-05, 3.179e-05, 3.199e-05, 1866.39592901], [1516725780000, 3.2e-05, 3.2e-05, 3.199e-05, 3.199e-05, 18048.38637197], [1516725840000, 3.199e-05, 3.2e-05, 3.18e-05, 3.199e-05, 35302.52130819], [1516725900000, 3.2e-05, 3.2e-05, 3.179e-05, 3.179e-05, 11190.10955715], [1516725960000, 3.196e-05, 3.196e-05, 3.165e-05, 3.165e-05, 6033.380613], [1516726020000, 3.199e-05, 3.199e-05, 3.173e-05, 3.174e-05, 10692.23325241], [1516726080000, 3.196e-05, 3.196e-05, 3.195e-05, 3.195e-05, 4088.7210007], [1516726140000, 3.196e-05, 3.196e-05, 3.195e-05, 3.196e-05, 8820.59705529], [1516726200000, 3.185e-05, 3.196e-05, 3.181e-05, 3.196e-05, 8039.02673097], [1516726260000, 3.199e-05, 3.199e-05, 3.199e-05, 3.199e-05, 938.34499459], [1516726320000, 3.199e-05, 3.208e-05, 3.199e-05, 3.199e-05, 7347.59203396], [1516726380000, 3.199e-05, 3.199e-05, 3.169e-05, 3.169e-05, 4323.70032259], [1516726500000, 3.178e-05, 3.2e-05, 3.172e-05, 3.181e-05, 22341.37829242], [1516726560000, 3.181e-05, 3.199e-05, 3.181e-05, 3.198e-05, 10351.0644265], [1516726620000, 3.174e-05, 3.174e-05, 3.173e-05, 3.173e-05, 1932.10544284], [1516726680000, 3.173e-05, 3.175e-05, 3.173e-05, 3.174e-05, 10739.40697702], [1516726740000, 3.173e-05, 3.177e-05, 3.173e-05, 3.177e-05, 7885.6411335], [1516726800000, 3.193e-05, 3.193e-05, 3.177e-05, 3.191e-05, 834.83193499], [1516726860000, 3.192e-05, 3.193e-05, 3.17e-05, 3.17e-05, 14890.41279837], [1516726920000, 3.17e-05, 3.17e-05, 3.165e-05, 3.17e-05, 22659.20489322], [1516726980000, 3.17e-05, 3.17e-05, 3.165e-05, 3.17e-05, 2707.99538956], [1516727040000, 3.17e-05, 3.17e-05, 3.168e-05, 3.169e-05, 14203.64724911], [1516727100000, 3.169e-05, 3.169e-05, 3.157e-05, 3.169e-05, 13678.99505022], [1516727160000, 3.168e-05, 3.168e-05, 3.168e-05, 3.168e-05, 157.82828282], [1516727220000, 3.154e-05, 3.154e-05, 3.154e-05, 3.154e-05, 1438.35447003], [1516727280000, 3.154e-05, 3.168e-05, 3.154e-05, 3.155e-05, 2641.05805871], [1516727340000, 3.155e-05, 3.155e-05, 3.153e-05, 3.155e-05, 15145.58344511], [1516727400000, 3.153e-05, 3.155e-05, 3.143e-05, 3.143e-05, 28962.25952119], [1516727460000, 3.143e-05, 3.148e-05, 3.143e-05, 3.148e-05, 2928.33514574], [1516727520000, 3.148e-05, 3.151e-05, 3.144e-05, 3.151e-05, 5668.78226811], [1516727580000, 3.154e-05, 3.155e-05, 3.148e-05, 3.148e-05, 17813.36280438], [1516727640000, 3.154e-05, 3.154e-05, 3.144e-05, 3.148e-05, 10180.28312572], [1516727700000, 3.148e-05, 3.155e-05, 3.144e-05, 3.144e-05, 11684.53193524], [1516727760000, 3.145e-05, 3.155e-05, 3.14e-05, 3.155e-05, 3169.63049263], [1516727820000, 3.137e-05, 3.155e-05, 3.137e-05, 3.151e-05, 11677.05951211], [1516727880000, 3.15e-05, 3.15e-05, 3.13e-05, 3.13e-05, 46278.47105773], [1516727940000, 3.13e-05, 3.132e-05, 3.121e-05, 3.132e-05, 16778.7088158], [1516728000000, 3.132e-05, 3.132e-05, 3.12e-05, 3.131e-05, 27588.55007233], [1516728060000, 3.131e-05, 3.131e-05, 3.13e-05, 3.13e-05, 3882.93716248], [1516728120000, 3.13e-05, 3.13e-05, 3.117e-05, 3.117e-05, 4224.94241642], [1516728180000, 3.117e-05, 3.128e-05, 3.115e-05, 3.128e-05, 15633.60510795], [1516728240000, 3.128e-05, 3.128e-05, 3.121e-05, 3.128e-05, 5579.668975], [1516728300000, 3.128e-05, 3.131e-05, 3.12e-05, 3.12e-05, 13482.62168715], [1516728360000, 3.13e-05, 3.13e-05, 3.12e-05, 3.12e-05, 30129.36975259], [1516728420000, 3.115e-05, 3.116e-05, 3.11e-05, 3.111e-05, 20797.48876877], [1516728480000, 3.111e-05, 3.115e-05, 3.111e-05, 3.115e-05, 2792.50960988], [1516728540000, 3.116e-05, 3.13e-05, 3.115e-05, 3.13e-05, 2604.04473695], [1516728600000, 3.13e-05, 3.13e-05, 3.117e-05, 3.117e-05, 8126.5135261], [1516728660000, 3.129e-05, 3.129e-05, 3.116e-05, 3.129e-05, 1765.48036932], [1516728720000, 3.116e-05, 3.128e-05, 3.116e-05, 3.116e-05, 1789.81295724], [1516728780000, 3.117e-05, 3.128e-05, 3.117e-05, 3.128e-05, 1662.37918272], [1516728840000, 3.128e-05, 3.129e-05, 3.128e-05, 3.129e-05, 1568.72809072], [1516728900000, 3.129e-05, 3.13e-05, 3.129e-05, 3.13e-05, 10213.06037344], [1516728960000, 3.13e-05, 3.132e-05, 3.13e-05, 3.132e-05, 4080.29603331], [1516729020000, 3.133e-05, 3.153e-05, 3.132e-05, 3.133e-05, 14691.83084492], [1516729080000, 3.134e-05, 3.161e-05, 3.134e-05, 3.158e-05, 8873.16263924], [1516729140000, 3.158e-05, 3.162e-05, 3.145e-05, 3.162e-05, 29490.35465283], [1516729200000, 3.146e-05, 3.163e-05, 3.146e-05, 3.159e-05, 12806.02868218], [1516729260000, 3.163e-05, 3.163e-05, 3.15e-05, 3.163e-05, 1187.15922651], [1516729320000, 3.164e-05, 3.174e-05, 3.164e-05, 3.174e-05, 9492.97838204], [1516729380000, 3.174e-05, 3.174e-05, 3.165e-05, 3.167e-05, 13877.51871073], [1516729440000, 3.165e-05, 3.174e-05, 3.163e-05, 3.164e-05, 3648.33128681], [1516729500000, 3.176e-05, 3.176e-05, 3.14e-05, 3.164e-05, 46224.9653818], [1516729620000, 3.159e-05, 3.159e-05, 3.134e-05, 3.134e-05, 12890.48540946], [1516729680000, 3.134e-05, 3.149e-05, 3.134e-05, 3.149e-05, 1927.81630473], [1516729740000, 3.146e-05, 3.146e-05, 3.146e-05, 3.146e-05, 969.59001508], [1516729800000, 3.136e-05, 3.136e-05, 3.117e-05, 3.117e-05, 24040.88543362], [1516729860000, 3.13e-05, 3.13e-05, 3.117e-05, 3.127e-05, 21478.46994708], [1516729920000, 3.118e-05, 3.119e-05, 3.102e-05, 3.119e-05, 231779.04026131], [1516729980000, 3.115e-05, 3.119e-05, 3.1e-05, 3.1e-05, 26699.47812321], [1516730040000, 3.114e-05, 3.114e-05, 3.096e-05, 3.11e-05, 12124.44239512], [1516730100000, 3.108e-05, 3.108e-05, 3.08e-05, 3.104e-05, 16097.08152707], [1516730160000, 3.093e-05, 3.098e-05, 3.089e-05, 3.093e-05, 3202.90858238], [1516730220000, 3.093e-05, 3.104e-05, 3.093e-05, 3.104e-05, 9090.66305881], [1516730280000, 3.108e-05, 3.11e-05, 3.093e-05, 3.11e-05, 12626.4464093], [1516730340000, 3.11e-05, 3.11e-05, 3.1e-05, 3.11e-05, 5632.20419976], [1516730400000, 3.109e-05, 3.11e-05, 3.109e-05, 3.109e-05, 3217.40507894], [1516730460000, 3.109e-05, 3.11e-05, 3.109e-05, 3.109e-05, 7268.34283638], [1516730520000, 3.11e-05, 3.112e-05, 3.095e-05, 3.095e-05, 7353.79398664], [1516730580000, 3.096e-05, 3.096e-05, 3.095e-05, 3.095e-05, 4849.14082848], [1516730640000, 3.096e-05, 3.11e-05, 3.093e-05, 3.095e-05, 32615.33477308], [1516730700000, 3.093e-05, 3.095e-05, 3.08e-05, 3.092e-05, 20202.63451853], [1516730760000, 3.081e-05, 3.081e-05, 3.078e-05, 3.08e-05, 33686.54085096], [1516730820000, 3.079e-05, 3.079e-05, 3.078e-05, 3.079e-05, 11326.59651796], [1516730880000, 3.079e-05, 3.079e-05, 3.07e-05, 3.07e-05, 21491.50189707], [1516730940000, 3.069e-05, 3.076e-05, 3.061e-05, 3.068e-05, 13585.96751247], [1516731000000, 3.069e-05, 3.092e-05, 3.065e-05, 3.087e-05, 24329.70665885], [1516731060000, 3.063e-05, 3.08e-05, 3.062e-05, 3.078e-05, 6464.07804404], [1516731120000, 3.075e-05, 3.075e-05, 3.056e-05, 3.056e-05, 28106.95229343], [1516731180000, 3.06e-05, 3.07e-05, 3.056e-05, 3.07e-05, 21337.15974652], [1516731240000, 3.056e-05, 3.07e-05, 3.056e-05, 3.07e-05, 12305.30147597], [1516731300000, 3.07e-05, 3.07e-05, 3.069e-05, 3.069e-05, 32374.46311162], [1516731360000, 3.069e-05, 3.07e-05, 3.069e-05, 3.069e-05, 22672.65776231], [1516731420000, 3.071e-05, 3.092e-05, 3.071e-05, 3.092e-05, 8426.70640234], [1516731480000, 3.093e-05, 3.104e-05, 3.093e-05, 3.104e-05, 6626.77611083], [1516731540000, 3.104e-05, 3.118e-05, 3.103e-05, 3.118e-05, 18965.39169799], [1516731600000, 3.103e-05, 3.117e-05, 3.103e-05, 3.103e-05, 3753.24801344], [1516731660000, 3.103e-05, 3.115e-05, 3.078e-05, 3.115e-05, 22526.563617], [1516731720000, 3.112e-05, 3.112e-05, 3.089e-05, 3.11e-05, 3126.38921954], [1516731780000, 3.109e-05, 3.109e-05, 3.091e-05, 3.091e-05, 9692.01242489], [1516731840000, 3.095e-05, 3.109e-05, 3.095e-05, 3.109e-05, 4078.06283134], [1516731900000, 3.106e-05, 3.106e-05, 3.078e-05, 3.078e-05, 4329.63024047], [1516731960000, 3.078e-05, 3.08e-05, 3.069e-05, 3.069e-05, 4302.52814604], [1516732020000, 3.099e-05, 3.099e-05, 3.06e-05, 3.06e-05, 8198.62686771], [1516732080000, 3.08e-05, 3.08e-05, 3.061e-05, 3.077e-05, 4193.4175468], [1516732140000, 3.077e-05, 3.077e-05, 3.061e-05, 3.069e-05, 18447.48438346], [1516732200000, 3.063e-05, 3.07e-05, 3.061e-05, 3.07e-05, 28331.82915391], [1516732260000, 3.065e-05, 3.065e-05, 3.065e-05, 3.065e-05, 1149.3892784], [1516732320000, 3.065e-05, 3.077e-05, 3.062e-05, 3.065e-05, 5071.67435409], [1516732380000, 3.077e-05, 3.077e-05, 3.065e-05, 3.065e-05, 1365.50439954], [1516732440000, 3.077e-05, 3.077e-05, 3.077e-05, 3.077e-05, 854.97467881], [1516732500000, 3.073e-05, 3.073e-05, 3.073e-05, 3.073e-05, 3253.90752113], [1516732560000, 3.073e-05, 3.077e-05, 3.072e-05, 3.077e-05, 10996.57846287], [1516732620000, 3.072e-05, 3.08e-05, 3.072e-05, 3.08e-05, 3962.02937594], [1516732680000, 3.087e-05, 3.087e-05, 3.08e-05, 3.087e-05, 2154.83221887], [1516732740000, 3.104e-05, 3.108e-05, 3.104e-05, 3.108e-05, 38166.42102362], [1516732800000, 3.114e-05, 3.115e-05, 3.105e-05, 3.115e-05, 4195.14301043], [1516732860000, 3.108e-05, 3.11e-05, 3.105e-05, 3.105e-05, 7352.90413185], [1516732920000, 3.11e-05, 3.118e-05, 3.11e-05, 3.115e-05, 18175.08017935], [1516732980000, 3.114e-05, 3.114e-05, 3.108e-05, 3.113e-05, 572.46728019], [1516733040000, 3.113e-05, 3.118e-05, 3.105e-05, 3.118e-05, 11200.00801371], [1516733100000, 3.118e-05, 3.119e-05, 3.113e-05, 3.119e-05, 868.01621223], [1516733160000, 3.119e-05, 3.12e-05, 3.119e-05, 3.12e-05, 10701.21897704], [1516733220000, 3.119e-05, 3.149e-05, 3.113e-05, 3.145e-05, 28794.50517448], [1516733280000, 3.132e-05, 3.133e-05, 3.132e-05, 3.132e-05, 785.4257026], [1516733340000, 3.132e-05, 3.132e-05, 3.116e-05, 3.116e-05, 6072.78799064], [1516733400000, 3.116e-05, 3.13e-05, 3.116e-05, 3.13e-05, 445.17893545], [1516733460000, 3.116e-05, 3.127e-05, 3.116e-05, 3.116e-05, 984.08556209], [1516733520000, 3.117e-05, 3.123e-05, 3.116e-05, 3.116e-05, 11256.98704521], [1516733580000, 3.116e-05, 3.122e-05, 3.11e-05, 3.11e-05, 26208.9175104], [1516733640000, 3.116e-05, 3.116e-05, 3.111e-05, 3.115e-05, 11599.9265103], [1516733700000, 3.111e-05, 3.116e-05, 3.111e-05, 3.111e-05, 3663.13402652], [1516733760000, 3.113e-05, 3.116e-05, 3.111e-05, 3.116e-05, 4808.9431086], [1516733820000, 3.116e-05, 3.116e-05, 3.11e-05, 3.11e-05, 14243.67023886], [1516733880000, 3.11e-05, 3.11e-05, 3.105e-05, 3.105e-05, 142.36383703], [1516733940000, 3.11e-05, 3.11e-05, 3.105e-05, 3.105e-05, 14859.14203697], [1516734000000, 3.106e-05, 3.106e-05, 3.105e-05, 3.105e-05, 4961.59415255], [1516734060000, 3.105e-05, 3.105e-05, 3.1e-05, 3.1e-05, 3375.47715841], [1516734120000, 3.105e-05, 3.105e-05, 3.1e-05, 3.105e-05, 2315.13908175], [1516734180000, 3.105e-05, 3.105e-05, 3.1e-05, 3.1e-05, 32035.71567894], [1516734240000, 3.1e-05, 3.1e-05, 3.099e-05, 3.099e-05, 390.37037037], [1516734300000, 3.1e-05, 3.1e-05, 3.098e-05, 3.098e-05, 123.80865947], [1516734360000, 3.098e-05, 3.098e-05, 3.061e-05, 3.061e-05, 9538.70288455], [1516734420000, 3.062e-05, 3.088e-05, 3.062e-05, 3.088e-05, 589.28187476], [1516734480000, 3.087e-05, 3.087e-05, 3.073e-05, 3.073e-05, 2553.1255762], [1516734540000, 3.086e-05, 3.086e-05, 3.073e-05, 3.082e-05, 1603.98819457], [1516734600000, 3.081e-05, 3.081e-05, 3.081e-05, 3.081e-05, 2240.86909163], [1516734660000, 3.082e-05, 3.091e-05, 3.082e-05, 3.083e-05, 25279.7498794], [1516734720000, 3.084e-05, 3.084e-05, 3.083e-05, 3.083e-05, 9283.90609758], [1516734780000, 3.083e-05, 3.083e-05, 3.081e-05, 3.081e-05, 2193.04449112], [1516734840000, 3.082e-05, 3.082e-05, 3.081e-05, 3.081e-05, 23948.61601081], [1516734900000, 3.076e-05, 3.081e-05, 3.076e-05, 3.081e-05, 3266.78738178], [1516734960000, 3.081e-05, 3.081e-05, 3.075e-05, 3.075e-05, 1130.45465233], [1516735020000, 3.076e-05, 3.081e-05, 3.071e-05, 3.071e-05, 2315.70221429], [1516735080000, 3.073e-05, 3.093e-05, 3.071e-05, 3.093e-05, 829.24010278], [1516735140000, 3.091e-05, 3.094e-05, 3.091e-05, 3.094e-05, 12493.83357137], [1516735200000, 3.094e-05, 3.104e-05, 3.094e-05, 3.104e-05, 6058.95256926], [1516735260000, 3.104e-05, 3.104e-05, 3.094e-05, 3.104e-05, 7523.37010381], [1516735320000, 3.094e-05, 3.104e-05, 3.094e-05, 3.104e-05, 6720.76044163], [1516735440000, 3.104e-05, 3.105e-05, 3.104e-05, 3.104e-05, 29521.74419404], [1516735500000, 3.104e-05, 3.104e-05, 3.098e-05, 3.098e-05, 12839.74981213], [1516735560000, 3.104e-05, 3.104e-05, 3.094e-05, 3.104e-05, 10675.66328548], [1516735620000, 3.104e-05, 3.116e-05, 3.104e-05, 3.116e-05, 1636.76677881], [1516735680000, 3.104e-05, 3.116e-05, 3.104e-05, 3.104e-05, 1394.56026667], [1516735800000, 3.115e-05, 3.115e-05, 3.115e-05, 3.115e-05, 9806.58322091], [1516735860000, 3.115e-05, 3.116e-05, 3.106e-05, 3.115e-05, 15206.60740161], [1516735920000, 3.11e-05, 3.11e-05, 3.11e-05, 3.11e-05, 62.12720622], [1516735980000, 3.111e-05, 3.115e-05, 3.096e-05, 3.096e-05, 12093.82271054], [1516736040000, 3.096e-05, 3.114e-05, 3.096e-05, 3.113e-05, 253.58312022], [1516736100000, 3.113e-05, 3.116e-05, 3.096e-05, 3.116e-05, 54738.84929459], [1516736160000, 3.115e-05, 3.121e-05, 3.095e-05, 3.12e-05, 77220.62956272], [1516736220000, 3.118e-05, 3.13e-05, 3.095e-05, 3.095e-05, 14448.50167075], [1516736280000, 3.108e-05, 3.129e-05, 3.1e-05, 3.129e-05, 87048.00013423], [1516736340000, 3.129e-05, 3.129e-05, 3.098e-05, 3.098e-05, 2224.68212342], [1516736400000, 3.12e-05, 3.128e-05, 3.12e-05, 3.128e-05, 815.33889706], [1516736460000, 3.118e-05, 3.129e-05, 3.11e-05, 3.118e-05, 10908.46144951], [1516736520000, 3.11e-05, 3.13e-05, 3.11e-05, 3.13e-05, 811.46913088], [1516736580000, 3.145e-05, 3.145e-05, 3.12e-05, 3.14e-05, 1653.42893242], [1516736640000, 3.139e-05, 3.139e-05, 3.12e-05, 3.12e-05, 2075.68081232], [1516736700000, 3.12e-05, 3.12e-05, 3.102e-05, 3.102e-05, 9738.9602737], [1516736760000, 3.103e-05, 3.103e-05, 3.103e-05, 3.103e-05, 136.0], [1516736820000, 3.104e-05, 3.113e-05, 3.103e-05, 3.113e-05, 628.15337393], [1516736880000, 3.113e-05, 3.113e-05, 3.105e-05, 3.105e-05, 12125.5735964], [1516736940000, 3.106e-05, 3.106e-05, 3.102e-05, 3.102e-05, 1587.09931731], [1516737000000, 3.113e-05, 3.113e-05, 3.102e-05, 3.113e-05, 7458.96314574], [1516737060000, 3.1e-05, 3.113e-05, 3.083e-05, 3.113e-05, 5314.17920255], [1516737120000, 3.086e-05, 3.126e-05, 3.08e-05, 3.091e-05, 15148.8474886], [1516737180000, 3.091e-05, 3.094e-05, 3.091e-05, 3.094e-05, 867.88803262], [1516737240000, 3.12e-05, 3.12e-05, 3.095e-05, 3.095e-05, 8140.919117], [1516737300000, 3.119e-05, 3.119e-05, 3.081e-05, 3.095e-05, 58215.03721207], [1516737360000, 3.095e-05, 3.095e-05, 3.095e-05, 3.095e-05, 157.98171645], [1516737420000, 3.094e-05, 3.094e-05, 3.081e-05, 3.081e-05, 1490.66682976], [1516737480000, 3.081e-05, 3.086e-05, 3.081e-05, 3.086e-05, 814.64020476], [1516737540000, 3.086e-05, 3.095e-05, 3.086e-05, 3.095e-05, 843.4419619], [1516737600000, 3.088e-05, 3.095e-05, 3.088e-05, 3.094e-05, 3521.06151579], [1516737660000, 3.095e-05, 3.1e-05, 3.095e-05, 3.095e-05, 3776.08429178], [1516737720000, 3.095e-05, 3.095e-05, 3.095e-05, 3.095e-05, 1132.67739284], [1516737780000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 588.91039838], [1516737840000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 5190.69424275], [1516737900000, 3.101e-05, 3.101e-05, 3.1e-05, 3.1e-05, 6346.55193147], [1516737960000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 3250.7302258], [1516738020000, 3.1e-05, 3.1e-05, 3.08e-05, 3.08e-05, 8445.5052194], [1516738140000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 1000.0], [1516738200000, 3.083e-05, 3.107e-05, 3.083e-05, 3.107e-05, 33040.79159234], [1516738320000, 3.107e-05, 3.116e-05, 3.1e-05, 3.1e-05, 4265.60034465], [1516738380000, 3.1e-05, 3.1e-05, 3.086e-05, 3.086e-05, 190.90612781], [1516738440000, 3.098e-05, 3.106e-05, 3.086e-05, 3.106e-05, 3487.75286585], [1516738500000, 3.1e-05, 3.106e-05, 3.1e-05, 3.1e-05, 2811.76773336], [1516738560000, 3.101e-05, 3.106e-05, 3.101e-05, 3.106e-05, 4327.36769936], [1516738620000, 3.106e-05, 3.106e-05, 3.102e-05, 3.106e-05, 9402.11240353], [1516738680000, 3.106e-05, 3.117e-05, 3.106e-05, 3.106e-05, 4899.72948819], [1516738740000, 3.101e-05, 3.117e-05, 3.101e-05, 3.117e-05, 1340.79508539], [1516738800000, 3.117e-05, 3.117e-05, 3.117e-05, 3.117e-05, 221.73343408], [1516738860000, 3.117e-05, 3.117e-05, 3.108e-05, 3.108e-05, 3647.07869973], [1516738920000, 3.108e-05, 3.118e-05, 3.107e-05, 3.116e-05, 3927.95959259], [1516738980000, 3.116e-05, 3.116e-05, 3.106e-05, 3.106e-05, 2420.05889302], [1516739160000, 3.107e-05, 3.117e-05, 3.107e-05, 3.117e-05, 4931.60401865], [1516739220000, 3.117e-05, 3.131e-05, 3.117e-05, 3.131e-05, 4559.43310416], [1516739280000, 3.118e-05, 3.13e-05, 3.112e-05, 3.13e-05, 790.13019629], [1516739340000, 3.13e-05, 3.13e-05, 3.112e-05, 3.112e-05, 2843.34893777], [1516739400000, 3.113e-05, 3.113e-05, 3.112e-05, 3.112e-05, 192.14666841], [1516739460000, 3.112e-05, 3.113e-05, 3.112e-05, 3.113e-05, 1887.14739215], [1516739520000, 3.113e-05, 3.13e-05, 3.112e-05, 3.13e-05, 3010.47955677], [1516739580000, 3.13e-05, 3.13e-05, 3.13e-05, 3.13e-05, 38.33865814], [1516739640000, 3.13e-05, 3.13e-05, 3.13e-05, 3.13e-05, 108.72399027], [1516739700000, 3.114e-05, 3.114e-05, 3.112e-05, 3.112e-05, 9556.02606386], [1516739760000, 3.113e-05, 3.114e-05, 3.112e-05, 3.112e-05, 11060.7732554], [1516739820000, 3.112e-05, 3.112e-05, 3.112e-05, 3.112e-05, 3503.47938865], [1516739880000, 3.112e-05, 3.113e-05, 3.112e-05, 3.113e-05, 4393.79588183], [1516739940000, 3.113e-05, 3.113e-05, 3.113e-05, 3.113e-05, 1953.45994375], [1516740000000, 3.11e-05, 3.113e-05, 3.1e-05, 3.113e-05, 3960.03601729], [1516740060000, 3.11e-05, 3.113e-05, 3.11e-05, 3.113e-05, 5945.50607827], [1516740120000, 3.113e-05, 3.114e-05, 3.113e-05, 3.114e-05, 1233.74422746], [1516740180000, 3.114e-05, 3.12e-05, 3.114e-05, 3.119e-05, 4026.90908039], [1516740240000, 3.115e-05, 3.12e-05, 3.113e-05, 3.12e-05, 55972.95148144], [1516740300000, 3.119e-05, 3.119e-05, 3.119e-05, 3.119e-05, 600.18194427], [1516740360000, 3.112e-05, 3.112e-05, 3.104e-05, 3.104e-05, 2156.33390932], [1516740420000, 3.119e-05, 3.12e-05, 3.119e-05, 3.12e-05, 875.92011232], [1516740480000, 3.12e-05, 3.129e-05, 3.12e-05, 3.12e-05, 3460.59953891], [1516740540000, 3.119e-05, 3.129e-05, 3.119e-05, 3.129e-05, 3395.30246134], [1516740600000, 3.13e-05, 3.13e-05, 3.128e-05, 3.128e-05, 4039.30710319], [1516740660000, 3.128e-05, 3.128e-05, 3.119e-05, 3.119e-05, 629.79985269], [1516740720000, 3.119e-05, 3.125e-05, 3.119e-05, 3.119e-05, 28561.51767298], [1516740780000, 3.119e-05, 3.119e-05, 3.111e-05, 3.111e-05, 1297.21166673], [1516740840000, 3.119e-05, 3.119e-05, 3.111e-05, 3.111e-05, 2707.15821736], [1516740900000, 3.119e-05, 3.119e-05, 3.112e-05, 3.119e-05, 119.80436585], [1516740960000, 3.119e-05, 3.125e-05, 3.111e-05, 3.125e-05, 2100.81874152], [1516741020000, 3.125e-05, 3.125e-05, 3.125e-05, 3.125e-05, 530.22571532], [1516741080000, 3.111e-05, 3.125e-05, 3.111e-05, 3.118e-05, 3269.82647057], [1516741140000, 3.125e-05, 3.13e-05, 3.122e-05, 3.122e-05, 10436.37002625], [1516741200000, 3.122e-05, 3.13e-05, 3.118e-05, 3.13e-05, 6780.08578666], [1516741260000, 3.121e-05, 3.13e-05, 3.12e-05, 3.12e-05, 3100.10725035], [1516741320000, 3.13e-05, 3.131e-05, 3.129e-05, 3.131e-05, 3134.50433294], [1516741380000, 3.13e-05, 3.139e-05, 3.123e-05, 3.139e-05, 679.78642757], [1516741440000, 3.139e-05, 3.139e-05, 3.123e-05, 3.131e-05, 654.58274587], [1516741500000, 3.139e-05, 3.139e-05, 3.131e-05, 3.135e-05, 1993.09137969], [1516741560000, 3.135e-05, 3.139e-05, 3.122e-05, 3.139e-05, 6679.27210373], [1516741620000, 3.139e-05, 3.139e-05, 3.135e-05, 3.135e-05, 2648.40081443], [1516741680000, 3.137e-05, 3.156e-05, 3.137e-05, 3.147e-05, 57927.02555618], [1516741740000, 3.156e-05, 3.156e-05, 3.156e-05, 3.156e-05, 69.65644724], [1516741800000, 3.148e-05, 3.148e-05, 3.148e-05, 3.148e-05, 134.31116431], [1516741860000, 3.148e-05, 3.156e-05, 3.148e-05, 3.156e-05, 1247.34036865], [1516741920000, 3.149e-05, 3.156e-05, 3.148e-05, 3.148e-05, 460.0], [1516741980000, 3.148e-05, 3.156e-05, 3.148e-05, 3.148e-05, 711.0], [1516742040000, 3.156e-05, 3.156e-05, 3.148e-05, 3.148e-05, 2106.01710949], [1516742100000, 3.156e-05, 3.156e-05, 3.156e-05, 3.156e-05, 719.35471007], [1516742160000, 3.156e-05, 3.156e-05, 3.148e-05, 3.156e-05, 3049.75439681], [1516742220000, 3.156e-05, 3.164e-05, 3.148e-05, 3.148e-05, 23587.89138021], [1516742280000, 3.148e-05, 3.164e-05, 3.148e-05, 3.164e-05, 1495.33379073], [1516742340000, 3.164e-05, 3.164e-05, 3.164e-05, 3.164e-05, 11002.77967849], [1516742400000, 3.149e-05, 3.164e-05, 3.148e-05, 3.148e-05, 6824.98405884], [1516742460000, 3.151e-05, 3.151e-05, 3.149e-05, 3.149e-05, 2524.73059231], [1516742520000, 3.149e-05, 3.165e-05, 3.149e-05, 3.164e-05, 829.21158023], [1516742580000, 3.164e-05, 3.165e-05, 3.149e-05, 3.15e-05, 12959.61717156], [1516742640000, 3.15e-05, 3.163e-05, 3.15e-05, 3.163e-05, 1028.50029005], [1516742700000, 3.151e-05, 3.153e-05, 3.149e-05, 3.153e-05, 10165.23876356], [1516742760000, 3.153e-05, 3.162e-05, 3.153e-05, 3.162e-05, 397.89504709], [1516742820000, 3.162e-05, 3.162e-05, 3.151e-05, 3.151e-05, 3913.06523018], [1516742880000, 3.151e-05, 3.154e-05, 3.151e-05, 3.153e-05, 3626.71127648], [1516742940000, 3.152e-05, 3.152e-05, 3.151e-05, 3.151e-05, 2229.08502201], [1516743000000, 3.151e-05, 3.152e-05, 3.151e-05, 3.152e-05, 2277.19497074], [1516743060000, 3.152e-05, 3.152e-05, 3.151e-05, 3.151e-05, 13817.9726837], [1516743120000, 3.151e-05, 3.151e-05, 3.15e-05, 3.15e-05, 831.50616424], [1516743180000, 3.149e-05, 3.15e-05, 3.149e-05, 3.15e-05, 132.5732899], [1516743240000, 3.15e-05, 3.15e-05, 3.149e-05, 3.149e-05, 11093.32528213], [1516743300000, 3.148e-05, 3.15e-05, 3.147e-05, 3.147e-05, 26910.33168454], [1516743360000, 3.147e-05, 3.15e-05, 3.147e-05, 3.15e-05, 49851.23646019], [1516743420000, 3.149e-05, 3.149e-05, 3.149e-05, 3.149e-05, 4391.66764036], [1516743480000, 3.151e-05, 3.152e-05, 3.151e-05, 3.152e-05, 8818.0736517], [1516743540000, 3.153e-05, 3.154e-05, 3.153e-05, 3.154e-05, 1370.82516604], [1516743600000, 3.153e-05, 3.154e-05, 3.141e-05, 3.154e-05, 9331.40809284], [1516743660000, 3.153e-05, 3.153e-05, 3.153e-05, 3.153e-05, 47.55865568], [1516743720000, 3.153e-05, 3.153e-05, 3.153e-05, 3.153e-05, 1971.84140821], [1516743780000, 3.153e-05, 3.168e-05, 3.143e-05, 3.168e-05, 3500.4574312], [1516743900000, 3.16e-05, 3.165e-05, 3.145e-05, 3.145e-05, 6225.05702376], [1516743960000, 3.144e-05, 3.144e-05, 3.12e-05, 3.12e-05, 46143.14304571], [1516744020000, 3.159e-05, 3.159e-05, 3.159e-05, 3.159e-05, 4500.0], [1516744080000, 3.132e-05, 3.141e-05, 3.132e-05, 3.141e-05, 3481.34447988], [1516744140000, 3.132e-05, 3.132e-05, 3.127e-05, 3.127e-05, 3047.76241909], [1516744200000, 3.132e-05, 3.132e-05, 3.126e-05, 3.126e-05, 1152.62440811], [1516744260000, 3.132e-05, 3.132e-05, 3.127e-05, 3.128e-05, 1120.03989432], [1516744320000, 3.129e-05, 3.129e-05, 3.128e-05, 3.128e-05, 3609.21468936], [1516744380000, 3.126e-05, 3.126e-05, 3.117e-05, 3.126e-05, 13215.61027729], [1516744440000, 3.126e-05, 3.126e-05, 3.126e-05, 3.126e-05, 3506.05102837], [1516744500000, 3.126e-05, 3.126e-05, 3.118e-05, 3.118e-05, 234.25462155], [1516744560000, 3.119e-05, 3.119e-05, 3.118e-05, 3.118e-05, 325.95535075], [1516744620000, 3.124e-05, 3.126e-05, 3.119e-05, 3.126e-05, 8381.9966417], [1516744740000, 3.126e-05, 3.126e-05, 3.119e-05, 3.12e-05, 15697.43040613], [1516744800000, 3.119e-05, 3.12e-05, 3.119e-05, 3.12e-05, 3908.15462431], [1516744860000, 3.119e-05, 3.12e-05, 3.119e-05, 3.119e-05, 4707.83806214], [1516744920000, 3.119e-05, 3.119e-05, 3.117e-05, 3.118e-05, 10881.83428546], [1516744980000, 3.119e-05, 3.119e-05, 3.119e-05, 3.119e-05, 13536.17344846], [1516745040000, 3.12e-05, 3.12e-05, 3.119e-05, 3.12e-05, 29750.13965006], [1516745100000, 3.119e-05, 3.119e-05, 3.117e-05, 3.117e-05, 4723.02642258], [1516745160000, 3.117e-05, 3.12e-05, 3.117e-05, 3.117e-05, 17721.93121654], [1516745220000, 3.117e-05, 3.126e-05, 3.117e-05, 3.126e-05, 1732.638456], [1516745280000, 3.125e-05, 3.125e-05, 3.12e-05, 3.12e-05, 1539.63195918], [1516745340000, 3.125e-05, 3.125e-05, 3.12e-05, 3.12e-05, 3384.69860258], [1516745400000, 3.124e-05, 3.124e-05, 3.12e-05, 3.124e-05, 3194.930938], [1516745460000, 3.124e-05, 3.124e-05, 3.12e-05, 3.124e-05, 1892.87281603], [1516745580000, 3.124e-05, 3.124e-05, 3.121e-05, 3.124e-05, 1689.04475409], [1516745640000, 3.122e-05, 3.124e-05, 3.122e-05, 3.124e-05, 975.46253795], [1516745700000, 3.123e-05, 3.123e-05, 3.12e-05, 3.12e-05, 3550.0], [1516745760000, 3.121e-05, 3.121e-05, 3.12e-05, 3.12e-05, 1365.31602325], [1516745820000, 3.121e-05, 3.121e-05, 3.12e-05, 3.12e-05, 4197.03461056], [1516745880000, 3.12e-05, 3.121e-05, 3.12e-05, 3.12e-05, 10578.77981196], [1516745940000, 3.122e-05, 3.122e-05, 3.122e-05, 3.122e-05, 27.0], [1516746000000, 3.123e-05, 3.128e-05, 3.122e-05, 3.128e-05, 27769.25574788], [1516746060000, 3.126e-05, 3.128e-05, 3.12e-05, 3.12e-05, 25523.39491526], [1516746120000, 3.119e-05, 3.12e-05, 3.119e-05, 3.12e-05, 3836.81948798], [1516746180000, 3.12e-05, 3.12e-05, 3.11e-05, 3.11e-05, 18616.54193461], [1516746240000, 3.115e-05, 3.121e-05, 3.115e-05, 3.116e-05, 3479.15396316], [1516746300000, 3.115e-05, 3.131e-05, 3.11e-05, 3.131e-05, 17434.08935881], [1516746360000, 3.131e-05, 3.131e-05, 3.131e-05, 3.131e-05, 8434.66483511], [1516746420000, 3.133e-05, 3.133e-05, 3.131e-05, 3.131e-05, 11492.3869013], [1516746480000, 3.128e-05, 3.128e-05, 3.11e-05, 3.128e-05, 1606.37673866], [1516746540000, 3.127e-05, 3.127e-05, 3.112e-05, 3.112e-05, 3643.05456893], [1516746600000, 3.112e-05, 3.124e-05, 3.11e-05, 3.117e-05, 3630.60315244], [1516746660000, 3.111e-05, 3.117e-05, 3.11e-05, 3.11e-05, 24215.48603705], [1516746720000, 3.105e-05, 3.11e-05, 3.101e-05, 3.11e-05, 52248.07034883], [1516746780000, 3.11e-05, 3.11e-05, 3.107e-05, 3.107e-05, 343.33735172], [1516746840000, 3.107e-05, 3.126e-05, 3.107e-05, 3.126e-05, 1048.31020244], [1516746900000, 3.126e-05, 3.126e-05, 3.126e-05, 3.126e-05, 1002.66803839], [1516746960000, 3.123e-05, 3.123e-05, 3.106e-05, 3.108e-05, 79525.84393226], [1516747020000, 3.108e-05, 3.12e-05, 3.108e-05, 3.12e-05, 6406.88699894], [1516747080000, 3.12e-05, 3.126e-05, 3.12e-05, 3.126e-05, 5606.88079672], [1516747140000, 3.125e-05, 3.125e-05, 3.12e-05, 3.12e-05, 2442.64335162], [1516747200000, 3.12e-05, 3.12e-05, 3.1e-05, 3.1e-05, 97211.7822687], [1516747260000, 3.104e-05, 3.126e-05, 3.104e-05, 3.105e-05, 8864.96146898], [1516747320000, 3.121e-05, 3.126e-05, 3.1e-05, 3.11e-05, 11535.18278208], [1516747380000, 3.12e-05, 3.126e-05, 3.12e-05, 3.126e-05, 5717.47252631], [1516747440000, 3.126e-05, 3.126e-05, 3.126e-05, 3.126e-05, 2887.80820383], [1516747500000, 3.126e-05, 3.126e-05, 3.125e-05, 3.126e-05, 6723.81984554], [1516747560000, 3.126e-05, 3.126e-05, 3.125e-05, 3.125e-05, 5341.65378278], [1516747620000, 3.125e-05, 3.125e-05, 3.125e-05, 3.125e-05, 3117.5148963], [1516747680000, 3.126e-05, 3.126e-05, 3.125e-05, 3.125e-05, 4924.18150481], [1516747740000, 3.125e-05, 3.126e-05, 3.125e-05, 3.126e-05, 3257.58526913], [1516747800000, 3.125e-05, 3.126e-05, 3.125e-05, 3.126e-05, 881.65808782], [1516747860000, 3.126e-05, 3.126e-05, 3.126e-05, 3.126e-05, 2386.43355086], [1516747920000, 3.125e-05, 3.126e-05, 3.12e-05, 3.126e-05, 6615.00186761], [1516747980000, 3.121e-05, 3.13e-05, 3.12e-05, 3.13e-05, 48198.14405831], [1516748040000, 3.13e-05, 3.137e-05, 3.13e-05, 3.132e-05, 2626.79863188], [1516748100000, 3.132e-05, 3.137e-05, 3.13e-05, 3.137e-05, 25253.56865457], [1516748160000, 3.132e-05, 3.148e-05, 3.132e-05, 3.148e-05, 89805.83169076], [1516748220000, 3.145e-05, 3.157e-05, 3.145e-05, 3.148e-05, 13285.74948149], [1516748280000, 3.148e-05, 3.166e-05, 3.148e-05, 3.157e-05, 9825.74660161], [1516748340000, 3.157e-05, 3.157e-05, 3.157e-05, 3.157e-05, 46550.36290665], [1516748400000, 3.157e-05, 3.186e-05, 3.157e-05, 3.157e-05, 97052.31013104], [1516748460000, 3.157e-05, 3.171e-05, 3.148e-05, 3.148e-05, 6048.98709474], [1516748520000, 3.157e-05, 3.157e-05, 3.148e-05, 3.148e-05, 21131.82122788], [1516748580000, 3.146e-05, 3.146e-05, 3.133e-05, 3.133e-05, 3963.94208123], [1516748640000, 3.14e-05, 3.145e-05, 3.14e-05, 3.141e-05, 5946.87061454], [1516748700000, 3.141e-05, 3.141e-05, 3.133e-05, 3.133e-05, 15511.05491808], [1516748760000, 3.132e-05, 3.133e-05, 3.132e-05, 3.132e-05, 46915.88051443], [1516748880000, 3.135e-05, 3.141e-05, 3.135e-05, 3.141e-05, 18343.53136819], [1516748940000, 3.142e-05, 3.166e-05, 3.141e-05, 3.143e-05, 2638.47889736], [1516749000000, 3.143e-05, 3.162e-05, 3.135e-05, 3.159e-05, 1999.84202258], [1516749060000, 3.159e-05, 3.159e-05, 3.136e-05, 3.136e-05, 3751.44468281], [1516749120000, 3.154e-05, 3.154e-05, 3.151e-05, 3.152e-05, 13871.39237992], [1516749180000, 3.145e-05, 3.145e-05, 3.145e-05, 3.145e-05, 1982.69633853], [1516749240000, 3.14e-05, 3.147e-05, 3.14e-05, 3.147e-05, 705.0441275], [1516749300000, 3.147e-05, 3.147e-05, 3.14e-05, 3.14e-05, 5242.99407539], [1516749360000, 3.147e-05, 3.147e-05, 3.14e-05, 3.14e-05, 372.10689001], [1516749420000, 3.14e-05, 3.14e-05, 3.134e-05, 3.134e-05, 13548.51450902], [1516749480000, 3.134e-05, 3.134e-05, 3.133e-05, 3.133e-05, 31005.67064722], [1516749540000, 3.134e-05, 3.147e-05, 3.134e-05, 3.147e-05, 3506.0], [1516749600000, 3.133e-05, 3.134e-05, 3.133e-05, 3.134e-05, 218.05523673], [1516749660000, 3.133e-05, 3.133e-05, 3.133e-05, 3.133e-05, 6356.25683092], [1516749720000, 3.133e-05, 3.133e-05, 3.133e-05, 3.133e-05, 525.0], [1516749780000, 3.135e-05, 3.151e-05, 3.135e-05, 3.135e-05, 1043.92418629], [1516749840000, 3.134e-05, 3.134e-05, 3.132e-05, 3.132e-05, 4576.82500989], [1516749960000, 3.134e-05, 3.134e-05, 3.134e-05, 3.134e-05, 2559.61568692], [1516750020000, 3.134e-05, 3.135e-05, 3.134e-05, 3.135e-05, 2480.40259091], [1516750140000, 3.135e-05, 3.151e-05, 3.132e-05, 3.144e-05, 2210.06747353], [1516750200000, 3.144e-05, 3.151e-05, 3.132e-05, 3.151e-05, 23346.64286608], [1516750260000, 3.132e-05, 3.132e-05, 3.132e-05, 3.132e-05, 5363.15251432], [1516750320000, 3.132e-05, 3.15e-05, 3.132e-05, 3.133e-05, 744.78866382], [1516750380000, 3.15e-05, 3.15e-05, 3.125e-05, 3.125e-05, 42723.01980401], [1516750440000, 3.132e-05, 3.132e-05, 3.132e-05, 3.132e-05, 3306.81773237], [1516750620000, 3.132e-05, 3.132e-05, 3.132e-05, 3.132e-05, 3297.05304279], [1516750680000, 3.132e-05, 3.132e-05, 3.132e-05, 3.132e-05, 62102.32940783], [1516750740000, 3.149e-05, 3.15e-05, 3.145e-05, 3.145e-05, 316.0], [1516750800000, 3.145e-05, 3.145e-05, 3.145e-05, 3.145e-05, 237.0], [1516750860000, 3.143e-05, 3.144e-05, 3.123e-05, 3.123e-05, 2538.35496183], [1516750920000, 3.143e-05, 3.15e-05, 3.123e-05, 3.15e-05, 3372.62385], [1516750980000, 3.124e-05, 3.136e-05, 3.123e-05, 3.124e-05, 1039.73210556], [1516751040000, 3.136e-05, 3.136e-05, 3.136e-05, 3.136e-05, 237.0], [1516751100000, 3.136e-05, 3.136e-05, 3.136e-05, 3.136e-05, 53.0], [1516751160000, 3.136e-05, 3.147e-05, 3.124e-05, 3.124e-05, 3380.38087918], [1516751220000, 3.125e-05, 3.147e-05, 3.123e-05, 3.147e-05, 3581.92941284], [1516751280000, 3.147e-05, 3.147e-05, 3.124e-05, 3.124e-05, 1006.38766383], [1516751340000, 3.139e-05, 3.139e-05, 3.134e-05, 3.134e-05, 316.0], [1516751400000, 3.134e-05, 3.137e-05, 3.125e-05, 3.125e-05, 2045.83784575], [1516751460000, 3.125e-05, 3.136e-05, 3.119e-05, 3.119e-05, 9019.14485717], [1516751520000, 3.119e-05, 3.124e-05, 3.11e-05, 3.123e-05, 7988.81853864], [1516751580000, 3.124e-05, 3.124e-05, 3.111e-05, 3.111e-05, 25310.95002532], [1516751640000, 3.12e-05, 3.12e-05, 3.107e-05, 3.111e-05, 13007.35988666], [1516751700000, 3.111e-05, 3.111e-05, 3.105e-05, 3.111e-05, 22458.31176218], [1516751760000, 3.111e-05, 3.127e-05, 3.111e-05, 3.127e-05, 9920.2621688], [1516751820000, 3.125e-05, 3.125e-05, 3.108e-05, 3.11e-05, 14059.31693495], [1516751880000, 3.11e-05, 3.111e-05, 3.11e-05, 3.11e-05, 10360.32683564], [1516751940000, 3.109e-05, 3.109e-05, 3.091e-05, 3.091e-05, 99064.93680353], [1516752000000, 3.1e-05, 3.11e-05, 3.091e-05, 3.101e-05, 8946.88622025], [1516752060000, 3.101e-05, 3.101e-05, 3.092e-05, 3.101e-05, 8121.32588728], [1516752120000, 3.101e-05, 3.101e-05, 3.1e-05, 3.101e-05, 1837.11790583], [1516752180000, 3.101e-05, 3.101e-05, 3.099e-05, 3.101e-05, 4099.14089286], [1516752240000, 3.1e-05, 3.11e-05, 3.1e-05, 3.11e-05, 6833.91968192], [1516752300000, 3.11e-05, 3.121e-05, 3.11e-05, 3.121e-05, 981.08997495], [1516752360000, 3.119e-05, 3.119e-05, 3.111e-05, 3.116e-05, 2790.08117605], [1516752420000, 3.116e-05, 3.117e-05, 3.1e-05, 3.117e-05, 5143.88540453], [1516752480000, 3.116e-05, 3.12e-05, 3.1e-05, 3.119e-05, 18067.38707401], [1516752540000, 3.119e-05, 3.119e-05, 3.101e-05, 3.118e-05, 15326.63193719], [1516752600000, 3.119e-05, 3.148e-05, 3.118e-05, 3.132e-05, 44646.48648431], [1516752660000, 3.141e-05, 3.141e-05, 3.104e-05, 3.137e-05, 17863.96865354], [1516752720000, 3.137e-05, 3.141e-05, 3.116e-05, 3.123e-05, 9796.76374626], [1516752780000, 3.124e-05, 3.14e-05, 3.124e-05, 3.124e-05, 11175.65513628], [1516752840000, 3.129e-05, 3.152e-05, 3.126e-05, 3.151e-05, 10248.8897574], [1516752900000, 3.152e-05, 3.152e-05, 3.127e-05, 3.152e-05, 15560.0295718], [1516752960000, 3.129e-05, 3.158e-05, 3.128e-05, 3.153e-05, 27433.89187543], [1516753020000, 3.151e-05, 3.156e-05, 3.129e-05, 3.129e-05, 19679.17184576], [1516753080000, 3.153e-05, 3.155e-05, 3.13e-05, 3.154e-05, 9734.57894419], [1516753140000, 3.155e-05, 3.157e-05, 3.132e-05, 3.155e-05, 12980.40952512], [1516753200000, 3.155e-05, 3.161e-05, 3.146e-05, 3.159e-05, 22392.79738028], [1516753260000, 3.159e-05, 3.176e-05, 3.155e-05, 3.175e-05, 23804.39097147], [1516753320000, 3.166e-05, 3.174e-05, 3.165e-05, 3.172e-05, 50076.92754009], [1516753380000, 3.172e-05, 3.173e-05, 3.155e-05, 3.155e-05, 12886.05240366], [1516753440000, 3.155e-05, 3.181e-05, 3.133e-05, 3.181e-05, 10411.81249259], [1516753500000, 3.18e-05, 3.185e-05, 3.172e-05, 3.18e-05, 25272.35530457], [1516753560000, 3.18e-05, 3.18e-05, 3.172e-05, 3.175e-05, 1695.83386405], [1516753620000, 3.175e-05, 3.18e-05, 3.174e-05, 3.18e-05, 8393.46247534], [1516753680000, 3.18e-05, 3.18e-05, 3.174e-05, 3.174e-05, 12966.66364369], [1516753740000, 3.174e-05, 3.18e-05, 3.155e-05, 3.157e-05, 53019.50135871], [1516753800000, 3.158e-05, 3.175e-05, 3.133e-05, 3.173e-05, 13894.87477516], [1516753860000, 3.173e-05, 3.173e-05, 3.135e-05, 3.167e-05, 6925.77528449], [1516753920000, 3.167e-05, 3.167e-05, 3.135e-05, 3.165e-05, 5224.31337726], [1516753980000, 3.16e-05, 3.17e-05, 3.16e-05, 3.167e-05, 28576.95311636], [1516754040000, 3.178e-05, 3.178e-05, 3.167e-05, 3.176e-05, 15764.57101032], [1516754100000, 3.176e-05, 3.18e-05, 3.176e-05, 3.18e-05, 54384.16569397], [1516754160000, 3.18e-05, 3.18e-05, 3.176e-05, 3.176e-05, 31608.1114504], [1516754220000, 3.17e-05, 3.179e-05, 3.167e-05, 3.179e-05, 11139.03110362], [1516754280000, 3.178e-05, 3.18e-05, 3.165e-05, 3.165e-05, 76949.09898504], [1516754340000, 3.178e-05, 3.178e-05, 3.166e-05, 3.168e-05, 12430.47699341], [1516754400000, 3.168e-05, 3.189e-05, 3.168e-05, 3.189e-05, 4820.1652217], [1516754460000, 3.182e-05, 3.195e-05, 3.182e-05, 3.192e-05, 31534.92837008], [1516754520000, 3.195e-05, 3.197e-05, 3.195e-05, 3.197e-05, 4790.6512829], [1516754580000, 3.195e-05, 3.198e-05, 3.195e-05, 3.197e-05, 19834.40626275], [1516754640000, 3.197e-05, 3.198e-05, 3.19e-05, 3.19e-05, 15664.08478684], [1516754700000, 3.19e-05, 3.208e-05, 3.168e-05, 3.207e-05, 129446.851891], [1516754760000, 3.206e-05, 3.206e-05, 3.191e-05, 3.192e-05, 9783.51446693], [1516754820000, 3.192e-05, 3.192e-05, 3.192e-05, 3.192e-05, 9139.3280421], [1516754880000, 3.206e-05, 3.206e-05, 3.191e-05, 3.192e-05, 20970.63241347], [1516754940000, 3.203e-05, 3.208e-05, 3.203e-05, 3.208e-05, 5008.562343], [1516755000000, 3.208e-05, 3.209e-05, 3.207e-05, 3.207e-05, 21919.52466903], [1516755060000, 3.207e-05, 3.207e-05, 3.192e-05, 3.192e-05, 13461.58958968], [1516755120000, 3.192e-05, 3.193e-05, 3.192e-05, 3.193e-05, 13945.07572899], [1516755180000, 3.193e-05, 3.195e-05, 3.193e-05, 3.195e-05, 1235.55131637], [1516755240000, 3.195e-05, 3.209e-05, 3.194e-05, 3.203e-05, 15495.96620557], [1516755300000, 3.204e-05, 3.212e-05, 3.203e-05, 3.212e-05, 15302.02038325], [1516755360000, 3.213e-05, 3.217e-05, 3.203e-05, 3.205e-05, 52429.75803006], [1516755420000, 3.205e-05, 3.225e-05, 3.205e-05, 3.225e-05, 89001.11698033], [1516755480000, 3.225e-05, 3.24e-05, 3.225e-05, 3.24e-05, 154283.782598], [1516755540000, 3.234e-05, 3.253e-05, 3.234e-05, 3.253e-05, 120192.43871279], [1516755600000, 3.253e-05, 3.27e-05, 3.25e-05, 3.266e-05, 152395.59833158], [1516755660000, 3.27e-05, 3.281e-05, 3.27e-05, 3.272e-05, 286050.09390292], [1516755720000, 3.272e-05, 3.272e-05, 3.241e-05, 3.242e-05, 118539.47671084], [1516755780000, 3.242e-05, 3.247e-05, 3.237e-05, 3.239e-05, 106951.7279157], [1516755840000, 3.239e-05, 3.27e-05, 3.239e-05, 3.27e-05, 10520.29973968], [1516755900000, 3.276e-05, 3.277e-05, 3.26e-05, 3.274e-05, 49584.60429216], [1516755960000, 3.27e-05, 3.27e-05, 3.262e-05, 3.27e-05, 10693.65392435], [1516756020000, 3.27e-05, 3.281e-05, 3.27e-05, 3.281e-05, 89008.37230457], [1516756080000, 3.281e-05, 3.3e-05, 3.275e-05, 3.299e-05, 151581.89462572], [1516756140000, 3.289e-05, 3.304e-05, 3.289e-05, 3.3e-05, 135341.02677668], [1516756200000, 3.296e-05, 3.306e-05, 3.295e-05, 3.296e-05, 110537.97880291], [1516756260000, 3.296e-05, 3.304e-05, 3.29e-05, 3.29e-05, 77732.657476], [1516756320000, 3.29e-05, 3.29e-05, 3.288e-05, 3.289e-05, 34595.20973543], [1516756380000, 3.289e-05, 3.295e-05, 3.26e-05, 3.262e-05, 61211.42210115], [1516756440000, 3.262e-05, 3.287e-05, 3.262e-05, 3.284e-05, 13180.70963923], [1516756500000, 3.285e-05, 3.285e-05, 3.259e-05, 3.259e-05, 28848.49614383], [1516756560000, 3.24e-05, 3.24e-05, 3.238e-05, 3.239e-05, 33899.46177907], [1516756620000, 3.239e-05, 3.239e-05, 3.21e-05, 3.21e-05, 30733.23851859], [1516756680000, 3.216e-05, 3.232e-05, 3.202e-05, 3.202e-05, 33087.86417538], [1516756740000, 3.21e-05, 3.21e-05, 3.19e-05, 3.196e-05, 33002.67315801], [1516756800000, 3.196e-05, 3.2e-05, 3.19e-05, 3.199e-05, 19533.01156706], [1516756860000, 3.199e-05, 3.223e-05, 3.199e-05, 3.223e-05, 42555.58761304], [1516756920000, 3.223e-05, 3.241e-05, 3.18e-05, 3.221e-05, 56870.55517659], [1516756980000, 3.219e-05, 3.221e-05, 3.185e-05, 3.214e-05, 8129.24105332], [1516757040000, 3.213e-05, 3.214e-05, 3.185e-05, 3.189e-05, 52522.00158988], [1516757100000, 3.187e-05, 3.206e-05, 3.187e-05, 3.206e-05, 26475.59300336], [1516757160000, 3.205e-05, 3.231e-05, 3.205e-05, 3.218e-05, 58488.43173722], [1516757220000, 3.218e-05, 3.236e-05, 3.215e-05, 3.236e-05, 31277.93314497], [1516757280000, 3.236e-05, 3.241e-05, 3.227e-05, 3.241e-05, 13091.73246548], [1516757340000, 3.227e-05, 3.24e-05, 3.227e-05, 3.228e-05, 28577.01608463], [1516757400000, 3.228e-05, 3.24e-05, 3.228e-05, 3.238e-05, 35920.75894868], [1516757460000, 3.236e-05, 3.237e-05, 3.189e-05, 3.189e-05, 14050.29187389], [1516757520000, 3.189e-05, 3.227e-05, 3.189e-05, 3.197e-05, 11862.58552265], [1516757580000, 3.197e-05, 3.197e-05, 3.194e-05, 3.195e-05, 20658.95847414], [1516757640000, 3.195e-05, 3.195e-05, 3.187e-05, 3.188e-05, 34720.18189489], [1516757700000, 3.187e-05, 3.187e-05, 3.169e-05, 3.169e-05, 59276.36649351], [1516757760000, 3.169e-05, 3.169e-05, 3.141e-05, 3.149e-05, 59844.18921774], [1516757820000, 3.149e-05, 3.149e-05, 3.14e-05, 3.145e-05, 84500.57511825], [1516757880000, 3.143e-05, 3.145e-05, 3.138e-05, 3.138e-05, 27973.08197784], [1516757940000, 3.138e-05, 3.138e-05, 3.106e-05, 3.114e-05, 58085.91534243], [1516758000000, 3.114e-05, 3.114e-05, 3.1e-05, 3.101e-05, 60532.59151148], [1516758060000, 3.101e-05, 3.137e-05, 3.096e-05, 3.137e-05, 32123.6406807], [1516758120000, 3.137e-05, 3.137e-05, 3.107e-05, 3.133e-05, 4971.05420602], [1516758180000, 3.133e-05, 3.139e-05, 3.133e-05, 3.139e-05, 14620.44125602], [1516758240000, 3.139e-05, 3.168e-05, 3.139e-05, 3.167e-05, 523.04706301], [1516758300000, 3.142e-05, 3.161e-05, 3.14e-05, 3.143e-05, 2628.12860541], [1516758360000, 3.159e-05, 3.161e-05, 3.113e-05, 3.143e-05, 13532.96597695], [1516758420000, 3.143e-05, 3.143e-05, 3.143e-05, 3.143e-05, 179.03677701], [1516758480000, 3.143e-05, 3.152e-05, 3.138e-05, 3.138e-05, 623.37875911], [1516758540000, 3.162e-05, 3.162e-05, 3.145e-05, 3.145e-05, 2008.53610057], [1516758600000, 3.15e-05, 3.195e-05, 3.15e-05, 3.195e-05, 6262.63687122], [1516758660000, 3.196e-05, 3.2e-05, 3.145e-05, 3.146e-05, 19836.56788399], [1516758720000, 3.168e-05, 3.181e-05, 3.168e-05, 3.181e-05, 5098.65740389], [1516758780000, 3.181e-05, 3.188e-05, 3.153e-05, 3.153e-05, 7984.2200116], [1516758840000, 3.17e-05, 3.182e-05, 3.146e-05, 3.146e-05, 5845.87944237], [1516758900000, 3.158e-05, 3.177e-05, 3.158e-05, 3.177e-05, 195.9961119], [1516758960000, 3.173e-05, 3.173e-05, 3.165e-05, 3.172e-05, 7266.07819914], [1516759020000, 3.174e-05, 3.174e-05, 3.172e-05, 3.172e-05, 2155.43886311], [1516759080000, 3.172e-05, 3.172e-05, 3.171e-05, 3.171e-05, 7422.60938326], [1516759140000, 3.171e-05, 3.171e-05, 3.171e-05, 3.171e-05, 3697.32132513], [1516759200000, 3.172e-05, 3.172e-05, 3.171e-05, 3.172e-05, 7701.29323288], [1516759260000, 3.172e-05, 3.172e-05, 3.172e-05, 3.172e-05, 5540.87748472], [1516759320000, 3.172e-05, 3.172e-05, 3.162e-05, 3.17e-05, 2041.47164], [1516759380000, 3.161e-05, 3.17e-05, 3.158e-05, 3.158e-05, 4609.06548845], [1516759440000, 3.158e-05, 3.158e-05, 3.157e-05, 3.157e-05, 3629.19831551], [1516759500000, 3.156e-05, 3.157e-05, 3.156e-05, 3.157e-05, 1928.8718787], [1516759560000, 3.157e-05, 3.158e-05, 3.146e-05, 3.146e-05, 6057.61665445], [1516759620000, 3.146e-05, 3.158e-05, 3.145e-05, 3.158e-05, 4367.13104772], [1516759680000, 3.157e-05, 3.157e-05, 3.157e-05, 3.157e-05, 5353.72309565], [1516759740000, 3.157e-05, 3.157e-05, 3.15e-05, 3.15e-05, 2113.17711772], [1516759800000, 3.15e-05, 3.156e-05, 3.15e-05, 3.156e-05, 437.0], [1516759860000, 3.156e-05, 3.156e-05, 3.15e-05, 3.15e-05, 2791.12277574], [1516759920000, 3.15e-05, 3.15e-05, 3.15e-05, 3.15e-05, 1673.35036455], [1516759980000, 3.149e-05, 3.156e-05, 3.141e-05, 3.156e-05, 34370.05148086], [1516760040000, 3.155e-05, 3.157e-05, 3.155e-05, 3.157e-05, 9793.10913148], [1516760100000, 3.156e-05, 3.156e-05, 3.155e-05, 3.155e-05, 1358.75301013], [1516760160000, 3.154e-05, 3.154e-05, 3.154e-05, 3.154e-05, 753.55331253], [1516760220000, 3.154e-05, 3.157e-05, 3.14e-05, 3.157e-05, 8669.76327457], [1516760280000, 3.14e-05, 3.157e-05, 3.14e-05, 3.156e-05, 6182.96375093], [1516760340000, 3.157e-05, 3.157e-05, 3.156e-05, 3.157e-05, 1263.36862849], [1516760400000, 3.166e-05, 3.166e-05, 3.16e-05, 3.16e-05, 814.46164956], [1516760460000, 3.16e-05, 3.16e-05, 3.138e-05, 3.16e-05, 1791.46033253], [1516760520000, 3.142e-05, 3.159e-05, 3.139e-05, 3.159e-05, 14968.24365087], [1516760580000, 3.158e-05, 3.158e-05, 3.14e-05, 3.157e-05, 1890.5279219], [1516760700000, 3.147e-05, 3.147e-05, 3.147e-05, 3.147e-05, 2629.15707073], [1516760760000, 3.157e-05, 3.157e-05, 3.157e-05, 3.157e-05, 2156.39712847], [1516760820000, 3.159e-05, 3.159e-05, 3.159e-05, 3.159e-05, 1671.26862494], [1516760880000, 3.159e-05, 3.159e-05, 3.157e-05, 3.157e-05, 28795.2580448], [1516760940000, 3.16e-05, 3.16e-05, 3.16e-05, 3.16e-05, 513.033664], [1516761060000, 3.151e-05, 3.159e-05, 3.139e-05, 3.141e-05, 18692.32862847], [1516761120000, 3.146e-05, 3.146e-05, 3.146e-05, 3.146e-05, 712.94918771], [1516761180000, 3.147e-05, 3.148e-05, 3.139e-05, 3.148e-05, 7325.30417726], [1516761240000, 3.148e-05, 3.149e-05, 3.148e-05, 3.149e-05, 3695.47190486], [1516761300000, 3.16e-05, 3.16e-05, 3.16e-05, 3.16e-05, 300.0], [1516761360000, 3.151e-05, 3.16e-05, 3.151e-05, 3.151e-05, 12869.53852247], [1516761420000, 3.159e-05, 3.159e-05, 3.153e-05, 3.153e-05, 1841.11136535], [1516761480000, 3.152e-05, 3.153e-05, 3.15e-05, 3.15e-05, 5620.93655536], [1516761540000, 3.15e-05, 3.154e-05, 3.15e-05, 3.153e-05, 6998.48743022], [1516761600000, 3.154e-05, 3.154e-05, 3.15e-05, 3.151e-05, 6698.01140248], [1516761660000, 3.151e-05, 3.151e-05, 3.141e-05, 3.141e-05, 4345.82781372], [1516761720000, 3.141e-05, 3.142e-05, 3.136e-05, 3.136e-05, 21385.71400998], [1516761780000, 3.127e-05, 3.136e-05, 3.126e-05, 3.126e-05, 2398.88716636], [1516761840000, 3.151e-05, 3.151e-05, 3.151e-05, 3.151e-05, 364.96350364], [1516761900000, 3.15e-05, 3.15e-05, 3.15e-05, 3.15e-05, 33968.6189517], [1516761960000, 3.148e-05, 3.15e-05, 3.148e-05, 3.15e-05, 16778.27344655], [1516762020000, 3.133e-05, 3.133e-05, 3.126e-05, 3.132e-05, 8759.89823971], [1516762080000, 3.126e-05, 3.132e-05, 3.12e-05, 3.12e-05, 20890.20624073], [1516762140000, 3.126e-05, 3.126e-05, 3.118e-05, 3.126e-05, 55664.14489173], [1516762200000, 3.117e-05, 3.117e-05, 3.114e-05, 3.116e-05, 4699.92167986], [1516762260000, 3.116e-05, 3.126e-05, 3.107e-05, 3.107e-05, 16542.67074109], [1516762320000, 3.126e-05, 3.126e-05, 3.12e-05, 3.12e-05, 1105.16238614], [1516762380000, 3.121e-05, 3.121e-05, 3.12e-05, 3.12e-05, 41390.36643172], [1516762440000, 3.12e-05, 3.12e-05, 3.104e-05, 3.104e-05, 11030.48893287], [1516762500000, 3.104e-05, 3.12e-05, 3.104e-05, 3.118e-05, 11085.92519735], [1516762560000, 3.118e-05, 3.118e-05, 3.117e-05, 3.117e-05, 2214.47401371], [1516762620000, 3.117e-05, 3.117e-05, 3.106e-05, 3.11e-05, 4693.26085256], [1516762680000, 3.11e-05, 3.119e-05, 3.11e-05, 3.119e-05, 18840.08922658], [1516762740000, 3.119e-05, 3.119e-05, 3.119e-05, 3.119e-05, 2641.15343933], [1516762800000, 3.119e-05, 3.119e-05, 3.119e-05, 3.119e-05, 501.28382154], [1516762860000, 3.119e-05, 3.119e-05, 3.115e-05, 3.115e-05, 7262.14010504], [1516762920000, 3.115e-05, 3.117e-05, 3.11e-05, 3.116e-05, 43485.85520634], [1516762980000, 3.116e-05, 3.117e-05, 3.116e-05, 3.116e-05, 8215.11717499], [1516763040000, 3.117e-05, 3.117e-05, 3.116e-05, 3.117e-05, 9459.20883369], [1516763100000, 3.117e-05, 3.117e-05, 3.116e-05, 3.116e-05, 13101.1590552], [1516763160000, 3.116e-05, 3.116e-05, 3.115e-05, 3.116e-05, 24126.41482159], [1516763220000, 3.116e-05, 3.117e-05, 3.116e-05, 3.117e-05, 14478.32425411], [1516763280000, 3.117e-05, 3.117e-05, 3.117e-05, 3.117e-05, 12901.59711254], [1516763340000, 3.117e-05, 3.117e-05, 3.116e-05, 3.117e-05, 7874.98148627], [1516763400000, 3.116e-05, 3.117e-05, 3.116e-05, 3.116e-05, 1920.06514691], [1516763460000, 3.117e-05, 3.117e-05, 3.116e-05, 3.116e-05, 4929.12905152], [1516763520000, 3.117e-05, 3.117e-05, 3.116e-05, 3.117e-05, 4362.18364767], [1516763580000, 3.117e-05, 3.117e-05, 3.11e-05, 3.11e-05, 27403.78509679], [1516763640000, 3.11e-05, 3.11e-05, 3.11e-05, 3.11e-05, 100.0], [1516763760000, 3.109e-05, 3.109e-05, 3.05e-05, 3.05e-05, 802791.54996185], [1516763820000, 3.068e-05, 3.098e-05, 3.018e-05, 3.085e-05, 256422.36781394], [1516763880000, 3.084e-05, 3.084e-05, 3.03e-05, 3.067e-05, 51159.81252577], [1516763940000, 3.067e-05, 3.074e-05, 3.057e-05, 3.071e-05, 15208.85708663], [1516764000000, 3.07e-05, 3.07e-05, 3.067e-05, 3.067e-05, 20690.68576583], [1516764060000, 3.067e-05, 3.067e-05, 3.053e-05, 3.054e-05, 34078.72105147], [1516764120000, 3.067e-05, 3.07e-05, 3.065e-05, 3.065e-05, 1392.02900039], [1516764180000, 3.065e-05, 3.065e-05, 3.057e-05, 3.057e-05, 14727.08375611], [1516764240000, 3.065e-05, 3.08e-05, 3.065e-05, 3.08e-05, 11846.24901116], [1516764300000, 3.098e-05, 3.098e-05, 3.073e-05, 3.097e-05, 14333.83534307], [1516764360000, 3.083e-05, 3.1e-05, 3.073e-05, 3.099e-05, 24916.70593455], [1516764420000, 3.098e-05, 3.098e-05, 3.066e-05, 3.066e-05, 16154.30579717], [1516764480000, 3.069e-05, 3.07e-05, 3.069e-05, 3.069e-05, 4427.72330081], [1516764540000, 3.069e-05, 3.093e-05, 3.066e-05, 3.093e-05, 7238.63583475], [1516764600000, 3.093e-05, 3.098e-05, 3.093e-05, 3.098e-05, 7241.36340872], [1516764660000, 3.098e-05, 3.098e-05, 3.082e-05, 3.098e-05, 1189.71390897], [1516764720000, 3.098e-05, 3.099e-05, 3.084e-05, 3.096e-05, 8164.41971775], [1516764780000, 3.096e-05, 3.096e-05, 3.084e-05, 3.084e-05, 10193.70323117], [1516764840000, 3.084e-05, 3.084e-05, 3.071e-05, 3.084e-05, 10140.87454347], [1516764900000, 3.07e-05, 3.084e-05, 3.07e-05, 3.071e-05, 6496.749], [1516764960000, 3.072e-05, 3.084e-05, 3.072e-05, 3.073e-05, 8133.84249086], [1516765020000, 3.084e-05, 3.084e-05, 3.066e-05, 3.084e-05, 22541.37462585], [1516765080000, 3.088e-05, 3.088e-05, 3.07e-05, 3.07e-05, 4187.51711148], [1516765140000, 3.07e-05, 3.084e-05, 3.07e-05, 3.08e-05, 6212.13930615], [1516765200000, 3.07e-05, 3.08e-05, 3.07e-05, 3.072e-05, 9189.92601337], [1516765260000, 3.07e-05, 3.07e-05, 3.066e-05, 3.066e-05, 30905.37850399], [1516765320000, 3.066e-05, 3.084e-05, 3.064e-05, 3.064e-05, 85943.98063123], [1516765380000, 3.084e-05, 3.084e-05, 3.065e-05, 3.065e-05, 4532.03004353], [1516765440000, 3.082e-05, 3.082e-05, 3.065e-05, 3.065e-05, 8603.79519899], [1516765500000, 3.064e-05, 3.065e-05, 3.06e-05, 3.06e-05, 60012.25942822], [1516765560000, 3.06e-05, 3.082e-05, 3.06e-05, 3.082e-05, 2760.81228494], [1516765620000, 3.082e-05, 3.082e-05, 3.081e-05, 3.081e-05, 1831.24584107], [1516765680000, 3.081e-05, 3.081e-05, 3.068e-05, 3.081e-05, 2608.75757643], [1516765740000, 3.081e-05, 3.081e-05, 3.081e-05, 3.081e-05, 134.40349318], [1516765800000, 3.081e-05, 3.081e-05, 3.081e-05, 3.081e-05, 16285.40031035], [1516765860000, 3.081e-05, 3.081e-05, 3.081e-05, 3.081e-05, 9072.0953912], [1516765920000, 3.082e-05, 3.098e-05, 3.082e-05, 3.098e-05, 981.60078924], [1516765980000, 3.09e-05, 3.09e-05, 3.09e-05, 3.09e-05, 302.57575759], [1516766040000, 3.1e-05, 3.105e-05, 3.09e-05, 3.09e-05, 659.15875934], [1516766100000, 3.093e-05, 3.1e-05, 3.082e-05, 3.099e-05, 17012.25352459], [1516766160000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 5356.73911994], [1516766220000, 3.1e-05, 3.1e-05, 3.099e-05, 3.099e-05, 6049.66071371], [1516766280000, 3.099e-05, 3.099e-05, 3.083e-05, 3.083e-05, 2650.91616458], [1516766340000, 3.084e-05, 3.098e-05, 3.083e-05, 3.097e-05, 5838.37152244], [1516766400000, 3.096e-05, 3.096e-05, 3.083e-05, 3.083e-05, 25773.69811508], [1516766460000, 3.096e-05, 3.096e-05, 3.083e-05, 3.096e-05, 3717.81112082], [1516766520000, 3.083e-05, 3.096e-05, 3.083e-05, 3.083e-05, 10632.33785437], [1516766580000, 3.096e-05, 3.097e-05, 3.096e-05, 3.097e-05, 11304.51766971], [1516766640000, 3.097e-05, 3.097e-05, 3.096e-05, 3.096e-05, 5387.62483117], [1516766700000, 3.096e-05, 3.097e-05, 3.096e-05, 3.096e-05, 6185.41075723], [1516766760000, 3.096e-05, 3.096e-05, 3.085e-05, 3.093e-05, 14645.35725978], [1516766820000, 3.092e-05, 3.092e-05, 3.085e-05, 3.089e-05, 2058.74162362], [1516766880000, 3.091e-05, 3.091e-05, 3.086e-05, 3.086e-05, 7822.80549546], [1516766940000, 3.086e-05, 3.086e-05, 3.086e-05, 3.086e-05, 4093.6753213], [1516767000000, 3.091e-05, 3.094e-05, 3.085e-05, 3.085e-05, 12369.28177568], [1516767060000, 3.093e-05, 3.093e-05, 3.085e-05, 3.09e-05, 4020.64331039], [1516767120000, 3.091e-05, 3.091e-05, 3.09e-05, 3.09e-05, 6448.47738763], [1516767180000, 3.09e-05, 3.091e-05, 3.085e-05, 3.085e-05, 39496.28305579], [1516767240000, 3.091e-05, 3.091e-05, 3.085e-05, 3.085e-05, 11522.81929611], [1516767300000, 3.085e-05, 3.088e-05, 3.085e-05, 3.088e-05, 10138.25826834], [1516767360000, 3.085e-05, 3.089e-05, 3.085e-05, 3.085e-05, 11450.80650416], [1516767420000, 3.085e-05, 3.086e-05, 3.084e-05, 3.084e-05, 19791.87587891], [1516767480000, 3.084e-05, 3.084e-05, 3.083e-05, 3.083e-05, 2147.30099808], [1516767540000, 3.083e-05, 3.091e-05, 3.083e-05, 3.091e-05, 10488.35372328], [1516767600000, 3.098e-05, 3.098e-05, 3.097e-05, 3.098e-05, 7951.32847644], [1516767660000, 3.098e-05, 3.098e-05, 3.098e-05, 3.098e-05, 8806.32044981], [1516767720000, 3.098e-05, 3.098e-05, 3.095e-05, 3.098e-05, 12436.81708064], [1516767780000, 3.098e-05, 3.098e-05, 3.098e-05, 3.098e-05, 5773.62869755], [1516767840000, 3.093e-05, 3.098e-05, 3.092e-05, 3.098e-05, 391.99143299], [1516767900000, 3.098e-05, 3.099e-05, 3.093e-05, 3.093e-05, 3236.01923822], [1516767960000, 3.094e-05, 3.094e-05, 3.094e-05, 3.094e-05, 42.9220328], [1516768020000, 3.094e-05, 3.094e-05, 3.092e-05, 3.092e-05, 4651.91067062], [1516768080000, 3.092e-05, 3.098e-05, 3.086e-05, 3.086e-05, 5913.20082413], [1516768140000, 3.088e-05, 3.088e-05, 3.086e-05, 3.086e-05, 12069.83100804], [1516768200000, 3.086e-05, 3.097e-05, 3.083e-05, 3.097e-05, 6827.27398395], [1516768260000, 3.095e-05, 3.095e-05, 3.082e-05, 3.082e-05, 5969.39380344], [1516768320000, 3.084e-05, 3.084e-05, 3.083e-05, 3.083e-05, 371.54381115], [1516768380000, 3.083e-05, 3.092e-05, 3.081e-05, 3.092e-05, 6546.83142483], [1516768440000, 3.092e-05, 3.092e-05, 3.082e-05, 3.086e-05, 4074.83223477], [1516768500000, 3.09e-05, 3.093e-05, 3.082e-05, 3.082e-05, 3903.47599271], [1516768560000, 3.082e-05, 3.087e-05, 3.08e-05, 3.085e-05, 10729.29565853], [1516768620000, 3.08e-05, 3.085e-05, 3.08e-05, 3.085e-05, 2796.04371767], [1516768680000, 3.085e-05, 3.086e-05, 3.08e-05, 3.08e-05, 9510.00145976], [1516768740000, 3.081e-05, 3.081e-05, 3.081e-05, 3.081e-05, 1315.72402675], [1516768800000, 3.09e-05, 3.091e-05, 3.09e-05, 3.091e-05, 502.67880514], [1516768860000, 3.09e-05, 3.09e-05, 3.089e-05, 3.089e-05, 1843.22536503], [1516768920000, 3.09e-05, 3.095e-05, 3.082e-05, 3.095e-05, 13623.90871358], [1516768980000, 3.095e-05, 3.097e-05, 3.085e-05, 3.085e-05, 1238.7295315], [1516769040000, 3.084e-05, 3.084e-05, 3.084e-05, 3.084e-05, 36.03277473], [1516769100000, 3.084e-05, 3.084e-05, 3.084e-05, 3.084e-05, 1031.47187527], [1516769160000, 3.084e-05, 3.085e-05, 3.084e-05, 3.084e-05, 7975.32540379], [1516769220000, 3.097e-05, 3.097e-05, 3.097e-05, 3.097e-05, 23.93643321], [1516769280000, 3.096e-05, 3.097e-05, 3.096e-05, 3.097e-05, 26869.62743865], [1516769340000, 3.097e-05, 3.113e-05, 3.097e-05, 3.113e-05, 16487.88212753], [1516769400000, 3.111e-05, 3.112e-05, 3.086e-05, 3.086e-05, 9183.44740711], [1516769460000, 3.087e-05, 3.096e-05, 3.086e-05, 3.096e-05, 2078.0], [1516769520000, 3.097e-05, 3.097e-05, 3.086e-05, 3.097e-05, 8747.89898953], [1516769580000, 3.097e-05, 3.097e-05, 3.092e-05, 3.092e-05, 8955.31135697], [1516769640000, 3.092e-05, 3.092e-05, 3.087e-05, 3.087e-05, 4861.82695114], [1516769700000, 3.087e-05, 3.089e-05, 3.086e-05, 3.089e-05, 230.58565189], [1516769760000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 19.82456], [1516769820000, 3.088e-05, 3.088e-05, 3.086e-05, 3.086e-05, 2129.66898477], [1516769880000, 3.087e-05, 3.087e-05, 3.087e-05, 3.087e-05, 266.98064147], [1516769940000, 3.088e-05, 3.088e-05, 3.087e-05, 3.087e-05, 10456.22434143], [1516770000000, 3.104e-05, 3.104e-05, 3.104e-05, 3.104e-05, 1201.69342156], [1516770060000, 3.105e-05, 3.106e-05, 3.104e-05, 3.106e-05, 11580.95094456], [1516770120000, 3.108e-05, 3.112e-05, 3.104e-05, 3.104e-05, 14237.8704298], [1516770180000, 3.104e-05, 3.104e-05, 3.104e-05, 3.104e-05, 700.0], [1516770240000, 3.104e-05, 3.104e-05, 3.104e-05, 3.104e-05, 4477.94], [1516770300000, 3.093e-05, 3.104e-05, 3.093e-05, 3.104e-05, 7697.35551693], [1516770360000, 3.09e-05, 3.104e-05, 3.09e-05, 3.09e-05, 13321.12094922], [1516770420000, 3.09e-05, 3.104e-05, 3.089e-05, 3.104e-05, 15280.67497989], [1516770480000, 3.104e-05, 3.104e-05, 3.104e-05, 3.104e-05, 416.0], [1516770540000, 3.09e-05, 3.103e-05, 3.09e-05, 3.103e-05, 1523.57459936], [1516770600000, 3.103e-05, 3.104e-05, 3.103e-05, 3.104e-05, 1779.0], [1516770660000, 3.104e-05, 3.104e-05, 3.093e-05, 3.093e-05, 5134.56048818], [1516770720000, 3.112e-05, 3.112e-05, 3.104e-05, 3.104e-05, 7126.3847648], [1516770780000, 3.112e-05, 3.112e-05, 3.112e-05, 3.112e-05, 96.62003735], [1516770840000, 3.112e-05, 3.12e-05, 3.105e-05, 3.105e-05, 1851.41101471], [1516770900000, 3.105e-05, 3.12e-05, 3.104e-05, 3.104e-05, 187.58944483], [1516770960000, 3.104e-05, 3.112e-05, 3.104e-05, 3.105e-05, 1815.3624834], [1516771020000, 3.104e-05, 3.104e-05, 3.104e-05, 3.104e-05, 6380.37571934], [1516771080000, 3.104e-05, 3.104e-05, 3.104e-05, 3.104e-05, 1531.74877362], [1516771140000, 3.105e-05, 3.105e-05, 3.105e-05, 3.105e-05, 1585.999998], [1516771200000, 3.104e-05, 3.112e-05, 3.104e-05, 3.112e-05, 1895.02664935], [1516771260000, 3.113e-05, 3.113e-05, 3.112e-05, 3.112e-05, 191.9102725], [1516771320000, 3.112e-05, 3.113e-05, 3.112e-05, 3.113e-05, 1299.05462121], [1516771380000, 3.114e-05, 3.114e-05, 3.112e-05, 3.114e-05, 31590.54732097], [1516771440000, 3.114e-05, 3.114e-05, 3.112e-05, 3.113e-05, 9898.79959514], [1516771500000, 3.112e-05, 3.112e-05, 3.112e-05, 3.112e-05, 802.02838325], [1516771560000, 3.113e-05, 3.114e-05, 3.113e-05, 3.114e-05, 9272.82446041], [1516771620000, 3.113e-05, 3.114e-05, 3.113e-05, 3.114e-05, 1414.57377059], [1516771680000, 3.115e-05, 3.115e-05, 3.115e-05, 3.115e-05, 2521.2442548], [1516771740000, 3.116e-05, 3.137e-05, 3.116e-05, 3.13e-05, 22620.79570872], [1516771800000, 3.13e-05, 3.143e-05, 3.115e-05, 3.115e-05, 12225.51981252], [1516771860000, 3.115e-05, 3.115e-05, 3.115e-05, 3.115e-05, 238.10468981], [1516771920000, 3.115e-05, 3.115e-05, 3.105e-05, 3.105e-05, 6867.43166429], [1516771980000, 3.107e-05, 3.107e-05, 3.105e-05, 3.105e-05, 24730.43624329], [1516772100000, 3.129e-05, 3.13e-05, 3.129e-05, 3.129e-05, 769.20515841], [1516772160000, 3.11e-05, 3.11e-05, 3.106e-05, 3.106e-05, 12745.52249677], [1516772220000, 3.107e-05, 3.107e-05, 3.106e-05, 3.106e-05, 440.77299376], [1516772280000, 3.106e-05, 3.11e-05, 3.106e-05, 3.11e-05, 2254.69762843], [1516772340000, 3.11e-05, 3.11e-05, 3.11e-05, 3.11e-05, 7145.89016757], [1516772400000, 3.111e-05, 3.111e-05, 3.11e-05, 3.11e-05, 620.97224668], [1516772460000, 3.108e-05, 3.111e-05, 3.107e-05, 3.111e-05, 11455.96019432], [1516772520000, 3.111e-05, 3.111e-05, 3.111e-05, 3.111e-05, 111.55551456], [1516772580000, 3.109e-05, 3.111e-05, 3.109e-05, 3.111e-05, 523.67642328], [1516772640000, 3.109e-05, 3.109e-05, 3.108e-05, 3.108e-05, 10511.45163412], [1516772700000, 3.108e-05, 3.111e-05, 3.108e-05, 3.111e-05, 5272.53938158], [1516772760000, 3.12e-05, 3.12e-05, 3.12e-05, 3.12e-05, 386.36606231], [1516772820000, 3.121e-05, 3.126e-05, 3.12e-05, 3.126e-05, 19413.73391056], [1516772880000, 3.12e-05, 3.126e-05, 3.12e-05, 3.126e-05, 443.20919275], [1516772940000, 3.12e-05, 3.121e-05, 3.12e-05, 3.121e-05, 4318.66369409], [1516773000000, 3.129e-05, 3.129e-05, 3.128e-05, 3.128e-05, 962.58238337], [1516773060000, 3.129e-05, 3.13e-05, 3.129e-05, 3.13e-05, 557.43634414], [1516773120000, 3.128e-05, 3.128e-05, 3.122e-05, 3.125e-05, 2322.99778536], [1516773180000, 3.125e-05, 3.135e-05, 3.125e-05, 3.128e-05, 13668.36678314], [1516773240000, 3.128e-05, 3.141e-05, 3.126e-05, 3.14e-05, 14363.88364523], [1516773300000, 3.127e-05, 3.133e-05, 3.127e-05, 3.133e-05, 5629.2463017], [1516773360000, 3.133e-05, 3.139e-05, 3.127e-05, 3.128e-05, 11687.27061069], [1516773420000, 3.128e-05, 3.136e-05, 3.128e-05, 3.136e-05, 271.09935973], [1516773480000, 3.128e-05, 3.128e-05, 3.128e-05, 3.128e-05, 46.99700786], [1516773600000, 3.129e-05, 3.129e-05, 3.126e-05, 3.126e-05, 4241.18486337], [1516773660000, 3.125e-05, 3.125e-05, 3.121e-05, 3.121e-05, 2981.3686074], [1516773720000, 3.121e-05, 3.128e-05, 3.108e-05, 3.128e-05, 23772.67700818], [1516773780000, 3.111e-05, 3.111e-05, 3.111e-05, 3.111e-05, 326.26427406], [1516773840000, 3.111e-05, 3.111e-05, 3.111e-05, 3.111e-05, 4486.11562673], [1516773900000, 3.127e-05, 3.127e-05, 3.127e-05, 3.127e-05, 81.05673972], [1516773960000, 3.126e-05, 3.126e-05, 3.121e-05, 3.126e-05, 6096.14852511], [1516774020000, 3.126e-05, 3.126e-05, 3.123e-05, 3.123e-05, 5725.135811], [1516774080000, 3.124e-05, 3.126e-05, 3.124e-05, 3.126e-05, 1541.12991838], [1516774140000, 3.124e-05, 3.124e-05, 3.123e-05, 3.123e-05, 30289.96182951], [1516774200000, 3.124e-05, 3.127e-05, 3.123e-05, 3.123e-05, 29540.79381179], [1516774260000, 3.124e-05, 3.127e-05, 3.123e-05, 3.127e-05, 2590.1598092], [1516774320000, 3.127e-05, 3.127e-05, 3.127e-05, 3.127e-05, 489.08572827], [1516774380000, 3.127e-05, 3.127e-05, 3.124e-05, 3.124e-05, 1245.71913753], [1516774440000, 3.124e-05, 3.124e-05, 3.124e-05, 3.124e-05, 995.59353006], [1516774500000, 3.126e-05, 3.128e-05, 3.126e-05, 3.128e-05, 30546.19798658], [1516774560000, 3.128e-05, 3.128e-05, 3.124e-05, 3.124e-05, 5334.58623715], [1516774620000, 3.124e-05, 3.124e-05, 3.123e-05, 3.124e-05, 3530.95837514], [1516774680000, 3.123e-05, 3.124e-05, 3.123e-05, 3.124e-05, 7534.5183346], [1516774740000, 3.124e-05, 3.124e-05, 3.124e-05, 3.124e-05, 220.79319778], [1516774800000, 3.124e-05, 3.128e-05, 3.121e-05, 3.128e-05, 13421.25394055], [1516774860000, 3.122e-05, 3.122e-05, 3.121e-05, 3.121e-05, 38.1928231], [1516774920000, 3.121e-05, 3.123e-05, 3.121e-05, 3.121e-05, 2833.3194279], [1516774980000, 3.128e-05, 3.128e-05, 3.128e-05, 3.128e-05, 1282.19134537], [1516775040000, 3.128e-05, 3.128e-05, 3.128e-05, 3.128e-05, 39.26500883], [1516775100000, 3.125e-05, 3.125e-05, 3.121e-05, 3.121e-05, 20712.86223715], [1516775160000, 3.113e-05, 3.113e-05, 3.109e-05, 3.112e-05, 8684.25495704], [1516775220000, 3.112e-05, 3.128e-05, 3.112e-05, 3.128e-05, 1262.21614797], [1516775280000, 3.128e-05, 3.128e-05, 3.128e-05, 3.128e-05, 862.15184545], [1516775340000, 3.125e-05, 3.128e-05, 3.125e-05, 3.128e-05, 2308.93943242], [1516775400000, 3.128e-05, 3.139e-05, 3.128e-05, 3.139e-05, 6372.50027708], [1516775460000, 3.139e-05, 3.14e-05, 3.134e-05, 3.134e-05, 4308.42781893], [1516775520000, 3.135e-05, 3.135e-05, 3.134e-05, 3.134e-05, 12378.3101174], [1516775580000, 3.118e-05, 3.134e-05, 3.116e-05, 3.134e-05, 1007.76471149], [1516775640000, 3.134e-05, 3.134e-05, 3.133e-05, 3.134e-05, 1081.51746173], [1516775700000, 3.133e-05, 3.133e-05, 3.133e-05, 3.133e-05, 1626.20502853], [1516775760000, 3.139e-05, 3.139e-05, 3.133e-05, 3.133e-05, 401.51609638], [1516775820000, 3.134e-05, 3.134e-05, 3.12e-05, 3.12e-05, 3166.15834917], [1516775880000, 3.12e-05, 3.131e-05, 3.119e-05, 3.119e-05, 16091.80352938], [1516775940000, 3.116e-05, 3.116e-05, 3.116e-05, 3.116e-05, 1486.719993], [1516776000000, 3.116e-05, 3.117e-05, 3.116e-05, 3.116e-05, 13761.51815621], [1516776060000, 3.116e-05, 3.119e-05, 3.116e-05, 3.119e-05, 266.01230425], [1516776120000, 3.119e-05, 3.119e-05, 3.117e-05, 3.117e-05, 8240.00982361], [1516776180000, 3.116e-05, 3.117e-05, 3.116e-05, 3.116e-05, 5857.90313561], [1516776240000, 3.117e-05, 3.118e-05, 3.117e-05, 3.118e-05, 5026.83870742], [1516776300000, 3.117e-05, 3.117e-05, 3.117e-05, 3.117e-05, 1420.58999626], [1516776360000, 3.117e-05, 3.129e-05, 3.117e-05, 3.128e-05, 1033.27770562], [1516776420000, 3.128e-05, 3.128e-05, 3.117e-05, 3.117e-05, 9882.69150575], [1516776480000, 3.117e-05, 3.118e-05, 3.117e-05, 3.118e-05, 6597.26490879], [1516776540000, 3.12e-05, 3.13e-05, 3.117e-05, 3.117e-05, 22813.15536778], [1516776600000, 3.116e-05, 3.12e-05, 3.116e-05, 3.116e-05, 2564.03701257], [1516776660000, 3.117e-05, 3.117e-05, 3.116e-05, 3.116e-05, 1202.31951169], [1516776720000, 3.116e-05, 3.116e-05, 3.116e-05, 3.116e-05, 700.0], [1516776780000, 3.116e-05, 3.116e-05, 3.111e-05, 3.116e-05, 4114.41207978], [1516776840000, 3.116e-05, 3.13e-05, 3.111e-05, 3.13e-05, 14153.21142902], [1516776960000, 3.13e-05, 3.13e-05, 3.13e-05, 3.13e-05, 7936.58603679], [1516777020000, 3.13e-05, 3.13e-05, 3.114e-05, 3.114e-05, 565.37018492], [1516777080000, 3.114e-05, 3.129e-05, 3.114e-05, 3.129e-05, 1926.81867564], [1516777200000, 3.127e-05, 3.127e-05, 3.101e-05, 3.104e-05, 37452.19070214], [1516777260000, 3.105e-05, 3.105e-05, 3.105e-05, 3.105e-05, 9784.03066058], [1516777320000, 3.105e-05, 3.106e-05, 3.105e-05, 3.105e-05, 8667.43237968], [1516777380000, 3.103e-05, 3.103e-05, 3.103e-05, 3.103e-05, 10896.71610029], [1516777440000, 3.103e-05, 3.103e-05, 3.102e-05, 3.103e-05, 4551.04848397], [1516777500000, 3.1e-05, 3.126e-05, 3.06e-05, 3.06e-05, 51481.41352045], [1516777560000, 3.082e-05, 3.118e-05, 3.082e-05, 3.118e-05, 689.39964263], [1516777620000, 3.118e-05, 3.118e-05, 3.1e-05, 3.109e-05, 3183.47508855], [1516777680000, 3.107e-05, 3.11e-05, 3.106e-05, 3.11e-05, 26708.41459736], [1516777740000, 3.1e-05, 3.101e-05, 3.1e-05, 3.101e-05, 7486.08666987], [1516777800000, 3.101e-05, 3.105e-05, 3.09e-05, 3.101e-05, 10535.24316076], [1516777860000, 3.091e-05, 3.091e-05, 3.091e-05, 3.091e-05, 3272.72922201], [1516777920000, 3.091e-05, 3.126e-05, 3.091e-05, 3.126e-05, 11997.67915728], [1516777980000, 3.095e-05, 3.095e-05, 3.095e-05, 3.095e-05, 30.0], [1516778040000, 3.096e-05, 3.097e-05, 3.096e-05, 3.097e-05, 1711.13669986], [1516778100000, 3.097e-05, 3.097e-05, 3.097e-05, 3.097e-05, 520.84216164], [1516778160000, 3.11e-05, 3.11e-05, 3.11e-05, 3.11e-05, 2070.02558743], [1516778220000, 3.115e-05, 3.115e-05, 3.115e-05, 3.115e-05, 390.05475855], [1516778280000, 3.115e-05, 3.12e-05, 3.115e-05, 3.12e-05, 3879.70088561], [1516778340000, 3.12e-05, 3.12e-05, 3.097e-05, 3.097e-05, 19989.29647366], [1516778400000, 3.112e-05, 3.112e-05, 3.112e-05, 3.112e-05, 712.19960848], [1516778460000, 3.095e-05, 3.112e-05, 3.093e-05, 3.112e-05, 9895.82342022], [1516778520000, 3.111e-05, 3.111e-05, 3.093e-05, 3.093e-05, 2170.27639739], [1516778580000, 3.093e-05, 3.11e-05, 3.093e-05, 3.093e-05, 14853.33995098], [1516778640000, 3.093e-05, 3.093e-05, 3.093e-05, 3.093e-05, 140.46223173], [1516778700000, 3.092e-05, 3.093e-05, 3.088e-05, 3.088e-05, 6852.61181708], [1516778760000, 3.09e-05, 3.093e-05, 3.09e-05, 3.093e-05, 573.13530991], [1516778820000, 3.11e-05, 3.11e-05, 3.11e-05, 3.11e-05, 1635.1304335], [1516778880000, 3.109e-05, 3.135e-05, 3.109e-05, 3.134e-05, 82228.0758398], [1516778940000, 3.133e-05, 3.133e-05, 3.096e-05, 3.132e-05, 7690.29872157], [1516779000000, 3.095e-05, 3.096e-05, 3.095e-05, 3.096e-05, 322.0], [1516779060000, 3.096e-05, 3.098e-05, 3.096e-05, 3.098e-05, 1911.61601958], [1516779120000, 3.129e-05, 3.129e-05, 3.102e-05, 3.102e-05, 2119.98778013], [1516779180000, 3.106e-05, 3.106e-05, 3.106e-05, 3.106e-05, 928.81911585], [1516779240000, 3.122e-05, 3.122e-05, 3.12e-05, 3.12e-05, 4585.06165919], [1516779300000, 3.121e-05, 3.131e-05, 3.12e-05, 3.121e-05, 20285.22544125], [1516779360000, 3.129e-05, 3.129e-05, 3.121e-05, 3.121e-05, 9337.83238018], [1516779420000, 3.111e-05, 3.111e-05, 3.109e-05, 3.109e-05, 6868.66446802], [1516779480000, 3.107e-05, 3.107e-05, 3.106e-05, 3.106e-05, 543.521548], [1516779540000, 3.106e-05, 3.106e-05, 3.106e-05, 3.106e-05, 3469.4516813], [1516779600000, 3.106e-05, 3.106e-05, 3.106e-05, 3.106e-05, 5833.82915914], [1516779660000, 3.106e-05, 3.106e-05, 3.106e-05, 3.106e-05, 499.20233222], [1516779720000, 3.106e-05, 3.107e-05, 3.096e-05, 3.097e-05, 11095.90082384], [1516779780000, 3.097e-05, 3.097e-05, 3.094e-05, 3.094e-05, 3702.83781424], [1516779840000, 3.094e-05, 3.094e-05, 3.094e-05, 3.094e-05, 752.65183813], [1516779960000, 3.094e-05, 3.096e-05, 3.094e-05, 3.094e-05, 2524.8512171], [1516780020000, 3.093e-05, 3.093e-05, 3.09e-05, 3.09e-05, 1654.41384331], [1516780080000, 3.092e-05, 3.092e-05, 3.092e-05, 3.092e-05, 1759.43984476], [1516780140000, 3.092e-05, 3.092e-05, 3.092e-05, 3.092e-05, 4074.12938227], [1516780200000, 3.092e-05, 3.092e-05, 3.092e-05, 3.092e-05, 908.44561786], [1516780260000, 3.091e-05, 3.091e-05, 3.09e-05, 3.09e-05, 7292.03158474], [1516780320000, 3.09e-05, 3.09e-05, 3.081e-05, 3.089e-05, 3218.44717639], [1516780380000, 3.081e-05, 3.089e-05, 3.074e-05, 3.089e-05, 7313.71861204], [1516780440000, 3.09e-05, 3.09e-05, 3.071e-05, 3.09e-05, 3052.38452963], [1516780500000, 3.09e-05, 3.09e-05, 3.09e-05, 3.09e-05, 155.0], [1516780560000, 3.084e-05, 3.09e-05, 3.08e-05, 3.09e-05, 4879.21177735], [1516780620000, 3.09e-05, 3.09e-05, 3.083e-05, 3.084e-05, 7163.32467516], [1516780680000, 3.084e-05, 3.084e-05, 3.076e-05, 3.076e-05, 8156.65680572], [1516780740000, 3.076e-05, 3.076e-05, 3.071e-05, 3.071e-05, 784.26351601], [1516780800000, 3.071e-05, 3.071e-05, 3.069e-05, 3.071e-05, 21699.43949197], [1516780860000, 3.071e-05, 3.084e-05, 3.071e-05, 3.084e-05, 5513.85223273], [1516780920000, 3.084e-05, 3.084e-05, 3.084e-05, 3.084e-05, 5088.62495866], [1516780980000, 3.084e-05, 3.084e-05, 3.084e-05, 3.084e-05, 2021.57915845], [1516781100000, 3.084e-05, 3.09e-05, 3.084e-05, 3.09e-05, 9394.16954444], [1516781160000, 3.09e-05, 3.09e-05, 3.09e-05, 3.09e-05, 3441.36521807], [1516781220000, 3.085e-05, 3.09e-05, 3.08e-05, 3.08e-05, 6424.07862684], [1516781280000, 3.081e-05, 3.09e-05, 3.081e-05, 3.09e-05, 387.72491909], [1516781340000, 3.09e-05, 3.09e-05, 3.09e-05, 3.09e-05, 165.02342404], [1516781400000, 3.084e-05, 3.09e-05, 3.081e-05, 3.09e-05, 11346.55852277], [1516781460000, 3.09e-05, 3.09e-05, 3.09e-05, 3.09e-05, 2948.1511949], [1516781520000, 3.086e-05, 3.086e-05, 3.085e-05, 3.085e-05, 8762.73105332], [1516781580000, 3.085e-05, 3.092e-05, 3.085e-05, 3.092e-05, 1874.41982643], [1516781640000, 3.111e-05, 3.111e-05, 3.111e-05, 3.111e-05, 1477.43593542], [1516781700000, 3.111e-05, 3.111e-05, 3.091e-05, 3.091e-05, 15871.14119439], [1516781760000, 3.091e-05, 3.091e-05, 3.091e-05, 3.091e-05, 2770.26515065], [1516781820000, 3.091e-05, 3.091e-05, 3.09e-05, 3.091e-05, 8863.76264543], [1516781940000, 3.11e-05, 3.118e-05, 3.11e-05, 3.118e-05, 16393.55383109], [1516782000000, 3.118e-05, 3.118e-05, 3.118e-05, 3.118e-05, 7874.58659785], [1516782060000, 3.119e-05, 3.119e-05, 3.092e-05, 3.092e-05, 5690.50287119], [1516782120000, 3.092e-05, 3.119e-05, 3.092e-05, 3.118e-05, 8146.54888047], [1516782180000, 3.118e-05, 3.118e-05, 3.118e-05, 3.118e-05, 928.91972161], [1516782240000, 3.118e-05, 3.119e-05, 3.118e-05, 3.119e-05, 1891.70971294], [1516782300000, 3.119e-05, 3.119e-05, 3.119e-05, 3.119e-05, 2882.20711446], [1516782360000, 3.118e-05, 3.119e-05, 3.118e-05, 3.118e-05, 2507.06911226], [1516782420000, 3.118e-05, 3.119e-05, 3.118e-05, 3.118e-05, 17258.11507627], [1516782480000, 3.118e-05, 3.119e-05, 3.118e-05, 3.119e-05, 23107.90051956], [1516782540000, 3.119e-05, 3.119e-05, 3.118e-05, 3.119e-05, 5382.09460009], [1516782600000, 3.119e-05, 3.12e-05, 3.119e-05, 3.12e-05, 278.24844484], [1516782660000, 3.12e-05, 3.12e-05, 3.12e-05, 3.12e-05, 2946.4260741], [1516782720000, 3.124e-05, 3.134e-05, 3.124e-05, 3.134e-05, 1137.38181667], [1516782780000, 3.13e-05, 3.13e-05, 3.12e-05, 3.12e-05, 674.24077962], [1516782900000, 3.121e-05, 3.121e-05, 3.119e-05, 3.119e-05, 4246.35258574], [1516782960000, 3.13e-05, 3.13e-05, 3.13e-05, 3.13e-05, 8893.41602996], [1516783020000, 3.13e-05, 3.134e-05, 3.119e-05, 3.119e-05, 9316.17256073], [1516783080000, 3.119e-05, 3.12e-05, 3.119e-05, 3.12e-05, 283.75511955], [1516783140000, 3.119e-05, 3.12e-05, 3.119e-05, 3.12e-05, 293.12179028], [1516783200000, 3.12e-05, 3.12e-05, 3.12e-05, 3.12e-05, 1070.03295667], [1516783260000, 3.12e-05, 3.12e-05, 3.119e-05, 3.119e-05, 586.16141618], [1516783380000, 3.127e-05, 3.127e-05, 3.119e-05, 3.125e-05, 8902.70317045], [1516783440000, 3.125e-05, 3.126e-05, 3.125e-05, 3.125e-05, 13416.8106892], [1516783500000, 3.125e-05, 3.126e-05, 3.12e-05, 3.125e-05, 2488.67471707], [1516783560000, 3.125e-05, 3.125e-05, 3.12e-05, 3.12e-05, 4772.77576524], [1516783620000, 3.121e-05, 3.121e-05, 3.118e-05, 3.118e-05, 2519.77030187], [1516783740000, 3.118e-05, 3.118e-05, 3.099e-05, 3.099e-05, 22772.38207711], [1516783800000, 3.095e-05, 3.095e-05, 3.094e-05, 3.094e-05, 1383.853709], [1516783860000, 3.094e-05, 3.124e-05, 3.093e-05, 3.124e-05, 8126.28525854], [1516783920000, 3.124e-05, 3.124e-05, 3.084e-05, 3.084e-05, 32685.45431504], [1516783980000, 3.084e-05, 3.116e-05, 3.074e-05, 3.116e-05, 24411.45760944], [1516784100000, 3.101e-05, 3.116e-05, 3.101e-05, 3.116e-05, 4781.11962156], [1516784160000, 3.116e-05, 3.116e-05, 3.101e-05, 3.101e-05, 1412.77212188], [1516784220000, 3.102e-05, 3.102e-05, 3.101e-05, 3.101e-05, 249.00025262], [1516784340000, 3.102e-05, 3.103e-05, 3.101e-05, 3.103e-05, 6460.56750354], [1516784400000, 3.103e-05, 3.11e-05, 3.103e-05, 3.109e-05, 15160.81305502], [1516784460000, 3.109e-05, 3.115e-05, 3.109e-05, 3.115e-05, 26075.68117684], [1516784580000, 3.11e-05, 3.11e-05, 3.11e-05, 3.11e-05, 15671.94290397], [1516784640000, 3.109e-05, 3.113e-05, 3.109e-05, 3.113e-05, 1756.46869987], [1516784700000, 3.113e-05, 3.113e-05, 3.102e-05, 3.102e-05, 4847.32011729], [1516784760000, 3.102e-05, 3.103e-05, 3.101e-05, 3.101e-05, 6929.6112996], [1516784820000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 1032.17741935], [1516784880000, 3.09e-05, 3.09e-05, 3.084e-05, 3.09e-05, 26407.49262549], [1516784940000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 648.11758064], [1516785000000, 3.1e-05, 3.1e-05, 3.07e-05, 3.07e-05, 47803.662046], [1516785060000, 3.083e-05, 3.083e-05, 3.083e-05, 3.083e-05, 532.9898646], [1516785120000, 3.083e-05, 3.098e-05, 3.083e-05, 3.098e-05, 98.54881461], [1516785180000, 3.076e-05, 3.077e-05, 3.076e-05, 3.077e-05, 1473.84956822], [1516785240000, 3.099e-05, 3.099e-05, 3.099e-05, 3.099e-05, 3346.30441321], [1516785300000, 3.078e-05, 3.078e-05, 3.075e-05, 3.076e-05, 29333.61882439], [1516785420000, 3.077e-05, 3.077e-05, 3.076e-05, 3.077e-05, 3986.35245819], [1516785480000, 3.077e-05, 3.08e-05, 3.077e-05, 3.08e-05, 713.98118006], [1516785540000, 3.081e-05, 3.095e-05, 3.08e-05, 3.095e-05, 496.13780859], [1516785600000, 3.081e-05, 3.096e-05, 3.081e-05, 3.095e-05, 857.54027648], [1516785660000, 3.095e-05, 3.095e-05, 3.094e-05, 3.094e-05, 777.81349774], [1516785720000, 3.095e-05, 3.095e-05, 3.08e-05, 3.08e-05, 3000.69822628], [1516785780000, 3.08e-05, 3.082e-05, 3.08e-05, 3.082e-05, 327.20753092], [1516785840000, 3.082e-05, 3.082e-05, 3.082e-05, 3.082e-05, 1126.1590398], [1516785900000, 3.083e-05, 3.095e-05, 3.082e-05, 3.082e-05, 1011.88159246], [1516785960000, 3.081e-05, 3.082e-05, 3.081e-05, 3.082e-05, 1570.51348659], [1516786020000, 3.081e-05, 3.081e-05, 3.08e-05, 3.08e-05, 3512.7657944], [1516786080000, 3.08e-05, 3.081e-05, 3.08e-05, 3.081e-05, 152.54916242], [1516786200000, 3.081e-05, 3.081e-05, 3.08e-05, 3.08e-05, 9483.22584665], [1516786260000, 3.081e-05, 3.082e-05, 3.08e-05, 3.082e-05, 9394.72255493], [1516786320000, 3.08e-05, 3.08e-05, 3.067e-05, 3.07e-05, 34828.88981166], [1516786380000, 3.07e-05, 3.082e-05, 3.07e-05, 3.082e-05, 753.13587986], [1516786440000, 3.082e-05, 3.082e-05, 3.081e-05, 3.081e-05, 5274.27039172], [1516786500000, 3.082e-05, 3.082e-05, 3.072e-05, 3.072e-05, 26585.53590473], [1516786560000, 3.072e-05, 3.072e-05, 3.072e-05, 3.072e-05, 75.90294838], [1516786620000, 3.071e-05, 3.072e-05, 3.071e-05, 3.071e-05, 2309.14383833], [1516786680000, 3.071e-05, 3.072e-05, 3.071e-05, 3.072e-05, 1545.12565874], [1516786740000, 3.072e-05, 3.072e-05, 3.072e-05, 3.072e-05, 101.98647901], [1516786800000, 3.075e-05, 3.075e-05, 3.075e-05, 3.075e-05, 701.68951931], [1516786860000, 3.081e-05, 3.082e-05, 3.081e-05, 3.082e-05, 539.62557117], [1516786920000, 3.081e-05, 3.082e-05, 3.081e-05, 3.082e-05, 7624.77312316], [1516786980000, 3.082e-05, 3.082e-05, 3.082e-05, 3.082e-05, 662.23232], [1516787040000, 3.081e-05, 3.098e-05, 3.081e-05, 3.096e-05, 3812.7942107], [1516787100000, 3.095e-05, 3.095e-05, 3.095e-05, 3.095e-05, 718.0817563], [1516787160000, 3.09e-05, 3.09e-05, 3.09e-05, 3.09e-05, 2047.19296117], [1516787220000, 3.085e-05, 3.085e-05, 3.072e-05, 3.072e-05, 26123.77850163], [1516787280000, 3.075e-05, 3.075e-05, 3.062e-05, 3.063e-05, 24601.46914989], [1516787340000, 3.063e-05, 3.063e-05, 3.063e-05, 3.063e-05, 36007.59839897], [1516787400000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 271.11927972], [1516787460000, 3.065e-05, 3.08e-05, 3.064e-05, 3.064e-05, 1975.05223432], [1516787520000, 3.065e-05, 3.065e-05, 3.065e-05, 3.065e-05, 539.8333834], [1516787580000, 3.065e-05, 3.065e-05, 3.064e-05, 3.065e-05, 871.99266894], [1516787640000, 3.065e-05, 3.065e-05, 3.065e-05, 3.065e-05, 861.06975975], [1516787700000, 3.066e-05, 3.066e-05, 3.066e-05, 3.066e-05, 6102.52285171], [1516787760000, 3.066e-05, 3.092e-05, 3.066e-05, 3.092e-05, 4105.08095495], [1516787820000, 3.07e-05, 3.094e-05, 3.067e-05, 3.094e-05, 4340.7534189], [1516787880000, 3.094e-05, 3.094e-05, 3.094e-05, 3.094e-05, 1813.63081287], [1516787940000, 3.094e-05, 3.094e-05, 3.085e-05, 3.085e-05, 2407.55100541], [1516788000000, 3.094e-05, 3.094e-05, 3.085e-05, 3.086e-05, 6869.56758845], [1516788060000, 3.086e-05, 3.094e-05, 3.085e-05, 3.085e-05, 27612.67938579], [1516788120000, 3.081e-05, 3.081e-05, 3.081e-05, 3.081e-05, 47.99048676], [1516788180000, 3.073e-05, 3.073e-05, 3.067e-05, 3.067e-05, 5703.72360621], [1516788240000, 3.067e-05, 3.067e-05, 3.067e-05, 3.067e-05, 1000.0], [1516788300000, 3.067e-05, 3.099e-05, 3.067e-05, 3.099e-05, 20751.48511575], [1516788360000, 3.067e-05, 3.067e-05, 3.066e-05, 3.067e-05, 343.72679138], [1516788420000, 3.069e-05, 3.069e-05, 3.069e-05, 3.069e-05, 666.08185418], [1516788480000, 3.087e-05, 3.087e-05, 3.07e-05, 3.07e-05, 6662.88877087], [1516788540000, 3.069e-05, 3.07e-05, 3.066e-05, 3.07e-05, 20271.6261411], [1516788600000, 3.07e-05, 3.07e-05, 3.069e-05, 3.069e-05, 1453.25543241], [1516788660000, 3.07e-05, 3.088e-05, 3.069e-05, 3.088e-05, 10258.90439301], [1516788720000, 3.086e-05, 3.086e-05, 3.086e-05, 3.086e-05, 75.0], [1516788780000, 3.086e-05, 3.088e-05, 3.086e-05, 3.088e-05, 310.71114958], [1516788840000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 1270.02104885], [1516788900000, 3.088e-05, 3.088e-05, 3.072e-05, 3.072e-05, 2082.777175], [1516788960000, 3.072e-05, 3.072e-05, 3.065e-05, 3.065e-05, 48972.39425241], [1516789020000, 3.067e-05, 3.067e-05, 3.067e-05, 3.067e-05, 15205.59471797], [1516789080000, 3.065e-05, 3.067e-05, 3.065e-05, 3.065e-05, 2870.51097951], [1516789140000, 3.065e-05, 3.065e-05, 3.064e-05, 3.064e-05, 8871.5491888], [1516789200000, 3.065e-05, 3.065e-05, 3.061e-05, 3.061e-05, 3267.21438381], [1516789260000, 3.064e-05, 3.065e-05, 3.063e-05, 3.063e-05, 1691.41653082], [1516789320000, 3.063e-05, 3.065e-05, 3.062e-05, 3.062e-05, 9353.54453282], [1516789380000, 3.062e-05, 3.066e-05, 3.062e-05, 3.066e-05, 2726.30049111], [1516789440000, 3.065e-05, 3.095e-05, 3.065e-05, 3.095e-05, 16137.75509993], [1516789500000, 3.095e-05, 3.095e-05, 3.067e-05, 3.068e-05, 10775.67705765], [1516789560000, 3.071e-05, 3.071e-05, 3.071e-05, 3.071e-05, 199.08241995], [1516789680000, 3.094e-05, 3.094e-05, 3.072e-05, 3.072e-05, 1204.38937267], [1516789740000, 3.072e-05, 3.072e-05, 3.072e-05, 3.072e-05, 201.61023223], [1516789920000, 3.073e-05, 3.073e-05, 3.073e-05, 3.073e-05, 389.56267612], [1516789980000, 3.089e-05, 3.089e-05, 3.089e-05, 3.089e-05, 22.47618618], [1516790040000, 3.074e-05, 3.075e-05, 3.073e-05, 3.074e-05, 4872.01046157], [1516790100000, 3.074e-05, 3.074e-05, 3.074e-05, 3.074e-05, 2902.45304601], [1516790160000, 3.074e-05, 3.074e-05, 3.074e-05, 3.074e-05, 140.43300172], [1516790220000, 3.075e-05, 3.075e-05, 3.075e-05, 3.075e-05, 230.53287925], [1516790280000, 3.075e-05, 3.075e-05, 3.073e-05, 3.073e-05, 3515.47034933], [1516790340000, 3.073e-05, 3.074e-05, 3.073e-05, 3.074e-05, 2817.85451072], [1516790400000, 3.074e-05, 3.074e-05, 3.074e-05, 3.074e-05, 1038.29355314], [1516790460000, 3.074e-05, 3.074e-05, 3.072e-05, 3.072e-05, 700.77282131], [1516790520000, 3.071e-05, 3.071e-05, 3.067e-05, 3.067e-05, 14198.31858729], [1516790580000, 3.067e-05, 3.067e-05, 3.067e-05, 3.067e-05, 1992.452], [1516790640000, 3.067e-05, 3.067e-05, 3.061e-05, 3.061e-05, 24502.50293161], [1516790700000, 3.061e-05, 3.067e-05, 3.06e-05, 3.06e-05, 20121.93256685], [1516790760000, 3.059e-05, 3.06e-05, 3.059e-05, 3.06e-05, 5288.34343078], [1516790820000, 3.06e-05, 3.06e-05, 3.059e-05, 3.06e-05, 6783.59093045], [1516790880000, 3.06e-05, 3.061e-05, 3.06e-05, 3.06e-05, 2917.64404126], [1516790940000, 3.089e-05, 3.089e-05, 3.06e-05, 3.088e-05, 11097.74057645], [1516791000000, 3.063e-05, 3.063e-05, 3.062e-05, 3.063e-05, 6616.97520448], [1516791060000, 3.063e-05, 3.088e-05, 3.063e-05, 3.088e-05, 15157.99484259], [1516791120000, 3.064e-05, 3.087e-05, 3.064e-05, 3.087e-05, 611.50547818], [1516791180000, 3.087e-05, 3.087e-05, 3.087e-05, 3.087e-05, 211.69489796], [1516791300000, 3.067e-05, 3.083e-05, 3.067e-05, 3.083e-05, 2391.49084936], [1516791360000, 3.07e-05, 3.07e-05, 3.07e-05, 3.07e-05, 381.45184849], [1516791420000, 3.075e-05, 3.081e-05, 3.075e-05, 3.08e-05, 3499.35705439], [1516791480000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 1820.991], [1516791540000, 3.079e-05, 3.079e-05, 3.072e-05, 3.072e-05, 3755.12782079], [1516791600000, 3.07e-05, 3.076e-05, 3.07e-05, 3.076e-05, 1441.99231391], [1516791660000, 3.076e-05, 3.08e-05, 3.076e-05, 3.079e-05, 12829.73197783], [1516791720000, 3.076e-05, 3.079e-05, 3.076e-05, 3.077e-05, 4570.70727544], [1516791780000, 3.076e-05, 3.076e-05, 3.072e-05, 3.072e-05, 4550.0], [1516791840000, 3.072e-05, 3.075e-05, 3.072e-05, 3.075e-05, 486.11539862], [1516791900000, 3.075e-05, 3.075e-05, 3.072e-05, 3.072e-05, 3121.76790732], [1516791960000, 3.072e-05, 3.074e-05, 3.072e-05, 3.074e-05, 10433.24130858], [1516792020000, 3.075e-05, 3.091e-05, 3.075e-05, 3.091e-05, 29133.93053796], [1516792080000, 3.09e-05, 3.09e-05, 3.09e-05, 3.09e-05, 19282.99448455], [1516792140000, 3.072e-05, 3.09e-05, 3.07e-05, 3.09e-05, 9292.0923231], [1516792260000, 3.071e-05, 3.071e-05, 3.07e-05, 3.07e-05, 37076.08404338], [1516792320000, 3.07e-05, 3.07e-05, 3.067e-05, 3.067e-05, 1850.80446882], [1516792380000, 3.07e-05, 3.07e-05, 3.07e-05, 3.07e-05, 1906.44218761], [1516792440000, 3.071e-05, 3.071e-05, 3.069e-05, 3.069e-05, 6720.1466249], [1516792500000, 3.069e-05, 3.069e-05, 3.068e-05, 3.068e-05, 36677.40914407], [1516792560000, 3.068e-05, 3.068e-05, 3.067e-05, 3.067e-05, 785.92551387], [1516792620000, 3.068e-05, 3.068e-05, 3.068e-05, 3.068e-05, 3888.51879527], [1516792680000, 3.068e-05, 3.069e-05, 3.068e-05, 3.069e-05, 2288.41076835], [1516792740000, 3.084e-05, 3.085e-05, 3.084e-05, 3.085e-05, 11622.70395612], [1516792860000, 3.083e-05, 3.083e-05, 3.074e-05, 3.074e-05, 2078.18942588], [1516792920000, 3.075e-05, 3.075e-05, 3.075e-05, 3.075e-05, 11149.8007742], [1516792980000, 3.076e-05, 3.076e-05, 3.069e-05, 3.069e-05, 6966.96562983], [1516793040000, 3.069e-05, 3.069e-05, 3.069e-05, 3.069e-05, 6133.13591981], [1516793100000, 3.071e-05, 3.071e-05, 3.07e-05, 3.07e-05, 128.62985024], [1516793160000, 3.071e-05, 3.071e-05, 3.071e-05, 3.071e-05, 292.32802238], [1516793220000, 3.075e-05, 3.075e-05, 3.074e-05, 3.074e-05, 1248.9269287], [1516793280000, 3.073e-05, 3.073e-05, 3.072e-05, 3.072e-05, 1878.76022453], [1516793340000, 3.073e-05, 3.073e-05, 3.072e-05, 3.072e-05, 1763.04865999], [1516793400000, 3.073e-05, 3.073e-05, 3.072e-05, 3.073e-05, 7429.55898991], [1516793460000, 3.073e-05, 3.073e-05, 3.073e-05, 3.073e-05, 53.59800122], [1516793520000, 3.073e-05, 3.073e-05, 3.064e-05, 3.068e-05, 13371.75439345], [1516793580000, 3.068e-05, 3.068e-05, 3.068e-05, 3.068e-05, 216.03887893], [1516793640000, 3.068e-05, 3.068e-05, 3.061e-05, 3.061e-05, 7545.3619677], [1516793700000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 5203.72945023], [1516793760000, 3.059e-05, 3.068e-05, 3.059e-05, 3.068e-05, 2352.75096199], [1516793880000, 3.068e-05, 3.068e-05, 3.061e-05, 3.061e-05, 9148.82707547], [1516793940000, 3.062e-05, 3.062e-05, 3.061e-05, 3.061e-05, 7678.88589194], [1516794000000, 3.06e-05, 3.061e-05, 3.059e-05, 3.061e-05, 5699.99438401], [1516794060000, 3.059e-05, 3.061e-05, 3.059e-05, 3.061e-05, 11804.77756132], [1516794120000, 3.06e-05, 3.061e-05, 3.059e-05, 3.061e-05, 10568.53704719], [1516794180000, 3.061e-05, 3.071e-05, 3.061e-05, 3.071e-05, 6592.19745991], [1516794240000, 3.063e-05, 3.072e-05, 3.063e-05, 3.072e-05, 2545.42421858], [1516794300000, 3.072e-05, 3.072e-05, 3.072e-05, 3.072e-05, 5867.9035071], [1516794360000, 3.072e-05, 3.072e-05, 3.063e-05, 3.072e-05, 3476.65116639], [1516794420000, 3.072e-05, 3.072e-05, 3.063e-05, 3.063e-05, 4485.26108063], [1516794480000, 3.062e-05, 3.072e-05, 3.062e-05, 3.072e-05, 3398.06654357], [1516794540000, 3.072e-05, 3.072e-05, 3.066e-05, 3.066e-05, 7083.22503726], [1516794600000, 3.066e-05, 3.072e-05, 3.059e-05, 3.072e-05, 21993.51431945], [1516794660000, 3.072e-05, 3.072e-05, 3.059e-05, 3.065e-05, 2634.90228949], [1516794720000, 3.065e-05, 3.072e-05, 3.065e-05, 3.072e-05, 3699.15723575], [1516794780000, 3.073e-05, 3.085e-05, 3.073e-05, 3.075e-05, 1974.17948281], [1516794840000, 3.083e-05, 3.083e-05, 3.083e-05, 3.083e-05, 2322.51691129], [1516794900000, 3.083e-05, 3.083e-05, 3.083e-05, 3.083e-05, 5404.05713286], [1516794960000, 3.083e-05, 3.083e-05, 3.083e-05, 3.083e-05, 588.34604306], [1516795020000, 3.084e-05, 3.084e-05, 3.083e-05, 3.084e-05, 5355.50578912], [1516795080000, 3.084e-05, 3.085e-05, 3.084e-05, 3.085e-05, 6658.28930645], [1516795140000, 3.084e-05, 3.085e-05, 3.084e-05, 3.085e-05, 6820.5516546], [1516795200000, 3.085e-05, 3.085e-05, 3.084e-05, 3.084e-05, 6568.71308048], [1516795260000, 3.084e-05, 3.084e-05, 3.083e-05, 3.083e-05, 1965.88512214], [1516795320000, 3.082e-05, 3.083e-05, 3.066e-05, 3.083e-05, 16876.9729348], [1516795380000, 3.066e-05, 3.085e-05, 3.066e-05, 3.085e-05, 23646.85681637], [1516795440000, 3.088e-05, 3.09e-05, 3.085e-05, 3.09e-05, 6112.30905931], [1516795500000, 3.085e-05, 3.09e-05, 3.085e-05, 3.089e-05, 2116.60470148], [1516795620000, 3.089e-05, 3.09e-05, 3.089e-05, 3.089e-05, 17146.61981509], [1516795680000, 3.09e-05, 3.091e-05, 3.089e-05, 3.091e-05, 4715.91547296], [1516795740000, 3.091e-05, 3.094e-05, 3.089e-05, 3.089e-05, 14664.90609733], [1516795800000, 3.089e-05, 3.089e-05, 3.089e-05, 3.089e-05, 2360.58578332], [1516795860000, 3.089e-05, 3.089e-05, 3.089e-05, 3.089e-05, 7295.5737655], [1516795920000, 3.089e-05, 3.089e-05, 3.089e-05, 3.089e-05, 1644.95458075], [1516795980000, 3.074e-05, 3.089e-05, 3.074e-05, 3.074e-05, 780.37031463], [1516796040000, 3.074e-05, 3.075e-05, 3.074e-05, 3.074e-05, 10152.95395727], [1516796100000, 3.075e-05, 3.075e-05, 3.075e-05, 3.075e-05, 3819.80554952], [1516796160000, 3.075e-05, 3.075e-05, 3.074e-05, 3.074e-05, 10836.33446706], [1516796220000, 3.075e-05, 3.075e-05, 3.066e-05, 3.066e-05, 6160.1734378], [1516796280000, 3.067e-05, 3.067e-05, 3.061e-05, 3.061e-05, 15420.37237025], [1516796340000, 3.061e-05, 3.061e-05, 3.06e-05, 3.06e-05, 11093.73197846], [1516796400000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 1212.24104309], [1516796460000, 3.059e-05, 3.06e-05, 3.059e-05, 3.059e-05, 1762.74844444], [1516796520000, 3.059e-05, 3.06e-05, 3.059e-05, 3.06e-05, 7629.46117994], [1516796580000, 3.059e-05, 3.06e-05, 3.053e-05, 3.06e-05, 66028.49984389], [1516796640000, 3.06e-05, 3.061e-05, 3.06e-05, 3.06e-05, 16712.03952483], [1516796700000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 12685.09870352], [1516796760000, 3.057e-05, 3.059e-05, 3.053e-05, 3.053e-05, 20827.18565514], [1516796820000, 3.053e-05, 3.053e-05, 3.048e-05, 3.048e-05, 47100.02464878], [1516796880000, 3.052e-05, 3.052e-05, 3.048e-05, 3.048e-05, 3044.72754467], [1516796940000, 3.048e-05, 3.049e-05, 3.046e-05, 3.046e-05, 13838.79445113], [1516797000000, 3.046e-05, 3.052e-05, 3.046e-05, 3.052e-05, 73100.80572472], [1516797060000, 3.052e-05, 3.052e-05, 3.052e-05, 3.052e-05, 4185.30265948], [1516797120000, 3.052e-05, 3.052e-05, 3.046e-05, 3.052e-05, 37227.28782441], [1516797180000, 3.046e-05, 3.046e-05, 3.045e-05, 3.045e-05, 3912.93182257], [1516797240000, 3.052e-05, 3.052e-05, 3.047e-05, 3.051e-05, 585.347034], [1516797300000, 3.047e-05, 3.052e-05, 3.047e-05, 3.052e-05, 15781.76880405], [1516797360000, 3.053e-05, 3.053e-05, 3.052e-05, 3.052e-05, 28162.77123734], [1516797420000, 3.051e-05, 3.052e-05, 3.051e-05, 3.051e-05, 4651.22334466], [1516797480000, 3.051e-05, 3.051e-05, 3.044e-05, 3.051e-05, 17021.55484131], [1516797540000, 3.051e-05, 3.051e-05, 3.051e-05, 3.051e-05, 1253.4758695], [1516797600000, 3.051e-05, 3.084e-05, 3.05e-05, 3.055e-05, 30225.33103917], [1516797660000, 3.085e-05, 3.085e-05, 3.085e-05, 3.085e-05, 2963.57267731], [1516797720000, 3.084e-05, 3.084e-05, 3.061e-05, 3.061e-05, 8344.15301227], [1516797780000, 3.065e-05, 3.072e-05, 3.065e-05, 3.07e-05, 10227.13360213], [1516797840000, 3.07e-05, 3.07e-05, 3.07e-05, 3.07e-05, 265.64286203], [1516797900000, 3.07e-05, 3.087e-05, 3.069e-05, 3.069e-05, 4470.49744612], [1516797960000, 3.067e-05, 3.067e-05, 3.067e-05, 3.067e-05, 606.17825614], [1516798020000, 3.069e-05, 3.069e-05, 3.069e-05, 3.069e-05, 624.99646939], [1516798080000, 3.068e-05, 3.085e-05, 3.068e-05, 3.085e-05, 3922.30118882], [1516798140000, 3.085e-05, 3.085e-05, 3.085e-05, 3.085e-05, 7065.19717677], [1516798200000, 3.072e-05, 3.087e-05, 3.072e-05, 3.087e-05, 3802.35204027], [1516798260000, 3.088e-05, 3.088e-05, 3.087e-05, 3.088e-05, 6250.35209799], [1516798320000, 3.088e-05, 3.091e-05, 3.086e-05, 3.086e-05, 6987.37643533], [1516798380000, 3.085e-05, 3.087e-05, 3.085e-05, 3.087e-05, 4558.02275021], [1516798440000, 3.087e-05, 3.087e-05, 3.086e-05, 3.086e-05, 2488.25426586], [1516798500000, 3.085e-05, 3.085e-05, 3.085e-05, 3.085e-05, 2775.4215427], [1516798560000, 3.085e-05, 3.085e-05, 3.085e-05, 3.085e-05, 10044.83358475], [1516798620000, 3.085e-05, 3.086e-05, 3.085e-05, 3.086e-05, 9799.65721831], [1516798680000, 3.086e-05, 3.086e-05, 3.086e-05, 3.086e-05, 1324.70703125], [1516798740000, 3.091e-05, 3.091e-05, 3.085e-05, 3.086e-05, 33505.98382738], [1516798800000, 3.086e-05, 3.092e-05, 3.085e-05, 3.087e-05, 41509.41902074], [1516798860000, 3.087e-05, 3.092e-05, 3.087e-05, 3.092e-05, 2813.93082783], [1516798920000, 3.092e-05, 3.092e-05, 3.086e-05, 3.092e-05, 37891.83455426], [1516798980000, 3.086e-05, 3.099e-05, 3.086e-05, 3.099e-05, 48553.69260055], [1516799040000, 3.086e-05, 3.099e-05, 3.086e-05, 3.089e-05, 3404.98525474], [1516799100000, 3.089e-05, 3.09e-05, 3.089e-05, 3.09e-05, 7220.37143756], [1516799160000, 3.098e-05, 3.098e-05, 3.092e-05, 3.097e-05, 3898.65071752], [1516799220000, 3.092e-05, 3.098e-05, 3.089e-05, 3.094e-05, 22395.13782761], [1516799280000, 3.1e-05, 3.1e-05, 3.086e-05, 3.088e-05, 39097.57450813], [1516799340000, 3.1e-05, 3.115e-05, 3.088e-05, 3.115e-05, 42613.86399529], [1516799400000, 3.1e-05, 3.12e-05, 3.1e-05, 3.113e-05, 71941.66859421], [1516799460000, 3.113e-05, 3.116e-05, 3.091e-05, 3.116e-05, 5510.50713218], [1516799520000, 3.094e-05, 3.116e-05, 3.093e-05, 3.108e-05, 3006.2396778], [1516799580000, 3.108e-05, 3.116e-05, 3.092e-05, 3.093e-05, 16337.43662576], [1516799640000, 3.091e-05, 3.092e-05, 3.091e-05, 3.092e-05, 1810.97760922], [1516799700000, 3.092e-05, 3.094e-05, 3.09e-05, 3.09e-05, 54588.38159342], [1516799760000, 3.094e-05, 3.126e-05, 3.09e-05, 3.09e-05, 73766.56495848], [1516799820000, 3.118e-05, 3.124e-05, 3.091e-05, 3.11e-05, 5669.03169089], [1516799880000, 3.11e-05, 3.121e-05, 3.091e-05, 3.109e-05, 14952.42514995], [1516799940000, 3.091e-05, 3.11e-05, 3.091e-05, 3.11e-05, 3737.06737347], [1516800000000, 3.091e-05, 3.101e-05, 3.09e-05, 3.101e-05, 3174.75580018], [1516800060000, 3.092e-05, 3.101e-05, 3.092e-05, 3.093e-05, 1910.12264625], [1516800120000, 3.093e-05, 3.101e-05, 3.091e-05, 3.101e-05, 14707.8523468], [1516800180000, 3.093e-05, 3.101e-05, 3.092e-05, 3.093e-05, 30028.88761407], [1516800240000, 3.093e-05, 3.101e-05, 3.09e-05, 3.09e-05, 58599.8744052], [1516800300000, 3.092e-05, 3.093e-05, 3.09e-05, 3.091e-05, 16907.34416532], [1516800360000, 3.093e-05, 3.131e-05, 3.091e-05, 3.093e-05, 11589.15138587], [1516800420000, 3.125e-05, 3.125e-05, 3.092e-05, 3.093e-05, 2434.46800144], [1516800480000, 3.093e-05, 3.099e-05, 3.09e-05, 3.099e-05, 16959.2451459], [1516800540000, 3.099e-05, 3.1e-05, 3.099e-05, 3.099e-05, 2659.38700445], [1516800600000, 3.1e-05, 3.11e-05, 3.1e-05, 3.11e-05, 11100.7833109], [1516800660000, 3.109e-05, 3.11e-05, 3.1e-05, 3.11e-05, 829.0232104], [1516800720000, 3.11e-05, 3.12e-05, 3.11e-05, 3.12e-05, 14226.86403232], [1516800780000, 3.12e-05, 3.12e-05, 3.111e-05, 3.112e-05, 2621.99755116], [1516800840000, 3.12e-05, 3.198e-05, 3.12e-05, 3.138e-05, 241225.2812838], [1516800900000, 3.134e-05, 3.168e-05, 3.117e-05, 3.122e-05, 20860.17207297], [1516800960000, 3.122e-05, 3.124e-05, 3.119e-05, 3.121e-05, 3878.67928708], [1516801020000, 3.125e-05, 3.149e-05, 3.121e-05, 3.147e-05, 23758.03922468], [1516801080000, 3.139e-05, 3.147e-05, 3.124e-05, 3.145e-05, 8242.11916126], [1516801140000, 3.136e-05, 3.144e-05, 3.136e-05, 3.142e-05, 9996.15861289], [1516801200000, 3.142e-05, 3.142e-05, 3.137e-05, 3.138e-05, 6892.30481392], [1516801260000, 3.14e-05, 3.143e-05, 3.137e-05, 3.14e-05, 3352.00402535], [1516801320000, 3.141e-05, 3.144e-05, 3.141e-05, 3.141e-05, 3610.95219197], [1516801380000, 3.144e-05, 3.144e-05, 3.141e-05, 3.144e-05, 5436.24583334], [1516801440000, 3.144e-05, 3.149e-05, 3.144e-05, 3.145e-05, 14272.12124186], [1516801500000, 3.145e-05, 3.149e-05, 3.144e-05, 3.146e-05, 7680.50283101], [1516801560000, 3.149e-05, 3.149e-05, 3.148e-05, 3.148e-05, 2600.12806825], [1516801620000, 3.149e-05, 3.152e-05, 3.144e-05, 3.146e-05, 21103.64376327], [1516801680000, 3.146e-05, 3.146e-05, 3.137e-05, 3.137e-05, 7187.61033831], [1516801740000, 3.137e-05, 3.138e-05, 3.137e-05, 3.137e-05, 4438.56798379], [1516801800000, 3.137e-05, 3.154e-05, 3.137e-05, 3.138e-05, 29212.1565954], [1516801860000, 3.138e-05, 3.138e-05, 3.138e-05, 3.138e-05, 1702.06576559], [1516801920000, 3.154e-05, 3.167e-05, 3.14e-05, 3.158e-05, 22877.53721979], [1516801980000, 3.14e-05, 3.157e-05, 3.14e-05, 3.157e-05, 1097.24876121], [1516802040000, 3.142e-05, 3.157e-05, 3.141e-05, 3.146e-05, 12187.24818322], [1516802100000, 3.142e-05, 3.142e-05, 3.14e-05, 3.141e-05, 7923.22854359], [1516802160000, 3.141e-05, 3.141e-05, 3.14e-05, 3.141e-05, 12253.18330318], [1516802220000, 3.143e-05, 3.143e-05, 3.14e-05, 3.14e-05, 9524.29969404], [1516802280000, 3.141e-05, 3.144e-05, 3.141e-05, 3.141e-05, 948.0381643], [1516802340000, 3.142e-05, 3.154e-05, 3.142e-05, 3.144e-05, 9243.04429364], [1516802400000, 3.142e-05, 3.153e-05, 3.142e-05, 3.143e-05, 46009.4625932], [1516802460000, 3.153e-05, 3.153e-05, 3.143e-05, 3.15e-05, 13258.17278864], [1516802520000, 3.15e-05, 3.153e-05, 3.15e-05, 3.152e-05, 4372.06660274], [1516802580000, 3.152e-05, 3.152e-05, 3.144e-05, 3.145e-05, 19443.48463975], [1516802640000, 3.152e-05, 3.154e-05, 3.145e-05, 3.145e-05, 3029.23220981], [1516802700000, 3.145e-05, 3.152e-05, 3.144e-05, 3.152e-05, 24408.17865893], [1516802760000, 3.144e-05, 3.144e-05, 3.143e-05, 3.143e-05, 21338.46551796], [1516802820000, 3.143e-05, 3.144e-05, 3.14e-05, 3.14e-05, 23842.57208735], [1516802880000, 3.14e-05, 3.142e-05, 3.138e-05, 3.141e-05, 10751.00405654], [1516802940000, 3.138e-05, 3.15e-05, 3.132e-05, 3.132e-05, 9170.47275258], [1516803000000, 3.132e-05, 3.132e-05, 3.121e-05, 3.132e-05, 8390.5933576], [1516803060000, 3.124e-05, 3.124e-05, 3.121e-05, 3.121e-05, 4431.02756229], [1516803120000, 3.121e-05, 3.121e-05, 3.115e-05, 3.115e-05, 78062.23861824], [1516803180000, 3.115e-05, 3.115e-05, 3.115e-05, 3.115e-05, 97.33212212], [1516803240000, 3.115e-05, 3.121e-05, 3.105e-05, 3.121e-05, 21987.44277756], [1516803300000, 3.115e-05, 3.115e-05, 3.099e-05, 3.115e-05, 22248.97461528], [1516803360000, 3.099e-05, 3.12e-05, 3.095e-05, 3.12e-05, 14658.49710425], [1516803420000, 3.096e-05, 3.096e-05, 3.08e-05, 3.082e-05, 38420.25231316], [1516803480000, 3.082e-05, 3.1e-05, 3.08e-05, 3.1e-05, 17660.44249338], [1516803540000, 3.106e-05, 3.106e-05, 3.1e-05, 3.105e-05, 2082.62902937], [1516803600000, 3.101e-05, 3.101e-05, 3.1e-05, 3.1e-05, 10837.85332356], [1516803660000, 3.1e-05, 3.1e-05, 3.085e-05, 3.085e-05, 20403.80936387], [1516803720000, 3.087e-05, 3.091e-05, 3.087e-05, 3.091e-05, 23058.54120331], [1516803780000, 3.088e-05, 3.1e-05, 3.088e-05, 3.1e-05, 1211.8848293], [1516803840000, 3.1e-05, 3.1e-05, 3.089e-05, 3.09e-05, 9403.8744323], [1516803900000, 3.1e-05, 3.1e-05, 3.09e-05, 3.091e-05, 31018.52847238], [1516803960000, 3.091e-05, 3.1e-05, 3.091e-05, 3.1e-05, 17490.38693705], [1516804020000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 4375.96517505], [1516804080000, 3.092e-05, 3.115e-05, 3.091e-05, 3.115e-05, 23743.14730138], [1516804140000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 10148.12477788], [1516804200000, 3.092e-05, 3.092e-05, 3.089e-05, 3.089e-05, 31542.07536244], [1516804260000, 3.088e-05, 3.1e-05, 3.084e-05, 3.1e-05, 12670.84770847], [1516804320000, 3.1e-05, 3.114e-05, 3.1e-05, 3.114e-05, 2029.51047733], [1516804380000, 3.113e-05, 3.114e-05, 3.101e-05, 3.113e-05, 7506.97902652], [1516804440000, 3.101e-05, 3.113e-05, 3.101e-05, 3.102e-05, 9398.28844223], [1516804500000, 3.103e-05, 3.112e-05, 3.094e-05, 3.094e-05, 12090.74683684], [1516804560000, 3.099e-05, 3.099e-05, 3.087e-05, 3.094e-05, 21076.374896], [1516804620000, 3.094e-05, 3.094e-05, 3.091e-05, 3.091e-05, 4483.34925378], [1516804680000, 3.084e-05, 3.091e-05, 3.08e-05, 3.08e-05, 27033.36422694], [1516804740000, 3.08e-05, 3.09e-05, 3.08e-05, 3.08e-05, 7261.18894119], [1516804800000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 389.54062049], [1516804860000, 3.08e-05, 3.08e-05, 3.077e-05, 3.077e-05, 2029.13655828], [1516804920000, 3.075e-05, 3.075e-05, 3.07e-05, 3.07e-05, 8705.89766937], [1516804980000, 3.07e-05, 3.07e-05, 3.06e-05, 3.06e-05, 24170.1627734], [1516805040000, 3.066e-05, 3.066e-05, 3.06e-05, 3.066e-05, 7850.44666735], [1516805100000, 3.066e-05, 3.067e-05, 3.062e-05, 3.066e-05, 18916.15870441], [1516805160000, 3.062e-05, 3.066e-05, 3.037e-05, 3.051e-05, 74156.95006909], [1516805220000, 3.051e-05, 3.065e-05, 3.046e-05, 3.051e-05, 12942.5448371], [1516805280000, 3.052e-05, 3.065e-05, 3.051e-05, 3.053e-05, 9262.96608934], [1516805340000, 3.065e-05, 3.065e-05, 3.053e-05, 3.054e-05, 25885.59063161], [1516805400000, 3.054e-05, 3.066e-05, 3.052e-05, 3.066e-05, 21182.40999397], [1516805460000, 3.066e-05, 3.066e-05, 3.052e-05, 3.052e-05, 20674.58041001], [1516805520000, 3.065e-05, 3.065e-05, 3.065e-05, 3.065e-05, 13208.2020072], [1516805580000, 3.065e-05, 3.065e-05, 3.064e-05, 3.064e-05, 758.59957661], [1516805640000, 3.064e-05, 3.064e-05, 3.04e-05, 3.045e-05, 24042.19677671], [1516805700000, 3.045e-05, 3.064e-05, 3.045e-05, 3.064e-05, 8898.72638523], [1516805760000, 3.064e-05, 3.064e-05, 3.064e-05, 3.064e-05, 221.93211486], [1516805820000, 3.045e-05, 3.064e-05, 3.045e-05, 3.049e-05, 933.19833333], [1516805880000, 3.049e-05, 3.065e-05, 3.044e-05, 3.065e-05, 19386.79661506], [1516805940000, 3.065e-05, 3.067e-05, 3.065e-05, 3.066e-05, 24150.40663174], [1516806000000, 3.067e-05, 3.067e-05, 3.067e-05, 3.067e-05, 9908.79421585], [1516806060000, 3.066e-05, 3.066e-05, 3.06e-05, 3.06e-05, 7999.80053835], [1516806120000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 234.0], [1516806180000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 530.43275497], [1516806240000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 156.53594766], [1516806300000, 3.06e-05, 3.06e-05, 3.057e-05, 3.057e-05, 627.30458062], [1516806360000, 3.056e-05, 3.06e-05, 3.056e-05, 3.06e-05, 15274.90928544], [1516806420000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 6604.22928718], [1516806480000, 3.075e-05, 3.075e-05, 3.06e-05, 3.06e-05, 48.34400912], [1516806540000, 3.065e-05, 3.075e-05, 3.057e-05, 3.075e-05, 13203.3710918], [1516806600000, 3.06e-05, 3.06e-05, 3.056e-05, 3.056e-05, 12945.15251667], [1516806660000, 3.057e-05, 3.057e-05, 3.057e-05, 3.057e-05, 425.84944969], [1516806720000, 3.057e-05, 3.057e-05, 3.057e-05, 3.057e-05, 1237.92933209], [1516806780000, 3.074e-05, 3.074e-05, 3.074e-05, 3.074e-05, 786.30781535], [1516806840000, 3.069e-05, 3.07e-05, 3.069e-05, 3.07e-05, 226.0], [1516806900000, 3.07e-05, 3.07e-05, 3.07e-05, 3.07e-05, 1541.1274292], [1516806960000, 3.069e-05, 3.07e-05, 3.069e-05, 3.07e-05, 2012.67616694], [1516807020000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 1281.03170351], [1516807080000, 3.069e-05, 3.069e-05, 3.056e-05, 3.056e-05, 22574.26135697], [1516807140000, 3.056e-05, 3.056e-05, 3.056e-05, 3.056e-05, 397.61256544], [1516807200000, 3.056e-05, 3.057e-05, 3.056e-05, 3.057e-05, 10601.13562974], [1516807260000, 3.057e-05, 3.058e-05, 3.057e-05, 3.058e-05, 253.22681527], [1516807320000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 2807.02609184], [1516807380000, 3.07e-05, 3.07e-05, 3.07e-05, 3.07e-05, 6498.41195057], [1516807440000, 3.07e-05, 3.07e-05, 3.06e-05, 3.069e-05, 183.53910738], [1516807500000, 3.065e-05, 3.065e-05, 3.06e-05, 3.06e-05, 2462.34414205], [1516807560000, 3.051e-05, 3.051e-05, 3.051e-05, 3.051e-05, 3057.06955689], [1516807620000, 3.052e-05, 3.058e-05, 3.051e-05, 3.058e-05, 2909.16990728], [1516807680000, 3.051e-05, 3.051e-05, 3.047e-05, 3.048e-05, 4687.14422802], [1516807740000, 3.048e-05, 3.048e-05, 3.047e-05, 3.047e-05, 4278.81480322], [1516807800000, 3.054e-05, 3.065e-05, 3.054e-05, 3.065e-05, 546.53866857], [1516807860000, 3.065e-05, 3.065e-05, 3.065e-05, 3.065e-05, 2785.90212071], [1516807920000, 3.049e-05, 3.065e-05, 3.045e-05, 3.065e-05, 6418.77075674], [1516807980000, 3.052e-05, 3.064e-05, 3.052e-05, 3.064e-05, 417.164743], [1516808040000, 3.064e-05, 3.064e-05, 3.063e-05, 3.063e-05, 4757.82925435], [1516808100000, 3.063e-05, 3.063e-05, 3.063e-05, 3.063e-05, 5025.44680512], [1516808160000, 3.052e-05, 3.052e-05, 3.05e-05, 3.05e-05, 9709.99326011], [1516808220000, 3.05e-05, 3.064e-05, 3.046e-05, 3.064e-05, 16990.23713305], [1516808280000, 3.047e-05, 3.064e-05, 3.046e-05, 3.063e-05, 6005.09111765], [1516808340000, 3.062e-05, 3.062e-05, 3.062e-05, 3.062e-05, 544.0], [1516808400000, 3.061e-05, 3.062e-05, 3.051e-05, 3.051e-05, 8833.20024485], [1516808460000, 3.051e-05, 3.06e-05, 3.046e-05, 3.051e-05, 27095.38043049], [1516808520000, 3.06e-05, 3.062e-05, 3.06e-05, 3.062e-05, 1242.41176471], [1516808580000, 3.062e-05, 3.062e-05, 3.06e-05, 3.06e-05, 1063.92769386], [1516808640000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 1735.36553383], [1516808700000, 3.052e-05, 3.06e-05, 3.051e-05, 3.051e-05, 3239.9409244], [1516808760000, 3.051e-05, 3.059e-05, 3.051e-05, 3.051e-05, 29318.17025785], [1516808820000, 3.051e-05, 3.051e-05, 3.044e-05, 3.051e-05, 7069.04082368], [1516808880000, 3.051e-05, 3.051e-05, 3.044e-05, 3.044e-05, 873.68012163], [1516808940000, 3.044e-05, 3.044e-05, 3.044e-05, 3.044e-05, 1495.64688098], [1516809000000, 3.044e-05, 3.044e-05, 3.041e-05, 3.041e-05, 972.7988364], [1516809060000, 3.044e-05, 3.044e-05, 3.043e-05, 3.043e-05, 1283.06226916], [1516809120000, 3.043e-05, 3.043e-05, 3.041e-05, 3.042e-05, 2994.95982508], [1516809180000, 3.041e-05, 3.059e-05, 3.041e-05, 3.041e-05, 10294.21299131], [1516809240000, 3.059e-05, 3.059e-05, 3.059e-05, 3.059e-05, 234.0], [1516809300000, 3.059e-05, 3.059e-05, 3.045e-05, 3.045e-05, 5985.45678327], [1516809360000, 3.059e-05, 3.059e-05, 3.045e-05, 3.058e-05, 9628.37915516], [1516809420000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 1682.99381097], [1516809480000, 3.052e-05, 3.052e-05, 3.05e-05, 3.051e-05, 23459.3514045], [1516809540000, 3.051e-05, 3.051e-05, 3.051e-05, 3.051e-05, 28469.32205703], [1516809600000, 3.051e-05, 3.059e-05, 3.051e-05, 3.059e-05, 66777.06988983], [1516809660000, 3.051e-05, 3.051e-05, 3.045e-05, 3.045e-05, 7498.74834462], [1516809720000, 3.051e-05, 3.051e-05, 3.051e-05, 3.051e-05, 326.94198623], [1516809780000, 3.057e-05, 3.057e-05, 3.047e-05, 3.057e-05, 1286.34704783], [1516809840000, 3.057e-05, 3.062e-05, 3.057e-05, 3.059e-05, 6794.29161987], [1516809900000, 3.062e-05, 3.062e-05, 3.06e-05, 3.062e-05, 2837.33589548], [1516809960000, 3.06e-05, 3.062e-05, 3.059e-05, 3.059e-05, 4783.52065954], [1516810020000, 3.062e-05, 3.062e-05, 3.062e-05, 3.062e-05, 231.748072], [1516810080000, 3.062e-05, 3.062e-05, 3.062e-05, 3.062e-05, 762.94554132], [1516810140000, 3.059e-05, 3.059e-05, 3.047e-05, 3.047e-05, 3200.46663802], [1516810200000, 3.047e-05, 3.047e-05, 3.047e-05, 3.047e-05, 46747.61333475], [1516810260000, 3.047e-05, 3.059e-05, 3.047e-05, 3.059e-05, 2872.18240048], [1516810320000, 3.047e-05, 3.059e-05, 3.047e-05, 3.058e-05, 13031.96401847], [1516810380000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 52.721222], [1516810440000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 1162.85681533], [1516810500000, 3.048e-05, 3.048e-05, 3.045e-05, 3.047e-05, 4551.92240365], [1516810560000, 3.058e-05, 3.058e-05, 3.046e-05, 3.046e-05, 1211.36678729], [1516810620000, 3.046e-05, 3.058e-05, 3.046e-05, 3.058e-05, 1090.14808446], [1516810680000, 3.047e-05, 3.047e-05, 3.04e-05, 3.04e-05, 28619.5226876], [1516810740000, 3.04e-05, 3.046e-05, 3.038e-05, 3.046e-05, 3175.78477817], [1516810800000, 3.058e-05, 3.058e-05, 3.04e-05, 3.04e-05, 1536.721223], [1516810860000, 3.04e-05, 3.042e-05, 3.038e-05, 3.038e-05, 2059.79913714], [1516810920000, 3.04e-05, 3.041e-05, 3.04e-05, 3.04e-05, 20404.69016778], [1516810980000, 3.04e-05, 3.04e-05, 3.038e-05, 3.038e-05, 19863.36273497], [1516811040000, 3.041e-05, 3.041e-05, 3.038e-05, 3.038e-05, 12441.27293106], [1516811100000, 3.037e-05, 3.037e-05, 3.037e-05, 3.037e-05, 1317.2504837], [1516811160000, 3.037e-05, 3.037e-05, 3.037e-05, 3.037e-05, 363.4152652], [1516811220000, 3.057e-05, 3.057e-05, 3.057e-05, 3.057e-05, 223.387166], [1516811280000, 3.038e-05, 3.04e-05, 3.037e-05, 3.04e-05, 291.72988428], [1516811340000, 3.04e-05, 3.04e-05, 3.037e-05, 3.04e-05, 5781.20083073], [1516811400000, 3.04e-05, 3.058e-05, 3.04e-05, 3.058e-05, 968.01171041], [1516811460000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 650.231224], [1516811520000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 21.22275356], [1516811580000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 1349.52453483], [1516811640000, 3.058e-05, 3.058e-05, 3.04e-05, 3.058e-05, 1292.20695913], [1516811700000, 3.058e-05, 3.059e-05, 3.058e-05, 3.059e-05, 9256.27905464], [1516811760000, 3.059e-05, 3.059e-05, 3.057e-05, 3.058e-05, 6506.52055095], [1516811820000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 1142.42207001], [1516811880000, 3.058e-05, 3.074e-05, 3.05e-05, 3.074e-05, 39734.83329894], [1516812000000, 3.074e-05, 3.074e-05, 3.074e-05, 3.074e-05, 113.35431725], [1516812060000, 3.074e-05, 3.074e-05, 3.055e-05, 3.074e-05, 750.27098772], [1516812120000, 3.059e-05, 3.059e-05, 3.055e-05, 3.055e-05, 3837.08008632], [1516812180000, 3.056e-05, 3.056e-05, 3.056e-05, 3.056e-05, 18.31417727], [1516812240000, 3.056e-05, 3.056e-05, 3.055e-05, 3.056e-05, 3293.26184778], [1516812300000, 3.056e-05, 3.056e-05, 3.056e-05, 3.056e-05, 198.52851517], [1516812360000, 3.057e-05, 3.074e-05, 3.057e-05, 3.057e-05, 1529.1266063], [1516812420000, 3.074e-05, 3.074e-05, 3.074e-05, 3.074e-05, 6549.97772284], [1516812480000, 3.074e-05, 3.074e-05, 3.074e-05, 3.074e-05, 68.76227635], [1516812540000, 3.058e-05, 3.074e-05, 3.054e-05, 3.074e-05, 15629.24649415], [1516812600000, 3.074e-05, 3.075e-05, 3.054e-05, 3.075e-05, 8666.52626507], [1516812660000, 3.075e-05, 3.075e-05, 3.075e-05, 3.075e-05, 2473.55320376], [1516812720000, 3.075e-05, 3.076e-05, 3.075e-05, 3.075e-05, 4930.60271741], [1516812780000, 3.075e-05, 3.075e-05, 3.075e-05, 3.075e-05, 1043.4644849], [1516812840000, 3.075e-05, 3.075e-05, 3.075e-05, 3.075e-05, 40.0], [1516812900000, 3.076e-05, 3.076e-05, 3.075e-05, 3.075e-05, 7222.63683679], [1516812960000, 3.076e-05, 3.076e-05, 3.022e-05, 3.076e-05, 148723.27142161], [1516813020000, 3.05e-05, 3.05e-05, 3.05e-05, 3.05e-05, 298.50330512], [1516813140000, 3.055e-05, 3.055e-05, 3.051e-05, 3.055e-05, 20051.49125578], [1516813200000, 3.055e-05, 3.055e-05, 3.055e-05, 3.055e-05, 350.0], [1516813260000, 3.052e-05, 3.055e-05, 3.052e-05, 3.055e-05, 5105.82387228], [1516813380000, 3.055e-05, 3.055e-05, 3.055e-05, 3.055e-05, 5458.58387886], [1516813440000, 3.055e-05, 3.055e-05, 3.055e-05, 3.055e-05, 10233.72254732], [1516813560000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 32.64578185], [1516813620000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 124.0], [1516813680000, 3.06e-05, 3.068e-05, 3.055e-05, 3.068e-05, 7856.71901348], [1516813740000, 3.074e-05, 3.076e-05, 3.074e-05, 3.076e-05, 967.522193], [1516813800000, 3.074e-05, 3.076e-05, 3.073e-05, 3.073e-05, 17329.27244337], [1516813860000, 3.057e-05, 3.076e-05, 3.057e-05, 3.076e-05, 11868.88575844], [1516813920000, 3.076e-05, 3.076e-05, 3.076e-05, 3.076e-05, 1435.48113836], [1516813980000, 3.077e-05, 3.077e-05, 3.076e-05, 3.076e-05, 249.71920736], [1516814040000, 3.076e-05, 3.077e-05, 3.076e-05, 3.077e-05, 383.39405757], [1516814160000, 3.08e-05, 3.08e-05, 3.077e-05, 3.077e-05, 363.23212784], [1516814220000, 3.077e-05, 3.08e-05, 3.077e-05, 3.08e-05, 877.87355778], [1516814280000, 3.08e-05, 3.094e-05, 3.08e-05, 3.094e-05, 11698.35406769], [1516814340000, 3.08e-05, 3.094e-05, 3.08e-05, 3.089e-05, 4533.14960247], [1516814400000, 3.089e-05, 3.089e-05, 3.089e-05, 3.089e-05, 911.3035], [1516814460000, 3.089e-05, 3.089e-05, 3.089e-05, 3.089e-05, 2013.44226339], [1516814520000, 3.09e-05, 3.094e-05, 3.08e-05, 3.094e-05, 16767.21304913], [1516814640000, 3.09e-05, 3.096e-05, 3.068e-05, 3.096e-05, 19874.39877593], [1516814760000, 3.065e-05, 3.065e-05, 3.065e-05, 3.065e-05, 41.35624386], [1516814820000, 3.066e-05, 3.066e-05, 3.055e-05, 3.064e-05, 1188.46505797], [1516814880000, 3.065e-05, 3.065e-05, 3.065e-05, 3.065e-05, 397.72124234], [1516815000000, 3.065e-05, 3.07e-05, 3.065e-05, 3.065e-05, 204.18498414], [1516815060000, 3.069e-05, 3.069e-05, 3.069e-05, 3.069e-05, 5990.75520772], [1516815120000, 3.065e-05, 3.065e-05, 3.065e-05, 3.065e-05, 1896.56403015], [1516815180000, 3.069e-05, 3.069e-05, 3.069e-05, 3.069e-05, 6272.96730477], [1516815240000, 3.066e-05, 3.066e-05, 3.065e-05, 3.065e-05, 100.0], [1516815420000, 3.066e-05, 3.066e-05, 3.066e-05, 3.066e-05, 17.58208061], [1516815480000, 3.057e-05, 3.06e-05, 3.051e-05, 3.06e-05, 1021.43221792], [1516815540000, 3.055e-05, 3.06e-05, 3.052e-05, 3.06e-05, 71.41212368], [1516815600000, 3.06e-05, 3.069e-05, 3.06e-05, 3.069e-05, 16729.53040238], [1516815660000, 3.068e-05, 3.068e-05, 3.054e-05, 3.068e-05, 1495.41193275], [1516815720000, 3.068e-05, 3.069e-05, 3.068e-05, 3.069e-05, 1650.36591901], [1516815780000, 3.069e-05, 3.069e-05, 3.069e-05, 3.069e-05, 2535.19360341], [1516815840000, 3.069e-05, 3.069e-05, 3.069e-05, 3.069e-05, 607.08489868], [1516815900000, 3.068e-05, 3.085e-05, 3.068e-05, 3.085e-05, 17299.99287191], [1516815960000, 3.07e-05, 3.071e-05, 3.07e-05, 3.071e-05, 264.83438657], [1516816020000, 3.071e-05, 3.071e-05, 3.071e-05, 3.071e-05, 0.58254793], [1516816080000, 3.073e-05, 3.08e-05, 3.073e-05, 3.08e-05, 3050.0], [1516816140000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 978.06870015], [1516816200000, 3.073e-05, 3.073e-05, 3.073e-05, 3.073e-05, 2600.0], [1516816260000, 3.074e-05, 3.074e-05, 3.07e-05, 3.07e-05, 7429.36351922], [1516816320000, 3.073e-05, 3.077e-05, 3.073e-05, 3.077e-05, 1113.74715632], [1516816380000, 3.074e-05, 3.074e-05, 3.074e-05, 3.074e-05, 562.7204219], [1516816440000, 3.074e-05, 3.077e-05, 3.074e-05, 3.077e-05, 2738.30922739], [1516816500000, 3.077e-05, 3.077e-05, 3.074e-05, 3.075e-05, 2134.45720599], [1516816560000, 3.075e-05, 3.077e-05, 3.075e-05, 3.077e-05, 10101.71416985], [1516816620000, 3.075e-05, 3.075e-05, 3.073e-05, 3.073e-05, 1755.11797984], [1516816740000, 3.073e-05, 3.073e-05, 3.073e-05, 3.073e-05, 565.72490211], [1516816860000, 3.072e-05, 3.072e-05, 3.071e-05, 3.071e-05, 294.88226288], [1516816920000, 3.071e-05, 3.071e-05, 3.071e-05, 3.071e-05, 131.45021749], [1516816980000, 3.072e-05, 3.075e-05, 3.072e-05, 3.075e-05, 1247.74464349], [1516817040000, 3.077e-05, 3.077e-05, 3.075e-05, 3.077e-05, 353.680959], [1516817100000, 3.077e-05, 3.077e-05, 3.077e-05, 3.077e-05, 112.4694098], [1516817160000, 3.076e-05, 3.076e-05, 3.076e-05, 3.076e-05, 1294.04094504], [1516817220000, 3.077e-05, 3.077e-05, 3.076e-05, 3.076e-05, 7115.0228448], [1516817280000, 3.077e-05, 3.077e-05, 3.076e-05, 3.076e-05, 7769.64485318], [1516817340000, 3.076e-05, 3.076e-05, 3.075e-05, 3.075e-05, 437.98735649], [1516817400000, 3.075e-05, 3.075e-05, 3.071e-05, 3.071e-05, 7622.61813493], [1516817460000, 3.071e-05, 3.077e-05, 3.071e-05, 3.077e-05, 14506.33165448], [1516817520000, 3.077e-05, 3.077e-05, 3.076e-05, 3.076e-05, 9310.90645073], [1516817580000, 3.077e-05, 3.077e-05, 3.077e-05, 3.077e-05, 3099.52312886], [1516817640000, 3.077e-05, 3.077e-05, 3.077e-05, 3.077e-05, 9355.07822554], [1516817700000, 3.077e-05, 3.077e-05, 3.077e-05, 3.077e-05, 11452.40674846], [1516817760000, 3.076e-05, 3.077e-05, 3.076e-05, 3.077e-05, 1612.86048616], [1516817820000, 3.077e-05, 3.077e-05, 3.077e-05, 3.077e-05, 561.48072288], [1516817880000, 3.076e-05, 3.076e-05, 3.076e-05, 3.076e-05, 250.0], [1516817940000, 3.076e-05, 3.076e-05, 3.071e-05, 3.071e-05, 426.38691541], [1516818000000, 3.071e-05, 3.071e-05, 3.07e-05, 3.07e-05, 1449.72590437], [1516818060000, 3.071e-05, 3.071e-05, 3.07e-05, 3.07e-05, 9972.85819321], [1516818120000, 3.063e-05, 3.07e-05, 3.062e-05, 3.07e-05, 1856.16658022], [1516818180000, 3.07e-05, 3.07e-05, 3.05e-05, 3.07e-05, 19326.34281804], [1516818300000, 3.07e-05, 3.071e-05, 3.051e-05, 3.051e-05, 21343.73409998], [1516818360000, 3.053e-05, 3.053e-05, 3.053e-05, 3.053e-05, 750.0], [1516818420000, 3.07e-05, 3.07e-05, 3.07e-05, 3.07e-05, 326.81901547], [1516818480000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 2572.15404541], [1516818540000, 3.068e-05, 3.068e-05, 3.068e-05, 3.068e-05, 226.22942516], [1516818600000, 3.068e-05, 3.068e-05, 3.068e-05, 3.068e-05, 4945.12026809], [1516818660000, 3.068e-05, 3.07e-05, 3.068e-05, 3.07e-05, 23723.28446853], [1516818720000, 3.07e-05, 3.07e-05, 3.07e-05, 3.07e-05, 183.1116021], [1516818780000, 3.07e-05, 3.07e-05, 3.07e-05, 3.07e-05, 1018.48326718], [1516818840000, 3.068e-05, 3.07e-05, 3.067e-05, 3.07e-05, 8268.25258044], [1516818900000, 3.07e-05, 3.07e-05, 3.07e-05, 3.07e-05, 22607.2332056], [1516818960000, 3.07e-05, 3.077e-05, 3.07e-05, 3.077e-05, 37654.49191373], [1516819020000, 3.077e-05, 3.08e-05, 3.077e-05, 3.08e-05, 17518.38222143], [1516819080000, 3.087e-05, 3.087e-05, 3.087e-05, 3.087e-05, 5111.56455043], [1516819200000, 3.09e-05, 3.09e-05, 3.09e-05, 3.09e-05, 1648.73928218], [1516819260000, 3.097e-05, 3.097e-05, 3.09e-05, 3.09e-05, 445.04195308], [1516819320000, 3.09e-05, 3.09e-05, 3.09e-05, 3.09e-05, 7732.31441019], [1516819440000, 3.097e-05, 3.097e-05, 3.097e-05, 3.097e-05, 174.13873261], [1516819500000, 3.092e-05, 3.092e-05, 3.092e-05, 3.092e-05, 2517.04987208], [1516819560000, 3.09e-05, 3.09e-05, 3.09e-05, 3.09e-05, 2824.84717178], [1516819680000, 3.089e-05, 3.089e-05, 3.087e-05, 3.087e-05, 364.13950739], [1516819740000, 3.071e-05, 3.071e-05, 3.071e-05, 3.071e-05, 69.13211781], [1516819800000, 3.061e-05, 3.061e-05, 3.056e-05, 3.058e-05, 22438.01566376], [1516819860000, 3.071e-05, 3.071e-05, 3.071e-05, 3.071e-05, 40.12100299], [1516820040000, 3.06e-05, 3.104e-05, 3.06e-05, 3.103e-05, 11669.23115045], [1516820100000, 3.086e-05, 3.086e-05, 3.086e-05, 3.086e-05, 581.6801129], [1516820160000, 3.086e-05, 3.086e-05, 3.08e-05, 3.08e-05, 2415.25423729], [1516820280000, 3.081e-05, 3.086e-05, 3.081e-05, 3.086e-05, 2243.603253], [1516820340000, 3.086e-05, 3.086e-05, 3.086e-05, 3.086e-05, 1052.09619523], [1516820400000, 3.08e-05, 3.086e-05, 3.08e-05, 3.086e-05, 892.13004232], [1516820460000, 3.083e-05, 3.083e-05, 3.083e-05, 3.083e-05, 1000.0], [1516820580000, 3.062e-05, 3.062e-05, 3.062e-05, 3.062e-05, 320.0], [1516820700000, 3.062e-05, 3.062e-05, 3.062e-05, 3.062e-05, 470.53441315], [1516820760000, 3.081e-05, 3.081e-05, 3.081e-05, 3.081e-05, 600.0], [1516820820000, 3.062e-05, 3.063e-05, 3.062e-05, 3.062e-05, 7450.46599977], [1516820880000, 3.072e-05, 3.072e-05, 3.063e-05, 3.063e-05, 1805.22032746], [1516821000000, 3.072e-05, 3.072e-05, 3.072e-05, 3.072e-05, 131.15613057], [1516821060000, 3.08e-05, 3.092e-05, 3.08e-05, 3.092e-05, 5774.81664566], [1516821180000, 3.073e-05, 3.073e-05, 3.073e-05, 3.073e-05, 20.0], [1516821240000, 3.073e-05, 3.074e-05, 3.073e-05, 3.074e-05, 323.93580539], [1516821300000, 3.088e-05, 3.093e-05, 3.088e-05, 3.088e-05, 2678.17359074], [1516821360000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 1414.34403892], [1516821420000, 3.098e-05, 3.098e-05, 3.098e-05, 3.098e-05, 30.0], [1516821480000, 3.089e-05, 3.089e-05, 3.088e-05, 3.088e-05, 647.93308084], [1516821540000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 1087.53997828], [1516821600000, 3.092e-05, 3.092e-05, 3.089e-05, 3.089e-05, 110.26023521], [1516821660000, 3.089e-05, 3.089e-05, 3.089e-05, 3.089e-05, 558.10886939], [1516821720000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 196.51806105], [1516821780000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 5064.72303812], [1516821900000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 1009.84940853], [1516821960000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 4000.0], [1516822020000, 3.075e-05, 3.08e-05, 3.075e-05, 3.076e-05, 4363.8989806], [1516822080000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 503.147455], [1516822140000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 2000.0], [1516822200000, 3.07e-05, 3.07e-05, 3.07e-05, 3.07e-05, 42.81517714], [1516822320000, 3.072e-05, 3.088e-05, 3.072e-05, 3.088e-05, 48.07493536], [1516822380000, 3.072e-05, 3.088e-05, 3.072e-05, 3.088e-05, 66043.45700935], [1516822440000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 251.483752], [1516822560000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 999.56520615], [1516822620000, 3.074e-05, 3.074e-05, 3.073e-05, 3.074e-05, 1079.05044033], [1516822680000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 1538.55556428], [1516822740000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 2606.49414866], [1516822800000, 3.085e-05, 3.088e-05, 3.08e-05, 3.08e-05, 11582.61226124], [1516822860000, 3.085e-05, 3.085e-05, 3.08e-05, 3.085e-05, 21092.30999227], [1516822920000, 3.084e-05, 3.084e-05, 3.084e-05, 3.084e-05, 82.09515564], [1516822980000, 3.084e-05, 3.084e-05, 3.08e-05, 3.08e-05, 1144.63692721], [1516823040000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 5843.05142938], [1516823100000, 3.085e-05, 3.085e-05, 3.085e-05, 3.085e-05, 1015.75473501], [1516823160000, 3.08e-05, 3.085e-05, 3.08e-05, 3.085e-05, 2451.63679822], [1516823220000, 3.085e-05, 3.085e-05, 3.081e-05, 3.081e-05, 2064.0568145], [1516823280000, 3.081e-05, 3.081e-05, 3.081e-05, 3.081e-05, 628.22862302], [1516823400000, 3.08e-05, 3.081e-05, 3.08e-05, 3.08e-05, 361.98483208], [1516823460000, 3.076e-05, 3.08e-05, 3.076e-05, 3.08e-05, 3394.36604794], [1516823520000, 3.076e-05, 3.076e-05, 3.076e-05, 3.076e-05, 1540.48563331], [1516823580000, 3.076e-05, 3.076e-05, 3.075e-05, 3.075e-05, 1019.01320513], [1516823640000, 3.074e-05, 3.079e-05, 3.073e-05, 3.079e-05, 1611.83887338], [1516823700000, 3.073e-05, 3.073e-05, 3.07e-05, 3.07e-05, 8819.00545164], [1516823760000, 3.072e-05, 3.072e-05, 3.07e-05, 3.07e-05, 5422.51562656], [1516823820000, 3.064e-05, 3.064e-05, 3.064e-05, 3.064e-05, 19.53625148], [1516823880000, 3.064e-05, 3.064e-05, 3.064e-05, 3.064e-05, 160.83983849], [1516823940000, 3.065e-05, 3.07e-05, 3.065e-05, 3.07e-05, 10423.19751376], [1516824000000, 3.07e-05, 3.07e-05, 3.07e-05, 3.07e-05, 1693.46515428], [1516824060000, 3.067e-05, 3.068e-05, 3.065e-05, 3.065e-05, 8715.46102796], [1516824120000, 3.068e-05, 3.072e-05, 3.067e-05, 3.072e-05, 30969.01626144], [1516824180000, 3.072e-05, 3.085e-05, 3.072e-05, 3.085e-05, 12193.99679308], [1516824240000, 3.087e-05, 3.087e-05, 3.087e-05, 3.087e-05, 311.65106346], [1516824300000, 3.085e-05, 3.087e-05, 3.085e-05, 3.087e-05, 7800.90755102], [1516824420000, 3.086e-05, 3.086e-05, 3.086e-05, 3.086e-05, 53.43814626], [1516824540000, 3.086e-05, 3.086e-05, 3.086e-05, 3.086e-05, 3232.33959819], [1516824600000, 3.086e-05, 3.086e-05, 3.086e-05, 3.086e-05, 482.73601993], [1516824660000, 3.074e-05, 3.074e-05, 3.074e-05, 3.074e-05, 200.0], [1516824720000, 3.086e-05, 3.087e-05, 3.086e-05, 3.086e-05, 4049.58810729], [1516824780000, 3.08e-05, 3.08e-05, 3.074e-05, 3.08e-05, 15957.98673207], [1516824840000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 1021.95007089], [1516824900000, 3.08e-05, 3.085e-05, 3.08e-05, 3.085e-05, 2200.51299937], [1516824960000, 3.08e-05, 3.085e-05, 3.08e-05, 3.085e-05, 877.35576829], [1516825020000, 3.085e-05, 3.088e-05, 3.085e-05, 3.088e-05, 6450.98227938], [1516825080000, 3.089e-05, 3.099e-05, 3.087e-05, 3.09e-05, 3920.14011255], [1516825140000, 3.099e-05, 3.1e-05, 3.087e-05, 3.087e-05, 11959.24663727], [1516825200000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 9890.820587], [1516825320000, 3.087e-05, 3.1e-05, 3.087e-05, 3.1e-05, 7838.4691497], [1516825380000, 3.099e-05, 3.1e-05, 3.087e-05, 3.087e-05, 332.2137276], [1516825440000, 3.087e-05, 3.087e-05, 3.086e-05, 3.087e-05, 10608.28306032], [1516825500000, 3.087e-05, 3.087e-05, 3.085e-05, 3.085e-05, 991.90355872], [1516825560000, 3.085e-05, 3.085e-05, 3.085e-05, 3.085e-05, 1913.47682497], [1516825620000, 3.085e-05, 3.085e-05, 3.085e-05, 3.085e-05, 742.046407], [1516825680000, 3.085e-05, 3.085e-05, 3.085e-05, 3.085e-05, 626.3646043], [1516825740000, 3.085e-05, 3.085e-05, 3.08e-05, 3.084e-05, 6738.74802878], [1516825800000, 3.082e-05, 3.085e-05, 3.082e-05, 3.085e-05, 1369.16721565], [1516825860000, 3.087e-05, 3.087e-05, 3.074e-05, 3.074e-05, 24795.91096667], [1516825920000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 136.086], [1516825980000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 291.92961707], [1516826040000, 3.087e-05, 3.087e-05, 3.087e-05, 3.087e-05, 1236.80823129], [1516826100000, 3.086e-05, 3.087e-05, 3.086e-05, 3.087e-05, 700.72420068], [1516826340000, 3.086e-05, 3.086e-05, 3.086e-05, 3.086e-05, 300.0], [1516826400000, 3.086e-05, 3.087e-05, 3.086e-05, 3.087e-05, 2105.89186374], [1516826460000, 3.087e-05, 3.087e-05, 3.087e-05, 3.087e-05, 1098.38267702], [1516826520000, 3.087e-05, 3.087e-05, 3.087e-05, 3.087e-05, 10927.82401751], [1516826640000, 3.087e-05, 3.087e-05, 3.087e-05, 3.087e-05, 281.75965986], [1516826700000, 3.078e-05, 3.08e-05, 3.076e-05, 3.076e-05, 12966.12292532], [1516826760000, 3.076e-05, 3.077e-05, 3.076e-05, 3.077e-05, 1585.59422623], [1516826820000, 3.095e-05, 3.106e-05, 3.095e-05, 3.106e-05, 3337.75322078], [1516826940000, 3.103e-05, 3.116e-05, 3.086e-05, 3.086e-05, 8244.82209299], [1516827000000, 3.11e-05, 3.115e-05, 3.086e-05, 3.086e-05, 4613.26109382], [1516827240000, 3.086e-05, 3.086e-05, 3.086e-05, 3.086e-05, 438.29717148], [1516827300000, 3.087e-05, 3.113e-05, 3.087e-05, 3.113e-05, 763.1690161], [1516827360000, 3.113e-05, 3.118e-05, 3.113e-05, 3.113e-05, 12691.91520153], [1516827420000, 3.114e-05, 3.115e-05, 3.113e-05, 3.115e-05, 848.07615652], [1516827480000, 3.115e-05, 3.115e-05, 3.113e-05, 3.115e-05, 3852.77388711], [1516827540000, 3.115e-05, 3.115e-05, 3.113e-05, 3.113e-05, 1662.59708495], [1516827600000, 3.113e-05, 3.113e-05, 3.087e-05, 3.087e-05, 3085.60775831], [1516827660000, 3.087e-05, 3.087e-05, 3.087e-05, 3.087e-05, 48.95561357], [1516827720000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 1919.59973075], [1516827780000, 3.088e-05, 3.088e-05, 3.087e-05, 3.087e-05, 4649.79439805], [1516827840000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 64.09323797], [1516827900000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 100.0], [1516827960000, 3.088e-05, 3.088e-05, 3.088e-05, 3.088e-05, 942.15496607], [1516828020000, 3.109e-05, 3.109e-05, 3.109e-05, 3.109e-05, 221.78736722], [1516828080000, 3.107e-05, 3.109e-05, 3.107e-05, 3.109e-05, 2747.42054199], [1516828140000, 3.109e-05, 3.11e-05, 3.109e-05, 3.109e-05, 17260.78747488], [1516828200000, 3.109e-05, 3.109e-05, 3.109e-05, 3.109e-05, 1762.48282834], [1516828320000, 3.109e-05, 3.11e-05, 3.087e-05, 3.11e-05, 5816.89952139], [1516828380000, 3.109e-05, 3.109e-05, 3.087e-05, 3.087e-05, 350.0], [1516828440000, 3.109e-05, 3.109e-05, 3.108e-05, 3.108e-05, 1028.09512885], [1516828560000, 3.087e-05, 3.087e-05, 3.087e-05, 3.087e-05, 18.92714351], [1516828620000, 3.087e-05, 3.106e-05, 3.087e-05, 3.106e-05, 7993.74817681], [1516828680000, 3.105e-05, 3.105e-05, 3.087e-05, 3.087e-05, 4281.92273384], [1516828740000, 3.105e-05, 3.106e-05, 3.105e-05, 3.106e-05, 27693.71809795], [1516828800000, 3.106e-05, 3.106e-05, 3.087e-05, 3.087e-05, 11379.75924521], [1516828860000, 3.087e-05, 3.087e-05, 3.087e-05, 3.087e-05, 2186.73405629], [1516828920000, 3.087e-05, 3.1e-05, 3.087e-05, 3.1e-05, 785.4321511], [1516828980000, 3.101e-05, 3.101e-05, 3.1e-05, 3.1e-05, 36.93952389], [1516829040000, 3.1e-05, 3.105e-05, 3.1e-05, 3.1e-05, 853.49912261], [1516829100000, 3.1e-05, 3.148e-05, 3.1e-05, 3.134e-05, 110095.6166663], [1516829160000, 3.135e-05, 3.136e-05, 3.135e-05, 3.135e-05, 1914.49074204], [1516829220000, 3.141e-05, 3.165e-05, 3.14e-05, 3.165e-05, 54492.7549158], [1516829280000, 3.141e-05, 3.142e-05, 3.135e-05, 3.135e-05, 25207.84328107], [1516829340000, 3.135e-05, 3.138e-05, 3.133e-05, 3.138e-05, 13104.60827361], [1516829400000, 3.138e-05, 3.162e-05, 3.138e-05, 3.162e-05, 7418.52796879], [1516829460000, 3.162e-05, 3.162e-05, 3.162e-05, 3.162e-05, 1832.37973909], [1516829520000, 3.141e-05, 3.165e-05, 3.141e-05, 3.162e-05, 29433.77586204], [1516829580000, 3.162e-05, 3.18e-05, 3.162e-05, 3.173e-05, 33262.62562218], [1516829640000, 3.173e-05, 3.182e-05, 3.173e-05, 3.179e-05, 4489.07948064], [1516829700000, 3.173e-05, 3.174e-05, 3.154e-05, 3.164e-05, 32112.18311608], [1516829760000, 3.147e-05, 3.162e-05, 3.142e-05, 3.142e-05, 12439.00260187], [1516829820000, 3.142e-05, 3.154e-05, 3.141e-05, 3.154e-05, 20412.14832838], [1516829880000, 3.154e-05, 3.154e-05, 3.153e-05, 3.153e-05, 9970.71492365], [1516829940000, 3.154e-05, 3.169e-05, 3.154e-05, 3.169e-05, 5042.76237752], [1516830000000, 3.17e-05, 3.17e-05, 3.154e-05, 3.154e-05, 22837.22185847], [1516830060000, 3.153e-05, 3.154e-05, 3.153e-05, 3.154e-05, 3652.23600996], [1516830120000, 3.154e-05, 3.169e-05, 3.153e-05, 3.154e-05, 10489.71161148], [1516830180000, 3.154e-05, 3.155e-05, 3.153e-05, 3.153e-05, 202.29861012], [1516830240000, 3.153e-05, 3.153e-05, 3.152e-05, 3.152e-05, 1369.37721595], [1516830300000, 3.153e-05, 3.153e-05, 3.152e-05, 3.153e-05, 9354.8575371], [1516830360000, 3.167e-05, 3.168e-05, 3.167e-05, 3.168e-05, 1757.46440356], [1516830420000, 3.168e-05, 3.168e-05, 3.145e-05, 3.168e-05, 11969.44744758], [1516830480000, 3.168e-05, 3.168e-05, 3.146e-05, 3.146e-05, 442.58009926], [1516830540000, 3.165e-05, 3.167e-05, 3.165e-05, 3.167e-05, 136.0544938], [1516830600000, 3.166e-05, 3.167e-05, 3.166e-05, 3.166e-05, 6199.86486094], [1516830660000, 3.165e-05, 3.168e-05, 3.165e-05, 3.166e-05, 14322.57974764], [1516830720000, 3.16e-05, 3.166e-05, 3.16e-05, 3.166e-05, 2845.04857992], [1516830780000, 3.166e-05, 3.17e-05, 3.166e-05, 3.17e-05, 2475.76696594], [1516830840000, 3.166e-05, 3.166e-05, 3.148e-05, 3.148e-05, 3269.25556441], [1516830900000, 3.148e-05, 3.148e-05, 3.143e-05, 3.143e-05, 9537.6867572], [1516831020000, 3.143e-05, 3.168e-05, 3.143e-05, 3.143e-05, 5817.23811514], [1516831140000, 3.166e-05, 3.17e-05, 3.166e-05, 3.17e-05, 2712.52475285], [1516831200000, 3.16e-05, 3.16e-05, 3.16e-05, 3.16e-05, 136.73017817], [1516831260000, 3.148e-05, 3.148e-05, 3.148e-05, 3.148e-05, 743.96704584], [1516831320000, 3.159e-05, 3.17e-05, 3.159e-05, 3.17e-05, 1455.65686709], [1516831380000, 3.172e-05, 3.175e-05, 3.169e-05, 3.169e-05, 576.62756454], [1516831440000, 3.17e-05, 3.17e-05, 3.169e-05, 3.169e-05, 3373.94830179], [1516831500000, 3.169e-05, 3.176e-05, 3.168e-05, 3.176e-05, 18828.99952342], [1516831560000, 3.15e-05, 3.175e-05, 3.15e-05, 3.175e-05, 1297.3746029], [1516831620000, 3.175e-05, 3.175e-05, 3.173e-05, 3.173e-05, 3429.25221961], [1516831680000, 3.17e-05, 3.174e-05, 3.17e-05, 3.173e-05, 8812.60980299], [1516831740000, 3.173e-05, 3.175e-05, 3.151e-05, 3.151e-05, 39618.85507053], [1516831800000, 3.172e-05, 3.173e-05, 3.172e-05, 3.173e-05, 10683.80081215], [1516831860000, 3.17e-05, 3.17e-05, 3.151e-05, 3.151e-05, 691.94024486], [1516831920000, 3.169e-05, 3.169e-05, 3.168e-05, 3.168e-05, 66.15617263], [1516831980000, 3.169e-05, 3.169e-05, 3.168e-05, 3.168e-05, 179.90741038], [1516832040000, 3.151e-05, 3.151e-05, 3.151e-05, 3.151e-05, 1734.62081869], [1516832100000, 3.151e-05, 3.151e-05, 3.148e-05, 3.148e-05, 4038.48299931], [1516832160000, 3.15e-05, 3.166e-05, 3.15e-05, 3.166e-05, 3000.0], [1516832220000, 3.164e-05, 3.164e-05, 3.138e-05, 3.138e-05, 24489.46918835], [1516832280000, 3.138e-05, 3.162e-05, 3.138e-05, 3.143e-05, 6932.01364904], [1516832340000, 3.143e-05, 3.143e-05, 3.143e-05, 3.143e-05, 168.50256403], [1516832400000, 3.143e-05, 3.162e-05, 3.143e-05, 3.143e-05, 5555.68282341], [1516832460000, 3.162e-05, 3.162e-05, 3.143e-05, 3.162e-05, 2053.90773193], [1516832520000, 3.143e-05, 3.161e-05, 3.143e-05, 3.161e-05, 571.6599091], [1516832580000, 3.146e-05, 3.146e-05, 3.143e-05, 3.143e-05, 3504.725588], [1516832640000, 3.143e-05, 3.143e-05, 3.143e-05, 3.143e-05, 3083.66556712], [1516832700000, 3.156e-05, 3.157e-05, 3.143e-05, 3.154e-05, 13145.1582091], [1516832760000, 3.143e-05, 3.144e-05, 3.143e-05, 3.144e-05, 2193.31942091], [1516832820000, 3.144e-05, 3.144e-05, 3.138e-05, 3.138e-05, 11048.09831649], [1516832880000, 3.138e-05, 3.138e-05, 3.138e-05, 3.138e-05, 2784.68906601], [1516832940000, 3.138e-05, 3.138e-05, 3.138e-05, 3.138e-05, 620.0], [1516833000000, 3.138e-05, 3.138e-05, 3.137e-05, 3.137e-05, 14854.6461432], [1516833060000, 3.137e-05, 3.138e-05, 3.133e-05, 3.133e-05, 4064.01084812], [1516833120000, 3.133e-05, 3.133e-05, 3.133e-05, 3.133e-05, 3744.66528467], [1516833180000, 3.118e-05, 3.133e-05, 3.118e-05, 3.133e-05, 873.11801381], [1516833240000, 3.133e-05, 3.133e-05, 3.133e-05, 3.133e-05, 350.70319731], [1516833300000, 3.132e-05, 3.132e-05, 3.132e-05, 3.132e-05, 523.65471393], [1516833360000, 3.132e-05, 3.132e-05, 3.13e-05, 3.13e-05, 2343.12962984], [1516833420000, 3.127e-05, 3.127e-05, 3.127e-05, 3.127e-05, 47.96929964], [1516833480000, 3.119e-05, 3.119e-05, 3.118e-05, 3.118e-05, 7904.26184535], [1516833540000, 3.115e-05, 3.115e-05, 3.108e-05, 3.108e-05, 4945.88867874], [1516833600000, 3.108e-05, 3.118e-05, 3.105e-05, 3.118e-05, 3668.47076152], [1516833660000, 3.117e-05, 3.117e-05, 3.117e-05, 3.117e-05, 262.65195426], [1516833720000, 3.116e-05, 3.116e-05, 3.116e-05, 3.116e-05, 32.09242618], [1516833780000, 3.115e-05, 3.115e-05, 3.115e-05, 3.115e-05, 1059.58984137], [1516833840000, 3.116e-05, 3.116e-05, 3.114e-05, 3.116e-05, 5872.60298217], [1516833900000, 3.109e-05, 3.116e-05, 3.109e-05, 3.116e-05, 8752.52554385], [1516833960000, 3.116e-05, 3.116e-05, 3.116e-05, 3.116e-05, 1422.5108689], [1516834020000, 3.115e-05, 3.116e-05, 3.108e-05, 3.108e-05, 985.01277457], [1516834080000, 3.108e-05, 3.108e-05, 3.105e-05, 3.105e-05, 1347.92133242], [1516834140000, 3.105e-05, 3.118e-05, 3.105e-05, 3.118e-05, 68174.14234926], [1516834200000, 3.105e-05, 3.105e-05, 3.105e-05, 3.105e-05, 2484.88518891], [1516834320000, 3.105e-05, 3.105e-05, 3.105e-05, 3.105e-05, 123.32602282], [1516834380000, 3.115e-05, 3.115e-05, 3.115e-05, 3.115e-05, 35.313002], [1516834440000, 3.106e-05, 3.106e-05, 3.106e-05, 3.106e-05, 5185.16315393], [1516834500000, 3.106e-05, 3.106e-05, 3.106e-05, 3.106e-05, 2410.08633138], [1516834560000, 3.114e-05, 3.114e-05, 3.114e-05, 3.114e-05, 3811.40557405], [1516834620000, 3.114e-05, 3.114e-05, 3.114e-05, 3.114e-05, 2582.13361905], [1516834680000, 3.107e-05, 3.107e-05, 3.107e-05, 3.107e-05, 3351.57342087], [1516834740000, 3.107e-05, 3.107e-05, 3.107e-05, 3.107e-05, 179.22110783], [1516834860000, 3.109e-05, 3.109e-05, 3.108e-05, 3.108e-05, 287.50222869], [1516834980000, 3.108e-05, 3.113e-05, 3.108e-05, 3.113e-05, 371.91730078], [1516835160000, 3.113e-05, 3.113e-05, 3.113e-05, 3.113e-05, 50.0], [1516835220000, 3.109e-05, 3.109e-05, 3.107e-05, 3.107e-05, 3112.88860622], [1516835280000, 3.106e-05, 3.112e-05, 3.106e-05, 3.112e-05, 25741.94548479], [1516835340000, 3.11e-05, 3.11e-05, 3.106e-05, 3.106e-05, 9005.40879938], [1516835460000, 3.107e-05, 3.107e-05, 3.106e-05, 3.106e-05, 2027.97202293], [1516835520000, 3.107e-05, 3.113e-05, 3.106e-05, 3.113e-05, 11218.37965336], [1516835580000, 3.113e-05, 3.114e-05, 3.113e-05, 3.114e-05, 350.66587266], [1516835640000, 3.114e-05, 3.114e-05, 3.114e-05, 3.114e-05, 635.8480805], [1516835700000, 3.113e-05, 3.113e-05, 3.113e-05, 3.113e-05, 829.63496066], [1516835760000, 3.114e-05, 3.115e-05, 3.114e-05, 3.115e-05, 5008.07798227], [1516835820000, 3.115e-05, 3.115e-05, 3.114e-05, 3.115e-05, 3119.19098578], [1516835880000, 3.114e-05, 3.114e-05, 3.114e-05, 3.114e-05, 4496.23177056], [1516835940000, 3.114e-05, 3.115e-05, 3.114e-05, 3.115e-05, 6883.6320701], [1516836000000, 3.115e-05, 3.118e-05, 3.114e-05, 3.118e-05, 4485.53279781], [1516836060000, 3.125e-05, 3.125e-05, 3.125e-05, 3.125e-05, 2391.53022049], [1516836120000, 3.126e-05, 3.13e-05, 3.126e-05, 3.126e-05, 3665.58890829], [1516836180000, 3.126e-05, 3.13e-05, 3.126e-05, 3.13e-05, 10639.39229357], [1516836240000, 3.126e-05, 3.126e-05, 3.105e-05, 3.105e-05, 60374.31443624], [1516836300000, 3.13e-05, 3.13e-05, 3.13e-05, 3.13e-05, 16.34115335], [1516836480000, 3.107e-05, 3.107e-05, 3.098e-05, 3.098e-05, 13479.59229404], [1516836540000, 3.099e-05, 3.099e-05, 3.099e-05, 3.099e-05, 154.0], [1516836600000, 3.099e-05, 3.099e-05, 3.099e-05, 3.099e-05, 2003.05141162], [1516836660000, 3.11e-05, 3.11e-05, 3.11e-05, 3.11e-05, 1211.94251068], [1516836720000, 3.11e-05, 3.11e-05, 3.11e-05, 3.11e-05, 323.4785947], [1516836780000, 3.11e-05, 3.125e-05, 3.11e-05, 3.11e-05, 11476.73396613], [1516836840000, 3.125e-05, 3.129e-05, 3.125e-05, 3.129e-05, 2197.77430586], [1516836900000, 3.101e-05, 3.101e-05, 3.099e-05, 3.099e-05, 15774.44682497], [1516836960000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 1385.52457953], [1516837020000, 3.1e-05, 3.128e-05, 3.1e-05, 3.101e-05, 2393.9484251], [1516837080000, 3.102e-05, 3.102e-05, 3.102e-05, 3.102e-05, 536.01810461], [1516837140000, 3.102e-05, 3.103e-05, 3.102e-05, 3.103e-05, 1884.68204578], [1516837200000, 3.125e-05, 3.129e-05, 3.125e-05, 3.125e-05, 12287.78547865], [1516837260000, 3.126e-05, 3.126e-05, 3.125e-05, 3.125e-05, 3606.89691286], [1516837320000, 3.125e-05, 3.125e-05, 3.125e-05, 3.125e-05, 1283.89167619], [1516837380000, 3.125e-05, 3.125e-05, 3.125e-05, 3.125e-05, 3904.55445199], [1516837440000, 3.103e-05, 3.103e-05, 3.091e-05, 3.091e-05, 9042.6806772], [1516837500000, 3.091e-05, 3.091e-05, 3.09e-05, 3.091e-05, 7394.13847856], [1516837560000, 3.091e-05, 3.091e-05, 3.087e-05, 3.091e-05, 7136.33977959], [1516837620000, 3.121e-05, 3.121e-05, 3.102e-05, 3.102e-05, 8663.71249376], [1516837680000, 3.091e-05, 3.102e-05, 3.091e-05, 3.102e-05, 7354.79884852], [1516837740000, 3.092e-05, 3.092e-05, 3.092e-05, 3.092e-05, 1782.03359349], [1516837800000, 3.092e-05, 3.092e-05, 3.092e-05, 3.092e-05, 3275.68828456], [1516837860000, 3.091e-05, 3.091e-05, 3.087e-05, 3.088e-05, 4231.08571538], [1516837920000, 3.088e-05, 3.1e-05, 3.088e-05, 3.1e-05, 851.51822138], [1516837980000, 3.1e-05, 3.1e-05, 3.088e-05, 3.088e-05, 1889.18503873], [1516838040000, 3.089e-05, 3.1e-05, 3.089e-05, 3.1e-05, 1376.49475689], [1516838100000, 3.09e-05, 3.1e-05, 3.089e-05, 3.1e-05, 350.92350835], [1516838220000, 3.099e-05, 3.099e-05, 3.09e-05, 3.09e-05, 1818.95033796], [1516838280000, 3.089e-05, 3.089e-05, 3.07e-05, 3.075e-05, 29441.03170431], [1516838340000, 3.075e-05, 3.075e-05, 3.065e-05, 3.07e-05, 33161.65854743], [1516838400000, 3.07e-05, 3.075e-05, 3.07e-05, 3.075e-05, 18432.42565791], [1516838460000, 3.075e-05, 3.08e-05, 3.074e-05, 3.08e-05, 6495.99698511], [1516838520000, 3.074e-05, 3.08e-05, 3.074e-05, 3.08e-05, 1140.96107212], [1516838580000, 3.08e-05, 3.1e-05, 3.075e-05, 3.075e-05, 8009.02006367], [1516838640000, 3.075e-05, 3.078e-05, 3.075e-05, 3.078e-05, 4349.32862862], [1516838700000, 3.075e-05, 3.075e-05, 3.073e-05, 3.073e-05, 1492.06129313], [1516838760000, 3.073e-05, 3.073e-05, 3.07e-05, 3.073e-05, 1542.216998], [1516838820000, 3.073e-05, 3.073e-05, 3.072e-05, 3.072e-05, 3323.46160861], [1516838880000, 3.073e-05, 3.1e-05, 3.067e-05, 3.1e-05, 26218.67599481], [1516838940000, 3.1e-05, 3.102e-05, 3.1e-05, 3.1e-05, 3783.03452599], [1516839000000, 3.1e-05, 3.102e-05, 3.1e-05, 3.1e-05, 4862.53734605], [1516839060000, 3.1e-05, 3.102e-05, 3.1e-05, 3.1e-05, 251.19875879], [1516839120000, 3.1e-05, 3.1e-05, 3.078e-05, 3.078e-05, 1474.30391561], [1516839180000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 1394.18638886], [1516839300000, 3.076e-05, 3.1e-05, 3.075e-05, 3.075e-05, 2167.16926704], [1516839360000, 3.076e-05, 3.076e-05, 3.075e-05, 3.075e-05, 3266.66532277], [1516839420000, 3.074e-05, 3.074e-05, 3.074e-05, 3.074e-05, 2084.42546737], [1516839480000, 3.074e-05, 3.075e-05, 3.072e-05, 3.075e-05, 7731.97070286], [1516839540000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 2147.29721451], [1516839600000, 3.099e-05, 3.099e-05, 3.099e-05, 3.099e-05, 233.41613707], [1516839660000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 2300.5367227], [1516839720000, 3.1e-05, 3.1e-05, 3.1e-05, 3.1e-05, 127.0], [1516839780000, 3.099e-05, 3.099e-05, 3.099e-05, 3.099e-05, 2500.0], [1516839840000, 3.099e-05, 3.099e-05, 3.097e-05, 3.097e-05, 1472.9476277], [1516839900000, 3.091e-05, 3.095e-05, 3.091e-05, 3.095e-05, 9741.19084632], [1516839960000, 3.091e-05, 3.091e-05, 3.068e-05, 3.08e-05, 5546.86601162], [1516840020000, 3.08e-05, 3.094e-05, 3.08e-05, 3.08e-05, 2960.05177589], [1516840080000, 3.068e-05, 3.079e-05, 3.068e-05, 3.079e-05, 176.93754897], [1516840140000, 3.069e-05, 3.069e-05, 3.069e-05, 3.069e-05, 1300.82060448], [1516840200000, 3.069e-05, 3.079e-05, 3.069e-05, 3.079e-05, 6579.83764135], [1516840260000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 19.52812242], [1516840320000, 3.08e-05, 3.085e-05, 3.08e-05, 3.085e-05, 2824.29085455], [1516840380000, 3.072e-05, 3.072e-05, 3.07e-05, 3.07e-05, 1791.48398707], [1516840440000, 3.069e-05, 3.073e-05, 3.069e-05, 3.073e-05, 3373.75149966], [1516840500000, 3.095e-05, 3.095e-05, 3.095e-05, 3.095e-05, 20.0], [1516840620000, 3.075e-05, 3.094e-05, 3.073e-05, 3.094e-05, 2178.68432946], [1516840680000, 3.073e-05, 3.094e-05, 3.072e-05, 3.072e-05, 548.69481276], [1516840800000, 3.075e-05, 3.075e-05, 3.072e-05, 3.073e-05, 251.76075349], [1516840860000, 3.073e-05, 3.073e-05, 3.072e-05, 3.072e-05, 8956.25284818], [1516840920000, 3.072e-05, 3.072e-05, 3.072e-05, 3.072e-05, 264.22212697], [1516840980000, 3.072e-05, 3.072e-05, 3.067e-05, 3.067e-05, 26348.7574747], [1516841040000, 3.067e-05, 3.095e-05, 3.067e-05, 3.095e-05, 3882.83018617], [1516841100000, 3.095e-05, 3.095e-05, 3.095e-05, 3.095e-05, 20.0], [1516841160000, 3.094e-05, 3.095e-05, 3.094e-05, 3.095e-05, 1056.02560995], [1516841220000, 3.094e-05, 3.094e-05, 3.094e-05, 3.094e-05, 2720.95686089], [1516841280000, 3.094e-05, 3.094e-05, 3.071e-05, 3.071e-05, 2913.10353813], [1516841340000, 3.071e-05, 3.071e-05, 3.071e-05, 3.071e-05, 30.0], [1516841400000, 3.071e-05, 3.071e-05, 3.071e-05, 3.071e-05, 6988.95282698], [1516841580000, 3.072e-05, 3.072e-05, 3.071e-05, 3.071e-05, 1150.17967653], [1516841640000, 3.072e-05, 3.072e-05, 3.072e-05, 3.072e-05, 44.87259992], [1516841700000, 3.073e-05, 3.073e-05, 3.072e-05, 3.072e-05, 238.40470965], [1516841760000, 3.072e-05, 3.095e-05, 3.071e-05, 3.071e-05, 12283.29554976], [1516841820000, 3.072e-05, 3.072e-05, 3.072e-05, 3.072e-05, 1967.67026886], [1516841940000, 3.095e-05, 3.095e-05, 3.078e-05, 3.078e-05, 1067.56310529], [1516842000000, 3.081e-05, 3.081e-05, 3.08e-05, 3.08e-05, 2024.2124265], [1516842060000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 100.0], [1516842120000, 3.08e-05, 3.093e-05, 3.08e-05, 3.093e-05, 335.91242348], [1516842240000, 3.09e-05, 3.09e-05, 3.09e-05, 3.09e-05, 19.0], [1516842300000, 3.08e-05, 3.08e-05, 3.071e-05, 3.08e-05, 14698.42197424], [1516842420000, 3.071e-05, 3.08e-05, 3.071e-05, 3.08e-05, 876.36760683], [1516842480000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 3323.85466399], [1516842540000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 50.26707777], [1516842720000, 3.082e-05, 3.082e-05, 3.082e-05, 3.082e-05, 278.51659029], [1516842840000, 3.082e-05, 3.082e-05, 3.082e-05, 3.082e-05, 772.25977832], [1516842900000, 3.083e-05, 3.093e-05, 3.083e-05, 3.093e-05, 5530.15924551], [1516842960000, 3.082e-05, 3.082e-05, 3.081e-05, 3.081e-05, 61.87481679], [1516843020000, 3.081e-05, 3.082e-05, 3.081e-05, 3.082e-05, 1355.12343113], [1516843080000, 3.081e-05, 3.081e-05, 3.08e-05, 3.08e-05, 464.82707275], [1516843140000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 7766.52608763], [1516843200000, 3.08e-05, 3.08e-05, 3.08e-05, 3.08e-05, 1050.77636861], [1516843260000, 3.08e-05, 3.08e-05, 3.078e-05, 3.078e-05, 1662.49634745], [1516843320000, 3.071e-05, 3.078e-05, 3.071e-05, 3.078e-05, 7614.01020409], [1516843380000, 3.078e-05, 3.078e-05, 3.078e-05, 3.078e-05, 113.76315309], [1516843440000, 3.078e-05, 3.078e-05, 3.078e-05, 3.078e-05, 7223.08190363], [1516843560000, 3.071e-05, 3.078e-05, 3.071e-05, 3.071e-05, 6851.79523667], [1516843620000, 3.071e-05, 3.071e-05, 3.06e-05, 3.06e-05, 39513.51647485], [1516843680000, 3.06e-05, 3.067e-05, 3.06e-05, 3.067e-05, 1656.85873836], [1516843740000, 3.06e-05, 3.06e-05, 3.054e-05, 3.055e-05, 3358.16297608], [1516843800000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 4828.66275586], [1516843860000, 3.066e-05, 3.067e-05, 3.066e-05, 3.067e-05, 3489.70382149], [1516843920000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 6301.18631256], [1516843980000, 3.06e-05, 3.06e-05, 3.055e-05, 3.06e-05, 1864.85004536], [1516844040000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 5562.20319158], [1516844100000, 3.06e-05, 3.06e-05, 3.054e-05, 3.054e-05, 3905.53958244], [1516844160000, 3.054e-05, 3.06e-05, 3.054e-05, 3.06e-05, 903.29267611], [1516844220000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 12200.98348898], [1516844280000, 3.06e-05, 3.067e-05, 3.06e-05, 3.067e-05, 2885.14883604], [1516844340000, 3.067e-05, 3.067e-05, 3.067e-05, 3.067e-05, 326.05151613], [1516844400000, 3.06e-05, 3.06e-05, 3.058e-05, 3.058e-05, 24429.2841764], [1516844460000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 2077.23074532], [1516844520000, 3.058e-05, 3.058e-05, 3.054e-05, 3.054e-05, 388.33], [1516844580000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 22428.56465024], [1516844640000, 3.054e-05, 3.058e-05, 3.054e-05, 3.054e-05, 544.9660546], [1516844700000, 3.054e-05, 3.057e-05, 3.054e-05, 3.054e-05, 16973.02984334], [1516844760000, 3.057e-05, 3.058e-05, 3.054e-05, 3.054e-05, 30306.39465464], [1516844820000, 3.058e-05, 3.058e-05, 3.054e-05, 3.058e-05, 7510.35835812], [1516844880000, 3.057e-05, 3.057e-05, 3.056e-05, 3.056e-05, 1470.29244307], [1516844940000, 3.055e-05, 3.057e-05, 3.053e-05, 3.053e-05, 531.05461855], [1516845000000, 3.053e-05, 3.058e-05, 3.052e-05, 3.058e-05, 4016.67683227], [1516845060000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 1621.68444284], [1516845120000, 3.058e-05, 3.077e-05, 3.058e-05, 3.076e-05, 2791.98418779], [1516845180000, 3.076e-05, 3.078e-05, 3.076e-05, 3.078e-05, 4038.57184962], [1516845240000, 3.078e-05, 3.095e-05, 3.076e-05, 3.095e-05, 14015.45989664], [1516845300000, 3.093e-05, 3.093e-05, 3.093e-05, 3.093e-05, 261.65535], [1516845420000, 3.093e-05, 3.093e-05, 3.092e-05, 3.092e-05, 1195.0], [1516845480000, 3.078e-05, 3.078e-05, 3.053e-05, 3.077e-05, 24206.64753146], [1516845540000, 3.059e-05, 3.092e-05, 3.054e-05, 3.092e-05, 3462.18968974], [1516845600000, 3.078e-05, 3.093e-05, 3.078e-05, 3.093e-05, 7808.14555286], [1516845660000, 3.092e-05, 3.092e-05, 3.091e-05, 3.092e-05, 937.60828175], [1516845720000, 3.092e-05, 3.092e-05, 3.092e-05, 3.092e-05, 51.0], [1516845780000, 3.092e-05, 3.095e-05, 3.092e-05, 3.095e-05, 5557.82395295], [1516845840000, 3.095e-05, 3.097e-05, 3.095e-05, 3.097e-05, 1251.7048073], [1516845900000, 3.099e-05, 3.102e-05, 3.095e-05, 3.102e-05, 1928.04444365], [1516845960000, 3.101e-05, 3.102e-05, 3.101e-05, 3.102e-05, 2437.48991045], [1516846020000, 3.102e-05, 3.102e-05, 3.102e-05, 3.102e-05, 81.16883116], [1516846080000, 3.101e-05, 3.101e-05, 3.1e-05, 3.1e-05, 1339.21806045], [1516846140000, 3.099e-05, 3.099e-05, 3.095e-05, 3.095e-05, 11499.00178503], [1516846200000, 3.091e-05, 3.091e-05, 3.089e-05, 3.09e-05, 1106.62269222], [1516846260000, 3.08e-05, 3.08e-05, 3.054e-05, 3.058e-05, 2465.60103763], [1516846320000, 3.058e-05, 3.058e-05, 3.054e-05, 3.054e-05, 6463.61050096], [1516846380000, 3.054e-05, 3.058e-05, 3.053e-05, 3.058e-05, 17799.95469762], [1516846440000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 689.17593197], [1516846500000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 4976.73609931], [1516846560000, 3.058e-05, 3.058e-05, 3.053e-05, 3.058e-05, 27261.76615137], [1516846620000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 7777.05166775], [1516846680000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 163.50556], [1516846740000, 3.058e-05, 3.058e-05, 3.058e-05, 3.058e-05, 228.90778286], [1516846800000, 3.058e-05, 3.058e-05, 3.056e-05, 3.057e-05, 24643.00121772], [1516846860000, 3.057e-05, 3.058e-05, 3.057e-05, 3.058e-05, 6578.93666171], [1516846920000, 3.056e-05, 3.058e-05, 3.056e-05, 3.058e-05, 13317.58774651], [1516846980000, 3.057e-05, 3.058e-05, 3.057e-05, 3.058e-05, 7883.145863], [1516847040000, 3.058e-05, 3.06e-05, 3.058e-05, 3.06e-05, 22424.81742979], [1516847100000, 3.06e-05, 3.06e-05, 3.06e-05, 3.06e-05, 279.30430219], [1516847160000, 3.088e-05, 3.088e-05, 3.06e-05, 3.06e-05, 1290.2593569], [1516847220000, 3.088e-05, 3.088e-05, 3.06e-05, 3.06e-05, 764.94411431], [1516847280000, 3.06e-05, 3.087e-05, 3.053e-05, 3.087e-05, 14887.4635392], [1516847340000, 3.059e-05, 3.059e-05, 3.053e-05, 3.053e-05, 13846.54], [1516847400000, 3.069e-05, 3.069e-05, 3.053e-05, 3.069e-05, 9011.84809499], [1516847460000, 3.069e-05, 3.069e-05, 3.069e-05, 3.069e-05, 3040.22723851], [1516847520000, 3.054e-05, 3.069e-05, 3.054e-05, 3.069e-05, 10117.40125821], [1516847580000, 3.069e-05, 3.07e-05, 3.068e-05, 3.07e-05, 17161.20407269], [1516847640000, 3.068e-05, 3.068e-05, 3.053e-05, 3.053e-05, 550.0], [1516847700000, 3.065e-05, 3.065e-05, 3.065e-05, 3.065e-05, 467.18852446], [1516847760000, 3.054e-05, 3.054e-05, 3.05e-05, 3.051e-05, 18732.50195225], [1516847820000, 3.051e-05, 3.051e-05, 3.051e-05, 3.051e-05, 12383.44730544], [1516847880000, 3.064e-05, 3.064e-05, 3.051e-05, 3.051e-05, 354.76135227], [1516847940000, 3.051e-05, 3.051e-05, 3.05e-05, 3.05e-05, 7589.46532746], [1516848000000, 3.05e-05, 3.051e-05, 3.05e-05, 3.05e-05, 5158.85910479], [1516848060000, 3.049e-05, 3.049e-05, 3.045e-05, 3.049e-05, 5675.9448183], [1516848120000, 3.049e-05, 3.049e-05, 3.043e-05, 3.044e-05, 14914.97511284], [1516848180000, 3.044e-05, 3.049e-05, 3.044e-05, 3.049e-05, 5324.30572233], [1516848240000, 3.049e-05, 3.049e-05, 3.016e-05, 3.017e-05, 196573.82468516], [1516848300000, 3.024e-05, 3.039e-05, 3.023e-05, 3.024e-05, 10407.0224748], [1516848360000, 3.023e-05, 3.039e-05, 3.016e-05, 3.023e-05, 60561.33461521], [1516848420000, 3.039e-05, 3.039e-05, 3.024e-05, 3.024e-05, 2698.67884124], [1516848480000, 3.035e-05, 3.037e-05, 3.016e-05, 3.037e-05, 22355.20571662], [1516848540000, 3.037e-05, 3.037e-05, 3.035e-05, 3.037e-05, 3441.60689878], [1516848600000, 3.025e-05, 3.025e-05, 3.025e-05, 3.025e-05, 3408.31964771], [1516848660000, 3.025e-05, 3.025e-05, 3.011e-05, 3.011e-05, 16022.61185476], [1516848720000, 3.037e-05, 3.037e-05, 3.012e-05, 3.013e-05, 11424.43495015], [1516848780000, 3.013e-05, 3.013e-05, 3.012e-05, 3.012e-05, 60978.48282293], [1516848840000, 3.012e-05, 3.013e-05, 3.011e-05, 3.011e-05, 5539.0682244], [1516848900000, 3.012e-05, 3.012e-05, 3.011e-05, 3.012e-05, 11837.62189889], [1516848960000, 3.012e-05, 3.013e-05, 3.011e-05, 3.013e-05, 20337.83597278], [1516849020000, 3.013e-05, 3.013e-05, 3.009e-05, 3.009e-05, 27359.70228185], [1516849080000, 3.012e-05, 3.012e-05, 3.008e-05, 3.012e-05, 6930.55792194], [1516849140000, 3.009e-05, 3.013e-05, 3.008e-05, 3.013e-05, 11038.42609963], [1516849200000, 3.013e-05, 3.013e-05, 3.012e-05, 3.013e-05, 12245.94766217], [1516849260000, 3.013e-05, 3.03e-05, 3.013e-05, 3.014e-05, 10014.42928741], [1516849320000, 3.014e-05, 3.014e-05, 3.008e-05, 3.014e-05, 5028.25266629], [1516849380000, 3.02e-05, 3.02e-05, 3.01e-05, 3.014e-05, 4707.01306932], [1516849440000, 3.011e-05, 3.014e-05, 3.011e-05, 3.014e-05, 16400.89667957], [1516849500000, 3.02e-05, 3.02e-05, 3.014e-05, 3.014e-05, 4588.423841], [1516849560000, 3.02e-05, 3.02e-05, 3.02e-05, 3.02e-05, 350.24107699], [1516849620000, 3.02e-05, 3.02e-05, 3.02e-05, 3.02e-05, 49.668874], [1516849680000, 3.02e-05, 3.02e-05, 3.02e-05, 3.02e-05, 497.27774685], [1516849740000, 3.02e-05, 3.02e-05, 3.018e-05, 3.018e-05, 2156.38655398], [1516849800000, 3.018e-05, 3.018e-05, 3.016e-05, 3.016e-05, 1168.39138332], [1516849860000, 3.016e-05, 3.016e-05, 3.014e-05, 3.014e-05, 5057.61177679], [1516849920000, 3.014e-05, 3.018e-05, 3.012e-05, 3.018e-05, 4750.54684328], [1516849980000, 3.013e-05, 3.013e-05, 3.012e-05, 3.012e-05, 6192.7469826], [1516850040000, 3.013e-05, 3.013e-05, 3.009e-05, 3.013e-05, 443.53472417], [1516850100000, 3.013e-05, 3.013e-05, 3.012e-05, 3.012e-05, 5013.67515703], [1516850160000, 3.02e-05, 3.02e-05, 3.012e-05, 3.012e-05, 2833.53708698], [1516850220000, 3.02e-05, 3.02e-05, 3.019e-05, 3.02e-05, 1937.06091423], [1516850280000, 3.02e-05, 3.02e-05, 3.019e-05, 3.019e-05, 1820.80591481], [1516850340000, 3.017e-05, 3.017e-05, 3.017e-05, 3.017e-05, 2120.37288444], [1516850400000, 3.014e-05, 3.019e-05, 3.011e-05, 3.019e-05, 7934.09397726], [1516850460000, 3.02e-05, 3.036e-05, 3.02e-05, 3.022e-05, 11191.89907513], [1516850520000, 3.022e-05, 3.036e-05, 3.022e-05, 3.036e-05, 478.37927438], [1516850580000, 3.033e-05, 3.033e-05, 3.01e-05, 3.01e-05, 6129.84312197], [1516850700000, 3.012e-05, 3.012e-05, 3.012e-05, 3.012e-05, 2873.62054994], [1516850760000, 3.033e-05, 3.036e-05, 3.033e-05, 3.036e-05, 501.50100299], [1516850880000, 3.02e-05, 3.036e-05, 3.02e-05, 3.036e-05, 12717.39130434], [1516850940000, 3.034e-05, 3.034e-05, 3.029e-05, 3.034e-05, 1027.58406674], [1516851000000, 3.033e-05, 3.036e-05, 3.029e-05, 3.033e-05, 21818.62683637], [1516851060000, 3.033e-05, 3.033e-05, 3.029e-05, 3.029e-05, 3237.5933062], [1516851120000, 3.029e-05, 3.029e-05, 3.01e-05, 3.01e-05, 2422.36466293], [1516851180000, 3.031e-05, 3.031e-05, 3.031e-05, 3.031e-05, 136.26473957], [1516851240000, 3.032e-05, 3.033e-05, 3.032e-05, 3.033e-05, 6542.82548759], [1516851300000, 3.033e-05, 3.033e-05, 3.033e-05, 3.033e-05, 88.75421068], [1516851360000, 3.019e-05, 3.031e-05, 3.018e-05, 3.031e-05, 659.01340918], [1516851420000, 3.018e-05, 3.018e-05, 3.018e-05, 3.018e-05, 49.68960413], [1516851480000, 3.018e-05, 3.029e-05, 3.018e-05, 3.029e-05, 1007.28333743], [1516851540000, 3.019e-05, 3.029e-05, 3.018e-05, 3.029e-05, 751.03379722], [1516851600000, 3.029e-05, 3.029e-05, 3.027e-05, 3.027e-05, 3470.32895548], [1516851660000, 3.027e-05, 3.027e-05, 3.027e-05, 3.027e-05, 574.36751695], [1516851720000, 3.026e-05, 3.026e-05, 3.026e-05, 3.026e-05, 43024.98856907], [1516851780000, 3.02e-05, 3.02e-05, 3.018e-05, 3.018e-05, 2089.57281513], [1516851840000, 3.024e-05, 3.024e-05, 3.018e-05, 3.019e-05, 15687.61739863], [1516851900000, 3.019e-05, 3.023e-05, 3.019e-05, 3.02e-05, 474.1236326], [1516851960000, 3.022e-05, 3.025e-05, 3.022e-05, 3.025e-05, 10936.14196434], [1516852020000, 3.03e-05, 3.03e-05, 3.023e-05, 3.023e-05, 3319.26276249], [1516852140000, 3.02e-05, 3.031e-05, 3.018e-05, 3.031e-05, 3067.70085425], [1516852260000, 3.018e-05, 3.018e-05, 3.018e-05, 3.018e-05, 128.97417808], [1516852320000, 3.019e-05, 3.019e-05, 3.016e-05, 3.016e-05, 8631.89847813], [1516852380000, 3.016e-05, 3.019e-05, 3.015e-05, 3.015e-05, 7707.29774823], [1516852440000, 3.019e-05, 3.019e-05, 3.019e-05, 3.019e-05, 550.0], [1516852500000, 3.015e-05, 3.015e-05, 3.015e-05, 3.015e-05, 511.15094001], [1516852560000, 3.016e-05, 3.019e-05, 3.016e-05, 3.017e-05, 8910.79246843], [1516852620000, 3.016e-05, 3.017e-05, 3.015e-05, 3.015e-05, 7324.9525935], [1516852680000, 3.016e-05, 3.016e-05, 3.016e-05, 3.016e-05, 2749.4923263], [1516852740000, 3.015e-05, 3.015e-05, 3.015e-05, 3.015e-05, 2689.5640718], [1516852800000, 3.014e-05, 3.014e-05, 3.013e-05, 3.013e-05, 9677.31838233], [1516852860000, 3.012e-05, 3.012e-05, 3.002e-05, 3.002e-05, 60320.1741236], [1516852920000, 3.003e-05, 3.005e-05, 3.002e-05, 3.005e-05, 1518.96291529], [1516852980000, 3.005e-05, 3.005e-05, 3.005e-05, 3.005e-05, 13995.41186022], [1516853040000, 3.004e-05, 3.005e-05, 3.001e-05, 3.005e-05, 10233.91663828], [1516853100000, 3.005e-05, 3.005e-05, 3.005e-05, 3.005e-05, 16424.74323305], [1516853160000, 3.004e-05, 3.006e-05, 3.004e-05, 3.006e-05, 2935.15963016], [1516853220000, 3.004e-05, 3.004e-05, 3.004e-05, 3.004e-05, 45.42269058], [1516853280000, 3.004e-05, 3.004e-05, 3.004e-05, 3.004e-05, 8225.16778705], [1516853340000, 3.006e-05, 3.006e-05, 3.004e-05, 3.006e-05, 17378.20907631], [1516853400000, 3.004e-05, 3.004e-05, 3.004e-05, 3.004e-05, 658.91113501], [1516853460000, 3.004e-05, 3.013e-05, 3.001e-05, 3.013e-05, 9753.91326338], [1516853520000, 3.013e-05, 3.013e-05, 3.013e-05, 3.013e-05, 35864.80843167], [1516853580000, 3.023e-05, 3.023e-05, 3.023e-05, 3.023e-05, 33.07972213], [1516853640000, 3.013e-05, 3.023e-05, 3.013e-05, 3.013e-05, 1774.9341322], [1516853700000, 3.013e-05, 3.013e-05, 3.013e-05, 3.013e-05, 6588.58911982], [1516853760000, 3.01e-05, 3.01e-05, 3.001e-05, 3.01e-05, 13075.14805978], [1516853880000, 3.01e-05, 3.01e-05, 3.003e-05, 3.003e-05, 4223.3407433], [1516853940000, 3.003e-05, 3.004e-05, 3.003e-05, 3.003e-05, 52258.33350342], [1516854000000, 3.003e-05, 3.003e-05, 3.001e-05, 3.002e-05, 26097.41940431], [1516854060000, 3.002e-05, 3.002e-05, 3.001e-05, 3.001e-05, 8705.9608368], [1516854120000, 3.001e-05, 3.002e-05, 3.001e-05, 3.002e-05, 7540.73157098], [1516854180000, 3.002e-05, 3.002e-05, 3.001e-05, 3.002e-05, 16364.37793782], [1516854240000, 3.002e-05, 3.002e-05, 3e-05, 3.002e-05, 20614.95210814], [1516854300000, 3.002e-05, 3.002e-05, 3.002e-05, 3.002e-05, 6203.28170886], [1516854360000, 3.002e-05, 3.033e-05, 3.002e-05, 3.033e-05, 17802.52143507], [1516854420000, 3.032e-05, 3.033e-05, 3.031e-05, 3.032e-05, 14084.58109016], [1516854480000, 3.011e-05, 3.011e-05, 3.011e-05, 3.011e-05, 3123.66655769], [1516854540000, 3.029e-05, 3.029e-05, 3.012e-05, 3.029e-05, 8811.62291432], [1516854600000, 3.029e-05, 3.029e-05, 3.011e-05, 3.012e-05, 391.53969553], [1516854660000, 3.028e-05, 3.028e-05, 3.015e-05, 3.015e-05, 3196.58531964], [1516854720000, 3.028e-05, 3.029e-05, 3.028e-05, 3.029e-05, 13356.01037946], [1516854780000, 3.028e-05, 3.029e-05, 3.028e-05, 3.029e-05, 10927.5618227], [1516854840000, 3.015e-05, 3.015e-05, 3.015e-05, 3.015e-05, 622.16131963], [1516854900000, 3.019e-05, 3.02e-05, 3.019e-05, 3.02e-05, 34200.0], [1516854960000, 3.02e-05, 3.026e-05, 3.017e-05, 3.026e-05, 11847.28362448], [1516855020000, 3.025e-05, 3.025e-05, 3.025e-05, 3.025e-05, 10132.50081408], [1516855080000, 3.025e-05, 3.028e-05, 3.025e-05, 3.025e-05, 41035.44826915], [1516855140000, 3.025e-05, 3.025e-05, 3.025e-05, 3.025e-05, 110.69836326], [1516855200000, 3.02e-05, 3.025e-05, 3.012e-05, 3.025e-05, 10291.2009254], [1516855260000, 3.022e-05, 3.022e-05, 3.012e-05, 3.012e-05, 7051.26829083], [1516855320000, 3.022e-05, 3.022e-05, 3.014e-05, 3.014e-05, 1371.72627604], [1516855380000, 3.014e-05, 3.022e-05, 3.014e-05, 3.022e-05, 9979.19395232], [1516855440000, 3.02e-05, 3.02e-05, 3.007e-05, 3.007e-05, 24808.89726369], [1516855500000, 3.007e-05, 3.019e-05, 3.007e-05, 3.009e-05, 10393.77980336], [1516855560000, 3.011e-05, 3.019e-05, 3.006e-05, 3.019e-05, 20821.2016962], [1516855620000, 3.007e-05, 3.007e-05, 3.007e-05, 3.007e-05, 4657.53659845], [1516855680000, 3.019e-05, 3.019e-05, 3.008e-05, 3.019e-05, 3929.26282053], [1516855740000, 3.019e-05, 3.019e-05, 3.019e-05, 3.019e-05, 12038.44289973], [1516855800000, 3.015e-05, 3.019e-05, 3.01e-05, 3.01e-05, 8848.55346242], [1516855860000, 3.01e-05, 3.015e-05, 3.01e-05, 3.015e-05, 1205.7353366], [1516855920000, 3.015e-05, 3.015e-05, 3.009e-05, 3.009e-05, 7984.75040721], [1516855980000, 3.01e-05, 3.01e-05, 3.009e-05, 3.01e-05, 7458.5740889], [1516856040000, 3.01e-05, 3.01e-05, 3.01e-05, 3.01e-05, 1896.57515703], [1516856100000, 3.01e-05, 3.01e-05, 3.01e-05, 3.01e-05, 33.13953488], [1516856160000, 3.01e-05, 3.01e-05, 3.01e-05, 3.01e-05, 316.98890945], [1516856220000, 3.008e-05, 3.008e-05, 3.008e-05, 3.008e-05, 1333.11170213], [1516856280000, 3.009e-05, 3.009e-05, 3.008e-05, 3.009e-05, 4578.84182528], [1516856340000, 3.009e-05, 3.009e-05, 3.007e-05, 3.007e-05, 25397.45259642], [1516856460000, 3.013e-05, 3.013e-05, 3.013e-05, 3.013e-05, 1570.69043625], [1516856520000, 3.013e-05, 3.013e-05, 3.013e-05, 3.013e-05, 2378.19156406], [1516856580000, 3.013e-05, 3.024e-05, 3.013e-05, 3.023e-05, 17915.67178319], [1516856640000, 3.021e-05, 3.021e-05, 3.018e-05, 3.018e-05, 10761.79833915], [1516856700000, 3.021e-05, 3.021e-05, 3.021e-05, 3.021e-05, 3283.83238501], [1516856760000, 3.019e-05, 3.019e-05, 3.019e-05, 3.019e-05, 55.0], [1516856820000, 3.018e-05, 3.019e-05, 3.018e-05, 3.019e-05, 15304.75536604], [1516856880000, 3.018e-05, 3.019e-05, 3.01e-05, 3.01e-05, 2585.0917011], [1516856940000, 3.019e-05, 3.019e-05, 3.01e-05, 3.01e-05, 92149.68545915], [1516857000000, 3.011e-05, 3.011e-05, 3.003e-05, 3.003e-05, 25540.401247], [1516857060000, 3.009e-05, 3.009e-05, 3.001e-05, 3.001e-05, 2050.41184512], [1516857120000, 3.012e-05, 3.019e-05, 3.012e-05, 3.019e-05, 1721.12118969], [1516857180000, 3.003e-05, 3.003e-05, 3.001e-05, 3.001e-05, 2883.28355563], [1516857300000, 3.003e-05, 3.003e-05, 3.003e-05, 3.003e-05, 298.87883727], [1516857360000, 3.004e-05, 3.004e-05, 3.003e-05, 3.003e-05, 7629.49427006], [1516857420000, 3.003e-05, 3.016e-05, 3e-05, 3.016e-05, 37741.84522274], [1516857480000, 3.005e-05, 3.005e-05, 3.005e-05, 3.005e-05, 300.0], [1516857540000, 3.005e-05, 3.012e-05, 3.005e-05, 3.012e-05, 534.19740558], [1516857600000, 3.012e-05, 3.013e-05, 3.012e-05, 3.013e-05, 892.2975518], [1516857660000, 3.012e-05, 3.013e-05, 3.012e-05, 3.012e-05, 13918.96088462], [1516857720000, 3.013e-05, 3.013e-05, 3.013e-05, 3.013e-05, 173.22297497], [1516857780000, 3.013e-05, 3.013e-05, 3.012e-05, 3.012e-05, 12097.65246926], [1516857840000, 3.006e-05, 3.006e-05, 3.006e-05, 3.006e-05, 24.21790733], [1516857900000, 3.006e-05, 3.013e-05, 3.006e-05, 3.006e-05, 10370.60434339], [1516857960000, 3.007e-05, 3.007e-05, 3e-05, 3.001e-05, 16411.414771], [1516858020000, 3.001e-05, 3.001e-05, 3e-05, 3e-05, 6254.26860644], [1516858080000, 3.001e-05, 3.001e-05, 3e-05, 3e-05, 1242.94533327], [1516858140000, 3.001e-05, 3.001e-05, 3e-05, 3e-05, 1611.74935488], [1516858200000, 3e-05, 3.001e-05, 3e-05, 3e-05, 13602.45639025], [1516858260000, 3e-05, 3.02e-05, 2.999e-05, 3e-05, 66758.76954583], [1516858320000, 3.001e-05, 3.005e-05, 3e-05, 3e-05, 4924.12413513], [1516858380000, 3e-05, 3e-05, 3e-05, 3e-05, 37.41996402], [1516858440000, 3e-05, 3e-05, 3e-05, 3e-05, 999.99999999], [1516858560000, 2.999e-05, 2.999e-05, 2.988e-05, 2.988e-05, 8506.45016965], [1516858620000, 2.988e-05, 2.989e-05, 2.988e-05, 2.989e-05, 3903.97640967], [1516858680000, 2.99e-05, 2.99e-05, 2.989e-05, 2.989e-05, 13655.73236658], [1516858740000, 2.989e-05, 2.989e-05, 2.989e-05, 2.989e-05, 7475.92753558], [1516858800000, 2.99e-05, 2.99e-05, 2.989e-05, 2.99e-05, 124861.05602105], [1516858860000, 2.995e-05, 2.995e-05, 2.991e-05, 2.991e-05, 3138.47357523], [1516858920000, 2.991e-05, 2.995e-05, 2.989e-05, 2.989e-05, 39582.04820568], [1516858980000, 2.989e-05, 2.991e-05, 2.989e-05, 2.989e-05, 14138.81331804], [1516859040000, 2.991e-05, 2.994e-05, 2.977e-05, 2.977e-05, 31659.88699858], [1516859100000, 2.995e-05, 2.995e-05, 2.978e-05, 2.994e-05, 22425.2369668], [1516859160000, 2.978e-05, 2.994e-05, 2.978e-05, 2.994e-05, 365.52982797], [1516859220000, 2.993e-05, 2.993e-05, 2.993e-05, 2.993e-05, 25.8064516], [1516859280000, 2.98e-05, 2.993e-05, 2.979e-05, 2.979e-05, 1548.0], [1516859340000, 2.979e-05, 2.993e-05, 2.979e-05, 2.993e-05, 33068.86221854], [1516859400000, 2.981e-05, 2.993e-05, 2.979e-05, 2.993e-05, 88251.5595454], [1516859460000, 2.979e-05, 2.979e-05, 2.979e-05, 2.979e-05, 8482.24480274], [1516859520000, 2.979e-05, 2.993e-05, 2.979e-05, 2.993e-05, 5298.9021962], [1516859580000, 2.981e-05, 2.981e-05, 2.981e-05, 2.981e-05, 54.12801926], [1516859640000, 2.993e-05, 3.013e-05, 2.99e-05, 2.99e-05, 42464.61451893], [1516859700000, 2.99e-05, 3.006e-05, 2.99e-05, 3.006e-05, 5604.86059527], [1516859760000, 2.984e-05, 2.984e-05, 2.984e-05, 2.984e-05, 24.71704094], [1516859820000, 3.004e-05, 3.004e-05, 2.999e-05, 3e-05, 9628.08954951], [1516859880000, 3e-05, 3e-05, 2.985e-05, 2.987e-05, 8937.62536868], [1516859940000, 2.987e-05, 2.987e-05, 2.987e-05, 2.987e-05, 817.75752756], [1516860000000, 2.987e-05, 2.998e-05, 2.984e-05, 2.984e-05, 16151.35761093], [1516860060000, 2.984e-05, 2.985e-05, 2.984e-05, 2.985e-05, 22770.97788595], [1516860120000, 2.998e-05, 2.998e-05, 2.986e-05, 2.997e-05, 20011.91033853], [1516860180000, 2.997e-05, 2.997e-05, 2.986e-05, 2.996e-05, 6033.40658005], [1516860240000, 2.986e-05, 2.986e-05, 2.986e-05, 2.986e-05, 12328.12228097], [1516860300000, 2.997e-05, 2.997e-05, 2.986e-05, 2.997e-05, 4268.08315708], [1516860360000, 2.997e-05, 2.997e-05, 2.996e-05, 2.996e-05, 8074.10920303], [1516860480000, 2.996e-05, 2.996e-05, 2.996e-05, 2.996e-05, 7377.14971322], [1516860540000, 2.996e-05, 2.996e-05, 2.996e-05, 2.996e-05, 42.28025758], [1516860600000, 2.987e-05, 2.995e-05, 2.987e-05, 2.995e-05, 203.97508307], [1516860660000, 2.987e-05, 2.995e-05, 2.981e-05, 2.987e-05, 6041.43006056], [1516860720000, 2.981e-05, 2.987e-05, 2.976e-05, 2.976e-05, 6907.42654948], [1516860780000, 2.975e-05, 2.975e-05, 2.969e-05, 2.969e-05, 17508.26215098], [1516860840000, 2.969e-05, 2.974e-05, 2.969e-05, 2.969e-05, 1473.06217589], [1516860900000, 2.974e-05, 2.975e-05, 2.974e-05, 2.974e-05, 1431.81037576], [1516860960000, 2.975e-05, 2.975e-05, 2.974e-05, 2.975e-05, 3537.92861282], [1516861020000, 2.975e-05, 2.975e-05, 2.974e-05, 2.974e-05, 1446.26995241], [1516861080000, 2.974e-05, 2.975e-05, 2.966e-05, 2.966e-05, 5552.53570114], [1516861140000, 2.974e-05, 2.974e-05, 2.963e-05, 2.966e-05, 4974.8106091], [1516861200000, 2.966e-05, 2.975e-05, 2.965e-05, 2.975e-05, 1379.30028931], [1516861260000, 2.966e-05, 2.967e-05, 2.952e-05, 2.964e-05, 50757.47301483], [1516861320000, 2.957e-05, 2.975e-05, 2.957e-05, 2.969e-05, 3641.12611805], [1516861380000, 2.969e-05, 2.975e-05, 2.952e-05, 2.969e-05, 15813.0269486], [1516861440000, 2.969e-05, 2.974e-05, 2.969e-05, 2.969e-05, 16454.45459177], [1516861500000, 2.969e-05, 2.974e-05, 2.969e-05, 2.974e-05, 2565.73089642], [1516861560000, 2.974e-05, 2.974e-05, 2.973e-05, 2.973e-05, 460.75919623], [1516861620000, 2.969e-05, 2.969e-05, 2.969e-05, 2.969e-05, 6634.8298142], [1516861680000, 2.97e-05, 2.97e-05, 2.969e-05, 2.969e-05, 15300.86502361], [1516861740000, 2.969e-05, 2.97e-05, 2.969e-05, 2.97e-05, 2500.85197045], [1516861800000, 2.969e-05, 2.971e-05, 2.969e-05, 2.971e-05, 9400.47409151], [1516861860000, 2.972e-05, 2.975e-05, 2.972e-05, 2.972e-05, 32457.76994175], [1516861920000, 2.974e-05, 2.974e-05, 2.97e-05, 2.97e-05, 2621.418923], [1516861980000, 2.965e-05, 2.969e-05, 2.965e-05, 2.969e-05, 338.75803149], [1516862040000, 2.969e-05, 2.969e-05, 2.969e-05, 2.969e-05, 993.62993561], [1516862100000, 2.968e-05, 2.968e-05, 2.962e-05, 2.965e-05, 7199.84033335], [1516862160000, 2.964e-05, 2.984e-05, 2.962e-05, 2.98e-05, 23163.32467904], [1516862220000, 2.969e-05, 2.969e-05, 2.969e-05, 2.969e-05, 185.89105383], [1516862280000, 2.985e-05, 2.985e-05, 2.983e-05, 2.984e-05, 1040.36193029], [1516862340000, 2.984e-05, 2.984e-05, 2.971e-05, 2.971e-05, 433.00328418], [1516862400000, 2.971e-05, 2.971e-05, 2.971e-05, 2.971e-05, 5195.2137921], [1516862460000, 2.971e-05, 2.986e-05, 2.971e-05, 2.986e-05, 639.69216715], [1516862520000, 2.971e-05, 2.986e-05, 2.969e-05, 2.986e-05, 431.07268243], [1516862580000, 2.986e-05, 2.987e-05, 2.986e-05, 2.987e-05, 4751.33173813], [1516862640000, 2.987e-05, 2.987e-05, 2.986e-05, 2.986e-05, 3192.24123141], [1516862700000, 2.987e-05, 2.995e-05, 2.987e-05, 2.995e-05, 6039.6695093], [1516862760000, 2.995e-05, 2.995e-05, 2.995e-05, 2.995e-05, 10071.68206762], [1516862820000, 2.995e-05, 2.995e-05, 2.995e-05, 2.995e-05, 2984.41181573], [1516862880000, 2.987e-05, 2.994e-05, 2.987e-05, 2.994e-05, 2883.30826468], [1516863000000, 2.994e-05, 2.994e-05, 2.994e-05, 2.994e-05, 344.02137608], [1516863060000, 2.989e-05, 2.995e-05, 2.989e-05, 2.99e-05, 7766.90369485], [1516863120000, 2.99e-05, 2.99e-05, 2.99e-05, 2.99e-05, 4582.05502828], [1516863180000, 2.99e-05, 2.992e-05, 2.99e-05, 2.992e-05, 4419.13381241], [1516863240000, 2.992e-05, 2.993e-05, 2.992e-05, 2.992e-05, 3033.20004663], [1516863300000, 2.995e-05, 2.995e-05, 2.993e-05, 2.994e-05, 11609.78278878], [1516863360000, 2.995e-05, 2.995e-05, 2.976e-05, 2.995e-05, 33100.96336986], [1516863420000, 2.977e-05, 2.983e-05, 2.977e-05, 2.983e-05, 14367.39152481], [1516863480000, 2.99e-05, 2.99e-05, 2.985e-05, 2.99e-05, 784.19159742], [1516863540000, 2.989e-05, 3e-05, 2.986e-05, 3e-05, 23605.34877045], [1516863600000, 3e-05, 3e-05, 2.988e-05, 3e-05, 12497.17900041], [1516863660000, 3e-05, 3e-05, 3e-05, 3e-05, 627.10133333], [1516863720000, 3e-05, 3e-05, 3e-05, 3e-05, 873.26835454], [1516863840000, 2.989e-05, 2.989e-05, 2.989e-05, 2.989e-05, 1534.73887495], [1516863900000, 2.988e-05, 3e-05, 2.988e-05, 2.989e-05, 3150.58725437], [1516863960000, 3e-05, 3e-05, 2.989e-05, 2.989e-05, 8936.42683099], [1516864020000, 3.008e-05, 3.009e-05, 3.008e-05, 3.009e-05, 551.79199711], [1516864080000, 2.989e-05, 2.989e-05, 2.989e-05, 2.989e-05, 5950.3250342], [1516864140000, 2.989e-05, 3.009e-05, 2.985e-05, 3.009e-05, 41192.105403], [1516864200000, 2.986e-05, 2.986e-05, 2.985e-05, 2.986e-05, 2387.64995303], [1516864320000, 2.985e-05, 3.003e-05, 2.985e-05, 3.003e-05, 3645.63697418], [1516864380000, 2.985e-05, 2.985e-05, 2.98e-05, 2.98e-05, 476.86502409], [1516864440000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 303.33872755], [1516864560000, 2.994e-05, 2.994e-05, 2.982e-05, 2.982e-05, 274.7095617], [1516864620000, 2.982e-05, 2.982e-05, 2.982e-05, 2.982e-05, 1770.00693874], [1516864740000, 2.981e-05, 2.982e-05, 2.98e-05, 2.98e-05, 9388.47718069], [1516864800000, 2.979e-05, 2.981e-05, 2.978e-05, 2.978e-05, 2252.7415021], [1516864860000, 2.978e-05, 2.981e-05, 2.977e-05, 2.981e-05, 24673.20221952], [1516864920000, 2.98e-05, 2.982e-05, 2.978e-05, 2.978e-05, 20187.81759549], [1516864980000, 2.979e-05, 2.982e-05, 2.978e-05, 2.982e-05, 14169.58261615], [1516865040000, 2.982e-05, 2.982e-05, 2.978e-05, 2.978e-05, 20148.27351387], [1516865100000, 2.978e-05, 2.982e-05, 2.978e-05, 2.982e-05, 6775.87179784], [1516865160000, 2.982e-05, 2.982e-05, 2.978e-05, 2.982e-05, 7804.84242385], [1516865220000, 2.982e-05, 2.982e-05, 2.978e-05, 2.978e-05, 2532.80708226], [1516865280000, 2.978e-05, 2.98e-05, 2.978e-05, 2.98e-05, 5515.52226934], [1516865340000, 2.982e-05, 2.994e-05, 2.98e-05, 2.98e-05, 9073.28857819], [1516865400000, 2.98e-05, 2.994e-05, 2.98e-05, 2.985e-05, 210.79904785], [1516865460000, 2.994e-05, 2.994e-05, 2.98e-05, 2.98e-05, 8668.06589962], [1516865520000, 2.994e-05, 2.994e-05, 2.981e-05, 2.981e-05, 161.14405015], [1516865580000, 2.99e-05, 2.99e-05, 2.981e-05, 2.981e-05, 6228.95542384], [1516865640000, 2.994e-05, 2.994e-05, 2.994e-05, 2.994e-05, 286.12395169], [1516865760000, 2.993e-05, 2.993e-05, 2.981e-05, 2.992e-05, 2821.96998198], [1516865820000, 2.982e-05, 2.982e-05, 2.98e-05, 2.982e-05, 21981.78732025], [1516865880000, 2.982e-05, 2.982e-05, 2.982e-05, 2.982e-05, 150.0], [1516865940000, 2.982e-05, 2.982e-05, 2.982e-05, 2.982e-05, 2859.27766933], [1516866000000, 2.982e-05, 2.988e-05, 2.982e-05, 2.988e-05, 8140.22295643], [1516866060000, 2.988e-05, 2.988e-05, 2.988e-05, 2.988e-05, 36.0], [1516866120000, 2.993e-05, 2.993e-05, 2.989e-05, 2.993e-05, 7965.06481756], [1516866180000, 2.993e-05, 2.993e-05, 2.989e-05, 2.99e-05, 6636.18223455], [1516866240000, 2.99e-05, 2.993e-05, 2.99e-05, 2.993e-05, 4072.25015196], [1516866300000, 2.99e-05, 2.993e-05, 2.99e-05, 2.993e-05, 578.89367324], [1516866420000, 2.99e-05, 2.99e-05, 2.982e-05, 2.982e-05, 18477.15960915], [1516866480000, 2.982e-05, 2.982e-05, 2.982e-05, 2.982e-05, 590.24178126], [1516866660000, 2.983e-05, 2.983e-05, 2.983e-05, 2.983e-05, 300.82660851], [1516866720000, 2.983e-05, 2.983e-05, 2.982e-05, 2.983e-05, 5104.22673012], [1516866780000, 2.982e-05, 2.983e-05, 2.982e-05, 2.982e-05, 6406.52927466], [1516866840000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 3496.37013093], [1516866960000, 2.983e-05, 2.983e-05, 2.98e-05, 2.98e-05, 248.05946728], [1516867020000, 2.98e-05, 2.981e-05, 2.98e-05, 2.981e-05, 1438.85550151], [1516867080000, 2.983e-05, 2.983e-05, 2.983e-05, 2.983e-05, 316.04], [1516867260000, 2.983e-05, 2.999e-05, 2.982e-05, 2.999e-05, 4498.27392851], [1516867320000, 2.999e-05, 2.999e-05, 2.999e-05, 2.999e-05, 32.72787636], [1516867380000, 2.981e-05, 3.003e-05, 2.981e-05, 2.997e-05, 6240.77666761], [1516867440000, 2.995e-05, 2.995e-05, 2.995e-05, 2.995e-05, 2521.73004259], [1516867620000, 2.988e-05, 2.988e-05, 2.984e-05, 2.984e-05, 769.87964615], [1516867680000, 2.984e-05, 2.984e-05, 2.982e-05, 2.982e-05, 4600.53679742], [1516867740000, 2.984e-05, 2.984e-05, 2.982e-05, 2.982e-05, 9839.28168157], [1516867800000, 2.983e-05, 2.983e-05, 2.982e-05, 2.982e-05, 1870.92719198], [1516867860000, 2.982e-05, 2.983e-05, 2.982e-05, 2.983e-05, 13361.45153855], [1516867920000, 2.983e-05, 2.983e-05, 2.982e-05, 2.982e-05, 3573.25729379], [1516867980000, 2.982e-05, 2.982e-05, 2.981e-05, 2.981e-05, 1212.1494918], [1516868040000, 2.981e-05, 2.982e-05, 2.981e-05, 2.981e-05, 1333.42223846], [1516868100000, 2.981e-05, 2.982e-05, 2.98e-05, 2.98e-05, 3025.03212324], [1516868160000, 2.98e-05, 2.982e-05, 2.98e-05, 2.982e-05, 11089.04163368], [1516868220000, 2.982e-05, 2.982e-05, 2.98e-05, 2.98e-05, 4228.487206], [1516868280000, 2.982e-05, 3e-05, 2.982e-05, 3e-05, 8418.27332969], [1516868400000, 3e-05, 3e-05, 2.982e-05, 2.982e-05, 6154.01617481], [1516868460000, 2.983e-05, 2.983e-05, 2.983e-05, 2.983e-05, 470.0], [1516868520000, 2.999e-05, 3.003e-05, 2.999e-05, 3.002e-05, 1155.34282586], [1516868580000, 3.003e-05, 3.003e-05, 3.003e-05, 3.003e-05, 311.30166591], [1516868640000, 3.003e-05, 3.003e-05, 3.003e-05, 3.003e-05, 1800.12383662], [1516868700000, 3.003e-05, 3.003e-05, 2.982e-05, 2.982e-05, 19993.83539341], [1516868760000, 3.005e-05, 3.006e-05, 3.005e-05, 3.006e-05, 750.0], [1516868820000, 3.006e-05, 3.006e-05, 3.006e-05, 3.006e-05, 1852.80036608], [1516868880000, 3.005e-05, 3.006e-05, 3.005e-05, 3.006e-05, 124.44487513], [1516868940000, 3.005e-05, 3.005e-05, 3.005e-05, 3.005e-05, 168.34219255], [1516869000000, 3.005e-05, 3.005e-05, 2.985e-05, 2.985e-05, 19548.99557379], [1516869060000, 2.985e-05, 2.985e-05, 2.985e-05, 2.985e-05, 48.6348566], [1516869120000, 2.984e-05, 2.985e-05, 2.984e-05, 2.985e-05, 56.28579826], [1516869180000, 2.984e-05, 2.985e-05, 2.983e-05, 2.985e-05, 3000.25553495], [1516869240000, 2.983e-05, 2.983e-05, 2.975e-05, 2.975e-05, 31099.57818115], [1516869300000, 2.98e-05, 2.983e-05, 2.98e-05, 2.983e-05, 3106.23749863], [1516869360000, 2.983e-05, 2.983e-05, 2.983e-05, 2.983e-05, 4171.57400663], [1516869420000, 2.984e-05, 2.985e-05, 2.984e-05, 2.985e-05, 2185.04474153], [1516869480000, 2.985e-05, 2.991e-05, 2.985e-05, 2.985e-05, 3341.54895183], [1516869540000, 2.985e-05, 2.985e-05, 2.985e-05, 2.985e-05, 6151.91455473], [1516869600000, 2.994e-05, 2.994e-05, 2.985e-05, 2.985e-05, 10195.55227977], [1516869660000, 2.985e-05, 2.985e-05, 2.985e-05, 2.985e-05, 9467.25713584], [1516869720000, 2.985e-05, 2.986e-05, 2.985e-05, 2.986e-05, 4911.66712126], [1516869780000, 2.99e-05, 2.99e-05, 2.99e-05, 2.99e-05, 360.0], [1516869840000, 2.986e-05, 2.987e-05, 2.986e-05, 2.987e-05, 1932.46695603], [1516869900000, 2.987e-05, 2.991e-05, 2.987e-05, 2.991e-05, 3750.03670362], [1516869960000, 2.987e-05, 2.99e-05, 2.987e-05, 2.99e-05, 1013.0432425], [1516870020000, 2.991e-05, 2.992e-05, 2.99e-05, 2.992e-05, 12166.66705839], [1516870080000, 2.992e-05, 2.992e-05, 2.987e-05, 2.987e-05, 1212.85372448], [1516870140000, 2.987e-05, 2.991e-05, 2.987e-05, 2.991e-05, 1743.08911517], [1516870200000, 2.991e-05, 2.996e-05, 2.987e-05, 2.996e-05, 374.36601058], [1516870260000, 2.995e-05, 2.995e-05, 2.995e-05, 2.995e-05, 8607.84807391], [1516870320000, 2.987e-05, 2.987e-05, 2.987e-05, 2.987e-05, 7694.32809548], [1516870380000, 2.987e-05, 2.987e-05, 2.987e-05, 2.987e-05, 132.64616594], [1516870680000, 2.992e-05, 2.992e-05, 2.992e-05, 2.992e-05, 23.66387315], [1516870740000, 2.993e-05, 2.993e-05, 2.993e-05, 2.993e-05, 4354.69328997], [1516870800000, 2.993e-05, 2.993e-05, 2.992e-05, 2.992e-05, 1551.31288786], [1516870860000, 2.992e-05, 2.993e-05, 2.987e-05, 2.993e-05, 27914.03690744], [1516870920000, 2.994e-05, 3.007e-05, 2.987e-05, 3.007e-05, 26278.12642787], [1516870980000, 3.007e-05, 3.007e-05, 3.007e-05, 3.007e-05, 5678.82277527], [1516871040000, 2.996e-05, 3.016e-05, 2.996e-05, 3.007e-05, 10621.80909374], [1516871100000, 3.007e-05, 3.007e-05, 3.007e-05, 3.007e-05, 269.87786766], [1516871160000, 3.007e-05, 3.016e-05, 3.007e-05, 3.016e-05, 903.67760758], [1516871220000, 3.007e-05, 3.016e-05, 3.007e-05, 3.007e-05, 10063.34021982], [1516871280000, 3.008e-05, 3.008e-05, 3.008e-05, 3.008e-05, 40.0], [1516871340000, 3.008e-05, 3.008e-05, 3.007e-05, 3.007e-05, 5447.26109633], [1516871400000, 3e-05, 3e-05, 2.998e-05, 2.998e-05, 36271.66816951], [1516871460000, 2.998e-05, 2.998e-05, 2.995e-05, 2.995e-05, 5925.00445032], [1516871520000, 2.99e-05, 2.999e-05, 2.987e-05, 2.999e-05, 40281.3882337], [1516871580000, 2.999e-05, 2.999e-05, 2.987e-05, 2.987e-05, 20242.52645562], [1516871640000, 2.986e-05, 2.986e-05, 2.986e-05, 2.986e-05, 1520.14843386], [1516871700000, 2.998e-05, 2.999e-05, 2.998e-05, 2.999e-05, 260.849851], [1516871760000, 2.998e-05, 2.998e-05, 2.986e-05, 2.986e-05, 1185.7440607], [1516871820000, 2.986e-05, 2.986e-05, 2.98e-05, 2.985e-05, 17206.23881231], [1516871880000, 2.982e-05, 2.982e-05, 2.982e-05, 2.982e-05, 341.40665578], [1516871940000, 2.984e-05, 2.985e-05, 2.984e-05, 2.985e-05, 500.0], [1516872060000, 2.984e-05, 2.985e-05, 2.984e-05, 2.985e-05, 223.86144621], [1516872120000, 2.982e-05, 2.982e-05, 2.98e-05, 2.98e-05, 614.45279225], [1516872180000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 4094.76086455], [1516872240000, 2.981e-05, 2.985e-05, 2.981e-05, 2.985e-05, 6000.57412497], [1516872300000, 2.985e-05, 2.985e-05, 2.985e-05, 2.985e-05, 4191.24847767], [1516872360000, 2.985e-05, 2.999e-05, 2.985e-05, 2.999e-05, 5158.90109323], [1516872420000, 3e-05, 3e-05, 2.974e-05, 2.974e-05, 70126.09503585], [1516872480000, 2.974e-05, 2.999e-05, 2.974e-05, 2.999e-05, 733.0999069], [1516872600000, 2.997e-05, 2.998e-05, 2.997e-05, 2.998e-05, 3193.29019897], [1516872720000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 1291.76502831], [1516872780000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 208.23497169], [1516872840000, 2.98e-05, 2.98e-05, 2.953e-05, 2.953e-05, 59143.16245607], [1516872900000, 2.958e-05, 2.994e-05, 2.958e-05, 2.994e-05, 15049.60206116], [1516872960000, 2.997e-05, 2.997e-05, 2.958e-05, 2.992e-05, 1891.31236976], [1516873020000, 2.992e-05, 2.992e-05, 2.992e-05, 2.992e-05, 17.0], [1516873140000, 2.991e-05, 2.991e-05, 2.991e-05, 2.991e-05, 16852.96206181], [1516873200000, 2.991e-05, 2.991e-05, 2.991e-05, 2.991e-05, 33.64609592], [1516873260000, 2.992e-05, 2.992e-05, 2.991e-05, 2.991e-05, 6595.25472151], [1516873320000, 2.991e-05, 2.991e-05, 2.991e-05, 2.991e-05, 30.73523652], [1516873380000, 2.991e-05, 2.991e-05, 2.991e-05, 2.991e-05, 1062.31128081], [1516873500000, 2.987e-05, 2.987e-05, 2.987e-05, 2.987e-05, 6346.47025057], [1516873560000, 2.987e-05, 2.989e-05, 2.987e-05, 2.989e-05, 49.81867232], [1516873620000, 2.987e-05, 2.987e-05, 2.987e-05, 2.987e-05, 24971.3803194], [1516873740000, 2.971e-05, 2.971e-05, 2.971e-05, 2.971e-05, 68.25361812], [1516873800000, 2.971e-05, 2.971e-05, 2.971e-05, 2.971e-05, 70.0], [1516873860000, 2.973e-05, 2.973e-05, 2.973e-05, 2.973e-05, 4578.05346393], [1516873920000, 2.976e-05, 2.976e-05, 2.97e-05, 2.972e-05, 39562.08300368], [1516873980000, 2.973e-05, 2.973e-05, 2.972e-05, 2.972e-05, 3786.74472854], [1516874040000, 2.972e-05, 2.972e-05, 2.97e-05, 2.97e-05, 11000.0], [1516874100000, 2.973e-05, 2.973e-05, 2.973e-05, 2.973e-05, 339.67391304], [1516874160000, 2.973e-05, 2.973e-05, 2.973e-05, 2.973e-05, 3306.85328], [1516874220000, 2.973e-05, 2.973e-05, 2.973e-05, 2.973e-05, 148.69808383], [1516874280000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 12502.62221588], [1516874340000, 2.975e-05, 2.975e-05, 2.974e-05, 2.975e-05, 48809.12050743], [1516874400000, 2.989e-05, 2.99e-05, 2.989e-05, 2.99e-05, 84.9324356], [1516874520000, 2.99e-05, 2.99e-05, 2.99e-05, 2.99e-05, 54.90297707], [1516874580000, 2.976e-05, 2.99e-05, 2.976e-05, 2.99e-05, 11430.36887896], [1516874640000, 2.991e-05, 2.993e-05, 2.991e-05, 2.993e-05, 13126.02902262], [1516874700000, 2.993e-05, 2.993e-05, 2.993e-05, 2.993e-05, 7300.57052205], [1516874760000, 2.992e-05, 2.993e-05, 2.991e-05, 2.993e-05, 18846.63613282], [1516874820000, 2.993e-05, 2.999e-05, 2.99e-05, 2.99e-05, 6582.23813315], [1516874880000, 2.99e-05, 2.99e-05, 2.99e-05, 2.99e-05, 109.67513545], [1516874940000, 2.987e-05, 2.99e-05, 2.98e-05, 2.98e-05, 1254.17016811], [1516875000000, 2.98e-05, 2.98e-05, 2.977e-05, 2.977e-05, 2881.99574675], [1516875060000, 2.978e-05, 3.01e-05, 2.977e-05, 2.977e-05, 38634.89231709], [1516875120000, 3e-05, 3e-05, 3e-05, 3e-05, 54.06309532], [1516875180000, 2.99e-05, 2.99e-05, 2.977e-05, 2.977e-05, 1783.0380793], [1516875240000, 2.977e-05, 2.99e-05, 2.977e-05, 2.98e-05, 700.20317219], [1516875300000, 2.977e-05, 2.98e-05, 2.977e-05, 2.98e-05, 632.8435635], [1516875360000, 2.98e-05, 2.988e-05, 2.98e-05, 2.98e-05, 5449.69703402], [1516875420000, 2.978e-05, 2.987e-05, 2.974e-05, 2.974e-05, 36247.31148434], [1516875480000, 2.987e-05, 2.987e-05, 2.974e-05, 2.974e-05, 73.18981629], [1516875540000, 2.974e-05, 2.987e-05, 2.974e-05, 2.974e-05, 687.84080528], [1516875600000, 2.974e-05, 2.974e-05, 2.972e-05, 2.974e-05, 104.47198587], [1516875660000, 2.973e-05, 2.973e-05, 2.973e-05, 2.973e-05, 2558.03065919], [1516875720000, 2.973e-05, 2.973e-05, 2.972e-05, 2.973e-05, 2996.91341773], [1516875780000, 2.973e-05, 2.973e-05, 2.972e-05, 2.973e-05, 10216.02829952], [1516875840000, 2.973e-05, 2.999e-05, 2.973e-05, 2.998e-05, 61475.3682092], [1516875900000, 2.973e-05, 2.998e-05, 2.973e-05, 2.998e-05, 665.43146968], [1516876020000, 2.992e-05, 2.992e-05, 2.974e-05, 2.974e-05, 16140.0], [1516876080000, 2.985e-05, 2.985e-05, 2.974e-05, 2.974e-05, 1947.12517163], [1516876140000, 2.982e-05, 2.982e-05, 2.974e-05, 2.981e-05, 7504.23776797], [1516876200000, 2.974e-05, 2.974e-05, 2.973e-05, 2.973e-05, 430.42559488], [1516876260000, 2.973e-05, 2.982e-05, 2.972e-05, 2.982e-05, 7947.79508065], [1516876320000, 2.982e-05, 2.982e-05, 2.981e-05, 2.982e-05, 10053.17252014], [1516876380000, 2.982e-05, 2.985e-05, 2.972e-05, 2.985e-05, 10903.17252014], [1516876440000, 2.973e-05, 2.985e-05, 2.973e-05, 2.973e-05, 243.82822191], [1516876500000, 2.972e-05, 2.972e-05, 2.972e-05, 2.972e-05, 26.85405216], [1516876560000, 2.972e-05, 2.973e-05, 2.972e-05, 2.973e-05, 852.42222951], [1516876620000, 2.985e-05, 2.985e-05, 2.973e-05, 2.973e-05, 4353.50918512], [1516876680000, 2.985e-05, 2.985e-05, 2.985e-05, 2.985e-05, 1005.42392172], [1516876740000, 2.987e-05, 2.987e-05, 2.985e-05, 2.987e-05, 6967.47840644], [1516876800000, 2.987e-05, 2.988e-05, 2.987e-05, 2.987e-05, 4552.06663358], [1516876860000, 2.972e-05, 2.972e-05, 2.972e-05, 2.972e-05, 27.0], [1516876980000, 2.973e-05, 2.987e-05, 2.973e-05, 2.987e-05, 10070.15848661], [1516877040000, 2.988e-05, 2.988e-05, 2.96e-05, 2.96e-05, 40141.9666022], [1516877100000, 2.96e-05, 2.988e-05, 2.958e-05, 2.958e-05, 1283.50914485], [1516877160000, 2.988e-05, 2.988e-05, 2.96e-05, 2.96e-05, 2263.29765696], [1516877220000, 2.988e-05, 2.988e-05, 2.987e-05, 2.987e-05, 3521.63594115], [1516877280000, 2.991e-05, 2.991e-05, 2.988e-05, 2.988e-05, 71.63594115], [1516877340000, 2.987e-05, 2.987e-05, 2.987e-05, 2.987e-05, 30.0], [1516877400000, 2.987e-05, 2.987e-05, 2.968e-05, 2.987e-05, 2646.24189595], [1516877460000, 2.987e-05, 2.987e-05, 2.971e-05, 2.987e-05, 393.2718823], [1516877520000, 2.983e-05, 2.983e-05, 2.971e-05, 2.971e-05, 2585.30804722], [1516877580000, 2.971e-05, 2.983e-05, 2.971e-05, 2.983e-05, 65.75928236], [1516877640000, 2.983e-05, 2.983e-05, 2.97e-05, 2.983e-05, 19925.26129254], [1516877700000, 2.971e-05, 2.983e-05, 2.971e-05, 2.971e-05, 4986.10854202], [1516877760000, 2.968e-05, 2.971e-05, 2.968e-05, 2.971e-05, 626.76929073], [1516877820000, 2.968e-05, 2.968e-05, 2.968e-05, 2.968e-05, 245.37394976], [1516877880000, 2.968e-05, 2.968e-05, 2.968e-05, 2.968e-05, 2176.91015049], [1516877940000, 2.968e-05, 2.971e-05, 2.968e-05, 2.971e-05, 4966.25563692], [1516878000000, 2.971e-05, 2.981e-05, 2.971e-05, 2.971e-05, 5139.64670457], [1516878060000, 2.972e-05, 2.979e-05, 2.966e-05, 2.966e-05, 1812.43711029], [1516878120000, 2.966e-05, 2.966e-05, 2.955e-05, 2.958e-05, 18544.33720892], [1516878180000, 2.97e-05, 2.971e-05, 2.97e-05, 2.971e-05, 3494.87399398], [1516878240000, 2.97e-05, 2.97e-05, 2.97e-05, 2.97e-05, 275.0], [1516878300000, 2.97e-05, 2.97e-05, 2.97e-05, 2.97e-05, 2263.40617311], [1516878360000, 2.97e-05, 2.97e-05, 2.97e-05, 2.97e-05, 465.36956861], [1516878420000, 2.97e-05, 2.97e-05, 2.97e-05, 2.97e-05, 4000.0], [1516878480000, 2.97e-05, 2.97e-05, 2.97e-05, 2.97e-05, 470.02672199], [1516878540000, 2.97e-05, 2.971e-05, 2.97e-05, 2.971e-05, 2569.83396299], [1516878660000, 2.959e-05, 2.959e-05, 2.955e-05, 2.955e-05, 10531.57589773], [1516878720000, 2.971e-05, 2.971e-05, 2.955e-05, 2.955e-05, 4273.15993545], [1516878780000, 2.971e-05, 2.971e-05, 2.956e-05, 2.956e-05, 455.50453245], [1516878840000, 2.97e-05, 2.97e-05, 2.97e-05, 2.97e-05, 1000.0], [1516878900000, 2.971e-05, 2.971e-05, 2.955e-05, 2.971e-05, 6221.91794759], [1516878960000, 2.971e-05, 2.971e-05, 2.971e-05, 2.971e-05, 2072.69460049], [1516879020000, 2.971e-05, 2.971e-05, 2.971e-05, 2.971e-05, 27964.64708917], [1516879080000, 2.992e-05, 2.992e-05, 2.992e-05, 2.992e-05, 20.00047627], [1516879140000, 2.977e-05, 2.977e-05, 2.977e-05, 2.977e-05, 320.80261627], [1516879200000, 2.977e-05, 2.977e-05, 2.977e-05, 2.977e-05, 133.92433573], [1516879260000, 2.977e-05, 2.992e-05, 2.962e-05, 2.962e-05, 5868.77182463], [1516879320000, 2.991e-05, 2.991e-05, 2.99e-05, 2.99e-05, 835.37330116], [1516879380000, 2.99e-05, 2.99e-05, 2.99e-05, 2.99e-05, 33.92433573], [1516879500000, 2.965e-05, 2.989e-05, 2.957e-05, 2.989e-05, 3416.10021856], [1516879560000, 2.958e-05, 2.958e-05, 2.957e-05, 2.957e-05, 6774.27513357], [1516879620000, 2.957e-05, 2.987e-05, 2.957e-05, 2.987e-05, 4641.77876091], [1516879680000, 2.988e-05, 2.988e-05, 2.988e-05, 2.988e-05, 20.0], [1516879740000, 2.987e-05, 2.988e-05, 2.986e-05, 2.986e-05, 84.84867146], [1516879800000, 2.986e-05, 2.986e-05, 2.986e-05, 2.986e-05, 530.0], [1516879920000, 2.986e-05, 2.986e-05, 2.986e-05, 2.986e-05, 640.0774867], [1516879980000, 2.986e-05, 2.986e-05, 2.986e-05, 2.986e-05, 20.07562187], [1516880100000, 2.986e-05, 2.986e-05, 2.986e-05, 2.986e-05, 756.26002937], [1516880160000, 2.986e-05, 2.986e-05, 2.956e-05, 2.963e-05, 33577.34293756], [1516880220000, 2.963e-05, 2.963e-05, 2.963e-05, 2.963e-05, 77.69099165], [1516880280000, 2.963e-05, 2.963e-05, 2.958e-05, 2.963e-05, 14050.15049387], [1516880340000, 2.963e-05, 2.963e-05, 2.959e-05, 2.963e-05, 2148.11876205], [1516880400000, 2.963e-05, 2.986e-05, 2.956e-05, 2.956e-05, 58991.62505988], [1516880460000, 2.956e-05, 2.984e-05, 2.956e-05, 2.957e-05, 5649.16169477], [1516880520000, 2.957e-05, 2.981e-05, 2.957e-05, 2.981e-05, 75.21669282], [1516880580000, 2.98e-05, 2.981e-05, 2.98e-05, 2.981e-05, 234.1187801], [1516880640000, 2.981e-05, 2.981e-05, 2.979e-05, 2.979e-05, 418.83040879], [1516880700000, 2.979e-05, 2.98e-05, 2.979e-05, 2.98e-05, 334.75805625], [1516880760000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 20.21669282], [1516880940000, 2.958e-05, 2.978e-05, 2.958e-05, 2.978e-05, 8407.7207973], [1516881000000, 2.958e-05, 2.958e-05, 2.958e-05, 2.958e-05, 393.51748964], [1516881060000, 2.958e-05, 2.977e-05, 2.958e-05, 2.959e-05, 2120.53678419], [1516881120000, 2.977e-05, 2.977e-05, 2.977e-05, 2.977e-05, 5011.79412693], [1516881180000, 2.961e-05, 2.978e-05, 2.961e-05, 2.978e-05, 4968.63744315], [1516881240000, 2.978e-05, 2.984e-05, 2.977e-05, 2.984e-05, 14168.49673617], [1516881300000, 2.984e-05, 2.984e-05, 2.984e-05, 2.984e-05, 26471.80984223], [1516881360000, 2.984e-05, 2.986e-05, 2.964e-05, 2.964e-05, 29127.30751543], [1516881420000, 2.986e-05, 2.986e-05, 2.985e-05, 2.985e-05, 3002.77385303], [1516881480000, 2.985e-05, 2.985e-05, 2.962e-05, 2.962e-05, 14851.05758424], [1516881540000, 2.984e-05, 2.984e-05, 2.984e-05, 2.984e-05, 21.87120284], [1516881600000, 2.984e-05, 2.984e-05, 2.965e-05, 2.984e-05, 530.27597624], [1516881660000, 2.984e-05, 2.986e-05, 2.984e-05, 2.986e-05, 2886.98196296], [1516881720000, 2.985e-05, 2.985e-05, 2.985e-05, 2.985e-05, 7142.55647901], [1516881780000, 2.985e-05, 2.985e-05, 2.985e-05, 2.985e-05, 36.850921], [1516881840000, 2.984e-05, 2.984e-05, 2.983e-05, 2.984e-05, 15087.31503689], [1516881900000, 2.983e-05, 2.983e-05, 2.965e-05, 2.966e-05, 1209.779906], [1516881960000, 2.966e-05, 2.966e-05, 2.966e-05, 2.966e-05, 1069.35569653], [1516882020000, 2.982e-05, 2.982e-05, 2.982e-05, 2.982e-05, 493.56136384], [1516882080000, 2.982e-05, 2.982e-05, 2.969e-05, 2.969e-05, 1436.64513097], [1516882140000, 2.969e-05, 2.969e-05, 2.969e-05, 2.969e-05, 178.09122339], [1516882200000, 2.969e-05, 2.982e-05, 2.969e-05, 2.982e-05, 4697.79673369], [1516882260000, 2.983e-05, 2.983e-05, 2.981e-05, 2.981e-05, 1510.86778528], [1516882320000, 2.981e-05, 2.981e-05, 2.966e-05, 2.966e-05, 24816.45928427], [1516882380000, 2.966e-05, 2.97e-05, 2.964e-05, 2.964e-05, 13019.63362559], [1516882440000, 2.964e-05, 2.964e-05, 2.964e-05, 2.964e-05, 79.95107504], [1516882500000, 2.964e-05, 2.964e-05, 2.961e-05, 2.961e-05, 1510.43648024], [1516882560000, 2.964e-05, 2.97e-05, 2.964e-05, 2.97e-05, 3834.10324024], [1516882620000, 2.964e-05, 2.97e-05, 2.958e-05, 2.97e-05, 7778.46261654], [1516882680000, 2.964e-05, 2.981e-05, 2.964e-05, 2.981e-05, 1372.96519436], [1516882740000, 2.981e-05, 2.981e-05, 2.981e-05, 2.981e-05, 467.91325658], [1516882800000, 2.981e-05, 2.981e-05, 2.981e-05, 2.981e-05, 20.0206051], [1516882860000, 2.971e-05, 2.971e-05, 2.971e-05, 2.971e-05, 97.08515652], [1516882920000, 2.971e-05, 2.985e-05, 2.97e-05, 2.985e-05, 3044.18437863], [1516882980000, 2.985e-05, 2.985e-05, 2.97e-05, 2.97e-05, 3385.12716123], [1516883040000, 2.97e-05, 2.97e-05, 2.964e-05, 2.964e-05, 9033.16238103], [1516883100000, 2.964e-05, 2.97e-05, 2.963e-05, 2.964e-05, 11980.10254479], [1516883160000, 2.964e-05, 2.97e-05, 2.964e-05, 2.97e-05, 2638.38576002], [1516883220000, 2.97e-05, 2.97e-05, 2.96e-05, 2.96e-05, 7813.13894752], [1516883280000, 2.96e-05, 2.962e-05, 2.958e-05, 2.958e-05, 5649.79246688], [1516883340000, 2.962e-05, 2.969e-05, 2.962e-05, 2.969e-05, 791.95452579], [1516883400000, 2.963e-05, 2.963e-05, 2.963e-05, 2.963e-05, 1100.95317246], [1516883460000, 2.963e-05, 2.97e-05, 2.963e-05, 2.97e-05, 3016.04282902], [1516883520000, 2.977e-05, 2.978e-05, 2.97e-05, 2.978e-05, 8367.14614773], [1516883580000, 2.978e-05, 2.978e-05, 2.976e-05, 2.977e-05, 137.7413148], [1516883640000, 2.977e-05, 2.977e-05, 2.969e-05, 2.969e-05, 3820.13789056], [1516883700000, 2.969e-05, 2.977e-05, 2.962e-05, 2.962e-05, 1680.60438714], [1516883760000, 2.977e-05, 2.977e-05, 2.977e-05, 2.977e-05, 340.1893949], [1516883820000, 2.977e-05, 2.977e-05, 2.977e-05, 2.977e-05, 100.64551419], [1516883940000, 2.97e-05, 2.97e-05, 2.958e-05, 2.958e-05, 12093.80685669], [1516884000000, 2.962e-05, 2.977e-05, 2.956e-05, 2.956e-05, 11546.81054132], [1516884060000, 2.958e-05, 2.959e-05, 2.958e-05, 2.959e-05, 8749.16247412], [1516884120000, 2.959e-05, 2.959e-05, 2.93e-05, 2.941e-05, 83749.23727927], [1516884180000, 2.941e-05, 2.946e-05, 2.939e-05, 2.946e-05, 11307.28461232], [1516884240000, 2.946e-05, 2.946e-05, 2.946e-05, 2.946e-05, 219.57967535], [1516884300000, 2.946e-05, 2.958e-05, 2.942e-05, 2.942e-05, 7337.32423921], [1516884360000, 2.942e-05, 2.943e-05, 2.942e-05, 2.942e-05, 3771.29003407], [1516884420000, 2.958e-05, 2.958e-05, 2.942e-05, 2.95e-05, 4651.79114218], [1516884480000, 2.95e-05, 2.958e-05, 2.95e-05, 2.95e-05, 810.80240893], [1516884540000, 2.942e-05, 2.957e-05, 2.942e-05, 2.957e-05, 10010.21571863], [1516884600000, 2.958e-05, 2.958e-05, 2.951e-05, 2.951e-05, 11865.70067406], [1516884660000, 2.958e-05, 2.959e-05, 2.952e-05, 2.959e-05, 1562.83439449], [1516884720000, 2.958e-05, 2.958e-05, 2.953e-05, 2.955e-05, 8241.61896867], [1516884780000, 2.955e-05, 2.955e-05, 2.899e-05, 2.946e-05, 561483.64800924], [1516884840000, 2.944e-05, 2.944e-05, 2.932e-05, 2.935e-05, 1189.88214395], [1516884900000, 2.934e-05, 2.934e-05, 2.874e-05, 2.928e-05, 40823.5046482], [1516884960000, 2.929e-05, 2.929e-05, 2.88e-05, 2.918e-05, 16179.02774183], [1516885020000, 2.924e-05, 2.924e-05, 2.899e-05, 2.922e-05, 7325.30421983], [1516885080000, 2.915e-05, 2.92e-05, 2.914e-05, 2.914e-05, 9806.38672205], [1516885140000, 2.905e-05, 2.915e-05, 2.899e-05, 2.899e-05, 31643.77001172], [1516885200000, 2.914e-05, 2.914e-05, 2.9e-05, 2.912e-05, 11110.70221344], [1516885260000, 2.912e-05, 2.912e-05, 2.9e-05, 2.9e-05, 13663.27982282], [1516885320000, 2.9e-05, 2.9e-05, 2.896e-05, 2.896e-05, 26951.93209399], [1516885380000, 2.896e-05, 2.899e-05, 2.891e-05, 2.894e-05, 7902.00779313], [1516885440000, 2.894e-05, 2.894e-05, 2.891e-05, 2.891e-05, 8960.33679387], [1516885500000, 2.89e-05, 2.89e-05, 2.88e-05, 2.886e-05, 75800.54213288], [1516885560000, 2.888e-05, 2.888e-05, 2.885e-05, 2.888e-05, 13173.63755705], [1516885620000, 2.888e-05, 2.9e-05, 2.888e-05, 2.9e-05, 51778.98060341], [1516885680000, 2.9e-05, 2.9e-05, 2.885e-05, 2.888e-05, 24558.11733192], [1516885740000, 2.897e-05, 2.897e-05, 2.879e-05, 2.886e-05, 26247.32951349], [1516885800000, 2.881e-05, 2.885e-05, 2.875e-05, 2.88e-05, 42046.88736931], [1516885860000, 2.88e-05, 2.885e-05, 2.876e-05, 2.884e-05, 13086.10803902], [1516885920000, 2.879e-05, 2.885e-05, 2.878e-05, 2.885e-05, 9085.49374772], [1516885980000, 2.884e-05, 2.884e-05, 2.874e-05, 2.876e-05, 38506.75145584], [1516886040000, 2.876e-05, 2.884e-05, 2.876e-05, 2.882e-05, 60312.80453067], [1516886100000, 2.883e-05, 2.884e-05, 2.875e-05, 2.882e-05, 56214.20368937], [1516886160000, 2.875e-05, 2.884e-05, 2.875e-05, 2.884e-05, 6118.85567568], [1516886220000, 2.884e-05, 2.887e-05, 2.877e-05, 2.878e-05, 13218.97412899], [1516886280000, 2.882e-05, 2.894e-05, 2.882e-05, 2.893e-05, 5182.23690648], [1516886340000, 2.892e-05, 2.892e-05, 2.882e-05, 2.892e-05, 3904.94182399], [1516886400000, 2.887e-05, 2.9e-05, 2.878e-05, 2.9e-05, 8258.38532665], [1516886460000, 2.887e-05, 2.901e-05, 2.878e-05, 2.885e-05, 7301.06417642], [1516886520000, 2.885e-05, 2.901e-05, 2.885e-05, 2.888e-05, 4986.72992509], [1516886580000, 2.901e-05, 2.901e-05, 2.889e-05, 2.901e-05, 16332.94735467], [1516886640000, 2.901e-05, 2.902e-05, 2.894e-05, 2.902e-05, 52280.64803307], [1516886700000, 2.916e-05, 2.92e-05, 2.903e-05, 2.92e-05, 4536.61936506], [1516886760000, 2.919e-05, 2.919e-05, 2.917e-05, 2.917e-05, 1908.64507047], [1516886820000, 2.917e-05, 2.92e-05, 2.91e-05, 2.91e-05, 22744.15113669], [1516886880000, 2.916e-05, 2.916e-05, 2.908e-05, 2.915e-05, 1434.42959917], [1516886940000, 2.916e-05, 2.919e-05, 2.916e-05, 2.918e-05, 11468.28253998], [1516887000000, 2.918e-05, 2.919e-05, 2.918e-05, 2.919e-05, 15162.68697098], [1516887060000, 2.919e-05, 2.92e-05, 2.909e-05, 2.92e-05, 9117.45495484], [1516887120000, 2.919e-05, 2.919e-05, 2.911e-05, 2.918e-05, 1084.05603424], [1516887180000, 2.918e-05, 2.918e-05, 2.913e-05, 2.913e-05, 754.88989384], [1516887240000, 2.917e-05, 2.917e-05, 2.916e-05, 2.917e-05, 2603.42638431], [1516887300000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 1229.34145608], [1516887360000, 2.917e-05, 2.917e-05, 2.913e-05, 2.913e-05, 680.79551825], [1516887420000, 2.915e-05, 2.915e-05, 2.913e-05, 2.913e-05, 5407.21464137], [1516887480000, 2.915e-05, 2.917e-05, 2.914e-05, 2.914e-05, 881.06408895], [1516887540000, 2.914e-05, 2.915e-05, 2.912e-05, 2.915e-05, 12166.39420251], [1516887600000, 2.911e-05, 2.917e-05, 2.9e-05, 2.917e-05, 17310.04671571], [1516887660000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 175.9882662], [1516887720000, 2.918e-05, 2.926e-05, 2.918e-05, 2.925e-05, 6433.5254716], [1516887780000, 2.923e-05, 2.923e-05, 2.917e-05, 2.917e-05, 15822.63566685], [1516887840000, 2.923e-05, 2.923e-05, 2.911e-05, 2.911e-05, 1421.18623801], [1516887900000, 2.911e-05, 2.923e-05, 2.911e-05, 2.923e-05, 1722.7578826], [1516887960000, 2.926e-05, 2.928e-05, 2.924e-05, 2.927e-05, 2364.39196987], [1516888020000, 2.926e-05, 2.926e-05, 2.923e-05, 2.923e-05, 43034.8323061], [1516888080000, 2.924e-05, 2.927e-05, 2.924e-05, 2.927e-05, 6101.45183732], [1516888140000, 2.927e-05, 2.928e-05, 2.924e-05, 2.924e-05, 15844.47748737], [1516888200000, 2.924e-05, 2.928e-05, 2.924e-05, 2.928e-05, 12037.27461011], [1516888260000, 2.929e-05, 2.929e-05, 2.927e-05, 2.927e-05, 1394.97713256], [1516888320000, 2.93e-05, 2.932e-05, 2.93e-05, 2.932e-05, 222.35648086], [1516888380000, 2.932e-05, 2.932e-05, 2.93e-05, 2.932e-05, 9912.07849085], [1516888440000, 2.93e-05, 2.931e-05, 2.93e-05, 2.93e-05, 6631.79339304], [1516888500000, 2.93e-05, 2.931e-05, 2.93e-05, 2.931e-05, 516.40327244], [1516888560000, 2.931e-05, 2.931e-05, 2.93e-05, 2.931e-05, 1987.90832504], [1516888620000, 2.931e-05, 2.931e-05, 2.93e-05, 2.93e-05, 1121.47954998], [1516888680000, 2.93e-05, 2.935e-05, 2.929e-05, 2.935e-05, 45767.61618536], [1516888740000, 2.935e-05, 2.935e-05, 2.929e-05, 2.929e-05, 3546.0192363], [1516888800000, 2.931e-05, 2.932e-05, 2.924e-05, 2.924e-05, 27106.87010159], [1516888860000, 2.924e-05, 2.932e-05, 2.924e-05, 2.932e-05, 5421.5035922], [1516888920000, 2.931e-05, 2.932e-05, 2.931e-05, 2.932e-05, 2805.92408941], [1516888980000, 2.932e-05, 2.932e-05, 2.931e-05, 2.932e-05, 7612.33519862], [1516889040000, 2.935e-05, 2.95e-05, 2.934e-05, 2.95e-05, 6914.62975674], [1516889100000, 2.937e-05, 2.944e-05, 2.937e-05, 2.944e-05, 1835.39266091], [1516889160000, 2.944e-05, 2.952e-05, 2.937e-05, 2.952e-05, 32250.29450559], [1516889220000, 2.939e-05, 2.953e-05, 2.939e-05, 2.953e-05, 5073.03434636], [1516889280000, 2.953e-05, 2.953e-05, 2.937e-05, 2.937e-05, 4085.659908], [1516889340000, 2.938e-05, 2.954e-05, 2.938e-05, 2.938e-05, 4022.05995978], [1516889400000, 2.954e-05, 2.955e-05, 2.954e-05, 2.955e-05, 3749.00490865], [1516889460000, 2.954e-05, 2.955e-05, 2.939e-05, 2.939e-05, 2524.05988327], [1516889580000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 222.0], [1516889640000, 2.942e-05, 2.949e-05, 2.942e-05, 2.942e-05, 21886.83464871], [1516889700000, 2.954e-05, 2.955e-05, 2.947e-05, 2.947e-05, 7062.78244883], [1516889760000, 2.947e-05, 2.947e-05, 2.942e-05, 2.942e-05, 2637.65613776], [1516889820000, 2.943e-05, 2.954e-05, 2.942e-05, 2.954e-05, 1851.58430277], [1516889880000, 2.955e-05, 2.955e-05, 2.954e-05, 2.954e-05, 4182.99928035], [1516889940000, 2.955e-05, 2.955e-05, 2.955e-05, 2.955e-05, 1123.05578827], [1516890000000, 2.955e-05, 2.955e-05, 2.942e-05, 2.942e-05, 5363.32551817], [1516890240000, 2.954e-05, 2.959e-05, 2.954e-05, 2.959e-05, 4655.64881308], [1516890300000, 2.958e-05, 2.958e-05, 2.942e-05, 2.942e-05, 302.21147168], [1516890360000, 2.958e-05, 2.958e-05, 2.945e-05, 2.945e-05, 6654.03666839], [1516890420000, 2.943e-05, 2.943e-05, 2.943e-05, 2.943e-05, 4724.826085], [1516890480000, 2.943e-05, 2.959e-05, 2.943e-05, 2.959e-05, 4094.17035179], [1516890540000, 2.959e-05, 2.959e-05, 2.959e-05, 2.959e-05, 3629.56376136], [1516890600000, 2.959e-05, 2.959e-05, 2.95e-05, 2.959e-05, 7732.32944739], [1516890660000, 2.944e-05, 2.959e-05, 2.942e-05, 2.959e-05, 36399.97429995], [1516890720000, 2.946e-05, 2.946e-05, 2.946e-05, 2.946e-05, 55.97563502], [1516890780000, 2.946e-05, 2.959e-05, 2.874e-05, 2.896e-05, 185748.17406524], [1516890840000, 2.925e-05, 2.953e-05, 2.901e-05, 2.953e-05, 435.45357757], [1516890900000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 1283.6180168], [1516891020000, 2.95e-05, 2.95e-05, 2.922e-05, 2.922e-05, 74.98399053], [1516891080000, 2.947e-05, 2.947e-05, 2.946e-05, 2.946e-05, 149.9020339], [1516891200000, 2.945e-05, 2.945e-05, 2.945e-05, 2.945e-05, 1120.69562698], [1516891260000, 2.945e-05, 2.945e-05, 2.945e-05, 2.945e-05, 1658.93204171], [1516891320000, 2.945e-05, 2.945e-05, 2.917e-05, 2.929e-05, 5077.25480284], [1516891380000, 2.929e-05, 2.942e-05, 2.929e-05, 2.942e-05, 447.94054481], [1516891440000, 2.94e-05, 2.94e-05, 2.919e-05, 2.94e-05, 14235.63818634], [1516891500000, 2.936e-05, 2.936e-05, 2.936e-05, 2.936e-05, 1307.56492135], [1516891560000, 2.936e-05, 2.936e-05, 2.918e-05, 2.918e-05, 16015.59713892], [1516891620000, 2.918e-05, 2.92e-05, 2.916e-05, 2.916e-05, 3423.44318855], [1516891680000, 2.916e-05, 2.919e-05, 2.916e-05, 2.916e-05, 3038.27575225], [1516891740000, 2.916e-05, 2.916e-05, 2.911e-05, 2.911e-05, 2269.18554405], [1516891800000, 2.911e-05, 2.911e-05, 2.909e-05, 2.909e-05, 4656.99346554], [1516891860000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 386.92871605], [1516891920000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 20.0], [1516891980000, 2.909e-05, 2.909e-05, 2.896e-05, 2.9e-05, 19928.13264726], [1516892040000, 2.9e-05, 2.9e-05, 2.895e-05, 2.895e-05, 60301.36313859], [1516892100000, 2.914e-05, 2.914e-05, 2.897e-05, 2.914e-05, 4874.74799646], [1516892160000, 2.898e-05, 2.911e-05, 2.892e-05, 2.892e-05, 5331.72377112], [1516892220000, 2.914e-05, 2.914e-05, 2.914e-05, 2.914e-05, 37.21979793], [1516892280000, 2.897e-05, 2.916e-05, 2.897e-05, 2.915e-05, 7463.02712155], [1516892340000, 2.91e-05, 2.916e-05, 2.91e-05, 2.916e-05, 8616.2351375], [1516892460000, 2.919e-05, 2.922e-05, 2.918e-05, 2.922e-05, 7044.70595175], [1516892520000, 2.92e-05, 2.92e-05, 2.916e-05, 2.916e-05, 10291.83490205], [1516892580000, 2.916e-05, 2.918e-05, 2.916e-05, 2.918e-05, 6186.82176916], [1516892640000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 400.0], [1516892760000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 70.86907132], [1516892820000, 2.918e-05, 2.918e-05, 2.916e-05, 2.917e-05, 885.61288493], [1516892880000, 2.917e-05, 2.917e-05, 2.916e-05, 2.917e-05, 109.90426197], [1516892940000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 4442.28323532], [1516893000000, 2.918e-05, 2.926e-05, 2.897e-05, 2.926e-05, 17192.71585817], [1516893060000, 2.926e-05, 2.934e-05, 2.926e-05, 2.934e-05, 1280.991], [1516893120000, 2.933e-05, 2.933e-05, 2.933e-05, 2.933e-05, 17.0], [1516893180000, 2.901e-05, 2.902e-05, 2.901e-05, 2.902e-05, 845.52531967], [1516893240000, 2.904e-05, 2.904e-05, 2.904e-05, 2.904e-05, 150.0], [1516893300000, 2.906e-05, 2.906e-05, 2.905e-05, 2.906e-05, 22561.98434225], [1516893360000, 2.908e-05, 2.935e-05, 2.908e-05, 2.935e-05, 1200.45255654], [1516893420000, 2.925e-05, 2.925e-05, 2.921e-05, 2.921e-05, 1165.2543507], [1516893480000, 2.935e-05, 2.936e-05, 2.935e-05, 2.936e-05, 1523.89289], [1516893540000, 2.93e-05, 2.933e-05, 2.93e-05, 2.933e-05, 2388.85814533], [1516893600000, 2.931e-05, 2.933e-05, 2.931e-05, 2.932e-05, 32413.6338328], [1516893660000, 2.935e-05, 2.937e-05, 2.932e-05, 2.936e-05, 11746.14165703], [1516893720000, 2.94e-05, 2.949e-05, 2.936e-05, 2.949e-05, 31207.94313064], [1516893780000, 2.936e-05, 2.936e-05, 2.936e-05, 2.936e-05, 1062.50970803], [1516893840000, 2.936e-05, 2.936e-05, 2.936e-05, 2.936e-05, 70.0], [1516893900000, 2.911e-05, 2.935e-05, 2.911e-05, 2.935e-05, 528.0], [1516893960000, 2.915e-05, 2.935e-05, 2.915e-05, 2.915e-05, 152.873163], [1516894020000, 2.935e-05, 2.935e-05, 2.916e-05, 2.916e-05, 140.0], [1516894080000, 2.935e-05, 2.935e-05, 2.917e-05, 2.917e-05, 142.0], [1516894140000, 2.935e-05, 2.936e-05, 2.935e-05, 2.936e-05, 2320.68830648], [1516894200000, 2.936e-05, 2.936e-05, 2.935e-05, 2.936e-05, 13161.4587007], [1516894260000, 2.93e-05, 2.936e-05, 2.93e-05, 2.93e-05, 919.07437245], [1516894320000, 2.935e-05, 2.935e-05, 2.917e-05, 2.935e-05, 12135.40411455], [1516894380000, 2.916e-05, 2.93e-05, 2.916e-05, 2.916e-05, 4080.0], [1516894440000, 2.916e-05, 2.935e-05, 2.916e-05, 2.934e-05, 5453.86100336], [1516894500000, 2.934e-05, 2.935e-05, 2.934e-05, 2.935e-05, 5317.48210393], [1516894560000, 2.935e-05, 2.935e-05, 2.919e-05, 2.919e-05, 2915.46348821], [1516894620000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 2563.1993706], [1516894740000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 1122.420828], [1516894800000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 1261.954053], [1516894860000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 20.36728723], [1516894920000, 2.934e-05, 2.934e-05, 2.934e-05, 2.934e-05, 1305.17315527], [1516894980000, 2.934e-05, 2.934e-05, 2.934e-05, 2.934e-05, 331.484643], [1516895040000, 2.934e-05, 2.934e-05, 2.919e-05, 2.919e-05, 815.79023239], [1516895100000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 500.66995383], [1516895160000, 2.919e-05, 2.928e-05, 2.919e-05, 2.928e-05, 6038.49391839], [1516895280000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 694.84309617], [1516895400000, 2.927e-05, 2.927e-05, 2.919e-05, 2.919e-05, 10950.15645811], [1516895460000, 2.919e-05, 2.919e-05, 2.918e-05, 2.919e-05, 4381.71210291], [1516895520000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 4159.33888461], [1516895580000, 2.919e-05, 2.919e-05, 2.918e-05, 2.919e-05, 618.42173504], [1516895700000, 2.918e-05, 2.927e-05, 2.918e-05, 2.918e-05, 3010.89419531], [1516895760000, 2.918e-05, 2.927e-05, 2.918e-05, 2.927e-05, 4121.13983614], [1516895820000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 342.50085412], [1516895880000, 2.927e-05, 2.928e-05, 2.918e-05, 2.928e-05, 20604.67130092], [1516895940000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 228.6772822], [1516896000000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 76.19654695], [1516896060000, 2.918e-05, 2.928e-05, 2.918e-05, 2.918e-05, 1428.21267096], [1516896120000, 2.919e-05, 2.928e-05, 2.919e-05, 2.928e-05, 1943.09141083], [1516896180000, 2.919e-05, 2.919e-05, 2.918e-05, 2.918e-05, 1090.47230007], [1516896300000, 2.915e-05, 2.919e-05, 2.915e-05, 2.919e-05, 13790.04816652], [1516896360000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 1878.06812661], [1516896420000, 2.934e-05, 2.934e-05, 2.933e-05, 2.933e-05, 3776.56648299], [1516896480000, 2.93e-05, 2.93e-05, 2.928e-05, 2.928e-05, 3816.97727454], [1516896540000, 2.928e-05, 2.928e-05, 2.919e-05, 2.919e-05, 2600.1081698], [1516896600000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 3567.06367492], [1516896660000, 2.918e-05, 2.919e-05, 2.918e-05, 2.918e-05, 4955.40425179], [1516896720000, 2.919e-05, 2.929e-05, 2.919e-05, 2.928e-05, 1500.6828859], [1516896840000, 2.928e-05, 2.928e-05, 2.919e-05, 2.919e-05, 11886.05929907], [1516896900000, 2.919e-05, 2.929e-05, 2.918e-05, 2.918e-05, 8645.2879897], [1516896960000, 2.918e-05, 2.918e-05, 2.915e-05, 2.915e-05, 4051.81805403], [1516897020000, 2.919e-05, 2.927e-05, 2.919e-05, 2.927e-05, 1829.87461057], [1516897080000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 2138.0574221], [1516897140000, 2.925e-05, 2.93e-05, 2.921e-05, 2.93e-05, 18023.73916324], [1516897200000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 379.54381096], [1516897320000, 2.921e-05, 2.921e-05, 2.915e-05, 2.915e-05, 4375.14430717], [1516897380000, 2.915e-05, 2.915e-05, 2.915e-05, 2.915e-05, 173.56704197], [1516897440000, 2.915e-05, 2.915e-05, 2.915e-05, 2.915e-05, 629.27701701], [1516897500000, 2.915e-05, 2.915e-05, 2.915e-05, 2.915e-05, 3534.35705182], [1516897560000, 2.92e-05, 2.921e-05, 2.92e-05, 2.921e-05, 571.7619437], [1516897620000, 2.92e-05, 2.921e-05, 2.92e-05, 2.921e-05, 5778.41401574], [1516897680000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 12190.07917679], [1516897740000, 2.92e-05, 2.921e-05, 2.92e-05, 2.921e-05, 1720.66326183], [1516897800000, 2.921e-05, 2.921e-05, 2.92e-05, 2.92e-05, 5277.33612062], [1516897860000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 5821.92642413], [1516897920000, 2.92e-05, 2.929e-05, 2.916e-05, 2.916e-05, 5369.27499109], [1516897980000, 2.916e-05, 2.929e-05, 2.916e-05, 2.929e-05, 2685.26913413], [1516898100000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 77.8168433], [1516898160000, 2.916e-05, 2.928e-05, 2.916e-05, 2.916e-05, 4617.58563874], [1516898220000, 2.916e-05, 2.916e-05, 2.916e-05, 2.916e-05, 9059.7361993], [1516898280000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 646.7297212], [1516898340000, 2.927e-05, 2.928e-05, 2.927e-05, 2.927e-05, 535.40333736], [1516898400000, 2.928e-05, 2.928e-05, 2.915e-05, 2.915e-05, 8429.94164354], [1516898460000, 2.915e-05, 2.915e-05, 2.915e-05, 2.915e-05, 1803.89564034], [1516898520000, 2.915e-05, 2.915e-05, 2.915e-05, 2.915e-05, 213.0], [1516898580000, 2.916e-05, 2.916e-05, 2.91e-05, 2.915e-05, 2463.83066398], [1516898700000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 216.57003846], [1516898760000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 270.75662564], [1516898820000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 341.88034188], [1516898880000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 512.7535359], [1516898940000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 78.63247863], [1516899000000, 2.925e-05, 2.929e-05, 2.912e-05, 2.912e-05, 9632.3103319], [1516899060000, 2.911e-05, 2.912e-05, 2.91e-05, 2.912e-05, 7809.22106993], [1516899120000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 340.71550255], [1516899240000, 2.911e-05, 2.911e-05, 2.91e-05, 2.91e-05, 5328.73341988], [1516899360000, 2.911e-05, 2.929e-05, 2.902e-05, 2.929e-05, 46513.7164342], [1516899420000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 90.1267984], [1516899480000, 2.929e-05, 2.929e-05, 2.909e-05, 2.925e-05, 466.43269725], [1516899600000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 135.37063324], [1516899660000, 2.909e-05, 2.924e-05, 2.909e-05, 2.924e-05, 1971.6243784], [1516899720000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 3595.73675], [1516899780000, 2.924e-05, 2.924e-05, 2.912e-05, 2.912e-05, 932.35106206], [1516899840000, 2.912e-05, 2.912e-05, 2.901e-05, 2.901e-05, 47198.07154767], [1516899900000, 2.912e-05, 2.912e-05, 2.912e-05, 2.912e-05, 4391.36783559], [1516899960000, 2.912e-05, 2.912e-05, 2.903e-05, 2.903e-05, 3465.83265968], [1516900020000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 3333.7615236], [1516900080000, 2.909e-05, 2.909e-05, 2.906e-05, 2.906e-05, 1098.3627959], [1516900140000, 2.905e-05, 2.909e-05, 2.905e-05, 2.909e-05, 3654.39997129], [1516900200000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 149.75804059], [1516900260000, 2.923e-05, 2.923e-05, 2.907e-05, 2.907e-05, 765.504397], [1516900380000, 2.907e-05, 2.907e-05, 2.907e-05, 2.907e-05, 35.52046454], [1516900440000, 2.925e-05, 2.925e-05, 2.905e-05, 2.906e-05, 11473.97347995], [1516900500000, 2.908e-05, 2.908e-05, 2.907e-05, 2.907e-05, 2987.915346], [1516900560000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 1676.67300627], [1516900680000, 2.915e-05, 2.915e-05, 2.903e-05, 2.903e-05, 28619.09027936], [1516900740000, 2.908e-05, 2.908e-05, 2.903e-05, 2.908e-05, 4627.76307376], [1516900800000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 1280.13070235], [1516900860000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 292.11544608], [1516900980000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 1278.93642784], [1516901040000, 2.903e-05, 2.903e-05, 2.903e-05, 2.903e-05, 161.96822991], [1516901220000, 2.908e-05, 2.908e-05, 2.903e-05, 2.904e-05, 1035.33189035], [1516901280000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 102.90714924], [1516901340000, 2.906e-05, 2.906e-05, 2.906e-05, 2.906e-05, 11972.3126957], [1516901400000, 2.906e-05, 2.907e-05, 2.906e-05, 2.907e-05, 5216.86455883], [1516901460000, 2.907e-05, 2.907e-05, 2.907e-05, 2.907e-05, 150.0], [1516901520000, 2.907e-05, 2.908e-05, 2.907e-05, 2.908e-05, 14071.67066151], [1516901580000, 2.908e-05, 2.908e-05, 2.907e-05, 2.907e-05, 379.21934169], [1516901640000, 2.907e-05, 2.908e-05, 2.907e-05, 2.908e-05, 456.848], [1516901700000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 6564.27657875], [1516901760000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 20272.47327634], [1516901940000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 170.0], [1516902000000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 4428.67557508], [1516902060000, 2.92e-05, 2.924e-05, 2.92e-05, 2.92e-05, 4541.35830055], [1516902240000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 102.73973], [1516902300000, 2.92e-05, 2.92e-05, 2.911e-05, 2.92e-05, 1620.66600923], [1516902420000, 2.92e-05, 2.92e-05, 2.911e-05, 2.92e-05, 1697.67641891], [1516902540000, 2.919e-05, 2.919e-05, 2.911e-05, 2.911e-05, 35.19784172], [1516902600000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 530.19626336], [1516902660000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 826.359996], [1516902720000, 2.919e-05, 2.919e-05, 2.911e-05, 2.919e-05, 1594.78442337], [1516902780000, 2.911e-05, 2.92e-05, 2.911e-05, 2.911e-05, 5066.68085819], [1516902840000, 2.919e-05, 2.92e-05, 2.919e-05, 2.92e-05, 9458.397953], [1516902960000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 130.59092433], [1516903080000, 2.918e-05, 2.918e-05, 2.907e-05, 2.907e-05, 10893.37261005], [1516903140000, 2.907e-05, 2.918e-05, 2.906e-05, 2.906e-05, 3097.88032347], [1516903200000, 2.907e-05, 2.916e-05, 2.906e-05, 2.916e-05, 5171.46776406], [1516903260000, 2.915e-05, 2.915e-05, 2.907e-05, 2.907e-05, 2206.86413683], [1516903320000, 2.91e-05, 2.915e-05, 2.907e-05, 2.912e-05, 11032.64815563], [1516903380000, 2.912e-05, 2.918e-05, 2.91e-05, 2.918e-05, 44397.45407202], [1516903440000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 38863.201833], [1516903500000, 2.917e-05, 2.918e-05, 2.908e-05, 2.908e-05, 25176.18138672], [1516903560000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 301.721112], [1516903620000, 2.918e-05, 2.93e-05, 2.918e-05, 2.93e-05, 17956.05502627], [1516903680000, 2.925e-05, 2.925e-05, 2.924e-05, 2.924e-05, 1315.70226611], [1516903740000, 2.924e-05, 2.925e-05, 2.924e-05, 2.925e-05, 335.32211319], [1516903920000, 2.925e-05, 2.933e-05, 2.925e-05, 2.933e-05, 443.12066409], [1516903980000, 2.932e-05, 2.932e-05, 2.925e-05, 2.925e-05, 9851.14436887], [1516904040000, 2.921e-05, 2.932e-05, 2.921e-05, 2.932e-05, 2480.05168735], [1516904100000, 2.932e-05, 2.932e-05, 2.932e-05, 2.932e-05, 190.32092347], [1516904160000, 2.93e-05, 2.93e-05, 2.921e-05, 2.921e-05, 3440.01884867], [1516904220000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 1417.10910437], [1516904280000, 2.931e-05, 2.931e-05, 2.931e-05, 2.931e-05, 4845.16365404], [1516904400000, 2.921e-05, 2.922e-05, 2.921e-05, 2.922e-05, 51478.70495472], [1516904460000, 2.922e-05, 2.922e-05, 2.921e-05, 2.921e-05, 67689.31950618], [1516904640000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 6711.55623638], [1516904700000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 530.9642529], [1516904760000, 2.911e-05, 2.911e-05, 2.909e-05, 2.911e-05, 10992.09590762], [1516904820000, 2.911e-05, 2.911e-05, 2.911e-05, 2.911e-05, 68.13526279], [1516904880000, 2.91e-05, 2.91e-05, 2.91e-05, 2.91e-05, 827.86442699], [1516904940000, 2.909e-05, 2.91e-05, 2.904e-05, 2.91e-05, 8095.34313778], [1516905000000, 2.911e-05, 2.911e-05, 2.911e-05, 2.911e-05, 220.0], [1516905060000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 20.96594613], [1516905120000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 238.83624516], [1516905180000, 2.919e-05, 2.932e-05, 2.919e-05, 2.92e-05, 1289.64828345], [1516905240000, 2.932e-05, 2.932e-05, 2.929e-05, 2.929e-05, 349.69945933], [1516905300000, 2.929e-05, 2.929e-05, 2.922e-05, 2.922e-05, 1211.77319214], [1516905420000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 1331.88269356], [1516905480000, 2.934e-05, 2.934e-05, 2.934e-05, 2.934e-05, 38.93200989], [1516905540000, 2.934e-05, 2.934e-05, 2.934e-05, 2.934e-05, 3022.33972355], [1516905600000, 2.934e-05, 2.934e-05, 2.934e-05, 2.934e-05, 1703.70756646], [1516905660000, 2.933e-05, 2.934e-05, 2.933e-05, 2.934e-05, 17583.98133691], [1516905720000, 2.934e-05, 2.934e-05, 2.929e-05, 2.929e-05, 1313.13738272], [1516905780000, 2.934e-05, 2.934e-05, 2.929e-05, 2.929e-05, 2833.99795501], [1516905900000, 2.933e-05, 2.933e-05, 2.933e-05, 2.933e-05, 22.70077504], [1516905960000, 2.933e-05, 2.933e-05, 2.933e-05, 2.933e-05, 150.75405337], [1516906020000, 2.933e-05, 2.933e-05, 2.933e-05, 2.933e-05, 8520.04871636], [1516906080000, 2.933e-05, 2.933e-05, 2.933e-05, 2.933e-05, 2796.27862527], [1516906140000, 2.933e-05, 2.936e-05, 2.933e-05, 2.936e-05, 11980.01030942], [1516906200000, 2.936e-05, 2.936e-05, 2.936e-05, 2.936e-05, 718.05229909], [1516906260000, 2.94e-05, 2.95e-05, 2.937e-05, 2.95e-05, 20213.5380728], [1516906380000, 2.947e-05, 2.953e-05, 2.947e-05, 2.953e-05, 6872.42741913], [1516906440000, 2.947e-05, 2.96e-05, 2.947e-05, 2.96e-05, 6180.76002073], [1516906500000, 2.953e-05, 2.965e-05, 2.953e-05, 2.954e-05, 6562.68617855], [1516906560000, 2.954e-05, 2.955e-05, 2.954e-05, 2.955e-05, 1272.98730118], [1516906620000, 2.963e-05, 2.963e-05, 2.963e-05, 2.963e-05, 702.59390394], [1516906680000, 2.963e-05, 2.964e-05, 2.954e-05, 2.954e-05, 12006.88142816], [1516906740000, 2.954e-05, 2.954e-05, 2.953e-05, 2.953e-05, 2825.9195921], [1516906800000, 2.954e-05, 2.959e-05, 2.954e-05, 2.959e-05, 646.80471006], [1516906860000, 2.954e-05, 2.957e-05, 2.954e-05, 2.957e-05, 34.89439151], [1516906920000, 2.957e-05, 2.959e-05, 2.957e-05, 2.959e-05, 4195.63308962], [1516906980000, 2.959e-05, 2.969e-05, 2.959e-05, 2.969e-05, 577.84541891], [1516907040000, 2.969e-05, 2.973e-05, 2.969e-05, 2.969e-05, 10649.60264506], [1516907100000, 2.957e-05, 2.957e-05, 2.957e-05, 2.957e-05, 212.79918711], [1516907160000, 2.958e-05, 2.958e-05, 2.958e-05, 2.958e-05, 34.31708991], [1516907280000, 2.959e-05, 2.959e-05, 2.957e-05, 2.958e-05, 3380.49793982], [1516907340000, 2.958e-05, 2.958e-05, 2.958e-05, 2.958e-05, 168.61155933], [1516907400000, 2.958e-05, 2.958e-05, 2.958e-05, 2.958e-05, 573.14708495], [1516907460000, 2.957e-05, 2.958e-05, 2.953e-05, 2.958e-05, 9701.0328], [1516907520000, 2.953e-05, 2.953e-05, 2.953e-05, 2.953e-05, 1439.74294382], [1516907580000, 2.953e-05, 2.958e-05, 2.953e-05, 2.958e-05, 14397.13337147], [1516907640000, 2.968e-05, 2.968e-05, 2.968e-05, 2.968e-05, 1432.85230392], [1516907700000, 2.968e-05, 2.969e-05, 2.968e-05, 2.969e-05, 627.69690758], [1516907760000, 2.969e-05, 2.972e-05, 2.968e-05, 2.972e-05, 3669.37601786], [1516907820000, 2.972e-05, 2.973e-05, 2.972e-05, 2.973e-05, 3838.34610571], [1516907880000, 2.973e-05, 2.973e-05, 2.972e-05, 2.972e-05, 906.08806863], [1516907940000, 2.972e-05, 2.973e-05, 2.972e-05, 2.973e-05, 1000.55225489], [1516908000000, 2.973e-05, 2.973e-05, 2.972e-05, 2.972e-05, 224.27039862], [1516908060000, 2.972e-05, 2.972e-05, 2.968e-05, 2.972e-05, 2756.83485772], [1516908120000, 2.968e-05, 2.968e-05, 2.968e-05, 2.968e-05, 68.29953624], [1516908180000, 2.968e-05, 2.968e-05, 2.953e-05, 2.953e-05, 1187.60219585], [1516908300000, 2.97e-05, 2.97e-05, 2.954e-05, 2.97e-05, 790.99152474], [1516908420000, 2.96e-05, 2.96e-05, 2.96e-05, 2.96e-05, 239.47864317], [1516908480000, 2.96e-05, 2.96e-05, 2.953e-05, 2.953e-05, 9877.03088548], [1516908600000, 2.953e-05, 2.953e-05, 2.953e-05, 2.953e-05, 3125.04875708], [1516908720000, 2.957e-05, 2.959e-05, 2.956e-05, 2.957e-05, 2218.07450137], [1516908780000, 2.957e-05, 2.958e-05, 2.957e-05, 2.958e-05, 1320.1310428], [1516908900000, 2.957e-05, 2.957e-05, 2.953e-05, 2.953e-05, 20.05729016], [1516909020000, 2.955e-05, 2.958e-05, 2.955e-05, 2.958e-05, 113.69894057], [1516909080000, 2.955e-05, 2.955e-05, 2.955e-05, 2.955e-05, 405.29446627], [1516909140000, 2.954e-05, 2.955e-05, 2.954e-05, 2.954e-05, 969.93391307], [1516909200000, 2.953e-05, 2.953e-05, 2.953e-05, 2.953e-05, 40.0], [1516909260000, 2.953e-05, 2.953e-05, 2.953e-05, 2.953e-05, 4317.96050081], [1516909320000, 2.953e-05, 2.954e-05, 2.953e-05, 2.953e-05, 9284.32852994], [1516909380000, 2.953e-05, 2.953e-05, 2.953e-05, 2.953e-05, 292.0], [1516909440000, 2.953e-05, 2.953e-05, 2.953e-05, 2.953e-05, 4077.68062153], [1516909500000, 2.953e-05, 2.953e-05, 2.93e-05, 2.93e-05, 8982.88797342], [1516909620000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 323.35912476], [1516909680000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 500.0], [1516909740000, 2.94e-05, 2.953e-05, 2.94e-05, 2.953e-05, 359.56248512], [1516909800000, 2.942e-05, 2.942e-05, 2.94e-05, 2.94e-05, 150.0], [1516909860000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 397.49450049], [1516909920000, 2.953e-05, 2.953e-05, 2.953e-05, 2.953e-05, 67.85714286], [1516910100000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 796.17930074], [1516910160000, 2.953e-05, 2.953e-05, 2.941e-05, 2.941e-05, 18592.12657621], [1516910280000, 2.953e-05, 2.953e-05, 2.953e-05, 2.953e-05, 2547.77446664], [1516910340000, 2.952e-05, 2.952e-05, 2.952e-05, 2.952e-05, 1132.322355], [1516910460000, 2.941e-05, 2.941e-05, 2.941e-05, 2.941e-05, 329.415039], [1516910520000, 2.952e-05, 2.952e-05, 2.952e-05, 2.952e-05, 111.7811022], [1516910580000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 208.90017503], [1516910640000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 838.31237193], [1516910700000, 2.95e-05, 2.95e-05, 2.941e-05, 2.941e-05, 9341.63710889], [1516910820000, 2.941e-05, 2.941e-05, 2.94e-05, 2.941e-05, 6126.98431009], [1516910880000, 2.949e-05, 2.949e-05, 2.941e-05, 2.941e-05, 3905.69814387], [1516910940000, 2.941e-05, 2.941e-05, 2.941e-05, 2.941e-05, 654.770756], [1516911000000, 2.941e-05, 2.941e-05, 2.94e-05, 2.94e-05, 12782.50229228], [1516911060000, 2.948e-05, 2.948e-05, 2.94e-05, 2.94e-05, 1097.77435898], [1516911120000, 2.948e-05, 2.948e-05, 2.948e-05, 2.948e-05, 1065.396077], [1516911180000, 2.948e-05, 2.948e-05, 2.948e-05, 2.948e-05, 25.0], [1516911240000, 2.94e-05, 2.94e-05, 2.93e-05, 2.94e-05, 10009.13757188], [1516911360000, 2.931e-05, 2.931e-05, 2.931e-05, 2.931e-05, 855.01941098], [1516911420000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 170.35775127], [1516911480000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 2250.0], [1516911540000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 13111.24414298], [1516911660000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 904.06780618], [1516911720000, 2.931e-05, 2.931e-05, 2.925e-05, 2.928e-05, 23717.82852466], [1516911780000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 2370.45636106], [1516911840000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 65.89496034], [1516911900000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 2847.77788], [1516911960000, 2.935e-05, 2.935e-05, 2.928e-05, 2.928e-05, 739.0], [1516912020000, 2.928e-05, 2.928e-05, 2.922e-05, 2.922e-05, 2268.29246011], [1516912080000, 2.921e-05, 2.922e-05, 2.921e-05, 2.922e-05, 5736.98004544], [1516912260000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 90.19788651], [1516912320000, 2.922e-05, 2.922e-05, 2.921e-05, 2.922e-05, 587.41368407], [1516912440000, 2.921e-05, 2.922e-05, 2.921e-05, 2.922e-05, 3212.25343224], [1516912500000, 2.921e-05, 2.922e-05, 2.921e-05, 2.922e-05, 660.03396621], [1516912560000, 2.922e-05, 2.922e-05, 2.921e-05, 2.921e-05, 1516.55472795], [1516912620000, 2.921e-05, 2.922e-05, 2.921e-05, 2.922e-05, 1562.99435079], [1516912680000, 2.922e-05, 2.922e-05, 2.921e-05, 2.921e-05, 11961.95300562], [1516912740000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 3462.01501163], [1516912800000, 2.92e-05, 2.922e-05, 2.92e-05, 2.922e-05, 21905.77267372], [1516912860000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 82.84878433], [1516912920000, 2.93e-05, 2.935e-05, 2.921e-05, 2.935e-05, 804.58191976], [1516912980000, 2.935e-05, 2.935e-05, 2.934e-05, 2.934e-05, 175.53437446], [1516913160000, 2.934e-05, 2.934e-05, 2.905e-05, 2.905e-05, 16511.57151476], [1516913220000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 3752.51839949], [1516913280000, 2.934e-05, 2.934e-05, 2.934e-05, 2.934e-05, 69.72770584], [1516913400000, 2.934e-05, 2.935e-05, 2.934e-05, 2.935e-05, 428.93209727], [1516913460000, 2.934e-05, 2.948e-05, 2.934e-05, 2.948e-05, 16145.90651628], [1516913520000, 2.948e-05, 2.948e-05, 2.948e-05, 2.948e-05, 935.53494687], [1516913580000, 2.948e-05, 2.948e-05, 2.948e-05, 2.948e-05, 5091.65463184], [1516913700000, 2.948e-05, 2.948e-05, 2.948e-05, 2.948e-05, 1732.24409981], [1516913820000, 2.937e-05, 2.94e-05, 2.937e-05, 2.94e-05, 1041.56210246], [1516913880000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 1084.12950843], [1516914060000, 2.943e-05, 2.955e-05, 2.943e-05, 2.955e-05, 544.67406134], [1516914300000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 42.38006441], [1516914360000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 500.0], [1516914480000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 2460.96122128], [1516914540000, 2.942e-05, 2.942e-05, 2.934e-05, 2.942e-05, 24464.00891909], [1516914600000, 2.934e-05, 2.934e-05, 2.934e-05, 2.934e-05, 200.0], [1516914660000, 2.93e-05, 2.93e-05, 2.92e-05, 2.92e-05, 492.69681705], [1516914720000, 2.926e-05, 2.926e-05, 2.926e-05, 2.926e-05, 343.04567043], [1516914780000, 2.926e-05, 2.927e-05, 2.926e-05, 2.927e-05, 539.48120513], [1516914840000, 2.927e-05, 2.928e-05, 2.927e-05, 2.928e-05, 1102.24513761], [1516914900000, 2.928e-05, 2.948e-05, 2.928e-05, 2.948e-05, 300.301003], [1516915020000, 2.949e-05, 2.949e-05, 2.949e-05, 2.949e-05, 78.5374644], [1516915200000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 513.42797453], [1516915260000, 2.949e-05, 2.955e-05, 2.949e-05, 2.955e-05, 317.97290098], [1516915320000, 2.955e-05, 2.955e-05, 2.955e-05, 2.955e-05, 1687.81725888], [1516915380000, 2.955e-05, 2.97e-05, 2.955e-05, 2.968e-05, 4762.34934132], [1516915440000, 2.966e-05, 2.966e-05, 2.966e-05, 2.966e-05, 177.491267], [1516915500000, 2.932e-05, 2.932e-05, 2.932e-05, 2.932e-05, 192.83939732], [1516915620000, 2.932e-05, 2.932e-05, 2.932e-05, 2.932e-05, 100.0], [1516915680000, 2.933e-05, 2.959e-05, 2.933e-05, 2.933e-05, 1617.91439173], [1516915740000, 2.934e-05, 2.934e-05, 2.934e-05, 2.934e-05, 41.06197478], [1516915860000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 40.9593552], [1516915920000, 2.934e-05, 2.935e-05, 2.934e-05, 2.935e-05, 598.90236709], [1516915980000, 2.936e-05, 2.936e-05, 2.936e-05, 2.936e-05, 658.5889871], [1516916160000, 2.936e-05, 2.936e-05, 2.935e-05, 2.935e-05, 2163.07151812], [1516916220000, 2.96e-05, 2.96e-05, 2.96e-05, 2.96e-05, 200.0], [1516916340000, 2.96e-05, 2.96e-05, 2.943e-05, 2.958e-05, 3566.03039765], [1516916400000, 2.957e-05, 2.968e-05, 2.957e-05, 2.957e-05, 3220.824159], [1516916460000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 200.0], [1516916520000, 2.945e-05, 2.95e-05, 2.945e-05, 2.95e-05, 502.53073548], [1516916580000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 2094.0], [1516916640000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 419.69896736], [1516916700000, 2.944e-05, 2.95e-05, 2.944e-05, 2.95e-05, 121.91463308], [1516916820000, 2.944e-05, 2.97e-05, 2.944e-05, 2.97e-05, 3728.20770128], [1516916880000, 2.97e-05, 2.97e-05, 2.97e-05, 2.97e-05, 3862.86308333], [1516917060000, 2.968e-05, 2.97e-05, 2.968e-05, 2.97e-05, 260.0], [1516917120000, 2.968e-05, 2.968e-05, 2.968e-05, 2.968e-05, 1926.68021816], [1516917180000, 2.96e-05, 2.968e-05, 2.96e-05, 2.968e-05, 816.11300467], [1516917240000, 2.968e-05, 2.968e-05, 2.968e-05, 2.968e-05, 2408.40084547], [1516917360000, 2.95e-05, 2.95e-05, 2.947e-05, 2.948e-05, 8533.7827123], [1516917420000, 2.948e-05, 2.948e-05, 2.948e-05, 2.948e-05, 554.27831371], [1516917480000, 2.947e-05, 2.947e-05, 2.946e-05, 2.947e-05, 1818.5260455], [1516917540000, 2.947e-05, 2.947e-05, 2.946e-05, 2.946e-05, 1026.82404643], [1516917600000, 2.946e-05, 2.946e-05, 2.946e-05, 2.946e-05, 62.77200638], [1516917660000, 2.945e-05, 2.947e-05, 2.944e-05, 2.947e-05, 1142.75836213], [1516917720000, 2.945e-05, 2.945e-05, 2.945e-05, 2.945e-05, 500.0], [1516917780000, 2.944e-05, 2.944e-05, 2.944e-05, 2.944e-05, 696.24682537], [1516917900000, 2.947e-05, 2.97e-05, 2.944e-05, 2.944e-05, 33635.42936843], [1516917960000, 2.944e-05, 2.944e-05, 2.944e-05, 2.944e-05, 1040.90131083], [1516918080000, 2.944e-05, 2.944e-05, 2.944e-05, 2.944e-05, 2260.15026749], [1516918140000, 2.944e-05, 2.944e-05, 2.944e-05, 2.944e-05, 620.78205891], [1516918320000, 2.945e-05, 2.945e-05, 2.945e-05, 2.945e-05, 1964.7100427], [1516918380000, 2.945e-05, 2.945e-05, 2.945e-05, 2.945e-05, 946.31195184], [1516918560000, 2.946e-05, 2.946e-05, 2.93e-05, 2.93e-05, 12389.63449823], [1516918620000, 2.965e-05, 2.973e-05, 2.965e-05, 2.973e-05, 215.50685946], [1516918740000, 2.965e-05, 2.965e-05, 2.965e-05, 2.965e-05, 50.0], [1516918800000, 2.965e-05, 2.965e-05, 2.94e-05, 2.94e-05, 1467.65227832], [1516918920000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 941.94675865], [1516918980000, 2.968e-05, 2.97e-05, 2.968e-05, 2.97e-05, 342.21238915], [1516919040000, 2.97e-05, 2.97e-05, 2.944e-05, 2.944e-05, 504.03234221], [1516919160000, 2.953e-05, 2.953e-05, 2.953e-05, 2.953e-05, 186.830042], [1516919220000, 2.953e-05, 2.953e-05, 2.953e-05, 2.953e-05, 304.56853], [1516919280000, 2.969e-05, 2.969e-05, 2.969e-05, 2.969e-05, 73.78378378], [1516919340000, 2.97e-05, 2.97e-05, 2.969e-05, 2.969e-05, 735.52919178], [1516919460000, 2.968e-05, 2.969e-05, 2.968e-05, 2.969e-05, 84.94252917], [1516919520000, 2.969e-05, 2.969e-05, 2.969e-05, 2.969e-05, 647.25509878], [1516919580000, 2.969e-05, 2.969e-05, 2.93e-05, 2.93e-05, 7681.84709644], [1516919640000, 2.97e-05, 2.97e-05, 2.97e-05, 2.97e-05, 50.0], [1516919700000, 2.97e-05, 2.97e-05, 2.97e-05, 2.97e-05, 34.09552399], [1516919760000, 2.968e-05, 2.97e-05, 2.968e-05, 2.969e-05, 5459.13683849], [1516919820000, 2.969e-05, 2.969e-05, 2.969e-05, 2.969e-05, 3233.34638778], [1516919880000, 2.969e-05, 2.97e-05, 2.969e-05, 2.97e-05, 2789.73358436], [1516919940000, 2.969e-05, 2.97e-05, 2.969e-05, 2.97e-05, 263.93564107], [1516920000000, 2.969e-05, 2.97e-05, 2.969e-05, 2.97e-05, 1947.62121067], [1516920060000, 2.97e-05, 2.97e-05, 2.969e-05, 2.969e-05, 6011.68599257], [1516920120000, 2.969e-05, 2.969e-05, 2.969e-05, 2.969e-05, 24.60550322], [1516920180000, 2.97e-05, 2.975e-05, 2.97e-05, 2.975e-05, 3495.05174961], [1516920240000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 703.19620991], [1516920300000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 1577.14271085], [1516920360000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 787.85637072], [1516920420000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 20.0], [1516920480000, 2.976e-05, 2.979e-05, 2.976e-05, 2.976e-05, 4294.68529456], [1516920540000, 2.976e-05, 2.976e-05, 2.976e-05, 2.976e-05, 20.0], [1516920600000, 2.976e-05, 2.976e-05, 2.975e-05, 2.976e-05, 13300.64903184], [1516920660000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 142.21465076], [1516920720000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 159.33747852], [1516920780000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 589.56154776], [1516920960000, 2.975e-05, 2.976e-05, 2.975e-05, 2.976e-05, 257.30855568], [1516921020000, 2.976e-05, 2.976e-05, 2.976e-05, 2.976e-05, 1889.92014421], [1516921080000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 10800.34112204], [1516921140000, 2.975e-05, 2.975e-05, 2.941e-05, 2.941e-05, 2061.28748107], [1516921200000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 7066.45607843], [1516921260000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 1572.60312162], [1516921320000, 2.975e-05, 2.976e-05, 2.975e-05, 2.976e-05, 318.10121616], [1516921380000, 2.976e-05, 2.976e-05, 2.976e-05, 2.976e-05, 100.0], [1516921440000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 21.24089162], [1516921500000, 2.976e-05, 2.977e-05, 2.976e-05, 2.977e-05, 8310.54323272], [1516921560000, 2.977e-05, 2.984e-05, 2.977e-05, 2.983e-05, 1479.61493594], [1516921620000, 2.983e-05, 2.983e-05, 2.976e-05, 2.976e-05, 20097.29115647], [1516921680000, 2.976e-05, 2.979e-05, 2.976e-05, 2.976e-05, 5236.74407919], [1516921740000, 2.976e-05, 2.976e-05, 2.976e-05, 2.976e-05, 30.0], [1516921800000, 2.976e-05, 2.976e-05, 2.975e-05, 2.975e-05, 1533.45624371], [1516921860000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 4091.43913002], [1516921920000, 2.975e-05, 2.975e-05, 2.932e-05, 2.936e-05, 5839.36849528], [1516921980000, 2.941e-05, 2.941e-05, 2.939e-05, 2.939e-05, 33233.24328591], [1516922040000, 2.939e-05, 2.939e-05, 2.939e-05, 2.939e-05, 179.23489281], [1516922100000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 35.66867741], [1516922160000, 2.942e-05, 2.969e-05, 2.942e-05, 2.969e-05, 620.0], [1516922220000, 2.969e-05, 2.969e-05, 2.969e-05, 2.969e-05, 60.0], [1516922280000, 2.97e-05, 2.972e-05, 2.969e-05, 2.969e-05, 1611.1732546], [1516922340000, 2.968e-05, 2.968e-05, 2.968e-05, 2.968e-05, 7104.48172022], [1516922400000, 2.967e-05, 2.968e-05, 2.967e-05, 2.968e-05, 300.0], [1516922580000, 2.947e-05, 2.947e-05, 2.947e-05, 2.947e-05, 87.13955924], [1516922640000, 2.947e-05, 2.947e-05, 2.945e-05, 2.947e-05, 8773.90636104], [1516922700000, 2.945e-05, 2.947e-05, 2.945e-05, 2.945e-05, 6946.22233265], [1516922760000, 2.946e-05, 2.946e-05, 2.946e-05, 2.946e-05, 1000.0], [1516922820000, 2.945e-05, 2.945e-05, 2.945e-05, 2.945e-05, 7248.73865733], [1516922880000, 2.945e-05, 2.95e-05, 2.945e-05, 2.945e-05, 351.78856176], [1516922940000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 903.9733471], [1516923000000, 2.95e-05, 2.95e-05, 2.944e-05, 2.944e-05, 4677.7453846], [1516923060000, 2.943e-05, 2.944e-05, 2.943e-05, 2.944e-05, 856.6707693], [1516923120000, 2.944e-05, 2.944e-05, 2.944e-05, 2.944e-05, 1182.48502428], [1516923180000, 2.944e-05, 2.949e-05, 2.943e-05, 2.949e-05, 14057.86048904], [1516923300000, 2.943e-05, 2.948e-05, 2.943e-05, 2.948e-05, 117.0], [1516923360000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 4820.48228688], [1516923420000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 358.64976031], [1516923480000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 245.81344774], [1516923540000, 2.94e-05, 2.94e-05, 2.93e-05, 2.93e-05, 4312.49196585], [1516923660000, 2.933e-05, 2.938e-05, 2.933e-05, 2.938e-05, 7083.07827962], [1516923720000, 2.939e-05, 2.939e-05, 2.939e-05, 2.939e-05, 263.3107494], [1516923780000, 2.938e-05, 2.938e-05, 2.938e-05, 2.938e-05, 199.24245695], [1516923840000, 2.938e-05, 2.938e-05, 2.938e-05, 2.938e-05, 270.79657952], [1516923900000, 2.938e-05, 2.938e-05, 2.938e-05, 2.938e-05, 171.24691235], [1516923960000, 2.938e-05, 2.938e-05, 2.938e-05, 2.938e-05, 343.43377851], [1516924020000, 2.938e-05, 2.938e-05, 2.938e-05, 2.938e-05, 1145.66871138], [1516924080000, 2.934e-05, 2.934e-05, 2.934e-05, 2.934e-05, 4739.34477965], [1516924140000, 2.934e-05, 2.938e-05, 2.934e-05, 2.934e-05, 3340.35125952], [1516924200000, 2.938e-05, 2.942e-05, 2.938e-05, 2.938e-05, 11949.34533542], [1516924260000, 2.938e-05, 2.938e-05, 2.938e-05, 2.938e-05, 795.71526785], [1516924320000, 2.939e-05, 2.939e-05, 2.938e-05, 2.938e-05, 11703.46173194], [1516924380000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 269.94163731], [1516924440000, 2.942e-05, 2.942e-05, 2.935e-05, 2.935e-05, 3646.0052019], [1516924500000, 2.935e-05, 2.935e-05, 2.934e-05, 2.935e-05, 2536.79863071], [1516924560000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 1283.23277449], [1516924620000, 2.943e-05, 2.943e-05, 2.943e-05, 2.943e-05, 1247.67571391], [1516924680000, 2.943e-05, 2.943e-05, 2.943e-05, 2.943e-05, 852.95900581], [1516924860000, 2.937e-05, 2.937e-05, 2.935e-05, 2.935e-05, 776.54125527], [1516924920000, 2.936e-05, 2.936e-05, 2.935e-05, 2.935e-05, 270.0], [1516925040000, 2.936e-05, 2.936e-05, 2.936e-05, 2.936e-05, 2387.40760699], [1516925100000, 2.936e-05, 2.936e-05, 2.936e-05, 2.936e-05, 1598.73562846], [1516925160000, 2.936e-05, 2.936e-05, 2.935e-05, 2.935e-05, 59777.92710434], [1516925280000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 229.00427936], [1516925340000, 2.931e-05, 2.935e-05, 2.93e-05, 2.93e-05, 1624.55067601], [1516925400000, 2.928e-05, 2.928e-05, 2.92e-05, 2.92e-05, 2163.68450054], [1516925460000, 2.928e-05, 2.929e-05, 2.928e-05, 2.928e-05, 2027.86757612], [1516925520000, 2.915e-05, 2.915e-05, 2.901e-05, 2.913e-05, 36524.58164037], [1516925580000, 2.913e-05, 2.913e-05, 2.901e-05, 2.913e-05, 1634.99828355], [1516925640000, 2.913e-05, 2.913e-05, 2.901e-05, 2.913e-05, 2096.64222369], [1516925700000, 2.913e-05, 2.927e-05, 2.901e-05, 2.927e-05, 5142.65445363], [1516925760000, 2.924e-05, 2.924e-05, 2.922e-05, 2.922e-05, 164.44626967], [1516925820000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 331.1258278], [1516925880000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 489.55585165], [1516925940000, 2.919e-05, 2.92e-05, 2.9e-05, 2.9e-05, 55506.51041887], [1516926000000, 2.9e-05, 2.9e-05, 2.891e-05, 2.9e-05, 22641.46716484], [1516926060000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 657.8673379], [1516926120000, 2.9e-05, 2.9e-05, 2.894e-05, 2.894e-05, 1842.03219662], [1516926180000, 2.9e-05, 2.9e-05, 2.894e-05, 2.894e-05, 2557.17243359], [1516926240000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 908.20391753], [1516926300000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 3735.37320724], [1516926360000, 2.899e-05, 2.9e-05, 2.899e-05, 2.9e-05, 66.13753389], [1516926420000, 2.9e-05, 2.9e-05, 2.899e-05, 2.899e-05, 1122.51037596], [1516926480000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 10412.50179656], [1516926540000, 2.928e-05, 2.938e-05, 2.928e-05, 2.938e-05, 10380.98581896], [1516926600000, 2.928e-05, 2.928e-05, 2.9e-05, 2.928e-05, 854.79214741], [1516926660000, 2.9e-05, 2.942e-05, 2.9e-05, 2.942e-05, 429.33452377], [1516926720000, 2.941e-05, 2.941e-05, 2.94e-05, 2.94e-05, 547.30765929], [1516926780000, 2.94e-05, 2.94e-05, 2.939e-05, 2.939e-05, 343.45657622], [1516926840000, 2.907e-05, 2.928e-05, 2.906e-05, 2.909e-05, 1557.29017432], [1516926900000, 2.93e-05, 2.93e-05, 2.91e-05, 2.91e-05, 305.45188697], [1516927020000, 2.902e-05, 2.91e-05, 2.902e-05, 2.91e-05, 353.63118113], [1516927080000, 2.901e-05, 2.908e-05, 2.901e-05, 2.908e-05, 132.67701168], [1516927140000, 2.908e-05, 2.908e-05, 2.9e-05, 2.901e-05, 8588.97656489], [1516927200000, 2.901e-05, 2.902e-05, 2.901e-05, 2.902e-05, 5032.52700195], [1516927260000, 2.902e-05, 2.902e-05, 2.902e-05, 2.902e-05, 8091.91216499], [1516927320000, 2.902e-05, 2.909e-05, 2.902e-05, 2.909e-05, 1961.08220149], [1516927380000, 2.909e-05, 2.909e-05, 2.902e-05, 2.902e-05, 1946.88980072], [1516927440000, 2.902e-05, 2.902e-05, 2.901e-05, 2.902e-05, 7389.24646334], [1516927620000, 2.902e-05, 2.909e-05, 2.902e-05, 2.909e-05, 10708.85801617], [1516927680000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 1081.32384747], [1516927740000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 944.90447105], [1516927800000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 102.3927837], [1516927920000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 102.93200248], [1516927980000, 2.904e-05, 2.904e-05, 2.904e-05, 2.904e-05, 4700.08535124], [1516928040000, 2.904e-05, 2.904e-05, 2.904e-05, 2.904e-05, 666.33891832], [1516928100000, 2.904e-05, 2.905e-05, 2.904e-05, 2.905e-05, 3227.77447328], [1516928160000, 2.905e-05, 2.905e-05, 2.904e-05, 2.904e-05, 7208.41528664], [1516928220000, 2.904e-05, 2.905e-05, 2.904e-05, 2.904e-05, 3601.66686918], [1516928280000, 2.904e-05, 2.904e-05, 2.904e-05, 2.904e-05, 1483.8643752], [1516928340000, 2.905e-05, 2.905e-05, 2.905e-05, 2.905e-05, 5446.10763855], [1516928400000, 2.905e-05, 2.905e-05, 2.905e-05, 2.905e-05, 2838.83711868], [1516928460000, 2.904e-05, 2.904e-05, 2.904e-05, 2.904e-05, 1821.41022539], [1516928520000, 2.904e-05, 2.904e-05, 2.903e-05, 2.903e-05, 2503.67157185], [1516928580000, 2.903e-05, 2.905e-05, 2.903e-05, 2.905e-05, 10117.5819665], [1516928640000, 2.905e-05, 2.905e-05, 2.903e-05, 2.905e-05, 1272.93391306], [1516928700000, 2.903e-05, 2.903e-05, 2.9e-05, 2.9e-05, 4885.36143628], [1516928760000, 2.903e-05, 2.903e-05, 2.9e-05, 2.902e-05, 3491.97867665], [1516928820000, 2.9e-05, 2.905e-05, 2.9e-05, 2.905e-05, 3193.33294679], [1516928880000, 2.9e-05, 2.904e-05, 2.9e-05, 2.904e-05, 785.46339216], [1516928940000, 2.905e-05, 2.905e-05, 2.904e-05, 2.904e-05, 3176.65664823], [1516929000000, 2.904e-05, 2.905e-05, 2.904e-05, 2.905e-05, 10158.69016854], [1516929060000, 2.906e-05, 2.907e-05, 2.906e-05, 2.907e-05, 158.40334699], [1516929120000, 2.906e-05, 2.906e-05, 2.906e-05, 2.906e-05, 2066.92137532], [1516929180000, 2.907e-05, 2.909e-05, 2.907e-05, 2.909e-05, 587.94177587], [1516929240000, 2.909e-05, 2.91e-05, 2.909e-05, 2.91e-05, 330.89753852], [1516929300000, 2.93e-05, 2.933e-05, 2.93e-05, 2.933e-05, 329.33516111], [1516929360000, 2.913e-05, 2.914e-05, 2.893e-05, 2.914e-05, 32668.07273994], [1516929480000, 2.893e-05, 2.893e-05, 2.893e-05, 2.893e-05, 3886.09880258], [1516929540000, 2.896e-05, 2.939e-05, 2.895e-05, 2.895e-05, 4800.7505507], [1516929600000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 54.23902007], [1516929660000, 2.924e-05, 2.941e-05, 2.924e-05, 2.924e-05, 4115.05275859], [1516929720000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 633.54358107], [1516929780000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 9101.14620644], [1516929840000, 2.924e-05, 2.924e-05, 2.91e-05, 2.91e-05, 12776.73405089], [1516929900000, 2.91e-05, 2.937e-05, 2.91e-05, 2.937e-05, 1973.3315349], [1516929960000, 2.936e-05, 2.936e-05, 2.91e-05, 2.91e-05, 1666.22609688], [1516930020000, 2.91e-05, 2.911e-05, 2.91e-05, 2.911e-05, 13452.0882979], [1516930140000, 2.91e-05, 2.91e-05, 2.91e-05, 2.91e-05, 50.0], [1516930200000, 2.93e-05, 2.933e-05, 2.93e-05, 2.933e-05, 199.69404873], [1516930260000, 2.91e-05, 2.91e-05, 2.91e-05, 2.91e-05, 12027.24914179], [1516930320000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 100.0], [1516930380000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 205.47811358], [1516930500000, 2.911e-05, 2.92e-05, 2.911e-05, 2.92e-05, 1666.83601298], [1516930560000, 2.912e-05, 2.912e-05, 2.911e-05, 2.912e-05, 4586.49259514], [1516930620000, 2.917e-05, 2.921e-05, 2.917e-05, 2.921e-05, 2580.64471896], [1516930680000, 2.924e-05, 2.93e-05, 2.924e-05, 2.93e-05, 1707.21113], [1516930740000, 2.93e-05, 2.931e-05, 2.93e-05, 2.93e-05, 2525.27161709], [1516930800000, 2.931e-05, 2.931e-05, 2.931e-05, 2.931e-05, 713.81658137], [1516930860000, 2.931e-05, 2.931e-05, 2.93e-05, 2.93e-05, 7089.59294282], [1516930920000, 2.932e-05, 2.932e-05, 2.93e-05, 2.93e-05, 8364.99015079], [1516930980000, 2.93e-05, 2.949e-05, 2.93e-05, 2.949e-05, 41588.25628706], [1516931040000, 2.947e-05, 2.949e-05, 2.947e-05, 2.949e-05, 13507.84349192], [1516931100000, 2.949e-05, 2.949e-05, 2.93e-05, 2.949e-05, 9106.48008254], [1516931160000, 2.933e-05, 2.948e-05, 2.933e-05, 2.948e-05, 2283.00579048], [1516931220000, 2.948e-05, 2.949e-05, 2.948e-05, 2.948e-05, 4111.35006384], [1516931280000, 2.948e-05, 2.949e-05, 2.948e-05, 2.949e-05, 6520.49457128], [1516931340000, 2.949e-05, 2.96e-05, 2.949e-05, 2.952e-05, 11340.58049486], [1516931400000, 2.955e-05, 2.961e-05, 2.955e-05, 2.955e-05, 7987.63081444], [1516931460000, 2.956e-05, 2.963e-05, 2.955e-05, 2.963e-05, 29100.40346455], [1516931520000, 2.955e-05, 2.957e-05, 2.95e-05, 2.957e-05, 2501.08913482], [1516931580000, 2.957e-05, 2.966e-05, 2.957e-05, 2.957e-05, 4448.19525874], [1516931640000, 2.966e-05, 2.968e-05, 2.951e-05, 2.951e-05, 3811.12861498], [1516931700000, 2.952e-05, 2.952e-05, 2.952e-05, 2.952e-05, 322.46224411], [1516931760000, 2.952e-05, 2.952e-05, 2.949e-05, 2.952e-05, 18193.23486475], [1516931820000, 2.949e-05, 2.95e-05, 2.949e-05, 2.949e-05, 2205.0842922], [1516931880000, 2.949e-05, 2.949e-05, 2.949e-05, 2.949e-05, 2545.74216591], [1516931940000, 2.949e-05, 2.949e-05, 2.949e-05, 2.949e-05, 23057.52537998], [1516932000000, 2.951e-05, 2.951e-05, 2.95e-05, 2.951e-05, 427.74187904], [1516932060000, 2.95e-05, 2.95e-05, 2.943e-05, 2.949e-05, 7522.05212275], [1516932120000, 2.943e-05, 2.943e-05, 2.921e-05, 2.93e-05, 10188.46816347], [1516932180000, 2.93e-05, 2.93e-05, 2.92e-05, 2.93e-05, 12337.7928838], [1516932240000, 2.92e-05, 2.93e-05, 2.92e-05, 2.93e-05, 1439.36555912], [1516932300000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 2508.26747596], [1516932360000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 509.72373338], [1516932480000, 2.92e-05, 2.928e-05, 2.92e-05, 2.928e-05, 2929.78660151], [1516932540000, 2.928e-05, 2.929e-05, 2.928e-05, 2.929e-05, 1960.13023616], [1516932600000, 2.929e-05, 2.929e-05, 2.928e-05, 2.928e-05, 6516.24963632], [1516932660000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 922.7644686], [1516932720000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 29.27986435], [1516932780000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 362.06634476], [1516932840000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 1104.33720144], [1516932900000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 1197.21629463], [1516932960000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 184.02782239], [1516933020000, 2.925e-05, 2.927e-05, 2.925e-05, 2.927e-05, 7571.82118591], [1516933080000, 2.927e-05, 2.928e-05, 2.925e-05, 2.928e-05, 8787.7336016], [1516933140000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 928.15841034], [1516933200000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 341.15757963], [1516933260000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 6621.68870495], [1516933320000, 2.925e-05, 2.927e-05, 2.925e-05, 2.925e-05, 2141.43744042], [1516933500000, 2.926e-05, 2.926e-05, 2.925e-05, 2.925e-05, 2428.08825222], [1516933560000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 90.00197605], [1516933620000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 560.22706331], [1516933680000, 2.925e-05, 2.925e-05, 2.921e-05, 2.921e-05, 867.47009955], [1516933740000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 1925.28603201], [1516933800000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 2363.13271795], [1516933860000, 2.92e-05, 2.921e-05, 2.92e-05, 2.921e-05, 7968.49817679], [1516933920000, 2.921e-05, 2.922e-05, 2.921e-05, 2.922e-05, 1078.12039753], [1516934040000, 2.922e-05, 2.922e-05, 2.921e-05, 2.922e-05, 179.39073936], [1516934100000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 1160.89131211], [1516934160000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 14798.54625206], [1516934220000, 2.923e-05, 2.924e-05, 2.923e-05, 2.924e-05, 136.0763494], [1516934280000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 280.56798175], [1516934340000, 2.923e-05, 2.923e-05, 2.922e-05, 2.922e-05, 51614.477161], [1516934460000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 552.6896912], [1516934520000, 2.922e-05, 2.924e-05, 2.922e-05, 2.924e-05, 374.25207743], [1516934580000, 2.923e-05, 2.923e-05, 2.922e-05, 2.923e-05, 3215.23629543], [1516934640000, 2.923e-05, 2.94e-05, 2.923e-05, 2.94e-05, 16435.6489001], [1516934700000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 1995.0], [1516934760000, 2.941e-05, 2.941e-05, 2.941e-05, 2.941e-05, 327.0], [1516934820000, 2.941e-05, 2.944e-05, 2.94e-05, 2.94e-05, 13375.36575827], [1516934880000, 2.94e-05, 2.94e-05, 2.922e-05, 2.922e-05, 56143.69339368], [1516934940000, 2.922e-05, 2.923e-05, 2.922e-05, 2.923e-05, 450.7208215], [1516935000000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 34.48275862], [1516935120000, 2.934e-05, 2.934e-05, 2.934e-05, 2.934e-05, 40.29561843], [1516935180000, 2.934e-05, 2.934e-05, 2.923e-05, 2.923e-05, 1588.38748788], [1516935240000, 2.934e-05, 2.934e-05, 2.922e-05, 2.922e-05, 6011.61251212], [1516935360000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 216.14659851], [1516935420000, 2.939e-05, 2.939e-05, 2.939e-05, 2.939e-05, 149.29094412], [1516935480000, 2.939e-05, 2.945e-05, 2.939e-05, 2.945e-05, 5859.11468364], [1516935540000, 2.941e-05, 2.962e-05, 2.941e-05, 2.947e-05, 34286.1892412], [1516935600000, 2.941e-05, 2.941e-05, 2.941e-05, 2.941e-05, 41.40136113], [1516935660000, 2.942e-05, 2.942e-05, 2.94e-05, 2.94e-05, 7063.69272893], [1516935840000, 2.955e-05, 2.955e-05, 2.955e-05, 2.955e-05, 308.526], [1516935960000, 2.949e-05, 2.949e-05, 2.94e-05, 2.94e-05, 2554.6100555], [1516936020000, 2.94e-05, 2.94e-05, 2.936e-05, 2.936e-05, 8353.2612344], [1516936080000, 2.938e-05, 2.938e-05, 2.922e-05, 2.936e-05, 3423.97784996], [1516936140000, 2.92e-05, 2.935e-05, 2.92e-05, 2.935e-05, 2060.97112828], [1516936260000, 2.92e-05, 2.92e-05, 2.919e-05, 2.92e-05, 19158.78371378], [1516936320000, 2.916e-05, 2.92e-05, 2.915e-05, 2.92e-05, 2476.33002008], [1516936440000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 320.5128205], [1516936500000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 700.0], [1516936560000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 337.09684832], [1516936620000, 2.921e-05, 2.929e-05, 2.92e-05, 2.92e-05, 14759.05287363], [1516936680000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 9091.03467107], [1516936800000, 2.918e-05, 2.919e-05, 2.918e-05, 2.919e-05, 882.46598893], [1516936860000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 1657.07861213], [1516936920000, 2.916e-05, 2.916e-05, 2.916e-05, 2.916e-05, 3528.19665513], [1516936980000, 2.916e-05, 2.916e-05, 2.916e-05, 2.916e-05, 2323.3315742], [1516937100000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 2434.58044402], [1516937160000, 2.916e-05, 2.916e-05, 2.915e-05, 2.915e-05, 5344.92504343], [1516937220000, 2.918e-05, 2.918e-05, 2.914e-05, 2.914e-05, 2004.28402487], [1516937340000, 2.914e-05, 2.914e-05, 2.914e-05, 2.914e-05, 75.0], [1516937400000, 2.914e-05, 2.914e-05, 2.914e-05, 2.914e-05, 315.41373374], [1516937460000, 2.915e-05, 2.919e-05, 2.915e-05, 2.919e-05, 1390.7870347], [1516937520000, 2.927e-05, 2.927e-05, 2.926e-05, 2.927e-05, 1836.6819224], [1516937580000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 100.0], [1516937640000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 118.79725262], [1516937760000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 46.06596973], [1516937820000, 2.928e-05, 2.929e-05, 2.928e-05, 2.929e-05, 600.0], [1516937880000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 11762.380573], [1516937940000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 5597.132826], [1516938000000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 583.65335201], [1516938060000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 852.95900581], [1516938120000, 2.927e-05, 2.928e-05, 2.927e-05, 2.928e-05, 5437.73669448], [1516938180000, 2.928e-05, 2.928e-05, 2.927e-05, 2.927e-05, 476.51647514], [1516938240000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 137.3283763], [1516938300000, 2.927e-05, 2.927e-05, 2.919e-05, 2.919e-05, 3432.86760288], [1516938360000, 2.914e-05, 2.914e-05, 2.912e-05, 2.912e-05, 2407.07592232], [1516938420000, 2.912e-05, 2.912e-05, 2.91e-05, 2.91e-05, 4438.03264859], [1516938480000, 2.91e-05, 2.912e-05, 2.91e-05, 2.912e-05, 197.28520746], [1516938540000, 2.91e-05, 2.91e-05, 2.91e-05, 2.91e-05, 3597.09396437], [1516938600000, 2.91e-05, 2.91e-05, 2.902e-05, 2.902e-05, 11528.67181332], [1516938660000, 2.902e-05, 2.902e-05, 2.902e-05, 2.902e-05, 3313.27039249], [1516938720000, 2.901e-05, 2.91e-05, 2.9e-05, 2.91e-05, 19952.43171786], [1516938780000, 2.91e-05, 2.912e-05, 2.91e-05, 2.912e-05, 742.03047912], [1516938840000, 2.911e-05, 2.911e-05, 2.911e-05, 2.911e-05, 668.67446767], [1516938900000, 2.91e-05, 2.91e-05, 2.904e-05, 2.904e-05, 1185.95397898], [1516938960000, 2.911e-05, 2.911e-05, 2.911e-05, 2.911e-05, 37.787702], [1516939020000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 68.44619814], [1516939080000, 2.909e-05, 2.909e-05, 2.904e-05, 2.904e-05, 176.81580909], [1516939140000, 2.904e-05, 2.909e-05, 2.904e-05, 2.904e-05, 1921.74736985], [1516939200000, 2.904e-05, 2.904e-05, 2.904e-05, 2.904e-05, 103.58040242], [1516939260000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 32.46990099], [1516939320000, 2.909e-05, 2.91e-05, 2.904e-05, 2.909e-05, 1263.16636099], [1516939380000, 2.909e-05, 2.909e-05, 2.904e-05, 2.904e-05, 631.16590875], [1516939440000, 2.905e-05, 2.906e-05, 2.899e-05, 2.906e-05, 12707.04301212], [1516939500000, 2.906e-05, 2.906e-05, 2.906e-05, 2.906e-05, 449.0], [1516939560000, 2.906e-05, 2.906e-05, 2.898e-05, 2.898e-05, 2808.81969982], [1516939620000, 2.898e-05, 2.912e-05, 2.897e-05, 2.912e-05, 2292.38771909], [1516939680000, 2.912e-05, 2.912e-05, 2.911e-05, 2.912e-05, 3351.55220571], [1516939740000, 2.912e-05, 2.927e-05, 2.912e-05, 2.927e-05, 3758.55969052], [1516939800000, 2.925e-05, 2.927e-05, 2.925e-05, 2.927e-05, 1240.1776563], [1516939860000, 2.912e-05, 2.912e-05, 2.912e-05, 2.912e-05, 989.43993404], [1516939920000, 2.911e-05, 2.911e-05, 2.911e-05, 2.911e-05, 542.250396], [1516939980000, 2.911e-05, 2.911e-05, 2.911e-05, 2.911e-05, 437.27781199], [1516940040000, 2.911e-05, 2.911e-05, 2.91e-05, 2.91e-05, 114.55022398], [1516940220000, 2.911e-05, 2.929e-05, 2.911e-05, 2.929e-05, 3946.99453095], [1516940280000, 2.911e-05, 2.911e-05, 2.911e-05, 2.911e-05, 3469.37569193], [1516940340000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 1302.71308031], [1516940400000, 2.922e-05, 2.93e-05, 2.915e-05, 2.926e-05, 172492.60028181], [1516940460000, 2.913e-05, 2.913e-05, 2.911e-05, 2.911e-05, 6755.11268609], [1516940580000, 2.911e-05, 2.911e-05, 2.91e-05, 2.91e-05, 13126.45417545], [1516940700000, 2.906e-05, 2.909e-05, 2.906e-05, 2.909e-05, 5909.00449229], [1516940760000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 504.05371059], [1516940820000, 2.909e-05, 2.91e-05, 2.909e-05, 2.909e-05, 2753.36241703], [1516940880000, 2.909e-05, 2.91e-05, 2.909e-05, 2.91e-05, 778.93456446], [1516940940000, 2.91e-05, 2.91e-05, 2.91e-05, 2.91e-05, 797.28703518], [1516941000000, 2.91e-05, 2.91e-05, 2.909e-05, 2.91e-05, 1267.01552405], [1516941060000, 2.909e-05, 2.91e-05, 2.909e-05, 2.91e-05, 9734.81378344], [1516941120000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 3844.39797433], [1516941180000, 2.91e-05, 2.91e-05, 2.91e-05, 2.91e-05, 2222.04738956], [1516941240000, 2.91e-05, 2.91e-05, 2.909e-05, 2.91e-05, 11395.61241397], [1516941360000, 2.91e-05, 2.91e-05, 2.909e-05, 2.909e-05, 7822.55099386], [1516941420000, 2.91e-05, 2.91e-05, 2.91e-05, 2.91e-05, 989.36473249], [1516941480000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 33.73156227], [1516941540000, 2.91e-05, 2.91e-05, 2.91e-05, 2.91e-05, 114.39190282], [1516941600000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 8873.02583644], [1516941660000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 653.181687], [1516941720000, 2.898e-05, 2.899e-05, 2.897e-05, 2.897e-05, 6973.63461744], [1516941780000, 2.897e-05, 2.908e-05, 2.897e-05, 2.908e-05, 316.75914999], [1516941840000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 643.74231003], [1516941900000, 2.908e-05, 2.91e-05, 2.908e-05, 2.91e-05, 5224.35468017], [1516941960000, 2.91e-05, 2.924e-05, 2.91e-05, 2.924e-05, 4760.62365497], [1516942020000, 2.922e-05, 2.924e-05, 2.922e-05, 2.924e-05, 321.19919632], [1516942080000, 2.898e-05, 2.923e-05, 2.897e-05, 2.923e-05, 3483.89771765], [1516942140000, 2.924e-05, 2.924e-05, 2.9e-05, 2.924e-05, 19187.33575917], [1516942200000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 90.0], [1516942260000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 122.60999912], [1516942320000, 2.92e-05, 2.923e-05, 2.902e-05, 2.902e-05, 1054.67070334], [1516942380000, 2.902e-05, 2.902e-05, 2.902e-05, 2.902e-05, 1116.65786231], [1516942440000, 2.924e-05, 2.93e-05, 2.924e-05, 2.93e-05, 24393.73134923], [1516942500000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 4585.16135075], [1516942560000, 2.906e-05, 2.907e-05, 2.905e-05, 2.906e-05, 5149.81167878], [1516942740000, 2.907e-05, 2.907e-05, 2.907e-05, 2.907e-05, 3459.94230808], [1516942800000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 1018.74095708], [1516942860000, 2.925e-05, 2.926e-05, 2.925e-05, 2.926e-05, 2000.0], [1516943040000, 2.901e-05, 2.923e-05, 2.901e-05, 2.923e-05, 237.09947444], [1516943160000, 2.923e-05, 2.923e-05, 2.901e-05, 2.901e-05, 4000.96189002], [1516943220000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 172.17344228], [1516943280000, 2.924e-05, 2.926e-05, 2.924e-05, 2.926e-05, 16504.13620249], [1516943340000, 2.926e-05, 2.926e-05, 2.926e-05, 2.926e-05, 1936.49501362], [1516943400000, 2.925e-05, 2.926e-05, 2.925e-05, 2.926e-05, 502.71647727], [1516943460000, 2.926e-05, 2.926e-05, 2.926e-05, 2.926e-05, 1170.71634806], [1516943520000, 2.926e-05, 2.926e-05, 2.926e-05, 2.926e-05, 2796.94190294], [1516943640000, 2.926e-05, 2.926e-05, 2.926e-05, 2.926e-05, 7297.93117039], [1516943700000, 2.926e-05, 2.926e-05, 2.925e-05, 2.925e-05, 314.7295315], [1516943760000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 56.16965932], [1516943820000, 2.926e-05, 2.926e-05, 2.925e-05, 2.925e-05, 6830.79906859], [1516943880000, 2.926e-05, 2.926e-05, 2.925e-05, 2.925e-05, 6190.9747714], [1516943940000, 2.926e-05, 2.926e-05, 2.925e-05, 2.925e-05, 3140.20675302], [1516944000000, 2.925e-05, 2.925e-05, 2.924e-05, 2.924e-05, 9165.97818652], [1516944060000, 2.924e-05, 2.925e-05, 2.924e-05, 2.925e-05, 287.9833679], [1516944120000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 75.68001991], [1516944180000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 149.96911236], [1516944240000, 2.924e-05, 2.925e-05, 2.924e-05, 2.924e-05, 270.34346389], [1516944300000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 3894.80375987], [1516944360000, 2.925e-05, 2.925e-05, 2.901e-05, 2.901e-05, 6796.72396785], [1516944420000, 2.901e-05, 2.902e-05, 2.9e-05, 2.9e-05, 7720.1084499], [1516944480000, 2.901e-05, 2.901e-05, 2.9e-05, 2.9e-05, 2458.10737873], [1516944540000, 2.9e-05, 2.9e-05, 2.898e-05, 2.9e-05, 13689.37706592], [1516944600000, 2.899e-05, 2.9e-05, 2.899e-05, 2.9e-05, 445.59934788], [1516944660000, 2.899e-05, 2.9e-05, 2.898e-05, 2.899e-05, 5198.62812432], [1516944720000, 2.899e-05, 2.9e-05, 2.899e-05, 2.899e-05, 1940.60622003], [1516944780000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 1731.13346449], [1516944840000, 2.9e-05, 2.9e-05, 2.899e-05, 2.9e-05, 8026.7920792], [1516944900000, 2.9e-05, 2.9e-05, 2.899e-05, 2.899e-05, 6098.31260129], [1516944960000, 2.9e-05, 2.9e-05, 2.899e-05, 2.9e-05, 23610.03451323], [1516945020000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 32903.23861625], [1516945080000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 1394.78675233], [1516945140000, 2.905e-05, 2.905e-05, 2.902e-05, 2.902e-05, 5401.55047089], [1516945200000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 96.32251797], [1516945260000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 4687.807387], [1516945320000, 2.907e-05, 2.907e-05, 2.907e-05, 2.907e-05, 1296.11620265], [1516945440000, 2.907e-05, 2.907e-05, 2.907e-05, 2.907e-05, 800.0], [1516945500000, 2.907e-05, 2.91e-05, 2.899e-05, 2.899e-05, 20263.33640111], [1516945560000, 2.899e-05, 2.899e-05, 2.891e-05, 2.891e-05, 173392.60028181], [1516945620000, 2.891e-05, 2.915e-05, 2.891e-05, 2.915e-05, 89.87899412], [1516945680000, 2.9e-05, 2.9e-05, 2.899e-05, 2.9e-05, 1147.3212061], [1516945740000, 2.915e-05, 2.916e-05, 2.915e-05, 2.915e-05, 909.67461996], [1516945800000, 2.916e-05, 2.916e-05, 2.892e-05, 2.892e-05, 650.28895525], [1516945920000, 2.9e-05, 2.916e-05, 2.892e-05, 2.916e-05, 4083.41636456], [1516945980000, 2.906e-05, 2.906e-05, 2.906e-05, 2.906e-05, 155.85393442], [1516946040000, 2.906e-05, 2.914e-05, 2.905e-05, 2.914e-05, 28352.50014595], [1516946100000, 2.914e-05, 2.914e-05, 2.914e-05, 2.914e-05, 660.2694642], [1516946160000, 2.914e-05, 2.914e-05, 2.905e-05, 2.905e-05, 6183.05486583], [1516946220000, 2.905e-05, 2.905e-05, 2.905e-05, 2.905e-05, 18642.86514534], [1516946280000, 2.904e-05, 2.905e-05, 2.904e-05, 2.905e-05, 1775.80394967], [1516946340000, 2.896e-05, 2.896e-05, 2.895e-05, 2.896e-05, 4051.00862787], [1516946400000, 2.896e-05, 2.896e-05, 2.895e-05, 2.895e-05, 149.27710441], [1516946460000, 2.895e-05, 2.895e-05, 2.895e-05, 2.895e-05, 831.60140125], [1516946520000, 2.894e-05, 2.894e-05, 2.893e-05, 2.894e-05, 2124.35529105], [1516946580000, 2.894e-05, 2.894e-05, 2.893e-05, 2.894e-05, 4062.47740853], [1516946640000, 2.893e-05, 2.894e-05, 2.893e-05, 2.894e-05, 4022.4396428], [1516946700000, 2.894e-05, 2.895e-05, 2.894e-05, 2.895e-05, 6133.2711769], [1516946820000, 2.895e-05, 2.895e-05, 2.892e-05, 2.895e-05, 6235.08257985], [1516946880000, 2.895e-05, 2.895e-05, 2.894e-05, 2.894e-05, 53.31937857], [1516946940000, 2.892e-05, 2.892e-05, 2.892e-05, 2.892e-05, 486.59733247], [1516947000000, 2.891e-05, 2.892e-05, 2.891e-05, 2.892e-05, 1111.73664781], [1516947060000, 2.89e-05, 2.89e-05, 2.888e-05, 2.89e-05, 3716.57615282], [1516947120000, 2.89e-05, 2.894e-05, 2.89e-05, 2.894e-05, 7689.53861028], [1516947300000, 2.894e-05, 2.902e-05, 2.894e-05, 2.902e-05, 74.63697079], [1516947360000, 2.903e-05, 2.903e-05, 2.903e-05, 2.903e-05, 33.69217476], [1516947420000, 2.904e-05, 2.905e-05, 2.904e-05, 2.905e-05, 165.80338408], [1516947480000, 2.913e-05, 2.913e-05, 2.913e-05, 2.913e-05, 2231.8], [1516947600000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 398.41618122], [1516947780000, 2.903e-05, 2.912e-05, 2.903e-05, 2.912e-05, 5642.2037504], [1516947840000, 2.905e-05, 2.905e-05, 2.9e-05, 2.9e-05, 3877.24956936], [1516947900000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 343.185327], [1516947960000, 2.904e-05, 2.904e-05, 2.903e-05, 2.904e-05, 4402.42835766], [1516948020000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 2657.09729564], [1516948080000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 1168.94040761], [1516948200000, 2.899e-05, 2.899e-05, 2.878e-05, 2.898e-05, 10278.09442954], [1516948260000, 2.899e-05, 2.902e-05, 2.899e-05, 2.902e-05, 592.22389848], [1516948320000, 2.902e-05, 2.902e-05, 2.902e-05, 2.902e-05, 3940.23656275], [1516948380000, 2.901e-05, 2.901e-05, 2.9e-05, 2.9e-05, 287.61083725], [1516948440000, 2.9e-05, 2.9e-05, 2.899e-05, 2.899e-05, 53.65871338], [1516948500000, 2.9e-05, 2.9e-05, 2.885e-05, 2.885e-05, 261.67138306], [1516948560000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 734.48275862], [1516948620000, 2.885e-05, 2.885e-05, 2.871e-05, 2.873e-05, 21837.85546053], [1516948680000, 2.873e-05, 2.899e-05, 2.87e-05, 2.899e-05, 4445.24688951], [1516948740000, 2.899e-05, 2.899e-05, 2.898e-05, 2.899e-05, 2811.83207054], [1516948800000, 2.899e-05, 2.901e-05, 2.899e-05, 2.901e-05, 1023.85085411], [1516948860000, 2.901e-05, 2.903e-05, 2.899e-05, 2.903e-05, 10324.51180734], [1516948920000, 2.903e-05, 2.903e-05, 2.903e-05, 2.903e-05, 1.3e-07], [1516948980000, 2.902e-05, 2.903e-05, 2.902e-05, 2.903e-05, 66.77399075], [1516949040000, 2.901e-05, 2.901e-05, 2.901e-05, 2.901e-05, 1260.94267382], [1516949100000, 2.901e-05, 2.901e-05, 2.901e-05, 2.901e-05, 604.98609268], [1516949160000, 2.887e-05, 2.887e-05, 2.879e-05, 2.879e-05, 6265.73675088], [1516949340000, 2.901e-05, 2.901e-05, 2.9e-05, 2.9e-05, 161.84268853], [1516949460000, 2.894e-05, 2.894e-05, 2.894e-05, 2.894e-05, 808.62112076], [1516949520000, 2.894e-05, 2.894e-05, 2.894e-05, 2.894e-05, 3636.45723286], [1516949580000, 2.885e-05, 2.89e-05, 2.885e-05, 2.89e-05, 6478.89446271], [1516949640000, 2.89e-05, 2.89e-05, 2.885e-05, 2.889e-05, 2945.22572559], [1516949760000, 2.885e-05, 2.888e-05, 2.885e-05, 2.888e-05, 633.49082973], [1516949820000, 2.888e-05, 2.888e-05, 2.884e-05, 2.884e-05, 6266.23791649], [1516949880000, 2.884e-05, 2.885e-05, 2.884e-05, 2.885e-05, 500.13035318], [1516949940000, 2.888e-05, 2.9e-05, 2.888e-05, 2.9e-05, 3698.08740909], [1516950000000, 2.889e-05, 2.901e-05, 2.889e-05, 2.901e-05, 1842.71346769], [1516950120000, 2.901e-05, 2.901e-05, 2.9e-05, 2.9e-05, 7260.14212048], [1516950180000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 1857.12978595], [1516950240000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 2225.1175368], [1516950300000, 2.901e-05, 2.902e-05, 2.901e-05, 2.902e-05, 202.1], [1516950360000, 2.9e-05, 2.9e-05, 2.886e-05, 2.886e-05, 2056.14058162], [1516950420000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 2800.58017462], [1516950480000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 3103.44827586], [1516950600000, 2.889e-05, 2.889e-05, 2.887e-05, 2.887e-05, 269.18390375], [1516950660000, 2.887e-05, 2.887e-05, 2.887e-05, 2.887e-05, 5050.0], [1516950720000, 2.887e-05, 2.901e-05, 2.886e-05, 2.901e-05, 2438.27664972], [1516950780000, 2.892e-05, 2.892e-05, 2.886e-05, 2.886e-05, 7837.0], [1516950840000, 2.886e-05, 2.891e-05, 2.886e-05, 2.891e-05, 217.37441077], [1516950900000, 2.891e-05, 2.901e-05, 2.881e-05, 2.901e-05, 3372.08494045], [1516951020000, 2.901e-05, 2.905e-05, 2.901e-05, 2.905e-05, 1949.76493086], [1516951080000, 2.902e-05, 2.902e-05, 2.902e-05, 2.902e-05, 79.98740538], [1516951140000, 2.901e-05, 2.901e-05, 2.901e-05, 2.901e-05, 1501.82180573], [1516951200000, 2.901e-05, 2.901e-05, 2.901e-05, 2.901e-05, 3280.52495489], [1516951260000, 2.902e-05, 2.903e-05, 2.902e-05, 2.903e-05, 585.9275768], [1516951320000, 2.903e-05, 2.904e-05, 2.903e-05, 2.904e-05, 375.51595891], [1516951380000, 2.904e-05, 2.905e-05, 2.882e-05, 2.9e-05, 1199.70290836], [1516951500000, 2.9e-05, 2.9e-05, 2.885e-05, 2.895e-05, 17140.98130161], [1516951560000, 2.886e-05, 2.895e-05, 2.871e-05, 2.895e-05, 60718.62661988], [1516951620000, 2.886e-05, 2.894e-05, 2.886e-05, 2.894e-05, 5250.64324086], [1516951680000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 51.97505197], [1516951800000, 2.884e-05, 2.886e-05, 2.884e-05, 2.885e-05, 4487.99681257], [1516951860000, 2.877e-05, 2.877e-05, 2.868e-05, 2.868e-05, 8679.43085426], [1516951920000, 2.868e-05, 2.868e-05, 2.868e-05, 2.868e-05, 761.26924618], [1516952040000, 2.885e-05, 2.886e-05, 2.872e-05, 2.886e-05, 8340.14467583], [1516952160000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 31.0654996], [1516952220000, 2.869e-05, 2.886e-05, 2.869e-05, 2.886e-05, 62.03055695], [1516952280000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 657.99350001], [1516952400000, 2.886e-05, 2.893e-05, 2.885e-05, 2.885e-05, 6890.01332161], [1516952460000, 2.885e-05, 2.885e-05, 2.885e-05, 2.885e-05, 1431.90902332], [1516952640000, 2.889e-05, 2.889e-05, 2.875e-05, 2.875e-05, 5497.50112343], [1516952820000, 2.887e-05, 2.888e-05, 2.871e-05, 2.871e-05, 5051.55183482], [1516952940000, 2.87e-05, 2.87e-05, 2.869e-05, 2.869e-05, 6940.13167816], [1516953000000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 300.0], [1516953060000, 2.87e-05, 2.886e-05, 2.87e-05, 2.886e-05, 1527.8094596], [1516953120000, 2.886e-05, 2.886e-05, 2.87e-05, 2.87e-05, 348.83508416], [1516953180000, 2.87e-05, 2.885e-05, 2.87e-05, 2.885e-05, 4563.37082825], [1516953240000, 2.871e-05, 2.884e-05, 2.87e-05, 2.884e-05, 6335.4961323], [1516953300000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 2870.82125794], [1516953360000, 2.884e-05, 2.886e-05, 2.871e-05, 2.873e-05, 4863.16473074], [1516953420000, 2.875e-05, 2.886e-05, 2.875e-05, 2.876e-05, 4487.40486835], [1516953480000, 2.876e-05, 2.886e-05, 2.876e-05, 2.876e-05, 15356.2051455], [1516953540000, 2.885e-05, 2.886e-05, 2.88e-05, 2.885e-05, 1707.95967168], [1516953600000, 2.885e-05, 2.885e-05, 2.877e-05, 2.877e-05, 7845.23906041], [1516953660000, 2.88e-05, 2.892e-05, 2.877e-05, 2.892e-05, 2485.89005686], [1516953720000, 2.893e-05, 2.9e-05, 2.88e-05, 2.9e-05, 6988.45362085], [1516953780000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 170.90246406], [1516953840000, 2.883e-05, 2.883e-05, 2.883e-05, 2.883e-05, 3271.30169307], [1516953900000, 2.882e-05, 2.882e-05, 2.881e-05, 2.881e-05, 119571.7705111], [1516953960000, 2.881e-05, 2.881e-05, 2.88e-05, 2.88e-05, 7377.00295526], [1516954020000, 2.88e-05, 2.88e-05, 2.876e-05, 2.876e-05, 4374.23061366], [1516954080000, 2.879e-05, 2.88e-05, 2.876e-05, 2.876e-05, 7254.59663751], [1516954140000, 2.876e-05, 2.876e-05, 2.865e-05, 2.865e-05, 5378.87739802], [1516954200000, 2.865e-05, 2.865e-05, 2.86e-05, 2.861e-05, 42676.7917178], [1516954260000, 2.861e-05, 2.861e-05, 2.86e-05, 2.861e-05, 32308.7320938], [1516954320000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 363.1318207], [1516954380000, 2.861e-05, 2.868e-05, 2.861e-05, 2.861e-05, 3634.95569886], [1516954440000, 2.861e-05, 2.861e-05, 2.86e-05, 2.861e-05, 10376.1710225], [1516954500000, 2.86e-05, 2.861e-05, 2.86e-05, 2.86e-05, 15629.04734775], [1516954560000, 2.861e-05, 2.861e-05, 2.86e-05, 2.86e-05, 56324.52271582], [1516954620000, 2.86e-05, 2.868e-05, 2.86e-05, 2.862e-05, 2636.06105161], [1516954680000, 2.862e-05, 2.862e-05, 2.86e-05, 2.86e-05, 31840.17764943], [1516954740000, 2.861e-05, 2.861e-05, 2.86e-05, 2.86e-05, 27588.17363057], [1516954800000, 2.867e-05, 2.867e-05, 2.86e-05, 2.86e-05, 30106.25715489], [1516954860000, 2.86e-05, 2.86e-05, 2.858e-05, 2.86e-05, 11231.7051727], [1516954920000, 2.858e-05, 2.858e-05, 2.856e-05, 2.857e-05, 18113.39752774], [1516954980000, 2.858e-05, 2.868e-05, 2.856e-05, 2.856e-05, 6807.27414676], [1516955040000, 2.856e-05, 2.857e-05, 2.856e-05, 2.856e-05, 8527.79592231], [1516955100000, 2.855e-05, 2.856e-05, 2.853e-05, 2.856e-05, 3407.27322475], [1516955160000, 2.853e-05, 2.856e-05, 2.85e-05, 2.85e-05, 31691.9741493], [1516955220000, 2.85e-05, 2.85e-05, 2.835e-05, 2.835e-05, 28582.72553086], [1516955280000, 2.836e-05, 2.84e-05, 2.821e-05, 2.824e-05, 20744.36043956], [1516955340000, 2.83e-05, 2.83e-05, 2.817e-05, 2.824e-05, 31910.4501717], [1516955400000, 2.824e-05, 2.824e-05, 2.81e-05, 2.81e-05, 47973.50444877], [1516955460000, 2.824e-05, 2.83e-05, 2.812e-05, 2.83e-05, 127667.34945853], [1516955520000, 2.83e-05, 2.876e-05, 2.83e-05, 2.867e-05, 24808.44767414], [1516955580000, 2.87e-05, 2.876e-05, 2.87e-05, 2.875e-05, 9025.00851102], [1516955640000, 2.875e-05, 2.875e-05, 2.869e-05, 2.869e-05, 1648.12492428], [1516955700000, 2.85e-05, 2.85e-05, 2.82e-05, 2.82e-05, 8531.81054907], [1516955760000, 2.82e-05, 2.82e-05, 2.81e-05, 2.811e-05, 39516.03712711], [1516955820000, 2.812e-05, 2.848e-05, 2.812e-05, 2.844e-05, 10926.12037246], [1516955880000, 2.843e-05, 2.843e-05, 2.84e-05, 2.84e-05, 6794.0945524], [1516955940000, 2.84e-05, 2.84e-05, 2.817e-05, 2.82e-05, 24501.92369813], [1516956000000, 2.82e-05, 2.833e-05, 2.82e-05, 2.832e-05, 12001.28966598], [1516956060000, 2.818e-05, 2.833e-05, 2.818e-05, 2.833e-05, 21484.39258895], [1516956120000, 2.833e-05, 2.85e-05, 2.833e-05, 2.838e-05, 4010.31993695], [1516956180000, 2.839e-05, 2.839e-05, 2.832e-05, 2.832e-05, 678.37434166], [1516956240000, 2.839e-05, 2.839e-05, 2.838e-05, 2.839e-05, 3688.1184505], [1516956300000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 2148.77792425], [1516956360000, 2.838e-05, 2.839e-05, 2.838e-05, 2.839e-05, 16733.99781029], [1516956420000, 2.838e-05, 2.868e-05, 2.838e-05, 2.868e-05, 2774.86566179], [1516956480000, 2.855e-05, 2.895e-05, 2.851e-05, 2.895e-05, 9266.25197444], [1516956540000, 2.879e-05, 2.89e-05, 2.821e-05, 2.889e-05, 183949.48647583], [1516956600000, 2.89e-05, 2.89e-05, 2.87e-05, 2.87e-05, 11220.39396285], [1516956660000, 2.879e-05, 2.89e-05, 2.879e-05, 2.879e-05, 10301.26384592], [1516956720000, 2.888e-05, 2.89e-05, 2.888e-05, 2.89e-05, 605.24970107], [1516956780000, 2.89e-05, 2.891e-05, 2.89e-05, 2.89e-05, 5660.28701093], [1516956840000, 2.889e-05, 2.889e-05, 2.879e-05, 2.879e-05, 4264.87269518], [1516956900000, 2.879e-05, 2.903e-05, 2.879e-05, 2.903e-05, 21078.40461986], [1516956960000, 2.904e-05, 2.904e-05, 2.903e-05, 2.904e-05, 14624.18118634], [1516957020000, 2.903e-05, 2.903e-05, 2.879e-05, 2.879e-05, 7174.15572487], [1516957080000, 2.857e-05, 2.857e-05, 2.857e-05, 2.857e-05, 1885.5324828], [1516957200000, 2.857e-05, 2.857e-05, 2.856e-05, 2.857e-05, 2796.42289478], [1516957260000, 2.857e-05, 2.89e-05, 2.857e-05, 2.89e-05, 4222.63997092], [1516957320000, 2.889e-05, 2.89e-05, 2.889e-05, 2.89e-05, 173.01038062], [1516957380000, 2.889e-05, 2.89e-05, 2.889e-05, 2.89e-05, 5115.60036079], [1516957440000, 2.899e-05, 2.901e-05, 2.89e-05, 2.89e-05, 5945.32391282], [1516957500000, 2.889e-05, 2.89e-05, 2.885e-05, 2.89e-05, 955.44451044], [1516957560000, 2.885e-05, 2.888e-05, 2.857e-05, 2.888e-05, 63112.15068465], [1516957620000, 2.887e-05, 2.888e-05, 2.887e-05, 2.888e-05, 270.48113121], [1516957680000, 2.888e-05, 2.888e-05, 2.888e-05, 2.888e-05, 193.1111428], [1516957740000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 179.13630258], [1516957800000, 2.86e-05, 2.86e-05, 2.856e-05, 2.857e-05, 3464.43430335], [1516957860000, 2.857e-05, 2.857e-05, 2.85e-05, 2.85e-05, 1568.18717663], [1516957920000, 2.85e-05, 2.85e-05, 2.839e-05, 2.839e-05, 2658.58819859], [1516957980000, 2.839e-05, 2.839e-05, 2.823e-05, 2.83e-05, 13872.35731457], [1516958040000, 2.831e-05, 2.839e-05, 2.823e-05, 2.823e-05, 26496.39111941], [1516958100000, 2.823e-05, 2.823e-05, 2.821e-05, 2.823e-05, 9071.27251766], [1516958160000, 2.823e-05, 2.823e-05, 2.822e-05, 2.823e-05, 36827.85342649], [1516958280000, 2.839e-05, 2.861e-05, 2.839e-05, 2.86e-05, 15575.24656921], [1516958340000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 600.71010693], [1516958400000, 2.86e-05, 2.861e-05, 2.86e-05, 2.86e-05, 13673.68543133], [1516958460000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 3691.18625308], [1516958520000, 2.86e-05, 2.861e-05, 2.86e-05, 2.86e-05, 5576.04917835], [1516958580000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 1448.15002568], [1516958640000, 2.86e-05, 2.861e-05, 2.86e-05, 2.861e-05, 7180.1083397], [1516958700000, 2.861e-05, 2.861e-05, 2.839e-05, 2.84e-05, 3937.74046925], [1516958760000, 2.839e-05, 2.839e-05, 2.832e-05, 2.839e-05, 7772.42943695], [1516958820000, 2.839e-05, 2.839e-05, 2.832e-05, 2.839e-05, 1653.21481991], [1516958880000, 2.838e-05, 2.839e-05, 2.838e-05, 2.839e-05, 483.55744215], [1516958940000, 2.84e-05, 2.86e-05, 2.84e-05, 2.86e-05, 5943.40327889], [1516959000000, 2.86e-05, 2.861e-05, 2.86e-05, 2.86e-05, 17619.97273991], [1516959060000, 2.86e-05, 2.86e-05, 2.845e-05, 2.845e-05, 4746.1063367], [1516959120000, 2.86e-05, 2.861e-05, 2.86e-05, 2.861e-05, 11721.68439004], [1516959180000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 5243.82551515], [1516959240000, 2.854e-05, 2.854e-05, 2.852e-05, 2.852e-05, 8676.84355306], [1516959300000, 2.852e-05, 2.852e-05, 2.851e-05, 2.852e-05, 888.405957], [1516959360000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 4035.1], [1516959420000, 2.851e-05, 2.851e-05, 2.839e-05, 2.84e-05, 28410.11888154], [1516959480000, 2.84e-05, 2.845e-05, 2.839e-05, 2.844e-05, 5009.88211508], [1516959540000, 2.844e-05, 2.844e-05, 2.839e-05, 2.844e-05, 1183.88264122], [1516959600000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 413.58455301], [1516959660000, 2.839e-05, 2.839e-05, 2.828e-05, 2.828e-05, 2954.65530545], [1516959720000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 265.1090133], [1516959780000, 2.83e-05, 2.844e-05, 2.829e-05, 2.842e-05, 21692.68332214], [1516959840000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 336.17242771], [1516959960000, 2.843e-05, 2.998e-05, 2.843e-05, 2.866e-05, 191219.60528049], [1516960020000, 2.864e-05, 2.864e-05, 2.855e-05, 2.86e-05, 29955.64274465], [1516960080000, 2.86e-05, 2.86e-05, 2.858e-05, 2.858e-05, 7509.31573686], [1516960140000, 2.857e-05, 2.86e-05, 2.833e-05, 2.859e-05, 9147.56115979], [1516960200000, 2.858e-05, 2.858e-05, 2.836e-05, 2.838e-05, 5541.60309633], [1516960260000, 2.857e-05, 2.858e-05, 2.841e-05, 2.841e-05, 16637.35673579], [1516960320000, 2.841e-05, 2.858e-05, 2.841e-05, 2.858e-05, 23556.57864781], [1516960380000, 2.841e-05, 2.841e-05, 2.837e-05, 2.837e-05, 69283.16645354], [1516960440000, 2.837e-05, 2.841e-05, 2.837e-05, 2.841e-05, 1385.70373054], [1516960500000, 2.857e-05, 2.857e-05, 2.836e-05, 2.836e-05, 4915.42824138], [1516960560000, 2.836e-05, 2.836e-05, 2.836e-05, 2.836e-05, 1759.0], [1516960620000, 2.855e-05, 2.855e-05, 2.853e-05, 2.853e-05, 366.391411], [1516960680000, 2.853e-05, 2.853e-05, 2.853e-05, 2.853e-05, 46.84505898], [1516960740000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 107.33701367], [1516960800000, 2.851e-05, 2.856e-05, 2.836e-05, 2.836e-05, 11646.34357978], [1516960860000, 2.857e-05, 2.857e-05, 2.827e-05, 2.827e-05, 65177.36644957], [1516960920000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 322.02076194], [1516960980000, 2.849e-05, 2.849e-05, 2.829e-05, 2.829e-05, 1383.14209886], [1516961040000, 2.829e-05, 2.829e-05, 2.828e-05, 2.828e-05, 6602.99656532], [1516961100000, 2.828e-05, 2.828e-05, 2.828e-05, 2.828e-05, 1854.58684912], [1516961160000, 2.828e-05, 2.848e-05, 2.828e-05, 2.847e-05, 368.48860932], [1516961220000, 2.847e-05, 2.848e-05, 2.847e-05, 2.848e-05, 2391.3891063], [1516961280000, 2.83e-05, 2.848e-05, 2.83e-05, 2.848e-05, 1979.32830075], [1516961340000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 611.1124384], [1516961400000, 2.849e-05, 2.849e-05, 2.848e-05, 2.849e-05, 6938.21362337], [1516961460000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 385.13754224], [1516961520000, 2.848e-05, 2.848e-05, 2.847e-05, 2.847e-05, 7359.9936337], [1516961580000, 2.83e-05, 2.857e-05, 2.83e-05, 2.857e-05, 1813.1244885], [1516961640000, 2.831e-05, 2.832e-05, 2.831e-05, 2.831e-05, 24489.66921336], [1516961700000, 2.83e-05, 2.831e-05, 2.83e-05, 2.831e-05, 559.91269534], [1516961820000, 2.831e-05, 2.847e-05, 2.831e-05, 2.847e-05, 15620.83274472], [1516961880000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 353.10698159], [1516961940000, 2.849e-05, 2.858e-05, 2.849e-05, 2.858e-05, 7050.41140164], [1516962060000, 2.857e-05, 2.857e-05, 2.849e-05, 2.857e-05, 3310.15894068], [1516962120000, 2.857e-05, 2.857e-05, 2.857e-05, 2.857e-05, 3303.632917], [1516962180000, 2.849e-05, 2.855e-05, 2.849e-05, 2.855e-05, 2376.1166152], [1516962360000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 1381.0], [1516962420000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 18.0], [1516962480000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 1374.73771443], [1516962540000, 2.851e-05, 2.851e-05, 2.849e-05, 2.849e-05, 4580.28603706], [1516962600000, 2.848e-05, 2.849e-05, 2.831e-05, 2.849e-05, 2365.51876323], [1516962660000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 3718.34586035], [1516962720000, 2.849e-05, 2.852e-05, 2.849e-05, 2.852e-05, 36021.24939709], [1516962780000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 276.39365945], [1516962840000, 2.833e-05, 2.833e-05, 2.833e-05, 2.833e-05, 21.32523564], [1516962900000, 2.849e-05, 2.852e-05, 2.849e-05, 2.852e-05, 30822.49880208], [1516963080000, 2.852e-05, 2.854e-05, 2.852e-05, 2.854e-05, 3400.8983215], [1516963140000, 2.854e-05, 2.854e-05, 2.85e-05, 2.85e-05, 7525.31748756], [1516963200000, 2.85e-05, 2.851e-05, 2.85e-05, 2.85e-05, 6358.24543464], [1516963260000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 1775.326997], [1516963320000, 2.851e-05, 2.853e-05, 2.851e-05, 2.853e-05, 361.48357306], [1516963380000, 2.853e-05, 2.854e-05, 2.853e-05, 2.854e-05, 81.26558829], [1516963440000, 2.855e-05, 2.865e-05, 2.855e-05, 2.858e-05, 11404.81637306], [1516963500000, 2.858e-05, 2.867e-05, 2.858e-05, 2.867e-05, 12221.35833615], [1516963560000, 2.867e-05, 2.878e-05, 2.867e-05, 2.868e-05, 2471.23692872], [1516963620000, 2.868e-05, 2.868e-05, 2.868e-05, 2.868e-05, 87.0], [1516963680000, 2.884e-05, 2.884e-05, 2.868e-05, 2.868e-05, 1359.50739614], [1516963740000, 2.883e-05, 2.883e-05, 2.883e-05, 2.883e-05, 21.38220179], [1516963800000, 2.877e-05, 2.884e-05, 2.87e-05, 2.87e-05, 2546.29917849], [1516963860000, 2.884e-05, 2.887e-05, 2.884e-05, 2.887e-05, 1000.0], [1516963920000, 2.884e-05, 2.888e-05, 2.884e-05, 2.888e-05, 690.10970361], [1516963980000, 2.888e-05, 2.888e-05, 2.888e-05, 2.888e-05, 608.18398505], [1516964100000, 2.895e-05, 2.895e-05, 2.895e-05, 2.895e-05, 404.41954543], [1516964160000, 2.895e-05, 2.896e-05, 2.884e-05, 2.896e-05, 438.95070377], [1516964220000, 2.896e-05, 2.896e-05, 2.873e-05, 2.873e-05, 34620.95425986], [1516964280000, 2.896e-05, 2.896e-05, 2.881e-05, 2.881e-05, 893.42122714], [1516964340000, 2.895e-05, 2.899e-05, 2.895e-05, 2.899e-05, 2775.80582646], [1516964400000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 38.19614846], [1516964520000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 25.11], [1516964580000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 1009.52541667], [1516964640000, 2.876e-05, 2.898e-05, 2.876e-05, 2.898e-05, 391.38245211], [1516964760000, 2.898e-05, 2.9e-05, 2.898e-05, 2.9e-05, 290.0], [1516964820000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 2446.33323601], [1516964880000, 2.9e-05, 2.9e-05, 2.88e-05, 2.88e-05, 2934.80820175], [1516964940000, 2.881e-05, 2.888e-05, 2.881e-05, 2.888e-05, 3355.77185746], [1516965000000, 2.897e-05, 2.897e-05, 2.888e-05, 2.888e-05, 1399.2514202], [1516965060000, 2.885e-05, 2.885e-05, 2.885e-05, 2.885e-05, 8659.35983652], [1516965180000, 2.887e-05, 2.887e-05, 2.885e-05, 2.885e-05, 4386.604689], [1516965300000, 2.886e-05, 2.886e-05, 2.885e-05, 2.885e-05, 640.37987454], [1516965360000, 2.879e-05, 2.887e-05, 2.879e-05, 2.887e-05, 10367.83457421], [1516965420000, 2.885e-05, 2.885e-05, 2.88e-05, 2.88e-05, 123.15513606], [1516965540000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 1527.5], [1516965600000, 2.882e-05, 2.882e-05, 2.88e-05, 2.88e-05, 19703.0038724], [1516965660000, 2.88e-05, 2.887e-05, 2.88e-05, 2.887e-05, 2106.30916158], [1516965780000, 2.888e-05, 2.89e-05, 2.888e-05, 2.89e-05, 1397.144666], [1516965840000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 10351.58069864], [1516965900000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 507.01750377], [1516965960000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 826.90672991], [1516966080000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 44.6655559], [1516966140000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 960.38027797], [1516966200000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 1104.27393469], [1516966320000, 2.884e-05, 2.884e-05, 2.881e-05, 2.881e-05, 11300.22058303], [1516966380000, 2.881e-05, 2.885e-05, 2.881e-05, 2.885e-05, 3684.80603054], [1516966440000, 2.885e-05, 2.885e-05, 2.881e-05, 2.881e-05, 11806.13316683], [1516966500000, 2.884e-05, 2.886e-05, 2.884e-05, 2.886e-05, 352.89801339], [1516966560000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 201.0], [1516966680000, 2.884e-05, 2.884e-05, 2.88e-05, 2.88e-05, 3149.15951822], [1516966740000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 3615.6097561], [1516966800000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 3495.80557271], [1516966920000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 1902.57814949], [1516966980000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 488.73384148], [1516967040000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 991.78735885], [1516967100000, 2.882e-05, 2.882e-05, 2.875e-05, 2.875e-05, 26849.67238455], [1516967220000, 2.874e-05, 2.875e-05, 2.87e-05, 2.87e-05, 1815.5306475], [1516967280000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 1768.61881022], [1516967340000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 300.21012056], [1516967400000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 158.25139223], [1516967460000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 6011.09641397], [1516967520000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 3192.10814313], [1516967580000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 5594.16804858], [1516967640000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 421.40055071], [1516967760000, 2.876e-05, 2.876e-05, 2.874e-05, 2.874e-05, 840.14535174], [1516967820000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 114.3019107], [1516967880000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 2723.0163477], [1516968060000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 2058.98727915], [1516968120000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 100.61005231], [1516968180000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 39.36396277], [1516968240000, 2.874e-05, 2.879e-05, 2.874e-05, 2.879e-05, 174.36097829], [1516968300000, 2.879e-05, 2.886e-05, 2.879e-05, 2.886e-05, 3620.08114865], [1516968420000, 2.885e-05, 2.886e-05, 2.885e-05, 2.886e-05, 1489.03646564], [1516968480000, 2.885e-05, 2.886e-05, 2.88e-05, 2.88e-05, 1959.62226887], [1516968600000, 2.883e-05, 2.883e-05, 2.87e-05, 2.87e-05, 18310.6220013], [1516968660000, 2.87e-05, 2.87e-05, 2.868e-05, 2.868e-05, 3707.84959476], [1516968720000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 3947.56767073], [1516968840000, 2.868e-05, 2.868e-05, 2.868e-05, 2.868e-05, 33.41058638], [1516968900000, 2.869e-05, 2.886e-05, 2.869e-05, 2.886e-05, 2281.11341811], [1516968960000, 2.869e-05, 2.869e-05, 2.868e-05, 2.869e-05, 7452.77009501], [1516969140000, 2.885e-05, 2.886e-05, 2.885e-05, 2.886e-05, 1935.06289482], [1516969200000, 2.886e-05, 2.886e-05, 2.885e-05, 2.885e-05, 2086.49505394], [1516969260000, 2.885e-05, 2.885e-05, 2.871e-05, 2.871e-05, 156.94430667], [1516969320000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 69.2], [1516969380000, 2.883e-05, 2.884e-05, 2.868e-05, 2.868e-05, 10167.93878637], [1516969500000, 2.868e-05, 2.868e-05, 2.868e-05, 2.868e-05, 250.0], [1516969560000, 2.868e-05, 2.868e-05, 2.858e-05, 2.858e-05, 31538.449582], [1516969620000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 13895.68791544], [1516969800000, 2.864e-05, 2.866e-05, 2.829e-05, 2.829e-05, 16854.24990056], [1516969920000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 1248.76733725], [1516969980000, 2.858e-05, 2.858e-05, 2.858e-05, 2.858e-05, 48.85524795], [1516970040000, 2.857e-05, 2.858e-05, 2.857e-05, 2.858e-05, 400.0], [1516970100000, 2.845e-05, 2.856e-05, 2.845e-05, 2.856e-05, 245.45098039], [1516970220000, 2.854e-05, 2.856e-05, 2.854e-05, 2.856e-05, 258.5203567], [1516970280000, 2.856e-05, 2.856e-05, 2.85e-05, 2.85e-05, 5321.24028538], [1516970340000, 2.85e-05, 2.85e-05, 2.845e-05, 2.845e-05, 4556.19348141], [1516970400000, 2.845e-05, 2.85e-05, 2.845e-05, 2.85e-05, 10432.3912147], [1516970460000, 2.856e-05, 2.856e-05, 2.856e-05, 2.856e-05, 751.70092974], [1516970580000, 2.856e-05, 2.866e-05, 2.856e-05, 2.866e-05, 6720.00737006], [1516970640000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 195.44571662], [1516970700000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 119.7512351], [1516970760000, 2.865e-05, 2.866e-05, 2.865e-05, 2.865e-05, 2032.69904599], [1516970820000, 2.865e-05, 2.868e-05, 2.865e-05, 2.868e-05, 29438.43693563], [1516970880000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 593.40089575], [1516970940000, 2.867e-05, 2.867e-05, 2.867e-05, 2.867e-05, 19.79964868], [1516971000000, 2.866e-05, 2.866e-05, 2.86e-05, 2.86e-05, 7335.839], [1516971060000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 2018.2731606], [1516971120000, 2.866e-05, 2.866e-05, 2.865e-05, 2.865e-05, 4543.75107408], [1516971180000, 2.865e-05, 2.866e-05, 2.865e-05, 2.866e-05, 3439.63803785], [1516971240000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 3272.58149707], [1516971300000, 2.865e-05, 2.868e-05, 2.865e-05, 2.865e-05, 10147.81220559], [1516971360000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 2008.45137924], [1516971420000, 2.865e-05, 2.868e-05, 2.865e-05, 2.868e-05, 48540.79291581], [1516971480000, 2.868e-05, 2.87e-05, 2.867e-05, 2.87e-05, 490.98502659], [1516971540000, 2.87e-05, 2.884e-05, 2.868e-05, 2.868e-05, 1903.42993465], [1516971600000, 2.884e-05, 2.885e-05, 2.881e-05, 2.881e-05, 1830.97773379], [1516971660000, 2.885e-05, 2.886e-05, 2.885e-05, 2.886e-05, 1252.27650807], [1516971720000, 2.886e-05, 2.896e-05, 2.886e-05, 2.896e-05, 609.67976292], [1516971780000, 2.89e-05, 2.899e-05, 2.89e-05, 2.895e-05, 1516.6100477], [1516971840000, 2.894e-05, 2.894e-05, 2.894e-05, 2.894e-05, 328.98590106], [1516971900000, 2.894e-05, 2.894e-05, 2.882e-05, 2.882e-05, 8810.94943658], [1516971960000, 2.87e-05, 2.886e-05, 2.87e-05, 2.886e-05, 7602.81245484], [1516972020000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 1168.563297], [1516972080000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 70.5825], [1516972140000, 2.88e-05, 2.886e-05, 2.88e-05, 2.886e-05, 1195.89960275], [1516972200000, 2.886e-05, 2.886e-05, 2.879e-05, 2.88e-05, 15283.96608957], [1516972260000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 4177.40556802], [1516972320000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 978.07556076], [1516972380000, 2.894e-05, 2.894e-05, 2.883e-05, 2.885e-05, 1038.4614492], [1516972440000, 2.893e-05, 2.894e-05, 2.889e-05, 2.889e-05, 5909.13791971], [1516972500000, 2.895e-05, 2.909e-05, 2.895e-05, 2.909e-05, 2387.14100299], [1516972560000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 117.0], [1516972620000, 2.901e-05, 2.907e-05, 2.901e-05, 2.907e-05, 370.0], [1516972680000, 2.907e-05, 2.908e-05, 2.907e-05, 2.908e-05, 6101.77970731], [1516972740000, 2.908e-05, 2.91e-05, 2.908e-05, 2.908e-05, 2655.76153648], [1516972800000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 39.53112235], [1516972860000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 753.15079113], [1516972920000, 2.91e-05, 2.91e-05, 2.909e-05, 2.909e-05, 1382.38173667], [1516972980000, 2.909e-05, 2.91e-05, 2.909e-05, 2.909e-05, 2807.41194552], [1516973040000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 5340.86758581], [1516973100000, 2.909e-05, 2.918e-05, 2.909e-05, 2.918e-05, 12558.44947818], [1516973160000, 2.918e-05, 2.918e-05, 2.904e-05, 2.904e-05, 52856.21074264], [1516973220000, 2.908e-05, 2.908e-05, 2.903e-05, 2.904e-05, 10259.46716045], [1516973280000, 2.904e-05, 2.919e-05, 2.904e-05, 2.919e-05, 46.06857202], [1516973340000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 191.89592191], [1516973520000, 2.91e-05, 2.91e-05, 2.903e-05, 2.903e-05, 53.2122663], [1516973580000, 2.903e-05, 2.903e-05, 2.903e-05, 2.903e-05, 500.0], [1516973640000, 2.905e-05, 2.91e-05, 2.905e-05, 2.91e-05, 310.57673416], [1516973700000, 2.905e-05, 2.905e-05, 2.905e-05, 2.905e-05, 18.96387833], [1516973760000, 2.905e-05, 2.91e-05, 2.905e-05, 2.91e-05, 7903.03534], [1516973820000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 40.59890262], [1516973880000, 2.909e-05, 2.91e-05, 2.909e-05, 2.91e-05, 1765.4264404], [1516973940000, 2.91e-05, 2.911e-05, 2.91e-05, 2.911e-05, 417.10521163], [1516974000000, 2.912e-05, 2.92e-05, 2.911e-05, 2.92e-05, 9716.18744516], [1516974060000, 2.911e-05, 2.911e-05, 2.911e-05, 2.911e-05, 662.07892707], [1516974240000, 2.911e-05, 2.911e-05, 2.905e-05, 2.905e-05, 6672.77075685], [1516974300000, 2.905e-05, 2.914e-05, 2.905e-05, 2.914e-05, 388.93732465], [1516974360000, 2.919e-05, 2.92e-05, 2.919e-05, 2.92e-05, 2005.30726409], [1516974420000, 2.923e-05, 2.929e-05, 2.92e-05, 2.929e-05, 9006.70116107], [1516974480000, 2.928e-05, 2.929e-05, 2.928e-05, 2.928e-05, 9801.81942322], [1516974540000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 885.46062287], [1516974600000, 2.928e-05, 2.928e-05, 2.906e-05, 2.906e-05, 3266.3678789], [1516974660000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 588.56122934], [1516974720000, 2.909e-05, 2.909e-05, 2.906e-05, 2.906e-05, 8462.38473316], [1516975140000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 921.39924735], [1516975200000, 2.913e-05, 2.913e-05, 2.913e-05, 2.913e-05, 883.163073], [1516975260000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 245.28381407], [1516975320000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 911.09790954], [1516975380000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 548.74378752], [1516975440000, 2.923e-05, 2.923e-05, 2.913e-05, 2.913e-05, 2066.15558506], [1516975500000, 2.913e-05, 2.913e-05, 2.913e-05, 2.913e-05, 38.67276518], [1516975560000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 92.26493122], [1516975620000, 2.924e-05, 2.924e-05, 2.913e-05, 2.913e-05, 3124.63401985], [1516975740000, 2.913e-05, 2.913e-05, 2.913e-05, 2.913e-05, 37.285169], [1516975800000, 2.913e-05, 2.913e-05, 2.913e-05, 2.913e-05, 62.77999915], [1516975980000, 2.914e-05, 2.914e-05, 2.914e-05, 2.914e-05, 3600.0], [1516976040000, 2.914e-05, 2.914e-05, 2.914e-05, 2.914e-05, 1424.49246934], [1516976160000, 2.917e-05, 2.92e-05, 2.917e-05, 2.92e-05, 11016.54413515], [1516976220000, 2.921e-05, 2.925e-05, 2.921e-05, 2.922e-05, 1830.43158613], [1516976280000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 5921.32460212], [1516976340000, 2.924e-05, 2.925e-05, 2.924e-05, 2.925e-05, 3530.61068724], [1516976400000, 2.925e-05, 2.929e-05, 2.925e-05, 2.929e-05, 12588.06341063], [1516976460000, 2.926e-05, 2.926e-05, 2.925e-05, 2.926e-05, 1283.87597019], [1516976520000, 2.926e-05, 2.928e-05, 2.926e-05, 2.928e-05, 7044.52968967], [1516976580000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 1972.19396545], [1516976640000, 2.93e-05, 2.938e-05, 2.93e-05, 2.93e-05, 10698.88204512], [1516976700000, 2.93e-05, 2.94e-05, 2.929e-05, 2.94e-05, 1717.4907876], [1516976760000, 2.941e-05, 2.941e-05, 2.931e-05, 2.931e-05, 2565.67531767], [1516976820000, 2.932e-05, 2.932e-05, 2.929e-05, 2.929e-05, 3362.0532354], [1516976880000, 2.938e-05, 2.938e-05, 2.938e-05, 2.938e-05, 2000.0], [1516976940000, 2.932e-05, 2.932e-05, 2.932e-05, 2.932e-05, 3201.61143864], [1516977000000, 2.932e-05, 2.932e-05, 2.932e-05, 2.932e-05, 677.60638543], [1516977060000, 2.935e-05, 2.938e-05, 2.932e-05, 2.937e-05, 18698.65616856], [1516977120000, 2.938e-05, 2.938e-05, 2.925e-05, 2.925e-05, 22783.37538305], [1516977180000, 2.925e-05, 2.935e-05, 2.925e-05, 2.935e-05, 8754.52278725], [1516977240000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 15665.54950349], [1516977300000, 2.925e-05, 2.93e-05, 2.884e-05, 2.93e-05, 64936.6996874], [1516977360000, 2.927e-05, 2.93e-05, 2.927e-05, 2.93e-05, 33103.61829303], [1516977420000, 2.93e-05, 2.935e-05, 2.93e-05, 2.93e-05, 50441.85613563], [1516977480000, 2.93e-05, 2.936e-05, 2.93e-05, 2.936e-05, 3887.22272035], [1516977540000, 2.936e-05, 2.936e-05, 2.93e-05, 2.936e-05, 4246.79772966], [1516977600000, 2.936e-05, 2.936e-05, 2.936e-05, 2.936e-05, 668.01815233], [1516977660000, 2.936e-05, 2.938e-05, 2.936e-05, 2.938e-05, 5541.30218705], [1516977720000, 2.938e-05, 2.938e-05, 2.936e-05, 2.936e-05, 5024.32495439], [1516977780000, 2.936e-05, 2.936e-05, 2.936e-05, 2.936e-05, 340.59945504], [1516977840000, 2.935e-05, 2.936e-05, 2.935e-05, 2.936e-05, 13495.73751996], [1516977900000, 2.935e-05, 2.936e-05, 2.935e-05, 2.936e-05, 2900.23742114], [1516977960000, 2.936e-05, 2.936e-05, 2.927e-05, 2.927e-05, 756.97250908], [1516978020000, 2.926e-05, 2.927e-05, 2.926e-05, 2.927e-05, 183.73403696], [1516978080000, 2.914e-05, 2.914e-05, 2.909e-05, 2.909e-05, 11804.96201524], [1516978140000, 2.914e-05, 2.915e-05, 2.914e-05, 2.914e-05, 1704.66865162], [1516978260000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 2129.9823919], [1516978440000, 2.934e-05, 2.934e-05, 2.93e-05, 2.93e-05, 601.22369529], [1516978500000, 2.93e-05, 2.93e-05, 2.929e-05, 2.929e-05, 191.4271116], [1516978560000, 2.921e-05, 2.921e-05, 2.92e-05, 2.92e-05, 8171.58152687], [1516978620000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 2107.7900685], [1516978680000, 2.927e-05, 2.927e-05, 2.92e-05, 2.92e-05, 322.73365188], [1516978740000, 2.921e-05, 2.921e-05, 2.92e-05, 2.92e-05, 5857.35500783], [1516978800000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 975.50246886], [1516978860000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 2204.6826556], [1516978920000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 1138.11926923], [1516978980000, 2.924e-05, 2.926e-05, 2.924e-05, 2.926e-05, 584.8237654], [1516979040000, 2.926e-05, 2.926e-05, 2.918e-05, 2.918e-05, 248.18606139], [1516979100000, 2.918e-05, 2.918e-05, 2.917e-05, 2.917e-05, 6165.110312], [1516979160000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 1858.30179789], [1516979220000, 2.914e-05, 2.914e-05, 2.893e-05, 2.893e-05, 3258.92724484], [1516979340000, 2.908e-05, 2.908e-05, 2.893e-05, 2.893e-05, 236.06225299], [1516979400000, 2.893e-05, 2.909e-05, 2.893e-05, 2.909e-05, 2235.06775135], [1516979460000, 2.909e-05, 2.909e-05, 2.909e-05, 2.909e-05, 2029.13792281], [1516979520000, 2.909e-05, 2.917e-05, 2.909e-05, 2.917e-05, 6053.07433306], [1516979640000, 2.917e-05, 2.917e-05, 2.908e-05, 2.908e-05, 6111.414043], [1516979700000, 2.893e-05, 2.913e-05, 2.886e-05, 2.913e-05, 3021.13371303], [1516979760000, 2.89e-05, 2.89e-05, 2.89e-05, 2.89e-05, 41.62629757], [1516979820000, 2.89e-05, 2.89e-05, 2.881e-05, 2.881e-05, 7378.99865729], [1516979880000, 2.881e-05, 2.91e-05, 2.88e-05, 2.883e-05, 10765.99642696], [1516979940000, 2.884e-05, 2.888e-05, 2.884e-05, 2.885e-05, 4275.8168896], [1516980060000, 2.888e-05, 2.899e-05, 2.888e-05, 2.899e-05, 1062.33264904], [1516980120000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 23.23480458], [1516980180000, 2.899e-05, 2.9e-05, 2.899e-05, 2.899e-05, 4426.44928688], [1516980240000, 2.899e-05, 2.9e-05, 2.899e-05, 2.899e-05, 3272.99209099], [1516980300000, 2.899e-05, 2.9e-05, 2.899e-05, 2.899e-05, 33950.10369434], [1516980360000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 3026.57440707], [1516980420000, 2.899e-05, 2.9e-05, 2.899e-05, 2.899e-05, 2590.34364321], [1516980480000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 7704.53383397], [1516980540000, 2.899e-05, 2.899e-05, 2.888e-05, 2.889e-05, 1483.34874532], [1516980600000, 2.888e-05, 2.888e-05, 2.888e-05, 2.888e-05, 7e-08], [1516980660000, 2.882e-05, 2.882e-05, 2.882e-05, 2.882e-05, 1470.45287334], [1516980720000, 2.881e-05, 2.882e-05, 2.88e-05, 2.882e-05, 7621.19167433], [1516980780000, 2.882e-05, 2.889e-05, 2.882e-05, 2.889e-05, 5220.40337753], [1516980840000, 2.889e-05, 2.895e-05, 2.866e-05, 2.866e-05, 17125.7886738], [1516980900000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 342.23134838], [1516980960000, 2.868e-05, 2.868e-05, 2.866e-05, 2.866e-05, 1215.49304373], [1516981020000, 2.866e-05, 2.868e-05, 2.866e-05, 2.868e-05, 2996.65538692], [1516981080000, 2.888e-05, 2.888e-05, 2.868e-05, 2.888e-05, 3003.05920775], [1516981200000, 2.871e-05, 2.871e-05, 2.87e-05, 2.87e-05, 1435.53532736], [1516981260000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 1483.15173057], [1516981320000, 2.871e-05, 2.871e-05, 2.87e-05, 2.87e-05, 4015.58573771], [1516981380000, 2.878e-05, 2.878e-05, 2.87e-05, 2.878e-05, 9096.6817369], [1516981440000, 2.892e-05, 2.892e-05, 2.892e-05, 2.892e-05, 20.0], [1516981560000, 2.892e-05, 2.892e-05, 2.892e-05, 2.892e-05, 359.61272475], [1516981620000, 2.892e-05, 2.892e-05, 2.879e-05, 2.879e-05, 4248.59586296], [1516981680000, 2.879e-05, 2.879e-05, 2.871e-05, 2.872e-05, 13591.41672299], [1516981740000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 1330.71019674], [1516981800000, 2.872e-05, 2.892e-05, 2.872e-05, 2.892e-05, 4522.36083065], [1516981860000, 2.89e-05, 2.89e-05, 2.877e-05, 2.878e-05, 392.32618732], [1516981920000, 2.875e-05, 2.878e-05, 2.875e-05, 2.878e-05, 1424.60110148], [1516981980000, 2.89e-05, 2.891e-05, 2.878e-05, 2.878e-05, 6604.8260013], [1516982040000, 2.876e-05, 2.886e-05, 2.875e-05, 2.886e-05, 10327.12302666], [1516982100000, 2.878e-05, 2.88e-05, 2.878e-05, 2.88e-05, 3283.0080877], [1516982160000, 2.88e-05, 2.88e-05, 2.876e-05, 2.876e-05, 2696.34999803], [1516982220000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 1337.50333103], [1516982280000, 2.875e-05, 2.875e-05, 2.875e-05, 2.875e-05, 932.81471002], [1516982400000, 2.871e-05, 2.871e-05, 2.865e-05, 2.865e-05, 27218.47607892], [1516982460000, 2.86e-05, 2.86e-05, 2.82e-05, 2.82e-05, 49231.20379043], [1516982520000, 2.825e-05, 2.856e-05, 2.811e-05, 2.836e-05, 15272.59015294], [1516982580000, 2.834e-05, 2.834e-05, 2.813e-05, 2.813e-05, 102058.34871589], [1516982640000, 2.817e-05, 2.845e-05, 2.814e-05, 2.842e-05, 18756.21353762], [1516982700000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 554.3617817], [1516982760000, 2.85e-05, 2.85e-05, 2.84e-05, 2.845e-05, 10699.78035161], [1516982820000, 2.843e-05, 2.843e-05, 2.82e-05, 2.833e-05, 11050.38384688], [1516982880000, 2.833e-05, 2.85e-05, 2.816e-05, 2.847e-05, 22551.77241682], [1516982940000, 2.847e-05, 2.847e-05, 2.819e-05, 2.847e-05, 2650.07237759], [1516983000000, 2.847e-05, 2.847e-05, 2.846e-05, 2.846e-05, 1744.91140928], [1516983060000, 2.846e-05, 2.846e-05, 2.822e-05, 2.846e-05, 3781.60837556], [1516983120000, 2.847e-05, 2.847e-05, 2.835e-05, 2.835e-05, 4214.87734252], [1516983180000, 2.845e-05, 2.846e-05, 2.836e-05, 2.845e-05, 5380.85172171], [1516983240000, 2.845e-05, 2.845e-05, 2.837e-05, 2.837e-05, 1298.1476775], [1516983300000, 2.837e-05, 2.837e-05, 2.836e-05, 2.837e-05, 26598.80722985], [1516983360000, 2.837e-05, 2.837e-05, 2.836e-05, 2.836e-05, 3546.77085244], [1516983420000, 2.837e-05, 2.845e-05, 2.837e-05, 2.845e-05, 3047.78869335], [1516983480000, 2.845e-05, 2.845e-05, 2.845e-05, 2.845e-05, 250.0], [1516983540000, 2.846e-05, 2.846e-05, 2.835e-05, 2.845e-05, 18777.4207592], [1516983600000, 2.845e-05, 2.845e-05, 2.836e-05, 2.845e-05, 234.05225051], [1516983660000, 2.836e-05, 2.836e-05, 2.835e-05, 2.835e-05, 16698.48976763], [1516983720000, 2.835e-05, 2.851e-05, 2.835e-05, 2.836e-05, 12529.98541747], [1516983780000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 375.66801917], [1516983840000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 1000.0], [1516983900000, 2.837e-05, 2.849e-05, 2.837e-05, 2.848e-05, 1727.25866572], [1516983960000, 2.848e-05, 2.848e-05, 2.837e-05, 2.848e-05, 2191.99882702], [1516984020000, 2.846e-05, 2.846e-05, 2.846e-05, 2.846e-05, 699.97241655], [1516984080000, 2.846e-05, 2.846e-05, 2.843e-05, 2.843e-05, 36095.45640675], [1516984140000, 2.842e-05, 2.842e-05, 2.836e-05, 2.836e-05, 18866.40656997], [1516984200000, 2.836e-05, 2.847e-05, 2.835e-05, 2.847e-05, 841.09347477], [1516984260000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 3566.52422011], [1516984380000, 2.831e-05, 2.837e-05, 2.831e-05, 2.837e-05, 3691.72740607], [1516984440000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 3663.59229126], [1516984500000, 2.838e-05, 2.843e-05, 2.838e-05, 2.838e-05, 42128.90646756], [1516984560000, 2.843e-05, 2.843e-05, 2.839e-05, 2.839e-05, 3750.26325682], [1516984620000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 1046.46259717], [1516984680000, 2.866e-05, 2.866e-05, 2.84e-05, 2.84e-05, 1639.57392522], [1516984740000, 2.84e-05, 2.84e-05, 2.839e-05, 2.839e-05, 1206.71526609], [1516984800000, 2.84e-05, 2.859e-05, 2.84e-05, 2.859e-05, 135.21126761], [1516984860000, 2.86e-05, 2.864e-05, 2.86e-05, 2.864e-05, 9563.72093509], [1516984920000, 2.86e-05, 2.868e-05, 2.86e-05, 2.864e-05, 15255.91083908], [1516984980000, 2.863e-05, 2.864e-05, 2.863e-05, 2.864e-05, 3303.3676521], [1516985040000, 2.86e-05, 2.861e-05, 2.85e-05, 2.861e-05, 3645.77800507], [1516985100000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 3156.14968418], [1516985160000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 43.0], [1516985220000, 2.85e-05, 2.859e-05, 2.85e-05, 2.859e-05, 2680.79264258], [1516985280000, 2.85e-05, 2.859e-05, 2.849e-05, 2.859e-05, 1870.13180053], [1516985340000, 2.859e-05, 2.859e-05, 2.843e-05, 2.843e-05, 16757.97635941], [1516985400000, 2.849e-05, 2.849e-05, 2.843e-05, 2.843e-05, 23795.71325874], [1516985460000, 2.843e-05, 2.859e-05, 2.843e-05, 2.843e-05, 9892.98965244], [1516985520000, 2.845e-05, 2.845e-05, 2.843e-05, 2.843e-05, 6315.67155364], [1516985580000, 2.857e-05, 2.857e-05, 2.857e-05, 2.857e-05, 67.54923953], [1516985640000, 2.859e-05, 2.867e-05, 2.859e-05, 2.867e-05, 3113.40230236], [1516985700000, 2.864e-05, 2.864e-05, 2.859e-05, 2.859e-05, 763.313401], [1516985760000, 2.859e-05, 2.859e-05, 2.859e-05, 2.859e-05, 1840.98297999], [1516985820000, 2.859e-05, 2.859e-05, 2.859e-05, 2.859e-05, 3211.97491119], [1516985880000, 2.864e-05, 2.868e-05, 2.859e-05, 2.859e-05, 4715.08878076], [1516985940000, 2.859e-05, 2.859e-05, 2.859e-05, 2.859e-05, 1473.0496804], [1516986000000, 2.86e-05, 2.86e-05, 2.859e-05, 2.859e-05, 13783.89983712], [1516986060000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 1947.65219817], [1516986120000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 1290.63974374], [1516986180000, 2.86e-05, 2.86e-05, 2.859e-05, 2.86e-05, 4685.43928974], [1516986300000, 2.861e-05, 2.87e-05, 2.861e-05, 2.87e-05, 6255.14486229], [1516986360000, 2.862e-05, 2.87e-05, 2.862e-05, 2.87e-05, 4122.02231676], [1516986420000, 2.87e-05, 2.872e-05, 2.87e-05, 2.871e-05, 5833.97335928], [1516986480000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 32759.60573807], [1516986540000, 2.872e-05, 2.874e-05, 2.871e-05, 2.874e-05, 476.11311151], [1516986720000, 2.861e-05, 2.87e-05, 2.86e-05, 2.86e-05, 9253.10371566], [1516986780000, 2.87e-05, 2.87e-05, 2.855e-05, 2.855e-05, 15969.29434919], [1516986840000, 2.855e-05, 2.866e-05, 2.846e-05, 2.846e-05, 25730.37249132], [1516986900000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 1820.62777454], [1516986960000, 2.86e-05, 2.861e-05, 2.86e-05, 2.86e-05, 3434.16441556], [1516987020000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 5155.41723673], [1516987080000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 722.0], [1516987140000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 47.142003], [1516987260000, 2.862e-05, 2.862e-05, 2.851e-05, 2.851e-05, 2107.89377487], [1516987380000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 70.6], [1516987440000, 2.86e-05, 2.872e-05, 2.86e-05, 2.872e-05, 227.75526122], [1516987500000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 6309.76529775], [1516987560000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 4500.0], [1516987620000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 1022.43], [1516987680000, 2.86e-05, 2.87e-05, 2.86e-05, 2.87e-05, 6344.31127755], [1516987740000, 2.86e-05, 2.86e-05, 2.852e-05, 2.853e-05, 9839.63624244], [1516987800000, 2.854e-05, 2.855e-05, 2.853e-05, 2.853e-05, 8633.9826916], [1516987920000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 99.17355372], [1516988040000, 2.87e-05, 2.871e-05, 2.86e-05, 2.871e-05, 36107.29443669], [1516988100000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 111.44253644], [1516988160000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 513.03298802], [1516988220000, 2.855e-05, 2.855e-05, 2.853e-05, 2.855e-05, 23450.42703129], [1516988280000, 2.854e-05, 2.855e-05, 2.854e-05, 2.855e-05, 172.22510346], [1516988340000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 58.82092196], [1516988400000, 2.867e-05, 2.867e-05, 2.855e-05, 2.855e-05, 1289.25], [1516988460000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 3538.156234], [1516988580000, 2.855e-05, 2.863e-05, 2.854e-05, 2.863e-05, 7529.0242616], [1516988640000, 2.854e-05, 2.854e-05, 2.85e-05, 2.85e-05, 34643.11912476], [1516988700000, 2.85e-05, 2.86e-05, 2.85e-05, 2.86e-05, 2897.6318915], [1516988760000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 298.287132], [1516988820000, 2.856e-05, 2.856e-05, 2.856e-05, 2.856e-05, 16247.70141], [1516988880000, 2.851e-05, 2.851e-05, 2.85e-05, 2.85e-05, 5153.620249], [1516988940000, 2.85e-05, 2.858e-05, 2.85e-05, 2.858e-05, 13461.03248386], [1516989000000, 2.858e-05, 2.858e-05, 2.858e-05, 2.858e-05, 50.0], [1516989060000, 2.855e-05, 2.855e-05, 2.85e-05, 2.85e-05, 969.4], [1516989120000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 12560.73048958], [1516989180000, 2.855e-05, 2.856e-05, 2.855e-05, 2.856e-05, 5083.39926144], [1516989420000, 2.855e-05, 2.855e-05, 2.85e-05, 2.85e-05, 27585.478486], [1516989480000, 2.85e-05, 2.85e-05, 2.846e-05, 2.846e-05, 16099.77878362], [1516989540000, 2.845e-05, 2.845e-05, 2.841e-05, 2.841e-05, 210.36438732], [1516989600000, 2.852e-05, 2.852e-05, 2.846e-05, 2.846e-05, 223.94280744], [1516989660000, 2.842e-05, 2.842e-05, 2.84e-05, 2.84e-05, 4413.54138121], [1516989840000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 1162.28864458], [1516989900000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 38.732394], [1516989960000, 2.84e-05, 2.84e-05, 2.838e-05, 2.838e-05, 1562.38725103], [1516990020000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 38.732394], [1516990080000, 2.84e-05, 2.846e-05, 2.84e-05, 2.846e-05, 7634.56990599], [1516990200000, 2.85e-05, 2.855e-05, 2.85e-05, 2.855e-05, 2900.1454285], [1516990260000, 2.85e-05, 2.867e-05, 2.85e-05, 2.867e-05, 7853.97249005], [1516990320000, 2.85e-05, 2.863e-05, 2.85e-05, 2.863e-05, 872.34762373], [1516990380000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 38.434661], [1516990440000, 2.852e-05, 2.852e-05, 2.851e-05, 2.851e-05, 1146.11753512], [1516990500000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 30.0], [1516990560000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 4590.29905672], [1516990620000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 150.0], [1516990680000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 1858.0], [1516990740000, 2.86e-05, 2.864e-05, 2.86e-05, 2.864e-05, 96.29600135], [1516990800000, 2.864e-05, 2.864e-05, 2.861e-05, 2.861e-05, 619.59281463], [1516990860000, 2.861e-05, 2.864e-05, 2.861e-05, 2.864e-05, 7709.79178603], [1516990920000, 2.864e-05, 2.871e-05, 2.864e-05, 2.871e-05, 2840.482989], [1516990980000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 12966.32711669], [1516991040000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 851.82295992], [1516991160000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 40.0], [1516991280000, 2.87e-05, 2.872e-05, 2.87e-05, 2.872e-05, 1520.0003098], [1516991340000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 2734.66612466], [1516991400000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 13637.13307151], [1516991460000, 2.866e-05, 2.866e-05, 2.865e-05, 2.865e-05, 6756.0], [1516991520000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 323.36379083], [1516991580000, 2.865e-05, 2.87e-05, 2.865e-05, 2.87e-05, 602.28380609], [1516991640000, 2.87e-05, 2.87e-05, 2.865e-05, 2.865e-05, 3945.11655485], [1516991760000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 3000.0], [1516991820000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 1058.4311238], [1516991880000, 2.88e-05, 2.881e-05, 2.88e-05, 2.881e-05, 139.13798475], [1516991940000, 2.88e-05, 2.88e-05, 2.879e-05, 2.879e-05, 526.83423747], [1516992000000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 1596.81364778], [1516992060000, 2.879e-05, 2.879e-05, 2.866e-05, 2.866e-05, 72.0], [1516992240000, 2.87e-05, 2.87e-05, 2.866e-05, 2.866e-05, 3637.94643555], [1516992300000, 2.865e-05, 2.865e-05, 2.861e-05, 2.861e-05, 1647.52462431], [1516992360000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 3460.83034432], [1516992480000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 637.339371], [1516992600000, 2.865e-05, 2.865e-05, 2.861e-05, 2.861e-05, 2893.62052089], [1516992720000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 1600.62782011], [1516992780000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 273.0], [1516992840000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 238.57101569], [1516992900000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 532.93160211], [1516993080000, 2.869e-05, 2.869e-05, 2.861e-05, 2.861e-05, 2202.72658261], [1516993140000, 2.861e-05, 2.868e-05, 2.86e-05, 2.868e-05, 8328.65714647], [1516993440000, 2.868e-05, 2.869e-05, 2.868e-05, 2.869e-05, 140.7749646], [1516993500000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 27.0], [1516993560000, 2.868e-05, 2.868e-05, 2.868e-05, 2.868e-05, 226.08890759], [1516993620000, 2.868e-05, 2.868e-05, 2.868e-05, 2.868e-05, 144.31145815], [1516993680000, 2.873e-05, 2.873e-05, 2.871e-05, 2.871e-05, 4132.38596473], [1516993740000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 4.1e-07], [1516993800000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 109.69744419], [1516993920000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 346.740638], [1516994040000, 2.86e-05, 2.86e-05, 2.852e-05, 2.852e-05, 47.0], [1516994100000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 1272.89657339], [1516994160000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 349.7545582], [1516994220000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 42.72910814], [1516994280000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 29.49281318], [1516994340000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 14172.71194153], [1516994400000, 2.853e-05, 2.87e-05, 2.846e-05, 2.846e-05, 50137.5410483], [1516994460000, 2.846e-05, 2.846e-05, 2.846e-05, 2.846e-05, 9261.75211785], [1516994520000, 2.846e-05, 2.846e-05, 2.838e-05, 2.838e-05, 2515.25278], [1516994640000, 2.845e-05, 2.845e-05, 2.839e-05, 2.839e-05, 1187.99461197], [1516994700000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 136.55325236], [1516994760000, 2.858e-05, 2.873e-05, 2.858e-05, 2.873e-05, 10534.38797132], [1516994880000, 2.858e-05, 2.858e-05, 2.858e-05, 2.858e-05, 23.3107494], [1516995000000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 1296.01477972], [1516995060000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 203.24427006], [1516995120000, 2.862e-05, 2.862e-05, 2.858e-05, 2.858e-05, 46.2844516], [1516995240000, 2.857e-05, 2.862e-05, 2.857e-05, 2.862e-05, 1493.80986698], [1516995420000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 143.66610756], [1516995600000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 4793.44550501], [1516995660000, 2.871e-05, 2.873e-05, 2.862e-05, 2.873e-05, 4084.95852757], [1516995720000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 1353.98772042], [1516995780000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 453.28724829], [1516995840000, 2.873e-05, 2.873e-05, 2.867e-05, 2.867e-05, 1266.13104624], [1516995960000, 2.874e-05, 2.874e-05, 2.867e-05, 2.867e-05, 2323.32915528], [1516996020000, 2.867e-05, 2.867e-05, 2.867e-05, 2.867e-05, 24.88303134], [1516996080000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 8356.36889676], [1516996140000, 2.864e-05, 2.874e-05, 2.864e-05, 2.864e-05, 689.76841252], [1516996200000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 453.28724829], [1516996260000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 41.0], [1516996440000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 526.53648845], [1516996500000, 2.87e-05, 2.875e-05, 2.87e-05, 2.875e-05, 837.86079391], [1516996560000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 38.09103], [1516996620000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 788.73524551], [1516996740000, 2.868e-05, 2.868e-05, 2.864e-05, 2.864e-05, 5581.88248151], [1516996800000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 200.0], [1516996860000, 2.878e-05, 2.878e-05, 2.878e-05, 2.878e-05, 378.13111418], [1516996920000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 686.50210841], [1516997100000, 2.878e-05, 2.878e-05, 2.867e-05, 2.867e-05, 5065.66507435], [1516997160000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 35.18127083], [1516997220000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 464.322348], [1516997280000, 2.866e-05, 2.866e-05, 2.864e-05, 2.864e-05, 1840.129252], [1516997400000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 300.0], [1516997460000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 187.55371574], [1516997520000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 631.64588094], [1516997580000, 2.864e-05, 2.864e-05, 2.862e-05, 2.862e-05, 4848.6813355], [1516997640000, 2.862e-05, 2.862e-05, 2.86e-05, 2.86e-05, 2070.18553801], [1516997700000, 2.862e-05, 2.874e-05, 2.86e-05, 2.874e-05, 143.96072417], [1516997760000, 2.845e-05, 2.845e-05, 2.845e-05, 2.845e-05, 206.0], [1516997880000, 2.867e-05, 2.867e-05, 2.846e-05, 2.846e-05, 67.062402], [1516998060000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 8618.10229484], [1516998120000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 920.52861425], [1516998180000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 4223.24340404], [1516998240000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 10000.92946038], [1516998360000, 2.841e-05, 2.842e-05, 2.84e-05, 2.842e-05, 15091.13423777], [1516998420000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 321.89266453], [1516998540000, 2.839e-05, 2.839e-05, 2.838e-05, 2.838e-05, 9256.04026545], [1516998600000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 510.0], [1516998660000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 5053.31639778], [1516998780000, 2.841e-05, 2.842e-05, 2.841e-05, 2.842e-05, 392.97882229], [1516998840000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 6044.5583449], [1516998900000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 29.52997272], [1516999080000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 1049.05077842], [1516999140000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 2512.89495882], [1516999200000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 35.0], [1516999260000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 250.0], [1516999320000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 3536.09302142], [1516999440000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 8130.81810961], [1516999500000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 533.56798279], [1516999560000, 2.842e-05, 2.842e-05, 2.84e-05, 2.84e-05, 1226.52176039], [1516999620000, 2.837e-05, 2.837e-05, 2.835e-05, 2.835e-05, 3327.77658292], [1516999680000, 2.835e-05, 2.835e-05, 2.83e-05, 2.83e-05, 11967.17504614], [1516999740000, 2.842e-05, 2.842e-05, 2.83e-05, 2.83e-05, 11349.48151443], [1516999800000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 337.30236931], [1516999860000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 120.0], [1516999920000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 332.63861783], [1517000040000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 615.03796669], [1517000280000, 2.859e-05, 2.86e-05, 2.859e-05, 2.86e-05, 452.779733], [1517000340000, 2.859e-05, 2.861e-05, 2.859e-05, 2.861e-05, 777.22066687], [1517000400000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 4218.0], [1517000460000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 242.98825292], [1517000520000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 37.0022785], [1517000580000, 2.86e-05, 2.861e-05, 2.86e-05, 2.86e-05, 10519.67891903], [1517000640000, 2.86e-05, 2.86e-05, 2.833e-05, 2.833e-05, 3927.90724336], [1517000700000, 2.861e-05, 2.861e-05, 2.86e-05, 2.86e-05, 1823.357587], [1517000760000, 2.859e-05, 2.86e-05, 2.859e-05, 2.86e-05, 5343.764635], [1517000820000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 194.10378992], [1517000940000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 389.34616836], [1517001000000, 2.86e-05, 2.861e-05, 2.86e-05, 2.861e-05, 1124.06523896], [1517001120000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 11750.31131814], [1517001240000, 2.843e-05, 2.843e-05, 2.826e-05, 2.826e-05, 9554.4375592], [1517001360000, 2.828e-05, 2.828e-05, 2.827e-05, 2.827e-05, 4598.6973942], [1517001420000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 2000.0], [1517001480000, 2.828e-05, 2.828e-05, 2.828e-05, 2.828e-05, 39.21489476], [1517001540000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 200.0], [1517001600000, 2.832e-05, 2.843e-05, 2.829e-05, 2.829e-05, 8966.36071003], [1517001660000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 275.21526732], [1517001780000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 950.0], [1517001840000, 2.843e-05, 2.843e-05, 2.829e-05, 2.829e-05, 725.67443188], [1517001900000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 702.09529297], [1517002020000, 2.84e-05, 2.843e-05, 2.84e-05, 2.843e-05, 1351.00797194], [1517002080000, 2.843e-05, 2.844e-05, 2.843e-05, 2.844e-05, 3499.79771867], [1517002140000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 39.11691103], [1517002200000, 2.844e-05, 2.844e-05, 2.825e-05, 2.825e-05, 6102.80250532], [1517002260000, 2.825e-05, 2.849e-05, 2.825e-05, 2.849e-05, 263.25545369], [1517002320000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 35.73810297], [1517002380000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 384.11533428], [1517002440000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 237.03808421], [1517002500000, 2.861e-05, 2.861e-05, 2.848e-05, 2.848e-05, 4403.047483], [1517002560000, 2.856e-05, 2.856e-05, 2.855e-05, 2.855e-05, 288.09497678], [1517002620000, 2.848e-05, 2.854e-05, 2.848e-05, 2.854e-05, 622.46832596], [1517002860000, 2.84e-05, 2.84e-05, 2.83e-05, 2.83e-05, 742.59259259], [1517002980000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 858.29871711], [1517003040000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 1121.0], [1517003160000, 2.84e-05, 2.84e-05, 2.831e-05, 2.831e-05, 5725.41628412], [1517003220000, 2.851e-05, 2.851e-05, 2.85e-05, 2.85e-05, 2354.78096453], [1517003340000, 2.85e-05, 2.85e-05, 2.831e-05, 2.831e-05, 33000.06849878], [1517003520000, 2.832e-05, 2.832e-05, 2.831e-05, 2.831e-05, 790.02686298], [1517003580000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 87.82957094], [1517003640000, 2.85e-05, 2.85e-05, 2.831e-05, 2.831e-05, 4306.87190404], [1517003700000, 2.831e-05, 2.831e-05, 2.828e-05, 2.831e-05, 2491.92900354], [1517003760000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 762.22083204], [1517003880000, 2.832e-05, 2.832e-05, 2.832e-05, 2.832e-05, 1027.55176434], [1517003940000, 2.836e-05, 2.836e-05, 2.836e-05, 2.836e-05, 1000.0], [1517004000000, 2.835e-05, 2.835e-05, 2.832e-05, 2.832e-05, 742.86562507], [1517004300000, 2.835e-05, 2.85e-05, 2.832e-05, 2.832e-05, 761.38126861], [1517004360000, 2.832e-05, 2.833e-05, 2.824e-05, 2.824e-05, 17488.12695851], [1517004420000, 2.824e-05, 2.825e-05, 2.824e-05, 2.825e-05, 3642.16148725], [1517004540000, 2.826e-05, 2.84e-05, 2.826e-05, 2.84e-05, 5024.76], [1517004720000, 2.848e-05, 2.85e-05, 2.848e-05, 2.85e-05, 3297.07899592], [1517004840000, 2.841e-05, 2.85e-05, 2.841e-05, 2.85e-05, 1189.44911522], [1517004900000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 2.4e-07], [1517004960000, 2.85e-05, 2.851e-05, 2.84e-05, 2.84e-05, 15199.8478386], [1517005020000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 301.99965439], [1517005080000, 2.854e-05, 2.866e-05, 2.854e-05, 2.866e-05, 1990.0476852], [1517005140000, 2.866e-05, 2.867e-05, 2.866e-05, 2.867e-05, 1347.94502616], [1517005200000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 20.72896635], [1517005260000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 3576.469], [1517005380000, 2.857e-05, 2.857e-05, 2.857e-05, 2.857e-05, 2856.56560905], [1517005440000, 2.843e-05, 2.856e-05, 2.84e-05, 2.84e-05, 11549.1332786], [1517005560000, 2.854e-05, 2.855e-05, 2.854e-05, 2.855e-05, 2887.70307736], [1517005620000, 2.857e-05, 2.857e-05, 2.857e-05, 2.857e-05, 818.00906502], [1517005680000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 120.11953642], [1517005740000, 2.844e-05, 2.86e-05, 2.84e-05, 2.857e-05, 7206.16947184], [1517005860000, 2.857e-05, 2.857e-05, 2.85e-05, 2.85e-05, 256.29510364], [1517005920000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 130.7893876], [1517005980000, 2.857e-05, 2.857e-05, 2.857e-05, 2.857e-05, 193.13088567], [1517006040000, 2.857e-05, 2.859e-05, 2.85e-05, 2.85e-05, 3074.19280486], [1517006100000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 17.54385965], [1517006160000, 2.85e-05, 2.85e-05, 2.847e-05, 2.847e-05, 375.299563], [1517006340000, 2.846e-05, 2.85e-05, 2.84e-05, 2.85e-05, 2888.0435131], [1517006460000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 1789.76999233], [1517006520000, 2.84e-05, 2.847e-05, 2.84e-05, 2.84e-05, 2456.10367289], [1517006580000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 20.0], [1517006640000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 3193.70005508], [1517006700000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 145.45454544], [1517006760000, 2.846e-05, 2.847e-05, 2.846e-05, 2.847e-05, 1000.0], [1517006820000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 10281.34125522], [1517006880000, 2.841e-05, 2.841e-05, 2.827e-05, 2.827e-05, 16704.51202026], [1517006940000, 2.827e-05, 2.847e-05, 2.826e-05, 2.847e-05, 5522.95996907], [1517007000000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 973.0004079], [1517007060000, 2.845e-05, 2.845e-05, 2.841e-05, 2.841e-05, 3522.4390716], [1517007120000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 582.44076538], [1517007180000, 2.831e-05, 2.841e-05, 2.831e-05, 2.841e-05, 17678.80018363], [1517007240000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 12285.24904353], [1517007300000, 2.831e-05, 2.831e-05, 2.826e-05, 2.826e-05, 36024.8106431], [1517007420000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 450.0], [1517007540000, 2.829e-05, 2.841e-05, 2.829e-05, 2.841e-05, 4515.21719714], [1517007600000, 2.841e-05, 2.841e-05, 2.827e-05, 2.827e-05, 15247.70892893], [1517007660000, 2.841e-05, 2.847e-05, 2.841e-05, 2.847e-05, 4922.28351932], [1517007780000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 351.0], [1517007840000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 44.7], [1517007900000, 2.83e-05, 2.862e-05, 2.83e-05, 2.862e-05, 4002.28066734], [1517008020000, 2.837e-05, 2.858e-05, 2.835e-05, 2.858e-05, 486.45041744], [1517008080000, 2.845e-05, 2.845e-05, 2.845e-05, 2.845e-05, 147.08333619], [1517008140000, 2.845e-05, 2.845e-05, 2.844e-05, 2.844e-05, 1878.27346221], [1517008200000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 2797.40663394], [1517008260000, 2.844e-05, 2.861e-05, 2.844e-05, 2.861e-05, 7804.68101853], [1517008380000, 2.846e-05, 2.861e-05, 2.846e-05, 2.861e-05, 736.69784001], [1517008440000, 2.861e-05, 2.861e-05, 2.835e-05, 2.835e-05, 8627.98251906], [1517008560000, 2.848e-05, 2.86e-05, 2.848e-05, 2.86e-05, 3109.04935444], [1517008620000, 2.861e-05, 2.862e-05, 2.861e-05, 2.862e-05, 8360.2945815], [1517008680000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 530.62463122], [1517008800000, 2.838e-05, 2.862e-05, 2.838e-05, 2.854e-05, 1703.81504089], [1517008860000, 2.854e-05, 2.854e-05, 2.839e-05, 2.839e-05, 5180.51000052], [1517008920000, 2.854e-05, 2.854e-05, 2.854e-05, 2.854e-05, 2000.0], [1517008980000, 2.851e-05, 2.854e-05, 2.851e-05, 2.854e-05, 11352.45558143], [1517009040000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 2351.29444339], [1517009100000, 2.854e-05, 2.855e-05, 2.854e-05, 2.855e-05, 1222.97706111], [1517009160000, 2.854e-05, 2.855e-05, 2.854e-05, 2.854e-05, 11110.4981915], [1517009220000, 2.854e-05, 2.854e-05, 2.854e-05, 2.854e-05, 489.82706212], [1517009280000, 2.854e-05, 2.855e-05, 2.854e-05, 2.855e-05, 2159.475448], [1517009340000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 2285.23053137], [1517009400000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 763.0202998], [1517009520000, 2.86e-05, 2.86e-05, 2.854e-05, 2.86e-05, 3000.834449], [1517009580000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 30.0], [1517009640000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 170.0], [1517009820000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 90.0], [1517009880000, 2.86e-05, 2.862e-05, 2.86e-05, 2.862e-05, 8297.77122249], [1517009940000, 2.863e-05, 2.863e-05, 2.86e-05, 2.86e-05, 1682.24054776], [1517010000000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 1604.594754], [1517010060000, 2.86e-05, 2.863e-05, 2.86e-05, 2.863e-05, 31905.99021311], [1517010120000, 2.863e-05, 2.863e-05, 2.85e-05, 2.85e-05, 30125.12102723], [1517010180000, 2.853e-05, 2.853e-05, 2.853e-05, 2.853e-05, 192.64126972], [1517010240000, 2.853e-05, 2.853e-05, 2.853e-05, 2.853e-05, 37671.77661419], [1517010300000, 2.854e-05, 2.854e-05, 2.854e-05, 2.854e-05, 316.8874701], [1517010360000, 2.854e-05, 2.854e-05, 2.85e-05, 2.85e-05, 16068.5511184], [1517010420000, 2.851e-05, 2.851e-05, 2.842e-05, 2.842e-05, 1065.85673498], [1517010480000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 40313.23576171], [1517010540000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 439.06518913], [1517010600000, 2.839e-05, 2.839e-05, 2.831e-05, 2.831e-05, 4501.58530579], [1517010660000, 2.831e-05, 2.831e-05, 2.83e-05, 2.83e-05, 6617.69791132], [1517010720000, 2.83e-05, 2.83e-05, 2.829e-05, 2.829e-05, 1531.54439699], [1517010780000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 5164.66912936], [1517010900000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 2000.0], [1517010960000, 2.827e-05, 2.827e-05, 2.823e-05, 2.827e-05, 7692.17291205], [1517011020000, 2.837e-05, 2.837e-05, 2.827e-05, 2.827e-05, 169.04869506], [1517011080000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 286.72247328], [1517011140000, 2.828e-05, 2.828e-05, 2.827e-05, 2.827e-05, 4582.00041406], [1517011260000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 961.55750335], [1517011320000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 160.87549808], [1517011380000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 1678.55932955], [1517011440000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 3904.18489426], [1517011500000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 1921.63214723], [1517011560000, 2.827e-05, 2.829e-05, 2.827e-05, 2.827e-05, 1833.25394797], [1517011620000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 12698.06078207], [1517011680000, 2.827e-05, 2.83e-05, 2.827e-05, 2.83e-05, 418.470284], [1517011740000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 2091.595554], [1517011800000, 2.844e-05, 2.844e-05, 2.829e-05, 2.829e-05, 660.16288392], [1517011860000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 895.24080095], [1517011920000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 1249.98686594], [1517011980000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 2168.46270289], [1517012040000, 2.854e-05, 2.854e-05, 2.853e-05, 2.853e-05, 325.9113251], [1517012100000, 2.845e-05, 2.847e-05, 2.845e-05, 2.847e-05, 908.54067259], [1517012160000, 2.847e-05, 2.849e-05, 2.847e-05, 2.848e-05, 13030.83812754], [1517012220000, 2.848e-05, 2.851e-05, 2.848e-05, 2.849e-05, 6421.17702042], [1517012280000, 2.849e-05, 2.858e-05, 2.849e-05, 2.858e-05, 35101.79940032], [1517012340000, 2.858e-05, 2.858e-05, 2.847e-05, 2.847e-05, 6716.22558077], [1517012400000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 1357.66933548], [1517012460000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 1000.0], [1517012520000, 2.859e-05, 2.859e-05, 2.847e-05, 2.847e-05, 7400.89580432], [1517012580000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 637.3249945], [1517012640000, 2.832e-05, 2.832e-05, 2.831e-05, 2.831e-05, 950.15816657], [1517012700000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 656.37763371], [1517012760000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 75.59108821], [1517012820000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 258.95253342], [1517012880000, 2.847e-05, 2.847e-05, 2.831e-05, 2.847e-05, 3134.72825143], [1517013000000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 2160.5], [1517013060000, 2.832e-05, 2.832e-05, 2.832e-05, 2.832e-05, 2158.85110667], [1517013120000, 2.831e-05, 2.832e-05, 2.831e-05, 2.832e-05, 11113.54099941], [1517013180000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 2291.38157348], [1517013300000, 2.832e-05, 2.837e-05, 2.831e-05, 2.837e-05, 2375.09645669], [1517013360000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 862.26439087], [1517013420000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 1674.99800654], [1517013480000, 2.831e-05, 2.831e-05, 2.83e-05, 2.83e-05, 1676.70416974], [1517013540000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 1433.58600982], [1517013660000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 53.75638466], [1517013720000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 421.0], [1517013780000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 900.0], [1517013900000, 2.832e-05, 2.832e-05, 2.832e-05, 2.832e-05, 140.89071107], [1517013960000, 2.832e-05, 2.832e-05, 2.832e-05, 2.832e-05, 4622.18294961], [1517014020000, 2.832e-05, 2.832e-05, 2.832e-05, 2.832e-05, 666.01084323], [1517014080000, 2.831e-05, 2.831e-05, 2.83e-05, 2.83e-05, 6370.26104108], [1517014140000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 10796.80906373], [1517014200000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 70.93559843], [1517014260000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 1861.83213782], [1517014320000, 2.83e-05, 2.831e-05, 2.823e-05, 2.831e-05, 11183.36831887], [1517014380000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 1554.94966443], [1517014500000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 6763.17750324], [1517014560000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 6601.37813492], [1517014620000, 2.832e-05, 2.832e-05, 2.832e-05, 2.832e-05, 2008.36914758], [1517014680000, 2.827e-05, 2.827e-05, 2.823e-05, 2.823e-05, 6712.82126885], [1517014740000, 2.822e-05, 2.823e-05, 2.81e-05, 2.823e-05, 45431.9], [1517014800000, 2.832e-05, 2.833e-05, 2.832e-05, 2.833e-05, 3951.644109], [1517014860000, 2.832e-05, 2.833e-05, 2.832e-05, 2.833e-05, 14846.38242063], [1517014920000, 2.833e-05, 2.856e-05, 2.832e-05, 2.856e-05, 7707.09865415], [1517014980000, 2.847e-05, 2.856e-05, 2.847e-05, 2.856e-05, 4144.61252034], [1517015040000, 2.859e-05, 2.859e-05, 2.856e-05, 2.856e-05, 2452.39868624], [1517015100000, 2.856e-05, 2.859e-05, 2.847e-05, 2.859e-05, 6668.45145982], [1517015340000, 2.857e-05, 2.857e-05, 2.857e-05, 2.857e-05, 4115.37287671], [1517015460000, 2.855e-05, 2.855e-05, 2.848e-05, 2.848e-05, 1373.56407426], [1517015520000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 574.58897543], [1517015700000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 1271.49367372], [1517015760000, 2.853e-05, 2.854e-05, 2.853e-05, 2.854e-05, 91.38591961], [1517015820000, 2.855e-05, 2.857e-05, 2.855e-05, 2.857e-05, 5117.45604855], [1517015880000, 2.856e-05, 2.86e-05, 2.856e-05, 2.86e-05, 7433.80214955], [1517015940000, 2.86e-05, 2.862e-05, 2.85e-05, 2.862e-05, 20079.83046259], [1517016000000, 2.865e-05, 2.865e-05, 2.864e-05, 2.865e-05, 5154.04401458], [1517016060000, 2.864e-05, 2.87e-05, 2.864e-05, 2.87e-05, 5882.68343778], [1517016120000, 2.867e-05, 2.87e-05, 2.867e-05, 2.87e-05, 2646.54250305], [1517016180000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 149.77477477], [1517016240000, 2.871e-05, 2.892e-05, 2.871e-05, 2.892e-05, 6086.33162474], [1517016300000, 2.892e-05, 2.892e-05, 2.871e-05, 2.871e-05, 6309.35904913], [1517016420000, 2.874e-05, 2.892e-05, 2.874e-05, 2.892e-05, 6010.37845813], [1517016480000, 2.893e-05, 2.909e-05, 2.893e-05, 2.909e-05, 46709.68736619], [1517016540000, 2.909e-05, 2.909e-05, 2.851e-05, 2.877e-05, 46007.40694744], [1517016600000, 2.874e-05, 2.874e-05, 2.873e-05, 2.873e-05, 4754.00652268], [1517016660000, 2.873e-05, 2.877e-05, 2.873e-05, 2.877e-05, 555.12281085], [1517016720000, 2.877e-05, 2.877e-05, 2.85e-05, 2.85e-05, 11606.55448077], [1517016780000, 2.851e-05, 2.882e-05, 2.85e-05, 2.882e-05, 8247.1332125], [1517016840000, 2.883e-05, 2.883e-05, 2.851e-05, 2.851e-05, 5677.13359949], [1517016900000, 2.851e-05, 2.871e-05, 2.851e-05, 2.871e-05, 3068.16894864], [1517016960000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 10.15942506], [1517017020000, 2.869e-05, 2.871e-05, 2.869e-05, 2.871e-05, 2610.93547544], [1517017080000, 2.878e-05, 2.878e-05, 2.85e-05, 2.85e-05, 7620.57604585], [1517017140000, 2.843e-05, 2.876e-05, 2.842e-05, 2.876e-05, 9935.47896699], [1517017200000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 6666.13842902], [1517017260000, 2.876e-05, 2.876e-05, 2.847e-05, 2.85e-05, 5802.75811268], [1517017320000, 2.85e-05, 2.85e-05, 2.843e-05, 2.843e-05, 5868.7106372], [1517017380000, 2.844e-05, 2.876e-05, 2.842e-05, 2.876e-05, 14268.653847], [1517017440000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 2151.80463738], [1517017500000, 2.875e-05, 2.877e-05, 2.875e-05, 2.877e-05, 537.92426923], [1517017560000, 2.88e-05, 2.881e-05, 2.846e-05, 2.846e-05, 1517.6538675], [1517017620000, 2.846e-05, 2.846e-05, 2.846e-05, 2.846e-05, 2312.4549544], [1517017680000, 2.851e-05, 2.851e-05, 2.845e-05, 2.845e-05, 738.44729815], [1517017740000, 2.871e-05, 2.871e-05, 2.847e-05, 2.847e-05, 646.76360648], [1517017800000, 2.848e-05, 2.848e-05, 2.847e-05, 2.848e-05, 2703.92853479], [1517017860000, 2.871e-05, 2.876e-05, 2.87e-05, 2.87e-05, 13447.42171224], [1517017920000, 2.869e-05, 2.87e-05, 2.85e-05, 2.85e-05, 4479.1819706], [1517017980000, 2.853e-05, 2.853e-05, 2.847e-05, 2.847e-05, 561.20924597], [1517018040000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 49.59147025], [1517018100000, 2.855e-05, 2.861e-05, 2.855e-05, 2.861e-05, 4695.24824249], [1517018160000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 16278.45314487], [1517018220000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 397.0], [1517018400000, 2.861e-05, 2.867e-05, 2.848e-05, 2.867e-05, 44315.18269059], [1517018460000, 2.862e-05, 2.867e-05, 2.862e-05, 2.867e-05, 1021.69385505], [1517018520000, 2.867e-05, 2.867e-05, 2.862e-05, 2.862e-05, 77103.35985551], [1517018580000, 2.862e-05, 2.867e-05, 2.862e-05, 2.867e-05, 1438.43035573], [1517018640000, 2.867e-05, 2.867e-05, 2.867e-05, 2.867e-05, 17528.83973385], [1517018700000, 2.867e-05, 2.867e-05, 2.867e-05, 2.867e-05, 1879.55844684], [1517018760000, 2.868e-05, 2.868e-05, 2.867e-05, 2.867e-05, 44363.55764967], [1517018820000, 2.861e-05, 2.868e-05, 2.861e-05, 2.868e-05, 10971.68616813], [1517018880000, 2.883e-05, 2.904e-05, 2.883e-05, 2.904e-05, 404.19021622], [1517018940000, 2.901e-05, 2.91e-05, 2.869e-05, 2.91e-05, 20822.01281682], [1517019000000, 2.901e-05, 2.901e-05, 2.875e-05, 2.875e-05, 321.14651833], [1517019060000, 2.877e-05, 2.905e-05, 2.877e-05, 2.905e-05, 4285.56491731], [1517019120000, 2.882e-05, 2.902e-05, 2.882e-05, 2.902e-05, 325.19848034], [1517019180000, 2.902e-05, 2.902e-05, 2.882e-05, 2.884e-05, 4413.72831899], [1517019240000, 2.885e-05, 2.885e-05, 2.885e-05, 2.885e-05, 419.71785219], [1517019300000, 2.886e-05, 2.886e-05, 2.884e-05, 2.885e-05, 7113.51504597], [1517019360000, 2.884e-05, 2.884e-05, 2.875e-05, 2.879e-05, 4971.02377314], [1517019420000, 2.875e-05, 2.879e-05, 2.868e-05, 2.868e-05, 16045.06249688], [1517019480000, 2.868e-05, 2.868e-05, 2.867e-05, 2.868e-05, 1225.02358418], [1517019540000, 2.874e-05, 2.874e-05, 2.869e-05, 2.869e-05, 8794.09625913], [1517019600000, 2.869e-05, 2.87e-05, 2.869e-05, 2.869e-05, 1523.960604], [1517019660000, 2.869e-05, 2.869e-05, 2.848e-05, 2.848e-05, 113326.7336989], [1517019720000, 2.848e-05, 2.848e-05, 2.828e-05, 2.828e-05, 7301.20381365], [1517019780000, 2.828e-05, 2.832e-05, 2.828e-05, 2.829e-05, 10411.02385113], [1517019840000, 2.844e-05, 2.847e-05, 2.814e-05, 2.847e-05, 2052.07934005], [1517019900000, 2.838e-05, 2.838e-05, 2.817e-05, 2.827e-05, 810.30812218], [1517019960000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 401.0], [1517020020000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 532.57732983], [1517020080000, 2.829e-05, 2.829e-05, 2.82e-05, 2.821e-05, 61753.78668745], [1517020140000, 2.823e-05, 2.823e-05, 2.823e-05, 2.823e-05, 4654.28570333], [1517020200000, 2.823e-05, 2.823e-05, 2.823e-05, 2.823e-05, 301.24748949], [1517020320000, 2.842e-05, 2.843e-05, 2.842e-05, 2.843e-05, 419.31636058], [1517020380000, 2.844e-05, 2.846e-05, 2.844e-05, 2.846e-05, 886.44200876], [1517020440000, 2.847e-05, 2.869e-05, 2.847e-05, 2.869e-05, 4210.31376035], [1517020500000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 1466.32367385], [1517020560000, 2.869e-05, 2.869e-05, 2.861e-05, 2.861e-05, 2241.98458331], [1517020620000, 2.865e-05, 2.867e-05, 2.865e-05, 2.867e-05, 8568.86989279], [1517020680000, 2.865e-05, 2.866e-05, 2.865e-05, 2.866e-05, 2196.90215684], [1517020740000, 2.865e-05, 2.865e-05, 2.851e-05, 2.852e-05, 7652.65155752], [1517020800000, 2.842e-05, 2.844e-05, 2.837e-05, 2.837e-05, 5379.85455462], [1517020860000, 2.83e-05, 2.83e-05, 2.825e-05, 2.825e-05, 28574.20020084], [1517020920000, 2.83e-05, 2.83e-05, 2.829e-05, 2.83e-05, 790.06591567], [1517020980000, 2.825e-05, 2.83e-05, 2.825e-05, 2.83e-05, 16120.26409824], [1517021040000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 280.28602866], [1517021100000, 2.84e-05, 2.84e-05, 2.83e-05, 2.83e-05, 8243.62073025], [1517021160000, 2.83e-05, 2.83e-05, 2.825e-05, 2.829e-05, 5506.16137075], [1517021220000, 2.829e-05, 2.829e-05, 2.825e-05, 2.829e-05, 329.61973689], [1517021340000, 2.828e-05, 2.83e-05, 2.828e-05, 2.83e-05, 7934.0033488], [1517021400000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 1243.31383542], [1517021460000, 2.853e-05, 2.853e-05, 2.853e-05, 2.853e-05, 28.4961307], [1517021520000, 2.831e-05, 2.831e-05, 2.825e-05, 2.825e-05, 7924.935761], [1517021580000, 2.841e-05, 2.841e-05, 2.835e-05, 2.835e-05, 12651.74334716], [1517021640000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 175.99437], [1517021700000, 2.841e-05, 2.841e-05, 2.811e-05, 2.813e-05, 25988.39604095], [1517021760000, 2.813e-05, 2.841e-05, 2.813e-05, 2.841e-05, 2951.37870852], [1517021820000, 2.844e-05, 2.845e-05, 2.844e-05, 2.844e-05, 3545.37818603], [1517021880000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 100.0], [1517021940000, 2.843e-05, 2.843e-05, 2.815e-05, 2.815e-05, 1755.02728053], [1517022000000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 35.19887363], [1517022060000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 255.70975763], [1517022120000, 2.841e-05, 2.841e-05, 2.828e-05, 2.828e-05, 1250.3278168], [1517022180000, 2.828e-05, 2.84e-05, 2.826e-05, 2.826e-05, 3383.48627058], [1517022300000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 167.52841217], [1517022360000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 124.5488724], [1517022420000, 2.839e-05, 2.839e-05, 2.826e-05, 2.826e-05, 480.27954267], [1517022480000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 2372.57544487], [1517022600000, 2.824e-05, 2.824e-05, 2.819e-05, 2.819e-05, 177.23183238], [1517022660000, 2.821e-05, 2.824e-05, 2.82e-05, 2.824e-05, 333.44845106], [1517022720000, 2.82e-05, 2.835e-05, 2.82e-05, 2.835e-05, 18540.01784621], [1517022780000, 2.835e-05, 2.839e-05, 2.835e-05, 2.835e-05, 42413.8320683], [1517022840000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 239.83507241], [1517022960000, 2.838e-05, 2.841e-05, 2.838e-05, 2.841e-05, 2633.24808076], [1517023080000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 15873.84091689], [1517023140000, 2.84e-05, 2.841e-05, 2.84e-05, 2.841e-05, 1395.25877316], [1517023200000, 2.841e-05, 2.841e-05, 2.838e-05, 2.838e-05, 137.356574], [1517023260000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 1028.72597082], [1517023320000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 1384.25164814], [1517023440000, 2.836e-05, 2.836e-05, 2.836e-05, 2.836e-05, 18.9651622], [1517023500000, 2.836e-05, 2.868e-05, 2.836e-05, 2.841e-05, 35742.42210895], [1517023560000, 2.867e-05, 2.867e-05, 2.841e-05, 2.841e-05, 1184.93754414], [1517023620000, 2.865e-05, 2.865e-05, 2.864e-05, 2.865e-05, 65949.60569844], [1517023680000, 2.857e-05, 2.857e-05, 2.857e-05, 2.857e-05, 1044.86731844], [1517023740000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 1899.954881], [1517023800000, 2.852e-05, 2.852e-05, 2.851e-05, 2.851e-05, 42630.94118362], [1517023920000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 20.0], [1517024100000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 41.49158044], [1517024160000, 2.849e-05, 2.852e-05, 2.849e-05, 2.852e-05, 6661.00945894], [1517024220000, 2.857e-05, 2.864e-05, 2.853e-05, 2.864e-05, 25873.80936246], [1517024280000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 1970.38060705], [1517024340000, 2.865e-05, 2.866e-05, 2.865e-05, 2.866e-05, 4841.0690144], [1517024400000, 2.866e-05, 2.866e-05, 2.865e-05, 2.865e-05, 1400.00057579], [1517024460000, 2.865e-05, 2.865e-05, 2.852e-05, 2.852e-05, 306.25613348], [1517024520000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 110.69560694], [1517024580000, 2.84e-05, 2.84e-05, 2.837e-05, 2.837e-05, 3896.84858327], [1517024640000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 1884.46046511], [1517024700000, 2.837e-05, 2.838e-05, 2.837e-05, 2.838e-05, 2544.79560815], [1517024760000, 2.837e-05, 2.837e-05, 2.835e-05, 2.835e-05, 23277.00301501], [1517024820000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 491.52973686], [1517024940000, 2.834e-05, 2.834e-05, 2.834e-05, 2.834e-05, 41.00238151], [1517025000000, 2.834e-05, 2.834e-05, 2.833e-05, 2.834e-05, 10299.56812349], [1517025060000, 2.834e-05, 2.834e-05, 2.824e-05, 2.824e-05, 1125.45405448], [1517025120000, 2.824e-05, 2.824e-05, 2.823e-05, 2.823e-05, 14038.516252], [1517025180000, 2.823e-05, 2.823e-05, 2.818e-05, 2.822e-05, 8063.9501526], [1517025240000, 2.819e-05, 2.822e-05, 2.818e-05, 2.819e-05, 1224.57855392], [1517025300000, 2.818e-05, 2.835e-05, 2.818e-05, 2.835e-05, 7615.3796981], [1517025360000, 2.835e-05, 2.835e-05, 2.819e-05, 2.819e-05, 3258.18406426], [1517025420000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 226.27505996], [1517025480000, 2.833e-05, 2.833e-05, 2.833e-05, 2.833e-05, 40.8202621], [1517025540000, 2.833e-05, 2.833e-05, 2.833e-05, 2.833e-05, 1824.27849807], [1517025600000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 2592.2013564], [1517025660000, 2.832e-05, 2.834e-05, 2.825e-05, 2.825e-05, 6290.42083234], [1517025720000, 2.834e-05, 2.835e-05, 2.834e-05, 2.835e-05, 34439.47893069], [1517025780000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 24077.62641076], [1517025900000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 166.5001665], [1517026080000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 12899.79203197], [1517026140000, 2.83e-05, 2.858e-05, 2.825e-05, 2.854e-05, 45645.51509947], [1517026200000, 2.854e-05, 2.854e-05, 2.852e-05, 2.852e-05, 451.89538299], [1517026260000, 2.826e-05, 2.826e-05, 2.819e-05, 2.819e-05, 1124.46839092], [1517026320000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 125.2358115], [1517026380000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 354.24028269], [1517026440000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 208.90017503], [1517026500000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 294.12891382], [1517026560000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 530.7], [1517026620000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 40.316], [1517026680000, 2.842e-05, 2.844e-05, 2.842e-05, 2.844e-05, 151.28302406], [1517026740000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 22.8606517], [1517026800000, 2.843e-05, 2.844e-05, 2.843e-05, 2.844e-05, 1152.65745183], [1517026860000, 2.844e-05, 2.856e-05, 2.844e-05, 2.856e-05, 2647.12968867], [1517026920000, 2.854e-05, 2.855e-05, 2.854e-05, 2.855e-05, 54.31172711], [1517026980000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 296.09531338], [1517027040000, 2.854e-05, 2.857e-05, 2.854e-05, 2.857e-05, 21547.16936209], [1517027160000, 2.846e-05, 2.846e-05, 2.846e-05, 2.846e-05, 552.5295421], [1517027340000, 2.846e-05, 2.846e-05, 2.845e-05, 2.845e-05, 13394.54753325], [1517027400000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 40.02574566], [1517027460000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 1794.72476249], [1517027520000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 35.14938488], [1517027580000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 175.87056], [1517027760000, 2.842e-05, 2.842e-05, 2.835e-05, 2.835e-05, 96.42807503], [1517027820000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 5939.62443009], [1517027880000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 82.35896649], [1517027940000, 2.828e-05, 2.828e-05, 2.828e-05, 2.828e-05, 100.0], [1517028000000, 2.822e-05, 2.828e-05, 2.822e-05, 2.828e-05, 3188.84545748], [1517028120000, 2.819e-05, 2.819e-05, 2.819e-05, 2.819e-05, 6621.27180167], [1517028180000, 2.818e-05, 2.82e-05, 2.818e-05, 2.82e-05, 4207.2525148], [1517028240000, 2.82e-05, 2.825e-05, 2.82e-05, 2.825e-05, 887.63601653], [1517028300000, 2.826e-05, 2.826e-05, 2.825e-05, 2.825e-05, 1610.22173991], [1517028360000, 2.822e-05, 2.825e-05, 2.822e-05, 2.825e-05, 2691.75868775], [1517028420000, 2.825e-05, 2.828e-05, 2.825e-05, 2.828e-05, 9252.21438701], [1517028480000, 2.828e-05, 2.833e-05, 2.828e-05, 2.833e-05, 1384.79288975], [1517028540000, 2.833e-05, 2.842e-05, 2.833e-05, 2.842e-05, 519.11047394], [1517028660000, 2.842e-05, 2.853e-05, 2.817e-05, 2.831e-05, 26166.699565], [1517028720000, 2.842e-05, 2.853e-05, 2.842e-05, 2.852e-05, 18002.2060363], [1517028780000, 2.851e-05, 2.852e-05, 2.851e-05, 2.852e-05, 100.0], [1517028840000, 2.842e-05, 2.851e-05, 2.82e-05, 2.82e-05, 2426.00070707], [1517028900000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 50.01379529], [1517028960000, 2.82e-05, 2.82e-05, 2.816e-05, 2.816e-05, 1893.12243395], [1517029020000, 2.819e-05, 2.819e-05, 2.812e-05, 2.812e-05, 28378.28786811], [1517029200000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 1323.2], [1517029320000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 172.147651], [1517029380000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 73.01809725], [1517029440000, 2.845e-05, 2.845e-05, 2.845e-05, 2.845e-05, 13989.7037722], [1517029500000, 2.845e-05, 2.845e-05, 2.845e-05, 2.845e-05, 801.81815005], [1517029560000, 2.845e-05, 2.845e-05, 2.845e-05, 2.845e-05, 39.03950115], [1517029620000, 2.845e-05, 2.845e-05, 2.841e-05, 2.841e-05, 7471.959442], [1517029680000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 2589.28599539], [1517029740000, 2.841e-05, 2.845e-05, 2.841e-05, 2.845e-05, 851.59680706], [1517029800000, 2.841e-05, 2.841e-05, 2.829e-05, 2.829e-05, 145.97218938], [1517029860000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 23.00379083], [1517029980000, 2.829e-05, 2.843e-05, 2.829e-05, 2.843e-05, 621.12631066], [1517030040000, 2.829e-05, 2.844e-05, 2.829e-05, 2.844e-05, 2746.68832339], [1517030100000, 2.844e-05, 2.844e-05, 2.811e-05, 2.811e-05, 9443.11393928], [1517030160000, 2.844e-05, 2.845e-05, 2.844e-05, 2.845e-05, 348.3], [1517030220000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 120.0], [1517030400000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 1128.40370687], [1517030460000, 2.82e-05, 2.82e-05, 2.813e-05, 2.813e-05, 1824.90273294], [1517030520000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 200.37805927], [1517030580000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 38.28286905], [1517030640000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 11.71713095], [1517030880000, 2.836e-05, 2.871e-05, 2.836e-05, 2.863e-05, 31900.6769815], [1517030940000, 2.827e-05, 2.851e-05, 2.827e-05, 2.851e-05, 391.48598497], [1517031060000, 2.827e-05, 2.827e-05, 2.825e-05, 2.825e-05, 1574.653493], [1517031180000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 16656.27532652], [1517031240000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 35.19887364], [1517031300000, 2.838e-05, 2.838e-05, 2.82e-05, 2.82e-05, 842.22429436], [1517031360000, 2.822e-05, 2.822e-05, 2.822e-05, 2.822e-05, 2344.32939856], [1517031420000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 1100.19505472], [1517031480000, 2.82e-05, 2.821e-05, 2.82e-05, 2.821e-05, 883.98633141], [1517031540000, 2.821e-05, 2.821e-05, 2.82e-05, 2.82e-05, 1621.92512264], [1517031600000, 2.819e-05, 2.82e-05, 2.819e-05, 2.82e-05, 1251.31002281], [1517031720000, 2.82e-05, 2.82e-05, 2.816e-05, 2.818e-05, 16192.28072496], [1517031780000, 2.816e-05, 2.816e-05, 2.806e-05, 2.806e-05, 104641.3420488], [1517031840000, 2.806e-05, 2.82e-05, 2.802e-05, 2.82e-05, 4295.77514233], [1517031960000, 2.82e-05, 2.82e-05, 2.819e-05, 2.819e-05, 96.53457339], [1517032020000, 2.819e-05, 2.819e-05, 2.819e-05, 2.819e-05, 75.29127343], [1517032080000, 2.803e-05, 2.817e-05, 2.803e-05, 2.817e-05, 3335.38445571], [1517032140000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 34.83510638], [1517032200000, 2.804e-05, 2.82e-05, 2.804e-05, 2.82e-05, 1144.0], [1517032260000, 2.819e-05, 2.819e-05, 2.804e-05, 2.804e-05, 287.51596046], [1517032380000, 2.804e-05, 2.804e-05, 2.804e-05, 2.804e-05, 20.0], [1517032440000, 2.807e-05, 2.807e-05, 2.804e-05, 2.804e-05, 788.78958956], [1517032500000, 2.804e-05, 2.804e-05, 2.804e-05, 2.804e-05, 1502.32681491], [1517032560000, 2.804e-05, 2.817e-05, 2.803e-05, 2.817e-05, 4110.91021729], [1517032680000, 2.816e-05, 2.817e-05, 2.816e-05, 2.817e-05, 1340.48257368], [1517032740000, 2.817e-05, 2.817e-05, 2.817e-05, 2.817e-05, 4038.03195549], [1517032800000, 2.817e-05, 2.818e-05, 2.817e-05, 2.818e-05, 2615.08974605], [1517032860000, 2.818e-05, 2.818e-05, 2.818e-05, 2.818e-05, 619.54871515], [1517032920000, 2.817e-05, 2.817e-05, 2.817e-05, 2.817e-05, 2122.01570185], [1517032980000, 2.817e-05, 2.817e-05, 2.817e-05, 2.817e-05, 517.55479954], [1517033040000, 2.819e-05, 2.82e-05, 2.819e-05, 2.82e-05, 363.85249942], [1517033100000, 2.82e-05, 2.82e-05, 2.817e-05, 2.817e-05, 3300.0], [1517033160000, 2.817e-05, 2.82e-05, 2.817e-05, 2.82e-05, 1299.53889176], [1517033220000, 2.82e-05, 2.821e-05, 2.82e-05, 2.821e-05, 1600.0], [1517033280000, 2.817e-05, 2.817e-05, 2.817e-05, 2.817e-05, 16804.17232659], [1517033340000, 2.819e-05, 2.82e-05, 2.807e-05, 2.82e-05, 5714.56499637], [1517033460000, 2.817e-05, 2.818e-05, 2.817e-05, 2.818e-05, 142.44007139], [1517033520000, 2.818e-05, 2.819e-05, 2.818e-05, 2.819e-05, 7840.62122098], [1517033580000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 116.05936669], [1517033640000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 269.24376863], [1517033700000, 2.808e-05, 2.815e-05, 2.808e-05, 2.815e-05, 1385.3196668], [1517033760000, 2.814e-05, 2.814e-05, 2.806e-05, 2.814e-05, 931.16394399], [1517033820000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 1060.12491869], [1517033880000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 74795.61323962], [1517033940000, 2.814e-05, 2.816e-05, 2.814e-05, 2.816e-05, 1134.15868626], [1517034000000, 2.81e-05, 2.814e-05, 2.81e-05, 2.814e-05, 72375.7122758], [1517034060000, 2.81e-05, 2.81e-05, 2.805e-05, 2.806e-05, 74097.743346], [1517034120000, 2.806e-05, 2.814e-05, 2.792e-05, 2.813e-05, 88202.00753686], [1517034180000, 2.793e-05, 2.793e-05, 2.792e-05, 2.792e-05, 2662.69907211], [1517034240000, 2.792e-05, 2.792e-05, 2.791e-05, 2.791e-05, 1711.98322646], [1517034300000, 2.791e-05, 2.797e-05, 2.791e-05, 2.797e-05, 330.18941085], [1517034360000, 2.797e-05, 2.812e-05, 2.797e-05, 2.812e-05, 12972.18250744], [1517034420000, 2.812e-05, 2.812e-05, 2.797e-05, 2.812e-05, 1234.80603706], [1517034540000, 2.811e-05, 2.812e-05, 2.811e-05, 2.812e-05, 2731.14581966], [1517034600000, 2.804e-05, 2.804e-05, 2.798e-05, 2.798e-05, 309.44464921], [1517034720000, 2.809e-05, 2.809e-05, 2.809e-05, 2.809e-05, 2701.05083776], [1517034780000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 5521.32212136], [1517034840000, 2.798e-05, 2.8e-05, 2.791e-05, 2.796e-05, 35880.7206516], [1517034900000, 2.799e-05, 2.799e-05, 2.791e-05, 2.791e-05, 16962.92361276], [1517034960000, 2.792e-05, 2.796e-05, 2.791e-05, 2.796e-05, 603.3364291], [1517035020000, 2.797e-05, 2.797e-05, 2.797e-05, 2.797e-05, 20827.4], [1517035080000, 2.792e-05, 2.797e-05, 2.792e-05, 2.793e-05, 19878.08571882], [1517035140000, 2.797e-05, 2.797e-05, 2.797e-05, 2.797e-05, 388.83735191], [1517035200000, 2.793e-05, 2.793e-05, 2.793e-05, 2.793e-05, 259.66916619], [1517035260000, 2.792e-05, 2.793e-05, 2.788e-05, 2.788e-05, 49495.65268336], [1517035320000, 2.794e-05, 2.795e-05, 2.788e-05, 2.788e-05, 31300.23354459], [1517035380000, 2.788e-05, 2.788e-05, 2.787e-05, 2.787e-05, 6392.79036566], [1517035440000, 2.787e-05, 2.787e-05, 2.786e-05, 2.786e-05, 1720.62447694], [1517035500000, 2.786e-05, 2.786e-05, 2.786e-05, 2.786e-05, 579.34782156], [1517035560000, 2.786e-05, 2.787e-05, 2.785e-05, 2.787e-05, 2666.497], [1517035620000, 2.787e-05, 2.787e-05, 2.784e-05, 2.784e-05, 1441.1363131], [1517035680000, 2.784e-05, 2.784e-05, 2.782e-05, 2.782e-05, 17242.11639048], [1517035740000, 2.782e-05, 2.787e-05, 2.782e-05, 2.787e-05, 2710.04417062], [1517035800000, 2.787e-05, 2.787e-05, 2.787e-05, 2.787e-05, 3569.35131361], [1517035860000, 2.782e-05, 2.787e-05, 2.782e-05, 2.787e-05, 1934.6562097], [1517035920000, 2.787e-05, 2.787e-05, 2.786e-05, 2.787e-05, 2717.61750986], [1517035980000, 2.787e-05, 2.787e-05, 2.787e-05, 2.787e-05, 7178.76520958], [1517036040000, 2.787e-05, 2.789e-05, 2.786e-05, 2.786e-05, 18239.49596539], [1517036100000, 2.786e-05, 2.786e-05, 2.786e-05, 2.786e-05, 987.614756], [1517036160000, 2.786e-05, 2.787e-05, 2.786e-05, 2.787e-05, 4219.49102508], [1517036220000, 2.788e-05, 2.789e-05, 2.788e-05, 2.789e-05, 2873.99733242], [1517036280000, 2.789e-05, 2.795e-05, 2.788e-05, 2.795e-05, 5457.75515938], [1517036340000, 2.794e-05, 2.794e-05, 2.788e-05, 2.788e-05, 8445.08588972], [1517036400000, 2.794e-05, 2.797e-05, 2.788e-05, 2.788e-05, 5704.44831279], [1517036460000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 39.285714], [1517036520000, 2.789e-05, 2.8e-05, 2.789e-05, 2.8e-05, 154.55721595], [1517036580000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 8259.20012863], [1517036640000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 1692.792], [1517036760000, 2.794e-05, 2.799e-05, 2.794e-05, 2.795e-05, 3467.95259622], [1517036820000, 2.795e-05, 2.799e-05, 2.795e-05, 2.799e-05, 2306.897], [1517036880000, 2.799e-05, 2.81e-05, 2.799e-05, 2.81e-05, 14576.38538176], [1517036940000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 488.99961627], [1517037000000, 2.8e-05, 2.8e-05, 2.795e-05, 2.796e-05, 14296.2892732], [1517037120000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 143.35574], [1517037180000, 2.806e-05, 2.81e-05, 2.8e-05, 2.8e-05, 1992.52148683], [1517037240000, 2.8e-05, 2.8e-05, 2.799e-05, 2.799e-05, 6942.26732134], [1517037300000, 2.799e-05, 2.8e-05, 2.799e-05, 2.8e-05, 36753.5564502], [1517037360000, 2.799e-05, 2.8e-05, 2.799e-05, 2.8e-05, 7604.26079982], [1517037420000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 39.92492652], [1517037480000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 50.0], [1517037540000, 2.8e-05, 2.809e-05, 2.8e-05, 2.809e-05, 1989.38546588], [1517037600000, 2.808e-05, 2.808e-05, 2.8e-05, 2.8e-05, 211.42203698], [1517037660000, 2.809e-05, 2.809e-05, 2.8e-05, 2.8e-05, 666.62126112], [1517037720000, 2.801e-05, 2.801e-05, 2.8e-05, 2.8e-05, 10741.07142857], [1517037780000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 2856.97170673], [1517037840000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 2773.47725637], [1517037900000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 4134.57088125], [1517037960000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 2745.5157375], [1517038020000, 2.799e-05, 2.799e-05, 2.798e-05, 2.798e-05, 1275.75799202], [1517038080000, 2.8e-05, 2.8e-05, 2.795e-05, 2.795e-05, 10958.88909107], [1517038140000, 2.795e-05, 2.795e-05, 2.795e-05, 2.795e-05, 1288.58306392], [1517038200000, 2.799e-05, 2.8e-05, 2.799e-05, 2.8e-05, 23475.65], [1517038260000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 1500.0], [1517038320000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 14386.56152475], [1517038380000, 2.799e-05, 2.8e-05, 2.799e-05, 2.8e-05, 2453.4767], [1517038440000, 2.8e-05, 2.8e-05, 2.795e-05, 2.795e-05, 1423.30234731], [1517038500000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 204.4884218], [1517038560000, 2.797e-05, 2.797e-05, 2.795e-05, 2.795e-05, 4829.31734353], [1517038620000, 2.799e-05, 2.8e-05, 2.799e-05, 2.8e-05, 671.40263803], [1517038680000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 17.8125], [1517038740000, 2.795e-05, 2.795e-05, 2.795e-05, 2.795e-05, 80.0], [1517038800000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 150.0], [1517038860000, 2.796e-05, 2.796e-05, 2.795e-05, 2.795e-05, 8502.47004257], [1517038980000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 34.9863382], [1517039040000, 2.8e-05, 2.8e-05, 2.799e-05, 2.8e-05, 9067.3299726], [1517039160000, 2.801e-05, 2.801e-05, 2.8e-05, 2.8e-05, 1157.36930934], [1517039220000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 501.99244526], [1517039280000, 2.804e-05, 2.804e-05, 2.804e-05, 2.804e-05, 999.99999999], [1517039340000, 2.803e-05, 2.804e-05, 2.803e-05, 2.804e-05, 14536.96018983], [1517039400000, 2.804e-05, 2.804e-05, 2.804e-05, 2.804e-05, 2642.93999037], [1517039460000, 2.804e-05, 2.804e-05, 2.8e-05, 2.8e-05, 5500.79774949], [1517039520000, 2.804e-05, 2.805e-05, 2.801e-05, 2.804e-05, 2651.12799574], [1517039580000, 2.801e-05, 2.804e-05, 2.801e-05, 2.801e-05, 10813.69716763], [1517039640000, 2.801e-05, 2.801e-05, 2.782e-05, 2.782e-05, 56852.28915324], [1517039700000, 2.781e-05, 2.782e-05, 2.78e-05, 2.78e-05, 37531.06244078], [1517039820000, 2.793e-05, 2.804e-05, 2.793e-05, 2.804e-05, 97.5885106], [1517039940000, 2.803e-05, 2.806e-05, 2.803e-05, 2.803e-05, 4578.85967637], [1517040060000, 2.802e-05, 2.803e-05, 2.782e-05, 2.782e-05, 872.3867344], [1517040120000, 2.782e-05, 2.782e-05, 2.782e-05, 2.782e-05, 48.02588001], [1517040240000, 2.801e-05, 2.802e-05, 2.801e-05, 2.802e-05, 203.09168223], [1517040300000, 2.802e-05, 2.802e-05, 2.783e-05, 2.783e-05, 315.06572594], [1517040360000, 2.783e-05, 2.783e-05, 2.783e-05, 2.783e-05, 4282.76563513], [1517040420000, 2.783e-05, 2.783e-05, 2.783e-05, 2.783e-05, 57.0], [1517040480000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 19.84606187], [1517040540000, 2.798e-05, 2.798e-05, 2.785e-05, 2.785e-05, 1785.53899213], [1517040600000, 2.785e-05, 2.785e-05, 2.785e-05, 2.785e-05, 1241.589], [1517040660000, 2.785e-05, 2.785e-05, 2.785e-05, 2.785e-05, 0.00098031], [1517040720000, 2.784e-05, 2.785e-05, 2.784e-05, 2.785e-05, 1485.34031639], [1517040780000, 2.785e-05, 2.785e-05, 2.785e-05, 2.785e-05, 478.334], [1517040840000, 2.786e-05, 2.786e-05, 2.785e-05, 2.785e-05, 8193.328], [1517041020000, 2.786e-05, 2.786e-05, 2.785e-05, 2.785e-05, 300.0], [1517041080000, 2.786e-05, 2.786e-05, 2.785e-05, 2.785e-05, 2611.86380204], [1517041140000, 2.785e-05, 2.791e-05, 2.785e-05, 2.791e-05, 10034.10519199], [1517041200000, 2.791e-05, 2.791e-05, 2.785e-05, 2.785e-05, 8847.54524704], [1517041260000, 2.785e-05, 2.791e-05, 2.785e-05, 2.791e-05, 10019.44821211], [1517041320000, 2.785e-05, 2.785e-05, 2.785e-05, 2.785e-05, 6715.68627451], [1517041440000, 2.79e-05, 2.797e-05, 2.79e-05, 2.797e-05, 517.16336945], [1517041500000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 54.69529782], [1517041560000, 2.798e-05, 2.799e-05, 2.798e-05, 2.799e-05, 48.39597305], [1517041620000, 2.8e-05, 2.803e-05, 2.8e-05, 2.803e-05, 10097.06599574], [1517041680000, 2.807e-05, 2.808e-05, 2.807e-05, 2.808e-05, 104.59469706], [1517041740000, 2.808e-05, 2.842e-05, 2.808e-05, 2.842e-05, 6146.14736524], [1517041800000, 2.834e-05, 2.834e-05, 2.834e-05, 2.834e-05, 1520.0233398], [1517041860000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 105.70469799], [1517041920000, 2.82e-05, 2.831e-05, 2.82e-05, 2.82e-05, 1620.84836486], [1517042040000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 1406.22450963], [1517042100000, 2.815e-05, 2.82e-05, 2.815e-05, 2.82e-05, 214.09344536], [1517042160000, 2.819e-05, 2.82e-05, 2.819e-05, 2.82e-05, 2671.05947531], [1517042220000, 2.819e-05, 2.82e-05, 2.819e-05, 2.82e-05, 9471.72582727], [1517042280000, 2.816e-05, 2.817e-05, 2.816e-05, 2.816e-05, 17814.83402685], [1517042340000, 2.818e-05, 2.819e-05, 2.818e-05, 2.819e-05, 34.08997195], [1517042400000, 2.818e-05, 2.823e-05, 2.817e-05, 2.823e-05, 16036.09078907], [1517042520000, 2.817e-05, 2.817e-05, 2.814e-05, 2.815e-05, 8450.45668766], [1517042580000, 2.816e-05, 2.816e-05, 2.816e-05, 2.816e-05, 175.59744186], [1517042700000, 2.816e-05, 2.829e-05, 2.815e-05, 2.815e-05, 7447.23095413], [1517042820000, 2.827e-05, 2.829e-05, 2.827e-05, 2.829e-05, 3819.17105433], [1517042940000, 2.825e-05, 2.829e-05, 2.815e-05, 2.815e-05, 10572.10931666], [1517043000000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 319.14287795], [1517043120000, 2.811e-05, 2.811e-05, 2.811e-05, 2.811e-05, 39.96468843], [1517043180000, 2.812e-05, 2.812e-05, 2.812e-05, 2.812e-05, 476.67552364], [1517043240000, 2.811e-05, 2.811e-05, 2.811e-05, 2.811e-05, 133.19614541], [1517043300000, 2.811e-05, 2.811e-05, 2.811e-05, 2.811e-05, 1724.92840748], [1517043420000, 2.821e-05, 2.822e-05, 2.821e-05, 2.822e-05, 73.69319368], [1517043480000, 2.821e-05, 2.825e-05, 2.821e-05, 2.821e-05, 5986.34467185], [1517043540000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 428.03390545], [1517043600000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 107.82862008], [1517043720000, 2.821e-05, 2.821e-05, 2.812e-05, 2.812e-05, 1130.00089409], [1517043780000, 2.82e-05, 2.821e-05, 2.82e-05, 2.821e-05, 82.31149972], [1517043840000, 2.821e-05, 2.821e-05, 2.82e-05, 2.821e-05, 1327.54453669], [1517043960000, 2.82e-05, 2.82e-05, 2.815e-05, 2.815e-05, 400.9674726], [1517044020000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 250.0], [1517044080000, 2.815e-05, 2.815e-05, 2.812e-05, 2.812e-05, 4798.61540112], [1517044140000, 2.812e-05, 2.812e-05, 2.812e-05, 2.812e-05, 3262.50481413], [1517044200000, 2.812e-05, 2.813e-05, 2.812e-05, 2.813e-05, 632.38462814], [1517044260000, 2.812e-05, 2.813e-05, 2.812e-05, 2.813e-05, 6034.56281218], [1517044320000, 2.813e-05, 2.814e-05, 2.813e-05, 2.814e-05, 316.00156471], [1517044380000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 425.61412622], [1517044440000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 76.52531501], [1517044500000, 2.818e-05, 2.819e-05, 2.818e-05, 2.819e-05, 65.88458656], [1517044560000, 2.819e-05, 2.819e-05, 2.819e-05, 2.819e-05, 32.88821693], [1517044620000, 2.82e-05, 2.82e-05, 2.819e-05, 2.819e-05, 230.541003], [1517044680000, 2.819e-05, 2.82e-05, 2.819e-05, 2.819e-05, 1230.72087532], [1517044740000, 2.819e-05, 2.82e-05, 2.819e-05, 2.82e-05, 809.92062462], [1517044800000, 2.82e-05, 2.825e-05, 2.819e-05, 2.819e-05, 3177.75683263], [1517044860000, 2.825e-05, 2.826e-05, 2.82e-05, 2.82e-05, 6669.78371224], [1517044920000, 2.82e-05, 2.826e-05, 2.82e-05, 2.826e-05, 5493.73413414], [1517044980000, 2.825e-05, 2.825e-05, 2.825e-05, 2.825e-05, 2160.0], [1517045040000, 2.825e-05, 2.825e-05, 2.825e-05, 2.825e-05, 539.69106411], [1517045100000, 2.828e-05, 2.829e-05, 2.828e-05, 2.829e-05, 2123.5797908], [1517045160000, 2.829e-05, 2.829e-05, 2.825e-05, 2.825e-05, 2805.40733136], [1517045220000, 2.828e-05, 2.829e-05, 2.828e-05, 2.829e-05, 1341.0], [1517045280000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 2560.5920064], [1517045340000, 2.827e-05, 2.827e-05, 2.826e-05, 2.826e-05, 1159.50099915], [1517045400000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 529.646], [1517045460000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 708.63601479], [1517045520000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 184.82911435], [1517045580000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 388.7691936], [1517045640000, 2.827e-05, 2.827e-05, 2.826e-05, 2.826e-05, 311.87251731], [1517045700000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 660.01419322], [1517045760000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 316.97564597], [1517045820000, 2.822e-05, 2.823e-05, 2.822e-05, 2.823e-05, 2861.84424341], [1517045880000, 2.824e-05, 2.825e-05, 2.824e-05, 2.825e-05, 67.68745882], [1517045940000, 2.824e-05, 2.824e-05, 2.823e-05, 2.823e-05, 1556.86007738], [1517046060000, 2.824e-05, 2.824e-05, 2.823e-05, 2.823e-05, 1573.46849484], [1517046120000, 2.823e-05, 2.829e-05, 2.823e-05, 2.824e-05, 3355.43215939], [1517046180000, 2.828e-05, 2.829e-05, 2.828e-05, 2.829e-05, 2630.0], [1517046240000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 90.56587752], [1517046360000, 2.828e-05, 2.828e-05, 2.824e-05, 2.824e-05, 92.25365529], [1517046420000, 2.824e-05, 2.824e-05, 2.82e-05, 2.82e-05, 4494.79264683], [1517046480000, 2.821e-05, 2.827e-05, 2.82e-05, 2.827e-05, 14875.40923212], [1517046540000, 2.826e-05, 2.826e-05, 2.813e-05, 2.813e-05, 709.764342], [1517046600000, 2.813e-05, 2.813e-05, 2.812e-05, 2.813e-05, 3129.9874614], [1517046660000, 2.823e-05, 2.823e-05, 2.813e-05, 2.813e-05, 8409.86922338], [1517046720000, 2.812e-05, 2.812e-05, 2.811e-05, 2.811e-05, 22555.02779041], [1517046780000, 2.809e-05, 2.819e-05, 2.805e-05, 2.819e-05, 18180.41312833], [1517046840000, 2.816e-05, 2.817e-05, 2.816e-05, 2.817e-05, 530.0], [1517046900000, 2.803e-05, 2.803e-05, 2.803e-05, 2.803e-05, 315.34354223], [1517046960000, 2.803e-05, 2.805e-05, 2.802e-05, 2.805e-05, 1619.19375507], [1517047020000, 2.805e-05, 2.816e-05, 2.805e-05, 2.816e-05, 994.669916], [1517047080000, 2.821e-05, 2.822e-05, 2.821e-05, 2.822e-05, 131.54867134], [1517047140000, 2.821e-05, 2.821e-05, 2.805e-05, 2.807e-05, 2123.82412353], [1517047200000, 2.803e-05, 2.803e-05, 2.802e-05, 2.802e-05, 1070.255413], [1517047260000, 2.802e-05, 2.802e-05, 2.802e-05, 2.802e-05, 1700.0], [1517047320000, 2.802e-05, 2.802e-05, 2.798e-05, 2.798e-05, 745.84625141], [1517047380000, 2.798e-05, 2.799e-05, 2.792e-05, 2.798e-05, 47072.03487399], [1517047440000, 2.798e-05, 2.798e-05, 2.79e-05, 2.79e-05, 7129.42840385], [1517047500000, 2.788e-05, 2.797e-05, 2.784e-05, 2.797e-05, 3716.57510815], [1517047620000, 2.796e-05, 2.796e-05, 2.796e-05, 2.796e-05, 59.38632706], [1517047680000, 2.796e-05, 2.796e-05, 2.785e-05, 2.785e-05, 2447.92131367], [1517047740000, 2.787e-05, 2.787e-05, 2.785e-05, 2.785e-05, 2500.0], [1517047800000, 2.785e-05, 2.797e-05, 2.785e-05, 2.797e-05, 1268.06864512], [1517047920000, 2.798e-05, 2.798e-05, 2.797e-05, 2.797e-05, 870.71517077], [1517047980000, 2.797e-05, 2.797e-05, 2.797e-05, 2.797e-05, 191.75479685], [1517048160000, 2.797e-05, 2.797e-05, 2.797e-05, 2.797e-05, 56.00415485], [1517048280000, 2.8e-05, 2.8e-05, 2.797e-05, 2.797e-05, 11747.58551078], [1517048400000, 2.8e-05, 2.805e-05, 2.8e-05, 2.805e-05, 599.69286302], [1517048460000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 3196.45591901], [1517048520000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 39.215686], [1517048580000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 200.0], [1517048640000, 2.804e-05, 2.804e-05, 2.8e-05, 2.8e-05, 402.6496319], [1517048700000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 41.98513125], [1517048760000, 2.8e-05, 2.805e-05, 2.8e-05, 2.805e-05, 661.1328562], [1517048820000, 2.804e-05, 2.806e-05, 2.804e-05, 2.806e-05, 423.15218874], [1517048880000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 422.37634708], [1517049060000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 776.58990948], [1517049120000, 2.804e-05, 2.804e-05, 2.804e-05, 2.804e-05, 26.02591462], [1517049180000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 44.66825222], [1517049240000, 2.803e-05, 2.805e-05, 2.803e-05, 2.805e-05, 52.231316], [1517049300000, 2.803e-05, 2.803e-05, 2.803e-05, 2.803e-05, 699.42547819], [1517049360000, 2.802e-05, 2.822e-05, 2.802e-05, 2.822e-05, 93017.89147098], [1517049420000, 2.822e-05, 2.822e-05, 2.808e-05, 2.808e-05, 13365.82506634], [1517049480000, 2.82e-05, 2.821e-05, 2.818e-05, 2.818e-05, 2881.14392199], [1517049540000, 2.818e-05, 2.818e-05, 2.818e-05, 2.818e-05, 1192.29698797], [1517049720000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 102.64191829], [1517049840000, 2.814e-05, 2.814e-05, 2.813e-05, 2.814e-05, 146.56790279], [1517049960000, 2.814e-05, 2.814e-05, 2.807e-05, 2.807e-05, 293.58563366], [1517050020000, 2.813e-05, 2.814e-05, 2.813e-05, 2.814e-05, 2238.9857509], [1517050080000, 2.81e-05, 2.814e-05, 2.807e-05, 2.814e-05, 1551.47444549], [1517050200000, 2.813e-05, 2.814e-05, 2.813e-05, 2.814e-05, 48.61584489], [1517050260000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 3641.00316924], [1517050320000, 2.815e-05, 2.825e-05, 2.798e-05, 2.825e-05, 2198.97221603], [1517050380000, 2.804e-05, 2.804e-05, 2.803e-05, 2.803e-05, 1209.4497342], [1517050440000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 30.65919757], [1517050500000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 1661.97786553], [1517050560000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 30.72610182], [1517050620000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 30.81151346], [1517050680000, 2.814e-05, 2.822e-05, 2.814e-05, 2.822e-05, 349.8951926], [1517050800000, 2.82e-05, 2.82e-05, 2.813e-05, 2.813e-05, 3573.82296279], [1517050860000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 2637.4253565], [1517050920000, 2.822e-05, 2.823e-05, 2.813e-05, 2.813e-05, 1268.64224212], [1517050980000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 331.60241132], [1517051040000, 2.82e-05, 2.823e-05, 2.82e-05, 2.823e-05, 10505.13276161], [1517051100000, 2.821e-05, 2.823e-05, 2.821e-05, 2.823e-05, 687.58936703], [1517051160000, 2.821e-05, 2.824e-05, 2.805e-05, 2.824e-05, 2867.06287774], [1517051280000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 1265.44743814], [1517051400000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 3622.32641033], [1517051520000, 2.807e-05, 2.807e-05, 2.806e-05, 2.806e-05, 2471.0638424], [1517051580000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 1964.20978537], [1517051640000, 2.806e-05, 2.806e-05, 2.805e-05, 2.805e-05, 530.50905612], [1517051760000, 2.806e-05, 2.806e-05, 2.805e-05, 2.806e-05, 1101.79766579], [1517051820000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 79.72649006], [1517051880000, 2.816e-05, 2.826e-05, 2.816e-05, 2.826e-05, 3117.76061], [1517051940000, 2.826e-05, 2.829e-05, 2.826e-05, 2.829e-05, 20865.79868736], [1517052000000, 2.829e-05, 2.829e-05, 2.828e-05, 2.829e-05, 3907.88703517], [1517052060000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 8035.97635737], [1517052120000, 2.828e-05, 2.829e-05, 2.828e-05, 2.829e-05, 33222.57594141], [1517052180000, 2.828e-05, 2.829e-05, 2.824e-05, 2.824e-05, 2900.02929644], [1517052240000, 2.817e-05, 2.817e-05, 2.816e-05, 2.817e-05, 1132.89681384], [1517052300000, 2.817e-05, 2.817e-05, 2.817e-05, 2.817e-05, 2192.800258], [1517052360000, 2.817e-05, 2.817e-05, 2.816e-05, 2.817e-05, 2244.79273991], [1517052420000, 2.816e-05, 2.816e-05, 2.816e-05, 2.816e-05, 950.84731257], [1517052480000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 828.18723208], [1517052540000, 2.814e-05, 2.816e-05, 2.814e-05, 2.816e-05, 1173.18292412], [1517052600000, 2.816e-05, 2.817e-05, 2.816e-05, 2.817e-05, 18285.7068537], [1517052660000, 2.817e-05, 2.817e-05, 2.816e-05, 2.816e-05, 577.82933241], [1517052720000, 2.813e-05, 2.813e-05, 2.808e-05, 2.808e-05, 5085.40102156], [1517052780000, 2.809e-05, 2.816e-05, 2.809e-05, 2.816e-05, 21613.41104376], [1517052900000, 2.809e-05, 2.809e-05, 2.809e-05, 2.809e-05, 2588.28060342], [1517052960000, 2.808e-05, 2.809e-05, 2.807e-05, 2.809e-05, 9665.11078945], [1517053020000, 2.809e-05, 2.809e-05, 2.809e-05, 2.809e-05, 257.55637286], [1517053080000, 2.809e-05, 2.809e-05, 2.805e-05, 2.805e-05, 8007.61473243], [1517053140000, 2.814e-05, 2.816e-05, 2.814e-05, 2.816e-05, 990.43294681], [1517053200000, 2.805e-05, 2.816e-05, 2.805e-05, 2.816e-05, 15128.05796499], [1517053260000, 2.815e-05, 2.816e-05, 2.815e-05, 2.816e-05, 167.37195819], [1517053380000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 1700.1427171], [1517053440000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 937.6501927], [1517053500000, 2.808e-05, 2.815e-05, 2.808e-05, 2.815e-05, 3016.59185702], [1517053560000, 2.814e-05, 2.815e-05, 2.814e-05, 2.814e-05, 1722.85945969], [1517053620000, 2.814e-05, 2.817e-05, 2.814e-05, 2.817e-05, 14068.38916848], [1517053680000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 336.48697206], [1517053740000, 2.811e-05, 2.811e-05, 2.811e-05, 2.811e-05, 1109.83834784], [1517053800000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 1900.16777527], [1517053860000, 2.813e-05, 2.815e-05, 2.811e-05, 2.815e-05, 1938.50502856], [1517053920000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 666.41380792], [1517053980000, 2.816e-05, 2.829e-05, 2.815e-05, 2.815e-05, 8977.50979915], [1517054040000, 2.828e-05, 2.828e-05, 2.815e-05, 2.815e-05, 1960.501003], [1517054100000, 2.815e-05, 2.828e-05, 2.815e-05, 2.828e-05, 171.0642735], [1517054160000, 2.828e-05, 2.833e-05, 2.827e-05, 2.833e-05, 1782.3547133], [1517054400000, 2.833e-05, 2.835e-05, 2.809e-05, 2.835e-05, 31788.29912512], [1517054460000, 2.833e-05, 2.833e-05, 2.833e-05, 2.833e-05, 24.68410516], [1517054520000, 2.832e-05, 2.833e-05, 2.832e-05, 2.833e-05, 2121.96914046], [1517054580000, 2.833e-05, 2.833e-05, 2.832e-05, 2.832e-05, 2281.59380613], [1517054640000, 2.832e-05, 2.832e-05, 2.832e-05, 2.832e-05, 358.93754486], [1517054700000, 2.832e-05, 2.833e-05, 2.832e-05, 2.833e-05, 664.95348838], [1517054760000, 2.833e-05, 2.844e-05, 2.832e-05, 2.844e-05, 9843.50583934], [1517054820000, 2.841e-05, 2.844e-05, 2.841e-05, 2.844e-05, 2118.42316493], [1517054880000, 2.844e-05, 2.844e-05, 2.832e-05, 2.832e-05, 3243.81798833], [1517054940000, 2.832e-05, 2.842e-05, 2.83e-05, 2.83e-05, 3706.23191302], [1517055000000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 35.04842816], [1517055120000, 2.814e-05, 2.829e-05, 2.811e-05, 2.811e-05, 8892.26887532], [1517055180000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 91.60432251], [1517055300000, 2.815e-05, 2.815e-05, 2.814e-05, 2.814e-05, 1222.42695956], [1517055360000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 35.14903339], [1517055420000, 2.815e-05, 2.815e-05, 2.814e-05, 2.814e-05, 266.83118712], [1517055480000, 2.815e-05, 2.815e-05, 2.814e-05, 2.814e-05, 1277.03178541], [1517055540000, 2.815e-05, 2.815e-05, 2.814e-05, 2.814e-05, 3880.17251247], [1517055600000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 81.64530349], [1517055660000, 2.825e-05, 2.828e-05, 2.825e-05, 2.828e-05, 546.31053067], [1517055720000, 2.828e-05, 2.836e-05, 2.828e-05, 2.836e-05, 408.45520332], [1517055780000, 2.84e-05, 2.842e-05, 2.84e-05, 2.842e-05, 78.80521558], [1517055840000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 80.02570008], [1517055900000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 300.0], [1517055960000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 38.12316715], [1517056020000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 78.80960538], [1517056080000, 2.826e-05, 2.843e-05, 2.8e-05, 2.8e-05, 97039.44495427], [1517056200000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 28.74692889], [1517056260000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 39.96468843], [1517056320000, 2.814e-05, 2.814e-05, 2.813e-05, 2.813e-05, 237.82154477], [1517056380000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 116.65324728], [1517056440000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 3763.12424989], [1517056500000, 2.83e-05, 2.841e-05, 2.83e-05, 2.841e-05, 3674.76996469], [1517056560000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 261.11575105], [1517056620000, 2.838e-05, 2.84e-05, 2.838e-05, 2.84e-05, 12439.59643106], [1517056680000, 2.84e-05, 2.84e-05, 2.839e-05, 2.84e-05, 118.56365091], [1517056740000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 342.92691362], [1517056800000, 2.84e-05, 2.841e-05, 2.84e-05, 2.841e-05, 1074.26744121], [1517056860000, 2.842e-05, 2.843e-05, 2.842e-05, 2.843e-05, 53.19593492], [1517056920000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 192.27557051], [1517056980000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 28.54993514], [1517057040000, 2.842e-05, 2.851e-05, 2.842e-05, 2.849e-05, 9392.15517661], [1517057100000, 2.849e-05, 2.851e-05, 2.849e-05, 2.851e-05, 730.78163128], [1517057160000, 2.849e-05, 2.852e-05, 2.849e-05, 2.852e-05, 8377.2030715], [1517057280000, 2.859e-05, 2.859e-05, 2.849e-05, 2.849e-05, 2575.55257921], [1517057340000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 50.14326647], [1517057460000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 702.16981238], [1517057520000, 2.85e-05, 2.85e-05, 2.849e-05, 2.849e-05, 440.23584997], [1517057580000, 2.849e-05, 2.85e-05, 2.841e-05, 2.841e-05, 7267.12437509], [1517057640000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 4881.25801412], [1517057700000, 2.84e-05, 2.841e-05, 2.816e-05, 2.841e-05, 6717.93338059], [1517057760000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 591.64654329], [1517057940000, 2.841e-05, 2.841e-05, 2.84e-05, 2.84e-05, 426.34896873], [1517058000000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 977.34938476], [1517058060000, 2.821e-05, 2.842e-05, 2.821e-05, 2.842e-05, 3821.61701218], [1517058120000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 167.99999999], [1517058180000, 2.821e-05, 2.822e-05, 2.821e-05, 2.821e-05, 990.55905072], [1517058240000, 2.823e-05, 2.823e-05, 2.821e-05, 2.821e-05, 1000.365535], [1517058300000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 2356.72444216], [1517058360000, 2.816e-05, 2.82e-05, 2.816e-05, 2.82e-05, 218.18668205], [1517058480000, 2.821e-05, 2.838e-05, 2.821e-05, 2.838e-05, 376.37585853], [1517058540000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 1418.91891892], [1517058780000, 2.833e-05, 2.833e-05, 2.833e-05, 2.833e-05, 124.69426], [1517058900000, 2.822e-05, 2.822e-05, 2.815e-05, 2.815e-05, 21063.36466833], [1517058960000, 2.828e-05, 2.828e-05, 2.815e-05, 2.815e-05, 2552.95491289], [1517059020000, 2.814e-05, 2.814e-05, 2.81e-05, 2.812e-05, 2263.51589744], [1517059080000, 2.812e-05, 2.812e-05, 2.811e-05, 2.812e-05, 772.28639155], [1517059140000, 2.812e-05, 2.812e-05, 2.81e-05, 2.811e-05, 15294.04260744], [1517059200000, 2.81e-05, 2.81e-05, 2.809e-05, 2.81e-05, 4186.3762044], [1517059260000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 6188.16866241], [1517059320000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 70.55087261], [1517059380000, 2.812e-05, 2.812e-05, 2.812e-05, 2.812e-05, 200.0], [1517059440000, 2.812e-05, 2.812e-05, 2.81e-05, 2.812e-05, 2497.0739234], [1517059500000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 754.08864675], [1517059560000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 1188.24285273], [1517059620000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 7075.4872843], [1517059680000, 2.806e-05, 2.808e-05, 2.806e-05, 2.808e-05, 7930.18224317], [1517059740000, 2.807e-05, 2.808e-05, 2.807e-05, 2.808e-05, 8228.9311905], [1517059800000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 3957.98219908], [1517059860000, 2.806e-05, 2.808e-05, 2.806e-05, 2.808e-05, 95541.58160365], [1517059920000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 11389.99348838], [1517059980000, 2.809e-05, 2.809e-05, 2.809e-05, 2.809e-05, 2476.92338308], [1517060040000, 2.809e-05, 2.812e-05, 2.809e-05, 2.812e-05, 1687.98309804], [1517060100000, 2.809e-05, 2.809e-05, 2.809e-05, 2.809e-05, 7539.5190361], [1517060160000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 27.49993167], [1517060220000, 2.809e-05, 2.809e-05, 2.809e-05, 2.809e-05, 1509.8264624], [1517060280000, 2.811e-05, 2.829e-05, 2.811e-05, 2.829e-05, 2838.84738527], [1517060340000, 2.828e-05, 2.829e-05, 2.827e-05, 2.827e-05, 3026.73384025], [1517060400000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 185.64938831], [1517060520000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 285.8901561], [1517060580000, 2.826e-05, 2.828e-05, 2.826e-05, 2.828e-05, 3684.51986825], [1517060640000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 4498.4146354], [1517060700000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 191.43650446], [1517060760000, 2.828e-05, 2.829e-05, 2.827e-05, 2.828e-05, 301.21188254], [1517060880000, 2.828e-05, 2.829e-05, 2.828e-05, 2.828e-05, 149.01164868], [1517061000000, 2.828e-05, 2.829e-05, 2.828e-05, 2.829e-05, 2039.03798185], [1517061060000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 1837.98881096], [1517061180000, 2.83e-05, 2.831e-05, 2.83e-05, 2.831e-05, 112.33762149], [1517061240000, 2.832e-05, 2.832e-05, 2.832e-05, 2.832e-05, 1843.5325606], [1517061300000, 2.833e-05, 2.835e-05, 2.833e-05, 2.835e-05, 418.82380614], [1517061360000, 2.835e-05, 2.835e-05, 2.833e-05, 2.835e-05, 9655.17360473], [1517061480000, 2.835e-05, 2.835e-05, 2.833e-05, 2.834e-05, 7071.47905885], [1517061540000, 2.835e-05, 2.835e-05, 2.833e-05, 2.835e-05, 8202.32369237], [1517061600000, 2.836e-05, 2.836e-05, 2.836e-05, 2.836e-05, 54.89969258], [1517061660000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 36.0], [1517061720000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 245.00853154], [1517061840000, 2.838e-05, 2.848e-05, 2.838e-05, 2.848e-05, 3265.61935103], [1517061900000, 2.847e-05, 2.849e-05, 2.847e-05, 2.847e-05, 1177.51784345], [1517061960000, 2.85e-05, 2.85e-05, 2.847e-05, 2.847e-05, 1083.00884455], [1517062020000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 613.81601607], [1517062080000, 2.858e-05, 2.859e-05, 2.858e-05, 2.859e-05, 3681.41866551], [1517062140000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 137.83972739], [1517062200000, 2.86e-05, 2.877e-05, 2.86e-05, 2.875e-05, 2700.72986137], [1517062260000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 137.75452194], [1517062320000, 2.865e-05, 2.876e-05, 2.865e-05, 2.874e-05, 2114.35051356], [1517062380000, 2.873e-05, 2.874e-05, 2.873e-05, 2.873e-05, 1831.95202953], [1517062440000, 2.865e-05, 2.874e-05, 2.865e-05, 2.865e-05, 4884.45613803], [1517062500000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 1347.613705], [1517062560000, 2.861e-05, 2.861e-05, 2.851e-05, 2.851e-05, 6746.71203839], [1517062620000, 2.851e-05, 2.86e-05, 2.833e-05, 2.859e-05, 16641.22670766], [1517062680000, 2.833e-05, 2.861e-05, 2.833e-05, 2.861e-05, 6998.5824499], [1517062740000, 2.833e-05, 2.833e-05, 2.833e-05, 2.833e-05, 118.63622129], [1517062800000, 2.857e-05, 2.859e-05, 2.857e-05, 2.859e-05, 2000.0], [1517062860000, 2.858e-05, 2.858e-05, 2.858e-05, 2.858e-05, 38.488453], [1517062920000, 2.853e-05, 2.856e-05, 2.853e-05, 2.856e-05, 750.35767823], [1517063100000, 2.853e-05, 2.856e-05, 2.853e-05, 2.856e-05, 1634.77790117], [1517063160000, 2.854e-05, 2.854e-05, 2.854e-05, 2.854e-05, 38.542397], [1517063220000, 2.838e-05, 2.841e-05, 2.838e-05, 2.838e-05, 917.93739822], [1517063280000, 2.854e-05, 2.857e-05, 2.854e-05, 2.857e-05, 908.65769959], [1517063340000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 2525.16274986], [1517063460000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 555.9420625], [1517063580000, 2.843e-05, 2.849e-05, 2.843e-05, 2.849e-05, 672.91623348], [1517063640000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 935.29874462], [1517063700000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 374.0], [1517063760000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 1512.66547434], [1517063820000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 235.76520215], [1517063880000, 2.848e-05, 2.848e-05, 2.842e-05, 2.848e-05, 7095.23368782], [1517063940000, 2.847e-05, 2.847e-05, 2.841e-05, 2.841e-05, 1175.80438271], [1517064000000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 2673.27297033], [1517064060000, 2.843e-05, 2.843e-05, 2.842e-05, 2.842e-05, 7607.25293536], [1517064120000, 2.842e-05, 2.848e-05, 2.842e-05, 2.843e-05, 4706.5043753], [1517064180000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 47.70929272], [1517064240000, 2.845e-05, 2.845e-05, 2.843e-05, 2.843e-05, 5156.34596902], [1517064300000, 2.841e-05, 2.843e-05, 2.841e-05, 2.843e-05, 102782.34163157], [1517064360000, 2.843e-05, 2.843e-05, 2.841e-05, 2.843e-05, 28602.204912], [1517064420000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 3421.73705334], [1517064480000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 1030.67869649], [1517064540000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 100.0], [1517064600000, 2.841e-05, 2.842e-05, 2.841e-05, 2.842e-05, 1366.39802824], [1517064660000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 1032.34352535], [1517064720000, 2.847e-05, 2.847e-05, 2.843e-05, 2.843e-05, 13835.70988259], [1517064840000, 2.846e-05, 2.846e-05, 2.846e-05, 2.846e-05, 68.76244527], [1517064900000, 2.846e-05, 2.848e-05, 2.846e-05, 2.848e-05, 800.94570517], [1517064960000, 2.848e-05, 2.849e-05, 2.848e-05, 2.849e-05, 5172.71157571], [1517065080000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 26.0159081], [1517065140000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 129.0], [1517065200000, 2.853e-05, 2.855e-05, 2.853e-05, 2.855e-05, 329.2508673], [1517065260000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 1563.28530688], [1517065320000, 2.858e-05, 2.86e-05, 2.858e-05, 2.86e-05, 598.27636976], [1517065380000, 2.86e-05, 2.862e-05, 2.86e-05, 2.862e-05, 16510.28934761], [1517065440000, 2.863e-05, 2.871e-05, 2.863e-05, 2.863e-05, 16279.15068114], [1517065500000, 2.863e-05, 2.869e-05, 2.859e-05, 2.859e-05, 15948.98207335], [1517065560000, 2.854e-05, 2.858e-05, 2.85e-05, 2.85e-05, 3957.83262357], [1517065620000, 2.857e-05, 2.857e-05, 2.842e-05, 2.842e-05, 28308.37401217], [1517065680000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 10352.09708666], [1517065800000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 915.21840209], [1517065860000, 2.847e-05, 2.848e-05, 2.847e-05, 2.848e-05, 1738.80157552], [1517065920000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 25.7642189], [1517065980000, 2.848e-05, 2.849e-05, 2.848e-05, 2.848e-05, 18517.59770361], [1517066040000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 5288.11303061], [1517066100000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 18.00805828], [1517066160000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 25.6476312], [1517066220000, 2.847e-05, 2.848e-05, 2.847e-05, 2.848e-05, 2854.52200754], [1517066280000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 805.2235584], [1517066340000, 2.849e-05, 2.853e-05, 2.849e-05, 2.853e-05, 1441.7], [1517066400000, 2.853e-05, 2.853e-05, 2.853e-05, 2.853e-05, 1286.73802655], [1517066460000, 2.853e-05, 2.855e-05, 2.853e-05, 2.854e-05, 8368.36666772], [1517066520000, 2.856e-05, 2.856e-05, 2.853e-05, 2.853e-05, 59396.23990446], [1517066580000, 2.853e-05, 2.854e-05, 2.853e-05, 2.853e-05, 53925.08414085], [1517066640000, 2.855e-05, 2.855e-05, 2.849e-05, 2.849e-05, 5108.5163436], [1517066700000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 794.01905559], [1517066760000, 2.849e-05, 2.856e-05, 2.849e-05, 2.849e-05, 10819.85081831], [1517066820000, 2.849e-05, 2.849e-05, 2.848e-05, 2.848e-05, 5292.27385345], [1517066880000, 2.847e-05, 2.847e-05, 2.841e-05, 2.841e-05, 65845.4299714], [1517066940000, 2.839e-05, 2.84e-05, 2.834e-05, 2.834e-05, 38075.33097732], [1517067000000, 2.841e-05, 2.841e-05, 2.834e-05, 2.835e-05, 1103.54052733], [1517067060000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 90.53301673], [1517067120000, 2.839e-05, 2.839e-05, 2.833e-05, 2.833e-05, 9496.57825273], [1517067180000, 2.833e-05, 2.833e-05, 2.833e-05, 2.833e-05, 207.85084895], [1517067240000, 2.833e-05, 2.833e-05, 2.833e-05, 2.833e-05, 156.1647001], [1517067300000, 2.833e-05, 2.833e-05, 2.83e-05, 2.83e-05, 5955.58662262], [1517067360000, 2.849e-05, 2.849e-05, 2.83e-05, 2.83e-05, 4980.20000048], [1517067420000, 2.829e-05, 2.849e-05, 2.828e-05, 2.828e-05, 3407.24543398], [1517067480000, 2.828e-05, 2.828e-05, 2.828e-05, 2.828e-05, 1035.677073], [1517067540000, 2.828e-05, 2.828e-05, 2.828e-05, 2.828e-05, 1952.55582192], [1517067600000, 2.83e-05, 2.83e-05, 2.827e-05, 2.827e-05, 4307.43396754], [1517067660000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 3236.79297879], [1517067720000, 2.826e-05, 2.826e-05, 2.82e-05, 2.826e-05, 1572.47123219], [1517067780000, 2.822e-05, 2.826e-05, 2.81e-05, 2.812e-05, 21478.64573983], [1517067840000, 2.812e-05, 2.817e-05, 2.808e-05, 2.817e-05, 11373.96599843], [1517067900000, 2.818e-05, 2.823e-05, 2.808e-05, 2.809e-05, 14852.28086919], [1517067960000, 2.808e-05, 2.824e-05, 2.8e-05, 2.824e-05, 222158.50372358], [1517068020000, 2.803e-05, 2.82e-05, 2.8e-05, 2.8e-05, 103550.88829772], [1517068080000, 2.8e-05, 2.82e-05, 2.79e-05, 2.791e-05, 154755.89377865], [1517068140000, 2.81e-05, 2.81e-05, 2.776e-05, 2.789e-05, 178882.74682119], [1517068200000, 2.79e-05, 2.791e-05, 2.763e-05, 2.785e-05, 14591.08939351], [1517068260000, 2.789e-05, 2.789e-05, 2.762e-05, 2.777e-05, 40242.66885229], [1517068320000, 2.777e-05, 2.779e-05, 2.762e-05, 2.778e-05, 18045.16465581], [1517068380000, 2.778e-05, 2.779e-05, 2.761e-05, 2.779e-05, 20052.98847717], [1517068440000, 2.78e-05, 2.78e-05, 2.779e-05, 2.78e-05, 30737.11582847], [1517068500000, 2.78e-05, 2.786e-05, 2.778e-05, 2.779e-05, 47848.17777997], [1517068560000, 2.779e-05, 2.786e-05, 2.777e-05, 2.778e-05, 46273.79609179], [1517068620000, 2.778e-05, 2.778e-05, 2.765e-05, 2.766e-05, 13744.85343571], [1517068680000, 2.789e-05, 2.789e-05, 2.755e-05, 2.759e-05, 18049.63963126], [1517068740000, 2.759e-05, 2.804e-05, 2.755e-05, 2.755e-05, 10017.95549227], [1517068800000, 2.775e-05, 2.793e-05, 2.755e-05, 2.755e-05, 6608.50990751], [1517068860000, 2.755e-05, 2.77e-05, 2.754e-05, 2.77e-05, 142598.24878582], [1517068920000, 2.769e-05, 2.77e-05, 2.768e-05, 2.768e-05, 19573.84023428], [1517068980000, 2.77e-05, 2.77e-05, 2.768e-05, 2.77e-05, 5138.87641268], [1517069040000, 2.788e-05, 2.789e-05, 2.774e-05, 2.789e-05, 1610.62554925], [1517069100000, 2.788e-05, 2.789e-05, 2.786e-05, 2.789e-05, 6634.4159073], [1517069160000, 2.789e-05, 2.812e-05, 2.789e-05, 2.792e-05, 9871.44070073], [1517069220000, 2.811e-05, 2.815e-05, 2.811e-05, 2.815e-05, 344.37701318], [1517069280000, 2.814e-05, 2.814e-05, 2.791e-05, 2.812e-05, 605.28728039], [1517069340000, 2.795e-05, 2.795e-05, 2.791e-05, 2.791e-05, 2102.26539989], [1517069460000, 2.791e-05, 2.791e-05, 2.791e-05, 2.791e-05, 11827.60150119], [1517069520000, 2.79e-05, 2.791e-05, 2.789e-05, 2.79e-05, 3924.21928158], [1517069580000, 2.79e-05, 2.79e-05, 2.78e-05, 2.79e-05, 20093.05789663], [1517069640000, 2.789e-05, 2.793e-05, 2.789e-05, 2.793e-05, 8953.04076015], [1517069700000, 2.803e-05, 2.803e-05, 2.803e-05, 2.803e-05, 178.38030681], [1517069760000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 1999.79854285], [1517069820000, 2.804e-05, 2.805e-05, 2.804e-05, 2.805e-05, 53.23627273], [1517069880000, 2.804e-05, 2.807e-05, 2.793e-05, 2.793e-05, 15607.95301494], [1517069940000, 2.793e-05, 2.793e-05, 2.793e-05, 2.793e-05, 1048.93245023], [1517070000000, 2.79e-05, 2.79e-05, 2.778e-05, 2.785e-05, 1995.70982865], [1517070060000, 2.786e-05, 2.786e-05, 2.778e-05, 2.778e-05, 1237.76474583], [1517070120000, 2.777e-05, 2.778e-05, 2.777e-05, 2.778e-05, 5555.04495224], [1517070180000, 2.785e-05, 2.785e-05, 2.779e-05, 2.779e-05, 734.24028107], [1517070240000, 2.786e-05, 2.786e-05, 2.786e-05, 2.786e-05, 1509.42740984], [1517070300000, 2.786e-05, 2.792e-05, 2.786e-05, 2.792e-05, 1342.29647943], [1517070360000, 2.786e-05, 2.786e-05, 2.786e-05, 2.786e-05, 1522.4836415], [1517070480000, 2.784e-05, 2.786e-05, 2.783e-05, 2.786e-05, 2275.9488921], [1517070540000, 2.781e-05, 2.781e-05, 2.781e-05, 2.781e-05, 484.9101568], [1517070600000, 2.784e-05, 2.786e-05, 2.784e-05, 2.786e-05, 2858.11995495], [1517070660000, 2.785e-05, 2.786e-05, 2.78e-05, 2.786e-05, 6893.26040973], [1517070720000, 2.786e-05, 2.793e-05, 2.786e-05, 2.793e-05, 1160.72050658], [1517070780000, 2.801e-05, 2.808e-05, 2.801e-05, 2.808e-05, 7471.39519816], [1517070840000, 2.802e-05, 2.802e-05, 2.794e-05, 2.794e-05, 4444.05209116], [1517070900000, 2.794e-05, 2.794e-05, 2.794e-05, 2.794e-05, 300.0], [1517070960000, 2.797e-05, 2.797e-05, 2.797e-05, 2.797e-05, 133.56549964], [1517071020000, 2.797e-05, 2.797e-05, 2.793e-05, 2.797e-05, 7425.8117491], [1517071080000, 2.797e-05, 2.797e-05, 2.797e-05, 2.797e-05, 3621.03693834], [1517071140000, 2.803e-05, 2.804e-05, 2.803e-05, 2.803e-05, 5486.95254424], [1517071200000, 2.804e-05, 2.805e-05, 2.804e-05, 2.805e-05, 17003.08350152], [1517071260000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 4357.68555482], [1517071320000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 24.18126232], [1517071380000, 2.805e-05, 2.806e-05, 2.805e-05, 2.806e-05, 12479.82037535], [1517071440000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 837.37417903], [1517071560000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 2725.34615922], [1517071620000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 3525.7056065], [1517071680000, 2.805e-05, 2.807e-05, 2.805e-05, 2.807e-05, 820.69913201], [1517071740000, 2.807e-05, 2.808e-05, 2.807e-05, 2.808e-05, 1996.10708606], [1517071800000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 402.09844313], [1517071860000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 82.28243854], [1517071920000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 57.97282341], [1517071980000, 2.808e-05, 2.808e-05, 2.806e-05, 2.806e-05, 4076.340509], [1517072040000, 2.806e-05, 2.808e-05, 2.806e-05, 2.808e-05, 2867.25966712], [1517072100000, 2.809e-05, 2.81e-05, 2.793e-05, 2.793e-05, 71005.50748221], [1517072160000, 2.79e-05, 2.79e-05, 2.79e-05, 2.79e-05, 654.09836023], [1517072220000, 2.788e-05, 2.788e-05, 2.788e-05, 2.788e-05, 332.48850921], [1517072280000, 2.787e-05, 2.79e-05, 2.784e-05, 2.784e-05, 13723.61929199], [1517072340000, 2.783e-05, 2.784e-05, 2.781e-05, 2.784e-05, 32458.65825321], [1517072400000, 2.784e-05, 2.784e-05, 2.783e-05, 2.784e-05, 867.03816613], [1517072460000, 2.784e-05, 2.784e-05, 2.784e-05, 2.784e-05, 300.0], [1517072520000, 2.785e-05, 2.785e-05, 2.785e-05, 2.785e-05, 17288.57653111], [1517072640000, 2.785e-05, 2.785e-05, 2.781e-05, 2.781e-05, 1714.50899133], [1517072700000, 2.785e-05, 2.786e-05, 2.784e-05, 2.785e-05, 6114.10401455], [1517072760000, 2.808e-05, 2.808e-05, 2.784e-05, 2.784e-05, 580.79123235], [1517072880000, 2.787e-05, 2.787e-05, 2.787e-05, 2.787e-05, 507.58385286], [1517073000000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 102.24544958], [1517073120000, 2.806e-05, 2.806e-05, 2.805e-05, 2.806e-05, 95.45923857], [1517073180000, 2.789e-05, 2.79e-05, 2.789e-05, 2.79e-05, 576.83095325], [1517073240000, 2.79e-05, 2.79e-05, 2.79e-05, 2.79e-05, 101.8458494], [1517073300000, 2.79e-05, 2.79e-05, 2.79e-05, 2.79e-05, 221.32319735], [1517073360000, 2.79e-05, 2.803e-05, 2.789e-05, 2.803e-05, 2140.81861451], [1517073420000, 2.803e-05, 2.807e-05, 2.8e-05, 2.8e-05, 459.5298995], [1517073480000, 2.8e-05, 2.8e-05, 2.789e-05, 2.789e-05, 9998.64634419], [1517073540000, 2.789e-05, 2.789e-05, 2.779e-05, 2.779e-05, 6778.41547917], [1517073600000, 2.79e-05, 2.8e-05, 2.79e-05, 2.8e-05, 11721.13334396], [1517073720000, 2.8e-05, 2.8e-05, 2.799e-05, 2.799e-05, 921.95394776], [1517073780000, 2.79e-05, 2.79e-05, 2.78e-05, 2.78e-05, 308.34679475], [1517073840000, 2.782e-05, 2.782e-05, 2.78e-05, 2.78e-05, 2036.4449847], [1517073900000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 1588.15779169], [1517073960000, 2.8e-05, 2.8e-05, 2.799e-05, 2.8e-05, 1846.90986056], [1517074020000, 2.783e-05, 2.8e-05, 2.78e-05, 2.8e-05, 7865.01670262], [1517074140000, 2.809e-05, 2.809e-05, 2.8e-05, 2.8e-05, 198.99968036], [1517074200000, 2.8e-05, 2.81e-05, 2.8e-05, 2.81e-05, 10201.59804036], [1517074260000, 2.81e-05, 2.811e-05, 2.81e-05, 2.811e-05, 471.29426568], [1517074320000, 2.811e-05, 2.814e-05, 2.811e-05, 2.811e-05, 9995.57628669], [1517074380000, 2.811e-05, 2.811e-05, 2.81e-05, 2.81e-05, 2263.52794519], [1517074440000, 2.813e-05, 2.813e-05, 2.81e-05, 2.81e-05, 370.33059401], [1517074500000, 2.791e-05, 2.791e-05, 2.791e-05, 2.791e-05, 800.0], [1517074560000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 502.39083789], [1517074620000, 2.802e-05, 2.802e-05, 2.802e-05, 2.802e-05, 115.09943013], [1517074680000, 2.802e-05, 2.802e-05, 2.802e-05, 2.802e-05, 1234.90056987], [1517074740000, 2.802e-05, 2.812e-05, 2.802e-05, 2.812e-05, 4405.16179138], [1517074800000, 2.812e-05, 2.812e-05, 2.802e-05, 2.802e-05, 6062.35631998], [1517074860000, 2.79e-05, 2.802e-05, 2.782e-05, 2.802e-05, 7467.71195733], [1517074920000, 2.802e-05, 2.802e-05, 2.801e-05, 2.802e-05, 4465.55818338], [1517074980000, 2.801e-05, 2.801e-05, 2.78e-05, 2.78e-05, 10424.01255284], [1517075100000, 2.801e-05, 2.802e-05, 2.801e-05, 2.802e-05, 33.70159299], [1517075160000, 2.812e-05, 2.819e-05, 2.81e-05, 2.811e-05, 19578.85896089], [1517075220000, 2.813e-05, 2.813e-05, 2.811e-05, 2.812e-05, 3063.864246], [1517075280000, 2.811e-05, 2.812e-05, 2.811e-05, 2.812e-05, 1179.09214185], [1517075340000, 2.812e-05, 2.812e-05, 2.812e-05, 2.812e-05, 3582.90222973], [1517075400000, 2.812e-05, 2.82e-05, 2.811e-05, 2.82e-05, 3606.87753793], [1517075460000, 2.82e-05, 2.82e-05, 2.819e-05, 2.819e-05, 9094.99611217], [1517075520000, 2.818e-05, 2.831e-05, 2.818e-05, 2.82e-05, 185526.8425991], [1517075580000, 2.832e-05, 2.837e-05, 2.82e-05, 2.823e-05, 2738.59312893], [1517075640000, 2.823e-05, 2.823e-05, 2.82e-05, 2.82e-05, 4559.65496198], [1517075700000, 2.82e-05, 2.823e-05, 2.82e-05, 2.823e-05, 9610.13098256], [1517075760000, 2.823e-05, 2.823e-05, 2.823e-05, 2.823e-05, 213.86275118], [1517075820000, 2.823e-05, 2.824e-05, 2.823e-05, 2.824e-05, 226.6111898], [1517075880000, 2.823e-05, 2.823e-05, 2.823e-05, 2.823e-05, 77.71849613], [1517075940000, 2.823e-05, 2.824e-05, 2.823e-05, 2.824e-05, 42.3539724], [1517076000000, 2.834e-05, 2.835e-05, 2.824e-05, 2.835e-05, 3092.36648347], [1517076060000, 2.824e-05, 2.835e-05, 2.824e-05, 2.835e-05, 1985.54440123], [1517076120000, 2.835e-05, 2.835e-05, 2.823e-05, 2.823e-05, 12148.85642563], [1517076180000, 2.823e-05, 2.826e-05, 2.822e-05, 2.826e-05, 9293.34454871], [1517076240000, 2.826e-05, 2.826e-05, 2.825e-05, 2.826e-05, 1118.4493353], [1517076300000, 2.826e-05, 2.826e-05, 2.82e-05, 2.826e-05, 19123.68453623], [1517076360000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 66.43225258], [1517076420000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 167.22353604], [1517076480000, 2.827e-05, 2.827e-05, 2.826e-05, 2.826e-05, 865.63678861], [1517076600000, 2.826e-05, 2.836e-05, 2.826e-05, 2.836e-05, 3924.73573113], [1517076660000, 2.836e-05, 2.836e-05, 2.827e-05, 2.827e-05, 19099.13474467], [1517076720000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 313.300118], [1517076780000, 2.827e-05, 2.827e-05, 2.826e-05, 2.826e-05, 13484.41250441], [1517076840000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 1278.84615385], [1517076900000, 2.833e-05, 2.833e-05, 2.833e-05, 2.833e-05, 35.21002471], [1517077020000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 800.42828979], [1517077080000, 2.831e-05, 2.833e-05, 2.831e-05, 2.833e-05, 852.11731933], [1517077140000, 2.827e-05, 2.833e-05, 2.826e-05, 2.826e-05, 1103.21792735], [1517077200000, 2.832e-05, 2.832e-05, 2.832e-05, 2.832e-05, 22.57200646], [1517077260000, 2.832e-05, 2.833e-05, 2.824e-05, 2.833e-05, 5781.08598715], [1517077320000, 2.82e-05, 2.82e-05, 2.813e-05, 2.82e-05, 2102.91770619], [1517077380000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 893.61702128], [1517077440000, 2.832e-05, 2.832e-05, 2.82e-05, 2.82e-05, 2331.07434062], [1517077560000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 440.82863918], [1517077620000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 4585.71485354], [1517077680000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 300.0], [1517077740000, 2.814e-05, 2.814e-05, 2.813e-05, 2.813e-05, 3932.09029441], [1517077800000, 2.813e-05, 2.813e-05, 2.81e-05, 2.81e-05, 24153.88281376], [1517077980000, 2.809e-05, 2.81e-05, 2.809e-05, 2.81e-05, 2118.7663581], [1517078040000, 2.803e-05, 2.81e-05, 2.803e-05, 2.81e-05, 363.06125597], [1517078100000, 2.809e-05, 2.809e-05, 2.809e-05, 2.809e-05, 134.66081674], [1517078160000, 2.809e-05, 2.809e-05, 2.809e-05, 2.809e-05, 842.9962384], [1517078220000, 2.802e-05, 2.802e-05, 2.8e-05, 2.8e-05, 4880.73763415], [1517078280000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 67.25666197], [1517078340000, 2.793e-05, 2.794e-05, 2.792e-05, 2.792e-05, 3996.58775887], [1517078400000, 2.799e-05, 2.81e-05, 2.799e-05, 2.81e-05, 524.86781584], [1517078460000, 2.794e-05, 2.794e-05, 2.794e-05, 2.794e-05, 500.0], [1517078520000, 2.794e-05, 2.794e-05, 2.788e-05, 2.788e-05, 5250.0], [1517078700000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 172.11246028], [1517078760000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 22.20789796], [1517078820000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 338.72203577], [1517078880000, 2.807e-05, 2.808e-05, 2.807e-05, 2.808e-05, 97.07826448], [1517078940000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 100.0], [1517079000000, 2.808e-05, 2.808e-05, 2.807e-05, 2.807e-05, 231.69320721], [1517079120000, 2.808e-05, 2.808e-05, 2.807e-05, 2.807e-05, 1815.4554296], [1517079180000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 1707.17881897], [1517079240000, 2.807e-05, 2.808e-05, 2.807e-05, 2.808e-05, 4141.67279254], [1517079300000, 2.808e-05, 2.809e-05, 2.808e-05, 2.808e-05, 1914.98272122], [1517079420000, 2.79e-05, 2.792e-05, 2.79e-05, 2.79e-05, 3803.47523856], [1517079480000, 2.806e-05, 2.808e-05, 2.806e-05, 2.808e-05, 9671.44170801], [1517079540000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 110.43191774], [1517079600000, 2.808e-05, 2.81e-05, 2.808e-05, 2.81e-05, 3644.24413612], [1517079660000, 2.809e-05, 2.809e-05, 2.809e-05, 2.809e-05, 21.83090376], [1517079720000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 3553.88038409], [1517079780000, 2.817e-05, 2.817e-05, 2.817e-05, 2.817e-05, 422.64832505], [1517079840000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 942.78562984], [1517079900000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 44.06546642], [1517079960000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 4.9e-07], [1517080140000, 2.801e-05, 2.808e-05, 2.799e-05, 2.808e-05, 1683.82347741], [1517080200000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 275.46022405], [1517080260000, 2.808e-05, 2.809e-05, 2.808e-05, 2.809e-05, 39.60244493], [1517080320000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 21.81676917], [1517080380000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 191.07843671], [1517080440000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 2752.61658353], [1517080500000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 8119.16205808], [1517080560000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 303.57036849], [1517080680000, 2.808e-05, 2.808e-05, 2.8e-05, 2.8e-05, 213.38742468], [1517080800000, 2.808e-05, 2.808e-05, 2.807e-05, 2.807e-05, 43.415], [1517080860000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 667.30466317], [1517080980000, 2.801e-05, 2.801e-05, 2.79e-05, 2.79e-05, 11621.03803226], [1517081040000, 2.791e-05, 2.791e-05, 2.782e-05, 2.782e-05, 42500.0], [1517081100000, 2.782e-05, 2.782e-05, 2.782e-05, 2.782e-05, 1567.24296181], [1517081160000, 2.782e-05, 2.782e-05, 2.782e-05, 2.782e-05, 385.89455619], [1517081220000, 2.782e-05, 2.782e-05, 2.775e-05, 2.775e-05, 26559.97829137], [1517081280000, 2.775e-05, 2.782e-05, 2.775e-05, 2.782e-05, 2396.48421664], [1517081400000, 2.803e-05, 2.803e-05, 2.803e-05, 2.803e-05, 20.0], [1517081460000, 2.792e-05, 2.792e-05, 2.792e-05, 2.792e-05, 58.8399561], [1517081580000, 2.797e-05, 2.814e-05, 2.797e-05, 2.798e-05, 13406.96061277], [1517081700000, 2.799e-05, 2.799e-05, 2.798e-05, 2.798e-05, 1004.79554915], [1517081760000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 2931.95127361], [1517081820000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 150.0], [1517081880000, 2.797e-05, 2.798e-05, 2.792e-05, 2.792e-05, 1016.80810215], [1517081940000, 2.792e-05, 2.826e-05, 2.792e-05, 2.826e-05, 8760.01885423], [1517082000000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 1534.3029634], [1517082060000, 2.826e-05, 2.829e-05, 2.826e-05, 2.829e-05, 200.84742383], [1517082120000, 2.829e-05, 2.829e-05, 2.809e-05, 2.826e-05, 1306.79429959], [1517082240000, 2.817e-05, 2.817e-05, 2.817e-05, 2.817e-05, 8277.20892373], [1517082300000, 2.825e-05, 2.84e-05, 2.824e-05, 2.84e-05, 13504.23858643], [1517082360000, 2.829e-05, 2.846e-05, 2.829e-05, 2.829e-05, 1184.04176277], [1517082420000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 587.80724383], [1517082480000, 2.839e-05, 2.84e-05, 2.839e-05, 2.84e-05, 74.8], [1517082540000, 2.828e-05, 2.828e-05, 2.827e-05, 2.827e-05, 233.55485555], [1517082600000, 2.827e-05, 2.827e-05, 2.826e-05, 2.827e-05, 2215.12741151], [1517082660000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 2069.7373356], [1517082720000, 2.837e-05, 2.837e-05, 2.827e-05, 2.827e-05, 209.0], [1517082780000, 2.827e-05, 2.846e-05, 2.827e-05, 2.831e-05, 5477.71903439], [1517082900000, 2.837e-05, 2.838e-05, 2.837e-05, 2.838e-05, 61.1], [1517082960000, 2.837e-05, 2.84e-05, 2.832e-05, 2.832e-05, 1260.01613622], [1517083020000, 2.832e-05, 2.845e-05, 2.832e-05, 2.845e-05, 1933.10223081], [1517083080000, 2.845e-05, 2.845e-05, 2.831e-05, 2.831e-05, 1198.57320036], [1517083140000, 2.831e-05, 2.837e-05, 2.831e-05, 2.837e-05, 14409.40511072], [1517083260000, 2.834e-05, 2.837e-05, 2.833e-05, 2.837e-05, 46305.83755792], [1517083320000, 2.833e-05, 2.833e-05, 2.832e-05, 2.832e-05, 140.42072485], [1517083380000, 2.828e-05, 2.829e-05, 2.828e-05, 2.829e-05, 2225.10637681], [1517083500000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 64.51072485], [1517083560000, 2.829e-05, 2.836e-05, 2.827e-05, 2.836e-05, 6757.29263458], [1517083620000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 2990.921305], [1517083680000, 2.829e-05, 2.836e-05, 2.828e-05, 2.836e-05, 10253.16451887], [1517083740000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 20.0], [1517083800000, 2.835e-05, 2.836e-05, 2.827e-05, 2.836e-05, 60851.04998238], [1517083860000, 2.835e-05, 2.836e-05, 2.835e-05, 2.836e-05, 35.09787921], [1517083980000, 2.828e-05, 2.828e-05, 2.828e-05, 2.828e-05, 176.36138614], [1517084040000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 1113.171126], [1517084100000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 259.955586], [1517084160000, 2.827e-05, 2.827e-05, 2.826e-05, 2.826e-05, 1069.92675473], [1517084220000, 2.826e-05, 2.865e-05, 2.826e-05, 2.865e-05, 29142.03066401], [1517084280000, 2.865e-05, 2.865e-05, 2.858e-05, 2.858e-05, 17534.28972858], [1517084340000, 2.829e-05, 2.855e-05, 2.826e-05, 2.855e-05, 438.18880763], [1517084460000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 345.53318022], [1517084580000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 365.61874285], [1517084700000, 2.84e-05, 2.855e-05, 2.84e-05, 2.855e-05, 10550.03406164], [1517084820000, 2.85e-05, 2.855e-05, 2.85e-05, 2.855e-05, 790.81381717], [1517084880000, 2.85e-05, 2.85e-05, 2.842e-05, 2.842e-05, 490.07940863], [1517084940000, 2.834e-05, 2.85e-05, 2.834e-05, 2.85e-05, 899.14335], [1517085060000, 2.833e-05, 2.834e-05, 2.833e-05, 2.834e-05, 1229.43], [1517085120000, 2.836e-05, 2.836e-05, 2.836e-05, 2.836e-05, 881.1698851], [1517085180000, 2.835e-05, 2.835e-05, 2.833e-05, 2.834e-05, 6318.71428072], [1517085240000, 2.837e-05, 2.839e-05, 2.837e-05, 2.839e-05, 2857.7393757], [1517085420000, 2.84e-05, 2.84e-05, 2.839e-05, 2.839e-05, 3582.23022312], [1517085480000, 2.848e-05, 2.854e-05, 2.848e-05, 2.854e-05, 583.96351761], [1517085540000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 3154.13746816], [1517085600000, 2.848e-05, 2.86e-05, 2.848e-05, 2.86e-05, 8209.67228114], [1517085660000, 2.858e-05, 2.858e-05, 2.858e-05, 2.858e-05, 20.0], [1517085720000, 2.859e-05, 2.865e-05, 2.848e-05, 2.85e-05, 4547.802768], [1517085840000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 112.04957626], [1517085900000, 2.862e-05, 2.862e-05, 2.858e-05, 2.858e-05, 3520.67961395], [1517086020000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 2118.10205679], [1517086080000, 2.857e-05, 2.858e-05, 2.857e-05, 2.858e-05, 68.42743795], [1517086200000, 2.849e-05, 2.856e-05, 2.849e-05, 2.856e-05, 567.83421631], [1517086260000, 2.857e-05, 2.857e-05, 2.857e-05, 2.857e-05, 184.90032233], [1517086320000, 2.856e-05, 2.856e-05, 2.849e-05, 2.849e-05, 6296.00643038], [1517086380000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 326.05606051], [1517086440000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 518.0], [1517086500000, 2.853e-05, 2.855e-05, 2.853e-05, 2.855e-05, 2253.70199719], [1517086560000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 4532.19187418], [1517086620000, 2.849e-05, 2.855e-05, 2.849e-05, 2.849e-05, 1595.22978169], [1517086680000, 2.849e-05, 2.849e-05, 2.848e-05, 2.848e-05, 757.84915752], [1517086860000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 496.85193429], [1517086920000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 2023.90155463], [1517087040000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 215.49789589], [1517087100000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 57.44702408], [1517087160000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 45.53855538], [1517087280000, 2.849e-05, 2.849e-05, 2.848e-05, 2.848e-05, 230.31214771], [1517087340000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 370.0], [1517087400000, 2.849e-05, 2.85e-05, 2.849e-05, 2.849e-05, 314.76141946], [1517087520000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 4050.08304333], [1517087580000, 2.849e-05, 2.86e-05, 2.849e-05, 2.86e-05, 10073.63257236], [1517087640000, 2.86e-05, 2.867e-05, 2.86e-05, 2.867e-05, 3143.46368493], [1517087700000, 2.85e-05, 2.855e-05, 2.85e-05, 2.855e-05, 8370.83909951], [1517087820000, 2.862e-05, 2.864e-05, 2.856e-05, 2.856e-05, 1782.17466385], [1517087880000, 2.856e-05, 2.856e-05, 2.856e-05, 2.856e-05, 8881.61120841], [1517087940000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 535.40000001], [1517088000000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 105.0788091], [1517088120000, 2.85e-05, 2.85e-05, 2.849e-05, 2.849e-05, 119.96837813], [1517088180000, 2.85e-05, 2.85e-05, 2.849e-05, 2.85e-05, 615.71441946], [1517088240000, 2.85e-05, 2.85e-05, 2.849e-05, 2.849e-05, 177.71737137], [1517088300000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 1223.11280786], [1517088360000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 1766.29477533], [1517088420000, 2.845e-05, 2.845e-05, 2.839e-05, 2.839e-05, 2834.68946342], [1517088480000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 1794.29727016], [1517088540000, 2.839e-05, 2.848e-05, 2.839e-05, 2.848e-05, 67.92619357], [1517088600000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 463.09719483], [1517088660000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 1308.29826844], [1517088720000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 308.34429503], [1517088780000, 2.846e-05, 2.848e-05, 2.839e-05, 2.839e-05, 201.83161527], [1517088840000, 2.848e-05, 2.854e-05, 2.848e-05, 2.854e-05, 79.56623543], [1517088900000, 2.858e-05, 2.868e-05, 2.858e-05, 2.868e-05, 2323.04008471], [1517088960000, 2.858e-05, 2.868e-05, 2.854e-05, 2.854e-05, 4815.74457939], [1517089020000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 1884.74084813], [1517089200000, 2.858e-05, 2.858e-05, 2.858e-05, 2.858e-05, 209.76294176], [1517089260000, 2.857e-05, 2.858e-05, 2.857e-05, 2.858e-05, 131.71015406], [1517089320000, 2.857e-05, 2.863e-05, 2.857e-05, 2.863e-05, 609.71882641], [1517089380000, 2.858e-05, 2.858e-05, 2.851e-05, 2.851e-05, 804.78091305], [1517089440000, 2.863e-05, 2.863e-05, 2.851e-05, 2.851e-05, 383.3151725], [1517089500000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 512.72162798], [1517089560000, 2.865e-05, 2.866e-05, 2.851e-05, 2.866e-05, 1020.98023933], [1517089620000, 2.865e-05, 2.867e-05, 2.865e-05, 2.867e-05, 1861.37463929], [1517089680000, 2.866e-05, 2.866e-05, 2.851e-05, 2.866e-05, 5315.57582978], [1517089740000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 1349.98094435], [1517089800000, 2.867e-05, 2.867e-05, 2.867e-05, 2.867e-05, 350.0], [1517089860000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 211.41426169], [1517089980000, 2.864e-05, 2.866e-05, 2.864e-05, 2.866e-05, 2342.30389688], [1517090040000, 2.867e-05, 2.87e-05, 2.86e-05, 2.86e-05, 10117.8292871], [1517090100000, 2.868e-05, 2.869e-05, 2.86e-05, 2.86e-05, 8755.43358391], [1517090160000, 2.869e-05, 2.87e-05, 2.869e-05, 2.87e-05, 1000.0], [1517090340000, 2.86e-05, 2.87e-05, 2.86e-05, 2.87e-05, 567.92871279], [1517090400000, 2.87e-05, 2.87e-05, 2.86e-05, 2.87e-05, 2391.24721176], [1517090460000, 2.87e-05, 2.871e-05, 2.865e-05, 2.87e-05, 3426.69422456], [1517090520000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 417.78841084], [1517090580000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 1134.13548977], [1517090640000, 2.872e-05, 2.872e-05, 2.871e-05, 2.872e-05, 3321.18781303], [1517090700000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 47.34863163], [1517090760000, 2.871e-05, 2.871e-05, 2.87e-05, 2.87e-05, 14101.54522733], [1517090820000, 2.865e-05, 2.876e-05, 2.85e-05, 2.876e-05, 7203.97139749], [1517090880000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 244.90879074], [1517091000000, 2.874e-05, 2.874e-05, 2.874e-05, 2.874e-05, 232.54175365], [1517091060000, 2.875e-05, 2.876e-05, 2.875e-05, 2.875e-05, 137.90762697], [1517091120000, 2.874e-05, 2.874e-05, 2.874e-05, 2.874e-05, 913.24496259], [1517091180000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 59.89836782], [1517091240000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 104.45682451], [1517091300000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 7587.05993931], [1517091360000, 2.852e-05, 2.873e-05, 2.844e-05, 2.844e-05, 2977.73649], [1517091480000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 19.0384074], [1517091540000, 2.871e-05, 2.871e-05, 2.845e-05, 2.845e-05, 447.10705824], [1517091660000, 2.847e-05, 2.848e-05, 2.847e-05, 2.847e-05, 2767.21614695], [1517091720000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 386.0902], [1517091780000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 3302.63778993], [1517091840000, 2.849e-05, 2.849e-05, 2.845e-05, 2.845e-05, 14756.77953332], [1517091900000, 2.844e-05, 2.872e-05, 2.844e-05, 2.872e-05, 405.79693352], [1517091960000, 2.869e-05, 2.869e-05, 2.867e-05, 2.868e-05, 375.24627503], [1517092020000, 2.846e-05, 2.846e-05, 2.839e-05, 2.839e-05, 2434.13083948], [1517092140000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 19.04986652], [1517092200000, 2.838e-05, 2.839e-05, 2.822e-05, 2.822e-05, 11762.36475195], [1517092320000, 2.835e-05, 2.848e-05, 2.834e-05, 2.848e-05, 3013.26589158], [1517092380000, 2.858e-05, 2.858e-05, 2.848e-05, 2.848e-05, 7636.78184606], [1517092440000, 2.836e-05, 2.848e-05, 2.835e-05, 2.848e-05, 39002.94380755], [1517092500000, 2.821e-05, 2.821e-05, 2.82e-05, 2.82e-05, 621.6327199], [1517092560000, 2.82e-05, 2.848e-05, 2.82e-05, 2.848e-05, 1821.2995061], [1517092620000, 2.848e-05, 2.855e-05, 2.84e-05, 2.841e-05, 1097.07951518], [1517092740000, 2.846e-05, 2.849e-05, 2.846e-05, 2.848e-05, 4304.01666392], [1517092860000, 2.852e-05, 2.852e-05, 2.851e-05, 2.851e-05, 4584.33895537], [1517092920000, 2.848e-05, 2.851e-05, 2.84e-05, 2.851e-05, 11500.32918909], [1517092980000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 4914.46529336], [1517093040000, 2.856e-05, 2.856e-05, 2.851e-05, 2.851e-05, 34161.74557045], [1517093160000, 2.856e-05, 2.866e-05, 2.856e-05, 2.866e-05, 4841.98253238], [1517093220000, 2.855e-05, 2.866e-05, 2.855e-05, 2.866e-05, 1038.57662194], [1517093280000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 32.64578185], [1517093340000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 18.74747826], [1517093400000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 18.72968925], [1517093460000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 1213.66322663], [1517093520000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 5550.29587628], [1517093580000, 2.856e-05, 2.865e-05, 2.856e-05, 2.865e-05, 10339.03943837], [1517093640000, 2.865e-05, 2.866e-05, 2.865e-05, 2.865e-05, 1888.55471838], [1517093700000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 2325.96521109], [1517093760000, 2.866e-05, 2.87e-05, 2.866e-05, 2.869e-05, 3575.70166994], [1517093820000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 3381.2107108], [1517093880000, 2.869e-05, 2.869e-05, 2.856e-05, 2.856e-05, 10217.835591], [1517093940000, 2.857e-05, 2.857e-05, 2.856e-05, 2.856e-05, 578.18447466], [1517094000000, 2.855e-05, 2.856e-05, 2.855e-05, 2.856e-05, 1764.63030999], [1517094060000, 2.855e-05, 2.856e-05, 2.855e-05, 2.855e-05, 2716.28007926], [1517094120000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 593.00249577], [1517094180000, 2.855e-05, 2.855e-05, 2.84e-05, 2.84e-05, 401.05354642], [1517094240000, 2.841e-05, 2.848e-05, 2.841e-05, 2.848e-05, 94.62090806], [1517094300000, 2.848e-05, 2.848e-05, 2.84e-05, 2.84e-05, 4769.17112762], [1517094360000, 2.84e-05, 2.84e-05, 2.834e-05, 2.834e-05, 1104.56202803], [1517094420000, 2.834e-05, 2.834e-05, 2.826e-05, 2.826e-05, 12462.86678705], [1517094600000, 2.85e-05, 2.867e-05, 2.834e-05, 2.834e-05, 4291.05564882], [1517094840000, 2.857e-05, 2.857e-05, 2.837e-05, 2.837e-05, 97.67610198], [1517094900000, 2.857e-05, 2.857e-05, 2.857e-05, 2.857e-05, 7753.57490756], [1517095020000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 200.0], [1517095080000, 2.838e-05, 2.838e-05, 2.837e-05, 2.837e-05, 819.8521781], [1517095140000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 28094.892831], [1517095200000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 1162.08851961], [1517095260000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 7855.52808554], [1517095320000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 26.20038409], [1517095440000, 2.836e-05, 2.836e-05, 2.836e-05, 2.836e-05, 1610.33830629], [1517095500000, 2.835e-05, 2.835e-05, 2.83e-05, 2.83e-05, 2913.2419564], [1517095560000, 2.827e-05, 2.827e-05, 2.811e-05, 2.822e-05, 7304.3491698], [1517095620000, 2.822e-05, 2.822e-05, 2.822e-05, 2.822e-05, 555.35563953], [1517095680000, 2.832e-05, 2.833e-05, 2.832e-05, 2.833e-05, 36.49273087], [1517095800000, 2.836e-05, 2.836e-05, 2.835e-05, 2.836e-05, 2537.87324829], [1517095860000, 2.836e-05, 2.836e-05, 2.836e-05, 2.836e-05, 3731.84680697], [1517096040000, 2.834e-05, 2.837e-05, 2.822e-05, 2.837e-05, 1212.86486544], [1517096100000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 8569.46201793], [1517096160000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 1018.08676764], [1517096220000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 452.13452094], [1517096280000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 4109.01601277], [1517096400000, 2.823e-05, 2.837e-05, 2.823e-05, 2.837e-05, 1570.28226818], [1517096460000, 2.83e-05, 2.83e-05, 2.824e-05, 2.824e-05, 737.93524771], [1517096520000, 2.837e-05, 2.837e-05, 2.837e-05, 2.837e-05, 150.0], [1517096580000, 2.836e-05, 2.839e-05, 2.836e-05, 2.839e-05, 689.98221915], [1517096640000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 350.86825628], [1517096700000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 6039.10933769], [1517096760000, 2.838e-05, 2.839e-05, 2.838e-05, 2.839e-05, 9363.0806], [1517096820000, 2.839e-05, 2.839e-05, 2.838e-05, 2.838e-05, 15541.46297832], [1517096880000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 12475.3333375], [1517096940000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 2785.92885149], [1517097000000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 345.02510513], [1517097060000, 2.847e-05, 2.869e-05, 2.847e-05, 2.869e-05, 57667.63504907], [1517097120000, 2.869e-05, 2.869e-05, 2.862e-05, 2.864e-05, 2557.29317695], [1517097180000, 2.863e-05, 2.863e-05, 2.862e-05, 2.862e-05, 4192.32423563], [1517097240000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 1460.0], [1517097300000, 2.863e-05, 2.863e-05, 2.862e-05, 2.862e-05, 8614.555066], [1517097360000, 2.867e-05, 2.867e-05, 2.867e-05, 2.867e-05, 402.916839], [1517097420000, 2.866e-05, 2.87e-05, 2.862e-05, 2.862e-05, 2570.35360901], [1517097480000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 1056.02869222], [1517097540000, 2.862e-05, 2.869e-05, 2.862e-05, 2.869e-05, 3761.98901652], [1517097600000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 17.90118889], [1517097660000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 5196.8289297], [1517097720000, 2.87e-05, 2.87e-05, 2.869e-05, 2.87e-05, 24577.71039937], [1517097780000, 2.874e-05, 2.874e-05, 2.874e-05, 2.874e-05, 175.13517745], [1517097840000, 2.874e-05, 2.874e-05, 2.862e-05, 2.862e-05, 65492.26111836], [1517097960000, 2.862e-05, 2.862e-05, 2.827e-05, 2.847e-05, 97041.19961673], [1517098020000, 2.847e-05, 2.847e-05, 2.826e-05, 2.826e-05, 4663.11057964], [1517098080000, 2.826e-05, 2.847e-05, 2.817e-05, 2.847e-05, 6902.66290183], [1517098260000, 2.846e-05, 2.847e-05, 2.846e-05, 2.847e-05, 52.61660653], [1517098320000, 2.846e-05, 2.865e-05, 2.846e-05, 2.865e-05, 2006.07988643], [1517098380000, 2.866e-05, 2.866e-05, 2.865e-05, 2.865e-05, 3596.79866716], [1517098440000, 2.865e-05, 2.865e-05, 2.841e-05, 2.841e-05, 5461.22494137], [1517098500000, 2.862e-05, 2.863e-05, 2.862e-05, 2.862e-05, 4391.09966961], [1517098560000, 2.862e-05, 2.862e-05, 2.841e-05, 2.841e-05, 3684.59030658], [1517098620000, 2.822e-05, 2.841e-05, 2.821e-05, 2.841e-05, 7700.18036497], [1517098680000, 2.821e-05, 2.822e-05, 2.821e-05, 2.821e-05, 23796.6779519], [1517098740000, 2.822e-05, 2.841e-05, 2.822e-05, 2.841e-05, 14257.71285424], [1517098800000, 2.841e-05, 2.869e-05, 2.841e-05, 2.869e-05, 20293.24238437], [1517098860000, 2.873e-05, 2.873e-05, 2.869e-05, 2.869e-05, 785.67640683], [1517098920000, 2.873e-05, 2.873e-05, 2.869e-05, 2.869e-05, 15116.15949085], [1517098980000, 2.869e-05, 2.871e-05, 2.869e-05, 2.869e-05, 53045.02506741], [1517099040000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 6980.21782106], [1517099100000, 2.869e-05, 2.87e-05, 2.869e-05, 2.87e-05, 10047.02684997], [1517099160000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 17.65518791], [1517099220000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 1898.54056902], [1517099280000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 644.09699017], [1517099340000, 2.869e-05, 2.87e-05, 2.869e-05, 2.869e-05, 6663.98771813], [1517099400000, 2.871e-05, 2.875e-05, 2.871e-05, 2.875e-05, 16019.72263791], [1517099460000, 2.876e-05, 2.883e-05, 2.874e-05, 2.874e-05, 10480.07831298], [1517099520000, 2.874e-05, 2.874e-05, 2.874e-05, 2.874e-05, 9672.14233621], [1517099580000, 2.874e-05, 2.875e-05, 2.874e-05, 2.875e-05, 4356.59574152], [1517099640000, 2.875e-05, 2.881e-05, 2.875e-05, 2.881e-05, 519.32490615], [1517099700000, 2.881e-05, 2.882e-05, 2.874e-05, 2.882e-05, 14690.42109756], [1517099760000, 2.882e-05, 2.884e-05, 2.874e-05, 2.874e-05, 4167.79329782], [1517099820000, 2.875e-05, 2.875e-05, 2.874e-05, 2.874e-05, 5791.833399], [1517099940000, 2.874e-05, 2.883e-05, 2.874e-05, 2.883e-05, 1151.90086978], [1517100000000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 34.56147536], [1517100060000, 2.876e-05, 2.876e-05, 2.874e-05, 2.874e-05, 5240.04816537], [1517100120000, 2.879e-05, 2.883e-05, 2.87e-05, 2.87e-05, 11641.42261113], [1517100180000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 2825.44778895], [1517100240000, 2.87e-05, 2.87e-05, 2.869e-05, 2.869e-05, 8114.70660575], [1517100300000, 2.845e-05, 2.874e-05, 2.845e-05, 2.874e-05, 3223.85543582], [1517100360000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 280.0], [1517100420000, 2.874e-05, 2.874e-05, 2.851e-05, 2.874e-05, 8652.49084939], [1517100480000, 2.875e-05, 2.875e-05, 2.852e-05, 2.852e-05, 9090.61719381], [1517100540000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 727.65412421], [1517100600000, 2.853e-05, 2.87e-05, 2.853e-05, 2.87e-05, 4564.93394843], [1517100660000, 2.853e-05, 2.87e-05, 2.85e-05, 2.87e-05, 2250.77049875], [1517100720000, 2.87e-05, 2.87e-05, 2.854e-05, 2.854e-05, 12071.03646637], [1517100780000, 2.854e-05, 2.854e-05, 2.854e-05, 2.854e-05, 1721.90852324], [1517100840000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 1859.78240885], [1517100900000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 358.43929736], [1517100960000, 2.854e-05, 2.854e-05, 2.854e-05, 2.854e-05, 2435.97386561], [1517101140000, 2.868e-05, 2.868e-05, 2.856e-05, 2.856e-05, 1864.54465253], [1517101200000, 2.856e-05, 2.856e-05, 2.856e-05, 2.856e-05, 839.54693121], [1517101260000, 2.856e-05, 2.856e-05, 2.851e-05, 2.851e-05, 14687.64947259], [1517101320000, 2.851e-05, 2.865e-05, 2.851e-05, 2.865e-05, 775.98676375], [1517101380000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 2426.11019135], [1517101440000, 2.867e-05, 2.867e-05, 2.867e-05, 2.867e-05, 347.52169937], [1517101500000, 2.865e-05, 2.867e-05, 2.865e-05, 2.867e-05, 2496.87058689], [1517101560000, 2.851e-05, 2.867e-05, 2.851e-05, 2.867e-05, 278.367632], [1517101620000, 2.867e-05, 2.867e-05, 2.867e-05, 2.867e-05, 348.43], [1517101680000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 102.99143611], [1517101740000, 2.851e-05, 2.852e-05, 2.851e-05, 2.851e-05, 1228.80473457], [1517101860000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 1050.38295804], [1517101920000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 1780.4390479], [1517101980000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 6034.60956089], [1517102040000, 2.851e-05, 2.852e-05, 2.851e-05, 2.852e-05, 1768.02860158], [1517102100000, 2.852e-05, 2.88e-05, 2.852e-05, 2.88e-05, 7568.37504365], [1517102160000, 2.879e-05, 2.88e-05, 2.879e-05, 2.88e-05, 1492.60815535], [1517102220000, 2.88e-05, 2.88e-05, 2.879e-05, 2.879e-05, 314.73360046], [1517102280000, 2.88e-05, 2.881e-05, 2.879e-05, 2.879e-05, 448.08620199], [1517102340000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 3946.56004317], [1517102400000, 2.879e-05, 2.881e-05, 2.877e-05, 2.881e-05, 15779.66367617], [1517102460000, 2.881e-05, 2.884e-05, 2.881e-05, 2.884e-05, 5885.80379157], [1517102520000, 2.881e-05, 2.884e-05, 2.881e-05, 2.884e-05, 1712.93983073], [1517102580000, 2.881e-05, 2.884e-05, 2.881e-05, 2.882e-05, 108711.00691559], [1517102640000, 2.884e-05, 2.888e-05, 2.884e-05, 2.887e-05, 2152.31235744], [1517102700000, 2.888e-05, 2.89e-05, 2.888e-05, 2.889e-05, 20553.85246965], [1517102760000, 2.89e-05, 2.893e-05, 2.889e-05, 2.889e-05, 3151.02107144], [1517102820000, 2.891e-05, 2.891e-05, 2.889e-05, 2.891e-05, 1073.45378441], [1517102880000, 2.891e-05, 2.892e-05, 2.891e-05, 2.892e-05, 1523.64302865], [1517102940000, 2.893e-05, 2.898e-05, 2.891e-05, 2.891e-05, 50182.44673319], [1517103000000, 2.891e-05, 2.9e-05, 2.891e-05, 2.899e-05, 22538.35606773], [1517103060000, 2.9e-05, 2.9e-05, 2.891e-05, 2.891e-05, 150108.50286397], [1517103120000, 2.891e-05, 2.891e-05, 2.889e-05, 2.889e-05, 12376.90907151], [1517103180000, 2.89e-05, 2.89e-05, 2.889e-05, 2.889e-05, 1971.01682923], [1517103240000, 2.898e-05, 2.898e-05, 2.889e-05, 2.897e-05, 9498.43160133], [1517103300000, 2.889e-05, 2.897e-05, 2.889e-05, 2.889e-05, 9432.33863432], [1517103360000, 2.889e-05, 2.889e-05, 2.889e-05, 2.889e-05, 40325.38922268], [1517103420000, 2.889e-05, 2.896e-05, 2.889e-05, 2.896e-05, 1707.56820097], [1517103480000, 2.896e-05, 2.896e-05, 2.895e-05, 2.895e-05, 28430.64768181], [1517103540000, 2.889e-05, 2.889e-05, 2.889e-05, 2.889e-05, 620.0], [1517103600000, 2.894e-05, 2.894e-05, 2.894e-05, 2.894e-05, 72.39201348], [1517103660000, 2.889e-05, 2.894e-05, 2.889e-05, 2.894e-05, 847.18845056], [1517103720000, 2.889e-05, 2.889e-05, 2.889e-05, 2.889e-05, 618.14343896], [1517103780000, 2.889e-05, 2.889e-05, 2.889e-05, 2.889e-05, 3640.95695948], [1517103840000, 2.889e-05, 2.889e-05, 2.881e-05, 2.881e-05, 6379.31060606], [1517103900000, 2.883e-05, 2.888e-05, 2.881e-05, 2.888e-05, 8475.69491035], [1517103960000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 1035.16477453], [1517104020000, 2.881e-05, 2.881e-05, 2.879e-05, 2.879e-05, 1002.72654858], [1517104080000, 2.879e-05, 2.879e-05, 2.86e-05, 2.86e-05, 6372.84253197], [1517104140000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 1149.09604759], [1517104200000, 2.87e-05, 2.881e-05, 2.87e-05, 2.881e-05, 2540.75862888], [1517104260000, 2.888e-05, 2.892e-05, 2.881e-05, 2.892e-05, 4061.6264057], [1517104320000, 2.892e-05, 2.893e-05, 2.892e-05, 2.893e-05, 3515.97515658], [1517104380000, 2.893e-05, 2.893e-05, 2.893e-05, 2.893e-05, 660.57245396], [1517104440000, 2.893e-05, 2.893e-05, 2.892e-05, 2.892e-05, 964.59141497], [1517104500000, 2.892e-05, 2.892e-05, 2.892e-05, 2.892e-05, 13678.991701], [1517104560000, 2.892e-05, 2.892e-05, 2.892e-05, 2.892e-05, 4370.3005], [1517104740000, 2.89e-05, 2.89e-05, 2.89e-05, 2.89e-05, 3345.67239], [1517104860000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 2367.56817633], [1517104920000, 2.87e-05, 2.89e-05, 2.869e-05, 2.869e-05, 13175.95639356], [1517104980000, 2.869e-05, 2.89e-05, 2.869e-05, 2.89e-05, 1994.80062514], [1517105040000, 2.87e-05, 2.87e-05, 2.869e-05, 2.869e-05, 7538.42841983], [1517105100000, 2.889e-05, 2.889e-05, 2.889e-05, 2.889e-05, 133.76750559], [1517105160000, 2.889e-05, 2.89e-05, 2.889e-05, 2.889e-05, 3199.93883922], [1517105220000, 2.889e-05, 2.889e-05, 2.889e-05, 2.889e-05, 7752.66998911], [1517105280000, 2.889e-05, 2.889e-05, 2.889e-05, 2.889e-05, 16077.10851105], [1517105340000, 2.891e-05, 2.895e-05, 2.891e-05, 2.895e-05, 69560.66945607], [1517105400000, 2.895e-05, 2.895e-05, 2.895e-05, 2.895e-05, 34.35859377], [1517105460000, 2.894e-05, 2.895e-05, 2.894e-05, 2.895e-05, 559.74571343], [1517105520000, 2.89e-05, 2.895e-05, 2.89e-05, 2.895e-05, 2298.32017579], [1517105580000, 2.896e-05, 2.896e-05, 2.896e-05, 2.896e-05, 2943.35486965], [1517105640000, 2.896e-05, 2.896e-05, 2.896e-05, 2.896e-05, 4622.52541007], [1517105700000, 2.893e-05, 2.893e-05, 2.89e-05, 2.89e-05, 4766.896008], [1517105760000, 2.895e-05, 2.895e-05, 2.891e-05, 2.891e-05, 5562.67753006], [1517105820000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 74.709111], [1517105880000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 472.84900818], [1517105940000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 3.8e-07], [1517106060000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 7842.05415206], [1517106120000, 2.876e-05, 2.876e-05, 2.875e-05, 2.875e-05, 4157.932035], [1517106180000, 2.878e-05, 2.878e-05, 2.878e-05, 2.878e-05, 351.54066054], [1517106240000, 2.88e-05, 2.891e-05, 2.88e-05, 2.891e-05, 533.95554311], [1517106300000, 2.895e-05, 2.895e-05, 2.895e-05, 2.895e-05, 755.87743679], [1517106360000, 2.895e-05, 2.895e-05, 2.895e-05, 2.895e-05, 2800.0], [1517106420000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 172.51815981], [1517106480000, 2.891e-05, 2.896e-05, 2.891e-05, 2.896e-05, 5270.99735959], [1517106540000, 2.891e-05, 2.896e-05, 2.891e-05, 2.896e-05, 11564.40555813], [1517106600000, 2.896e-05, 2.896e-05, 2.896e-05, 2.896e-05, 17985.42492129], [1517106660000, 2.896e-05, 2.896e-05, 2.89e-05, 2.89e-05, 9972.71156019], [1517106720000, 2.89e-05, 2.89e-05, 2.878e-05, 2.878e-05, 2453.17196025], [1517106780000, 2.878e-05, 2.878e-05, 2.878e-05, 2.878e-05, 370.0], [1517106840000, 2.878e-05, 2.878e-05, 2.878e-05, 2.878e-05, 587.1168925], [1517106900000, 2.878e-05, 2.878e-05, 2.878e-05, 2.878e-05, 299.42959502], [1517106960000, 2.878e-05, 2.878e-05, 2.878e-05, 2.878e-05, 1985.16657251], [1517107020000, 2.878e-05, 2.878e-05, 2.877e-05, 2.877e-05, 4430.518727], [1517107080000, 2.877e-05, 2.877e-05, 2.877e-05, 2.877e-05, 5060.0], [1517107140000, 2.877e-05, 2.89e-05, 2.877e-05, 2.877e-05, 19651.1263207], [1517107200000, 2.877e-05, 2.877e-05, 2.877e-05, 2.877e-05, 4720.46661258], [1517107260000, 2.878e-05, 2.896e-05, 2.878e-05, 2.896e-05, 19600.0], [1517107320000, 2.896e-05, 2.896e-05, 2.896e-05, 2.896e-05, 6000.0], [1517107380000, 2.896e-05, 2.896e-05, 2.878e-05, 2.896e-05, 14470.22782971], [1517107440000, 2.896e-05, 2.896e-05, 2.896e-05, 2.896e-05, 392.8962125], [1517107500000, 2.895e-05, 2.895e-05, 2.895e-05, 2.895e-05, 2306.47767455], [1517107560000, 2.895e-05, 2.895e-05, 2.895e-05, 2.895e-05, 305.0], [1517107620000, 2.895e-05, 2.896e-05, 2.886e-05, 2.886e-05, 1381.45100299], [1517107680000, 2.894e-05, 2.894e-05, 2.894e-05, 2.894e-05, 925.08448275], [1517107740000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 1301.20559875], [1517107800000, 2.886e-05, 2.886e-05, 2.878e-05, 2.878e-05, 26432.88153138], [1517107860000, 2.878e-05, 2.878e-05, 2.877e-05, 2.877e-05, 25697.54085532], [1517107920000, 2.877e-05, 2.877e-05, 2.877e-05, 2.877e-05, 569.52631961], [1517107980000, 2.877e-05, 2.877e-05, 2.877e-05, 2.877e-05, 1084.34428351], [1517108100000, 2.878e-05, 2.878e-05, 2.878e-05, 2.878e-05, 1000.0], [1517108280000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 2900.14648755], [1517108340000, 2.878e-05, 2.878e-05, 2.878e-05, 2.878e-05, 30.0], [1517108460000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 215.15130409], [1517108520000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 9632.34952554], [1517108580000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 3682.49079108], [1517108640000, 2.877e-05, 2.878e-05, 2.877e-05, 2.878e-05, 3550.21615112], [1517108700000, 2.878e-05, 2.878e-05, 2.878e-05, 2.878e-05, 1352.72101551], [1517108760000, 2.883e-05, 2.885e-05, 2.883e-05, 2.885e-05, 10311.46198609], [1517108820000, 2.886e-05, 2.892e-05, 2.885e-05, 2.89e-05, 5600.97642015], [1517108880000, 2.89e-05, 2.892e-05, 2.89e-05, 2.89e-05, 6786.33341683], [1517108940000, 2.89e-05, 2.89e-05, 2.89e-05, 2.89e-05, 15029.90928592], [1517109000000, 2.89e-05, 2.892e-05, 2.89e-05, 2.892e-05, 11186.98778092], [1517109060000, 2.89e-05, 2.892e-05, 2.885e-05, 2.892e-05, 15131.33418168], [1517109180000, 2.885e-05, 2.885e-05, 2.885e-05, 2.885e-05, 1350.0], [1517109240000, 2.885e-05, 2.885e-05, 2.885e-05, 2.885e-05, 4433.81549109], [1517109360000, 2.885e-05, 2.885e-05, 2.877e-05, 2.877e-05, 10067.93300677], [1517109420000, 2.873e-05, 2.873e-05, 2.866e-05, 2.866e-05, 2291.64869402], [1517109480000, 2.866e-05, 2.873e-05, 2.866e-05, 2.873e-05, 9903.29086555], [1517109600000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 5871.71819841], [1517109660000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 588.91650095], [1517109840000, 2.868e-05, 2.873e-05, 2.868e-05, 2.873e-05, 3008.02615413], [1517109900000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 2507.42447585], [1517109960000, 2.883e-05, 2.883e-05, 2.883e-05, 2.883e-05, 711.73564484], [1517110020000, 2.883e-05, 2.883e-05, 2.883e-05, 2.883e-05, 1389.08149551], [1517110080000, 2.885e-05, 2.885e-05, 2.885e-05, 2.885e-05, 2242.16616171], [1517110200000, 2.893e-05, 2.893e-05, 2.893e-05, 2.893e-05, 9638.16418166], [1517110260000, 2.883e-05, 2.883e-05, 2.883e-05, 2.883e-05, 4862.62532067], [1517110320000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 25.86909978], [1517110380000, 2.877e-05, 2.877e-05, 2.877e-05, 2.877e-05, 12693.6079242], [1517110500000, 2.895e-05, 2.895e-05, 2.841e-05, 2.841e-05, 16646.45814599], [1517110560000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 42.26985242], [1517110620000, 2.858e-05, 2.858e-05, 2.857e-05, 2.857e-05, 1128.87958207], [1517110680000, 2.886e-05, 2.886e-05, 2.857e-05, 2.857e-05, 5871.28071725], [1517110740000, 2.862e-05, 2.862e-05, 2.86e-05, 2.86e-05, 16423.89267999], [1517110800000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 20.46759149], [1517110860000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 2275.03319166], [1517110920000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 3077.19893985], [1517110980000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 689.99383332], [1517111040000, 2.856e-05, 2.856e-05, 2.856e-05, 2.856e-05, 5100.0], [1517111100000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 2786.18797833], [1517111160000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 521.41490895], [1517111220000, 2.882e-05, 2.882e-05, 2.858e-05, 2.858e-05, 1437.3114903], [1517111340000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 71.91763797], [1517111400000, 2.88e-05, 2.88e-05, 2.87e-05, 2.87e-05, 3119.69472497], [1517111520000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 828.18260249], [1517111640000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 280.94050587], [1517111700000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 1249.75883748], [1517111760000, 2.869e-05, 2.882e-05, 2.869e-05, 2.882e-05, 135340.94125515], [1517111820000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 200.0], [1517111940000, 2.861e-05, 2.87e-05, 2.86e-05, 2.87e-05, 12629.91811968], [1517112000000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 1652.14320487], [1517112060000, 2.882e-05, 2.887e-05, 2.882e-05, 2.887e-05, 396.09691125], [1517112240000, 2.887e-05, 2.887e-05, 2.887e-05, 2.887e-05, 1921.09442613], [1517112300000, 2.887e-05, 2.887e-05, 2.887e-05, 2.887e-05, 683.945004], [1517112360000, 2.887e-05, 2.887e-05, 2.887e-05, 2.887e-05, 4.4e-07], [1517112420000, 2.887e-05, 2.887e-05, 2.887e-05, 2.887e-05, 2783.40518637], [1517112600000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 6082.99158248], [1517112720000, 2.885e-05, 2.885e-05, 2.885e-05, 2.885e-05, 2478.58800676], [1517112780000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 3535.51691624], [1517112900000, 2.875e-05, 2.884e-05, 2.875e-05, 2.876e-05, 3103.8061218], [1517112960000, 2.876e-05, 2.876e-05, 2.87e-05, 2.87e-05, 12355.55971524], [1517113020000, 2.858e-05, 2.858e-05, 2.855e-05, 2.858e-05, 1204.55464662], [1517113140000, 2.858e-05, 2.858e-05, 2.858e-05, 2.858e-05, 2226.58247864], [1517113260000, 2.861e-05, 2.88e-05, 2.861e-05, 2.88e-05, 3333.41684273], [1517113320000, 2.88e-05, 2.88e-05, 2.879e-05, 2.879e-05, 3096.81348422], [1517113380000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 327.20664472], [1517113560000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 7084.09022251], [1517113620000, 2.87e-05, 2.87e-05, 2.869e-05, 2.869e-05, 8810.10511111], [1517113680000, 2.868e-05, 2.868e-05, 2.866e-05, 2.866e-05, 193.80193013], [1517113740000, 2.86e-05, 2.864e-05, 2.858e-05, 2.858e-05, 7181.93353213], [1517113800000, 2.857e-05, 2.857e-05, 2.857e-05, 2.857e-05, 1634.58021612], [1517113860000, 2.858e-05, 2.858e-05, 2.855e-05, 2.855e-05, 14676.46014118], [1517113920000, 2.855e-05, 2.855e-05, 2.841e-05, 2.853e-05, 26133.22991986], [1517113980000, 2.844e-05, 2.844e-05, 2.838e-05, 2.843e-05, 106149.56016994], [1517114040000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 351.74111853], [1517114100000, 2.838e-05, 2.852e-05, 2.837e-05, 2.852e-05, 5151.09311386], [1517114280000, 2.847e-05, 2.852e-05, 2.847e-05, 2.852e-05, 1727.37375677], [1517114340000, 2.846e-05, 2.846e-05, 2.845e-05, 2.845e-05, 73.86694227], [1517114400000, 2.845e-05, 2.845e-05, 2.845e-05, 2.845e-05, 2554.7560123], [1517114460000, 2.845e-05, 2.845e-05, 2.844e-05, 2.844e-05, 2857.61944786], [1517114520000, 2.843e-05, 2.843e-05, 2.842e-05, 2.842e-05, 5463.52005637], [1517114580000, 2.843e-05, 2.844e-05, 2.843e-05, 2.844e-05, 1496.7], [1517114640000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 948.58243], [1517114700000, 2.841e-05, 2.844e-05, 2.835e-05, 2.844e-05, 8499.18573394], [1517114760000, 2.836e-05, 2.836e-05, 2.836e-05, 2.836e-05, 133.10030069], [1517114820000, 2.837e-05, 2.843e-05, 2.835e-05, 2.843e-05, 1023.37578014], [1517114880000, 2.843e-05, 2.843e-05, 2.842e-05, 2.842e-05, 1705.8633882], [1517114940000, 2.842e-05, 2.842e-05, 2.835e-05, 2.835e-05, 128.82721369], [1517115000000, 2.835e-05, 2.842e-05, 2.835e-05, 2.842e-05, 7525.74332953], [1517115060000, 2.842e-05, 2.842e-05, 2.84e-05, 2.84e-05, 317.42094407], [1517115120000, 2.84e-05, 2.844e-05, 2.84e-05, 2.842e-05, 15967.57908649], [1517115180000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 4254.32293998], [1517115240000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 871.04998238], [1517115300000, 2.835e-05, 2.844e-05, 2.834e-05, 2.844e-05, 3704.16601405], [1517115360000, 2.844e-05, 2.844e-05, 2.835e-05, 2.835e-05, 950.60884488], [1517115420000, 2.835e-05, 2.835e-05, 2.834e-05, 2.834e-05, 1348.38616327], [1517115480000, 2.833e-05, 2.844e-05, 2.825e-05, 2.825e-05, 4397.12680224], [1517115600000, 2.827e-05, 2.844e-05, 2.827e-05, 2.844e-05, 3948.26906535], [1517115660000, 2.843e-05, 2.843e-05, 2.826e-05, 2.826e-05, 88.691523], [1517115720000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 21.41707712], [1517115780000, 2.843e-05, 2.843e-05, 2.828e-05, 2.828e-05, 2556.05631376], [1517115840000, 2.828e-05, 2.828e-05, 2.828e-05, 2.828e-05, 5697.17446582], [1517115900000, 2.84e-05, 2.84e-05, 2.828e-05, 2.84e-05, 4245.34194199], [1517115960000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 292.65351305], [1517116020000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 2190.90114082], [1517116080000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 240.99114806], [1517116140000, 2.828e-05, 2.829e-05, 2.828e-05, 2.829e-05, 184.76104056], [1517116200000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 176.74089784], [1517116260000, 2.828e-05, 2.829e-05, 2.828e-05, 2.828e-05, 579.71702272], [1517116320000, 2.828e-05, 2.828e-05, 2.825e-05, 2.825e-05, 9055.97532667], [1517116380000, 2.825e-05, 2.839e-05, 2.824e-05, 2.824e-05, 7380.96227743], [1517116440000, 2.829e-05, 2.839e-05, 2.829e-05, 2.839e-05, 1293.59156456], [1517116500000, 2.842e-05, 2.843e-05, 2.839e-05, 2.839e-05, 6506.78146062], [1517116560000, 2.839e-05, 2.844e-05, 2.839e-05, 2.844e-05, 53157.8929226], [1517116620000, 2.844e-05, 2.844e-05, 2.843e-05, 2.844e-05, 2931.89503053], [1517116680000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 177.6877651], [1517116740000, 2.844e-05, 2.844e-05, 2.843e-05, 2.843e-05, 18288.37379831], [1517116800000, 2.843e-05, 2.844e-05, 2.843e-05, 2.843e-05, 5382.99580603], [1517116860000, 2.824e-05, 2.838e-05, 2.824e-05, 2.824e-05, 2032.65815046], [1517116920000, 2.824e-05, 2.843e-05, 2.824e-05, 2.84e-05, 2446.3807231], [1517116980000, 2.84e-05, 2.84e-05, 2.823e-05, 2.823e-05, 5177.63510238], [1517117100000, 2.823e-05, 2.823e-05, 2.822e-05, 2.822e-05, 11613.003463], [1517117160000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 3557.95943451], [1517117220000, 2.821e-05, 2.821e-05, 2.811e-05, 2.811e-05, 3377.34585607], [1517117280000, 2.81e-05, 2.81e-05, 2.805e-05, 2.809e-05, 20846.514021], [1517117340000, 2.809e-05, 2.809e-05, 2.8e-05, 2.809e-05, 19256.94764452], [1517117400000, 2.809e-05, 2.809e-05, 2.809e-05, 2.809e-05, 2793.57688257], [1517117460000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 117.15227648], [1517117520000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 2836.61194236], [1517117580000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 496.77652628], [1517117640000, 2.813e-05, 2.839e-05, 2.813e-05, 2.839e-05, 978.84757851], [1517117700000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 283.9084044], [1517117760000, 2.835e-05, 2.839e-05, 2.835e-05, 2.839e-05, 4552.67996178], [1517117820000, 2.839e-05, 2.847e-05, 2.815e-05, 2.847e-05, 20627.71505028], [1517117880000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 796.99999981], [1517118000000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 63.63], [1517118060000, 2.848e-05, 2.848e-05, 2.848e-05, 2.848e-05, 1420.0], [1517118120000, 2.848e-05, 2.848e-05, 2.847e-05, 2.847e-05, 12553.9999501], [1517118180000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 2521.45440821], [1517118240000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 945.33387], [1517118360000, 2.847e-05, 2.85e-05, 2.847e-05, 2.85e-05, 476.45443736], [1517118420000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 90.86579765], [1517118480000, 2.847e-05, 2.847e-05, 2.827e-05, 2.827e-05, 420.00000002], [1517118540000, 2.828e-05, 2.828e-05, 2.815e-05, 2.815e-05, 4050.0], [1517118600000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 2637.05784764], [1517118780000, 2.845e-05, 2.845e-05, 2.845e-05, 2.845e-05, 31.95746924], [1517118840000, 2.847e-05, 2.847e-05, 2.845e-05, 2.845e-05, 417.38299832], [1517118900000, 2.845e-05, 2.847e-05, 2.845e-05, 2.845e-05, 6147.06727798], [1517118960000, 2.847e-05, 2.847e-05, 2.845e-05, 2.847e-05, 8746.92941573], [1517119020000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 659.29961893], [1517119080000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 100.2284426], [1517119140000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 35036.84896771], [1517119260000, 2.849e-05, 2.849e-05, 2.849e-05, 2.849e-05, 0.03195958], [1517119320000, 2.848e-05, 2.848e-05, 2.847e-05, 2.847e-05, 2056.32400601], [1517119380000, 2.847e-05, 2.847e-05, 2.835e-05, 2.835e-05, 1333.46912444], [1517119440000, 2.845e-05, 2.847e-05, 2.845e-05, 2.847e-05, 289.51588804], [1517119500000, 2.823e-05, 2.844e-05, 2.799e-05, 2.799e-05, 24533.98386839], [1517119560000, 2.801e-05, 2.801e-05, 2.8e-05, 2.801e-05, 10204.16005363], [1517119620000, 2.811e-05, 2.811e-05, 2.803e-05, 2.803e-05, 2702.16147281], [1517119680000, 2.838e-05, 2.841e-05, 2.838e-05, 2.841e-05, 1504.35169809], [1517119740000, 2.839e-05, 2.84e-05, 2.839e-05, 2.84e-05, 526.04854332], [1517119800000, 2.84e-05, 2.84e-05, 2.809e-05, 2.809e-05, 3128.53735665], [1517119860000, 2.805e-05, 2.838e-05, 2.801e-05, 2.838e-05, 20027.8594914], [1517119920000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 327.2066446], [1517119980000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 1.2e-07], [1517120040000, 2.818e-05, 2.818e-05, 2.818e-05, 2.818e-05, 725.09497654], [1517120160000, 2.818e-05, 2.847e-05, 2.801e-05, 2.847e-05, 43885.56541362], [1517120280000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 2585.44467314], [1517120460000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 106.08947866], [1517120520000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 105.67101091], [1517120580000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 35.23608174], [1517120700000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 70304.9465835], [1517120760000, 2.844e-05, 2.844e-05, 2.818e-05, 2.818e-05, 169.64155185], [1517120820000, 2.839e-05, 2.844e-05, 2.835e-05, 2.835e-05, 795.20409602], [1517120880000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 328.814], [1517121000000, 2.834e-05, 2.834e-05, 2.817e-05, 2.817e-05, 2418.99382693], [1517121060000, 2.82e-05, 2.834e-05, 2.82e-05, 2.82e-05, 726.47807681], [1517121120000, 2.821e-05, 2.821e-05, 2.815e-05, 2.815e-05, 8617.52204384], [1517121180000, 2.815e-05, 2.815e-05, 2.808e-05, 2.808e-05, 341.22436725], [1517121240000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 3261.23458818], [1517121300000, 2.808e-05, 2.814e-05, 2.808e-05, 2.814e-05, 5220.10828731], [1517121420000, 2.81e-05, 2.814e-05, 2.81e-05, 2.81e-05, 1093.8787218], [1517121540000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 1941.45472717], [1517121600000, 2.808e-05, 2.81e-05, 2.808e-05, 2.81e-05, 68613.73229535], [1517121660000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 8012.09056583], [1517121720000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 1800.06673707], [1517121960000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 3505.02960128], [1517122020000, 2.805e-05, 2.805e-05, 2.803e-05, 2.805e-05, 5572.57970538], [1517122080000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 597.100975], [1517122140000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 268.49199196], [1517122200000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 903.53563203], [1517122260000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 14260.32753362], [1517122320000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 1000.0], [1517122380000, 2.811e-05, 2.811e-05, 2.811e-05, 2.811e-05, 52.62830117], [1517122440000, 2.811e-05, 2.811e-05, 2.811e-05, 2.811e-05, 41.50088286], [1517122500000, 2.811e-05, 2.811e-05, 2.811e-05, 2.811e-05, 2042.97368012], [1517122800000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 1127.20627486], [1517122860000, 2.806e-05, 2.81e-05, 2.806e-05, 2.81e-05, 219.21502669], [1517122920000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 119.21502669], [1517122980000, 2.81e-05, 2.81e-05, 2.806e-05, 2.806e-05, 377.524693], [1517123040000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 4700.91774527], [1517123160000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 1000.0], [1517123220000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 712.46464738], [1517123340000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 3999.02673821], [1517123400000, 2.805e-05, 2.805e-05, 2.8e-05, 2.8e-05, 10507.408966], [1517123460000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 3048.12287805], [1517123520000, 2.806e-05, 2.83e-05, 2.806e-05, 2.83e-05, 14968.87992034], [1517123580000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 424.02827], [1517123640000, 2.825e-05, 2.83e-05, 2.825e-05, 2.825e-05, 9938.07684329], [1517123700000, 2.825e-05, 2.825e-05, 2.825e-05, 2.825e-05, 1603.41002255], [1517123760000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 1259.77794351], [1517123880000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 212.53291414], [1517123940000, 2.806e-05, 2.816e-05, 2.806e-05, 2.816e-05, 12094.82663644], [1517124000000, 2.816e-05, 2.824e-05, 2.816e-05, 2.818e-05, 6946.72923466], [1517124060000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 181.78598624], [1517124180000, 2.81e-05, 2.823e-05, 2.8e-05, 2.823e-05, 12895.67729769], [1517124240000, 2.802e-05, 2.802e-05, 2.802e-05, 2.802e-05, 104.0], [1517124300000, 2.813e-05, 2.815e-05, 2.813e-05, 2.815e-05, 14797.47120496], [1517124360000, 2.814e-05, 2.815e-05, 2.814e-05, 2.814e-05, 427.57360363], [1517124420000, 2.814e-05, 2.814e-05, 2.802e-05, 2.802e-05, 30875.74305771], [1517124480000, 2.802e-05, 2.814e-05, 2.802e-05, 2.814e-05, 1559.50510573], [1517124540000, 2.814e-05, 2.814e-05, 2.804e-05, 2.804e-05, 248.78519688], [1517124600000, 2.804e-05, 2.804e-05, 2.803e-05, 2.803e-05, 667.57190729], [1517124660000, 2.803e-05, 2.803e-05, 2.802e-05, 2.802e-05, 2328.3661513], [1517124720000, 2.802e-05, 2.802e-05, 2.802e-05, 2.802e-05, 2610.76231799], [1517124840000, 2.801e-05, 2.802e-05, 2.801e-05, 2.802e-05, 4214.81756761], [1517124900000, 2.801e-05, 2.802e-05, 2.801e-05, 2.802e-05, 8193.27799713], [1517124960000, 2.801e-05, 2.814e-05, 2.8e-05, 2.814e-05, 27365.14103685], [1517125020000, 2.814e-05, 2.817e-05, 2.8e-05, 2.8e-05, 39748.81871066], [1517125080000, 2.801e-05, 2.801e-05, 2.801e-05, 2.801e-05, 1000.0], [1517125140000, 2.817e-05, 2.818e-05, 2.817e-05, 2.818e-05, 2765.65362303], [1517125200000, 2.817e-05, 2.817e-05, 2.817e-05, 2.817e-05, 357.234158], [1517125260000, 2.816e-05, 2.816e-05, 2.816e-05, 2.816e-05, 14508.02781646], [1517125320000, 2.816e-05, 2.816e-05, 2.816e-05, 2.816e-05, 5114.06751339], [1517125380000, 2.816e-05, 2.816e-05, 2.816e-05, 2.816e-05, 59.20175261], [1517125440000, 2.816e-05, 2.816e-05, 2.816e-05, 2.816e-05, 1946.00721149], [1517125500000, 2.816e-05, 2.816e-05, 2.816e-05, 2.816e-05, 1657.18408172], [1517125560000, 2.817e-05, 2.817e-05, 2.817e-05, 2.817e-05, 1994.09873458], [1517125620000, 2.817e-05, 2.817e-05, 2.816e-05, 2.816e-05, 3159.76165997], [1517125680000, 2.816e-05, 2.816e-05, 2.816e-05, 2.816e-05, 2105.60068809], [1517125800000, 2.801e-05, 2.801e-05, 2.801e-05, 2.801e-05, 1787.5385626], [1517125860000, 2.8e-05, 2.801e-05, 2.8e-05, 2.801e-05, 3600.33624183], [1517125920000, 2.801e-05, 2.801e-05, 2.801e-05, 2.801e-05, 1721.18963317], [1517125980000, 2.801e-05, 2.801e-05, 2.801e-05, 2.801e-05, 8754.79135078], [1517126100000, 2.801e-05, 2.801e-05, 2.801e-05, 2.801e-05, 1024.92471163], [1517126160000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 3625.86848777], [1517126220000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 2560.36017101], [1517126340000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 3257.220625], [1517126400000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 718.12510623], [1517126460000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 133.38328258], [1517126520000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 5898.47379516], [1517126580000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 2235.28385625], [1517126640000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 6777.26222456], [1517126700000, 2.8e-05, 2.8e-05, 2.792e-05, 2.792e-05, 3897.1658632], [1517126760000, 2.792e-05, 2.793e-05, 2.792e-05, 2.793e-05, 1045.48776978], [1517126820000, 2.795e-05, 2.795e-05, 2.795e-05, 2.795e-05, 3568.87298748], [1517126880000, 2.793e-05, 2.793e-05, 2.792e-05, 2.793e-05, 1272.38080271], [1517127000000, 2.793e-05, 2.793e-05, 2.793e-05, 2.793e-05, 758.0], [1517127060000, 2.793e-05, 2.793e-05, 2.791e-05, 2.791e-05, 10351.51556577], [1517127120000, 2.791e-05, 2.791e-05, 2.788e-05, 2.788e-05, 984.654194], [1517127180000, 2.788e-05, 2.791e-05, 2.788e-05, 2.791e-05, 13534.513341], [1517127240000, 2.791e-05, 2.791e-05, 2.79e-05, 2.79e-05, 7606.13679855], [1517127300000, 2.788e-05, 2.788e-05, 2.787e-05, 2.788e-05, 5624.39404801], [1517127360000, 2.786e-05, 2.788e-05, 2.786e-05, 2.786e-05, 2636.26313764], [1517127420000, 2.786e-05, 2.788e-05, 2.786e-05, 2.788e-05, 1501.60527531], [1517127480000, 2.788e-05, 2.788e-05, 2.788e-05, 2.788e-05, 992.92126825], [1517127540000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 1145.83210012], [1517127600000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 1316.86861489], [1517127660000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 1055.9749062], [1517127780000, 2.803e-05, 2.806e-05, 2.803e-05, 2.805e-05, 5428.51766279], [1517127840000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 4306.37735466], [1517127900000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 110.59273282], [1517127960000, 2.805e-05, 2.805e-05, 2.8e-05, 2.8e-05, 25691.95506008], [1517128020000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 10862.62750429], [1517128140000, 2.789e-05, 2.79e-05, 2.789e-05, 2.79e-05, 432.06180144], [1517128200000, 2.79e-05, 2.79e-05, 2.79e-05, 2.79e-05, 47.43380645], [1517128260000, 2.789e-05, 2.789e-05, 2.787e-05, 2.787e-05, 11699.63935603], [1517128320000, 2.786e-05, 2.787e-05, 2.786e-05, 2.787e-05, 3265.25439331], [1517128380000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 379.160568], [1517128440000, 2.787e-05, 2.787e-05, 2.787e-05, 2.787e-05, 741.95419118], [1517128500000, 2.788e-05, 2.789e-05, 2.787e-05, 2.787e-05, 7693.6949053], [1517128620000, 2.787e-05, 2.787e-05, 2.787e-05, 2.787e-05, 35.88087549], [1517128740000, 2.786e-05, 2.786e-05, 2.786e-05, 2.786e-05, 982.02168584], [1517128800000, 2.786e-05, 2.799e-05, 2.786e-05, 2.799e-05, 2923.70575679], [1517128860000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 150.0], [1517128980000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 23.5886819], [1517129040000, 2.798e-05, 2.799e-05, 2.798e-05, 2.798e-05, 4893.61845165], [1517129100000, 2.799e-05, 2.8e-05, 2.799e-05, 2.8e-05, 622.04965196], [1517129160000, 2.8e-05, 2.8e-05, 2.798e-05, 2.798e-05, 2877.16702703], [1517129340000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 52.62830117], [1517129400000, 2.801e-05, 2.801e-05, 2.801e-05, 2.801e-05, 237.38695859], [1517129460000, 2.801e-05, 2.801e-05, 2.801e-05, 2.801e-05, 258.30867464], [1517129520000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 917.17200952], [1517129760000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 1330.29871216], [1517129820000, 2.815e-05, 2.815e-05, 2.805e-05, 2.805e-05, 3701.15766267], [1517129880000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 257.8248468], [1517129940000, 2.81e-05, 2.816e-05, 2.81e-05, 2.81e-05, 10399.59467624], [1517130000000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 112.97843593], [1517130180000, 2.807e-05, 2.817e-05, 2.807e-05, 2.808e-05, 956.36588918], [1517130240000, 2.817e-05, 2.824e-05, 2.808e-05, 2.808e-05, 12366.89282035], [1517130300000, 2.824e-05, 2.825e-05, 2.807e-05, 2.807e-05, 6452.28291474], [1517130360000, 2.807e-05, 2.807e-05, 2.806e-05, 2.806e-05, 1317.7282607], [1517130420000, 2.806e-05, 2.807e-05, 2.806e-05, 2.807e-05, 233.32630157], [1517130480000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 221.04340147], [1517130660000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 1329.26145626], [1517130720000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 975.65325497], [1517130780000, 2.805e-05, 2.806e-05, 2.802e-05, 2.806e-05, 3009.82184257], [1517130840000, 2.805e-05, 2.805e-05, 2.802e-05, 2.802e-05, 4471.12253993], [1517130900000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 794.56377224], [1517130960000, 2.805e-05, 2.806e-05, 2.805e-05, 2.806e-05, 148.8056401], [1517131020000, 2.803e-05, 2.803e-05, 2.803e-05, 2.803e-05, 160.0], [1517131080000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 29.49715604], [1517131200000, 2.804e-05, 2.804e-05, 2.803e-05, 2.803e-05, 15721.17841979], [1517131260000, 2.804e-05, 2.805e-05, 2.803e-05, 2.805e-05, 15167.0], [1517131320000, 2.803e-05, 2.804e-05, 2.803e-05, 2.803e-05, 9427.98694034], [1517131380000, 2.803e-05, 2.807e-05, 2.803e-05, 2.803e-05, 299.41109514], [1517131440000, 2.803e-05, 2.803e-05, 2.803e-05, 2.803e-05, 3080.73302089], [1517131500000, 2.803e-05, 2.803e-05, 2.803e-05, 2.803e-05, 317.97128703], [1517131560000, 2.803e-05, 2.803e-05, 2.802e-05, 2.802e-05, 8243.72367478], [1517131620000, 2.803e-05, 2.807e-05, 2.803e-05, 2.807e-05, 152.05831164], [1517131680000, 2.807e-05, 2.819e-05, 2.802e-05, 2.819e-05, 14479.97565334], [1517131800000, 2.815e-05, 2.815e-05, 2.802e-05, 2.802e-05, 11932.5111078], [1517131860000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 548.10256538], [1517131920000, 2.815e-05, 2.815e-05, 2.802e-05, 2.802e-05, 3546.16112008], [1517131980000, 2.802e-05, 2.802e-05, 2.8e-05, 2.8e-05, 2871.85603444], [1517132040000, 2.8e-05, 2.8e-05, 2.798e-05, 2.798e-05, 4559.72372981], [1517132100000, 2.802e-05, 2.814e-05, 2.802e-05, 2.814e-05, 433.993574], [1517132160000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 177.6830135], [1517132220000, 2.802e-05, 2.802e-05, 2.802e-05, 2.802e-05, 2500.0], [1517132280000, 2.803e-05, 2.815e-05, 2.803e-05, 2.803e-05, 2974.11899611], [1517132340000, 2.803e-05, 2.803e-05, 2.803e-05, 2.803e-05, 282.64120758], [1517132400000, 2.804e-05, 2.804e-05, 2.804e-05, 2.804e-05, 3586.7908783], [1517132520000, 2.815e-05, 2.815e-05, 2.804e-05, 2.804e-05, 355.7559359], [1517132580000, 2.815e-05, 2.815e-05, 2.804e-05, 2.804e-05, 136.41672826], [1517132640000, 2.805e-05, 2.805e-05, 2.803e-05, 2.805e-05, 4841.60032235], [1517132700000, 2.806e-05, 2.806e-05, 2.803e-05, 2.803e-05, 299.99549602], [1517132760000, 2.803e-05, 2.804e-05, 2.803e-05, 2.803e-05, 6330.57172847], [1517132820000, 2.802e-05, 2.803e-05, 2.802e-05, 2.802e-05, 14619.99981373], [1517132880000, 2.802e-05, 2.802e-05, 2.798e-05, 2.802e-05, 19765.69893821], [1517132940000, 2.805e-05, 2.805e-05, 2.798e-05, 2.798e-05, 19923.5864987], [1517133000000, 2.799e-05, 2.805e-05, 2.799e-05, 2.805e-05, 1407.0], [1517133120000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 0.92842327], [1517133180000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 781.598739], [1517133240000, 2.813e-05, 2.813e-05, 2.805e-05, 2.805e-05, 22430.20663135], [1517133300000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 1483.50110881], [1517133360000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 4109.37647001], [1517133420000, 2.805e-05, 2.806e-05, 2.805e-05, 2.806e-05, 848.78008374], [1517133540000, 2.807e-05, 2.819e-05, 2.807e-05, 2.819e-05, 10294.27746613], [1517133600000, 2.819e-05, 2.824e-05, 2.819e-05, 2.824e-05, 13229.06434608], [1517133660000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 2740.619], [1517133840000, 2.807e-05, 2.808e-05, 2.803e-05, 2.807e-05, 1477.1707543], [1517133900000, 2.808e-05, 2.824e-05, 2.808e-05, 2.824e-05, 20142.43675513], [1517133960000, 2.824e-05, 2.824e-05, 2.824e-05, 2.824e-05, 5102.16102802], [1517134020000, 2.823e-05, 2.823e-05, 2.823e-05, 2.823e-05, 656.87640622], [1517134140000, 2.803e-05, 2.803e-05, 2.803e-05, 2.803e-05, 954.2790681], [1517134200000, 2.803e-05, 2.803e-05, 2.803e-05, 2.803e-05, 268.49199168], [1517134320000, 2.808e-05, 2.808e-05, 2.803e-05, 2.803e-05, 1356.79362476], [1517134380000, 2.821e-05, 2.824e-05, 2.821e-05, 2.823e-05, 27269.19948867], [1517134500000, 2.824e-05, 2.824e-05, 2.803e-05, 2.803e-05, 26843.53943071], [1517134620000, 2.804e-05, 2.804e-05, 2.804e-05, 2.804e-05, 460.5196184], [1517134680000, 2.821e-05, 2.822e-05, 2.805e-05, 2.805e-05, 891.23425556], [1517134740000, 2.806e-05, 2.806e-05, 2.805e-05, 2.805e-05, 1000.0], [1517134800000, 2.805e-05, 2.805e-05, 2.804e-05, 2.804e-05, 991.569185], [1517134860000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 2844.77149822], [1517134980000, 2.806e-05, 2.82e-05, 2.806e-05, 2.82e-05, 454.99999999], [1517135040000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 30.34455867], [1517135100000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 30.35531915], [1517135160000, 2.819e-05, 2.819e-05, 2.819e-05, 2.819e-05, 178.68406181], [1517135220000, 2.819e-05, 2.819e-05, 2.819e-05, 2.819e-05, 355.86871209], [1517135340000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 2674.378212], [1517135460000, 2.808e-05, 2.81e-05, 2.808e-05, 2.81e-05, 3027.13843103], [1517135520000, 2.81e-05, 2.817e-05, 2.81e-05, 2.817e-05, 4309.63603165], [1517135640000, 2.811e-05, 2.811e-05, 2.811e-05, 2.811e-05, 929.63817741], [1517135700000, 2.811e-05, 2.824e-05, 2.81e-05, 2.81e-05, 26553.98447518], [1517135760000, 2.811e-05, 2.811e-05, 2.81e-05, 2.81e-05, 11056.99493748], [1517135820000, 2.811e-05, 2.811e-05, 2.811e-05, 2.811e-05, 293.30197028], [1517135880000, 2.812e-05, 2.812e-05, 2.812e-05, 2.812e-05, 1408.88701078], [1517136000000, 2.812e-05, 2.821e-05, 2.812e-05, 2.821e-05, 1921.93537683], [1517136060000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 1291.55452382], [1517136120000, 2.821e-05, 2.824e-05, 2.821e-05, 2.824e-05, 87299.5982506], [1517136180000, 2.821e-05, 2.824e-05, 2.821e-05, 2.824e-05, 780.09576451], [1517136240000, 2.824e-05, 2.824e-05, 2.824e-05, 2.824e-05, 353.2223796], [1517136300000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 17.90384615], [1517136360000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 136.90275185], [1517136420000, 2.812e-05, 2.812e-05, 2.812e-05, 2.812e-05, 497.64883983], [1517136480000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 351.29260833], [1517136540000, 2.812e-05, 2.813e-05, 2.812e-05, 2.812e-05, 6940.73297932], [1517136600000, 2.812e-05, 2.812e-05, 2.81e-05, 2.812e-05, 2140.19079808], [1517136660000, 2.812e-05, 2.812e-05, 2.812e-05, 2.812e-05, 2279.86340517], [1517136720000, 2.812e-05, 2.812e-05, 2.812e-05, 2.812e-05, 468.79945], [1517136780000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 983.01191909], [1517136900000, 2.813e-05, 2.813e-05, 2.805e-05, 2.805e-05, 20041.52785898], [1517136960000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 2055.01717885], [1517137020000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 1725.55124599], [1517137080000, 2.804e-05, 2.805e-05, 2.804e-05, 2.804e-05, 2679.9503758], [1517137140000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 92.05936756], [1517137200000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 96.80404016], [1517137260000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 1844.03239224], [1517137320000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 96.80404016], [1517137380000, 2.819e-05, 2.819e-05, 2.806e-05, 2.806e-05, 533.99743937], [1517137440000, 2.819e-05, 2.819e-05, 2.819e-05, 2.819e-05, 1047.12764627], [1517137500000, 2.819e-05, 2.819e-05, 2.819e-05, 2.819e-05, 2419.88990081], [1517137560000, 2.82e-05, 2.82e-05, 2.819e-05, 2.819e-05, 449.51971823], [1517137620000, 2.819e-05, 2.819e-05, 2.819e-05, 2.819e-05, 1266.88019147], [1517137680000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 2814.62206008], [1517137740000, 2.819e-05, 2.819e-05, 2.819e-05, 2.819e-05, 91.88], [1517137800000, 2.819e-05, 2.824e-05, 2.819e-05, 2.824e-05, 3854.77852343], [1517137860000, 2.824e-05, 2.824e-05, 2.824e-05, 2.824e-05, 1999.13424653], [1517137920000, 2.824e-05, 2.824e-05, 2.824e-05, 2.824e-05, 6517.19412335], [1517137980000, 2.824e-05, 2.824e-05, 2.824e-05, 2.824e-05, 1088.01138089], [1517138040000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 802.34980509], [1517138100000, 2.808e-05, 2.822e-05, 2.808e-05, 2.808e-05, 635.8543208], [1517138160000, 2.822e-05, 2.822e-05, 2.822e-05, 2.822e-05, 400.68107348], [1517138220000, 2.822e-05, 2.822e-05, 2.822e-05, 2.822e-05, 291.95891211], [1517138280000, 2.823e-05, 2.823e-05, 2.822e-05, 2.822e-05, 2146.63012479], [1517138340000, 2.816e-05, 2.816e-05, 2.816e-05, 2.816e-05, 33.0], [1517138400000, 2.816e-05, 2.816e-05, 2.808e-05, 2.808e-05, 1050.48258974], [1517138460000, 2.808e-05, 2.816e-05, 2.808e-05, 2.808e-05, 229.55631108], [1517138580000, 2.808e-05, 2.808e-05, 2.807e-05, 2.807e-05, 1942.80661975], [1517138640000, 2.807e-05, 2.807e-05, 2.806e-05, 2.806e-05, 1960.83436927], [1517138700000, 2.806e-05, 2.807e-05, 2.785e-05, 2.79e-05, 76028.38577166], [1517138760000, 2.793e-05, 2.807e-05, 2.792e-05, 2.807e-05, 8447.83730368], [1517138820000, 2.79e-05, 2.79e-05, 2.79e-05, 2.79e-05, 1227.25698508], [1517138880000, 2.79e-05, 2.8e-05, 2.79e-05, 2.8e-05, 3157.54607712], [1517138940000, 2.8e-05, 2.807e-05, 2.8e-05, 2.807e-05, 3129.97729803], [1517139000000, 2.807e-05, 2.807e-05, 2.807e-05, 2.807e-05, 20.0], [1517139060000, 2.806e-05, 2.807e-05, 2.785e-05, 2.785e-05, 23718.72980533], [1517139120000, 2.785e-05, 2.785e-05, 2.783e-05, 2.783e-05, 7674.56933656], [1517139180000, 2.784e-05, 2.786e-05, 2.784e-05, 2.786e-05, 2417.08159971], [1517139240000, 2.79e-05, 2.79e-05, 2.79e-05, 2.79e-05, 1006.13626407], [1517139300000, 2.79e-05, 2.8e-05, 2.79e-05, 2.8e-05, 10679.35276801], [1517139360000, 2.791e-05, 2.8e-05, 2.79e-05, 2.79e-05, 14053.48641022], [1517139480000, 2.79e-05, 2.79e-05, 2.79e-05, 2.79e-05, 6103.36], [1517139540000, 2.794e-05, 2.795e-05, 2.794e-05, 2.795e-05, 164.21637738], [1517139600000, 2.79e-05, 2.79e-05, 2.79e-05, 2.79e-05, 7267.14570484], [1517139660000, 2.784e-05, 2.784e-05, 2.783e-05, 2.783e-05, 3697.68560266], [1517139720000, 2.783e-05, 2.79e-05, 2.783e-05, 2.785e-05, 1727.61731647], [1517139780000, 2.79e-05, 2.79e-05, 2.785e-05, 2.79e-05, 13264.81578585], [1517139840000, 2.79e-05, 2.79e-05, 2.786e-05, 2.79e-05, 103248.48237801], [1517139900000, 2.79e-05, 2.79e-05, 2.786e-05, 2.786e-05, 9347.20159472], [1517139960000, 2.789e-05, 2.789e-05, 2.789e-05, 2.789e-05, 28.20475736], [1517140020000, 2.79e-05, 2.79e-05, 2.789e-05, 2.79e-05, 12223.27976649], [1517140080000, 2.789e-05, 2.79e-05, 2.789e-05, 2.789e-05, 11222.08850968], [1517140140000, 2.79e-05, 2.79e-05, 2.784e-05, 2.784e-05, 16358.29892168], [1517140200000, 2.79e-05, 2.79e-05, 2.787e-05, 2.787e-05, 23916.3718032], [1517140260000, 2.789e-05, 2.79e-05, 2.789e-05, 2.79e-05, 11910.202531], [1517140320000, 2.79e-05, 2.79e-05, 2.79e-05, 2.79e-05, 10503.278152], [1517140380000, 2.788e-05, 2.8e-05, 2.788e-05, 2.8e-05, 22632.24154553], [1517140440000, 2.799e-05, 2.8e-05, 2.799e-05, 2.8e-05, 9409.14356964], [1517140500000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 3131.413275], [1517140560000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 4377.98659375], [1517140620000, 2.8e-05, 2.8e-05, 2.797e-05, 2.8e-05, 11247.30156914], [1517140680000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 4762.70639072], [1517140740000, 2.795e-05, 2.799e-05, 2.795e-05, 2.799e-05, 4770.12773806], [1517140800000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 259.6167425], [1517140860000, 2.799e-05, 2.799e-05, 2.793e-05, 2.793e-05, 15624.83123623], [1517140920000, 2.79e-05, 2.794e-05, 2.79e-05, 2.794e-05, 21397.53504082], [1517140980000, 2.787e-05, 2.787e-05, 2.783e-05, 2.783e-05, 696.6832017], [1517141040000, 2.787e-05, 2.787e-05, 2.781e-05, 2.781e-05, 31237.48994197], [1517141100000, 2.783e-05, 2.787e-05, 2.783e-05, 2.783e-05, 16687.26331228], [1517141160000, 2.784e-05, 2.784e-05, 2.784e-05, 2.784e-05, 1513.04923049], [1517141220000, 2.783e-05, 2.793e-05, 2.783e-05, 2.793e-05, 1666.23433176], [1517141340000, 2.788e-05, 2.792e-05, 2.781e-05, 2.781e-05, 86111.83985165], [1517141400000, 2.781e-05, 2.781e-05, 2.781e-05, 2.781e-05, 1371.54703565], [1517141460000, 2.78e-05, 2.781e-05, 2.78e-05, 2.781e-05, 23627.72697363], [1517141520000, 2.78e-05, 2.781e-05, 2.78e-05, 2.781e-05, 6617.11621934], [1517141580000, 2.781e-05, 2.781e-05, 2.781e-05, 2.781e-05, 14330.08282304], [1517141640000, 2.78e-05, 2.78e-05, 2.776e-05, 2.776e-05, 7516.89489647], [1517141700000, 2.78e-05, 2.8e-05, 2.78e-05, 2.8e-05, 51938.92807192], [1517141760000, 2.8e-05, 2.8e-05, 2.78e-05, 2.78e-05, 3864.41614077], [1517141820000, 2.78e-05, 2.78e-05, 2.776e-05, 2.78e-05, 16078.02263769], [1517141880000, 2.776e-05, 2.78e-05, 2.769e-05, 2.78e-05, 11143.73677686], [1517141940000, 2.78e-05, 2.78e-05, 2.771e-05, 2.771e-05, 7286.45318085], [1517142000000, 2.771e-05, 2.78e-05, 2.77e-05, 2.78e-05, 7968.51663001], [1517142060000, 2.78e-05, 2.78e-05, 2.775e-05, 2.775e-05, 3003.33088142], [1517142120000, 2.78e-05, 2.78e-05, 2.78e-05, 2.78e-05, 1339.364613], [1517142180000, 2.775e-05, 2.78e-05, 2.77e-05, 2.78e-05, 10515.45507379], [1517142240000, 2.771e-05, 2.771e-05, 2.771e-05, 2.771e-05, 742.14796459], [1517142300000, 2.78e-05, 2.78e-05, 2.776e-05, 2.776e-05, 95603.95858371], [1517142360000, 2.776e-05, 2.776e-05, 2.775e-05, 2.775e-05, 1234.67320617], [1517142420000, 2.776e-05, 2.776e-05, 2.775e-05, 2.776e-05, 833.80568795], [1517142480000, 2.777e-05, 2.78e-05, 2.777e-05, 2.78e-05, 576.19122946], [1517142600000, 2.783e-05, 2.783e-05, 2.78e-05, 2.781e-05, 28993.90830266], [1517142660000, 2.781e-05, 2.781e-05, 2.781e-05, 2.781e-05, 95.30514506], [1517142720000, 2.781e-05, 2.781e-05, 2.78e-05, 2.781e-05, 1982.77781007], [1517142840000, 2.78e-05, 2.78e-05, 2.779e-05, 2.779e-05, 620.77216], [1517142900000, 2.779e-05, 2.818e-05, 2.779e-05, 2.818e-05, 40737.76929778], [1517142960000, 2.818e-05, 2.818e-05, 2.779e-05, 2.779e-05, 288.08492055], [1517143020000, 2.779e-05, 2.78e-05, 2.775e-05, 2.775e-05, 7225.66974857], [1517143140000, 2.778e-05, 2.78e-05, 2.778e-05, 2.78e-05, 12856.03755075], [1517143200000, 2.78e-05, 2.78e-05, 2.78e-05, 2.78e-05, 30071.06125093], [1517143260000, 2.78e-05, 2.78e-05, 2.78e-05, 2.78e-05, 1729.26103722], [1517143320000, 2.806e-05, 2.806e-05, 2.781e-05, 2.781e-05, 7594.2702206], [1517143380000, 2.782e-05, 2.782e-05, 2.782e-05, 2.782e-05, 79.98700792], [1517143440000, 2.782e-05, 2.783e-05, 2.782e-05, 2.783e-05, 6178.87163537], [1517143500000, 2.784e-05, 2.785e-05, 2.784e-05, 2.785e-05, 2404.9058498], [1517143560000, 2.785e-05, 2.785e-05, 2.785e-05, 2.785e-05, 60.0], [1517143620000, 2.783e-05, 2.785e-05, 2.782e-05, 2.782e-05, 5627.74175291], [1517143680000, 2.781e-05, 2.782e-05, 2.781e-05, 2.782e-05, 244.15780515], [1517143740000, 2.785e-05, 2.785e-05, 2.785e-05, 2.785e-05, 3970.68674812], [1517143800000, 2.785e-05, 2.785e-05, 2.785e-05, 2.785e-05, 1029.31325188], [1517143920000, 2.79e-05, 2.79e-05, 2.785e-05, 2.785e-05, 10678.39384444], [1517143980000, 2.785e-05, 2.785e-05, 2.781e-05, 2.785e-05, 11310.82984835], [1517144040000, 2.785e-05, 2.785e-05, 2.784e-05, 2.784e-05, 2887.76432162], [1517144160000, 2.802e-05, 2.802e-05, 2.801e-05, 2.801e-05, 2220.37181509], [1517144280000, 2.795e-05, 2.796e-05, 2.795e-05, 2.796e-05, 94.02250965], [1517144340000, 2.796e-05, 2.796e-05, 2.796e-05, 2.796e-05, 1620.8916193], [1517144460000, 2.796e-05, 2.796e-05, 2.796e-05, 2.796e-05, 3842.85423779], [1517144520000, 2.796e-05, 2.796e-05, 2.796e-05, 2.796e-05, 510.19477982], [1517144580000, 2.795e-05, 2.795e-05, 2.786e-05, 2.786e-05, 1402.7062528], [1517144640000, 2.786e-05, 2.786e-05, 2.786e-05, 2.786e-05, 704.6350639], [1517144700000, 2.786e-05, 2.786e-05, 2.786e-05, 2.786e-05, 2763.9006407], [1517144760000, 2.786e-05, 2.786e-05, 2.786e-05, 2.786e-05, 2870.23023441], [1517144820000, 2.787e-05, 2.787e-05, 2.787e-05, 2.787e-05, 39.5283493], [1517144880000, 2.787e-05, 2.801e-05, 2.787e-05, 2.801e-05, 4470.42976358], [1517144940000, 2.801e-05, 2.809e-05, 2.787e-05, 2.809e-05, 38576.8993012], [1517145000000, 2.802e-05, 2.802e-05, 2.802e-05, 2.802e-05, 475.70749168], [1517145060000, 2.8e-05, 2.801e-05, 2.8e-05, 2.801e-05, 573.70431459], [1517145120000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 211.66619509], [1517145180000, 2.801e-05, 2.801e-05, 2.8e-05, 2.8e-05, 5118.37242909], [1517145240000, 2.8e-05, 2.8e-05, 2.787e-05, 2.787e-05, 10035.92394555], [1517145300000, 2.787e-05, 2.787e-05, 2.785e-05, 2.785e-05, 1003.71578426], [1517145360000, 2.785e-05, 2.785e-05, 2.785e-05, 2.785e-05, 1589.86337343], [1517145420000, 2.785e-05, 2.785e-05, 2.785e-05, 2.785e-05, 2282.39392191], [1517145480000, 2.784e-05, 2.784e-05, 2.781e-05, 2.781e-05, 2019.08624509], [1517145540000, 2.782e-05, 2.785e-05, 2.782e-05, 2.785e-05, 7310.20859642], [1517145600000, 2.785e-05, 2.797e-05, 2.782e-05, 2.797e-05, 1834.66453695], [1517145660000, 2.782e-05, 2.782e-05, 2.782e-05, 2.782e-05, 25.36640808], [1517145720000, 2.782e-05, 2.796e-05, 2.782e-05, 2.796e-05, 11718.74002814], [1517145780000, 2.795e-05, 2.797e-05, 2.795e-05, 2.797e-05, 12411.84882221], [1517145840000, 2.797e-05, 2.797e-05, 2.797e-05, 2.797e-05, 5629.12351034], [1517145900000, 2.796e-05, 2.797e-05, 2.796e-05, 2.797e-05, 6999.95082358], [1517145960000, 2.797e-05, 2.808e-05, 2.797e-05, 2.808e-05, 6678.05615987], [1517146020000, 2.808e-05, 2.809e-05, 2.808e-05, 2.809e-05, 24868.29707384], [1517146080000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 24195.14019765], [1517146200000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 58.67450142], [1517146260000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 3398.30715962], [1517146320000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 20.62006106], [1517146380000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 2380.73022062], [1517146440000, 2.798e-05, 2.8e-05, 2.798e-05, 2.8e-05, 1436.05529618], [1517146500000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 1066.5562567], [1517146560000, 2.8e-05, 2.805e-05, 2.8e-05, 2.805e-05, 130.09100299], [1517146620000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 2272.41290712], [1517146740000, 2.8e-05, 2.805e-05, 2.8e-05, 2.805e-05, 4606.65528877], [1517146800000, 2.801e-05, 2.804e-05, 2.801e-05, 2.804e-05, 237.265541], [1517146860000, 2.802e-05, 2.802e-05, 2.801e-05, 2.801e-05, 808.63419901], [1517146920000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 1282.01497787], [1517146980000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 395.51942901], [1517147040000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 7305.22937713], [1517147100000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 843.60597136], [1517147160000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 1739.38078085], [1517147220000, 2.8e-05, 2.802e-05, 2.8e-05, 2.8e-05, 1903.56138077], [1517147280000, 2.801e-05, 2.813e-05, 2.8e-05, 2.813e-05, 10205.18968609], [1517147340000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 942.90021081], [1517147400000, 2.813e-05, 2.813e-05, 2.813e-05, 2.813e-05, 20.19915104], [1517147460000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 2156.23668571], [1517147520000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 1071.48279375], [1517147640000, 2.8e-05, 2.8e-05, 2.799e-05, 2.799e-05, 8496.29018039], [1517147820000, 2.809e-05, 2.809e-05, 2.809e-05, 2.809e-05, 17.75542898], [1517147880000, 2.8e-05, 2.809e-05, 2.8e-05, 2.806e-05, 1752.94118427], [1517148000000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 21.0], [1517148060000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 13632.2562096], [1517148120000, 2.805e-05, 2.805e-05, 2.8e-05, 2.8e-05, 2919.76413231], [1517148180000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 246.69405288], [1517148240000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 5360.06886107], [1517148360000, 2.799e-05, 2.8e-05, 2.799e-05, 2.799e-05, 22641.40771311], [1517148420000, 2.799e-05, 2.799e-05, 2.798e-05, 2.798e-05, 16128.58225809], [1517148540000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 397.2904685], [1517148600000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 1082.67746342], [1517148660000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 14795.41788822], [1517148720000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 1277.20156387], [1517148780000, 2.799e-05, 2.8e-05, 2.799e-05, 2.799e-05, 2871.73259242], [1517148840000, 2.799e-05, 2.799e-05, 2.798e-05, 2.798e-05, 530.22805558], [1517148900000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 1225.896243], [1517148960000, 2.804e-05, 2.805e-05, 2.804e-05, 2.805e-05, 301.77396608], [1517149020000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 967.75067678], [1517149080000, 2.799e-05, 2.799e-05, 2.799e-05, 2.799e-05, 4853.72609844], [1517149140000, 2.799e-05, 2.8e-05, 2.799e-05, 2.8e-05, 9102.50471416], [1517149200000, 2.8e-05, 2.828e-05, 2.8e-05, 2.824e-05, 28954.74550908], [1517149260000, 2.816e-05, 2.841e-05, 2.816e-05, 2.841e-05, 21022.95506968], [1517149320000, 2.835e-05, 2.841e-05, 2.835e-05, 2.84e-05, 10750.65096561], [1517149380000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 901.99241799], [1517149440000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 20669.73716251], [1517149500000, 2.835e-05, 2.847e-05, 2.835e-05, 2.835e-05, 1827.98525005], [1517149560000, 2.822e-05, 2.835e-05, 2.822e-05, 2.835e-05, 393.56836667], [1517149620000, 2.834e-05, 2.834e-05, 2.834e-05, 2.834e-05, 72.57049834], [1517149680000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 64.0], [1517149740000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 405.57686583], [1517149800000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 2173.32191895], [1517149860000, 2.835e-05, 2.837e-05, 2.82e-05, 2.837e-05, 10114.60181103], [1517149920000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 53.76344086], [1517149980000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 234.91284142], [1517150100000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 4157.36395879], [1517150220000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 1103.82994967], [1517150280000, 2.82e-05, 2.82e-05, 2.82e-05, 2.82e-05, 291.46566208], [1517150460000, 2.819e-05, 2.819e-05, 2.817e-05, 2.817e-05, 2066.93721687], [1517150520000, 2.817e-05, 2.817e-05, 2.816e-05, 2.816e-05, 3679.54641923], [1517150580000, 2.811e-05, 2.811e-05, 2.811e-05, 2.811e-05, 2604.5041926], [1517150640000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 223.23908259], [1517150700000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 7491.31795], [1517150760000, 2.815e-05, 2.815e-05, 2.815e-05, 2.815e-05, 1518.64530503], [1517150820000, 2.811e-05, 2.815e-05, 2.811e-05, 2.814e-05, 1885.20655202], [1517150880000, 2.814e-05, 2.814e-05, 2.812e-05, 2.814e-05, 9869.998012], [1517150940000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 56.06522557], [1517151000000, 2.814e-05, 2.814e-05, 2.814e-05, 2.814e-05, 18184.72178009], [1517151060000, 2.814e-05, 2.815e-05, 2.814e-05, 2.815e-05, 16072.18002301], [1517151120000, 2.815e-05, 2.835e-05, 2.815e-05, 2.835e-05, 2107.0713276], [1517151180000, 2.825e-05, 2.825e-05, 2.825e-05, 2.825e-05, 154.03207194], [1517151240000, 2.825e-05, 2.825e-05, 2.825e-05, 2.825e-05, 46.32350371], [1517151300000, 2.816e-05, 2.816e-05, 2.816e-05, 2.816e-05, 190.0], [1517151360000, 2.817e-05, 2.825e-05, 2.816e-05, 2.824e-05, 5259.4762759], [1517151420000, 2.816e-05, 2.824e-05, 2.816e-05, 2.824e-05, 763.51702569], [1517151480000, 2.824e-05, 2.824e-05, 2.823e-05, 2.824e-05, 12268.03900365], [1517151660000, 2.834e-05, 2.834e-05, 2.834e-05, 2.834e-05, 1300.96653563], [1517151720000, 2.836e-05, 2.836e-05, 2.836e-05, 2.836e-05, 182.954258], [1517151900000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 29.63351836], [1517151960000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 1023.38152523], [1517152020000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 83.09792113], [1517152080000, 2.838e-05, 2.838e-05, 2.836e-05, 2.836e-05, 94486.42547552], [1517152140000, 2.837e-05, 2.837e-05, 2.829e-05, 2.829e-05, 4026.96920253], [1517152260000, 2.829e-05, 2.835e-05, 2.829e-05, 2.835e-05, 5724.85914697], [1517152320000, 2.835e-05, 2.85e-05, 2.835e-05, 2.85e-05, 29659.45202306], [1517152380000, 2.85e-05, 2.85e-05, 2.837e-05, 2.837e-05, 20330.7252906], [1517152440000, 2.837e-05, 2.837e-05, 2.835e-05, 2.837e-05, 2080.23049519], [1517152500000, 2.84e-05, 2.849e-05, 2.84e-05, 2.849e-05, 354.71710737], [1517152560000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 1817.46631261], [1517152620000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 6515.56807925], [1517152740000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 688.05336542], [1517152800000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 3891.43813613], [1517152860000, 2.852e-05, 2.854e-05, 2.852e-05, 2.854e-05, 2592.95983822], [1517152920000, 2.854e-05, 2.854e-05, 2.854e-05, 2.854e-05, 123.2590341], [1517152980000, 2.854e-05, 2.854e-05, 2.854e-05, 2.854e-05, 4164.13354602], [1517153040000, 2.853e-05, 2.853e-05, 2.853e-05, 2.853e-05, 50.0], [1517153100000, 2.853e-05, 2.854e-05, 2.853e-05, 2.854e-05, 16752.12523563], [1517153160000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 2022.37433766], [1517153220000, 2.855e-05, 2.856e-05, 2.854e-05, 2.856e-05, 5236.64798802], [1517153340000, 2.856e-05, 2.858e-05, 2.856e-05, 2.858e-05, 1300.25559843], [1517153400000, 2.857e-05, 2.859e-05, 2.857e-05, 2.859e-05, 1373.3922908], [1517153460000, 2.859e-05, 2.864e-05, 2.859e-05, 2.859e-05, 14572.30424545], [1517153520000, 2.859e-05, 2.864e-05, 2.849e-05, 2.864e-05, 46252.25536318], [1517153580000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 1632.45499019], [1517153640000, 2.85e-05, 2.851e-05, 2.85e-05, 2.851e-05, 18585.21653809], [1517153700000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 3166.90912789], [1517153760000, 2.862e-05, 2.864e-05, 2.853e-05, 2.863e-05, 4594.90900448], [1517153820000, 2.862e-05, 2.864e-05, 2.862e-05, 2.864e-05, 10176.54170363], [1517153880000, 2.865e-05, 2.865e-05, 2.864e-05, 2.865e-05, 27614.26097181], [1517153940000, 2.865e-05, 2.866e-05, 2.865e-05, 2.866e-05, 8569.86963467], [1517154000000, 2.866e-05, 2.866e-05, 2.865e-05, 2.866e-05, 2161.76441125], [1517154060000, 2.867e-05, 2.87e-05, 2.867e-05, 2.87e-05, 3596.28242264], [1517154120000, 2.871e-05, 2.871e-05, 2.869e-05, 2.871e-05, 6861.32247599], [1517154180000, 2.87e-05, 2.871e-05, 2.87e-05, 2.87e-05, 1881.15225782], [1517154240000, 2.87e-05, 2.87e-05, 2.869e-05, 2.87e-05, 6518.72132593], [1517154300000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 1203.79869797], [1517154360000, 2.87e-05, 2.87e-05, 2.852e-05, 2.852e-05, 12285.61818381], [1517154420000, 2.851e-05, 2.851e-05, 2.85e-05, 2.85e-05, 643.60741285], [1517154480000, 2.85e-05, 2.85e-05, 2.843e-05, 2.843e-05, 6254.89076049], [1517154540000, 2.843e-05, 2.862e-05, 2.842e-05, 2.843e-05, 6904.57934354], [1517154600000, 2.843e-05, 2.874e-05, 2.843e-05, 2.874e-05, 16008.10215948], [1517154660000, 2.872e-05, 2.872e-05, 2.86e-05, 2.86e-05, 1588.09390845], [1517154720000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 1009.82945929], [1517154780000, 2.85e-05, 2.872e-05, 2.85e-05, 2.872e-05, 2074.90175504], [1517154840000, 2.85e-05, 2.85e-05, 2.846e-05, 2.85e-05, 9485.03742724], [1517154900000, 2.849e-05, 2.85e-05, 2.849e-05, 2.849e-05, 2839.49844533], [1517154960000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 2117.43489887], [1517155020000, 2.847e-05, 2.847e-05, 2.846e-05, 2.846e-05, 662.81149772], [1517155080000, 2.846e-05, 2.846e-05, 2.842e-05, 2.842e-05, 1322.53564429], [1517155140000, 2.842e-05, 2.842e-05, 2.835e-05, 2.835e-05, 33524.53435425], [1517155200000, 2.835e-05, 2.842e-05, 2.835e-05, 2.842e-05, 6632.20990835], [1517155260000, 2.842e-05, 2.842e-05, 2.84e-05, 2.84e-05, 30974.18758842], [1517155320000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 5348.87292915], [1517155380000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 1931.3857325], [1517155440000, 2.835e-05, 2.842e-05, 2.831e-05, 2.842e-05, 11283.95821109], [1517155500000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 66098.24463618], [1517155560000, 2.844e-05, 2.847e-05, 2.844e-05, 2.847e-05, 418.85945829], [1517155620000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 3361.36400338], [1517155680000, 2.85e-05, 2.85e-05, 2.843e-05, 2.843e-05, 3037.06605245], [1517155740000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 1463.25067673], [1517155800000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 50.45719844], [1517155860000, 2.844e-05, 2.844e-05, 2.844e-05, 2.844e-05, 364.05464948], [1517155920000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 48.54408705], [1517155980000, 2.855e-05, 2.855e-05, 2.843e-05, 2.843e-05, 175.57550494], [1517156040000, 2.855e-05, 2.856e-05, 2.855e-05, 2.856e-05, 780.69627665], [1517156100000, 2.858e-05, 2.858e-05, 2.856e-05, 2.856e-05, 3365.3460034], [1517156160000, 2.856e-05, 2.858e-05, 2.856e-05, 2.858e-05, 1186.4346983], [1517156220000, 2.858e-05, 2.862e-05, 2.856e-05, 2.862e-05, 3303.20922986], [1517156280000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 721.704128], [1517156460000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 5280.0127055], [1517156520000, 2.863e-05, 2.863e-05, 2.862e-05, 2.862e-05, 4322.17999538], [1517156580000, 2.86e-05, 2.864e-05, 2.86e-05, 2.864e-05, 3355.15453647], [1517156640000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 163.89959], [1517156700000, 2.864e-05, 2.865e-05, 2.864e-05, 2.865e-05, 4738.90333718], [1517156760000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 393.14806896], [1517156820000, 2.868e-05, 2.87e-05, 2.868e-05, 2.87e-05, 5713.56545429], [1517156880000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 3110.2003351], [1517156940000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 901.42541135], [1517157000000, 2.871e-05, 2.872e-05, 2.871e-05, 2.872e-05, 1552.04144057], [1517157060000, 2.872e-05, 2.88e-05, 2.872e-05, 2.874e-05, 12448.47695799], [1517157120000, 2.874e-05, 2.874e-05, 2.874e-05, 2.874e-05, 12014.08259805], [1517157180000, 2.874e-05, 2.874e-05, 2.874e-05, 2.874e-05, 3094.21183963], [1517157240000, 2.874e-05, 2.874e-05, 2.872e-05, 2.872e-05, 1689.31321088], [1517157300000, 2.879e-05, 2.879e-05, 2.872e-05, 2.872e-05, 1059.44237051], [1517157360000, 2.877e-05, 2.89e-05, 2.872e-05, 2.89e-05, 6759.45240133], [1517157420000, 2.89e-05, 2.89e-05, 2.879e-05, 2.889e-05, 2159.80874156], [1517157480000, 2.889e-05, 2.889e-05, 2.88e-05, 2.88e-05, 2543.28178265], [1517157540000, 2.879e-05, 2.879e-05, 2.876e-05, 2.876e-05, 3637.01244114], [1517157600000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 3296.4311316], [1517157660000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 1196.50767136], [1517157720000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 2304.49552703], [1517157780000, 2.879e-05, 2.88e-05, 2.879e-05, 2.879e-05, 5408.03245581], [1517157840000, 2.879e-05, 2.879e-05, 2.877e-05, 2.877e-05, 328.79698891], [1517157960000, 2.877e-05, 2.877e-05, 2.876e-05, 2.877e-05, 20613.98629596], [1517158020000, 2.876e-05, 2.877e-05, 2.876e-05, 2.877e-05, 7198.0220905], [1517158140000, 2.876e-05, 2.877e-05, 2.876e-05, 2.877e-05, 5490.044329], [1517158200000, 2.879e-05, 2.879e-05, 2.876e-05, 2.879e-05, 1519.67216941], [1517158260000, 2.879e-05, 2.889e-05, 2.879e-05, 2.889e-05, 53149.63944193], [1517158320000, 2.876e-05, 2.889e-05, 2.876e-05, 2.889e-05, 2377.26300744], [1517158380000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 1147.9779598], [1517158440000, 2.877e-05, 2.877e-05, 2.877e-05, 2.877e-05, 223.76692632], [1517158560000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 3154.0629819], [1517158620000, 2.886e-05, 2.886e-05, 2.877e-05, 2.877e-05, 2523.14394272], [1517158680000, 2.887e-05, 2.887e-05, 2.884e-05, 2.885e-05, 3110.28070963], [1517158740000, 2.884e-05, 2.884e-05, 2.876e-05, 2.884e-05, 7469.78422951], [1517158800000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 2331.89322117], [1517158860000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 2792.76687844], [1517158920000, 2.877e-05, 2.877e-05, 2.877e-05, 2.877e-05, 2515.14605575], [1517158980000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 6612.99108636], [1517159040000, 2.877e-05, 2.882e-05, 2.877e-05, 2.882e-05, 3246.39691039], [1517159100000, 2.883e-05, 2.889e-05, 2.882e-05, 2.882e-05, 8753.92290825], [1517159160000, 2.882e-05, 2.882e-05, 2.882e-05, 2.882e-05, 6426.57148102], [1517159220000, 2.882e-05, 2.888e-05, 2.882e-05, 2.882e-05, 3593.47164014], [1517159280000, 2.882e-05, 2.882e-05, 2.882e-05, 2.882e-05, 5166.21882974], [1517159340000, 2.887e-05, 2.889e-05, 2.887e-05, 2.889e-05, 7740.07268268], [1517159400000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 426.43923], [1517159460000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 1420.93340983], [1517159520000, 2.883e-05, 2.884e-05, 2.882e-05, 2.884e-05, 9515.85325806], [1517159580000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 533.16659076], [1517159640000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 2000.0], [1517159700000, 2.884e-05, 2.888e-05, 2.884e-05, 2.888e-05, 17619.80312818], [1517159760000, 2.877e-05, 2.877e-05, 2.857e-05, 2.857e-05, 5139.75374064], [1517159820000, 2.857e-05, 2.857e-05, 2.857e-05, 2.857e-05, 258.5824687], [1517159880000, 2.857e-05, 2.857e-05, 2.856e-05, 2.857e-05, 941.88566412], [1517159940000, 2.87e-05, 2.87e-05, 2.857e-05, 2.857e-05, 4189.35127435], [1517160000000, 2.86e-05, 2.862e-05, 2.86e-05, 2.861e-05, 1102.05736561], [1517160060000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 106.9085779], [1517160120000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 916.91342051], [1517160180000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 330.95808623], [1517160240000, 2.862e-05, 2.862e-05, 2.861e-05, 2.861e-05, 711.47149596], [1517160360000, 2.861e-05, 2.862e-05, 2.861e-05, 2.862e-05, 192.17044177], [1517160420000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 52.61108473], [1517160540000, 2.864e-05, 2.868e-05, 2.864e-05, 2.868e-05, 915.48843852], [1517160600000, 2.868e-05, 2.869e-05, 2.868e-05, 2.869e-05, 2418.66957141], [1517160660000, 2.869e-05, 2.87e-05, 2.869e-05, 2.869e-05, 361.96411119], [1517160720000, 2.87e-05, 2.87e-05, 2.869e-05, 2.869e-05, 1351.68033247], [1517160900000, 2.871e-05, 2.873e-05, 2.871e-05, 2.873e-05, 3570.76353004], [1517160960000, 2.873e-05, 2.873e-05, 2.872e-05, 2.873e-05, 4090.50419356], [1517161020000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 1085.77872562], [1517161080000, 2.872e-05, 2.873e-05, 2.872e-05, 2.872e-05, 3097.39212313], [1517161140000, 2.872e-05, 2.873e-05, 2.872e-05, 2.873e-05, 7224.88890894], [1517161200000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 12148.0], [1517161260000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 1031.75995181], [1517161320000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 203.00816695], [1517161440000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 3523.96767764], [1517161500000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 6487.76063592], [1517161560000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 926.81508321], [1517161620000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 795.0], [1517161800000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 79.35166157], [1517161860000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 10000.0], [1517161920000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 200.0], [1517161980000, 2.872e-05, 2.873e-05, 2.872e-05, 2.873e-05, 17905.68288128], [1517162040000, 2.873e-05, 2.873e-05, 2.872e-05, 2.872e-05, 1088.44303786], [1517162100000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 100.0317459], [1517162280000, 2.873e-05, 2.873e-05, 2.872e-05, 2.872e-05, 835.26166157], [1517162340000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 28.47355317], [1517162400000, 2.878e-05, 2.878e-05, 2.878e-05, 2.878e-05, 60.96868483], [1517162580000, 2.877e-05, 2.877e-05, 2.877e-05, 2.877e-05, 200.0], [1517162640000, 2.877e-05, 2.877e-05, 2.877e-05, 2.877e-05, 87.6510219], [1517162760000, 2.877e-05, 2.877e-05, 2.877e-05, 2.877e-05, 500.0], [1517162880000, 2.876e-05, 2.877e-05, 2.876e-05, 2.877e-05, 29.81751825], [1517163000000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 2777.7778], [1517163120000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 19520.16855428], [1517163180000, 2.875e-05, 2.875e-05, 2.875e-05, 2.875e-05, 310.0], [1517163240000, 2.875e-05, 2.878e-05, 2.875e-05, 2.878e-05, 1046.97635097], [1517163300000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 26.95511714], [1517163360000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 684.20460082], [1517163480000, 2.879e-05, 2.88e-05, 2.879e-05, 2.88e-05, 1105.13936591], [1517163540000, 2.881e-05, 2.884e-05, 2.881e-05, 2.884e-05, 721.30767868], [1517163600000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 1220.61258834], [1517163660000, 2.885e-05, 2.885e-05, 2.884e-05, 2.884e-05, 214.31322727], [1517163720000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 26.15238474], [1517163840000, 2.885e-05, 2.885e-05, 2.884e-05, 2.884e-05, 3021.81217325], [1517164020000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 436.28827544], [1517164080000, 2.878e-05, 2.878e-05, 2.878e-05, 2.878e-05, 300.0], [1517164140000, 2.878e-05, 2.878e-05, 2.878e-05, 2.878e-05, 2183.90225423], [1517164200000, 2.878e-05, 2.879e-05, 2.878e-05, 2.879e-05, 152.29679024], [1517164260000, 2.877e-05, 2.879e-05, 2.877e-05, 2.879e-05, 1335.99230794], [1517164320000, 2.879e-05, 2.88e-05, 2.879e-05, 2.88e-05, 2151.41196208], [1517164380000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 1000.0], [1517164440000, 2.884e-05, 2.884e-05, 2.881e-05, 2.881e-05, 106.34912962], [1517164500000, 2.883e-05, 2.883e-05, 2.88e-05, 2.88e-05, 5276.24824914], [1517164620000, 2.884e-05, 2.884e-05, 2.88e-05, 2.88e-05, 11596.98095488], [1517164680000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 46.0], [1517164740000, 2.884e-05, 2.884e-05, 2.883e-05, 2.884e-05, 802.4234104], [1517164920000, 2.881e-05, 2.881e-05, 2.88e-05, 2.88e-05, 14700.54072609], [1517164980000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 90.0], [1517165040000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 20.0], [1517165100000, 2.869e-05, 2.869e-05, 2.867e-05, 2.867e-05, 4639.19530998], [1517165160000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 174.27675148], [1517165220000, 2.869e-05, 2.869e-05, 2.868e-05, 2.869e-05, 489.77377688], [1517165280000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 2207.77815144], [1517165340000, 2.868e-05, 2.869e-05, 2.868e-05, 2.869e-05, 304.11264836], [1517165400000, 2.869e-05, 2.869e-05, 2.868e-05, 2.869e-05, 1818.03480921], [1517165460000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 600.0], [1517165640000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 90.66176366], [1517165700000, 2.87e-05, 2.878e-05, 2.87e-05, 2.877e-05, 4610.55872417], [1517165760000, 2.874e-05, 2.874e-05, 2.874e-05, 2.874e-05, 2012.07199565], [1517165820000, 2.869e-05, 2.87e-05, 2.866e-05, 2.87e-05, 2114.09693576], [1517165880000, 2.874e-05, 2.874e-05, 2.874e-05, 2.874e-05, 2478.23478991], [1517166000000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 25.48833972], [1517166060000, 2.874e-05, 2.878e-05, 2.871e-05, 2.878e-05, 1501.38233046], [1517166120000, 2.877e-05, 2.877e-05, 2.876e-05, 2.876e-05, 3484.1724154], [1517166180000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 125.1052], [1517166240000, 2.875e-05, 2.879e-05, 2.875e-05, 2.879e-05, 165.40202158], [1517166300000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 3712.07199565], [1517166360000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 2662.80726885], [1517166420000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 300.0], [1517166480000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 2626.11219178], [1517166540000, 2.879e-05, 2.88e-05, 2.879e-05, 2.88e-05, 5675.18660532], [1517166660000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 4353.15629531], [1517166720000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 272.21697617], [1517166780000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 6401.44982516], [1517166840000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 433.0], [1517166960000, 2.866e-05, 2.87e-05, 2.866e-05, 2.87e-05, 175.18898005], [1517167020000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 309.04568268], [1517167080000, 2.871e-05, 2.871e-05, 2.87e-05, 2.87e-05, 501.17519592], [1517167140000, 2.871e-05, 2.871e-05, 2.87e-05, 2.87e-05, 1779.23315593], [1517167200000, 2.87e-05, 2.871e-05, 2.87e-05, 2.871e-05, 1362.69643924], [1517167260000, 2.871e-05, 2.871e-05, 2.866e-05, 2.866e-05, 1222.09812937], [1517167380000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 4826.68075828], [1517167440000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 9500.0], [1517167500000, 2.866e-05, 2.871e-05, 2.865e-05, 2.871e-05, 1109.16197586], [1517167620000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 25.04049134], [1517167680000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 64.89744541], [1517167860000, 2.87e-05, 2.871e-05, 2.87e-05, 2.871e-05, 2924.56017197], [1517167920000, 2.879e-05, 2.879e-05, 2.865e-05, 2.865e-05, 11828.15364979], [1517167980000, 2.865e-05, 2.879e-05, 2.865e-05, 2.871e-05, 2482.28567988], [1517168040000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 3210.16701334], [1517168160000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 1686.26345902], [1517168220000, 2.871e-05, 2.871e-05, 2.861e-05, 2.861e-05, 728.54236155], [1517168280000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 4096.93518454], [1517168340000, 2.861e-05, 2.876e-05, 2.848e-05, 2.848e-05, 45649.29339854], [1517168460000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 54.60417601], [1517168520000, 2.86e-05, 2.872e-05, 2.86e-05, 2.872e-05, 634.97705158], [1517168580000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 495.61411312], [1517168700000, 2.873e-05, 2.875e-05, 2.873e-05, 2.875e-05, 616.44026736], [1517168760000, 2.875e-05, 2.875e-05, 2.875e-05, 2.875e-05, 8487.37766311], [1517168820000, 2.859e-05, 2.874e-05, 2.859e-05, 2.874e-05, 2311.64180035], [1517168940000, 2.849e-05, 2.849e-05, 2.846e-05, 2.846e-05, 1966.7438103], [1517169000000, 2.85e-05, 2.85e-05, 2.846e-05, 2.846e-05, 1839.2995], [1517169060000, 2.846e-05, 2.868e-05, 2.846e-05, 2.846e-05, 2376.89859724], [1517169180000, 2.868e-05, 2.868e-05, 2.868e-05, 2.868e-05, 214.386782], [1517169240000, 2.846e-05, 2.846e-05, 2.846e-05, 2.846e-05, 100.0], [1517169300000, 2.846e-05, 2.846e-05, 2.846e-05, 2.846e-05, 1109.24546695], [1517169360000, 2.846e-05, 2.846e-05, 2.846e-05, 2.846e-05, 41.12405757], [1517169420000, 2.846e-05, 2.846e-05, 2.846e-05, 2.846e-05, 82.24811514], [1517169480000, 2.845e-05, 2.846e-05, 2.845e-05, 2.845e-05, 2052.2170778], [1517169540000, 2.846e-05, 2.846e-05, 2.846e-05, 2.846e-05, 758.89511405], [1517169600000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 411.87856206], [1517169660000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 100.0], [1517169780000, 2.85e-05, 2.85e-05, 2.845e-05, 2.846e-05, 2313.66834614], [1517169840000, 2.846e-05, 2.86e-05, 2.846e-05, 2.86e-05, 179.5969914], [1517169900000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 121.67490655], [1517169960000, 2.847e-05, 2.847e-05, 2.847e-05, 2.847e-05, 658.12237788], [1517170080000, 2.847e-05, 2.859e-05, 2.847e-05, 2.859e-05, 490.98887649], [1517170140000, 2.847e-05, 2.847e-05, 2.843e-05, 2.843e-05, 7125.0], [1517170200000, 2.844e-05, 2.86e-05, 2.844e-05, 2.859e-05, 2181.53245033], [1517170260000, 2.859e-05, 2.859e-05, 2.842e-05, 2.842e-05, 1743.185263], [1517170320000, 2.862e-05, 2.862e-05, 2.842e-05, 2.842e-05, 3087.3677078], [1517170380000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 4337.35862286], [1517170440000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 49.6336058], [1517170620000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 303.218178], [1517170680000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 1041.909786], [1517170740000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 20.83589259], [1517170800000, 2.85e-05, 2.85e-05, 2.842e-05, 2.842e-05, 834.83132419], [1517170860000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 1716.48120098], [1517170920000, 2.842e-05, 2.842e-05, 2.842e-05, 2.842e-05, 4833.88578424], [1517170980000, 2.842e-05, 2.842e-05, 2.841e-05, 2.841e-05, 205.52951029], [1517171040000, 2.84e-05, 2.84e-05, 2.839e-05, 2.839e-05, 597.13881326], [1517171100000, 2.841e-05, 2.841e-05, 2.838e-05, 2.838e-05, 9245.7882], [1517171160000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 50984.05673405], [1517171220000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 55.06650137], [1517171340000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 101.364537], [1517171460000, 2.837e-05, 2.841e-05, 2.837e-05, 2.841e-05, 360.0], [1517171640000, 2.837e-05, 2.837e-05, 2.835e-05, 2.835e-05, 622.17296667], [1517171700000, 2.835e-05, 2.835e-05, 2.832e-05, 2.832e-05, 4308.14004196], [1517171760000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 450.27046309], [1517171820000, 2.831e-05, 2.831e-05, 2.831e-05, 2.831e-05, 1574.42581112], [1517171880000, 2.832e-05, 2.832e-05, 2.831e-05, 2.831e-05, 409.16670593], [1517171940000, 2.831e-05, 2.832e-05, 2.831e-05, 2.831e-05, 25309.66903352], [1517172060000, 2.831e-05, 2.831e-05, 2.829e-05, 2.829e-05, 1848.80571847], [1517172180000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 23.69527682], [1517172240000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 128.732394], [1517172420000, 2.829e-05, 2.839e-05, 2.829e-05, 2.839e-05, 1205.21711676], [1517172480000, 2.84e-05, 2.84e-05, 2.829e-05, 2.829e-05, 8844.0140845], [1517172540000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 28.69473966], [1517172600000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 75.0], [1517172660000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 52.19233989], [1517172720000, 2.838e-05, 2.839e-05, 2.838e-05, 2.839e-05, 116.19494638], [1517172780000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 667.31621105], [1517172900000, 2.838e-05, 2.839e-05, 2.838e-05, 2.839e-05, 501.36505342], [1517173020000, 2.838e-05, 2.838e-05, 2.83e-05, 2.83e-05, 526.26185526], [1517173080000, 2.828e-05, 2.829e-05, 2.827e-05, 2.829e-05, 5314.36387035], [1517173140000, 2.825e-05, 2.825e-05, 2.824e-05, 2.824e-05, 5518.54774876], [1517173200000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 105.84961291], [1517173260000, 2.824e-05, 2.827e-05, 2.824e-05, 2.827e-05, 1399.11087385], [1517173320000, 2.827e-05, 2.827e-05, 2.822e-05, 2.822e-05, 3505.65187642], [1517173380000, 2.824e-05, 2.824e-05, 2.824e-05, 2.824e-05, 25.45779657], [1517173440000, 2.823e-05, 2.823e-05, 2.823e-05, 2.823e-05, 70.67056057], [1517173500000, 2.822e-05, 2.828e-05, 2.822e-05, 2.828e-05, 321.85486433], [1517173560000, 2.829e-05, 2.829e-05, 2.828e-05, 2.829e-05, 1443.41185159], [1517173620000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 132.70667], [1517173680000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 832.88329799], [1517173740000, 2.824e-05, 2.824e-05, 2.824e-05, 2.824e-05, 631.18543095], [1517173800000, 2.824e-05, 2.826e-05, 2.824e-05, 2.826e-05, 1398.79907537], [1517173860000, 2.826e-05, 2.826e-05, 2.823e-05, 2.823e-05, 48.14461574], [1517173920000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 253.88823129], [1517173980000, 2.826e-05, 2.826e-05, 2.826e-05, 2.826e-05, 176.92852087], [1517174040000, 2.823e-05, 2.824e-05, 2.823e-05, 2.824e-05, 792.08562367], [1517174100000, 2.825e-05, 2.825e-05, 2.822e-05, 2.822e-05, 2647.01779952], [1517174220000, 2.822e-05, 2.822e-05, 2.822e-05, 2.822e-05, 7444.62207733], [1517174340000, 2.822e-05, 2.822e-05, 2.8e-05, 2.8e-05, 33669.14982153], [1517174400000, 2.8e-05, 2.8e-05, 2.798e-05, 2.798e-05, 4574.1439913], [1517174460000, 2.798e-05, 2.8e-05, 2.798e-05, 2.8e-05, 594.95790974], [1517174520000, 2.8e-05, 2.825e-05, 2.8e-05, 2.8e-05, 843.18309541], [1517174580000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 699.5460238], [1517174640000, 2.811e-05, 2.811e-05, 2.811e-05, 2.811e-05, 174.7640685], [1517174700000, 2.811e-05, 2.82e-05, 2.775e-05, 2.791e-05, 142451.38980495], [1517174760000, 2.791e-05, 2.81e-05, 2.786e-05, 2.791e-05, 1301.38362075], [1517174820000, 2.82e-05, 2.828e-05, 2.8e-05, 2.8e-05, 5878.32206981], [1517174880000, 2.8e-05, 2.8e-05, 2.8e-05, 2.8e-05, 4595.48929802], [1517174940000, 2.827e-05, 2.827e-05, 2.827e-05, 2.827e-05, 22.79449339], [1517175000000, 2.827e-05, 2.827e-05, 2.819e-05, 2.819e-05, 554.377636], [1517175060000, 2.827e-05, 2.828e-05, 2.827e-05, 2.827e-05, 1695.78541889], [1517175120000, 2.834e-05, 2.835e-05, 2.834e-05, 2.835e-05, 246.72714594], [1517175180000, 2.832e-05, 2.832e-05, 2.832e-05, 2.832e-05, 680.7760141], [1517175240000, 2.819e-05, 2.819e-05, 2.819e-05, 2.819e-05, 303.21817833], [1517175420000, 2.819e-05, 2.819e-05, 2.813e-05, 2.813e-05, 1619.29872234], [1517175480000, 2.829e-05, 2.829e-05, 2.829e-05, 2.829e-05, 28.0], [1517175600000, 2.805e-05, 2.805e-05, 2.802e-05, 2.802e-05, 300.0], [1517175660000, 2.803e-05, 2.803e-05, 2.802e-05, 2.802e-05, 2705.47879965], [1517175720000, 2.825e-05, 2.825e-05, 2.799e-05, 2.799e-05, 7588.16759092], [1517175840000, 2.799e-05, 2.799e-05, 2.798e-05, 2.798e-05, 10588.3916375], [1517175900000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 2107.71119468], [1517175960000, 2.798e-05, 2.825e-05, 2.798e-05, 2.825e-05, 3203.60122054], [1517176020000, 2.824e-05, 2.824e-05, 2.823e-05, 2.823e-05, 133.73075578], [1517176080000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 7350.91689114], [1517176140000, 2.798e-05, 2.798e-05, 2.798e-05, 2.798e-05, 369.53971072], [1517176440000, 2.818e-05, 2.818e-05, 2.818e-05, 2.818e-05, 325.30904356], [1517176500000, 2.8e-05, 2.803e-05, 2.799e-05, 2.799e-05, 7697.79744711], [1517176560000, 2.805e-05, 2.809e-05, 2.799e-05, 2.809e-05, 8855.51955929], [1517176620000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 50.0], [1517176680000, 2.802e-05, 2.802e-05, 2.801e-05, 2.802e-05, 1681.66176636], [1517176740000, 2.802e-05, 2.802e-05, 2.802e-05, 2.802e-05, 184.90032233], [1517176800000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 200.0], [1517176860000, 2.803e-05, 2.805e-05, 2.803e-05, 2.805e-05, 270.24175401], [1517176920000, 2.805e-05, 2.805e-05, 2.804e-05, 2.805e-05, 3091.58446603], [1517177040000, 2.805e-05, 2.805e-05, 2.803e-05, 2.805e-05, 15625.514507], [1517177100000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 4788.82870838], [1517177160000, 2.805e-05, 2.805e-05, 2.804e-05, 2.805e-05, 4455.00586083], [1517177220000, 2.805e-05, 2.805e-05, 2.805e-05, 2.805e-05, 1439.26362773], [1517177280000, 2.805e-05, 2.816e-05, 2.805e-05, 2.816e-05, 1861.66691674], [1517177340000, 2.805e-05, 2.821e-05, 2.805e-05, 2.821e-05, 1438.76846479], [1517177460000, 2.819e-05, 2.819e-05, 2.819e-05, 2.819e-05, 21.90231128], [1517177520000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 232.35334458], [1517177640000, 2.82e-05, 2.821e-05, 2.82e-05, 2.821e-05, 1747.99176488], [1517177760000, 2.822e-05, 2.824e-05, 2.822e-05, 2.824e-05, 1621.062467], [1517177940000, 2.823e-05, 2.824e-05, 2.822e-05, 2.822e-05, 4979.17017367], [1517178000000, 2.822e-05, 2.828e-05, 2.822e-05, 2.828e-05, 80.08034029], [1517178060000, 2.823e-05, 2.823e-05, 2.823e-05, 2.823e-05, 141.99716714], [1517178120000, 2.824e-05, 2.824e-05, 2.823e-05, 2.823e-05, 1605.47433963], [1517178240000, 2.828e-05, 2.828e-05, 2.823e-05, 2.823e-05, 1477.09038605], [1517178300000, 2.821e-05, 2.822e-05, 2.821e-05, 2.822e-05, 1485.10223032], [1517178360000, 2.822e-05, 2.822e-05, 2.821e-05, 2.821e-05, 53.09497905], [1517178420000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 389.55774371], [1517178480000, 2.822e-05, 2.822e-05, 2.822e-05, 2.822e-05, 75.01395185], [1517178540000, 2.822e-05, 2.835e-05, 2.822e-05, 2.835e-05, 2440.89245757], [1517178660000, 2.834e-05, 2.835e-05, 2.834e-05, 2.835e-05, 3964.59453704], [1517178720000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 66.26766417], [1517178780000, 2.833e-05, 2.833e-05, 2.833e-05, 2.833e-05, 23.0], [1517178840000, 2.832e-05, 2.832e-05, 2.832e-05, 2.832e-05, 60.0], [1517178960000, 2.824e-05, 2.824e-05, 2.824e-05, 2.824e-05, 1000.0], [1517179020000, 2.824e-05, 2.824e-05, 2.824e-05, 2.824e-05, 811.01664531], [1517179080000, 2.831e-05, 2.835e-05, 2.824e-05, 2.824e-05, 3165.24626387], [1517179200000, 2.823e-05, 2.824e-05, 2.823e-05, 2.824e-05, 347.79513546], [1517179260000, 2.835e-05, 2.835e-05, 2.824e-05, 2.824e-05, 360.53319523], [1517179380000, 2.825e-05, 2.834e-05, 2.825e-05, 2.825e-05, 4679.13838496], [1517179500000, 2.833e-05, 2.833e-05, 2.833e-05, 2.833e-05, 2965.44977379], [1517179560000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 28.79835689], [1517179620000, 2.829e-05, 2.829e-05, 2.826e-05, 2.826e-05, 2483.988048], [1517179680000, 2.826e-05, 2.826e-05, 2.822e-05, 2.822e-05, 14743.18234769], [1517179740000, 2.823e-05, 2.823e-05, 2.822e-05, 2.822e-05, 1577.331053], [1517179800000, 2.823e-05, 2.828e-05, 2.822e-05, 2.822e-05, 45557.10226563], [1517179860000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 21.79289881], [1517179980000, 2.821e-05, 2.821e-05, 2.821e-05, 2.821e-05, 8624.25358316], [1517180220000, 2.806e-05, 2.818e-05, 2.806e-05, 2.818e-05, 10146.8572925], [1517180280000, 2.818e-05, 2.818e-05, 2.816e-05, 2.816e-05, 671.96857677], [1517180340000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 7421.21614686], [1517180400000, 2.81e-05, 2.81e-05, 2.806e-05, 2.806e-05, 6128.65407167], [1517180460000, 2.808e-05, 2.808e-05, 2.808e-05, 2.808e-05, 1182.64422256], [1517180520000, 2.81e-05, 2.81e-05, 2.806e-05, 2.807e-05, 17036.65813132], [1517180580000, 2.807e-05, 2.819e-05, 2.806e-05, 2.819e-05, 3613.7914685], [1517180700000, 2.819e-05, 2.828e-05, 2.819e-05, 2.819e-05, 1957.53083978], [1517180760000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 500.0], [1517180820000, 2.811e-05, 2.811e-05, 2.81e-05, 2.81e-05, 979.83999663], [1517180880000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 50.00000007], [1517180940000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 2264.93815177], [1517181000000, 2.818e-05, 2.818e-05, 2.81e-05, 2.81e-05, 6558.27762377], [1517181060000, 2.817e-05, 2.819e-05, 2.81e-05, 2.81e-05, 3691.06752262], [1517181120000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 51.91209486], [1517181180000, 2.81e-05, 2.81e-05, 2.81e-05, 2.81e-05, 1421.75739223], [1517181240000, 2.81e-05, 2.81e-05, 2.805e-05, 2.805e-05, 28538.60204963], [1517181300000, 2.809e-05, 2.81e-05, 2.806e-05, 2.806e-05, 119.78293758], [1517181420000, 2.806e-05, 2.806e-05, 2.806e-05, 2.806e-05, 100.0], [1517181480000, 2.805e-05, 2.805e-05, 2.804e-05, 2.805e-05, 6539.56699665], [1517181540000, 2.804e-05, 2.804e-05, 2.804e-05, 2.804e-05, 296.68198479], [1517181600000, 2.804e-05, 2.804e-05, 2.796e-05, 2.797e-05, 11663.28885966], [1517181660000, 2.797e-05, 2.797e-05, 2.797e-05, 2.797e-05, 1233.71992038], [1517181720000, 2.793e-05, 2.793e-05, 2.793e-05, 2.793e-05, 7182.44459907], [1517181780000, 2.797e-05, 2.797e-05, 2.797e-05, 2.797e-05, 3290.256132], [1517181840000, 2.797e-05, 2.797e-05, 2.797e-05, 2.797e-05, 481.2324173], [1517181900000, 2.797e-05, 2.797e-05, 2.797e-05, 2.797e-05, 1366.78517309], [1517181960000, 2.796e-05, 2.797e-05, 2.796e-05, 2.797e-05, 10253.63801309], [1517182020000, 2.795e-05, 2.797e-05, 2.795e-05, 2.797e-05, 4111.73563936], [1517182080000, 2.797e-05, 2.797e-05, 2.797e-05, 2.797e-05, 103.68251698], [1517182140000, 2.797e-05, 2.797e-05, 2.795e-05, 2.795e-05, 5776.62141981], [1517182200000, 2.796e-05, 2.803e-05, 2.796e-05, 2.803e-05, 10402.58406495], [1517182260000, 2.803e-05, 2.834e-05, 2.799e-05, 2.834e-05, 14071.32852376], [1517182320000, 2.832e-05, 2.834e-05, 2.832e-05, 2.834e-05, 24000.0], [1517182380000, 2.834e-05, 2.834e-05, 2.834e-05, 2.834e-05, 3125.06665587], [1517182440000, 2.817e-05, 2.817e-05, 2.817e-05, 2.817e-05, 68.2541745], [1517182500000, 2.833e-05, 2.834e-05, 2.833e-05, 2.834e-05, 1334.29656199], [1517182560000, 2.834e-05, 2.837e-05, 2.834e-05, 2.837e-05, 125.116699], [1517182620000, 2.834e-05, 2.834e-05, 2.834e-05, 2.834e-05, 55.86697264], [1517182680000, 2.834e-05, 2.836e-05, 2.834e-05, 2.836e-05, 7431.5989519], [1517182740000, 2.834e-05, 2.836e-05, 2.834e-05, 2.836e-05, 7741.62442939], [1517182800000, 2.834e-05, 2.834e-05, 2.834e-05, 2.834e-05, 619.0371645], [1517182860000, 2.834e-05, 2.834e-05, 2.834e-05, 2.834e-05, 924.30281159], [1517182920000, 2.833e-05, 2.835e-05, 2.833e-05, 2.835e-05, 206.17239968], [1517182980000, 2.835e-05, 2.835e-05, 2.835e-05, 2.835e-05, 190.23011111], [1517183040000, 2.83e-05, 2.83e-05, 2.83e-05, 2.83e-05, 40.0], [1517183100000, 2.829e-05, 2.83e-05, 2.829e-05, 2.83e-05, 20938.26129021], [1517183160000, 2.83e-05, 2.83e-05, 2.827e-05, 2.827e-05, 1280.16300566], [1517183220000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 20.97220006], [1517183280000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 536.28888052], [1517183340000, 2.838e-05, 2.838e-05, 2.838e-05, 2.838e-05, 84.86562942], [1517183400000, 2.839e-05, 2.844e-05, 2.839e-05, 2.844e-05, 7575.80781258], [1517183460000, 2.844e-05, 2.844e-05, 2.842e-05, 2.842e-05, 2728.18799365], [1517183520000, 2.845e-05, 2.86e-05, 2.845e-05, 2.859e-05, 5164.84993368], [1517183580000, 2.859e-05, 2.86e-05, 2.859e-05, 2.86e-05, 9101.204421], [1517183640000, 2.859e-05, 2.86e-05, 2.859e-05, 2.86e-05, 11101.24705478], [1517183700000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 211.90478557], [1517183760000, 2.86e-05, 2.86e-05, 2.859e-05, 2.859e-05, 4773.21204518], [1517183820000, 2.867e-05, 2.867e-05, 2.867e-05, 2.867e-05, 1442.76974823], [1517183880000, 2.867e-05, 2.867e-05, 2.867e-05, 2.867e-05, 2985.72125667], [1517183940000, 2.863e-05, 2.863e-05, 2.863e-05, 2.863e-05, 3646.13423233], [1517184000000, 2.862e-05, 2.863e-05, 2.862e-05, 2.862e-05, 2067.97446939], [1517184060000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 774.05591489], [1517184120000, 2.86e-05, 2.86e-05, 2.846e-05, 2.846e-05, 3749.94257215], [1517184180000, 2.842e-05, 2.846e-05, 2.842e-05, 2.846e-05, 9960.95747405], [1517184240000, 2.848e-05, 2.848e-05, 2.828e-05, 2.834e-05, 6207.92188175], [1517184300000, 2.839e-05, 2.841e-05, 2.839e-05, 2.839e-05, 5686.6930851], [1517184360000, 2.839e-05, 2.866e-05, 2.837e-05, 2.837e-05, 8994.57403988], [1517184420000, 2.85e-05, 2.85e-05, 2.85e-05, 2.85e-05, 774.05591489], [1517184480000, 2.85e-05, 2.855e-05, 2.85e-05, 2.85e-05, 430.1264586], [1517184600000, 2.85e-05, 2.867e-05, 2.838e-05, 2.838e-05, 8778.53463788], [1517184660000, 2.84e-05, 2.84e-05, 2.84e-05, 2.84e-05, 616.98600473], [1517184780000, 2.839e-05, 2.839e-05, 2.839e-05, 2.839e-05, 2326.38425203], [1517184840000, 2.839e-05, 2.839e-05, 2.838e-05, 2.838e-05, 5176.81340321], [1517184900000, 2.838e-05, 2.866e-05, 2.838e-05, 2.866e-05, 1305.32506358], [1517185020000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 774.41710676], [1517185080000, 2.864e-05, 2.865e-05, 2.864e-05, 2.865e-05, 16270.12956265], [1517185140000, 2.863e-05, 2.863e-05, 2.863e-05, 2.863e-05, 6295.75589821], [1517185200000, 2.841e-05, 2.841e-05, 2.841e-05, 2.841e-05, 7140.39228243], [1517185380000, 2.858e-05, 2.86e-05, 2.858e-05, 2.86e-05, 2045.51047825], [1517185440000, 2.86e-05, 2.889e-05, 2.86e-05, 2.889e-05, 90822.86458425], [1517185500000, 2.888e-05, 2.89e-05, 2.888e-05, 2.889e-05, 36496.93644181], [1517185560000, 2.889e-05, 2.889e-05, 2.888e-05, 2.888e-05, 14106.44768754], [1517185620000, 2.889e-05, 2.89e-05, 2.889e-05, 2.89e-05, 350.67494012], [1517185680000, 2.89e-05, 2.89e-05, 2.889e-05, 2.889e-05, 12753.17154851], [1517185740000, 2.89e-05, 2.894e-05, 2.889e-05, 2.894e-05, 16423.78208481], [1517185800000, 2.895e-05, 2.897e-05, 2.89e-05, 2.896e-05, 34112.35503604], [1517185860000, 2.895e-05, 2.909e-05, 2.895e-05, 2.899e-05, 77370.44745998], [1517185920000, 2.899e-05, 2.9e-05, 2.889e-05, 2.895e-05, 20064.09940922], [1517185980000, 2.895e-05, 2.902e-05, 2.889e-05, 2.896e-05, 14645.33199455], [1517186040000, 2.9e-05, 2.921e-05, 2.896e-05, 2.896e-05, 187365.86998125], [1517186100000, 2.896e-05, 2.914e-05, 2.896e-05, 2.914e-05, 15156.23655147], [1517186160000, 2.897e-05, 2.914e-05, 2.896e-05, 2.9e-05, 2663.16428331], [1517186220000, 2.914e-05, 2.914e-05, 2.91e-05, 2.914e-05, 13489.11605784], [1517186280000, 2.92e-05, 2.923e-05, 2.914e-05, 2.921e-05, 55842.25879217], [1517186340000, 2.916e-05, 2.923e-05, 2.915e-05, 2.922e-05, 27547.90327137], [1517186400000, 2.922e-05, 2.924e-05, 2.916e-05, 2.916e-05, 112277.77803475], [1517186460000, 2.916e-05, 2.924e-05, 2.916e-05, 2.923e-05, 14255.61678794], [1517186520000, 2.923e-05, 2.925e-05, 2.917e-05, 2.925e-05, 22734.09325135], [1517186580000, 2.925e-05, 2.932e-05, 2.919e-05, 2.919e-05, 21586.26144255], [1517186640000, 2.917e-05, 2.935e-05, 2.917e-05, 2.935e-05, 30063.16095807], [1517186700000, 2.935e-05, 2.965e-05, 2.932e-05, 2.955e-05, 76441.84567864], [1517186760000, 2.958e-05, 2.966e-05, 2.947e-05, 2.966e-05, 196196.11950566], [1517186820000, 2.948e-05, 2.966e-05, 2.926e-05, 2.932e-05, 49770.89479538], [1517186880000, 2.934e-05, 2.963e-05, 2.932e-05, 2.95e-05, 42082.53747505], [1517186940000, 2.966e-05, 2.967e-05, 2.95e-05, 2.951e-05, 56037.22333022], [1517187000000, 2.951e-05, 2.967e-05, 2.951e-05, 2.964e-05, 74888.04359529], [1517187060000, 2.964e-05, 2.971e-05, 2.956e-05, 2.971e-05, 48547.83260672], [1517187120000, 2.971e-05, 2.991e-05, 2.97e-05, 2.988e-05, 212641.65594825], [1517187180000, 2.988e-05, 3.022e-05, 2.963e-05, 2.987e-05, 277109.63707041], [1517187240000, 2.987e-05, 3.024e-05, 2.986e-05, 3e-05, 123578.18756974], [1517187300000, 2.985e-05, 3e-05, 2.96e-05, 2.964e-05, 91146.58532598], [1517187360000, 2.965e-05, 2.975e-05, 2.964e-05, 2.964e-05, 46537.58032711], [1517187420000, 2.967e-05, 2.967e-05, 2.951e-05, 2.951e-05, 75362.30286179], [1517187480000, 2.952e-05, 2.956e-05, 2.941e-05, 2.941e-05, 296154.37524588], [1517187540000, 2.941e-05, 2.972e-05, 2.941e-05, 2.963e-05, 25671.26299907], [1517187600000, 2.96e-05, 2.963e-05, 2.96e-05, 2.963e-05, 67813.3504245], [1517187660000, 2.963e-05, 2.979e-05, 2.96e-05, 2.963e-05, 82112.61995982], [1517187720000, 2.963e-05, 2.963e-05, 2.961e-05, 2.961e-05, 12991.39166153], [1517187780000, 2.961e-05, 2.963e-05, 2.96e-05, 2.963e-05, 46749.01769532], [1517187840000, 2.963e-05, 2.963e-05, 2.96e-05, 2.96e-05, 11247.61443767], [1517187900000, 2.96e-05, 2.969e-05, 2.96e-05, 2.96e-05, 13092.75633499], [1517187960000, 2.959e-05, 2.959e-05, 2.932e-05, 2.932e-05, 28403.6417168], [1517188020000, 2.932e-05, 2.964e-05, 2.932e-05, 2.933e-05, 39259.79029056], [1517188080000, 2.943e-05, 2.943e-05, 2.933e-05, 2.943e-05, 2243.46528924], [1517188140000, 2.934e-05, 2.938e-05, 2.925e-05, 2.938e-05, 35412.83603397], [1517188200000, 2.938e-05, 2.938e-05, 2.929e-05, 2.935e-05, 53989.03731954], [1517188260000, 2.935e-05, 2.937e-05, 2.935e-05, 2.936e-05, 72772.9205666], [1517188320000, 2.936e-05, 2.936e-05, 2.925e-05, 2.926e-05, 21720.48758234], [1517188380000, 2.926e-05, 2.926e-05, 2.915e-05, 2.915e-05, 80250.54046365], [1517188440000, 2.914e-05, 2.92e-05, 2.898e-05, 2.91e-05, 30566.73606202], [1517188500000, 2.91e-05, 2.91e-05, 2.89e-05, 2.89e-05, 11184.55793264], [1517188560000, 2.89e-05, 2.91e-05, 2.889e-05, 2.91e-05, 8336.1184981], [1517188620000, 2.891e-05, 2.891e-05, 2.887e-05, 2.891e-05, 36928.73311426], [1517188680000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 7275.62834066], [1517188740000, 2.891e-05, 2.901e-05, 2.891e-05, 2.901e-05, 427.12144838], [1517188800000, 2.894e-05, 2.907e-05, 2.894e-05, 2.906e-05, 15374.92011697], [1517188860000, 2.907e-05, 2.91e-05, 2.891e-05, 2.91e-05, 20181.65019762], [1517188920000, 2.91e-05, 2.91e-05, 2.902e-05, 2.902e-05, 20043.57696692], [1517188980000, 2.902e-05, 2.919e-05, 2.902e-05, 2.919e-05, 8145.92222614], [1517189040000, 2.919e-05, 2.919e-05, 2.902e-05, 2.902e-05, 801.0403749], [1517189100000, 2.902e-05, 2.917e-05, 2.901e-05, 2.916e-05, 29479.54571327], [1517189160000, 2.916e-05, 2.916e-05, 2.901e-05, 2.901e-05, 29382.27903616], [1517189220000, 2.895e-05, 2.916e-05, 2.883e-05, 2.888e-05, 92541.58762551], [1517189280000, 2.888e-05, 2.902e-05, 2.882e-05, 2.902e-05, 45060.97007902], [1517189340000, 2.91e-05, 2.915e-05, 2.889e-05, 2.914e-05, 6878.75287309], [1517189400000, 2.902e-05, 2.902e-05, 2.902e-05, 2.902e-05, 2497.90078288], [1517189460000, 2.889e-05, 2.889e-05, 2.889e-05, 2.889e-05, 2802.39000468], [1517189520000, 2.909e-05, 2.909e-05, 2.883e-05, 2.883e-05, 8899.80562924], [1517189580000, 2.889e-05, 2.9e-05, 2.889e-05, 2.9e-05, 26893.48723972], [1517189640000, 2.9e-05, 2.905e-05, 2.893e-05, 2.893e-05, 5723.68498872], [1517189700000, 2.894e-05, 2.9e-05, 2.89e-05, 2.893e-05, 10312.00513517], [1517189760000, 2.893e-05, 2.9e-05, 2.89e-05, 2.9e-05, 7467.57784767], [1517189820000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 8614.21973146], [1517189940000, 2.9e-05, 2.9e-05, 2.892e-05, 2.892e-05, 4911.13105566], [1517190000000, 2.892e-05, 2.892e-05, 2.87e-05, 2.87e-05, 75862.5501454], [1517190060000, 2.87e-05, 2.87e-05, 2.856e-05, 2.859e-05, 28627.65796871], [1517190120000, 2.865e-05, 2.906e-05, 2.844e-05, 2.906e-05, 58107.2752585], [1517190180000, 2.902e-05, 2.905e-05, 2.873e-05, 2.873e-05, 531.80416265], [1517190240000, 2.901e-05, 2.903e-05, 2.873e-05, 2.873e-05, 283.39112714], [1517190300000, 2.873e-05, 2.899e-05, 2.873e-05, 2.874e-05, 6775.49262009], [1517190360000, 2.898e-05, 2.898e-05, 2.874e-05, 2.874e-05, 2043.06143743], [1517190420000, 2.874e-05, 2.875e-05, 2.871e-05, 2.871e-05, 19952.40115707], [1517190480000, 2.871e-05, 2.871e-05, 2.855e-05, 2.855e-05, 3733.12485987], [1517190540000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 676.4861657], [1517190600000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 745.0], [1517190660000, 2.86e-05, 2.87e-05, 2.86e-05, 2.87e-05, 2749.5865632], [1517190720000, 2.874e-05, 2.878e-05, 2.874e-05, 2.878e-05, 12355.22679109], [1517190780000, 2.878e-05, 2.885e-05, 2.878e-05, 2.885e-05, 7049.84381108], [1517190840000, 2.885e-05, 2.891e-05, 2.878e-05, 2.888e-05, 20154.68760713], [1517190900000, 2.888e-05, 2.888e-05, 2.872e-05, 2.872e-05, 935.41598163], [1517190960000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 19763.41672163], [1517191020000, 2.872e-05, 2.888e-05, 2.872e-05, 2.888e-05, 764.90121405], [1517191080000, 2.888e-05, 2.888e-05, 2.887e-05, 2.887e-05, 1778.98043975], [1517191200000, 2.875e-05, 2.875e-05, 2.872e-05, 2.872e-05, 2373.50490736], [1517191260000, 2.875e-05, 2.885e-05, 2.875e-05, 2.885e-05, 2475.62600537], [1517191320000, 2.885e-05, 2.885e-05, 2.872e-05, 2.872e-05, 15658.14777712], [1517191380000, 2.885e-05, 2.885e-05, 2.872e-05, 2.872e-05, 6232.90660918], [1517191440000, 2.872e-05, 2.887e-05, 2.872e-05, 2.872e-05, 13722.06524554], [1517191500000, 2.872e-05, 2.872e-05, 2.871e-05, 2.871e-05, 6721.20109004], [1517191560000, 2.885e-05, 2.888e-05, 2.885e-05, 2.888e-05, 33887.27903622], [1517191620000, 2.887e-05, 2.887e-05, 2.887e-05, 2.887e-05, 482.0], [1517191680000, 2.887e-05, 2.887e-05, 2.887e-05, 2.887e-05, 1198.76474428], [1517191740000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 1586.0159093], [1517191800000, 2.886e-05, 2.892e-05, 2.886e-05, 2.892e-05, 5995.88283966], [1517191860000, 2.891e-05, 2.892e-05, 2.877e-05, 2.877e-05, 7650.57592948], [1517191920000, 2.88e-05, 2.891e-05, 2.874e-05, 2.891e-05, 7108.43497923], [1517191980000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 2322.33846002], [1517192040000, 2.891e-05, 2.891e-05, 2.875e-05, 2.875e-05, 54225.79869601], [1517192100000, 2.875e-05, 2.875e-05, 2.875e-05, 2.875e-05, 2745.83424811], [1517192160000, 2.875e-05, 2.875e-05, 2.875e-05, 2.875e-05, 17579.62379106], [1517192220000, 2.892e-05, 2.908e-05, 2.876e-05, 2.908e-05, 2213.24431371], [1517192280000, 2.908e-05, 2.909e-05, 2.908e-05, 2.909e-05, 8916.26566902], [1517192340000, 2.909e-05, 2.913e-05, 2.909e-05, 2.913e-05, 31601.7182048], [1517192400000, 2.91e-05, 2.913e-05, 2.91e-05, 2.913e-05, 18363.77693531], [1517192460000, 2.913e-05, 2.917e-05, 2.913e-05, 2.917e-05, 3464.15361369], [1517192520000, 2.917e-05, 2.937e-05, 2.917e-05, 2.937e-05, 7268.26816837], [1517192580000, 2.933e-05, 2.943e-05, 2.918e-05, 2.918e-05, 18433.08489081], [1517192640000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 1523.43954586], [1517192700000, 2.92e-05, 2.92e-05, 2.917e-05, 2.92e-05, 3929.15882322], [1517192760000, 2.921e-05, 2.935e-05, 2.921e-05, 2.935e-05, 1626.82809744], [1517192820000, 2.934e-05, 2.936e-05, 2.92e-05, 2.921e-05, 17176.96092971], [1517192880000, 2.921e-05, 2.921e-05, 2.908e-05, 2.908e-05, 12960.24203941], [1517192940000, 2.908e-05, 2.908e-05, 2.9e-05, 2.908e-05, 3537.28990406], [1517193000000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 23533.21426251], [1517193060000, 2.906e-05, 2.906e-05, 2.906e-05, 2.906e-05, 261.73674059], [1517193120000, 2.906e-05, 2.908e-05, 2.906e-05, 2.908e-05, 6310.68720983], [1517193180000, 2.929e-05, 2.929e-05, 2.92e-05, 2.92e-05, 1466.72924544], [1517193240000, 2.92e-05, 2.925e-05, 2.92e-05, 2.921e-05, 10755.37632005], [1517193300000, 2.922e-05, 2.923e-05, 2.922e-05, 2.923e-05, 3165.50317842], [1517193360000, 2.921e-05, 2.922e-05, 2.908e-05, 2.909e-05, 4853.50005541], [1517193420000, 2.92e-05, 2.92e-05, 2.909e-05, 2.909e-05, 5890.37419972], [1517193480000, 2.909e-05, 2.92e-05, 2.909e-05, 2.92e-05, 1994.8058294], [1517193540000, 2.909e-05, 2.92e-05, 2.909e-05, 2.909e-05, 15074.716469], [1517193600000, 2.92e-05, 2.92e-05, 2.909e-05, 2.909e-05, 10798.01596055], [1517193660000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 41.96356718], [1517193720000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 3018.63078977], [1517193780000, 2.92e-05, 2.922e-05, 2.92e-05, 2.922e-05, 2893.41362547], [1517193840000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 2727.84188114], [1517193900000, 2.923e-05, 2.924e-05, 2.923e-05, 2.923e-05, 4906.08762049], [1517193960000, 2.923e-05, 2.924e-05, 2.923e-05, 2.924e-05, 6641.7745217], [1517194020000, 2.923e-05, 2.924e-05, 2.923e-05, 2.924e-05, 1381.09194647], [1517194080000, 2.924e-05, 2.924e-05, 2.923e-05, 2.923e-05, 15237.23406148], [1517194140000, 2.924e-05, 2.924e-05, 2.923e-05, 2.923e-05, 1286.36598674], [1517194200000, 2.924e-05, 2.924e-05, 2.923e-05, 2.923e-05, 1136.32880805], [1517194260000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 8761.51391358], [1517194320000, 2.922e-05, 2.93e-05, 2.922e-05, 2.93e-05, 66570.95869599], [1517194380000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 613.13584905], [1517194440000, 2.931e-05, 2.932e-05, 2.93e-05, 2.932e-05, 30921.88179017], [1517194500000, 2.932e-05, 2.932e-05, 2.932e-05, 2.932e-05, 1000.98207588], [1517194560000, 2.933e-05, 2.933e-05, 2.932e-05, 2.932e-05, 9647.61357142], [1517194620000, 2.926e-05, 2.926e-05, 2.926e-05, 2.926e-05, 3988.59280867], [1517194680000, 2.925e-05, 2.937e-05, 2.925e-05, 2.925e-05, 6634.94314], [1517194740000, 2.925e-05, 2.925e-05, 2.924e-05, 2.924e-05, 7668.96518946], [1517194800000, 2.926e-05, 2.926e-05, 2.926e-05, 2.926e-05, 4995.32011975], [1517194860000, 2.926e-05, 2.926e-05, 2.926e-05, 2.926e-05, 845.65217391], [1517194920000, 2.929e-05, 2.929e-05, 2.926e-05, 2.926e-05, 10619.28436568], [1517194980000, 2.928e-05, 2.928e-05, 2.926e-05, 2.926e-05, 4427.70149311], [1517195040000, 2.928e-05, 2.929e-05, 2.928e-05, 2.929e-05, 6108.40566728], [1517195100000, 2.929e-05, 2.929e-05, 2.926e-05, 2.926e-05, 443.75688865], [1517195160000, 2.926e-05, 2.926e-05, 2.924e-05, 2.926e-05, 2694.544803], [1517195220000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 29971.39633687], [1517195280000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 9539.26556077], [1517195340000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 1429.58425956], [1517195400000, 2.925e-05, 2.925e-05, 2.924e-05, 2.924e-05, 1044.68672588], [1517195460000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 282.62585669], [1517195520000, 2.922e-05, 2.922e-05, 2.911e-05, 2.911e-05, 13972.968954], [1517195580000, 2.918e-05, 2.918e-05, 2.911e-05, 2.911e-05, 3324.45585051], [1517195640000, 2.91e-05, 2.91e-05, 2.91e-05, 2.91e-05, 500.0], [1517195700000, 2.909e-05, 2.909e-05, 2.903e-05, 2.903e-05, 1391.08743878], [1517195760000, 2.902e-05, 2.903e-05, 2.879e-05, 2.902e-05, 5495.83965582], [1517195820000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 2930.94163971], [1517195880000, 2.879e-05, 2.879e-05, 2.875e-05, 2.879e-05, 27385.11522589], [1517195940000, 2.879e-05, 2.879e-05, 2.875e-05, 2.879e-05, 12319.49793612], [1517196000000, 2.879e-05, 2.879e-05, 2.879e-05, 2.879e-05, 6837.46105385], [1517196060000, 2.877e-05, 2.899e-05, 2.877e-05, 2.899e-05, 543.51432815], [1517196120000, 2.875e-05, 2.875e-05, 2.875e-05, 2.875e-05, 2275.36167499], [1517196180000, 2.899e-05, 2.901e-05, 2.899e-05, 2.899e-05, 15092.53575644], [1517196240000, 2.9e-05, 2.901e-05, 2.899e-05, 2.901e-05, 11337.47279701], [1517196300000, 2.9e-05, 2.901e-05, 2.899e-05, 2.899e-05, 6610.28353313], [1517196360000, 2.899e-05, 2.901e-05, 2.899e-05, 2.901e-05, 1636.35693957], [1517196420000, 2.901e-05, 2.901e-05, 2.899e-05, 2.899e-05, 1641.69110299], [1517196480000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 9238.00446928], [1517196600000, 2.884e-05, 2.897e-05, 2.876e-05, 2.876e-05, 419.82693991], [1517196660000, 2.876e-05, 2.877e-05, 2.875e-05, 2.875e-05, 4027.46975848], [1517196720000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 1290.89714498], [1517196840000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 66.0], [1517196900000, 2.894e-05, 2.895e-05, 2.894e-05, 2.895e-05, 8259.69386868], [1517196960000, 2.894e-05, 2.895e-05, 2.894e-05, 2.895e-05, 2817.12619023], [1517197020000, 2.895e-05, 2.895e-05, 2.895e-05, 2.895e-05, 7288.95870017], [1517197080000, 2.897e-05, 2.899e-05, 2.897e-05, 2.899e-05, 7699.52072001], [1517197140000, 2.899e-05, 2.9e-05, 2.899e-05, 2.9e-05, 1324.40216958], [1517197200000, 2.901e-05, 2.901e-05, 2.901e-05, 2.901e-05, 625.4395036], [1517197260000, 2.901e-05, 2.901e-05, 2.9e-05, 2.9e-05, 12164.79848373], [1517197320000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 3000.0], [1517197380000, 2.901e-05, 2.903e-05, 2.901e-05, 2.903e-05, 19810.57363298], [1517197440000, 2.903e-05, 2.903e-05, 2.902e-05, 2.902e-05, 8334.76369276], [1517197500000, 2.902e-05, 2.903e-05, 2.902e-05, 2.903e-05, 6500.58919016], [1517197560000, 2.905e-05, 2.905e-05, 2.905e-05, 2.905e-05, 13741.02344858], [1517197620000, 2.905e-05, 2.905e-05, 2.905e-05, 2.905e-05, 1234.67819148], [1517197680000, 2.905e-05, 2.92e-05, 2.905e-05, 2.905e-05, 4569.69979454], [1517197740000, 2.905e-05, 2.905e-05, 2.904e-05, 2.904e-05, 12256.28974277], [1517197800000, 2.904e-05, 2.904e-05, 2.903e-05, 2.903e-05, 3454.90661041], [1517197860000, 2.903e-05, 2.905e-05, 2.902e-05, 2.905e-05, 20486.78121656], [1517197920000, 2.905e-05, 2.905e-05, 2.905e-05, 2.905e-05, 6837.11358436], [1517197980000, 2.902e-05, 2.902e-05, 2.902e-05, 2.902e-05, 1802.0], [1517198040000, 2.902e-05, 2.902e-05, 2.89e-05, 2.89e-05, 11866.04091115], [1517198100000, 2.89e-05, 2.89e-05, 2.89e-05, 2.89e-05, 386.19956179], [1517198160000, 2.89e-05, 2.895e-05, 2.89e-05, 2.89e-05, 3744.59936486], [1517198220000, 2.89e-05, 2.89e-05, 2.877e-05, 2.89e-05, 1742.11954191], [1517198280000, 2.89e-05, 2.89e-05, 2.877e-05, 2.877e-05, 14562.92810415], [1517198340000, 2.895e-05, 2.895e-05, 2.895e-05, 2.895e-05, 34.54231434], [1517198400000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 342.5523501], [1517198460000, 2.878e-05, 2.88e-05, 2.873e-05, 2.88e-05, 26476.25573058], [1517198520000, 2.88e-05, 2.88e-05, 2.876e-05, 2.876e-05, 2168.61248737], [1517198580000, 2.877e-05, 2.877e-05, 2.867e-05, 2.867e-05, 12088.25926585], [1517198640000, 2.88e-05, 2.88e-05, 2.868e-05, 2.868e-05, 15317.91451136], [1517198760000, 2.868e-05, 2.89e-05, 2.868e-05, 2.869e-05, 1151.21660148], [1517198820000, 2.869e-05, 2.869e-05, 2.868e-05, 2.869e-05, 4348.84486417], [1517198880000, 2.868e-05, 2.869e-05, 2.868e-05, 2.869e-05, 2719.17004072], [1517198940000, 2.869e-05, 2.869e-05, 2.869e-05, 2.869e-05, 7588.94433519], [1517199000000, 2.869e-05, 2.87e-05, 2.868e-05, 2.87e-05, 11482.0330721], [1517199120000, 2.89e-05, 2.89e-05, 2.89e-05, 2.89e-05, 1082.00455576], [1517199240000, 2.868e-05, 2.868e-05, 2.861e-05, 2.861e-05, 9916.42323382], [1517199300000, 2.887e-05, 2.887e-05, 2.86e-05, 2.86e-05, 3780.02770082], [1517199360000, 2.86e-05, 2.869e-05, 2.86e-05, 2.86e-05, 3864.6602086], [1517199420000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 10434.81356689], [1517199480000, 2.861e-05, 2.861e-05, 2.859e-05, 2.859e-05, 20303.96667711], [1517199540000, 2.859e-05, 2.859e-05, 2.859e-05, 2.859e-05, 4241.18509828], [1517199600000, 2.86e-05, 2.86e-05, 2.859e-05, 2.859e-05, 5151.42134293], [1517199660000, 2.859e-05, 2.859e-05, 2.859e-05, 2.859e-05, 343.76074252], [1517199780000, 2.859e-05, 2.872e-05, 2.859e-05, 2.859e-05, 15238.62240203], [1517199840000, 2.859e-05, 2.859e-05, 2.859e-05, 2.859e-05, 333.62936734], [1517199900000, 2.859e-05, 2.872e-05, 2.859e-05, 2.872e-05, 1857.36134144], [1517199960000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 475.84995644], [1517200020000, 2.862e-05, 2.869e-05, 2.859e-05, 2.859e-05, 700.841985], [1517200080000, 2.859e-05, 2.872e-05, 2.858e-05, 2.858e-05, 5886.77980247], [1517200140000, 2.857e-05, 2.858e-05, 2.857e-05, 2.857e-05, 6746.31950132], [1517200200000, 2.855e-05, 2.858e-05, 2.855e-05, 2.858e-05, 2483.17535811], [1517200260000, 2.858e-05, 2.858e-05, 2.855e-05, 2.855e-05, 3588.70234379], [1517200320000, 2.855e-05, 2.858e-05, 2.855e-05, 2.858e-05, 20379.14181169], [1517200380000, 2.858e-05, 2.858e-05, 2.858e-05, 2.858e-05, 3841.14213572], [1517200440000, 2.859e-05, 2.884e-05, 2.853e-05, 2.853e-05, 32120.81697985], [1517200500000, 2.853e-05, 2.853e-05, 2.85e-05, 2.85e-05, 11064.35639459], [1517200560000, 2.848e-05, 2.848e-05, 2.847e-05, 2.847e-05, 3648.1801411], [1517200620000, 2.845e-05, 2.848e-05, 2.843e-05, 2.843e-05, 18323.32839047], [1517200680000, 2.843e-05, 2.843e-05, 2.843e-05, 2.843e-05, 3361.12510197], [1517200800000, 2.845e-05, 2.845e-05, 2.845e-05, 2.845e-05, 1716.17330099], [1517200860000, 2.845e-05, 2.845e-05, 2.845e-05, 2.845e-05, 99.0], [1517200920000, 2.845e-05, 2.845e-05, 2.845e-05, 2.845e-05, 201.37642141], [1517200980000, 2.847e-05, 2.881e-05, 2.845e-05, 2.881e-05, 6181.48321806], [1517201040000, 2.877e-05, 2.877e-05, 2.873e-05, 2.873e-05, 496.55763403], [1517201100000, 2.847e-05, 2.876e-05, 2.846e-05, 2.847e-05, 9626.14330077], [1517201160000, 2.853e-05, 2.853e-05, 2.853e-05, 2.853e-05, 412.63527628], [1517201220000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 736.74492813], [1517201340000, 2.86e-05, 2.865e-05, 2.86e-05, 2.865e-05, 1392.09960328], [1517201460000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 240.70646728], [1517201520000, 2.864e-05, 2.864e-05, 2.842e-05, 2.842e-05, 21829.94129072], [1517201580000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 411.59513747], [1517201640000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 2933.10053512], [1517201700000, 2.88e-05, 2.9e-05, 2.88e-05, 2.9e-05, 20669.15733613], [1517201760000, 2.871e-05, 2.871e-05, 2.867e-05, 2.867e-05, 320.54176266], [1517201820000, 2.867e-05, 2.868e-05, 2.865e-05, 2.865e-05, 3858.35467786], [1517201880000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 3900.03598413], [1517201940000, 2.848e-05, 2.865e-05, 2.846e-05, 2.848e-05, 1693.77713], [1517202000000, 2.85e-05, 2.865e-05, 2.85e-05, 2.865e-05, 5508.18709], [1517202060000, 2.865e-05, 2.865e-05, 2.851e-05, 2.851e-05, 9831.26086555], [1517202120000, 2.852e-05, 2.865e-05, 2.852e-05, 2.865e-05, 20224.09136886], [1517202180000, 2.871e-05, 2.884e-05, 2.871e-05, 2.871e-05, 3644.63339787], [1517202240000, 2.884e-05, 2.885e-05, 2.872e-05, 2.885e-05, 738.15374243], [1517202300000, 2.884e-05, 2.885e-05, 2.87e-05, 2.885e-05, 46609.23784622], [1517202360000, 2.884e-05, 2.884e-05, 2.88e-05, 2.884e-05, 6669.29359864], [1517202420000, 2.884e-05, 2.885e-05, 2.884e-05, 2.885e-05, 2650.72764709], [1517202480000, 2.898e-05, 2.903e-05, 2.898e-05, 2.903e-05, 4994.7176285], [1517202540000, 2.884e-05, 2.885e-05, 2.884e-05, 2.885e-05, 151.85935169], [1517202600000, 2.885e-05, 2.885e-05, 2.884e-05, 2.884e-05, 1616.38340248], [1517202660000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 903.38248216], [1517202720000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 1707.37965376], [1517202780000, 2.873e-05, 2.873e-05, 2.871e-05, 2.871e-05, 3000.0], [1517202840000, 2.871e-05, 2.871e-05, 2.87e-05, 2.87e-05, 4662.32150473], [1517203020000, 2.875e-05, 2.875e-05, 2.871e-05, 2.871e-05, 1678.19734536], [1517203080000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 1171.50534248], [1517203320000, 2.899e-05, 2.899e-05, 2.881e-05, 2.881e-05, 327.3228857], [1517203440000, 2.882e-05, 2.882e-05, 2.881e-05, 2.881e-05, 1352.83999999], [1517203500000, 2.898e-05, 2.898e-05, 2.898e-05, 2.898e-05, 20.20880123], [1517203560000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 345.0384761], [1517203620000, 2.882e-05, 2.883e-05, 2.882e-05, 2.883e-05, 3140.17875582], [1517203800000, 2.884e-05, 2.884e-05, 2.883e-05, 2.883e-05, 3805.22401201], [1517203860000, 2.883e-05, 2.883e-05, 2.882e-05, 2.882e-05, 11996.6990746], [1517203920000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 1137.72762367], [1517204040000, 2.88e-05, 2.88e-05, 2.872e-05, 2.872e-05, 2823.32406006], [1517204100000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 226.88716612], [1517204160000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 1842.97937217], [1517204220000, 2.87e-05, 2.872e-05, 2.87e-05, 2.87e-05, 3307.62332662], [1517204280000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 3369.71471042], [1517204340000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 500.0], [1517204400000, 2.87e-05, 2.87e-05, 2.857e-05, 2.857e-05, 16794.76625685], [1517204460000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 5811.47365139], [1517204520000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 1085.01065378], [1517204580000, 2.866e-05, 2.866e-05, 2.857e-05, 2.857e-05, 4525.41971839], [1517204640000, 2.857e-05, 2.866e-05, 2.857e-05, 2.866e-05, 1181.92832335], [1517204700000, 2.866e-05, 2.866e-05, 2.857e-05, 2.857e-05, 412.42889646], [1517204760000, 2.866e-05, 2.866e-05, 2.866e-05, 2.866e-05, 1755.88392038], [1517204820000, 2.866e-05, 2.87e-05, 2.861e-05, 2.87e-05, 4268.55229415], [1517204880000, 2.87e-05, 2.87e-05, 2.87e-05, 2.87e-05, 3794.66265476], [1517204940000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 3599.44447917], [1517205000000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 950.0102306], [1517205060000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 163.24037604], [1517205180000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 66.0], [1517205240000, 2.88e-05, 2.88e-05, 2.874e-05, 2.88e-05, 5776.68709675], [1517205300000, 2.88e-05, 2.899e-05, 2.88e-05, 2.899e-05, 13112.26279177], [1517205360000, 2.881e-05, 2.881e-05, 2.88e-05, 2.88e-05, 1501.14578587], [1517205480000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 3463.54166667], [1517205540000, 2.877e-05, 2.877e-05, 2.876e-05, 2.876e-05, 460.47240232], [1517205600000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 2714.27775444], [1517205660000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 4080.04237977], [1517205720000, 2.876e-05, 2.877e-05, 2.874e-05, 2.877e-05, 6427.90607435], [1517205780000, 2.877e-05, 2.881e-05, 2.877e-05, 2.881e-05, 955.18376076], [1517205840000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 1616.68586624], [1517205900000, 2.883e-05, 2.899e-05, 2.883e-05, 2.899e-05, 4098.54938675], [1517205960000, 2.899e-05, 2.9e-05, 2.899e-05, 2.9e-05, 11217.19813057], [1517206020000, 2.9e-05, 2.901e-05, 2.886e-05, 2.886e-05, 7953.18860901], [1517206140000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 1325.98493574], [1517206260000, 2.887e-05, 2.887e-05, 2.885e-05, 2.885e-05, 2692.81461389], [1517206320000, 2.885e-05, 2.886e-05, 2.883e-05, 2.886e-05, 1221.45332014], [1517206380000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 11341.52598753], [1517206440000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 1000.0], [1517206500000, 2.894e-05, 2.894e-05, 2.873e-05, 2.873e-05, 20143.81834113], [1517206560000, 2.874e-05, 2.874e-05, 2.861e-05, 2.862e-05, 95191.31431063], [1517206620000, 2.862e-05, 2.862e-05, 2.861e-05, 2.862e-05, 22649.26060671], [1517206680000, 2.862e-05, 2.862e-05, 2.862e-05, 2.862e-05, 1134.42544975], [1517206740000, 2.862e-05, 2.862e-05, 2.858e-05, 2.858e-05, 2002.03786242], [1517206800000, 2.858e-05, 2.858e-05, 2.857e-05, 2.858e-05, 3053.53907224], [1517206860000, 2.857e-05, 2.857e-05, 2.844e-05, 2.844e-05, 56437.33957401], [1517206920000, 2.846e-05, 2.846e-05, 2.844e-05, 2.846e-05, 17202.79640015], [1517206980000, 2.858e-05, 2.88e-05, 2.858e-05, 2.88e-05, 2553.92576317], [1517207040000, 2.876e-05, 2.876e-05, 2.876e-05, 2.876e-05, 25.46273194], [1517207160000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 102.08846159], [1517207280000, 2.855e-05, 2.871e-05, 2.855e-05, 2.865e-05, 8663.81936213], [1517207340000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 7586.88619321], [1517207400000, 2.866e-05, 2.868e-05, 2.866e-05, 2.867e-05, 1829.00261197], [1517207460000, 2.868e-05, 2.872e-05, 2.852e-05, 2.852e-05, 11529.46758382], [1517207520000, 2.853e-05, 2.853e-05, 2.853e-05, 2.853e-05, 2645.79284964], [1517207580000, 2.853e-05, 2.853e-05, 2.852e-05, 2.852e-05, 27653.90076647], [1517207640000, 2.853e-05, 2.853e-05, 2.853e-05, 2.853e-05, 131.80789252], [1517207700000, 2.853e-05, 2.853e-05, 2.853e-05, 2.853e-05, 26253.17757941], [1517207760000, 2.859e-05, 2.859e-05, 2.859e-05, 2.859e-05, 500.0], [1517207820000, 2.853e-05, 2.853e-05, 2.852e-05, 2.852e-05, 735.98066374], [1517207880000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 324.15214213], [1517207940000, 2.853e-05, 2.853e-05, 2.852e-05, 2.852e-05, 263.50600575], [1517208000000, 2.858e-05, 2.858e-05, 2.858e-05, 2.858e-05, 174.51014696], [1517208060000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 11944.65424193], [1517208120000, 2.852e-05, 2.858e-05, 2.852e-05, 2.858e-05, 7088.47028178], [1517208180000, 2.857e-05, 2.858e-05, 2.853e-05, 2.856e-05, 10896.10175257], [1517208240000, 2.858e-05, 2.86e-05, 2.858e-05, 2.86e-05, 7562.98891167], [1517208360000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 23105.59468183], [1517208420000, 2.86e-05, 2.861e-05, 2.86e-05, 2.861e-05, 469.54196119], [1517208480000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 3756.62423961], [1517208540000, 2.86e-05, 2.86e-05, 2.86e-05, 2.86e-05, 1979.42759916], [1517208600000, 2.861e-05, 2.861e-05, 2.861e-05, 2.861e-05, 1392.55006283], [1517208780000, 2.856e-05, 2.856e-05, 2.856e-05, 2.856e-05, 2320.61617664], [1517208840000, 2.854e-05, 2.871e-05, 2.854e-05, 2.871e-05, 2564.64467787], [1517208900000, 2.872e-05, 2.872e-05, 2.871e-05, 2.871e-05, 5132.34712213], [1517208960000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 2907.47881655], [1517209020000, 2.871e-05, 2.872e-05, 2.871e-05, 2.871e-05, 967.59815178], [1517209080000, 2.871e-05, 2.872e-05, 2.871e-05, 2.872e-05, 1836.1513287], [1517209200000, 2.855e-05, 2.873e-05, 2.855e-05, 2.873e-05, 5375.72117851], [1517209260000, 2.872e-05, 2.873e-05, 2.872e-05, 2.873e-05, 5665.08201458], [1517209320000, 2.857e-05, 2.857e-05, 2.854e-05, 2.854e-05, 30676.45967231], [1517209380000, 2.854e-05, 2.854e-05, 2.854e-05, 2.854e-05, 2571.83128688], [1517209440000, 2.854e-05, 2.854e-05, 2.85e-05, 2.853e-05, 17332.94269467], [1517209560000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 2430.40154573], [1517209680000, 2.854e-05, 2.854e-05, 2.853e-05, 2.853e-05, 2323.34940152], [1517209740000, 2.867e-05, 2.867e-05, 2.853e-05, 2.853e-05, 96.15355754], [1517209800000, 2.854e-05, 2.855e-05, 2.854e-05, 2.855e-05, 3755.06767113], [1517209860000, 2.864e-05, 2.866e-05, 2.864e-05, 2.865e-05, 13230.66542382], [1517209920000, 2.865e-05, 2.865e-05, 2.855e-05, 2.855e-05, 2534.60022398], [1517210040000, 2.855e-05, 2.855e-05, 2.855e-05, 2.855e-05, 635.81977575], [1517210100000, 2.852e-05, 2.865e-05, 2.852e-05, 2.865e-05, 6714.88372568], [1517210160000, 2.851e-05, 2.865e-05, 2.846e-05, 2.865e-05, 27727.45494809], [1517210220000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 2008.25399225], [1517210280000, 2.847e-05, 2.847e-05, 2.846e-05, 2.846e-05, 5728.16395373], [1517210340000, 2.846e-05, 2.865e-05, 2.846e-05, 2.847e-05, 4001.89698805], [1517210400000, 2.865e-05, 2.865e-05, 2.847e-05, 2.847e-05, 1103.67564132], [1517210460000, 2.847e-05, 2.847e-05, 2.845e-05, 2.845e-05, 20313.77534345], [1517210520000, 2.864e-05, 2.864e-05, 2.847e-05, 2.847e-05, 854.00303218], [1517210580000, 2.865e-05, 2.865e-05, 2.865e-05, 2.865e-05, 45.0], [1517210640000, 2.861e-05, 2.864e-05, 2.861e-05, 2.864e-05, 497.45688135], [1517210700000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 467.66428899], [1517210820000, 2.863e-05, 2.864e-05, 2.863e-05, 2.863e-05, 4243.73194537], [1517210880000, 2.851e-05, 2.851e-05, 2.851e-05, 2.851e-05, 673.50004186], [1517210940000, 2.852e-05, 2.852e-05, 2.851e-05, 2.852e-05, 2920.85705179], [1517211060000, 2.863e-05, 2.863e-05, 2.863e-05, 2.863e-05, 51.74245664], [1517211120000, 2.86e-05, 2.86e-05, 2.851e-05, 2.851e-05, 2828.2343225], [1517211180000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 500.0], [1517211240000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 91.7430807], [1517211300000, 2.852e-05, 2.852e-05, 2.852e-05, 2.852e-05, 45.8549527], [1517211360000, 2.852e-05, 2.863e-05, 2.85e-05, 2.85e-05, 9970.1814757], [1517211420000, 2.863e-05, 2.863e-05, 2.863e-05, 2.863e-05, 581.03325183], [1517211480000, 2.862e-05, 2.864e-05, 2.862e-05, 2.864e-05, 7253.90543157], [1517211540000, 2.864e-05, 2.864e-05, 2.863e-05, 2.863e-05, 4564.77137241], [1517211660000, 2.863e-05, 2.863e-05, 2.863e-05, 2.863e-05, 3362.92466829], [1517211720000, 2.863e-05, 2.863e-05, 2.863e-05, 2.863e-05, 223.42043616], [1517211780000, 2.863e-05, 2.866e-05, 2.863e-05, 2.866e-05, 7668.71480733], [1517211840000, 2.866e-05, 2.867e-05, 2.866e-05, 2.867e-05, 1824.042962], [1517211900000, 2.867e-05, 2.88e-05, 2.867e-05, 2.876e-05, 16529.25552185], [1517211960000, 2.88e-05, 2.88e-05, 2.867e-05, 2.867e-05, 20509.59207371], [1517212020000, 2.864e-05, 2.864e-05, 2.864e-05, 2.864e-05, 4427.55453361], [1517212080000, 2.864e-05, 2.884e-05, 2.864e-05, 2.884e-05, 10571.57175324], [1517212140000, 2.885e-05, 2.885e-05, 2.885e-05, 2.885e-05, 91.0922522], [1517212200000, 2.885e-05, 2.885e-05, 2.885e-05, 2.885e-05, 1474.22673818], [1517212260000, 2.884e-05, 2.884e-05, 2.87e-05, 2.87e-05, 904.51514182], [1517212320000, 2.885e-05, 2.89e-05, 2.885e-05, 2.888e-05, 3281.16884748], [1517212380000, 2.888e-05, 2.888e-05, 2.883e-05, 2.883e-05, 3750.9893555], [1517212440000, 2.875e-05, 2.89e-05, 2.875e-05, 2.89e-05, 30791.20579485], [1517212500000, 2.89e-05, 2.891e-05, 2.89e-05, 2.891e-05, 6576.47707967], [1517212560000, 2.891e-05, 2.891e-05, 2.89e-05, 2.89e-05, 104660.07896834], [1517212620000, 2.89e-05, 2.89e-05, 2.89e-05, 2.89e-05, 49578.7252471], [1517212680000, 2.89e-05, 2.89e-05, 2.89e-05, 2.89e-05, 21649.66207703], [1517212740000, 2.89e-05, 2.893e-05, 2.89e-05, 2.893e-05, 4846.33882625], [1517212800000, 2.893e-05, 2.899e-05, 2.893e-05, 2.899e-05, 1789.4875994], [1517212860000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 1638.27960281], [1517212920000, 2.894e-05, 2.894e-05, 2.89e-05, 2.89e-05, 9280.08302574], [1517213040000, 2.892e-05, 2.892e-05, 2.892e-05, 2.892e-05, 14306.43901054], [1517213100000, 2.894e-05, 2.894e-05, 2.892e-05, 2.892e-05, 2030.60946159], [1517213160000, 2.894e-05, 2.894e-05, 2.863e-05, 2.863e-05, 45612.00521508], [1517213220000, 2.889e-05, 2.89e-05, 2.85e-05, 2.89e-05, 27889.8440488], [1517213280000, 2.895e-05, 2.895e-05, 2.865e-05, 2.887e-05, 309.95808991], [1517213340000, 2.855e-05, 2.887e-05, 2.855e-05, 2.887e-05, 258.35113731], [1517213400000, 2.886e-05, 2.886e-05, 2.86e-05, 2.886e-05, 786.39609614], [1517213460000, 2.884e-05, 2.885e-05, 2.861e-05, 2.861e-05, 4563.05914359], [1517213520000, 2.863e-05, 2.883e-05, 2.861e-05, 2.883e-05, 2548.13864984], [1517213580000, 2.88e-05, 2.88e-05, 2.863e-05, 2.863e-05, 609.01470433], [1517213640000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 897.82887], [1517213700000, 2.88e-05, 2.882e-05, 2.88e-05, 2.882e-05, 10363.75150081], [1517213760000, 2.883e-05, 2.886e-05, 2.883e-05, 2.886e-05, 3192.97390231], [1517213820000, 2.887e-05, 2.9e-05, 2.886e-05, 2.9e-05, 21026.43427307], [1517213880000, 2.9e-05, 2.9e-05, 2.899e-05, 2.9e-05, 2633.45961889], [1517213940000, 2.899e-05, 2.899e-05, 2.886e-05, 2.899e-05, 16708.16954806], [1517214000000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 1283.12534462], [1517214060000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 4328.50326694], [1517214180000, 2.898e-05, 2.9e-05, 2.898e-05, 2.9e-05, 6999.74299138], [1517214240000, 2.9e-05, 2.9e-05, 2.899e-05, 2.899e-05, 11009.47719185], [1517214300000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 217.09715247], [1517214360000, 2.898e-05, 2.899e-05, 2.898e-05, 2.899e-05, 21390.13177514], [1517214420000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 5374.34568127], [1517214480000, 2.899e-05, 2.9e-05, 2.899e-05, 2.9e-05, 243.17913606], [1517214540000, 2.899e-05, 2.9e-05, 2.899e-05, 2.9e-05, 3485.92838623], [1517214600000, 2.893e-05, 2.893e-05, 2.893e-05, 2.893e-05, 600.40386391], [1517214660000, 2.898e-05, 2.898e-05, 2.898e-05, 2.898e-05, 120.46444419], [1517214720000, 2.895e-05, 2.895e-05, 2.893e-05, 2.893e-05, 10601.20484816], [1517214780000, 2.893e-05, 2.893e-05, 2.893e-05, 2.893e-05, 436.53882741], [1517214840000, 2.893e-05, 2.893e-05, 2.893e-05, 2.893e-05, 4125.96395283], [1517214900000, 2.888e-05, 2.89e-05, 2.888e-05, 2.888e-05, 2731.08623571], [1517214960000, 2.888e-05, 2.888e-05, 2.868e-05, 2.888e-05, 11783.56784678], [1517215020000, 2.892e-05, 2.892e-05, 2.892e-05, 2.892e-05, 2562.21506908], [1517215140000, 2.89e-05, 2.891e-05, 2.89e-05, 2.891e-05, 1228.97159569], [1517215200000, 2.888e-05, 2.888e-05, 2.888e-05, 2.888e-05, 124.4541602], [1517215380000, 2.89e-05, 2.891e-05, 2.89e-05, 2.891e-05, 808.0513806], [1517215440000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 2698.00930089], [1517215500000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 302.60590782], [1517215560000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 2609.75373576], [1517215620000, 2.891e-05, 2.892e-05, 2.891e-05, 2.891e-05, 8405.08435909], [1517215680000, 2.891e-05, 2.893e-05, 2.891e-05, 2.893e-05, 10165.64989952], [1517215740000, 2.898e-05, 2.898e-05, 2.898e-05, 2.898e-05, 5712.28367531], [1517215800000, 2.898e-05, 2.9e-05, 2.893e-05, 2.9e-05, 15099.05805789], [1517215860000, 2.9e-05, 2.902e-05, 2.9e-05, 2.902e-05, 6000.86195647], [1517215920000, 2.903e-05, 2.905e-05, 2.903e-05, 2.905e-05, 1145.91668275], [1517215980000, 2.904e-05, 2.907e-05, 2.904e-05, 2.907e-05, 742.74948724], [1517216040000, 2.907e-05, 2.907e-05, 2.907e-05, 2.907e-05, 343.17675075], [1517216100000, 2.906e-05, 2.913e-05, 2.906e-05, 2.913e-05, 12037.29055398], [1517216160000, 2.914e-05, 2.92e-05, 2.914e-05, 2.92e-05, 26156.25007734], [1517216220000, 2.92e-05, 2.922e-05, 2.92e-05, 2.92e-05, 853.89087936], [1517216280000, 2.92e-05, 2.925e-05, 2.92e-05, 2.925e-05, 6966.57587963], [1517216340000, 2.925e-05, 2.934e-05, 2.925e-05, 2.934e-05, 30981.9217883], [1517216400000, 2.935e-05, 2.947e-05, 2.935e-05, 2.947e-05, 30756.28630577], [1517216460000, 2.944e-05, 2.95e-05, 2.895e-05, 2.901e-05, 19541.86644897], [1517216520000, 2.901e-05, 2.933e-05, 2.901e-05, 2.933e-05, 1008.27274832], [1517216580000, 2.93e-05, 2.93e-05, 2.903e-05, 2.905e-05, 3498.26607217], [1517216640000, 2.905e-05, 2.944e-05, 2.905e-05, 2.905e-05, 2953.6842911], [1517216700000, 2.906e-05, 2.906e-05, 2.905e-05, 2.905e-05, 5143.85074337], [1517216760000, 2.905e-05, 2.905e-05, 2.901e-05, 2.905e-05, 10876.06332578], [1517216820000, 2.904e-05, 2.944e-05, 2.904e-05, 2.944e-05, 8083.46603705], [1517216940000, 2.932e-05, 2.932e-05, 2.932e-05, 2.932e-05, 101.64741848], [1517217000000, 2.932e-05, 2.932e-05, 2.931e-05, 2.932e-05, 3711.72093876], [1517217060000, 2.931e-05, 2.932e-05, 2.906e-05, 2.906e-05, 3014.74019875], [1517217120000, 2.931e-05, 2.931e-05, 2.931e-05, 2.931e-05, 9619.87094211], [1517217180000, 2.932e-05, 2.942e-05, 2.931e-05, 2.942e-05, 3896.77621701], [1517217240000, 2.942e-05, 2.942e-05, 2.933e-05, 2.933e-05, 7851.10035702], [1517217300000, 2.941e-05, 2.944e-05, 2.941e-05, 2.944e-05, 20963.82262208], [1517217360000, 2.944e-05, 2.949e-05, 2.942e-05, 2.949e-05, 7542.92976022], [1517217420000, 2.949e-05, 2.949e-05, 2.949e-05, 2.949e-05, 3430.08737903], [1517217480000, 2.943e-05, 2.952e-05, 2.943e-05, 2.951e-05, 5085.48591723], [1517217540000, 2.954e-05, 2.954e-05, 2.951e-05, 2.954e-05, 595.90891588], [1517217600000, 2.954e-05, 2.955e-05, 2.954e-05, 2.955e-05, 10880.00910948], [1517217660000, 2.961e-05, 2.962e-05, 2.951e-05, 2.951e-05, 7977.11662479], [1517217720000, 2.951e-05, 2.951e-05, 2.945e-05, 2.945e-05, 8931.95561245], [1517217780000, 2.945e-05, 2.945e-05, 2.931e-05, 2.931e-05, 5050.13231082], [1517217840000, 2.931e-05, 2.94e-05, 2.931e-05, 2.94e-05, 1833.37756293], [1517217900000, 2.931e-05, 2.944e-05, 2.931e-05, 2.931e-05, 1200.96497932], [1517217960000, 2.931e-05, 2.931e-05, 2.931e-05, 2.931e-05, 34.31715686], [1517218080000, 2.932e-05, 2.932e-05, 2.932e-05, 2.932e-05, 5130.56448575], [1517218140000, 2.932e-05, 2.932e-05, 2.93e-05, 2.93e-05, 11652.72144499], [1517218200000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 2978.89379757], [1517218260000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 25.84860366], [1517218320000, 2.929e-05, 2.929e-05, 2.894e-05, 2.894e-05, 17500.0], [1517218380000, 2.92e-05, 2.92e-05, 2.9e-05, 2.9e-05, 257.1955391], [1517218440000, 2.902e-05, 2.903e-05, 2.896e-05, 2.896e-05, 7237.84031927], [1517218500000, 2.897e-05, 2.902e-05, 2.896e-05, 2.902e-05, 4320.31669071], [1517218560000, 2.902e-05, 2.92e-05, 2.9e-05, 2.919e-05, 879.77977309], [1517218680000, 2.905e-05, 2.919e-05, 2.9e-05, 2.918e-05, 5230.50157838], [1517218740000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 2329.97184899], [1517218800000, 2.919e-05, 2.92e-05, 2.919e-05, 2.92e-05, 359.51984199], [1517218860000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 235.88087832], [1517218920000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 6740.55237675], [1517218980000, 2.894e-05, 2.894e-05, 2.882e-05, 2.885e-05, 8898.47485022], [1517219100000, 2.888e-05, 2.889e-05, 2.888e-05, 2.888e-05, 2822.96201321], [1517219160000, 2.888e-05, 2.89e-05, 2.888e-05, 2.89e-05, 2831.43905995], [1517219220000, 2.89e-05, 2.915e-05, 2.89e-05, 2.915e-05, 223.58363755], [1517219340000, 2.892e-05, 2.916e-05, 2.892e-05, 2.892e-05, 8966.53511959], [1517219580000, 2.892e-05, 2.892e-05, 2.891e-05, 2.891e-05, 10852.15050052], [1517219640000, 2.892e-05, 2.892e-05, 2.891e-05, 2.891e-05, 4276.58681582], [1517219700000, 2.89e-05, 2.89e-05, 2.879e-05, 2.879e-05, 7027.31105661], [1517219760000, 2.908e-05, 2.909e-05, 2.906e-05, 2.909e-05, 22503.2241892], [1517219820000, 2.909e-05, 2.914e-05, 2.909e-05, 2.909e-05, 2219.45814974], [1517219940000, 2.881e-05, 2.908e-05, 2.88e-05, 2.908e-05, 6464.14214643], [1517220000000, 2.908e-05, 2.908e-05, 2.881e-05, 2.881e-05, 547.10477073], [1517220060000, 2.883e-05, 2.883e-05, 2.882e-05, 2.882e-05, 3102.36003775], [1517220180000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 322.03702336], [1517220240000, 2.905e-05, 2.907e-05, 2.885e-05, 2.885e-05, 1770.85681045], [1517220300000, 2.885e-05, 2.885e-05, 2.884e-05, 2.884e-05, 7013.5998172], [1517220480000, 2.885e-05, 2.885e-05, 2.884e-05, 2.884e-05, 1662.83527359], [1517220540000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 393.7654291], [1517220600000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 5303.73502405], [1517220660000, 2.899e-05, 2.899e-05, 2.884e-05, 2.884e-05, 363.32448458], [1517220720000, 2.899e-05, 2.901e-05, 2.899e-05, 2.901e-05, 6881.14878178], [1517220780000, 2.901e-05, 2.901e-05, 2.9e-05, 2.9e-05, 5759.91923279], [1517220840000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 25.04209023], [1517220900000, 2.899e-05, 2.899e-05, 2.899e-05, 2.899e-05, 163.10239721], [1517220960000, 2.899e-05, 2.901e-05, 2.899e-05, 2.901e-05, 40658.15150158], [1517221020000, 2.903e-05, 2.903e-05, 2.888e-05, 2.888e-05, 2670.59447096], [1517221080000, 2.888e-05, 2.888e-05, 2.884e-05, 2.888e-05, 18428.27226466], [1517221140000, 2.886e-05, 2.888e-05, 2.886e-05, 2.888e-05, 3113.93768214], [1517221200000, 2.888e-05, 2.888e-05, 2.887e-05, 2.887e-05, 1690.44630017], [1517221260000, 2.888e-05, 2.888e-05, 2.888e-05, 2.888e-05, 100.15408587], [1517221320000, 2.888e-05, 2.888e-05, 2.887e-05, 2.888e-05, 20643.26097679], [1517221380000, 2.887e-05, 2.888e-05, 2.887e-05, 2.888e-05, 8353.54843208], [1517221440000, 2.887e-05, 2.887e-05, 2.887e-05, 2.887e-05, 513.1315094], [1517221560000, 2.888e-05, 2.888e-05, 2.87e-05, 2.87e-05, 34842.27721607], [1517221620000, 2.87e-05, 2.884e-05, 2.87e-05, 2.87e-05, 2000.48307491], [1517221680000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 153.0029745], [1517221740000, 2.871e-05, 2.874e-05, 2.871e-05, 2.874e-05, 380.51916971], [1517221800000, 2.874e-05, 2.903e-05, 2.874e-05, 2.887e-05, 3657.72680248], [1517221860000, 2.887e-05, 2.887e-05, 2.87e-05, 2.87e-05, 33896.35028595], [1517222040000, 2.875e-05, 2.875e-05, 2.875e-05, 2.875e-05, 751.34964277], [1517222100000, 2.875e-05, 2.875e-05, 2.87e-05, 2.87e-05, 13259.55896052], [1517222160000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 1077.00076198], [1517222220000, 2.871e-05, 2.871e-05, 2.871e-05, 2.871e-05, 29.0], [1517222280000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 504.73020222], [1517222340000, 2.872e-05, 2.872e-05, 2.872e-05, 2.872e-05, 315.62518953], [1517222400000, 2.88e-05, 2.901e-05, 2.88e-05, 2.901e-05, 7660.15499441], [1517222460000, 2.873e-05, 2.873e-05, 2.873e-05, 2.873e-05, 29.71255389], [1517222580000, 2.874e-05, 2.906e-05, 2.873e-05, 2.906e-05, 3337.42596125], [1517222700000, 2.9e-05, 2.9e-05, 2.898e-05, 2.9e-05, 1851.09295031], [1517222760000, 2.898e-05, 2.898e-05, 2.898e-05, 2.898e-05, 4924.04322871], [1517222820000, 2.898e-05, 2.899e-05, 2.898e-05, 2.899e-05, 23628.42320961], [1517222880000, 2.898e-05, 2.898e-05, 2.898e-05, 2.898e-05, 30.0], [1517222940000, 2.898e-05, 2.898e-05, 2.898e-05, 2.898e-05, 8104.94490488], [1517223000000, 2.898e-05, 2.898e-05, 2.898e-05, 2.898e-05, 24.71843479], [1517223060000, 2.899e-05, 2.9e-05, 2.898e-05, 2.898e-05, 986.71426347], [1517223120000, 2.899e-05, 2.899e-05, 2.898e-05, 2.898e-05, 5400.0], [1517223180000, 2.9e-05, 2.907e-05, 2.9e-05, 2.907e-05, 1801.05987691], [1517223240000, 2.907e-05, 2.907e-05, 2.907e-05, 2.907e-05, 2194.36359222], [1517223360000, 2.9e-05, 2.91e-05, 2.9e-05, 2.91e-05, 3961.42462711], [1517223480000, 2.902e-05, 2.902e-05, 2.902e-05, 2.902e-05, 1655.56128676], [1517223540000, 2.902e-05, 2.902e-05, 2.902e-05, 2.902e-05, 1503.328267], [1517223600000, 2.902e-05, 2.902e-05, 2.902e-05, 2.902e-05, 160.46882531], [1517223660000, 2.902e-05, 2.902e-05, 2.902e-05, 2.902e-05, 1304.60773891], [1517223720000, 2.903e-05, 2.903e-05, 2.903e-05, 2.903e-05, 324.12887168], [1517223840000, 2.908e-05, 2.908e-05, 2.906e-05, 2.906e-05, 5510.34520706], [1517223900000, 2.906e-05, 2.906e-05, 2.906e-05, 2.906e-05, 3000.0], [1517223960000, 2.905e-05, 2.906e-05, 2.905e-05, 2.906e-05, 1157.57676374], [1517224020000, 2.906e-05, 2.912e-05, 2.906e-05, 2.912e-05, 5023.90297382], [1517224080000, 2.912e-05, 2.913e-05, 2.907e-05, 2.907e-05, 10385.16261477], [1517224140000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 1027.60924513], [1517224200000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 782.16160575], [1517224260000, 2.912e-05, 2.915e-05, 2.912e-05, 2.912e-05, 3363.20640394], [1517224320000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 4684.4158431], [1517224380000, 2.907e-05, 2.907e-05, 2.9e-05, 2.9e-05, 429.30335444], [1517224440000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 3439.65517241], [1517224500000, 2.899e-05, 2.9e-05, 2.899e-05, 2.9e-05, 5500.0], [1517224560000, 2.89e-05, 2.89e-05, 2.89e-05, 2.89e-05, 47.5732085], [1517224620000, 2.89e-05, 2.89e-05, 2.89e-05, 2.89e-05, 68.46886675], [1517224680000, 2.889e-05, 2.889e-05, 2.887e-05, 2.887e-05, 1210.66335683], [1517224740000, 2.885e-05, 2.885e-05, 2.88e-05, 2.88e-05, 1746.51567944], [1517224800000, 2.885e-05, 2.885e-05, 2.884e-05, 2.884e-05, 2198.03108305], [1517224860000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 1102.34292104], [1517224920000, 2.884e-05, 2.884e-05, 2.884e-05, 2.884e-05, 10235.34237951], [1517224980000, 2.884e-05, 2.884e-05, 2.88e-05, 2.88e-05, 13496.36666981], [1517225040000, 2.88e-05, 2.884e-05, 2.88e-05, 2.884e-05, 7647.7166165], [1517225100000, 2.883e-05, 2.883e-05, 2.883e-05, 2.883e-05, 148.10132881], [1517225160000, 2.883e-05, 2.883e-05, 2.883e-05, 2.883e-05, 966.23298664], [1517225220000, 2.883e-05, 2.883e-05, 2.883e-05, 2.883e-05, 28.80181083], [1517225280000, 2.884e-05, 2.886e-05, 2.884e-05, 2.886e-05, 95.73868469], [1517225340000, 2.888e-05, 2.888e-05, 2.886e-05, 2.886e-05, 700.0], [1517225400000, 2.899e-05, 2.899e-05, 2.898e-05, 2.899e-05, 1993.86384954], [1517225460000, 2.899e-05, 2.899e-05, 2.891e-05, 2.899e-05, 443.65493541], [1517225520000, 2.899e-05, 2.9e-05, 2.899e-05, 2.9e-05, 9401.85771501], [1517225580000, 2.9e-05, 2.921e-05, 2.9e-05, 2.9e-05, 12083.40364076], [1517225640000, 2.901e-05, 2.928e-05, 2.901e-05, 2.917e-05, 3591.18640688], [1517225760000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 846.85372615], [1517225820000, 2.901e-05, 2.901e-05, 2.901e-05, 2.901e-05, 615.27673973], [1517225880000, 2.901e-05, 2.901e-05, 2.9e-05, 2.9e-05, 4547.18660808], [1517225940000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 1527.87075312], [1517226000000, 2.9e-05, 2.93e-05, 2.9e-05, 2.93e-05, 31973.01841175], [1517226060000, 2.9e-05, 2.929e-05, 2.9e-05, 2.929e-05, 166.47154181], [1517226120000, 2.927e-05, 2.928e-05, 2.9e-05, 2.9e-05, 5571.37860822], [1517226180000, 2.902e-05, 2.902e-05, 2.9e-05, 2.902e-05, 5739.35109115], [1517226360000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 2000.0], [1517226420000, 2.908e-05, 2.908e-05, 2.902e-05, 2.902e-05, 5830.40805093], [1517226480000, 2.901e-05, 2.902e-05, 2.901e-05, 2.902e-05, 4679.49551793], [1517226540000, 2.902e-05, 2.902e-05, 2.901e-05, 2.902e-05, 1864.50470501], [1517226600000, 2.901e-05, 2.901e-05, 2.892e-05, 2.892e-05, 12984.79568056], [1517226660000, 2.892e-05, 2.892e-05, 2.892e-05, 2.892e-05, 2966.04624331], [1517226720000, 2.892e-05, 2.892e-05, 2.892e-05, 2.892e-05, 3113.49375442], [1517226780000, 2.891e-05, 2.891e-05, 2.889e-05, 2.889e-05, 11945.86120021], [1517226840000, 2.889e-05, 2.889e-05, 2.887e-05, 2.887e-05, 5173.55414522], [1517226900000, 2.889e-05, 2.889e-05, 2.887e-05, 2.887e-05, 776.5793129], [1517226960000, 2.887e-05, 2.892e-05, 2.887e-05, 2.892e-05, 603.18210162], [1517227080000, 2.892e-05, 2.892e-05, 2.892e-05, 2.892e-05, 79.30993746], [1517227140000, 2.891e-05, 2.892e-05, 2.891e-05, 2.892e-05, 184.91565001], [1517227200000, 2.892e-05, 2.892e-05, 2.892e-05, 2.892e-05, 5611.18032158], [1517227260000, 2.887e-05, 2.892e-05, 2.887e-05, 2.892e-05, 118.58461926], [1517227320000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 23.49379361], [1517227380000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 27.50620639], [1517227440000, 2.89e-05, 2.891e-05, 2.89e-05, 2.891e-05, 4598.21356328], [1517227500000, 2.891e-05, 2.891e-05, 2.891e-05, 2.891e-05, 506.92821733], [1517227560000, 2.887e-05, 2.891e-05, 2.887e-05, 2.887e-05, 2856.80175171], [1517227620000, 2.887e-05, 2.887e-05, 2.887e-05, 2.887e-05, 1790.02054371], [1517227680000, 2.886e-05, 2.886e-05, 2.886e-05, 2.886e-05, 5437.94069283], [1517227740000, 2.881e-05, 2.886e-05, 2.881e-05, 2.886e-05, 3869.92363763], [1517227860000, 2.883e-05, 2.883e-05, 2.883e-05, 2.883e-05, 3146.57632783], [1517227920000, 2.88e-05, 2.88e-05, 2.879e-05, 2.879e-05, 500.0], [1517227980000, 2.883e-05, 2.883e-05, 2.883e-05, 2.883e-05, 7480.79965106], [1517228040000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 1879.87233063], [1517228100000, 2.88e-05, 2.88e-05, 2.88e-05, 2.88e-05, 1759.60120537], [1517228160000, 2.882e-05, 2.883e-05, 2.882e-05, 2.883e-05, 34.35566664], [1517228280000, 2.882e-05, 2.885e-05, 2.882e-05, 2.885e-05, 1255.09868848], [1517228340000, 2.887e-05, 2.887e-05, 2.887e-05, 2.887e-05, 2657.66364658], [1517228460000, 2.887e-05, 2.887e-05, 2.887e-05, 2.887e-05, 4853.80812342], [1517228580000, 2.885e-05, 2.885e-05, 2.881e-05, 2.881e-05, 1261.49234972], [1517228640000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 492.67412794], [1517228760000, 2.881e-05, 2.881e-05, 2.881e-05, 2.881e-05, 280.6907851], [1517228820000, 2.882e-05, 2.882e-05, 2.882e-05, 2.882e-05, 442.71709329], [1517228880000, 2.885e-05, 2.886e-05, 2.885e-05, 2.886e-05, 1022.2268653], [1517228940000, 2.886e-05, 2.89e-05, 2.886e-05, 2.89e-05, 307.30663307], [1517229000000, 2.892e-05, 2.9e-05, 2.892e-05, 2.892e-05, 3573.931034], [1517229060000, 2.893e-05, 2.9e-05, 2.893e-05, 2.9e-05, 2322.09736838], [1517229120000, 2.902e-05, 2.902e-05, 2.901e-05, 2.901e-05, 5180.00140756], [1517229180000, 2.902e-05, 2.909e-05, 2.902e-05, 2.909e-05, 2576.87145681], [1517229240000, 2.917e-05, 2.918e-05, 2.917e-05, 2.917e-05, 28432.98063002], [1517229300000, 2.918e-05, 2.929e-05, 2.918e-05, 2.929e-05, 14566.58014086], [1517229360000, 2.929e-05, 2.93e-05, 2.918e-05, 2.918e-05, 43068.26235101], [1517229420000, 2.931e-05, 2.933e-05, 2.931e-05, 2.931e-05, 11212.27050804], [1517229480000, 2.933e-05, 2.937e-05, 2.933e-05, 2.937e-05, 24080.99871855], [1517229540000, 2.934e-05, 2.941e-05, 2.934e-05, 2.941e-05, 40025.35272408], [1517229600000, 2.941e-05, 2.947e-05, 2.941e-05, 2.947e-05, 23452.3493802], [1517229660000, 2.947e-05, 2.948e-05, 2.947e-05, 2.948e-05, 8362.4477125], [1517229720000, 2.95e-05, 2.95e-05, 2.917e-05, 2.947e-05, 21124.06581679], [1517229780000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 39.84413588], [1517229840000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 24.59552657], [1517229900000, 2.919e-05, 2.919e-05, 2.918e-05, 2.918e-05, 1515.99587203], [1517229960000, 2.918e-05, 2.948e-05, 2.918e-05, 2.948e-05, 15208.45748585], [1517230020000, 2.943e-05, 2.944e-05, 2.917e-05, 2.943e-05, 1768.09989593], [1517230080000, 2.917e-05, 2.942e-05, 2.917e-05, 2.942e-05, 1687.46708033], [1517230140000, 2.941e-05, 2.941e-05, 2.92e-05, 2.92e-05, 1574.30874867], [1517230200000, 2.924e-05, 2.94e-05, 2.919e-05, 2.94e-05, 5517.21588009], [1517230260000, 2.938e-05, 2.939e-05, 2.938e-05, 2.939e-05, 2272.00358664], [1517230320000, 2.938e-05, 2.939e-05, 2.938e-05, 2.939e-05, 2417.67136606], [1517230380000, 2.939e-05, 2.939e-05, 2.939e-05, 2.939e-05, 18.0], [1517230440000, 2.939e-05, 2.939e-05, 2.938e-05, 2.939e-05, 258.43736022], [1517230500000, 2.939e-05, 2.939e-05, 2.928e-05, 2.928e-05, 2652.98136786], [1517230560000, 2.92e-05, 2.938e-05, 2.92e-05, 2.922e-05, 464.4006666], [1517230620000, 2.924e-05, 2.939e-05, 2.924e-05, 2.937e-05, 1895.3669793], [1517230680000, 2.939e-05, 2.939e-05, 2.936e-05, 2.936e-05, 908.15336144], [1517230740000, 2.937e-05, 2.938e-05, 2.936e-05, 2.936e-05, 251.14450534], [1517230800000, 2.936e-05, 2.936e-05, 2.925e-05, 2.925e-05, 4945.45343261], [1517230860000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 66.01293846], [1517230920000, 2.922e-05, 2.925e-05, 2.92e-05, 2.925e-05, 3053.61422478], [1517230980000, 2.924e-05, 2.935e-05, 2.919e-05, 2.935e-05, 13907.19471294], [1517231100000, 2.92e-05, 2.921e-05, 2.92e-05, 2.921e-05, 943.96099619], [1517231160000, 2.922e-05, 2.922e-05, 2.92e-05, 2.92e-05, 5269.26512724], [1517231220000, 2.921e-05, 2.922e-05, 2.921e-05, 2.921e-05, 1904.34297116], [1517231280000, 2.921e-05, 2.921e-05, 2.92e-05, 2.921e-05, 5528.07911734], [1517231340000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 990.67975001], [1517231460000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 300.90100299], [1517231580000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 9568.46340431], [1517231640000, 2.928e-05, 2.928e-05, 2.922e-05, 2.922e-05, 172.9644468], [1517231700000, 2.927e-05, 2.935e-05, 2.927e-05, 2.935e-05, 33986.3713799], [1517231760000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 878.94360289], [1517231820000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 848.67571683], [1517232000000, 2.923e-05, 2.923e-05, 2.922e-05, 2.922e-05, 10540.85973412], [1517232060000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 5631.78291721], [1517232120000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 22.17719471], [1517232180000, 2.92e-05, 2.922e-05, 2.9e-05, 2.9e-05, 70097.27548564], [1517232300000, 2.902e-05, 2.922e-05, 2.902e-05, 2.904e-05, 2606.12130304], [1517232420000, 2.906e-05, 2.906e-05, 2.906e-05, 2.906e-05, 97.62688941], [1517232540000, 2.906e-05, 2.906e-05, 2.906e-05, 2.906e-05, 13253.04314561], [1517232600000, 2.906e-05, 2.92e-05, 2.906e-05, 2.906e-05, 4189.27648931], [1517232780000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 37.684138], [1517232840000, 2.917e-05, 2.918e-05, 2.917e-05, 2.918e-05, 522.05024767], [1517232900000, 2.919e-05, 2.919e-05, 2.917e-05, 2.917e-05, 11841.17479044], [1517233020000, 2.908e-05, 2.908e-05, 2.906e-05, 2.906e-05, 11958.1712717], [1517233080000, 2.906e-05, 2.908e-05, 2.906e-05, 2.908e-05, 660.41722839], [1517233140000, 2.906e-05, 2.906e-05, 2.906e-05, 2.906e-05, 1696.54391781], [1517233200000, 2.906e-05, 2.916e-05, 2.906e-05, 2.916e-05, 5758.88665238], [1517233260000, 2.915e-05, 2.916e-05, 2.915e-05, 2.916e-05, 10758.01985699], [1517233320000, 2.916e-05, 2.916e-05, 2.916e-05, 2.916e-05, 3211.84966212], [1517233380000, 2.906e-05, 2.908e-05, 2.906e-05, 2.906e-05, 10405.11360649], [1517233440000, 2.897e-05, 2.906e-05, 2.896e-05, 2.906e-05, 701.90225792], [1517233500000, 2.9e-05, 2.9e-05, 2.896e-05, 2.896e-05, 8652.98917142], [1517233560000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 219.669178], [1517233620000, 2.897e-05, 2.897e-05, 2.897e-05, 2.897e-05, 20.0], [1517233680000, 2.897e-05, 2.899e-05, 2.896e-05, 2.896e-05, 2486.29815423], [1517233740000, 2.896e-05, 2.896e-05, 2.896e-05, 2.896e-05, 100.0], [1517233800000, 2.899e-05, 2.9e-05, 2.899e-05, 2.9e-05, 21.54720271], [1517233860000, 2.906e-05, 2.922e-05, 2.906e-05, 2.92e-05, 275.75979869], [1517233920000, 2.918e-05, 2.919e-05, 2.918e-05, 2.919e-05, 4885.46519953], [1517233980000, 2.919e-05, 2.919e-05, 2.919e-05, 2.919e-05, 1781.62644092], [1517234040000, 2.91e-05, 2.91e-05, 2.91e-05, 2.91e-05, 31.3568067], [1517234100000, 2.911e-05, 2.911e-05, 2.911e-05, 2.911e-05, 1000.0], [1517234160000, 2.912e-05, 2.912e-05, 2.912e-05, 2.912e-05, 105.0], [1517234220000, 2.913e-05, 2.913e-05, 2.912e-05, 2.912e-05, 13619.19198964], [1517234280000, 2.912e-05, 2.918e-05, 2.912e-05, 2.918e-05, 13269.60151337], [1517234340000, 2.919e-05, 2.92e-05, 2.919e-05, 2.92e-05, 3649.66898711], [1517234400000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 6043.19326649], [1517234460000, 2.918e-05, 2.922e-05, 2.912e-05, 2.912e-05, 7008.97599931], [1517234520000, 2.912e-05, 2.912e-05, 2.912e-05, 2.912e-05, 217.03178648], [1517234580000, 2.912e-05, 2.912e-05, 2.912e-05, 2.912e-05, 6000.37167451], [1517234640000, 2.913e-05, 2.913e-05, 2.913e-05, 2.913e-05, 716.97652538], [1517234700000, 2.912e-05, 2.912e-05, 2.911e-05, 2.911e-05, 5909.06593174], [1517234760000, 2.911e-05, 2.919e-05, 2.909e-05, 2.919e-05, 27914.45804301], [1517234820000, 2.919e-05, 2.919e-05, 2.909e-05, 2.909e-05, 172.67693057], [1517234880000, 2.905e-05, 2.906e-05, 2.905e-05, 2.906e-05, 2269.33443717], [1517234940000, 2.906e-05, 2.906e-05, 2.9e-05, 2.9e-05, 1560.64624956], [1517235000000, 2.896e-05, 2.896e-05, 2.88e-05, 2.88e-05, 10930.09916644], [1517235060000, 2.884e-05, 2.895e-05, 2.884e-05, 2.884e-05, 370.04674273], [1517235120000, 2.884e-05, 2.906e-05, 2.884e-05, 2.906e-05, 23731.49902207], [1517235180000, 2.906e-05, 2.906e-05, 2.9e-05, 2.9e-05, 247.25036048], [1517235240000, 2.901e-05, 2.901e-05, 2.901e-05, 2.901e-05, 1810.06648999], [1517235300000, 2.887e-05, 2.901e-05, 2.887e-05, 2.901e-05, 1925.83346981], [1517235360000, 2.905e-05, 2.906e-05, 2.902e-05, 2.902e-05, 8772.11321932], [1517235420000, 2.906e-05, 2.906e-05, 2.884e-05, 2.884e-05, 5558.18532086], [1517235480000, 2.906e-05, 2.906e-05, 2.906e-05, 2.906e-05, 1454.1835461], [1517235600000, 2.89e-05, 2.901e-05, 2.884e-05, 2.901e-05, 5018.53388165], [1517235720000, 2.901e-05, 2.901e-05, 2.901e-05, 2.901e-05, 2750.79278707], [1517235780000, 2.885e-05, 2.885e-05, 2.885e-05, 2.885e-05, 1794.85568845], [1517235840000, 2.885e-05, 2.901e-05, 2.885e-05, 2.901e-05, 2280.2440961], [1517235960000, 2.901e-05, 2.901e-05, 2.901e-05, 2.901e-05, 15968.07414553], [1517236020000, 2.905e-05, 2.905e-05, 2.905e-05, 2.905e-05, 4057.0], [1517236140000, 2.906e-05, 2.906e-05, 2.905e-05, 2.905e-05, 4747.25073872], [1517236200000, 2.902e-05, 2.905e-05, 2.902e-05, 2.904e-05, 1970.41530504], [1517236260000, 2.904e-05, 2.917e-05, 2.904e-05, 2.917e-05, 21195.10338265], [1517236320000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 114.03658119], [1517236380000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 184.37883013], [1517236440000, 2.917e-05, 2.917e-05, 2.908e-05, 2.908e-05, 1714.29946065], [1517236500000, 2.916e-05, 2.918e-05, 2.916e-05, 2.918e-05, 7480.33993152], [1517236560000, 2.918e-05, 2.94e-05, 2.904e-05, 2.94e-05, 82267.48155486], [1517236620000, 2.932e-05, 2.94e-05, 2.932e-05, 2.94e-05, 21972.24285601], [1517236680000, 2.939e-05, 2.939e-05, 2.938e-05, 2.939e-05, 1386.4188872], [1517236740000, 2.939e-05, 2.94e-05, 2.92e-05, 2.939e-05, 35501.39724623], [1517236800000, 2.939e-05, 2.94e-05, 2.939e-05, 2.939e-05, 18622.9888539], [1517236860000, 2.939e-05, 2.939e-05, 2.938e-05, 2.938e-05, 1757.94601828], [1517236920000, 2.936e-05, 2.937e-05, 2.936e-05, 2.937e-05, 3412.8578992], [1517236980000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 2266.09063048], [1517237040000, 2.937e-05, 2.937e-05, 2.935e-05, 2.935e-05, 3021.46965186], [1517237100000, 2.935e-05, 2.935e-05, 2.927e-05, 2.927e-05, 721.10107921], [1517237160000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 530.62400791], [1517237220000, 2.934e-05, 2.934e-05, 2.923e-05, 2.923e-05, 12451.12212359], [1517237280000, 2.932e-05, 2.933e-05, 2.932e-05, 2.933e-05, 2295.7466703], [1517237340000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 768.07459336], [1517237400000, 2.923e-05, 2.932e-05, 2.923e-05, 2.923e-05, 10169.07484542], [1517237460000, 2.923e-05, 2.93e-05, 2.923e-05, 2.93e-05, 2944.69900072], [1517237520000, 2.926e-05, 2.926e-05, 2.924e-05, 2.924e-05, 2639.42426291], [1517237580000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 3836.49450144], [1517237700000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 2191.79032361], [1517237760000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 1520.84033532], [1517237820000, 2.924e-05, 2.928e-05, 2.89e-05, 2.928e-05, 126803.17086703], [1517237880000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 2528.26855961], [1517237940000, 2.928e-05, 2.928e-05, 2.91e-05, 2.91e-05, 3705.30723471], [1517238180000, 2.927e-05, 2.929e-05, 2.927e-05, 2.929e-05, 203.01695507], [1517238300000, 2.929e-05, 2.929e-05, 2.927e-05, 2.927e-05, 527.81000447], [1517238360000, 2.926e-05, 2.927e-05, 2.91e-05, 2.927e-05, 3510.65722481], [1517238420000, 2.928e-05, 2.928e-05, 2.927e-05, 2.927e-05, 3515.34185809], [1517238600000, 2.925e-05, 2.927e-05, 2.925e-05, 2.927e-05, 3474.67784246], [1517238660000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 43.82150068], [1517238720000, 2.925e-05, 2.934e-05, 2.925e-05, 2.934e-05, 54489.16186375], [1517238780000, 2.934e-05, 2.934e-05, 2.932e-05, 2.932e-05, 2027.65484707], [1517238840000, 2.932e-05, 2.932e-05, 2.932e-05, 2.932e-05, 1300.0], [1517238900000, 2.933e-05, 2.933e-05, 2.932e-05, 2.932e-05, 7909.05444281], [1517238960000, 2.933e-05, 2.933e-05, 2.93e-05, 2.93e-05, 117.75584196], [1517239020000, 2.93e-05, 2.933e-05, 2.93e-05, 2.932e-05, 50787.11096533], [1517239080000, 2.932e-05, 2.932e-05, 2.932e-05, 2.932e-05, 1502.2474152], [1517239140000, 2.931e-05, 2.931e-05, 2.931e-05, 2.931e-05, 798.25966991], [1517239200000, 2.925e-05, 2.925e-05, 2.916e-05, 2.916e-05, 3559.95318797], [1517239260000, 2.916e-05, 2.916e-05, 2.916e-05, 2.916e-05, 59.38940309], [1517239320000, 2.916e-05, 2.916e-05, 2.915e-05, 2.916e-05, 4752.7075081], [1517239380000, 2.902e-05, 2.916e-05, 2.885e-05, 2.916e-05, 44710.37269771], [1517239440000, 2.895e-05, 2.895e-05, 2.894e-05, 2.894e-05, 524.44794953], [1517239500000, 2.895e-05, 2.903e-05, 2.895e-05, 2.895e-05, 1634.36149174], [1517239560000, 2.914e-05, 2.914e-05, 2.914e-05, 2.914e-05, 19.28178047], [1517239620000, 2.914e-05, 2.914e-05, 2.914e-05, 2.914e-05, 5000.71821953], [1517239680000, 2.897e-05, 2.914e-05, 2.897e-05, 2.914e-05, 610.6807679], [1517239740000, 2.913e-05, 2.916e-05, 2.913e-05, 2.916e-05, 7137.82129474], [1517239800000, 2.916e-05, 2.916e-05, 2.916e-05, 2.916e-05, 1086.79084616], [1517239860000, 2.916e-05, 2.916e-05, 2.916e-05, 2.916e-05, 224.15566023], [1517239920000, 2.916e-05, 2.916e-05, 2.916e-05, 2.916e-05, 150.47507885], [1517240040000, 2.91e-05, 2.916e-05, 2.91e-05, 2.916e-05, 419.71849005], [1517240100000, 2.916e-05, 2.916e-05, 2.916e-05, 2.916e-05, 655.03302744], [1517240220000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 345.68965517], [1517240280000, 2.915e-05, 2.915e-05, 2.915e-05, 2.915e-05, 69.59401801], [1517240400000, 2.908e-05, 2.913e-05, 2.901e-05, 2.913e-05, 2443.08724264], [1517240460000, 2.914e-05, 2.917e-05, 2.914e-05, 2.917e-05, 3534.22255552], [1517240520000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 128.41891166], [1517240580000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 625.32181486], [1517240640000, 2.917e-05, 2.923e-05, 2.917e-05, 2.923e-05, 2206.74565389], [1517240700000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 220.94199342], [1517240760000, 2.923e-05, 2.923e-05, 2.916e-05, 2.916e-05, 2030.21745379], [1517240880000, 2.916e-05, 2.916e-05, 2.9e-05, 2.9e-05, 2636.92881375], [1517240940000, 2.905e-05, 2.916e-05, 2.899e-05, 2.916e-05, 16768.68325998], [1517241000000, 2.921e-05, 2.922e-05, 2.921e-05, 2.922e-05, 240.98467379], [1517241060000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 2213.87820219], [1517241120000, 2.923e-05, 2.923e-05, 2.922e-05, 2.922e-05, 1615.95511272], [1517241240000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 102.7597615], [1517241300000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 3407.55401371], [1517241360000, 2.923e-05, 2.933e-05, 2.923e-05, 2.933e-05, 13703.02893685], [1517241420000, 2.932e-05, 2.936e-05, 2.932e-05, 2.936e-05, 2145.2580072], [1517241480000, 2.935e-05, 2.938e-05, 2.935e-05, 2.936e-05, 8829.79978699], [1517241540000, 2.937e-05, 2.938e-05, 2.937e-05, 2.938e-05, 10428.10306866], [1517241600000, 2.939e-05, 2.941e-05, 2.939e-05, 2.939e-05, 8249.52374347], [1517241660000, 2.94e-05, 2.941e-05, 2.94e-05, 2.94e-05, 1178.48720477], [1517241720000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 5430.09681458], [1517241780000, 2.94e-05, 2.94e-05, 2.937e-05, 2.937e-05, 6525.80702353], [1517241840000, 2.932e-05, 2.932e-05, 2.923e-05, 2.923e-05, 1667.92850351], [1517241900000, 2.923e-05, 2.941e-05, 2.922e-05, 2.941e-05, 8110.95725101], [1517241960000, 2.929e-05, 2.931e-05, 2.929e-05, 2.931e-05, 2282.08902816], [1517242020000, 2.94e-05, 2.941e-05, 2.94e-05, 2.94e-05, 1224.09967811], [1517242080000, 2.94e-05, 2.941e-05, 2.94e-05, 2.941e-05, 19128.01452311], [1517242140000, 2.944e-05, 2.946e-05, 2.941e-05, 2.941e-05, 4803.09577486], [1517242200000, 2.941e-05, 2.941e-05, 2.917e-05, 2.94e-05, 3626.17136819], [1517242260000, 2.94e-05, 2.942e-05, 2.94e-05, 2.94e-05, 667.43019329], [1517242380000, 2.939e-05, 2.94e-05, 2.939e-05, 2.94e-05, 152.17602252], [1517242440000, 2.94e-05, 2.94e-05, 2.939e-05, 2.94e-05, 9365.85709917], [1517242500000, 2.943e-05, 2.943e-05, 2.94e-05, 2.94e-05, 322.52002721], [1517242560000, 2.94e-05, 2.944e-05, 2.94e-05, 2.944e-05, 9850.86866167], [1517242620000, 2.943e-05, 2.944e-05, 2.943e-05, 2.944e-05, 4561.76552686], [1517242680000, 2.944e-05, 2.945e-05, 2.944e-05, 2.944e-05, 10114.57704562], [1517242740000, 2.944e-05, 2.946e-05, 2.943e-05, 2.946e-05, 14325.14336794], [1517242800000, 2.946e-05, 2.947e-05, 2.942e-05, 2.947e-05, 2894.15814062], [1517242860000, 2.942e-05, 2.946e-05, 2.92e-05, 2.946e-05, 3957.20029867], [1517242920000, 2.945e-05, 2.945e-05, 2.945e-05, 2.945e-05, 332.00354529], [1517243040000, 2.923e-05, 2.93e-05, 2.923e-05, 2.93e-05, 503.21102399], [1517243160000, 2.944e-05, 2.944e-05, 2.93e-05, 2.93e-05, 110.55714042], [1517243220000, 2.941e-05, 2.941e-05, 2.93e-05, 2.93e-05, 3258.78078811], [1517243340000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 100.0], [1517243400000, 2.941e-05, 2.941e-05, 2.941e-05, 2.941e-05, 766.61], [1517243460000, 2.941e-05, 2.941e-05, 2.941e-05, 2.941e-05, 8479.25875553], [1517243520000, 2.941e-05, 2.941e-05, 2.941e-05, 2.941e-05, 1201.03142348], [1517243580000, 2.941e-05, 2.941e-05, 2.941e-05, 2.941e-05, 1760.0], [1517243640000, 2.93e-05, 2.93e-05, 2.925e-05, 2.926e-05, 8606.84585507], [1517243700000, 2.94e-05, 2.941e-05, 2.94e-05, 2.941e-05, 252.452], [1517243760000, 2.93e-05, 2.941e-05, 2.93e-05, 2.941e-05, 1417.92379336], [1517243820000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 711.5485679], [1517243880000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 14908.32650806], [1517243940000, 2.94e-05, 2.941e-05, 2.94e-05, 2.941e-05, 764.31084329], [1517244000000, 2.945e-05, 2.946e-05, 2.941e-05, 2.941e-05, 8787.16939011], [1517244060000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 52.96262893], [1517244120000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 171.92347466], [1517244180000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 566.62520408], [1517244240000, 2.941e-05, 2.941e-05, 2.941e-05, 2.941e-05, 1766.81749228], [1517244300000, 2.944e-05, 2.944e-05, 2.944e-05, 2.944e-05, 3694.23458842], [1517244360000, 2.944e-05, 2.944e-05, 2.943e-05, 2.943e-05, 38597.70823855], [1517244480000, 2.944e-05, 2.949e-05, 2.943e-05, 2.943e-05, 7185.32594448], [1517244540000, 2.944e-05, 2.944e-05, 2.944e-05, 2.944e-05, 350.38177425], [1517244600000, 2.949e-05, 2.949e-05, 2.945e-05, 2.945e-05, 1038.25136204], [1517244660000, 2.944e-05, 2.945e-05, 2.944e-05, 2.945e-05, 603.92309526], [1517244720000, 2.945e-05, 2.945e-05, 2.944e-05, 2.944e-05, 182.72460396], [1517244780000, 2.945e-05, 2.945e-05, 2.945e-05, 2.945e-05, 509.42016774], [1517244840000, 2.949e-05, 2.949e-05, 2.944e-05, 2.944e-05, 4475.41854756], [1517244900000, 2.948e-05, 2.95e-05, 2.917e-05, 2.917e-05, 11982.50864422], [1517244960000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 595.79119996], [1517245020000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 7811.88503212], [1517245080000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 3246.51219407], [1517245140000, 2.949e-05, 2.95e-05, 2.949e-05, 2.95e-05, 1786.78929794], [1517245200000, 2.949e-05, 2.949e-05, 2.949e-05, 2.949e-05, 1507.38863859], [1517245260000, 2.924e-05, 2.924e-05, 2.924e-05, 2.924e-05, 763.95803018], [1517245320000, 2.949e-05, 2.949e-05, 2.949e-05, 2.949e-05, 1413.4482693], [1517245380000, 2.949e-05, 2.95e-05, 2.949e-05, 2.949e-05, 254.25914323], [1517245440000, 2.949e-05, 2.949e-05, 2.948e-05, 2.949e-05, 1148.48894712], [1517245500000, 2.932e-05, 2.945e-05, 2.931e-05, 2.945e-05, 1163.43905655], [1517245560000, 2.945e-05, 2.945e-05, 2.931e-05, 2.945e-05, 2554.03404252], [1517245620000, 2.945e-05, 2.945e-05, 2.945e-05, 2.945e-05, 1497.47329469], [1517245680000, 2.931e-05, 2.931e-05, 2.931e-05, 2.931e-05, 145.0], [1517245740000, 2.945e-05, 2.945e-05, 2.931e-05, 2.931e-05, 1534.33705863], [1517245800000, 2.931e-05, 2.931e-05, 2.931e-05, 2.931e-05, 135.34367471], [1517245860000, 2.931e-05, 2.943e-05, 2.931e-05, 2.943e-05, 724.38442432], [1517245920000, 2.943e-05, 2.943e-05, 2.943e-05, 2.943e-05, 1058.32989623], [1517245980000, 2.941e-05, 2.941e-05, 2.941e-05, 2.941e-05, 212.51560192], [1517246040000, 2.933e-05, 2.933e-05, 2.921e-05, 2.921e-05, 3117.7349035], [1517246160000, 2.935e-05, 2.935e-05, 2.935e-05, 2.935e-05, 42.0122257], [1517246220000, 2.922e-05, 2.935e-05, 2.921e-05, 2.921e-05, 3782.27683624], [1517246340000, 2.921e-05, 2.943e-05, 2.921e-05, 2.943e-05, 3997.83444118], [1517246400000, 2.943e-05, 2.945e-05, 2.943e-05, 2.943e-05, 6930.91920015], [1517246460000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 340.0], [1517246520000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 108.89286194], [1517246640000, 2.923e-05, 2.923e-05, 2.923e-05, 2.923e-05, 590.76898476], [1517246700000, 2.924e-05, 2.924e-05, 2.923e-05, 2.923e-05, 469.34457256], [1517246760000, 2.93e-05, 2.945e-05, 2.93e-05, 2.945e-05, 246.92158578], [1517246820000, 2.944e-05, 2.945e-05, 2.944e-05, 2.945e-05, 1099.22888269], [1517246940000, 2.945e-05, 2.961e-05, 2.931e-05, 2.961e-05, 64940.5251059], [1517247000000, 2.961e-05, 2.98e-05, 2.955e-05, 2.98e-05, 39498.64836132], [1517247060000, 2.98e-05, 2.98e-05, 2.955e-05, 2.955e-05, 9554.30740904], [1517247120000, 2.956e-05, 2.956e-05, 2.955e-05, 2.955e-05, 5630.04147453], [1517247180000, 2.955e-05, 2.98e-05, 2.955e-05, 2.955e-05, 4613.04205708], [1517247240000, 2.977e-05, 2.977e-05, 2.976e-05, 2.976e-05, 6045.31584444], [1517247300000, 2.976e-05, 2.977e-05, 2.976e-05, 2.977e-05, 11046.88895679], [1517247360000, 2.976e-05, 2.976e-05, 2.976e-05, 2.976e-05, 3158.36262165], [1517247420000, 2.977e-05, 2.977e-05, 2.976e-05, 2.976e-05, 319.94], [1517247480000, 2.977e-05, 2.977e-05, 2.976e-05, 2.976e-05, 11924.69591615], [1517247540000, 2.976e-05, 2.977e-05, 2.957e-05, 2.957e-05, 3591.80259802], [1517247660000, 2.957e-05, 2.957e-05, 2.957e-05, 2.957e-05, 244.75524476], [1517247720000, 2.957e-05, 2.957e-05, 2.957e-05, 2.957e-05, 1815.43958164], [1517247780000, 2.957e-05, 2.957e-05, 2.957e-05, 2.957e-05, 8150.80886501], [1517247840000, 2.957e-05, 2.957e-05, 2.956e-05, 2.956e-05, 935.35046771], [1517247900000, 2.956e-05, 2.956e-05, 2.941e-05, 2.941e-05, 8336.22113601], [1517247960000, 2.948e-05, 2.949e-05, 2.948e-05, 2.949e-05, 49.7876098], [1517248020000, 2.948e-05, 2.949e-05, 2.948e-05, 2.949e-05, 2995.0491176], [1517248140000, 2.95e-05, 2.957e-05, 2.95e-05, 2.957e-05, 2026.06049607], [1517248200000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 171.61682754], [1517248260000, 2.95e-05, 2.955e-05, 2.942e-05, 2.943e-05, 2887.16677001], [1517248320000, 2.945e-05, 2.945e-05, 2.943e-05, 2.944e-05, 10391.120142], [1517248380000, 2.944e-05, 2.946e-05, 2.943e-05, 2.946e-05, 1439.51771342], [1517248440000, 2.945e-05, 2.946e-05, 2.945e-05, 2.946e-05, 178.28531957], [1517248500000, 2.946e-05, 2.956e-05, 2.944e-05, 2.956e-05, 3652.61359965], [1517248560000, 2.955e-05, 2.956e-05, 2.955e-05, 2.956e-05, 1308.66837026], [1517248620000, 2.956e-05, 2.956e-05, 2.942e-05, 2.942e-05, 5476.19609693], [1517248740000, 2.964e-05, 2.964e-05, 2.95e-05, 2.95e-05, 490.70424478], [1517248800000, 2.963e-05, 2.964e-05, 2.963e-05, 2.963e-05, 10974.68686859], [1517248860000, 2.964e-05, 2.969e-05, 2.964e-05, 2.969e-05, 3169.40651544], [1517248920000, 2.965e-05, 2.975e-05, 2.965e-05, 2.975e-05, 3218.43204707], [1517248980000, 2.975e-05, 2.983e-05, 2.975e-05, 2.983e-05, 32177.13917668], [1517249040000, 2.983e-05, 2.988e-05, 2.983e-05, 2.988e-05, 3081.34429032], [1517249100000, 2.987e-05, 2.988e-05, 2.983e-05, 2.983e-05, 4896.18178197], [1517249160000, 2.984e-05, 2.984e-05, 2.984e-05, 2.984e-05, 5379.52639881], [1517249220000, 2.987e-05, 2.988e-05, 2.987e-05, 2.988e-05, 5023.41514524], [1517249280000, 2.989e-05, 2.994e-05, 2.989e-05, 2.993e-05, 21348.1111013], [1517249340000, 2.994e-05, 2.995e-05, 2.993e-05, 2.993e-05, 7636.06251597], [1517249400000, 2.992e-05, 2.993e-05, 2.99e-05, 2.99e-05, 10137.57793737], [1517249460000, 2.99e-05, 2.991e-05, 2.99e-05, 2.991e-05, 1333.97594279], [1517249520000, 2.991e-05, 2.991e-05, 2.989e-05, 2.989e-05, 14433.86881214], [1517249580000, 2.989e-05, 2.99e-05, 2.989e-05, 2.989e-05, 2703.73220582], [1517249640000, 2.989e-05, 2.989e-05, 2.97e-05, 2.989e-05, 7019.00862141], [1517249700000, 2.989e-05, 2.989e-05, 2.984e-05, 2.984e-05, 3698.54815364], [1517249760000, 2.971e-05, 2.973e-05, 2.971e-05, 2.973e-05, 753.23689475], [1517249820000, 2.974e-05, 2.974e-05, 2.973e-05, 2.973e-05, 30566.04281227], [1517249940000, 2.988e-05, 2.988e-05, 2.988e-05, 2.988e-05, 2306.7073996], [1517250000000, 2.989e-05, 2.989e-05, 2.973e-05, 2.988e-05, 6734.219287], [1517250060000, 2.988e-05, 2.988e-05, 2.974e-05, 2.988e-05, 4269.10752066], [1517250120000, 2.974e-05, 2.974e-05, 2.974e-05, 2.974e-05, 965.96293736], [1517250180000, 2.975e-05, 2.979e-05, 2.975e-05, 2.979e-05, 5836.50742228], [1517250240000, 2.979e-05, 2.979e-05, 2.979e-05, 2.979e-05, 792.77098702], [1517250300000, 2.979e-05, 2.979e-05, 2.974e-05, 2.974e-05, 9743.27734399], [1517250360000, 2.974e-05, 2.974e-05, 2.974e-05, 2.974e-05, 1001.35108076], [1517250420000, 2.974e-05, 2.99e-05, 2.974e-05, 2.99e-05, 15312.67424276], [1517250480000, 2.99e-05, 2.99e-05, 2.989e-05, 2.99e-05, 1677.73426285], [1517250540000, 2.99e-05, 2.99e-05, 2.986e-05, 2.986e-05, 11078.27110494], [1517250600000, 2.986e-05, 2.986e-05, 2.986e-05, 2.986e-05, 571.35361203], [1517250660000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 67.0], [1517250720000, 2.98e-05, 2.98e-05, 2.975e-05, 2.98e-05, 1175.1512166], [1517250780000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 24.46696129], [1517250840000, 2.985e-05, 2.989e-05, 2.976e-05, 2.976e-05, 5465.18580444], [1517250900000, 2.976e-05, 2.976e-05, 2.976e-05, 2.976e-05, 1170.56040875], [1517250960000, 2.975e-05, 2.976e-05, 2.974e-05, 2.976e-05, 8150.05356343], [1517251020000, 2.976e-05, 2.98e-05, 2.974e-05, 2.98e-05, 4485.30647259], [1517251080000, 2.976e-05, 2.976e-05, 2.975e-05, 2.976e-05, 2998.14932068], [1517251200000, 2.976e-05, 2.976e-05, 2.974e-05, 2.974e-05, 5526.87881146], [1517251260000, 2.974e-05, 2.976e-05, 2.974e-05, 2.974e-05, 9950.95884191], [1517251320000, 2.973e-05, 2.973e-05, 2.973e-05, 2.973e-05, 886.99271879], [1517251380000, 2.973e-05, 2.976e-05, 2.973e-05, 2.976e-05, 9448.63162496], [1517251440000, 2.976e-05, 2.985e-05, 2.976e-05, 2.985e-05, 3096.57328224], [1517251500000, 2.974e-05, 2.974e-05, 2.974e-05, 2.974e-05, 1122.56117407], [1517251560000, 2.973e-05, 2.973e-05, 2.973e-05, 2.973e-05, 2882.35342881], [1517251620000, 2.97e-05, 2.97e-05, 2.97e-05, 2.97e-05, 672.55892256], [1517251680000, 2.97e-05, 2.97e-05, 2.964e-05, 2.97e-05, 3031.12855595], [1517251740000, 2.97e-05, 2.974e-05, 2.97e-05, 2.974e-05, 4883.93439422], [1517251800000, 2.964e-05, 2.974e-05, 2.964e-05, 2.974e-05, 6505.26372422], [1517251860000, 2.965e-05, 2.973e-05, 2.965e-05, 2.965e-05, 2100.301003], [1517251920000, 2.965e-05, 2.973e-05, 2.964e-05, 2.967e-05, 8703.20548609], [1517251980000, 2.965e-05, 2.965e-05, 2.965e-05, 2.965e-05, 477.04332389], [1517252040000, 2.967e-05, 2.967e-05, 2.965e-05, 2.965e-05, 2588.87261912], [1517252100000, 2.965e-05, 2.965e-05, 2.965e-05, 2.965e-05, 3051.79479631], [1517252160000, 2.965e-05, 2.965e-05, 2.965e-05, 2.965e-05, 3566.40064811], [1517252220000, 2.965e-05, 2.965e-05, 2.965e-05, 2.965e-05, 736.59527403], [1517252280000, 2.965e-05, 2.965e-05, 2.964e-05, 2.964e-05, 5640.61700012], [1517252400000, 2.964e-05, 2.964e-05, 2.964e-05, 2.964e-05, 271.10202054], [1517252460000, 2.95e-05, 2.965e-05, 2.95e-05, 2.95e-05, 128752.80114053], [1517252520000, 2.95e-05, 2.951e-05, 2.95e-05, 2.951e-05, 1487.06016995], [1517252580000, 2.951e-05, 2.951e-05, 2.951e-05, 2.951e-05, 3042.7460898], [1517252640000, 2.95e-05, 2.95e-05, 2.944e-05, 2.95e-05, 1114.20188846], [1517252700000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 33.89830508], [1517252760000, 2.951e-05, 2.951e-05, 2.951e-05, 2.951e-05, 38.89112093], [1517252820000, 2.95e-05, 2.95e-05, 2.943e-05, 2.943e-05, 2737.17536158], [1517252880000, 2.95e-05, 2.95e-05, 2.945e-05, 2.945e-05, 25119.47155125], [1517252940000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 2675.13802681], [1517253000000, 2.96e-05, 2.965e-05, 2.96e-05, 2.965e-05, 2412.86811159], [1517253060000, 2.965e-05, 2.966e-05, 2.965e-05, 2.966e-05, 80.60370152], [1517253120000, 2.967e-05, 2.967e-05, 2.967e-05, 2.967e-05, 84.26019548], [1517253180000, 2.967e-05, 2.977e-05, 2.966e-05, 2.977e-05, 6288.53345549], [1517253240000, 2.977e-05, 2.987e-05, 2.975e-05, 2.984e-05, 35034.45869607], [1517253300000, 2.984e-05, 2.987e-05, 2.984e-05, 2.987e-05, 32158.80982038], [1517253420000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 177.669476], [1517253480000, 2.979e-05, 2.987e-05, 2.979e-05, 2.987e-05, 40982.26361011], [1517253540000, 2.987e-05, 2.988e-05, 2.981e-05, 2.981e-05, 2472.88716958], [1517253660000, 2.987e-05, 2.987e-05, 2.987e-05, 2.987e-05, 1342.70093992], [1517253720000, 2.987e-05, 2.987e-05, 2.987e-05, 2.987e-05, 636.40467035], [1517253780000, 2.965e-05, 2.965e-05, 2.964e-05, 2.965e-05, 932.0227676], [1517253840000, 2.986e-05, 2.988e-05, 2.986e-05, 2.988e-05, 16109.51807394], [1517253900000, 2.988e-05, 2.989e-05, 2.963e-05, 2.989e-05, 23852.98415361], [1517254020000, 2.986e-05, 2.986e-05, 2.986e-05, 2.986e-05, 805.63324682], [1517254140000, 2.986e-05, 2.986e-05, 2.963e-05, 2.963e-05, 118907.62462702], [1517254260000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 45.50307962], [1517254320000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 7913.95701342], [1517254380000, 2.979e-05, 2.98e-05, 2.979e-05, 2.98e-05, 455.29131298], [1517254440000, 2.979e-05, 2.98e-05, 2.979e-05, 2.98e-05, 84.57748246], [1517254500000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 3551.95715089], [1517254740000, 2.955e-05, 2.955e-05, 2.955e-05, 2.955e-05, 1348.10245628], [1517254800000, 2.958e-05, 2.97e-05, 2.958e-05, 2.959e-05, 7216.90298664], [1517254860000, 2.965e-05, 2.965e-05, 2.96e-05, 2.965e-05, 10155.58880687], [1517254920000, 2.965e-05, 2.965e-05, 2.952e-05, 2.952e-05, 10413.25702563], [1517254980000, 2.951e-05, 2.951e-05, 2.949e-05, 2.949e-05, 6278.5533753], [1517255040000, 2.943e-05, 2.949e-05, 2.943e-05, 2.943e-05, 5343.05890419], [1517255100000, 2.943e-05, 2.943e-05, 2.943e-05, 2.943e-05, 290.49129534], [1517255160000, 2.943e-05, 2.958e-05, 2.922e-05, 2.958e-05, 51637.60997628], [1517255220000, 2.958e-05, 2.958e-05, 2.952e-05, 2.952e-05, 226.13653303], [1517255280000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 55.40350372], [1517255340000, 2.952e-05, 2.978e-05, 2.936e-05, 2.955e-05, 3108.61854054], [1517255400000, 2.944e-05, 2.96e-05, 2.944e-05, 2.96e-05, 6790.16709693], [1517255460000, 2.944e-05, 2.944e-05, 2.944e-05, 2.944e-05, 3050.85629753], [1517255520000, 2.943e-05, 2.943e-05, 2.93e-05, 2.93e-05, 1563.15061064], [1517255580000, 2.943e-05, 2.943e-05, 2.93e-05, 2.93e-05, 1770.96510583], [1517255640000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 641.23116383], [1517255700000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 159.05714307], [1517255760000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 2562.06426194], [1517255820000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 17.34581508], [1517255880000, 2.942e-05, 2.942e-05, 2.928e-05, 2.93e-05, 38051.85550159], [1517255940000, 2.925e-05, 2.925e-05, 2.903e-05, 2.903e-05, 92082.73407992], [1517256000000, 2.929e-05, 2.929e-05, 2.911e-05, 2.911e-05, 3087.38808921], [1517256060000, 2.92e-05, 2.929e-05, 2.92e-05, 2.921e-05, 1607.07306779], [1517256120000, 2.929e-05, 2.929e-05, 2.928e-05, 2.928e-05, 77.84570766], [1517256180000, 2.928e-05, 2.928e-05, 2.92e-05, 2.92e-05, 20982.55661662], [1517256240000, 2.922e-05, 2.941e-05, 2.922e-05, 2.941e-05, 15647.64635766], [1517256300000, 2.947e-05, 2.959e-05, 2.922e-05, 2.95e-05, 1515.34371316], [1517256420000, 2.946e-05, 2.948e-05, 2.946e-05, 2.948e-05, 111.97830876], [1517256480000, 2.935e-05, 2.935e-05, 2.922e-05, 2.922e-05, 1438.68433312], [1517256540000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 359.93660519], [1517256600000, 2.922e-05, 2.922e-05, 2.92e-05, 2.92e-05, 3427.79301687], [1517256660000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 732.31293425], [1517256780000, 2.92e-05, 2.92e-05, 2.91e-05, 2.91e-05, 8117.49285569], [1517256840000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 41.27921771], [1517256900000, 2.909e-05, 2.92e-05, 2.909e-05, 2.92e-05, 3396.86723132], [1517256960000, 2.92e-05, 2.935e-05, 2.92e-05, 2.935e-05, 2455.61443878], [1517257020000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 1952.13647421], [1517257080000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 131.41891845], [1517257140000, 2.92e-05, 2.92e-05, 2.912e-05, 2.912e-05, 568.726369], [1517257200000, 2.912e-05, 2.912e-05, 2.912e-05, 2.912e-05, 298.00831282], [1517257320000, 2.912e-05, 2.912e-05, 2.912e-05, 2.912e-05, 304.98015175], [1517257380000, 2.912e-05, 2.912e-05, 2.912e-05, 2.912e-05, 464.14002208], [1517257440000, 2.912e-05, 2.912e-05, 2.91e-05, 2.91e-05, 2852.36138384], [1517257500000, 2.912e-05, 2.912e-05, 2.912e-05, 2.912e-05, 40.668716], [1517257560000, 2.912e-05, 2.912e-05, 2.91e-05, 2.91e-05, 1842.84495996], [1517257620000, 2.909e-05, 2.91e-05, 2.909e-05, 2.91e-05, 954.76345991], [1517257680000, 2.91e-05, 2.91e-05, 2.91e-05, 2.91e-05, 5041.10408437], [1517257740000, 2.912e-05, 2.912e-05, 2.91e-05, 2.91e-05, 9780.6498649], [1517257800000, 2.912e-05, 2.943e-05, 2.912e-05, 2.942e-05, 1024.55409222], [1517257920000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 46.99452952], [1517258040000, 2.93e-05, 2.93e-05, 2.912e-05, 2.912e-05, 2200.76180808], [1517258160000, 2.912e-05, 2.912e-05, 2.912e-05, 2.912e-05, 10376.31180961], [1517258220000, 2.912e-05, 2.93e-05, 2.912e-05, 2.93e-05, 8649.15617589], [1517258280000, 2.929e-05, 2.93e-05, 2.929e-05, 2.93e-05, 238.20891457], [1517258400000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 112.07337884], [1517258460000, 2.915e-05, 2.915e-05, 2.913e-05, 2.913e-05, 1189.6784224], [1517258520000, 2.929e-05, 2.93e-05, 2.929e-05, 2.93e-05, 266.46183381], [1517258580000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 73.35352971], [1517258640000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 11018.49135695], [1517258700000, 2.915e-05, 2.93e-05, 2.915e-05, 2.93e-05, 1339.58426633], [1517258760000, 2.93e-05, 2.93e-05, 2.93e-05, 2.93e-05, 533.12696215], [1517258820000, 2.916e-05, 2.916e-05, 2.916e-05, 2.916e-05, 2000.0], [1517258880000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 5479.39417998], [1517258940000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 646.57595608], [1517259000000, 2.917e-05, 2.928e-05, 2.917e-05, 2.917e-05, 18409.13005265], [1517259060000, 2.917e-05, 2.917e-05, 2.916e-05, 2.916e-05, 7086.3751844], [1517259120000, 2.916e-05, 2.916e-05, 2.915e-05, 2.916e-05, 1642.04547003], [1517259180000, 2.915e-05, 2.917e-05, 2.915e-05, 2.917e-05, 3191.35753512], [1517259240000, 2.915e-05, 2.915e-05, 2.915e-05, 2.915e-05, 136.14556443], [1517259300000, 2.917e-05, 2.917e-05, 2.915e-05, 2.915e-05, 217.02964898], [1517259360000, 2.915e-05, 2.915e-05, 2.908e-05, 2.908e-05, 13593.3024949], [1517259420000, 2.917e-05, 2.917e-05, 2.908e-05, 2.908e-05, 1245.86159], [1517259480000, 2.917e-05, 2.917e-05, 2.917e-05, 2.917e-05, 21.25471374], [1517259540000, 2.917e-05, 2.917e-05, 2.908e-05, 2.908e-05, 2071.59596798], [1517259600000, 2.908e-05, 2.908e-05, 2.907e-05, 2.907e-05, 4269.93626771], [1517259660000, 2.907e-05, 2.916e-05, 2.907e-05, 2.916e-05, 712.65663566], [1517259780000, 2.916e-05, 2.916e-05, 2.916e-05, 2.916e-05, 921.54557941], [1517259840000, 2.916e-05, 2.917e-05, 2.916e-05, 2.917e-05, 145.9960907], [1517259900000, 2.917e-05, 2.917e-05, 2.906e-05, 2.906e-05, 10300.15628377], [1517260020000, 2.906e-05, 2.906e-05, 2.906e-05, 2.906e-05, 1391.89059346], [1517260080000, 2.917e-05, 2.917e-05, 2.906e-05, 2.906e-05, 12126.57219949], [1517260140000, 2.916e-05, 2.917e-05, 2.916e-05, 2.917e-05, 29016.280355], [1517260380000, 2.908e-05, 2.908e-05, 2.897e-05, 2.897e-05, 60054.70990601], [1517260440000, 2.908e-05, 2.908e-05, 2.897e-05, 2.897e-05, 2438.39162854], [1517260500000, 2.916e-05, 2.93e-05, 2.916e-05, 2.929e-05, 2018.48007949], [1517260560000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 57.7251065], [1517260620000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 1044.88674105], [1517260680000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 1e-06], [1517260860000, 2.909e-05, 2.909e-05, 2.908e-05, 2.908e-05, 600.10561009], [1517260920000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 3887.33375608], [1517260980000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 42.42169629], [1517261100000, 2.918e-05, 2.918e-05, 2.918e-05, 2.918e-05, 3036.7766132], [1517261160000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 4450.02661751], [1517261220000, 2.929e-05, 2.946e-05, 2.929e-05, 2.946e-05, 27442.33710398], [1517261340000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 169.29735234], [1517261400000, 2.931e-05, 2.931e-05, 2.931e-05, 2.931e-05, 48.93921346], [1517261460000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 37.38953093], [1517261640000, 2.94e-05, 2.942e-05, 2.94e-05, 2.942e-05, 3397.62462797], [1517261700000, 2.943e-05, 2.943e-05, 2.942e-05, 2.942e-05, 1284.63953259], [1517261820000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 1212.85743362], [1517261940000, 2.931e-05, 2.931e-05, 2.931e-05, 2.931e-05, 72.5193874], [1517262000000, 2.931e-05, 2.941e-05, 2.931e-05, 2.941e-05, 136.83841006], [1517262060000, 2.941e-05, 2.941e-05, 2.929e-05, 2.929e-05, 59809.44558799], [1517262120000, 2.929e-05, 2.929e-05, 2.918e-05, 2.918e-05, 286.00649344], [1517262180000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 41.11115361], [1517262240000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 10.07548251], [1517262360000, 2.926e-05, 2.929e-05, 2.926e-05, 2.929e-05, 2950.39620678], [1517262480000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 1069.33581503], [1517262540000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 925.85283039], [1517262600000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 30.35822707], [1517262660000, 2.921e-05, 2.921e-05, 2.921e-05, 2.921e-05, 207.48666637], [1517262780000, 2.929e-05, 2.929e-05, 2.929e-05, 2.929e-05, 23.18778722], [1517262840000, 2.923e-05, 2.939e-05, 2.923e-05, 2.939e-05, 783.91586674], [1517262900000, 2.939e-05, 2.939e-05, 2.924e-05, 2.924e-05, 1173.07240869], [1517263080000, 2.924e-05, 2.924e-05, 2.923e-05, 2.923e-05, 3123.17999766], [1517263200000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 23000.0], [1517263260000, 2.928e-05, 2.928e-05, 2.924e-05, 2.924e-05, 961.56769497], [1517263440000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 332.03888786], [1517263500000, 2.928e-05, 2.928e-05, 2.924e-05, 2.924e-05, 4569.90593296], [1517263560000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 29.41943648], [1517263620000, 2.928e-05, 2.928e-05, 2.928e-05, 2.928e-05, 1246.42275596], [1517263680000, 2.924e-05, 2.926e-05, 2.924e-05, 2.926e-05, 20122.599182], [1517263740000, 2.926e-05, 2.938e-05, 2.924e-05, 2.938e-05, 27623.97465506], [1517263860000, 2.937e-05, 2.938e-05, 2.937e-05, 2.938e-05, 6222.30828895], [1517263920000, 2.937e-05, 2.941e-05, 2.925e-05, 2.941e-05, 9988.47756877], [1517263980000, 2.942e-05, 2.943e-05, 2.942e-05, 2.943e-05, 1873.20824159], [1517264040000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 3002.58683145], [1517264160000, 2.942e-05, 2.942e-05, 2.926e-05, 2.942e-05, 1605.13159623], [1517264220000, 2.93e-05, 2.94e-05, 2.927e-05, 2.94e-05, 1775.88990155], [1517264280000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 2615.84575975], [1517264340000, 2.939e-05, 2.94e-05, 2.939e-05, 2.939e-05, 4280.39969102], [1517264400000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 8272.69875127], [1517264460000, 2.926e-05, 2.926e-05, 2.924e-05, 2.924e-05, 51486.30267664], [1517264520000, 2.924e-05, 2.924e-05, 2.923e-05, 2.923e-05, 22112.30122036], [1517264580000, 2.923e-05, 2.923e-05, 2.921e-05, 2.921e-05, 644.00842803], [1517264640000, 2.921e-05, 2.921e-05, 2.92e-05, 2.92e-05, 2854.83389322], [1517264820000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 4291.94464606], [1517264880000, 2.926e-05, 2.926e-05, 2.926e-05, 2.926e-05, 803.25530725], [1517264940000, 2.925e-05, 2.925e-05, 2.925e-05, 2.925e-05, 520.85916446], [1517265000000, 2.92e-05, 2.94e-05, 2.92e-05, 2.94e-05, 1089.35392594], [1517265120000, 2.927e-05, 2.927e-05, 2.92e-05, 2.92e-05, 213.42191838], [1517265180000, 2.92e-05, 2.927e-05, 2.915e-05, 2.916e-05, 2144.301003], [1517265240000, 2.915e-05, 2.916e-05, 2.914e-05, 2.914e-05, 29576.18087629], [1517265300000, 2.914e-05, 2.915e-05, 2.911e-05, 2.915e-05, 2999.89604529], [1517265360000, 2.915e-05, 2.927e-05, 2.908e-05, 2.908e-05, 9788.4315169], [1517265420000, 2.927e-05, 2.927e-05, 2.927e-05, 2.927e-05, 116.56032972], [1517265480000, 2.927e-05, 2.94e-05, 2.908e-05, 2.908e-05, 15651.91717641], [1517265540000, 2.908e-05, 2.908e-05, 2.908e-05, 2.908e-05, 395.26808292], [1517265600000, 2.908e-05, 2.926e-05, 2.908e-05, 2.926e-05, 5287.84199142], [1517265660000, 2.927e-05, 2.932e-05, 2.908e-05, 2.908e-05, 5216.94138555], [1517265720000, 2.937e-05, 2.937e-05, 2.908e-05, 2.908e-05, 388.4657017], [1517265780000, 2.909e-05, 2.937e-05, 2.909e-05, 2.937e-05, 7568.9051107], [1517265840000, 2.937e-05, 2.949e-05, 2.937e-05, 2.941e-05, 41868.59217862], [1517265900000, 2.948e-05, 2.948e-05, 2.948e-05, 2.948e-05, 141.27083112], [1517265960000, 2.945e-05, 2.949e-05, 2.945e-05, 2.945e-05, 3886.25429146], [1517266020000, 2.945e-05, 2.945e-05, 2.922e-05, 2.922e-05, 490.55763265], [1517266080000, 2.922e-05, 2.942e-05, 2.922e-05, 2.922e-05, 19138.55008411], [1517266140000, 2.922e-05, 2.922e-05, 2.9e-05, 2.922e-05, 16452.90281269], [1517266200000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 5363.26022725], [1517266320000, 2.9e-05, 2.9e-05, 2.9e-05, 2.9e-05, 1285.26242921], [1517266440000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 5184.61625], [1517266500000, 2.92e-05, 2.92e-05, 2.92e-05, 2.92e-05, 1198.1167221], [1517266560000, 2.919e-05, 2.922e-05, 2.919e-05, 2.922e-05, 9885.82991786], [1517266620000, 2.922e-05, 2.922e-05, 2.91e-05, 2.922e-05, 3930.30598108], [1517266680000, 2.91e-05, 2.922e-05, 2.91e-05, 2.922e-05, 2119.84241927], [1517266740000, 2.922e-05, 2.922e-05, 2.922e-05, 2.922e-05, 2223.18766737], [1517266800000, 2.922e-05, 2.922e-05, 2.917e-05, 2.917e-05, 5985.3836834], [1517266860000, 2.916e-05, 2.916e-05, 2.916e-05, 2.916e-05, 1527.79788499], [1517266920000, 2.93e-05, 2.933e-05, 2.93e-05, 2.931e-05, 82773.11066998], [1517266980000, 2.933e-05, 2.948e-05, 2.931e-05, 2.947e-05, 20632.48584976], [1517267040000, 2.946e-05, 2.947e-05, 2.931e-05, 2.931e-05, 16850.02737095], [1517267100000, 2.931e-05, 2.931e-05, 2.931e-05, 2.931e-05, 7844.01335468], [1517267160000, 2.932e-05, 2.932e-05, 2.932e-05, 2.932e-05, 769.41544367], [1517267220000, 2.932e-05, 2.943e-05, 2.932e-05, 2.943e-05, 6186.31324494], [1517267280000, 2.943e-05, 2.943e-05, 2.932e-05, 2.932e-05, 7654.06744202], [1517267340000, 2.932e-05, 2.95e-05, 2.932e-05, 2.95e-05, 21907.71185501], [1517267400000, 2.949e-05, 2.959e-05, 2.949e-05, 2.959e-05, 43548.01417132], [1517267460000, 2.959e-05, 2.971e-05, 2.959e-05, 2.971e-05, 51850.09324153], [1517267520000, 2.97e-05, 2.974e-05, 2.97e-05, 2.974e-05, 49225.8119502], [1517267580000, 2.971e-05, 2.976e-05, 2.971e-05, 2.976e-05, 6167.02874113], [1517267640000, 2.978e-05, 2.986e-05, 2.978e-05, 2.979e-05, 88223.76513639], [1517267700000, 2.986e-05, 2.986e-05, 2.979e-05, 2.979e-05, 3809.02260871], [1517267760000, 2.979e-05, 2.985e-05, 2.894e-05, 2.957e-05, 130882.58285148], [1517267820000, 2.957e-05, 2.957e-05, 2.949e-05, 2.949e-05, 3910.29518565], [1517268000000, 2.945e-05, 2.945e-05, 2.943e-05, 2.943e-05, 8112.01312861], [1517268060000, 2.938e-05, 2.942e-05, 2.931e-05, 2.942e-05, 12466.18378229], [1517268120000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 925.01072267], [1517268180000, 2.938e-05, 2.944e-05, 2.938e-05, 2.944e-05, 2372.50741218], [1517268240000, 2.947e-05, 2.957e-05, 2.946e-05, 2.957e-05, 1175.79127264], [1517268300000, 2.96e-05, 2.97e-05, 2.96e-05, 2.97e-05, 8058.60678278], [1517268360000, 2.971e-05, 2.973e-05, 2.971e-05, 2.972e-05, 24497.90336549], [1517268420000, 2.972e-05, 2.974e-05, 2.972e-05, 2.974e-05, 10688.10966889], [1517268480000, 2.973e-05, 2.979e-05, 2.97e-05, 2.977e-05, 10167.2945182], [1517268540000, 2.977e-05, 2.977e-05, 2.941e-05, 2.977e-05, 22158.72818693], [1517268600000, 2.978e-05, 2.979e-05, 2.977e-05, 2.978e-05, 3559.36721167], [1517268660000, 2.978e-05, 2.979e-05, 2.977e-05, 2.977e-05, 19868.76459402], [1517268720000, 2.977e-05, 2.979e-05, 2.977e-05, 2.979e-05, 2308.74716201], [1517268780000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 15211.48331077], [1517268840000, 2.981e-05, 2.983e-05, 2.98e-05, 2.983e-05, 14217.51278398], [1517268900000, 2.983e-05, 2.983e-05, 2.978e-05, 2.983e-05, 5864.29958225], [1517268960000, 2.983e-05, 2.983e-05, 2.978e-05, 2.978e-05, 18576.4111527], [1517269020000, 2.978e-05, 2.978e-05, 2.957e-05, 2.957e-05, 4039.28300762], [1517269080000, 2.974e-05, 2.977e-05, 2.957e-05, 2.977e-05, 8799.21741044], [1517269140000, 2.975e-05, 2.986e-05, 2.958e-05, 2.986e-05, 36133.23530295], [1517269200000, 2.986e-05, 2.989e-05, 2.986e-05, 2.986e-05, 24461.82605618], [1517269260000, 2.989e-05, 2.989e-05, 2.964e-05, 2.987e-05, 20603.9302087], [1517269320000, 2.987e-05, 2.993e-05, 2.987e-05, 2.993e-05, 16574.56622673], [1517269380000, 2.99e-05, 2.993e-05, 2.99e-05, 2.993e-05, 17737.09571584], [1517269440000, 2.993e-05, 3e-05, 2.993e-05, 2.999e-05, 333003.77428898], [1517269500000, 2.999e-05, 3.017e-05, 2.994e-05, 3.015e-05, 194855.13416006], [1517269560000, 3.012e-05, 3.018e-05, 3.012e-05, 3.018e-05, 89681.15270928], [1517269620000, 3.019e-05, 3.045e-05, 3.018e-05, 3.045e-05, 93334.1979615], [1517269680000, 3.045e-05, 3.07e-05, 3.044e-05, 3.064e-05, 269445.76592663], [1517269740000, 3.064e-05, 3.067e-05, 3.021e-05, 3.024e-05, 260938.8588856], [1517269800000, 3.044e-05, 3.066e-05, 3.044e-05, 3.047e-05, 23712.67702544], [1517269860000, 3.062e-05, 3.063e-05, 3.047e-05, 3.05e-05, 14539.54983028], [1517269920000, 3.054e-05, 3.074e-05, 3.05e-05, 3.074e-05, 172500.425569], [1517269980000, 3.074e-05, 3.085e-05, 3.074e-05, 3.082e-05, 116530.0503386], [1517270040000, 3.082e-05, 3.091e-05, 3.082e-05, 3.091e-05, 102572.46068429], [1517270100000, 3.091e-05, 3.092e-05, 3.047e-05, 3.074e-05, 101712.88714641], [1517270160000, 3.051e-05, 3.074e-05, 3.05e-05, 3.052e-05, 56603.449144], [1517270220000, 3.072e-05, 3.085e-05, 3.05e-05, 3.075e-05, 76321.64489278], [1517270280000, 3.075e-05, 3.093e-05, 3.074e-05, 3.092e-05, 74322.30357457], [1517270340000, 3.092e-05, 3.1e-05, 3.092e-05, 3.098e-05, 91077.64699913], [1517270400000, 3.1e-05, 3.1e-05, 3.046e-05, 3.046e-05, 180545.1697575], [1517270460000, 3.046e-05, 3.062e-05, 3.023e-05, 3.025e-05, 70609.933064], [1517270520000, 3.025e-05, 3.044e-05, 3.01e-05, 3.01e-05, 155676.50881489], [1517270580000, 3.011e-05, 3.04e-05, 3e-05, 3e-05, 43014.61915864], [1517270640000, 2.999e-05, 3.038e-05, 2.995e-05, 3.037e-05, 86117.01950529], [1517270700000, 3.034e-05, 3.034e-05, 3.024e-05, 3.033e-05, 9195.76509768], [1517270760000, 3.031e-05, 3.033e-05, 2.976e-05, 2.976e-05, 46743.59116175], [1517270820000, 2.977e-05, 2.986e-05, 2.966e-05, 2.966e-05, 50651.14316997], [1517270880000, 2.968e-05, 2.986e-05, 2.967e-05, 2.971e-05, 10945.16559025], [1517270940000, 2.971e-05, 2.975e-05, 2.97e-05, 2.971e-05, 17762.47792807], [1517271000000, 2.971e-05, 2.971e-05, 2.967e-05, 2.97e-05, 4871.28091177], [1517271060000, 2.968e-05, 2.968e-05, 2.96e-05, 2.965e-05, 48320.84729157], [1517271120000, 2.965e-05, 2.965e-05, 2.951e-05, 2.958e-05, 167493.82820634], [1517271180000, 2.958e-05, 2.958e-05, 2.956e-05, 2.956e-05, 15244.7830629], [1517271240000, 2.956e-05, 2.956e-05, 2.955e-05, 2.956e-05, 22754.299572], [1517271300000, 2.956e-05, 2.958e-05, 2.955e-05, 2.958e-05, 2555.36379726], [1517271360000, 2.959e-05, 2.989e-05, 2.959e-05, 2.989e-05, 5647.12453979], [1517271420000, 2.988e-05, 2.999e-05, 2.988e-05, 2.99e-05, 14876.40617995], [1517271480000, 2.989e-05, 2.989e-05, 2.963e-05, 2.977e-05, 55771.38167975], [1517271540000, 2.977e-05, 2.98e-05, 2.977e-05, 2.98e-05, 65213.37460714], [1517271600000, 2.98e-05, 2.98e-05, 2.963e-05, 2.98e-05, 59072.8856196], [1517271660000, 2.964e-05, 2.988e-05, 2.952e-05, 2.988e-05, 65360.68314289], [1517271720000, 2.985e-05, 2.985e-05, 2.985e-05, 2.985e-05, 5079.93232932], [1517271780000, 2.98e-05, 2.98e-05, 2.963e-05, 2.963e-05, 4326.07378854], [1517271840000, 2.978e-05, 2.978e-05, 2.978e-05, 2.978e-05, 2103.54278238], [1517271900000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 4248.29804682], [1517271960000, 2.984e-05, 2.984e-05, 2.983e-05, 2.983e-05, 4787.45158072], [1517272020000, 2.984e-05, 2.984e-05, 2.984e-05, 2.984e-05, 8859.19504297], [1517272080000, 2.987e-05, 2.987e-05, 2.963e-05, 2.985e-05, 26983.13633582], [1517272140000, 2.986e-05, 3e-05, 2.986e-05, 3e-05, 18354.61248598], [1517272200000, 3e-05, 3.01e-05, 2.987e-05, 2.99e-05, 5534.30112622], [1517272260000, 2.99e-05, 3e-05, 2.99e-05, 3e-05, 12902.32886224], [1517272320000, 3.01e-05, 3.01e-05, 3e-05, 3e-05, 4774.79155894], [1517272380000, 2.998e-05, 3.01e-05, 2.99e-05, 2.991e-05, 16145.42763131], [1517272440000, 2.992e-05, 3.01e-05, 2.992e-05, 3.01e-05, 2927.859023], [1517272500000, 3.01e-05, 3.015e-05, 3.01e-05, 3.015e-05, 21904.91146129], [1517272560000, 3.015e-05, 3.029e-05, 3.014e-05, 3.014e-05, 55849.90936593], [1517272620000, 3.018e-05, 3.018e-05, 3.014e-05, 3.018e-05, 18546.04241065], [1517272680000, 2.999e-05, 3.018e-05, 2.992e-05, 2.992e-05, 16752.63775259], [1517272740000, 2.998e-05, 2.998e-05, 2.993e-05, 2.993e-05, 4502.37587607], [1517272800000, 2.994e-05, 2.997e-05, 2.994e-05, 2.994e-05, 20479.02068597], [1517272860000, 2.998e-05, 2.998e-05, 2.994e-05, 2.994e-05, 191.98830184], [1517272920000, 2.994e-05, 2.994e-05, 2.992e-05, 2.992e-05, 59854.18523777], [1517272980000, 2.992e-05, 2.992e-05, 2.989e-05, 2.989e-05, 58037.63369202], [1517273040000, 2.99e-05, 2.99e-05, 2.989e-05, 2.989e-05, 5415.94129074], [1517273100000, 2.987e-05, 2.989e-05, 2.975e-05, 2.975e-05, 3976.04752229], [1517273160000, 2.975e-05, 2.984e-05, 2.974e-05, 2.984e-05, 25087.60080513], [1517273220000, 2.975e-05, 2.975e-05, 2.958e-05, 2.958e-05, 8628.41653678], [1517273280000, 2.96e-05, 2.975e-05, 2.955e-05, 2.958e-05, 9359.44418017], [1517273340000, 2.975e-05, 2.975e-05, 2.96e-05, 2.975e-05, 12225.44467393], [1517273400000, 2.991e-05, 2.991e-05, 2.989e-05, 2.989e-05, 6643.43754565], [1517273460000, 2.987e-05, 3.017e-05, 2.987e-05, 3.017e-05, 20614.05146794], [1517273520000, 3.015e-05, 3.015e-05, 3.015e-05, 3.015e-05, 861.91883475], [1517273640000, 3.012e-05, 3.014e-05, 3.012e-05, 3.013e-05, 6665.94871858], [1517273700000, 3.014e-05, 3.014e-05, 3.014e-05, 3.014e-05, 1766.60777412], [1517273760000, 3.013e-05, 3.013e-05, 3.013e-05, 3.013e-05, 957.86157391], [1517273820000, 3.012e-05, 3.013e-05, 2.978e-05, 3.013e-05, 3290.2364532], [1517273880000, 2.98e-05, 2.98e-05, 2.978e-05, 2.978e-05, 1993.58353021], [1517273940000, 2.978e-05, 2.978e-05, 2.978e-05, 2.978e-05, 97.9644468], [1517274000000, 3.007e-05, 3.013e-05, 2.98e-05, 2.98e-05, 5680.92531384], [1517274060000, 2.984e-05, 2.984e-05, 2.975e-05, 2.975e-05, 18518.79259981], [1517274120000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 6157.62516982], [1517274180000, 3.004e-05, 3.004e-05, 3.004e-05, 3.004e-05, 100.0], [1517274240000, 3.004e-05, 3.005e-05, 2.99e-05, 2.99e-05, 11542.26036043], [1517274300000, 3.005e-05, 3.005e-05, 3.005e-05, 3.005e-05, 4792.80767304], [1517274360000, 3.005e-05, 3.005e-05, 2.99e-05, 2.99e-05, 3694.08602838], [1517274420000, 2.99e-05, 3.015e-05, 2.99e-05, 3.015e-05, 37451.60522191], [1517274480000, 2.986e-05, 2.992e-05, 2.986e-05, 2.992e-05, 2909.9353798], [1517274540000, 3.013e-05, 3.013e-05, 2.99e-05, 2.99e-05, 1829.63839216], [1517274600000, 2.99e-05, 3.012e-05, 2.99e-05, 3.012e-05, 11326.97033897], [1517274660000, 3.011e-05, 3.011e-05, 3.011e-05, 3.011e-05, 2172.00738542], [1517274720000, 2.99e-05, 3.011e-05, 2.99e-05, 2.99e-05, 3967.43205955], [1517274780000, 2.99e-05, 2.99e-05, 2.99e-05, 2.99e-05, 15037.73985651], [1517274840000, 2.99e-05, 2.99e-05, 2.99e-05, 2.99e-05, 592.39074911], [1517274900000, 2.99e-05, 2.99e-05, 2.99e-05, 2.99e-05, 346.18250292], [1517274960000, 2.99e-05, 2.99e-05, 2.99e-05, 2.99e-05, 172.2072404], [1517275020000, 3e-05, 3.012e-05, 3e-05, 3.012e-05, 24951.68528919], [1517275080000, 2.999e-05, 2.999e-05, 2.993e-05, 2.999e-05, 1358.08580871], [1517275140000, 2.999e-05, 2.999e-05, 2.999e-05, 2.999e-05, 5073.85364118], [1517275200000, 2.999e-05, 3.01e-05, 2.999e-05, 2.999e-05, 27986.57632674], [1517275260000, 3e-05, 3e-05, 2.999e-05, 2.999e-05, 14286.75318143], [1517275320000, 2.999e-05, 2.999e-05, 2.985e-05, 2.985e-05, 16988.9024535], [1517275380000, 2.979e-05, 2.979e-05, 2.964e-05, 2.966e-05, 7744.65763882], [1517275440000, 2.966e-05, 2.966e-05, 2.964e-05, 2.964e-05, 2106.21313012], [1517275500000, 2.964e-05, 2.964e-05, 2.964e-05, 2.964e-05, 4211.08427029], [1517275560000, 2.964e-05, 2.964e-05, 2.95e-05, 2.95e-05, 61514.63381002], [1517275620000, 2.95e-05, 2.951e-05, 2.937e-05, 2.951e-05, 28095.77507635], [1517275680000, 2.937e-05, 2.949e-05, 2.937e-05, 2.937e-05, 10728.73609036], [1517275740000, 2.937e-05, 2.949e-05, 2.912e-05, 2.949e-05, 172481.5946175], [1517275800000, 2.949e-05, 2.949e-05, 2.937e-05, 2.937e-05, 12891.4055445], [1517275860000, 2.937e-05, 2.949e-05, 2.931e-05, 2.947e-05, 12940.10915077], [1517275920000, 2.947e-05, 2.948e-05, 2.931e-05, 2.947e-05, 31238.36183917], [1517275980000, 2.947e-05, 2.951e-05, 2.941e-05, 2.951e-05, 141654.77158353], [1517276040000, 2.951e-05, 2.951e-05, 2.951e-05, 2.951e-05, 69.34213094], [1517276100000, 2.95e-05, 2.95e-05, 2.949e-05, 2.949e-05, 593.47246597], [1517276160000, 2.946e-05, 2.95e-05, 2.946e-05, 2.946e-05, 747.52007528], [1517276220000, 2.941e-05, 2.95e-05, 2.941e-05, 2.95e-05, 4172.06513729], [1517276280000, 2.95e-05, 2.957e-05, 2.95e-05, 2.956e-05, 9420.27059377], [1517276340000, 2.956e-05, 2.961e-05, 2.951e-05, 2.96e-05, 7449.73966717], [1517276400000, 2.961e-05, 2.994e-05, 2.961e-05, 2.992e-05, 4503.95542307], [1517276460000, 2.992e-05, 2.992e-05, 2.975e-05, 2.978e-05, 14557.80474911], [1517276520000, 2.978e-05, 2.994e-05, 2.978e-05, 2.993e-05, 8615.98133236], [1517276580000, 2.994e-05, 2.994e-05, 2.992e-05, 2.992e-05, 49587.63703536], [1517276640000, 2.992e-05, 2.993e-05, 2.992e-05, 2.992e-05, 8394.39740951], [1517276700000, 2.98e-05, 2.991e-05, 2.969e-05, 2.991e-05, 7489.07765018], [1517276760000, 2.991e-05, 2.991e-05, 2.965e-05, 2.969e-05, 2399.56710492], [1517276820000, 2.971e-05, 2.971e-05, 2.967e-05, 2.969e-05, 10342.16771469], [1517276880000, 2.969e-05, 2.989e-05, 2.969e-05, 2.989e-05, 10815.08067838], [1517276940000, 2.972e-05, 2.972e-05, 2.971e-05, 2.971e-05, 908.62364441], [1517277000000, 2.971e-05, 2.971e-05, 2.966e-05, 2.967e-05, 21982.33900468], [1517277060000, 2.988e-05, 2.988e-05, 2.968e-05, 2.988e-05, 1936.94693111], [1517277120000, 2.988e-05, 2.988e-05, 2.966e-05, 2.968e-05, 8538.42791139], [1517277180000, 2.988e-05, 2.988e-05, 2.968e-05, 2.975e-05, 8377.74231091], [1517277240000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 5962.77919228], [1517277300000, 2.989e-05, 2.997e-05, 2.989e-05, 2.989e-05, 5085.00244524], [1517277360000, 2.99e-05, 2.99e-05, 2.99e-05, 2.99e-05, 1483.09213235], [1517277420000, 2.991e-05, 2.991e-05, 2.991e-05, 2.991e-05, 1877.421557], [1517277480000, 2.991e-05, 2.999e-05, 2.991e-05, 2.999e-05, 11209.45880582], [1517277540000, 2.999e-05, 2.999e-05, 2.997e-05, 2.999e-05, 737.07199207], [1517277600000, 2.997e-05, 2.997e-05, 2.992e-05, 2.992e-05, 9257.26904074], [1517277660000, 2.992e-05, 2.992e-05, 2.991e-05, 2.992e-05, 14130.01766692], [1517277720000, 2.991e-05, 2.996e-05, 2.991e-05, 2.991e-05, 17732.95809556], [1517277780000, 2.991e-05, 3e-05, 2.991e-05, 3e-05, 28634.9713941], [1517277840000, 3e-05, 3e-05, 2.991e-05, 2.991e-05, 747.11734814], [1517277900000, 2.992e-05, 2.992e-05, 2.992e-05, 2.992e-05, 29.10437809], [1517277960000, 2.991e-05, 2.991e-05, 2.989e-05, 2.989e-05, 19702.158745], [1517278020000, 2.989e-05, 2.989e-05, 2.975e-05, 2.98e-05, 259.17108285], [1517278080000, 2.975e-05, 2.98e-05, 2.975e-05, 2.975e-05, 395.17501787], [1517278200000, 2.98e-05, 2.989e-05, 2.975e-05, 2.989e-05, 18904.47413057], [1517278260000, 2.98e-05, 2.98e-05, 2.98e-05, 2.98e-05, 1708.61771745], [1517278320000, 2.977e-05, 2.98e-05, 2.967e-05, 2.968e-05, 22393.05918608], [1517278380000, 2.968e-05, 2.97e-05, 2.968e-05, 2.97e-05, 5593.98689896], [1517278440000, 2.97e-05, 2.98e-05, 2.97e-05, 2.98e-05, 5835.62827517], [1517278500000, 2.987e-05, 2.987e-05, 2.975e-05, 2.975e-05, 961.17122472], [1517278560000, 2.979e-05, 2.988e-05, 2.979e-05, 2.987e-05, 6864.78145954], [1517278620000, 2.976e-05, 2.98e-05, 2.968e-05, 2.98e-05, 18187.54121407], [1517278680000, 2.969e-05, 2.969e-05, 2.968e-05, 2.968e-05, 3064.22549932], [1517278740000, 2.977e-05, 2.977e-05, 2.968e-05, 2.968e-05, 18682.88871599], [1517278800000, 2.978e-05, 2.978e-05, 2.978e-05, 2.978e-05, 2000.0], [1517278860000, 2.979e-05, 2.979e-05, 2.969e-05, 2.969e-05, 2144.56293119], [1517278920000, 2.968e-05, 2.977e-05, 2.968e-05, 2.977e-05, 5664.9860381], [1517278980000, 2.969e-05, 2.969e-05, 2.969e-05, 2.969e-05, 3600.0], [1517279040000, 2.969e-05, 2.969e-05, 2.969e-05, 2.969e-05, 1168.25974403], [1517279100000, 2.977e-05, 2.977e-05, 2.977e-05, 2.977e-05, 16823.32994613], [1517279160000, 2.977e-05, 2.977e-05, 2.97e-05, 2.97e-05, 4028.52074941], [1517279220000, 2.971e-05, 2.977e-05, 2.971e-05, 2.977e-05, 189.66045548], [1517279280000, 2.977e-05, 2.979e-05, 2.977e-05, 2.979e-05, 20000.0], [1517279340000, 2.979e-05, 2.979e-05, 2.979e-05, 2.979e-05, 1170.52049299], [1517279400000, 2.973e-05, 2.973e-05, 2.971e-05, 2.971e-05, 6033.06570766], [1517279460000, 2.971e-05, 2.98e-05, 2.971e-05, 2.98e-05, 44918.60136038], [1517279520000, 2.977e-05, 2.977e-05, 2.977e-05, 2.977e-05, 43.28918404], [1517279580000, 2.977e-05, 2.977e-05, 2.977e-05, 2.977e-05, 12022.03817838], [1517279700000, 2.972e-05, 2.977e-05, 2.97e-05, 2.97e-05, 7562.54279581], [1517279760000, 2.97e-05, 2.97e-05, 2.968e-05, 2.968e-05, 5815.11238122], [1517279820000, 2.967e-05, 2.967e-05, 2.966e-05, 2.966e-05, 8809.03116605], [1517279880000, 2.966e-05, 2.966e-05, 2.965e-05, 2.965e-05, 3140.90146502], [1517279940000, 2.954e-05, 2.954e-05, 2.954e-05, 2.954e-05, 114.12693812], [1517280000000, 2.954e-05, 2.954e-05, 2.953e-05, 2.953e-05, 13829.91264688], [1517280060000, 2.954e-05, 2.954e-05, 2.952e-05, 2.952e-05, 7794.63686128], [1517280120000, 2.952e-05, 2.952e-05, 2.952e-05, 2.952e-05, 4179.75890136], [1517280180000, 2.952e-05, 2.989e-05, 2.952e-05, 2.989e-05, 3931.15654983], [1517280240000, 2.953e-05, 2.953e-05, 2.953e-05, 2.953e-05, 82.60056128], [1517280300000, 2.964e-05, 2.964e-05, 2.964e-05, 2.964e-05, 389.43873128], [1517280360000, 2.964e-05, 2.964e-05, 2.964e-05, 2.964e-05, 300.0], [1517280420000, 2.964e-05, 2.964e-05, 2.964e-05, 2.964e-05, 4936.96799544], [1517280480000, 2.955e-05, 2.955e-05, 2.954e-05, 2.954e-05, 95.19749764], [1517280540000, 2.954e-05, 2.988e-05, 2.953e-05, 2.975e-05, 33113.2651013], [1517280600000, 2.976e-05, 2.976e-05, 2.976e-05, 2.976e-05, 6075.38335433], [1517280720000, 2.976e-05, 2.976e-05, 2.959e-05, 2.959e-05, 9733.48305868], [1517280780000, 2.959e-05, 2.959e-05, 2.959e-05, 2.959e-05, 10926.39279422], [1517280840000, 2.96e-05, 2.96e-05, 2.959e-05, 2.959e-05, 906.27594396], [1517280900000, 2.962e-05, 2.962e-05, 2.962e-05, 2.962e-05, 144.63976495], [1517280960000, 2.961e-05, 2.961e-05, 2.961e-05, 2.961e-05, 1032.9002179], [1517281020000, 2.961e-05, 2.976e-05, 2.961e-05, 2.976e-05, 4472.34432935], [1517281080000, 2.962e-05, 2.962e-05, 2.961e-05, 2.962e-05, 1185.56621089], [1517281140000, 2.976e-05, 2.976e-05, 2.976e-05, 2.976e-05, 50.4032258], [1517281260000, 2.974e-05, 2.975e-05, 2.959e-05, 2.959e-05, 95720.83720434], [1517281320000, 2.959e-05, 2.959e-05, 2.959e-05, 2.959e-05, 533.7973264], [1517281380000, 2.959e-05, 2.959e-05, 2.958e-05, 2.958e-05, 2415.09611139], [1517281440000, 2.958e-05, 2.958e-05, 2.956e-05, 2.956e-05, 3808.91156366], [1517281500000, 2.956e-05, 2.956e-05, 2.955e-05, 2.955e-05, 11012.10555017], [1517281560000, 2.955e-05, 2.955e-05, 2.95e-05, 2.95e-05, 40009.53337794], [1517281620000, 2.95e-05, 2.951e-05, 2.945e-05, 2.951e-05, 24532.90881946], [1517281680000, 2.951e-05, 2.951e-05, 2.951e-05, 2.951e-05, 708.99343811], [1517281740000, 2.951e-05, 2.951e-05, 2.951e-05, 2.951e-05, 2169.19285871], [1517281800000, 2.951e-05, 2.955e-05, 2.951e-05, 2.955e-05, 13118.06878487], [1517281860000, 2.955e-05, 2.955e-05, 2.954e-05, 2.954e-05, 833.07971385], [1517281920000, 2.951e-05, 2.954e-05, 2.95e-05, 2.954e-05, 4266.61471502], [1517281980000, 2.954e-05, 2.963e-05, 2.939e-05, 2.963e-05, 30897.83976462], [1517282100000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 14119.09845004], [1517282160000, 2.95e-05, 2.95e-05, 2.939e-05, 2.939e-05, 23979.59723615], [1517282220000, 2.946e-05, 2.946e-05, 2.946e-05, 2.946e-05, 2585.14088459], [1517282280000, 2.95e-05, 2.952e-05, 2.95e-05, 2.95e-05, 9830.63299399], [1517282340000, 2.95e-05, 2.95e-05, 2.95e-05, 2.95e-05, 7264.73738833], [1517282400000, 2.948e-05, 2.948e-05, 2.933e-05, 2.933e-05, 13207.33650946], [1517282460000, 2.934e-05, 2.934e-05, 2.934e-05, 2.934e-05, 1654.34975711], [1517282580000, 2.934e-05, 2.934e-05, 2.933e-05, 2.933e-05, 24232.1481963], [1517282640000, 2.934e-05, 2.948e-05, 2.934e-05, 2.948e-05, 2339.3179101], [1517282700000, 2.938e-05, 2.938e-05, 2.934e-05, 2.935e-05, 5449.61077195], [1517282820000, 2.934e-05, 2.948e-05, 2.934e-05, 2.948e-05, 831.22301633], [1517282880000, 2.948e-05, 2.948e-05, 2.948e-05, 2.948e-05, 46.05726186], [1517282940000, 2.935e-05, 2.935e-05, 2.933e-05, 2.933e-05, 13460.11716408], [1517283000000, 2.934e-05, 2.935e-05, 2.934e-05, 2.935e-05, 18148.68835792], [1517283060000, 2.937e-05, 2.947e-05, 2.935e-05, 2.947e-05, 3059.52902065], [1517283120000, 2.944e-05, 2.944e-05, 2.944e-05, 2.944e-05, 108.02559261], [1517283180000, 2.937e-05, 2.937e-05, 2.936e-05, 2.937e-05, 6472.46588802], [1517283240000, 2.937e-05, 2.94e-05, 2.937e-05, 2.937e-05, 10899.58431126], [1517283300000, 2.941e-05, 2.945e-05, 2.941e-05, 2.941e-05, 3977.40741861], [1517283360000, 2.945e-05, 2.945e-05, 2.941e-05, 2.941e-05, 1785.3406849], [1517283420000, 2.941e-05, 2.941e-05, 2.937e-05, 2.94e-05, 4191.06240768], [1517283480000, 2.94e-05, 2.94e-05, 2.938e-05, 2.938e-05, 4956.37448779], [1517283540000, 2.939e-05, 2.939e-05, 2.939e-05, 2.939e-05, 1000.0], [1517283600000, 2.939e-05, 2.94e-05, 2.939e-05, 2.94e-05, 41515.72333817], [1517283660000, 2.94e-05, 2.94e-05, 2.939e-05, 2.939e-05, 5388.85655545], [1517283720000, 2.94e-05, 2.94e-05, 2.939e-05, 2.94e-05, 952.90936304], [1517283780000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 33961.17085334], [1517283900000, 2.939e-05, 2.94e-05, 2.939e-05, 2.94e-05, 3334.34662972], [1517283960000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 59.0], [1517284020000, 2.94e-05, 2.941e-05, 2.939e-05, 2.941e-05, 8940.87036536], [1517284080000, 2.941e-05, 2.95e-05, 2.939e-05, 2.95e-05, 12760.08827817], [1517284140000, 2.941e-05, 2.941e-05, 2.941e-05, 2.941e-05, 432.36979724], [1517284200000, 2.942e-05, 2.943e-05, 2.941e-05, 2.943e-05, 4751.95306617], [1517284260000, 2.941e-05, 2.943e-05, 2.94e-05, 2.943e-05, 6171.76930284], [1517284320000, 2.943e-05, 2.945e-05, 2.939e-05, 2.939e-05, 18639.95934136], [1517284380000, 2.939e-05, 2.943e-05, 2.939e-05, 2.943e-05, 4053.09528974], [1517284440000, 2.95e-05, 2.95e-05, 2.943e-05, 2.943e-05, 14753.93082061], [1517284500000, 2.943e-05, 2.943e-05, 2.94e-05, 2.94e-05, 1126.66916956], [1517284560000, 2.94e-05, 2.949e-05, 2.94e-05, 2.949e-05, 1376.83074484], [1517284620000, 2.949e-05, 2.949e-05, 2.94e-05, 2.94e-05, 3236.44476944], [1517284680000, 2.94e-05, 2.94e-05, 2.94e-05, 2.94e-05, 349.77632662], [1517284740000, 2.941e-05, 2.941e-05, 2.94e-05, 2.94e-05, 26716.60098483], [1517284800000, 2.945e-05, 2.949e-05, 2.945e-05, 2.945e-05, 427.71054261], [1517284860000, 2.945e-05, 2.949e-05, 2.945e-05, 2.948e-05, 8303.39636676], [1517284920000, 2.948e-05, 2.948e-05, 2.94e-05, 2.94e-05, 748.2070768], [1517284980000, 2.94e-05, 2.941e-05, 2.94e-05, 2.94e-05, 2586.03098333], [1517285040000, 2.94e-05, 2.947e-05, 2.94e-05, 2.941e-05, 22215.80426427], [1517285100000, 2.947e-05, 2.947e-05, 2.947e-05, 2.947e-05, 120.0], [1517285160000, 2.946e-05, 2.947e-05, 2.942e-05, 2.942e-05, 8921.44954987], [1517285220000, 2.943e-05, 2.948e-05, 2.942e-05, 2.948e-05, 14597.22861538], [1517285280000, 2.948e-05, 2.948e-05, 2.948e-05, 2.948e-05, 265.7115691], [1517285340000, 2.942e-05, 2.948e-05, 2.942e-05, 2.948e-05, 17854.15664535], [1517285400000, 2.942e-05, 2.942e-05, 2.942e-05, 2.942e-05, 46.43544295], [1517285520000, 2.943e-05, 2.943e-05, 2.943e-05, 2.943e-05, 674.79335318], [1517285580000, 2.943e-05, 2.943e-05, 2.943e-05, 2.943e-05, 2369.31180479], [1517285640000, 2.945e-05, 2.945e-05, 2.945e-05, 2.945e-05, 200.0], [1517285700000, 2.945e-05, 2.95e-05, 2.945e-05, 2.945e-05, 21009.02430963], [1517285760000, 2.945e-05, 2.947e-05, 2.945e-05, 2.946e-05, 3445.89071933], [1517285820000, 2.947e-05, 2.947e-05, 2.947e-05, 2.947e-05, 941.39511518], [1517285880000, 2.947e-05, 2.95e-05, 2.947e-05, 2.95e-05, 5452.23155043], [1517285940000, 2.962e-05, 2.962e-05, 2.954e-05, 2.962e-05, 28081.64100156], [1517286000000, 2.955e-05, 2.962e-05, 2.955e-05, 2.962e-05, 10803.80945761], [1517286060000, 2.963e-05, 2.967e-05, 2.963e-05, 2.964e-05, 7989.3891919], [1517286120000, 2.961e-05, 2.963e-05, 2.961e-05, 2.963e-05, 2145.90498713], [1517286180000, 2.967e-05, 2.967e-05, 2.967e-05, 2.967e-05, 7405.2761591], [1517286240000, 2.967e-05, 2.98e-05, 2.967e-05, 2.98e-05, 20832.05500131], [1517286300000, 2.98e-05, 2.981e-05, 2.98e-05, 2.981e-05, 2521.73188758], [1517286360000, 2.976e-05, 2.979e-05, 2.976e-05, 2.979e-05, 1578.48385478], [1517286420000, 2.968e-05, 2.976e-05, 2.967e-05, 2.975e-05, 10259.69456241], [1517286480000, 2.974e-05, 2.974e-05, 2.968e-05, 2.968e-05, 176.53607367], [1517286540000, 2.974e-05, 2.974e-05, 2.968e-05, 2.972e-05, 6146.71277368], [1517286600000, 2.969e-05, 2.969e-05, 2.969e-05, 2.969e-05, 13317.13611684], [1517286660000, 2.968e-05, 2.972e-05, 2.968e-05, 2.972e-05, 65652.69905215], [1517286720000, 2.974e-05, 2.975e-05, 2.972e-05, 2.972e-05, 5013.12673731], [1517286780000, 2.975e-05, 2.975e-05, 2.974e-05, 2.975e-05, 3599.63950087], [1517286840000, 2.975e-05, 2.975e-05, 2.975e-05, 2.975e-05, 77.32254849], [1517286900000, 2.976e-05, 2.976e-05, 2.976e-05, 2.976e-05, 906.53138658], [1517286960000, 2.976e-05, 2.989e-05, 2.976e-05, 2.989e-05, 6043.31859249], [1517287020000, 2.989e-05, 2.999e-05, 2.975e-05, 2.975e-05, 9367.89006536], [1517287080000, 2.975e-05, 2.997e-05, 2.975e-05, 2.997e-05, 14270.08761932], [1517287140000, 2.996e-05, 3e-05, 2.996e-05, 3e-05, 9116.7657158], [1517287200000, 2.999e-05, 3e-05, 2.999e-05, 3e-05, 28766.58150263], [1517287260000, 3e-05, 3.009e-05, 2.976e-05, 2.976e-05, 17865.9473056], [1517287320000, 2.996e-05, 3.002e-05, 2.996e-05, 3.002e-05, 7530.85248972], [1517287380000, 3.005e-05, 3.009e-05, 3.001e-05, 3.007e-05, 22430.70986021], [1517287440000, 3.001e-05, 3.007e-05, 3.001e-05, 3.007e-05, 4963.90421007], [1517287500000, 3.007e-05, 3.011e-05, 3.001e-05, 3.001e-05, 9972.9188985], [1517287560000, 3.001e-05, 3.01e-05, 3.001e-05, 3.01e-05, 2314.75064418], [1517287620000, 3.001e-05, 3.01e-05, 3.001e-05, 3.01e-05, 2651.83743626], [1517287680000, 3.01e-05, 3.017e-05, 3.01e-05, 3.017e-05, 38837.2337784], [1517287740000, 3.011e-05, 3.011e-05, 3.001e-05, 3.001e-05, 15446.46516363], [1517287800000, 3.001e-05, 3.011e-05, 3.001e-05, 3.009e-05, 22982.16563848]]
\ No newline at end of file
diff --git a/tests/testdata/POWR_BTC-1m.json b/tests/testdata/POWR_BTC-1m.json
deleted file mode 100644
index 51f695410..000000000
--- a/tests/testdata/POWR_BTC-1m.json
+++ /dev/null
@@ -1 +0,0 @@
-[[1516424040000, 9.818e-05, 9.87e-05, 9.801e-05, 9.802e-05, 3539.49175676], [1516424100000, 9.802e-05, 9.86e-05, 9.802e-05, 9.86e-05, 2012.26843074], [1516424160000, 9.86e-05, 9.889e-05, 9.801e-05, 9.857e-05, 23734.07845859], [1516424220000, 9.857e-05, 9.888e-05, 9.801e-05, 9.801e-05, 20263.65586172], [1516424280000, 9.801e-05, 9.857e-05, 9.784e-05, 9.784e-05, 35820.90546236], [1516424340000, 9.784e-05, 9.8e-05, 9.768e-05, 9.77e-05, 21528.49140176], [1516424400000, 9.798e-05, 9.798e-05, 9.587e-05, 9.587e-05, 34452.24349116], [1516424460000, 9.586e-05, 9.782e-05, 9.586e-05, 9.769e-05, 6633.05565666], [1516424520000, 9.767e-05, 9.767e-05, 9.586e-05, 9.738e-05, 8601.02670466], [1516424580000, 9.736e-05, 9.738e-05, 9.516e-05, 9.72e-05, 56757.27248501], [1516424640000, 9.7e-05, 9.713e-05, 9.513e-05, 9.513e-05, 67114.73801055], [1516424700000, 9.513e-05, 9.695e-05, 9.51e-05, 9.51e-05, 127552.86805074], [1516424760000, 9.513e-05, 9.662e-05, 9.5e-05, 9.501e-05, 71311.96968828], [1516424820000, 9.515e-05, 9.634e-05, 9.5e-05, 9.601e-05, 36275.52319317], [1516424880000, 9.602e-05, 9.665e-05, 9.543e-05, 9.586e-05, 21671.25353605], [1516424940000, 9.586e-05, 9.659e-05, 9.532e-05, 9.532e-05, 3556.7875041], [1516425000000, 9.537e-05, 9.638e-05, 9.517e-05, 9.63e-05, 10731.82069499], [1516425060000, 9.599e-05, 9.599e-05, 9.528e-05, 9.528e-05, 36256.82399475], [1516425120000, 9.53e-05, 9.531e-05, 9.53e-05, 9.531e-05, 2036.33225017], [1516425180000, 9.607e-05, 9.607e-05, 9.535e-05, 9.535e-05, 1855.20562227], [1516425240000, 9.535e-05, 9.57e-05, 9.535e-05, 9.54e-05, 4794.89701325], [1516425300000, 9.54e-05, 9.57e-05, 9.535e-05, 9.54e-05, 2114.27635325], [1516425360000, 9.54e-05, 9.54e-05, 9.53e-05, 9.54e-05, 5440.09036219], [1516425420000, 9.54e-05, 9.57e-05, 9.54e-05, 9.54e-05, 7234.8978486], [1516425480000, 9.54e-05, 9.57e-05, 9.54e-05, 9.57e-05, 21359.65884125], [1516425540000, 9.603e-05, 9.609e-05, 9.57e-05, 9.609e-05, 1095.90095454], [1516425600000, 9.607e-05, 9.61e-05, 9.607e-05, 9.61e-05, 1933.90968303], [1516425660000, 9.606e-05, 9.606e-05, 9.57e-05, 9.57e-05, 2424.04579449], [1516425720000, 9.57e-05, 9.57e-05, 9.525e-05, 9.559e-05, 6615.39312031], [1516425780000, 9.559e-05, 9.57e-05, 9.559e-05, 9.57e-05, 8957.98480478], [1516425840000, 9.57e-05, 9.61e-05, 9.57e-05, 9.61e-05, 2082.09353173], [1516425900000, 9.57e-05, 9.606e-05, 9.57e-05, 9.606e-05, 109.25986156], [1516425960000, 9.606e-05, 9.61e-05, 9.606e-05, 9.608e-05, 2438.46808691], [1516426020000, 9.608e-05, 9.61e-05, 9.502e-05, 9.502e-05, 20716.15474243], [1516426080000, 9.582e-05, 9.606e-05, 9.506e-05, 9.6e-05, 54138.38465687], [1516426140000, 9.6e-05, 9.685e-05, 9.51e-05, 9.685e-05, 28597.98655159], [1516426200000, 9.663e-05, 9.808e-05, 9.59e-05, 9.656e-05, 47712.71259613], [1516426260000, 9.677e-05, 9.907e-05, 9.554e-05, 9.738e-05, 44093.87454515], [1516426320000, 9.782e-05, 9.95e-05, 9.675e-05, 9.865e-05, 18151.2594708], [1516426380000, 9.775e-05, 9.775e-05, 9.775e-05, 9.775e-05, 1053.07101854], [1516426440000, 9.835e-05, 9.865e-05, 9.533e-05, 9.775e-05, 21989.35772335], [1516426500000, 9.775e-05, 9.775e-05, 9.704e-05, 9.775e-05, 2862.50154701], [1516426560000, 9.775e-05, 9.775e-05, 9.753e-05, 9.753e-05, 3183.7141766], [1516426620000, 9.774e-05, 9.775e-05, 9.559e-05, 9.581e-05, 29838.50553554], [1516426680000, 9.699e-05, 9.699e-05, 9.581e-05, 9.671e-05, 5629.58813798], [1516426740000, 9.671e-05, 9.681e-05, 9.57e-05, 9.571e-05, 18662.37541923], [1516426800000, 9.571e-05, 9.645e-05, 9.569e-05, 9.645e-05, 8434.27162851], [1516426860000, 9.581e-05, 9.645e-05, 9.581e-05, 9.642e-05, 14157.28898866], [1516426920000, 9.64e-05, 9.683e-05, 9.588e-05, 9.588e-05, 7057.31078653], [1516426980000, 9.59e-05, 9.59e-05, 9.582e-05, 9.584e-05, 1531.46468801], [1516427040000, 9.598e-05, 9.683e-05, 9.582e-05, 9.598e-05, 7475.28753958], [1516427100000, 9.598e-05, 9.666e-05, 9.582e-05, 9.582e-05, 9566.34866717], [1516427220000, 9.571e-05, 9.652e-05, 9.538e-05, 9.56e-05, 93487.30620757], [1516427280000, 9.559e-05, 9.56e-05, 9.515e-05, 9.515e-05, 5594.60975676], [1516427340000, 9.554e-05, 9.559e-05, 9.516e-05, 9.559e-05, 10932.02928279], [1516427400000, 9.559e-05, 9.574e-05, 9.499e-05, 9.5e-05, 138749.6811285], [1516427460000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 13123.06441652], [1516427520000, 9.598e-05, 9.658e-05, 9.56e-05, 9.658e-05, 1302.78428582], [1516427580000, 9.656e-05, 9.668e-05, 9.564e-05, 9.565e-05, 7539.18805799], [1516427640000, 9.668e-05, 9.668e-05, 9.57e-05, 9.668e-05, 67.12909099], [1516427700000, 9.581e-05, 9.581e-05, 9.58e-05, 9.58e-05, 2748.34249836], [1516427760000, 9.58e-05, 9.595e-05, 9.58e-05, 9.595e-05, 1121.19802465], [1516427820000, 9.595e-05, 9.666e-05, 9.55e-05, 9.595e-05, 67002.09842516], [1516427880000, 9.595e-05, 9.595e-05, 9.503e-05, 9.592e-05, 21628.76062324], [1516427940000, 9.59e-05, 9.595e-05, 9.504e-05, 9.595e-05, 15183.50779955], [1516428000000, 9.509e-05, 9.595e-05, 9.509e-05, 9.595e-05, 8247.61350583], [1516428060000, 9.595e-05, 9.595e-05, 9.595e-05, 9.595e-05, 983.28250267], [1516428120000, 9.521e-05, 9.668e-05, 9.521e-05, 9.668e-05, 11079.27888518], [1516428180000, 9.667e-05, 9.668e-05, 9.535e-05, 9.668e-05, 7528.30776692], [1516428240000, 9.668e-05, 9.681e-05, 9.613e-05, 9.681e-05, 13814.85353259], [1516428300000, 9.681e-05, 9.681e-05, 9.57e-05, 9.57e-05, 20.14238772], [1516428360000, 9.67e-05, 9.729e-05, 9.67e-05, 9.729e-05, 7621.03377257], [1516428420000, 9.729e-05, 9.729e-05, 9.66e-05, 9.682e-05, 3898.22012684], [1516428480000, 9.712e-05, 9.855e-05, 9.684e-05, 9.855e-05, 2121.95364633], [1516428540000, 9.855e-05, 9.858e-05, 9.758e-05, 9.76e-05, 17472.85808825], [1516428600000, 9.76e-05, 9.841e-05, 9.756e-05, 9.841e-05, 334.83148427], [1516428660000, 9.841e-05, 9.843e-05, 9.836e-05, 9.836e-05, 1399.23778959], [1516428720000, 9.766e-05, 9.766e-05, 9.766e-05, 9.766e-05, 96.74502354], [1516428780000, 9.769e-05, 9.82e-05, 9.566e-05, 9.82e-05, 12233.71027281], [1516428840000, 9.82e-05, 9.85e-05, 9.8e-05, 9.85e-05, 822.76128126], [1516428900000, 9.848e-05, 9.85e-05, 9.59e-05, 9.793e-05, 5046.87390042], [1516428960000, 9.787e-05, 9.787e-05, 9.669e-05, 9.776e-05, 873.3059434], [1516429020000, 9.772e-05, 9.799e-05, 9.686e-05, 9.792e-05, 2719.24157163], [1516429080000, 9.786e-05, 9.786e-05, 9.71e-05, 9.71e-05, 1891.25748842], [1516429140000, 9.782e-05, 9.782e-05, 9.782e-05, 9.782e-05, 279.23291865], [1516429200000, 9.779e-05, 9.796e-05, 9.71e-05, 9.71e-05, 2128.46110232], [1516429260000, 9.77e-05, 9.8e-05, 9.77e-05, 9.8e-05, 3817.5209004], [1516429320000, 9.841e-05, 9.842e-05, 9.779e-05, 9.779e-05, 391.20340091], [1516429380000, 9.781e-05, 9.86e-05, 9.771e-05, 9.773e-05, 11913.91731961], [1516429440000, 9.858e-05, 9.858e-05, 9.783e-05, 9.783e-05, 79.39685371], [1516429500000, 9.775e-05, 9.86e-05, 9.774e-05, 9.86e-05, 152.24401542], [1516429560000, 9.878e-05, 9.879e-05, 9.782e-05, 9.879e-05, 15559.85358109], [1516429620000, 9.8e-05, 9.8e-05, 9.8e-05, 9.8e-05, 1017.85714286], [1516429680000, 9.866e-05, 9.866e-05, 9.866e-05, 9.866e-05, 105.0], [1516429740000, 9.802e-05, 9.802e-05, 9.8e-05, 9.8e-05, 100.0], [1516429800000, 9.848e-05, 9.848e-05, 9.848e-05, 9.848e-05, 127.02374467], [1516429860000, 9.848e-05, 9.863e-05, 9.802e-05, 9.802e-05, 2776.5639534], [1516429920000, 9.803e-05, 9.858e-05, 9.802e-05, 9.857e-05, 1959.28200859], [1516429980000, 9.817e-05, 9.857e-05, 9.817e-05, 9.857e-05, 520.92032648], [1516430040000, 9.855e-05, 9.855e-05, 9.855e-05, 9.855e-05, 20.2435312], [1516430100000, 9.845e-05, 9.9e-05, 9.824e-05, 9.9e-05, 11982.76030421], [1516430160000, 9.823e-05, 9.891e-05, 9.823e-05, 9.891e-05, 1313.92580183], [1516430220000, 9.886e-05, 9.886e-05, 9.88e-05, 9.881e-05, 1212.52092534], [1516430280000, 9.876e-05, 9.878e-05, 9.876e-05, 9.878e-05, 201.50709149], [1516430340000, 9.867e-05, 9.88e-05, 9.826e-05, 9.829e-05, 14804.33065172], [1516430400000, 9.878e-05, 9.9e-05, 9.83e-05, 9.89e-05, 4109.34644256], [1516430460000, 9.9e-05, 9.904e-05, 9.875e-05, 9.875e-05, 1136.78128395], [1516430520000, 9.95e-05, 9.986e-05, 9.876e-05, 9.878e-05, 2224.53450405], [1516430640000, 9.877e-05, 9.878e-05, 9.877e-05, 9.878e-05, 105.69053708], [1516430700000, 9.881e-05, 9.963e-05, 9.88e-05, 9.963e-05, 3042.62609097], [1516430760000, 9.961e-05, 9.983e-05, 9.88e-05, 9.88e-05, 1902.3109434], [1516430820000, 9.88e-05, 9.99e-05, 9.875e-05, 9.875e-05, 1676.9697563], [1516430940000, 9.974e-05, 9.984e-05, 9.882e-05, 9.984e-05, 173.41280553], [1516431000000, 9.894e-05, 9.979e-05, 9.894e-05, 9.977e-05, 3531.61075674], [1516431060000, 9.977e-05, 0.00010039, 9.9e-05, 9.9e-05, 11595.58183784], [1516431120000, 9.895e-05, 9.97e-05, 9.895e-05, 9.967e-05, 2522.87815127], [1516431180000, 9.967e-05, 9.967e-05, 9.967e-05, 9.967e-05, 300.99327781], [1516431240000, 9.966e-05, 9.966e-05, 9.966e-05, 9.966e-05, 37.67163177], [1516431300000, 9.897e-05, 9.955e-05, 9.896e-05, 9.955e-05, 1633.25072105], [1516431420000, 9.901e-05, 9.901e-05, 9.901e-05, 9.901e-05, 30.14846985], [1516431480000, 9.967e-05, 9.967e-05, 9.967e-05, 9.967e-05, 178.41138683], [1516431540000, 9.97e-05, 9.97e-05, 9.97e-05, 9.97e-05, 20.65484218], [1516431600000, 9.969e-05, 0.00010039, 9.969e-05, 0.00010039, 627.01399158], [1516431660000, 0.00010011, 0.00010011, 9.94e-05, 9.94e-05, 262.18444221], [1516431720000, 0.00010029, 0.00010029, 9.94e-05, 9.94e-05, 80.18118408], [1516431780000, 9.94e-05, 9.99e-05, 9.94e-05, 9.94e-05, 634.75544258], [1516431840000, 9.94e-05, 9.94e-05, 9.899e-05, 9.899e-05, 1712.21505738], [1516431900000, 9.95e-05, 9.99e-05, 9.897e-05, 9.897e-05, 282.78851477], [1516431960000, 9.898e-05, 9.988e-05, 9.898e-05, 9.899e-05, 535.10515581], [1516432020000, 9.899e-05, 9.982e-05, 9.895e-05, 9.895e-05, 919.71164519], [1516432080000, 9.895e-05, 9.895e-05, 9.848e-05, 9.849e-05, 2283.03520603], [1516432140000, 9.852e-05, 9.852e-05, 9.848e-05, 9.852e-05, 2391.9731405], [1516432200000, 9.901e-05, 9.901e-05, 9.901e-05, 9.901e-05, 191.7493947], [1516432260000, 9.901e-05, 9.902e-05, 9.869e-05, 9.869e-05, 1062.3532843], [1516432320000, 9.871e-05, 9.872e-05, 9.869e-05, 9.869e-05, 4540.05300569], [1516432440000, 9.869e-05, 9.947e-05, 9.869e-05, 9.946e-05, 1336.03274696], [1516432500000, 9.946e-05, 9.946e-05, 9.869e-05, 9.938e-05, 1127.55821706], [1516432560000, 9.87e-05, 9.931e-05, 9.608e-05, 9.863e-05, 20354.96110718], [1516432680000, 9.861e-05, 9.861e-05, 9.655e-05, 9.861e-05, 3097.5953275], [1516432740000, 9.858e-05, 9.858e-05, 9.708e-05, 9.718e-05, 4047.87992663], [1516432800000, 9.735e-05, 9.74e-05, 9.735e-05, 9.74e-05, 52.11526094], [1516432860000, 9.764e-05, 9.82e-05, 9.629e-05, 9.82e-05, 10244.39431032], [1516432920000, 9.748e-05, 9.851e-05, 9.748e-05, 9.851e-05, 1672.02974615], [1516432980000, 9.848e-05, 9.851e-05, 9.848e-05, 9.848e-05, 2222.2087936], [1516433040000, 9.849e-05, 9.849e-05, 9.849e-05, 9.849e-05, 3534.00390787], [1516433100000, 9.848e-05, 9.861e-05, 9.848e-05, 9.861e-05, 4693.10157825], [1516433160000, 9.901e-05, 9.909e-05, 9.901e-05, 9.909e-05, 326.55829844], [1516433220000, 9.909e-05, 9.909e-05, 9.848e-05, 9.848e-05, 2135.57287893], [1516433280000, 9.909e-05, 9.909e-05, 9.909e-05, 9.909e-05, 295.09387046], [1516433340000, 9.909e-05, 9.909e-05, 9.909e-05, 9.909e-05, 452.21175925], [1516433400000, 9.909e-05, 9.91e-05, 9.882e-05, 9.902e-05, 11674.09604096], [1516433460000, 9.957e-05, 9.961e-05, 9.891e-05, 9.901e-05, 52.76222593], [1516433520000, 9.912e-05, 9.961e-05, 9.912e-05, 9.961e-05, 353.68756828], [1516433580000, 9.961e-05, 9.961e-05, 9.961e-05, 9.961e-05, 29.38207877], [1516433640000, 9.96e-05, 9.961e-05, 9.96e-05, 9.961e-05, 2142.79768904], [1516433700000, 9.902e-05, 9.902e-05, 9.902e-05, 9.902e-05, 1602.74936757], [1516433760000, 9.902e-05, 9.902e-05, 9.902e-05, 9.902e-05, 325.41815313], [1516433820000, 9.95e-05, 9.95e-05, 9.902e-05, 9.902e-05, 246.07721932], [1516433880000, 9.902e-05, 9.946e-05, 9.902e-05, 9.945e-05, 337.94498499], [1516433940000, 9.945e-05, 9.945e-05, 9.901e-05, 9.903e-05, 2564.3537342], [1516434000000, 9.891e-05, 9.891e-05, 9.861e-05, 9.861e-05, 69.35141286], [1516434060000, 9.891e-05, 9.891e-05, 9.85e-05, 9.85e-05, 142.27755218], [1516434120000, 9.85e-05, 9.891e-05, 9.85e-05, 9.89e-05, 655.55233381], [1516434180000, 9.89e-05, 9.89e-05, 9.89e-05, 9.89e-05, 6946.59884471], [1516434300000, 9.861e-05, 9.861e-05, 9.861e-05, 9.861e-05, 359.64], [1516434360000, 9.861e-05, 9.861e-05, 9.861e-05, 9.861e-05, 113.70921246], [1516434420000, 9.875e-05, 9.891e-05, 9.875e-05, 9.891e-05, 1109.75921837], [1516434480000, 9.875e-05, 9.875e-05, 9.875e-05, 9.875e-05, 244.982456], [1516434540000, 9.875e-05, 9.903e-05, 9.875e-05, 9.891e-05, 858.42034087], [1516434600000, 9.903e-05, 9.903e-05, 9.875e-05, 9.875e-05, 2367.22840849], [1516434660000, 9.903e-05, 9.961e-05, 9.875e-05, 9.875e-05, 2461.30944645], [1516434720000, 9.876e-05, 9.876e-05, 9.876e-05, 9.876e-05, 397.90873654], [1516434780000, 9.942e-05, 9.942e-05, 9.942e-05, 9.942e-05, 14.75504734], [1516434840000, 9.875e-05, 9.875e-05, 9.875e-05, 9.875e-05, 115.666937], [1516434900000, 9.933e-05, 9.934e-05, 9.933e-05, 9.934e-05, 212.59764711], [1516434960000, 9.876e-05, 9.876e-05, 9.876e-05, 9.876e-05, 916.40724361], [1516435020000, 9.876e-05, 9.876e-05, 9.876e-05, 9.876e-05, 52.01], [1516435080000, 9.919e-05, 9.919e-05, 9.88e-05, 9.88e-05, 2553.61562734], [1516435140000, 9.882e-05, 9.966e-05, 9.882e-05, 9.966e-05, 3279.83475998], [1516435260000, 9.876e-05, 9.954e-05, 9.876e-05, 9.954e-05, 2240.08382569], [1516435320000, 9.95e-05, 9.95e-05, 9.876e-05, 9.876e-05, 105.68092814], [1516435380000, 9.876e-05, 9.945e-05, 9.876e-05, 9.944e-05, 1242.49062897], [1516435440000, 9.885e-05, 9.886e-05, 9.885e-05, 9.886e-05, 341.57634763], [1516435500000, 9.946e-05, 9.948e-05, 9.944e-05, 9.944e-05, 313.13156579], [1516435560000, 9.944e-05, 9.944e-05, 9.944e-05, 9.944e-05, 100.0], [1516435620000, 9.95e-05, 9.951e-05, 9.95e-05, 9.951e-05, 518.02445141], [1516435680000, 9.951e-05, 9.951e-05, 9.95e-05, 9.95e-05, 2409.29252413], [1516435740000, 9.901e-05, 9.901e-05, 9.901e-05, 9.901e-05, 509.75991955], [1516435800000, 9.902e-05, 9.902e-05, 9.902e-05, 9.902e-05, 50.0], [1516435860000, 9.903e-05, 9.948e-05, 9.903e-05, 9.948e-05, 1651.05238286], [1516435920000, 9.947e-05, 9.947e-05, 9.903e-05, 9.903e-05, 611.60396751], [1516435980000, 9.903e-05, 9.944e-05, 9.903e-05, 9.944e-05, 14505.20930856], [1516436040000, 9.94e-05, 9.94e-05, 9.903e-05, 9.903e-05, 30.3734819], [1516436100000, 9.903e-05, 9.93e-05, 9.903e-05, 9.903e-05, 1158.24068427], [1516436160000, 9.902e-05, 9.902e-05, 9.878e-05, 9.878e-05, 3562.44694487], [1516436220000, 9.878e-05, 9.878e-05, 9.877e-05, 9.877e-05, 1947.98916086], [1516436280000, 9.878e-05, 9.878e-05, 9.878e-05, 9.878e-05, 1215.28313427], [1516436340000, 9.903e-05, 9.903e-05, 9.903e-05, 9.903e-05, 322.54531214], [1516436400000, 9.927e-05, 9.927e-05, 9.903e-05, 9.903e-05, 431.9023911], [1516436460000, 9.903e-05, 9.903e-05, 9.903e-05, 9.903e-05, 73.53871239], [1516436520000, 9.903e-05, 9.927e-05, 9.903e-05, 9.927e-05, 2595.4058415], [1516436580000, 9.903e-05, 9.927e-05, 9.903e-05, 9.903e-05, 1772.35894539], [1516436640000, 9.927e-05, 9.927e-05, 9.927e-05, 9.927e-05, 1299.25], [1516436700000, 9.91e-05, 9.91e-05, 9.91e-05, 9.91e-05, 715.96705953], [1516436760000, 9.903e-05, 9.903e-05, 9.903e-05, 9.903e-05, 2435.94893985], [1516436820000, 9.878e-05, 9.878e-05, 9.878e-05, 9.878e-05, 30.0], [1516436940000, 9.88e-05, 9.88e-05, 9.878e-05, 9.878e-05, 77.0], [1516437000000, 9.878e-05, 9.878e-05, 9.878e-05, 9.878e-05, 6.45976623], [1516437060000, 9.879e-05, 9.881e-05, 9.878e-05, 9.878e-05, 5256.00484476], [1516437120000, 9.878e-05, 9.878e-05, 9.878e-05, 9.878e-05, 583.07619588], [1516437180000, 9.909e-05, 9.91e-05, 9.878e-05, 9.878e-05, 2361.07117717], [1516437240000, 9.878e-05, 9.878e-05, 9.878e-05, 9.878e-05, 65.0], [1516437300000, 9.905e-05, 9.905e-05, 9.905e-05, 9.905e-05, 114.85362305], [1516437360000, 9.878e-05, 9.878e-05, 9.878e-05, 9.878e-05, 147.88], [1516437420000, 9.905e-05, 9.91e-05, 9.905e-05, 9.91e-05, 2064.02007735], [1516437540000, 9.91e-05, 9.91e-05, 9.884e-05, 9.884e-05, 290.41365187], [1516437600000, 9.884e-05, 9.91e-05, 9.884e-05, 9.91e-05, 1899.42870355], [1516437660000, 9.91e-05, 9.91e-05, 9.91e-05, 9.91e-05, 130.40495603], [1516437720000, 9.91e-05, 9.91e-05, 9.9e-05, 9.9e-05, 1917.24811937], [1516437780000, 9.885e-05, 9.928e-05, 9.885e-05, 9.885e-05, 13934.09788074], [1516437840000, 9.92e-05, 9.928e-05, 9.884e-05, 9.928e-05, 706.71379018], [1516437900000, 9.884e-05, 9.884e-05, 9.884e-05, 9.884e-05, 59.10812588], [1516437960000, 9.885e-05, 9.885e-05, 9.885e-05, 9.885e-05, 853.34346633], [1516438020000, 9.885e-05, 9.885e-05, 9.885e-05, 9.885e-05, 1287.21405975], [1516438080000, 9.885e-05, 9.885e-05, 9.884e-05, 9.884e-05, 13958.93273778], [1516438140000, 9.884e-05, 9.884e-05, 9.884e-05, 9.884e-05, 53.63913732], [1516438200000, 9.884e-05, 9.885e-05, 9.884e-05, 9.885e-05, 4075.95852142], [1516438260000, 9.885e-05, 9.885e-05, 9.885e-05, 9.885e-05, 1085.31898954], [1516438320000, 9.884e-05, 9.884e-05, 9.878e-05, 9.878e-05, 3252.80993016], [1516438380000, 9.884e-05, 9.884e-05, 9.884e-05, 9.884e-05, 344.16222923], [1516438440000, 9.883e-05, 9.884e-05, 9.879e-05, 9.882e-05, 2325.35309618], [1516438500000, 9.884e-05, 9.884e-05, 9.883e-05, 9.883e-05, 68.95233735], [1516438560000, 9.883e-05, 9.883e-05, 9.883e-05, 9.883e-05, 517.17985132], [1516438620000, 9.883e-05, 9.884e-05, 9.883e-05, 9.884e-05, 1615.1859827], [1516438680000, 9.884e-05, 9.884e-05, 9.883e-05, 9.884e-05, 851.11977953], [1516438740000, 9.883e-05, 9.884e-05, 9.878e-05, 9.878e-05, 1059.68411515], [1516438800000, 9.884e-05, 9.884e-05, 9.884e-05, 9.884e-05, 1000.0], [1516438860000, 9.88e-05, 9.884e-05, 9.878e-05, 9.878e-05, 1042.80822001], [1516438920000, 9.878e-05, 9.884e-05, 9.877e-05, 9.884e-05, 11113.29704496], [1516438980000, 9.877e-05, 9.877e-05, 9.86e-05, 9.86e-05, 760.8446105], [1516439040000, 9.861e-05, 9.861e-05, 9.861e-05, 9.861e-05, 334.257685], [1516439100000, 9.861e-05, 9.877e-05, 9.83e-05, 9.849e-05, 1033.51533907], [1516439160000, 9.8e-05, 9.8e-05, 9.8e-05, 9.8e-05, 50.05818573], [1516439220000, 9.839e-05, 9.839e-05, 9.73e-05, 9.731e-05, 902.44880734], [1516439280000, 9.731e-05, 9.83e-05, 9.731e-05, 9.83e-05, 2007.91050835], [1516439340000, 9.749e-05, 9.849e-05, 9.749e-05, 9.849e-05, 5494.51524518], [1516439400000, 9.877e-05, 9.926e-05, 9.877e-05, 9.924e-05, 1468.47414608], [1516439520000, 9.801e-05, 9.924e-05, 9.76e-05, 9.76e-05, 144.00894302], [1516439580000, 9.798e-05, 9.798e-05, 9.798e-05, 9.798e-05, 79.65242211], [1516439640000, 9.88e-05, 9.88e-05, 9.88e-05, 9.88e-05, 51.8581875], [1516439700000, 9.85e-05, 9.914e-05, 9.85e-05, 9.855e-05, 171.78603625], [1516439760000, 9.911e-05, 9.912e-05, 9.909e-05, 9.909e-05, 29.56496782], [1516439820000, 9.82e-05, 9.913e-05, 9.82e-05, 9.82e-05, 1049.37928612], [1516439880000, 9.824e-05, 9.913e-05, 9.822e-05, 9.825e-05, 2435.05831589], [1516439940000, 9.827e-05, 9.827e-05, 9.826e-05, 9.826e-05, 100.0], [1516440060000, 9.827e-05, 9.827e-05, 9.826e-05, 9.826e-05, 120.67841988], [1516440120000, 9.911e-05, 9.912e-05, 9.826e-05, 9.912e-05, 771.48810039], [1516440180000, 9.912e-05, 9.912e-05, 9.912e-05, 9.912e-05, 76.43049185], [1516440240000, 9.842e-05, 9.842e-05, 9.842e-05, 9.842e-05, 14.71631792], [1516440360000, 9.845e-05, 9.845e-05, 9.842e-05, 9.842e-05, 389.30016129], [1516440420000, 9.909e-05, 9.909e-05, 9.826e-05, 9.826e-05, 1333.79425972], [1516440480000, 9.826e-05, 9.899e-05, 9.825e-05, 9.899e-05, 1312.39116985], [1516440540000, 9.899e-05, 9.899e-05, 9.825e-05, 9.825e-05, 369.29664521], [1516440600000, 9.826e-05, 9.826e-05, 9.826e-05, 9.826e-05, 394.27355966], [1516440660000, 9.899e-05, 9.899e-05, 9.899e-05, 9.899e-05, 160.28561131], [1516440720000, 9.899e-05, 9.899e-05, 9.899e-05, 9.899e-05, 285.76313322], [1516440780000, 9.898e-05, 9.898e-05, 9.898e-05, 9.898e-05, 493.08852397], [1516440840000, 9.845e-05, 9.845e-05, 9.843e-05, 9.843e-05, 40.1691401], [1516440900000, 9.843e-05, 9.843e-05, 9.842e-05, 9.842e-05, 81.25846065], [1516440960000, 9.83e-05, 9.898e-05, 9.83e-05, 9.84e-05, 1220.17189983], [1516441020000, 9.842e-05, 9.898e-05, 9.827e-05, 9.827e-05, 4688.78603616], [1516441140000, 9.898e-05, 9.898e-05, 9.833e-05, 9.833e-05, 46.78112468], [1516441200000, 9.833e-05, 9.833e-05, 9.833e-05, 9.833e-05, 50.0], [1516441260000, 9.833e-05, 9.898e-05, 9.833e-05, 9.898e-05, 809.56696581], [1516441320000, 9.898e-05, 9.898e-05, 9.898e-05, 9.898e-05, 14.42001238], [1516441380000, 9.898e-05, 9.898e-05, 9.898e-05, 9.898e-05, 34.5880753], [1516441440000, 9.84e-05, 9.898e-05, 9.84e-05, 9.898e-05, 33.6577962], [1516441500000, 9.898e-05, 9.898e-05, 9.898e-05, 9.898e-05, 58.62520327], [1516441560000, 9.898e-05, 9.898e-05, 9.89e-05, 9.898e-05, 1658.1045067], [1516441620000, 9.898e-05, 9.898e-05, 9.898e-05, 9.898e-05, 1945.79477817], [1516441680000, 9.833e-05, 9.898e-05, 9.829e-05, 9.829e-05, 2562.15653518], [1516441740000, 9.831e-05, 9.831e-05, 9.831e-05, 9.831e-05, 240.00075649], [1516441800000, 9.831e-05, 9.896e-05, 9.831e-05, 9.896e-05, 157.71586079], [1516441860000, 9.896e-05, 9.896e-05, 9.833e-05, 9.833e-05, 476.52165235], [1516441920000, 9.833e-05, 9.833e-05, 9.831e-05, 9.831e-05, 334.48820311], [1516442040000, 9.831e-05, 9.896e-05, 9.831e-05, 9.896e-05, 198.67163942], [1516442100000, 9.831e-05, 9.896e-05, 9.831e-05, 9.896e-05, 2564.31909357], [1516442160000, 9.874e-05, 9.896e-05, 9.874e-05, 9.877e-05, 428.572952], [1516442220000, 9.877e-05, 9.877e-05, 9.874e-05, 9.874e-05, 4399.96392158], [1516442280000, 9.877e-05, 9.898e-05, 9.877e-05, 9.898e-05, 14739.48296499], [1516442340000, 9.874e-05, 9.874e-05, 9.874e-05, 9.874e-05, 994.0], [1516442400000, 9.874e-05, 9.874e-05, 9.874e-05, 9.874e-05, 380.58323712], [1516442460000, 9.874e-05, 9.874e-05, 9.874e-05, 9.874e-05, 330.87300795], [1516442520000, 9.874e-05, 9.898e-05, 9.874e-05, 9.898e-05, 1125.55659529], [1516442640000, 9.898e-05, 9.899e-05, 9.898e-05, 9.899e-05, 796.67622199], [1516442700000, 9.899e-05, 9.9e-05, 9.875e-05, 9.875e-05, 1634.03838743], [1516442760000, 9.875e-05, 9.9e-05, 9.874e-05, 9.874e-05, 902.09177827], [1516442820000, 9.874e-05, 9.874e-05, 9.874e-05, 9.874e-05, 394.42895538], [1516442880000, 9.853e-05, 9.853e-05, 9.852e-05, 9.853e-05, 238.15644756], [1516442940000, 9.852e-05, 9.852e-05, 9.794e-05, 9.794e-05, 861.45319694], [1516443000000, 9.794e-05, 9.874e-05, 9.794e-05, 9.874e-05, 52.48712716], [1516443060000, 9.874e-05, 9.874e-05, 9.796e-05, 9.796e-05, 238.63399386], [1516443120000, 9.874e-05, 9.874e-05, 9.797e-05, 9.797e-05, 521.61019979], [1516443180000, 9.798e-05, 9.8e-05, 9.797e-05, 9.8e-05, 1209.19549465], [1516443300000, 9.874e-05, 9.874e-05, 9.874e-05, 9.874e-05, 29.40006047], [1516443360000, 9.873e-05, 9.874e-05, 9.798e-05, 9.801e-05, 2059.8139335], [1516443420000, 9.874e-05, 9.874e-05, 9.874e-05, 9.874e-05, 201.57708159], [1516443480000, 9.797e-05, 9.874e-05, 9.797e-05, 9.873e-05, 874.52880102], [1516443540000, 9.873e-05, 9.874e-05, 9.873e-05, 9.874e-05, 62.20791559], [1516443600000, 9.849e-05, 9.874e-05, 9.849e-05, 9.874e-05, 1026.93762336], [1516443660000, 9.874e-05, 9.874e-05, 9.8e-05, 9.849e-05, 90.83873346], [1516443780000, 9.848e-05, 9.848e-05, 9.848e-05, 9.848e-05, 2723.9775251], [1516443960000, 9.807e-05, 9.807e-05, 9.807e-05, 9.807e-05, 9.40511252], [1516444020000, 9.807e-05, 9.807e-05, 9.807e-05, 9.807e-05, 160.0], [1516444080000, 9.809e-05, 9.809e-05, 9.809e-05, 9.809e-05, 30.15513152], [1516444140000, 9.809e-05, 9.81e-05, 9.809e-05, 9.809e-05, 391.49617992], [1516444200000, 9.848e-05, 9.848e-05, 9.809e-05, 9.809e-05, 984.44384286], [1516444260000, 9.848e-05, 9.848e-05, 9.813e-05, 9.813e-05, 70.26550263], [1516444320000, 9.822e-05, 9.822e-05, 9.822e-05, 9.822e-05, 47.41518414], [1516444380000, 9.822e-05, 9.822e-05, 9.822e-05, 9.822e-05, 409.80529218], [1516444500000, 9.848e-05, 9.848e-05, 9.848e-05, 9.848e-05, 200.601003], [1516444560000, 9.815e-05, 9.848e-05, 9.815e-05, 9.848e-05, 123.97510389], [1516444620000, 9.814e-05, 9.848e-05, 9.814e-05, 9.848e-05, 143.15430393], [1516444680000, 9.848e-05, 9.848e-05, 9.848e-05, 9.848e-05, 249.33449472], [1516444740000, 9.848e-05, 9.874e-05, 9.848e-05, 9.849e-05, 1864.79295553], [1516444800000, 9.849e-05, 9.849e-05, 9.849e-05, 9.849e-05, 58.66753908], [1516444860000, 9.848e-05, 9.848e-05, 9.841e-05, 9.841e-05, 100.0], [1516444980000, 9.848e-05, 9.849e-05, 9.848e-05, 9.849e-05, 819.68380037], [1516445040000, 9.848e-05, 9.849e-05, 9.848e-05, 9.849e-05, 85.06709499], [1516445100000, 9.874e-05, 9.874e-05, 9.851e-05, 9.851e-05, 101.60528995], [1516445160000, 9.874e-05, 9.874e-05, 9.874e-05, 9.874e-05, 346.43505773], [1516445220000, 9.853e-05, 9.853e-05, 9.841e-05, 9.841e-05, 2601.29553643], [1516445280000, 9.853e-05, 9.952e-05, 9.812e-05, 9.816e-05, 10781.46470767], [1516445340000, 9.822e-05, 9.834e-05, 9.822e-05, 9.834e-05, 16.59522481], [1516445400000, 9.94e-05, 9.94e-05, 9.94e-05, 9.94e-05, 100.87575843], [1516445460000, 9.837e-05, 9.837e-05, 9.807e-05, 9.807e-05, 1139.35408629], [1516445520000, 9.823e-05, 9.823e-05, 9.815e-05, 9.815e-05, 598.68429194], [1516445580000, 9.85e-05, 9.85e-05, 9.815e-05, 9.85e-05, 343.74965745], [1516445640000, 9.85e-05, 9.899e-05, 9.85e-05, 9.851e-05, 1107.74471704], [1516445700000, 9.897e-05, 9.897e-05, 9.897e-05, 9.897e-05, 175.97343615], [1516445760000, 9.895e-05, 9.895e-05, 9.8e-05, 9.8e-05, 2254.19173161], [1516445820000, 9.814e-05, 9.814e-05, 9.81e-05, 9.81e-05, 3393.34011157], [1516445880000, 9.894e-05, 9.94e-05, 9.894e-05, 9.94e-05, 239.69633636], [1516445940000, 9.89e-05, 9.949e-05, 9.89e-05, 9.94e-05, 3385.45389921], [1516446000000, 9.935e-05, 9.935e-05, 9.935e-05, 9.935e-05, 1442.17283752], [1516446060000, 9.913e-05, 9.913e-05, 9.913e-05, 9.913e-05, 29.07584332], [1516446120000, 9.913e-05, 9.913e-05, 9.913e-05, 9.913e-05, 49.11591355], [1516446180000, 9.838e-05, 9.913e-05, 9.824e-05, 9.913e-05, 1472.09575572], [1516446240000, 9.808e-05, 9.91e-05, 9.808e-05, 9.808e-05, 206.42031783], [1516446300000, 9.904e-05, 9.906e-05, 9.904e-05, 9.906e-05, 166.77232957], [1516446360000, 9.9e-05, 9.901e-05, 9.829e-05, 9.901e-05, 1414.81528057], [1516446420000, 9.901e-05, 9.901e-05, 9.901e-05, 9.901e-05, 230.0], [1516446480000, 9.903e-05, 9.913e-05, 9.903e-05, 9.913e-05, 23630.78847941], [1516446540000, 9.913e-05, 9.913e-05, 9.912e-05, 9.912e-05, 2214.92148044], [1516446600000, 9.913e-05, 9.914e-05, 9.912e-05, 9.912e-05, 6481.15796769], [1516446660000, 9.915e-05, 9.934e-05, 9.915e-05, 9.915e-05, 4384.47296155], [1516446720000, 9.915e-05, 9.934e-05, 9.915e-05, 9.915e-05, 875.41272398], [1516446780000, 9.915e-05, 9.925e-05, 9.915e-05, 9.925e-05, 109.34038301], [1516446840000, 9.925e-05, 9.952e-05, 9.915e-05, 9.936e-05, 10429.0349089], [1516446900000, 9.936e-05, 9.936e-05, 9.915e-05, 9.915e-05, 250.899], [1516446960000, 9.921e-05, 9.953e-05, 9.921e-05, 9.953e-05, 270.23675004], [1516447020000, 9.953e-05, 9.966e-05, 9.923e-05, 9.923e-05, 2145.54855545], [1516447080000, 9.966e-05, 9.98e-05, 9.926e-05, 9.926e-05, 87.93950153], [1516447140000, 9.98e-05, 9.98e-05, 9.98e-05, 9.98e-05, 488.08028555], [1516447200000, 9.98e-05, 0.00010038, 9.929e-05, 9.929e-05, 3177.95758935], [1516447260000, 9.928e-05, 0.00010077, 9.923e-05, 9.923e-05, 4476.91725522], [1516447320000, 0.00010039, 0.00010039, 9.93e-05, 9.996e-05, 638.59308996], [1516447380000, 9.926e-05, 9.997e-05, 9.922e-05, 9.996e-05, 3202.86743239], [1516447440000, 9.996e-05, 9.996e-05, 9.922e-05, 9.922e-05, 1393.75351944], [1516447500000, 0.0001003, 0.00010077, 0.0001003, 0.00010077, 1780.07417229], [1516447560000, 9.932e-05, 0.00010021, 9.932e-05, 0.00010021, 346.6019417], [1516447620000, 0.00010021, 0.00010021, 9.932e-05, 9.936e-05, 3284.55341607], [1516447680000, 9.936e-05, 9.936e-05, 9.936e-05, 9.936e-05, 877.84126126], [1516447740000, 0.00010049, 0.00010049, 0.0001, 0.0001, 111.06150577], [1516447800000, 0.0001, 0.0001, 0.0001, 0.0001, 990.583335], [1516447860000, 9.94e-05, 9.975e-05, 9.939e-05, 9.975e-05, 158.25181774], [1516447920000, 0.0001, 0.0001, 9.976e-05, 9.976e-05, 168.03100299], [1516448040000, 0.00010059, 0.00010073, 9.976e-05, 9.979e-05, 561.7569713], [1516448100000, 9.98e-05, 9.98e-05, 9.979e-05, 9.979e-05, 191.03164814], [1516448160000, 9.98e-05, 9.98e-05, 9.979e-05, 9.979e-05, 1980.03138639], [1516448220000, 9.979e-05, 0.0001007, 9.979e-05, 9.979e-05, 3197.05806497], [1516448280000, 9.979e-05, 9.988e-05, 9.979e-05, 9.979e-05, 775.91111863], [1516448340000, 9.979e-05, 0.0001, 9.979e-05, 0.0001, 1501.46584063], [1516448400000, 9.98e-05, 0.0001, 9.979e-05, 0.0001, 423.87713638], [1516448460000, 9.979e-05, 9.979e-05, 9.979e-05, 9.979e-05, 200.0], [1516448520000, 0.0001, 0.0001, 0.0001, 0.0001, 209.98781858], [1516448580000, 9.979e-05, 0.0001, 9.979e-05, 9.979e-05, 7853.54193286], [1516448700000, 0.0001, 0.0001, 9.979e-05, 9.979e-05, 1124.72533027], [1516448760000, 0.0001005, 0.0001005, 0.0001005, 0.0001005, 34.82810666], [1516448820000, 9.979e-05, 9.979e-05, 9.979e-05, 9.979e-05, 863.0], [1516448880000, 9.979e-05, 0.00010042, 9.861e-05, 0.00010042, 3080.04906008], [1516448940000, 0.00010027, 0.00010027, 0.00010027, 0.00010027, 172.13094079], [1516449000000, 0.00010005, 0.00010006, 9.876e-05, 9.876e-05, 388.0263679], [1516449060000, 0.00010004, 0.00010025, 9.894e-05, 0.00010025, 2095.0532608], [1516449120000, 0.00010017, 0.00010017, 9.898e-05, 9.898e-05, 161.87158989], [1516449180000, 0.00010016, 0.00010016, 9.898e-05, 9.898e-05, 1727.73433818], [1516449240000, 0.00010008, 0.0001001, 9.855e-05, 9.855e-05, 42156.40306785], [1516449300000, 9.89e-05, 9.89e-05, 9.855e-05, 9.855e-05, 4241.87511918], [1516449360000, 9.857e-05, 9.945e-05, 9.855e-05, 9.855e-05, 8402.89996908], [1516449420000, 9.855e-05, 9.86e-05, 9.801e-05, 9.857e-05, 24801.15703191], [1516449480000, 9.795e-05, 9.857e-05, 9.795e-05, 9.795e-05, 8085.80592008], [1516449540000, 9.806e-05, 9.828e-05, 9.795e-05, 9.795e-05, 2256.05596638], [1516449600000, 9.915e-05, 9.961e-05, 9.915e-05, 9.92e-05, 1567.15513344], [1516449660000, 9.916e-05, 9.956e-05, 9.799e-05, 9.946e-05, 27145.45588568], [1516449720000, 9.82e-05, 9.834e-05, 9.82e-05, 9.834e-05, 1729.15924258], [1516449780000, 9.834e-05, 9.935e-05, 9.834e-05, 9.935e-05, 1753.94737873], [1516449840000, 9.846e-05, 9.846e-05, 9.833e-05, 9.833e-05, 1084.74180394], [1516449960000, 9.903e-05, 9.945e-05, 9.903e-05, 9.939e-05, 1605.57326717], [1516450020000, 9.855e-05, 9.855e-05, 9.855e-05, 9.855e-05, 211.8404999], [1516450080000, 9.856e-05, 9.958e-05, 9.855e-05, 9.958e-05, 581.23652675], [1516450140000, 9.856e-05, 9.856e-05, 9.855e-05, 9.856e-05, 586.71392633], [1516450200000, 9.951e-05, 9.951e-05, 9.858e-05, 9.858e-05, 905.51321761], [1516450260000, 9.863e-05, 9.863e-05, 9.861e-05, 9.861e-05, 3350.76289015], [1516450320000, 9.858e-05, 9.858e-05, 9.858e-05, 9.858e-05, 71.4720162], [1516450380000, 9.858e-05, 9.858e-05, 9.858e-05, 9.858e-05, 70.0], [1516450440000, 9.858e-05, 9.922e-05, 9.857e-05, 9.922e-05, 1028.8577094], [1516450500000, 9.913e-05, 9.913e-05, 9.913e-05, 9.913e-05, 261.8017874], [1516450560000, 9.856e-05, 9.914e-05, 9.844e-05, 9.844e-05, 624.2918019], [1516450620000, 9.846e-05, 9.904e-05, 9.846e-05, 9.904e-05, 3615.01972113], [1516450680000, 9.904e-05, 9.904e-05, 9.904e-05, 9.904e-05, 14.76266981], [1516450740000, 9.904e-05, 9.904e-05, 9.904e-05, 9.904e-05, 36.4279337], [1516450800000, 9.836e-05, 9.836e-05, 9.836e-05, 9.836e-05, 200.0], [1516450860000, 9.902e-05, 9.902e-05, 9.839e-05, 9.839e-05, 111.04020791], [1516450920000, 9.839e-05, 9.902e-05, 9.839e-05, 9.902e-05, 277.70851102], [1516450980000, 9.902e-05, 9.902e-05, 9.899e-05, 9.899e-05, 339.16250227], [1516451040000, 9.843e-05, 9.897e-05, 9.805e-05, 9.897e-05, 3250.10004842], [1516451160000, 9.893e-05, 9.893e-05, 9.891e-05, 9.891e-05, 450.76185181], [1516451220000, 9.811e-05, 9.811e-05, 9.809e-05, 9.809e-05, 162.0], [1516451340000, 9.81e-05, 9.81e-05, 9.81e-05, 9.81e-05, 1590.48564854], [1516451520000, 9.88e-05, 9.88e-05, 9.83e-05, 9.83e-05, 7002.93040174], [1516451580000, 9.83e-05, 9.879e-05, 9.821e-05, 9.879e-05, 3320.65596406], [1516451640000, 9.879e-05, 9.879e-05, 9.819e-05, 9.819e-05, 1881.17097468], [1516451820000, 9.82e-05, 9.876e-05, 9.819e-05, 9.876e-05, 306.9070259], [1516451880000, 9.876e-05, 9.876e-05, 9.865e-05, 9.865e-05, 256.019003], [1516451940000, 9.866e-05, 9.866e-05, 9.866e-05, 9.866e-05, 19.43794542], [1516452060000, 9.866e-05, 9.866e-05, 9.825e-05, 9.825e-05, 1689.59029824], [1516452120000, 9.866e-05, 9.866e-05, 9.821e-05, 9.821e-05, 2083.71670108], [1516452180000, 9.866e-05, 9.866e-05, 9.819e-05, 9.819e-05, 1942.53738335], [1516452240000, 9.82e-05, 9.866e-05, 9.82e-05, 9.866e-05, 1047.01892399], [1516452420000, 9.866e-05, 9.875e-05, 9.866e-05, 9.875e-05, 764.86294857], [1516452480000, 9.82e-05, 9.875e-05, 9.819e-05, 9.875e-05, 469.49247371], [1516452600000, 9.875e-05, 9.875e-05, 9.875e-05, 9.875e-05, 10.45137305], [1516452660000, 9.875e-05, 9.887e-05, 9.82e-05, 9.887e-05, 6142.56839277], [1516452780000, 9.902e-05, 9.902e-05, 9.887e-05, 9.902e-05, 130.08585789], [1516452840000, 9.902e-05, 9.902e-05, 9.888e-05, 9.888e-05, 877.93776055], [1516452900000, 9.888e-05, 9.888e-05, 9.888e-05, 9.888e-05, 325.0], [1516452960000, 9.902e-05, 9.902e-05, 9.902e-05, 9.902e-05, 317.50629637], [1516453020000, 9.902e-05, 9.902e-05, 9.902e-05, 9.902e-05, 103.98302365], [1516453080000, 9.902e-05, 9.902e-05, 9.902e-05, 9.902e-05, 8226.21793325], [1516453140000, 9.902e-05, 9.902e-05, 9.887e-05, 9.887e-05, 920.94475704], [1516453200000, 9.887e-05, 9.887e-05, 9.886e-05, 9.886e-05, 1724.13772498], [1516453320000, 9.886e-05, 9.886e-05, 9.886e-05, 9.886e-05, 403.90818979], [1516453380000, 9.822e-05, 9.887e-05, 9.822e-05, 9.887e-05, 4576.05254065], [1516453440000, 9.825e-05, 9.825e-05, 9.822e-05, 9.822e-05, 850.0], [1516453560000, 9.834e-05, 9.835e-05, 9.834e-05, 9.835e-05, 278.76251283], [1516453680000, 9.923e-05, 9.923e-05, 9.922e-05, 9.922e-05, 418.35165403], [1516453740000, 9.873e-05, 9.873e-05, 9.873e-05, 9.873e-05, 811.86509549], [1516453800000, 9.873e-05, 9.952e-05, 9.872e-05, 9.952e-05, 4585.57212198], [1516453860000, 9.882e-05, 9.923e-05, 9.835e-05, 9.835e-05, 8499.80226626], [1516453920000, 9.835e-05, 9.868e-05, 9.823e-05, 9.868e-05, 1305.88912781], [1516453980000, 9.822e-05, 9.822e-05, 9.822e-05, 9.822e-05, 4524.75182957], [1516454040000, 9.87e-05, 9.908e-05, 9.87e-05, 9.908e-05, 226.09306245], [1516454100000, 9.825e-05, 9.825e-05, 9.824e-05, 9.824e-05, 23.25346274], [1516454160000, 9.824e-05, 9.824e-05, 9.824e-05, 9.824e-05, 96.61043973], [1516454280000, 9.825e-05, 9.825e-05, 9.822e-05, 9.822e-05, 457.89077547], [1516454340000, 9.831e-05, 9.831e-05, 9.829e-05, 9.829e-05, 61.43966433], [1516454400000, 9.909e-05, 9.909e-05, 9.909e-05, 9.909e-05, 104.33959682], [1516454580000, 9.909e-05, 9.909e-05, 9.909e-05, 9.909e-05, 503.33030578], [1516454640000, 9.84e-05, 9.84e-05, 9.84e-05, 9.84e-05, 40.58590174], [1516454700000, 9.84e-05, 9.84e-05, 9.84e-05, 9.84e-05, 101.62601626], [1516454760000, 9.84e-05, 9.84e-05, 9.82e-05, 9.82e-05, 1048.5258012], [1516454820000, 9.84e-05, 9.84e-05, 9.84e-05, 9.84e-05, 11.10215942], [1516454880000, 9.84e-05, 9.84e-05, 9.84e-05, 9.84e-05, 117.59156479], [1516454940000, 9.821e-05, 9.821e-05, 9.82e-05, 9.82e-05, 100.0], [1516455000000, 9.82e-05, 9.822e-05, 9.82e-05, 9.82e-05, 137.63222895], [1516455060000, 9.84e-05, 9.84e-05, 9.84e-05, 9.84e-05, 391.67659314], [1516455120000, 9.822e-05, 9.822e-05, 9.821e-05, 9.821e-05, 105.0474068], [1516455180000, 9.821e-05, 9.821e-05, 9.821e-05, 9.821e-05, 2028.4257709], [1516455300000, 9.821e-05, 9.822e-05, 9.821e-05, 9.822e-05, 659.13017231], [1516455360000, 9.822e-05, 9.822e-05, 9.822e-05, 9.822e-05, 840.86982769], [1516455420000, 9.822e-05, 9.831e-05, 9.822e-05, 9.822e-05, 529.52017613], [1516455480000, 9.822e-05, 9.822e-05, 9.822e-05, 9.822e-05, 500.0], [1516455540000, 9.822e-05, 9.84e-05, 9.822e-05, 9.84e-05, 68.43915244], [1516455600000, 9.825e-05, 9.84e-05, 9.825e-05, 9.84e-05, 4832.90980279], [1516455660000, 9.922e-05, 9.922e-05, 9.922e-05, 9.922e-05, 57.80607025], [1516455780000, 9.904e-05, 9.904e-05, 9.904e-05, 9.904e-05, 45.48411925], [1516455840000, 9.83e-05, 9.83e-05, 9.822e-05, 9.822e-05, 1800.74831347], [1516455960000, 9.879e-05, 9.902e-05, 9.831e-05, 9.902e-05, 1082.51287275], [1516456020000, 9.831e-05, 9.86e-05, 9.82e-05, 9.86e-05, 1525.03654741], [1516456080000, 9.821e-05, 9.821e-05, 9.71e-05, 9.711e-05, 53538.07373965], [1516456140000, 9.739e-05, 9.764e-05, 9.729e-05, 9.764e-05, 2483.64851927], [1516456200000, 9.764e-05, 9.764e-05, 9.743e-05, 9.743e-05, 1000.0], [1516456260000, 9.75e-05, 9.806e-05, 9.75e-05, 9.788e-05, 780.16200992], [1516456320000, 9.788e-05, 9.798e-05, 9.788e-05, 9.798e-05, 259.62726765], [1516456380000, 9.797e-05, 9.797e-05, 9.724e-05, 9.724e-05, 420.87500992], [1516456440000, 9.842e-05, 9.92e-05, 9.839e-05, 9.92e-05, 824.64741987], [1516456500000, 9.909e-05, 9.917e-05, 9.909e-05, 9.911e-05, 1505.37095746], [1516456560000, 9.89e-05, 9.89e-05, 9.89e-05, 9.89e-05, 7.04591322], [1516456620000, 9.858e-05, 9.858e-05, 9.858e-05, 9.858e-05, 12.17285453], [1516456680000, 9.794e-05, 9.794e-05, 9.794e-05, 9.794e-05, 145.93727548], [1516456740000, 9.8e-05, 9.85e-05, 9.799e-05, 9.85e-05, 452.94661227], [1516456800000, 9.804e-05, 9.829e-05, 9.804e-05, 9.829e-05, 1352.20710171], [1516456920000, 9.826e-05, 9.836e-05, 9.824e-05, 9.836e-05, 823.09629876], [1516457040000, 9.834e-05, 9.834e-05, 9.771e-05, 9.771e-05, 294.99997807], [1516457100000, 9.771e-05, 9.771e-05, 9.771e-05, 9.771e-05, 2.193e-05], [1516457160000, 9.771e-05, 9.771e-05, 9.771e-05, 9.771e-05, 20.0], [1516457280000, 9.772e-05, 9.772e-05, 9.771e-05, 9.771e-05, 1000.0], [1516457340000, 9.833e-05, 9.833e-05, 9.833e-05, 9.833e-05, 126.27254197], [1516457520000, 9.829e-05, 9.829e-05, 9.829e-05, 9.829e-05, 20.34794994], [1516457640000, 9.821e-05, 9.822e-05, 9.819e-05, 9.819e-05, 653.74985732], [1516457700000, 9.773e-05, 9.775e-05, 9.771e-05, 9.771e-05, 1170.27583923], [1516457880000, 9.772e-05, 9.772e-05, 9.772e-05, 9.772e-05, 126.27254197], [1516457940000, 9.819e-05, 9.819e-05, 9.819e-05, 9.819e-05, 58.31610923], [1516458060000, 9.818e-05, 9.818e-05, 9.818e-05, 9.818e-05, 111.90232172], [1516458120000, 9.818e-05, 9.818e-05, 9.818e-05, 9.818e-05, 323.21], [1516458180000, 9.818e-05, 9.819e-05, 9.771e-05, 9.787e-05, 988.08597271], [1516458240000, 9.78e-05, 9.78e-05, 9.78e-05, 9.78e-05, 213.32903837], [1516458300000, 9.811e-05, 9.811e-05, 9.78e-05, 9.78e-05, 276.34060599], [1516458360000, 9.78e-05, 9.78e-05, 9.78e-05, 9.78e-05, 972.6061113], [1516458420000, 9.772e-05, 9.78e-05, 9.705e-05, 9.705e-05, 4225.76295347], [1516458480000, 9.707e-05, 9.778e-05, 9.707e-05, 9.778e-05, 78.65903663], [1516458540000, 9.707e-05, 9.707e-05, 9.707e-05, 9.707e-05, 63.0], [1516458600000, 9.707e-05, 9.707e-05, 9.681e-05, 9.707e-05, 1408.84093464], [1516458720000, 9.754e-05, 9.754e-05, 9.754e-05, 9.754e-05, 262.39374934], [1516458780000, 9.716e-05, 9.716e-05, 9.716e-05, 9.716e-05, 303.25779626], [1516458840000, 9.716e-05, 9.754e-05, 9.523e-05, 9.744e-05, 12644.4009138], [1516458960000, 9.735e-05, 9.744e-05, 9.734e-05, 9.744e-05, 241.04421465], [1516459020000, 9.735e-05, 9.735e-05, 9.735e-05, 9.735e-05, 433.07697517], [1516459080000, 9.774e-05, 9.778e-05, 9.735e-05, 9.735e-05, 2564.21134703], [1516459140000, 9.785e-05, 9.797e-05, 9.735e-05, 9.796e-05, 2197.72322636], [1516459200000, 9.795e-05, 9.795e-05, 9.795e-05, 9.795e-05, 1960.28679551], [1516459260000, 9.791e-05, 9.791e-05, 9.736e-05, 9.736e-05, 496.90358984], [1516459320000, 9.735e-05, 9.736e-05, 9.735e-05, 9.736e-05, 90.27115857], [1516459380000, 9.736e-05, 9.736e-05, 9.734e-05, 9.734e-05, 768.91432264], [1516459440000, 9.735e-05, 9.735e-05, 9.734e-05, 9.734e-05, 334.89822281], [1516459500000, 9.734e-05, 9.734e-05, 9.734e-05, 9.734e-05, 258.97862749], [1516459560000, 9.677e-05, 9.734e-05, 9.677e-05, 9.677e-05, 501.5414663], [1516459680000, 9.701e-05, 9.73e-05, 9.7e-05, 9.73e-05, 45.0], [1516459740000, 9.728e-05, 9.728e-05, 9.728e-05, 9.728e-05, 29.42943996], [1516459860000, 9.728e-05, 9.728e-05, 9.677e-05, 9.677e-05, 922.03079469], [1516459920000, 9.702e-05, 9.702e-05, 9.702e-05, 9.702e-05, 396.40117829], [1516459980000, 9.728e-05, 9.728e-05, 9.677e-05, 9.677e-05, 641.01044718], [1516460040000, 9.68e-05, 9.788e-05, 9.68e-05, 9.788e-05, 926.77377034], [1516460160000, 9.693e-05, 9.728e-05, 9.683e-05, 9.728e-05, 601.72569844], [1516460220000, 9.72e-05, 9.72e-05, 9.683e-05, 9.72e-05, 1157.04357003], [1516460280000, 9.72e-05, 9.72e-05, 9.72e-05, 9.72e-05, 1079.08202072], [1516460340000, 9.729e-05, 9.729e-05, 9.729e-05, 9.729e-05, 5.942747], [1516460400000, 9.729e-05, 9.729e-05, 9.729e-05, 9.729e-05, 58.745873], [1516460460000, 9.777e-05, 9.777e-05, 9.777e-05, 9.777e-05, 11.68094691], [1516460520000, 9.729e-05, 9.729e-05, 9.729e-05, 9.729e-05, 132.11114418], [1516460580000, 9.776e-05, 9.776e-05, 9.776e-05, 9.776e-05, 51.26426149], [1516460700000, 9.776e-05, 9.777e-05, 9.776e-05, 9.777e-05, 4379.29338584], [1516460760000, 9.777e-05, 9.777e-05, 9.77e-05, 9.777e-05, 10414.37209578], [1516460820000, 9.777e-05, 9.777e-05, 9.731e-05, 9.777e-05, 8400.10608855], [1516460880000, 9.777e-05, 9.777e-05, 9.777e-05, 9.777e-05, 242.15371943], [1516460940000, 9.777e-05, 9.777e-05, 9.777e-05, 9.777e-05, 53.81661041], [1516461060000, 9.776e-05, 9.79e-05, 9.776e-05, 9.776e-05, 7165.6635799], [1516461120000, 9.798e-05, 9.803e-05, 9.779e-05, 9.803e-05, 2837.10144268], [1516461180000, 9.803e-05, 9.803e-05, 9.803e-05, 9.803e-05, 1142.91838495], [1516461240000, 9.803e-05, 9.826e-05, 9.803e-05, 9.826e-05, 2455.10965808], [1516461300000, 9.826e-05, 9.87e-05, 9.796e-05, 9.867e-05, 39671.7950962], [1516461360000, 9.837e-05, 9.87e-05, 9.792e-05, 9.792e-05, 11495.91001181], [1516461420000, 9.792e-05, 9.839e-05, 9.789e-05, 9.839e-05, 5233.05881956], [1516461540000, 9.867e-05, 9.867e-05, 9.867e-05, 9.867e-05, 65.7048034], [1516461600000, 9.839e-05, 9.867e-05, 9.839e-05, 9.839e-05, 548.2428678], [1516461660000, 9.839e-05, 9.839e-05, 9.839e-05, 9.839e-05, 6.9], [1516461720000, 9.868e-05, 9.869e-05, 9.839e-05, 9.839e-05, 581.53039172], [1516461960000, 9.869e-05, 9.869e-05, 9.851e-05, 9.851e-05, 1625.43726892], [1516462020000, 9.87e-05, 9.87e-05, 9.87e-05, 9.87e-05, 197.38606876], [1516462080000, 9.87e-05, 9.87e-05, 9.87e-05, 9.87e-05, 99.35460921], [1516462140000, 9.86e-05, 9.87e-05, 9.86e-05, 9.86e-05, 914.61169625], [1516462200000, 9.86e-05, 9.87e-05, 9.852e-05, 9.852e-05, 2625.6468261], [1516462260000, 9.852e-05, 9.92e-05, 9.839e-05, 9.839e-05, 2031.40414152], [1516462320000, 9.84e-05, 9.84e-05, 9.84e-05, 9.84e-05, 29.77585565], [1516462440000, 9.84e-05, 9.84e-05, 9.796e-05, 9.796e-05, 845.93848139], [1516462500000, 9.794e-05, 9.794e-05, 9.794e-05, 9.794e-05, 25.48348682], [1516462560000, 9.794e-05, 9.794e-05, 9.793e-05, 9.794e-05, 2062.91611217], [1516462620000, 9.794e-05, 9.843e-05, 9.794e-05, 9.843e-05, 350.96019544], [1516462740000, 9.843e-05, 9.844e-05, 9.843e-05, 9.843e-05, 674.82379151], [1516462800000, 9.845e-05, 9.845e-05, 9.843e-05, 9.843e-05, 2420.52379113], [1516462860000, 9.845e-05, 9.899e-05, 9.845e-05, 9.849e-05, 141.36528714], [1516462920000, 9.849e-05, 9.922e-05, 9.849e-05, 9.9e-05, 8632.88418528], [1516462980000, 9.9e-05, 9.901e-05, 9.9e-05, 9.9e-05, 2466.21415703], [1516463040000, 9.951e-05, 9.953e-05, 9.9e-05, 9.9e-05, 8905.58993328], [1516463160000, 9.953e-05, 9.953e-05, 9.953e-05, 9.953e-05, 5025.20416869], [1516463220000, 9.956e-05, 9.956e-05, 9.956e-05, 9.956e-05, 1004.146781], [1516463280000, 9.981e-05, 9.981e-05, 9.981e-05, 9.981e-05, 1003.00100299], [1516463340000, 9.958e-05, 9.958e-05, 9.957e-05, 9.957e-05, 156.37871829], [1516463400000, 9.957e-05, 9.96e-05, 9.957e-05, 9.957e-05, 1318.42676694], [1516463460000, 9.957e-05, 9.96e-05, 9.957e-05, 9.96e-05, 523.09844914], [1516463520000, 9.96e-05, 9.981e-05, 9.96e-05, 9.981e-05, 469.71751428], [1516463580000, 9.96e-05, 9.981e-05, 9.957e-05, 9.981e-05, 496.94465088], [1516463640000, 9.957e-05, 9.957e-05, 9.957e-05, 9.957e-05, 12894.5187372], [1516463700000, 9.953e-05, 9.953e-05, 9.953e-05, 9.953e-05, 12.24989791], [1516463760000, 9.953e-05, 9.953e-05, 9.953e-05, 9.953e-05, 1813.16375882], [1516463820000, 9.821e-05, 9.821e-05, 9.819e-05, 9.819e-05, 1500.45609731], [1516463880000, 9.861e-05, 9.861e-05, 9.861e-05, 9.861e-05, 321.56830294], [1516463940000, 9.979e-05, 9.979e-05, 9.893e-05, 9.893e-05, 418.10543835], [1516464000000, 9.9e-05, 9.9e-05, 9.881e-05, 9.882e-05, 978.15116812], [1516464060000, 9.875e-05, 9.978e-05, 9.875e-05, 9.978e-05, 131.38197794], [1516464180000, 9.978e-05, 9.978e-05, 9.884e-05, 9.89e-05, 742.96109701], [1516464240000, 9.978e-05, 9.978e-05, 9.978e-05, 9.978e-05, 492.13322733], [1516464300000, 9.978e-05, 9.978e-05, 9.978e-05, 9.978e-05, 4016.17584706], [1516464360000, 9.979e-05, 9.979e-05, 9.979e-05, 9.979e-05, 2000.0], [1516464420000, 9.979e-05, 9.98e-05, 9.979e-05, 9.98e-05, 905.62671676], [1516464480000, 9.979e-05, 9.979e-05, 9.891e-05, 9.894e-05, 1337.77594673], [1516464540000, 9.894e-05, 9.976e-05, 9.893e-05, 9.893e-05, 2536.85800529], [1516464600000, 9.895e-05, 9.895e-05, 9.891e-05, 9.891e-05, 1190.583335], [1516464720000, 9.974e-05, 9.98e-05, 9.974e-05, 9.98e-05, 1707.15770485], [1516464780000, 9.977e-05, 9.979e-05, 9.903e-05, 9.903e-05, 1042.71979821], [1516464900000, 9.977e-05, 9.981e-05, 9.977e-05, 9.981e-05, 1232.32756406], [1516464960000, 9.98e-05, 9.994e-05, 9.922e-05, 9.922e-05, 589.73720429], [1516465020000, 9.994e-05, 9.994e-05, 9.994e-05, 9.994e-05, 174.53848558], [1516465080000, 9.994e-05, 0.0001, 9.994e-05, 0.0001, 753.89087583], [1516465140000, 9.995e-05, 9.996e-05, 9.995e-05, 9.995e-05, 1546.11858553], [1516465200000, 9.995e-05, 9.995e-05, 9.994e-05, 9.994e-05, 1416.72826105], [1516465260000, 9.995e-05, 9.995e-05, 9.995e-05, 9.995e-05, 10.0], [1516465320000, 9.994e-05, 9.994e-05, 9.994e-05, 9.994e-05, 1501.33079585], [1516465380000, 9.994e-05, 9.995e-05, 9.994e-05, 9.994e-05, 388.02558656], [1516465440000, 9.995e-05, 9.995e-05, 9.994e-05, 9.994e-05, 713.42914624], [1516465500000, 9.994e-05, 9.994e-05, 9.994e-05, 9.994e-05, 1670.22747793], [1516465560000, 9.994e-05, 9.994e-05, 9.994e-05, 9.994e-05, 214.60344501], [1516465620000, 9.994e-05, 9.995e-05, 9.994e-05, 9.995e-05, 185.15316724], [1516465680000, 9.995e-05, 9.995e-05, 9.994e-05, 9.994e-05, 4334.1992036], [1516465740000, 9.994e-05, 9.994e-05, 9.994e-05, 9.994e-05, 52.19143429], [1516465800000, 9.994e-05, 9.995e-05, 9.994e-05, 9.994e-05, 6659.57610254], [1516465860000, 9.995e-05, 9.995e-05, 9.995e-05, 9.995e-05, 4569.37726968], [1516465920000, 9.994e-05, 9.994e-05, 9.994e-05, 9.994e-05, 2076.37976517], [1516465980000, 9.995e-05, 9.995e-05, 9.945e-05, 9.945e-05, 730.3321578], [1516466040000, 9.945e-05, 9.945e-05, 9.945e-05, 9.945e-05, 231.23149876], [1516466100000, 9.946e-05, 9.947e-05, 9.946e-05, 9.947e-05, 78.02505823], [1516466160000, 9.946e-05, 9.994e-05, 9.946e-05, 9.994e-05, 833.4953009], [1516466220000, 9.994e-05, 9.994e-05, 9.994e-05, 9.994e-05, 33.73913498], [1516466280000, 9.994e-05, 9.994e-05, 9.994e-05, 9.994e-05, 50.0], [1516466340000, 9.994e-05, 9.994e-05, 9.946e-05, 9.946e-05, 176.10802723], [1516466400000, 9.946e-05, 9.994e-05, 9.946e-05, 9.994e-05, 55.99891478], [1516466580000, 9.946e-05, 9.946e-05, 9.946e-05, 9.946e-05, 9.024487], [1516466700000, 9.946e-05, 9.946e-05, 9.946e-05, 9.946e-05, 183.75828421], [1516466760000, 9.945e-05, 9.945e-05, 9.923e-05, 9.923e-05, 959.61033039], [1516466880000, 9.922e-05, 9.922e-05, 9.878e-05, 9.878e-05, 741.43], [1516466940000, 9.878e-05, 9.878e-05, 9.866e-05, 9.866e-05, 448.2993], [1516467000000, 9.866e-05, 9.866e-05, 9.8e-05, 9.866e-05, 1793.70922809], [1516467060000, 9.859e-05, 9.859e-05, 9.85e-05, 9.85e-05, 324.35344637], [1516467120000, 9.85e-05, 9.852e-05, 9.85e-05, 9.851e-05, 563.66116317], [1516467180000, 9.85e-05, 9.85e-05, 9.8e-05, 9.825e-05, 3883.14791928], [1516467240000, 9.921e-05, 9.921e-05, 9.921e-05, 9.921e-05, 300.0], [1516467300000, 9.921e-05, 9.922e-05, 9.8e-05, 9.922e-05, 1946.75498693], [1516467360000, 9.922e-05, 9.922e-05, 9.922e-05, 9.922e-05, 230.0], [1516467420000, 9.82e-05, 9.922e-05, 9.819e-05, 9.921e-05, 777.68537498], [1516467480000, 9.838e-05, 9.838e-05, 9.838e-05, 9.838e-05, 88.98695564], [1516467600000, 9.852e-05, 9.921e-05, 9.85e-05, 9.921e-05, 1527.29679988], [1516467660000, 9.91e-05, 9.91e-05, 9.86e-05, 9.86e-05, 1193.87870677], [1516467720000, 9.86e-05, 9.9e-05, 9.86e-05, 9.865e-05, 1402.16899004], [1516467780000, 9.865e-05, 9.865e-05, 9.865e-05, 9.865e-05, 58.18157912], [1516467840000, 9.871e-05, 9.9e-05, 9.871e-05, 9.876e-05, 477.35951662], [1516467900000, 9.899e-05, 9.899e-05, 9.899e-05, 9.899e-05, 265.35704833], [1516467960000, 9.899e-05, 9.935e-05, 9.899e-05, 9.935e-05, 31512.88416673], [1516468020000, 9.935e-05, 9.935e-05, 9.905e-05, 9.905e-05, 1706.8441105], [1516468080000, 9.905e-05, 9.905e-05, 9.895e-05, 9.905e-05, 150.38970056], [1516468140000, 9.906e-05, 9.934e-05, 9.905e-05, 9.934e-05, 3846.1711367], [1516468200000, 9.934e-05, 9.934e-05, 9.934e-05, 9.934e-05, 500.0], [1516468260000, 9.934e-05, 9.935e-05, 9.934e-05, 9.934e-05, 2871.14456123], [1516468320000, 9.934e-05, 9.934e-05, 9.934e-05, 9.934e-05, 7978.5974004], [1516468380000, 9.935e-05, 0.0001, 9.935e-05, 9.995e-05, 39694.55293578], [1516468440000, 9.995e-05, 0.0001, 9.995e-05, 0.0001, 11303.75874461], [1516468500000, 0.0001, 0.00010004, 0.0001, 0.00010004, 15601.25035636], [1516468560000, 0.0001, 0.00010004, 0.0001, 0.0001, 3102.55568972], [1516468620000, 0.0001, 0.00010004, 0.0001, 0.00010004, 5531.98199234], [1516468680000, 0.00010004, 0.00010011, 0.00010004, 0.00010004, 7311.23602398], [1516468740000, 0.00010004, 0.0001002, 0.00010004, 0.0001002, 4206.35231479], [1516468800000, 0.00010004, 0.00010004, 0.0001, 0.0001, 14016.60654575], [1516468860000, 0.0001, 0.00010018, 0.0001, 0.0001, 2668.41226065], [1516468920000, 0.00010005, 0.00010018, 0.0001, 0.0001, 4717.41062758], [1516468980000, 0.0001, 0.0001, 9.996e-05, 9.996e-05, 21057.85143207], [1516469040000, 9.996e-05, 0.00010016, 9.996e-05, 0.00010016, 3512.44597912], [1516469100000, 0.00010016, 0.00010088, 9.996e-05, 0.00010088, 17785.40011492], [1516469220000, 0.00010006, 0.00010006, 9.999e-05, 9.999e-05, 285.75], [1516469280000, 9.999e-05, 0.00010049, 9.997e-05, 0.00010049, 737.19386219], [1516469400000, 0.00010049, 0.00010086, 9.996e-05, 0.00010054, 5789.95227112], [1516469460000, 0.00010054, 0.00010054, 9.998e-05, 9.998e-05, 363.03361605], [1516469640000, 0.0001, 0.00010002, 9.999e-05, 0.00010002, 413.07175333], [1516469700000, 0.0001003, 0.0001015, 0.0001, 0.00010014, 9130.96657307], [1516469760000, 0.00010083, 0.000103, 0.00010051, 0.00010061, 28700.79516551], [1516469820000, 0.00010068, 0.000102, 0.00010021, 0.00010055, 11703.33400838], [1516469880000, 0.00010056, 0.00010056, 9.998e-05, 9.998e-05, 4011.50891696], [1516469940000, 0.0001, 0.0001, 0.0001, 0.0001, 16.29093677], [1516470000000, 0.00010048, 0.00010157, 0.00010048, 0.00010128, 2136.3535771], [1516470060000, 0.00010054, 0.00010125, 0.00010054, 0.00010114, 11189.19920145], [1516470120000, 0.00010124, 0.00010124, 0.00010014, 0.00010014, 6091.31986681], [1516470180000, 0.00010112, 0.00010159, 0.00010032, 0.00010118, 9114.15215298], [1516470240000, 0.00010046, 0.00010051, 0.00010044, 0.0001005, 4375.34652942], [1516470300000, 0.0001005, 0.0001005, 0.00010023, 0.0001005, 2685.58812768], [1516470360000, 0.00010107, 0.00010131, 0.00010023, 0.00010025, 8461.98685044], [1516470420000, 0.00010025, 0.00010091, 0.00010022, 0.00010023, 1780.5105675], [1516470480000, 0.00010145, 0.00010145, 0.00010025, 0.00010025, 112.10114026], [1516470540000, 0.00010025, 0.00010025, 0.00010023, 0.00010023, 2178.34601755], [1516470600000, 0.00010025, 0.00010025, 0.00010025, 0.00010025, 300.0], [1516470660000, 0.00010024, 0.00010025, 0.00010023, 0.00010023, 3241.36997561], [1516470720000, 0.00010025, 0.00010129, 0.00010025, 0.00010118, 4616.26621327], [1516470780000, 0.00010072, 0.00010072, 0.00010024, 0.00010024, 1595.23670379], [1516470840000, 0.00010024, 0.00010024, 0.00010023, 0.00010024, 5287.47607717], [1516470900000, 0.00010024, 0.00010025, 0.00010024, 0.00010025, 17.30159558], [1516470960000, 0.00010025, 0.00010025, 0.00010025, 0.00010025, 67.85751832], [1516471020000, 0.00010038, 0.00010038, 0.00010038, 0.00010038, 102.17746862], [1516471080000, 0.00010026, 0.00010038, 0.00010026, 0.00010038, 415.23259414], [1516471140000, 0.00010026, 0.00010028, 0.00010008, 0.00010008, 1450.50663222], [1516471200000, 0.00010037, 0.00010195, 0.00010037, 0.00010195, 2813.77550814], [1516471260000, 0.00010039, 0.00010043, 0.00010024, 0.00010042, 823.48446736], [1516471320000, 0.0001003, 0.0001003, 0.0001, 0.0001, 5512.54658998], [1516471380000, 0.00010002, 0.00010009, 0.00010001, 0.00010005, 13369.65242679], [1516471440000, 0.00010005, 0.00010005, 0.00010001, 0.00010001, 1420.4850476], [1516471500000, 0.00010001, 0.00010001, 0.00010001, 0.00010001, 374.65817982], [1516471560000, 0.0001, 0.0001, 9.998e-05, 9.999e-05, 7302.45848828], [1516471620000, 9.999e-05, 0.00010005, 9.999e-05, 0.00010005, 2169.66617813], [1516471680000, 0.00010005, 0.00010005, 0.00010005, 0.00010005, 1864.19678149], [1516471740000, 9.999e-05, 9.999e-05, 9.999e-05, 9.999e-05, 98.7064357], [1516471800000, 0.00010005, 0.00010005, 9.999e-05, 9.999e-05, 1748.05744047], [1516471860000, 9.999e-05, 0.00010038, 9.996e-05, 0.00010002, 4769.75512373], [1516471920000, 0.00010001, 0.00010015, 0.00010001, 0.00010015, 1929.80669], [1516471980000, 0.00010015, 0.00010096, 0.00010015, 0.00010015, 238.64394572], [1516472040000, 0.00010015, 0.00010015, 0.00010015, 0.00010015, 278.0], [1516472100000, 0.00010077, 0.00010077, 0.00010015, 0.00010015, 124.0], [1516472160000, 0.00010015, 0.00010036, 0.00010015, 0.00010036, 336.77091804], [1516472220000, 0.00010015, 0.00010036, 0.00010015, 0.00010036, 324.99033964], [1516472280000, 0.00010036, 0.00010036, 0.00010036, 0.00010036, 1992.73790201], [1516472340000, 0.0001007, 0.0001007, 0.0001007, 0.0001007, 296.96338196], [1516472400000, 0.00010077, 0.00010104, 0.00010077, 0.00010104, 989.66374426], [1516472460000, 0.00010104, 0.00010108, 0.00010104, 0.00010107, 1256.19395604], [1516472520000, 0.0001007, 0.0001007, 0.0001007, 0.0001007, 200.72602131], [1516472580000, 0.00010047, 0.00010047, 0.00010047, 0.00010047, 177.58390984], [1516472640000, 0.00010027, 0.00010027, 0.00010027, 0.00010027, 77.29024704], [1516472700000, 0.00010027, 0.00010047, 0.00010015, 0.00010015, 7814.82758979], [1516472760000, 0.0001002, 0.0001002, 0.0001002, 0.0001002, 300.0], [1516472820000, 0.00010019, 0.00010019, 0.00010001, 0.00010001, 1842.58202619], [1516472880000, 0.00010001, 0.00010001, 0.0001, 0.0001, 927.9076229], [1516472940000, 0.0001, 0.0001, 0.0001, 0.0001, 319.52319], [1516473000000, 0.0001, 0.0001, 0.0001, 0.0001, 261.18272857], [1516473060000, 0.0001, 0.00010015, 0.0001, 0.00010015, 458.50953498], [1516473120000, 0.0001, 0.00010547, 0.0001, 0.000103, 272813.08020318], [1516473180000, 0.000103, 0.00010513, 0.000103, 0.00010309, 61448.24168191], [1516473240000, 0.00010311, 0.00010501, 0.00010309, 0.00010322, 55081.32982125], [1516473300000, 0.00010326, 0.00010331, 0.00010326, 0.00010331, 6243.72846788], [1516473360000, 0.00010331, 0.0001041, 0.00010329, 0.0001035, 4462.42518898], [1516473420000, 0.0001035, 0.00010388, 0.000103, 0.000103, 11202.76207001], [1516473480000, 0.0001035, 0.0001035, 0.000103, 0.00010301, 5455.90614674], [1516473540000, 0.00010301, 0.00010353, 0.000103, 0.000103, 8028.03534966], [1516473600000, 0.0001035, 0.0001035, 0.00010301, 0.00010301, 3421.2178981], [1516473660000, 0.00010301, 0.00010319, 0.00010301, 0.00010319, 15.45272299], [1516473720000, 0.00010301, 0.00010467, 0.000103, 0.000103, 24444.20952785], [1516473780000, 0.00010313, 0.0001036, 0.00010313, 0.0001035, 2415.75512468], [1516473840000, 0.00010324, 0.00010349, 0.000103, 0.000103, 2834.09327333], [1516473900000, 0.00010324, 0.00010328, 0.00010324, 0.00010324, 1126.1808536], [1516473960000, 0.00010327, 0.00010328, 0.00010324, 0.00010324, 5117.23782226], [1516474020000, 0.00010301, 0.00010301, 0.000103, 0.000103, 2076.44161327], [1516474080000, 0.00010323, 0.00010323, 0.000103, 0.000103, 1806.74445797], [1516474140000, 0.000103, 0.000103, 0.000103, 0.000103, 20836.41273428], [1516474200000, 0.000103, 0.000103, 0.000103, 0.000103, 17589.73068952], [1516474260000, 0.00010301, 0.00010319, 0.000103, 0.00010319, 11528.43979883], [1516474320000, 0.000103, 0.000103, 0.000103, 0.000103, 13826.7080191], [1516474380000, 0.000103, 0.00010313, 0.000103, 0.000103, 8347.94163496], [1516474440000, 0.00010313, 0.00010313, 0.000103, 0.000103, 5426.20755953], [1516474500000, 0.000103, 0.000103, 0.000103, 0.000103, 6660.70673247], [1516474560000, 0.000103, 0.00010301, 0.000103, 0.000103, 13726.1051601], [1516474620000, 0.000103, 0.00010301, 0.000103, 0.000103, 2889.20137161], [1516474680000, 0.000103, 0.00010301, 0.000103, 0.000103, 8052.59996976], [1516474740000, 0.00010301, 0.00010301, 0.000103, 0.000103, 1128.0], [1516474800000, 0.000103, 0.00010301, 0.000103, 0.000103, 1793.82668135], [1516474860000, 0.000103, 0.000103, 0.000103, 0.000103, 75836.51730714], [1516474920000, 0.000103, 0.000103, 0.00010158, 0.00010196, 32448.06925318], [1516474980000, 0.00010191, 0.00010192, 0.00010101, 0.00010101, 2366.14640649], [1516475040000, 0.00010192, 0.00010192, 0.00010023, 0.00010187, 15805.27628793], [1516475100000, 0.00010156, 0.00010171, 0.00010024, 0.00010154, 2062.25323541], [1516475160000, 0.00010034, 0.00010151, 0.00010034, 0.00010151, 8568.83984761], [1516475220000, 0.00010149, 0.00010149, 0.00010023, 0.00010145, 3192.38000351], [1516475280000, 0.00010141, 0.00010141, 0.00010023, 0.00010133, 3701.2899101], [1516475340000, 0.0001013, 0.00010136, 9.822e-05, 0.0001, 22925.06384777], [1516475400000, 0.00010085, 0.00010085, 0.00010023, 0.00010023, 2437.45237013], [1516475460000, 0.00010074, 0.00010074, 0.00010011, 0.00010011, 1036.31612277], [1516475520000, 0.00010012, 0.00010012, 9.881e-05, 9.881e-05, 1231.79107045], [1516475580000, 9.91e-05, 0.00010044, 9.909e-05, 0.00010044, 2708.49853054], [1516475640000, 0.00010028, 0.00010031, 0.00010027, 0.00010031, 2873.05297829], [1516475700000, 9.928e-05, 0.00010098, 9.928e-05, 0.00010098, 1475.6094534], [1516475760000, 0.0001009, 0.000101, 0.0001006, 0.000101, 45.63062058], [1516475820000, 0.00010013, 0.00010014, 9.952e-05, 9.953e-05, 889.53249156], [1516475880000, 9.952e-05, 9.952e-05, 9.952e-05, 9.952e-05, 46.0], [1516476000000, 9.952e-05, 9.952e-05, 9.952e-05, 9.952e-05, 300.0], [1516476060000, 9.954e-05, 9.954e-05, 9.954e-05, 9.954e-05, 354.51960669], [1516476120000, 9.96e-05, 0.00010102, 9.96e-05, 0.00010102, 258.54840535], [1516476180000, 0.0001009, 0.00010093, 9.97e-05, 0.00010052, 5013.5692004], [1516476240000, 0.00010052, 0.00010063, 9.971e-05, 0.00010063, 966.11665862], [1516476360000, 9.999e-05, 0.00010093, 9.99e-05, 0.00010093, 6748.57967657], [1516476420000, 0.00010063, 0.00010063, 0.00010042, 0.00010063, 2412.56243419], [1516476480000, 0.00010042, 0.00010063, 9.991e-05, 9.994e-05, 106.73796297], [1516476540000, 0.00010063, 0.00010063, 0.00010063, 0.00010063, 200.0], [1516476600000, 0.00010003, 0.00010063, 0.00010003, 0.00010003, 6101.9225548], [1516476660000, 0.00010102, 0.00010102, 0.00010102, 0.00010102, 273.94187874], [1516476720000, 0.00010102, 0.00010102, 0.00010006, 0.00010102, 1037.03822644], [1516476780000, 0.00010006, 0.0001013, 0.00010006, 0.00010006, 875.85182323], [1516476840000, 0.0001, 0.0001, 0.0001, 0.0001, 6.10802283], [1516476900000, 0.00010129, 0.0001013, 0.00010129, 0.0001013, 5543.58783613], [1516476960000, 0.0001013, 0.0001013, 0.0001013, 0.0001013, 64.16584402], [1516477020000, 0.00010007, 0.00010007, 0.00010005, 0.00010005, 138.83252673], [1516477080000, 0.00010119, 0.00010119, 0.00010112, 0.00010112, 64.0], [1516477140000, 0.00010112, 0.00010112, 0.00010112, 0.00010112, 54.81079444], [1516477200000, 0.00010099, 0.00010099, 0.00010009, 0.00010009, 366.17293978], [1516477260000, 0.00010065, 0.00010067, 0.0001002, 0.00010035, 14786.19115774], [1516477320000, 0.00010035, 0.0001004, 0.00010035, 0.00010036, 2040.89005], [1516477440000, 0.00010064, 0.00010112, 0.00010064, 0.00010112, 64.34663009], [1516477500000, 0.0001004, 0.00010112, 0.00010035, 0.00010112, 100.32258703], [1516477560000, 0.00010035, 0.00010058, 0.00010035, 0.00010058, 6534.60726916], [1516477620000, 0.00010058, 0.00010058, 0.00010009, 0.00010009, 2727.71952456], [1516477680000, 0.00010009, 0.00010129, 0.00010009, 0.00010129, 1307.94854835], [1516477740000, 0.00010021, 0.00010127, 0.00010009, 0.00010127, 2199.64114906], [1516477800000, 0.00010019, 0.00010019, 0.0001001, 0.00010012, 2035.75073296], [1516477860000, 0.00010012, 0.00010025, 0.00010002, 0.00010002, 3031.954], [1516477920000, 0.00010116, 0.00010116, 0.00010002, 0.00010105, 418.02104146], [1516477980000, 0.00010002, 0.00010002, 9.854e-05, 9.854e-05, 9891.90797303], [1516478040000, 0.00010088, 0.00010088, 0.00010088, 0.00010088, 192.88297184], [1516478100000, 9.914e-05, 9.94e-05, 9.907e-05, 9.921e-05, 126.99989633], [1516478160000, 0.00010045, 0.00010078, 0.00010045, 0.00010078, 119.47431302], [1516478340000, 0.00010058, 0.00010058, 0.00010025, 0.00010025, 1108.5836783], [1516478400000, 0.00010051, 0.00010052, 0.00010006, 0.00010052, 902.60484344], [1516478520000, 0.00010059, 0.00010089, 0.0001, 0.00010048, 2444.06293576], [1516478580000, 0.00010079, 0.00010089, 9.911e-05, 0.00010089, 2490.91575946], [1516478640000, 0.00010089, 0.00010089, 0.00010025, 0.00010025, 958.72322168], [1516478700000, 0.00010089, 0.00010111, 0.00010031, 0.00010065, 11317.87116872], [1516478760000, 0.00010025, 0.00010129, 9.881e-05, 0.00010097, 7667.9138717], [1516478820000, 9.962e-05, 0.00010099, 9.962e-05, 0.00010085, 2349.49358123], [1516478880000, 0.00010085, 0.00010085, 9.914e-05, 0.0001008, 1258.04182854], [1516478940000, 9.963e-05, 0.0001091, 9.963e-05, 0.000109, 240432.77848936], [1516479000000, 0.000109, 0.00010933, 0.00010005, 0.0001055, 263656.24533668], [1516479060000, 0.00010461, 0.00010461, 0.00010251, 0.00010379, 48423.28776136], [1516479120000, 0.00010379, 0.0001055, 0.00010332, 0.0001055, 16305.22386436], [1516479180000, 0.0001035, 0.00010374, 0.00010239, 0.00010334, 15171.72161185], [1516479240000, 0.00010318, 0.00010344, 0.00010317, 0.00010344, 1591.11958139], [1516479300000, 0.00010343, 0.0001035, 9.999e-05, 0.00010057, 437232.63181924], [1516479360000, 0.00010197, 0.0001027, 9.975e-05, 0.00010102, 25761.21086326], [1516479420000, 0.00010102, 0.00010104, 9.95e-05, 9.968e-05, 31546.16373726], [1516479480000, 9.968e-05, 9.977e-05, 9.968e-05, 9.969e-05, 1167.25566498], [1516479540000, 9.988e-05, 0.00010079, 9.988e-05, 0.00010079, 1265.72574942], [1516479600000, 0.00010042, 0.00010132, 0.00010042, 0.00010078, 10641.58264463], [1516479660000, 0.00010115, 0.00010115, 0.00010009, 0.00010009, 299.34985512], [1516479720000, 0.00010078, 0.00010194, 9.902e-05, 0.00010045, 44100.70737622], [1516479780000, 0.00010078, 0.00010078, 9.941e-05, 9.943e-05, 1276.49288427], [1516479840000, 0.00010095, 0.00010101, 0.00010091, 0.00010094, 3189.92527076], [1516479900000, 0.00010082, 0.00010082, 0.0001008, 0.0001008, 684.55308055], [1516479960000, 0.00010068, 0.00010078, 9.982e-05, 0.00010075, 805.37433188], [1516480020000, 0.00010071, 0.00010071, 9.991e-05, 0.00010068, 566.11433815], [1516480080000, 9.993e-05, 9.993e-05, 9.993e-05, 9.993e-05, 22.08909391], [1516480140000, 9.996e-05, 0.00010047, 9.996e-05, 0.00010047, 296.96916542], [1516480200000, 0.00010047, 0.00010047, 9.996e-05, 0.00010042, 492.93137014], [1516480260000, 9.996e-05, 0.0001004, 9.995e-05, 0.00010038, 2229.32597927], [1516480320000, 9.998e-05, 0.00010038, 9.998e-05, 0.00010035, 770.31128909], [1516480380000, 0.00010035, 0.00010037, 0.00010001, 0.00010037, 22520.30419194], [1516480440000, 0.00010037, 0.00010037, 0.00010003, 0.00010003, 652.7650135], [1516480500000, 0.00010003, 0.00010003, 0.00010003, 0.00010003, 60.13196041], [1516480560000, 0.00010073, 0.00010073, 9.999e-05, 0.00010073, 27506.05317675], [1516480620000, 0.00010073, 0.00010073, 9.88e-05, 9.929e-05, 8539.46209205], [1516480680000, 0.00010057, 0.00010057, 9.932e-05, 9.932e-05, 45.11296974], [1516480740000, 9.934e-05, 9.935e-05, 9.933e-05, 9.933e-05, 417.94234836], [1516480800000, 0.00010034, 0.00010034, 9.936e-05, 9.936e-05, 71.24881754], [1516480860000, 9.999e-05, 9.999e-05, 9.937e-05, 9.937e-05, 203.98200289], [1516480920000, 9.957e-05, 9.964e-05, 9.851e-05, 9.962e-05, 4372.92812848], [1516480980000, 9.962e-05, 0.00010053, 9.962e-05, 0.00010053, 114.41983509], [1516481040000, 0.00010044, 0.00010044, 9.882e-05, 9.882e-05, 285.17872896], [1516481100000, 0.00010027, 0.00010027, 9.9e-05, 0.0001, 2337.93810048], [1516481160000, 0.0001001, 0.00010012, 9.949e-05, 0.00010005, 1631.65979388], [1516481280000, 9.999e-05, 0.00010048, 9.981e-05, 0.00010048, 1962.99152714], [1516481340000, 0.00010048, 0.00010048, 0.00010048, 0.00010048, 24.88057324], [1516481400000, 0.00010045, 0.00010045, 9.964e-05, 9.964e-05, 395.89121766], [1516481460000, 0.00010048, 0.00010048, 9.964e-05, 9.964e-05, 401.22260314], [1516481520000, 0.00010027, 0.00010049, 0.00010027, 0.00010049, 1110.58760261], [1516481580000, 0.00010049, 0.00010049, 9.97e-05, 9.97e-05, 1563.71824236], [1516481640000, 9.97e-05, 9.97e-05, 9.965e-05, 9.965e-05, 1701.63042533], [1516481700000, 9.965e-05, 0.00010045, 9.893e-05, 9.902e-05, 17579.209222], [1516481760000, 9.909e-05, 0.00010033, 9.902e-05, 0.00010033, 2761.67761875], [1516481820000, 0.00010045, 0.0001005, 0.00010045, 0.0001005, 1611.69417309], [1516481880000, 0.0001004, 0.0001004, 0.0001004, 0.0001004, 297.90940767], [1516481940000, 9.938e-05, 9.938e-05, 9.937e-05, 9.937e-05, 1000.0], [1516482000000, 9.946e-05, 9.946e-05, 9.936e-05, 9.936e-05, 1132.4341025], [1516482060000, 9.936e-05, 0.00010033, 9.936e-05, 0.0001, 60.20813361], [1516482120000, 0.0001, 0.0001, 0.0001, 0.0001, 20.16942315], [1516482180000, 0.00010029, 0.0001004, 0.00010029, 0.0001003, 486.57715054], [1516482240000, 0.0001004, 0.0001004, 0.0001003, 0.0001003, 3441.89822375], [1516482300000, 0.00010029, 0.00010029, 0.00010027, 0.00010027, 126.54472741], [1516482360000, 0.0001, 0.0001, 0.0001, 0.0001, 1943.68675085], [1516482420000, 0.0001, 0.0001, 0.0001, 0.0001, 60.28900083], [1516482480000, 0.0001, 0.0001, 0.0001, 0.0001, 395.14410201], [1516482540000, 9.941e-05, 0.0001, 9.935e-05, 0.0001, 1329.09109833], [1516482600000, 0.0001, 0.0001, 9.988e-05, 0.0001, 5218.76860869], [1516482660000, 9.986e-05, 0.0001, 9.986e-05, 9.986e-05, 281.11953478], [1516482780000, 0.0001, 0.0001, 9.987e-05, 9.987e-05, 913.41657231], [1516482840000, 0.0001, 0.0001, 0.0001, 0.0001, 200.0], [1516482900000, 0.0001, 0.0001, 0.0001, 0.0001, 700.0], [1516482960000, 0.0001, 0.0001, 9.989e-05, 0.0001, 797.20273849], [1516483020000, 9.999e-05, 9.999e-05, 9.999e-05, 9.999e-05, 741.42166475], [1516483080000, 9.988e-05, 9.999e-05, 9.942e-05, 9.942e-05, 1744.73187721], [1516483140000, 9.999e-05, 9.999e-05, 9.999e-05, 9.999e-05, 403.28543611], [1516483200000, 9.998e-05, 9.999e-05, 9.998e-05, 9.999e-05, 3512.4781306], [1516483260000, 9.999e-05, 9.999e-05, 9.998e-05, 9.999e-05, 1595.92380738], [1516483320000, 9.999e-05, 9.999e-05, 9.999e-05, 9.999e-05, 3727.85037828], [1516483380000, 9.95e-05, 0.0001, 9.938e-05, 0.0001, 2911.0], [1516483440000, 0.0001, 0.0001, 0.0001, 0.0001, 971.45509925], [1516483500000, 0.0001, 0.0001, 9.999e-05, 9.999e-05, 11165.05089289], [1516483560000, 9.999e-05, 9.999e-05, 9.999e-05, 9.999e-05, 836.82003536], [1516483620000, 9.982e-05, 9.999e-05, 9.953e-05, 9.96e-05, 216.79], [1516483740000, 9.999e-05, 9.999e-05, 9.999e-05, 9.999e-05, 136.01360136], [1516483800000, 9.999e-05, 9.999e-05, 9.961e-05, 9.968e-05, 125.76659642], [1516483860000, 9.999e-05, 9.999e-05, 9.999e-05, 9.999e-05, 3134.72334579], [1516483920000, 9.999e-05, 0.0001, 9.963e-05, 0.0001, 2600.33172453], [1516483980000, 9.969e-05, 0.0001, 9.966e-05, 9.972e-05, 15696.50579839], [1516484040000, 9.966e-05, 0.0001011, 9.96e-05, 9.961e-05, 5274.79454039], [1516484100000, 9.961e-05, 9.969e-05, 9.958e-05, 9.958e-05, 2536.21111176], [1516484160000, 9.956e-05, 9.958e-05, 9.954e-05, 9.954e-05, 3498.31496187], [1516484220000, 9.954e-05, 0.00010076, 9.938e-05, 0.00010076, 496.66205404], [1516484280000, 0.00010021, 0.00010021, 0.00010021, 0.00010021, 102.99363716], [1516484340000, 0.00010021, 0.00010098, 9.964e-05, 9.964e-05, 2992.72082386], [1516484400000, 0.0001009, 0.0001009, 9.988e-05, 9.988e-05, 77.03042707], [1516484460000, 0.00010088, 0.00010088, 9.969e-05, 9.969e-05, 81.07330907], [1516484520000, 0.00010087, 0.00010089, 9.972e-05, 9.972e-05, 1076.70320507], [1516484580000, 0.00010083, 0.00010083, 0.00010083, 0.00010083, 162.95883109], [1516484640000, 0.00010083, 0.00010083, 0.0001008, 0.0001008, 165.83204709], [1516484700000, 9.981e-05, 9.981e-05, 9.981e-05, 9.981e-05, 598.07017536], [1516484760000, 9.98e-05, 9.98e-05, 9.98e-05, 9.98e-05, 371.67697277], [1516484820000, 9.981e-05, 9.981e-05, 9.981e-05, 9.981e-05, 50.0], [1516485000000, 9.982e-05, 0.00010025, 9.982e-05, 0.00010025, 510.0], [1516485060000, 0.00010024, 0.00010058, 0.00010024, 0.00010025, 558.38132155], [1516485120000, 0.00010058, 0.00010084, 0.00010058, 0.00010084, 2006.30046129], [1516485180000, 9.985e-05, 9.985e-05, 9.985e-05, 9.985e-05, 100.0], [1516485240000, 0.00010083, 0.00010083, 9.991e-05, 9.991e-05, 39.40141268], [1516485300000, 9.99e-05, 0.00010084, 9.99e-05, 0.00010084, 213.99706179], [1516485360000, 0.00010076, 0.00010077, 9.988e-05, 0.00010077, 1967.04112628], [1516485480000, 0.0001, 0.00010077, 9.981e-05, 9.981e-05, 11901.73471248], [1516485540000, 0.00010077, 0.00010077, 0.00010077, 0.00010077, 198.8939009], [1516485600000, 0.00010077, 0.00010131, 9.996e-05, 0.0001013, 3086.29799641], [1516485660000, 9.999e-05, 9.999e-05, 9.999e-05, 9.999e-05, 10.42366356], [1516485720000, 0.00010077, 0.00010127, 0.00010066, 0.00010127, 2245.50172607], [1516485780000, 0.00010124, 0.00010125, 0.00010066, 0.00010066, 256.56600473], [1516485840000, 0.00010066, 0.00010066, 0.0001003, 0.0001003, 1923.80639499], [1516485900000, 0.00010066, 0.0001012, 0.00010066, 0.00010119, 454.00597741], [1516485960000, 0.0001, 0.00010155, 0.0001, 0.00010155, 15284.22829059], [1516486020000, 0.00010155, 0.00010156, 0.0001002, 0.0001002, 1448.24148559], [1516486080000, 0.0001005, 0.00010059, 0.0001005, 0.0001005, 1729.68616285], [1516486140000, 0.00010059, 0.00010196, 0.00010059, 0.00010195, 11902.14274033], [1516486200000, 0.00010041, 0.00010194, 0.00010041, 0.00010041, 5135.04883853], [1516486260000, 0.00010041, 0.00010149, 9.999e-05, 0.00010149, 803.34489843], [1516486320000, 0.00010143, 0.00010144, 0.00010143, 0.00010144, 492.85362247], [1516486380000, 9.999e-05, 0.00010109, 9.985e-05, 9.999e-05, 1784.67343591], [1516486440000, 0.00010002, 0.00010002, 9.996e-05, 9.996e-05, 1830.55830516], [1516486500000, 9.986e-05, 9.996e-05, 9.985e-05, 9.996e-05, 646.70635542], [1516486560000, 0.00010025, 0.00010025, 9.982e-05, 9.982e-05, 231.61030248], [1516486620000, 0.00010026, 0.00010026, 9.981e-05, 9.982e-05, 4492.78951669], [1516486680000, 0.00010049, 0.00010093, 0.00010016, 0.00010092, 1172.56598886], [1516486740000, 0.00010016, 0.00010016, 0.00010008, 0.00010008, 551.57302514], [1516486800000, 0.00010075, 0.00010095, 9.982e-05, 0.00010095, 797.53678259], [1516486860000, 9.982e-05, 9.982e-05, 9.981e-05, 9.981e-05, 387.6375], [1516486920000, 0.00010068, 0.00010068, 0.00010068, 0.00010068, 8.8676228], [1516486980000, 9.982e-05, 0.0001007, 9.982e-05, 0.00010068, 983.3279731], [1516487040000, 0.00010063, 0.00010063, 9.953e-05, 9.982e-05, 12585.15039361], [1516487100000, 9.945e-05, 9.969e-05, 9.938e-05, 9.948e-05, 3576.21307838], [1516487160000, 9.94e-05, 0.00010047, 9.94e-05, 9.942e-05, 3310.51730178], [1516487220000, 0.00010039, 0.0001004, 9.942e-05, 0.00010036, 3473.22776352], [1516487280000, 9.939e-05, 9.939e-05, 9.935e-05, 9.938e-05, 2777.59247401], [1516487340000, 0.00010012, 0.00010012, 0.00010012, 0.00010012, 26.73178801], [1516487400000, 9.935e-05, 0.00010013, 9.935e-05, 0.00010013, 18.67013091], [1516487460000, 9.935e-05, 9.935e-05, 9.935e-05, 9.935e-05, 267.38697151], [1516487520000, 0.00010013, 0.00010013, 9.937e-05, 9.937e-05, 2634.69041], [1516487580000, 0.00010011, 0.00010011, 0.00010011, 0.00010011, 339.21247636], [1516487700000, 0.00010008, 0.00010008, 0.00010008, 0.00010008, 606.73386016], [1516487760000, 9.968e-05, 9.968e-05, 9.967e-05, 9.967e-05, 60.0], [1516487820000, 0.00010036, 0.00010036, 9.967e-05, 9.967e-05, 300.01791292], [1516487880000, 9.967e-05, 9.967e-05, 9.967e-05, 9.967e-05, 164.42307692], [1516487940000, 0.00010037, 0.00010037, 0.00010036, 0.00010036, 280.12655617], [1516488000000, 0.00010035, 0.00010035, 9.935e-05, 0.00010035, 318.42502893], [1516488240000, 9.942e-05, 0.00010027, 9.941e-05, 9.942e-05, 1119.98218837], [1516488300000, 0.00010034, 0.00010036, 9.945e-05, 9.945e-05, 507.39137788], [1516488360000, 0.00010027, 0.00010092, 0.00010026, 0.00010092, 566.14441614], [1516488420000, 0.00010092, 0.00010092, 0.00010092, 0.00010092, 27.0], [1516488480000, 0.00010066, 0.00010066, 9.965e-05, 9.965e-05, 73.51118732], [1516488540000, 9.965e-05, 9.965e-05, 9.965e-05, 9.965e-05, 487.49434925], [1516488600000, 0.00010066, 0.00010066, 0.00010066, 0.00010066, 304.40125502], [1516488660000, 0.00010066, 0.00010093, 9.968e-05, 9.968e-05, 414.09875021], [1516488780000, 9.975e-05, 0.00010092, 9.975e-05, 0.00010092, 232.71525], [1516488840000, 9.976e-05, 9.976e-05, 9.976e-05, 9.976e-05, 77.32800983], [1516488960000, 0.00010089, 0.00010093, 0.00010089, 0.00010093, 627.421965], [1516489020000, 9.988e-05, 9.988e-05, 9.965e-05, 9.965e-05, 1126.17554999], [1516489140000, 0.00010082, 0.00010092, 9.968e-05, 9.968e-05, 464.33631497], [1516489200000, 9.982e-05, 9.982e-05, 9.943e-05, 9.943e-05, 681.14840849], [1516489260000, 0.00010083, 0.00010083, 9.988e-05, 9.988e-05, 222.03021403], [1516489320000, 0.00010078, 0.00010085, 0.00010078, 0.00010084, 442.90711531], [1516489380000, 0.00010072, 0.00010091, 0.00010072, 0.00010088, 38.50238901], [1516489500000, 9.99e-05, 0.00010074, 9.942e-05, 0.00010074, 3390.52465638], [1516489560000, 0.00010073, 0.00010073, 9.941e-05, 9.947e-05, 503.04558633], [1516489620000, 9.948e-05, 0.00010054, 9.948e-05, 0.00010054, 206.32734033], [1516489680000, 9.948e-05, 0.00010054, 9.948e-05, 0.00010054, 144.10555911], [1516489740000, 0.00010052, 0.00010052, 9.959e-05, 9.959e-05, 67.96341363], [1516489800000, 0.0001, 0.0001, 0.0001, 0.0001, 1622.57169144], [1516489860000, 0.0001, 0.00010052, 0.0001, 0.00010052, 1339.65017091], [1516489920000, 0.0001005, 0.0001005, 0.0001, 0.0001, 261.29023446], [1516490040000, 0.0001, 0.0001, 9.96e-05, 0.0001, 1050.52800004], [1516490100000, 0.0001005, 0.0001005, 9.96e-05, 0.0001005, 451.30149493], [1516490220000, 0.00010028, 0.00010054, 0.00010028, 0.00010054, 1586.98735481], [1516490280000, 0.00010054, 0.00010054, 0.00010054, 0.00010054, 556.08891155], [1516490340000, 0.00010054, 0.00010054, 0.00010054, 0.00010054, 10.91467779], [1516490400000, 0.00010054, 0.000102, 9.966e-05, 9.968e-05, 6715.8263176], [1516490460000, 9.987e-05, 9.996e-05, 9.986e-05, 9.987e-05, 5256.69277954], [1516490520000, 9.987e-05, 9.987e-05, 9.987e-05, 9.987e-05, 10.11994713], [1516490580000, 0.00010042, 0.00010131, 9.988e-05, 9.988e-05, 551.12176329], [1516490640000, 0.00010104, 0.00010104, 0.00010104, 0.00010104, 119.19167384], [1516490700000, 9.99e-05, 0.00010095, 9.99e-05, 0.0001, 1424.73576633], [1516490760000, 0.00010005, 0.00010006, 0.0001, 0.0001, 64.3544169], [1516490820000, 0.00010036, 0.00010154, 0.00010036, 0.00010036, 302.08059547], [1516490880000, 0.00010039, 0.00010181, 0.00010036, 0.00010036, 19157.15408172], [1516490940000, 0.00010049, 0.00010049, 0.00010012, 0.00010021, 1209.4210749], [1516491000000, 0.00010012, 0.00010131, 0.0001001, 0.00010099, 6010.30233125], [1516491060000, 0.00010098, 0.00010098, 0.0001009, 0.0001009, 428.40004019], [1516491120000, 0.00010079, 0.00010089, 0.00010079, 0.00010089, 412.84749701], [1516491180000, 0.00010089, 0.00010089, 0.00010025, 0.00010025, 2045.03269039], [1516491240000, 0.00010089, 0.00010098, 0.00010025, 0.00010097, 1960.42493715], [1516491300000, 0.00010097, 0.00010097, 0.00010059, 0.00010059, 3465.52124814], [1516491360000, 0.00010098, 0.00010098, 0.00010098, 0.00010098, 296.34581105], [1516491420000, 0.00010098, 0.00010098, 0.00010026, 0.00010098, 317.46271612], [1516491480000, 0.0001003, 0.00010098, 0.00010027, 0.00010098, 885.13015096], [1516491540000, 0.0001003, 0.0001003, 0.00010027, 0.00010027, 346.41447137], [1516491600000, 0.00010027, 0.0001003, 0.00010027, 0.0001003, 1261.15985174], [1516491660000, 0.0001003, 0.00010153, 0.00010028, 0.00010153, 1581.2629056], [1516491720000, 0.00010029, 0.0001016, 0.00010028, 0.00010157, 587.02365454], [1516491780000, 0.00010152, 0.00010152, 0.00010031, 0.00010037, 418.3624701], [1516491840000, 0.00010153, 0.00010153, 0.00010031, 0.00010114, 12049.81931679], [1516491900000, 0.00010114, 0.00010114, 0.0001003, 0.0001003, 3220.36690824], [1516491960000, 0.0001003, 0.00010153, 0.0001003, 0.00010078, 1451.62238133], [1516492020000, 0.00010079, 0.00010079, 0.00010077, 0.00010077, 2659.04715727], [1516492080000, 0.00010076, 0.000101, 0.00010076, 0.000101, 6443.6983925], [1516492140000, 0.00010102, 0.00010102, 0.00010102, 0.00010102, 100.0], [1516492200000, 0.00010102, 0.00010102, 0.00010102, 0.00010102, 3143.20946332], [1516492320000, 0.0001009, 0.0001009, 0.0001004, 0.0001004, 2894.9115], [1516492380000, 0.00010041, 0.00010148, 0.00010027, 0.00010027, 734.45355199], [1516492440000, 0.0001003, 0.0001003, 0.00010025, 0.00010026, 126.56023726], [1516492500000, 0.00010022, 0.0001013, 0.0001, 0.0001013, 113.89879843], [1516492560000, 0.0001, 0.0001013, 0.0001, 0.00010101, 6862.20907324], [1516492620000, 0.00010101, 0.00010101, 0.00010101, 0.00010101, 27.19554565], [1516492680000, 0.0001009, 0.00010101, 0.0001009, 0.0001009, 357.86538033], [1516492740000, 0.00010105, 0.00010119, 0.000101, 0.000101, 294.94400239], [1516492800000, 0.00010101, 0.00010101, 0.000101, 0.000101, 1593.579], [1516492860000, 0.000101, 0.000101, 0.00010001, 0.00010003, 3542.35681494], [1516492920000, 0.00010003, 0.00010003, 9.9e-05, 9.9e-05, 8553.38927958], [1516492980000, 0.00010001, 0.00010112, 9.902e-05, 0.00010112, 1469.86198911], [1516493040000, 9.999e-05, 9.999e-05, 9.916e-05, 9.929e-05, 567.49200037], [1516493100000, 9.931e-05, 9.977e-05, 9.904e-05, 9.977e-05, 4866.29190965], [1516493160000, 9.988e-05, 0.0001, 9.904e-05, 0.0001, 645.45753515], [1516493220000, 9.904e-05, 0.0001, 9.883e-05, 9.889e-05, 3807.13811282], [1516493280000, 9.898e-05, 0.0001, 9.898e-05, 9.965e-05, 10754.67559203], [1516493340000, 9.963e-05, 9.963e-05, 9.95e-05, 9.95e-05, 447.01517709], [1516493400000, 9.95e-05, 9.978e-05, 9.915e-05, 9.966e-05, 13611.77242576], [1516493460000, 9.964e-05, 0.00010299, 9.964e-05, 0.00010299, 38636.52204315], [1516493520000, 0.00010299, 0.0001031, 9.964e-05, 0.00010022, 48199.83224577], [1516493580000, 0.00010114, 0.00010114, 9.99e-05, 9.993e-05, 846.02941591], [1516493640000, 0.00010097, 0.00010097, 0.00010052, 0.00010068, 687.86367665], [1516493700000, 9.975e-05, 0.00010052, 9.975e-05, 0.00010052, 433.04406338], [1516493760000, 0.0001006, 0.0001006, 0.00010011, 0.00010058, 209.33951856], [1516493820000, 0.0001006, 0.0001006, 0.0001006, 0.0001006, 21.90331606], [1516493880000, 0.0001006, 0.0001006, 0.00010058, 0.00010058, 149.80484505], [1516493940000, 0.00010058, 0.00010058, 9.975e-05, 9.975e-05, 8348.68210277], [1516494000000, 0.00010046, 0.00010058, 9.976e-05, 0.00010057, 1861.0405315], [1516494060000, 9.976e-05, 0.00010004, 9.88e-05, 0.00010004, 10457.28918927], [1516494120000, 9.957e-05, 9.957e-05, 9.9e-05, 9.915e-05, 15297.69882562], [1516494180000, 9.915e-05, 0.00010014, 9.876e-05, 9.888e-05, 11376.98417327], [1516494240000, 9.92e-05, 9.921e-05, 9.886e-05, 9.896e-05, 618.23259651], [1516494300000, 9.92e-05, 9.984e-05, 9.856e-05, 9.856e-05, 16141.5860216], [1516494360000, 9.982e-05, 9.982e-05, 9.87e-05, 9.87e-05, 589.54372491], [1516494420000, 9.955e-05, 9.955e-05, 9.87e-05, 9.948e-05, 1362.15288518], [1516494480000, 9.942e-05, 9.954e-05, 9.859e-05, 9.948e-05, 1045.89845029], [1516494540000, 9.861e-05, 0.00010018, 9.856e-05, 0.00010018, 3451.28317187], [1516494600000, 0.00010007, 0.00010007, 0.00010007, 0.00010007, 16.87778343], [1516494660000, 0.00010006, 0.00010006, 9.915e-05, 9.915e-05, 1346.11855304], [1516494720000, 9.914e-05, 9.992e-05, 9.914e-05, 9.992e-05, 908.46051], [1516494780000, 9.987e-05, 9.987e-05, 9.891e-05, 9.891e-05, 544.54179639], [1516494840000, 9.891e-05, 9.891e-05, 9.856e-05, 9.856e-05, 5998.51553801], [1516494900000, 9.977e-05, 9.977e-05, 9.858e-05, 9.957e-05, 2706.12152283], [1516494960000, 9.957e-05, 9.957e-05, 9.923e-05, 9.923e-05, 1138.27708948], [1516495020000, 9.863e-05, 9.923e-05, 9.858e-05, 9.923e-05, 908.39084259], [1516495080000, 9.954e-05, 9.954e-05, 9.954e-05, 9.954e-05, 125.57765722], [1516495140000, 9.9e-05, 9.914e-05, 9.858e-05, 9.878e-05, 2351.41376753], [1516495200000, 9.878e-05, 9.914e-05, 9.858e-05, 9.858e-05, 180.45334093], [1516495260000, 9.9e-05, 9.914e-05, 9.847e-05, 9.848e-05, 1652.62403574], [1516495320000, 9.908e-05, 9.909e-05, 9.849e-05, 9.909e-05, 293.29022009], [1516495380000, 9.85e-05, 9.908e-05, 9.849e-05, 9.905e-05, 5278.51514628], [1516495440000, 9.89e-05, 9.902e-05, 9.89e-05, 9.902e-05, 362.09955111], [1516495500000, 9.902e-05, 9.902e-05, 9.902e-05, 9.902e-05, 1966.02939935], [1516495560000, 9.902e-05, 9.914e-05, 9.902e-05, 9.909e-05, 3547.81064393], [1516495620000, 9.912e-05, 9.912e-05, 9.89e-05, 9.89e-05, 831.64853384], [1516495680000, 9.892e-05, 9.914e-05, 9.89e-05, 9.904e-05, 3629.90605532], [1516495740000, 9.891e-05, 9.963e-05, 9.89e-05, 9.96e-05, 4940.62867662], [1516495800000, 9.95e-05, 9.95e-05, 9.95e-05, 9.95e-05, 20.10050251], [1516495860000, 9.95e-05, 9.95e-05, 9.95e-05, 9.95e-05, 102.5893071], [1516495920000, 9.896e-05, 9.896e-05, 9.825e-05, 9.825e-05, 27047.57106975], [1516495980000, 9.845e-05, 9.89e-05, 9.845e-05, 9.89e-05, 14689.66334843], [1516496040000, 9.825e-05, 9.89e-05, 9.764e-05, 9.764e-05, 122345.3955048], [1516496100000, 9.765e-05, 9.86e-05, 9.762e-05, 9.848e-05, 35644.47480067], [1516496160000, 9.856e-05, 9.856e-05, 9.7e-05, 9.851e-05, 3344.57003354], [1516496220000, 9.85e-05, 9.85e-05, 9.624e-05, 9.624e-05, 31984.87756963], [1516496280000, 9.624e-05, 9.748e-05, 9.603e-05, 9.603e-05, 25168.63267254], [1516496340000, 9.698e-05, 9.744e-05, 9.6e-05, 9.602e-05, 26212.78765184], [1516496400000, 9.719e-05, 9.719e-05, 9.537e-05, 9.577e-05, 44191.3221271], [1516496460000, 9.66e-05, 9.66e-05, 9.548e-05, 9.637e-05, 20794.0821494], [1516496520000, 9.638e-05, 9.665e-05, 9.582e-05, 9.664e-05, 5638.25017135], [1516496580000, 9.664e-05, 9.729e-05, 9.664e-05, 9.728e-05, 1307.93172187], [1516496640000, 9.664e-05, 9.664e-05, 9.584e-05, 9.584e-05, 341.0531256], [1516496700000, 9.72e-05, 9.849e-05, 9.72e-05, 9.849e-05, 41910.64646552], [1516496760000, 9.859e-05, 9.881e-05, 9.615e-05, 9.662e-05, 3255.82126461], [1516496820000, 9.884e-05, 9.906e-05, 9.877e-05, 9.906e-05, 4863.23432003], [1516496880000, 9.795e-05, 9.906e-05, 9.722e-05, 9.75e-05, 4685.63323912], [1516496940000, 9.787e-05, 9.905e-05, 9.745e-05, 9.754e-05, 42343.83900346], [1516497000000, 9.754e-05, 9.8e-05, 9.737e-05, 9.8e-05, 9632.99639348], [1516497060000, 9.827e-05, 9.827e-05, 9.679e-05, 9.825e-05, 740.93804334], [1516497120000, 9.823e-05, 9.824e-05, 9.704e-05, 9.823e-05, 9644.23639931], [1516497180000, 9.827e-05, 9.827e-05, 9.806e-05, 9.806e-05, 831.03260128], [1516497240000, 9.806e-05, 9.826e-05, 9.764e-05, 9.826e-05, 2528.37766222], [1516497300000, 9.79e-05, 9.79e-05, 9.776e-05, 9.776e-05, 1223.71971682], [1516497360000, 9.825e-05, 9.826e-05, 9.693e-05, 9.826e-05, 529.98852744], [1516497420000, 9.741e-05, 9.859e-05, 9.7e-05, 9.7e-05, 644.97356982], [1516497540000, 9.837e-05, 9.839e-05, 9.721e-05, 9.839e-05, 431.9399973], [1516497600000, 9.83e-05, 9.834e-05, 9.715e-05, 9.83e-05, 239.52531522], [1516497660000, 9.829e-05, 9.829e-05, 9.716e-05, 9.716e-05, 279.17215013], [1516497780000, 9.716e-05, 9.807e-05, 9.716e-05, 9.807e-05, 309.78446863], [1516497840000, 9.812e-05, 9.812e-05, 9.812e-05, 9.812e-05, 38.6025283], [1516497900000, 9.831e-05, 9.833e-05, 9.716e-05, 9.833e-05, 1684.46009908], [1516497960000, 9.833e-05, 9.833e-05, 9.735e-05, 9.735e-05, 1070.04425974], [1516498020000, 9.718e-05, 9.735e-05, 9.717e-05, 9.717e-05, 499.99609721], [1516498080000, 9.718e-05, 9.832e-05, 9.718e-05, 9.719e-05, 3136.13020034], [1516498140000, 9.833e-05, 9.861e-05, 9.72e-05, 9.734e-05, 8699.67673093], [1516498200000, 9.829e-05, 9.883e-05, 9.769e-05, 9.883e-05, 2234.96856837], [1516498260000, 9.883e-05, 9.883e-05, 9.765e-05, 9.765e-05, 16601.76925097], [1516498320000, 9.873e-05, 9.873e-05, 9.873e-05, 9.873e-05, 61.60900923], [1516498380000, 9.756e-05, 9.869e-05, 9.739e-05, 9.739e-05, 3636.42735116], [1516498440000, 9.739e-05, 9.861e-05, 9.739e-05, 9.855e-05, 872.15210415], [1516498500000, 9.841e-05, 9.841e-05, 9.742e-05, 9.742e-05, 1613.25665157], [1516498560000, 9.81e-05, 9.81e-05, 9.727e-05, 9.74e-05, 6926.79713913], [1516498620000, 9.74e-05, 9.74e-05, 9.729e-05, 9.74e-05, 578.62108095], [1516498680000, 9.741e-05, 9.741e-05, 9.741e-05, 9.741e-05, 300.0], [1516498740000, 9.741e-05, 9.793e-05, 9.727e-05, 9.793e-05, 3170.79540088], [1516498800000, 9.742e-05, 9.744e-05, 9.742e-05, 9.744e-05, 500.90367202], [1516498860000, 9.76e-05, 9.785e-05, 9.746e-05, 9.746e-05, 1016.2955099], [1516498920000, 9.785e-05, 9.803e-05, 9.785e-05, 9.787e-05, 1510.22513649], [1516498980000, 9.834e-05, 9.834e-05, 9.787e-05, 9.834e-05, 971.33734845], [1516499040000, 9.819e-05, 9.835e-05, 9.77e-05, 9.772e-05, 1232.40670616], [1516499100000, 9.772e-05, 9.834e-05, 9.755e-05, 9.833e-05, 350.62281898], [1516499160000, 9.834e-05, 9.834e-05, 9.834e-05, 9.834e-05, 539.96339231], [1516499220000, 9.787e-05, 9.905e-05, 9.757e-05, 9.812e-05, 3179.03518456], [1516499280000, 9.766e-05, 9.766e-05, 9.759e-05, 9.766e-05, 2104.5385166], [1516499340000, 9.77e-05, 9.77e-05, 9.766e-05, 9.766e-05, 2756.79905203], [1516499400000, 9.766e-05, 9.874e-05, 9.766e-05, 9.874e-05, 428.69056078], [1516499460000, 9.8e-05, 9.8e-05, 9.758e-05, 9.758e-05, 699.86120554], [1516499520000, 9.758e-05, 9.758e-05, 9.758e-05, 9.758e-05, 269.25083542], [1516499640000, 9.867e-05, 9.905e-05, 9.7e-05, 9.858e-05, 16378.63264767], [1516499760000, 9.857e-05, 9.859e-05, 9.857e-05, 9.858e-05, 142.71492915], [1516499820000, 9.761e-05, 9.761e-05, 9.736e-05, 9.736e-05, 290.0], [1516499880000, 9.857e-05, 9.904e-05, 9.739e-05, 9.9e-05, 769.97128438], [1516499940000, 9.899e-05, 9.9e-05, 9.765e-05, 9.765e-05, 570.44855719], [1516500000000, 9.769e-05, 9.769e-05, 9.767e-05, 9.768e-05, 712.88551199], [1516500060000, 9.757e-05, 9.757e-05, 9.757e-05, 9.757e-05, 243.30022609], [1516500120000, 9.756e-05, 9.757e-05, 9.755e-05, 9.755e-05, 270.92046559], [1516500180000, 9.739e-05, 9.756e-05, 9.739e-05, 9.756e-05, 2743.77679676], [1516500240000, 9.757e-05, 9.768e-05, 9.755e-05, 9.756e-05, 5254.6687442], [1516500300000, 9.756e-05, 9.756e-05, 9.756e-05, 9.756e-05, 391.72768502], [1516500360000, 9.768e-05, 9.768e-05, 9.768e-05, 9.768e-05, 14.55970727], [1516500420000, 9.767e-05, 9.904e-05, 9.767e-05, 9.904e-05, 1225.17355914], [1516500480000, 9.903e-05, 9.903e-05, 9.786e-05, 9.787e-05, 221.16907292], [1516500540000, 9.901e-05, 9.901e-05, 9.75e-05, 9.75e-05, 2598.60579915], [1516500600000, 9.75e-05, 9.844e-05, 9.749e-05, 9.844e-05, 1680.16947784], [1516500660000, 9.845e-05, 9.898e-05, 9.845e-05, 9.898e-05, 327.86936129], [1516500720000, 9.777e-05, 9.777e-05, 9.729e-05, 9.729e-05, 15.26869545], [1516500780000, 9.844e-05, 9.844e-05, 9.729e-05, 9.844e-05, 1223.34396719], [1516500840000, 9.844e-05, 9.844e-05, 9.844e-05, 9.844e-05, 158.6569304], [1516500900000, 9.843e-05, 9.885e-05, 9.843e-05, 9.885e-05, 56.69547237], [1516501200000, 9.78e-05, 9.78e-05, 9.725e-05, 9.78e-05, 472.76984953], [1516501260000, 9.78e-05, 9.78e-05, 9.725e-05, 9.725e-05, 149.06266903], [1516501320000, 9.78e-05, 9.839e-05, 9.729e-05, 9.729e-05, 3087.92496836], [1516501380000, 9.729e-05, 9.82e-05, 9.641e-05, 9.82e-05, 16647.34553092], [1516501440000, 9.729e-05, 9.729e-05, 9.64e-05, 9.64e-05, 1005.83298388], [1516501500000, 9.791e-05, 9.791e-05, 9.784e-05, 9.784e-05, 305.58135207], [1516501560000, 9.755e-05, 9.755e-05, 9.752e-05, 9.752e-05, 226.38196384], [1516501620000, 9.73e-05, 9.73e-05, 9.726e-05, 9.729e-05, 13097.6296315], [1516501680000, 9.658e-05, 9.658e-05, 9.657e-05, 9.657e-05, 100.0], [1516501740000, 9.657e-05, 9.779e-05, 9.656e-05, 9.779e-05, 138.54370118], [1516501800000, 9.66e-05, 9.719e-05, 9.66e-05, 9.662e-05, 113.53634238], [1516501860000, 9.669e-05, 9.823e-05, 9.668e-05, 9.813e-05, 3616.16047683], [1516501920000, 9.684e-05, 9.684e-05, 9.683e-05, 9.683e-05, 32.02858309], [1516501980000, 9.745e-05, 9.745e-05, 9.681e-05, 9.681e-05, 987.05598845], [1516502040000, 9.71e-05, 9.71e-05, 9.64e-05, 9.663e-05, 18066.02378877], [1516502100000, 9.662e-05, 9.729e-05, 9.614e-05, 9.722e-05, 32179.1791627], [1516502160000, 9.777e-05, 9.777e-05, 9.774e-05, 9.774e-05, 3527.08301306], [1516502220000, 9.763e-05, 9.763e-05, 9.763e-05, 9.763e-05, 147.4685618], [1516502280000, 9.637e-05, 9.653e-05, 9.637e-05, 9.639e-05, 1399.19346828], [1516502340000, 9.653e-05, 9.707e-05, 9.618e-05, 9.618e-05, 3238.4604863], [1516502400000, 9.622e-05, 9.723e-05, 9.622e-05, 9.712e-05, 984.46038863], [1516502460000, 9.712e-05, 9.712e-05, 9.626e-05, 9.689e-05, 882.10993284], [1516502520000, 9.689e-05, 9.689e-05, 9.674e-05, 9.689e-05, 2840.08262037], [1516502580000, 9.69e-05, 9.693e-05, 9.659e-05, 9.66e-05, 273.08986732], [1516502640000, 9.702e-05, 9.78e-05, 9.702e-05, 9.78e-05, 158.42484521], [1516502700000, 9.773e-05, 9.773e-05, 9.773e-05, 9.773e-05, 114.48133874], [1516502760000, 9.745e-05, 9.745e-05, 9.616e-05, 9.724e-05, 3810.53426307], [1516502820000, 9.7e-05, 9.701e-05, 9.616e-05, 9.701e-05, 8771.05691814], [1516502880000, 9.647e-05, 9.725e-05, 9.616e-05, 9.717e-05, 16915.07920101], [1516502940000, 9.707e-05, 9.707e-05, 9.701e-05, 9.701e-05, 151.49644499], [1516503000000, 9.701e-05, 9.701e-05, 9.62e-05, 9.621e-05, 2261.36716561], [1516503060000, 9.621e-05, 9.772e-05, 9.619e-05, 9.735e-05, 3207.07653091], [1516503120000, 9.628e-05, 9.684e-05, 9.628e-05, 9.684e-05, 511.23613499], [1516503180000, 9.65e-05, 9.721e-05, 9.634e-05, 9.649e-05, 1096.46636131], [1516503240000, 9.648e-05, 9.648e-05, 9.63e-05, 9.648e-05, 439.87647898], [1516503300000, 9.633e-05, 9.738e-05, 9.63e-05, 9.728e-05, 3437.21661944], [1516503360000, 9.724e-05, 9.724e-05, 9.642e-05, 9.642e-05, 384.89715094], [1516503420000, 9.642e-05, 9.673e-05, 9.632e-05, 9.632e-05, 3274.16590382], [1516503480000, 9.673e-05, 9.673e-05, 9.673e-05, 9.673e-05, 247.35434709], [1516503540000, 9.665e-05, 9.665e-05, 9.665e-05, 9.665e-05, 642.71462044], [1516503600000, 9.628e-05, 9.668e-05, 9.619e-05, 9.619e-05, 11253.92959409], [1516503660000, 9.619e-05, 9.668e-05, 9.619e-05, 9.619e-05, 3524.00594966], [1516503720000, 9.668e-05, 9.673e-05, 9.619e-05, 9.673e-05, 1038.06492471], [1516503780000, 9.673e-05, 9.673e-05, 9.673e-05, 9.673e-05, 32.78255979], [1516503840000, 9.673e-05, 9.699e-05, 9.619e-05, 9.699e-05, 27853.60072126], [1516503900000, 9.696e-05, 9.726e-05, 9.688e-05, 9.688e-05, 3338.59419893], [1516503960000, 9.688e-05, 9.724e-05, 9.688e-05, 9.699e-05, 2561.69248318], [1516504020000, 9.699e-05, 9.699e-05, 9.688e-05, 9.688e-05, 6385.10707425], [1516504080000, 9.673e-05, 9.688e-05, 9.619e-05, 9.619e-05, 4992.9275442], [1516504140000, 9.658e-05, 9.722e-05, 9.555e-05, 9.687e-05, 11312.86969219], [1516504200000, 9.717e-05, 9.717e-05, 9.565e-05, 9.565e-05, 5093.04829858], [1516504260000, 9.663e-05, 9.669e-05, 9.66e-05, 9.66e-05, 877.41837956], [1516504320000, 9.571e-05, 9.691e-05, 9.571e-05, 9.691e-05, 3714.82565916], [1516504380000, 9.6e-05, 9.6e-05, 9.565e-05, 9.565e-05, 1273.24872595], [1516504440000, 9.575e-05, 9.673e-05, 9.575e-05, 9.673e-05, 360.49880023], [1516504500000, 9.673e-05, 9.706e-05, 9.673e-05, 9.673e-05, 2473.92479129], [1516504560000, 9.673e-05, 9.676e-05, 9.673e-05, 9.673e-05, 4535.27017477], [1516504620000, 9.709e-05, 9.725e-05, 9.673e-05, 9.725e-05, 24296.1588672], [1516504680000, 9.743e-05, 9.743e-05, 9.586e-05, 9.69e-05, 3538.13981281], [1516504740000, 9.688e-05, 9.688e-05, 9.655e-05, 9.655e-05, 905.01358609], [1516504800000, 9.653e-05, 9.655e-05, 9.649e-05, 9.649e-05, 261.35934382], [1516504860000, 9.649e-05, 9.655e-05, 9.645e-05, 9.647e-05, 11184.55197967], [1516504920000, 9.655e-05, 9.747e-05, 9.655e-05, 9.747e-05, 343.08890194], [1516504980000, 9.725e-05, 9.725e-05, 9.655e-05, 9.655e-05, 2027.4482519], [1516505040000, 9.647e-05, 9.647e-05, 9.556e-05, 9.64e-05, 4792.11334775], [1516505100000, 9.642e-05, 9.643e-05, 9.635e-05, 9.635e-05, 661.84650062], [1516505160000, 9.638e-05, 9.638e-05, 9.638e-05, 9.638e-05, 8.14423427], [1516505220000, 9.635e-05, 9.697e-05, 9.564e-05, 9.697e-05, 1558.54856646], [1516505280000, 9.679e-05, 9.679e-05, 9.573e-05, 9.671e-05, 5929.75220243], [1516505340000, 9.669e-05, 9.669e-05, 9.57e-05, 9.655e-05, 1321.63342941], [1516505400000, 9.653e-05, 9.653e-05, 9.562e-05, 9.6e-05, 10311.54992153], [1516505460000, 9.6e-05, 9.652e-05, 9.579e-05, 9.639e-05, 5098.97831313], [1516505520000, 9.611e-05, 9.641e-05, 9.611e-05, 9.611e-05, 3859.09737608], [1516505580000, 9.611e-05, 9.641e-05, 9.611e-05, 9.639e-05, 6178.60395647], [1516505640000, 9.634e-05, 9.639e-05, 9.562e-05, 9.562e-05, 5062.50811083], [1516505700000, 9.639e-05, 9.639e-05, 9.562e-05, 9.564e-05, 6163.35288893], [1516505760000, 9.601e-05, 9.635e-05, 9.562e-05, 9.562e-05, 1948.47937058], [1516505820000, 9.633e-05, 9.633e-05, 9.563e-05, 9.618e-05, 5671.12605597], [1516505880000, 9.563e-05, 9.638e-05, 9.555e-05, 9.555e-05, 7628.36621534], [1516505940000, 9.6e-05, 9.6e-05, 9.55e-05, 9.6e-05, 6439.08156151], [1516506000000, 9.599e-05, 9.6e-05, 9.55e-05, 9.6e-05, 14377.47049741], [1516506060000, 9.635e-05, 9.635e-05, 9.6e-05, 9.63e-05, 836.30550581], [1516506120000, 9.625e-05, 9.625e-05, 9.625e-05, 9.625e-05, 77.28155744], [1516506180000, 9.56e-05, 9.629e-05, 9.537e-05, 9.629e-05, 10850.27109015], [1516506240000, 9.537e-05, 9.637e-05, 9.536e-05, 9.536e-05, 9035.15479922], [1516506300000, 9.634e-05, 9.634e-05, 9.537e-05, 9.539e-05, 3573.02661201], [1516506360000, 9.537e-05, 9.635e-05, 9.536e-05, 9.536e-05, 17010.98679869], [1516506420000, 9.536e-05, 9.536e-05, 9.536e-05, 9.536e-05, 6531.12377391], [1516506480000, 9.602e-05, 9.634e-05, 9.537e-05, 9.634e-05, 4799.43285127], [1516506540000, 9.631e-05, 9.643e-05, 9.562e-05, 9.567e-05, 2940.88850377], [1516506600000, 9.567e-05, 9.65e-05, 9.567e-05, 9.571e-05, 6018.38504358], [1516506660000, 9.571e-05, 9.643e-05, 9.537e-05, 9.643e-05, 7897.810201], [1516506720000, 9.625e-05, 9.747e-05, 9.538e-05, 9.688e-05, 3475.39213352], [1516506780000, 9.673e-05, 9.673e-05, 9.668e-05, 9.668e-05, 214.77284514], [1516506840000, 9.633e-05, 9.642e-05, 9.548e-05, 9.548e-05, 3217.22542718], [1516506900000, 9.619e-05, 9.673e-05, 9.619e-05, 9.665e-05, 3545.22190511], [1516506960000, 9.637e-05, 9.637e-05, 9.637e-05, 9.637e-05, 365.61924129], [1516507080000, 9.549e-05, 9.584e-05, 9.536e-05, 9.537e-05, 13886.17345033], [1516507140000, 9.536e-05, 9.603e-05, 9.509e-05, 9.597e-05, 12599.11428806], [1516507200000, 9.511e-05, 9.553e-05, 9.511e-05, 9.542e-05, 6357.90080874], [1516507260000, 9.543e-05, 9.663e-05, 9.543e-05, 9.545e-05, 3664.86818579], [1516507320000, 9.577e-05, 9.588e-05, 9.542e-05, 9.588e-05, 14784.81640479], [1516507380000, 9.55e-05, 9.635e-05, 9.41e-05, 9.434e-05, 43951.44892954], [1516507440000, 9.434e-05, 9.573e-05, 9.41e-05, 9.499e-05, 8016.14503586], [1516507500000, 9.568e-05, 9.568e-05, 9.369e-05, 9.369e-05, 28613.04524894], [1516507560000, 9.37e-05, 9.532e-05, 9.369e-05, 9.49e-05, 23539.55729982], [1516507620000, 9.488e-05, 9.488e-05, 9.321e-05, 9.456e-05, 9406.61243529], [1516507680000, 9.343e-05, 9.456e-05, 9.321e-05, 9.442e-05, 11209.25409283], [1516507740000, 9.444e-05, 9.444e-05, 9.354e-05, 9.421e-05, 1699.46686731], [1516507800000, 9.4e-05, 9.52e-05, 9.4e-05, 9.421e-05, 9430.21818348], [1516507860000, 9.423e-05, 9.516e-05, 9.421e-05, 9.423e-05, 1263.43964012], [1516507920000, 9.515e-05, 9.577e-05, 9.424e-05, 9.515e-05, 426.14325152], [1516507980000, 9.436e-05, 9.492e-05, 9.435e-05, 9.492e-05, 781.79477506], [1516508040000, 9.573e-05, 9.65e-05, 9.495e-05, 9.576e-05, 40826.35420747], [1516508100000, 9.575e-05, 9.676e-05, 9.439e-05, 9.498e-05, 1541.44640638], [1516508160000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 150.02514102], [1516508220000, 9.552e-05, 9.633e-05, 9.552e-05, 9.633e-05, 356.37393792], [1516508280000, 9.564e-05, 9.564e-05, 9.55e-05, 9.55e-05, 396.79204739], [1516508340000, 9.599e-05, 9.6e-05, 9.445e-05, 9.6e-05, 1329.88837119], [1516508400000, 9.595e-05, 9.633e-05, 9.462e-05, 9.633e-05, 4225.04451595], [1516508460000, 9.499e-05, 9.6e-05, 9.499e-05, 9.499e-05, 472.3360244], [1516508520000, 9.502e-05, 9.633e-05, 9.463e-05, 9.464e-05, 2026.0280231], [1516508580000, 9.598e-05, 9.599e-05, 9.598e-05, 9.599e-05, 1340.95094224], [1516508640000, 9.477e-05, 9.484e-05, 9.45e-05, 9.484e-05, 1013.27988797], [1516508700000, 9.577e-05, 9.59e-05, 9.576e-05, 9.587e-05, 1730.19346635], [1516508760000, 9.501e-05, 9.633e-05, 9.501e-05, 9.633e-05, 4640.70883795], [1516508820000, 9.631e-05, 9.633e-05, 9.532e-05, 9.532e-05, 1948.30651082], [1516508880000, 9.532e-05, 9.532e-05, 9.532e-05, 9.532e-05, 353.57892991], [1516508940000, 9.536e-05, 9.633e-05, 9.429e-05, 9.429e-05, 4502.01377663], [1516509000000, 9.466e-05, 9.61e-05, 9.403e-05, 9.61e-05, 3377.64114928], [1516509060000, 9.598e-05, 9.598e-05, 9.597e-05, 9.597e-05, 40.50257241], [1516509120000, 9.587e-05, 9.593e-05, 9.585e-05, 9.593e-05, 18432.41779594], [1516509180000, 9.494e-05, 9.557e-05, 9.48e-05, 9.557e-05, 2668.05256868], [1516509240000, 9.499e-05, 9.499e-05, 9.495e-05, 9.495e-05, 990.0], [1516509300000, 9.584e-05, 9.645e-05, 9.584e-05, 9.645e-05, 296.73796151], [1516509360000, 9.584e-05, 9.614e-05, 9.584e-05, 9.614e-05, 265.88845142], [1516509420000, 9.584e-05, 9.584e-05, 9.499e-05, 9.499e-05, 99.05977054], [1516509480000, 9.499e-05, 9.611e-05, 9.448e-05, 9.492e-05, 19301.66488334], [1516509540000, 9.448e-05, 9.602e-05, 9.416e-05, 9.57e-05, 3346.39671173], [1516509600000, 9.56e-05, 9.57e-05, 9.428e-05, 9.432e-05, 5250.82976764], [1516509660000, 9.524e-05, 9.536e-05, 9.435e-05, 9.507e-05, 685.24946698], [1516509720000, 9.526e-05, 9.526e-05, 9.526e-05, 9.526e-05, 711.05111543], [1516509780000, 9.583e-05, 9.583e-05, 9.565e-05, 9.565e-05, 180.40899592], [1516509840000, 9.533e-05, 9.533e-05, 9.533e-05, 9.533e-05, 272.02720272], [1516509900000, 9.533e-05, 9.604e-05, 9.533e-05, 9.604e-05, 2248.52819971], [1516509960000, 9.454e-05, 9.454e-05, 9.453e-05, 9.454e-05, 2718.84530349], [1516510020000, 9.601e-05, 9.601e-05, 9.593e-05, 9.593e-05, 95.89035892], [1516510080000, 9.491e-05, 9.578e-05, 9.45e-05, 9.45e-05, 529.26808399], [1516510140000, 9.451e-05, 9.573e-05, 9.432e-05, 9.432e-05, 7146.66760074], [1516510200000, 9.564e-05, 9.567e-05, 9.564e-05, 9.567e-05, 420.15050167], [1516510260000, 9.556e-05, 9.556e-05, 9.432e-05, 9.432e-05, 225.71096116], [1516510320000, 9.432e-05, 9.538e-05, 9.432e-05, 9.538e-05, 231.6392792], [1516510380000, 9.539e-05, 9.539e-05, 9.538e-05, 9.538e-05, 259.73617564], [1516510440000, 9.433e-05, 9.533e-05, 9.364e-05, 9.533e-05, 17151.31197296], [1516510500000, 9.533e-05, 9.559e-05, 9.351e-05, 9.5e-05, 14721.20655548], [1516510560000, 9.436e-05, 9.487e-05, 9.34e-05, 9.45e-05, 4189.26974489], [1516510620000, 9.446e-05, 9.521e-05, 9.3e-05, 9.3e-05, 18013.794853], [1516510680000, 9.31e-05, 9.483e-05, 9.31e-05, 9.418e-05, 2182.9818394], [1516510740000, 9.413e-05, 9.418e-05, 9.325e-05, 9.418e-05, 1636.30998351], [1516510800000, 9.418e-05, 9.418e-05, 9.38e-05, 9.392e-05, 8042.75107903], [1516510860000, 9.39e-05, 9.4e-05, 9.3e-05, 9.3e-05, 9277.05906907], [1516510920000, 9.337e-05, 9.46e-05, 9.3e-05, 9.3e-05, 29524.98059267], [1516510980000, 9.3e-05, 9.412e-05, 9.278e-05, 9.281e-05, 12450.76848128], [1516511040000, 9.318e-05, 9.388e-05, 9.318e-05, 9.37e-05, 8980.85695971], [1516511100000, 9.372e-05, 9.372e-05, 9.37e-05, 9.37e-05, 940.47030037], [1516511160000, 9.37e-05, 9.37e-05, 9.37e-05, 9.37e-05, 15.84451251], [1516511220000, 9.37e-05, 9.37e-05, 9.35e-05, 9.368e-05, 149.60204875], [1516511280000, 9.365e-05, 9.367e-05, 9.351e-05, 9.364e-05, 12929.73305988], [1516511340000, 9.366e-05, 9.476e-05, 9.357e-05, 9.357e-05, 40964.97019796], [1516511400000, 9.475e-05, 9.476e-05, 9.362e-05, 9.44e-05, 27340.22124125], [1516511460000, 9.44e-05, 9.533e-05, 9.44e-05, 9.533e-05, 11210.2062101], [1516511520000, 9.55e-05, 9.681e-05, 9.441e-05, 9.681e-05, 52757.25140781], [1516511580000, 9.522e-05, 9.681e-05, 9.454e-05, 9.488e-05, 14229.7563477], [1516511640000, 9.487e-05, 9.491e-05, 9.471e-05, 9.471e-05, 3254.54896671], [1516511700000, 9.608e-05, 9.608e-05, 9.48e-05, 9.48e-05, 10419.84150608], [1516511760000, 9.48e-05, 9.483e-05, 9.44e-05, 9.451e-05, 6925.25418489], [1516511820000, 9.467e-05, 9.467e-05, 9.451e-05, 9.451e-05, 146.48378066], [1516511880000, 9.467e-05, 9.469e-05, 9.451e-05, 9.451e-05, 704.53816672], [1516511940000, 9.457e-05, 9.459e-05, 9.441e-05, 9.441e-05, 24614.09278971], [1516512000000, 9.44e-05, 9.516e-05, 9.44e-05, 9.516e-05, 10256.69188496], [1516512060000, 9.511e-05, 9.522e-05, 9.459e-05, 9.522e-05, 7409.65268835], [1516512120000, 9.52e-05, 9.55e-05, 9.52e-05, 9.537e-05, 3415.77687685], [1516512180000, 9.533e-05, 9.641e-05, 9.468e-05, 9.607e-05, 18889.75388244], [1516512240000, 9.479e-05, 9.479e-05, 9.478e-05, 9.478e-05, 3497.4627339], [1516512300000, 9.603e-05, 9.628e-05, 9.478e-05, 9.48e-05, 9758.5650994], [1516512360000, 9.48e-05, 9.615e-05, 9.46e-05, 9.615e-05, 2951.21100658], [1516512420000, 9.635e-05, 9.635e-05, 9.612e-05, 9.612e-05, 7301.23108359], [1516512480000, 9.508e-05, 9.629e-05, 9.508e-05, 9.51e-05, 310.55310063], [1516512540000, 9.575e-05, 9.645e-05, 9.535e-05, 9.645e-05, 10567.9839235], [1516512600000, 9.644e-05, 9.645e-05, 9.501e-05, 9.633e-05, 11793.23993178], [1516512720000, 9.572e-05, 9.572e-05, 9.572e-05, 9.572e-05, 18.2786714], [1516512780000, 9.554e-05, 9.554e-05, 9.302e-05, 9.347e-05, 24305.87554836], [1516512840000, 9.508e-05, 9.509e-05, 9.508e-05, 9.509e-05, 31.27524088], [1516512900000, 9.502e-05, 9.506e-05, 9.499e-05, 9.499e-05, 2051.41116325], [1516512960000, 9.499e-05, 9.501e-05, 9.499e-05, 9.499e-05, 720.87303939], [1516513020000, 9.499e-05, 9.506e-05, 9.496e-05, 9.506e-05, 7263.92829111], [1516513080000, 9.388e-05, 9.388e-05, 9.375e-05, 9.375e-05, 315.92339881], [1516513140000, 9.499e-05, 9.499e-05, 9.388e-05, 9.388e-05, 196.10989103], [1516513200000, 9.39e-05, 9.39e-05, 9.301e-05, 9.301e-05, 12586.59077273], [1516513260000, 9.318e-05, 9.444e-05, 9.278e-05, 9.444e-05, 14076.58194607], [1516513320000, 9.442e-05, 9.442e-05, 9.395e-05, 9.405e-05, 5017.24270411], [1516513380000, 9.405e-05, 9.489e-05, 9.405e-05, 9.489e-05, 5714.60406224], [1516513440000, 9.479e-05, 9.479e-05, 9.479e-05, 9.479e-05, 128.96926076], [1516513500000, 9.391e-05, 9.478e-05, 9.388e-05, 9.4e-05, 3376.31676616], [1516513560000, 9.4e-05, 9.4e-05, 9.302e-05, 9.306e-05, 7633.29006492], [1516513620000, 9.436e-05, 9.436e-05, 9.31e-05, 9.426e-05, 575.11971262], [1516513680000, 9.41e-05, 9.478e-05, 9.41e-05, 9.478e-05, 9704.19761112], [1516513740000, 9.415e-05, 9.415e-05, 9.376e-05, 9.413e-05, 1503.01939438], [1516513800000, 9.339e-05, 9.339e-05, 9.339e-05, 9.339e-05, 9.20493156], [1516513860000, 9.344e-05, 9.344e-05, 9.344e-05, 9.344e-05, 340.0], [1516513920000, 9.474e-05, 9.599e-05, 9.376e-05, 9.402e-05, 7140.50981471], [1516513980000, 9.404e-05, 9.6e-05, 9.404e-05, 9.6e-05, 4381.52149668], [1516514040000, 9.437e-05, 9.745e-05, 9.437e-05, 9.586e-05, 3099.66065137], [1516514100000, 9.496e-05, 9.586e-05, 9.496e-05, 9.586e-05, 3212.73055307], [1516514220000, 9.547e-05, 9.548e-05, 9.433e-05, 9.433e-05, 598.55960233], [1516514280000, 9.538e-05, 9.585e-05, 9.4e-05, 9.4e-05, 5200.54211013], [1516514340000, 9.4e-05, 9.434e-05, 9.367e-05, 9.367e-05, 7015.92406345], [1516514400000, 9.434e-05, 9.434e-05, 9.434e-05, 9.434e-05, 2147.32828948], [1516514460000, 9.434e-05, 9.434e-05, 9.367e-05, 9.367e-05, 534.64334053], [1516514520000, 9.434e-05, 9.434e-05, 9.434e-05, 9.434e-05, 147.2563283], [1516514580000, 9.405e-05, 9.405e-05, 9.367e-05, 9.367e-05, 1275.52291537], [1516514640000, 9.365e-05, 9.434e-05, 9.365e-05, 9.434e-05, 661.20586333], [1516514700000, 9.397e-05, 9.397e-05, 9.365e-05, 9.367e-05, 1689.0], [1516514760000, 9.367e-05, 9.367e-05, 9.36e-05, 9.36e-05, 277.08333333], [1516514820000, 9.434e-05, 9.434e-05, 9.388e-05, 9.388e-05, 173.62851809], [1516514880000, 9.433e-05, 9.434e-05, 9.392e-05, 9.406e-05, 3900.80597247], [1516514940000, 9.434e-05, 9.583e-05, 9.416e-05, 9.416e-05, 797.10885324], [1516515000000, 9.415e-05, 9.415e-05, 9.368e-05, 9.368e-05, 729.648], [1516515060000, 9.448e-05, 9.51e-05, 9.37e-05, 9.37e-05, 3634.31534316], [1516515180000, 9.373e-05, 9.373e-05, 9.373e-05, 9.373e-05, 100.0], [1516515240000, 9.374e-05, 9.374e-05, 9.37e-05, 9.37e-05, 2604.59811453], [1516515300000, 9.464e-05, 9.5e-05, 9.372e-05, 9.372e-05, 3430.1378], [1516515360000, 9.373e-05, 9.375e-05, 9.37e-05, 9.37e-05, 1252.01285381], [1516515420000, 9.37e-05, 9.5e-05, 9.368e-05, 9.368e-05, 2576.23895943], [1516515480000, 9.37e-05, 9.549e-05, 9.369e-05, 9.549e-05, 3066.08043796], [1516515540000, 9.372e-05, 9.372e-05, 9.372e-05, 9.372e-05, 158.96554835], [1516515600000, 9.372e-05, 9.372e-05, 9.346e-05, 9.372e-05, 1242.96557193], [1516515660000, 9.346e-05, 9.346e-05, 9.31e-05, 9.31e-05, 13845.81002582], [1516515720000, 9.369e-05, 9.464e-05, 9.305e-05, 9.443e-05, 4984.70630375], [1516515780000, 9.462e-05, 9.465e-05, 9.303e-05, 9.304e-05, 24623.11044659], [1516515840000, 9.35e-05, 9.464e-05, 9.313e-05, 9.321e-05, 10980.54630861], [1516515900000, 9.321e-05, 9.321e-05, 9.304e-05, 9.305e-05, 2779.3788266], [1516515960000, 9.305e-05, 9.437e-05, 9.305e-05, 9.437e-05, 4819.36461567], [1516516020000, 9.429e-05, 9.429e-05, 9.392e-05, 9.392e-05, 332.098603], [1516516080000, 9.314e-05, 9.388e-05, 9.314e-05, 9.387e-05, 3404.59179214], [1516516140000, 9.348e-05, 9.437e-05, 9.303e-05, 9.379e-05, 33871.21921466], [1516516200000, 9.38e-05, 9.381e-05, 9.29e-05, 9.38e-05, 5950.76800933], [1516516260000, 9.38e-05, 9.38e-05, 9.38e-05, 9.38e-05, 62.75690693], [1516516320000, 9.38e-05, 9.381e-05, 9.292e-05, 9.294e-05, 3884.8673336], [1516516440000, 9.43e-05, 9.43e-05, 9.396e-05, 9.429e-05, 939.01136825], [1516516500000, 9.43e-05, 9.43e-05, 9.43e-05, 9.43e-05, 152.36023595], [1516516560000, 9.43e-05, 9.43e-05, 9.325e-05, 9.325e-05, 3082.77895951], [1516516620000, 9.425e-05, 9.43e-05, 9.425e-05, 9.43e-05, 495.55233535], [1516516680000, 9.42e-05, 9.42e-05, 9.42e-05, 9.42e-05, 8.35697452], [1516516740000, 9.42e-05, 9.43e-05, 9.42e-05, 9.43e-05, 624.7526284], [1516516800000, 9.419e-05, 9.43e-05, 9.324e-05, 9.328e-05, 2907.3278487], [1516516860000, 9.43e-05, 9.45e-05, 9.335e-05, 9.335e-05, 326.29346965], [1516517040000, 9.359e-05, 9.359e-05, 9.359e-05, 9.359e-05, 349.26852096], [1516517100000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 310.87348108], [1516517160000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 62.23520463], [1516517220000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 956.62850926], [1516517280000, 9.37e-05, 9.605e-05, 9.37e-05, 9.605e-05, 4566.19301187], [1516517340000, 9.392e-05, 9.64e-05, 9.391e-05, 9.628e-05, 7451.10328224], [1516517400000, 9.621e-05, 9.64e-05, 9.474e-05, 9.474e-05, 36529.51026987], [1516517460000, 9.474e-05, 9.492e-05, 9.425e-05, 9.474e-05, 7123.35265777], [1516517520000, 9.48e-05, 9.573e-05, 9.426e-05, 9.426e-05, 635.97011978], [1516517580000, 9.41e-05, 9.504e-05, 9.393e-05, 9.393e-05, 938.61960801], [1516517640000, 9.393e-05, 9.514e-05, 9.393e-05, 9.514e-05, 14308.5690684], [1516517760000, 9.401e-05, 9.401e-05, 9.394e-05, 9.394e-05, 1750.43662368], [1516517820000, 9.4e-05, 9.518e-05, 9.394e-05, 9.518e-05, 874.86678469], [1516517880000, 9.5e-05, 9.5e-05, 9.393e-05, 9.471e-05, 10970.55235386], [1516517940000, 9.395e-05, 9.395e-05, 9.324e-05, 9.324e-05, 6249.1443924], [1516518000000, 9.324e-05, 9.411e-05, 9.296e-05, 9.331e-05, 13612.44102378], [1516518060000, 9.331e-05, 9.45e-05, 9.301e-05, 9.308e-05, 3216.20331849], [1516518180000, 9.311e-05, 9.311e-05, 9.309e-05, 9.311e-05, 982.20115031], [1516518240000, 9.313e-05, 9.313e-05, 9.313e-05, 9.313e-05, 254.33126581], [1516518300000, 9.385e-05, 9.485e-05, 9.385e-05, 9.485e-05, 1240.39209395], [1516518360000, 9.34e-05, 9.476e-05, 9.315e-05, 9.318e-05, 1916.20261679], [1516518420000, 9.323e-05, 9.355e-05, 9.32e-05, 9.32e-05, 11727.07809267], [1516518480000, 9.35e-05, 9.35e-05, 9.32e-05, 9.32e-05, 5976.94161866], [1516518540000, 9.32e-05, 9.347e-05, 9.301e-05, 9.347e-05, 7983.93178209], [1516518600000, 9.347e-05, 9.392e-05, 9.296e-05, 9.296e-05, 24725.28087322], [1516518660000, 9.291e-05, 9.297e-05, 9.279e-05, 9.279e-05, 3377.26075964], [1516518720000, 9.279e-05, 9.28e-05, 9.278e-05, 9.278e-05, 739.87109941], [1516518780000, 9.278e-05, 9.342e-05, 9.278e-05, 9.342e-05, 132.56546984], [1516518840000, 9.342e-05, 9.342e-05, 9.342e-05, 9.342e-05, 1265.72155512], [1516518900000, 9.341e-05, 9.342e-05, 9.341e-05, 9.342e-05, 179.59550919], [1516518960000, 9.279e-05, 9.342e-05, 9.278e-05, 9.342e-05, 8774.15243876], [1516519020000, 9.342e-05, 9.342e-05, 9.342e-05, 9.342e-05, 72.89317916], [1516519080000, 9.295e-05, 9.342e-05, 9.295e-05, 9.342e-05, 200.0], [1516519140000, 9.342e-05, 9.342e-05, 9.288e-05, 9.288e-05, 1105.27834891], [1516519200000, 9.288e-05, 9.288e-05, 9.288e-05, 9.288e-05, 397.84019109], [1516519260000, 9.342e-05, 9.398e-05, 9.278e-05, 9.278e-05, 5578.61014532], [1516519320000, 9.373e-05, 9.373e-05, 9.278e-05, 9.278e-05, 4755.42981684], [1516519380000, 9.278e-05, 9.355e-05, 9.278e-05, 9.278e-05, 6185.56540241], [1516519440000, 9.342e-05, 9.473e-05, 9.342e-05, 9.473e-05, 1233.54235039], [1516519500000, 9.285e-05, 9.285e-05, 9.27e-05, 9.271e-05, 10902.07255975], [1516519560000, 9.271e-05, 9.354e-05, 9.271e-05, 9.354e-05, 54.6526557], [1516519620000, 9.331e-05, 9.332e-05, 9.33e-05, 9.332e-05, 421.47093729], [1516519680000, 9.331e-05, 9.331e-05, 9.271e-05, 9.3e-05, 1718.02562024], [1516519740000, 9.271e-05, 9.494e-05, 9.25e-05, 9.269e-05, 17563.06170286], [1516519800000, 9.25e-05, 9.458e-05, 9.222e-05, 9.222e-05, 12121.13921293], [1516519860000, 9.225e-05, 9.232e-05, 9.225e-05, 9.228e-05, 2038.54587153], [1516519920000, 9.228e-05, 9.228e-05, 9.176e-05, 9.186e-05, 42969.40946219], [1516519980000, 9.185e-05, 9.186e-05, 9.158e-05, 9.184e-05, 5036.72905642], [1516520040000, 9.158e-05, 9.184e-05, 9.134e-05, 9.161e-05, 4162.90926853], [1516520100000, 9.159e-05, 9.166e-05, 9.101e-05, 9.145e-05, 3857.00730459], [1516520160000, 9.1e-05, 9.145e-05, 9e-05, 9.083e-05, 40384.61131825], [1516520220000, 9.139e-05, 9.139e-05, 9.012e-05, 9.012e-05, 12316.14959888], [1516520280000, 9.036e-05, 9.13e-05, 9.006e-05, 9.118e-05, 9735.54999102], [1516520340000, 9.117e-05, 9.143e-05, 9.117e-05, 9.141e-05, 2816.31542686], [1516520400000, 9.03e-05, 9.127e-05, 9.017e-05, 9.035e-05, 15521.97282888], [1516520460000, 9.033e-05, 9.137e-05, 9.016e-05, 9.137e-05, 5108.09586067], [1516520520000, 9.128e-05, 9.128e-05, 9.002e-05, 9.002e-05, 32853.65851906], [1516520580000, 9.002e-05, 9.12e-05, 9e-05, 9.046e-05, 20356.66320346], [1516520640000, 9.004e-05, 9.106e-05, 9e-05, 9.005e-05, 14625.42938996], [1516520700000, 9.007e-05, 9.095e-05, 8.99e-05, 8.99e-05, 51183.54259566], [1516520760000, 9.082e-05, 9.083e-05, 8.9e-05, 9.024e-05, 18822.17615575], [1516520820000, 9.025e-05, 9.054e-05, 9.023e-05, 9.04e-05, 8678.47473003], [1516520880000, 9.044e-05, 9.044e-05, 8.966e-05, 9.044e-05, 2491.16224966], [1516520940000, 9e-05, 9.12e-05, 9e-05, 9e-05, 5737.91246284], [1516521000000, 9.095e-05, 9.155e-05, 9e-05, 9.155e-05, 9544.20685023], [1516521060000, 9.133e-05, 9.225e-05, 9.01e-05, 9.06e-05, 9065.2114816], [1516521120000, 9.154e-05, 9.179e-05, 9.064e-05, 9.064e-05, 1158.16147139], [1516521180000, 9.144e-05, 9.151e-05, 9.025e-05, 9.151e-05, 1133.02325931], [1516521240000, 9.151e-05, 9.151e-05, 9.051e-05, 9.076e-05, 3146.75905851], [1516521300000, 9.145e-05, 9.146e-05, 9.145e-05, 9.146e-05, 6340.08132562], [1516521360000, 9.146e-05, 9.221e-05, 9.08e-05, 9.221e-05, 26189.40168542], [1516521420000, 9.217e-05, 9.288e-05, 9.081e-05, 9.288e-05, 5899.55981855], [1516521480000, 9.277e-05, 9.288e-05, 9.133e-05, 9.141e-05, 18354.26460998], [1516521540000, 9.273e-05, 9.274e-05, 9.148e-05, 9.27e-05, 1362.70334106], [1516521600000, 9.27e-05, 9.396e-05, 9.206e-05, 9.206e-05, 7613.05161518], [1516521660000, 9.226e-05, 9.238e-05, 9.17e-05, 9.17e-05, 21463.46702466], [1516521720000, 9.24e-05, 9.376e-05, 9.17e-05, 9.323e-05, 4745.56888568], [1516521780000, 9.173e-05, 9.261e-05, 9.138e-05, 9.261e-05, 4985.24089533], [1516521840000, 9.256e-05, 9.276e-05, 9.256e-05, 9.274e-05, 1239.17018784], [1516521900000, 9.274e-05, 9.274e-05, 9.274e-05, 9.274e-05, 8.35232833], [1516521960000, 9.262e-05, 9.262e-05, 9.262e-05, 9.262e-05, 154.44015444], [1516522020000, 9.273e-05, 9.274e-05, 9.15e-05, 9.156e-05, 200.36220095], [1516522080000, 9.156e-05, 9.156e-05, 9.154e-05, 9.154e-05, 1880.55245191], [1516522140000, 9.299e-05, 9.299e-05, 9.161e-05, 9.295e-05, 260.55140648], [1516522200000, 9.29e-05, 9.29e-05, 9.287e-05, 9.287e-05, 550.8473932], [1516522260000, 9.285e-05, 9.285e-05, 9.281e-05, 9.281e-05, 837.25997825], [1516522380000, 9.25e-05, 9.283e-05, 9.25e-05, 9.283e-05, 607.62951557], [1516522440000, 9.282e-05, 9.282e-05, 9.282e-05, 9.282e-05, 6.44621484], [1516522500000, 9.274e-05, 9.281e-05, 9.274e-05, 9.281e-05, 429.88315776], [1516522620000, 9.212e-05, 9.281e-05, 9.201e-05, 9.281e-05, 2064.04781656], [1516522680000, 9.279e-05, 9.28e-05, 9.278e-05, 9.278e-05, 16077.63475538], [1516522740000, 9.277e-05, 9.278e-05, 9.204e-05, 9.204e-05, 14090.88243056], [1516522800000, 9.287e-05, 9.287e-05, 9.212e-05, 9.212e-05, 186.10977782], [1516522860000, 9.218e-05, 9.286e-05, 9.201e-05, 9.275e-05, 7505.62390226], [1516522920000, 9.201e-05, 9.385e-05, 9.201e-05, 9.385e-05, 7723.37439541], [1516522980000, 9.287e-05, 9.39e-05, 9.231e-05, 9.237e-05, 5471.07308376], [1516523040000, 9.3e-05, 9.376e-05, 9.237e-05, 9.376e-05, 1230.36778005], [1516523100000, 9.238e-05, 9.238e-05, 9.111e-05, 9.121e-05, 9390.98783648], [1516523160000, 9.313e-05, 9.313e-05, 9.296e-05, 9.296e-05, 368.41029405], [1516523220000, 9.283e-05, 9.352e-05, 9.267e-05, 9.341e-05, 507.1065442], [1516523280000, 9.258e-05, 9.342e-05, 9.258e-05, 9.342e-05, 89.4995], [1516523460000, 9.255e-05, 9.257e-05, 9.255e-05, 9.257e-05, 1395.92069348], [1516523520000, 9.258e-05, 9.258e-05, 9.193e-05, 9.193e-05, 397.87678152], [1516523580000, 9.258e-05, 9.258e-05, 9.236e-05, 9.236e-05, 306.6538832], [1516523640000, 9.236e-05, 9.236e-05, 9.161e-05, 9.161e-05, 15787.5035663], [1516523700000, 9.181e-05, 9.246e-05, 9.181e-05, 9.24e-05, 385.64327325], [1516523760000, 9.228e-05, 9.228e-05, 9.228e-05, 9.228e-05, 1286.65318502], [1516523820000, 9.228e-05, 9.234e-05, 9.228e-05, 9.234e-05, 181.93087294], [1516523880000, 9.164e-05, 9.164e-05, 9.164e-05, 9.164e-05, 502.42527442], [1516523940000, 9.164e-05, 9.233e-05, 9.155e-05, 9.161e-05, 7781.93856531], [1516524000000, 9.161e-05, 9.213e-05, 9.152e-05, 9.184e-05, 1300.93251208], [1516524120000, 9.204e-05, 9.204e-05, 9.106e-05, 9.106e-05, 166.0], [1516524180000, 9.208e-05, 9.208e-05, 9.1e-05, 9.1e-05, 319.9277683], [1516524240000, 9.103e-05, 9.105e-05, 9.103e-05, 9.103e-05, 189.6795696], [1516524300000, 9.106e-05, 9.208e-05, 9.106e-05, 9.208e-05, 126.84473789], [1516524360000, 9.125e-05, 9.125e-05, 9.116e-05, 9.116e-05, 111.64478513], [1516524420000, 9.125e-05, 9.125e-05, 9.125e-05, 9.125e-05, 30.0], [1516524480000, 9.197e-05, 9.197e-05, 9.116e-05, 9.116e-05, 2919.28866658], [1516524540000, 9.15e-05, 9.198e-05, 9.116e-05, 9.116e-05, 284.91385905], [1516524600000, 9.123e-05, 9.123e-05, 9.123e-05, 9.123e-05, 50.0], [1516524660000, 9.198e-05, 9.198e-05, 9.198e-05, 9.198e-05, 69.18377423], [1516524720000, 9.198e-05, 9.27e-05, 9.198e-05, 9.27e-05, 2061.95148169], [1516524780000, 9.201e-05, 9.201e-05, 9.201e-05, 9.201e-05, 18.97584369], [1516524840000, 9.216e-05, 9.34e-05, 9.201e-05, 9.239e-05, 3832.95272502], [1516524960000, 9.24e-05, 9.33e-05, 9.228e-05, 9.328e-05, 2938.02361026], [1516525020000, 9.324e-05, 9.324e-05, 9.32e-05, 9.32e-05, 2008.32275149], [1516525080000, 9.328e-05, 9.387e-05, 9.328e-05, 9.386e-05, 3050.28179249], [1516525140000, 9.386e-05, 9.387e-05, 9.254e-05, 9.376e-05, 6509.93118801], [1516525200000, 9.367e-05, 9.373e-05, 9.358e-05, 9.362e-05, 1865.0], [1516525260000, 9.359e-05, 9.359e-05, 9.266e-05, 9.266e-05, 4865.09299437], [1516525320000, 9.266e-05, 9.267e-05, 9.164e-05, 9.264e-05, 2804.94538415], [1516525380000, 9.264e-05, 9.264e-05, 9.168e-05, 9.206e-05, 1414.24530452], [1516525440000, 9.206e-05, 9.375e-05, 9.206e-05, 9.375e-05, 678.79456408], [1516525500000, 9.204e-05, 9.216e-05, 9.2e-05, 9.2e-05, 4438.02635166], [1516525560000, 9.172e-05, 9.304e-05, 9.135e-05, 9.304e-05, 1110.42356277], [1516525620000, 9.276e-05, 9.276e-05, 9.276e-05, 9.276e-05, 150.0], [1516525680000, 9.26e-05, 9.386e-05, 9.122e-05, 9.122e-05, 519.75993728], [1516525740000, 9.351e-05, 9.355e-05, 9.193e-05, 9.193e-05, 3594.54908407], [1516525800000, 9.191e-05, 9.325e-05, 9.19e-05, 9.19e-05, 652.28550624], [1516525920000, 9.19e-05, 9.195e-05, 9.15e-05, 9.15e-05, 4950.31237853], [1516525980000, 9.152e-05, 9.152e-05, 9.152e-05, 9.152e-05, 154.12616028], [1516526040000, 9.158e-05, 9.247e-05, 9.1e-05, 9.189e-05, 29160.58323704], [1516526100000, 9.1e-05, 9.172e-05, 9.055e-05, 9.172e-05, 151.94480238], [1516526160000, 9.056e-05, 9.056e-05, 9.056e-05, 9.056e-05, 231.04789352], [1516526220000, 9.175e-05, 9.175e-05, 9.061e-05, 9.174e-05, 2403.32656059], [1516526280000, 9.161e-05, 9.161e-05, 9.148e-05, 9.15e-05, 1960.20484128], [1516526340000, 9.15e-05, 9.164e-05, 9.07e-05, 9.164e-05, 1887.20876915], [1516526400000, 9.182e-05, 9.182e-05, 9.182e-05, 9.182e-05, 19.80435159], [1516526460000, 9.174e-05, 9.174e-05, 9.083e-05, 9.083e-05, 3174.0761209], [1516526520000, 9.083e-05, 9.164e-05, 9.083e-05, 9.16e-05, 104.45466233], [1516526580000, 9.085e-05, 9.149e-05, 9.085e-05, 9.148e-05, 1909.1742263], [1516526640000, 9.169e-05, 9.169e-05, 9.169e-05, 9.169e-05, 30.09100299], [1516526700000, 9.157e-05, 9.172e-05, 9.12e-05, 9.12e-05, 3093.25259553], [1516526760000, 9.18e-05, 9.18e-05, 9.12e-05, 9.12e-05, 6128.19166495], [1516526820000, 9.123e-05, 9.209e-05, 9.123e-05, 9.209e-05, 434.93181786], [1516526880000, 9.202e-05, 9.202e-05, 9.202e-05, 9.202e-05, 424.20382424], [1516526940000, 9.194e-05, 9.194e-05, 9.194e-05, 9.194e-05, 57.17341074], [1516527000000, 9.194e-05, 9.194e-05, 9.194e-05, 9.194e-05, 4350.74783329], [1516527120000, 9.194e-05, 9.198e-05, 9.194e-05, 9.198e-05, 162.75011623], [1516527180000, 9.132e-05, 9.132e-05, 9.131e-05, 9.131e-05, 1829.36730484], [1516527240000, 9.131e-05, 9.199e-05, 9.131e-05, 9.196e-05, 3567.59675974], [1516527300000, 9.131e-05, 9.241e-05, 9.131e-05, 9.24e-05, 6685.67083384], [1516527360000, 9.24e-05, 9.24e-05, 9.082e-05, 9.221e-05, 13381.85064587], [1516527480000, 9.108e-05, 9.108e-05, 9.1e-05, 9.1e-05, 150.0], [1516527540000, 9.131e-05, 9.176e-05, 9.131e-05, 9.176e-05, 3263.42397744], [1516527600000, 9.221e-05, 9.221e-05, 9.172e-05, 9.172e-05, 225.40817548], [1516527660000, 9.108e-05, 9.214e-05, 9.108e-05, 9.214e-05, 644.32925725], [1516527720000, 9.16e-05, 9.16e-05, 9.16e-05, 9.16e-05, 27.46649088], [1516527780000, 9.202e-05, 9.225e-05, 9.202e-05, 9.213e-05, 10350.31081734], [1516527840000, 9.212e-05, 9.212e-05, 9.15e-05, 9.15e-05, 188.8408942], [1516527900000, 9.247e-05, 9.249e-05, 9.13e-05, 9.249e-05, 1205.07301375], [1516527960000, 9.21e-05, 9.25e-05, 9.2e-05, 9.25e-05, 6238.23197038], [1516528080000, 9.239e-05, 9.239e-05, 9.178e-05, 9.178e-05, 114.02546628], [1516528140000, 9.239e-05, 9.239e-05, 9.239e-05, 9.239e-05, 72.44632279], [1516528200000, 9.239e-05, 9.25e-05, 9.238e-05, 9.25e-05, 473.96416211], [1516528260000, 9.239e-05, 9.239e-05, 9.239e-05, 9.239e-05, 323.89869033], [1516528320000, 9.18e-05, 9.18e-05, 9.18e-05, 9.18e-05, 12.03698967], [1516528380000, 9.195e-05, 9.25e-05, 9.179e-05, 9.179e-05, 2095.5789869], [1516528440000, 9.179e-05, 9.25e-05, 9.179e-05, 9.25e-05, 350.75100299], [1516528500000, 9.179e-05, 9.24e-05, 9.13e-05, 9.13e-05, 2108.19623983], [1516528560000, 9.13e-05, 9.248e-05, 9.13e-05, 9.248e-05, 377.3646434], [1516528620000, 9.166e-05, 9.166e-05, 9.166e-05, 9.166e-05, 602.08063909], [1516528680000, 9.178e-05, 9.25e-05, 9.166e-05, 9.166e-05, 1621.79957049], [1516528740000, 9.13e-05, 9.166e-05, 9.103e-05, 9.151e-05, 499.04856804], [1516528800000, 9.122e-05, 9.25e-05, 9.122e-05, 9.25e-05, 2056.52594616], [1516528860000, 9.199e-05, 9.199e-05, 9.199e-05, 9.199e-05, 65.50710787], [1516529040000, 9.177e-05, 9.177e-05, 9.095e-05, 9.177e-05, 1326.59502621], [1516529100000, 9.155e-05, 9.155e-05, 9.115e-05, 9.115e-05, 1172.6843831], [1516529160000, 9.155e-05, 9.182e-05, 9.105e-05, 9.105e-05, 735.69994063], [1516529220000, 9.099e-05, 9.115e-05, 9.099e-05, 9.105e-05, 1569.27147069], [1516529280000, 9.105e-05, 9.248e-05, 9.105e-05, 9.248e-05, 4424.04919175], [1516529340000, 9.117e-05, 9.117e-05, 9.111e-05, 9.111e-05, 100.92946945], [1516529400000, 9.111e-05, 9.177e-05, 9.105e-05, 9.105e-05, 418.21681084], [1516529460000, 9.177e-05, 9.261e-05, 9.107e-05, 9.242e-05, 7072.98961733], [1516529520000, 9.249e-05, 9.26e-05, 9.249e-05, 9.26e-05, 3267.92588047], [1516529580000, 9.151e-05, 9.244e-05, 9.138e-05, 9.244e-05, 2435.06116799], [1516529640000, 9.152e-05, 9.152e-05, 9.113e-05, 9.113e-05, 115.20167817], [1516529700000, 9.15e-05, 9.15e-05, 9.111e-05, 9.111e-05, 661.55243273], [1516529760000, 9.2e-05, 9.251e-05, 9.2e-05, 9.251e-05, 772.23526014], [1516529820000, 9.153e-05, 9.255e-05, 9.114e-05, 9.255e-05, 1466.92335205], [1516529880000, 9.222e-05, 9.255e-05, 9.105e-05, 9.105e-05, 16942.42945231], [1516529940000, 9.233e-05, 9.233e-05, 9.114e-05, 9.231e-05, 1104.81340047], [1516530000000, 9.186e-05, 9.234e-05, 9.175e-05, 9.234e-05, 2759.73097869], [1516530060000, 9.234e-05, 9.234e-05, 9.234e-05, 9.234e-05, 236.94689055], [1516530120000, 9.222e-05, 9.222e-05, 9.222e-05, 9.222e-05, 194.51127539], [1516530180000, 9.222e-05, 9.234e-05, 9.106e-05, 9.234e-05, 444.22484429], [1516530240000, 9.233e-05, 9.233e-05, 9.183e-05, 9.183e-05, 112.97638865], [1516530300000, 9.204e-05, 9.248e-05, 9.204e-05, 9.248e-05, 1532.98858589], [1516530420000, 9.248e-05, 9.248e-05, 9.248e-05, 9.248e-05, 215.17433612], [1516530480000, 9.248e-05, 9.248e-05, 9.248e-05, 9.248e-05, 48.27518142], [1516530540000, 9.185e-05, 9.185e-05, 9.145e-05, 9.145e-05, 2824.28827979], [1516530600000, 9.183e-05, 9.183e-05, 9.183e-05, 9.183e-05, 77.18313306], [1516530660000, 9.183e-05, 9.183e-05, 9.183e-05, 9.183e-05, 5001.64898324], [1516530720000, 9.182e-05, 9.222e-05, 9.182e-05, 9.222e-05, 28.44034678], [1516530780000, 9.222e-05, 9.222e-05, 9.222e-05, 9.222e-05, 635.82041135], [1516530840000, 9.248e-05, 9.27e-05, 9.222e-05, 9.256e-05, 927.75052107], [1516530900000, 9.255e-05, 9.38e-05, 9.255e-05, 9.38e-05, 312.81324357], [1516530960000, 9.234e-05, 9.333e-05, 9.234e-05, 9.333e-05, 592.37376314], [1516531020000, 9.333e-05, 9.377e-05, 9.333e-05, 9.377e-05, 762.50013993], [1516531080000, 9.374e-05, 9.386e-05, 9.251e-05, 9.386e-05, 1439.23365984], [1516531140000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 545.81726583], [1516531200000, 9.25e-05, 9.387e-05, 9.25e-05, 9.387e-05, 1482.24464501], [1516531260000, 9.385e-05, 9.385e-05, 9.385e-05, 9.385e-05, 64.57586476], [1516531320000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 276.23220484], [1516531380000, 9.362e-05, 9.362e-05, 9.123e-05, 9.162e-05, 7612.82257805], [1516531440000, 9.176e-05, 9.29e-05, 9.176e-05, 9.29e-05, 9424.67021116], [1516531500000, 9.281e-05, 9.281e-05, 9.187e-05, 9.262e-05, 511.57158443], [1516531560000, 9.226e-05, 9.226e-05, 9.111e-05, 9.111e-05, 367.54635557], [1516531620000, 9.202e-05, 9.209e-05, 9.111e-05, 9.126e-05, 13664.98910587], [1516531680000, 9.226e-05, 9.331e-05, 9.226e-05, 9.331e-05, 162.79916739], [1516531740000, 9.305e-05, 9.311e-05, 9.305e-05, 9.305e-05, 186.83743403], [1516531800000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 161.64984048], [1516531860000, 9.191e-05, 9.335e-05, 9.191e-05, 9.191e-05, 750.86163559], [1516531920000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 32.58759341], [1516531980000, 9.331e-05, 9.331e-05, 9.2e-05, 9.2e-05, 43.68615443], [1516532040000, 9.3e-05, 9.3e-05, 9.298e-05, 9.298e-05, 274.11842737], [1516532100000, 9.2e-05, 9.344e-05, 9.165e-05, 9.334e-05, 2252.02172304], [1516532160000, 9.341e-05, 9.341e-05, 9.341e-05, 9.341e-05, 100.5343056], [1516532220000, 9.321e-05, 9.321e-05, 9.204e-05, 9.21e-05, 1737.50659504], [1516532280000, 9.21e-05, 9.25e-05, 9.187e-05, 9.187e-05, 2898.6311188], [1516532340000, 9.25e-05, 9.35e-05, 9.232e-05, 9.239e-05, 3194.55579565], [1516532400000, 9.239e-05, 9.344e-05, 9.203e-05, 9.34e-05, 1213.36297292], [1516532460000, 9.338e-05, 9.379e-05, 9.213e-05, 9.379e-05, 3724.56444606], [1516532520000, 9.373e-05, 9.373e-05, 9.228e-05, 9.236e-05, 1071.29035582], [1516532580000, 9.358e-05, 9.358e-05, 9.3e-05, 9.3e-05, 414.33518807], [1516532640000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 324.37896056], [1516532700000, 9.3e-05, 9.38e-05, 9.258e-05, 9.258e-05, 3555.1273719], [1516532760000, 9.265e-05, 9.37e-05, 9.265e-05, 9.37e-05, 1806.60363767], [1516532820000, 9.261e-05, 9.261e-05, 9.261e-05, 9.261e-05, 310.72753482], [1516532880000, 9.26e-05, 9.311e-05, 9.25e-05, 9.311e-05, 192.5301028], [1516532940000, 9.25e-05, 9.311e-05, 9.25e-05, 9.311e-05, 265.99629145], [1516533000000, 9.311e-05, 9.311e-05, 9.311e-05, 9.311e-05, 45.13424925], [1516533060000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 536.9992482], [1516533120000, 9.3e-05, 9.369e-05, 9.3e-05, 9.369e-05, 471.05319837], [1516533180000, 9.351e-05, 9.351e-05, 9.347e-05, 9.347e-05, 271.25006591], [1516533240000, 9.327e-05, 9.327e-05, 9.327e-05, 9.327e-05, 110.31095401], [1516533300000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 10.62990988], [1516533360000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 670.95467131], [1516533420000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 32.07116214], [1516533480000, 9.242e-05, 9.242e-05, 9.24e-05, 9.24e-05, 1000.0], [1516533540000, 9.241e-05, 9.241e-05, 9.24e-05, 9.24e-05, 3035.70937301], [1516533600000, 9.24e-05, 9.24e-05, 9.2e-05, 9.24e-05, 7070.82420066], [1516533660000, 9.24e-05, 9.39e-05, 9.24e-05, 9.39e-05, 2464.02517692], [1516533720000, 9.379e-05, 9.379e-05, 9.379e-05, 9.379e-05, 30.87072169], [1516533780000, 9.379e-05, 9.379e-05, 9.263e-05, 9.273e-05, 14174.51417682], [1516533840000, 9.353e-05, 9.353e-05, 9.352e-05, 9.352e-05, 233.2287049], [1516533900000, 9.24e-05, 9.341e-05, 9.24e-05, 9.335e-05, 5741.6769157], [1516533960000, 9.333e-05, 9.333e-05, 9.333e-05, 9.333e-05, 640.36882171], [1516534020000, 9.331e-05, 9.331e-05, 9.331e-05, 9.331e-05, 316.02279308], [1516534140000, 9.329e-05, 9.329e-05, 9.26e-05, 9.26e-05, 42.10174134], [1516534200000, 9.26e-05, 9.26e-05, 9.245e-05, 9.248e-05, 359.08553529], [1516534260000, 9.324e-05, 9.325e-05, 9.25e-05, 9.25e-05, 1031.76372313], [1516534320000, 9.325e-05, 9.329e-05, 9.325e-05, 9.329e-05, 171.11182838], [1516534380000, 9.315e-05, 9.329e-05, 9.315e-05, 9.329e-05, 379.16050152], [1516534440000, 9.315e-05, 9.329e-05, 9.3e-05, 9.329e-05, 384.09687242], [1516534560000, 9.329e-05, 9.329e-05, 9.319e-05, 9.319e-05, 109.84885066], [1516534620000, 9.319e-05, 9.389e-05, 9.3e-05, 9.316e-05, 33062.18162399], [1516534680000, 9.39e-05, 9.39e-05, 9.314e-05, 9.389e-05, 5145.02436048], [1516534740000, 9.38e-05, 9.39e-05, 9.314e-05, 9.314e-05, 1106.97240951], [1516534860000, 9.314e-05, 9.314e-05, 9.314e-05, 9.314e-05, 589.00674489], [1516534920000, 9.314e-05, 9.44e-05, 9.3e-05, 9.42e-05, 7702.77095875], [1516534980000, 9.32e-05, 9.32e-05, 9.319e-05, 9.319e-05, 5000.37091534], [1516535040000, 9.404e-05, 9.405e-05, 9.314e-05, 9.314e-05, 610.48845998], [1516535100000, 9.381e-05, 9.404e-05, 9.363e-05, 9.363e-05, 14694.94073314], [1516535160000, 9.315e-05, 9.42e-05, 9.315e-05, 9.42e-05, 777.25030221], [1516535220000, 9.42e-05, 9.42e-05, 9.341e-05, 9.341e-05, 4604.91523256], [1516535280000, 9.315e-05, 9.341e-05, 9.27e-05, 9.341e-05, 5525.14073678], [1516535340000, 9.341e-05, 9.341e-05, 9.27e-05, 9.341e-05, 393.73253257], [1516535400000, 9.341e-05, 9.341e-05, 9.339e-05, 9.341e-05, 9952.29819898], [1516535460000, 9.341e-05, 9.341e-05, 9.341e-05, 9.341e-05, 1734.14030192], [1516535520000, 9.341e-05, 9.341e-05, 9.341e-05, 9.341e-05, 86.1642187], [1516535580000, 9.341e-05, 9.341e-05, 9.276e-05, 9.276e-05, 86.19266227], [1516535640000, 9.339e-05, 9.341e-05, 9.339e-05, 9.341e-05, 3493.65635084], [1516535700000, 9.341e-05, 9.406e-05, 9.341e-05, 9.406e-05, 849.00205861], [1516535760000, 9.406e-05, 9.481e-05, 9.369e-05, 9.481e-05, 14192.42142352], [1516535820000, 9.374e-05, 9.374e-05, 9.37e-05, 9.37e-05, 971.25919918], [1516535880000, 9.374e-05, 9.477e-05, 9.373e-05, 9.477e-05, 884.25887894], [1516535940000, 9.479e-05, 9.481e-05, 9.281e-05, 9.281e-05, 3497.9810832], [1516536000000, 9.289e-05, 9.289e-05, 9.288e-05, 9.288e-05, 1096.0], [1516536060000, 9.449e-05, 9.478e-05, 9.4e-05, 9.4e-05, 2191.47716633], [1516536120000, 9.45e-05, 9.481e-05, 9.45e-05, 9.481e-05, 6836.13351969], [1516536180000, 9.482e-05, 9.482e-05, 9.434e-05, 9.482e-05, 9040.25959397], [1516536240000, 9.482e-05, 9.52e-05, 9.401e-05, 9.52e-05, 24936.40876191], [1516536300000, 9.45e-05, 9.52e-05, 9.378e-05, 9.403e-05, 1026.77420814], [1516536360000, 9.45e-05, 9.519e-05, 9.45e-05, 9.519e-05, 1018.32243359], [1516536420000, 9.518e-05, 9.519e-05, 9.518e-05, 9.519e-05, 393.23582763], [1516536480000, 9.519e-05, 9.521e-05, 9.415e-05, 9.427e-05, 11675.16052324], [1516536540000, 9.521e-05, 9.521e-05, 9.427e-05, 9.521e-05, 4737.03053111], [1516536600000, 9.427e-05, 9.431e-05, 9.427e-05, 9.43e-05, 1131.19420316], [1516536660000, 9.495e-05, 9.521e-05, 9.431e-05, 9.521e-05, 729.33876821], [1516536720000, 9.434e-05, 9.521e-05, 9.434e-05, 9.521e-05, 2904.92374276], [1516536780000, 9.45e-05, 9.518e-05, 9.445e-05, 9.513e-05, 394.70710717], [1516536840000, 9.445e-05, 9.521e-05, 9.413e-05, 9.415e-05, 14177.88575283], [1516536900000, 9.418e-05, 9.428e-05, 9.415e-05, 9.428e-05, 637.86188066], [1516536960000, 9.421e-05, 9.519e-05, 9.401e-05, 9.401e-05, 4748.07628733], [1516537020000, 9.399e-05, 9.399e-05, 9.29e-05, 9.382e-05, 11459.65305417], [1516537080000, 9.382e-05, 9.476e-05, 9.378e-05, 9.476e-05, 1377.90176984], [1516537140000, 9.379e-05, 9.402e-05, 9.324e-05, 9.325e-05, 8791.4793343], [1516537200000, 9.4e-05, 9.4e-05, 9.4e-05, 9.4e-05, 13.14113124], [1516537260000, 9.4e-05, 9.4e-05, 9.4e-05, 9.4e-05, 1977.29673897], [1516537320000, 9.4e-05, 9.439e-05, 9.4e-05, 9.439e-05, 3605.98536314], [1516537380000, 9.475e-05, 9.493e-05, 9.4e-05, 9.492e-05, 1533.88767788], [1516537440000, 9.476e-05, 9.476e-05, 9.465e-05, 9.465e-05, 1207.62384593], [1516537500000, 9.479e-05, 9.48e-05, 9.479e-05, 9.48e-05, 83.7699096], [1516537560000, 9.4e-05, 9.4e-05, 9.4e-05, 9.4e-05, 441.04446156], [1516537620000, 9.344e-05, 9.4e-05, 9.303e-05, 9.311e-05, 2262.79273619], [1516537680000, 9.313e-05, 9.324e-05, 9.313e-05, 9.324e-05, 1043.24016332], [1516537740000, 9.335e-05, 9.335e-05, 9.335e-05, 9.335e-05, 84.25519242], [1516537800000, 9.438e-05, 9.438e-05, 9.435e-05, 9.435e-05, 4415.82890918], [1516537980000, 9.429e-05, 9.48e-05, 9.429e-05, 9.48e-05, 309.56470028], [1516538040000, 9.465e-05, 9.465e-05, 9.465e-05, 9.465e-05, 174.16392089], [1516538100000, 9.352e-05, 9.355e-05, 9.352e-05, 9.354e-05, 218.20183685], [1516538160000, 9.446e-05, 9.446e-05, 9.446e-05, 9.446e-05, 10.0], [1516538220000, 9.437e-05, 9.437e-05, 9.437e-05, 9.437e-05, 19.34631898], [1516538280000, 9.419e-05, 9.419e-05, 9.419e-05, 9.419e-05, 126.08247532], [1516538340000, 9.407e-05, 9.426e-05, 9.396e-05, 9.409e-05, 471.10476116], [1516538400000, 9.425e-05, 9.446e-05, 9.425e-05, 9.446e-05, 1155.10063102], [1516538520000, 9.446e-05, 9.446e-05, 9.42e-05, 9.42e-05, 1103.17258715], [1516538580000, 9.42e-05, 9.456e-05, 9.41e-05, 9.42e-05, 504.55055346], [1516538640000, 9.41e-05, 9.41e-05, 9.409e-05, 9.409e-05, 56.0], [1516538700000, 9.41e-05, 9.41e-05, 9.396e-05, 9.396e-05, 7606.13689762], [1516538760000, 9.354e-05, 9.396e-05, 9.307e-05, 9.396e-05, 1009.33887959], [1516538820000, 9.396e-05, 9.396e-05, 9.396e-05, 9.396e-05, 568.20214454], [1516538880000, 9.396e-05, 9.425e-05, 9.396e-05, 9.425e-05, 291.22412388], [1516538940000, 9.446e-05, 9.446e-05, 9.446e-05, 9.446e-05, 7.45330233], [1516539120000, 9.403e-05, 9.441e-05, 9.397e-05, 9.441e-05, 2438.97365954], [1516539180000, 9.445e-05, 9.446e-05, 9.445e-05, 9.446e-05, 660.39237349], [1516539300000, 9.421e-05, 9.525e-05, 9.4e-05, 9.525e-05, 801.8568647], [1516539360000, 9.525e-05, 9.532e-05, 9.525e-05, 9.532e-05, 529.64218474], [1516539420000, 9.405e-05, 9.405e-05, 9.399e-05, 9.399e-05, 100.0], [1516539480000, 9.422e-05, 9.422e-05, 9.399e-05, 9.399e-05, 500.00151829], [1516539600000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 32.55042], [1516539660000, 9.45e-05, 9.5e-05, 9.405e-05, 9.5e-05, 8634.99999999], [1516539720000, 9.405e-05, 9.405e-05, 9.405e-05, 9.405e-05, 459.97146587], [1516539780000, 9.499e-05, 9.5e-05, 9.4e-05, 9.4e-05, 173.40140143], [1516539840000, 9.4e-05, 9.4e-05, 9.4e-05, 9.4e-05, 1186.21621622], [1516539900000, 9.5e-05, 9.5e-05, 9.4e-05, 9.4e-05, 499.6865485], [1516539960000, 9.4e-05, 9.4e-05, 9.4e-05, 9.4e-05, 10.0], [1516540020000, 9.493e-05, 9.496e-05, 9.493e-05, 9.496e-05, 186.23065886], [1516540080000, 9.405e-05, 9.496e-05, 9.4e-05, 9.496e-05, 4973.1351668], [1516540140000, 9.497e-05, 9.497e-05, 9.399e-05, 9.399e-05, 3222.42175589], [1516540200000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 274.1720077], [1516540260000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 134.37877556], [1516540320000, 9.45e-05, 9.495e-05, 9.45e-05, 9.495e-05, 1996.02168313], [1516540440000, 9.45e-05, 9.45e-05, 9.406e-05, 9.45e-05, 2370.68605861], [1516540500000, 9.406e-05, 9.406e-05, 9.406e-05, 9.406e-05, 789.0], [1516540560000, 9.429e-05, 9.429e-05, 9.403e-05, 9.406e-05, 31323.10851479], [1516540620000, 9.406e-05, 9.429e-05, 9.4e-05, 9.429e-05, 12858.62899218], [1516540680000, 9.429e-05, 9.429e-05, 9.429e-05, 9.429e-05, 200.74005326], [1516540740000, 9.429e-05, 9.429e-05, 9.428e-05, 9.429e-05, 442.16821243], [1516540800000, 9.429e-05, 9.429e-05, 9.429e-05, 9.429e-05, 50.0], [1516540860000, 9.429e-05, 9.449e-05, 9.429e-05, 9.429e-05, 1205.94110644], [1516540920000, 9.449e-05, 9.449e-05, 9.449e-05, 9.449e-05, 50.0], [1516540980000, 9.449e-05, 9.449e-05, 9.449e-05, 9.449e-05, 428.69585481], [1516541040000, 9.45e-05, 9.45e-05, 9.449e-05, 9.45e-05, 366.08096934], [1516541160000, 9.45e-05, 9.455e-05, 9.45e-05, 9.455e-05, 4114.14394097], [1516541280000, 9.455e-05, 9.456e-05, 9.45e-05, 9.45e-05, 4451.60407795], [1516541340000, 9.474e-05, 9.475e-05, 9.474e-05, 9.475e-05, 100.0], [1516541400000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 446.71429393], [1516541520000, 9.449e-05, 9.45e-05, 9.396e-05, 9.396e-05, 3169.12865326], [1516541580000, 9.396e-05, 9.396e-05, 9.328e-05, 9.328e-05, 45.0], [1516541640000, 9.45e-05, 9.45e-05, 9.328e-05, 9.449e-05, 4942.38535241], [1516541760000, 9.332e-05, 9.437e-05, 9.331e-05, 9.421e-05, 1386.70630793], [1516541820000, 9.365e-05, 9.447e-05, 9.36e-05, 9.447e-05, 4225.11169012], [1516541880000, 9.448e-05, 9.449e-05, 9.448e-05, 9.448e-05, 2096.41451907], [1516541940000, 9.449e-05, 9.449e-05, 9.398e-05, 9.398e-05, 1895.26169052], [1516542000000, 9.447e-05, 9.447e-05, 9.447e-05, 9.447e-05, 2385.82233951], [1516542120000, 9.447e-05, 9.45e-05, 9.437e-05, 9.45e-05, 18221.04442362], [1516542180000, 9.441e-05, 9.441e-05, 9.441e-05, 9.441e-05, 35.28892809], [1516542240000, 9.446e-05, 9.496e-05, 9.315e-05, 9.495e-05, 6275.54462434], [1516542300000, 9.486e-05, 9.486e-05, 9.486e-05, 9.486e-05, 167.53128936], [1516542360000, 9.486e-05, 9.486e-05, 9.486e-05, 9.486e-05, 3332.46871064], [1516542420000, 9.486e-05, 9.486e-05, 9.486e-05, 9.486e-05, 26.85440227], [1516542540000, 9.401e-05, 9.401e-05, 9.401e-05, 9.401e-05, 578.0], [1516542600000, 9.486e-05, 9.486e-05, 9.485e-05, 9.486e-05, 222.77098888], [1516542660000, 9.401e-05, 9.401e-05, 9.401e-05, 9.401e-05, 350.0], [1516542720000, 9.485e-05, 9.486e-05, 9.485e-05, 9.486e-05, 46.08698464], [1516542780000, 9.486e-05, 9.49e-05, 9.486e-05, 9.49e-05, 970.81235058], [1516542840000, 9.49e-05, 9.491e-05, 9.49e-05, 9.491e-05, 1303.85773002], [1516542960000, 9.404e-05, 9.404e-05, 9.404e-05, 9.404e-05, 101.93185127], [1516543020000, 9.404e-05, 9.404e-05, 9.402e-05, 9.402e-05, 1298.96659333], [1516543080000, 9.41e-05, 9.41e-05, 9.402e-05, 9.402e-05, 144.28432589], [1516543200000, 9.402e-05, 9.402e-05, 9.402e-05, 9.402e-05, 980.0], [1516543260000, 9.401e-05, 9.463e-05, 9.401e-05, 9.463e-05, 214.88336231], [1516543320000, 9.401e-05, 9.401e-05, 9.315e-05, 9.315e-05, 3425.54995123], [1516543500000, 9.359e-05, 9.359e-05, 9.356e-05, 9.356e-05, 1148.0], [1516543560000, 9.357e-05, 9.357e-05, 9.357e-05, 9.357e-05, 420.0], [1516543680000, 9.423e-05, 9.424e-05, 9.358e-05, 9.424e-05, 377.8164009], [1516543800000, 9.424e-05, 9.425e-05, 9.424e-05, 9.425e-05, 88.07519096], [1516543980000, 9.442e-05, 9.443e-05, 9.442e-05, 9.443e-05, 91.70467849], [1516544040000, 9.444e-05, 9.444e-05, 9.444e-05, 9.444e-05, 94.74504623], [1516544100000, 9.444e-05, 9.452e-05, 9.425e-05, 9.425e-05, 1503.96196637], [1516544160000, 9.453e-05, 9.463e-05, 9.4e-05, 9.463e-05, 5481.03947146], [1516544220000, 9.453e-05, 9.463e-05, 9.4e-05, 9.4e-05, 14552.92953456], [1516544280000, 9.4e-05, 9.46e-05, 9.4e-05, 9.46e-05, 5189.56694309], [1516544340000, 9.409e-05, 9.409e-05, 9.4e-05, 9.4e-05, 904.31059396], [1516544400000, 9.4e-05, 9.4e-05, 9.4e-05, 9.4e-05, 441.05469191], [1516544460000, 9.4e-05, 9.446e-05, 9.316e-05, 9.446e-05, 3679.13416804], [1516544520000, 9.444e-05, 9.444e-05, 9.444e-05, 9.444e-05, 173.12708863], [1516544580000, 9.438e-05, 9.439e-05, 9.438e-05, 9.439e-05, 163.76656833], [1516544640000, 9.426e-05, 9.426e-05, 9.426e-05, 9.426e-05, 739.35832274], [1516544760000, 9.421e-05, 9.421e-05, 9.421e-05, 9.421e-05, 120.0], [1516544940000, 9.419e-05, 9.428e-05, 9.419e-05, 9.428e-05, 2835.65431868], [1516545060000, 9.428e-05, 9.428e-05, 9.422e-05, 9.422e-05, 204.7820655], [1516545180000, 9.338e-05, 9.422e-05, 9.311e-05, 9.311e-05, 19705.06368668], [1516545240000, 9.322e-05, 9.416e-05, 9.3e-05, 9.35e-05, 5006.77379257], [1516545300000, 9.4e-05, 9.4e-05, 9.399e-05, 9.4e-05, 424.57178861], [1516545360000, 9.398e-05, 9.398e-05, 9.375e-05, 9.375e-05, 276.09425311], [1516545420000, 9.375e-05, 9.375e-05, 9.375e-05, 9.375e-05, 106.14941694], [1516545480000, 9.308e-05, 9.308e-05, 9.306e-05, 9.306e-05, 511.56496508], [1516545540000, 9.31e-05, 9.311e-05, 9.31e-05, 9.31e-05, 2391.3853666], [1516545600000, 9.301e-05, 9.38e-05, 9.3e-05, 9.3e-05, 7286.69779496], [1516545660000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 194.92524435], [1516545720000, 9.323e-05, 9.323e-05, 9.3e-05, 9.321e-05, 2117.54324463], [1516545780000, 9.3e-05, 9.321e-05, 9.291e-05, 9.291e-05, 2318.00386246], [1516545840000, 9.29e-05, 9.317e-05, 9.29e-05, 9.29e-05, 206.88665986], [1516545900000, 9.29e-05, 9.323e-05, 9.29e-05, 9.319e-05, 2586.32638254], [1516545960000, 9.319e-05, 9.382e-05, 9.319e-05, 9.323e-05, 9734.74828377], [1516546020000, 9.319e-05, 9.4e-05, 9.291e-05, 9.294e-05, 436.64022588], [1516546080000, 9.4e-05, 9.456e-05, 9.4e-05, 9.455e-05, 2956.52752369], [1516546140000, 9.392e-05, 9.392e-05, 9.392e-05, 9.392e-05, 11.05865623], [1516546200000, 9.362e-05, 9.362e-05, 9.319e-05, 9.319e-05, 1673.53288408], [1516546320000, 9.328e-05, 9.328e-05, 9.326e-05, 9.326e-05, 1334.5918], [1516546440000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 25.26129349], [1516546500000, 9.325e-05, 9.325e-05, 9.325e-05, 9.325e-05, 52.85295188], [1516546560000, 9.323e-05, 9.323e-05, 9.323e-05, 9.323e-05, 123.7798745], [1516546620000, 9.323e-05, 9.323e-05, 9.32e-05, 9.32e-05, 313.24960111], [1516546680000, 9.32e-05, 9.32e-05, 9.319e-05, 9.319e-05, 201.81913961], [1516546740000, 9.319e-05, 9.319e-05, 9.263e-05, 9.288e-05, 3614.79641618], [1516546800000, 9.284e-05, 9.319e-05, 9.284e-05, 9.286e-05, 1332.62561678], [1516546860000, 9.284e-05, 9.284e-05, 9.282e-05, 9.282e-05, 310.04726511], [1516546920000, 9.272e-05, 9.28e-05, 9.272e-05, 9.28e-05, 209.93206044], [1516546980000, 9.28e-05, 9.286e-05, 9.265e-05, 9.265e-05, 10611.48875295], [1516547040000, 9.286e-05, 9.286e-05, 9.275e-05, 9.275e-05, 1621.99999799], [1516547100000, 9.276e-05, 9.286e-05, 9.275e-05, 9.275e-05, 1700.72798854], [1516547160000, 9.286e-05, 9.325e-05, 9.286e-05, 9.325e-05, 4697.58435166], [1516547220000, 9.32e-05, 9.376e-05, 9.277e-05, 9.277e-05, 5428.0004089], [1516547280000, 9.277e-05, 9.376e-05, 9.277e-05, 9.282e-05, 672.87987728], [1516547400000, 9.282e-05, 9.282e-05, 9.282e-05, 9.282e-05, 20.84329186], [1516547460000, 9.371e-05, 9.371e-05, 9.371e-05, 9.371e-05, 24.975], [1516547520000, 9.347e-05, 9.374e-05, 9.275e-05, 9.374e-05, 366.47821403], [1516547640000, 9.313e-05, 9.313e-05, 9.313e-05, 9.313e-05, 32.20611916], [1516547700000, 9.31e-05, 9.31e-05, 9.265e-05, 9.265e-05, 694.7560828], [1516547760000, 9.31e-05, 9.31e-05, 9.263e-05, 9.263e-05, 1104.90779829], [1516547820000, 9.263e-05, 9.315e-05, 9.255e-05, 9.255e-05, 430.24267031], [1516548180000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 32.14310248], [1516548240000, 9.313e-05, 9.315e-05, 9.313e-05, 9.315e-05, 500.0], [1516548360000, 9.315e-05, 9.315e-05, 9.256e-05, 9.256e-05, 106.9388963], [1516548420000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 147.78186786], [1516548480000, 9.26e-05, 9.26e-05, 9.26e-05, 9.26e-05, 23.27081311], [1516548540000, 9.262e-05, 9.262e-05, 9.262e-05, 9.262e-05, 8.78937356], [1516548600000, 9.27e-05, 9.27e-05, 9.27e-05, 9.27e-05, 170.85510868], [1516548660000, 9.31e-05, 9.31e-05, 9.31e-05, 9.31e-05, 132.69554362], [1516548780000, 9.31e-05, 9.31e-05, 9.31e-05, 9.31e-05, 339.0739832], [1516548840000, 9.31e-05, 9.315e-05, 9.271e-05, 9.315e-05, 5359.39354245], [1516548900000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 484.45425867], [1516548960000, 9.366e-05, 9.366e-05, 9.366e-05, 9.366e-05, 839.38458253], [1516549200000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 2275.53160466], [1516549260000, 9.315e-05, 9.315e-05, 9.271e-05, 9.271e-05, 3277.14503436], [1516549320000, 9.271e-05, 9.271e-05, 9.271e-05, 9.271e-05, 376.98302776], [1516549380000, 9.314e-05, 9.315e-05, 9.27e-05, 9.27e-05, 409.55831125], [1516549440000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 10.81561997], [1516549500000, 9.27e-05, 9.27e-05, 9.27e-05, 9.27e-05, 9.0], [1516549560000, 9.283e-05, 9.283e-05, 9.27e-05, 9.27e-05, 930.31335391], [1516549620000, 9.282e-05, 9.353e-05, 9.282e-05, 9.352e-05, 5139.77455938], [1516549680000, 9.351e-05, 9.351e-05, 9.27e-05, 9.27e-05, 1241.51728636], [1516549740000, 9.271e-05, 9.271e-05, 9.271e-05, 9.271e-05, 35.63674822], [1516549860000, 9.271e-05, 9.272e-05, 9.27e-05, 9.27e-05, 2294.96485889], [1516549920000, 9.27e-05, 9.27e-05, 9.263e-05, 9.263e-05, 410.15460295], [1516549980000, 9.27e-05, 9.275e-05, 9.263e-05, 9.275e-05, 439.67804683], [1516550040000, 9.272e-05, 9.344e-05, 9.272e-05, 9.344e-05, 169.9720678], [1516550100000, 9.272e-05, 9.342e-05, 9.27e-05, 9.342e-05, 727.19967845], [1516550220000, 9.318e-05, 9.318e-05, 9.263e-05, 9.263e-05, 770.9291884], [1516550340000, 9.342e-05, 9.342e-05, 9.262e-05, 9.262e-05, 1131.57680492], [1516550460000, 9.263e-05, 9.341e-05, 9.263e-05, 9.341e-05, 766.0], [1516550520000, 9.263e-05, 9.263e-05, 9.237e-05, 9.247e-05, 8102.38450945], [1516550580000, 9.24e-05, 9.249e-05, 9.239e-05, 9.239e-05, 1120.0], [1516550640000, 9.338e-05, 9.338e-05, 9.238e-05, 9.238e-05, 256.34333467], [1516550700000, 9.24e-05, 9.24e-05, 9.224e-05, 9.224e-05, 3480.74562908], [1516550760000, 9.202e-05, 9.326e-05, 9.202e-05, 9.204e-05, 3365.10089073], [1516550820000, 9.204e-05, 9.204e-05, 9.2e-05, 9.2e-05, 20957.4443], [1516550880000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 395.4463], [1516550940000, 9.205e-05, 9.205e-05, 9.136e-05, 9.136e-05, 6657.80665602], [1516551000000, 9.139e-05, 9.2e-05, 9.138e-05, 9.2e-05, 7122.03724054], [1516551060000, 9.264e-05, 9.264e-05, 9.2e-05, 9.2e-05, 2680.85015774], [1516551120000, 9.2e-05, 9.238e-05, 9.2e-05, 9.2e-05, 2516.89675391], [1516551180000, 9.166e-05, 9.317e-05, 9.16e-05, 9.168e-05, 7195.04077123], [1516551240000, 9.168e-05, 9.168e-05, 9.168e-05, 9.168e-05, 2118.61491105], [1516551300000, 9.168e-05, 9.168e-05, 9.16e-05, 9.16e-05, 3021.53493132], [1516551360000, 9.16e-05, 9.196e-05, 9.16e-05, 9.196e-05, 2457.7553387], [1516551420000, 9.17e-05, 9.17e-05, 9.16e-05, 9.16e-05, 721.63883439], [1516551480000, 9.16e-05, 9.196e-05, 9.16e-05, 9.196e-05, 5239.75973503], [1516551600000, 9.16e-05, 9.16e-05, 9.105e-05, 9.105e-05, 9962.74464621], [1516551660000, 9.107e-05, 9.108e-05, 9.1e-05, 9.1e-05, 1382.21858363], [1516551720000, 9.105e-05, 9.188e-05, 9.105e-05, 9.188e-05, 11945.6944974], [1516551780000, 9.206e-05, 9.206e-05, 9.026e-05, 9.026e-05, 53304.12871883], [1516551840000, 9.23e-05, 9.23e-05, 9.031e-05, 9.215e-05, 590.93745049], [1516551900000, 9.051e-05, 9.206e-05, 9.051e-05, 9.178e-05, 544.06571586], [1516551960000, 9.168e-05, 9.17e-05, 9.147e-05, 9.17e-05, 381.40510022], [1516552020000, 9.147e-05, 9.147e-05, 9.147e-05, 9.147e-05, 58.7186412], [1516552080000, 9.147e-05, 9.147e-05, 9.147e-05, 9.147e-05, 191.49789664], [1516552140000, 9.147e-05, 9.147e-05, 9.147e-05, 9.147e-05, 622.53172937], [1516552200000, 9.091e-05, 9.095e-05, 9.091e-05, 9.091e-05, 3163.8081838], [1516552320000, 9.182e-05, 9.208e-05, 9.182e-05, 9.208e-05, 449.50664803], [1516552440000, 9.114e-05, 9.114e-05, 9.11e-05, 9.11e-05, 115.0084649], [1516552500000, 9.15e-05, 9.15e-05, 9.147e-05, 9.15e-05, 967.0854457], [1516552560000, 9.132e-05, 9.132e-05, 9.109e-05, 9.109e-05, 623.0235079], [1516552620000, 9.11e-05, 9.11e-05, 9.095e-05, 9.095e-05, 2916.11606542], [1516552680000, 9.095e-05, 9.198e-05, 9.095e-05, 9.198e-05, 835.06861012], [1516552740000, 9.192e-05, 9.195e-05, 9.106e-05, 9.195e-05, 878.31345344], [1516552800000, 9.106e-05, 9.216e-05, 9.106e-05, 9.216e-05, 310.55402958], [1516552860000, 9.195e-05, 9.195e-05, 9.195e-05, 9.195e-05, 11.0], [1516552920000, 9.212e-05, 9.212e-05, 9.105e-05, 9.105e-05, 1433.95245252], [1516552980000, 9.105e-05, 9.211e-05, 9.095e-05, 9.096e-05, 28071.97609772], [1516553100000, 9.191e-05, 9.191e-05, 9.191e-05, 9.191e-05, 65.86175642], [1516553220000, 9.1e-05, 9.192e-05, 9.1e-05, 9.19e-05, 5251.76165285], [1516553280000, 9.19e-05, 9.19e-05, 9.19e-05, 9.19e-05, 263.84699901], [1516553340000, 9.102e-05, 9.102e-05, 9.102e-05, 9.102e-05, 23.10414205], [1516553400000, 9.19e-05, 9.19e-05, 9.19e-05, 9.19e-05, 65.53390045], [1516553460000, 9.19e-05, 9.19e-05, 9.19e-05, 9.19e-05, 131.14151358], [1516553520000, 9.14e-05, 9.19e-05, 9.1e-05, 9.1e-05, 373.1344425], [1516553580000, 9.102e-05, 9.19e-05, 9.102e-05, 9.19e-05, 3471.93811597], [1516553640000, 9.19e-05, 9.21e-05, 9.19e-05, 9.19e-05, 2780.04413415], [1516553700000, 9.19e-05, 9.19e-05, 9.19e-05, 9.19e-05, 138.999999], [1516553760000, 9.209e-05, 9.222e-05, 9.191e-05, 9.222e-05, 3690.18990427], [1516553820000, 9.242e-05, 9.242e-05, 9.242e-05, 9.242e-05, 18.2782539], [1516553940000, 9.241e-05, 9.241e-05, 9.241e-05, 9.241e-05, 91.34020268], [1516554000000, 9.222e-05, 9.246e-05, 9.222e-05, 9.246e-05, 349.02812441], [1516554060000, 9.227e-05, 9.24e-05, 9.191e-05, 9.24e-05, 5443.8485484], [1516554120000, 9.24e-05, 9.24e-05, 9.24e-05, 9.24e-05, 232.95463636], [1516554180000, 9.245e-05, 9.25e-05, 9.074e-05, 9.25e-05, 5223.41604364], [1516554300000, 9.149e-05, 9.149e-05, 9.149e-05, 9.149e-05, 1017.85714286], [1516554360000, 9.25e-05, 9.338e-05, 9.25e-05, 9.338e-05, 757.34959407], [1516554420000, 9.172e-05, 9.172e-05, 9.172e-05, 9.172e-05, 22.55831125], [1516554600000, 9.162e-05, 9.272e-05, 9.162e-05, 9.166e-05, 1217.12924807], [1516554660000, 9.272e-05, 9.272e-05, 9.272e-05, 9.272e-05, 208.53325541], [1516554720000, 9.174e-05, 9.174e-05, 9.149e-05, 9.149e-05, 185.81007414], [1516554900000, 9.225e-05, 9.226e-05, 9.155e-05, 9.155e-05, 3462.03173455], [1516554960000, 9.229e-05, 9.229e-05, 9.155e-05, 9.155e-05, 18.63770547], [1516555020000, 9.229e-05, 9.237e-05, 9.229e-05, 9.237e-05, 27.61746043], [1516555080000, 9.237e-05, 9.237e-05, 9.237e-05, 9.237e-05, 6.86015648], [1516555140000, 9.228e-05, 9.273e-05, 9.228e-05, 9.273e-05, 113.71241129], [1516555200000, 9.169e-05, 9.169e-05, 9.168e-05, 9.168e-05, 135.29495172], [1516555260000, 9.168e-05, 9.168e-05, 9.168e-05, 9.168e-05, 121.7596], [1516555320000, 9.168e-05, 9.168e-05, 9.155e-05, 9.155e-05, 5101.48239162], [1516555380000, 9.151e-05, 9.151e-05, 9.149e-05, 9.149e-05, 1099.891], [1516555440000, 9.149e-05, 9.149e-05, 9.125e-05, 9.125e-05, 239.50140077], [1516555500000, 9.125e-05, 9.125e-05, 9.125e-05, 9.125e-05, 388.94520547], [1516555560000, 9.122e-05, 9.122e-05, 9.122e-05, 9.122e-05, 77.61500681], [1516555620000, 9.1e-05, 9.122e-05, 9.001e-05, 9.119e-05, 3272.14323146], [1516555740000, 9.12e-05, 9.12e-05, 9.032e-05, 9.032e-05, 952.57782149], [1516555800000, 9.032e-05, 9.113e-05, 9e-05, 9.113e-05, 5943.75388869], [1516555920000, 9e-05, 9e-05, 8.946e-05, 8.974e-05, 17649.32210391], [1516555980000, 9e-05, 9e-05, 9e-05, 9e-05, 82.72390333], [1516556040000, 8.975e-05, 8.975e-05, 8.975e-05, 8.975e-05, 67.24719101], [1516556100000, 8.979e-05, 9.091e-05, 8.979e-05, 8.983e-05, 17584.79513046], [1516556160000, 9.097e-05, 9.097e-05, 8.985e-05, 8.985e-05, 1744.7046451], [1516556220000, 9.089e-05, 9.09e-05, 9e-05, 9.086e-05, 1154.35361385], [1516556280000, 9.078e-05, 9.078e-05, 9.078e-05, 9.078e-05, 5286.9752232], [1516556340000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 600.0600684], [1516556400000, 9.088e-05, 9.088e-05, 9.088e-05, 9.088e-05, 309.90314454], [1516556460000, 9.122e-05, 9.124e-05, 9.117e-05, 9.124e-05, 2537.89056604], [1516556520000, 9.124e-05, 9.14e-05, 9.124e-05, 9.14e-05, 828.91145244], [1516556580000, 9.13e-05, 9.145e-05, 9.13e-05, 9.13e-05, 3862.91233835], [1516556640000, 9.125e-05, 9.125e-05, 9.125e-05, 9.125e-05, 614.56531899], [1516556700000, 9.149e-05, 9.149e-05, 9.149e-05, 9.149e-05, 13.11618756], [1516556760000, 9.149e-05, 9.149e-05, 9.149e-05, 9.149e-05, 12.3076923], [1516556820000, 9.088e-05, 9.145e-05, 9.08e-05, 9.08e-05, 538.53211094], [1516556880000, 9.08e-05, 9.08e-05, 9.05e-05, 9.05e-05, 651.67682927], [1516556940000, 9.05e-05, 9.05e-05, 9.032e-05, 9.032e-05, 6860.58524001], [1516557060000, 9.149e-05, 9.15e-05, 9.149e-05, 9.15e-05, 321.05092587], [1516557120000, 9.15e-05, 9.15e-05, 9.15e-05, 9.15e-05, 38.52694917], [1516557180000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 50.0], [1516557240000, 9.1e-05, 9.17e-05, 9.1e-05, 9.17e-05, 488.46364122], [1516557300000, 9.108e-05, 9.108e-05, 9.1e-05, 9.1e-05, 6564.19662815], [1516557360000, 9.226e-05, 9.226e-05, 9.226e-05, 9.226e-05, 1369.27936457], [1516557420000, 9.217e-05, 9.217e-05, 9.217e-05, 9.217e-05, 1010.92929954], [1516557480000, 9.208e-05, 9.208e-05, 9.208e-05, 9.208e-05, 27.1321266], [1516557540000, 9.209e-05, 9.209e-05, 9.064e-05, 9.064e-05, 866.54359866], [1516557600000, 9.074e-05, 9.202e-05, 9.074e-05, 9.194e-05, 1439.33351775], [1516557660000, 9.194e-05, 9.194e-05, 9.194e-05, 9.194e-05, 116.19152548], [1516557720000, 9.195e-05, 9.195e-05, 9.036e-05, 9.194e-05, 2921.97751763], [1516557780000, 9.104e-05, 9.104e-05, 9.104e-05, 9.104e-05, 13.11618756], [1516557840000, 9.103e-05, 9.103e-05, 9.103e-05, 9.103e-05, 32.54860456], [1516557900000, 9.187e-05, 9.187e-05, 9.187e-05, 9.187e-05, 2581.34704719], [1516558080000, 9.149e-05, 9.15e-05, 9.147e-05, 9.148e-05, 2695.34154339], [1516558380000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 68.38328723], [1516558440000, 9.192e-05, 9.192e-05, 9.192e-05, 9.192e-05, 149.32993881], [1516558620000, 9.206e-05, 9.206e-05, 9.125e-05, 9.125e-05, 7392.3086258], [1516558800000, 9.208e-05, 9.208e-05, 9.208e-05, 9.208e-05, 12.88619839], [1516558860000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 309.61538462], [1516558920000, 9.22e-05, 9.224e-05, 9.2e-05, 9.201e-05, 1500.31676661], [1516558980000, 9.201e-05, 9.218e-05, 9.127e-05, 9.127e-05, 2756.39329834], [1516559100000, 9.128e-05, 9.128e-05, 9.127e-05, 9.127e-05, 104.29773609], [1516559160000, 9.127e-05, 9.217e-05, 9.127e-05, 9.217e-05, 888.67165475], [1516559220000, 9.21e-05, 9.211e-05, 9.127e-05, 9.127e-05, 4308.09012734], [1516559280000, 9.212e-05, 9.213e-05, 9.212e-05, 9.213e-05, 1116.49222176], [1516559340000, 9.128e-05, 9.128e-05, 9.125e-05, 9.125e-05, 6885.7169866], [1516559400000, 9.104e-05, 9.104e-05, 9.104e-05, 9.104e-05, 174.45319655], [1516559460000, 9.104e-05, 9.104e-05, 9.02e-05, 9.02e-05, 1621.25837664], [1516559520000, 9.127e-05, 9.127e-05, 9.1e-05, 9.1e-05, 299.01032047], [1516559640000, 9.1e-05, 9.1e-05, 9.02e-05, 9.02e-05, 259.90010451], [1516559760000, 9.127e-05, 9.127e-05, 9.127e-05, 9.127e-05, 100.0], [1516559820000, 9.127e-05, 9.127e-05, 9.127e-05, 9.127e-05, 133.19339761], [1516559880000, 9.127e-05, 9.127e-05, 9.127e-05, 9.127e-05, 93.78572045], [1516559940000, 9.137e-05, 9.139e-05, 9.137e-05, 9.139e-05, 5009.6049896], [1516560060000, 9.138e-05, 9.138e-05, 9.138e-05, 9.138e-05, 748.30843729], [1516560120000, 9.138e-05, 9.138e-05, 9.138e-05, 9.138e-05, 122.999999], [1516560180000, 9.138e-05, 9.138e-05, 9.138e-05, 9.138e-05, 313.63821505], [1516560360000, 9.138e-05, 9.138e-05, 9.042e-05, 9.042e-05, 720.0], [1516560420000, 9.042e-05, 9.042e-05, 9.042e-05, 9.042e-05, 20.0], [1516560480000, 9.042e-05, 9.2e-05, 9.039e-05, 9.043e-05, 2325.85766275], [1516560540000, 9.071e-05, 9.071e-05, 9.047e-05, 9.047e-05, 152.65453437], [1516560600000, 9.048e-05, 9.048e-05, 9.048e-05, 9.048e-05, 11.49376415], [1516560660000, 9.054e-05, 9.054e-05, 9.054e-05, 9.054e-05, 254.0], [1516560720000, 9.052e-05, 9.158e-05, 9.052e-05, 9.158e-05, 268.82664419], [1516560780000, 9.154e-05, 9.154e-05, 9.154e-05, 9.154e-05, 192.35357365], [1516560840000, 9.154e-05, 9.154e-05, 9.054e-05, 9.054e-05, 2269.26059217], [1516560900000, 9.154e-05, 9.172e-05, 9.154e-05, 9.172e-05, 1541.78503377], [1516560960000, 9.173e-05, 9.189e-05, 9.173e-05, 9.189e-05, 3270.85687212], [1516561020000, 9.189e-05, 9.189e-05, 9.189e-05, 9.189e-05, 1056.32914123], [1516561080000, 9.089e-05, 9.089e-05, 9.089e-05, 9.089e-05, 31.56810151], [1516561260000, 9.093e-05, 9.184e-05, 9.093e-05, 9.184e-05, 502.86316477], [1516561320000, 9.184e-05, 9.185e-05, 9.184e-05, 9.185e-05, 315.16737859], [1516561380000, 9.185e-05, 9.263e-05, 9.097e-05, 9.114e-05, 9113.77301459], [1516561440000, 9.118e-05, 9.251e-05, 9.114e-05, 9.179e-05, 2465.38221441], [1516561500000, 9.179e-05, 9.247e-05, 9.179e-05, 9.247e-05, 1111.81449505], [1516561560000, 9.242e-05, 9.242e-05, 9.178e-05, 9.178e-05, 100.62992361], [1516561620000, 9.092e-05, 9.092e-05, 9.09e-05, 9.09e-05, 1046.71288891], [1516561680000, 9.09e-05, 9.228e-05, 9.09e-05, 9.227e-05, 1014.03332743], [1516561740000, 9.224e-05, 9.224e-05, 9.094e-05, 9.22e-05, 111.39319514], [1516561860000, 9.212e-05, 9.22e-05, 9.212e-05, 9.22e-05, 216.44581562], [1516561920000, 9.218e-05, 9.22e-05, 9.218e-05, 9.22e-05, 78.19310814], [1516561980000, 9.22e-05, 9.232e-05, 9.22e-05, 9.232e-05, 85.85217862], [1516562040000, 9.222e-05, 9.222e-05, 9.222e-05, 9.222e-05, 216.33051399], [1516562100000, 9.165e-05, 9.165e-05, 9.16e-05, 9.16e-05, 2566.9146141], [1516562160000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 11.81], [1516562220000, 9.16e-05, 9.222e-05, 9.16e-05, 9.222e-05, 483.0], [1516562280000, 9.221e-05, 9.221e-05, 9.221e-05, 9.221e-05, 53.68791427], [1516562400000, 9.18e-05, 9.18e-05, 9.16e-05, 9.16e-05, 895.67240788], [1516562460000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 101.9540413], [1516562580000, 9.2e-05, 9.222e-05, 9.2e-05, 9.222e-05, 329.02325907], [1516562640000, 9.2e-05, 9.222e-05, 9.17e-05, 9.222e-05, 897.11198715], [1516562760000, 9.222e-05, 9.222e-05, 9.22e-05, 9.22e-05, 6020.63256752], [1516562820000, 9.22e-05, 9.22e-05, 9.219e-05, 9.219e-05, 518.40961391], [1516563000000, 9.219e-05, 9.219e-05, 9.215e-05, 9.215e-05, 173.11678246], [1516563060000, 9.215e-05, 9.24e-05, 9.215e-05, 9.24e-05, 3758.367553], [1516563120000, 9.18e-05, 9.18e-05, 9.16e-05, 9.18e-05, 1699.06005899], [1516563180000, 9.165e-05, 9.165e-05, 9.165e-05, 9.165e-05, 27.28959721], [1516563240000, 9.16e-05, 9.164e-05, 9.15e-05, 9.164e-05, 1534.15060256], [1516563300000, 9.164e-05, 9.164e-05, 9.164e-05, 9.164e-05, 11.40210912], [1516563360000, 9.164e-05, 9.239e-05, 9.15e-05, 9.15e-05, 6683.54001101], [1516563420000, 9.23e-05, 9.239e-05, 9.18e-05, 9.23e-05, 6968.68850849], [1516563480000, 9.185e-05, 9.23e-05, 9.185e-05, 9.23e-05, 1785.78061176], [1516563660000, 9.219e-05, 9.23e-05, 9.18e-05, 9.18e-05, 657.24089787], [1516563780000, 9.18e-05, 9.18e-05, 9.18e-05, 9.18e-05, 13.15421297], [1516563960000, 9.18e-05, 9.18e-05, 9.18e-05, 9.18e-05, 203.46134312], [1516564200000, 9.15e-05, 9.15e-05, 9.15e-05, 9.15e-05, 241.87668486], [1516564320000, 9.122e-05, 9.122e-05, 9.122e-05, 9.122e-05, 4179.13437335], [1516564380000, 9.18e-05, 9.18e-05, 9.18e-05, 9.18e-05, 44.56147455], [1516564440000, 9.18e-05, 9.18e-05, 9.18e-05, 9.18e-05, 419.54898967], [1516564500000, 9.18e-05, 9.229e-05, 9.103e-05, 9.229e-05, 705.78063023], [1516564560000, 9.229e-05, 9.229e-05, 9.229e-05, 9.229e-05, 485.96656255], [1516564680000, 9.227e-05, 9.227e-05, 9.1e-05, 9.1e-05, 2905.78676555], [1516564740000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 126.63840189], [1516564800000, 9.097e-05, 9.097e-05, 9.097e-05, 9.097e-05, 32.42516744], [1516564860000, 9.1e-05, 9.228e-05, 9.1e-05, 9.228e-05, 1993.63926489], [1516564920000, 9.2e-05, 9.228e-05, 9.2e-05, 9.228e-05, 447.05827481], [1516564980000, 9.228e-05, 9.228e-05, 9.131e-05, 9.131e-05, 6930.06551101], [1516565040000, 9.229e-05, 9.229e-05, 9.229e-05, 9.229e-05, 8.02500299], [1516565100000, 9.13e-05, 9.13e-05, 9.13e-05, 9.13e-05, 590.0], [1516565160000, 9.201e-05, 9.205e-05, 9.106e-05, 9.108e-05, 470.84849247], [1516565220000, 9.15e-05, 9.15e-05, 9.15e-05, 9.15e-05, 1010.90163934], [1516565280000, 9.15e-05, 9.203e-05, 9.12e-05, 9.203e-05, 71.30489923], [1516565340000, 9.13e-05, 9.13e-05, 9.106e-05, 9.107e-05, 1224.26496434], [1516565400000, 9.196e-05, 9.196e-05, 9.196e-05, 9.196e-05, 19.78252076], [1516565460000, 9.2e-05, 9.2e-05, 9.108e-05, 9.108e-05, 4137.74132526], [1516565520000, 9.192e-05, 9.194e-05, 9.192e-05, 9.194e-05, 426.93244824], [1516565580000, 9.196e-05, 9.196e-05, 9.11e-05, 9.11e-05, 79.02619903], [1516565640000, 9.11e-05, 9.11e-05, 9.108e-05, 9.11e-05, 804.46743436], [1516565700000, 9.192e-05, 9.192e-05, 9.192e-05, 9.192e-05, 101.96388159], [1516565760000, 9.19e-05, 9.19e-05, 9.055e-05, 9.055e-05, 704.11960994], [1516565880000, 9.174e-05, 9.196e-05, 9.174e-05, 9.176e-05, 4276.60185452], [1516565940000, 9.176e-05, 9.176e-05, 9.176e-05, 9.176e-05, 28.0], [1516566060000, 9.195e-05, 9.195e-05, 9.195e-05, 9.195e-05, 441.90530098], [1516566120000, 9.193e-05, 9.23e-05, 9.103e-05, 9.103e-05, 4812.65860387], [1516566180000, 9.268e-05, 9.269e-05, 9.266e-05, 9.266e-05, 444.11519766], [1516566240000, 9.264e-05, 9.264e-05, 9.264e-05, 9.264e-05, 95.08989153], [1516566300000, 9.17e-05, 9.17e-05, 9.149e-05, 9.149e-05, 1975.012], [1516566360000, 9.149e-05, 9.149e-05, 9.149e-05, 9.149e-05, 300.0], [1516566420000, 9.198e-05, 9.2e-05, 9.125e-05, 9.135e-05, 2395.31215353], [1516566480000, 9.2e-05, 9.266e-05, 9.2e-05, 9.266e-05, 601.80946996], [1516566540000, 9.137e-05, 9.137e-05, 9.137e-05, 9.137e-05, 120.99081801], [1516566600000, 9.146e-05, 9.262e-05, 9.104e-05, 9.262e-05, 2098.87087262], [1516566660000, 9.149e-05, 9.249e-05, 9.142e-05, 9.142e-05, 1227.12852588], [1516566720000, 9.249e-05, 9.249e-05, 9.132e-05, 9.132e-05, 24.0], [1516566780000, 9.19e-05, 9.19e-05, 9.159e-05, 9.19e-05, 1111.09950257], [1516566840000, 9.19e-05, 9.195e-05, 9.132e-05, 9.15e-05, 3521.00641251], [1516566900000, 9.155e-05, 9.2e-05, 9.151e-05, 9.151e-05, 1693.82595821], [1516566960000, 9.21e-05, 9.341e-05, 9.156e-05, 9.177e-05, 6390.13634473], [1516567020000, 9.212e-05, 9.212e-05, 9.166e-05, 9.169e-05, 3780.21363837], [1516567080000, 9.17e-05, 9.3e-05, 9.155e-05, 9.175e-05, 11766.3985135], [1516567140000, 9.175e-05, 9.234e-05, 9.173e-05, 9.198e-05, 5334.00149006], [1516567200000, 9.19e-05, 9.325e-05, 9.158e-05, 9.267e-05, 10983.76275997], [1516567260000, 9.235e-05, 9.315e-05, 9.168e-05, 9.315e-05, 13721.1615579], [1516567320000, 9.312e-05, 9.313e-05, 9.184e-05, 9.297e-05, 881.29656057], [1516567380000, 9.181e-05, 9.272e-05, 9.181e-05, 9.272e-05, 529.18726335], [1516567440000, 9.258e-05, 9.258e-05, 9.17e-05, 9.244e-05, 654.85024151], [1516567500000, 9.244e-05, 9.244e-05, 9.17e-05, 9.17e-05, 2071.39854145], [1516567560000, 9.199e-05, 9.199e-05, 9.17e-05, 9.171e-05, 749.74579279], [1516567620000, 9.199e-05, 9.199e-05, 9.17e-05, 9.17e-05, 1171.74605977], [1516567680000, 9.199e-05, 9.239e-05, 9.152e-05, 9.229e-05, 1169.68008983], [1516567740000, 9.229e-05, 9.229e-05, 9.161e-05, 9.161e-05, 203.39543109], [1516567800000, 9.229e-05, 9.279e-05, 9.164e-05, 9.279e-05, 603.63363271], [1516567860000, 9.183e-05, 9.275e-05, 9.172e-05, 9.176e-05, 2854.77095145], [1516567920000, 9.175e-05, 9.278e-05, 9.161e-05, 9.161e-05, 1681.74001133], [1516567980000, 9.236e-05, 9.238e-05, 9.166e-05, 9.238e-05, 4112.69750274], [1516568040000, 9.238e-05, 9.275e-05, 9.183e-05, 9.275e-05, 728.76269038], [1516568100000, 9.275e-05, 9.279e-05, 9.171e-05, 9.274e-05, 8012.7722251], [1516568160000, 9.171e-05, 9.27e-05, 9.156e-05, 9.163e-05, 2749.33876903], [1516568220000, 9.262e-05, 9.262e-05, 9.168e-05, 9.26e-05, 254.47446977], [1516568280000, 9.257e-05, 9.257e-05, 9.169e-05, 9.169e-05, 256.51164649], [1516568340000, 9.163e-05, 9.247e-05, 9.163e-05, 9.247e-05, 39.9999565], [1516568400000, 9.166e-05, 9.23e-05, 9.165e-05, 9.229e-05, 344.30950863], [1516568460000, 9.219e-05, 9.229e-05, 9.219e-05, 9.219e-05, 60.0], [1516568520000, 9.219e-05, 9.23e-05, 9.165e-05, 9.23e-05, 1653.4848472], [1516568580000, 9.165e-05, 9.23e-05, 9.165e-05, 9.23e-05, 805.87205924], [1516568640000, 9.23e-05, 9.23e-05, 9.229e-05, 9.23e-05, 54.20490463], [1516568700000, 9.229e-05, 9.246e-05, 9.165e-05, 9.246e-05, 1072.7509089], [1516568760000, 9.245e-05, 9.245e-05, 9.244e-05, 9.244e-05, 210.42655319], [1516568820000, 9.244e-05, 9.244e-05, 9.163e-05, 9.163e-05, 525.38375238], [1516568880000, 9.165e-05, 9.17e-05, 9.15e-05, 9.151e-05, 2826.31610319], [1516568940000, 9.17e-05, 9.22e-05, 9.152e-05, 9.22e-05, 1005.40449099], [1516569000000, 9.151e-05, 9.22e-05, 9.151e-05, 9.22e-05, 1357.53645154], [1516569060000, 9.157e-05, 9.22e-05, 9.15e-05, 9.15e-05, 7026.5491129], [1516569120000, 9.152e-05, 9.236e-05, 9.15e-05, 9.15e-05, 1984.69143534], [1516569180000, 9.152e-05, 9.229e-05, 9.15e-05, 9.15e-05, 347.9838266], [1516569240000, 9.235e-05, 9.235e-05, 9.15e-05, 9.151e-05, 1440.93081136], [1516569300000, 9.225e-05, 9.225e-05, 9.151e-05, 9.224e-05, 173.83271142], [1516569360000, 9.151e-05, 9.227e-05, 9.151e-05, 9.224e-05, 1147.00140571], [1516569420000, 9.152e-05, 9.152e-05, 9.152e-05, 9.152e-05, 530.08599517], [1516569480000, 9.227e-05, 9.228e-05, 9.15e-05, 9.228e-05, 6308.55300944], [1516569540000, 9.23e-05, 9.23e-05, 9.151e-05, 9.151e-05, 3059.68797086], [1516569600000, 9.151e-05, 9.151e-05, 9.151e-05, 9.151e-05, 202.17931132], [1516569660000, 9.228e-05, 9.228e-05, 9.15e-05, 9.228e-05, 385.40301484], [1516569720000, 9.228e-05, 9.228e-05, 9.15e-05, 9.15e-05, 115.59407997], [1516569780000, 9.224e-05, 9.224e-05, 9.224e-05, 9.224e-05, 10.0], [1516569840000, 9.16e-05, 9.165e-05, 9.15e-05, 9.15e-05, 3718.78262815], [1516569900000, 9.15e-05, 9.15e-05, 9.15e-05, 9.15e-05, 2785.40962597], [1516569960000, 9.15e-05, 9.22e-05, 9.15e-05, 9.15e-05, 1683.81740524], [1516570020000, 9.15e-05, 9.22e-05, 9.15e-05, 9.22e-05, 273.73932558], [1516570080000, 9.22e-05, 9.225e-05, 9.21e-05, 9.225e-05, 784.10280231], [1516570140000, 9.21e-05, 9.224e-05, 9.16e-05, 9.21e-05, 695.82159821], [1516570200000, 9.22e-05, 9.22e-05, 9.15e-05, 9.15e-05, 245.05209876], [1516570260000, 9.16e-05, 9.22e-05, 9.16e-05, 9.22e-05, 3329.901003], [1516570320000, 9.219e-05, 9.22e-05, 9.16e-05, 9.16e-05, 1420.88487323], [1516570440000, 9.219e-05, 9.219e-05, 9.219e-05, 9.219e-05, 32.790931], [1516570500000, 9.219e-05, 9.219e-05, 9.17e-05, 9.179e-05, 762.6289597], [1516570560000, 9.179e-05, 9.219e-05, 9.179e-05, 9.219e-05, 134.54420084], [1516570620000, 9.219e-05, 9.244e-05, 9.179e-05, 9.244e-05, 1453.72319925], [1516570680000, 9.227e-05, 9.227e-05, 9.227e-05, 9.227e-05, 10.0], [1516570740000, 9.241e-05, 9.242e-05, 9.227e-05, 9.227e-05, 282.71022373], [1516570800000, 9.227e-05, 9.227e-05, 9.227e-05, 9.227e-05, 436.55985508], [1516570860000, 9.173e-05, 9.173e-05, 9.173e-05, 9.173e-05, 194.59046732], [1516570920000, 9.227e-05, 9.227e-05, 9.179e-05, 9.179e-05, 780.69312246], [1516570980000, 9.227e-05, 9.227e-05, 9.227e-05, 9.227e-05, 335.17584864], [1516571040000, 9.227e-05, 9.241e-05, 9.227e-05, 9.241e-05, 280.57935901], [1516571100000, 9.241e-05, 9.244e-05, 9.241e-05, 9.244e-05, 87.42382722], [1516571160000, 9.182e-05, 9.242e-05, 9.179e-05, 9.242e-05, 1662.42897671], [1516571220000, 9.201e-05, 9.201e-05, 9.174e-05, 9.174e-05, 369.70782376], [1516571280000, 9.201e-05, 9.242e-05, 9.201e-05, 9.242e-05, 50.30957562], [1516571340000, 9.242e-05, 9.242e-05, 9.2e-05, 9.2e-05, 781.3202191], [1516571400000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 41.14081179], [1516571460000, 9.2e-05, 9.242e-05, 9.174e-05, 9.174e-05, 3101.87920665], [1516571580000, 9.242e-05, 9.242e-05, 9.242e-05, 9.242e-05, 634.28975266], [1516571640000, 9.242e-05, 9.242e-05, 9.242e-05, 9.242e-05, 556.66600299], [1516571820000, 9.235e-05, 9.235e-05, 9.235e-05, 9.235e-05, 1000.0], [1516571880000, 9.2e-05, 9.2e-05, 9.173e-05, 9.173e-05, 3427.73900136], [1516571940000, 9.234e-05, 9.236e-05, 9.234e-05, 9.236e-05, 7530.39611481], [1516572000000, 9.236e-05, 9.236e-05, 9.236e-05, 9.236e-05, 60.54099642], [1516572060000, 9.235e-05, 9.235e-05, 9.235e-05, 9.235e-05, 215.0], [1516572120000, 9.23e-05, 9.23e-05, 9.175e-05, 9.175e-05, 2033.05402822], [1516572180000, 9.175e-05, 9.243e-05, 9.173e-05, 9.243e-05, 3740.04971426], [1516572240000, 9.173e-05, 9.247e-05, 9.173e-05, 9.247e-05, 3676.57181807], [1516572300000, 9.246e-05, 9.246e-05, 9.245e-05, 9.245e-05, 22.890085], [1516572360000, 9.242e-05, 9.247e-05, 9.242e-05, 9.247e-05, 571.59642715], [1516572420000, 9.242e-05, 9.247e-05, 9.242e-05, 9.242e-05, 613.93337856], [1516572480000, 9.242e-05, 9.26e-05, 9.242e-05, 9.26e-05, 744.42115886], [1516572540000, 9.26e-05, 9.26e-05, 9.173e-05, 9.173e-05, 1240.57782175], [1516572600000, 9.173e-05, 9.173e-05, 9.165e-05, 9.165e-05, 1231.98551193], [1516572660000, 9.171e-05, 9.171e-05, 9.161e-05, 9.171e-05, 725.17047655], [1516572720000, 9.23e-05, 9.24e-05, 9.225e-05, 9.24e-05, 369.65509397], [1516572780000, 9.275e-05, 9.279e-05, 9.275e-05, 9.279e-05, 1283.23751779], [1516572840000, 9.279e-05, 9.335e-05, 9.276e-05, 9.277e-05, 868.62409638], [1516572900000, 9.277e-05, 9.277e-05, 9.184e-05, 9.184e-05, 3155.40200614], [1516572960000, 9.295e-05, 9.31e-05, 9.287e-05, 9.287e-05, 780.12268727], [1516573020000, 9.205e-05, 9.377e-05, 9.2e-05, 9.377e-05, 2511.17058732], [1516573080000, 9.335e-05, 9.442e-05, 9.335e-05, 9.442e-05, 5151.38049752], [1516573140000, 9.44e-05, 9.442e-05, 9.44e-05, 9.442e-05, 2934.02039901], [1516573200000, 9.345e-05, 9.491e-05, 9.337e-05, 9.337e-05, 3185.96362457], [1516573260000, 9.45e-05, 9.45e-05, 9.335e-05, 9.335e-05, 4996.0828132], [1516573320000, 9.336e-05, 9.337e-05, 9.336e-05, 9.336e-05, 135.30028865], [1516573380000, 9.337e-05, 9.409e-05, 9.337e-05, 9.409e-05, 138.40540104], [1516573440000, 9.407e-05, 9.49e-05, 9.335e-05, 9.335e-05, 1899.95573773], [1516573500000, 9.335e-05, 9.408e-05, 9.335e-05, 9.408e-05, 343.30759308], [1516573560000, 9.408e-05, 9.49e-05, 9.408e-05, 9.48e-05, 1821.13647237], [1516573620000, 9.478e-05, 9.478e-05, 9.336e-05, 9.476e-05, 626.24440911], [1516573680000, 9.468e-05, 9.469e-05, 9.34e-05, 9.466e-05, 1746.8640888], [1516573740000, 9.467e-05, 9.468e-05, 9.466e-05, 9.468e-05, 2747.97603448], [1516573800000, 9.466e-05, 9.466e-05, 9.34e-05, 9.34e-05, 201.44541379], [1516573860000, 9.35e-05, 9.46e-05, 9.35e-05, 9.46e-05, 253.70864531], [1516573920000, 9.399e-05, 9.471e-05, 9.349e-05, 9.471e-05, 2150.64997039], [1516573980000, 9.471e-05, 9.471e-05, 9.361e-05, 9.362e-05, 3715.30532553], [1516574040000, 9.46e-05, 9.471e-05, 9.46e-05, 9.471e-05, 516.86607648], [1516574100000, 9.369e-05, 9.469e-05, 9.365e-05, 9.469e-05, 670.78304103], [1516574160000, 9.469e-05, 9.469e-05, 9.365e-05, 9.469e-05, 2242.07565707], [1516574220000, 9.459e-05, 9.469e-05, 9.459e-05, 9.469e-05, 1280.68244159], [1516574280000, 9.469e-05, 9.472e-05, 9.361e-05, 9.361e-05, 777.99625656], [1516574340000, 9.461e-05, 9.473e-05, 9.369e-05, 9.473e-05, 663.6401839], [1516574400000, 9.371e-05, 9.472e-05, 9.371e-05, 9.472e-05, 75.72829212], [1516574460000, 9.469e-05, 9.469e-05, 9.335e-05, 9.36e-05, 4128.02638255], [1516574520000, 9.36e-05, 9.443e-05, 9.335e-05, 9.443e-05, 1234.31853097], [1516574580000, 9.347e-05, 9.441e-05, 9.335e-05, 9.335e-05, 2368.23002054], [1516574640000, 9.335e-05, 9.335e-05, 9.335e-05, 9.335e-05, 2256.51204137], [1516574700000, 9.429e-05, 9.43e-05, 9.335e-05, 9.43e-05, 3105.76941871], [1516574760000, 9.426e-05, 9.426e-05, 9.425e-05, 9.426e-05, 270.67723636], [1516574820000, 9.335e-05, 9.335e-05, 9.315e-05, 9.315e-05, 1823.14736342], [1516574880000, 9.3e-05, 9.335e-05, 9.3e-05, 9.3e-05, 1328.56442695], [1516574940000, 9.335e-05, 9.335e-05, 9.261e-05, 9.261e-05, 66.21426518], [1516575000000, 9.261e-05, 9.335e-05, 9.261e-05, 9.269e-05, 1445.24476415], [1516575060000, 9.269e-05, 9.269e-05, 9.269e-05, 9.269e-05, 30.84965333], [1516575120000, 9.269e-05, 9.269e-05, 9.251e-05, 9.269e-05, 1139.85665256], [1516575180000, 9.269e-05, 9.269e-05, 9.269e-05, 9.269e-05, 874.10732767], [1516575240000, 9.252e-05, 9.269e-05, 9.252e-05, 9.269e-05, 2175.25728297], [1516575300000, 9.258e-05, 9.269e-05, 9.258e-05, 9.269e-05, 2221.37631674], [1516575360000, 9.262e-05, 9.335e-05, 9.262e-05, 9.335e-05, 186.89302471], [1516575420000, 9.335e-05, 9.335e-05, 9.335e-05, 9.335e-05, 130.65993912], [1516575480000, 9.335e-05, 9.335e-05, 9.335e-05, 9.335e-05, 326.90458711], [1516575540000, 9.335e-05, 9.405e-05, 9.252e-05, 9.405e-05, 3579.50115028], [1516575600000, 9.391e-05, 9.391e-05, 9.391e-05, 9.391e-05, 67.12942575], [1516575660000, 9.266e-05, 9.3e-05, 9.266e-05, 9.3e-05, 120.05069779], [1516575720000, 9.3e-05, 9.379e-05, 9.3e-05, 9.377e-05, 232.68557142], [1516575780000, 9.365e-05, 9.367e-05, 9.365e-05, 9.367e-05, 502.89362116], [1516575840000, 9.367e-05, 9.367e-05, 9.356e-05, 9.367e-05, 520.15910776], [1516575900000, 9.367e-05, 9.406e-05, 9.267e-05, 9.405e-05, 3302.34421791], [1516576020000, 9.402e-05, 9.408e-05, 9.297e-05, 9.297e-05, 3532.68787387], [1516576080000, 9.422e-05, 9.426e-05, 9.315e-05, 9.426e-05, 843.00195453], [1516576140000, 9.426e-05, 9.426e-05, 9.327e-05, 9.327e-05, 50.04817036], [1516576200000, 9.425e-05, 9.472e-05, 9.425e-05, 9.472e-05, 1255.52112117], [1516576260000, 9.47e-05, 9.471e-05, 9.47e-05, 9.471e-05, 100.301003], [1516576320000, 9.471e-05, 9.472e-05, 9.469e-05, 9.47e-05, 276.83096684], [1516576380000, 9.459e-05, 9.471e-05, 9.366e-05, 9.367e-05, 626.31432679], [1516576440000, 9.37e-05, 9.471e-05, 9.37e-05, 9.47e-05, 493.39077307], [1516576500000, 9.37e-05, 9.472e-05, 9.37e-05, 9.472e-05, 972.27030554], [1516576560000, 9.471e-05, 9.472e-05, 9.376e-05, 9.472e-05, 454.75839896], [1516576620000, 9.382e-05, 9.473e-05, 9.382e-05, 9.473e-05, 740.14429377], [1516576680000, 9.387e-05, 9.488e-05, 9.312e-05, 9.312e-05, 2723.99902796], [1516576740000, 9.35e-05, 9.488e-05, 9.326e-05, 9.488e-05, 858.38361179], [1516576800000, 9.481e-05, 9.481e-05, 9.33e-05, 9.33e-05, 3330.51531659], [1516576860000, 9.483e-05, 9.483e-05, 9.477e-05, 9.477e-05, 100.70792268], [1516576920000, 9.472e-05, 9.473e-05, 9.472e-05, 9.473e-05, 734.55703909], [1516576980000, 9.361e-05, 9.471e-05, 9.361e-05, 9.471e-05, 200.45100299], [1516577040000, 9.471e-05, 9.471e-05, 9.38e-05, 9.38e-05, 574.56399208], [1516577100000, 9.4e-05, 9.4e-05, 9.381e-05, 9.381e-05, 55.78264358], [1516577160000, 9.381e-05, 9.4e-05, 9.381e-05, 9.4e-05, 656.9518834], [1516577220000, 9.398e-05, 9.4e-05, 9.38e-05, 9.4e-05, 490.47517989], [1516577280000, 9.4e-05, 9.488e-05, 9.4e-05, 9.485e-05, 833.72558017], [1516577340000, 9.484e-05, 9.488e-05, 9.381e-05, 9.381e-05, 2767.20905937], [1516577400000, 9.482e-05, 9.483e-05, 9.482e-05, 9.483e-05, 33.38439855], [1516577460000, 9.487e-05, 9.489e-05, 9.487e-05, 9.489e-05, 916.72357583], [1516577520000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 4251.35595809], [1516577580000, 9.45e-05, 9.485e-05, 9.382e-05, 9.382e-05, 2954.48509925], [1516577640000, 9.381e-05, 9.382e-05, 9.381e-05, 9.381e-05, 55.51878411], [1516577700000, 9.382e-05, 9.438e-05, 9.3e-05, 9.438e-05, 6706.69557543], [1516577760000, 9.438e-05, 9.475e-05, 9.438e-05, 9.438e-05, 4660.18555116], [1516577820000, 9.327e-05, 9.491e-05, 9.327e-05, 9.491e-05, 4755.93024815], [1516577880000, 9.476e-05, 9.491e-05, 9.476e-05, 9.479e-05, 1431.36156268], [1516577940000, 9.36e-05, 9.496e-05, 9.36e-05, 9.496e-05, 3377.91698009], [1516578000000, 9.405e-05, 9.475e-05, 9.313e-05, 9.475e-05, 2407.99545796], [1516578060000, 9.475e-05, 9.475e-05, 9.323e-05, 9.323e-05, 157.11799164], [1516578120000, 9.441e-05, 9.469e-05, 9.441e-05, 9.468e-05, 521.60848113], [1516578180000, 9.467e-05, 9.475e-05, 9.358e-05, 9.475e-05, 831.1570272], [1516578300000, 9.473e-05, 9.475e-05, 9.473e-05, 9.475e-05, 225.59558801], [1516578360000, 9.475e-05, 9.475e-05, 9.406e-05, 9.406e-05, 199.24830351], [1516578420000, 9.4e-05, 9.4e-05, 9.4e-05, 9.4e-05, 504.40264149], [1516578480000, 9.4e-05, 9.47e-05, 9.35e-05, 9.35e-05, 180.54287316], [1516578540000, 9.35e-05, 9.46e-05, 9.35e-05, 9.46e-05, 453.059453], [1516578600000, 9.46e-05, 9.47e-05, 9.46e-05, 9.47e-05, 78.76127505], [1516578660000, 9.469e-05, 9.469e-05, 9.469e-05, 9.469e-05, 7.022003], [1516578720000, 9.351e-05, 9.467e-05, 9.329e-05, 9.467e-05, 2084.94118242], [1516578780000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 10.0], [1516578840000, 9.449e-05, 9.449e-05, 9.342e-05, 9.411e-05, 821.76947106], [1516578960000, 9.349e-05, 9.349e-05, 9.349e-05, 9.349e-05, 114.0], [1516579020000, 9.349e-05, 9.45e-05, 9.344e-05, 9.45e-05, 1006.46632217], [1516579140000, 9.45e-05, 9.451e-05, 9.45e-05, 9.451e-05, 629.28777798], [1516579200000, 9.451e-05, 9.451e-05, 9.377e-05, 9.377e-05, 387.98811866], [1516579260000, 9.376e-05, 9.377e-05, 9.301e-05, 9.375e-05, 5348.39142811], [1516579320000, 9.311e-05, 9.349e-05, 9.252e-05, 9.259e-05, 17802.46757785], [1516579380000, 9.337e-05, 9.375e-05, 9.337e-05, 9.375e-05, 101.05246255], [1516579440000, 9.273e-05, 9.398e-05, 9.273e-05, 9.275e-05, 6286.75646961], [1516579500000, 9.251e-05, 9.33e-05, 9.251e-05, 9.313e-05, 351.85643593], [1516579560000, 9.313e-05, 9.32e-05, 9.251e-05, 9.255e-05, 12654.09338448], [1516579620000, 9.311e-05, 9.411e-05, 9.31e-05, 9.411e-05, 709.93565808], [1516579680000, 9.268e-05, 9.398e-05, 9.222e-05, 9.365e-05, 14928.4653034], [1516579740000, 9.348e-05, 9.348e-05, 9.222e-05, 9.309e-05, 988.18966328], [1516579800000, 9.31e-05, 9.317e-05, 9.222e-05, 9.311e-05, 6625.49796596], [1516579860000, 9.3e-05, 9.323e-05, 9.3e-05, 9.323e-05, 1131.60896779], [1516579920000, 9.323e-05, 9.323e-05, 9.312e-05, 9.312e-05, 616.29368848], [1516579980000, 9.312e-05, 9.312e-05, 9.228e-05, 9.23e-05, 2220.55090083], [1516580040000, 9.322e-05, 9.323e-05, 9.226e-05, 9.226e-05, 389.32151921], [1516580100000, 9.323e-05, 9.408e-05, 9.323e-05, 9.408e-05, 589.2511111], [1516580220000, 9.394e-05, 9.394e-05, 9.39e-05, 9.391e-05, 740.63003748], [1516580340000, 9.35e-05, 9.35e-05, 9.318e-05, 9.318e-05, 1105.3659401], [1516580400000, 9.32e-05, 9.32e-05, 9.318e-05, 9.318e-05, 131.29800944], [1516580460000, 9.318e-05, 9.32e-05, 9.24e-05, 9.24e-05, 1455.20551198], [1516580520000, 9.318e-05, 9.32e-05, 9.318e-05, 9.32e-05, 2154.03541453], [1516580580000, 9.318e-05, 9.318e-05, 9.222e-05, 9.222e-05, 6903.40062348], [1516580640000, 9.223e-05, 9.247e-05, 9.222e-05, 9.222e-05, 19815.38734656], [1516580700000, 9.247e-05, 9.314e-05, 9.166e-05, 9.308e-05, 8627.88089599], [1516580760000, 9.308e-05, 9.308e-05, 9.188e-05, 9.188e-05, 3182.20402528], [1516580820000, 9.187e-05, 9.295e-05, 9.161e-05, 9.276e-05, 3115.19096822], [1516580880000, 9.256e-05, 9.256e-05, 9.182e-05, 9.182e-05, 675.83015509], [1516580940000, 9.191e-05, 9.24e-05, 9.161e-05, 9.161e-05, 1122.22336685], [1516581000000, 9.2e-05, 9.2e-05, 9.153e-05, 9.153e-05, 2499.43844645], [1516581060000, 9.225e-05, 9.232e-05, 9.153e-05, 9.232e-05, 6579.10456933], [1516581120000, 9.232e-05, 9.263e-05, 9.071e-05, 9.263e-05, 22454.10133041], [1516581180000, 9.262e-05, 9.262e-05, 9.071e-05, 9.098e-05, 4896.17633526], [1516581240000, 9.124e-05, 9.243e-05, 9.123e-05, 9.233e-05, 1684.84619427], [1516581300000, 9.124e-05, 9.214e-05, 9.063e-05, 9.063e-05, 6212.95220057], [1516581360000, 9.216e-05, 9.216e-05, 9.123e-05, 9.208e-05, 1317.90242841], [1516581420000, 9.206e-05, 9.206e-05, 9.123e-05, 9.123e-05, 714.44576911], [1516581540000, 9.18e-05, 9.18e-05, 9.06e-05, 9.06e-05, 216.72590947], [1516581600000, 9.18e-05, 9.182e-05, 9.175e-05, 9.179e-05, 988.83202947], [1516581720000, 9.169e-05, 9.175e-05, 9.169e-05, 9.175e-05, 1360.33189371], [1516581780000, 9.17e-05, 9.17e-05, 9.075e-05, 9.075e-05, 549.1400325], [1516581840000, 9.078e-05, 9.168e-05, 9.078e-05, 9.168e-05, 529.80819966], [1516581900000, 9.094e-05, 9.168e-05, 9.094e-05, 9.096e-05, 2139.6993212], [1516581960000, 9.094e-05, 9.095e-05, 9.093e-05, 9.094e-05, 1924.84363087], [1516582020000, 9.095e-05, 9.095e-05, 9.052e-05, 9.052e-05, 7903.35181091], [1516582080000, 9.092e-05, 9.092e-05, 9.092e-05, 9.092e-05, 500.0], [1516582140000, 9.154e-05, 9.154e-05, 9.121e-05, 9.121e-05, 660.4466833], [1516582200000, 9.121e-05, 9.121e-05, 9.052e-05, 9.111e-05, 1654.78773382], [1516582260000, 9.111e-05, 9.111e-05, 9.096e-05, 9.096e-05, 523.09023823], [1516582320000, 9.096e-05, 9.096e-05, 9.054e-05, 9.054e-05, 724.47887149], [1516582380000, 9.078e-05, 9.1e-05, 9.055e-05, 9.1e-05, 1485.19428409], [1516582440000, 9.12e-05, 9.12e-05, 9.089e-05, 9.089e-05, 630.90302084], [1516582500000, 9.089e-05, 9.089e-05, 9.089e-05, 9.089e-05, 43.66152616], [1516582560000, 9.077e-05, 9.168e-05, 9.077e-05, 9.15e-05, 815.87831424], [1516582620000, 9.148e-05, 9.148e-05, 9.077e-05, 9.117e-05, 364.57048685], [1516582680000, 9.117e-05, 9.117e-05, 9.076e-05, 9.076e-05, 5589.97296815], [1516582740000, 9.113e-05, 9.141e-05, 9.113e-05, 9.138e-05, 1156.46045849], [1516582800000, 9.146e-05, 9.146e-05, 9.145e-05, 9.145e-05, 1114.25399722], [1516582860000, 9.133e-05, 9.133e-05, 9.133e-05, 9.133e-05, 26.50486191], [1516582920000, 9.064e-05, 9.117e-05, 9.055e-05, 9.055e-05, 3817.2974473], [1516582980000, 9.119e-05, 9.119e-05, 9.113e-05, 9.113e-05, 1457.34661424], [1516583040000, 9.113e-05, 9.113e-05, 9.113e-05, 9.113e-05, 2755.11876613], [1516583100000, 9.113e-05, 9.126e-05, 9.113e-05, 9.126e-05, 1291.07185572], [1516583160000, 9.126e-05, 9.126e-05, 9.126e-05, 9.126e-05, 1207.27514062], [1516583220000, 9.122e-05, 9.126e-05, 9.061e-05, 9.126e-05, 731.72208881], [1516583280000, 9.126e-05, 9.126e-05, 9.064e-05, 9.064e-05, 1963.76695102], [1516583400000, 9.126e-05, 9.126e-05, 9.065e-05, 9.073e-05, 3756.76923472], [1516583460000, 9.125e-05, 9.144e-05, 9.073e-05, 9.143e-05, 479.1989734], [1516583520000, 9.142e-05, 9.142e-05, 9.142e-05, 9.142e-05, 15.5653839], [1516583640000, 9.1e-05, 9.1e-05, 9.075e-05, 9.075e-05, 558.95370197], [1516583700000, 9.075e-05, 9.075e-05, 9.075e-05, 9.075e-05, 1000.0], [1516583760000, 9.075e-05, 9.075e-05, 9.075e-05, 9.075e-05, 496.59934379], [1516583820000, 9.075e-05, 9.142e-05, 9.075e-05, 9.142e-05, 1149.51702023], [1516583880000, 9.074e-05, 9.074e-05, 9.074e-05, 9.074e-05, 892.58682972], [1516583940000, 9.141e-05, 9.142e-05, 9.074e-05, 9.074e-05, 167.97977843], [1516584000000, 9.081e-05, 9.144e-05, 9.06e-05, 9.143e-05, 4955.59862102], [1516584060000, 9.081e-05, 9.081e-05, 9.039e-05, 9.039e-05, 3144.13738259], [1516584120000, 9.051e-05, 9.142e-05, 9.035e-05, 9.072e-05, 2252.89858768], [1516584180000, 9.072e-05, 9.072e-05, 9.001e-05, 9.059e-05, 1438.22318818], [1516584240000, 9.001e-05, 9.071e-05, 9e-05, 9.071e-05, 3510.80394264], [1516584300000, 9.071e-05, 9.136e-05, 8.964e-05, 9.071e-05, 13464.91177231], [1516584360000, 9.001e-05, 9.001e-05, 8.951e-05, 8.951e-05, 3027.33978352], [1516584420000, 9.011e-05, 9.114e-05, 9.006e-05, 9.006e-05, 1930.48402033], [1516584480000, 9.006e-05, 9.11e-05, 8.967e-05, 8.967e-05, 15371.46108946], [1516584540000, 9.107e-05, 9.107e-05, 8.951e-05, 8.951e-05, 17268.46118653], [1516584600000, 9.028e-05, 9.03e-05, 9.017e-05, 9.017e-05, 1553.03711319], [1516584660000, 9.016e-05, 9.016e-05, 9.009e-05, 9.012e-05, 6888.26719905], [1516584720000, 9.027e-05, 9.027e-05, 9.009e-05, 9.009e-05, 1280.73526523], [1516584780000, 9.009e-05, 9.01e-05, 8.951e-05, 8.951e-05, 10551.16222746], [1516584840000, 9.003e-05, 9.098e-05, 9.003e-05, 9.076e-05, 2581.18058189], [1516584900000, 9.005e-05, 9.005e-05, 8.951e-05, 9.003e-05, 8154.01596133], [1516584960000, 9.003e-05, 9.052e-05, 9.003e-05, 9.049e-05, 891.00411942], [1516585020000, 9.037e-05, 9.037e-05, 9.033e-05, 9.035e-05, 1341.58454932], [1516585080000, 9.032e-05, 9.034e-05, 8.952e-05, 8.952e-05, 2056.03652091], [1516585140000, 8.957e-05, 9.033e-05, 8.957e-05, 8.957e-05, 1073.68248327], [1516585200000, 9.033e-05, 9.033e-05, 9.032e-05, 9.033e-05, 215.11269645], [1516585260000, 9.033e-05, 9.033e-05, 8.952e-05, 8.952e-05, 506.9342318], [1516585320000, 8.951e-05, 9.032e-05, 8.951e-05, 8.951e-05, 6718.52803221], [1516585380000, 8.951e-05, 9.033e-05, 8.944e-05, 9.033e-05, 4955.3601324], [1516585440000, 9.029e-05, 9.029e-05, 8.9e-05, 9.013e-05, 7416.57053719], [1516585500000, 8.949e-05, 9.019e-05, 8.9e-05, 8.988e-05, 1826.94146422], [1516585560000, 8.988e-05, 9.018e-05, 8.9e-05, 8.9e-05, 8354.38102784], [1516585620000, 8.935e-05, 9.017e-05, 8.9e-05, 8.989e-05, 714.83711857], [1516585680000, 8.989e-05, 9.013e-05, 8.901e-05, 8.901e-05, 605.55310914], [1516585740000, 8.99e-05, 8.99e-05, 8.99e-05, 8.99e-05, 343.94646552], [1516585800000, 8.99e-05, 9.074e-05, 8.905e-05, 8.915e-05, 4008.12130184], [1516585860000, 8.92e-05, 9.062e-05, 8.907e-05, 9.044e-05, 1824.26049042], [1516585920000, 9.038e-05, 9.038e-05, 8.95e-05, 8.95e-05, 8473.10304914], [1516585980000, 8.95e-05, 9.002e-05, 8.899e-05, 8.99e-05, 5189.70999299], [1516586040000, 8.99e-05, 8.992e-05, 8.952e-05, 8.952e-05, 1049.04750579], [1516586100000, 8.952e-05, 8.953e-05, 8.902e-05, 8.944e-05, 1467.90708495], [1516586160000, 8.944e-05, 8.991e-05, 8.9e-05, 8.938e-05, 5356.14760982], [1516586220000, 8.938e-05, 9.024e-05, 8.9e-05, 8.995e-05, 3965.54546455], [1516586280000, 8.911e-05, 8.951e-05, 8.9e-05, 8.912e-05, 1910.76163909], [1516586340000, 8.912e-05, 8.991e-05, 8.901e-05, 8.901e-05, 1800.6620371], [1516586400000, 8.991e-05, 8.991e-05, 8.991e-05, 8.991e-05, 50.151003], [1516586460000, 8.901e-05, 8.986e-05, 8.901e-05, 8.904e-05, 1099.82580483], [1516586520000, 8.966e-05, 8.987e-05, 8.966e-05, 8.987e-05, 699.71548878], [1516586580000, 8.987e-05, 8.991e-05, 8.987e-05, 8.991e-05, 2553.55624255], [1516586640000, 8.991e-05, 9e-05, 8.868e-05, 8.868e-05, 13470.40481341], [1516586700000, 8.868e-05, 8.975e-05, 8.868e-05, 8.975e-05, 309.481066], [1516586760000, 8.91e-05, 9.087e-05, 8.868e-05, 9.087e-05, 4454.01981192], [1516586820000, 9.074e-05, 9.074e-05, 9.074e-05, 9.074e-05, 68.83980969], [1516586880000, 9.074e-05, 9.074e-05, 8.929e-05, 8.929e-05, 315.53136175], [1516587000000, 9.055e-05, 9.104e-05, 9.01e-05, 9.104e-05, 1728.32803935], [1516587060000, 9.102e-05, 9.102e-05, 9.102e-05, 9.102e-05, 221.22289516], [1516587120000, 8.963e-05, 9.101e-05, 8.962e-05, 8.971e-05, 541.21181251], [1516587180000, 8.972e-05, 9.088e-05, 8.972e-05, 9.088e-05, 679.7777957], [1516587240000, 8.978e-05, 8.989e-05, 8.975e-05, 8.978e-05, 4959.33266033], [1516587300000, 8.975e-05, 9.115e-05, 8.972e-05, 9.106e-05, 1926.2241706], [1516587360000, 8.975e-05, 9.1e-05, 8.882e-05, 8.882e-05, 11628.7233778], [1516587420000, 8.911e-05, 9.044e-05, 8.907e-05, 9.038e-05, 2793.14692573], [1516587480000, 8.915e-05, 9.036e-05, 8.915e-05, 9.032e-05, 1211.6017765], [1516587540000, 8.917e-05, 9.018e-05, 8.916e-05, 9.018e-05, 76.07675839], [1516587600000, 9.018e-05, 9.027e-05, 9.018e-05, 9.027e-05, 1689.65490832], [1516587660000, 9.028e-05, 9.028e-05, 9.028e-05, 9.028e-05, 34.46589348], [1516587780000, 9.028e-05, 9.028e-05, 9.028e-05, 9.028e-05, 552.32202772], [1516587840000, 9.028e-05, 9.031e-05, 9.028e-05, 9.031e-05, 159.2805], [1516587960000, 9.03e-05, 9.03e-05, 8.932e-05, 8.932e-05, 1176.4275515], [1516588020000, 8.961e-05, 9.027e-05, 8.932e-05, 9.027e-05, 481.19955545], [1516588080000, 9.025e-05, 9.025e-05, 8.928e-05, 9.025e-05, 1433.83703402], [1516588140000, 8.928e-05, 9.024e-05, 8.928e-05, 9.024e-05, 1102.82100504], [1516588200000, 9.024e-05, 9.024e-05, 9.024e-05, 9.024e-05, 105.27482268], [1516588260000, 9.023e-05, 9.024e-05, 9.023e-05, 9.024e-05, 1447.81648336], [1516588320000, 8.969e-05, 8.969e-05, 8.968e-05, 8.969e-05, 391.95814158], [1516588380000, 9.025e-05, 9.028e-05, 8.876e-05, 9.028e-05, 21898.90869175], [1516588440000, 9.027e-05, 9.027e-05, 8.869e-05, 8.869e-05, 12076.09576208], [1516588500000, 9.027e-05, 9.089e-05, 9.026e-05, 9.027e-05, 1008.27697969], [1516588560000, 9.02e-05, 9.02e-05, 9.019e-05, 9.019e-05, 763.38542578], [1516588620000, 9.019e-05, 9.019e-05, 9.019e-05, 9.019e-05, 80.94023727], [1516588680000, 9.025e-05, 9.025e-05, 8.93e-05, 8.93e-05, 296.42351693], [1516588740000, 9e-05, 9.018e-05, 9e-05, 9.016e-05, 385.23572953], [1516588800000, 9.011e-05, 9.011e-05, 9.011e-05, 9.011e-05, 34.50072267], [1516588860000, 9.009e-05, 9.009e-05, 9.008e-05, 9.008e-05, 283.35847332], [1516588920000, 9.003e-05, 9.01e-05, 9.003e-05, 9.01e-05, 210.60155499], [1516589040000, 9.013e-05, 9.013e-05, 9.013e-05, 9.013e-05, 102.91959503], [1516589100000, 9.013e-05, 9.102e-05, 8.93e-05, 8.93e-05, 5213.99797219], [1516589160000, 8.932e-05, 9.101e-05, 8.932e-05, 9.083e-05, 3263.34560591], [1516589220000, 9.083e-05, 9.083e-05, 8.956e-05, 8.956e-05, 254.14314129], [1516589280000, 9.066e-05, 9.069e-05, 9.066e-05, 9.069e-05, 5135.47791651], [1516589400000, 8.979e-05, 8.979e-05, 8.948e-05, 8.948e-05, 300.0], [1516589460000, 9.03e-05, 9.03e-05, 9.03e-05, 9.03e-05, 51.79736869], [1516589760000, 8.946e-05, 8.997e-05, 8.946e-05, 8.997e-05, 1129.00011404], [1516589820000, 8.945e-05, 9.088e-05, 8.945e-05, 9.079e-05, 43424.10753399], [1516589880000, 9.08e-05, 9.08e-05, 9.071e-05, 9.079e-05, 809.52225678], [1516589940000, 8.998e-05, 9.07e-05, 8.998e-05, 9.07e-05, 4888.03127648], [1516590000000, 9.068e-05, 9.081e-05, 9.068e-05, 9.081e-05, 187.36100939], [1516590060000, 9.079e-05, 9.079e-05, 8.999e-05, 8.999e-05, 1512.59715584], [1516590120000, 9.066e-05, 9.066e-05, 8.972e-05, 8.972e-05, 10436.69707241], [1516590180000, 8.999e-05, 8.999e-05, 8.973e-05, 8.999e-05, 1567.05847481], [1516590240000, 8.999e-05, 8.999e-05, 8.998e-05, 8.999e-05, 354.20254567], [1516590300000, 9.054e-05, 9.054e-05, 9.052e-05, 9.052e-05, 1901.12531077], [1516590360000, 8.98e-05, 9.049e-05, 8.98e-05, 9.049e-05, 54.6168281], [1516590420000, 9.052e-05, 9.052e-05, 9.052e-05, 9.052e-05, 34.12869842], [1516590540000, 9.049e-05, 9.05e-05, 9.049e-05, 9.05e-05, 9.61834808], [1516590600000, 8.982e-05, 8.982e-05, 8.982e-05, 8.982e-05, 3605.84608384], [1516590660000, 8.975e-05, 9.088e-05, 8.975e-05, 9.088e-05, 134.38914691], [1516590780000, 9.015e-05, 9.062e-05, 9.015e-05, 9.062e-05, 37.076003], [1516590840000, 9.086e-05, 9.086e-05, 9.086e-05, 9.086e-05, 14.04300299], [1516590900000, 9.082e-05, 9.082e-05, 8.984e-05, 8.984e-05, 284.23917752], [1516590960000, 9.067e-05, 9.068e-05, 8.986e-05, 8.986e-05, 742.33953228], [1516591020000, 9.049e-05, 9.049e-05, 9.049e-05, 9.049e-05, 192.82743081], [1516591080000, 9.05e-05, 9.05e-05, 9.049e-05, 9.049e-05, 1393.57110401], [1516591140000, 9.05e-05, 9.05e-05, 9.05e-05, 9.05e-05, 1248.09742028], [1516591200000, 9.059e-05, 9.059e-05, 9.059e-05, 9.059e-05, 434.43374417], [1516591320000, 9.059e-05, 9.059e-05, 9.059e-05, 9.059e-05, 438.52987862], [1516591380000, 9.085e-05, 9.119e-05, 9.059e-05, 9.113e-05, 1109.68796264], [1516591500000, 9.094e-05, 9.095e-05, 9.094e-05, 9.095e-05, 679.07882578], [1516591560000, 9.092e-05, 9.092e-05, 9.092e-05, 9.092e-05, 160.0], [1516591620000, 9.094e-05, 9.095e-05, 9.094e-05, 9.095e-05, 733.10895618], [1516591740000, 9.09e-05, 9.09e-05, 9.059e-05, 9.087e-05, 325.05999519], [1516591800000, 9.073e-05, 9.087e-05, 9.073e-05, 9.087e-05, 12091.02118659], [1516591860000, 9.087e-05, 9.087e-05, 9.087e-05, 9.087e-05, 74.75917987], [1516591980000, 9.05e-05, 9.05e-05, 9.05e-05, 9.05e-05, 1661.59877727], [1516592040000, 9.085e-05, 9.148e-05, 9.085e-05, 9.085e-05, 776.23162502], [1516592100000, 9.085e-05, 9.197e-05, 9.085e-05, 9.197e-05, 1455.67084457], [1516592160000, 9.195e-05, 9.195e-05, 9.086e-05, 9.086e-05, 230.9146223], [1516592220000, 9.086e-05, 9.187e-05, 9.086e-05, 9.187e-05, 280.31498699], [1516592280000, 9.183e-05, 9.183e-05, 9.183e-05, 9.183e-05, 41.16826268], [1516592340000, 9.086e-05, 9.086e-05, 9.05e-05, 9.086e-05, 2601.35245854], [1516592400000, 9.086e-05, 9.086e-05, 9.084e-05, 9.084e-05, 135.822544], [1516592460000, 9.085e-05, 9.085e-05, 9.085e-05, 9.085e-05, 6.81699169], [1516592520000, 9.084e-05, 9.085e-05, 9.084e-05, 9.085e-05, 185.2557237], [1516592580000, 9.051e-05, 9.085e-05, 9.05e-05, 9.085e-05, 406.67740705], [1516592640000, 9.085e-05, 9.085e-05, 9.05e-05, 9.05e-05, 85.46433654], [1516592700000, 9.084e-05, 9.085e-05, 9.084e-05, 9.085e-05, 30.34952363], [1516592760000, 9.085e-05, 9.085e-05, 9.082e-05, 9.083e-05, 2505.33439017], [1516592880000, 9.05e-05, 9.083e-05, 9.05e-05, 9.05e-05, 3114.11903924], [1516592940000, 9.05e-05, 9.082e-05, 9.05e-05, 9.082e-05, 129.19340796], [1516593000000, 9.081e-05, 9.085e-05, 9.05e-05, 9.05e-05, 1507.11532879], [1516593060000, 9.08e-05, 9.086e-05, 9.05e-05, 9.05e-05, 746.1617266], [1516593120000, 9.05e-05, 9.05e-05, 9.05e-05, 9.05e-05, 267.45611111], [1516593180000, 9.085e-05, 9.086e-05, 9.076e-05, 9.076e-05, 116.50375176], [1516593240000, 9.05e-05, 9.076e-05, 9.05e-05, 9.076e-05, 127.78368605], [1516593300000, 9.075e-05, 9.076e-05, 9e-05, 9e-05, 73.64184758], [1516593360000, 9.006e-05, 9.006e-05, 9.006e-05, 9.006e-05, 160.62142602], [1516593480000, 9.079e-05, 9.086e-05, 9.079e-05, 9.086e-05, 100.301003], [1516593540000, 9.013e-05, 9.138e-05, 9.012e-05, 9.138e-05, 764.03572682], [1516593600000, 9.134e-05, 9.134e-05, 9.134e-05, 9.134e-05, 24.4507896], [1516593720000, 9.084e-05, 9.133e-05, 9e-05, 9.131e-05, 8044.81741551], [1516593780000, 9.007e-05, 9.007e-05, 9.007e-05, 9.007e-05, 164.04006306], [1516593840000, 9.083e-05, 9.084e-05, 9.083e-05, 9.084e-05, 1100.0], [1516593900000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 27.52091589], [1516593960000, 9.084e-05, 9.084e-05, 9.013e-05, 9.013e-05, 1112.07953702], [1516594020000, 9.133e-05, 9.133e-05, 9.133e-05, 9.133e-05, 94.0], [1516594080000, 9.017e-05, 9.132e-05, 9.006e-05, 9.132e-05, 432.31667177], [1516594140000, 9.008e-05, 9.132e-05, 9.007e-05, 9.132e-05, 235.39105932], [1516594200000, 9.114e-05, 9.125e-05, 9.114e-05, 9.123e-05, 1354.93754051], [1516594260000, 9.125e-05, 9.125e-05, 9.125e-05, 9.125e-05, 391.0], [1516594380000, 9.124e-05, 9.125e-05, 9.124e-05, 9.125e-05, 1082.06055652], [1516594440000, 9.125e-05, 9.125e-05, 9.125e-05, 9.125e-05, 200.0], [1516594500000, 9.124e-05, 9.125e-05, 9.022e-05, 9.022e-05, 3285.69719621], [1516594560000, 9.025e-05, 9.025e-05, 9.025e-05, 9.025e-05, 300.0], [1516594620000, 9.123e-05, 9.123e-05, 9.123e-05, 9.123e-05, 7.94058249], [1516594680000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 50.0], [1516594740000, 9.06e-05, 9.132e-05, 9.06e-05, 9.132e-05, 269.1578751], [1516594800000, 9.02e-05, 9.128e-05, 9.02e-05, 9.128e-05, 209.17916746], [1516594860000, 9.127e-05, 9.127e-05, 9.127e-05, 9.127e-05, 521.51415834], [1516594980000, 9.125e-05, 9.126e-05, 9.125e-05, 9.126e-05, 201.19344768], [1516595100000, 9.119e-05, 9.121e-05, 9.042e-05, 9.042e-05, 447.45203377], [1516595160000, 9.118e-05, 9.118e-05, 9.118e-05, 9.118e-05, 53.94683396], [1516595280000, 9.114e-05, 9.114e-05, 9.114e-05, 9.114e-05, 73.68338385], [1516595340000, 9.111e-05, 9.111e-05, 9.111e-05, 9.111e-05, 77.09723693], [1516595400000, 9.111e-05, 9.146e-05, 9.111e-05, 9.146e-05, 336.2385617], [1516595460000, 9.143e-05, 9.143e-05, 9.143e-05, 9.143e-05, 6.70484042], [1516595580000, 9.138e-05, 9.138e-05, 9.137e-05, 9.137e-05, 237.31319943], [1516595640000, 9.132e-05, 9.137e-05, 9.132e-05, 9.137e-05, 786.16657437], [1516595760000, 9.129e-05, 9.129e-05, 9.128e-05, 9.129e-05, 423.67506095], [1516595820000, 9.129e-05, 9.129e-05, 9.129e-05, 9.129e-05, 84.3090835], [1516595880000, 9.129e-05, 9.129e-05, 9.129e-05, 9.129e-05, 721.69804665], [1516595940000, 9.127e-05, 9.127e-05, 9.02e-05, 9.119e-05, 2971.83077971], [1516596000000, 9.052e-05, 9.112e-05, 9.02e-05, 9.112e-05, 3879.52691282], [1516596060000, 9.108e-05, 9.108e-05, 9.026e-05, 9.026e-05, 720.31661496], [1516596120000, 9.1e-05, 9.103e-05, 9.1e-05, 9.103e-05, 616.25357768], [1516596180000, 9.103e-05, 9.103e-05, 9.099e-05, 9.099e-05, 31.17653544], [1516596300000, 9.092e-05, 9.093e-05, 9.022e-05, 9.022e-05, 639.95813189], [1516596360000, 9.022e-05, 9.022e-05, 9.022e-05, 9.022e-05, 550.0], [1516596480000, 9.087e-05, 9.087e-05, 9.022e-05, 9.022e-05, 310.03100299], [1516596540000, 9.023e-05, 9.087e-05, 9.023e-05, 9.087e-05, 169.27642886], [1516596600000, 9.023e-05, 9.023e-05, 9.022e-05, 9.022e-05, 70.86283394], [1516596660000, 9.022e-05, 9.022e-05, 9.022e-05, 9.022e-05, 120.22553832], [1516596720000, 9.023e-05, 9.098e-05, 9.023e-05, 9.098e-05, 1852.58264638], [1516596840000, 9.022e-05, 9.022e-05, 9.022e-05, 9.022e-05, 129.19459954], [1516596900000, 9.097e-05, 9.127e-05, 9.097e-05, 9.127e-05, 691.65058511], [1516596960000, 9.071e-05, 9.071e-05, 9.052e-05, 9.071e-05, 357.77945792], [1516597020000, 9.071e-05, 9.129e-05, 9.071e-05, 9.129e-05, 184.68690486], [1516597080000, 9.11e-05, 9.11e-05, 9.05e-05, 9.05e-05, 871.26890224], [1516597140000, 9.025e-05, 9.107e-05, 9.025e-05, 9.107e-05, 117.85952333], [1516597260000, 9.037e-05, 9.037e-05, 9.012e-05, 9.012e-05, 2065.95832607], [1516597320000, 9.005e-05, 9.005e-05, 9.005e-05, 9.005e-05, 563.92530301], [1516597380000, 9.006e-05, 9.012e-05, 9.006e-05, 9.012e-05, 360.01122617], [1516597440000, 9.012e-05, 9.012e-05, 9.012e-05, 9.012e-05, 375.76357294], [1516597500000, 9.086e-05, 9.086e-05, 9.086e-05, 9.086e-05, 6.84425233], [1516597560000, 9.084e-05, 9.084e-05, 9.082e-05, 9.082e-05, 431.57946724], [1516597740000, 9.007e-05, 9.086e-05, 9.007e-05, 9.086e-05, 1303.41667943], [1516597920000, 9.01e-05, 9.01e-05, 8.983e-05, 8.983e-05, 3344.34468], [1516597980000, 8.986e-05, 8.986e-05, 8.98e-05, 8.98e-05, 50.0], [1516598040000, 9.059e-05, 9.059e-05, 9.059e-05, 9.059e-05, 274.3792579], [1516598160000, 9.059e-05, 9.059e-05, 8.996e-05, 8.996e-05, 682.43470709], [1516598220000, 9.049e-05, 9.049e-05, 9.049e-05, 9.049e-05, 1332.37718095], [1516598280000, 9.044e-05, 9.044e-05, 9.044e-05, 9.044e-05, 409.4339546], [1516598340000, 9.036e-05, 9.036e-05, 9.036e-05, 9.036e-05, 68.38758422], [1516598400000, 9.032e-05, 9.032e-05, 9.032e-05, 9.032e-05, 46.7057286], [1516598460000, 9.031e-05, 9.074e-05, 9.005e-05, 9.005e-05, 193.96123206], [1516598520000, 9.005e-05, 9.076e-05, 9.005e-05, 9.074e-05, 710.12822382], [1516598580000, 9.072e-05, 9.072e-05, 9.005e-05, 9.005e-05, 603.62029848], [1516598640000, 9.005e-05, 9.005e-05, 9.005e-05, 9.005e-05, 65.67046945], [1516598700000, 9.005e-05, 9.005e-05, 9.004e-05, 9.004e-05, 102.0], [1516598760000, 8.981e-05, 9.055e-05, 8.981e-05, 9.055e-05, 2999.67153219], [1516598880000, 9.054e-05, 9.054e-05, 8.99e-05, 8.99e-05, 114.81051619], [1516598940000, 9.055e-05, 9.055e-05, 9.055e-05, 9.055e-05, 186.8345293], [1516599060000, 9.054e-05, 9.054e-05, 9.054e-05, 9.054e-05, 774.7374436], [1516599120000, 8.993e-05, 9.055e-05, 8.981e-05, 9.054e-05, 4452.81723319], [1516599180000, 9.052e-05, 9.055e-05, 9.052e-05, 9.055e-05, 1554.01333105], [1516599300000, 9.057e-05, 9.094e-05, 9.057e-05, 9.094e-05, 68.50772048], [1516599660000, 9.06e-05, 9.094e-05, 9.06e-05, 9.093e-05, 670.55909629], [1516599720000, 9.091e-05, 9.093e-05, 9.091e-05, 9.093e-05, 272.15750352], [1516599780000, 9.092e-05, 9.13e-05, 9.092e-05, 9.094e-05, 36895.85505612], [1516599840000, 9.13e-05, 9.15e-05, 9e-05, 9e-05, 3120.63588498], [1516599900000, 9.021e-05, 9.096e-05, 9.021e-05, 9.096e-05, 150.94353291], [1516599960000, 9.05e-05, 9.05e-05, 9.05e-05, 9.05e-05, 13.22916888], [1516600020000, 9.06e-05, 9.14e-05, 9.06e-05, 9.14e-05, 1057.01114663], [1516600140000, 9.121e-05, 9.121e-05, 9.121e-05, 9.121e-05, 101.86929937], [1516600200000, 9.07e-05, 9.071e-05, 9.07e-05, 9.071e-05, 1303.70025079], [1516600260000, 9.109e-05, 9.11e-05, 9.071e-05, 9.071e-05, 430.12274809], [1516600320000, 9.11e-05, 9.11e-05, 9.059e-05, 9.059e-05, 1443.01453392], [1516600440000, 9.059e-05, 9.108e-05, 9.059e-05, 9.108e-05, 1456.93657117], [1516600560000, 9.059e-05, 9.059e-05, 9.059e-05, 9.059e-05, 520.0], [1516600620000, 9.107e-05, 9.144e-05, 9.107e-05, 9.144e-05, 834.40150478], [1516600680000, 9.139e-05, 9.139e-05, 9.061e-05, 9.061e-05, 377.88638402], [1516600740000, 9.139e-05, 9.15e-05, 9.139e-05, 9.15e-05, 652.91901984], [1516600800000, 9.061e-05, 9.061e-05, 9.061e-05, 9.061e-05, 163.0], [1516600860000, 9.061e-05, 9.14e-05, 9.061e-05, 9.14e-05, 102.39329821], [1516600920000, 9.141e-05, 9.144e-05, 9.14e-05, 9.14e-05, 3859.66614639], [1516600980000, 9.138e-05, 9.139e-05, 9.138e-05, 9.139e-05, 395.37958865], [1516601040000, 9.064e-05, 9.139e-05, 9.063e-05, 9.063e-05, 869.7881738], [1516601100000, 9.064e-05, 9.064e-05, 9.062e-05, 9.063e-05, 203.62955687], [1516601160000, 9.062e-05, 9.062e-05, 9.061e-05, 9.061e-05, 1043.41464913], [1516601220000, 9.061e-05, 9.061e-05, 9.06e-05, 9.06e-05, 1812.8952896], [1516601280000, 9.062e-05, 9.064e-05, 9.062e-05, 9.064e-05, 67.91747191], [1516601340000, 9.064e-05, 9.064e-05, 9.063e-05, 9.063e-05, 266.54379932], [1516601400000, 9.063e-05, 9.063e-05, 9.063e-05, 9.063e-05, 10.03100299], [1516601460000, 9.058e-05, 9.058e-05, 9.023e-05, 9.023e-05, 177.43057456], [1516601520000, 9.023e-05, 9.023e-05, 8.972e-05, 8.98e-05, 2751.65798003], [1516601580000, 8.979e-05, 8.98e-05, 8.979e-05, 8.98e-05, 556.16317146], [1516601640000, 9.061e-05, 9.061e-05, 9.058e-05, 9.058e-05, 3022.74230859], [1516601700000, 8.981e-05, 8.981e-05, 8.981e-05, 8.981e-05, 177.14235694], [1516601760000, 9.05e-05, 9.05e-05, 9.05e-05, 9.05e-05, 40.27863659], [1516601820000, 8.973e-05, 9.05e-05, 8.973e-05, 9.05e-05, 54.20262893], [1516601880000, 8.977e-05, 8.977e-05, 8.977e-05, 8.977e-05, 1011.18572854], [1516601940000, 8.986e-05, 8.986e-05, 8.986e-05, 8.986e-05, 27.04119127], [1516602000000, 9.05e-05, 9.05e-05, 9.05e-05, 9.05e-05, 10.03100299], [1516602060000, 8.986e-05, 9.05e-05, 8.986e-05, 8.99e-05, 50.91800063], [1516602120000, 8.992e-05, 8.992e-05, 8.992e-05, 8.992e-05, 14.0], [1516602180000, 9.049e-05, 9.116e-05, 9.049e-05, 9.116e-05, 1668.66457247], [1516602240000, 9.116e-05, 9.13e-05, 9.116e-05, 9.13e-05, 677.79575755], [1516602300000, 9.017e-05, 9.047e-05, 8.986e-05, 9.047e-05, 222.57074979], [1516602360000, 9.047e-05, 9.126e-05, 9.017e-05, 9.017e-05, 3422.11097493], [1516602420000, 9.047e-05, 9.132e-05, 9.017e-05, 9.131e-05, 4137.05642777], [1516602480000, 9.125e-05, 9.125e-05, 9.125e-05, 9.125e-05, 67.94278035], [1516602540000, 9.121e-05, 9.121e-05, 9.12e-05, 9.12e-05, 336.7590618], [1516602600000, 9.12e-05, 9.12e-05, 9.018e-05, 9.114e-05, 7295.8511025], [1516602660000, 9.108e-05, 9.108e-05, 9.017e-05, 9.017e-05, 2478.0345912], [1516602720000, 9.017e-05, 9.093e-05, 9.017e-05, 9.017e-05, 282.32354981], [1516602780000, 9.083e-05, 9.121e-05, 9.083e-05, 9.121e-05, 863.34250281], [1516602840000, 9.084e-05, 9.084e-05, 9.082e-05, 9.082e-05, 546.64896074], [1516602900000, 9.079e-05, 9.125e-05, 9.079e-05, 9.125e-05, 12414.98076716], [1516602960000, 9.08e-05, 9.09e-05, 9.08e-05, 9.08e-05, 1312.97125128], [1516603020000, 9.08e-05, 9.192e-05, 9.08e-05, 9.192e-05, 7562.68161797], [1516603080000, 9.053e-05, 9.081e-05, 9.053e-05, 9.081e-05, 900.0], [1516603140000, 9.191e-05, 9.208e-05, 9.041e-05, 9.208e-05, 3830.3029658], [1516603200000, 9.208e-05, 9.233e-05, 9.054e-05, 9.054e-05, 5038.69457721], [1516603260000, 9.186e-05, 9.232e-05, 9.081e-05, 9.232e-05, 1081.37263524], [1516603320000, 9.102e-05, 9.411e-05, 9.102e-05, 9.123e-05, 21245.46044273], [1516603380000, 9.317e-05, 9.407e-05, 9.135e-05, 9.16e-05, 1895.3653439], [1516603440000, 9.191e-05, 9.195e-05, 9.191e-05, 9.195e-05, 142.86349524], [1516603500000, 9.2e-05, 9.2e-05, 9.121e-05, 9.121e-05, 1570.47355829], [1516603560000, 9.121e-05, 9.129e-05, 9.121e-05, 9.129e-05, 1057.16741603], [1516603680000, 9.114e-05, 9.114e-05, 9.114e-05, 9.114e-05, 46.44262295], [1516603740000, 9.197e-05, 9.197e-05, 9.197e-05, 9.197e-05, 255.51591483], [1516603800000, 9.198e-05, 9.267e-05, 9.141e-05, 9.151e-05, 1838.1947556], [1516603860000, 9.158e-05, 9.3e-05, 9.158e-05, 9.16e-05, 1015.77143464], [1516603920000, 9.2e-05, 9.221e-05, 9.2e-05, 9.221e-05, 330.3174308], [1516603980000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 50.151003], [1516604040000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 8.63685178], [1516604100000, 9.18e-05, 9.258e-05, 9.18e-05, 9.258e-05, 133.28047529], [1516604160000, 9.243e-05, 9.244e-05, 9.243e-05, 9.244e-05, 2426.58962852], [1516604220000, 9.116e-05, 9.122e-05, 9.1e-05, 9.1e-05, 1130.02529275], [1516604280000, 9.184e-05, 9.228e-05, 9.1e-05, 9.1e-05, 700.26662044], [1516604400000, 9.117e-05, 9.117e-05, 9.116e-05, 9.116e-05, 72.96827145], [1516604460000, 9.116e-05, 9.196e-05, 9.1e-05, 9.196e-05, 366.0202384], [1516604520000, 9.103e-05, 9.103e-05, 9.103e-05, 9.103e-05, 55.56], [1516604580000, 9.103e-05, 9.103e-05, 9.1e-05, 9.1e-05, 734.00400365], [1516604640000, 9.103e-05, 9.238e-05, 9.103e-05, 9.238e-05, 708.17128927], [1516604700000, 9.203e-05, 9.203e-05, 9.203e-05, 9.203e-05, 221.02565397], [1516604760000, 9.237e-05, 9.237e-05, 9.112e-05, 9.112e-05, 25.29788755], [1516604880000, 9.135e-05, 9.135e-05, 9.121e-05, 9.121e-05, 3522.30039139], [1516604940000, 9.111e-05, 9.111e-05, 9.111e-05, 9.111e-05, 60.47875513], [1516605000000, 9.111e-05, 9.111e-05, 9.111e-05, 9.111e-05, 115.92618715], [1516605060000, 9.109e-05, 9.111e-05, 9.109e-05, 9.111e-05, 126.65540356], [1516605180000, 9.11e-05, 9.11e-05, 9.11e-05, 9.11e-05, 441.13270095], [1516605240000, 9.111e-05, 9.111e-05, 9.11e-05, 9.111e-05, 1682.89839999], [1516605300000, 9.11e-05, 9.11e-05, 9.11e-05, 9.11e-05, 1000.0], [1516605360000, 9.11e-05, 9.11e-05, 9.102e-05, 9.102e-05, 1690.36173739], [1516605420000, 9.11e-05, 9.11e-05, 9.11e-05, 9.11e-05, 34.07999694], [1516605480000, 9.11e-05, 9.11e-05, 9.11e-05, 9.11e-05, 202.43081463], [1516605600000, 9.102e-05, 9.102e-05, 9.102e-05, 9.102e-05, 763.54305514], [1516605660000, 9.102e-05, 9.102e-05, 9.1e-05, 9.1e-05, 1116.89653752], [1516605720000, 9.102e-05, 9.109e-05, 9.102e-05, 9.109e-05, 383.89873001], [1516605780000, 9.102e-05, 9.102e-05, 9.102e-05, 9.102e-05, 20.43144399], [1516605840000, 9.102e-05, 9.102e-05, 9.1e-05, 9.1e-05, 400.22278477], [1516605900000, 9.1e-05, 9.1e-05, 9.083e-05, 9.083e-05, 34.55590913], [1516605960000, 9.083e-05, 9.11e-05, 9.083e-05, 9.083e-05, 3340.48370896], [1516606020000, 9.11e-05, 9.11e-05, 9.083e-05, 9.083e-05, 522.59837194], [1516606080000, 9.11e-05, 9.11e-05, 9.07e-05, 9.083e-05, 1506.94884482], [1516606260000, 9.07e-05, 9.07e-05, 9.07e-05, 9.07e-05, 155.999998], [1516606320000, 9.083e-05, 9.083e-05, 9.083e-05, 9.083e-05, 23.39166602], [1516606380000, 9.082e-05, 9.082e-05, 9.082e-05, 9.082e-05, 5.646745], [1516606440000, 9.083e-05, 9.11e-05, 9.07e-05, 9.11e-05, 4762.26983281], [1516606500000, 9.11e-05, 9.202e-05, 9.11e-05, 9.202e-05, 2258.80401302], [1516606560000, 9.113e-05, 9.236e-05, 9.112e-05, 9.112e-05, 2065.80370112], [1516606620000, 9.112e-05, 9.198e-05, 9.091e-05, 9.091e-05, 336.30515518], [1516606680000, 9.177e-05, 9.196e-05, 9.09e-05, 9.091e-05, 1227.4352134], [1516606740000, 9.09e-05, 9.09e-05, 9.07e-05, 9.07e-05, 4373.90997309], [1516606800000, 9.089e-05, 9.188e-05, 9.089e-05, 9.09e-05, 17238.8272705], [1516606860000, 9.183e-05, 9.188e-05, 9.183e-05, 9.188e-05, 627.77883598], [1516606920000, 9.187e-05, 9.188e-05, 9.187e-05, 9.188e-05, 161.07649108], [1516606980000, 9.102e-05, 9.188e-05, 9.102e-05, 9.188e-05, 120.21100299], [1516607040000, 9.187e-05, 9.237e-05, 9.044e-05, 9.044e-05, 3772.21073531], [1516607100000, 9.175e-05, 9.175e-05, 9.175e-05, 9.175e-05, 185.25776567], [1516607160000, 9.112e-05, 9.112e-05, 9.038e-05, 9.046e-05, 1390.50096014], [1516607220000, 9.16e-05, 9.187e-05, 9.16e-05, 9.187e-05, 1323.17596369], [1516607280000, 9.186e-05, 9.186e-05, 9.186e-05, 9.186e-05, 40.18700391], [1516607340000, 9.148e-05, 9.148e-05, 9.065e-05, 9.065e-05, 67.61043201], [1516607460000, 9.064e-05, 9.184e-05, 9.064e-05, 9.184e-05, 1291.88793683], [1516607520000, 9.179e-05, 9.2e-05, 9.064e-05, 9.2e-05, 1792.99026916], [1516607580000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 76.87721905], [1516607640000, 9.199e-05, 9.199e-05, 9.199e-05, 9.199e-05, 82.82167973], [1516607700000, 9.197e-05, 9.199e-05, 9.195e-05, 9.199e-05, 4849.78135537], [1516607760000, 9.108e-05, 9.199e-05, 9.108e-05, 9.199e-05, 760.54033933], [1516608000000, 9.195e-05, 9.195e-05, 9.195e-05, 9.195e-05, 440.6142725], [1516608060000, 9.195e-05, 9.195e-05, 9.138e-05, 9.138e-05, 1283.37286329], [1516608120000, 9.138e-05, 9.138e-05, 9.138e-05, 9.138e-05, 2010.51862115], [1516608180000, 9.107e-05, 9.138e-05, 9.041e-05, 9.1e-05, 2478.16436582], [1516608240000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 1638.41733228], [1516608300000, 9.15e-05, 9.15e-05, 9.15e-05, 9.15e-05, 26.68089877], [1516608360000, 9.1e-05, 9.149e-05, 9.1e-05, 9.149e-05, 18.03324217], [1516608420000, 9.15e-05, 9.199e-05, 9.15e-05, 9.199e-05, 3309.901003], [1516608540000, 9.173e-05, 9.199e-05, 9.173e-05, 9.199e-05, 828.46772917], [1516608600000, 9.199e-05, 9.199e-05, 9.199e-05, 9.199e-05, 187.53075905], [1516608660000, 9.198e-05, 9.2e-05, 9.198e-05, 9.2e-05, 5412.53568537], [1516608720000, 9.198e-05, 9.2e-05, 9.198e-05, 9.199e-05, 859.82164119], [1516608780000, 9.149e-05, 9.149e-05, 9.149e-05, 9.149e-05, 126.0], [1516608840000, 9.149e-05, 9.149e-05, 9.149e-05, 9.149e-05, 99.8939213], [1516608960000, 9.149e-05, 9.153e-05, 9.149e-05, 9.153e-05, 631.80780839], [1516609020000, 9.195e-05, 9.196e-05, 9.195e-05, 9.196e-05, 465.03245553], [1516609080000, 9.196e-05, 9.197e-05, 9.149e-05, 9.149e-05, 1107.78001583], [1516609140000, 9.15e-05, 9.15e-05, 9.102e-05, 9.102e-05, 408.49356968], [1516609200000, 9.102e-05, 9.102e-05, 9.102e-05, 9.102e-05, 291.81597942], [1516609260000, 9.102e-05, 9.102e-05, 9.102e-05, 9.102e-05, 1377.53361259], [1516609380000, 9.102e-05, 9.102e-05, 9.101e-05, 9.101e-05, 106.95227371], [1516609440000, 9.102e-05, 9.15e-05, 9.101e-05, 9.15e-05, 204.97342205], [1516609500000, 9.149e-05, 9.149e-05, 9.101e-05, 9.101e-05, 677.75159954], [1516609560000, 9.102e-05, 9.103e-05, 9.088e-05, 9.103e-05, 1722.29737776], [1516609620000, 9.103e-05, 9.197e-05, 9.103e-05, 9.197e-05, 581.1875268], [1516609680000, 9.104e-05, 9.104e-05, 9.104e-05, 9.104e-05, 71.04023162], [1516609740000, 9.105e-05, 9.105e-05, 9.105e-05, 9.105e-05, 306.09113691], [1516609800000, 9.19e-05, 9.19e-05, 9.027e-05, 9.027e-05, 1587.31928722], [1516609860000, 9.163e-05, 9.19e-05, 9.163e-05, 9.19e-05, 852.82331859], [1516609920000, 9.165e-05, 9.165e-05, 9.162e-05, 9.164e-05, 1940.06434077], [1516609980000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 8.82077261], [1516610040000, 9.148e-05, 9.164e-05, 9.148e-05, 9.164e-05, 266.40032235], [1516610100000, 9.164e-05, 9.164e-05, 9.164e-05, 9.164e-05, 332.98840127], [1516610160000, 9.103e-05, 9.164e-05, 9.102e-05, 9.164e-05, 1847.28011063], [1516610220000, 9.164e-05, 9.164e-05, 9.164e-05, 9.164e-05, 2961.09535138], [1516610280000, 9.164e-05, 9.164e-05, 9.163e-05, 9.164e-05, 4459.63984996], [1516610340000, 9.164e-05, 9.164e-05, 9.164e-05, 9.164e-05, 1780.42743343], [1516610400000, 9.164e-05, 9.164e-05, 9.111e-05, 9.164e-05, 5721.79503597], [1516610460000, 9.164e-05, 9.164e-05, 9.1e-05, 9.163e-05, 1049.78676954], [1516610580000, 9.1e-05, 9.164e-05, 9.081e-05, 9.081e-05, 631.43243614], [1516610640000, 9.164e-05, 9.164e-05, 9.164e-05, 9.164e-05, 298.95963222], [1516610700000, 9.163e-05, 9.164e-05, 9.163e-05, 9.164e-05, 107.46528871], [1516610760000, 9.164e-05, 9.164e-05, 9.164e-05, 9.164e-05, 123.18147641], [1516610820000, 9.163e-05, 9.164e-05, 9.163e-05, 9.164e-05, 84.48180681], [1516610880000, 9.164e-05, 9.164e-05, 9.164e-05, 9.164e-05, 536.13274403], [1516611060000, 9.162e-05, 9.164e-05, 9.162e-05, 9.164e-05, 2397.29355027], [1516611120000, 9.164e-05, 9.164e-05, 9.163e-05, 9.164e-05, 1629.67360508], [1516611180000, 9.164e-05, 9.164e-05, 9.164e-05, 9.164e-05, 332.5710312], [1516611240000, 9.164e-05, 9.164e-05, 9.119e-05, 9.164e-05, 5302.17895188], [1516611300000, 9.164e-05, 9.164e-05, 9.164e-05, 9.164e-05, 3699.516047], [1516611360000, 9.164e-05, 9.164e-05, 9.119e-05, 9.119e-05, 4167.80795958], [1516611420000, 9.164e-05, 9.164e-05, 9.164e-05, 9.164e-05, 6471.43642268], [1516611480000, 9.15e-05, 9.164e-05, 9.15e-05, 9.164e-05, 10858.8806573], [1516611540000, 9.196e-05, 9.197e-05, 9.196e-05, 9.197e-05, 276.46807236], [1516611600000, 9.198e-05, 9.282e-05, 9.197e-05, 9.197e-05, 3695.92783862], [1516611660000, 9.197e-05, 9.197e-05, 9.197e-05, 9.197e-05, 15.0], [1516611720000, 9.203e-05, 9.203e-05, 9.197e-05, 9.197e-05, 3030.58052722], [1516611780000, 9.218e-05, 9.282e-05, 9.218e-05, 9.282e-05, 323.1595092], [1516611840000, 9.267e-05, 9.282e-05, 9.267e-05, 9.282e-05, 100.1283834], [1516611900000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 358.429712], [1516611960000, 9.28e-05, 9.28e-05, 9.186e-05, 9.199e-05, 1660.42296736], [1516612020000, 9.199e-05, 9.276e-05, 9.199e-05, 9.276e-05, 1133.7809727], [1516612080000, 9.25e-05, 9.28e-05, 9.198e-05, 9.28e-05, 4090.98416043], [1516612140000, 9.197e-05, 9.198e-05, 9.186e-05, 9.198e-05, 3148.99201656], [1516612200000, 9.198e-05, 9.276e-05, 9.186e-05, 9.247e-05, 2873.2935628], [1516612260000, 9.243e-05, 9.243e-05, 9.243e-05, 9.243e-05, 1081.0], [1516612320000, 9.243e-05, 9.246e-05, 9.186e-05, 9.186e-05, 3459.71002633], [1516612380000, 9.245e-05, 9.246e-05, 9.245e-05, 9.246e-05, 73.30456377], [1516612440000, 9.247e-05, 9.251e-05, 9.189e-05, 9.25e-05, 3094.99410487], [1516612500000, 9.23e-05, 9.23e-05, 9.23e-05, 9.23e-05, 228.53153474], [1516612560000, 9.236e-05, 9.236e-05, 9.23e-05, 9.236e-05, 2260.9386196], [1516612620000, 9.231e-05, 9.231e-05, 9.23e-05, 9.23e-05, 783.0], [1516612680000, 9.231e-05, 9.231e-05, 9.186e-05, 9.186e-05, 596.30251337], [1516612740000, 9.229e-05, 9.236e-05, 9.229e-05, 9.236e-05, 458.11303929], [1516612800000, 9.235e-05, 9.236e-05, 9.235e-05, 9.235e-05, 3839.1714345], [1516612860000, 9.235e-05, 9.236e-05, 9.235e-05, 9.235e-05, 657.6589023], [1516612920000, 9.23e-05, 9.23e-05, 9.229e-05, 9.23e-05, 333.75006019], [1516612980000, 9.236e-05, 9.283e-05, 9.236e-05, 9.283e-05, 7347.34493473], [1516613040000, 9.258e-05, 9.283e-05, 9.229e-05, 9.229e-05, 9368.77154448], [1516613100000, 9.299e-05, 9.3e-05, 9.299e-05, 9.3e-05, 66.45005949], [1516613160000, 9.273e-05, 9.273e-05, 9.23e-05, 9.23e-05, 555.568913], [1516613220000, 9.273e-05, 9.3e-05, 9.23e-05, 9.23e-05, 1034.01919549], [1516613280000, 9.3e-05, 9.3e-05, 9.207e-05, 9.232e-05, 1128.30751418], [1516613340000, 9.3e-05, 9.339e-05, 9.232e-05, 9.232e-05, 5193.81391729], [1516613400000, 9.232e-05, 9.232e-05, 9.215e-05, 9.215e-05, 975.69761057], [1516613460000, 9.218e-05, 9.295e-05, 9.218e-05, 9.218e-05, 1203.40852208], [1516613520000, 9.295e-05, 9.295e-05, 9.295e-05, 9.295e-05, 180.91808893], [1516613580000, 9.295e-05, 9.337e-05, 9.219e-05, 9.219e-05, 325.60098379], [1516613640000, 9.316e-05, 9.327e-05, 9.221e-05, 9.221e-05, 219.25028149], [1516613700000, 9.286e-05, 9.314e-05, 9.221e-05, 9.225e-05, 679.17317851], [1516613760000, 9.222e-05, 9.304e-05, 9.221e-05, 9.304e-05, 455.76961285], [1516613820000, 9.221e-05, 9.221e-05, 9.221e-05, 9.221e-05, 98.352373], [1516613940000, 9.28e-05, 9.286e-05, 9.221e-05, 9.221e-05, 108.84791739], [1516614060000, 9.299e-05, 9.299e-05, 9.299e-05, 9.299e-05, 106.24816333], [1516614120000, 9.304e-05, 9.32e-05, 9.299e-05, 9.32e-05, 446.05449864], [1516614180000, 9.299e-05, 9.299e-05, 9.299e-05, 9.299e-05, 83.36445547], [1516614240000, 9.322e-05, 9.322e-05, 9.322e-05, 9.322e-05, 200.0], [1516614300000, 9.318e-05, 9.328e-05, 9.318e-05, 9.328e-05, 953.28141583], [1516614360000, 9.339e-05, 9.38e-05, 9.339e-05, 9.38e-05, 3064.6189044], [1516614420000, 9.339e-05, 9.339e-05, 9.339e-05, 9.339e-05, 41.7546942], [1516614480000, 9.339e-05, 9.339e-05, 9.26e-05, 9.26e-05, 1492.2247731], [1516614540000, 9.245e-05, 9.245e-05, 9.244e-05, 9.244e-05, 1000.0], [1516614600000, 9.257e-05, 9.347e-05, 9.256e-05, 9.347e-05, 1113.609113], [1516614660000, 9.343e-05, 9.343e-05, 9.343e-05, 9.343e-05, 25.0], [1516614720000, 9.295e-05, 9.295e-05, 9.217e-05, 9.217e-05, 387.01371742], [1516614780000, 9.295e-05, 9.325e-05, 9.283e-05, 9.283e-05, 1338.61766782], [1516614840000, 9.237e-05, 9.239e-05, 9.237e-05, 9.239e-05, 534.04978615], [1516614900000, 9.316e-05, 9.322e-05, 9.31e-05, 9.322e-05, 346.74300598], [1516614960000, 9.323e-05, 9.334e-05, 9.284e-05, 9.284e-05, 151.98999657], [1516615020000, 9.328e-05, 9.329e-05, 9.236e-05, 9.328e-05, 1497.01432076], [1516615080000, 9.328e-05, 9.336e-05, 9.328e-05, 9.328e-05, 822.69914793], [1516615140000, 9.328e-05, 9.328e-05, 9.242e-05, 9.328e-05, 941.08589327], [1516615200000, 9.243e-05, 9.243e-05, 9.242e-05, 9.242e-05, 1020.0], [1516615260000, 9.322e-05, 9.327e-05, 9.321e-05, 9.327e-05, 1143.99008338], [1516615320000, 9.243e-05, 9.243e-05, 9.243e-05, 9.243e-05, 3198.91319952], [1516615380000, 9.326e-05, 9.336e-05, 9.326e-05, 9.336e-05, 480.63327342], [1516615440000, 9.257e-05, 9.257e-05, 9.245e-05, 9.245e-05, 355.57744357], [1516615500000, 9.33e-05, 9.33e-05, 9.274e-05, 9.274e-05, 257.04435348], [1516615620000, 9.329e-05, 9.33e-05, 9.329e-05, 9.33e-05, 40.12100299], [1516615680000, 9.33e-05, 9.33e-05, 9.274e-05, 9.33e-05, 2423.3004837], [1516615740000, 9.33e-05, 9.33e-05, 9.274e-05, 9.274e-05, 245.28950052], [1516615800000, 9.274e-05, 9.274e-05, 9.274e-05, 9.274e-05, 132.32175332], [1516616040000, 9.328e-05, 9.33e-05, 9.243e-05, 9.33e-05, 3277.07742295], [1516616160000, 9.328e-05, 9.328e-05, 9.209e-05, 9.21e-05, 1007.39920168], [1516616220000, 9.325e-05, 9.325e-05, 9.217e-05, 9.217e-05, 1885.09471174], [1516616280000, 9.323e-05, 9.323e-05, 9.318e-05, 9.319e-05, 1087.12074687], [1516616340000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 26.45599456], [1516616400000, 9.253e-05, 9.319e-05, 9.21e-05, 9.312e-05, 2301.30631633], [1516616460000, 9.307e-05, 9.307e-05, 9.221e-05, 9.221e-05, 218.58138373], [1516616520000, 9.25e-05, 9.311e-05, 9.25e-05, 9.311e-05, 339.17137919], [1516616580000, 9.251e-05, 9.252e-05, 9.251e-05, 9.252e-05, 399.27329472], [1516616640000, 9.252e-05, 9.3e-05, 9.252e-05, 9.3e-05, 1562.48664847], [1516616700000, 9.261e-05, 9.309e-05, 9.261e-05, 9.309e-05, 891.42884736], [1516616760000, 9.261e-05, 9.31e-05, 9.22e-05, 9.309e-05, 1342.42618634], [1516616820000, 9.309e-05, 9.309e-05, 9.308e-05, 9.308e-05, 1635.13892391], [1516616880000, 9.307e-05, 9.308e-05, 9.307e-05, 9.308e-05, 263.9067021], [1516617060000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 53.47910752], [1516617120000, 9.284e-05, 9.284e-05, 9.221e-05, 9.221e-05, 490.2178352], [1516617180000, 9.304e-05, 9.305e-05, 9.304e-05, 9.305e-05, 70.21100299], [1516617240000, 9.304e-05, 9.307e-05, 9.304e-05, 9.307e-05, 513.64222275], [1516617300000, 9.307e-05, 9.307e-05, 9.307e-05, 9.307e-05, 538.51950353], [1516617360000, 9.306e-05, 9.307e-05, 9.306e-05, 9.307e-05, 73.42683028], [1516617420000, 9.307e-05, 9.307e-05, 9.307e-05, 9.307e-05, 387.74080352], [1516617480000, 9.306e-05, 9.317e-05, 9.247e-05, 9.247e-05, 6155.21955631], [1516617540000, 9.327e-05, 9.411e-05, 9.327e-05, 9.41e-05, 15166.64013671], [1516617600000, 9.409e-05, 9.44e-05, 9.273e-05, 9.415e-05, 8448.7439952], [1516617660000, 9.415e-05, 9.432e-05, 9.289e-05, 9.289e-05, 2268.03606571], [1516617720000, 9.289e-05, 9.414e-05, 9.289e-05, 9.411e-05, 647.60154746], [1516617780000, 9.395e-05, 9.395e-05, 9.382e-05, 9.382e-05, 57.21336536], [1516617840000, 9.289e-05, 9.45e-05, 9.285e-05, 9.295e-05, 5405.83545756], [1516617900000, 9.296e-05, 9.303e-05, 9.296e-05, 9.303e-05, 177.97411662], [1516617960000, 9.431e-05, 9.456e-05, 9.43e-05, 9.456e-05, 9632.97468206], [1516618020000, 9.453e-05, 9.489e-05, 9.352e-05, 9.367e-05, 15308.18755394], [1516618080000, 9.488e-05, 9.488e-05, 9.374e-05, 9.484e-05, 144.29970474], [1516618140000, 9.381e-05, 9.383e-05, 9.38e-05, 9.383e-05, 603.22843968], [1516618200000, 9.386e-05, 9.472e-05, 9.34e-05, 9.472e-05, 1594.78965537], [1516618260000, 9.472e-05, 9.481e-05, 9.339e-05, 9.481e-05, 1243.89214605], [1516618320000, 9.467e-05, 9.467e-05, 9.467e-05, 9.467e-05, 6.49978553], [1516618380000, 9.349e-05, 9.46e-05, 9.342e-05, 9.46e-05, 2833.73159854], [1516618440000, 9.343e-05, 9.343e-05, 9.342e-05, 9.342e-05, 200.0], [1516618500000, 9.414e-05, 9.448e-05, 9.414e-05, 9.448e-05, 170.24100299], [1516618560000, 9.448e-05, 9.448e-05, 9.448e-05, 9.448e-05, 89.85038262], [1516618620000, 9.446e-05, 9.449e-05, 9.36e-05, 9.444e-05, 2553.84012285], [1516618680000, 9.425e-05, 9.425e-05, 9.425e-05, 9.425e-05, 22.91680954], [1516618740000, 9.424e-05, 9.463e-05, 9.424e-05, 9.463e-05, 2203.03456884], [1516618800000, 9.425e-05, 9.463e-05, 9.363e-05, 9.416e-05, 3473.65715745], [1516618860000, 9.416e-05, 9.416e-05, 9.416e-05, 9.416e-05, 274.89189213], [1516618920000, 9.416e-05, 9.416e-05, 9.38e-05, 9.38e-05, 242.43942727], [1516618980000, 9.38e-05, 9.38e-05, 9.349e-05, 9.352e-05, 745.90015704], [1516619040000, 9.364e-05, 9.365e-05, 9.364e-05, 9.365e-05, 76.13446679], [1516619100000, 9.366e-05, 9.366e-05, 9.358e-05, 9.358e-05, 257.04081108], [1516619160000, 9.359e-05, 9.4e-05, 9.359e-05, 9.36e-05, 875.88513551], [1516619220000, 9.36e-05, 9.415e-05, 9.36e-05, 9.415e-05, 59.72198564], [1516619280000, 9.41e-05, 9.462e-05, 9.41e-05, 9.414e-05, 1993.16018704], [1516619340000, 9.462e-05, 9.48e-05, 9.462e-05, 9.48e-05, 3869.65429241], [1516619400000, 9.416e-05, 9.479e-05, 9.414e-05, 9.479e-05, 8248.81654483], [1516619460000, 9.414e-05, 9.479e-05, 9.414e-05, 9.478e-05, 1453.45216643], [1516619520000, 9.414e-05, 9.48e-05, 9.414e-05, 9.48e-05, 497.74719692], [1516619580000, 9.48e-05, 9.48e-05, 9.414e-05, 9.414e-05, 2569.46689599], [1516619640000, 9.414e-05, 9.414e-05, 9.414e-05, 9.414e-05, 735.01706999], [1516619700000, 9.429e-05, 9.48e-05, 9.414e-05, 9.48e-05, 964.77090449], [1516619760000, 9.48e-05, 9.48e-05, 9.414e-05, 9.415e-05, 3147.49554503], [1516619820000, 9.459e-05, 9.5e-05, 9.415e-05, 9.5e-05, 4146.87733803], [1516619880000, 9.417e-05, 9.5e-05, 9.415e-05, 9.415e-05, 391.35445279], [1516619940000, 9.418e-05, 9.418e-05, 9.418e-05, 9.418e-05, 89.0], [1516620000000, 9.485e-05, 9.485e-05, 9.416e-05, 9.416e-05, 856.39966325], [1516620060000, 9.416e-05, 9.416e-05, 9.414e-05, 9.414e-05, 1316.97566708], [1516620180000, 9.414e-05, 9.475e-05, 9.414e-05, 9.475e-05, 128.30768377], [1516620240000, 9.473e-05, 9.473e-05, 9.472e-05, 9.473e-05, 62.78625924], [1516620300000, 9.473e-05, 9.484e-05, 9.414e-05, 9.414e-05, 4200.99968534], [1516620360000, 9.415e-05, 9.483e-05, 9.414e-05, 9.414e-05, 13102.01579111], [1516620420000, 9.414e-05, 9.415e-05, 9.414e-05, 9.414e-05, 1792.1011512], [1516620480000, 9.379e-05, 9.477e-05, 9.379e-05, 9.476e-05, 1395.85113032], [1516620540000, 9.38e-05, 9.38e-05, 9.303e-05, 9.305e-05, 8261.20645413], [1516620600000, 9.339e-05, 9.396e-05, 9.339e-05, 9.339e-05, 1199.3534816], [1516620660000, 9.299e-05, 9.3e-05, 9.299e-05, 9.299e-05, 863.71714286], [1516620720000, 9.299e-05, 9.396e-05, 9.22e-05, 9.22e-05, 3248.14346842], [1516620780000, 9.19e-05, 9.259e-05, 9.133e-05, 9.133e-05, 12729.36406918], [1516620840000, 9.188e-05, 9.19e-05, 9.133e-05, 9.135e-05, 1344.28462611], [1516620900000, 9.19e-05, 9.19e-05, 9.152e-05, 9.188e-05, 394.06800716], [1516620960000, 9.188e-05, 9.188e-05, 9.181e-05, 9.181e-05, 1140.88918076], [1516621020000, 9.179e-05, 9.179e-05, 9.135e-05, 9.135e-05, 1386.82338299], [1516621140000, 9.136e-05, 9.136e-05, 9.135e-05, 9.135e-05, 373.25086271], [1516621200000, 9.135e-05, 9.163e-05, 9.111e-05, 9.163e-05, 394.86086096], [1516621260000, 9.136e-05, 9.163e-05, 9.116e-05, 9.163e-05, 3295.8370781], [1516621320000, 9.161e-05, 9.161e-05, 9.161e-05, 9.161e-05, 2096.96222164], [1516621380000, 9.161e-05, 9.177e-05, 9.161e-05, 9.177e-05, 3053.69518589], [1516621440000, 9.194e-05, 9.194e-05, 9.178e-05, 9.194e-05, 962.88632209], [1516621500000, 9.178e-05, 9.178e-05, 9.12e-05, 9.128e-05, 3503.96924393], [1516621560000, 9.118e-05, 9.194e-05, 9.117e-05, 9.194e-05, 1224.04511856], [1516621620000, 9.13e-05, 9.13e-05, 9.121e-05, 9.121e-05, 2670.28656], [1516621680000, 9.119e-05, 9.13e-05, 9.115e-05, 9.115e-05, 1548.08156008], [1516621740000, 9.115e-05, 9.13e-05, 9.104e-05, 9.13e-05, 6399.83003675], [1516621800000, 9.194e-05, 9.194e-05, 9.194e-05, 9.194e-05, 729.08438514], [1516621860000, 9.194e-05, 9.278e-05, 9.194e-05, 9.194e-05, 484.92107843], [1516621920000, 9.2e-05, 9.432e-05, 9.2e-05, 9.205e-05, 5576.44620377], [1516621980000, 9.219e-05, 9.373e-05, 9.219e-05, 9.359e-05, 8860.60842877], [1516622040000, 9.233e-05, 9.233e-05, 9.232e-05, 9.233e-05, 720.72267574], [1516622100000, 9.235e-05, 9.238e-05, 9.233e-05, 9.233e-05, 1712.38179629], [1516622160000, 9.233e-05, 9.233e-05, 9.118e-05, 9.123e-05, 26741.92956613], [1516622220000, 9.122e-05, 9.191e-05, 9.122e-05, 9.191e-05, 971.00921024], [1516622280000, 9.123e-05, 9.123e-05, 9.115e-05, 9.12e-05, 2744.10827017], [1516622340000, 9.117e-05, 9.12e-05, 9.103e-05, 9.103e-05, 784.37190413], [1516622400000, 9.107e-05, 9.12e-05, 9.103e-05, 9.112e-05, 3983.8837548], [1516622460000, 9.102e-05, 9.102e-05, 9.046e-05, 9.061e-05, 1720.9087185], [1516622520000, 9.061e-05, 9.12e-05, 9.06e-05, 9.06e-05, 3877.68818494], [1516622580000, 9.12e-05, 9.12e-05, 9.12e-05, 9.12e-05, 145.74179807], [1516622640000, 9.12e-05, 9.25e-05, 9.12e-05, 9.25e-05, 3631.37177499], [1516622700000, 9.08e-05, 9.207e-05, 9.064e-05, 9.064e-05, 2592.86851447], [1516622760000, 9.196e-05, 9.196e-05, 9.196e-05, 9.196e-05, 17.052003], [1516622820000, 9.167e-05, 9.167e-05, 9.083e-05, 9.083e-05, 922.98873096], [1516622880000, 9.088e-05, 9.167e-05, 9.088e-05, 9.167e-05, 45.86054702], [1516622940000, 9.167e-05, 9.167e-05, 9.167e-05, 9.167e-05, 101.35477148], [1516623000000, 9.167e-05, 9.219e-05, 9.167e-05, 9.219e-05, 212.61926486], [1516623060000, 9.204e-05, 9.204e-05, 9.204e-05, 9.204e-05, 15.77979256], [1516623120000, 9.111e-05, 9.204e-05, 9.111e-05, 9.204e-05, 133.89436645], [1516623180000, 9.204e-05, 9.212e-05, 9.111e-05, 9.211e-05, 440.54709849], [1516623240000, 9.121e-05, 9.121e-05, 9.121e-05, 9.121e-05, 424.31069604], [1516623360000, 9.121e-05, 9.184e-05, 9.121e-05, 9.184e-05, 707.08347509], [1516623420000, 9.184e-05, 9.206e-05, 9.184e-05, 9.201e-05, 1140.96373065], [1516623480000, 9.15e-05, 9.197e-05, 9.15e-05, 9.192e-05, 1183.47276298], [1516623540000, 9.128e-05, 9.128e-05, 9.122e-05, 9.122e-05, 236.53990669], [1516623600000, 9.121e-05, 9.202e-05, 9.121e-05, 9.2e-05, 4656.91202376], [1516623660000, 9.197e-05, 9.197e-05, 9.197e-05, 9.197e-05, 341.07754591], [1516623720000, 9.186e-05, 9.186e-05, 9.185e-05, 9.185e-05, 394.86115485], [1516623780000, 9.121e-05, 9.121e-05, 9.121e-05, 9.121e-05, 402.90353278], [1516623840000, 9.12e-05, 9.12e-05, 9.12e-05, 9.12e-05, 457.14286], [1516623900000, 9.121e-05, 9.121e-05, 9.067e-05, 9.067e-05, 6147.09646722], [1516623960000, 9.067e-05, 9.173e-05, 9.067e-05, 9.173e-05, 583.7916124], [1516624020000, 9.17e-05, 9.17e-05, 9.074e-05, 9.074e-05, 372.98988446], [1516624080000, 9.173e-05, 9.173e-05, 9.173e-05, 9.173e-05, 151.01462954], [1516624140000, 9.138e-05, 9.138e-05, 9.138e-05, 9.138e-05, 32.82634861], [1516624200000, 9.167e-05, 9.17e-05, 9.167e-05, 9.17e-05, 3479.05936099], [1516624260000, 9.158e-05, 9.158e-05, 9.158e-05, 9.158e-05, 6.95339953], [1516624380000, 9.139e-05, 9.139e-05, 9.138e-05, 9.138e-05, 7806.17272343], [1516624500000, 9.126e-05, 9.139e-05, 9.114e-05, 9.114e-05, 605.14825542], [1516624680000, 9.074e-05, 9.074e-05, 9.06e-05, 9.06e-05, 166.37143935], [1516624740000, 9.06e-05, 9.08e-05, 9.06e-05, 9.08e-05, 398.18865419], [1516624800000, 9.07e-05, 9.114e-05, 9.07e-05, 9.114e-05, 310.88175299], [1516624860000, 9.114e-05, 9.114e-05, 9.07e-05, 9.114e-05, 2315.93136279], [1516624920000, 9.068e-05, 9.068e-05, 9.068e-05, 9.068e-05, 50.0], [1516624980000, 9.112e-05, 9.112e-05, 9.112e-05, 9.112e-05, 105.04784867], [1516625040000, 9.08e-05, 9.08e-05, 9.066e-05, 9.066e-05, 509.74615706], [1516625100000, 9.114e-05, 9.114e-05, 9.114e-05, 9.114e-05, 163.18161769], [1516625220000, 9.114e-05, 9.168e-05, 9.07e-05, 9.07e-05, 1430.26785248], [1516625280000, 9.147e-05, 9.147e-05, 9.08e-05, 9.08e-05, 82.83410138], [1516625340000, 9.139e-05, 9.139e-05, 9.139e-05, 9.139e-05, 13.8359342], [1516625400000, 9.139e-05, 9.155e-05, 9.139e-05, 9.155e-05, 361.07961423], [1516625460000, 9.136e-05, 9.155e-05, 9.08e-05, 9.08e-05, 3056.35818338], [1516625520000, 9.08e-05, 9.08e-05, 9.069e-05, 9.069e-05, 104.4920959], [1516625580000, 9.158e-05, 9.158e-05, 9.158e-05, 9.158e-05, 346.88290475], [1516625640000, 9.071e-05, 9.152e-05, 9.071e-05, 9.152e-05, 235.37385431], [1516625700000, 9.144e-05, 9.144e-05, 9.144e-05, 9.144e-05, 34.75782996], [1516625760000, 9.137e-05, 9.144e-05, 9.137e-05, 9.144e-05, 2824.76053346], [1516625820000, 9.141e-05, 9.141e-05, 9.14e-05, 9.14e-05, 1054.54396325], [1516625880000, 9.069e-05, 9.141e-05, 9.066e-05, 9.141e-05, 3837.82335213], [1516625940000, 9.067e-05, 9.067e-05, 9.066e-05, 9.066e-05, 2234.48141631], [1516626000000, 9.136e-05, 9.14e-05, 9.136e-05, 9.138e-05, 717.16449297], [1516626060000, 9.12e-05, 9.137e-05, 9.066e-05, 9.066e-05, 396.21906852], [1516626120000, 9.066e-05, 9.119e-05, 9.06e-05, 9.119e-05, 350.07120196], [1516626180000, 9.119e-05, 9.119e-05, 9.119e-05, 9.119e-05, 33.80217406], [1516626240000, 9.119e-05, 9.119e-05, 9.119e-05, 9.119e-05, 81.62612175], [1516626300000, 9.119e-05, 9.119e-05, 9.06e-05, 9.06e-05, 551.89967116], [1516626360000, 9.119e-05, 9.12e-05, 9.06e-05, 9.06e-05, 57.98599308], [1516626420000, 9.119e-05, 9.119e-05, 9.117e-05, 9.117e-05, 374.12005321], [1516626480000, 9.116e-05, 9.116e-05, 9.116e-05, 9.116e-05, 10.99596078], [1516626540000, 9.116e-05, 9.116e-05, 9.066e-05, 9.066e-05, 291.39506395], [1516626600000, 9.066e-05, 9.066e-05, 9.061e-05, 9.066e-05, 1541.30415381], [1516626660000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 1015.57781536], [1516626720000, 9.066e-05, 9.066e-05, 9.066e-05, 9.066e-05, 10.14030105], [1516626780000, 9.065e-05, 9.117e-05, 9.06e-05, 9.06e-05, 5269.58390553], [1516626840000, 9.06e-05, 9.109e-05, 9.06e-05, 9.06e-05, 2331.70901564], [1516626900000, 9.06e-05, 9.079e-05, 9.052e-05, 9.052e-05, 2205.20090499], [1516626960000, 9.046e-05, 9.046e-05, 9e-05, 9e-05, 14447.23106408], [1516627020000, 9.095e-05, 9.095e-05, 9.095e-05, 9.095e-05, 32.4], [1516627080000, 9.002e-05, 9.002e-05, 9.002e-05, 9.002e-05, 100.0], [1516627140000, 9.002e-05, 9.002e-05, 9e-05, 9e-05, 1239.12004195], [1516627200000, 9e-05, 9e-05, 8.969e-05, 8.969e-05, 20800.63318836], [1516627260000, 8.97e-05, 8.97e-05, 8.968e-05, 8.969e-05, 15099.13483676], [1516627320000, 8.969e-05, 9.081e-05, 8.968e-05, 8.99e-05, 2426.48073733], [1516627380000, 8.968e-05, 8.974e-05, 8.968e-05, 8.974e-05, 269.71424348], [1516627440000, 8.968e-05, 8.974e-05, 8.968e-05, 8.968e-05, 4648.74290727], [1516627500000, 8.968e-05, 9.069e-05, 8.916e-05, 8.916e-05, 2967.7997797], [1516627560000, 8.916e-05, 8.916e-05, 8.9e-05, 8.9e-05, 3446.81130297], [1516627620000, 8.9e-05, 8.9e-05, 8.865e-05, 8.868e-05, 8553.69431942], [1516627680000, 8.916e-05, 9.027e-05, 8.895e-05, 8.895e-05, 1703.7156334], [1516627740000, 8.895e-05, 9.017e-05, 8.865e-05, 8.865e-05, 8827.89583781], [1516627800000, 8.89e-05, 8.982e-05, 8.792e-05, 8.982e-05, 23333.80780038], [1516627860000, 8.888e-05, 8.936e-05, 8.836e-05, 8.836e-05, 6657.76423288], [1516627920000, 8.836e-05, 8.909e-05, 8.836e-05, 8.85e-05, 2088.07070368], [1516627980000, 8.894e-05, 8.982e-05, 8.838e-05, 8.98e-05, 4878.07224524], [1516628040000, 8.95e-05, 8.95e-05, 8.839e-05, 8.939e-05, 2773.04686776], [1516628100000, 8.936e-05, 8.94e-05, 8.844e-05, 8.935e-05, 2122.54240808], [1516628160000, 8.94e-05, 8.94e-05, 8.94e-05, 8.94e-05, 7.49315603], [1516628220000, 8.876e-05, 8.876e-05, 8.875e-05, 8.876e-05, 1923.41454496], [1516628280000, 8.88e-05, 8.94e-05, 8.88e-05, 8.882e-05, 159.06643372], [1516628340000, 8.915e-05, 9.043e-05, 8.892e-05, 8.892e-05, 1012.76877248], [1516628400000, 8.892e-05, 9.027e-05, 8.885e-05, 8.885e-05, 8466.02778875], [1516628460000, 8.885e-05, 9.021e-05, 8.88e-05, 8.88e-05, 2887.06859411], [1516628520000, 8.984e-05, 8.984e-05, 8.88e-05, 8.949e-05, 2072.28878012], [1516628580000, 8.88e-05, 8.88e-05, 8.88e-05, 8.88e-05, 254.37630219], [1516628640000, 8.88e-05, 8.88e-05, 8.836e-05, 8.878e-05, 18440.21987307], [1516628700000, 8.878e-05, 8.949e-05, 8.8e-05, 8.803e-05, 11552.53484283], [1516628760000, 8.804e-05, 8.945e-05, 8.803e-05, 8.945e-05, 4553.90527861], [1516628820000, 8.933e-05, 8.933e-05, 8.933e-05, 8.933e-05, 383.30851498], [1516628880000, 8.928e-05, 8.928e-05, 8.811e-05, 8.819e-05, 2442.18549348], [1516628940000, 8.82e-05, 8.919e-05, 8.76e-05, 8.78e-05, 11038.49951974], [1516629000000, 8.78e-05, 8.938e-05, 8.7e-05, 8.747e-05, 12513.25683285], [1516629060000, 8.779e-05, 8.779e-05, 8.779e-05, 8.779e-05, 117.2169], [1516629120000, 8.779e-05, 8.784e-05, 8.779e-05, 8.783e-05, 3389.8000695], [1516629180000, 8.862e-05, 8.877e-05, 8.781e-05, 8.781e-05, 2911.80328401], [1516629240000, 8.842e-05, 8.883e-05, 8.79e-05, 8.842e-05, 8697.31889581], [1516629300000, 8.81e-05, 8.85e-05, 8.79e-05, 8.798e-05, 1094.92826643], [1516629360000, 8.886e-05, 8.889e-05, 8.886e-05, 8.889e-05, 94.88309197], [1516629420000, 8.943e-05, 8.946e-05, 8.889e-05, 8.889e-05, 534.49519754], [1516629480000, 8.889e-05, 8.889e-05, 8.79e-05, 8.79e-05, 19614.36760623], [1516629540000, 8.791e-05, 8.924e-05, 8.779e-05, 8.779e-05, 2053.52740685], [1516629600000, 8.821e-05, 8.821e-05, 8.79e-05, 8.79e-05, 36898.72716101], [1516629660000, 8.792e-05, 8.887e-05, 8.792e-05, 8.842e-05, 3937.25159575], [1516629720000, 8.9e-05, 8.925e-05, 8.845e-05, 8.925e-05, 21048.42274586], [1516629780000, 8.925e-05, 8.925e-05, 8.925e-05, 8.925e-05, 1410.03862408], [1516629840000, 8.923e-05, 8.925e-05, 8.923e-05, 8.923e-05, 741.53991857], [1516629900000, 8.923e-05, 8.925e-05, 8.855e-05, 8.925e-05, 562.06251764], [1516629960000, 8.925e-05, 8.925e-05, 8.857e-05, 8.925e-05, 1861.06300857], [1516630020000, 8.882e-05, 8.882e-05, 8.88e-05, 8.88e-05, 5976.36711659], [1516630080000, 8.883e-05, 8.925e-05, 8.88e-05, 8.925e-05, 1741.69303174], [1516630140000, 8.925e-05, 8.925e-05, 8.881e-05, 8.924e-05, 1786.98758078], [1516630200000, 8.881e-05, 8.949e-05, 8.881e-05, 8.949e-05, 1705.13841016], [1516630260000, 8.949e-05, 8.949e-05, 8.88e-05, 8.88e-05, 102.29374943], [1516630320000, 8.929e-05, 8.929e-05, 8.881e-05, 8.929e-05, 2044.22364452], [1516630380000, 8.882e-05, 8.929e-05, 8.882e-05, 8.929e-05, 1160.03377791], [1516630500000, 8.928e-05, 8.928e-05, 8.913e-05, 8.928e-05, 4941.3182413], [1516630560000, 8.885e-05, 8.885e-05, 8.885e-05, 8.885e-05, 56.9503563], [1516630620000, 8.885e-05, 8.927e-05, 8.88e-05, 8.881e-05, 5027.12421404], [1516630680000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 1166.63882242], [1516630740000, 8.881e-05, 8.927e-05, 8.88e-05, 8.926e-05, 3639.06999009], [1516630800000, 8.927e-05, 8.928e-05, 8.927e-05, 8.927e-05, 831.818237], [1516630860000, 8.927e-05, 8.928e-05, 8.926e-05, 8.926e-05, 1287.00460246], [1516630920000, 8.924e-05, 8.926e-05, 8.924e-05, 8.925e-05, 3787.15772406], [1516630980000, 8.925e-05, 8.937e-05, 8.925e-05, 8.937e-05, 12947.54363335], [1516631040000, 8.937e-05, 8.949e-05, 8.91e-05, 8.937e-05, 4324.93002324], [1516631100000, 8.949e-05, 8.99e-05, 8.937e-05, 8.99e-05, 1231.43697594], [1516631160000, 8.99e-05, 8.99e-05, 8.99e-05, 8.99e-05, 181.97445363], [1516631220000, 8.974e-05, 8.974e-05, 8.974e-05, 8.974e-05, 4446.17784711], [1516631280000, 8.974e-05, 8.974e-05, 8.974e-05, 8.974e-05, 378.82313378], [1516631340000, 8.97e-05, 8.99e-05, 8.97e-05, 8.99e-05, 2895.25895624], [1516631400000, 8.989e-05, 8.99e-05, 8.989e-05, 8.99e-05, 1723.13748287], [1516631460000, 8.989e-05, 9.12e-05, 8.881e-05, 9.12e-05, 8631.80554892], [1516631520000, 8.952e-05, 8.987e-05, 8.883e-05, 8.987e-05, 4266.37297986], [1516631580000, 8.987e-05, 9.077e-05, 8.915e-05, 8.915e-05, 448.70367302], [1516631640000, 8.987e-05, 9.112e-05, 8.987e-05, 9.094e-05, 1661.63836599], [1516631700000, 8.93e-05, 9.074e-05, 8.93e-05, 9.069e-05, 690.82113018], [1516631760000, 9.062e-05, 9.086e-05, 9.062e-05, 9.086e-05, 1515.52353183], [1516631820000, 9.062e-05, 9.112e-05, 8.955e-05, 8.959e-05, 15858.81778372], [1516631880000, 9.097e-05, 9.099e-05, 9.097e-05, 9.099e-05, 100.301003], [1516631940000, 9.096e-05, 9.097e-05, 9.096e-05, 9.097e-05, 2427.71927201], [1516632000000, 8.964e-05, 8.964e-05, 8.945e-05, 8.945e-05, 3367.13149432], [1516632060000, 9.085e-05, 9.085e-05, 9.082e-05, 9.082e-05, 942.53739555], [1516632120000, 9.064e-05, 9.064e-05, 9.064e-05, 9.064e-05, 276.7978339], [1516632240000, 8.965e-05, 9.046e-05, 8.965e-05, 8.998e-05, 1183.13458174], [1516632300000, 8.989e-05, 9e-05, 8.989e-05, 9e-05, 447.95456563], [1516632360000, 8.994e-05, 8.996e-05, 8.994e-05, 8.996e-05, 795.37796842], [1516632420000, 8.94e-05, 8.94e-05, 8.897e-05, 8.897e-05, 300.0], [1516632480000, 8.998e-05, 8.998e-05, 8.998e-05, 8.998e-05, 37.10534054], [1516632540000, 8.998e-05, 8.998e-05, 8.91e-05, 8.91e-05, 140.33641272], [1516632600000, 8.912e-05, 8.912e-05, 8.912e-05, 8.912e-05, 20.0], [1516632660000, 8.913e-05, 8.915e-05, 8.913e-05, 8.915e-05, 269.7650021], [1516632720000, 8.971e-05, 8.997e-05, 8.913e-05, 8.997e-05, 661.0], [1516632780000, 8.95e-05, 8.95e-05, 8.916e-05, 8.916e-05, 4735.073572], [1516632840000, 8.949e-05, 8.949e-05, 8.949e-05, 8.949e-05, 125.75308933], [1516633020000, 8.987e-05, 8.987e-05, 8.987e-05, 8.987e-05, 11.12718371], [1516633080000, 8.989e-05, 9.002e-05, 8.989e-05, 9.002e-05, 53613.16787429], [1516633140000, 9.013e-05, 9.065e-05, 9.013e-05, 9.014e-05, 2056.97069506], [1516633200000, 9.091e-05, 9.117e-05, 9.091e-05, 9.117e-05, 1004.61659601], [1516633260000, 9.015e-05, 9.117e-05, 8.952e-05, 8.952e-05, 1577.58558587], [1516633320000, 8.952e-05, 8.952e-05, 8.941e-05, 8.941e-05, 11034.65996233], [1516633380000, 8.92e-05, 8.94e-05, 8.92e-05, 8.94e-05, 1716.82764559], [1516633440000, 8.952e-05, 8.952e-05, 8.94e-05, 8.94e-05, 337.69107764], [1516633500000, 8.924e-05, 8.94e-05, 8.92e-05, 8.939e-05, 5114.73984432], [1516633560000, 8.92e-05, 8.94e-05, 8.92e-05, 8.92e-05, 182.77817338], [1516633620000, 8.92e-05, 8.94e-05, 8.92e-05, 8.92e-05, 984.55251469], [1516633680000, 8.94e-05, 8.94e-05, 8.94e-05, 8.94e-05, 37.91051454], [1516633740000, 8.94e-05, 8.94e-05, 8.895e-05, 8.895e-05, 3358.72473082], [1516633800000, 8.91e-05, 8.91e-05, 8.895e-05, 8.895e-05, 3777.89508029], [1516633860000, 8.9e-05, 8.9e-05, 8.897e-05, 8.899e-05, 1694.62312369], [1516633920000, 8.9e-05, 8.904e-05, 8.9e-05, 8.904e-05, 7453.96635969], [1516633980000, 8.906e-05, 8.906e-05, 8.898e-05, 8.898e-05, 1756.0], [1516634040000, 8.899e-05, 8.899e-05, 8.895e-05, 8.895e-05, 2912.64475676], [1516634100000, 8.899e-05, 8.899e-05, 8.899e-05, 8.899e-05, 1245.5588061], [1516634160000, 8.909e-05, 8.909e-05, 8.909e-05, 8.909e-05, 368.80696358], [1516634220000, 8.92e-05, 8.95e-05, 8.92e-05, 8.95e-05, 2303.74466955], [1516634280000, 8.95e-05, 8.95e-05, 8.949e-05, 8.95e-05, 896.42318039], [1516634340000, 9.015e-05, 9.048e-05, 8.95e-05, 8.95e-05, 1066.16189132], [1516634400000, 9e-05, 9.041e-05, 8.95e-05, 9.036e-05, 1893.63889986], [1516634460000, 8.92e-05, 9.03e-05, 8.92e-05, 9.03e-05, 78.36148924], [1516634520000, 8.921e-05, 8.921e-05, 8.921e-05, 8.921e-05, 533.2440353], [1516634640000, 8.921e-05, 8.921e-05, 8.92e-05, 8.92e-05, 1342.29324075], [1516634700000, 8.999e-05, 9.006e-05, 8.999e-05, 9.006e-05, 75.43313965], [1516634760000, 9.001e-05, 9.001e-05, 8.92e-05, 8.92e-05, 6392.17516161], [1516634820000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 40.65767484], [1516634880000, 9e-05, 9e-05, 8.999e-05, 9e-05, 211.08333333], [1516634940000, 9e-05, 9.032e-05, 9e-05, 9.032e-05, 80.26875002], [1516635000000, 9.024e-05, 9.025e-05, 9.024e-05, 9.025e-05, 3454.59133874], [1516635120000, 8.923e-05, 8.923e-05, 8.923e-05, 8.923e-05, 30.74251573], [1516635180000, 8.923e-05, 8.923e-05, 8.923e-05, 8.923e-05, 29.84815733], [1516635300000, 8.99e-05, 9.013e-05, 8.924e-05, 8.931e-05, 1715.98457107], [1516635360000, 8.99e-05, 9.022e-05, 8.935e-05, 8.935e-05, 1004.21777544], [1516635420000, 8.937e-05, 8.938e-05, 8.937e-05, 8.938e-05, 192.33462139], [1516635480000, 8.985e-05, 8.985e-05, 8.985e-05, 8.985e-05, 5.54889198], [1516635540000, 8.951e-05, 8.951e-05, 8.951e-05, 8.951e-05, 588.59535074], [1516635600000, 8.961e-05, 8.982e-05, 8.953e-05, 8.981e-05, 3260.65316087], [1516635660000, 8.981e-05, 9.048e-05, 8.981e-05, 9.048e-05, 898.35379084], [1516635720000, 9.013e-05, 9.109e-05, 8.983e-05, 9.048e-05, 15447.61632042], [1516635780000, 9.048e-05, 9.048e-05, 9.048e-05, 9.048e-05, 8237.6184897], [1516635840000, 9.048e-05, 9.048e-05, 9.048e-05, 9.048e-05, 2225.28254652], [1516635900000, 9.048e-05, 9.107e-05, 9.048e-05, 9.104e-05, 30188.65429785], [1516635960000, 9.104e-05, 9.104e-05, 9.104e-05, 9.104e-05, 32389.1743226], [1516636020000, 9.104e-05, 9.104e-05, 9.048e-05, 9.103e-05, 1975.77478063], [1516636080000, 9.101e-05, 9.101e-05, 8.983e-05, 8.983e-05, 1153.39596411], [1516636140000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 1000.0], [1516636200000, 8.983e-05, 8.983e-05, 8.983e-05, 8.983e-05, 49.16549141], [1516636260000, 9.099e-05, 9.099e-05, 8.982e-05, 8.983e-05, 756.7100113], [1516636320000, 8.954e-05, 8.954e-05, 8.954e-05, 8.954e-05, 40.96473855], [1516636380000, 9.093e-05, 9.093e-05, 9.093e-05, 9.093e-05, 450.01466049], [1516636440000, 8.973e-05, 9.091e-05, 8.967e-05, 9.091e-05, 4139.07436043], [1516636500000, 8.968e-05, 8.976e-05, 8.968e-05, 8.975e-05, 19105.68636052], [1516636560000, 8.967e-05, 8.967e-05, 8.954e-05, 8.954e-05, 255.76880542], [1516636620000, 8.954e-05, 8.975e-05, 8.954e-05, 8.954e-05, 3390.52837239], [1516636680000, 8.973e-05, 8.973e-05, 8.973e-05, 8.973e-05, 777.607797], [1516636740000, 8.954e-05, 8.968e-05, 8.952e-05, 8.967e-05, 3273.25711274], [1516636800000, 8.965e-05, 8.975e-05, 8.952e-05, 8.952e-05, 15789.63043205], [1516636860000, 8.929e-05, 8.931e-05, 8.923e-05, 8.931e-05, 4058.00515252], [1516636920000, 8.936e-05, 8.939e-05, 8.936e-05, 8.939e-05, 1450.35786475], [1516636980000, 9.052e-05, 9.074e-05, 8.97e-05, 8.97e-05, 244.89631533], [1516637040000, 9.048e-05, 9.048e-05, 9.048e-05, 9.048e-05, 187.9125475], [1516637100000, 9.033e-05, 9.033e-05, 8.923e-05, 8.923e-05, 4247.45553984], [1516637160000, 8.924e-05, 8.924e-05, 8.924e-05, 8.924e-05, 10.0], [1516637220000, 8.926e-05, 8.926e-05, 8.925e-05, 8.926e-05, 1169.78277264], [1516637280000, 9.036e-05, 9.037e-05, 9.036e-05, 9.037e-05, 1183.99476272], [1516637460000, 8.925e-05, 8.925e-05, 8.925e-05, 8.925e-05, 31.14005614], [1516637520000, 9.001e-05, 9.001e-05, 8.934e-05, 8.934e-05, 401.40377663], [1516637580000, 8.933e-05, 8.933e-05, 8.926e-05, 8.933e-05, 546.53417496], [1516637640000, 8.933e-05, 8.933e-05, 8.93e-05, 8.93e-05, 1318.43353684], [1516637700000, 8.929e-05, 8.929e-05, 8.929e-05, 8.929e-05, 1146.76672678], [1516637760000, 8.976e-05, 8.976e-05, 8.976e-05, 8.976e-05, 13.36302895], [1516637820000, 8.963e-05, 8.963e-05, 8.924e-05, 8.96e-05, 436.9026371], [1516638000000, 8.951e-05, 8.953e-05, 8.951e-05, 8.953e-05, 200.0], [1516638060000, 8.951e-05, 8.951e-05, 8.951e-05, 8.951e-05, 6.0], [1516638120000, 8.951e-05, 8.984e-05, 8.951e-05, 8.984e-05, 620.21357124], [1516638180000, 8.951e-05, 8.951e-05, 8.951e-05, 8.951e-05, 76.12125326], [1516638240000, 8.951e-05, 9.032e-05, 8.951e-05, 9.032e-05, 125.52487341], [1516638360000, 8.986e-05, 9.076e-05, 8.986e-05, 9.045e-05, 4619.47427769], [1516638420000, 9.045e-05, 9.075e-05, 9.045e-05, 9.075e-05, 266.88588329], [1516638480000, 9.046e-05, 9.046e-05, 9.046e-05, 9.046e-05, 1070.0], [1516638540000, 9.074e-05, 9.076e-05, 9.074e-05, 9.074e-05, 630.770003], [1516638600000, 9.074e-05, 9.074e-05, 9.045e-05, 9.045e-05, 211.64265167], [1516638660000, 9.036e-05, 9.036e-05, 9.032e-05, 9.032e-05, 463.80006758], [1516638720000, 9.043e-05, 9.043e-05, 9.043e-05, 9.043e-05, 148.81648812], [1516638780000, 9.034e-05, 9.034e-05, 8.95e-05, 8.95e-05, 1607.62793554], [1516638840000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 92.04948542], [1516638900000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 814.42451399], [1516638960000, 8.95e-05, 9.029e-05, 8.95e-05, 9.029e-05, 592.20398983], [1516639020000, 9.033e-05, 9.04e-05, 9.033e-05, 9.04e-05, 422.02912884], [1516639140000, 9.037e-05, 9.037e-05, 8.951e-05, 8.951e-05, 623.42647369], [1516639200000, 8.951e-05, 8.951e-05, 8.949e-05, 8.951e-05, 1780.27067118], [1516639320000, 8.957e-05, 8.957e-05, 8.955e-05, 8.955e-05, 39.90986248], [1516639380000, 9.037e-05, 9.037e-05, 9.037e-05, 9.037e-05, 20.061003], [1516639440000, 9.035e-05, 9.04e-05, 9.035e-05, 9.04e-05, 2140.71645412], [1516639500000, 9.035e-05, 9.038e-05, 8.978e-05, 9.038e-05, 867.27997227], [1516639560000, 9.037e-05, 9.04e-05, 9.037e-05, 9.04e-05, 2889.61531907], [1516639620000, 9.041e-05, 9.048e-05, 9.041e-05, 9.048e-05, 215.74109344], [1516639680000, 9.048e-05, 9.048e-05, 9.048e-05, 9.048e-05, 32.07291094], [1516639740000, 9.059e-05, 9.076e-05, 8.962e-05, 8.962e-05, 8458.0476478], [1516639920000, 8.981e-05, 8.981e-05, 8.981e-05, 8.981e-05, 1022.98054284], [1516639980000, 8.98e-05, 8.981e-05, 8.98e-05, 8.981e-05, 383.15242985], [1516640160000, 8.987e-05, 8.988e-05, 8.981e-05, 8.988e-05, 2055.0], [1516640400000, 9.047e-05, 9.047e-05, 9.047e-05, 9.047e-05, 167.01926288], [1516640460000, 9.03e-05, 9.047e-05, 9.03e-05, 9.047e-05, 554.28442374], [1516640520000, 9.047e-05, 9.047e-05, 9.047e-05, 9.047e-05, 18.25254234], [1516640640000, 9.048e-05, 9.048e-05, 9.048e-05, 9.048e-05, 690.84876717], [1516640700000, 9.047e-05, 9.047e-05, 9.047e-05, 9.047e-05, 786.0], [1516640760000, 9.047e-05, 9.047e-05, 9.047e-05, 9.047e-05, 2765.75354924], [1516640820000, 9.047e-05, 9.05e-05, 9.047e-05, 9.047e-05, 3622.97270979], [1516640880000, 9.06e-05, 9.061e-05, 9e-05, 9e-05, 1528.26237258], [1516641000000, 9e-05, 9e-05, 8.999e-05, 9e-05, 239.15], [1516641060000, 9e-05, 9e-05, 9e-05, 9e-05, 180.541003], [1516641120000, 9e-05, 9e-05, 9e-05, 9e-05, 802.85982967], [1516641180000, 9.059e-05, 9.059e-05, 9.059e-05, 9.059e-05, 1943.33139392], [1516641360000, 9.056e-05, 9.06e-05, 8.973e-05, 8.973e-05, 3835.27664014], [1516641420000, 9.05e-05, 9.05e-05, 9.05e-05, 9.05e-05, 319.14820552], [1516641540000, 9e-05, 9e-05, 9e-05, 9e-05, 108.96807235], [1516642020000, 9.009e-05, 9.009e-05, 9.002e-05, 9.009e-05, 535.75037035], [1516642080000, 9.002e-05, 9.009e-05, 9.002e-05, 9.009e-05, 97.85298427], [1516642140000, 9.002e-05, 9.002e-05, 9.002e-05, 9.002e-05, 182.3276524], [1516642200000, 9.006e-05, 9.006e-05, 9.002e-05, 9.002e-05, 111.000111], [1516642260000, 9.005e-05, 9.005e-05, 9.005e-05, 9.005e-05, 1911.04941699], [1516642320000, 9.002e-05, 9.005e-05, 8.992e-05, 9.005e-05, 173.32407878], [1516642380000, 9.005e-05, 9.005e-05, 9.005e-05, 9.005e-05, 1111.04941699], [1516642440000, 9.006e-05, 9.006e-05, 9.005e-05, 9.005e-05, 236.54043446], [1516642560000, 9.005e-05, 9.006e-05, 9.005e-05, 9.006e-05, 46.29142729], [1516642620000, 9.006e-05, 9.006e-05, 9.006e-05, 9.006e-05, 263.91007361], [1516642680000, 9.006e-05, 9.006e-05, 9.006e-05, 9.006e-05, 50.0], [1516642740000, 9.006e-05, 9.008e-05, 9.006e-05, 9.008e-05, 8840.51590446], [1516642800000, 9.007e-05, 9.008e-05, 9.007e-05, 9.008e-05, 24.16915083], [1516642860000, 9.006e-05, 9.008e-05, 9.005e-05, 9.008e-05, 765.77509407], [1516642920000, 9.008e-05, 9.008e-05, 9.008e-05, 9.008e-05, 198.40106682], [1516642980000, 9.005e-05, 9.005e-05, 8.995e-05, 8.995e-05, 516.82215879], [1516643040000, 8.992e-05, 8.992e-05, 8.992e-05, 8.992e-05, 411.93797922], [1516643100000, 8.991e-05, 8.992e-05, 8.961e-05, 8.961e-05, 4330.10037276], [1516643160000, 8.99e-05, 9.01e-05, 8.99e-05, 9.01e-05, 664.35529998], [1516643220000, 9.037e-05, 9.037e-05, 9.037e-05, 9.037e-05, 132.78742945], [1516643280000, 9.037e-05, 9.08e-05, 9.01e-05, 9.078e-05, 1087.40248919], [1516643400000, 9.001e-05, 9.002e-05, 8.965e-05, 8.965e-05, 5195.68908344], [1516643460000, 9.002e-05, 9.002e-05, 9.002e-05, 9.002e-05, 553.98800267], [1516643520000, 8.968e-05, 9.002e-05, 8.968e-05, 9.002e-05, 3888.8964261], [1516643580000, 8.966e-05, 8.972e-05, 8.966e-05, 8.972e-05, 310.59196837], [1516643640000, 8.978e-05, 8.978e-05, 8.978e-05, 8.978e-05, 1100.0], [1516643700000, 8.979e-05, 8.981e-05, 8.979e-05, 8.981e-05, 1153.65118748], [1516643760000, 9.051e-05, 9.051e-05, 9.051e-05, 9.051e-05, 79.25224378], [1516644060000, 8.99e-05, 9.048e-05, 8.983e-05, 9.048e-05, 1239.2929303], [1516644120000, 9.049e-05, 9.049e-05, 9.049e-05, 9.049e-05, 12.35417456], [1516644180000, 9.049e-05, 9.051e-05, 9.049e-05, 9.051e-05, 69.92366251], [1516644240000, 9.05e-05, 9.05e-05, 9.05e-05, 9.05e-05, 476.87149154], [1516644300000, 9.05e-05, 9.05e-05, 9.047e-05, 9.047e-05, 1777.27826475], [1516644420000, 9.047e-05, 9.049e-05, 8.983e-05, 9.049e-05, 20857.41821748], [1516644480000, 9.049e-05, 9.049e-05, 8.984e-05, 8.988e-05, 1625.93217786], [1516644720000, 9e-05, 9e-05, 9e-05, 9e-05, 141.0], [1516644960000, 9.039e-05, 9.051e-05, 9.039e-05, 9.051e-05, 2661.68465946], [1516645020000, 9.051e-05, 9.091e-05, 9.051e-05, 9.091e-05, 2577.08001974], [1516645140000, 9.09e-05, 9.091e-05, 9.09e-05, 9.091e-05, 22.30084358], [1516645260000, 9.09e-05, 9.091e-05, 9.09e-05, 9.091e-05, 37.09806711], [1516645380000, 9.065e-05, 9.081e-05, 8.991e-05, 9.081e-05, 3066.91201625], [1516645560000, 9.001e-05, 9.001e-05, 9.001e-05, 9.001e-05, 37.0], [1516645620000, 9.001e-05, 9.001e-05, 9.001e-05, 9.001e-05, 75.0], [1516645680000, 8.99e-05, 8.992e-05, 8.965e-05, 8.97e-05, 3835.77116493], [1516645740000, 9.001e-05, 9.001e-05, 9.001e-05, 9.001e-05, 10.0], [1516645800000, 9.001e-05, 9.001e-05, 8.989e-05, 8.989e-05, 429.18152536], [1516645860000, 9e-05, 9e-05, 9e-05, 9e-05, 179.88507009], [1516645920000, 9.001e-05, 9.001e-05, 8.99e-05, 8.99e-05, 396.62199655], [1516645980000, 9e-05, 9e-05, 9e-05, 9e-05, 687.37492308], [1516646040000, 8.99e-05, 8.99e-05, 8.99e-05, 8.99e-05, 40.0], [1516646100000, 9e-05, 9.001e-05, 9e-05, 9.001e-05, 642.78955953], [1516646160000, 9e-05, 9e-05, 9e-05, 9e-05, 11.89167907], [1516646220000, 9.001e-05, 9.001e-05, 8.997e-05, 8.997e-05, 1809.94301393], [1516646340000, 9.001e-05, 9.001e-05, 8.97e-05, 8.97e-05, 600.0], [1516646400000, 8.981e-05, 9.098e-05, 8.979e-05, 9.098e-05, 1690.67039057], [1516646460000, 9.093e-05, 9.093e-05, 9.092e-05, 9.092e-05, 715.90279836], [1516646520000, 8.998e-05, 8.998e-05, 8.997e-05, 8.997e-05, 50.70713411], [1516646580000, 9.083e-05, 9.108e-05, 9.083e-05, 9.108e-05, 100.301003], [1516646700000, 8.999e-05, 9.083e-05, 8.999e-05, 9.083e-05, 311.66298419], [1516647060000, 9.053e-05, 9.061e-05, 9.053e-05, 9.061e-05, 314.39199093], [1516647120000, 9.033e-05, 9.033e-05, 9.033e-05, 9.033e-05, 50.0], [1516647180000, 9e-05, 9e-05, 8.97e-05, 9e-05, 5471.22775245], [1516647240000, 8.97e-05, 8.999e-05, 8.97e-05, 8.999e-05, 659.38857105], [1516647300000, 8.999e-05, 8.999e-05, 8.999e-05, 8.999e-05, 89.43836922], [1516647360000, 8.97e-05, 8.97e-05, 8.964e-05, 8.964e-05, 1937.72788487], [1516647420000, 8.999e-05, 8.999e-05, 8.964e-05, 8.964e-05, 59.86203796], [1516647480000, 8.999e-05, 8.999e-05, 8.964e-05, 8.999e-05, 493.0897031], [1516647600000, 8.964e-05, 8.964e-05, 8.964e-05, 8.964e-05, 621.17969163], [1516647720000, 8.964e-05, 8.964e-05, 8.95e-05, 8.95e-05, 7568.38574213], [1516647780000, 8.95e-05, 8.982e-05, 8.95e-05, 8.982e-05, 2720.88621688], [1516647840000, 8.982e-05, 8.999e-05, 8.982e-05, 8.999e-05, 3841.00969552], [1516648020000, 8.998e-05, 8.998e-05, 8.95e-05, 8.95e-05, 1168.9481274], [1516648080000, 8.95e-05, 8.998e-05, 8.95e-05, 8.998e-05, 225.27196679], [1516648140000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 302.56910445], [1516648200000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 1146.0], [1516648260000, 8.925e-05, 9e-05, 8.92e-05, 9e-05, 8390.75196592], [1516648320000, 9e-05, 9e-05, 9e-05, 9e-05, 27.46382169], [1516648380000, 8.93e-05, 9e-05, 8.93e-05, 9e-05, 3174.58478525], [1516648440000, 9e-05, 9e-05, 9e-05, 9e-05, 1553.31959854], [1516648500000, 8.93e-05, 8.93e-05, 8.93e-05, 8.93e-05, 44.49306997], [1516648560000, 8.93e-05, 9e-05, 8.93e-05, 9e-05, 183.35779798], [1516648620000, 9e-05, 9e-05, 9e-05, 9e-05, 151.37586556], [1516648680000, 8.931e-05, 9e-05, 8.93e-05, 9e-05, 3988.11311904], [1516648800000, 9e-05, 9e-05, 9e-05, 9e-05, 108.31640489], [1516648860000, 9e-05, 9e-05, 9e-05, 9e-05, 3173.83507073], [1516648920000, 9e-05, 9e-05, 9e-05, 9e-05, 75.42134167], [1516649160000, 8.997e-05, 8.997e-05, 8.997e-05, 8.997e-05, 388.11289677], [1516649220000, 8.997e-05, 8.997e-05, 8.997e-05, 8.997e-05, 228.5596095], [1516649280000, 8.949e-05, 8.997e-05, 8.949e-05, 8.997e-05, 1560.23800729], [1516649340000, 8.997e-05, 9e-05, 8.997e-05, 9e-05, 2634.88529477], [1516649460000, 8.921e-05, 9e-05, 8.921e-05, 8.937e-05, 1089.49152542], [1516649520000, 9e-05, 9.03e-05, 8.93e-05, 9.03e-05, 731.92887779], [1516649580000, 9.01e-05, 9.02e-05, 8.94e-05, 8.94e-05, 1056.43077992], [1516649640000, 8.92e-05, 8.939e-05, 8.92e-05, 8.939e-05, 1046.35566366], [1516649700000, 8.939e-05, 8.94e-05, 8.939e-05, 8.94e-05, 352.89840874], [1516649760000, 8.936e-05, 8.94e-05, 8.91e-05, 8.94e-05, 6773.88125151], [1516649820000, 8.94e-05, 8.94e-05, 8.94e-05, 8.94e-05, 4370.68511933], [1516650000000, 8.94e-05, 8.94e-05, 8.94e-05, 8.94e-05, 198.12347232], [1516650060000, 8.94e-05, 8.94e-05, 8.94e-05, 8.94e-05, 1807.0], [1516650180000, 8.94e-05, 8.94e-05, 8.905e-05, 8.905e-05, 131.25308345], [1516650240000, 8.94e-05, 8.94e-05, 8.94e-05, 8.94e-05, 826.25031406], [1516650360000, 8.906e-05, 8.94e-05, 8.906e-05, 8.94e-05, 1000.21447833], [1516650420000, 8.94e-05, 8.94e-05, 8.94e-05, 8.94e-05, 307.5602314], [1516650480000, 8.94e-05, 8.94e-05, 8.94e-05, 8.94e-05, 1511.16789352], [1516650540000, 8.939e-05, 8.939e-05, 8.939e-05, 8.939e-05, 147.72057759], [1516650600000, 8.94e-05, 8.94e-05, 8.903e-05, 8.903e-05, 18104.3438484], [1516650660000, 8.903e-05, 8.903e-05, 8.903e-05, 8.903e-05, 6192.35493561], [1516650720000, 8.901e-05, 8.902e-05, 8.901e-05, 8.901e-05, 4131.53587845], [1516650780000, 8.901e-05, 8.903e-05, 8.901e-05, 8.903e-05, 4540.13264225], [1516650840000, 8.903e-05, 8.903e-05, 8.903e-05, 8.903e-05, 31.84602566], [1516650960000, 8.94e-05, 8.996e-05, 8.904e-05, 8.99e-05, 1211.09413367], [1516651020000, 8.92e-05, 8.92e-05, 8.91e-05, 8.91e-05, 4606.22083645], [1516651080000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 685.93000482], [1516651140000, 8.919e-05, 8.92e-05, 8.919e-05, 8.919e-05, 850.0], [1516651200000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 60.78253444], [1516651260000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 41.94757225], [1516651320000, 8.918e-05, 8.92e-05, 8.9e-05, 8.92e-05, 2126.34944258], [1516651380000, 8.92e-05, 8.92e-05, 8.919e-05, 8.92e-05, 3167.1154974], [1516651500000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 1965.43712385], [1516651560000, 8.9e-05, 8.92e-05, 8.9e-05, 8.92e-05, 1179.3945742], [1516651620000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 198.39960225], [1516651680000, 8.92e-05, 8.92e-05, 8.895e-05, 8.895e-05, 1153.51915992], [1516651740000, 8.895e-05, 8.92e-05, 8.895e-05, 8.92e-05, 1387.08249562], [1516651800000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 970.10452832], [1516651860000, 8.899e-05, 8.92e-05, 8.899e-05, 8.899e-05, 5123.10381995], [1516651920000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 18606.57622138], [1516651980000, 8.92e-05, 9.018e-05, 8.92e-05, 9.018e-05, 8369.42217585], [1516652040000, 9.03e-05, 9.061e-05, 9.018e-05, 9.018e-05, 2363.65898506], [1516652100000, 9.058e-05, 9.058e-05, 9.018e-05, 9.018e-05, 4890.62091387], [1516652160000, 8.92e-05, 8.92e-05, 8.9e-05, 8.92e-05, 5423.94439278], [1516652220000, 8.92e-05, 9.018e-05, 8.92e-05, 9.018e-05, 8471.88614049], [1516652280000, 8.908e-05, 9.021e-05, 8.908e-05, 9.021e-05, 122.85913627], [1516652400000, 9.021e-05, 9.021e-05, 8.931e-05, 8.932e-05, 1434.59490178], [1516652460000, 8.95e-05, 9.024e-05, 8.95e-05, 9.024e-05, 387.12957861], [1516652520000, 9.021e-05, 9.021e-05, 8.93e-05, 8.93e-05, 1759.35560585], [1516652700000, 9.024e-05, 9.024e-05, 9.024e-05, 9.024e-05, 135.0], [1516652760000, 9.024e-05, 9.024e-05, 8.937e-05, 8.937e-05, 1614.01128721], [1516652880000, 9.039e-05, 9.04e-05, 9.022e-05, 9.023e-05, 397.13649775], [1516653000000, 9.022e-05, 9.022e-05, 8.902e-05, 8.902e-05, 4458.63399545], [1516653060000, 8.905e-05, 8.905e-05, 8.904e-05, 8.904e-05, 4100.0], [1516653120000, 8.907e-05, 8.907e-05, 8.907e-05, 8.907e-05, 30.57043904], [1516653180000, 8.909e-05, 9.04e-05, 8.909e-05, 9.007e-05, 444.51680038], [1516653240000, 9.007e-05, 9.007e-05, 8.998e-05, 8.998e-05, 551.11127576], [1516653300000, 8.996e-05, 8.996e-05, 8.912e-05, 8.912e-05, 421.01356464], [1516653360000, 8.937e-05, 8.937e-05, 8.937e-05, 8.937e-05, 10.12355427], [1516653420000, 8.916e-05, 8.916e-05, 8.912e-05, 8.916e-05, 730.12386761], [1516653480000, 8.916e-05, 8.916e-05, 8.913e-05, 8.916e-05, 1107.72519166], [1516653540000, 8.937e-05, 8.937e-05, 8.916e-05, 8.937e-05, 884.56138272], [1516653600000, 8.916e-05, 8.937e-05, 8.915e-05, 8.937e-05, 5949.66267844], [1516653660000, 8.917e-05, 8.985e-05, 8.916e-05, 8.985e-05, 4905.33793904], [1516653720000, 8.92e-05, 8.928e-05, 8.92e-05, 8.928e-05, 162.38789238], [1516653780000, 8.969e-05, 8.969e-05, 8.969e-05, 8.969e-05, 634.74000492], [1516653840000, 8.916e-05, 8.916e-05, 8.916e-05, 8.916e-05, 2000.0], [1516653960000, 8.97e-05, 8.97e-05, 8.97e-05, 8.97e-05, 467.88117909], [1516654020000, 8.97e-05, 8.97e-05, 8.97e-05, 8.97e-05, 192.06028664], [1516654080000, 8.97e-05, 8.97e-05, 8.97e-05, 8.97e-05, 188.77316596], [1516654140000, 8.97e-05, 8.985e-05, 8.97e-05, 8.985e-05, 2554.24506418], [1516654200000, 8.985e-05, 8.985e-05, 8.985e-05, 8.985e-05, 195.93271367], [1516654260000, 8.999e-05, 9.028e-05, 8.999e-05, 9.028e-05, 359.54334469], [1516654320000, 9.001e-05, 9.001e-05, 8.999e-05, 8.999e-05, 2001.82413564], [1516654380000, 8.999e-05, 8.999e-05, 8.915e-05, 8.99e-05, 4578.45380376], [1516654440000, 8.915e-05, 8.915e-05, 8.915e-05, 8.915e-05, 6263.63588212], [1516654500000, 8.915e-05, 8.993e-05, 8.915e-05, 8.993e-05, 761.09561669], [1516654560000, 8.909e-05, 8.992e-05, 8.907e-05, 8.992e-05, 1849.26792087], [1516654620000, 8.988e-05, 8.988e-05, 8.915e-05, 8.915e-05, 104.44478129], [1516654680000, 8.916e-05, 8.916e-05, 8.915e-05, 8.915e-05, 596.39096243], [1516654740000, 9.01e-05, 9.05e-05, 9.01e-05, 9.049e-05, 571.77448585], [1516654800000, 9.04e-05, 9.04e-05, 9.04e-05, 9.04e-05, 468.85361403], [1516654860000, 8.937e-05, 9.027e-05, 8.902e-05, 9.015e-05, 4227.27561921], [1516654920000, 9.009e-05, 9.009e-05, 9.009e-05, 9.009e-05, 76.00260638], [1516654980000, 9.011e-05, 9.011e-05, 9.011e-05, 9.011e-05, 379.89732879], [1516655040000, 9e-05, 9e-05, 9e-05, 9e-05, 200.0], [1516655100000, 9.003e-05, 9.004e-05, 9.002e-05, 9.002e-05, 181.25220632], [1516655160000, 8.995e-05, 8.998e-05, 8.92e-05, 8.998e-05, 384.18702775], [1516655220000, 8.999e-05, 8.999e-05, 8.92e-05, 8.921e-05, 4067.49154883], [1516655280000, 8.921e-05, 9.001e-05, 8.921e-05, 9.001e-05, 38.41740463], [1516655340000, 8.953e-05, 8.953e-05, 8.953e-05, 8.953e-05, 127.28365642], [1516655400000, 8.921e-05, 8.952e-05, 8.908e-05, 8.952e-05, 2957.60091885], [1516655460000, 8.953e-05, 8.953e-05, 8.953e-05, 8.953e-05, 386.68900422], [1516655520000, 8.908e-05, 8.908e-05, 8.904e-05, 8.904e-05, 1080.18738334], [1516655580000, 8.953e-05, 8.953e-05, 8.903e-05, 8.953e-05, 715.75502546], [1516655640000, 8.953e-05, 8.953e-05, 8.953e-05, 8.953e-05, 270.15444328], [1516655760000, 8.903e-05, 8.936e-05, 8.902e-05, 8.936e-05, 1939.51930721], [1516655820000, 8.936e-05, 8.936e-05, 8.902e-05, 8.902e-05, 559.15396484], [1516655880000, 8.936e-05, 8.936e-05, 8.902e-05, 8.902e-05, 914.57254767], [1516655940000, 8.937e-05, 8.937e-05, 8.937e-05, 8.937e-05, 54.95650868], [1516656000000, 8.916e-05, 8.916e-05, 8.908e-05, 8.908e-05, 2419.09125884], [1516656060000, 8.937e-05, 9.017e-05, 8.91e-05, 8.937e-05, 1512.20341759], [1516656120000, 8.938e-05, 9.012e-05, 8.938e-05, 9.009e-05, 456.86311652], [1516656180000, 8.938e-05, 8.999e-05, 8.938e-05, 8.999e-05, 574.84197526], [1516656240000, 8.998e-05, 9.004e-05, 8.995e-05, 8.995e-05, 1373.30239492], [1516656300000, 8.991e-05, 8.991e-05, 8.991e-05, 8.991e-05, 31.8801378], [1516656360000, 8.938e-05, 8.938e-05, 8.938e-05, 8.938e-05, 1107.86888777], [1516656420000, 8.937e-05, 8.939e-05, 8.905e-05, 8.905e-05, 902.24775267], [1516656480000, 8.905e-05, 8.99e-05, 8.901e-05, 8.985e-05, 1790.37326078], [1516656540000, 8.978e-05, 8.978e-05, 8.976e-05, 8.976e-05, 239.43342122], [1516656600000, 8.974e-05, 8.974e-05, 8.974e-05, 8.974e-05, 85.84545862], [1516656660000, 8.973e-05, 8.973e-05, 8.938e-05, 8.938e-05, 213.46448691], [1516656720000, 8.903e-05, 8.972e-05, 8.901e-05, 8.972e-05, 4704.82225993], [1516656780000, 8.904e-05, 8.904e-05, 8.902e-05, 8.902e-05, 200.0], [1516656840000, 8.902e-05, 8.97e-05, 8.902e-05, 8.97e-05, 332.1939494], [1516656900000, 8.97e-05, 8.97e-05, 8.903e-05, 8.97e-05, 612.65018874], [1516656960000, 8.97e-05, 8.974e-05, 8.97e-05, 8.974e-05, 825.70584454], [1516657020000, 8.974e-05, 8.974e-05, 8.973e-05, 8.974e-05, 467.76630104], [1516657080000, 8.974e-05, 8.979e-05, 8.91e-05, 8.91e-05, 454.31856544], [1516657140000, 8.979e-05, 8.979e-05, 8.91e-05, 8.91e-05, 130.18932593], [1516657200000, 8.976e-05, 8.978e-05, 8.976e-05, 8.976e-05, 492.3100817], [1516657260000, 8.976e-05, 8.978e-05, 8.976e-05, 8.978e-05, 501.90273121], [1516657320000, 8.978e-05, 8.978e-05, 8.933e-05, 8.933e-05, 374.85596154], [1516657380000, 8.933e-05, 8.978e-05, 8.933e-05, 8.978e-05, 269.82127777], [1516657440000, 8.978e-05, 8.978e-05, 8.934e-05, 8.934e-05, 5585.05521451], [1516657500000, 8.977e-05, 8.978e-05, 8.91e-05, 8.91e-05, 1131.57775434], [1516657560000, 8.94e-05, 8.94e-05, 8.91e-05, 8.91e-05, 234.85813926], [1516657620000, 8.949e-05, 8.949e-05, 8.949e-05, 8.949e-05, 350.0], [1516657680000, 8.91e-05, 8.91e-05, 8.901e-05, 8.901e-05, 2181.84339582], [1516657740000, 8.947e-05, 8.948e-05, 8.901e-05, 8.948e-05, 311.34444563], [1516657800000, 8.901e-05, 8.948e-05, 8.901e-05, 8.901e-05, 667.56823589], [1516657860000, 8.93e-05, 8.93e-05, 8.9e-05, 8.9e-05, 3460.88513009], [1516657920000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 34.37896847], [1516657980000, 8.929e-05, 8.977e-05, 8.901e-05, 8.977e-05, 944.02672345], [1516658040000, 8.977e-05, 8.978e-05, 8.977e-05, 8.978e-05, 3085.99068194], [1516658100000, 8.91e-05, 9.016e-05, 8.9e-05, 9.016e-05, 8402.39693345], [1516658160000, 9.016e-05, 9.017e-05, 8.893e-05, 8.899e-05, 16925.91324701], [1516658220000, 8.899e-05, 8.97e-05, 8.899e-05, 8.958e-05, 1062.83417802], [1516658280000, 8.957e-05, 8.958e-05, 8.957e-05, 8.958e-05, 1737.55268838], [1516658340000, 8.958e-05, 9.061e-05, 8.924e-05, 8.924e-05, 7921.06225421], [1516658400000, 9.024e-05, 9.038e-05, 9.024e-05, 9.038e-05, 239.43244441], [1516658460000, 9.037e-05, 9.038e-05, 9.037e-05, 9.038e-05, 30.0], [1516658520000, 9.038e-05, 9.038e-05, 9.037e-05, 9.038e-05, 308.93288894], [1516658580000, 8.942e-05, 9.037e-05, 8.942e-05, 9.037e-05, 499.41981232], [1516658640000, 9.036e-05, 9.037e-05, 8.941e-05, 8.941e-05, 2843.15421102], [1516658700000, 8.95e-05, 8.95e-05, 8.941e-05, 8.941e-05, 911.45154652], [1516658760000, 8.941e-05, 9.037e-05, 8.941e-05, 9.037e-05, 1474.13864675], [1516658820000, 9.036e-05, 9.036e-05, 9.036e-05, 9.036e-05, 381.72106481], [1516659000000, 9.036e-05, 9.036e-05, 8.951e-05, 9.03e-05, 80.0896311], [1516659060000, 9.03e-05, 9.03e-05, 8.951e-05, 8.951e-05, 218.55340391], [1516659120000, 9.03e-05, 9.038e-05, 9.03e-05, 9.038e-05, 50.151003], [1516659180000, 9.038e-05, 9.06e-05, 9.038e-05, 9.06e-05, 1042.49841963], [1516659240000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 11.90467539], [1516659300000, 9.06e-05, 9.06e-05, 8.954e-05, 9.06e-05, 871.95200599], [1516659360000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 198.34611829], [1516659420000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 379.36051705], [1516659480000, 8.962e-05, 8.962e-05, 8.961e-05, 8.961e-05, 368.96132148], [1516659540000, 8.961e-05, 8.961e-05, 8.951e-05, 8.951e-05, 507.83413221], [1516659600000, 8.962e-05, 9.06e-05, 8.962e-05, 9.059e-05, 1539.76843126], [1516659660000, 8.96e-05, 9.059e-05, 8.96e-05, 8.96e-05, 6688.81999351], [1516659720000, 8.951e-05, 8.951e-05, 8.951e-05, 8.951e-05, 301.90450312], [1516659780000, 9.06e-05, 9.06e-05, 8.894e-05, 8.902e-05, 8511.84343934], [1516659840000, 8.95e-05, 9.024e-05, 8.899e-05, 9.024e-05, 4427.47828976], [1516659900000, 9.021e-05, 9.024e-05, 8.879e-05, 8.88e-05, 11155.83690077], [1516659960000, 9.024e-05, 9.056e-05, 8.895e-05, 9.001e-05, 5809.14432515], [1516660020000, 9.001e-05, 9.037e-05, 8.999e-05, 8.999e-05, 4021.33156561], [1516660080000, 8.999e-05, 8.999e-05, 8.909e-05, 8.989e-05, 1022.58559631], [1516660140000, 8.996e-05, 8.998e-05, 8.992e-05, 8.992e-05, 186.78670336], [1516660200000, 8.98e-05, 8.999e-05, 8.98e-05, 8.999e-05, 7932.08333179], [1516660260000, 8.917e-05, 8.999e-05, 8.917e-05, 8.999e-05, 1355.94686631], [1516660320000, 8.999e-05, 8.999e-05, 8.999e-05, 8.999e-05, 12.2235804], [1516660380000, 9.021e-05, 9.048e-05, 9.021e-05, 9.048e-05, 267.60835467], [1516660440000, 8.95e-05, 9.061e-05, 8.95e-05, 8.998e-05, 2521.231489], [1516660500000, 8.998e-05, 9.06e-05, 8.95e-05, 8.95e-05, 437.43534747], [1516660560000, 9.06e-05, 9.082e-05, 9.06e-05, 9.082e-05, 4019.68497778], [1516660620000, 9.082e-05, 9.12e-05, 9.061e-05, 9.061e-05, 1063.25733908], [1516660680000, 9.061e-05, 9.119e-05, 9.061e-05, 9.119e-05, 277.061003], [1516660740000, 9.118e-05, 9.12e-05, 9.118e-05, 9.12e-05, 270.72667972], [1516660800000, 9.12e-05, 9.12e-05, 9.061e-05, 9.061e-05, 344.22071138], [1516660860000, 9.119e-05, 9.144e-05, 9.118e-05, 9.144e-05, 3746.6368], [1516660920000, 9.144e-05, 9.144e-05, 9.143e-05, 9.144e-05, 2681.33860714], [1516660980000, 9.144e-05, 9.149e-05, 9.144e-05, 9.149e-05, 6703.17871342], [1516661040000, 9.149e-05, 9.149e-05, 9.07e-05, 9.07e-05, 1915.0942207], [1516661160000, 9.071e-05, 9.148e-05, 9.071e-05, 9.148e-05, 250.91950201], [1516661220000, 9.071e-05, 9.148e-05, 9.064e-05, 9.064e-05, 97.8562489], [1516661280000, 9.147e-05, 9.149e-05, 9.147e-05, 9.149e-05, 410.55258537], [1516661340000, 9.071e-05, 9.149e-05, 9.071e-05, 9.149e-05, 3281.64959777], [1516661400000, 9.149e-05, 9.149e-05, 9.147e-05, 9.149e-05, 1642.51458656], [1516661460000, 9.149e-05, 9.149e-05, 9.149e-05, 9.149e-05, 74.21105073], [1516661520000, 9.149e-05, 9.149e-05, 9.148e-05, 9.149e-05, 911.39329722], [1516661580000, 9.148e-05, 9.149e-05, 9.148e-05, 9.148e-05, 8458.29753331], [1516661640000, 9.148e-05, 9.149e-05, 9.071e-05, 9.071e-05, 2179.87149809], [1516661700000, 9.147e-05, 9.148e-05, 9.072e-05, 9.147e-05, 1089.35584208], [1516661760000, 9.072e-05, 9.149e-05, 9.072e-05, 9.147e-05, 1453.47361834], [1516661820000, 9.148e-05, 9.149e-05, 9.147e-05, 9.149e-05, 4852.8026753], [1516661880000, 9.147e-05, 9.149e-05, 9.147e-05, 9.147e-05, 243.95278947], [1516661940000, 9.147e-05, 9.149e-05, 9.072e-05, 9.149e-05, 7619.55177625], [1516662000000, 9.148e-05, 9.149e-05, 9.148e-05, 9.148e-05, 587.57507839], [1516662060000, 9.145e-05, 9.145e-05, 9.145e-05, 9.145e-05, 220.661003], [1516662120000, 9.09e-05, 9.09e-05, 9.09e-05, 9.09e-05, 246.96916542], [1516662180000, 9.09e-05, 9.142e-05, 9.09e-05, 9.142e-05, 556.3297832], [1516662240000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 191.99580502], [1516662300000, 9.08e-05, 9.145e-05, 9.072e-05, 9.073e-05, 15778.68457875], [1516662360000, 9.073e-05, 9.073e-05, 9.072e-05, 9.073e-05, 1335.67677035], [1516662420000, 9.073e-05, 9.145e-05, 9.072e-05, 9.072e-05, 447.10884713], [1516662480000, 9.072e-05, 9.145e-05, 9.072e-05, 9.145e-05, 1136.40048253], [1516662540000, 9.072e-05, 9.13e-05, 8.937e-05, 9.125e-05, 5351.62656927], [1516662600000, 8.966e-05, 9.12e-05, 8.965e-05, 9.118e-05, 356.15096237], [1516662660000, 9.114e-05, 9.116e-05, 9.114e-05, 9.115e-05, 1284.45266471], [1516662720000, 9.115e-05, 9.117e-05, 9.115e-05, 9.117e-05, 471.04575106], [1516662780000, 9.118e-05, 9.12e-05, 9.115e-05, 9.12e-05, 2705.97192452], [1516662840000, 9.12e-05, 9.12e-05, 9.115e-05, 9.119e-05, 153.16243141], [1516662900000, 9.119e-05, 9.119e-05, 9.115e-05, 9.115e-05, 3827.36065202], [1516662960000, 9.119e-05, 9.119e-05, 9.118e-05, 9.119e-05, 38.49231777], [1516663020000, 9.115e-05, 9.145e-05, 9.115e-05, 9.145e-05, 1087.71077643], [1516663080000, 9.145e-05, 9.145e-05, 8.993e-05, 8.993e-05, 2214.07886598], [1516663140000, 9e-05, 9.113e-05, 9e-05, 9.113e-05, 2282.42178807], [1516663200000, 9.107e-05, 9.107e-05, 9.004e-05, 9.004e-05, 823.0], [1516663260000, 9.107e-05, 9.107e-05, 9.104e-05, 9.104e-05, 356.9088985], [1516663320000, 9.105e-05, 9.107e-05, 8.95e-05, 8.95e-05, 4937.6745499], [1516663380000, 9.015e-05, 9.102e-05, 9.015e-05, 9.102e-05, 214.18110881], [1516663440000, 9.101e-05, 9.102e-05, 9.015e-05, 9.102e-05, 797.29231011], [1516663500000, 9.102e-05, 9.102e-05, 9.102e-05, 9.102e-05, 210.09505616], [1516663560000, 9.102e-05, 9.102e-05, 9.102e-05, 9.102e-05, 200.0], [1516663620000, 9.102e-05, 9.102e-05, 9.102e-05, 9.102e-05, 160.66870294], [1516663680000, 9.102e-05, 9.107e-05, 9.025e-05, 9.025e-05, 2382.98645107], [1516663740000, 9.025e-05, 9.025e-05, 9.025e-05, 9.025e-05, 1407.60328281], [1516663800000, 9.107e-05, 9.107e-05, 9.106e-05, 9.106e-05, 871.31077231], [1516663860000, 9.106e-05, 9.145e-05, 9.106e-05, 9.106e-05, 5427.49512989], [1516663920000, 9.144e-05, 9.144e-05, 9.026e-05, 9.026e-05, 2336.29886548], [1516663980000, 9.026e-05, 9.145e-05, 9.026e-05, 9.145e-05, 1306.25715411], [1516664100000, 9.1e-05, 9.1e-05, 9.035e-05, 9.1e-05, 427.96934594], [1516664160000, 9.1e-05, 9.1e-05, 9.035e-05, 9.035e-05, 707.64402002], [1516664220000, 9.099e-05, 9.1e-05, 9.029e-05, 9.029e-05, 1805.0271131], [1516664280000, 9.099e-05, 9.1e-05, 9.025e-05, 9.025e-05, 4444.69668794], [1516664340000, 9.025e-05, 9.026e-05, 9.025e-05, 9.026e-05, 2250.32781705], [1516664400000, 9.026e-05, 9.143e-05, 9.026e-05, 9.143e-05, 861.65755168], [1516664460000, 9.136e-05, 9.136e-05, 9.136e-05, 9.136e-05, 25.74148642], [1516664520000, 9.136e-05, 9.138e-05, 9.053e-05, 9.13e-05, 1120.93811915], [1516664580000, 9.13e-05, 9.13e-05, 9.13e-05, 9.13e-05, 322.66735792], [1516664700000, 9.13e-05, 9.144e-05, 9.054e-05, 9.054e-05, 802.25100299], [1516664760000, 9.143e-05, 9.145e-05, 9.143e-05, 9.145e-05, 3942.09270784], [1516664820000, 9.145e-05, 9.145e-05, 9.145e-05, 9.145e-05, 3610.21233128], [1516664880000, 9.145e-05, 9.145e-05, 9.145e-05, 9.145e-05, 90.50672774], [1516664940000, 9.143e-05, 9.144e-05, 9.1e-05, 9.1e-05, 834.61988072], [1516665000000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 180.60467851], [1516665060000, 9.1e-05, 9.145e-05, 9.1e-05, 9.141e-05, 2555.31163296], [1516665120000, 9.145e-05, 9.145e-05, 9.145e-05, 9.145e-05, 18.1958559], [1516665180000, 9.144e-05, 9.145e-05, 9.1e-05, 9.1e-05, 2721.97721809], [1516665240000, 9.1e-05, 9.1e-05, 9.029e-05, 9.029e-05, 1032.87886216], [1516665300000, 9.144e-05, 9.144e-05, 9.143e-05, 9.143e-05, 197.61050912], [1516665360000, 9.143e-05, 9.145e-05, 9.143e-05, 9.145e-05, 1192.12901007], [1516665420000, 9.145e-05, 9.145e-05, 9.143e-05, 9.145e-05, 5316.32805602], [1516665480000, 9.144e-05, 9.145e-05, 9.032e-05, 9.145e-05, 5053.5740108], [1516665540000, 9.145e-05, 9.145e-05, 9.145e-05, 9.145e-05, 1483.11041869], [1516665600000, 9.145e-05, 9.145e-05, 9.059e-05, 9.059e-05, 7471.6089731], [1516665660000, 9.144e-05, 9.145e-05, 9.055e-05, 9.144e-05, 3994.75526842], [1516665720000, 9.055e-05, 9.144e-05, 9.054e-05, 9.144e-05, 2556.99684162], [1516665780000, 9.056e-05, 9.143e-05, 9.034e-05, 9.045e-05, 10312.17813008], [1516665840000, 9.045e-05, 9.135e-05, 8.97e-05, 8.97e-05, 16166.34378312], [1516665900000, 9.143e-05, 9.144e-05, 9.055e-05, 9.142e-05, 922.1750834], [1516665960000, 9.139e-05, 9.139e-05, 9.055e-05, 9.055e-05, 536.47628885], [1516666020000, 9.055e-05, 9.107e-05, 9.055e-05, 9.107e-05, 205.21811154], [1516666080000, 9.105e-05, 9.105e-05, 9.105e-05, 9.105e-05, 192.73394983], [1516666140000, 9.099e-05, 9.099e-05, 9.01e-05, 9.01e-05, 44.99751542], [1516666200000, 9.09e-05, 9.09e-05, 9.089e-05, 9.089e-05, 456.50736537], [1516666320000, 9.09e-05, 9.105e-05, 9.09e-05, 9.105e-05, 219.62048979], [1516666380000, 9.105e-05, 9.105e-05, 9.105e-05, 9.105e-05, 237.30951329], [1516666440000, 9.105e-05, 9.105e-05, 9.102e-05, 9.105e-05, 2512.12222153], [1516666500000, 9.105e-05, 9.14e-05, 9.105e-05, 9.105e-05, 3766.58034044], [1516666560000, 9.105e-05, 9.145e-05, 9.014e-05, 9.143e-05, 7373.12285295], [1516666620000, 9.013e-05, 9.144e-05, 9.012e-05, 9.105e-05, 2099.89309478], [1516666680000, 9.127e-05, 9.127e-05, 9.122e-05, 9.122e-05, 248.40923704], [1516666740000, 9.111e-05, 9.111e-05, 9.1e-05, 9.103e-05, 694.18798765], [1516666800000, 9.096e-05, 9.096e-05, 9.096e-05, 9.096e-05, 150.45100299], [1516666860000, 9.079e-05, 9.079e-05, 9.03e-05, 9.03e-05, 646.95527387], [1516666920000, 9.069e-05, 9.069e-05, 9.027e-05, 9.069e-05, 1642.39361779], [1516666980000, 9.069e-05, 9.069e-05, 8.995e-05, 9.027e-05, 3100.85575603], [1516667040000, 9.027e-05, 9.027e-05, 8.995e-05, 9.027e-05, 2986.67997452], [1516667100000, 9.027e-05, 9.027e-05, 8.995e-05, 9.027e-05, 1372.45117854], [1516667160000, 9.025e-05, 9.025e-05, 9.025e-05, 9.025e-05, 863.89674937], [1516667220000, 9.025e-05, 9.027e-05, 8.996e-05, 8.996e-05, 308.10512923], [1516667280000, 9.027e-05, 9.093e-05, 8.998e-05, 9.093e-05, 246.18745942], [1516667400000, 9.093e-05, 9.093e-05, 8.999e-05, 9.086e-05, 337.02170912], [1516667460000, 9.083e-05, 9.083e-05, 8.995e-05, 9e-05, 6164.86727884], [1516667520000, 9e-05, 9.068e-05, 8.97e-05, 9e-05, 3748.92504173], [1516667580000, 9e-05, 9.056e-05, 8.97e-05, 9.056e-05, 1958.44208849], [1516667640000, 9.056e-05, 9.056e-05, 8.918e-05, 8.918e-05, 17300.47199726], [1516667700000, 8.938e-05, 8.978e-05, 8.919e-05, 8.923e-05, 7099.47204876], [1516667760000, 9.031e-05, 9.032e-05, 8.936e-05, 8.936e-05, 199.40757545], [1516667820000, 8.937e-05, 8.997e-05, 8.936e-05, 8.997e-05, 799.92083291], [1516667880000, 9.006e-05, 9.006e-05, 9.006e-05, 9.006e-05, 111.00011], [1516667940000, 9.006e-05, 9.006e-05, 9.003e-05, 9.004e-05, 135.7925494], [1516668000000, 8.99e-05, 9e-05, 8.99e-05, 9e-05, 874.12000299], [1516668060000, 8.942e-05, 8.993e-05, 8.942e-05, 8.993e-05, 287.16503303], [1516668120000, 8.991e-05, 8.991e-05, 8.991e-05, 8.991e-05, 122.54807216], [1516668180000, 8.987e-05, 8.991e-05, 8.987e-05, 8.99e-05, 1487.81814099], [1516668240000, 8.942e-05, 9.043e-05, 8.918e-05, 9.043e-05, 1415.64220632], [1516668300000, 9.04e-05, 9.04e-05, 9.04e-05, 9.04e-05, 74.87331696], [1516668360000, 9.025e-05, 9.025e-05, 8.924e-05, 9.025e-05, 355.33666977], [1516668420000, 9.025e-05, 9.025e-05, 9.015e-05, 9.015e-05, 1755.83784888], [1516668480000, 9.014e-05, 9.016e-05, 9.013e-05, 9.013e-05, 1662.71623622], [1516668540000, 8.926e-05, 9.019e-05, 8.926e-05, 9.019e-05, 134.09284843], [1516668600000, 9.015e-05, 9.015e-05, 8.934e-05, 8.934e-05, 145.07021802], [1516668660000, 8.92e-05, 9.011e-05, 8.92e-05, 9.011e-05, 1282.22243828], [1516668720000, 9.011e-05, 9.013e-05, 8.927e-05, 9.008e-05, 1568.02888079], [1516668780000, 8.926e-05, 8.996e-05, 8.921e-05, 8.921e-05, 1138.60195685], [1516668840000, 8.921e-05, 8.99e-05, 8.921e-05, 8.988e-05, 330.46229299], [1516668900000, 8.985e-05, 8.996e-05, 8.921e-05, 8.921e-05, 879.14551391], [1516668960000, 8.97e-05, 8.97e-05, 8.921e-05, 8.97e-05, 2042.95898696], [1516669020000, 8.922e-05, 8.969e-05, 8.919e-05, 8.969e-05, 2241.95056615], [1516669080000, 8.969e-05, 8.969e-05, 8.919e-05, 8.919e-05, 6030.73670679], [1516669140000, 8.968e-05, 8.97e-05, 8.919e-05, 8.97e-05, 169.76311884], [1516669200000, 8.97e-05, 8.97e-05, 8.923e-05, 8.923e-05, 123.09426371], [1516669260000, 8.965e-05, 8.97e-05, 8.965e-05, 8.97e-05, 75.58667895], [1516669320000, 8.97e-05, 8.97e-05, 8.97e-05, 8.97e-05, 78.7569239], [1516669380000, 8.926e-05, 8.97e-05, 8.925e-05, 8.97e-05, 3923.33635781], [1516669440000, 8.969e-05, 8.969e-05, 8.969e-05, 8.969e-05, 2927.63462746], [1516669500000, 9.015e-05, 9.015e-05, 9.015e-05, 9.015e-05, 11.0926234], [1516669560000, 9.001e-05, 9.001e-05, 8.969e-05, 8.969e-05, 324.59967772], [1516669620000, 8.969e-05, 9.053e-05, 8.969e-05, 9.053e-05, 6031.88131095], [1516669680000, 9.049e-05, 9.049e-05, 9.038e-05, 9.038e-05, 1753.06052944], [1516669740000, 9.034e-05, 9.034e-05, 9.034e-05, 9.034e-05, 110.66844], [1516669800000, 9.045e-05, 9.048e-05, 8.919e-05, 8.919e-05, 1238.90704505], [1516669920000, 8.999e-05, 8.999e-05, 8.931e-05, 8.994e-05, 1792.96999087], [1516669980000, 8.995e-05, 8.995e-05, 8.995e-05, 8.995e-05, 1215.64200386], [1516670040000, 8.995e-05, 9.023e-05, 8.994e-05, 8.994e-05, 483.99628403], [1516670100000, 9.023e-05, 9.023e-05, 8.994e-05, 8.994e-05, 621.76005701], [1516670160000, 9.013e-05, 9.013e-05, 8.994e-05, 8.994e-05, 756.61717539], [1516670220000, 8.993e-05, 8.994e-05, 8.993e-05, 8.994e-05, 89.4358603], [1516670280000, 8.994e-05, 8.994e-05, 8.994e-05, 8.994e-05, 30.0], [1516670340000, 8.993e-05, 8.994e-05, 8.993e-05, 8.994e-05, 339.65943536], [1516670400000, 8.994e-05, 9.066e-05, 8.923e-05, 8.927e-05, 7217.3994474], [1516670460000, 8.927e-05, 8.927e-05, 8.918e-05, 8.918e-05, 1300.0], [1516670520000, 8.949e-05, 8.949e-05, 8.948e-05, 8.949e-05, 147.56213022], [1516670580000, 8.949e-05, 9.051e-05, 8.949e-05, 9.051e-05, 1660.60236069], [1516670640000, 9.055e-05, 9.077e-05, 9.055e-05, 9.077e-05, 1003.00100299], [1516670700000, 9.055e-05, 9.067e-05, 9.055e-05, 9.067e-05, 6102.08898219], [1516670760000, 8.955e-05, 9.061e-05, 8.924e-05, 8.94e-05, 802.56582018], [1516670880000, 9.031e-05, 9.031e-05, 9.016e-05, 9.025e-05, 542.82397419], [1516671000000, 9.014e-05, 9.022e-05, 9.014e-05, 9.015e-05, 490.99150619], [1516671060000, 8.949e-05, 9.028e-05, 8.941e-05, 9.028e-05, 699.1510778], [1516671120000, 8.939e-05, 8.944e-05, 8.939e-05, 8.944e-05, 3107.98926642], [1516671180000, 9.001e-05, 9.001e-05, 9.001e-05, 9.001e-05, 218.97880807], [1516671240000, 9.013e-05, 9.042e-05, 9.013e-05, 9.042e-05, 20.061003], [1516671360000, 9.041e-05, 9.074e-05, 9.033e-05, 9.033e-05, 492.55634704], [1516671420000, 9.032e-05, 9.033e-05, 9.032e-05, 9.033e-05, 1887.74428216], [1516671480000, 9.032e-05, 9.032e-05, 8.957e-05, 8.957e-05, 1134.39623286], [1516671540000, 9.032e-05, 9.033e-05, 9.032e-05, 9.033e-05, 20.061003], [1516671600000, 9.033e-05, 9.033e-05, 8.957e-05, 8.957e-05, 2279.20603094], [1516671660000, 8.957e-05, 9.042e-05, 8.957e-05, 9.019e-05, 1142.31565907], [1516671720000, 9.019e-05, 9.019e-05, 8.957e-05, 8.957e-05, 844.20058666], [1516671780000, 9.018e-05, 9.059e-05, 9.018e-05, 9.059e-05, 3745.01927521], [1516671840000, 9.054e-05, 9.054e-05, 9.043e-05, 9.043e-05, 1398.03895159], [1516671900000, 9.043e-05, 9.043e-05, 9.043e-05, 9.043e-05, 8.30452118], [1516671960000, 8.96e-05, 8.96e-05, 8.959e-05, 8.959e-05, 55.09284843], [1516672020000, 8.961e-05, 9.08e-05, 8.961e-05, 9.08e-05, 99.10424159], [1516672080000, 9.067e-05, 9.067e-05, 9.067e-05, 9.067e-05, 19.0363096], [1516672140000, 9.002e-05, 9.078e-05, 9.001e-05, 9.078e-05, 2717.09035232], [1516672200000, 9.078e-05, 9.078e-05, 9.001e-05, 9.071e-05, 3300.34654213], [1516672260000, 9.002e-05, 9.002e-05, 9.001e-05, 9.001e-05, 985.32593331], [1516672320000, 9.071e-05, 9.072e-05, 9.001e-05, 9.001e-05, 2133.44901944], [1516672380000, 9.002e-05, 9.002e-05, 9.001e-05, 9.001e-05, 1751.76309626], [1516672440000, 9.027e-05, 9.068e-05, 9.027e-05, 9.027e-05, 3160.05745585], [1516672500000, 9.027e-05, 9.027e-05, 9.027e-05, 9.027e-05, 37.04690445], [1516672620000, 9.025e-05, 9.025e-05, 9.025e-05, 9.025e-05, 371.95886607], [1516672680000, 9.025e-05, 9.025e-05, 9.025e-05, 9.025e-05, 73.70184213], [1516672740000, 9.022e-05, 9.023e-05, 9.022e-05, 9.023e-05, 564.69789345], [1516672860000, 9.021e-05, 9.027e-05, 9.021e-05, 9.027e-05, 3693.64818123], [1516672920000, 9.072e-05, 9.072e-05, 9.013e-05, 9.072e-05, 580.56405292], [1516672980000, 9.072e-05, 9.076e-05, 9.013e-05, 9.076e-05, 271.8880573], [1516673040000, 9.076e-05, 9.076e-05, 9.013e-05, 9.076e-05, 723.69999923], [1516673100000, 9.013e-05, 9.013e-05, 9.013e-05, 9.013e-05, 217.54845806], [1516673160000, 9.073e-05, 9.074e-05, 9.073e-05, 9.074e-05, 550.29400155], [1516673220000, 9.074e-05, 9.074e-05, 9.074e-05, 9.074e-05, 10.03100299], [1516673280000, 9.013e-05, 9.07e-05, 9.013e-05, 9.07e-05, 283.33457495], [1516673340000, 9.069e-05, 9.076e-05, 9.069e-05, 9.076e-05, 25.076003], [1516673400000, 9.076e-05, 9.076e-05, 9.05e-05, 9.05e-05, 422.80164646], [1516673460000, 9.05e-05, 9.07e-05, 9.05e-05, 9.07e-05, 1296.58949793], [1516673520000, 9.07e-05, 9.079e-05, 9.05e-05, 9.05e-05, 2753.63445803], [1516673580000, 9.077e-05, 9.1e-05, 9.077e-05, 9.1e-05, 21220.61834238], [1516673640000, 9.078e-05, 9.099e-05, 9.077e-05, 9.077e-05, 567.93520905], [1516673700000, 9.077e-05, 9.077e-05, 9.002e-05, 9.002e-05, 4038.46512133], [1516673760000, 9.097e-05, 9.099e-05, 9.05e-05, 9.099e-05, 985.63885621], [1516673820000, 9.099e-05, 9.099e-05, 9.099e-05, 9.099e-05, 374.07500299], [1516673880000, 9.098e-05, 9.099e-05, 9.098e-05, 9.099e-05, 70.5994804], [1516673940000, 9.099e-05, 9.099e-05, 9.099e-05, 9.099e-05, 126.35187834], [1516674000000, 9.099e-05, 9.099e-05, 9.098e-05, 9.099e-05, 273.28965077], [1516674060000, 9.099e-05, 9.099e-05, 9.099e-05, 9.099e-05, 372.41462197], [1516674120000, 9.099e-05, 9.099e-05, 9.099e-05, 9.099e-05, 22.42659753], [1516674180000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 759.1408629], [1516674240000, 9.1e-05, 9.143e-05, 9.1e-05, 9.143e-05, 2205.8826627], [1516674300000, 9.105e-05, 9.105e-05, 9.105e-05, 9.105e-05, 61.32233247], [1516674360000, 9.143e-05, 9.144e-05, 9.143e-05, 9.144e-05, 7954.72905846], [1516674420000, 9.143e-05, 9.143e-05, 9.143e-05, 9.143e-05, 613.24388133], [1516674480000, 9.143e-05, 9.143e-05, 9.143e-05, 9.143e-05, 6.26134705], [1516674600000, 9.144e-05, 9.145e-05, 8.949e-05, 9.026e-05, 5078.90555644], [1516674660000, 9.092e-05, 9.132e-05, 9.026e-05, 9.026e-05, 1040.80706517], [1516674720000, 9.13e-05, 9.13e-05, 8.999e-05, 8.999e-05, 405.76053123], [1516674780000, 9.114e-05, 9.116e-05, 8.999e-05, 8.999e-05, 921.4547517], [1516674840000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 58.38287524], [1516674960000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 166.27497912], [1516675020000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 50.0], [1516675080000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 703.1405341], [1516675140000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 1471.23166759], [1516675200000, 9.09e-05, 9.09e-05, 9.09e-05, 9.09e-05, 266.59544475], [1516675260000, 9.089e-05, 9.145e-05, 9.089e-05, 9.145e-05, 3310.77748927], [1516675320000, 9.1e-05, 9.144e-05, 9.1e-05, 9.144e-05, 769.88097131], [1516675440000, 9.143e-05, 9.143e-05, 9.143e-05, 9.143e-05, 73.90533262], [1516675620000, 9.141e-05, 9.143e-05, 9.141e-05, 9.143e-05, 406.74361283], [1516675740000, 9.142e-05, 9.143e-05, 9.026e-05, 9.143e-05, 1411.89579828], [1516675800000, 9.028e-05, 9.029e-05, 9.028e-05, 9.029e-05, 266.5902952], [1516675860000, 9.14e-05, 9.141e-05, 9.035e-05, 9.035e-05, 3698.853913], [1516675920000, 9.141e-05, 9.141e-05, 9.001e-05, 9.139e-05, 1153.33227291], [1516675980000, 9.048e-05, 9.048e-05, 9.048e-05, 9.048e-05, 7.88752644], [1516676040000, 9.048e-05, 9.132e-05, 9.048e-05, 9.132e-05, 404.47592922], [1516676100000, 9.129e-05, 9.129e-05, 9.129e-05, 9.129e-05, 13.36332973], [1516676280000, 9.048e-05, 9.126e-05, 9.048e-05, 9.126e-05, 429.77769803], [1516676340000, 9.128e-05, 9.139e-05, 9.128e-05, 9.139e-05, 449.2344837], [1516676400000, 9.136e-05, 9.136e-05, 9.136e-05, 9.136e-05, 74.04828104], [1516676460000, 9.04e-05, 9.138e-05, 9.04e-05, 9.138e-05, 601.50100299], [1516676520000, 9.138e-05, 9.144e-05, 9.038e-05, 9.144e-05, 1689.53459568], [1516676580000, 9.038e-05, 9.128e-05, 9.006e-05, 9.128e-05, 1378.89135657], [1516676640000, 9.127e-05, 9.144e-05, 9.127e-05, 9.144e-05, 50.151003], [1516676700000, 9.127e-05, 9.145e-05, 9.127e-05, 9.144e-05, 615.54164628], [1516676760000, 9.144e-05, 9.144e-05, 9.144e-05, 9.144e-05, 203.31706877], [1516676820000, 9.142e-05, 9.143e-05, 9.142e-05, 9.143e-05, 90.84482101], [1516676880000, 9.142e-05, 9.144e-05, 9.038e-05, 9.038e-05, 1941.27315879], [1516676940000, 9.141e-05, 9.145e-05, 9e-05, 9.145e-05, 3497.48912257], [1516677000000, 9.113e-05, 9.113e-05, 9.113e-05, 9.113e-05, 43.19409072], [1516677060000, 9.107e-05, 9.107e-05, 9.106e-05, 9.106e-05, 116.58311105], [1516677120000, 9.082e-05, 9.103e-05, 9.082e-05, 9.103e-05, 529.44346853], [1516677180000, 9.103e-05, 9.113e-05, 9.103e-05, 9.113e-05, 103.73530173], [1516677240000, 9.139e-05, 9.139e-05, 9.103e-05, 9.103e-05, 4933.65351081], [1516677300000, 9.142e-05, 9.145e-05, 9.068e-05, 9.068e-05, 3875.93825904], [1516677360000, 9.106e-05, 9.106e-05, 9.106e-05, 9.106e-05, 273.0], [1516677420000, 9.069e-05, 9.143e-05, 9.068e-05, 9.143e-05, 4619.59624977], [1516677480000, 9.106e-05, 9.43e-05, 9.106e-05, 9.278e-05, 161259.96289412], [1516677540000, 9.292e-05, 9.445e-05, 9.055e-05, 9.055e-05, 67840.65728531], [1516677600000, 9.065e-05, 9.367e-05, 9.065e-05, 9.319e-05, 4094.16928704], [1516677660000, 9.382e-05, 9.45e-05, 9.193e-05, 9.255e-05, 31299.96819165], [1516677720000, 9.269e-05, 9.27e-05, 9.256e-05, 9.269e-05, 454.92827579], [1516677780000, 9.27e-05, 9.441e-05, 9.269e-05, 9.269e-05, 3564.49046931], [1516677840000, 9.249e-05, 9.269e-05, 9.204e-05, 9.269e-05, 3751.54598294], [1516677900000, 9.3e-05, 9.5e-05, 9.204e-05, 9.497e-05, 148890.33687976], [1516677960000, 9.472e-05, 9.87e-05, 9.25e-05, 9.845e-05, 137828.83174497], [1516678020000, 9.845e-05, 0.00010157, 9.519e-05, 9.713e-05, 226650.9380942], [1516678080000, 9.713e-05, 9.928e-05, 9.686e-05, 9.785e-05, 33972.45201877], [1516678140000, 9.785e-05, 9.806e-05, 9.604e-05, 9.775e-05, 65246.51501322], [1516678200000, 9.774e-05, 9.774e-05, 9.617e-05, 9.65e-05, 35697.44747338], [1516678260000, 9.759e-05, 9.759e-05, 9.621e-05, 9.648e-05, 32959.24514112], [1516678320000, 9.631e-05, 9.648e-05, 9.3e-05, 9.499e-05, 63189.29679195], [1516678380000, 9.44e-05, 9.623e-05, 9.412e-05, 9.446e-05, 58948.99596999], [1516678440000, 9.446e-05, 9.502e-05, 9.444e-05, 9.502e-05, 1131.98135492], [1516678500000, 9.502e-05, 9.535e-05, 9.465e-05, 9.502e-05, 10411.92683432], [1516678560000, 9.55e-05, 9.694e-05, 9.505e-05, 9.63e-05, 20467.29021648], [1516678620000, 9.63e-05, 9.757e-05, 9.501e-05, 9.6e-05, 10417.33438952], [1516678680000, 9.6e-05, 9.799e-05, 9.578e-05, 9.788e-05, 11866.34117563], [1516678740000, 9.788e-05, 9.788e-05, 9.689e-05, 9.69e-05, 845.68273054], [1516678800000, 9.69e-05, 9.787e-05, 9.69e-05, 9.695e-05, 1671.61942337], [1516678860000, 9.695e-05, 9.78e-05, 9.603e-05, 9.605e-05, 2251.66465182], [1516678920000, 9.697e-05, 9.9e-05, 9.697e-05, 9.772e-05, 38789.77123972], [1516678980000, 9.772e-05, 9.937e-05, 9.758e-05, 9.937e-05, 67511.50023713], [1516679040000, 9.937e-05, 9.937e-05, 9.76e-05, 9.922e-05, 19586.53295803], [1516679100000, 9.918e-05, 9.918e-05, 9.78e-05, 9.876e-05, 1362.78518129], [1516679160000, 9.783e-05, 9.86e-05, 9.657e-05, 9.657e-05, 4560.56253218], [1516679220000, 9.661e-05, 9.766e-05, 9.6e-05, 9.766e-05, 8593.87850625], [1516679280000, 9.76e-05, 9.87e-05, 9.76e-05, 9.765e-05, 21409.91088135], [1516679340000, 9.763e-05, 9.765e-05, 9.658e-05, 9.765e-05, 2840.2145882], [1516679400000, 9.765e-05, 9.765e-05, 9.727e-05, 9.727e-05, 783.49107035], [1516679460000, 9.616e-05, 9.762e-05, 9.616e-05, 9.711e-05, 7407.68279284], [1516679520000, 9.711e-05, 9.867e-05, 9.709e-05, 9.71e-05, 2244.8222012], [1516679580000, 9.71e-05, 9.84e-05, 9.68e-05, 9.713e-05, 4972.92749017], [1516679640000, 9.711e-05, 9.84e-05, 9.711e-05, 9.839e-05, 1661.12034455], [1516679700000, 9.777e-05, 9.833e-05, 9.682e-05, 9.712e-05, 4243.98362125], [1516679760000, 9.772e-05, 9.777e-05, 9.77e-05, 9.772e-05, 5191.17143403], [1516679820000, 9.77e-05, 9.777e-05, 9.713e-05, 9.777e-05, 3083.11422448], [1516679880000, 9.776e-05, 9.776e-05, 9.7e-05, 9.7e-05, 686.62835252], [1516679940000, 9.767e-05, 9.767e-05, 9.623e-05, 9.63e-05, 46440.39398628], [1516680000000, 9.758e-05, 9.758e-05, 9.623e-05, 9.747e-05, 7197.09442847], [1516680060000, 9.636e-05, 9.636e-05, 9.635e-05, 9.635e-05, 209.46907498], [1516680120000, 9.694e-05, 9.694e-05, 9.635e-05, 9.649e-05, 1924.56261478], [1516680180000, 9.635e-05, 9.635e-05, 9.601e-05, 9.602e-05, 6871.93616071], [1516680240000, 9.602e-05, 9.755e-05, 9.601e-05, 9.604e-05, 11587.74541929], [1516680300000, 9.751e-05, 9.792e-05, 9.619e-05, 9.621e-05, 80416.89726853], [1516680360000, 9.778e-05, 0.00010157, 9.778e-05, 9.975e-05, 63491.99719375], [1516680420000, 9.975e-05, 0.00010146, 9.937e-05, 9.937e-05, 17887.95953649], [1516680480000, 9.833e-05, 9.938e-05, 9.81e-05, 9.833e-05, 5012.83920934], [1516680540000, 9.833e-05, 9.937e-05, 9.81e-05, 9.937e-05, 5118.6278126], [1516680600000, 9.81e-05, 9.921e-05, 9.677e-05, 9.81e-05, 1716.67528924], [1516680660000, 9.907e-05, 9.911e-05, 9.752e-05, 9.752e-05, 186.88829214], [1516680720000, 9.764e-05, 9.789e-05, 9.763e-05, 9.789e-05, 899.59039747], [1516680780000, 9.79e-05, 9.839e-05, 9.79e-05, 9.826e-05, 1969.66928546], [1516680840000, 9.827e-05, 9.827e-05, 9.8e-05, 9.8e-05, 3730.71707543], [1516680900000, 9.816e-05, 9.825e-05, 9.815e-05, 9.815e-05, 564.99518456], [1516680960000, 9.8e-05, 9.816e-05, 9.789e-05, 9.789e-05, 1724.14282515], [1516681020000, 9.789e-05, 9.815e-05, 9.789e-05, 9.815e-05, 10312.48175507], [1516681080000, 9.815e-05, 9.856e-05, 9.814e-05, 9.856e-05, 4666.17594356], [1516681140000, 9.864e-05, 9.864e-05, 9.819e-05, 9.819e-05, 7878.84407543], [1516681200000, 9.82e-05, 9.915e-05, 9.82e-05, 9.825e-05, 3322.65577227], [1516681260000, 9.825e-05, 9.898e-05, 9.814e-05, 9.814e-05, 34554.7565935], [1516681320000, 9.74e-05, 9.898e-05, 9.675e-05, 9.898e-05, 2913.99712796], [1516681380000, 9.89e-05, 9.898e-05, 9.745e-05, 9.894e-05, 2297.12225372], [1516681440000, 9.763e-05, 9.893e-05, 9.747e-05, 9.766e-05, 52531.46022134], [1516681500000, 9.761e-05, 9.847e-05, 9.634e-05, 9.638e-05, 12638.17972298], [1516681560000, 9.638e-05, 9.745e-05, 9.622e-05, 9.622e-05, 11011.73986446], [1516681620000, 9.745e-05, 9.745e-05, 9.62e-05, 9.743e-05, 3179.61376512], [1516681680000, 9.72e-05, 9.72e-05, 9.631e-05, 9.631e-05, 32854.19615618], [1516681740000, 9.72e-05, 9.72e-05, 9.72e-05, 9.72e-05, 297.01983912], [1516681800000, 9.72e-05, 9.72e-05, 9.633e-05, 9.633e-05, 784.28608061], [1516681860000, 9.719e-05, 9.72e-05, 9.719e-05, 9.72e-05, 51.44032922], [1516681920000, 9.635e-05, 9.721e-05, 9.635e-05, 9.72e-05, 4004.78064693], [1516681980000, 9.72e-05, 9.72e-05, 9.72e-05, 9.72e-05, 191.62436597], [1516682040000, 9.719e-05, 9.719e-05, 9.7e-05, 9.7e-05, 1303.84229165], [1516682100000, 9.635e-05, 9.7e-05, 9.635e-05, 9.7e-05, 471.05154683], [1516682160000, 9.635e-05, 9.7e-05, 9.635e-05, 9.7e-05, 2817.37444371], [1516682220000, 9.635e-05, 9.7e-05, 9.635e-05, 9.7e-05, 1953.83159737], [1516682280000, 9.632e-05, 9.632e-05, 9.632e-05, 9.632e-05, 53.26724386], [1516682340000, 9.632e-05, 9.632e-05, 9.632e-05, 9.632e-05, 39.81517577], [1516682400000, 9.632e-05, 9.632e-05, 9.621e-05, 9.632e-05, 509.10561], [1516682460000, 9.632e-05, 9.651e-05, 9.632e-05, 9.651e-05, 580.6806046], [1516682520000, 9.652e-05, 9.698e-05, 9.632e-05, 9.652e-05, 7964.48229795], [1516682580000, 9.621e-05, 9.7e-05, 9.621e-05, 9.7e-05, 484.66032055], [1516682640000, 9.622e-05, 9.7e-05, 9.621e-05, 9.7e-05, 258.25357913], [1516682700000, 9.623e-05, 9.623e-05, 9.623e-05, 9.623e-05, 40.0], [1516682820000, 9.698e-05, 9.7e-05, 9.697e-05, 9.697e-05, 130.70826961], [1516682880000, 9.697e-05, 9.7e-05, 9.623e-05, 9.7e-05, 506.25769545], [1516682940000, 9.623e-05, 9.699e-05, 9.551e-05, 9.694e-05, 2718.68614471], [1516683000000, 9.696e-05, 9.714e-05, 9.695e-05, 9.714e-05, 1886.17972945], [1516683060000, 9.719e-05, 9.845e-05, 9.694e-05, 9.694e-05, 3339.28050589], [1516683120000, 9.74e-05, 9.74e-05, 9.695e-05, 9.698e-05, 302.68145711], [1516683180000, 9.697e-05, 9.697e-05, 9.697e-05, 9.697e-05, 6502.71614703], [1516683240000, 9.698e-05, 9.839e-05, 9.698e-05, 9.739e-05, 104.80020817], [1516683300000, 9.829e-05, 9.829e-05, 9.739e-05, 9.739e-05, 1566.82913682], [1516683360000, 9.697e-05, 9.815e-05, 9.574e-05, 9.574e-05, 3427.1737657], [1516683420000, 9.585e-05, 9.78e-05, 9.585e-05, 9.78e-05, 762.19168783], [1516683480000, 9.62e-05, 9.773e-05, 9.62e-05, 9.627e-05, 230.79354308], [1516683540000, 9.591e-05, 9.744e-05, 9.588e-05, 9.59e-05, 675.62772186], [1516683600000, 9.59e-05, 9.59e-05, 9.59e-05, 9.59e-05, 20.13931665], [1516683660000, 9.595e-05, 9.731e-05, 9.595e-05, 9.595e-05, 1659.57646832], [1516683720000, 9.638e-05, 9.638e-05, 9.592e-05, 9.596e-05, 114.65384174], [1516683780000, 9.71e-05, 9.712e-05, 9.632e-05, 9.632e-05, 325.05152486], [1516683840000, 9.632e-05, 9.713e-05, 9.631e-05, 9.713e-05, 565.56864409], [1516683900000, 9.712e-05, 9.712e-05, 9.555e-05, 9.712e-05, 1800.78311778], [1516683960000, 9.565e-05, 9.711e-05, 9.565e-05, 9.711e-05, 325.68829039], [1516684080000, 9.59e-05, 9.59e-05, 9.59e-05, 9.59e-05, 346.70607214], [1516684140000, 9.708e-05, 9.71e-05, 9.602e-05, 9.602e-05, 3969.877], [1516684200000, 9.603e-05, 9.603e-05, 9.579e-05, 9.58e-05, 3687.17475486], [1516684260000, 9.58e-05, 9.68e-05, 9.579e-05, 9.68e-05, 1827.05842492], [1516684320000, 9.579e-05, 9.65e-05, 9.579e-05, 9.65e-05, 120.32391572], [1516684380000, 9.6e-05, 9.6e-05, 9.579e-05, 9.579e-05, 1030.50708626], [1516684440000, 9.579e-05, 9.65e-05, 9.579e-05, 9.579e-05, 1526.53990942], [1516684500000, 9.579e-05, 9.58e-05, 9.579e-05, 9.58e-05, 554.35716168], [1516684620000, 9.641e-05, 9.642e-05, 9.634e-05, 9.634e-05, 517.78524412], [1516684680000, 9.652e-05, 9.678e-05, 9.555e-05, 9.555e-05, 1300.3009686], [1516684740000, 9.64e-05, 9.64e-05, 9.64e-05, 9.64e-05, 72.7007061], [1516684800000, 9.556e-05, 9.598e-05, 9.556e-05, 9.598e-05, 113.07755222], [1516684860000, 9.6e-05, 9.601e-05, 9.577e-05, 9.601e-05, 1746.4369837], [1516684920000, 9.61e-05, 9.644e-05, 9.61e-05, 9.644e-05, 2727.29950193], [1516684980000, 9.644e-05, 9.645e-05, 9.577e-05, 9.577e-05, 7446.03884601], [1516685040000, 9.645e-05, 9.645e-05, 9.644e-05, 9.645e-05, 1194.06323486], [1516685100000, 9.644e-05, 9.644e-05, 9.644e-05, 9.644e-05, 462.38151538], [1516685160000, 9.643e-05, 9.644e-05, 9.643e-05, 9.644e-05, 71.21400299], [1516685220000, 9.577e-05, 9.577e-05, 9.577e-05, 9.577e-05, 186.05471622], [1516685280000, 9.644e-05, 9.644e-05, 9.644e-05, 9.644e-05, 72.41810238], [1516685340000, 9.577e-05, 9.639e-05, 9.577e-05, 9.639e-05, 468.38178948], [1516685400000, 9.577e-05, 9.577e-05, 9.577e-05, 9.577e-05, 927.7330866], [1516685460000, 9.577e-05, 9.577e-05, 9.577e-05, 9.577e-05, 25.34490754], [1516685520000, 9.577e-05, 9.577e-05, 9.576e-05, 9.577e-05, 64.53001983], [1516685580000, 9.577e-05, 9.577e-05, 9.577e-05, 9.577e-05, 389.28879221], [1516685640000, 9.577e-05, 9.577e-05, 9.576e-05, 9.577e-05, 2161.42522119], [1516685700000, 9.577e-05, 9.65e-05, 9.577e-05, 9.646e-05, 11849.48153545], [1516685760000, 9.655e-05, 9.655e-05, 9.646e-05, 9.655e-05, 74.48146154], [1516685820000, 9.577e-05, 9.679e-05, 9.576e-05, 9.679e-05, 3477.87042476], [1516685880000, 9.679e-05, 9.7e-05, 9.676e-05, 9.676e-05, 983.69762395], [1516685940000, 9.7e-05, 9.71e-05, 9.594e-05, 9.594e-05, 1587.17479707], [1516686000000, 9.71e-05, 9.735e-05, 9.71e-05, 9.713e-05, 873.56999847], [1516686060000, 9.713e-05, 9.713e-05, 9.605e-05, 9.605e-05, 90.78498564], [1516686120000, 9.661e-05, 9.661e-05, 9.661e-05, 9.661e-05, 138.70329656], [1516686180000, 9.659e-05, 9.659e-05, 9.599e-05, 9.6e-05, 3267.73085222], [1516686240000, 9.6e-05, 9.6e-05, 9.594e-05, 9.594e-05, 400.0], [1516686300000, 9.695e-05, 9.695e-05, 9.584e-05, 9.695e-05, 658.89421434], [1516686360000, 9.693e-05, 9.693e-05, 9.693e-05, 9.693e-05, 10.0], [1516686420000, 9.64e-05, 9.686e-05, 9.64e-05, 9.686e-05, 114.69124043], [1516686480000, 9.679e-05, 9.68e-05, 9.679e-05, 9.68e-05, 65.51038261], [1516686540000, 9.64e-05, 9.64e-05, 9.639e-05, 9.64e-05, 9441.51160764], [1516686600000, 9.638e-05, 9.638e-05, 9.638e-05, 9.638e-05, 36.4172652], [1516686660000, 9.6e-05, 9.634e-05, 9.6e-05, 9.634e-05, 114.57728798], [1516686720000, 9.6e-05, 9.64e-05, 9.6e-05, 9.64e-05, 4465.02567679], [1516686780000, 9.639e-05, 9.64e-05, 9.6e-05, 9.6e-05, 504.81760828], [1516686840000, 9.639e-05, 9.64e-05, 9.639e-05, 9.64e-05, 2021.81364911], [1516686900000, 9.64e-05, 9.64e-05, 9.64e-05, 9.64e-05, 7235.06325715], [1516686960000, 9.639e-05, 9.64e-05, 9.639e-05, 9.64e-05, 72.64436681], [1516687020000, 9.6e-05, 9.64e-05, 9.556e-05, 9.637e-05, 7281.85335825], [1516687200000, 9.636e-05, 9.637e-05, 9.569e-05, 9.569e-05, 259.49339826], [1516687260000, 9.573e-05, 9.64e-05, 9.572e-05, 9.64e-05, 405.12356267], [1516687320000, 9.64e-05, 9.692e-05, 9.64e-05, 9.691e-05, 279.53791371], [1516687380000, 9.692e-05, 9.692e-05, 9.692e-05, 9.692e-05, 1579.92129542], [1516687440000, 9.692e-05, 9.692e-05, 9.692e-05, 9.692e-05, 74.38262782], [1516687500000, 9.692e-05, 9.727e-05, 9.692e-05, 9.727e-05, 503.02213059], [1516687560000, 9.694e-05, 9.727e-05, 9.694e-05, 9.727e-05, 160.91208762], [1516687620000, 9.736e-05, 9.866e-05, 9.736e-05, 9.741e-05, 2652.63189622], [1516687680000, 9.862e-05, 9.863e-05, 9.862e-05, 9.863e-05, 370.23910875], [1516687740000, 9.752e-05, 9.823e-05, 9.714e-05, 9.714e-05, 1081.78792611], [1516687800000, 9.714e-05, 9.817e-05, 9.714e-05, 9.816e-05, 1556.94393532], [1516687860000, 9.713e-05, 9.818e-05, 9.713e-05, 9.818e-05, 5963.15125452], [1516687920000, 9.818e-05, 9.876e-05, 9.714e-05, 9.714e-05, 16887.72456715], [1516687980000, 9.875e-05, 9.876e-05, 9.875e-05, 9.876e-05, 506.83750619], [1516688040000, 9.876e-05, 9.93e-05, 9.831e-05, 9.93e-05, 6341.79671429], [1516688100000, 9.92e-05, 9.94e-05, 9.92e-05, 9.94e-05, 5936.37556912], [1516688160000, 9.935e-05, 9.935e-05, 9.92e-05, 9.92e-05, 424.63098185], [1516688220000, 9.92e-05, 9.928e-05, 9.775e-05, 9.928e-05, 7939.01402626], [1516688280000, 9.928e-05, 9.989e-05, 9.755e-05, 9.989e-05, 14599.53936919], [1516688340000, 9.99e-05, 9.999e-05, 9.806e-05, 9.806e-05, 4368.70366565], [1516688400000, 9.984e-05, 9.984e-05, 9.856e-05, 9.856e-05, 314.77784108], [1516688460000, 9.866e-05, 0.000105, 9.866e-05, 0.00010114, 233381.90774139], [1516688520000, 0.00010002, 0.00010111, 9.872e-05, 9.893e-05, 12350.37599798], [1516688580000, 9.902e-05, 0.00010039, 9.902e-05, 9.926e-05, 1593.0215054], [1516688640000, 9.936e-05, 9.936e-05, 9.934e-05, 9.934e-05, 745.30883743], [1516688700000, 0.00010038, 0.00010038, 9.943e-05, 0.00010038, 97.17406796], [1516688760000, 0.00010008, 0.00010038, 9.951e-05, 9.952e-05, 17912.20249974], [1516688820000, 9.953e-05, 0.00010038, 9.951e-05, 9.953e-05, 1842.24520754], [1516688880000, 9.953e-05, 9.953e-05, 9.951e-05, 9.953e-05, 3330.44865872], [1516688940000, 9.953e-05, 9.953e-05, 9.951e-05, 9.951e-05, 5522.53217471], [1516689000000, 9.952e-05, 9.952e-05, 9.951e-05, 9.951e-05, 3830.05188664], [1516689060000, 9.952e-05, 0.00010045, 9.952e-05, 9.953e-05, 2856.03462388], [1516689120000, 9.953e-05, 0.00010043, 9.951e-05, 9.952e-05, 19233.89738236], [1516689180000, 9.952e-05, 0.0001004, 9.951e-05, 0.0001004, 3427.81121503], [1516689240000, 0.00010035, 0.00010037, 0.00010035, 0.00010035, 210.08552461], [1516689300000, 9.952e-05, 0.00010036, 9.951e-05, 9.951e-05, 27906.33854589], [1516689360000, 9.951e-05, 9.951e-05, 9.93e-05, 9.93e-05, 3723.31532445], [1516689420000, 9.93e-05, 0.00010044, 9.906e-05, 0.00010044, 4678.01730873], [1516689480000, 9.906e-05, 9.906e-05, 9.906e-05, 9.906e-05, 230.27754921], [1516689540000, 0.0001, 0.00010044, 9.919e-05, 9.921e-05, 12827.16065495], [1516689600000, 9.925e-05, 0.0001, 9.925e-05, 9.95e-05, 1710.01381176], [1516689660000, 9.95e-05, 9.996e-05, 9.93e-05, 9.93e-05, 10231.24798599], [1516689720000, 9.993e-05, 9.997e-05, 9.93e-05, 9.93e-05, 7318.40114162], [1516689780000, 9.93e-05, 9.93e-05, 9.912e-05, 9.912e-05, 1711.2561793], [1516689840000, 9.911e-05, 9.995e-05, 9.91e-05, 9.911e-05, 25803.80933563], [1516689900000, 9.912e-05, 9.993e-05, 9.91e-05, 9.953e-05, 11062.7413024], [1516689960000, 9.953e-05, 9.953e-05, 9.887e-05, 9.888e-05, 20428.16903059], [1516690020000, 9.909e-05, 9.91e-05, 9.702e-05, 9.836e-05, 28040.22905485], [1516690080000, 9.868e-05, 9.868e-05, 9.753e-05, 9.833e-05, 936.64185619], [1516690140000, 9.833e-05, 9.9e-05, 9.753e-05, 9.898e-05, 8945.82431367], [1516690200000, 9.888e-05, 9.898e-05, 9.882e-05, 9.898e-05, 20405.21985528], [1516690260000, 9.898e-05, 9.898e-05, 9.898e-05, 9.898e-05, 14.2712231], [1516690320000, 9.869e-05, 9.869e-05, 9.796e-05, 9.805e-05, 157.63528802], [1516690380000, 9.796e-05, 9.796e-05, 9.787e-05, 9.787e-05, 285.95315286], [1516690440000, 9.787e-05, 9.796e-05, 9.787e-05, 9.796e-05, 650.78895958], [1516690500000, 9.782e-05, 9.782e-05, 9.781e-05, 9.781e-05, 523.06912498], [1516690560000, 9.795e-05, 9.796e-05, 9.781e-05, 9.796e-05, 928.42509436], [1516690620000, 9.796e-05, 9.796e-05, 9.782e-05, 9.782e-05, 6657.33215348], [1516690680000, 9.805e-05, 9.805e-05, 9.805e-05, 9.805e-05, 18.37906572], [1516690740000, 9.839e-05, 9.839e-05, 9.839e-05, 9.839e-05, 8000.46617868], [1516690800000, 9.839e-05, 9.85e-05, 9.824e-05, 9.824e-05, 2395.5283443], [1516690860000, 9.839e-05, 9.85e-05, 9.824e-05, 9.85e-05, 887.54232974], [1516690920000, 9.85e-05, 9.953e-05, 9.85e-05, 9.953e-05, 1260.46621242], [1516690980000, 9.843e-05, 9.85e-05, 9.843e-05, 9.85e-05, 1164.54472166], [1516691040000, 9.897e-05, 9.949e-05, 9.897e-05, 9.949e-05, 688.27005527], [1516691100000, 9.897e-05, 9.897e-05, 9.897e-05, 9.897e-05, 103.06053349], [1516691160000, 9.897e-05, 9.951e-05, 9.896e-05, 9.939e-05, 413.54964287], [1516691220000, 9.938e-05, 9.939e-05, 9.896e-05, 9.897e-05, 598.32725108], [1516691280000, 9.85e-05, 9.897e-05, 9.85e-05, 9.897e-05, 2196.32032024], [1516691340000, 9.85e-05, 9.896e-05, 9.806e-05, 9.81e-05, 3216.73084879], [1516691400000, 9.896e-05, 9.897e-05, 9.807e-05, 9.808e-05, 2398.54691972], [1516691460000, 9.806e-05, 9.806e-05, 9.806e-05, 9.806e-05, 353.66238353], [1516691520000, 9.805e-05, 9.806e-05, 9.805e-05, 9.806e-05, 2191.08771578], [1516691580000, 9.805e-05, 9.805e-05, 9.73e-05, 9.73e-05, 5183.92206205], [1516691640000, 9.73e-05, 9.808e-05, 9.725e-05, 9.725e-05, 29455.34443612], [1516691700000, 9.8e-05, 9.8e-05, 9.726e-05, 9.726e-05, 8856.63196206], [1516691760000, 9.726e-05, 9.726e-05, 9.701e-05, 9.701e-05, 10464.50308552], [1516691820000, 9.701e-05, 9.726e-05, 9.7e-05, 9.7e-05, 9904.70230833], [1516691880000, 9.7e-05, 9.798e-05, 9.67e-05, 9.67e-05, 5291.75908795], [1516691940000, 9.794e-05, 9.794e-05, 9.639e-05, 9.639e-05, 1971.62682197], [1516692000000, 9.644e-05, 9.783e-05, 9.644e-05, 9.781e-05, 348.64562718], [1516692060000, 9.769e-05, 9.769e-05, 9.669e-05, 9.766e-05, 408.41377015], [1516692120000, 9.764e-05, 9.781e-05, 9.764e-05, 9.78e-05, 15818.68650805], [1516692180000, 9.766e-05, 9.781e-05, 9.766e-05, 9.781e-05, 8915.27166776], [1516692240000, 9.715e-05, 9.715e-05, 9.715e-05, 9.715e-05, 301.47651136], [1516692300000, 9.715e-05, 9.715e-05, 9.715e-05, 9.715e-05, 4030.85496637], [1516692360000, 9.715e-05, 9.781e-05, 9.715e-05, 9.75e-05, 3640.56170969], [1516692420000, 9.75e-05, 9.781e-05, 9.75e-05, 9.75e-05, 1843.57181574], [1516692480000, 9.781e-05, 9.781e-05, 9.75e-05, 9.75e-05, 314.58714804], [1516692540000, 9.751e-05, 9.781e-05, 9.75e-05, 9.781e-05, 19843.54799496], [1516692600000, 9.781e-05, 9.94e-05, 9.781e-05, 9.94e-05, 3760.25195613], [1516692660000, 9.938e-05, 9.939e-05, 9.78e-05, 9.807e-05, 1351.38655553], [1516692720000, 9.807e-05, 9.808e-05, 9.77e-05, 9.776e-05, 2333.94139323], [1516692780000, 9.801e-05, 9.85e-05, 9.801e-05, 9.81e-05, 2220.25621185], [1516692840000, 9.771e-05, 9.924e-05, 9.766e-05, 9.924e-05, 1413.99707077], [1516692900000, 9.781e-05, 9.781e-05, 9.777e-05, 9.777e-05, 356.03457238], [1516692960000, 9.782e-05, 9.782e-05, 9.757e-05, 9.782e-05, 581.34027225], [1516693020000, 9.782e-05, 9.782e-05, 9.757e-05, 9.757e-05, 1748.38308809], [1516693080000, 9.879e-05, 9.879e-05, 9.879e-05, 9.879e-05, 144.11433958], [1516693140000, 9.76e-05, 9.86e-05, 9.76e-05, 9.86e-05, 361.74945066], [1516693200000, 9.858e-05, 9.858e-05, 9.857e-05, 9.858e-05, 1098.03558475], [1516693260000, 9.808e-05, 9.842e-05, 9.765e-05, 9.765e-05, 366.59232003], [1516693320000, 9.765e-05, 9.765e-05, 9.765e-05, 9.765e-05, 5.12782421], [1516693380000, 9.766e-05, 9.85e-05, 9.765e-05, 9.765e-05, 2673.48500248], [1516693440000, 9.766e-05, 9.766e-05, 9.765e-05, 9.765e-05, 1141.13899996], [1516693500000, 9.767e-05, 9.842e-05, 9.767e-05, 9.842e-05, 172.50006213], [1516693560000, 9.767e-05, 9.767e-05, 9.765e-05, 9.765e-05, 162.86148278], [1516693620000, 9.765e-05, 9.765e-05, 9.765e-05, 9.765e-05, 107.0], [1516693680000, 9.8e-05, 9.844e-05, 9.765e-05, 9.765e-05, 789.81219809], [1516693740000, 9.787e-05, 9.788e-05, 9.787e-05, 9.787e-05, 1661.74391419], [1516693800000, 9.787e-05, 9.838e-05, 9.787e-05, 9.8e-05, 521.49872326], [1516693860000, 9.84e-05, 9.84e-05, 9.8e-05, 9.8e-05, 144.39854254], [1516693920000, 9.841e-05, 9.853e-05, 9.8e-05, 9.853e-05, 4309.9211333], [1516693980000, 9.8e-05, 9.879e-05, 9.8e-05, 9.8e-05, 823.21669149], [1516694040000, 9.879e-05, 9.879e-05, 9.879e-05, 9.879e-05, 1262.41240029], [1516694100000, 9.879e-05, 9.9e-05, 9.879e-05, 9.9e-05, 2146.91412467], [1516694160000, 9.9e-05, 9.909e-05, 9.85e-05, 9.9e-05, 1320.37827323], [1516694220000, 9.899e-05, 9.935e-05, 9.899e-05, 9.935e-05, 2076.303555], [1516694280000, 9.852e-05, 9.933e-05, 9.852e-05, 9.933e-05, 434.30353367], [1516694340000, 9.9e-05, 9.9e-05, 9.813e-05, 9.816e-05, 619.96417056], [1516694400000, 9.817e-05, 9.94e-05, 9.817e-05, 9.94e-05, 25314.47207089], [1516694460000, 9.824e-05, 9.824e-05, 9.824e-05, 9.824e-05, 195.0], [1516694520000, 9.824e-05, 9.824e-05, 9.824e-05, 9.824e-05, 14.5], [1516694580000, 9.839e-05, 9.842e-05, 9.839e-05, 9.842e-05, 428.64537081], [1516694640000, 9.845e-05, 9.845e-05, 9.845e-05, 9.845e-05, 308.36349958], [1516694700000, 9.821e-05, 9.821e-05, 9.821e-05, 9.821e-05, 100.0], [1516694760000, 9.844e-05, 9.844e-05, 9.844e-05, 9.844e-05, 2240.23517286], [1516694820000, 9.932e-05, 9.932e-05, 9.814e-05, 9.814e-05, 475.72504658], [1516694880000, 9.813e-05, 9.813e-05, 9.813e-05, 9.813e-05, 2246.14782232], [1516694940000, 9.844e-05, 9.844e-05, 9.815e-05, 9.815e-05, 3144.14952862], [1516695060000, 9.834e-05, 9.928e-05, 9.826e-05, 9.828e-05, 960.76573432], [1516695120000, 9.926e-05, 9.926e-05, 9.926e-05, 9.926e-05, 49.91341369], [1516695180000, 9.827e-05, 9.827e-05, 9.826e-05, 9.826e-05, 184.6175304], [1516695240000, 9.921e-05, 9.952e-05, 9.829e-05, 9.952e-05, 9160.02931121], [1516695300000, 9.952e-05, 0.00010005, 9.952e-05, 9.952e-05, 3212.46659376], [1516695360000, 9.873e-05, 9.875e-05, 9.873e-05, 9.875e-05, 77.43887286], [1516695420000, 9.882e-05, 9.937e-05, 9.879e-05, 9.937e-05, 435.12204043], [1516695480000, 9.952e-05, 0.0001002, 9.88e-05, 9.91e-05, 8358.25417325], [1516695540000, 9.911e-05, 9.911e-05, 9.835e-05, 9.835e-05, 1143.15302933], [1516695600000, 9.991e-05, 9.994e-05, 9.91e-05, 9.954e-05, 5728.51061999], [1516695660000, 9.954e-05, 0.00010038, 9.91e-05, 9.922e-05, 3072.75965102], [1516695720000, 9.93e-05, 9.933e-05, 9.928e-05, 9.933e-05, 2058.18333839], [1516695780000, 9.933e-05, 0.0001003, 9.913e-05, 9.914e-05, 4929.87551485], [1516695840000, 9.917e-05, 9.917e-05, 9.917e-05, 9.917e-05, 413.31877466], [1516695900000, 9.921e-05, 0.00010008, 9.921e-05, 9.921e-05, 597.06605903], [1516695960000, 9.921e-05, 9.998e-05, 9.921e-05, 9.998e-05, 8730.41075403], [1516696020000, 9.93e-05, 9.998e-05, 9.915e-05, 9.993e-05, 2157.40718706], [1516696080000, 9.993e-05, 9.993e-05, 9.991e-05, 9.992e-05, 218.0008048], [1516696140000, 9.99e-05, 9.99e-05, 9.93e-05, 9.93e-05, 27.07282963], [1516696200000, 9.93e-05, 9.93e-05, 9.928e-05, 9.928e-05, 2187.89084198], [1516696260000, 9.99e-05, 9.99e-05, 9.99e-05, 9.99e-05, 22.61788806], [1516696320000, 9.99e-05, 9.99e-05, 9.99e-05, 9.99e-05, 10.0], [1516696380000, 9.989e-05, 9.989e-05, 9.925e-05, 9.925e-05, 583.6469262], [1516696440000, 9.93e-05, 9.93e-05, 9.93e-05, 9.93e-05, 4445.43372513], [1516696500000, 9.93e-05, 9.978e-05, 9.93e-05, 9.978e-05, 1204.90137151], [1516696560000, 9.93e-05, 9.97e-05, 9.93e-05, 9.93e-05, 5156.54316867], [1516696620000, 9.93e-05, 9.96e-05, 9.93e-05, 9.96e-05, 2568.64898516], [1516696680000, 9.96e-05, 9.96e-05, 9.925e-05, 9.925e-05, 1045.00095659], [1516696740000, 9.925e-05, 9.925e-05, 9.925e-05, 9.925e-05, 9004.36021166], [1516696800000, 9.925e-05, 9.926e-05, 9.925e-05, 9.926e-05, 3300.5], [1516696860000, 9.93e-05, 9.93e-05, 9.926e-05, 9.93e-05, 525.35594821], [1516696920000, 9.926e-05, 9.952e-05, 9.925e-05, 9.952e-05, 5120.76275623], [1516696980000, 9.925e-05, 9.925e-05, 9.925e-05, 9.925e-05, 1176.422], [1516697040000, 9.928e-05, 9.928e-05, 9.925e-05, 9.928e-05, 234.98219], [1516697100000, 9.944e-05, 9.957e-05, 9.925e-05, 9.925e-05, 5508.54447939], [1516697160000, 9.925e-05, 9.94e-05, 9.925e-05, 9.926e-05, 8547.36458004], [1516697220000, 9.926e-05, 9.962e-05, 9.926e-05, 9.936e-05, 3119.10090881], [1516697280000, 9.936e-05, 9.98e-05, 9.936e-05, 9.98e-05, 2708.1981982], [1516697340000, 9.98e-05, 9.99e-05, 9.927e-05, 9.927e-05, 5985.43645424], [1516697400000, 9.927e-05, 9.931e-05, 9.927e-05, 9.931e-05, 4919.57214853], [1516697460000, 9.989e-05, 9.989e-05, 9.935e-05, 9.935e-05, 2052.61035112], [1516697520000, 9.936e-05, 9.936e-05, 9.936e-05, 9.936e-05, 160.42793705], [1516697580000, 9.936e-05, 0.00010005, 9.936e-05, 9.936e-05, 1661.68050274], [1516697640000, 9.935e-05, 9.935e-05, 9.93e-05, 9.93e-05, 232.09552357], [1516697700000, 9.93e-05, 0.00010005, 9.924e-05, 9.924e-05, 8104.95440144], [1516697760000, 9.924e-05, 0.00010025, 9.91e-05, 9.91e-05, 2867.88850262], [1516697820000, 9.91e-05, 0.00010024, 9.91e-05, 9.911e-05, 1163.3437355], [1516697880000, 9.911e-05, 9.911e-05, 9.84e-05, 9.84e-05, 3198.75491894], [1516697940000, 9.901e-05, 9.901e-05, 9.9e-05, 9.9e-05, 245.5148519], [1516698000000, 9.899e-05, 9.899e-05, 9.898e-05, 9.898e-05, 539.03649152], [1516698060000, 9.899e-05, 9.899e-05, 9.899e-05, 9.899e-05, 1679.51289007], [1516698120000, 9.899e-05, 9.91e-05, 9.898e-05, 9.898e-05, 6876.63877139], [1516698180000, 9.84e-05, 9.898e-05, 9.84e-05, 9.898e-05, 875.57859565], [1516698240000, 9.84e-05, 9.898e-05, 9.84e-05, 9.85e-05, 453.20680601], [1516698360000, 9.84e-05, 9.85e-05, 9.838e-05, 9.838e-05, 695.85732025], [1516698420000, 9.839e-05, 9.839e-05, 9.838e-05, 9.838e-05, 641.43778525], [1516698480000, 9.839e-05, 9.839e-05, 9.839e-05, 9.839e-05, 918.16029963], [1516698540000, 9.84e-05, 9.84e-05, 9.755e-05, 9.755e-05, 2605.316003], [1516698600000, 9.84e-05, 9.84e-05, 9.758e-05, 9.758e-05, 2910.63717398], [1516698660000, 9.758e-05, 9.8e-05, 9.758e-05, 9.8e-05, 1257.02345223], [1516698720000, 9.758e-05, 9.8e-05, 9.755e-05, 9.8e-05, 942.59655395], [1516698780000, 9.8e-05, 9.8e-05, 9.707e-05, 9.8e-05, 7815.10053236], [1516698840000, 9.734e-05, 9.95e-05, 9.734e-05, 9.948e-05, 672.7636999], [1516698900000, 9.898e-05, 9.898e-05, 9.894e-05, 9.898e-05, 111.06151299], [1516698960000, 9.898e-05, 9.937e-05, 9.898e-05, 9.937e-05, 60.01028665], [1516699020000, 9.929e-05, 9.929e-05, 9.797e-05, 9.802e-05, 647.13075615], [1516699080000, 9.919e-05, 9.919e-05, 9.737e-05, 9.9e-05, 985.35311253], [1516699140000, 9.886e-05, 9.886e-05, 9.848e-05, 9.848e-05, 204.77010215], [1516699200000, 9.845e-05, 9.944e-05, 9.845e-05, 9.934e-05, 225.20722879], [1516699260000, 9.928e-05, 9.928e-05, 9.922e-05, 9.922e-05, 106.41215881], [1516699320000, 9.917e-05, 9.918e-05, 9.916e-05, 9.916e-05, 367.57005882], [1516699380000, 9.907e-05, 9.907e-05, 9.9e-05, 9.9e-05, 800.12472455], [1516699440000, 9.885e-05, 9.885e-05, 9.885e-05, 9.885e-05, 150.0], [1516699500000, 9.883e-05, 9.883e-05, 9.781e-05, 9.781e-05, 324.46035375], [1516699560000, 9.781e-05, 9.781e-05, 9.71e-05, 9.71e-05, 1561.92731683], [1516699620000, 9.725e-05, 9.725e-05, 9.725e-05, 9.725e-05, 202.0], [1516699680000, 9.725e-05, 9.824e-05, 9.725e-05, 9.824e-05, 71.59862007], [1516699740000, 9.8e-05, 9.8e-05, 9.72e-05, 9.72e-05, 4568.40591526], [1516699800000, 9.79e-05, 9.79e-05, 9.763e-05, 9.766e-05, 128.28124649], [1516699860000, 9.766e-05, 9.791e-05, 9.763e-05, 9.791e-05, 271.68750357], [1516699920000, 9.719e-05, 9.719e-05, 9.715e-05, 9.719e-05, 1524.95164982], [1516699980000, 9.779e-05, 9.873e-05, 9.77e-05, 9.857e-05, 869.72443465], [1516700040000, 9.771e-05, 9.771e-05, 9.771e-05, 9.771e-05, 2029.25395095], [1516700100000, 9.757e-05, 9.757e-05, 9.757e-05, 9.757e-05, 100.0], [1516700160000, 9.757e-05, 9.757e-05, 9.757e-05, 9.757e-05, 88.44078889], [1516700220000, 9.757e-05, 9.79e-05, 9.719e-05, 9.79e-05, 122.12588607], [1516700280000, 9.745e-05, 9.763e-05, 9.72e-05, 9.763e-05, 123.32770344], [1516700340000, 9.72e-05, 9.76e-05, 9.72e-05, 9.745e-05, 389.17610435], [1516700400000, 9.72e-05, 9.754e-05, 9.674e-05, 9.674e-05, 2438.53058985], [1516700460000, 9.674e-05, 9.72e-05, 9.674e-05, 9.72e-05, 544.16707383], [1516700520000, 9.747e-05, 9.747e-05, 9.747e-05, 9.747e-05, 306.43554718], [1516700580000, 9.72e-05, 9.752e-05, 9.72e-05, 9.751e-05, 832.89422086], [1516700640000, 9.749e-05, 9.749e-05, 9.67e-05, 9.67e-05, 1811.97485034], [1516700700000, 9.746e-05, 9.748e-05, 9.67e-05, 9.746e-05, 1679.89049354], [1516700760000, 9.749e-05, 9.751e-05, 9.67e-05, 9.67e-05, 328.76926456], [1516700820000, 9.742e-05, 9.742e-05, 9.67e-05, 9.67e-05, 641.30196538], [1516700880000, 9.742e-05, 9.742e-05, 9.737e-05, 9.739e-05, 266.96304671], [1516700940000, 9.67e-05, 9.736e-05, 9.67e-05, 9.67e-05, 135.54506346], [1516701000000, 9.739e-05, 9.739e-05, 9.739e-05, 9.739e-05, 80.0], [1516701060000, 9.741e-05, 9.808e-05, 9.741e-05, 9.808e-05, 1052.78648547], [1516701120000, 9.807e-05, 9.807e-05, 9.739e-05, 9.739e-05, 108.65485096], [1516701180000, 9.812e-05, 9.813e-05, 9.739e-05, 9.813e-05, 1199.61530325], [1516701240000, 9.739e-05, 9.739e-05, 9.68e-05, 9.68e-05, 250.0], [1516701360000, 9.805e-05, 9.808e-05, 9.678e-05, 9.78e-05, 1118.57197038], [1516701420000, 9.78e-05, 9.78e-05, 9.78e-05, 9.78e-05, 54.19987862], [1516701480000, 9.702e-05, 9.702e-05, 9.673e-05, 9.673e-05, 65.22033934], [1516701540000, 9.78e-05, 9.807e-05, 9.78e-05, 9.78e-05, 2071.42325638], [1516701600000, 9.816e-05, 9.816e-05, 9.78e-05, 9.78e-05, 3938.26775174], [1516701660000, 9.78e-05, 9.814e-05, 9.78e-05, 9.814e-05, 146.49934052], [1516701720000, 9.815e-05, 9.815e-05, 9.815e-05, 9.815e-05, 181.27894926], [1516701780000, 9.814e-05, 9.814e-05, 9.78e-05, 9.78e-05, 371.26141093], [1516701840000, 9.78e-05, 9.8e-05, 9.78e-05, 9.78e-05, 262.69727342], [1516701900000, 9.78e-05, 9.78e-05, 9.78e-05, 9.78e-05, 514.40329218], [1516701960000, 9.8e-05, 9.816e-05, 9.78e-05, 9.78e-05, 3804.98378806], [1516702020000, 9.78e-05, 9.78e-05, 9.78e-05, 9.78e-05, 4567.51660896], [1516702080000, 9.78e-05, 9.79e-05, 9.78e-05, 9.79e-05, 135.65929051], [1516702140000, 9.79e-05, 9.815e-05, 9.78e-05, 9.78e-05, 9567.1596111], [1516702200000, 9.788e-05, 9.788e-05, 9.774e-05, 9.774e-05, 2828.17381994], [1516702260000, 9.772e-05, 9.772e-05, 9.772e-05, 9.772e-05, 943.74333791], [1516702320000, 9.774e-05, 9.79e-05, 9.701e-05, 9.79e-05, 3010.2145046], [1516702380000, 9.789e-05, 9.8e-05, 9.64e-05, 9.64e-05, 15247.01576465], [1516702440000, 9.798e-05, 9.815e-05, 9.798e-05, 9.815e-05, 30559.4621436], [1516702500000, 9.815e-05, 9.828e-05, 9.798e-05, 9.798e-05, 3107.7700609], [1516702560000, 9.798e-05, 9.864e-05, 9.798e-05, 9.864e-05, 651.47390962], [1516702620000, 9.864e-05, 9.897e-05, 9.798e-05, 9.897e-05, 282.24754678], [1516702800000, 9.8e-05, 9.897e-05, 9.8e-05, 9.897e-05, 85.1105551], [1516702860000, 9.897e-05, 9.897e-05, 9.897e-05, 9.897e-05, 180.88364266], [1516702920000, 9.897e-05, 9.897e-05, 9.82e-05, 9.82e-05, 1369.75674883], [1516702980000, 9.8e-05, 9.8e-05, 9.798e-05, 9.798e-05, 5349.65215521], [1516703040000, 9.8e-05, 9.8e-05, 9.798e-05, 9.798e-05, 318.0], [1516703160000, 9.895e-05, 9.895e-05, 9.798e-05, 9.798e-05, 673.39119965], [1516703220000, 9.798e-05, 9.798e-05, 9.798e-05, 9.798e-05, 100.0], [1516703280000, 9.798e-05, 9.798e-05, 9.798e-05, 9.798e-05, 449.85209309], [1516703340000, 9.796e-05, 9.796e-05, 9.664e-05, 9.664e-05, 3276.535], [1516703400000, 9.78e-05, 9.78e-05, 9.66e-05, 9.66e-05, 718.87055821], [1516703460000, 9.66e-05, 9.66e-05, 9.66e-05, 9.66e-05, 1307.60462661], [1516703520000, 9.66e-05, 9.798e-05, 9.66e-05, 9.798e-05, 5694.45617131], [1516703580000, 9.81e-05, 9.81e-05, 9.793e-05, 9.793e-05, 1066.48949189], [1516703640000, 9.793e-05, 9.793e-05, 9.793e-05, 9.793e-05, 5641.3342927], [1516703700000, 9.84e-05, 9.891e-05, 9.793e-05, 9.891e-05, 1131.46109505], [1516703760000, 9.793e-05, 9.793e-05, 9.67e-05, 9.67e-05, 11834.0906425], [1516703820000, 9.788e-05, 9.789e-05, 9.67e-05, 9.783e-05, 2679.08729321], [1516703880000, 9.783e-05, 9.783e-05, 9.783e-05, 9.783e-05, 1273.03832117], [1516703940000, 9.783e-05, 9.793e-05, 9.783e-05, 9.793e-05, 3906.45522032], [1516704000000, 9.793e-05, 9.891e-05, 9.793e-05, 9.891e-05, 5046.40340102], [1516704060000, 9.893e-05, 9.893e-05, 9.891e-05, 9.891e-05, 4636.36345172], [1516704120000, 9.786e-05, 9.786e-05, 9.786e-05, 9.786e-05, 20.0], [1516704180000, 9.786e-05, 9.786e-05, 9.786e-05, 9.786e-05, 67.08607885], [1516704240000, 9.891e-05, 9.891e-05, 9.891e-05, 9.891e-05, 36.49028977], [1516704300000, 9.787e-05, 9.787e-05, 9.787e-05, 9.787e-05, 736.2688609], [1516704360000, 9.783e-05, 9.783e-05, 9.783e-05, 9.783e-05, 166.19999999], [1516704420000, 9.787e-05, 9.787e-05, 9.787e-05, 9.787e-05, 113.7311391], [1516704480000, 9.783e-05, 9.786e-05, 9.783e-05, 9.783e-05, 1205.62347211], [1516704540000, 9.787e-05, 9.787e-05, 9.783e-05, 9.783e-05, 799.77897645], [1516704600000, 9.88e-05, 9.881e-05, 9.876e-05, 9.876e-05, 130.90904354], [1516704660000, 9.874e-05, 9.874e-05, 9.874e-05, 9.874e-05, 36.10393974], [1516704720000, 9.871e-05, 9.871e-05, 9.871e-05, 9.871e-05, 90.0], [1516704780000, 9.784e-05, 9.784e-05, 9.783e-05, 9.783e-05, 1367.64945929], [1516704840000, 9.787e-05, 9.787e-05, 9.787e-05, 9.787e-05, 287.74107907], [1516704900000, 9.869e-05, 9.89e-05, 9.789e-05, 9.882e-05, 1202.92737895], [1516704960000, 9.876e-05, 9.876e-05, 9.876e-05, 9.876e-05, 139.30219143], [1516705020000, 9.785e-05, 9.785e-05, 9.785e-05, 9.785e-05, 21.89505766], [1516705080000, 9.785e-05, 9.873e-05, 9.783e-05, 9.783e-05, 10533.24097486], [1516705140000, 9.867e-05, 9.873e-05, 9.719e-05, 9.719e-05, 837.26757887], [1516705380000, 9.727e-05, 9.727e-05, 9.719e-05, 9.72e-05, 1099.0], [1516705440000, 9.798e-05, 9.798e-05, 9.719e-05, 9.719e-05, 1869.93424535], [1516705500000, 9.719e-05, 9.798e-05, 9.719e-05, 9.798e-05, 3011.62195366], [1516705560000, 9.797e-05, 9.876e-05, 9.797e-05, 9.876e-05, 1038.74921709], [1516705620000, 9.726e-05, 9.726e-05, 9.719e-05, 9.719e-05, 231.67083743], [1516705680000, 9.796e-05, 9.796e-05, 9.796e-05, 9.796e-05, 649.05277664], [1516705800000, 9.796e-05, 9.798e-05, 9.796e-05, 9.798e-05, 2235.98863917], [1516705860000, 9.799e-05, 9.844e-05, 9.799e-05, 9.844e-05, 687.24189685], [1516705920000, 9.821e-05, 9.821e-05, 9.821e-05, 9.821e-05, 665.31601849], [1516705980000, 9.844e-05, 9.844e-05, 9.844e-05, 9.844e-05, 414.90031618], [1516706040000, 9.85e-05, 9.85e-05, 9.85e-05, 9.85e-05, 136.66535883], [1516706100000, 9.85e-05, 9.871e-05, 9.85e-05, 9.871e-05, 120.48737586], [1516706160000, 9.875e-05, 9.875e-05, 9.875e-05, 9.875e-05, 73.92761149], [1516706220000, 9.869e-05, 9.869e-05, 9.768e-05, 9.768e-05, 191.74811179], [1516706280000, 9.764e-05, 9.764e-05, 9.764e-05, 9.764e-05, 50.0], [1516706340000, 9.768e-05, 9.864e-05, 9.768e-05, 9.768e-05, 267.5307519], [1516706400000, 9.768e-05, 9.841e-05, 9.767e-05, 9.767e-05, 160.57363083], [1516706460000, 9.866e-05, 9.866e-05, 9.865e-05, 9.865e-05, 182.63849911], [1516706520000, 9.8e-05, 9.838e-05, 9.767e-05, 9.838e-05, 689.52319569], [1516706580000, 9.83e-05, 9.83e-05, 9.767e-05, 9.83e-05, 58.62548004], [1516706640000, 9.83e-05, 9.877e-05, 9.83e-05, 9.877e-05, 96.3941756], [1516706700000, 9.838e-05, 9.879e-05, 9.838e-05, 9.838e-05, 315.34971419], [1516706760000, 9.767e-05, 9.767e-05, 9.767e-05, 9.767e-05, 1102.97277992], [1516706880000, 9.767e-05, 9.767e-05, 9.695e-05, 9.695e-05, 5993.04030867], [1516706940000, 9.696e-05, 9.696e-05, 9.695e-05, 9.695e-05, 1000.0], [1516707000000, 9.695e-05, 9.695e-05, 9.694e-05, 9.694e-05, 1091.12778629], [1516707060000, 9.694e-05, 9.694e-05, 9.694e-05, 9.694e-05, 1328.05353695], [1516707120000, 9.772e-05, 9.772e-05, 9.772e-05, 9.772e-05, 6462.61167393], [1516707180000, 9.772e-05, 9.772e-05, 9.772e-05, 9.772e-05, 39.58661472], [1516707240000, 9.772e-05, 9.781e-05, 9.694e-05, 9.781e-05, 193.4421045], [1516707300000, 9.781e-05, 9.781e-05, 9.781e-05, 9.781e-05, 777.40195747], [1516707360000, 9.781e-05, 9.781e-05, 9.781e-05, 9.781e-05, 361.26987438], [1516707420000, 9.781e-05, 9.781e-05, 9.78e-05, 9.78e-05, 59.18661787], [1516707480000, 9.78e-05, 9.781e-05, 9.705e-05, 9.705e-05, 811.90961106], [1516707600000, 9.705e-05, 9.705e-05, 9.66e-05, 9.705e-05, 6296.63471213], [1516707660000, 9.66e-05, 9.704e-05, 9.644e-05, 9.644e-05, 19728.53278868], [1516707720000, 9.644e-05, 9.699e-05, 9.64e-05, 9.64e-05, 3449.83271834], [1516707780000, 9.638e-05, 9.638e-05, 9.602e-05, 9.635e-05, 402.99690494], [1516707840000, 9.635e-05, 9.637e-05, 9.6e-05, 9.6e-05, 1509.68286516], [1516707900000, 9.601e-05, 9.601e-05, 9.601e-05, 9.601e-05, 514.0], [1516707960000, 9.601e-05, 9.601e-05, 9.4e-05, 9.505e-05, 26671.65733726], [1516708020000, 9.48e-05, 9.5e-05, 9.391e-05, 9.391e-05, 1830.85506712], [1516708080000, 9.394e-05, 9.476e-05, 9.338e-05, 9.468e-05, 11827.64267006], [1516708140000, 9.4e-05, 9.465e-05, 9.315e-05, 9.441e-05, 33790.69528839], [1516708200000, 9.42e-05, 9.43e-05, 9.316e-05, 9.412e-05, 7812.915991], [1516708260000, 9.411e-05, 9.416e-05, 9.347e-05, 9.411e-05, 2279.80881395], [1516708320000, 9.409e-05, 9.459e-05, 9.409e-05, 9.459e-05, 702.79858479], [1516708380000, 9.465e-05, 9.484e-05, 9.444e-05, 9.465e-05, 368.70663858], [1516708440000, 9.444e-05, 9.484e-05, 9.444e-05, 9.484e-05, 4464.53061756], [1516708500000, 9.484e-05, 9.486e-05, 9.475e-05, 9.484e-05, 1180.5101537], [1516708560000, 9.501e-05, 9.505e-05, 9.501e-05, 9.505e-05, 1101.6717517], [1516708620000, 9.476e-05, 9.503e-05, 9.381e-05, 9.497e-05, 4304.44856828], [1516708680000, 9.495e-05, 9.5e-05, 9.384e-05, 9.489e-05, 1732.3898588], [1516708740000, 9.485e-05, 9.505e-05, 9.485e-05, 9.505e-05, 7498.39876654], [1516708800000, 9.505e-05, 9.532e-05, 9.505e-05, 9.532e-05, 716.76284965], [1516708860000, 9.532e-05, 9.57e-05, 9.515e-05, 9.57e-05, 1088.92163458], [1516708920000, 9.57e-05, 9.57e-05, 9.517e-05, 9.517e-05, 391.07512871], [1516708980000, 9.57e-05, 9.573e-05, 9.505e-05, 9.506e-05, 1261.61465388], [1516709040000, 9.506e-05, 9.506e-05, 9.368e-05, 9.4e-05, 3435.20189305], [1516709100000, 9.465e-05, 9.505e-05, 9.465e-05, 9.505e-05, 1404.57364457], [1516709160000, 9.505e-05, 9.505e-05, 9.505e-05, 9.505e-05, 501.69084831], [1516709220000, 9.55e-05, 9.562e-05, 9.474e-05, 9.474e-05, 12894.77413916], [1516709280000, 9.505e-05, 9.549e-05, 9.475e-05, 9.548e-05, 531.487167], [1516709340000, 9.547e-05, 9.548e-05, 9.547e-05, 9.548e-05, 195.01100213], [1516709400000, 9.484e-05, 9.484e-05, 9.32e-05, 9.32e-05, 13068.84141891], [1516709460000, 9.374e-05, 9.532e-05, 9.374e-05, 9.527e-05, 5845.23784888], [1516709520000, 9.397e-05, 9.397e-05, 9.397e-05, 9.397e-05, 100.0], [1516709580000, 9.536e-05, 9.546e-05, 9.536e-05, 9.545e-05, 796.05070997], [1516709640000, 9.542e-05, 9.639e-05, 9.429e-05, 9.638e-05, 23986.15210611], [1516709700000, 9.637e-05, 9.637e-05, 9.437e-05, 9.437e-05, 863.45149786], [1516709760000, 9.606e-05, 9.608e-05, 9.456e-05, 9.456e-05, 3061.55482339], [1516709820000, 9.5e-05, 9.5e-05, 9.463e-05, 9.464e-05, 1287.8584091], [1516709880000, 9.458e-05, 9.458e-05, 9.457e-05, 9.457e-05, 224.1230824], [1516709940000, 9.432e-05, 9.456e-05, 9.369e-05, 9.369e-05, 4554.63872866], [1516710000000, 9.369e-05, 9.369e-05, 9.318e-05, 9.318e-05, 602.66513561], [1516710060000, 9.437e-05, 9.464e-05, 9.437e-05, 9.464e-05, 242.48848426], [1516710120000, 9.464e-05, 9.507e-05, 9.464e-05, 9.481e-05, 486.50347621], [1516710180000, 9.481e-05, 9.481e-05, 9.355e-05, 9.478e-05, 3960.32420081], [1516710240000, 9.505e-05, 9.509e-05, 9.505e-05, 9.508e-05, 234.69583929], [1516710300000, 9.358e-05, 9.366e-05, 9.358e-05, 9.366e-05, 1188.17476983], [1516710360000, 9.385e-05, 9.386e-05, 9.385e-05, 9.386e-05, 34.33240106], [1516710420000, 9.497e-05, 9.508e-05, 9.497e-05, 9.508e-05, 1885.3937918], [1516710480000, 9.505e-05, 9.507e-05, 9.505e-05, 9.507e-05, 62.17550611], [1516710540000, 9.507e-05, 9.507e-05, 9.505e-05, 9.506e-05, 1187.67275547], [1516710600000, 9.507e-05, 9.534e-05, 9.507e-05, 9.534e-05, 3695.80254436], [1516710660000, 9.567e-05, 9.578e-05, 9.567e-05, 9.578e-05, 285.14930983], [1516710840000, 9.516e-05, 9.578e-05, 9.508e-05, 9.508e-05, 427.73835989], [1516710900000, 9.509e-05, 9.577e-05, 9.507e-05, 9.546e-05, 8320.80506386], [1516711020000, 9.546e-05, 9.546e-05, 9.546e-05, 9.546e-05, 111.35496299], [1516711080000, 9.509e-05, 9.546e-05, 9.508e-05, 9.546e-05, 250.33315944], [1516711140000, 9.538e-05, 9.538e-05, 9.508e-05, 9.538e-05, 1189.7796651], [1516711200000, 9.535e-05, 9.54e-05, 9.535e-05, 9.54e-05, 600.0], [1516711260000, 9.546e-05, 9.638e-05, 9.546e-05, 9.638e-05, 1278.44567722], [1516711320000, 9.636e-05, 9.636e-05, 9.521e-05, 9.521e-05, 1091.29052721], [1516711380000, 9.53e-05, 9.624e-05, 9.53e-05, 9.624e-05, 101.15471543], [1516711440000, 9.623e-05, 9.625e-05, 9.623e-05, 9.624e-05, 2744.58489557], [1516711500000, 9.615e-05, 9.615e-05, 9.615e-05, 9.615e-05, 53.13681547], [1516711560000, 9.614e-05, 9.614e-05, 9.538e-05, 9.61e-05, 1653.9306439], [1516711620000, 9.61e-05, 9.624e-05, 9.539e-05, 9.609e-05, 25468.03281827], [1516711680000, 9.511e-05, 9.606e-05, 9.508e-05, 9.599e-05, 1958.00821476], [1516711740000, 9.636e-05, 9.638e-05, 9.599e-05, 9.638e-05, 843.21422552], [1516711800000, 9.601e-05, 9.64e-05, 9.599e-05, 9.599e-05, 5846.33174276], [1516711860000, 9.6e-05, 9.6e-05, 9.6e-05, 9.6e-05, 17.70833333], [1516711920000, 9.599e-05, 9.64e-05, 9.599e-05, 9.64e-05, 959.50895963], [1516711980000, 9.63e-05, 9.689e-05, 9.599e-05, 9.599e-05, 3847.27506207], [1516712040000, 9.599e-05, 9.599e-05, 9.599e-05, 9.599e-05, 5286.89586834], [1516712100000, 9.599e-05, 9.61e-05, 9.599e-05, 9.61e-05, 20909.20685715], [1516712160000, 9.61e-05, 9.61e-05, 9.6e-05, 9.6e-05, 254.37475286], [1516712280000, 9.587e-05, 9.587e-05, 9.482e-05, 9.482e-05, 1481.09019368], [1516712340000, 9.481e-05, 9.481e-05, 9.48e-05, 9.48e-05, 1683.38605371], [1516712400000, 9.48e-05, 9.544e-05, 9.48e-05, 9.48e-05, 4564.18350305], [1516712460000, 9.48e-05, 9.48e-05, 9.447e-05, 9.447e-05, 9039.13384184], [1516712520000, 9.445e-05, 9.47e-05, 9.445e-05, 9.468e-05, 1195.93950679], [1516712580000, 9.466e-05, 9.467e-05, 9.465e-05, 9.465e-05, 102.88640825], [1516712640000, 9.465e-05, 9.465e-05, 9.465e-05, 9.465e-05, 139.65240359], [1516712700000, 9.44e-05, 9.455e-05, 9.431e-05, 9.455e-05, 1481.39056785], [1516712760000, 9.467e-05, 9.549e-05, 9.467e-05, 9.549e-05, 2971.49194812], [1516712880000, 9.548e-05, 9.548e-05, 9.49e-05, 9.49e-05, 1778.03310787], [1516712940000, 9.49e-05, 9.49e-05, 9.353e-05, 9.373e-05, 9695.10793667], [1516713000000, 9.373e-05, 9.455e-05, 9.315e-05, 9.455e-05, 13265.60239692], [1516713120000, 9.38e-05, 9.38e-05, 9.38e-05, 9.38e-05, 177.40575997], [1516713240000, 9.437e-05, 9.437e-05, 9.437e-05, 9.437e-05, 35.8177711], [1516713300000, 9.44e-05, 9.44e-05, 9.382e-05, 9.44e-05, 385.76393443], [1516713420000, 9.452e-05, 9.478e-05, 9.452e-05, 9.478e-05, 78.37409009], [1516713480000, 9.474e-05, 9.474e-05, 9.474e-05, 9.474e-05, 18.60681769], [1516713540000, 9.462e-05, 9.473e-05, 9.462e-05, 9.462e-05, 3871.71396195], [1516713600000, 9.477e-05, 9.477e-05, 9.463e-05, 9.467e-05, 1213.33689882], [1516713660000, 9.472e-05, 9.472e-05, 9.472e-05, 9.472e-05, 6.96242923], [1516713720000, 9.472e-05, 9.474e-05, 9.472e-05, 9.472e-05, 251.04281986], [1516713780000, 9.472e-05, 9.472e-05, 9.469e-05, 9.469e-05, 145.69620569], [1516713900000, 9.464e-05, 9.474e-05, 9.464e-05, 9.474e-05, 1003.00100299], [1516713960000, 9.463e-05, 9.463e-05, 9.452e-05, 9.452e-05, 327.70287891], [1516714020000, 9.391e-05, 9.411e-05, 9.38e-05, 9.38e-05, 476.89136327], [1516714080000, 9.464e-05, 9.464e-05, 9.463e-05, 9.463e-05, 123.54417896], [1516714140000, 9.4e-05, 9.4e-05, 9.271e-05, 9.299e-05, 16851.33326508], [1516714200000, 9.31e-05, 9.31e-05, 9.31e-05, 9.31e-05, 570.70175498], [1516714260000, 9.329e-05, 9.329e-05, 9.329e-05, 9.329e-05, 324.80193219], [1516714320000, 9.4e-05, 9.4e-05, 9.299e-05, 9.299e-05, 523.03078927], [1516714380000, 9.393e-05, 9.393e-05, 9.298e-05, 9.298e-05, 839.18168376], [1516714440000, 9.39e-05, 9.39e-05, 9.298e-05, 9.387e-05, 289.62776379], [1516714500000, 9.298e-05, 9.388e-05, 9.298e-05, 9.386e-05, 539.05993634], [1516714560000, 9.386e-05, 9.386e-05, 9.298e-05, 9.298e-05, 2226.64589288], [1516714620000, 9.365e-05, 9.365e-05, 9.362e-05, 9.364e-05, 110.38868184], [1516714680000, 9.299e-05, 9.462e-05, 9.299e-05, 9.351e-05, 2930.23644324], [1516714740000, 9.303e-05, 9.462e-05, 9.303e-05, 9.304e-05, 2951.85875525], [1516714800000, 9.46e-05, 9.46e-05, 9.307e-05, 9.309e-05, 290.40288667], [1516714860000, 9.432e-05, 9.432e-05, 9.432e-05, 9.432e-05, 282.74211815], [1516714920000, 9.432e-05, 9.458e-05, 9.432e-05, 9.456e-05, 390.69924922], [1516714980000, 9.456e-05, 9.456e-05, 9.456e-05, 9.456e-05, 10.5764146], [1516715040000, 9.456e-05, 9.471e-05, 9.456e-05, 9.471e-05, 38022.91034415], [1516715100000, 9.462e-05, 9.566e-05, 9.462e-05, 9.528e-05, 597.70020353], [1516715160000, 9.528e-05, 9.597e-05, 9.528e-05, 9.597e-05, 1462.07959571], [1516715220000, 9.596e-05, 9.597e-05, 9.479e-05, 9.479e-05, 1940.93943861], [1516715280000, 9.513e-05, 9.595e-05, 9.483e-05, 9.483e-05, 1624.39281386], [1516715340000, 9.593e-05, 9.598e-05, 9.484e-05, 9.598e-05, 2991.56295272], [1516715400000, 9.597e-05, 9.597e-05, 9.597e-05, 9.597e-05, 283.74893068], [1516715460000, 9.501e-05, 9.508e-05, 9.501e-05, 9.505e-05, 2913.01451698], [1516715520000, 9.505e-05, 9.506e-05, 9.483e-05, 9.483e-05, 4706.57599186], [1516715580000, 9.484e-05, 9.594e-05, 9.484e-05, 9.594e-05, 2240.5435992], [1516715640000, 9.498e-05, 9.595e-05, 9.498e-05, 9.519e-05, 2025.17845034], [1516715700000, 9.519e-05, 9.519e-05, 9.519e-05, 9.519e-05, 770.02652601], [1516715760000, 9.56e-05, 9.56e-05, 9.52e-05, 9.525e-05, 576.88078292], [1516715820000, 9.558e-05, 9.558e-05, 9.525e-05, 9.525e-05, 1160.86520378], [1516715880000, 9.525e-05, 9.525e-05, 9.525e-05, 9.525e-05, 2089.79915354], [1516715940000, 9.52e-05, 9.52e-05, 9.52e-05, 9.52e-05, 45.50420169], [1516716060000, 9.483e-05, 9.52e-05, 9.463e-05, 9.52e-05, 615.56451613], [1516716180000, 9.524e-05, 9.524e-05, 9.524e-05, 9.524e-05, 493.04388913], [1516716240000, 9.525e-05, 9.525e-05, 9.52e-05, 9.525e-05, 331.2370452], [1516716300000, 9.52e-05, 9.559e-05, 9.52e-05, 9.559e-05, 1053.535749], [1516716360000, 9.559e-05, 9.559e-05, 9.559e-05, 9.559e-05, 110.69461675], [1516716420000, 9.558e-05, 9.559e-05, 9.558e-05, 9.559e-05, 809.4398835], [1516716480000, 9.53e-05, 9.53e-05, 9.5e-05, 9.5e-05, 57.79122017], [1516716540000, 9.5e-05, 9.5e-05, 9.48e-05, 9.48e-05, 321.47541554], [1516716600000, 9.5e-05, 9.615e-05, 9.5e-05, 9.559e-05, 9741.56876812], [1516716660000, 9.615e-05, 9.615e-05, 9.559e-05, 9.559e-05, 4505.14687], [1516716720000, 9.481e-05, 9.559e-05, 9.481e-05, 9.559e-05, 7771.89394169], [1516716780000, 9.559e-05, 9.649e-05, 9.559e-05, 9.615e-05, 25394.93607548], [1516716840000, 9.643e-05, 9.783e-05, 9.618e-05, 9.783e-05, 21812.98223053], [1516716900000, 9.739e-05, 0.00010115, 9.738e-05, 0.00010115, 124169.55862558], [1516716960000, 0.00010115, 0.00010298, 0.00010028, 0.00010187, 112133.25270869], [1516717020000, 0.00010183, 0.0001027, 9.92e-05, 0.00010114, 29610.19207711], [1516717080000, 0.00010062, 0.00010192, 0.00010062, 0.00010167, 9831.36747807], [1516717140000, 0.00010107, 0.00010167, 9.981e-05, 0.00010167, 37604.54386567], [1516717200000, 0.00010167, 0.00010398, 9.985e-05, 0.00010398, 48321.18736232], [1516717260000, 0.00010398, 0.0001049, 0.00010379, 0.0001045, 108249.98071275], [1516717320000, 0.00010476, 0.0001049, 0.00010288, 0.00010288, 27537.13048105], [1516717380000, 0.00010288, 0.00010447, 0.00010288, 0.00010327, 19888.90903412], [1516717440000, 0.00010327, 0.00010338, 0.00010168, 0.00010168, 38355.54172404], [1516717500000, 0.00010168, 0.00010168, 9.904e-05, 9.984e-05, 10234.03013232], [1516717560000, 9.929e-05, 0.00010039, 9.8e-05, 9.8e-05, 4772.62810499], [1516717620000, 9.8e-05, 9.972e-05, 9.8e-05, 9.903e-05, 1635.37622492], [1516717680000, 9.903e-05, 9.903e-05, 9.818e-05, 9.889e-05, 1967.54472263], [1516717740000, 9.887e-05, 0.00010168, 9.801e-05, 0.00010168, 43688.55806496], [1516717800000, 0.00010161, 0.00010214, 9.977e-05, 0.00010214, 5963.68122209], [1516717860000, 0.00010168, 0.00010214, 9.994e-05, 0.00010208, 1658.60339971], [1516717920000, 0.00010015, 0.00010202, 0.00010015, 0.00010021, 787.67365311], [1516717980000, 0.00010027, 0.00010188, 0.00010027, 0.00010029, 1987.40487494], [1516718040000, 0.0001003, 0.00010156, 0.0001003, 0.00010033, 306.755819], [1516718100000, 0.00010142, 0.00010142, 0.00010032, 0.00010032, 1021.45166087], [1516718160000, 0.00010032, 0.00010032, 9.959e-05, 9.959e-05, 3822.85592571], [1516718220000, 9.959e-05, 9.959e-05, 9.919e-05, 9.957e-05, 1101.43932121], [1516718280000, 9.956e-05, 9.957e-05, 9.9e-05, 9.902e-05, 4301.55315478], [1516718340000, 9.957e-05, 0.0001003, 9.903e-05, 9.99e-05, 31507.77560515], [1516718400000, 9.982e-05, 0.00010032, 9.9e-05, 9.999e-05, 5117.70361908], [1516718460000, 0.00010099, 0.00010148, 9.977e-05, 0.00010145, 4815.95498939], [1516718520000, 9.985e-05, 0.00010136, 9.985e-05, 9.99e-05, 1153.31702162], [1516718580000, 0.000101, 0.000101, 9.991e-05, 9.995e-05, 6341.83371209], [1516718640000, 9.998e-05, 0.00010147, 9.998e-05, 0.00010147, 2892.4761553], [1516718700000, 0.0001007, 0.00010144, 9.977e-05, 9.988e-05, 4931.83131075], [1516718760000, 0.00010097, 0.00010097, 9.993e-05, 9.993e-05, 394.32105616], [1516718820000, 9.996e-05, 9.998e-05, 9.996e-05, 9.996e-05, 715.49646447], [1516718880000, 0.00010001, 0.00010001, 0.00010001, 0.00010001, 148.98510148], [1516718940000, 0.00010001, 0.00010001, 0.00010001, 0.00010001, 4851.01489852], [1516719000000, 0.00010001, 0.00010128, 0.00010001, 0.00010128, 1090.18753801], [1516719060000, 0.00010133, 0.00010148, 9.999e-05, 0.00010014, 73720.83604868], [1516719120000, 0.00010114, 0.00010148, 0.00010014, 0.00010114, 74159.05799409], [1516719180000, 0.00010114, 0.00010288, 0.0001003, 0.00010137, 48032.48952697], [1516719240000, 0.00010049, 0.00010063, 9.993e-05, 9.993e-05, 6271.06798303], [1516719300000, 0.00010023, 0.0001005, 9.911e-05, 9.998e-05, 5058.09821375], [1516719360000, 9.998e-05, 9.998e-05, 9.934e-05, 9.992e-05, 4145.77169368], [1516719420000, 9.991e-05, 9.998e-05, 9.829e-05, 9.833e-05, 9366.69401983], [1516719480000, 9.984e-05, 0.00010063, 9.833e-05, 9.895e-05, 15843.93632187], [1516719540000, 0.0001, 0.0001, 0.0001, 0.0001, 787.0], [1516719600000, 0.0001, 0.00010034, 9.917e-05, 9.923e-05, 948.98345624], [1516719660000, 0.0001, 0.0001, 9.736e-05, 9.898e-05, 18202.52694263], [1516719720000, 9.918e-05, 9.918e-05, 9.898e-05, 9.918e-05, 3846.49273297], [1516719780000, 9.948e-05, 9.948e-05, 9.9e-05, 9.9e-05, 751.44836568], [1516719840000, 9.979e-05, 9.979e-05, 9.903e-05, 9.903e-05, 518.50990721], [1516719900000, 9.903e-05, 9.979e-05, 9.9e-05, 9.9e-05, 10793.03399861], [1516719960000, 9.9e-05, 9.9e-05, 9.744e-05, 9.89e-05, 12626.94345468], [1516720020000, 9.766e-05, 9.874e-05, 9.766e-05, 9.874e-05, 11024.72294987], [1516720080000, 9.874e-05, 9.874e-05, 9.776e-05, 9.8e-05, 17784.6268658], [1516720140000, 9.8e-05, 9.808e-05, 9.725e-05, 9.727e-05, 10489.47881716], [1516720200000, 9.772e-05, 9.808e-05, 9.729e-05, 9.808e-05, 31036.90504691], [1516720260000, 9.731e-05, 9.807e-05, 9.731e-05, 9.807e-05, 1488.59065948], [1516720320000, 9.807e-05, 9.807e-05, 9.735e-05, 9.804e-05, 1689.22990297], [1516720380000, 9.804e-05, 9.804e-05, 9.804e-05, 9.804e-05, 50.0], [1516720440000, 9.804e-05, 9.804e-05, 9.804e-05, 9.804e-05, 564.38953488], [1516720500000, 9.735e-05, 9.735e-05, 9.733e-05, 9.733e-05, 42.0], [1516720560000, 9.77e-05, 9.88e-05, 9.754e-05, 9.878e-05, 2469.30010863], [1516720620000, 9.878e-05, 9.878e-05, 9.75e-05, 9.77e-05, 791.00776078], [1516720680000, 9.837e-05, 9.837e-05, 9.826e-05, 9.826e-05, 78.86057804], [1516720740000, 9.818e-05, 9.818e-05, 9.725e-05, 9.725e-05, 8845.35810212], [1516720800000, 9.754e-05, 9.797e-05, 9.725e-05, 9.796e-05, 2559.23896895], [1516720920000, 9.728e-05, 9.792e-05, 9.7e-05, 9.792e-05, 7632.22780289], [1516720980000, 9.786e-05, 9.786e-05, 9.786e-05, 9.786e-05, 382.74154663], [1516721040000, 9.793e-05, 9.797e-05, 9.71e-05, 9.797e-05, 2899.12568482], [1516721100000, 9.797e-05, 9.797e-05, 9.793e-05, 9.793e-05, 2188.10193382], [1516721160000, 9.797e-05, 9.797e-05, 9.7e-05, 9.704e-05, 5613.32286151], [1516721220000, 9.704e-05, 9.704e-05, 9.704e-05, 9.704e-05, 437.20165416], [1516721280000, 9.704e-05, 9.794e-05, 9.704e-05, 9.793e-05, 499.2876342], [1516721340000, 9.71e-05, 9.71e-05, 9.71e-05, 9.71e-05, 49.95504046], [1516721400000, 9.71e-05, 9.794e-05, 9.71e-05, 9.794e-05, 5308.64294896], [1516721460000, 9.794e-05, 9.794e-05, 9.74e-05, 9.74e-05, 369.7991462], [1516721520000, 9.794e-05, 9.813e-05, 9.794e-05, 9.813e-05, 246.2425773], [1516721580000, 9.81e-05, 9.813e-05, 9.795e-05, 9.795e-05, 2033.96496403], [1516721640000, 9.81e-05, 9.813e-05, 9.81e-05, 9.813e-05, 2898.77716359], [1516721700000, 9.813e-05, 9.813e-05, 9.813e-05, 9.813e-05, 3364.13473493], [1516721760000, 9.813e-05, 9.813e-05, 9.813e-05, 9.813e-05, 311.83124426], [1516721820000, 9.8e-05, 9.8e-05, 9.794e-05, 9.794e-05, 680.02665332], [1516721880000, 9.794e-05, 9.803e-05, 9.794e-05, 9.801e-05, 2639.50487942], [1516721940000, 9.8e-05, 9.8e-05, 9.797e-05, 9.799e-05, 1012.74768312], [1516722000000, 9.799e-05, 9.8e-05, 9.794e-05, 9.794e-05, 10624.56175357], [1516722060000, 9.794e-05, 9.812e-05, 9.74e-05, 9.812e-05, 2408.8090917], [1516722120000, 9.747e-05, 9.747e-05, 9.74e-05, 9.74e-05, 1046.47700268], [1516722180000, 9.72e-05, 9.74e-05, 9.608e-05, 9.657e-05, 14507.47521035], [1516722240000, 9.657e-05, 9.72e-05, 9.657e-05, 9.72e-05, 391.19245162], [1516722300000, 9.7e-05, 9.71e-05, 9.659e-05, 9.71e-05, 2088.32995826], [1516722360000, 9.74e-05, 9.771e-05, 9.659e-05, 9.741e-05, 1209.54857591], [1516722420000, 9.74e-05, 9.74e-05, 9.74e-05, 9.74e-05, 100.0], [1516722480000, 9.711e-05, 9.711e-05, 9.702e-05, 9.702e-05, 22.64624519], [1516722540000, 9.7e-05, 9.7e-05, 9.7e-05, 9.7e-05, 139.24737147], [1516722600000, 9.7e-05, 9.7e-05, 9.7e-05, 9.7e-05, 204.51435843], [1516722660000, 9.658e-05, 9.7e-05, 9.658e-05, 9.7e-05, 4220.14649353], [1516722720000, 9.7e-05, 9.738e-05, 9.7e-05, 9.738e-05, 813.85837683], [1516722780000, 9.738e-05, 9.741e-05, 9.7e-05, 9.741e-05, 263.20469056], [1516722840000, 9.741e-05, 9.741e-05, 9.741e-05, 9.741e-05, 118.39947642], [1516722900000, 9.701e-05, 9.741e-05, 9.699e-05, 9.699e-05, 5558.57773107], [1516722960000, 9.741e-05, 9.8e-05, 9.699e-05, 9.699e-05, 4460.66380683], [1516723020000, 9.699e-05, 9.74e-05, 9.699e-05, 9.699e-05, 1596.22861546], [1516723080000, 9.795e-05, 9.796e-05, 9.7e-05, 9.7e-05, 4166.26002792], [1516723140000, 9.794e-05, 9.794e-05, 9.7e-05, 9.7e-05, 4811.50216398], [1516723200000, 9.703e-05, 9.704e-05, 9.702e-05, 9.704e-05, 1234.0], [1516723260000, 9.705e-05, 9.705e-05, 9.705e-05, 9.705e-05, 1004.64817303], [1516723320000, 9.705e-05, 9.78e-05, 9.699e-05, 9.73e-05, 2977.2354844], [1516723380000, 9.78e-05, 9.78e-05, 9.74e-05, 9.74e-05, 656.36437451], [1516723440000, 9.74e-05, 9.74e-05, 9.74e-05, 9.74e-05, 55.4], [1516723500000, 9.779e-05, 9.779e-05, 9.779e-05, 9.779e-05, 550.37593984], [1516723560000, 9.76e-05, 9.779e-05, 9.76e-05, 9.779e-05, 154.66810027], [1516723620000, 9.75e-05, 9.78e-05, 9.75e-05, 9.779e-05, 2302.92979314], [1516723680000, 9.779e-05, 9.78e-05, 9.699e-05, 9.699e-05, 5770.98713926], [1516723740000, 9.8e-05, 9.8e-05, 9.701e-05, 9.8e-05, 3385.06325722], [1516723800000, 9.811e-05, 9.813e-05, 9.811e-05, 9.811e-05, 1199.99996996], [1516723860000, 9.811e-05, 9.812e-05, 9.699e-05, 9.699e-05, 3979.73665281], [1516723980000, 9.79e-05, 9.808e-05, 9.79e-05, 9.808e-05, 1463.24769004], [1516724040000, 9.702e-05, 9.805e-05, 9.699e-05, 9.805e-05, 3575.37789783], [1516724100000, 9.805e-05, 9.813e-05, 9.788e-05, 9.788e-05, 2118.14421269], [1516724160000, 9.812e-05, 9.813e-05, 9.812e-05, 9.813e-05, 1909.78836372], [1516724220000, 9.813e-05, 9.813e-05, 9.8e-05, 9.8e-05, 868.07961794], [1516724280000, 9.8e-05, 9.812e-05, 9.8e-05, 9.812e-05, 1679.0], [1516724340000, 9.812e-05, 9.812e-05, 9.812e-05, 9.812e-05, 4776.95718428], [1516724400000, 9.812e-05, 9.93e-05, 9.812e-05, 9.928e-05, 16179.77926295], [1516724460000, 9.924e-05, 9.924e-05, 9.924e-05, 9.924e-05, 100.0], [1516724520000, 9.917e-05, 9.917e-05, 9.831e-05, 9.833e-05, 420.65174279], [1516724580000, 9.834e-05, 9.889e-05, 9.834e-05, 9.889e-05, 2871.32092968], [1516724640000, 9.878e-05, 9.963e-05, 9.873e-05, 9.878e-05, 5738.68191195], [1516724700000, 9.878e-05, 9.964e-05, 9.87e-05, 9.878e-05, 2418.11241676], [1516724760000, 9.883e-05, 9.94e-05, 9.833e-05, 9.878e-05, 9757.75184268], [1516724820000, 9.878e-05, 9.947e-05, 9.814e-05, 9.911e-05, 3501.26875084], [1516724880000, 9.815e-05, 9.912e-05, 9.815e-05, 9.912e-05, 2487.12310143], [1516724940000, 9.815e-05, 9.964e-05, 9.815e-05, 9.964e-05, 16996.85154867], [1516725000000, 9.945e-05, 9.964e-05, 9.831e-05, 9.831e-05, 9303.6418906], [1516725060000, 9.907e-05, 9.909e-05, 9.819e-05, 9.819e-05, 3439.80100078], [1516725120000, 9.964e-05, 9.977e-05, 9.818e-05, 9.858e-05, 12806.96849982], [1516725180000, 9.858e-05, 9.957e-05, 9.824e-05, 9.89e-05, 6007.12092091], [1516725240000, 9.881e-05, 9.881e-05, 9.877e-05, 9.877e-05, 4787.01307675], [1516725300000, 9.879e-05, 9.976e-05, 9.821e-05, 9.873e-05, 9117.64452065], [1516725360000, 9.869e-05, 9.873e-05, 9.869e-05, 9.873e-05, 1089.0], [1516725420000, 9.873e-05, 9.9e-05, 9.821e-05, 9.9e-05, 318.90355734], [1516725480000, 9.94e-05, 9.944e-05, 9.94e-05, 9.944e-05, 1111.0], [1516725540000, 9.94e-05, 9.988e-05, 9.826e-05, 9.83e-05, 22999.40997958], [1516725600000, 9.833e-05, 9.968e-05, 9.833e-05, 9.862e-05, 14830.70763885], [1516725660000, 9.862e-05, 9.92e-05, 9.784e-05, 9.8e-05, 5256.26153064], [1516725720000, 9.916e-05, 9.92e-05, 9.916e-05, 9.92e-05, 128.14891898], [1516725780000, 9.959e-05, 9.961e-05, 9.916e-05, 9.916e-05, 2438.01356781], [1516725840000, 9.916e-05, 9.952e-05, 9.801e-05, 9.946e-05, 4085.46230106], [1516725900000, 9.943e-05, 9.943e-05, 9.82e-05, 9.938e-05, 3463.3097259], [1516725960000, 9.932e-05, 9.932e-05, 9.932e-05, 9.932e-05, 2107.34012081], [1516726020000, 9.926e-05, 9.926e-05, 9.837e-05, 9.873e-05, 4736.72575873], [1516726080000, 9.873e-05, 9.92e-05, 9.824e-05, 9.919e-05, 3596.38130084], [1516726140000, 9.824e-05, 9.85e-05, 9.824e-05, 9.85e-05, 791.67063551], [1516726200000, 9.917e-05, 9.919e-05, 9.85e-05, 9.918e-05, 1463.70863241], [1516726260000, 9.918e-05, 9.918e-05, 9.82e-05, 9.82e-05, 1255.2725098], [1516726320000, 9.85e-05, 9.88e-05, 9.85e-05, 9.88e-05, 475.0], [1516726380000, 9.847e-05, 9.916e-05, 9.7e-05, 9.792e-05, 6475.65799626], [1516726440000, 9.85e-05, 9.9e-05, 9.752e-05, 9.845e-05, 2685.59755817], [1516726500000, 9.843e-05, 9.843e-05, 9.839e-05, 9.839e-05, 1944.94041719], [1516726560000, 9.841e-05, 9.921e-05, 9.841e-05, 9.841e-05, 1204.76190476], [1516726620000, 9.841e-05, 9.841e-05, 9.786e-05, 9.786e-05, 2472.24730769], [1516726680000, 9.87e-05, 9.87e-05, 9.87e-05, 9.87e-05, 400.0], [1516726740000, 9.84e-05, 9.917e-05, 9.823e-05, 9.874e-05, 861.23115835], [1516726800000, 9.869e-05, 9.869e-05, 9.869e-05, 9.869e-05, 12.01020772], [1516726860000, 9.869e-05, 9.898e-05, 9.802e-05, 9.898e-05, 2763.97368993], [1516726920000, 9.892e-05, 9.892e-05, 9.85e-05, 9.85e-05, 87.0], [1516726980000, 9.85e-05, 9.85e-05, 9.85e-05, 9.85e-05, 5026.45177665], [1516727100000, 9.832e-05, 9.832e-05, 9.832e-05, 9.832e-05, 857.95489164], [1516727160000, 9.775e-05, 9.775e-05, 9.775e-05, 9.775e-05, 691.7298995], [1516727220000, 9.792e-05, 9.792e-05, 9.775e-05, 9.775e-05, 1899.71744587], [1516727280000, 9.799e-05, 9.799e-05, 9.799e-05, 9.799e-05, 70.62840003], [1516727340000, 9.799e-05, 9.8e-05, 9.759e-05, 9.8e-05, 1544.30461164], [1516727400000, 9.8e-05, 9.8e-05, 9.759e-05, 9.759e-05, 92.20783933], [1516727460000, 9.759e-05, 9.78e-05, 9.759e-05, 9.778e-05, 1036.34746667], [1516727520000, 9.752e-05, 9.752e-05, 9.73e-05, 9.73e-05, 1612.42808474], [1516727580000, 9.73e-05, 9.778e-05, 9.728e-05, 9.73e-05, 7787.32271755], [1516727640000, 9.73e-05, 9.78e-05, 9.7e-05, 9.78e-05, 14056.42797803], [1516727700000, 9.779e-05, 9.779e-05, 9.704e-05, 9.705e-05, 3920.43712371], [1516727760000, 9.705e-05, 9.768e-05, 9.704e-05, 9.768e-05, 2254.94515575], [1516727820000, 9.768e-05, 9.768e-05, 9.7e-05, 9.707e-05, 10316.67481541], [1516727880000, 9.71e-05, 9.711e-05, 9.709e-05, 9.709e-05, 7050.99179033], [1516727940000, 9.794e-05, 9.794e-05, 9.709e-05, 9.781e-05, 2076.04800007], [1516728000000, 9.781e-05, 9.797e-05, 9.709e-05, 9.709e-05, 1260.00141703], [1516728060000, 9.75e-05, 9.75e-05, 9.75e-05, 9.75e-05, 190.06003538], [1516728120000, 9.75e-05, 9.75e-05, 9.75e-05, 9.75e-05, 568.30951045], [1516728300000, 9.783e-05, 9.783e-05, 9.783e-05, 9.783e-05, 34.65110961], [1516728420000, 9.75e-05, 9.75e-05, 9.75e-05, 9.75e-05, 60.0], [1516728480000, 9.781e-05, 9.782e-05, 9.781e-05, 9.782e-05, 1288.43354503], [1516728540000, 9.782e-05, 9.782e-05, 9.782e-05, 9.782e-05, 40.34082933], [1516728600000, 9.782e-05, 9.783e-05, 9.782e-05, 9.783e-05, 1560.0], [1516728660000, 9.783e-05, 9.783e-05, 9.783e-05, 9.783e-05, 80.59163753], [1516728720000, 9.783e-05, 9.783e-05, 9.783e-05, 9.783e-05, 2352.82631376], [1516728780000, 9.783e-05, 9.783e-05, 9.783e-05, 9.783e-05, 1520.44362669], [1516728840000, 9.754e-05, 9.782e-05, 9.711e-05, 9.781e-05, 1169.71820255], [1516728900000, 9.776e-05, 9.776e-05, 9.774e-05, 9.774e-05, 196.16006864], [1516728960000, 9.71e-05, 9.771e-05, 9.71e-05, 9.771e-05, 4227.31354682], [1516729020000, 9.763e-05, 9.763e-05, 9.763e-05, 9.763e-05, 176.60770803], [1516729080000, 9.754e-05, 9.754e-05, 9.754e-05, 9.754e-05, 25.63051055], [1516729140000, 9.754e-05, 9.757e-05, 9.754e-05, 9.757e-05, 1157.50653271], [1516729200000, 9.732e-05, 9.732e-05, 9.732e-05, 9.732e-05, 545.0], [1516729260000, 9.762e-05, 9.762e-05, 9.711e-05, 9.711e-05, 35.13897065], [1516729320000, 9.711e-05, 9.711e-05, 9.711e-05, 9.711e-05, 8.0], [1516729380000, 9.766e-05, 9.767e-05, 9.765e-05, 9.765e-05, 420.01656776], [1516729440000, 9.765e-05, 9.765e-05, 9.765e-05, 9.765e-05, 1435.0], [1516729500000, 9.713e-05, 9.713e-05, 9.713e-05, 9.713e-05, 486.0003916], [1516729560000, 9.76e-05, 9.768e-05, 9.712e-05, 9.712e-05, 396.14693103], [1516729620000, 9.767e-05, 9.767e-05, 9.712e-05, 9.766e-05, 261.20355185], [1516729680000, 9.766e-05, 9.766e-05, 9.766e-05, 9.766e-05, 10.75456686], [1516729740000, 9.766e-05, 9.766e-05, 9.765e-05, 9.765e-05, 3876.11327658], [1516729800000, 9.765e-05, 9.766e-05, 9.765e-05, 9.766e-05, 10986.59722994], [1516729860000, 9.766e-05, 9.766e-05, 9.765e-05, 9.765e-05, 765.81111649], [1516729920000, 9.765e-05, 9.765e-05, 9.711e-05, 9.711e-05, 168.28136815], [1516729980000, 9.712e-05, 9.764e-05, 9.712e-05, 9.764e-05, 5694.20074439], [1516730040000, 9.764e-05, 9.764e-05, 9.764e-05, 9.764e-05, 13.0], [1516730100000, 9.764e-05, 9.764e-05, 9.764e-05, 9.764e-05, 194.34865606], [1516730160000, 9.745e-05, 9.765e-05, 9.745e-05, 9.764e-05, 3510.81435873], [1516730220000, 9.746e-05, 9.746e-05, 9.746e-05, 9.746e-05, 200.0], [1516730280000, 9.764e-05, 9.764e-05, 9.764e-05, 9.764e-05, 137.53023481], [1516730340000, 9.746e-05, 9.746e-05, 9.746e-05, 9.746e-05, 390.16909562], [1516730400000, 9.746e-05, 9.764e-05, 9.746e-05, 9.764e-05, 360.19861288], [1516730460000, 9.75e-05, 9.765e-05, 9.73e-05, 9.73e-05, 14565.11066197], [1516730520000, 9.75e-05, 9.75e-05, 9.72e-05, 9.72e-05, 1031.37860082], [1516730580000, 9.767e-05, 9.767e-05, 9.715e-05, 9.715e-05, 115.10100794], [1516730640000, 9.715e-05, 9.739e-05, 9.715e-05, 9.739e-05, 469.71895589], [1516730700000, 9.739e-05, 9.739e-05, 9.738e-05, 9.738e-05, 179.44618644], [1516730760000, 9.738e-05, 9.738e-05, 9.738e-05, 9.738e-05, 111.26816466], [1516730820000, 9.738e-05, 9.749e-05, 9.711e-05, 9.711e-05, 3203.9311096], [1516730940000, 9.749e-05, 9.767e-05, 9.704e-05, 9.704e-05, 2620.12100971], [1516731000000, 9.755e-05, 9.755e-05, 9.752e-05, 9.752e-05, 565.8524224], [1516731060000, 9.756e-05, 9.781e-05, 9.756e-05, 9.777e-05, 1013.80495358], [1516731120000, 9.776e-05, 9.776e-05, 9.776e-05, 9.776e-05, 147.26117778], [1516731300000, 9.71e-05, 9.71e-05, 9.71e-05, 9.71e-05, 63.17160368], [1516731360000, 9.75e-05, 9.75e-05, 9.75e-05, 9.75e-05, 100.0], [1516731480000, 9.75e-05, 9.75e-05, 9.75e-05, 9.75e-05, 21.02801615], [1516731540000, 9.75e-05, 9.781e-05, 9.75e-05, 9.781e-05, 2083.59688474], [1516731600000, 9.781e-05, 9.799e-05, 9.77e-05, 9.77e-05, 8096.08711448], [1516731660000, 9.794e-05, 9.8e-05, 9.755e-05, 9.8e-05, 1107.77347037], [1516731720000, 9.8e-05, 9.822e-05, 9.8e-05, 9.82e-05, 697.68010634], [1516731780000, 9.818e-05, 9.818e-05, 9.816e-05, 9.816e-05, 2920.8686705], [1516731840000, 9.813e-05, 9.813e-05, 9.813e-05, 9.813e-05, 12.71948239], [1516731900000, 9.811e-05, 9.811e-05, 9.805e-05, 9.805e-05, 354.30950446], [1516731960000, 9.818e-05, 9.818e-05, 9.78e-05, 9.78e-05, 314.97516203], [1516732080000, 9.78e-05, 9.81e-05, 9.78e-05, 9.81e-05, 440.24764109], [1516732140000, 9.78e-05, 9.78e-05, 9.78e-05, 9.78e-05, 1306.77689449], [1516732200000, 9.78e-05, 9.78e-05, 9.755e-05, 9.755e-05, 246.42409126], [1516732260000, 9.755e-05, 9.755e-05, 9.75e-05, 9.75e-05, 878.38895571], [1516732380000, 9.78e-05, 9.78e-05, 9.78e-05, 9.78e-05, 236.70900299], [1516732440000, 9.78e-05, 9.78e-05, 9.78e-05, 9.78e-05, 102.24949], [1516732560000, 9.78e-05, 9.78e-05, 9.78e-05, 9.78e-05, 436.46102071], [1516732740000, 9.78e-05, 9.78e-05, 9.78e-05, 9.78e-05, 375.01757055], [1516732800000, 9.804e-05, 9.804e-05, 9.804e-05, 9.804e-05, 100.301003], [1516732860000, 9.76e-05, 9.76e-05, 9.76e-05, 9.76e-05, 4130.4647085], [1516732920000, 9.76e-05, 9.76e-05, 9.76e-05, 9.76e-05, 270.24036], [1516732980000, 9.761e-05, 9.761e-05, 9.76e-05, 9.76e-05, 755.10366626], [1516733040000, 9.76e-05, 9.76e-05, 9.76e-05, 9.76e-05, 6.00240096], [1516733100000, 9.8e-05, 9.82e-05, 9.752e-05, 9.752e-05, 6327.34024279], [1516733160000, 9.751e-05, 9.8e-05, 9.751e-05, 9.8e-05, 688.33036996], [1516733220000, 9.78e-05, 9.78e-05, 9.78e-05, 9.78e-05, 15.18847924], [1516733280000, 9.8e-05, 9.823e-05, 9.78e-05, 9.823e-05, 692.6170853], [1516733340000, 9.767e-05, 9.767e-05, 9.767e-05, 9.767e-05, 80.0], [1516733400000, 9.751e-05, 9.825e-05, 9.75e-05, 9.825e-05, 828.48893827], [1516733520000, 9.767e-05, 9.767e-05, 9.75e-05, 9.75e-05, 291.30354363], [1516733580000, 9.807e-05, 9.807e-05, 9.75e-05, 9.75e-05, 184.32616363], [1516733700000, 9.76e-05, 9.826e-05, 9.76e-05, 9.826e-05, 758.90788967], [1516733760000, 9.76e-05, 9.76e-05, 9.76e-05, 9.76e-05, 500.0], [1516733820000, 9.76e-05, 9.76e-05, 9.76e-05, 9.76e-05, 462.75628096], [1516733880000, 9.76e-05, 9.76e-05, 9.75e-05, 9.75e-05, 10310.98927294], [1516733940000, 9.751e-05, 9.76e-05, 9.75e-05, 9.76e-05, 5283.14766551], [1516734000000, 9.75e-05, 9.76e-05, 9.75e-05, 9.76e-05, 584.78541427], [1516734060000, 9.76e-05, 9.76e-05, 9.76e-05, 9.76e-05, 678.46444442], [1516734120000, 9.76e-05, 9.76e-05, 9.76e-05, 9.76e-05, 367.46299899], [1516734240000, 9.729e-05, 9.729e-05, 9.729e-05, 9.729e-05, 35.0], [1516734300000, 9.76e-05, 9.76e-05, 9.76e-05, 9.76e-05, 50.0], [1516734360000, 9.729e-05, 9.729e-05, 9.725e-05, 9.725e-05, 232.35325032], [1516734540000, 9.76e-05, 9.76e-05, 9.76e-05, 9.76e-05, 102.45902], [1516734600000, 9.76e-05, 9.76e-05, 9.76e-05, 9.76e-05, 70.6001856], [1516734660000, 9.75e-05, 9.75e-05, 9.75e-05, 9.75e-05, 10.0], [1516734780000, 9.71e-05, 9.71e-05, 9.71e-05, 9.71e-05, 46.20095244], [1516734840000, 9.71e-05, 9.71e-05, 9.71e-05, 9.71e-05, 546.5054024], [1516734900000, 9.71e-05, 9.71e-05, 9.71e-05, 9.71e-05, 106.78728188], [1516734960000, 9.71e-05, 9.735e-05, 9.71e-05, 9.735e-05, 405.79018735], [1516735020000, 9.71e-05, 9.71e-05, 9.71e-05, 9.71e-05, 988.700104], [1516735080000, 9.759e-05, 9.759e-05, 9.71e-05, 9.71e-05, 122.26895966], [1516735260000, 9.75e-05, 9.75e-05, 9.75e-05, 9.75e-05, 1261.20607505], [1516735320000, 9.75e-05, 9.75e-05, 9.71e-05, 9.71e-05, 464.62148382], [1516735380000, 9.71e-05, 9.71e-05, 9.7e-05, 9.7e-05, 2880.11313829], [1516735440000, 9.71e-05, 9.71e-05, 9.699e-05, 9.699e-05, 2033.03762819], [1516735500000, 9.699e-05, 9.71e-05, 9.699e-05, 9.699e-05, 1041.51447891], [1516735560000, 9.699e-05, 9.71e-05, 9.699e-05, 9.699e-05, 433.9006173], [1516735620000, 9.71e-05, 9.71e-05, 9.699e-05, 9.699e-05, 302.98661], [1516735680000, 9.71e-05, 9.71e-05, 9.677e-05, 9.677e-05, 1164.028122], [1516735740000, 9.677e-05, 9.71e-05, 9.677e-05, 9.71e-05, 1307.07109564], [1516735800000, 9.662e-05, 9.7e-05, 9.661e-05, 9.7e-05, 144.79934225], [1516735860000, 9.7e-05, 9.7e-05, 9.7e-05, 9.7e-05, 227.88098329], [1516735920000, 9.7e-05, 9.7e-05, 9.7e-05, 9.7e-05, 746.34582084], [1516735980000, 9.7e-05, 9.7e-05, 9.7e-05, 9.7e-05, 1619.01543999], [1516736040000, 9.68e-05, 9.7e-05, 9.68e-05, 9.7e-05, 288.09759981], [1516736100000, 9.68e-05, 9.68e-05, 9.68e-05, 9.68e-05, 95.26858044], [1516736160000, 9.68e-05, 9.7e-05, 9.661e-05, 9.7e-05, 314.48159453], [1516736220000, 9.7e-05, 9.7e-05, 9.661e-05, 9.661e-05, 1612.28634069], [1516736280000, 9.653e-05, 9.661e-05, 9.65e-05, 9.661e-05, 694.31344977], [1516736340000, 9.65e-05, 9.65e-05, 9.616e-05, 9.616e-05, 100.0], [1516736400000, 9.65e-05, 9.661e-05, 9.65e-05, 9.661e-05, 1124.65343677], [1516736460000, 9.654e-05, 9.654e-05, 9.616e-05, 9.616e-05, 3715.57601447], [1516736520000, 9.616e-05, 9.65e-05, 9.55e-05, 9.649e-05, 11220.75937442], [1516736580000, 9.649e-05, 9.649e-05, 9.55e-05, 9.637e-05, 884.69535715], [1516736640000, 9.55e-05, 9.551e-05, 9.55e-05, 9.55e-05, 452.09203964], [1516736700000, 9.552e-05, 9.57e-05, 9.551e-05, 9.57e-05, 2749.88958895], [1516736760000, 9.57e-05, 9.57e-05, 9.55e-05, 9.551e-05, 1018.63873546], [1516736820000, 9.551e-05, 9.551e-05, 9.551e-05, 9.551e-05, 130.87634802], [1516736880000, 9.551e-05, 9.636e-05, 9.551e-05, 9.635e-05, 1673.28409633], [1516736940000, 9.635e-05, 9.636e-05, 9.635e-05, 9.636e-05, 606.94648504], [1516737000000, 9.635e-05, 9.636e-05, 9.635e-05, 9.636e-05, 138.40608065], [1516737060000, 9.636e-05, 9.637e-05, 9.564e-05, 9.58e-05, 1597.52595409], [1516737120000, 9.58e-05, 9.59e-05, 9.564e-05, 9.59e-05, 1615.33332748], [1516737180000, 9.59e-05, 9.6e-05, 9.548e-05, 9.6e-05, 3791.59817408], [1516737240000, 9.6e-05, 9.6e-05, 9.55e-05, 9.6e-05, 464.09845058], [1516737300000, 9.59e-05, 9.59e-05, 9.59e-05, 9.59e-05, 154.29908375], [1516737360000, 9.59e-05, 9.59e-05, 9.59e-05, 9.59e-05, 10.34590641], [1516737420000, 9.58e-05, 9.58e-05, 9.554e-05, 9.554e-05, 157.27677816], [1516737480000, 9.58e-05, 9.6e-05, 9.58e-05, 9.6e-05, 34964.24058489], [1516737540000, 9.59e-05, 9.59e-05, 9.59e-05, 9.59e-05, 200.19551615], [1516737600000, 9.59e-05, 9.59e-05, 9.59e-05, 9.59e-05, 1534.61334123], [1516737660000, 9.59e-05, 9.59e-05, 9.59e-05, 9.59e-05, 178.4608802], [1516737720000, 9.554e-05, 9.555e-05, 9.554e-05, 9.554e-05, 478.98333099], [1516737780000, 9.59e-05, 9.59e-05, 9.59e-05, 9.59e-05, 214.59854014], [1516737900000, 9.561e-05, 9.561e-05, 9.561e-05, 9.561e-05, 11.17160051], [1516737960000, 9.58e-05, 9.58e-05, 9.57e-05, 9.57e-05, 1051.20988927], [1516738020000, 9.57e-05, 9.57e-05, 9.56e-05, 9.56e-05, 1909.90193625], [1516738080000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 118.07732497], [1516738140000, 9.56e-05, 9.59e-05, 9.56e-05, 9.59e-05, 1783.76672819], [1516738200000, 9.57e-05, 9.58e-05, 9.554e-05, 9.58e-05, 505.56143389], [1516738260000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 493.79368703], [1516738320000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 731.9577022], [1516738380000, 9.57e-05, 9.57e-05, 9.554e-05, 9.555e-05, 488.31347043], [1516738440000, 9.57e-05, 9.57e-05, 9.555e-05, 9.555e-05, 143.58005144], [1516738500000, 9.555e-05, 9.57e-05, 9.555e-05, 9.57e-05, 317.08081493], [1516738560000, 9.57e-05, 9.57e-05, 9.556e-05, 9.556e-05, 748.45479517], [1516738620000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 720.80796183], [1516738680000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 1010.35250159], [1516738740000, 9.57e-05, 9.57e-05, 9.56e-05, 9.56e-05, 2247.97148604], [1516738800000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 1942.16796041], [1516738860000, 9.57e-05, 9.57e-05, 9.555e-05, 9.555e-05, 888.67296181], [1516738920000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 1171.22810677], [1516738980000, 9.57e-05, 9.57e-05, 9.56e-05, 9.56e-05, 4638.42360502], [1516739040000, 9.57e-05, 9.57e-05, 9.556e-05, 9.556e-05, 121.26145844], [1516739100000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 501.77359199], [1516739160000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 1402.45070768], [1516739220000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 23.93147217], [1516739280000, 9.555e-05, 9.57e-05, 9.545e-05, 9.57e-05, 2444.44989528], [1516739340000, 9.57e-05, 9.59e-05, 9.545e-05, 9.59e-05, 3497.73385533], [1516739400000, 9.59e-05, 9.59e-05, 9.59e-05, 9.59e-05, 34.15200807], [1516739460000, 9.57e-05, 9.57e-05, 9.545e-05, 9.57e-05, 2481.29192323], [1516739520000, 9.569e-05, 9.627e-05, 9.569e-05, 9.57e-05, 6061.23086227], [1516739580000, 9.62e-05, 9.62e-05, 9.62e-05, 9.62e-05, 295.96246323], [1516739640000, 9.571e-05, 9.571e-05, 9.571e-05, 9.571e-05, 150.0], [1516739700000, 9.585e-05, 9.585e-05, 9.571e-05, 9.571e-05, 565.35046308], [1516739760000, 9.6e-05, 9.62e-05, 9.6e-05, 9.62e-05, 203.17379364], [1516739820000, 9.62e-05, 9.62e-05, 9.572e-05, 9.62e-05, 4450.10443649], [1516739880000, 9.62e-05, 9.62e-05, 9.62e-05, 9.62e-05, 518.45964605], [1516739940000, 9.62e-05, 9.62e-05, 9.62e-05, 9.62e-05, 235.49869343], [1516740000000, 9.62e-05, 9.62e-05, 9.62e-05, 9.62e-05, 353.24591843], [1516740060000, 9.578e-05, 9.62e-05, 9.576e-05, 9.62e-05, 485.12491594], [1516740120000, 9.62e-05, 9.62e-05, 9.62e-05, 9.62e-05, 4707.51917727], [1516740180000, 9.62e-05, 9.65e-05, 9.577e-05, 9.577e-05, 402.2247283], [1516740240000, 9.62e-05, 9.65e-05, 9.62e-05, 9.65e-05, 342.2436274], [1516740300000, 9.63e-05, 9.63e-05, 9.621e-05, 9.621e-05, 753.87983992], [1516740360000, 9.63e-05, 9.63e-05, 9.336e-05, 9.627e-05, 92112.68092203], [1516740420000, 9.618e-05, 9.618e-05, 9.527e-05, 9.612e-05, 89.46761085], [1516740480000, 9.595e-05, 9.6e-05, 9.592e-05, 9.592e-05, 8095.5095861], [1516740540000, 9.592e-05, 9.592e-05, 9.591e-05, 9.591e-05, 962.3428671], [1516740600000, 9.594e-05, 9.594e-05, 9.591e-05, 9.591e-05, 233.27197269], [1516740660000, 9.591e-05, 9.591e-05, 9.575e-05, 9.575e-05, 2657.60777295], [1516740720000, 9.577e-05, 9.577e-05, 9.55e-05, 9.577e-05, 225.4016903], [1516740780000, 9.577e-05, 9.594e-05, 9.576e-05, 9.59e-05, 26959.9018628], [1516740840000, 9.552e-05, 9.552e-05, 9.525e-05, 9.525e-05, 8762.36281355], [1516740900000, 9.525e-05, 9.525e-05, 9.525e-05, 9.525e-05, 103.310003], [1516740960000, 9.525e-05, 9.588e-05, 9.525e-05, 9.588e-05, 1146.842828], [1516741020000, 9.578e-05, 9.578e-05, 9.578e-05, 9.578e-05, 20.061003], [1516741080000, 9.575e-05, 9.58e-05, 9.573e-05, 9.573e-05, 1254.98887763], [1516741140000, 9.573e-05, 9.573e-05, 9.525e-05, 9.569e-05, 402.63610478], [1516741200000, 9.567e-05, 9.567e-05, 9.567e-05, 9.567e-05, 53.45932245], [1516741260000, 9.526e-05, 9.526e-05, 9.525e-05, 9.525e-05, 88.92417259], [1516741320000, 9.564e-05, 9.565e-05, 9.55e-05, 9.55e-05, 785.78952696], [1516741380000, 9.525e-05, 9.525e-05, 9.525e-05, 9.525e-05, 99.0], [1516741440000, 9.549e-05, 9.55e-05, 9.526e-05, 9.55e-05, 11132.32857303], [1516741560000, 9.505e-05, 9.55e-05, 9.501e-05, 9.55e-05, 312.4662986], [1516741620000, 9.502e-05, 9.502e-05, 9.457e-05, 9.457e-05, 1448.77739602], [1516741680000, 9.456e-05, 9.55e-05, 9.456e-05, 9.55e-05, 127.34252698], [1516741800000, 9.548e-05, 9.548e-05, 9.548e-05, 9.548e-05, 45.97543233], [1516741860000, 9.544e-05, 9.544e-05, 9.465e-05, 9.543e-05, 1050.78788754], [1516741920000, 9.543e-05, 9.543e-05, 9.543e-05, 9.543e-05, 171.52666512], [1516741980000, 9.54e-05, 9.543e-05, 9.54e-05, 9.543e-05, 2909.87923673], [1516742040000, 9.545e-05, 9.55e-05, 9.545e-05, 9.55e-05, 716.02655432], [1516742100000, 9.55e-05, 9.55e-05, 9.542e-05, 9.542e-05, 1360.0], [1516742160000, 9.55e-05, 9.55e-05, 9.542e-05, 9.542e-05, 1271.52994405], [1516742220000, 9.542e-05, 9.542e-05, 9.542e-05, 9.542e-05, 42.29595472], [1516742280000, 9.542e-05, 9.542e-05, 9.542e-05, 9.542e-05, 95.10232969], [1516742340000, 9.542e-05, 9.542e-05, 9.532e-05, 9.532e-05, 55.05560649], [1516742400000, 9.532e-05, 9.532e-05, 9.53e-05, 9.53e-05, 3057.19952877], [1516742460000, 9.53e-05, 9.53e-05, 9.527e-05, 9.53e-05, 359.2732813], [1516742520000, 9.48e-05, 9.53e-05, 9.48e-05, 9.53e-05, 41.02519196], [1516742580000, 9.52e-05, 9.52e-05, 9.5e-05, 9.52e-05, 438.90665167], [1516742640000, 9.52e-05, 9.52e-05, 9.52e-05, 9.52e-05, 42.01680672], [1516742700000, 9.52e-05, 9.53e-05, 9.52e-05, 9.53e-05, 1292.94004133], [1516742760000, 9.53e-05, 9.53e-05, 9.53e-05, 9.53e-05, 610.95480371], [1516742820000, 9.542e-05, 9.55e-05, 9.542e-05, 9.55e-05, 291.84363843], [1516742880000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 187.13048521], [1516742940000, 9.55e-05, 9.573e-05, 9.55e-05, 9.572e-05, 630.12124491], [1516743000000, 9.568e-05, 9.568e-05, 9.568e-05, 9.568e-05, 732.28619111], [1516743060000, 9.568e-05, 9.569e-05, 9.568e-05, 9.569e-05, 831.79316683], [1516743120000, 9.568e-05, 9.568e-05, 9.568e-05, 9.568e-05, 1707.38280022], [1516743180000, 9.55e-05, 9.569e-05, 9.55e-05, 9.55e-05, 486.62389316], [1516743240000, 9.569e-05, 9.569e-05, 9.569e-05, 9.569e-05, 869.89651394], [1516743300000, 9.569e-05, 9.569e-05, 9.569e-05, 9.569e-05, 104.50412791], [1516743420000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 30.68], [1516743540000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 200.0], [1516743600000, 9.55e-05, 9.56e-05, 9.55e-05, 9.56e-05, 184.5485483], [1516743660000, 9.56e-05, 9.56e-05, 9.55e-05, 9.56e-05, 585.46017017], [1516743720000, 9.56e-05, 9.56e-05, 9.56e-05, 9.56e-05, 10.70091751], [1516743780000, 9.56e-05, 9.56e-05, 9.56e-05, 9.56e-05, 401.62797769], [1516743840000, 9.56e-05, 9.56e-05, 9.479e-05, 9.501e-05, 1880.84211111], [1516743900000, 9.471e-05, 9.551e-05, 9.47e-05, 9.551e-05, 279.72878593], [1516743960000, 9.475e-05, 9.551e-05, 9.475e-05, 9.551e-05, 181.26896888], [1516744020000, 9.551e-05, 9.57e-05, 9.551e-05, 9.57e-05, 253.28997774], [1516744080000, 9.57e-05, 9.57e-05, 9.494e-05, 9.494e-05, 2534.35740421], [1516744140000, 9.494e-05, 9.57e-05, 9.457e-05, 9.549e-05, 5735.82308465], [1516744200000, 9.549e-05, 9.56e-05, 9.549e-05, 9.56e-05, 1291.66812535], [1516744260000, 9.57e-05, 9.591e-05, 9.57e-05, 9.591e-05, 466.47390943], [1516744320000, 9.578e-05, 9.591e-05, 9.56e-05, 9.56e-05, 3078.19626853], [1516744380000, 9.56e-05, 9.56e-05, 9.55e-05, 9.55e-05, 189.32701438], [1516744440000, 9.486e-05, 9.486e-05, 9.486e-05, 9.486e-05, 175.01757055], [1516744500000, 9.55e-05, 9.58e-05, 9.55e-05, 9.58e-05, 2056.38160285], [1516744560000, 9.58e-05, 9.58e-05, 9.485e-05, 9.485e-05, 3488.57675723], [1516744620000, 9.579e-05, 9.58e-05, 9.579e-05, 9.579e-05, 931.83787644], [1516744680000, 9.58e-05, 9.58e-05, 9.58e-05, 9.58e-05, 142.48969659], [1516744740000, 9.58e-05, 9.591e-05, 9.58e-05, 9.591e-05, 2098.28754154], [1516744800000, 9.59e-05, 9.647e-05, 9.59e-05, 9.591e-05, 3108.27380588], [1516744860000, 9.579e-05, 9.579e-05, 9.53e-05, 9.579e-05, 206.05068776], [1516744920000, 9.579e-05, 9.65e-05, 9.579e-05, 9.65e-05, 2333.81972578], [1516744980000, 9.65e-05, 9.783e-05, 9.597e-05, 9.698e-05, 5427.91254762], [1516745040000, 9.698e-05, 9.791e-05, 9.697e-05, 9.79e-05, 10551.96646507], [1516745100000, 9.79e-05, 9.792e-05, 9.593e-05, 9.699e-05, 4896.60252022], [1516745160000, 9.699e-05, 9.699e-05, 9.641e-05, 9.69e-05, 763.60279856], [1516745220000, 9.689e-05, 9.699e-05, 9.68e-05, 9.68e-05, 7573.26812123], [1516745340000, 9.68e-05, 9.68e-05, 9.68e-05, 9.68e-05, 4054.0], [1516745400000, 9.67e-05, 9.67e-05, 9.602e-05, 9.602e-05, 2070.30728745], [1516745460000, 9.67e-05, 9.68e-05, 9.602e-05, 9.68e-05, 1030.46337179], [1516745520000, 9.602e-05, 9.69e-05, 9.602e-05, 9.69e-05, 4998.20782357], [1516745580000, 9.69e-05, 9.69e-05, 9.605e-05, 9.605e-05, 87.04392591], [1516745640000, 9.613e-05, 9.69e-05, 9.612e-05, 9.69e-05, 1024.75362005], [1516745700000, 9.69e-05, 9.69e-05, 9.628e-05, 9.69e-05, 122.43715969], [1516745760000, 9.64e-05, 9.64e-05, 9.64e-05, 9.64e-05, 1020.78315223], [1516745820000, 9.69e-05, 9.69e-05, 9.69e-05, 9.69e-05, 116.9711406], [1516745880000, 9.69e-05, 9.69e-05, 9.64e-05, 9.64e-05, 1403.50425009], [1516745940000, 9.61e-05, 9.672e-05, 9.458e-05, 9.527e-05, 7252.97753105], [1516746000000, 9.648e-05, 9.658e-05, 9.538e-05, 9.658e-05, 346.10791859], [1516746060000, 9.648e-05, 9.658e-05, 9.648e-05, 9.658e-05, 630.57275398], [1516746120000, 9.658e-05, 9.658e-05, 9.658e-05, 9.658e-05, 104.60034117], [1516746180000, 9.658e-05, 9.658e-05, 9.65e-05, 9.65e-05, 4926.44936455], [1516746240000, 9.65e-05, 9.65e-05, 9.648e-05, 9.648e-05, 24.3123582], [1516746300000, 9.65e-05, 9.657e-05, 9.65e-05, 9.657e-05, 315.60025953], [1516746360000, 9.65e-05, 9.65e-05, 9.647e-05, 9.647e-05, 936.22434113], [1516746420000, 9.622e-05, 9.647e-05, 9.622e-05, 9.647e-05, 409.65867563], [1516746480000, 9.646e-05, 9.646e-05, 9.646e-05, 9.646e-05, 473.70194246], [1516746600000, 9.646e-05, 9.647e-05, 9.551e-05, 9.551e-05, 1117.11633873], [1516746660000, 9.646e-05, 9.646e-05, 9.645e-05, 9.645e-05, 68.12605872], [1516746720000, 9.645e-05, 9.645e-05, 9.553e-05, 9.553e-05, 366.67574868], [1516746780000, 9.647e-05, 9.65e-05, 9.647e-05, 9.65e-05, 29391.73488161], [1516746840000, 9.648e-05, 9.649e-05, 9.556e-05, 9.649e-05, 3200.24591442], [1516746900000, 9.67e-05, 9.69e-05, 9.65e-05, 9.652e-05, 3641.36938562], [1516746960000, 9.652e-05, 9.652e-05, 9.65e-05, 9.652e-05, 7621.66288508], [1516747020000, 9.676e-05, 9.688e-05, 9.652e-05, 9.688e-05, 260.52705916], [1516747080000, 9.652e-05, 9.652e-05, 9.65e-05, 9.65e-05, 7229.5588324], [1516747140000, 9.65e-05, 9.688e-05, 9.65e-05, 9.686e-05, 2964.16830194], [1516747200000, 9.669e-05, 9.683e-05, 9.65e-05, 9.65e-05, 321.63670557], [1516747260000, 9.68e-05, 9.767e-05, 9.65e-05, 9.765e-05, 4879.00829258], [1516747320000, 9.765e-05, 9.766e-05, 9.76e-05, 9.76e-05, 1437.57834335], [1516747380000, 9.655e-05, 9.656e-05, 9.65e-05, 9.65e-05, 939.43903273], [1516747440000, 9.656e-05, 9.748e-05, 9.65e-05, 9.748e-05, 24827.23404437], [1516747500000, 9.748e-05, 9.748e-05, 9.748e-05, 9.748e-05, 322.56202138], [1516747560000, 9.752e-05, 9.757e-05, 9.752e-05, 9.752e-05, 730.19239184], [1516747620000, 9.752e-05, 9.773e-05, 9.747e-05, 9.757e-05, 8516.37091459], [1516747680000, 9.757e-05, 9.758e-05, 9.757e-05, 9.758e-05, 5144.06540002], [1516747740000, 9.773e-05, 9.779e-05, 9.758e-05, 9.779e-05, 4675.49527461], [1516747800000, 9.798e-05, 9.798e-05, 9.779e-05, 9.779e-05, 12586.23895013], [1516747860000, 9.779e-05, 9.81e-05, 9.779e-05, 9.798e-05, 3820.34643445], [1516747920000, 9.81e-05, 9.871e-05, 9.798e-05, 9.798e-05, 4854.67921666], [1516747980000, 9.798e-05, 9.84e-05, 9.779e-05, 9.84e-05, 13398.73455589], [1516748040000, 9.841e-05, 9.876e-05, 9.84e-05, 9.84e-05, 15679.53078811], [1516748100000, 9.84e-05, 9.84e-05, 9.78e-05, 9.78e-05, 3186.3055586], [1516748160000, 9.84e-05, 9.857e-05, 9.84e-05, 9.84e-05, 394.83873058], [1516748220000, 9.874e-05, 9.874e-05, 9.874e-05, 9.874e-05, 1565.81778107], [1516748280000, 9.877e-05, 9.877e-05, 9.84e-05, 9.877e-05, 14887.24671478], [1516748340000, 9.877e-05, 9.878e-05, 9.877e-05, 9.878e-05, 1145.30643363], [1516748400000, 9.877e-05, 9.877e-05, 9.782e-05, 9.783e-05, 5963.13855981], [1516748520000, 9.875e-05, 9.877e-05, 9.787e-05, 9.877e-05, 950.02676597], [1516748580000, 9.877e-05, 9.877e-05, 9.876e-05, 9.876e-05, 558.8185204], [1516748640000, 9.791e-05, 9.878e-05, 9.791e-05, 9.794e-05, 1943.47974534], [1516748700000, 9.795e-05, 9.878e-05, 9.794e-05, 9.796e-05, 4389.41405448], [1516748820000, 9.877e-05, 9.878e-05, 9.877e-05, 9.878e-05, 4691.3730425], [1516748880000, 9.878e-05, 9.878e-05, 9.866e-05, 9.866e-05, 81.09100299], [1516748940000, 9.878e-05, 9.878e-05, 9.85e-05, 9.85e-05, 6633.77758902], [1516749000000, 9.85e-05, 9.878e-05, 9.796e-05, 9.805e-05, 13674.80032914], [1516749060000, 9.811e-05, 9.811e-05, 9.811e-05, 9.811e-05, 110.0], [1516749120000, 9.89e-05, 9.89e-05, 9.795e-05, 9.795e-05, 292.0], [1516749180000, 9.89e-05, 9.9e-05, 9.827e-05, 9.9e-05, 340.19690657], [1516749240000, 9.828e-05, 9.828e-05, 9.828e-05, 9.828e-05, 580.0], [1516749300000, 9.899e-05, 9.899e-05, 9.899e-05, 9.899e-05, 81.70122207], [1516749360000, 9.812e-05, 9.897e-05, 9.796e-05, 9.897e-05, 5329.27763502], [1516749420000, 9.812e-05, 9.895e-05, 9.796e-05, 9.895e-05, 463.34494649], [1516749480000, 9.895e-05, 9.897e-05, 9.895e-05, 9.895e-05, 867.63879537], [1516749540000, 9.897e-05, 9.9e-05, 9.897e-05, 9.9e-05, 5376.34461678], [1516749600000, 9.911e-05, 9.929e-05, 9.9e-05, 9.929e-05, 14248.94364422], [1516749660000, 9.91e-05, 9.91e-05, 9.797e-05, 9.797e-05, 2104.14120582], [1516749720000, 9.895e-05, 9.895e-05, 9.801e-05, 9.801e-05, 456.33791957], [1516749780000, 9.801e-05, 9.894e-05, 9.801e-05, 9.894e-05, 1240.14314813], [1516749840000, 9.894e-05, 9.895e-05, 9.797e-05, 9.797e-05, 3136.82001566], [1516749900000, 9.797e-05, 9.797e-05, 9.795e-05, 9.795e-05, 838.18694571], [1516749960000, 9.794e-05, 9.85e-05, 9.794e-05, 9.85e-05, 4751.98155421], [1516750020000, 9.85e-05, 9.85e-05, 9.85e-05, 9.85e-05, 512.8540227], [1516750080000, 9.85e-05, 9.85e-05, 9.816e-05, 9.816e-05, 544.19159972], [1516750200000, 9.794e-05, 9.85e-05, 9.794e-05, 9.85e-05, 925.09035535], [1516750260000, 9.85e-05, 9.85e-05, 9.794e-05, 9.794e-05, 393.10828862], [1516750320000, 9.78e-05, 9.794e-05, 9.758e-05, 9.794e-05, 1857.72402223], [1516750380000, 9.895e-05, 9.895e-05, 9.758e-05, 9.758e-05, 735.151003], [1516750440000, 9.761e-05, 9.892e-05, 9.761e-05, 9.78e-05, 4218.98716235], [1516750500000, 9.803e-05, 9.89e-05, 9.758e-05, 9.758e-05, 7113.92471913], [1516750560000, 9.758e-05, 9.758e-05, 9.758e-05, 9.758e-05, 20.40925454], [1516750620000, 9.76e-05, 9.76e-05, 9.758e-05, 9.758e-05, 534.57931707], [1516750680000, 9.854e-05, 9.854e-05, 9.854e-05, 9.854e-05, 41.86974886], [1516750740000, 9.846e-05, 9.846e-05, 9.846e-05, 9.846e-05, 111.92956819], [1516750800000, 9.782e-05, 9.854e-05, 9.758e-05, 9.854e-05, 1821.94344749], [1516750860000, 9.847e-05, 9.847e-05, 9.845e-05, 9.845e-05, 936.9572312], [1516750920000, 9.843e-05, 9.852e-05, 9.843e-05, 9.848e-05, 1938.44728939], [1516750980000, 9.846e-05, 9.854e-05, 9.846e-05, 9.854e-05, 890.34854111], [1516751040000, 9.846e-05, 9.846e-05, 9.811e-05, 9.811e-05, 420.31017666], [1516751100000, 9.811e-05, 9.811e-05, 9.761e-05, 9.811e-05, 1774.99280063], [1516751160000, 9.811e-05, 9.811e-05, 9.811e-05, 9.811e-05, 20.31285481], [1516751220000, 9.811e-05, 9.811e-05, 9.811e-05, 9.811e-05, 20.0], [1516751280000, 9.81e-05, 9.81e-05, 9.81e-05, 9.81e-05, 828.56396942], [1516751340000, 9.761e-05, 9.845e-05, 9.761e-05, 9.845e-05, 4912.16385987], [1516751400000, 9.845e-05, 9.845e-05, 9.78e-05, 9.78e-05, 276.24245977], [1516751460000, 9.78e-05, 9.78e-05, 9.761e-05, 9.78e-05, 2582.7408525], [1516751520000, 9.845e-05, 9.845e-05, 9.757e-05, 9.757e-05, 11580.9172979], [1516751580000, 9.757e-05, 9.757e-05, 9.757e-05, 9.757e-05, 2270.26750536], [1516751640000, 9.757e-05, 9.757e-05, 9.757e-05, 9.757e-05, 255.28656202], [1516751700000, 9.833e-05, 9.833e-05, 9.833e-05, 9.833e-05, 70.79707402], [1516751820000, 9.757e-05, 9.846e-05, 9.757e-05, 9.846e-05, 16289.93595205], [1516751880000, 9.845e-05, 9.854e-05, 9.845e-05, 9.845e-05, 396.45562492], [1516751940000, 9.854e-05, 9.929e-05, 9.854e-05, 9.883e-05, 8832.22545299], [1516752000000, 9.883e-05, 9.9e-05, 9.846e-05, 9.848e-05, 6622.15326656], [1516752060000, 9.845e-05, 9.929e-05, 9.845e-05, 9.858e-05, 3503.37951149], [1516752120000, 9.9e-05, 9.9e-05, 9.846e-05, 9.851e-05, 10992.52187031], [1516752180000, 9.851e-05, 9.929e-05, 9.845e-05, 9.845e-05, 6768.00574592], [1516752240000, 9.85e-05, 9.929e-05, 9.845e-05, 9.845e-05, 3670.45635432], [1516752300000, 9.845e-05, 9.845e-05, 9.845e-05, 9.845e-05, 3821.56779541], [1516752360000, 9.845e-05, 9.929e-05, 9.845e-05, 9.929e-05, 4163.16742884], [1516752420000, 9.845e-05, 9.845e-05, 9.789e-05, 9.789e-05, 12031.29123186], [1516752480000, 9.889e-05, 9.889e-05, 9.889e-05, 9.889e-05, 24.60240837], [1516752540000, 9.744e-05, 9.883e-05, 9.689e-05, 9.689e-05, 17963.67388691], [1516752600000, 9.69e-05, 9.693e-05, 9.689e-05, 9.693e-05, 830.226987], [1516752660000, 9.7e-05, 9.7e-05, 9.67e-05, 9.67e-05, 2874.72041347], [1516752720000, 9.67e-05, 9.672e-05, 9.664e-05, 9.664e-05, 2220.17934247], [1516752780000, 9.662e-05, 9.672e-05, 9.649e-05, 9.672e-05, 7278.72737329], [1516752840000, 9.672e-05, 9.672e-05, 9.672e-05, 9.672e-05, 2978.17134018], [1516752900000, 9.672e-05, 9.7e-05, 9.672e-05, 9.7e-05, 1594.25138914], [1516752960000, 9.672e-05, 9.7e-05, 9.672e-05, 9.675e-05, 866.28642416], [1516753020000, 9.675e-05, 9.675e-05, 9.675e-05, 9.675e-05, 94.95804896], [1516753080000, 9.674e-05, 9.674e-05, 9.636e-05, 9.636e-05, 3403.30310787], [1516753140000, 9.7e-05, 9.7e-05, 9.7e-05, 9.7e-05, 99.71241692], [1516753200000, 9.636e-05, 9.636e-05, 9.636e-05, 9.636e-05, 423.65059985], [1516753260000, 9.636e-05, 9.699e-05, 9.636e-05, 9.699e-05, 250.39942966], [1516753320000, 9.699e-05, 9.699e-05, 9.699e-05, 9.699e-05, 643.661815], [1516753440000, 9.699e-05, 9.699e-05, 9.699e-05, 9.699e-05, 1067.325605], [1516753500000, 9.636e-05, 9.698e-05, 9.636e-05, 9.698e-05, 1456.80054968], [1516753560000, 9.698e-05, 9.699e-05, 9.551e-05, 9.699e-05, 1037.28296705], [1516753620000, 9.646e-05, 9.646e-05, 9.646e-05, 9.646e-05, 50.0], [1516753680000, 9.646e-05, 9.646e-05, 9.646e-05, 9.646e-05, 1342.36732998], [1516753740000, 9.651e-05, 9.651e-05, 9.566e-05, 9.566e-05, 798.21594955], [1516753800000, 9.696e-05, 9.696e-05, 9.568e-05, 9.569e-05, 857.53847324], [1516753860000, 9.575e-05, 9.575e-05, 9.574e-05, 9.574e-05, 284.49674928], [1516753980000, 9.574e-05, 9.574e-05, 9.568e-05, 9.568e-05, 490.40870319], [1516754040000, 9.568e-05, 9.69e-05, 9.56e-05, 9.56e-05, 174.46627893], [1516754100000, 9.56e-05, 9.682e-05, 9.557e-05, 9.682e-05, 751.00928627], [1516754160000, 9.685e-05, 9.685e-05, 9.685e-05, 9.685e-05, 123.90294269], [1516754220000, 9.602e-05, 9.602e-05, 9.567e-05, 9.602e-05, 492.46983261], [1516754280000, 9.567e-05, 9.673e-05, 9.55e-05, 9.673e-05, 2968.22847068], [1516754340000, 9.55e-05, 9.669e-05, 9.401e-05, 9.49e-05, 33069.67296507], [1516754400000, 9.466e-05, 9.634e-05, 9.451e-05, 9.451e-05, 7164.13190155], [1516754460000, 9.466e-05, 9.493e-05, 9.451e-05, 9.451e-05, 7077.27166056], [1516754520000, 9.472e-05, 9.49e-05, 9.387e-05, 9.448e-05, 3852.6002056], [1516754580000, 9.468e-05, 9.493e-05, 9.449e-05, 9.493e-05, 1872.85666271], [1516754640000, 9.448e-05, 9.601e-05, 9.448e-05, 9.601e-05, 2268.03307135], [1516754700000, 9.596e-05, 9.596e-05, 9.439e-05, 9.439e-05, 1399.46485069], [1516754760000, 9.439e-05, 9.575e-05, 9.439e-05, 9.574e-05, 822.11863159], [1516754820000, 9.566e-05, 9.566e-05, 9.421e-05, 9.558e-05, 2768.52021071], [1516754880000, 9.558e-05, 9.558e-05, 9.408e-05, 9.531e-05, 911.27897784], [1516754940000, 9.524e-05, 9.525e-05, 9.524e-05, 9.524e-05, 429.27668237], [1516755000000, 9.441e-05, 9.52e-05, 9.401e-05, 9.506e-05, 1065.20154699], [1516755060000, 9.501e-05, 9.501e-05, 9.4e-05, 9.499e-05, 6543.45165574], [1516755120000, 9.499e-05, 9.499e-05, 9.4e-05, 9.404e-05, 1000.70312334], [1516755180000, 9.404e-05, 9.498e-05, 9.38e-05, 9.492e-05, 5970.59224701], [1516755240000, 9.383e-05, 9.49e-05, 9.38e-05, 9.488e-05, 988.47376813], [1516755300000, 9.488e-05, 9.49e-05, 9.38e-05, 9.38e-05, 643.66770321], [1516755360000, 9.487e-05, 9.487e-05, 9.487e-05, 9.487e-05, 7.4113602], [1516755420000, 9.49e-05, 9.49e-05, 9.49e-05, 9.49e-05, 2553.80022014], [1516755480000, 9.49e-05, 9.524e-05, 9.487e-05, 9.487e-05, 2562.11962892], [1516755540000, 9.486e-05, 9.486e-05, 9.425e-05, 9.486e-05, 1560.98688141], [1516755600000, 9.486e-05, 9.486e-05, 9.4e-05, 9.4e-05, 122.47489655], [1516755660000, 9.486e-05, 9.486e-05, 9.486e-05, 9.486e-05, 96.80029387], [1516755720000, 9.45e-05, 9.486e-05, 9.45e-05, 9.486e-05, 391.23078113], [1516755780000, 9.486e-05, 9.486e-05, 9.486e-05, 9.486e-05, 7419.90085972], [1516755840000, 9.486e-05, 9.486e-05, 9.486e-05, 9.486e-05, 3228.12961635], [1516755900000, 9.486e-05, 9.486e-05, 9.486e-05, 9.486e-05, 1071.52737897], [1516755960000, 9.486e-05, 9.486e-05, 9.46e-05, 9.46e-05, 3310.60448982], [1516756020000, 9.486e-05, 9.486e-05, 9.486e-05, 9.486e-05, 437.3480873], [1516756080000, 9.401e-05, 9.486e-05, 9.401e-05, 9.486e-05, 7176.99992161], [1516756260000, 9.61e-05, 9.612e-05, 9.609e-05, 9.609e-05, 307.72827604], [1516756320000, 9.574e-05, 9.614e-05, 9.417e-05, 9.528e-05, 1138.3610154], [1516756380000, 9.51e-05, 9.526e-05, 9.418e-05, 9.525e-05, 316.52205029], [1516756440000, 9.526e-05, 9.526e-05, 9.454e-05, 9.526e-05, 172.45077032], [1516756500000, 9.517e-05, 9.643e-05, 9.517e-05, 9.643e-05, 2030.18852816], [1516756560000, 9.642e-05, 9.642e-05, 9.641e-05, 9.641e-05, 1866.39848521], [1516756620000, 9.64e-05, 9.64e-05, 9.64e-05, 9.64e-05, 18.93024504], [1516756740000, 9.64e-05, 9.64e-05, 9.64e-05, 9.64e-05, 295.02758882], [1516756800000, 9.543e-05, 9.56e-05, 9.543e-05, 9.544e-05, 225.85925144], [1516756860000, 9.635e-05, 9.635e-05, 9.635e-05, 9.635e-05, 80.76985071], [1516756920000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 104.45026178], [1516756980000, 9.57e-05, 9.632e-05, 9.57e-05, 9.572e-05, 3903.54216828], [1516757040000, 9.572e-05, 9.572e-05, 9.572e-05, 9.572e-05, 450.73827075], [1516757100000, 9.572e-05, 9.572e-05, 9.57e-05, 9.57e-05, 170.50261017], [1516757160000, 9.57e-05, 9.571e-05, 9.57e-05, 9.57e-05, 697.07527092], [1516757220000, 9.569e-05, 9.569e-05, 9.569e-05, 9.569e-05, 1035.70743613], [1516757280000, 9.569e-05, 9.569e-05, 9.569e-05, 9.569e-05, 139.37539253], [1516757340000, 9.569e-05, 9.57e-05, 9.569e-05, 9.57e-05, 408.47778876], [1516757460000, 9.538e-05, 9.538e-05, 9.516e-05, 9.516e-05, 1500.69122528], [1516757520000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 143.936793], [1516757580000, 9.538e-05, 9.57e-05, 9.516e-05, 9.516e-05, 1635.28314225], [1516757640000, 9.516e-05, 9.567e-05, 9.456e-05, 9.456e-05, 2390.59538691], [1516757700000, 9.56e-05, 9.56e-05, 9.457e-05, 9.554e-05, 4148.09028698], [1516757760000, 9.554e-05, 9.554e-05, 9.456e-05, 9.456e-05, 1242.48233826], [1516757820000, 9.556e-05, 9.566e-05, 9.457e-05, 9.566e-05, 2742.5647955], [1516758000000, 9.57e-05, 9.57e-05, 9.569e-05, 9.569e-05, 400.42774027], [1516758060000, 9.564e-05, 9.564e-05, 9.518e-05, 9.518e-05, 422.53285594], [1516758120000, 9.469e-05, 9.559e-05, 9.469e-05, 9.47e-05, 1075.48496333], [1516758180000, 9.469e-05, 9.469e-05, 9.467e-05, 9.467e-05, 100.0], [1516758240000, 9.548e-05, 9.548e-05, 9.467e-05, 9.544e-05, 415.99829858], [1516758420000, 9.519e-05, 9.519e-05, 9.467e-05, 9.467e-05, 2112.60636621], [1516758480000, 9.517e-05, 9.517e-05, 9.517e-05, 9.517e-05, 42.00442343], [1516758540000, 9.517e-05, 9.547e-05, 9.517e-05, 9.547e-05, 128.2555849], [1516758600000, 9.467e-05, 9.546e-05, 9.467e-05, 9.544e-05, 35.50453465], [1516758660000, 9.547e-05, 9.547e-05, 9.547e-05, 9.547e-05, 145.25511804], [1516758720000, 9.544e-05, 9.547e-05, 9.467e-05, 9.467e-05, 606.08108468], [1516758780000, 9.467e-05, 9.467e-05, 9.467e-05, 9.467e-05, 771.11828474], [1516758840000, 9.546e-05, 9.546e-05, 9.546e-05, 9.546e-05, 83.59522313], [1516758900000, 9.467e-05, 9.467e-05, 9.369e-05, 9.369e-05, 2925.28913314], [1516759080000, 9.52e-05, 9.52e-05, 9.52e-05, 9.52e-05, 105.0420168], [1516759200000, 9.402e-05, 9.523e-05, 9.402e-05, 9.523e-05, 59.97371133], [1516759260000, 9.52e-05, 9.527e-05, 9.518e-05, 9.527e-05, 210.601003], [1516759320000, 9.516e-05, 9.516e-05, 9.51e-05, 9.51e-05, 1117.68815638], [1516759380000, 9.509e-05, 9.509e-05, 9.361e-05, 9.361e-05, 830.5369687], [1516759440000, 9.365e-05, 9.499e-05, 9.316e-05, 9.316e-05, 3939.32077167], [1516759500000, 9.359e-05, 9.489e-05, 9.354e-05, 9.354e-05, 17290.43616866], [1516759620000, 9.467e-05, 9.474e-05, 9.377e-05, 9.377e-05, 468.63160457], [1516759680000, 9.46e-05, 9.46e-05, 9.378e-05, 9.449e-05, 1062.19160546], [1516759740000, 9.448e-05, 9.45e-05, 9.448e-05, 9.45e-05, 3474.16765543], [1516759800000, 9.448e-05, 9.45e-05, 9.365e-05, 9.365e-05, 3062.30905839], [1516759860000, 9.45e-05, 9.45e-05, 9.365e-05, 9.446e-05, 3654.84936162], [1516759920000, 9.446e-05, 9.45e-05, 9.446e-05, 9.45e-05, 15970.92187512], [1516759980000, 9.45e-05, 9.45e-05, 9.446e-05, 9.446e-05, 8621.62590095], [1516760100000, 9.446e-05, 9.446e-05, 9.377e-05, 9.446e-05, 1689.48667036], [1516760160000, 9.446e-05, 9.446e-05, 9.446e-05, 9.446e-05, 81.58383136], [1516760220000, 9.446e-05, 9.446e-05, 9.446e-05, 9.446e-05, 51.45974783], [1516760280000, 9.446e-05, 9.446e-05, 9.446e-05, 9.446e-05, 48.05673063], [1516760340000, 9.446e-05, 9.464e-05, 9.446e-05, 9.446e-05, 817.56921112], [1516760400000, 9.393e-05, 9.393e-05, 9.393e-05, 9.393e-05, 22.59095987], [1516760520000, 9.409e-05, 9.446e-05, 9.395e-05, 9.446e-05, 1366.34519681], [1516760580000, 9.409e-05, 9.509e-05, 9.409e-05, 9.509e-05, 1940.10089028], [1516760640000, 9.509e-05, 9.527e-05, 9.509e-05, 9.527e-05, 3481.61730507], [1516760700000, 9.527e-05, 9.527e-05, 9.527e-05, 9.527e-05, 11.02130786], [1516760760000, 9.509e-05, 9.527e-05, 9.509e-05, 9.527e-05, 464.21510028], [1516760820000, 9.547e-05, 9.564e-05, 9.509e-05, 9.56e-05, 3221.11767141], [1516760880000, 9.56e-05, 9.56e-05, 9.509e-05, 9.509e-05, 339.38863919], [1516760940000, 9.509e-05, 9.509e-05, 9.509e-05, 9.509e-05, 1020.86983069], [1516761000000, 9.509e-05, 9.56e-05, 9.509e-05, 9.56e-05, 414.68263965], [1516761060000, 9.509e-05, 9.56e-05, 9.509e-05, 9.56e-05, 890.04143006], [1516761180000, 9.509e-05, 9.565e-05, 9.509e-05, 9.565e-05, 1545.84047026], [1516761240000, 9.559e-05, 9.563e-05, 9.559e-05, 9.563e-05, 308.28510787], [1516761360000, 9.559e-05, 9.559e-05, 9.558e-05, 9.558e-05, 87.40515972], [1516761540000, 9.535e-05, 9.535e-05, 9.535e-05, 9.535e-05, 30.41426324], [1516761600000, 9.511e-05, 9.554e-05, 9.511e-05, 9.554e-05, 1514.72955696], [1516761780000, 9.544e-05, 9.544e-05, 9.541e-05, 9.541e-05, 46.22905652], [1516761840000, 9.512e-05, 9.512e-05, 9.512e-05, 9.512e-05, 80.0], [1516762020000, 9.515e-05, 9.534e-05, 9.515e-05, 9.534e-05, 407.2415719], [1516762080000, 9.516e-05, 9.516e-05, 9.515e-05, 9.515e-05, 1115.00826606], [1516762140000, 9.515e-05, 9.515e-05, 9.515e-05, 9.515e-05, 934.36882806], [1516762200000, 9.51e-05, 9.51e-05, 9.51e-05, 9.51e-05, 544.23464633], [1516762260000, 9.51e-05, 9.51e-05, 9.51e-05, 9.51e-05, 759.11486327], [1516762320000, 9.509e-05, 9.552e-05, 9.509e-05, 9.552e-05, 959.34199104], [1516762380000, 9.509e-05, 9.509e-05, 9.509e-05, 9.509e-05, 377.76481881], [1516762440000, 9.509e-05, 9.509e-05, 9.509e-05, 9.509e-05, 10.0], [1516762500000, 9.509e-05, 9.551e-05, 9.509e-05, 9.551e-05, 812.86228856], [1516762560000, 9.509e-05, 9.509e-05, 9.509e-05, 9.509e-05, 222.7148672], [1516762680000, 9.522e-05, 9.522e-05, 9.509e-05, 9.509e-05, 284.77246932], [1516762740000, 9.551e-05, 9.551e-05, 9.551e-05, 9.551e-05, 72.12238551], [1516762800000, 9.551e-05, 9.551e-05, 9.551e-05, 9.551e-05, 28.22831954], [1516762860000, 9.551e-05, 9.551e-05, 9.509e-05, 9.509e-05, 709.69479326], [1516762920000, 9.509e-05, 9.509e-05, 9.509e-05, 9.509e-05, 3428.08623607], [1516762980000, 9.551e-05, 9.551e-05, 9.551e-05, 9.551e-05, 7.24543804], [1516763040000, 9.509e-05, 9.509e-05, 9.509e-05, 9.509e-05, 1000.0], [1516763100000, 9.551e-05, 9.551e-05, 9.509e-05, 9.509e-05, 1148.65704828], [1516763160000, 9.551e-05, 9.551e-05, 9.551e-05, 9.551e-05, 94.23097057], [1516763280000, 9.529e-05, 9.529e-05, 9.5e-05, 9.5e-05, 789.03926629], [1516763340000, 9.529e-05, 9.529e-05, 9.529e-05, 9.529e-05, 757.69455383], [1516763400000, 9.529e-05, 9.529e-05, 9.5e-05, 9.5e-05, 963.88750825], [1516763460000, 9.449e-05, 9.449e-05, 9.449e-05, 9.449e-05, 10.0], [1516763520000, 9.449e-05, 9.54e-05, 9.449e-05, 9.54e-05, 1256.6686409], [1516763580000, 9.473e-05, 9.528e-05, 9.449e-05, 9.528e-05, 1720.37620676], [1516763640000, 9.449e-05, 9.449e-05, 9.449e-05, 9.449e-05, 31.08753161], [1516763700000, 9.449e-05, 9.549e-05, 9.449e-05, 9.549e-05, 133.160899], [1516763760000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 138.69757651], [1516763820000, 9.549e-05, 9.549e-05, 9.409e-05, 9.409e-05, 321.59631609], [1516763880000, 9.528e-05, 9.545e-05, 9.528e-05, 9.545e-05, 364.20832011], [1516763940000, 9.547e-05, 9.547e-05, 9.547e-05, 9.547e-05, 20.061003], [1516764060000, 9.543e-05, 9.544e-05, 9.543e-05, 9.544e-05, 400.39873375], [1516764120000, 9.544e-05, 9.544e-05, 9.544e-05, 9.544e-05, 18.86001676], [1516764180000, 9.544e-05, 9.544e-05, 9.544e-05, 9.544e-05, 100.0], [1516764240000, 9.544e-05, 9.544e-05, 9.544e-05, 9.544e-05, 423.87562343], [1516764300000, 9.544e-05, 9.544e-05, 9.483e-05, 9.483e-05, 400.0], [1516764420000, 9.483e-05, 9.544e-05, 9.447e-05, 9.447e-05, 1502.30771898], [1516764480000, 9.544e-05, 9.544e-05, 9.544e-05, 9.544e-05, 237.35445282], [1516764660000, 9.541e-05, 9.541e-05, 9.541e-05, 9.541e-05, 1140.98609041], [1516764780000, 9.541e-05, 9.544e-05, 9.541e-05, 9.544e-05, 8181.40980492], [1516764900000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 52.36150382], [1516764960000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 92.26953346], [1516765020000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 71.814417], [1516765080000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 31.69719089], [1516765200000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 1044.50727825], [1516765260000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 71.26123486], [1516765440000, 9.52e-05, 9.52e-05, 9.497e-05, 9.497e-05, 829.44077612], [1516765500000, 9.52e-05, 9.565e-05, 9.493e-05, 9.493e-05, 4992.45517336], [1516765560000, 9.566e-05, 9.566e-05, 9.566e-05, 9.566e-05, 359.6740197], [1516765620000, 9.505e-05, 9.566e-05, 9.493e-05, 9.566e-05, 139.62255593], [1516765740000, 9.566e-05, 9.566e-05, 9.566e-05, 9.566e-05, 143.98503986], [1516765800000, 9.474e-05, 9.474e-05, 9.474e-05, 9.474e-05, 13.32165468], [1516765860000, 9.566e-05, 9.566e-05, 9.474e-05, 9.474e-05, 107.49289882], [1516765920000, 9.475e-05, 9.475e-05, 9.474e-05, 9.475e-05, 386.0], [1516765980000, 9.539e-05, 9.539e-05, 9.539e-05, 9.539e-05, 72.20670357], [1516766040000, 9.539e-05, 9.539e-05, 9.539e-05, 9.539e-05, 7.79329643], [1516766100000, 9.566e-05, 9.571e-05, 9.566e-05, 9.571e-05, 711.69089442], [1516766160000, 9.571e-05, 9.571e-05, 9.571e-05, 9.571e-05, 34.9125], [1516766220000, 9.572e-05, 9.572e-05, 9.571e-05, 9.571e-05, 630.7776538], [1516766340000, 9.571e-05, 9.571e-05, 9.571e-05, 9.571e-05, 4316.75576632], [1516766400000, 9.571e-05, 9.571e-05, 9.571e-05, 9.571e-05, 501.50133315], [1516766460000, 9.571e-05, 9.571e-05, 9.571e-05, 9.571e-05, 71.96053347], [1516766520000, 9.571e-05, 9.571e-05, 9.569e-05, 9.569e-05, 1866.88630175], [1516766580000, 9.569e-05, 9.569e-05, 9.539e-05, 9.539e-05, 832.56029732], [1516766640000, 9.569e-05, 9.569e-05, 9.539e-05, 9.569e-05, 227.0286482], [1516766700000, 9.539e-05, 9.539e-05, 9.403e-05, 9.419e-05, 1318.1565314], [1516766760000, 9.547e-05, 9.568e-05, 9.428e-05, 9.568e-05, 589.78881281], [1516766820000, 9.556e-05, 9.557e-05, 9.556e-05, 9.557e-05, 1409.63324553], [1516766880000, 9.504e-05, 9.551e-05, 9.504e-05, 9.504e-05, 534.23682378], [1516766940000, 9.504e-05, 9.504e-05, 9.504e-05, 9.504e-05, 36.0], [1516767000000, 9.442e-05, 9.504e-05, 9.442e-05, 9.502e-05, 477.47185213], [1516767060000, 9.442e-05, 9.442e-05, 9.442e-05, 9.442e-05, 111.66420412], [1516767120000, 9.502e-05, 9.502e-05, 9.502e-05, 9.502e-05, 114.74934724], [1516767180000, 9.502e-05, 9.504e-05, 9.502e-05, 9.502e-05, 1018.4740262], [1516767240000, 9.504e-05, 9.533e-05, 9.445e-05, 9.533e-05, 473.77657894], [1516767360000, 9.447e-05, 9.447e-05, 9.443e-05, 9.443e-05, 1562.50380806], [1516767420000, 9.447e-05, 9.447e-05, 9.442e-05, 9.442e-05, 290.57901076], [1516767480000, 9.447e-05, 9.447e-05, 9.4e-05, 9.4e-05, 448.71334746], [1516767540000, 9.447e-05, 9.447e-05, 9.447e-05, 9.447e-05, 606.03219729], [1516767660000, 9.447e-05, 9.447e-05, 9.44e-05, 9.44e-05, 2205.39933272], [1516767720000, 9.44e-05, 9.44e-05, 9.397e-05, 9.397e-05, 5558.24000525], [1516767780000, 9.44e-05, 9.48e-05, 9.44e-05, 9.48e-05, 2574.07728347], [1516767900000, 9.495e-05, 9.5e-05, 9.44e-05, 9.44e-05, 641.81740711], [1516767960000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 389.42621053], [1516768020000, 9.5e-05, 9.5e-05, 9.44e-05, 9.5e-05, 1039.90239368], [1516768200000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 3216.6414], [1516768320000, 9.499e-05, 9.5e-05, 9.499e-05, 9.5e-05, 763.47450983], [1516768380000, 9.5e-05, 9.5e-05, 9.447e-05, 9.447e-05, 61.91362382], [1516768440000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 10.80411231], [1516768500000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 257.43343871], [1516768560000, 9.447e-05, 9.5e-05, 9.447e-05, 9.5e-05, 101.03856077], [1516768620000, 9.5e-05, 9.5e-05, 9.44e-05, 9.5e-05, 2480.01822831], [1516768680000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 12.03700299], [1516768800000, 9.44e-05, 9.44e-05, 9.44e-05, 9.44e-05, 40.0], [1516768920000, 9.499e-05, 9.5e-05, 9.499e-05, 9.5e-05, 4199.05990329], [1516768980000, 9.5e-05, 9.55e-05, 9.441e-05, 9.549e-05, 3994.22168297], [1516769040000, 9.548e-05, 9.571e-05, 9.548e-05, 9.571e-05, 9975.73829435], [1516769100000, 9.55e-05, 9.571e-05, 9.55e-05, 9.571e-05, 806.6326287], [1516769160000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 2040.37860447], [1516769340000, 9.453e-05, 9.453e-05, 9.44e-05, 9.44e-05, 370.9400129], [1516769460000, 9.539e-05, 9.539e-05, 9.539e-05, 9.539e-05, 78.00259417], [1516769520000, 9.539e-05, 9.539e-05, 9.539e-05, 9.539e-05, 362.34289739], [1516769580000, 9.447e-05, 9.567e-05, 9.308e-05, 9.567e-05, 19745.24498329], [1516769700000, 9.53e-05, 9.53e-05, 9.53e-05, 9.53e-05, 131.16474291], [1516769760000, 9.53e-05, 9.558e-05, 9.53e-05, 9.558e-05, 354.50508711], [1516769940000, 9.451e-05, 9.5e-05, 9.451e-05, 9.458e-05, 2773.20866621], [1516770000000, 9.451e-05, 9.458e-05, 9.451e-05, 9.458e-05, 2139.25875439], [1516770060000, 9.451e-05, 9.457e-05, 9.451e-05, 9.457e-05, 363.94157535], [1516770120000, 9.458e-05, 9.458e-05, 9.458e-05, 9.458e-05, 201.13384464], [1516770240000, 9.452e-05, 9.452e-05, 9.395e-05, 9.395e-05, 2145.88729176], [1516770300000, 9.457e-05, 9.458e-05, 9.457e-05, 9.458e-05, 387.66007731], [1516770360000, 9.457e-05, 9.457e-05, 9.457e-05, 9.457e-05, 422.9671143], [1516770480000, 9.457e-05, 9.457e-05, 9.457e-05, 9.457e-05, 60.0], [1516770540000, 9.457e-05, 9.457e-05, 9.457e-05, 9.457e-05, 222.23111605], [1516770600000, 9.457e-05, 9.457e-05, 9.457e-05, 9.457e-05, 28.26988314], [1516770660000, 9.4e-05, 9.458e-05, 9.4e-05, 9.458e-05, 3461.25280767], [1516770840000, 9.457e-05, 9.457e-05, 9.457e-05, 9.457e-05, 73.78653941], [1516770900000, 9.4e-05, 9.4e-05, 9.377e-05, 9.377e-05, 260.0], [1516770960000, 9.457e-05, 9.457e-05, 9.457e-05, 9.457e-05, 14.97779423], [1516771080000, 9.457e-05, 9.457e-05, 9.457e-05, 9.457e-05, 443.25618994], [1516771140000, 9.457e-05, 9.5e-05, 9.457e-05, 9.5e-05, 9937.1232697], [1516771200000, 9.5e-05, 9.5e-05, 9.393e-05, 9.402e-05, 1235.75833696], [1516771260000, 9.407e-05, 9.498e-05, 9.387e-05, 9.498e-05, 1330.80191551], [1516771380000, 9.398e-05, 9.399e-05, 9.398e-05, 9.399e-05, 1138.05415454], [1516771440000, 9.397e-05, 9.397e-05, 9.397e-05, 9.397e-05, 118.93024504], [1516771500000, 9.473e-05, 9.473e-05, 9.473e-05, 9.473e-05, 83.55964069], [1516771560000, 9.483e-05, 9.489e-05, 9.483e-05, 9.489e-05, 1693.53643798], [1516771620000, 9.489e-05, 9.489e-05, 9.362e-05, 9.362e-05, 3500.0], [1516771680000, 9.363e-05, 9.364e-05, 9.36e-05, 9.36e-05, 3550.0], [1516771740000, 9.362e-05, 9.423e-05, 9.36e-05, 9.423e-05, 1561.26001073], [1516771800000, 9.463e-05, 9.467e-05, 9.463e-05, 9.467e-05, 46.70361339], [1516771860000, 9.462e-05, 9.463e-05, 9.462e-05, 9.463e-05, 913.80023873], [1516771920000, 9.463e-05, 9.463e-05, 9.463e-05, 9.463e-05, 20.39143462], [1516771980000, 9.471e-05, 9.471e-05, 9.471e-05, 9.471e-05, 360.97735925], [1516772040000, 9.47e-05, 9.47e-05, 9.47e-05, 9.47e-05, 418.8462796], [1516772160000, 9.472e-05, 9.472e-05, 9.472e-05, 9.472e-05, 113.24386827], [1516772220000, 9.469e-05, 9.469e-05, 9.468e-05, 9.468e-05, 153.99756649], [1516772460000, 9.468e-05, 9.468e-05, 9.468e-05, 9.468e-05, 915.40243351], [1516772580000, 9.463e-05, 9.463e-05, 9.462e-05, 9.462e-05, 825.12341875], [1516772640000, 9.462e-05, 9.462e-05, 9.46e-05, 9.46e-05, 1862.49757558], [1516772700000, 9.46e-05, 9.46e-05, 9.46e-05, 9.46e-05, 3051.93540042], [1516772760000, 9.468e-05, 9.468e-05, 9.46e-05, 9.46e-05, 81.94056513], [1516772820000, 9.468e-05, 9.472e-05, 9.468e-05, 9.472e-05, 1020.35451497], [1516772880000, 9.472e-05, 9.472e-05, 9.472e-05, 9.472e-05, 62.84367007], [1516772940000, 9.472e-05, 9.472e-05, 9.472e-05, 9.472e-05, 552.00183811], [1516773000000, 9.5e-05, 9.5e-05, 9.475e-05, 9.475e-05, 566.63492854], [1516773120000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 36.61014933], [1516773180000, 9.5e-05, 9.538e-05, 9.475e-05, 9.538e-05, 2621.81924526], [1516773240000, 9.538e-05, 9.549e-05, 9.538e-05, 9.538e-05, 2174.52953587], [1516773300000, 9.549e-05, 9.569e-05, 9.482e-05, 9.569e-05, 4630.03240738], [1516773360000, 9.569e-05, 9.571e-05, 9.489e-05, 9.489e-05, 8093.06616889], [1516773480000, 9.57e-05, 9.57e-05, 9.57e-05, 9.57e-05, 12.53918495], [1516773540000, 9.569e-05, 9.571e-05, 9.569e-05, 9.571e-05, 3679.0373944], [1516773600000, 9.569e-05, 9.569e-05, 9.569e-05, 9.569e-05, 106.83369867], [1516773660000, 9.569e-05, 9.569e-05, 9.569e-05, 9.569e-05, 6.0], [1516773720000, 9.568e-05, 9.568e-05, 9.568e-05, 9.568e-05, 65.36715337], [1516773780000, 9.489e-05, 9.49e-05, 9.489e-05, 9.489e-05, 442.66999555], [1516773840000, 9.568e-05, 9.568e-05, 9.568e-05, 9.568e-05, 14.52795027], [1516774020000, 9.54e-05, 9.54e-05, 9.54e-05, 9.54e-05, 1500.0], [1516774140000, 9.564e-05, 9.565e-05, 9.53e-05, 9.563e-05, 831.75488502], [1516774200000, 9.54e-05, 9.562e-05, 9.53e-05, 9.562e-05, 479.71397336], [1516774260000, 9.562e-05, 9.562e-05, 9.53e-05, 9.53e-05, 10451.91800878], [1516774320000, 9.53e-05, 9.562e-05, 9.5e-05, 9.5e-05, 4023.05195954], [1516774440000, 9.5e-05, 9.5e-05, 9.49e-05, 9.49e-05, 243.16109415], [1516774500000, 9.56e-05, 9.56e-05, 9.56e-05, 9.56e-05, 4632.28443316], [1516774560000, 9.49e-05, 9.56e-05, 9.49e-05, 9.56e-05, 364.64189307], [1516774620000, 9.555e-05, 9.555e-05, 9.49e-05, 9.49e-05, 122.69025607], [1516774680000, 9.49e-05, 9.555e-05, 9.49e-05, 9.555e-05, 692.119003], [1516774740000, 9.555e-05, 9.56e-05, 9.451e-05, 9.56e-05, 2652.83488645], [1516774800000, 9.451e-05, 9.54e-05, 9.451e-05, 9.54e-05, 1094.8385656], [1516774860000, 9.548e-05, 9.56e-05, 9.453e-05, 9.453e-05, 262.0], [1516774920000, 9.56e-05, 9.56e-05, 9.453e-05, 9.453e-05, 2066.89562095], [1516774980000, 9.46e-05, 9.542e-05, 9.46e-05, 9.542e-05, 5479.77956014], [1516775040000, 9.5e-05, 9.542e-05, 9.461e-05, 9.461e-05, 468.65390819], [1516775160000, 9.461e-05, 9.53e-05, 9.461e-05, 9.523e-05, 88.21391713], [1516775220000, 9.523e-05, 9.523e-05, 9.523e-05, 9.523e-05, 371.41174094], [1516775280000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 714.455], [1516775340000, 9.5e-05, 9.5e-05, 9.461e-05, 9.461e-05, 814.0], [1516775400000, 9.54e-05, 9.54e-05, 9.537e-05, 9.537e-05, 50.89821201], [1516775520000, 9.537e-05, 9.537e-05, 9.537e-05, 9.537e-05, 46.18458222], [1516775580000, 9.537e-05, 9.537e-05, 9.537e-05, 9.537e-05, 0.88210542], [1516775640000, 9.462e-05, 9.462e-05, 9.461e-05, 9.461e-05, 1000.0], [1516775760000, 9.462e-05, 9.462e-05, 9.461e-05, 9.461e-05, 417.21381054], [1516775820000, 9.46e-05, 9.46e-05, 9.46e-05, 9.46e-05, 364.40248004], [1516775940000, 9.536e-05, 9.543e-05, 9.536e-05, 9.543e-05, 1075.22216009], [1516776000000, 9.543e-05, 9.562e-05, 9.543e-05, 9.562e-05, 360.82871226], [1516776060000, 9.477e-05, 9.477e-05, 9.426e-05, 9.426e-05, 1756.62988281], [1516776120000, 9.427e-05, 9.427e-05, 9.427e-05, 9.427e-05, 96.04423976], [1516776180000, 9.427e-05, 9.427e-05, 9.427e-05, 9.427e-05, 21.76459307], [1516776240000, 9.536e-05, 9.558e-05, 9.536e-05, 9.558e-05, 361.1015135], [1516776300000, 9.556e-05, 9.562e-05, 9.556e-05, 9.556e-05, 7259.70971499], [1516776360000, 9.558e-05, 9.558e-05, 9.558e-05, 9.558e-05, 73.05398619], [1516776420000, 9.558e-05, 9.561e-05, 9.558e-05, 9.561e-05, 1235.14768035], [1516776480000, 9.557e-05, 9.557e-05, 9.557e-05, 9.557e-05, 10437.37574553], [1516776540000, 9.561e-05, 9.561e-05, 9.561e-05, 9.561e-05, 50.151003], [1516776600000, 9.561e-05, 9.561e-05, 9.476e-05, 9.476e-05, 333.71347361], [1516776660000, 9.572e-05, 9.572e-05, 9.572e-05, 9.572e-05, 370.45577257], [1516776780000, 9.572e-05, 9.572e-05, 9.572e-05, 9.572e-05, 721.34398108], [1516776840000, 9.475e-05, 9.475e-05, 9.4e-05, 9.418e-05, 2815.4793674], [1516776900000, 9.53e-05, 9.53e-05, 9.53e-05, 9.53e-05, 372.6543436], [1516776960000, 9.53e-05, 9.534e-05, 9.53e-05, 9.534e-05, 523.87697039], [1516777080000, 9.534e-05, 9.557e-05, 9.534e-05, 9.557e-05, 402.53535651], [1516777140000, 9.543e-05, 9.543e-05, 9.543e-05, 9.543e-05, 9.0], [1516777200000, 9.541e-05, 9.541e-05, 9.541e-05, 9.541e-05, 730.42289264], [1516777260000, 9.457e-05, 9.457e-05, 9.418e-05, 9.418e-05, 283.37103401], [1516777320000, 9.532e-05, 9.539e-05, 9.44e-05, 9.44e-05, 339.11949686], [1516777380000, 9.44e-05, 9.54e-05, 9.431e-05, 9.431e-05, 3500.61808176], [1516777440000, 9.447e-05, 9.447e-05, 9.445e-05, 9.445e-05, 394.48920579], [1516777500000, 9.54e-05, 9.558e-05, 9.445e-05, 9.558e-05, 1015.39695871], [1516777560000, 9.558e-05, 9.559e-05, 9.55e-05, 9.559e-05, 478.24442463], [1516777620000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 259.01523691], [1516777740000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 28.72708846], [1516777860000, 9.5e-05, 9.5e-05, 9.499e-05, 9.499e-05, 2118.91141721], [1516777920000, 9.499e-05, 9.499e-05, 9.499e-05, 9.499e-05, 1426.46001245], [1516777980000, 9.499e-05, 9.499e-05, 9.447e-05, 9.447e-05, 1712.21067272], [1516778040000, 9.499e-05, 9.55e-05, 9.499e-05, 9.549e-05, 859.90206607], [1516778100000, 9.548e-05, 9.548e-05, 9.548e-05, 9.548e-05, 359.49972629], [1516778160000, 9.453e-05, 9.548e-05, 9.453e-05, 9.548e-05, 146.87990521], [1516778220000, 9.452e-05, 9.452e-05, 9.452e-05, 9.452e-05, 48.0], [1516778340000, 9.454e-05, 9.549e-05, 9.452e-05, 9.548e-05, 4749.47947087], [1516778400000, 9.548e-05, 9.548e-05, 9.548e-05, 9.548e-05, 2212.99417303], [1516778520000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 21.65315813], [1516778580000, 9.548e-05, 9.55e-05, 9.548e-05, 9.548e-05, 1474.84093949], [1516778700000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 158.7982913], [1516778760000, 9.454e-05, 9.55e-05, 9.454e-05, 9.55e-05, 120.30776056], [1516778820000, 9.455e-05, 9.455e-05, 9.455e-05, 9.455e-05, 502.39972744], [1516778880000, 9.455e-05, 9.455e-05, 9.455e-05, 9.455e-05, 124.03490216], [1516778940000, 9.453e-05, 9.455e-05, 9.453e-05, 9.454e-05, 934.41036488], [1516779000000, 9.455e-05, 9.558e-05, 9.455e-05, 9.558e-05, 893.22446818], [1516779060000, 9.541e-05, 9.558e-05, 9.541e-05, 9.558e-05, 36.15395413], [1516779120000, 9.556e-05, 9.556e-05, 9.556e-05, 9.556e-05, 36.07541628], [1516779240000, 9.551e-05, 9.551e-05, 9.551e-05, 9.551e-05, 72.15823814], [1516779300000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 59.20274175], [1516779360000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 408.36666309], [1516779420000, 9.471e-05, 9.471e-05, 9.457e-05, 9.457e-05, 2500.79178185], [1516779480000, 9.458e-05, 9.458e-05, 9.458e-05, 9.458e-05, 50.0], [1516779540000, 9.458e-05, 9.55e-05, 9.457e-05, 9.55e-05, 831.38132432], [1516779600000, 9.473e-05, 9.473e-05, 9.457e-05, 9.457e-05, 604.0], [1516779660000, 9.476e-05, 9.476e-05, 9.456e-05, 9.457e-05, 576.05221894], [1516779720000, 9.476e-05, 9.557e-05, 9.419e-05, 9.419e-05, 1438.99695427], [1516779840000, 9.472e-05, 9.472e-05, 9.42e-05, 9.42e-05, 327.86966929], [1516779960000, 9.427e-05, 9.427e-05, 9.427e-05, 9.427e-05, 18.95033038], [1516780020000, 9.52e-05, 9.52e-05, 9.52e-05, 9.52e-05, 14.51626138], [1516780080000, 9.529e-05, 9.529e-05, 9.529e-05, 9.529e-05, 216.0048683], [1516780140000, 9.529e-05, 9.529e-05, 9.425e-05, 9.425e-05, 280.64745489], [1516780200000, 9.426e-05, 9.426e-05, 9.426e-05, 9.426e-05, 9.0], [1516780260000, 9.425e-05, 9.425e-05, 9.424e-05, 9.424e-05, 17.69728694], [1516780320000, 9.425e-05, 9.425e-05, 9.424e-05, 9.424e-05, 100.0], [1516780380000, 9.424e-05, 9.424e-05, 9.424e-05, 9.424e-05, 100.0], [1516780440000, 9.498e-05, 9.498e-05, 9.498e-05, 9.498e-05, 10.52299273], [1516780500000, 9.496e-05, 9.496e-05, 9.496e-05, 9.496e-05, 20.0], [1516780560000, 9.424e-05, 9.424e-05, 9.4e-05, 9.4e-05, 1784.98657934], [1516780620000, 9.405e-05, 9.41e-05, 9.405e-05, 9.41e-05, 175.3741331], [1516780680000, 9.473e-05, 9.474e-05, 9.473e-05, 9.474e-05, 336.59988606], [1516780740000, 9.496e-05, 9.496e-05, 9.496e-05, 9.496e-05, 32.20536368], [1516780800000, 9.416e-05, 9.496e-05, 9.416e-05, 9.496e-05, 557.99383774], [1516780860000, 9.496e-05, 9.496e-05, 9.496e-05, 9.496e-05, 195.89184855], [1516780920000, 9.495e-05, 9.495e-05, 9.38e-05, 9.38e-05, 1911.48860636], [1516780980000, 9.38e-05, 9.383e-05, 9.38e-05, 9.382e-05, 891.96672835], [1516781160000, 9.49e-05, 9.495e-05, 9.4e-05, 9.4e-05, 723.68001537], [1516781220000, 9.499e-05, 9.5e-05, 9.408e-05, 9.41e-05, 656.29102067], [1516781280000, 9.5e-05, 9.559e-05, 9.412e-05, 9.412e-05, 1189.54098466], [1516781340000, 9.552e-05, 9.552e-05, 9.552e-05, 9.552e-05, 115.70386756], [1516781400000, 9.432e-05, 9.432e-05, 9.426e-05, 9.426e-05, 175.0], [1516781460000, 9.428e-05, 9.428e-05, 9.427e-05, 9.427e-05, 25.0], [1516781520000, 9.502e-05, 9.556e-05, 9.43e-05, 9.556e-05, 96.22207747], [1516781580000, 9.552e-05, 9.553e-05, 9.439e-05, 9.439e-05, 530.03932224], [1516781640000, 9.555e-05, 9.556e-05, 9.554e-05, 9.554e-05, 772.56875589], [1516781700000, 9.554e-05, 9.554e-05, 9.554e-05, 9.554e-05, 36.04217977], [1516781760000, 9.458e-05, 9.458e-05, 9.453e-05, 9.453e-05, 500.0], [1516781820000, 9.551e-05, 9.551e-05, 9.551e-05, 9.551e-05, 216.19368391], [1516781880000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 474.85815157], [1516781940000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 1648.77798613], [1516782000000, 9.453e-05, 9.453e-05, 9.429e-05, 9.429e-05, 2295.94082562], [1516782060000, 9.43e-05, 9.43e-05, 9.428e-05, 9.428e-05, 243.68703606], [1516782180000, 9.431e-05, 9.431e-05, 9.431e-05, 9.431e-05, 9.34666791], [1516782240000, 9.545e-05, 9.545e-05, 9.545e-05, 9.545e-05, 179.04401361], [1516782300000, 9.551e-05, 9.553e-05, 9.551e-05, 9.553e-05, 287.74001083], [1516782360000, 9.551e-05, 9.551e-05, 9.467e-05, 9.467e-05, 161.2497763], [1516782420000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 17.05467789], [1516782600000, 9.501e-05, 9.501e-05, 9.501e-05, 9.501e-05, 5.24944743], [1516782660000, 9.501e-05, 9.501e-05, 9.501e-05, 9.501e-05, 290.46745837], [1516782720000, 9.501e-05, 9.501e-05, 9.5e-05, 9.5e-05, 2101.28932414], [1516782780000, 9.502e-05, 9.554e-05, 9.502e-05, 9.554e-05, 659.61568245], [1516782840000, 9.467e-05, 9.556e-05, 9.467e-05, 9.549e-05, 3238.81244969], [1516782900000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 99.10359769], [1516782960000, 9.549e-05, 9.556e-05, 9.549e-05, 9.556e-05, 100.301003], [1516783020000, 9.556e-05, 9.556e-05, 9.556e-05, 9.556e-05, 72.48723747], [1516783080000, 9.556e-05, 9.556e-05, 9.468e-05, 9.468e-05, 784.1498656], [1516783140000, 9.555e-05, 9.555e-05, 9.555e-05, 9.555e-05, 170.31550692], [1516783200000, 9.554e-05, 9.555e-05, 9.554e-05, 9.555e-05, 100.301003], [1516783320000, 9.55e-05, 9.55e-05, 9.46e-05, 9.46e-05, 607.24056464], [1516783440000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 948.4098634], [1516783500000, 9.55e-05, 9.56e-05, 9.461e-05, 9.461e-05, 3885.7947925], [1516783560000, 9.55e-05, 9.571e-05, 9.464e-05, 9.571e-05, 634.15897492], [1516783620000, 9.571e-05, 9.571e-05, 9.571e-05, 9.571e-05, 35.99928599], [1516783680000, 9.476e-05, 9.571e-05, 9.47e-05, 9.571e-05, 1021.09038716], [1516783740000, 9.559e-05, 9.559e-05, 9.559e-05, 9.559e-05, 131.30421342], [1516783800000, 9.475e-05, 9.475e-05, 9.475e-05, 9.475e-05, 10.57436043], [1516783860000, 9.509e-05, 9.509e-05, 9.48e-05, 9.48e-05, 37.20835431], [1516783920000, 9.482e-05, 9.482e-05, 9.475e-05, 9.48e-05, 5763.75049305], [1516783980000, 9.57e-05, 9.571e-05, 9.48e-05, 9.571e-05, 1890.57108593], [1516784040000, 9.571e-05, 9.572e-05, 9.48e-05, 9.572e-05, 3567.44381994], [1516784100000, 9.572e-05, 9.572e-05, 9.572e-05, 9.572e-05, 46.14160966], [1516784160000, 9.5e-05, 9.572e-05, 9.5e-05, 9.572e-05, 143.22000299], [1516784220000, 9.572e-05, 9.572e-05, 9.572e-05, 9.572e-05, 1525.7824398], [1516784280000, 9.572e-05, 9.597e-05, 9.572e-05, 9.597e-05, 268.56949059], [1516784340000, 9.597e-05, 9.597e-05, 9.597e-05, 9.597e-05, 495.62934354], [1516784400000, 9.597e-05, 9.597e-05, 9.588e-05, 9.588e-05, 393.41238739], [1516784460000, 9.588e-05, 9.588e-05, 9.573e-05, 9.573e-05, 218.16012621], [1516784520000, 9.573e-05, 9.573e-05, 9.573e-05, 9.573e-05, 522.4284085], [1516784580000, 9.573e-05, 9.573e-05, 9.573e-05, 9.573e-05, 13.23171377], [1516784640000, 9.573e-05, 9.574e-05, 9.573e-05, 9.574e-05, 893.3972581], [1516784700000, 9.597e-05, 9.597e-05, 9.596e-05, 9.596e-05, 313.40965735], [1516784760000, 9.596e-05, 9.596e-05, 9.596e-05, 9.596e-05, 843.5026693], [1516784820000, 9.596e-05, 9.596e-05, 9.596e-05, 9.596e-05, 19.55972895], [1516784880000, 9.596e-05, 9.596e-05, 9.596e-05, 9.596e-05, 757.60659734], [1516784940000, 9.596e-05, 9.597e-05, 9.574e-05, 9.574e-05, 1806.77576915], [1516785000000, 9.597e-05, 9.597e-05, 9.597e-05, 9.597e-05, 14.42131853], [1516785060000, 9.597e-05, 9.597e-05, 9.597e-05, 9.597e-05, 1000.0], [1516785180000, 9.597e-05, 9.597e-05, 9.597e-05, 9.597e-05, 336.88428861], [1516785240000, 9.575e-05, 9.597e-05, 9.575e-05, 9.597e-05, 65.23467331], [1516785300000, 9.597e-05, 9.597e-05, 9.597e-05, 9.597e-05, 16.72345524], [1516785360000, 9.575e-05, 9.575e-05, 9.575e-05, 9.575e-05, 306.86551531], [1516785420000, 9.575e-05, 9.597e-05, 9.575e-05, 9.597e-05, 99.45197796], [1516785540000, 9.597e-05, 9.597e-05, 9.597e-05, 9.597e-05, 454.81208095], [1516785600000, 9.597e-05, 9.6e-05, 9.575e-05, 9.575e-05, 127.34574491], [1516785660000, 9.6e-05, 9.6e-05, 9.6e-05, 9.6e-05, 184.39713458], [1516785720000, 9.6e-05, 9.6e-05, 9.577e-05, 9.577e-05, 697.29026131], [1516785840000, 9.6e-05, 9.6e-05, 9.6e-05, 9.6e-05, 16.24241719], [1516785900000, 9.6e-05, 9.6e-05, 9.6e-05, 9.6e-05, 728.32726105], [1516785960000, 9.6e-05, 9.629e-05, 9.6e-05, 9.629e-05, 378.53064332], [1516786020000, 9.6e-05, 9.629e-05, 9.578e-05, 9.581e-05, 1008.22053187], [1516786080000, 9.585e-05, 9.634e-05, 9.549e-05, 9.549e-05, 44575.14259176], [1516786140000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 197.33633983], [1516786200000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 2375.52358634], [1516786260000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 209.493288], [1516786320000, 9.5e-05, 9.549e-05, 9.5e-05, 9.549e-05, 52.3464216], [1516786380000, 9.548e-05, 9.549e-05, 9.548e-05, 9.549e-05, 31.05263157], [1516786440000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 2897.0], [1516786500000, 9.549e-05, 9.549e-05, 9.549e-05, 9.549e-05, 3034.26781337], [1516786560000, 9.549e-05, 9.549e-05, 9.5e-05, 9.5e-05, 2157.24653567], [1516786620000, 9.5e-05, 9.549e-05, 9.5e-05, 9.549e-05, 1036.15668041], [1516786680000, 9.51e-05, 9.51e-05, 9.51e-05, 9.51e-05, 12.5742257], [1516786740000, 9.51e-05, 9.548e-05, 9.5e-05, 9.5e-05, 972.74031677], [1516786800000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 400.0], [1516786860000, 9.546e-05, 9.546e-05, 9.5e-05, 9.5e-05, 26157.04817644], [1516786920000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 516.2663149], [1516786980000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 12.63157894], [1516787040000, 9.491e-05, 9.491e-05, 9.491e-05, 9.491e-05, 400.0], [1516787100000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 315.78947368], [1516787160000, 9.491e-05, 9.529e-05, 9.49e-05, 9.529e-05, 8444.44756822], [1516787280000, 9.483e-05, 9.483e-05, 9.48e-05, 9.48e-05, 1815.0], [1516787340000, 9.48e-05, 9.529e-05, 9.475e-05, 9.475e-05, 1265.22132496], [1516787400000, 9.475e-05, 9.529e-05, 9.475e-05, 9.529e-05, 1836.22406939], [1516787460000, 9.475e-05, 9.475e-05, 9.464e-05, 9.475e-05, 652.83206618], [1516787580000, 9.529e-05, 9.529e-05, 9.529e-05, 9.529e-05, 146.71951117], [1516787700000, 9.475e-05, 9.529e-05, 9.475e-05, 9.529e-05, 15.62270391], [1516787760000, 9.529e-05, 9.54e-05, 9.529e-05, 9.54e-05, 20027.85907852], [1516787820000, 9.54e-05, 9.54e-05, 9.54e-05, 9.54e-05, 1762.23873499], [1516787880000, 9.537e-05, 9.54e-05, 9.537e-05, 9.54e-05, 984.17232126], [1516787940000, 9.54e-05, 9.54e-05, 9.54e-05, 9.54e-05, 1607.02024052], [1516788000000, 9.54e-05, 9.54e-05, 9.509e-05, 9.509e-05, 1480.12006995], [1516788060000, 9.517e-05, 9.545e-05, 9.484e-05, 9.484e-05, 3302.96796696], [1516788120000, 9.493e-05, 9.493e-05, 9.493e-05, 9.493e-05, 7.0], [1516788180000, 9.529e-05, 9.529e-05, 9.529e-05, 9.529e-05, 28.93900988], [1516788240000, 9.528e-05, 9.528e-05, 9.528e-05, 9.528e-05, 25.076003], [1516788360000, 9.483e-05, 9.525e-05, 9.483e-05, 9.525e-05, 40.03100299], [1516788480000, 9.521e-05, 9.521e-05, 9.521e-05, 9.521e-05, 79.56982381], [1516788540000, 9.52e-05, 9.52e-05, 9.48e-05, 9.52e-05, 2457.0], [1516788600000, 9.48e-05, 9.5e-05, 9.463e-05, 9.5e-05, 2229.5297056], [1516788660000, 9.49e-05, 9.49e-05, 9.49e-05, 9.49e-05, 1000.0], [1516788780000, 9.49e-05, 9.5e-05, 9.463e-05, 9.5e-05, 136.80643549], [1516788840000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 52.014585], [1516788900000, 9.5e-05, 9.5e-05, 9.463e-05, 9.463e-05, 553.0831377], [1516788960000, 9.499e-05, 9.5e-05, 9.499e-05, 9.5e-05, 204.0], [1516789020000, 9.5e-05, 9.51e-05, 9.48e-05, 9.48e-05, 2100.61887022], [1516789080000, 9.51e-05, 9.52e-05, 9.5e-05, 9.5e-05, 1452.34627769], [1516789140000, 9.47e-05, 9.52e-05, 9.47e-05, 9.52e-05, 1727.07491869], [1516789200000, 9.52e-05, 9.52e-05, 9.463e-05, 9.52e-05, 1609.20963064], [1516789260000, 9.52e-05, 9.52e-05, 9.45e-05, 9.45e-05, 1048.07836553], [1516789320000, 9.45e-05, 9.483e-05, 9.45e-05, 9.45e-05, 10904.11315033], [1516789380000, 9.449e-05, 9.45e-05, 9.449e-05, 9.45e-05, 14278.06604003], [1516789440000, 9.45e-05, 9.45e-05, 9.432e-05, 9.432e-05, 3132.55097156], [1516789500000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 328.04965413], [1516789560000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 1501.97249811], [1516789620000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 1757.18017677], [1516789680000, 9.449e-05, 9.45e-05, 9.449e-05, 9.45e-05, 1234.83690721], [1516789740000, 9.51e-05, 9.51e-05, 9.51e-05, 9.51e-05, 14.67852511], [1516789800000, 9.51e-05, 9.51e-05, 9.48e-05, 9.48e-05, 28.48324306], [1516789860000, 9.48e-05, 9.48e-05, 9.48e-05, 9.48e-05, 388.91300283], [1516789920000, 9.498e-05, 9.51e-05, 9.441e-05, 9.51e-05, 1680.17545515], [1516790040000, 9.442e-05, 9.442e-05, 9.442e-05, 9.442e-05, 120.79933466], [1516790100000, 9.442e-05, 9.442e-05, 9.442e-05, 9.442e-05, 1167.02710157], [1516790160000, 9.504e-05, 9.504e-05, 9.441e-05, 9.442e-05, 266.68186415], [1516790220000, 9.504e-05, 9.509e-05, 9.504e-05, 9.509e-05, 43.72823748], [1516790280000, 9.51e-05, 9.51e-05, 9.509e-05, 9.509e-05, 1419.4792552], [1516790340000, 9.509e-05, 9.509e-05, 9.453e-05, 9.453e-05, 602.24706085], [1516790400000, 9.453e-05, 9.453e-05, 9.453e-05, 9.453e-05, 320.0], [1516790460000, 9.453e-05, 9.509e-05, 9.453e-05, 9.509e-05, 253.88203438], [1516790520000, 9.509e-05, 9.509e-05, 9.509e-05, 9.509e-05, 728.56855057], [1516790580000, 9.509e-05, 9.509e-05, 9.509e-05, 9.509e-05, 12.26396046], [1516790700000, 9.509e-05, 9.509e-05, 9.454e-05, 9.454e-05, 171.12772483], [1516790760000, 9.509e-05, 9.509e-05, 9.509e-05, 9.509e-05, 35.10600299], [1516790940000, 9.509e-05, 9.509e-05, 9.509e-05, 9.509e-05, 1240.27539975], [1516791000000, 9.484e-05, 9.484e-05, 9.484e-05, 9.484e-05, 268.95582121], [1516791060000, 9.456e-05, 9.509e-05, 9.456e-05, 9.509e-05, 653.72202272], [1516791180000, 9.509e-05, 9.509e-05, 9.456e-05, 9.456e-05, 457.61139003], [1516791420000, 9.457e-05, 9.509e-05, 9.456e-05, 9.457e-05, 2133.69600082], [1516791480000, 9.457e-05, 9.509e-05, 9.457e-05, 9.509e-05, 3399.2414137], [1516791540000, 9.509e-05, 9.509e-05, 9.457e-05, 9.46e-05, 2435.90293064], [1516791600000, 9.509e-05, 9.509e-05, 9.509e-05, 9.509e-05, 37.85887054], [1516791660000, 9.458e-05, 9.509e-05, 9.456e-05, 9.509e-05, 6038.86233906], [1516791720000, 9.506e-05, 9.509e-05, 9.506e-05, 9.509e-05, 575.81765], [1516791780000, 9.508e-05, 9.509e-05, 9.456e-05, 9.509e-05, 2073.10840484], [1516791840000, 9.509e-05, 9.509e-05, 9.509e-05, 9.509e-05, 100.0], [1516791960000, 9.46e-05, 9.509e-05, 9.453e-05, 9.509e-05, 3077.10536221], [1516792020000, 9.505e-05, 9.505e-05, 9.505e-05, 9.505e-05, 32.05999632], [1516792080000, 9.505e-05, 9.505e-05, 9.505e-05, 9.505e-05, 13.0], [1516792140000, 9.454e-05, 9.454e-05, 9.454e-05, 9.454e-05, 20.31153597], [1516792260000, 9.505e-05, 9.505e-05, 9.505e-05, 9.505e-05, 10.90806928], [1516792320000, 9.505e-05, 9.52e-05, 9.505e-05, 9.52e-05, 6558.66324884], [1516792380000, 9.52e-05, 9.52e-05, 9.52e-05, 9.52e-05, 35.64655726], [1516792440000, 9.528e-05, 9.53e-05, 9.528e-05, 9.529e-05, 5456.25280462], [1516792500000, 9.575e-05, 9.608e-05, 9.575e-05, 9.608e-05, 5734.16876267], [1516792560000, 9.5e-05, 9.5e-05, 9.5e-05, 9.5e-05, 20.31153597], [1516792620000, 9.5e-05, 9.613e-05, 9.454e-05, 9.572e-05, 602.87359151], [1516792680000, 9.613e-05, 9.613e-05, 9.49e-05, 9.493e-05, 247.22264835], [1516792740000, 9.572e-05, 9.613e-05, 9.572e-05, 9.613e-05, 100.301003], [1516792800000, 9.613e-05, 9.666e-05, 9.613e-05, 9.666e-05, 1443.67019693], [1516792920000, 9.662e-05, 9.663e-05, 9.549e-05, 9.662e-05, 395.03998673], [1516792980000, 9.662e-05, 9.67e-05, 9.662e-05, 9.67e-05, 971.47891534], [1516793040000, 9.665e-05, 9.665e-05, 9.665e-05, 9.665e-05, 10.77755974], [1516793100000, 9.663e-05, 9.664e-05, 9.554e-05, 9.663e-05, 916.65891804], [1516793160000, 9.663e-05, 9.691e-05, 9.557e-05, 9.691e-05, 836.5610049], [1516793220000, 9.564e-05, 9.564e-05, 9.564e-05, 9.564e-05, 100.0], [1516793280000, 9.566e-05, 9.633e-05, 9.566e-05, 9.568e-05, 1271.32638592], [1516793400000, 9.576e-05, 9.68e-05, 9.576e-05, 9.581e-05, 536.78371513], [1516793460000, 9.576e-05, 9.679e-05, 9.576e-05, 9.577e-05, 1257.39161668], [1516793520000, 9.577e-05, 9.675e-05, 9.577e-05, 9.675e-05, 71.22563442], [1516793580000, 9.665e-05, 9.665e-05, 9.665e-05, 9.665e-05, 7.46649897], [1516793640000, 9.577e-05, 9.577e-05, 9.577e-05, 9.577e-05, 759.05409574], [1516793700000, 9.652e-05, 9.664e-05, 9.645e-05, 9.652e-05, 1457.91641801], [1516793760000, 9.652e-05, 9.652e-05, 9.566e-05, 9.566e-05, 4541.96436824], [1516793820000, 9.57e-05, 9.646e-05, 9.57e-05, 9.645e-05, 2036.8718137], [1516793880000, 9.645e-05, 9.645e-05, 9.566e-05, 9.566e-05, 173.64255541], [1516793940000, 9.641e-05, 9.641e-05, 9.64e-05, 9.64e-05, 483.3192556], [1516794000000, 9.566e-05, 9.566e-05, 9.553e-05, 9.553e-05, 68.62241217], [1516794060000, 9.506e-05, 9.506e-05, 9.494e-05, 9.494e-05, 4001.98528462], [1516794120000, 9.493e-05, 9.496e-05, 9.453e-05, 9.496e-05, 828.96226187], [1516794180000, 9.496e-05, 9.506e-05, 9.496e-05, 9.506e-05, 974.23659258], [1516794240000, 9.506e-05, 9.506e-05, 9.505e-05, 9.505e-05, 145.64687323], [1516794300000, 9.504e-05, 9.506e-05, 9.504e-05, 9.506e-05, 32333.47530259], [1516794360000, 9.636e-05, 9.669e-05, 9.514e-05, 9.52e-05, 12241.76630549], [1516794420000, 9.663e-05, 9.663e-05, 9.656e-05, 9.658e-05, 1260.65065529], [1516794480000, 9.555e-05, 9.67e-05, 9.555e-05, 9.662e-05, 20840.89716138], [1516794540000, 9.555e-05, 9.556e-05, 9.555e-05, 9.556e-05, 309.47625022], [1516794600000, 9.556e-05, 9.657e-05, 9.556e-05, 9.657e-05, 317.74520709], [1516794660000, 9.561e-05, 9.561e-05, 9.555e-05, 9.56e-05, 3418.55246261], [1516794720000, 9.556e-05, 9.557e-05, 9.555e-05, 9.555e-05, 2662.56388526], [1516794780000, 9.56e-05, 9.661e-05, 9.557e-05, 9.557e-05, 451.27942491], [1516794900000, 9.655e-05, 9.655e-05, 9.655e-05, 9.655e-05, 30.22200057], [1516794960000, 9.558e-05, 9.655e-05, 9.555e-05, 9.653e-05, 319.47291764], [1516795020000, 9.559e-05, 9.654e-05, 9.559e-05, 9.654e-05, 669.97561335], [1516795080000, 9.653e-05, 9.653e-05, 9.555e-05, 9.555e-05, 1557.35916626], [1516795200000, 9.647e-05, 9.647e-05, 9.556e-05, 9.556e-05, 557.40655711], [1516795260000, 9.556e-05, 9.556e-05, 9.555e-05, 9.555e-05, 499.21365879], [1516795320000, 9.555e-05, 9.649e-05, 9.555e-05, 9.556e-05, 6113.92891356], [1516795380000, 9.558e-05, 9.647e-05, 9.557e-05, 9.647e-05, 3683.88563205], [1516795440000, 9.644e-05, 9.648e-05, 9.643e-05, 9.648e-05, 3649.27751166], [1516795500000, 9.557e-05, 9.557e-05, 9.557e-05, 9.557e-05, 28.86903457], [1516795560000, 9.557e-05, 9.557e-05, 9.557e-05, 9.557e-05, 656.50506347], [1516795620000, 9.642e-05, 9.642e-05, 9.557e-05, 9.642e-05, 923.90577432], [1516795680000, 9.557e-05, 9.557e-05, 9.557e-05, 9.557e-05, 314.52973196], [1516795740000, 9.557e-05, 9.643e-05, 9.557e-05, 9.643e-05, 1051.44164185], [1516795800000, 9.642e-05, 9.642e-05, 9.642e-05, 9.642e-05, 6.20667816], [1516795860000, 9.511e-05, 9.632e-05, 9.509e-05, 9.632e-05, 477.37192719], [1516795920000, 9.625e-05, 9.625e-05, 9.535e-05, 9.535e-05, 259.88591367], [1516795980000, 9.533e-05, 9.533e-05, 9.508e-05, 9.508e-05, 5400.52962861], [1516796040000, 9.508e-05, 9.508e-05, 9.504e-05, 9.505e-05, 2224.61601035], [1516796160000, 9.51e-05, 9.534e-05, 9.51e-05, 9.51e-05, 285.99713007], [1516796220000, 9.534e-05, 9.535e-05, 9.534e-05, 9.535e-05, 317.27760252], [1516796340000, 9.534e-05, 9.535e-05, 9.534e-05, 9.535e-05, 363.3351864], [1516796460000, 9.534e-05, 9.535e-05, 9.515e-05, 9.515e-05, 604.94186341], [1516796520000, 9.515e-05, 9.63e-05, 9.515e-05, 9.63e-05, 2934.19339611], [1516796640000, 9.537e-05, 9.63e-05, 9.536e-05, 9.61e-05, 932.21603163], [1516796700000, 9.6e-05, 9.6e-05, 9.6e-05, 9.6e-05, 1093.00204224], [1516796760000, 9.6e-05, 9.6e-05, 9.6e-05, 9.6e-05, 21.52212967], [1516796820000, 9.54e-05, 9.6e-05, 9.54e-05, 9.6e-05, 181.36295922], [1516796880000, 9.541e-05, 9.541e-05, 9.54e-05, 9.54e-05, 1370.30181418], [1516796940000, 9.54e-05, 9.54e-05, 9.54e-05, 9.54e-05, 59.62488815], [1516797000000, 9.541e-05, 9.541e-05, 9.54e-05, 9.54e-05, 537.50658282], [1516797060000, 9.54e-05, 9.541e-05, 9.54e-05, 9.54e-05, 1055.4838994], [1516797120000, 9.54e-05, 9.54e-05, 9.54e-05, 9.54e-05, 100.0], [1516797240000, 9.541e-05, 9.541e-05, 9.541e-05, 9.541e-05, 3609.54545905], [1516797300000, 9.54e-05, 9.541e-05, 9.536e-05, 9.541e-05, 684.74545138], [1516797360000, 9.541e-05, 9.541e-05, 9.541e-05, 9.541e-05, 14.45744162], [1516797420000, 9.536e-05, 9.541e-05, 9.536e-05, 9.541e-05, 3444.04258134], [1516797480000, 9.541e-05, 9.541e-05, 9.541e-05, 9.541e-05, 374.70959572], [1516797540000, 9.6e-05, 9.6e-05, 9.541e-05, 9.541e-05, 3377.14088863], [1516797600000, 9.541e-05, 9.541e-05, 9.541e-05, 9.541e-05, 81.06865108], [1516797660000, 9.541e-05, 9.541e-05, 9.51e-05, 9.511e-05, 2929.01867117], [1516797720000, 9.6e-05, 9.61e-05, 9.511e-05, 9.61e-05, 1271.77839764], [1516797780000, 9.511e-05, 9.511e-05, 9.511e-05, 9.511e-05, 420.81518188], [1516797840000, 9.516e-05, 9.608e-05, 9.516e-05, 9.608e-05, 86.22086503], [1516797900000, 9.608e-05, 9.608e-05, 9.608e-05, 9.608e-05, 201.46646299], [1516797960000, 9.516e-05, 9.606e-05, 9.511e-05, 9.511e-05, 680.65132618], [1516798020000, 9.603e-05, 9.603e-05, 9.602e-05, 9.603e-05, 798.72739196], [1516798080000, 9.604e-05, 9.608e-05, 9.602e-05, 9.608e-05, 1058.98727125], [1516798140000, 9.608e-05, 9.608e-05, 9.608e-05, 9.608e-05, 986.93881641], [1516798200000, 9.609e-05, 9.609e-05, 9.609e-05, 9.609e-05, 49.55952207], [1516798260000, 9.608e-05, 9.609e-05, 9.608e-05, 9.608e-05, 679.5765157], [1516798320000, 9.608e-05, 9.61e-05, 9.608e-05, 9.608e-05, 3877.43491536], [1516798380000, 9.608e-05, 9.61e-05, 9.608e-05, 9.61e-05, 1684.74717199], [1516798440000, 9.61e-05, 9.61e-05, 9.608e-05, 9.608e-05, 1147.1376516], [1516798500000, 9.608e-05, 9.61e-05, 9.608e-05, 9.61e-05, 140.78345582], [1516798560000, 9.61e-05, 9.61e-05, 9.61e-05, 9.61e-05, 103.16397402], [1516798620000, 9.608e-05, 9.608e-05, 9.608e-05, 9.608e-05, 1442.91005291], [1516798680000, 9.61e-05, 9.63e-05, 9.608e-05, 9.63e-05, 5714.94661541], [1516798740000, 9.63e-05, 9.63e-05, 9.608e-05, 9.608e-05, 6954.99910673], [1516798800000, 9.608e-05, 9.608e-05, 9.512e-05, 9.608e-05, 1845.16761121], [1516798860000, 9.536e-05, 9.538e-05, 9.536e-05, 9.538e-05, 375.78947368], [1516798920000, 9.6e-05, 9.607e-05, 9.6e-05, 9.6e-05, 10754.80187657], [1516798980000, 9.598e-05, 9.6e-05, 9.538e-05, 9.538e-05, 4636.3098631], [1516799040000, 9.6e-05, 9.6e-05, 9.569e-05, 9.569e-05, 595.40510664], [1516799100000, 9.538e-05, 9.569e-05, 9.536e-05, 9.536e-05, 7518.32324203], [1516799160000, 9.536e-05, 9.6e-05, 9.511e-05, 9.513e-05, 6570.27660948], [1516799220000, 9.6e-05, 9.6e-05, 9.6e-05, 9.6e-05, 550.53473047], [1516799340000, 9.6e-05, 9.6e-05, 9.6e-05, 9.6e-05, 574.62203125], [1516799400000, 9.6e-05, 9.6e-05, 9.6e-05, 9.6e-05, 142.32854791], [1516799460000, 9.54e-05, 9.54e-05, 9.54e-05, 9.54e-05, 86.03139442], [1516799520000, 9.6e-05, 9.6e-05, 9.6e-05, 9.6e-05, 133.67972715], [1516799580000, 9.6e-05, 9.6e-05, 9.54e-05, 9.54e-05, 429.83650364], [1516799700000, 9.512e-05, 9.539e-05, 9.462e-05, 9.539e-05, 2649.08178522], [1516799760000, 9.5e-05, 9.54e-05, 9.461e-05, 9.54e-05, 2645.84995018], [1516799820000, 9.54e-05, 9.54e-05, 9.539e-05, 9.54e-05, 2376.07072113], [1516799880000, 9.54e-05, 9.593e-05, 9.54e-05, 9.593e-05, 144.28274277], [1516799940000, 9.593e-05, 9.6e-05, 9.593e-05, 9.6e-05, 220.92592498], [1516800060000, 9.589e-05, 9.59e-05, 9.4e-05, 9.478e-05, 64902.46297981], [1516800120000, 9.587e-05, 9.587e-05, 9.564e-05, 9.587e-05, 7753.39615553], [1516800180000, 9.588e-05, 9.588e-05, 9.579e-05, 9.58e-05, 6581.90049478], [1516800240000, 9.58e-05, 9.58e-05, 9.58e-05, 9.58e-05, 10.03100299], [1516800300000, 9.579e-05, 9.579e-05, 9.579e-05, 9.579e-05, 666.18473516], [1516800360000, 9.579e-05, 9.579e-05, 9.579e-05, 9.579e-05, 200.0], [1516800480000, 9.579e-05, 9.579e-05, 9.495e-05, 9.495e-05, 907.29194936], [1516800540000, 9.495e-05, 9.495e-05, 9.449e-05, 9.449e-05, 780.9135672], [1516800600000, 9.578e-05, 9.579e-05, 9.578e-05, 9.578e-05, 2502.61046198], [1516800660000, 9.578e-05, 9.578e-05, 9.48e-05, 9.578e-05, 634.24284374], [1516800720000, 9.476e-05, 9.476e-05, 9.476e-05, 9.476e-05, 15.53377193], [1516800780000, 9.48e-05, 9.481e-05, 9.48e-05, 9.48e-05, 150.0], [1516800840000, 9.481e-05, 9.481e-05, 9.481e-05, 9.481e-05, 32.53424658], [1516800900000, 9.567e-05, 9.567e-05, 9.567e-05, 9.567e-05, 74.69095906], [1516800960000, 9.567e-05, 9.567e-05, 9.567e-05, 9.567e-05, 48.21401964], [1516801020000, 9.48e-05, 9.48e-05, 9.44e-05, 9.44e-05, 1500.0], [1516801140000, 9.468e-05, 9.468e-05, 9.449e-05, 9.449e-05, 225.44286281], [1516801200000, 9.555e-05, 9.555e-05, 9.555e-05, 9.555e-05, 35.07225538], [1516801260000, 9.55e-05, 9.55e-05, 9.55e-05, 9.55e-05, 425.93747399], [1516801320000, 9.55e-05, 9.55e-05, 9.44e-05, 9.44e-05, 1464.58646706], [1516801380000, 9.455e-05, 9.455e-05, 9.455e-05, 9.455e-05, 9615.32032037], [1516801500000, 9.543e-05, 9.543e-05, 9.543e-05, 9.543e-05, 142.98716128], [1516801560000, 9.539e-05, 9.539e-05, 9.539e-05, 9.539e-05, 115.45766415], [1516801620000, 9.44e-05, 9.539e-05, 9.44e-05, 9.44e-05, 429.46321979], [1516801680000, 9.539e-05, 9.539e-05, 9.539e-05, 9.539e-05, 15.0], [1516801740000, 9.528e-05, 9.528e-05, 9.521e-05, 9.521e-05, 91.46630742], [1516801800000, 9.509e-05, 9.515e-05, 9.504e-05, 9.504e-05, 1085.00403797], [1516801860000, 9.5e-05, 9.5e-05, 9.438e-05, 9.44e-05, 1621.69848681], [1516801920000, 9.485e-05, 9.485e-05, 9.4e-05, 9.4e-05, 27288.81024495], [1516801980000, 9.4e-05, 9.401e-05, 9.4e-05, 9.401e-05, 1287.24924066], [1516802040000, 9.496e-05, 9.496e-05, 9.401e-05, 9.495e-05, 268.69057169], [1516802100000, 9.493e-05, 9.498e-05, 9.448e-05, 9.498e-05, 218.20437416], [1516802220000, 9.494e-05, 9.494e-05, 9.494e-05, 9.494e-05, 317.360771], [1516802340000, 9.493e-05, 9.493e-05, 9.403e-05, 9.493e-05, 614.70939652], [1516802400000, 9.493e-05, 9.494e-05, 9.493e-05, 9.493e-05, 2176.23062285], [1516802460000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 19.3739067], [1516802520000, 9.43e-05, 9.43e-05, 9.43e-05, 9.43e-05, 17.5237245], [1516802580000, 9.43e-05, 9.494e-05, 9.405e-05, 9.494e-05, 442.02680574], [1516802640000, 9.41e-05, 9.493e-05, 9.41e-05, 9.493e-05, 1256.11617575], [1516802700000, 9.492e-05, 9.492e-05, 9.41e-05, 9.413e-05, 505.89392847], [1516802760000, 9.492e-05, 9.493e-05, 9.412e-05, 9.412e-05, 198.09403252], [1516802820000, 9.412e-05, 9.412e-05, 9.386e-05, 9.386e-05, 3000.0], [1516802880000, 9.405e-05, 9.491e-05, 9.367e-05, 9.488e-05, 5370.91472684], [1516802940000, 9.488e-05, 9.49e-05, 9.477e-05, 9.49e-05, 2610.40069918], [1516803000000, 9.37e-05, 9.37e-05, 9.37e-05, 9.37e-05, 303.14251774], [1516803060000, 9.37e-05, 9.47e-05, 9.367e-05, 9.47e-05, 8898.55369645], [1516803120000, 9.465e-05, 9.465e-05, 9.458e-05, 9.458e-05, 42.65682392], [1516803180000, 9.458e-05, 9.46e-05, 9.458e-05, 9.46e-05, 834.09628175], [1516803240000, 9.45e-05, 9.45e-05, 9.447e-05, 9.447e-05, 203.46520448], [1516803300000, 9.413e-05, 9.413e-05, 9.413e-05, 9.413e-05, 939.20695902], [1516803360000, 9.413e-05, 9.413e-05, 9.359e-05, 9.359e-05, 2360.33641056], [1516803420000, 9.409e-05, 9.41e-05, 9.409e-05, 9.41e-05, 181.61638399], [1516803480000, 9.409e-05, 9.41e-05, 9.356e-05, 9.36e-05, 2697.26592796], [1516803540000, 9.41e-05, 9.41e-05, 9.41e-05, 9.41e-05, 344.5625224], [1516803600000, 9.41e-05, 9.46e-05, 9.409e-05, 9.409e-05, 2758.70800617], [1516803660000, 9.409e-05, 9.409e-05, 9.36e-05, 9.36e-05, 1861.13655543], [1516803720000, 9.454e-05, 9.454e-05, 9.36e-05, 9.36e-05, 60.8668158], [1516803780000, 9.36e-05, 9.44e-05, 9.35e-05, 9.35e-05, 9997.35681766], [1516803840000, 9.36e-05, 9.441e-05, 9.36e-05, 9.441e-05, 1340.78979965], [1516803900000, 9.441e-05, 9.442e-05, 9.441e-05, 9.442e-05, 485.09468928], [1516803960000, 9.442e-05, 9.457e-05, 9.442e-05, 9.457e-05, 1357.6207817], [1516804020000, 9.457e-05, 9.457e-05, 9.442e-05, 9.442e-05, 824.40989506], [1516804080000, 9.441e-05, 9.441e-05, 9.404e-05, 9.404e-05, 219.81561827], [1516804140000, 9.404e-05, 9.404e-05, 9.404e-05, 9.404e-05, 5.83717227], [1516804200000, 9.383e-05, 9.383e-05, 9.369e-05, 9.383e-05, 1040.73922218], [1516804260000, 9.383e-05, 9.404e-05, 9.369e-05, 9.369e-05, 33543.59718874], [1516804320000, 9.371e-05, 9.45e-05, 9.371e-05, 9.371e-05, 1296.55412152], [1516804380000, 9.371e-05, 9.447e-05, 9.369e-05, 9.37e-05, 462.00525803], [1516804440000, 9.38e-05, 9.39e-05, 9.38e-05, 9.39e-05, 1309.92291957], [1516804500000, 9.39e-05, 9.448e-05, 9.39e-05, 9.448e-05, 104.90860157], [1516804560000, 9.448e-05, 9.448e-05, 9.39e-05, 9.39e-05, 49.64777762], [1516804620000, 9.378e-05, 9.39e-05, 9.373e-05, 9.39e-05, 730.30894054], [1516804680000, 9.436e-05, 9.436e-05, 9.436e-05, 9.436e-05, 2243.86833215], [1516804740000, 9.436e-05, 9.45e-05, 9.37e-05, 9.37e-05, 23037.03735106], [1516804800000, 9.436e-05, 9.436e-05, 9.436e-05, 9.436e-05, 1.00415635], [1516804860000, 9.37e-05, 9.37e-05, 9.37e-05, 9.37e-05, 8.72295882], [1516804920000, 9.436e-05, 9.436e-05, 9.436e-05, 9.436e-05, 97.64508872], [1516804980000, 9.436e-05, 9.436e-05, 9.427e-05, 9.427e-05, 203.18760166], [1516805040000, 9.427e-05, 9.44e-05, 9.427e-05, 9.44e-05, 2791.68214304], [1516805100000, 9.45e-05, 9.45e-05, 9.435e-05, 9.45e-05, 307.46942423], [1516805160000, 9.45e-05, 9.45e-05, 9.382e-05, 9.382e-05, 405.80755803], [1516805220000, 9.382e-05, 9.458e-05, 9.382e-05, 9.458e-05, 1759.43025226], [1516805280000, 9.45e-05, 9.458e-05, 9.45e-05, 9.45e-05, 22013.15586915], [1516805340000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 2200.2907871], [1516805400000, 9.45e-05, 9.458e-05, 9.45e-05, 9.45e-05, 7471.5019632], [1516805460000, 9.45e-05, 9.458e-05, 9.375e-05, 9.458e-05, 8327.92749838], [1516805520000, 9.375e-05, 9.455e-05, 9.375e-05, 9.455e-05, 81.27467851], [1516805580000, 9.455e-05, 9.455e-05, 9.4e-05, 9.4e-05, 226.99644659], [1516805640000, 9.454e-05, 9.454e-05, 9.38e-05, 9.38e-05, 47.65612034], [1516805700000, 9.4e-05, 9.4e-05, 9.4e-05, 9.4e-05, 80.0], [1516805760000, 9.4e-05, 9.4e-05, 9.37e-05, 9.37e-05, 377.65925052], [1516805820000, 9.433e-05, 9.433e-05, 9.35e-05, 9.35e-05, 6442.4749305], [1516805880000, 9.35e-05, 9.37e-05, 9.3e-05, 9.3e-05, 34921.77676346], [1516805940000, 9.36e-05, 9.36e-05, 9.34e-05, 9.34e-05, 433.74860154], [1516806000000, 9.34e-05, 9.36e-05, 9.34e-05, 9.34e-05, 883.52761001], [1516806060000, 9.313e-05, 9.313e-05, 9.3e-05, 9.3e-05, 35000.0], [1516806120000, 9.3e-05, 9.301e-05, 9.3e-05, 9.301e-05, 4186.35416148], [1516806180000, 9.359e-05, 9.359e-05, 9.359e-05, 9.359e-05, 139.16138235], [1516806240000, 9.359e-05, 9.359e-05, 9.359e-05, 9.359e-05, 681.01020328], [1516806300000, 9.322e-05, 9.322e-05, 9.3e-05, 9.322e-05, 1202.04926052], [1516806360000, 9.322e-05, 9.322e-05, 9.302e-05, 9.302e-05, 481.29066563], [1516806420000, 9.339e-05, 9.339e-05, 9.3e-05, 9.3e-05, 781.15274346], [1516806480000, 9.302e-05, 9.302e-05, 9.278e-05, 9.278e-05, 2190.77429944], [1516806540000, 9.3e-05, 9.3e-05, 9.263e-05, 9.263e-05, 4056.2133135], [1516806600000, 9.263e-05, 9.263e-05, 9.248e-05, 9.248e-05, 6433.24776502], [1516806660000, 9.238e-05, 9.248e-05, 9.224e-05, 9.248e-05, 4001.35410581], [1516806720000, 9.248e-05, 9.25e-05, 9.222e-05, 9.25e-05, 1458.11623762], [1516806780000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 131.34513823], [1516806840000, 9.25e-05, 9.261e-05, 9.25e-05, 9.26e-05, 4027.4658089], [1516806900000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 1023.97685834], [1516806960000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 115.19876946], [1516807020000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 26.95945946], [1516807080000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 4321.76677171], [1516807140000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 2045.94838974], [1516807200000, 9.25e-05, 9.261e-05, 9.25e-05, 9.251e-05, 2149.91065104], [1516807260000, 9.261e-05, 9.263e-05, 9.261e-05, 9.263e-05, 415.33919493], [1516807320000, 9.262e-05, 9.263e-05, 9.262e-05, 9.263e-05, 1296.70006595], [1516807380000, 9.263e-05, 9.263e-05, 9.261e-05, 9.263e-05, 1177.09040931], [1516807440000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 4797.75349869], [1516807500000, 9.262e-05, 9.262e-05, 9.25e-05, 9.26e-05, 10068.05430303], [1516807560000, 9.245e-05, 9.245e-05, 9.241e-05, 9.241e-05, 1651.49006623], [1516807620000, 9.26e-05, 9.26e-05, 9.26e-05, 9.26e-05, 1141.10300111], [1516807680000, 9.26e-05, 9.263e-05, 9.251e-05, 9.251e-05, 13429.86026489], [1516807740000, 9.26e-05, 9.26e-05, 9.26e-05, 9.26e-05, 4470.25647948], [1516807800000, 9.26e-05, 9.26e-05, 9.26e-05, 9.26e-05, 2246.0448164], [1516807860000, 9.256e-05, 9.256e-05, 9.25e-05, 9.25e-05, 2493.15958384], [1516807920000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 457.62359996], [1516807980000, 9.249e-05, 9.249e-05, 9.249e-05, 9.249e-05, 1078.49497243], [1516808040000, 9.249e-05, 9.249e-05, 9.249e-05, 9.249e-05, 5716.66259622], [1516808100000, 9.243e-05, 9.243e-05, 9.24e-05, 9.24e-05, 5000.0], [1516808160000, 9.249e-05, 9.249e-05, 9.249e-05, 9.249e-05, 234.9517764], [1516808220000, 9.249e-05, 9.249e-05, 9.24e-05, 9.24e-05, 403.57628331], [1516808280000, 9.236e-05, 9.249e-05, 9.23e-05, 9.249e-05, 5576.91229806], [1516808340000, 9.249e-05, 9.25e-05, 9.249e-05, 9.25e-05, 9830.77389253], [1516808400000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 5123.08362433], [1516808460000, 9.249e-05, 9.249e-05, 9.248e-05, 9.248e-05, 1989.41574399], [1516808520000, 9.248e-05, 9.249e-05, 9.248e-05, 9.249e-05, 9679.32135931], [1516808580000, 9.248e-05, 9.248e-05, 9.24e-05, 9.248e-05, 3739.22198562], [1516808640000, 9.247e-05, 9.247e-05, 9.24e-05, 9.246e-05, 984.89296799], [1516808700000, 9.24e-05, 9.246e-05, 9.224e-05, 9.246e-05, 3198.13644223], [1516808760000, 9.225e-05, 9.225e-05, 9.225e-05, 9.225e-05, 7.17214038], [1516808820000, 9.246e-05, 9.246e-05, 9.246e-05, 9.246e-05, 220.00120771], [1516808880000, 9.246e-05, 9.246e-05, 9.201e-05, 9.205e-05, 13141.4266231], [1516808940000, 9.245e-05, 9.245e-05, 9.201e-05, 9.201e-05, 839.41337329], [1516809000000, 9.201e-05, 9.24e-05, 9.201e-05, 9.24e-05, 1276.49378161], [1516809060000, 9.245e-05, 9.245e-05, 9.245e-05, 9.245e-05, 415.87151783], [1516809120000, 9.245e-05, 9.245e-05, 9.201e-05, 9.244e-05, 189.99769124], [1516809180000, 9.244e-05, 9.244e-05, 9.202e-05, 9.244e-05, 1507.9517234], [1516809240000, 9.244e-05, 9.244e-05, 9.244e-05, 9.244e-05, 152.11232461], [1516809300000, 9.244e-05, 9.244e-05, 9.203e-05, 9.203e-05, 3186.99540017], [1516809360000, 9.244e-05, 9.244e-05, 9.244e-05, 9.244e-05, 2670.06004936], [1516809420000, 9.203e-05, 9.244e-05, 9.203e-05, 9.244e-05, 6890.27868743], [1516809480000, 9.243e-05, 9.244e-05, 9.22e-05, 9.244e-05, 3630.72600818], [1516809540000, 9.244e-05, 9.244e-05, 9.22e-05, 9.22e-05, 1355.65799312], [1516809600000, 9.244e-05, 9.244e-05, 9.244e-05, 9.244e-05, 1533.6520383], [1516809660000, 9.243e-05, 9.243e-05, 9.22e-05, 9.22e-05, 127.91811959], [1516809720000, 9.22e-05, 9.243e-05, 9.206e-05, 9.241e-05, 3035.0695002], [1516809780000, 9.241e-05, 9.241e-05, 9.241e-05, 9.241e-05, 621.53814628], [1516809840000, 9.241e-05, 9.241e-05, 9.241e-05, 9.241e-05, 231.07907419], [1516809900000, 9.241e-05, 9.242e-05, 9.241e-05, 9.242e-05, 200.601003], [1516809960000, 9.242e-05, 9.243e-05, 9.242e-05, 9.243e-05, 475.14143895], [1516810020000, 9.243e-05, 9.243e-05, 9.207e-05, 9.207e-05, 1992.00713163], [1516810080000, 9.243e-05, 9.243e-05, 9.243e-05, 9.243e-05, 5867.53289792], [1516810140000, 9.243e-05, 9.243e-05, 9.243e-05, 9.243e-05, 740.31421779], [1516810200000, 9.243e-05, 9.243e-05, 9.243e-05, 9.243e-05, 6050.0], [1516810260000, 9.243e-05, 9.243e-05, 9.243e-05, 9.243e-05, 329.35851996], [1516810320000, 9.242e-05, 9.243e-05, 9.221e-05, 9.242e-05, 14850.03981094], [1516810380000, 9.242e-05, 9.243e-05, 9.226e-05, 9.243e-05, 6998.17297825], [1516810440000, 9.243e-05, 9.244e-05, 9.242e-05, 9.242e-05, 28841.92762288], [1516810500000, 9.244e-05, 9.372e-05, 9.244e-05, 9.372e-05, 10034.16227822], [1516810560000, 9.372e-05, 9.45e-05, 9.372e-05, 9.45e-05, 8067.13643825], [1516810620000, 9.45e-05, 9.45e-05, 9.378e-05, 9.44e-05, 3936.24890127], [1516810680000, 9.439e-05, 9.439e-05, 9.378e-05, 9.439e-05, 1652.48315199], [1516810740000, 9.439e-05, 9.439e-05, 9.439e-05, 9.439e-05, 6511.6650897], [1516810800000, 9.439e-05, 9.439e-05, 9.438e-05, 9.438e-05, 7303.33223449], [1516810860000, 9.438e-05, 9.438e-05, 9.43e-05, 9.43e-05, 874.59737213], [1516810920000, 9.381e-05, 9.381e-05, 9.381e-05, 9.381e-05, 32.0], [1516810980000, 9.382e-05, 9.382e-05, 9.382e-05, 9.382e-05, 32.43243243], [1516811040000, 9.43e-05, 9.43e-05, 9.43e-05, 9.43e-05, 1232.92263169], [1516811100000, 9.43e-05, 9.43e-05, 9.4e-05, 9.4e-05, 421.48602663], [1516811160000, 9.41e-05, 9.41e-05, 9.379e-05, 9.379e-05, 2100.12294434], [1516811280000, 9.38e-05, 9.407e-05, 9.379e-05, 9.407e-05, 235.68246067], [1516811340000, 9.407e-05, 9.407e-05, 9.407e-05, 9.407e-05, 288.54938158], [1516811460000, 9.405e-05, 9.405e-05, 9.39e-05, 9.39e-05, 411.67021891], [1516811520000, 9.39e-05, 9.39e-05, 9.382e-05, 9.382e-05, 751.67437817], [1516811580000, 9.382e-05, 9.382e-05, 9.382e-05, 9.382e-05, 10.78378378], [1516811640000, 9.382e-05, 9.385e-05, 9.382e-05, 9.385e-05, 574.93281876], [1516811700000, 9.382e-05, 9.385e-05, 9.37e-05, 9.385e-05, 6962.14949923], [1516811760000, 9.39e-05, 9.407e-05, 9.39e-05, 9.407e-05, 2180.5892223], [1516811820000, 9.407e-05, 9.407e-05, 9.407e-05, 9.407e-05, 456.25969076], [1516811880000, 9.407e-05, 9.407e-05, 9.407e-05, 9.407e-05, 106.56957585], [1516811940000, 9.458e-05, 9.458e-05, 9.458e-05, 9.458e-05, 105.46627194], [1516812000000, 9.458e-05, 9.458e-05, 9.42e-05, 9.42e-05, 220.90328082], [1516812060000, 9.458e-05, 9.458e-05, 9.458e-05, 9.458e-05, 3430.6033125], [1516812120000, 9.422e-05, 9.425e-05, 9.42e-05, 9.42e-05, 7154.85162394], [1516812180000, 9.409e-05, 9.42e-05, 9.409e-05, 9.42e-05, 3366.78871364], [1516812240000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 100.301003], [1516812300000, 9.45e-05, 9.452e-05, 9.45e-05, 9.451e-05, 6959.95051836], [1516812360000, 9.451e-05, 9.451e-05, 9.41e-05, 9.45e-05, 9051.52246071], [1516812420000, 9.449e-05, 9.45e-05, 9.449e-05, 9.45e-05, 2580.88491948], [1516812480000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 11.87520241], [1516812540000, 9.455e-05, 9.46e-05, 9.455e-05, 9.46e-05, 1501.84172988], [1516812600000, 9.45e-05, 9.477e-05, 9.45e-05, 9.45e-05, 1178.17923887], [1516812660000, 9.411e-05, 9.45e-05, 9.411e-05, 9.45e-05, 1108.79565473], [1516812780000, 9.45e-05, 9.489e-05, 9.45e-05, 9.489e-05, 6615.86928066], [1516812840000, 9.48e-05, 9.489e-05, 9.47e-05, 9.48e-05, 10212.81990085], [1516812900000, 9.489e-05, 9.49e-05, 9.489e-05, 9.489e-05, 16107.82037194], [1516812960000, 9.489e-05, 9.494e-05, 9.489e-05, 9.494e-05, 4771.84665045], [1516813020000, 9.494e-05, 9.494e-05, 9.41e-05, 9.47e-05, 4830.95347787], [1516813080000, 9.47e-05, 9.47e-05, 9.411e-05, 9.411e-05, 6446.65834335], [1516813140000, 9.415e-05, 9.415e-05, 9.415e-05, 9.415e-05, 10.98789632], [1516813200000, 9.415e-05, 9.416e-05, 9.411e-05, 9.412e-05, 5284.96942647], [1516813260000, 9.412e-05, 9.413e-05, 9.412e-05, 9.413e-05, 108.42780634], [1516813380000, 9.449e-05, 9.45e-05, 9.438e-05, 9.438e-05, 144.70322091], [1516813500000, 9.45e-05, 9.45e-05, 9.413e-05, 9.45e-05, 411.29162335], [1516813560000, 9.413e-05, 9.413e-05, 9.411e-05, 9.411e-05, 1095.21131731], [1516813620000, 9.412e-05, 9.412e-05, 9.41e-05, 9.41e-05, 30000.0], [1516813740000, 9.4e-05, 9.4e-05, 9.4e-05, 9.4e-05, 21.0], [1516813800000, 9.439e-05, 9.439e-05, 9.399e-05, 9.399e-05, 1195.01879204], [1516813860000, 9.399e-05, 9.438e-05, 9.399e-05, 9.438e-05, 1784.10474314], [1516813920000, 9.399e-05, 9.399e-05, 9.399e-05, 9.399e-05, 196.19321796], [1516814040000, 9.397e-05, 9.398e-05, 9.397e-05, 9.398e-05, 38.8253162], [1516814100000, 9.39e-05, 9.39e-05, 9.366e-05, 9.366e-05, 2202.22275058], [1516814160000, 9.37e-05, 9.37e-05, 9.37e-05, 9.37e-05, 91.67235859], [1516814220000, 9.37e-05, 9.39e-05, 9.37e-05, 9.39e-05, 6012.97753181], [1516814280000, 9.39e-05, 9.39e-05, 9.39e-05, 9.39e-05, 7733.47600907], [1516814340000, 9.367e-05, 9.367e-05, 9.367e-05, 9.367e-05, 44.06349736], [1516814400000, 9.39e-05, 9.39e-05, 9.39e-05, 9.39e-05, 9.56070288], [1516814760000, 9.389e-05, 9.39e-05, 9.368e-05, 9.368e-05, 6308.64776239], [1516814820000, 9.368e-05, 9.368e-05, 9.368e-05, 9.368e-05, 35.0], [1516814880000, 9.378e-05, 9.389e-05, 9.368e-05, 9.389e-05, 3681.72557615], [1516814940000, 9.368e-05, 9.389e-05, 9.35e-05, 9.37e-05, 9531.00364715], [1516815000000, 9.379e-05, 9.39e-05, 9.379e-05, 9.39e-05, 18450.22051956], [1516815120000, 9.39e-05, 9.39e-05, 9.39e-05, 9.39e-05, 115.73601924], [1516815180000, 9.39e-05, 9.39e-05, 9.39e-05, 9.39e-05, 708.33675945], [1516815240000, 9.38e-05, 9.38e-05, 9.38e-05, 9.38e-05, 5363.10471156], [1516815360000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 5300.0], [1516815420000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 3000.0], [1516815480000, 9.37e-05, 9.37e-05, 9.36e-05, 9.36e-05, 284.87678401], [1516815660000, 9.37e-05, 9.37e-05, 9.36e-05, 9.369e-05, 4764.44258773], [1516815720000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 787.212], [1516815780000, 9.369e-05, 9.369e-05, 9.3e-05, 9.3e-05, 7276.84691868], [1516815840000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 3308.36808786], [1516815900000, 9.302e-05, 9.36e-05, 9.302e-05, 9.36e-05, 942.81492587], [1516815960000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 4801.18507413], [1516816020000, 9.37e-05, 9.37e-05, 9.36e-05, 9.37e-05, 6206.7027269], [1516816200000, 9.36e-05, 9.36e-05, 9.35e-05, 9.36e-05, 498.02983128], [1516816320000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 10.0], [1516816380000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 193.0], [1516816500000, 9.359e-05, 9.359e-05, 9.359e-05, 9.359e-05, 5019.05700113], [1516816560000, 9.359e-05, 9.359e-05, 9.359e-05, 9.359e-05, 342.93080356], [1516816680000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 2272.48052104], [1516816740000, 9.358e-05, 9.358e-05, 9.358e-05, 9.358e-05, 173.78809627], [1516816800000, 9.28e-05, 9.357e-05, 9.28e-05, 9.357e-05, 500.86022403], [1516816980000, 9.357e-05, 9.357e-05, 9.357e-05, 9.357e-05, 200.0], [1516817040000, 9.357e-05, 9.357e-05, 9.357e-05, 9.357e-05, 365.20298475], [1516817100000, 9.357e-05, 9.358e-05, 9.357e-05, 9.357e-05, 20614.40686978], [1516817220000, 9.356e-05, 9.356e-05, 9.356e-05, 9.356e-05, 53.62170212], [1516817340000, 9.288e-05, 9.288e-05, 9.287e-05, 9.287e-05, 161.96367859], [1516817400000, 9.355e-05, 9.355e-05, 9.355e-05, 9.355e-05, 966.41654286], [1516817460000, 9.355e-05, 9.355e-05, 9.297e-05, 9.3e-05, 343.81314458], [1516817520000, 9.355e-05, 9.355e-05, 9.355e-05, 9.355e-05, 18.35613435], [1516817640000, 9.354e-05, 9.354e-05, 9.354e-05, 9.354e-05, 526.82901454], [1516817760000, 9.288e-05, 9.288e-05, 9.288e-05, 9.288e-05, 30.1814521], [1516817820000, 9.288e-05, 9.354e-05, 9.288e-05, 9.354e-05, 120.4346938], [1516818000000, 9.292e-05, 9.354e-05, 9.292e-05, 9.3e-05, 275.85415809], [1516818060000, 9.3e-05, 9.3e-05, 9.244e-05, 9.244e-05, 9277.34856755], [1516818120000, 9.344e-05, 9.344e-05, 9.344e-05, 9.344e-05, 53.35936664], [1516818180000, 9.295e-05, 9.295e-05, 9.295e-05, 9.295e-05, 1153.0], [1516818240000, 9.343e-05, 9.343e-05, 9.343e-05, 9.343e-05, 41.74650658], [1516818300000, 9.3e-05, 9.342e-05, 9.3e-05, 9.3e-05, 2164.80907578], [1516818420000, 9.34e-05, 9.354e-05, 9.339e-05, 9.354e-05, 17997.80393979], [1516818540000, 9.354e-05, 9.354e-05, 9.354e-05, 9.354e-05, 31.99186127], [1516818600000, 9.354e-05, 9.354e-05, 9.354e-05, 9.354e-05, 146.84452607], [1516818660000, 9.354e-05, 9.354e-05, 9.354e-05, 9.354e-05, 1253.15], [1516818780000, 9.346e-05, 9.35e-05, 9.345e-05, 9.35e-05, 397.861582], [1516818840000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 44.00554762], [1516818900000, 9.35e-05, 9.35e-05, 9.345e-05, 9.345e-05, 5128.50921444], [1516818960000, 9.3e-05, 9.36e-05, 9.3e-05, 9.36e-05, 45241.0870145], [1516819020000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 5500.0], [1516819080000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 219.86793671], [1516819200000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 177.48998992], [1516819260000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 300.0], [1516819320000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 10.69518717], [1516819440000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 213.68822601], [1516819500000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 120.94540777], [1516819740000, 9.302e-05, 9.302e-05, 9.302e-05, 9.302e-05, 250.0], [1516819800000, 9.302e-05, 9.347e-05, 9.301e-05, 9.346e-05, 302.1703837], [1516819860000, 9.346e-05, 9.346e-05, 9.346e-05, 9.346e-05, 99.07277209], [1516819920000, 9.347e-05, 9.347e-05, 9.347e-05, 9.347e-05, 10.51150132], [1516819980000, 9.346e-05, 9.346e-05, 9.3e-05, 9.3e-05, 1187.40104831], [1516820040000, 9.347e-05, 9.347e-05, 9.347e-05, 9.347e-05, 430.38183373], [1516820100000, 9.347e-05, 9.347e-05, 9.347e-05, 9.347e-05, 4263.42857162], [1516820160000, 9.347e-05, 9.347e-05, 9.31e-05, 9.31e-05, 1363.68097595], [1516820220000, 9.347e-05, 9.347e-05, 9.347e-05, 9.347e-05, 60.36247018], [1516820340000, 9.34e-05, 9.34e-05, 9.3e-05, 9.34e-05, 1172.79480754], [1516820400000, 9.34e-05, 9.34e-05, 9.34e-05, 9.34e-05, 4207.97127803], [1516820520000, 9.345e-05, 9.346e-05, 9.345e-05, 9.346e-05, 740.89549828], [1516820580000, 9.34e-05, 9.34e-05, 9.34e-05, 9.34e-05, 16.80877234], [1516820640000, 9.34e-05, 9.34e-05, 9.34e-05, 9.34e-05, 134.15119391], [1516820700000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 1106.02099359], [1516820880000, 9.303e-05, 9.305e-05, 9.303e-05, 9.303e-05, 1336.29465314], [1516820940000, 9.304e-05, 9.304e-05, 9.304e-05, 9.304e-05, 488.79003955], [1516821060000, 9.304e-05, 9.304e-05, 9.302e-05, 9.302e-05, 24429.34550126], [1516821120000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 231.88849845], [1516821240000, 9.277e-05, 9.304e-05, 9.277e-05, 9.304e-05, 542.34476857], [1516821360000, 9.304e-05, 9.305e-05, 9.304e-05, 9.305e-05, 1208.81791544], [1516821420000, 9.343e-05, 9.343e-05, 9.343e-05, 9.343e-05, 317.14920974], [1516821540000, 9.343e-05, 9.343e-05, 9.305e-05, 9.343e-05, 284.29919129], [1516821600000, 9.344e-05, 9.346e-05, 9.305e-05, 9.346e-05, 8497.85278331], [1516821660000, 9.346e-05, 9.346e-05, 9.346e-05, 9.346e-05, 547.04167271], [1516821720000, 9.346e-05, 9.346e-05, 9.346e-05, 9.346e-05, 220.2166372], [1516821780000, 9.31e-05, 9.31e-05, 9.31e-05, 9.31e-05, 206.71027317], [1516821900000, 9.306e-05, 9.306e-05, 9.277e-05, 9.278e-05, 10089.06734305], [1516821960000, 9.3e-05, 9.359e-05, 9.279e-05, 9.359e-05, 1258.84560437], [1516822020000, 9.3e-05, 9.3e-05, 9.287e-05, 9.287e-05, 689.6850162], [1516822080000, 9.277e-05, 9.286e-05, 9.267e-05, 9.286e-05, 1512.7807055], [1516822140000, 9.359e-05, 9.359e-05, 9.359e-05, 9.359e-05, 10.03100299], [1516822200000, 9.359e-05, 9.359e-05, 9.358e-05, 9.358e-05, 417.14698217], [1516822260000, 9.35e-05, 9.359e-05, 9.35e-05, 9.359e-05, 1128.49507923], [1516822440000, 9.348e-05, 9.348e-05, 9.289e-05, 9.289e-05, 556.0825647], [1516822500000, 9.289e-05, 9.289e-05, 9.287e-05, 9.287e-05, 166.89533092], [1516822560000, 9.287e-05, 9.287e-05, 9.287e-05, 9.287e-05, 54.63551201], [1516822620000, 9.288e-05, 9.29e-05, 9.288e-05, 9.29e-05, 2021.41478184], [1516822680000, 9.346e-05, 9.346e-05, 9.346e-05, 9.346e-05, 146.82980105], [1516822740000, 9.346e-05, 9.346e-05, 9.343e-05, 9.343e-05, 123.51580967], [1516822800000, 9.306e-05, 9.342e-05, 9.3e-05, 9.3e-05, 3481.65094265], [1516822860000, 9.291e-05, 9.3e-05, 9.271e-05, 9.271e-05, 2111.6157159], [1516822920000, 9.275e-05, 9.29e-05, 9.275e-05, 9.29e-05, 19851.2612902], [1516822980000, 9.289e-05, 9.29e-05, 9.289e-05, 9.29e-05, 107.37351991], [1516823040000, 9.29e-05, 9.29e-05, 9.29e-05, 9.29e-05, 447.38213132], [1516823100000, 9.279e-05, 9.29e-05, 9.279e-05, 9.29e-05, 1562.76901562], [1516823160000, 9.29e-05, 9.29e-05, 9.29e-05, 9.29e-05, 4914.94459247], [1516823220000, 9.289e-05, 9.29e-05, 9.289e-05, 9.29e-05, 365.69728692], [1516823280000, 9.29e-05, 9.29e-05, 9.29e-05, 9.29e-05, 251.9599998], [1516823340000, 9.283e-05, 9.29e-05, 9.283e-05, 9.283e-05, 443.68366274], [1516823400000, 9.29e-05, 9.29e-05, 9.283e-05, 9.284e-05, 876.69562398], [1516823460000, 9.284e-05, 9.284e-05, 9.267e-05, 9.267e-05, 3103.17164509], [1516823520000, 9.284e-05, 9.291e-05, 9.284e-05, 9.29e-05, 17894.26404345], [1516823580000, 9.29e-05, 9.29e-05, 9.29e-05, 9.29e-05, 288.4345514], [1516823640000, 9.29e-05, 9.299e-05, 9.269e-05, 9.269e-05, 521.48], [1516823700000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 20.0], [1516823760000, 9.3e-05, 9.341e-05, 9.3e-05, 9.341e-05, 378.96864452], [1516823820000, 9.269e-05, 9.341e-05, 9.269e-05, 9.341e-05, 586.80980061], [1516823880000, 9.27e-05, 9.29e-05, 9.233e-05, 9.233e-05, 12338.12059377], [1516823940000, 9.231e-05, 9.26e-05, 9.225e-05, 9.26e-05, 1762.69613762], [1516824000000, 9.26e-05, 9.284e-05, 9.259e-05, 9.284e-05, 2086.93315869], [1516824060000, 9.225e-05, 9.284e-05, 9.211e-05, 9.284e-05, 649.55369188], [1516824120000, 9.247e-05, 9.284e-05, 9.247e-05, 9.284e-05, 18176.0837581], [1516824180000, 9.247e-05, 9.281e-05, 9.21e-05, 9.21e-05, 5263.51623802], [1516824240000, 9.211e-05, 9.279e-05, 9.211e-05, 9.256e-05, 15161.61033562], [1516824300000, 9.278e-05, 9.278e-05, 9.278e-05, 9.278e-05, 2050.83367222], [1516824360000, 9.256e-05, 9.256e-05, 9.256e-05, 9.256e-05, 21.0], [1516824420000, 9.278e-05, 9.29e-05, 9.278e-05, 9.29e-05, 2535.66433372], [1516824480000, 9.284e-05, 9.284e-05, 9.256e-05, 9.284e-05, 1486.00376401], [1516824540000, 9.284e-05, 9.29e-05, 9.204e-05, 9.29e-05, 38081.04217402], [1516824600000, 9.29e-05, 9.329e-05, 9.29e-05, 9.328e-05, 3477.91155615], [1516824660000, 9.205e-05, 9.327e-05, 9.205e-05, 9.325e-05, 183.4828844], [1516824780000, 9.325e-05, 9.325e-05, 9.325e-05, 9.325e-05, 736.25046164], [1516824840000, 9.325e-05, 9.325e-05, 9.223e-05, 9.23e-05, 827.0036084], [1516824900000, 9.23e-05, 9.323e-05, 9.223e-05, 9.23e-05, 10116.35637311], [1516824960000, 9.232e-05, 9.32e-05, 9.231e-05, 9.233e-05, 1572.67883794], [1516825020000, 9.232e-05, 9.315e-05, 9.12e-05, 9.14e-05, 152842.01856025], [1516825080000, 9.308e-05, 9.308e-05, 9.131e-05, 9.131e-05, 4715.59398645], [1516825140000, 9.235e-05, 9.237e-05, 9.206e-05, 9.236e-05, 3034.52219602], [1516825200000, 9.207e-05, 9.267e-05, 9.206e-05, 9.267e-05, 8130.35648484], [1516825260000, 9.267e-05, 9.267e-05, 9.207e-05, 9.208e-05, 4813.64475915], [1516825320000, 9.208e-05, 9.267e-05, 9.208e-05, 9.267e-05, 853.86986444], [1516825380000, 9.296e-05, 9.299e-05, 9.296e-05, 9.299e-05, 1080.9713001], [1516825440000, 9.298e-05, 9.298e-05, 9.298e-05, 9.298e-05, 53.36138583], [1516825560000, 9.296e-05, 9.296e-05, 9.209e-05, 9.209e-05, 190.48852938], [1516825620000, 9.211e-05, 9.211e-05, 9.211e-05, 9.211e-05, 564.02338786], [1516825680000, 9.211e-05, 9.289e-05, 9.211e-05, 9.289e-05, 235.8402679], [1516825740000, 9.286e-05, 9.286e-05, 9.286e-05, 9.286e-05, 5022.20299165], [1516825920000, 9.216e-05, 9.217e-05, 9.216e-05, 9.216e-05, 3961.71723], [1516825980000, 9.216e-05, 9.278e-05, 9.216e-05, 9.277e-05, 3391.40015868], [1516826040000, 9.223e-05, 9.223e-05, 9.216e-05, 9.216e-05, 1032.89105903], [1516826100000, 9.218e-05, 9.218e-05, 9.216e-05, 9.216e-05, 3342.0], [1516826160000, 9.217e-05, 9.277e-05, 9.216e-05, 9.218e-05, 1917.0], [1516826220000, 9.218e-05, 9.277e-05, 9.216e-05, 9.219e-05, 2893.13370976], [1516826280000, 9.219e-05, 9.277e-05, 9.216e-05, 9.216e-05, 10348.70011157], [1516826340000, 9.276e-05, 9.276e-05, 9.276e-05, 9.276e-05, 348.09465105], [1516826460000, 9.276e-05, 9.278e-05, 9.217e-05, 9.218e-05, 1948.41221946], [1516826580000, 9.23e-05, 9.278e-05, 9.217e-05, 9.278e-05, 107.0], [1516826640000, 9.217e-05, 9.278e-05, 9.217e-05, 9.278e-05, 180.05593507], [1516826700000, 9.224e-05, 9.224e-05, 9.217e-05, 9.217e-05, 180.46288501], [1516826760000, 9.217e-05, 9.217e-05, 9.216e-05, 9.217e-05, 527.942116], [1516826820000, 9.217e-05, 9.217e-05, 9.217e-05, 9.217e-05, 250.0], [1516826880000, 9.217e-05, 9.291e-05, 9.217e-05, 9.217e-05, 566.43610665], [1516826940000, 9.217e-05, 9.291e-05, 9.216e-05, 9.216e-05, 680.9112796], [1516827000000, 9.289e-05, 9.289e-05, 9.217e-05, 9.217e-05, 750.76426264], [1516827060000, 9.218e-05, 9.291e-05, 9.217e-05, 9.274e-05, 412.87570778], [1516827120000, 9.29e-05, 9.339e-05, 9.221e-05, 9.315e-05, 20885.98244923], [1516827180000, 9.315e-05, 9.315e-05, 9.252e-05, 9.309e-05, 3619.30896328], [1516827240000, 9.251e-05, 9.251e-05, 9.221e-05, 9.221e-05, 646.43448798], [1516827300000, 9.308e-05, 9.308e-05, 9.308e-05, 9.308e-05, 147.64376052], [1516827360000, 9.226e-05, 9.308e-05, 9.222e-05, 9.222e-05, 4366.65878814], [1516827420000, 9.22e-05, 9.283e-05, 9.219e-05, 9.219e-05, 11011.01198739], [1516827480000, 9.222e-05, 9.307e-05, 9.219e-05, 9.307e-05, 1179.59727174], [1516827540000, 9.219e-05, 9.219e-05, 9.216e-05, 9.216e-05, 3562.98708048], [1516827600000, 9.216e-05, 9.306e-05, 9.216e-05, 9.216e-05, 4324.70182596], [1516827660000, 9.216e-05, 9.216e-05, 9.216e-05, 9.216e-05, 1164.66488155], [1516827720000, 9.218e-05, 9.218e-05, 9.217e-05, 9.217e-05, 1000.0], [1516827780000, 9.217e-05, 9.277e-05, 9.216e-05, 9.216e-05, 1256.41792314], [1516827840000, 9.216e-05, 9.216e-05, 9.216e-05, 9.216e-05, 2159.0], [1516827900000, 9.276e-05, 9.276e-05, 9.273e-05, 9.273e-05, 110.9995824], [1516827960000, 9.217e-05, 9.26e-05, 9.217e-05, 9.217e-05, 236.26736839], [1516828020000, 9.218e-05, 9.218e-05, 9.218e-05, 9.218e-05, 132.32518812], [1516828080000, 9.218e-05, 9.234e-05, 9.218e-05, 9.234e-05, 5209.56139127], [1516828140000, 9.217e-05, 9.217e-05, 9.217e-05, 9.217e-05, 100.0], [1516828200000, 9.234e-05, 9.234e-05, 9.234e-05, 9.234e-05, 82.0], [1516828260000, 9.234e-05, 9.276e-05, 9.234e-05, 9.234e-05, 7852.69908415], [1516828380000, 9.26e-05, 9.276e-05, 9.217e-05, 9.23e-05, 3563.75535742], [1516828440000, 9.251e-05, 9.251e-05, 9.217e-05, 9.217e-05, 160.88700299], [1516828500000, 9.251e-05, 9.252e-05, 9.251e-05, 9.252e-05, 2748.82685487], [1516828560000, 9.297e-05, 9.297e-05, 9.256e-05, 9.256e-05, 364.52814994], [1516828620000, 9.258e-05, 9.262e-05, 9.258e-05, 9.262e-05, 151.12650457], [1516828680000, 9.299e-05, 9.308e-05, 9.266e-05, 9.266e-05, 6581.33456337], [1516828740000, 9.266e-05, 9.266e-05, 9.266e-05, 9.266e-05, 538.0], [1516828800000, 9.266e-05, 9.299e-05, 9.252e-05, 9.299e-05, 3997.79140193], [1516828860000, 9.298e-05, 9.339e-05, 9.278e-05, 9.278e-05, 19948.41386268], [1516828920000, 9.278e-05, 9.279e-05, 9.252e-05, 9.252e-05, 229.14923557], [1516828980000, 9.293e-05, 9.36e-05, 9.293e-05, 9.309e-05, 35905.14697305], [1516829040000, 9.309e-05, 9.309e-05, 9.309e-05, 9.309e-05, 200.0], [1516829100000, 9.311e-05, 9.356e-05, 9.309e-05, 9.356e-05, 864.226459], [1516829160000, 9.36e-05, 9.36e-05, 9.349e-05, 9.349e-05, 88.6457831], [1516829220000, 9.309e-05, 9.35e-05, 9.309e-05, 9.35e-05, 192.0660239], [1516829280000, 9.31e-05, 9.31e-05, 9.309e-05, 9.309e-05, 4073.22217266], [1516829400000, 9.309e-05, 9.338e-05, 9.309e-05, 9.338e-05, 4926.26566896], [1516829460000, 9.338e-05, 9.341e-05, 9.338e-05, 9.341e-05, 1908.04622884], [1516829520000, 9.341e-05, 9.341e-05, 9.341e-05, 9.341e-05, 57.25874632], [1516829580000, 9.34e-05, 9.34e-05, 9.31e-05, 9.31e-05, 866.38129041], [1516829640000, 9.31e-05, 9.31e-05, 9.31e-05, 9.31e-05, 157.25346179], [1516829760000, 9.31e-05, 9.31e-05, 9.309e-05, 9.309e-05, 305.0], [1516829820000, 9.337e-05, 9.337e-05, 9.309e-05, 9.309e-05, 1100.061003], [1516829880000, 9.309e-05, 9.334e-05, 9.309e-05, 9.334e-05, 5681.69104709], [1516829940000, 9.31e-05, 9.336e-05, 9.31e-05, 9.336e-05, 2881.93488527], [1516830000000, 9.329e-05, 9.399e-05, 9.329e-05, 9.399e-05, 2661.62191172], [1516830060000, 9.335e-05, 9.335e-05, 9.293e-05, 9.293e-05, 68.64598909], [1516830120000, 9.335e-05, 9.335e-05, 9.335e-05, 9.335e-05, 193.19820005], [1516830180000, 9.335e-05, 9.335e-05, 9.293e-05, 9.293e-05, 283.62189454], [1516830240000, 9.293e-05, 9.293e-05, 9.274e-05, 9.274e-05, 330.0], [1516830360000, 9.335e-05, 9.399e-05, 9.335e-05, 9.399e-05, 1052.21381644], [1516830420000, 9.276e-05, 9.399e-05, 9.276e-05, 9.277e-05, 2889.85722709], [1516830600000, 9.28e-05, 9.375e-05, 9.28e-05, 9.282e-05, 691.9867981], [1516830660000, 9.283e-05, 9.347e-05, 9.283e-05, 9.287e-05, 746.48809848], [1516830720000, 9.337e-05, 9.35e-05, 9.337e-05, 9.35e-05, 2499.04046216], [1516830780000, 9.29e-05, 9.29e-05, 9.289e-05, 9.289e-05, 936.0], [1516830960000, 9.374e-05, 9.376e-05, 9.374e-05, 9.376e-05, 5319.04472886], [1516831020000, 9.292e-05, 9.371e-05, 9.292e-05, 9.371e-05, 5621.99277715], [1516831080000, 9.371e-05, 9.372e-05, 9.311e-05, 9.372e-05, 2600.10955077], [1516831140000, 9.372e-05, 9.372e-05, 9.314e-05, 9.314e-05, 128.99241204], [1516831200000, 9.35e-05, 9.372e-05, 9.305e-05, 9.33e-05, 5680.01330115], [1516831260000, 9.33e-05, 9.372e-05, 9.33e-05, 9.37e-05, 1173.02700968], [1516831320000, 9.291e-05, 9.339e-05, 9.291e-05, 9.291e-05, 2859.86649036], [1516831380000, 9.339e-05, 9.372e-05, 9.339e-05, 9.34e-05, 767.89158735], [1516831440000, 9.372e-05, 9.372e-05, 9.305e-05, 9.372e-05, 5442.31423284], [1516831500000, 9.348e-05, 9.372e-05, 9.276e-05, 9.372e-05, 3269.1185099], [1516831560000, 9.325e-05, 9.372e-05, 9.325e-05, 9.325e-05, 9007.63408928], [1516831620000, 9.325e-05, 9.325e-05, 9.325e-05, 9.325e-05, 552.26770319], [1516831680000, 9.372e-05, 9.374e-05, 9.329e-05, 9.374e-05, 1473.84238062], [1516831740000, 9.351e-05, 9.374e-05, 9.351e-05, 9.374e-05, 3975.96276154], [1516831800000, 9.374e-05, 9.399e-05, 9.374e-05, 9.374e-05, 935.04152709], [1516831860000, 9.374e-05, 9.374e-05, 9.333e-05, 9.336e-05, 4293.32068733], [1516831920000, 9.374e-05, 9.374e-05, 9.337e-05, 9.34e-05, 12313.03774131], [1516831980000, 9.34e-05, 9.399e-05, 9.34e-05, 9.399e-05, 1277.6761576], [1516832040000, 9.344e-05, 9.344e-05, 9.344e-05, 9.344e-05, 220.0], [1516832100000, 9.344e-05, 9.344e-05, 9.344e-05, 9.344e-05, 130.0], [1516832160000, 9.399e-05, 9.413e-05, 9.399e-05, 9.413e-05, 427.7359044], [1516832220000, 9.413e-05, 9.413e-05, 9.413e-05, 9.413e-05, 243.53264079], [1516832340000, 9.41e-05, 9.413e-05, 9.41e-05, 9.413e-05, 3360.13735642], [1516832400000, 9.413e-05, 9.413e-05, 9.413e-05, 9.413e-05, 4937.2280073], [1516832460000, 9.42e-05, 9.448e-05, 9.413e-05, 9.42e-05, 1146.86998854], [1516832520000, 9.42e-05, 9.448e-05, 9.42e-05, 9.42e-05, 2460.25600144], [1516832580000, 9.413e-05, 9.413e-05, 9.413e-05, 9.413e-05, 1311.88671857], [1516832640000, 9.414e-05, 9.448e-05, 9.413e-05, 9.413e-05, 2082.72466947], [1516832700000, 9.444e-05, 9.448e-05, 9.413e-05, 9.448e-05, 1408.52404723], [1516832760000, 9.413e-05, 9.448e-05, 9.413e-05, 9.413e-05, 279.8935284], [1516832820000, 9.413e-05, 9.413e-05, 9.413e-05, 9.413e-05, 79.09178602], [1516832940000, 9.438e-05, 9.438e-05, 9.438e-05, 9.438e-05, 2028.39322678], [1516833000000, 9.438e-05, 9.438e-05, 9.438e-05, 9.438e-05, 68.02467563], [1516833060000, 9.438e-05, 9.439e-05, 9.414e-05, 9.439e-05, 6467.00853479], [1516833120000, 9.439e-05, 9.439e-05, 9.414e-05, 9.439e-05, 4867.37860995], [1516833180000, 9.439e-05, 9.439e-05, 9.414e-05, 9.414e-05, 2438.9943902], [1516833240000, 9.439e-05, 9.439e-05, 9.439e-05, 9.439e-05, 180.0], [1516833300000, 9.414e-05, 9.414e-05, 9.414e-05, 9.414e-05, 1842.33614309], [1516833360000, 9.414e-05, 9.414e-05, 9.414e-05, 9.414e-05, 8039.80651459], [1516833420000, 9.414e-05, 9.414e-05, 9.414e-05, 9.414e-05, 6475.65487992], [1516833480000, 9.439e-05, 9.448e-05, 9.439e-05, 9.448e-05, 252.86804283], [1516833540000, 9.448e-05, 9.448e-05, 9.414e-05, 9.414e-05, 815.21587647], [1516833600000, 9.414e-05, 9.448e-05, 9.414e-05, 9.448e-05, 1072.27352046], [1516833720000, 9.449e-05, 9.449e-05, 9.449e-05, 9.449e-05, 116.70834453], [1516833780000, 9.414e-05, 9.414e-05, 9.414e-05, 9.414e-05, 463.0], [1516833840000, 9.425e-05, 9.425e-05, 9.425e-05, 9.425e-05, 137.0], [1516833900000, 9.449e-05, 9.449e-05, 9.449e-05, 9.449e-05, 94.46163951], [1516833960000, 9.449e-05, 9.449e-05, 9.414e-05, 9.414e-05, 3368.91367199], [1516834020000, 9.414e-05, 9.414e-05, 9.414e-05, 9.414e-05, 197.4999328], [1516834080000, 9.414e-05, 9.414e-05, 9.413e-05, 9.413e-05, 265.989875], [1516834200000, 9.414e-05, 9.414e-05, 9.414e-05, 9.414e-05, 1050.21083056], [1516834260000, 9.414e-05, 9.414e-05, 9.414e-05, 9.414e-05, 269.63509675], [1516834320000, 9.415e-05, 9.415e-05, 9.414e-05, 9.414e-05, 798.04106269], [1516834380000, 9.413e-05, 9.414e-05, 9.413e-05, 9.414e-05, 5172.40040042], [1516834440000, 9.448e-05, 9.448e-05, 9.414e-05, 9.414e-05, 297.19420754], [1516834500000, 9.414e-05, 9.414e-05, 9.413e-05, 9.413e-05, 1592.0], [1516834560000, 9.413e-05, 9.413e-05, 9.413e-05, 9.413e-05, 562.0], [1516834620000, 9.447e-05, 9.449e-05, 9.447e-05, 9.449e-05, 2921.61129552], [1516834800000, 9.413e-05, 9.413e-05, 9.413e-05, 9.413e-05, 163.25363613], [1516834860000, 9.413e-05, 9.447e-05, 9.413e-05, 9.447e-05, 1240.17930575], [1516834920000, 9.43e-05, 9.43e-05, 9.413e-05, 9.413e-05, 7130.1908476], [1516834980000, 9.413e-05, 9.413e-05, 9.413e-05, 9.413e-05, 1080.0], [1516835040000, 9.413e-05, 9.413e-05, 9.413e-05, 9.413e-05, 636.97861114], [1516835100000, 9.413e-05, 9.413e-05, 9.413e-05, 9.413e-05, 12.6051654], [1516835160000, 9.447e-05, 9.475e-05, 9.413e-05, 9.413e-05, 8906.15284981], [1516835220000, 9.449e-05, 9.45e-05, 9.386e-05, 9.386e-05, 7003.42850167], [1516835280000, 9.39e-05, 9.39e-05, 9.386e-05, 9.386e-05, 674.06685702], [1516835340000, 9.43e-05, 9.43e-05, 9.385e-05, 9.385e-05, 132.01936441], [1516835400000, 9.385e-05, 9.385e-05, 9.385e-05, 9.385e-05, 158.91744033], [1516835460000, 9.43e-05, 9.43e-05, 9.43e-05, 9.43e-05, 50.41867157], [1516835520000, 9.473e-05, 9.473e-05, 9.43e-05, 9.473e-05, 552.66139835], [1516835580000, 9.475e-05, 9.475e-05, 9.43e-05, 9.43e-05, 46.84295325], [1516835640000, 9.43e-05, 9.43e-05, 9.43e-05, 9.43e-05, 4644.20828883], [1516835700000, 9.43e-05, 9.43e-05, 9.43e-05, 9.43e-05, 574.0], [1516835760000, 9.43e-05, 9.43e-05, 9.43e-05, 9.43e-05, 1636.122956], [1516835820000, 9.43e-05, 9.475e-05, 9.385e-05, 9.385e-05, 816.18259259], [1516835940000, 9.457e-05, 9.475e-05, 9.457e-05, 9.475e-05, 90.21562053], [1516836000000, 9.403e-05, 9.403e-05, 9.385e-05, 9.385e-05, 621.22273064], [1516836060000, 9.457e-05, 9.457e-05, 9.457e-05, 9.457e-05, 7.23258894], [1516836120000, 9.457e-05, 9.457e-05, 9.39e-05, 9.403e-05, 275.35773965], [1516836180000, 9.403e-05, 9.403e-05, 9.403e-05, 9.403e-05, 42.0], [1516836240000, 9.403e-05, 9.457e-05, 9.39e-05, 9.433e-05, 2051.57239101], [1516836300000, 9.403e-05, 9.403e-05, 9.39e-05, 9.39e-05, 143.50099245], [1516836360000, 9.457e-05, 9.475e-05, 9.436e-05, 9.475e-05, 4228.32537325], [1516836420000, 9.475e-05, 9.477e-05, 9.475e-05, 9.477e-05, 14200.56824135], [1516836540000, 9.475e-05, 9.477e-05, 9.475e-05, 9.477e-05, 352.42367858], [1516836600000, 9.477e-05, 9.477e-05, 9.477e-05, 9.477e-05, 266.13199902], [1516836660000, 9.477e-05, 9.477e-05, 9.477e-05, 9.477e-05, 70.01220726], [1516836720000, 9.477e-05, 9.477e-05, 9.416e-05, 9.416e-05, 327.847315], [1516836780000, 9.48e-05, 9.485e-05, 9.416e-05, 9.416e-05, 534.12686149], [1516836840000, 9.485e-05, 9.485e-05, 9.485e-05, 9.485e-05, 100.1558288], [1516836900000, 9.485e-05, 9.485e-05, 9.485e-05, 9.485e-05, 36.02654198], [1516836960000, 9.451e-05, 9.451e-05, 9.45e-05, 9.45e-05, 455.0], [1516837020000, 9.485e-05, 9.488e-05, 9.485e-05, 9.488e-05, 11795.05340004], [1516837080000, 9.488e-05, 9.49e-05, 9.488e-05, 9.49e-05, 1051.04334576], [1516837140000, 9.488e-05, 9.5e-05, 9.45e-05, 9.488e-05, 9913.38784766], [1516837200000, 9.488e-05, 9.5e-05, 9.459e-05, 9.488e-05, 1494.42382576], [1516837320000, 9.488e-05, 9.488e-05, 9.426e-05, 9.488e-05, 2270.68509682], [1516837380000, 9.44e-05, 9.44e-05, 9.44e-05, 9.44e-05, 77.68387248], [1516837500000, 9.442e-05, 9.506e-05, 9.442e-05, 9.506e-05, 489.25795315], [1516837560000, 9.506e-05, 9.506e-05, 9.506e-05, 9.506e-05, 7.20240163], [1516837620000, 9.444e-05, 9.506e-05, 9.443e-05, 9.443e-05, 679.570425], [1516837740000, 9.5e-05, 9.506e-05, 9.5e-05, 9.506e-05, 2697.4120765], [1516837800000, 9.506e-05, 9.506e-05, 9.443e-05, 9.443e-05, 18645.35475229], [1516837860000, 9.505e-05, 9.51e-05, 9.443e-05, 9.443e-05, 8021.10705595], [1516837920000, 9.506e-05, 9.506e-05, 9.506e-05, 9.506e-05, 20.98674521], [1516838100000, 9.455e-05, 9.455e-05, 9.455e-05, 9.455e-05, 143.34862385], [1516838160000, 9.444e-05, 9.544e-05, 9.444e-05, 9.544e-05, 3257.06648783], [1516838220000, 9.545e-05, 9.559e-05, 9.545e-05, 9.559e-05, 5402.48688747], [1516838280000, 9.53e-05, 9.559e-05, 9.454e-05, 9.454e-05, 606.759686], [1516838340000, 9.454e-05, 9.6e-05, 9.454e-05, 9.595e-05, 3139.59882708], [1516838400000, 9.5e-05, 9.501e-05, 9.5e-05, 9.501e-05, 233.63063559], [1516838460000, 9.502e-05, 9.593e-05, 9.364e-05, 9.364e-05, 7995.83550194], [1516838520000, 9.426e-05, 9.454e-05, 9.426e-05, 9.454e-05, 71.31317246], [1516838580000, 9.428e-05, 9.455e-05, 9.428e-05, 9.455e-05, 1575.88451256], [1516838640000, 9.428e-05, 9.462e-05, 9.428e-05, 9.428e-05, 991.00758904], [1516838700000, 9.428e-05, 9.428e-05, 9.351e-05, 9.351e-05, 3025.97128511], [1516838760000, 9.351e-05, 9.351e-05, 9.35e-05, 9.35e-05, 114.0], [1516838820000, 9.351e-05, 9.351e-05, 9.351e-05, 9.351e-05, 100.0], [1516838880000, 9.41e-05, 9.41e-05, 9.41e-05, 9.41e-05, 265.01062699], [1516838940000, 9.41e-05, 9.41e-05, 9.41e-05, 9.41e-05, 170.0808239], [1516839000000, 9.41e-05, 9.41e-05, 9.41e-05, 9.41e-05, 500.0], [1516839120000, 9.351e-05, 9.351e-05, 9.308e-05, 9.308e-05, 2478.37831084], [1516839180000, 9.308e-05, 9.308e-05, 9.308e-05, 9.308e-05, 121.25398512], [1516839240000, 9.308e-05, 9.308e-05, 9.308e-05, 9.308e-05, 459.07354889], [1516839300000, 9.395e-05, 9.395e-05, 9.395e-05, 9.395e-05, 20.02951718], [1516839360000, 9.315e-05, 9.394e-05, 9.315e-05, 9.394e-05, 1132.82057428], [1516839420000, 9.394e-05, 9.394e-05, 9.394e-05, 9.394e-05, 106.18586066], [1516839480000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 20.76964449], [1516839540000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 10.0], [1516839600000, 9.394e-05, 9.41e-05, 9.394e-05, 9.41e-05, 17663.82310403], [1516839660000, 9.41e-05, 9.448e-05, 9.41e-05, 9.448e-05, 5928.61283953], [1516839720000, 9.447e-05, 9.602e-05, 9.447e-05, 9.602e-05, 13783.73773636], [1516839780000, 9.602e-05, 9.661e-05, 9.467e-05, 9.475e-05, 15304.18903162], [1516839840000, 9.622e-05, 9.66e-05, 9.501e-05, 9.502e-05, 577.13458848], [1516839900000, 9.528e-05, 9.531e-05, 9.527e-05, 9.531e-05, 593.90233295], [1516839960000, 9.552e-05, 9.645e-05, 9.552e-05, 9.563e-05, 3987.71036469], [1516840020000, 9.569e-05, 9.7e-05, 9.569e-05, 9.7e-05, 16001.73061693], [1516840080000, 9.7e-05, 9.773e-05, 9.583e-05, 9.584e-05, 31796.65019627], [1516840140000, 9.59e-05, 9.655e-05, 9.584e-05, 9.597e-05, 2089.09936339], [1516840200000, 9.601e-05, 9.62e-05, 9.601e-05, 9.62e-05, 7346.61517224], [1516840260000, 9.649e-05, 9.649e-05, 9.62e-05, 9.622e-05, 6152.93481848], [1516840320000, 9.624e-05, 9.649e-05, 9.623e-05, 9.649e-05, 2586.83915074], [1516840380000, 9.649e-05, 9.649e-05, 9.624e-05, 9.649e-05, 2147.112327], [1516840440000, 9.633e-05, 9.649e-05, 9.63e-05, 9.63e-05, 15424.99900579], [1516840500000, 9.63e-05, 9.63e-05, 9.5e-05, 9.585e-05, 48288.31023338], [1516840620000, 9.545e-05, 9.585e-05, 9.474e-05, 9.474e-05, 728.44480787], [1516840680000, 9.545e-05, 9.561e-05, 9.545e-05, 9.559e-05, 716.4308478], [1516840740000, 9.547e-05, 9.547e-05, 9.545e-05, 9.545e-05, 155.92430835], [1516840800000, 9.543e-05, 9.543e-05, 9.543e-05, 9.543e-05, 120.361003], [1516840860000, 9.543e-05, 9.543e-05, 9.541e-05, 9.541e-05, 903.52825901], [1516840920000, 9.541e-05, 9.545e-05, 9.541e-05, 9.541e-05, 1511.18122842], [1516840980000, 9.543e-05, 9.543e-05, 9.541e-05, 9.541e-05, 581.2372734], [1516841040000, 9.539e-05, 9.539e-05, 9.474e-05, 9.535e-05, 6443.10253959], [1516841100000, 9.535e-05, 9.535e-05, 9.535e-05, 9.535e-05, 3138.12270582], [1516841160000, 9.474e-05, 9.474e-05, 9.449e-05, 9.449e-05, 424.66248354], [1516841220000, 9.449e-05, 9.545e-05, 9.449e-05, 9.545e-05, 1234.49263006], [1516841280000, 9.541e-05, 9.547e-05, 9.541e-05, 9.547e-05, 564.48944589], [1516841400000, 9.45e-05, 9.45e-05, 9.45e-05, 9.45e-05, 158.73808966], [1516841460000, 9.45e-05, 9.546e-05, 9.45e-05, 9.546e-05, 1724.2400294], [1516841520000, 9.522e-05, 9.545e-05, 9.522e-05, 9.545e-05, 1200.24037598], [1516841640000, 9.522e-05, 9.522e-05, 9.375e-05, 9.375e-05, 675.26532926], [1516841760000, 9.545e-05, 9.545e-05, 9.545e-05, 9.545e-05, 50.46355321], [1516841820000, 9.535e-05, 9.545e-05, 9.535e-05, 9.545e-05, 1169.83211054], [1516841880000, 9.535e-05, 9.535e-05, 9.535e-05, 9.535e-05, 47.5908059], [1516841940000, 9.534e-05, 9.534e-05, 9.4e-05, 9.4e-05, 264.20001874], [1516842000000, 9.533e-05, 9.534e-05, 9.533e-05, 9.534e-05, 7496.197083], [1516842060000, 9.534e-05, 9.535e-05, 9.534e-05, 9.535e-05, 7160.97300739], [1516842120000, 9.535e-05, 9.535e-05, 9.535e-05, 9.535e-05, 1017.93936762], [1516842180000, 9.535e-05, 9.535e-05, 9.408e-05, 9.408e-05, 276.28457705], [1516842240000, 9.423e-05, 9.534e-05, 9.423e-05, 9.534e-05, 6745.93708589], [1516842360000, 9.448e-05, 9.448e-05, 9.448e-05, 9.448e-05, 326.83276501], [1516842420000, 9.53e-05, 9.535e-05, 9.53e-05, 9.534e-05, 3329.51845234], [1516842480000, 9.534e-05, 9.534e-05, 9.534e-05, 9.534e-05, 55.221576], [1516842540000, 9.534e-05, 9.546e-05, 9.448e-05, 9.535e-05, 14952.51749021], [1516842600000, 9.546e-05, 9.546e-05, 9.546e-05, 9.546e-05, 19131.95671237], [1516842660000, 9.421e-05, 9.546e-05, 9.401e-05, 9.546e-05, 9980.76931651], [1516842780000, 9.547e-05, 9.648e-05, 9.547e-05, 9.646e-05, 153.91560111], [1516842840000, 9.648e-05, 9.648e-05, 9.452e-05, 9.452e-05, 703.0], [1516842900000, 9.59e-05, 9.6e-05, 9.466e-05, 9.54e-05, 4488.61198048], [1516842960000, 9.649e-05, 9.649e-05, 9.649e-05, 9.649e-05, 7.32560277], [1516843020000, 9.485e-05, 9.489e-05, 9.484e-05, 9.489e-05, 1588.92384892], [1516843080000, 9.489e-05, 9.629e-05, 9.484e-05, 9.626e-05, 4015.26228806], [1516843140000, 9.624e-05, 9.624e-05, 9.49e-05, 9.491e-05, 1576.53741389], [1516843200000, 9.49e-05, 9.49e-05, 9.488e-05, 9.488e-05, 2870.37769036], [1516843260000, 9.561e-05, 9.579e-05, 9.49e-05, 9.49e-05, 1044.07248592], [1516843320000, 9.49e-05, 9.49e-05, 9.49e-05, 9.49e-05, 151.76778439], [1516843440000, 9.58e-05, 9.58e-05, 9.58e-05, 9.58e-05, 25.076003], [1516843500000, 9.491e-05, 9.491e-05, 9.395e-05, 9.395e-05, 729.06479411], [1516843560000, 9.575e-05, 9.575e-05, 9.575e-05, 9.575e-05, 333.79982874], [1516843620000, 9.404e-05, 9.56e-05, 9.403e-05, 9.556e-05, 166.11243343], [1516843680000, 9.461e-05, 9.461e-05, 9.461e-05, 9.461e-05, 800.0], [1516843740000, 9.46e-05, 9.46e-05, 9.46e-05, 9.46e-05, 1070.77931656], [1516843800000, 9.54e-05, 9.552e-05, 9.54e-05, 9.552e-05, 351.40286167], [1516843860000, 9.461e-05, 9.549e-05, 9.394e-05, 9.545e-05, 6711.36128725], [1516843920000, 9.545e-05, 9.559e-05, 9.541e-05, 9.559e-05, 11911.5110617], [1516843980000, 9.418e-05, 9.593e-05, 9.417e-05, 9.583e-05, 4529.18763529], [1516844040000, 9.419e-05, 9.419e-05, 9.419e-05, 9.419e-05, 339.25020578], [1516844100000, 9.55e-05, 9.659e-05, 9.49e-05, 9.551e-05, 5665.92840863], [1516844160000, 9.551e-05, 9.655e-05, 9.551e-05, 9.655e-05, 4328.15376197], [1516844220000, 9.58e-05, 9.744e-05, 9.58e-05, 9.744e-05, 3329.62606156], [1516844280000, 9.527e-05, 9.537e-05, 9.527e-05, 9.534e-05, 3471.61247873], [1516844340000, 9.542e-05, 9.743e-05, 9.527e-05, 9.527e-05, 6620.64688969], [1516844400000, 9.672e-05, 9.744e-05, 9.672e-05, 9.744e-05, 3282.60077083], [1516844520000, 9.658e-05, 9.658e-05, 9.658e-05, 9.658e-05, 127.24001355], [1516844580000, 9.655e-05, 9.656e-05, 9.655e-05, 9.655e-05, 1748.74454407], [1516844640000, 9.654e-05, 9.744e-05, 9.654e-05, 9.672e-05, 3630.80724749], [1516844700000, 9.671e-05, 9.671e-05, 9.555e-05, 9.555e-05, 196.73678751], [1516844760000, 9.641e-05, 9.641e-05, 9.549e-05, 9.549e-05, 223.71754593], [1516844820000, 9.64e-05, 9.64e-05, 9.64e-05, 9.64e-05, 3304.75628984], [1516844880000, 9.631e-05, 9.631e-05, 9.631e-05, 9.631e-05, 275.0], [1516844940000, 9.549e-05, 9.549e-05, 9.531e-05, 9.531e-05, 645.3485437], [1516845000000, 9.528e-05, 9.528e-05, 9.475e-05, 9.475e-05, 2208.69570263], [1516845060000, 9.477e-05, 9.549e-05, 9.476e-05, 9.549e-05, 1279.49828074], [1516845120000, 9.547e-05, 9.547e-05, 9.547e-05, 9.547e-05, 237.34596706], [1516845180000, 9.475e-05, 9.475e-05, 9.475e-05, 9.475e-05, 8.16391], [1516845240000, 9.475e-05, 9.547e-05, 9.475e-05, 9.545e-05, 740.35950753], [1516845300000, 9.475e-05, 9.475e-05, 9.474e-05, 9.475e-05, 88.2699283], [1516845360000, 9.479e-05, 9.547e-05, 9.479e-05, 9.547e-05, 293.47768955], [1516845420000, 9.547e-05, 9.547e-05, 9.48e-05, 9.48e-05, 1060.01219692], [1516845480000, 9.48e-05, 9.547e-05, 9.385e-05, 9.547e-05, 4354.4855878], [1516845540000, 9.455e-05, 9.608e-05, 9.454e-05, 9.456e-05, 1166.394285], [1516845600000, 9.456e-05, 9.559e-05, 9.456e-05, 9.559e-05, 61.96158438], [1516845660000, 9.542e-05, 9.542e-05, 9.542e-05, 9.542e-05, 163.20228356], [1516845720000, 9.411e-05, 9.519e-05, 9.408e-05, 9.408e-05, 755.54916097], [1516845780000, 9.431e-05, 9.431e-05, 9.431e-05, 9.431e-05, 9.0], [1516845840000, 9.431e-05, 9.431e-05, 9.431e-05, 9.431e-05, 791.86378164], [1516845900000, 9.431e-05, 9.431e-05, 9.43e-05, 9.431e-05, 2128.31550009], [1516845960000, 9.43e-05, 9.431e-05, 9.333e-05, 9.431e-05, 4323.70808427], [1516846080000, 9.353e-05, 9.353e-05, 9.353e-05, 9.353e-05, 8.16391], [1516846140000, 9.377e-05, 9.377e-05, 9.377e-05, 9.377e-05, 467.41431012], [1516846200000, 9.431e-05, 9.432e-05, 9.377e-05, 9.395e-05, 5043.9566729], [1516846260000, 9.403e-05, 9.403e-05, 9.403e-05, 9.403e-05, 370.78056667], [1516846440000, 9.486e-05, 9.489e-05, 9.486e-05, 9.489e-05, 56.08481532], [1516846500000, 9.489e-05, 9.489e-05, 9.489e-05, 9.489e-05, 44.40436058], [1516846560000, 9.505e-05, 9.505e-05, 9.505e-05, 9.505e-05, 47.86223495], [1516846620000, 9.505e-05, 9.505e-05, 9.505e-05, 9.505e-05, 41.17549868], [1516846680000, 9.41e-05, 9.41e-05, 9.41e-05, 9.41e-05, 181.25836451], [1516846740000, 9.41e-05, 9.41e-05, 9.41e-05, 9.41e-05, 618.74163549], [1516846800000, 9.412e-05, 9.412e-05, 9.403e-05, 9.403e-05, 1560.53966363], [1516846860000, 9.41e-05, 9.5e-05, 9.41e-05, 9.5e-05, 4019.30072988], [1516846920000, 9.5e-05, 9.505e-05, 9.5e-05, 9.505e-05, 501.50100299], [1516846980000, 9.504e-05, 9.504e-05, 9.405e-05, 9.405e-05, 152.60595865], [1516847040000, 9.407e-05, 9.407e-05, 9.405e-05, 9.405e-05, 5049.24287059], [1516847100000, 9.501e-05, 9.505e-05, 9.501e-05, 9.505e-05, 1003.00100299], [1516847160000, 9.505e-05, 9.572e-05, 9.505e-05, 9.572e-05, 1842.42389659], [1516847220000, 9.572e-05, 9.572e-05, 9.434e-05, 9.434e-05, 1304.84385254], [1516847340000, 9.461e-05, 9.566e-05, 9.393e-05, 9.393e-05, 3431.59746151], [1516847400000, 9.56e-05, 9.56e-05, 9.418e-05, 9.418e-05, 369.67122923], [1516847460000, 9.529e-05, 9.529e-05, 9.421e-05, 9.421e-05, 345.85715661], [1516847580000, 9.42e-05, 9.495e-05, 9.357e-05, 9.357e-05, 560.87410964], [1516847640000, 9.369e-05, 9.459e-05, 9.369e-05, 9.459e-05, 1400.18998855], [1516847700000, 9.463e-05, 9.463e-05, 9.445e-05, 9.445e-05, 193.59898433], [1516847820000, 9.445e-05, 9.445e-05, 9.445e-05, 9.445e-05, 15.0], [1516847880000, 9.445e-05, 9.5e-05, 9.445e-05, 9.5e-05, 312.28194546], [1516847940000, 9.446e-05, 9.446e-05, 9.445e-05, 9.445e-05, 377.50873088], [1516848000000, 9.446e-05, 9.446e-05, 9.446e-05, 9.446e-05, 1236.81493621], [1516848060000, 9.446e-05, 9.446e-05, 9.445e-05, 9.445e-05, 2633.68930392], [1516848180000, 9.445e-05, 9.445e-05, 9.409e-05, 9.409e-05, 1775.49082296], [1516848240000, 9.409e-05, 9.409e-05, 9.409e-05, 9.409e-05, 165.37964865], [1516848300000, 9.484e-05, 9.484e-05, 9.444e-05, 9.444e-05, 304.96321471], [1516848360000, 9.443e-05, 9.443e-05, 9.35e-05, 9.35e-05, 3729.63092705], [1516848420000, 9.35e-05, 9.431e-05, 9.35e-05, 9.431e-05, 165.34628317], [1516848480000, 9.429e-05, 9.429e-05, 9.428e-05, 9.428e-05, 55.48156606], [1516848540000, 9.42e-05, 9.42e-05, 9.41e-05, 9.41e-05, 42.23192842], [1516848600000, 9.357e-05, 9.42e-05, 9.357e-05, 9.42e-05, 1288.54600001], [1516848660000, 9.361e-05, 9.42e-05, 9.361e-05, 9.42e-05, 100.07916073], [1516848720000, 9.4e-05, 9.4e-05, 9.4e-05, 9.4e-05, 818.34594364], [1516848780000, 9.361e-05, 9.4e-05, 9.361e-05, 9.4e-05, 4329.09038082], [1516848840000, 9.4e-05, 9.419e-05, 9.361e-05, 9.361e-05, 1816.03548967], [1516848960000, 9.361e-05, 9.42e-05, 9.361e-05, 9.42e-05, 544.67995038], [1516849020000, 9.42e-05, 9.42e-05, 9.42e-05, 9.42e-05, 1370.25546536], [1516849080000, 9.42e-05, 9.42e-05, 9.361e-05, 9.361e-05, 3535.51842262], [1516849140000, 9.42e-05, 9.482e-05, 9.42e-05, 9.482e-05, 3268.58740844], [1516849260000, 9.422e-05, 9.425e-05, 9.385e-05, 9.385e-05, 3331.06053169], [1516849320000, 9.42e-05, 9.425e-05, 9.42e-05, 9.425e-05, 711.94919735], [1516849380000, 9.372e-05, 9.425e-05, 9.35e-05, 9.425e-05, 2075.22600299], [1516849440000, 9.425e-05, 9.425e-05, 9.425e-05, 9.425e-05, 100.73707355], [1516849500000, 9.366e-05, 9.425e-05, 9.365e-05, 9.425e-05, 1988.91195047], [1516849560000, 9.365e-05, 9.483e-05, 9.365e-05, 9.483e-05, 937.32497862], [1516849680000, 9.357e-05, 9.357e-05, 9.357e-05, 9.357e-05, 13.68644967], [1516849740000, 9.358e-05, 9.471e-05, 9.356e-05, 9.471e-05, 1676.3337046], [1516849800000, 9.362e-05, 9.425e-05, 9.362e-05, 9.425e-05, 4536.93798064], [1516849860000, 9.425e-05, 9.425e-05, 9.369e-05, 9.369e-05, 5117.46631172], [1516849980000, 9.369e-05, 9.369e-05, 9.369e-05, 9.369e-05, 63.0], [1516850040000, 9.37e-05, 9.37e-05, 9.369e-05, 9.369e-05, 200.59107503], [1516850100000, 9.37e-05, 9.37e-05, 9.368e-05, 9.37e-05, 1051.53883407], [1516850160000, 9.37e-05, 9.37e-05, 9.352e-05, 9.352e-05, 250.0], [1516850220000, 9.353e-05, 9.353e-05, 9.351e-05, 9.351e-05, 106.62224808], [1516850280000, 9.351e-05, 9.353e-05, 9.351e-05, 9.353e-05, 1092.51560916], [1516850340000, 9.353e-05, 9.445e-05, 9.35e-05, 9.445e-05, 2318.31861032], [1516850400000, 9.356e-05, 9.444e-05, 9.356e-05, 9.357e-05, 1082.55589731], [1516850460000, 9.431e-05, 9.431e-05, 9.425e-05, 9.425e-05, 167.12625797], [1516850520000, 9.425e-05, 9.425e-05, 9.36e-05, 9.36e-05, 203.16615334], [1516850580000, 9.425e-05, 9.436e-05, 9.425e-05, 9.436e-05, 214.55686025], [1516850640000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 5000.0], [1516850700000, 9.44e-05, 9.441e-05, 9.439e-05, 9.439e-05, 530.9008849], [1516850760000, 9.359e-05, 9.359e-05, 9.359e-05, 9.359e-05, 30.0], [1516850820000, 9.359e-05, 9.44e-05, 9.35e-05, 9.35e-05, 1061.83816485], [1516850940000, 9.35e-05, 9.436e-05, 9.35e-05, 9.436e-05, 446.81614095], [1516851000000, 9.431e-05, 9.431e-05, 9.431e-05, 9.431e-05, 40.0], [1516851060000, 9.43e-05, 9.43e-05, 9.35e-05, 9.35e-05, 1370.68493224], [1516851120000, 9.35e-05, 9.35e-05, 9.334e-05, 9.35e-05, 5858.40273812], [1516851180000, 9.35e-05, 9.35e-05, 9.334e-05, 9.334e-05, 1692.96413618], [1516851240000, 9.35e-05, 9.35e-05, 9.344e-05, 9.35e-05, 1361.95302999], [1516851300000, 9.421e-05, 9.421e-05, 9.334e-05, 9.417e-05, 3310.92318777], [1516851360000, 9.417e-05, 9.417e-05, 9.417e-05, 9.417e-05, 1323.37648801], [1516851420000, 9.334e-05, 9.334e-05, 9.334e-05, 9.334e-05, 18.0], [1516851480000, 9.334e-05, 9.334e-05, 9.334e-05, 9.334e-05, 56.23993305], [1516851540000, 9.334e-05, 9.415e-05, 9.334e-05, 9.415e-05, 501.32533144], [1516851600000, 9.415e-05, 9.417e-05, 9.334e-05, 9.334e-05, 3920.14222797], [1516851720000, 9.416e-05, 9.417e-05, 9.416e-05, 9.417e-05, 68.27385332], [1516851780000, 9.351e-05, 9.351e-05, 9.337e-05, 9.337e-05, 60.0], [1516851840000, 9.417e-05, 9.417e-05, 9.34e-05, 9.34e-05, 1836.52052063], [1516851960000, 9.416e-05, 9.416e-05, 9.341e-05, 9.341e-05, 150.25496735], [1516852020000, 9.416e-05, 9.416e-05, 9.416e-05, 9.416e-05, 142.28675335], [1516852140000, 9.34e-05, 9.34e-05, 9.34e-05, 9.34e-05, 25.0], [1516852200000, 9.4e-05, 9.416e-05, 9.4e-05, 9.416e-05, 60.34673449], [1516852260000, 9.388e-05, 9.388e-05, 9.349e-05, 9.349e-05, 41.26270807], [1516852320000, 9.415e-05, 9.416e-05, 9.349e-05, 9.349e-05, 931.24653826], [1516852380000, 9.416e-05, 9.416e-05, 9.416e-05, 9.416e-05, 1086.22571296], [1516852440000, 9.416e-05, 9.416e-05, 9.35e-05, 9.357e-05, 650.54836606], [1516852500000, 9.357e-05, 9.357e-05, 9.357e-05, 9.357e-05, 179.68705066], [1516852560000, 9.416e-05, 9.416e-05, 9.416e-05, 9.416e-05, 1150.15913907], [1516852620000, 9.373e-05, 9.376e-05, 9.362e-05, 9.376e-05, 3501.18387765], [1516852740000, 9.434e-05, 9.453e-05, 9.386e-05, 9.4e-05, 1888.8374646], [1516852800000, 9.399e-05, 9.399e-05, 9.372e-05, 9.372e-05, 1927.7188288], [1516852860000, 9.399e-05, 9.399e-05, 9.385e-05, 9.385e-05, 1171.2176686], [1516852920000, 9.387e-05, 9.4e-05, 9.387e-05, 9.4e-05, 2306.99630016], [1516852980000, 9.401e-05, 9.401e-05, 9.374e-05, 9.374e-05, 3276.0], [1516853040000, 9.372e-05, 9.372e-05, 9.369e-05, 9.369e-05, 1000.0], [1516853100000, 9.371e-05, 9.371e-05, 9.371e-05, 9.371e-05, 624.59939637], [1516853160000, 9.384e-05, 9.384e-05, 9.384e-05, 9.384e-05, 1581.66146866], [1516853220000, 9.384e-05, 9.386e-05, 9.371e-05, 9.371e-05, 2202.59118448], [1516853280000, 9.371e-05, 9.371e-05, 9.371e-05, 9.371e-05, 1093.0], [1516853340000, 9.371e-05, 9.429e-05, 9.371e-05, 9.375e-05, 1489.25790721], [1516853400000, 9.371e-05, 9.371e-05, 9.371e-05, 9.371e-05, 210.2163843], [1516853460000, 9.371e-05, 9.476e-05, 9.371e-05, 9.376e-05, 1008.86983603], [1516853520000, 9.378e-05, 9.378e-05, 9.371e-05, 9.371e-05, 9011.87155072], [1516853580000, 9.45e-05, 9.45e-05, 9.373e-05, 9.373e-05, 195.83549092], [1516853700000, 9.371e-05, 9.373e-05, 9.36e-05, 9.36e-05, 2468.8814112], [1516853760000, 9.36e-05, 9.36e-05, 9.358e-05, 9.359e-05, 3021.92797863], [1516853820000, 9.355e-05, 9.36e-05, 9.355e-05, 9.355e-05, 705.08290328], [1516853880000, 9.355e-05, 9.373e-05, 9.355e-05, 9.355e-05, 1201.32659145], [1516853940000, 9.355e-05, 9.433e-05, 9.355e-05, 9.433e-05, 199.1385407], [1516854060000, 9.37e-05, 9.428e-05, 9.355e-05, 9.355e-05, 1278.88945667], [1516854120000, 9.428e-05, 9.428e-05, 9.428e-05, 9.428e-05, 12.72804412], [1516854180000, 9.358e-05, 9.448e-05, 9.358e-05, 9.448e-05, 2771.13321175], [1516854240000, 9.435e-05, 9.448e-05, 9.434e-05, 9.448e-05, 740.98452109], [1516854300000, 9.359e-05, 9.448e-05, 9.356e-05, 9.447e-05, 625.63680281], [1516854420000, 9.36e-05, 9.439e-05, 9.36e-05, 9.439e-05, 80.17930404], [1516854540000, 9.42e-05, 9.42e-05, 9.42e-05, 9.42e-05, 58.12100299], [1516854600000, 9.42e-05, 9.42e-05, 9.42e-05, 9.42e-05, 298.0806205], [1516854660000, 9.358e-05, 9.358e-05, 9.357e-05, 9.357e-05, 592.0], [1516854720000, 9.42e-05, 9.42e-05, 9.357e-05, 9.358e-05, 1108.36585256], [1516854780000, 9.358e-05, 9.42e-05, 9.357e-05, 9.357e-05, 441.89395428], [1516854840000, 9.357e-05, 9.357e-05, 9.357e-05, 9.357e-05, 9261.39827413], [1516854900000, 9.428e-05, 9.435e-05, 9.357e-05, 9.357e-05, 764.28638551], [1516855020000, 9.356e-05, 9.434e-05, 9.355e-05, 9.434e-05, 2246.53148319], [1516855080000, 9.355e-05, 9.355e-05, 9.337e-05, 9.337e-05, 442.35413885], [1516855140000, 9.338e-05, 9.338e-05, 9.338e-05, 9.338e-05, 150.84598728], [1516855200000, 9.338e-05, 9.338e-05, 9.338e-05, 9.338e-05, 228.12458759], [1516855260000, 9.338e-05, 9.338e-05, 9.338e-05, 9.338e-05, 837.2072412], [1516855320000, 9.339e-05, 9.427e-05, 9.339e-05, 9.426e-05, 411.65812265], [1516855380000, 9.423e-05, 9.426e-05, 9.35e-05, 9.426e-05, 465.78209602], [1516855440000, 9.42e-05, 9.42e-05, 9.42e-05, 9.42e-05, 211.64863144], [1516855500000, 9.409e-05, 9.409e-05, 9.342e-05, 9.342e-05, 318.69506321], [1516855620000, 9.356e-05, 9.356e-05, 9.356e-05, 9.356e-05, 186.0], [1516855860000, 9.362e-05, 9.362e-05, 9.362e-05, 9.362e-05, 445.0], [1516855920000, 9.362e-05, 9.426e-05, 9.362e-05, 9.426e-05, 584.83766438], [1516855980000, 9.363e-05, 9.426e-05, 9.362e-05, 9.362e-05, 1132.36925907], [1516856040000, 9.438e-05, 9.438e-05, 9.438e-05, 9.438e-05, 34.92865783], [1516856100000, 9.414e-05, 9.429e-05, 9.414e-05, 9.428e-05, 41.74198642], [1516856160000, 9.369e-05, 9.369e-05, 9.369e-05, 9.369e-05, 22.44444073], [1516856220000, 9.37e-05, 9.426e-05, 9.37e-05, 9.37e-05, 407.74876839], [1516856340000, 9.37e-05, 9.446e-05, 9.369e-05, 9.446e-05, 962.18220592], [1516856400000, 9.369e-05, 9.369e-05, 9.369e-05, 9.369e-05, 226.08741263], [1516856460000, 9.369e-05, 9.369e-05, 9.369e-05, 9.369e-05, 200.40557291], [1516856520000, 9.436e-05, 9.436e-05, 9.436e-05, 9.436e-05, 2628.43529089], [1516856640000, 9.445e-05, 9.449e-05, 9.445e-05, 9.449e-05, 797.391105], [1516856760000, 9.376e-05, 9.445e-05, 9.376e-05, 9.377e-05, 740.29048638], [1516856820000, 9.441e-05, 9.443e-05, 9.36e-05, 9.443e-05, 4053.12449134], [1516857000000, 9.363e-05, 9.363e-05, 9.362e-05, 9.362e-05, 428.0], [1516857120000, 9.438e-05, 9.441e-05, 9.438e-05, 9.441e-05, 198.46943233], [1516857180000, 9.362e-05, 9.362e-05, 9.362e-05, 9.362e-05, 55.44466902], [1516857240000, 9.362e-05, 9.44e-05, 9.362e-05, 9.366e-05, 471.75628381], [1516857300000, 9.368e-05, 9.368e-05, 9.367e-05, 9.367e-05, 31.66205924], [1516857360000, 9.432e-05, 9.433e-05, 9.367e-05, 9.368e-05, 141.17868252], [1516857420000, 9.43e-05, 9.43e-05, 9.428e-05, 9.428e-05, 1711.57814532], [1516857480000, 9.424e-05, 9.428e-05, 9.424e-05, 9.428e-05, 826.57458094], [1516857600000, 9.424e-05, 9.426e-05, 9.424e-05, 9.426e-05, 508.83779467], [1516857660000, 9.424e-05, 9.424e-05, 9.369e-05, 9.369e-05, 92.3600085], [1516857720000, 9.422e-05, 9.422e-05, 9.369e-05, 9.369e-05, 647.94528377], [1516857780000, 9.424e-05, 9.424e-05, 9.369e-05, 9.369e-05, 2833.60067521], [1516857840000, 9.373e-05, 9.375e-05, 9.373e-05, 9.375e-05, 1225.3697934], [1516857900000, 9.421e-05, 9.421e-05, 9.373e-05, 9.373e-05, 619.08220596], [1516857960000, 9.421e-05, 9.421e-05, 9.421e-05, 9.421e-05, 10.03100299], [1516858020000, 9.42e-05, 9.42e-05, 9.42e-05, 9.42e-05, 71.72017944], [1516858080000, 9.42e-05, 9.42e-05, 9.42e-05, 9.42e-05, 31.76771447], [1516858140000, 9.42e-05, 9.42e-05, 9.343e-05, 9.343e-05, 1946.95383945], [1516858200000, 9.42e-05, 9.42e-05, 9.343e-05, 9.343e-05, 318.2183543], [1516858260000, 9.382e-05, 9.416e-05, 9.382e-05, 9.416e-05, 664.03427082], [1516858320000, 9.416e-05, 9.416e-05, 9.416e-05, 9.416e-05, 111.94772202], [1516858380000, 9.416e-05, 9.416e-05, 9.416e-05, 9.416e-05, 10.0], [1516858440000, 9.392e-05, 9.392e-05, 9.351e-05, 9.351e-05, 124.79400247], [1516858500000, 9.416e-05, 9.457e-05, 9.416e-05, 9.457e-05, 345.03300299], [1516858560000, 9.372e-05, 9.372e-05, 9.372e-05, 9.372e-05, 28.47659362], [1516858620000, 9.372e-05, 9.457e-05, 9.372e-05, 9.438e-05, 2420.65364944], [1516858740000, 9.435e-05, 9.437e-05, 9.361e-05, 9.437e-05, 201.77950169], [1516858860000, 9.361e-05, 9.429e-05, 9.361e-05, 9.429e-05, 45.3773217], [1516858920000, 9.424e-05, 9.431e-05, 9.424e-05, 9.431e-05, 34.08740099], [1516859040000, 9.431e-05, 9.431e-05, 9.361e-05, 9.361e-05, 616.61689048], [1516859100000, 9.431e-05, 9.431e-05, 9.431e-05, 9.431e-05, 140.42100299], [1516859160000, 9.429e-05, 9.431e-05, 9.361e-05, 9.361e-05, 2394.25396576], [1516859220000, 9.361e-05, 9.361e-05, 9.361e-05, 9.361e-05, 45.64704324], [1516859280000, 9.426e-05, 9.426e-05, 9.39e-05, 9.39e-05, 2265.19495517], [1516859340000, 9.39e-05, 9.424e-05, 9.361e-05, 9.361e-05, 359.77177892], [1516859400000, 9.361e-05, 9.422e-05, 9.361e-05, 9.422e-05, 718.63105487], [1516859460000, 9.42e-05, 9.42e-05, 9.42e-05, 9.42e-05, 1967.60258489], [1516859520000, 9.422e-05, 9.431e-05, 9.365e-05, 9.431e-05, 380.24014025], [1516859580000, 9.431e-05, 9.431e-05, 9.368e-05, 9.431e-05, 554.2442847], [1516859640000, 9.361e-05, 9.457e-05, 9.361e-05, 9.457e-05, 932.66765908], [1516859820000, 9.438e-05, 9.438e-05, 9.438e-05, 9.438e-05, 27.54688591], [1516859880000, 9.438e-05, 9.458e-05, 9.389e-05, 9.458e-05, 611.50165926], [1516859940000, 9.458e-05, 9.459e-05, 9.456e-05, 9.459e-05, 366.23700698], [1516860000000, 9.389e-05, 9.389e-05, 9.365e-05, 9.365e-05, 403.33169751], [1516860060000, 9.362e-05, 9.458e-05, 9.362e-05, 9.458e-05, 1106.24143054], [1516860240000, 9.398e-05, 9.459e-05, 9.375e-05, 9.376e-05, 277.39849388], [1516860360000, 9.378e-05, 9.379e-05, 9.375e-05, 9.379e-05, 842.67106431], [1516860480000, 9.379e-05, 9.379e-05, 9.379e-05, 9.379e-05, 27.30755244], [1516860540000, 9.379e-05, 9.454e-05, 9.379e-05, 9.454e-05, 93.55298068], [1516860600000, 9.379e-05, 9.453e-05, 9.375e-05, 9.453e-05, 165.01722299], [1516860660000, 9.375e-05, 9.375e-05, 9.351e-05, 9.351e-05, 1120.82850716], [1516860780000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 10.0], [1516860840000, 9.395e-05, 9.395e-05, 9.395e-05, 9.395e-05, 403.33584809], [1516860900000, 9.436e-05, 9.454e-05, 9.345e-05, 9.345e-05, 3732.53183594], [1516860960000, 9.452e-05, 9.452e-05, 9.452e-05, 9.452e-05, 17.08967874], [1516861020000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 89.94478319], [1516861080000, 9.35e-05, 9.449e-05, 9.349e-05, 9.378e-05, 1989.95326617], [1516861140000, 9.361e-05, 9.378e-05, 9.361e-05, 9.361e-05, 946.97211336], [1516861200000, 9.435e-05, 9.467e-05, 9.353e-05, 9.372e-05, 2264.04092315], [1516861260000, 9.4e-05, 9.4e-05, 9.399e-05, 9.399e-05, 2199.57342215], [1516861320000, 9.38e-05, 9.466e-05, 9.38e-05, 9.466e-05, 112.53600839], [1516861380000, 9.383e-05, 9.383e-05, 9.383e-05, 9.383e-05, 58.6568126], [1516861440000, 9.384e-05, 9.4e-05, 9.383e-05, 9.4e-05, 565.0], [1516861500000, 9.4e-05, 9.467e-05, 9.4e-05, 9.467e-05, 1773.89978939], [1516861560000, 9.4e-05, 9.4e-05, 9.4e-05, 9.4e-05, 1480.54889372], [1516861620000, 9.399e-05, 9.399e-05, 9.399e-05, 9.399e-05, 278.73926594], [1516861680000, 9.398e-05, 9.398e-05, 9.382e-05, 9.382e-05, 2353.38884896], [1516861740000, 9.466e-05, 9.466e-05, 9.466e-05, 9.466e-05, 14.33232789], [1516861800000, 9.463e-05, 9.464e-05, 9.454e-05, 9.454e-05, 3920.25922562], [1516861860000, 9.382e-05, 9.459e-05, 9.382e-05, 9.382e-05, 974.08175906], [1516861920000, 9.453e-05, 9.453e-05, 9.383e-05, 9.383e-05, 733.54417727], [1516861980000, 9.384e-05, 9.453e-05, 9.384e-05, 9.4e-05, 3004.29860412], [1516862100000, 9.4e-05, 9.4e-05, 9.386e-05, 9.386e-05, 54.83244534], [1516862160000, 9.4e-05, 9.453e-05, 9.4e-05, 9.453e-05, 1802.48618493], [1516862220000, 9.454e-05, 9.469e-05, 9.403e-05, 9.406e-05, 6014.04104136], [1516862280000, 9.41e-05, 9.41e-05, 9.344e-05, 9.344e-05, 3470.80196845], [1516862400000, 9.371e-05, 9.371e-05, 9.369e-05, 9.371e-05, 105982.69708094], [1516862460000, 9.37e-05, 9.55e-05, 9.353e-05, 9.55e-05, 7528.24493181], [1516862520000, 9.456e-05, 9.557e-05, 9.39e-05, 9.557e-05, 40879.60527285], [1516862580000, 9.557e-05, 9.557e-05, 9.557e-05, 9.557e-05, 36871.18391599], [1516862640000, 9.557e-05, 9.557e-05, 9.557e-05, 9.557e-05, 21945.93923198], [1516862700000, 9.557e-05, 9.557e-05, 9.358e-05, 9.358e-05, 8255.54520247], [1516862760000, 9.514e-05, 9.557e-05, 9.514e-05, 9.557e-05, 100.301003], [1516862820000, 9.555e-05, 9.577e-05, 9.42e-05, 9.573e-05, 4316.89086332], [1516862880000, 9.562e-05, 9.566e-05, 9.439e-05, 9.439e-05, 2309.20865424], [1516862940000, 9.572e-05, 9.6e-05, 9.439e-05, 9.439e-05, 1406.47324827], [1516863000000, 9.569e-05, 9.569e-05, 9.569e-05, 9.569e-05, 27.29028315], [1516863060000, 9.566e-05, 9.566e-05, 9.442e-05, 9.442e-05, 1559.2654673], [1516863120000, 9.439e-05, 9.439e-05, 9.439e-05, 9.439e-05, 786.87516087], [1516863180000, 9.44e-05, 9.44e-05, 9.395e-05, 9.395e-05, 4971.85076353], [1516863240000, 9.428e-05, 9.442e-05, 9.395e-05, 9.442e-05, 243.53036141], [1516863300000, 9.401e-05, 9.401e-05, 9.378e-05, 9.388e-05, 10659.60698344], [1516863360000, 9.38e-05, 9.401e-05, 9.371e-05, 9.373e-05, 7485.79248477], [1516863480000, 9.435e-05, 9.441e-05, 9.354e-05, 9.356e-05, 18527.27673312], [1516863540000, 9.356e-05, 9.356e-05, 9.353e-05, 9.353e-05, 6330.17339527], [1516863600000, 9.354e-05, 9.354e-05, 9.337e-05, 9.337e-05, 5108.41855496], [1516863660000, 9.337e-05, 9.337e-05, 9.3e-05, 9.31e-05, 13939.41982976], [1516863720000, 9.31e-05, 9.31e-05, 9.31e-05, 9.31e-05, 53.7056928], [1516863780000, 9.31e-05, 9.31e-05, 9.3e-05, 9.31e-05, 930.95581693], [1516863840000, 9.31e-05, 9.31e-05, 9.31e-05, 9.31e-05, 12.88936627], [1516863900000, 9.31e-05, 9.339e-05, 9.31e-05, 9.339e-05, 6203.05204695], [1516863960000, 9.339e-05, 9.371e-05, 9.339e-05, 9.339e-05, 6642.91925537], [1516864020000, 9.37e-05, 9.37e-05, 9.37e-05, 9.37e-05, 86.89374346], [1516864080000, 9.37e-05, 9.371e-05, 9.37e-05, 9.371e-05, 4720.13108551], [1516864140000, 9.342e-05, 9.342e-05, 9.339e-05, 9.339e-05, 1771.36895259], [1516864200000, 9.362e-05, 9.362e-05, 9.339e-05, 9.339e-05, 250.0], [1516864260000, 9.343e-05, 9.343e-05, 9.339e-05, 9.339e-05, 50.0], [1516864320000, 9.401e-05, 9.401e-05, 9.401e-05, 9.401e-05, 200.601003], [1516864380000, 9.397e-05, 9.399e-05, 9.34e-05, 9.399e-05, 1576.72916674], [1516864440000, 9.399e-05, 9.4e-05, 9.339e-05, 9.339e-05, 42.81232872], [1516864500000, 9.418e-05, 9.418e-05, 9.417e-05, 9.417e-05, 89.62723912], [1516864620000, 9.339e-05, 9.411e-05, 9.339e-05, 9.411e-05, 1274.4442706], [1516864680000, 9.407e-05, 9.407e-05, 9.3e-05, 9.3e-05, 5181.4353704], [1516864740000, 9.301e-05, 9.335e-05, 9.27e-05, 9.27e-05, 17810.60461369], [1516864860000, 9.38e-05, 9.38e-05, 9.271e-05, 9.361e-05, 275.45361458], [1516864920000, 9.345e-05, 9.345e-05, 9.345e-05, 9.345e-05, 21.52870439], [1516864980000, 9.325e-05, 9.325e-05, 9.272e-05, 9.272e-05, 513.86891601], [1516865100000, 9.344e-05, 9.344e-05, 9.344e-05, 9.344e-05, 36.43294178], [1516865160000, 9.344e-05, 9.344e-05, 9.344e-05, 9.344e-05, 125.73165106], [1516865220000, 9.344e-05, 9.344e-05, 9.344e-05, 9.344e-05, 187.26081841], [1516865280000, 9.307e-05, 9.307e-05, 9.305e-05, 9.305e-05, 82.46112481], [1516865340000, 9.271e-05, 9.271e-05, 9.271e-05, 9.271e-05, 47.34013912], [1516865400000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 112.58835556], [1516865460000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 11.77079692], [1516865580000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 10.0], [1516865640000, 9.306e-05, 9.306e-05, 9.306e-05, 9.306e-05, 29.01042226], [1516865700000, 9.307e-05, 9.307e-05, 9.307e-05, 9.307e-05, 459.87931127], [1516865760000, 9.307e-05, 9.307e-05, 9.305e-05, 9.305e-05, 687.17472515], [1516865880000, 9.306e-05, 9.306e-05, 9.305e-05, 9.305e-05, 4050.49488362], [1516865940000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 8.12755858], [1516866060000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 1037.18495594], [1516866180000, 9.3e-05, 9.305e-05, 9.3e-05, 9.305e-05, 212.32270513], [1516866240000, 9.301e-05, 9.301e-05, 9.301e-05, 9.301e-05, 210.0], [1516866300000, 9.271e-05, 9.271e-05, 9.271e-05, 9.271e-05, 105.0], [1516866360000, 9.3e-05, 9.3e-05, 9.27e-05, 9.27e-05, 4433.86354815], [1516866420000, 9.271e-05, 9.271e-05, 9.27e-05, 9.27e-05, 693.55468786], [1516866480000, 9.27e-05, 9.271e-05, 9.27e-05, 9.271e-05, 1316.04240262], [1516866540000, 9.271e-05, 9.271e-05, 9.271e-05, 9.271e-05, 850.0], [1516866600000, 9.3e-05, 9.343e-05, 9.3e-05, 9.343e-05, 965.62955535], [1516866660000, 9.32e-05, 9.343e-05, 9.32e-05, 9.343e-05, 258.11860642], [1516866720000, 9.341e-05, 9.341e-05, 9.341e-05, 9.341e-05, 377.31893107], [1516866780000, 9.271e-05, 9.271e-05, 9.271e-05, 9.271e-05, 200.0], [1516866840000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 40.0], [1516866900000, 9.34e-05, 9.34e-05, 9.32e-05, 9.336e-05, 424.58151449], [1516867140000, 9.318e-05, 9.318e-05, 9.318e-05, 9.318e-05, 384.20482051], [1516867200000, 9.272e-05, 9.272e-05, 9.272e-05, 9.272e-05, 20.0], [1516867260000, 9.3e-05, 9.309e-05, 9.3e-05, 9.309e-05, 686.60838287], [1516867320000, 9.31e-05, 9.31e-05, 9.271e-05, 9.271e-05, 4770.57261585], [1516867380000, 9.31e-05, 9.31e-05, 9.271e-05, 9.31e-05, 1263.11043246], [1516867440000, 9.31e-05, 9.31e-05, 9.31e-05, 9.31e-05, 73.0], [1516867500000, 9.27e-05, 9.31e-05, 9.27e-05, 9.31e-05, 467.54145142], [1516867560000, 9.271e-05, 9.272e-05, 9.271e-05, 9.272e-05, 9321.66507881], [1516867620000, 9.271e-05, 9.271e-05, 9.271e-05, 9.271e-05, 351.68137256], [1516867680000, 9.271e-05, 9.272e-05, 9.271e-05, 9.272e-05, 474.66857918], [1516867800000, 9.294e-05, 9.294e-05, 9.294e-05, 9.294e-05, 41.3838114], [1516867920000, 9.294e-05, 9.341e-05, 9.294e-05, 9.294e-05, 300.76123667], [1516867980000, 9.294e-05, 9.294e-05, 9.294e-05, 9.294e-05, 188.86182456], [1516868040000, 9.273e-05, 9.273e-05, 9.273e-05, 9.273e-05, 311.13817544], [1516868100000, 9.335e-05, 9.335e-05, 9.335e-05, 9.335e-05, 191.69529906], [1516868160000, 9.273e-05, 9.273e-05, 9.273e-05, 9.273e-05, 100.0], [1516868280000, 9.322e-05, 9.323e-05, 9.3e-05, 9.323e-05, 267.8354876], [1516868460000, 9.322e-05, 9.322e-05, 9.322e-05, 9.322e-05, 190.8500421], [1516868520000, 9.322e-05, 9.338e-05, 9.283e-05, 9.283e-05, 1952.89520364], [1516868640000, 9.306e-05, 9.306e-05, 9.273e-05, 9.273e-05, 1855.64102179], [1516868700000, 9.279e-05, 9.334e-05, 9.279e-05, 9.334e-05, 2543.37826649], [1516868760000, 9.284e-05, 9.284e-05, 9.284e-05, 9.284e-05, 331.48980801], [1516868880000, 9.3e-05, 9.337e-05, 9.252e-05, 9.252e-05, 19101.93882048], [1516869000000, 9.323e-05, 9.323e-05, 9.323e-05, 9.323e-05, 177.53255334], [1516869180000, 9.29e-05, 9.29e-05, 9.29e-05, 9.29e-05, 100.0], [1516869300000, 9.323e-05, 9.323e-05, 9.323e-05, 9.323e-05, 496.73636037], [1516869360000, 9.323e-05, 9.323e-05, 9.323e-05, 9.323e-05, 254.8243941], [1516869420000, 9.307e-05, 9.323e-05, 9.307e-05, 9.307e-05, 1938.89945703], [1516869480000, 9.307e-05, 9.307e-05, 9.307e-05, 9.307e-05, 350.12018907], [1516869540000, 9.323e-05, 9.323e-05, 9.307e-05, 9.307e-05, 514.6700824], [1516869600000, 9.323e-05, 9.323e-05, 9.323e-05, 9.323e-05, 2284.78236298], [1516869660000, 9.307e-05, 9.307e-05, 9.291e-05, 9.291e-05, 909.8299965], [1516869780000, 9.307e-05, 9.307e-05, 9.291e-05, 9.291e-05, 439.26388738], [1516869840000, 9.307e-05, 9.307e-05, 9.307e-05, 9.307e-05, 10.03100299], [1516870080000, 9.291e-05, 9.308e-05, 9.29e-05, 9.308e-05, 1298.99677362], [1516870200000, 9.326e-05, 9.343e-05, 9.29e-05, 9.29e-05, 7773.81559685], [1516870260000, 9.342e-05, 9.342e-05, 9.342e-05, 9.342e-05, 71.15745496], [1516870320000, 9.342e-05, 9.344e-05, 9.342e-05, 9.344e-05, 4942.25054762], [1516870380000, 9.363e-05, 9.363e-05, 9.363e-05, 9.363e-05, 1276.04926966], [1516870440000, 9.296e-05, 9.296e-05, 9.29e-05, 9.29e-05, 783.38541077], [1516870620000, 9.302e-05, 9.4e-05, 9.302e-05, 9.302e-05, 22053.65317183], [1516870680000, 9.302e-05, 9.302e-05, 9.302e-05, 9.302e-05, 11.49191809], [1516870740000, 9.302e-05, 9.39e-05, 9.302e-05, 9.39e-05, 708.5234758], [1516870800000, 9.387e-05, 9.387e-05, 9.381e-05, 9.381e-05, 123.88012928], [1516870860000, 9.291e-05, 9.291e-05, 9.291e-05, 9.291e-05, 615.54895454], [1516870920000, 9.291e-05, 9.291e-05, 9.29e-05, 9.29e-05, 9137.2897549], [1516870980000, 9.29e-05, 9.29e-05, 9.29e-05, 9.29e-05, 1513.51350912], [1516871040000, 9.283e-05, 9.291e-05, 9.283e-05, 9.291e-05, 1646.06079161], [1516871100000, 9.282e-05, 9.282e-05, 9.282e-05, 9.282e-05, 80.0], [1516871160000, 9.282e-05, 9.282e-05, 9.27e-05, 9.27e-05, 736.52496301], [1516871220000, 9.272e-05, 9.282e-05, 9.272e-05, 9.282e-05, 5814.90048434], [1516871280000, 9.282e-05, 9.282e-05, 9.271e-05, 9.271e-05, 525.94160741], [1516871340000, 9.273e-05, 9.273e-05, 9.273e-05, 9.273e-05, 20.0], [1516871400000, 9.271e-05, 9.271e-05, 9.271e-05, 9.271e-05, 20.0], [1516871460000, 9.273e-05, 9.29e-05, 9.273e-05, 9.29e-05, 222.76992501], [1516871520000, 9.29e-05, 9.291e-05, 9.273e-05, 9.291e-05, 2272.75401948], [1516871580000, 9.29e-05, 9.291e-05, 9.252e-05, 9.271e-05, 4315.22199413], [1516871640000, 9.271e-05, 9.271e-05, 9.25e-05, 9.255e-05, 5200.09062962], [1516871700000, 9.255e-05, 9.255e-05, 9.25e-05, 9.25e-05, 3190.8500421], [1516871760000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 158.46544076], [1516871820000, 9.253e-05, 9.375e-05, 9.253e-05, 9.375e-05, 287.81145557], [1516871880000, 9.28e-05, 9.28e-05, 9.246e-05, 9.246e-05, 3571.06603056], [1516871940000, 9.247e-05, 9.247e-05, 9.246e-05, 9.247e-05, 208.91740079], [1516872120000, 9.3e-05, 9.3e-05, 9.293e-05, 9.294e-05, 1473.18164816], [1516872240000, 9.294e-05, 9.294e-05, 9.294e-05, 9.294e-05, 1017.82231844], [1516872300000, 9.294e-05, 9.294e-05, 9.294e-05, 9.294e-05, 134.78807295], [1516872360000, 9.294e-05, 9.294e-05, 9.294e-05, 9.294e-05, 13.64709651], [1516872420000, 9.294e-05, 9.294e-05, 9.294e-05, 9.294e-05, 134.91750968], [1516872480000, 9.294e-05, 9.294e-05, 9.294e-05, 9.294e-05, 650.73305203], [1516872540000, 9.294e-05, 9.294e-05, 9.253e-05, 9.253e-05, 3775.70360054], [1516872600000, 9.247e-05, 9.247e-05, 9.247e-05, 9.247e-05, 129.83778473], [1516872660000, 9.246e-05, 9.247e-05, 9.246e-05, 9.247e-05, 43.45667508], [1516872720000, 9.247e-05, 9.248e-05, 9.247e-05, 9.248e-05, 25.50837773], [1516872780000, 9.248e-05, 9.294e-05, 9.248e-05, 9.294e-05, 3240.51185672], [1516872840000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 135.71532271], [1516872960000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 11.48893924], [1516873020000, 9.3e-05, 9.302e-05, 9.3e-05, 9.3e-05, 3570.4930502], [1516873080000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 35.36262939], [1516873140000, 9.246e-05, 9.246e-05, 9.246e-05, 9.246e-05, 54.06960911], [1516873200000, 9.249e-05, 9.249e-05, 9.249e-05, 9.249e-05, 209.9887446], [1516873260000, 9.343e-05, 9.343e-05, 9.343e-05, 9.343e-05, 212.74439586], [1516873320000, 9.254e-05, 9.254e-05, 9.254e-05, 9.254e-05, 50.0], [1516873380000, 9.346e-05, 9.346e-05, 9.346e-05, 9.346e-05, 13.56500975], [1516873440000, 9.335e-05, 9.335e-05, 9.335e-05, 9.335e-05, 27.3899452], [1516873500000, 9.33e-05, 9.333e-05, 9.33e-05, 9.333e-05, 723.31659048], [1516873620000, 9.255e-05, 9.255e-05, 9.255e-05, 9.255e-05, 40.93457245], [1516873680000, 9.255e-05, 9.255e-05, 9.255e-05, 9.255e-05, 1790.90735071], [1516873740000, 9.33e-05, 9.33e-05, 9.33e-05, 9.33e-05, 35.51339763], [1516873800000, 9.329e-05, 9.332e-05, 9.3e-05, 9.3e-05, 2083.001003], [1516873860000, 9.332e-05, 9.332e-05, 9.332e-05, 9.332e-05, 212.7095054], [1516873920000, 9.331e-05, 9.331e-05, 9.331e-05, 9.331e-05, 368.17827175], [1516873980000, 9.331e-05, 9.331e-05, 9.331e-05, 9.331e-05, 514.74046699], [1516874100000, 9.331e-05, 9.331e-05, 9.331e-05, 9.331e-05, 45.36985022], [1516874160000, 9.331e-05, 9.333e-05, 9.331e-05, 9.331e-05, 885.07349309], [1516874220000, 9.331e-05, 9.331e-05, 9.331e-05, 9.331e-05, 30.92974185], [1516874280000, 9.333e-05, 9.333e-05, 9.331e-05, 9.331e-05, 1352.40705849], [1516874340000, 9.331e-05, 9.331e-05, 9.331e-05, 9.331e-05, 2632.97554857], [1516874400000, 9.331e-05, 9.331e-05, 9.331e-05, 9.331e-05, 732.2258508], [1516874700000, 9.299e-05, 9.299e-05, 9.299e-05, 9.299e-05, 4370.50243037], [1516874760000, 9.299e-05, 9.299e-05, 9.299e-05, 9.299e-05, 440.4965648], [1516874820000, 9.299e-05, 9.299e-05, 9.299e-05, 9.299e-05, 11.49460125], [1516874880000, 9.299e-05, 9.299e-05, 9.299e-05, 9.299e-05, 1578.86044245], [1516874940000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 40.0], [1516875000000, 9.333e-05, 9.333e-05, 9.333e-05, 9.333e-05, 7.13082113], [1516875120000, 9.329e-05, 9.329e-05, 9.329e-05, 9.329e-05, 161.12035117], [1516875180000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 4753.25251027], [1516875240000, 9.3e-05, 9.3e-05, 9.299e-05, 9.3e-05, 1086.1309355], [1516875300000, 9.3e-05, 9.3e-05, 9.246e-05, 9.246e-05, 4873.95031001], [1516875360000, 9.326e-05, 9.332e-05, 9.326e-05, 9.332e-05, 355.71058509], [1516875540000, 9.331e-05, 9.333e-05, 9.246e-05, 9.247e-05, 3712.00993078], [1516875600000, 9.247e-05, 9.326e-05, 9.246e-05, 9.326e-05, 2447.60728141], [1516875660000, 9.326e-05, 9.326e-05, 9.326e-05, 9.326e-05, 106.2135268], [1516875720000, 9.266e-05, 9.326e-05, 9.266e-05, 9.326e-05, 34.16726949], [1516875900000, 9.323e-05, 9.323e-05, 9.323e-05, 9.323e-05, 199.40377346], [1516875960000, 9.266e-05, 9.323e-05, 9.266e-05, 9.323e-05, 1870.86019903], [1516876080000, 9.317e-05, 9.317e-05, 9.316e-05, 9.316e-05, 274.10350112], [1516876140000, 9.309e-05, 9.309e-05, 9.309e-05, 9.309e-05, 185.94568421], [1516876200000, 9.309e-05, 9.309e-05, 9.309e-05, 9.309e-05, 83.84006966], [1516876320000, 9.246e-05, 9.306e-05, 9.24e-05, 9.306e-05, 2084.54401532], [1516876380000, 9.306e-05, 9.306e-05, 9.306e-05, 9.306e-05, 1147.5919525], [1516876440000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 233.85022246], [1516876560000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 25.11548844], [1516876620000, 9.305e-05, 9.305e-05, 9.24e-05, 9.24e-05, 717.61585768], [1516876680000, 9.241e-05, 9.241e-05, 9.241e-05, 9.241e-05, 21.01644863], [1516876800000, 9.307e-05, 9.307e-05, 9.307e-05, 9.307e-05, 118.82267325], [1516876860000, 9.307e-05, 9.307e-05, 9.307e-05, 9.307e-05, 140.41322139], [1516876920000, 9.307e-05, 9.307e-05, 9.25e-05, 9.25e-05, 795.93819537], [1516876980000, 9.307e-05, 9.307e-05, 9.25e-05, 9.25e-05, 1169.44763817], [1516877040000, 9.251e-05, 9.251e-05, 9.251e-05, 9.251e-05, 109.70979647], [1516877100000, 9.251e-05, 9.326e-05, 9.251e-05, 9.326e-05, 2688.71359274], [1516877160000, 9.326e-05, 9.346e-05, 9.314e-05, 9.346e-05, 5464.36764638], [1516877220000, 9.348e-05, 9.377e-05, 9.259e-05, 9.376e-05, 2313.36443214], [1516877280000, 9.26e-05, 9.26e-05, 9.26e-05, 9.26e-05, 108.26133909], [1516877340000, 9.261e-05, 9.364e-05, 9.26e-05, 9.364e-05, 617.69885417], [1516877400000, 9.361e-05, 9.361e-05, 9.361e-05, 9.361e-05, 26.69229127], [1516877460000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 100.301003], [1516877520000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 14.22453365], [1516877580000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 103.09279728], [1516877700000, 9.354e-05, 9.354e-05, 9.291e-05, 9.354e-05, 67.78957755], [1516877760000, 9.354e-05, 9.355e-05, 9.291e-05, 9.355e-05, 2114.7193551], [1516877880000, 9.291e-05, 9.291e-05, 9.291e-05, 9.291e-05, 100.0], [1516878120000, 9.338e-05, 9.358e-05, 9.338e-05, 9.358e-05, 2000.0], [1516878240000, 9.358e-05, 9.36e-05, 9.358e-05, 9.36e-05, 177.11362096], [1516878300000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 185.2610441], [1516878360000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 208.38205128], [1516878420000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 200.0], [1516878600000, 9.36e-05, 9.36e-05, 9.358e-05, 9.358e-05, 221.25220363], [1516878660000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 57.16520716], [1516878720000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 68.37298814], [1516878780000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 45.13700598], [1516878840000, 9.36e-05, 9.36e-05, 9.3e-05, 9.3e-05, 129.20077939], [1516878900000, 9.3e-05, 9.36e-05, 9.3e-05, 9.3e-05, 352.24342375], [1516878960000, 9.358e-05, 9.358e-05, 9.358e-05, 9.358e-05, 17.73215141], [1516879080000, 9.358e-05, 9.358e-05, 9.358e-05, 9.358e-05, 50.0], [1516879140000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 40.39138765], [1516879200000, 9.3e-05, 9.36e-05, 9.3e-05, 9.36e-05, 1690.0], [1516879260000, 9.36e-05, 9.38e-05, 9.36e-05, 9.38e-05, 1251.79817509], [1516879320000, 9.358e-05, 9.358e-05, 9.358e-05, 9.358e-05, 105.72321515], [1516879380000, 9.358e-05, 9.358e-05, 9.358e-05, 9.358e-05, 230.0], [1516879440000, 9.38e-05, 9.38e-05, 9.38e-05, 9.38e-05, 31.97818661], [1516879500000, 9.369e-05, 9.38e-05, 9.358e-05, 9.38e-05, 435.52703037], [1516879560000, 9.38e-05, 9.38e-05, 9.38e-05, 9.38e-05, 206.68580353], [1516879620000, 9.37e-05, 9.37e-05, 9.358e-05, 9.358e-05, 739.24785139], [1516879680000, 9.37e-05, 9.37e-05, 9.302e-05, 9.302e-05, 5951.19377371], [1516879740000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 34.23649932], [1516879800000, 9.301e-05, 9.301e-05, 9.301e-05, 9.301e-05, 100.0], [1516879860000, 9.301e-05, 9.37e-05, 9.301e-05, 9.37e-05, 1308.17305699], [1516879920000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 71.37406995], [1516879980000, 9.35e-05, 9.37e-05, 9.35e-05, 9.35e-05, 195.64315156], [1516880100000, 9.369e-05, 9.369e-05, 9.369e-05, 9.369e-05, 33.08331555], [1516880340000, 9.301e-05, 9.301e-05, 9.301e-05, 9.301e-05, 487.0], [1516880400000, 9.301e-05, 9.301e-05, 9.3e-05, 9.3e-05, 1566.44984363], [1516880460000, 9.3e-05, 9.301e-05, 9.3e-05, 9.3e-05, 7517.22095015], [1516880520000, 9.3e-05, 9.301e-05, 9.3e-05, 9.301e-05, 218.59387977], [1516880580000, 9.301e-05, 9.301e-05, 9.3e-05, 9.3e-05, 800.86229927], [1516880640000, 9.3e-05, 9.301e-05, 9.3e-05, 9.301e-05, 2173.25340612], [1516880700000, 9.369e-05, 9.369e-05, 9.369e-05, 9.369e-05, 10.0], [1516880760000, 9.301e-05, 9.369e-05, 9.301e-05, 9.369e-05, 852.46055325], [1516880820000, 9.305e-05, 9.305e-05, 9.3e-05, 9.3e-05, 3675.90238493], [1516880880000, 9.301e-05, 9.301e-05, 9.3e-05, 9.3e-05, 154.57700557], [1516880940000, 9.301e-05, 9.369e-05, 9.3e-05, 9.3e-05, 2278.86697575], [1516881060000, 9.309e-05, 9.309e-05, 9.309e-05, 9.309e-05, 70.0], [1516881180000, 9.309e-05, 9.309e-05, 9.309e-05, 9.309e-05, 8.0], [1516881240000, 9.309e-05, 9.309e-05, 9.3e-05, 9.3e-05, 11.67379845], [1516881420000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 348.42245968], [1516881480000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 40.66744588], [1516881540000, 9.3e-05, 9.36e-05, 9.3e-05, 9.36e-05, 72.59834776], [1516881600000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 363.07696848], [1516881660000, 9.301e-05, 9.36e-05, 9.301e-05, 9.36e-05, 853.14414836], [1516881720000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 211.65294485], [1516881780000, 9.36e-05, 9.36e-05, 9.36e-05, 9.36e-05, 30.0], [1516881840000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 153.11678246], [1516881900000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 119.32861694], [1516881960000, 9.305e-05, 9.305e-05, 9.3e-05, 9.3e-05, 187.26081841], [1516882020000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 4837.17541543], [1516882080000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 1231.10683264], [1516882140000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 883.9236687], [1516882260000, 9.291e-05, 9.291e-05, 9.29e-05, 9.29e-05, 1234.5693989], [1516882320000, 9.264e-05, 9.264e-05, 9.25e-05, 9.25e-05, 1413.8113465], [1516882380000, 9.289e-05, 9.289e-05, 9.289e-05, 9.289e-05, 100.38197184], [1516882440000, 9.25e-05, 9.25e-05, 9.24e-05, 9.24e-05, 303.36902223], [1516882500000, 9.24e-05, 9.249e-05, 9.24e-05, 9.249e-05, 967.70893419], [1516882620000, 9.248e-05, 9.25e-05, 9.24e-05, 9.25e-05, 2984.90664437], [1516882680000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 1649.51748633], [1516882800000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 2171.36055853], [1516882860000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 819.03284014], [1516882920000, 9.252e-05, 9.3e-05, 9.252e-05, 9.3e-05, 44.82316056], [1516882980000, 9.3e-05, 9.38e-05, 9.3e-05, 9.38e-05, 2809.07558497], [1516883040000, 9.34e-05, 9.34e-05, 9.34e-05, 9.34e-05, 11.52939274], [1516883100000, 9.379e-05, 9.379e-05, 9.379e-05, 9.379e-05, 7.1942776], [1516883160000, 9.34e-05, 9.34e-05, 9.266e-05, 9.266e-05, 50.0], [1516883220000, 9.378e-05, 9.378e-05, 9.374e-05, 9.374e-05, 226.9407052], [1516883280000, 9.373e-05, 9.373e-05, 9.373e-05, 9.373e-05, 71.5750153], [1516883460000, 9.293e-05, 9.293e-05, 9.29e-05, 9.29e-05, 72.0], [1516883520000, 9.29e-05, 9.29e-05, 9.272e-05, 9.272e-05, 300.0], [1516883580000, 9.272e-05, 9.272e-05, 9.272e-05, 9.272e-05, 32.0], [1516883640000, 9.293e-05, 9.293e-05, 9.293e-05, 9.293e-05, 35.89634897], [1516883700000, 9.293e-05, 9.293e-05, 9.293e-05, 9.293e-05, 11.57921567], [1516883760000, 9.272e-05, 9.293e-05, 9.241e-05, 9.293e-05, 513.92633253], [1516883880000, 9.293e-05, 9.293e-05, 9.293e-05, 9.293e-05, 39.13], [1516883940000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 45.4901359], [1516884060000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 1378.53885807], [1516884120000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 119.03236845], [1516884240000, 9.35e-05, 9.35e-05, 9.3e-05, 9.3e-05, 43.6846031], [1516884300000, 9.3e-05, 9.374e-05, 9.3e-05, 9.374e-05, 380.3594722], [1516884480000, 9.372e-05, 9.373e-05, 9.372e-05, 9.373e-05, 222.3281078], [1516884600000, 9.374e-05, 9.374e-05, 9.374e-05, 9.374e-05, 106.41135054], [1516884720000, 9.3e-05, 9.3e-05, 9.244e-05, 9.244e-05, 1094.43109032], [1516884780000, 9.258e-05, 9.258e-05, 9.254e-05, 9.254e-05, 600.0], [1516884900000, 9.334e-05, 9.334e-05, 9.334e-05, 9.334e-05, 62.19692176], [1516884960000, 9.345e-05, 9.352e-05, 9.334e-05, 9.334e-05, 268.30597179], [1516885020000, 9.254e-05, 9.318e-05, 9.254e-05, 9.254e-05, 686.01466281], [1516885140000, 9.254e-05, 9.254e-05, 9.254e-05, 9.254e-05, 110.0], [1516885200000, 9.32e-05, 9.32e-05, 9.254e-05, 9.254e-05, 283.91148493], [1516885260000, 9.254e-05, 9.277e-05, 9.254e-05, 9.277e-05, 224.77503761], [1516885320000, 9.254e-05, 9.254e-05, 9.254e-05, 9.254e-05, 120.94659728], [1516885380000, 9.305e-05, 9.305e-05, 9.301e-05, 9.301e-05, 266.08199486], [1516885440000, 9.277e-05, 9.277e-05, 9.254e-05, 9.254e-05, 312.83689075], [1516885500000, 9.254e-05, 9.254e-05, 9.254e-05, 9.254e-05, 373.36948755], [1516885560000, 9.254e-05, 9.296e-05, 9.254e-05, 9.296e-05, 100.301003], [1516885620000, 9.298e-05, 9.3e-05, 9.298e-05, 9.3e-05, 480.23926041], [1516885680000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 1116.83607242], [1516885740000, 9.312e-05, 9.312e-05, 9.312e-05, 9.312e-05, 100.0], [1516885800000, 9.3e-05, 9.3e-05, 9.22e-05, 9.22e-05, 8439.79573317], [1516885860000, 9.312e-05, 9.312e-05, 9.208e-05, 9.208e-05, 3975.09582366], [1516886040000, 9.312e-05, 9.312e-05, 9.312e-05, 9.312e-05, 53.90533315], [1516886100000, 9.312e-05, 9.312e-05, 9.215e-05, 9.216e-05, 216.39916559], [1516886400000, 9.232e-05, 9.236e-05, 9.232e-05, 9.236e-05, 1147.92602419], [1516886460000, 9.236e-05, 9.236e-05, 9.236e-05, 9.236e-05, 39.58531808], [1516886640000, 9.241e-05, 9.241e-05, 9.241e-05, 9.241e-05, 220.39016827], [1516886700000, 9.238e-05, 9.31e-05, 9.238e-05, 9.31e-05, 397.11376888], [1516886760000, 9.269e-05, 9.269e-05, 9.245e-05, 9.245e-05, 226.47863222], [1516886940000, 9.269e-05, 9.312e-05, 9.269e-05, 9.312e-05, 145.2214688], [1516887000000, 9.268e-05, 9.268e-05, 9.268e-05, 9.268e-05, 79.01074916], [1516887180000, 9.32e-05, 9.35e-05, 9.32e-05, 9.348e-05, 1063.88722417], [1516887240000, 9.364e-05, 9.364e-05, 9.32e-05, 9.32e-05, 3116.00452196], [1516887360000, 9.314e-05, 9.32e-05, 9.314e-05, 9.32e-05, 361.93937604], [1516887420000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 33.26180257], [1516887480000, 9.32e-05, 9.372e-05, 9.32e-05, 9.372e-05, 895.2969174], [1516887540000, 9.369e-05, 9.37e-05, 9.369e-05, 9.37e-05, 49.09429371], [1516887600000, 9.264e-05, 9.367e-05, 9.26e-05, 9.264e-05, 319.24409328], [1516887660000, 9.264e-05, 9.367e-05, 9.26e-05, 9.26e-05, 392.78237089], [1516887720000, 9.26e-05, 9.346e-05, 9.26e-05, 9.346e-05, 169.77671259], [1516887780000, 9.261e-05, 9.261e-05, 9.261e-05, 9.261e-05, 29.35353334], [1516887840000, 9.261e-05, 9.345e-05, 9.261e-05, 9.345e-05, 246.06594428], [1516887960000, 9.345e-05, 9.345e-05, 9.345e-05, 9.345e-05, 1005.15407103], [1516888140000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 111.0], [1516888200000, 9.365e-05, 9.365e-05, 9.365e-05, 9.365e-05, 101.22042045], [1516888260000, 9.363e-05, 9.363e-05, 9.363e-05, 9.363e-05, 783.30044994], [1516888320000, 9.363e-05, 9.364e-05, 9.363e-05, 9.364e-05, 221.46744013], [1516888380000, 9.301e-05, 9.301e-05, 9.301e-05, 9.301e-05, 11.862551], [1516888440000, 9.364e-05, 9.364e-05, 9.364e-05, 9.364e-05, 35.64107452], [1516888500000, 9.364e-05, 9.368e-05, 9.364e-05, 9.368e-05, 586.89897103], [1516888560000, 9.364e-05, 9.364e-05, 9.364e-05, 9.364e-05, 200.0], [1516888620000, 9.368e-05, 9.368e-05, 9.364e-05, 9.368e-05, 1257.93596134], [1516888740000, 9.364e-05, 9.364e-05, 9.364e-05, 9.364e-05, 544.47131294], [1516888800000, 9.365e-05, 9.365e-05, 9.365e-05, 9.365e-05, 100.00568302], [1516888860000, 9.365e-05, 9.365e-05, 9.364e-05, 9.364e-05, 450.0], [1516889100000, 9.368e-05, 9.368e-05, 9.368e-05, 9.368e-05, 18.19841215], [1516889160000, 9.368e-05, 9.368e-05, 9.368e-05, 9.368e-05, 40.49910955], [1516889220000, 9.368e-05, 9.368e-05, 9.364e-05, 9.364e-05, 6162.30007942], [1516889280000, 9.364e-05, 9.365e-05, 9.364e-05, 9.365e-05, 194.12586721], [1516889340000, 9.365e-05, 9.365e-05, 9.365e-05, 9.365e-05, 48.92541736], [1516889400000, 9.365e-05, 9.365e-05, 9.365e-05, 9.365e-05, 410.44433763], [1516889460000, 9.365e-05, 9.365e-05, 9.364e-05, 9.364e-05, 1375.67], [1516889520000, 9.364e-05, 9.364e-05, 9.364e-05, 9.364e-05, 5729.06004781], [1516889640000, 9.364e-05, 9.364e-05, 9.364e-05, 9.364e-05, 13.04000299], [1516889700000, 9.364e-05, 9.364e-05, 9.302e-05, 9.364e-05, 283.48802446], [1516889760000, 9.364e-05, 9.364e-05, 9.364e-05, 9.364e-05, 48.38189921], [1516889880000, 9.302e-05, 9.361e-05, 9.302e-05, 9.359e-05, 2114.04421328], [1516889940000, 9.364e-05, 9.364e-05, 9.364e-05, 9.364e-05, 47.57052264], [1516890060000, 9.323e-05, 9.34e-05, 9.323e-05, 9.34e-05, 963.0017668], [1516890120000, 9.34e-05, 9.34e-05, 9.34e-05, 9.34e-05, 83.49305883], [1516890180000, 9.323e-05, 9.323e-05, 9.303e-05, 9.303e-05, 2134.43335751], [1516890300000, 9.303e-05, 9.303e-05, 9.303e-05, 9.303e-05, 206.91082142], [1516890360000, 9.323e-05, 9.323e-05, 9.303e-05, 9.303e-05, 122.43171306], [1516890420000, 9.323e-05, 9.364e-05, 9.323e-05, 9.364e-05, 3117.52808631], [1516890480000, 9.364e-05, 9.364e-05, 9.364e-05, 9.364e-05, 28.69920478], [1516890540000, 9.304e-05, 9.304e-05, 9.304e-05, 9.304e-05, 215.43402503], [1516890600000, 9.304e-05, 9.304e-05, 9.303e-05, 9.303e-05, 1142.86699927], [1516890660000, 9.364e-05, 9.364e-05, 9.364e-05, 9.364e-05, 1482.87867782], [1516890720000, 9.302e-05, 9.302e-05, 9.302e-05, 9.302e-05, 1900.0], [1516891020000, 9.364e-05, 9.364e-05, 9.364e-05, 9.364e-05, 8.476665], [1516891080000, 9.36e-05, 9.36e-05, 9.359e-05, 9.359e-05, 84.34326853], [1516891200000, 9.304e-05, 9.304e-05, 9.304e-05, 9.304e-05, 16.89324323], [1516891260000, 9.312e-05, 9.312e-05, 9.304e-05, 9.304e-05, 1253.23896469], [1516891440000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 211.641406], [1516891560000, 9.321e-05, 9.345e-05, 9.321e-05, 9.345e-05, 2278.46964468], [1516891620000, 9.345e-05, 9.345e-05, 9.345e-05, 9.345e-05, 11.50716764], [1516891680000, 9.35e-05, 9.36e-05, 9.35e-05, 9.36e-05, 337.39591214], [1516891740000, 9.345e-05, 9.345e-05, 9.345e-05, 9.345e-05, 579.42152854], [1516891920000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 15.0], [1516891980000, 9.32e-05, 9.32e-05, 9.302e-05, 9.302e-05, 1001.8], [1516892040000, 9.302e-05, 9.302e-05, 9.302e-05, 9.302e-05, 277.07857933], [1516892100000, 9.344e-05, 9.344e-05, 9.344e-05, 9.344e-05, 213.50599315], [1516892160000, 9.344e-05, 9.344e-05, 9.344e-05, 9.344e-05, 208.27584359], [1516892280000, 9.344e-05, 9.344e-05, 9.344e-05, 9.344e-05, 21.61600031], [1516892340000, 9.343e-05, 9.343e-05, 9.343e-05, 9.343e-05, 35.36102326], [1516892400000, 9.343e-05, 9.343e-05, 9.343e-05, 9.343e-05, 1267.80589332], [1516892460000, 9.303e-05, 9.303e-05, 9.303e-05, 9.303e-05, 10.0], [1516892520000, 9.302e-05, 9.302e-05, 9.302e-05, 9.302e-05, 150.0], [1516892580000, 9.302e-05, 9.302e-05, 9.28e-05, 9.302e-05, 2999.07684889], [1516892640000, 9.28e-05, 9.299e-05, 9.26e-05, 9.26e-05, 1237.00223641], [1516892760000, 9.28e-05, 9.28e-05, 9.26e-05, 9.26e-05, 400.0], [1516892820000, 9.299e-05, 9.3e-05, 9.26e-05, 9.26e-05, 510.24948102], [1516893060000, 9.26e-05, 9.3e-05, 9.26e-05, 9.3e-05, 1702.00089642], [1516893120000, 9.298e-05, 9.298e-05, 9.298e-05, 9.298e-05, 11.83583582], [1516893240000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 7.24183465], [1516893300000, 9.3e-05, 9.3e-05, 9.298e-05, 9.298e-05, 785.99771777], [1516893360000, 9.298e-05, 9.298e-05, 9.298e-05, 9.298e-05, 263.0], [1516893420000, 9.298e-05, 9.3e-05, 9.298e-05, 9.3e-05, 272.44967368], [1516893480000, 9.3e-05, 9.3e-05, 9.298e-05, 9.298e-05, 3492.74645052], [1516893540000, 9.298e-05, 9.298e-05, 9.298e-05, 9.298e-05, 756.36745283], [1516893600000, 9.274e-05, 9.274e-05, 9.274e-05, 9.274e-05, 35.0], [1516893660000, 9.298e-05, 9.298e-05, 9.26e-05, 9.298e-05, 1717.95834486], [1516893720000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 2845.95613968], [1516893840000, 9.26e-05, 9.26e-05, 9.26e-05, 9.26e-05, 800.0], [1516893900000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 208.18400434], [1516894020000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 3200.60625003], [1516894080000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 11.88161589], [1516894200000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 554.4225243], [1516894260000, 9.245e-05, 9.258e-05, 9.227e-05, 9.258e-05, 798.1029368], [1516894320000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 7905.80087776], [1516894380000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 20.83656591], [1516894440000, 9.227e-05, 9.227e-05, 9.227e-05, 9.227e-05, 323.92280971], [1516894500000, 9.227e-05, 9.227e-05, 9.227e-05, 9.227e-05, 10.0], [1516894680000, 9.229e-05, 9.229e-05, 9.229e-05, 9.229e-05, 839.40401879], [1516894860000, 9.23e-05, 9.23e-05, 9.228e-05, 9.228e-05, 2407.8499786], [1516894920000, 9.228e-05, 9.343e-05, 9.228e-05, 9.343e-05, 1788.70319684], [1516895160000, 9.258e-05, 9.258e-05, 9.182e-05, 9.182e-05, 11884.75476974], [1516895220000, 9.182e-05, 9.182e-05, 9.15e-05, 9.15e-05, 3976.37139587], [1516895280000, 9.258e-05, 9.258e-05, 9.168e-05, 9.168e-05, 1195.05793302], [1516895340000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 387.8844151], [1516895400000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 37.02136661], [1516895460000, 9.258e-05, 9.289e-05, 9.258e-05, 9.289e-05, 88.25215771], [1516895520000, 9.276e-05, 9.286e-05, 9.258e-05, 9.258e-05, 93.0], [1516895580000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 84.0], [1516895640000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 564.85418016], [1516895700000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 199.44246685], [1516895820000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 1286.05665404], [1516895940000, 9.202e-05, 9.202e-05, 9.202e-05, 9.202e-05, 97.80482503], [1516896000000, 9.2e-05, 9.202e-05, 9.2e-05, 9.2e-05, 1221.82265238], [1516896060000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 11.55591033], [1516896120000, 9.2e-05, 9.202e-05, 9.2e-05, 9.202e-05, 2784.50589662], [1516896180000, 9.269e-05, 9.303e-05, 9.269e-05, 9.303e-05, 388.92607077], [1516896240000, 9.303e-05, 9.337e-05, 9.303e-05, 9.317e-05, 1448.55973091], [1516896300000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 52.8738266], [1516896420000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 436.57817552], [1516896480000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 235.58776167], [1516896540000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 25.0], [1516896600000, 9.315e-05, 9.315e-05, 9.27e-05, 9.27e-05, 391.76397625], [1516896660000, 9.27e-05, 9.27e-05, 9.236e-05, 9.236e-05, 138.88211411], [1516896720000, 9.234e-05, 9.245e-05, 9.234e-05, 9.235e-05, 2616.38888889], [1516896780000, 9.237e-05, 9.237e-05, 9.237e-05, 9.237e-05, 150.0], [1516896900000, 9.245e-05, 9.245e-05, 9.245e-05, 9.245e-05, 25.0], [1516896960000, 9.245e-05, 9.27e-05, 9.245e-05, 9.27e-05, 289.21029064], [1516897080000, 9.27e-05, 9.311e-05, 9.244e-05, 9.244e-05, 1634.28520908], [1516897140000, 9.244e-05, 9.244e-05, 9.201e-05, 9.201e-05, 2624.2627867], [1516897200000, 9.201e-05, 9.201e-05, 9.2e-05, 9.2e-05, 693.61781124], [1516897260000, 9.2e-05, 9.244e-05, 9.2e-05, 9.244e-05, 1935.92960069], [1516897320000, 9.244e-05, 9.244e-05, 9.178e-05, 9.178e-05, 1118.74885929], [1516897380000, 9.179e-05, 9.244e-05, 9.177e-05, 9.244e-05, 2085.75662527], [1516897440000, 9.244e-05, 9.244e-05, 9.244e-05, 9.244e-05, 387.12899706], [1516897500000, 9.2e-05, 9.244e-05, 9.2e-05, 9.244e-05, 1018.10174035], [1516897560000, 9.244e-05, 9.244e-05, 9.244e-05, 9.244e-05, 83.52620566], [1516897620000, 9.244e-05, 9.309e-05, 9.244e-05, 9.309e-05, 78.64425191], [1516897980000, 9.309e-05, 9.309e-05, 9.309e-05, 9.309e-05, 30.43641236], [1516898100000, 9.309e-05, 9.309e-05, 9.309e-05, 9.309e-05, 21.07897841], [1516898160000, 9.24e-05, 9.24e-05, 9.24e-05, 9.24e-05, 6.7], [1516898220000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 43.39308412], [1516898520000, 9.3e-05, 9.3e-05, 9.24e-05, 9.24e-05, 2148.39299325], [1516898580000, 9.24e-05, 9.298e-05, 9.24e-05, 9.298e-05, 1087.57020052], [1516898640000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 1056.53357816], [1516898700000, 9.251e-05, 9.251e-05, 9.251e-05, 9.251e-05, 83.57887791], [1516898940000, 9.251e-05, 9.251e-05, 9.25e-05, 9.25e-05, 23.5146809], [1516899000000, 9.251e-05, 9.306e-05, 9.188e-05, 9.188e-05, 3689.08872522], [1516899060000, 9.188e-05, 9.188e-05, 9.188e-05, 9.188e-05, 27.37480299], [1516899120000, 9.303e-05, 9.303e-05, 9.303e-05, 9.303e-05, 24.4255079], [1516899240000, 9.207e-05, 9.207e-05, 9.207e-05, 9.207e-05, 130.83000516], [1516899300000, 9.209e-05, 9.209e-05, 9.209e-05, 9.209e-05, 200.0], [1516899420000, 9.21e-05, 9.3e-05, 9.21e-05, 9.3e-05, 561.15860215], [1516899480000, 9.21e-05, 9.21e-05, 9.21e-05, 9.21e-05, 989.02785674], [1516899660000, 9.207e-05, 9.207e-05, 9.178e-05, 9.178e-05, 2476.41509434], [1516899720000, 9.178e-05, 9.178e-05, 9.178e-05, 9.178e-05, 38.84139785], [1516899780000, 9.292e-05, 9.292e-05, 9.292e-05, 9.292e-05, 16.1394448], [1516899900000, 9.268e-05, 9.268e-05, 9.268e-05, 9.268e-05, 12.908778], [1516899960000, 9.268e-05, 9.268e-05, 9.268e-05, 9.268e-05, 10.0], [1516900140000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 4504.96991328], [1516900200000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 601.65143223], [1516900500000, 9.2e-05, 9.255e-05, 9.2e-05, 9.255e-05, 1750.77747818], [1516900560000, 9.255e-05, 9.26e-05, 9.255e-05, 9.26e-05, 411.04989312], [1516900620000, 9.26e-05, 9.296e-05, 9.26e-05, 9.268e-05, 1676.34533309], [1516900800000, 9.296e-05, 9.296e-05, 9.296e-05, 9.296e-05, 8.61678005], [1516900860000, 9.293e-05, 9.298e-05, 9.293e-05, 9.298e-05, 1050.16], [1516900920000, 9.295e-05, 9.299e-05, 9.295e-05, 9.299e-05, 1810.83248582], [1516900980000, 9.268e-05, 9.268e-05, 9.261e-05, 9.261e-05, 217.81209046], [1516901040000, 9.3e-05, 9.307e-05, 9.197e-05, 9.3e-05, 3250.43754909], [1516901220000, 9.212e-05, 9.212e-05, 9.212e-05, 9.212e-05, 107.59864242], [1516901340000, 9.21e-05, 9.211e-05, 9.21e-05, 9.211e-05, 259.29428406], [1516901400000, 9.303e-05, 9.332e-05, 9.303e-05, 9.332e-05, 1885.33101476], [1516901460000, 9.332e-05, 9.332e-05, 9.332e-05, 9.332e-05, 207.29605476], [1516901520000, 9.331e-05, 9.331e-05, 9.331e-05, 9.331e-05, 84.9125], [1516901700000, 9.331e-05, 9.331e-05, 9.228e-05, 9.228e-05, 29.0], [1516901760000, 9.331e-05, 9.331e-05, 9.331e-05, 9.331e-05, 114.09318401], [1516901880000, 9.229e-05, 9.331e-05, 9.229e-05, 9.331e-05, 645.72804259], [1516901940000, 9.331e-05, 9.367e-05, 9.331e-05, 9.35e-05, 15909.53215598], [1516902000000, 9.35e-05, 9.367e-05, 9.35e-05, 9.367e-05, 55.76542146], [1516902060000, 9.367e-05, 9.368e-05, 9.367e-05, 9.368e-05, 370.1094492], [1516902120000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 1198.53109912], [1516902180000, 9.331e-05, 9.331e-05, 9.246e-05, 9.246e-05, 513.61514161], [1516902360000, 9.331e-05, 9.331e-05, 9.331e-05, 9.331e-05, 14.55396023], [1516902420000, 9.331e-05, 9.331e-05, 9.253e-05, 9.253e-05, 75.3451], [1516902480000, 9.28e-05, 9.28e-05, 9.28e-05, 9.28e-05, 12.97615522], [1516902540000, 9.28e-05, 9.28e-05, 9.28e-05, 9.28e-05, 211.25424658], [1516902600000, 9.281e-05, 9.281e-05, 9.28e-05, 9.28e-05, 250.0], [1516902660000, 9.281e-05, 9.281e-05, 9.281e-05, 9.281e-05, 82.77953588], [1516902780000, 9.281e-05, 9.281e-05, 9.281e-05, 9.281e-05, 11.58375523], [1516902840000, 9.281e-05, 9.281e-05, 9.251e-05, 9.251e-05, 553.0], [1516902900000, 9.253e-05, 9.253e-05, 9.252e-05, 9.252e-05, 520.83058286], [1516902960000, 9.252e-05, 9.252e-05, 9.252e-05, 9.252e-05, 600.98994285], [1516903020000, 9.281e-05, 9.281e-05, 9.281e-05, 9.281e-05, 194.05221854], [1516903080000, 9.281e-05, 9.281e-05, 9.254e-05, 9.254e-05, 820.83887578], [1516903200000, 9.255e-05, 9.255e-05, 9.254e-05, 9.254e-05, 1004.06148604], [1516903260000, 9.367e-05, 9.367e-05, 9.367e-05, 9.367e-05, 253.30777297], [1516903560000, 9.343e-05, 9.343e-05, 9.343e-05, 9.343e-05, 14.28699169], [1516903620000, 9.342e-05, 9.343e-05, 9.342e-05, 9.343e-05, 757.77679607], [1516903680000, 9.343e-05, 9.343e-05, 9.343e-05, 9.343e-05, 851.92937895], [1516903800000, 9.343e-05, 9.343e-05, 9.343e-05, 9.343e-05, 169.07310045], [1516903860000, 9.343e-05, 9.368e-05, 9.343e-05, 9.368e-05, 881.38576255], [1516903980000, 9.269e-05, 9.269e-05, 9.269e-05, 9.269e-05, 35.65], [1516904160000, 9.27e-05, 9.27e-05, 9.27e-05, 9.27e-05, 55.60244645], [1516904280000, 9.365e-05, 9.365e-05, 9.271e-05, 9.272e-05, 55.90159537], [1516904400000, 9.364e-05, 9.364e-05, 9.364e-05, 9.364e-05, 35.80460649], [1516904460000, 9.364e-05, 9.385e-05, 9.364e-05, 9.364e-05, 1631.43284872], [1516904580000, 9.28e-05, 9.28e-05, 9.28e-05, 9.28e-05, 200.0], [1516904640000, 9.359e-05, 9.36e-05, 9.359e-05, 9.36e-05, 1000.0], [1516904700000, 9.359e-05, 9.359e-05, 9.359e-05, 9.359e-05, 933.48017228], [1516904760000, 9.359e-05, 9.359e-05, 9.299e-05, 9.299e-05, 1343.46993572], [1516904820000, 9.358e-05, 9.358e-05, 9.358e-05, 9.358e-05, 176.16677076], [1516904880000, 9.299e-05, 9.299e-05, 9.299e-05, 9.299e-05, 656.98356699], [1516904940000, 9.28e-05, 9.28e-05, 9.28e-05, 9.28e-05, 166.84966225], [1516905000000, 9.299e-05, 9.299e-05, 9.299e-05, 9.299e-05, 500.0], [1516905120000, 9.299e-05, 9.359e-05, 9.299e-05, 9.359e-05, 1064.6943618], [1516905180000, 9.299e-05, 9.299e-05, 9.299e-05, 9.299e-05, 8.0], [1516905240000, 9.299e-05, 9.299e-05, 9.299e-05, 9.299e-05, 11.0], [1516905600000, 9.299e-05, 9.299e-05, 9.299e-05, 9.299e-05, 100.65632256], [1516905720000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 294.88588387], [1516905960000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 36.08447489], [1516906020000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 358.59308717], [1516906080000, 9.287e-05, 9.287e-05, 9.287e-05, 9.287e-05, 358.59308717], [1516906140000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 12.2295786], [1516906200000, 9.287e-05, 9.287e-05, 9.287e-05, 9.287e-05, 898.34367744], [1516906260000, 9.287e-05, 9.287e-05, 9.287e-05, 9.287e-05, 70.86502338], [1516906320000, 9.287e-05, 9.3e-05, 9.287e-05, 9.287e-05, 407.83188503], [1516906380000, 9.28e-05, 9.28e-05, 9.28e-05, 9.28e-05, 20.0], [1516906440000, 9.271e-05, 9.271e-05, 9.265e-05, 9.265e-05, 269.16129304], [1516906500000, 9.265e-05, 9.265e-05, 9.263e-05, 9.263e-05, 431.09974868], [1516906560000, 9.287e-05, 9.287e-05, 9.287e-05, 9.287e-05, 10.0], [1516906680000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 165.0], [1516906800000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 324.0], [1516906860000, 9.263e-05, 9.263e-05, 9.249e-05, 9.263e-05, 743.64406955], [1516907100000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 1621.8080267], [1516907160000, 9.262e-05, 9.262e-05, 9.262e-05, 9.262e-05, 35.0], [1516907220000, 9.249e-05, 9.26e-05, 9.249e-05, 9.249e-05, 746.48369554], [1516907280000, 9.245e-05, 9.245e-05, 9.245e-05, 9.245e-05, 43.0], [1516907400000, 9.245e-05, 9.245e-05, 9.245e-05, 9.245e-05, 11.89832341], [1516907520000, 9.263e-05, 9.263e-05, 9.245e-05, 9.245e-05, 1039.08022217], [1516907640000, 9.222e-05, 9.222e-05, 9.222e-05, 9.222e-05, 144.81085524], [1516907700000, 9.222e-05, 9.222e-05, 9.222e-05, 9.222e-05, 53.08225935], [1516907760000, 9.222e-05, 9.263e-05, 9.222e-05, 9.263e-05, 1686.48732188], [1516907820000, 9.222e-05, 9.222e-05, 9.222e-05, 9.222e-05, 499.84453292], [1516907940000, 9.231e-05, 9.231e-05, 9.231e-05, 9.231e-05, 107.95840054], [1516908000000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 72.3212425], [1516908060000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 50.0], [1516908180000, 9.262e-05, 9.262e-05, 9.262e-05, 9.262e-05, 220.575], [1516908300000, 9.262e-05, 9.263e-05, 9.262e-05, 9.263e-05, 179.92067549], [1516908360000, 9.235e-05, 9.235e-05, 9.231e-05, 9.231e-05, 50.0], [1516908420000, 9.263e-05, 9.263e-05, 9.235e-05, 9.263e-05, 8550.89532172], [1516908540000, 9.235e-05, 9.235e-05, 9.235e-05, 9.235e-05, 50.0], [1516908600000, 9.235e-05, 9.235e-05, 9.235e-05, 9.235e-05, 200.0], [1516908720000, 9.262e-05, 9.262e-05, 9.262e-05, 9.262e-05, 84.63264479], [1516908840000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 137.20405813], [1516908900000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 2153.72989312], [1516909020000, 9.235e-05, 9.263e-05, 9.235e-05, 9.263e-05, 133.92832068], [1516909260000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 500.0], [1516909320000, 9.236e-05, 9.263e-05, 9.236e-05, 9.263e-05, 142.02037048], [1516909380000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 215.91277124], [1516909440000, 9.236e-05, 9.236e-05, 9.236e-05, 9.236e-05, 50.0], [1516909500000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 39.6278149], [1516909560000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 738.95821006], [1516909620000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 408.1785111], [1516909680000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 1300.90100299], [1516909740000, 9.249e-05, 9.249e-05, 9.249e-05, 9.249e-05, 22.77416931], [1516909800000, 9.279e-05, 9.357e-05, 9.255e-05, 9.357e-05, 1156.92707093], [1516909860000, 9.357e-05, 9.357e-05, 9.243e-05, 9.353e-05, 1334.31641483], [1516910040000, 9.346e-05, 9.346e-05, 9.346e-05, 9.346e-05, 167.90977137], [1516910100000, 9.342e-05, 9.342e-05, 9.342e-05, 9.342e-05, 48.02856837], [1516910220000, 9.246e-05, 9.3e-05, 9.24e-05, 9.24e-05, 1482.64386578], [1516910280000, 9.251e-05, 9.251e-05, 9.251e-05, 9.251e-05, 2179.66281563], [1516910400000, 9.251e-05, 9.251e-05, 9.246e-05, 9.247e-05, 2770.95540973], [1516910460000, 9.238e-05, 9.238e-05, 9.238e-05, 9.238e-05, 11.0], [1516910520000, 9.238e-05, 9.238e-05, 9.238e-05, 9.238e-05, 50.0], [1516910580000, 9.247e-05, 9.247e-05, 9.247e-05, 9.247e-05, 106.0], [1516910640000, 9.247e-05, 9.247e-05, 9.247e-05, 9.247e-05, 25.0], [1516910700000, 9.247e-05, 9.247e-05, 9.247e-05, 9.247e-05, 127.24597702], [1516910760000, 9.247e-05, 9.247e-05, 9.247e-05, 9.247e-05, 28.61359979], [1516910820000, 9.247e-05, 9.247e-05, 9.247e-05, 9.247e-05, 57.65456904], [1516910940000, 9.247e-05, 9.247e-05, 9.247e-05, 9.247e-05, 144.48438129], [1516911000000, 9.247e-05, 9.247e-05, 9.247e-05, 9.247e-05, 1965.4989649], [1516911060000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 184.14082257], [1516911120000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 42.39763396], [1516911180000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 824.42048869], [1516911300000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 155.77164615], [1516911420000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 100.0], [1516911540000, 9.3e-05, 9.399e-05, 9.3e-05, 9.384e-05, 4205.48507964], [1516911720000, 9.371e-05, 9.371e-05, 9.371e-05, 9.371e-05, 317.49474117], [1516911780000, 9.262e-05, 9.262e-05, 9.261e-05, 9.261e-05, 188.77348421], [1516911900000, 9.261e-05, 9.261e-05, 9.251e-05, 9.251e-05, 270.0], [1516911960000, 9.32e-05, 9.32e-05, 9.251e-05, 9.251e-05, 53.6135165], [1516912020000, 9.251e-05, 9.251e-05, 9.251e-05, 9.251e-05, 300.0], [1516912140000, 9.251e-05, 9.251e-05, 9.251e-05, 9.251e-05, 382.43177927], [1516912200000, 9.316e-05, 9.316e-05, 9.316e-05, 9.316e-05, 20.14876449], [1516912260000, 9.316e-05, 9.327e-05, 9.316e-05, 9.327e-05, 359.94278951], [1516912320000, 9.251e-05, 9.318e-05, 9.251e-05, 9.251e-05, 1400.23695978], [1516912440000, 9.318e-05, 9.318e-05, 9.316e-05, 9.316e-05, 440.58337866], [1516912500000, 9.251e-05, 9.251e-05, 9.251e-05, 9.251e-05, 4338.1906275], [1516912560000, 9.251e-05, 9.315e-05, 9.25e-05, 9.25e-05, 1539.8196691], [1516912620000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 97.213221], [1516912740000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 2.786779], [1516912860000, 9.25e-05, 9.25e-05, 9.237e-05, 9.237e-05, 6388.58565382], [1516912980000, 9.254e-05, 9.254e-05, 9.254e-05, 9.254e-05, 18.4], [1516913040000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 53.91891892], [1516913100000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 488.37564689], [1516913160000, 9.25e-05, 9.254e-05, 9.237e-05, 9.254e-05, 3160.83886246], [1516913340000, 9.293e-05, 9.293e-05, 9.237e-05, 9.293e-05, 2619.22294648], [1516913400000, 9.293e-05, 9.293e-05, 9.239e-05, 9.239e-05, 363.83703891], [1516913520000, 9.293e-05, 9.318e-05, 9.293e-05, 9.318e-05, 56.7547463], [1516913580000, 9.293e-05, 9.293e-05, 9.236e-05, 9.236e-05, 284.0], [1516913640000, 9.239e-05, 9.239e-05, 9.239e-05, 9.239e-05, 170.96075778], [1516913700000, 9.316e-05, 9.316e-05, 9.316e-05, 9.316e-05, 501.50100299], [1516913760000, 9.316e-05, 9.316e-05, 9.316e-05, 9.316e-05, 142.65221484], [1516913820000, 9.317e-05, 9.318e-05, 9.317e-05, 9.318e-05, 135.81065142], [1516913940000, 9.238e-05, 9.238e-05, 9.238e-05, 9.238e-05, 300.0], [1516914000000, 9.239e-05, 9.239e-05, 9.239e-05, 9.239e-05, 100.0], [1516914060000, 9.293e-05, 9.293e-05, 9.242e-05, 9.293e-05, 358.15737357], [1516914120000, 9.293e-05, 9.293e-05, 9.293e-05, 9.293e-05, 14.8112537], [1516914180000, 9.269e-05, 9.269e-05, 9.244e-05, 9.244e-05, 118.89198839], [1516914240000, 9.269e-05, 9.269e-05, 9.269e-05, 9.269e-05, 17.97167515], [1516914300000, 9.249e-05, 9.249e-05, 9.243e-05, 9.249e-05, 193.18839682], [1516914360000, 9.269e-05, 9.269e-05, 9.269e-05, 9.269e-05, 21.61969638], [1516914420000, 9.269e-05, 9.269e-05, 9.269e-05, 9.269e-05, 10.76167871], [1516914600000, 9.269e-05, 9.269e-05, 9.269e-05, 9.269e-05, 27.87694976], [1516914720000, 9.281e-05, 9.281e-05, 9.281e-05, 9.281e-05, 300.0], [1516914840000, 9.269e-05, 9.269e-05, 9.238e-05, 9.238e-05, 1500.0], [1516915020000, 9.281e-05, 9.281e-05, 9.239e-05, 9.239e-05, 48.69384218], [1516915080000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 107.25248814], [1516915140000, 9.239e-05, 9.25e-05, 9.239e-05, 9.25e-05, 49.05354955], [1516915260000, 9.25e-05, 9.25e-05, 9.239e-05, 9.239e-05, 5468.77472855], [1516915380000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 420.78500868], [1516915560000, 9.31e-05, 9.31e-05, 9.31e-05, 9.31e-05, 35.36847865], [1516915620000, 9.293e-05, 9.314e-05, 9.293e-05, 9.314e-05, 4038.94859869], [1516915680000, 9.314e-05, 9.314e-05, 9.314e-05, 9.314e-05, 7.21325015], [1516915740000, 9.314e-05, 9.314e-05, 9.314e-05, 9.314e-05, 4353.14176821], [1516915800000, 9.314e-05, 9.314e-05, 9.314e-05, 9.314e-05, 13.42094804], [1516915860000, 9.316e-05, 9.377e-05, 9.262e-05, 9.262e-05, 3348.56033086], [1516915920000, 9.29e-05, 9.376e-05, 9.29e-05, 9.376e-05, 10683.45773793], [1516915980000, 9.373e-05, 9.377e-05, 9.373e-05, 9.377e-05, 3717.04423616], [1516916040000, 9.377e-05, 9.377e-05, 9.377e-05, 9.377e-05, 477.25210142], [1516916100000, 9.29e-05, 9.29e-05, 9.29e-05, 9.29e-05, 89.2088267], [1516916160000, 9.29e-05, 9.29e-05, 9.268e-05, 9.268e-05, 86.39138656], [1516916220000, 9.271e-05, 9.271e-05, 9.27e-05, 9.27e-05, 814.68393151], [1516916280000, 9.268e-05, 9.375e-05, 9.268e-05, 9.375e-05, 272.40248238], [1516916400000, 9.37e-05, 9.371e-05, 9.265e-05, 9.265e-05, 598.75596247], [1516916460000, 9.267e-05, 9.377e-05, 9.266e-05, 9.266e-05, 3716.8694446], [1516916520000, 9.375e-05, 9.377e-05, 9.375e-05, 9.377e-05, 7649.53604609], [1516916580000, 9.377e-05, 9.377e-05, 9.377e-05, 9.377e-05, 57.11933204], [1516916640000, 9.377e-05, 9.377e-05, 9.377e-05, 9.377e-05, 117.41020413], [1516916760000, 9.377e-05, 9.377e-05, 9.377e-05, 9.377e-05, 57.39263965], [1516916820000, 9.275e-05, 9.275e-05, 9.273e-05, 9.273e-05, 905.93110469], [1516916880000, 9.272e-05, 9.273e-05, 9.272e-05, 9.273e-05, 281.51873045], [1516916940000, 9.273e-05, 9.273e-05, 9.273e-05, 9.273e-05, 11.53170975], [1516917000000, 9.272e-05, 9.272e-05, 9.272e-05, 9.272e-05, 125.97565513], [1516917120000, 9.265e-05, 9.376e-05, 9.265e-05, 9.376e-05, 835.22592783], [1516917180000, 9.268e-05, 9.268e-05, 9.268e-05, 9.268e-05, 11.50448767], [1516917240000, 9.371e-05, 9.371e-05, 9.266e-05, 9.266e-05, 193.73277035], [1516917300000, 9.268e-05, 9.268e-05, 9.268e-05, 9.268e-05, 25.0], [1516917420000, 9.339e-05, 9.339e-05, 9.339e-05, 9.339e-05, 71.57943955], [1516917540000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 73.03080888], [1516917660000, 9.319e-05, 9.319e-05, 9.268e-05, 9.268e-05, 103.51830695], [1516917720000, 9.319e-05, 9.32e-05, 9.319e-05, 9.32e-05, 75.22600299], [1516917840000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 1698.03049182], [1516917960000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 197.24670815], [1516918020000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 20.9910287], [1516918140000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 315.7349743], [1516918200000, 9.32e-05, 9.32e-05, 9.27e-05, 9.27e-05, 814.19592114], [1516918260000, 9.27e-05, 9.27e-05, 9.27e-05, 9.27e-05, 64.39552178], [1516918320000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 21.50780884], [1516918380000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 571.45725843], [1516918500000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 533.34141631], [1516918680000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 222.0], [1516918740000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 35.0], [1516918860000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 601.80200599], [1516918920000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 7.16435747], [1516918980000, 9.3e-05, 9.308e-05, 9.3e-05, 9.3e-05, 539.46924046], [1516919100000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 1741.71303096], [1516919160000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 375.84094597], [1516919220000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 404.71179711], [1516919280000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 12300.61999133], [1516919340000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 9341.93664425], [1516919400000, 9.288e-05, 9.288e-05, 9.288e-05, 9.288e-05, 1214.6073232], [1516919460000, 9.288e-05, 9.3e-05, 9.266e-05, 9.3e-05, 5101.43722029], [1516919640000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 137.11999091], [1516919700000, 9.266e-05, 9.266e-05, 9.266e-05, 9.266e-05, 9.94742769], [1516919760000, 9.299e-05, 9.376e-05, 9.299e-05, 9.376e-05, 14718.25753957], [1516919820000, 9.376e-05, 9.376e-05, 9.376e-05, 9.376e-05, 196.44217737], [1516919880000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 137.80351867], [1516919940000, 9.375e-05, 9.377e-05, 9.315e-05, 9.315e-05, 1084.6928013], [1516920060000, 9.376e-05, 9.376e-05, 9.376e-05, 9.376e-05, 142.8161414], [1516920120000, 9.376e-05, 9.377e-05, 9.376e-05, 9.377e-05, 3300.96417867], [1516920180000, 9.318e-05, 9.318e-05, 9.318e-05, 9.318e-05, 341.3658411], [1516920240000, 9.318e-05, 9.318e-05, 9.315e-05, 9.315e-05, 1997.19246957], [1516920300000, 9.315e-05, 9.318e-05, 9.315e-05, 9.318e-05, 1763.21665711], [1516920360000, 9.318e-05, 9.318e-05, 9.318e-05, 9.318e-05, 50.0], [1516920420000, 9.316e-05, 9.316e-05, 9.316e-05, 9.316e-05, 200.0], [1516920480000, 9.318e-05, 9.318e-05, 9.318e-05, 9.318e-05, 213.73294625], [1516920540000, 9.318e-05, 9.318e-05, 9.318e-05, 9.318e-05, 2532.802529], [1516920600000, 9.325e-05, 9.376e-05, 9.325e-05, 9.326e-05, 52.34771803], [1516920660000, 9.326e-05, 9.326e-05, 9.325e-05, 9.325e-05, 309.16554863], [1516920720000, 9.326e-05, 9.326e-05, 9.325e-05, 9.325e-05, 180.20179043], [1516920780000, 9.325e-05, 9.325e-05, 9.325e-05, 9.325e-05, 163.29520948], [1516920840000, 9.325e-05, 9.325e-05, 9.325e-05, 9.325e-05, 586.09829936], [1516920900000, 9.325e-05, 9.325e-05, 9.325e-05, 9.325e-05, 717.3702402], [1516920960000, 9.325e-05, 9.326e-05, 9.325e-05, 9.326e-05, 2150.04000835], [1516921020000, 9.326e-05, 9.377e-05, 9.326e-05, 9.326e-05, 1907.7969759], [1516921140000, 9.375e-05, 9.375e-05, 9.326e-05, 9.326e-05, 1053.45563722], [1516921200000, 9.326e-05, 9.375e-05, 9.326e-05, 9.375e-05, 1145.25883553], [1516921260000, 9.375e-05, 9.377e-05, 9.375e-05, 9.375e-05, 662.80017503], [1516921320000, 9.345e-05, 9.345e-05, 9.345e-05, 9.345e-05, 186.86793405], [1516921500000, 9.345e-05, 9.377e-05, 9.326e-05, 9.377e-05, 613.87751502], [1516921740000, 9.376e-05, 9.377e-05, 9.376e-05, 9.377e-05, 150.69224929], [1516921800000, 9.377e-05, 9.377e-05, 9.377e-05, 9.377e-05, 20.0], [1516921860000, 9.376e-05, 9.376e-05, 9.326e-05, 9.326e-05, 1741.05531483], [1516921920000, 9.376e-05, 9.376e-05, 9.376e-05, 9.376e-05, 1488.56224299], [1516921980000, 9.376e-05, 9.376e-05, 9.376e-05, 9.376e-05, 96.008632], [1516922040000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 553.61315508], [1516922100000, 9.376e-05, 9.376e-05, 9.326e-05, 9.375e-05, 264.72663583], [1516922220000, 9.375e-05, 9.375e-05, 9.375e-05, 9.375e-05, 150.45100299], [1516922280000, 9.375e-05, 9.375e-05, 9.326e-05, 9.326e-05, 11173.04251568], [1516922340000, 9.326e-05, 9.326e-05, 9.326e-05, 9.326e-05, 11.27241452], [1516922400000, 9.326e-05, 9.326e-05, 9.326e-05, 9.326e-05, 83.0], [1516922580000, 9.375e-05, 9.375e-05, 9.326e-05, 9.326e-05, 240.42100299], [1516922640000, 9.375e-05, 9.5e-05, 9.278e-05, 9.326e-05, 17290.82239358], [1516922820000, 9.37e-05, 9.372e-05, 9.37e-05, 9.372e-05, 357.83445168], [1516922880000, 9.33e-05, 9.33e-05, 9.33e-05, 9.33e-05, 30.0], [1516923000000, 9.337e-05, 9.337e-05, 9.33e-05, 9.337e-05, 1024.273887], [1516923060000, 9.337e-05, 9.337e-05, 9.337e-05, 9.337e-05, 25.0], [1516923240000, 9.407e-05, 9.407e-05, 9.407e-05, 9.407e-05, 7.165074], [1516923360000, 9.407e-05, 9.407e-05, 9.407e-05, 9.407e-05, 212.07940071], [1516923420000, 9.398e-05, 9.398e-05, 9.317e-05, 9.317e-05, 1305.01815085], [1516923480000, 9.318e-05, 9.318e-05, 9.318e-05, 9.318e-05, 411.07525867], [1516923540000, 9.321e-05, 9.388e-05, 9.321e-05, 9.388e-05, 376.13982867], [1516923600000, 9.388e-05, 9.388e-05, 9.388e-05, 9.388e-05, 801.46464898], [1516923660000, 9.388e-05, 9.388e-05, 9.321e-05, 9.321e-05, 1374.51909032], [1516923780000, 9.321e-05, 9.321e-05, 9.321e-05, 9.321e-05, 50.0], [1516923900000, 9.321e-05, 9.388e-05, 9.321e-05, 9.326e-05, 303.72717351], [1516923960000, 9.326e-05, 9.326e-05, 9.326e-05, 9.326e-05, 7.13199215], [1516924020000, 9.388e-05, 9.388e-05, 9.388e-05, 9.388e-05, 40.02123429], [1516924080000, 9.388e-05, 9.461e-05, 9.388e-05, 9.461e-05, 2140.43906367], [1516924140000, 9.461e-05, 9.461e-05, 9.46e-05, 9.46e-05, 251.05047136], [1516924200000, 9.459e-05, 9.462e-05, 9.459e-05, 9.462e-05, 4176.86612986], [1516924320000, 9.451e-05, 9.494e-05, 9.359e-05, 9.359e-05, 1555.80868254], [1516924380000, 9.494e-05, 9.494e-05, 9.451e-05, 9.451e-05, 1777.30890484], [1516924440000, 9.359e-05, 9.37e-05, 9.356e-05, 9.37e-05, 256.36444631], [1516924560000, 9.371e-05, 9.371e-05, 9.37e-05, 9.37e-05, 529.65823485], [1516924620000, 9.441e-05, 9.441e-05, 9.37e-05, 9.37e-05, 366.674848], [1516924680000, 9.441e-05, 9.498e-05, 9.37e-05, 9.37e-05, 3127.51230031], [1516924740000, 9.371e-05, 9.371e-05, 9.371e-05, 9.371e-05, 969.56353987], [1516924800000, 9.372e-05, 9.372e-05, 9.355e-05, 9.355e-05, 3821.52074188], [1516924860000, 9.355e-05, 9.356e-05, 9.272e-05, 9.356e-05, 3135.76943203], [1516924920000, 9.471e-05, 9.471e-05, 9.471e-05, 9.471e-05, 200.601003], [1516924980000, 9.468e-05, 9.468e-05, 9.468e-05, 9.468e-05, 526.7187665], [1516925040000, 9.314e-05, 9.314e-05, 9.307e-05, 9.307e-05, 1000.0], [1516925100000, 9.319e-05, 9.437e-05, 9.319e-05, 9.437e-05, 293.64550191], [1516925160000, 9.291e-05, 9.291e-05, 9.291e-05, 9.291e-05, 101.24219106], [1516925220000, 9.298e-05, 9.298e-05, 9.298e-05, 9.298e-05, 29.98776571], [1516925340000, 9.417e-05, 9.482e-05, 9.41e-05, 9.473e-05, 19804.6779462], [1516925400000, 9.473e-05, 9.473e-05, 9.337e-05, 9.337e-05, 1647.42586474], [1516925460000, 9.428e-05, 9.472e-05, 9.428e-05, 9.472e-05, 21.15665417], [1516925520000, 9.472e-05, 9.472e-05, 9.472e-05, 9.472e-05, 11.06788429], [1516925580000, 9.472e-05, 9.472e-05, 9.472e-05, 9.472e-05, 139.01518898], [1516925640000, 9.371e-05, 9.463e-05, 9.371e-05, 9.463e-05, 186.2025137], [1516925700000, 9.375e-05, 9.462e-05, 9.375e-05, 9.375e-05, 3254.58880307], [1516925760000, 9.375e-05, 9.375e-05, 9.375e-05, 9.375e-05, 661.76474772], [1516925820000, 9.375e-05, 9.375e-05, 9.375e-05, 9.375e-05, 66.59021107], [1516925940000, 9.375e-05, 9.375e-05, 9.3e-05, 9.341e-05, 1094.56769726], [1516926000000, 9.304e-05, 9.304e-05, 9.304e-05, 9.304e-05, 244.28622406], [1516926120000, 9.321e-05, 9.321e-05, 9.321e-05, 9.321e-05, 60.97367644], [1516926180000, 9.444e-05, 9.444e-05, 9.327e-05, 9.333e-05, 535.84654813], [1516926240000, 9.325e-05, 9.425e-05, 9.325e-05, 9.425e-05, 68.32569507], [1516926360000, 9.424e-05, 9.424e-05, 9.308e-05, 9.316e-05, 454.53148009], [1516926420000, 9.414e-05, 9.415e-05, 9.32e-05, 9.32e-05, 687.41660533], [1516926480000, 9.316e-05, 9.318e-05, 9.31e-05, 9.318e-05, 1162.93421652], [1516926540000, 9.314e-05, 9.388e-05, 9.312e-05, 9.312e-05, 461.86958713], [1516926600000, 9.31e-05, 9.356e-05, 9.31e-05, 9.356e-05, 478.40618263], [1516926660000, 9.351e-05, 9.356e-05, 9.351e-05, 9.356e-05, 169.1052179], [1516926720000, 9.31e-05, 9.31e-05, 9.307e-05, 9.307e-05, 4136.19722123], [1516926780000, 9.31e-05, 9.31e-05, 9.31e-05, 9.31e-05, 592.90163286], [1516926840000, 9.31e-05, 9.31e-05, 9.305e-05, 9.305e-05, 838.47304319], [1516926900000, 9.307e-05, 9.31e-05, 9.305e-05, 9.305e-05, 1428.11009032], [1516926960000, 9.305e-05, 9.305e-05, 9.305e-05, 9.305e-05, 295.20190839], [1516927020000, 9.308e-05, 9.323e-05, 9.308e-05, 9.323e-05, 1209.25964472], [1516927080000, 9.304e-05, 9.322e-05, 9.272e-05, 9.322e-05, 4120.7205905], [1516927140000, 9.323e-05, 9.323e-05, 9.323e-05, 9.323e-05, 71.35726282], [1516927200000, 9.323e-05, 9.323e-05, 9.282e-05, 9.282e-05, 450.4022], [1516927260000, 9.323e-05, 9.323e-05, 9.28e-05, 9.28e-05, 6879.81292866], [1516927320000, 9.323e-05, 9.421e-05, 9.285e-05, 9.285e-05, 642.57567701], [1516927440000, 9.372e-05, 9.372e-05, 9.372e-05, 9.372e-05, 31.75421662], [1516927500000, 9.278e-05, 9.278e-05, 9.278e-05, 9.278e-05, 252.69833223], [1516927620000, 9.333e-05, 9.37e-05, 9.333e-05, 9.37e-05, 1346.3253906], [1516927860000, 9.346e-05, 9.346e-05, 9.28e-05, 9.341e-05, 1355.54602652], [1516927920000, 9.341e-05, 9.341e-05, 9.285e-05, 9.285e-05, 388.89573745], [1516927980000, 9.282e-05, 9.282e-05, 9.282e-05, 9.282e-05, 100.0], [1516928040000, 9.284e-05, 9.291e-05, 9.284e-05, 9.291e-05, 5645.10914002], [1516928100000, 9.289e-05, 9.375e-05, 9.289e-05, 9.375e-05, 1053.92753554], [1516928160000, 9.286e-05, 9.286e-05, 9.286e-05, 9.286e-05, 1461.14772963], [1516928220000, 9.284e-05, 9.284e-05, 9.284e-05, 9.284e-05, 15.0], [1516928280000, 9.286e-05, 9.286e-05, 9.286e-05, 9.286e-05, 1554.77552618], [1516928340000, 9.286e-05, 9.358e-05, 9.286e-05, 9.358e-05, 124.95543996], [1516928520000, 9.285e-05, 9.285e-05, 9.285e-05, 9.285e-05, 744.51377654], [1516928580000, 9.288e-05, 9.288e-05, 9.286e-05, 9.286e-05, 850.0], [1516928640000, 9.358e-05, 9.359e-05, 9.353e-05, 9.354e-05, 8037.92221983], [1516928760000, 9.29e-05, 9.29e-05, 9.29e-05, 9.29e-05, 11.99865183], [1516928880000, 9.289e-05, 9.352e-05, 9.289e-05, 9.352e-05, 3961.01047836], [1516929000000, 9.295e-05, 9.295e-05, 9.293e-05, 9.293e-05, 3386.42308134], [1516929060000, 9.385e-05, 9.385e-05, 9.299e-05, 9.299e-05, 558.82391525], [1516929120000, 9.383e-05, 9.383e-05, 9.383e-05, 9.383e-05, 8026.52909772], [1516929300000, 9.299e-05, 9.382e-05, 9.299e-05, 9.382e-05, 291.35670894], [1516929360000, 9.382e-05, 9.382e-05, 9.382e-05, 9.382e-05, 106.58708164], [1516929480000, 9.303e-05, 9.303e-05, 9.302e-05, 9.302e-05, 4600.434625], [1516929540000, 9.303e-05, 9.303e-05, 9.303e-05, 9.303e-05, 110.0], [1516929600000, 9.303e-05, 9.358e-05, 9.303e-05, 9.358e-05, 1459.85983097], [1516929660000, 9.358e-05, 9.358e-05, 9.358e-05, 9.358e-05, 1377.01184098], [1516929720000, 9.358e-05, 9.382e-05, 9.358e-05, 9.382e-05, 56.98935603], [1516929840000, 9.303e-05, 9.303e-05, 9.303e-05, 9.303e-05, 235.31131109], [1516929900000, 9.302e-05, 9.303e-05, 9.291e-05, 9.303e-05, 2179.92164602], [1516929960000, 9.355e-05, 9.355e-05, 9.287e-05, 9.291e-05, 3111.31573223], [1516930020000, 9.287e-05, 9.288e-05, 9.287e-05, 9.288e-05, 1132.22709389], [1516930140000, 9.291e-05, 9.291e-05, 9.288e-05, 9.288e-05, 700.301003], [1516930200000, 9.288e-05, 9.288e-05, 9.287e-05, 9.287e-05, 9081.34860125], [1516930260000, 9.285e-05, 9.287e-05, 9.265e-05, 9.265e-05, 7780.67591638], [1516930320000, 9.265e-05, 9.265e-05, 9.261e-05, 9.261e-05, 2860.06834392], [1516930440000, 9.261e-05, 9.261e-05, 9.261e-05, 9.261e-05, 721.1422546], [1516930560000, 9.261e-05, 9.261e-05, 9.261e-05, 9.261e-05, 10274.71935599], [1516930680000, 9.263e-05, 9.263e-05, 9.263e-05, 9.263e-05, 50.0], [1516930740000, 9.36e-05, 9.36e-05, 9.359e-05, 9.359e-05, 480.87687361], [1516930800000, 9.359e-05, 9.359e-05, 9.359e-05, 9.359e-05, 35.57266766], [1516930860000, 9.27e-05, 9.27e-05, 9.27e-05, 9.27e-05, 558.0], [1516930980000, 9.274e-05, 9.274e-05, 9.274e-05, 9.274e-05, 100.0], [1516931040000, 9.27e-05, 9.359e-05, 9.27e-05, 9.359e-05, 1594.49478284], [1516931100000, 9.351e-05, 9.351e-05, 9.264e-05, 9.264e-05, 380.37613552], [1516931160000, 9.336e-05, 9.337e-05, 9.261e-05, 9.261e-05, 5846.56353547], [1516931220000, 9.261e-05, 9.261e-05, 9.26e-05, 9.261e-05, 4357.05537328], [1516931280000, 9.261e-05, 9.261e-05, 9.261e-05, 9.261e-05, 637.99608471], [1516931340000, 9.261e-05, 9.261e-05, 9.261e-05, 9.261e-05, 512.71065471], [1516931460000, 9.26e-05, 9.261e-05, 9.26e-05, 9.261e-05, 1670.84707417], [1516931520000, 9.334e-05, 9.334e-05, 9.334e-05, 9.334e-05, 87.56427641], [1516931580000, 9.325e-05, 9.325e-05, 9.325e-05, 9.325e-05, 214.27041], [1516931700000, 9.321e-05, 9.321e-05, 9.261e-05, 9.261e-05, 130.70337482], [1516931760000, 9.323e-05, 9.356e-05, 9.323e-05, 9.323e-05, 4236.10067205], [1516931820000, 9.323e-05, 9.323e-05, 9.323e-05, 9.323e-05, 107.39908546], [1516931880000, 9.323e-05, 9.323e-05, 9.323e-05, 9.323e-05, 748.87911616], [1516931940000, 9.323e-05, 9.323e-05, 9.323e-05, 9.323e-05, 4279.30923522], [1516932060000, 9.323e-05, 9.323e-05, 9.323e-05, 9.323e-05, 116.81517306], [1516932180000, 9.261e-05, 9.323e-05, 9.261e-05, 9.261e-05, 2665.30349799], [1516932240000, 9.323e-05, 9.323e-05, 9.261e-05, 9.261e-05, 506.4777876], [1516932300000, 9.26e-05, 9.323e-05, 9.26e-05, 9.323e-05, 249.12153763], [1516932360000, 9.323e-05, 9.323e-05, 9.323e-05, 9.323e-05, 136.80795837], [1516932480000, 9.26e-05, 9.323e-05, 9.258e-05, 9.323e-05, 587.68775886], [1516932540000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 94.4552529], [1516932600000, 9.258e-05, 9.323e-05, 9.255e-05, 9.255e-05, 1679.95703527], [1516932720000, 9.255e-05, 9.258e-05, 9.25e-05, 9.258e-05, 615.06174102], [1516932780000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 1193.61775028], [1516932840000, 9.258e-05, 9.32e-05, 9.258e-05, 9.32e-05, 99.718954], [1516932900000, 9.258e-05, 9.32e-05, 9.258e-05, 9.32e-05, 483.30812047], [1516932960000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 254.6477483], [1516933020000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 54.20430281], [1516933140000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 554.49540918], [1516933200000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 13.96357036], [1516933260000, 9.258e-05, 9.258e-05, 9.258e-05, 9.258e-05, 784.65161308], [1516933380000, 9.258e-05, 9.258e-05, 9.25e-05, 9.25e-05, 715.32676705], [1516933440000, 9.317e-05, 9.317e-05, 9.25e-05, 9.25e-05, 573.54952091], [1516933500000, 9.24e-05, 9.24e-05, 9.237e-05, 9.237e-05, 245.9213383], [1516933560000, 9.237e-05, 9.237e-05, 9.237e-05, 9.237e-05, 55.65358438], [1516933620000, 9.237e-05, 9.319e-05, 9.236e-05, 9.319e-05, 678.99983972], [1516933680000, 9.236e-05, 9.317e-05, 9.236e-05, 9.317e-05, 707.2616525], [1516933740000, 9.29e-05, 9.315e-05, 9.29e-05, 9.315e-05, 229.71687395], [1516933920000, 9.314e-05, 9.314e-05, 9.314e-05, 9.314e-05, 60.15116705], [1516934100000, 9.236e-05, 9.313e-05, 9.236e-05, 9.313e-05, 46.61128202], [1516934220000, 9.313e-05, 9.313e-05, 9.313e-05, 9.313e-05, 871.82206162], [1516934280000, 9.314e-05, 9.32e-05, 9.314e-05, 9.32e-05, 3985.82866867], [1516934340000, 9.32e-05, 9.32e-05, 9.32e-05, 9.32e-05, 26.82403433], [1516934400000, 9.313e-05, 9.316e-05, 9.313e-05, 9.316e-05, 27.09915527], [1516934460000, 9.316e-05, 9.316e-05, 9.239e-05, 9.239e-05, 30.71204902], [1516934940000, 9.244e-05, 9.244e-05, 9.244e-05, 9.244e-05, 19.17272749], [1516935120000, 9.244e-05, 9.244e-05, 9.244e-05, 9.244e-05, 386.81454595], [1516935180000, 9.239e-05, 9.244e-05, 9.239e-05, 9.244e-05, 320.40315879], [1516935240000, 9.316e-05, 9.316e-05, 9.316e-05, 9.316e-05, 246.56244763], [1516935360000, 9.243e-05, 9.243e-05, 9.239e-05, 9.239e-05, 99.31210118], [1516935420000, 9.24e-05, 9.24e-05, 9.24e-05, 9.24e-05, 420.50319577], [1516935480000, 9.24e-05, 9.24e-05, 9.24e-05, 9.24e-05, 280.57344415], [1516935600000, 9.241e-05, 9.241e-05, 9.241e-05, 9.241e-05, 11.613176], [1516935660000, 9.241e-05, 9.241e-05, 9.24e-05, 9.241e-05, 215.0], [1516935720000, 9.313e-05, 9.354e-05, 9.313e-05, 9.354e-05, 3531.77819469], [1516935900000, 9.343e-05, 9.346e-05, 9.343e-05, 9.346e-05, 140.77767477], [1516936080000, 9.258e-05, 9.258e-05, 9.24e-05, 9.24e-05, 137.33672451], [1516936140000, 9.342e-05, 9.342e-05, 9.245e-05, 9.245e-05, 107.45679902], [1516936200000, 9.241e-05, 9.241e-05, 9.24e-05, 9.24e-05, 249.65911413], [1516936260000, 9.239e-05, 9.239e-05, 9.237e-05, 9.237e-05, 733.13030713], [1516936320000, 9.237e-05, 9.237e-05, 9.236e-05, 9.236e-05, 1451.63356723], [1516936380000, 9.237e-05, 9.348e-05, 9.237e-05, 9.348e-05, 2272.38747642], [1516936440000, 9.344e-05, 9.344e-05, 9.344e-05, 9.344e-05, 250.0], [1516936740000, 9.245e-05, 9.245e-05, 9.245e-05, 9.245e-05, 62.0], [1516936800000, 9.245e-05, 9.245e-05, 9.245e-05, 9.245e-05, 18.0], [1516936920000, 9.239e-05, 9.239e-05, 9.239e-05, 9.239e-05, 10.08960365], [1516936980000, 9.239e-05, 9.343e-05, 9.237e-05, 9.343e-05, 2581.66929499], [1516937160000, 9.343e-05, 9.343e-05, 9.343e-05, 9.343e-05, 40.12100299], [1516937400000, 9.237e-05, 9.324e-05, 9.237e-05, 9.237e-05, 423.07584837], [1516937460000, 9.24e-05, 9.327e-05, 9.24e-05, 9.327e-05, 24.02745921], [1516937520000, 9.325e-05, 9.335e-05, 9.323e-05, 9.335e-05, 387.09117196], [1516937580000, 9.24e-05, 9.24e-05, 9.239e-05, 9.24e-05, 310.0], [1516937640000, 9.325e-05, 9.325e-05, 9.319e-05, 9.319e-05, 40.46850835], [1516937700000, 9.239e-05, 9.239e-05, 9.239e-05, 9.239e-05, 9.6151913], [1516937760000, 9.315e-05, 9.315e-05, 9.315e-05, 9.315e-05, 20.29420209], [1516937820000, 9.315e-05, 9.317e-05, 9.315e-05, 9.317e-05, 246.70904418], [1516937880000, 9.239e-05, 9.239e-05, 9.236e-05, 9.236e-05, 2404.95557529], [1516938000000, 9.237e-05, 9.237e-05, 9.237e-05, 9.237e-05, 100.0], [1516938120000, 9.25e-05, 9.25e-05, 9.235e-05, 9.25e-05, 472.77551747], [1516938180000, 9.235e-05, 9.317e-05, 9.235e-05, 9.25e-05, 423.36255582], [1516938240000, 9.25e-05, 9.25e-05, 9.23e-05, 9.23e-05, 2130.65584332], [1516938300000, 9.23e-05, 9.25e-05, 9.222e-05, 9.222e-05, 1115.27027028], [1516938360000, 9.222e-05, 9.222e-05, 9.222e-05, 9.222e-05, 250.0], [1516938480000, 9.223e-05, 9.223e-05, 9.222e-05, 9.222e-05, 1174.08484918], [1516938540000, 9.249e-05, 9.249e-05, 9.249e-05, 9.249e-05, 248.46013344], [1516938600000, 9.222e-05, 9.25e-05, 9.222e-05, 9.25e-05, 188.24067273], [1516938660000, 9.25e-05, 9.25e-05, 9.222e-05, 9.222e-05, 384.41523666], [1516938720000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 15.32026782], [1516938780000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 82.03748883], [1516938840000, 9.222e-05, 9.25e-05, 9.222e-05, 9.25e-05, 61.76106959], [1516938900000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 35.48781627], [1516938960000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 26.0], [1516939020000, 9.25e-05, 9.25e-05, 9.222e-05, 9.222e-05, 834.85724262], [1516939200000, 9.222e-05, 9.222e-05, 9.221e-05, 9.222e-05, 91.27294723], [1516939260000, 9.221e-05, 9.221e-05, 9.221e-05, 9.221e-05, 1246.48799007], [1516939320000, 9.221e-05, 9.222e-05, 9.22e-05, 9.22e-05, 317.46635981], [1516939380000, 9.22e-05, 9.22e-05, 9.22e-05, 9.22e-05, 325.0], [1516939440000, 9.22e-05, 9.221e-05, 9.22e-05, 9.22e-05, 163.70727566], [1516939500000, 9.221e-05, 9.222e-05, 9.22e-05, 9.22e-05, 846.10432294], [1516939560000, 9.222e-05, 9.25e-05, 9.22e-05, 9.22e-05, 1014.66274661], [1516939620000, 9.25e-05, 9.25e-05, 9.249e-05, 9.249e-05, 87.54566835], [1516939680000, 9.249e-05, 9.249e-05, 9.249e-05, 9.249e-05, 512.38465699], [1516939740000, 9.22e-05, 9.22e-05, 9.22e-05, 9.22e-05, 20.0], [1516939800000, 9.249e-05, 9.25e-05, 9.249e-05, 9.25e-05, 310.77862165], [1516939860000, 9.249e-05, 9.249e-05, 9.249e-05, 9.249e-05, 96.05701129], [1516939920000, 9.249e-05, 9.25e-05, 9.249e-05, 9.25e-05, 652.35992769], [1516939980000, 9.25e-05, 9.25e-05, 9.221e-05, 9.221e-05, 622.40180759], [1516940040000, 9.24e-05, 9.249e-05, 9.24e-05, 9.249e-05, 83.98122202], [1516940100000, 9.248e-05, 9.249e-05, 9.248e-05, 9.249e-05, 1658.01059334], [1516940160000, 9.249e-05, 9.249e-05, 9.249e-05, 9.249e-05, 549.82213782], [1516940220000, 9.25e-05, 9.3e-05, 9.25e-05, 9.3e-05, 720.62555306], [1516940280000, 9.25e-05, 9.25e-05, 9.218e-05, 9.218e-05, 364.54512048], [1516940340000, 9.22e-05, 9.22e-05, 9.22e-05, 9.22e-05, 214.493275], [1516940400000, 9.3e-05, 9.342e-05, 9.3e-05, 9.339e-05, 741.74843484], [1516940460000, 9.227e-05, 9.332e-05, 9.218e-05, 9.332e-05, 864.94534414], [1516940520000, 9.33e-05, 9.33e-05, 9.33e-05, 9.33e-05, 707.45152201], [1516940640000, 9.318e-05, 9.318e-05, 9.318e-05, 9.318e-05, 8.78227653], [1516940760000, 9.219e-05, 9.317e-05, 9.218e-05, 9.317e-05, 225.98780384], [1516940880000, 9.316e-05, 9.316e-05, 9.218e-05, 9.218e-05, 1119.24372607], [1516940940000, 9.218e-05, 9.308e-05, 9.218e-05, 9.305e-05, 293.83032954], [1516941000000, 9.221e-05, 9.307e-05, 9.221e-05, 9.255e-05, 86.94905179], [1516941060000, 9.255e-05, 9.255e-05, 9.255e-05, 9.255e-05, 525.56640451], [1516941120000, 9.255e-05, 9.255e-05, 9.255e-05, 9.255e-05, 474.93359549], [1516941180000, 9.231e-05, 9.231e-05, 9.22e-05, 9.22e-05, 231.43984421], [1516941240000, 9.219e-05, 9.22e-05, 9.218e-05, 9.22e-05, 539.42994957], [1516941300000, 9.218e-05, 9.22e-05, 9.218e-05, 9.22e-05, 763.68993345], [1516941360000, 9.248e-05, 9.25e-05, 9.248e-05, 9.25e-05, 774.73089331], [1516941420000, 9.22e-05, 9.25e-05, 9.22e-05, 9.25e-05, 205.22037518], [1516941480000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 108.1081081], [1516941540000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 54.04459459], [1516941600000, 9.25e-05, 9.25e-05, 9.25e-05, 9.25e-05, 4612.49989335], [1516941660000, 9.303e-05, 9.303e-05, 9.303e-05, 9.303e-05, 50.0], [1516941720000, 9.303e-05, 9.31e-05, 9.303e-05, 9.31e-05, 71.30440501], [1516941960000, 9.224e-05, 9.224e-05, 9.224e-05, 9.224e-05, 57.30800586], [1516942020000, 9.224e-05, 9.303e-05, 9.224e-05, 9.303e-05, 143.56297153], [1516942080000, 9.3e-05, 9.3e-05, 9.3e-05, 9.3e-05, 83.65705776], [1516942140000, 9.222e-05, 9.222e-05, 9.222e-05, 9.222e-05, 80.0], [1516942320000, 9.222e-05, 9.222e-05, 9.222e-05, 9.222e-05, 190.25119807], [1516942500000, 9.222e-05, 9.222e-05, 9.222e-05, 9.222e-05, 100.0], [1516942560000, 9.257e-05, 9.257e-05, 9.23e-05, 9.23e-05, 182.23678133], [1516942740000, 9.23e-05, 9.294e-05, 9.222e-05, 9.294e-05, 85.99559517], [1516942800000, 9.222e-05, 9.222e-05, 9.222e-05, 9.222e-05, 296.01914412], [1516942860000, 9.24e-05, 9.24e-05, 9.238e-05, 9.238e-05, 514.08274983], [1516942920000, 9.239e-05, 9.239e-05, 9.239e-05, 9.239e-05, 317.17550844], [1516942980000, 9.27e-05, 9.289e-05, 9.27e-05, 9.289e-05, 71.35888733], [1516943040000, 9.239e-05, 9.239e-05, 9.239e-05, 9.239e-05, 492.68360055], [1516943100000, 9.239e-05, 9.239e-05, 9.23e-05, 9.23e-05, 286.41430641], [1516943160000, 9.292e-05, 9.292e-05, 9.23e-05, 9.23e-05, 109.46136581], [1516943220000, 9.23e-05, 9.23e-05, 9.222e-05, 9.222e-05, 500.12261226], [1516943280000, 9.255e-05, 9.255e-05, 9.231e-05, 9.231e-05, 74.19632426], [1516943340000, 9.231e-05, 9.295e-05, 9.231e-05, 9.295e-05, 5695.90141579], [1516943400000, 9.292e-05, 9.295e-05, 9.292e-05, 9.295e-05, 2798.42355762], [1516943460000, 9.295e-05, 9.296e-05, 9.295e-05, 9.296e-05, 1880.99054276], [1516943580000, 9.226e-05, 9.226e-05, 9.226e-05, 9.226e-05, 128.10065263], [1516943640000, 9.226e-05, 9.226e-05, 9.226e-05, 9.226e-05, 10.0], [1516943700000, 9.226e-05, 9.226e-05, 9.226e-05, 9.226e-05, 10.47280526], [1516943760000, 9.228e-05, 9.295e-05, 9.228e-05, 9.295e-05, 874.66364609], [1516943820000, 9.295e-05, 9.295e-05, 9.258e-05, 9.258e-05, 17.61062331], [1516943880000, 9.258e-05, 9.258e-05, 9.22e-05, 9.22e-05, 1000.0], [1516944060000, 9.293e-05, 9.294e-05, 9.293e-05, 9.294e-05, 185.58032326], [1516944120000, 9.221e-05, 9.221e-05, 9.211e-05, 9.211e-05, 782.2396], [1516944180000, 9.211e-05, 9.212e-05, 9.21e-05, 9.212e-05, 1318.87275543], [1516944240000, 9.212e-05, 9.294e-05, 9.191e-05, 9.191e-05, 6855.86337774], [1516944300000, 9.19e-05, 9.295e-05, 9.16e-05, 9.16e-05, 11349.15839297], [1516944360000, 9.157e-05, 9.294e-05, 9.15e-05, 9.162e-05, 25891.81677614], [1516944420000, 9.165e-05, 9.285e-05, 9.165e-05, 9.206e-05, 1860.97153492], [1516944480000, 9.224e-05, 9.224e-05, 9.221e-05, 9.221e-05, 308.7484136], [1516944540000, 9.253e-05, 9.284e-05, 9.253e-05, 9.284e-05, 376.33166268], [1516944600000, 9.271e-05, 9.271e-05, 9.271e-05, 9.271e-05, 17.87874561], [1516944660000, 9.275e-05, 9.275e-05, 9.275e-05, 9.275e-05, 715.41930158], [1516944720000, 9.27e-05, 9.27e-05, 9.27e-05, 9.27e-05, 35.76543838], [1516944780000, 9.174e-05, 9.196e-05, 9.15e-05, 9.159e-05, 3305.10745749], [1516944840000, 9.159e-05, 9.257e-05, 9.159e-05, 9.257e-05, 6.48004632], [1516944900000, 9.16e-05, 9.246e-05, 9.16e-05, 9.246e-05, 901.42204827], [1516944960000, 9.222e-05, 9.237e-05, 9.222e-05, 9.237e-05, 561.30810091], [1516945020000, 9.235e-05, 9.235e-05, 9.235e-05, 9.235e-05, 294.90970346], [1516945080000, 9.243e-05, 9.243e-05, 9.241e-05, 9.241e-05, 1090.0], [1516945140000, 9.235e-05, 9.235e-05, 9.231e-05, 9.231e-05, 1061.44742457], [1516945200000, 9.231e-05, 9.231e-05, 9.231e-05, 9.231e-05, 14.8685166], [1516945260000, 9.231e-05, 9.233e-05, 9.225e-05, 9.233e-05, 241.35693325], [1516945440000, 9.227e-05, 9.227e-05, 9.16e-05, 9.226e-05, 585.97736284], [1516945500000, 9.16e-05, 9.222e-05, 9.114e-05, 9.222e-05, 19335.02115333], [1516945560000, 9.198e-05, 9.198e-05, 9.198e-05, 9.198e-05, 124.39384353], [1516945620000, 9.197e-05, 9.219e-05, 9.197e-05, 9.213e-05, 160.10776015], [1516945680000, 9.135e-05, 9.135e-05, 9.135e-05, 9.135e-05, 1370.52559244], [1516945740000, 9.194e-05, 9.208e-05, 9.135e-05, 9.207e-05, 1502.97008667], [1516945800000, 9.201e-05, 9.204e-05, 9.201e-05, 9.202e-05, 1195.91851976], [1516945860000, 9.201e-05, 9.201e-05, 9.193e-05, 9.193e-05, 352.35557675], [1516945920000, 9.191e-05, 9.191e-05, 9.134e-05, 9.19e-05, 1099.14704535], [1516945980000, 9.138e-05, 9.138e-05, 9.112e-05, 9.112e-05, 6763.34133744], [1516946040000, 9.182e-05, 9.182e-05, 9.112e-05, 9.173e-05, 1545.79695859], [1516946100000, 9.173e-05, 9.173e-05, 9.173e-05, 9.173e-05, 234.3683011], [1516946160000, 9.178e-05, 9.181e-05, 9.173e-05, 9.174e-05, 1173.3049393], [1516946220000, 9.175e-05, 9.201e-05, 9.174e-05, 9.201e-05, 2255.93644559], [1516946280000, 9.177e-05, 9.177e-05, 9.175e-05, 9.177e-05, 2873.4915545], [1516946340000, 9.194e-05, 9.194e-05, 9.177e-05, 9.177e-05, 2472.92346304], [1516946400000, 9.177e-05, 9.177e-05, 9.177e-05, 9.177e-05, 782.00699999], [1516946460000, 9.177e-05, 9.177e-05, 9.177e-05, 9.177e-05, 2435.3091439], [1516946520000, 9.183e-05, 9.183e-05, 9.183e-05, 9.183e-05, 61.30380069], [1516946580000, 9.174e-05, 9.183e-05, 9.174e-05, 9.182e-05, 2354.71914186], [1516946640000, 9.174e-05, 9.174e-05, 9.174e-05, 9.174e-05, 125.09132767], [1516946880000, 9.165e-05, 9.165e-05, 9.157e-05, 9.157e-05, 364.33749718], [1516946940000, 9.157e-05, 9.159e-05, 9.157e-05, 9.159e-05, 360.6527795], [1516947000000, 9.14e-05, 9.14e-05, 9.131e-05, 9.131e-05, 1435.0], [1516947060000, 9.174e-05, 9.183e-05, 9.131e-05, 9.131e-05, 630.17986115], [1516947120000, 9.143e-05, 9.182e-05, 9.143e-05, 9.182e-05, 135.62678899], [1516947180000, 9.182e-05, 9.182e-05, 9.182e-05, 9.182e-05, 34.4795258], [1516947300000, 9.182e-05, 9.182e-05, 9.182e-05, 9.182e-05, 49.89368521], [1516947360000, 9.145e-05, 9.145e-05, 9.145e-05, 9.145e-05, 567.96841189], [1516947420000, 9.145e-05, 9.145e-05, 9.145e-05, 9.145e-05, 10.93493712], [1516947480000, 9.145e-05, 9.183e-05, 9.145e-05, 9.183e-05, 4878.37046601], [1516947540000, 9.183e-05, 9.232e-05, 9.183e-05, 9.232e-05, 1330.32513607], [1516947600000, 9.146e-05, 9.146e-05, 9.145e-05, 9.145e-05, 10000.0], [1516947720000, 9.145e-05, 9.145e-05, 9.144e-05, 9.144e-05, 1375.71228573], [1516947780000, 9.143e-05, 9.143e-05, 9.112e-05, 9.114e-05, 2108.56515682], [1516947840000, 9.145e-05, 9.145e-05, 9.112e-05, 9.112e-05, 1018.5775862], [1516947900000, 9.112e-05, 9.131e-05, 9.112e-05, 9.131e-05, 397.05004488], [1516947960000, 9.124e-05, 9.124e-05, 9.124e-05, 9.124e-05, 851.7384], [1516948020000, 9.124e-05, 9.145e-05, 9.112e-05, 9.112e-05, 2747.04447002], [1516948080000, 9.112e-05, 9.112e-05, 9.112e-05, 9.112e-05, 1112.54015341], [1516948140000, 9.112e-05, 9.143e-05, 9.112e-05, 9.143e-05, 308.74025646], [1516948200000, 9.139e-05, 9.139e-05, 9.139e-05, 9.139e-05, 24.32759193], [1516948260000, 9.139e-05, 9.139e-05, 9.079e-05, 9.11e-05, 8557.02333208], [1516948320000, 9.11e-05, 9.138e-05, 9.11e-05, 9.138e-05, 142.96824925], [1516948380000, 9.124e-05, 9.14e-05, 9.102e-05, 9.14e-05, 1075.75462836], [1516948440000, 9.14e-05, 9.226e-05, 9.14e-05, 9.226e-05, 1128.72649863], [1516948500000, 9.14e-05, 9.227e-05, 9.14e-05, 9.227e-05, 315.92997995], [1516948560000, 9.14e-05, 9.14e-05, 9.14e-05, 9.14e-05, 157.05038778], [1516948620000, 9.092e-05, 9.14e-05, 9.092e-05, 9.095e-05, 3588.83758728], [1516948680000, 9.092e-05, 9.14e-05, 9.047e-05, 9.13e-05, 3527.83276518], [1516948740000, 9.13e-05, 9.13e-05, 9.08e-05, 9.08e-05, 2243.77018313], [1516948800000, 9.14e-05, 9.14e-05, 9.138e-05, 9.138e-05, 2614.46849155], [1516948860000, 9.127e-05, 9.127e-05, 9.127e-05, 9.127e-05, 33.05226584], [1516948980000, 9.064e-05, 9.066e-05, 9.063e-05, 9.066e-05, 1140.12496956], [1516949040000, 9.14e-05, 9.14e-05, 9.14e-05, 9.14e-05, 144.86773066], [1516949220000, 9.096e-05, 9.096e-05, 9.072e-05, 9.072e-05, 78.75530888], [1516949400000, 9.095e-05, 9.095e-05, 9.095e-05, 9.095e-05, 17.03756306], [1516949460000, 9.095e-05, 9.2e-05, 9.095e-05, 9.2e-05, 4060.31487453], [1516949520000, 9.089e-05, 9.089e-05, 9.089e-05, 9.089e-05, 367.18222085], [1516949580000, 9.108e-05, 9.108e-05, 9.108e-05, 9.108e-05, 252.3126495], [1516949640000, 9.098e-05, 9.218e-05, 9.061e-05, 9.063e-05, 4839.93728631], [1516949820000, 9.08e-05, 9.158e-05, 9.08e-05, 9.154e-05, 683.5338741], [1516950060000, 9.12e-05, 9.12e-05, 9.12e-05, 9.12e-05, 549.7725625], [1516950120000, 9.12e-05, 9.12e-05, 9.12e-05, 9.12e-05, 44.18264707], [1516950180000, 9.12e-05, 9.12e-05, 9.12e-05, 9.12e-05, 65.46647573], [1516950240000, 9.154e-05, 9.154e-05, 9.154e-05, 9.154e-05, 108.96875683], [1516950300000, 9.113e-05, 9.113e-05, 9.061e-05, 9.061e-05, 238.33469396], [1516950360000, 9.061e-05, 9.061e-05, 9.061e-05, 9.061e-05, 282.8646351], [1516950420000, 9.109e-05, 9.109e-05, 9.063e-05, 9.063e-05, 85.6003177], [1516950480000, 9.067e-05, 9.109e-05, 9.061e-05, 9.109e-05, 705.25963355], [1516950540000, 9.109e-05, 9.154e-05, 9.109e-05, 9.154e-05, 1792.45971183], [1516950600000, 9.152e-05, 9.152e-05, 9.152e-05, 9.152e-05, 292.86738526], [1516950660000, 9.075e-05, 9.075e-05, 9.075e-05, 9.075e-05, 400.0], [1516950720000, 9.075e-05, 9.154e-05, 9.075e-05, 9.154e-05, 2302.91152262], [1516950840000, 9.086e-05, 9.087e-05, 9.086e-05, 9.087e-05, 521.0], [1516950900000, 9.089e-05, 9.089e-05, 9.089e-05, 9.089e-05, 837.60310859], [1516951020000, 9.152e-05, 9.152e-05, 9.09e-05, 9.1e-05, 5531.79678641], [1516951140000, 9.089e-05, 9.1e-05, 9.089e-05, 9.1e-05, 1116.12625053], [1516951200000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 33.7077648], [1516951260000, 9.1e-05, 9.1e-05, 9.088e-05, 9.088e-05, 2358.10425092], [1516951380000, 9.079e-05, 9.079e-05, 9.061e-05, 9.061e-05, 3315.81241434], [1516951440000, 9.061e-05, 9.078e-05, 9.061e-05, 9.078e-05, 320.37980015], [1516951500000, 9.078e-05, 9.078e-05, 9.042e-05, 9.05e-05, 7841.85751331], [1516951560000, 9.052e-05, 9.052e-05, 9.042e-05, 9.052e-05, 1364.39910061], [1516951620000, 9.088e-05, 9.088e-05, 9.052e-05, 9.052e-05, 2052.67300155], [1516951680000, 9.042e-05, 9.052e-05, 9.042e-05, 9.052e-05, 792.70181846], [1516951740000, 9.052e-05, 9.052e-05, 9.035e-05, 9.052e-05, 5926.37980335], [1516951800000, 9.052e-05, 9.088e-05, 9.052e-05, 9.088e-05, 946.70595455], [1516951860000, 9.088e-05, 9.155e-05, 9.05e-05, 9.053e-05, 607.90816353], [1516951920000, 9.053e-05, 9.152e-05, 9.053e-05, 9.152e-05, 40.173951], [1516951980000, 9.053e-05, 9.186e-05, 9.038e-05, 9.186e-05, 1664.34652139], [1516952100000, 9.071e-05, 9.159e-05, 9.071e-05, 9.159e-05, 280.0], [1516952160000, 9.172e-05, 9.172e-05, 9.077e-05, 9.172e-05, 1577.5139242], [1516952220000, 9.078e-05, 9.17e-05, 9.077e-05, 9.11e-05, 2126.59330394], [1516952280000, 9.11e-05, 9.11e-05, 9.11e-05, 9.11e-05, 326.63398206], [1516952340000, 9.11e-05, 9.11e-05, 9.11e-05, 9.11e-05, 100.301003], [1516952520000, 9.082e-05, 9.082e-05, 9.082e-05, 9.082e-05, 33.25460251], [1516952580000, 9.085e-05, 9.11e-05, 9.079e-05, 9.079e-05, 489.34666424], [1516952640000, 9.081e-05, 9.081e-05, 9.081e-05, 9.081e-05, 284.05220247], [1516952700000, 9.079e-05, 9.11e-05, 9.04e-05, 9.078e-05, 1469.04044701], [1516952760000, 9.035e-05, 9.064e-05, 9.035e-05, 9.064e-05, 1671.3755233], [1516952820000, 9.064e-05, 9.145e-05, 9.064e-05, 9.145e-05, 783.57778683], [1516952880000, 9.122e-05, 9.155e-05, 9.064e-05, 9.064e-05, 435.77385836], [1516952940000, 9.148e-05, 9.148e-05, 9.148e-05, 9.148e-05, 10.0], [1516953000000, 9.148e-05, 9.148e-05, 9.148e-05, 9.148e-05, 769.61575074], [1516953060000, 9.136e-05, 9.136e-05, 9.136e-05, 9.136e-05, 4163.46205128], [1516953180000, 9.136e-05, 9.136e-05, 9.136e-05, 9.136e-05, 10.0], [1516953240000, 9.065e-05, 9.065e-05, 9.064e-05, 9.064e-05, 83.87185645], [1516953300000, 9.148e-05, 9.148e-05, 9.148e-05, 9.148e-05, 7.41843507], [1516953360000, 9.064e-05, 9.064e-05, 9.036e-05, 9.038e-05, 5369.8927594], [1516953420000, 9.039e-05, 9.039e-05, 9.03e-05, 9.031e-05, 12963.37300541], [1516953480000, 9.031e-05, 9.103e-05, 9.03e-05, 9.03e-05, 5818.79500696], [1516953540000, 9.082e-05, 9.082e-05, 9.03e-05, 9.03e-05, 26793.67463989], [1516953600000, 9.03e-05, 9.054e-05, 9.03e-05, 9.03e-05, 13617.47443744], [1516953660000, 9.054e-05, 9.054e-05, 9.03e-05, 9.054e-05, 8832.46881436], [1516953720000, 9.03e-05, 9.031e-05, 9.03e-05, 9.03e-05, 26214.22986844], [1516953780000, 9.053e-05, 9.103e-05, 9.03e-05, 9.103e-05, 1817.07246456], [1516953840000, 9.103e-05, 9.103e-05, 9.03e-05, 9.03e-05, 27182.85151742], [1516953900000, 9.03e-05, 9.05e-05, 9e-05, 9e-05, 19534.31798331], [1516953960000, 9e-05, 9.102e-05, 9e-05, 9e-05, 23961.89358441], [1516954020000, 8.999e-05, 8.999e-05, 8.925e-05, 8.945e-05, 3677.37810201], [1516954080000, 8.947e-05, 9.008e-05, 8.9e-05, 8.9e-05, 12961.29722972], [1516954140000, 9.008e-05, 9.102e-05, 8.911e-05, 9.102e-05, 9849.27481018], [1516954200000, 8.911e-05, 8.955e-05, 8.911e-05, 8.926e-05, 4014.58229631], [1516954260000, 8.926e-05, 9.078e-05, 8.918e-05, 8.918e-05, 7909.29633248], [1516954320000, 9.073e-05, 9.073e-05, 8.911e-05, 9.072e-05, 27662.40553689], [1516954380000, 8.913e-05, 9.061e-05, 8.897e-05, 9.061e-05, 12437.84963829], [1516954440000, 8.912e-05, 9.033e-05, 8.879e-05, 8.879e-05, 11386.24521565], [1516954500000, 8.897e-05, 8.897e-05, 8.879e-05, 8.897e-05, 12571.2437095], [1516954560000, 8.897e-05, 9.009e-05, 8.811e-05, 8.876e-05, 9151.43486467], [1516954620000, 8.843e-05, 8.874e-05, 8.812e-05, 8.864e-05, 8621.36860671], [1516954680000, 8.87e-05, 8.871e-05, 8.863e-05, 8.863e-05, 1429.90865677], [1516954740000, 8.863e-05, 8.863e-05, 8.829e-05, 8.863e-05, 4900.80121629], [1516954800000, 8.863e-05, 8.863e-05, 8.863e-05, 8.863e-05, 329.21729369], [1516954860000, 8.863e-05, 8.863e-05, 8.863e-05, 8.863e-05, 2215.64898136], [1516954920000, 8.863e-05, 8.863e-05, 8.835e-05, 8.835e-05, 1921.23456586], [1516954980000, 8.835e-05, 8.863e-05, 8.831e-05, 8.831e-05, 2161.75177047], [1516955040000, 8.831e-05, 8.859e-05, 8.77e-05, 8.795e-05, 18745.51524617], [1516955100000, 8.795e-05, 8.795e-05, 8.71e-05, 8.745e-05, 17069.38385235], [1516955160000, 8.795e-05, 8.795e-05, 8.713e-05, 8.779e-05, 6099.80291649], [1516955220000, 8.779e-05, 8.791e-05, 8.71e-05, 8.779e-05, 10924.83093602], [1516955280000, 8.733e-05, 8.795e-05, 8.71e-05, 8.71e-05, 14298.99510897], [1516955340000, 8.795e-05, 8.813e-05, 8.715e-05, 8.813e-05, 1773.31236851], [1516955400000, 8.809e-05, 8.813e-05, 8.724e-05, 8.724e-05, 1265.6588623], [1516955460000, 8.764e-05, 8.764e-05, 8.724e-05, 8.724e-05, 429.43086374], [1516955520000, 8.73e-05, 8.764e-05, 8.71e-05, 8.711e-05, 2562.56645453], [1516955580000, 8.711e-05, 8.764e-05, 8.681e-05, 8.757e-05, 22704.76792478], [1516955640000, 8.754e-05, 8.764e-05, 8.681e-05, 8.681e-05, 1062.97888083], [1516955700000, 8.681e-05, 8.763e-05, 8.681e-05, 8.763e-05, 4692.4617261], [1516955760000, 8.699e-05, 8.868e-05, 8.699e-05, 8.763e-05, 2181.02671088], [1516955820000, 8.763e-05, 8.858e-05, 8.668e-05, 8.85e-05, 10306.76785335], [1516955880000, 8.846e-05, 8.846e-05, 8.706e-05, 8.706e-05, 1712.68292853], [1516955940000, 8.825e-05, 8.825e-05, 8.725e-05, 8.725e-05, 2570.67919525], [1516956000000, 8.794e-05, 8.794e-05, 8.713e-05, 8.713e-05, 5093.49629504], [1516956060000, 8.713e-05, 8.843e-05, 8.706e-05, 8.706e-05, 8366.82529541], [1516956120000, 8.834e-05, 8.834e-05, 8.827e-05, 8.827e-05, 1556.93422768], [1516956180000, 8.827e-05, 8.923e-05, 8.756e-05, 8.87e-05, 5857.95082806], [1516956240000, 8.869e-05, 8.876e-05, 8.869e-05, 8.875e-05, 10376.12046468], [1516956300000, 8.87e-05, 8.87e-05, 8.76e-05, 8.761e-05, 1880.05906919], [1516956360000, 8.876e-05, 8.952e-05, 8.77e-05, 8.77e-05, 3891.69242717], [1516956420000, 8.778e-05, 8.875e-05, 8.778e-05, 8.875e-05, 803.37360065], [1516956540000, 8.875e-05, 8.875e-05, 8.875e-05, 8.875e-05, 566.12638195], [1516956600000, 8.88e-05, 8.927e-05, 8.88e-05, 8.927e-05, 127.34233916], [1516956660000, 8.927e-05, 8.952e-05, 8.927e-05, 8.927e-05, 1489.18305383], [1516956720000, 8.948e-05, 9.024e-05, 8.927e-05, 8.954e-05, 2263.06787183], [1516956780000, 8.952e-05, 8.952e-05, 8.787e-05, 8.932e-05, 6298.76656343], [1516956840000, 8.952e-05, 8.952e-05, 8.799e-05, 8.799e-05, 8190.55136944], [1516956900000, 8.933e-05, 8.933e-05, 8.933e-05, 8.933e-05, 18.78222919], [1516956960000, 8.932e-05, 8.954e-05, 8.932e-05, 8.954e-05, 390.32471094], [1516957020000, 8.954e-05, 9.021e-05, 8.954e-05, 9.021e-05, 97.87879291], [1516957080000, 9.02e-05, 9.021e-05, 8.954e-05, 9.021e-05, 1781.5849194], [1516957140000, 9.021e-05, 9.021e-05, 9.021e-05, 9.021e-05, 88.58045552], [1516957200000, 9.014e-05, 9.016e-05, 9.014e-05, 9.016e-05, 90.43374862], [1516957260000, 8.921e-05, 9.021e-05, 8.921e-05, 8.923e-05, 4121.51663617], [1516957320000, 9.014e-05, 9.02e-05, 8.923e-05, 8.924e-05, 959.18240967], [1516957380000, 9.014e-05, 9.014e-05, 8.954e-05, 9.014e-05, 753.84140295], [1516957440000, 9.014e-05, 9.014e-05, 8.955e-05, 8.955e-05, 1069.82159714], [1516957500000, 9.01e-05, 9.011e-05, 8.921e-05, 9.011e-05, 726.7848233], [1516957560000, 8.998e-05, 8.998e-05, 8.989e-05, 8.989e-05, 2541.72056149], [1516957620000, 8.959e-05, 8.959e-05, 8.959e-05, 8.959e-05, 277.0], [1516957680000, 8.957e-05, 8.957e-05, 8.935e-05, 8.935e-05, 721.24078582], [1516957740000, 8.935e-05, 8.998e-05, 8.935e-05, 8.996e-05, 1028.32712382], [1516957800000, 8.99e-05, 8.99e-05, 8.921e-05, 8.936e-05, 2116.22617647], [1516957860000, 8.921e-05, 8.921e-05, 8.921e-05, 8.921e-05, 3550.09720407], [1516957920000, 8.933e-05, 8.969e-05, 8.92e-05, 8.969e-05, 1506.43285536], [1516958100000, 8.963e-05, 8.969e-05, 8.9e-05, 8.9e-05, 2886.2261574], [1516958160000, 8.902e-05, 8.902e-05, 8.9e-05, 8.9e-05, 635.47171507], [1516958220000, 8.916e-05, 8.917e-05, 8.902e-05, 8.915e-05, 6944.88631361], [1516958280000, 8.915e-05, 8.915e-05, 8.9e-05, 8.913e-05, 3281.29617481], [1516958340000, 8.913e-05, 8.913e-05, 8.9e-05, 8.913e-05, 3983.51093655], [1516958400000, 8.9e-05, 8.913e-05, 8.88e-05, 8.88e-05, 8773.82868022], [1516958460000, 8.915e-05, 8.915e-05, 8.871e-05, 8.871e-05, 463.05525249], [1516958520000, 8.871e-05, 8.871e-05, 8.871e-05, 8.871e-05, 8.15084749], [1516958580000, 8.871e-05, 8.871e-05, 8.815e-05, 8.815e-05, 796.00995928], [1516958640000, 8.815e-05, 8.815e-05, 8.815e-05, 8.815e-05, 309.98755046], [1516958700000, 8.898e-05, 8.898e-05, 8.895e-05, 8.895e-05, 140.00616056], [1516958760000, 8.894e-05, 8.894e-05, 8.809e-05, 8.809e-05, 211.24353496], [1516958820000, 8.808e-05, 8.808e-05, 8.8e-05, 8.8e-05, 9036.32016138], [1516958880000, 8.954e-05, 8.954e-05, 8.951e-05, 8.951e-05, 96.84026788], [1516958940000, 8.819e-05, 8.819e-05, 8.801e-05, 8.801e-05, 765.25863723], [1516959000000, 8.921e-05, 8.921e-05, 8.801e-05, 8.801e-05, 707.98749841], [1516959060000, 8.802e-05, 8.895e-05, 8.802e-05, 8.895e-05, 1510.26567335], [1516959120000, 8.804e-05, 8.804e-05, 8.801e-05, 8.803e-05, 3915.0], [1516959180000, 8.884e-05, 8.884e-05, 8.8e-05, 8.8e-05, 212.52391133], [1516959240000, 8.803e-05, 8.803e-05, 8.803e-05, 8.803e-05, 275.0], [1516959300000, 8.803e-05, 8.803e-05, 8.803e-05, 8.803e-05, 150.0], [1516959360000, 8.849e-05, 8.849e-05, 8.849e-05, 8.849e-05, 54.16300299], [1516959420000, 8.849e-05, 8.85e-05, 8.801e-05, 8.801e-05, 2759.74434103], [1516959540000, 8.85e-05, 8.921e-05, 8.8e-05, 8.8e-05, 2196.00475233], [1516959600000, 8.804e-05, 8.966e-05, 8.802e-05, 8.966e-05, 1194.28209909], [1516959660000, 8.952e-05, 8.952e-05, 8.812e-05, 8.812e-05, 315.13306804], [1516959720000, 8.804e-05, 8.804e-05, 8.803e-05, 8.803e-05, 223.2734253], [1516959780000, 8.812e-05, 8.812e-05, 8.8e-05, 8.8e-05, 5932.72695479], [1516959840000, 8.8e-05, 8.9e-05, 8.8e-05, 8.8e-05, 5290.36355552], [1516959900000, 8.865e-05, 8.865e-05, 8.8e-05, 8.8e-05, 9621.25829166], [1516959960000, 8.8e-05, 8.81e-05, 8.8e-05, 8.8e-05, 4699.23472042], [1516960020000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 867.7836816], [1516960080000, 8.862e-05, 8.862e-05, 8.862e-05, 8.862e-05, 5015.00100299], [1516960140000, 8.802e-05, 8.802e-05, 8.76e-05, 8.76e-05, 14074.7315464], [1516960200000, 8.76e-05, 8.76e-05, 8.669e-05, 8.757e-05, 6061.60669328], [1516960260000, 8.757e-05, 8.831e-05, 8.65e-05, 8.65e-05, 33357.48405693], [1516960320000, 8.672e-05, 8.795e-05, 8.672e-05, 8.794e-05, 342.08425154], [1516960380000, 8.699e-05, 8.79e-05, 8.667e-05, 8.79e-05, 3091.37760126], [1516960440000, 8.699e-05, 8.833e-05, 8.65e-05, 8.721e-05, 6051.66827287], [1516960500000, 8.654e-05, 8.719e-05, 8.65e-05, 8.695e-05, 1577.11898659], [1516960560000, 8.691e-05, 8.691e-05, 8.64e-05, 8.64e-05, 10111.19603918], [1516960620000, 8.625e-05, 8.694e-05, 8.586e-05, 8.586e-05, 16379.00057368], [1516960680000, 8.575e-05, 8.666e-05, 8.52e-05, 8.642e-05, 12350.73873088], [1516960740000, 8.64e-05, 8.665e-05, 8.64e-05, 8.642e-05, 5591.52234513], [1516960800000, 8.642e-05, 8.814e-05, 8.632e-05, 8.722e-05, 2014.97371133], [1516960860000, 8.646e-05, 8.764e-05, 8.646e-05, 8.764e-05, 1302.46586004], [1516960920000, 8.764e-05, 8.77e-05, 8.764e-05, 8.77e-05, 97.52234624], [1516960980000, 8.77e-05, 8.779e-05, 8.77e-05, 8.779e-05, 391.25968157], [1516961040000, 8.777e-05, 8.777e-05, 8.777e-05, 8.777e-05, 221.37129447], [1516961100000, 8.777e-05, 8.817e-05, 8.688e-05, 8.817e-05, 2066.79301411], [1516961160000, 8.817e-05, 8.849e-05, 8.817e-05, 8.841e-05, 1322.00973778], [1516961220000, 8.717e-05, 8.83e-05, 8.717e-05, 8.83e-05, 588.21436998], [1516961340000, 8.818e-05, 8.818e-05, 8.818e-05, 8.818e-05, 79.80374779], [1516961400000, 8.814e-05, 8.817e-05, 8.805e-05, 8.805e-05, 938.02574762], [1516961460000, 8.785e-05, 8.785e-05, 8.695e-05, 8.695e-05, 1221.69015314], [1516961520000, 8.695e-05, 8.75e-05, 8.613e-05, 8.75e-05, 6508.99745301], [1516961580000, 8.75e-05, 8.75e-05, 8.75e-05, 8.75e-05, 339.02652142], [1516961700000, 8.749e-05, 8.75e-05, 8.72e-05, 8.72e-05, 2448.92704431], [1516961760000, 8.709e-05, 8.75e-05, 8.7e-05, 8.712e-05, 649.01758883], [1516961820000, 8.75e-05, 8.75e-05, 8.75e-05, 8.75e-05, 80.32376758], [1516961880000, 8.75e-05, 8.75e-05, 8.713e-05, 8.713e-05, 2234.36538142], [1516961940000, 8.84e-05, 8.84e-05, 8.84e-05, 8.84e-05, 240.46750465], [1516962000000, 8.721e-05, 8.721e-05, 8.721e-05, 8.721e-05, 50.0], [1516962060000, 8.727e-05, 8.727e-05, 8.727e-05, 8.727e-05, 456.0], [1516962120000, 8.828e-05, 8.828e-05, 8.825e-05, 8.825e-05, 135.9430671], [1516962180000, 8.823e-05, 8.823e-05, 8.8e-05, 8.8e-05, 100.06359236], [1516962240000, 8.8e-05, 8.819e-05, 8.721e-05, 8.817e-05, 1665.62444252], [1516962300000, 8.721e-05, 8.721e-05, 8.687e-05, 8.687e-05, 2043.5750295], [1516962360000, 8.826e-05, 8.84e-05, 8.707e-05, 8.817e-05, 2673.39840076], [1516962420000, 8.716e-05, 8.817e-05, 8.715e-05, 8.817e-05, 2020.0584474], [1516962480000, 8.817e-05, 8.817e-05, 8.81e-05, 8.81e-05, 230.42574095], [1516962540000, 8.812e-05, 8.812e-05, 8.81e-05, 8.81e-05, 240.58893394], [1516962600000, 8.809e-05, 8.809e-05, 8.733e-05, 8.733e-05, 265.71525179], [1516962720000, 8.74e-05, 8.809e-05, 8.736e-05, 8.809e-05, 1585.24318026], [1516962780000, 8.809e-05, 8.809e-05, 8.75e-05, 8.809e-05, 223.99844845], [1516962960000, 8.809e-05, 8.809e-05, 8.8e-05, 8.808e-05, 611.47693796], [1516963020000, 8.808e-05, 8.808e-05, 8.808e-05, 8.808e-05, 390.82839622], [1516963080000, 8.808e-05, 8.808e-05, 8.752e-05, 8.752e-05, 4162.3144901], [1516963140000, 8.808e-05, 8.808e-05, 8.8e-05, 8.8e-05, 51.68803526], [1516963200000, 8.8e-05, 8.808e-05, 8.8e-05, 8.808e-05, 397.94739331], [1516963260000, 8.809e-05, 8.809e-05, 8.809e-05, 8.809e-05, 11.87776697], [1516963320000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 1393.94341267], [1516963380000, 8.799e-05, 8.799e-05, 8.762e-05, 8.762e-05, 1781.44919974], [1516963440000, 8.761e-05, 8.796e-05, 8.761e-05, 8.796e-05, 748.43710256], [1516963680000, 8.79e-05, 8.799e-05, 8.79e-05, 8.799e-05, 3435.01908742], [1516963740000, 8.796e-05, 8.799e-05, 8.75e-05, 8.75e-05, 10405.00277667], [1516963800000, 8.75e-05, 8.799e-05, 8.75e-05, 8.799e-05, 241.43185149], [1516963860000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 80.88375741], [1516963920000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 295.90557386], [1516963980000, 8.799e-05, 8.799e-05, 8.756e-05, 8.799e-05, 221.57859909], [1516964040000, 8.799e-05, 8.8e-05, 8.799e-05, 8.8e-05, 905.72075215], [1516964100000, 8.799e-05, 8.816e-05, 8.799e-05, 8.816e-05, 11413.04055972], [1516964160000, 8.816e-05, 8.83e-05, 8.816e-05, 8.816e-05, 1938.95213175], [1516964220000, 8.83e-05, 8.915e-05, 8.83e-05, 8.841e-05, 1507.27777979], [1516964280000, 8.87e-05, 8.915e-05, 8.87e-05, 8.9e-05, 1656.97776937], [1516964340000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 1156.3253882], [1516964400000, 8.9e-05, 8.9e-05, 8.819e-05, 8.819e-05, 799.59424298], [1516964460000, 8.9e-05, 8.9e-05, 8.816e-05, 8.816e-05, 2904.0269322], [1516964520000, 8.89e-05, 8.89e-05, 8.816e-05, 8.816e-05, 2346.10215425], [1516964580000, 8.89e-05, 8.89e-05, 8.888e-05, 8.89e-05, 2270.43399516], [1516964640000, 8.888e-05, 8.888e-05, 8.888e-05, 8.888e-05, 43.20977413], [1516964700000, 8.88e-05, 8.88e-05, 8.88e-05, 8.88e-05, 214.94808539], [1516964940000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 56.22886133], [1516965000000, 8.816e-05, 8.87e-05, 8.79e-05, 8.87e-05, 1767.24676531], [1516965060000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 68.60439898], [1516965120000, 8.87e-05, 8.87e-05, 8.701e-05, 8.71e-05, 5467.77580443], [1516965180000, 8.857e-05, 8.864e-05, 8.857e-05, 8.857e-05, 2794.8778997], [1516965240000, 8.87e-05, 8.915e-05, 8.87e-05, 8.915e-05, 2839.72482041], [1516965300000, 8.937e-05, 8.937e-05, 8.763e-05, 8.92e-05, 4043.97663393], [1516965360000, 8.937e-05, 8.98e-05, 8.937e-05, 8.98e-05, 542.04600299], [1516965420000, 8.936e-05, 8.936e-05, 8.92e-05, 8.936e-05, 720.32350517], [1516965480000, 8.936e-05, 8.98e-05, 8.936e-05, 8.98e-05, 5731.71506706], [1516965540000, 8.979e-05, 8.98e-05, 8.979e-05, 8.98e-05, 567.45458044], [1516965600000, 8.977e-05, 8.977e-05, 8.977e-05, 8.977e-05, 500.0], [1516965660000, 8.936e-05, 8.977e-05, 8.92e-05, 8.92e-05, 480.34098383], [1516965840000, 8.92e-05, 9.016e-05, 8.92e-05, 8.92e-05, 2120.04571556], [1516965900000, 8.819e-05, 9.013e-05, 8.819e-05, 9.013e-05, 695.79649634], [1516966080000, 9.004e-05, 9.004e-05, 9.004e-05, 9.004e-05, 39.09331308], [1516966140000, 9.002e-05, 9.002e-05, 8.864e-05, 8.864e-05, 3068.30769001], [1516966200000, 8.87e-05, 8.87e-05, 8.862e-05, 8.864e-05, 2107.01467765], [1516966260000, 8.863e-05, 8.864e-05, 8.863e-05, 8.864e-05, 1692.57773281], [1516966320000, 8.805e-05, 8.863e-05, 8.805e-05, 8.863e-05, 75.88186787], [1516966500000, 8.864e-05, 8.864e-05, 8.864e-05, 8.864e-05, 18.05600598], [1516966560000, 8.805e-05, 8.864e-05, 8.805e-05, 8.864e-05, 2660.68071362], [1516966680000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 127.70301076], [1516966740000, 8.86e-05, 8.86e-05, 8.704e-05, 8.704e-05, 2484.51179379], [1516966800000, 8.858e-05, 8.858e-05, 8.858e-05, 8.858e-05, 99.9], [1516966860000, 8.748e-05, 8.856e-05, 8.748e-05, 8.856e-05, 643.17495693], [1516966920000, 8.856e-05, 8.86e-05, 8.8e-05, 8.8e-05, 395.65748312], [1516966980000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 133.5025225], [1516967040000, 8.8e-05, 8.86e-05, 8.8e-05, 8.86e-05, 1865.41071612], [1516967100000, 8.86e-05, 8.86e-05, 8.79e-05, 8.79e-05, 205.86924386], [1516967160000, 8.86e-05, 8.86e-05, 8.693e-05, 8.693e-05, 7396.19720347], [1516967220000, 8.699e-05, 8.854e-05, 8.699e-05, 8.854e-05, 1086.38995472], [1516967280000, 8.84e-05, 8.858e-05, 8.84e-05, 8.858e-05, 1041.615292], [1516967400000, 8.77e-05, 8.77e-05, 8.715e-05, 8.715e-05, 600.48259853], [1516967460000, 8.787e-05, 8.787e-05, 8.787e-05, 8.787e-05, 200.0], [1516967520000, 8.787e-05, 8.787e-05, 8.787e-05, 8.787e-05, 41.38237954], [1516967580000, 8.8e-05, 8.826e-05, 8.787e-05, 8.826e-05, 2200.88425935], [1516967640000, 8.826e-05, 8.827e-05, 8.826e-05, 8.827e-05, 795.70750978], [1516967700000, 8.827e-05, 8.827e-05, 8.827e-05, 8.827e-05, 1377.17582711], [1516967760000, 8.827e-05, 8.827e-05, 8.827e-05, 8.827e-05, 333.45802339], [1516967820000, 8.827e-05, 8.827e-05, 8.798e-05, 8.827e-05, 9227.74365866], [1516967880000, 8.826e-05, 8.826e-05, 8.826e-05, 8.826e-05, 81.3613977], [1516967940000, 8.826e-05, 8.826e-05, 8.762e-05, 8.762e-05, 1151.80189782], [1516968000000, 8.762e-05, 8.826e-05, 8.762e-05, 8.826e-05, 853.50727105], [1516968060000, 8.826e-05, 8.826e-05, 8.826e-05, 8.826e-05, 40.0], [1516968120000, 8.826e-05, 8.826e-05, 8.8e-05, 8.826e-05, 838.89196562], [1516968180000, 8.826e-05, 8.826e-05, 8.826e-05, 8.826e-05, 11.50552676], [1516968240000, 8.826e-05, 8.826e-05, 8.801e-05, 8.826e-05, 612.97278928], [1516968300000, 8.826e-05, 8.826e-05, 8.826e-05, 8.826e-05, 7.9932896], [1516968360000, 8.825e-05, 8.826e-05, 8.825e-05, 8.826e-05, 48.97878334], [1516968420000, 8.801e-05, 8.801e-05, 8.8e-05, 8.8e-05, 432.66653891], [1516968480000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 56.53911451], [1516968540000, 8.826e-05, 8.826e-05, 8.826e-05, 8.826e-05, 2480.3151691], [1516968600000, 8.8e-05, 8.826e-05, 8.8e-05, 8.826e-05, 2534.59541299], [1516968660000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 119.97755792], [1516968720000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 1015.10833666], [1516968780000, 8.8e-05, 8.8e-05, 8.799e-05, 8.8e-05, 2357.74526386], [1516968840000, 8.8e-05, 8.8e-05, 8.791e-05, 8.791e-05, 52.5469936], [1516968900000, 8.763e-05, 8.791e-05, 8.763e-05, 8.791e-05, 459.65434236], [1516968960000, 8.791e-05, 8.791e-05, 8.791e-05, 8.791e-05, 408.65439814], [1516969020000, 8.791e-05, 8.791e-05, 8.791e-05, 8.791e-05, 80.42449724], [1516969080000, 8.789e-05, 8.789e-05, 8.789e-05, 8.789e-05, 460.94068114], [1516969200000, 8.766e-05, 8.766e-05, 8.766e-05, 8.766e-05, 28.03677287], [1516969500000, 8.79e-05, 8.8e-05, 8.79e-05, 8.8e-05, 197.1985458], [1516969560000, 8.798e-05, 8.8e-05, 8.768e-05, 8.8e-05, 11580.85300858], [1516969620000, 8.8e-05, 8.8e-05, 8.766e-05, 8.766e-05, 1253.87793143], [1516969680000, 8.8e-05, 8.8e-05, 8.766e-05, 8.8e-05, 5743.3326579], [1516969740000, 8.799e-05, 8.8e-05, 8.799e-05, 8.8e-05, 398.00023295], [1516969800000, 8.8e-05, 8.8e-05, 8.75e-05, 8.75e-05, 1946.89072455], [1516969860000, 8.799e-05, 8.799e-05, 8.798e-05, 8.798e-05, 1209.34359918], [1516969920000, 8.799e-05, 8.8e-05, 8.799e-05, 8.8e-05, 4442.3426926], [1516969980000, 8.8e-05, 8.8e-05, 8.798e-05, 8.798e-05, 3603.52549013], [1516970040000, 8.8e-05, 8.8e-05, 8.798e-05, 8.798e-05, 2542.06125305], [1516970100000, 8.798e-05, 8.8e-05, 8.797e-05, 8.8e-05, 9584.06223084], [1516970160000, 8.808e-05, 8.808e-05, 8.808e-05, 8.808e-05, 600.0], [1516970220000, 8.825e-05, 8.825e-05, 8.808e-05, 8.808e-05, 442.78275211], [1516970280000, 8.802e-05, 8.802e-05, 8.802e-05, 8.802e-05, 189.58281841], [1516970460000, 8.808e-05, 8.825e-05, 8.808e-05, 8.825e-05, 162.26222872], [1516970520000, 8.812e-05, 8.812e-05, 8.812e-05, 8.812e-05, 56.98085537], [1516970580000, 8.813e-05, 8.813e-05, 8.8e-05, 8.8e-05, 29177.49311358], [1516970760000, 8.853e-05, 8.853e-05, 8.853e-05, 8.853e-05, 32.09700299], [1516970820000, 8.853e-05, 8.86e-05, 8.853e-05, 8.86e-05, 272.64799224], [1516970880000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 230.74440286], [1516971000000, 8.86e-05, 8.867e-05, 8.86e-05, 8.867e-05, 41.53569647], [1516971060000, 8.867e-05, 8.889e-05, 8.804e-05, 8.889e-05, 450.23310492], [1516971120000, 8.889e-05, 8.89e-05, 8.804e-05, 8.804e-05, 835.65327692], [1516971180000, 8.893e-05, 8.893e-05, 8.889e-05, 8.889e-05, 137.99391448], [1516971240000, 8.881e-05, 8.892e-05, 8.881e-05, 8.892e-05, 2766.22109978], [1516971300000, 8.89e-05, 8.891e-05, 8.804e-05, 8.891e-05, 5216.74626617], [1516971360000, 8.889e-05, 8.889e-05, 8.811e-05, 8.811e-05, 1088.60044437], [1516971480000, 8.889e-05, 8.889e-05, 8.889e-05, 8.889e-05, 78.29518015], [1516971540000, 8.878e-05, 8.878e-05, 8.878e-05, 8.878e-05, 244.24831772], [1516971600000, 8.81e-05, 8.868e-05, 8.8e-05, 8.868e-05, 4338.77116278], [1516971660000, 8.868e-05, 8.868e-05, 8.8e-05, 8.86e-05, 698.0], [1516971720000, 8.858e-05, 8.86e-05, 8.8e-05, 8.8e-05, 5811.95424273], [1516971780000, 8.86e-05, 8.87e-05, 8.86e-05, 8.86e-05, 750.43995547], [1516971900000, 8.825e-05, 8.86e-05, 8.825e-05, 8.86e-05, 323.23252742], [1516972020000, 8.86e-05, 9.015e-05, 8.86e-05, 9.015e-05, 2539.39968463], [1516972080000, 8.864e-05, 8.864e-05, 8.805e-05, 8.805e-05, 902.40804184], [1516972140000, 8.963e-05, 8.964e-05, 8.963e-05, 8.964e-05, 55.3376963], [1516972200000, 8.957e-05, 8.957e-05, 8.817e-05, 8.957e-05, 1130.49843773], [1516972260000, 8.827e-05, 8.827e-05, 8.827e-05, 8.827e-05, 1000.0], [1516972320000, 8.945e-05, 8.945e-05, 8.945e-05, 8.945e-05, 360.65244293], [1516972380000, 8.866e-05, 8.97e-05, 8.866e-05, 8.97e-05, 112.62684412], [1516972440000, 8.97e-05, 8.971e-05, 8.945e-05, 8.945e-05, 6798.27682322], [1516972500000, 8.945e-05, 8.945e-05, 8.945e-05, 8.945e-05, 223.02962549], [1516972560000, 8.968e-05, 8.968e-05, 8.857e-05, 8.857e-05, 869.72965927], [1516972620000, 8.857e-05, 8.857e-05, 8.857e-05, 8.857e-05, 375.94636597], [1516972680000, 8.965e-05, 8.974e-05, 8.96e-05, 8.974e-05, 974.91900899], [1516972740000, 8.963e-05, 8.972e-05, 8.963e-05, 8.972e-05, 142.89745672], [1516972800000, 8.971e-05, 8.972e-05, 8.863e-05, 8.87e-05, 6325.14293726], [1516972860000, 8.871e-05, 8.964e-05, 8.855e-05, 8.863e-05, 3870.68151028], [1516972920000, 8.865e-05, 8.865e-05, 8.854e-05, 8.854e-05, 1000.0], [1516973040000, 8.953e-05, 8.953e-05, 8.953e-05, 8.953e-05, 7.75212027], [1516973100000, 8.855e-05, 8.855e-05, 8.854e-05, 8.854e-05, 1000.0], [1516973160000, 8.857e-05, 8.946e-05, 8.75e-05, 8.759e-05, 6143.3254828], [1516973220000, 8.93e-05, 8.93e-05, 8.93e-05, 8.93e-05, 8.0], [1516973280000, 8.916e-05, 8.919e-05, 8.915e-05, 8.915e-05, 2051.6122437], [1516973340000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 68.0], [1516973460000, 8.877e-05, 8.877e-05, 8.877e-05, 8.877e-05, 193.26845901], [1516973520000, 8.847e-05, 8.847e-05, 8.755e-05, 8.755e-05, 4000.0], [1516973580000, 8.877e-05, 8.877e-05, 8.877e-05, 8.877e-05, 52.12136955], [1516973640000, 8.759e-05, 8.857e-05, 8.704e-05, 8.857e-05, 4355.79870122], [1516973700000, 8.76e-05, 8.845e-05, 8.76e-05, 8.845e-05, 606.15088266], [1516973760000, 8.76e-05, 8.854e-05, 8.76e-05, 8.846e-05, 868.35695816], [1516973820000, 8.846e-05, 8.856e-05, 8.846e-05, 8.856e-05, 365.37185416], [1516973880000, 8.856e-05, 8.856e-05, 8.856e-05, 8.856e-05, 224.73255318], [1516973940000, 8.856e-05, 8.856e-05, 8.854e-05, 8.855e-05, 1172.61264078], [1516974000000, 8.852e-05, 8.852e-05, 8.852e-05, 8.852e-05, 67.61183913], [1516974060000, 8.848e-05, 8.849e-05, 8.848e-05, 8.848e-05, 561.60024502], [1516974120000, 8.851e-05, 8.851e-05, 8.85e-05, 8.85e-05, 1137.37341772], [1516974180000, 8.798e-05, 8.798e-05, 8.798e-05, 8.798e-05, 1532.98089218], [1516974240000, 8.798e-05, 8.798e-05, 8.798e-05, 8.798e-05, 2067.13766797], [1516974420000, 8.851e-05, 8.851e-05, 8.849e-05, 8.849e-05, 166.1692], [1516974480000, 8.849e-05, 8.851e-05, 8.849e-05, 8.851e-05, 956.29370806], [1516974540000, 8.852e-05, 8.852e-05, 8.852e-05, 8.852e-05, 358.39310027], [1516974600000, 8.852e-05, 8.86e-05, 8.852e-05, 8.86e-05, 1839.25395244], [1516974660000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 4000.0], [1516974720000, 8.849e-05, 8.91e-05, 8.825e-05, 8.91e-05, 477.38479424], [1516974780000, 8.91e-05, 8.91e-05, 8.91e-05, 8.91e-05, 146.25533081], [1516974840000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 638.38], [1516974900000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 1943.2327305], [1516974960000, 8.91e-05, 8.91e-05, 8.91e-05, 8.91e-05, 37.20238094], [1516975020000, 8.887e-05, 8.91e-05, 8.887e-05, 8.91e-05, 154.36944764], [1516975080000, 8.91e-05, 8.91e-05, 8.91e-05, 8.91e-05, 7.05090749], [1516975140000, 8.91e-05, 8.91e-05, 8.887e-05, 8.91e-05, 254.54681138], [1516975200000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 508.49977057], [1516975260000, 8.886e-05, 8.886e-05, 8.886e-05, 8.886e-05, 15.9952319], [1516975380000, 8.85e-05, 8.85e-05, 8.799e-05, 8.799e-05, 2144.63197376], [1516975440000, 8.902e-05, 8.902e-05, 8.901e-05, 8.901e-05, 590.62983698], [1516975500000, 8.897e-05, 8.897e-05, 8.897e-05, 8.897e-05, 310.55864997], [1516975560000, 8.896e-05, 8.896e-05, 8.895e-05, 8.896e-05, 784.60678082], [1516975620000, 8.801e-05, 8.896e-05, 8.799e-05, 8.896e-05, 2091.59722636], [1516975680000, 8.896e-05, 8.896e-05, 8.799e-05, 8.799e-05, 46.32905005], [1516975800000, 8.896e-05, 8.896e-05, 8.896e-05, 8.896e-05, 780.2118077], [1516975860000, 8.896e-05, 8.896e-05, 8.892e-05, 8.892e-05, 448.57647668], [1516975920000, 8.891e-05, 8.891e-05, 8.891e-05, 8.891e-05, 478.39218666], [1516975980000, 8.811e-05, 8.889e-05, 8.811e-05, 8.889e-05, 1595.31627621], [1516976040000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 20.83333332], [1516976160000, 8.813e-05, 8.87e-05, 8.813e-05, 8.87e-05, 410.55816413], [1516976220000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 550.75100299], [1516976280000, 8.817e-05, 8.817e-05, 8.816e-05, 8.816e-05, 970.71421125], [1516976340000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 440.84304103], [1516976400000, 8.893e-05, 8.893e-05, 8.893e-05, 8.893e-05, 80.0], [1516976460000, 8.901e-05, 8.901e-05, 8.901e-05, 8.901e-05, 211.10475132], [1516976580000, 8.901e-05, 8.91e-05, 8.816e-05, 8.91e-05, 11567.79373256], [1516976700000, 8.901e-05, 8.902e-05, 8.901e-05, 8.902e-05, 77.75571363], [1516976760000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 336.16041339], [1516976940000, 8.899e-05, 8.899e-05, 8.899e-05, 8.899e-05, 77.77319792], [1516977000000, 8.816e-05, 8.91e-05, 8.816e-05, 8.91e-05, 1340.79840491], [1516977060000, 8.91e-05, 8.926e-05, 8.91e-05, 8.926e-05, 155.54539285], [1516977120000, 8.926e-05, 8.95e-05, 8.92e-05, 8.95e-05, 2400.87119382], [1516977180000, 8.95e-05, 9.007e-05, 8.92e-05, 8.95e-05, 20624.41058051], [1516977240000, 9.006e-05, 9.006e-05, 9.006e-05, 9.006e-05, 76.22900299], [1516977300000, 9.004e-05, 9.005e-05, 9.004e-05, 9.005e-05, 382.71773651], [1516977360000, 9.004e-05, 9.004e-05, 9.004e-05, 9.004e-05, 53.52488089], [1516977420000, 8.95e-05, 8.95e-05, 8.8e-05, 8.801e-05, 3393.18579068], [1516977480000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 178.57142857], [1516977540000, 8.976e-05, 9.017e-05, 8.976e-05, 9.015e-05, 1070.7913935], [1516977660000, 9.017e-05, 9.017e-05, 8.973e-05, 8.973e-05, 369.78062685], [1516977780000, 8.973e-05, 8.973e-05, 8.973e-05, 8.973e-05, 508.7027879], [1516977840000, 8.973e-05, 8.973e-05, 8.973e-05, 8.973e-05, 102.0860318], [1516977900000, 8.973e-05, 8.973e-05, 8.9e-05, 8.92e-05, 4637.82284343], [1516977960000, 8.92e-05, 8.92e-05, 8.85e-05, 8.85e-05, 800.35424976], [1516978080000, 9e-05, 9e-05, 9e-05, 9e-05, 377.39536955], [1516978140000, 8.916e-05, 8.916e-05, 8.916e-05, 8.916e-05, 10.0], [1516978200000, 9.017e-05, 9.021e-05, 9.017e-05, 9.019e-05, 2348.09301611], [1516978260000, 9.019e-05, 9.021e-05, 9.019e-05, 9.021e-05, 260.34736644], [1516978320000, 9.019e-05, 9.021e-05, 8.902e-05, 8.902e-05, 3790.89448626], [1516978380000, 8.923e-05, 8.923e-05, 8.923e-05, 8.923e-05, 25.0], [1516978440000, 9.02e-05, 9.02e-05, 9.02e-05, 9.02e-05, 20.24667686], [1516978500000, 8.926e-05, 8.926e-05, 8.926e-05, 8.926e-05, 131.81866587], [1516978560000, 9.018e-05, 9.018e-05, 9.018e-05, 9.018e-05, 12.0], [1516978680000, 9.017e-05, 9.017e-05, 9.017e-05, 9.017e-05, 112.70029717], [1516978740000, 9.017e-05, 9.017e-05, 9.017e-05, 9.017e-05, 98.11109987], [1516978800000, 8.95e-05, 9.017e-05, 8.95e-05, 9.017e-05, 293.0154943], [1516978980000, 8.952e-05, 8.952e-05, 8.887e-05, 8.925e-05, 1092.73064605], [1516979040000, 8.887e-05, 8.969e-05, 8.887e-05, 8.887e-05, 1896.63104492], [1516979100000, 8.916e-05, 8.966e-05, 8.914e-05, 8.957e-05, 1366.76020503], [1516979160000, 8.957e-05, 8.958e-05, 8.914e-05, 8.958e-05, 2322.526324], [1516979220000, 8.952e-05, 8.952e-05, 8.949e-05, 8.949e-05, 60.0], [1516979280000, 8.949e-05, 8.949e-05, 8.889e-05, 8.943e-05, 1793.77821886], [1516979340000, 8.943e-05, 8.985e-05, 8.943e-05, 8.985e-05, 644.34130047], [1516979400000, 8.888e-05, 8.888e-05, 8.888e-05, 8.888e-05, 474.37797761], [1516979460000, 8.935e-05, 8.935e-05, 8.889e-05, 8.935e-05, 3991.36654426], [1516979520000, 8.95e-05, 8.982e-05, 8.888e-05, 8.949e-05, 4582.00344985], [1516979580000, 8.949e-05, 8.95e-05, 8.945e-05, 8.95e-05, 428.81479254], [1516979640000, 8.95e-05, 9.017e-05, 8.95e-05, 9.017e-05, 523.0], [1516979700000, 8.98e-05, 8.98e-05, 8.945e-05, 8.95e-05, 1068.67941649], [1516979760000, 8.95e-05, 8.95e-05, 8.885e-05, 8.886e-05, 3032.66438303], [1516979820000, 9.016e-05, 9.017e-05, 9.015e-05, 9.016e-05, 4269.4048237], [1516979880000, 9.016e-05, 9.017e-05, 8.902e-05, 9.017e-05, 3200.61157865], [1516979940000, 8.902e-05, 8.902e-05, 8.902e-05, 8.902e-05, 113.30759051], [1516980000000, 8.901e-05, 8.998e-05, 8.901e-05, 8.915e-05, 448.30764953], [1516980060000, 8.902e-05, 8.997e-05, 8.901e-05, 8.93e-05, 1566.22291016], [1516980120000, 8.929e-05, 8.929e-05, 8.901e-05, 8.929e-05, 1816.60403986], [1516980180000, 8.929e-05, 8.929e-05, 8.929e-05, 8.929e-05, 592.76317281], [1516980240000, 8.929e-05, 8.929e-05, 8.929e-05, 8.929e-05, 135.0], [1516980300000, 8.929e-05, 8.929e-05, 8.929e-05, 8.929e-05, 58.64369563], [1516980360000, 8.929e-05, 8.929e-05, 8.887e-05, 8.887e-05, 500.0], [1516980420000, 8.892e-05, 8.892e-05, 8.892e-05, 8.892e-05, 50.14143065], [1516980480000, 8.893e-05, 8.896e-05, 8.893e-05, 8.893e-05, 2000.0], [1516980540000, 8.989e-05, 8.989e-05, 8.988e-05, 8.988e-05, 631.38253079], [1516980600000, 8.905e-05, 8.905e-05, 8.894e-05, 8.894e-05, 1000.0], [1516980660000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 548.0], [1516980720000, 8.92e-05, 8.989e-05, 8.894e-05, 8.92e-05, 2417.99846306], [1516980780000, 8.989e-05, 8.989e-05, 8.987e-05, 8.987e-05, 220.49482149], [1516980840000, 8.986e-05, 8.987e-05, 8.892e-05, 8.892e-05, 1089.42704596], [1516980900000, 8.892e-05, 8.987e-05, 8.892e-05, 8.987e-05, 8410.49837509], [1516980960000, 8.987e-05, 8.987e-05, 8.987e-05, 8.987e-05, 1033.84803839], [1516981020000, 8.987e-05, 9.023e-05, 8.987e-05, 9.023e-05, 3988.12020506], [1516981080000, 9.023e-05, 9.099e-05, 9.023e-05, 9.099e-05, 3972.21987681], [1516981140000, 9.098e-05, 9.098e-05, 8.939e-05, 8.939e-05, 571.13926281], [1516981260000, 9.089e-05, 9.154e-05, 9.056e-05, 9.089e-05, 4114.24559757], [1516981320000, 9.014e-05, 9.088e-05, 9.004e-05, 9.088e-05, 6410.10572664], [1516981380000, 9.016e-05, 9.088e-05, 9e-05, 9e-05, 3627.70698733], [1516981440000, 9e-05, 9.148e-05, 8.988e-05, 8.988e-05, 4643.34311958], [1516981560000, 8.961e-05, 9.148e-05, 8.891e-05, 9.148e-05, 20288.9379475], [1516981620000, 8.972e-05, 8.972e-05, 8.892e-05, 8.969e-05, 1584.63016383], [1516981680000, 8.974e-05, 9.098e-05, 8.971e-05, 8.971e-05, 13277.90691818], [1516981740000, 9e-05, 9e-05, 9e-05, 9e-05, 5114.81440196], [1516981860000, 8.971e-05, 8.971e-05, 8.891e-05, 8.891e-05, 13790.27258695], [1516981920000, 8.893e-05, 9.015e-05, 8.893e-05, 9.015e-05, 1639.05918737], [1516982040000, 8.988e-05, 8.988e-05, 8.988e-05, 8.988e-05, 97.65399251], [1516982100000, 8.978e-05, 8.978e-05, 8.967e-05, 8.97e-05, 6259.68807507], [1516982160000, 9e-05, 9e-05, 9e-05, 9e-05, 2001.27626342], [1516982220000, 9e-05, 9.074e-05, 8.967e-05, 8.967e-05, 9187.26433526], [1516982280000, 8.967e-05, 8.967e-05, 8.967e-05, 8.967e-05, 2407.79138698], [1516982340000, 8.965e-05, 8.965e-05, 8.95e-05, 8.95e-05, 6073.52396841], [1516982400000, 8.95e-05, 8.967e-05, 8.95e-05, 8.967e-05, 2201.43714772], [1516982460000, 8.951e-05, 8.967e-05, 8.951e-05, 8.967e-05, 3195.6151987], [1516982580000, 9e-05, 9.074e-05, 9e-05, 9.002e-05, 3426.32732065], [1516982640000, 9.1e-05, 9.248e-05, 9.009e-05, 9.248e-05, 36985.74160178], [1516982700000, 9.245e-05, 9.246e-05, 9.058e-05, 9.063e-05, 1078.698674], [1516982760000, 9.069e-05, 9.22e-05, 9.067e-05, 9.082e-05, 3956.55800475], [1516982820000, 9.214e-05, 9.215e-05, 9.054e-05, 9.085e-05, 4447.37272403], [1516982880000, 9.06e-05, 9.061e-05, 9.06e-05, 9.061e-05, 542.75774824], [1516982940000, 9.101e-05, 9.184e-05, 9.062e-05, 9.15e-05, 616.43628843], [1516983000000, 9.149e-05, 9.15e-05, 9.067e-05, 9.067e-05, 764.34528954], [1516983060000, 9.068e-05, 9.069e-05, 9.068e-05, 9.069e-05, 373.29299208], [1516983120000, 9.069e-05, 9.069e-05, 9.064e-05, 9.065e-05, 3563.02245777], [1516983180000, 9.065e-05, 9.173e-05, 9.065e-05, 9.065e-05, 3719.30255599], [1516983240000, 9.065e-05, 9.065e-05, 9.064e-05, 9.064e-05, 6314.28194407], [1516983300000, 9.06e-05, 9.06e-05, 9e-05, 9.058e-05, 7120.99221351], [1516983420000, 9.059e-05, 9.059e-05, 9.026e-05, 9.026e-05, 6428.68564059], [1516983540000, 9.17e-05, 9.17e-05, 9.062e-05, 9.062e-05, 125.49672355], [1516983660000, 9.074e-05, 9.115e-05, 8.953e-05, 8.953e-05, 14865.19295081], [1516983720000, 8.953e-05, 9.08e-05, 8.953e-05, 8.96e-05, 3426.93950262], [1516983780000, 9.063e-05, 9.066e-05, 9.063e-05, 9.066e-05, 5500.83485558], [1516983900000, 9.066e-05, 9.114e-05, 9.066e-05, 9.114e-05, 461.70147682], [1516983960000, 9.066e-05, 9.154e-05, 9.066e-05, 9.114e-05, 1497.00429617], [1516984020000, 9.114e-05, 9.114e-05, 9.021e-05, 9.021e-05, 2762.11907497], [1516984200000, 9.02e-05, 9.083e-05, 9.02e-05, 9.083e-05, 1672.97010317], [1516984260000, 9.083e-05, 9.1e-05, 9.083e-05, 9.095e-05, 2240.63577312], [1516984320000, 9.095e-05, 9.095e-05, 9.095e-05, 9.095e-05, 157.46441165], [1516984380000, 9.1e-05, 9.148e-05, 9.1e-05, 9.148e-05, 1688.27626952], [1516984440000, 9.021e-05, 9.021e-05, 9.021e-05, 9.021e-05, 16.52073352], [1516984500000, 9.067e-05, 9.067e-05, 9.067e-05, 9.067e-05, 400.0], [1516984560000, 9.141e-05, 9.142e-05, 9.068e-05, 9.068e-05, 567.55895865], [1516984800000, 9.137e-05, 9.137e-05, 9.137e-05, 9.137e-05, 7.96056451], [1516984920000, 9.137e-05, 9.137e-05, 9.137e-05, 9.137e-05, 74.04445461], [1516985400000, 9.137e-05, 9.137e-05, 9.137e-05, 9.137e-05, 294.76305133], [1516985580000, 9.136e-05, 9.136e-05, 9.074e-05, 9.074e-05, 52.56505452], [1516985640000, 9.074e-05, 9.074e-05, 9.074e-05, 9.074e-05, 130.89602102], [1516985700000, 9.074e-05, 9.074e-05, 9.068e-05, 9.068e-05, 199.84024956], [1516985760000, 9.068e-05, 9.068e-05, 9.068e-05, 9.068e-05, 143.88474481], [1516985880000, 9.02e-05, 9.02e-05, 9e-05, 9e-05, 998.4984985], [1516985940000, 9.001e-05, 9.001e-05, 9e-05, 9e-05, 1289.90499352], [1516986000000, 9e-05, 9e-05, 9e-05, 9e-05, 0.93550445], [1516986180000, 9.124e-05, 9.124e-05, 9.124e-05, 9.124e-05, 70.54145096], [1516986480000, 9.123e-05, 9.123e-05, 9.123e-05, 9.123e-05, 132.30153085], [1516986540000, 9.123e-05, 9.123e-05, 9.123e-05, 9.123e-05, 247.13596913], [1516986600000, 9.123e-05, 9.123e-05, 9.123e-05, 9.123e-05, 500.0], [1516986840000, 9.123e-05, 9.135e-05, 9.123e-05, 9.135e-05, 232.22564599], [1516986900000, 9.135e-05, 9.135e-05, 9.135e-05, 9.135e-05, 824.30484252], [1516986960000, 9.135e-05, 9.139e-05, 9.135e-05, 9.138e-05, 7422.75819304], [1516987200000, 9.148e-05, 9.148e-05, 9.148e-05, 9.148e-05, 2206.61431258], [1516987320000, 9.18e-05, 9.18e-05, 9.18e-05, 9.18e-05, 25.0], [1516987380000, 9.18e-05, 9.18e-05, 9.14e-05, 9.14e-05, 182.01640551], [1516987440000, 9.14e-05, 9.18e-05, 9.14e-05, 9.18e-05, 549.49063539], [1516987500000, 9.142e-05, 9.142e-05, 9.14e-05, 9.14e-05, 1120.05835162], [1516987560000, 9.14e-05, 9.14e-05, 9.14e-05, 9.14e-05, 5097.97721917], [1516987740000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 717.95360632], [1516987860000, 9.1e-05, 9.14e-05, 9.006e-05, 9.027e-05, 4104.28468718], [1516987920000, 9.14e-05, 9.14e-05, 9.14e-05, 9.14e-05, 9.12919858], [1516988160000, 9.13e-05, 9.13e-05, 9.13e-05, 9.13e-05, 11.92852845], [1516988400000, 9.137e-05, 9.137e-05, 9.137e-05, 9.137e-05, 20.41156671], [1516988520000, 9.137e-05, 9.137e-05, 9.137e-05, 9.137e-05, 16.47878297], [1516988940000, 9.036e-05, 9.036e-05, 9.033e-05, 9.033e-05, 109.3435075], [1516989000000, 9.033e-05, 9.033e-05, 9.033e-05, 9.033e-05, 189.0], [1516989060000, 9.033e-05, 9.033e-05, 9.027e-05, 9.027e-05, 184.45936755], [1516989120000, 9e-05, 9e-05, 9e-05, 9e-05, 222.22222222], [1516989180000, 9e-05, 9.032e-05, 9e-05, 9.032e-05, 153.04397073], [1516989240000, 9.027e-05, 9.027e-05, 9.027e-05, 9.027e-05, 58.5655144], [1516989300000, 8.995e-05, 8.995e-05, 8.995e-05, 8.995e-05, 22.35172937], [1516989420000, 8.995e-05, 8.995e-05, 8.995e-05, 8.995e-05, 2.48352549], [1516989480000, 8.995e-05, 8.995e-05, 8.995e-05, 8.995e-05, 101.527], [1516989540000, 8.995e-05, 8.995e-05, 8.995e-05, 8.995e-05, 79.35797665], [1516989600000, 8.995e-05, 8.995e-05, 8.995e-05, 8.995e-05, 50.0], [1516989660000, 8.995e-05, 8.995e-05, 8.995e-05, 8.995e-05, 126.95849726], [1516989720000, 9.031e-05, 9.033e-05, 9.031e-05, 9.033e-05, 93.50483554], [1516989780000, 9.015e-05, 9.015e-05, 9.015e-05, 9.015e-05, 236.22438592], [1516989840000, 9.015e-05, 9.015e-05, 9.015e-05, 9.015e-05, 16.6389351], [1516989960000, 9.015e-05, 9.015e-05, 9.015e-05, 9.015e-05, 1329.93118977], [1516990020000, 9.015e-05, 9.015e-05, 9.015e-05, 9.015e-05, 1821.92689438], [1516990140000, 9.015e-05, 9.015e-05, 9.015e-05, 9.015e-05, 500.0], [1516990260000, 9.033e-05, 9.033e-05, 9.033e-05, 9.033e-05, 40.49516446], [1516990380000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 8.08501154], [1516990440000, 9.034e-05, 9.034e-05, 9.034e-05, 9.034e-05, 110.59305887], [1516990560000, 9.056e-05, 9.056e-05, 9.056e-05, 9.056e-05, 11.81928584], [1516990620000, 9.098e-05, 9.098e-05, 9.098e-05, 9.098e-05, 89.39213893], [1516990680000, 9.066e-05, 9.066e-05, 9.066e-05, 9.066e-05, 203.6624337], [1516990740000, 9.076e-05, 9.076e-05, 9.076e-05, 9.076e-05, 1000.0], [1516990800000, 9.081e-05, 9.081e-05, 9.081e-05, 9.081e-05, 201.83498272], [1516990860000, 9.081e-05, 9.098e-05, 9.081e-05, 9.098e-05, 614.40246014], [1516991100000, 9.098e-05, 9.1e-05, 9.098e-05, 9.1e-05, 1106.92937791], [1516991220000, 9.09e-05, 9.09e-05, 9.084e-05, 9.084e-05, 100.68465264], [1516991340000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 6.5097358], [1516991520000, 9.084e-05, 9.084e-05, 9.067e-05, 9.067e-05, 121.59850231], [1516991580000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 1067.40330767], [1516991700000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 161.58998086], [1516991760000, 9.09e-05, 9.09e-05, 9.09e-05, 9.09e-05, 234.15959344], [1516991940000, 9.09e-05, 9.09e-05, 9.09e-05, 9.09e-05, 296.28712871], [1516992000000, 9.084e-05, 9.084e-05, 9.067e-05, 9.067e-05, 1177.17579998], [1516992120000, 9.067e-05, 9.067e-05, 9.067e-05, 9.067e-05, 504.33794962], [1516992300000, 9.033e-05, 9.033e-05, 9.033e-05, 9.033e-05, 9.3], [1516992360000, 9.015e-05, 9.015e-05, 9.015e-05, 9.015e-05, 15.52866142], [1516992420000, 9.033e-05, 9.033e-05, 9.033e-05, 9.033e-05, 11.01310037], [1516992600000, 9.033e-05, 9.08e-05, 9.028e-05, 9.08e-05, 469.92679905], [1516992780000, 9.028e-05, 9.028e-05, 9.028e-05, 9.028e-05, 11.0], [1516992840000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 1200.0], [1516992900000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 1004.00153398], [1516992960000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 166.0], [1516993020000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 238.47340958], [1516993080000, 9.068e-05, 9.068e-05, 9e-05, 9e-05, 4344.0033109], [1516993140000, 9.08e-05, 9.08e-05, 9e-05, 9e-05, 967.88], [1516993260000, 9e-05, 9e-05, 9e-05, 9e-05, 1985.32734428], [1516993620000, 9e-05, 9.084e-05, 9e-05, 9.084e-05, 209.36624767], [1516993740000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 871.00544543], [1516993860000, 9.083e-05, 9.083e-05, 9.083e-05, 9.083e-05, 576.43887302], [1516993920000, 9.083e-05, 9.083e-05, 9.083e-05, 9.083e-05, 270.0], [1516993980000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 500.0], [1516994040000, 9.002e-05, 9.002e-05, 9.001e-05, 9.001e-05, 1631.2221772], [1516994100000, 9.001e-05, 9.001e-05, 9.001e-05, 9.001e-05, 423.87746409], [1516994160000, 9e-05, 9e-05, 9e-05, 9e-05, 62.27960804], [1516994220000, 9e-05, 9e-05, 9e-05, 9e-05, 250.0], [1516994340000, 9.001e-05, 9.001e-05, 9.001e-05, 9.001e-05, 1120.90035871], [1516994760000, 9.003e-05, 9.12e-05, 8.995e-05, 8.995e-05, 3053.32709413], [1516994880000, 9.033e-05, 9.033e-05, 9.033e-05, 9.033e-05, 154.80824038], [1516995120000, 9.03e-05, 9.033e-05, 9.02e-05, 9.02e-05, 1978.2473154], [1516995180000, 9.02e-05, 9.02e-05, 9.02e-05, 9.02e-05, 783.71888143], [1516995300000, 9.013e-05, 9.013e-05, 8.995e-05, 8.995e-05, 91.71421736], [1516995360000, 8.989e-05, 9.032e-05, 8.989e-05, 9.032e-05, 79.35630184], [1516995420000, 9.032e-05, 9.032e-05, 9.032e-05, 9.032e-05, 373.23141454], [1516995720000, 8.961e-05, 8.961e-05, 8.961e-05, 8.961e-05, 500.0], [1516995960000, 8.961e-05, 8.961e-05, 8.961e-05, 8.961e-05, 15.20833658], [1516996020000, 8.961e-05, 8.961e-05, 8.961e-05, 8.961e-05, 18.58138554], [1516996080000, 8.961e-05, 8.961e-05, 8.961e-05, 8.961e-05, 516.21027788], [1516996140000, 8.961e-05, 8.961e-05, 8.961e-05, 8.961e-05, 2226.31402745], [1516996200000, 8.961e-05, 8.961e-05, 8.961e-05, 8.961e-05, 223.18937618], [1516996260000, 8.961e-05, 8.961e-05, 8.961e-05, 8.961e-05, 72.0], [1516996320000, 8.961e-05, 8.963e-05, 8.96e-05, 8.963e-05, 729.1594688], [1516996380000, 8.963e-05, 9.032e-05, 8.963e-05, 9.032e-05, 544.78037348], [1516996440000, 9.032e-05, 9.032e-05, 9.032e-05, 9.032e-05, 1847.21383691], [1516996680000, 8.971e-05, 8.971e-05, 8.971e-05, 8.971e-05, 54.0], [1516996740000, 9.031e-05, 9.1e-05, 9.031e-05, 9.1e-05, 2753.80875334], [1516996800000, 9.1e-05, 9.1e-05, 9.031e-05, 9.031e-05, 123.49145477], [1516996860000, 9.031e-05, 9.031e-05, 9.031e-05, 9.031e-05, 116.84932727], [1516996920000, 9.031e-05, 9.031e-05, 9.031e-05, 9.031e-05, 268.79314231], [1516997100000, 9.031e-05, 9.1e-05, 9.031e-05, 9.1e-05, 19.87939865], [1516997160000, 9.1e-05, 9.1e-05, 9.031e-05, 9.099e-05, 1268.34455024], [1516997220000, 9.031e-05, 9.031e-05, 9.031e-05, 9.031e-05, 500.0], [1516997340000, 9.032e-05, 9.032e-05, 9.032e-05, 9.032e-05, 244.04659503], [1516997400000, 9.032e-05, 9.032e-05, 9.032e-05, 9.032e-05, 56.50661176], [1516997460000, 9.032e-05, 9.032e-05, 9.007e-05, 9.007e-05, 2529.08290168], [1516997580000, 9.007e-05, 9.007e-05, 9.007e-05, 9.007e-05, 11.68807132], [1516997640000, 9.006e-05, 9.007e-05, 9.006e-05, 9.007e-05, 531.88631064], [1516997760000, 9.007e-05, 9.007e-05, 9.007e-05, 9.007e-05, 300.0], [1516997820000, 9.007e-05, 9.007e-05, 9.006e-05, 9.007e-05, 4024.35714327], [1516997880000, 9e-05, 9e-05, 9e-05, 9e-05, 20.0], [1516998000000, 9e-05, 9e-05, 9e-05, 9e-05, 66.77223523], [1516998060000, 9e-05, 9e-05, 9e-05, 9e-05, 120.0], [1516998240000, 9.001e-05, 9.001e-05, 9e-05, 9e-05, 1756.75860656], [1516998300000, 9e-05, 9e-05, 9e-05, 9e-05, 10.5592025], [1516998480000, 9e-05, 9e-05, 9e-05, 9e-05, 3226.25206322], [1516998600000, 9e-05, 9e-05, 9e-05, 9e-05, 686.78625693], [1516998720000, 8.97e-05, 8.97e-05, 8.97e-05, 8.97e-05, 489.71970451], [1516998780000, 8.97e-05, 8.97e-05, 8.97e-05, 8.97e-05, 95.98791477], [1516998840000, 8.97e-05, 8.97e-05, 8.97e-05, 8.97e-05, 84.02148014], [1516998900000, 8.97e-05, 8.97e-05, 8.97e-05, 8.97e-05, 100.0], [1516999080000, 9e-05, 9e-05, 9e-05, 9e-05, 6319.99999999], [1516999140000, 9e-05, 9e-05, 9e-05, 9e-05, 924.98376281], [1516999320000, 9e-05, 9e-05, 9e-05, 9e-05, 225.0], [1516999380000, 8.999e-05, 9e-05, 8.999e-05, 9e-05, 1577.11463591], [1516999440000, 9e-05, 9e-05, 9e-05, 9e-05, 75.0], [1516999500000, 9e-05, 9e-05, 9e-05, 9e-05, 2011.0511424], [1516999620000, 9.007e-05, 9.007e-05, 8.96e-05, 8.96e-05, 890.44339731], [1516999860000, 9.029e-05, 9.03e-05, 9.029e-05, 9.03e-05, 5308.58637117], [1516999920000, 9.029e-05, 9.03e-05, 9.029e-05, 9.03e-05, 2466.30417353], [1516999980000, 9.03e-05, 9.03e-05, 9.03e-05, 9.03e-05, 300.0], [1517000040000, 9.02e-05, 9.02e-05, 9.02e-05, 9.02e-05, 80.0], [1517000160000, 9.03e-05, 9.03e-05, 9.03e-05, 9.03e-05, 4573.64519933], [1517000220000, 9.005e-05, 9.03e-05, 9.005e-05, 9.03e-05, 5971.8963283], [1517000280000, 9.08e-05, 9.097e-05, 9.08e-05, 9.097e-05, 149.21465597], [1517000340000, 9.082e-05, 9.097e-05, 9.082e-05, 9.097e-05, 416.89574883], [1517000640000, 9.09e-05, 9.09e-05, 9.09e-05, 9.09e-05, 90.09902028], [1517000700000, 9.09e-05, 9.09e-05, 9.09e-05, 9.09e-05, 150.0], [1517000820000, 9.012e-05, 9.012e-05, 9.012e-05, 9.012e-05, 162.71314113], [1517000880000, 9.014e-05, 9.014e-05, 9.012e-05, 9.012e-05, 5114.81440196], [1517001120000, 9.014e-05, 9.014e-05, 9.012e-05, 9.012e-05, 2306.61491932], [1517001180000, 9.09e-05, 9.09e-05, 9.09e-05, 9.09e-05, 186.75088476], [1517001300000, 9.09e-05, 9.09e-05, 9.09e-05, 9.09e-05, 37.35640445], [1517001360000, 9.09e-05, 9.09e-05, 9.09e-05, 9.09e-05, 370.191783], [1517001480000, 9.012e-05, 9.012e-05, 9.012e-05, 9.012e-05, 6.06370774], [1517001540000, 9.012e-05, 9.012e-05, 9.012e-05, 9.012e-05, 295.0], [1517001720000, 9.013e-05, 9.013e-05, 9.012e-05, 9.012e-05, 100.0], [1517001780000, 9.088e-05, 9.088e-05, 9.088e-05, 9.088e-05, 103.018655], [1517001840000, 9.012e-05, 9.012e-05, 9.01e-05, 9.01e-05, 5000.0], [1517001900000, 9.01e-05, 9.01e-05, 9e-05, 9e-05, 2800.0], [1517002020000, 9.067e-05, 9.078e-05, 9.002e-05, 9.002e-05, 325.67600299], [1517002080000, 9.005e-05, 9.005e-05, 9e-05, 9e-05, 4178.92147865], [1517002200000, 9.03e-05, 9.03e-05, 9.03e-05, 9.03e-05, 304.9951838], [1517002320000, 9.03e-05, 9.03e-05, 9.015e-05, 9.015e-05, 557.92485909], [1517002440000, 9.067e-05, 9.067e-05, 9.067e-05, 9.067e-05, 1178.79570004], [1517002500000, 9.082e-05, 9.082e-05, 9.082e-05, 9.082e-05, 30.0], [1517002620000, 9.081e-05, 9.081e-05, 9.081e-05, 9.081e-05, 125.376003], [1517002800000, 9.081e-05, 9.081e-05, 9.081e-05, 9.081e-05, 11.68162233], [1517002860000, 9.015e-05, 9.015e-05, 9.015e-05, 9.015e-05, 154.01431893], [1517003040000, 9.082e-05, 9.09e-05, 9.082e-05, 9.09e-05, 100.80832753], [1517003280000, 9.015e-05, 9.015e-05, 9.014e-05, 9.014e-05, 398.26893309], [1517003340000, 9.014e-05, 9.014e-05, 9e-05, 9e-05, 4643.86417878], [1517003400000, 9.065e-05, 9.086e-05, 9.065e-05, 9.086e-05, 219.4049284], [1517003460000, 9.014e-05, 9.014e-05, 9.014e-05, 9.014e-05, 80.0], [1517003520000, 9.014e-05, 9.014e-05, 9.014e-05, 9.014e-05, 100.0], [1517003580000, 9.009e-05, 9.009e-05, 9.009e-05, 9.009e-05, 91.63861343], [1517003640000, 9.012e-05, 9.012e-05, 9.009e-05, 9.009e-05, 85.97427382], [1517003700000, 9.077e-05, 9.077e-05, 9e-05, 9e-05, 2527.24180822], [1517003820000, 9.067e-05, 9.089e-05, 9.067e-05, 9.089e-05, 224.97666615], [1517004000000, 9.067e-05, 9.067e-05, 9.067e-05, 9.067e-05, 48.16836598], [1517004060000, 9.014e-05, 9.014e-05, 9e-05, 9e-05, 506.17748734], [1517004120000, 9e-05, 9e-05, 8.959e-05, 8.959e-05, 1500.0], [1517004300000, 9.05e-05, 9.066e-05, 8.974e-05, 8.974e-05, 141.83163402], [1517004360000, 9.065e-05, 9.067e-05, 9.065e-05, 9.067e-05, 376.3985148], [1517004480000, 9.065e-05, 9.066e-05, 9.065e-05, 9.066e-05, 126.27525621], [1517004540000, 9.064e-05, 9.066e-05, 9.064e-05, 9.066e-05, 375.93521638], [1517004600000, 9.011e-05, 9.011e-05, 9.011e-05, 9.011e-05, 311.2349808], [1517004660000, 9.011e-05, 9.011e-05, 9.011e-05, 9.011e-05, 58.0], [1517004720000, 9.066e-05, 9.067e-05, 9.066e-05, 9.067e-05, 300.40518589], [1517004840000, 9.06e-05, 9.06e-05, 9.009e-05, 9.009e-05, 950.39774854], [1517005140000, 9.067e-05, 9.067e-05, 9.067e-05, 9.067e-05, 186.61830173], [1517005200000, 9.067e-05, 9.067e-05, 9.067e-05, 9.067e-05, 567.28088696], [1517005260000, 9.009e-05, 9.009e-05, 9.009e-05, 9.009e-05, 350.0], [1517005440000, 9.009e-05, 9.009e-05, 9.009e-05, 9.009e-05, 59.87928153], [1517005620000, 9.067e-05, 9.067e-05, 9.067e-05, 9.067e-05, 20.0], [1517005680000, 9.04e-05, 9.067e-05, 9.04e-05, 9.067e-05, 311.28237767], [1517005740000, 9.01e-05, 9.01e-05, 9.01e-05, 9.01e-05, 16.15823174], [1517005800000, 9.01e-05, 9.01e-05, 9.01e-05, 9.01e-05, 57.04474421], [1517005920000, 9.067e-05, 9.067e-05, 9.067e-05, 9.067e-05, 23.65308261], [1517006160000, 9.01e-05, 9.052e-05, 9.009e-05, 9.052e-05, 141.63441823], [1517006220000, 9.01e-05, 9.01e-05, 9.01e-05, 9.01e-05, 24.43935635], [1517006280000, 9.052e-05, 9.077e-05, 9.052e-05, 9.072e-05, 1629.29490601], [1517006400000, 9.072e-05, 9.089e-05, 9.072e-05, 9.089e-05, 111.1594688], [1517006520000, 9.072e-05, 9.087e-05, 8.85e-05, 8.888e-05, 104369.74890162], [1517006580000, 8.905e-05, 8.916e-05, 8.895e-05, 8.916e-05, 490.97004637], [1517006640000, 8.919e-05, 8.919e-05, 8.919e-05, 8.919e-05, 14.9625], [1517006700000, 9.034e-05, 9.034e-05, 9.034e-05, 9.034e-05, 271.7796778], [1517006760000, 9.034e-05, 9.034e-05, 9.027e-05, 9.027e-05, 6279.84042832], [1517006820000, 9.01e-05, 9.01e-05, 9.01e-05, 9.01e-05, 151.25638441], [1517006880000, 9.02e-05, 9.02e-05, 8.896e-05, 8.896e-05, 399.89581702], [1517006940000, 9.01e-05, 9.015e-05, 9.01e-05, 9.015e-05, 1106.49320256], [1517007000000, 8.901e-05, 9.013e-05, 8.901e-05, 9.013e-05, 489.57849756], [1517007060000, 9.013e-05, 9.013e-05, 9.013e-05, 9.013e-05, 13.47565397], [1517007120000, 9.012e-05, 9.012e-05, 9.011e-05, 9.011e-05, 4835.85436019], [1517007180000, 9.01e-05, 9.01e-05, 9.01e-05, 9.01e-05, 6.06242565], [1517007360000, 8.986e-05, 9.011e-05, 8.986e-05, 9.011e-05, 27.34689661], [1517007720000, 8.993e-05, 8.993e-05, 8.993e-05, 8.993e-05, 27.79939953], [1517007780000, 8.923e-05, 8.923e-05, 8.921e-05, 8.923e-05, 300.0], [1517007840000, 8.923e-05, 8.99e-05, 8.923e-05, 8.99e-05, 813.50797767], [1517008020000, 8.988e-05, 8.991e-05, 8.988e-05, 8.991e-05, 1408.25190345], [1517008080000, 8.988e-05, 8.988e-05, 8.988e-05, 8.988e-05, 296.10896305], [1517008140000, 8.987e-05, 8.987e-05, 8.987e-05, 8.987e-05, 162.10431866], [1517008200000, 8.987e-05, 8.987e-05, 8.987e-05, 8.987e-05, 22.82770592], [1517008260000, 8.987e-05, 8.987e-05, 8.987e-05, 8.987e-05, 23605.72875073], [1517008320000, 8.95e-05, 8.95e-05, 8.9e-05, 8.9e-05, 997.98880673], [1517008440000, 8.993e-05, 8.993e-05, 8.993e-05, 8.993e-05, 317.53721055], [1517008500000, 8.993e-05, 8.993e-05, 8.993e-05, 8.993e-05, 573.22165993], [1517008620000, 9.006e-05, 9.006e-05, 9.006e-05, 9.006e-05, 11.38125468], [1517008680000, 8.919e-05, 9.052e-05, 8.919e-05, 9.038e-05, 5282.1281455], [1517008740000, 8.916e-05, 8.916e-05, 8.916e-05, 8.916e-05, 25.86], [1517008920000, 9.037e-05, 9.038e-05, 9.037e-05, 9.037e-05, 241.41100686], [1517008980000, 9.038e-05, 9.038e-05, 9.037e-05, 9.037e-05, 2204.47595891], [1517009040000, 9.045e-05, 9.045e-05, 9.045e-05, 9.045e-05, 877.122], [1517009100000, 9.045e-05, 9.05e-05, 8.912e-05, 9.05e-05, 7097.42970118], [1517009220000, 9.029e-05, 9.085e-05, 8.928e-05, 8.928e-05, 1509.91465531], [1517009340000, 9.083e-05, 9.086e-05, 9.083e-05, 9.086e-05, 6277.61549386], [1517009400000, 9.085e-05, 9.085e-05, 9.085e-05, 9.085e-05, 189.01437502], [1517009460000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 82.35634082], [1517009520000, 8.973e-05, 9.096e-05, 8.973e-05, 9.096e-05, 47923.04658006], [1517009580000, 8.999e-05, 9.096e-05, 8.999e-05, 9.03e-05, 3365.82893841], [1517009640000, 9.03e-05, 9.03e-05, 9.03e-05, 9.03e-05, 2085.063], [1517009700000, 9.03e-05, 9.03e-05, 9.03e-05, 9.03e-05, 97.46506057], [1517009760000, 9.029e-05, 9.03e-05, 9.029e-05, 9.03e-05, 549.30980378], [1517009820000, 9.03e-05, 9.087e-05, 9.01e-05, 9.087e-05, 5999.45648955], [1517009880000, 9.088e-05, 9.096e-05, 9.088e-05, 9.096e-05, 6560.23361085], [1517009940000, 9.01e-05, 9.099e-05, 9.01e-05, 9.099e-05, 12244.77115068], [1517010000000, 9.099e-05, 9.1e-05, 9.099e-05, 9.1e-05, 1096.04486422], [1517010060000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 3277.96852609], [1517010120000, 9.1e-05, 9.133e-05, 9.1e-05, 9.133e-05, 108.09628292], [1517010180000, 9.133e-05, 9.133e-05, 9.133e-05, 9.133e-05, 164.23957078], [1517010300000, 9.05e-05, 9.14e-05, 9e-05, 9.14e-05, 8523.25534373], [1517010540000, 9.136e-05, 9.14e-05, 9.136e-05, 9.14e-05, 2182.51978338], [1517010660000, 9.041e-05, 9.041e-05, 9.041e-05, 9.041e-05, 90.428], [1517010720000, 9.139e-05, 9.14e-05, 9.139e-05, 9.139e-05, 5982.94854244], [1517010780000, 9.139e-05, 9.139e-05, 9.139e-05, 9.139e-05, 350.71988067], [1517010840000, 9.139e-05, 9.139e-05, 9.139e-05, 9.139e-05, 196.46569647], [1517010960000, 9.139e-05, 9.14e-05, 9.139e-05, 9.14e-05, 3189.11007039], [1517011020000, 9.14e-05, 9.248e-05, 9.14e-05, 9.24e-05, 35679.77900002], [1517011080000, 9.24e-05, 9.272e-05, 9.031e-05, 9.031e-05, 6939.20939956], [1517011140000, 9.141e-05, 9.156e-05, 9.101e-05, 9.101e-05, 68.90016037], [1517011200000, 9.254e-05, 9.254e-05, 9.121e-05, 9.121e-05, 1300.82268943], [1517011260000, 9.122e-05, 9.24e-05, 9.121e-05, 9.24e-05, 1453.2618259], [1517011320000, 9.24e-05, 9.24e-05, 8.985e-05, 9.005e-05, 5413.6640559], [1517011380000, 9.204e-05, 9.204e-05, 9.053e-05, 9.053e-05, 166.79377321], [1517011440000, 9.175e-05, 9.175e-05, 9.162e-05, 9.162e-05, 55.04666066], [1517011500000, 9.125e-05, 9.125e-05, 9.118e-05, 9.118e-05, 392.3515574], [1517011560000, 9.115e-05, 9.119e-05, 9.113e-05, 9.118e-05, 1676.71087274], [1517011620000, 9.04e-05, 9.04e-05, 8.928e-05, 8.928e-05, 550.0], [1517011680000, 9.116e-05, 9.116e-05, 9.116e-05, 9.116e-05, 14.74867491], [1517011740000, 8.976e-05, 9.11e-05, 8.976e-05, 9.11e-05, 442.32557364], [1517011800000, 9.107e-05, 9.109e-05, 9.107e-05, 9.109e-05, 954.85442578], [1517011860000, 9.007e-05, 9.162e-05, 9.007e-05, 9.162e-05, 631.20508159], [1517011980000, 9.099e-05, 9.1e-05, 9.099e-05, 9.1e-05, 350.79700467], [1517012100000, 9.09e-05, 9.09e-05, 9.09e-05, 9.09e-05, 802.74320735], [1517012160000, 9.09e-05, 9.199e-05, 9.012e-05, 9.016e-05, 887.51092016], [1517012220000, 9.025e-05, 9.025e-05, 9.025e-05, 9.025e-05, 8.56001977], [1517012280000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 194.26365647], [1517012340000, 9.03e-05, 9.223e-05, 9.03e-05, 9.223e-05, 1762.8669905], [1517012400000, 9.223e-05, 9.223e-05, 9.223e-05, 9.223e-05, 13.87503809], [1517012460000, 9.103e-05, 9.223e-05, 9.103e-05, 9.112e-05, 9328.40235638], [1517012520000, 9.111e-05, 9.214e-05, 9.111e-05, 9.214e-05, 46.64532161], [1517012580000, 9.103e-05, 9.103e-05, 9.059e-05, 9.059e-05, 1258.01617835], [1517012700000, 9.059e-05, 9.059e-05, 9.037e-05, 9.037e-05, 53009.35885794], [1517012760000, 9.037e-05, 9.037e-05, 9.03e-05, 9.03e-05, 185.52856479], [1517012820000, 9.021e-05, 9.021e-05, 9e-05, 9e-05, 285.47953185], [1517012940000, 9.011e-05, 9.028e-05, 9.001e-05, 9.01e-05, 752.88455136], [1517013000000, 9.01e-05, 9.01e-05, 8.889e-05, 8.889e-05, 14276.6731], [1517013060000, 8.91e-05, 9.03e-05, 8.91e-05, 9.03e-05, 583.09415411], [1517013180000, 8.92e-05, 8.999e-05, 8.92e-05, 8.989e-05, 3278.04468761], [1517013240000, 8.988e-05, 8.988e-05, 8.98e-05, 8.983e-05, 4226.94863993], [1517013300000, 8.98e-05, 8.98e-05, 8.92e-05, 8.921e-05, 897.14209521], [1517013360000, 8.921e-05, 9.007e-05, 8.92e-05, 9.007e-05, 779.34108909], [1517013420000, 9.008e-05, 9.008e-05, 8.922e-05, 8.925e-05, 892.36246541], [1517013480000, 8.925e-05, 8.991e-05, 8.925e-05, 8.991e-05, 86.73533808], [1517013600000, 8.925e-05, 8.925e-05, 8.925e-05, 8.925e-05, 112.07375352], [1517013660000, 8.951e-05, 8.951e-05, 8.918e-05, 8.948e-05, 3584.01627946], [1517013720000, 8.918e-05, 8.918e-05, 8.888e-05, 8.888e-05, 135.28047528], [1517013780000, 8.92e-05, 8.982e-05, 8.92e-05, 8.982e-05, 511.33377866], [1517013900000, 8.99e-05, 8.99e-05, 8.92e-05, 8.92e-05, 551.17510474], [1517013960000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 437.28897705], [1517014080000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 25.0], [1517014140000, 8.921e-05, 9.003e-05, 8.8e-05, 9.003e-05, 4448.81904256], [1517014200000, 8.996e-05, 8.996e-05, 8.814e-05, 8.816e-05, 4530.43049758], [1517014260000, 8.936e-05, 8.936e-05, 8.933e-05, 8.933e-05, 188.01164832], [1517014320000, 8.926e-05, 8.926e-05, 8.87e-05, 8.915e-05, 975.32085922], [1517014380000, 8.871e-05, 8.871e-05, 8.87e-05, 8.87e-05, 350.76870384], [1517014440000, 8.871e-05, 9.014e-05, 8.871e-05, 9.014e-05, 526.18819342], [1517014560000, 8.882e-05, 8.882e-05, 8.882e-05, 8.882e-05, 553.82265683], [1517014620000, 8.934e-05, 8.946e-05, 8.868e-05, 8.882e-05, 9827.84507779], [1517014680000, 8.882e-05, 8.882e-05, 8.882e-05, 8.882e-05, 2817.67896865], [1517014740000, 8.882e-05, 8.882e-05, 8.882e-05, 8.882e-05, 11406.86877592], [1517014800000, 8.882e-05, 8.882e-05, 8.882e-05, 8.882e-05, 1902.30650013], [1517014860000, 8.882e-05, 8.882e-05, 8.882e-05, 8.882e-05, 104.85199758], [1517014920000, 8.882e-05, 8.882e-05, 8.882e-05, 8.882e-05, 724.9], [1517014980000, 8.882e-05, 8.882e-05, 8.831e-05, 8.831e-05, 4779.24468955], [1517015040000, 8.95e-05, 8.997e-05, 8.8e-05, 8.997e-05, 4715.98036257], [1517015160000, 8.966e-05, 8.966e-05, 8.966e-05, 8.966e-05, 37.87487055], [1517015220000, 8.966e-05, 8.966e-05, 8.966e-05, 8.966e-05, 15.61454383], [1517015340000, 8.952e-05, 8.952e-05, 8.948e-05, 8.948e-05, 1145.382749], [1517015460000, 8.934e-05, 8.934e-05, 8.934e-05, 8.934e-05, 113.129373], [1517015520000, 8.935e-05, 8.936e-05, 8.935e-05, 8.936e-05, 559.28411633], [1517015580000, 8.816e-05, 8.92e-05, 8.816e-05, 8.92e-05, 1004.0], [1517015640000, 8.88e-05, 8.918e-05, 8.818e-05, 8.918e-05, 694.99917473], [1517015700000, 8.918e-05, 8.918e-05, 8.88e-05, 8.88e-05, 187.28269318], [1517015760000, 8.88e-05, 8.92e-05, 8.88e-05, 8.92e-05, 131.83361901], [1517015880000, 8.919e-05, 8.919e-05, 8.838e-05, 8.918e-05, 1224.97629456], [1517015940000, 8.91e-05, 8.91e-05, 8.91e-05, 8.91e-05, 126.50221378], [1517016000000, 8.907e-05, 8.907e-05, 8.79e-05, 8.907e-05, 8466.59339789], [1517016060000, 8.9e-05, 8.92e-05, 8.9e-05, 8.92e-05, 1755.57239313], [1517016120000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 343.92186573], [1517016180000, 8.918e-05, 8.918e-05, 8.88e-05, 8.88e-05, 779.55223369], [1517016240000, 8.918e-05, 8.918e-05, 8.88e-05, 8.918e-05, 242.81991477], [1517016360000, 8.918e-05, 8.918e-05, 8.918e-05, 8.918e-05, 368.71315738], [1517016540000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 1760.13647122], [1517016660000, 8.881e-05, 8.881e-05, 8.88e-05, 8.881e-05, 1665.40312461], [1517016720000, 8.881e-05, 8.92e-05, 8.881e-05, 8.92e-05, 8771.29424576], [1517016780000, 8.881e-05, 8.92e-05, 8.845e-05, 8.92e-05, 1355.0], [1517016840000, 8.919e-05, 8.919e-05, 8.919e-05, 8.919e-05, 128.0], [1517016900000, 8.919e-05, 8.919e-05, 8.919e-05, 8.919e-05, 22.79520182], [1517016960000, 8.92e-05, 8.92e-05, 8.919e-05, 8.919e-05, 90.62047884], [1517017020000, 8.92e-05, 8.92e-05, 8.92e-05, 8.92e-05, 38.02502751], [1517017080000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 50.34581105], [1517017200000, 8.9e-05, 8.9e-05, 8.892e-05, 8.892e-05, 249.65418895], [1517017260000, 8.892e-05, 8.892e-05, 8.892e-05, 8.892e-05, 823.62326923], [1517017380000, 8.895e-05, 8.895e-05, 8.892e-05, 8.892e-05, 850.81059931], [1517017440000, 8.801e-05, 8.801e-05, 8.801e-05, 8.801e-05, 1044.78050829], [1517017500000, 8.891e-05, 8.891e-05, 8.801e-05, 8.801e-05, 301.82934418], [1517017560000, 8.852e-05, 8.852e-05, 8.775e-05, 8.775e-05, 3011.81578434], [1517017620000, 8.775e-05, 8.775e-05, 8.775e-05, 8.775e-05, 38.10925588], [1517017680000, 8.775e-05, 8.775e-05, 8.775e-05, 8.775e-05, 278.5379124], [1517017740000, 8.89e-05, 8.89e-05, 8.888e-05, 8.888e-05, 555.39719051], [1517017800000, 8.885e-05, 8.888e-05, 8.775e-05, 8.888e-05, 806.5557838], [1517017920000, 8.776e-05, 8.887e-05, 8.776e-05, 8.887e-05, 269.95659603], [1517017980000, 8.888e-05, 8.888e-05, 8.888e-05, 8.888e-05, 1001.17180763], [1517018040000, 8.786e-05, 8.915e-05, 8.784e-05, 8.913e-05, 587.1780294], [1517018160000, 8.785e-05, 8.785e-05, 8.785e-05, 8.785e-05, 10.0], [1517018220000, 8.892e-05, 8.892e-05, 8.784e-05, 8.784e-05, 133.27641096], [1517018280000, 8.79e-05, 8.79e-05, 8.789e-05, 8.789e-05, 89.77144191], [1517018340000, 8.889e-05, 8.889e-05, 8.889e-05, 8.889e-05, 85.06698014], [1517018400000, 8.889e-05, 8.889e-05, 8.789e-05, 8.789e-05, 1744.18275018], [1517018460000, 8.903e-05, 8.91e-05, 8.903e-05, 8.91e-05, 3610.78581693], [1517018520000, 8.903e-05, 8.903e-05, 8.903e-05, 8.903e-05, 100.0], [1517018580000, 8.791e-05, 8.901e-05, 8.789e-05, 8.901e-05, 266.00577801], [1517018700000, 8.9e-05, 8.901e-05, 8.789e-05, 8.789e-05, 436.84588094], [1517018760000, 8.789e-05, 8.789e-05, 8.789e-05, 8.789e-05, 223.89436076], [1517018820000, 8.898e-05, 8.905e-05, 8.785e-05, 8.785e-05, 493.84833967], [1517018880000, 8.897e-05, 8.9e-05, 8.897e-05, 8.9e-05, 59.94382022], [1517018940000, 8.784e-05, 8.784e-05, 8.771e-05, 8.771e-05, 288.7682915], [1517019000000, 8.775e-05, 8.775e-05, 8.764e-05, 8.774e-05, 10063.60454799], [1517019060000, 8.774e-05, 8.774e-05, 8.763e-05, 8.774e-05, 5080.81972257], [1517019120000, 8.774e-05, 8.774e-05, 8.76e-05, 8.774e-05, 153.60815664], [1517019180000, 8.774e-05, 8.774e-05, 8.773e-05, 8.773e-05, 927.74528766], [1517019240000, 8.774e-05, 8.774e-05, 8.76e-05, 8.76e-05, 1553.49965972], [1517019300000, 8.76e-05, 8.76e-05, 8.74e-05, 8.74e-05, 3794.01525297], [1517019360000, 8.74e-05, 8.774e-05, 8.74e-05, 8.774e-05, 820.65223512], [1517019420000, 8.749e-05, 8.774e-05, 8.749e-05, 8.774e-05, 144.35824288], [1517019480000, 8.745e-05, 8.774e-05, 8.745e-05, 8.774e-05, 2565.62244084], [1517019540000, 8.774e-05, 8.889e-05, 8.774e-05, 8.888e-05, 817.81034032], [1517019600000, 8.796e-05, 8.878e-05, 8.796e-05, 8.875e-05, 340.54277067], [1517019660000, 8.796e-05, 8.797e-05, 8.775e-05, 8.775e-05, 1390.16810128], [1517019720000, 8.774e-05, 8.774e-05, 8.74e-05, 8.741e-05, 781.54522144], [1517019840000, 8.774e-05, 8.908e-05, 8.74e-05, 8.908e-05, 944.16964819], [1517019900000, 8.764e-05, 8.764e-05, 8.762e-05, 8.762e-05, 718.08807515], [1517020020000, 8.893e-05, 8.893e-05, 8.893e-05, 8.893e-05, 30.13643588], [1517020080000, 8.765e-05, 8.765e-05, 8.764e-05, 8.764e-05, 295.64960047], [1517020200000, 8.849e-05, 8.849e-05, 8.763e-05, 8.763e-05, 422.5065427], [1517020320000, 8.827e-05, 8.827e-05, 8.827e-05, 8.827e-05, 20.061003], [1517020560000, 8.834e-05, 8.836e-05, 8.834e-05, 8.836e-05, 201.16504369], [1517020620000, 8.834e-05, 8.834e-05, 8.834e-05, 8.834e-05, 153.41312255], [1517020680000, 8.828e-05, 8.828e-05, 8.766e-05, 8.766e-05, 330.8467957], [1517020740000, 8.822e-05, 8.822e-05, 8.822e-05, 8.822e-05, 8.02500299], [1517020800000, 8.814e-05, 8.835e-05, 8.814e-05, 8.835e-05, 179.53800299], [1517020860000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 654.25333101], [1517020980000, 8.83e-05, 8.83e-05, 8.824e-05, 8.824e-05, 158.08091979], [1517021040000, 8.827e-05, 8.827e-05, 8.71e-05, 8.71e-05, 2314.01], [1517021100000, 8.711e-05, 8.75e-05, 8.711e-05, 8.75e-05, 139.02364682], [1517021160000, 8.824e-05, 8.824e-05, 8.824e-05, 8.824e-05, 207.3163173], [1517021220000, 8.829e-05, 8.83e-05, 8.828e-05, 8.829e-05, 1700.02181827], [1517021280000, 8.829e-05, 8.83e-05, 8.829e-05, 8.83e-05, 838.81518324], [1517021340000, 8.767e-05, 8.83e-05, 8.767e-05, 8.83e-05, 738.6415979], [1517021400000, 8.83e-05, 8.836e-05, 8.83e-05, 8.836e-05, 831.54269043], [1517021580000, 8.835e-05, 8.836e-05, 8.835e-05, 8.836e-05, 2306.19307473], [1517021640000, 8.836e-05, 8.836e-05, 8.836e-05, 8.836e-05, 61.76955707], [1517021700000, 8.836e-05, 8.836e-05, 8.836e-05, 8.836e-05, 93.99267157], [1517021760000, 8.835e-05, 8.836e-05, 8.835e-05, 8.836e-05, 757.19439355], [1517021820000, 8.836e-05, 8.836e-05, 8.836e-05, 8.836e-05, 491.4788825], [1517021880000, 8.845e-05, 8.845e-05, 8.845e-05, 8.845e-05, 148.64029985], [1517022000000, 8.836e-05, 8.836e-05, 8.836e-05, 8.836e-05, 60.0], [1517022120000, 8.845e-05, 8.845e-05, 8.768e-05, 8.768e-05, 3680.57895938], [1517022180000, 8.769e-05, 8.769e-05, 8.769e-05, 8.769e-05, 400.0], [1517022240000, 8.769e-05, 8.769e-05, 8.769e-05, 8.769e-05, 366.06940589], [1517022360000, 8.844e-05, 8.844e-05, 8.844e-05, 8.844e-05, 36.93200457], [1517022420000, 8.844e-05, 8.844e-05, 8.769e-05, 8.769e-05, 1484.3241579], [1517022480000, 8.774e-05, 8.774e-05, 8.774e-05, 8.774e-05, 401.39356379], [1517022540000, 8.844e-05, 8.844e-05, 8.844e-05, 8.844e-05, 16.07356679], [1517022600000, 8.843e-05, 8.844e-05, 8.843e-05, 8.844e-05, 1480.04256134], [1517022660000, 8.77e-05, 8.844e-05, 8.765e-05, 8.844e-05, 7410.0], [1517022720000, 8.844e-05, 8.844e-05, 8.844e-05, 8.844e-05, 719.04390657], [1517022840000, 8.847e-05, 8.847e-05, 8.845e-05, 8.845e-05, 90.79436442], [1517022900000, 8.86e-05, 8.924e-05, 8.844e-05, 8.844e-05, 5480.72923134], [1517023020000, 8.921e-05, 8.921e-05, 8.921e-05, 8.921e-05, 945.51728989], [1517023080000, 8.921e-05, 8.921e-05, 8.845e-05, 8.92e-05, 2999.19758022], [1517023140000, 8.845e-05, 8.918e-05, 8.844e-05, 8.918e-05, 4900.351756], [1517023200000, 8.914e-05, 8.914e-05, 8.844e-05, 8.844e-05, 151.94853197], [1517023260000, 8.796e-05, 8.796e-05, 8.794e-05, 8.794e-05, 79.10659161], [1517023320000, 8.796e-05, 8.796e-05, 8.796e-05, 8.796e-05, 113.73832829], [1517023380000, 8.797e-05, 8.92e-05, 8.796e-05, 8.796e-05, 667.71577377], [1517023440000, 8.794e-05, 8.796e-05, 8.794e-05, 8.796e-05, 151.15846247], [1517023500000, 8.796e-05, 8.796e-05, 8.796e-05, 8.796e-05, 46.95442963], [1517023560000, 8.796e-05, 8.796e-05, 8.796e-05, 8.796e-05, 119.63063371], [1517023620000, 8.891e-05, 8.891e-05, 8.891e-05, 8.891e-05, 77.10431682], [1517023920000, 8.799e-05, 8.876e-05, 8.796e-05, 8.798e-05, 1797.24657535], [1517023980000, 8.796e-05, 8.876e-05, 8.796e-05, 8.876e-05, 481.47222682], [1517024100000, 8.88e-05, 8.882e-05, 8.88e-05, 8.882e-05, 740.17341141], [1517024160000, 8.876e-05, 8.876e-05, 8.876e-05, 8.876e-05, 214.8227712], [1517024220000, 8.8e-05, 8.872e-05, 8.8e-05, 8.872e-05, 224.0267133], [1517024340000, 8.802e-05, 8.87e-05, 8.796e-05, 8.804e-05, 845.29075572], [1517024400000, 8.804e-05, 8.804e-05, 8.796e-05, 8.796e-05, 379.15985265], [1517024460000, 8.869e-05, 8.883e-05, 8.869e-05, 8.883e-05, 427.5553976], [1517024520000, 8.8e-05, 8.8e-05, 8.755e-05, 8.755e-05, 2769.13504731], [1517024580000, 8.789e-05, 8.873e-05, 8.755e-05, 8.873e-05, 366.7905316], [1517024640000, 8.756e-05, 8.756e-05, 8.755e-05, 8.755e-05, 132.53716039], [1517024700000, 8.755e-05, 8.755e-05, 8.755e-05, 8.755e-05, 10.0], [1517024760000, 8.76e-05, 8.76e-05, 8.759e-05, 8.759e-05, 717.47349465], [1517024820000, 8.762e-05, 8.864e-05, 8.759e-05, 8.864e-05, 281.07152206], [1517025060000, 8.8e-05, 8.825e-05, 8.762e-05, 8.762e-05, 3152.92480625], [1517025240000, 8.805e-05, 8.805e-05, 8.805e-05, 8.805e-05, 11.59761212], [1517025420000, 8.805e-05, 8.805e-05, 8.805e-05, 8.805e-05, 56.89553916], [1517025480000, 8.825e-05, 8.825e-05, 8.825e-05, 8.825e-05, 29.29853835], [1517025540000, 8.825e-05, 8.864e-05, 8.825e-05, 8.864e-05, 35.38550171], [1517025600000, 8.86e-05, 8.86e-05, 8.759e-05, 8.859e-05, 317.21841495], [1517025660000, 8.776e-05, 8.776e-05, 8.776e-05, 8.776e-05, 68.56175413], [1517025720000, 8.776e-05, 8.776e-05, 8.775e-05, 8.776e-05, 385.10905992], [1517025840000, 8.776e-05, 8.776e-05, 8.776e-05, 8.776e-05, 224.931], [1517025900000, 8.776e-05, 8.776e-05, 8.776e-05, 8.776e-05, 107.61320336], [1517025960000, 8.776e-05, 8.776e-05, 8.776e-05, 8.776e-05, 193.3702068], [1517026020000, 8.775e-05, 8.775e-05, 8.759e-05, 8.759e-05, 587.98487771], [1517026080000, 8.755e-05, 8.776e-05, 8.755e-05, 8.776e-05, 250.0], [1517026200000, 8.776e-05, 8.776e-05, 8.776e-05, 8.776e-05, 28.57866316], [1517026260000, 8.756e-05, 8.756e-05, 8.73e-05, 8.73e-05, 1274.60591409], [1517026320000, 8.776e-05, 8.868e-05, 8.776e-05, 8.868e-05, 201.65316691], [1517026380000, 8.868e-05, 8.883e-05, 8.775e-05, 8.775e-05, 3665.5740696], [1517026500000, 8.88e-05, 8.88e-05, 8.88e-05, 8.88e-05, 12.387387], [1517026560000, 8.88e-05, 8.88e-05, 8.88e-05, 8.88e-05, 68.91931068], [1517026620000, 8.776e-05, 8.776e-05, 8.776e-05, 8.776e-05, 6.62689166], [1517026680000, 8.882e-05, 8.883e-05, 8.882e-05, 8.883e-05, 396.80827554], [1517026800000, 8.802e-05, 8.803e-05, 8.802e-05, 8.803e-05, 1740.6868987], [1517027040000, 8.883e-05, 8.883e-05, 8.883e-05, 8.883e-05, 36.40442671], [1517027160000, 8.805e-05, 8.805e-05, 8.805e-05, 8.805e-05, 97.036485], [1517027220000, 8.805e-05, 8.805e-05, 8.805e-05, 8.805e-05, 55.0], [1517027340000, 8.883e-05, 8.883e-05, 8.883e-05, 8.883e-05, 175.15640606], [1517027400000, 8.883e-05, 8.883e-05, 8.883e-05, 8.883e-05, 2665.49797278], [1517027520000, 8.808e-05, 8.808e-05, 8.808e-05, 8.808e-05, 369.95455443], [1517027580000, 8.883e-05, 8.883e-05, 8.808e-05, 8.808e-05, 482.54557447], [1517027640000, 8.808e-05, 8.808e-05, 8.808e-05, 8.808e-05, 2013.75697187], [1517027700000, 8.883e-05, 8.883e-05, 8.883e-05, 8.883e-05, 1423.29092408], [1517027760000, 8.883e-05, 8.883e-05, 8.883e-05, 8.883e-05, 387.41134751], [1517027820000, 8.81e-05, 8.883e-05, 8.81e-05, 8.883e-05, 1023.81227855], [1517028000000, 8.81e-05, 8.882e-05, 8.76e-05, 8.882e-05, 1549.70916655], [1517028060000, 8.761e-05, 8.761e-05, 8.761e-05, 8.761e-05, 234.72727314], [1517028120000, 8.763e-05, 8.795e-05, 8.752e-05, 8.763e-05, 1332.6092098], [1517028480000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 153.74928808], [1517028540000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 76.66335526], [1517028660000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 457.28807316], [1517028720000, 8.8e-05, 8.858e-05, 8.8e-05, 8.858e-05, 645.48034962], [1517028780000, 8.858e-05, 8.899e-05, 8.85e-05, 8.899e-05, 1527.95438534], [1517028840000, 8.897e-05, 8.897e-05, 8.897e-05, 8.897e-05, 92.07783148], [1517028960000, 8.897e-05, 8.897e-05, 8.897e-05, 8.897e-05, 10.16518863], [1517029020000, 8.8e-05, 8.8e-05, 8.779e-05, 8.8e-05, 614.67245606], [1517029080000, 8.8e-05, 8.924e-05, 8.791e-05, 8.924e-05, 455.18379545], [1517029200000, 8.924e-05, 8.924e-05, 8.924e-05, 8.924e-05, 15.4146749], [1517029260000, 8.823e-05, 8.919e-05, 8.823e-05, 8.919e-05, 111.43180165], [1517029380000, 8.85e-05, 8.894e-05, 8.85e-05, 8.894e-05, 2689.0], [1517029440000, 8.84e-05, 8.84e-05, 8.84e-05, 8.84e-05, 263.78328209], [1517029500000, 8.84e-05, 8.86e-05, 8.84e-05, 8.86e-05, 556.35848791], [1517029560000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 162.68786273], [1517029680000, 8.806e-05, 8.806e-05, 8.806e-05, 8.806e-05, 112.3191346], [1517029860000, 8.833e-05, 8.833e-05, 8.809e-05, 8.809e-05, 110.47268315], [1517029920000, 8.809e-05, 8.881e-05, 8.806e-05, 8.881e-05, 2201.81809897], [1517029980000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 173.09944574], [1517030160000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 17.61863001], [1517030400000, 8.88e-05, 8.881e-05, 8.878e-05, 8.881e-05, 3150.01694235], [1517030580000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 70.0], [1517030640000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 2673.62152932], [1517030700000, 8.902e-05, 8.902e-05, 8.881e-05, 8.881e-05, 27.49954125], [1517030760000, 8.881e-05, 8.921e-05, 8.881e-05, 8.921e-05, 721.68896889], [1517030820000, 8.92e-05, 8.922e-05, 8.835e-05, 8.835e-05, 485.7173061], [1517030880000, 8.924e-05, 8.924e-05, 8.924e-05, 8.924e-05, 379.60459542], [1517030940000, 8.924e-05, 8.924e-05, 8.835e-05, 8.835e-05, 3111.69678213], [1517031000000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 58.52049656], [1517031120000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 100.301003], [1517031180000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 1890.24437684], [1517031240000, 8.811e-05, 8.835e-05, 8.811e-05, 8.835e-05, 176.22900299], [1517031300000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 503.46339746], [1517031360000, 8.835e-05, 8.924e-05, 8.835e-05, 8.835e-05, 31.75409582], [1517031480000, 8.924e-05, 8.924e-05, 8.924e-05, 8.924e-05, 37.44561242], [1517031720000, 8.822e-05, 8.822e-05, 8.807e-05, 8.807e-05, 697.65993047], [1517032140000, 8.903e-05, 8.903e-05, 8.903e-05, 8.903e-05, 29.986523], [1517032380000, 8.886e-05, 8.886e-05, 8.824e-05, 8.824e-05, 164.8896285], [1517032440000, 8.85e-05, 8.886e-05, 8.85e-05, 8.886e-05, 210.75151058], [1517032500000, 8.886e-05, 8.886e-05, 8.886e-05, 8.886e-05, 70.21100299], [1517032560000, 8.886e-05, 8.903e-05, 8.886e-05, 8.903e-05, 188.60758583], [1517032680000, 8.824e-05, 8.824e-05, 8.823e-05, 8.823e-05, 167.65883353], [1517032740000, 8.823e-05, 8.823e-05, 8.82e-05, 8.82e-05, 1228.34610571], [1517032800000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 25.82349469], [1517032860000, 8.807e-05, 8.82e-05, 8.8e-05, 8.82e-05, 336.70663738], [1517032920000, 8.799e-05, 8.82e-05, 8.799e-05, 8.82e-05, 448.0618809], [1517033160000, 8.818e-05, 8.82e-05, 8.818e-05, 8.82e-05, 796.41743935], [1517033280000, 8.801e-05, 8.801e-05, 8.801e-05, 8.801e-05, 968.90266863], [1517033340000, 8.801e-05, 8.801e-05, 8.801e-05, 8.801e-05, 1632.80978695], [1517033400000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 1012.3907173], [1517033460000, 8.801e-05, 8.801e-05, 8.801e-05, 8.801e-05, 22.821664], [1517033580000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 227.85508551], [1517033700000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 113.85915595], [1517033760000, 8.793e-05, 8.793e-05, 8.793e-05, 8.793e-05, 1154.51388889], [1517033820000, 8.792e-05, 8.792e-05, 8.791e-05, 8.791e-05, 73.0], [1517033880000, 8.791e-05, 8.791e-05, 8.791e-05, 8.791e-05, 377.0], [1517033940000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 12.13869868], [1517034120000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 452.60106596], [1517034180000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 2035.53676905], [1517034240000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 10.0], [1517034300000, 8.82e-05, 8.82e-05, 8.8e-05, 8.8e-05, 8043.051791], [1517034480000, 8.8e-05, 8.82e-05, 8.8e-05, 8.82e-05, 1344.6766071], [1517034540000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 166.89566071], [1517034600000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 338.0], [1517034660000, 8.819e-05, 8.819e-05, 8.819e-05, 8.819e-05, 99.83059324], [1517034720000, 8.819e-05, 8.819e-05, 8.819e-05, 8.819e-05, 26.37089127], [1517034780000, 8.8e-05, 8.819e-05, 8.789e-05, 8.819e-05, 500.42233152], [1517034960000, 8.789e-05, 8.789e-05, 8.789e-05, 8.789e-05, 536.4545513], [1517035020000, 8.79e-05, 8.79e-05, 8.79e-05, 8.79e-05, 56.0], [1517035080000, 8.819e-05, 8.819e-05, 8.819e-05, 8.819e-05, 7.57769911], [1517035140000, 8.79e-05, 8.819e-05, 8.79e-05, 8.819e-05, 497.354297], [1517035200000, 8.786e-05, 8.786e-05, 8.785e-05, 8.785e-05, 272.40050948], [1517035320000, 8.819e-05, 8.819e-05, 8.785e-05, 8.785e-05, 384.75062812], [1517035380000, 8.785e-05, 8.819e-05, 8.782e-05, 8.782e-05, 412.071], [1517035500000, 8.782e-05, 8.782e-05, 8.781e-05, 8.781e-05, 427.269], [1517035620000, 8.789e-05, 8.819e-05, 8.789e-05, 8.819e-05, 456.04312722], [1517035680000, 8.819e-05, 8.819e-05, 8.819e-05, 8.819e-05, 53.34577155], [1517035860000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 30.93723395], [1517035920000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 30.09100299], [1517035980000, 8.819e-05, 8.819e-05, 8.789e-05, 8.789e-05, 146.31727544], [1517036040000, 8.85e-05, 8.855e-05, 8.85e-05, 8.855e-05, 74.94106216], [1517036100000, 8.855e-05, 8.886e-05, 8.855e-05, 8.886e-05, 72.67841615], [1517036160000, 8.855e-05, 8.855e-05, 8.855e-05, 8.855e-05, 298.40899783], [1517036220000, 8.855e-05, 8.855e-05, 8.855e-05, 8.855e-05, 614.26165487], [1517036460000, 8.832e-05, 8.855e-05, 8.832e-05, 8.855e-05, 2222.32726194], [1517036640000, 8.8e-05, 8.855e-05, 8.8e-05, 8.855e-05, 2693.55619376], [1517036820000, 8.854e-05, 8.854e-05, 8.854e-05, 8.854e-05, 37.59202913], [1517036880000, 8.854e-05, 8.854e-05, 8.854e-05, 8.854e-05, 482.32175846], [1517036940000, 8.854e-05, 8.854e-05, 8.854e-05, 8.854e-05, 50.0], [1517037000000, 8.8e-05, 8.8e-05, 8.789e-05, 8.789e-05, 1178.75459589], [1517037060000, 8.789e-05, 8.8e-05, 8.789e-05, 8.8e-05, 678.25518394], [1517037120000, 8.8e-05, 8.802e-05, 8.8e-05, 8.802e-05, 976.87766663], [1517037420000, 8.807e-05, 8.807e-05, 8.807e-05, 8.807e-05, 100.0], [1517037600000, 8.808e-05, 8.808e-05, 8.803e-05, 8.803e-05, 500.0], [1517037660000, 8.848e-05, 8.848e-05, 8.848e-05, 8.848e-05, 12.432188], [1517037720000, 8.848e-05, 8.848e-05, 8.848e-05, 8.848e-05, 814.70637511], [1517037780000, 8.848e-05, 8.854e-05, 8.848e-05, 8.854e-05, 201.32946665], [1517037840000, 8.854e-05, 8.854e-05, 8.854e-05, 8.854e-05, 150.15309549], [1517037900000, 8.854e-05, 8.854e-05, 8.854e-05, 8.854e-05, 145.07857417], [1517037960000, 8.803e-05, 8.803e-05, 8.8e-05, 8.8e-05, 229.32946088], [1517038020000, 8.854e-05, 8.854e-05, 8.853e-05, 8.853e-05, 231.19517558], [1517038080000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 1664.42390247], [1517038320000, 8.801e-05, 8.801e-05, 8.781e-05, 8.781e-05, 1000.0], [1517038380000, 8.851e-05, 8.851e-05, 8.851e-05, 8.851e-05, 75.40450193], [1517038500000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 80.01468674], [1517038560000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 11.94311772], [1517038680000, 8.807e-05, 8.807e-05, 8.8e-05, 8.8e-05, 1898.60084812], [1517038740000, 8.781e-05, 8.781e-05, 8.75e-05, 8.75e-05, 3000.0], [1517038860000, 8.845e-05, 8.845e-05, 8.845e-05, 8.845e-05, 56.08219223], [1517038920000, 8.845e-05, 8.845e-05, 8.845e-05, 8.845e-05, 33.91780777], [1517038980000, 8.852e-05, 8.852e-05, 8.852e-05, 8.852e-05, 203.34387708], [1517039040000, 8.852e-05, 8.852e-05, 8.852e-05, 8.852e-05, 23.93764944], [1517039100000, 8.852e-05, 8.855e-05, 8.75e-05, 8.75e-05, 2130.45444269], [1517039220000, 8.838e-05, 8.838e-05, 8.838e-05, 8.838e-05, 37.88016281], [1517039280000, 8.838e-05, 8.838e-05, 8.693e-05, 8.693e-05, 17029.75072253], [1517039340000, 8.772e-05, 8.772e-05, 8.501e-05, 8.501e-05, 147295.42201097], [1517039400000, 8.616e-05, 8.794e-05, 8.485e-05, 8.767e-05, 51133.04493299], [1517039460000, 8.623e-05, 8.767e-05, 8.623e-05, 8.757e-05, 5370.59554793], [1517039520000, 8.756e-05, 8.756e-05, 8.71e-05, 8.754e-05, 25272.30309388], [1517039580000, 8.752e-05, 8.752e-05, 8.732e-05, 8.751e-05, 6699.92726883], [1517039640000, 8.75e-05, 8.75e-05, 8.75e-05, 8.75e-05, 3446.65915356], [1517039700000, 8.751e-05, 8.796e-05, 8.749e-05, 8.795e-05, 995.3381372], [1517039760000, 8.794e-05, 8.795e-05, 8.794e-05, 8.794e-05, 539.85337123], [1517039820000, 8.759e-05, 8.791e-05, 8.708e-05, 8.789e-05, 370.0068552], [1517039940000, 8.788e-05, 8.788e-05, 8.787e-05, 8.788e-05, 4730.62900136], [1517040000000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 142.10644712], [1517040120000, 8.784e-05, 8.784e-05, 8.784e-05, 8.784e-05, 10.16456149], [1517040240000, 8.783e-05, 8.783e-05, 8.722e-05, 8.722e-05, 195.361003], [1517040300000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 2955.49973916], [1517040360000, 8.782e-05, 8.783e-05, 8.782e-05, 8.783e-05, 105.84250635], [1517040420000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 7611.98559082], [1517040480000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 837.64001605], [1517040540000, 8.732e-05, 8.732e-05, 8.732e-05, 8.732e-05, 141.94467039], [1517040600000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 14.47240122], [1517040720000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 242.82838808], [1517040780000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 150.0], [1517040840000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 3500.0], [1517040900000, 8.733e-05, 8.733e-05, 8.733e-05, 8.733e-05, 39.0], [1517041080000, 8.734e-05, 8.788e-05, 8.666e-05, 8.788e-05, 5696.21760464], [1517041200000, 8.786e-05, 8.786e-05, 8.786e-05, 8.786e-05, 45.6974327], [1517041260000, 8.786e-05, 8.786e-05, 8.786e-05, 8.786e-05, 20.0], [1517041320000, 8.786e-05, 8.786e-05, 8.731e-05, 8.731e-05, 1412.76661533], [1517041380000, 8.73e-05, 8.731e-05, 8.73e-05, 8.731e-05, 9829.38140538], [1517041440000, 8.731e-05, 8.731e-05, 8.731e-05, 8.731e-05, 3255.0], [1517041500000, 8.731e-05, 8.787e-05, 8.731e-05, 8.731e-05, 8891.21304258], [1517041560000, 8.731e-05, 8.77e-05, 8.731e-05, 8.77e-05, 616.48698048], [1517041620000, 8.709e-05, 8.77e-05, 8.709e-05, 8.77e-05, 3216.39364338], [1517041680000, 8.77e-05, 8.77e-05, 8.77e-05, 8.77e-05, 79.26974249], [1517041740000, 8.77e-05, 8.771e-05, 8.77e-05, 8.77e-05, 471.70892125], [1517041860000, 8.785e-05, 8.785e-05, 8.785e-05, 8.785e-05, 8.91135848], [1517042100000, 8.713e-05, 8.713e-05, 8.709e-05, 8.712e-05, 2359.60846739], [1517042160000, 8.778e-05, 8.778e-05, 8.72e-05, 8.72e-05, 41.28260908], [1517042220000, 8.778e-05, 8.784e-05, 8.778e-05, 8.784e-05, 804.34462841], [1517042340000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 11.38433515], [1517042460000, 8.779e-05, 8.779e-05, 8.779e-05, 8.779e-05, 1923.58502032], [1517042520000, 8.751e-05, 8.779e-05, 8.751e-05, 8.779e-05, 1293.56376656], [1517042580000, 8.779e-05, 8.779e-05, 8.711e-05, 8.711e-05, 249.91768451], [1517042640000, 8.712e-05, 8.712e-05, 8.711e-05, 8.712e-05, 186.5744494], [1517042760000, 8.745e-05, 8.778e-05, 8.712e-05, 8.778e-05, 1354.05421649], [1517042820000, 8.778e-05, 8.778e-05, 8.778e-05, 8.778e-05, 89.04076461], [1517042880000, 8.778e-05, 8.778e-05, 8.778e-05, 8.778e-05, 140.62690164], [1517042940000, 8.741e-05, 8.778e-05, 8.741e-05, 8.778e-05, 2015.2999191], [1517043000000, 8.777e-05, 8.777e-05, 8.74e-05, 8.777e-05, 6339.725021], [1517043060000, 8.765e-05, 8.778e-05, 8.765e-05, 8.778e-05, 38.36215933], [1517043180000, 8.778e-05, 8.778e-05, 8.778e-05, 8.778e-05, 75.0], [1517043240000, 8.778e-05, 8.78e-05, 8.778e-05, 8.78e-05, 250.8802271], [1517043300000, 8.78e-05, 8.789e-05, 8.78e-05, 8.789e-05, 3875.83895918], [1517043360000, 8.785e-05, 8.785e-05, 8.785e-05, 8.785e-05, 463.29652265], [1517043420000, 8.785e-05, 8.785e-05, 8.784e-05, 8.784e-05, 43.04804836], [1517043480000, 8.752e-05, 8.752e-05, 8.752e-05, 8.752e-05, 110.69097736], [1517043540000, 8.784e-05, 8.784e-05, 8.784e-05, 8.784e-05, 70.7386543], [1517043600000, 8.752e-05, 8.752e-05, 8.752e-05, 8.752e-05, 524.77399001], [1517043660000, 8.784e-05, 8.784e-05, 8.784e-05, 8.784e-05, 283.89685792], [1517043720000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 2638.71654122], [1517043780000, 8.784e-05, 8.784e-05, 8.784e-05, 8.784e-05, 15.28947186], [1517043840000, 8.784e-05, 8.784e-05, 8.784e-05, 8.784e-05, 780.24959042], [1517043900000, 8.784e-05, 8.784e-05, 8.737e-05, 8.737e-05, 5922.35137344], [1517043960000, 8.737e-05, 8.737e-05, 8.737e-05, 8.737e-05, 3023.24661103], [1517044020000, 8.737e-05, 8.784e-05, 8.737e-05, 8.784e-05, 2726.64257434], [1517044080000, 8.784e-05, 8.784e-05, 8.784e-05, 8.784e-05, 1295.24], [1517044140000, 8.789e-05, 8.789e-05, 8.789e-05, 8.789e-05, 311.52018293], [1517044200000, 8.789e-05, 8.789e-05, 8.789e-05, 8.789e-05, 288.32503125], [1517044260000, 8.749e-05, 8.789e-05, 8.749e-05, 8.789e-05, 391.61591512], [1517044320000, 8.789e-05, 8.789e-05, 8.789e-05, 8.789e-05, 785.04009483], [1517044440000, 8.789e-05, 8.789e-05, 8.789e-05, 8.789e-05, 375.72821842], [1517044500000, 8.75e-05, 8.75e-05, 8.734e-05, 8.734e-05, 842.75994741], [1517044800000, 8.737e-05, 8.737e-05, 8.737e-05, 8.737e-05, 55.66688933], [1517044860000, 8.737e-05, 8.737e-05, 8.737e-05, 8.737e-05, 39.01405044], [1517044920000, 8.737e-05, 8.782e-05, 8.737e-05, 8.782e-05, 48.44505861], [1517045040000, 8.737e-05, 8.737e-05, 8.7e-05, 8.7e-05, 16042.27913873], [1517045160000, 8.743e-05, 8.777e-05, 8.743e-05, 8.777e-05, 151.1], [1517045220000, 8.752e-05, 8.752e-05, 8.752e-05, 8.752e-05, 10.0], [1517045400000, 8.781e-05, 8.782e-05, 8.781e-05, 8.782e-05, 252.4620226], [1517045460000, 8.782e-05, 8.782e-05, 8.782e-05, 8.782e-05, 1607.59826867], [1517045580000, 8.762e-05, 8.762e-05, 8.762e-05, 8.762e-05, 13.30478022], [1517045640000, 8.781e-05, 8.783e-05, 8.781e-05, 8.783e-05, 34.46093602], [1517045700000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 50.151003], [1517045760000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 746.50088455], [1517045820000, 8.784e-05, 8.788e-05, 8.783e-05, 8.788e-05, 64.9125], [1517045880000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 200.0], [1517045940000, 8.788e-05, 8.789e-05, 8.788e-05, 8.789e-05, 428.76868408], [1517046000000, 8.788e-05, 8.789e-05, 8.788e-05, 8.789e-05, 2269.273109], [1517046060000, 8.788e-05, 8.789e-05, 8.679e-05, 8.789e-05, 11744.02750017], [1517046180000, 8.786e-05, 8.788e-05, 8.786e-05, 8.788e-05, 1589.35950893], [1517046240000, 8.787e-05, 8.787e-05, 8.787e-05, 8.787e-05, 7.01284076], [1517046300000, 8.787e-05, 8.787e-05, 8.787e-05, 8.787e-05, 97.3072181], [1517046480000, 8.787e-05, 8.788e-05, 8.787e-05, 8.788e-05, 16.25517171], [1517046600000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 38.02476804], [1517046660000, 8.788e-05, 8.788e-05, 8.787e-05, 8.787e-05, 229.95519518], [1517046720000, 8.787e-05, 8.789e-05, 8.787e-05, 8.789e-05, 916.18149754], [1517046780000, 8.789e-05, 8.789e-05, 8.787e-05, 8.787e-05, 12132.16545306], [1517046840000, 8.79e-05, 8.79e-05, 8.79e-05, 8.79e-05, 61.06499978], [1517046900000, 8.79e-05, 8.79e-05, 8.79e-05, 8.79e-05, 91.46785539], [1517047020000, 8.789e-05, 8.789e-05, 8.789e-05, 8.789e-05, 119.05165769], [1517047140000, 8.789e-05, 8.789e-05, 8.776e-05, 8.776e-05, 2155.48054951], [1517047200000, 8.789e-05, 8.789e-05, 8.776e-05, 8.776e-05, 756.50376257], [1517047260000, 8.776e-05, 8.776e-05, 8.776e-05, 8.776e-05, 200.0], [1517047320000, 8.789e-05, 8.789e-05, 8.776e-05, 8.776e-05, 286.58472934], [1517047380000, 8.789e-05, 8.789e-05, 8.776e-05, 8.789e-05, 620.67597116], [1517047440000, 8.789e-05, 8.789e-05, 8.776e-05, 8.776e-05, 427.18294388], [1517047500000, 8.776e-05, 8.776e-05, 8.776e-05, 8.776e-05, 197.93322351], [1517047560000, 8.776e-05, 8.776e-05, 8.681e-05, 8.681e-05, 2684.24671306], [1517047620000, 8.774e-05, 8.786e-05, 8.774e-05, 8.784e-05, 274.0], [1517047680000, 8.785e-05, 8.785e-05, 8.718e-05, 8.718e-05, 17153.57220807], [1517047740000, 8.785e-05, 8.785e-05, 8.785e-05, 8.785e-05, 156.34370247], [1517047800000, 8.787e-05, 8.787e-05, 8.785e-05, 8.785e-05, 993.66597588], [1517047920000, 8.785e-05, 8.785e-05, 8.785e-05, 8.785e-05, 30.42866639], [1517047980000, 8.785e-05, 8.787e-05, 8.785e-05, 8.787e-05, 212.47350031], [1517048100000, 8.787e-05, 8.788e-05, 8.787e-05, 8.788e-05, 761.05043616], [1517048160000, 8.788e-05, 8.788e-05, 8.75e-05, 8.75e-05, 69.10479182], [1517048220000, 8.74e-05, 8.79e-05, 8.699e-05, 8.79e-05, 4406.59421551], [1517048280000, 8.79e-05, 8.79e-05, 8.711e-05, 8.711e-05, 1360.02402471], [1517048400000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 2656.12198452], [1517048460000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 1035.49120217], [1517048520000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 1224.50879783], [1517048580000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 7.66015179], [1517048760000, 8.788e-05, 8.789e-05, 8.788e-05, 8.789e-05, 168.27009694], [1517049060000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 191.12142983], [1517049120000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 51.16943958], [1517049180000, 8.755e-05, 8.755e-05, 8.755e-05, 8.755e-05, 1379.51959508], [1517049240000, 8.755e-05, 8.755e-05, 8.755e-05, 8.755e-05, 1098.04806101], [1517049300000, 8.755e-05, 8.788e-05, 8.701e-05, 8.788e-05, 4192.86589458], [1517049420000, 8.7e-05, 8.787e-05, 8.665e-05, 8.7e-05, 9776.46919425], [1517049480000, 8.775e-05, 8.786e-05, 8.7e-05, 8.7e-05, 665.84405096], [1517049540000, 8.742e-05, 8.742e-05, 8.742e-05, 8.742e-05, 575.17449278], [1517049600000, 8.701e-05, 8.701e-05, 8.701e-05, 8.701e-05, 8.0], [1517049660000, 8.786e-05, 8.787e-05, 8.786e-05, 8.786e-05, 337.39406946], [1517049720000, 8.787e-05, 8.788e-05, 8.702e-05, 8.702e-05, 1429.37353483], [1517049780000, 8.784e-05, 8.784e-05, 8.784e-05, 8.784e-05, 34.00568182], [1517049840000, 8.713e-05, 8.784e-05, 8.713e-05, 8.784e-05, 1302.93253671], [1517049900000, 8.785e-05, 8.785e-05, 8.784e-05, 8.784e-05, 2090.66927399], [1517049960000, 8.715e-05, 8.715e-05, 8.715e-05, 8.715e-05, 34.50946644], [1517050020000, 8.784e-05, 8.784e-05, 8.784e-05, 8.784e-05, 103.27588298], [1517050080000, 8.784e-05, 8.786e-05, 8.784e-05, 8.786e-05, 30.7145232], [1517050140000, 8.786e-05, 8.786e-05, 8.666e-05, 8.773e-05, 4134.35484335], [1517050200000, 8.772e-05, 8.772e-05, 8.772e-05, 8.772e-05, 100.0], [1517050320000, 8.771e-05, 8.771e-05, 8.771e-05, 8.771e-05, 31.27751946], [1517050380000, 8.771e-05, 8.771e-05, 8.771e-05, 8.771e-05, 188.17896542], [1517050440000, 8.771e-05, 8.786e-05, 8.771e-05, 8.786e-05, 700.71433776], [1517050500000, 8.786e-05, 8.787e-05, 8.786e-05, 8.787e-05, 508.97011506], [1517050560000, 8.785e-05, 8.787e-05, 8.785e-05, 8.787e-05, 864.16600299], [1517050620000, 8.731e-05, 8.787e-05, 8.731e-05, 8.787e-05, 594.20223168], [1517050740000, 8.73e-05, 8.787e-05, 8.73e-05, 8.787e-05, 1060.37164681], [1517050800000, 8.787e-05, 8.787e-05, 8.787e-05, 8.787e-05, 38.22130129], [1517050920000, 8.73e-05, 8.73e-05, 8.73e-05, 8.73e-05, 762.66618183], [1517050980000, 8.73e-05, 8.787e-05, 8.73e-05, 8.787e-05, 427.35256671], [1517051040000, 8.729e-05, 8.729e-05, 8.729e-05, 8.729e-05, 48.13637096], [1517051100000, 8.787e-05, 8.787e-05, 8.73e-05, 8.73e-05, 238.09032887], [1517051160000, 8.729e-05, 8.729e-05, 8.729e-05, 8.729e-05, 81.83336121], [1517051220000, 8.73e-05, 8.73e-05, 8.73e-05, 8.73e-05, 133.54340216], [1517051340000, 8.73e-05, 8.73e-05, 8.73e-05, 8.73e-05, 169.03886796], [1517051400000, 8.782e-05, 8.782e-05, 8.782e-05, 8.782e-05, 28.75994424], [1517051460000, 8.782e-05, 8.782e-05, 8.782e-05, 8.782e-05, 9.0], [1517051640000, 8.782e-05, 8.782e-05, 8.782e-05, 8.782e-05, 488.06616526], [1517051760000, 8.782e-05, 8.782e-05, 8.782e-05, 8.782e-05, 9.93336169], [1517051820000, 8.782e-05, 8.788e-05, 8.782e-05, 8.788e-05, 230.45145493], [1517051880000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 21682.91493136], [1517051940000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 677.32977524], [1517052000000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 708.43330971], [1517052060000, 8.788e-05, 8.788e-05, 8.774e-05, 8.788e-05, 5049.39797426], [1517052120000, 8.788e-05, 8.788e-05, 8.774e-05, 8.774e-05, 218.0], [1517052180000, 8.774e-05, 8.774e-05, 8.774e-05, 8.774e-05, 4088.54206159], [1517052300000, 8.774e-05, 8.774e-05, 8.774e-05, 8.774e-05, 463.33145786], [1517052360000, 8.774e-05, 8.774e-05, 8.774e-05, 8.774e-05, 46.53905153], [1517052420000, 8.774e-05, 8.774e-05, 8.774e-05, 8.774e-05, 132.961], [1517052480000, 8.73e-05, 8.73e-05, 8.73e-05, 8.73e-05, 13.96680534], [1517052540000, 8.73e-05, 8.774e-05, 8.73e-05, 8.774e-05, 444.70785839], [1517052600000, 8.774e-05, 8.774e-05, 8.774e-05, 8.774e-05, 1986.15683003], [1517052660000, 8.774e-05, 8.774e-05, 8.774e-05, 8.774e-05, 242.72193054], [1517052720000, 8.774e-05, 8.774e-05, 8.774e-05, 8.774e-05, 90.27806946], [1517052780000, 8.774e-05, 8.774e-05, 8.665e-05, 8.693e-05, 10262.65450013], [1517052840000, 8.747e-05, 8.786e-05, 8.665e-05, 8.709e-05, 1228.97064309], [1517052900000, 8.709e-05, 8.784e-05, 8.709e-05, 8.711e-05, 332.38109792], [1517052960000, 8.691e-05, 8.771e-05, 8.65e-05, 8.771e-05, 1105.18481029], [1517053020000, 8.711e-05, 8.758e-05, 8.67e-05, 8.758e-05, 2552.35267231], [1517053080000, 8.77e-05, 8.784e-05, 8.7e-05, 8.784e-05, 1879.89986948], [1517053140000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 42.48243938], [1517053200000, 8.702e-05, 8.776e-05, 8.702e-05, 8.726e-05, 1312.34478712], [1517053260000, 8.726e-05, 8.783e-05, 8.671e-05, 8.783e-05, 7105.96169738], [1517053320000, 8.77e-05, 8.776e-05, 8.77e-05, 8.776e-05, 347.43648677], [1517053380000, 8.713e-05, 8.782e-05, 8.713e-05, 8.782e-05, 2336.75474386], [1517053500000, 8.779e-05, 8.779e-05, 8.779e-05, 8.779e-05, 100.301003], [1517053560000, 8.779e-05, 8.779e-05, 8.739e-05, 8.739e-05, 679.88655257], [1517053680000, 8.739e-05, 8.782e-05, 8.739e-05, 8.782e-05, 630.47596715], [1517053740000, 8.782e-05, 8.782e-05, 8.782e-05, 8.782e-05, 420.64672683], [1517053800000, 8.78e-05, 8.78e-05, 8.78e-05, 8.78e-05, 90.88838269], [1517053860000, 8.739e-05, 8.739e-05, 8.713e-05, 8.713e-05, 623.53044833], [1517053920000, 8.779e-05, 8.779e-05, 8.779e-05, 8.779e-05, 41.0], [1517053980000, 8.777e-05, 8.777e-05, 8.777e-05, 8.777e-05, 423.0], [1517054040000, 8.777e-05, 8.777e-05, 8.777e-05, 8.777e-05, 20.0], [1517054160000, 8.775e-05, 8.784e-05, 8.775e-05, 8.777e-05, 1090.47945244], [1517054220000, 8.777e-05, 8.777e-05, 8.777e-05, 8.777e-05, 387.97842217], [1517054280000, 8.777e-05, 8.777e-05, 8.777e-05, 8.777e-05, 29.64764626], [1517054400000, 8.714e-05, 8.714e-05, 8.714e-05, 8.714e-05, 1145.915986], [1517054460000, 8.777e-05, 8.777e-05, 8.724e-05, 8.724e-05, 156.51668248], [1517054520000, 8.776e-05, 8.807e-05, 8.776e-05, 8.79e-05, 21194.86959283], [1517054580000, 8.79e-05, 8.808e-05, 8.79e-05, 8.79e-05, 4743.16797123], [1517054640000, 8.721e-05, 8.721e-05, 8.721e-05, 8.721e-05, 564.10777154], [1517054700000, 8.719e-05, 8.721e-05, 8.719e-05, 8.719e-05, 43.40331705], [1517054820000, 8.72e-05, 8.79e-05, 8.72e-05, 8.79e-05, 608.39833424], [1517054940000, 8.79e-05, 8.79e-05, 8.72e-05, 8.72e-05, 74.20328708], [1517055060000, 8.72e-05, 8.79e-05, 8.72e-05, 8.79e-05, 320.12885714], [1517055180000, 8.72e-05, 8.72e-05, 8.72e-05, 8.72e-05, 25.0], [1517055300000, 8.79e-05, 8.79e-05, 8.72e-05, 8.72e-05, 868.75131495], [1517055360000, 8.72e-05, 8.763e-05, 8.72e-05, 8.72e-05, 646.12327202], [1517055420000, 8.72e-05, 8.798e-05, 8.72e-05, 8.798e-05, 67.77858804], [1517055540000, 8.797e-05, 8.797e-05, 8.797e-05, 8.797e-05, 15.66646698], [1517055660000, 8.757e-05, 8.757e-05, 8.715e-05, 8.715e-05, 1548.2506192], [1517055720000, 8.715e-05, 8.715e-05, 8.713e-05, 8.713e-05, 3086.21239355], [1517055780000, 8.691e-05, 8.692e-05, 8.653e-05, 8.665e-05, 2698.71453796], [1517055840000, 8.695e-05, 8.695e-05, 8.695e-05, 8.695e-05, 13.58695652], [1517055900000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 117.319868], [1517055960000, 8.777e-05, 8.777e-05, 8.768e-05, 8.768e-05, 170.32903553], [1517056080000, 8.748e-05, 8.748e-05, 8.748e-05, 8.748e-05, 85.31665805], [1517056260000, 8.725e-05, 8.75e-05, 8.703e-05, 8.75e-05, 5821.13958773], [1517056320000, 8.75e-05, 8.75e-05, 8.703e-05, 8.75e-05, 10066.26912977], [1517056380000, 8.75e-05, 8.75e-05, 8.71e-05, 8.75e-05, 364.27008209], [1517056500000, 8.75e-05, 8.75e-05, 8.729e-05, 8.729e-05, 250.56160676], [1517056560000, 8.729e-05, 8.75e-05, 8.729e-05, 8.75e-05, 4071.6872745], [1517056620000, 8.75e-05, 8.75e-05, 8.75e-05, 8.75e-05, 4519.348784], [1517056680000, 8.72e-05, 8.75e-05, 8.711e-05, 8.75e-05, 914.32242507], [1517056740000, 8.755e-05, 8.772e-05, 8.755e-05, 8.772e-05, 253.81987445], [1517056800000, 8.789e-05, 8.789e-05, 8.789e-05, 8.789e-05, 90.0], [1517056860000, 8.793e-05, 8.8e-05, 8.793e-05, 8.8e-05, 8213.9462392], [1517056920000, 8.807e-05, 8.807e-05, 8.794e-05, 8.8e-05, 3155.73555409], [1517056980000, 8.785e-05, 8.785e-05, 8.78e-05, 8.78e-05, 217.45356664], [1517057040000, 8.794e-05, 8.794e-05, 8.794e-05, 8.794e-05, 36.76888902], [1517057100000, 8.781e-05, 8.781e-05, 8.75e-05, 8.75e-05, 839.6514321], [1517057160000, 8.75e-05, 8.75e-05, 8.75e-05, 8.75e-05, 194.33179723], [1517057220000, 8.78e-05, 8.806e-05, 8.75e-05, 8.806e-05, 5304.58414594], [1517057280000, 8.75e-05, 8.75e-05, 8.749e-05, 8.749e-05, 766.05352504], [1517057340000, 8.806e-05, 8.806e-05, 8.749e-05, 8.806e-05, 7942.371118], [1517057400000, 8.804e-05, 8.806e-05, 8.804e-05, 8.806e-05, 3935.65779693], [1517057460000, 8.806e-05, 8.806e-05, 8.806e-05, 8.806e-05, 2457.77929837], [1517057520000, 8.755e-05, 8.755e-05, 8.71e-05, 8.71e-05, 2174.36951788], [1517057580000, 8.753e-05, 8.753e-05, 8.753e-05, 8.753e-05, 71.57553633], [1517057640000, 8.805e-05, 8.805e-05, 8.805e-05, 8.805e-05, 77.17075799], [1517057700000, 8.753e-05, 8.76e-05, 8.753e-05, 8.76e-05, 909.41263085], [1517057760000, 8.76e-05, 8.76e-05, 8.732e-05, 8.732e-05, 301.82382451], [1517057820000, 8.731e-05, 8.731e-05, 8.731e-05, 8.731e-05, 37.37821642], [1517057880000, 8.732e-05, 8.799e-05, 8.732e-05, 8.799e-05, 501.88598864], [1517057940000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 200.0], [1517058000000, 8.732e-05, 8.732e-05, 8.7e-05, 8.7e-05, 7983.39288678], [1517058060000, 8.709e-05, 8.709e-05, 8.709e-05, 8.709e-05, 325.6892193], [1517058120000, 8.709e-05, 8.711e-05, 8.709e-05, 8.711e-05, 1104.31322371], [1517058240000, 8.786e-05, 8.786e-05, 8.786e-05, 8.786e-05, 11.62051194], [1517058360000, 8.715e-05, 8.785e-05, 8.715e-05, 8.785e-05, 954.63404413], [1517058480000, 8.785e-05, 8.785e-05, 8.785e-05, 8.785e-05, 1352.67874707], [1517058600000, 8.785e-05, 8.797e-05, 8.785e-05, 8.797e-05, 2243.81294255], [1517058660000, 8.797e-05, 8.798e-05, 8.715e-05, 8.715e-05, 3077.13721035], [1517058960000, 8.715e-05, 8.715e-05, 8.715e-05, 8.715e-05, 111.51184108], [1517059260000, 8.717e-05, 8.788e-05, 8.715e-05, 8.715e-05, 2337.83560823], [1517059320000, 8.787e-05, 8.788e-05, 8.787e-05, 8.788e-05, 385.43431381], [1517059440000, 8.787e-05, 8.788e-05, 8.787e-05, 8.787e-05, 1147.35469893], [1517059500000, 8.787e-05, 8.787e-05, 8.787e-05, 8.787e-05, 79.43275498], [1517059620000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 20.0], [1517059800000, 8.718e-05, 8.74e-05, 8.718e-05, 8.74e-05, 71.8429455], [1517059860000, 8.74e-05, 8.796e-05, 8.715e-05, 8.715e-05, 4223.17628343], [1517059920000, 8.794e-05, 8.794e-05, 8.715e-05, 8.715e-05, 947.6659522], [1517059980000, 8.79e-05, 8.79e-05, 8.79e-05, 8.79e-05, 241.32861348], [1517060040000, 8.788e-05, 8.795e-05, 8.788e-05, 8.795e-05, 3288.51899291], [1517060100000, 8.789e-05, 8.794e-05, 8.789e-05, 8.794e-05, 3122.67671865], [1517060160000, 8.794e-05, 8.799e-05, 8.794e-05, 8.799e-05, 4418.73460424], [1517060220000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 374.1159252], [1517060280000, 8.8e-05, 8.8e-05, 8.799e-05, 8.799e-05, 1156.86783512], [1517060340000, 8.8e-05, 8.8e-05, 8.799e-05, 8.8e-05, 934.84881023], [1517060400000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 133.21791101], [1517060520000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 768.42969273], [1517060640000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 934.05383055], [1517060700000, 8.754e-05, 8.755e-05, 8.754e-05, 8.755e-05, 1102.0], [1517060760000, 8.754e-05, 8.799e-05, 8.754e-05, 8.799e-05, 572.49155571], [1517060940000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 150.0], [1517061000000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 120.32674876], [1517061240000, 8.757e-05, 8.78e-05, 8.75e-05, 8.78e-05, 4872.97754442], [1517061300000, 8.78e-05, 8.78e-05, 8.78e-05, 8.78e-05, 916.01249296], [1517061360000, 8.78e-05, 8.78e-05, 8.78e-05, 8.78e-05, 285.2392], [1517061420000, 8.78e-05, 8.78e-05, 8.771e-05, 8.771e-05, 2201.28835671], [1517061480000, 8.758e-05, 8.758e-05, 8.757e-05, 8.757e-05, 890.40214628], [1517061600000, 8.745e-05, 8.745e-05, 8.7e-05, 8.744e-05, 10020.12510326], [1517061660000, 8.701e-05, 8.708e-05, 8.7e-05, 8.708e-05, 4323.12410525], [1517061720000, 8.709e-05, 8.76e-05, 8.699e-05, 8.759e-05, 12303.36632283], [1517061780000, 8.75e-05, 8.759e-05, 8.7e-05, 8.701e-05, 11325.47497391], [1517061840000, 8.701e-05, 8.701e-05, 8.7e-05, 8.7e-05, 2727.0], [1517061900000, 8.73e-05, 8.75e-05, 8.73e-05, 8.75e-05, 2023.19640336], [1517061960000, 8.75e-05, 8.75e-05, 8.75e-05, 8.75e-05, 1694.42696164], [1517062140000, 8.722e-05, 8.723e-05, 8.671e-05, 8.671e-05, 13422.19354935], [1517062200000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 115.69305988], [1517062260000, 8.76e-05, 8.76e-05, 8.75e-05, 8.76e-05, 343.3581134], [1517062320000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 691.92332962], [1517062380000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 41.09589041], [1517062440000, 8.76e-05, 8.76e-05, 8.75e-05, 8.75e-05, 1486.19204641], [1517062500000, 8.75e-05, 8.75e-05, 8.75e-05, 8.75e-05, 3512.00271765], [1517062560000, 8.75e-05, 8.75e-05, 8.75e-05, 8.75e-05, 2860.96788748], [1517062740000, 8.74e-05, 8.751e-05, 8.716e-05, 8.751e-05, 6076.72951564], [1517062800000, 8.751e-05, 8.751e-05, 8.716e-05, 8.716e-05, 3784.54602651], [1517062860000, 8.716e-05, 8.716e-05, 8.716e-05, 8.716e-05, 505.0880383], [1517062980000, 8.751e-05, 8.751e-05, 8.751e-05, 8.751e-05, 365.13076213], [1517063040000, 8.717e-05, 8.777e-05, 8.717e-05, 8.777e-05, 261.07942462], [1517063100000, 8.776e-05, 8.776e-05, 8.7e-05, 8.776e-05, 3228.78701404], [1517063340000, 8.711e-05, 8.776e-05, 8.711e-05, 8.776e-05, 506.64110594], [1517063400000, 8.776e-05, 8.776e-05, 8.776e-05, 8.776e-05, 12.88936627], [1517063460000, 8.776e-05, 8.783e-05, 8.776e-05, 8.783e-05, 291.9731652], [1517063520000, 8.783e-05, 8.788e-05, 8.783e-05, 8.785e-05, 584.13278611], [1517063580000, 8.785e-05, 8.785e-05, 8.785e-05, 8.785e-05, 166.2421098], [1517063640000, 8.788e-05, 8.788e-05, 8.785e-05, 8.785e-05, 479.39923859], [1517063700000, 8.785e-05, 8.788e-05, 8.785e-05, 8.788e-05, 79.00730156], [1517063760000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 1417.58593201], [1517063820000, 8.785e-05, 8.788e-05, 8.783e-05, 8.788e-05, 1670.02501816], [1517063880000, 8.785e-05, 8.785e-05, 8.783e-05, 8.783e-05, 1172.48083435], [1517064180000, 8.783e-05, 8.79e-05, 8.783e-05, 8.79e-05, 71.79191381], [1517064300000, 8.75e-05, 8.788e-05, 8.75e-05, 8.788e-05, 146.53067513], [1517064480000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 126.12944534], [1517064600000, 8.788e-05, 8.798e-05, 8.788e-05, 8.798e-05, 795.31870764], [1517064660000, 8.756e-05, 8.756e-05, 8.75e-05, 8.75e-05, 3041.29000133], [1517064720000, 8.798e-05, 8.798e-05, 8.798e-05, 8.798e-05, 5.93], [1517064780000, 8.798e-05, 8.798e-05, 8.797e-05, 8.798e-05, 4177.91742858], [1517064840000, 8.798e-05, 8.798e-05, 8.798e-05, 8.798e-05, 1156.62218288], [1517065020000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 191.1901074], [1517065140000, 8.79e-05, 8.79e-05, 8.79e-05, 8.79e-05, 38.46451787], [1517065200000, 8.76e-05, 8.79e-05, 8.75e-05, 8.79e-05, 3003.87923673], [1517065260000, 8.755e-05, 8.755e-05, 8.75e-05, 8.75e-05, 40.0], [1517065320000, 8.75e-05, 8.79e-05, 8.75e-05, 8.79e-05, 1861.24632391], [1517065380000, 8.751e-05, 8.751e-05, 8.751e-05, 8.751e-05, 114.5583362], [1517065440000, 8.79e-05, 8.81e-05, 8.79e-05, 8.81e-05, 197.56746086], [1517065500000, 8.758e-05, 8.758e-05, 8.758e-05, 8.758e-05, 343.40031971], [1517065860000, 8.819e-05, 8.83e-05, 8.819e-05, 8.82e-05, 560.39110716], [1517065920000, 8.819e-05, 8.819e-05, 8.818e-05, 8.818e-05, 115.13115025], [1517065980000, 8.771e-05, 8.771e-05, 8.771e-05, 8.771e-05, 14.9625], [1517066040000, 8.816e-05, 8.816e-05, 8.816e-05, 8.816e-05, 75.04096302], [1517066100000, 8.781e-05, 8.799e-05, 8.762e-05, 8.799e-05, 4995.40903181], [1517066160000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 30.0], [1517066220000, 8.761e-05, 8.799e-05, 8.76e-05, 8.799e-05, 11536.66887443], [1517066280000, 8.8e-05, 8.814e-05, 8.8e-05, 8.814e-05, 7569.17383229], [1517066340000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 970.05678548], [1517066400000, 8.77e-05, 8.77e-05, 8.77e-05, 8.77e-05, 284.35005701], [1517066460000, 8.763e-05, 8.763e-05, 8.75e-05, 8.75e-05, 25518.24888972], [1517066520000, 8.75e-05, 8.75e-05, 8.75e-05, 8.75e-05, 27.0244104], [1517066580000, 8.819e-05, 8.819e-05, 8.758e-05, 8.758e-05, 79.53314779], [1517066640000, 8.819e-05, 8.821e-05, 8.819e-05, 8.82e-05, 152.28391982], [1517066700000, 8.821e-05, 8.842e-05, 8.821e-05, 8.821e-05, 455.23503335], [1517066760000, 8.841e-05, 8.841e-05, 8.82e-05, 8.82e-05, 2131.7044106], [1517066820000, 8.842e-05, 8.842e-05, 8.842e-05, 8.842e-05, 87.77658146], [1517066880000, 8.855e-05, 8.86e-05, 8.8e-05, 8.86e-05, 1278.45350247], [1517066940000, 8.82e-05, 8.86e-05, 8.783e-05, 8.783e-05, 2916.21229983], [1517067000000, 8.861e-05, 8.861e-05, 8.86e-05, 8.86e-05, 1225.85353771], [1517067060000, 8.86e-05, 8.86e-05, 8.784e-05, 8.784e-05, 336.20204281], [1517067120000, 8.785e-05, 8.785e-05, 8.785e-05, 8.785e-05, 86.04020201], [1517067360000, 8.791e-05, 8.85e-05, 8.791e-05, 8.85e-05, 560.1839883], [1517067420000, 8.85e-05, 8.855e-05, 8.742e-05, 8.759e-05, 11759.84053944], [1517067480000, 8.768e-05, 8.768e-05, 8.768e-05, 8.768e-05, 114.33622263], [1517067540000, 8.842e-05, 8.842e-05, 8.842e-05, 8.842e-05, 308.31614091], [1517067600000, 8.845e-05, 8.845e-05, 8.845e-05, 8.845e-05, 514.90028434], [1517067660000, 8.855e-05, 8.855e-05, 8.842e-05, 8.842e-05, 1559.44233162], [1517067840000, 8.838e-05, 8.838e-05, 8.838e-05, 8.838e-05, 111.00548879], [1517067900000, 8.839e-05, 8.843e-05, 8.8e-05, 8.8e-05, 1216.26668173], [1517067960000, 8.801e-05, 8.843e-05, 8.801e-05, 8.843e-05, 164.14234588], [1517068020000, 8.842e-05, 8.862e-05, 8.78e-05, 8.78e-05, 5798.5469368], [1517068140000, 8.861e-05, 8.861e-05, 8.861e-05, 8.861e-05, 57.10740972], [1517068200000, 8.788e-05, 8.788e-05, 8.788e-05, 8.788e-05, 22.83558887], [1517068260000, 8.793e-05, 8.793e-05, 8.793e-05, 8.793e-05, 21.477654], [1517068320000, 8.792e-05, 8.859e-05, 8.792e-05, 8.859e-05, 1173.00055662], [1517068380000, 8.859e-05, 8.859e-05, 8.859e-05, 8.859e-05, 75.36155779], [1517068440000, 8.859e-05, 8.859e-05, 8.859e-05, 8.859e-05, 4092.5390821], [1517068500000, 8.859e-05, 8.859e-05, 8.859e-05, 8.859e-05, 2729.92989679], [1517068560000, 8.859e-05, 8.859e-05, 8.859e-05, 8.859e-05, 186.20872857], [1517068680000, 8.859e-05, 8.859e-05, 8.859e-05, 8.859e-05, 76.27488452], [1517068740000, 8.795e-05, 8.796e-05, 8.795e-05, 8.796e-05, 14.63871784], [1517068800000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 201.36468703], [1517068920000, 8.858e-05, 8.858e-05, 8.799e-05, 8.799e-05, 339.15862406], [1517068980000, 8.799e-05, 8.799e-05, 8.792e-05, 8.792e-05, 7287.46959298], [1517069040000, 8.799e-05, 8.858e-05, 8.79e-05, 8.858e-05, 3535.28603251], [1517069100000, 8.791e-05, 8.791e-05, 8.791e-05, 8.791e-05, 177.60083658], [1517069160000, 8.857e-05, 8.857e-05, 8.857e-05, 8.857e-05, 11.26227842], [1517069220000, 8.857e-05, 8.857e-05, 8.857e-05, 8.857e-05, 2770.81192841], [1517069280000, 8.857e-05, 8.858e-05, 8.857e-05, 8.858e-05, 3899.13688754], [1517069340000, 8.857e-05, 8.857e-05, 8.857e-05, 8.857e-05, 3.347e-05], [1517069400000, 8.857e-05, 8.857e-05, 8.857e-05, 8.857e-05, 645.54465704], [1517069460000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 11.24321893], [1517069520000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 226.1288806], [1517069580000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 1822.75973348], [1517069640000, 8.82e-05, 8.857e-05, 8.8e-05, 8.8e-05, 2523.21505804], [1517069700000, 8.812e-05, 8.812e-05, 8.8e-05, 8.8e-05, 323.14096388], [1517069760000, 8.812e-05, 8.857e-05, 8.812e-05, 8.857e-05, 757.4394564], [1517069820000, 8.857e-05, 8.857e-05, 8.857e-05, 8.857e-05, 417.04167858], [1517070060000, 8.814e-05, 8.814e-05, 8.814e-05, 8.814e-05, 479.95], [1517070120000, 8.814e-05, 8.834e-05, 8.814e-05, 8.814e-05, 1713.36571019], [1517070180000, 8.825e-05, 8.834e-05, 8.825e-05, 8.834e-05, 1442.66307327], [1517070240000, 8.834e-05, 8.834e-05, 8.833e-05, 8.834e-05, 1917.98343261], [1517070300000, 8.834e-05, 8.834e-05, 8.834e-05, 8.834e-05, 2047.00079098], [1517070420000, 8.845e-05, 8.845e-05, 8.812e-05, 8.812e-05, 1091.16468583], [1517070480000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 213.05693494], [1517070540000, 8.791e-05, 8.791e-05, 8.791e-05, 8.791e-05, 940.26553389], [1517070600000, 8.812e-05, 8.857e-05, 8.793e-05, 8.857e-05, 5655.20459821], [1517070660000, 8.857e-05, 8.857e-05, 8.793e-05, 8.793e-05, 1744.11804845], [1517070720000, 8.793e-05, 8.85e-05, 8.793e-05, 8.85e-05, 1153.66109492], [1517070780000, 8.85e-05, 8.85e-05, 8.793e-05, 8.793e-05, 21.99504702], [1517070840000, 8.793e-05, 8.793e-05, 8.793e-05, 8.793e-05, 50.0], [1517071080000, 8.8e-05, 8.8e-05, 8.794e-05, 8.794e-05, 1694.0], [1517071200000, 8.795e-05, 8.795e-05, 8.791e-05, 8.791e-05, 6574.81101755], [1517071260000, 8.791e-05, 8.791e-05, 8.79e-05, 8.79e-05, 6497.68806366], [1517071320000, 8.795e-05, 8.795e-05, 8.794e-05, 8.795e-05, 3708.31926908], [1517071440000, 8.795e-05, 8.795e-05, 8.795e-05, 8.795e-05, 158.841], [1517071500000, 8.795e-05, 8.795e-05, 8.795e-05, 8.795e-05, 9374.3807412], [1517071560000, 8.794e-05, 8.795e-05, 8.794e-05, 8.795e-05, 1401.12021289], [1517071620000, 8.795e-05, 8.795e-05, 8.795e-05, 8.795e-05, 48.0], [1517071680000, 8.795e-05, 8.795e-05, 8.794e-05, 8.794e-05, 772.73836713], [1517071740000, 8.778e-05, 8.778e-05, 8.778e-05, 8.778e-05, 98.60137973], [1517071800000, 8.794e-05, 8.795e-05, 8.756e-05, 8.756e-05, 6279.12127537], [1517071860000, 8.795e-05, 8.795e-05, 8.795e-05, 8.795e-05, 1307.44350487], [1517071920000, 8.795e-05, 8.795e-05, 8.795e-05, 8.795e-05, 370.0], [1517072100000, 8.83e-05, 8.868e-05, 8.83e-05, 8.867e-05, 6571.01292823], [1517072160000, 8.858e-05, 8.916e-05, 8.858e-05, 8.899e-05, 15153.73680417], [1517072220000, 8.899e-05, 8.899e-05, 8.85e-05, 8.85e-05, 1671.8806522], [1517072280000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 1131.09402335], [1517072340000, 8.86e-05, 8.86e-05, 8.85e-05, 8.85e-05, 2529.0011412], [1517072400000, 8.82e-05, 8.887e-05, 8.811e-05, 8.887e-05, 321.33793225], [1517072460000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 340.0], [1517072580000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 5577.49241165], [1517072640000, 8.83e-05, 8.83e-05, 8.83e-05, 8.83e-05, 80.0], [1517072880000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 1459.38179023], [1517072940000, 8.89e-05, 8.919e-05, 8.806e-05, 8.806e-05, 1552.28234202], [1517073060000, 8.807e-05, 8.807e-05, 8.768e-05, 8.768e-05, 1809.27305299], [1517073300000, 8.83e-05, 8.83e-05, 8.83e-05, 8.83e-05, 787.47298292], [1517073360000, 8.83e-05, 8.83e-05, 8.83e-05, 8.83e-05, 707.74960385], [1517073540000, 8.851e-05, 9.035e-05, 8.851e-05, 8.962e-05, 18235.02889809], [1517073600000, 8.962e-05, 9.212e-05, 8.801e-05, 9.2e-05, 131197.3571567], [1517073660000, 9.2e-05, 9.454e-05, 8.944e-05, 9.433e-05, 138763.44533675], [1517073720000, 9.283e-05, 9.7e-05, 9.283e-05, 9.512e-05, 120818.03786449], [1517073780000, 9.512e-05, 9.617e-05, 9.232e-05, 9.475e-05, 37914.3632207], [1517073840000, 9.475e-05, 9.543e-05, 9.31e-05, 9.54e-05, 21890.23023537], [1517073900000, 9.54e-05, 9.681e-05, 9.474e-05, 9.482e-05, 25691.55214028], [1517073960000, 9.481e-05, 9.482e-05, 9.178e-05, 9.208e-05, 25159.49500303], [1517074020000, 9.291e-05, 9.479e-05, 9.215e-05, 9.467e-05, 30280.49690501], [1517074080000, 9.479e-05, 9.48e-05, 9.32e-05, 9.445e-05, 46718.12698544], [1517074140000, 9.444e-05, 9.445e-05, 9.308e-05, 9.308e-05, 3629.79783724], [1517074200000, 9.308e-05, 9.444e-05, 9.223e-05, 9.428e-05, 5107.67175844], [1517074260000, 9.427e-05, 9.433e-05, 9.251e-05, 9.253e-05, 1972.27419436], [1517074320000, 9.26e-05, 9.261e-05, 9.256e-05, 9.259e-05, 8817.0], [1517074380000, 9.263e-05, 9.34e-05, 9.263e-05, 9.299e-05, 4750.22418823], [1517074440000, 9.299e-05, 9.348e-05, 9.263e-05, 9.263e-05, 6528.40421379], [1517074500000, 9.21e-05, 9.344e-05, 9.21e-05, 9.344e-05, 3329.15244113], [1517074560000, 9.3e-05, 9.312e-05, 9.225e-05, 9.302e-05, 9906.69025532], [1517074620000, 9.303e-05, 9.344e-05, 9.302e-05, 9.302e-05, 2183.49383944], [1517074680000, 9.232e-05, 9.255e-05, 9.232e-05, 9.25e-05, 9235.95285885], [1517074740000, 9.248e-05, 9.248e-05, 9.178e-05, 9.178e-05, 6170.23539906], [1517074800000, 9.18e-05, 9.18e-05, 9.176e-05, 9.176e-05, 9099.02263455], [1517074860000, 9.174e-05, 9.296e-05, 9.12e-05, 9.12e-05, 4016.35579024], [1517074920000, 9.102e-05, 9.155e-05, 9.024e-05, 9.155e-05, 8535.57679517], [1517074980000, 9.173e-05, 9.173e-05, 9.118e-05, 9.155e-05, 1650.77209987], [1517075040000, 9.121e-05, 9.122e-05, 9.092e-05, 9.103e-05, 2217.33222195], [1517075100000, 9.11e-05, 9.122e-05, 9.11e-05, 9.122e-05, 22.48008934], [1517075160000, 9.17e-05, 9.173e-05, 9.05e-05, 9.05e-05, 6120.0792192], [1517075220000, 9.052e-05, 9.059e-05, 9.05e-05, 9.058e-05, 10572.68366429], [1517075280000, 9.058e-05, 9.058e-05, 9.055e-05, 9.058e-05, 11718.902231], [1517075340000, 9.058e-05, 9.058e-05, 9.057e-05, 9.058e-05, 2497.66836782], [1517075400000, 9.136e-05, 9.137e-05, 9.062e-05, 9.062e-05, 4566.45031749], [1517075580000, 9.131e-05, 9.131e-05, 9.067e-05, 9.067e-05, 1212.05448356], [1517075640000, 9.119e-05, 9.119e-05, 9.057e-05, 9.057e-05, 18618.71915389], [1517075700000, 9.057e-05, 9.064e-05, 9.022e-05, 9.057e-05, 10377.24892005], [1517075760000, 9.022e-05, 9.022e-05, 8.994e-05, 8.994e-05, 4311.4779389], [1517075820000, 9.116e-05, 9.116e-05, 8.912e-05, 8.912e-05, 513.39842098], [1517075880000, 9e-05, 9e-05, 9e-05, 9e-05, 150.0], [1517075940000, 9.079e-05, 9.079e-05, 9e-05, 9e-05, 3922.68828026], [1517076000000, 9.07e-05, 9.07e-05, 9.045e-05, 9.045e-05, 363.55896912], [1517076060000, 9.045e-05, 9.046e-05, 9e-05, 9e-05, 2444.55930205], [1517076120000, 9.001e-05, 9.067e-05, 9.001e-05, 9.001e-05, 4379.9250355], [1517076180000, 9.001e-05, 9.001e-05, 9.001e-05, 9.001e-05, 1026.66370403], [1517076240000, 8.994e-05, 8.994e-05, 8.994e-05, 8.994e-05, 10.0], [1517076300000, 8.994e-05, 8.994e-05, 8.994e-05, 8.994e-05, 217.51411358], [1517076360000, 8.994e-05, 9.001e-05, 8.994e-05, 8.994e-05, 4324.73168562], [1517076420000, 8.994e-05, 8.994e-05, 8.994e-05, 8.994e-05, 260.76204084], [1517076480000, 9e-05, 9e-05, 9e-05, 9e-05, 56.0], [1517076540000, 9e-05, 9.108e-05, 9e-05, 9.108e-05, 261.99984162], [1517076600000, 9.052e-05, 9.052e-05, 9.052e-05, 9.052e-05, 1788.81173424], [1517076660000, 9.097e-05, 9.097e-05, 9.091e-05, 9.091e-05, 1849.61106831], [1517076780000, 9.002e-05, 9.07e-05, 9.002e-05, 9.002e-05, 597.29620226], [1517076840000, 8.94e-05, 9.002e-05, 8.938e-05, 8.942e-05, 2422.41762325], [1517076900000, 8.944e-05, 8.944e-05, 8.943e-05, 8.943e-05, 1241.38298493], [1517077020000, 8.999e-05, 8.999e-05, 8.95e-05, 8.95e-05, 3357.69533852], [1517077080000, 8.958e-05, 8.97e-05, 8.958e-05, 8.97e-05, 419.5588211], [1517077140000, 9.015e-05, 9.114e-05, 9.015e-05, 9.114e-05, 2216.94416947], [1517077200000, 9.108e-05, 9.108e-05, 9.108e-05, 9.108e-05, 31.35481861], [1517077260000, 9.1e-05, 9.1e-05, 9.097e-05, 9.1e-05, 15984.79791172], [1517077320000, 9.11e-05, 9.11e-05, 9.101e-05, 9.11e-05, 492.70977182], [1517077380000, 9.114e-05, 9.114e-05, 9.114e-05, 9.114e-05, 889.03232497], [1517077440000, 9.132e-05, 9.135e-05, 9.132e-05, 9.135e-05, 3535.75629783], [1517077500000, 9.135e-05, 9.135e-05, 9.135e-05, 9.135e-05, 278.72027202], [1517077560000, 9.155e-05, 9.155e-05, 9.155e-05, 9.155e-05, 482.37220522], [1517077620000, 9.17e-05, 9.2e-05, 9.17e-05, 9.18e-05, 254.00005622], [1517077680000, 9.2e-05, 9.201e-05, 9.2e-05, 9.201e-05, 2039.0109955], [1517077740000, 9.2e-05, 9.2e-05, 9.18e-05, 9.2e-05, 3415.94003266], [1517077800000, 9.199e-05, 9.199e-05, 9.079e-05, 9.198e-05, 1355.47712092], [1517077860000, 9.198e-05, 9.2e-05, 9.091e-05, 9.091e-05, 4281.70234668], [1517077920000, 9.101e-05, 9.101e-05, 9.101e-05, 9.101e-05, 516.22254676], [1517078040000, 9.101e-05, 9.101e-05, 9.101e-05, 9.101e-05, 60.0], [1517078100000, 9.101e-05, 9.101e-05, 9.101e-05, 9.101e-05, 64.36703206], [1517078220000, 9.102e-05, 9.102e-05, 9.099e-05, 9.099e-05, 3254.26283118], [1517078280000, 9.102e-05, 9.188e-05, 9.102e-05, 9.188e-05, 223.44173705], [1517078340000, 9.1e-05, 9.15e-05, 9.1e-05, 9.149e-05, 329.39269701], [1517078400000, 9.032e-05, 9.142e-05, 9.032e-05, 9.142e-05, 1681.71981993], [1517078580000, 9.1e-05, 9.1e-05, 9.1e-05, 9.1e-05, 17.38598654], [1517078640000, 9.1e-05, 9.127e-05, 8.98e-05, 9.117e-05, 10961.82431873], [1517078880000, 9.094e-05, 9.094e-05, 9.093e-05, 9.093e-05, 63.03093515], [1517078940000, 9.093e-05, 9.093e-05, 9.093e-05, 9.093e-05, 952.92109462], [1517079000000, 9.094e-05, 9.094e-05, 9.094e-05, 9.094e-05, 469.70921916], [1517079300000, 9.094e-05, 9.094e-05, 9.094e-05, 9.094e-05, 294.08980306], [1517079360000, 9.094e-05, 9.094e-05, 9.094e-05, 9.094e-05, 92.02748218], [1517079420000, 9.094e-05, 9.094e-05, 9.014e-05, 9.014e-05, 227.38], [1517079540000, 9.036e-05, 9.036e-05, 9.036e-05, 9.036e-05, 40.0], [1517079660000, 9.037e-05, 9.037e-05, 9.037e-05, 9.037e-05, 100.0], [1517079780000, 9.113e-05, 9.113e-05, 9.113e-05, 9.113e-05, 996.095], [1517079840000, 9.113e-05, 9.114e-05, 9.113e-05, 9.114e-05, 49.82304601], [1517079900000, 9.114e-05, 9.114e-05, 9.114e-05, 9.114e-05, 13.67040908], [1517079960000, 9.115e-05, 9.115e-05, 9.115e-05, 9.115e-05, 11.30787858], [1517080020000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 230.86993518], [1517080080000, 9.201e-05, 9.201e-05, 9.2e-05, 9.2e-05, 225.03433489], [1517080200000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 5.8999], [1517080260000, 9.198e-05, 9.198e-05, 9.198e-05, 9.198e-05, 10.81783948], [1517080320000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 578.12112092], [1517080380000, 9.198e-05, 9.198e-05, 9.115e-05, 9.115e-05, 542.27704161], [1517080500000, 9.117e-05, 9.117e-05, 9.117e-05, 9.117e-05, 307.34815384], [1517080620000, 9.116e-05, 9.116e-05, 9.116e-05, 9.116e-05, 400.0], [1517080740000, 9.117e-05, 9.117e-05, 9.117e-05, 9.117e-05, 428.14358739], [1517080980000, 9.117e-05, 9.117e-05, 9.117e-05, 9.117e-05, 107.24894136], [1517081100000, 9.187e-05, 9.187e-05, 9.187e-05, 9.187e-05, 2581.56232759], [1517081220000, 9.117e-05, 9.117e-05, 9.114e-05, 9.116e-05, 1944.78536206], [1517081280000, 9.114e-05, 9.114e-05, 9.014e-05, 9.014e-05, 1827.5790881], [1517081400000, 9.045e-05, 9.045e-05, 9.044e-05, 9.044e-05, 2721.75751818], [1517081460000, 9.044e-05, 9.044e-05, 9.044e-05, 9.044e-05, 110.570544], [1517081520000, 9.044e-05, 9.044e-05, 9.042e-05, 9.042e-05, 88.16275984], [1517081640000, 9.04e-05, 9.04e-05, 9.039e-05, 9.04e-05, 181.52100787], [1517081700000, 9.042e-05, 9.094e-05, 9.017e-05, 9.094e-05, 522.11612496], [1517081760000, 9.151e-05, 9.172e-05, 9.094e-05, 9.172e-05, 616.68443725], [1517081820000, 9.172e-05, 9.172e-05, 9.172e-05, 9.172e-05, 2861.97865766], [1517081880000, 9.172e-05, 9.175e-05, 9.172e-05, 9.175e-05, 453.02877804], [1517081940000, 9.175e-05, 9.198e-05, 9.175e-05, 9.175e-05, 1802.45416109], [1517082000000, 9.175e-05, 9.175e-05, 9.172e-05, 9.172e-05, 8560.89042751], [1517082060000, 9.172e-05, 9.172e-05, 9.169e-05, 9.171e-05, 2693.05108693], [1517082120000, 9.171e-05, 9.172e-05, 9.171e-05, 9.172e-05, 272.98050915], [1517082240000, 9.17e-05, 9.17e-05, 9.17e-05, 9.17e-05, 500.0], [1517082300000, 9.17e-05, 9.17e-05, 9.17e-05, 9.17e-05, 51.58042733], [1517082360000, 9.17e-05, 9.17e-05, 9.169e-05, 9.169e-05, 1542.8398454], [1517082420000, 9.167e-05, 9.167e-05, 9.167e-05, 9.167e-05, 53.15615265], [1517082480000, 9.152e-05, 9.152e-05, 9.152e-05, 9.152e-05, 3831.60360354], [1517082540000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 195.74827594], [1517082600000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 55.41082458], [1517082720000, 9.043e-05, 9.043e-05, 9.043e-05, 9.043e-05, 1087.4204127], [1517082780000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 320.5], [1517082840000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 400.0], [1517082900000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 286.08242605], [1517083080000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 69.27581084], [1517083200000, 9.158e-05, 9.158e-05, 9.158e-05, 9.158e-05, 60.91941471], [1517083260000, 9.065e-05, 9.065e-05, 9.062e-05, 9.062e-05, 2164.69087469], [1517083320000, 9.061e-05, 9.061e-05, 9.048e-05, 9.048e-05, 1192.87483553], [1517083380000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 250.0], [1517083500000, 9.118e-05, 9.118e-05, 9.08e-05, 9.118e-05, 380.52992991], [1517083560000, 9.114e-05, 9.122e-05, 9.114e-05, 9.118e-05, 487.15827454], [1517083620000, 9.122e-05, 9.157e-05, 9.122e-05, 9.157e-05, 56.8291228], [1517083680000, 9.122e-05, 9.157e-05, 9.122e-05, 9.157e-05, 466.79852026], [1517083800000, 9.157e-05, 9.157e-05, 9.156e-05, 9.156e-05, 156.45571692], [1517083860000, 9.12e-05, 9.172e-05, 9.042e-05, 9.157e-05, 1505.91317241], [1517083980000, 9.161e-05, 9.201e-05, 9.161e-05, 9.199e-05, 2759.0703153], [1517084040000, 9.201e-05, 9.203e-05, 9.201e-05, 9.203e-05, 308.57909564], [1517084100000, 9.205e-05, 9.205e-05, 9.201e-05, 9.201e-05, 332.91552856], [1517084160000, 9.176e-05, 9.205e-05, 9.176e-05, 9.185e-05, 234.87254383], [1517084220000, 9.189e-05, 9.189e-05, 9.188e-05, 9.188e-05, 229.31034483], [1517084280000, 9.189e-05, 9.189e-05, 9.189e-05, 9.189e-05, 350.0], [1517084340000, 9.187e-05, 9.191e-05, 9.118e-05, 9.15e-05, 3677.85268832], [1517084400000, 9.263e-05, 9.263e-05, 9.255e-05, 9.255e-05, 914.32486686], [1517084460000, 9.192e-05, 9.192e-05, 9.192e-05, 9.192e-05, 451.19160762], [1517084580000, 9.192e-05, 9.255e-05, 9.192e-05, 9.198e-05, 891.71341828], [1517084700000, 9.198e-05, 9.198e-05, 9.198e-05, 9.198e-05, 146.0], [1517084820000, 9.199e-05, 9.249e-05, 9.199e-05, 9.199e-05, 969.71547992], [1517084880000, 9.199e-05, 9.199e-05, 9.199e-05, 9.199e-05, 70.0], [1517084940000, 9.255e-05, 9.255e-05, 9.255e-05, 9.255e-05, 10.80497029], [1517085000000, 9.255e-05, 9.255e-05, 9.198e-05, 9.198e-05, 1948.56256804], [1517085060000, 9.274e-05, 9.274e-05, 9.274e-05, 9.274e-05, 4932.88497028], [1517085120000, 9.274e-05, 9.274e-05, 9.274e-05, 9.274e-05, 2355.22314412], [1517085180000, 9.274e-05, 9.274e-05, 9.198e-05, 9.198e-05, 488.58938082], [1517085240000, 9.274e-05, 9.274e-05, 9.274e-05, 9.274e-05, 537.79383222], [1517085300000, 9.198e-05, 9.198e-05, 9.198e-05, 9.198e-05, 8490.36441251], [1517085360000, 9.198e-05, 9.198e-05, 9.12e-05, 9.12e-05, 472.74097654], [1517085420000, 9.16e-05, 9.16e-05, 9.16e-05, 9.16e-05, 1414.01828577], [1517085480000, 9.16e-05, 9.2e-05, 9.14e-05, 9.2e-05, 779.69894764], [1517085540000, 9.129e-05, 9.136e-05, 9.129e-05, 9.136e-05, 165.96355552], [1517085660000, 9.14e-05, 9.14e-05, 9.14e-05, 9.14e-05, 26.91953284], [1517085780000, 9.224e-05, 9.266e-05, 9.224e-05, 9.266e-05, 717.89356247], [1517085900000, 9.15e-05, 9.15e-05, 9.15e-05, 9.15e-05, 7.13508921], [1517085960000, 9.197e-05, 9.197e-05, 9.197e-05, 9.197e-05, 2762.94517424], [1517086020000, 9.15e-05, 9.15e-05, 9.15e-05, 9.15e-05, 418.89687107], [1517086140000, 9.158e-05, 9.158e-05, 9.158e-05, 9.158e-05, 873.10796544], [1517086200000, 9.17e-05, 9.199e-05, 9.17e-05, 9.199e-05, 871.39119309], [1517086260000, 9.199e-05, 9.222e-05, 9.17e-05, 9.222e-05, 776.28207599], [1517086320000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 7.0], [1517086380000, 9.148e-05, 9.148e-05, 9.148e-05, 9.148e-05, 65.75207696], [1517086440000, 9.21e-05, 9.266e-05, 9.21e-05, 9.266e-05, 718.6635884], [1517086560000, 9.266e-05, 9.339e-05, 9.266e-05, 9.266e-05, 7934.26056601], [1517086620000, 9.266e-05, 9.266e-05, 9.266e-05, 9.266e-05, 2736.71165417], [1517086680000, 9.266e-05, 9.266e-05, 9.266e-05, 9.266e-05, 1763.02559411], [1517086800000, 9.266e-05, 9.381e-05, 9.266e-05, 9.381e-05, 809.73034936], [1517086860000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 50.0], [1517086920000, 9.369e-05, 9.371e-05, 9.225e-05, 9.225e-05, 725.37761351], [1517086980000, 9.363e-05, 9.363e-05, 9.363e-05, 9.363e-05, 30.39974106], [1517087040000, 9.28e-05, 9.28e-05, 9.28e-05, 9.28e-05, 638.58079688], [1517087100000, 9.246e-05, 9.28e-05, 9.23e-05, 9.23e-05, 790.31522774], [1517087220000, 9.23e-05, 9.23e-05, 9.23e-05, 9.23e-05, 128.0], [1517087280000, 9.23e-05, 9.23e-05, 9.229e-05, 9.229e-05, 1586.21646249], [1517087340000, 9.228e-05, 9.229e-05, 9.228e-05, 9.229e-05, 7242.84255809], [1517087400000, 9.229e-05, 9.229e-05, 9.229e-05, 9.229e-05, 520.36750786], [1517087460000, 9.229e-05, 9.23e-05, 9.229e-05, 9.23e-05, 1913.2239335], [1517087520000, 9.23e-05, 9.23e-05, 9.23e-05, 9.23e-05, 1107.04917602], [1517087580000, 9.205e-05, 9.205e-05, 9.205e-05, 9.205e-05, 29.197661], [1517087640000, 9.23e-05, 9.23e-05, 9.23e-05, 9.23e-05, 179.28973973], [1517087700000, 9.23e-05, 9.23e-05, 9.23e-05, 9.23e-05, 24.76618274], [1517087760000, 9.228e-05, 9.23e-05, 9.228e-05, 9.23e-05, 16358.36018312], [1517087820000, 9.228e-05, 9.23e-05, 9.228e-05, 9.23e-05, 897.56768965], [1517087880000, 9.205e-05, 9.23e-05, 9.205e-05, 9.23e-05, 3847.57886271], [1517087940000, 9.23e-05, 9.23e-05, 9.23e-05, 9.23e-05, 35983.73167702], [1517088000000, 9.23e-05, 9.23e-05, 9.23e-05, 9.23e-05, 37.8750135], [1517088120000, 9.23e-05, 9.23e-05, 9.23e-05, 9.23e-05, 2062.48362594], [1517088180000, 9.23e-05, 9.28e-05, 9.23e-05, 9.28e-05, 608.79981126], [1517088300000, 9.28e-05, 9.355e-05, 9.28e-05, 9.355e-05, 35.10600299], [1517088360000, 9.251e-05, 9.251e-05, 9.251e-05, 9.251e-05, 212.78927372], [1517088420000, 9.336e-05, 9.336e-05, 9.336e-05, 9.336e-05, 108.20336095], [1517088480000, 9.334e-05, 9.334e-05, 9.334e-05, 9.334e-05, 9.99641568], [1517088540000, 9.345e-05, 9.345e-05, 9.216e-05, 9.216e-05, 178.05336904], [1517088720000, 9.295e-05, 9.295e-05, 9.295e-05, 9.295e-05, 8.00249707], [1517088780000, 9.295e-05, 9.343e-05, 9.295e-05, 9.295e-05, 357.53919082], [1517088840000, 9.295e-05, 9.295e-05, 9.295e-05, 9.295e-05, 123.34236186], [1517088900000, 9.295e-05, 9.295e-05, 9.295e-05, 9.295e-05, 238.17946436], [1517089020000, 9.295e-05, 9.295e-05, 9.295e-05, 9.295e-05, 9.7592713], [1517089080000, 9.295e-05, 9.295e-05, 9.295e-05, 9.295e-05, 6.4175224], [1517089140000, 9.3e-05, 9.3e-05, 9.295e-05, 9.295e-05, 735.16592263], [1517089200000, 9.295e-05, 9.295e-05, 9.208e-05, 9.208e-05, 229.09494755], [1517089260000, 9.226e-05, 9.226e-05, 9.226e-05, 9.226e-05, 495.69190231], [1517089320000, 9.295e-05, 9.295e-05, 9.295e-05, 9.295e-05, 2101.42201273], [1517089380000, 9.295e-05, 9.295e-05, 9.295e-05, 9.295e-05, 3516.128402], [1517089440000, 9.226e-05, 9.238e-05, 9.215e-05, 9.215e-05, 3455.16724605], [1517089560000, 9.227e-05, 9.227e-05, 9.227e-05, 9.227e-05, 534.23465258], [1517089620000, 9.299e-05, 9.299e-05, 9.24e-05, 9.241e-05, 279.88462688], [1517089680000, 9.332e-05, 9.332e-05, 9.328e-05, 9.328e-05, 1196.14718003], [1517089740000, 9.324e-05, 9.326e-05, 9.25e-05, 9.25e-05, 169.89], [1517089860000, 9.326e-05, 9.349e-05, 9.326e-05, 9.349e-05, 707.77501492], [1517089920000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 41.3046528], [1517089980000, 9.25e-05, 9.251e-05, 9.25e-05, 9.25e-05, 66.07356679], [1517090040000, 9.287e-05, 9.287e-05, 9.287e-05, 9.287e-05, 40.95389179], [1517090160000, 9.329e-05, 9.329e-05, 9.24e-05, 9.24e-05, 2291.68672556], [1517090220000, 9.24e-05, 9.24e-05, 9.214e-05, 9.214e-05, 6496.93878537], [1517090280000, 9.25e-05, 9.25e-05, 9.219e-05, 9.219e-05, 54.93207674], [1517090340000, 9.25e-05, 9.347e-05, 9.25e-05, 9.323e-05, 1539.86660352], [1517090460000, 9.243e-05, 9.243e-05, 9.243e-05, 9.243e-05, 1695.89939429], [1517090640000, 9.243e-05, 9.243e-05, 9.243e-05, 9.243e-05, 1056.90988982], [1517090700000, 9.248e-05, 9.248e-05, 9.248e-05, 9.248e-05, 10874.60961971], [1517090880000, 9.248e-05, 9.3e-05, 9.248e-05, 9.248e-05, 2798.69227745], [1517091000000, 9.248e-05, 9.248e-05, 9.248e-05, 9.248e-05, 1098.4865853], [1517091060000, 9.245e-05, 9.248e-05, 9.245e-05, 9.248e-05, 146.13700016], [1517091120000, 9.245e-05, 9.245e-05, 9.245e-05, 9.245e-05, 1302.66271853], [1517091180000, 9.243e-05, 9.245e-05, 9.243e-05, 9.245e-05, 222.5604412], [1517091240000, 9.243e-05, 9.243e-05, 9.243e-05, 9.243e-05, 20.0], [1517091300000, 9.243e-05, 9.245e-05, 9.243e-05, 9.245e-05, 561.9822213], [1517091360000, 9.245e-05, 9.245e-05, 9.243e-05, 9.243e-05, 787.64982242], [1517091480000, 9.226e-05, 9.226e-05, 9.209e-05, 9.209e-05, 526.66935213], [1517091600000, 9.209e-05, 9.244e-05, 9.209e-05, 9.244e-05, 160.58458683], [1517091660000, 9.244e-05, 9.244e-05, 9.244e-05, 9.244e-05, 358.20172826], [1517091720000, 9.209e-05, 9.244e-05, 9.209e-05, 9.244e-05, 126.16114502], [1517092020000, 9.209e-05, 9.209e-05, 9.209e-05, 9.209e-05, 480.28288827], [1517092140000, 9.209e-05, 9.242e-05, 9.209e-05, 9.242e-05, 646.21485184], [1517092260000, 9.24e-05, 9.24e-05, 9.24e-05, 9.24e-05, 16.23376623], [1517092320000, 9.24e-05, 9.24e-05, 9.24e-05, 9.24e-05, 186.95554048], [1517092380000, 9.205e-05, 9.205e-05, 9.202e-05, 9.202e-05, 2500.0], [1517092440000, 9.202e-05, 9.202e-05, 9.2e-05, 9.2e-05, 2326.46183629], [1517092500000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 5378.32531383], [1517092560000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 2038.7256889], [1517092620000, 9.2e-05, 9.24e-05, 9.2e-05, 9.24e-05, 23.5978093], [1517092680000, 9.24e-05, 9.24e-05, 9.24e-05, 9.24e-05, 154.884582], [1517092800000, 9.238e-05, 9.238e-05, 9.238e-05, 9.238e-05, 45.00745048], [1517092860000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 500.0], [1517092920000, 9.201e-05, 9.201e-05, 9.2e-05, 9.2e-05, 5534.17064751], [1517092980000, 9.237e-05, 9.237e-05, 9.237e-05, 9.237e-05, 1574.65489577], [1517093040000, 9.237e-05, 9.237e-05, 9.237e-05, 9.237e-05, 495.25260829], [1517093280000, 9.217e-05, 9.217e-05, 9.2e-05, 9.216e-05, 442.864687], [1517093340000, 9.2e-05, 9.215e-05, 9.2e-05, 9.215e-05, 194.17525773], [1517093400000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 4438.16406139], [1517093460000, 9.215e-05, 9.216e-05, 9.215e-05, 9.216e-05, 180.32844743], [1517093580000, 9.216e-05, 9.216e-05, 9.216e-05, 9.216e-05, 67.0], [1517093820000, 9.216e-05, 9.216e-05, 9.216e-05, 9.216e-05, 10.1173838], [1517093880000, 9.201e-05, 9.216e-05, 9.201e-05, 9.216e-05, 766.0453809], [1517093940000, 9.217e-05, 9.217e-05, 9.217e-05, 9.217e-05, 720.23633678], [1517094000000, 9.238e-05, 9.238e-05, 9.217e-05, 9.217e-05, 1205.44970885], [1517094060000, 9.218e-05, 9.218e-05, 9.218e-05, 9.218e-05, 108.75461054], [1517094120000, 9.239e-05, 9.242e-05, 9.236e-05, 9.242e-05, 1572.50619161], [1517094180000, 9.218e-05, 9.218e-05, 9.218e-05, 9.218e-05, 25.0], [1517094240000, 9.243e-05, 9.244e-05, 9.243e-05, 9.244e-05, 335.0083752], [1517094360000, 9.218e-05, 9.218e-05, 9.218e-05, 9.218e-05, 207.01641553], [1517094420000, 9.219e-05, 9.219e-05, 9.218e-05, 9.218e-05, 250.31549435], [1517094540000, 9.242e-05, 9.242e-05, 9.242e-05, 9.242e-05, 330.0], [1517094600000, 9.219e-05, 9.242e-05, 9.218e-05, 9.242e-05, 218.88000139], [1517094660000, 9.242e-05, 9.242e-05, 9.242e-05, 9.242e-05, 44.27506219], [1517094780000, 9.242e-05, 9.245e-05, 9.221e-05, 9.221e-05, 22794.12028888], [1517094960000, 9.23e-05, 9.245e-05, 9.229e-05, 9.245e-05, 1983.47607101], [1517095020000, 9.3e-05, 9.305e-05, 9.224e-05, 9.224e-05, 1323.32113327], [1517095080000, 9.303e-05, 9.303e-05, 9.303e-05, 9.303e-05, 12.0], [1517095140000, 9.303e-05, 9.303e-05, 9.227e-05, 9.227e-05, 778.3749385], [1517095200000, 9.303e-05, 9.371e-05, 9.294e-05, 9.34e-05, 10395.35328505], [1517095260000, 9.34e-05, 9.4e-05, 9.302e-05, 9.311e-05, 10772.71441569], [1517095320000, 9.302e-05, 9.311e-05, 9.302e-05, 9.311e-05, 8222.67355414], [1517095380000, 9.398e-05, 9.41e-05, 9.312e-05, 9.41e-05, 4316.8952525], [1517095440000, 9.409e-05, 9.442e-05, 9.328e-05, 9.336e-05, 3574.09801357], [1517095500000, 9.337e-05, 9.45e-05, 9.337e-05, 9.345e-05, 6434.51563664], [1517095560000, 9.35e-05, 9.465e-05, 9.35e-05, 9.351e-05, 6977.52604098], [1517095620000, 9.367e-05, 9.465e-05, 9.352e-05, 9.352e-05, 7684.66668388], [1517095680000, 9.352e-05, 9.454e-05, 9.351e-05, 9.454e-05, 2240.05253376], [1517095740000, 9.355e-05, 9.4e-05, 9.355e-05, 9.4e-05, 2941.65896329], [1517095800000, 9.4e-05, 9.44e-05, 9.356e-05, 9.356e-05, 1116.96901872], [1517095860000, 9.355e-05, 9.356e-05, 9.355e-05, 9.356e-05, 615.54623792], [1517095980000, 9.357e-05, 9.357e-05, 9.356e-05, 9.356e-05, 664.4244846], [1517096040000, 9.357e-05, 9.357e-05, 9.353e-05, 9.353e-05, 3879.92], [1517096100000, 9.354e-05, 9.399e-05, 9.353e-05, 9.353e-05, 2005.21234906], [1517096160000, 9.353e-05, 9.353e-05, 9.352e-05, 9.352e-05, 6311.39700143], [1517096220000, 9.352e-05, 9.399e-05, 9.352e-05, 9.399e-05, 521.5887213], [1517096280000, 9.399e-05, 9.399e-05, 9.352e-05, 9.352e-05, 1143.830497], [1517096340000, 9.352e-05, 9.352e-05, 9.352e-05, 9.352e-05, 2439.76268995], [1517096400000, 9.352e-05, 9.386e-05, 9.352e-05, 9.386e-05, 426.78883831], [1517096460000, 9.358e-05, 9.358e-05, 9.352e-05, 9.352e-05, 835.0], [1517096520000, 9.352e-05, 9.386e-05, 9.352e-05, 9.352e-05, 1607.22978008], [1517096580000, 9.385e-05, 9.385e-05, 9.352e-05, 9.352e-05, 86.7547654], [1517096640000, 9.352e-05, 9.384e-05, 9.352e-05, 9.384e-05, 5983.48351213], [1517096700000, 9.352e-05, 9.352e-05, 9.352e-05, 9.352e-05, 560.50689689], [1517096760000, 9.352e-05, 9.352e-05, 9.352e-05, 9.352e-05, 96.31008959], [1517096820000, 9.352e-05, 9.352e-05, 9.336e-05, 9.35e-05, 5476.32405578], [1517096880000, 9.35e-05, 9.35e-05, 9.35e-05, 9.35e-05, 168.78926491], [1517096940000, 9.336e-05, 9.336e-05, 9.3e-05, 9.3e-05, 540.88507047], [1517097000000, 9.253e-05, 9.253e-05, 9.253e-05, 9.253e-05, 14.03320498], [1517097060000, 9.255e-05, 9.27e-05, 9.253e-05, 9.27e-05, 879.61626517], [1517097120000, 9.253e-05, 9.253e-05, 9.253e-05, 9.253e-05, 134.73683326], [1517097180000, 9.27e-05, 9.3e-05, 9.27e-05, 9.3e-05, 948.52552366], [1517097240000, 9.336e-05, 9.373e-05, 9.253e-05, 9.336e-05, 8743.62716358], [1517097300000, 9.371e-05, 9.372e-05, 9.371e-05, 9.372e-05, 40.39353078], [1517097360000, 9.372e-05, 9.399e-05, 9.372e-05, 9.374e-05, 17114.94332118], [1517097420000, 9.375e-05, 9.375e-05, 9.375e-05, 9.375e-05, 3137.99200663], [1517097480000, 9.374e-05, 9.374e-05, 9.273e-05, 9.273e-05, 695.0], [1517097540000, 9.277e-05, 9.37e-05, 9.277e-05, 9.369e-05, 352.01826275], [1517097600000, 9.279e-05, 9.279e-05, 9.225e-05, 9.225e-05, 14662.18017447], [1517097660000, 9.224e-05, 9.268e-05, 9.202e-05, 9.206e-05, 9674.93226495], [1517097720000, 9.207e-05, 9.208e-05, 9.201e-05, 9.208e-05, 5405.77929499], [1517097780000, 9.339e-05, 9.339e-05, 9.339e-05, 9.339e-05, 10.70818358], [1517097840000, 9.211e-05, 9.295e-05, 9.211e-05, 9.216e-05, 1727.17666495], [1517097900000, 9.295e-05, 9.338e-05, 9.295e-05, 9.334e-05, 4864.03947747], [1517097960000, 9.336e-05, 9.337e-05, 9.336e-05, 9.336e-05, 13735.66338643], [1517098020000, 9.336e-05, 9.336e-05, 9.336e-05, 9.336e-05, 2466.63735413], [1517098080000, 9.336e-05, 9.336e-05, 9.336e-05, 9.336e-05, 9646.93974439], [1517098140000, 9.336e-05, 9.336e-05, 9.202e-05, 9.202e-05, 1932.05840882], [1517098200000, 9.334e-05, 9.334e-05, 9.334e-05, 9.334e-05, 32.20434557], [1517098320000, 9.334e-05, 9.334e-05, 9.334e-05, 9.334e-05, 107.13520462], [1517098560000, 9.225e-05, 9.225e-05, 9.206e-05, 9.206e-05, 800.00003292], [1517098620000, 9.225e-05, 9.328e-05, 9.225e-05, 9.328e-05, 435.64211297], [1517098860000, 9.29e-05, 9.29e-05, 9.29e-05, 9.29e-05, 524.0844599], [1517098920000, 9.29e-05, 9.29e-05, 9.288e-05, 9.288e-05, 248.00764547], [1517099040000, 9.288e-05, 9.288e-05, 9.225e-05, 9.225e-05, 3557.41682542], [1517099100000, 9.225e-05, 9.289e-05, 9.203e-05, 9.203e-05, 3661.66937324], [1517099160000, 9.203e-05, 9.203e-05, 9.201e-05, 9.201e-05, 10243.46671756], [1517099220000, 9.203e-05, 9.213e-05, 9.201e-05, 9.213e-05, 10243.38403258], [1517099280000, 9.213e-05, 9.313e-05, 9.201e-05, 9.3e-05, 2582.55831672], [1517099340000, 9.208e-05, 9.208e-05, 9.207e-05, 9.207e-05, 400.0], [1517099400000, 9.28e-05, 9.28e-05, 9.28e-05, 9.28e-05, 465.17432165], [1517099460000, 9.207e-05, 9.207e-05, 9.201e-05, 9.201e-05, 3351.32634856], [1517099520000, 9.201e-05, 9.201e-05, 9.2e-05, 9.201e-05, 1211.79217397], [1517099700000, 9.21e-05, 9.21e-05, 9.203e-05, 9.203e-05, 1103.66998156], [1517099760000, 9.245e-05, 9.245e-05, 9.245e-05, 9.245e-05, 15.64780299], [1517099820000, 9.21e-05, 9.21e-05, 9.21e-05, 9.21e-05, 35.81165798], [1517099880000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 26.0], [1517099940000, 9.202e-05, 9.21e-05, 9.202e-05, 9.21e-05, 434.80125241], [1517100060000, 9.209e-05, 9.21e-05, 9.209e-05, 9.21e-05, 357.41042346], [1517100120000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 252.99795389], [1517100180000, 9.2e-05, 9.209e-05, 9.2e-05, 9.209e-05, 200.38637236], [1517100240000, 9.209e-05, 9.21e-05, 9.2e-05, 9.21e-05, 2131.81964709], [1517100360000, 9.21e-05, 9.21e-05, 9.21e-05, 9.21e-05, 714.67850356], [1517100420000, 9.2e-05, 9.202e-05, 9.2e-05, 9.202e-05, 6487.86631589], [1517100480000, 9.204e-05, 9.244e-05, 9.204e-05, 9.244e-05, 176.75692549], [1517100540000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 6006.14892871], [1517100600000, 9.202e-05, 9.202e-05, 9.2e-05, 9.2e-05, 15486.77607317], [1517100660000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 3875.22680395], [1517100780000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 130.08589187], [1517100840000, 9.2e-05, 9.239e-05, 9.2e-05, 9.2e-05, 2645.5904725], [1517100900000, 9.239e-05, 9.239e-05, 9.2e-05, 9.2e-05, 1696.6436002], [1517100960000, 9.239e-05, 9.243e-05, 9.239e-05, 9.243e-05, 446.89146644], [1517101020000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 1291.00843768], [1517101140000, 9.201e-05, 9.201e-05, 9.201e-05, 9.201e-05, 239.50667941], [1517101200000, 9.202e-05, 9.202e-05, 9.202e-05, 9.202e-05, 387.2194353], [1517101320000, 9.202e-05, 9.202e-05, 9.2e-05, 9.2e-05, 23889.34058129], [1517101380000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 6704.05964691], [1517101440000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 6901.92118335], [1517101500000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 11391.05866278], [1517101560000, 9.2e-05, 9.2e-05, 9.2e-05, 9.2e-05, 5242.67509729], [1517101620000, 9.24e-05, 9.24e-05, 9.2e-05, 9.2e-05, 9268.18941328], [1517101680000, 9.2e-05, 9.2e-05, 9.146e-05, 9.154e-05, 10000.46045826], [1517101740000, 9.154e-05, 9.154e-05, 9.127e-05, 9.127e-05, 796.91319084], [1517101800000, 9.127e-05, 9.142e-05, 9.127e-05, 9.142e-05, 565.20225152], [1517101860000, 9.142e-05, 9.142e-05, 9.127e-05, 9.127e-05, 107.50476418], [1517101920000, 9.142e-05, 9.154e-05, 9.127e-05, 9.127e-05, 2762.87318516], [1517101980000, 9.126e-05, 9.154e-05, 9.095e-05, 9.101e-05, 1088.39893394], [1517102040000, 9.152e-05, 9.152e-05, 9.101e-05, 9.101e-05, 1855.58605109], [1517102100000, 9.102e-05, 9.102e-05, 9.101e-05, 9.101e-05, 2433.20881009], [1517102160000, 9.101e-05, 9.101e-05, 9.095e-05, 9.096e-05, 235.5], [1517102220000, 9.096e-05, 9.096e-05, 9.08e-05, 9.08e-05, 1144.39994151], [1517102280000, 9.082e-05, 9.083e-05, 9.079e-05, 9.082e-05, 2554.46712395], [1517102340000, 9.082e-05, 9.092e-05, 9.05e-05, 9.092e-05, 1102.94818826], [1517102400000, 9.092e-05, 9.092e-05, 9.092e-05, 9.092e-05, 1157.10999825], [1517102460000, 9.092e-05, 9.092e-05, 9.092e-05, 9.092e-05, 174.58547068], [1517102520000, 9.092e-05, 9.148e-05, 9.092e-05, 9.148e-05, 370.0], [1517102580000, 9.054e-05, 9.054e-05, 9.053e-05, 9.053e-05, 85.0], [1517102640000, 9.075e-05, 9.075e-05, 9.035e-05, 9.075e-05, 3255.05966278], [1517102700000, 9.121e-05, 9.122e-05, 9.035e-05, 9.038e-05, 5143.38308717], [1517102760000, 9.137e-05, 9.137e-05, 9.035e-05, 9.035e-05, 3237.63047403], [1517102820000, 9.137e-05, 9.137e-05, 9.137e-05, 9.137e-05, 29.13431132], [1517102880000, 9.036e-05, 9.036e-05, 9.034e-05, 9.034e-05, 16387.15149752], [1517102940000, 9.035e-05, 9.035e-05, 9.035e-05, 9.035e-05, 213.79609256], [1517103000000, 9.09e-05, 9.104e-05, 9.088e-05, 9.104e-05, 3547.99915483], [1517103060000, 9.056e-05, 9.056e-05, 9.036e-05, 9.036e-05, 369.51879299], [1517103120000, 9.036e-05, 9.036e-05, 9.034e-05, 9.034e-05, 1011.75296031], [1517103180000, 9.036e-05, 9.036e-05, 9.032e-05, 9.032e-05, 1474.19949819], [1517103240000, 9.031e-05, 9.036e-05, 9.01e-05, 9.036e-05, 4263.23388895], [1517103300000, 9.01e-05, 9.034e-05, 9.004e-05, 9.006e-05, 3342.42659574], [1517103360000, 9.054e-05, 9.098e-05, 9.004e-05, 9.004e-05, 548.00009322], [1517103420000, 9.005e-05, 9.094e-05, 9.004e-05, 9.094e-05, 582.87921792], [1517103480000, 9.09e-05, 9.09e-05, 9.004e-05, 9.08e-05, 226.78207443], [1517103540000, 9.004e-05, 9.004e-05, 9e-05, 9.003e-05, 1890.66813], [1517103600000, 9.003e-05, 9.004e-05, 9.003e-05, 9.003e-05, 1810.67339116], [1517103660000, 9.048e-05, 9.092e-05, 9.002e-05, 9.092e-05, 1562.95376303], [1517103720000, 9.048e-05, 9.048e-05, 9.048e-05, 9.048e-05, 328.72583927], [1517103780000, 9.092e-05, 9.092e-05, 9.002e-05, 9.002e-05, 307.96964363], [1517103840000, 9.013e-05, 9.013e-05, 9.013e-05, 9.013e-05, 66.041832], [1517103900000, 9.013e-05, 9.013e-05, 9.013e-05, 9.013e-05, 39.0], [1517103960000, 9.013e-05, 9.013e-05, 9.013e-05, 9.013e-05, 54.02817263], [1517104020000, 9.015e-05, 9.015e-05, 9.013e-05, 9.013e-05, 15.0], [1517104080000, 9.039e-05, 9.039e-05, 9.039e-05, 9.039e-05, 16.51255], [1517104140000, 9.039e-05, 9.039e-05, 9.039e-05, 9.039e-05, 239.44921839], [1517104200000, 9.013e-05, 9.013e-05, 9.013e-05, 9.013e-05, 10.0], [1517104260000, 9.081e-05, 9.081e-05, 9.013e-05, 9.013e-05, 4750.24312726], [1517104320000, 9.013e-05, 9.013e-05, 9.013e-05, 9.013e-05, 1000.0], [1517104380000, 9.074e-05, 9.074e-05, 9.013e-05, 9.074e-05, 629.60004536], [1517104440000, 9.015e-05, 9.015e-05, 9.013e-05, 9.015e-05, 2678.62218804], [1517104560000, 9.075e-05, 9.075e-05, 9.075e-05, 9.075e-05, 9.91735537], [1517104620000, 9.075e-05, 9.075e-05, 9.075e-05, 9.075e-05, 4034.72981458], [1517104680000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 52.86198078], [1517104740000, 9.078e-05, 9.078e-05, 9.078e-05, 9.078e-05, 199.14395663], [1517104800000, 9.076e-05, 9.076e-05, 9.076e-05, 9.076e-05, 118.99515204], [1517104860000, 9.075e-05, 9.075e-05, 9.075e-05, 9.075e-05, 187.73808415], [1517104920000, 9.02e-05, 9.02e-05, 9.02e-05, 9.02e-05, 50.0], [1517104980000, 9.021e-05, 9.021e-05, 9.013e-05, 9.02e-05, 131.38296396], [1517105040000, 9.013e-05, 9.074e-05, 8.94e-05, 9.074e-05, 9025.25210032], [1517105100000, 8.94e-05, 8.94e-05, 8.901e-05, 8.901e-05, 4020.0], [1517105160000, 8.911e-05, 9.047e-05, 8.911e-05, 8.92e-05, 1674.84376545], [1517105220000, 9.041e-05, 9.041e-05, 9.041e-05, 9.041e-05, 55.2913856], [1517105280000, 9.036e-05, 9.041e-05, 8.92e-05, 8.92e-05, 4334.09126003], [1517105340000, 9.038e-05, 9.038e-05, 9.038e-05, 9.038e-05, 15.0], [1517105400000, 9.036e-05, 9.036e-05, 9.034e-05, 9.034e-05, 297.39923876], [1517105460000, 9.032e-05, 9.032e-05, 9.032e-05, 9.032e-05, 1564.55402103], [1517105520000, 9.034e-05, 9.035e-05, 9.032e-05, 9.032e-05, 321.76240723], [1517105580000, 9.032e-05, 9.032e-05, 8.952e-05, 9.032e-05, 91.59007451], [1517105700000, 8.961e-05, 8.961e-05, 8.933e-05, 8.933e-05, 536.26299767], [1517105760000, 8.938e-05, 8.938e-05, 8.937e-05, 8.937e-05, 59.59160999], [1517105880000, 8.941e-05, 8.941e-05, 8.937e-05, 8.937e-05, 1500.0], [1517105940000, 8.95e-05, 9.031e-05, 8.95e-05, 9.03e-05, 998.62676717], [1517106000000, 9.029e-05, 9.029e-05, 9.029e-05, 9.029e-05, 337.49611628], [1517106060000, 8.952e-05, 8.952e-05, 8.952e-05, 8.952e-05, 24.315007], [1517106240000, 8.953e-05, 8.953e-05, 8.933e-05, 8.933e-05, 6975.51075526], [1517106300000, 9.025e-05, 9.025e-05, 8.933e-05, 8.933e-05, 2139.2036742], [1517106360000, 8.933e-05, 9e-05, 8.9e-05, 8.9e-05, 3174.91390037], [1517106420000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 6783.48141386], [1517106480000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 270.0318796], [1517106540000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 26.17318435], [1517106600000, 8.95e-05, 8.95e-05, 8.84e-05, 8.84e-05, 2152.83208791], [1517106660000, 8.949e-05, 8.949e-05, 8.842e-05, 8.842e-05, 239.11051514], [1517106720000, 8.86e-05, 8.86e-05, 8.853e-05, 8.853e-05, 112.32716225], [1517106780000, 8.947e-05, 8.947e-05, 8.855e-05, 8.855e-05, 2042.2001394], [1517106840000, 8.927e-05, 8.927e-05, 8.853e-05, 8.858e-05, 1497.36975965], [1517106900000, 8.972e-05, 8.972e-05, 8.972e-05, 8.972e-05, 12.258999], [1517106960000, 8.967e-05, 8.967e-05, 8.965e-05, 8.965e-05, 55.76000892], [1517107080000, 8.9e-05, 8.9e-05, 8.898e-05, 8.899e-05, 178.76237326], [1517107140000, 8.899e-05, 8.967e-05, 8.858e-05, 8.963e-05, 4147.45197703], [1517107200000, 8.959e-05, 8.959e-05, 8.84e-05, 8.84e-05, 12169.35810167], [1517107260000, 8.956e-05, 8.956e-05, 8.95e-05, 8.95e-05, 124.79929615], [1517107320000, 8.948e-05, 8.948e-05, 8.869e-05, 8.948e-05, 1539.76131335], [1517107380000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 11.17318435], [1517107440000, 8.95e-05, 8.952e-05, 8.95e-05, 8.95e-05, 1607.73406483], [1517107500000, 8.949e-05, 8.949e-05, 8.949e-05, 8.949e-05, 207.84445187], [1517107620000, 8.948e-05, 8.948e-05, 8.948e-05, 8.948e-05, 802.53045839], [1517107680000, 8.88e-05, 8.88e-05, 8.875e-05, 8.875e-05, 66.85471956], [1517107740000, 8.88e-05, 8.88e-05, 8.88e-05, 8.88e-05, 160.3809524], [1517107860000, 8.947e-05, 9.045e-05, 8.947e-05, 9.045e-05, 3922.76731192], [1517107980000, 9.045e-05, 9.045e-05, 9.045e-05, 9.045e-05, 586.62043118], [1517108040000, 9.045e-05, 9.045e-05, 8.947e-05, 8.947e-05, 81.62739173], [1517108100000, 8.951e-05, 9.042e-05, 8.95e-05, 8.95e-05, 932.90818484], [1517108160000, 8.949e-05, 8.949e-05, 8.949e-05, 8.949e-05, 154.97691525], [1517108280000, 8.893e-05, 8.893e-05, 8.893e-05, 8.893e-05, 6.0], [1517108340000, 8.893e-05, 8.902e-05, 8.893e-05, 8.901e-05, 2350.3353844], [1517108520000, 8.934e-05, 8.937e-05, 8.899e-05, 8.899e-05, 390.13171056], [1517108580000, 8.937e-05, 8.937e-05, 8.899e-05, 8.899e-05, 212.6962919], [1517108700000, 8.901e-05, 8.901e-05, 8.899e-05, 8.899e-05, 2500.0], [1517108760000, 8.901e-05, 8.901e-05, 8.901e-05, 8.901e-05, 600.0], [1517108820000, 8.928e-05, 8.966e-05, 8.901e-05, 8.966e-05, 1578.19187308], [1517108880000, 9.036e-05, 9.036e-05, 8.966e-05, 8.966e-05, 62.24602397], [1517108940000, 9.021e-05, 9.021e-05, 9.021e-05, 9.021e-05, 5.81641001], [1517109000000, 8.966e-05, 8.966e-05, 8.966e-05, 8.966e-05, 38.6862416], [1517109060000, 8.966e-05, 8.966e-05, 8.966e-05, 8.966e-05, 4e-07], [1517109180000, 9.003e-05, 9.008e-05, 9e-05, 9.008e-05, 604.14102244], [1517109240000, 8.966e-05, 8.966e-05, 8.903e-05, 8.903e-05, 486.60534623], [1517109300000, 8.998e-05, 8.998e-05, 8.998e-05, 8.998e-05, 16.47995086], [1517109420000, 8.907e-05, 8.907e-05, 8.903e-05, 8.903e-05, 112.03490121], [1517109540000, 8.989e-05, 8.989e-05, 8.989e-05, 8.989e-05, 22.2386629], [1517109600000, 8.988e-05, 8.99e-05, 8.988e-05, 8.99e-05, 741.25633331], [1517109720000, 8.985e-05, 8.985e-05, 8.985e-05, 8.985e-05, 461.70189099], [1517109780000, 8.908e-05, 8.908e-05, 8.908e-05, 8.908e-05, 329.75206611], [1517109840000, 8.908e-05, 8.985e-05, 8.903e-05, 8.903e-05, 439.92263684], [1517109900000, 8.903e-05, 8.903e-05, 8.903e-05, 8.903e-05, 261.74327506], [1517109960000, 8.903e-05, 8.903e-05, 8.903e-05, 8.903e-05, 2641.84220141], [1517110020000, 8.982e-05, 8.982e-05, 8.982e-05, 8.982e-05, 159.9519349], [1517110080000, 8.908e-05, 8.982e-05, 8.908e-05, 8.982e-05, 116.58787426], [1517110260000, 8.912e-05, 8.982e-05, 8.875e-05, 8.875e-05, 8286.67271238], [1517110320000, 8.888e-05, 8.888e-05, 8.879e-05, 8.879e-05, 3367.51134483], [1517110380000, 8.976e-05, 8.977e-05, 8.886e-05, 8.886e-05, 1818.90796192], [1517110440000, 8.977e-05, 8.977e-05, 8.977e-05, 8.977e-05, 230.55777245], [1517110500000, 8.905e-05, 8.905e-05, 8.901e-05, 8.901e-05, 7252.58612493], [1517110560000, 8.901e-05, 8.901e-05, 8.877e-05, 8.877e-05, 2476.32899007], [1517110620000, 8.879e-05, 8.879e-05, 8.879e-05, 8.879e-05, 169.85946956], [1517110680000, 8.877e-05, 8.877e-05, 8.877e-05, 8.877e-05, 447.99891345], [1517110800000, 8.877e-05, 8.877e-05, 8.877e-05, 8.877e-05, 50.0], [1517110860000, 8.972e-05, 8.972e-05, 8.972e-05, 8.972e-05, 43.0427033], [1517110980000, 8.952e-05, 8.968e-05, 8.952e-05, 8.968e-05, 574.24339697], [1517111040000, 8.97e-05, 8.97e-05, 8.964e-05, 8.964e-05, 61.16220736], [1517111160000, 8.905e-05, 8.905e-05, 8.878e-05, 8.878e-05, 12426.7067306], [1517111460000, 8.959e-05, 8.967e-05, 8.959e-05, 8.967e-05, 78.71720897], [1517111520000, 8.89e-05, 8.956e-05, 8.89e-05, 8.956e-05, 872.50081156], [1517111640000, 8.954e-05, 8.968e-05, 8.954e-05, 8.968e-05, 5642.74195671], [1517111700000, 8.968e-05, 9.081e-05, 8.968e-05, 9.081e-05, 5613.17101484], [1517111760000, 9.06e-05, 9.077e-05, 9.059e-05, 9.059e-05, 1859.50375264], [1517111820000, 9.058e-05, 9.058e-05, 9.058e-05, 9.058e-05, 127.40328982], [1517111880000, 8.964e-05, 8.964e-05, 8.964e-05, 8.964e-05, 298.47993277], [1517111940000, 8.964e-05, 8.964e-05, 8.964e-05, 8.964e-05, 80.06992684], [1517112000000, 8.964e-05, 9.052e-05, 8.964e-05, 9.052e-05, 498.09150356], [1517112180000, 8.976e-05, 9.05e-05, 8.964e-05, 9.05e-05, 1292.75920255], [1517112240000, 8.907e-05, 8.907e-05, 8.907e-05, 8.907e-05, 239.81960252], [1517112300000, 9.034e-05, 9.04e-05, 9.034e-05, 9.04e-05, 331.03083], [1517112360000, 8.933e-05, 9.039e-05, 8.933e-05, 8.951e-05, 2659.50357459], [1517112480000, 8.99e-05, 8.99e-05, 8.99e-05, 8.99e-05, 39.27378439], [1517112540000, 9e-05, 9e-05, 9e-05, 9e-05, 65.22965528], [1517112600000, 8.99e-05, 8.999e-05, 8.99e-05, 8.99e-05, 3096.24184847], [1517112660000, 8.99e-05, 8.99e-05, 8.9e-05, 8.9e-05, 5804.79017112], [1517112720000, 8.907e-05, 8.91e-05, 8.9e-05, 8.906e-05, 5151.44822619], [1517112780000, 8.901e-05, 8.902e-05, 8.875e-05, 8.875e-05, 4384.41021373], [1517112840000, 8.899e-05, 8.899e-05, 8.882e-05, 8.882e-05, 5037.4054409], [1517112900000, 8.984e-05, 8.985e-05, 8.984e-05, 8.984e-05, 360.04085223], [1517112960000, 8.896e-05, 8.896e-05, 8.896e-05, 8.896e-05, 1509.25333301], [1517113020000, 8.902e-05, 8.902e-05, 8.9e-05, 8.9e-05, 2747.13078919], [1517113080000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 314.19784271], [1517113140000, 8.891e-05, 8.891e-05, 8.891e-05, 8.891e-05, 2610.11774967], [1517113200000, 8.95e-05, 8.984e-05, 8.95e-05, 8.984e-05, 7890.62062425], [1517113260000, 8.982e-05, 8.983e-05, 8.909e-05, 8.911e-05, 3005.12277368], [1517113380000, 8.98e-05, 9.04e-05, 8.909e-05, 9e-05, 15823.9709839], [1517113440000, 9.001e-05, 9.001e-05, 8.919e-05, 9e-05, 2961.72477606], [1517113560000, 9.043e-05, 9.05e-05, 8.952e-05, 9e-05, 1479.30972538], [1517113740000, 9e-05, 9e-05, 9e-05, 9e-05, 1151.58234083], [1517113920000, 9e-05, 9e-05, 9e-05, 9e-05, 21.56702749], [1517113980000, 9e-05, 9.081e-05, 8.92e-05, 8.921e-05, 3055.47962143], [1517114040000, 9.079e-05, 9.079e-05, 9.079e-05, 9.079e-05, 29.21296447], [1517114220000, 9.073e-05, 9.073e-05, 8.947e-05, 9.072e-05, 1296.63851571], [1517114400000, 9e-05, 9e-05, 8.98e-05, 8.98e-05, 995.56116385], [1517114460000, 8.98e-05, 8.98e-05, 8.951e-05, 8.951e-05, 2076.55478997], [1517114520000, 8.96e-05, 8.962e-05, 8.946e-05, 8.946e-05, 1504.11000192], [1517114580000, 9e-05, 9e-05, 8.947e-05, 8.947e-05, 353.91633066], [1517114640000, 8.947e-05, 9e-05, 8.947e-05, 9e-05, 111.5973889], [1517114820000, 8.947e-05, 8.947e-05, 8.932e-05, 8.947e-05, 149.12], [1517114880000, 8.947e-05, 9e-05, 8.938e-05, 8.938e-05, 3436.84021704], [1517114940000, 8.94e-05, 8.945e-05, 8.94e-05, 8.945e-05, 964.4725591], [1517115000000, 8.961e-05, 9e-05, 8.961e-05, 8.961e-05, 474.51253519], [1517115060000, 8.963e-05, 9e-05, 8.963e-05, 8.97e-05, 3796.63658469], [1517115120000, 8.961e-05, 8.97e-05, 8.961e-05, 8.97e-05, 6164.18722424], [1517115180000, 8.959e-05, 8.959e-05, 8.959e-05, 8.959e-05, 3824.49277717], [1517115240000, 8.97e-05, 9.024e-05, 8.959e-05, 8.959e-05, 1365.87189851], [1517115300000, 9.023e-05, 9.023e-05, 8.962e-05, 8.962e-05, 21.15721328], [1517115360000, 8.964e-05, 9.032e-05, 8.959e-05, 8.959e-05, 5186.54047699], [1517115420000, 8.961e-05, 9.022e-05, 8.959e-05, 8.959e-05, 2923.5105408], [1517115480000, 8.959e-05, 8.959e-05, 8.959e-05, 8.959e-05, 1618.0], [1517115540000, 9.023e-05, 9.023e-05, 8.953e-05, 8.955e-05, 2073.72105769], [1517115600000, 8.955e-05, 8.955e-05, 8.955e-05, 8.955e-05, 949.648916], [1517115660000, 8.955e-05, 9.023e-05, 8.955e-05, 8.955e-05, 2567.41739395], [1517115720000, 8.953e-05, 8.953e-05, 8.953e-05, 8.953e-05, 50.38871774], [1517115780000, 8.953e-05, 8.953e-05, 8.952e-05, 8.952e-05, 5381.62150357], [1517115840000, 8.952e-05, 8.952e-05, 8.952e-05, 8.952e-05, 1024.47933318], [1517115900000, 8.953e-05, 8.953e-05, 8.952e-05, 8.952e-05, 2347.84753523], [1517115960000, 9.013e-05, 9.013e-05, 8.948e-05, 9.011e-05, 4828.12394023], [1517116020000, 9.014e-05, 9.014e-05, 8.948e-05, 8.948e-05, 147.85477527], [1517116080000, 8.95e-05, 8.95e-05, 8.949e-05, 8.949e-05, 440.12036087], [1517116140000, 8.949e-05, 8.949e-05, 8.949e-05, 8.949e-05, 85.77085822], [1517116200000, 8.949e-05, 8.949e-05, 8.938e-05, 8.938e-05, 2557.90660484], [1517116260000, 8.938e-05, 8.938e-05, 8.9e-05, 8.9e-05, 23986.48978124], [1517116320000, 8.994e-05, 8.994e-05, 8.985e-05, 8.986e-05, 863.28315334], [1517116380000, 8.978e-05, 8.978e-05, 8.978e-05, 8.978e-05, 366.58626313], [1517116440000, 8.888e-05, 8.975e-05, 8.888e-05, 8.89e-05, 422.34930314], [1517116500000, 8.89e-05, 8.982e-05, 8.89e-05, 8.975e-05, 753.5228702], [1517116560000, 8.888e-05, 8.979e-05, 8.888e-05, 8.979e-05, 1907.94718703], [1517116620000, 8.982e-05, 8.982e-05, 8.982e-05, 8.982e-05, 281.01476553], [1517116740000, 8.879e-05, 8.879e-05, 8.875e-05, 8.876e-05, 670.91642224], [1517116800000, 8.876e-05, 8.958e-05, 8.876e-05, 8.876e-05, 602.85174397], [1517116860000, 8.9e-05, 8.9e-05, 8.876e-05, 8.876e-05, 1026.58009301], [1517116920000, 8.876e-05, 8.943e-05, 8.876e-05, 8.942e-05, 442.3270468], [1517116980000, 8.876e-05, 8.876e-05, 8.876e-05, 8.876e-05, 4397.61384192], [1517117040000, 8.932e-05, 8.933e-05, 8.932e-05, 8.933e-05, 378.66046524], [1517117100000, 8.932e-05, 8.932e-05, 8.932e-05, 8.932e-05, 761.27444171], [1517117160000, 8.875e-05, 8.875e-05, 8.875e-05, 8.875e-05, 598.15087792], [1517117220000, 8.87e-05, 8.928e-05, 8.87e-05, 8.928e-05, 1735.21049489], [1517117280000, 8.933e-05, 8.968e-05, 8.865e-05, 8.968e-05, 835.13899101], [1517117400000, 8.9e-05, 8.963e-05, 8.9e-05, 8.9e-05, 10620.04332143], [1517117460000, 8.9e-05, 8.9e-05, 8.865e-05, 8.9e-05, 2073.66771478], [1517117520000, 8.9e-05, 8.9e-05, 8.865e-05, 8.865e-05, 163.5840032], [1517117700000, 8.91e-05, 8.918e-05, 8.91e-05, 8.918e-05, 2858.87075292], [1517117760000, 8.918e-05, 8.968e-05, 8.867e-05, 8.968e-05, 6975.73430441], [1517117820000, 8.968e-05, 8.968e-05, 8.967e-05, 8.967e-05, 224.05092472], [1517117880000, 8.967e-05, 8.967e-05, 8.967e-05, 8.967e-05, 268.16764637], [1517117940000, 8.967e-05, 8.967e-05, 8.875e-05, 8.879e-05, 152.51804478], [1517118000000, 8.966e-05, 8.967e-05, 8.966e-05, 8.966e-05, 671.65700826], [1517118060000, 8.966e-05, 8.966e-05, 8.966e-05, 8.966e-05, 20.18760182], [1517118120000, 8.9e-05, 8.9e-05, 8.885e-05, 8.885e-05, 4554.716576], [1517118180000, 8.885e-05, 8.968e-05, 8.885e-05, 8.966e-05, 617.87430828], [1517118240000, 8.966e-05, 8.966e-05, 8.9e-05, 8.9e-05, 374.22153107], [1517118300000, 8.899e-05, 8.95e-05, 8.899e-05, 8.95e-05, 80.91005808], [1517118360000, 8.949e-05, 8.949e-05, 8.886e-05, 8.886e-05, 70.30618119], [1517118420000, 8.949e-05, 8.949e-05, 8.949e-05, 8.949e-05, 2667.62476115], [1517118480000, 8.886e-05, 8.947e-05, 8.886e-05, 8.947e-05, 414.61448832], [1517118540000, 8.886e-05, 8.886e-05, 8.879e-05, 8.879e-05, 261.798], [1517118600000, 8.945e-05, 8.945e-05, 8.945e-05, 8.945e-05, 583.33333333], [1517118660000, 8.948e-05, 8.948e-05, 8.888e-05, 8.888e-05, 63.25142476], [1517118720000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 169.63528413], [1517118780000, 8.887e-05, 8.888e-05, 8.886e-05, 8.888e-05, 683.33555123], [1517118840000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 459.04319147], [1517118900000, 8.887e-05, 8.948e-05, 8.887e-05, 8.887e-05, 3883.0737182], [1517119080000, 8.948e-05, 8.948e-05, 8.887e-05, 8.887e-05, 1030.48018199], [1517119200000, 8.887e-05, 8.887e-05, 8.886e-05, 8.886e-05, 484.83649616], [1517119260000, 8.948e-05, 8.949e-05, 8.886e-05, 8.886e-05, 3373.01677883], [1517119320000, 8.886e-05, 8.949e-05, 8.886e-05, 8.949e-05, 782.64362213], [1517119380000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 1553.42519656], [1517119560000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 100.0], [1517119620000, 8.887e-05, 8.948e-05, 8.887e-05, 8.948e-05, 555.33868552], [1517119740000, 8.888e-05, 8.888e-05, 8.888e-05, 8.888e-05, 200.0], [1517119800000, 8.888e-05, 8.888e-05, 8.888e-05, 8.888e-05, 373.70463609], [1517119860000, 8.888e-05, 8.9e-05, 8.888e-05, 8.888e-05, 839.96162881], [1517119920000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 100.0], [1517119980000, 8.888e-05, 8.888e-05, 8.888e-05, 8.888e-05, 2047.24296593], [1517120040000, 8.889e-05, 8.889e-05, 8.885e-05, 8.885e-05, 3251.2377442], [1517120100000, 8.885e-05, 8.885e-05, 8.875e-05, 8.875e-05, 1686.98134003], [1517120160000, 8.875e-05, 8.875e-05, 8.875e-05, 8.875e-05, 419.19555348], [1517120220000, 8.875e-05, 8.875e-05, 8.875e-05, 8.875e-05, 49.3602637], [1517120280000, 8.886e-05, 8.886e-05, 8.886e-05, 8.886e-05, 36.90221371], [1517120340000, 8.875e-05, 8.89e-05, 8.83e-05, 8.89e-05, 13057.23208506], [1517120400000, 8.89e-05, 8.95e-05, 8.89e-05, 8.95e-05, 948.32001235], [1517120460000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 917.362371], [1517120520000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 2110.62250977], [1517120640000, 8.88e-05, 8.88e-05, 8.88e-05, 8.88e-05, 72.49570945], [1517120700000, 8.837e-05, 8.88e-05, 8.837e-05, 8.88e-05, 163.7761146], [1517120760000, 8.837e-05, 8.837e-05, 8.837e-05, 8.837e-05, 13.69761098], [1517120820000, 8.837e-05, 8.88e-05, 8.837e-05, 8.88e-05, 260.91885493], [1517120880000, 8.88e-05, 8.887e-05, 8.88e-05, 8.88e-05, 835.32020659], [1517120940000, 8.88e-05, 8.88e-05, 8.88e-05, 8.88e-05, 12.0], [1517121000000, 8.88e-05, 8.887e-05, 8.848e-05, 8.848e-05, 5222.60529484], [1517121060000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 352.60629345], [1517121120000, 8.887e-05, 8.887e-05, 8.88e-05, 8.88e-05, 342.49082621], [1517121180000, 8.887e-05, 8.887e-05, 8.887e-05, 8.887e-05, 146.00018898], [1517121240000, 8.95e-05, 8.95e-05, 8.855e-05, 8.855e-05, 691.93475091], [1517121300000, 8.949e-05, 8.968e-05, 8.949e-05, 8.968e-05, 3686.97084614], [1517121420000, 8.949e-05, 8.949e-05, 8.858e-05, 8.858e-05, 539.2933608], [1517121480000, 8.949e-05, 8.949e-05, 8.861e-05, 8.942e-05, 2952.43986879], [1517121540000, 8.859e-05, 8.859e-05, 8.855e-05, 8.855e-05, 242.48677509], [1517121600000, 8.855e-05, 8.926e-05, 8.855e-05, 8.855e-05, 1547.87139518], [1517121660000, 8.855e-05, 8.855e-05, 8.855e-05, 8.855e-05, 359.08562883], [1517121780000, 8.855e-05, 8.899e-05, 8.855e-05, 8.899e-05, 958.18453142], [1517122020000, 8.935e-05, 8.935e-05, 8.933e-05, 8.933e-05, 1206.74622266], [1517122080000, 8.935e-05, 8.945e-05, 8.831e-05, 8.838e-05, 5738.22474001], [1517122200000, 8.906e-05, 8.906e-05, 8.906e-05, 8.906e-05, 34.42012707], [1517122260000, 8.906e-05, 8.965e-05, 8.834e-05, 8.834e-05, 3555.59219348], [1517122320000, 8.84e-05, 8.947e-05, 8.84e-05, 8.847e-05, 1132.11284807], [1517122380000, 8.838e-05, 8.949e-05, 8.838e-05, 8.944e-05, 1048.66994626], [1517122440000, 8.851e-05, 8.851e-05, 8.851e-05, 8.851e-05, 100.0], [1517122500000, 8.848e-05, 8.848e-05, 8.848e-05, 8.848e-05, 75.34386889], [1517122620000, 8.85e-05, 8.85e-05, 8.849e-05, 8.849e-05, 146.13565658], [1517122680000, 8.94e-05, 8.94e-05, 8.94e-05, 8.94e-05, 133.88038774], [1517122800000, 8.94e-05, 8.94e-05, 8.832e-05, 8.832e-05, 1244.26048943], [1517122860000, 8.841e-05, 8.841e-05, 8.831e-05, 8.831e-05, 1000.0], [1517122920000, 8.85e-05, 8.93e-05, 8.85e-05, 8.93e-05, 1796.78919164], [1517122980000, 8.854e-05, 8.858e-05, 8.854e-05, 8.858e-05, 1172.0], [1517123040000, 8.858e-05, 8.944e-05, 8.836e-05, 8.944e-05, 2625.28749614], [1517123280000, 8.921e-05, 8.922e-05, 8.835e-05, 8.835e-05, 889.65815798], [1517123340000, 8.924e-05, 8.924e-05, 8.924e-05, 8.924e-05, 172.20108284], [1517123400000, 8.92e-05, 8.92e-05, 8.84e-05, 8.844e-05, 130.71335804], [1517123460000, 8.919e-05, 8.919e-05, 8.919e-05, 8.919e-05, 37.23384881], [1517123520000, 8.845e-05, 8.845e-05, 8.836e-05, 8.836e-05, 10.0], [1517123640000, 8.837e-05, 8.837e-05, 8.836e-05, 8.836e-05, 144.83240863], [1517123700000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 200.0], [1517123880000, 8.851e-05, 8.91e-05, 8.837e-05, 8.91e-05, 3976.01580878], [1517123940000, 8.908e-05, 8.908e-05, 8.908e-05, 8.908e-05, 111.95286195], [1517124000000, 8.907e-05, 8.908e-05, 8.835e-05, 8.908e-05, 1691.07594464], [1517124120000, 8.906e-05, 8.907e-05, 8.906e-05, 8.907e-05, 1211.47585734], [1517124300000, 8.908e-05, 8.908e-05, 8.84e-05, 8.84e-05, 256.00648827], [1517124360000, 8.908e-05, 8.908e-05, 8.907e-05, 8.908e-05, 164.13443689], [1517124420000, 8.908e-05, 8.91e-05, 8.908e-05, 8.91e-05, 52.33998055], [1517124540000, 8.91e-05, 8.917e-05, 8.91e-05, 8.917e-05, 991.92846682], [1517124660000, 8.843e-05, 8.843e-05, 8.843e-05, 8.843e-05, 674.79057081], [1517124780000, 8.917e-05, 8.917e-05, 8.917e-05, 8.917e-05, 218.97081878], [1517124840000, 8.849e-05, 8.849e-05, 8.849e-05, 8.849e-05, 175.0], [1517124900000, 8.849e-05, 8.849e-05, 8.849e-05, 8.849e-05, 991.23165636], [1517124960000, 8.849e-05, 8.914e-05, 8.849e-05, 8.914e-05, 572.89568519], [1517125020000, 8.914e-05, 8.914e-05, 8.914e-05, 8.914e-05, 36.51239251], [1517125080000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 11.0], [1517125140000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 81.15477663], [1517125200000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 78.6481292], [1517125260000, 8.849e-05, 8.849e-05, 8.839e-05, 8.839e-05, 6736.10102217], [1517125320000, 8.849e-05, 8.849e-05, 8.849e-05, 8.849e-05, 166.90869025], [1517125380000, 8.84e-05, 8.849e-05, 8.84e-05, 8.849e-05, 119.46014937], [1517125440000, 8.84e-05, 8.84e-05, 8.84e-05, 8.84e-05, 177.39442609], [1517125500000, 8.84e-05, 8.84e-05, 8.84e-05, 8.84e-05, 100.301003], [1517125560000, 8.839e-05, 8.84e-05, 8.839e-05, 8.84e-05, 4535.03148264], [1517125680000, 8.84e-05, 8.84e-05, 8.84e-05, 8.84e-05, 8602.84755731], [1517125740000, 8.839e-05, 8.839e-05, 8.839e-05, 8.839e-05, 30.01577968], [1517125800000, 8.848e-05, 8.848e-05, 8.848e-05, 8.848e-05, 2254.74683544], [1517125860000, 8.848e-05, 8.848e-05, 8.848e-05, 8.848e-05, 223.46261072], [1517125920000, 8.848e-05, 8.848e-05, 8.848e-05, 8.848e-05, 157.47147315], [1517126040000, 8.84e-05, 8.84e-05, 8.84e-05, 8.84e-05, 100.0], [1517126100000, 8.84e-05, 8.849e-05, 8.839e-05, 8.849e-05, 3107.22261029], [1517126160000, 8.849e-05, 8.849e-05, 8.835e-05, 8.835e-05, 1378.80664135], [1517126220000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 1556.0], [1517126280000, 8.835e-05, 8.848e-05, 8.83e-05, 8.848e-05, 186.18060205], [1517126340000, 8.83e-05, 8.83e-05, 8.8e-05, 8.8e-05, 9444.44269204], [1517126400000, 8.8e-05, 8.812e-05, 8.8e-05, 8.812e-05, 1203.30706365], [1517126460000, 8.79e-05, 8.79e-05, 8.79e-05, 8.79e-05, 9.74956502], [1517126520000, 8.79e-05, 8.79e-05, 8.778e-05, 8.778e-05, 48.13824852], [1517126580000, 8.79e-05, 8.808e-05, 8.79e-05, 8.79e-05, 612.1871675], [1517126640000, 8.79e-05, 8.807e-05, 8.79e-05, 8.799e-05, 430.88200026], [1517126700000, 8.807e-05, 8.807e-05, 8.807e-05, 8.807e-05, 806.33230141], [1517126760000, 8.799e-05, 8.807e-05, 8.79e-05, 8.807e-05, 818.00696007], [1517126820000, 8.807e-05, 8.808e-05, 8.807e-05, 8.808e-05, 2000.46450111], [1517126880000, 8.812e-05, 8.812e-05, 8.808e-05, 8.809e-05, 1246.86550335], [1517127060000, 8.812e-05, 8.812e-05, 8.812e-05, 8.812e-05, 126.02436047], [1517127120000, 8.812e-05, 8.812e-05, 8.812e-05, 8.812e-05, 115.29627727], [1517127180000, 8.812e-05, 8.812e-05, 8.809e-05, 8.809e-05, 539.0], [1517127240000, 8.843e-05, 8.843e-05, 8.843e-05, 8.843e-05, 49.75686984], [1517127300000, 8.811e-05, 8.812e-05, 8.811e-05, 8.811e-05, 319.87701989], [1517127360000, 8.814e-05, 8.814e-05, 8.814e-05, 8.814e-05, 55.22636835], [1517127420000, 8.843e-05, 8.931e-05, 8.843e-05, 8.931e-05, 3712.62214759], [1517127480000, 8.825e-05, 8.825e-05, 8.824e-05, 8.824e-05, 20.04975279], [1517127540000, 8.904e-05, 8.904e-05, 8.825e-05, 8.901e-05, 1605.83428767], [1517127600000, 8.826e-05, 8.904e-05, 8.824e-05, 8.824e-05, 2045.91032838], [1517127660000, 8.884e-05, 8.932e-05, 8.884e-05, 8.932e-05, 2376.37953557], [1517127720000, 8.824e-05, 8.824e-05, 8.824e-05, 8.824e-05, 331.03083], [1517127840000, 8.825e-05, 8.825e-05, 8.825e-05, 8.825e-05, 52.410901], [1517127960000, 8.922e-05, 8.922e-05, 8.922e-05, 8.922e-05, 458.74115458], [1517128020000, 8.92e-05, 8.922e-05, 8.785e-05, 8.877e-05, 8474.78383137], [1517128080000, 8.877e-05, 8.922e-05, 8.877e-05, 8.922e-05, 814.99995056], [1517128140000, 8.919e-05, 8.919e-05, 8.919e-05, 8.919e-05, 55.90114324], [1517128200000, 8.919e-05, 8.919e-05, 8.819e-05, 8.819e-05, 246.56597398], [1517128260000, 8.916e-05, 8.919e-05, 8.916e-05, 8.919e-05, 112.12019285], [1517128320000, 8.916e-05, 8.93e-05, 8.916e-05, 8.93e-05, 448.77119763], [1517128380000, 8.916e-05, 8.916e-05, 8.805e-05, 8.805e-05, 3140.42171377], [1517128500000, 8.909e-05, 8.909e-05, 8.905e-05, 8.905e-05, 440.18857751], [1517128680000, 8.896e-05, 8.896e-05, 8.896e-05, 8.896e-05, 297.15926487], [1517128740000, 8.878e-05, 8.878e-05, 8.878e-05, 8.878e-05, 5.96102551], [1517128860000, 8.876e-05, 8.894e-05, 8.872e-05, 8.894e-05, 556.38922072], [1517128920000, 8.87e-05, 8.93e-05, 8.87e-05, 8.93e-05, 1885.33832678], [1517128980000, 8.879e-05, 8.93e-05, 8.879e-05, 8.93e-05, 901.83963282], [1517129040000, 8.93e-05, 8.93e-05, 8.93e-05, 8.93e-05, 404.70811145], [1517129100000, 8.929e-05, 8.929e-05, 8.929e-05, 8.929e-05, 179.214439], [1517129160000, 8.84e-05, 8.927e-05, 8.84e-05, 8.927e-05, 304.71015552], [1517129220000, 8.833e-05, 8.927e-05, 8.823e-05, 8.828e-05, 2128.40253641], [1517129280000, 8.906e-05, 8.928e-05, 8.83e-05, 8.83e-05, 612.10517839], [1517129340000, 8.926e-05, 8.926e-05, 8.926e-05, 8.926e-05, 153.46701019], [1517129580000, 8.84e-05, 8.917e-05, 8.84e-05, 8.917e-05, 355.78399612], [1517129640000, 8.917e-05, 8.917e-05, 8.84e-05, 8.84e-05, 1026.32873573], [1517129700000, 8.841e-05, 8.841e-05, 8.841e-05, 8.841e-05, 52.36773567], [1517129760000, 8.841e-05, 8.841e-05, 8.841e-05, 8.841e-05, 547.63226433], [1517129820000, 8.84e-05, 8.84e-05, 8.84e-05, 8.84e-05, 10.97027738], [1517129880000, 8.841e-05, 8.842e-05, 8.841e-05, 8.842e-05, 363.71424776], [1517129940000, 8.841e-05, 8.841e-05, 8.839e-05, 8.839e-05, 437.14765871], [1517130000000, 8.909e-05, 8.909e-05, 8.833e-05, 8.833e-05, 437.83545876], [1517130060000, 8.833e-05, 8.93e-05, 8.833e-05, 8.93e-05, 4433.73406526], [1517130180000, 8.835e-05, 8.923e-05, 8.833e-05, 8.923e-05, 1133.61721201], [1517130240000, 8.92e-05, 8.92e-05, 8.912e-05, 8.912e-05, 762.98787036], [1517130300000, 8.833e-05, 8.91e-05, 8.832e-05, 8.91e-05, 1485.91065826], [1517130480000, 8.835e-05, 8.909e-05, 8.835e-05, 8.909e-05, 76.63934426], [1517130540000, 8.836e-05, 8.836e-05, 8.836e-05, 8.836e-05, 865.63906794], [1517130600000, 8.836e-05, 8.837e-05, 8.836e-05, 8.837e-05, 230.55360113], [1517130720000, 8.909e-05, 8.909e-05, 8.909e-05, 8.909e-05, 73.49555539], [1517130780000, 8.837e-05, 8.837e-05, 8.837e-05, 8.837e-05, 15.25373317], [1517130840000, 8.837e-05, 8.837e-05, 8.837e-05, 8.837e-05, 382.91402244], [1517130960000, 8.837e-05, 8.837e-05, 8.837e-05, 8.837e-05, 2080.13060667], [1517131080000, 8.837e-05, 8.837e-05, 8.837e-05, 8.837e-05, 357.16482177], [1517131140000, 8.837e-05, 8.837e-05, 8.835e-05, 8.835e-05, 2622.06927567], [1517131200000, 8.905e-05, 8.905e-05, 8.905e-05, 8.905e-05, 368.71630037], [1517131260000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 28.78904208], [1517131320000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 155.09979096], [1517131380000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 2420.93713646], [1517131440000, 8.905e-05, 8.905e-05, 8.905e-05, 8.905e-05, 73.63270501], [1517131500000, 8.832e-05, 8.905e-05, 8.832e-05, 8.905e-05, 921.09805978], [1517131620000, 8.833e-05, 8.833e-05, 8.833e-05, 8.833e-05, 50.0], [1517131740000, 8.834e-05, 8.9e-05, 8.834e-05, 8.9e-05, 163.33049421], [1517131800000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 13.25374888], [1517132040000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 65.6065939], [1517132100000, 8.835e-05, 8.835e-05, 8.834e-05, 8.835e-05, 3422.01574619], [1517132160000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 7.5111129], [1517132220000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 265.79099587], [1517132400000, 8.842e-05, 8.898e-05, 8.842e-05, 8.898e-05, 51.7098851], [1517132460000, 8.898e-05, 8.898e-05, 8.834e-05, 8.834e-05, 2063.45084234], [1517132700000, 8.898e-05, 8.898e-05, 8.898e-05, 8.898e-05, 22.067003], [1517132760000, 8.898e-05, 8.898e-05, 8.898e-05, 8.898e-05, 620.3927849], [1517132880000, 8.897e-05, 8.898e-05, 8.897e-05, 8.898e-05, 863.13191371], [1517132940000, 8.899e-05, 8.899e-05, 8.899e-05, 8.899e-05, 2569.49865714], [1517133000000, 8.899e-05, 8.899e-05, 8.899e-05, 8.899e-05, 847.34028233], [1517133060000, 8.899e-05, 8.899e-05, 8.899e-05, 8.899e-05, 437.26950103], [1517133120000, 8.9e-05, 8.9e-05, 8.899e-05, 8.899e-05, 4875.481206], [1517133180000, 8.9e-05, 8.9e-05, 8.898e-05, 8.899e-05, 4170.14795857], [1517133240000, 8.899e-05, 8.899e-05, 8.899e-05, 8.899e-05, 45.70072199], [1517133300000, 8.899e-05, 8.899e-05, 8.899e-05, 8.899e-05, 73.31274968], [1517133420000, 8.898e-05, 8.898e-05, 8.834e-05, 8.834e-05, 10.69716444], [1517133540000, 8.899e-05, 8.905e-05, 8.899e-05, 8.905e-05, 6.93630437], [1517133600000, 8.899e-05, 8.899e-05, 8.834e-05, 8.834e-05, 690.26143389], [1517133660000, 8.899e-05, 8.905e-05, 8.899e-05, 8.905e-05, 352.14550393], [1517133720000, 8.905e-05, 8.905e-05, 8.835e-05, 8.835e-05, 393.59546631], [1517133780000, 8.905e-05, 8.905e-05, 8.905e-05, 8.905e-05, 39.04409074], [1517133900000, 8.905e-05, 8.905e-05, 8.837e-05, 8.837e-05, 308.7340157], [1517133960000, 8.905e-05, 8.905e-05, 8.836e-05, 8.836e-05, 795.83635321], [1517134020000, 8.836e-05, 8.836e-05, 8.836e-05, 8.836e-05, 110.36792452], [1517134080000, 8.9e-05, 8.9e-05, 8.836e-05, 8.836e-05, 147.18157886], [1517134140000, 8.836e-05, 8.836e-05, 8.836e-05, 8.836e-05, 533.54691762], [1517134260000, 8.837e-05, 8.9e-05, 8.837e-05, 8.9e-05, 725.32040093], [1517134320000, 8.837e-05, 8.888e-05, 8.836e-05, 8.888e-05, 1329.11544517], [1517134380000, 8.888e-05, 8.888e-05, 8.836e-05, 8.836e-05, 322.64869893], [1517134440000, 8.888e-05, 8.899e-05, 8.888e-05, 8.899e-05, 759.22062906], [1517134560000, 8.898e-05, 8.898e-05, 8.841e-05, 8.841e-05, 469.51284442], [1517134620000, 8.841e-05, 8.898e-05, 8.841e-05, 8.898e-05, 61.92340408], [1517134740000, 8.842e-05, 8.842e-05, 8.836e-05, 8.836e-05, 2950.00392441], [1517134800000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 306.45078292], [1517134860000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 28.97472638], [1517134920000, 8.898e-05, 8.899e-05, 8.843e-05, 8.899e-05, 552.92240893], [1517134980000, 8.899e-05, 8.9e-05, 8.899e-05, 8.9e-05, 1427.65738794], [1517135040000, 8.9e-05, 8.905e-05, 8.9e-05, 8.905e-05, 100.301003], [1517135160000, 8.843e-05, 8.843e-05, 8.843e-05, 8.843e-05, 326.7449395], [1517135220000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 25.0], [1517135280000, 8.9e-05, 8.9e-05, 8.843e-05, 8.9e-05, 241.18795825], [1517135340000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 54.985393], [1517135460000, 8.848e-05, 8.848e-05, 8.848e-05, 8.848e-05, 11.33024412], [1517135520000, 8.847e-05, 8.9e-05, 8.847e-05, 8.9e-05, 314.35875429], [1517135580000, 8.858e-05, 8.9e-05, 8.858e-05, 8.9e-05, 183.31668643], [1517135700000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 11.20786517], [1517135760000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 20.0], [1517135820000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 466.73716193], [1517135880000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 4856.75642354], [1517135940000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 104.79841629], [1517136000000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 8.0], [1517136060000, 8.9e-05, 8.9e-05, 8.844e-05, 8.844e-05, 3437.61702425], [1517136120000, 8.85e-05, 8.883e-05, 8.844e-05, 8.844e-05, 1497.43786978], [1517136180000, 8.844e-05, 8.844e-05, 8.844e-05, 8.844e-05, 600.0], [1517136240000, 8.844e-05, 8.844e-05, 8.844e-05, 8.844e-05, 436.97180088], [1517136300000, 8.844e-05, 8.9e-05, 8.844e-05, 8.844e-05, 299.12541327], [1517136420000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 61.93339187], [1517136480000, 8.844e-05, 8.845e-05, 8.844e-05, 8.845e-05, 527.90077157], [1517136540000, 8.845e-05, 8.845e-05, 8.845e-05, 8.845e-05, 130.36923173], [1517136600000, 8.845e-05, 8.845e-05, 8.845e-05, 8.845e-05, 401.16248278], [1517136660000, 8.845e-05, 8.845e-05, 8.844e-05, 8.845e-05, 3567.4156908], [1517136720000, 8.845e-05, 8.845e-05, 8.845e-05, 8.845e-05, 554.49310305], [1517136780000, 8.844e-05, 8.905e-05, 8.844e-05, 8.905e-05, 1583.80063469], [1517136960000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 147.413531], [1517137020000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 256.64122547], [1517137080000, 8.9e-05, 8.9e-05, 8.845e-05, 8.845e-05, 103.03066618], [1517137140000, 8.845e-05, 8.845e-05, 8.844e-05, 8.844e-05, 3435.59649575], [1517137200000, 8.844e-05, 8.845e-05, 8.844e-05, 8.845e-05, 3830.07088049], [1517137260000, 8.845e-05, 8.845e-05, 8.844e-05, 8.845e-05, 1006.62582021], [1517137380000, 8.898e-05, 8.898e-05, 8.898e-05, 8.898e-05, 33.12320413], [1517137440000, 8.844e-05, 8.844e-05, 8.844e-05, 8.844e-05, 280.82640737], [1517137560000, 8.844e-05, 8.899e-05, 8.844e-05, 8.899e-05, 758.85953478], [1517137680000, 8.897e-05, 8.897e-05, 8.897e-05, 8.897e-05, 905.0], [1517137800000, 8.845e-05, 8.845e-05, 8.844e-05, 8.845e-05, 332.70401889], [1517137860000, 8.897e-05, 8.9e-05, 8.897e-05, 8.9e-05, 2110.48357549], [1517138040000, 8.845e-05, 8.845e-05, 8.845e-05, 8.845e-05, 721.65034885], [1517138100000, 8.845e-05, 8.845e-05, 8.845e-05, 8.845e-05, 796.78207476], [1517138280000, 8.898e-05, 8.9e-05, 8.898e-05, 8.9e-05, 2097.89794854], [1517138340000, 8.899e-05, 8.9e-05, 8.855e-05, 8.855e-05, 152.30479325], [1517138400000, 8.898e-05, 8.898e-05, 8.898e-05, 8.898e-05, 74.17397167], [1517138460000, 8.866e-05, 8.866e-05, 8.866e-05, 8.866e-05, 821.91951769], [1517138580000, 8.897e-05, 8.897e-05, 8.897e-05, 8.897e-05, 288.38410719], [1517138640000, 8.897e-05, 8.897e-05, 8.897e-05, 8.897e-05, 365.06281649], [1517138700000, 8.897e-05, 8.897e-05, 8.897e-05, 8.897e-05, 361.5924261], [1517138760000, 8.897e-05, 8.897e-05, 8.897e-05, 8.897e-05, 25.0], [1517138880000, 8.855e-05, 8.855e-05, 8.855e-05, 8.855e-05, 2816.16417401], [1517139060000, 8.857e-05, 8.857e-05, 8.857e-05, 8.857e-05, 164.12421921], [1517139120000, 8.857e-05, 8.857e-05, 8.857e-05, 8.857e-05, 1484.28315016], [1517139240000, 8.858e-05, 8.858e-05, 8.858e-05, 8.858e-05, 210.61531562], [1517139300000, 8.868e-05, 8.898e-05, 8.858e-05, 8.898e-05, 1108.84805772], [1517139360000, 8.858e-05, 8.861e-05, 8.858e-05, 8.861e-05, 299.44980118], [1517139420000, 8.898e-05, 8.9e-05, 8.858e-05, 8.9e-05, 11388.58301547], [1517139480000, 8.858e-05, 8.9e-05, 8.858e-05, 8.9e-05, 305.52801699], [1517139660000, 8.899e-05, 8.901e-05, 8.899e-05, 8.901e-05, 515.48893138], [1517139780000, 8.861e-05, 8.861e-05, 8.86e-05, 8.86e-05, 5148.95473148], [1517139840000, 8.861e-05, 8.861e-05, 8.861e-05, 8.861e-05, 1.04526852], [1517139900000, 8.861e-05, 8.861e-05, 8.86e-05, 8.86e-05, 1841.75765902], [1517139960000, 8.861e-05, 8.861e-05, 8.861e-05, 8.861e-05, 36.94410187], [1517140020000, 8.861e-05, 8.861e-05, 8.861e-05, 8.861e-05, 370.26815418], [1517140080000, 8.861e-05, 8.861e-05, 8.861e-05, 8.861e-05, 312.41720633], [1517140140000, 8.86e-05, 8.861e-05, 8.86e-05, 8.861e-05, 1451.63462795], [1517140200000, 8.861e-05, 8.861e-05, 8.861e-05, 8.861e-05, 2105.09320503], [1517140260000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 9.56249419], [1517140320000, 8.861e-05, 8.861e-05, 8.86e-05, 8.86e-05, 1170.53343754], [1517140380000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 450.51827387], [1517140440000, 8.861e-05, 8.861e-05, 8.86e-05, 8.86e-05, 131.78325729], [1517140560000, 8.861e-05, 8.861e-05, 8.861e-05, 8.861e-05, 214.28697805], [1517140620000, 8.861e-05, 8.861e-05, 8.861e-05, 8.861e-05, 1052.09384826], [1517140680000, 8.861e-05, 8.898e-05, 8.861e-05, 8.898e-05, 12.20039809], [1517140740000, 8.861e-05, 8.861e-05, 8.861e-05, 8.861e-05, 12.0381668], [1517140800000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 20.0], [1517140860000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 781.30955874], [1517140920000, 8.876e-05, 8.876e-05, 8.876e-05, 8.876e-05, 330.0], [1517140980000, 8.876e-05, 8.876e-05, 8.858e-05, 8.858e-05, 1052.78262795], [1517141040000, 8.858e-05, 8.913e-05, 8.858e-05, 8.913e-05, 4680.92005432], [1517141160000, 8.858e-05, 8.858e-05, 8.858e-05, 8.858e-05, 10.0], [1517141220000, 8.859e-05, 8.859e-05, 8.859e-05, 8.859e-05, 29.2255439], [1517141280000, 8.912e-05, 8.913e-05, 8.912e-05, 8.913e-05, 36.26309799], [1517141340000, 8.898e-05, 8.899e-05, 8.898e-05, 8.898e-05, 420.51102849], [1517141400000, 8.913e-05, 8.913e-05, 8.859e-05, 8.859e-05, 159.74542992], [1517141460000, 8.911e-05, 8.913e-05, 8.911e-05, 8.913e-05, 1904.47363899], [1517141520000, 8.913e-05, 8.913e-05, 8.913e-05, 8.913e-05, 27.7274783], [1517141640000, 8.927e-05, 8.927e-05, 8.913e-05, 8.913e-05, 1778.59429064], [1517141700000, 8.913e-05, 8.913e-05, 8.913e-05, 8.913e-05, 215.0], [1517141760000, 8.913e-05, 8.927e-05, 8.912e-05, 8.912e-05, 10526.38753278], [1517141820000, 8.912e-05, 8.926e-05, 8.859e-05, 8.926e-05, 2607.25363472], [1517141880000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 324.33295937], [1517141940000, 8.86e-05, 8.925e-05, 8.859e-05, 8.925e-05, 584.2081003], [1517142000000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 366.89084387], [1517142060000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 191.43449568], [1517142180000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 708.90928], [1517142240000, 8.923e-05, 8.923e-05, 8.923e-05, 8.923e-05, 182.93565246], [1517142300000, 8.923e-05, 8.923e-05, 8.923e-05, 8.923e-05, 11.9047], [1517142360000, 8.922e-05, 8.922e-05, 8.922e-05, 8.922e-05, 15.0], [1517142480000, 8.868e-05, 8.868e-05, 8.868e-05, 8.868e-05, 5436.59043659], [1517142540000, 8.868e-05, 8.868e-05, 8.86e-05, 8.86e-05, 2776.28810898], [1517142600000, 8.868e-05, 8.868e-05, 8.86e-05, 8.86e-05, 1045.09611473], [1517142660000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 3002.59961077], [1517142720000, 8.859e-05, 8.859e-05, 8.859e-05, 8.859e-05, 245.09], [1517142780000, 8.859e-05, 8.859e-05, 8.859e-05, 8.859e-05, 670.96589918], [1517142900000, 8.859e-05, 8.859e-05, 8.859e-05, 8.859e-05, 1088.84175838], [1517142960000, 8.859e-05, 8.859e-05, 8.858e-05, 8.859e-05, 5996.26814597], [1517143020000, 8.859e-05, 8.859e-05, 8.859e-05, 8.859e-05, 1678.29192399], [1517143080000, 8.858e-05, 8.858e-05, 8.858e-05, 8.858e-05, 128.21725768], [1517143140000, 8.858e-05, 8.859e-05, 8.858e-05, 8.859e-05, 380.24359937], [1517143200000, 8.859e-05, 8.859e-05, 8.859e-05, 8.859e-05, 130.42233562], [1517143320000, 8.858e-05, 8.858e-05, 8.857e-05, 8.857e-05, 71.44498869], [1517143380000, 8.857e-05, 8.859e-05, 8.857e-05, 8.859e-05, 3982.70548791], [1517143440000, 8.857e-05, 8.857e-05, 8.857e-05, 8.857e-05, 472.89915956], [1517143500000, 8.855e-05, 8.855e-05, 8.845e-05, 8.845e-05, 1804.1992668], [1517143620000, 8.854e-05, 8.857e-05, 8.854e-05, 8.857e-05, 2660.61419703], [1517143800000, 8.857e-05, 8.867e-05, 8.857e-05, 8.867e-05, 2579.57898119], [1517143860000, 8.92e-05, 8.92e-05, 8.867e-05, 8.867e-05, 8272.91038898], [1517143920000, 8.867e-05, 8.867e-05, 8.867e-05, 8.867e-05, 113.1349219], [1517143980000, 8.867e-05, 8.867e-05, 8.867e-05, 8.867e-05, 182.10555738], [1517144040000, 8.885e-05, 8.885e-05, 8.884e-05, 8.885e-05, 1020.13890074], [1517144100000, 8.867e-05, 8.867e-05, 8.867e-05, 8.867e-05, 2097.73976452], [1517144160000, 8.846e-05, 8.867e-05, 8.845e-05, 8.845e-05, 915.86648962], [1517144220000, 8.846e-05, 8.846e-05, 8.846e-05, 8.846e-05, 150.0], [1517144340000, 8.846e-05, 8.846e-05, 8.846e-05, 8.846e-05, 1411.41468902], [1517144400000, 8.846e-05, 8.846e-05, 8.846e-05, 8.846e-05, 196.20010852], [1517144460000, 8.846e-05, 8.846e-05, 8.845e-05, 8.845e-05, 1972.54722838], [1517144520000, 8.866e-05, 8.867e-05, 8.866e-05, 8.867e-05, 73.6859327], [1517144640000, 8.845e-05, 8.845e-05, 8.845e-05, 8.845e-05, 2582.58907908], [1517144700000, 8.844e-05, 8.844e-05, 8.844e-05, 8.844e-05, 198.63456917], [1517144760000, 8.865e-05, 8.865e-05, 8.844e-05, 8.844e-05, 823.61286185], [1517144820000, 8.844e-05, 8.865e-05, 8.844e-05, 8.865e-05, 95.80652541], [1517144880000, 8.865e-05, 8.865e-05, 8.865e-05, 8.865e-05, 46.46229391], [1517144940000, 8.865e-05, 8.865e-05, 8.824e-05, 8.824e-05, 6621.09898618], [1517145000000, 8.824e-05, 8.837e-05, 8.824e-05, 8.837e-05, 1494.28500636], [1517145060000, 8.866e-05, 8.867e-05, 8.866e-05, 8.867e-05, 276.29473333], [1517145120000, 8.884e-05, 8.888e-05, 8.884e-05, 8.888e-05, 267.9689156], [1517145180000, 8.888e-05, 8.888e-05, 8.888e-05, 8.888e-05, 94.80612394], [1517145240000, 8.888e-05, 8.888e-05, 8.888e-05, 8.888e-05, 30.0], [1517145300000, 8.919e-05, 8.919e-05, 8.919e-05, 8.919e-05, 214.27040924], [1517145360000, 8.919e-05, 8.919e-05, 8.919e-05, 8.919e-05, 269.22579802], [1517145420000, 8.888e-05, 8.888e-05, 8.867e-05, 8.867e-05, 924.56856141], [1517145480000, 8.826e-05, 8.826e-05, 8.826e-05, 8.826e-05, 10337.811], [1517145540000, 8.829e-05, 8.829e-05, 8.827e-05, 8.827e-05, 1000.0], [1517145600000, 8.826e-05, 8.826e-05, 8.826e-05, 8.826e-05, 83.47554715], [1517145660000, 8.827e-05, 8.827e-05, 8.827e-05, 8.827e-05, 18.25429864], [1517145720000, 8.827e-05, 8.866e-05, 8.826e-05, 8.866e-05, 858.0], [1517145780000, 8.865e-05, 8.867e-05, 8.865e-05, 8.867e-05, 57.98961341], [1517145840000, 8.867e-05, 8.87e-05, 8.867e-05, 8.87e-05, 81.6016073], [1517145900000, 8.87e-05, 8.923e-05, 8.826e-05, 8.826e-05, 2627.10524557], [1517145960000, 8.868e-05, 8.922e-05, 8.868e-05, 8.922e-05, 422.49775905], [1517146020000, 8.831e-05, 8.831e-05, 8.831e-05, 8.831e-05, 70.03067926], [1517146200000, 8.837e-05, 8.837e-05, 8.837e-05, 8.837e-05, 7.3026917], [1517146260000, 8.837e-05, 8.837e-05, 8.837e-05, 8.837e-05, 150.0], [1517146440000, 8.839e-05, 8.839e-05, 8.837e-05, 8.837e-05, 57.4056955], [1517146500000, 8.837e-05, 8.837e-05, 8.837e-05, 8.837e-05, 344.8670496], [1517146620000, 8.914e-05, 8.914e-05, 8.914e-05, 8.914e-05, 74.90404784], [1517146680000, 8.918e-05, 8.918e-05, 8.837e-05, 8.837e-05, 319.29900021], [1517146740000, 8.836e-05, 8.838e-05, 8.836e-05, 8.837e-05, 1409.87013747], [1517146800000, 8.838e-05, 8.838e-05, 8.838e-05, 8.838e-05, 19.54], [1517146920000, 8.838e-05, 8.838e-05, 8.837e-05, 8.837e-05, 3283.16965275], [1517147160000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 204.77218814], [1517147220000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 827.46377072], [1517147340000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 202.26582508], [1517147400000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 1772.79537428], [1517147580000, 8.831e-05, 8.831e-05, 8.831e-05, 8.831e-05, 392.30491347], [1517147700000, 8.83e-05, 8.831e-05, 8.824e-05, 8.824e-05, 354.60153557], [1517147760000, 8.824e-05, 8.825e-05, 8.824e-05, 8.825e-05, 22.312561], [1517147820000, 8.825e-05, 8.825e-05, 8.825e-05, 8.825e-05, 1125.75025618], [1517147880000, 8.856e-05, 8.856e-05, 8.825e-05, 8.825e-05, 338.31103189], [1517147940000, 8.889e-05, 8.889e-05, 8.889e-05, 8.889e-05, 62.27365706], [1517148060000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 56.24296963], [1517148120000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 150.05095661], [1517148180000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 150.0], [1517148240000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 821.99628748], [1517148360000, 8.907e-05, 8.909e-05, 8.83e-05, 8.83e-05, 1769.682985], [1517148420000, 8.83e-05, 8.898e-05, 8.83e-05, 8.898e-05, 39.22096317], [1517148600000, 8.839e-05, 8.898e-05, 8.838e-05, 8.898e-05, 886.09926491], [1517148720000, 8.845e-05, 8.845e-05, 8.845e-05, 8.845e-05, 60.0], [1517148780000, 8.845e-05, 8.845e-05, 8.845e-05, 8.845e-05, 5.68], [1517148900000, 8.897e-05, 8.898e-05, 8.87e-05, 8.898e-05, 230.03881351], [1517148960000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 48.917792], [1517149080000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 15.75981041], [1517149140000, 8.86e-05, 8.899e-05, 8.85e-05, 8.899e-05, 185.51835915], [1517149320000, 8.899e-05, 8.899e-05, 8.899e-05, 8.899e-05, 13.48466119], [1517149380000, 8.899e-05, 8.904e-05, 8.899e-05, 8.904e-05, 236.97340582], [1517149500000, 8.899e-05, 8.904e-05, 8.899e-05, 8.904e-05, 1464.62268491], [1517149560000, 8.904e-05, 8.904e-05, 8.904e-05, 8.904e-05, 0.47790964], [1517149740000, 8.871e-05, 8.871e-05, 8.871e-05, 8.871e-05, 31.03663172], [1517149800000, 8.869e-05, 8.87e-05, 8.869e-05, 8.87e-05, 449.32432432], [1517149920000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 47.57400254], [1517149980000, 8.85e-05, 8.85e-05, 8.846e-05, 8.846e-05, 325.53724641], [1517150100000, 8.846e-05, 8.846e-05, 8.846e-05, 8.846e-05, 84.85953478], [1517150160000, 8.869e-05, 8.87e-05, 8.869e-05, 8.87e-05, 163.4449328], [1517150220000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 183.29849559], [1517150280000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 232.71828997], [1517150340000, 8.87e-05, 8.87e-05, 8.846e-05, 8.846e-05, 1203.57794683], [1517150400000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 500.0], [1517150580000, 8.871e-05, 8.871e-05, 8.87e-05, 8.87e-05, 3874.09197434], [1517150640000, 8.889e-05, 8.889e-05, 8.889e-05, 8.889e-05, 223.39391225], [1517150700000, 8.889e-05, 8.89e-05, 8.889e-05, 8.89e-05, 486.3340701], [1517150760000, 8.899e-05, 8.9e-05, 8.899e-05, 8.9e-05, 689.83554326], [1517150820000, 8.889e-05, 8.889e-05, 8.889e-05, 8.889e-05, 2994.37353621], [1517150880000, 8.899e-05, 8.915e-05, 8.899e-05, 8.915e-05, 235.86363897], [1517150940000, 8.916e-05, 8.923e-05, 8.916e-05, 8.923e-05, 948.58101577], [1517151000000, 8.923e-05, 8.923e-05, 8.912e-05, 8.912e-05, 762.19796362], [1517151120000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 1000.0], [1517151180000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 1267.69126075], [1517151240000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 439.24146206], [1517151300000, 8.89e-05, 8.89e-05, 8.889e-05, 8.889e-05, 4695.23884675], [1517151480000, 8.889e-05, 8.889e-05, 8.889e-05, 8.889e-05, 768.2893496], [1517151540000, 8.919e-05, 8.92e-05, 8.919e-05, 8.92e-05, 28.94553932], [1517151600000, 8.921e-05, 8.925e-05, 8.92e-05, 8.925e-05, 2177.90532764], [1517151660000, 8.925e-05, 8.925e-05, 8.925e-05, 8.925e-05, 19.00927647], [1517151720000, 8.924e-05, 8.925e-05, 8.924e-05, 8.925e-05, 730.46192941], [1517151840000, 8.89e-05, 8.89e-05, 8.889e-05, 8.889e-05, 294.03360511], [1517151900000, 8.89e-05, 8.89e-05, 8.889e-05, 8.889e-05, 1035.7534877], [1517152020000, 8.88e-05, 8.889e-05, 8.87e-05, 8.87e-05, 916.20239706], [1517152080000, 8.875e-05, 8.875e-05, 8.87e-05, 8.87e-05, 305.47914318], [1517152140000, 8.87e-05, 8.875e-05, 8.87e-05, 8.87e-05, 2606.88546329], [1517152200000, 8.875e-05, 8.875e-05, 8.87e-05, 8.87e-05, 191.5166802], [1517152260000, 8.871e-05, 8.871e-05, 8.87e-05, 8.87e-05, 1073.73519914], [1517152320000, 8.871e-05, 8.875e-05, 8.87e-05, 8.875e-05, 1482.6275885], [1517152380000, 8.875e-05, 8.875e-05, 8.875e-05, 8.875e-05, 153.90126845], [1517152500000, 8.874e-05, 8.875e-05, 8.871e-05, 8.875e-05, 914.7261907], [1517152560000, 8.875e-05, 8.879e-05, 8.875e-05, 8.879e-05, 120.96296324], [1517152620000, 8.872e-05, 8.931e-05, 8.872e-05, 8.931e-05, 1847.6629922], [1517152680000, 8.931e-05, 8.931e-05, 8.872e-05, 8.875e-05, 1293.24159332], [1517152740000, 8.872e-05, 8.872e-05, 8.872e-05, 8.872e-05, 1551.59685669], [1517152800000, 8.889e-05, 8.889e-05, 8.889e-05, 8.889e-05, 278.8978356], [1517152860000, 8.889e-05, 8.889e-05, 8.889e-05, 8.889e-05, 2283.64561292], [1517152920000, 8.93e-05, 8.931e-05, 8.93e-05, 8.931e-05, 100.0], [1517153100000, 8.928e-05, 8.931e-05, 8.928e-05, 8.931e-05, 821.97911586], [1517153160000, 8.871e-05, 8.871e-05, 8.871e-05, 8.871e-05, 24.261355], [1517153220000, 8.879e-05, 8.932e-05, 8.872e-05, 8.931e-05, 10148.65713559], [1517153280000, 8.932e-05, 8.932e-05, 8.932e-05, 8.932e-05, 1623.4614869], [1517153340000, 8.874e-05, 8.932e-05, 8.874e-05, 8.932e-05, 739.93079778], [1517153400000, 8.932e-05, 8.932e-05, 8.932e-05, 8.932e-05, 3000.0], [1517153460000, 8.931e-05, 8.932e-05, 8.931e-05, 8.932e-05, 144.82960934], [1517153520000, 8.932e-05, 8.932e-05, 8.932e-05, 8.932e-05, 62.10905785], [1517153580000, 8.932e-05, 8.932e-05, 8.932e-05, 8.932e-05, 83.0592845], [1517153820000, 8.931e-05, 8.932e-05, 8.931e-05, 8.932e-05, 132.91558385], [1517153940000, 8.931e-05, 8.932e-05, 8.931e-05, 8.932e-05, 1000.0], [1517154060000, 8.932e-05, 8.932e-05, 8.932e-05, 8.932e-05, 445.0], [1517154120000, 8.932e-05, 8.932e-05, 8.932e-05, 8.932e-05, 1668.88600263], [1517154240000, 8.931e-05, 8.932e-05, 8.93e-05, 8.932e-05, 688.32984489], [1517154300000, 8.914e-05, 8.914e-05, 8.914e-05, 8.914e-05, 150.0], [1517154360000, 8.929e-05, 8.929e-05, 8.929e-05, 8.929e-05, 8.47075517], [1517154420000, 8.932e-05, 9e-05, 8.932e-05, 9e-05, 1421.57705409], [1517154480000, 9e-05, 9.009e-05, 9e-05, 9.009e-05, 634.2108667], [1517154540000, 9.017e-05, 9.032e-05, 9.009e-05, 9.009e-05, 1015.55406214], [1517154600000, 9.009e-05, 9.009e-05, 8.99e-05, 8.99e-05, 402.13014356], [1517154660000, 8.99e-05, 8.99e-05, 8.99e-05, 8.99e-05, 90.71474829], [1517154720000, 8.99e-05, 8.99e-05, 8.99e-05, 8.99e-05, 574.9125], [1517154780000, 9e-05, 9.031e-05, 9e-05, 9.031e-05, 9279.39402115], [1517154960000, 9.03e-05, 9.031e-05, 9.03e-05, 9.031e-05, 1456.1784782], [1517155020000, 9.031e-05, 9.032e-05, 9.031e-05, 9.032e-05, 1105.91787007], [1517155080000, 9.031e-05, 9.031e-05, 8.992e-05, 8.992e-05, 1359.3572729], [1517155140000, 8.992e-05, 8.992e-05, 8.991e-05, 8.991e-05, 1497.12275897], [1517155200000, 9.03e-05, 9.03e-05, 8.991e-05, 8.991e-05, 333.13662643], [1517155260000, 9.029e-05, 9.029e-05, 9.029e-05, 9.029e-05, 110.47735076], [1517155380000, 9.027e-05, 9.028e-05, 9.027e-05, 9.028e-05, 349.08339795], [1517155500000, 8.933e-05, 8.933e-05, 8.933e-05, 8.933e-05, 1258.57510887], [1517155860000, 8.937e-05, 8.937e-05, 8.937e-05, 8.937e-05, 434.87541081], [1517155920000, 8.937e-05, 8.937e-05, 8.932e-05, 8.937e-05, 968.38071718], [1517155980000, 8.937e-05, 8.937e-05, 8.937e-05, 8.937e-05, 963.29978064], [1517156040000, 8.937e-05, 8.937e-05, 8.937e-05, 8.937e-05, 200.0], [1517156100000, 8.938e-05, 8.938e-05, 8.938e-05, 8.938e-05, 1102.68183032], [1517156160000, 8.937e-05, 8.938e-05, 8.937e-05, 8.938e-05, 2196.31816968], [1517156220000, 8.938e-05, 8.938e-05, 8.938e-05, 8.938e-05, 37.5427042], [1517156280000, 9.006e-05, 9.006e-05, 9.006e-05, 9.006e-05, 23.52027954], [1517156340000, 9.005e-05, 9.021e-05, 9.005e-05, 9.021e-05, 1000.0], [1517156400000, 8.964e-05, 8.964e-05, 8.964e-05, 8.964e-05, 88.0], [1517156460000, 8.964e-05, 8.97e-05, 8.964e-05, 8.97e-05, 503.62333097], [1517156520000, 8.964e-05, 8.964e-05, 8.939e-05, 8.939e-05, 3200.0], [1517156640000, 8.95e-05, 8.95e-05, 8.939e-05, 8.939e-05, 222.907689], [1517156760000, 9.019e-05, 9.019e-05, 9.019e-05, 9.019e-05, 364.0], [1517156820000, 9.018e-05, 9.018e-05, 9.018e-05, 9.018e-05, 121.41150116], [1517156880000, 9.018e-05, 9.018e-05, 9.018e-05, 9.018e-05, 174.74775474], [1517157060000, 9.016e-05, 9.016e-05, 8.947e-05, 8.947e-05, 809.18322981], [1517157180000, 8.947e-05, 8.947e-05, 8.94e-05, 8.94e-05, 321.31700168], [1517157240000, 8.939e-05, 8.947e-05, 8.939e-05, 8.947e-05, 636.33986894], [1517157360000, 8.939e-05, 8.939e-05, 8.939e-05, 8.939e-05, 498.73994083], [1517157420000, 8.939e-05, 8.947e-05, 8.938e-05, 8.938e-05, 62.38637092], [1517157480000, 8.938e-05, 8.938e-05, 8.938e-05, 8.938e-05, 31.24392188], [1517158080000, 8.944e-05, 8.946e-05, 8.944e-05, 8.946e-05, 72.6769383], [1517158200000, 8.946e-05, 8.946e-05, 8.946e-05, 8.946e-05, 105.24474342], [1517158260000, 8.941e-05, 8.941e-05, 8.939e-05, 8.939e-05, 1991.8957066], [1517158320000, 8.938e-05, 8.938e-05, 8.938e-05, 8.938e-05, 183.59491787], [1517158380000, 8.939e-05, 9.018e-05, 8.93e-05, 8.93e-05, 10982.279063], [1517158440000, 8.925e-05, 8.925e-05, 8.925e-05, 8.925e-05, 34.51612903], [1517158560000, 8.929e-05, 8.93e-05, 8.925e-05, 8.93e-05, 162.33305522], [1517158620000, 8.93e-05, 8.93e-05, 8.93e-05, 8.93e-05, 1097.59775983], [1517158800000, 8.999e-05, 9e-05, 8.999e-05, 9e-05, 5072.58918833], [1517159040000, 8.949e-05, 8.999e-05, 8.925e-05, 8.999e-05, 307.9030909], [1517159100000, 9e-05, 9e-05, 8.921e-05, 9e-05, 2650.9246684], [1517159160000, 8.999e-05, 9.008e-05, 8.999e-05, 9.008e-05, 268.09489682], [1517159280000, 9e-05, 9e-05, 9e-05, 9e-05, 1000.0], [1517159400000, 8.936e-05, 8.936e-05, 8.936e-05, 8.936e-05, 60.0], [1517159520000, 8.951e-05, 8.951e-05, 8.935e-05, 8.935e-05, 1017.94845988], [1517159640000, 8.999e-05, 8.999e-05, 8.999e-05, 8.999e-05, 836.97194371], [1517159700000, 8.999e-05, 8.999e-05, 8.999e-05, 8.999e-05, 590.19511148], [1517159760000, 8.999e-05, 8.999e-05, 8.999e-05, 8.999e-05, 402.97530757], [1517159820000, 8.999e-05, 8.999e-05, 8.999e-05, 8.999e-05, 209.475], [1517159940000, 8.998e-05, 9e-05, 8.998e-05, 9e-05, 1065.0], [1517160000000, 9e-05, 9e-05, 9e-05, 9e-05, 84.0], [1517160180000, 8.948e-05, 8.948e-05, 8.948e-05, 8.948e-05, 80.0], [1517160240000, 8.998e-05, 9e-05, 8.998e-05, 8.999e-05, 568.18233424], [1517160300000, 8.999e-05, 9e-05, 8.999e-05, 9e-05, 201.38983909], [1517160360000, 8.999e-05, 8.999e-05, 8.948e-05, 8.948e-05, 631.31840993], [1517160720000, 8.948e-05, 8.948e-05, 8.948e-05, 8.948e-05, 900.0], [1517160780000, 8.948e-05, 8.997e-05, 8.948e-05, 8.997e-05, 619.71794183], [1517160840000, 8.948e-05, 8.948e-05, 8.948e-05, 8.948e-05, 50.0], [1517160900000, 8.996e-05, 8.996e-05, 8.996e-05, 8.996e-05, 7.86782866], [1517161020000, 8.996e-05, 8.996e-05, 8.996e-05, 8.996e-05, 3.22043279], [1517161140000, 8.931e-05, 8.995e-05, 8.931e-05, 8.995e-05, 189.02632246], [1517161320000, 8.931e-05, 8.931e-05, 8.921e-05, 8.921e-05, 2636.79542871], [1517161380000, 8.995e-05, 8.995e-05, 8.995e-05, 8.995e-05, 129.09568482], [1517161440000, 8.994e-05, 8.995e-05, 8.994e-05, 8.995e-05, 693.54823896], [1517161500000, 8.996e-05, 8.996e-05, 8.996e-05, 8.996e-05, 28.9017341], [1517161560000, 8.996e-05, 8.996e-05, 8.995e-05, 8.995e-05, 446.12925163], [1517161740000, 8.996e-05, 8.996e-05, 8.996e-05, 8.996e-05, 332.64739996], [1517161800000, 8.995e-05, 8.995e-05, 8.995e-05, 8.995e-05, 197.99999999], [1517161860000, 8.995e-05, 8.995e-05, 8.995e-05, 8.995e-05, 28.2219667], [1517161920000, 8.995e-05, 8.995e-05, 8.995e-05, 8.995e-05, 60.0], [1517161980000, 8.996e-05, 8.996e-05, 8.996e-05, 8.996e-05, 65.70523446], [1517162040000, 8.996e-05, 9e-05, 8.996e-05, 9e-05, 1263.517367], [1517162160000, 8.996e-05, 8.996e-05, 8.996e-05, 8.996e-05, 58.23671497], [1517162220000, 8.996e-05, 8.996e-05, 8.996e-05, 8.996e-05, 50.0], [1517162280000, 8.996e-05, 8.996e-05, 8.996e-05, 8.996e-05, 30.79523545], [1517162340000, 8.999e-05, 9e-05, 8.999e-05, 9e-05, 35.73197604], [1517162400000, 8.999e-05, 9e-05, 8.999e-05, 9e-05, 350.0], [1517162520000, 9e-05, 9e-05, 9e-05, 9e-05, 117.12922083], [1517162760000, 8.996e-05, 8.996e-05, 8.996e-05, 8.996e-05, 25.2615959], [1517162820000, 8.996e-05, 8.996e-05, 8.996e-05, 8.996e-05, 7.76834794], [1517162880000, 8.997e-05, 8.999e-05, 8.997e-05, 8.999e-05, 240.79081964], [1517162940000, 9e-05, 9e-05, 9e-05, 9e-05, 306.24221668], [1517163000000, 9e-05, 9e-05, 9e-05, 9e-05, 275.61798836], [1517163240000, 8.999e-05, 9e-05, 8.998e-05, 9e-05, 594.75187969], [1517163300000, 9e-05, 9e-05, 8.999e-05, 9e-05, 2544.05676637], [1517163360000, 9e-05, 9.023e-05, 9e-05, 9.018e-05, 2167.14665242], [1517163420000, 9.023e-05, 9.025e-05, 9.023e-05, 9.025e-05, 91.88011381], [1517163480000, 9.023e-05, 9.023e-05, 9.023e-05, 9.023e-05, 320.19765657], [1517163540000, 9.023e-05, 9.023e-05, 9.022e-05, 9.022e-05, 210.74388591], [1517163600000, 9.022e-05, 9.022e-05, 9.022e-05, 9.022e-05, 227.41186889], [1517163660000, 9.022e-05, 9.024e-05, 9.022e-05, 9.024e-05, 20.63616662], [1517163720000, 9.024e-05, 9.024e-05, 9.024e-05, 9.024e-05, 4.86124983], [1517163780000, 9.023e-05, 9.035e-05, 9.023e-05, 9.023e-05, 3609.4302599], [1517163900000, 9.023e-05, 9.023e-05, 9.023e-05, 9.023e-05, 47.55897702], [1517164140000, 9.022e-05, 9.022e-05, 8.995e-05, 8.995e-05, 357.21582999], [1517164200000, 9.001e-05, 9.001e-05, 9.001e-05, 9.001e-05, 60.0], [1517164260000, 8.953e-05, 9.021e-05, 8.953e-05, 9.021e-05, 75.47923972], [1517164440000, 8.953e-05, 8.953e-05, 8.926e-05, 8.926e-05, 290.0], [1517164500000, 8.926e-05, 8.926e-05, 8.926e-05, 8.926e-05, 175.0], [1517164680000, 8.926e-05, 8.926e-05, 8.926e-05, 8.926e-05, 1000.0673685], [1517164740000, 8.93e-05, 8.93e-05, 8.93e-05, 8.93e-05, 262.3471293], [1517164800000, 8.926e-05, 8.926e-05, 8.926e-05, 8.926e-05, 299.21460048], [1517164980000, 8.998e-05, 8.998e-05, 8.998e-05, 8.998e-05, 55.56790397], [1517165100000, 8.998e-05, 8.998e-05, 8.998e-05, 8.998e-05, 388.56218326], [1517165280000, 8.931e-05, 8.931e-05, 8.931e-05, 8.931e-05, 1011.92313097], [1517165340000, 8.997e-05, 8.998e-05, 8.997e-05, 8.998e-05, 100.0], [1517165400000, 8.985e-05, 8.985e-05, 8.985e-05, 8.985e-05, 10.03100299], [1517165460000, 8.983e-05, 8.983e-05, 8.983e-05, 8.983e-05, 307.34742955], [1517165520000, 8.983e-05, 8.985e-05, 8.983e-05, 8.985e-05, 1652.91647147], [1517165580000, 8.986e-05, 8.986e-05, 8.986e-05, 8.986e-05, 40.00007084], [1517165640000, 8.985e-05, 8.985e-05, 8.985e-05, 8.985e-05, 15.34895492], [1517165700000, 8.983e-05, 8.983e-05, 8.983e-05, 8.983e-05, 875.3768668], [1517165760000, 8.997e-05, 9e-05, 8.997e-05, 9e-05, 200.0], [1517165820000, 8.983e-05, 9e-05, 8.983e-05, 9e-05, 1845.48165968], [1517165880000, 8.983e-05, 8.983e-05, 8.983e-05, 8.983e-05, 12.0], [1517165940000, 8.983e-05, 8.983e-05, 8.983e-05, 8.983e-05, 254.0], [1517166000000, 8.983e-05, 8.983e-05, 8.983e-05, 8.983e-05, 139.83896413], [1517166300000, 8.932e-05, 8.932e-05, 8.932e-05, 8.932e-05, 216.84918139], [1517166420000, 8.932e-05, 8.932e-05, 8.931e-05, 8.931e-05, 40.0], [1517166480000, 8.931e-05, 8.931e-05, 8.93e-05, 8.93e-05, 610.595893], [1517166600000, 8.995e-05, 8.996e-05, 8.995e-05, 8.996e-05, 43.0], [1517166660000, 8.932e-05, 8.932e-05, 8.932e-05, 8.932e-05, 898.82856669], [1517166900000, 8.932e-05, 8.932e-05, 8.932e-05, 8.932e-05, 15.0], [1517166960000, 8.993e-05, 8.995e-05, 8.993e-05, 8.995e-05, 495.04336183], [1517167020000, 8.932e-05, 8.997e-05, 8.932e-05, 8.997e-05, 327.69563793], [1517167200000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 5000.0], [1517167260000, 8.935e-05, 8.95e-05, 8.91e-05, 8.95e-05, 3013.89289022], [1517167320000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 314.7091806], [1517167380000, 8.899e-05, 8.995e-05, 8.899e-05, 8.995e-05, 418.63178779], [1517167440000, 8.91e-05, 8.91e-05, 8.909e-05, 8.909e-05, 734.69562041], [1517167500000, 8.9e-05, 8.9e-05, 8.898e-05, 8.898e-05, 333.68899894], [1517167560000, 8.901e-05, 8.901e-05, 8.9e-05, 8.9e-05, 420.0], [1517167620000, 8.904e-05, 8.904e-05, 8.904e-05, 8.904e-05, 25.51021344], [1517167680000, 8.904e-05, 8.904e-05, 8.904e-05, 8.904e-05, 131.02495688], [1517167740000, 8.904e-05, 8.904e-05, 8.904e-05, 8.904e-05, 71.54560712], [1517167800000, 8.904e-05, 8.904e-05, 8.904e-05, 8.904e-05, 10.0], [1517167920000, 8.93e-05, 8.93e-05, 8.93e-05, 8.93e-05, 912.6], [1517168100000, 8.93e-05, 8.93e-05, 8.93e-05, 8.93e-05, 609.45059166], [1517168160000, 8.93e-05, 8.93e-05, 8.93e-05, 8.93e-05, 628.53733675], [1517168220000, 8.971e-05, 8.997e-05, 8.971e-05, 8.997e-05, 9159.94647792], [1517168280000, 8.911e-05, 8.911e-05, 8.9e-05, 8.9e-05, 778.0], [1517168340000, 8.9e-05, 8.9e-05, 8.898e-05, 8.898e-05, 605.0652744], [1517168400000, 8.898e-05, 8.898e-05, 8.89e-05, 8.89e-05, 803.9347256], [1517168460000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 467.941], [1517168580000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 73.20372777], [1517168700000, 8.968e-05, 8.968e-05, 8.894e-05, 8.894e-05, 4868.77267703], [1517168760000, 8.967e-05, 8.967e-05, 8.966e-05, 8.966e-05, 168.47457627], [1517168820000, 8.886e-05, 8.886e-05, 8.886e-05, 8.886e-05, 1128.17915823], [1517168880000, 8.923e-05, 8.923e-05, 8.923e-05, 8.923e-05, 12.327485], [1517168940000, 8.923e-05, 8.923e-05, 8.893e-05, 8.893e-05, 136.00290296], [1517169000000, 8.898e-05, 8.923e-05, 8.898e-05, 8.923e-05, 513.53443142], [1517169060000, 8.923e-05, 8.965e-05, 8.923e-05, 8.965e-05, 1021.41934529], [1517169180000, 8.965e-05, 8.965e-05, 8.965e-05, 8.965e-05, 50.0], [1517169240000, 8.965e-05, 8.965e-05, 8.923e-05, 8.923e-05, 958.86231363], [1517169300000, 8.889e-05, 8.899e-05, 8.889e-05, 8.899e-05, 626.2538463], [1517169420000, 8.91e-05, 8.91e-05, 8.9e-05, 8.91e-05, 1300.0], [1517169480000, 8.91e-05, 8.91e-05, 8.91e-05, 8.91e-05, 125.8386835], [1517169540000, 8.899e-05, 8.899e-05, 8.899e-05, 8.899e-05, 17.01776345], [1517169600000, 8.899e-05, 8.899e-05, 8.89e-05, 8.89e-05, 370.24778627], [1517169660000, 8.899e-05, 8.91e-05, 8.899e-05, 8.91e-05, 427.18184732], [1517169780000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 10.5879488], [1517169900000, 8.89e-05, 8.89e-05, 8.888e-05, 8.888e-05, 2001.30405355], [1517169960000, 8.921e-05, 8.921e-05, 8.921e-05, 8.921e-05, 13.56671008], [1517170020000, 8.922e-05, 8.922e-05, 8.9e-05, 8.9e-05, 61.44091339], [1517170080000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 5506.46372664], [1517170380000, 8.885e-05, 8.885e-05, 8.883e-05, 8.883e-05, 580.0], [1517170440000, 8.883e-05, 8.883e-05, 8.882e-05, 8.883e-05, 236.40661937], [1517170500000, 8.883e-05, 8.883e-05, 8.883e-05, 8.883e-05, 133.51582499], [1517170560000, 8.883e-05, 8.883e-05, 8.883e-05, 8.883e-05, 600.0], [1517170680000, 8.883e-05, 8.883e-05, 8.883e-05, 8.883e-05, 1613.41223005], [1517170740000, 8.883e-05, 8.883e-05, 8.883e-05, 8.883e-05, 300.0], [1517170800000, 8.959e-05, 8.96e-05, 8.883e-05, 8.883e-05, 628.35008625], [1517170860000, 8.883e-05, 8.883e-05, 8.883e-05, 8.883e-05, 122.51652078], [1517170920000, 8.883e-05, 8.883e-05, 8.883e-05, 8.883e-05, 200.0], [1517170980000, 8.883e-05, 8.883e-05, 8.88e-05, 8.88e-05, 322.94192342], [1517171040000, 8.959e-05, 8.959e-05, 8.959e-05, 8.959e-05, 213.67823093], [1517171100000, 8.959e-05, 8.959e-05, 8.871e-05, 8.871e-05, 2789.20500258], [1517171220000, 8.872e-05, 8.959e-05, 8.871e-05, 8.959e-05, 1576.42227721], [1517171400000, 8.871e-05, 8.871e-05, 8.871e-05, 8.871e-05, 2989.51724138], [1517171460000, 8.958e-05, 8.993e-05, 8.872e-05, 8.993e-05, 792.93298528], [1517171580000, 8.993e-05, 8.993e-05, 8.888e-05, 8.888e-05, 230.0], [1517171640000, 8.993e-05, 8.993e-05, 8.993e-05, 8.993e-05, 15.0], [1517171820000, 8.99e-05, 8.99e-05, 8.896e-05, 8.896e-05, 264.51033715], [1517171880000, 8.99e-05, 8.99e-05, 8.99e-05, 8.99e-05, 7.27896529], [1517172000000, 8.984e-05, 8.984e-05, 8.9e-05, 8.9e-05, 503.83492382], [1517172060000, 8.91e-05, 8.91e-05, 8.91e-05, 8.91e-05, 14.9625], [1517172120000, 8.91e-05, 8.91e-05, 8.9e-05, 8.9e-05, 61.73864673], [1517172180000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 560.13694427], [1517172300000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 64.52964481], [1517172360000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 1923.54443079], [1517172420000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 18.23647806], [1517172540000, 8.887e-05, 8.887e-05, 8.886e-05, 8.886e-05, 160.0], [1517172600000, 8.886e-05, 8.886e-05, 8.865e-05, 8.865e-05, 991.66456824], [1517172660000, 8.864e-05, 8.876e-05, 8.864e-05, 8.876e-05, 1772.46652675], [1517172780000, 8.864e-05, 8.864e-05, 8.857e-05, 8.864e-05, 633.19439042], [1517172900000, 8.864e-05, 8.864e-05, 8.864e-05, 8.864e-05, 100.0], [1517173020000, 8.959e-05, 8.96e-05, 8.864e-05, 8.864e-05, 526.59958103], [1517173200000, 8.867e-05, 8.867e-05, 8.866e-05, 8.866e-05, 500.0], [1517173500000, 8.94e-05, 8.94e-05, 8.868e-05, 8.94e-05, 895.39703364], [1517173560000, 8.94e-05, 8.955e-05, 8.94e-05, 8.955e-05, 1311.98293475], [1517173620000, 8.953e-05, 8.953e-05, 8.87e-05, 8.87e-05, 95.47052995], [1517173740000, 8.94e-05, 8.94e-05, 8.922e-05, 8.922e-05, 79.89533668], [1517173800000, 8.922e-05, 8.922e-05, 8.855e-05, 8.855e-05, 7750.60519388], [1517173860000, 8.939e-05, 8.94e-05, 8.939e-05, 8.94e-05, 110.70669092], [1517173920000, 8.86e-05, 8.86e-05, 8.851e-05, 8.851e-05, 4960.31794537], [1517174040000, 8.861e-05, 8.94e-05, 8.861e-05, 8.94e-05, 39.46215834], [1517174160000, 8.861e-05, 8.861e-05, 8.853e-05, 8.853e-05, 328.77812977], [1517174220000, 8.853e-05, 8.939e-05, 8.853e-05, 8.939e-05, 232.3006656], [1517174400000, 8.865e-05, 8.921e-05, 8.865e-05, 8.867e-05, 2707.0], [1517174460000, 8.921e-05, 8.921e-05, 8.921e-05, 8.921e-05, 3241.90113216], [1517174520000, 8.861e-05, 8.938e-05, 8.822e-05, 8.822e-05, 16415.13232617], [1517174580000, 8.822e-05, 8.822e-05, 8.822e-05, 8.822e-05, 500.0], [1517174640000, 8.851e-05, 8.851e-05, 8.851e-05, 8.851e-05, 4882.02516028], [1517174760000, 8.851e-05, 8.927e-05, 8.851e-05, 8.927e-05, 2032.25461832], [1517174820000, 8.93e-05, 8.93e-05, 8.93e-05, 8.93e-05, 112.23572872], [1517174940000, 8.852e-05, 8.852e-05, 8.842e-05, 8.852e-05, 1883.3039869], [1517175000000, 8.853e-05, 8.927e-05, 8.842e-05, 8.842e-05, 3974.66135686], [1517175060000, 8.885e-05, 8.885e-05, 8.841e-05, 8.841e-05, 512.0], [1517175120000, 8.885e-05, 8.885e-05, 8.885e-05, 8.885e-05, 377.13065901], [1517175180000, 8.885e-05, 8.885e-05, 8.885e-05, 8.885e-05, 11.25492402], [1517175240000, 8.885e-05, 8.928e-05, 8.848e-05, 8.928e-05, 2752.67118393], [1517175300000, 8.928e-05, 8.928e-05, 8.928e-05, 8.928e-05, 66.14123359], [1517175360000, 8.853e-05, 8.853e-05, 8.853e-05, 8.853e-05, 550.0], [1517175420000, 8.857e-05, 8.857e-05, 8.857e-05, 8.857e-05, 2000.0], [1517175480000, 8.92e-05, 8.92e-05, 8.858e-05, 8.858e-05, 714.63417858], [1517175540000, 8.919e-05, 8.919e-05, 8.858e-05, 8.858e-05, 362.0], [1517175660000, 8.919e-05, 8.928e-05, 8.919e-05, 8.928e-05, 1195.84911587], [1517175720000, 8.92e-05, 8.975e-05, 8.859e-05, 8.859e-05, 22920.41288184], [1517175780000, 8.861e-05, 8.861e-05, 8.861e-05, 8.861e-05, 140.625], [1517175840000, 8.919e-05, 8.968e-05, 8.919e-05, 8.96e-05, 106.26530378], [1517176260000, 8.956e-05, 8.958e-05, 8.956e-05, 8.958e-05, 36.46185066], [1517176380000, 8.955e-05, 8.956e-05, 8.955e-05, 8.956e-05, 6109.8831223], [1517176500000, 8.867e-05, 8.96e-05, 8.867e-05, 8.96e-05, 3132.78086091], [1517176560000, 8.906e-05, 8.906e-05, 8.906e-05, 8.906e-05, 114.06169633], [1517176620000, 8.906e-05, 8.906e-05, 8.9e-05, 8.9e-05, 479.36241611], [1517176680000, 8.866e-05, 8.989e-05, 8.866e-05, 8.87e-05, 1401.99241214], [1517176800000, 8.873e-05, 8.959e-05, 8.873e-05, 8.874e-05, 337.60254928], [1517176860000, 8.982e-05, 8.987e-05, 8.879e-05, 8.879e-05, 298.16087993], [1517176980000, 8.885e-05, 8.985e-05, 8.885e-05, 8.985e-05, 116.56186209], [1517177100000, 8.891e-05, 8.978e-05, 8.891e-05, 8.978e-05, 112.47967363], [1517177160000, 8.889e-05, 8.889e-05, 8.889e-05, 8.889e-05, 14.71468953], [1517177220000, 8.973e-05, 8.973e-05, 8.89e-05, 8.89e-05, 394.05100299], [1517177280000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 106.41156671], [1517177340000, 8.89e-05, 8.966e-05, 8.89e-05, 8.966e-05, 74.05687139], [1517177400000, 8.976e-05, 8.976e-05, 8.976e-05, 8.976e-05, 5.97399627], [1517177520000, 8.969e-05, 8.969e-05, 8.969e-05, 8.969e-05, 58.15060778], [1517177700000, 8.969e-05, 8.969e-05, 8.894e-05, 8.894e-05, 169.90382633], [1517177760000, 8.974e-05, 8.984e-05, 8.894e-05, 8.984e-05, 408.45947485], [1517177820000, 8.992e-05, 8.995e-05, 8.902e-05, 8.902e-05, 461.09553149], [1517177940000, 8.991e-05, 8.991e-05, 8.991e-05, 8.991e-05, 11.88220639], [1517178000000, 8.903e-05, 8.903e-05, 8.903e-05, 8.903e-05, 11.88220638], [1517178060000, 8.908e-05, 8.912e-05, 8.908e-05, 8.912e-05, 4825.20821103], [1517178120000, 8.984e-05, 8.984e-05, 8.916e-05, 8.984e-05, 315.70641644], [1517178180000, 8.916e-05, 8.983e-05, 8.915e-05, 8.983e-05, 5722.44128453], [1517178240000, 8.982e-05, 8.983e-05, 8.982e-05, 8.983e-05, 773.09776896], [1517178300000, 8.884e-05, 8.884e-05, 8.884e-05, 8.884e-05, 13.39093922], [1517178360000, 8.884e-05, 8.884e-05, 8.884e-05, 8.884e-05, 200.0], [1517178540000, 8.969e-05, 8.969e-05, 8.89e-05, 8.89e-05, 1335.14108496], [1517178600000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 200.0], [1517178660000, 8.892e-05, 8.95e-05, 8.892e-05, 8.95e-05, 2852.23787235], [1517178720000, 8.95e-05, 8.95e-05, 8.892e-05, 8.95e-05, 224.47607219], [1517178780000, 8.95e-05, 8.995e-05, 8.95e-05, 8.95e-05, 1203.7046902], [1517178840000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 99.09791466], [1517178900000, 8.893e-05, 8.893e-05, 8.893e-05, 8.893e-05, 12.48868731], [1517178960000, 8.95e-05, 8.951e-05, 8.95e-05, 8.951e-05, 369.64290982], [1517179080000, 8.951e-05, 8.951e-05, 8.951e-05, 8.951e-05, 320.30993825], [1517179140000, 8.951e-05, 8.951e-05, 8.951e-05, 8.951e-05, 70.54145096], [1517179200000, 8.951e-05, 8.951e-05, 8.951e-05, 8.951e-05, 106.99999999], [1517179260000, 8.95e-05, 8.951e-05, 8.95e-05, 8.95e-05, 1654.15096881], [1517179320000, 8.95e-05, 8.951e-05, 8.95e-05, 8.951e-05, 1597.72545912], [1517179380000, 8.992e-05, 8.993e-05, 8.992e-05, 8.993e-05, 181.3551234], [1517179560000, 8.883e-05, 8.883e-05, 8.882e-05, 8.882e-05, 623.8414601], [1517179680000, 8.889e-05, 8.889e-05, 8.889e-05, 8.889e-05, 35.55481199], [1517179920000, 8.972e-05, 8.977e-05, 8.92e-05, 8.977e-05, 1928.67904689], [1517179980000, 8.92e-05, 8.998e-05, 8.906e-05, 8.981e-05, 583.67479287], [1517180040000, 8.97e-05, 8.97e-05, 8.97e-05, 8.97e-05, 778.35005574], [1517180160000, 8.941e-05, 9.021e-05, 8.941e-05, 9.021e-05, 1243.97316301], [1517180220000, 9.021e-05, 9.021e-05, 8.947e-05, 8.947e-05, 1552.38563548], [1517180280000, 8.953e-05, 8.953e-05, 8.953e-05, 8.953e-05, 1329.2622769], [1517180340000, 9.018e-05, 9.018e-05, 9.018e-05, 9.018e-05, 22.17540747], [1517180400000, 8.929e-05, 8.937e-05, 8.929e-05, 8.935e-05, 3069.30633456], [1517180520000, 8.956e-05, 8.982e-05, 8.956e-05, 8.98e-05, 4746.3249086], [1517180580000, 8.98e-05, 8.98e-05, 8.98e-05, 8.98e-05, 958.26852918], [1517180640000, 8.94e-05, 8.94e-05, 8.94e-05, 8.94e-05, 1847.0], [1517180700000, 9e-05, 9e-05, 9e-05, 9e-05, 72.30544579], [1517180760000, 8.941e-05, 8.941e-05, 8.941e-05, 8.941e-05, 2137.76655443], [1517180820000, 8.946e-05, 8.946e-05, 8.946e-05, 8.946e-05, 419.0], [1517180880000, 9e-05, 9e-05, 8.959e-05, 9e-05, 1200.06003606], [1517180940000, 8.914e-05, 9e-05, 8.914e-05, 9e-05, 5493.42593485], [1517181000000, 8.916e-05, 8.916e-05, 8.916e-05, 8.916e-05, 50.0], [1517181060000, 8.999e-05, 9e-05, 8.92e-05, 8.921e-05, 1594.46365636], [1517181180000, 8.994e-05, 8.994e-05, 8.888e-05, 8.888e-05, 835.87021631], [1517181240000, 8.891e-05, 8.891e-05, 8.89e-05, 8.89e-05, 306.665109], [1517181300000, 8.891e-05, 8.891e-05, 8.891e-05, 8.891e-05, 159.22533919], [1517181420000, 8.892e-05, 8.892e-05, 8.892e-05, 8.892e-05, 261.538651], [1517181480000, 8.896e-05, 8.969e-05, 8.896e-05, 8.969e-05, 5603.29621857], [1517181540000, 8.901e-05, 8.971e-05, 8.901e-05, 8.971e-05, 9420.75937585], [1517181600000, 8.971e-05, 8.971e-05, 8.909e-05, 8.909e-05, 644.96404475], [1517181660000, 8.971e-05, 8.983e-05, 8.971e-05, 8.971e-05, 1995.20619292], [1517181720000, 8.983e-05, 8.986e-05, 8.924e-05, 8.986e-05, 1418.45674836], [1517181780000, 8.986e-05, 8.986e-05, 8.927e-05, 8.928e-05, 14362.15485799], [1517181840000, 8.928e-05, 8.928e-05, 8.928e-05, 8.928e-05, 437.873375], [1517182020000, 8.986e-05, 8.986e-05, 8.928e-05, 8.928e-05, 275.43319277], [1517182080000, 8.985e-05, 8.985e-05, 8.928e-05, 8.928e-05, 10652.71015877], [1517182140000, 8.985e-05, 8.986e-05, 8.985e-05, 8.986e-05, 1162.47540345], [1517182200000, 8.986e-05, 8.986e-05, 8.985e-05, 8.986e-05, 357.22962815], [1517182260000, 8.985e-05, 8.985e-05, 8.985e-05, 8.985e-05, 18.30585051], [1517182320000, 8.985e-05, 8.985e-05, 8.895e-05, 8.895e-05, 1287.57910078], [1517182380000, 8.984e-05, 8.984e-05, 8.984e-05, 8.984e-05, 23.23873944], [1517182440000, 8.903e-05, 8.984e-05, 8.903e-05, 8.984e-05, 355.58156151], [1517182500000, 8.982e-05, 8.984e-05, 8.894e-05, 8.894e-05, 3818.85020255], [1517182560000, 8.981e-05, 8.986e-05, 8.981e-05, 8.986e-05, 32152.60997161], [1517182620000, 8.986e-05, 8.986e-05, 8.986e-05, 8.986e-05, 876.00759134], [1517182680000, 8.986e-05, 9e-05, 8.934e-05, 9e-05, 4046.6184305], [1517182740000, 8.951e-05, 8.992e-05, 8.951e-05, 8.965e-05, 1382.62222997], [1517182800000, 8.993e-05, 8.996e-05, 8.993e-05, 8.996e-05, 1469.59254321], [1517182860000, 8.996e-05, 9.021e-05, 8.996e-05, 9e-05, 1094.03860128], [1517182920000, 9.021e-05, 9.056e-05, 8.964e-05, 8.964e-05, 36185.46279175], [1517182980000, 9.006e-05, 9.056e-05, 8.996e-05, 9.056e-05, 577.39784218], [1517183040000, 8.968e-05, 9.057e-05, 8.968e-05, 8.995e-05, 3192.47058247], [1517183100000, 9.058e-05, 9.058e-05, 8.953e-05, 8.971e-05, 3258.74407421], [1517183160000, 8.972e-05, 9.048e-05, 8.972e-05, 9.048e-05, 697.338294], [1517183220000, 8.976e-05, 9.055e-05, 8.975e-05, 8.975e-05, 1197.827189], [1517183280000, 9.054e-05, 9.054e-05, 8.975e-05, 8.975e-05, 316.77785873], [1517183340000, 8.975e-05, 9.059e-05, 8.952e-05, 8.952e-05, 1794.59453225], [1517183400000, 8.956e-05, 8.961e-05, 8.956e-05, 8.961e-05, 318.42757301], [1517183460000, 8.961e-05, 9.055e-05, 8.951e-05, 9.055e-05, 899.91783597], [1517183520000, 8.969e-05, 9.055e-05, 8.968e-05, 8.984e-05, 1562.52082021], [1517183580000, 8.984e-05, 9.065e-05, 8.984e-05, 9.065e-05, 2164.00639601], [1517183640000, 9.055e-05, 9.055e-05, 8.981e-05, 8.987e-05, 186.097179], [1517183700000, 8.987e-05, 8.987e-05, 8.987e-05, 8.987e-05, 67.59560207], [1517183760000, 9.063e-05, 9.063e-05, 9.063e-05, 9.063e-05, 100.301003], [1517183880000, 9.055e-05, 9.056e-05, 8.983e-05, 8.983e-05, 1410.23417427], [1517184000000, 8.983e-05, 9.054e-05, 8.908e-05, 8.908e-05, 2943.50999598], [1517184240000, 8.99e-05, 8.99e-05, 8.99e-05, 8.99e-05, 36.20581466], [1517184300000, 8.99e-05, 8.99e-05, 8.99e-05, 8.99e-05, 4149.37759], [1517184420000, 8.948e-05, 8.948e-05, 8.891e-05, 8.891e-05, 711.24732875], [1517184480000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 2728.02448931], [1517184540000, 8.891e-05, 8.891e-05, 8.882e-05, 8.882e-05, 1748.98025421], [1517184600000, 8.891e-05, 8.891e-05, 8.891e-05, 8.891e-05, 221.66666667], [1517184840000, 8.988e-05, 8.988e-05, 8.884e-05, 8.884e-05, 98.78783422], [1517184900000, 8.899e-05, 8.988e-05, 8.899e-05, 8.988e-05, 276.39272881], [1517184960000, 8.988e-05, 8.988e-05, 8.988e-05, 8.988e-05, 84.7344745], [1517185020000, 8.988e-05, 9e-05, 8.988e-05, 9e-05, 1073.64452239], [1517185080000, 9e-05, 9e-05, 8.999e-05, 8.999e-05, 143.05746807], [1517185140000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 150.0], [1517185200000, 8.899e-05, 8.9e-05, 8.899e-05, 8.9e-05, 923.63593668], [1517185260000, 8.994e-05, 9e-05, 8.892e-05, 8.892e-05, 156.57197786], [1517185320000, 8.894e-05, 8.894e-05, 8.892e-05, 8.892e-05, 400.0], [1517185440000, 8.892e-05, 8.997e-05, 8.883e-05, 8.883e-05, 559.88192843], [1517185500000, 8.893e-05, 8.893e-05, 8.893e-05, 8.893e-05, 575.07267047], [1517185560000, 8.988e-05, 8.988e-05, 8.861e-05, 8.884e-05, 4289.70315515], [1517185680000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 125.6421378], [1517185740000, 8.867e-05, 8.98e-05, 8.861e-05, 8.936e-05, 629.68333539], [1517185800000, 8.853e-05, 8.853e-05, 8.842e-05, 8.842e-05, 193.38683736], [1517185860000, 8.853e-05, 8.853e-05, 8.853e-05, 8.853e-05, 580.0], [1517185920000, 8.853e-05, 8.853e-05, 8.852e-05, 8.852e-05, 1415.29364738], [1517185980000, 8.94e-05, 8.94e-05, 8.909e-05, 8.909e-05, 167.31386221], [1517186040000, 8.907e-05, 8.907e-05, 8.907e-05, 8.907e-05, 280.67811833], [1517186100000, 8.85e-05, 8.85e-05, 8.841e-05, 8.841e-05, 258.82139781], [1517186160000, 8.841e-05, 8.904e-05, 8.841e-05, 8.904e-05, 1041.84499019], [1517186220000, 8.902e-05, 8.902e-05, 8.902e-05, 8.902e-05, 182.76872217], [1517186280000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 35.0], [1517186460000, 8.898e-05, 8.898e-05, 8.898e-05, 8.898e-05, 101.14632501], [1517186520000, 8.863e-05, 8.863e-05, 8.863e-05, 8.863e-05, 228.91255256], [1517186580000, 8.898e-05, 8.898e-05, 8.898e-05, 8.898e-05, 73.32100276], [1517186640000, 8.875e-05, 8.875e-05, 8.875e-05, 8.875e-05, 249.96571869], [1517186700000, 8.898e-05, 8.899e-05, 8.875e-05, 8.899e-05, 1366.22961673], [1517186760000, 8.899e-05, 8.899e-05, 8.88e-05, 8.899e-05, 426.0], [1517186820000, 8.904e-05, 8.904e-05, 8.904e-05, 8.904e-05, 1186.46522573], [1517186940000, 8.904e-05, 8.904e-05, 8.899e-05, 8.899e-05, 752.24126565], [1517187000000, 8.899e-05, 8.899e-05, 8.81e-05, 8.81e-05, 17368.30618765], [1517187060000, 8.812e-05, 8.812e-05, 8.812e-05, 8.812e-05, 15.702264], [1517187120000, 8.81e-05, 8.811e-05, 8.81e-05, 8.811e-05, 381.46381022], [1517187180000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 14.67497885], [1517187240000, 8.85e-05, 8.904e-05, 8.85e-05, 8.902e-05, 1020.04904323], [1517187300000, 8.814e-05, 8.816e-05, 8.814e-05, 8.816e-05, 1616.72328496], [1517187360000, 8.904e-05, 8.904e-05, 8.808e-05, 8.904e-05, 1106.03426625], [1517187420000, 8.904e-05, 8.909e-05, 8.904e-05, 8.909e-05, 29.35354961], [1517187480000, 8.907e-05, 8.909e-05, 8.907e-05, 8.909e-05, 1214.37567351], [1517187540000, 8.905e-05, 8.905e-05, 8.905e-05, 8.905e-05, 15.0], [1517187600000, 8.905e-05, 8.905e-05, 8.905e-05, 8.905e-05, 6.06723715], [1517187660000, 8.904e-05, 8.948e-05, 8.812e-05, 8.814e-05, 18505.46309943], [1517187780000, 8.843e-05, 8.918e-05, 8.843e-05, 8.918e-05, 434.69403052], [1517187900000, 8.843e-05, 8.843e-05, 8.813e-05, 8.819e-05, 10374.82850001], [1517187960000, 8.914e-05, 8.914e-05, 8.83e-05, 8.83e-05, 719.7195967], [1517188020000, 8.82e-05, 8.82e-05, 8.812e-05, 8.82e-05, 1545.33447378], [1517188080000, 8.817e-05, 8.818e-05, 8.812e-05, 8.818e-05, 10509.05009561], [1517188140000, 8.89e-05, 8.899e-05, 8.89e-05, 8.899e-05, 426.10241546], [1517188200000, 8.879e-05, 8.879e-05, 8.879e-05, 8.879e-05, 1123.43732402], [1517188260000, 8.875e-05, 8.879e-05, 8.875e-05, 8.879e-05, 10.03100299], [1517188320000, 8.875e-05, 8.875e-05, 8.875e-05, 8.875e-05, 44.8], [1517188380000, 8.822e-05, 8.822e-05, 8.821e-05, 8.821e-05, 1455.24730962], [1517188440000, 8.822e-05, 8.822e-05, 8.821e-05, 8.822e-05, 1231.47890189], [1517188500000, 8.824e-05, 8.824e-05, 8.824e-05, 8.824e-05, 709.11491352], [1517188560000, 8.826e-05, 8.826e-05, 8.823e-05, 8.823e-05, 572.0], [1517188620000, 8.822e-05, 8.823e-05, 8.822e-05, 8.823e-05, 1395.82086364], [1517188680000, 8.823e-05, 8.876e-05, 8.821e-05, 8.821e-05, 1663.30554], [1517188740000, 8.822e-05, 8.823e-05, 8.822e-05, 8.822e-05, 566.29113492], [1517188800000, 8.822e-05, 8.872e-05, 8.82e-05, 8.82e-05, 3410.20619925], [1517188860000, 8.82e-05, 8.825e-05, 8.82e-05, 8.825e-05, 775.14997439], [1517188920000, 8.869e-05, 8.869e-05, 8.869e-05, 8.869e-05, 500.0], [1517188980000, 8.825e-05, 8.868e-05, 8.825e-05, 8.825e-05, 2315.20898853], [1517189040000, 8.825e-05, 8.825e-05, 8.825e-05, 8.825e-05, 1324.24944013], [1517189100000, 8.82e-05, 8.82e-05, 8.812e-05, 8.812e-05, 1103.0], [1517189160000, 8.864e-05, 8.864e-05, 8.81e-05, 8.81e-05, 1858.99500619], [1517189220000, 8.808e-05, 8.81e-05, 8.808e-05, 8.808e-05, 2037.96358861], [1517189280000, 8.805e-05, 8.849e-05, 8.802e-05, 8.802e-05, 2003.15702512], [1517189340000, 8.801e-05, 8.811e-05, 8.801e-05, 8.811e-05, 4780.75074761], [1517189400000, 8.801e-05, 8.811e-05, 8.801e-05, 8.809e-05, 1235.18787124], [1517189460000, 8.809e-05, 8.809e-05, 8.809e-05, 8.809e-05, 68.09669731], [1517189520000, 8.804e-05, 8.808e-05, 8.8e-05, 8.808e-05, 3461.03388568], [1517189580000, 8.808e-05, 8.808e-05, 8.808e-05, 8.808e-05, 174.80987863], [1517189640000, 8.808e-05, 8.808e-05, 8.808e-05, 8.808e-05, 381.12031843], [1517189700000, 8.8e-05, 8.808e-05, 8.8e-05, 8.808e-05, 1289.21654117], [1517189760000, 8.808e-05, 8.808e-05, 8.808e-05, 8.808e-05, 243.88957674], [1517189820000, 8.809e-05, 8.809e-05, 8.809e-05, 8.809e-05, 62.15038391], [1517189880000, 8.809e-05, 8.886e-05, 8.809e-05, 8.886e-05, 36.4181412], [1517189940000, 8.883e-05, 8.886e-05, 8.883e-05, 8.886e-05, 40.12100299], [1517190000000, 8.894e-05, 8.894e-05, 8.8e-05, 8.8e-05, 2371.74656151], [1517190060000, 8.885e-05, 8.889e-05, 8.885e-05, 8.889e-05, 74.67470572], [1517190120000, 8.8e-05, 8.861e-05, 8.8e-05, 8.8e-05, 1586.60350967], [1517190240000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 743.40563392], [1517190300000, 8.855e-05, 8.855e-05, 8.801e-05, 8.801e-05, 1310.46130595], [1517190360000, 8.854e-05, 8.854e-05, 8.8e-05, 8.8e-05, 1575.32714381], [1517190420000, 8.79e-05, 8.79e-05, 8.78e-05, 8.781e-05, 4411.56749572], [1517190540000, 8.781e-05, 8.781e-05, 8.781e-05, 8.781e-05, 542.51596074], [1517190720000, 8.797e-05, 8.801e-05, 8.797e-05, 8.801e-05, 91.50645279], [1517190840000, 8.801e-05, 8.801e-05, 8.801e-05, 8.801e-05, 165.61097167], [1517191020000, 8.801e-05, 8.801e-05, 8.801e-05, 8.801e-05, 1470.4460674], [1517191080000, 8.801e-05, 8.854e-05, 8.752e-05, 8.752e-05, 10681.32285171], [1517191140000, 8.758e-05, 8.759e-05, 8.758e-05, 8.759e-05, 66.10762034], [1517191200000, 8.759e-05, 8.759e-05, 8.759e-05, 8.759e-05, 10.0], [1517191260000, 8.76e-05, 8.76e-05, 8.753e-05, 8.76e-05, 451.98745356], [1517191320000, 8.76e-05, 8.76e-05, 8.759e-05, 8.76e-05, 1348.9868668], [1517191380000, 8.76e-05, 8.76e-05, 8.759e-05, 8.759e-05, 2717.20708484], [1517191440000, 8.759e-05, 8.759e-05, 8.759e-05, 8.759e-05, 173.53579125], [1517191500000, 8.753e-05, 8.753e-05, 8.752e-05, 8.752e-05, 4056.4237084], [1517191560000, 8.752e-05, 8.752e-05, 8.75e-05, 8.75e-05, 15284.42858216], [1517191680000, 8.751e-05, 8.751e-05, 8.75e-05, 8.75e-05, 1689.93085182], [1517191740000, 8.758e-05, 8.758e-05, 8.75e-05, 8.751e-05, 1143.38843267], [1517191800000, 8.75e-05, 8.758e-05, 8.75e-05, 8.758e-05, 1788.86405853], [1517191860000, 8.759e-05, 8.759e-05, 8.758e-05, 8.758e-05, 1870.48149407], [1517191920000, 8.759e-05, 8.827e-05, 8.758e-05, 8.827e-05, 2179.43906573], [1517191980000, 8.819e-05, 8.819e-05, 8.819e-05, 8.819e-05, 95.48969072], [1517192040000, 8.758e-05, 8.758e-05, 8.758e-05, 8.758e-05, 338.0], [1517192100000, 8.758e-05, 8.818e-05, 8.758e-05, 8.818e-05, 291.75032257], [1517192160000, 8.758e-05, 8.758e-05, 8.758e-05, 8.758e-05, 589.0], [1517192220000, 8.758e-05, 8.758e-05, 8.758e-05, 8.758e-05, 423.0], [1517192280000, 8.758e-05, 8.758e-05, 8.75e-05, 8.75e-05, 3304.06727198], [1517192400000, 8.814e-05, 8.814e-05, 8.75e-05, 8.75e-05, 191.36183478], [1517192520000, 8.748e-05, 8.748e-05, 8.745e-05, 8.745e-05, 567.15592135], [1517192580000, 8.742e-05, 8.747e-05, 8.742e-05, 8.747e-05, 457.9781773], [1517192640000, 8.748e-05, 8.748e-05, 8.748e-05, 8.748e-05, 140.41063194], [1517192700000, 8.75e-05, 8.75e-05, 8.748e-05, 8.75e-05, 399.57756992], [1517192760000, 8.75e-05, 8.765e-05, 8.742e-05, 8.765e-05, 3510.92461576], [1517192820000, 8.742e-05, 8.765e-05, 8.742e-05, 8.742e-05, 601.777595], [1517192880000, 8.749e-05, 8.765e-05, 8.749e-05, 8.765e-05, 806.09145554], [1517192940000, 8.765e-05, 8.765e-05, 8.765e-05, 8.765e-05, 25.98043872], [1517193000000, 8.765e-05, 8.857e-05, 8.749e-05, 8.857e-05, 2358.18482994], [1517193060000, 8.765e-05, 8.765e-05, 8.765e-05, 8.765e-05, 616.0], [1517193120000, 8.751e-05, 8.765e-05, 8.749e-05, 8.751e-05, 1752.32707479], [1517193240000, 8.765e-05, 8.846e-05, 8.765e-05, 8.846e-05, 204.21607475], [1517193300000, 8.791e-05, 8.833e-05, 8.766e-05, 8.833e-05, 3215.29281831], [1517193360000, 8.749e-05, 8.833e-05, 8.749e-05, 8.833e-05, 57.96879032], [1517193420000, 8.75e-05, 8.75e-05, 8.75e-05, 8.75e-05, 343.88158925], [1517193480000, 8.772e-05, 8.772e-05, 8.749e-05, 8.749e-05, 1250.0], [1517193720000, 8.751e-05, 8.752e-05, 8.751e-05, 8.751e-05, 1341.50329016], [1517193780000, 8.814e-05, 8.828e-05, 8.751e-05, 8.755e-05, 363.33297106], [1517193840000, 8.755e-05, 8.755e-05, 8.755e-05, 8.755e-05, 295.0], [1517193960000, 8.799e-05, 8.799e-05, 8.766e-05, 8.766e-05, 309.61376467], [1517194020000, 8.766e-05, 8.766e-05, 8.754e-05, 8.755e-05, 8282.17058423], [1517194200000, 8.8e-05, 8.8e-05, 8.757e-05, 8.8e-05, 452.62141753], [1517194260000, 8.799e-05, 8.8e-05, 8.76e-05, 8.76e-05, 166.3579255], [1517194320000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 20.61419053], [1517194380000, 8.76e-05, 8.822e-05, 8.759e-05, 8.822e-05, 2146.02476704], [1517194560000, 8.821e-05, 8.821e-05, 8.821e-05, 8.821e-05, 74.72399526], [1517194680000, 8.764e-05, 8.785e-05, 8.76e-05, 8.785e-05, 2854.55895531], [1517194740000, 8.784e-05, 8.785e-05, 8.784e-05, 8.785e-05, 25.0], [1517194920000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 534.0], [1517194980000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 1052.43638959], [1517195040000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 346.168], [1517195100000, 8.76e-05, 8.785e-05, 8.76e-05, 8.76e-05, 3797.89775853], [1517195160000, 8.76e-05, 8.82e-05, 8.76e-05, 8.82e-05, 679.12600299], [1517195340000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 70.80800772], [1517195400000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 2518.81408467], [1517195460000, 8.752e-05, 8.818e-05, 8.752e-05, 8.818e-05, 758.9860635], [1517195640000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 70.0], [1517195760000, 8.815e-05, 8.815e-05, 8.76e-05, 8.76e-05, 1021.97652015], [1517195820000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 821.91780821], [1517195880000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 44.91841173], [1517196000000, 8.759e-05, 8.76e-05, 8.759e-05, 8.76e-05, 889.85037406], [1517196120000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 98.39216182], [1517196180000, 8.759e-05, 8.759e-05, 8.759e-05, 8.759e-05, 5.72848393], [1517196240000, 8.759e-05, 8.76e-05, 8.759e-05, 8.76e-05, 187.51196476], [1517196300000, 8.76e-05, 8.76e-05, 8.759e-05, 8.759e-05, 2457.87491514], [1517196360000, 8.759e-05, 8.759e-05, 8.759e-05, 8.759e-05, 44.71440987], [1517196420000, 8.759e-05, 8.759e-05, 8.75e-05, 8.75e-05, 421.02006648], [1517196480000, 8.741e-05, 8.741e-05, 8.74e-05, 8.74e-05, 2973.75914159], [1517196540000, 8.742e-05, 8.742e-05, 8.742e-05, 8.742e-05, 547.03035934], [1517196660000, 8.742e-05, 8.76e-05, 8.74e-05, 8.74e-05, 1206.3768887], [1517196720000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 17.85073529], [1517196840000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 76.87078746], [1517196900000, 8.741e-05, 8.76e-05, 8.741e-05, 8.76e-05, 237.16433907], [1517196960000, 8.741e-05, 8.741e-05, 8.741e-05, 8.741e-05, 50.0], [1517197020000, 8.741e-05, 8.76e-05, 8.741e-05, 8.76e-05, 1084.61859725], [1517197080000, 8.76e-05, 8.76e-05, 8.742e-05, 8.742e-05, 2308.2160762], [1517197140000, 8.742e-05, 8.742e-05, 8.742e-05, 8.742e-05, 270.0], [1517197200000, 8.741e-05, 8.741e-05, 8.741e-05, 8.741e-05, 140.02842337], [1517197320000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 441.0015687], [1517197380000, 8.741e-05, 8.741e-05, 8.741e-05, 8.741e-05, 20.42625509], [1517197500000, 8.741e-05, 8.741e-05, 8.741e-05, 8.741e-05, 2008.42768241], [1517197560000, 8.76e-05, 8.76e-05, 8.74e-05, 8.76e-05, 1589.3436064], [1517197620000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 252.28426565], [1517197680000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 228.34617923], [1517197740000, 8.74e-05, 8.76e-05, 8.74e-05, 8.76e-05, 2231.55674817], [1517197800000, 8.76e-05, 8.76e-05, 8.76e-05, 8.76e-05, 11892.94343835], [1517197860000, 8.773e-05, 8.773e-05, 8.743e-05, 8.743e-05, 1015.604158], [1517197920000, 8.743e-05, 8.743e-05, 8.743e-05, 8.743e-05, 546.79462038], [1517198040000, 8.743e-05, 8.792e-05, 8.743e-05, 8.792e-05, 447.19301476], [1517198100000, 8.745e-05, 8.792e-05, 8.742e-05, 8.742e-05, 756.022003], [1517198160000, 8.792e-05, 8.792e-05, 8.792e-05, 8.792e-05, 266.65274375], [1517198280000, 8.792e-05, 8.792e-05, 8.747e-05, 8.747e-05, 915.96885222], [1517198340000, 8.741e-05, 8.749e-05, 8.741e-05, 8.749e-05, 1555.0], [1517198400000, 8.747e-05, 8.747e-05, 8.747e-05, 8.747e-05, 588.0], [1517198460000, 8.792e-05, 8.792e-05, 8.744e-05, 8.744e-05, 1643.86293792], [1517198520000, 8.746e-05, 8.818e-05, 8.746e-05, 8.818e-05, 328.12100299], [1517198580000, 8.746e-05, 8.816e-05, 8.744e-05, 8.744e-05, 997.61783186], [1517198640000, 8.745e-05, 8.745e-05, 8.745e-05, 8.745e-05, 228.79018], [1517198700000, 8.743e-05, 8.743e-05, 8.74e-05, 8.74e-05, 3902.889268], [1517198760000, 8.744e-05, 8.744e-05, 8.743e-05, 8.743e-05, 1688.29656915], [1517198820000, 8.743e-05, 8.743e-05, 8.743e-05, 8.743e-05, 4706.22107815], [1517198880000, 8.743e-05, 8.743e-05, 8.743e-05, 8.743e-05, 267.01862587], [1517198940000, 8.742e-05, 8.743e-05, 8.742e-05, 8.743e-05, 2478.33206295], [1517199000000, 8.742e-05, 8.743e-05, 8.742e-05, 8.743e-05, 2767.55039714], [1517199060000, 8.743e-05, 8.743e-05, 8.743e-05, 8.743e-05, 3881.3909615], [1517199120000, 8.743e-05, 8.743e-05, 8.743e-05, 8.743e-05, 752.69433937], [1517199180000, 8.742e-05, 8.742e-05, 8.741e-05, 8.741e-05, 1405.4413756], [1517199240000, 8.742e-05, 8.743e-05, 8.742e-05, 8.742e-05, 4474.48339629], [1517199300000, 8.742e-05, 8.742e-05, 8.742e-05, 8.742e-05, 110.0], [1517199360000, 8.743e-05, 8.743e-05, 8.743e-05, 8.743e-05, 76.73685289], [1517199420000, 8.742e-05, 8.743e-05, 8.741e-05, 8.743e-05, 591.61416441], [1517199540000, 8.742e-05, 8.742e-05, 8.742e-05, 8.742e-05, 412.9565544], [1517199600000, 8.742e-05, 8.742e-05, 8.742e-05, 8.742e-05, 3896.8703904], [1517199660000, 8.743e-05, 8.743e-05, 8.743e-05, 8.743e-05, 13.69095276], [1517199780000, 8.743e-05, 8.743e-05, 8.742e-05, 8.743e-05, 3972.90520791], [1517199840000, 8.743e-05, 8.743e-05, 8.743e-05, 8.743e-05, 1340.40029449], [1517199900000, 8.743e-05, 8.743e-05, 8.74e-05, 8.74e-05, 2851.8487027], [1517199960000, 8.74e-05, 8.8e-05, 8.74e-05, 8.74e-05, 1141.66829718], [1517200020000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 1500.0], [1517200080000, 8.74e-05, 8.8e-05, 8.74e-05, 8.8e-05, 953.34340382], [1517200200000, 8.8e-05, 8.8e-05, 8.74e-05, 8.74e-05, 686.24296962], [1517200260000, 8.741e-05, 8.822e-05, 8.741e-05, 8.822e-05, 2615.2062336], [1517200380000, 8.801e-05, 8.801e-05, 8.741e-05, 8.741e-05, 795.652], [1517200440000, 8.741e-05, 8.741e-05, 8.741e-05, 8.741e-05, 3788.89662083], [1517200500000, 8.74e-05, 8.741e-05, 8.74e-05, 8.74e-05, 5315.43837917], [1517200560000, 8.74e-05, 8.745e-05, 8.74e-05, 8.74e-05, 640.25796423], [1517200620000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 581.0], [1517200680000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 535.0], [1517200740000, 8.814e-05, 8.814e-05, 8.741e-05, 8.814e-05, 541.09938802], [1517200800000, 8.741e-05, 8.741e-05, 8.741e-05, 8.741e-05, 546.0], [1517200860000, 8.741e-05, 8.741e-05, 8.74e-05, 8.74e-05, 3051.0], [1517200920000, 8.741e-05, 8.741e-05, 8.74e-05, 8.74e-05, 2612.0], [1517200980000, 8.814e-05, 8.814e-05, 8.74e-05, 8.814e-05, 99.63868914], [1517201040000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 70.241476], [1517201100000, 8.741e-05, 8.741e-05, 8.74e-05, 8.74e-05, 1534.435714], [1517201280000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 98.97], [1517201340000, 8.742e-05, 8.742e-05, 8.742e-05, 8.742e-05, 280.76058369], [1517201400000, 8.742e-05, 8.742e-05, 8.74e-05, 8.74e-05, 235.505401], [1517201460000, 8.742e-05, 8.8e-05, 8.742e-05, 8.799e-05, 772.13862939], [1517201520000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 477.14641783], [1517201580000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 55.16700599], [1517201640000, 8.799e-05, 8.8e-05, 8.799e-05, 8.799e-05, 1606.41598679], [1517201700000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 1621.1037898], [1517201760000, 8.742e-05, 8.742e-05, 8.742e-05, 8.742e-05, 32.078702], [1517201820000, 8.742e-05, 8.742e-05, 8.74e-05, 8.74e-05, 6287.95461441], [1517202120000, 8.741e-05, 8.741e-05, 8.74e-05, 8.741e-05, 1915.1764867], [1517202180000, 8.741e-05, 8.8e-05, 8.74e-05, 8.8e-05, 1965.73473286], [1517202240000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 299.10064746], [1517202300000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 10.0], [1517202420000, 8.799e-05, 8.8e-05, 8.74e-05, 8.8e-05, 411.8133649], [1517202540000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 11.52918981], [1517202600000, 8.799e-05, 8.799e-05, 8.74e-05, 8.74e-05, 1446.78150288], [1517202660000, 8.745e-05, 8.745e-05, 8.74e-05, 8.74e-05, 5384.76016366], [1517202840000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 1643.38118563], [1517202900000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 197.07727092], [1517202960000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 5884.0], [1517203020000, 8.799e-05, 8.799e-05, 8.799e-05, 8.799e-05, 300.0], [1517203080000, 8.74e-05, 8.799e-05, 8.74e-05, 8.799e-05, 1262.64927832], [1517203140000, 8.74e-05, 8.8e-05, 8.74e-05, 8.8e-05, 150.151003], [1517203200000, 8.755e-05, 8.755e-05, 8.74e-05, 8.74e-05, 678.11548523], [1517203260000, 8.799e-05, 8.799e-05, 8.74e-05, 8.74e-05, 296.15289571], [1517203320000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 70.74042964], [1517203380000, 8.74e-05, 8.799e-05, 8.74e-05, 8.799e-05, 898.49056687], [1517203440000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 473.72112732], [1517203500000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 2034.25475154], [1517203620000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 912.0], [1517203740000, 8.74e-05, 8.789e-05, 8.74e-05, 8.789e-05, 322.06706292], [1517203800000, 8.74e-05, 8.744e-05, 8.74e-05, 8.74e-05, 3574.33332641], [1517203860000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 188.0], [1517203920000, 8.742e-05, 8.742e-05, 8.742e-05, 8.742e-05, 293.29847634], [1517203980000, 8.742e-05, 8.742e-05, 8.742e-05, 8.742e-05, 588.0], [1517204040000, 8.742e-05, 8.742e-05, 8.742e-05, 8.742e-05, 143.37863759], [1517204100000, 8.742e-05, 8.742e-05, 8.74e-05, 8.74e-05, 2379.439029], [1517204160000, 8.742e-05, 8.744e-05, 8.74e-05, 8.744e-05, 948.14957998], [1517204280000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 394.76901067], [1517204340000, 8.744e-05, 8.744e-05, 8.741e-05, 8.741e-05, 1408.52401646], [1517204400000, 8.741e-05, 8.741e-05, 8.741e-05, 8.741e-05, 116.82796121], [1517204460000, 8.741e-05, 8.799e-05, 8.741e-05, 8.799e-05, 62.19203889], [1517204520000, 8.755e-05, 8.755e-05, 8.741e-05, 8.741e-05, 1106.49623903], [1517204580000, 8.741e-05, 8.741e-05, 8.741e-05, 8.741e-05, 1031.97531667], [1517204640000, 8.745e-05, 8.745e-05, 8.741e-05, 8.741e-05, 514.09995329], [1517204700000, 8.741e-05, 8.799e-05, 8.741e-05, 8.741e-05, 1480.0], [1517204760000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 194.28686696], [1517204820000, 8.741e-05, 8.741e-05, 8.726e-05, 8.726e-05, 47993.15769209], [1517204880000, 8.726e-05, 8.783e-05, 8.725e-05, 8.725e-05, 8677.73186374], [1517204940000, 8.722e-05, 8.722e-05, 8.721e-05, 8.721e-05, 165.854], [1517205000000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 75.01869161], [1517205060000, 8.779e-05, 8.779e-05, 8.779e-05, 8.779e-05, 177.72744124], [1517205120000, 8.721e-05, 8.721e-05, 8.701e-05, 8.701e-05, 2620.63431816], [1517205180000, 8.755e-05, 8.755e-05, 8.755e-05, 8.755e-05, 33.03964756], [1517205300000, 8.755e-05, 8.777e-05, 8.755e-05, 8.777e-05, 309.90378683], [1517205360000, 8.703e-05, 8.703e-05, 8.7e-05, 8.7e-05, 2052.2160762], [1517205420000, 8.776e-05, 8.777e-05, 8.702e-05, 8.702e-05, 816.04026298], [1517205540000, 8.749e-05, 8.775e-05, 8.715e-05, 8.715e-05, 2812.15292827], [1517205600000, 8.715e-05, 8.715e-05, 8.715e-05, 8.715e-05, 100.0], [1517205660000, 8.772e-05, 8.775e-05, 8.77e-05, 8.77e-05, 300.11727492], [1517205720000, 8.769e-05, 8.769e-05, 8.75e-05, 8.75e-05, 332.49622551], [1517205780000, 8.716e-05, 8.767e-05, 8.714e-05, 8.767e-05, 1050.0], [1517205840000, 8.715e-05, 8.715e-05, 8.714e-05, 8.714e-05, 32.28219216], [1517205900000, 8.761e-05, 8.761e-05, 8.761e-05, 8.761e-05, 50.151003], [1517205960000, 8.761e-05, 8.77e-05, 8.761e-05, 8.77e-05, 3966.55584847], [1517206020000, 8.761e-05, 8.762e-05, 8.714e-05, 8.714e-05, 6516.81189361], [1517206140000, 8.77e-05, 8.77e-05, 8.77e-05, 8.77e-05, 896.79920555], [1517206200000, 8.77e-05, 8.771e-05, 8.77e-05, 8.77e-05, 641.80189667], [1517206260000, 8.77e-05, 8.771e-05, 8.72e-05, 8.72e-05, 314.57934059], [1517206320000, 8.723e-05, 8.723e-05, 8.723e-05, 8.723e-05, 4037.43742986], [1517206380000, 8.771e-05, 8.771e-05, 8.723e-05, 8.723e-05, 2692.53554114], [1517206440000, 8.723e-05, 8.723e-05, 8.722e-05, 8.723e-05, 419.99999999], [1517206500000, 8.771e-05, 8.771e-05, 8.771e-05, 8.771e-05, 397.23506042], [1517206560000, 8.749e-05, 8.749e-05, 8.724e-05, 8.724e-05, 488.69795378], [1517206620000, 8.722e-05, 8.722e-05, 8.722e-05, 8.722e-05, 2349.98998401], [1517206680000, 8.722e-05, 8.791e-05, 8.722e-05, 8.791e-05, 4712.98472467], [1517206740000, 8.786e-05, 8.786e-05, 8.675e-05, 8.721e-05, 17246.60243067], [1517206800000, 8.722e-05, 8.722e-05, 8.722e-05, 8.722e-05, 338.75229466], [1517206860000, 8.722e-05, 8.722e-05, 8.722e-05, 8.722e-05, 1138.83867531], [1517206920000, 8.722e-05, 8.722e-05, 8.722e-05, 8.722e-05, 15.34132154], [1517206980000, 8.791e-05, 8.791e-05, 8.675e-05, 8.675e-05, 1123.75555912], [1517207040000, 8.674e-05, 8.674e-05, 8.65e-05, 8.66e-05, 2638.8173817], [1517207100000, 8.78e-05, 8.78e-05, 8.78e-05, 8.78e-05, 75.49110536], [1517207160000, 8.728e-05, 8.728e-05, 8.662e-05, 8.662e-05, 400.0], [1517207280000, 8.669e-05, 8.753e-05, 8.669e-05, 8.753e-05, 280.54509103], [1517207400000, 8.7e-05, 8.7e-05, 8.7e-05, 8.7e-05, 8.248392], [1517207580000, 8.752e-05, 8.798e-05, 8.72e-05, 8.798e-05, 713.52435819], [1517207640000, 8.752e-05, 8.752e-05, 8.732e-05, 8.732e-05, 711.61826321], [1517207700000, 8.732e-05, 8.776e-05, 8.732e-05, 8.732e-05, 499.55677705], [1517207760000, 8.7e-05, 8.7e-05, 8.7e-05, 8.7e-05, 114.624435], [1517207820000, 8.7e-05, 8.727e-05, 8.699e-05, 8.725e-05, 449.09009231], [1517207880000, 8.699e-05, 8.717e-05, 8.65e-05, 8.717e-05, 8861.53159906], [1517208000000, 8.717e-05, 8.718e-05, 8.717e-05, 8.718e-05, 1944.95071586], [1517208060000, 8.673e-05, 8.717e-05, 8.639e-05, 8.64e-05, 3272.65097385], [1517208120000, 8.717e-05, 8.718e-05, 8.717e-05, 8.718e-05, 3071.13034314], [1517208180000, 8.717e-05, 8.717e-05, 8.717e-05, 8.717e-05, 100.0], [1517208240000, 8.717e-05, 8.717e-05, 8.717e-05, 8.717e-05, 792.54090354], [1517208360000, 8.717e-05, 8.721e-05, 8.717e-05, 8.72e-05, 3559.38140143], [1517208420000, 8.641e-05, 8.641e-05, 8.618e-05, 8.619e-05, 1609.30791425], [1517208480000, 8.716e-05, 8.716e-05, 8.713e-05, 8.716e-05, 973.08384628], [1517208540000, 8.717e-05, 8.718e-05, 8.715e-05, 8.716e-05, 4672.50037098], [1517208660000, 8.714e-05, 8.716e-05, 8.714e-05, 8.716e-05, 993.77302497], [1517208720000, 8.716e-05, 8.717e-05, 8.716e-05, 8.717e-05, 5034.90826878], [1517208840000, 8.719e-05, 8.721e-05, 8.719e-05, 8.721e-05, 1225.05477349], [1517208900000, 8.721e-05, 8.722e-05, 8.718e-05, 8.718e-05, 4151.29844377], [1517209080000, 8.72e-05, 8.732e-05, 8.718e-05, 8.721e-05, 2502.69199811], [1517209140000, 8.8e-05, 8.8e-05, 8.722e-05, 8.797e-05, 558.22056713], [1517209200000, 8.725e-05, 8.725e-05, 8.724e-05, 8.724e-05, 724.113809], [1517209260000, 8.8e-05, 8.8e-05, 8.725e-05, 8.725e-05, 1816.17150572], [1517209440000, 8.795e-05, 8.795e-05, 8.795e-05, 8.795e-05, 1000.0], [1517209500000, 8.792e-05, 8.792e-05, 8.792e-05, 8.792e-05, 16.07319949], [1517209620000, 8.781e-05, 8.782e-05, 8.71e-05, 8.71e-05, 3421.94395189], [1517209680000, 8.687e-05, 8.786e-05, 8.656e-05, 8.786e-05, 226.97992484], [1517209980000, 8.73e-05, 8.731e-05, 8.73e-05, 8.731e-05, 4691.7621904], [1517210040000, 8.799e-05, 8.799e-05, 8.691e-05, 8.691e-05, 1700.1122669], [1517210160000, 8.691e-05, 8.691e-05, 8.691e-05, 8.691e-05, 233.45800756], [1517210280000, 8.693e-05, 8.693e-05, 8.692e-05, 8.692e-05, 500.61570286], [1517210340000, 8.692e-05, 8.692e-05, 8.627e-05, 8.627e-05, 770.13063726], [1517210400000, 8.73e-05, 8.73e-05, 8.73e-05, 8.73e-05, 27.45491123], [1517210460000, 8.727e-05, 8.727e-05, 8.727e-05, 8.727e-05, 38.06603917], [1517210520000, 8.727e-05, 8.727e-05, 8.727e-05, 8.727e-05, 24.54025549], [1517210580000, 8.727e-05, 8.728e-05, 8.727e-05, 8.728e-05, 52.88929919], [1517210640000, 8.728e-05, 8.728e-05, 8.625e-05, 8.625e-05, 1059.98258927], [1517210700000, 8.626e-05, 8.727e-05, 8.626e-05, 8.727e-05, 5266.55385841], [1517210760000, 8.727e-05, 8.73e-05, 8.727e-05, 8.73e-05, 552.10391784], [1517210940000, 8.73e-05, 8.73e-05, 8.73e-05, 8.73e-05, 22.92221163], [1517211000000, 8.727e-05, 8.727e-05, 8.727e-05, 8.727e-05, 50.0], [1517211060000, 8.727e-05, 8.727e-05, 8.727e-05, 8.727e-05, 985.74354555], [1517211180000, 8.727e-05, 8.727e-05, 8.629e-05, 8.629e-05, 495.16692287], [1517211300000, 8.641e-05, 8.727e-05, 8.641e-05, 8.727e-05, 630.39100299], [1517211360000, 8.651e-05, 8.651e-05, 8.651e-05, 8.651e-05, 40.0], [1517211420000, 8.727e-05, 8.727e-05, 8.727e-05, 8.727e-05, 55.35254256], [1517211480000, 8.727e-05, 8.796e-05, 8.658e-05, 8.796e-05, 1225.28354864], [1517211660000, 8.775e-05, 8.776e-05, 8.775e-05, 8.776e-05, 760.69720308], [1517211780000, 8.656e-05, 8.77e-05, 8.656e-05, 8.77e-05, 48.16600823], [1517211840000, 8.657e-05, 8.657e-05, 8.656e-05, 8.656e-05, 500.0], [1517211900000, 8.76e-05, 8.76e-05, 8.656e-05, 8.656e-05, 238.01599649], [1517212020000, 8.75e-05, 8.75e-05, 8.75e-05, 8.75e-05, 922.97242926], [1517212080000, 8.75e-05, 8.798e-05, 8.665e-05, 8.665e-05, 1858.05128348], [1517212140000, 8.67e-05, 8.67e-05, 8.668e-05, 8.668e-05, 67.98089455], [1517212200000, 8.685e-05, 8.78e-05, 8.685e-05, 8.78e-05, 981.11536721], [1517212260000, 8.78e-05, 8.78e-05, 8.78e-05, 8.78e-05, 5.36619361], [1517212380000, 8.773e-05, 8.773e-05, 8.773e-05, 8.773e-05, 132.91860858], [1517212500000, 8.771e-05, 8.771e-05, 8.72e-05, 8.72e-05, 636.70177373], [1517212560000, 8.765e-05, 8.765e-05, 8.765e-05, 8.765e-05, 849.96340021], [1517212740000, 8.722e-05, 8.722e-05, 8.699e-05, 8.699e-05, 74.63029049], [1517212800000, 8.697e-05, 8.699e-05, 8.697e-05, 8.699e-05, 1430.38740105], [1517212860000, 8.688e-05, 8.767e-05, 8.688e-05, 8.765e-05, 1772.67724313], [1517212920000, 8.766e-05, 8.767e-05, 8.699e-05, 8.767e-05, 295.04024767], [1517212980000, 8.767e-05, 8.767e-05, 8.699e-05, 8.699e-05, 2706.57248454], [1517213040000, 8.699e-05, 8.699e-05, 8.699e-05, 8.699e-05, 50.0], [1517213100000, 8.766e-05, 8.767e-05, 8.766e-05, 8.767e-05, 5030.35778443], [1517213160000, 8.767e-05, 8.767e-05, 8.765e-05, 8.765e-05, 2670.8197851], [1517213280000, 8.691e-05, 8.691e-05, 8.691e-05, 8.691e-05, 382.03089652], [1517213340000, 8.692e-05, 8.692e-05, 8.691e-05, 8.691e-05, 970.0], [1517213400000, 8.765e-05, 8.767e-05, 8.691e-05, 8.691e-05, 450.89207106], [1517213460000, 8.691e-05, 8.767e-05, 8.691e-05, 8.767e-05, 1395.47072864], [1517213520000, 8.767e-05, 8.767e-05, 8.767e-05, 8.767e-05, 382.70682089], [1517213580000, 8.693e-05, 8.765e-05, 8.685e-05, 8.765e-05, 408.04178943], [1517213640000, 8.764e-05, 8.764e-05, 8.764e-05, 8.764e-05, 1088.99592604], [1517213760000, 8.764e-05, 8.764e-05, 8.655e-05, 8.655e-05, 954.34189645], [1517213820000, 8.655e-05, 8.764e-05, 8.655e-05, 8.764e-05, 547.96205101], [1517213880000, 8.762e-05, 8.762e-05, 8.657e-05, 8.657e-05, 150.69153687], [1517213940000, 8.687e-05, 8.757e-05, 8.687e-05, 8.687e-05, 852.02256614], [1517214000000, 8.687e-05, 8.799e-05, 8.654e-05, 8.799e-05, 5303.384168], [1517214060000, 8.662e-05, 8.662e-05, 8.662e-05, 8.662e-05, 80.0], [1517214180000, 8.663e-05, 8.663e-05, 8.663e-05, 8.663e-05, 48.37359115], [1517214240000, 8.655e-05, 8.787e-05, 8.655e-05, 8.675e-05, 73.59062471], [1517214300000, 8.775e-05, 8.775e-05, 8.775e-05, 8.775e-05, 1242.04141577], [1517214420000, 8.769e-05, 8.769e-05, 8.676e-05, 8.676e-05, 250.20255548], [1517214480000, 8.765e-05, 8.765e-05, 8.765e-05, 8.765e-05, 7.63789795], [1517214540000, 8.761e-05, 8.761e-05, 8.761e-05, 8.761e-05, 1572.07156473], [1517214600000, 8.673e-05, 8.673e-05, 8.673e-05, 8.673e-05, 10.0], [1517214660000, 8.673e-05, 8.673e-05, 8.673e-05, 8.673e-05, 662.60064826], [1517214720000, 8.673e-05, 8.673e-05, 8.673e-05, 8.673e-05, 300.0], [1517214960000, 8.675e-05, 8.675e-05, 8.673e-05, 8.675e-05, 1889.75775429], [1517215020000, 8.745e-05, 8.745e-05, 8.65e-05, 8.65e-05, 2727.2656834], [1517215080000, 8.745e-05, 8.745e-05, 8.745e-05, 8.745e-05, 120.0], [1517215260000, 8.73e-05, 8.73e-05, 8.625e-05, 8.625e-05, 10727.21925303], [1517215320000, 8.729e-05, 8.739e-05, 8.729e-05, 8.739e-05, 169.20805542], [1517215380000, 8.73e-05, 8.73e-05, 8.73e-05, 8.73e-05, 54.7287879], [1517215440000, 8.728e-05, 8.73e-05, 8.728e-05, 8.73e-05, 383.19751136], [1517215560000, 8.728e-05, 8.728e-05, 8.728e-05, 8.728e-05, 525.19217771], [1517215680000, 8.635e-05, 8.635e-05, 8.635e-05, 8.635e-05, 28.67292248], [1517215740000, 8.635e-05, 8.72e-05, 8.635e-05, 8.72e-05, 959.11814434], [1517215860000, 8.719e-05, 8.719e-05, 8.719e-05, 8.719e-05, 1441.50892646], [1517215920000, 8.719e-05, 8.719e-05, 8.719e-05, 8.719e-05, 14.62036788], [1517215980000, 8.719e-05, 8.719e-05, 8.64e-05, 8.64e-05, 399.34835554], [1517216040000, 8.719e-05, 8.719e-05, 8.641e-05, 8.719e-05, 814.74560547], [1517216100000, 8.719e-05, 8.719e-05, 8.719e-05, 8.719e-05, 76.91794497], [1517216160000, 8.719e-05, 8.719e-05, 8.719e-05, 8.719e-05, 4464.28571], [1517216220000, 8.7e-05, 8.719e-05, 8.655e-05, 8.655e-05, 516.97940261], [1517216280000, 8.69e-05, 8.69e-05, 8.671e-05, 8.671e-05, 389.05789068], [1517216340000, 8.69e-05, 8.719e-05, 8.69e-05, 8.719e-05, 2482.20177617], [1517216640000, 8.719e-05, 8.719e-05, 8.719e-05, 8.719e-05, 7.69198943], [1517216760000, 8.685e-05, 8.719e-05, 8.685e-05, 8.685e-05, 2593.61540776], [1517216820000, 8.674e-05, 8.674e-05, 8.674e-05, 8.674e-05, 36.66335937], [1517216880000, 8.674e-05, 8.674e-05, 8.658e-05, 8.674e-05, 212.2101661], [1517216940000, 8.719e-05, 8.719e-05, 8.658e-05, 8.658e-05, 143.35183779], [1517217060000, 8.719e-05, 8.719e-05, 8.719e-05, 8.719e-05, 11.56370035], [1517217120000, 8.672e-05, 8.77e-05, 8.665e-05, 8.665e-05, 2784.39638019], [1517217240000, 8.719e-05, 8.782e-05, 8.719e-05, 8.782e-05, 366.87156141], [1517217300000, 8.781e-05, 8.781e-05, 8.779e-05, 8.779e-05, 549.59718091], [1517217360000, 8.776e-05, 8.776e-05, 8.68e-05, 8.681e-05, 104.90111865], [1517217420000, 8.782e-05, 8.782e-05, 8.682e-05, 8.78e-05, 1229.60108743], [1517217480000, 8.777e-05, 8.78e-05, 8.777e-05, 8.78e-05, 901.56230126], [1517217600000, 8.78e-05, 8.797e-05, 8.78e-05, 8.797e-05, 984.19665007], [1517217660000, 8.797e-05, 8.836e-05, 8.797e-05, 8.836e-05, 703.84244512], [1517217720000, 8.833e-05, 8.834e-05, 8.833e-05, 8.834e-05, 1284.87021989], [1517217840000, 8.827e-05, 8.827e-05, 8.827e-05, 8.827e-05, 379.58074804], [1517218020000, 8.825e-05, 8.825e-05, 8.825e-05, 8.825e-05, 1636.44463311], [1517218080000, 8.73e-05, 8.826e-05, 8.73e-05, 8.826e-05, 236.65445996], [1517218140000, 8.826e-05, 8.826e-05, 8.826e-05, 8.826e-05, 415.19104511], [1517218200000, 8.826e-05, 8.826e-05, 8.826e-05, 8.826e-05, 38.77038154], [1517218320000, 8.711e-05, 8.711e-05, 8.711e-05, 8.711e-05, 8.35164106], [1517218380000, 8.815e-05, 8.816e-05, 8.709e-05, 8.709e-05, 3414.89896596], [1517218440000, 8.7e-05, 8.7e-05, 8.7e-05, 8.7e-05, 104.8516], [1517218500000, 8.701e-05, 8.701e-05, 8.701e-05, 8.701e-05, 11.918436], [1517218620000, 8.701e-05, 8.702e-05, 8.701e-05, 8.702e-05, 325.0], [1517218680000, 8.716e-05, 8.716e-05, 8.716e-05, 8.716e-05, 117.61977918], [1517218740000, 8.716e-05, 8.716e-05, 8.716e-05, 8.716e-05, 84.930613], [1517218800000, 8.716e-05, 8.716e-05, 8.716e-05, 8.716e-05, 57.70158587], [1517218860000, 8.716e-05, 8.716e-05, 8.703e-05, 8.716e-05, 200.17658075], [1517218980000, 8.716e-05, 8.815e-05, 8.7e-05, 8.7e-05, 2483.75119782], [1517219040000, 8.701e-05, 8.701e-05, 8.701e-05, 8.701e-05, 126.0895123], [1517219100000, 8.702e-05, 8.702e-05, 8.702e-05, 8.702e-05, 152.0], [1517219160000, 8.785e-05, 8.785e-05, 8.785e-05, 8.785e-05, 76.26595184], [1517219220000, 8.777e-05, 8.777e-05, 8.777e-05, 8.777e-05, 250.0], [1517219280000, 8.777e-05, 8.784e-05, 8.715e-05, 8.715e-05, 213.40019378], [1517219340000, 8.784e-05, 8.784e-05, 8.702e-05, 8.702e-05, 215.4915432], [1517219400000, 8.704e-05, 8.802e-05, 8.704e-05, 8.802e-05, 1230.0], [1517219460000, 8.79e-05, 8.79e-05, 8.79e-05, 8.79e-05, 76.21559227], [1517219580000, 8.785e-05, 8.786e-05, 8.701e-05, 8.701e-05, 331.6374904], [1517219640000, 8.786e-05, 8.786e-05, 8.786e-05, 8.786e-05, 53.82710733], [1517219700000, 8.786e-05, 8.788e-05, 8.786e-05, 8.788e-05, 190.73037646], [1517219820000, 8.704e-05, 8.704e-05, 8.704e-05, 8.704e-05, 16.78959479], [1517219940000, 8.72e-05, 8.72e-05, 8.72e-05, 8.72e-05, 57.0], [1517220120000, 8.788e-05, 8.795e-05, 8.703e-05, 8.705e-05, 1314.84406951], [1517220180000, 8.705e-05, 8.793e-05, 8.705e-05, 8.793e-05, 546.33872597], [1517220240000, 8.794e-05, 8.794e-05, 8.794e-05, 8.794e-05, 38.80632742], [1517220360000, 8.794e-05, 8.794e-05, 8.705e-05, 8.705e-05, 229.9151226], [1517220420000, 8.71e-05, 8.71e-05, 8.71e-05, 8.71e-05, 4258.0], [1517220480000, 8.71e-05, 8.815e-05, 8.705e-05, 8.815e-05, 810.99194013], [1517220540000, 8.794e-05, 8.836e-05, 8.707e-05, 8.707e-05, 2236.99100299], [1517220660000, 8.712e-05, 8.715e-05, 8.707e-05, 8.707e-05, 948.96480288], [1517220780000, 8.81e-05, 8.81e-05, 8.709e-05, 8.709e-05, 1092.12397538], [1517220840000, 8.709e-05, 8.709e-05, 8.707e-05, 8.707e-05, 904.27036154], [1517220900000, 8.707e-05, 8.707e-05, 8.707e-05, 8.707e-05, 14.50271509], [1517220960000, 8.707e-05, 8.707e-05, 8.707e-05, 8.707e-05, 3199.6873187], [1517221020000, 8.707e-05, 8.707e-05, 8.707e-05, 8.707e-05, 76.0], [1517221080000, 8.707e-05, 8.707e-05, 8.707e-05, 8.707e-05, 2587.0], [1517221140000, 8.796e-05, 8.796e-05, 8.796e-05, 8.796e-05, 83.61295628], [1517221200000, 8.707e-05, 8.707e-05, 8.707e-05, 8.707e-05, 227.51430597], [1517221260000, 8.708e-05, 8.708e-05, 8.708e-05, 8.708e-05, 500.0], [1517221320000, 8.796e-05, 8.796e-05, 8.789e-05, 8.789e-05, 146.22900299], [1517221380000, 8.708e-05, 8.708e-05, 8.707e-05, 8.707e-05, 2183.87567263], [1517221440000, 8.789e-05, 8.808e-05, 8.789e-05, 8.808e-05, 608.07511165], [1517221500000, 8.807e-05, 8.807e-05, 8.807e-05, 8.807e-05, 41.80546436], [1517221560000, 8.804e-05, 8.804e-05, 8.804e-05, 8.804e-05, 151.75465069], [1517221620000, 8.708e-05, 8.804e-05, 8.708e-05, 8.804e-05, 137.96878759], [1517221680000, 8.707e-05, 8.707e-05, 8.705e-05, 8.705e-05, 587.412], [1517221740000, 8.707e-05, 8.807e-05, 8.707e-05, 8.807e-05, 187.90160347], [1517221800000, 8.706e-05, 8.706e-05, 8.706e-05, 8.706e-05, 212.63306414], [1517221860000, 8.805e-05, 8.805e-05, 8.705e-05, 8.705e-05, 184.78214599], [1517221920000, 8.799e-05, 8.836e-05, 8.799e-05, 8.835e-05, 6470.32338651], [1517221980000, 8.711e-05, 8.712e-05, 8.67e-05, 8.697e-05, 7081.00403032], [1517222040000, 8.789e-05, 8.789e-05, 8.789e-05, 8.789e-05, 75.3926378], [1517222100000, 8.715e-05, 8.728e-05, 8.715e-05, 8.715e-05, 590.35255671], [1517222160000, 8.67e-05, 8.67e-05, 8.67e-05, 8.67e-05, 27.55524862], [1517222220000, 8.672e-05, 8.672e-05, 8.671e-05, 8.671e-05, 840.53852304], [1517222280000, 8.719e-05, 8.719e-05, 8.719e-05, 8.719e-05, 21.756858], [1517222340000, 8.719e-05, 8.719e-05, 8.719e-05, 8.719e-05, 8.70108111], [1517222400000, 8.719e-05, 8.719e-05, 8.719e-05, 8.719e-05, 11.46920518], [1517222460000, 8.67e-05, 8.719e-05, 8.67e-05, 8.719e-05, 3073.4243355], [1517222520000, 8.67e-05, 8.67e-05, 8.67e-05, 8.67e-05, 72.86912633], [1517222580000, 8.754e-05, 8.754e-05, 8.659e-05, 8.659e-05, 3490.44806112], [1517222640000, 8.659e-05, 8.659e-05, 8.659e-05, 8.659e-05, 3499.94844629], [1517222700000, 8.737e-05, 8.737e-05, 8.699e-05, 8.699e-05, 50.73959619], [1517222760000, 8.699e-05, 8.699e-05, 8.699e-05, 8.699e-05, 12.8861616], [1517222820000, 8.699e-05, 8.699e-05, 8.699e-05, 8.699e-05, 1503.05682348], [1517222880000, 8.7e-05, 8.7e-05, 8.7e-05, 8.7e-05, 3144.95830081], [1517222940000, 8.744e-05, 8.744e-05, 8.744e-05, 8.744e-05, 152.74262371], [1517223000000, 8.736e-05, 8.736e-05, 8.661e-05, 8.661e-05, 180.56417646], [1517223060000, 8.661e-05, 8.661e-05, 8.661e-05, 8.661e-05, 7.8892], [1517223120000, 8.734e-05, 8.734e-05, 8.734e-05, 8.734e-05, 305.80394151], [1517223180000, 8.734e-05, 8.736e-05, 8.734e-05, 8.734e-05, 3153.11594518], [1517223240000, 8.734e-05, 8.734e-05, 8.734e-05, 8.734e-05, 8026.9249449], [1517223300000, 8.735e-05, 8.735e-05, 8.67e-05, 8.67e-05, 6357.59341016], [1517223360000, 8.67e-05, 8.734e-05, 8.67e-05, 8.67e-05, 2465.86106136], [1517223420000, 8.67e-05, 8.734e-05, 8.67e-05, 8.734e-05, 35.29169465], [1517223480000, 8.734e-05, 8.734e-05, 8.734e-05, 8.734e-05, 476.45092182], [1517223540000, 8.669e-05, 8.669e-05, 8.665e-05, 8.665e-05, 3798.53098145], [1517223600000, 8.734e-05, 8.734e-05, 8.734e-05, 8.734e-05, 1719.59596571], [1517223660000, 8.665e-05, 8.665e-05, 8.665e-05, 8.665e-05, 262.31970959], [1517223720000, 8.733e-05, 8.733e-05, 8.733e-05, 8.733e-05, 18.7627799], [1517223780000, 8.665e-05, 8.733e-05, 8.665e-05, 8.733e-05, 2199.71070745], [1517223840000, 8.665e-05, 8.733e-05, 8.661e-05, 8.733e-05, 625.51428792], [1517223900000, 8.663e-05, 8.663e-05, 8.663e-05, 8.663e-05, 100.18494636], [1517223960000, 8.663e-05, 8.733e-05, 8.663e-05, 8.733e-05, 907.9738508], [1517224020000, 8.733e-05, 8.733e-05, 8.733e-05, 8.733e-05, 90.21727356], [1517224080000, 8.733e-05, 8.733e-05, 8.733e-05, 8.733e-05, 757.38935947], [1517224140000, 8.733e-05, 8.733e-05, 8.733e-05, 8.733e-05, 220.41455543], [1517224200000, 8.662e-05, 8.662e-05, 8.662e-05, 8.662e-05, 168.38198952], [1517224260000, 8.662e-05, 8.733e-05, 8.662e-05, 8.733e-05, 211.01213281], [1517224320000, 8.662e-05, 8.662e-05, 8.662e-05, 8.662e-05, 20.0], [1517224380000, 8.733e-05, 8.733e-05, 8.733e-05, 8.733e-05, 50.151003], [1517224440000, 8.661e-05, 8.732e-05, 8.661e-05, 8.732e-05, 132.95662482], [1517224500000, 8.661e-05, 8.661e-05, 8.66e-05, 8.66e-05, 724.28072162], [1517224560000, 8.658e-05, 8.658e-05, 8.658e-05, 8.658e-05, 236.65030144], [1517224620000, 8.732e-05, 8.754e-05, 8.732e-05, 8.749e-05, 741.76581547], [1517224680000, 8.748e-05, 8.748e-05, 8.748e-05, 8.748e-05, 15.0], [1517224740000, 8.668e-05, 8.668e-05, 8.668e-05, 8.668e-05, 16.32658392], [1517224800000, 8.668e-05, 8.668e-05, 8.658e-05, 8.658e-05, 667.0], [1517224860000, 8.74e-05, 8.74e-05, 8.659e-05, 8.659e-05, 120.21100299], [1517224920000, 8.66e-05, 8.66e-05, 8.658e-05, 8.658e-05, 1000.0], [1517224980000, 8.66e-05, 8.66e-05, 8.658e-05, 8.658e-05, 150.0], [1517225040000, 8.66e-05, 8.66e-05, 8.66e-05, 8.66e-05, 5.97509342], [1517225160000, 8.66e-05, 8.66e-05, 8.66e-05, 8.66e-05, 25.0], [1517225280000, 8.749e-05, 8.749e-05, 8.66e-05, 8.66e-05, 101.11170337], [1517225340000, 8.748e-05, 8.748e-05, 8.747e-05, 8.747e-05, 465.86129058], [1517225400000, 8.747e-05, 8.747e-05, 8.661e-05, 8.661e-05, 145.48165056], [1517225460000, 8.661e-05, 8.661e-05, 8.661e-05, 8.661e-05, 381.31932793], [1517225520000, 8.67e-05, 8.67e-05, 8.667e-05, 8.667e-05, 158.63277694], [1517225580000, 8.747e-05, 8.75e-05, 8.703e-05, 8.703e-05, 610.32211126], [1517225640000, 8.703e-05, 8.75e-05, 8.703e-05, 8.703e-05, 356.51134], [1517225700000, 8.749e-05, 8.749e-05, 8.749e-05, 8.749e-05, 40.08850581], [1517225760000, 8.667e-05, 8.667e-05, 8.667e-05, 8.667e-05, 45.0], [1517226000000, 8.67e-05, 8.67e-05, 8.667e-05, 8.667e-05, 1772.84943444], [1517226060000, 8.667e-05, 8.667e-05, 8.667e-05, 8.667e-05, 33.29930145], [1517226180000, 8.669e-05, 8.669e-05, 8.667e-05, 8.667e-05, 2677.45536023], [1517226240000, 8.669e-05, 8.749e-05, 8.668e-05, 8.749e-05, 1096.89170154], [1517226360000, 8.668e-05, 8.668e-05, 8.668e-05, 8.668e-05, 335.582131], [1517226420000, 8.668e-05, 8.749e-05, 8.668e-05, 8.749e-05, 399.95314315], [1517226480000, 8.748e-05, 8.748e-05, 8.747e-05, 8.747e-05, 180.06056598], [1517226720000, 8.74e-05, 8.74e-05, 8.74e-05, 8.74e-05, 113.95629985], [1517226840000, 8.747e-05, 8.749e-05, 8.746e-05, 8.746e-05, 810.41980819], [1517226900000, 8.667e-05, 8.667e-05, 8.667e-05, 8.667e-05, 1407.6068178], [1517226960000, 8.746e-05, 8.746e-05, 8.667e-05, 8.667e-05, 822.11316284], [1517227020000, 8.735e-05, 8.735e-05, 8.735e-05, 8.735e-05, 100.301003], [1517227080000, 8.735e-05, 8.735e-05, 8.698e-05, 8.698e-05, 216.62677682], [1517227140000, 8.698e-05, 8.698e-05, 8.698e-05, 8.698e-05, 980.83497987], [1517227200000, 8.67e-05, 8.734e-05, 8.667e-05, 8.734e-05, 178.52251483], [1517227260000, 8.667e-05, 8.667e-05, 8.667e-05, 8.667e-05, 112.93212096], [1517227320000, 8.667e-05, 8.667e-05, 8.667e-05, 8.667e-05, 231.33725626], [1517227380000, 8.734e-05, 8.734e-05, 8.734e-05, 8.734e-05, 184.1350306], [1517227440000, 8.667e-05, 8.667e-05, 8.667e-05, 8.667e-05, 100.0], [1517227500000, 8.734e-05, 8.735e-05, 8.667e-05, 8.667e-05, 515.24179284], [1517227560000, 8.735e-05, 8.735e-05, 8.666e-05, 8.666e-05, 1619.71840837], [1517227620000, 8.735e-05, 8.815e-05, 8.735e-05, 8.815e-05, 2145.64873884], [1517227680000, 8.783e-05, 8.783e-05, 8.783e-05, 8.783e-05, 124.47532615], [1517227740000, 8.685e-05, 8.685e-05, 8.668e-05, 8.668e-05, 455.51633335], [1517227800000, 8.668e-05, 8.668e-05, 8.668e-05, 8.668e-05, 3310.0], [1517227860000, 8.768e-05, 8.768e-05, 8.768e-05, 8.768e-05, 71.35241276], [1517227920000, 8.679e-05, 8.68e-05, 8.679e-05, 8.679e-05, 926.46804419], [1517227980000, 8.687e-05, 8.764e-05, 8.687e-05, 8.764e-05, 1192.6230774], [1517228100000, 8.696e-05, 8.697e-05, 8.696e-05, 8.697e-05, 687.21779861], [1517228280000, 8.698e-05, 8.698e-05, 8.698e-05, 8.698e-05, 834.98087159], [1517228400000, 8.759e-05, 8.759e-05, 8.698e-05, 8.698e-05, 1512.03652858], [1517228520000, 8.698e-05, 8.698e-05, 8.698e-05, 8.698e-05, 258.71116602], [1517228760000, 8.786e-05, 8.786e-05, 8.786e-05, 8.786e-05, 387.4658395], [1517228880000, 8.782e-05, 8.782e-05, 8.782e-05, 8.782e-05, 208.21447763], [1517228940000, 8.782e-05, 8.782e-05, 8.778e-05, 8.779e-05, 274.93076435], [1517229000000, 8.785e-05, 8.785e-05, 8.785e-05, 8.785e-05, 200.601003], [1517229060000, 8.781e-05, 8.787e-05, 8.781e-05, 8.787e-05, 76.78217766], [1517229120000, 8.786e-05, 8.786e-05, 8.786e-05, 8.786e-05, 3451.55709343], [1517229240000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 62.15027364], [1517229300000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 1250.73174028], [1517229360000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 36.26613636], [1517229420000, 8.72e-05, 8.8e-05, 8.72e-05, 8.8e-05, 576.99131996], [1517229480000, 8.72e-05, 8.8e-05, 8.72e-05, 8.8e-05, 1057.67028599], [1517229540000, 8.8e-05, 8.815e-05, 8.8e-05, 8.815e-05, 502.26656891], [1517229600000, 8.815e-05, 8.815e-05, 8.725e-05, 8.725e-05, 747.77903981], [1517229660000, 8.726e-05, 8.726e-05, 8.726e-05, 8.726e-05, 98.80898301], [1517229720000, 8.727e-05, 8.73e-05, 8.727e-05, 8.73e-05, 421.86795978], [1517229780000, 8.73e-05, 8.859e-05, 8.73e-05, 8.856e-05, 8433.72635799], [1517229840000, 8.855e-05, 8.855e-05, 8.855e-05, 8.855e-05, 46.86534914], [1517229900000, 8.779e-05, 8.779e-05, 8.779e-05, 8.779e-05, 14.56103311], [1517229960000, 8.704e-05, 8.704e-05, 8.701e-05, 8.701e-05, 2245.8882023], [1517230020000, 8.779e-05, 8.779e-05, 8.779e-05, 8.779e-05, 10.0], [1517230080000, 8.71e-05, 8.809e-05, 8.71e-05, 8.809e-05, 626.75100299], [1517230200000, 8.721e-05, 8.721e-05, 8.721e-05, 8.721e-05, 176.95338983], [1517230260000, 8.721e-05, 8.721e-05, 8.721e-05, 8.721e-05, 8388.26805008], [1517230320000, 8.809e-05, 8.809e-05, 8.72e-05, 8.72e-05, 433.22613388], [1517230380000, 8.72e-05, 8.72e-05, 8.702e-05, 8.703e-05, 1414.1547184], [1517230560000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 38.65112346], [1517230620000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 27.92773295], [1517230680000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 262.15377614], [1517230740000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 15.32983267], [1517230800000, 8.703e-05, 8.703e-05, 8.7e-05, 8.7e-05, 1028.68277922], [1517230860000, 8.701e-05, 8.701e-05, 8.701e-05, 8.701e-05, 591.4167519], [1517230920000, 8.734e-05, 8.734e-05, 8.734e-05, 8.734e-05, 26.104552], [1517230980000, 8.797e-05, 8.859e-05, 8.797e-05, 8.859e-05, 879.60841958], [1517231040000, 8.797e-05, 8.797e-05, 8.797e-05, 8.797e-05, 361.91021098], [1517231100000, 8.817e-05, 8.817e-05, 8.817e-05, 8.817e-05, 1344.18855223], [1517231160000, 8.817e-05, 8.818e-05, 8.817e-05, 8.818e-05, 18.44550381], [1517231220000, 8.816e-05, 8.817e-05, 8.815e-05, 8.815e-05, 521.34905921], [1517231280000, 8.815e-05, 8.817e-05, 8.797e-05, 8.797e-05, 1595.25912392], [1517231400000, 8.797e-05, 8.797e-05, 8.797e-05, 8.797e-05, 640.0], [1517231460000, 8.797e-05, 8.797e-05, 8.797e-05, 8.797e-05, 1128.22326614], [1517231580000, 8.829e-05, 8.829e-05, 8.829e-05, 8.829e-05, 10.0], [1517231640000, 8.797e-05, 8.797e-05, 8.797e-05, 8.797e-05, 152.89141925], [1517231700000, 8.75e-05, 8.75e-05, 8.75e-05, 8.75e-05, 77.3278233], [1517231760000, 8.709e-05, 8.858e-05, 8.709e-05, 8.858e-05, 2354.84450327], [1517231940000, 8.751e-05, 8.751e-05, 8.751e-05, 8.751e-05, 178.56248684], [1517232000000, 8.841e-05, 8.841e-05, 8.84e-05, 8.84e-05, 539.09590468], [1517232060000, 8.713e-05, 8.713e-05, 8.712e-05, 8.712e-05, 440.8191305], [1517232120000, 8.829e-05, 8.829e-05, 8.829e-05, 8.829e-05, 38.48503155], [1517232180000, 8.819e-05, 8.819e-05, 8.711e-05, 8.711e-05, 115.42602937], [1517232240000, 8.817e-05, 8.817e-05, 8.817e-05, 8.817e-05, 18.51523439], [1517232360000, 8.719e-05, 8.719e-05, 8.719e-05, 8.719e-05, 89.58436713], [1517232420000, 8.719e-05, 8.801e-05, 8.719e-05, 8.801e-05, 191.9151663], [1517232480000, 8.801e-05, 8.818e-05, 8.801e-05, 8.818e-05, 862.18413461], [1517232600000, 8.719e-05, 8.719e-05, 8.716e-05, 8.716e-05, 1434.25563287], [1517232660000, 8.71e-05, 8.716e-05, 8.71e-05, 8.716e-05, 1146.07352218], [1517232780000, 8.716e-05, 8.829e-05, 8.716e-05, 8.829e-05, 346.88067458], [1517232840000, 8.828e-05, 8.828e-05, 8.828e-05, 8.828e-05, 50.0], [1517232900000, 8.829e-05, 8.829e-05, 8.828e-05, 8.829e-05, 940.17276234], [1517233020000, 8.829e-05, 8.829e-05, 8.829e-05, 8.829e-05, 42.04625152], [1517233080000, 8.825e-05, 8.825e-05, 8.825e-05, 8.825e-05, 38.43504014], [1517233260000, 8.823e-05, 8.823e-05, 8.823e-05, 8.823e-05, 384.59485578], [1517233320000, 8.823e-05, 8.825e-05, 8.823e-05, 8.825e-05, 346.1364735], [1517233380000, 8.825e-05, 8.829e-05, 8.752e-05, 8.752e-05, 435.10657206], [1517233440000, 8.845e-05, 8.859e-05, 8.756e-05, 8.756e-05, 484.80706256], [1517233500000, 8.756e-05, 8.859e-05, 8.756e-05, 8.859e-05, 538.12145534], [1517233560000, 8.756e-05, 8.756e-05, 8.751e-05, 8.751e-05, 1041.0], [1517233680000, 8.761e-05, 8.762e-05, 8.752e-05, 8.752e-05, 604.47774826], [1517233740000, 8.859e-05, 8.859e-05, 8.859e-05, 8.859e-05, 95.77027372], [1517233800000, 8.859e-05, 8.859e-05, 8.752e-05, 8.856e-05, 233.51962352], [1517233860000, 8.854e-05, 8.856e-05, 8.752e-05, 8.752e-05, 113.22733594], [1517233920000, 8.855e-05, 8.855e-05, 8.708e-05, 8.715e-05, 7396.13917756], [1517233980000, 8.72e-05, 8.72e-05, 8.72e-05, 8.72e-05, 50.0], [1517234040000, 8.72e-05, 8.72e-05, 8.698e-05, 8.698e-05, 3000.0], [1517234100000, 8.8e-05, 8.8e-05, 8.79e-05, 8.79e-05, 77.81758314], [1517234160000, 8.8e-05, 8.8e-05, 8.799e-05, 8.8e-05, 528.59456684], [1517234220000, 8.715e-05, 8.715e-05, 8.715e-05, 8.715e-05, 40.0], [1517234280000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 410.36223616], [1517234340000, 8.799e-05, 8.801e-05, 8.799e-05, 8.801e-05, 117.51114661], [1517234520000, 8.801e-05, 8.801e-05, 8.652e-05, 8.653e-05, 4046.1544136], [1517234580000, 8.658e-05, 8.658e-05, 8.658e-05, 8.658e-05, 219.76361915], [1517234640000, 8.781e-05, 8.84e-05, 8.781e-05, 8.795e-05, 4206.33273944], [1517234760000, 8.838e-05, 8.838e-05, 8.838e-05, 8.838e-05, 153.93144731], [1517234820000, 8.838e-05, 8.838e-05, 8.838e-05, 8.838e-05, 189.64662167], [1517234880000, 8.795e-05, 8.795e-05, 8.795e-05, 8.795e-05, 288.65027133], [1517234940000, 8.795e-05, 8.838e-05, 8.795e-05, 8.838e-05, 231.09135844], [1517235000000, 8.838e-05, 8.838e-05, 8.838e-05, 8.838e-05, 382.32869633], [1517235060000, 8.838e-05, 8.838e-05, 8.715e-05, 8.795e-05, 336.69084651], [1517235120000, 8.795e-05, 8.795e-05, 8.795e-05, 8.795e-05, 604.82797227], [1517235180000, 8.795e-05, 8.795e-05, 8.795e-05, 8.795e-05, 949.68478363], [1517235240000, 8.838e-05, 8.838e-05, 8.73e-05, 8.73e-05, 313.86380897], [1517235300000, 8.73e-05, 8.73e-05, 8.73e-05, 8.73e-05, 15.12878692], [1517235420000, 8.795e-05, 8.8e-05, 8.795e-05, 8.8e-05, 257.17558056], [1517235540000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 162.13151927], [1517235660000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 26.80777977], [1517235780000, 8.82e-05, 8.82e-05, 8.8e-05, 8.82e-05, 2065.69129954], [1517235840000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 1893.84730754], [1517235900000, 8.82e-05, 8.834e-05, 8.82e-05, 8.834e-05, 841.67085001], [1517235960000, 8.834e-05, 8.834e-05, 8.801e-05, 8.801e-05, 3920.72422984], [1517236020000, 8.802e-05, 8.82e-05, 8.802e-05, 8.82e-05, 732.13658823], [1517236080000, 8.819e-05, 8.82e-05, 8.819e-05, 8.819e-05, 930.35640915], [1517236200000, 8.819e-05, 8.819e-05, 8.819e-05, 8.819e-05, 38.85261781], [1517236260000, 8.819e-05, 8.819e-05, 8.819e-05, 8.819e-05, 24.0], [1517236380000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 6004.9543358], [1517236440000, 8.819e-05, 8.835e-05, 8.819e-05, 8.835e-05, 3437.3271989], [1517236500000, 8.835e-05, 8.835e-05, 8.819e-05, 8.819e-05, 2943.01548525], [1517236560000, 8.819e-05, 8.835e-05, 8.819e-05, 8.835e-05, 2912.14739359], [1517236620000, 8.835e-05, 8.835e-05, 8.819e-05, 8.835e-05, 2310.68427767], [1517236680000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 35.02596774], [1517236740000, 8.819e-05, 8.819e-05, 8.819e-05, 8.819e-05, 6.95190951], [1517236800000, 8.819e-05, 8.835e-05, 8.819e-05, 8.835e-05, 86.12100299], [1517236860000, 8.835e-05, 8.835e-05, 8.835e-05, 8.835e-05, 40.07330645], [1517236920000, 8.834e-05, 8.835e-05, 8.819e-05, 8.835e-05, 4639.57248557], [1517237040000, 8.835e-05, 8.85e-05, 8.835e-05, 8.85e-05, 9359.85599147], [1517237100000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 712.0], [1517237160000, 8.85e-05, 8.859e-05, 8.85e-05, 8.859e-05, 1256.26183741], [1517237280000, 8.864e-05, 8.864e-05, 8.864e-05, 8.864e-05, 9.8185956], [1517237340000, 8.864e-05, 8.873e-05, 8.864e-05, 8.873e-05, 897.97681312], [1517237400000, 8.873e-05, 8.878e-05, 8.873e-05, 8.873e-05, 1214.52670633], [1517237460000, 8.877e-05, 8.878e-05, 8.877e-05, 8.878e-05, 3195.98997493], [1517237520000, 8.873e-05, 8.878e-05, 8.819e-05, 8.878e-05, 4636.68440479], [1517237580000, 8.819e-05, 8.819e-05, 8.8e-05, 8.8e-05, 3099.90944918], [1517237640000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 150.0], [1517237700000, 8.878e-05, 8.878e-05, 8.878e-05, 8.878e-05, 665.93596615], [1517237760000, 8.878e-05, 8.878e-05, 8.878e-05, 8.878e-05, 180.13656603], [1517237820000, 8.878e-05, 8.878e-05, 8.86e-05, 8.86e-05, 515.39263873], [1517238000000, 8.878e-05, 8.878e-05, 8.878e-05, 8.878e-05, 75.44828956], [1517238060000, 8.878e-05, 8.878e-05, 8.878e-05, 8.878e-05, 150.89568963], [1517238180000, 8.878e-05, 8.879e-05, 8.878e-05, 8.879e-05, 5769.95405108], [1517238240000, 8.88e-05, 8.897e-05, 8.88e-05, 8.897e-05, 181.77644183], [1517238300000, 8.899e-05, 8.899e-05, 8.86e-05, 8.86e-05, 3077.0457895], [1517238360000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 124.28790054], [1517238420000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 44.36312441], [1517238600000, 8.813e-05, 8.855e-05, 8.813e-05, 8.855e-05, 1026.9431916], [1517238660000, 8.879e-05, 8.879e-05, 8.879e-05, 8.879e-05, 11.33529811], [1517238720000, 8.9e-05, 8.91e-05, 8.9e-05, 8.91e-05, 19489.72089619], [1517238780000, 8.91e-05, 8.91e-05, 8.909e-05, 8.91e-05, 367.57885194], [1517238840000, 8.91e-05, 8.91e-05, 8.909e-05, 8.909e-05, 198.41467857], [1517238900000, 8.91e-05, 8.91e-05, 8.91e-05, 8.91e-05, 367.53073788], [1517239080000, 8.91e-05, 8.91e-05, 8.909e-05, 8.909e-05, 1073.93724383], [1517239140000, 8.909e-05, 8.914e-05, 8.909e-05, 8.909e-05, 1431.50201725], [1517239200000, 8.909e-05, 8.909e-05, 8.909e-05, 8.909e-05, 71.27545552], [1517239260000, 8.914e-05, 8.914e-05, 8.914e-05, 8.914e-05, 464.62749827], [1517239380000, 8.916e-05, 8.92e-05, 8.916e-05, 8.92e-05, 240.69319229], [1517239440000, 8.92e-05, 8.999e-05, 8.919e-05, 8.999e-05, 17727.41018633], [1517239500000, 8.999e-05, 9e-05, 8.914e-05, 8.915e-05, 31876.37447333], [1517239620000, 8.916e-05, 8.919e-05, 8.909e-05, 8.919e-05, 5883.81088258], [1517239680000, 8.915e-05, 8.915e-05, 8.915e-05, 8.915e-05, 378.17112914], [1517239740000, 8.919e-05, 8.919e-05, 8.919e-05, 8.919e-05, 36.16538928], [1517239800000, 8.919e-05, 8.997e-05, 8.919e-05, 8.997e-05, 36.30533345], [1517239860000, 8.915e-05, 8.915e-05, 8.909e-05, 8.909e-05, 12603.73904172], [1517239920000, 8.909e-05, 8.909e-05, 8.903e-05, 8.903e-05, 2268.14947735], [1517239980000, 8.903e-05, 8.903e-05, 8.903e-05, 8.903e-05, 515.0], [1517240040000, 8.903e-05, 8.903e-05, 8.901e-05, 8.901e-05, 740.54475931], [1517240100000, 8.866e-05, 8.991e-05, 8.866e-05, 8.955e-05, 27931.72248343], [1517240160000, 8.99e-05, 8.99e-05, 8.99e-05, 8.99e-05, 23.16818576], [1517240220000, 8.951e-05, 8.97e-05, 8.865e-05, 8.951e-05, 746.49372349], [1517240460000, 8.929e-05, 8.93e-05, 8.929e-05, 8.929e-05, 483.25211853], [1517240520000, 8.929e-05, 8.929e-05, 8.929e-05, 8.929e-05, 449.04299922], [1517240580000, 8.871e-05, 8.871e-05, 8.871e-05, 8.871e-05, 218.82121477], [1517240640000, 8.928e-05, 8.928e-05, 8.928e-05, 8.928e-05, 1059.21673089], [1517240700000, 8.928e-05, 8.929e-05, 8.873e-05, 8.873e-05, 1902.96052591], [1517240760000, 8.873e-05, 8.929e-05, 8.873e-05, 8.873e-05, 1278.28766134], [1517240820000, 8.874e-05, 8.874e-05, 8.874e-05, 8.874e-05, 177.0], [1517240940000, 8.924e-05, 8.924e-05, 8.924e-05, 8.924e-05, 18.88184175], [1517241060000, 8.922e-05, 8.928e-05, 8.922e-05, 8.922e-05, 1154.35924603], [1517241120000, 8.922e-05, 8.951e-05, 8.922e-05, 8.951e-05, 4634.54597647], [1517241180000, 8.973e-05, 8.98e-05, 8.928e-05, 8.928e-05, 1078.52614269], [1517241300000, 8.89e-05, 8.89e-05, 8.877e-05, 8.89e-05, 1217.85742444], [1517241360000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 34.50053714], [1517241420000, 8.89e-05, 8.89e-05, 8.89e-05, 8.89e-05, 3046.01199417], [1517241480000, 8.951e-05, 8.951e-05, 8.878e-05, 8.878e-05, 927.36617758], [1517241540000, 8.889e-05, 8.889e-05, 8.889e-05, 8.889e-05, 19.73007805], [1517241600000, 8.975e-05, 8.975e-05, 8.975e-05, 8.975e-05, 43.47510669], [1517241660000, 8.975e-05, 8.98e-05, 8.884e-05, 8.884e-05, 9083.7983431], [1517241720000, 8.879e-05, 8.879e-05, 8.879e-05, 8.879e-05, 199.16088913], [1517241900000, 8.91e-05, 8.91e-05, 8.91e-05, 8.91e-05, 20.997645], [1517241960000, 8.91e-05, 8.91e-05, 8.91e-05, 8.91e-05, 119.19902261], [1517242020000, 8.91e-05, 8.938e-05, 8.91e-05, 8.91e-05, 21689.51526012], [1517242080000, 8.883e-05, 8.883e-05, 8.829e-05, 8.829e-05, 19340.61577969], [1517242140000, 8.83e-05, 8.83e-05, 8.83e-05, 8.83e-05, 414.18159566], [1517242200000, 8.861e-05, 8.861e-05, 8.861e-05, 8.861e-05, 524.98398864], [1517242260000, 8.86e-05, 8.86e-05, 8.83e-05, 8.83e-05, 2423.18583244], [1517242320000, 8.861e-05, 8.91e-05, 8.861e-05, 8.91e-05, 748.83244734], [1517242560000, 8.908e-05, 8.908e-05, 8.908e-05, 8.908e-05, 214.98406499], [1517242620000, 8.908e-05, 8.908e-05, 8.908e-05, 8.908e-05, 1210.85087618], [1517242680000, 8.908e-05, 8.908e-05, 8.884e-05, 8.884e-05, 1022.61850732], [1517242740000, 8.89e-05, 8.909e-05, 8.89e-05, 8.909e-05, 5459.48063259], [1517242800000, 8.911e-05, 8.911e-05, 8.911e-05, 8.911e-05, 7329.86501687], [1517242860000, 8.834e-05, 8.834e-05, 8.829e-05, 8.829e-05, 4178.60416923], [1517242980000, 8.88e-05, 8.88e-05, 8.88e-05, 8.88e-05, 648.4195755], [1517243100000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 11.32631102], [1517243160000, 8.913e-05, 8.918e-05, 8.913e-05, 8.913e-05, 2846.60707956], [1517243220000, 8.914e-05, 8.914e-05, 8.914e-05, 8.914e-05, 183.0], [1517243280000, 8.918e-05, 8.985e-05, 8.914e-05, 8.914e-05, 1575.33103258], [1517243340000, 8.914e-05, 8.914e-05, 8.914e-05, 8.914e-05, 235.44534314], [1517243400000, 8.914e-05, 8.914e-05, 8.913e-05, 8.913e-05, 3278.66847651], [1517243460000, 8.88e-05, 8.914e-05, 8.813e-05, 8.914e-05, 15105.09636823], [1517243640000, 8.914e-05, 8.96e-05, 8.914e-05, 8.96e-05, 113.71982386], [1517243700000, 8.96e-05, 8.96e-05, 8.96e-05, 8.96e-05, 200.0], [1517243760000, 8.912e-05, 8.956e-05, 8.912e-05, 8.956e-05, 758.21186726], [1517243820000, 8.955e-05, 8.955e-05, 8.955e-05, 8.955e-05, 80.24100299], [1517243880000, 8.864e-05, 8.955e-05, 8.864e-05, 8.955e-05, 391.26630554], [1517244000000, 8.943e-05, 8.943e-05, 8.943e-05, 8.943e-05, 169.61893745], [1517244120000, 8.937e-05, 8.94e-05, 8.9e-05, 8.9e-05, 647.99398997], [1517244180000, 8.91e-05, 8.91e-05, 8.9e-05, 8.9e-05, 589.67273728], [1517244300000, 8.9e-05, 8.9e-05, 8.9e-05, 8.9e-05, 700.87991741], [1517244360000, 8.9e-05, 8.9e-05, 8.86e-05, 8.86e-05, 606.47653412], [1517244420000, 8.92e-05, 8.96e-05, 8.92e-05, 8.96e-05, 405.47873561], [1517244540000, 8.86e-05, 8.86e-05, 8.86e-05, 8.86e-05, 77.20852652], [1517244600000, 8.856e-05, 8.856e-05, 8.852e-05, 8.852e-05, 293.99039316], [1517244660000, 8.852e-05, 8.854e-05, 8.851e-05, 8.854e-05, 790.00815682], [1517244720000, 8.86e-05, 8.86e-05, 8.851e-05, 8.851e-05, 1193.64699683], [1517244780000, 8.851e-05, 8.947e-05, 8.851e-05, 8.947e-05, 1663.83197512], [1517244960000, 8.946e-05, 8.946e-05, 8.851e-05, 8.851e-05, 904.17764801], [1517245020000, 8.854e-05, 8.854e-05, 8.854e-05, 8.854e-05, 305.0], [1517245080000, 8.854e-05, 8.961e-05, 8.854e-05, 8.961e-05, 1435.60567699], [1517245200000, 8.956e-05, 8.956e-05, 8.95e-05, 8.95e-05, 1013.01922726], [1517245260000, 8.948e-05, 8.948e-05, 8.948e-05, 8.948e-05, 405.16142251], [1517245320000, 8.857e-05, 8.857e-05, 8.857e-05, 8.857e-05, 142.05983389], [1517245440000, 8.946e-05, 8.946e-05, 8.946e-05, 8.946e-05, 31.29890453], [1517245560000, 8.868e-05, 8.943e-05, 8.867e-05, 8.943e-05, 894.88736529], [1517245680000, 8.94e-05, 8.94e-05, 8.94e-05, 8.94e-05, 32.76138723], [1517245800000, 8.937e-05, 8.989e-05, 8.937e-05, 8.989e-05, 11094.42776109], [1517245860000, 8.879e-05, 8.879e-05, 8.879e-05, 8.879e-05, 135.99324705], [1517246040000, 8.881e-05, 8.881e-05, 8.879e-05, 8.879e-05, 210.0], [1517246100000, 8.879e-05, 8.879e-05, 8.879e-05, 8.879e-05, 106.21097514], [1517246220000, 8.88e-05, 8.958e-05, 8.88e-05, 8.958e-05, 3309.08416899], [1517246280000, 8.956e-05, 8.959e-05, 8.92e-05, 8.959e-05, 3418.83699263], [1517246340000, 8.92e-05, 8.997e-05, 8.91e-05, 8.992e-05, 17157.60185336], [1517246400000, 8.992e-05, 8.992e-05, 8.959e-05, 8.992e-05, 9816.6880556], [1517246460000, 8.992e-05, 8.999e-05, 8.959e-05, 8.999e-05, 5384.87752917], [1517246520000, 8.999e-05, 9e-05, 8.918e-05, 8.998e-05, 12639.01094368], [1517246580000, 8.998e-05, 9.001e-05, 8.959e-05, 9.001e-05, 9381.81902938], [1517246640000, 8.996e-05, 9.02e-05, 8.959e-05, 8.978e-05, 13512.09049725], [1517246700000, 9.02e-05, 9.02e-05, 8.932e-05, 9.016e-05, 9080.29709241], [1517246760000, 8.992e-05, 9.015e-05, 8.934e-05, 9.011e-05, 12801.12882618], [1517246820000, 9.011e-05, 9.015e-05, 8.939e-05, 8.94e-05, 6317.68013948], [1517246880000, 9.013e-05, 9.02e-05, 9e-05, 9.007e-05, 3403.39106063], [1517246940000, 9.007e-05, 9.048e-05, 8.98e-05, 9.048e-05, 24029.97265212], [1517247000000, 8.959e-05, 9.046e-05, 8.943e-05, 9.045e-05, 4380.89796897], [1517247060000, 9.045e-05, 9.045e-05, 8.98e-05, 9.038e-05, 3387.80785586], [1517247120000, 9.038e-05, 9.038e-05, 9.006e-05, 9.037e-05, 1872.0], [1517247180000, 9.036e-05, 9.047e-05, 9.036e-05, 9.047e-05, 8261.50418923], [1517247240000, 9.047e-05, 9.061e-05, 9.041e-05, 9.041e-05, 5173.58598972], [1517247300000, 9.041e-05, 9.041e-05, 9.015e-05, 9.03e-05, 1248.74778504], [1517247360000, 9.03e-05, 9.03e-05, 9.015e-05, 9.015e-05, 1997.34066986], [1517247420000, 8.981e-05, 9.029e-05, 8.981e-05, 9.028e-05, 14514.96048479], [1517247480000, 9.027e-05, 9.047e-05, 9.027e-05, 9.047e-05, 1746.37334606], [1517247540000, 9.045e-05, 9.061e-05, 9.027e-05, 9.027e-05, 7508.6525293], [1517247600000, 9.015e-05, 9.06e-05, 9.015e-05, 9.06e-05, 214.78069275], [1517247660000, 9.061e-05, 9.09e-05, 9e-05, 9e-05, 4070.95632495], [1517247720000, 9.015e-05, 9.09e-05, 9.015e-05, 9.089e-05, 915.3237753], [1517247780000, 9.071e-05, 9.071e-05, 9.071e-05, 9.071e-05, 604.99367771], [1517247840000, 9.071e-05, 9.074e-05, 9e-05, 9e-05, 7117.41469632], [1517247900000, 9.074e-05, 9.074e-05, 9.074e-05, 9.074e-05, 21.64685051], [1517247960000, 9.074e-05, 9.089e-05, 9.001e-05, 9.001e-05, 1767.45463309], [1517248080000, 9.001e-05, 9.001e-05, 9.001e-05, 9.001e-05, 343.18947], [1517248200000, 9.086e-05, 9.09e-05, 9.001e-05, 9.001e-05, 7212.57666892], [1517248260000, 9.093e-05, 9.093e-05, 9.093e-05, 9.093e-05, 159.45223441], [1517248320000, 9.003e-05, 9.09e-05, 9e-05, 9e-05, 5983.23724623], [1517248440000, 9e-05, 9e-05, 9e-05, 9e-05, 150.0], [1517248500000, 9.086e-05, 9.096e-05, 9.004e-05, 9.096e-05, 4053.06412098], [1517248560000, 9.096e-05, 9.1e-05, 9.004e-05, 9.1e-05, 7140.09511657], [1517248620000, 9.1e-05, 9.119e-05, 9.086e-05, 9.119e-05, 5567.55297764], [1517248680000, 9.119e-05, 9.145e-05, 8.944e-05, 8.944e-05, 23318.61169312], [1517248740000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 424.48048603], [1517248800000, 8.97e-05, 9.086e-05, 8.97e-05, 9.077e-05, 933.57656803], [1517248860000, 9.067e-05, 9.072e-05, 9.066e-05, 9.066e-05, 11040.72695787], [1517248980000, 9.066e-05, 9.1e-05, 9.02e-05, 9.02e-05, 3850.3170031], [1517249100000, 9.099e-05, 9.099e-05, 9.028e-05, 9.099e-05, 4271.69790005], [1517249220000, 9.029e-05, 9.029e-05, 9.029e-05, 9.029e-05, 359.4141108], [1517249280000, 9.03e-05, 9.096e-05, 9.03e-05, 9.096e-05, 600.35108803], [1517249340000, 9.091e-05, 9.091e-05, 9.075e-05, 9.09e-05, 3586.27566185], [1517249400000, 9.08e-05, 9.09e-05, 9.08e-05, 9.09e-05, 1918.49040407], [1517249460000, 9.09e-05, 9.095e-05, 9.089e-05, 9.095e-05, 1831.34225286], [1517249520000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 221.89214], [1517249640000, 9.08e-05, 9.08e-05, 9.035e-05, 9.07e-05, 4154.39948912], [1517249820000, 9.093e-05, 9.093e-05, 9.093e-05, 9.093e-05, 5.5086458], [1517249880000, 9.093e-05, 9.093e-05, 9.07e-05, 9.07e-05, 620.33205767], [1517250000000, 9.071e-05, 9.091e-05, 9.071e-05, 9.091e-05, 231.5723828], [1517250060000, 9.091e-05, 9.091e-05, 9.073e-05, 9.09e-05, 2408.13759977], [1517250120000, 9.09e-05, 9.09e-05, 9.09e-05, 9.09e-05, 7.74666743], [1517250240000, 9.09e-05, 9.095e-05, 9.071e-05, 9.095e-05, 10768.95436835], [1517250300000, 9.095e-05, 9.095e-05, 9.095e-05, 9.095e-05, 148.3410878], [1517250360000, 9.095e-05, 9.145e-05, 9.095e-05, 9.145e-05, 3809.91349747], [1517250420000, 9.095e-05, 9.095e-05, 9.095e-05, 9.095e-05, 37.098122], [1517250480000, 9.089e-05, 9.095e-05, 9.089e-05, 9.095e-05, 86.0], [1517250540000, 9.072e-05, 9.072e-05, 9.071e-05, 9.071e-05, 6000.49199017], [1517250600000, 9.071e-05, 9.071e-05, 9.07e-05, 9.07e-05, 100.0], [1517250720000, 9.095e-05, 9.095e-05, 9.095e-05, 9.095e-05, 79.059338], [1517250780000, 9.07e-05, 9.07e-05, 9.07e-05, 9.07e-05, 245.51822766], [1517250840000, 9.07e-05, 9.07e-05, 9.07e-05, 9.07e-05, 834.6596209], [1517250960000, 9.02e-05, 9.034e-05, 9.02e-05, 9.034e-05, 366.49257834], [1517251020000, 9.038e-05, 9.07e-05, 9.034e-05, 9.07e-05, 500.34945831], [1517251080000, 9.069e-05, 9.095e-05, 9.041e-05, 9.041e-05, 1219.19747926], [1517251140000, 9.041e-05, 9.06e-05, 9.013e-05, 9.06e-05, 4820.06967347], [1517251200000, 9.05e-05, 9.05e-05, 9.05e-05, 9.05e-05, 564.0], [1517251260000, 9.06e-05, 9.06e-05, 9.013e-05, 9.041e-05, 2395.17802916], [1517251320000, 9.041e-05, 9.06e-05, 9.036e-05, 9.036e-05, 2877.2290697], [1517251380000, 9.036e-05, 9.058e-05, 9.036e-05, 9.056e-05, 1180.39882533], [1517251440000, 9.056e-05, 9.057e-05, 9.035e-05, 9.056e-05, 2010.09255632], [1517251500000, 9.05e-05, 9.057e-05, 9.05e-05, 9.057e-05, 1270.25104549], [1517251560000, 9.059e-05, 9.06e-05, 9.059e-05, 9.06e-05, 308.72566821], [1517251620000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 255.12082218], [1517251680000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 75.0], [1517251740000, 9.051e-05, 9.069e-05, 9.051e-05, 9.069e-05, 2103.24415354], [1517251800000, 9.051e-05, 9.069e-05, 9.051e-05, 9.069e-05, 291.26926], [1517251860000, 9.069e-05, 9.069e-05, 9.035e-05, 9.035e-05, 1829.90785923], [1517251920000, 9.035e-05, 9.035e-05, 9.035e-05, 9.035e-05, 225.47914318], [1517252040000, 9.051e-05, 9.065e-05, 9.051e-05, 9.065e-05, 79.359472], [1517252100000, 9.039e-05, 9.039e-05, 9.039e-05, 9.039e-05, 208.29465226], [1517252160000, 9.065e-05, 9.065e-05, 9.065e-05, 9.065e-05, 22.18745094], [1517252280000, 9.039e-05, 9.065e-05, 9e-05, 9.039e-05, 5319.44992211], [1517252340000, 9.056e-05, 9.056e-05, 9.056e-05, 9.056e-05, 377.44485959], [1517252400000, 9.061e-05, 9.064e-05, 9.055e-05, 9.056e-05, 910.0], [1517252460000, 9.065e-05, 9.065e-05, 9.056e-05, 9.056e-05, 779.01607979], [1517252520000, 9.056e-05, 9.065e-05, 9.036e-05, 9.036e-05, 1177.89621394], [1517252580000, 9.036e-05, 9.065e-05, 9.036e-05, 9.065e-05, 1599.64114705], [1517252640000, 9.054e-05, 9.065e-05, 9.054e-05, 9.065e-05, 955.93598746], [1517252700000, 9.065e-05, 9.069e-05, 9.065e-05, 9.069e-05, 1631.2288331], [1517252820000, 9.069e-05, 9.069e-05, 9.012e-05, 9.012e-05, 50.0], [1517252880000, 9.003e-05, 9.003e-05, 9.003e-05, 9.003e-05, 251.72927471], [1517253000000, 9.046e-05, 9.046e-05, 9.046e-05, 9.046e-05, 631.12731357], [1517253180000, 9.089e-05, 9.089e-05, 9.001e-05, 9.001e-05, 722.40665882], [1517253300000, 9.076e-05, 9.081e-05, 9.076e-05, 9.081e-05, 2044.0], [1517253420000, 9.079e-05, 9.079e-05, 9.078e-05, 9.079e-05, 1514.36731252], [1517253480000, 9.075e-05, 9.075e-05, 9.073e-05, 9.073e-05, 1320.0], [1517253540000, 9.072e-05, 9.073e-05, 9.07e-05, 9.072e-05, 3936.70535261], [1517253600000, 9.072e-05, 9.073e-05, 9e-05, 9.073e-05, 3595.25784263], [1517253660000, 9.071e-05, 9.071e-05, 9e-05, 9e-05, 2514.50457326], [1517253720000, 9e-05, 9.073e-05, 9e-05, 9.073e-05, 224.06015037], [1517253780000, 9.072e-05, 9.072e-05, 9e-05, 9e-05, 1902.99089034], [1517253900000, 9.073e-05, 9.073e-05, 9e-05, 9e-05, 496.79251051], [1517253960000, 9e-05, 9.073e-05, 9e-05, 9.073e-05, 606.06217128], [1517254020000, 9.07e-05, 9.096e-05, 9e-05, 9e-05, 9540.33433848], [1517254140000, 9.005e-05, 9.005e-05, 9.005e-05, 9.005e-05, 848.31740873], [1517254200000, 9.005e-05, 9.09e-05, 9.005e-05, 9.005e-05, 696.56559426], [1517254260000, 9.088e-05, 9.088e-05, 9.005e-05, 9.005e-05, 434.54725548], [1517254320000, 9.072e-05, 9.08e-05, 9.072e-05, 9.08e-05, 474.0], [1517254380000, 9.08e-05, 9.08e-05, 9.075e-05, 9.075e-05, 821.43562006], [1517254440000, 9.075e-05, 9.075e-05, 9.075e-05, 9.075e-05, 203.94067495], [1517254500000, 9.075e-05, 9.076e-05, 9.075e-05, 9.075e-05, 621.77310168], [1517254680000, 9.075e-05, 9.08e-05, 9.075e-05, 9.075e-05, 716.61163976], [1517254740000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 33.4145438], [1517254800000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 134.18961088], [1517254860000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 311.27866355], [1517254920000, 9.075e-05, 9.075e-05, 9.075e-05, 9.075e-05, 7620.28585179], [1517254980000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 200.0], [1517255040000, 9.08e-05, 9.08e-05, 9.075e-05, 9.075e-05, 225.63116075], [1517255100000, 9.08e-05, 9.08e-05, 9.079e-05, 9.08e-05, 491.17511709], [1517255220000, 9.08e-05, 9.1e-05, 9.08e-05, 9.1e-05, 471.84882344], [1517255280000, 9.08e-05, 9.096e-05, 9.08e-05, 9.096e-05, 876.11791112], [1517255340000, 9.096e-05, 9.096e-05, 9.096e-05, 9.096e-05, 163.61528961], [1517255460000, 9.096e-05, 9.096e-05, 9.096e-05, 9.096e-05, 691.52059385], [1517255520000, 9.096e-05, 9.096e-05, 9.096e-05, 9.096e-05, 66.87622752], [1517255580000, 9.1e-05, 9.1e-05, 9.096e-05, 9.096e-05, 381.09432535], [1517255700000, 9.099e-05, 9.147e-05, 9.099e-05, 9.147e-05, 1094.62913946], [1517255760000, 9.096e-05, 9.149e-05, 9.096e-05, 9.149e-05, 1500.96671642], [1517255880000, 9.096e-05, 9.096e-05, 9.081e-05, 9.095e-05, 1175.64394308], [1517255940000, 9.08e-05, 9.082e-05, 9.08e-05, 9.082e-05, 1038.7848], [1517256000000, 9.081e-05, 9.081e-05, 9.081e-05, 9.081e-05, 57.07762557], [1517256060000, 9.081e-05, 9.081e-05, 9.08e-05, 9.08e-05, 881.52977079], [1517256120000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 461.18557047], [1517256180000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 50.0], [1517256240000, 9.092e-05, 9.092e-05, 9.092e-05, 9.092e-05, 37.2402079], [1517256300000, 9.092e-05, 9.092e-05, 9.092e-05, 9.092e-05, 168.93790338], [1517256360000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 173.33576801], [1517256420000, 9.092e-05, 9.092e-05, 9.092e-05, 9.092e-05, 14.88554393], [1517256480000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 200.10869622], [1517256540000, 9.092e-05, 9.12e-05, 9.092e-05, 9.12e-05, 737.5420456], [1517256660000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 851.42738365], [1517256780000, 9.12e-05, 9.12e-05, 9.12e-05, 9.12e-05, 923.925625], [1517256840000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 36.52367579], [1517256900000, 9.117e-05, 9.149e-05, 9.08e-05, 9.149e-05, 2006.7094122], [1517257020000, 9.149e-05, 9.149e-05, 9.08e-05, 9.08e-05, 192.9465264], [1517257080000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 1227.41833638], [1517257140000, 9.08e-05, 9.08e-05, 9.075e-05, 9.075e-05, 1061.70310656], [1517257200000, 9.075e-05, 9.075e-05, 9.075e-05, 9.075e-05, 8998.14739126], [1517257260000, 9.037e-05, 9.15e-05, 9.037e-05, 9.149e-05, 3298.46465396], [1517257320000, 9.075e-05, 9.149e-05, 9.075e-05, 9.149e-05, 526.45780932], [1517257380000, 9.06e-05, 9.06e-05, 9.039e-05, 9.04e-05, 833.19243334], [1517257440000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 18.6660519], [1517257500000, 9.06e-05, 9.148e-05, 9.06e-05, 9.147e-05, 1467.12917187], [1517257560000, 9.147e-05, 9.15e-05, 9.147e-05, 9.15e-05, 807.71942591], [1517257620000, 9.061e-05, 9.061e-05, 9.06e-05, 9.06e-05, 40.0], [1517257680000, 9.06e-05, 9.06e-05, 9.025e-05, 9.025e-05, 2000.0], [1517257740000, 9.025e-05, 9.025e-05, 9.023e-05, 9.023e-05, 2818.84862164], [1517257800000, 9.112e-05, 9.112e-05, 9.112e-05, 9.112e-05, 48.08654205], [1517257860000, 9.106e-05, 9.106e-05, 9.04e-05, 9.04e-05, 140.60546731], [1517257920000, 9.035e-05, 9.035e-05, 9.035e-05, 9.035e-05, 20.0], [1517257980000, 9.035e-05, 9.104e-05, 9.035e-05, 9.104e-05, 1980.56467574], [1517258040000, 9.094e-05, 9.094e-05, 9.094e-05, 9.094e-05, 37.1831108], [1517258160000, 9.064e-05, 9.064e-05, 9.035e-05, 9.035e-05, 175.65744073], [1517258220000, 9.064e-05, 9.089e-05, 9.035e-05, 9.035e-05, 913.79725332], [1517258280000, 9.083e-05, 9.083e-05, 9.035e-05, 9.035e-05, 1280.41760221], [1517258340000, 9.035e-05, 9.068e-05, 9.035e-05, 9.068e-05, 267.44673194], [1517258460000, 9.054e-05, 9.058e-05, 9.054e-05, 9.058e-05, 583.0], [1517258520000, 9.038e-05, 9.067e-05, 9.037e-05, 9.067e-05, 1130.39217946], [1517258580000, 9.037e-05, 9.037e-05, 9.037e-05, 9.037e-05, 80.77702195], [1517258640000, 9.038e-05, 9.109e-05, 9.038e-05, 9.109e-05, 3820.87590007], [1517258700000, 9.038e-05, 9.038e-05, 9.037e-05, 9.037e-05, 1194.87415547], [1517258820000, 9.037e-05, 9.092e-05, 9.035e-05, 9.092e-05, 851.50101274], [1517258880000, 9.094e-05, 9.094e-05, 9.094e-05, 9.094e-05, 148.66980212], [1517258940000, 9.094e-05, 9.094e-05, 9.025e-05, 9.025e-05, 423.18503048], [1517259120000, 9.024e-05, 9.094e-05, 9.024e-05, 9.094e-05, 700.0], [1517259180000, 9.03e-05, 9.086e-05, 9.03e-05, 9.086e-05, 148.90501587], [1517259240000, 9.03e-05, 9.03e-05, 9.022e-05, 9.025e-05, 9438.09792196], [1517259300000, 9.03e-05, 9.031e-05, 9.03e-05, 9.031e-05, 527.26539873], [1517259360000, 9.031e-05, 9.08e-05, 9.03e-05, 9.08e-05, 852.57233691], [1517259420000, 9.086e-05, 9.086e-05, 9.086e-05, 9.086e-05, 796.50486992], [1517259480000, 9.085e-05, 9.085e-05, 9.085e-05, 9.085e-05, 492.76634186], [1517259540000, 9.03e-05, 9.085e-05, 9.03e-05, 9.085e-05, 298.59532152], [1517259660000, 9.085e-05, 9.085e-05, 9.085e-05, 9.085e-05, 10.03100299], [1517259780000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 36.88678608], [1517259840000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 7.445157], [1517259960000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 166.27978769], [1517260020000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 297.75589253], [1517260080000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 97.51572932], [1517260140000, 9.031e-05, 9.031e-05, 9.031e-05, 9.031e-05, 33.30195992], [1517260200000, 9.084e-05, 9.084e-05, 9.084e-05, 9.084e-05, 37.25345802], [1517260260000, 9.084e-05, 9.084e-05, 9.031e-05, 9.031e-05, 201.54143179], [1517260320000, 9.031e-05, 9.031e-05, 9.031e-05, 9.031e-05, 11.22839041], [1517260380000, 9.08e-05, 9.08e-05, 9.08e-05, 9.08e-05, 27.75776346], [1517260440000, 9.031e-05, 9.075e-05, 9.008e-05, 9.075e-05, 1438.64364766], [1517260500000, 9.07e-05, 9.07e-05, 9.007e-05, 9.007e-05, 146.86232111], [1517260620000, 9.028e-05, 9.028e-05, 9.028e-05, 9.028e-05, 572.0], [1517260680000, 9.028e-05, 9.078e-05, 9.028e-05, 9.078e-05, 1631.73141963], [1517260740000, 9.077e-05, 9.077e-05, 9.077e-05, 9.077e-05, 40.40776024], [1517260800000, 9.03e-05, 9.03e-05, 9.03e-05, 9.03e-05, 634.14269212], [1517260860000, 9.03e-05, 9.078e-05, 9.03e-05, 9.078e-05, 869.94360719], [1517260920000, 9.03e-05, 9.036e-05, 9.03e-05, 9.036e-05, 92.0], [1517260980000, 9.041e-05, 9.079e-05, 9.041e-05, 9.079e-05, 2946.42634483], [1517261040000, 9.03e-05, 9.079e-05, 9.03e-05, 9.079e-05, 288.65013326], [1517261160000, 9.079e-05, 9.079e-05, 9.03e-05, 9.05e-05, 1526.60526617], [1517261220000, 9.049e-05, 9.05e-05, 9.049e-05, 9.05e-05, 1385.0], [1517261400000, 9.05e-05, 9.078e-05, 9.038e-05, 9.078e-05, 1529.93479509], [1517261460000, 9.078e-05, 9.078e-05, 9.077e-05, 9.077e-05, 815.15549511], [1517261520000, 9.038e-05, 9.038e-05, 9.007e-05, 9.007e-05, 5200.0], [1517261640000, 9.075e-05, 9.075e-05, 9.048e-05, 9.048e-05, 932.48515664], [1517261700000, 9.074e-05, 9.075e-05, 9e-05, 9.048e-05, 15429.63735885], [1517261760000, 9.004e-05, 9.004e-05, 9.004e-05, 9.004e-05, 65.65964908], [1517261820000, 9.071e-05, 9.071e-05, 9.028e-05, 9.066e-05, 31.54382528], [1517261940000, 9.03e-05, 9.05e-05, 9.03e-05, 9.05e-05, 2559.02647949], [1517262000000, 9.05e-05, 9.05e-05, 9.05e-05, 9.05e-05, 1999.97352051], [1517262060000, 9.03e-05, 9.03e-05, 9.03e-05, 9.03e-05, 64.94140625], [1517262120000, 9.05e-05, 9.05e-05, 9.05e-05, 9.05e-05, 311.0], [1517262180000, 9.05e-05, 9.069e-05, 9.05e-05, 9.069e-05, 765.35003975], [1517262240000, 9.022e-05, 9.022e-05, 8.999e-05, 8.999e-05, 2000.0], [1517262360000, 9.068e-05, 9.068e-05, 9.06e-05, 9.06e-05, 1084.46028238], [1517262420000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 23.28039487], [1517262480000, 9.05e-05, 9.051e-05, 9.05e-05, 9.051e-05, 685.88712486], [1517262540000, 9.01e-05, 9.059e-05, 9.01e-05, 9.059e-05, 282.09521482], [1517262600000, 9.059e-05, 9.059e-05, 9.059e-05, 9.059e-05, 13.02167485], [1517262660000, 9.059e-05, 9.059e-05, 9.059e-05, 9.059e-05, 114.49558546], [1517262720000, 9.031e-05, 9.058e-05, 9.031e-05, 9.031e-05, 144.73377648], [1517262780000, 9.055e-05, 9.055e-05, 9.031e-05, 9.031e-05, 463.48739811], [1517262840000, 9.031e-05, 9.031e-05, 9.031e-05, 9.031e-05, 446.94241293], [1517262900000, 9.012e-05, 9.05e-05, 8.971e-05, 9.05e-05, 1340.33687472], [1517262960000, 9.05e-05, 9.06e-05, 8.971e-05, 9.001e-05, 2691.68776199], [1517263080000, 9.001e-05, 9.001e-05, 8.971e-05, 8.971e-05, 759.60027737], [1517263140000, 8.971e-05, 8.971e-05, 8.971e-05, 8.971e-05, 35.177877], [1517263200000, 9.05e-05, 9.069e-05, 9.05e-05, 9.069e-05, 7523.69271011], [1517263260000, 9.069e-05, 9.069e-05, 9.023e-05, 9.068e-05, 1156.23547161], [1517263320000, 9.067e-05, 9.068e-05, 9e-05, 9.068e-05, 2961.89781033], [1517263380000, 9e-05, 9.066e-05, 9e-05, 9.066e-05, 1022.95359124], [1517263440000, 9.06e-05, 9.062e-05, 9.058e-05, 9.062e-05, 4167.70114691], [1517263500000, 9.026e-05, 9.062e-05, 9.026e-05, 9.06e-05, 2080.30387011], [1517263560000, 9e-05, 9e-05, 9e-05, 9e-05, 186.58149372], [1517263620000, 9.06e-05, 9.06e-05, 9.06e-05, 9.06e-05, 118.94952444], [1517263680000, 9.06e-05, 9.06e-05, 9.059e-05, 9.059e-05, 557.684165], [1517263740000, 9.001e-05, 9.06e-05, 9.001e-05, 9.06e-05, 1120.55532319], [1517263800000, 9.05e-05, 9.068e-05, 9.05e-05, 9.068e-05, 289.51766769], [1517263860000, 9.068e-05, 9.068e-05, 9e-05, 9.068e-05, 2380.40537879], [1517263920000, 9.055e-05, 9.055e-05, 9.001e-05, 9.001e-05, 10190.0], [1517263980000, 9.063e-05, 9.065e-05, 9.001e-05, 9.064e-05, 1672.0], [1517264040000, 9.022e-05, 9.022e-05, 9.022e-05, 9.022e-05, 111.38888889], [1517264100000, 9.022e-05, 9.022e-05, 9.022e-05, 9.022e-05, 1000.0], [1517264160000, 9.064e-05, 9.064e-05, 9.063e-05, 9.064e-05, 1466.31987706], [1517264220000, 9.064e-05, 9.064e-05, 9.064e-05, 9.064e-05, 317.37804382], [1517264280000, 9.064e-05, 9.068e-05, 9.064e-05, 9.068e-05, 1094.52465439], [1517264340000, 9.064e-05, 9.064e-05, 9.064e-05, 9.064e-05, 442.42308237], [1517264400000, 9.064e-05, 9.064e-05, 9.064e-05, 9.064e-05, 770.35525154], [1517264460000, 9.036e-05, 9.036e-05, 9.036e-05, 9.036e-05, 22.85838438], [1517264520000, 9.036e-05, 9.063e-05, 9.036e-05, 9.063e-05, 1905.65946653], [1517264580000, 9.062e-05, 9.062e-05, 8.95e-05, 8.95e-05, 4617.94059923], [1517264640000, 8.951e-05, 9.059e-05, 8.907e-05, 9.051e-05, 5661.80718181], [1517264700000, 9.051e-05, 9.051e-05, 8.938e-05, 8.938e-05, 1681.2798225], [1517264760000, 9.04e-05, 9.04e-05, 9.04e-05, 9.04e-05, 150.0], [1517264820000, 9.04e-05, 9.047e-05, 8.941e-05, 9.047e-05, 339.79860092], [1517264880000, 9.046e-05, 9.046e-05, 9.046e-05, 9.046e-05, 17.39581485], [1517264940000, 8.979e-05, 9.045e-05, 8.907e-05, 9.045e-05, 4500.0], [1517265000000, 9.034e-05, 9.043e-05, 8.975e-05, 9.035e-05, 447.86972735], [1517265060000, 8.95e-05, 9.029e-05, 8.907e-05, 9.029e-05, 4356.09300716], [1517265120000, 8.973e-05, 8.973e-05, 8.973e-05, 8.973e-05, 6577.15349084], [1517265180000, 8.973e-05, 8.973e-05, 8.973e-05, 8.973e-05, 2596.3288142], [1517265240000, 8.973e-05, 9.045e-05, 8.973e-05, 9.045e-05, 5328.29445074], [1517265300000, 9.044e-05, 9.046e-05, 8.912e-05, 9.033e-05, 1142.93528494], [1517265420000, 9.035e-05, 9.046e-05, 9.033e-05, 9.033e-05, 2836.23731176], [1517265480000, 9.033e-05, 9.033e-05, 9.033e-05, 9.033e-05, 194.84113804], [1517265540000, 8.97e-05, 9.033e-05, 8.97e-05, 9.033e-05, 215.99780687], [1517265600000, 9.041e-05, 9.046e-05, 8.949e-05, 9.041e-05, 3770.17462244], [1517265660000, 9.04e-05, 9.041e-05, 9.04e-05, 9.041e-05, 1898.27091379], [1517265720000, 8.96e-05, 9.038e-05, 8.96e-05, 9.038e-05, 820.5048425], [1517265840000, 9.038e-05, 9.04e-05, 9.038e-05, 9.04e-05, 568.44602157], [1517265900000, 9.039e-05, 9.04e-05, 8.95e-05, 8.95e-05, 1239.8106312], [1517265960000, 9.009e-05, 9.009e-05, 9.009e-05, 9.009e-05, 222.0], [1517266020000, 8.961e-05, 9.041e-05, 8.961e-05, 9.04e-05, 4064.58101555], [1517266080000, 9.04e-05, 9.046e-05, 9.04e-05, 9.046e-05, 844.99893623], [1517266140000, 9.041e-05, 9.041e-05, 9.041e-05, 9.041e-05, 150.0], [1517266200000, 9.046e-05, 9.077e-05, 9.041e-05, 9.041e-05, 7917.25257337], [1517266320000, 9.042e-05, 9.042e-05, 9.042e-05, 9.042e-05, 2441.78738473], [1517266380000, 9.077e-05, 9.077e-05, 9.072e-05, 9.072e-05, 810.63178454], [1517266440000, 9.072e-05, 9.077e-05, 9.072e-05, 9.072e-05, 3131.50452091], [1517266500000, 9.072e-05, 9.077e-05, 9.072e-05, 9.077e-05, 370.00580623], [1517266560000, 9.077e-05, 9.077e-05, 9.077e-05, 9.077e-05, 751.27464508], [1517266620000, 9.03e-05, 9.077e-05, 9.03e-05, 9.077e-05, 150.8343929], [1517266680000, 9.077e-05, 9.077e-05, 9.077e-05, 9.077e-05, 9065.15556528], [1517266740000, 9.077e-05, 9.078e-05, 9.04e-05, 9.07e-05, 2113.82414035], [1517266800000, 9.07e-05, 9.07e-05, 9.07e-05, 9.07e-05, 669.07380491], [1517266860000, 9.07e-05, 9.07e-05, 9.057e-05, 9.07e-05, 1810.12682571], [1517266920000, 9.057e-05, 9.07e-05, 9.057e-05, 9.07e-05, 1468.72153026], [1517266980000, 9.07e-05, 9.07e-05, 9.057e-05, 9.057e-05, 6422.60663137], [1517267040000, 9.07e-05, 9.07e-05, 9.07e-05, 9.07e-05, 738.35692035], [1517267160000, 9.057e-05, 9.057e-05, 9.057e-05, 9.057e-05, 63.03747723], [1517267220000, 9.057e-05, 9.057e-05, 9.057e-05, 9.057e-05, 4142.24106293], [1517267340000, 9.057e-05, 9.058e-05, 9.057e-05, 9.057e-05, 4206.77289231], [1517267400000, 9.057e-05, 9.07e-05, 8.951e-05, 9.07e-05, 2405.96286209], [1517267580000, 9.07e-05, 9.07e-05, 9.07e-05, 9.07e-05, 48.54785878], [1517267700000, 8.98e-05, 8.98e-05, 8.98e-05, 8.98e-05, 25.20847928], [1517267760000, 8.98e-05, 8.98e-05, 8.98e-05, 8.98e-05, 372.89820507], [1517267820000, 9.068e-05, 9.068e-05, 9.068e-05, 9.068e-05, 187.59657761], [1517267880000, 9.068e-05, 9.07e-05, 9.068e-05, 9.07e-05, 3965.32641526], [1517267940000, 9.07e-05, 9.09e-05, 8.981e-05, 8.981e-05, 6190.12198728], [1517268000000, 8.981e-05, 8.981e-05, 8.981e-05, 8.981e-05, 3983.78388186], [1517268060000, 9.09e-05, 9.09e-05, 9.09e-05, 9.09e-05, 37.42967208], [1517268120000, 9.09e-05, 9.09e-05, 8.976e-05, 8.976e-05, 4422.38540738], [1517268180000, 8.976e-05, 8.976e-05, 8.976e-05, 8.976e-05, 2298.67943802], [1517268300000, 8.982e-05, 8.982e-05, 8.98e-05, 8.98e-05, 612.67955206], [1517268360000, 8.976e-05, 9.077e-05, 8.96e-05, 9.077e-05, 3736.72941304], [1517268420000, 8.959e-05, 8.959e-05, 8.959e-05, 8.959e-05, 102.84205546], [1517268480000, 8.959e-05, 8.959e-05, 8.927e-05, 8.927e-05, 1374.26437837], [1517268540000, 8.959e-05, 9.032e-05, 8.93e-05, 8.93e-05, 489.68137374], [1517268600000, 8.934e-05, 9.02e-05, 8.934e-05, 9.02e-05, 976.27075931], [1517268660000, 9.02e-05, 9.025e-05, 9.015e-05, 9.015e-05, 508.02376964], [1517268720000, 9.015e-05, 9.015e-05, 8.919e-05, 8.919e-05, 290.20068212], [1517268780000, 8.93e-05, 8.93e-05, 8.93e-05, 8.93e-05, 2033.31775814], [1517268840000, 8.932e-05, 8.993e-05, 8.932e-05, 8.993e-05, 162.76108651], [1517268900000, 9.015e-05, 9.025e-05, 8.935e-05, 8.935e-05, 804.95641513], [1517268960000, 9.021e-05, 9.021e-05, 9.021e-05, 9.021e-05, 2021.10365227], [1517269020000, 9.021e-05, 9.021e-05, 9.021e-05, 9.021e-05, 353.44480394], [1517269200000, 9.021e-05, 9.021e-05, 8.915e-05, 9.021e-05, 2567.92154896], [1517269260000, 8.925e-05, 8.925e-05, 8.909e-05, 8.909e-05, 748.24798181], [1517269320000, 9.015e-05, 9.015e-05, 9.015e-05, 9.015e-05, 25.076003], [1517269440000, 9.011e-05, 9.021e-05, 9.011e-05, 9.021e-05, 13455.26423886], [1517269500000, 8.968e-05, 8.968e-05, 8.91e-05, 8.912e-05, 23047.87688079], [1517269560000, 8.915e-05, 9.013e-05, 8.915e-05, 8.919e-05, 442.79589602], [1517269620000, 9.011e-05, 9.011e-05, 8.923e-05, 8.923e-05, 427.68470307], [1517269680000, 8.934e-05, 8.934e-05, 8.907e-05, 8.907e-05, 2104.58213905], [1517269740000, 8.923e-05, 9.019e-05, 8.917e-05, 9.019e-05, 1934.0407966], [1517269800000, 9.019e-05, 9.019e-05, 9.019e-05, 9.019e-05, 12.196474], [1517270100000, 8.92e-05, 8.92e-05, 8.918e-05, 8.918e-05, 801.07473468], [1517270160000, 8.992e-05, 8.993e-05, 8.907e-05, 8.907e-05, 1055.65694812], [1517270340000, 8.909e-05, 8.99e-05, 8.906e-05, 8.985e-05, 4112.72830061], [1517270400000, 8.985e-05, 8.985e-05, 8.906e-05, 8.906e-05, 660.81242446], [1517270460000, 8.933e-05, 8.96e-05, 8.905e-05, 8.905e-05, 16824.36752163], [1517270520000, 8.903e-05, 8.985e-05, 8.9e-05, 8.9e-05, 2617.37857896], [1517270580000, 8.899e-05, 8.899e-05, 8.872e-05, 8.872e-05, 5736.91417197], [1517270640000, 8.872e-05, 8.872e-05, 8.871e-05, 8.872e-05, 4771.08924827], [1517270700000, 8.872e-05, 8.872e-05, 8.87e-05, 8.87e-05, 1212.53178442], [1517270760000, 8.87e-05, 8.87e-05, 8.87e-05, 8.87e-05, 6602.47255533], [1517270820000, 8.867e-05, 8.892e-05, 8.867e-05, 8.892e-05, 9713.69373406], [1517270880000, 8.953e-05, 8.953e-05, 8.953e-05, 8.953e-05, 153.5543938], [1517270940000, 8.953e-05, 8.953e-05, 8.85e-05, 8.865e-05, 4933.35285102], [1517271000000, 8.865e-05, 8.865e-05, 8.85e-05, 8.85e-05, 324.78621844], [1517271060000, 8.865e-05, 8.865e-05, 8.85e-05, 8.865e-05, 1861.81958707], [1517271120000, 8.865e-05, 8.865e-05, 8.865e-05, 8.865e-05, 139.85657567], [1517271180000, 8.865e-05, 8.865e-05, 8.85e-05, 8.865e-05, 4161.49532106], [1517271240000, 8.892e-05, 8.952e-05, 8.892e-05, 8.952e-05, 1607.23408674], [1517271300000, 8.892e-05, 8.952e-05, 8.892e-05, 8.952e-05, 1739.82252087], [1517271360000, 8.951e-05, 8.951e-05, 8.951e-05, 8.951e-05, 1333.90752341], [1517271420000, 8.908e-05, 8.908e-05, 8.908e-05, 8.908e-05, 409.26865036], [1517271480000, 8.95e-05, 8.95e-05, 8.95e-05, 8.95e-05, 535.90219136], [1517271540000, 8.908e-05, 8.908e-05, 8.878e-05, 8.878e-05, 1082.37787635], [1517271600000, 8.879e-05, 8.949e-05, 8.879e-05, 8.949e-05, 955.43412422], [1517271660000, 8.948e-05, 8.948e-05, 8.948e-05, 8.948e-05, 15.21628866], [1517271720000, 8.947e-05, 8.948e-05, 8.946e-05, 8.948e-05, 1606.99553084], [1517271840000, 8.946e-05, 8.946e-05, 8.946e-05, 8.946e-05, 95.0], [1517271900000, 8.943e-05, 8.943e-05, 8.877e-05, 8.877e-05, 3298.40696374], [1517271960000, 8.86e-05, 8.94e-05, 8.833e-05, 8.94e-05, 18738.94655992], [1517272020000, 8.838e-05, 8.838e-05, 8.838e-05, 8.838e-05, 117.48764422], [1517272080000, 8.838e-05, 8.838e-05, 8.836e-05, 8.836e-05, 57.14848254], [1517272140000, 8.93e-05, 8.93e-05, 8.929e-05, 8.929e-05, 48.95255541], [1517272200000, 8.856e-05, 8.936e-05, 8.838e-05, 8.933e-05, 2033.52119042], [1517272260000, 8.933e-05, 8.934e-05, 8.839e-05, 8.839e-05, 2413.67400857], [1517272320000, 8.933e-05, 8.933e-05, 8.933e-05, 8.933e-05, 132.07969554], [1517272440000, 8.93e-05, 8.933e-05, 8.867e-05, 8.867e-05, 448.54305974], [1517272500000, 8.931e-05, 8.931e-05, 8.931e-05, 8.931e-05, 377.1268149], [1517272560000, 8.868e-05, 8.868e-05, 8.867e-05, 8.867e-05, 477.87570716], [1517272620000, 8.868e-05, 8.931e-05, 8.868e-05, 8.931e-05, 800.89017759], [1517272680000, 8.868e-05, 8.933e-05, 8.868e-05, 8.933e-05, 3469.6543638], [1517272740000, 8.932e-05, 8.933e-05, 8.868e-05, 8.868e-05, 572.56579235], [1517272800000, 8.868e-05, 8.868e-05, 8.868e-05, 8.868e-05, 165.01891191], [1517272860000, 8.868e-05, 8.868e-05, 8.866e-05, 8.866e-05, 100.78673786], [1517272980000, 8.866e-05, 8.866e-05, 8.866e-05, 8.866e-05, 298.54112854], [1517273040000, 8.866e-05, 8.932e-05, 8.866e-05, 8.866e-05, 3871.00098736], [1517273100000, 8.866e-05, 8.931e-05, 8.866e-05, 8.931e-05, 816.90777405], [1517273160000, 8.927e-05, 8.928e-05, 8.866e-05, 8.866e-05, 913.27162372], [1517273280000, 8.921e-05, 8.921e-05, 8.867e-05, 8.921e-05, 731.26849459], [1517273340000, 8.921e-05, 8.921e-05, 8.921e-05, 8.921e-05, 225.88770055], [1517273400000, 8.921e-05, 8.921e-05, 8.91e-05, 8.91e-05, 427.01081417], [1517273460000, 8.91e-05, 8.91e-05, 8.867e-05, 8.867e-05, 714.30432819], [1517273520000, 8.91e-05, 8.91e-05, 8.91e-05, 8.91e-05, 462.77833391], [1517273580000, 8.867e-05, 8.867e-05, 8.867e-05, 8.867e-05, 297.0], [1517273700000, 8.867e-05, 8.867e-05, 8.866e-05, 8.866e-05, 500.0], [1517273760000, 8.925e-05, 8.925e-05, 8.925e-05, 8.925e-05, 33.36031404], [1517273880000, 8.87e-05, 8.87e-05, 8.866e-05, 8.866e-05, 3500.0], [1517273940000, 8.866e-05, 8.925e-05, 8.866e-05, 8.925e-05, 3536.77266272], [1517274000000, 8.866e-05, 8.866e-05, 8.866e-05, 8.866e-05, 1325.38832495], [1517274060000, 8.866e-05, 8.866e-05, 8.866e-05, 8.866e-05, 2000.0], [1517274120000, 8.866e-05, 8.922e-05, 8.866e-05, 8.921e-05, 4527.57419034], [1517274180000, 8.921e-05, 8.922e-05, 8.921e-05, 8.922e-05, 241.68636342], [1517274240000, 8.922e-05, 8.922e-05, 8.866e-05, 8.922e-05, 2241.65074589], [1517274300000, 8.921e-05, 8.921e-05, 8.866e-05, 8.866e-05, 277.89846598], [1517274360000, 8.866e-05, 8.866e-05, 8.866e-05, 8.866e-05, 1131.32423233], [1517274420000, 8.919e-05, 8.919e-05, 8.866e-05, 8.866e-05, 598.19558388], [1517274480000, 8.866e-05, 8.866e-05, 8.866e-05, 8.866e-05, 64.00016384], [1517274540000, 8.919e-05, 8.919e-05, 8.866e-05, 8.866e-05, 430.39439727], [1517274600000, 8.866e-05, 8.899e-05, 8.866e-05, 8.899e-05, 2543.51493798], [1517274780000, 8.899e-05, 8.899e-05, 8.899e-05, 8.899e-05, 78.66052365], [1517274960000, 8.899e-05, 8.918e-05, 8.899e-05, 8.918e-05, 108.08396315], [1517275020000, 8.918e-05, 8.919e-05, 8.836e-05, 8.84e-05, 3024.63006302], [1517275140000, 8.836e-05, 8.837e-05, 8.833e-05, 8.833e-05, 10089.69759067], [1517275200000, 8.833e-05, 8.833e-05, 8.833e-05, 8.833e-05, 907.13640347], [1517275260000, 8.833e-05, 8.833e-05, 8.833e-05, 8.833e-05, 252.39384883], [1517275320000, 8.833e-05, 8.833e-05, 8.833e-05, 8.833e-05, 21.73636093], [1517275380000, 8.83e-05, 8.83e-05, 8.817e-05, 8.817e-05, 10462.10655569], [1517275440000, 8.817e-05, 8.817e-05, 8.801e-05, 8.817e-05, 8440.38507232], [1517275560000, 8.817e-05, 8.817e-05, 8.805e-05, 8.805e-05, 2263.18664221], [1517275620000, 8.83e-05, 8.833e-05, 8.83e-05, 8.833e-05, 2849.19480284], [1517275680000, 8.832e-05, 8.833e-05, 8.8e-05, 8.8e-05, 5956.32445619], [1517275740000, 8.8e-05, 8.833e-05, 8.8e-05, 8.8e-05, 16906.24239937], [1517275800000, 8.8e-05, 8.833e-05, 8.8e-05, 8.8e-05, 4781.4258845], [1517275860000, 8.825e-05, 8.825e-05, 8.8e-05, 8.8e-05, 2742.88847813], [1517275920000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 36.88854625], [1517275980000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 894.90149839], [1517276100000, 8.81e-05, 8.81e-05, 8.8e-05, 8.8e-05, 2376.60993545], [1517276160000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 1568.00179326], [1517276220000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 30.0], [1517276280000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 1000.0], [1517276340000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 1608.23483687], [1517276400000, 8.8e-05, 8.833e-05, 8.8e-05, 8.833e-05, 2147.33896922], [1517276460000, 8.8e-05, 8.831e-05, 8.8e-05, 8.831e-05, 247.65496621], [1517276520000, 8.831e-05, 8.831e-05, 8.8e-05, 8.8e-05, 3970.12188985], [1517276580000, 8.8e-05, 8.831e-05, 8.8e-05, 8.829e-05, 15184.00894309], [1517276640000, 8.8e-05, 8.827e-05, 8.8e-05, 8.827e-05, 6246.33766346], [1517276700000, 8.824e-05, 8.824e-05, 8.824e-05, 8.824e-05, 218.53930644], [1517276760000, 8.802e-05, 8.824e-05, 8.802e-05, 8.824e-05, 171.72179881], [1517276820000, 8.824e-05, 8.824e-05, 8.803e-05, 8.803e-05, 4114.48090435], [1517276940000, 8.803e-05, 8.803e-05, 8.8e-05, 8.8e-05, 6523.11292956], [1517277000000, 8.801e-05, 8.801e-05, 8.8e-05, 8.8e-05, 852.28705776], [1517277120000, 8.824e-05, 8.824e-05, 8.824e-05, 8.824e-05, 1283.83633953], [1517277300000, 8.801e-05, 8.801e-05, 8.8e-05, 8.8e-05, 1112.33014855], [1517277480000, 8.815e-05, 8.824e-05, 8.815e-05, 8.824e-05, 44.64473485], [1517277600000, 8.824e-05, 8.824e-05, 8.824e-05, 8.824e-05, 604.00487193], [1517277660000, 8.824e-05, 8.824e-05, 8.82e-05, 8.82e-05, 1723.72660822], [1517277720000, 8.82e-05, 8.82e-05, 8.815e-05, 8.815e-05, 327.63392288], [1517277780000, 8.815e-05, 8.824e-05, 8.8e-05, 8.824e-05, 2024.53919909], [1517277900000, 8.824e-05, 8.824e-05, 8.824e-05, 8.824e-05, 1265.0], [1517277960000, 8.815e-05, 8.815e-05, 8.815e-05, 8.815e-05, 5000.0], [1517278020000, 8.8e-05, 8.8e-05, 8.8e-05, 8.8e-05, 3429.05949048], [1517278080000, 8.8e-05, 8.824e-05, 8.8e-05, 8.8e-05, 4687.48186515], [1517278140000, 8.822e-05, 8.822e-05, 8.822e-05, 8.822e-05, 39.58134687], [1517278200000, 8.822e-05, 8.824e-05, 8.822e-05, 8.824e-05, 47.8511237], [1517278320000, 8.824e-05, 8.827e-05, 8.824e-05, 8.827e-05, 4265.7271311], [1517278380000, 8.825e-05, 8.905e-05, 8.825e-05, 8.905e-05, 1549.12905858], [1517278440000, 8.892e-05, 8.914e-05, 8.801e-05, 8.801e-05, 3571.14971851], [1517278500000, 8.803e-05, 8.803e-05, 8.8e-05, 8.8e-05, 5213.56100298], [1517278680000, 8.875e-05, 8.875e-05, 8.839e-05, 8.875e-05, 2073.45964048], [1517278740000, 8.871e-05, 8.871e-05, 8.802e-05, 8.802e-05, 243.74479144], [1517278800000, 8.884e-05, 8.884e-05, 8.884e-05, 8.884e-05, 42.51690868], [1517278920000, 8.804e-05, 8.804e-05, 8.804e-05, 8.804e-05, 12.18183409], [1517279040000, 8.804e-05, 8.804e-05, 8.802e-05, 8.802e-05, 149.67488444], [1517279100000, 8.802e-05, 8.802e-05, 8.801e-05, 8.801e-05, 37.10809462], [1517279160000, 8.801e-05, 8.804e-05, 8.8e-05, 8.804e-05, 317.30411586], [1517279220000, 8.804e-05, 8.804e-05, 8.804e-05, 8.804e-05, 82.43329325], [1517279280000, 8.804e-05, 8.89e-05, 8.804e-05, 8.884e-05, 1388.78283712], [1517279340000, 8.9e-05, 8.9e-05, 8.883e-05, 8.883e-05, 187.43234279], [1517279400000, 8.874e-05, 8.882e-05, 8.829e-05, 8.829e-05, 2821.28881144], [1517279460000, 8.801e-05, 8.801e-05, 8.8e-05, 8.8e-05, 1490.0], [1517279580000, 8.879e-05, 8.879e-05, 8.879e-05, 8.879e-05, 28.47431162], [1517279700000, 8.876e-05, 8.876e-05, 8.876e-05, 8.876e-05, 5.57299904], [1517279760000, 8.825e-05, 8.825e-05, 8.825e-05, 8.825e-05, 85.05137582], [1517279820000, 8.825e-05, 8.901e-05, 8.805e-05, 8.805e-05, 3886.97624613], [1517279880000, 8.829e-05, 8.829e-05, 8.829e-05, 8.829e-05, 62.92498195], [1517279940000, 8.829e-05, 8.903e-05, 8.808e-05, 8.903e-05, 688.60153852], [1517280000000, 8.812e-05, 8.814e-05, 8.811e-05, 8.814e-05, 1002.11635775], [1517280120000, 8.873e-05, 8.873e-05, 8.873e-05, 8.873e-05, 97.67788009], [1517280180000, 8.815e-05, 8.815e-05, 8.815e-05, 8.815e-05, 3771.79415657], [1517280240000, 8.815e-05, 8.815e-05, 8.815e-05, 8.815e-05, 90.0], [1517280300000, 8.873e-05, 8.873e-05, 8.873e-05, 8.873e-05, 288.91285393], [1517280360000, 8.873e-05, 8.873e-05, 8.873e-05, 8.873e-05, 23.28628158], [1517280420000, 8.873e-05, 8.873e-05, 8.821e-05, 8.821e-05, 89.55401652], [1517280480000, 8.874e-05, 8.874e-05, 8.874e-05, 8.874e-05, 115.52625341], [1517280540000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 94.49119241], [1517280600000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 39.59968337], [1517280660000, 8.881e-05, 8.886e-05, 8.85e-05, 8.85e-05, 88.46425238], [1517280780000, 8.852e-05, 8.852e-05, 8.852e-05, 8.852e-05, 6.72494956], [1517280840000, 8.886e-05, 8.889e-05, 8.886e-05, 8.886e-05, 627.49426808], [1517280900000, 8.884e-05, 8.884e-05, 8.852e-05, 8.876e-05, 13181.36754592], [1517281020000, 8.875e-05, 8.875e-05, 8.875e-05, 8.875e-05, 92.43794172], [1517281080000, 8.875e-05, 8.884e-05, 8.875e-05, 8.884e-05, 1707.10612508], [1517281140000, 8.884e-05, 8.912e-05, 8.884e-05, 8.912e-05, 572.767], [1517281200000, 8.876e-05, 8.876e-05, 8.876e-05, 8.876e-05, 43.82323121], [1517281260000, 8.876e-05, 8.877e-05, 8.876e-05, 8.877e-05, 100.0], [1517281320000, 8.916e-05, 8.916e-05, 8.916e-05, 8.916e-05, 238.46251196], [1517281380000, 8.901e-05, 8.902e-05, 8.901e-05, 8.902e-05, 430.97628197], [1517281440000, 8.902e-05, 8.916e-05, 8.85e-05, 8.902e-05, 654.48709836], [1517281500000, 8.901e-05, 8.902e-05, 8.901e-05, 8.902e-05, 153.0], [1517281560000, 8.902e-05, 8.916e-05, 8.814e-05, 8.814e-05, 5441.13825436], [1517281620000, 8.922e-05, 8.923e-05, 8.851e-05, 8.851e-05, 764.51617795], [1517281740000, 8.9e-05, 8.92e-05, 8.829e-05, 8.829e-05, 4506.36892564], [1517281800000, 8.891e-05, 8.892e-05, 8.891e-05, 8.892e-05, 382.0], [1517281860000, 8.892e-05, 8.9e-05, 8.892e-05, 8.9e-05, 232.03709555], [1517281920000, 8.831e-05, 8.892e-05, 8.831e-05, 8.892e-05, 267.30119251], [1517281980000, 8.891e-05, 8.891e-05, 8.891e-05, 8.891e-05, 91.4034684], [1517282040000, 8.822e-05, 8.822e-05, 8.822e-05, 8.822e-05, 217.7248519], [1517282100000, 8.822e-05, 8.885e-05, 8.808e-05, 8.808e-05, 2649.76472649], [1517282160000, 8.808e-05, 8.808e-05, 8.806e-05, 8.806e-05, 400.0], [1517282280000, 8.881e-05, 8.882e-05, 8.881e-05, 8.882e-05, 154.88335777], [1517282340000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 58.54810101], [1517282400000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 50.151003], [1517282460000, 8.881e-05, 8.881e-05, 8.811e-05, 8.811e-05, 272.57972751], [1517282520000, 8.811e-05, 8.881e-05, 8.811e-05, 8.881e-05, 162.44583565], [1517282580000, 8.881e-05, 8.881e-05, 8.881e-05, 8.881e-05, 162.62300865], [1517282640000, 8.892e-05, 8.9e-05, 8.881e-05, 8.881e-05, 1187.99488331], [1517282760000, 8.831e-05, 8.831e-05, 8.808e-05, 8.831e-05, 677.25563225], [1517282820000, 8.832e-05, 8.832e-05, 8.832e-05, 8.832e-05, 310.0], [1517282880000, 8.832e-05, 8.832e-05, 8.831e-05, 8.832e-05, 347.91629014], [1517282940000, 8.881e-05, 8.9e-05, 8.881e-05, 8.9e-05, 4219.37308646], [1517283000000, 8.85e-05, 8.87e-05, 8.85e-05, 8.87e-05, 226.75697425], [1517283060000, 8.851e-05, 8.851e-05, 8.851e-05, 8.851e-05, 457.14285999], [1517283120000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 218.53100702], [1517283180000, 8.832e-05, 8.832e-05, 8.804e-05, 8.804e-05, 1518.29415085], [1517283240000, 8.849e-05, 8.851e-05, 8.807e-05, 8.851e-05, 4401.59863309], [1517283300000, 8.894e-05, 8.9e-05, 8.806e-05, 8.9e-05, 1050.13701324], [1517283360000, 8.897e-05, 8.9e-05, 8.819e-05, 8.819e-05, 3748.11978106], [1517283600000, 8.893e-05, 8.897e-05, 8.893e-05, 8.897e-05, 115.7408747], [1517283660000, 8.896e-05, 8.897e-05, 8.896e-05, 8.897e-05, 1115.19461543], [1517283840000, 8.892e-05, 8.892e-05, 8.892e-05, 8.892e-05, 15.41601335], [1517283900000, 8.885e-05, 8.885e-05, 8.885e-05, 8.885e-05, 12.64842568], [1517283960000, 8.834e-05, 8.887e-05, 8.834e-05, 8.887e-05, 221.77790487], [1517284020000, 8.836e-05, 8.836e-05, 8.836e-05, 8.836e-05, 11.0], [1517284140000, 8.838e-05, 8.838e-05, 8.836e-05, 8.836e-05, 367.17914165], [1517284260000, 8.887e-05, 8.897e-05, 8.887e-05, 8.897e-05, 917.98948843], [1517284320000, 8.899e-05, 8.9e-05, 8.899e-05, 8.9e-05, 283.6157642], [1517284440000, 8.899e-05, 8.899e-05, 8.899e-05, 8.899e-05, 154.52384678], [1517284500000, 8.839e-05, 8.839e-05, 8.836e-05, 8.836e-05, 2308.648], [1517284560000, 8.899e-05, 8.9e-05, 8.836e-05, 8.836e-05, 292.73600186], [1517284800000, 8.836e-05, 8.836e-05, 8.836e-05, 8.836e-05, 1237.73381031], [1517284860000, 8.836e-05, 8.836e-05, 8.836e-05, 8.836e-05, 35.0], [1517284980000, 8.836e-05, 8.836e-05, 8.835e-05, 8.836e-05, 819.61620648], [1517285040000, 8.834e-05, 8.932e-05, 8.834e-05, 8.932e-05, 2684.88909524], [1517285160000, 8.89e-05, 8.933e-05, 8.841e-05, 8.841e-05, 6184.07466946], [1517285220000, 8.932e-05, 8.932e-05, 8.932e-05, 8.932e-05, 38.38761705], [1517285280000, 8.836e-05, 8.836e-05, 8.836e-05, 8.836e-05, 10.18766668], [1517285400000, 8.839e-05, 8.839e-05, 8.837e-05, 8.838e-05, 297.6924893], [1517285580000, 8.911e-05, 8.913e-05, 8.91e-05, 8.91e-05, 3383.5861158], [1517285640000, 8.85e-05, 8.85e-05, 8.85e-05, 8.85e-05, 115.70221472], [1517285700000, 8.838e-05, 8.838e-05, 8.834e-05, 8.834e-05, 7710.03008593], [1517285760000, 8.85e-05, 8.896e-05, 8.85e-05, 8.896e-05, 416.70954958], [1517285940000, 8.85e-05, 8.85e-05, 8.834e-05, 8.834e-05, 336.86047582], [1517286060000, 8.834e-05, 8.834e-05, 8.834e-05, 8.834e-05, 1307.8370909], [1517286300000, 8.834e-05, 8.85e-05, 8.834e-05, 8.85e-05, 302.93414679], [1517286420000, 8.849e-05, 8.849e-05, 8.849e-05, 8.849e-05, 206.51147022], [1517286480000, 8.849e-05, 8.849e-05, 8.849e-05, 8.849e-05, 4574.9778506], [1517286540000, 8.834e-05, 8.834e-05, 8.834e-05, 8.834e-05, 1043.19691328], [1517286600000, 8.834e-05, 8.849e-05, 8.834e-05, 8.849e-05, 63.7679673], [1517286660000, 8.834e-05, 8.834e-05, 8.834e-05, 8.834e-05, 2557.08658324], [1517286720000, 8.833e-05, 8.834e-05, 8.802e-05, 8.834e-05, 1077.41448204], [1517286780000, 8.834e-05, 8.834e-05, 8.834e-05, 8.834e-05, 501.50100299], [1517286840000, 8.802e-05, 8.802e-05, 8.802e-05, 8.802e-05, 36.003132], [1517286900000, 8.83e-05, 8.83e-05, 8.83e-05, 8.83e-05, 70.44726893], [1517286960000, 8.83e-05, 8.83e-05, 8.83e-05, 8.83e-05, 38.70774252], [1517287020000, 8.829e-05, 8.829e-05, 8.802e-05, 8.802e-05, 321.80236333], [1517287080000, 8.802e-05, 8.802e-05, 8.8e-05, 8.8e-05, 1325.18493728], [1517287200000, 8.8e-05, 8.801e-05, 8.8e-05, 8.801e-05, 159.23908428], [1517287260000, 8.801e-05, 8.826e-05, 8.801e-05, 8.826e-05, 466.07920211], [1517287320000, 8.805e-05, 8.805e-05, 8.8e-05, 8.8e-05, 11736.87727157], [1517287380000, 8.826e-05, 8.848e-05, 8.8e-05, 8.8e-05, 1594.96882643], [1517287440000, 8.8e-05, 8.848e-05, 8.8e-05, 8.848e-05, 732.10100299], [1517287500000, 8.8e-05, 8.848e-05, 8.8e-05, 8.848e-05, 662.01711464], [1517287620000, 8.82e-05, 8.82e-05, 8.82e-05, 8.82e-05, 78.82159634], [1517287680000, 8.848e-05, 8.848e-05, 8.8e-05, 8.8e-05, 290.61863605], [1517287740000, 8.848e-05, 8.848e-05, 8.848e-05, 8.848e-05, 20.0], [1517287800000, 8.848e-05, 8.848e-05, 8.848e-05, 8.848e-05, 96.76822524]]
\ No newline at end of file
diff --git a/tests/testdata/XLM_BTC-1m.json b/tests/testdata/XLM_BTC-1m.json
deleted file mode 100644
index 613fcba53..000000000
--- a/tests/testdata/XLM_BTC-1m.json
+++ /dev/null
@@ -1 +0,0 @@
-[[1516423980000, 4.137e-05, 4.15e-05, 4.105e-05, 4.105e-05, 442242.18657313], [1516424040000, 4.105e-05, 4.108e-05, 4.101e-05, 4.107e-05, 419706.2685013], [1516424100000, 4.107e-05, 4.122e-05, 4.089e-05, 4.122e-05, 153673.63218353], [1516424160000, 4.122e-05, 4.15e-05, 4.107e-05, 4.122e-05, 133412.70351668], [1516424220000, 4.122e-05, 4.149e-05, 4.107e-05, 4.11e-05, 65243.73080532], [1516424280000, 4.11e-05, 4.11e-05, 4.093e-05, 4.093e-05, 172256.27376426], [1516424340000, 4.093e-05, 4.093e-05, 4.087e-05, 4.087e-05, 58062.13829365], [1516424400000, 4.089e-05, 4.11e-05, 4.088e-05, 4.091e-05, 263483.19385385], [1516424460000, 4.089e-05, 4.128e-05, 4.088e-05, 4.095e-05, 105793.30979654], [1516424520000, 4.094e-05, 4.126e-05, 4.05e-05, 4.081e-05, 253120.68755673], [1516424580000, 4.085e-05, 4.12e-05, 4.054e-05, 4.079e-05, 162231.80155659], [1516424640000, 4.079e-05, 4.084e-05, 4.052e-05, 4.07e-05, 215440.6564794], [1516424700000, 4.055e-05, 4.085e-05, 4.052e-05, 4.085e-05, 109248.16162851], [1516424760000, 4.08e-05, 4.099e-05, 4.052e-05, 4.099e-05, 205608.00906737], [1516424820000, 4.099e-05, 4.117e-05, 4.082e-05, 4.117e-05, 129466.29172471], [1516424880000, 4.119e-05, 4.121e-05, 4.087e-05, 4.087e-05, 107916.88998317], [1516424940000, 4.117e-05, 4.117e-05, 4.081e-05, 4.109e-05, 153628.82783078], [1516425000000, 4.108e-05, 4.108e-05, 4.076e-05, 4.077e-05, 295145.09328186], [1516425060000, 4.077e-05, 4.081e-05, 4.052e-05, 4.077e-05, 22990.06915528], [1516425120000, 4.077e-05, 4.1e-05, 4.077e-05, 4.096e-05, 37048.68864662], [1516425180000, 4.096e-05, 4.096e-05, 4.052e-05, 4.082e-05, 122004.38069725], [1516425240000, 4.079e-05, 4.081e-05, 4.065e-05, 4.065e-05, 64114.67849036], [1516425300000, 4.065e-05, 4.065e-05, 4.053e-05, 4.053e-05, 15577.10663097], [1516425360000, 4.053e-05, 4.081e-05, 4.052e-05, 4.06e-05, 49752.26113253], [1516425420000, 4.06e-05, 4.06e-05, 4.05e-05, 4.06e-05, 34125.78733293], [1516425480000, 4.06e-05, 4.082e-05, 4.053e-05, 4.053e-05, 133229.08646139], [1516425540000, 4.07e-05, 4.075e-05, 4.07e-05, 4.075e-05, 45361.46365588], [1516425600000, 4.071e-05, 4.113e-05, 4.071e-05, 4.082e-05, 85871.83777686], [1516425660000, 4.083e-05, 4.112e-05, 4.08e-05, 4.081e-05, 92791.2258116], [1516425720000, 4.081e-05, 4.09e-05, 4.081e-05, 4.089e-05, 67015.30856432], [1516425780000, 4.09e-05, 4.09e-05, 4.089e-05, 4.09e-05, 2025.63676699], [1516425840000, 4.09e-05, 4.09e-05, 4.088e-05, 4.09e-05, 18997.31632998], [1516425900000, 4.09e-05, 4.09e-05, 4.081e-05, 4.082e-05, 71627.67771681], [1516425960000, 4.082e-05, 4.083e-05, 4.08e-05, 4.083e-05, 92551.76209146], [1516426020000, 4.083e-05, 4.1e-05, 4.082e-05, 4.1e-05, 63587.02028527], [1516426080000, 4.109e-05, 4.177e-05, 4.1e-05, 4.177e-05, 363598.77736911], [1516426140000, 4.16e-05, 4.202e-05, 4.16e-05, 4.202e-05, 135631.30444274], [1516426200000, 4.202e-05, 4.206e-05, 4.183e-05, 4.201e-05, 80525.69392837], [1516426260000, 4.201e-05, 4.207e-05, 4.201e-05, 4.207e-05, 72807.36071439], [1516426320000, 4.207e-05, 4.215e-05, 4.165e-05, 4.19e-05, 143793.52481343], [1516426380000, 4.173e-05, 4.19e-05, 4.169e-05, 4.189e-05, 80656.29684728], [1516426440000, 4.18e-05, 4.189e-05, 4.152e-05, 4.156e-05, 150581.3771442], [1516426500000, 4.157e-05, 4.17e-05, 4.157e-05, 4.17e-05, 8407.347347], [1516426560000, 4.169e-05, 4.17e-05, 4.155e-05, 4.169e-05, 27529.02041127], [1516426620000, 4.169e-05, 4.169e-05, 4.091e-05, 4.091e-05, 158359.99251652], [1516426680000, 4.11e-05, 4.121e-05, 4.092e-05, 4.12e-05, 35134.99157159], [1516426740000, 4.12e-05, 4.12e-05, 4.08e-05, 4.102e-05, 126731.02309132], [1516426800000, 4.103e-05, 4.136e-05, 4.082e-05, 4.102e-05, 57893.4003796], [1516426860000, 4.113e-05, 4.133e-05, 4.102e-05, 4.115e-05, 34309.56215718], [1516426920000, 4.12e-05, 4.138e-05, 4.117e-05, 4.133e-05, 13714.77050695], [1516426980000, 4.133e-05, 4.139e-05, 4.117e-05, 4.137e-05, 30697.73406685], [1516427040000, 4.134e-05, 4.134e-05, 4.1e-05, 4.102e-05, 60058.83721238], [1516427100000, 4.132e-05, 4.132e-05, 4.131e-05, 4.132e-05, 12731.18574506], [1516427160000, 4.131e-05, 4.131e-05, 4.12e-05, 4.12e-05, 8327.5989327], [1516427220000, 4.129e-05, 4.141e-05, 4.11e-05, 4.141e-05, 116097.5188593], [1516427280000, 4.141e-05, 4.154e-05, 4.141e-05, 4.154e-05, 6772.18137697], [1516427340000, 4.146e-05, 4.175e-05, 4.132e-05, 4.133e-05, 214130.55632685], [1516427400000, 4.158e-05, 4.199e-05, 4.116e-05, 4.198e-05, 241676.52957547], [1516427460000, 4.161e-05, 4.201e-05, 4.159e-05, 4.171e-05, 31646.34543261], [1516427520000, 4.197e-05, 4.197e-05, 4.169e-05, 4.189e-05, 4634.1941617], [1516427580000, 4.187e-05, 4.197e-05, 4.18e-05, 4.197e-05, 83970.44111189], [1516427640000, 4.196e-05, 4.196e-05, 4.174e-05, 4.175e-05, 18312.69565676], [1516427700000, 4.177e-05, 4.193e-05, 4.172e-05, 4.174e-05, 79534.82913727], [1516427760000, 4.174e-05, 4.193e-05, 4.16e-05, 4.19e-05, 26699.94832305], [1516427820000, 4.17e-05, 4.17e-05, 4.164e-05, 4.164e-05, 3959.33139338], [1516427880000, 4.164e-05, 4.19e-05, 4.164e-05, 4.189e-05, 56935.33544737], [1516427940000, 4.189e-05, 4.19e-05, 4.171e-05, 4.18e-05, 209102.02077517], [1516428000000, 4.171e-05, 4.19e-05, 4.167e-05, 4.171e-05, 92452.91247302], [1516428060000, 4.171e-05, 4.217e-05, 4.171e-05, 4.216e-05, 84157.09551339], [1516428120000, 4.216e-05, 4.245e-05, 4.216e-05, 4.245e-05, 219396.43322733], [1516428180000, 4.245e-05, 4.245e-05, 4.21e-05, 4.219e-05, 39240.45917637], [1516428240000, 4.232e-05, 4.242e-05, 4.221e-05, 4.221e-05, 21602.23620765], [1516428300000, 4.221e-05, 4.24e-05, 4.221e-05, 4.232e-05, 15763.50508364], [1516428360000, 4.232e-05, 4.249e-05, 4.232e-05, 4.24e-05, 106338.60042921], [1516428420000, 4.242e-05, 4.263e-05, 4.229e-05, 4.258e-05, 90086.11869349], [1516428480000, 4.258e-05, 4.26e-05, 4.258e-05, 4.259e-05, 79012.35634292], [1516428540000, 4.258e-05, 4.268e-05, 4.258e-05, 4.259e-05, 65960.78090427], [1516428600000, 4.259e-05, 4.272e-05, 4.258e-05, 4.26e-05, 33200.25574858], [1516428660000, 4.261e-05, 4.263e-05, 4.258e-05, 4.258e-05, 39967.08589233], [1516428720000, 4.258e-05, 4.26e-05, 4.228e-05, 4.23e-05, 39150.83433863], [1516428780000, 4.222e-05, 4.258e-05, 4.207e-05, 4.207e-05, 63471.1408242], [1516428840000, 4.22e-05, 4.232e-05, 4.207e-05, 4.212e-05, 16900.1324281], [1516428900000, 4.22e-05, 4.237e-05, 4.207e-05, 4.232e-05, 28417.51350918], [1516428960000, 4.23e-05, 4.23e-05, 4.193e-05, 4.193e-05, 28144.00039258], [1516429020000, 4.193e-05, 4.214e-05, 4.193e-05, 4.194e-05, 27462.61028727], [1516429080000, 4.214e-05, 4.215e-05, 4.194e-05, 4.209e-05, 6413.55211527], [1516429140000, 4.204e-05, 4.209e-05, 4.194e-05, 4.198e-05, 51220.96214501], [1516429200000, 4.198e-05, 4.199e-05, 4.195e-05, 4.199e-05, 26114.46426751], [1516429260000, 4.195e-05, 4.21e-05, 4.195e-05, 4.199e-05, 45220.25737396], [1516429320000, 4.198e-05, 4.21e-05, 4.195e-05, 4.199e-05, 38824.80432332], [1516429380000, 4.199e-05, 4.21e-05, 4.196e-05, 4.196e-05, 6938.41348998], [1516429440000, 4.195e-05, 4.196e-05, 4.195e-05, 4.195e-05, 14041.23638682], [1516429500000, 4.196e-05, 4.196e-05, 4.168e-05, 4.193e-05, 50956.48251658], [1516429560000, 4.192e-05, 4.195e-05, 4.177e-05, 4.183e-05, 49017.32594158], [1516429620000, 4.192e-05, 4.192e-05, 4.169e-05, 4.192e-05, 16139.59721644], [1516429680000, 4.182e-05, 4.191e-05, 4.169e-05, 4.175e-05, 3344.76398608], [1516429740000, 4.175e-05, 4.175e-05, 4.165e-05, 4.175e-05, 33795.93871514], [1516429800000, 4.175e-05, 4.184e-05, 4.17e-05, 4.176e-05, 38365.00859221], [1516429860000, 4.176e-05, 4.19e-05, 4.169e-05, 4.169e-05, 29588.16324432], [1516429920000, 4.17e-05, 4.176e-05, 4.169e-05, 4.176e-05, 26150.29180427], [1516429980000, 4.176e-05, 4.176e-05, 4.169e-05, 4.176e-05, 17418.8953404], [1516430040000, 4.176e-05, 4.191e-05, 4.176e-05, 4.19e-05, 23731.61339681], [1516430100000, 4.178e-05, 4.178e-05, 4.16e-05, 4.169e-05, 96680.10661561], [1516430160000, 4.176e-05, 4.177e-05, 4.176e-05, 4.176e-05, 20523.85622727], [1516430220000, 4.182e-05, 4.183e-05, 4.18e-05, 4.18e-05, 862.40927072], [1516430280000, 4.187e-05, 4.187e-05, 4.171e-05, 4.18e-05, 7824.68323574], [1516430340000, 4.18e-05, 4.191e-05, 4.18e-05, 4.191e-05, 28992.93043911], [1516430400000, 4.191e-05, 4.209e-05, 4.189e-05, 4.191e-05, 25041.08742666], [1516430460000, 4.191e-05, 4.195e-05, 4.189e-05, 4.193e-05, 18661.56957861], [1516430520000, 4.194e-05, 4.196e-05, 4.193e-05, 4.195e-05, 15419.18352785], [1516430580000, 4.195e-05, 4.204e-05, 4.193e-05, 4.193e-05, 22795.28025672], [1516430640000, 4.193e-05, 4.194e-05, 4.193e-05, 4.194e-05, 1713.11249286], [1516430700000, 4.194e-05, 4.196e-05, 4.194e-05, 4.194e-05, 6203.7205134], [1516430760000, 4.196e-05, 4.2e-05, 4.194e-05, 4.2e-05, 22154.18814593], [1516430820000, 4.203e-05, 4.207e-05, 4.203e-05, 4.207e-05, 8121.39230944], [1516430880000, 4.207e-05, 4.21e-05, 4.2e-05, 4.21e-05, 45274.05626427], [1516430940000, 4.21e-05, 4.21e-05, 4.2e-05, 4.201e-05, 18431.49377404], [1516431000000, 4.201e-05, 4.215e-05, 4.201e-05, 4.215e-05, 2980.65267166], [1516431060000, 4.214e-05, 4.232e-05, 4.202e-05, 4.23e-05, 221037.06812859], [1516431120000, 4.21e-05, 4.23e-05, 4.21e-05, 4.228e-05, 6222.68383855], [1516431180000, 4.203e-05, 4.227e-05, 4.202e-05, 4.203e-05, 4626.6256076], [1516431240000, 4.203e-05, 4.205e-05, 4.203e-05, 4.205e-05, 2295.0], [1516431300000, 4.205e-05, 4.223e-05, 4.205e-05, 4.223e-05, 3040.29375331], [1516431360000, 4.205e-05, 4.222e-05, 4.204e-05, 4.22e-05, 10921.16906106], [1516431420000, 4.22e-05, 4.221e-05, 4.204e-05, 4.22e-05, 5909.89040091], [1516431480000, 4.22e-05, 4.22e-05, 4.204e-05, 4.217e-05, 10021.08372598], [1516431540000, 4.217e-05, 4.218e-05, 4.205e-05, 4.205e-05, 7703.14218419], [1516431600000, 4.217e-05, 4.217e-05, 4.205e-05, 4.205e-05, 10900.81562717], [1516431660000, 4.204e-05, 4.21e-05, 4.203e-05, 4.21e-05, 34782.07699501], [1516431720000, 4.217e-05, 4.217e-05, 4.203e-05, 4.203e-05, 9302.09560076], [1516431780000, 4.203e-05, 4.21e-05, 4.2e-05, 4.2e-05, 37884.59613112], [1516431840000, 4.203e-05, 4.228e-05, 4.202e-05, 4.21e-05, 46579.3236279], [1516431900000, 4.21e-05, 4.229e-05, 4.204e-05, 4.207e-05, 90548.51976867], [1516431960000, 4.226e-05, 4.237e-05, 4.212e-05, 4.212e-05, 67998.28335935], [1516432020000, 4.215e-05, 4.236e-05, 4.211e-05, 4.211e-05, 25600.76261561], [1516432080000, 4.22e-05, 4.235e-05, 4.2e-05, 4.211e-05, 61274.18646793], [1516432140000, 4.211e-05, 4.211e-05, 4.2e-05, 4.2e-05, 14059.40252867], [1516432200000, 4.207e-05, 4.21e-05, 4.207e-05, 4.209e-05, 45833.43563684], [1516432260000, 4.208e-05, 4.217e-05, 4.208e-05, 4.215e-05, 43885.39575352], [1516432320000, 4.215e-05, 4.215e-05, 4.21e-05, 4.215e-05, 3183.61371673], [1516432380000, 4.213e-05, 4.217e-05, 4.194e-05, 4.194e-05, 41718.89121519], [1516432440000, 4.216e-05, 4.216e-05, 4.194e-05, 4.194e-05, 5150.3856932], [1516432500000, 4.194e-05, 4.194e-05, 4.17e-05, 4.188e-05, 5235.07145372], [1516432560000, 4.188e-05, 4.194e-05, 4.188e-05, 4.194e-05, 18992.61967492], [1516432620000, 4.194e-05, 4.194e-05, 4.17e-05, 4.172e-05, 26522.39356229], [1516432680000, 4.189e-05, 4.199e-05, 4.176e-05, 4.186e-05, 4337.40569401], [1516432740000, 4.186e-05, 4.186e-05, 4.176e-05, 4.176e-05, 10264.6687133], [1516432800000, 4.169e-05, 4.177e-05, 4.161e-05, 4.163e-05, 5988.01390144], [1516432860000, 4.165e-05, 4.177e-05, 4.165e-05, 4.177e-05, 4353.94100977], [1516432920000, 4.186e-05, 4.186e-05, 4.166e-05, 4.17e-05, 8173.55176743], [1516432980000, 4.176e-05, 4.177e-05, 4.176e-05, 4.176e-05, 8890.59103299], [1516433040000, 4.176e-05, 4.186e-05, 4.176e-05, 4.186e-05, 48995.06402323], [1516433100000, 4.181e-05, 4.186e-05, 4.181e-05, 4.186e-05, 1735.84241484], [1516433160000, 4.198e-05, 4.2e-05, 4.18e-05, 4.2e-05, 18370.85324427], [1516433220000, 4.197e-05, 4.197e-05, 4.197e-05, 4.197e-05, 1278.17109222], [1516433280000, 4.192e-05, 4.192e-05, 4.18e-05, 4.18e-05, 5213.99259541], [1516433340000, 4.192e-05, 4.192e-05, 4.18e-05, 4.192e-05, 3217.82740303], [1516433400000, 4.189e-05, 4.189e-05, 4.189e-05, 4.189e-05, 2016.40188274], [1516433460000, 4.189e-05, 4.191e-05, 4.165e-05, 4.165e-05, 14396.64869558], [1516433520000, 4.168e-05, 4.19e-05, 4.168e-05, 4.189e-05, 4195.91382758], [1516433580000, 4.189e-05, 4.19e-05, 4.172e-05, 4.19e-05, 3696.34092452], [1516433640000, 4.189e-05, 4.19e-05, 4.165e-05, 4.189e-05, 8392.87503188], [1516433700000, 4.188e-05, 4.189e-05, 4.188e-05, 4.189e-05, 2916.92614384], [1516433760000, 4.189e-05, 4.189e-05, 4.188e-05, 4.188e-05, 4938.97267951], [1516433820000, 4.19e-05, 4.19e-05, 4.171e-05, 4.171e-05, 3695.45100045], [1516433880000, 4.177e-05, 4.177e-05, 4.177e-05, 4.177e-05, 4110.06656296], [1516433940000, 4.177e-05, 4.177e-05, 4.165e-05, 4.171e-05, 5861.07416362], [1516434000000, 4.171e-05, 4.177e-05, 4.171e-05, 4.177e-05, 4870.5663192], [1516434060000, 4.177e-05, 4.177e-05, 4.177e-05, 4.177e-05, 4783.97544996], [1516434120000, 4.176e-05, 4.176e-05, 4.176e-05, 4.176e-05, 363.52855603], [1516434180000, 4.175e-05, 4.177e-05, 4.171e-05, 4.177e-05, 3004.36039044], [1516434240000, 4.177e-05, 4.177e-05, 4.168e-05, 4.168e-05, 479.34343893], [1516434300000, 4.171e-05, 4.185e-05, 4.171e-05, 4.185e-05, 906.83188033], [1516434360000, 4.175e-05, 4.18e-05, 4.171e-05, 4.171e-05, 1644.44195937], [1516434420000, 4.171e-05, 4.171e-05, 4.171e-05, 4.171e-05, 20569.54556192], [1516434480000, 4.175e-05, 4.175e-05, 4.175e-05, 4.175e-05, 171.56407142], [1516434540000, 4.175e-05, 4.175e-05, 4.171e-05, 4.175e-05, 10983.59010104], [1516434600000, 4.179e-05, 4.179e-05, 4.171e-05, 4.171e-05, 31224.98652008], [1516434660000, 4.178e-05, 4.178e-05, 4.171e-05, 4.177e-05, 8301.57824095], [1516434720000, 4.177e-05, 4.177e-05, 4.165e-05, 4.165e-05, 15383.74954124], [1516434780000, 4.177e-05, 4.178e-05, 4.165e-05, 4.165e-05, 24371.30928139], [1516434840000, 4.177e-05, 4.178e-05, 4.164e-05, 4.178e-05, 34375.85844311], [1516434900000, 4.164e-05, 4.164e-05, 4.154e-05, 4.154e-05, 4487.39971437], [1516434960000, 4.155e-05, 4.165e-05, 4.154e-05, 4.165e-05, 6588.90322287], [1516435020000, 4.16e-05, 4.176e-05, 4.154e-05, 4.165e-05, 23453.31042952], [1516435080000, 4.15e-05, 4.163e-05, 4.15e-05, 4.163e-05, 72.55751906], [1516435140000, 4.163e-05, 4.165e-05, 4.163e-05, 4.165e-05, 12538.83831925], [1516435200000, 4.163e-05, 4.165e-05, 4.15e-05, 4.15e-05, 5466.11619973], [1516435260000, 4.15e-05, 4.15e-05, 4.132e-05, 4.133e-05, 40093.48525348], [1516435380000, 4.153e-05, 4.154e-05, 4.147e-05, 4.154e-05, 7684.60792764], [1516435440000, 4.148e-05, 4.155e-05, 4.137e-05, 4.155e-05, 25719.37667578], [1516435500000, 4.155e-05, 4.163e-05, 4.154e-05, 4.16e-05, 15557.6988823], [1516435560000, 4.154e-05, 4.162e-05, 4.137e-05, 4.162e-05, 23636.97977208], [1516435620000, 4.161e-05, 4.163e-05, 4.161e-05, 4.161e-05, 37728.16062898], [1516435680000, 4.16e-05, 4.162e-05, 4.156e-05, 4.156e-05, 3282.4105977], [1516435740000, 4.156e-05, 4.156e-05, 4.155e-05, 4.156e-05, 18286.23603889], [1516435800000, 4.155e-05, 4.156e-05, 4.155e-05, 4.155e-05, 1221.9704601], [1516435860000, 4.155e-05, 4.156e-05, 4.154e-05, 4.156e-05, 1509.04278417], [1516435920000, 4.156e-05, 4.163e-05, 4.156e-05, 4.156e-05, 11255.01447981], [1516435980000, 4.156e-05, 4.16e-05, 4.156e-05, 4.159e-05, 5762.27026856], [1516436040000, 4.16e-05, 4.16e-05, 4.158e-05, 4.16e-05, 7130.65568741], [1516436100000, 4.159e-05, 4.16e-05, 4.157e-05, 4.16e-05, 15206.65865447], [1516436160000, 4.16e-05, 4.163e-05, 4.156e-05, 4.163e-05, 58735.4702376], [1516436220000, 4.164e-05, 4.165e-05, 4.164e-05, 4.165e-05, 1120.0], [1516436280000, 4.165e-05, 4.165e-05, 4.163e-05, 4.165e-05, 1090.5708628], [1516436340000, 4.165e-05, 4.165e-05, 4.155e-05, 4.165e-05, 11829.38042365], [1516436400000, 4.178e-05, 4.179e-05, 4.166e-05, 4.179e-05, 5343.28917854], [1516436460000, 4.17e-05, 4.179e-05, 4.17e-05, 4.17e-05, 4868.4297279], [1516436520000, 4.17e-05, 4.178e-05, 4.17e-05, 4.177e-05, 1315.27007154], [1516436580000, 4.166e-05, 4.177e-05, 4.165e-05, 4.165e-05, 17214.48219051], [1516436640000, 4.155e-05, 4.165e-05, 4.154e-05, 4.165e-05, 10484.36712773], [1516436700000, 4.165e-05, 4.165e-05, 4.165e-05, 4.165e-05, 1983.49753235], [1516436760000, 4.157e-05, 4.165e-05, 4.157e-05, 4.165e-05, 2584.74884482], [1516436820000, 4.16e-05, 4.16e-05, 4.158e-05, 4.158e-05, 4583.57297061], [1516436880000, 4.158e-05, 4.165e-05, 4.155e-05, 4.165e-05, 16872.41333252], [1516436940000, 4.158e-05, 4.166e-05, 4.158e-05, 4.166e-05, 13280.67003062], [1516437000000, 4.16e-05, 4.16e-05, 4.158e-05, 4.159e-05, 3707.26067777], [1516437060000, 4.16e-05, 4.16e-05, 4.158e-05, 4.158e-05, 2708.49947557], [1516437120000, 4.158e-05, 4.166e-05, 4.158e-05, 4.166e-05, 21594.59557372], [1516437180000, 4.177e-05, 4.177e-05, 4.158e-05, 4.158e-05, 20608.45277374], [1516437240000, 4.158e-05, 4.158e-05, 4.158e-05, 4.158e-05, 3138.025713], [1516437300000, 4.173e-05, 4.173e-05, 4.158e-05, 4.159e-05, 18468.4968412], [1516437360000, 4.158e-05, 4.173e-05, 4.154e-05, 4.158e-05, 6514.72255784], [1516437420000, 4.158e-05, 4.158e-05, 4.154e-05, 4.158e-05, 1771.50011844], [1516437480000, 4.154e-05, 4.158e-05, 4.153e-05, 4.153e-05, 1238.1251358], [1516437540000, 4.153e-05, 4.153e-05, 4.149e-05, 4.149e-05, 14403.94985474], [1516437600000, 4.149e-05, 4.15e-05, 4.149e-05, 4.149e-05, 40858.74518884], [1516437660000, 4.149e-05, 4.149e-05, 4.14e-05, 4.143e-05, 5698.56382408], [1516437720000, 4.143e-05, 4.143e-05, 4.134e-05, 4.143e-05, 23282.57480335], [1516437780000, 4.14e-05, 4.143e-05, 4.122e-05, 4.13e-05, 28190.5061018], [1516437840000, 4.147e-05, 4.148e-05, 4.13e-05, 4.13e-05, 17975.27990289], [1516437900000, 4.131e-05, 4.14e-05, 4.13e-05, 4.131e-05, 7513.58034684], [1516437960000, 4.14e-05, 4.141e-05, 4.132e-05, 4.132e-05, 26082.69848823], [1516438020000, 4.133e-05, 4.141e-05, 4.133e-05, 4.141e-05, 13134.85932259], [1516438080000, 4.141e-05, 4.141e-05, 4.134e-05, 4.134e-05, 26059.3556114], [1516438140000, 4.134e-05, 4.148e-05, 4.134e-05, 4.137e-05, 28255.84760137], [1516438200000, 4.139e-05, 4.14e-05, 4.139e-05, 4.139e-05, 15989.26079501], [1516438260000, 4.139e-05, 4.142e-05, 4.139e-05, 4.142e-05, 14725.79454059], [1516438320000, 4.142e-05, 4.142e-05, 4.14e-05, 4.14e-05, 2365.57738052], [1516438380000, 4.14e-05, 4.142e-05, 4.139e-05, 4.139e-05, 7205.91422179], [1516438440000, 4.139e-05, 4.139e-05, 4.13e-05, 4.13e-05, 23247.67198324], [1516438500000, 4.131e-05, 4.131e-05, 4.112e-05, 4.112e-05, 11784.22008366], [1516438560000, 4.113e-05, 4.129e-05, 4.112e-05, 4.112e-05, 8281.07917261], [1516438620000, 4.112e-05, 4.13e-05, 4.112e-05, 4.12e-05, 5849.14635144], [1516438680000, 4.12e-05, 4.12e-05, 4.112e-05, 4.12e-05, 4222.93482064], [1516438740000, 4.112e-05, 4.12e-05, 4.111e-05, 4.12e-05, 19738.58181208], [1516438800000, 4.119e-05, 4.12e-05, 4.108e-05, 4.108e-05, 32178.2258731], [1516438860000, 4.108e-05, 4.12e-05, 4.108e-05, 4.119e-05, 4817.94612015], [1516438920000, 4.111e-05, 4.12e-05, 4.109e-05, 4.119e-05, 26951.17626974], [1516438980000, 4.119e-05, 4.12e-05, 4.108e-05, 4.12e-05, 3288.67674496], [1516439040000, 4.12e-05, 4.139e-05, 4.119e-05, 4.139e-05, 22255.2614277], [1516439100000, 4.139e-05, 4.141e-05, 4.139e-05, 4.141e-05, 26698.60687571], [1516439160000, 4.14e-05, 4.14e-05, 4.12e-05, 4.12e-05, 6979.35385507], [1516439220000, 4.137e-05, 4.139e-05, 4.12e-05, 4.121e-05, 3013.04171068], [1516439280000, 4.136e-05, 4.136e-05, 4.122e-05, 4.124e-05, 4213.44687965], [1516439340000, 4.124e-05, 4.139e-05, 4.124e-05, 4.139e-05, 10041.51153327], [1516439400000, 4.126e-05, 4.139e-05, 4.126e-05, 4.138e-05, 10694.49207138], [1516439460000, 4.129e-05, 4.138e-05, 4.129e-05, 4.138e-05, 5252.04145169], [1516439520000, 4.139e-05, 4.139e-05, 4.132e-05, 4.138e-05, 60532.01570594], [1516439580000, 4.137e-05, 4.138e-05, 4.132e-05, 4.138e-05, 9127.1214143], [1516439640000, 4.138e-05, 4.138e-05, 4.133e-05, 4.133e-05, 6547.29227919], [1516439700000, 4.133e-05, 4.133e-05, 4.132e-05, 4.132e-05, 2441.14921769], [1516439760000, 4.132e-05, 4.14e-05, 4.129e-05, 4.14e-05, 7935.18459013], [1516439820000, 4.139e-05, 4.145e-05, 4.135e-05, 4.14e-05, 7616.23472249], [1516439880000, 4.135e-05, 4.145e-05, 4.135e-05, 4.145e-05, 1495.70831522], [1516439940000, 4.139e-05, 4.145e-05, 4.135e-05, 4.137e-05, 33547.75965482], [1516440000000, 4.137e-05, 4.145e-05, 4.137e-05, 4.144e-05, 2010.26432697], [1516440060000, 4.139e-05, 4.144e-05, 4.139e-05, 4.144e-05, 1087.4488568], [1516440120000, 4.139e-05, 4.143e-05, 4.139e-05, 4.14e-05, 615.45941346], [1516440180000, 4.141e-05, 4.141e-05, 4.14e-05, 4.141e-05, 6597.08669798], [1516440240000, 4.14e-05, 4.14e-05, 4.14e-05, 4.14e-05, 9823.5230107], [1516440300000, 4.14e-05, 4.14e-05, 4.139e-05, 4.139e-05, 1514.58911321], [1516440360000, 4.14e-05, 4.141e-05, 4.139e-05, 4.141e-05, 958.24080902], [1516440420000, 4.139e-05, 4.145e-05, 4.139e-05, 4.141e-05, 11071.22258815], [1516440480000, 4.141e-05, 4.141e-05, 4.137e-05, 4.141e-05, 116692.92197768], [1516440540000, 4.14e-05, 4.141e-05, 4.138e-05, 4.138e-05, 13719.41302148], [1516440600000, 4.138e-05, 4.141e-05, 4.138e-05, 4.141e-05, 68194.44138393], [1516440660000, 4.14e-05, 4.141e-05, 4.14e-05, 4.141e-05, 8233.02730359], [1516440720000, 4.139e-05, 4.14e-05, 4.139e-05, 4.14e-05, 5702.95064068], [1516440780000, 4.14e-05, 4.14e-05, 4.139e-05, 4.139e-05, 1631.73650717], [1516440840000, 4.139e-05, 4.14e-05, 4.139e-05, 4.139e-05, 8398.54536039], [1516440900000, 4.138e-05, 4.139e-05, 4.138e-05, 4.138e-05, 9166.82804126], [1516440960000, 4.138e-05, 4.139e-05, 4.138e-05, 4.138e-05, 11320.87696825], [1516441020000, 4.138e-05, 4.138e-05, 4.138e-05, 4.138e-05, 5180.17974943], [1516441080000, 4.138e-05, 4.14e-05, 4.138e-05, 4.138e-05, 7210.01236369], [1516441140000, 4.138e-05, 4.14e-05, 4.138e-05, 4.138e-05, 1720.4152551], [1516441200000, 4.138e-05, 4.14e-05, 4.138e-05, 4.138e-05, 3293.87740552], [1516441260000, 4.14e-05, 4.14e-05, 4.138e-05, 4.14e-05, 9417.30087946], [1516441320000, 4.138e-05, 4.14e-05, 4.138e-05, 4.14e-05, 7250.35831121], [1516441380000, 4.138e-05, 4.14e-05, 4.138e-05, 4.139e-05, 16017.0333322], [1516441440000, 4.139e-05, 4.14e-05, 4.139e-05, 4.139e-05, 3454.22998464], [1516441500000, 4.139e-05, 4.14e-05, 4.138e-05, 4.138e-05, 4571.54566139], [1516441560000, 4.138e-05, 4.14e-05, 4.138e-05, 4.139e-05, 3233.22992499], [1516441620000, 4.139e-05, 4.139e-05, 4.138e-05, 4.138e-05, 8202.2391345], [1516441680000, 4.139e-05, 4.139e-05, 4.138e-05, 4.138e-05, 5206.0237771], [1516441740000, 4.138e-05, 4.139e-05, 4.138e-05, 4.138e-05, 7578.99942412], [1516441800000, 4.138e-05, 4.138e-05, 4.137e-05, 4.138e-05, 17991.05615429], [1516441860000, 4.139e-05, 4.139e-05, 4.135e-05, 4.135e-05, 13031.3684924], [1516441920000, 4.135e-05, 4.138e-05, 4.132e-05, 4.132e-05, 4110.21873156], [1516441980000, 4.133e-05, 4.133e-05, 4.132e-05, 4.133e-05, 7715.16317821], [1516442040000, 4.132e-05, 4.133e-05, 4.132e-05, 4.133e-05, 7134.50016906], [1516442100000, 4.133e-05, 4.133e-05, 4.132e-05, 4.133e-05, 1102.91631332], [1516442160000, 4.132e-05, 4.133e-05, 4.129e-05, 4.129e-05, 16124.47273112], [1516442220000, 4.129e-05, 4.133e-05, 4.129e-05, 4.13e-05, 19909.8375539], [1516442280000, 4.13e-05, 4.133e-05, 4.13e-05, 4.133e-05, 1528.51114698], [1516442340000, 4.13e-05, 4.132e-05, 4.13e-05, 4.132e-05, 2380.12379744], [1516442400000, 4.132e-05, 4.139e-05, 4.132e-05, 4.138e-05, 2959.68245991], [1516442460000, 4.138e-05, 4.139e-05, 4.138e-05, 4.139e-05, 10482.57051087], [1516442520000, 4.139e-05, 4.139e-05, 4.138e-05, 4.139e-05, 5690.43208708], [1516442580000, 4.138e-05, 4.139e-05, 4.138e-05, 4.139e-05, 4878.81512722], [1516442640000, 4.139e-05, 4.139e-05, 4.139e-05, 4.139e-05, 2821.36071149], [1516442700000, 4.139e-05, 4.139e-05, 4.138e-05, 4.138e-05, 13450.14413483], [1516442760000, 4.139e-05, 4.139e-05, 4.138e-05, 4.138e-05, 5134.66949902], [1516442820000, 4.139e-05, 4.14e-05, 4.13e-05, 4.138e-05, 100076.91182888], [1516442880000, 4.138e-05, 4.14e-05, 4.138e-05, 4.138e-05, 1460.4427907], [1516442940000, 4.138e-05, 4.14e-05, 4.138e-05, 4.14e-05, 15429.67411867], [1516443000000, 4.141e-05, 4.141e-05, 4.14e-05, 4.14e-05, 11161.19455098], [1516443060000, 4.14e-05, 4.14e-05, 4.139e-05, 4.139e-05, 163.12171023], [1516443120000, 4.139e-05, 4.139e-05, 4.138e-05, 4.138e-05, 851.10299987], [1516443180000, 4.138e-05, 4.138e-05, 4.136e-05, 4.136e-05, 1530.56184627], [1516443240000, 4.13e-05, 4.135e-05, 4.13e-05, 4.13e-05, 7465.89663957], [1516443300000, 4.13e-05, 4.13e-05, 4.128e-05, 4.128e-05, 4333.52687966], [1516443360000, 4.128e-05, 4.129e-05, 4.125e-05, 4.129e-05, 15086.82722602], [1516443420000, 4.125e-05, 4.125e-05, 4.123e-05, 4.125e-05, 30351.77880307], [1516443480000, 4.123e-05, 4.13e-05, 4.123e-05, 4.124e-05, 6684.60027935], [1516443540000, 4.131e-05, 4.139e-05, 4.124e-05, 4.125e-05, 1491.04826219], [1516443600000, 4.139e-05, 4.141e-05, 4.138e-05, 4.138e-05, 70019.52251479], [1516443660000, 4.138e-05, 4.138e-05, 4.138e-05, 4.138e-05, 1641.69868968], [1516443720000, 4.138e-05, 4.141e-05, 4.13e-05, 4.141e-05, 2341.23750622], [1516443780000, 4.141e-05, 4.141e-05, 4.124e-05, 4.14e-05, 31838.48219455], [1516443840000, 4.131e-05, 4.131e-05, 4.124e-05, 4.124e-05, 6602.91121917], [1516443900000, 4.131e-05, 4.138e-05, 4.106e-05, 4.106e-05, 99305.90501076], [1516443960000, 4.106e-05, 4.125e-05, 4.1e-05, 4.104e-05, 34427.42597966], [1516444020000, 4.107e-05, 4.123e-05, 4.104e-05, 4.108e-05, 30817.00641546], [1516444080000, 4.111e-05, 4.121e-05, 4.108e-05, 4.119e-05, 32720.5066339], [1516444140000, 4.118e-05, 4.141e-05, 4.118e-05, 4.119e-05, 92963.93182083], [1516444200000, 4.136e-05, 4.136e-05, 4.111e-05, 4.132e-05, 8685.83731396], [1516444260000, 4.13e-05, 4.14e-05, 4.108e-05, 4.109e-05, 14515.70636991], [1516444320000, 4.111e-05, 4.111e-05, 4.109e-05, 4.109e-05, 7612.35624326], [1516444380000, 4.109e-05, 4.127e-05, 4.1e-05, 4.127e-05, 96604.60228158], [1516444440000, 4.123e-05, 4.123e-05, 4.107e-05, 4.122e-05, 10110.48573759], [1516444500000, 4.123e-05, 4.123e-05, 4.111e-05, 4.111e-05, 23677.28454308], [1516444560000, 4.107e-05, 4.127e-05, 4.1e-05, 4.12e-05, 74351.39906298], [1516444620000, 4.12e-05, 4.127e-05, 4.1e-05, 4.125e-05, 147496.68962217], [1516444680000, 4.125e-05, 4.14e-05, 4.1e-05, 4.127e-05, 103715.2359806], [1516444740000, 4.127e-05, 4.134e-05, 4.1e-05, 4.126e-05, 15803.20978503], [1516444800000, 4.126e-05, 4.126e-05, 4.124e-05, 4.124e-05, 64259.69403068], [1516444860000, 4.124e-05, 4.125e-05, 4.112e-05, 4.125e-05, 74668.37279804], [1516444920000, 4.125e-05, 4.139e-05, 4.125e-05, 4.133e-05, 59412.31462322], [1516444980000, 4.133e-05, 4.133e-05, 4.127e-05, 4.132e-05, 15266.11606396], [1516445040000, 4.127e-05, 4.132e-05, 4.126e-05, 4.132e-05, 3513.32405664], [1516445100000, 4.13e-05, 4.132e-05, 4.126e-05, 4.126e-05, 4211.57353109], [1516445160000, 4.126e-05, 4.126e-05, 4.107e-05, 4.107e-05, 11759.62933434], [1516445220000, 4.107e-05, 4.132e-05, 4.107e-05, 4.132e-05, 11724.36469734], [1516445280000, 4.109e-05, 4.132e-05, 4.109e-05, 4.112e-05, 5588.92869596], [1516445340000, 4.112e-05, 4.117e-05, 4.109e-05, 4.116e-05, 10119.53904653], [1516445400000, 4.116e-05, 4.14e-05, 4.101e-05, 4.104e-05, 76621.19227553], [1516445460000, 4.136e-05, 4.137e-05, 4.1e-05, 4.114e-05, 61029.53023283], [1516445520000, 4.114e-05, 4.132e-05, 4.114e-05, 4.132e-05, 3686.0268481], [1516445580000, 4.133e-05, 4.133e-05, 4.117e-05, 4.117e-05, 2147.81261234], [1516445640000, 4.117e-05, 4.117e-05, 4.102e-05, 4.105e-05, 23726.32955305], [1516445700000, 4.128e-05, 4.129e-05, 4.104e-05, 4.109e-05, 40870.7775229], [1516445760000, 4.104e-05, 4.13e-05, 4.104e-05, 4.112e-05, 30816.05511686], [1516445820000, 4.128e-05, 4.128e-05, 4.094e-05, 4.113e-05, 64901.80562787], [1516445880000, 4.096e-05, 4.096e-05, 4.093e-05, 4.096e-05, 17778.23898003], [1516445940000, 4.111e-05, 4.114e-05, 4.083e-05, 4.083e-05, 102644.64370596], [1516446000000, 4.114e-05, 4.126e-05, 4.114e-05, 4.126e-05, 6211.43328749], [1516446060000, 4.116e-05, 4.125e-05, 4.087e-05, 4.101e-05, 32233.21006583], [1516446120000, 4.101e-05, 4.121e-05, 4.1e-05, 4.1e-05, 142186.6309097], [1516446180000, 4.102e-05, 4.119e-05, 4.101e-05, 4.119e-05, 47090.79752245], [1516446240000, 4.119e-05, 4.125e-05, 4.094e-05, 4.122e-05, 93848.53908259], [1516446300000, 4.097e-05, 4.12e-05, 4.095e-05, 4.097e-05, 74498.36801399], [1516446360000, 4.115e-05, 4.115e-05, 4.097e-05, 4.102e-05, 83975.91154893], [1516446420000, 4.102e-05, 4.113e-05, 4.096e-05, 4.107e-05, 102760.05691582], [1516446480000, 4.107e-05, 4.115e-05, 4.104e-05, 4.113e-05, 23404.73798883], [1516446540000, 4.113e-05, 4.114e-05, 4.099e-05, 4.112e-05, 43917.94553651], [1516446600000, 4.1e-05, 4.112e-05, 4.1e-05, 4.111e-05, 39695.31962126], [1516446660000, 4.111e-05, 4.112e-05, 4.099e-05, 4.111e-05, 48348.6982831], [1516446720000, 4.111e-05, 4.112e-05, 4.1e-05, 4.112e-05, 29320.87891096], [1516446780000, 4.103e-05, 4.111e-05, 4.1e-05, 4.108e-05, 55776.82598164], [1516446840000, 4.11e-05, 4.112e-05, 4.108e-05, 4.112e-05, 12029.46094814], [1516446900000, 4.113e-05, 4.115e-05, 4.113e-05, 4.113e-05, 8332.64889758], [1516446960000, 4.113e-05, 4.115e-05, 4.113e-05, 4.115e-05, 2681.82166728], [1516447020000, 4.113e-05, 4.125e-05, 4.113e-05, 4.125e-05, 11284.69435609], [1516447080000, 4.115e-05, 4.126e-05, 4.115e-05, 4.115e-05, 7011.01733093], [1516447140000, 4.118e-05, 4.126e-05, 4.115e-05, 4.12e-05, 30529.80178475], [1516447200000, 4.122e-05, 4.126e-05, 4.12e-05, 4.125e-05, 3407.63069739], [1516447260000, 4.125e-05, 4.131e-05, 4.12e-05, 4.12e-05, 5265.79730552], [1516447320000, 4.12e-05, 4.125e-05, 4.12e-05, 4.121e-05, 116.60392697], [1516447380000, 4.124e-05, 4.124e-05, 4.12e-05, 4.12e-05, 12366.83571865], [1516447440000, 4.122e-05, 4.122e-05, 4.12e-05, 4.12e-05, 8686.3570554], [1516447500000, 4.12e-05, 4.12e-05, 4.12e-05, 4.12e-05, 1798.31122302], [1516447560000, 4.12e-05, 4.122e-05, 4.12e-05, 4.122e-05, 7489.52421326], [1516447620000, 4.122e-05, 4.126e-05, 4.12e-05, 4.126e-05, 45556.92316309], [1516447680000, 4.123e-05, 4.126e-05, 4.12e-05, 4.126e-05, 49950.93264759], [1516447740000, 4.12e-05, 4.126e-05, 4.12e-05, 4.121e-05, 7181.32770541], [1516447800000, 4.121e-05, 4.121e-05, 4.116e-05, 4.12e-05, 15128.49610784], [1516447860000, 4.117e-05, 4.126e-05, 4.117e-05, 4.119e-05, 26393.29426587], [1516447920000, 4.119e-05, 4.126e-05, 4.119e-05, 4.125e-05, 65951.48996356], [1516447980000, 4.121e-05, 4.126e-05, 4.121e-05, 4.126e-05, 19231.72545353], [1516448040000, 4.121e-05, 4.126e-05, 4.121e-05, 4.126e-05, 16122.1431713], [1516448100000, 4.126e-05, 4.126e-05, 4.122e-05, 4.122e-05, 16688.60821546], [1516448160000, 4.123e-05, 4.126e-05, 4.122e-05, 4.125e-05, 8121.10415695], [1516448220000, 4.125e-05, 4.125e-05, 4.122e-05, 4.125e-05, 3003.59195624], [1516448280000, 4.125e-05, 4.126e-05, 4.122e-05, 4.125e-05, 31962.47480288], [1516448340000, 4.126e-05, 4.126e-05, 4.125e-05, 4.125e-05, 254.41974363], [1516448400000, 4.126e-05, 4.126e-05, 4.125e-05, 4.126e-05, 31304.84272182], [1516448460000, 4.126e-05, 4.14e-05, 4.126e-05, 4.127e-05, 8161.95338828], [1516448520000, 4.127e-05, 4.127e-05, 4.123e-05, 4.123e-05, 2292.17066505], [1516448580000, 4.125e-05, 4.125e-05, 4.123e-05, 4.123e-05, 2647.25404989], [1516448640000, 4.123e-05, 4.133e-05, 4.123e-05, 4.125e-05, 14569.38170804], [1516448700000, 4.133e-05, 4.133e-05, 4.123e-05, 4.133e-05, 58273.9898332], [1516448760000, 4.125e-05, 4.133e-05, 4.125e-05, 4.126e-05, 4390.46772171], [1516448820000, 4.125e-05, 4.133e-05, 4.125e-05, 4.125e-05, 9102.83755365], [1516448880000, 4.133e-05, 4.133e-05, 4.125e-05, 4.125e-05, 9732.79019001], [1516448940000, 4.125e-05, 4.132e-05, 4.123e-05, 4.123e-05, 3604.44429611], [1516449000000, 4.123e-05, 4.132e-05, 4.12e-05, 4.121e-05, 4617.38836156], [1516449060000, 4.131e-05, 4.132e-05, 4.121e-05, 4.122e-05, 1135.70686419], [1516449120000, 4.122e-05, 4.13e-05, 4.121e-05, 4.121e-05, 4215.47645121], [1516449180000, 4.121e-05, 4.129e-05, 4.121e-05, 4.122e-05, 3871.38318709], [1516449240000, 4.122e-05, 4.122e-05, 4.121e-05, 4.122e-05, 12777.08651791], [1516449300000, 4.121e-05, 4.122e-05, 4.12e-05, 4.12e-05, 3617.08696435], [1516449360000, 4.12e-05, 4.121e-05, 4.111e-05, 4.111e-05, 18660.96567758], [1516449420000, 4.113e-05, 4.113e-05, 4.08e-05, 4.089e-05, 108591.42188247], [1516449480000, 4.089e-05, 4.112e-05, 4.08e-05, 4.112e-05, 15910.90351468], [1516449540000, 4.08e-05, 4.08e-05, 4.065e-05, 4.065e-05, 19639.37608415], [1516449600000, 4.065e-05, 4.112e-05, 4.065e-05, 4.112e-05, 24195.39904588], [1516449660000, 4.112e-05, 4.112e-05, 4.062e-05, 4.108e-05, 69255.06925317], [1516449720000, 4.107e-05, 4.108e-05, 4.07e-05, 4.07e-05, 32523.98959748], [1516449780000, 4.079e-05, 4.1e-05, 4.07e-05, 4.1e-05, 8990.15146763], [1516449840000, 4.1e-05, 4.1e-05, 4.081e-05, 4.081e-05, 8728.89364129], [1516449900000, 4.09e-05, 4.09e-05, 4.081e-05, 4.081e-05, 4893.01264543], [1516449960000, 4.083e-05, 4.098e-05, 4.083e-05, 4.098e-05, 1614.09565336], [1516450020000, 4.099e-05, 4.107e-05, 4.098e-05, 4.1e-05, 22392.52084635], [1516450080000, 4.1e-05, 4.107e-05, 4.1e-05, 4.104e-05, 17252.73401885], [1516450140000, 4.103e-05, 4.107e-05, 4.103e-05, 4.107e-05, 76615.01427783], [1516450200000, 4.104e-05, 4.122e-05, 4.103e-05, 4.104e-05, 7350.29043731], [1516450260000, 4.112e-05, 4.122e-05, 4.11e-05, 4.11e-05, 9114.71971081], [1516450320000, 4.11e-05, 4.124e-05, 4.11e-05, 4.11e-05, 4403.82456091], [1516450380000, 4.11e-05, 4.111e-05, 4.104e-05, 4.104e-05, 13262.54212767], [1516450440000, 4.105e-05, 4.106e-05, 4.105e-05, 4.106e-05, 1116.36293569], [1516450500000, 4.105e-05, 4.105e-05, 4.104e-05, 4.105e-05, 6112.36356555], [1516450560000, 4.104e-05, 4.125e-05, 4.104e-05, 4.125e-05, 16761.65443936], [1516450620000, 4.105e-05, 4.125e-05, 4.105e-05, 4.125e-05, 1037.32104305], [1516450680000, 4.125e-05, 4.127e-05, 4.125e-05, 4.125e-05, 1688.23589881], [1516450740000, 4.125e-05, 4.125e-05, 4.108e-05, 4.109e-05, 679.59230097], [1516450800000, 4.109e-05, 4.141e-05, 4.109e-05, 4.109e-05, 10721.08877621], [1516450860000, 4.109e-05, 4.112e-05, 4.109e-05, 4.112e-05, 1776.17492649], [1516450920000, 4.112e-05, 4.12e-05, 4.112e-05, 4.118e-05, 3805.05791571], [1516450980000, 4.119e-05, 4.12e-05, 4.118e-05, 4.118e-05, 8183.96981172], [1516451040000, 4.119e-05, 4.139e-05, 4.118e-05, 4.139e-05, 3214.05086506], [1516451100000, 4.121e-05, 4.141e-05, 4.121e-05, 4.123e-05, 15197.19661486], [1516451160000, 4.123e-05, 4.141e-05, 4.123e-05, 4.124e-05, 2336.85529453], [1516451220000, 4.124e-05, 4.14e-05, 4.124e-05, 4.124e-05, 2739.81404088], [1516451280000, 4.139e-05, 4.141e-05, 4.124e-05, 4.141e-05, 5817.13831908], [1516451340000, 4.141e-05, 4.152e-05, 4.127e-05, 4.128e-05, 27474.45634235], [1516451400000, 4.153e-05, 4.153e-05, 4.129e-05, 4.129e-05, 755.05065237], [1516451460000, 4.139e-05, 4.153e-05, 4.139e-05, 4.141e-05, 5332.61768434], [1516451520000, 4.141e-05, 4.153e-05, 4.14e-05, 4.141e-05, 2771.23762939], [1516451580000, 4.142e-05, 4.153e-05, 4.142e-05, 4.142e-05, 12455.48069341], [1516451640000, 4.142e-05, 4.152e-05, 4.141e-05, 4.141e-05, 16823.97901596], [1516451700000, 4.152e-05, 4.153e-05, 4.141e-05, 4.141e-05, 61677.81042812], [1516451760000, 4.141e-05, 4.141e-05, 4.141e-05, 4.141e-05, 16231.64061785], [1516451820000, 4.145e-05, 4.15e-05, 4.141e-05, 4.141e-05, 10603.60983675], [1516451880000, 4.141e-05, 4.141e-05, 4.129e-05, 4.138e-05, 16408.90296207], [1516451940000, 4.138e-05, 4.149e-05, 4.138e-05, 4.14e-05, 7129.49744986], [1516452000000, 4.149e-05, 4.149e-05, 4.14e-05, 4.148e-05, 1392.82357879], [1516452060000, 4.148e-05, 4.148e-05, 4.128e-05, 4.128e-05, 3859.03454725], [1516452120000, 4.128e-05, 4.147e-05, 4.121e-05, 4.127e-05, 5254.55727903], [1516452180000, 4.128e-05, 4.147e-05, 4.111e-05, 4.147e-05, 60309.84203562], [1516452240000, 4.145e-05, 4.147e-05, 4.132e-05, 4.132e-05, 8222.71150466], [1516452300000, 4.14e-05, 4.142e-05, 4.105e-05, 4.14e-05, 9722.17920953], [1516452360000, 4.14e-05, 4.14e-05, 4.115e-05, 4.138e-05, 2842.21715046], [1516452420000, 4.138e-05, 4.138e-05, 4.115e-05, 4.137e-05, 6831.70370875], [1516452480000, 4.118e-05, 4.137e-05, 4.117e-05, 4.12e-05, 17261.91377233], [1516452540000, 4.12e-05, 4.137e-05, 4.12e-05, 4.136e-05, 4930.49807374], [1516452600000, 4.123e-05, 4.129e-05, 4.117e-05, 4.129e-05, 13443.17164836], [1516452660000, 4.12e-05, 4.12e-05, 4.115e-05, 4.115e-05, 26018.12219596], [1516452720000, 4.118e-05, 4.118e-05, 4.116e-05, 4.116e-05, 983.90438482], [1516452780000, 4.115e-05, 4.116e-05, 4.104e-05, 4.115e-05, 811.24473378], [1516452840000, 4.105e-05, 4.115e-05, 4.103e-05, 4.113e-05, 6688.33548856], [1516452900000, 4.104e-05, 4.112e-05, 4.104e-05, 4.112e-05, 4220.43542088], [1516452960000, 4.113e-05, 4.115e-05, 4.113e-05, 4.115e-05, 4419.70816003], [1516453020000, 4.115e-05, 4.115e-05, 4.112e-05, 4.114e-05, 3291.36185429], [1516453080000, 4.114e-05, 4.114e-05, 4.112e-05, 4.112e-05, 5168.36149912], [1516453140000, 4.113e-05, 4.113e-05, 4.112e-05, 4.112e-05, 1817.74024117], [1516453200000, 4.113e-05, 4.115e-05, 4.112e-05, 4.115e-05, 7663.62526779], [1516453260000, 4.115e-05, 4.115e-05, 4.114e-05, 4.115e-05, 11532.15194636], [1516453320000, 4.115e-05, 4.115e-05, 4.114e-05, 4.115e-05, 677.50084091], [1516453380000, 4.118e-05, 4.136e-05, 4.118e-05, 4.118e-05, 52257.93920787], [1516453440000, 4.12e-05, 4.135e-05, 4.118e-05, 4.135e-05, 9570.59240018], [1516453500000, 4.135e-05, 4.135e-05, 4.135e-05, 4.135e-05, 3493.13640613], [1516453560000, 4.135e-05, 4.135e-05, 4.119e-05, 4.12e-05, 25581.18776576], [1516453620000, 4.134e-05, 4.137e-05, 4.125e-05, 4.125e-05, 136.37466977], [1516453680000, 4.129e-05, 4.137e-05, 4.125e-05, 4.137e-05, 10169.64826979], [1516453740000, 4.136e-05, 4.137e-05, 4.13e-05, 4.13e-05, 315.1971603], [1516453800000, 4.136e-05, 4.136e-05, 4.135e-05, 4.135e-05, 3771.76583179], [1516453860000, 4.136e-05, 4.136e-05, 4.13e-05, 4.13e-05, 6625.45847353], [1516453920000, 4.135e-05, 4.135e-05, 4.134e-05, 4.135e-05, 87677.90131913], [1516453980000, 4.135e-05, 4.136e-05, 4.135e-05, 4.135e-05, 36541.84343436], [1516454040000, 4.136e-05, 4.147e-05, 4.136e-05, 4.147e-05, 129144.94202903], [1516454100000, 4.141e-05, 4.141e-05, 4.141e-05, 4.141e-05, 2440.92595545], [1516454160000, 4.141e-05, 4.147e-05, 4.141e-05, 4.141e-05, 1202.12398132], [1516454220000, 4.141e-05, 4.145e-05, 4.136e-05, 4.145e-05, 3826.65618956], [1516454280000, 4.143e-05, 4.143e-05, 4.135e-05, 4.135e-05, 5822.00567673], [1516454340000, 4.142e-05, 4.143e-05, 4.142e-05, 4.143e-05, 4455.03712269], [1516454400000, 4.143e-05, 4.145e-05, 4.143e-05, 4.145e-05, 5348.86307732], [1516454460000, 4.143e-05, 4.145e-05, 4.143e-05, 4.145e-05, 3857.78810398], [1516454520000, 4.145e-05, 4.148e-05, 4.145e-05, 4.147e-05, 1270.0107614], [1516454580000, 4.145e-05, 4.147e-05, 4.145e-05, 4.147e-05, 2281.08642584], [1516454640000, 4.147e-05, 4.147e-05, 4.145e-05, 4.147e-05, 5025.62990259], [1516454700000, 4.147e-05, 4.148e-05, 4.147e-05, 4.148e-05, 5468.13532917], [1516454760000, 4.15e-05, 4.152e-05, 4.149e-05, 4.152e-05, 6498.52406298], [1516454820000, 4.151e-05, 4.155e-05, 4.151e-05, 4.151e-05, 6161.07801685], [1516454880000, 4.151e-05, 4.152e-05, 4.151e-05, 4.152e-05, 19570.96185394], [1516454940000, 4.151e-05, 4.155e-05, 4.151e-05, 4.152e-05, 2093.23071656], [1516455000000, 4.152e-05, 4.152e-05, 4.15e-05, 4.15e-05, 5995.04433782], [1516455060000, 4.15e-05, 4.152e-05, 4.149e-05, 4.15e-05, 20005.11726878], [1516455120000, 4.15e-05, 4.152e-05, 4.149e-05, 4.151e-05, 2932.17834686], [1516455180000, 4.149e-05, 4.151e-05, 4.149e-05, 4.151e-05, 84368.256293], [1516455240000, 4.149e-05, 4.15e-05, 4.147e-05, 4.147e-05, 38939.6973237], [1516455300000, 4.147e-05, 4.149e-05, 4.123e-05, 4.149e-05, 17477.90083011], [1516455360000, 4.149e-05, 4.149e-05, 4.135e-05, 4.135e-05, 6399.78971849], [1516455420000, 4.135e-05, 4.149e-05, 4.135e-05, 4.147e-05, 7534.81383635], [1516455480000, 4.135e-05, 4.14e-05, 4.134e-05, 4.134e-05, 2657.04934998], [1516455540000, 4.134e-05, 4.137e-05, 4.134e-05, 4.137e-05, 12890.91929169], [1516455600000, 4.137e-05, 4.137e-05, 4.134e-05, 4.137e-05, 10771.99437992], [1516455660000, 4.145e-05, 4.145e-05, 4.134e-05, 4.136e-05, 43109.43394317], [1516455720000, 4.134e-05, 4.134e-05, 4.132e-05, 4.133e-05, 2405.60681584], [1516455780000, 4.127e-05, 4.127e-05, 4.119e-05, 4.12e-05, 54159.91796027], [1516455840000, 4.12e-05, 4.123e-05, 4.118e-05, 4.119e-05, 20129.57368184], [1516455900000, 4.118e-05, 4.119e-05, 4.11e-05, 4.111e-05, 16585.42837081], [1516455960000, 4.115e-05, 4.117e-05, 4.115e-05, 4.116e-05, 48483.59396141], [1516456020000, 4.117e-05, 4.117e-05, 4.116e-05, 4.117e-05, 656.82070671], [1516456080000, 4.117e-05, 4.117e-05, 4.111e-05, 4.111e-05, 9468.59077546], [1516456140000, 4.111e-05, 4.111e-05, 4.111e-05, 4.111e-05, 6329.2207723], [1516456200000, 4.11e-05, 4.111e-05, 4.11e-05, 4.11e-05, 1274.93351682], [1516456260000, 4.111e-05, 4.111e-05, 4.11e-05, 4.11e-05, 4043.37564882], [1516456320000, 4.111e-05, 4.111e-05, 4.106e-05, 4.111e-05, 30445.93774357], [1516456380000, 4.106e-05, 4.106e-05, 4.103e-05, 4.105e-05, 19413.39429911], [1516456440000, 4.105e-05, 4.105e-05, 4.101e-05, 4.103e-05, 6554.38229972], [1516456500000, 4.103e-05, 4.103e-05, 4.102e-05, 4.103e-05, 5104.24046592], [1516456560000, 4.103e-05, 4.103e-05, 4.102e-05, 4.102e-05, 8058.8255762], [1516456620000, 4.102e-05, 4.11e-05, 4.102e-05, 4.102e-05, 22376.15115483], [1516456680000, 4.102e-05, 4.102e-05, 4.101e-05, 4.102e-05, 22331.5074062], [1516456740000, 4.102e-05, 4.102e-05, 4.102e-05, 4.102e-05, 5329.55876811], [1516456800000, 4.102e-05, 4.102e-05, 4.101e-05, 4.102e-05, 36754.10778361], [1516456860000, 4.102e-05, 4.102e-05, 4.1e-05, 4.101e-05, 13297.1922493], [1516456920000, 4.102e-05, 4.102e-05, 4.1e-05, 4.101e-05, 14022.51266542], [1516456980000, 4.101e-05, 4.102e-05, 4.1e-05, 4.102e-05, 15761.54384914], [1516457040000, 4.102e-05, 4.102e-05, 4.1e-05, 4.102e-05, 11526.52270216], [1516457100000, 4.102e-05, 4.102e-05, 4.1e-05, 4.102e-05, 14042.01743131], [1516457160000, 4.102e-05, 4.102e-05, 4.1e-05, 4.102e-05, 7349.25845631], [1516457220000, 4.1e-05, 4.102e-05, 4.1e-05, 4.102e-05, 12401.4617201], [1516457280000, 4.102e-05, 4.102e-05, 4.085e-05, 4.1e-05, 17146.86728224], [1516457340000, 4.1e-05, 4.1e-05, 4.094e-05, 4.1e-05, 15760.60044819], [1516457400000, 4.1e-05, 4.1e-05, 4.077e-05, 4.1e-05, 3278.0586972], [1516457460000, 4.1e-05, 4.1e-05, 4.1e-05, 4.1e-05, 2618.18636183], [1516457520000, 4.1e-05, 4.1e-05, 4.082e-05, 4.099e-05, 7840.74148578], [1516457580000, 4.099e-05, 4.1e-05, 4.077e-05, 4.099e-05, 22788.10008462], [1516457640000, 4.099e-05, 4.099e-05, 4.085e-05, 4.099e-05, 1086.5749009], [1516457700000, 4.099e-05, 4.099e-05, 4.08e-05, 4.08e-05, 2158.65169275], [1516457760000, 4.099e-05, 4.099e-05, 4.09e-05, 4.099e-05, 31898.09547518], [1516457820000, 4.099e-05, 4.099e-05, 4.09e-05, 4.09e-05, 5182.0234019], [1516457880000, 4.099e-05, 4.099e-05, 4.09e-05, 4.098e-05, 10597.1770208], [1516457940000, 4.098e-05, 4.099e-05, 4.091e-05, 4.099e-05, 10840.73804498], [1516458000000, 4.099e-05, 4.103e-05, 4.09e-05, 4.101e-05, 10871.83340363], [1516458060000, 4.104e-05, 4.104e-05, 4.1e-05, 4.1e-05, 1675.19720048], [1516458120000, 4.104e-05, 4.104e-05, 4.1e-05, 4.1e-05, 7551.66776438], [1516458180000, 4.104e-05, 4.104e-05, 4.09e-05, 4.09e-05, 37328.38116796], [1516458240000, 4.098e-05, 4.098e-05, 4.086e-05, 4.09e-05, 41963.36111333], [1516458300000, 4.09e-05, 4.09e-05, 4.088e-05, 4.088e-05, 62435.35949618], [1516458360000, 4.088e-05, 4.088e-05, 4.082e-05, 4.087e-05, 39966.22177951], [1516458420000, 4.087e-05, 4.088e-05, 4.084e-05, 4.085e-05, 31531.08570963], [1516458480000, 4.085e-05, 4.09e-05, 4.085e-05, 4.09e-05, 23188.26648745], [1516458540000, 4.09e-05, 4.09e-05, 4.09e-05, 4.09e-05, 1926.89307717], [1516458600000, 4.09e-05, 4.098e-05, 4.09e-05, 4.097e-05, 3943.35157822], [1516458660000, 4.097e-05, 4.098e-05, 4.09e-05, 4.098e-05, 5135.83908773], [1516458720000, 4.098e-05, 4.098e-05, 4.091e-05, 4.098e-05, 5103.93735709], [1516458780000, 4.091e-05, 4.11e-05, 4.091e-05, 4.098e-05, 10151.65578836], [1516458840000, 4.099e-05, 4.11e-05, 4.098e-05, 4.098e-05, 7758.55714869], [1516458900000, 4.097e-05, 4.111e-05, 4.097e-05, 4.111e-05, 22618.38042381], [1516458960000, 4.111e-05, 4.111e-05, 4.111e-05, 4.111e-05, 682.26127555], [1516459020000, 4.11e-05, 4.11e-05, 4.11e-05, 4.11e-05, 73.13793102], [1516459080000, 4.11e-05, 4.11e-05, 4.109e-05, 4.11e-05, 1062.4892149], [1516459140000, 4.109e-05, 4.109e-05, 4.098e-05, 4.098e-05, 1609.11145969], [1516459200000, 4.109e-05, 4.109e-05, 4.098e-05, 4.098e-05, 7604.13471013], [1516459260000, 4.098e-05, 4.099e-05, 4.096e-05, 4.099e-05, 17793.48911852], [1516459320000, 4.098e-05, 4.098e-05, 4.096e-05, 4.096e-05, 2540.20250465], [1516459380000, 4.096e-05, 4.109e-05, 4.096e-05, 4.109e-05, 6494.70029891], [1516459440000, 4.11e-05, 4.11e-05, 4.096e-05, 4.096e-05, 6647.95630887], [1516459500000, 4.11e-05, 4.11e-05, 4.096e-05, 4.096e-05, 1047.73949901], [1516459560000, 4.097e-05, 4.11e-05, 4.096e-05, 4.097e-05, 9083.56504612], [1516459620000, 4.097e-05, 4.111e-05, 4.097e-05, 4.098e-05, 11275.03483468], [1516459680000, 4.098e-05, 4.109e-05, 4.098e-05, 4.109e-05, 1669.14174292], [1516459740000, 4.109e-05, 4.109e-05, 4.109e-05, 4.109e-05, 233.82429302], [1516459800000, 4.109e-05, 4.109e-05, 4.099e-05, 4.099e-05, 1202.58652121], [1516459860000, 4.099e-05, 4.102e-05, 4.099e-05, 4.102e-05, 10509.10163052], [1516459920000, 4.102e-05, 4.107e-05, 4.102e-05, 4.107e-05, 1497.86508879], [1516459980000, 4.102e-05, 4.107e-05, 4.102e-05, 4.107e-05, 1854.83804478], [1516460040000, 4.107e-05, 4.107e-05, 4.098e-05, 4.107e-05, 4228.75426133], [1516460160000, 4.098e-05, 4.098e-05, 4.098e-05, 4.098e-05, 439.34470794], [1516460220000, 4.098e-05, 4.098e-05, 4.094e-05, 4.094e-05, 9258.49344912], [1516460280000, 4.094e-05, 4.095e-05, 4.088e-05, 4.088e-05, 31810.6717125], [1516460340000, 4.09e-05, 4.094e-05, 4.088e-05, 4.094e-05, 17642.55312799], [1516460400000, 4.094e-05, 4.094e-05, 4.09e-05, 4.09e-05, 7197.2503763], [1516460460000, 4.09e-05, 4.09e-05, 4.088e-05, 4.088e-05, 11018.6149456], [1516460520000, 4.088e-05, 4.094e-05, 4.088e-05, 4.09e-05, 1873.67840598], [1516460580000, 4.09e-05, 4.094e-05, 4.09e-05, 4.094e-05, 6266.60303707], [1516460640000, 4.093e-05, 4.094e-05, 4.09e-05, 4.09e-05, 7482.37509154], [1516460700000, 4.093e-05, 4.105e-05, 4.093e-05, 4.105e-05, 8826.37216824], [1516460760000, 4.105e-05, 4.111e-05, 4.105e-05, 4.111e-05, 289192.43181745], [1516460820000, 4.111e-05, 4.111e-05, 4.111e-05, 4.111e-05, 247.03880699], [1516460880000, 4.108e-05, 4.109e-05, 4.108e-05, 4.108e-05, 3822.56232836], [1516460940000, 4.108e-05, 4.108e-05, 4.105e-05, 4.106e-05, 532.79080077], [1516461000000, 4.106e-05, 4.106e-05, 4.105e-05, 4.106e-05, 3056.0187975], [1516461060000, 4.105e-05, 4.106e-05, 4.105e-05, 4.106e-05, 1444.83923719], [1516461120000, 4.105e-05, 4.108e-05, 4.105e-05, 4.108e-05, 8209.58736798], [1516461180000, 4.106e-05, 4.108e-05, 4.106e-05, 4.106e-05, 4742.54950964], [1516461240000, 4.108e-05, 4.109e-05, 4.106e-05, 4.106e-05, 15024.35001593], [1516461300000, 4.107e-05, 4.107e-05, 4.105e-05, 4.106e-05, 1743.91147697], [1516461360000, 4.106e-05, 4.109e-05, 4.106e-05, 4.109e-05, 535.3663028], [1516461420000, 4.106e-05, 4.108e-05, 4.104e-05, 4.108e-05, 12317.359967], [1516461480000, 4.104e-05, 4.106e-05, 4.104e-05, 4.106e-05, 2472.57156418], [1516461540000, 4.107e-05, 4.108e-05, 4.107e-05, 4.108e-05, 12976.39075709], [1516461600000, 4.109e-05, 4.109e-05, 4.108e-05, 4.109e-05, 933.80687333], [1516461660000, 4.108e-05, 4.11e-05, 4.108e-05, 4.11e-05, 4833.5586487], [1516461720000, 4.11e-05, 4.11e-05, 4.109e-05, 4.109e-05, 16167.29337937], [1516461780000, 4.11e-05, 4.111e-05, 4.109e-05, 4.111e-05, 11500.2953594], [1516461840000, 4.116e-05, 4.116e-05, 4.111e-05, 4.116e-05, 10882.21770741], [1516461900000, 4.111e-05, 4.112e-05, 4.111e-05, 4.112e-05, 122929.73745044], [1516461960000, 4.112e-05, 4.112e-05, 4.109e-05, 4.111e-05, 4526.06022431], [1516462020000, 4.112e-05, 4.112e-05, 4.111e-05, 4.112e-05, 2920.52740562], [1516462080000, 4.112e-05, 4.112e-05, 4.109e-05, 4.112e-05, 18499.74468868], [1516462140000, 4.112e-05, 4.112e-05, 4.111e-05, 4.111e-05, 1140.42447714], [1516462200000, 4.109e-05, 4.111e-05, 4.108e-05, 4.108e-05, 75320.88688185], [1516462260000, 4.108e-05, 4.108e-05, 4.104e-05, 4.104e-05, 269.95406218], [1516462320000, 4.104e-05, 4.108e-05, 4.1e-05, 4.105e-05, 25088.51283791], [1516462380000, 4.1e-05, 4.116e-05, 4.1e-05, 4.116e-05, 104819.00123231], [1516462440000, 4.116e-05, 4.12e-05, 4.101e-05, 4.12e-05, 5149.69963836], [1516462500000, 4.12e-05, 4.12e-05, 4.119e-05, 4.12e-05, 12167.2994876], [1516462560000, 4.128e-05, 4.175e-05, 4.12e-05, 4.147e-05, 161845.63407789], [1516462620000, 4.148e-05, 4.224e-05, 4.148e-05, 4.224e-05, 444857.54305234], [1516462680000, 4.208e-05, 4.238e-05, 4.192e-05, 4.2e-05, 126652.25782309], [1516462740000, 4.207e-05, 4.223e-05, 4.2e-05, 4.202e-05, 31448.69319223], [1516462800000, 4.203e-05, 4.21e-05, 4.17e-05, 4.17e-05, 74305.58859793], [1516462860000, 4.194e-05, 4.194e-05, 4.172e-05, 4.174e-05, 21420.94834457], [1516462920000, 4.19e-05, 4.192e-05, 4.174e-05, 4.19e-05, 5095.96749568], [1516462980000, 4.19e-05, 4.199e-05, 4.19e-05, 4.199e-05, 27256.52466694], [1516463040000, 4.198e-05, 4.198e-05, 4.192e-05, 4.192e-05, 2102.34176106], [1516463100000, 4.19e-05, 4.194e-05, 4.177e-05, 4.194e-05, 9518.87834475], [1516463160000, 4.193e-05, 4.194e-05, 4.175e-05, 4.175e-05, 8361.96441443], [1516463220000, 4.178e-05, 4.194e-05, 4.178e-05, 4.194e-05, 7261.91335848], [1516463280000, 4.192e-05, 4.192e-05, 4.174e-05, 4.186e-05, 7762.18125043], [1516463340000, 4.186e-05, 4.194e-05, 4.186e-05, 4.194e-05, 969.49087979], [1516463400000, 4.186e-05, 4.194e-05, 4.175e-05, 4.194e-05, 8715.14291126], [1516463460000, 4.194e-05, 4.194e-05, 4.188e-05, 4.189e-05, 2130.44419339], [1516463520000, 4.19e-05, 4.194e-05, 4.175e-05, 4.175e-05, 8281.51366725], [1516463580000, 4.175e-05, 4.175e-05, 4.174e-05, 4.174e-05, 4143.83159529], [1516463640000, 4.175e-05, 4.186e-05, 4.175e-05, 4.186e-05, 290.10605473], [1516463700000, 4.185e-05, 4.185e-05, 4.184e-05, 4.184e-05, 6155.07572406], [1516463760000, 4.183e-05, 4.184e-05, 4.174e-05, 4.174e-05, 93631.39730711], [1516463820000, 4.174e-05, 4.181e-05, 4.174e-05, 4.181e-05, 11668.1210626], [1516463880000, 4.175e-05, 4.185e-05, 4.174e-05, 4.185e-05, 21876.28174133], [1516463940000, 4.186e-05, 4.193e-05, 4.186e-05, 4.19e-05, 2760.52013237], [1516464000000, 4.19e-05, 4.198e-05, 4.186e-05, 4.186e-05, 34840.99210813], [1516464060000, 4.186e-05, 4.198e-05, 4.185e-05, 4.186e-05, 10861.06388146], [1516464120000, 4.186e-05, 4.197e-05, 4.18e-05, 4.197e-05, 10902.58841558], [1516464180000, 4.186e-05, 4.196e-05, 4.172e-05, 4.192e-05, 10170.59537117], [1516464240000, 4.172e-05, 4.172e-05, 4.172e-05, 4.172e-05, 1990.92114107], [1516464300000, 4.174e-05, 4.174e-05, 4.172e-05, 4.172e-05, 5173.8888348], [1516464360000, 4.174e-05, 4.186e-05, 4.174e-05, 4.175e-05, 10321.86056936], [1516464420000, 4.175e-05, 4.19e-05, 4.175e-05, 4.175e-05, 13461.41290753], [1516464480000, 4.177e-05, 4.188e-05, 4.177e-05, 4.188e-05, 1499.54276817], [1516464540000, 4.188e-05, 4.188e-05, 4.188e-05, 4.188e-05, 2569.29040517], [1516464600000, 4.188e-05, 4.188e-05, 4.177e-05, 4.177e-05, 8072.811523], [1516464660000, 4.187e-05, 4.187e-05, 4.177e-05, 4.177e-05, 6168.24511731], [1516464720000, 4.177e-05, 4.177e-05, 4.175e-05, 4.175e-05, 8261.19460166], [1516464780000, 4.177e-05, 4.177e-05, 4.175e-05, 4.176e-05, 7610.79300146], [1516464840000, 4.176e-05, 4.188e-05, 4.176e-05, 4.188e-05, 2008.85610086], [1516464900000, 4.188e-05, 4.188e-05, 4.185e-05, 4.185e-05, 5285.80493896], [1516464960000, 4.185e-05, 4.187e-05, 4.177e-05, 4.177e-05, 6855.54113595], [1516465020000, 4.186e-05, 4.187e-05, 4.181e-05, 4.181e-05, 15645.28430661], [1516465080000, 4.181e-05, 4.181e-05, 4.164e-05, 4.164e-05, 31701.33538584], [1516465140000, 4.177e-05, 4.181e-05, 4.177e-05, 4.181e-05, 1286.35188271], [1516465200000, 4.181e-05, 4.181e-05, 4.162e-05, 4.174e-05, 32578.30872803], [1516465260000, 4.174e-05, 4.181e-05, 4.161e-05, 4.173e-05, 72273.79716396], [1516465320000, 4.165e-05, 4.193e-05, 4.164e-05, 4.17e-05, 13168.33940717], [1516465380000, 4.17e-05, 4.193e-05, 4.164e-05, 4.164e-05, 11367.71954001], [1516465440000, 4.164e-05, 4.189e-05, 4.164e-05, 4.188e-05, 5505.7607103], [1516465500000, 4.161e-05, 4.164e-05, 4.161e-05, 4.164e-05, 1613.04120576], [1516465560000, 4.16e-05, 4.164e-05, 4.16e-05, 4.162e-05, 14984.83476903], [1516465620000, 4.162e-05, 4.162e-05, 4.154e-05, 4.154e-05, 21718.28320661], [1516465680000, 4.154e-05, 4.16e-05, 4.154e-05, 4.159e-05, 1792.12164658], [1516465740000, 4.159e-05, 4.159e-05, 4.154e-05, 4.154e-05, 30901.40666538], [1516465800000, 4.159e-05, 4.159e-05, 4.158e-05, 4.159e-05, 8445.12307372], [1516465860000, 4.158e-05, 4.158e-05, 4.154e-05, 4.155e-05, 1678.73554594], [1516465920000, 4.158e-05, 4.158e-05, 4.154e-05, 4.156e-05, 5993.97645776], [1516465980000, 4.154e-05, 4.158e-05, 4.154e-05, 4.158e-05, 11364.51399531], [1516466040000, 4.159e-05, 4.159e-05, 4.158e-05, 4.158e-05, 1896.81249314], [1516466100000, 4.158e-05, 4.159e-05, 4.158e-05, 4.159e-05, 11724.6724774], [1516466160000, 4.159e-05, 4.159e-05, 4.158e-05, 4.159e-05, 2454.33074741], [1516466220000, 4.158e-05, 4.159e-05, 4.158e-05, 4.159e-05, 5708.80288439], [1516466280000, 4.159e-05, 4.159e-05, 4.158e-05, 4.158e-05, 6034.45993078], [1516466340000, 4.158e-05, 4.16e-05, 4.157e-05, 4.16e-05, 51807.74670661], [1516466400000, 4.16e-05, 4.16e-05, 4.156e-05, 4.156e-05, 43996.13843723], [1516466460000, 4.16e-05, 4.162e-05, 4.16e-05, 4.162e-05, 13058.37597503], [1516466520000, 4.162e-05, 4.162e-05, 4.161e-05, 4.162e-05, 3503.39178729], [1516466580000, 4.162e-05, 4.162e-05, 4.161e-05, 4.161e-05, 3469.63817906], [1516466640000, 4.16e-05, 4.161e-05, 4.16e-05, 4.16e-05, 3959.26027397], [1516466700000, 4.16e-05, 4.16e-05, 4.157e-05, 4.157e-05, 5893.94912338], [1516466760000, 4.16e-05, 4.162e-05, 4.154e-05, 4.156e-05, 61559.03761277], [1516466820000, 4.156e-05, 4.16e-05, 4.154e-05, 4.159e-05, 1035.506025], [1516466880000, 4.159e-05, 4.159e-05, 4.156e-05, 4.156e-05, 8136.6133376], [1516466940000, 4.156e-05, 4.156e-05, 4.154e-05, 4.154e-05, 15318.41840151], [1516467000000, 4.154e-05, 4.156e-05, 4.154e-05, 4.156e-05, 109.66105071], [1516467060000, 4.154e-05, 4.154e-05, 4.15e-05, 4.15e-05, 26849.87024445], [1516467120000, 4.153e-05, 4.154e-05, 4.147e-05, 4.147e-05, 2485.39442152], [1516467180000, 4.148e-05, 4.148e-05, 4.147e-05, 4.148e-05, 1232.14440111], [1516467240000, 4.148e-05, 4.149e-05, 4.148e-05, 4.149e-05, 3249.70151581], [1516467300000, 4.148e-05, 4.15e-05, 4.147e-05, 4.147e-05, 185651.84906003], [1516467360000, 4.149e-05, 4.149e-05, 4.147e-05, 4.147e-05, 43602.23046961], [1516467420000, 4.147e-05, 4.148e-05, 4.147e-05, 4.148e-05, 3637.68453346], [1516467480000, 4.148e-05, 4.149e-05, 4.148e-05, 4.149e-05, 1816.55149815], [1516467540000, 4.148e-05, 4.154e-05, 4.148e-05, 4.149e-05, 7966.95473724], [1516467600000, 4.149e-05, 4.149e-05, 4.147e-05, 4.148e-05, 53723.87052128], [1516467660000, 4.149e-05, 4.154e-05, 4.147e-05, 4.147e-05, 13561.87002885], [1516467720000, 4.147e-05, 4.162e-05, 4.147e-05, 4.162e-05, 6404.0560849], [1516467780000, 4.161e-05, 4.163e-05, 4.161e-05, 4.162e-05, 45157.52311655], [1516467840000, 4.162e-05, 4.165e-05, 4.162e-05, 4.165e-05, 34092.82978917], [1516467900000, 4.183e-05, 4.183e-05, 4.165e-05, 4.166e-05, 5222.91639053], [1516467960000, 4.166e-05, 4.182e-05, 4.162e-05, 4.182e-05, 38762.65325329], [1516468020000, 4.165e-05, 4.182e-05, 4.165e-05, 4.182e-05, 2178.36380346], [1516468080000, 4.182e-05, 4.182e-05, 4.166e-05, 4.18e-05, 8763.42816234], [1516468140000, 4.166e-05, 4.194e-05, 4.155e-05, 4.155e-05, 20305.40968178], [1516468200000, 4.151e-05, 4.155e-05, 4.147e-05, 4.155e-05, 11895.40183017], [1516468260000, 4.15e-05, 4.162e-05, 4.147e-05, 4.155e-05, 6867.61970114], [1516468320000, 4.156e-05, 4.162e-05, 4.156e-05, 4.156e-05, 3154.67162904], [1516468380000, 4.156e-05, 4.156e-05, 4.156e-05, 4.156e-05, 14683.97614234], [1516468440000, 4.156e-05, 4.181e-05, 4.156e-05, 4.165e-05, 62788.29610175], [1516468500000, 4.165e-05, 4.169e-05, 4.162e-05, 4.162e-05, 3064.39480403], [1516468560000, 4.163e-05, 4.165e-05, 4.155e-05, 4.165e-05, 4632.53429603], [1516468620000, 4.165e-05, 4.169e-05, 4.156e-05, 4.166e-05, 16190.08340144], [1516468680000, 4.165e-05, 4.169e-05, 4.156e-05, 4.161e-05, 13106.39437256], [1516468740000, 4.169e-05, 4.176e-05, 4.162e-05, 4.169e-05, 10993.26307268], [1516468800000, 4.169e-05, 4.176e-05, 4.162e-05, 4.162e-05, 6854.86615394], [1516468860000, 4.162e-05, 4.162e-05, 4.161e-05, 4.162e-05, 3409.96861526], [1516468920000, 4.163e-05, 4.173e-05, 4.162e-05, 4.173e-05, 10822.44849653], [1516468980000, 4.173e-05, 4.173e-05, 4.163e-05, 4.163e-05, 19575.619838], [1516469040000, 4.173e-05, 4.173e-05, 4.163e-05, 4.163e-05, 8218.90815384], [1516469100000, 4.164e-05, 4.172e-05, 4.164e-05, 4.164e-05, 10044.31339996], [1516469160000, 4.164e-05, 4.173e-05, 4.164e-05, 4.173e-05, 5771.60039407], [1516469220000, 4.173e-05, 4.173e-05, 4.163e-05, 4.163e-05, 9343.85631362], [1516469280000, 4.163e-05, 4.172e-05, 4.163e-05, 4.169e-05, 3994.28822078], [1516469340000, 4.163e-05, 4.163e-05, 4.163e-05, 4.163e-05, 5241.29000192], [1516469400000, 4.169e-05, 4.172e-05, 4.163e-05, 4.163e-05, 9520.60848153], [1516469460000, 4.163e-05, 4.163e-05, 4.163e-05, 4.163e-05, 9458.06455541], [1516469520000, 4.164e-05, 4.164e-05, 4.163e-05, 4.163e-05, 1176.72923071], [1516469580000, 4.163e-05, 4.163e-05, 4.157e-05, 4.163e-05, 6555.35929721], [1516469640000, 4.163e-05, 4.163e-05, 4.156e-05, 4.156e-05, 11086.38937021], [1516469700000, 4.16e-05, 4.16e-05, 4.155e-05, 4.155e-05, 21954.71419597], [1516469760000, 4.16e-05, 4.163e-05, 4.16e-05, 4.163e-05, 366.86102637], [1516469820000, 4.163e-05, 4.166e-05, 4.163e-05, 4.166e-05, 1226.04217837], [1516469880000, 4.165e-05, 4.166e-05, 4.165e-05, 4.166e-05, 3556.4676954], [1516469940000, 4.166e-05, 4.166e-05, 4.166e-05, 4.166e-05, 1656.45439109], [1516470000000, 4.166e-05, 4.167e-05, 4.166e-05, 4.167e-05, 10072.68265], [1516470060000, 4.166e-05, 4.17e-05, 4.16e-05, 4.167e-05, 9469.87400866], [1516470120000, 4.167e-05, 4.167e-05, 4.16e-05, 4.167e-05, 2407.98348103], [1516470180000, 4.168e-05, 4.17e-05, 4.16e-05, 4.168e-05, 14394.52739025], [1516470240000, 4.168e-05, 4.169e-05, 4.168e-05, 4.168e-05, 26687.42656923], [1516470300000, 4.168e-05, 4.17e-05, 4.168e-05, 4.168e-05, 5583.19957913], [1516470360000, 4.168e-05, 4.169e-05, 4.16e-05, 4.161e-05, 11727.20208701], [1516470420000, 4.16e-05, 4.161e-05, 4.16e-05, 4.16e-05, 3267.90291366], [1516470480000, 4.16e-05, 4.16e-05, 4.155e-05, 4.16e-05, 6299.73167287], [1516470540000, 4.16e-05, 4.16e-05, 4.155e-05, 4.155e-05, 16436.16868264], [1516470600000, 4.16e-05, 4.16e-05, 4.157e-05, 4.157e-05, 670.40658671], [1516470660000, 4.159e-05, 4.16e-05, 4.159e-05, 4.16e-05, 1879.90147692], [1516470720000, 4.16e-05, 4.16e-05, 4.155e-05, 4.155e-05, 37344.98128261], [1516470780000, 4.155e-05, 4.155e-05, 4.155e-05, 4.155e-05, 1530.0], [1516470840000, 4.158e-05, 4.159e-05, 4.158e-05, 4.158e-05, 677.35303972], [1516470900000, 4.159e-05, 4.169e-05, 4.158e-05, 4.158e-05, 12558.27334888], [1516470960000, 4.155e-05, 4.158e-05, 4.155e-05, 4.156e-05, 8288.1791607], [1516471020000, 4.156e-05, 4.168e-05, 4.156e-05, 4.168e-05, 2191.5963137], [1516471080000, 4.168e-05, 4.168e-05, 4.168e-05, 4.168e-05, 2932.95920586], [1516471140000, 4.156e-05, 4.156e-05, 4.156e-05, 4.156e-05, 200.0], [1516471200000, 4.159e-05, 4.165e-05, 4.159e-05, 4.16e-05, 7382.03130313], [1516471260000, 4.161e-05, 4.161e-05, 4.158e-05, 4.158e-05, 16344.75801593], [1516471320000, 4.156e-05, 4.158e-05, 4.156e-05, 4.158e-05, 1146.89559621], [1516471380000, 4.157e-05, 4.159e-05, 4.155e-05, 4.159e-05, 49024.42245964], [1516471440000, 4.159e-05, 4.159e-05, 4.156e-05, 4.156e-05, 12366.70661033], [1516471500000, 4.158e-05, 4.159e-05, 4.156e-05, 4.156e-05, 14381.29197626], [1516471560000, 4.158e-05, 4.159e-05, 4.158e-05, 4.158e-05, 7437.87085326], [1516471620000, 4.159e-05, 4.159e-05, 4.158e-05, 4.158e-05, 7660.93154865], [1516471680000, 4.158e-05, 4.159e-05, 4.158e-05, 4.159e-05, 5095.70243877], [1516471740000, 4.159e-05, 4.159e-05, 4.158e-05, 4.159e-05, 29455.20542731], [1516471800000, 4.158e-05, 4.159e-05, 4.158e-05, 4.158e-05, 13398.83639762], [1516471860000, 4.159e-05, 4.159e-05, 4.159e-05, 4.159e-05, 10274.24215051], [1516471920000, 4.159e-05, 4.159e-05, 4.158e-05, 4.159e-05, 2835.00185353], [1516471980000, 4.158e-05, 4.159e-05, 4.158e-05, 4.159e-05, 1051.52693907], [1516472040000, 4.159e-05, 4.159e-05, 4.157e-05, 4.158e-05, 12952.040041], [1516472100000, 4.159e-05, 4.161e-05, 4.159e-05, 4.161e-05, 25622.20624248], [1516472160000, 4.159e-05, 4.16e-05, 4.159e-05, 4.16e-05, 8904.25780802], [1516472220000, 4.16e-05, 4.16e-05, 4.159e-05, 4.159e-05, 12476.07730077], [1516472280000, 4.16e-05, 4.16e-05, 4.159e-05, 4.16e-05, 8650.69598991], [1516472340000, 4.159e-05, 4.161e-05, 4.159e-05, 4.161e-05, 13886.10918554], [1516472400000, 4.161e-05, 4.169e-05, 4.16e-05, 4.169e-05, 5298.11691757], [1516472460000, 4.17e-05, 4.18e-05, 4.169e-05, 4.18e-05, 1886.30066394], [1516472520000, 4.18e-05, 4.189e-05, 4.18e-05, 4.189e-05, 13855.47340858], [1516472580000, 4.189e-05, 4.198e-05, 4.188e-05, 4.198e-05, 42190.33727198], [1516472640000, 4.198e-05, 4.198e-05, 4.19e-05, 4.196e-05, 10506.21402053], [1516472700000, 4.196e-05, 4.196e-05, 4.188e-05, 4.188e-05, 42427.91423031], [1516472760000, 4.188e-05, 4.192e-05, 4.188e-05, 4.192e-05, 4932.75140193], [1516472820000, 4.192e-05, 4.195e-05, 4.18e-05, 4.194e-05, 10687.64294255], [1516472880000, 4.182e-05, 4.186e-05, 4.18e-05, 4.186e-05, 9250.85474677], [1516472940000, 4.188e-05, 4.194e-05, 4.186e-05, 4.194e-05, 1821.9274973], [1516473000000, 4.194e-05, 4.195e-05, 4.188e-05, 4.188e-05, 3132.71564111], [1516473060000, 4.19e-05, 4.199e-05, 4.188e-05, 4.199e-05, 87202.17947923], [1516473120000, 4.198e-05, 4.2e-05, 4.198e-05, 4.199e-05, 58857.34285978], [1516473180000, 4.199e-05, 4.201e-05, 4.199e-05, 4.199e-05, 36355.99441873], [1516473240000, 4.2e-05, 4.2e-05, 4.199e-05, 4.199e-05, 78215.88334012], [1516473300000, 4.199e-05, 4.208e-05, 4.198e-05, 4.199e-05, 21249.99218223], [1516473360000, 4.198e-05, 4.208e-05, 4.198e-05, 4.208e-05, 15900.41743782], [1516473420000, 4.208e-05, 4.225e-05, 4.199e-05, 4.199e-05, 32464.99685383], [1516473480000, 4.221e-05, 4.221e-05, 4.201e-05, 4.205e-05, 28980.42901106], [1516473540000, 4.205e-05, 4.205e-05, 4.201e-05, 4.202e-05, 40537.22886502], [1516473600000, 4.205e-05, 4.215e-05, 4.205e-05, 4.21e-05, 49392.7069675], [1516473660000, 4.21e-05, 4.211e-05, 4.201e-05, 4.21e-05, 121565.703194], [1516473720000, 4.201e-05, 4.21e-05, 4.19e-05, 4.2e-05, 63124.11418465], [1516473780000, 4.2e-05, 4.201e-05, 4.2e-05, 4.2e-05, 103138.82338714], [1516473840000, 4.2e-05, 4.2e-05, 4.19e-05, 4.19e-05, 17663.66553404], [1516473900000, 4.198e-05, 4.2e-05, 4.181e-05, 4.186e-05, 30883.03941508], [1516473960000, 4.181e-05, 4.195e-05, 4.181e-05, 4.186e-05, 26500.60586658], [1516474020000, 4.195e-05, 4.2e-05, 4.187e-05, 4.187e-05, 3733.61861875], [1516474080000, 4.187e-05, 4.2e-05, 4.187e-05, 4.199e-05, 16935.4068135], [1516474140000, 4.188e-05, 4.2e-05, 4.18e-05, 4.197e-05, 56082.65489515], [1516474200000, 4.197e-05, 4.2e-05, 4.196e-05, 4.197e-05, 37353.56923875], [1516474260000, 4.197e-05, 4.199e-05, 4.18e-05, 4.199e-05, 6498.86125816], [1516474320000, 4.197e-05, 4.197e-05, 4.195e-05, 4.195e-05, 3299.29137425], [1516474380000, 4.195e-05, 4.195e-05, 4.18e-05, 4.188e-05, 2518.08035531], [1516474440000, 4.195e-05, 4.195e-05, 4.187e-05, 4.189e-05, 8112.56819994], [1516474500000, 4.189e-05, 4.19e-05, 4.189e-05, 4.19e-05, 1439.00432389], [1516474560000, 4.19e-05, 4.19e-05, 4.189e-05, 4.189e-05, 9891.8118967], [1516474620000, 4.189e-05, 4.194e-05, 4.187e-05, 4.187e-05, 11666.89621852], [1516474680000, 4.188e-05, 4.189e-05, 4.187e-05, 4.187e-05, 2068.59807925], [1516474740000, 4.189e-05, 4.19e-05, 4.189e-05, 4.19e-05, 13.00000001], [1516474800000, 4.19e-05, 4.194e-05, 4.19e-05, 4.19e-05, 24227.33646048], [1516474860000, 4.19e-05, 4.19e-05, 4.19e-05, 4.19e-05, 1341.73882633], [1516474920000, 4.19e-05, 4.194e-05, 4.19e-05, 4.19e-05, 12507.23354601], [1516474980000, 4.19e-05, 4.197e-05, 4.19e-05, 4.197e-05, 133685.83637194], [1516475040000, 4.197e-05, 4.199e-05, 4.195e-05, 4.197e-05, 15750.69056075], [1516475100000, 4.197e-05, 4.197e-05, 4.195e-05, 4.195e-05, 16830.10548351], [1516475160000, 4.196e-05, 4.196e-05, 4.195e-05, 4.195e-05, 4390.24515233], [1516475220000, 4.196e-05, 4.196e-05, 4.195e-05, 4.195e-05, 11411.61700404], [1516475280000, 4.195e-05, 4.196e-05, 4.195e-05, 4.196e-05, 8287.65205039], [1516475340000, 4.195e-05, 4.196e-05, 4.195e-05, 4.196e-05, 3189.05206628], [1516475400000, 4.196e-05, 4.196e-05, 4.195e-05, 4.196e-05, 14052.5791902], [1516475460000, 4.195e-05, 4.196e-05, 4.195e-05, 4.195e-05, 44160.91859822], [1516475520000, 4.196e-05, 4.197e-05, 4.167e-05, 4.167e-05, 141886.36604623], [1516475580000, 4.193e-05, 4.193e-05, 4.162e-05, 4.187e-05, 2383.74959244], [1516475640000, 4.187e-05, 4.188e-05, 4.186e-05, 4.188e-05, 12595.37441524], [1516475700000, 4.187e-05, 4.188e-05, 4.186e-05, 4.188e-05, 5388.38239535], [1516475760000, 4.187e-05, 4.188e-05, 4.17e-05, 4.17e-05, 4886.66829087], [1516475820000, 4.185e-05, 4.185e-05, 4.185e-05, 4.185e-05, 1825.73362988], [1516475880000, 4.185e-05, 4.185e-05, 4.171e-05, 4.171e-05, 1854.68789511], [1516475940000, 4.179e-05, 4.18e-05, 4.179e-05, 4.18e-05, 480.06431383], [1516476000000, 4.175e-05, 4.175e-05, 4.158e-05, 4.158e-05, 60213.88632416], [1516476060000, 4.158e-05, 4.171e-05, 4.157e-05, 4.16e-05, 31889.50575121], [1516476120000, 4.16e-05, 4.17e-05, 4.157e-05, 4.17e-05, 3995.96351986], [1516476180000, 4.17e-05, 4.185e-05, 4.159e-05, 4.185e-05, 26187.91402105], [1516476240000, 4.185e-05, 4.185e-05, 4.184e-05, 4.184e-05, 5211.87656917], [1516476300000, 4.183e-05, 4.183e-05, 4.175e-05, 4.175e-05, 5853.97679211], [1516476360000, 4.184e-05, 4.184e-05, 4.175e-05, 4.18e-05, 26285.71053017], [1516476420000, 4.176e-05, 4.18e-05, 4.176e-05, 4.176e-05, 26394.09722083], [1516476480000, 4.172e-05, 4.18e-05, 4.172e-05, 4.18e-05, 33958.5293848], [1516476540000, 4.172e-05, 4.179e-05, 4.159e-05, 4.159e-05, 54991.59266805], [1516476600000, 4.179e-05, 4.179e-05, 4.159e-05, 4.173e-05, 2679.11360038], [1516476660000, 4.173e-05, 4.178e-05, 4.159e-05, 4.159e-05, 19933.87201117], [1516476720000, 4.159e-05, 4.176e-05, 4.155e-05, 4.159e-05, 17699.8023], [1516476780000, 4.159e-05, 4.174e-05, 4.155e-05, 4.159e-05, 2681.71458824], [1516476840000, 4.159e-05, 4.159e-05, 4.155e-05, 4.158e-05, 2200.98679292], [1516476900000, 4.158e-05, 4.158e-05, 4.155e-05, 4.157e-05, 5024.19752812], [1516476960000, 4.157e-05, 4.157e-05, 4.155e-05, 4.155e-05, 15746.80577354], [1516477020000, 4.155e-05, 4.158e-05, 4.155e-05, 4.155e-05, 4073.91032186], [1516477080000, 4.158e-05, 4.158e-05, 4.155e-05, 4.158e-05, 2899.13402249], [1516477140000, 4.157e-05, 4.157e-05, 4.155e-05, 4.155e-05, 33239.75164317], [1516477200000, 4.153e-05, 4.153e-05, 4.152e-05, 4.152e-05, 1544.10997698], [1516477260000, 4.152e-05, 4.153e-05, 4.147e-05, 4.15e-05, 63350.50770766], [1516477320000, 4.15e-05, 4.153e-05, 4.15e-05, 4.15e-05, 1528.99674373], [1516477380000, 4.15e-05, 4.152e-05, 4.149e-05, 4.149e-05, 6631.78206506], [1516477440000, 4.149e-05, 4.15e-05, 4.149e-05, 4.149e-05, 11259.06090028], [1516477500000, 4.15e-05, 4.15e-05, 4.149e-05, 4.15e-05, 11080.91222616], [1516477560000, 4.152e-05, 4.152e-05, 4.152e-05, 4.152e-05, 4966.82274131], [1516477620000, 4.151e-05, 4.152e-05, 4.15e-05, 4.152e-05, 34663.45935958], [1516477680000, 4.152e-05, 4.152e-05, 4.15e-05, 4.15e-05, 65797.98452405], [1516477740000, 4.15e-05, 4.15e-05, 4.147e-05, 4.147e-05, 8412.21211922], [1516477800000, 4.147e-05, 4.153e-05, 4.147e-05, 4.149e-05, 28796.71375674], [1516477860000, 4.149e-05, 4.149e-05, 4.149e-05, 4.149e-05, 2255.17118952], [1516477920000, 4.147e-05, 4.147e-05, 4.144e-05, 4.147e-05, 5086.86584574], [1516477980000, 4.145e-05, 4.147e-05, 4.144e-05, 4.145e-05, 8799.24544205], [1516478040000, 4.146e-05, 4.147e-05, 4.145e-05, 4.147e-05, 21297.97338907], [1516478100000, 4.147e-05, 4.148e-05, 4.147e-05, 4.147e-05, 1030.34472442], [1516478160000, 4.148e-05, 4.149e-05, 4.144e-05, 4.144e-05, 34532.70886353], [1516478220000, 4.144e-05, 4.147e-05, 4.144e-05, 4.144e-05, 4406.01764416], [1516478280000, 4.144e-05, 4.147e-05, 4.143e-05, 4.145e-05, 7907.84836394], [1516478340000, 4.145e-05, 4.145e-05, 4.143e-05, 4.143e-05, 3641.87975921], [1516478400000, 4.142e-05, 4.143e-05, 4.142e-05, 4.143e-05, 15808.09089965], [1516478460000, 4.142e-05, 4.143e-05, 4.142e-05, 4.143e-05, 10475.89662797], [1516478520000, 4.143e-05, 4.143e-05, 4.14e-05, 4.14e-05, 8714.42233497], [1516478580000, 4.142e-05, 4.148e-05, 4.142e-05, 4.142e-05, 3690.25130598], [1516478640000, 4.142e-05, 4.142e-05, 4.14e-05, 4.142e-05, 2676.0], [1516478700000, 4.142e-05, 4.142e-05, 4.142e-05, 4.142e-05, 67.0], [1516478760000, 4.142e-05, 4.146e-05, 4.142e-05, 4.144e-05, 1293.99], [1516478820000, 4.143e-05, 4.146e-05, 4.143e-05, 4.146e-05, 1779.66648762], [1516478880000, 4.146e-05, 4.146e-05, 4.146e-05, 4.146e-05, 489.93821707], [1516478940000, 4.146e-05, 4.148e-05, 4.144e-05, 4.144e-05, 10097.83197514], [1516479000000, 4.146e-05, 4.148e-05, 4.146e-05, 4.148e-05, 3365.22647527], [1516479060000, 4.148e-05, 4.148e-05, 4.146e-05, 4.148e-05, 2263.35629], [1516479120000, 4.147e-05, 4.148e-05, 4.142e-05, 4.142e-05, 25429.20582069], [1516479180000, 4.142e-05, 4.148e-05, 4.14e-05, 4.142e-05, 3619.58521543], [1516479240000, 4.14e-05, 4.14e-05, 4.14e-05, 4.14e-05, 1374.51724506], [1516479300000, 4.141e-05, 4.142e-05, 4.13e-05, 4.13e-05, 17556.72711874], [1516479360000, 4.138e-05, 4.142e-05, 4.13e-05, 4.142e-05, 3354.43592274], [1516479420000, 4.142e-05, 4.142e-05, 4.132e-05, 4.132e-05, 616.9831562], [1516479480000, 4.142e-05, 4.142e-05, 4.142e-05, 4.142e-05, 1087.44887615], [1516479540000, 4.141e-05, 4.142e-05, 4.141e-05, 4.142e-05, 5282.52690642], [1516479600000, 4.141e-05, 4.147e-05, 4.14e-05, 4.147e-05, 40142.77160779], [1516479660000, 4.147e-05, 4.148e-05, 4.142e-05, 4.148e-05, 12442.85124732], [1516479720000, 4.148e-05, 4.148e-05, 4.141e-05, 4.141e-05, 1357.70399394], [1516479780000, 4.141e-05, 4.148e-05, 4.141e-05, 4.148e-05, 16179.38241638], [1516479840000, 4.148e-05, 4.148e-05, 4.142e-05, 4.143e-05, 23679.40393498], [1516479900000, 4.143e-05, 4.147e-05, 4.143e-05, 4.143e-05, 29487.45038035], [1516479960000, 4.146e-05, 4.147e-05, 4.146e-05, 4.147e-05, 57530.64718619], [1516480020000, 4.147e-05, 4.147e-05, 4.14e-05, 4.14e-05, 5375.86747701], [1516480080000, 4.139e-05, 4.14e-05, 4.138e-05, 4.14e-05, 2335.82667146], [1516480140000, 4.139e-05, 4.14e-05, 4.128e-05, 4.14e-05, 3838.48249586], [1516480200000, 4.14e-05, 4.147e-05, 4.14e-05, 4.147e-05, 6965.32159074], [1516480260000, 4.147e-05, 4.147e-05, 4.147e-05, 4.147e-05, 1986.22962564], [1516480320000, 4.147e-05, 4.147e-05, 4.141e-05, 4.147e-05, 12998.97688159], [1516480380000, 4.147e-05, 4.147e-05, 4.145e-05, 4.145e-05, 16534.51361622], [1516480440000, 4.145e-05, 4.148e-05, 4.144e-05, 4.148e-05, 17785.84914869], [1516480500000, 4.147e-05, 4.15e-05, 4.14e-05, 4.15e-05, 11941.63051951], [1516480560000, 4.153e-05, 4.162e-05, 4.151e-05, 4.151e-05, 23258.95856141], [1516480620000, 4.156e-05, 4.156e-05, 4.14e-05, 4.149e-05, 10994.31321415], [1516480680000, 4.141e-05, 4.149e-05, 4.139e-05, 4.139e-05, 41506.33307361], [1516480740000, 4.139e-05, 4.149e-05, 4.132e-05, 4.149e-05, 42168.96380063], [1516480800000, 4.149e-05, 4.149e-05, 4.123e-05, 4.149e-05, 14415.30020755], [1516480860000, 4.149e-05, 4.149e-05, 4.149e-05, 4.149e-05, 841.12991566], [1516480920000, 4.149e-05, 4.149e-05, 4.148e-05, 4.149e-05, 13726.22599421], [1516480980000, 4.149e-05, 4.159e-05, 4.149e-05, 4.149e-05, 32419.84842191], [1516481040000, 4.149e-05, 4.149e-05, 4.13e-05, 4.13e-05, 1266.13386298], [1516481100000, 4.149e-05, 4.149e-05, 4.149e-05, 4.149e-05, 363.71965827], [1516481160000, 4.147e-05, 4.147e-05, 4.147e-05, 4.147e-05, 1224.3370771], [1516481220000, 4.132e-05, 4.145e-05, 4.124e-05, 4.139e-05, 51107.03783576], [1516481280000, 4.139e-05, 4.139e-05, 4.124e-05, 4.126e-05, 2361.07734616], [1516481340000, 4.139e-05, 4.142e-05, 4.126e-05, 4.139e-05, 6558.54413076], [1516481400000, 4.126e-05, 4.126e-05, 4.126e-05, 4.126e-05, 200.0], [1516481460000, 4.138e-05, 4.139e-05, 4.128e-05, 4.128e-05, 896.54445579], [1516481520000, 4.139e-05, 4.139e-05, 4.139e-05, 4.139e-05, 2549.65373249], [1516481580000, 4.139e-05, 4.139e-05, 4.139e-05, 4.139e-05, 1516.83551764], [1516481640000, 4.139e-05, 4.139e-05, 4.127e-05, 4.138e-05, 6348.31218975], [1516481700000, 4.135e-05, 4.138e-05, 4.135e-05, 4.138e-05, 140.77669791], [1516481760000, 4.138e-05, 4.138e-05, 4.127e-05, 4.127e-05, 4818.73610516], [1516481820000, 4.127e-05, 4.127e-05, 4.126e-05, 4.126e-05, 6068.96218569], [1516481880000, 4.127e-05, 4.138e-05, 4.126e-05, 4.138e-05, 12867.462926], [1516481940000, 4.138e-05, 4.138e-05, 4.135e-05, 4.138e-05, 13301.55403546], [1516482000000, 4.138e-05, 4.138e-05, 4.128e-05, 4.138e-05, 1842.91465577], [1516482060000, 4.138e-05, 4.138e-05, 4.138e-05, 4.138e-05, 1607.33108485], [1516482120000, 4.138e-05, 4.138e-05, 4.137e-05, 4.138e-05, 8726.86837035], [1516482180000, 4.137e-05, 4.139e-05, 4.137e-05, 4.139e-05, 5025.09703493], [1516482240000, 4.147e-05, 4.147e-05, 4.14e-05, 4.14e-05, 4705.20575845], [1516482300000, 4.146e-05, 4.147e-05, 4.123e-05, 4.128e-05, 2994.17654861], [1516482360000, 4.127e-05, 4.147e-05, 4.123e-05, 4.123e-05, 19352.0275754], [1516482420000, 4.147e-05, 4.147e-05, 4.145e-05, 4.147e-05, 2576.41622187], [1516482480000, 4.147e-05, 4.147e-05, 4.145e-05, 4.145e-05, 1755.54472872], [1516482540000, 4.145e-05, 4.147e-05, 4.145e-05, 4.147e-05, 1419.54688127], [1516482600000, 4.146e-05, 4.147e-05, 4.137e-05, 4.145e-05, 5604.54741547], [1516482660000, 4.145e-05, 4.145e-05, 4.145e-05, 4.145e-05, 334.8574785], [1516482720000, 4.129e-05, 4.145e-05, 4.129e-05, 4.144e-05, 1169.16955573], [1516482780000, 4.144e-05, 4.145e-05, 4.144e-05, 4.145e-05, 2757.52416851], [1516482840000, 4.145e-05, 4.145e-05, 4.144e-05, 4.145e-05, 39242.64879194], [1516482900000, 4.145e-05, 4.147e-05, 4.144e-05, 4.147e-05, 32920.28623278], [1516482960000, 4.147e-05, 4.148e-05, 4.147e-05, 4.148e-05, 15962.78633911], [1516483020000, 4.147e-05, 4.147e-05, 4.144e-05, 4.147e-05, 1740.57413989], [1516483080000, 4.147e-05, 4.147e-05, 4.146e-05, 4.147e-05, 25066.04754777], [1516483140000, 4.147e-05, 4.148e-05, 4.146e-05, 4.146e-05, 7488.61558796], [1516483200000, 4.146e-05, 4.147e-05, 4.146e-05, 4.146e-05, 8725.08841897], [1516483260000, 4.146e-05, 4.146e-05, 4.146e-05, 4.146e-05, 9682.91763378], [1516483320000, 4.144e-05, 4.146e-05, 4.144e-05, 4.144e-05, 1168.84374574], [1516483380000, 4.144e-05, 4.144e-05, 4.104e-05, 4.115e-05, 31944.16891324], [1516483440000, 4.115e-05, 4.145e-05, 4.111e-05, 4.143e-05, 25354.39508773], [1516483500000, 4.143e-05, 4.143e-05, 4.116e-05, 4.143e-05, 5843.44116498], [1516483560000, 4.143e-05, 4.143e-05, 4.14e-05, 4.14e-05, 1437.36078346], [1516483620000, 4.139e-05, 4.14e-05, 4.117e-05, 4.118e-05, 25437.79917464], [1516483680000, 4.14e-05, 4.14e-05, 4.14e-05, 4.14e-05, 253.49367892], [1516483740000, 4.14e-05, 4.14e-05, 4.137e-05, 4.14e-05, 10866.32222534], [1516483800000, 4.14e-05, 4.14e-05, 4.138e-05, 4.138e-05, 3225.03026952], [1516483860000, 4.138e-05, 4.138e-05, 4.118e-05, 4.133e-05, 1287.46310467], [1516483920000, 4.133e-05, 4.139e-05, 4.133e-05, 4.139e-05, 994.03504866], [1516483980000, 4.135e-05, 4.139e-05, 4.135e-05, 4.139e-05, 30389.61615659], [1516484040000, 4.135e-05, 4.139e-05, 4.135e-05, 4.139e-05, 42613.91705601], [1516484100000, 4.139e-05, 4.139e-05, 4.139e-05, 4.139e-05, 2271.78301194], [1516484160000, 4.139e-05, 4.139e-05, 4.133e-05, 4.133e-05, 10729.43202859], [1516484220000, 4.133e-05, 4.135e-05, 4.119e-05, 4.135e-05, 2713.01992517], [1516484280000, 4.134e-05, 4.135e-05, 4.133e-05, 4.133e-05, 12824.76529967], [1516484340000, 4.134e-05, 4.135e-05, 4.134e-05, 4.135e-05, 3981.37657576], [1516484400000, 4.133e-05, 4.135e-05, 4.133e-05, 4.135e-05, 4358.9023022], [1516484460000, 4.135e-05, 4.135e-05, 4.135e-05, 4.135e-05, 1371.03839159], [1516484520000, 4.135e-05, 4.14e-05, 4.135e-05, 4.14e-05, 4068.72452757], [1516484580000, 4.14e-05, 4.144e-05, 4.135e-05, 4.139e-05, 3357.60537772], [1516484640000, 4.14e-05, 4.14e-05, 4.139e-05, 4.139e-05, 602.94035163], [1516484700000, 4.138e-05, 4.138e-05, 4.138e-05, 4.138e-05, 1797.10445695], [1516484760000, 4.138e-05, 4.138e-05, 4.136e-05, 4.138e-05, 6526.30651595], [1516484820000, 4.139e-05, 4.145e-05, 4.138e-05, 4.145e-05, 34124.59338812], [1516484880000, 4.14e-05, 4.145e-05, 4.14e-05, 4.144e-05, 2137.46280125], [1516484940000, 4.145e-05, 4.145e-05, 4.145e-05, 4.145e-05, 16892.34504597], [1516485000000, 4.145e-05, 4.148e-05, 4.144e-05, 4.144e-05, 58714.51263745], [1516485060000, 4.145e-05, 4.145e-05, 4.144e-05, 4.144e-05, 3004.39196741], [1516485120000, 4.145e-05, 4.145e-05, 4.144e-05, 4.144e-05, 3447.68465913], [1516485180000, 4.145e-05, 4.148e-05, 4.141e-05, 4.141e-05, 14848.22245614], [1516485240000, 4.148e-05, 4.148e-05, 4.142e-05, 4.148e-05, 3842.93393678], [1516485300000, 4.147e-05, 4.148e-05, 4.147e-05, 4.148e-05, 1202.76124748], [1516485360000, 4.148e-05, 4.148e-05, 4.145e-05, 4.145e-05, 2219.60448458], [1516485420000, 4.145e-05, 4.145e-05, 4.144e-05, 4.145e-05, 6255.74968716], [1516485480000, 4.145e-05, 4.145e-05, 4.144e-05, 4.145e-05, 15512.04435804], [1516485540000, 4.144e-05, 4.145e-05, 4.143e-05, 4.143e-05, 12113.62137181], [1516485600000, 4.144e-05, 4.145e-05, 4.143e-05, 4.145e-05, 17045.33296809], [1516485660000, 4.145e-05, 4.148e-05, 4.145e-05, 4.148e-05, 2765.6566931], [1516485720000, 4.148e-05, 4.15e-05, 4.148e-05, 4.15e-05, 15811.0554064], [1516485780000, 4.15e-05, 4.15e-05, 4.143e-05, 4.15e-05, 17051.99626346], [1516485840000, 4.149e-05, 4.151e-05, 4.143e-05, 4.143e-05, 27666.94350775], [1516485900000, 4.151e-05, 4.151e-05, 4.15e-05, 4.151e-05, 5919.09883175], [1516485960000, 4.151e-05, 4.151e-05, 4.15e-05, 4.15e-05, 4117.1582018], [1516486020000, 4.15e-05, 4.152e-05, 4.15e-05, 4.152e-05, 6942.28677534], [1516486080000, 4.152e-05, 4.152e-05, 4.15e-05, 4.15e-05, 23268.46394573], [1516486140000, 4.15e-05, 4.152e-05, 4.15e-05, 4.15e-05, 32681.7890932], [1516486200000, 4.149e-05, 4.152e-05, 4.149e-05, 4.152e-05, 29703.20235768], [1516486260000, 4.15e-05, 4.154e-05, 4.15e-05, 4.15e-05, 22259.80626422], [1516486320000, 4.152e-05, 4.152e-05, 4.152e-05, 4.152e-05, 13627.89426046], [1516486380000, 4.152e-05, 4.154e-05, 4.151e-05, 4.154e-05, 22265.00643267], [1516486440000, 4.154e-05, 4.154e-05, 4.151e-05, 4.154e-05, 1608.24741211], [1516486500000, 4.153e-05, 4.16e-05, 4.151e-05, 4.151e-05, 101135.46754357], [1516486560000, 4.161e-05, 4.161e-05, 4.154e-05, 4.154e-05, 9414.35270446], [1516486620000, 4.154e-05, 4.161e-05, 4.154e-05, 4.161e-05, 14227.52170766], [1516486680000, 4.161e-05, 4.161e-05, 4.157e-05, 4.157e-05, 2888.06720427], [1516486740000, 4.159e-05, 4.161e-05, 4.159e-05, 4.159e-05, 15996.99870369], [1516486800000, 4.159e-05, 4.161e-05, 4.158e-05, 4.159e-05, 24439.83594757], [1516486860000, 4.159e-05, 4.159e-05, 4.158e-05, 4.158e-05, 101406.71458449], [1516486920000, 4.159e-05, 4.161e-05, 4.159e-05, 4.159e-05, 2460.29394816], [1516486980000, 4.159e-05, 4.162e-05, 4.154e-05, 4.161e-05, 21393.98854665], [1516487040000, 4.161e-05, 4.162e-05, 4.155e-05, 4.162e-05, 11435.65753281], [1516487100000, 4.161e-05, 4.162e-05, 4.161e-05, 4.161e-05, 4633.5411362], [1516487160000, 4.161e-05, 4.161e-05, 4.153e-05, 4.153e-05, 12225.82082737], [1516487220000, 4.16e-05, 4.162e-05, 4.155e-05, 4.162e-05, 7283.5279179], [1516487280000, 4.162e-05, 4.164e-05, 4.141e-05, 4.164e-05, 40998.1820896], [1516487340000, 4.164e-05, 4.166e-05, 4.164e-05, 4.165e-05, 13310.7778771], [1516487400000, 4.166e-05, 4.19e-05, 4.166e-05, 4.19e-05, 33001.60347055], [1516487460000, 4.167e-05, 4.188e-05, 4.161e-05, 4.161e-05, 5805.02766226], [1516487520000, 4.144e-05, 4.19e-05, 4.143e-05, 4.157e-05, 29334.82299119], [1516487580000, 4.155e-05, 4.184e-05, 4.145e-05, 4.152e-05, 20489.77530186], [1516487640000, 4.181e-05, 4.181e-05, 4.141e-05, 4.173e-05, 9725.10074955], [1516487700000, 4.145e-05, 4.174e-05, 4.14e-05, 4.149e-05, 40238.72930775], [1516487760000, 4.149e-05, 4.174e-05, 4.145e-05, 4.17e-05, 18380.295393], [1516487820000, 4.17e-05, 4.172e-05, 4.146e-05, 4.172e-05, 707.70862745], [1516487880000, 4.146e-05, 4.166e-05, 4.146e-05, 4.166e-05, 4372.29718514], [1516487940000, 4.167e-05, 4.17e-05, 4.166e-05, 4.167e-05, 4978.80789924], [1516488000000, 4.17e-05, 4.17e-05, 4.166e-05, 4.17e-05, 5681.68555414], [1516488060000, 4.17e-05, 4.17e-05, 4.166e-05, 4.166e-05, 12422.68222789], [1516488120000, 4.167e-05, 4.17e-05, 4.166e-05, 4.17e-05, 10179.06934327], [1516488180000, 4.17e-05, 4.179e-05, 4.166e-05, 4.166e-05, 32865.65980508], [1516488240000, 4.167e-05, 4.176e-05, 4.167e-05, 4.167e-05, 10640.67847035], [1516488300000, 4.167e-05, 4.17e-05, 4.152e-05, 4.152e-05, 29123.17755079], [1516488360000, 4.166e-05, 4.166e-05, 4.155e-05, 4.155e-05, 13466.59506649], [1516488420000, 4.157e-05, 4.17e-05, 4.157e-05, 4.17e-05, 7078.68907484], [1516488480000, 4.175e-05, 4.175e-05, 4.155e-05, 4.175e-05, 16867.01124604], [1516488540000, 4.175e-05, 4.178e-05, 4.152e-05, 4.152e-05, 64992.69896386], [1516488600000, 4.15e-05, 4.177e-05, 4.15e-05, 4.177e-05, 5692.25995148], [1516488660000, 4.175e-05, 4.175e-05, 4.155e-05, 4.17e-05, 4627.3523361], [1516488720000, 4.152e-05, 4.152e-05, 4.152e-05, 4.152e-05, 3294.60141247], [1516488780000, 4.152e-05, 4.152e-05, 4.152e-05, 4.152e-05, 4620.50510962], [1516488840000, 4.152e-05, 4.167e-05, 4.152e-05, 4.167e-05, 3889.11435247], [1516488900000, 4.165e-05, 4.165e-05, 4.152e-05, 4.165e-05, 1820.61000454], [1516488960000, 4.165e-05, 4.165e-05, 4.154e-05, 4.165e-05, 992.87389595], [1516489020000, 4.165e-05, 4.165e-05, 4.154e-05, 4.16e-05, 4504.3662365], [1516489080000, 4.16e-05, 4.16e-05, 4.154e-05, 4.16e-05, 4461.79550242], [1516489140000, 4.16e-05, 4.165e-05, 4.16e-05, 4.165e-05, 3749.99892514], [1516489200000, 4.164e-05, 4.164e-05, 4.161e-05, 4.161e-05, 12421.11673418], [1516489260000, 4.16e-05, 4.164e-05, 4.154e-05, 4.16e-05, 3427.3144874], [1516489320000, 4.16e-05, 4.164e-05, 4.16e-05, 4.164e-05, 1830.37329398], [1516489380000, 4.164e-05, 4.165e-05, 4.16e-05, 4.16e-05, 23595.43071647], [1516489440000, 4.158e-05, 4.158e-05, 4.154e-05, 4.154e-05, 3031.55221405], [1516489500000, 4.154e-05, 4.155e-05, 4.154e-05, 4.154e-05, 5997.48221632], [1516489560000, 4.154e-05, 4.158e-05, 4.154e-05, 4.158e-05, 1887.71695856], [1516489620000, 4.158e-05, 4.158e-05, 4.154e-05, 4.158e-05, 741.22282234], [1516489680000, 4.158e-05, 4.158e-05, 4.156e-05, 4.156e-05, 2172.11314307], [1516489740000, 4.158e-05, 4.158e-05, 4.156e-05, 4.156e-05, 21063.83349061], [1516489800000, 4.156e-05, 4.156e-05, 4.154e-05, 4.156e-05, 7790.99191608], [1516489860000, 4.156e-05, 4.156e-05, 4.15e-05, 4.15e-05, 66890.96704448], [1516489920000, 4.149e-05, 4.158e-05, 4.147e-05, 4.158e-05, 10125.33288103], [1516489980000, 4.155e-05, 4.155e-05, 4.146e-05, 4.146e-05, 755.80766625], [1516490040000, 4.145e-05, 4.155e-05, 4.106e-05, 4.15e-05, 87558.62935118], [1516490100000, 4.15e-05, 4.158e-05, 4.145e-05, 4.158e-05, 12875.60874501], [1516490160000, 4.157e-05, 4.158e-05, 4.145e-05, 4.155e-05, 3284.27523932], [1516490220000, 4.155e-05, 4.155e-05, 4.145e-05, 4.145e-05, 3168.11023996], [1516490280000, 4.145e-05, 4.155e-05, 4.145e-05, 4.154e-05, 5974.38391199], [1516490340000, 4.155e-05, 4.155e-05, 4.154e-05, 4.154e-05, 5677.29391266], [1516490400000, 4.146e-05, 4.153e-05, 4.145e-05, 4.153e-05, 2317.0706163], [1516490460000, 4.153e-05, 4.155e-05, 4.153e-05, 4.155e-05, 10407.85018653], [1516490520000, 4.155e-05, 4.155e-05, 4.154e-05, 4.154e-05, 18336.78811609], [1516490580000, 4.155e-05, 4.155e-05, 4.154e-05, 4.154e-05, 15329.13141938], [1516490640000, 4.154e-05, 4.155e-05, 4.12e-05, 4.155e-05, 14840.0606295], [1516490700000, 4.155e-05, 4.155e-05, 4.129e-05, 4.155e-05, 15757.70698812], [1516490760000, 4.137e-05, 4.155e-05, 4.129e-05, 4.155e-05, 9290.84909804], [1516490820000, 4.153e-05, 4.153e-05, 4.153e-05, 4.153e-05, 4653.25385138], [1516490880000, 4.153e-05, 4.153e-05, 4.153e-05, 4.153e-05, 5847.83530162], [1516490940000, 4.145e-05, 4.155e-05, 4.145e-05, 4.145e-05, 5790.78474776], [1516491000000, 4.153e-05, 4.155e-05, 4.143e-05, 4.155e-05, 4056.65926436], [1516491060000, 4.145e-05, 4.155e-05, 4.141e-05, 4.155e-05, 8354.58157522], [1516491120000, 4.155e-05, 4.158e-05, 4.141e-05, 4.158e-05, 11221.81924242], [1516491180000, 4.155e-05, 4.16e-05, 4.124e-05, 4.155e-05, 19000.87452815], [1516491240000, 4.129e-05, 4.16e-05, 4.129e-05, 4.16e-05, 11257.06511679], [1516491300000, 4.154e-05, 4.16e-05, 4.154e-05, 4.155e-05, 1288.27252413], [1516491360000, 4.157e-05, 4.157e-05, 4.157e-05, 4.157e-05, 1136.48450946], [1516491420000, 4.157e-05, 4.16e-05, 4.157e-05, 4.157e-05, 3347.88239578], [1516491480000, 4.16e-05, 4.16e-05, 4.157e-05, 4.16e-05, 3858.91759818], [1516491540000, 4.159e-05, 4.166e-05, 4.159e-05, 4.166e-05, 2727.15551466], [1516491600000, 4.166e-05, 4.166e-05, 4.165e-05, 4.166e-05, 7534.1723112], [1516491660000, 4.165e-05, 4.166e-05, 4.129e-05, 4.164e-05, 12238.60050185], [1516491720000, 4.163e-05, 4.163e-05, 4.162e-05, 4.162e-05, 4190.59551685], [1516491780000, 4.16e-05, 4.162e-05, 4.16e-05, 4.162e-05, 2917.28150781], [1516491840000, 4.161e-05, 4.162e-05, 4.16e-05, 4.162e-05, 4553.32926193], [1516491900000, 4.161e-05, 4.161e-05, 4.129e-05, 4.158e-05, 13634.49193266], [1516491960000, 4.157e-05, 4.161e-05, 4.14e-05, 4.161e-05, 6707.90361574], [1516492020000, 4.161e-05, 4.161e-05, 4.161e-05, 4.161e-05, 1936.68096991], [1516492080000, 4.162e-05, 4.162e-05, 4.161e-05, 4.161e-05, 5217.92646581], [1516492140000, 4.161e-05, 4.168e-05, 4.159e-05, 4.16e-05, 16949.87723385], [1516492200000, 4.16e-05, 4.168e-05, 4.159e-05, 4.159e-05, 13469.98383329], [1516492260000, 4.159e-05, 4.176e-05, 4.159e-05, 4.176e-05, 13327.54693192], [1516492320000, 4.176e-05, 4.177e-05, 4.159e-05, 4.177e-05, 3178.69451134], [1516492380000, 4.159e-05, 4.186e-05, 4.159e-05, 4.186e-05, 5380.99840858], [1516492440000, 4.185e-05, 4.186e-05, 4.16e-05, 4.161e-05, 421.42580567], [1516492500000, 4.162e-05, 4.185e-05, 4.162e-05, 4.184e-05, 3138.16652653], [1516492560000, 4.184e-05, 4.189e-05, 4.165e-05, 4.179e-05, 12167.72986156], [1516492620000, 4.166e-05, 4.175e-05, 4.164e-05, 4.164e-05, 5017.36507382], [1516492680000, 4.175e-05, 4.175e-05, 4.164e-05, 4.175e-05, 12386.78178804], [1516492740000, 4.175e-05, 4.179e-05, 4.175e-05, 4.179e-05, 21278.89626882], [1516492800000, 4.177e-05, 4.188e-05, 4.163e-05, 4.178e-05, 29760.36249277], [1516492860000, 4.178e-05, 4.188e-05, 4.142e-05, 4.142e-05, 15076.07589987], [1516492920000, 4.142e-05, 4.143e-05, 4.141e-05, 4.143e-05, 11701.26316853], [1516492980000, 4.144e-05, 4.161e-05, 4.142e-05, 4.161e-05, 19966.41695692], [1516493040000, 4.151e-05, 4.16e-05, 4.142e-05, 4.142e-05, 34565.27258128], [1516493100000, 4.142e-05, 4.142e-05, 4.131e-05, 4.133e-05, 29392.35995559], [1516493160000, 4.133e-05, 4.142e-05, 4.132e-05, 4.142e-05, 7394.62393239], [1516493220000, 4.142e-05, 4.142e-05, 4.141e-05, 4.141e-05, 19135.3321598], [1516493280000, 4.141e-05, 4.142e-05, 4.131e-05, 4.131e-05, 9463.53582472], [1516493340000, 4.131e-05, 4.136e-05, 4.131e-05, 4.132e-05, 18761.83230746], [1516493400000, 4.132e-05, 4.132e-05, 4.131e-05, 4.132e-05, 26605.77276107], [1516493460000, 4.132e-05, 4.132e-05, 4.131e-05, 4.132e-05, 10233.99280766], [1516493520000, 4.131e-05, 4.132e-05, 4.129e-05, 4.129e-05, 3414.82075207], [1516493580000, 4.129e-05, 4.133e-05, 4.128e-05, 4.133e-05, 19883.53568787], [1516493640000, 4.133e-05, 4.133e-05, 4.128e-05, 4.133e-05, 2152.44675484], [1516493700000, 4.133e-05, 4.133e-05, 4.131e-05, 4.131e-05, 2363.31634234], [1516493760000, 4.131e-05, 4.131e-05, 4.128e-05, 4.131e-05, 16854.23571381], [1516493820000, 4.131e-05, 4.131e-05, 4.13e-05, 4.131e-05, 2474.95316869], [1516493880000, 4.131e-05, 4.132e-05, 4.131e-05, 4.131e-05, 12627.55412328], [1516493940000, 4.131e-05, 4.133e-05, 4.13e-05, 4.133e-05, 56031.86880653], [1516494000000, 4.133e-05, 4.133e-05, 4.13e-05, 4.133e-05, 48936.9788329], [1516494060000, 4.133e-05, 4.133e-05, 4.126e-05, 4.127e-05, 10620.93952506], [1516494120000, 4.133e-05, 4.134e-05, 4.123e-05, 4.124e-05, 82989.28596685], [1516494180000, 4.124e-05, 4.14e-05, 4.124e-05, 4.14e-05, 382.93008943], [1516494240000, 4.14e-05, 4.14e-05, 4.124e-05, 4.14e-05, 7361.59146964], [1516494300000, 4.125e-05, 4.14e-05, 4.125e-05, 4.14e-05, 12024.34815141], [1516494360000, 4.14e-05, 4.14e-05, 4.123e-05, 4.123e-05, 10898.74679677], [1516494420000, 4.123e-05, 4.132e-05, 4.12e-05, 4.12e-05, 54226.25370201], [1516494480000, 4.12e-05, 4.12e-05, 4.115e-05, 4.117e-05, 14176.96004728], [1516494540000, 4.117e-05, 4.12e-05, 4.117e-05, 4.12e-05, 20069.25535786], [1516494600000, 4.12e-05, 4.12e-05, 4.117e-05, 4.118e-05, 5154.98048162], [1516494660000, 4.119e-05, 4.12e-05, 4.117e-05, 4.117e-05, 20590.14333294], [1516494720000, 4.118e-05, 4.12e-05, 4.117e-05, 4.12e-05, 33350.72754369], [1516494780000, 4.117e-05, 4.12e-05, 4.117e-05, 4.12e-05, 44225.43402306], [1516494840000, 4.117e-05, 4.117e-05, 4.117e-05, 4.117e-05, 1651.45349644], [1516494900000, 4.117e-05, 4.12e-05, 4.112e-05, 4.112e-05, 22642.14382355], [1516494960000, 4.112e-05, 4.139e-05, 4.112e-05, 4.12e-05, 48533.30401996], [1516495020000, 4.139e-05, 4.139e-05, 4.125e-05, 4.138e-05, 4101.36978294], [1516495080000, 4.138e-05, 4.138e-05, 4.125e-05, 4.138e-05, 12373.22088839], [1516495140000, 4.126e-05, 4.126e-05, 4.125e-05, 4.125e-05, 32589.83238846], [1516495200000, 4.126e-05, 4.126e-05, 4.125e-05, 4.126e-05, 37293.5299176], [1516495260000, 4.126e-05, 4.138e-05, 4.126e-05, 4.138e-05, 3259.17464741], [1516495320000, 4.138e-05, 4.14e-05, 4.138e-05, 4.138e-05, 17664.6213332], [1516495380000, 4.138e-05, 4.14e-05, 4.138e-05, 4.14e-05, 1931.73369197], [1516495440000, 4.14e-05, 4.14e-05, 4.134e-05, 4.134e-05, 9386.58710426], [1516495500000, 4.134e-05, 4.134e-05, 4.134e-05, 4.134e-05, 2803.68785082], [1516495560000, 4.134e-05, 4.134e-05, 4.13e-05, 4.13e-05, 6797.08052574], [1516495620000, 4.13e-05, 4.13e-05, 4.126e-05, 4.13e-05, 3494.79593378], [1516495680000, 4.126e-05, 4.134e-05, 4.125e-05, 4.134e-05, 2454.41225194], [1516495740000, 4.134e-05, 4.14e-05, 4.134e-05, 4.14e-05, 4336.86340647], [1516495800000, 4.14e-05, 4.14e-05, 4.134e-05, 4.14e-05, 11495.25001309], [1516495860000, 4.14e-05, 4.14e-05, 4.134e-05, 4.134e-05, 9692.58572072], [1516495920000, 4.14e-05, 4.14e-05, 4.134e-05, 4.135e-05, 6621.62597893], [1516495980000, 4.135e-05, 4.135e-05, 4.134e-05, 4.135e-05, 11630.38125367], [1516496040000, 4.135e-05, 4.135e-05, 4.127e-05, 4.127e-05, 14970.68857667], [1516496100000, 4.127e-05, 4.134e-05, 4.127e-05, 4.134e-05, 10093.02369812], [1516496160000, 4.128e-05, 4.134e-05, 4.111e-05, 4.134e-05, 30517.50442504], [1516496220000, 4.134e-05, 4.134e-05, 4.1e-05, 4.106e-05, 113599.35318495], [1516496280000, 4.106e-05, 4.131e-05, 4.1e-05, 4.1e-05, 62017.40690283], [1516496340000, 4.1e-05, 4.131e-05, 4.086e-05, 4.1e-05, 77616.75124352], [1516496400000, 4.1e-05, 4.118e-05, 4.078e-05, 4.118e-05, 109698.6290315], [1516496460000, 4.112e-05, 4.114e-05, 4.077e-05, 4.1e-05, 29982.57425799], [1516496520000, 4.08e-05, 4.11e-05, 4.077e-05, 4.099e-05, 7262.26872119], [1516496580000, 4.078e-05, 4.1e-05, 4.078e-05, 4.078e-05, 52097.02120792], [1516496640000, 4.1e-05, 4.105e-05, 4.075e-05, 4.105e-05, 75416.88034741], [1516496700000, 4.105e-05, 4.129e-05, 4.079e-05, 4.129e-05, 22125.38803518], [1516496760000, 4.129e-05, 4.134e-05, 4.1e-05, 4.1e-05, 38441.99724733], [1516496820000, 4.129e-05, 4.129e-05, 4.129e-05, 4.129e-05, 2373.57613743], [1516496880000, 4.124e-05, 4.124e-05, 4.103e-05, 4.123e-05, 6359.62481122], [1516496940000, 4.12e-05, 4.12e-05, 4.104e-05, 4.119e-05, 15305.30208099], [1516497000000, 4.119e-05, 4.134e-05, 4.105e-05, 4.118e-05, 50302.64253718], [1516497060000, 4.118e-05, 4.118e-05, 4.1e-05, 4.1e-05, 17325.2543642], [1516497120000, 4.117e-05, 4.118e-05, 4.117e-05, 4.118e-05, 3895.5935103], [1516497180000, 4.133e-05, 4.138e-05, 4.133e-05, 4.134e-05, 15317.16842569], [1516497240000, 4.12e-05, 4.134e-05, 4.118e-05, 4.118e-05, 12061.78018029], [1516497300000, 4.118e-05, 4.134e-05, 4.104e-05, 4.134e-05, 2692.82213572], [1516497360000, 4.107e-05, 4.151e-05, 4.106e-05, 4.151e-05, 13595.6454575], [1516497420000, 4.134e-05, 4.151e-05, 4.134e-05, 4.146e-05, 4053.90482386], [1516497480000, 4.146e-05, 4.151e-05, 4.117e-05, 4.117e-05, 3947.42451009], [1516497540000, 4.125e-05, 4.158e-05, 4.125e-05, 4.158e-05, 1426.00132449], [1516497600000, 4.156e-05, 4.157e-05, 4.156e-05, 4.157e-05, 1331.58660994], [1516497660000, 4.156e-05, 4.156e-05, 4.117e-05, 4.118e-05, 5024.10069169], [1516497720000, 4.118e-05, 4.155e-05, 4.117e-05, 4.152e-05, 18489.93857165], [1516497780000, 4.151e-05, 4.151e-05, 4.119e-05, 4.123e-05, 870.51390209], [1516497840000, 4.123e-05, 4.164e-05, 4.11e-05, 4.164e-05, 37310.18227106], [1516497900000, 4.118e-05, 4.147e-05, 4.113e-05, 4.113e-05, 7008.99688181], [1516497960000, 4.146e-05, 4.146e-05, 4.144e-05, 4.144e-05, 988.20314074], [1516498020000, 4.144e-05, 4.144e-05, 4.141e-05, 4.141e-05, 2483.83390616], [1516498080000, 4.142e-05, 4.146e-05, 4.117e-05, 4.117e-05, 41975.86235672], [1516498140000, 4.14e-05, 4.141e-05, 4.118e-05, 4.14e-05, 35286.38251789], [1516498200000, 4.121e-05, 4.144e-05, 4.109e-05, 4.144e-05, 138281.94218846], [1516498260000, 4.144e-05, 4.144e-05, 4.113e-05, 4.114e-05, 36098.75198641], [1516498320000, 4.114e-05, 4.15e-05, 4.11e-05, 4.145e-05, 15658.39420872], [1516498380000, 4.123e-05, 4.15e-05, 4.123e-05, 4.124e-05, 2234.75131072], [1516498440000, 4.139e-05, 4.139e-05, 4.125e-05, 4.139e-05, 1206.3765532], [1516498500000, 4.138e-05, 4.152e-05, 4.128e-05, 4.129e-05, 9452.45999548], [1516498560000, 4.154e-05, 4.17e-05, 4.13e-05, 4.169e-05, 43940.30106047], [1516498620000, 4.155e-05, 4.17e-05, 4.155e-05, 4.158e-05, 2687.17695921], [1516498680000, 4.155e-05, 4.155e-05, 4.136e-05, 4.143e-05, 3108.31905672], [1516498740000, 4.15e-05, 4.154e-05, 4.15e-05, 4.154e-05, 10063.67213464], [1516498800000, 4.154e-05, 4.16e-05, 4.154e-05, 4.154e-05, 6584.5252829], [1516498860000, 4.154e-05, 4.167e-05, 4.154e-05, 4.167e-05, 14783.74674784], [1516498920000, 4.154e-05, 4.164e-05, 4.154e-05, 4.154e-05, 12140.8332183], [1516498980000, 4.154e-05, 4.154e-05, 4.153e-05, 4.153e-05, 6059.88711085], [1516499040000, 4.142e-05, 4.153e-05, 4.142e-05, 4.142e-05, 4173.78154038], [1516499100000, 4.143e-05, 4.152e-05, 4.142e-05, 4.143e-05, 26320.26965604], [1516499160000, 4.143e-05, 4.17e-05, 4.142e-05, 4.142e-05, 85414.84965378], [1516499220000, 4.143e-05, 4.143e-05, 4.143e-05, 4.143e-05, 74.07258465], [1516499280000, 4.144e-05, 4.145e-05, 4.143e-05, 4.144e-05, 23166.61815732], [1516499340000, 4.145e-05, 4.147e-05, 4.145e-05, 4.145e-05, 12808.81499468], [1516499400000, 4.145e-05, 4.147e-05, 4.144e-05, 4.144e-05, 52380.83375399], [1516499460000, 4.145e-05, 4.151e-05, 4.145e-05, 4.151e-05, 68646.98957397], [1516499520000, 4.148e-05, 4.152e-05, 4.146e-05, 4.151e-05, 9963.82758549], [1516499580000, 4.151e-05, 4.152e-05, 4.145e-05, 4.145e-05, 68300.36745454], [1516499640000, 4.145e-05, 4.162e-05, 4.144e-05, 4.161e-05, 19304.16066933], [1516499700000, 4.153e-05, 4.164e-05, 4.153e-05, 4.162e-05, 9951.69285145], [1516499760000, 4.164e-05, 4.164e-05, 4.161e-05, 4.162e-05, 37847.75368187], [1516499820000, 4.162e-05, 4.164e-05, 4.162e-05, 4.162e-05, 41423.73061153], [1516499880000, 4.164e-05, 4.164e-05, 4.162e-05, 4.163e-05, 3059.13245074], [1516499940000, 4.163e-05, 4.164e-05, 4.163e-05, 4.163e-05, 4505.55810116], [1516500000000, 4.162e-05, 4.163e-05, 4.162e-05, 4.162e-05, 1864.13008677], [1516500060000, 4.162e-05, 4.167e-05, 4.16e-05, 4.164e-05, 31166.35706538], [1516500120000, 4.167e-05, 4.171e-05, 4.16e-05, 4.169e-05, 82929.44591931], [1516500180000, 4.169e-05, 4.169e-05, 4.16e-05, 4.169e-05, 5928.05619285], [1516500240000, 4.168e-05, 4.168e-05, 4.156e-05, 4.168e-05, 424.89686851], [1516500300000, 4.168e-05, 4.171e-05, 4.145e-05, 4.145e-05, 116733.43729849], [1516500360000, 4.147e-05, 4.169e-05, 4.145e-05, 4.145e-05, 5505.06750813], [1516500420000, 4.145e-05, 4.165e-05, 4.145e-05, 4.165e-05, 6715.66820538], [1516500480000, 4.168e-05, 4.168e-05, 4.145e-05, 4.145e-05, 2145.62185313], [1516500540000, 4.145e-05, 4.167e-05, 4.145e-05, 4.146e-05, 2803.38348471], [1516500660000, 4.16e-05, 4.164e-05, 4.146e-05, 4.155e-05, 27419.96226824], [1516500720000, 4.146e-05, 4.155e-05, 4.143e-05, 4.143e-05, 88528.71596636], [1516500780000, 4.144e-05, 4.159e-05, 4.143e-05, 4.146e-05, 14390.12721508], [1516500840000, 4.147e-05, 4.147e-05, 4.141e-05, 4.146e-05, 48431.34101161], [1516500900000, 4.141e-05, 4.147e-05, 4.111e-05, 4.146e-05, 17692.01208466], [1516500960000, 4.131e-05, 4.15e-05, 4.13e-05, 4.145e-05, 1437.26059146], [1516501020000, 4.131e-05, 4.155e-05, 4.131e-05, 4.155e-05, 7492.6105995], [1516501080000, 4.156e-05, 4.156e-05, 4.146e-05, 4.156e-05, 7258.95093458], [1516501140000, 4.145e-05, 4.156e-05, 4.112e-05, 4.112e-05, 25179.53816002], [1516501200000, 4.145e-05, 4.145e-05, 4.11e-05, 4.122e-05, 43914.8096976], [1516501260000, 4.122e-05, 4.139e-05, 4.104e-05, 4.106e-05, 61136.32996282], [1516501320000, 4.108e-05, 4.135e-05, 4.108e-05, 4.13e-05, 1089.50641456], [1516501380000, 4.129e-05, 4.129e-05, 4.129e-05, 4.129e-05, 1067.25925966], [1516501440000, 4.11e-05, 4.127e-05, 4.107e-05, 4.127e-05, 53417.76643692], [1516501500000, 4.127e-05, 4.128e-05, 4.125e-05, 4.128e-05, 53101.16578464], [1516501560000, 4.125e-05, 4.125e-05, 4.109e-05, 4.12e-05, 1035.94275484], [1516501620000, 4.109e-05, 4.12e-05, 4.109e-05, 4.119e-05, 1359.56102683], [1516501680000, 4.119e-05, 4.125e-05, 4.11e-05, 4.125e-05, 8392.89764626], [1516501740000, 4.111e-05, 4.111e-05, 4.107e-05, 4.107e-05, 23340.15315111], [1516501800000, 4.108e-05, 4.11e-05, 4.1e-05, 4.104e-05, 30165.04303934], [1516501860000, 4.106e-05, 4.106e-05, 4.084e-05, 4.084e-05, 14086.23380352], [1516501920000, 4.101e-05, 4.11e-05, 4.101e-05, 4.105e-05, 6299.25260701], [1516501980000, 4.105e-05, 4.11e-05, 4.082e-05, 4.09e-05, 4130.26332586], [1516502040000, 4.09e-05, 4.105e-05, 4.088e-05, 4.104e-05, 57490.77779824], [1516502100000, 4.103e-05, 4.104e-05, 4.089e-05, 4.089e-05, 9625.83941993], [1516502160000, 4.089e-05, 4.101e-05, 4.087e-05, 4.101e-05, 8571.61074611], [1516502220000, 4.101e-05, 4.122e-05, 4.08e-05, 4.081e-05, 35845.47897457], [1516502280000, 4.081e-05, 4.125e-05, 4.08e-05, 4.08e-05, 17817.28953648], [1516502340000, 4.082e-05, 4.113e-05, 4.079e-05, 4.112e-05, 30970.13761001], [1516502400000, 4.081e-05, 4.11e-05, 4.078e-05, 4.078e-05, 36223.22791506], [1516502460000, 4.078e-05, 4.08e-05, 4.077e-05, 4.08e-05, 18761.12527945], [1516502520000, 4.088e-05, 4.09e-05, 4.075e-05, 4.09e-05, 15703.23909957], [1516502580000, 4.089e-05, 4.095e-05, 4.075e-05, 4.075e-05, 38050.66209976], [1516502640000, 4.075e-05, 4.089e-05, 4.07e-05, 4.089e-05, 4005.58995045], [1516502700000, 4.089e-05, 4.09e-05, 4.073e-05, 4.09e-05, 41076.92315797], [1516502760000, 4.073e-05, 4.089e-05, 4.07e-05, 4.089e-05, 13631.8132405], [1516502820000, 4.089e-05, 4.096e-05, 4.074e-05, 4.095e-05, 3180.57185755], [1516502880000, 4.074e-05, 4.095e-05, 4.07e-05, 4.095e-05, 19685.09379461], [1516502940000, 4.095e-05, 4.095e-05, 4.072e-05, 4.072e-05, 16953.89585086], [1516503000000, 4.072e-05, 4.094e-05, 4.072e-05, 4.094e-05, 6816.3118402], [1516503060000, 4.088e-05, 4.088e-05, 4.088e-05, 4.088e-05, 128.0], [1516503120000, 4.076e-05, 4.088e-05, 4.073e-05, 4.073e-05, 5877.70552147], [1516503180000, 4.088e-05, 4.09e-05, 4.073e-05, 4.09e-05, 826.65565856], [1516503240000, 4.088e-05, 4.088e-05, 4.085e-05, 4.085e-05, 6432.11178981], [1516503300000, 4.085e-05, 4.085e-05, 4.084e-05, 4.084e-05, 501.21767682], [1516503360000, 4.08e-05, 4.084e-05, 4.075e-05, 4.075e-05, 1129.42339765], [1516503420000, 4.084e-05, 4.084e-05, 4.074e-05, 4.075e-05, 9609.95074234], [1516503480000, 4.075e-05, 4.075e-05, 4.07e-05, 4.075e-05, 10156.74506363], [1516503540000, 4.075e-05, 4.075e-05, 4.07e-05, 4.075e-05, 11243.70973803], [1516503600000, 4.074e-05, 4.074e-05, 4.074e-05, 4.074e-05, 4177.23290989], [1516503660000, 4.072e-05, 4.074e-05, 4.07e-05, 4.074e-05, 7066.17299938], [1516503720000, 4.07e-05, 4.074e-05, 4.07e-05, 4.074e-05, 16340.87859207], [1516503780000, 4.074e-05, 4.074e-05, 4.07e-05, 4.074e-05, 24603.05040092], [1516503840000, 4.074e-05, 4.074e-05, 4.072e-05, 4.072e-05, 8859.25293088], [1516503900000, 4.072e-05, 4.072e-05, 4.07e-05, 4.072e-05, 26064.71642648], [1516503960000, 4.072e-05, 4.074e-05, 4.07e-05, 4.071e-05, 19329.06431554], [1516504020000, 4.071e-05, 4.072e-05, 4.071e-05, 4.071e-05, 6421.99643699], [1516504080000, 4.071e-05, 4.071e-05, 4.067e-05, 4.067e-05, 13885.036414], [1516504140000, 4.069e-05, 4.07e-05, 4.062e-05, 4.07e-05, 11193.10078394], [1516504200000, 4.07e-05, 4.07e-05, 4.069e-05, 4.069e-05, 7530.91033605], [1516504260000, 4.068e-05, 4.069e-05, 4.063e-05, 4.063e-05, 1900.2935907], [1516504320000, 4.069e-05, 4.07e-05, 4.063e-05, 4.07e-05, 52509.74820675], [1516504380000, 4.07e-05, 4.071e-05, 4.069e-05, 4.07e-05, 3225.69349913], [1516504440000, 4.07e-05, 4.071e-05, 4.07e-05, 4.071e-05, 15372.61313716], [1516504500000, 4.071e-05, 4.071e-05, 4.07e-05, 4.07e-05, 23224.48973183], [1516504560000, 4.07e-05, 4.071e-05, 4.07e-05, 4.071e-05, 11957.33729476], [1516504620000, 4.071e-05, 4.071e-05, 4.069e-05, 4.069e-05, 27110.28069097], [1516504680000, 4.071e-05, 4.08e-05, 4.069e-05, 4.08e-05, 16502.18955109], [1516504740000, 4.08e-05, 4.08e-05, 4.07e-05, 4.08e-05, 451.9215933], [1516504800000, 4.08e-05, 4.08e-05, 4.08e-05, 4.08e-05, 3605.0151276], [1516504860000, 4.072e-05, 4.087e-05, 4.072e-05, 4.086e-05, 2427.23082874], [1516504920000, 4.085e-05, 4.088e-05, 4.085e-05, 4.088e-05, 24124.65806347], [1516504980000, 4.088e-05, 4.088e-05, 4.081e-05, 4.081e-05, 9690.43634975], [1516505040000, 4.081e-05, 4.081e-05, 4.072e-05, 4.072e-05, 6631.94152412], [1516505100000, 4.081e-05, 4.081e-05, 4.07e-05, 4.07e-05, 33405.98175339], [1516505160000, 4.081e-05, 4.081e-05, 4.071e-05, 4.079e-05, 26720.69227563], [1516505220000, 4.078e-05, 4.078e-05, 4.072e-05, 4.072e-05, 7015.83716667], [1516505280000, 4.072e-05, 4.073e-05, 4.072e-05, 4.072e-05, 12741.91429988], [1516505340000, 4.078e-05, 4.078e-05, 4.07e-05, 4.07e-05, 34392.85876606], [1516505400000, 4.072e-05, 4.072e-05, 4.069e-05, 4.072e-05, 26993.28420034], [1516505460000, 4.069e-05, 4.072e-05, 4.069e-05, 4.071e-05, 4100.20919631], [1516505520000, 4.071e-05, 4.071e-05, 4.069e-05, 4.069e-05, 5876.74798758], [1516505580000, 4.071e-05, 4.072e-05, 4.065e-05, 4.072e-05, 40814.0623926], [1516505640000, 4.065e-05, 4.072e-05, 4.065e-05, 4.065e-05, 3461.68197106], [1516505700000, 4.066e-05, 4.072e-05, 4.066e-05, 4.066e-05, 49695.94148029], [1516505760000, 4.066e-05, 4.069e-05, 4.066e-05, 4.067e-05, 12891.09829741], [1516505820000, 4.067e-05, 4.067e-05, 4.066e-05, 4.067e-05, 13442.26286086], [1516505880000, 4.066e-05, 4.072e-05, 4.065e-05, 4.072e-05, 8285.89105626], [1516505940000, 4.071e-05, 4.072e-05, 4.066e-05, 4.071e-05, 26280.31113425], [1516506000000, 4.071e-05, 4.071e-05, 4.06e-05, 4.062e-05, 39596.21335283], [1516506060000, 4.062e-05, 4.07e-05, 4.06e-05, 4.061e-05, 32221.00684647], [1516506120000, 4.071e-05, 4.071e-05, 4.061e-05, 4.062e-05, 22170.19718166], [1516506180000, 4.062e-05, 4.066e-05, 4.062e-05, 4.065e-05, 10315.74421514], [1516506240000, 4.062e-05, 4.065e-05, 4.062e-05, 4.062e-05, 40709.11581482], [1516506300000, 4.065e-05, 4.066e-05, 4.062e-05, 4.062e-05, 31036.5776985], [1516506360000, 4.062e-05, 4.108e-05, 4.057e-05, 4.06e-05, 157783.7529658], [1516506420000, 4.105e-05, 4.109e-05, 4.061e-05, 4.103e-05, 16771.19285508], [1516506480000, 4.071e-05, 4.1e-05, 4.059e-05, 4.06e-05, 35650.27962126], [1516506540000, 4.063e-05, 4.065e-05, 4.063e-05, 4.065e-05, 4534.08349953], [1516506600000, 4.09e-05, 4.09e-05, 4.09e-05, 4.09e-05, 250.59158621], [1516506660000, 4.071e-05, 4.088e-05, 4.066e-05, 4.088e-05, 26596.62259015], [1516506720000, 4.088e-05, 4.088e-05, 4.072e-05, 4.072e-05, 16310.54241115], [1516506780000, 4.072e-05, 4.085e-05, 4.066e-05, 4.067e-05, 6891.54974386], [1516506840000, 4.067e-05, 4.098e-05, 4.06e-05, 4.06e-05, 19008.49117249], [1516506900000, 4.069e-05, 4.069e-05, 4.054e-05, 4.054e-05, 112550.97070482], [1516506960000, 4.068e-05, 4.068e-05, 4.055e-05, 4.056e-05, 18268.8081548], [1516507020000, 4.06e-05, 4.068e-05, 4.055e-05, 4.056e-05, 8649.03703367], [1516507080000, 4.068e-05, 4.088e-05, 4.068e-05, 4.088e-05, 502.04484766], [1516507140000, 4.084e-05, 4.084e-05, 4.068e-05, 4.081e-05, 5771.36372383], [1516507200000, 4.071e-05, 4.081e-05, 4.068e-05, 4.081e-05, 39953.29753232], [1516507260000, 4.081e-05, 4.083e-05, 4.072e-05, 4.072e-05, 87392.24914044], [1516507320000, 4.08e-05, 4.081e-05, 4.072e-05, 4.072e-05, 43798.15755244], [1516507380000, 4.071e-05, 4.081e-05, 4.058e-05, 4.08e-05, 25569.05820947], [1516507440000, 4.059e-05, 4.08e-05, 4.057e-05, 4.06e-05, 17577.58577985], [1516507500000, 4.06e-05, 4.08e-05, 4.06e-05, 4.062e-05, 10704.86156606], [1516507560000, 4.063e-05, 4.081e-05, 4.062e-05, 4.081e-05, 113358.15317671], [1516507620000, 4.07e-05, 4.081e-05, 4.07e-05, 4.081e-05, 6751.0493124], [1516507680000, 4.081e-05, 4.081e-05, 4.081e-05, 4.081e-05, 3582.50866473], [1516507740000, 4.081e-05, 4.081e-05, 4.06e-05, 4.062e-05, 92054.62841822], [1516507800000, 4.071e-05, 4.071e-05, 4.055e-05, 4.071e-05, 23546.14707478], [1516507860000, 4.056e-05, 4.068e-05, 4.054e-05, 4.068e-05, 33514.55203083], [1516507920000, 4.068e-05, 4.071e-05, 4.065e-05, 4.068e-05, 44723.38396812], [1516507980000, 4.069e-05, 4.098e-05, 4.068e-05, 4.098e-05, 58221.0940518], [1516508040000, 4.097e-05, 4.119e-05, 4.069e-05, 4.106e-05, 100119.75868924], [1516508100000, 4.074e-05, 4.105e-05, 4.072e-05, 4.076e-05, 5322.97257569], [1516508160000, 4.078e-05, 4.079e-05, 4.078e-05, 4.079e-05, 3793.5481207], [1516508220000, 4.08e-05, 4.088e-05, 4.068e-05, 4.069e-05, 40233.99685739], [1516508280000, 4.075e-05, 4.097e-05, 4.074e-05, 4.097e-05, 7638.52393507], [1516508340000, 4.096e-05, 4.096e-05, 4.074e-05, 4.096e-05, 1144.18140907], [1516508400000, 4.09e-05, 4.09e-05, 4.075e-05, 4.09e-05, 4419.06045088], [1516508460000, 4.09e-05, 4.09e-05, 4.074e-05, 4.09e-05, 4354.4049049], [1516508520000, 4.089e-05, 4.105e-05, 4.089e-05, 4.105e-05, 27272.59467165], [1516508580000, 4.106e-05, 4.12e-05, 4.106e-05, 4.12e-05, 26150.82553494], [1516508640000, 4.12e-05, 4.12e-05, 4.075e-05, 4.079e-05, 116464.08571488], [1516508700000, 4.117e-05, 4.117e-05, 4.085e-05, 4.085e-05, 4788.77970767], [1516508760000, 4.11e-05, 4.11e-05, 4.11e-05, 4.11e-05, 436.83185538], [1516508820000, 4.109e-05, 4.11e-05, 4.089e-05, 4.09e-05, 537.47323346], [1516508880000, 4.09e-05, 4.091e-05, 4.09e-05, 4.09e-05, 3961.49050023], [1516508940000, 4.107e-05, 4.107e-05, 4.089e-05, 4.091e-05, 3641.94161842], [1516509000000, 4.091e-05, 4.091e-05, 4.089e-05, 4.09e-05, 5293.25461403], [1516509060000, 4.09e-05, 4.091e-05, 4.082e-05, 4.091e-05, 31066.36081335], [1516509120000, 4.091e-05, 4.091e-05, 4.08e-05, 4.091e-05, 11251.15264432], [1516509180000, 4.091e-05, 4.104e-05, 4.082e-05, 4.091e-05, 46511.69543778], [1516509240000, 4.083e-05, 4.091e-05, 4.083e-05, 4.085e-05, 5271.12373993], [1516509300000, 4.085e-05, 4.091e-05, 4.085e-05, 4.091e-05, 1153.59569138], [1516509360000, 4.09e-05, 4.11e-05, 4.09e-05, 4.11e-05, 22605.4476726], [1516509420000, 4.11e-05, 4.121e-05, 4.09e-05, 4.11e-05, 18416.63292944], [1516509480000, 4.11e-05, 4.117e-05, 4.08e-05, 4.083e-05, 17828.35669524], [1516509540000, 4.082e-05, 4.083e-05, 4.06e-05, 4.067e-05, 29121.9574664], [1516509600000, 4.083e-05, 4.099e-05, 4.068e-05, 4.094e-05, 32330.76795561], [1516509660000, 4.095e-05, 4.1e-05, 4.059e-05, 4.059e-05, 28598.55104099], [1516509720000, 4.094e-05, 4.095e-05, 4.063e-05, 4.063e-05, 11474.43106975], [1516509840000, 4.087e-05, 4.089e-05, 4.087e-05, 4.089e-05, 373.05136294], [1516509900000, 4.089e-05, 4.089e-05, 4.063e-05, 4.072e-05, 19610.08178327], [1516509960000, 4.072e-05, 4.072e-05, 4.063e-05, 4.071e-05, 16227.48922254], [1516510020000, 4.071e-05, 4.072e-05, 4.064e-05, 4.072e-05, 20693.14466459], [1516510080000, 4.072e-05, 4.09e-05, 4.072e-05, 4.072e-05, 23328.95584622], [1516510140000, 4.066e-05, 4.072e-05, 4.054e-05, 4.058e-05, 46111.86818259], [1516510200000, 4.072e-05, 4.089e-05, 4.055e-05, 4.089e-05, 5092.0435598], [1516510260000, 4.072e-05, 4.072e-05, 4.055e-05, 4.057e-05, 93828.42418572], [1516510320000, 4.057e-05, 4.087e-05, 4.05e-05, 4.05e-05, 170015.19313373], [1516510380000, 4.053e-05, 4.07e-05, 4.05e-05, 4.051e-05, 243944.0982975], [1516510440000, 4.051e-05, 4.078e-05, 4.042e-05, 4.042e-05, 297777.8337564], [1516510500000, 4.041e-05, 4.051e-05, 4.036e-05, 4.051e-05, 54265.4766363], [1516510560000, 4.039e-05, 4.069e-05, 4.036e-05, 4.04e-05, 41508.22413626], [1516510620000, 4.037e-05, 4.059e-05, 4.032e-05, 4.04e-05, 112871.67558653], [1516510680000, 4.04e-05, 4.055e-05, 4.035e-05, 4.05e-05, 8323.77693793], [1516510740000, 4.05e-05, 4.05e-05, 4.037e-05, 4.037e-05, 18495.6248214], [1516510800000, 4.05e-05, 4.05e-05, 4.033e-05, 4.038e-05, 52765.01414855], [1516510860000, 4.048e-05, 4.049e-05, 4.038e-05, 4.041e-05, 12132.73727806], [1516510920000, 4.038e-05, 4.041e-05, 4.029e-05, 4.029e-05, 105559.61034934], [1516510980000, 4.03e-05, 4.03e-05, 4.022e-05, 4.024e-05, 122749.16187002], [1516511040000, 4.025e-05, 4.025e-05, 4.013e-05, 4.025e-05, 103315.61701252], [1516511100000, 4.025e-05, 4.049e-05, 4.001e-05, 4.024e-05, 246314.56436805], [1516511160000, 4.025e-05, 4.049e-05, 4.013e-05, 4.048e-05, 13213.18587076], [1516511220000, 4.026e-05, 4.027e-05, 4.025e-05, 4.025e-05, 61077.79725054], [1516511280000, 4.025e-05, 4.049e-05, 4.025e-05, 4.027e-05, 32821.76050803], [1516511340000, 4.047e-05, 4.053e-05, 4.028e-05, 4.053e-05, 97295.3335326], [1516511400000, 4.06e-05, 4.084e-05, 4.06e-05, 4.067e-05, 30715.04959225], [1516511460000, 4.067e-05, 4.071e-05, 4.067e-05, 4.071e-05, 3139.66809216], [1516511520000, 4.071e-05, 4.084e-05, 4.07e-05, 4.084e-05, 4145.67921724], [1516511580000, 4.084e-05, 4.084e-05, 4.067e-05, 4.067e-05, 68557.33837909], [1516511640000, 4.068e-05, 4.082e-05, 4.067e-05, 4.067e-05, 12265.76036101], [1516511700000, 4.067e-05, 4.067e-05, 4.05e-05, 4.05e-05, 19661.06791693], [1516511760000, 4.065e-05, 4.065e-05, 4.05e-05, 4.051e-05, 2665.22083776], [1516511820000, 4.04e-05, 4.074e-05, 4.04e-05, 4.073e-05, 1558.29885814], [1516511880000, 4.067e-05, 4.074e-05, 4.067e-05, 4.074e-05, 173.25664608], [1516511940000, 4.071e-05, 4.072e-05, 4.067e-05, 4.067e-05, 1118.16230732], [1516512000000, 4.067e-05, 4.07e-05, 4.067e-05, 4.07e-05, 10978.97354916], [1516512060000, 4.071e-05, 4.071e-05, 4.066e-05, 4.066e-05, 26365.68196632], [1516512120000, 4.067e-05, 4.067e-05, 4.049e-05, 4.05e-05, 2924.34982467], [1516512180000, 4.04e-05, 4.065e-05, 4.04e-05, 4.065e-05, 1756.32600489], [1516512240000, 4.049e-05, 4.049e-05, 4.042e-05, 4.042e-05, 44725.0], [1516512300000, 4.045e-05, 4.05e-05, 4.045e-05, 4.05e-05, 1233.52338149], [1516512360000, 4.064e-05, 4.07e-05, 4.064e-05, 4.07e-05, 51155.47257845], [1516512420000, 4.067e-05, 4.072e-05, 4.067e-05, 4.071e-05, 14259.22484546], [1516512480000, 4.074e-05, 4.114e-05, 4.074e-05, 4.085e-05, 101125.32764828], [1516512540000, 4.085e-05, 4.102e-05, 4.085e-05, 4.085e-05, 3223.93095631], [1516512600000, 4.085e-05, 4.101e-05, 4.077e-05, 4.085e-05, 4724.91964779], [1516512660000, 4.083e-05, 4.085e-05, 4.077e-05, 4.085e-05, 67189.11293083], [1516512720000, 4.085e-05, 4.101e-05, 4.085e-05, 4.085e-05, 18697.05062678], [1516512780000, 4.085e-05, 4.101e-05, 4.085e-05, 4.085e-05, 4185.08666496], [1516512840000, 4.085e-05, 4.093e-05, 4.068e-05, 4.068e-05, 26007.16920089], [1516512900000, 4.09e-05, 4.09e-05, 4.068e-05, 4.068e-05, 17405.85954137], [1516512960000, 4.068e-05, 4.07e-05, 4.066e-05, 4.07e-05, 7056.32608494], [1516513020000, 4.071e-05, 4.089e-05, 4.07e-05, 4.071e-05, 15029.01134843], [1516513140000, 4.091e-05, 4.091e-05, 4.08e-05, 4.08e-05, 1639.88815509], [1516513200000, 4.08e-05, 4.092e-05, 4.08e-05, 4.09e-05, 12793.66478111], [1516513260000, 4.1e-05, 4.11e-05, 4.09e-05, 4.11e-05, 5433.91279188], [1516513320000, 4.111e-05, 4.115e-05, 4.09e-05, 4.09e-05, 44554.82580027], [1516513380000, 4.111e-05, 4.111e-05, 4.08e-05, 4.08e-05, 41967.82426865], [1516513440000, 4.08e-05, 4.089e-05, 4.08e-05, 4.089e-05, 607.50157368], [1516513500000, 4.088e-05, 4.089e-05, 4.088e-05, 4.089e-05, 744.44284293], [1516513560000, 4.08e-05, 4.089e-05, 4.08e-05, 4.089e-05, 33771.91458775], [1516513620000, 4.08e-05, 4.089e-05, 4.071e-05, 4.071e-05, 45986.9541898], [1516513680000, 4.089e-05, 4.089e-05, 4.089e-05, 4.089e-05, 323.4970686], [1516513740000, 4.09e-05, 4.09e-05, 4.08e-05, 4.09e-05, 9357.4475858], [1516513800000, 4.09e-05, 4.094e-05, 4.08e-05, 4.085e-05, 12965.20409837], [1516513860000, 4.09e-05, 4.09e-05, 4.085e-05, 4.09e-05, 1298.61370506], [1516513920000, 4.083e-05, 4.109e-05, 4.082e-05, 4.082e-05, 19644.38933671], [1516513980000, 4.109e-05, 4.109e-05, 4.07e-05, 4.07e-05, 92050.84729678], [1516514040000, 4.071e-05, 4.111e-05, 4.061e-05, 4.07e-05, 18300.37134862], [1516514100000, 4.071e-05, 4.071e-05, 4.062e-05, 4.062e-05, 9565.91861618], [1516514160000, 4.076e-05, 4.077e-05, 4.063e-05, 4.077e-05, 3304.19539263], [1516514220000, 4.076e-05, 4.076e-05, 4.076e-05, 4.076e-05, 14.32822357], [1516514280000, 4.076e-05, 4.08e-05, 4.076e-05, 4.077e-05, 3843.41411138], [1516514340000, 4.077e-05, 4.077e-05, 4.076e-05, 4.076e-05, 2416.12189523], [1516514400000, 4.062e-05, 4.076e-05, 4.06e-05, 4.061e-05, 6019.81932673], [1516514460000, 4.061e-05, 4.076e-05, 4.061e-05, 4.067e-05, 14061.93037645], [1516514520000, 4.06e-05, 4.076e-05, 4.06e-05, 4.076e-05, 7392.88451324], [1516514580000, 4.06e-05, 4.074e-05, 4.059e-05, 4.074e-05, 355.67202606], [1516514640000, 4.069e-05, 4.069e-05, 4.044e-05, 4.051e-05, 19833.69564112], [1516514700000, 4.051e-05, 4.074e-05, 4.044e-05, 4.074e-05, 8118.39923116], [1516514760000, 4.044e-05, 4.058e-05, 4.044e-05, 4.058e-05, 5179.40143704], [1516514820000, 4.052e-05, 4.073e-05, 4.05e-05, 4.073e-05, 2076.26502083], [1516514880000, 4.073e-05, 4.073e-05, 4.046e-05, 4.072e-05, 23370.71337039], [1516514940000, 4.072e-05, 4.072e-05, 4.046e-05, 4.072e-05, 3093.95700405], [1516515000000, 4.06e-05, 4.073e-05, 4.046e-05, 4.073e-05, 1924.10824796], [1516515060000, 4.052e-05, 4.052e-05, 4.046e-05, 4.05e-05, 20557.89162613], [1516515120000, 4.05e-05, 4.067e-05, 4.05e-05, 4.05e-05, 9075.79703889], [1516515180000, 4.05e-05, 4.072e-05, 4.05e-05, 4.05e-05, 13863.54788757], [1516515240000, 4.067e-05, 4.067e-05, 4.05e-05, 4.057e-05, 6196.9951761], [1516515300000, 4.057e-05, 4.061e-05, 4.051e-05, 4.051e-05, 634.50843151], [1516515360000, 4.065e-05, 4.065e-05, 4.051e-05, 4.052e-05, 19988.86745848], [1516515420000, 4.052e-05, 4.065e-05, 4.052e-05, 4.065e-05, 1258.43575568], [1516515480000, 4.064e-05, 4.064e-05, 4.052e-05, 4.052e-05, 10798.8382861], [1516515540000, 4.052e-05, 4.063e-05, 4.046e-05, 4.046e-05, 19441.90342519], [1516515600000, 4.064e-05, 4.064e-05, 4.054e-05, 4.06e-05, 19852.97178837], [1516515660000, 4.054e-05, 4.06e-05, 4.047e-05, 4.06e-05, 22095.69176313], [1516515720000, 4.051e-05, 4.06e-05, 4.048e-05, 4.048e-05, 10710.63179144], [1516515780000, 4.049e-05, 4.05e-05, 4.048e-05, 4.049e-05, 30310.75767687], [1516515840000, 4.05e-05, 4.05e-05, 4.048e-05, 4.048e-05, 30212.76307229], [1516515900000, 4.049e-05, 4.059e-05, 4.035e-05, 4.059e-05, 62672.54680877], [1516515960000, 4.059e-05, 4.059e-05, 4.045e-05, 4.047e-05, 60301.71398335], [1516516020000, 4.047e-05, 4.059e-05, 4.044e-05, 4.046e-05, 40143.12255718], [1516516080000, 4.041e-05, 4.041e-05, 4.033e-05, 4.036e-05, 66409.92126409], [1516516140000, 4.04e-05, 4.041e-05, 4.036e-05, 4.037e-05, 6220.11476063], [1516516200000, 4.037e-05, 4.041e-05, 4.025e-05, 4.025e-05, 45928.49072029], [1516516260000, 4.037e-05, 4.037e-05, 4.025e-05, 4.027e-05, 28542.77136813], [1516516320000, 4.037e-05, 4.037e-05, 4.026e-05, 4.026e-05, 12299.71279216], [1516516380000, 4.037e-05, 4.037e-05, 4.026e-05, 4.037e-05, 5217.35212313], [1516516440000, 4.037e-05, 4.037e-05, 4.026e-05, 4.026e-05, 43529.65228089], [1516516500000, 4.027e-05, 4.037e-05, 4.025e-05, 4.025e-05, 32084.84994495], [1516516560000, 4.037e-05, 4.037e-05, 4.023e-05, 4.025e-05, 39305.26651988], [1516516620000, 4.023e-05, 4.037e-05, 4.022e-05, 4.037e-05, 19061.9909717], [1516516680000, 4.025e-05, 4.025e-05, 4.013e-05, 4.025e-05, 104601.93095049], [1516516740000, 4.025e-05, 4.025e-05, 4.004e-05, 4.025e-05, 14098.0055399], [1516516800000, 4.025e-05, 4.025e-05, 4.006e-05, 4.025e-05, 17898.64329471], [1516516860000, 4.025e-05, 4.025e-05, 4.013e-05, 4.025e-05, 29209.71911778], [1516516920000, 4.025e-05, 4.025e-05, 4.019e-05, 4.024e-05, 7776.35092336], [1516516980000, 4.024e-05, 4.024e-05, 4.019e-05, 4.024e-05, 8689.91323907], [1516517040000, 4.025e-05, 4.025e-05, 4.024e-05, 4.025e-05, 81556.48172744], [1516517100000, 4.025e-05, 4.025e-05, 4.025e-05, 4.025e-05, 14485.59079746], [1516517160000, 4.025e-05, 4.025e-05, 4.024e-05, 4.025e-05, 80897.75712566], [1516517220000, 4.025e-05, 4.025e-05, 4.022e-05, 4.025e-05, 43914.99698213], [1516517280000, 4.025e-05, 4.036e-05, 4.023e-05, 4.036e-05, 36768.2225375], [1516517340000, 4.036e-05, 4.036e-05, 4.036e-05, 4.036e-05, 2456.49405762], [1516517400000, 4.036e-05, 4.036e-05, 4.028e-05, 4.036e-05, 2458.19235186], [1516517460000, 4.029e-05, 4.036e-05, 4.029e-05, 4.036e-05, 2710.55411127], [1516517520000, 4.036e-05, 4.036e-05, 4.031e-05, 4.036e-05, 1550.57824877], [1516517580000, 4.031e-05, 4.036e-05, 4.031e-05, 4.036e-05, 1162.37027297], [1516517640000, 4.032e-05, 4.037e-05, 4.032e-05, 4.037e-05, 49277.19153329], [1516517700000, 4.037e-05, 4.056e-05, 4.031e-05, 4.056e-05, 44568.92339626], [1516517760000, 4.031e-05, 4.056e-05, 4.025e-05, 4.032e-05, 107199.3742451], [1516517820000, 4.037e-05, 4.037e-05, 4.032e-05, 4.032e-05, 29913.47981082], [1516517880000, 4.03e-05, 4.032e-05, 4.025e-05, 4.032e-05, 23459.71361514], [1516517940000, 4.032e-05, 4.032e-05, 4.03e-05, 4.032e-05, 4764.0695412], [1516518000000, 4.032e-05, 4.033e-05, 4.03e-05, 4.033e-05, 6551.40292915], [1516518060000, 4.033e-05, 4.033e-05, 4.025e-05, 4.032e-05, 20654.80378649], [1516518120000, 4.025e-05, 4.032e-05, 4.015e-05, 4.015e-05, 49799.69051537], [1516518180000, 4.023e-05, 4.023e-05, 4.016e-05, 4.023e-05, 10285.75809169], [1516518240000, 4.023e-05, 4.023e-05, 4.015e-05, 4.015e-05, 19261.28490382], [1516518300000, 4.015e-05, 4.023e-05, 4.007e-05, 4.007e-05, 44073.36838698], [1516518360000, 4.01e-05, 4.02e-05, 4.006e-05, 4.006e-05, 33176.77066571], [1516518420000, 4.006e-05, 4.02e-05, 4.006e-05, 4.007e-05, 14707.4491433], [1516518480000, 4.02e-05, 4.03e-05, 4.001e-05, 4.029e-05, 74122.33815172], [1516518540000, 4.03e-05, 4.03e-05, 4.006e-05, 4.007e-05, 11186.71686285], [1516518600000, 4.008e-05, 4.028e-05, 4.006e-05, 4.028e-05, 25787.16370894], [1516518660000, 4.009e-05, 4.026e-05, 4e-05, 4.024e-05, 86045.44284032], [1516518720000, 4.023e-05, 4.023e-05, 4e-05, 4.005e-05, 24760.15586683], [1516518780000, 4.015e-05, 4.023e-05, 4e-05, 4e-05, 176249.64716907], [1516518840000, 4.022e-05, 4.022e-05, 4.001e-05, 4.002e-05, 2902.12986347], [1516518900000, 4.002e-05, 4.023e-05, 4.002e-05, 4.023e-05, 4490.34456356], [1516518960000, 4.02e-05, 4.023e-05, 4e-05, 4.02e-05, 62128.17474843], [1516519020000, 4.02e-05, 4.024e-05, 4.001e-05, 4.024e-05, 60615.96290364], [1516519080000, 4.024e-05, 4.024e-05, 4.02e-05, 4.024e-05, 35335.63594502], [1516519140000, 4.024e-05, 4.026e-05, 4.024e-05, 4.024e-05, 68670.8094093], [1516519200000, 4.024e-05, 4.024e-05, 4.023e-05, 4.024e-05, 18627.57342539], [1516519260000, 4.01e-05, 4.03e-05, 4.01e-05, 4.011e-05, 4475.14679107], [1516519320000, 4.011e-05, 4.03e-05, 4.01e-05, 4.011e-05, 11716.79275284], [1516519380000, 4.029e-05, 4.029e-05, 4e-05, 4.011e-05, 18530.5253589], [1516519440000, 4.011e-05, 4.011e-05, 4.001e-05, 4.011e-05, 4389.55693718], [1516519500000, 4.011e-05, 4.011e-05, 4.002e-05, 4.002e-05, 2528.96620116], [1516519560000, 4.002e-05, 4.015e-05, 4.002e-05, 4.002e-05, 37746.74532502], [1516519620000, 4.012e-05, 4.015e-05, 4.001e-05, 4.015e-05, 2257.45035668], [1516519680000, 4.015e-05, 4.015e-05, 4.001e-05, 4.015e-05, 965.6632176], [1516519740000, 4.015e-05, 4.015e-05, 4.002e-05, 4.005e-05, 12323.27209424], [1516519800000, 4.005e-05, 4.027e-05, 4.002e-05, 4.025e-05, 16104.88874487], [1516519860000, 4.008e-05, 4.022e-05, 4.001e-05, 4.019e-05, 35741.36173446], [1516519920000, 4.019e-05, 4.019e-05, 4e-05, 4.001e-05, 37404.93421844], [1516519980000, 4.017e-05, 4.019e-05, 4e-05, 4e-05, 59114.23265095], [1516520040000, 4.001e-05, 4.019e-05, 4.001e-05, 4.001e-05, 12058.43853882], [1516520100000, 4.001e-05, 4.001e-05, 3.988e-05, 3.988e-05, 79431.67789701], [1516520160000, 4e-05, 4e-05, 3.983e-05, 3.983e-05, 32822.83551216], [1516520220000, 3.983e-05, 3.99e-05, 3.982e-05, 3.984e-05, 106088.55504693], [1516520280000, 3.981e-05, 3.99e-05, 3.971e-05, 3.99e-05, 208336.26174179], [1516520340000, 3.99e-05, 3.99e-05, 3.943e-05, 3.967e-05, 81127.1702572], [1516520400000, 3.961e-05, 3.961e-05, 3.93e-05, 3.93e-05, 33358.95750495], [1516520460000, 3.93e-05, 3.93e-05, 3.915e-05, 3.93e-05, 60735.07597574], [1516520520000, 3.915e-05, 3.93e-05, 3.899e-05, 3.93e-05, 146426.97531205], [1516520580000, 3.93e-05, 3.932e-05, 3.914e-05, 3.914e-05, 54151.84675505], [1516520640000, 3.934e-05, 3.934e-05, 3.901e-05, 3.916e-05, 50390.90903718], [1516520700000, 3.925e-05, 3.925e-05, 3.883e-05, 3.913e-05, 136453.27532798], [1516520760000, 3.903e-05, 3.913e-05, 3.888e-05, 3.888e-05, 80537.59350548], [1516520820000, 3.888e-05, 3.888e-05, 3.882e-05, 3.885e-05, 48113.34305535], [1516520880000, 3.888e-05, 3.91e-05, 3.888e-05, 3.91e-05, 20703.07336088], [1516520940000, 3.91e-05, 3.913e-05, 3.886e-05, 3.907e-05, 45521.54832818], [1516521000000, 3.913e-05, 3.913e-05, 3.91e-05, 3.913e-05, 22393.48338175], [1516521060000, 3.915e-05, 3.962e-05, 3.915e-05, 3.942e-05, 102807.76972078], [1516521120000, 3.942e-05, 3.97e-05, 3.942e-05, 3.97e-05, 37253.53769579], [1516521180000, 3.975e-05, 3.99e-05, 3.943e-05, 3.982e-05, 72975.65659903], [1516521240000, 3.97e-05, 3.981e-05, 3.946e-05, 3.965e-05, 93212.80249523], [1516521300000, 3.966e-05, 3.977e-05, 3.947e-05, 3.966e-05, 31865.46402641], [1516521360000, 3.966e-05, 3.989e-05, 3.958e-05, 3.971e-05, 16642.58249764], [1516521420000, 3.971e-05, 3.975e-05, 3.971e-05, 3.975e-05, 6184.01487192], [1516521480000, 3.975e-05, 3.975e-05, 3.971e-05, 3.973e-05, 47197.95458233], [1516521540000, 3.973e-05, 3.992e-05, 3.946e-05, 3.992e-05, 84924.08718574], [1516521600000, 3.983e-05, 3.989e-05, 3.952e-05, 3.956e-05, 1284.63261596], [1516521660000, 3.971e-05, 3.972e-05, 3.971e-05, 3.972e-05, 3910.92323195], [1516521720000, 3.973e-05, 3.985e-05, 3.971e-05, 3.971e-05, 59397.01519892], [1516521780000, 3.971e-05, 3.983e-05, 3.971e-05, 3.972e-05, 45745.32913442], [1516521840000, 3.972e-05, 3.972e-05, 3.955e-05, 3.972e-05, 12125.73558106], [1516521900000, 3.971e-05, 3.981e-05, 3.955e-05, 3.972e-05, 34946.70303892], [1516521960000, 3.972e-05, 3.981e-05, 3.972e-05, 3.979e-05, 17791.58944486], [1516522020000, 3.977e-05, 3.979e-05, 3.956e-05, 3.956e-05, 12489.7665024], [1516522080000, 3.972e-05, 3.979e-05, 3.957e-05, 3.979e-05, 1030.5270483], [1516522140000, 3.957e-05, 3.985e-05, 3.957e-05, 3.96e-05, 8608.51366695], [1516522200000, 3.961e-05, 3.983e-05, 3.952e-05, 3.983e-05, 28253.43573162], [1516522260000, 3.981e-05, 3.982e-05, 3.958e-05, 3.958e-05, 9656.14467958], [1516522320000, 3.956e-05, 3.981e-05, 3.956e-05, 3.98e-05, 11770.80484561], [1516522380000, 3.98e-05, 3.98e-05, 3.979e-05, 3.979e-05, 3088.19992982], [1516522440000, 3.979e-05, 3.98e-05, 3.979e-05, 3.979e-05, 775.96077765], [1516522500000, 3.979e-05, 3.979e-05, 3.957e-05, 3.979e-05, 2572.69082604], [1516522560000, 3.979e-05, 3.992e-05, 3.961e-05, 3.992e-05, 15226.32422265], [1516522620000, 3.992e-05, 3.999e-05, 3.992e-05, 3.993e-05, 5443.33733722], [1516522680000, 3.999e-05, 4.009e-05, 3.999e-05, 4.009e-05, 17233.09503432], [1516522740000, 4.01e-05, 4.01e-05, 4e-05, 4.004e-05, 7488.42947631], [1516522800000, 4.01e-05, 4.01e-05, 4.005e-05, 4.01e-05, 48529.15315683], [1516522860000, 4.01e-05, 4.015e-05, 4.006e-05, 4.006e-05, 68918.38890473], [1516522920000, 4.015e-05, 4.018e-05, 4.01e-05, 4.018e-05, 1221.74900505], [1516522980000, 4.019e-05, 4.024e-05, 4.018e-05, 4.018e-05, 15937.31223264], [1516523040000, 4.018e-05, 4.03e-05, 4.018e-05, 4.019e-05, 19042.04614588], [1516523100000, 4.022e-05, 4.03e-05, 4.018e-05, 4.03e-05, 52797.83855186], [1516523160000, 4.03e-05, 4.03e-05, 4.027e-05, 4.03e-05, 2900.37108386], [1516523220000, 4.023e-05, 4.03e-05, 4.023e-05, 4.03e-05, 558.17600299], [1516523280000, 4.03e-05, 4.03e-05, 4.023e-05, 4.023e-05, 2103.50232332], [1516523340000, 4.023e-05, 4.028e-05, 4.018e-05, 4.018e-05, 19487.66392293], [1516523400000, 4.018e-05, 4.018e-05, 3.993e-05, 3.993e-05, 11751.58802037], [1516523460000, 3.993e-05, 3.993e-05, 3.992e-05, 3.992e-05, 23776.85495976], [1516523520000, 3.993e-05, 4e-05, 3.992e-05, 4e-05, 29625.24250963], [1516523580000, 4e-05, 4.027e-05, 3.99e-05, 3.99e-05, 90005.68719362], [1516523640000, 3.99e-05, 3.995e-05, 3.968e-05, 3.968e-05, 73566.89300617], [1516523700000, 3.979e-05, 4.01e-05, 3.957e-05, 4.003e-05, 15189.75269104], [1516523760000, 3.991e-05, 4.002e-05, 3.99e-05, 3.991e-05, 5857.98327729], [1516523820000, 3.99e-05, 3.991e-05, 3.961e-05, 3.962e-05, 2489.95795459], [1516523880000, 3.985e-05, 3.999e-05, 3.962e-05, 3.993e-05, 5224.9789377], [1516523940000, 3.992e-05, 3.998e-05, 3.991e-05, 3.998e-05, 8151.91190871], [1516524000000, 3.993e-05, 3.998e-05, 3.985e-05, 3.992e-05, 1422.80949774], [1516524060000, 3.996e-05, 3.998e-05, 3.985e-05, 3.996e-05, 3231.19205142], [1516524120000, 3.996e-05, 4.011e-05, 3.987e-05, 3.995e-05, 32778.21350307], [1516524180000, 3.995e-05, 3.995e-05, 3.97e-05, 3.97e-05, 14940.48979333], [1516524240000, 3.971e-05, 3.994e-05, 3.951e-05, 3.994e-05, 33755.88598508], [1516524300000, 3.99e-05, 3.992e-05, 3.946e-05, 3.988e-05, 20018.7923294], [1516524360000, 3.988e-05, 3.995e-05, 3.933e-05, 3.986e-05, 22825.51136781], [1516524420000, 3.986e-05, 4e-05, 3.962e-05, 4e-05, 14308.59824645], [1516524480000, 3.986e-05, 4e-05, 3.962e-05, 3.999e-05, 6515.95614721], [1516524540000, 3.987e-05, 3.999e-05, 3.961e-05, 3.963e-05, 22834.26199773], [1516524600000, 3.963e-05, 3.999e-05, 3.963e-05, 3.995e-05, 13617.85931784], [1516524660000, 3.994e-05, 3.994e-05, 3.989e-05, 3.989e-05, 378.7692178], [1516524720000, 3.995e-05, 3.995e-05, 3.989e-05, 3.993e-05, 6483.24974588], [1516524780000, 3.991e-05, 3.991e-05, 3.988e-05, 3.989e-05, 3731.28922906], [1516524840000, 3.989e-05, 3.991e-05, 3.988e-05, 3.991e-05, 801.40612732], [1516524900000, 3.991e-05, 3.992e-05, 3.984e-05, 3.992e-05, 24300.92396697], [1516524960000, 3.995e-05, 3.995e-05, 3.985e-05, 3.995e-05, 12779.23514698], [1516525020000, 3.994e-05, 3.995e-05, 3.985e-05, 3.995e-05, 27796.28319223], [1516525080000, 3.985e-05, 3.994e-05, 3.985e-05, 3.985e-05, 3963.58553477], [1516525140000, 3.993e-05, 3.994e-05, 3.984e-05, 3.994e-05, 14531.62833166], [1516525200000, 3.994e-05, 4e-05, 3.984e-05, 4e-05, 20097.67034406], [1516525260000, 3.985e-05, 4e-05, 3.984e-05, 4e-05, 8526.7837605], [1516525320000, 3.994e-05, 4e-05, 3.984e-05, 3.984e-05, 10762.96098255], [1516525380000, 3.985e-05, 4e-05, 3.984e-05, 3.999e-05, 21856.37142771], [1516525440000, 4e-05, 4e-05, 3.973e-05, 3.973e-05, 9179.77904227], [1516525500000, 3.984e-05, 3.986e-05, 3.963e-05, 3.963e-05, 24381.08629797], [1516525560000, 3.983e-05, 3.985e-05, 3.964e-05, 3.973e-05, 5418.74727087], [1516525620000, 3.973e-05, 3.98e-05, 3.973e-05, 3.973e-05, 28788.51352316], [1516525680000, 3.979e-05, 3.979e-05, 3.962e-05, 3.962e-05, 18624.25933417], [1516525740000, 3.962e-05, 3.962e-05, 3.951e-05, 3.951e-05, 7810.97679112], [1516525800000, 3.951e-05, 3.951e-05, 3.934e-05, 3.949e-05, 34989.51488222], [1516525860000, 3.949e-05, 3.949e-05, 3.944e-05, 3.949e-05, 18498.90920346], [1516525920000, 3.948e-05, 3.948e-05, 3.935e-05, 3.935e-05, 1274.6218187], [1516525980000, 3.947e-05, 3.947e-05, 3.937e-05, 3.947e-05, 2969.09376276], [1516526040000, 3.941e-05, 3.947e-05, 3.938e-05, 3.947e-05, 22426.07205364], [1516526100000, 3.947e-05, 3.947e-05, 3.921e-05, 3.921e-05, 57442.04655951], [1516526160000, 3.922e-05, 3.922e-05, 3.92e-05, 3.92e-05, 1287.68130501], [1516526220000, 3.921e-05, 3.922e-05, 3.888e-05, 3.922e-05, 102786.03375546], [1516526280000, 3.903e-05, 3.943e-05, 3.902e-05, 3.903e-05, 19964.4111034], [1516526340000, 3.939e-05, 3.94e-05, 3.906e-05, 3.94e-05, 1266.75436951], [1516526400000, 3.93e-05, 3.94e-05, 3.93e-05, 3.93e-05, 4493.46387698], [1516526460000, 3.93e-05, 3.938e-05, 3.93e-05, 3.938e-05, 8415.14420447], [1516526580000, 3.935e-05, 3.938e-05, 3.93e-05, 3.93e-05, 26070.16722834], [1516526640000, 3.93e-05, 3.935e-05, 3.902e-05, 3.912e-05, 26237.39718692], [1516526700000, 3.935e-05, 3.94e-05, 3.92e-05, 3.935e-05, 49903.33040746], [1516526760000, 3.935e-05, 3.947e-05, 3.935e-05, 3.947e-05, 54391.0155037], [1516526820000, 3.94e-05, 3.94e-05, 3.935e-05, 3.936e-05, 52318.680297], [1516526880000, 3.935e-05, 3.95e-05, 3.935e-05, 3.95e-05, 17730.74379679], [1516526940000, 3.95e-05, 3.959e-05, 3.935e-05, 3.95e-05, 39705.19207774], [1516527000000, 3.949e-05, 3.965e-05, 3.937e-05, 3.94e-05, 38310.84633749], [1516527060000, 3.944e-05, 3.961e-05, 3.944e-05, 3.961e-05, 24844.15443015], [1516527120000, 3.961e-05, 3.982e-05, 3.935e-05, 3.977e-05, 70829.89163864], [1516527180000, 3.977e-05, 3.988e-05, 3.959e-05, 3.959e-05, 12085.73222202], [1516527240000, 3.94e-05, 3.97e-05, 3.94e-05, 3.97e-05, 5886.6758895], [1516527300000, 3.97e-05, 3.974e-05, 3.969e-05, 3.969e-05, 1452.84604179], [1516527360000, 3.969e-05, 3.974e-05, 3.945e-05, 3.949e-05, 17153.18647204], [1516527420000, 3.945e-05, 3.946e-05, 3.945e-05, 3.946e-05, 594.53160142], [1516527480000, 3.971e-05, 3.978e-05, 3.946e-05, 3.977e-05, 2558.72436652], [1516527540000, 3.976e-05, 3.976e-05, 3.971e-05, 3.971e-05, 1102.01110575], [1516527600000, 3.97e-05, 3.97e-05, 3.961e-05, 3.961e-05, 405.02289807], [1516527660000, 3.961e-05, 3.961e-05, 3.945e-05, 3.945e-05, 19622.7883457], [1516527720000, 3.945e-05, 3.946e-05, 3.945e-05, 3.946e-05, 2153.67850688], [1516527780000, 3.946e-05, 3.96e-05, 3.946e-05, 3.96e-05, 9349.89538463], [1516527840000, 3.961e-05, 3.961e-05, 3.96e-05, 3.96e-05, 189.89343142], [1516527900000, 3.961e-05, 3.969e-05, 3.96e-05, 3.968e-05, 22445.00145437], [1516527960000, 3.968e-05, 3.969e-05, 3.96e-05, 3.96e-05, 40049.25970211], [1516528020000, 3.969e-05, 3.969e-05, 3.968e-05, 3.969e-05, 12046.35671116], [1516528080000, 3.96e-05, 3.969e-05, 3.96e-05, 3.969e-05, 1580.42084337], [1516528140000, 3.968e-05, 3.968e-05, 3.961e-05, 3.961e-05, 12490.59039396], [1516528200000, 3.961e-05, 3.969e-05, 3.961e-05, 3.969e-05, 1796.84529052], [1516528260000, 3.961e-05, 3.961e-05, 3.961e-05, 3.961e-05, 238.95124268], [1516528320000, 3.969e-05, 3.969e-05, 3.962e-05, 3.969e-05, 7580.14397359], [1516528380000, 3.964e-05, 3.968e-05, 3.962e-05, 3.964e-05, 36138.14675207], [1516528440000, 3.969e-05, 3.969e-05, 3.962e-05, 3.969e-05, 1636.62156869], [1516528500000, 3.969e-05, 3.975e-05, 3.969e-05, 3.975e-05, 2256.34468207], [1516528560000, 3.985e-05, 3.985e-05, 3.962e-05, 3.962e-05, 14527.10779619], [1516528620000, 3.963e-05, 3.963e-05, 3.963e-05, 3.963e-05, 470.76683703], [1516528680000, 3.983e-05, 3.983e-05, 3.962e-05, 3.963e-05, 6783.34710696], [1516528740000, 3.962e-05, 3.963e-05, 3.962e-05, 3.962e-05, 13007.74278404], [1516528800000, 3.962e-05, 3.963e-05, 3.961e-05, 3.961e-05, 13621.75843105], [1516528860000, 3.96e-05, 3.961e-05, 3.96e-05, 3.961e-05, 620.84901092], [1516528920000, 3.961e-05, 3.961e-05, 3.961e-05, 3.961e-05, 319.72549142], [1516528980000, 3.961e-05, 3.961e-05, 3.96e-05, 3.961e-05, 3748.89728058], [1516529040000, 3.961e-05, 3.961e-05, 3.96e-05, 3.96e-05, 14466.13313487], [1516529100000, 3.95e-05, 3.96e-05, 3.945e-05, 3.945e-05, 23444.85922604], [1516529160000, 3.947e-05, 3.96e-05, 3.947e-05, 3.96e-05, 7363.61485484], [1516529220000, 3.96e-05, 3.96e-05, 3.945e-05, 3.95e-05, 3700.14248365], [1516529280000, 3.96e-05, 3.96e-05, 3.951e-05, 3.953e-05, 7018.93992265], [1516529340000, 3.957e-05, 3.96e-05, 3.95e-05, 3.95e-05, 9780.65632645], [1516529400000, 3.951e-05, 3.954e-05, 3.951e-05, 3.954e-05, 5353.44241566], [1516529460000, 3.954e-05, 3.954e-05, 3.954e-05, 3.954e-05, 843.941694], [1516529520000, 3.954e-05, 3.96e-05, 3.954e-05, 3.954e-05, 7248.15028359], [1516529580000, 3.954e-05, 3.954e-05, 3.95e-05, 3.95e-05, 2424.36478594], [1516529640000, 3.954e-05, 3.959e-05, 3.954e-05, 3.959e-05, 952.75759531], [1516529700000, 3.959e-05, 3.96e-05, 3.959e-05, 3.96e-05, 11649.05793231], [1516529760000, 3.961e-05, 3.963e-05, 3.961e-05, 3.963e-05, 14306.05617679], [1516529820000, 3.961e-05, 3.963e-05, 3.96e-05, 3.963e-05, 34917.05305653], [1516529880000, 3.963e-05, 3.963e-05, 3.954e-05, 3.962e-05, 10042.0156525], [1516529940000, 3.962e-05, 3.962e-05, 3.962e-05, 3.962e-05, 2000.76610553], [1516530000000, 3.962e-05, 3.962e-05, 3.956e-05, 3.956e-05, 492.22167796], [1516530060000, 3.962e-05, 3.962e-05, 3.954e-05, 3.954e-05, 251.0], [1516530120000, 3.957e-05, 3.962e-05, 3.957e-05, 3.962e-05, 8481.36465443], [1516530180000, 3.954e-05, 3.962e-05, 3.954e-05, 3.962e-05, 501.07269908], [1516530240000, 3.958e-05, 3.958e-05, 3.947e-05, 3.954e-05, 2737.02610303], [1516530300000, 3.948e-05, 3.971e-05, 3.947e-05, 3.971e-05, 35669.53109737], [1516530360000, 3.962e-05, 3.971e-05, 3.962e-05, 3.971e-05, 2500.25368343], [1516530420000, 3.971e-05, 3.971e-05, 3.971e-05, 3.971e-05, 381.10850739], [1516530480000, 3.971e-05, 3.971e-05, 3.971e-05, 3.971e-05, 573.77775162], [1516530540000, 3.971e-05, 3.971e-05, 3.969e-05, 3.969e-05, 1995.72231474], [1516530600000, 3.969e-05, 3.97e-05, 3.95e-05, 3.95e-05, 5334.38583243], [1516530660000, 3.95e-05, 3.983e-05, 3.95e-05, 3.98e-05, 15549.46332708], [1516530720000, 3.983e-05, 4e-05, 3.983e-05, 4e-05, 149642.64543505], [1516530780000, 3.99e-05, 4.017e-05, 3.99e-05, 4.011e-05, 81567.75553468], [1516530840000, 4.011e-05, 4.024e-05, 3.985e-05, 4.019e-05, 117396.54128526], [1516530900000, 4.016e-05, 4.019e-05, 4.016e-05, 4.016e-05, 2689.24385728], [1516530960000, 4.019e-05, 4.019e-05, 4.016e-05, 4.016e-05, 10428.85123795], [1516531020000, 4.022e-05, 4.022e-05, 4.022e-05, 4.022e-05, 275.8633267], [1516531080000, 4.02e-05, 4.024e-05, 3.995e-05, 4.015e-05, 63902.99306395], [1516531140000, 4.021e-05, 4.04e-05, 3.996e-05, 3.996e-05, 38761.11747871], [1516531200000, 4.03e-05, 4.05e-05, 3.998e-05, 3.999e-05, 80811.96408292], [1516531260000, 4.007e-05, 4.007e-05, 4.007e-05, 4.007e-05, 56.0], [1516531320000, 4.046e-05, 4.047e-05, 4.002e-05, 4.005e-05, 12229.80644232], [1516531380000, 4.005e-05, 4.015e-05, 4.005e-05, 4.015e-05, 3990.39091545], [1516531440000, 4.005e-05, 4.035e-05, 4.005e-05, 4.035e-05, 1467.40047635], [1516531500000, 4.035e-05, 4.046e-05, 4.033e-05, 4.034e-05, 7567.23877594], [1516531560000, 4.034e-05, 4.035e-05, 4.015e-05, 4.035e-05, 2626.42512217], [1516531620000, 4.035e-05, 4.035e-05, 4.002e-05, 4.002e-05, 9565.14453472], [1516531680000, 4.046e-05, 4.05e-05, 4.033e-05, 4.035e-05, 19417.88480998], [1516531740000, 4.035e-05, 4.05e-05, 4.021e-05, 4.021e-05, 3588.44865694], [1516531800000, 4.035e-05, 4.05e-05, 4.034e-05, 4.034e-05, 7770.74022079], [1516531860000, 4.044e-05, 4.044e-05, 4.021e-05, 4.043e-05, 2565.28844303], [1516531920000, 4.04e-05, 4.044e-05, 4.01e-05, 4.023e-05, 30035.75010321], [1516531980000, 4.025e-05, 4.043e-05, 4.025e-05, 4.043e-05, 790.42589432], [1516532040000, 4.041e-05, 4.041e-05, 4.03e-05, 4.03e-05, 3628.44104977], [1516532100000, 4.025e-05, 4.03e-05, 4.004e-05, 4.029e-05, 10686.58040327], [1516532160000, 4.026e-05, 4.026e-05, 4.002e-05, 4.004e-05, 2071.53336959], [1516532220000, 4.005e-05, 4.029e-05, 3.986e-05, 3.989e-05, 89618.60326026], [1516532280000, 3.989e-05, 4.003e-05, 3.986e-05, 4e-05, 41860.48368284], [1516532340000, 3.989e-05, 4e-05, 3.973e-05, 4e-05, 17280.02433809], [1516532400000, 4e-05, 4e-05, 3.984e-05, 3.984e-05, 24483.3643762], [1516532460000, 3.983e-05, 4e-05, 3.983e-05, 4e-05, 1277.69280761], [1516532520000, 3.99e-05, 4e-05, 3.984e-05, 3.99e-05, 9691.5804271], [1516532580000, 4e-05, 4e-05, 3.991e-05, 4e-05, 6970.55495056], [1516532640000, 3.993e-05, 4.02e-05, 3.993e-05, 3.993e-05, 19822.58943295], [1516532700000, 3.995e-05, 4.029e-05, 3.994e-05, 4.026e-05, 12913.04942822], [1516532760000, 4.023e-05, 4.026e-05, 4.023e-05, 4.026e-05, 1838.65455849], [1516532820000, 4.022e-05, 4.03e-05, 4.022e-05, 4.03e-05, 5799.0772328], [1516532880000, 4.03e-05, 4.03e-05, 4.022e-05, 4.029e-05, 7483.08986488], [1516532940000, 4.029e-05, 4.029e-05, 4.022e-05, 4.029e-05, 1055.92691261], [1516533000000, 4.022e-05, 4.029e-05, 4.022e-05, 4.029e-05, 8022.11913537], [1516533060000, 4.029e-05, 4.029e-05, 4.012e-05, 4.029e-05, 4117.33897258], [1516533120000, 4.029e-05, 4.029e-05, 4.029e-05, 4.029e-05, 4978.34689359], [1516533180000, 4.029e-05, 4.029e-05, 4.02e-05, 4.021e-05, 2775.98315306], [1516533240000, 4.029e-05, 4.03e-05, 4.029e-05, 4.03e-05, 831.06109345], [1516533300000, 4.021e-05, 4.03e-05, 4.021e-05, 4.029e-05, 195.9360621], [1516533360000, 4.029e-05, 4.03e-05, 4.029e-05, 4.03e-05, 22319.80785828], [1516533420000, 4.03e-05, 4.03e-05, 4.029e-05, 4.029e-05, 2939.77432843], [1516533480000, 4.03e-05, 4.03e-05, 4.026e-05, 4.026e-05, 3659.94517405], [1516533540000, 4.029e-05, 4.029e-05, 4.029e-05, 4.029e-05, 54.76923778], [1516533600000, 4.029e-05, 4.029e-05, 4.029e-05, 4.029e-05, 1686.36654445], [1516533660000, 4.029e-05, 4.029e-05, 4.025e-05, 4.029e-05, 6669.51297432], [1516533720000, 4.029e-05, 4.029e-05, 4.025e-05, 4.029e-05, 6828.19120339], [1516533780000, 4.027e-05, 4.027e-05, 4.027e-05, 4.027e-05, 327.39145685], [1516533840000, 4.027e-05, 4.028e-05, 4.025e-05, 4.027e-05, 5595.8468876], [1516533900000, 4.027e-05, 4.027e-05, 4.022e-05, 4.022e-05, 5810.6438455], [1516533960000, 4.027e-05, 4.028e-05, 4.022e-05, 4.028e-05, 5110.56626262], [1516534020000, 4.027e-05, 4.029e-05, 4e-05, 4e-05, 15818.36681355], [1516534080000, 4.028e-05, 4.028e-05, 4.018e-05, 4.018e-05, 3320.39913734], [1516534140000, 4.027e-05, 4.029e-05, 4.018e-05, 4.029e-05, 4161.3041162], [1516534200000, 4.027e-05, 4.029e-05, 4.027e-05, 4.029e-05, 1992.56808808], [1516534260000, 4.029e-05, 4.029e-05, 4.002e-05, 4.027e-05, 11970.59730002], [1516534320000, 4.027e-05, 4.029e-05, 4.027e-05, 4.029e-05, 6085.34459269], [1516534380000, 4.029e-05, 4.029e-05, 4.029e-05, 4.029e-05, 27.37094778], [1516534440000, 4.029e-05, 4.029e-05, 4.028e-05, 4.029e-05, 6643.24616852], [1516534500000, 4.029e-05, 4.029e-05, 4.028e-05, 4.028e-05, 72543.77725283], [1516534560000, 4.028e-05, 4.028e-05, 4.028e-05, 4.028e-05, 8411.43215846], [1516534620000, 4.029e-05, 4.029e-05, 4.028e-05, 4.029e-05, 9322.56469939], [1516534680000, 4.029e-05, 4.029e-05, 4.029e-05, 4.029e-05, 8144.79380772], [1516534740000, 4.029e-05, 4.049e-05, 4.028e-05, 4.049e-05, 32563.80650249], [1516534800000, 4.049e-05, 4.051e-05, 4.029e-05, 4.051e-05, 50502.5364418], [1516534860000, 4.051e-05, 4.056e-05, 4.051e-05, 4.052e-05, 57782.69577949], [1516534920000, 4.052e-05, 4.066e-05, 4.03e-05, 4.066e-05, 36641.2227324], [1516534980000, 4.057e-05, 4.072e-05, 4.031e-05, 4.031e-05, 18913.6864988], [1516535040000, 4.054e-05, 4.073e-05, 4.032e-05, 4.056e-05, 35258.22491859], [1516535100000, 4.069e-05, 4.08e-05, 4.056e-05, 4.074e-05, 17430.85668177], [1516535160000, 4.07e-05, 4.088e-05, 4.07e-05, 4.081e-05, 97986.41586486], [1516535220000, 4.089e-05, 4.089e-05, 4.081e-05, 4.081e-05, 8107.09341962], [1516535280000, 4.081e-05, 4.081e-05, 4.056e-05, 4.056e-05, 48804.69940512], [1516535340000, 4.058e-05, 4.088e-05, 4.04e-05, 4.04e-05, 78792.05584576], [1516535400000, 4.056e-05, 4.056e-05, 4.041e-05, 4.055e-05, 2963.01972671], [1516535460000, 4.055e-05, 4.055e-05, 4.055e-05, 4.055e-05, 2621.4715995], [1516535520000, 4.055e-05, 4.079e-05, 4.055e-05, 4.079e-05, 632.57486457], [1516535580000, 4.055e-05, 4.08e-05, 4.055e-05, 4.075e-05, 2038.45046663], [1516535640000, 4.055e-05, 4.082e-05, 4.055e-05, 4.082e-05, 3317.97620491], [1516535700000, 4.075e-05, 4.075e-05, 4.065e-05, 4.065e-05, 3436.73165753], [1516535760000, 4.065e-05, 4.082e-05, 4.065e-05, 4.081e-05, 10132.6383983], [1516535820000, 4.066e-05, 4.084e-05, 4.066e-05, 4.082e-05, 4105.60500964], [1516535880000, 4.084e-05, 4.084e-05, 4.084e-05, 4.084e-05, 2616.89357168], [1516535940000, 4.085e-05, 4.089e-05, 4.084e-05, 4.088e-05, 8873.94287471], [1516536000000, 4.089e-05, 4.093e-05, 4.084e-05, 4.093e-05, 16653.18135034], [1516536060000, 4.093e-05, 4.104e-05, 4.089e-05, 4.1e-05, 86955.44828311], [1516536120000, 4.1e-05, 4.115e-05, 4.091e-05, 4.114e-05, 105071.3546583], [1516536180000, 4.115e-05, 4.136e-05, 4.093e-05, 4.101e-05, 111749.98934677], [1516536240000, 4.101e-05, 4.12e-05, 4.101e-05, 4.12e-05, 17543.31548074], [1516536300000, 4.12e-05, 4.12e-05, 4.091e-05, 4.101e-05, 17091.89523777], [1516536360000, 4.093e-05, 4.12e-05, 4.093e-05, 4.12e-05, 4699.31328045], [1516536420000, 4.118e-05, 4.12e-05, 4.118e-05, 4.118e-05, 757.6026469], [1516536480000, 4.118e-05, 4.119e-05, 4.098e-05, 4.119e-05, 21029.49249982], [1516536540000, 4.119e-05, 4.131e-05, 4.102e-05, 4.103e-05, 18207.12164881], [1516536600000, 4.128e-05, 4.131e-05, 4.085e-05, 4.089e-05, 72407.92161863], [1516536660000, 4.109e-05, 4.126e-05, 4.109e-05, 4.114e-05, 2949.43712256], [1516536720000, 4.109e-05, 4.128e-05, 4.092e-05, 4.093e-05, 16422.17199796], [1516536780000, 4.093e-05, 4.094e-05, 4.093e-05, 4.094e-05, 1494.77532616], [1516536840000, 4.117e-05, 4.117e-05, 4.086e-05, 4.091e-05, 49508.0087831], [1516536900000, 4.09e-05, 4.091e-05, 4.084e-05, 4.084e-05, 36421.1299105], [1516536960000, 4.09e-05, 4.092e-05, 4.09e-05, 4.092e-05, 5209.9887878], [1516537020000, 4.092e-05, 4.092e-05, 4.063e-05, 4.09e-05, 124108.31440012], [1516537080000, 4.09e-05, 4.092e-05, 4.065e-05, 4.086e-05, 3389.0567205], [1516537140000, 4.086e-05, 4.086e-05, 4.065e-05, 4.086e-05, 4962.30751239], [1516537200000, 4.098e-05, 4.1e-05, 4.086e-05, 4.099e-05, 16006.9618067], [1516537260000, 4.1e-05, 4.111e-05, 4.099e-05, 4.111e-05, 23032.70030995], [1516537320000, 4.099e-05, 4.135e-05, 4.087e-05, 4.127e-05, 13773.73253909], [1516537380000, 4.09e-05, 4.09e-05, 4.065e-05, 4.065e-05, 8091.58695001], [1516537440000, 4.09e-05, 4.116e-05, 4.09e-05, 4.114e-05, 9812.65852171], [1516537500000, 4.112e-05, 4.112e-05, 4.065e-05, 4.065e-05, 8797.58477788], [1516537620000, 4.089e-05, 4.11e-05, 4.07e-05, 4.075e-05, 7974.78475215], [1516537680000, 4.07e-05, 4.075e-05, 4.07e-05, 4.075e-05, 15828.27660781], [1516537740000, 4.075e-05, 4.075e-05, 4.07e-05, 4.075e-05, 4592.75202632], [1516537800000, 4.076e-05, 4.1e-05, 4.067e-05, 4.067e-05, 20760.94432472], [1516537860000, 4.067e-05, 4.075e-05, 4.067e-05, 4.075e-05, 4499.32767786], [1516537920000, 4.075e-05, 4.097e-05, 4.055e-05, 4.065e-05, 14591.65258373], [1516537980000, 4.065e-05, 4.066e-05, 4.065e-05, 4.066e-05, 7750.6111262], [1516538040000, 4.066e-05, 4.086e-05, 4.066e-05, 4.086e-05, 8760.00104632], [1516538100000, 4.086e-05, 4.119e-05, 4.086e-05, 4.115e-05, 26466.04710103], [1516538160000, 4.111e-05, 4.111e-05, 4.109e-05, 4.109e-05, 49402.0903353], [1516538220000, 4.078e-05, 4.098e-05, 4.066e-05, 4.098e-05, 4057.99358179], [1516538280000, 4.096e-05, 4.096e-05, 4.08e-05, 4.08e-05, 877.28081792], [1516538340000, 4.08e-05, 4.08e-05, 4.067e-05, 4.067e-05, 5056.75426591], [1516538400000, 4.07e-05, 4.094e-05, 4.07e-05, 4.094e-05, 6924.81289468], [1516538460000, 4.07e-05, 4.1e-05, 4.07e-05, 4.081e-05, 51389.51285331], [1516538520000, 4.081e-05, 4.095e-05, 4.081e-05, 4.085e-05, 5253.69001867], [1516538580000, 4.085e-05, 4.1e-05, 4.085e-05, 4.085e-05, 46297.63547737], [1516538640000, 4.099e-05, 4.1e-05, 4.099e-05, 4.1e-05, 502.70616349], [1516538700000, 4.099e-05, 4.1e-05, 4.099e-05, 4.1e-05, 21007.14308499], [1516538760000, 4.104e-05, 4.105e-05, 4.1e-05, 4.105e-05, 16851.57276309], [1516538820000, 4.093e-05, 4.105e-05, 4.085e-05, 4.104e-05, 11786.04308958], [1516538880000, 4.085e-05, 4.106e-05, 4.085e-05, 4.105e-05, 14790.537918], [1516538940000, 4.105e-05, 4.124e-05, 4.105e-05, 4.124e-05, 21134.56613214], [1516539000000, 4.12e-05, 4.12e-05, 4.105e-05, 4.105e-05, 29923.27439308], [1516539060000, 4.068e-05, 4.126e-05, 4.067e-05, 4.088e-05, 10481.07688059], [1516539120000, 4.1e-05, 4.113e-05, 4.09e-05, 4.09e-05, 4677.98272744], [1516539180000, 4.089e-05, 4.111e-05, 4.068e-05, 4.108e-05, 63568.53157839], [1516539240000, 4.091e-05, 4.091e-05, 4.09e-05, 4.091e-05, 9555.07440626], [1516539300000, 4.091e-05, 4.091e-05, 4.07e-05, 4.07e-05, 12941.50907342], [1516539360000, 4.07e-05, 4.09e-05, 4.07e-05, 4.083e-05, 2921.47862977], [1516539420000, 4.083e-05, 4.083e-05, 4.073e-05, 4.08e-05, 11145.65115527], [1516539480000, 4.08e-05, 4.083e-05, 4.068e-05, 4.068e-05, 7307.80098538], [1516539540000, 4.07e-05, 4.07e-05, 4.068e-05, 4.07e-05, 4424.42905847], [1516539600000, 4.07e-05, 4.07e-05, 4.067e-05, 4.067e-05, 7483.32802882], [1516539660000, 4.067e-05, 4.07e-05, 4.066e-05, 4.069e-05, 15044.0616094], [1516539720000, 4.069e-05, 4.07e-05, 4.06e-05, 4.07e-05, 28114.76190128], [1516539780000, 4.061e-05, 4.07e-05, 4.061e-05, 4.07e-05, 383.63604879], [1516539840000, 4.07e-05, 4.07e-05, 4.063e-05, 4.07e-05, 9172.29229106], [1516539900000, 4.07e-05, 4.081e-05, 4.063e-05, 4.063e-05, 59117.43067999], [1516539960000, 4.063e-05, 4.082e-05, 4.062e-05, 4.081e-05, 26990.50630675], [1516540020000, 4.083e-05, 4.087e-05, 4.083e-05, 4.087e-05, 2167.26541313], [1516540080000, 4.087e-05, 4.088e-05, 4.083e-05, 4.088e-05, 6003.85805242], [1516540140000, 4.082e-05, 4.082e-05, 4.081e-05, 4.082e-05, 10944.54468643], [1516540200000, 4.081e-05, 4.081e-05, 4.067e-05, 4.08e-05, 21207.32419358], [1516540260000, 4.08e-05, 4.08e-05, 4.068e-05, 4.068e-05, 5008.63703205], [1516540320000, 4.068e-05, 4.08e-05, 4.068e-05, 4.08e-05, 9059.54502515], [1516540380000, 4.08e-05, 4.08e-05, 4.068e-05, 4.068e-05, 15780.08204879], [1516540440000, 4.068e-05, 4.08e-05, 4.067e-05, 4.08e-05, 731.30640845], [1516540500000, 4.08e-05, 4.096e-05, 4.067e-05, 4.096e-05, 9433.39976543], [1516540560000, 4.096e-05, 4.098e-05, 4.067e-05, 4.098e-05, 13897.25160076], [1516540620000, 4.072e-05, 4.075e-05, 4.072e-05, 4.075e-05, 3880.54036079], [1516540680000, 4.075e-05, 4.075e-05, 4.072e-05, 4.072e-05, 1514.47087167], [1516540740000, 4.072e-05, 4.075e-05, 4.072e-05, 4.075e-05, 3787.3642457], [1516540800000, 4.075e-05, 4.075e-05, 4.072e-05, 4.075e-05, 1207.77357501], [1516540860000, 4.075e-05, 4.075e-05, 4.072e-05, 4.072e-05, 4500.39942378], [1516540920000, 4.073e-05, 4.075e-05, 4.072e-05, 4.075e-05, 4601.0408041], [1516540980000, 4.098e-05, 4.098e-05, 4.073e-05, 4.073e-05, 1167.01414461], [1516541040000, 4.073e-05, 4.088e-05, 4.073e-05, 4.073e-05, 1278.50713552], [1516541100000, 4.084e-05, 4.084e-05, 4.075e-05, 4.083e-05, 4423.99644715], [1516541160000, 4.075e-05, 4.079e-05, 4.072e-05, 4.072e-05, 16491.58355541], [1516541220000, 4.067e-05, 4.072e-05, 4.063e-05, 4.072e-05, 1906.3843417], [1516541280000, 4.071e-05, 4.071e-05, 4.07e-05, 4.07e-05, 10039.44740841], [1516541340000, 4.07e-05, 4.073e-05, 4.07e-05, 4.073e-05, 11063.39513675], [1516541400000, 4.072e-05, 4.084e-05, 4.072e-05, 4.072e-05, 876.2512064], [1516541460000, 4.073e-05, 4.084e-05, 4.073e-05, 4.073e-05, 6167.00237653], [1516541520000, 4.085e-05, 4.085e-05, 4.085e-05, 4.085e-05, 1101.5626123], [1516541580000, 4.085e-05, 4.085e-05, 4.085e-05, 4.085e-05, 1154.57414311], [1516541640000, 4.098e-05, 4.103e-05, 4.079e-05, 4.079e-05, 490.40099199], [1516541700000, 4.079e-05, 4.084e-05, 4.079e-05, 4.084e-05, 7134.57003641], [1516541760000, 4.084e-05, 4.084e-05, 4.079e-05, 4.084e-05, 3020.00329317], [1516541820000, 4.084e-05, 4.084e-05, 4.071e-05, 4.072e-05, 36300.77093024], [1516541880000, 4.072e-05, 4.084e-05, 4.072e-05, 4.084e-05, 7169.36764125], [1516541940000, 4.072e-05, 4.094e-05, 4.072e-05, 4.072e-05, 7602.56364224], [1516542000000, 4.094e-05, 4.094e-05, 4.075e-05, 4.075e-05, 4275.6038825], [1516542060000, 4.093e-05, 4.098e-05, 4.078e-05, 4.078e-05, 2042.62664631], [1516542120000, 4.091e-05, 4.091e-05, 4.08e-05, 4.081e-05, 14475.78362015], [1516542180000, 4.08e-05, 4.08e-05, 4.08e-05, 4.08e-05, 273.00430062], [1516542240000, 4.08e-05, 4.09e-05, 4.08e-05, 4.09e-05, 678.68174092], [1516542300000, 4.089e-05, 4.089e-05, 4.08e-05, 4.08e-05, 546.82440108], [1516542360000, 4.08e-05, 4.08e-05, 4.076e-05, 4.08e-05, 5019.93512109], [1516542420000, 4.075e-05, 4.085e-05, 4.074e-05, 4.075e-05, 1654.42329986], [1516542480000, 4.075e-05, 4.079e-05, 4.074e-05, 4.074e-05, 1109.16906468], [1516542540000, 4.074e-05, 4.09e-05, 4.073e-05, 4.073e-05, 774.97071838], [1516542600000, 4.09e-05, 4.09e-05, 4.073e-05, 4.09e-05, 772.08563563], [1516542660000, 4.09e-05, 4.09e-05, 4.078e-05, 4.078e-05, 11729.12771578], [1516542720000, 4.078e-05, 4.09e-05, 4.072e-05, 4.072e-05, 11402.23319347], [1516542780000, 4.09e-05, 4.091e-05, 4.09e-05, 4.09e-05, 11920.95812464], [1516542840000, 4.073e-05, 4.073e-05, 4.073e-05, 4.073e-05, 1112.90682342], [1516542900000, 4.073e-05, 4.089e-05, 4.071e-05, 4.071e-05, 20134.06948892], [1516542960000, 4.072e-05, 4.091e-05, 4.055e-05, 4.08e-05, 43882.71275745], [1516543020000, 4.079e-05, 4.088e-05, 4.06e-05, 4.065e-05, 21858.20570675], [1516543080000, 4.065e-05, 4.09e-05, 4.062e-05, 4.062e-05, 8280.65774773], [1516543200000, 4.081e-05, 4.082e-05, 4.07e-05, 4.082e-05, 3469.65536152], [1516543260000, 4.083e-05, 4.083e-05, 4.07e-05, 4.07e-05, 9575.17179746], [1516543320000, 4.08e-05, 4.08e-05, 4.07e-05, 4.07e-05, 34471.82392865], [1516543380000, 4.08e-05, 4.08e-05, 4.071e-05, 4.071e-05, 1181.501254], [1516543440000, 4.071e-05, 4.071e-05, 4.07e-05, 4.07e-05, 2384.48754993], [1516543500000, 4.07e-05, 4.071e-05, 4.07e-05, 4.071e-05, 14241.74837551], [1516543560000, 4.071e-05, 4.071e-05, 4.06e-05, 4.065e-05, 4521.13874763], [1516543620000, 4.065e-05, 4.065e-05, 4.029e-05, 4.062e-05, 63069.88729933], [1516543680000, 4.064e-05, 4.07e-05, 4.063e-05, 4.07e-05, 27026.28716677], [1516543740000, 4.07e-05, 4.071e-05, 4.051e-05, 4.051e-05, 39087.72968231], [1516543800000, 4.051e-05, 4.063e-05, 4.051e-05, 4.06e-05, 8649.83479949], [1516543860000, 4.061e-05, 4.061e-05, 4.06e-05, 4.061e-05, 1422.5296571], [1516543920000, 4.061e-05, 4.063e-05, 4.06e-05, 4.06e-05, 2482.60474043], [1516543980000, 4.061e-05, 4.063e-05, 4.061e-05, 4.063e-05, 12669.65205614], [1516544040000, 4.06e-05, 4.061e-05, 4.06e-05, 4.061e-05, 2480.32342261], [1516544100000, 4.061e-05, 4.061e-05, 4.061e-05, 4.061e-05, 9527.32380828], [1516544160000, 4.061e-05, 4.061e-05, 4.06e-05, 4.061e-05, 11056.36525701], [1516544220000, 4.06e-05, 4.06e-05, 4.05e-05, 4.051e-05, 19089.20599231], [1516544280000, 4.051e-05, 4.051e-05, 4.031e-05, 4.031e-05, 24517.50498584], [1516544340000, 4.031e-05, 4.056e-05, 4.031e-05, 4.056e-05, 6568.73718436], [1516544400000, 4.033e-05, 4.056e-05, 4.031e-05, 4.056e-05, 19003.60266554], [1516544460000, 4.033e-05, 4.04e-05, 4.027e-05, 4.04e-05, 40917.05168157], [1516544520000, 4.027e-05, 4.04e-05, 4.02e-05, 4.026e-05, 66351.0428235], [1516544580000, 4.021e-05, 4.039e-05, 4.017e-05, 4.021e-05, 36531.54233357], [1516544640000, 4.026e-05, 4.039e-05, 4.015e-05, 4.039e-05, 32985.48801069], [1516544700000, 4.039e-05, 4.039e-05, 4.015e-05, 4.038e-05, 2392.62295972], [1516544760000, 4.037e-05, 4.037e-05, 4.015e-05, 4.036e-05, 4323.27333933], [1516544820000, 4.015e-05, 4.033e-05, 4.015e-05, 4.03e-05, 15889.39357122], [1516544880000, 4.03e-05, 4.03e-05, 4.015e-05, 4.015e-05, 12695.57907778], [1516544940000, 4.028e-05, 4.028e-05, 4.015e-05, 4.026e-05, 7492.05351211], [1516545000000, 4.026e-05, 4.026e-05, 4.015e-05, 4.015e-05, 5548.24841868], [1516545060000, 4.015e-05, 4.015e-05, 4.015e-05, 4.015e-05, 738.20054973], [1516545120000, 4.015e-05, 4.015e-05, 4e-05, 4e-05, 68275.4865637], [1516545180000, 4.001e-05, 4.003e-05, 4e-05, 4e-05, 18642.82411869], [1516545240000, 4e-05, 4.019e-05, 4e-05, 4e-05, 24707.49272296], [1516545300000, 4e-05, 4e-05, 3.998e-05, 4e-05, 14985.11680751], [1516545360000, 4e-05, 4.012e-05, 4e-05, 4.012e-05, 3826.25998153], [1516545420000, 4.011e-05, 4.012e-05, 4e-05, 4.012e-05, 29297.18267819], [1516545480000, 4.012e-05, 4.012e-05, 4.01e-05, 4.01e-05, 4698.72938348], [1516545540000, 4.01e-05, 4.012e-05, 3.996e-05, 3.997e-05, 12972.14946262], [1516545600000, 4.012e-05, 4.015e-05, 4.012e-05, 4.015e-05, 7828.11987824], [1516545660000, 4.015e-05, 4.015e-05, 4.012e-05, 4.015e-05, 20168.38760176], [1516545720000, 4.015e-05, 4.02e-05, 4.015e-05, 4.02e-05, 18508.650905], [1516545780000, 4.02e-05, 4.028e-05, 4.015e-05, 4.015e-05, 7107.19466403], [1516545840000, 4.015e-05, 4.019e-05, 4.015e-05, 4.019e-05, 9553.66457771], [1516545900000, 4.012e-05, 4.019e-05, 4.01e-05, 4.01e-05, 29617.7676877], [1516545960000, 4.001e-05, 4.019e-05, 3.999e-05, 4e-05, 16364.91914352], [1516546020000, 4.019e-05, 4.021e-05, 4.019e-05, 4.021e-05, 8168.3603689], [1516546080000, 4.021e-05, 4.028e-05, 4.021e-05, 4.028e-05, 2958.17961052], [1516546200000, 4.026e-05, 4.029e-05, 4.025e-05, 4.029e-05, 10527.67186573], [1516546260000, 4.005e-05, 4.025e-05, 4.005e-05, 4.025e-05, 8929.43519759], [1516546320000, 4.005e-05, 4.005e-05, 4.005e-05, 4.005e-05, 7196.26150454], [1516546380000, 4.015e-05, 4.015e-05, 4.005e-05, 4.005e-05, 6848.87946837], [1516546500000, 4.005e-05, 4.024e-05, 4.002e-05, 4.024e-05, 14976.90928759], [1516546560000, 4.005e-05, 4.024e-05, 4.005e-05, 4.024e-05, 144.36348893], [1516546620000, 4.024e-05, 4.024e-05, 4.006e-05, 4.024e-05, 147.03586878], [1516546740000, 4.024e-05, 4.024e-05, 4.022e-05, 4.022e-05, 9482.20532102], [1516546800000, 4.022e-05, 4.024e-05, 4.022e-05, 4.024e-05, 7549.86960308], [1516546860000, 4.024e-05, 4.024e-05, 4.01e-05, 4.022e-05, 20399.89064383], [1516546920000, 4.008e-05, 4.022e-05, 4.007e-05, 4.022e-05, 3094.67994231], [1516546980000, 4.022e-05, 4.022e-05, 4.022e-05, 4.022e-05, 2088.79402077], [1516547040000, 4.021e-05, 4.021e-05, 4.02e-05, 4.02e-05, 278.77990021], [1516547100000, 4.02e-05, 4.032e-05, 4.008e-05, 4.032e-05, 25258.93346917], [1516547160000, 4.025e-05, 4.025e-05, 4.025e-05, 4.025e-05, 24.81343283], [1516547220000, 4.026e-05, 4.031e-05, 4.025e-05, 4.027e-05, 9218.44106219], [1516547280000, 4.027e-05, 4.031e-05, 4.013e-05, 4.031e-05, 23705.65933271], [1516547340000, 4.032e-05, 4.034e-05, 4.031e-05, 4.031e-05, 6356.94778143], [1516547400000, 4.032e-05, 4.034e-05, 4.02e-05, 4.02e-05, 16032.47177313], [1516547460000, 4.03e-05, 4.045e-05, 4.02e-05, 4.022e-05, 13609.10621252], [1516547520000, 4.022e-05, 4.045e-05, 4.02e-05, 4.022e-05, 10978.54483249], [1516547580000, 4.022e-05, 4.022e-05, 4.022e-05, 4.022e-05, 861.0], [1516547640000, 4.022e-05, 4.022e-05, 4.021e-05, 4.022e-05, 1070.0], [1516547700000, 4.022e-05, 4.044e-05, 4.022e-05, 4.023e-05, 18273.08716512], [1516547760000, 4.025e-05, 4.044e-05, 4.025e-05, 4.03e-05, 10050.69772668], [1516547820000, 4.03e-05, 4.031e-05, 4.03e-05, 4.03e-05, 256.4334749], [1516547880000, 4.03e-05, 4.039e-05, 4.03e-05, 4.039e-05, 5033.78510051], [1516547940000, 4.039e-05, 4.039e-05, 4.03e-05, 4.03e-05, 7807.43427776], [1516548000000, 4.03e-05, 4.03e-05, 4.03e-05, 4.03e-05, 1926.19084167], [1516548060000, 4.03e-05, 4.03e-05, 4.026e-05, 4.026e-05, 12338.91739181], [1516548120000, 4.026e-05, 4.026e-05, 4.026e-05, 4.026e-05, 895.14179391], [1516548180000, 4.03e-05, 4.031e-05, 4.03e-05, 4.031e-05, 7005.64952487], [1516548240000, 4.031e-05, 4.031e-05, 4.03e-05, 4.031e-05, 69117.94118145], [1516548300000, 4.031e-05, 4.041e-05, 4.03e-05, 4.03e-05, 1749.06657889], [1516548360000, 4.031e-05, 4.041e-05, 4.031e-05, 4.032e-05, 2107.77127187], [1516548420000, 4.031e-05, 4.041e-05, 4.031e-05, 4.035e-05, 14879.86952292], [1516548480000, 4.035e-05, 4.045e-05, 4.031e-05, 4.045e-05, 26325.55135912], [1516548540000, 4.035e-05, 4.045e-05, 4.031e-05, 4.031e-05, 13480.97865378], [1516548600000, 4.031e-05, 4.035e-05, 4.022e-05, 4.033e-05, 16707.15832653], [1516548660000, 4.033e-05, 4.033e-05, 4.021e-05, 4.021e-05, 87232.8486231], [1516548720000, 4.031e-05, 4.031e-05, 4.021e-05, 4.021e-05, 6867.11145169], [1516548840000, 4.021e-05, 4.021e-05, 4.021e-05, 4.021e-05, 2249.52433294], [1516548900000, 4.021e-05, 4.031e-05, 4.021e-05, 4.031e-05, 914.15185538], [1516548960000, 4.031e-05, 4.031e-05, 4.021e-05, 4.021e-05, 13686.58616224], [1516549020000, 4.031e-05, 4.031e-05, 4.021e-05, 4.021e-05, 3749.03149133], [1516549080000, 4.021e-05, 4.031e-05, 4.02e-05, 4.031e-05, 4935.83126484], [1516549140000, 4.03e-05, 4.03e-05, 4.03e-05, 4.03e-05, 8443.76618581], [1516549200000, 4.03e-05, 4.03e-05, 4.022e-05, 4.022e-05, 31644.67815274], [1516549260000, 4.022e-05, 4.03e-05, 4.009e-05, 4.009e-05, 30804.45741452], [1516549320000, 4.009e-05, 4.022e-05, 3.995e-05, 4.021e-05, 101091.91522023], [1516549380000, 4.021e-05, 4.021e-05, 4.009e-05, 4.009e-05, 10385.43669878], [1516549440000, 4.001e-05, 4.019e-05, 3.996e-05, 4.009e-05, 7822.22000643], [1516549500000, 4.017e-05, 4.017e-05, 4.009e-05, 4.016e-05, 14200.96689048], [1516549560000, 4.015e-05, 4.016e-05, 4.009e-05, 4.009e-05, 3627.04717897], [1516549620000, 4.014e-05, 4.014e-05, 3.997e-05, 3.997e-05, 26433.22294564], [1516549680000, 3.997e-05, 3.997e-05, 3.995e-05, 3.997e-05, 37410.49318136], [1516549740000, 3.998e-05, 4.009e-05, 3.998e-05, 4.009e-05, 9227.03409329], [1516549800000, 4e-05, 4e-05, 4e-05, 4e-05, 622.95026609], [1516549860000, 4e-05, 4.002e-05, 4e-05, 4.002e-05, 55686.43564709], [1516549920000, 4.001e-05, 4.005e-05, 4.001e-05, 4.002e-05, 12285.74455367], [1516549980000, 4.002e-05, 4.002e-05, 3.997e-05, 4.001e-05, 4933.32374883], [1516550040000, 3.997e-05, 4e-05, 3.982e-05, 3.982e-05, 30727.09636092], [1516550100000, 3.982e-05, 3.996e-05, 3.98e-05, 3.996e-05, 5197.42230327], [1516550160000, 3.996e-05, 3.997e-05, 3.991e-05, 3.991e-05, 2029.65423617], [1516550220000, 3.991e-05, 3.992e-05, 3.991e-05, 3.992e-05, 18441.96228338], [1516550280000, 3.997e-05, 3.997e-05, 3.98e-05, 3.981e-05, 19990.98006258], [1516550340000, 3.982e-05, 3.982e-05, 3.98e-05, 3.982e-05, 6270.85367531], [1516550400000, 3.98e-05, 3.98e-05, 3.978e-05, 3.978e-05, 4458.31432696], [1516550460000, 3.977e-05, 3.977e-05, 3.958e-05, 3.963e-05, 24977.96657761], [1516550520000, 3.971e-05, 3.971e-05, 3.971e-05, 3.971e-05, 6405.34041017], [1516550580000, 3.971e-05, 3.971e-05, 3.958e-05, 3.958e-05, 25108.85268754], [1516550640000, 3.959e-05, 3.959e-05, 3.958e-05, 3.958e-05, 23156.5734395], [1516550700000, 3.958e-05, 3.958e-05, 3.94e-05, 3.941e-05, 83579.9857794], [1516550760000, 3.951e-05, 3.957e-05, 3.94e-05, 3.957e-05, 18667.67262128], [1516550820000, 3.95e-05, 3.958e-05, 3.942e-05, 3.958e-05, 15735.42591045], [1516550880000, 3.957e-05, 3.958e-05, 3.935e-05, 3.937e-05, 14905.44151486], [1516550940000, 3.937e-05, 3.956e-05, 3.933e-05, 3.934e-05, 32728.04463662], [1516551000000, 3.956e-05, 3.956e-05, 3.95e-05, 3.95e-05, 2415.20192406], [1516551060000, 3.95e-05, 3.95e-05, 3.935e-05, 3.95e-05, 10101.2414519], [1516551120000, 3.95e-05, 3.953e-05, 3.935e-05, 3.949e-05, 2114.41828407], [1516551180000, 3.949e-05, 3.95e-05, 3.936e-05, 3.948e-05, 3934.15230942], [1516551240000, 3.936e-05, 3.948e-05, 3.935e-05, 3.947e-05, 18853.7382559], [1516551300000, 3.94e-05, 3.94e-05, 3.935e-05, 3.935e-05, 13689.74338124], [1516551360000, 3.937e-05, 3.947e-05, 3.937e-05, 3.938e-05, 8539.85448787], [1516551420000, 3.938e-05, 3.95e-05, 3.937e-05, 3.938e-05, 36290.54351988], [1516551480000, 3.95e-05, 3.955e-05, 3.946e-05, 3.95e-05, 17382.27781419], [1516551540000, 3.95e-05, 3.955e-05, 3.938e-05, 3.938e-05, 42545.1148074], [1516551600000, 3.955e-05, 3.955e-05, 3.937e-05, 3.937e-05, 44440.25221506], [1516551660000, 3.937e-05, 3.95e-05, 3.937e-05, 3.937e-05, 2449.34596436], [1516551720000, 3.937e-05, 3.937e-05, 3.935e-05, 3.935e-05, 12032.97902812], [1516551780000, 3.932e-05, 3.936e-05, 3.927e-05, 3.935e-05, 18128.8517162], [1516551840000, 3.927e-05, 3.935e-05, 3.926e-05, 3.935e-05, 15514.36491121], [1516551900000, 3.931e-05, 3.931e-05, 3.926e-05, 3.926e-05, 3505.75933035], [1516551960000, 3.929e-05, 3.929e-05, 3.92e-05, 3.92e-05, 16861.42867886], [1516552020000, 3.92e-05, 3.925e-05, 3.918e-05, 3.918e-05, 36761.56749586], [1516552080000, 3.918e-05, 3.93e-05, 3.909e-05, 3.909e-05, 74617.02343823], [1516552140000, 3.929e-05, 3.93e-05, 3.909e-05, 3.909e-05, 34761.4489219], [1516552200000, 3.929e-05, 3.936e-05, 3.904e-05, 3.904e-05, 46694.88858633], [1516552260000, 3.904e-05, 3.936e-05, 3.902e-05, 3.935e-05, 77842.64500076], [1516552320000, 3.946e-05, 3.95e-05, 3.939e-05, 3.95e-05, 39134.40209272], [1516552380000, 3.94e-05, 3.954e-05, 3.93e-05, 3.94e-05, 35189.79780248], [1516552440000, 3.93e-05, 3.939e-05, 3.921e-05, 3.93e-05, 26423.6991081], [1516552500000, 3.923e-05, 3.954e-05, 3.923e-05, 3.954e-05, 24041.69198737], [1516552560000, 3.954e-05, 3.956e-05, 3.931e-05, 3.956e-05, 18105.3255811], [1516552620000, 3.954e-05, 3.956e-05, 3.954e-05, 3.956e-05, 1107.91609817], [1516552680000, 3.956e-05, 3.961e-05, 3.955e-05, 3.956e-05, 18755.31922843], [1516552740000, 3.956e-05, 3.963e-05, 3.955e-05, 3.955e-05, 33667.09597369], [1516552800000, 3.942e-05, 3.955e-05, 3.938e-05, 3.938e-05, 12305.59188774], [1516552860000, 3.938e-05, 3.961e-05, 3.938e-05, 3.938e-05, 26563.53666131], [1516552920000, 3.938e-05, 3.961e-05, 3.935e-05, 3.935e-05, 18770.47682766], [1516552980000, 3.96e-05, 3.962e-05, 3.941e-05, 3.96e-05, 4248.80796009], [1516553040000, 3.945e-05, 3.945e-05, 3.94e-05, 3.945e-05, 4100.0], [1516553100000, 3.946e-05, 3.959e-05, 3.945e-05, 3.959e-05, 8759.03189321], [1516553160000, 3.95e-05, 3.959e-05, 3.95e-05, 3.959e-05, 26206.2885903], [1516553220000, 3.959e-05, 3.959e-05, 3.937e-05, 3.937e-05, 5329.81065152], [1516553280000, 3.942e-05, 3.942e-05, 3.941e-05, 3.941e-05, 2439.0], [1516553340000, 3.959e-05, 3.959e-05, 3.959e-05, 3.959e-05, 153.88397829], [1516553400000, 3.959e-05, 3.959e-05, 3.959e-05, 3.959e-05, 170.84259852], [1516553460000, 3.959e-05, 3.962e-05, 3.959e-05, 3.962e-05, 1349.88110004], [1516553520000, 3.963e-05, 3.974e-05, 3.963e-05, 3.97e-05, 3746.48750568], [1516553580000, 3.976e-05, 3.976e-05, 3.971e-05, 3.976e-05, 9277.92321133], [1516553640000, 3.976e-05, 3.98e-05, 3.976e-05, 3.98e-05, 7148.30611622], [1516553700000, 3.981e-05, 3.985e-05, 3.981e-05, 3.985e-05, 63171.69152243], [1516553760000, 3.985e-05, 3.994e-05, 3.985e-05, 3.994e-05, 5944.74039293], [1516553820000, 3.994e-05, 3.994e-05, 3.986e-05, 3.986e-05, 4658.25147457], [1516553880000, 3.985e-05, 3.987e-05, 3.985e-05, 3.985e-05, 12223.68676691], [1516553940000, 3.993e-05, 3.994e-05, 3.985e-05, 3.994e-05, 13619.96702274], [1516554000000, 3.994e-05, 3.999e-05, 3.994e-05, 3.994e-05, 19099.82912612], [1516554060000, 3.994e-05, 3.998e-05, 3.994e-05, 3.998e-05, 300.0], [1516554120000, 3.994e-05, 3.998e-05, 3.985e-05, 3.985e-05, 8438.77506692], [1516554180000, 3.986e-05, 3.996e-05, 3.985e-05, 3.996e-05, 6204.71105686], [1516554240000, 3.996e-05, 3.996e-05, 3.996e-05, 3.996e-05, 400.0], [1516554300000, 3.99e-05, 3.995e-05, 3.989e-05, 3.995e-05, 3967.00368268], [1516554360000, 3.996e-05, 3.996e-05, 3.985e-05, 3.985e-05, 9092.34438687], [1516554420000, 3.985e-05, 3.985e-05, 3.98e-05, 3.985e-05, 42369.48306966], [1516554480000, 3.985e-05, 3.985e-05, 3.95e-05, 3.95e-05, 8058.29906118], [1516554540000, 3.957e-05, 3.957e-05, 3.949e-05, 3.95e-05, 6297.95488364], [1516554600000, 3.946e-05, 3.949e-05, 3.946e-05, 3.948e-05, 8427.95877939], [1516554660000, 3.948e-05, 3.948e-05, 3.941e-05, 3.948e-05, 4641.86159144], [1516554720000, 3.941e-05, 3.941e-05, 3.939e-05, 3.939e-05, 7928.36226507], [1516554780000, 3.939e-05, 3.939e-05, 3.926e-05, 3.926e-05, 2459.7438008], [1516554840000, 3.932e-05, 3.937e-05, 3.925e-05, 3.937e-05, 33833.18126244], [1516554900000, 3.939e-05, 3.941e-05, 3.925e-05, 3.928e-05, 71894.54602456], [1516554960000, 3.94e-05, 3.94e-05, 3.928e-05, 3.928e-05, 980.60676814], [1516555020000, 3.928e-05, 3.941e-05, 3.928e-05, 3.941e-05, 2909.55303096], [1516555080000, 3.941e-05, 3.941e-05, 3.941e-05, 3.941e-05, 2569.58807298], [1516555140000, 3.95e-05, 3.95e-05, 3.949e-05, 3.949e-05, 3054.14169328], [1516555200000, 3.949e-05, 3.97e-05, 3.93e-05, 3.93e-05, 33941.91465897], [1516555260000, 3.93e-05, 3.95e-05, 3.93e-05, 3.932e-05, 32561.44921597], [1516555320000, 3.933e-05, 3.95e-05, 3.932e-05, 3.95e-05, 19703.18198492], [1516555380000, 3.932e-05, 3.933e-05, 3.93e-05, 3.93e-05, 12271.34724382], [1516555440000, 3.933e-05, 3.933e-05, 3.93e-05, 3.933e-05, 15090.09834187], [1516555500000, 3.93e-05, 3.947e-05, 3.929e-05, 3.933e-05, 22260.53411605], [1516555560000, 3.933e-05, 3.933e-05, 3.93e-05, 3.933e-05, 5137.30394188], [1516555620000, 3.934e-05, 3.934e-05, 3.934e-05, 3.934e-05, 99.63823406], [1516555680000, 3.94e-05, 3.947e-05, 3.94e-05, 3.94e-05, 21029.76395676], [1516555740000, 3.94e-05, 3.947e-05, 3.94e-05, 3.94e-05, 20313.53596375], [1516555800000, 3.947e-05, 3.947e-05, 3.94e-05, 3.94e-05, 722.26300087], [1516555860000, 3.94e-05, 3.947e-05, 3.94e-05, 3.947e-05, 10068.87144664], [1516555920000, 3.95e-05, 3.963e-05, 3.95e-05, 3.95e-05, 62106.61558099], [1516555980000, 3.973e-05, 3.975e-05, 3.972e-05, 3.974e-05, 4060.39273425], [1516556040000, 3.974e-05, 3.974e-05, 3.973e-05, 3.974e-05, 24815.45247953], [1516556100000, 3.975e-05, 3.975e-05, 3.975e-05, 3.975e-05, 7552.43216635], [1516556160000, 3.975e-05, 3.984e-05, 3.975e-05, 3.976e-05, 20144.4518127], [1516556220000, 3.976e-05, 3.995e-05, 3.976e-05, 3.995e-05, 12463.59801206], [1516556280000, 3.994e-05, 3.994e-05, 3.984e-05, 3.984e-05, 11701.39420601], [1516556340000, 3.99e-05, 3.995e-05, 3.984e-05, 3.995e-05, 7284.31718193], [1516556400000, 3.99e-05, 3.99e-05, 3.979e-05, 3.979e-05, 6857.30869077], [1516556460000, 3.984e-05, 3.993e-05, 3.984e-05, 3.993e-05, 2584.21567162], [1516556520000, 3.99e-05, 3.993e-05, 3.99e-05, 3.993e-05, 889.9335521], [1516556580000, 3.99e-05, 3.993e-05, 3.989e-05, 3.993e-05, 11417.60546923], [1516556640000, 3.995e-05, 3.998e-05, 3.995e-05, 3.998e-05, 8485.54114726], [1516556700000, 3.998e-05, 3.998e-05, 3.998e-05, 3.998e-05, 2965.02234305], [1516556760000, 3.993e-05, 3.993e-05, 3.99e-05, 3.99e-05, 3187.77745004], [1516556820000, 3.99e-05, 3.99e-05, 3.989e-05, 3.989e-05, 1982.84419482], [1516556880000, 3.99e-05, 3.999e-05, 3.99e-05, 3.993e-05, 14869.90187826], [1516556940000, 3.994e-05, 3.998e-05, 3.993e-05, 3.998e-05, 20039.38899477], [1516557000000, 3.995e-05, 3.998e-05, 3.993e-05, 3.998e-05, 33928.61229115], [1516557060000, 3.999e-05, 4e-05, 3.993e-05, 3.993e-05, 5357.31618266], [1516557120000, 3.992e-05, 3.992e-05, 3.992e-05, 3.992e-05, 1059.64280579], [1516557180000, 3.993e-05, 3.993e-05, 3.993e-05, 3.993e-05, 2733.44741966], [1516557240000, 3.998e-05, 3.998e-05, 3.992e-05, 3.993e-05, 1096.13215454], [1516557300000, 3.991e-05, 3.993e-05, 3.991e-05, 3.993e-05, 572.44270891], [1516557360000, 3.992e-05, 3.992e-05, 3.992e-05, 3.992e-05, 51.673796], [1516557420000, 3.993e-05, 4e-05, 3.993e-05, 4e-05, 31730.93763613], [1516557480000, 4.005e-05, 4.005e-05, 4.005e-05, 4.005e-05, 6789.19853706], [1516557540000, 4.008e-05, 4.017e-05, 4.005e-05, 4.017e-05, 60915.1136778], [1516557600000, 4.017e-05, 4.018e-05, 4.017e-05, 4.018e-05, 5029.48920517], [1516557660000, 4.018e-05, 4.018e-05, 4e-05, 4.015e-05, 14865.96964736], [1516557720000, 4.018e-05, 4.02e-05, 4.017e-05, 4.018e-05, 11238.17013711], [1516557780000, 4.018e-05, 4.018e-05, 3.996e-05, 3.996e-05, 4708.47138227], [1516557840000, 3.996e-05, 4.015e-05, 3.996e-05, 4.014e-05, 1174.2052475], [1516557900000, 4.014e-05, 4.018e-05, 3.996e-05, 4.018e-05, 7758.01509754], [1516557960000, 3.999e-05, 4.02e-05, 3.998e-05, 3.999e-05, 7162.1817965], [1516558020000, 4e-05, 4e-05, 4e-05, 4e-05, 2538.69186459], [1516558080000, 4e-05, 4e-05, 3.999e-05, 4e-05, 2119.04058556], [1516558140000, 3.999e-05, 4.019e-05, 3.999e-05, 4.019e-05, 1497.63622791], [1516558200000, 4.019e-05, 4.019e-05, 4.019e-05, 4.019e-05, 3785.0965102], [1516558260000, 4.021e-05, 4.021e-05, 3.998e-05, 4e-05, 60791.07422111], [1516558320000, 3.999e-05, 4.019e-05, 3.999e-05, 4.019e-05, 48082.17368388], [1516558380000, 4.01e-05, 4.01e-05, 4.01e-05, 4.01e-05, 3192.02111544], [1516558440000, 4.019e-05, 4.019e-05, 4.019e-05, 4.019e-05, 3539.31143133], [1516558500000, 4.015e-05, 4.015e-05, 4.01e-05, 4.01e-05, 368.2025093], [1516558560000, 4.01e-05, 4.015e-05, 4.01e-05, 4.015e-05, 4629.57424766], [1516558620000, 4.015e-05, 4.019e-05, 4.015e-05, 4.015e-05, 3339.7890812], [1516558680000, 4.019e-05, 4.019e-05, 4.019e-05, 4.019e-05, 11080.02071028], [1516558740000, 4.015e-05, 4.02e-05, 4.015e-05, 4.016e-05, 12120.63901549], [1516558800000, 4.016e-05, 4.02e-05, 4.015e-05, 4.015e-05, 1620.6417861], [1516558860000, 4.015e-05, 4.02e-05, 4.015e-05, 4.015e-05, 4604.13608134], [1516558920000, 4.015e-05, 4.015e-05, 3.998e-05, 3.998e-05, 18230.74364879], [1516558980000, 3.999e-05, 4.015e-05, 3.999e-05, 4.015e-05, 1317.19943711], [1516559040000, 3.999e-05, 3.999e-05, 3.998e-05, 3.998e-05, 33456.44766182], [1516559160000, 3.998e-05, 3.998e-05, 3.991e-05, 3.998e-05, 8311.63077529], [1516559220000, 3.991e-05, 4.02e-05, 3.991e-05, 4.02e-05, 4517.8115518], [1516559280000, 3.997e-05, 3.997e-05, 3.997e-05, 3.997e-05, 30.0], [1516559340000, 3.997e-05, 3.998e-05, 3.997e-05, 3.998e-05, 9504.62094522], [1516559400000, 3.998e-05, 4.024e-05, 3.99e-05, 3.99e-05, 22401.99874831], [1516559460000, 3.989e-05, 3.99e-05, 3.981e-05, 3.981e-05, 8384.2420393], [1516559520000, 3.981e-05, 3.981e-05, 3.979e-05, 3.98e-05, 28541.6211777], [1516559580000, 3.98e-05, 3.98e-05, 3.98e-05, 3.98e-05, 2681.92577693], [1516559640000, 3.98e-05, 3.98e-05, 3.978e-05, 3.978e-05, 8452.59290826], [1516559700000, 3.978e-05, 3.98e-05, 3.978e-05, 3.98e-05, 21015.0], [1516559760000, 3.977e-05, 3.98e-05, 3.977e-05, 3.98e-05, 18317.45220305], [1516559820000, 3.98e-05, 3.98e-05, 3.975e-05, 3.975e-05, 26301.33472465], [1516559880000, 3.976e-05, 3.98e-05, 3.976e-05, 3.98e-05, 20861.0738425], [1516559940000, 3.975e-05, 3.98e-05, 3.974e-05, 3.98e-05, 22321.57855932], [1516560000000, 3.98e-05, 3.98e-05, 3.975e-05, 3.975e-05, 14649.7256561], [1516560060000, 3.975e-05, 3.98e-05, 3.974e-05, 3.974e-05, 14828.40868786], [1516560120000, 3.974e-05, 3.979e-05, 3.974e-05, 3.975e-05, 10282.1294017], [1516560180000, 3.975e-05, 3.975e-05, 3.974e-05, 3.975e-05, 4274.18611379], [1516560240000, 3.975e-05, 3.98e-05, 3.975e-05, 3.977e-05, 12772.84352657], [1516560300000, 3.977e-05, 3.978e-05, 3.977e-05, 3.978e-05, 18150.9729549], [1516560360000, 3.977e-05, 3.978e-05, 3.975e-05, 3.977e-05, 3975.59988972], [1516560420000, 3.976e-05, 3.977e-05, 3.975e-05, 3.976e-05, 6044.31672144], [1516560480000, 3.975e-05, 3.978e-05, 3.974e-05, 3.976e-05, 4813.53139459], [1516560540000, 3.975e-05, 3.977e-05, 3.974e-05, 3.974e-05, 17218.82741977], [1516560600000, 3.974e-05, 3.974e-05, 3.974e-05, 3.974e-05, 17.51177123], [1516560660000, 3.974e-05, 3.974e-05, 3.97e-05, 3.974e-05, 8258.53609012], [1516560720000, 3.976e-05, 3.976e-05, 3.974e-05, 3.974e-05, 2046.41608361], [1516560780000, 3.976e-05, 3.976e-05, 3.974e-05, 3.974e-05, 535.99214714], [1516560840000, 3.974e-05, 3.974e-05, 3.971e-05, 3.973e-05, 31645.73378413], [1516560900000, 3.973e-05, 3.973e-05, 3.971e-05, 3.971e-05, 410.94185472], [1516560960000, 3.97e-05, 3.971e-05, 3.968e-05, 3.97e-05, 4892.87658633], [1516561020000, 3.97e-05, 3.971e-05, 3.96e-05, 3.969e-05, 8040.72081304], [1516561080000, 3.969e-05, 3.971e-05, 3.969e-05, 3.969e-05, 8555.59898535], [1516561140000, 3.969e-05, 3.971e-05, 3.94e-05, 3.94e-05, 23469.86629568], [1516561200000, 3.97e-05, 3.97e-05, 3.968e-05, 3.968e-05, 305.09873697], [1516561260000, 3.968e-05, 3.968e-05, 3.967e-05, 3.967e-05, 1041.69508794], [1516561320000, 3.967e-05, 3.971e-05, 3.926e-05, 3.97e-05, 191896.71149858], [1516561380000, 3.97e-05, 3.971e-05, 3.97e-05, 3.971e-05, 6450.06619164], [1516561440000, 3.971e-05, 3.971e-05, 3.97e-05, 3.971e-05, 8682.03381597], [1516561500000, 3.971e-05, 3.971e-05, 3.97e-05, 3.971e-05, 11670.34692882], [1516561560000, 3.971e-05, 3.972e-05, 3.97e-05, 3.972e-05, 3435.81099509], [1516561620000, 3.972e-05, 3.972e-05, 3.971e-05, 3.972e-05, 700.90634441], [1516561680000, 3.972e-05, 3.973e-05, 3.971e-05, 3.973e-05, 39796.53583358], [1516561740000, 3.973e-05, 3.98e-05, 3.973e-05, 3.98e-05, 40842.32617316], [1516561860000, 3.98e-05, 3.98e-05, 3.98e-05, 3.98e-05, 40.0], [1516561920000, 3.98e-05, 3.98e-05, 3.975e-05, 3.98e-05, 7228.31460064], [1516561980000, 3.979e-05, 3.98e-05, 3.978e-05, 3.98e-05, 2282.68849246], [1516562040000, 3.978e-05, 3.98e-05, 3.978e-05, 3.98e-05, 496.49884138], [1516562100000, 3.979e-05, 3.98e-05, 3.978e-05, 3.98e-05, 15241.949952], [1516562160000, 3.979e-05, 3.98e-05, 3.979e-05, 3.98e-05, 325.64994974], [1516562220000, 3.98e-05, 3.98e-05, 3.979e-05, 3.979e-05, 10864.68501939], [1516562280000, 3.979e-05, 3.979e-05, 3.979e-05, 3.979e-05, 5092.17827093], [1516562340000, 3.978e-05, 3.98e-05, 3.978e-05, 3.98e-05, 27719.1959534], [1516562400000, 3.98e-05, 3.981e-05, 3.979e-05, 3.981e-05, 80959.82940961], [1516562460000, 3.981e-05, 3.981e-05, 3.981e-05, 3.981e-05, 12440.01], [1516562520000, 3.981e-05, 3.999e-05, 3.98e-05, 3.98e-05, 8515.09958365], [1516562580000, 3.999e-05, 4e-05, 3.983e-05, 3.983e-05, 22406.58733144], [1516562640000, 3.995e-05, 4e-05, 3.991e-05, 4e-05, 7166.61565144], [1516562700000, 4e-05, 4.011e-05, 4e-05, 4.011e-05, 6204.99802274], [1516562760000, 4.02e-05, 4.032e-05, 4e-05, 4.003e-05, 14636.57877998], [1516562820000, 4.032e-05, 4.039e-05, 4.032e-05, 4.032e-05, 10948.22140679], [1516562880000, 4.032e-05, 4.037e-05, 4.032e-05, 4.037e-05, 20304.96586063], [1516562940000, 4.032e-05, 4.032e-05, 4.01e-05, 4.032e-05, 1462.30052778], [1516563000000, 4.015e-05, 4.015e-05, 4.015e-05, 4.015e-05, 407.63274081], [1516563060000, 4.015e-05, 4.015e-05, 4.012e-05, 4.012e-05, 7269.46470125], [1516563120000, 4.011e-05, 4.011e-05, 4.005e-05, 4.005e-05, 9219.8207123], [1516563180000, 4.005e-05, 4.005e-05, 4.001e-05, 4.001e-05, 9778.27866046], [1516563240000, 4.001e-05, 4.001e-05, 3.973e-05, 3.973e-05, 11777.61152702], [1516563300000, 3.977e-05, 4e-05, 3.977e-05, 4e-05, 1340.35087719], [1516563360000, 3.998e-05, 3.998e-05, 3.982e-05, 3.998e-05, 8592.37052053], [1516563420000, 3.994e-05, 3.994e-05, 3.994e-05, 3.994e-05, 173.61873156], [1516563480000, 3.993e-05, 3.998e-05, 3.993e-05, 3.998e-05, 858.29595798], [1516563540000, 3.998e-05, 4e-05, 3.998e-05, 4e-05, 1328.04177441], [1516563600000, 3.998e-05, 3.999e-05, 3.998e-05, 3.999e-05, 50.0], [1516563660000, 3.999e-05, 4e-05, 3.997e-05, 3.997e-05, 2291.26168041], [1516563720000, 3.999e-05, 4e-05, 3.996e-05, 3.996e-05, 14391.32266016], [1516563780000, 4e-05, 4.01e-05, 4e-05, 4.01e-05, 10371.98132643], [1516563840000, 4.01e-05, 4.01e-05, 4.01e-05, 4.01e-05, 939.59898067], [1516563900000, 4.01e-05, 4.01e-05, 3.996e-05, 4e-05, 18860.3447587], [1516563960000, 3.997e-05, 4.006e-05, 3.997e-05, 4e-05, 24145.46568041], [1516564020000, 4.002e-05, 4.006e-05, 4.002e-05, 4.006e-05, 1340.76379937], [1516564080000, 4.006e-05, 4.006e-05, 4.006e-05, 4.006e-05, 23.75514181], [1516564140000, 4.009e-05, 4.01e-05, 4.006e-05, 4.01e-05, 6290.4701669], [1516564200000, 4.009e-05, 4.009e-05, 4.009e-05, 4.009e-05, 3553.0], [1516564260000, 4.009e-05, 4.015e-05, 4e-05, 4e-05, 103781.37129891], [1516564320000, 4.009e-05, 4.009e-05, 4.001e-05, 4.001e-05, 2935.1929433], [1516564380000, 4.009e-05, 4.009e-05, 4e-05, 4e-05, 12587.44892845], [1516564440000, 4.014e-05, 4.014e-05, 4.009e-05, 4.009e-05, 2237.10977406], [1516564500000, 4e-05, 4.014e-05, 4e-05, 4.013e-05, 2071.18052052], [1516564560000, 4.013e-05, 4.013e-05, 4.013e-05, 4.013e-05, 550.0], [1516564620000, 4.013e-05, 4.013e-05, 4.013e-05, 4.013e-05, 99.52606635], [1516564680000, 4.012e-05, 4.013e-05, 4.001e-05, 4.013e-05, 3344.4146389], [1516564740000, 4.001e-05, 4.012e-05, 3.995e-05, 3.995e-05, 11531.80300309], [1516564800000, 3.995e-05, 4.012e-05, 3.989e-05, 3.989e-05, 16778.14444477], [1516564860000, 3.989e-05, 4.009e-05, 3.989e-05, 4.009e-05, 1650.0], [1516564920000, 3.99e-05, 4e-05, 3.99e-05, 3.99e-05, 20699.177084], [1516564980000, 4.009e-05, 4.009e-05, 3.977e-05, 3.977e-05, 25487.27020864], [1516565040000, 4.007e-05, 4.008e-05, 3.978e-05, 4.007e-05, 5456.37718636], [1516565100000, 4.007e-05, 4.008e-05, 4e-05, 4.007e-05, 3276.45888115], [1516565160000, 4.008e-05, 4.008e-05, 4e-05, 4e-05, 7262.85185127], [1516565220000, 3.999e-05, 3.999e-05, 3.971e-05, 3.999e-05, 33792.73041266], [1516565280000, 3.972e-05, 3.997e-05, 3.972e-05, 3.972e-05, 6451.2231943], [1516565340000, 3.972e-05, 3.975e-05, 3.972e-05, 3.975e-05, 5537.18474587], [1516565400000, 3.974e-05, 4.003e-05, 3.972e-05, 3.974e-05, 17365.60163564], [1516565460000, 3.974e-05, 3.974e-05, 3.973e-05, 3.973e-05, 13926.95056319], [1516565520000, 3.973e-05, 3.973e-05, 3.944e-05, 3.97e-05, 27574.73510823], [1516565580000, 3.97e-05, 3.971e-05, 3.96e-05, 3.96e-05, 7176.56040765], [1516565640000, 3.97e-05, 3.972e-05, 3.97e-05, 3.97e-05, 4576.13307793], [1516565700000, 3.973e-05, 3.974e-05, 3.959e-05, 3.962e-05, 21416.5719141], [1516565760000, 3.971e-05, 3.971e-05, 3.971e-05, 3.971e-05, 10796.26416946], [1516565820000, 3.971e-05, 3.974e-05, 3.938e-05, 3.938e-05, 21274.8754902], [1516565880000, 3.961e-05, 3.974e-05, 3.936e-05, 3.974e-05, 14805.41652488], [1516565940000, 3.961e-05, 3.973e-05, 3.961e-05, 3.961e-05, 8553.55200309], [1516566000000, 3.961e-05, 3.961e-05, 3.944e-05, 3.961e-05, 5959.55462812], [1516566060000, 3.95e-05, 3.972e-05, 3.95e-05, 3.972e-05, 1968.0719727], [1516566120000, 3.961e-05, 3.961e-05, 3.928e-05, 3.932e-05, 49913.58033973], [1516566180000, 3.942e-05, 3.948e-05, 3.942e-05, 3.948e-05, 42835.72487412], [1516566240000, 3.948e-05, 3.948e-05, 3.943e-05, 3.943e-05, 23542.95554534], [1516566300000, 3.943e-05, 3.943e-05, 3.936e-05, 3.942e-05, 2357.00325331], [1516566360000, 3.94e-05, 3.943e-05, 3.94e-05, 3.943e-05, 1499.54057024], [1516566420000, 3.943e-05, 3.943e-05, 3.942e-05, 3.942e-05, 2324.49033399], [1516566480000, 3.941e-05, 3.942e-05, 3.926e-05, 3.941e-05, 21438.49338758], [1516566540000, 3.941e-05, 3.943e-05, 3.941e-05, 3.943e-05, 10911.98133069], [1516566600000, 3.943e-05, 3.943e-05, 3.942e-05, 3.942e-05, 5226.84440341], [1516566660000, 3.943e-05, 3.943e-05, 3.943e-05, 3.943e-05, 3545.22403437], [1516566720000, 3.943e-05, 3.943e-05, 3.943e-05, 3.943e-05, 41751.03808906], [1516566780000, 3.943e-05, 3.948e-05, 3.942e-05, 3.948e-05, 60398.94833357], [1516566840000, 3.948e-05, 3.948e-05, 3.942e-05, 3.942e-05, 14545.1239611], [1516566900000, 3.941e-05, 3.941e-05, 3.929e-05, 3.94e-05, 12698.23126254], [1516566960000, 3.941e-05, 3.947e-05, 3.933e-05, 3.947e-05, 24764.40648799], [1516567020000, 3.947e-05, 3.947e-05, 3.934e-05, 3.935e-05, 21344.43113947], [1516567080000, 3.947e-05, 3.947e-05, 3.946e-05, 3.947e-05, 11694.0453525], [1516567140000, 3.94e-05, 3.947e-05, 3.94e-05, 3.94e-05, 1828.6144261], [1516567200000, 3.94e-05, 3.94e-05, 3.935e-05, 3.936e-05, 15171.20502281], [1516567260000, 3.94e-05, 3.947e-05, 3.94e-05, 3.947e-05, 2596.64746889], [1516567320000, 3.947e-05, 3.947e-05, 3.936e-05, 3.947e-05, 28669.81089316], [1516567380000, 3.947e-05, 3.947e-05, 3.947e-05, 3.947e-05, 4008.66944435], [1516567440000, 3.94e-05, 3.947e-05, 3.94e-05, 3.94e-05, 675.55422139], [1516567500000, 3.94e-05, 3.947e-05, 3.94e-05, 3.947e-05, 4981.95301216], [1516567560000, 3.94e-05, 3.947e-05, 3.935e-05, 3.935e-05, 6396.53192339], [1516567620000, 3.935e-05, 3.945e-05, 3.935e-05, 3.94e-05, 4918.31302813], [1516567680000, 3.94e-05, 3.947e-05, 3.94e-05, 3.945e-05, 48989.44134173], [1516567740000, 3.945e-05, 3.945e-05, 3.943e-05, 3.943e-05, 14066.80553883], [1516567800000, 3.941e-05, 3.943e-05, 3.94e-05, 3.94e-05, 10907.44223791], [1516567860000, 3.94e-05, 3.941e-05, 3.94e-05, 3.941e-05, 10237.37954516], [1516567920000, 3.941e-05, 3.943e-05, 3.941e-05, 3.941e-05, 1128.72005376], [1516567980000, 3.943e-05, 3.943e-05, 3.941e-05, 3.941e-05, 4649.58126519], [1516568040000, 3.941e-05, 3.948e-05, 3.941e-05, 3.948e-05, 8938.46331737], [1516568100000, 3.948e-05, 3.948e-05, 3.941e-05, 3.941e-05, 11113.3844123], [1516568160000, 3.941e-05, 3.941e-05, 3.94e-05, 3.94e-05, 578.29343912], [1516568220000, 3.941e-05, 3.956e-05, 3.935e-05, 3.956e-05, 11654.41093098], [1516568280000, 3.956e-05, 3.956e-05, 3.936e-05, 3.936e-05, 1955.87939975], [1516568340000, 3.935e-05, 3.949e-05, 3.925e-05, 3.925e-05, 34404.25553418], [1516568400000, 3.925e-05, 3.93e-05, 3.925e-05, 3.93e-05, 20487.44904284], [1516568460000, 3.93e-05, 3.931e-05, 3.925e-05, 3.925e-05, 17356.91999186], [1516568520000, 3.925e-05, 3.925e-05, 3.922e-05, 3.923e-05, 12221.09736008], [1516568580000, 3.923e-05, 3.923e-05, 3.923e-05, 3.923e-05, 388.13607332], [1516568640000, 3.923e-05, 3.923e-05, 3.902e-05, 3.903e-05, 13434.18808603], [1516568700000, 3.92e-05, 3.93e-05, 3.907e-05, 3.925e-05, 11873.5991711], [1516568760000, 3.907e-05, 3.922e-05, 3.907e-05, 3.922e-05, 1191.00196455], [1516568820000, 3.922e-05, 3.922e-05, 3.907e-05, 3.922e-05, 28180.42785145], [1516568880000, 3.922e-05, 3.922e-05, 3.912e-05, 3.912e-05, 2323.88833913], [1516568940000, 3.922e-05, 3.922e-05, 3.907e-05, 3.922e-05, 16447.9898708], [1516569000000, 3.923e-05, 3.93e-05, 3.923e-05, 3.93e-05, 1223.44289471], [1516569060000, 3.93e-05, 3.931e-05, 3.93e-05, 3.931e-05, 4726.88538757], [1516569120000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 6964.36768459], [1516569180000, 3.93e-05, 3.931e-05, 3.93e-05, 3.931e-05, 19801.18019381], [1516569240000, 3.931e-05, 3.931e-05, 3.901e-05, 3.901e-05, 45641.89827278], [1516569300000, 3.903e-05, 3.91e-05, 3.903e-05, 3.905e-05, 17987.79868885], [1516569360000, 3.906e-05, 3.92e-05, 3.905e-05, 3.92e-05, 27922.66377928], [1516569420000, 3.912e-05, 3.931e-05, 3.912e-05, 3.93e-05, 13497.57707474], [1516569480000, 3.93e-05, 3.931e-05, 3.92e-05, 3.93e-05, 45508.35074561], [1516569540000, 3.93e-05, 3.931e-05, 3.929e-05, 3.931e-05, 56119.54586303], [1516569600000, 3.931e-05, 3.931e-05, 3.924e-05, 3.931e-05, 29276.48795468], [1516569660000, 3.931e-05, 3.931e-05, 3.924e-05, 3.925e-05, 27104.36197893], [1516569720000, 3.93e-05, 3.931e-05, 3.925e-05, 3.925e-05, 39009.91883369], [1516569780000, 3.927e-05, 3.931e-05, 3.927e-05, 3.931e-05, 3328.36695144], [1516569840000, 3.931e-05, 3.931e-05, 3.927e-05, 3.927e-05, 14022.18020421], [1516569900000, 3.927e-05, 3.931e-05, 3.925e-05, 3.926e-05, 2982.47916348], [1516569960000, 3.928e-05, 3.93e-05, 3.924e-05, 3.924e-05, 9761.25667769], [1516570020000, 3.926e-05, 3.931e-05, 3.924e-05, 3.931e-05, 19752.31605249], [1516570080000, 3.931e-05, 3.931e-05, 3.927e-05, 3.931e-05, 6976.47358517], [1516570140000, 3.931e-05, 3.931e-05, 3.931e-05, 3.931e-05, 142.51543322], [1516570200000, 3.927e-05, 3.931e-05, 3.92e-05, 3.931e-05, 83981.9176801], [1516570260000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 3585.63557118], [1516570320000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 13860.72942663], [1516570380000, 3.931e-05, 3.931e-05, 3.931e-05, 3.931e-05, 14953.61253035], [1516570440000, 3.922e-05, 3.931e-05, 3.922e-05, 3.93e-05, 14184.27707037], [1516570500000, 3.922e-05, 3.931e-05, 3.922e-05, 3.923e-05, 8213.79188502], [1516570560000, 3.923e-05, 3.93e-05, 3.922e-05, 3.922e-05, 4858.51491309], [1516570620000, 3.93e-05, 3.931e-05, 3.929e-05, 3.931e-05, 77335.92961066], [1516570680000, 3.931e-05, 3.931e-05, 3.931e-05, 3.931e-05, 38383.69716631], [1516570740000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 12514.41064319], [1516570800000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 20922.02559001], [1516570860000, 3.93e-05, 3.931e-05, 3.93e-05, 3.931e-05, 11908.05253696], [1516570920000, 3.93e-05, 3.931e-05, 3.93e-05, 3.931e-05, 7276.15556816], [1516570980000, 3.931e-05, 3.931e-05, 3.93e-05, 3.93e-05, 12268.6188767], [1516571040000, 3.931e-05, 3.931e-05, 3.931e-05, 3.931e-05, 1997.31556668], [1516571100000, 3.93e-05, 3.93e-05, 3.93e-05, 3.93e-05, 42289.54955109], [1516571160000, 3.93e-05, 3.93e-05, 3.925e-05, 3.93e-05, 3907.35629791], [1516571220000, 3.93e-05, 3.93e-05, 3.92e-05, 3.92e-05, 4204.54528064], [1516571280000, 3.92e-05, 3.925e-05, 3.92e-05, 3.925e-05, 2909.74607405], [1516571340000, 3.93e-05, 3.93e-05, 3.93e-05, 3.93e-05, 9357.27346151], [1516571400000, 3.93e-05, 3.93e-05, 3.926e-05, 3.926e-05, 7918.15356209], [1516571460000, 3.926e-05, 3.93e-05, 3.925e-05, 3.93e-05, 18250.87358544], [1516571520000, 3.93e-05, 3.93e-05, 3.929e-05, 3.93e-05, 1921.50359329], [1516571580000, 3.93e-05, 3.93e-05, 3.93e-05, 3.93e-05, 15312.06134813], [1516571640000, 3.927e-05, 3.93e-05, 3.925e-05, 3.929e-05, 12473.62230902], [1516571700000, 3.929e-05, 3.93e-05, 3.925e-05, 3.926e-05, 62203.27603932], [1516571760000, 3.926e-05, 3.926e-05, 3.925e-05, 3.925e-05, 62.85154262], [1516571820000, 3.922e-05, 3.925e-05, 3.922e-05, 3.925e-05, 2216.60737395], [1516571880000, 3.925e-05, 3.926e-05, 3.92e-05, 3.926e-05, 19059.31076262], [1516571940000, 3.926e-05, 3.931e-05, 3.92e-05, 3.92e-05, 64650.66872757], [1516572000000, 3.92e-05, 3.927e-05, 3.92e-05, 3.927e-05, 297.86395426], [1516572060000, 3.927e-05, 3.931e-05, 3.921e-05, 3.931e-05, 17106.57242558], [1516572120000, 3.928e-05, 3.931e-05, 3.928e-05, 3.931e-05, 10543.24585331], [1516572180000, 3.931e-05, 3.931e-05, 3.93e-05, 3.93e-05, 11078.2312082], [1516572240000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 12525.28614966], [1516572300000, 3.931e-05, 3.931e-05, 3.931e-05, 3.931e-05, 45567.96171031], [1516572360000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 60297.52045296], [1516572420000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 35010.00684813], [1516572480000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 91259.52282966], [1516572540000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 28765.33359351], [1516572600000, 3.931e-05, 3.931e-05, 3.931e-05, 3.931e-05, 32687.64248308], [1516572660000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 75803.37689326], [1516572720000, 3.931e-05, 3.931e-05, 3.931e-05, 3.931e-05, 41487.9887353], [1516572780000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 28223.92721166], [1516572840000, 3.931e-05, 3.931e-05, 3.931e-05, 3.931e-05, 32324.5071398], [1516572900000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 67591.43931067], [1516572960000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 38377.79446133], [1516573020000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 151452.56652536], [1516573080000, 3.93e-05, 3.931e-05, 3.93e-05, 3.931e-05, 67345.98078466], [1516573140000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 26557.47083747], [1516573200000, 3.931e-05, 3.931e-05, 3.931e-05, 3.931e-05, 46744.44007468], [1516573260000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 39821.48448651], [1516573320000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 41729.30157998], [1516573380000, 3.931e-05, 3.931e-05, 3.93e-05, 3.931e-05, 128829.26383249], [1516573440000, 3.931e-05, 3.949e-05, 3.931e-05, 3.949e-05, 189201.96670044], [1516573500000, 3.95e-05, 3.958e-05, 3.95e-05, 3.958e-05, 26830.42593574], [1516573560000, 3.958e-05, 3.977e-05, 3.958e-05, 3.973e-05, 19617.21102774], [1516573620000, 3.977e-05, 3.987e-05, 3.973e-05, 3.986e-05, 38686.77241735], [1516573680000, 3.977e-05, 3.987e-05, 3.973e-05, 3.977e-05, 22001.86902693], [1516573740000, 3.977e-05, 3.98e-05, 3.973e-05, 3.98e-05, 14380.74180732], [1516573800000, 3.98e-05, 3.98e-05, 3.96e-05, 3.96e-05, 27744.70890524], [1516573860000, 3.96e-05, 3.97e-05, 3.96e-05, 3.96e-05, 23468.99168346], [1516573920000, 3.952e-05, 3.952e-05, 3.946e-05, 3.946e-05, 5207.79040511], [1516573980000, 3.952e-05, 3.952e-05, 3.946e-05, 3.946e-05, 855.78432327], [1516574040000, 3.952e-05, 3.973e-05, 3.95e-05, 3.95e-05, 27205.58287482], [1516574100000, 3.95e-05, 3.973e-05, 3.948e-05, 3.973e-05, 959.84582895], [1516574160000, 3.969e-05, 3.972e-05, 3.95e-05, 3.967e-05, 5155.52849696], [1516574220000, 3.967e-05, 3.967e-05, 3.967e-05, 3.967e-05, 1227.47815856], [1516574280000, 3.967e-05, 3.967e-05, 3.965e-05, 3.967e-05, 347.08548509], [1516574340000, 3.967e-05, 3.972e-05, 3.96e-05, 3.972e-05, 708.13654386], [1516574400000, 3.972e-05, 3.979e-05, 3.961e-05, 3.961e-05, 11228.04796066], [1516574460000, 3.96e-05, 3.976e-05, 3.96e-05, 3.976e-05, 4788.73011439], [1516574520000, 3.962e-05, 3.962e-05, 3.962e-05, 3.962e-05, 503.94026404], [1516574580000, 3.974e-05, 3.974e-05, 3.962e-05, 3.962e-05, 8610.55807773], [1516574640000, 3.962e-05, 3.984e-05, 3.961e-05, 3.961e-05, 22149.88445555], [1516574700000, 3.961e-05, 3.961e-05, 3.96e-05, 3.961e-05, 11309.79801311], [1516574760000, 3.961e-05, 3.961e-05, 3.96e-05, 3.961e-05, 3903.24950592], [1516574820000, 3.961e-05, 3.98e-05, 3.961e-05, 3.98e-05, 469.26252063], [1516574880000, 3.98e-05, 3.98e-05, 3.961e-05, 3.961e-05, 1535.11063882], [1516574940000, 3.98e-05, 3.985e-05, 3.98e-05, 3.985e-05, 6864.2184271], [1516575000000, 3.986e-05, 3.988e-05, 3.986e-05, 3.986e-05, 5528.39776869], [1516575060000, 3.986e-05, 3.989e-05, 3.986e-05, 3.989e-05, 20891.56083926], [1516575120000, 3.989e-05, 3.989e-05, 3.98e-05, 3.98e-05, 6154.39763954], [1516575180000, 3.98e-05, 3.987e-05, 3.962e-05, 3.966e-05, 77372.4653067], [1516575240000, 3.966e-05, 3.966e-05, 3.963e-05, 3.963e-05, 6694.23187249], [1516575300000, 3.963e-05, 3.966e-05, 3.89e-05, 3.942e-05, 266877.47926886], [1516575360000, 3.944e-05, 3.972e-05, 3.906e-05, 3.972e-05, 29728.48995762], [1516575420000, 3.948e-05, 3.963e-05, 3.948e-05, 3.962e-05, 1139.252262], [1516575480000, 3.962e-05, 3.966e-05, 3.962e-05, 3.964e-05, 4739.40543719], [1516575540000, 3.965e-05, 3.965e-05, 3.957e-05, 3.959e-05, 903.68243526], [1516575600000, 3.961e-05, 3.966e-05, 3.95e-05, 3.966e-05, 51294.41639923], [1516575660000, 3.966e-05, 3.966e-05, 3.956e-05, 3.956e-05, 282.73123539], [1516575720000, 3.965e-05, 3.965e-05, 3.965e-05, 3.965e-05, 500.0], [1516575780000, 3.966e-05, 3.966e-05, 3.95e-05, 3.966e-05, 2984.85208407], [1516575840000, 3.966e-05, 3.966e-05, 3.965e-05, 3.965e-05, 17010.93784482], [1516575900000, 3.964e-05, 3.965e-05, 3.963e-05, 3.965e-05, 5716.21072136], [1516575960000, 3.964e-05, 3.964e-05, 3.964e-05, 3.964e-05, 5153.78017996], [1516576020000, 3.964e-05, 3.966e-05, 3.964e-05, 3.965e-05, 57638.61479061], [1516576080000, 3.966e-05, 3.966e-05, 3.965e-05, 3.966e-05, 6759.33090007], [1516576140000, 3.966e-05, 3.966e-05, 3.964e-05, 3.966e-05, 8430.01709903], [1516576200000, 3.964e-05, 3.966e-05, 3.964e-05, 3.966e-05, 15677.5761568], [1516576260000, 3.966e-05, 3.981e-05, 3.966e-05, 3.981e-05, 21275.4777079], [1516576320000, 3.981e-05, 3.981e-05, 3.967e-05, 3.981e-05, 11337.28164175], [1516576380000, 3.981e-05, 3.981e-05, 3.971e-05, 3.981e-05, 12964.00816731], [1516576440000, 3.981e-05, 3.981e-05, 3.973e-05, 3.981e-05, 38962.74101975], [1516576500000, 3.981e-05, 3.985e-05, 3.98e-05, 3.985e-05, 8684.37327427], [1516576560000, 3.985e-05, 3.989e-05, 3.98e-05, 3.986e-05, 28440.21654938], [1516576620000, 3.986e-05, 3.989e-05, 3.983e-05, 3.986e-05, 12748.66392472], [1516576680000, 3.987e-05, 3.992e-05, 3.987e-05, 3.991e-05, 15723.87451204], [1516576740000, 3.991e-05, 3.998e-05, 3.983e-05, 3.984e-05, 77244.11145882], [1516576800000, 3.998e-05, 4.009e-05, 3.975e-05, 3.975e-05, 52630.56874136], [1516576860000, 4.009e-05, 4.012e-05, 3.968e-05, 4.007e-05, 5382.39598054], [1516576920000, 3.99e-05, 3.99e-05, 3.99e-05, 3.99e-05, 128.80940083], [1516576980000, 4.006e-05, 4.007e-05, 3.985e-05, 4.007e-05, 6402.34257657], [1516577040000, 4.007e-05, 4.013e-05, 4.007e-05, 4.013e-05, 3639.9243843], [1516577100000, 4.013e-05, 4.013e-05, 3.986e-05, 3.987e-05, 16741.48103601], [1516577160000, 4.005e-05, 4.005e-05, 3.986e-05, 4e-05, 1640.08609132], [1516577220000, 4e-05, 4.006e-05, 3.988e-05, 3.999e-05, 12226.0704828], [1516577280000, 3.999e-05, 4.006e-05, 3.995e-05, 4.006e-05, 4021.79402363], [1516577340000, 4e-05, 4.001e-05, 4e-05, 4.001e-05, 2613.75461606], [1516577400000, 4.006e-05, 4.006e-05, 4.001e-05, 4.001e-05, 4664.43008699], [1516577460000, 4e-05, 4.004e-05, 4e-05, 4e-05, 40410.2283897], [1516577520000, 4.002e-05, 4.004e-05, 4.002e-05, 4.002e-05, 2130.27271819], [1516577580000, 4.003e-05, 4.004e-05, 4.003e-05, 4.003e-05, 1749.33467456], [1516577640000, 4.004e-05, 4.004e-05, 4.002e-05, 4.002e-05, 12649.29523725], [1516577700000, 4.003e-05, 4.004e-05, 4.002e-05, 4.002e-05, 20381.64340087], [1516577760000, 4.002e-05, 4.006e-05, 4e-05, 4.004e-05, 72839.09853726], [1516577820000, 4.004e-05, 4.006e-05, 4.004e-05, 4.006e-05, 53902.83770502], [1516577880000, 4.012e-05, 4.027e-05, 4.006e-05, 4.027e-05, 9533.09120947], [1516577940000, 4.026e-05, 4.042e-05, 4.014e-05, 4.016e-05, 35868.74199599], [1516578000000, 4.017e-05, 4.042e-05, 4.017e-05, 4.019e-05, 17219.2900727], [1516578060000, 4.032e-05, 4.032e-05, 4.024e-05, 4.032e-05, 3120.54150764], [1516578120000, 4.032e-05, 4.032e-05, 4.032e-05, 4.032e-05, 3471.9704686], [1516578180000, 4.032e-05, 4.032e-05, 4.017e-05, 4.017e-05, 8578.64555088], [1516578240000, 4.032e-05, 4.032e-05, 4.017e-05, 4.017e-05, 7747.74301835], [1516578300000, 4.033e-05, 4.035e-05, 4.017e-05, 4.035e-05, 34281.44260473], [1516578360000, 4.033e-05, 4.033e-05, 4.033e-05, 4.033e-05, 74.89213799], [1516578420000, 4.017e-05, 4.036e-05, 4.017e-05, 4.036e-05, 44700.89995021], [1516578480000, 4.036e-05, 4.036e-05, 4.036e-05, 4.036e-05, 3458.6417437], [1516578540000, 4.034e-05, 4.034e-05, 4.034e-05, 4.034e-05, 3913.50096807], [1516578600000, 4.034e-05, 4.036e-05, 4.034e-05, 4.036e-05, 4061.45631829], [1516578660000, 4.036e-05, 4.036e-05, 4.021e-05, 4.029e-05, 3579.97469834], [1516578720000, 4.029e-05, 4.029e-05, 4.029e-05, 4.029e-05, 1181.94205307], [1516578780000, 4.035e-05, 4.035e-05, 4.022e-05, 4.022e-05, 5150.50646914], [1516578840000, 4.022e-05, 4.029e-05, 4.022e-05, 4.029e-05, 5798.1493801], [1516578900000, 4.022e-05, 4.028e-05, 4.017e-05, 4.017e-05, 34458.19678918], [1516578960000, 4.027e-05, 4.027e-05, 4e-05, 4.004e-05, 8764.32943297], [1516579020000, 4.004e-05, 4.028e-05, 3.971e-05, 3.974e-05, 53218.67407328], [1516579080000, 4.003e-05, 4.024e-05, 4.003e-05, 4.011e-05, 14182.83634822], [1516579140000, 4.011e-05, 4.011e-05, 4.002e-05, 4.003e-05, 6518.16960948], [1516579200000, 4.003e-05, 4.011e-05, 3.976e-05, 4.011e-05, 41085.30420771], [1516579260000, 4.016e-05, 4.016e-05, 3.966e-05, 3.966e-05, 43312.90135112], [1516579320000, 3.967e-05, 3.991e-05, 3.96e-05, 3.99e-05, 209838.86852751], [1516579380000, 3.973e-05, 3.994e-05, 3.973e-05, 3.977e-05, 50594.70401547], [1516579440000, 3.979e-05, 3.98e-05, 3.961e-05, 3.975e-05, 58835.7557946], [1516579500000, 3.961e-05, 3.977e-05, 3.96e-05, 3.977e-05, 65622.43973967], [1516579560000, 3.975e-05, 3.975e-05, 3.963e-05, 3.974e-05, 25808.50364337], [1516579620000, 3.974e-05, 3.99e-05, 3.964e-05, 3.99e-05, 60271.48618548], [1516579680000, 3.99e-05, 3.99e-05, 3.964e-05, 3.985e-05, 92063.67070687], [1516579740000, 3.985e-05, 4.014e-05, 3.97e-05, 4.014e-05, 23401.14254352], [1516579800000, 4.013e-05, 4.014e-05, 3.991e-05, 3.991e-05, 18402.36015989], [1516579860000, 4.013e-05, 4.013e-05, 3.973e-05, 3.973e-05, 35278.60782655], [1516579920000, 3.991e-05, 3.999e-05, 3.973e-05, 3.991e-05, 11565.26204245], [1516579980000, 3.991e-05, 3.991e-05, 3.989e-05, 3.991e-05, 2259.21579708], [1516580040000, 3.991e-05, 4e-05, 3.991e-05, 4e-05, 13359.41223143], [1516580100000, 3.992e-05, 4e-05, 3.991e-05, 3.992e-05, 10904.80974465], [1516580160000, 3.992e-05, 4.012e-05, 3.991e-05, 4.012e-05, 43666.43855692], [1516580220000, 4.013e-05, 4.023e-05, 3.992e-05, 3.999e-05, 95389.80424296], [1516580280000, 4.001e-05, 4.021e-05, 3.992e-05, 4.011e-05, 17479.89430032], [1516580340000, 4.011e-05, 4.011e-05, 4.011e-05, 4.011e-05, 3110.90472934], [1516580400000, 4.011e-05, 4.021e-05, 4.011e-05, 4.02e-05, 9107.37955934], [1516580460000, 4.02e-05, 4.02e-05, 3.999e-05, 3.999e-05, 5135.23764275], [1516580520000, 4.02e-05, 4.023e-05, 4.012e-05, 4.02e-05, 26744.41984925], [1516580580000, 4.02e-05, 4.02e-05, 4.003e-05, 4.02e-05, 5416.70529646], [1516580640000, 4.02e-05, 4.02e-05, 4e-05, 4.015e-05, 31048.98308783], [1516580700000, 4e-05, 4.004e-05, 3.999e-05, 3.999e-05, 52754.75773946], [1516580760000, 3.999e-05, 4.004e-05, 3.991e-05, 3.991e-05, 87600.38755365], [1516580820000, 3.988e-05, 4.023e-05, 3.987e-05, 3.995e-05, 9831.76767578], [1516580880000, 4e-05, 4e-05, 3.973e-05, 3.979e-05, 49502.57323526], [1516580940000, 3.974e-05, 4.043e-05, 3.973e-05, 3.982e-05, 148373.96929016], [1516581000000, 3.982e-05, 3.982e-05, 3.973e-05, 3.982e-05, 63157.57705804], [1516581060000, 3.982e-05, 4.02e-05, 3.973e-05, 4.02e-05, 55640.03504711], [1516581120000, 4e-05, 4e-05, 4e-05, 4e-05, 129.530858], [1516581180000, 4.007e-05, 4.007e-05, 4.001e-05, 4.001e-05, 1909.60053632], [1516581240000, 4e-05, 4.001e-05, 3.974e-05, 4.001e-05, 30819.81257882], [1516581300000, 4.001e-05, 4.001e-05, 3.996e-05, 3.996e-05, 832.48336719], [1516581360000, 3.996e-05, 3.997e-05, 3.976e-05, 3.982e-05, 9442.7891195], [1516581420000, 3.982e-05, 3.982e-05, 3.976e-05, 3.982e-05, 8284.49992956], [1516581480000, 3.982e-05, 3.99e-05, 3.982e-05, 3.99e-05, 6274.30765118], [1516581540000, 3.99e-05, 3.99e-05, 3.989e-05, 3.99e-05, 8666.58359144], [1516581600000, 3.99e-05, 3.99e-05, 3.973e-05, 3.988e-05, 51620.97998046], [1516581660000, 3.973e-05, 3.99e-05, 3.973e-05, 3.977e-05, 11910.71114702], [1516581720000, 3.977e-05, 3.978e-05, 3.96e-05, 3.978e-05, 22154.00770337], [1516581780000, 3.977e-05, 3.977e-05, 3.97e-05, 3.97e-05, 2910.51873551], [1516581840000, 3.97e-05, 3.979e-05, 3.97e-05, 3.979e-05, 4565.67558286], [1516581900000, 3.979e-05, 3.979e-05, 3.966e-05, 3.977e-05, 3249.44269428], [1516581960000, 3.977e-05, 3.977e-05, 3.964e-05, 3.969e-05, 38145.50989621], [1516582020000, 3.969e-05, 3.969e-05, 3.913e-05, 3.964e-05, 84625.23378482], [1516582080000, 3.963e-05, 3.965e-05, 3.943e-05, 3.943e-05, 33399.51228446], [1516582140000, 3.965e-05, 3.965e-05, 3.944e-05, 3.965e-05, 24706.27234141], [1516582200000, 3.945e-05, 3.965e-05, 3.945e-05, 3.965e-05, 64823.65843216], [1516582260000, 3.965e-05, 3.965e-05, 3.951e-05, 3.954e-05, 34021.15454708], [1516582320000, 3.954e-05, 3.965e-05, 3.954e-05, 3.965e-05, 19332.94358005], [1516582380000, 3.965e-05, 3.965e-05, 3.96e-05, 3.965e-05, 4279.17229482], [1516582440000, 3.965e-05, 3.965e-05, 3.961e-05, 3.961e-05, 14090.07958549], [1516582500000, 3.961e-05, 3.965e-05, 3.961e-05, 3.965e-05, 2685.80268055], [1516582560000, 3.965e-05, 3.966e-05, 3.965e-05, 3.966e-05, 3229.40336233], [1516582620000, 3.966e-05, 3.969e-05, 3.962e-05, 3.969e-05, 26170.70392656], [1516582680000, 3.964e-05, 4e-05, 3.964e-05, 3.998e-05, 4375.20766884], [1516582740000, 3.998e-05, 3.999e-05, 3.986e-05, 3.997e-05, 4232.69202166], [1516582800000, 4e-05, 4.01e-05, 3.973e-05, 4.01e-05, 15127.98231058], [1516582860000, 3.998e-05, 4.01e-05, 3.998e-05, 4.01e-05, 741.14197782], [1516582920000, 4.002e-05, 4.008e-05, 3.973e-05, 3.998e-05, 3428.576377], [1516582980000, 4.006e-05, 4.01e-05, 3.999e-05, 4.003e-05, 21704.40158799], [1516583040000, 4.009e-05, 4.01e-05, 4.003e-05, 4.004e-05, 61081.69494936], [1516583100000, 4.004e-05, 4.004e-05, 3.999e-05, 4.004e-05, 3682.99021618], [1516583160000, 3.998e-05, 4.004e-05, 3.998e-05, 4e-05, 50591.70931589], [1516583220000, 4e-05, 4.004e-05, 4e-05, 4.004e-05, 13411.18036926], [1516583280000, 4.004e-05, 4.005e-05, 4e-05, 4.005e-05, 33416.71413279], [1516583340000, 4.005e-05, 4.005e-05, 3.974e-05, 3.974e-05, 17643.09057458], [1516583400000, 4.002e-05, 4.005e-05, 4e-05, 4.005e-05, 15007.00522258], [1516583460000, 4.002e-05, 4.002e-05, 3.977e-05, 4.002e-05, 6327.17691278], [1516583520000, 4.005e-05, 4.005e-05, 3.977e-05, 3.994e-05, 7820.78016783], [1516583580000, 3.98e-05, 3.994e-05, 3.979e-05, 3.979e-05, 2993.87272948], [1516583640000, 3.979e-05, 4.003e-05, 3.977e-05, 4.003e-05, 19440.61787347], [1516583700000, 3.995e-05, 3.995e-05, 3.978e-05, 3.979e-05, 4365.26618725], [1516583760000, 3.995e-05, 3.995e-05, 3.995e-05, 3.995e-05, 599.60283516], [1516583820000, 3.994e-05, 3.995e-05, 3.98e-05, 3.994e-05, 34086.51114366], [1516583880000, 3.994e-05, 3.994e-05, 3.977e-05, 3.977e-05, 1388.04464995], [1516583940000, 3.994e-05, 3.994e-05, 3.977e-05, 3.994e-05, 611.53909419], [1516584000000, 3.993e-05, 3.993e-05, 3.993e-05, 3.993e-05, 471.91799647], [1516584060000, 3.993e-05, 4.013e-05, 3.97e-05, 3.98e-05, 42724.52566111], [1516584120000, 3.993e-05, 4.022e-05, 3.993e-05, 4.022e-05, 4232.81656547], [1516584180000, 4.022e-05, 4.022e-05, 3.996e-05, 3.997e-05, 16525.18887937], [1516584240000, 3.998e-05, 4.021e-05, 3.996e-05, 3.996e-05, 6485.56968142], [1516584300000, 3.997e-05, 4.019e-05, 3.997e-05, 4.019e-05, 865.46486489], [1516584360000, 4.019e-05, 4.019e-05, 4.005e-05, 4.005e-05, 676.24579048], [1516584420000, 4.006e-05, 4.019e-05, 4.006e-05, 4.019e-05, 987.19446097], [1516584480000, 4.019e-05, 4.021e-05, 4.009e-05, 4.011e-05, 17930.92000467], [1516584540000, 4.011e-05, 4.011e-05, 4.008e-05, 4.011e-05, 1162.67921101], [1516584600000, 4.009e-05, 4.021e-05, 4.009e-05, 4.011e-05, 11276.16657284], [1516584660000, 4.011e-05, 4.021e-05, 4.011e-05, 4.021e-05, 5475.48774917], [1516584720000, 4.022e-05, 4.023e-05, 4e-05, 4.017e-05, 21997.36599365], [1516584780000, 4.001e-05, 4.014e-05, 4e-05, 4.014e-05, 2657.0504623], [1516584840000, 4.014e-05, 4.014e-05, 4e-05, 4e-05, 3433.12308499], [1516584900000, 4e-05, 4e-05, 3.976e-05, 3.995e-05, 20782.64303957], [1516584960000, 3.995e-05, 4e-05, 3.976e-05, 3.976e-05, 10013.96784636], [1516585020000, 4e-05, 4e-05, 4e-05, 4e-05, 680.52777801], [1516585080000, 4e-05, 4.02e-05, 4e-05, 4.02e-05, 1623.4854796], [1516585140000, 4.02e-05, 4.021e-05, 4e-05, 4.001e-05, 11929.51658619], [1516585200000, 4.001e-05, 4.021e-05, 3.991e-05, 4.016e-05, 4293.22958349], [1516585260000, 4.016e-05, 4.021e-05, 3.991e-05, 4.02e-05, 2300.23160356], [1516585320000, 4.02e-05, 4.02e-05, 4.002e-05, 4.002e-05, 10277.32771591], [1516585380000, 4.005e-05, 4.021e-05, 3.991e-05, 4.02e-05, 22648.99302333], [1516585440000, 3.993e-05, 4.021e-05, 3.993e-05, 3.994e-05, 28033.34681344], [1516585500000, 4.021e-05, 4.021e-05, 3.995e-05, 4.021e-05, 17158.14725304], [1516585560000, 3.998e-05, 4.01e-05, 3.997e-05, 3.998e-05, 4073.87464797], [1516585620000, 4.019e-05, 4.019e-05, 3.992e-05, 4.019e-05, 23469.79838755], [1516585680000, 4.018e-05, 4.018e-05, 3.991e-05, 3.991e-05, 10264.36182957], [1516585740000, 3.99e-05, 3.993e-05, 3.99e-05, 3.99e-05, 17767.38683565], [1516585800000, 3.992e-05, 3.998e-05, 3.99e-05, 3.99e-05, 47306.48656269], [1516585860000, 3.998e-05, 3.998e-05, 3.99e-05, 3.99e-05, 53060.87054785], [1516585920000, 3.99e-05, 3.995e-05, 3.981e-05, 3.99e-05, 32377.28141706], [1516585980000, 3.99e-05, 3.99e-05, 3.977e-05, 3.99e-05, 5224.0766905], [1516586040000, 3.978e-05, 3.99e-05, 3.973e-05, 3.99e-05, 24137.66594143], [1516586100000, 3.976e-05, 3.998e-05, 3.97e-05, 3.998e-05, 29190.86935939], [1516586160000, 3.978e-05, 3.998e-05, 3.973e-05, 3.997e-05, 31586.14615324], [1516586220000, 3.996e-05, 3.997e-05, 3.972e-05, 3.996e-05, 20410.85512692], [1516586280000, 3.973e-05, 3.997e-05, 3.971e-05, 3.971e-05, 25633.23876062], [1516586340000, 3.971e-05, 3.995e-05, 3.971e-05, 3.994e-05, 4329.93197754], [1516586400000, 3.993e-05, 3.993e-05, 3.971e-05, 3.993e-05, 2786.72502655], [1516586460000, 3.993e-05, 3.993e-05, 3.971e-05, 3.971e-05, 18975.53346806], [1516586520000, 3.974e-05, 3.992e-05, 3.96e-05, 3.96e-05, 86651.69541767], [1516586580000, 3.961e-05, 3.991e-05, 3.949e-05, 3.977e-05, 99559.02408325], [1516586640000, 3.96e-05, 3.991e-05, 3.945e-05, 3.959e-05, 33628.6079258], [1516586700000, 3.959e-05, 3.99e-05, 3.944e-05, 3.963e-05, 55836.02076466], [1516586760000, 3.963e-05, 3.982e-05, 3.941e-05, 3.941e-05, 24967.20414132], [1516586820000, 3.947e-05, 3.963e-05, 3.942e-05, 3.962e-05, 65641.0577145], [1516586880000, 3.962e-05, 3.963e-05, 3.926e-05, 3.93e-05, 39527.97049974], [1516586940000, 3.935e-05, 3.96e-05, 3.935e-05, 3.959e-05, 4875.63581487], [1516587000000, 3.958e-05, 3.958e-05, 3.941e-05, 3.958e-05, 30059.61604977], [1516587060000, 3.946e-05, 3.959e-05, 3.945e-05, 3.959e-05, 12307.55089839], [1516587120000, 3.959e-05, 3.959e-05, 3.945e-05, 3.959e-05, 2266.00059278], [1516587180000, 3.957e-05, 3.96e-05, 3.94e-05, 3.96e-05, 9070.28928264], [1516587240000, 3.96e-05, 3.96e-05, 3.945e-05, 3.96e-05, 13822.29498204], [1516587300000, 3.959e-05, 3.96e-05, 3.946e-05, 3.96e-05, 6092.00011608], [1516587360000, 3.946e-05, 3.959e-05, 3.946e-05, 3.95e-05, 1921.32400185], [1516587420000, 3.959e-05, 3.963e-05, 3.959e-05, 3.963e-05, 17607.56282111], [1516587480000, 3.963e-05, 3.965e-05, 3.963e-05, 3.965e-05, 947.33391843], [1516587540000, 3.965e-05, 3.986e-05, 3.963e-05, 3.986e-05, 11395.63794656], [1516587600000, 3.98e-05, 3.989e-05, 3.949e-05, 3.95e-05, 24650.48404906], [1516587660000, 3.987e-05, 3.987e-05, 3.957e-05, 3.957e-05, 5992.15887698], [1516587720000, 3.983e-05, 3.983e-05, 3.957e-05, 3.96e-05, 6523.52731415], [1516587780000, 3.986e-05, 3.986e-05, 3.963e-05, 3.985e-05, 3880.54947564], [1516587840000, 3.985e-05, 3.985e-05, 3.985e-05, 3.985e-05, 36251.82497553], [1516587900000, 3.985e-05, 3.986e-05, 3.97e-05, 3.97e-05, 18835.33548193], [1516587960000, 3.984e-05, 3.984e-05, 3.984e-05, 3.984e-05, 472.32390155], [1516588020000, 3.984e-05, 3.993e-05, 3.984e-05, 3.99e-05, 88546.80525034], [1516588080000, 3.989e-05, 4.004e-05, 3.988e-05, 4.004e-05, 19643.11377307], [1516588140000, 3.995e-05, 4.003e-05, 3.99e-05, 3.995e-05, 6222.13953616], [1516588200000, 3.988e-05, 3.999e-05, 3.965e-05, 3.998e-05, 18676.96365739], [1516588260000, 3.997e-05, 3.997e-05, 3.974e-05, 3.996e-05, 2473.17447083], [1516588320000, 3.976e-05, 3.996e-05, 3.975e-05, 3.995e-05, 22346.47440143], [1516588380000, 3.995e-05, 3.995e-05, 3.975e-05, 3.994e-05, 4788.48201933], [1516588440000, 3.994e-05, 3.994e-05, 3.977e-05, 3.977e-05, 473.04149287], [1516588500000, 3.993e-05, 3.997e-05, 3.977e-05, 3.997e-05, 21009.69379117], [1516588560000, 3.984e-05, 3.997e-05, 3.981e-05, 3.996e-05, 691.58492586], [1516588620000, 3.996e-05, 3.997e-05, 3.977e-05, 3.996e-05, 4745.43175863], [1516588680000, 3.977e-05, 3.999e-05, 3.977e-05, 3.999e-05, 22144.99120294], [1516588740000, 3.998e-05, 4e-05, 3.998e-05, 4e-05, 3046.28879666], [1516588800000, 4e-05, 4e-05, 3.977e-05, 3.977e-05, 6481.8240411], [1516588860000, 3.979e-05, 3.998e-05, 3.965e-05, 3.979e-05, 26136.60363423], [1516588920000, 3.975e-05, 4e-05, 3.96e-05, 4e-05, 4680.18921328], [1516588980000, 3.97e-05, 3.999e-05, 3.964e-05, 3.999e-05, 4640.87615889], [1516589040000, 3.998e-05, 3.998e-05, 3.987e-05, 3.998e-05, 572.44052859], [1516589100000, 3.998e-05, 3.998e-05, 3.998e-05, 3.998e-05, 4942.04261242], [1516589160000, 3.994e-05, 3.997e-05, 3.982e-05, 3.982e-05, 6403.09522547], [1516589220000, 3.973e-05, 3.982e-05, 3.973e-05, 3.982e-05, 1655.38903252], [1516589280000, 3.982e-05, 3.993e-05, 3.98e-05, 3.98e-05, 15482.90831893], [1516589340000, 3.98e-05, 3.994e-05, 3.976e-05, 3.989e-05, 10019.96903886], [1516589400000, 3.981e-05, 3.988e-05, 3.98e-05, 3.98e-05, 298.92101762], [1516589460000, 3.977e-05, 3.977e-05, 3.977e-05, 3.977e-05, 302.0], [1516589520000, 3.977e-05, 3.977e-05, 3.976e-05, 3.976e-05, 866.77312869], [1516589580000, 3.977e-05, 3.989e-05, 3.976e-05, 3.989e-05, 10027.72902413], [1516589640000, 3.977e-05, 3.99e-05, 3.977e-05, 3.986e-05, 16596.01744372], [1516589700000, 3.976e-05, 3.98e-05, 3.976e-05, 3.977e-05, 1390.42276211], [1516589760000, 3.977e-05, 3.987e-05, 3.977e-05, 3.986e-05, 4956.23727339], [1516589820000, 3.99e-05, 3.99e-05, 3.976e-05, 3.99e-05, 7692.95030868], [1516589880000, 3.99e-05, 3.99e-05, 3.976e-05, 3.99e-05, 9401.68370564], [1516589940000, 3.977e-05, 3.99e-05, 3.977e-05, 3.99e-05, 2939.31361198], [1516590000000, 3.99e-05, 3.99e-05, 3.978e-05, 3.99e-05, 39892.43324275], [1516590060000, 3.99e-05, 3.99e-05, 3.99e-05, 3.99e-05, 17803.75296508], [1516590120000, 3.99e-05, 3.994e-05, 3.977e-05, 3.994e-05, 41003.7415964], [1516590180000, 3.992e-05, 3.997e-05, 3.975e-05, 3.997e-05, 53258.6244304], [1516590240000, 3.976e-05, 3.997e-05, 3.975e-05, 3.981e-05, 4583.5134571], [1516590300000, 3.982e-05, 3.999e-05, 3.975e-05, 3.981e-05, 23598.75558247], [1516590360000, 3.981e-05, 3.999e-05, 3.981e-05, 3.999e-05, 8720.91838243], [1516590420000, 3.999e-05, 4e-05, 3.997e-05, 4e-05, 6057.48833652], [1516590480000, 3.999e-05, 4e-05, 3.999e-05, 4e-05, 8305.81272386], [1516590540000, 4e-05, 4e-05, 4e-05, 4e-05, 3141.53328], [1516590600000, 3.999e-05, 3.999e-05, 3.997e-05, 3.997e-05, 28223.56202123], [1516590660000, 3.997e-05, 3.997e-05, 3.982e-05, 3.997e-05, 27566.80162987], [1516590720000, 3.997e-05, 4e-05, 3.983e-05, 4e-05, 6855.97094013], [1516590780000, 4e-05, 4e-05, 3.982e-05, 3.983e-05, 34484.90020363], [1516590840000, 4e-05, 4e-05, 3.976e-05, 3.976e-05, 17480.41736005], [1516590900000, 3.977e-05, 3.984e-05, 3.975e-05, 3.975e-05, 20355.79312846], [1516590960000, 3.984e-05, 3.984e-05, 3.984e-05, 3.984e-05, 1992.12820436], [1516591020000, 3.984e-05, 3.984e-05, 3.975e-05, 3.983e-05, 14607.15012659], [1516591080000, 3.983e-05, 3.984e-05, 3.979e-05, 3.984e-05, 12328.49454724], [1516591140000, 3.984e-05, 3.985e-05, 3.984e-05, 3.985e-05, 3866.82625923], [1516591200000, 3.985e-05, 3.985e-05, 3.983e-05, 3.983e-05, 171.15399636], [1516591260000, 3.982e-05, 3.985e-05, 3.982e-05, 3.985e-05, 11631.12372864], [1516591320000, 3.983e-05, 3.983e-05, 3.982e-05, 3.983e-05, 11755.78725022], [1516591380000, 3.983e-05, 3.983e-05, 3.983e-05, 3.983e-05, 8996.46398154], [1516591440000, 3.983e-05, 3.983e-05, 3.982e-05, 3.983e-05, 6783.35174066], [1516591500000, 3.983e-05, 3.983e-05, 3.983e-05, 3.983e-05, 964.14641058], [1516591560000, 3.983e-05, 3.983e-05, 3.982e-05, 3.983e-05, 6507.62949817], [1516591620000, 3.982e-05, 3.983e-05, 3.981e-05, 3.983e-05, 11675.64795845], [1516591680000, 3.983e-05, 3.983e-05, 3.981e-05, 3.982e-05, 10089.2109044], [1516591740000, 3.981e-05, 3.983e-05, 3.976e-05, 3.983e-05, 41514.24592559], [1516591800000, 3.983e-05, 3.983e-05, 3.98e-05, 3.981e-05, 12160.04725817], [1516591860000, 3.981e-05, 3.983e-05, 3.981e-05, 3.983e-05, 7462.67437909], [1516591920000, 3.983e-05, 3.983e-05, 3.981e-05, 3.982e-05, 34556.94154398], [1516591980000, 3.982e-05, 3.997e-05, 3.982e-05, 3.997e-05, 23760.9749], [1516592040000, 3.994e-05, 3.994e-05, 3.985e-05, 3.985e-05, 11350.64880562], [1516592100000, 3.991e-05, 3.994e-05, 3.985e-05, 3.985e-05, 26006.02582784], [1516592160000, 3.99e-05, 3.99e-05, 3.976e-05, 3.976e-05, 9088.47628059], [1516592220000, 3.985e-05, 3.985e-05, 3.978e-05, 3.978e-05, 10513.09290466], [1516592280000, 3.983e-05, 3.984e-05, 3.975e-05, 3.983e-05, 23987.30717733], [1516592340000, 3.983e-05, 3.983e-05, 3.975e-05, 3.979e-05, 3182.75919035], [1516592400000, 3.979e-05, 3.983e-05, 3.979e-05, 3.98e-05, 18263.94483844], [1516592460000, 3.983e-05, 3.983e-05, 3.975e-05, 3.975e-05, 3075.04719378], [1516592520000, 3.975e-05, 3.979e-05, 3.965e-05, 3.979e-05, 852.02074922], [1516592580000, 3.979e-05, 3.979e-05, 3.978e-05, 3.979e-05, 2243.72349017], [1516592640000, 3.976e-05, 3.977e-05, 3.976e-05, 3.976e-05, 6860.4773206], [1516592700000, 3.966e-05, 3.976e-05, 3.966e-05, 3.976e-05, 5504.61328456], [1516592760000, 3.966e-05, 3.977e-05, 3.966e-05, 3.977e-05, 1827.26181724], [1516592820000, 3.977e-05, 3.979e-05, 3.977e-05, 3.978e-05, 7786.46559127], [1516592880000, 3.977e-05, 3.991e-05, 3.968e-05, 3.991e-05, 19223.39909174], [1516592940000, 3.99e-05, 3.99e-05, 3.978e-05, 3.978e-05, 4325.45874146], [1516593000000, 3.978e-05, 3.988e-05, 3.971e-05, 3.974e-05, 31316.25626108], [1516593060000, 3.987e-05, 3.989e-05, 3.975e-05, 3.98e-05, 55501.22107098], [1516593120000, 3.976e-05, 3.989e-05, 3.975e-05, 3.988e-05, 23720.26955351], [1516593180000, 3.988e-05, 3.989e-05, 3.973e-05, 3.983e-05, 44645.83953564], [1516593240000, 3.983e-05, 3.989e-05, 3.983e-05, 3.988e-05, 5637.58111943], [1516593300000, 3.988e-05, 3.988e-05, 3.981e-05, 3.987e-05, 14959.74967909], [1516593360000, 3.987e-05, 3.989e-05, 3.987e-05, 3.988e-05, 11881.40823961], [1516593420000, 3.988e-05, 3.989e-05, 3.982e-05, 3.989e-05, 9165.02683169], [1516593480000, 3.989e-05, 3.989e-05, 3.983e-05, 3.989e-05, 13127.66797889], [1516593540000, 3.989e-05, 3.989e-05, 3.988e-05, 3.989e-05, 11021.33749179], [1516593600000, 3.986e-05, 3.988e-05, 3.983e-05, 3.984e-05, 43021.08831898], [1516593660000, 3.988e-05, 3.988e-05, 3.984e-05, 3.984e-05, 12304.04428611], [1516593720000, 3.986e-05, 3.986e-05, 3.983e-05, 3.984e-05, 76042.62816632], [1516593780000, 3.984e-05, 3.984e-05, 3.983e-05, 3.984e-05, 7961.64407017], [1516593840000, 3.984e-05, 3.984e-05, 3.983e-05, 3.983e-05, 5585.23803689], [1516593900000, 3.982e-05, 3.984e-05, 3.982e-05, 3.984e-05, 7875.2513242], [1516593960000, 3.984e-05, 3.986e-05, 3.984e-05, 3.986e-05, 1474.58545271], [1516594020000, 3.986e-05, 3.988e-05, 3.986e-05, 3.988e-05, 1562.01754283], [1516594080000, 3.99e-05, 4e-05, 3.988e-05, 3.988e-05, 9226.61870215], [1516594140000, 3.997e-05, 3.997e-05, 3.997e-05, 3.997e-05, 4741.37779335], [1516594200000, 3.997e-05, 3.997e-05, 3.997e-05, 3.997e-05, 2113.72871253], [1516594260000, 3.997e-05, 4e-05, 3.997e-05, 4e-05, 2230.39856186], [1516594320000, 4.005e-05, 4.005e-05, 4.005e-05, 4.005e-05, 421.0], [1516594380000, 4.008e-05, 4.02e-05, 4.008e-05, 4.019e-05, 19525.50216146], [1516594440000, 4.019e-05, 4.019e-05, 4.017e-05, 4.019e-05, 1832.97841115], [1516594500000, 4.019e-05, 4.019e-05, 4.018e-05, 4.019e-05, 2433.26290556], [1516594560000, 4.019e-05, 4.019e-05, 4.019e-05, 4.019e-05, 11947.86804677], [1516594620000, 4.019e-05, 4.02e-05, 4.017e-05, 4.02e-05, 28888.98986494], [1516594680000, 4.022e-05, 4.023e-05, 4.02e-05, 4.022e-05, 9007.36999945], [1516594740000, 4.024e-05, 4.053e-05, 4.024e-05, 4.053e-05, 17369.79116482], [1516594800000, 4.035e-05, 4.037e-05, 4.02e-05, 4.021e-05, 12507.70513833], [1516594860000, 4.025e-05, 4.037e-05, 4.021e-05, 4.037e-05, 19040.13976518], [1516594920000, 4.036e-05, 4.037e-05, 4.022e-05, 4.037e-05, 61016.57747588], [1516594980000, 4.046e-05, 4.049e-05, 4.046e-05, 4.046e-05, 97899.56984944], [1516595040000, 4.046e-05, 4.07e-05, 4.046e-05, 4.05e-05, 65163.05865738], [1516595100000, 4.052e-05, 4.065e-05, 4.052e-05, 4.064e-05, 40279.52382443], [1516595160000, 4.064e-05, 4.065e-05, 4.052e-05, 4.052e-05, 14907.20634101], [1516595220000, 4.06e-05, 4.07e-05, 4.052e-05, 4.065e-05, 68674.23616108], [1516595280000, 4.065e-05, 4.07e-05, 4.064e-05, 4.064e-05, 49931.37294748], [1516595340000, 4.053e-05, 4.064e-05, 4.053e-05, 4.053e-05, 108489.22551951], [1516595400000, 4.063e-05, 4.064e-05, 4.053e-05, 4.064e-05, 54449.40357514], [1516595460000, 4.053e-05, 4.065e-05, 4.053e-05, 4.053e-05, 50940.18793122], [1516595520000, 4.053e-05, 4.053e-05, 4.027e-05, 4.051e-05, 38534.84866535], [1516595580000, 4.05e-05, 4.05e-05, 4.027e-05, 4.048e-05, 11445.76529834], [1516595640000, 4.03e-05, 4.047e-05, 4.029e-05, 4.047e-05, 6574.80248945], [1516595700000, 4.047e-05, 4.047e-05, 4.028e-05, 4.046e-05, 6489.8572292], [1516595760000, 4.029e-05, 4.04e-05, 4.029e-05, 4.04e-05, 33449.9947738], [1516595820000, 4.032e-05, 4.04e-05, 4.032e-05, 4.04e-05, 11693.25774512], [1516595880000, 4.039e-05, 4.039e-05, 4.03e-05, 4.038e-05, 19463.91843545], [1516595940000, 4.038e-05, 4.039e-05, 4.037e-05, 4.037e-05, 30587.41543612], [1516596000000, 4.037e-05, 4.04e-05, 4.037e-05, 4.037e-05, 23859.38171525], [1516596060000, 4.04e-05, 4.06e-05, 4.037e-05, 4.06e-05, 16608.72802668], [1516596120000, 4.036e-05, 4.06e-05, 4.035e-05, 4.035e-05, 4934.72221171], [1516596180000, 4.035e-05, 4.035e-05, 4.034e-05, 4.035e-05, 5876.79384155], [1516596240000, 4.056e-05, 4.056e-05, 4.031e-05, 4.031e-05, 657.86745807], [1516596300000, 4.032e-05, 4.055e-05, 4.031e-05, 4.055e-05, 5415.54734387], [1516596360000, 4.055e-05, 4.055e-05, 4.03e-05, 4.03e-05, 4122.95943284], [1516596420000, 4.031e-05, 4.052e-05, 4.031e-05, 4.052e-05, 5653.78782448], [1516596480000, 4.032e-05, 4.052e-05, 4.031e-05, 4.052e-05, 4834.63015248], [1516596540000, 4.052e-05, 4.052e-05, 4.052e-05, 4.052e-05, 152.34509712], [1516596600000, 4.052e-05, 4.052e-05, 4.052e-05, 4.052e-05, 456.41744601], [1516596660000, 4.033e-05, 4.054e-05, 4.033e-05, 4.054e-05, 7792.6194359], [1516596720000, 4.054e-05, 4.054e-05, 4.052e-05, 4.052e-05, 25135.43221951], [1516596780000, 4.054e-05, 4.054e-05, 4.054e-05, 4.054e-05, 5511.05925247], [1516596840000, 4.052e-05, 4.054e-05, 4.052e-05, 4.054e-05, 41615.56638338], [1516596900000, 4.054e-05, 4.054e-05, 4.027e-05, 4.03e-05, 17918.05624821], [1516596960000, 4.03e-05, 4.03e-05, 4.03e-05, 4.03e-05, 764.38902742], [1516597020000, 4.03e-05, 4.03e-05, 4.026e-05, 4.03e-05, 27401.26450104], [1516597080000, 4.052e-05, 4.052e-05, 4.026e-05, 4.026e-05, 10839.94199979], [1516597140000, 4.027e-05, 4.027e-05, 4.026e-05, 4.026e-05, 6397.36624408], [1516597200000, 4.027e-05, 4.027e-05, 4.026e-05, 4.027e-05, 13773.60133008], [1516597260000, 4.026e-05, 4.027e-05, 4.026e-05, 4.027e-05, 60174.80771872], [1516597320000, 4.027e-05, 4.027e-05, 4.016e-05, 4.016e-05, 8766.29327853], [1516597380000, 4.046e-05, 4.046e-05, 4.046e-05, 4.046e-05, 2327.062089], [1516597440000, 4.046e-05, 4.048e-05, 4.018e-05, 4.018e-05, 10142.10803273], [1516597500000, 4.014e-05, 4.05e-05, 4.014e-05, 4.05e-05, 3314.95067322], [1516597560000, 4.016e-05, 4.016e-05, 4.016e-05, 4.016e-05, 328.1664212], [1516597620000, 4.017e-05, 4.017e-05, 4.016e-05, 4.017e-05, 5322.63383215], [1516597680000, 4.018e-05, 4.018e-05, 4.017e-05, 4.017e-05, 439.1477372], [1516597740000, 4.018e-05, 4.022e-05, 4e-05, 4.02e-05, 284417.17433542], [1516597800000, 4.033e-05, 4.033e-05, 4.02e-05, 4.02e-05, 1820.63431638], [1516597860000, 4.02e-05, 4.027e-05, 4.02e-05, 4.02e-05, 2268.03221314], [1516597920000, 4.02e-05, 4.02e-05, 4.02e-05, 4.02e-05, 2600.11459847], [1516597980000, 4.002e-05, 4.02e-05, 4.002e-05, 4.02e-05, 6724.85663827], [1516598040000, 4.022e-05, 4.022e-05, 4.02e-05, 4.02e-05, 942.22564213], [1516598100000, 4.02e-05, 4.02e-05, 4.02e-05, 4.02e-05, 733.12825746], [1516598160000, 4.02e-05, 4.028e-05, 4.02e-05, 4.028e-05, 5012.2366906], [1516598220000, 4.028e-05, 4.028e-05, 4.028e-05, 4.028e-05, 93.94569706], [1516598280000, 4.028e-05, 4.028e-05, 4.01e-05, 4.028e-05, 1343.28141186], [1516598340000, 4.028e-05, 4.028e-05, 4.025e-05, 4.028e-05, 5505.05635214], [1516598400000, 4.025e-05, 4.028e-05, 4.025e-05, 4.028e-05, 989.72084241], [1516598460000, 4.028e-05, 4.028e-05, 4.028e-05, 4.028e-05, 1032.79771425], [1516598520000, 4.028e-05, 4.028e-05, 4.026e-05, 4.027e-05, 505.45100427], [1516598580000, 4.027e-05, 4.028e-05, 4.027e-05, 4.028e-05, 7286.5198011], [1516598640000, 4.028e-05, 4.028e-05, 4.027e-05, 4.028e-05, 7960.84613757], [1516598700000, 4.028e-05, 4.028e-05, 4.028e-05, 4.028e-05, 1401.79893598], [1516598760000, 4.027e-05, 4.037e-05, 4.026e-05, 4.026e-05, 5799.98299526], [1516598820000, 4.027e-05, 4.028e-05, 4.026e-05, 4.027e-05, 23186.47557282], [1516598880000, 4.026e-05, 4.028e-05, 4.026e-05, 4.026e-05, 41143.46120018], [1516598940000, 4.026e-05, 4.028e-05, 4.004e-05, 4.004e-05, 29166.66065102], [1516599000000, 4.025e-05, 4.025e-05, 4.02e-05, 4.02e-05, 3924.11586246], [1516599060000, 4.005e-05, 4.019e-05, 4.004e-05, 4.018e-05, 3236.41713562], [1516599120000, 4.018e-05, 4.018e-05, 4.014e-05, 4.018e-05, 13664.87488812], [1516599180000, 4.018e-05, 4.018e-05, 4.014e-05, 4.014e-05, 6175.16542163], [1516599240000, 4.023e-05, 4.024e-05, 4.016e-05, 4.018e-05, 2215.67304461], [1516599300000, 4.024e-05, 4.024e-05, 4.019e-05, 4.019e-05, 1842.93261527], [1516599360000, 4.019e-05, 4.024e-05, 4.019e-05, 4.024e-05, 331.06776643], [1516599420000, 4.019e-05, 4.025e-05, 4.019e-05, 4.025e-05, 60901.99236885], [1516599480000, 4.025e-05, 4.025e-05, 4.021e-05, 4.021e-05, 7226.26235399], [1516599540000, 4.021e-05, 4.024e-05, 4.021e-05, 4.024e-05, 3826.09752214], [1516599600000, 4.022e-05, 4.025e-05, 4.022e-05, 4.025e-05, 40424.37545722], [1516599660000, 4.026e-05, 4.026e-05, 4.025e-05, 4.025e-05, 4763.92388621], [1516599720000, 4.025e-05, 4.025e-05, 4.025e-05, 4.025e-05, 227.39130435], [1516599780000, 4.025e-05, 4.025e-05, 4.025e-05, 4.025e-05, 243.71727768], [1516599840000, 4.025e-05, 4.038e-05, 4.025e-05, 4.038e-05, 11767.76830736], [1516599900000, 4.028e-05, 4.028e-05, 4.026e-05, 4.026e-05, 5418.35686663], [1516599960000, 4.026e-05, 4.035e-05, 4.026e-05, 4.026e-05, 318.46755455], [1516600020000, 4.027e-05, 4.037e-05, 4.026e-05, 4.037e-05, 46625.2121595], [1516600080000, 4.026e-05, 4.036e-05, 4.026e-05, 4.026e-05, 33005.4365293], [1516600140000, 4.031e-05, 4.031e-05, 4.031e-05, 4.031e-05, 29324.3010239], [1516600200000, 4.026e-05, 4.037e-05, 4.026e-05, 4.037e-05, 31732.72006971], [1516600260000, 4.027e-05, 4.037e-05, 4.026e-05, 4.037e-05, 13698.61141937], [1516600320000, 4.036e-05, 4.036e-05, 4.027e-05, 4.027e-05, 2605.40676569], [1516600380000, 4.027e-05, 4.035e-05, 4.027e-05, 4.035e-05, 12375.46109901], [1516600440000, 4.034e-05, 4.035e-05, 4.027e-05, 4.035e-05, 8511.37255046], [1516600500000, 4.035e-05, 4.035e-05, 4.034e-05, 4.035e-05, 2299.02553849], [1516600560000, 4.035e-05, 4.037e-05, 4.035e-05, 4.035e-05, 1602.81921762], [1516600620000, 4.035e-05, 4.037e-05, 4.028e-05, 4.028e-05, 6592.0076293], [1516600680000, 4.028e-05, 4.028e-05, 4.028e-05, 4.028e-05, 4630.83187654], [1516600740000, 4.028e-05, 4.037e-05, 4.025e-05, 4.025e-05, 41525.53853287], [1516600800000, 4.036e-05, 4.037e-05, 4.025e-05, 4.025e-05, 7018.3567533], [1516600860000, 4.025e-05, 4.026e-05, 4.025e-05, 4.026e-05, 6634.36359307], [1516600920000, 4.026e-05, 4.03e-05, 3.984e-05, 4.005e-05, 182685.91578247], [1516600980000, 4.032e-05, 4.037e-05, 4.02e-05, 4.02e-05, 2801.54570615], [1516601040000, 4.009e-05, 4.02e-05, 4.007e-05, 4.007e-05, 912.80991138], [1516601100000, 3.997e-05, 4.007e-05, 3.99e-05, 4.007e-05, 6978.20610911], [1516601160000, 4.019e-05, 4.031e-05, 4.008e-05, 4.031e-05, 59550.25419219], [1516601220000, 4.012e-05, 4.012e-05, 4.01e-05, 4.011e-05, 14530.27075489], [1516601280000, 4.01e-05, 4.011e-05, 4.01e-05, 4.011e-05, 9630.03618804], [1516601340000, 4.03e-05, 4.03e-05, 4.011e-05, 4.011e-05, 3278.17586423], [1516601400000, 4.011e-05, 4.011e-05, 4.011e-05, 4.011e-05, 3888.55844294], [1516601460000, 4.019e-05, 4.019e-05, 4.01e-05, 4.01e-05, 35949.07885557], [1516601520000, 4.01e-05, 4.025e-05, 4.01e-05, 4.025e-05, 12532.93151989], [1516601580000, 4.01e-05, 4.01e-05, 3.996e-05, 3.997e-05, 20189.8252156], [1516601640000, 3.997e-05, 4.02e-05, 3.996e-05, 4.02e-05, 7047.73132524], [1516601700000, 4.02e-05, 4.02e-05, 4.02e-05, 4.02e-05, 2069.27266497], [1516601760000, 4.024e-05, 4.041e-05, 3.998e-05, 4.041e-05, 24185.22086483], [1516601820000, 4.02e-05, 4.036e-05, 4.002e-05, 4.034e-05, 3404.06397958], [1516601880000, 3.999e-05, 4e-05, 3.999e-05, 3.999e-05, 1157.36434731], [1516601940000, 3.998e-05, 4.035e-05, 3.996e-05, 4e-05, 7724.64519947], [1516602000000, 4e-05, 4.037e-05, 3.999e-05, 3.999e-05, 13882.0609601], [1516602060000, 3.999e-05, 3.999e-05, 3.998e-05, 3.998e-05, 12226.6213836], [1516602120000, 3.999e-05, 4.028e-05, 3.978e-05, 4.028e-05, 177378.24283616], [1516602180000, 4.024e-05, 4.024e-05, 3.982e-05, 3.986e-05, 31511.37816263], [1516602240000, 4.023e-05, 4.023e-05, 4.02e-05, 4.021e-05, 845.17445363], [1516602360000, 4.015e-05, 4.015e-05, 3.987e-05, 3.987e-05, 8164.55608057], [1516602420000, 3.988e-05, 3.989e-05, 3.98e-05, 3.987e-05, 11793.88000914], [1516602480000, 3.987e-05, 4.012e-05, 3.987e-05, 4e-05, 290.7816467], [1516602540000, 4.012e-05, 4.012e-05, 4e-05, 4e-05, 176.16358848], [1516602600000, 3.991e-05, 4.012e-05, 3.976e-05, 3.99e-05, 41746.27390537], [1516602660000, 3.983e-05, 4e-05, 3.98e-05, 3.99e-05, 14000.13617599], [1516602720000, 3.99e-05, 4e-05, 3.98e-05, 4e-05, 11447.59072032], [1516602780000, 4e-05, 4.011e-05, 3.982e-05, 4e-05, 6076.72511473], [1516602840000, 4.004e-05, 4.011e-05, 3.981e-05, 4.011e-05, 31440.2198768], [1516602900000, 4.01e-05, 4.011e-05, 3.998e-05, 4.011e-05, 6373.1507674], [1516602960000, 4.011e-05, 4.021e-05, 4.011e-05, 4.021e-05, 2659.23019554], [1516603020000, 4.022e-05, 4.058e-05, 3.999e-05, 4.054e-05, 223305.20170493], [1516603080000, 4.054e-05, 4.188e-05, 4.04e-05, 4.178e-05, 1285271.84639579], [1516603140000, 4.178e-05, 4.25e-05, 4.082e-05, 4.223e-05, 1085356.26731225], [1516603200000, 4.223e-05, 4.25e-05, 4.184e-05, 4.194e-05, 414867.86005687], [1516603260000, 4.194e-05, 4.235e-05, 4.183e-05, 4.201e-05, 207522.30306446], [1516603320000, 4.217e-05, 4.23e-05, 4.2e-05, 4.205e-05, 134845.43111641], [1516603380000, 4.219e-05, 4.23e-05, 4.177e-05, 4.178e-05, 88696.81342223], [1516603440000, 4.178e-05, 4.181e-05, 4.165e-05, 4.181e-05, 130899.58340659], [1516603500000, 4.181e-05, 4.186e-05, 4.152e-05, 4.152e-05, 31420.55119228], [1516603560000, 4.151e-05, 4.159e-05, 4.12e-05, 4.157e-05, 125909.68893575], [1516603620000, 4.157e-05, 4.159e-05, 4.144e-05, 4.159e-05, 87827.84040538], [1516603680000, 4.159e-05, 4.21e-05, 4.159e-05, 4.184e-05, 125748.32651948], [1516603740000, 4.185e-05, 4.213e-05, 4.184e-05, 4.192e-05, 77582.88315223], [1516603800000, 4.211e-05, 4.224e-05, 4.188e-05, 4.213e-05, 105877.39982713], [1516603860000, 4.212e-05, 4.23e-05, 4.21e-05, 4.23e-05, 109060.49152777], [1516603920000, 4.23e-05, 4.233e-05, 4.222e-05, 4.23e-05, 68798.31229863], [1516603980000, 4.23e-05, 4.238e-05, 4.221e-05, 4.221e-05, 94322.19906826], [1516604040000, 4.235e-05, 4.236e-05, 4.221e-05, 4.221e-05, 46218.97824263], [1516604100000, 4.222e-05, 4.25e-05, 4.215e-05, 4.249e-05, 456661.50653167], [1516604160000, 4.242e-05, 4.257e-05, 4.232e-05, 4.257e-05, 159185.12582726], [1516604220000, 4.257e-05, 4.259e-05, 4.22e-05, 4.232e-05, 118000.97405145], [1516604280000, 4.232e-05, 4.273e-05, 4.232e-05, 4.258e-05, 224811.20377236], [1516604340000, 4.265e-05, 4.273e-05, 4.255e-05, 4.255e-05, 61669.58940684], [1516604400000, 4.25e-05, 4.255e-05, 4.234e-05, 4.241e-05, 59182.8005508], [1516604460000, 4.241e-05, 4.257e-05, 4.241e-05, 4.255e-05, 41467.05527715], [1516604520000, 4.255e-05, 4.257e-05, 4.243e-05, 4.257e-05, 60691.79190941], [1516604580000, 4.257e-05, 4.257e-05, 4.241e-05, 4.241e-05, 76715.65378938], [1516604640000, 4.245e-05, 4.245e-05, 4.223e-05, 4.223e-05, 79965.51741447], [1516604700000, 4.222e-05, 4.234e-05, 4.206e-05, 4.209e-05, 30824.8152938], [1516604760000, 4.206e-05, 4.24e-05, 4.179e-05, 4.24e-05, 140822.22331788], [1516604820000, 4.236e-05, 4.239e-05, 4.19e-05, 4.19e-05, 54612.01317583], [1516604880000, 4.19e-05, 4.19e-05, 4.156e-05, 4.156e-05, 64534.98494081], [1516604940000, 4.156e-05, 4.185e-05, 4.156e-05, 4.185e-05, 15693.69511542], [1516605000000, 4.16e-05, 4.187e-05, 4.16e-05, 4.18e-05, 47446.84821294], [1516605060000, 4.18e-05, 4.22e-05, 4.162e-05, 4.213e-05, 88949.96369648], [1516605120000, 4.213e-05, 4.213e-05, 4.184e-05, 4.198e-05, 79116.34405508], [1516605180000, 4.198e-05, 4.2e-05, 4.185e-05, 4.195e-05, 51205.99259834], [1516605240000, 4.195e-05, 4.201e-05, 4.195e-05, 4.2e-05, 27548.47362733], [1516605300000, 4.212e-05, 4.212e-05, 4.2e-05, 4.2e-05, 786.9693828], [1516605360000, 4.201e-05, 4.212e-05, 4.201e-05, 4.204e-05, 23816.1363803], [1516605420000, 4.205e-05, 4.24e-05, 4.205e-05, 4.24e-05, 24692.21506703], [1516605480000, 4.239e-05, 4.245e-05, 4.228e-05, 4.233e-05, 26919.27325562], [1516605540000, 4.233e-05, 4.249e-05, 4.227e-05, 4.228e-05, 29821.04498042], [1516605600000, 4.23e-05, 4.23e-05, 4.211e-05, 4.22e-05, 16991.47047152], [1516605660000, 4.22e-05, 4.229e-05, 4.211e-05, 4.211e-05, 63606.48608838], [1516605720000, 4.229e-05, 4.229e-05, 4.206e-05, 4.21e-05, 20567.39623535], [1516605780000, 4.228e-05, 4.228e-05, 4.211e-05, 4.22e-05, 24963.1954949], [1516605840000, 4.22e-05, 4.22e-05, 4.206e-05, 4.21e-05, 24955.60037501], [1516605900000, 4.21e-05, 4.21e-05, 4.2e-05, 4.2e-05, 48263.62482542], [1516605960000, 4.199e-05, 4.219e-05, 4.195e-05, 4.195e-05, 53442.28858034], [1516606020000, 4.195e-05, 4.2e-05, 4.179e-05, 4.18e-05, 31373.59466429], [1516606080000, 4.18e-05, 4.217e-05, 4.179e-05, 4.183e-05, 39995.47265025], [1516606140000, 4.184e-05, 4.211e-05, 4.183e-05, 4.211e-05, 12866.66720674], [1516606200000, 4.211e-05, 4.216e-05, 4.206e-05, 4.206e-05, 6401.69360829], [1516606260000, 4.2e-05, 4.2e-05, 4.183e-05, 4.184e-05, 15468.534944], [1516606320000, 4.184e-05, 4.2e-05, 4.178e-05, 4.199e-05, 31469.7145386], [1516606380000, 4.2e-05, 4.2e-05, 4.18e-05, 4.185e-05, 19510.58343799], [1516606440000, 4.187e-05, 4.199e-05, 4.187e-05, 4.19e-05, 2251.93919493], [1516606500000, 4.185e-05, 4.189e-05, 4.185e-05, 4.189e-05, 3261.06956133], [1516606560000, 4.186e-05, 4.189e-05, 4.175e-05, 4.175e-05, 75412.09969144], [1516606620000, 4.175e-05, 4.185e-05, 4.172e-05, 4.181e-05, 14205.61662055], [1516606680000, 4.18e-05, 4.18e-05, 4.164e-05, 4.164e-05, 9300.83112759], [1516606740000, 4.164e-05, 4.171e-05, 4.151e-05, 4.159e-05, 91524.9025872], [1516606800000, 4.172e-05, 4.182e-05, 4.16e-05, 4.181e-05, 51893.37224233], [1516606860000, 4.181e-05, 4.182e-05, 4.181e-05, 4.182e-05, 16925.40440274], [1516606920000, 4.182e-05, 4.19e-05, 4.182e-05, 4.188e-05, 9209.65842688], [1516606980000, 4.188e-05, 4.214e-05, 4.181e-05, 4.184e-05, 82718.21588837], [1516607040000, 4.181e-05, 4.182e-05, 4.181e-05, 4.182e-05, 975.0], [1516607100000, 4.182e-05, 4.182e-05, 4.181e-05, 4.181e-05, 1786.51803666], [1516607160000, 4.161e-05, 4.161e-05, 4.155e-05, 4.155e-05, 9267.319467], [1516607220000, 4.155e-05, 4.161e-05, 4.15e-05, 4.152e-05, 29974.78214582], [1516607280000, 4.153e-05, 4.177e-05, 4.152e-05, 4.155e-05, 8754.85403327], [1516607340000, 4.156e-05, 4.179e-05, 4.155e-05, 4.172e-05, 5867.36168298], [1516607400000, 4.168e-05, 4.17e-05, 4.155e-05, 4.155e-05, 29870.33906103], [1516607460000, 4.158e-05, 4.16e-05, 4.155e-05, 4.159e-05, 8322.3284872], [1516607520000, 4.156e-05, 4.159e-05, 4.155e-05, 4.159e-05, 6528.09903162], [1516607580000, 4.159e-05, 4.159e-05, 4.153e-05, 4.153e-05, 7516.6723268], [1516607640000, 4.151e-05, 4.153e-05, 4.151e-05, 4.152e-05, 11830.74049782], [1516607700000, 4.151e-05, 4.152e-05, 4.15e-05, 4.152e-05, 12248.56319722], [1516607760000, 4.152e-05, 4.155e-05, 4.152e-05, 4.155e-05, 7950.51273714], [1516607820000, 4.155e-05, 4.16e-05, 4.155e-05, 4.16e-05, 66525.72492235], [1516607880000, 4.162e-05, 4.181e-05, 4.162e-05, 4.169e-05, 6714.863934], [1516607940000, 4.179e-05, 4.21e-05, 4.179e-05, 4.2e-05, 19467.27360204], [1516608000000, 4.18e-05, 4.18e-05, 4.164e-05, 4.174e-05, 33403.79634328], [1516608060000, 4.174e-05, 4.195e-05, 4.174e-05, 4.179e-05, 25372.14777493], [1516608120000, 4.179e-05, 4.179e-05, 4.162e-05, 4.173e-05, 11763.43580219], [1516608180000, 4.173e-05, 4.173e-05, 4.165e-05, 4.167e-05, 1745.16724822], [1516608240000, 4.17e-05, 4.175e-05, 4.163e-05, 4.172e-05, 52589.26826803], [1516608300000, 4.172e-05, 4.174e-05, 4.16e-05, 4.174e-05, 80052.74310808], [1516608360000, 4.174e-05, 4.175e-05, 4.164e-05, 4.166e-05, 44653.72670145], [1516608420000, 4.166e-05, 4.187e-05, 4.16e-05, 4.161e-05, 71140.04271876], [1516608480000, 4.161e-05, 4.173e-05, 4.154e-05, 4.17e-05, 50443.389501], [1516608540000, 4.173e-05, 4.176e-05, 4.155e-05, 4.158e-05, 28215.62813638], [1516608600000, 4.16e-05, 4.173e-05, 4.157e-05, 4.172e-05, 20594.50145622], [1516608660000, 4.172e-05, 4.173e-05, 4.155e-05, 4.155e-05, 53866.22684898], [1516608720000, 4.155e-05, 4.164e-05, 4.153e-05, 4.153e-05, 20386.62303469], [1516608780000, 4.162e-05, 4.164e-05, 4.153e-05, 4.153e-05, 7531.76622495], [1516608840000, 4.153e-05, 4.164e-05, 4.15e-05, 4.164e-05, 4725.94577125], [1516608900000, 4.163e-05, 4.165e-05, 4.159e-05, 4.159e-05, 3456.80141169], [1516608960000, 4.158e-05, 4.159e-05, 4.153e-05, 4.159e-05, 12404.76700947], [1516609020000, 4.154e-05, 4.159e-05, 4.154e-05, 4.159e-05, 5111.83718996], [1516609080000, 4.159e-05, 4.159e-05, 4.158e-05, 4.158e-05, 10771.40684998], [1516609140000, 4.159e-05, 4.165e-05, 4.158e-05, 4.165e-05, 2925.6494115], [1516609200000, 4.165e-05, 4.165e-05, 4.159e-05, 4.159e-05, 23840.20293232], [1516609260000, 4.159e-05, 4.165e-05, 4.159e-05, 4.165e-05, 1189.1919601], [1516609320000, 4.16e-05, 4.165e-05, 4.158e-05, 4.158e-05, 34072.19388256], [1516609380000, 4.158e-05, 4.195e-05, 4.158e-05, 4.161e-05, 3542.27544766], [1516609440000, 4.177e-05, 4.194e-05, 4.165e-05, 4.165e-05, 1088.62288947], [1516609500000, 4.165e-05, 4.189e-05, 4.165e-05, 4.178e-05, 1493.91899396], [1516609560000, 4.177e-05, 4.185e-05, 4.166e-05, 4.185e-05, 5212.01243111], [1516609620000, 4.185e-05, 4.185e-05, 4.165e-05, 4.165e-05, 38014.70469866], [1516609680000, 4.165e-05, 4.165e-05, 4.159e-05, 4.163e-05, 19992.30096044], [1516609740000, 4.163e-05, 4.166e-05, 4.16e-05, 4.166e-05, 18998.14822131], [1516609800000, 4.166e-05, 4.184e-05, 4.166e-05, 4.166e-05, 2751.73468175], [1516609860000, 4.163e-05, 4.166e-05, 4.162e-05, 4.166e-05, 4420.27444404], [1516609920000, 4.166e-05, 4.166e-05, 4.162e-05, 4.166e-05, 1827.09874937], [1516609980000, 4.162e-05, 4.166e-05, 4.162e-05, 4.166e-05, 5887.45155827], [1516610040000, 4.166e-05, 4.17e-05, 4.166e-05, 4.166e-05, 1804.54405037], [1516610100000, 4.163e-05, 4.166e-05, 4.163e-05, 4.166e-05, 1342.07080319], [1516610160000, 4.166e-05, 4.179e-05, 4.166e-05, 4.179e-05, 13952.49439455], [1516610220000, 4.18e-05, 4.182e-05, 4.18e-05, 4.18e-05, 11179.48096488], [1516610280000, 4.18e-05, 4.182e-05, 4.179e-05, 4.18e-05, 20063.98337891], [1516610340000, 4.18e-05, 4.195e-05, 4.17e-05, 4.195e-05, 39617.84252387], [1516610400000, 4.172e-05, 4.195e-05, 4.167e-05, 4.167e-05, 99716.75564845], [1516610460000, 4.18e-05, 4.18e-05, 4.162e-05, 4.177e-05, 23627.62692381], [1516610520000, 4.163e-05, 4.175e-05, 4.162e-05, 4.162e-05, 13708.79852217], [1516610580000, 4.162e-05, 4.172e-05, 4.162e-05, 4.172e-05, 35501.58692953], [1516610640000, 4.165e-05, 4.174e-05, 4.163e-05, 4.174e-05, 51810.53227392], [1516610700000, 4.163e-05, 4.17e-05, 4.162e-05, 4.165e-05, 43543.17798672], [1516610760000, 4.17e-05, 4.17e-05, 4.162e-05, 4.162e-05, 45293.54054919], [1516610820000, 4.169e-05, 4.176e-05, 4.162e-05, 4.169e-05, 27296.62474902], [1516610880000, 4.164e-05, 4.176e-05, 4.16e-05, 4.176e-05, 34608.33314239], [1516610940000, 4.156e-05, 4.174e-05, 4.156e-05, 4.165e-05, 33749.5051433], [1516611000000, 4.164e-05, 4.192e-05, 4.164e-05, 4.165e-05, 7987.26060789], [1516611060000, 4.165e-05, 4.186e-05, 4.165e-05, 4.178e-05, 7632.17176261], [1516611120000, 4.181e-05, 4.181e-05, 4.178e-05, 4.181e-05, 15875.32062602], [1516611180000, 4.181e-05, 4.184e-05, 4.156e-05, 4.184e-05, 9320.32107866], [1516611240000, 4.184e-05, 4.186e-05, 4.184e-05, 4.184e-05, 4892.5127177], [1516611300000, 4.185e-05, 4.186e-05, 4.184e-05, 4.185e-05, 3663.84703343], [1516611360000, 4.185e-05, 4.186e-05, 4.174e-05, 4.175e-05, 645.98982039], [1516611420000, 4.175e-05, 4.186e-05, 4.174e-05, 4.174e-05, 15947.60890671], [1516611480000, 4.175e-05, 4.197e-05, 4.175e-05, 4.197e-05, 33609.53671667], [1516611540000, 4.196e-05, 4.196e-05, 4.163e-05, 4.166e-05, 32475.98410605], [1516611600000, 4.164e-05, 4.166e-05, 4.164e-05, 4.166e-05, 19330.97884872], [1516611660000, 4.166e-05, 4.167e-05, 4.166e-05, 4.167e-05, 14819.80851374], [1516611720000, 4.167e-05, 4.18e-05, 4.167e-05, 4.18e-05, 2348.63530742], [1516611780000, 4.18e-05, 4.189e-05, 4.167e-05, 4.167e-05, 1117.26962017], [1516611840000, 4.18e-05, 4.18e-05, 4.18e-05, 4.18e-05, 816.48107414], [1516611900000, 4.168e-05, 4.18e-05, 4.168e-05, 4.18e-05, 9323.68764772], [1516611960000, 4.18e-05, 4.18e-05, 4.168e-05, 4.168e-05, 6611.39089372], [1516612020000, 4.18e-05, 4.18e-05, 4.18e-05, 4.18e-05, 67.3514668], [1516612080000, 4.18e-05, 4.189e-05, 4.18e-05, 4.189e-05, 1932.12012091], [1516612140000, 4.182e-05, 4.188e-05, 4.165e-05, 4.172e-05, 78736.87610688], [1516612200000, 4.172e-05, 4.187e-05, 4.16e-05, 4.16e-05, 21044.128357], [1516612260000, 4.18e-05, 4.18e-05, 4.167e-05, 4.18e-05, 4512.22775649], [1516612320000, 4.179e-05, 4.189e-05, 4.169e-05, 4.179e-05, 5792.35879488], [1516612380000, 4.179e-05, 4.192e-05, 4.179e-05, 4.188e-05, 5106.1281423], [1516612440000, 4.187e-05, 4.187e-05, 4.181e-05, 4.187e-05, 11883.86321139], [1516612500000, 4.187e-05, 4.192e-05, 4.171e-05, 4.171e-05, 17615.15942973], [1516612560000, 4.187e-05, 4.187e-05, 4.172e-05, 4.172e-05, 16244.39332064], [1516612620000, 4.182e-05, 4.183e-05, 4.172e-05, 4.182e-05, 25582.60421071], [1516612680000, 4.182e-05, 4.199e-05, 4.173e-05, 4.198e-05, 27056.2309339], [1516612740000, 4.196e-05, 4.21e-05, 4.182e-05, 4.21e-05, 272162.81061707], [1516612800000, 4.2e-05, 4.21e-05, 4.169e-05, 4.189e-05, 9712.70429699], [1516612860000, 4.189e-05, 4.2e-05, 4.187e-05, 4.188e-05, 22916.17301521], [1516612920000, 4.188e-05, 4.197e-05, 4.188e-05, 4.194e-05, 17484.8450462], [1516612980000, 4.188e-05, 4.194e-05, 4.188e-05, 4.194e-05, 709.27519047], [1516613040000, 4.197e-05, 4.197e-05, 4.196e-05, 4.197e-05, 15803.50954531], [1516613100000, 4.189e-05, 4.194e-05, 4.188e-05, 4.194e-05, 9033.76547612], [1516613160000, 4.193e-05, 4.197e-05, 4.188e-05, 4.188e-05, 27261.48495908], [1516613220000, 4.188e-05, 4.197e-05, 4.188e-05, 4.197e-05, 14753.11009208], [1516613280000, 4.197e-05, 4.214e-05, 4.182e-05, 4.214e-05, 60320.76663487], [1516613340000, 4.213e-05, 4.214e-05, 4.186e-05, 4.206e-05, 8147.49001171], [1516613400000, 4.191e-05, 4.21e-05, 4.191e-05, 4.21e-05, 14640.81644253], [1516613460000, 4.206e-05, 4.21e-05, 4.19e-05, 4.19e-05, 44410.74841173], [1516613520000, 4.206e-05, 4.206e-05, 4.19e-05, 4.19e-05, 6811.2514254], [1516613580000, 4.197e-05, 4.213e-05, 4.191e-05, 4.191e-05, 20240.28201858], [1516613640000, 4.2e-05, 4.2e-05, 4.2e-05, 4.2e-05, 3263.05429347], [1516613700000, 4.197e-05, 4.2e-05, 4.194e-05, 4.2e-05, 25571.47481955], [1516613760000, 4.199e-05, 4.212e-05, 4.199e-05, 4.212e-05, 6092.14424481], [1516613820000, 4.212e-05, 4.212e-05, 4.2e-05, 4.21e-05, 4242.49829542], [1516613880000, 4.212e-05, 4.214e-05, 4.21e-05, 4.212e-05, 7046.97991596], [1516613940000, 4.211e-05, 4.212e-05, 4.211e-05, 4.212e-05, 28753.11578497], [1516614000000, 4.212e-05, 4.212e-05, 4.211e-05, 4.212e-05, 7332.96855067], [1516614060000, 4.211e-05, 4.212e-05, 4.211e-05, 4.212e-05, 43163.04810221], [1516614120000, 4.215e-05, 4.25e-05, 4.215e-05, 4.243e-05, 96023.47361015], [1516614180000, 4.24e-05, 4.273e-05, 4.24e-05, 4.273e-05, 290558.43171915], [1516614240000, 4.273e-05, 4.29e-05, 4.259e-05, 4.26e-05, 287576.99685471], [1516614300000, 4.26e-05, 4.312e-05, 4.259e-05, 4.31e-05, 345356.2094526], [1516614360000, 4.31e-05, 4.32e-05, 4.278e-05, 4.319e-05, 104224.12025682], [1516614420000, 4.298e-05, 4.323e-05, 4.298e-05, 4.3e-05, 75733.02571775], [1516614480000, 4.3e-05, 4.337e-05, 4.3e-05, 4.335e-05, 91428.69647969], [1516614540000, 4.31e-05, 4.337e-05, 4.31e-05, 4.337e-05, 43479.701201], [1516614600000, 4.32e-05, 4.36e-05, 4.32e-05, 4.36e-05, 230927.53178821], [1516614660000, 4.36e-05, 4.36e-05, 4.33e-05, 4.334e-05, 26615.09023826], [1516614720000, 4.334e-05, 4.36e-05, 4.334e-05, 4.36e-05, 104415.52030188], [1516614780000, 4.36e-05, 4.363e-05, 4.352e-05, 4.357e-05, 24119.53900933], [1516614840000, 4.353e-05, 4.36e-05, 4.34e-05, 4.34e-05, 57553.36990753], [1516614900000, 4.34e-05, 4.35e-05, 4.34e-05, 4.349e-05, 41190.59323215], [1516614960000, 4.349e-05, 4.349e-05, 4.303e-05, 4.32e-05, 37777.58186998], [1516615020000, 4.32e-05, 4.329e-05, 4.304e-05, 4.319e-05, 36926.40158719], [1516615080000, 4.319e-05, 4.328e-05, 4.306e-05, 4.307e-05, 88733.54327532], [1516615140000, 4.31e-05, 4.337e-05, 4.307e-05, 4.32e-05, 108931.40828299], [1516615200000, 4.32e-05, 4.338e-05, 4.32e-05, 4.33e-05, 92565.24643625], [1516615260000, 4.33e-05, 4.336e-05, 4.312e-05, 4.312e-05, 53329.55685743], [1516615320000, 4.317e-05, 4.33e-05, 4.313e-05, 4.329e-05, 9697.49751534], [1516615380000, 4.32e-05, 4.33e-05, 4.32e-05, 4.322e-05, 21601.09831344], [1516615440000, 4.324e-05, 4.33e-05, 4.322e-05, 4.322e-05, 7054.44098436], [1516615500000, 4.328e-05, 4.328e-05, 4.322e-05, 4.328e-05, 5477.60414688], [1516615560000, 4.322e-05, 4.322e-05, 4.32e-05, 4.32e-05, 5386.36708041], [1516615620000, 4.32e-05, 4.322e-05, 4.317e-05, 4.317e-05, 10058.44672541], [1516615680000, 4.315e-05, 4.317e-05, 4.303e-05, 4.303e-05, 36305.76479893], [1516615740000, 4.3e-05, 4.3e-05, 4.295e-05, 4.295e-05, 20803.70873144], [1516615800000, 4.299e-05, 4.3e-05, 4.292e-05, 4.294e-05, 23819.83114153], [1516615860000, 4.292e-05, 4.301e-05, 4.286e-05, 4.301e-05, 20914.3899168], [1516615920000, 4.301e-05, 4.311e-05, 4.301e-05, 4.311e-05, 6667.64300285], [1516615980000, 4.312e-05, 4.315e-05, 4.289e-05, 4.292e-05, 43506.61173854], [1516616040000, 4.292e-05, 4.329e-05, 4.292e-05, 4.328e-05, 108700.23579196], [1516616100000, 4.329e-05, 4.371e-05, 4.328e-05, 4.37e-05, 309784.96704071], [1516616160000, 4.371e-05, 4.385e-05, 4.35e-05, 4.385e-05, 256531.00559177], [1516616220000, 4.385e-05, 4.387e-05, 4.375e-05, 4.375e-05, 96139.30803135], [1516616280000, 4.375e-05, 4.38e-05, 4.368e-05, 4.368e-05, 37667.99562483], [1516616340000, 4.368e-05, 4.372e-05, 4.351e-05, 4.36e-05, 40180.86213206], [1516616400000, 4.361e-05, 4.363e-05, 4.352e-05, 4.361e-05, 54590.37900438], [1516616460000, 4.361e-05, 4.385e-05, 4.361e-05, 4.385e-05, 94212.13968943], [1516616520000, 4.385e-05, 4.413e-05, 4.385e-05, 4.404e-05, 445337.31010319], [1516616580000, 4.408e-05, 4.42e-05, 4.404e-05, 4.407e-05, 71806.33474246], [1516616640000, 4.407e-05, 4.419e-05, 4.4e-05, 4.407e-05, 78548.97139427], [1516616700000, 4.404e-05, 4.422e-05, 4.4e-05, 4.4e-05, 99196.21825277], [1516616760000, 4.389e-05, 4.446e-05, 4.386e-05, 4.444e-05, 369217.9238462], [1516616820000, 4.444e-05, 4.459e-05, 4.408e-05, 4.453e-05, 712711.17863511], [1516616880000, 4.453e-05, 4.463e-05, 4.428e-05, 4.445e-05, 137797.19441635], [1516616940000, 4.445e-05, 4.458e-05, 4.442e-05, 4.442e-05, 37046.63143287], [1516617000000, 4.442e-05, 4.456e-05, 4.442e-05, 4.456e-05, 54140.48410544], [1516617060000, 4.456e-05, 4.498e-05, 4.456e-05, 4.498e-05, 866166.45072053], [1516617120000, 4.498e-05, 4.52e-05, 4.445e-05, 4.491e-05, 735437.58416993], [1516617180000, 4.491e-05, 4.525e-05, 4.491e-05, 4.515e-05, 332721.23066126], [1516617240000, 4.519e-05, 4.53e-05, 4.509e-05, 4.519e-05, 151794.94728055], [1516617300000, 4.509e-05, 4.56e-05, 4.497e-05, 4.534e-05, 581708.81546438], [1516617360000, 4.534e-05, 4.539e-05, 4.513e-05, 4.513e-05, 103880.01262169], [1516617420000, 4.513e-05, 4.539e-05, 4.455e-05, 4.467e-05, 99592.24299534], [1516617480000, 4.455e-05, 4.496e-05, 4.435e-05, 4.439e-05, 94822.00102101], [1516617540000, 4.439e-05, 4.477e-05, 4.43e-05, 4.44e-05, 47758.51658077], [1516617600000, 4.44e-05, 4.482e-05, 4.439e-05, 4.48e-05, 515034.27583496], [1516617660000, 4.48e-05, 4.513e-05, 4.48e-05, 4.484e-05, 633383.73200286], [1516617720000, 4.485e-05, 4.5e-05, 4.48e-05, 4.48e-05, 651178.11117889], [1516617780000, 4.48e-05, 4.495e-05, 4.48e-05, 4.49e-05, 218524.95291756], [1516617840000, 4.492e-05, 4.499e-05, 4.48e-05, 4.496e-05, 66983.4755193], [1516617900000, 4.496e-05, 4.496e-05, 4.456e-05, 4.468e-05, 353785.78645141], [1516617960000, 4.46e-05, 4.477e-05, 4.459e-05, 4.474e-05, 133956.07607791], [1516618020000, 4.475e-05, 4.495e-05, 4.474e-05, 4.474e-05, 436637.51606098], [1516618080000, 4.474e-05, 4.475e-05, 4.474e-05, 4.474e-05, 337361.05315805], [1516618140000, 4.474e-05, 4.475e-05, 4.445e-05, 4.449e-05, 484301.37714937], [1516618200000, 4.449e-05, 4.451e-05, 4.425e-05, 4.439e-05, 138524.97358649], [1516618260000, 4.434e-05, 4.439e-05, 4.415e-05, 4.415e-05, 37557.22999189], [1516618320000, 4.411e-05, 4.413e-05, 4.392e-05, 4.392e-05, 98332.34593262], [1516618380000, 4.393e-05, 4.394e-05, 4.388e-05, 4.391e-05, 60512.21947722], [1516618440000, 4.391e-05, 4.425e-05, 4.391e-05, 4.422e-05, 72275.02261481], [1516618500000, 4.424e-05, 4.434e-05, 4.418e-05, 4.422e-05, 16588.5905069], [1516618560000, 4.425e-05, 4.425e-05, 4.409e-05, 4.417e-05, 19391.69465229], [1516618620000, 4.417e-05, 4.42e-05, 4.417e-05, 4.417e-05, 17265.90677156], [1516618680000, 4.417e-05, 4.417e-05, 4.407e-05, 4.41e-05, 13145.17810228], [1516618740000, 4.408e-05, 4.409e-05, 4.407e-05, 4.409e-05, 13065.81172424], [1516618800000, 4.408e-05, 4.424e-05, 4.395e-05, 4.42e-05, 35558.58895597], [1516618860000, 4.42e-05, 4.423e-05, 4.407e-05, 4.407e-05, 27544.21198993], [1516618920000, 4.407e-05, 4.409e-05, 4.387e-05, 4.387e-05, 62767.66923466], [1516618980000, 4.388e-05, 4.404e-05, 4.386e-05, 4.386e-05, 56977.67518694], [1516619040000, 4.4e-05, 4.427e-05, 4.388e-05, 4.4e-05, 40226.15855627], [1516619100000, 4.4e-05, 4.423e-05, 4.398e-05, 4.421e-05, 13701.4633137], [1516619160000, 4.4e-05, 4.421e-05, 4.4e-05, 4.419e-05, 17089.49758933], [1516619220000, 4.405e-05, 4.419e-05, 4.405e-05, 4.418e-05, 6593.30580416], [1516619280000, 4.408e-05, 4.421e-05, 4.408e-05, 4.421e-05, 55718.74080183], [1516619340000, 4.419e-05, 4.45e-05, 4.419e-05, 4.45e-05, 132611.82808005], [1516619400000, 4.437e-05, 4.448e-05, 4.437e-05, 4.438e-05, 13001.91442452], [1516619460000, 4.438e-05, 4.448e-05, 4.421e-05, 4.421e-05, 49120.94092099], [1516619520000, 4.422e-05, 4.422e-05, 4.401e-05, 4.408e-05, 48299.90578842], [1516619580000, 4.413e-05, 4.413e-05, 4.401e-05, 4.408e-05, 15948.73722035], [1516619640000, 4.403e-05, 4.438e-05, 4.401e-05, 4.415e-05, 55779.62867516], [1516619700000, 4.415e-05, 4.435e-05, 4.415e-05, 4.415e-05, 1900.53154986], [1516619760000, 4.415e-05, 4.435e-05, 4.409e-05, 4.435e-05, 74922.88179082], [1516619820000, 4.421e-05, 4.449e-05, 4.42e-05, 4.435e-05, 53931.7101606], [1516619880000, 4.435e-05, 4.435e-05, 4.42e-05, 4.435e-05, 25327.42475847], [1516619940000, 4.435e-05, 4.435e-05, 4.406e-05, 4.406e-05, 13980.72969536], [1516620000000, 4.406e-05, 4.406e-05, 4.389e-05, 4.4e-05, 65884.7752598], [1516620060000, 4.39e-05, 4.394e-05, 4.326e-05, 4.374e-05, 324141.49636062], [1516620120000, 4.391e-05, 4.394e-05, 4.377e-05, 4.394e-05, 63305.83969613], [1516620180000, 4.388e-05, 4.388e-05, 4.366e-05, 4.366e-05, 115672.01219047], [1516620240000, 4.378e-05, 4.378e-05, 4.344e-05, 4.367e-05, 24995.41422948], [1516620300000, 4.375e-05, 4.375e-05, 4.363e-05, 4.365e-05, 18238.43730052], [1516620360000, 4.363e-05, 4.365e-05, 4.344e-05, 4.345e-05, 74643.14618627], [1516620420000, 4.345e-05, 4.347e-05, 4.341e-05, 4.341e-05, 2316.88628896], [1516620480000, 4.345e-05, 4.345e-05, 4.321e-05, 4.323e-05, 44914.69743018], [1516620540000, 4.324e-05, 4.346e-05, 4.32e-05, 4.326e-05, 21820.9310694], [1516620600000, 4.331e-05, 4.345e-05, 4.32e-05, 4.329e-05, 74408.23178202], [1516620660000, 4.329e-05, 4.331e-05, 4.298e-05, 4.329e-05, 28000.77795269], [1516620720000, 4.326e-05, 4.342e-05, 4.306e-05, 4.306e-05, 93142.32370916], [1516620780000, 4.342e-05, 4.342e-05, 4.305e-05, 4.33e-05, 31415.26686332], [1516620840000, 4.305e-05, 4.33e-05, 4.305e-05, 4.31e-05, 23980.49773335], [1516620900000, 4.31e-05, 4.328e-05, 4.305e-05, 4.328e-05, 113230.07469104], [1516620960000, 4.315e-05, 4.328e-05, 4.305e-05, 4.308e-05, 56472.79858395], [1516621020000, 4.305e-05, 4.308e-05, 4.305e-05, 4.307e-05, 12192.85955122], [1516621080000, 4.307e-05, 4.308e-05, 4.305e-05, 4.305e-05, 198417.6522602], [1516621140000, 4.301e-05, 4.301e-05, 4.285e-05, 4.29e-05, 78124.90206284], [1516621200000, 4.3e-05, 4.307e-05, 4.29e-05, 4.307e-05, 36776.306762], [1516621260000, 4.306e-05, 4.307e-05, 4.288e-05, 4.291e-05, 47017.01786133], [1516621320000, 4.304e-05, 4.304e-05, 4.291e-05, 4.291e-05, 58092.66585763], [1516621380000, 4.294e-05, 4.305e-05, 4.294e-05, 4.305e-05, 48312.6337964], [1516621440000, 4.304e-05, 4.305e-05, 4.277e-05, 4.277e-05, 40248.04665982], [1516621500000, 4.276e-05, 4.286e-05, 4.221e-05, 4.279e-05, 66145.7837902], [1516621560000, 4.279e-05, 4.305e-05, 4.277e-05, 4.279e-05, 88478.58082072], [1516621620000, 4.28e-05, 4.305e-05, 4.242e-05, 4.301e-05, 122289.72341783], [1516621680000, 4.301e-05, 4.318e-05, 4.301e-05, 4.308e-05, 47642.9666239], [1516621740000, 4.311e-05, 4.343e-05, 4.311e-05, 4.34e-05, 35202.56299299], [1516621800000, 4.34e-05, 4.34e-05, 4.32e-05, 4.32e-05, 18325.04052195], [1516621860000, 4.318e-05, 4.326e-05, 4.312e-05, 4.326e-05, 67386.14109649], [1516621920000, 4.326e-05, 4.34e-05, 4.32e-05, 4.32e-05, 60648.53805061], [1516621980000, 4.32e-05, 4.32e-05, 4.313e-05, 4.32e-05, 15687.93146801], [1516622040000, 4.32e-05, 4.326e-05, 4.32e-05, 4.326e-05, 8613.79757726], [1516622100000, 4.326e-05, 4.326e-05, 4.31e-05, 4.31e-05, 13057.08249109], [1516622160000, 4.31e-05, 4.311e-05, 4.301e-05, 4.301e-05, 92409.4957068], [1516622220000, 4.301e-05, 4.301e-05, 4.281e-05, 4.281e-05, 101995.32101745], [1516622280000, 4.281e-05, 4.281e-05, 4.266e-05, 4.274e-05, 15178.82283188], [1516622340000, 4.27e-05, 4.274e-05, 4.239e-05, 4.268e-05, 34200.42501626], [1516622400000, 4.268e-05, 4.28e-05, 4.224e-05, 4.28e-05, 59877.10712809], [1516622460000, 4.234e-05, 4.28e-05, 4.233e-05, 4.268e-05, 97759.99701854], [1516622520000, 4.275e-05, 4.29e-05, 4.268e-05, 4.283e-05, 67453.48206053], [1516622580000, 4.283e-05, 4.296e-05, 4.268e-05, 4.29e-05, 25645.1636878], [1516622640000, 4.273e-05, 4.299e-05, 4.273e-05, 4.279e-05, 4822.02691054], [1516622700000, 4.289e-05, 4.29e-05, 4.279e-05, 4.288e-05, 24897.47938098], [1516622760000, 4.28e-05, 4.289e-05, 4.27e-05, 4.288e-05, 27004.87525877], [1516622820000, 4.28e-05, 4.305e-05, 4.28e-05, 4.305e-05, 102139.32463749], [1516622880000, 4.302e-05, 4.306e-05, 4.286e-05, 4.294e-05, 28816.66804677], [1516622940000, 4.306e-05, 4.316e-05, 4.268e-05, 4.311e-05, 242940.37673908], [1516623000000, 4.307e-05, 4.311e-05, 4.284e-05, 4.29e-05, 47414.25201442], [1516623060000, 4.29e-05, 4.306e-05, 4.274e-05, 4.282e-05, 114704.94248889], [1516623120000, 4.282e-05, 4.32e-05, 4.282e-05, 4.32e-05, 23350.85968169], [1516623180000, 4.311e-05, 4.324e-05, 4.311e-05, 4.317e-05, 42137.10501535], [1516623240000, 4.317e-05, 4.324e-05, 4.317e-05, 4.323e-05, 8483.82889574], [1516623300000, 4.323e-05, 4.334e-05, 4.323e-05, 4.334e-05, 16837.03847049], [1516623360000, 4.33e-05, 4.33e-05, 4.323e-05, 4.323e-05, 25878.14615879], [1516623420000, 4.323e-05, 4.33e-05, 4.3e-05, 4.3e-05, 13672.99527274], [1516623480000, 4.317e-05, 4.33e-05, 4.286e-05, 4.33e-05, 7257.71207119], [1516623540000, 4.33e-05, 4.334e-05, 4.33e-05, 4.33e-05, 9118.84352702], [1516623600000, 4.33e-05, 4.33e-05, 4.33e-05, 4.33e-05, 6233.04049414], [1516623660000, 4.3e-05, 4.327e-05, 4.287e-05, 4.3e-05, 3767.57748143], [1516623720000, 4.301e-05, 4.33e-05, 4.25e-05, 4.299e-05, 292263.00493522], [1516623780000, 4.254e-05, 4.299e-05, 4.254e-05, 4.298e-05, 13202.48380927], [1516623840000, 4.297e-05, 4.298e-05, 4.263e-05, 4.293e-05, 22490.96363704], [1516623900000, 4.29e-05, 4.298e-05, 4.267e-05, 4.296e-05, 131010.93504225], [1516623960000, 4.296e-05, 4.298e-05, 4.271e-05, 4.295e-05, 3351.35305887], [1516624020000, 4.28e-05, 4.294e-05, 4.276e-05, 4.278e-05, 13072.896204], [1516624080000, 4.278e-05, 4.28e-05, 4.249e-05, 4.251e-05, 23593.92835244], [1516624140000, 4.25e-05, 4.277e-05, 4.248e-05, 4.273e-05, 3712.74544633], [1516624200000, 4.271e-05, 4.273e-05, 4.257e-05, 4.258e-05, 6862.51415069], [1516624260000, 4.255e-05, 4.291e-05, 4.255e-05, 4.291e-05, 155147.62138657], [1516624320000, 4.291e-05, 4.291e-05, 4.263e-05, 4.263e-05, 43832.11200696], [1516624380000, 4.275e-05, 4.278e-05, 4.263e-05, 4.266e-05, 11705.95136568], [1516624440000, 4.268e-05, 4.294e-05, 4.268e-05, 4.292e-05, 29656.69744716], [1516624500000, 4.288e-05, 4.293e-05, 4.272e-05, 4.277e-05, 7902.83890073], [1516624560000, 4.274e-05, 4.278e-05, 4.273e-05, 4.278e-05, 17359.97243392], [1516624620000, 4.275e-05, 4.278e-05, 4.273e-05, 4.278e-05, 5145.05391088], [1516624680000, 4.275e-05, 4.277e-05, 4.273e-05, 4.273e-05, 9624.19441023], [1516624740000, 4.274e-05, 4.275e-05, 4.271e-05, 4.275e-05, 18125.1252738], [1516624800000, 4.275e-05, 4.275e-05, 4.248e-05, 4.248e-05, 86897.08580672], [1516624860000, 4.25e-05, 4.265e-05, 4.231e-05, 4.262e-05, 102483.57801594], [1516624920000, 4.248e-05, 4.262e-05, 4.23e-05, 4.247e-05, 118920.24427476], [1516624980000, 4.259e-05, 4.264e-05, 4.215e-05, 4.22e-05, 129143.50392686], [1516625040000, 4.257e-05, 4.274e-05, 4.211e-05, 4.247e-05, 287121.92057059], [1516625100000, 4.248e-05, 4.275e-05, 4.248e-05, 4.269e-05, 105465.88338259], [1516625160000, 4.275e-05, 4.276e-05, 4.265e-05, 4.265e-05, 35477.18877917], [1516625220000, 4.253e-05, 4.27e-05, 4.225e-05, 4.269e-05, 34215.43669514], [1516625280000, 4.269e-05, 4.29e-05, 4.269e-05, 4.289e-05, 8362.70389262], [1516625340000, 4.289e-05, 4.289e-05, 4.269e-05, 4.289e-05, 37104.34849844], [1516625400000, 4.287e-05, 4.289e-05, 4.28e-05, 4.287e-05, 15215.06957556], [1516625460000, 4.287e-05, 4.287e-05, 4.276e-05, 4.278e-05, 6692.89150035], [1516625520000, 4.285e-05, 4.285e-05, 4.278e-05, 4.284e-05, 8397.64955722], [1516625580000, 4.287e-05, 4.287e-05, 4.284e-05, 4.285e-05, 8309.97149594], [1516625640000, 4.285e-05, 4.286e-05, 4.28e-05, 4.28e-05, 11566.49686695], [1516625700000, 4.28e-05, 4.3e-05, 4.28e-05, 4.3e-05, 93574.4738406], [1516625760000, 4.281e-05, 4.281e-05, 4.278e-05, 4.278e-05, 7052.6813019], [1516625820000, 4.281e-05, 4.298e-05, 4.281e-05, 4.297e-05, 1035.65235379], [1516625880000, 4.298e-05, 4.298e-05, 4.281e-05, 4.281e-05, 3141.58357329], [1516625940000, 4.276e-05, 4.29e-05, 4.276e-05, 4.281e-05, 4401.96558125], [1516626000000, 4.281e-05, 4.288e-05, 4.281e-05, 4.288e-05, 4406.13940161], [1516626060000, 4.282e-05, 4.282e-05, 4.232e-05, 4.268e-05, 61685.82988901], [1516626120000, 4.255e-05, 4.268e-05, 4.245e-05, 4.247e-05, 1800.09856928], [1516626180000, 4.247e-05, 4.26e-05, 4.247e-05, 4.26e-05, 5739.62873125], [1516626240000, 4.26e-05, 4.262e-05, 4.258e-05, 4.26e-05, 5986.26737969], [1516626300000, 4.26e-05, 4.26e-05, 4.244e-05, 4.244e-05, 39719.74956549], [1516626360000, 4.244e-05, 4.246e-05, 4.244e-05, 4.245e-05, 6090.755711], [1516626420000, 4.246e-05, 4.26e-05, 4.244e-05, 4.246e-05, 16819.93667141], [1516626480000, 4.246e-05, 4.246e-05, 4.225e-05, 4.225e-05, 1432.26963725], [1516626540000, 4.225e-05, 4.231e-05, 4.215e-05, 4.22e-05, 102187.27683505], [1516626600000, 4.229e-05, 4.229e-05, 4.22e-05, 4.22e-05, 37012.56455713], [1516626660000, 4.22e-05, 4.22e-05, 4.211e-05, 4.211e-05, 9249.17476274], [1516626720000, 4.211e-05, 4.22e-05, 4.21e-05, 4.21e-05, 104599.75396475], [1516626780000, 4.21e-05, 4.21e-05, 4.156e-05, 4.19e-05, 133566.51432801], [1516626840000, 4.18e-05, 4.191e-05, 4.153e-05, 4.168e-05, 28550.81254283], [1516626900000, 4.168e-05, 4.169e-05, 4.159e-05, 4.169e-05, 40013.88284222], [1516626960000, 4.169e-05, 4.178e-05, 4.168e-05, 4.169e-05, 51564.45537536], [1516627020000, 4.169e-05, 4.169e-05, 4.153e-05, 4.16e-05, 51258.49993435], [1516627080000, 4.161e-05, 4.168e-05, 4.127e-05, 4.127e-05, 202456.74147112], [1516627140000, 4.129e-05, 4.141e-05, 4.125e-05, 4.141e-05, 51221.78363079], [1516627200000, 4.141e-05, 4.141e-05, 4.125e-05, 4.141e-05, 25506.39445186], [1516627260000, 4.126e-05, 4.148e-05, 4.125e-05, 4.125e-05, 55033.01650749], [1516627320000, 4.148e-05, 4.15e-05, 4.125e-05, 4.148e-05, 99070.67824541], [1516627380000, 4.148e-05, 4.16e-05, 4.148e-05, 4.16e-05, 67684.46575982], [1516627440000, 4.159e-05, 4.16e-05, 4.13e-05, 4.131e-05, 20252.78064361], [1516627500000, 4.131e-05, 4.146e-05, 4.12e-05, 4.121e-05, 57112.056388], [1516627560000, 4.12e-05, 4.131e-05, 4.105e-05, 4.105e-05, 169408.79845949], [1516627620000, 4.105e-05, 4.12e-05, 4.105e-05, 4.12e-05, 86485.02506613], [1516627680000, 4.12e-05, 4.12e-05, 4.105e-05, 4.105e-05, 16802.20871669], [1516627740000, 4.104e-05, 4.105e-05, 4.099e-05, 4.1e-05, 77884.34936246], [1516627800000, 4.105e-05, 4.109e-05, 4.095e-05, 4.1e-05, 62066.53420556], [1516627860000, 4.094e-05, 4.149e-05, 4.093e-05, 4.112e-05, 31399.9749569], [1516627920000, 4.14e-05, 4.15e-05, 4.112e-05, 4.15e-05, 89383.27185201], [1516627980000, 4.15e-05, 4.155e-05, 4.117e-05, 4.152e-05, 113128.35961571], [1516628040000, 4.151e-05, 4.151e-05, 4.109e-05, 4.151e-05, 36279.42084369], [1516628100000, 4.151e-05, 4.16e-05, 4.131e-05, 4.16e-05, 80453.46426036], [1516628160000, 4.138e-05, 4.16e-05, 4.138e-05, 4.15e-05, 7705.29998872], [1516628220000, 4.15e-05, 4.155e-05, 4.148e-05, 4.148e-05, 29991.5430624], [1516628280000, 4.148e-05, 4.149e-05, 4.148e-05, 4.148e-05, 54760.96264783], [1516628340000, 4.148e-05, 4.154e-05, 4.148e-05, 4.153e-05, 11182.42225075], [1516628400000, 4.148e-05, 4.153e-05, 4.148e-05, 4.152e-05, 29430.21604633], [1516628460000, 4.153e-05, 4.153e-05, 4.12e-05, 4.15e-05, 53070.61102333], [1516628520000, 4.12e-05, 4.12e-05, 4.103e-05, 4.103e-05, 24297.0381054], [1516628580000, 4.108e-05, 4.141e-05, 4.107e-05, 4.108e-05, 32750.62546166], [1516628640000, 4.114e-05, 4.12e-05, 4.102e-05, 4.12e-05, 60741.08464527], [1516628700000, 4.12e-05, 4.138e-05, 4.09e-05, 4.107e-05, 152421.91358622], [1516628760000, 4.107e-05, 4.152e-05, 4.093e-05, 4.124e-05, 334528.39360004], [1516628820000, 4.111e-05, 4.128e-05, 4.093e-05, 4.12e-05, 55443.83947207], [1516628880000, 4.101e-05, 4.126e-05, 4.1e-05, 4.123e-05, 36682.88734013], [1516628940000, 4.102e-05, 4.126e-05, 4.101e-05, 4.102e-05, 28621.06506614], [1516629000000, 4.119e-05, 4.126e-05, 4.103e-05, 4.124e-05, 228763.44635899], [1516629060000, 4.124e-05, 4.134e-05, 4.105e-05, 4.124e-05, 171399.77569492], [1516629120000, 4.106e-05, 4.14e-05, 4.105e-05, 4.14e-05, 212663.87623141], [1516629180000, 4.144e-05, 4.151e-05, 4.125e-05, 4.15e-05, 114927.27228555], [1516629240000, 4.15e-05, 4.15e-05, 4.14e-05, 4.14e-05, 15151.8301892], [1516629300000, 4.14e-05, 4.152e-05, 4.126e-05, 4.126e-05, 45405.80694437], [1516629360000, 4.153e-05, 4.18e-05, 4.129e-05, 4.18e-05, 77448.39521251], [1516629420000, 4.178e-05, 4.178e-05, 4.132e-05, 4.17e-05, 103804.38169053], [1516629480000, 4.16e-05, 4.17e-05, 4.16e-05, 4.169e-05, 73133.76621653], [1516629540000, 4.17e-05, 4.19e-05, 4.169e-05, 4.18e-05, 51181.81442212], [1516629600000, 4.189e-05, 4.19e-05, 4.18e-05, 4.182e-05, 67827.2488007], [1516629660000, 4.188e-05, 4.189e-05, 4.166e-05, 4.166e-05, 79796.8722982], [1516629720000, 4.166e-05, 4.186e-05, 4.166e-05, 4.167e-05, 52510.30465396], [1516629780000, 4.168e-05, 4.188e-05, 4.168e-05, 4.188e-05, 63426.38435988], [1516629840000, 4.188e-05, 4.189e-05, 4.168e-05, 4.188e-05, 86735.36954724], [1516629900000, 4.189e-05, 4.19e-05, 4.161e-05, 4.185e-05, 33401.12120781], [1516629960000, 4.185e-05, 4.185e-05, 4.164e-05, 4.168e-05, 62068.77872392], [1516630020000, 4.184e-05, 4.206e-05, 4.168e-05, 4.206e-05, 218602.8555651], [1516630080000, 4.205e-05, 4.211e-05, 4.193e-05, 4.209e-05, 143104.03083414], [1516630140000, 4.211e-05, 4.228e-05, 4.206e-05, 4.208e-05, 30274.46148339], [1516630200000, 4.206e-05, 4.208e-05, 4.185e-05, 4.199e-05, 39296.72095841], [1516630260000, 4.199e-05, 4.208e-05, 4.199e-05, 4.2e-05, 11873.60434397], [1516630320000, 4.2e-05, 4.208e-05, 4.2e-05, 4.205e-05, 4846.79172794], [1516630380000, 4.206e-05, 4.211e-05, 4.206e-05, 4.208e-05, 163240.75650755], [1516630440000, 4.211e-05, 4.214e-05, 4.166e-05, 4.184e-05, 52466.004486], [1516630500000, 4.184e-05, 4.184e-05, 4.171e-05, 4.184e-05, 6111.47690709], [1516630560000, 4.172e-05, 4.184e-05, 4.171e-05, 4.184e-05, 32142.0558404], [1516630620000, 4.197e-05, 4.198e-05, 4.184e-05, 4.184e-05, 9881.42044216], [1516630680000, 4.185e-05, 4.185e-05, 4.185e-05, 4.185e-05, 701.7179492], [1516630740000, 4.2e-05, 4.211e-05, 4.186e-05, 4.211e-05, 7842.28640856], [1516630800000, 4.208e-05, 4.22e-05, 4.208e-05, 4.209e-05, 88316.51697182], [1516630860000, 4.211e-05, 4.22e-05, 4.211e-05, 4.22e-05, 32629.09019656], [1516630920000, 4.22e-05, 4.228e-05, 4.22e-05, 4.225e-05, 88832.10272003], [1516630980000, 4.225e-05, 4.237e-05, 4.22e-05, 4.237e-05, 29222.30155261], [1516631040000, 4.23e-05, 4.237e-05, 4.182e-05, 4.21e-05, 41394.34078809], [1516631100000, 4.202e-05, 4.236e-05, 4.202e-05, 4.233e-05, 22306.0451481], [1516631160000, 4.234e-05, 4.234e-05, 4.209e-05, 4.209e-05, 72301.67791497], [1516631220000, 4.23e-05, 4.231e-05, 4.209e-05, 4.215e-05, 10625.9094264], [1516631280000, 4.215e-05, 4.231e-05, 4.215e-05, 4.23e-05, 11609.24494591], [1516631340000, 4.23e-05, 4.23e-05, 4.215e-05, 4.228e-05, 29095.26907956], [1516631400000, 4.228e-05, 4.228e-05, 4.216e-05, 4.216e-05, 6131.30803494], [1516631460000, 4.225e-05, 4.23e-05, 4.225e-05, 4.225e-05, 50043.00925705], [1516631520000, 4.225e-05, 4.24e-05, 4.225e-05, 4.24e-05, 52952.43674238], [1516631580000, 4.241e-05, 4.25e-05, 4.24e-05, 4.245e-05, 115102.64912557], [1516631640000, 4.245e-05, 4.269e-05, 4.241e-05, 4.26e-05, 317677.35336173], [1516631700000, 4.26e-05, 4.267e-05, 4.26e-05, 4.264e-05, 10053.61328037], [1516631760000, 4.272e-05, 4.301e-05, 4.272e-05, 4.287e-05, 160415.61602268], [1516631820000, 4.287e-05, 4.32e-05, 4.287e-05, 4.308e-05, 68969.54684694], [1516631880000, 4.308e-05, 4.332e-05, 4.298e-05, 4.305e-05, 101142.95813484], [1516631940000, 4.305e-05, 4.332e-05, 4.3e-05, 4.32e-05, 123630.63333592], [1516632000000, 4.301e-05, 4.325e-05, 4.301e-05, 4.321e-05, 18058.6785268], [1516632060000, 4.321e-05, 4.321e-05, 4.307e-05, 4.31e-05, 44353.93366316], [1516632120000, 4.312e-05, 4.32e-05, 4.3e-05, 4.307e-05, 89680.74504449], [1516632180000, 4.31e-05, 4.331e-05, 4.3e-05, 4.331e-05, 72848.46152252], [1516632240000, 4.33e-05, 4.334e-05, 4.304e-05, 4.308e-05, 53752.78880429], [1516632300000, 4.305e-05, 4.325e-05, 4.304e-05, 4.311e-05, 19758.90852773], [1516632360000, 4.323e-05, 4.323e-05, 4.323e-05, 4.323e-05, 7411.90708982], [1516632420000, 4.324e-05, 4.326e-05, 4.323e-05, 4.324e-05, 17110.43426912], [1516632480000, 4.324e-05, 4.324e-05, 4.269e-05, 4.296e-05, 108822.13204032], [1516632540000, 4.287e-05, 4.298e-05, 4.272e-05, 4.272e-05, 44196.20737109], [1516632600000, 4.275e-05, 4.296e-05, 4.275e-05, 4.278e-05, 21225.41041134], [1516632660000, 4.278e-05, 4.295e-05, 4.275e-05, 4.29e-05, 29666.31147749], [1516632720000, 4.29e-05, 4.29e-05, 4.276e-05, 4.29e-05, 15690.98245193], [1516632780000, 4.29e-05, 4.29e-05, 4.278e-05, 4.29e-05, 49989.54012056], [1516632840000, 4.29e-05, 4.29e-05, 4.209e-05, 4.279e-05, 233142.9206157], [1516632900000, 4.274e-05, 4.297e-05, 4.225e-05, 4.297e-05, 164617.20773777], [1516632960000, 4.297e-05, 4.299e-05, 4.29e-05, 4.299e-05, 36625.65539495], [1516633020000, 4.299e-05, 4.325e-05, 4.293e-05, 4.319e-05, 8757.86266957], [1516633080000, 4.318e-05, 4.318e-05, 4.29e-05, 4.29e-05, 10739.52637777], [1516633140000, 4.292e-05, 4.313e-05, 4.29e-05, 4.313e-05, 6847.47212323], [1516633200000, 4.313e-05, 4.313e-05, 4.296e-05, 4.313e-05, 18382.58743786], [1516633260000, 4.312e-05, 4.313e-05, 4.296e-05, 4.296e-05, 101950.61449768], [1516633320000, 4.296e-05, 4.3e-05, 4.271e-05, 4.283e-05, 13842.61915149], [1516633380000, 4.283e-05, 4.283e-05, 4.271e-05, 4.282e-05, 70781.99816643], [1516633440000, 4.282e-05, 4.297e-05, 4.282e-05, 4.287e-05, 7127.43655311], [1516633500000, 4.287e-05, 4.287e-05, 4.271e-05, 4.283e-05, 21711.28218322], [1516633560000, 4.283e-05, 4.283e-05, 4.255e-05, 4.27e-05, 2477.96885012], [1516633620000, 4.27e-05, 4.28e-05, 4.27e-05, 4.27e-05, 47467.89316684], [1516633680000, 4.27e-05, 4.27e-05, 4.257e-05, 4.265e-05, 4123.23378283], [1516633740000, 4.255e-05, 4.268e-05, 4.255e-05, 4.255e-05, 46114.04574204], [1516633800000, 4.255e-05, 4.257e-05, 4.245e-05, 4.245e-05, 37704.72344954], [1516633860000, 4.251e-05, 4.254e-05, 4.242e-05, 4.254e-05, 5232.37357829], [1516633920000, 4.254e-05, 4.255e-05, 4.24e-05, 4.24e-05, 130352.59566877], [1516633980000, 4.24e-05, 4.255e-05, 4.24e-05, 4.244e-05, 59990.1641545], [1516634040000, 4.254e-05, 4.268e-05, 4.25e-05, 4.251e-05, 26630.57762076], [1516634100000, 4.253e-05, 4.253e-05, 4.24e-05, 4.241e-05, 87025.73940438], [1516634160000, 4.248e-05, 4.248e-05, 4.237e-05, 4.237e-05, 23511.35068192], [1516634220000, 4.24e-05, 4.253e-05, 4.236e-05, 4.253e-05, 69521.48777209], [1516634280000, 4.24e-05, 4.264e-05, 4.24e-05, 4.26e-05, 24696.34727117], [1516634340000, 4.26e-05, 4.274e-05, 4.26e-05, 4.274e-05, 18253.44469273], [1516634400000, 4.273e-05, 4.274e-05, 4.253e-05, 4.265e-05, 10389.32152799], [1516634460000, 4.265e-05, 4.275e-05, 4.265e-05, 4.275e-05, 60862.43515946], [1516634520000, 4.274e-05, 4.274e-05, 4.269e-05, 4.269e-05, 996.45397492], [1516634580000, 4.269e-05, 4.273e-05, 4.269e-05, 4.269e-05, 7446.97760592], [1516634640000, 4.273e-05, 4.275e-05, 4.269e-05, 4.269e-05, 50182.45092438], [1516634700000, 4.269e-05, 4.273e-05, 4.265e-05, 4.266e-05, 41176.73212952], [1516634760000, 4.266e-05, 4.273e-05, 4.265e-05, 4.265e-05, 1337.06013354], [1516634820000, 4.266e-05, 4.273e-05, 4.265e-05, 4.273e-05, 55666.75388154], [1516634880000, 4.275e-05, 4.282e-05, 4.275e-05, 4.282e-05, 8352.48928233], [1516634940000, 4.279e-05, 4.282e-05, 4.279e-05, 4.28e-05, 14347.54901213], [1516635000000, 4.282e-05, 4.284e-05, 4.28e-05, 4.281e-05, 23462.13857603], [1516635060000, 4.282e-05, 4.284e-05, 4.281e-05, 4.282e-05, 5518.32279187], [1516635120000, 4.284e-05, 4.287e-05, 4.282e-05, 4.284e-05, 21504.35622115], [1516635180000, 4.289e-05, 4.289e-05, 4.283e-05, 4.289e-05, 1706.48027088], [1516635240000, 4.284e-05, 4.289e-05, 4.28e-05, 4.28e-05, 30630.78191307], [1516635300000, 4.28e-05, 4.28e-05, 4.275e-05, 4.275e-05, 15766.05588838], [1516635360000, 4.273e-05, 4.275e-05, 4.265e-05, 4.265e-05, 3875.2065194], [1516635420000, 4.265e-05, 4.274e-05, 4.25e-05, 4.265e-05, 39856.90682541], [1516635480000, 4.25e-05, 4.265e-05, 4.25e-05, 4.25e-05, 45047.62829175], [1516635540000, 4.255e-05, 4.255e-05, 4.25e-05, 4.255e-05, 15537.43132062], [1516635600000, 4.25e-05, 4.264e-05, 4.244e-05, 4.264e-05, 10538.4281029], [1516635660000, 4.255e-05, 4.264e-05, 4.244e-05, 4.244e-05, 446.07694365], [1516635720000, 4.25e-05, 4.25e-05, 4.209e-05, 4.219e-05, 46190.62450412], [1516635780000, 4.238e-05, 4.254e-05, 4.228e-05, 4.228e-05, 6568.66008806], [1516635840000, 4.228e-05, 4.229e-05, 4.228e-05, 4.228e-05, 1032.48823864], [1516635900000, 4.228e-05, 4.228e-05, 4.219e-05, 4.228e-05, 32010.02454302], [1516635960000, 4.228e-05, 4.228e-05, 4.219e-05, 4.219e-05, 10749.24502745], [1516636020000, 4.227e-05, 4.227e-05, 4.204e-05, 4.204e-05, 15609.58732871], [1516636080000, 4.206e-05, 4.219e-05, 4.169e-05, 4.169e-05, 123760.94087967], [1516636140000, 4.2e-05, 4.2e-05, 4.172e-05, 4.173e-05, 3301.19867649], [1516636200000, 4.168e-05, 4.196e-05, 4.168e-05, 4.174e-05, 32825.01989572], [1516636260000, 4.192e-05, 4.192e-05, 4.174e-05, 4.189e-05, 94254.53147963], [1516636320000, 4.189e-05, 4.192e-05, 4.174e-05, 4.18e-05, 187980.51742267], [1516636380000, 4.173e-05, 4.19e-05, 4.173e-05, 4.173e-05, 38816.47423611], [1516636440000, 4.188e-05, 4.194e-05, 4.167e-05, 4.167e-05, 35988.36369688], [1516636500000, 4.167e-05, 4.189e-05, 4.151e-05, 4.173e-05, 26754.97515399], [1516636560000, 4.151e-05, 4.172e-05, 4.13e-05, 4.172e-05, 29666.55781574], [1516636620000, 4.151e-05, 4.172e-05, 4.135e-05, 4.151e-05, 79290.32426488], [1516636680000, 4.151e-05, 4.18e-05, 4.112e-05, 4.179e-05, 68622.08441992], [1516636740000, 4.179e-05, 4.19e-05, 4.164e-05, 4.188e-05, 84301.54811958], [1516636800000, 4.185e-05, 4.218e-05, 4.185e-05, 4.218e-05, 95295.40080306], [1516636860000, 4.218e-05, 4.23e-05, 4.217e-05, 4.23e-05, 64441.25537995], [1516636920000, 4.221e-05, 4.231e-05, 4.219e-05, 4.219e-05, 35768.67657537], [1516636980000, 4.22e-05, 4.231e-05, 4.219e-05, 4.22e-05, 59248.59661213], [1516637040000, 4.22e-05, 4.238e-05, 4.22e-05, 4.221e-05, 48685.27037611], [1516637100000, 4.221e-05, 4.257e-05, 4.22e-05, 4.221e-05, 125709.42645326], [1516637160000, 4.221e-05, 4.249e-05, 4.219e-05, 4.219e-05, 29166.18254098], [1516637220000, 4.219e-05, 4.265e-05, 4.219e-05, 4.265e-05, 86030.83632538], [1516637280000, 4.225e-05, 4.269e-05, 4.224e-05, 4.23e-05, 55854.47016125], [1516637340000, 4.23e-05, 4.261e-05, 4.23e-05, 4.23e-05, 62750.32521774], [1516637400000, 4.23e-05, 4.259e-05, 4.23e-05, 4.259e-05, 60395.34640964], [1516637460000, 4.23e-05, 4.233e-05, 4.23e-05, 4.231e-05, 38213.72339067], [1516637520000, 4.231e-05, 4.233e-05, 4.231e-05, 4.231e-05, 3496.01520794], [1516637580000, 4.234e-05, 4.246e-05, 4.217e-05, 4.217e-05, 4079.7270868], [1516637640000, 4.233e-05, 4.233e-05, 4.218e-05, 4.218e-05, 557.41767059], [1516637700000, 4.232e-05, 4.232e-05, 4.217e-05, 4.232e-05, 1803.19667986], [1516637760000, 4.232e-05, 4.232e-05, 4.2e-05, 4.2e-05, 7030.17475265], [1516637820000, 4.23e-05, 4.23e-05, 4.193e-05, 4.229e-05, 112562.68294643], [1516637880000, 4.205e-05, 4.205e-05, 4.201e-05, 4.202e-05, 65488.7328158], [1516637940000, 4.203e-05, 4.232e-05, 4.203e-05, 4.232e-05, 6871.54428296], [1516638000000, 4.232e-05, 4.232e-05, 4.193e-05, 4.193e-05, 146898.48747879], [1516638060000, 4.211e-05, 4.232e-05, 4.179e-05, 4.232e-05, 162051.3306637], [1516638120000, 4.23e-05, 4.232e-05, 4.2e-05, 4.232e-05, 5278.66539913], [1516638180000, 4.232e-05, 4.232e-05, 4.211e-05, 4.232e-05, 3173.56384941], [1516638240000, 4.211e-05, 4.211e-05, 4.211e-05, 4.211e-05, 2401.88230365], [1516638300000, 4.232e-05, 4.232e-05, 4.212e-05, 4.226e-05, 7426.46496422], [1516638360000, 4.216e-05, 4.251e-05, 4.215e-05, 4.242e-05, 53949.84654693], [1516638420000, 4.246e-05, 4.273e-05, 4.246e-05, 4.26e-05, 69983.95913931], [1516638480000, 4.26e-05, 4.261e-05, 4.256e-05, 4.261e-05, 10689.19115836], [1516638540000, 4.261e-05, 4.269e-05, 4.255e-05, 4.255e-05, 38849.44980875], [1516638600000, 4.257e-05, 4.269e-05, 4.254e-05, 4.257e-05, 81348.85704322], [1516638660000, 4.263e-05, 4.268e-05, 4.257e-05, 4.268e-05, 32356.89562768], [1516638720000, 4.267e-05, 4.267e-05, 4.258e-05, 4.265e-05, 32854.30451516], [1516638780000, 4.265e-05, 4.269e-05, 4.26e-05, 4.268e-05, 24417.36440839], [1516638840000, 4.268e-05, 4.269e-05, 4.258e-05, 4.269e-05, 63607.60777061], [1516638900000, 4.27e-05, 4.277e-05, 4.267e-05, 4.277e-05, 11000.95125117], [1516638960000, 4.277e-05, 4.283e-05, 4.274e-05, 4.283e-05, 2472.74938173], [1516639020000, 4.283e-05, 4.289e-05, 4.274e-05, 4.285e-05, 53981.32135602], [1516639080000, 4.278e-05, 4.293e-05, 4.271e-05, 4.293e-05, 39628.92362633], [1516639140000, 4.272e-05, 4.292e-05, 4.272e-05, 4.292e-05, 1897.2203202], [1516639200000, 4.292e-05, 4.292e-05, 4.292e-05, 4.292e-05, 25.77750224], [1516639260000, 4.29e-05, 4.29e-05, 4.287e-05, 4.29e-05, 21455.7338988], [1516639320000, 4.287e-05, 4.289e-05, 4.287e-05, 4.287e-05, 3909.17754423], [1516639380000, 4.289e-05, 4.29e-05, 4.287e-05, 4.29e-05, 33139.40377857], [1516639440000, 4.29e-05, 4.293e-05, 4.29e-05, 4.293e-05, 21026.40696442], [1516639500000, 4.293e-05, 4.3e-05, 4.293e-05, 4.3e-05, 65375.22629443], [1516639560000, 4.305e-05, 4.315e-05, 4.3e-05, 4.305e-05, 19823.11199051], [1516639620000, 4.315e-05, 4.316e-05, 4.31e-05, 4.31e-05, 26361.28824432], [1516639680000, 4.315e-05, 4.318e-05, 4.298e-05, 4.301e-05, 38321.38023023], [1516639740000, 4.311e-05, 4.325e-05, 4.302e-05, 4.304e-05, 100002.7186696], [1516639800000, 4.32e-05, 4.323e-05, 4.305e-05, 4.307e-05, 175061.37242283], [1516639860000, 4.311e-05, 4.325e-05, 4.306e-05, 4.306e-05, 77749.30771079], [1516639920000, 4.308e-05, 4.326e-05, 4.297e-05, 4.298e-05, 65122.67218551], [1516639980000, 4.3e-05, 4.32e-05, 4.3e-05, 4.315e-05, 69032.26345118], [1516640040000, 4.311e-05, 4.311e-05, 4.299e-05, 4.305e-05, 77815.73361136], [1516640100000, 4.311e-05, 4.32e-05, 4.295e-05, 4.295e-05, 21561.31972008], [1516640160000, 4.295e-05, 4.306e-05, 4.293e-05, 4.293e-05, 5130.76298191], [1516640220000, 4.295e-05, 4.306e-05, 4.295e-05, 4.305e-05, 43462.74837222], [1516640280000, 4.305e-05, 4.305e-05, 4.292e-05, 4.3e-05, 8767.17578095], [1516640340000, 4.3e-05, 4.304e-05, 4.245e-05, 4.249e-05, 45277.28909877], [1516640400000, 4.285e-05, 4.285e-05, 4.283e-05, 4.284e-05, 12235.94323819], [1516640460000, 4.283e-05, 4.283e-05, 4.263e-05, 4.263e-05, 10684.48351263], [1516640520000, 4.263e-05, 4.293e-05, 4.263e-05, 4.292e-05, 13713.53125538], [1516640580000, 4.284e-05, 4.292e-05, 4.284e-05, 4.291e-05, 14628.56863464], [1516640640000, 4.292e-05, 4.296e-05, 4.29e-05, 4.296e-05, 6450.31469619], [1516640700000, 4.291e-05, 4.296e-05, 4.29e-05, 4.296e-05, 1819.18598464], [1516640760000, 4.296e-05, 4.303e-05, 4.296e-05, 4.303e-05, 19880.10508191], [1516640820000, 4.304e-05, 4.334e-05, 4.304e-05, 4.332e-05, 59805.74007951], [1516640880000, 4.332e-05, 4.332e-05, 4.316e-05, 4.32e-05, 21250.98639101], [1516640940000, 4.329e-05, 4.33e-05, 4.32e-05, 4.33e-05, 15042.01889539], [1516641000000, 4.321e-05, 4.332e-05, 4.32e-05, 4.332e-05, 14635.83189], [1516641060000, 4.321e-05, 4.332e-05, 4.32e-05, 4.32e-05, 7232.11679198], [1516641120000, 4.317e-05, 4.321e-05, 4.299e-05, 4.321e-05, 10293.57045916], [1516641180000, 4.321e-05, 4.324e-05, 4.301e-05, 4.324e-05, 11355.12995561], [1516641240000, 4.321e-05, 4.35e-05, 4.321e-05, 4.35e-05, 111798.47033382], [1516641300000, 4.35e-05, 4.36e-05, 4.35e-05, 4.36e-05, 1703.44116035], [1516641360000, 4.361e-05, 4.377e-05, 4.36e-05, 4.365e-05, 72436.07342718], [1516641420000, 4.361e-05, 4.373e-05, 4.361e-05, 4.365e-05, 12017.14438017], [1516641480000, 4.363e-05, 4.39e-05, 4.363e-05, 4.39e-05, 44644.15630979], [1516641540000, 4.39e-05, 4.414e-05, 4.39e-05, 4.401e-05, 76667.08032026], [1516641600000, 4.401e-05, 4.441e-05, 4.396e-05, 4.396e-05, 247488.68630623], [1516641660000, 4.397e-05, 4.4e-05, 4.391e-05, 4.396e-05, 18360.14752751], [1516641720000, 4.398e-05, 4.4e-05, 4.397e-05, 4.4e-05, 32337.81172624], [1516641780000, 4.398e-05, 4.4e-05, 4.397e-05, 4.397e-05, 64030.15680141], [1516641840000, 4.405e-05, 4.405e-05, 4.398e-05, 4.398e-05, 29313.57548086], [1516641900000, 4.399e-05, 4.399e-05, 4.397e-05, 4.397e-05, 13278.13524114], [1516641960000, 4.397e-05, 4.405e-05, 4.397e-05, 4.399e-05, 80200.70041075], [1516642020000, 4.404e-05, 4.418e-05, 4.397e-05, 4.4e-05, 78109.94470454], [1516642080000, 4.4e-05, 4.4e-05, 4.388e-05, 4.393e-05, 16652.40520251], [1516642140000, 4.389e-05, 4.403e-05, 4.382e-05, 4.399e-05, 162719.20046632], [1516642200000, 4.393e-05, 4.42e-05, 4.378e-05, 4.419e-05, 244452.51621092], [1516642260000, 4.419e-05, 4.42e-05, 4.379e-05, 4.408e-05, 62659.81764753], [1516642320000, 4.415e-05, 4.441e-05, 4.407e-05, 4.44e-05, 209475.69686454], [1516642380000, 4.441e-05, 4.441e-05, 4.422e-05, 4.422e-05, 60221.81479559], [1516642440000, 4.422e-05, 4.465e-05, 4.422e-05, 4.465e-05, 203997.70584777], [1516642500000, 4.466e-05, 4.474e-05, 4.465e-05, 4.471e-05, 68655.92554919], [1516642560000, 4.471e-05, 4.471e-05, 4.465e-05, 4.47e-05, 51519.48205641], [1516642620000, 4.466e-05, 4.489e-05, 4.465e-05, 4.489e-05, 103417.49612058], [1516642680000, 4.489e-05, 4.489e-05, 4.466e-05, 4.466e-05, 38547.46123673], [1516642740000, 4.48e-05, 4.487e-05, 4.466e-05, 4.48e-05, 26617.7667205], [1516642800000, 4.482e-05, 4.486e-05, 4.481e-05, 4.486e-05, 59153.52174512], [1516642860000, 4.486e-05, 4.488e-05, 4.461e-05, 4.465e-05, 51009.5000876], [1516642920000, 4.465e-05, 4.48e-05, 4.465e-05, 4.468e-05, 28109.86968236], [1516642980000, 4.47e-05, 4.47e-05, 4.461e-05, 4.461e-05, 29384.11587626], [1516643040000, 4.467e-05, 4.467e-05, 4.443e-05, 4.443e-05, 67329.73299732], [1516643100000, 4.446e-05, 4.446e-05, 4.427e-05, 4.443e-05, 67855.1995107], [1516643160000, 4.431e-05, 4.431e-05, 4.425e-05, 4.425e-05, 31790.80757338], [1516643220000, 4.425e-05, 4.43e-05, 4.425e-05, 4.426e-05, 67774.62367473], [1516643280000, 4.426e-05, 4.426e-05, 4.42e-05, 4.421e-05, 73832.43917679], [1516643340000, 4.422e-05, 4.425e-05, 4.379e-05, 4.41e-05, 282605.05845411], [1516643400000, 4.414e-05, 4.417e-05, 4.388e-05, 4.417e-05, 49894.2254856], [1516643460000, 4.413e-05, 4.413e-05, 4.378e-05, 4.378e-05, 52579.4319537], [1516643520000, 4.403e-05, 4.413e-05, 4.372e-05, 4.398e-05, 59268.88787851], [1516643580000, 4.375e-05, 4.396e-05, 4.375e-05, 4.378e-05, 3205.7362701], [1516643640000, 4.378e-05, 4.395e-05, 4.378e-05, 4.381e-05, 37598.66643877], [1516643700000, 4.381e-05, 4.381e-05, 4.372e-05, 4.378e-05, 60568.69229296], [1516643760000, 4.381e-05, 4.381e-05, 4.358e-05, 4.36e-05, 53253.42321175], [1516643820000, 4.36e-05, 4.381e-05, 4.358e-05, 4.378e-05, 64074.78456519], [1516643880000, 4.378e-05, 4.381e-05, 4.351e-05, 4.366e-05, 7383.88308209], [1516643940000, 4.377e-05, 4.394e-05, 4.368e-05, 4.394e-05, 25571.7282704], [1516644000000, 4.394e-05, 4.394e-05, 4.382e-05, 4.394e-05, 51153.05701398], [1516644060000, 4.394e-05, 4.394e-05, 4.382e-05, 4.385e-05, 81554.34426183], [1516644120000, 4.386e-05, 4.393e-05, 4.349e-05, 4.352e-05, 176118.89322502], [1516644180000, 4.352e-05, 4.377e-05, 4.349e-05, 4.365e-05, 120350.27525286], [1516644240000, 4.365e-05, 4.365e-05, 4.35e-05, 4.355e-05, 11575.71090004], [1516644300000, 4.351e-05, 4.351e-05, 4.35e-05, 4.35e-05, 7038.84015479], [1516644360000, 4.347e-05, 4.347e-05, 4.344e-05, 4.344e-05, 1978.42161331], [1516644420000, 4.344e-05, 4.344e-05, 4.338e-05, 4.338e-05, 17895.50524879], [1516644480000, 4.338e-05, 4.339e-05, 4.338e-05, 4.338e-05, 42103.48239934], [1516644540000, 4.338e-05, 4.382e-05, 4.337e-05, 4.364e-05, 48427.08217], [1516644600000, 4.366e-05, 4.385e-05, 4.364e-05, 4.385e-05, 41222.42525777], [1516644660000, 4.379e-05, 4.39e-05, 4.371e-05, 4.374e-05, 15626.2366985], [1516644720000, 4.374e-05, 4.39e-05, 4.374e-05, 4.375e-05, 47555.6252566], [1516644780000, 4.375e-05, 4.4e-05, 4.374e-05, 4.4e-05, 164731.8637727], [1516644840000, 4.391e-05, 4.409e-05, 4.374e-05, 4.409e-05, 17755.660711], [1516644900000, 4.391e-05, 4.404e-05, 4.377e-05, 4.404e-05, 33096.97577909], [1516644960000, 4.4e-05, 4.4e-05, 4.385e-05, 4.385e-05, 7198.42243244], [1516645020000, 4.393e-05, 4.4e-05, 4.385e-05, 4.393e-05, 9165.34880352], [1516645080000, 4.393e-05, 4.393e-05, 4.381e-05, 4.384e-05, 1615.64722544], [1516645140000, 4.389e-05, 4.417e-05, 4.381e-05, 4.39e-05, 187434.3263661], [1516645200000, 4.39e-05, 4.405e-05, 4.39e-05, 4.391e-05, 14568.90306011], [1516645260000, 4.391e-05, 4.404e-05, 4.388e-05, 4.388e-05, 15438.88935519], [1516645320000, 4.391e-05, 4.391e-05, 4.378e-05, 4.391e-05, 19264.04630097], [1516645380000, 4.399e-05, 4.424e-05, 4.38e-05, 4.405e-05, 210192.04561893], [1516645440000, 4.422e-05, 4.422e-05, 4.405e-05, 4.405e-05, 100601.35628793], [1516645500000, 4.405e-05, 4.426e-05, 4.405e-05, 4.421e-05, 40028.10723833], [1516645560000, 4.421e-05, 4.426e-05, 4.421e-05, 4.425e-05, 3630.07769443], [1516645620000, 4.425e-05, 4.429e-05, 4.425e-05, 4.428e-05, 7603.37682306], [1516645680000, 4.43e-05, 4.43e-05, 4.425e-05, 4.429e-05, 23145.55060295], [1516645740000, 4.429e-05, 4.435e-05, 4.429e-05, 4.435e-05, 20264.16773971], [1516645800000, 4.435e-05, 4.443e-05, 4.435e-05, 4.443e-05, 22685.14107318], [1516645860000, 4.443e-05, 4.443e-05, 4.435e-05, 4.435e-05, 36292.53075029], [1516645920000, 4.44e-05, 4.44e-05, 4.43e-05, 4.43e-05, 27659.61453958], [1516645980000, 4.43e-05, 4.43e-05, 4.402e-05, 4.421e-05, 30091.69914358], [1516646040000, 4.421e-05, 4.421e-05, 4.42e-05, 4.42e-05, 5375.91470721], [1516646100000, 4.42e-05, 4.47e-05, 4.409e-05, 4.47e-05, 97099.3280753], [1516646160000, 4.47e-05, 4.499e-05, 4.423e-05, 4.499e-05, 174724.98000641], [1516646220000, 4.484e-05, 4.499e-05, 4.454e-05, 4.475e-05, 146382.91475238], [1516646280000, 4.475e-05, 4.489e-05, 4.43e-05, 4.453e-05, 83418.17242523], [1516646340000, 4.479e-05, 4.49e-05, 4.443e-05, 4.48e-05, 98505.84758097], [1516646400000, 4.479e-05, 4.479e-05, 4.447e-05, 4.447e-05, 45304.51732178], [1516646460000, 4.461e-05, 4.461e-05, 4.447e-05, 4.447e-05, 3262.84379067], [1516646520000, 4.459e-05, 4.483e-05, 4.448e-05, 4.482e-05, 44528.68241756], [1516646580000, 4.483e-05, 4.49e-05, 4.459e-05, 4.459e-05, 29315.38933476], [1516646640000, 4.459e-05, 4.473e-05, 4.459e-05, 4.459e-05, 15105.47900221], [1516646700000, 4.455e-05, 4.455e-05, 4.423e-05, 4.449e-05, 56670.60098194], [1516646760000, 4.449e-05, 4.449e-05, 4.422e-05, 4.422e-05, 51636.01624683], [1516646820000, 4.422e-05, 4.45e-05, 4.415e-05, 4.435e-05, 15177.41416041], [1516646880000, 4.435e-05, 4.435e-05, 4.42e-05, 4.434e-05, 10447.03303976], [1516646940000, 4.423e-05, 4.434e-05, 4.42e-05, 4.42e-05, 32364.76297592], [1516647000000, 4.42e-05, 4.423e-05, 4.412e-05, 4.416e-05, 5793.2175728], [1516647060000, 4.42e-05, 4.42e-05, 4.416e-05, 4.416e-05, 4561.85034828], [1516647120000, 4.42e-05, 4.42e-05, 4.416e-05, 4.417e-05, 27070.0539667], [1516647180000, 4.416e-05, 4.42e-05, 4.416e-05, 4.416e-05, 22944.70407203], [1516647240000, 4.417e-05, 4.432e-05, 4.416e-05, 4.416e-05, 11303.70837886], [1516647300000, 4.433e-05, 4.446e-05, 4.42e-05, 4.432e-05, 10562.81692565], [1516647360000, 4.432e-05, 4.445e-05, 4.432e-05, 4.432e-05, 9726.73193893], [1516647420000, 4.432e-05, 4.432e-05, 4.42e-05, 4.42e-05, 40240.81743552], [1516647480000, 4.42e-05, 4.432e-05, 4.42e-05, 4.431e-05, 16197.18754294], [1516647540000, 4.43e-05, 4.432e-05, 4.422e-05, 4.424e-05, 15250.77095475], [1516647600000, 4.427e-05, 4.432e-05, 4.427e-05, 4.432e-05, 34476.72351835], [1516647660000, 4.432e-05, 4.439e-05, 4.428e-05, 4.43e-05, 18190.11050953], [1516647720000, 4.43e-05, 4.444e-05, 4.423e-05, 4.423e-05, 42035.45584526], [1516647780000, 4.424e-05, 4.45e-05, 4.421e-05, 4.45e-05, 125221.6500028], [1516647840000, 4.425e-05, 4.425e-05, 4.411e-05, 4.42e-05, 14816.22679148], [1516647900000, 4.42e-05, 4.421e-05, 4.415e-05, 4.421e-05, 10636.8111839], [1516647960000, 4.439e-05, 4.44e-05, 4.422e-05, 4.426e-05, 15377.7480791], [1516648020000, 4.437e-05, 4.437e-05, 4.426e-05, 4.43e-05, 6392.46383238], [1516648080000, 4.434e-05, 4.442e-05, 4.425e-05, 4.425e-05, 35074.16246749], [1516648140000, 4.425e-05, 4.43e-05, 4.425e-05, 4.429e-05, 11414.78704269], [1516648200000, 4.429e-05, 4.429e-05, 4.425e-05, 4.425e-05, 23991.81173158], [1516648260000, 4.429e-05, 4.429e-05, 4.425e-05, 4.425e-05, 9913.62723079], [1516648320000, 4.425e-05, 4.429e-05, 4.425e-05, 4.429e-05, 34020.2875015], [1516648380000, 4.427e-05, 4.427e-05, 4.426e-05, 4.427e-05, 19352.56878325], [1516648440000, 4.429e-05, 4.433e-05, 4.427e-05, 4.427e-05, 1966.09208139], [1516648500000, 4.429e-05, 4.431e-05, 4.421e-05, 4.421e-05, 73369.13012455], [1516648560000, 4.421e-05, 4.424e-05, 4.404e-05, 4.405e-05, 29090.95081331], [1516648620000, 4.405e-05, 4.419e-05, 4.405e-05, 4.419e-05, 6622.33915105], [1516648680000, 4.41e-05, 4.418e-05, 4.41e-05, 4.411e-05, 6763.70488543], [1516648740000, 4.411e-05, 4.421e-05, 4.41e-05, 4.411e-05, 61675.32415263], [1516648800000, 4.42e-05, 4.424e-05, 4.411e-05, 4.413e-05, 44909.33291115], [1516648860000, 4.414e-05, 4.423e-05, 4.414e-05, 4.422e-05, 30599.92480562], [1516648920000, 4.422e-05, 4.422e-05, 4.412e-05, 4.422e-05, 29596.13172318], [1516648980000, 4.411e-05, 4.422e-05, 4.4e-05, 4.411e-05, 37435.01523687], [1516649040000, 4.411e-05, 4.42e-05, 4.394e-05, 4.409e-05, 34281.79645146], [1516649100000, 4.409e-05, 4.419e-05, 4.388e-05, 4.401e-05, 10795.47289352], [1516649160000, 4.401e-05, 4.417e-05, 4.401e-05, 4.403e-05, 11739.16587039], [1516649220000, 4.403e-05, 4.418e-05, 4.403e-05, 4.404e-05, 47150.69767028], [1516649280000, 4.412e-05, 4.412e-05, 4.404e-05, 4.412e-05, 1683.76068376], [1516649340000, 4.406e-05, 4.406e-05, 4.403e-05, 4.403e-05, 26175.33404702], [1516649400000, 4.4e-05, 4.4e-05, 4.391e-05, 4.4e-05, 8338.1280757], [1516649460000, 4.391e-05, 4.391e-05, 4.381e-05, 4.385e-05, 9651.26139273], [1516649520000, 4.381e-05, 4.385e-05, 4.361e-05, 4.377e-05, 23705.3017731], [1516649580000, 4.361e-05, 4.378e-05, 4.36e-05, 4.36e-05, 130132.1133548], [1516649640000, 4.365e-05, 4.365e-05, 4.36e-05, 4.365e-05, 22363.74620572], [1516649700000, 4.376e-05, 4.376e-05, 4.365e-05, 4.365e-05, 6215.96807245], [1516649760000, 4.365e-05, 4.378e-05, 4.36e-05, 4.375e-05, 8701.17567755], [1516649820000, 4.375e-05, 4.378e-05, 4.375e-05, 4.377e-05, 6253.08401114], [1516649880000, 4.377e-05, 4.377e-05, 4.375e-05, 4.377e-05, 7600.88540771], [1516649940000, 4.376e-05, 4.402e-05, 4.375e-05, 4.402e-05, 70952.91439502], [1516650000000, 4.398e-05, 4.398e-05, 4.369e-05, 4.371e-05, 11609.99851137], [1516650060000, 4.389e-05, 4.389e-05, 4.377e-05, 4.377e-05, 25964.00068182], [1516650120000, 4.38e-05, 4.38e-05, 4.377e-05, 4.377e-05, 24124.7651173], [1516650180000, 4.396e-05, 4.396e-05, 4.377e-05, 4.395e-05, 6723.02786501], [1516650240000, 4.381e-05, 4.396e-05, 4.377e-05, 4.38e-05, 7648.88200682], [1516650300000, 4.381e-05, 4.383e-05, 4.381e-05, 4.383e-05, 3298.39606242], [1516650360000, 4.385e-05, 4.391e-05, 4.383e-05, 4.385e-05, 8601.27970365], [1516650420000, 4.384e-05, 4.395e-05, 4.384e-05, 4.391e-05, 3946.95994188], [1516650480000, 4.391e-05, 4.395e-05, 4.384e-05, 4.395e-05, 23621.86204398], [1516650540000, 4.395e-05, 4.396e-05, 4.395e-05, 4.396e-05, 13997.01174939], [1516650600000, 4.396e-05, 4.401e-05, 4.395e-05, 4.396e-05, 23061.14043819], [1516650660000, 4.4e-05, 4.401e-05, 4.391e-05, 4.391e-05, 31887.07101688], [1516650720000, 4.395e-05, 4.398e-05, 4.391e-05, 4.391e-05, 17387.58249817], [1516650780000, 4.391e-05, 4.394e-05, 4.381e-05, 4.394e-05, 18871.53550334], [1516650840000, 4.394e-05, 4.394e-05, 4.394e-05, 4.394e-05, 2996.28770125], [1516650900000, 4.394e-05, 4.394e-05, 4.379e-05, 4.379e-05, 13504.91097048], [1516650960000, 4.38e-05, 4.38e-05, 4.38e-05, 4.38e-05, 14967.5352563], [1516651020000, 4.39e-05, 4.391e-05, 4.39e-05, 4.39e-05, 827.97588588], [1516651080000, 4.39e-05, 4.39e-05, 4.38e-05, 4.38e-05, 1299.48308197], [1516651140000, 4.38e-05, 4.389e-05, 4.38e-05, 4.38e-05, 11733.67842797], [1516651200000, 4.38e-05, 4.385e-05, 4.38e-05, 4.38e-05, 18557.09907366], [1516651260000, 4.379e-05, 4.379e-05, 4.377e-05, 4.377e-05, 10796.76125997], [1516651320000, 4.377e-05, 4.379e-05, 4.365e-05, 4.378e-05, 4104.89674475], [1516651380000, 4.366e-05, 4.378e-05, 4.365e-05, 4.378e-05, 1321.58507217], [1516651440000, 4.378e-05, 4.378e-05, 4.378e-05, 4.378e-05, 1178.04583789], [1516651500000, 4.378e-05, 4.39e-05, 4.377e-05, 4.39e-05, 74955.47263301], [1516651560000, 4.378e-05, 4.378e-05, 4.377e-05, 4.377e-05, 7888.81987375], [1516651620000, 4.378e-05, 4.391e-05, 4.377e-05, 4.391e-05, 8285.96174804], [1516651680000, 4.378e-05, 4.39e-05, 4.377e-05, 4.377e-05, 28130.38821791], [1516651740000, 4.378e-05, 4.39e-05, 4.377e-05, 4.39e-05, 14891.63144336], [1516651800000, 4.39e-05, 4.39e-05, 4.378e-05, 4.378e-05, 29239.26775228], [1516651860000, 4.385e-05, 4.387e-05, 4.378e-05, 4.385e-05, 5180.27824058], [1516651920000, 4.385e-05, 4.391e-05, 4.385e-05, 4.386e-05, 44175.76459176], [1516651980000, 4.387e-05, 4.387e-05, 4.365e-05, 4.365e-05, 11581.98209462], [1516652040000, 4.378e-05, 4.389e-05, 4.365e-05, 4.389e-05, 28980.20773955], [1516652100000, 4.391e-05, 4.391e-05, 4.365e-05, 4.366e-05, 20987.84984382], [1516652160000, 4.389e-05, 4.39e-05, 4.365e-05, 4.39e-05, 30281.69707897], [1516652220000, 4.385e-05, 4.385e-05, 4.38e-05, 4.384e-05, 23147.71484714], [1516652280000, 4.389e-05, 4.391e-05, 4.361e-05, 4.388e-05, 21108.32123982], [1516652340000, 4.387e-05, 4.387e-05, 4.386e-05, 4.386e-05, 11107.59911981], [1516652400000, 4.362e-05, 4.368e-05, 4.362e-05, 4.368e-05, 100.24038462], [1516652460000, 4.368e-05, 4.389e-05, 4.368e-05, 4.387e-05, 10748.4298973], [1516652520000, 4.387e-05, 4.387e-05, 4.368e-05, 4.37e-05, 18317.12988163], [1516652580000, 4.37e-05, 4.37e-05, 4.368e-05, 4.37e-05, 21950.92378602], [1516652640000, 4.368e-05, 4.37e-05, 4.368e-05, 4.37e-05, 4623.10597429], [1516652700000, 4.368e-05, 4.368e-05, 4.357e-05, 4.357e-05, 34130.62975714], [1516652760000, 4.368e-05, 4.368e-05, 4.357e-05, 4.368e-05, 41090.66962504], [1516652820000, 4.368e-05, 4.37e-05, 4.35e-05, 4.35e-05, 64566.46319018], [1516652880000, 4.35e-05, 4.37e-05, 4.325e-05, 4.325e-05, 57093.62446287], [1516652940000, 4.346e-05, 4.369e-05, 4.346e-05, 4.368e-05, 11333.1210014], [1516653000000, 4.368e-05, 4.37e-05, 4.333e-05, 4.368e-05, 35607.90677461], [1516653060000, 4.341e-05, 4.343e-05, 4.341e-05, 4.343e-05, 2106.88663314], [1516653120000, 4.37e-05, 4.37e-05, 4.343e-05, 4.367e-05, 7467.9196571], [1516653180000, 4.355e-05, 4.367e-05, 4.343e-05, 4.345e-05, 4740.13520339], [1516653240000, 4.345e-05, 4.37e-05, 4.345e-05, 4.37e-05, 16283.89347507], [1516653300000, 4.37e-05, 4.375e-05, 4.348e-05, 4.358e-05, 8310.24215916], [1516653360000, 4.355e-05, 4.374e-05, 4.349e-05, 4.373e-05, 36204.11399537], [1516653420000, 4.373e-05, 4.373e-05, 4.346e-05, 4.352e-05, 13409.88310801], [1516653480000, 4.354e-05, 4.354e-05, 4.345e-05, 4.345e-05, 3767.53700998], [1516653540000, 4.354e-05, 4.375e-05, 4.346e-05, 4.346e-05, 7911.95130174], [1516653600000, 4.346e-05, 4.377e-05, 4.346e-05, 4.374e-05, 47061.94260323], [1516653660000, 4.35e-05, 4.369e-05, 4.35e-05, 4.35e-05, 12225.61766954], [1516653720000, 4.353e-05, 4.355e-05, 4.33e-05, 4.355e-05, 6593.22589306], [1516653780000, 4.355e-05, 4.363e-05, 4.355e-05, 4.355e-05, 10445.52961133], [1516653840000, 4.355e-05, 4.36e-05, 4.355e-05, 4.36e-05, 12135.98655661], [1516653900000, 4.357e-05, 4.363e-05, 4.357e-05, 4.36e-05, 15402.09222768], [1516653960000, 4.362e-05, 4.363e-05, 4.355e-05, 4.363e-05, 46733.82395213], [1516654020000, 4.355e-05, 4.365e-05, 4.355e-05, 4.355e-05, 8756.68968614], [1516654080000, 4.366e-05, 4.366e-05, 4.355e-05, 4.355e-05, 691.94726749], [1516654140000, 4.366e-05, 4.366e-05, 4.355e-05, 4.365e-05, 3592.43572477], [1516654200000, 4.365e-05, 4.366e-05, 4.355e-05, 4.366e-05, 21507.82756838], [1516654260000, 4.366e-05, 4.377e-05, 4.366e-05, 4.366e-05, 5563.84390805], [1516654320000, 4.366e-05, 4.376e-05, 4.355e-05, 4.355e-05, 9346.96668633], [1516654380000, 4.355e-05, 4.37e-05, 4.355e-05, 4.355e-05, 1318.23430811], [1516654440000, 4.366e-05, 4.366e-05, 4.355e-05, 4.355e-05, 350.56767591], [1516654500000, 4.355e-05, 4.36e-05, 4.355e-05, 4.36e-05, 19366.93413138], [1516654560000, 4.366e-05, 4.366e-05, 4.366e-05, 4.366e-05, 2077.57704655], [1516654620000, 4.366e-05, 4.366e-05, 4.36e-05, 4.36e-05, 4145.49843802], [1516654680000, 4.366e-05, 4.366e-05, 4.36e-05, 4.362e-05, 11493.27524216], [1516654740000, 4.362e-05, 4.362e-05, 4.362e-05, 4.362e-05, 25.27510316], [1516654800000, 4.363e-05, 4.365e-05, 4.363e-05, 4.365e-05, 13010.6673898], [1516654860000, 4.363e-05, 4.366e-05, 4.362e-05, 4.366e-05, 21700.56761642], [1516654920000, 4.362e-05, 4.37e-05, 4.362e-05, 4.37e-05, 982.04687733], [1516654980000, 4.37e-05, 4.375e-05, 4.369e-05, 4.374e-05, 5244.93778381], [1516655040000, 4.374e-05, 4.374e-05, 4.369e-05, 4.369e-05, 17017.87380052], [1516655100000, 4.369e-05, 4.375e-05, 4.363e-05, 4.363e-05, 5353.68656978], [1516655160000, 4.363e-05, 4.375e-05, 4.362e-05, 4.375e-05, 12316.23377086], [1516655220000, 4.363e-05, 4.371e-05, 4.329e-05, 4.362e-05, 54395.71142462], [1516655280000, 4.362e-05, 4.362e-05, 4.302e-05, 4.305e-05, 190656.89890263], [1516655340000, 4.334e-05, 4.352e-05, 4.331e-05, 4.349e-05, 11190.91368163], [1516655400000, 4.34e-05, 4.34e-05, 4.311e-05, 4.337e-05, 7702.047394], [1516655460000, 4.318e-05, 4.337e-05, 4.312e-05, 4.318e-05, 6436.31701649], [1516655520000, 4.318e-05, 4.318e-05, 4.312e-05, 4.317e-05, 24634.89322467], [1516655580000, 4.312e-05, 4.317e-05, 4.306e-05, 4.312e-05, 37105.57573931], [1516655640000, 4.312e-05, 4.312e-05, 4.31e-05, 4.312e-05, 67605.33795379], [1516655700000, 4.312e-05, 4.312e-05, 4.306e-05, 4.31e-05, 27995.18476709], [1516655760000, 4.306e-05, 4.329e-05, 4.306e-05, 4.329e-05, 31806.15738641], [1516655820000, 4.31e-05, 4.328e-05, 4.306e-05, 4.306e-05, 22088.68628058], [1516655880000, 4.305e-05, 4.306e-05, 4.3e-05, 4.3e-05, 44678.07537702], [1516655940000, 4.3e-05, 4.3e-05, 4.291e-05, 4.291e-05, 14883.19423854], [1516656000000, 4.291e-05, 4.291e-05, 4.29e-05, 4.29e-05, 13678.02855732], [1516656060000, 4.288e-05, 4.288e-05, 4.284e-05, 4.288e-05, 49981.60015748], [1516656120000, 4.287e-05, 4.31e-05, 4.284e-05, 4.31e-05, 95872.71924751], [1516656180000, 4.31e-05, 4.31e-05, 4.295e-05, 4.295e-05, 4885.73236546], [1516656240000, 4.295e-05, 4.309e-05, 4.284e-05, 4.308e-05, 63818.75249241], [1516656300000, 4.308e-05, 4.365e-05, 4.284e-05, 4.365e-05, 70982.51331589], [1516656360000, 4.323e-05, 4.361e-05, 4.295e-05, 4.3e-05, 6758.36087867], [1516656420000, 4.3e-05, 4.333e-05, 4.3e-05, 4.326e-05, 21782.79046481], [1516656480000, 4.344e-05, 4.346e-05, 4.325e-05, 4.346e-05, 55073.66313429], [1516656540000, 4.346e-05, 4.347e-05, 4.345e-05, 4.345e-05, 51715.52705252], [1516656600000, 4.346e-05, 4.368e-05, 4.345e-05, 4.345e-05, 55878.06021341], [1516656660000, 4.345e-05, 4.35e-05, 4.34e-05, 4.34e-05, 24974.43866246], [1516656720000, 4.344e-05, 4.344e-05, 4.305e-05, 4.33e-05, 9993.33624559], [1516656780000, 4.33e-05, 4.33e-05, 4.303e-05, 4.327e-05, 14570.98350281], [1516656840000, 4.3e-05, 4.325e-05, 4.296e-05, 4.297e-05, 13669.18276305], [1516656900000, 4.302e-05, 4.319e-05, 4.302e-05, 4.306e-05, 10808.96814941], [1516656960000, 4.319e-05, 4.33e-05, 4.307e-05, 4.33e-05, 19592.87711348], [1516657020000, 4.324e-05, 4.324e-05, 4.313e-05, 4.32e-05, 21198.71395783], [1516657080000, 4.319e-05, 4.319e-05, 4.31e-05, 4.31e-05, 16505.0169684], [1516657140000, 4.31e-05, 4.313e-05, 4.277e-05, 4.313e-05, 32568.06161162], [1516657200000, 4.313e-05, 4.319e-05, 4.276e-05, 4.319e-05, 65152.05748608], [1516657260000, 4.315e-05, 4.316e-05, 4.27e-05, 4.27e-05, 85234.74498249], [1516657320000, 4.307e-05, 4.307e-05, 4.28e-05, 4.28e-05, 7571.11456542], [1516657380000, 4.28e-05, 4.303e-05, 4.27e-05, 4.28e-05, 155548.40648105], [1516657440000, 4.27e-05, 4.28e-05, 4.26e-05, 4.271e-05, 50258.87296272], [1516657500000, 4.271e-05, 4.28e-05, 4.265e-05, 4.27e-05, 18462.14211612], [1516657560000, 4.269e-05, 4.269e-05, 4.265e-05, 4.269e-05, 61268.98611181], [1516657620000, 4.27e-05, 4.27e-05, 4.26e-05, 4.26e-05, 37674.94650818], [1516657680000, 4.26e-05, 4.28e-05, 4.26e-05, 4.267e-05, 45934.40323726], [1516657740000, 4.267e-05, 4.279e-05, 4.257e-05, 4.26e-05, 53885.22662135], [1516657800000, 4.257e-05, 4.265e-05, 4.256e-05, 4.261e-05, 44524.11252575], [1516657860000, 4.256e-05, 4.261e-05, 4.253e-05, 4.26e-05, 39121.79682995], [1516657920000, 4.253e-05, 4.265e-05, 4.252e-05, 4.265e-05, 6593.02352693], [1516657980000, 4.265e-05, 4.265e-05, 4.242e-05, 4.242e-05, 67671.85819534], [1516658040000, 4.245e-05, 4.265e-05, 4.241e-05, 4.265e-05, 81364.70314778], [1516658100000, 4.265e-05, 4.291e-05, 4.265e-05, 4.291e-05, 35371.27948376], [1516658160000, 4.291e-05, 4.291e-05, 4.289e-05, 4.29e-05, 6249.03179115], [1516658220000, 4.29e-05, 4.305e-05, 4.289e-05, 4.29e-05, 33682.62919107], [1516658280000, 4.305e-05, 4.309e-05, 4.305e-05, 4.309e-05, 3445.08872987], [1516658340000, 4.308e-05, 4.308e-05, 4.3e-05, 4.308e-05, 13183.90071829], [1516658400000, 4.301e-05, 4.309e-05, 4.3e-05, 4.309e-05, 37646.52374324], [1516658460000, 4.301e-05, 4.319e-05, 4.301e-05, 4.319e-05, 8310.94812711], [1516658520000, 4.307e-05, 4.323e-05, 4.307e-05, 4.322e-05, 35810.65717195], [1516658580000, 4.322e-05, 4.323e-05, 4.313e-05, 4.323e-05, 4785.05952832], [1516658640000, 4.324e-05, 4.324e-05, 4.319e-05, 4.324e-05, 10872.0068564], [1516658700000, 4.324e-05, 4.326e-05, 4.32e-05, 4.322e-05, 24356.67485454], [1516658760000, 4.326e-05, 4.328e-05, 4.319e-05, 4.328e-05, 15594.93587447], [1516658820000, 4.328e-05, 4.37e-05, 4.327e-05, 4.364e-05, 93275.95083074], [1516658880000, 4.369e-05, 4.376e-05, 4.33e-05, 4.367e-05, 74269.35535946], [1516658940000, 4.345e-05, 4.367e-05, 4.342e-05, 4.346e-05, 114583.21745579], [1516659000000, 4.345e-05, 4.389e-05, 4.343e-05, 4.376e-05, 375304.25281867], [1516659060000, 4.386e-05, 4.389e-05, 4.347e-05, 4.368e-05, 44323.56068552], [1516659120000, 4.387e-05, 4.399e-05, 4.368e-05, 4.389e-05, 210612.69600323], [1516659180000, 4.391e-05, 4.399e-05, 4.369e-05, 4.369e-05, 74063.93610892], [1516659240000, 4.369e-05, 4.369e-05, 4.363e-05, 4.364e-05, 35487.17505112], [1516659300000, 4.364e-05, 4.399e-05, 4.364e-05, 4.37e-05, 28307.52483615], [1516659360000, 4.367e-05, 4.401e-05, 4.367e-05, 4.382e-05, 14909.2522404], [1516659420000, 4.4e-05, 4.401e-05, 4.364e-05, 4.398e-05, 31543.83061043], [1516659480000, 4.396e-05, 4.396e-05, 4.377e-05, 4.377e-05, 1628.46749249], [1516659540000, 4.395e-05, 4.395e-05, 4.367e-05, 4.389e-05, 2063.78300899], [1516659600000, 4.389e-05, 4.392e-05, 4.389e-05, 4.389e-05, 25154.51867424], [1516659660000, 4.389e-05, 4.39e-05, 4.389e-05, 4.39e-05, 2663.0813698], [1516659720000, 4.391e-05, 4.391e-05, 4.39e-05, 4.391e-05, 9982.15743736], [1516659780000, 4.391e-05, 4.392e-05, 4.389e-05, 4.392e-05, 5752.01944722], [1516659840000, 4.391e-05, 4.392e-05, 4.391e-05, 4.392e-05, 9388.57674993], [1516659900000, 4.392e-05, 4.402e-05, 4.391e-05, 4.402e-05, 45948.30756017], [1516659960000, 4.401e-05, 4.402e-05, 4.394e-05, 4.395e-05, 16970.05338416], [1516660020000, 4.397e-05, 4.405e-05, 4.397e-05, 4.397e-05, 8280.76477255], [1516660080000, 4.398e-05, 4.41e-05, 4.398e-05, 4.41e-05, 7029.1494922], [1516660140000, 4.41e-05, 4.456e-05, 4.41e-05, 4.456e-05, 253645.40337427], [1516660200000, 4.456e-05, 4.463e-05, 4.45e-05, 4.45e-05, 57916.9633309], [1516660260000, 4.45e-05, 4.463e-05, 4.438e-05, 4.455e-05, 152067.55052409], [1516660320000, 4.464e-05, 4.465e-05, 4.438e-05, 4.438e-05, 113785.49848222], [1516660380000, 4.439e-05, 4.474e-05, 4.412e-05, 4.469e-05, 337995.93050336], [1516660440000, 4.471e-05, 4.488e-05, 4.427e-05, 4.466e-05, 114960.59305862], [1516660500000, 4.466e-05, 4.479e-05, 4.465e-05, 4.465e-05, 10573.28321648], [1516660560000, 4.465e-05, 4.477e-05, 4.465e-05, 4.477e-05, 17386.79858784], [1516660620000, 4.477e-05, 4.488e-05, 4.465e-05, 4.487e-05, 86337.50623167], [1516660680000, 4.487e-05, 4.494e-05, 4.477e-05, 4.488e-05, 55494.34216027], [1516660740000, 4.48e-05, 4.496e-05, 4.477e-05, 4.488e-05, 55583.07680724], [1516660800000, 4.487e-05, 4.488e-05, 4.477e-05, 4.487e-05, 32158.39545415], [1516660860000, 4.487e-05, 4.488e-05, 4.443e-05, 4.478e-05, 37053.60034403], [1516660920000, 4.479e-05, 4.485e-05, 4.478e-05, 4.483e-05, 5922.23967956], [1516660980000, 4.483e-05, 4.485e-05, 4.479e-05, 4.482e-05, 6829.03740071], [1516661040000, 4.482e-05, 4.482e-05, 4.443e-05, 4.454e-05, 27903.68079251], [1516661100000, 4.472e-05, 4.478e-05, 4.443e-05, 4.475e-05, 130097.47267536], [1516661160000, 4.476e-05, 4.478e-05, 4.458e-05, 4.478e-05, 45037.37969365], [1516661220000, 4.478e-05, 4.478e-05, 4.458e-05, 4.473e-05, 24319.48357132], [1516661280000, 4.47e-05, 4.481e-05, 4.46e-05, 4.465e-05, 80397.21213666], [1516661340000, 4.469e-05, 4.491e-05, 4.465e-05, 4.487e-05, 215205.91830383], [1516661400000, 4.49e-05, 4.499e-05, 4.462e-05, 4.498e-05, 184911.53543946], [1516661460000, 4.498e-05, 4.521e-05, 4.482e-05, 4.519e-05, 384637.7079203], [1516661520000, 4.516e-05, 4.524e-05, 4.5e-05, 4.503e-05, 56164.27301716], [1516661580000, 4.503e-05, 4.515e-05, 4.503e-05, 4.505e-05, 28494.61076987], [1516661640000, 4.505e-05, 4.525e-05, 4.487e-05, 4.487e-05, 100695.22438506], [1516661700000, 4.499e-05, 4.5e-05, 4.49e-05, 4.49e-05, 19807.68306277], [1516661760000, 4.49e-05, 4.499e-05, 4.484e-05, 4.485e-05, 56764.21343681], [1516661820000, 4.485e-05, 4.498e-05, 4.48e-05, 4.495e-05, 65386.43928502], [1516661880000, 4.495e-05, 4.495e-05, 4.485e-05, 4.495e-05, 13450.95424617], [1516661940000, 4.495e-05, 4.495e-05, 4.485e-05, 4.486e-05, 1872.90280878], [1516662000000, 4.486e-05, 4.495e-05, 4.47e-05, 4.495e-05, 35389.64254531], [1516662060000, 4.485e-05, 4.495e-05, 4.485e-05, 4.485e-05, 5618.45270777], [1516662120000, 4.493e-05, 4.494e-05, 4.485e-05, 4.494e-05, 42973.7058441], [1516662180000, 4.493e-05, 4.507e-05, 4.489e-05, 4.507e-05, 47036.4611046], [1516662240000, 4.489e-05, 4.507e-05, 4.489e-05, 4.507e-05, 77493.98864319], [1516662300000, 4.507e-05, 4.51e-05, 4.505e-05, 4.51e-05, 9207.04547484], [1516662360000, 4.51e-05, 4.52e-05, 4.466e-05, 4.466e-05, 75995.13410014], [1516662420000, 4.466e-05, 4.492e-05, 4.465e-05, 4.467e-05, 52752.87741733], [1516662480000, 4.475e-05, 4.522e-05, 4.469e-05, 4.491e-05, 40625.56119304], [1516662540000, 4.491e-05, 4.491e-05, 4.467e-05, 4.49e-05, 39574.23378828], [1516662600000, 4.49e-05, 4.49e-05, 4.467e-05, 4.468e-05, 15733.53936473], [1516662660000, 4.485e-05, 4.485e-05, 4.467e-05, 4.483e-05, 12043.16273043], [1516662720000, 4.483e-05, 4.485e-05, 4.467e-05, 4.485e-05, 14633.45686164], [1516662780000, 4.468e-05, 4.484e-05, 4.468e-05, 4.468e-05, 29766.45472721], [1516662840000, 4.468e-05, 4.48e-05, 4.468e-05, 4.468e-05, 14826.14967211], [1516662900000, 4.468e-05, 4.468e-05, 4.466e-05, 4.468e-05, 45287.53287373], [1516662960000, 4.467e-05, 4.468e-05, 4.466e-05, 4.467e-05, 14826.48626985], [1516663020000, 4.466e-05, 4.467e-05, 4.466e-05, 4.467e-05, 14407.02878193], [1516663080000, 4.473e-05, 4.488e-05, 4.466e-05, 4.488e-05, 37196.77072013], [1516663140000, 4.466e-05, 4.482e-05, 4.459e-05, 4.459e-05, 174865.7912636], [1516663200000, 4.45e-05, 4.45e-05, 4.425e-05, 4.434e-05, 23610.57615329], [1516663260000, 4.434e-05, 4.443e-05, 4.425e-05, 4.442e-05, 12554.29670423], [1516663320000, 4.442e-05, 4.474e-05, 4.434e-05, 4.434e-05, 78890.44265134], [1516663380000, 4.465e-05, 4.465e-05, 4.457e-05, 4.457e-05, 651.14791678], [1516663440000, 4.456e-05, 4.456e-05, 4.429e-05, 4.431e-05, 3842.88015624], [1516663500000, 4.432e-05, 4.456e-05, 4.432e-05, 4.456e-05, 5228.84936405], [1516663560000, 4.456e-05, 4.457e-05, 4.442e-05, 4.457e-05, 81660.0535317], [1516663620000, 4.457e-05, 4.457e-05, 4.444e-05, 4.457e-05, 14558.06482594], [1516663680000, 4.445e-05, 4.446e-05, 4.445e-05, 4.445e-05, 7715.25206165], [1516663740000, 4.446e-05, 4.457e-05, 4.43e-05, 4.43e-05, 18999.41680713], [1516663800000, 4.455e-05, 4.46e-05, 4.431e-05, 4.457e-05, 36886.25983886], [1516663860000, 4.457e-05, 4.48e-05, 4.432e-05, 4.467e-05, 28903.75714242], [1516663920000, 4.471e-05, 4.479e-05, 4.471e-05, 4.478e-05, 7126.57279236], [1516663980000, 4.478e-05, 4.478e-05, 4.471e-05, 4.478e-05, 34577.09676691], [1516664040000, 4.478e-05, 4.478e-05, 4.473e-05, 4.473e-05, 19585.716389], [1516664100000, 4.473e-05, 4.478e-05, 4.467e-05, 4.478e-05, 38579.33875951], [1516664160000, 4.478e-05, 4.491e-05, 4.467e-05, 4.477e-05, 11416.07155405], [1516664220000, 4.477e-05, 4.493e-05, 4.477e-05, 4.493e-05, 10096.59964866], [1516664280000, 4.49e-05, 4.493e-05, 4.478e-05, 4.49e-05, 20873.91626509], [1516664340000, 4.478e-05, 4.479e-05, 4.477e-05, 4.478e-05, 78232.71753119], [1516664400000, 4.477e-05, 4.478e-05, 4.467e-05, 4.467e-05, 86620.11043157], [1516664460000, 4.467e-05, 4.509e-05, 4.467e-05, 4.5e-05, 102290.78020522], [1516664520000, 4.5e-05, 4.519e-05, 4.5e-05, 4.5e-05, 218060.83796778], [1516664580000, 4.499e-05, 4.5e-05, 4.476e-05, 4.476e-05, 37766.26757691], [1516664640000, 4.48e-05, 4.48e-05, 4.476e-05, 4.476e-05, 18348.82739539], [1516664700000, 4.476e-05, 4.483e-05, 4.444e-05, 4.444e-05, 45268.26187979], [1516664760000, 4.48e-05, 4.484e-05, 4.447e-05, 4.447e-05, 51820.17532822], [1516664820000, 4.482e-05, 4.482e-05, 4.448e-05, 4.448e-05, 14526.33235009], [1516664880000, 4.483e-05, 4.484e-05, 4.452e-05, 4.48e-05, 15143.10736055], [1516664940000, 4.48e-05, 4.48e-05, 4.45e-05, 4.478e-05, 2488.40125205], [1516665000000, 4.455e-05, 4.478e-05, 4.45e-05, 4.478e-05, 33990.62831956], [1516665060000, 4.478e-05, 4.478e-05, 4.453e-05, 4.477e-05, 15739.00467916], [1516665120000, 4.476e-05, 4.476e-05, 4.475e-05, 4.475e-05, 10450.06726653], [1516665180000, 4.456e-05, 4.475e-05, 4.456e-05, 4.473e-05, 10143.31828444], [1516665240000, 4.456e-05, 4.47e-05, 4.448e-05, 4.449e-05, 51188.74434576], [1516665300000, 4.453e-05, 4.465e-05, 4.438e-05, 4.445e-05, 55086.49121935], [1516665360000, 4.472e-05, 4.472e-05, 4.444e-05, 4.444e-05, 7265.58935868], [1516665420000, 4.449e-05, 4.473e-05, 4.439e-05, 4.439e-05, 80460.314646], [1516665480000, 4.44e-05, 4.449e-05, 4.421e-05, 4.424e-05, 167064.44027363], [1516665540000, 4.424e-05, 4.447e-05, 4.4e-05, 4.421e-05, 342820.1265145], [1516665600000, 4.42e-05, 4.443e-05, 4.391e-05, 4.397e-05, 65124.24628962], [1516665660000, 4.403e-05, 4.404e-05, 4.363e-05, 4.396e-05, 152370.65016658], [1516665720000, 4.396e-05, 4.396e-05, 4.33e-05, 4.33e-05, 369507.19084864], [1516665780000, 4.331e-05, 4.354e-05, 4.307e-05, 4.329e-05, 204507.7550627], [1516665840000, 4.329e-05, 4.352e-05, 4.316e-05, 4.33e-05, 48447.61584781], [1516665900000, 4.331e-05, 4.354e-05, 4.328e-05, 4.353e-05, 328497.84564916], [1516665960000, 4.353e-05, 4.395e-05, 4.333e-05, 4.388e-05, 76077.22761268], [1516666020000, 4.388e-05, 4.391e-05, 4.35e-05, 4.386e-05, 90645.9440253], [1516666080000, 4.384e-05, 4.384e-05, 4.361e-05, 4.369e-05, 6020.65217597], [1516666140000, 4.363e-05, 4.369e-05, 4.361e-05, 4.369e-05, 12785.19869363], [1516666200000, 4.362e-05, 4.381e-05, 4.361e-05, 4.369e-05, 16324.76676622], [1516666260000, 4.369e-05, 4.388e-05, 4.366e-05, 4.382e-05, 31546.12016226], [1516666320000, 4.388e-05, 4.39e-05, 4.38e-05, 4.39e-05, 29247.20811594], [1516666380000, 4.39e-05, 4.39e-05, 4.381e-05, 4.39e-05, 33926.24437198], [1516666440000, 4.39e-05, 4.39e-05, 4.38e-05, 4.381e-05, 9725.11225302], [1516666500000, 4.39e-05, 4.413e-05, 4.39e-05, 4.39e-05, 12247.46500118], [1516666560000, 4.391e-05, 4.411e-05, 4.367e-05, 4.368e-05, 126833.79817472], [1516666620000, 4.383e-05, 4.391e-05, 4.369e-05, 4.391e-05, 8650.43578375], [1516666680000, 4.383e-05, 4.391e-05, 4.378e-05, 4.378e-05, 13615.69846767], [1516666740000, 4.383e-05, 4.391e-05, 4.372e-05, 4.378e-05, 8542.52525599], [1516666800000, 4.379e-05, 4.391e-05, 4.372e-05, 4.373e-05, 54398.69361756], [1516666860000, 4.377e-05, 4.399e-05, 4.369e-05, 4.373e-05, 76098.96356946], [1516666920000, 4.369e-05, 4.397e-05, 4.337e-05, 4.395e-05, 98056.84614232], [1516666980000, 4.388e-05, 4.388e-05, 4.387e-05, 4.387e-05, 13694.41046786], [1516667040000, 4.365e-05, 4.388e-05, 4.363e-05, 4.364e-05, 96710.99499862], [1516667100000, 4.374e-05, 4.398e-05, 4.374e-05, 4.386e-05, 20156.22689634], [1516667160000, 4.377e-05, 4.377e-05, 4.363e-05, 4.366e-05, 62157.16963526], [1516667220000, 4.375e-05, 4.377e-05, 4.36e-05, 4.36e-05, 38586.66245736], [1516667280000, 4.376e-05, 4.376e-05, 4.36e-05, 4.374e-05, 2404.00869133], [1516667340000, 4.373e-05, 4.373e-05, 4.341e-05, 4.35e-05, 82075.62634128], [1516667400000, 4.35e-05, 4.35e-05, 4.341e-05, 4.35e-05, 14087.88395432], [1516667460000, 4.343e-05, 4.383e-05, 4.343e-05, 4.38e-05, 17339.4369749], [1516667520000, 4.38e-05, 4.383e-05, 4.375e-05, 4.38e-05, 21167.56716214], [1516667580000, 4.38e-05, 4.38e-05, 4.349e-05, 4.38e-05, 3252.97969483], [1516667640000, 4.38e-05, 4.383e-05, 4.349e-05, 4.349e-05, 6640.47438219], [1516667700000, 4.351e-05, 4.379e-05, 4.35e-05, 4.354e-05, 7764.50707363], [1516667760000, 4.386e-05, 4.397e-05, 4.36e-05, 4.388e-05, 16168.39694612], [1516667820000, 4.388e-05, 4.4e-05, 4.362e-05, 4.366e-05, 68361.27075662], [1516667880000, 4.4e-05, 4.4e-05, 4.365e-05, 4.366e-05, 31304.30906311], [1516667940000, 4.365e-05, 4.398e-05, 4.365e-05, 4.367e-05, 33097.82984513], [1516668000000, 4.367e-05, 4.367e-05, 4.364e-05, 4.367e-05, 37615.76880878], [1516668060000, 4.367e-05, 4.376e-05, 4.352e-05, 4.376e-05, 22750.44784132], [1516668120000, 4.37e-05, 4.375e-05, 4.351e-05, 4.351e-05, 14821.47354373], [1516668180000, 4.353e-05, 4.375e-05, 4.352e-05, 4.36e-05, 32633.11498068], [1516668240000, 4.352e-05, 4.36e-05, 4.352e-05, 4.356e-05, 2674.35555261], [1516668300000, 4.36e-05, 4.394e-05, 4.356e-05, 4.394e-05, 15246.09407497], [1516668360000, 4.394e-05, 4.394e-05, 4.352e-05, 4.353e-05, 82768.02215175], [1516668420000, 4.355e-05, 4.355e-05, 4.355e-05, 4.355e-05, 31722.98026623], [1516668480000, 4.354e-05, 4.355e-05, 4.321e-05, 4.355e-05, 82638.28138904], [1516668540000, 4.355e-05, 4.355e-05, 4.347e-05, 4.354e-05, 8416.59426369], [1516668600000, 4.354e-05, 4.354e-05, 4.347e-05, 4.347e-05, 40002.07622707], [1516668660000, 4.347e-05, 4.353e-05, 4.327e-05, 4.35e-05, 58834.35955578], [1516668720000, 4.327e-05, 4.35e-05, 4.314e-05, 4.316e-05, 45152.85085932], [1516668780000, 4.342e-05, 4.349e-05, 4.313e-05, 4.313e-05, 87806.13202728], [1516668840000, 4.313e-05, 4.345e-05, 4.3e-05, 4.3e-05, 96060.59276448], [1516668900000, 4.301e-05, 4.333e-05, 4.288e-05, 4.329e-05, 45238.34949221], [1516668960000, 4.329e-05, 4.329e-05, 4.286e-05, 4.302e-05, 34204.69158075], [1516669020000, 4.302e-05, 4.321e-05, 4.299e-05, 4.32e-05, 62785.61937236], [1516669080000, 4.327e-05, 4.335e-05, 4.305e-05, 4.335e-05, 35556.63027593], [1516669140000, 4.335e-05, 4.347e-05, 4.311e-05, 4.347e-05, 33194.33480644], [1516669200000, 4.333e-05, 4.348e-05, 4.32e-05, 4.347e-05, 43743.22257913], [1516669260000, 4.327e-05, 4.327e-05, 4.313e-05, 4.326e-05, 48149.67594774], [1516669320000, 4.326e-05, 4.362e-05, 4.315e-05, 4.362e-05, 50982.52111076], [1516669380000, 4.341e-05, 4.341e-05, 4.317e-05, 4.329e-05, 38040.44306969], [1516669440000, 4.329e-05, 4.332e-05, 4.315e-05, 4.332e-05, 40041.09266305], [1516669500000, 4.316e-05, 4.316e-05, 4.313e-05, 4.313e-05, 1007.06557069], [1516669560000, 4.314e-05, 4.32e-05, 4.313e-05, 4.313e-05, 19010.05115959], [1516669620000, 4.313e-05, 4.313e-05, 4.305e-05, 4.313e-05, 13945.61066193], [1516669680000, 4.313e-05, 4.32e-05, 4.305e-05, 4.32e-05, 18143.16192328], [1516669740000, 4.32e-05, 4.332e-05, 4.318e-05, 4.323e-05, 92438.57585882], [1516669800000, 4.345e-05, 4.345e-05, 4.32e-05, 4.344e-05, 39847.62420385], [1516669860000, 4.322e-05, 4.356e-05, 4.32e-05, 4.353e-05, 22262.75257447], [1516669920000, 4.355e-05, 4.357e-05, 4.355e-05, 4.355e-05, 2305.65704478], [1516669980000, 4.355e-05, 4.358e-05, 4.345e-05, 4.355e-05, 22658.62193004], [1516670040000, 4.354e-05, 4.354e-05, 4.345e-05, 4.346e-05, 22435.0203119], [1516670100000, 4.352e-05, 4.352e-05, 4.346e-05, 4.35e-05, 36517.84837681], [1516670160000, 4.35e-05, 4.351e-05, 4.344e-05, 4.344e-05, 15827.85291887], [1516670220000, 4.349e-05, 4.375e-05, 4.344e-05, 4.348e-05, 53599.08070599], [1516670280000, 4.346e-05, 4.375e-05, 4.346e-05, 4.375e-05, 7700.87553331], [1516670340000, 4.374e-05, 4.375e-05, 4.35e-05, 4.361e-05, 7986.10153203], [1516670400000, 4.364e-05, 4.376e-05, 4.364e-05, 4.372e-05, 1429.74265746], [1516670460000, 4.374e-05, 4.38e-05, 4.365e-05, 4.38e-05, 17497.39969758], [1516670520000, 4.375e-05, 4.379e-05, 4.37e-05, 4.37e-05, 26352.2728535], [1516670580000, 4.37e-05, 4.375e-05, 4.365e-05, 4.367e-05, 22929.36607231], [1516670640000, 4.375e-05, 4.375e-05, 4.366e-05, 4.374e-05, 25548.82708592], [1516670700000, 4.374e-05, 4.375e-05, 4.366e-05, 4.372e-05, 11684.75439127], [1516670760000, 4.37e-05, 4.373e-05, 4.366e-05, 4.37e-05, 8591.20393924], [1516670820000, 4.37e-05, 4.37e-05, 4.366e-05, 4.366e-05, 8607.15398568], [1516670880000, 4.368e-05, 4.385e-05, 4.348e-05, 4.35e-05, 95485.36473537], [1516670940000, 4.377e-05, 4.378e-05, 4.345e-05, 4.345e-05, 8187.47582845], [1516671000000, 4.345e-05, 4.385e-05, 4.345e-05, 4.348e-05, 40115.324882], [1516671060000, 4.348e-05, 4.384e-05, 4.347e-05, 4.379e-05, 8577.22068042], [1516671120000, 4.379e-05, 4.379e-05, 4.355e-05, 4.378e-05, 1687.40366433], [1516671180000, 4.365e-05, 4.385e-05, 4.36e-05, 4.36e-05, 15127.35203186], [1516671240000, 4.36e-05, 4.365e-05, 4.355e-05, 4.355e-05, 49219.16886198], [1516671300000, 4.35e-05, 4.355e-05, 4.347e-05, 4.353e-05, 49771.57726851], [1516671360000, 4.353e-05, 4.354e-05, 4.326e-05, 4.354e-05, 79270.77923748], [1516671420000, 4.326e-05, 4.344e-05, 4.325e-05, 4.325e-05, 79630.62927817], [1516671480000, 4.325e-05, 4.354e-05, 4.307e-05, 4.321e-05, 89712.747132], [1516671540000, 4.321e-05, 4.343e-05, 4.307e-05, 4.322e-05, 9164.30564616], [1516671600000, 4.322e-05, 4.322e-05, 4.308e-05, 4.322e-05, 10950.87212446], [1516671660000, 4.322e-05, 4.322e-05, 4.31e-05, 4.322e-05, 2501.36163983], [1516671720000, 4.322e-05, 4.377e-05, 4.322e-05, 4.377e-05, 111814.56302834], [1516671780000, 4.323e-05, 4.378e-05, 4.323e-05, 4.369e-05, 44538.00056175], [1516671840000, 4.36e-05, 4.361e-05, 4.327e-05, 4.361e-05, 17243.99395376], [1516671900000, 4.33e-05, 4.36e-05, 4.314e-05, 4.314e-05, 12626.71520738], [1516671960000, 4.314e-05, 4.355e-05, 4.313e-05, 4.355e-05, 27836.71423637], [1516672020000, 4.353e-05, 4.353e-05, 4.33e-05, 4.33e-05, 5354.64932327], [1516672080000, 4.318e-05, 4.351e-05, 4.318e-05, 4.351e-05, 1817.29713609], [1516672140000, 4.351e-05, 4.361e-05, 4.351e-05, 4.351e-05, 3642.16406466], [1516672200000, 4.351e-05, 4.351e-05, 4.33e-05, 4.349e-05, 14172.69786618], [1516672260000, 4.349e-05, 4.349e-05, 4.349e-05, 4.349e-05, 1359.14371111], [1516672320000, 4.331e-05, 4.361e-05, 4.331e-05, 4.36e-05, 7693.73021409], [1516672380000, 4.36e-05, 4.36e-05, 4.33e-05, 4.36e-05, 6891.99303724], [1516672440000, 4.36e-05, 4.36e-05, 4.325e-05, 4.343e-05, 2815.50411562], [1516672500000, 4.359e-05, 4.36e-05, 4.326e-05, 4.358e-05, 8757.19493066], [1516672560000, 4.357e-05, 4.357e-05, 4.356e-05, 4.356e-05, 636.20453391], [1516672620000, 4.347e-05, 4.347e-05, 4.347e-05, 4.347e-05, 1284.61818741], [1516672680000, 4.355e-05, 4.362e-05, 4.355e-05, 4.357e-05, 7155.14381998], [1516672740000, 4.362e-05, 4.364e-05, 4.358e-05, 4.358e-05, 3106.18177133], [1516672800000, 4.358e-05, 4.364e-05, 4.355e-05, 4.355e-05, 35797.68092703], [1516672860000, 4.364e-05, 4.364e-05, 4.354e-05, 4.354e-05, 3975.89160163], [1516672920000, 4.355e-05, 4.366e-05, 4.355e-05, 4.366e-05, 3216.23090897], [1516672980000, 4.366e-05, 4.378e-05, 4.357e-05, 4.357e-05, 3014.64217281], [1516673040000, 4.357e-05, 4.371e-05, 4.357e-05, 4.357e-05, 1279.59509319], [1516673100000, 4.371e-05, 4.371e-05, 4.357e-05, 4.357e-05, 2715.29772767], [1516673160000, 4.371e-05, 4.371e-05, 4.35e-05, 4.371e-05, 53558.34024175], [1516673220000, 4.371e-05, 4.378e-05, 4.37e-05, 4.375e-05, 52243.79175227], [1516673280000, 4.377e-05, 4.377e-05, 4.356e-05, 4.36e-05, 9819.36838863], [1516673340000, 4.356e-05, 4.375e-05, 4.3e-05, 4.347e-05, 95933.4129009], [1516673400000, 4.347e-05, 4.371e-05, 4.347e-05, 4.366e-05, 5963.84438845], [1516673460000, 4.37e-05, 4.378e-05, 4.37e-05, 4.378e-05, 30630.89015636], [1516673520000, 4.377e-05, 4.379e-05, 4.377e-05, 4.378e-05, 14636.84877468], [1516673580000, 4.379e-05, 4.379e-05, 4.378e-05, 4.378e-05, 10497.4814037], [1516673640000, 4.375e-05, 4.375e-05, 4.37e-05, 4.37e-05, 18148.87263803], [1516673700000, 4.37e-05, 4.37e-05, 4.366e-05, 4.369e-05, 3789.17546883], [1516673760000, 4.367e-05, 4.37e-05, 4.345e-05, 4.367e-05, 9156.51830751], [1516673820000, 4.367e-05, 4.38e-05, 4.367e-05, 4.38e-05, 45293.86067271], [1516673880000, 4.38e-05, 4.382e-05, 4.38e-05, 4.382e-05, 570.90285543], [1516673940000, 4.381e-05, 4.39e-05, 4.38e-05, 4.39e-05, 5500.47201511], [1516674000000, 4.39e-05, 4.39e-05, 4.382e-05, 4.382e-05, 5985.48834461], [1516674060000, 4.382e-05, 4.39e-05, 4.38e-05, 4.39e-05, 2582.80463611], [1516674120000, 4.39e-05, 4.39e-05, 4.375e-05, 4.38e-05, 46236.32754074], [1516674180000, 4.38e-05, 4.39e-05, 4.375e-05, 4.39e-05, 8580.41479847], [1516674240000, 4.392e-05, 4.398e-05, 4.392e-05, 4.398e-05, 1018.11134341], [1516674300000, 4.395e-05, 4.395e-05, 4.392e-05, 4.395e-05, 7917.00244185], [1516674360000, 4.393e-05, 4.393e-05, 4.392e-05, 4.392e-05, 1849.65426482], [1516674420000, 4.393e-05, 4.393e-05, 4.39e-05, 4.392e-05, 3745.17056385], [1516674480000, 4.392e-05, 4.392e-05, 4.391e-05, 4.391e-05, 10954.24128624], [1516674540000, 4.39e-05, 4.393e-05, 4.38e-05, 4.393e-05, 51225.28393751], [1516674600000, 4.393e-05, 4.398e-05, 4.381e-05, 4.398e-05, 31118.02429824], [1516674660000, 4.395e-05, 4.395e-05, 4.384e-05, 4.395e-05, 264.42061077], [1516674720000, 4.395e-05, 4.395e-05, 4.385e-05, 4.395e-05, 15270.3198158], [1516674780000, 4.398e-05, 4.4e-05, 4.398e-05, 4.4e-05, 52564.2054463], [1516674840000, 4.399e-05, 4.402e-05, 4.399e-05, 4.402e-05, 7096.52653291], [1516674900000, 4.402e-05, 4.403e-05, 4.401e-05, 4.402e-05, 6717.87997626], [1516674960000, 4.402e-05, 4.413e-05, 4.401e-05, 4.408e-05, 29830.7206706], [1516675020000, 4.408e-05, 4.422e-05, 4.407e-05, 4.407e-05, 26837.31066186], [1516675080000, 4.421e-05, 4.427e-05, 4.408e-05, 4.409e-05, 8483.70797392], [1516675140000, 4.429e-05, 4.44e-05, 4.41e-05, 4.427e-05, 25447.37576683], [1516675200000, 4.42e-05, 4.44e-05, 4.42e-05, 4.438e-05, 13101.02833528], [1516675260000, 4.428e-05, 4.437e-05, 4.421e-05, 4.427e-05, 34882.60791396], [1516675320000, 4.427e-05, 4.428e-05, 4.427e-05, 4.428e-05, 1825.77292671], [1516675380000, 4.428e-05, 4.428e-05, 4.426e-05, 4.426e-05, 5306.39407117], [1516675440000, 4.424e-05, 4.426e-05, 4.42e-05, 4.424e-05, 4363.8446406], [1516675500000, 4.42e-05, 4.424e-05, 4.42e-05, 4.424e-05, 2264.87372421], [1516675560000, 4.424e-05, 4.424e-05, 4.409e-05, 4.409e-05, 17085.94217677], [1516675620000, 4.42e-05, 4.427e-05, 4.41e-05, 4.427e-05, 30134.07234509], [1516675680000, 4.424e-05, 4.428e-05, 4.424e-05, 4.428e-05, 3843.89231653], [1516675740000, 4.43e-05, 4.438e-05, 4.424e-05, 4.438e-05, 36425.36204216], [1516675800000, 4.441e-05, 4.442e-05, 4.423e-05, 4.424e-05, 6289.66379019], [1516675860000, 4.424e-05, 4.445e-05, 4.41e-05, 4.445e-05, 29976.19354264], [1516675920000, 4.447e-05, 4.447e-05, 4.428e-05, 4.447e-05, 61806.81384824], [1516675980000, 4.446e-05, 4.447e-05, 4.43e-05, 4.43e-05, 55447.75932033], [1516676040000, 4.43e-05, 4.449e-05, 4.43e-05, 4.43e-05, 28955.45759734], [1516676100000, 4.43e-05, 4.443e-05, 4.43e-05, 4.44e-05, 9545.70264563], [1516676160000, 4.44e-05, 4.443e-05, 4.43e-05, 4.442e-05, 34922.56012858], [1516676220000, 4.44e-05, 4.44e-05, 4.43e-05, 4.44e-05, 34099.26980345], [1516676280000, 4.44e-05, 4.448e-05, 4.43e-05, 4.447e-05, 4156.79642887], [1516676340000, 4.446e-05, 4.447e-05, 4.432e-05, 4.445e-05, 1131.01791637], [1516676400000, 4.445e-05, 4.447e-05, 4.43e-05, 4.446e-05, 9440.01364996], [1516676460000, 4.445e-05, 4.445e-05, 4.409e-05, 4.428e-05, 10862.37169466], [1516676520000, 4.428e-05, 4.44e-05, 4.428e-05, 4.439e-05, 4351.23977258], [1516676580000, 4.439e-05, 4.439e-05, 4.43e-05, 4.43e-05, 8609.36726018], [1516676640000, 4.429e-05, 4.429e-05, 4.427e-05, 4.427e-05, 31089.10128478], [1516676700000, 4.425e-05, 4.425e-05, 4.424e-05, 4.424e-05, 1924.22121923], [1516676760000, 4.424e-05, 4.424e-05, 4.384e-05, 4.4e-05, 19678.76305905], [1516676820000, 4.39e-05, 4.408e-05, 4.39e-05, 4.408e-05, 15075.36876405], [1516676880000, 4.399e-05, 4.401e-05, 4.399e-05, 4.399e-05, 17542.49587656], [1516676940000, 4.399e-05, 4.405e-05, 4.399e-05, 4.405e-05, 10125.44774474], [1516677000000, 4.401e-05, 4.416e-05, 4.401e-05, 4.416e-05, 6904.28887038], [1516677060000, 4.416e-05, 4.423e-05, 4.407e-05, 4.416e-05, 43317.4091019], [1516677120000, 4.409e-05, 4.42e-05, 4.409e-05, 4.42e-05, 14298.95703667], [1516677180000, 4.42e-05, 4.42e-05, 4.407e-05, 4.408e-05, 6948.04629602], [1516677240000, 4.418e-05, 4.418e-05, 4.408e-05, 4.418e-05, 2945.12970769], [1516677300000, 4.418e-05, 4.418e-05, 4.417e-05, 4.417e-05, 1865.07523111], [1516677360000, 4.417e-05, 4.417e-05, 4.407e-05, 4.41e-05, 80244.34127569], [1516677420000, 4.41e-05, 4.411e-05, 4.401e-05, 4.411e-05, 30550.99502139], [1516677480000, 4.411e-05, 4.417e-05, 4.411e-05, 4.411e-05, 7366.71550379], [1516677540000, 4.411e-05, 4.417e-05, 4.35e-05, 4.416e-05, 250119.16884918], [1516677600000, 4.414e-05, 4.414e-05, 4.41e-05, 4.41e-05, 2994.94330921], [1516677660000, 4.382e-05, 4.418e-05, 4.382e-05, 4.41e-05, 17022.83965171], [1516677720000, 4.409e-05, 4.409e-05, 4.383e-05, 4.404e-05, 55194.9171598], [1516677780000, 4.402e-05, 4.404e-05, 4.373e-05, 4.401e-05, 40667.52894303], [1516677840000, 4.401e-05, 4.401e-05, 4.391e-05, 4.4e-05, 10815.15356456], [1516677900000, 4.391e-05, 4.4e-05, 4.38e-05, 4.399e-05, 13710.44627103], [1516677960000, 4.391e-05, 4.398e-05, 4.366e-05, 4.366e-05, 31959.48951669], [1516678020000, 4.366e-05, 4.388e-05, 4.366e-05, 4.385e-05, 11080.51538436], [1516678080000, 4.385e-05, 4.395e-05, 4.371e-05, 4.394e-05, 9235.32221699], [1516678140000, 4.395e-05, 4.398e-05, 4.394e-05, 4.394e-05, 46542.00346381], [1516678200000, 4.387e-05, 4.4e-05, 4.386e-05, 4.4e-05, 57450.28270721], [1516678260000, 4.398e-05, 4.429e-05, 4.394e-05, 4.394e-05, 51141.12383038], [1516678320000, 4.394e-05, 4.428e-05, 4.363e-05, 4.363e-05, 30969.76476045], [1516678380000, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 1741.322926], [1516678440000, 4.4e-05, 4.422e-05, 4.373e-05, 4.4e-05, 22521.79407551], [1516678500000, 4.373e-05, 4.398e-05, 4.371e-05, 4.377e-05, 54999.06915469], [1516678560000, 4.377e-05, 4.377e-05, 4.359e-05, 4.36e-05, 29866.58662737], [1516678620000, 4.377e-05, 4.39e-05, 4.371e-05, 4.39e-05, 15986.16771591], [1516678680000, 4.387e-05, 4.387e-05, 4.371e-05, 4.374e-05, 23410.16095961], [1516678740000, 4.374e-05, 4.374e-05, 4.371e-05, 4.374e-05, 59977.94319007], [1516678800000, 4.374e-05, 4.387e-05, 4.371e-05, 4.385e-05, 8270.83827238], [1516678860000, 4.371e-05, 4.385e-05, 4.371e-05, 4.371e-05, 42482.85052136], [1516678920000, 4.371e-05, 4.385e-05, 4.353e-05, 4.385e-05, 13550.40996023], [1516678980000, 4.385e-05, 4.387e-05, 4.385e-05, 4.387e-05, 70414.44047031], [1516679040000, 4.387e-05, 4.387e-05, 4.353e-05, 4.353e-05, 22210.82765343], [1516679100000, 4.387e-05, 4.395e-05, 4.386e-05, 4.387e-05, 40526.47197957], [1516679160000, 4.4e-05, 4.414e-05, 4.4e-05, 4.403e-05, 39014.18373974], [1516679220000, 4.413e-05, 4.413e-05, 4.402e-05, 4.412e-05, 99968.79070563], [1516679280000, 4.412e-05, 4.42e-05, 4.386e-05, 4.388e-05, 70110.16634274], [1516679340000, 4.418e-05, 4.418e-05, 4.4e-05, 4.413e-05, 34507.14301761], [1516679400000, 4.412e-05, 4.413e-05, 4.401e-05, 4.401e-05, 16594.68081573], [1516679460000, 4.406e-05, 4.408e-05, 4.395e-05, 4.4e-05, 109562.24114337], [1516679520000, 4.4e-05, 4.4e-05, 4.399e-05, 4.399e-05, 31837.97247711], [1516679580000, 4.399e-05, 4.4e-05, 4.394e-05, 4.4e-05, 40904.61941787], [1516679640000, 4.399e-05, 4.399e-05, 4.399e-05, 4.399e-05, 253.05964098], [1516679700000, 4.399e-05, 4.399e-05, 4.394e-05, 4.395e-05, 16148.28036623], [1516679760000, 4.395e-05, 4.4e-05, 4.395e-05, 4.4e-05, 21332.00498657], [1516679820000, 4.4e-05, 4.4e-05, 4.4e-05, 4.4e-05, 9322.53066629], [1516679880000, 4.402e-05, 4.41e-05, 4.4e-05, 4.4e-05, 10810.53970479], [1516679940000, 4.411e-05, 4.421e-05, 4.396e-05, 4.396e-05, 31689.33464771], [1516680000000, 4.41e-05, 4.41e-05, 4.41e-05, 4.41e-05, 120.361003], [1516680060000, 4.409e-05, 4.409e-05, 4.396e-05, 4.396e-05, 11397.10149322], [1516680120000, 4.4e-05, 4.4e-05, 4.396e-05, 4.4e-05, 9187.40628758], [1516680180000, 4.4e-05, 4.41e-05, 4.396e-05, 4.396e-05, 38595.37084441], [1516680240000, 4.396e-05, 4.4e-05, 4.395e-05, 4.396e-05, 73758.2604139], [1516680300000, 4.396e-05, 4.4e-05, 4.392e-05, 4.4e-05, 13963.19963758], [1516680360000, 4.4e-05, 4.409e-05, 4.396e-05, 4.409e-05, 72862.89825379], [1516680420000, 4.409e-05, 4.41e-05, 4.381e-05, 4.391e-05, 56194.59911955], [1516680480000, 4.392e-05, 4.41e-05, 4.391e-05, 4.41e-05, 9633.35964142], [1516680540000, 4.41e-05, 4.41e-05, 4.4e-05, 4.41e-05, 20210.08801566], [1516680600000, 4.402e-05, 4.409e-05, 4.396e-05, 4.396e-05, 34567.6716439], [1516680660000, 4.396e-05, 4.399e-05, 4.396e-05, 4.399e-05, 2693.48310774], [1516680720000, 4.399e-05, 4.401e-05, 4.399e-05, 4.4e-05, 1229.1182857], [1516680780000, 4.412e-05, 4.412e-05, 4.401e-05, 4.401e-05, 3043.11907072], [1516680840000, 4.411e-05, 4.411e-05, 4.402e-05, 4.411e-05, 1643.63486882], [1516680900000, 4.405e-05, 4.41e-05, 4.402e-05, 4.402e-05, 11566.71591897], [1516680960000, 4.41e-05, 4.41e-05, 4.402e-05, 4.41e-05, 19040.95687857], [1516681020000, 4.41e-05, 4.41e-05, 4.396e-05, 4.396e-05, 41067.47636351], [1516681080000, 4.392e-05, 4.395e-05, 4.391e-05, 4.392e-05, 14627.80250499], [1516681140000, 4.392e-05, 4.392e-05, 4.391e-05, 4.391e-05, 17469.43928204], [1516681200000, 4.391e-05, 4.392e-05, 4.391e-05, 4.391e-05, 15131.70553871], [1516681260000, 4.391e-05, 4.391e-05, 4.384e-05, 4.39e-05, 5483.27328661], [1516681320000, 4.384e-05, 4.391e-05, 4.38e-05, 4.38e-05, 18394.52933189], [1516681380000, 4.39e-05, 4.391e-05, 4.38e-05, 4.38e-05, 2990.51863751], [1516681440000, 4.39e-05, 4.39e-05, 4.38e-05, 4.39e-05, 8749.70315776], [1516681500000, 4.37e-05, 4.389e-05, 4.354e-05, 4.355e-05, 16573.32621805], [1516681560000, 4.358e-05, 4.39e-05, 4.358e-05, 4.366e-05, 4222.11203325], [1516681620000, 4.367e-05, 4.389e-05, 4.367e-05, 4.37e-05, 1863.56192094], [1516681680000, 4.37e-05, 4.385e-05, 4.37e-05, 4.384e-05, 14072.85670566], [1516681740000, 4.373e-05, 4.382e-05, 4.373e-05, 4.374e-05, 11734.65725433], [1516681800000, 4.382e-05, 4.387e-05, 4.382e-05, 4.387e-05, 12652.99161832], [1516681860000, 4.383e-05, 4.399e-05, 4.382e-05, 4.397e-05, 7672.80805769], [1516681920000, 4.396e-05, 4.398e-05, 4.396e-05, 4.398e-05, 313.90640545], [1516681980000, 4.398e-05, 4.398e-05, 4.396e-05, 4.398e-05, 1398.2850027], [1516682040000, 4.397e-05, 4.398e-05, 4.395e-05, 4.395e-05, 18608.59692193], [1516682100000, 4.395e-05, 4.396e-05, 4.387e-05, 4.396e-05, 9768.37593021], [1516682160000, 4.396e-05, 4.399e-05, 4.395e-05, 4.395e-05, 4033.83533742], [1516682220000, 4.395e-05, 4.395e-05, 4.395e-05, 4.395e-05, 9736.68783435], [1516682280000, 4.395e-05, 4.395e-05, 4.387e-05, 4.387e-05, 8539.50490596], [1516682340000, 4.382e-05, 4.382e-05, 4.382e-05, 4.382e-05, 100.78437117], [1516682400000, 4.387e-05, 4.387e-05, 4.387e-05, 4.387e-05, 3951.71965637], [1516682460000, 4.387e-05, 4.387e-05, 4.382e-05, 4.382e-05, 1514.09504196], [1516682520000, 4.387e-05, 4.412e-05, 4.383e-05, 4.412e-05, 84589.66512241], [1516682580000, 4.384e-05, 4.411e-05, 4.384e-05, 4.41e-05, 3318.04044388], [1516682640000, 4.408e-05, 4.41e-05, 4.383e-05, 4.383e-05, 10098.4622619], [1516682700000, 4.409e-05, 4.409e-05, 4.384e-05, 4.384e-05, 15576.57038083], [1516682760000, 4.384e-05, 4.385e-05, 4.383e-05, 4.385e-05, 2749.42953664], [1516682820000, 4.385e-05, 4.405e-05, 4.385e-05, 4.405e-05, 1236.19938502], [1516682880000, 4.401e-05, 4.402e-05, 4.385e-05, 4.4e-05, 7915.43836428], [1516682940000, 4.388e-05, 4.4e-05, 4.385e-05, 4.388e-05, 4364.25394305], [1516683000000, 4.388e-05, 4.388e-05, 4.384e-05, 4.384e-05, 8203.85065226], [1516683060000, 4.384e-05, 4.385e-05, 4.382e-05, 4.385e-05, 5431.13726401], [1516683120000, 4.382e-05, 4.384e-05, 4.38e-05, 4.38e-05, 16650.35176149], [1516683180000, 4.384e-05, 4.384e-05, 4.38e-05, 4.38e-05, 381.36897149], [1516683240000, 4.38e-05, 4.38e-05, 4.376e-05, 4.376e-05, 1781.29534789], [1516683300000, 4.376e-05, 4.376e-05, 4.372e-05, 4.372e-05, 4594.84322924], [1516683360000, 4.372e-05, 4.376e-05, 4.358e-05, 4.359e-05, 34932.17565184], [1516683420000, 4.359e-05, 4.376e-05, 4.358e-05, 4.358e-05, 15255.81639774], [1516683480000, 4.362e-05, 4.375e-05, 4.35e-05, 4.361e-05, 65452.14376461], [1516683540000, 4.358e-05, 4.37e-05, 4.358e-05, 4.37e-05, 7862.85226753], [1516683600000, 4.365e-05, 4.37e-05, 4.346e-05, 4.369e-05, 34947.20910404], [1516683660000, 4.37e-05, 4.37e-05, 4.36e-05, 4.37e-05, 22595.39677897], [1516683720000, 4.376e-05, 4.376e-05, 4.37e-05, 4.376e-05, 3795.88491013], [1516683780000, 4.374e-05, 4.374e-05, 4.37e-05, 4.374e-05, 2271.35782567], [1516683840000, 4.374e-05, 4.374e-05, 4.36e-05, 4.37e-05, 10688.30644991], [1516683900000, 4.374e-05, 4.376e-05, 4.37e-05, 4.37e-05, 6419.71338523], [1516683960000, 4.37e-05, 4.376e-05, 4.36e-05, 4.362e-05, 18154.96859715], [1516684020000, 4.362e-05, 4.37e-05, 4.362e-05, 4.37e-05, 7853.62592644], [1516684080000, 4.362e-05, 4.37e-05, 4.351e-05, 4.352e-05, 22217.92366391], [1516684140000, 4.352e-05, 4.362e-05, 4.35e-05, 4.35e-05, 31994.39527356], [1516684200000, 4.35e-05, 4.361e-05, 4.338e-05, 4.361e-05, 27420.99135124], [1516684260000, 4.36e-05, 4.36e-05, 4.36e-05, 4.36e-05, 1085.19244106], [1516684320000, 4.36e-05, 4.36e-05, 4.36e-05, 4.36e-05, 1543.24306907], [1516684380000, 4.359e-05, 4.359e-05, 4.338e-05, 4.339e-05, 11524.85147175], [1516684440000, 4.339e-05, 4.359e-05, 4.32e-05, 4.338e-05, 73302.04587682], [1516684500000, 4.338e-05, 4.359e-05, 4.338e-05, 4.358e-05, 34710.00015232], [1516684560000, 4.358e-05, 4.359e-05, 4.358e-05, 4.358e-05, 23274.27845831], [1516684620000, 4.358e-05, 4.358e-05, 4.326e-05, 4.326e-05, 850.60657737], [1516684680000, 4.355e-05, 4.356e-05, 4.355e-05, 4.356e-05, 928.64496582], [1516684740000, 4.328e-05, 4.328e-05, 4.327e-05, 4.328e-05, 75687.38663559], [1516684800000, 4.328e-05, 4.355e-05, 4.326e-05, 4.355e-05, 106998.95808251], [1516684860000, 4.328e-05, 4.354e-05, 4.328e-05, 4.354e-05, 39742.41334779], [1516684920000, 4.354e-05, 4.354e-05, 4.318e-05, 4.318e-05, 65106.50365602], [1516684980000, 4.321e-05, 4.353e-05, 4.32e-05, 4.32e-05, 21660.17802441], [1516685040000, 4.351e-05, 4.351e-05, 4.32e-05, 4.348e-05, 23078.86939787], [1516685100000, 4.33e-05, 4.348e-05, 4.324e-05, 4.348e-05, 3646.581113], [1516685160000, 4.347e-05, 4.347e-05, 4.325e-05, 4.344e-05, 57852.84906487], [1516685220000, 4.325e-05, 4.344e-05, 4.325e-05, 4.33e-05, 28139.01951644], [1516685280000, 4.344e-05, 4.348e-05, 4.331e-05, 4.331e-05, 5666.11644996], [1516685340000, 4.333e-05, 4.348e-05, 4.333e-05, 4.348e-05, 16828.05596365], [1516685400000, 4.348e-05, 4.359e-05, 4.348e-05, 4.359e-05, 11457.32913507], [1516685460000, 4.359e-05, 4.361e-05, 4.35e-05, 4.35e-05, 25527.75178852], [1516685520000, 4.359e-05, 4.361e-05, 4.348e-05, 4.361e-05, 42590.47887462], [1516685580000, 4.361e-05, 4.361e-05, 4.348e-05, 4.361e-05, 2977.05226964], [1516685640000, 4.361e-05, 4.361e-05, 4.348e-05, 4.348e-05, 66135.64863763], [1516685700000, 4.348e-05, 4.348e-05, 4.333e-05, 4.347e-05, 3034.75594251], [1516685760000, 4.34e-05, 4.361e-05, 4.34e-05, 4.361e-05, 20698.09264608], [1516685820000, 4.348e-05, 4.37e-05, 4.348e-05, 4.361e-05, 8046.06173412], [1516685880000, 4.354e-05, 4.36e-05, 4.352e-05, 4.354e-05, 26859.76733834], [1516685940000, 4.354e-05, 4.354e-05, 4.348e-05, 4.353e-05, 35309.86741612], [1516686000000, 4.37e-05, 4.37e-05, 4.37e-05, 4.37e-05, 231.26737483], [1516686060000, 4.37e-05, 4.37e-05, 4.364e-05, 4.364e-05, 6598.70861343], [1516686120000, 4.37e-05, 4.376e-05, 4.369e-05, 4.373e-05, 6932.79801189], [1516686180000, 4.373e-05, 4.373e-05, 4.372e-05, 4.372e-05, 6362.04540032], [1516686240000, 4.373e-05, 4.373e-05, 4.365e-05, 4.366e-05, 12599.83136293], [1516686300000, 4.367e-05, 4.372e-05, 4.343e-05, 4.343e-05, 33504.01082451], [1516686360000, 4.343e-05, 4.371e-05, 4.337e-05, 4.365e-05, 3986.12472344], [1516686420000, 4.363e-05, 4.365e-05, 4.35e-05, 4.363e-05, 13220.4942199], [1516686480000, 4.363e-05, 4.365e-05, 4.336e-05, 4.339e-05, 10162.493146], [1516686540000, 4.365e-05, 4.365e-05, 4.339e-05, 4.339e-05, 29461.10939229], [1516686600000, 4.364e-05, 4.364e-05, 4.339e-05, 4.339e-05, 1077.87878181], [1516686660000, 4.36e-05, 4.36e-05, 4.36e-05, 4.36e-05, 756.94693993], [1516686720000, 4.36e-05, 4.363e-05, 4.34e-05, 4.363e-05, 9602.72193183], [1516686780000, 4.363e-05, 4.363e-05, 4.342e-05, 4.363e-05, 22254.83176899], [1516686840000, 4.363e-05, 4.363e-05, 4.347e-05, 4.347e-05, 1815.82808602], [1516686900000, 4.348e-05, 4.362e-05, 4.342e-05, 4.352e-05, 27976.08119676], [1516686960000, 4.362e-05, 4.37e-05, 4.352e-05, 4.37e-05, 49334.48524928], [1516687020000, 4.356e-05, 4.37e-05, 4.356e-05, 4.361e-05, 20878.37040548], [1516687080000, 4.362e-05, 4.371e-05, 4.342e-05, 4.353e-05, 41288.3634905], [1516687140000, 4.342e-05, 4.366e-05, 4.322e-05, 4.322e-05, 49257.41133843], [1516687200000, 4.338e-05, 4.357e-05, 4.3e-05, 4.357e-05, 195600.04459414], [1516687260000, 4.353e-05, 4.367e-05, 4.3e-05, 4.353e-05, 61452.64762133], [1516687320000, 4.352e-05, 4.353e-05, 4.331e-05, 4.351e-05, 51002.71538053], [1516687380000, 4.351e-05, 4.352e-05, 4.332e-05, 4.348e-05, 46700.49502146], [1516687440000, 4.348e-05, 4.354e-05, 4.34e-05, 4.353e-05, 17239.68129631], [1516687500000, 4.348e-05, 4.354e-05, 4.34e-05, 4.354e-05, 24991.89663949], [1516687560000, 4.348e-05, 4.348e-05, 4.348e-05, 4.348e-05, 469.14409568], [1516687620000, 4.348e-05, 4.354e-05, 4.34e-05, 4.354e-05, 15112.79383745], [1516687680000, 4.34e-05, 4.353e-05, 4.34e-05, 4.353e-05, 982.70274546], [1516687740000, 4.34e-05, 4.34e-05, 4.309e-05, 4.309e-05, 45883.83838655], [1516687800000, 4.352e-05, 4.354e-05, 4.338e-05, 4.353e-05, 22335.17658546], [1516687860000, 4.354e-05, 4.354e-05, 4.338e-05, 4.353e-05, 2481.70732234], [1516687920000, 4.353e-05, 4.354e-05, 4.334e-05, 4.354e-05, 33628.02627807], [1516687980000, 4.35e-05, 4.35e-05, 4.35e-05, 4.35e-05, 210.0], [1516688040000, 4.35e-05, 4.354e-05, 4.35e-05, 4.351e-05, 12845.52728412], [1516688100000, 4.353e-05, 4.354e-05, 4.351e-05, 4.354e-05, 17190.36132484], [1516688160000, 4.354e-05, 4.354e-05, 4.343e-05, 4.354e-05, 17516.45579841], [1516688220000, 4.354e-05, 4.354e-05, 4.353e-05, 4.353e-05, 67457.14130125], [1516688280000, 4.354e-05, 4.354e-05, 4.344e-05, 4.354e-05, 40878.05980114], [1516688340000, 4.354e-05, 4.363e-05, 4.35e-05, 4.363e-05, 24681.44365308], [1516688400000, 4.351e-05, 4.363e-05, 4.351e-05, 4.363e-05, 62069.4361216], [1516688460000, 4.361e-05, 4.364e-05, 4.36e-05, 4.364e-05, 12412.67887036], [1516688520000, 4.367e-05, 4.371e-05, 4.367e-05, 4.37e-05, 18698.22139489], [1516688580000, 4.37e-05, 4.37e-05, 4.364e-05, 4.364e-05, 40196.7005106], [1516688640000, 4.365e-05, 4.367e-05, 4.364e-05, 4.364e-05, 11954.97422043], [1516688700000, 4.364e-05, 4.367e-05, 4.364e-05, 4.364e-05, 14019.31228217], [1516688760000, 4.367e-05, 4.367e-05, 4.364e-05, 4.367e-05, 10062.03374007], [1516688820000, 4.367e-05, 4.367e-05, 4.365e-05, 4.366e-05, 940.85781916], [1516688880000, 4.366e-05, 4.368e-05, 4.365e-05, 4.365e-05, 21697.96580256], [1516688940000, 4.365e-05, 4.368e-05, 4.365e-05, 4.365e-05, 12048.1607614], [1516689000000, 4.365e-05, 4.366e-05, 4.364e-05, 4.366e-05, 24980.64077177], [1516689060000, 4.366e-05, 4.366e-05, 4.364e-05, 4.364e-05, 4782.3563067], [1516689120000, 4.364e-05, 4.366e-05, 4.364e-05, 4.366e-05, 13287.52747571], [1516689180000, 4.366e-05, 4.369e-05, 4.366e-05, 4.369e-05, 2592.76445742], [1516689240000, 4.369e-05, 4.369e-05, 4.367e-05, 4.369e-05, 2334.37735657], [1516689300000, 4.369e-05, 4.369e-05, 4.364e-05, 4.364e-05, 68456.59460572], [1516689360000, 4.369e-05, 4.369e-05, 4.36e-05, 4.368e-05, 1074.48184379], [1516689420000, 4.368e-05, 4.369e-05, 4.36e-05, 4.369e-05, 10216.90455395], [1516689480000, 4.369e-05, 4.37e-05, 4.369e-05, 4.37e-05, 3960.68808306], [1516689540000, 4.369e-05, 4.37e-05, 4.36e-05, 4.36e-05, 10324.19107495], [1516689600000, 4.36e-05, 4.369e-05, 4.36e-05, 4.36e-05, 3447.820284], [1516689660000, 4.36e-05, 4.36e-05, 4.355e-05, 4.355e-05, 250.0], [1516689720000, 4.368e-05, 4.368e-05, 4.368e-05, 4.368e-05, 2497.1720724], [1516689780000, 4.368e-05, 4.369e-05, 4.354e-05, 4.354e-05, 7326.59835983], [1516689840000, 4.354e-05, 4.368e-05, 4.343e-05, 4.367e-05, 7352.84563019], [1516689900000, 4.355e-05, 4.355e-05, 4.344e-05, 4.344e-05, 4955.6259543], [1516689960000, 4.368e-05, 4.368e-05, 4.353e-05, 4.368e-05, 976.55915722], [1516690020000, 4.353e-05, 4.368e-05, 4.335e-05, 4.337e-05, 15160.92093162], [1516690080000, 4.362e-05, 4.365e-05, 4.339e-05, 4.362e-05, 2787.48471794], [1516690140000, 4.36e-05, 4.362e-05, 4.36e-05, 4.362e-05, 260.99855144], [1516690200000, 4.36e-05, 4.36e-05, 4.343e-05, 4.344e-05, 7850.19806956], [1516690260000, 4.341e-05, 4.36e-05, 4.336e-05, 4.36e-05, 28164.37407699], [1516690320000, 4.344e-05, 4.359e-05, 4.313e-05, 4.317e-05, 35576.27809548], [1516690380000, 4.318e-05, 4.355e-05, 4.318e-05, 4.335e-05, 3702.52557026], [1516690440000, 4.32e-05, 4.335e-05, 4.317e-05, 4.335e-05, 38052.82256921], [1516690500000, 4.335e-05, 4.335e-05, 4.321e-05, 4.333e-05, 4231.63732851], [1516690560000, 4.333e-05, 4.333e-05, 4.32e-05, 4.333e-05, 7196.6933117], [1516690620000, 4.333e-05, 4.333e-05, 4.32e-05, 4.32e-05, 1156.89318669], [1516690680000, 4.333e-05, 4.333e-05, 4.33e-05, 4.33e-05, 483.50814819], [1516690740000, 4.33e-05, 4.33e-05, 4.322e-05, 4.328e-05, 9188.87598199], [1516690800000, 4.328e-05, 4.333e-05, 4.32e-05, 4.32e-05, 14473.37599264], [1516690860000, 4.349e-05, 4.35e-05, 4.348e-05, 4.348e-05, 4796.93361444], [1516690920000, 4.335e-05, 4.335e-05, 4.335e-05, 4.335e-05, 11043.185], [1516690980000, 4.348e-05, 4.349e-05, 4.348e-05, 4.348e-05, 2183.48926828], [1516691040000, 4.348e-05, 4.348e-05, 4.321e-05, 4.324e-05, 15754.00860472], [1516691100000, 4.332e-05, 4.352e-05, 4.32e-05, 4.32e-05, 95847.62338975], [1516691160000, 4.352e-05, 4.352e-05, 4.35e-05, 4.352e-05, 4764.94046593], [1516691220000, 4.352e-05, 4.352e-05, 4.352e-05, 4.352e-05, 3425.06331256], [1516691280000, 4.348e-05, 4.348e-05, 4.326e-05, 4.348e-05, 3311.96586052], [1516691340000, 4.348e-05, 4.355e-05, 4.327e-05, 4.355e-05, 10058.47970725], [1516691400000, 4.327e-05, 4.355e-05, 4.327e-05, 4.349e-05, 6896.08936827], [1516691460000, 4.349e-05, 4.349e-05, 4.321e-05, 4.348e-05, 8557.78578545], [1516691520000, 4.346e-05, 4.346e-05, 4.32e-05, 4.321e-05, 77906.1364764], [1516691580000, 4.321e-05, 4.348e-05, 4.321e-05, 4.322e-05, 5826.03228266], [1516691640000, 4.323e-05, 4.323e-05, 4.322e-05, 4.323e-05, 4098.32138772], [1516691700000, 4.323e-05, 4.323e-05, 4.322e-05, 4.322e-05, 7481.41032785], [1516691760000, 4.321e-05, 4.321e-05, 4.313e-05, 4.32e-05, 2259.55672439], [1516691820000, 4.32e-05, 4.32e-05, 4.313e-05, 4.318e-05, 14662.50936484], [1516691880000, 4.318e-05, 4.32e-05, 4.312e-05, 4.313e-05, 41038.67684245], [1516691940000, 4.317e-05, 4.319e-05, 4.299e-05, 4.299e-05, 185743.41264421], [1516692000000, 4.312e-05, 4.313e-05, 4.295e-05, 4.296e-05, 15344.30005918], [1516692060000, 4.296e-05, 4.308e-05, 4.288e-05, 4.305e-05, 68847.47315002], [1516692120000, 4.305e-05, 4.312e-05, 4.295e-05, 4.303e-05, 53484.77121396], [1516692180000, 4.303e-05, 4.319e-05, 4.303e-05, 4.317e-05, 89602.13510009], [1516692240000, 4.317e-05, 4.32e-05, 4.317e-05, 4.317e-05, 9819.16436504], [1516692300000, 4.32e-05, 4.325e-05, 4.31e-05, 4.31e-05, 15259.25205998], [1516692360000, 4.326e-05, 4.351e-05, 4.312e-05, 4.32e-05, 5662.27114944], [1516692420000, 4.347e-05, 4.347e-05, 4.32e-05, 4.346e-05, 71341.36705076], [1516692480000, 4.34e-05, 4.345e-05, 4.325e-05, 4.345e-05, 5519.62887688], [1516692540000, 4.34e-05, 4.347e-05, 4.325e-05, 4.34e-05, 3983.35798447], [1516692600000, 4.325e-05, 4.34e-05, 4.325e-05, 4.339e-05, 1699.28782049], [1516692660000, 4.34e-05, 4.34e-05, 4.325e-05, 4.325e-05, 2947.30929776], [1516692720000, 4.331e-05, 4.331e-05, 4.326e-05, 4.326e-05, 356.57840896], [1516692780000, 4.326e-05, 4.326e-05, 4.317e-05, 4.32e-05, 4102.74207474], [1516692840000, 4.32e-05, 4.32e-05, 4.311e-05, 4.32e-05, 3508.80882708], [1516692900000, 4.32e-05, 4.321e-05, 4.32e-05, 4.321e-05, 1764.7300029], [1516692960000, 4.34e-05, 4.34e-05, 4.321e-05, 4.34e-05, 13426.14960191], [1516693020000, 4.338e-05, 4.338e-05, 4.321e-05, 4.336e-05, 8101.08991145], [1516693080000, 4.322e-05, 4.336e-05, 4.322e-05, 4.335e-05, 356.55934983], [1516693140000, 4.335e-05, 4.34e-05, 4.335e-05, 4.34e-05, 38833.77639515], [1516693200000, 4.336e-05, 4.339e-05, 4.325e-05, 4.333e-05, 10286.1931364], [1516693260000, 4.333e-05, 4.335e-05, 4.325e-05, 4.335e-05, 27728.09295687], [1516693320000, 4.335e-05, 4.335e-05, 4.325e-05, 4.333e-05, 22151.42861154], [1516693380000, 4.333e-05, 4.333e-05, 4.325e-05, 4.333e-05, 887.24107549], [1516693440000, 4.325e-05, 4.33e-05, 4.325e-05, 4.33e-05, 851.73366195], [1516693500000, 4.33e-05, 4.34e-05, 4.325e-05, 4.34e-05, 18563.55587178], [1516693560000, 4.336e-05, 4.34e-05, 4.335e-05, 4.335e-05, 1690.96708187], [1516693620000, 4.335e-05, 4.34e-05, 4.325e-05, 4.325e-05, 2354.20772514], [1516693680000, 4.326e-05, 4.34e-05, 4.304e-05, 4.304e-05, 7192.24195978], [1516693740000, 4.304e-05, 4.339e-05, 4.304e-05, 4.337e-05, 23898.03557515], [1516693800000, 4.307e-05, 4.337e-05, 4.305e-05, 4.337e-05, 1617.59036087], [1516693860000, 4.334e-05, 4.334e-05, 4.305e-05, 4.306e-05, 48443.08469553], [1516693920000, 4.308e-05, 4.333e-05, 4.308e-05, 4.308e-05, 3432.24714741], [1516693980000, 4.308e-05, 4.333e-05, 4.308e-05, 4.333e-05, 2369.36906635], [1516694040000, 4.31e-05, 4.333e-05, 4.31e-05, 4.321e-05, 1768.28593937], [1516694100000, 4.333e-05, 4.333e-05, 4.32e-05, 4.32e-05, 1192.54275902], [1516694160000, 4.32e-05, 4.32e-05, 4.32e-05, 4.32e-05, 2194.60107429], [1516694220000, 4.32e-05, 4.32e-05, 4.319e-05, 4.319e-05, 852.94496039], [1516694280000, 4.319e-05, 4.319e-05, 4.311e-05, 4.311e-05, 17223.74314456], [1516694340000, 4.317e-05, 4.329e-05, 4.3e-05, 4.318e-05, 59443.88351386], [1516694400000, 4.31e-05, 4.318e-05, 4.31e-05, 4.311e-05, 4523.56112835], [1516694460000, 4.318e-05, 4.33e-05, 4.3e-05, 4.33e-05, 15951.10925575], [1516694520000, 4.306e-05, 4.329e-05, 4.301e-05, 4.305e-05, 51379.86704217], [1516694580000, 4.31e-05, 4.327e-05, 4.31e-05, 4.326e-05, 1336.7723196], [1516694640000, 4.325e-05, 4.325e-05, 4.323e-05, 4.324e-05, 11424.65038304], [1516694700000, 4.323e-05, 4.323e-05, 4.317e-05, 4.317e-05, 1146.0], [1516694760000, 4.318e-05, 4.318e-05, 4.3e-05, 4.3e-05, 10029.76399967], [1516694820000, 4.305e-05, 4.318e-05, 4.302e-05, 4.317e-05, 5665.12260008], [1516694880000, 4.316e-05, 4.317e-05, 4.316e-05, 4.317e-05, 7147.44385378], [1516694940000, 4.317e-05, 4.317e-05, 4.304e-05, 4.317e-05, 1471.58979792], [1516695000000, 4.317e-05, 4.318e-05, 4.305e-05, 4.318e-05, 11766.22274401], [1516695060000, 4.318e-05, 4.318e-05, 4.3e-05, 4.318e-05, 64559.68468802], [1516695120000, 4.315e-05, 4.318e-05, 4.3e-05, 4.304e-05, 95507.99030459], [1516695180000, 4.318e-05, 4.325e-05, 4.315e-05, 4.325e-05, 31486.92287842], [1516695240000, 4.325e-05, 4.347e-05, 4.325e-05, 4.347e-05, 10726.28423371], [1516695300000, 4.337e-05, 4.347e-05, 4.337e-05, 4.347e-05, 1911.17482763], [1516695360000, 4.337e-05, 4.347e-05, 4.337e-05, 4.337e-05, 1371.18393778], [1516695420000, 4.337e-05, 4.355e-05, 4.337e-05, 4.347e-05, 4392.24835131], [1516695480000, 4.347e-05, 4.354e-05, 4.337e-05, 4.354e-05, 916.29128254], [1516695540000, 4.354e-05, 4.354e-05, 4.339e-05, 4.354e-05, 3930.51521282], [1516695600000, 4.354e-05, 4.354e-05, 4.351e-05, 4.351e-05, 452.3040116], [1516695660000, 4.348e-05, 4.348e-05, 4.341e-05, 4.341e-05, 2295.31151184], [1516695720000, 4.348e-05, 4.348e-05, 4.34e-05, 4.34e-05, 333.04943128], [1516695780000, 4.34e-05, 4.34e-05, 4.326e-05, 4.332e-05, 5194.70221887], [1516695840000, 4.327e-05, 4.332e-05, 4.327e-05, 4.332e-05, 1724.38410918], [1516695900000, 4.332e-05, 4.34e-05, 4.326e-05, 4.34e-05, 21265.69628207], [1516695960000, 4.34e-05, 4.34e-05, 4.34e-05, 4.34e-05, 737.39506817], [1516696020000, 4.34e-05, 4.34e-05, 4.334e-05, 4.339e-05, 2050.38228081], [1516696080000, 4.339e-05, 4.339e-05, 4.338e-05, 4.339e-05, 2996.347495], [1516696140000, 4.338e-05, 4.34e-05, 4.338e-05, 4.339e-05, 2366.80581368], [1516696200000, 4.339e-05, 4.34e-05, 4.332e-05, 4.334e-05, 12430.59335588], [1516696260000, 4.339e-05, 4.34e-05, 4.339e-05, 4.34e-05, 6729.44137132], [1516696320000, 4.339e-05, 4.34e-05, 4.334e-05, 4.334e-05, 21493.80937836], [1516696380000, 4.334e-05, 4.334e-05, 4.333e-05, 4.334e-05, 1732.04914845], [1516696440000, 4.334e-05, 4.339e-05, 4.333e-05, 4.339e-05, 3607.44486845], [1516696500000, 4.339e-05, 4.34e-05, 4.333e-05, 4.34e-05, 2204.12364868], [1516696560000, 4.339e-05, 4.339e-05, 4.333e-05, 4.339e-05, 1906.45259172], [1516696620000, 4.333e-05, 4.333e-05, 4.332e-05, 4.332e-05, 5161.95009306], [1516696680000, 4.332e-05, 4.332e-05, 4.33e-05, 4.33e-05, 366.57174968], [1516696740000, 4.332e-05, 4.34e-05, 4.332e-05, 4.339e-05, 83329.83643314], [1516696800000, 4.339e-05, 4.34e-05, 4.339e-05, 4.339e-05, 32385.12565349], [1516696860000, 4.34e-05, 4.34e-05, 4.34e-05, 4.34e-05, 6745.8276751], [1516696920000, 4.332e-05, 4.345e-05, 4.332e-05, 4.345e-05, 6894.95514983], [1516696980000, 4.345e-05, 4.345e-05, 4.345e-05, 4.345e-05, 1266.15171204], [1516697040000, 4.348e-05, 4.348e-05, 4.348e-05, 4.348e-05, 349.78854671], [1516697100000, 4.348e-05, 4.354e-05, 4.332e-05, 4.333e-05, 8376.38188255], [1516697160000, 4.351e-05, 4.351e-05, 4.348e-05, 4.351e-05, 830.78232004], [1516697220000, 4.348e-05, 4.351e-05, 4.348e-05, 4.351e-05, 6175.8852459], [1516697280000, 4.351e-05, 4.351e-05, 4.348e-05, 4.351e-05, 6026.23227377], [1516697340000, 4.351e-05, 4.36e-05, 4.348e-05, 4.349e-05, 8662.05482931], [1516697400000, 4.36e-05, 4.369e-05, 4.36e-05, 4.369e-05, 10554.15506846], [1516697460000, 4.369e-05, 4.37e-05, 4.36e-05, 4.37e-05, 58742.41381547], [1516697520000, 4.37e-05, 4.37e-05, 4.36e-05, 4.37e-05, 24292.04300485], [1516697580000, 4.37e-05, 4.37e-05, 4.35e-05, 4.37e-05, 39265.41683174], [1516697640000, 4.357e-05, 4.37e-05, 4.357e-05, 4.37e-05, 823.80642404], [1516697700000, 4.358e-05, 4.38e-05, 4.358e-05, 4.38e-05, 16539.73116332], [1516697760000, 4.379e-05, 4.379e-05, 4.362e-05, 4.362e-05, 19863.93485183], [1516697820000, 4.37e-05, 4.375e-05, 4.362e-05, 4.362e-05, 8696.36276717], [1516697880000, 4.374e-05, 4.374e-05, 4.363e-05, 4.372e-05, 783.72252578], [1516697940000, 4.373e-05, 4.373e-05, 4.371e-05, 4.373e-05, 21037.56330741], [1516698000000, 4.373e-05, 4.382e-05, 4.373e-05, 4.382e-05, 23079.02644324], [1516698060000, 4.382e-05, 4.39e-05, 4.382e-05, 4.382e-05, 7436.25295117], [1516698120000, 4.382e-05, 4.39e-05, 4.382e-05, 4.385e-05, 905.40677243], [1516698180000, 4.39e-05, 4.391e-05, 4.385e-05, 4.385e-05, 6857.72072308], [1516698240000, 4.385e-05, 4.388e-05, 4.382e-05, 4.388e-05, 45727.43179455], [1516698300000, 4.385e-05, 4.39e-05, 4.382e-05, 4.382e-05, 65475.79344397], [1516698360000, 4.38e-05, 4.38e-05, 4.349e-05, 4.378e-05, 17673.9410447], [1516698420000, 4.361e-05, 4.383e-05, 4.361e-05, 4.38e-05, 3012.34633469], [1516698480000, 4.38e-05, 4.383e-05, 4.369e-05, 4.369e-05, 4053.59943072], [1516698540000, 4.383e-05, 4.383e-05, 4.335e-05, 4.38e-05, 3801.75139046], [1516698600000, 4.376e-05, 4.378e-05, 4.375e-05, 4.378e-05, 6005.05358699], [1516698660000, 4.378e-05, 4.38e-05, 4.378e-05, 4.379e-05, 386.96395997], [1516698720000, 4.349e-05, 4.349e-05, 4.349e-05, 4.349e-05, 7597.58459766], [1516698780000, 4.353e-05, 4.353e-05, 4.352e-05, 4.352e-05, 459.83399165], [1516698840000, 4.353e-05, 4.353e-05, 4.352e-05, 4.353e-05, 1012.35789262], [1516698900000, 4.378e-05, 4.378e-05, 4.376e-05, 4.376e-05, 1691.67942052], [1516698960000, 4.353e-05, 4.374e-05, 4.353e-05, 4.371e-05, 455.80984182], [1516699020000, 4.371e-05, 4.371e-05, 4.355e-05, 4.356e-05, 1759.82435321], [1516699080000, 4.355e-05, 4.355e-05, 4.344e-05, 4.35e-05, 27359.54204564], [1516699140000, 4.371e-05, 4.371e-05, 4.352e-05, 4.352e-05, 665.35917659], [1516699200000, 4.37e-05, 4.37e-05, 4.35e-05, 4.37e-05, 2694.73483778], [1516699260000, 4.35e-05, 4.35e-05, 4.35e-05, 4.35e-05, 159.77524097], [1516699320000, 4.357e-05, 4.357e-05, 4.35e-05, 4.35e-05, 6658.49489217], [1516699380000, 4.36e-05, 4.36e-05, 4.358e-05, 4.358e-05, 893.04994398], [1516699440000, 4.36e-05, 4.37e-05, 4.358e-05, 4.37e-05, 2631.0952698], [1516699500000, 4.37e-05, 4.37e-05, 4.36e-05, 4.37e-05, 510.01816236], [1516699560000, 4.37e-05, 4.37e-05, 4.342e-05, 4.342e-05, 48085.90656974], [1516699620000, 4.346e-05, 4.354e-05, 4.346e-05, 4.354e-05, 13242.77455309], [1516699680000, 4.355e-05, 4.357e-05, 4.337e-05, 4.353e-05, 6266.72191147], [1516699740000, 4.353e-05, 4.36e-05, 4.338e-05, 4.338e-05, 11678.61438], [1516699800000, 4.352e-05, 4.354e-05, 4.338e-05, 4.354e-05, 13873.89049145], [1516699860000, 4.354e-05, 4.365e-05, 4.354e-05, 4.365e-05, 14626.76154901], [1516699920000, 4.365e-05, 4.365e-05, 4.364e-05, 4.364e-05, 330.74264069], [1516699980000, 4.364e-05, 4.365e-05, 4.354e-05, 4.361e-05, 5047.67060776], [1516700040000, 4.357e-05, 4.357e-05, 4.35e-05, 4.35e-05, 10298.70975162], [1516700100000, 4.338e-05, 4.354e-05, 4.338e-05, 4.354e-05, 2242.97087233], [1516700160000, 4.353e-05, 4.353e-05, 4.353e-05, 4.353e-05, 213.32377826], [1516700220000, 4.353e-05, 4.353e-05, 4.345e-05, 4.353e-05, 6358.67690354], [1516700280000, 4.353e-05, 4.354e-05, 4.353e-05, 4.354e-05, 4482.2637624], [1516700340000, 4.353e-05, 4.354e-05, 4.339e-05, 4.35e-05, 9347.19592636], [1516700400000, 4.34e-05, 4.353e-05, 4.337e-05, 4.339e-05, 9934.91136454], [1516700460000, 4.343e-05, 4.357e-05, 4.339e-05, 4.357e-05, 10346.47203854], [1516700520000, 4.356e-05, 4.356e-05, 4.347e-05, 4.356e-05, 3356.7100543], [1516700580000, 4.356e-05, 4.357e-05, 4.347e-05, 4.357e-05, 2643.35565654], [1516700640000, 4.348e-05, 4.348e-05, 4.338e-05, 4.338e-05, 2397.1673718], [1516700700000, 4.346e-05, 4.356e-05, 4.339e-05, 4.356e-05, 10371.09923839], [1516700760000, 4.342e-05, 4.356e-05, 4.335e-05, 4.356e-05, 47740.27924015], [1516700820000, 4.356e-05, 4.357e-05, 4.356e-05, 4.357e-05, 1995.45791828], [1516700880000, 4.357e-05, 4.365e-05, 4.357e-05, 4.365e-05, 4649.61506677], [1516700940000, 4.365e-05, 4.365e-05, 4.357e-05, 4.363e-05, 1240.11290908], [1516701000000, 4.364e-05, 4.37e-05, 4.363e-05, 4.363e-05, 3812.24986317], [1516701060000, 4.363e-05, 4.363e-05, 4.357e-05, 4.357e-05, 267.05802542], [1516701120000, 4.357e-05, 4.357e-05, 4.34e-05, 4.34e-05, 3549.4319545], [1516701180000, 4.357e-05, 4.357e-05, 4.335e-05, 4.336e-05, 6875.86470756], [1516701240000, 4.356e-05, 4.356e-05, 4.355e-05, 4.356e-05, 838.95129731], [1516701300000, 4.356e-05, 4.356e-05, 4.344e-05, 4.344e-05, 2662.80236322], [1516701360000, 4.356e-05, 4.356e-05, 4.356e-05, 4.356e-05, 300.90100299], [1516701420000, 4.353e-05, 4.353e-05, 4.334e-05, 4.335e-05, 6402.36809084], [1516701480000, 4.336e-05, 4.356e-05, 4.336e-05, 4.336e-05, 7020.8879716], [1516701540000, 4.356e-05, 4.356e-05, 4.336e-05, 4.336e-05, 1054.3273166], [1516701600000, 4.355e-05, 4.37e-05, 4.355e-05, 4.365e-05, 42867.78107832], [1516701660000, 4.365e-05, 4.37e-05, 4.357e-05, 4.37e-05, 11642.28759361], [1516701720000, 4.37e-05, 4.373e-05, 4.357e-05, 4.373e-05, 37762.63917283], [1516701780000, 4.37e-05, 4.37e-05, 4.336e-05, 4.336e-05, 1049.95835492], [1516701840000, 4.357e-05, 4.357e-05, 4.335e-05, 4.357e-05, 6003.34295771], [1516701900000, 4.357e-05, 4.358e-05, 4.357e-05, 4.358e-05, 5341.90069432], [1516701960000, 4.358e-05, 4.365e-05, 4.358e-05, 4.365e-05, 6458.42888745], [1516702020000, 4.365e-05, 4.365e-05, 4.357e-05, 4.357e-05, 8607.09899475], [1516702080000, 4.357e-05, 4.357e-05, 4.357e-05, 4.357e-05, 27765.66555148], [1516702140000, 4.357e-05, 4.369e-05, 4.357e-05, 4.365e-05, 2957.93494055], [1516702200000, 4.369e-05, 4.393e-05, 4.369e-05, 4.369e-05, 61877.12964089], [1516702260000, 4.37e-05, 4.39e-05, 4.358e-05, 4.36e-05, 7148.53736054], [1516702320000, 4.36e-05, 4.389e-05, 4.36e-05, 4.365e-05, 15516.34356746], [1516702380000, 4.383e-05, 4.383e-05, 4.365e-05, 4.365e-05, 4027.24391971], [1516702440000, 4.383e-05, 4.383e-05, 4.365e-05, 4.365e-05, 238.35233328], [1516702500000, 4.382e-05, 4.382e-05, 4.382e-05, 4.382e-05, 2506.88428192], [1516702560000, 4.383e-05, 4.4e-05, 4.382e-05, 4.4e-05, 94084.25045313], [1516702620000, 4.4e-05, 4.404e-05, 4.363e-05, 4.363e-05, 38997.18375329], [1516702680000, 4.363e-05, 4.378e-05, 4.363e-05, 4.371e-05, 13017.8232437], [1516702740000, 4.38e-05, 4.38e-05, 4.363e-05, 4.372e-05, 20781.18929115], [1516702800000, 4.367e-05, 4.374e-05, 4.367e-05, 4.374e-05, 8788.88111996], [1516702860000, 4.374e-05, 4.374e-05, 4.363e-05, 4.363e-05, 2665.7834103], [1516702920000, 4.365e-05, 4.374e-05, 4.36e-05, 4.374e-05, 47905.69332071], [1516702980000, 4.373e-05, 4.373e-05, 4.359e-05, 4.359e-05, 1852.79441788], [1516703040000, 4.359e-05, 4.374e-05, 4.358e-05, 4.374e-05, 26246.79672197], [1516703100000, 4.374e-05, 4.374e-05, 4.374e-05, 4.374e-05, 16.53224424], [1516703160000, 4.366e-05, 4.374e-05, 4.36e-05, 4.374e-05, 1170.52190227], [1516703220000, 4.359e-05, 4.359e-05, 4.359e-05, 4.359e-05, 4229.672997], [1516703280000, 4.359e-05, 4.364e-05, 4.351e-05, 4.356e-05, 22844.8502773], [1516703340000, 4.356e-05, 4.356e-05, 4.356e-05, 4.356e-05, 1612.04075897], [1516703400000, 4.356e-05, 4.356e-05, 4.345e-05, 4.354e-05, 7873.16288422], [1516703460000, 4.354e-05, 4.356e-05, 4.354e-05, 4.356e-05, 692.60045022], [1516703520000, 4.356e-05, 4.356e-05, 4.345e-05, 4.345e-05, 48860.18123604], [1516703580000, 4.345e-05, 4.355e-05, 4.345e-05, 4.345e-05, 2406.0115219], [1516703640000, 4.345e-05, 4.355e-05, 4.345e-05, 4.355e-05, 9353.96698054], [1516703700000, 4.345e-05, 4.355e-05, 4.345e-05, 4.355e-05, 3701.49964321], [1516703760000, 4.35e-05, 4.355e-05, 4.35e-05, 4.35e-05, 93.91064976], [1516703820000, 4.35e-05, 4.354e-05, 4.35e-05, 4.352e-05, 1587.09729239], [1516703880000, 4.35e-05, 4.35e-05, 4.334e-05, 4.339e-05, 25773.08181317], [1516703940000, 4.339e-05, 4.339e-05, 4.334e-05, 4.339e-05, 1927.74994911], [1516704000000, 4.334e-05, 4.334e-05, 4.327e-05, 4.334e-05, 25052.75089058], [1516704060000, 4.334e-05, 4.334e-05, 4.327e-05, 4.333e-05, 5358.79885853], [1516704120000, 4.333e-05, 4.333e-05, 4.328e-05, 4.333e-05, 1687.92143832], [1516704180000, 4.333e-05, 4.351e-05, 4.333e-05, 4.338e-05, 17513.31214098], [1516704240000, 4.338e-05, 4.356e-05, 4.327e-05, 4.356e-05, 34274.54090409], [1516704300000, 4.356e-05, 4.356e-05, 4.356e-05, 4.356e-05, 1333.8691523], [1516704360000, 4.33e-05, 4.356e-05, 4.33e-05, 4.335e-05, 6906.6214538], [1516704420000, 4.335e-05, 4.386e-05, 4.327e-05, 4.335e-05, 8867.56189941], [1516704480000, 4.336e-05, 4.336e-05, 4.336e-05, 4.336e-05, 384.61858107], [1516704540000, 4.336e-05, 4.336e-05, 4.336e-05, 4.336e-05, 50.85918647], [1516704600000, 4.365e-05, 4.366e-05, 4.338e-05, 4.36e-05, 771.2116822], [1516704660000, 4.355e-05, 4.36e-05, 4.338e-05, 4.338e-05, 10510.498431], [1516704720000, 4.338e-05, 4.353e-05, 4.338e-05, 4.353e-05, 5818.01839868], [1516704780000, 4.338e-05, 4.338e-05, 4.338e-05, 4.338e-05, 106.7024], [1516704840000, 4.344e-05, 4.35e-05, 4.338e-05, 4.338e-05, 7221.10856191], [1516704900000, 4.35e-05, 4.35e-05, 4.338e-05, 4.35e-05, 147.66652602], [1516704960000, 4.35e-05, 4.352e-05, 4.339e-05, 4.351e-05, 937.93200643], [1516705020000, 4.339e-05, 4.35e-05, 4.339e-05, 4.339e-05, 5018.62700664], [1516705080000, 4.339e-05, 4.355e-05, 4.336e-05, 4.355e-05, 13746.69685672], [1516705140000, 4.354e-05, 4.354e-05, 4.339e-05, 4.339e-05, 28495.10681369], [1516705200000, 4.339e-05, 4.359e-05, 4.339e-05, 4.359e-05, 529.71478902], [1516705260000, 4.339e-05, 4.359e-05, 4.335e-05, 4.335e-05, 1924.52495247], [1516705320000, 4.335e-05, 4.335e-05, 4.322e-05, 4.335e-05, 52162.24477385], [1516705380000, 4.323e-05, 4.357e-05, 4.322e-05, 4.357e-05, 9104.89279734], [1516705440000, 4.357e-05, 4.358e-05, 4.322e-05, 4.356e-05, 4882.40376073], [1516705500000, 4.324e-05, 4.356e-05, 4.324e-05, 4.326e-05, 5718.48139951], [1516705560000, 4.326e-05, 4.356e-05, 4.326e-05, 4.356e-05, 7078.4199666], [1516705620000, 4.356e-05, 4.36e-05, 4.331e-05, 4.331e-05, 7814.36352484], [1516705740000, 4.34e-05, 4.378e-05, 4.331e-05, 4.37e-05, 2298.3386595], [1516705800000, 4.362e-05, 4.362e-05, 4.335e-05, 4.335e-05, 3493.84140881], [1516705860000, 4.336e-05, 4.362e-05, 4.336e-05, 4.362e-05, 3204.80635384], [1516705920000, 4.362e-05, 4.365e-05, 4.331e-05, 4.337e-05, 12031.7128454], [1516705980000, 4.337e-05, 4.366e-05, 4.332e-05, 4.332e-05, 5927.79437574], [1516706040000, 4.366e-05, 4.37e-05, 4.366e-05, 4.37e-05, 50.151003], [1516706100000, 4.335e-05, 4.368e-05, 4.335e-05, 4.368e-05, 4581.64349987], [1516706160000, 4.368e-05, 4.378e-05, 4.347e-05, 4.37e-05, 31272.83515142], [1516706220000, 4.37e-05, 4.372e-05, 4.368e-05, 4.368e-05, 57269.91222851], [1516706280000, 4.368e-05, 4.369e-05, 4.368e-05, 4.369e-05, 8123.19590616], [1516706340000, 4.368e-05, 4.372e-05, 4.347e-05, 4.37e-05, 5294.38130622], [1516706400000, 4.37e-05, 4.372e-05, 4.37e-05, 4.372e-05, 830.66445471], [1516706460000, 4.372e-05, 4.372e-05, 4.334e-05, 4.334e-05, 11356.67519798], [1516706520000, 4.345e-05, 4.345e-05, 4.335e-05, 4.345e-05, 354.19788137], [1516706640000, 4.345e-05, 4.345e-05, 4.335e-05, 4.335e-05, 3082.70554602], [1516706700000, 4.345e-05, 4.369e-05, 4.333e-05, 4.336e-05, 15828.78610317], [1516706760000, 4.334e-05, 4.365e-05, 4.326e-05, 4.326e-05, 24790.89477972], [1516706820000, 4.325e-05, 4.336e-05, 4.309e-05, 4.33e-05, 59595.36147798], [1516706880000, 4.327e-05, 4.33e-05, 4.301e-05, 4.33e-05, 10437.36922448], [1516706940000, 4.33e-05, 4.33e-05, 4.309e-05, 4.309e-05, 5636.6228434], [1516707000000, 4.311e-05, 4.33e-05, 4.311e-05, 4.33e-05, 4581.44370757], [1516707060000, 4.33e-05, 4.336e-05, 4.311e-05, 4.311e-05, 20352.83270164], [1516707120000, 4.311e-05, 4.336e-05, 4.311e-05, 4.336e-05, 5236.01703636], [1516707180000, 4.351e-05, 4.351e-05, 4.336e-05, 4.336e-05, 3791.57334218], [1516707240000, 4.336e-05, 4.36e-05, 4.315e-05, 4.329e-05, 13617.29006508], [1516707300000, 4.334e-05, 4.336e-05, 4.334e-05, 4.336e-05, 401.12403454], [1516707360000, 4.339e-05, 4.36e-05, 4.334e-05, 4.36e-05, 19082.61523684], [1516707420000, 4.359e-05, 4.359e-05, 4.34e-05, 4.34e-05, 11186.56169881], [1516707480000, 4.33e-05, 4.356e-05, 4.33e-05, 4.356e-05, 20582.40187317], [1516707540000, 4.356e-05, 4.356e-05, 4.331e-05, 4.355e-05, 8483.8707974], [1516707600000, 4.354e-05, 4.358e-05, 4.33e-05, 4.33e-05, 4031.06575055], [1516707660000, 4.356e-05, 4.356e-05, 4.332e-05, 4.355e-05, 25693.58308423], [1516707720000, 4.335e-05, 4.36e-05, 4.335e-05, 4.36e-05, 81671.53750119], [1516707780000, 4.362e-05, 4.364e-05, 4.335e-05, 4.364e-05, 22678.30739727], [1516707840000, 4.351e-05, 4.36e-05, 4.33e-05, 4.352e-05, 65514.54858162], [1516707900000, 4.352e-05, 4.375e-05, 4.347e-05, 4.351e-05, 108981.10905462], [1516707960000, 4.351e-05, 4.351e-05, 4.34e-05, 4.34e-05, 14894.0233942], [1516708020000, 4.349e-05, 4.366e-05, 4.332e-05, 4.363e-05, 30970.23676058], [1516708080000, 4.363e-05, 4.369e-05, 4.334e-05, 4.369e-05, 59270.37439126], [1516708140000, 4.368e-05, 4.375e-05, 4.342e-05, 4.372e-05, 74947.30004098], [1516708200000, 4.342e-05, 4.372e-05, 4.342e-05, 4.344e-05, 74556.02725933], [1516708260000, 4.367e-05, 4.382e-05, 4.345e-05, 4.347e-05, 47865.47052235], [1516708320000, 4.348e-05, 4.365e-05, 4.346e-05, 4.347e-05, 11357.2914319], [1516708380000, 4.348e-05, 4.362e-05, 4.33e-05, 4.335e-05, 73932.68405846], [1516708440000, 4.338e-05, 4.355e-05, 4.335e-05, 4.335e-05, 103413.87513239], [1516708500000, 4.34e-05, 4.356e-05, 4.336e-05, 4.337e-05, 62463.32209172], [1516708560000, 4.352e-05, 4.355e-05, 4.338e-05, 4.338e-05, 3681.17579603], [1516708620000, 4.351e-05, 4.356e-05, 4.338e-05, 4.356e-05, 43070.048189], [1516708680000, 4.339e-05, 4.355e-05, 4.339e-05, 4.339e-05, 13254.71687168], [1516708740000, 4.343e-05, 4.367e-05, 4.343e-05, 4.367e-05, 40213.10150242], [1516708800000, 4.363e-05, 4.373e-05, 4.346e-05, 4.355e-05, 19684.55591029], [1516708860000, 4.361e-05, 4.368e-05, 4.355e-05, 4.361e-05, 9260.16344255], [1516708920000, 4.355e-05, 4.355e-05, 4.346e-05, 4.346e-05, 4944.76929381], [1516708980000, 4.346e-05, 4.361e-05, 4.346e-05, 4.347e-05, 5927.74314187], [1516709040000, 4.355e-05, 4.355e-05, 4.347e-05, 4.347e-05, 13132.93793577], [1516709100000, 4.354e-05, 4.361e-05, 4.347e-05, 4.361e-05, 59930.30841659], [1516709160000, 4.361e-05, 4.361e-05, 4.348e-05, 4.361e-05, 20721.1646849], [1516709220000, 4.374e-05, 4.374e-05, 4.35e-05, 4.36e-05, 4917.99532665], [1516709280000, 4.36e-05, 4.361e-05, 4.35e-05, 4.35e-05, 25463.45403527], [1516709340000, 4.361e-05, 4.361e-05, 4.351e-05, 4.361e-05, 20696.59618736], [1516709400000, 4.361e-05, 4.361e-05, 4.346e-05, 4.361e-05, 16350.02139006], [1516709460000, 4.361e-05, 4.361e-05, 4.346e-05, 4.346e-05, 1276.76736355], [1516709520000, 4.355e-05, 4.372e-05, 4.345e-05, 4.371e-05, 6039.70555849], [1516709580000, 4.346e-05, 4.367e-05, 4.346e-05, 4.367e-05, 3565.05997882], [1516709640000, 4.366e-05, 4.366e-05, 4.366e-05, 4.366e-05, 1086.93702705], [1516709700000, 4.346e-05, 4.346e-05, 4.346e-05, 4.346e-05, 10041.00682949], [1516709760000, 4.345e-05, 4.375e-05, 4.345e-05, 4.375e-05, 18436.60208569], [1516709820000, 4.375e-05, 4.375e-05, 4.348e-05, 4.373e-05, 412.64422616], [1516709880000, 4.351e-05, 4.376e-05, 4.35e-05, 4.35e-05, 28556.20434794], [1516709940000, 4.35e-05, 4.35e-05, 4.35e-05, 4.35e-05, 2563.22913418], [1516710000000, 4.351e-05, 4.376e-05, 4.351e-05, 4.375e-05, 7717.67633039], [1516710060000, 4.375e-05, 4.376e-05, 4.375e-05, 4.375e-05, 11466.3829517], [1516710120000, 4.375e-05, 4.375e-05, 4.375e-05, 4.375e-05, 405.7762451], [1516710180000, 4.375e-05, 4.376e-05, 4.375e-05, 4.376e-05, 19754.09421415], [1516710240000, 4.375e-05, 4.376e-05, 4.375e-05, 4.376e-05, 4279.91494432], [1516710300000, 4.375e-05, 4.375e-05, 4.375e-05, 4.375e-05, 61865.03590257], [1516710360000, 4.375e-05, 4.376e-05, 4.375e-05, 4.375e-05, 150.4], [1516710420000, 4.375e-05, 4.375e-05, 4.375e-05, 4.375e-05, 8018.11091088], [1516710480000, 4.375e-05, 4.384e-05, 4.375e-05, 4.376e-05, 3870.49876086], [1516710540000, 4.376e-05, 4.384e-05, 4.375e-05, 4.375e-05, 3927.43087517], [1516710600000, 4.383e-05, 4.391e-05, 4.375e-05, 4.384e-05, 29180.42562601], [1516710660000, 4.376e-05, 4.382e-05, 4.375e-05, 4.375e-05, 201.91569477], [1516710720000, 4.375e-05, 4.375e-05, 4.375e-05, 4.375e-05, 7517.39361031], [1516710780000, 4.375e-05, 4.375e-05, 4.375e-05, 4.375e-05, 2013.18807207], [1516710840000, 4.375e-05, 4.381e-05, 4.375e-05, 4.375e-05, 2709.56504106], [1516710900000, 4.381e-05, 4.381e-05, 4.375e-05, 4.375e-05, 3282.02778284], [1516710960000, 4.375e-05, 4.381e-05, 4.375e-05, 4.381e-05, 2725.350752], [1516711020000, 4.375e-05, 4.381e-05, 4.375e-05, 4.381e-05, 323.51112579], [1516711080000, 4.381e-05, 4.399e-05, 4.38e-05, 4.38e-05, 14907.42342192], [1516711140000, 4.399e-05, 4.399e-05, 4.381e-05, 4.381e-05, 1823.33407247], [1516711200000, 4.399e-05, 4.399e-05, 4.382e-05, 4.382e-05, 18350.80505861], [1516711260000, 4.399e-05, 4.399e-05, 4.384e-05, 4.399e-05, 114.04431934], [1516711320000, 4.399e-05, 4.399e-05, 4.399e-05, 4.399e-05, 11441.51990668], [1516711380000, 4.399e-05, 4.399e-05, 4.382e-05, 4.382e-05, 2358.98880961], [1516711440000, 4.382e-05, 4.384e-05, 4.382e-05, 4.382e-05, 5780.29404889], [1516711500000, 4.382e-05, 4.399e-05, 4.382e-05, 4.382e-05, 7081.47154228], [1516711560000, 4.39e-05, 4.4e-05, 4.382e-05, 4.382e-05, 7257.44493428], [1516711620000, 4.383e-05, 4.405e-05, 4.383e-05, 4.405e-05, 121129.34682887], [1516711680000, 4.401e-05, 4.401e-05, 4.396e-05, 4.396e-05, 11194.5952281], [1516711740000, 4.385e-05, 4.396e-05, 4.385e-05, 4.396e-05, 3114.154752], [1516711800000, 4.399e-05, 4.4e-05, 4.396e-05, 4.4e-05, 3138.55622705], [1516711860000, 4.396e-05, 4.399e-05, 4.396e-05, 4.396e-05, 9134.79383425], [1516711920000, 4.4e-05, 4.4e-05, 4.385e-05, 4.385e-05, 12030.72970875], [1516711980000, 4.385e-05, 4.385e-05, 4.384e-05, 4.385e-05, 711.2232803], [1516712040000, 4.385e-05, 4.385e-05, 4.385e-05, 4.385e-05, 91.6548561], [1516712100000, 4.385e-05, 4.385e-05, 4.385e-05, 4.385e-05, 306.6885056], [1516712160000, 4.385e-05, 4.385e-05, 4.38e-05, 4.38e-05, 7778.61831162], [1516712220000, 4.38e-05, 4.38e-05, 4.38e-05, 4.38e-05, 10166.96364034], [1516712280000, 4.38e-05, 4.38e-05, 4.35e-05, 4.35e-05, 9352.07478376], [1516712340000, 4.385e-05, 4.385e-05, 4.35e-05, 4.35e-05, 5005.53510009], [1516712400000, 4.351e-05, 4.384e-05, 4.351e-05, 4.37e-05, 1537.6370982], [1516712460000, 4.37e-05, 4.37e-05, 4.352e-05, 4.352e-05, 5128.82425124], [1516712520000, 4.37e-05, 4.37e-05, 4.353e-05, 4.37e-05, 3231.36121776], [1516712580000, 4.37e-05, 4.382e-05, 4.37e-05, 4.382e-05, 158.24511307], [1516712640000, 4.37e-05, 4.382e-05, 4.37e-05, 4.37e-05, 277.71599543], [1516712700000, 4.37e-05, 4.382e-05, 4.352e-05, 4.352e-05, 14623.13641293], [1516712760000, 4.38e-05, 4.381e-05, 4.379e-05, 4.381e-05, 857.98802463], [1516712820000, 4.38e-05, 4.381e-05, 4.354e-05, 4.354e-05, 24153.74889459], [1516712880000, 4.354e-05, 4.381e-05, 4.354e-05, 4.381e-05, 2622.20418879], [1516712940000, 4.382e-05, 4.382e-05, 4.38e-05, 4.38e-05, 6458.64927623], [1516713000000, 4.352e-05, 4.381e-05, 4.352e-05, 4.381e-05, 3035.17014019], [1516713060000, 4.38e-05, 4.38e-05, 4.379e-05, 4.379e-05, 558.67522937], [1516713120000, 4.365e-05, 4.378e-05, 4.346e-05, 4.378e-05, 16336.74383935], [1516713180000, 4.376e-05, 4.376e-05, 4.376e-05, 4.376e-05, 57.77943435], [1516713240000, 4.355e-05, 4.355e-05, 4.355e-05, 4.355e-05, 67.0], [1516713300000, 4.37e-05, 4.378e-05, 4.355e-05, 4.374e-05, 8686.78062578], [1516713360000, 4.374e-05, 4.378e-05, 4.37e-05, 4.378e-05, 11823.91638289], [1516713420000, 4.37e-05, 4.378e-05, 4.37e-05, 4.378e-05, 1000.60976693], [1516713480000, 4.372e-05, 4.38e-05, 4.372e-05, 4.38e-05, 17100.7420581], [1516713540000, 4.38e-05, 4.385e-05, 4.378e-05, 4.385e-05, 10817.09273474], [1516713600000, 4.38e-05, 4.385e-05, 4.371e-05, 4.371e-05, 937.413716], [1516713660000, 4.38e-05, 4.38e-05, 4.371e-05, 4.379e-05, 365.73146133], [1516713720000, 4.379e-05, 4.38e-05, 4.379e-05, 4.379e-05, 6308.23411215], [1516713780000, 4.379e-05, 4.4e-05, 4.379e-05, 4.379e-05, 7038.07413024], [1516713840000, 4.399e-05, 4.4e-05, 4.379e-05, 4.379e-05, 2781.69444392], [1516713900000, 4.379e-05, 4.399e-05, 4.379e-05, 4.399e-05, 916.33761218], [1516713960000, 4.379e-05, 4.398e-05, 4.379e-05, 4.398e-05, 128.09677658], [1516714020000, 4.398e-05, 4.398e-05, 4.398e-05, 4.398e-05, 4668.24072152], [1516714080000, 4.399e-05, 4.399e-05, 4.38e-05, 4.38e-05, 381.16878319], [1516714140000, 4.399e-05, 4.4e-05, 4.399e-05, 4.4e-05, 4204.40996193], [1516714200000, 4.4e-05, 4.4e-05, 4.399e-05, 4.4e-05, 12428.23801253], [1516714260000, 4.4e-05, 4.4e-05, 4.399e-05, 4.399e-05, 23887.12651089], [1516714320000, 4.399e-05, 4.4e-05, 4.399e-05, 4.399e-05, 1297.61027245], [1516714380000, 4.4e-05, 4.4e-05, 4.399e-05, 4.399e-05, 2485.65197114], [1516714440000, 4.4e-05, 4.4e-05, 4.399e-05, 4.4e-05, 5782.32122762], [1516714500000, 4.399e-05, 4.4e-05, 4.399e-05, 4.399e-05, 11150.25308551], [1516714560000, 4.4e-05, 4.4e-05, 4.399e-05, 4.4e-05, 1405.53591446], [1516714620000, 4.4e-05, 4.4e-05, 4.399e-05, 4.4e-05, 3860.42003849], [1516714680000, 4.399e-05, 4.4e-05, 4.399e-05, 4.4e-05, 7966.51790985], [1516714740000, 4.399e-05, 4.4e-05, 4.399e-05, 4.399e-05, 5727.13379797], [1516714800000, 4.399e-05, 4.399e-05, 4.399e-05, 4.399e-05, 6025.71907672], [1516714860000, 4.383e-05, 4.399e-05, 4.38e-05, 4.38e-05, 14228.5448588], [1516714920000, 4.38e-05, 4.38e-05, 4.378e-05, 4.378e-05, 4395.01491089], [1516714980000, 4.38e-05, 4.38e-05, 4.378e-05, 4.378e-05, 5459.392954], [1516715040000, 4.378e-05, 4.38e-05, 4.378e-05, 4.378e-05, 4725.88877389], [1516715100000, 4.378e-05, 4.38e-05, 4.378e-05, 4.38e-05, 4036.35575755], [1516715160000, 4.38e-05, 4.383e-05, 4.38e-05, 4.383e-05, 117.21825807], [1516715220000, 4.383e-05, 4.383e-05, 4.38e-05, 4.383e-05, 683.77632936], [1516715280000, 4.383e-05, 4.398e-05, 4.383e-05, 4.398e-05, 2058.55074464], [1516715340000, 4.398e-05, 4.398e-05, 4.394e-05, 4.394e-05, 1807.23100703], [1516715400000, 4.394e-05, 4.398e-05, 4.394e-05, 4.398e-05, 6198.14418319], [1516715460000, 4.399e-05, 4.399e-05, 4.398e-05, 4.399e-05, 10480.232741], [1516715520000, 4.399e-05, 4.399e-05, 4.398e-05, 4.399e-05, 16814.86357592], [1516715580000, 4.399e-05, 4.399e-05, 4.398e-05, 4.398e-05, 3111.54361158], [1516715640000, 4.398e-05, 4.399e-05, 4.398e-05, 4.398e-05, 2600.23186506], [1516715700000, 4.398e-05, 4.398e-05, 4.394e-05, 4.394e-05, 2219.2539052], [1516715760000, 4.395e-05, 4.395e-05, 4.394e-05, 4.394e-05, 16528.89474186], [1516715820000, 4.383e-05, 4.398e-05, 4.383e-05, 4.383e-05, 1404.74159857], [1516715880000, 4.387e-05, 4.399e-05, 4.382e-05, 4.383e-05, 32190.5492997], [1516715940000, 4.399e-05, 4.4e-05, 4.384e-05, 4.4e-05, 103100.54305504], [1516716000000, 4.4e-05, 4.4e-05, 4.385e-05, 4.4e-05, 21478.75039351], [1516716060000, 4.387e-05, 4.42e-05, 4.387e-05, 4.4e-05, 15925.80194792], [1516716120000, 4.4e-05, 4.42e-05, 4.4e-05, 4.42e-05, 13760.89656245], [1516716180000, 4.419e-05, 4.42e-05, 4.388e-05, 4.42e-05, 16173.72414278], [1516716240000, 4.401e-05, 4.43e-05, 4.4e-05, 4.43e-05, 51957.32465549], [1516716300000, 4.43e-05, 4.431e-05, 4.386e-05, 4.403e-05, 85557.44704504], [1516716360000, 4.43e-05, 4.431e-05, 4.402e-05, 4.429e-05, 69361.57390029], [1516716420000, 4.415e-05, 4.431e-05, 4.402e-05, 4.427e-05, 33753.05620586], [1516716480000, 4.42e-05, 4.428e-05, 4.42e-05, 4.428e-05, 13383.07261821], [1516716540000, 4.412e-05, 4.435e-05, 4.412e-05, 4.428e-05, 6503.94974426], [1516716600000, 4.428e-05, 4.434e-05, 4.414e-05, 4.433e-05, 11158.94361471], [1516716660000, 4.433e-05, 4.433e-05, 4.417e-05, 4.432e-05, 8364.13692735], [1516716720000, 4.432e-05, 4.432e-05, 4.39e-05, 4.39e-05, 112297.7979768], [1516716780000, 4.39e-05, 4.39e-05, 4.387e-05, 4.39e-05, 79492.63548213], [1516716840000, 4.39e-05, 4.39e-05, 4.385e-05, 4.39e-05, 6089.79585746], [1516716900000, 4.39e-05, 4.39e-05, 4.388e-05, 4.388e-05, 6992.68485792], [1516716960000, 4.389e-05, 4.39e-05, 4.389e-05, 4.39e-05, 11976.57057734], [1516717020000, 4.39e-05, 4.39e-05, 4.389e-05, 4.39e-05, 11492.18115803], [1516717080000, 4.39e-05, 4.39e-05, 4.388e-05, 4.39e-05, 10197.9792394], [1516717140000, 4.388e-05, 4.388e-05, 4.385e-05, 4.385e-05, 2524.51957923], [1516717200000, 4.385e-05, 4.385e-05, 4.383e-05, 4.383e-05, 16278.60247032], [1516717260000, 4.383e-05, 4.388e-05, 4.383e-05, 4.388e-05, 12395.03566953], [1516717320000, 4.388e-05, 4.39e-05, 4.388e-05, 4.39e-05, 4521.87315822], [1516717380000, 4.389e-05, 4.389e-05, 4.385e-05, 4.389e-05, 7199.78799125], [1516717440000, 4.388e-05, 4.39e-05, 4.388e-05, 4.389e-05, 7983.83047204], [1516717500000, 4.389e-05, 4.389e-05, 4.388e-05, 4.388e-05, 1515.50591767], [1516717560000, 4.388e-05, 4.389e-05, 4.383e-05, 4.383e-05, 6921.0210457], [1516717620000, 4.383e-05, 4.389e-05, 4.383e-05, 4.389e-05, 3237.3549569], [1516717680000, 4.389e-05, 4.389e-05, 4.382e-05, 4.382e-05, 9982.62638197], [1516717740000, 4.382e-05, 4.384e-05, 4.381e-05, 4.381e-05, 27060.72376322], [1516717800000, 4.381e-05, 4.385e-05, 4.378e-05, 4.38e-05, 32320.49014124], [1516717860000, 4.382e-05, 4.382e-05, 4.382e-05, 4.382e-05, 911.55936168], [1516717920000, 4.382e-05, 4.385e-05, 4.381e-05, 4.384e-05, 10793.1892949], [1516717980000, 4.384e-05, 4.385e-05, 4.38e-05, 4.38e-05, 36882.75935823], [1516718040000, 4.385e-05, 4.408e-05, 4.385e-05, 4.39e-05, 9947.64565312], [1516718100000, 4.39e-05, 4.39e-05, 4.39e-05, 4.39e-05, 12734.8692261], [1516718160000, 4.4e-05, 4.408e-05, 4.4e-05, 4.408e-05, 3556.41270978], [1516718220000, 4.408e-05, 4.42e-05, 4.4e-05, 4.42e-05, 6034.06940381], [1516718280000, 4.408e-05, 4.42e-05, 4.389e-05, 4.389e-05, 5728.77034606], [1516718340000, 4.408e-05, 4.408e-05, 4.408e-05, 4.408e-05, 19358.75859787], [1516718400000, 4.408e-05, 4.408e-05, 4.4e-05, 4.4e-05, 1952.09316571], [1516718460000, 4.4e-05, 4.4e-05, 4.39e-05, 4.39e-05, 1198.53165441], [1516718520000, 4.39e-05, 4.4e-05, 4.39e-05, 4.4e-05, 5197.36567195], [1516718580000, 4.4e-05, 4.4e-05, 4.391e-05, 4.4e-05, 15183.15255293], [1516718640000, 4.391e-05, 4.391e-05, 4.39e-05, 4.39e-05, 6159.80283139], [1516718700000, 4.391e-05, 4.391e-05, 4.39e-05, 4.391e-05, 724.95437509], [1516718760000, 4.391e-05, 4.4e-05, 4.39e-05, 4.39e-05, 6957.83391926], [1516718820000, 4.39e-05, 4.42e-05, 4.39e-05, 4.42e-05, 6055.77445794], [1516718880000, 4.415e-05, 4.415e-05, 4.4e-05, 4.408e-05, 16170.55519217], [1516718940000, 4.407e-05, 4.408e-05, 4.4e-05, 4.408e-05, 5772.02893449], [1516719000000, 4.407e-05, 4.408e-05, 4.4e-05, 4.4e-05, 4244.27546266], [1516719060000, 4.399e-05, 4.399e-05, 4.399e-05, 4.399e-05, 11431.15148792], [1516719120000, 4.399e-05, 4.4e-05, 4.399e-05, 4.4e-05, 65575.50058143], [1516719180000, 4.4e-05, 4.408e-05, 4.4e-05, 4.401e-05, 71111.18881785], [1516719240000, 4.401e-05, 4.401e-05, 4.4e-05, 4.4e-05, 14745.6515796], [1516719300000, 4.4e-05, 4.401e-05, 4.4e-05, 4.401e-05, 6715.24846421], [1516719360000, 4.401e-05, 4.401e-05, 4.399e-05, 4.401e-05, 52036.70042002], [1516719420000, 4.401e-05, 4.41e-05, 4.399e-05, 4.399e-05, 110938.51786915], [1516719480000, 4.4e-05, 4.422e-05, 4.399e-05, 4.402e-05, 18709.92680823], [1516719540000, 4.401e-05, 4.402e-05, 4.401e-05, 4.401e-05, 5339.1973316], [1516719600000, 4.402e-05, 4.402e-05, 4.401e-05, 4.402e-05, 799.54220656], [1516719660000, 4.403e-05, 4.432e-05, 4.402e-05, 4.432e-05, 8927.12265048], [1516719720000, 4.43e-05, 4.452e-05, 4.405e-05, 4.448e-05, 128563.6215491], [1516719780000, 4.416e-05, 4.447e-05, 4.414e-05, 4.419e-05, 12301.24821984], [1516719840000, 4.419e-05, 4.434e-05, 4.418e-05, 4.433e-05, 13355.60067446], [1516719900000, 4.428e-05, 4.454e-05, 4.422e-05, 4.454e-05, 39125.8573556], [1516719960000, 4.431e-05, 4.453e-05, 4.423e-05, 4.432e-05, 136248.93166674], [1516720020000, 4.431e-05, 4.458e-05, 4.422e-05, 4.434e-05, 55523.00231321], [1516720080000, 4.435e-05, 4.458e-05, 4.435e-05, 4.436e-05, 56494.97026407], [1516720140000, 4.445e-05, 4.448e-05, 4.436e-05, 4.447e-05, 65031.05996212], [1516720200000, 4.44e-05, 4.459e-05, 4.44e-05, 4.459e-05, 40354.92925302], [1516720260000, 4.453e-05, 4.468e-05, 4.453e-05, 4.458e-05, 39206.01932664], [1516720320000, 4.462e-05, 4.468e-05, 4.436e-05, 4.45e-05, 35702.49521306], [1516720380000, 4.457e-05, 4.468e-05, 4.45e-05, 4.468e-05, 19070.08822665], [1516720440000, 4.468e-05, 4.468e-05, 4.451e-05, 4.451e-05, 18540.70903052], [1516720500000, 4.453e-05, 4.466e-05, 4.453e-05, 4.466e-05, 2039.67727289], [1516720560000, 4.453e-05, 4.465e-05, 4.453e-05, 4.453e-05, 17540.79297619], [1516720620000, 4.465e-05, 4.476e-05, 4.465e-05, 4.468e-05, 16043.48193148], [1516720680000, 4.469e-05, 4.477e-05, 4.452e-05, 4.452e-05, 46808.11635409], [1516720740000, 4.452e-05, 4.475e-05, 4.452e-05, 4.453e-05, 21549.71987454], [1516720800000, 4.453e-05, 4.453e-05, 4.446e-05, 4.446e-05, 28903.79049257], [1516720860000, 4.45e-05, 4.451e-05, 4.446e-05, 4.45e-05, 29908.72367167], [1516720920000, 4.45e-05, 4.453e-05, 4.434e-05, 4.447e-05, 59467.11835644], [1516720980000, 4.447e-05, 4.453e-05, 4.428e-05, 4.453e-05, 16789.55280062], [1516721040000, 4.435e-05, 4.452e-05, 4.427e-05, 4.452e-05, 19377.18859494], [1516721100000, 4.428e-05, 4.451e-05, 4.428e-05, 4.451e-05, 17151.01023915], [1516721160000, 4.432e-05, 4.453e-05, 4.429e-05, 4.452e-05, 23860.75905492], [1516721220000, 4.452e-05, 4.47e-05, 4.43e-05, 4.453e-05, 19774.88120188], [1516721280000, 4.453e-05, 4.47e-05, 4.452e-05, 4.47e-05, 10189.40037621], [1516721340000, 4.453e-05, 4.453e-05, 4.441e-05, 4.453e-05, 20685.87891062], [1516721400000, 4.45e-05, 4.47e-05, 4.45e-05, 4.47e-05, 27849.34104868], [1516721460000, 4.469e-05, 4.474e-05, 4.454e-05, 4.474e-05, 17685.9721438], [1516721520000, 4.468e-05, 4.476e-05, 4.455e-05, 4.457e-05, 21787.49868839], [1516721580000, 4.463e-05, 4.463e-05, 4.458e-05, 4.463e-05, 5936.76620836], [1516721640000, 4.468e-05, 4.488e-05, 4.468e-05, 4.48e-05, 114503.66407371], [1516721700000, 4.475e-05, 4.48e-05, 4.475e-05, 4.479e-05, 26609.87188737], [1516721760000, 4.475e-05, 4.479e-05, 4.463e-05, 4.463e-05, 25306.51501385], [1516721820000, 4.463e-05, 4.47e-05, 4.463e-05, 4.47e-05, 4799.98094483], [1516721880000, 4.463e-05, 4.47e-05, 4.463e-05, 4.463e-05, 11443.55765298], [1516721940000, 4.462e-05, 4.463e-05, 4.45e-05, 4.462e-05, 11160.83389232], [1516722000000, 4.46e-05, 4.46e-05, 4.43e-05, 4.44e-05, 11701.62928903], [1516722060000, 4.439e-05, 4.45e-05, 4.43e-05, 4.445e-05, 72592.852315], [1516722120000, 4.445e-05, 4.449e-05, 4.445e-05, 4.448e-05, 9513.84289687], [1516722180000, 4.449e-05, 4.45e-05, 4.449e-05, 4.45e-05, 6915.02430067], [1516722240000, 4.449e-05, 4.45e-05, 4.449e-05, 4.45e-05, 40374.93489358], [1516722300000, 4.45e-05, 4.46e-05, 4.45e-05, 4.459e-05, 10725.31990269], [1516722360000, 4.459e-05, 4.459e-05, 4.456e-05, 4.456e-05, 5483.34236329], [1516722420000, 4.456e-05, 4.459e-05, 4.456e-05, 4.456e-05, 18075.4150524], [1516722480000, 4.457e-05, 4.459e-05, 4.457e-05, 4.457e-05, 12595.44633731], [1516722540000, 4.457e-05, 4.46e-05, 4.457e-05, 4.46e-05, 13716.23520945], [1516722600000, 4.46e-05, 4.47e-05, 4.46e-05, 4.47e-05, 2741.83710473], [1516722660000, 4.469e-05, 4.479e-05, 4.469e-05, 4.479e-05, 6899.54654033], [1516722720000, 4.471e-05, 4.479e-05, 4.47e-05, 4.479e-05, 16824.83772625], [1516722780000, 4.47e-05, 4.47e-05, 4.46e-05, 4.467e-05, 36877.99026899], [1516722840000, 4.47e-05, 4.47e-05, 4.467e-05, 4.47e-05, 56014.24553803], [1516722900000, 4.467e-05, 4.479e-05, 4.46e-05, 4.479e-05, 73691.20232375], [1516722960000, 4.479e-05, 4.489e-05, 4.468e-05, 4.485e-05, 70776.35288939], [1516723020000, 4.475e-05, 4.5e-05, 4.475e-05, 4.499e-05, 195361.80773865], [1516723080000, 4.5e-05, 4.504e-05, 4.487e-05, 4.504e-05, 244321.91729432], [1516723140000, 4.503e-05, 4.518e-05, 4.487e-05, 4.489e-05, 99321.83112685], [1516723200000, 4.5e-05, 4.519e-05, 4.489e-05, 4.501e-05, 113864.65166031], [1516723260000, 4.509e-05, 4.515e-05, 4.488e-05, 4.488e-05, 152872.46325802], [1516723320000, 4.5e-05, 4.506e-05, 4.487e-05, 4.499e-05, 57068.99399393], [1516723380000, 4.499e-05, 4.5e-05, 4.499e-05, 4.499e-05, 22683.64497165], [1516723440000, 4.499e-05, 4.525e-05, 4.499e-05, 4.525e-05, 61905.44700494], [1516723500000, 4.52e-05, 4.524e-05, 4.511e-05, 4.524e-05, 14979.23420477], [1516723560000, 4.525e-05, 4.529e-05, 4.512e-05, 4.525e-05, 44054.45496114], [1516723620000, 4.512e-05, 4.52e-05, 4.51e-05, 4.51e-05, 84998.59404007], [1516723680000, 4.51e-05, 4.53e-05, 4.507e-05, 4.53e-05, 60125.08436905], [1516723740000, 4.53e-05, 4.54e-05, 4.511e-05, 4.535e-05, 83853.5417727], [1516723800000, 4.536e-05, 4.538e-05, 4.531e-05, 4.531e-05, 31862.54097476], [1516723860000, 4.531e-05, 4.539e-05, 4.531e-05, 4.539e-05, 24295.23860417], [1516723920000, 4.531e-05, 4.54e-05, 4.531e-05, 4.54e-05, 99806.88688585], [1516723980000, 4.54e-05, 4.543e-05, 4.539e-05, 4.539e-05, 75838.98441246], [1516724040000, 4.539e-05, 4.54e-05, 4.531e-05, 4.532e-05, 5105.65693043], [1516724100000, 4.54e-05, 4.54e-05, 4.532e-05, 4.54e-05, 10764.40986232], [1516724160000, 4.54e-05, 4.54e-05, 4.532e-05, 4.532e-05, 3598.46850036], [1516724220000, 4.536e-05, 4.536e-05, 4.531e-05, 4.531e-05, 37196.8862182], [1516724280000, 4.54e-05, 4.541e-05, 4.536e-05, 4.536e-05, 13794.50972435], [1516724340000, 4.536e-05, 4.539e-05, 4.532e-05, 4.532e-05, 46130.02687755], [1516724400000, 4.533e-05, 4.536e-05, 4.532e-05, 4.533e-05, 12406.17699108], [1516724460000, 4.533e-05, 4.536e-05, 4.531e-05, 4.533e-05, 18725.62194318], [1516724520000, 4.533e-05, 4.539e-05, 4.533e-05, 4.539e-05, 23656.40036717], [1516724580000, 4.533e-05, 4.539e-05, 4.531e-05, 4.531e-05, 28150.3312732], [1516724640000, 4.53e-05, 4.531e-05, 4.488e-05, 4.5e-05, 38005.88222487], [1516724700000, 4.5e-05, 4.504e-05, 4.497e-05, 4.504e-05, 5452.03055503], [1516724760000, 4.504e-05, 4.519e-05, 4.5e-05, 4.519e-05, 38616.15275178], [1516724820000, 4.504e-05, 4.517e-05, 4.5e-05, 4.5e-05, 43897.56846809], [1516724880000, 4.5e-05, 4.509e-05, 4.5e-05, 4.501e-05, 14384.40346028], [1516724940000, 4.508e-05, 4.532e-05, 4.5e-05, 4.501e-05, 69154.59566765], [1516725000000, 4.508e-05, 4.508e-05, 4.5e-05, 4.502e-05, 34307.40265532], [1516725060000, 4.502e-05, 4.54e-05, 4.501e-05, 4.54e-05, 38616.44792957], [1516725120000, 4.515e-05, 4.533e-05, 4.515e-05, 4.515e-05, 9111.58533443], [1516725180000, 4.515e-05, 4.54e-05, 4.508e-05, 4.53e-05, 60934.1772951], [1516725240000, 4.532e-05, 4.54e-05, 4.51e-05, 4.529e-05, 63675.99559688], [1516725300000, 4.528e-05, 4.536e-05, 4.528e-05, 4.53e-05, 116336.31430282], [1516725360000, 4.532e-05, 4.55e-05, 4.502e-05, 4.537e-05, 215274.40180513], [1516725420000, 4.538e-05, 4.55e-05, 4.537e-05, 4.538e-05, 75003.67914513], [1516725480000, 4.537e-05, 4.538e-05, 4.51e-05, 4.514e-05, 16774.67982568], [1516725540000, 4.514e-05, 4.514e-05, 4.51e-05, 4.512e-05, 9730.27304233], [1516725600000, 4.512e-05, 4.53e-05, 4.5e-05, 4.5e-05, 6435.56531334], [1516725660000, 4.513e-05, 4.526e-05, 4.5e-05, 4.513e-05, 92022.10064969], [1516725720000, 4.512e-05, 4.513e-05, 4.503e-05, 4.512e-05, 10860.45840327], [1516725780000, 4.503e-05, 4.513e-05, 4.503e-05, 4.513e-05, 13388.70503631], [1516725840000, 4.511e-05, 4.515e-05, 4.511e-05, 4.515e-05, 24101.63113426], [1516725900000, 4.515e-05, 4.527e-05, 4.515e-05, 4.527e-05, 23681.93186252], [1516725960000, 4.527e-05, 4.534e-05, 4.525e-05, 4.527e-05, 5457.40318079], [1516726020000, 4.53e-05, 4.545e-05, 4.525e-05, 4.53e-05, 40112.92971763], [1516726080000, 4.539e-05, 4.553e-05, 4.532e-05, 4.539e-05, 81910.60963273], [1516726140000, 4.54e-05, 4.55e-05, 4.53e-05, 4.531e-05, 61177.69398539], [1516726200000, 4.531e-05, 4.539e-05, 4.53e-05, 4.539e-05, 22519.60233354], [1516726260000, 4.539e-05, 4.546e-05, 4.531e-05, 4.546e-05, 14048.08483044], [1516726320000, 4.545e-05, 4.553e-05, 4.545e-05, 4.553e-05, 60793.82484899], [1516726380000, 4.553e-05, 4.559e-05, 4.55e-05, 4.554e-05, 42035.32848554], [1516726440000, 4.554e-05, 4.559e-05, 4.552e-05, 4.552e-05, 32400.45449153], [1516726500000, 4.559e-05, 4.56e-05, 4.555e-05, 4.559e-05, 23286.85981858], [1516726560000, 4.555e-05, 4.558e-05, 4.53e-05, 4.53e-05, 94440.39944718], [1516726620000, 4.545e-05, 4.55e-05, 4.53e-05, 4.549e-05, 28059.73758529], [1516726680000, 4.535e-05, 4.549e-05, 4.53e-05, 4.545e-05, 28123.81283569], [1516726740000, 4.545e-05, 4.545e-05, 4.53e-05, 4.53e-05, 5127.29647444], [1516726800000, 4.54e-05, 4.54e-05, 4.53e-05, 4.533e-05, 10442.88601148], [1516726860000, 4.539e-05, 4.545e-05, 4.536e-05, 4.545e-05, 19387.13115227], [1516726920000, 4.541e-05, 4.55e-05, 4.54e-05, 4.55e-05, 19200.7248934], [1516726980000, 4.553e-05, 4.559e-05, 4.545e-05, 4.548e-05, 80961.90977774], [1516727040000, 4.545e-05, 4.548e-05, 4.537e-05, 4.54e-05, 19338.17085085], [1516727100000, 4.54e-05, 4.549e-05, 4.54e-05, 4.544e-05, 12159.93661797], [1516727160000, 4.54e-05, 4.545e-05, 4.535e-05, 4.541e-05, 61846.73020814], [1516727220000, 4.54e-05, 4.54e-05, 4.525e-05, 4.525e-05, 10302.48056712], [1516727280000, 4.52e-05, 4.52e-05, 4.501e-05, 4.501e-05, 38077.94233944], [1516727340000, 4.51e-05, 4.51e-05, 4.491e-05, 4.5e-05, 37741.68435166], [1516727400000, 4.499e-05, 4.51e-05, 4.491e-05, 4.51e-05, 36928.16677028], [1516727460000, 4.501e-05, 4.51e-05, 4.5e-05, 4.5e-05, 6580.1679044], [1516727520000, 4.5e-05, 4.5e-05, 4.492e-05, 4.494e-05, 16121.13340798], [1516727580000, 4.494e-05, 4.494e-05, 4.489e-05, 4.489e-05, 28751.80585877], [1516727640000, 4.488e-05, 4.489e-05, 4.48e-05, 4.485e-05, 41293.78603892], [1516727700000, 4.485e-05, 4.486e-05, 4.475e-05, 4.477e-05, 26217.87683388], [1516727760000, 4.48e-05, 4.48e-05, 4.477e-05, 4.478e-05, 57676.66632624], [1516727820000, 4.48e-05, 4.48e-05, 4.477e-05, 4.478e-05, 46179.45140881], [1516727880000, 4.478e-05, 4.478e-05, 4.475e-05, 4.475e-05, 6089.04644063], [1516727940000, 4.475e-05, 4.479e-05, 4.475e-05, 4.476e-05, 6902.65771001], [1516728000000, 4.479e-05, 4.479e-05, 4.475e-05, 4.475e-05, 116166.10783464], [1516728060000, 4.468e-05, 4.468e-05, 4.465e-05, 4.467e-05, 27589.16321542], [1516728120000, 4.465e-05, 4.466e-05, 4.463e-05, 4.463e-05, 8327.76608011], [1516728180000, 4.463e-05, 4.465e-05, 4.463e-05, 4.463e-05, 4389.73753065], [1516728240000, 4.463e-05, 4.463e-05, 4.462e-05, 4.463e-05, 1080.11850397], [1516728300000, 4.462e-05, 4.462e-05, 4.461e-05, 4.461e-05, 9397.54599216], [1516728360000, 4.458e-05, 4.461e-05, 4.457e-05, 4.461e-05, 27949.30200181], [1516728420000, 4.458e-05, 4.458e-05, 4.458e-05, 4.458e-05, 5706.89647965], [1516728480000, 4.458e-05, 4.458e-05, 4.456e-05, 4.458e-05, 64073.83423769], [1516728540000, 4.458e-05, 4.462e-05, 4.458e-05, 4.461e-05, 14341.16476719], [1516728600000, 4.458e-05, 4.461e-05, 4.457e-05, 4.461e-05, 8647.70394649], [1516728660000, 4.461e-05, 4.461e-05, 4.46e-05, 4.461e-05, 9461.24448532], [1516728720000, 4.457e-05, 4.461e-05, 4.456e-05, 4.461e-05, 6983.97116291], [1516728780000, 4.457e-05, 4.461e-05, 4.457e-05, 4.461e-05, 16645.11881343], [1516728840000, 4.458e-05, 4.461e-05, 4.458e-05, 4.459e-05, 544.98295949], [1516728900000, 4.46e-05, 4.46e-05, 4.458e-05, 4.459e-05, 9257.18945096], [1516728960000, 4.459e-05, 4.459e-05, 4.457e-05, 4.457e-05, 6049.3560091], [1516729020000, 4.457e-05, 4.459e-05, 4.457e-05, 4.459e-05, 3892.68206354], [1516729080000, 4.463e-05, 4.465e-05, 4.463e-05, 4.465e-05, 5685.13517327], [1516729140000, 4.465e-05, 4.47e-05, 4.465e-05, 4.47e-05, 30776.15276437], [1516729200000, 4.466e-05, 4.476e-05, 4.466e-05, 4.476e-05, 4656.17711785], [1516729260000, 4.47e-05, 4.478e-05, 4.463e-05, 4.463e-05, 87135.64373859], [1516729320000, 4.468e-05, 4.47e-05, 4.463e-05, 4.468e-05, 6317.25020953], [1516729380000, 4.468e-05, 4.471e-05, 4.463e-05, 4.463e-05, 22874.27925376], [1516729440000, 4.471e-05, 4.475e-05, 4.471e-05, 4.471e-05, 6158.42904639], [1516729500000, 4.475e-05, 4.475e-05, 4.461e-05, 4.461e-05, 30922.53140503], [1516729560000, 4.459e-05, 4.463e-05, 4.459e-05, 4.459e-05, 14046.11259426], [1516729620000, 4.459e-05, 4.463e-05, 4.459e-05, 4.459e-05, 9744.73055454], [1516729680000, 4.459e-05, 4.463e-05, 4.457e-05, 4.457e-05, 19726.85660517], [1516729740000, 4.457e-05, 4.459e-05, 4.457e-05, 4.458e-05, 4666.70605808], [1516729800000, 4.458e-05, 4.459e-05, 4.456e-05, 4.456e-05, 44439.01552741], [1516729860000, 4.456e-05, 4.456e-05, 4.449e-05, 4.449e-05, 14026.22256766], [1516729920000, 4.446e-05, 4.446e-05, 4.445e-05, 4.445e-05, 3964.70106868], [1516729980000, 4.443e-05, 4.463e-05, 4.435e-05, 4.462e-05, 64121.75042852], [1516730040000, 4.459e-05, 4.459e-05, 4.44e-05, 4.445e-05, 44520.36654339], [1516730100000, 4.444e-05, 4.458e-05, 4.442e-05, 4.458e-05, 29500.63160913], [1516730160000, 4.449e-05, 4.457e-05, 4.441e-05, 4.441e-05, 34781.12232673], [1516730220000, 4.456e-05, 4.456e-05, 4.445e-05, 4.456e-05, 6432.59264134], [1516730280000, 4.456e-05, 4.463e-05, 4.434e-05, 4.441e-05, 65141.95828724], [1516730340000, 4.459e-05, 4.459e-05, 4.444e-05, 4.456e-05, 5364.93175616], [1516730400000, 4.455e-05, 4.455e-05, 4.443e-05, 4.454e-05, 14015.63484478], [1516730460000, 4.45e-05, 4.454e-05, 4.445e-05, 4.445e-05, 7518.03196918], [1516730520000, 4.445e-05, 4.453e-05, 4.437e-05, 4.446e-05, 59090.23687601], [1516730580000, 4.445e-05, 4.446e-05, 4.43e-05, 4.446e-05, 18304.14137767], [1516730640000, 4.446e-05, 4.446e-05, 4.439e-05, 4.441e-05, 44849.64024859], [1516730700000, 4.441e-05, 4.445e-05, 4.43e-05, 4.43e-05, 24814.93073289], [1516730760000, 4.44e-05, 4.44e-05, 4.431e-05, 4.44e-05, 2059.32002293], [1516730820000, 4.44e-05, 4.47e-05, 4.432e-05, 4.47e-05, 51714.61924922], [1516730880000, 4.467e-05, 4.47e-05, 4.445e-05, 4.467e-05, 13228.53063198], [1516730940000, 4.467e-05, 4.486e-05, 4.467e-05, 4.483e-05, 43870.62483293], [1516731000000, 4.483e-05, 4.483e-05, 4.454e-05, 4.47e-05, 87477.41354906], [1516731060000, 4.479e-05, 4.48e-05, 4.454e-05, 4.476e-05, 51698.83775398], [1516731120000, 4.476e-05, 4.477e-05, 4.476e-05, 4.477e-05, 4158.98286543], [1516731180000, 4.477e-05, 4.479e-05, 4.476e-05, 4.479e-05, 12087.04116949], [1516731240000, 4.479e-05, 4.479e-05, 4.463e-05, 4.475e-05, 12659.58953805], [1516731300000, 4.475e-05, 4.477e-05, 4.464e-05, 4.477e-05, 12552.85457894], [1516731360000, 4.479e-05, 4.492e-05, 4.479e-05, 4.485e-05, 9919.66780621], [1516731420000, 4.485e-05, 4.489e-05, 4.485e-05, 4.489e-05, 13305.08644458], [1516731480000, 4.49e-05, 4.492e-05, 4.486e-05, 4.49e-05, 29325.0946932], [1516731540000, 4.49e-05, 4.49e-05, 4.467e-05, 4.489e-05, 21836.59454547], [1516731600000, 4.489e-05, 4.489e-05, 4.477e-05, 4.487e-05, 28667.75333322], [1516731660000, 4.487e-05, 4.489e-05, 4.477e-05, 4.486e-05, 47213.26302731], [1516731720000, 4.486e-05, 4.492e-05, 4.48e-05, 4.48e-05, 24276.61935469], [1516731780000, 4.489e-05, 4.495e-05, 4.477e-05, 4.487e-05, 31294.2424708], [1516731840000, 4.493e-05, 4.495e-05, 4.477e-05, 4.48e-05, 29251.32532845], [1516731900000, 4.481e-05, 4.495e-05, 4.465e-05, 4.493e-05, 53241.66386348], [1516731960000, 4.476e-05, 4.517e-05, 4.47e-05, 4.473e-05, 41136.3172434], [1516732020000, 4.496e-05, 4.516e-05, 4.496e-05, 4.498e-05, 17723.40334811], [1516732080000, 4.496e-05, 4.497e-05, 4.494e-05, 4.496e-05, 7819.3880204], [1516732140000, 4.496e-05, 4.496e-05, 4.471e-05, 4.495e-05, 9189.49439704], [1516732200000, 4.488e-05, 4.495e-05, 4.471e-05, 4.471e-05, 10568.36967079], [1516732260000, 4.489e-05, 4.492e-05, 4.488e-05, 4.491e-05, 104.31796008], [1516732320000, 4.491e-05, 4.491e-05, 4.488e-05, 4.488e-05, 1401.17142106], [1516732380000, 4.491e-05, 4.495e-05, 4.472e-05, 4.495e-05, 12847.63356547], [1516732440000, 4.494e-05, 4.512e-05, 4.481e-05, 4.512e-05, 196971.75267751], [1516732500000, 4.502e-05, 4.512e-05, 4.5e-05, 4.511e-05, 27598.93366458], [1516732560000, 4.503e-05, 4.512e-05, 4.502e-05, 4.506e-05, 35781.12561837], [1516732620000, 4.505e-05, 4.509e-05, 4.505e-05, 4.508e-05, 12426.1135725], [1516732680000, 4.508e-05, 4.508e-05, 4.502e-05, 4.502e-05, 15835.11688218], [1516732740000, 4.5e-05, 4.501e-05, 4.5e-05, 4.501e-05, 15071.87588366], [1516732800000, 4.501e-05, 4.501e-05, 4.482e-05, 4.482e-05, 3344.70466495], [1516732860000, 4.498e-05, 4.499e-05, 4.482e-05, 4.482e-05, 2131.04292635], [1516732920000, 4.494e-05, 4.494e-05, 4.478e-05, 4.482e-05, 18796.42050561], [1516732980000, 4.482e-05, 4.482e-05, 4.474e-05, 4.476e-05, 28056.20623147], [1516733040000, 4.476e-05, 4.476e-05, 4.473e-05, 4.473e-05, 34502.34102325], [1516733100000, 4.473e-05, 4.48e-05, 4.473e-05, 4.48e-05, 10178.82620448], [1516733160000, 4.48e-05, 4.498e-05, 4.475e-05, 4.497e-05, 8041.13185939], [1516733220000, 4.476e-05, 4.5e-05, 4.476e-05, 4.5e-05, 17184.95460261], [1516733280000, 4.479e-05, 4.5e-05, 4.479e-05, 4.5e-05, 3772.4966085], [1516733340000, 4.5e-05, 4.5e-05, 4.476e-05, 4.5e-05, 26657.04497271], [1516733400000, 4.508e-05, 4.513e-05, 4.501e-05, 4.501e-05, 19748.92445362], [1516733460000, 4.501e-05, 4.514e-05, 4.478e-05, 4.505e-05, 27904.00742043], [1516733520000, 4.504e-05, 4.508e-05, 4.478e-05, 4.5e-05, 25342.61066755], [1516733580000, 4.504e-05, 4.51e-05, 4.5e-05, 4.501e-05, 26229.04223844], [1516733640000, 4.5e-05, 4.5e-05, 4.481e-05, 4.498e-05, 4750.10466642], [1516733700000, 4.498e-05, 4.498e-05, 4.483e-05, 4.483e-05, 2920.17909232], [1516733760000, 4.493e-05, 4.493e-05, 4.483e-05, 4.493e-05, 8783.36719961], [1516733820000, 4.492e-05, 4.493e-05, 4.483e-05, 4.483e-05, 28094.64776443], [1516733880000, 4.491e-05, 4.491e-05, 4.483e-05, 4.484e-05, 4998.94188946], [1516733940000, 4.489e-05, 4.489e-05, 4.483e-05, 4.483e-05, 37202.90920397], [1516734000000, 4.484e-05, 4.493e-05, 4.48e-05, 4.493e-05, 41053.4232971], [1516734060000, 4.48e-05, 4.493e-05, 4.48e-05, 4.48e-05, 16703.06014848], [1516734120000, 4.491e-05, 4.493e-05, 4.48e-05, 4.48e-05, 7399.86051456], [1516734180000, 4.493e-05, 4.493e-05, 4.48e-05, 4.484e-05, 6298.33330299], [1516734240000, 4.484e-05, 4.484e-05, 4.481e-05, 4.484e-05, 3734.48146685], [1516734300000, 4.497e-05, 4.497e-05, 4.487e-05, 4.487e-05, 973.79403668], [1516734360000, 4.487e-05, 4.498e-05, 4.487e-05, 4.487e-05, 669.87562381], [1516734420000, 4.487e-05, 4.487e-05, 4.48e-05, 4.48e-05, 35737.4078696], [1516734480000, 4.48e-05, 4.486e-05, 4.48e-05, 4.48e-05, 10989.8928659], [1516734540000, 4.486e-05, 4.486e-05, 4.48e-05, 4.484e-05, 11111.44317593], [1516734600000, 4.48e-05, 4.484e-05, 4.48e-05, 4.483e-05, 15254.45030855], [1516734660000, 4.483e-05, 4.483e-05, 4.48e-05, 4.48e-05, 44212.04712818], [1516734720000, 4.472e-05, 4.48e-05, 4.471e-05, 4.471e-05, 31978.51681858], [1516734780000, 4.471e-05, 4.48e-05, 4.471e-05, 4.48e-05, 7974.56774378], [1516734840000, 4.48e-05, 4.481e-05, 4.469e-05, 4.469e-05, 11358.39662163], [1516734900000, 4.469e-05, 4.472e-05, 4.468e-05, 4.469e-05, 8244.50655337], [1516734960000, 4.469e-05, 4.469e-05, 4.465e-05, 4.469e-05, 1703.67390349], [1516735020000, 4.465e-05, 4.469e-05, 4.463e-05, 4.465e-05, 32408.61145181], [1516735080000, 4.463e-05, 4.485e-05, 4.463e-05, 4.469e-05, 45997.14851043], [1516735140000, 4.485e-05, 4.485e-05, 4.47e-05, 4.485e-05, 8494.1377651], [1516735200000, 4.485e-05, 4.493e-05, 4.485e-05, 4.489e-05, 12987.4637611], [1516735260000, 4.489e-05, 4.492e-05, 4.489e-05, 4.489e-05, 9048.68894825], [1516735320000, 4.492e-05, 4.497e-05, 4.489e-05, 4.492e-05, 74293.73701194], [1516735380000, 4.494e-05, 4.496e-05, 4.489e-05, 4.492e-05, 2121.88258179], [1516735440000, 4.492e-05, 4.492e-05, 4.489e-05, 4.492e-05, 4839.6357185], [1516735500000, 4.49e-05, 4.492e-05, 4.489e-05, 4.489e-05, 7365.56258011], [1516735560000, 4.486e-05, 4.489e-05, 4.485e-05, 4.489e-05, 3038.98497201], [1516735620000, 4.487e-05, 4.487e-05, 4.466e-05, 4.466e-05, 1571.77400944], [1516735680000, 4.465e-05, 4.465e-05, 4.458e-05, 4.463e-05, 24881.65126845], [1516735740000, 4.463e-05, 4.463e-05, 4.455e-05, 4.455e-05, 32177.53344309], [1516735800000, 4.451e-05, 4.451e-05, 4.447e-05, 4.447e-05, 12058.08795147], [1516735860000, 4.447e-05, 4.488e-05, 4.447e-05, 4.488e-05, 15491.7853675], [1516735920000, 4.488e-05, 4.493e-05, 4.449e-05, 4.493e-05, 24577.3278774], [1516735980000, 4.492e-05, 4.493e-05, 4.44e-05, 4.44e-05, 23555.36447308], [1516736040000, 4.437e-05, 4.487e-05, 4.43e-05, 4.487e-05, 61115.44217189], [1516736100000, 4.478e-05, 4.478e-05, 4.478e-05, 4.478e-05, 822.66917234], [1516736160000, 4.477e-05, 4.477e-05, 4.445e-05, 4.445e-05, 2370.20919975], [1516736220000, 4.445e-05, 4.472e-05, 4.445e-05, 4.472e-05, 684.62653756], [1516736280000, 4.472e-05, 4.472e-05, 4.455e-05, 4.472e-05, 1935.46432341], [1516736340000, 4.472e-05, 4.472e-05, 4.469e-05, 4.469e-05, 3346.42244972], [1516736400000, 4.461e-05, 4.469e-05, 4.461e-05, 4.469e-05, 11074.62902026], [1516736460000, 4.461e-05, 4.469e-05, 4.461e-05, 4.461e-05, 13783.02127357], [1516736520000, 4.461e-05, 4.464e-05, 4.461e-05, 4.464e-05, 1858.48105774], [1516736580000, 4.469e-05, 4.469e-05, 4.456e-05, 4.468e-05, 14516.73346488], [1516736640000, 4.456e-05, 4.466e-05, 4.444e-05, 4.451e-05, 9505.58705774], [1516736700000, 4.451e-05, 4.451e-05, 4.435e-05, 4.445e-05, 44948.88374679], [1516736760000, 4.439e-05, 4.451e-05, 4.439e-05, 4.446e-05, 38857.48183836], [1516736820000, 4.446e-05, 4.446e-05, 4.43e-05, 4.441e-05, 6489.4449564], [1516736880000, 4.441e-05, 4.446e-05, 4.441e-05, 4.446e-05, 13812.84843971], [1516736940000, 4.446e-05, 4.446e-05, 4.43e-05, 4.446e-05, 100536.12974689], [1516737000000, 4.446e-05, 4.46e-05, 4.43e-05, 4.459e-05, 10561.20521453], [1516737060000, 4.446e-05, 4.458e-05, 4.446e-05, 4.446e-05, 33369.54657563], [1516737120000, 4.446e-05, 4.46e-05, 4.446e-05, 4.46e-05, 2069.68602655], [1516737180000, 4.46e-05, 4.46e-05, 4.446e-05, 4.456e-05, 19786.72669575], [1516737240000, 4.456e-05, 4.47e-05, 4.446e-05, 4.47e-05, 16255.48468413], [1516737300000, 4.471e-05, 4.484e-05, 4.471e-05, 4.484e-05, 37927.16340778], [1516737360000, 4.474e-05, 4.474e-05, 4.47e-05, 4.474e-05, 12083.96187882], [1516737420000, 4.474e-05, 4.474e-05, 4.466e-05, 4.466e-05, 766.79295958], [1516737480000, 4.457e-05, 4.484e-05, 4.446e-05, 4.484e-05, 6987.36350063], [1516737540000, 4.474e-05, 4.483e-05, 4.447e-05, 4.483e-05, 26193.56757774], [1516737600000, 4.474e-05, 4.474e-05, 4.446e-05, 4.46e-05, 9020.97572705], [1516737660000, 4.474e-05, 4.474e-05, 4.473e-05, 4.473e-05, 1631.32429761], [1516737720000, 4.472e-05, 4.472e-05, 4.44e-05, 4.44e-05, 13468.79574086], [1516737780000, 4.443e-05, 4.443e-05, 4.442e-05, 4.442e-05, 436.19297045], [1516737840000, 4.46e-05, 4.46e-05, 4.46e-05, 4.46e-05, 3563.02565401], [1516737900000, 4.46e-05, 4.46e-05, 4.443e-05, 4.46e-05, 2224.58680705], [1516737960000, 4.46e-05, 4.46e-05, 4.442e-05, 4.46e-05, 71305.7790411], [1516738020000, 4.46e-05, 4.469e-05, 4.46e-05, 4.46e-05, 5052.54116264], [1516738080000, 4.455e-05, 4.46e-05, 4.451e-05, 4.46e-05, 6935.22231605], [1516738140000, 4.46e-05, 4.46e-05, 4.452e-05, 4.452e-05, 46212.46308263], [1516738200000, 4.452e-05, 4.452e-05, 4.45e-05, 4.452e-05, 1755.88283703], [1516738260000, 4.452e-05, 4.465e-05, 4.451e-05, 4.465e-05, 12711.61190786], [1516738320000, 4.468e-05, 4.469e-05, 4.465e-05, 4.467e-05, 20933.00283923], [1516738380000, 4.467e-05, 4.467e-05, 4.465e-05, 4.466e-05, 4116.5382581], [1516738440000, 4.466e-05, 4.466e-05, 4.465e-05, 4.465e-05, 47994.10474029], [1516738500000, 4.45e-05, 4.465e-05, 4.443e-05, 4.45e-05, 8646.5077897], [1516738560000, 4.45e-05, 4.45e-05, 4.443e-05, 4.45e-05, 2079.81956545], [1516738620000, 4.45e-05, 4.461e-05, 4.443e-05, 4.443e-05, 8660.38016636], [1516738680000, 4.45e-05, 4.461e-05, 4.45e-05, 4.45e-05, 1050.58488861], [1516738740000, 4.449e-05, 4.469e-05, 4.449e-05, 4.469e-05, 23997.61075777], [1516738800000, 4.469e-05, 4.469e-05, 4.454e-05, 4.454e-05, 2349.8601205], [1516738860000, 4.467e-05, 4.467e-05, 4.466e-05, 4.467e-05, 3067.07282637], [1516738920000, 4.465e-05, 4.466e-05, 4.458e-05, 4.465e-05, 910.90368307], [1516738980000, 4.465e-05, 4.465e-05, 4.458e-05, 4.464e-05, 4883.24797709], [1516739040000, 4.464e-05, 4.464e-05, 4.464e-05, 4.464e-05, 20380.42298963], [1516739100000, 4.464e-05, 4.465e-05, 4.46e-05, 4.46e-05, 116325.124976], [1516739160000, 4.465e-05, 4.465e-05, 4.461e-05, 4.465e-05, 50460.75304445], [1516739220000, 4.465e-05, 4.469e-05, 4.465e-05, 4.469e-05, 13789.64717953], [1516739280000, 4.468e-05, 4.484e-05, 4.467e-05, 4.484e-05, 19406.31759082], [1516739340000, 4.484e-05, 4.492e-05, 4.468e-05, 4.492e-05, 9222.67260514], [1516739400000, 4.492e-05, 4.492e-05, 4.48e-05, 4.48e-05, 36179.76516059], [1516739460000, 4.48e-05, 4.492e-05, 4.48e-05, 4.492e-05, 13365.4822362], [1516739520000, 4.492e-05, 4.498e-05, 4.492e-05, 4.496e-05, 5931.84499987], [1516739580000, 4.496e-05, 4.499e-05, 4.496e-05, 4.499e-05, 13856.12441498], [1516739640000, 4.5e-05, 4.5e-05, 4.499e-05, 4.5e-05, 21219.92307301], [1516739700000, 4.5e-05, 4.501e-05, 4.498e-05, 4.498e-05, 13631.26143287], [1516739760000, 4.498e-05, 4.498e-05, 4.492e-05, 4.496e-05, 4434.12624005], [1516739820000, 4.496e-05, 4.498e-05, 4.496e-05, 4.498e-05, 17934.38372231], [1516739880000, 4.498e-05, 4.51e-05, 4.498e-05, 4.51e-05, 25001.12593115], [1516739940000, 4.51e-05, 4.51e-05, 4.51e-05, 4.51e-05, 2877.25307502], [1516740000000, 4.499e-05, 4.514e-05, 4.499e-05, 4.514e-05, 4431.539614], [1516740060000, 4.51e-05, 4.514e-05, 4.51e-05, 4.514e-05, 3456.32927435], [1516740120000, 4.514e-05, 4.52e-05, 4.514e-05, 4.52e-05, 14150.19075256], [1516740180000, 4.52e-05, 4.522e-05, 4.51e-05, 4.51e-05, 21993.61747072], [1516740240000, 4.522e-05, 4.53e-05, 4.499e-05, 4.523e-05, 28288.40135609], [1516740300000, 4.523e-05, 4.53e-05, 4.499e-05, 4.523e-05, 14714.75107522], [1516740360000, 4.523e-05, 4.53e-05, 4.523e-05, 4.53e-05, 1085.57905808], [1516740420000, 4.523e-05, 4.529e-05, 4.523e-05, 4.529e-05, 861.6984096], [1516740480000, 4.523e-05, 4.529e-05, 4.493e-05, 4.493e-05, 27564.10134842], [1516740540000, 4.529e-05, 4.529e-05, 4.503e-05, 4.505e-05, 1245.86579087], [1516740600000, 4.515e-05, 4.53e-05, 4.505e-05, 4.53e-05, 5155.82593398], [1516740660000, 4.529e-05, 4.53e-05, 4.528e-05, 4.528e-05, 4921.43210377], [1516740720000, 4.525e-05, 4.526e-05, 4.505e-05, 4.524e-05, 4021.02524249], [1516740780000, 4.506e-05, 4.527e-05, 4.506e-05, 4.507e-05, 10046.30270841], [1516740840000, 4.527e-05, 4.527e-05, 4.509e-05, 4.511e-05, 15709.58759998], [1516740900000, 4.523e-05, 4.523e-05, 4.505e-05, 4.505e-05, 14790.05513044], [1516740960000, 4.502e-05, 4.505e-05, 4.5e-05, 4.505e-05, 16792.15744687], [1516741020000, 4.503e-05, 4.505e-05, 4.499e-05, 4.499e-05, 5497.9441206], [1516741080000, 4.499e-05, 4.499e-05, 4.494e-05, 4.499e-05, 4282.11760962], [1516741140000, 4.499e-05, 4.499e-05, 4.494e-05, 4.494e-05, 22106.96800207], [1516741200000, 4.494e-05, 4.499e-05, 4.494e-05, 4.499e-05, 5362.74327662], [1516741260000, 4.499e-05, 4.499e-05, 4.495e-05, 4.495e-05, 10325.38420235], [1516741320000, 4.495e-05, 4.499e-05, 4.494e-05, 4.497e-05, 9455.35478783], [1516741380000, 4.497e-05, 4.499e-05, 4.495e-05, 4.497e-05, 5818.69517765], [1516741440000, 4.499e-05, 4.5e-05, 4.495e-05, 4.5e-05, 71596.36835097], [1516741500000, 4.499e-05, 4.5e-05, 4.49e-05, 4.499e-05, 9613.90576162], [1516741560000, 4.499e-05, 4.5e-05, 4.495e-05, 4.5e-05, 34038.22654498], [1516741620000, 4.499e-05, 4.505e-05, 4.499e-05, 4.505e-05, 3439.52360266], [1516741680000, 4.505e-05, 4.525e-05, 4.505e-05, 4.51e-05, 13708.10054076], [1516741740000, 4.511e-05, 4.521e-05, 4.505e-05, 4.519e-05, 9377.38944498], [1516741800000, 4.512e-05, 4.519e-05, 4.505e-05, 4.506e-05, 9522.60071001], [1516741860000, 4.506e-05, 4.51e-05, 4.506e-05, 4.509e-05, 4921.62700023], [1516741920000, 4.509e-05, 4.509e-05, 4.505e-05, 4.505e-05, 10690.24326703], [1516741980000, 4.505e-05, 4.505e-05, 4.501e-05, 4.505e-05, 4827.30333028], [1516742040000, 4.505e-05, 4.505e-05, 4.501e-05, 4.501e-05, 17204.57016215], [1516742100000, 4.5e-05, 4.5e-05, 4.481e-05, 4.482e-05, 27392.98960839], [1516742160000, 4.482e-05, 4.482e-05, 4.457e-05, 4.464e-05, 40457.07221504], [1516742220000, 4.468e-05, 4.481e-05, 4.46e-05, 4.464e-05, 9743.48635455], [1516742280000, 4.464e-05, 4.464e-05, 4.461e-05, 4.464e-05, 4366.88354427], [1516742340000, 4.481e-05, 4.481e-05, 4.481e-05, 4.481e-05, 1424.59776732], [1516742400000, 4.479e-05, 4.481e-05, 4.479e-05, 4.481e-05, 1629.45139898], [1516742460000, 4.481e-05, 4.49e-05, 4.469e-05, 4.469e-05, 20096.9593495], [1516742520000, 4.469e-05, 4.489e-05, 4.468e-05, 4.468e-05, 2425.00795132], [1516742580000, 4.469e-05, 4.489e-05, 4.468e-05, 4.48e-05, 2633.43846573], [1516742640000, 4.48e-05, 4.488e-05, 4.469e-05, 4.48e-05, 13351.43126486], [1516742700000, 4.48e-05, 4.48e-05, 4.473e-05, 4.473e-05, 437.65455469], [1516742760000, 4.473e-05, 4.49e-05, 4.473e-05, 4.473e-05, 10286.72704907], [1516742820000, 4.473e-05, 4.49e-05, 4.458e-05, 4.458e-05, 21270.78130084], [1516742880000, 4.465e-05, 4.475e-05, 4.465e-05, 4.465e-05, 3074.36073939], [1516742940000, 4.46e-05, 4.465e-05, 4.46e-05, 4.465e-05, 3604.7589432], [1516743000000, 4.465e-05, 4.465e-05, 4.465e-05, 4.465e-05, 14678.57919427], [1516743060000, 4.465e-05, 4.465e-05, 4.46e-05, 4.465e-05, 1297.78040593], [1516743120000, 4.465e-05, 4.465e-05, 4.46e-05, 4.461e-05, 10237.3719137], [1516743180000, 4.461e-05, 4.465e-05, 4.458e-05, 4.465e-05, 19606.66702469], [1516743240000, 4.465e-05, 4.465e-05, 4.465e-05, 4.465e-05, 4979.82193781], [1516743300000, 4.465e-05, 4.47e-05, 4.461e-05, 4.47e-05, 37832.26187498], [1516743360000, 4.474e-05, 4.49e-05, 4.471e-05, 4.471e-05, 7914.35111508], [1516743420000, 4.473e-05, 4.49e-05, 4.472e-05, 4.49e-05, 2122.48948639], [1516743480000, 4.49e-05, 4.49e-05, 4.477e-05, 4.49e-05, 611.48738409], [1516743540000, 4.49e-05, 4.49e-05, 4.49e-05, 4.49e-05, 12094.02723315], [1516743600000, 4.49e-05, 4.5e-05, 4.49e-05, 4.5e-05, 19927.44099902], [1516743660000, 4.5e-05, 4.53e-05, 4.5e-05, 4.501e-05, 105475.93208653], [1516743720000, 4.517e-05, 4.518e-05, 4.477e-05, 4.481e-05, 80703.80484121], [1516743780000, 4.483e-05, 4.505e-05, 4.48e-05, 4.505e-05, 1425.8615311], [1516743840000, 4.505e-05, 4.505e-05, 4.5e-05, 4.5e-05, 8934.17130249], [1516743900000, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 1584.04108768], [1516743960000, 4.481e-05, 4.503e-05, 4.481e-05, 4.503e-05, 3493.33865187], [1516744020000, 4.503e-05, 4.504e-05, 4.503e-05, 4.504e-05, 5035.85851611], [1516744080000, 4.503e-05, 4.504e-05, 4.481e-05, 4.481e-05, 4164.41536857], [1516744140000, 4.481e-05, 4.481e-05, 4.457e-05, 4.481e-05, 46489.51248082], [1516744200000, 4.481e-05, 4.481e-05, 4.468e-05, 4.481e-05, 2073.17355153], [1516744260000, 4.481e-05, 4.481e-05, 4.469e-05, 4.481e-05, 2415.86828913], [1516744320000, 4.495e-05, 4.495e-05, 4.49e-05, 4.495e-05, 14337.43271255], [1516744380000, 4.49e-05, 4.495e-05, 4.49e-05, 4.495e-05, 2525.24872564], [1516744440000, 4.495e-05, 4.526e-05, 4.495e-05, 4.524e-05, 2420.89262835], [1516744500000, 4.522e-05, 4.523e-05, 4.495e-05, 4.497e-05, 18314.43434797], [1516744560000, 4.497e-05, 4.52e-05, 4.497e-05, 4.499e-05, 28464.78760426], [1516744620000, 4.499e-05, 4.503e-05, 4.498e-05, 4.498e-05, 1006.8783892], [1516744680000, 4.503e-05, 4.503e-05, 4.5e-05, 4.501e-05, 685.61305507], [1516744740000, 4.501e-05, 4.503e-05, 4.5e-05, 4.5e-05, 24372.91786868], [1516744800000, 4.5e-05, 4.5e-05, 4.498e-05, 4.5e-05, 485.16466778], [1516744860000, 4.5e-05, 4.52e-05, 4.5e-05, 4.52e-05, 6968.81294722], [1516744920000, 4.5e-05, 4.52e-05, 4.469e-05, 4.469e-05, 58055.32294317], [1516744980000, 4.479e-05, 4.497e-05, 4.472e-05, 4.497e-05, 456.38103267], [1516745040000, 4.494e-05, 4.494e-05, 4.476e-05, 4.476e-05, 392.64685363], [1516745100000, 4.492e-05, 4.497e-05, 4.476e-05, 4.497e-05, 16463.70788618], [1516745160000, 4.478e-05, 4.498e-05, 4.478e-05, 4.498e-05, 27169.25828702], [1516745220000, 4.498e-05, 4.52e-05, 4.498e-05, 4.52e-05, 15889.2575741], [1516745280000, 4.52e-05, 4.523e-05, 4.497e-05, 4.522e-05, 40848.51560913], [1516745340000, 4.521e-05, 4.521e-05, 4.517e-05, 4.517e-05, 1413.52993394], [1516745400000, 4.497e-05, 4.52e-05, 4.497e-05, 4.497e-05, 5125.32642146], [1516745460000, 4.52e-05, 4.52e-05, 4.497e-05, 4.518e-05, 28342.46279383], [1516745520000, 4.515e-05, 4.515e-05, 4.515e-05, 4.515e-05, 730.57167454], [1516745580000, 4.515e-05, 4.515e-05, 4.499e-05, 4.499e-05, 48593.65519641], [1516745640000, 4.497e-05, 4.5e-05, 4.497e-05, 4.497e-05, 93555.22177564], [1516745700000, 4.497e-05, 4.497e-05, 4.497e-05, 4.497e-05, 4615.85023635], [1516745760000, 4.481e-05, 4.482e-05, 4.481e-05, 4.482e-05, 9572.92343351], [1516745820000, 4.499e-05, 4.51e-05, 4.499e-05, 4.509e-05, 4568.19051415], [1516745880000, 4.509e-05, 4.509e-05, 4.499e-05, 4.499e-05, 15337.96346425], [1516745940000, 4.509e-05, 4.509e-05, 4.507e-05, 4.509e-05, 10808.6196615], [1516746000000, 4.509e-05, 4.509e-05, 4.499e-05, 4.499e-05, 10255.31966261], [1516746060000, 4.499e-05, 4.508e-05, 4.499e-05, 4.508e-05, 655.14544179], [1516746120000, 4.508e-05, 4.508e-05, 4.499e-05, 4.507e-05, 19164.56271631], [1516746180000, 4.507e-05, 4.556e-05, 4.487e-05, 4.549e-05, 208713.8991358], [1516746240000, 4.498e-05, 4.535e-05, 4.496e-05, 4.502e-05, 38124.03757145], [1516746300000, 4.502e-05, 4.508e-05, 4.499e-05, 4.508e-05, 8263.09016116], [1516746360000, 4.508e-05, 4.525e-05, 4.507e-05, 4.52e-05, 6694.14544679], [1516746420000, 4.518e-05, 4.518e-05, 4.507e-05, 4.513e-05, 15437.9350048], [1516746480000, 4.512e-05, 4.518e-05, 4.507e-05, 4.518e-05, 16471.11251972], [1516746540000, 4.518e-05, 4.518e-05, 4.507e-05, 4.514e-05, 11173.51858136], [1516746600000, 4.512e-05, 4.529e-05, 4.508e-05, 4.512e-05, 7776.20521674], [1516746660000, 4.512e-05, 4.532e-05, 4.512e-05, 4.532e-05, 11797.6719668], [1516746720000, 4.529e-05, 4.529e-05, 4.495e-05, 4.5e-05, 125897.31385787], [1516746780000, 4.5e-05, 4.524e-05, 4.5e-05, 4.521e-05, 12496.54337134], [1516746840000, 4.518e-05, 4.518e-05, 4.505e-05, 4.505e-05, 18370.8730864], [1516746900000, 4.505e-05, 4.517e-05, 4.502e-05, 4.515e-05, 10649.16139753], [1516746960000, 4.515e-05, 4.515e-05, 4.502e-05, 4.515e-05, 15465.88498818], [1516747020000, 4.515e-05, 4.534e-05, 4.502e-05, 4.534e-05, 28090.43662832], [1516747080000, 4.529e-05, 4.534e-05, 4.502e-05, 4.502e-05, 1566.51692612], [1516747140000, 4.503e-05, 4.526e-05, 4.503e-05, 4.522e-05, 1412.82671764], [1516747200000, 4.522e-05, 4.522e-05, 4.503e-05, 4.521e-05, 9779.72342363], [1516747260000, 4.521e-05, 4.521e-05, 4.503e-05, 4.52e-05, 848.54904253], [1516747320000, 4.519e-05, 4.519e-05, 4.502e-05, 4.502e-05, 18085.39267384], [1516747380000, 4.503e-05, 4.525e-05, 4.501e-05, 4.524e-05, 110680.07596568], [1516747440000, 4.524e-05, 4.525e-05, 4.512e-05, 4.524e-05, 9470.98934682], [1516747500000, 4.512e-05, 4.524e-05, 4.512e-05, 4.512e-05, 4304.57745377], [1516747560000, 4.521e-05, 4.523e-05, 4.512e-05, 4.512e-05, 2855.62202889], [1516747620000, 4.522e-05, 4.522e-05, 4.512e-05, 4.512e-05, 12044.37903197], [1516747680000, 4.521e-05, 4.522e-05, 4.512e-05, 4.513e-05, 4208.57509289], [1516747740000, 4.521e-05, 4.521e-05, 4.513e-05, 4.514e-05, 1982.42407591], [1516747800000, 4.513e-05, 4.514e-05, 4.498e-05, 4.51e-05, 29559.83614188], [1516747860000, 4.499e-05, 4.51e-05, 4.499e-05, 4.51e-05, 3486.48416651], [1516747920000, 4.51e-05, 4.521e-05, 4.509e-05, 4.509e-05, 9391.6043156], [1516747980000, 4.509e-05, 4.522e-05, 4.499e-05, 4.522e-05, 7539.6752077], [1516748040000, 4.509e-05, 4.509e-05, 4.495e-05, 4.495e-05, 3323.40056272], [1516748100000, 4.495e-05, 4.509e-05, 4.495e-05, 4.509e-05, 1728.07495353], [1516748160000, 4.496e-05, 4.5e-05, 4.496e-05, 4.498e-05, 2725.5081839], [1516748220000, 4.498e-05, 4.509e-05, 4.497e-05, 4.509e-05, 13670.61264856], [1516748280000, 4.509e-05, 4.509e-05, 4.502e-05, 4.509e-05, 7568.41620171], [1516748340000, 4.509e-05, 4.509e-05, 4.497e-05, 4.509e-05, 30758.77700683], [1516748400000, 4.509e-05, 4.509e-05, 4.495e-05, 4.496e-05, 29645.18941808], [1516748460000, 4.5e-05, 4.5e-05, 4.497e-05, 4.497e-05, 323.06762552], [1516748520000, 4.496e-05, 4.502e-05, 4.49e-05, 4.496e-05, 16091.12320335], [1516748580000, 4.497e-05, 4.509e-05, 4.496e-05, 4.496e-05, 11439.30507853], [1516748640000, 4.509e-05, 4.525e-05, 4.496e-05, 4.5e-05, 45246.08889091], [1516748700000, 4.496e-05, 4.529e-05, 4.489e-05, 4.519e-05, 77525.53997086], [1516748760000, 4.507e-05, 4.519e-05, 4.489e-05, 4.51e-05, 12774.87704922], [1516748820000, 4.51e-05, 4.51e-05, 4.493e-05, 4.51e-05, 12419.9657608], [1516748880000, 4.51e-05, 4.528e-05, 4.502e-05, 4.528e-05, 18784.50281097], [1516748940000, 4.502e-05, 4.528e-05, 4.5e-05, 4.528e-05, 5984.24202092], [1516749000000, 4.514e-05, 4.514e-05, 4.51e-05, 4.51e-05, 940.74718924], [1516749060000, 4.513e-05, 4.513e-05, 4.495e-05, 4.495e-05, 1852.75738505], [1516749120000, 4.495e-05, 4.524e-05, 4.495e-05, 4.524e-05, 12087.79101792], [1516749180000, 4.498e-05, 4.521e-05, 4.498e-05, 4.521e-05, 2915.05112099], [1516749240000, 4.515e-05, 4.515e-05, 4.498e-05, 4.51e-05, 18674.05435044], [1516749300000, 4.506e-05, 4.513e-05, 4.506e-05, 4.51e-05, 4180.73987897], [1516749360000, 4.51e-05, 4.515e-05, 4.498e-05, 4.515e-05, 15918.3164309], [1516749420000, 4.51e-05, 4.523e-05, 4.507e-05, 4.523e-05, 14194.90279332], [1516749480000, 4.509e-05, 4.517e-05, 4.495e-05, 4.498e-05, 29953.73505905], [1516749540000, 4.498e-05, 4.508e-05, 4.495e-05, 4.508e-05, 17513.11915312], [1516749600000, 4.508e-05, 4.511e-05, 4.49e-05, 4.49e-05, 22179.92011608], [1516749660000, 4.49e-05, 4.514e-05, 4.479e-05, 4.5e-05, 17674.4171641], [1516749720000, 4.5e-05, 4.5e-05, 4.48e-05, 4.483e-05, 1465.80733688], [1516749780000, 4.483e-05, 4.493e-05, 4.478e-05, 4.478e-05, 19395.26071928], [1516749840000, 4.48e-05, 4.493e-05, 4.48e-05, 4.48e-05, 22153.38371498], [1516749900000, 4.481e-05, 4.492e-05, 4.472e-05, 4.472e-05, 40647.32629488], [1516749960000, 4.473e-05, 4.49e-05, 4.467e-05, 4.471e-05, 30642.13166914], [1516750020000, 4.488e-05, 4.489e-05, 4.471e-05, 4.476e-05, 2175.19929459], [1516750080000, 4.476e-05, 4.485e-05, 4.466e-05, 4.484e-05, 84634.18355559], [1516750140000, 4.484e-05, 4.484e-05, 4.465e-05, 4.483e-05, 25352.03070018], [1516750200000, 4.483e-05, 4.483e-05, 4.467e-05, 4.467e-05, 28332.22202246], [1516750260000, 4.483e-05, 4.483e-05, 4.469e-05, 4.483e-05, 7527.63450864], [1516750320000, 4.483e-05, 4.483e-05, 4.483e-05, 4.483e-05, 49.2741847], [1516750380000, 4.483e-05, 4.483e-05, 4.483e-05, 4.483e-05, 1060.94268517], [1516750440000, 4.482e-05, 4.482e-05, 4.475e-05, 4.482e-05, 17686.6742787], [1516750500000, 4.482e-05, 4.483e-05, 4.479e-05, 4.481e-05, 2786.81980255], [1516750560000, 4.481e-05, 4.481e-05, 4.475e-05, 4.481e-05, 32293.37755352], [1516750620000, 4.479e-05, 4.48e-05, 4.479e-05, 4.479e-05, 1442.21422253], [1516750680000, 4.48e-05, 4.48e-05, 4.471e-05, 4.48e-05, 30316.89484955], [1516750740000, 4.48e-05, 4.483e-05, 4.48e-05, 4.483e-05, 12369.34104053], [1516750800000, 4.483e-05, 4.5e-05, 4.482e-05, 4.498e-05, 11792.15465838], [1516750860000, 4.497e-05, 4.497e-05, 4.495e-05, 4.495e-05, 42429.24931235], [1516750920000, 4.495e-05, 4.496e-05, 4.483e-05, 4.483e-05, 80994.21642197], [1516750980000, 4.483e-05, 4.5e-05, 4.483e-05, 4.49e-05, 2129.77952381], [1516751040000, 4.483e-05, 4.49e-05, 4.475e-05, 4.475e-05, 29655.25120738], [1516751100000, 4.475e-05, 4.475e-05, 4.465e-05, 4.465e-05, 79064.83008056], [1516751160000, 4.465e-05, 4.475e-05, 4.465e-05, 4.466e-05, 57681.79538649], [1516751220000, 4.466e-05, 4.466e-05, 4.46e-05, 4.466e-05, 18940.35504361], [1516751280000, 4.466e-05, 4.466e-05, 4.458e-05, 4.466e-05, 10142.37649895], [1516751340000, 4.466e-05, 4.47e-05, 4.458e-05, 4.47e-05, 20415.11125549], [1516751400000, 4.466e-05, 4.474e-05, 4.466e-05, 4.474e-05, 4179.09782921], [1516751460000, 4.473e-05, 4.473e-05, 4.466e-05, 4.473e-05, 3412.49695994], [1516751520000, 4.473e-05, 4.475e-05, 4.466e-05, 4.466e-05, 31747.07079867], [1516751580000, 4.473e-05, 4.475e-05, 4.447e-05, 4.447e-05, 28232.79554467], [1516751640000, 4.475e-05, 4.475e-05, 4.447e-05, 4.475e-05, 46761.16227718], [1516751700000, 4.475e-05, 4.475e-05, 4.445e-05, 4.475e-05, 15896.22116289], [1516751760000, 4.475e-05, 4.475e-05, 4.475e-05, 4.475e-05, 1763.82058143], [1516751820000, 4.461e-05, 4.461e-05, 4.461e-05, 4.461e-05, 1118.56823266], [1516751880000, 4.475e-05, 4.484e-05, 4.475e-05, 4.475e-05, 50089.38145144], [1516751940000, 4.475e-05, 4.475e-05, 4.475e-05, 4.475e-05, 1052.2821438], [1516752000000, 4.47e-05, 4.475e-05, 4.45e-05, 4.46e-05, 45727.29848592], [1516752060000, 4.46e-05, 4.475e-05, 4.46e-05, 4.475e-05, 22602.71988935], [1516752120000, 4.475e-05, 4.484e-05, 4.46e-05, 4.474e-05, 18842.3971335], [1516752180000, 4.474e-05, 4.49e-05, 4.452e-05, 4.486e-05, 24655.15095807], [1516752240000, 4.483e-05, 4.483e-05, 4.483e-05, 4.483e-05, 15.4235864], [1516752300000, 4.482e-05, 4.489e-05, 4.453e-05, 4.453e-05, 13168.97981455], [1516752360000, 4.455e-05, 4.487e-05, 4.453e-05, 4.487e-05, 2301.30511018], [1516752420000, 4.461e-05, 4.487e-05, 4.461e-05, 4.487e-05, 1330.37413331], [1516752480000, 4.488e-05, 4.499e-05, 4.487e-05, 4.488e-05, 14120.19279923], [1516752540000, 4.499e-05, 4.506e-05, 4.488e-05, 4.488e-05, 16209.97008624], [1516752600000, 4.488e-05, 4.488e-05, 4.487e-05, 4.488e-05, 3032.92576122], [1516752660000, 4.488e-05, 4.502e-05, 4.487e-05, 4.487e-05, 28235.00033125], [1516752720000, 4.487e-05, 4.487e-05, 4.459e-05, 4.459e-05, 7899.68324358], [1516752780000, 4.459e-05, 4.502e-05, 4.459e-05, 4.502e-05, 12082.34400438], [1516752840000, 4.494e-05, 4.494e-05, 4.457e-05, 4.492e-05, 36649.31349412], [1516752900000, 4.459e-05, 4.481e-05, 4.45e-05, 4.45e-05, 65325.69191274], [1516752960000, 4.45e-05, 4.454e-05, 4.448e-05, 4.454e-05, 26177.68179886], [1516753020000, 4.454e-05, 4.49e-05, 4.454e-05, 4.489e-05, 23968.09353788], [1516753080000, 4.463e-05, 4.49e-05, 4.456e-05, 4.456e-05, 29635.43247801], [1516753140000, 4.49e-05, 4.514e-05, 4.455e-05, 4.456e-05, 20411.36836063], [1516753200000, 4.459e-05, 4.471e-05, 4.457e-05, 4.459e-05, 6852.43558975], [1516753260000, 4.47e-05, 4.47e-05, 4.459e-05, 4.47e-05, 527.34945461], [1516753320000, 4.47e-05, 4.496e-05, 4.47e-05, 4.496e-05, 2945.52574401], [1516753380000, 4.494e-05, 4.494e-05, 4.494e-05, 4.494e-05, 110.39007397], [1516753440000, 4.492e-05, 4.492e-05, 4.463e-05, 4.463e-05, 26851.49889674], [1516753500000, 4.486e-05, 4.486e-05, 4.463e-05, 4.463e-05, 36070.64978896], [1516753560000, 4.47e-05, 4.482e-05, 4.454e-05, 4.454e-05, 26736.89628726], [1516753620000, 4.463e-05, 4.463e-05, 4.454e-05, 4.463e-05, 9207.43731497], [1516753680000, 4.454e-05, 4.47e-05, 4.454e-05, 4.47e-05, 4675.77131694], [1516753740000, 4.469e-05, 4.47e-05, 4.455e-05, 4.455e-05, 9124.24361954], [1516753800000, 4.469e-05, 4.47e-05, 4.455e-05, 4.469e-05, 8939.56404696], [1516753860000, 4.454e-05, 4.454e-05, 4.45e-05, 4.45e-05, 47232.53563447], [1516753920000, 4.453e-05, 4.474e-05, 4.45e-05, 4.468e-05, 44537.94837604], [1516753980000, 4.451e-05, 4.468e-05, 4.45e-05, 4.45e-05, 47894.4343309], [1516754040000, 4.45e-05, 4.468e-05, 4.45e-05, 4.468e-05, 1612.58944544], [1516754100000, 4.452e-05, 4.468e-05, 4.452e-05, 4.468e-05, 1269.7046525], [1516754160000, 4.468e-05, 4.474e-05, 4.468e-05, 4.47e-05, 101086.86750828], [1516754220000, 4.47e-05, 4.489e-05, 4.452e-05, 4.453e-05, 29164.03232182], [1516754280000, 4.453e-05, 4.473e-05, 4.446e-05, 4.448e-05, 23593.05129666], [1516754340000, 4.448e-05, 4.473e-05, 4.445e-05, 4.447e-05, 26228.98703819], [1516754400000, 4.457e-05, 4.473e-05, 4.443e-05, 4.461e-05, 23558.74786323], [1516754460000, 4.445e-05, 4.46e-05, 4.443e-05, 4.445e-05, 65097.92580793], [1516754520000, 4.445e-05, 4.446e-05, 4.443e-05, 4.446e-05, 119840.97587474], [1516754580000, 4.446e-05, 4.446e-05, 4.441e-05, 4.446e-05, 9817.1881301], [1516754640000, 4.446e-05, 4.446e-05, 4.443e-05, 4.445e-05, 24708.26473263], [1516754700000, 4.445e-05, 4.445e-05, 4.437e-05, 4.445e-05, 21591.50340739], [1516754760000, 4.445e-05, 4.445e-05, 4.438e-05, 4.445e-05, 3384.23008289], [1516754820000, 4.445e-05, 4.446e-05, 4.441e-05, 4.446e-05, 6028.83007829], [1516754880000, 4.461e-05, 4.461e-05, 4.441e-05, 4.446e-05, 6897.92229902], [1516754940000, 4.441e-05, 4.446e-05, 4.438e-05, 4.446e-05, 2478.04959315], [1516755000000, 4.441e-05, 4.461e-05, 4.441e-05, 4.446e-05, 1426.08867434], [1516755060000, 4.446e-05, 4.461e-05, 4.446e-05, 4.461e-05, 536.14801759], [1516755120000, 4.455e-05, 4.455e-05, 4.443e-05, 4.443e-05, 1778.1285533], [1516755180000, 4.455e-05, 4.455e-05, 4.455e-05, 4.455e-05, 14130.12626325], [1516755240000, 4.455e-05, 4.461e-05, 4.443e-05, 4.461e-05, 9132.62201041], [1516755300000, 4.461e-05, 4.469e-05, 4.443e-05, 4.443e-05, 22433.19147093], [1516755360000, 4.443e-05, 4.48e-05, 4.43e-05, 4.43e-05, 62583.70570272], [1516755420000, 4.433e-05, 4.433e-05, 4.433e-05, 4.433e-05, 2000.0], [1516755480000, 4.461e-05, 4.461e-05, 4.434e-05, 4.434e-05, 5221.67097572], [1516755540000, 4.459e-05, 4.459e-05, 4.439e-05, 4.44e-05, 6469.72340552], [1516755600000, 4.442e-05, 4.45e-05, 4.43e-05, 4.442e-05, 36242.56338606], [1516755660000, 4.442e-05, 4.47e-05, 4.431e-05, 4.443e-05, 28275.75917544], [1516755720000, 4.456e-05, 4.469e-05, 4.444e-05, 4.457e-05, 48251.33827496], [1516755780000, 4.468e-05, 4.473e-05, 4.468e-05, 4.473e-05, 24428.64196251], [1516755840000, 4.462e-05, 4.473e-05, 4.456e-05, 4.473e-05, 36670.13800986], [1516755900000, 4.46e-05, 4.475e-05, 4.443e-05, 4.47e-05, 62119.46333859], [1516755960000, 4.47e-05, 4.47e-05, 4.457e-05, 4.47e-05, 16537.52420369], [1516756020000, 4.475e-05, 4.484e-05, 4.475e-05, 4.484e-05, 16131.01133877], [1516756080000, 4.486e-05, 4.489e-05, 4.47e-05, 4.47e-05, 25618.95225647], [1516756140000, 4.486e-05, 4.486e-05, 4.46e-05, 4.48e-05, 52341.37590078], [1516756200000, 4.475e-05, 4.483e-05, 4.475e-05, 4.483e-05, 32704.10314473], [1516756260000, 4.483e-05, 4.484e-05, 4.483e-05, 4.484e-05, 44068.81185244], [1516756320000, 4.488e-05, 4.49e-05, 4.488e-05, 4.49e-05, 3481.89347164], [1516756380000, 4.49e-05, 4.492e-05, 4.49e-05, 4.492e-05, 50668.17696832], [1516756440000, 4.492e-05, 4.497e-05, 4.491e-05, 4.497e-05, 23656.83593624], [1516756500000, 4.497e-05, 4.507e-05, 4.496e-05, 4.507e-05, 146176.00373003], [1516756560000, 4.506e-05, 4.514e-05, 4.506e-05, 4.511e-05, 26855.12328651], [1516756620000, 4.518e-05, 4.519e-05, 4.511e-05, 4.519e-05, 14773.95586528], [1516756680000, 4.519e-05, 4.523e-05, 4.518e-05, 4.519e-05, 39176.33736595], [1516756740000, 4.519e-05, 4.522e-05, 4.518e-05, 4.521e-05, 46528.96324002], [1516756800000, 4.518e-05, 4.53e-05, 4.496e-05, 4.497e-05, 141457.27880721], [1516756860000, 4.528e-05, 4.528e-05, 4.501e-05, 4.526e-05, 136.52697443], [1516756920000, 4.503e-05, 4.526e-05, 4.503e-05, 4.525e-05, 10759.3210737], [1516756980000, 4.524e-05, 4.525e-05, 4.507e-05, 4.525e-05, 8861.86978533], [1516757040000, 4.525e-05, 4.534e-05, 4.521e-05, 4.533e-05, 33374.54178323], [1516757100000, 4.533e-05, 4.538e-05, 4.529e-05, 4.529e-05, 99241.79949161], [1516757160000, 4.529e-05, 4.536e-05, 4.521e-05, 4.536e-05, 75932.95844425], [1516757220000, 4.526e-05, 4.534e-05, 4.502e-05, 4.515e-05, 4106.77670541], [1516757280000, 4.515e-05, 4.533e-05, 4.515e-05, 4.533e-05, 8003.40576657], [1516757340000, 4.521e-05, 4.533e-05, 4.52e-05, 4.521e-05, 4815.86111523], [1516757400000, 4.521e-05, 4.532e-05, 4.519e-05, 4.519e-05, 11242.69216316], [1516757460000, 4.521e-05, 4.531e-05, 4.521e-05, 4.531e-05, 32483.54424974], [1516757520000, 4.531e-05, 4.532e-05, 4.505e-05, 4.505e-05, 98279.59359608], [1516757580000, 4.505e-05, 4.505e-05, 4.505e-05, 4.505e-05, 40325.26742411], [1516757640000, 4.505e-05, 4.525e-05, 4.504e-05, 4.525e-05, 38405.3740133], [1516757700000, 4.525e-05, 4.532e-05, 4.506e-05, 4.506e-05, 17572.46823366], [1516757760000, 4.506e-05, 4.523e-05, 4.498e-05, 4.499e-05, 42398.12616605], [1516757820000, 4.504e-05, 4.523e-05, 4.5e-05, 4.523e-05, 9115.4703215], [1516757880000, 4.523e-05, 4.523e-05, 4.511e-05, 4.511e-05, 2784.88900025], [1516757940000, 4.511e-05, 4.511e-05, 4.496e-05, 4.496e-05, 26224.66703088], [1516758000000, 4.496e-05, 4.511e-05, 4.492e-05, 4.496e-05, 27998.92412497], [1516758060000, 4.496e-05, 4.5e-05, 4.496e-05, 4.5e-05, 2555.00290247], [1516758120000, 4.499e-05, 4.5e-05, 4.497e-05, 4.499e-05, 16124.50308934], [1516758180000, 4.499e-05, 4.5e-05, 4.499e-05, 4.499e-05, 5583.12984036], [1516758240000, 4.499e-05, 4.5e-05, 4.497e-05, 4.499e-05, 11718.02768276], [1516758300000, 4.5e-05, 4.5e-05, 4.499e-05, 4.499e-05, 3984.9908156], [1516758360000, 4.5e-05, 4.5e-05, 4.497e-05, 4.5e-05, 7313.03094847], [1516758420000, 4.5e-05, 4.5e-05, 4.497e-05, 4.497e-05, 35277.8768993], [1516758480000, 4.497e-05, 4.5e-05, 4.497e-05, 4.497e-05, 8582.40120825], [1516758540000, 4.5e-05, 4.5e-05, 4.491e-05, 4.5e-05, 10255.79855013], [1516758600000, 4.5e-05, 4.5e-05, 4.5e-05, 4.5e-05, 28845.66003375], [1516758660000, 4.5e-05, 4.525e-05, 4.496e-05, 4.502e-05, 17531.27273676], [1516758720000, 4.502e-05, 4.525e-05, 4.502e-05, 4.51e-05, 12918.32257028], [1516758780000, 4.51e-05, 4.54e-05, 4.51e-05, 4.533e-05, 30442.72587158], [1516758840000, 4.53e-05, 4.53e-05, 4.502e-05, 4.53e-05, 16175.04775869], [1516758900000, 4.526e-05, 4.532e-05, 4.524e-05, 4.532e-05, 18666.57844264], [1516758960000, 4.52e-05, 4.534e-05, 4.52e-05, 4.534e-05, 20030.77905483], [1516759020000, 4.531e-05, 4.531e-05, 4.51e-05, 4.529e-05, 17857.96118056], [1516759080000, 4.511e-05, 4.527e-05, 4.51e-05, 4.51e-05, 2588.92887077], [1516759140000, 4.526e-05, 4.526e-05, 4.51e-05, 4.525e-05, 18688.68042778], [1516759200000, 4.51e-05, 4.524e-05, 4.504e-05, 4.524e-05, 33317.46251229], [1516759260000, 4.523e-05, 4.523e-05, 4.504e-05, 4.509e-05, 7846.59844997], [1516759320000, 4.509e-05, 4.509e-05, 4.504e-05, 4.508e-05, 27472.03920594], [1516759380000, 4.506e-05, 4.509e-05, 4.505e-05, 4.508e-05, 6181.55724665], [1516759440000, 4.509e-05, 4.509e-05, 4.508e-05, 4.508e-05, 4606.20845566], [1516759500000, 4.507e-05, 4.507e-05, 4.504e-05, 4.505e-05, 16241.92992015], [1516759560000, 4.505e-05, 4.506e-05, 4.505e-05, 4.506e-05, 3100.41175525], [1516759620000, 4.505e-05, 4.509e-05, 4.505e-05, 4.509e-05, 2166.8213588], [1516759680000, 4.505e-05, 4.509e-05, 4.505e-05, 4.509e-05, 3020.91693137], [1516759740000, 4.508e-05, 4.509e-05, 4.508e-05, 4.509e-05, 7214.49305587], [1516759800000, 4.509e-05, 4.524e-05, 4.509e-05, 4.524e-05, 74294.94645343], [1516759860000, 4.524e-05, 4.525e-05, 4.523e-05, 4.525e-05, 4717.85648472], [1516759920000, 4.525e-05, 4.538e-05, 4.525e-05, 4.538e-05, 11113.5739767], [1516759980000, 4.538e-05, 4.54e-05, 4.519e-05, 4.54e-05, 29417.80790991], [1516760040000, 4.538e-05, 4.538e-05, 4.538e-05, 4.538e-05, 7657.32063857], [1516760100000, 4.537e-05, 4.549e-05, 4.52e-05, 4.549e-05, 45582.59221062], [1516760160000, 4.549e-05, 4.549e-05, 4.527e-05, 4.547e-05, 2545.62998272], [1516760220000, 4.544e-05, 4.547e-05, 4.527e-05, 4.547e-05, 9683.78289702], [1516760280000, 4.547e-05, 4.547e-05, 4.528e-05, 4.528e-05, 13436.75476888], [1516760340000, 4.528e-05, 4.549e-05, 4.527e-05, 4.539e-05, 28467.70401808], [1516760400000, 4.544e-05, 4.549e-05, 4.539e-05, 4.546e-05, 15719.43383181], [1516760460000, 4.541e-05, 4.549e-05, 4.541e-05, 4.541e-05, 13788.79012047], [1516760520000, 4.541e-05, 4.547e-05, 4.541e-05, 4.547e-05, 9732.41893746], [1516760580000, 4.543e-05, 4.547e-05, 4.543e-05, 4.547e-05, 12344.51664856], [1516760640000, 4.547e-05, 4.547e-05, 4.543e-05, 4.547e-05, 87507.29863836], [1516760700000, 4.546e-05, 4.55e-05, 4.543e-05, 4.55e-05, 16354.79716701], [1516760760000, 4.545e-05, 4.55e-05, 4.543e-05, 4.55e-05, 91293.47057402], [1516760820000, 4.548e-05, 4.55e-05, 4.544e-05, 4.55e-05, 25719.5519627], [1516760880000, 4.545e-05, 4.55e-05, 4.544e-05, 4.544e-05, 41304.91952704], [1516760940000, 4.544e-05, 4.55e-05, 4.543e-05, 4.55e-05, 8612.9646879], [1516761000000, 4.544e-05, 4.55e-05, 4.543e-05, 4.543e-05, 12585.78513944], [1516761060000, 4.544e-05, 4.544e-05, 4.544e-05, 4.544e-05, 3176.16048526], [1516761120000, 4.544e-05, 4.544e-05, 4.54e-05, 4.544e-05, 25411.55034062], [1516761180000, 4.542e-05, 4.544e-05, 4.542e-05, 4.544e-05, 46337.74711914], [1516761240000, 4.544e-05, 4.544e-05, 4.543e-05, 4.544e-05, 14064.77905583], [1516761300000, 4.544e-05, 4.55e-05, 4.543e-05, 4.544e-05, 86551.11266334], [1516761360000, 4.544e-05, 4.544e-05, 4.542e-05, 4.542e-05, 38538.73378831], [1516761420000, 4.54e-05, 4.54e-05, 4.525e-05, 4.525e-05, 28753.90255978], [1516761480000, 4.525e-05, 4.543e-05, 4.525e-05, 4.54e-05, 1471.79399556], [1516761540000, 4.542e-05, 4.543e-05, 4.528e-05, 4.543e-05, 2744.83638681], [1516761600000, 4.542e-05, 4.542e-05, 4.536e-05, 4.536e-05, 1030.59682848], [1516761660000, 4.542e-05, 4.558e-05, 4.541e-05, 4.541e-05, 56385.0767034], [1516761720000, 4.544e-05, 4.555e-05, 4.544e-05, 4.552e-05, 1036.04071193], [1516761780000, 4.552e-05, 4.557e-05, 4.544e-05, 4.556e-05, 38927.97580175], [1516761840000, 4.557e-05, 4.558e-05, 4.556e-05, 4.557e-05, 15898.79204572], [1516761900000, 4.557e-05, 4.558e-05, 4.556e-05, 4.558e-05, 11053.20072196], [1516761960000, 4.558e-05, 4.558e-05, 4.556e-05, 4.558e-05, 10107.05065748], [1516762020000, 4.558e-05, 4.559e-05, 4.556e-05, 4.559e-05, 12231.36033467], [1516762080000, 4.559e-05, 4.56e-05, 4.558e-05, 4.558e-05, 16240.28903954], [1516762140000, 4.56e-05, 4.561e-05, 4.559e-05, 4.561e-05, 107572.80153628], [1516762200000, 4.561e-05, 4.562e-05, 4.56e-05, 4.562e-05, 22757.3592231], [1516762260000, 4.562e-05, 4.579e-05, 4.562e-05, 4.577e-05, 61017.8568846], [1516762320000, 4.578e-05, 4.579e-05, 4.578e-05, 4.578e-05, 52375.29525367], [1516762380000, 4.578e-05, 4.581e-05, 4.578e-05, 4.58e-05, 14176.41212218], [1516762440000, 4.58e-05, 4.582e-05, 4.561e-05, 4.561e-05, 46008.23488303], [1516762500000, 4.562e-05, 4.578e-05, 4.56e-05, 4.578e-05, 20437.08329562], [1516762560000, 4.563e-05, 4.571e-05, 4.561e-05, 4.561e-05, 10326.98063028], [1516762620000, 4.561e-05, 4.561e-05, 4.559e-05, 4.561e-05, 48509.43563302], [1516762680000, 4.561e-05, 4.561e-05, 4.559e-05, 4.561e-05, 45661.25932181], [1516762740000, 4.56e-05, 4.563e-05, 4.559e-05, 4.56e-05, 27629.75067025], [1516762800000, 4.56e-05, 4.584e-05, 4.56e-05, 4.56e-05, 17636.93867454], [1516762860000, 4.584e-05, 4.584e-05, 4.561e-05, 4.57e-05, 3499.56462944], [1516762920000, 4.57e-05, 4.584e-05, 4.566e-05, 4.584e-05, 4838.02073259], [1516762980000, 4.584e-05, 4.584e-05, 4.569e-05, 4.584e-05, 8952.2106698], [1516763040000, 4.576e-05, 4.584e-05, 4.57e-05, 4.584e-05, 14234.16798109], [1516763100000, 4.585e-05, 4.585e-05, 4.569e-05, 4.584e-05, 12469.24771481], [1516763160000, 4.584e-05, 4.587e-05, 4.584e-05, 4.587e-05, 34343.84876052], [1516763220000, 4.586e-05, 4.595e-05, 4.571e-05, 4.595e-05, 75779.35564258], [1516763280000, 4.589e-05, 4.597e-05, 4.589e-05, 4.595e-05, 19398.76273131], [1516763340000, 4.596e-05, 4.602e-05, 4.596e-05, 4.6e-05, 151922.18512571], [1516763400000, 4.6e-05, 4.616e-05, 4.595e-05, 4.61e-05, 76898.8939907], [1516763460000, 4.61e-05, 4.623e-05, 4.604e-05, 4.61e-05, 52496.92513562], [1516763520000, 4.623e-05, 4.632e-05, 4.61e-05, 4.619e-05, 29958.92173462], [1516763580000, 4.615e-05, 4.632e-05, 4.615e-05, 4.632e-05, 24167.36391168], [1516763640000, 4.623e-05, 4.65e-05, 4.623e-05, 4.632e-05, 139249.96355272], [1516763700000, 4.632e-05, 4.65e-05, 4.628e-05, 4.65e-05, 289793.66323442], [1516763760000, 4.65e-05, 4.673e-05, 4.637e-05, 4.665e-05, 133486.21086677], [1516763820000, 4.665e-05, 4.673e-05, 4.65e-05, 4.66e-05, 102333.33885005], [1516763880000, 4.66e-05, 4.699e-05, 4.66e-05, 4.699e-05, 358100.38329928], [1516763940000, 4.699e-05, 4.7e-05, 4.66e-05, 4.698e-05, 193648.50514238], [1516764000000, 4.69e-05, 4.705e-05, 4.689e-05, 4.7e-05, 241322.56832845], [1516764060000, 4.704e-05, 4.723e-05, 4.695e-05, 4.706e-05, 256452.02899537], [1516764120000, 4.706e-05, 4.707e-05, 4.7e-05, 4.705e-05, 44230.37330679], [1516764180000, 4.7e-05, 4.7e-05, 4.689e-05, 4.694e-05, 30746.66655527], [1516764240000, 4.694e-05, 4.695e-05, 4.66e-05, 4.665e-05, 231482.93504661], [1516764300000, 4.665e-05, 4.674e-05, 4.646e-05, 4.66e-05, 54307.11282504], [1516764360000, 4.654e-05, 4.693e-05, 4.654e-05, 4.693e-05, 85899.75071208], [1516764420000, 4.68e-05, 4.694e-05, 4.665e-05, 4.688e-05, 31752.7720713], [1516764480000, 4.688e-05, 4.689e-05, 4.674e-05, 4.679e-05, 14854.87166995], [1516764540000, 4.674e-05, 4.689e-05, 4.66e-05, 4.674e-05, 34056.52973946], [1516764600000, 4.674e-05, 4.687e-05, 4.665e-05, 4.676e-05, 20821.96833197], [1516764660000, 4.685e-05, 4.689e-05, 4.674e-05, 4.689e-05, 109455.37225386], [1516764720000, 4.689e-05, 4.705e-05, 4.687e-05, 4.705e-05, 105774.61032121], [1516764780000, 4.707e-05, 4.71e-05, 4.676e-05, 4.687e-05, 126675.12852598], [1516764840000, 4.7e-05, 4.7e-05, 4.678e-05, 4.686e-05, 18097.51089758], [1516764900000, 4.69e-05, 4.703e-05, 4.68e-05, 4.702e-05, 103778.94505413], [1516764960000, 4.702e-05, 4.703e-05, 4.691e-05, 4.691e-05, 6948.91008492], [1516765020000, 4.7e-05, 4.7e-05, 4.691e-05, 4.695e-05, 17468.62376127], [1516765080000, 4.697e-05, 4.7e-05, 4.695e-05, 4.699e-05, 55266.34445003], [1516765140000, 4.7e-05, 4.71e-05, 4.695e-05, 4.71e-05, 64746.00366532], [1516765200000, 4.706e-05, 4.707e-05, 4.7e-05, 4.7e-05, 53516.90239394], [1516765260000, 4.704e-05, 4.717e-05, 4.701e-05, 4.707e-05, 77701.33986016], [1516765320000, 4.707e-05, 4.711e-05, 4.707e-05, 4.708e-05, 67213.77092183], [1516765380000, 4.708e-05, 4.708e-05, 4.7e-05, 4.703e-05, 64595.30101102], [1516765440000, 4.704e-05, 4.707e-05, 4.703e-05, 4.706e-05, 32909.24878452], [1516765500000, 4.707e-05, 4.709e-05, 4.703e-05, 4.703e-05, 83981.05852398], [1516765560000, 4.707e-05, 4.707e-05, 4.69e-05, 4.696e-05, 44057.4417702], [1516765620000, 4.696e-05, 4.697e-05, 4.676e-05, 4.676e-05, 28406.98328923], [1516765680000, 4.685e-05, 4.691e-05, 4.685e-05, 4.691e-05, 27799.29477999], [1516765740000, 4.691e-05, 4.701e-05, 4.686e-05, 4.701e-05, 42203.32645897], [1516765800000, 4.701e-05, 4.703e-05, 4.692e-05, 4.701e-05, 17884.51902415], [1516765860000, 4.702e-05, 4.71e-05, 4.686e-05, 4.701e-05, 65654.32249741], [1516765920000, 4.7e-05, 4.703e-05, 4.7e-05, 4.703e-05, 89148.68349969], [1516765980000, 4.702e-05, 4.71e-05, 4.701e-05, 4.71e-05, 95697.10449186], [1516766040000, 4.71e-05, 4.722e-05, 4.71e-05, 4.719e-05, 24263.26819782], [1516766100000, 4.717e-05, 4.743e-05, 4.717e-05, 4.74e-05, 277637.19978767], [1516766160000, 4.743e-05, 4.745e-05, 4.74e-05, 4.745e-05, 49994.18970713], [1516766220000, 4.745e-05, 4.75e-05, 4.745e-05, 4.749e-05, 104694.5052458], [1516766280000, 4.749e-05, 4.755e-05, 4.749e-05, 4.754e-05, 187387.8790544], [1516766340000, 4.754e-05, 4.76e-05, 4.753e-05, 4.756e-05, 114506.52227718], [1516766400000, 4.756e-05, 4.76e-05, 4.75e-05, 4.756e-05, 182414.46015523], [1516766460000, 4.759e-05, 4.76e-05, 4.755e-05, 4.759e-05, 54784.75756783], [1516766520000, 4.759e-05, 4.761e-05, 4.756e-05, 4.756e-05, 69762.92474192], [1516766580000, 4.757e-05, 4.76e-05, 4.737e-05, 4.738e-05, 394180.02366164], [1516766640000, 4.738e-05, 4.755e-05, 4.738e-05, 4.755e-05, 111574.35121822], [1516766700000, 4.755e-05, 4.759e-05, 4.745e-05, 4.755e-05, 92543.21371664], [1516766760000, 4.754e-05, 4.755e-05, 4.74e-05, 4.74e-05, 64941.98190701], [1516766820000, 4.74e-05, 4.74e-05, 4.704e-05, 4.704e-05, 87102.72971469], [1516766880000, 4.728e-05, 4.735e-05, 4.702e-05, 4.706e-05, 105089.22327871], [1516766940000, 4.725e-05, 4.725e-05, 4.708e-05, 4.708e-05, 5900.35776902], [1516767000000, 4.717e-05, 4.717e-05, 4.703e-05, 4.705e-05, 30306.70303726], [1516767060000, 4.705e-05, 4.708e-05, 4.7e-05, 4.701e-05, 108482.5391365], [1516767120000, 4.7e-05, 4.703e-05, 4.7e-05, 4.701e-05, 69181.92817993], [1516767180000, 4.701e-05, 4.704e-05, 4.69e-05, 4.699e-05, 63209.5770292], [1516767240000, 4.699e-05, 4.739e-05, 4.699e-05, 4.719e-05, 81062.195618], [1516767300000, 4.737e-05, 4.74e-05, 4.71e-05, 4.71e-05, 191776.22879898], [1516767360000, 4.71e-05, 4.747e-05, 4.7e-05, 4.711e-05, 54572.25301838], [1516767420000, 4.711e-05, 4.725e-05, 4.701e-05, 4.711e-05, 40798.21478617], [1516767480000, 4.711e-05, 4.724e-05, 4.711e-05, 4.712e-05, 21372.37388332], [1516767540000, 4.712e-05, 4.714e-05, 4.71e-05, 4.71e-05, 16005.22645912], [1516767600000, 4.711e-05, 4.74e-05, 4.702e-05, 4.74e-05, 62822.93951365], [1516767660000, 4.712e-05, 4.712e-05, 4.691e-05, 4.712e-05, 150374.37008322], [1516767720000, 4.712e-05, 4.739e-05, 4.712e-05, 4.712e-05, 84726.92049711], [1516767780000, 4.694e-05, 4.712e-05, 4.685e-05, 4.687e-05, 37681.50911246], [1516767840000, 4.687e-05, 4.697e-05, 4.676e-05, 4.68e-05, 27951.07002066], [1516767900000, 4.68e-05, 4.68e-05, 4.67e-05, 4.671e-05, 48212.0665043], [1516767960000, 4.674e-05, 4.68e-05, 4.662e-05, 4.68e-05, 36764.31862493], [1516768020000, 4.67e-05, 4.68e-05, 4.665e-05, 4.673e-05, 48639.7673092], [1516768080000, 4.673e-05, 4.68e-05, 4.666e-05, 4.666e-05, 12184.10428285], [1516768140000, 4.666e-05, 4.68e-05, 4.665e-05, 4.68e-05, 38270.74089711], [1516768200000, 4.68e-05, 4.683e-05, 4.676e-05, 4.68e-05, 58103.87001975], [1516768260000, 4.683e-05, 4.683e-05, 4.665e-05, 4.683e-05, 51328.31076737], [1516768320000, 4.674e-05, 4.712e-05, 4.674e-05, 4.712e-05, 60410.22385767], [1516768380000, 4.712e-05, 4.725e-05, 4.674e-05, 4.721e-05, 24365.33927739], [1516768440000, 4.714e-05, 4.716e-05, 4.68e-05, 4.7e-05, 14895.91986101], [1516768500000, 4.681e-05, 4.721e-05, 4.681e-05, 4.701e-05, 5448.23468271], [1516768560000, 4.701e-05, 4.705e-05, 4.684e-05, 4.7e-05, 33065.15993021], [1516768620000, 4.701e-05, 4.706e-05, 4.686e-05, 4.703e-05, 24327.65190094], [1516768680000, 4.703e-05, 4.706e-05, 4.691e-05, 4.701e-05, 18651.53442741], [1516768740000, 4.7e-05, 4.701e-05, 4.69e-05, 4.696e-05, 42976.43193334], [1516768800000, 4.696e-05, 4.696e-05, 4.69e-05, 4.695e-05, 6483.27826465], [1516768860000, 4.691e-05, 4.696e-05, 4.691e-05, 4.696e-05, 14984.4954586], [1516768920000, 4.696e-05, 4.701e-05, 4.695e-05, 4.701e-05, 11081.735031], [1516768980000, 4.704e-05, 4.71e-05, 4.704e-05, 4.706e-05, 32608.63969247], [1516769040000, 4.708e-05, 4.72e-05, 4.706e-05, 4.706e-05, 64492.29166313], [1516769100000, 4.705e-05, 4.712e-05, 4.704e-05, 4.705e-05, 17152.02761862], [1516769160000, 4.705e-05, 4.705e-05, 4.696e-05, 4.696e-05, 23230.43337746], [1516769220000, 4.696e-05, 4.696e-05, 4.695e-05, 4.695e-05, 72334.74856483], [1516769280000, 4.695e-05, 4.695e-05, 4.68e-05, 4.68e-05, 24057.44955229], [1516769340000, 4.673e-05, 4.688e-05, 4.673e-05, 4.688e-05, 5205.47446463], [1516769400000, 4.688e-05, 4.713e-05, 4.688e-05, 4.713e-05, 39522.40667895], [1516769460000, 4.713e-05, 4.713e-05, 4.7e-05, 4.706e-05, 25431.77564454], [1516769520000, 4.705e-05, 4.706e-05, 4.675e-05, 4.675e-05, 41411.14077313], [1516769580000, 4.675e-05, 4.709e-05, 4.675e-05, 4.705e-05, 24743.52216413], [1516769640000, 4.705e-05, 4.713e-05, 4.678e-05, 4.713e-05, 25146.36729323], [1516769700000, 4.712e-05, 4.724e-05, 4.712e-05, 4.723e-05, 49370.11512945], [1516769760000, 4.723e-05, 4.725e-05, 4.723e-05, 4.723e-05, 38218.68899263], [1516769820000, 4.723e-05, 4.73e-05, 4.723e-05, 4.725e-05, 19188.64800249], [1516769880000, 4.725e-05, 4.737e-05, 4.725e-05, 4.731e-05, 20357.93965159], [1516769940000, 4.731e-05, 4.737e-05, 4.725e-05, 4.73e-05, 84971.10011406], [1516770000000, 4.73e-05, 4.73e-05, 4.73e-05, 4.73e-05, 731.41719386], [1516770060000, 4.725e-05, 4.725e-05, 4.723e-05, 4.723e-05, 7982.02243094], [1516770120000, 4.725e-05, 4.725e-05, 4.722e-05, 4.722e-05, 22524.12238782], [1516770180000, 4.722e-05, 4.723e-05, 4.704e-05, 4.705e-05, 11738.5481761], [1516770240000, 4.705e-05, 4.722e-05, 4.705e-05, 4.722e-05, 5038.71318104], [1516770300000, 4.721e-05, 4.721e-05, 4.71e-05, 4.721e-05, 4994.79470758], [1516770360000, 4.721e-05, 4.721e-05, 4.72e-05, 4.721e-05, 7870.84771418], [1516770420000, 4.72e-05, 4.72e-05, 4.72e-05, 4.72e-05, 18977.22590318], [1516770480000, 4.72e-05, 4.72e-05, 4.712e-05, 4.719e-05, 3611.6992444], [1516770540000, 4.719e-05, 4.721e-05, 4.716e-05, 4.716e-05, 19913.31863049], [1516770600000, 4.72e-05, 4.723e-05, 4.716e-05, 4.723e-05, 35360.65606695], [1516770660000, 4.723e-05, 4.723e-05, 4.712e-05, 4.717e-05, 60934.07227384], [1516770720000, 4.714e-05, 4.717e-05, 4.712e-05, 4.712e-05, 6546.32239706], [1516770780000, 4.712e-05, 4.712e-05, 4.689e-05, 4.69e-05, 9633.78363035], [1516770840000, 4.69e-05, 4.711e-05, 4.69e-05, 4.71e-05, 7531.66725996], [1516770900000, 4.711e-05, 4.711e-05, 4.69e-05, 4.69e-05, 6994.31735957], [1516770960000, 4.708e-05, 4.708e-05, 4.694e-05, 4.702e-05, 117.40073914], [1516771020000, 4.702e-05, 4.725e-05, 4.702e-05, 4.724e-05, 39244.09183125], [1516771080000, 4.724e-05, 4.725e-05, 4.703e-05, 4.725e-05, 11997.38419848], [1516771140000, 4.718e-05, 4.718e-05, 4.702e-05, 4.702e-05, 54915.46567657], [1516771200000, 4.707e-05, 4.707e-05, 4.707e-05, 4.707e-05, 913.84512428], [1516771260000, 4.707e-05, 4.714e-05, 4.707e-05, 4.707e-05, 2185.0815282], [1516771320000, 4.707e-05, 4.713e-05, 4.707e-05, 4.707e-05, 27674.13486649], [1516771380000, 4.703e-05, 4.703e-05, 4.69e-05, 4.69e-05, 28056.07012912], [1516771440000, 4.7e-05, 4.7e-05, 4.69e-05, 4.698e-05, 4804.11414116], [1516771500000, 4.697e-05, 4.699e-05, 4.69e-05, 4.69e-05, 14494.08857796], [1516771560000, 4.69e-05, 4.69e-05, 4.673e-05, 4.686e-05, 54466.68007747], [1516771620000, 4.683e-05, 4.686e-05, 4.666e-05, 4.685e-05, 33270.16568155], [1516771680000, 4.673e-05, 4.685e-05, 4.669e-05, 4.685e-05, 7757.75942165], [1516771740000, 4.669e-05, 4.685e-05, 4.669e-05, 4.685e-05, 34505.94785848], [1516771800000, 4.684e-05, 4.7e-05, 4.684e-05, 4.687e-05, 7283.96301622], [1516771860000, 4.687e-05, 4.699e-05, 4.687e-05, 4.698e-05, 5841.07666591], [1516771920000, 4.698e-05, 4.7e-05, 4.669e-05, 4.699e-05, 102776.62802094], [1516771980000, 4.699e-05, 4.702e-05, 4.675e-05, 4.675e-05, 15595.27443755], [1516772040000, 4.699e-05, 4.7e-05, 4.675e-05, 4.7e-05, 39465.33299612], [1516772100000, 4.7e-05, 4.701e-05, 4.686e-05, 4.686e-05, 28972.11413506], [1516772160000, 4.686e-05, 4.7e-05, 4.686e-05, 4.69e-05, 2126.61776445], [1516772220000, 4.69e-05, 4.7e-05, 4.686e-05, 4.69e-05, 12872.58395215], [1516772280000, 4.69e-05, 4.695e-05, 4.686e-05, 4.686e-05, 6465.03302092], [1516772340000, 4.686e-05, 4.694e-05, 4.686e-05, 4.69e-05, 7157.70234152], [1516772400000, 4.69e-05, 4.695e-05, 4.69e-05, 4.69e-05, 5279.77892819], [1516772460000, 4.69e-05, 4.695e-05, 4.69e-05, 4.694e-05, 9285.29256532], [1516772520000, 4.694e-05, 4.695e-05, 4.694e-05, 4.694e-05, 55894.90133258], [1516772580000, 4.694e-05, 4.7e-05, 4.692e-05, 4.7e-05, 69226.9433569], [1516772640000, 4.695e-05, 4.7e-05, 4.687e-05, 4.7e-05, 26810.36403421], [1516772700000, 4.694e-05, 4.7e-05, 4.694e-05, 4.694e-05, 64818.07052155], [1516772760000, 4.694e-05, 4.694e-05, 4.687e-05, 4.694e-05, 11332.85772294], [1516772820000, 4.699e-05, 4.702e-05, 4.699e-05, 4.702e-05, 71489.97001372], [1516772880000, 4.702e-05, 4.705e-05, 4.7e-05, 4.7e-05, 24247.93283263], [1516772940000, 4.695e-05, 4.7e-05, 4.681e-05, 4.7e-05, 32745.63748905], [1516773000000, 4.7e-05, 4.75e-05, 4.7e-05, 4.7e-05, 98977.66486171], [1516773060000, 4.722e-05, 4.722e-05, 4.722e-05, 4.722e-05, 2060.78989186], [1516773120000, 4.722e-05, 4.728e-05, 4.721e-05, 4.722e-05, 29477.92595726], [1516773180000, 4.72e-05, 4.72e-05, 4.701e-05, 4.71e-05, 32868.57258685], [1516773240000, 4.71e-05, 4.747e-05, 4.71e-05, 4.744e-05, 30268.06075925], [1516773300000, 4.711e-05, 4.74e-05, 4.702e-05, 4.715e-05, 27096.12230242], [1516773360000, 4.715e-05, 4.72e-05, 4.715e-05, 4.715e-05, 7508.94820598], [1516773420000, 4.715e-05, 4.743e-05, 4.715e-05, 4.74e-05, 3722.15790641], [1516773480000, 4.74e-05, 4.74e-05, 4.72e-05, 4.74e-05, 12072.06879101], [1516773540000, 4.735e-05, 4.735e-05, 4.724e-05, 4.735e-05, 13102.16330862], [1516773600000, 4.735e-05, 4.735e-05, 4.726e-05, 4.727e-05, 5161.78230997], [1516773660000, 4.727e-05, 4.727e-05, 4.726e-05, 4.726e-05, 4689.03384296], [1516773720000, 4.727e-05, 4.74e-05, 4.724e-05, 4.74e-05, 11609.40162017], [1516773780000, 4.74e-05, 4.745e-05, 4.736e-05, 4.745e-05, 42800.70132482], [1516773840000, 4.747e-05, 4.763e-05, 4.743e-05, 4.743e-05, 99311.94119285], [1516773900000, 4.749e-05, 4.763e-05, 4.749e-05, 4.75e-05, 49507.8172151], [1516773960000, 4.75e-05, 4.763e-05, 4.75e-05, 4.75e-05, 35185.96484741], [1516774020000, 4.762e-05, 4.762e-05, 4.751e-05, 4.751e-05, 1579.19514717], [1516774080000, 4.76e-05, 4.76e-05, 4.751e-05, 4.76e-05, 2209.1272246], [1516774140000, 4.76e-05, 4.77e-05, 4.752e-05, 4.77e-05, 64426.42289061], [1516774200000, 4.77e-05, 4.774e-05, 4.765e-05, 4.774e-05, 39499.42183827], [1516774260000, 4.774e-05, 4.78e-05, 4.772e-05, 4.78e-05, 70593.84871675], [1516774320000, 4.78e-05, 4.786e-05, 4.78e-05, 4.786e-05, 73497.99765398], [1516774380000, 4.786e-05, 4.789e-05, 4.784e-05, 4.788e-05, 28492.48790932], [1516774440000, 4.788e-05, 4.791e-05, 4.788e-05, 4.791e-05, 22687.79475374], [1516774500000, 4.791e-05, 4.799e-05, 4.789e-05, 4.799e-05, 175480.31705246], [1516774560000, 4.8e-05, 4.816e-05, 4.798e-05, 4.808e-05, 239010.09343097], [1516774620000, 4.808e-05, 4.815e-05, 4.803e-05, 4.808e-05, 22515.912068], [1516774680000, 4.808e-05, 4.818e-05, 4.805e-05, 4.814e-05, 80410.06591969], [1516774740000, 4.808e-05, 4.818e-05, 4.801e-05, 4.801e-05, 68563.04577592], [1516774800000, 4.818e-05, 4.818e-05, 4.801e-05, 4.801e-05, 32055.19706163], [1516774860000, 4.802e-05, 4.802e-05, 4.784e-05, 4.786e-05, 61206.90089174], [1516774920000, 4.786e-05, 4.786e-05, 4.757e-05, 4.785e-05, 33306.57657531], [1516774980000, 4.786e-05, 4.797e-05, 4.786e-05, 4.797e-05, 16507.2233133], [1516775040000, 4.797e-05, 4.8e-05, 4.775e-05, 4.786e-05, 174781.40392965], [1516775100000, 4.786e-05, 4.795e-05, 4.776e-05, 4.78e-05, 7936.64740892], [1516775160000, 4.786e-05, 4.787e-05, 4.78e-05, 4.78e-05, 30192.91514332], [1516775220000, 4.78e-05, 4.78e-05, 4.767e-05, 4.767e-05, 23477.32250631], [1516775280000, 4.767e-05, 4.767e-05, 4.752e-05, 4.767e-05, 34340.72807859], [1516775340000, 4.767e-05, 4.801e-05, 4.767e-05, 4.801e-05, 39637.06510601], [1516775400000, 4.801e-05, 4.801e-05, 4.757e-05, 4.799e-05, 11501.86921177], [1516775460000, 4.799e-05, 4.799e-05, 4.793e-05, 4.799e-05, 13131.27330188], [1516775520000, 4.8e-05, 4.802e-05, 4.799e-05, 4.802e-05, 20358.19201688], [1516775580000, 4.803e-05, 4.825e-05, 4.803e-05, 4.822e-05, 71452.45595429], [1516775640000, 4.824e-05, 4.83e-05, 4.812e-05, 4.83e-05, 144027.22163956], [1516775700000, 4.823e-05, 4.84e-05, 4.823e-05, 4.84e-05, 60447.75472086], [1516775760000, 4.831e-05, 4.84e-05, 4.819e-05, 4.819e-05, 50713.25684935], [1516775820000, 4.819e-05, 4.82e-05, 4.814e-05, 4.82e-05, 60828.71323709], [1516775880000, 4.82e-05, 4.838e-05, 4.805e-05, 4.83e-05, 175426.18542057], [1516775940000, 4.832e-05, 4.847e-05, 4.816e-05, 4.845e-05, 72751.85626719], [1516776000000, 4.834e-05, 4.846e-05, 4.832e-05, 4.84e-05, 110566.92519091], [1516776060000, 4.834e-05, 4.84e-05, 4.824e-05, 4.836e-05, 40444.3332463], [1516776120000, 4.829e-05, 4.84e-05, 4.825e-05, 4.84e-05, 102527.05113865], [1516776180000, 4.84e-05, 4.849e-05, 4.825e-05, 4.848e-05, 265886.51594659], [1516776240000, 4.848e-05, 4.85e-05, 4.825e-05, 4.848e-05, 120479.48269885], [1516776300000, 4.847e-05, 4.847e-05, 4.824e-05, 4.825e-05, 42675.31934063], [1516776360000, 4.84e-05, 4.852e-05, 4.82e-05, 4.82e-05, 132657.34068212], [1516776420000, 4.82e-05, 4.866e-05, 4.811e-05, 4.838e-05, 424801.51193713], [1516776480000, 4.837e-05, 4.838e-05, 4.814e-05, 4.823e-05, 145571.49581147], [1516776540000, 4.816e-05, 4.85e-05, 4.807e-05, 4.85e-05, 131888.46095451], [1516776600000, 4.85e-05, 4.85e-05, 4.808e-05, 4.811e-05, 26768.44469257], [1516776660000, 4.83e-05, 4.83e-05, 4.818e-05, 4.818e-05, 37997.53376015], [1516776720000, 4.818e-05, 4.83e-05, 4.8e-05, 4.815e-05, 151676.54674748], [1516776780000, 4.815e-05, 4.82e-05, 4.8e-05, 4.8e-05, 57961.12610362], [1516776840000, 4.81e-05, 4.82e-05, 4.799e-05, 4.819e-05, 19286.8735579], [1516776900000, 4.811e-05, 4.811e-05, 4.789e-05, 4.798e-05, 111230.67550397], [1516776960000, 4.798e-05, 4.798e-05, 4.789e-05, 4.79e-05, 27814.2913708], [1516777020000, 4.79e-05, 4.79e-05, 4.771e-05, 4.772e-05, 35791.71482291], [1516777080000, 4.772e-05, 4.785e-05, 4.771e-05, 4.771e-05, 73656.83965434], [1516777140000, 4.782e-05, 4.784e-05, 4.772e-05, 4.775e-05, 70263.19275918], [1516777200000, 4.779e-05, 4.784e-05, 4.775e-05, 4.784e-05, 63377.70695558], [1516777260000, 4.783e-05, 4.785e-05, 4.783e-05, 4.784e-05, 20636.19771201], [1516777320000, 4.784e-05, 4.82e-05, 4.784e-05, 4.818e-05, 61854.66703698], [1516777380000, 4.818e-05, 4.832e-05, 4.806e-05, 4.83e-05, 150338.40527353], [1516777440000, 4.83e-05, 4.847e-05, 4.83e-05, 4.839e-05, 28118.81126089], [1516777500000, 4.847e-05, 4.847e-05, 4.836e-05, 4.846e-05, 65853.17181344], [1516777560000, 4.848e-05, 4.853e-05, 4.842e-05, 4.85e-05, 180198.50943043], [1516777620000, 4.853e-05, 4.87e-05, 4.85e-05, 4.86e-05, 102099.24620167], [1516777680000, 4.86e-05, 4.877e-05, 4.86e-05, 4.874e-05, 48298.60770284], [1516777740000, 4.877e-05, 4.879e-05, 4.872e-05, 4.878e-05, 198541.55625902], [1516777800000, 4.874e-05, 4.884e-05, 4.872e-05, 4.884e-05, 105966.04684602], [1516777860000, 4.884e-05, 4.904e-05, 4.88e-05, 4.899e-05, 612946.3210609], [1516777920000, 4.899e-05, 4.92e-05, 4.887e-05, 4.915e-05, 366444.68872976], [1516777980000, 4.915e-05, 4.916e-05, 4.887e-05, 4.89e-05, 114582.21257133], [1516778040000, 4.911e-05, 4.918e-05, 4.901e-05, 4.918e-05, 72553.26886293], [1516778100000, 4.915e-05, 4.922e-05, 4.887e-05, 4.887e-05, 157821.70849685], [1516778160000, 4.909e-05, 4.929e-05, 4.879e-05, 4.904e-05, 152396.86729478], [1516778220000, 4.9e-05, 4.909e-05, 4.866e-05, 4.881e-05, 148944.55370033], [1516778280000, 4.874e-05, 4.891e-05, 4.872e-05, 4.875e-05, 43723.40729689], [1516778340000, 4.875e-05, 4.879e-05, 4.86e-05, 4.86e-05, 117761.57094732], [1516778400000, 4.869e-05, 4.879e-05, 4.869e-05, 4.87e-05, 44239.59490613], [1516778460000, 4.877e-05, 4.9e-05, 4.87e-05, 4.9e-05, 115236.43058881], [1516778520000, 4.9e-05, 4.908e-05, 4.871e-05, 4.901e-05, 159433.29066358], [1516778580000, 4.903e-05, 4.908e-05, 4.892e-05, 4.903e-05, 303329.52667819], [1516778640000, 4.903e-05, 4.903e-05, 4.871e-05, 4.89e-05, 78267.45635224], [1516778700000, 4.886e-05, 4.89e-05, 4.859e-05, 4.86e-05, 92706.62150849], [1516778760000, 4.865e-05, 4.885e-05, 4.811e-05, 4.858e-05, 288550.90339698], [1516778820000, 4.858e-05, 4.883e-05, 4.851e-05, 4.851e-05, 154054.63542292], [1516778880000, 4.855e-05, 4.874e-05, 4.85e-05, 4.874e-05, 245002.98847166], [1516778940000, 4.874e-05, 4.874e-05, 4.851e-05, 4.855e-05, 89413.90812285], [1516779000000, 4.856e-05, 4.869e-05, 4.852e-05, 4.855e-05, 50286.60200347], [1516779060000, 4.854e-05, 4.854e-05, 4.851e-05, 4.853e-05, 44744.90244223], [1516779120000, 4.853e-05, 4.868e-05, 4.852e-05, 4.86e-05, 23641.50691999], [1516779180000, 4.868e-05, 4.873e-05, 4.868e-05, 4.869e-05, 32292.61254568], [1516779240000, 4.868e-05, 4.887e-05, 4.858e-05, 4.858e-05, 20879.88335588], [1516779300000, 4.858e-05, 4.868e-05, 4.855e-05, 4.867e-05, 31250.06803561], [1516779360000, 4.855e-05, 4.866e-05, 4.843e-05, 4.862e-05, 160691.16139354], [1516779420000, 4.862e-05, 4.865e-05, 4.839e-05, 4.839e-05, 162009.04342385], [1516779480000, 4.851e-05, 4.851e-05, 4.835e-05, 4.835e-05, 26212.16788943], [1516779540000, 4.835e-05, 4.838e-05, 4.81e-05, 4.81e-05, 89658.00872147], [1516779600000, 4.814e-05, 4.821e-05, 4.806e-05, 4.82e-05, 51490.2332472], [1516779660000, 4.815e-05, 4.834e-05, 4.815e-05, 4.83e-05, 9721.58498761], [1516779720000, 4.83e-05, 4.86e-05, 4.83e-05, 4.85e-05, 80371.65991904], [1516779780000, 4.85e-05, 4.85e-05, 4.815e-05, 4.84e-05, 167667.78805771], [1516779840000, 4.836e-05, 4.836e-05, 4.808e-05, 4.835e-05, 22016.78801714], [1516779900000, 4.835e-05, 4.835e-05, 4.815e-05, 4.815e-05, 9871.23500737], [1516779960000, 4.818e-05, 4.83e-05, 4.815e-05, 4.815e-05, 53842.58797893], [1516780020000, 4.815e-05, 4.839e-05, 4.815e-05, 4.839e-05, 26798.11653307], [1516780080000, 4.839e-05, 4.85e-05, 4.839e-05, 4.849e-05, 45000.83704386], [1516780140000, 4.849e-05, 4.849e-05, 4.842e-05, 4.848e-05, 7571.16060802], [1516780200000, 4.848e-05, 4.851e-05, 4.842e-05, 4.851e-05, 7344.38502539], [1516780260000, 4.851e-05, 4.874e-05, 4.837e-05, 4.837e-05, 80549.87941767], [1516780320000, 4.84e-05, 4.872e-05, 4.837e-05, 4.872e-05, 40323.79724876], [1516780380000, 4.872e-05, 4.874e-05, 4.871e-05, 4.874e-05, 40142.55332878], [1516780440000, 4.875e-05, 4.9e-05, 4.861e-05, 4.864e-05, 53531.04249891], [1516780500000, 4.864e-05, 4.89e-05, 4.864e-05, 4.89e-05, 5472.4840342], [1516780560000, 4.89e-05, 4.895e-05, 4.864e-05, 4.885e-05, 10797.32017735], [1516780620000, 4.887e-05, 4.89e-05, 4.885e-05, 4.889e-05, 58364.03757477], [1516780680000, 4.889e-05, 4.89e-05, 4.867e-05, 4.885e-05, 21445.79596259], [1516780740000, 4.889e-05, 4.89e-05, 4.885e-05, 4.89e-05, 18370.75019751], [1516780800000, 4.888e-05, 4.895e-05, 4.885e-05, 4.895e-05, 116915.97232309], [1516780860000, 4.895e-05, 4.9e-05, 4.89e-05, 4.897e-05, 91750.32151684], [1516780920000, 4.897e-05, 4.9e-05, 4.887e-05, 4.89e-05, 61677.77549133], [1516780980000, 4.897e-05, 4.9e-05, 4.897e-05, 4.9e-05, 41186.32572202], [1516781040000, 4.905e-05, 4.905e-05, 4.89e-05, 4.897e-05, 142554.52342734], [1516781100000, 4.897e-05, 4.909e-05, 4.89e-05, 4.909e-05, 122764.37902986], [1516781160000, 4.895e-05, 4.909e-05, 4.876e-05, 4.876e-05, 48468.84703821], [1516781220000, 4.885e-05, 4.91e-05, 4.885e-05, 4.909e-05, 42807.30717154], [1516781280000, 4.897e-05, 4.912e-05, 4.897e-05, 4.912e-05, 22693.87054824], [1516781340000, 4.912e-05, 4.92e-05, 4.912e-05, 4.917e-05, 45094.64948007], [1516781400000, 4.918e-05, 4.925e-05, 4.916e-05, 4.918e-05, 55134.78642794], [1516781460000, 4.918e-05, 4.918e-05, 4.909e-05, 4.909e-05, 66376.69723972], [1516781520000, 4.909e-05, 4.909e-05, 4.89e-05, 4.905e-05, 55192.37932749], [1516781580000, 4.905e-05, 4.905e-05, 4.89e-05, 4.9e-05, 37591.63855279], [1516781640000, 4.905e-05, 4.917e-05, 4.905e-05, 4.911e-05, 81481.63223276], [1516781700000, 4.911e-05, 4.92e-05, 4.911e-05, 4.919e-05, 50751.33245586], [1516781760000, 4.919e-05, 4.931e-05, 4.918e-05, 4.931e-05, 57774.74846388], [1516781820000, 4.928e-05, 4.942e-05, 4.928e-05, 4.941e-05, 118118.1616233], [1516781880000, 4.942e-05, 4.95e-05, 4.933e-05, 4.944e-05, 172218.74076744], [1516781940000, 4.944e-05, 4.949e-05, 4.934e-05, 4.941e-05, 64000.28179206], [1516782000000, 4.941e-05, 4.944e-05, 4.934e-05, 4.939e-05, 36452.98304315], [1516782060000, 4.935e-05, 4.948e-05, 4.935e-05, 4.945e-05, 55343.13578986], [1516782120000, 4.948e-05, 4.948e-05, 4.901e-05, 4.901e-05, 95168.52095052], [1516782180000, 4.901e-05, 4.931e-05, 4.901e-05, 4.92e-05, 29027.41867087], [1516782240000, 4.92e-05, 4.929e-05, 4.9e-05, 4.925e-05, 74178.23051586], [1516782300000, 4.921e-05, 4.921e-05, 4.912e-05, 4.916e-05, 25769.06907382], [1516782360000, 4.916e-05, 4.926e-05, 4.916e-05, 4.924e-05, 48373.5560499], [1516782420000, 4.924e-05, 4.943e-05, 4.922e-05, 4.943e-05, 72518.04347274], [1516782480000, 4.943e-05, 4.947e-05, 4.931e-05, 4.946e-05, 111041.11763119], [1516782540000, 4.946e-05, 4.951e-05, 4.935e-05, 4.94e-05, 541120.70787864], [1516782600000, 4.94e-05, 4.945e-05, 4.931e-05, 4.939e-05, 84751.48474345], [1516782660000, 4.943e-05, 4.944e-05, 4.939e-05, 4.943e-05, 32761.64592142], [1516782720000, 4.94e-05, 4.943e-05, 4.939e-05, 4.942e-05, 49344.95403019], [1516782780000, 4.942e-05, 4.944e-05, 4.926e-05, 4.926e-05, 306136.56775218], [1516782840000, 4.93e-05, 4.93e-05, 4.913e-05, 4.914e-05, 55651.93534732], [1516782900000, 4.913e-05, 4.913e-05, 4.875e-05, 4.885e-05, 40276.06443249], [1516782960000, 4.885e-05, 4.9e-05, 4.876e-05, 4.883e-05, 109570.90522339], [1516783020000, 4.899e-05, 4.902e-05, 4.883e-05, 4.9e-05, 144446.59069143], [1516783080000, 4.9e-05, 4.919e-05, 4.89e-05, 4.915e-05, 40512.5207772], [1516783140000, 4.914e-05, 4.915e-05, 4.892e-05, 4.91e-05, 10549.63179841], [1516783200000, 4.9e-05, 4.913e-05, 4.9e-05, 4.9e-05, 27403.3805134], [1516783260000, 4.905e-05, 4.912e-05, 4.9e-05, 4.912e-05, 30974.84149732], [1516783320000, 4.905e-05, 4.912e-05, 4.9e-05, 4.91e-05, 121086.22433286], [1516783380000, 4.91e-05, 4.93e-05, 4.902e-05, 4.928e-05, 86314.207818], [1516783440000, 4.914e-05, 4.927e-05, 4.914e-05, 4.92e-05, 42244.92296127], [1516783500000, 4.92e-05, 4.925e-05, 4.918e-05, 4.923e-05, 56937.5454329], [1516783560000, 4.923e-05, 4.929e-05, 4.912e-05, 4.923e-05, 77546.15520613], [1516783620000, 4.923e-05, 4.924e-05, 4.918e-05, 4.92e-05, 36242.17796803], [1516783680000, 4.923e-05, 4.923e-05, 4.918e-05, 4.918e-05, 19414.63750351], [1516783740000, 4.918e-05, 4.92e-05, 4.913e-05, 4.916e-05, 29602.2932428], [1516783800000, 4.916e-05, 4.919e-05, 4.915e-05, 4.919e-05, 9460.98723302], [1516783860000, 4.919e-05, 4.92e-05, 4.919e-05, 4.92e-05, 32021.67310408], [1516783920000, 4.925e-05, 4.929e-05, 4.92e-05, 4.925e-05, 5685.56445154], [1516783980000, 4.925e-05, 4.94e-05, 4.925e-05, 4.94e-05, 54490.51748423], [1516784040000, 4.938e-05, 4.945e-05, 4.926e-05, 4.927e-05, 50387.52233512], [1516784100000, 4.927e-05, 4.936e-05, 4.927e-05, 4.928e-05, 33825.55879916], [1516784160000, 4.929e-05, 4.929e-05, 4.92e-05, 4.925e-05, 50084.49329722], [1516784220000, 4.925e-05, 4.927e-05, 4.912e-05, 4.918e-05, 40993.77836095], [1516784280000, 4.913e-05, 4.915e-05, 4.912e-05, 4.912e-05, 80151.2638671], [1516784340000, 4.915e-05, 4.915e-05, 4.913e-05, 4.914e-05, 5307.51608307], [1516784400000, 4.915e-05, 4.915e-05, 4.912e-05, 4.914e-05, 30587.01503067], [1516784460000, 4.914e-05, 4.916e-05, 4.91e-05, 4.91e-05, 22125.53128781], [1516784520000, 4.909e-05, 4.912e-05, 4.909e-05, 4.912e-05, 64009.12933981], [1516784580000, 4.912e-05, 4.914e-05, 4.912e-05, 4.913e-05, 23432.12654757], [1516784640000, 4.913e-05, 4.914e-05, 4.909e-05, 4.909e-05, 163697.04125164], [1516784700000, 4.909e-05, 4.909e-05, 4.902e-05, 4.905e-05, 5207.01018637], [1516784760000, 4.902e-05, 4.905e-05, 4.9e-05, 4.9e-05, 48813.28729399], [1516784820000, 4.9e-05, 4.902e-05, 4.891e-05, 4.893e-05, 75594.64692165], [1516784880000, 4.893e-05, 4.9e-05, 4.886e-05, 4.89e-05, 70478.52150365], [1516784940000, 4.886e-05, 4.889e-05, 4.85e-05, 4.86e-05, 146825.94962874], [1516785000000, 4.86e-05, 4.877e-05, 4.85e-05, 4.877e-05, 43300.20726221], [1516785060000, 4.877e-05, 4.888e-05, 4.86e-05, 4.875e-05, 52719.9845963], [1516785120000, 4.875e-05, 4.876e-05, 4.861e-05, 4.874e-05, 29753.43743338], [1516785180000, 4.874e-05, 4.886e-05, 4.865e-05, 4.886e-05, 51959.43721293], [1516785240000, 4.886e-05, 4.886e-05, 4.875e-05, 4.877e-05, 17223.71898317], [1516785300000, 4.877e-05, 4.883e-05, 4.876e-05, 4.883e-05, 31735.65073147], [1516785360000, 4.884e-05, 4.885e-05, 4.878e-05, 4.879e-05, 44145.30270117], [1516785420000, 4.883e-05, 4.887e-05, 4.879e-05, 4.88e-05, 60269.16618412], [1516785480000, 4.88e-05, 4.901e-05, 4.879e-05, 4.9e-05, 37044.74890044], [1516785540000, 4.9e-05, 4.902e-05, 4.899e-05, 4.901e-05, 17238.48787629], [1516785600000, 4.902e-05, 4.91e-05, 4.901e-05, 4.91e-05, 49230.0027513], [1516785660000, 4.91e-05, 4.934e-05, 4.91e-05, 4.934e-05, 105501.64541726], [1516785720000, 4.937e-05, 4.951e-05, 4.902e-05, 4.936e-05, 188539.78580781], [1516785780000, 4.937e-05, 4.94e-05, 4.904e-05, 4.934e-05, 73894.23442485], [1516785840000, 4.923e-05, 4.929e-05, 4.923e-05, 4.923e-05, 6183.32878434], [1516785900000, 4.923e-05, 4.927e-05, 4.899e-05, 4.92e-05, 122749.29312649], [1516785960000, 4.919e-05, 4.919e-05, 4.891e-05, 4.899e-05, 79671.67096592], [1516786020000, 4.9e-05, 4.9e-05, 4.881e-05, 4.896e-05, 31567.04106389], [1516786080000, 4.896e-05, 4.9e-05, 4.887e-05, 4.9e-05, 19589.01519981], [1516786140000, 4.908e-05, 4.911e-05, 4.905e-05, 4.909e-05, 15546.63218297], [1516786200000, 4.909e-05, 4.911e-05, 4.908e-05, 4.908e-05, 26517.84939066], [1516786260000, 4.908e-05, 4.909e-05, 4.902e-05, 4.909e-05, 5964.18277966], [1516786320000, 4.909e-05, 4.917e-05, 4.908e-05, 4.917e-05, 77282.46130187], [1516786380000, 4.917e-05, 4.933e-05, 4.91e-05, 4.925e-05, 73089.49658213], [1516786440000, 4.933e-05, 4.935e-05, 4.925e-05, 4.935e-05, 28749.84670834], [1516786500000, 4.935e-05, 4.935e-05, 4.925e-05, 4.935e-05, 51312.10571872], [1516786560000, 4.926e-05, 4.935e-05, 4.926e-05, 4.929e-05, 18757.74694677], [1516786620000, 4.929e-05, 4.93e-05, 4.896e-05, 4.927e-05, 119757.71590435], [1516786680000, 4.927e-05, 4.929e-05, 4.927e-05, 4.929e-05, 6978.70038351], [1516786740000, 4.928e-05, 4.929e-05, 4.925e-05, 4.929e-05, 29622.28392354], [1516786800000, 4.929e-05, 4.929e-05, 4.925e-05, 4.925e-05, 18258.4661146], [1516786860000, 4.925e-05, 4.929e-05, 4.914e-05, 4.929e-05, 9344.38238366], [1516786920000, 4.929e-05, 4.93e-05, 4.925e-05, 4.929e-05, 12395.02560402], [1516786980000, 4.929e-05, 4.929e-05, 4.915e-05, 4.92e-05, 8586.76756645], [1516787040000, 4.925e-05, 4.925e-05, 4.92e-05, 4.92e-05, 25367.18664573], [1516787100000, 4.92e-05, 4.925e-05, 4.915e-05, 4.925e-05, 41774.42550829], [1516787160000, 4.924e-05, 4.924e-05, 4.915e-05, 4.923e-05, 15475.59036417], [1516787220000, 4.923e-05, 4.924e-05, 4.921e-05, 4.921e-05, 16923.68003779], [1516787280000, 4.922e-05, 4.922e-05, 4.916e-05, 4.916e-05, 24152.69516045], [1516787340000, 4.92e-05, 4.922e-05, 4.916e-05, 4.916e-05, 64775.79891187], [1516787400000, 4.916e-05, 4.919e-05, 4.916e-05, 4.917e-05, 6399.0330103], [1516787460000, 4.917e-05, 4.922e-05, 4.917e-05, 4.922e-05, 4093.36354048], [1516787520000, 4.922e-05, 4.922e-05, 4.921e-05, 4.921e-05, 5491.53905294], [1516787580000, 4.921e-05, 4.922e-05, 4.92e-05, 4.921e-05, 52238.86642018], [1516787640000, 4.921e-05, 4.921e-05, 4.917e-05, 4.921e-05, 31816.34818837], [1516787700000, 4.921e-05, 4.922e-05, 4.921e-05, 4.921e-05, 19515.01701421], [1516787760000, 4.921e-05, 4.925e-05, 4.921e-05, 4.925e-05, 96628.38598175], [1516787820000, 4.924e-05, 4.929e-05, 4.924e-05, 4.929e-05, 50758.54630308], [1516787880000, 4.93e-05, 4.93e-05, 4.929e-05, 4.929e-05, 16245.29441226], [1516787940000, 4.929e-05, 4.929e-05, 4.927e-05, 4.928e-05, 33414.41196568], [1516788000000, 4.926e-05, 4.928e-05, 4.926e-05, 4.926e-05, 18743.37689794], [1516788060000, 4.919e-05, 4.925e-05, 4.904e-05, 4.914e-05, 21147.35584054], [1516788120000, 4.92e-05, 4.925e-05, 4.904e-05, 4.924e-05, 5533.0216218], [1516788180000, 4.911e-05, 4.923e-05, 4.91e-05, 4.92e-05, 43450.52713809], [1516788240000, 4.918e-05, 4.92e-05, 4.911e-05, 4.919e-05, 9540.89385262], [1516788300000, 4.919e-05, 4.924e-05, 4.896e-05, 4.924e-05, 132688.75600493], [1516788360000, 4.924e-05, 4.924e-05, 4.906e-05, 4.921e-05, 21672.94869179], [1516788420000, 4.914e-05, 4.921e-05, 4.897e-05, 4.92e-05, 8561.37605766], [1516788480000, 4.92e-05, 4.92e-05, 4.896e-05, 4.918e-05, 9260.38203451], [1516788540000, 4.917e-05, 4.917e-05, 4.897e-05, 4.916e-05, 4422.41062531], [1516788600000, 4.9e-05, 4.91e-05, 4.9e-05, 4.901e-05, 7246.27586375], [1516788660000, 4.909e-05, 4.909e-05, 4.9e-05, 4.9e-05, 31279.1514054], [1516788720000, 4.9e-05, 4.908e-05, 4.897e-05, 4.908e-05, 15002.05323103], [1516788780000, 4.909e-05, 4.913e-05, 4.909e-05, 4.909e-05, 49358.39262997], [1516788840000, 4.91e-05, 4.911e-05, 4.91e-05, 4.911e-05, 2340.52242537], [1516788900000, 4.91e-05, 4.917e-05, 4.909e-05, 4.917e-05, 51995.63776263], [1516788960000, 4.91e-05, 4.91e-05, 4.908e-05, 4.91e-05, 15089.06440669], [1516789020000, 4.91e-05, 4.917e-05, 4.909e-05, 4.91e-05, 13913.42345119], [1516789080000, 4.91e-05, 4.915e-05, 4.908e-05, 4.91e-05, 10055.15071662], [1516789140000, 4.914e-05, 4.914e-05, 4.902e-05, 4.902e-05, 35510.57291091], [1516789200000, 4.908e-05, 4.908e-05, 4.9e-05, 4.902e-05, 34752.88951572], [1516789260000, 4.901e-05, 4.908e-05, 4.9e-05, 4.905e-05, 20874.91800712], [1516789320000, 4.905e-05, 4.905e-05, 4.9e-05, 4.902e-05, 24911.15941553], [1516789380000, 4.902e-05, 4.905e-05, 4.9e-05, 4.9e-05, 20832.86219826], [1516789440000, 4.9e-05, 4.9e-05, 4.897e-05, 4.898e-05, 12198.1065537], [1516789500000, 4.9e-05, 4.9e-05, 4.896e-05, 4.897e-05, 37361.45492463], [1516789560000, 4.897e-05, 4.9e-05, 4.896e-05, 4.9e-05, 21874.18176889], [1516789620000, 4.899e-05, 4.905e-05, 4.896e-05, 4.905e-05, 22805.4968218], [1516789680000, 4.905e-05, 4.921e-05, 4.904e-05, 4.904e-05, 30930.3643362], [1516789740000, 4.904e-05, 4.915e-05, 4.904e-05, 4.912e-05, 16177.40263123], [1516789800000, 4.911e-05, 4.911e-05, 4.896e-05, 4.899e-05, 13467.74177827], [1516789860000, 4.899e-05, 4.899e-05, 4.89e-05, 4.895e-05, 62745.065053], [1516789920000, 4.895e-05, 4.896e-05, 4.882e-05, 4.892e-05, 39873.16126189], [1516789980000, 4.883e-05, 4.898e-05, 4.883e-05, 4.896e-05, 29070.7396893], [1516790040000, 4.895e-05, 4.895e-05, 4.892e-05, 4.895e-05, 14353.30330951], [1516790100000, 4.895e-05, 4.895e-05, 4.893e-05, 4.894e-05, 24925.08074004], [1516790160000, 4.894e-05, 4.895e-05, 4.893e-05, 4.893e-05, 43652.51257597], [1516790220000, 4.894e-05, 4.895e-05, 4.894e-05, 4.894e-05, 12547.60638799], [1516790280000, 4.895e-05, 4.9e-05, 4.894e-05, 4.894e-05, 23132.86509348], [1516790340000, 4.895e-05, 4.9e-05, 4.894e-05, 4.9e-05, 10209.41642744], [1516790400000, 4.9e-05, 4.909e-05, 4.9e-05, 4.908e-05, 6384.3012648], [1516790460000, 4.909e-05, 4.909e-05, 4.907e-05, 4.907e-05, 16076.75099923], [1516790520000, 4.907e-05, 4.908e-05, 4.9e-05, 4.906e-05, 11490.23472323], [1516790580000, 4.905e-05, 4.908e-05, 4.901e-05, 4.901e-05, 20618.63737621], [1516790640000, 4.901e-05, 4.906e-05, 4.897e-05, 4.897e-05, 17271.15682655], [1516790700000, 4.906e-05, 4.906e-05, 4.903e-05, 4.903e-05, 5646.85167891], [1516790760000, 4.903e-05, 4.906e-05, 4.903e-05, 4.906e-05, 12738.86469351], [1516790820000, 4.906e-05, 4.906e-05, 4.9e-05, 4.903e-05, 90815.89366537], [1516790880000, 4.9e-05, 4.9e-05, 4.897e-05, 4.898e-05, 16824.13404993], [1516790940000, 4.898e-05, 4.9e-05, 4.898e-05, 4.898e-05, 21248.71820213], [1516791000000, 4.898e-05, 4.898e-05, 4.895e-05, 4.895e-05, 9329.89847567], [1516791060000, 4.895e-05, 4.895e-05, 4.893e-05, 4.893e-05, 18349.15214173], [1516791120000, 4.894e-05, 4.894e-05, 4.893e-05, 4.894e-05, 207091.85161297], [1516791180000, 4.894e-05, 4.895e-05, 4.89e-05, 4.89e-05, 87206.96538796], [1516791240000, 4.89e-05, 4.89e-05, 4.883e-05, 4.886e-05, 13197.04016707], [1516791300000, 4.888e-05, 4.89e-05, 4.881e-05, 4.888e-05, 24053.62914294], [1516791360000, 4.888e-05, 4.888e-05, 4.876e-05, 4.876e-05, 33343.68345736], [1516791420000, 4.876e-05, 4.893e-05, 4.86e-05, 4.892e-05, 110013.31658825], [1516791480000, 4.892e-05, 4.892e-05, 4.86e-05, 4.884e-05, 23585.26540378], [1516791540000, 4.884e-05, 4.895e-05, 4.86e-05, 4.88e-05, 53659.89420857], [1516791600000, 4.88e-05, 4.886e-05, 4.88e-05, 4.88e-05, 22480.19147742], [1516791660000, 4.881e-05, 4.89e-05, 4.88e-05, 4.88e-05, 15666.10106246], [1516791720000, 4.88e-05, 4.889e-05, 4.87e-05, 4.885e-05, 7344.89656351], [1516791780000, 4.886e-05, 4.889e-05, 4.88e-05, 4.886e-05, 14080.19464394], [1516791840000, 4.88e-05, 4.907e-05, 4.88e-05, 4.907e-05, 32801.17552909], [1516791900000, 4.907e-05, 4.907e-05, 4.88e-05, 4.893e-05, 12257.87228481], [1516791960000, 4.903e-05, 4.906e-05, 4.893e-05, 4.893e-05, 25106.33402537], [1516792020000, 4.894e-05, 4.9e-05, 4.881e-05, 4.881e-05, 35374.98441372], [1516792080000, 4.892e-05, 4.908e-05, 4.881e-05, 4.892e-05, 198062.92084516], [1516792140000, 4.9e-05, 4.9e-05, 4.892e-05, 4.893e-05, 88500.81108204], [1516792200000, 4.896e-05, 4.899e-05, 4.892e-05, 4.892e-05, 14090.67580884], [1516792260000, 4.896e-05, 4.905e-05, 4.895e-05, 4.905e-05, 17223.19696012], [1516792320000, 4.904e-05, 4.904e-05, 4.892e-05, 4.898e-05, 39135.41094242], [1516792380000, 4.898e-05, 4.903e-05, 4.892e-05, 4.903e-05, 103274.56012273], [1516792440000, 4.9e-05, 4.902e-05, 4.881e-05, 4.89e-05, 169826.17295152], [1516792500000, 4.89e-05, 4.9e-05, 4.881e-05, 4.881e-05, 47362.75926089], [1516792560000, 4.893e-05, 4.899e-05, 4.881e-05, 4.897e-05, 17485.7306092], [1516792620000, 4.897e-05, 4.898e-05, 4.885e-05, 4.895e-05, 56723.25637037], [1516792680000, 4.895e-05, 4.902e-05, 4.883e-05, 4.885e-05, 116757.8977751], [1516792740000, 4.889e-05, 4.903e-05, 4.86e-05, 4.903e-05, 190025.19287701], [1516792800000, 4.902e-05, 4.903e-05, 4.863e-05, 4.895e-05, 127371.36973393], [1516792860000, 4.896e-05, 4.9e-05, 4.865e-05, 4.865e-05, 171844.01095], [1516792920000, 4.895e-05, 4.901e-05, 4.866e-05, 4.895e-05, 47624.93908023], [1516792980000, 4.89e-05, 4.898e-05, 4.885e-05, 4.897e-05, 32622.63634311], [1516793040000, 4.892e-05, 4.898e-05, 4.872e-05, 4.889e-05, 22103.25597545], [1516793100000, 4.888e-05, 4.889e-05, 4.867e-05, 4.872e-05, 24240.5291451], [1516793160000, 4.887e-05, 4.9e-05, 4.887e-05, 4.898e-05, 63567.01825359], [1516793220000, 4.899e-05, 4.9e-05, 4.897e-05, 4.898e-05, 56821.64531445], [1516793280000, 4.898e-05, 4.898e-05, 4.874e-05, 4.894e-05, 3404.72446095], [1516793340000, 4.894e-05, 4.898e-05, 4.877e-05, 4.898e-05, 11598.84966683], [1516793400000, 4.898e-05, 4.898e-05, 4.888e-05, 4.895e-05, 9339.13816324], [1516793460000, 4.895e-05, 4.9e-05, 4.891e-05, 4.9e-05, 152783.88723104], [1516793520000, 4.9e-05, 4.914e-05, 4.898e-05, 4.905e-05, 85696.79879639], [1516793580000, 4.912e-05, 4.92e-05, 4.901e-05, 4.92e-05, 99395.55505775], [1516793640000, 4.921e-05, 4.946e-05, 4.911e-05, 4.932e-05, 262072.53864083], [1516793700000, 4.922e-05, 4.95e-05, 4.919e-05, 4.935e-05, 121281.7003914], [1516793760000, 4.935e-05, 4.951e-05, 4.923e-05, 4.939e-05, 213175.94918783], [1516793820000, 4.94e-05, 4.949e-05, 4.936e-05, 4.939e-05, 156639.50075927], [1516793880000, 4.939e-05, 4.951e-05, 4.932e-05, 4.945e-05, 125184.06844334], [1516793940000, 4.941e-05, 4.95e-05, 4.938e-05, 4.948e-05, 108353.35025767], [1516794000000, 4.948e-05, 4.956e-05, 4.938e-05, 4.954e-05, 176221.35077436], [1516794060000, 4.954e-05, 4.968e-05, 4.933e-05, 4.967e-05, 293697.01888164], [1516794120000, 4.952e-05, 4.969e-05, 4.92e-05, 4.939e-05, 312607.40919019], [1516794180000, 4.952e-05, 4.97e-05, 4.939e-05, 4.962e-05, 498952.70930877], [1516794240000, 4.968e-05, 4.984e-05, 4.964e-05, 4.983e-05, 209543.49593954], [1516794300000, 4.983e-05, 4.989e-05, 4.97e-05, 4.987e-05, 81755.08444206], [1516794360000, 4.987e-05, 4.992e-05, 4.982e-05, 4.99e-05, 171442.22609305], [1516794420000, 4.99e-05, 4.993e-05, 4.971e-05, 4.971e-05, 166602.55067705], [1516794480000, 4.979e-05, 4.992e-05, 4.972e-05, 4.99e-05, 64893.34299224], [1516794540000, 4.99e-05, 4.992e-05, 4.987e-05, 4.988e-05, 30130.4454518], [1516794600000, 4.99e-05, 4.991e-05, 4.982e-05, 4.988e-05, 103118.91538277], [1516794660000, 4.988e-05, 4.988e-05, 4.982e-05, 4.982e-05, 45956.13910467], [1516794720000, 4.982e-05, 4.993e-05, 4.966e-05, 4.993e-05, 97752.04428015], [1516794780000, 4.993e-05, 4.998e-05, 4.992e-05, 4.997e-05, 42939.40149979], [1516794840000, 4.997e-05, 4.997e-05, 4.995e-05, 4.996e-05, 36900.7467306], [1516794900000, 4.994e-05, 4.998e-05, 4.994e-05, 4.994e-05, 109124.01317227], [1516794960000, 4.993e-05, 4.999e-05, 4.976e-05, 4.999e-05, 43724.98144853], [1516795020000, 4.999e-05, 5.04e-05, 4.996e-05, 5.034e-05, 1313882.37686306], [1516795080000, 5.04e-05, 5.093e-05, 5.031e-05, 5.076e-05, 1352979.84619438], [1516795140000, 5.066e-05, 5.117e-05, 5.05e-05, 5.117e-05, 628770.2027917], [1516795200000, 5.116e-05, 5.125e-05, 5.1e-05, 5.124e-05, 277922.51564256], [1516795260000, 5.124e-05, 5.15e-05, 5.119e-05, 5.15e-05, 424465.6129065], [1516795320000, 5.151e-05, 5.17e-05, 5.149e-05, 5.17e-05, 276585.84284332], [1516795380000, 5.17e-05, 5.174e-05, 5.159e-05, 5.174e-05, 221607.62630542], [1516795440000, 5.174e-05, 5.2e-05, 5.172e-05, 5.2e-05, 468967.64874387], [1516795500000, 5.2e-05, 5.201e-05, 5.172e-05, 5.174e-05, 532931.77076475], [1516795560000, 5.173e-05, 5.198e-05, 5.163e-05, 5.18e-05, 353786.95264731], [1516795620000, 5.18e-05, 5.197e-05, 5.16e-05, 5.197e-05, 206488.80195441], [1516795680000, 5.193e-05, 5.239e-05, 5.181e-05, 5.231e-05, 773680.07441037], [1516795740000, 5.231e-05, 5.26e-05, 5.231e-05, 5.26e-05, 404431.60831358], [1516795800000, 5.26e-05, 5.299e-05, 5.23e-05, 5.299e-05, 728632.19699914], [1516795860000, 5.299e-05, 5.347e-05, 5.189e-05, 5.331e-05, 1030305.99885166], [1516795920000, 5.338e-05, 5.355e-05, 5.313e-05, 5.313e-05, 618397.15974775], [1516795980000, 5.314e-05, 5.333e-05, 5.291e-05, 5.3e-05, 911177.60465901], [1516796040000, 5.3e-05, 5.3e-05, 5.193e-05, 5.23e-05, 754615.75380712], [1516796100000, 5.232e-05, 5.234e-05, 5.181e-05, 5.2e-05, 343853.98356239], [1516796160000, 5.201e-05, 5.215e-05, 5.173e-05, 5.201e-05, 241493.9246529], [1516796220000, 5.201e-05, 5.213e-05, 5.18e-05, 5.21e-05, 144731.82782197], [1516796280000, 5.21e-05, 5.245e-05, 5.201e-05, 5.233e-05, 139715.85826809], [1516796340000, 5.244e-05, 5.248e-05, 5.223e-05, 5.242e-05, 100807.68276211], [1516796400000, 5.24e-05, 5.243e-05, 5.223e-05, 5.223e-05, 97209.42339052], [1516796460000, 5.23e-05, 5.238e-05, 5.212e-05, 5.223e-05, 114881.97239736], [1516796520000, 5.228e-05, 5.229e-05, 5.187e-05, 5.2e-05, 80778.48676055], [1516796580000, 5.187e-05, 5.2e-05, 5.15e-05, 5.155e-05, 179912.02424304], [1516796640000, 5.151e-05, 5.164e-05, 5.126e-05, 5.126e-05, 104158.1717533], [1516796700000, 5.126e-05, 5.145e-05, 5.11e-05, 5.145e-05, 207857.62866376], [1516796760000, 5.127e-05, 5.15e-05, 5.125e-05, 5.129e-05, 125898.85125788], [1516796820000, 5.129e-05, 5.144e-05, 5.129e-05, 5.134e-05, 107973.80737087], [1516796880000, 5.143e-05, 5.151e-05, 5.133e-05, 5.144e-05, 187641.63521541], [1516796940000, 5.143e-05, 5.177e-05, 5.14e-05, 5.169e-05, 99070.45898816], [1516797000000, 5.154e-05, 5.169e-05, 5.144e-05, 5.156e-05, 222729.43585248], [1516797060000, 5.161e-05, 5.166e-05, 5.153e-05, 5.165e-05, 56045.29053001], [1516797120000, 5.164e-05, 5.187e-05, 5.158e-05, 5.185e-05, 63059.69448049], [1516797180000, 5.18e-05, 5.194e-05, 5.18e-05, 5.194e-05, 93729.16419983], [1516797240000, 5.194e-05, 5.2e-05, 5.179e-05, 5.18e-05, 470809.32312161], [1516797300000, 5.189e-05, 5.195e-05, 5.166e-05, 5.184e-05, 189458.56602925], [1516797360000, 5.181e-05, 5.199e-05, 5.181e-05, 5.197e-05, 124347.4656185], [1516797420000, 5.197e-05, 5.199e-05, 5.18e-05, 5.188e-05, 82130.28529907], [1516797480000, 5.192e-05, 5.22e-05, 5.188e-05, 5.199e-05, 162648.40540624], [1516797540000, 5.199e-05, 5.199e-05, 5.19e-05, 5.195e-05, 144408.93083257], [1516797600000, 5.195e-05, 5.217e-05, 5.181e-05, 5.217e-05, 78188.30803185], [1516797660000, 5.2e-05, 5.2e-05, 5.181e-05, 5.193e-05, 43776.99333414], [1516797720000, 5.193e-05, 5.193e-05, 5.166e-05, 5.17e-05, 174355.80234746], [1516797780000, 5.17e-05, 5.177e-05, 5.15e-05, 5.165e-05, 81117.58089216], [1516797840000, 5.165e-05, 5.165e-05, 5.15e-05, 5.151e-05, 82076.60916783], [1516797900000, 5.151e-05, 5.16e-05, 5.148e-05, 5.15e-05, 59542.38305258], [1516797960000, 5.148e-05, 5.152e-05, 5.123e-05, 5.125e-05, 84263.73364853], [1516798020000, 5.145e-05, 5.15e-05, 5.125e-05, 5.15e-05, 98591.29132273], [1516798080000, 5.148e-05, 5.15e-05, 5.129e-05, 5.131e-05, 33152.97565653], [1516798140000, 5.132e-05, 5.14e-05, 5.121e-05, 5.14e-05, 54745.90131648], [1516798200000, 5.14e-05, 5.145e-05, 5.111e-05, 5.111e-05, 39437.15001861], [1516798260000, 5.122e-05, 5.139e-05, 5.109e-05, 5.137e-05, 71924.89450744], [1516798320000, 5.113e-05, 5.14e-05, 5.113e-05, 5.139e-05, 36332.54730634], [1516798380000, 5.139e-05, 5.145e-05, 5.131e-05, 5.145e-05, 132437.75767564], [1516798440000, 5.144e-05, 5.148e-05, 5.139e-05, 5.142e-05, 182271.31992184], [1516798500000, 5.141e-05, 5.15e-05, 5.139e-05, 5.146e-05, 147212.16012037], [1516798560000, 5.145e-05, 5.146e-05, 5.13e-05, 5.13e-05, 180267.834772], [1516798620000, 5.131e-05, 5.144e-05, 5.123e-05, 5.125e-05, 189591.599265], [1516798680000, 5.125e-05, 5.14e-05, 5.124e-05, 5.133e-05, 108320.95074535], [1516798740000, 5.132e-05, 5.132e-05, 5.118e-05, 5.122e-05, 28498.49289627], [1516798800000, 5.122e-05, 5.122e-05, 5.1e-05, 5.1e-05, 91407.14579005], [1516798860000, 5.1e-05, 5.111e-05, 5.072e-05, 5.085e-05, 156558.9721799], [1516798920000, 5.085e-05, 5.09e-05, 5.059e-05, 5.06e-05, 216424.35330776], [1516798980000, 5.067e-05, 5.07e-05, 5.05e-05, 5.067e-05, 83620.4192027], [1516799040000, 5.067e-05, 5.069e-05, 5.06e-05, 5.06e-05, 75672.69046207], [1516799100000, 5.051e-05, 5.062e-05, 5.046e-05, 5.047e-05, 158785.62561465], [1516799160000, 5.047e-05, 5.067e-05, 5.047e-05, 5.056e-05, 59753.6745135], [1516799220000, 5.06e-05, 5.091e-05, 5.06e-05, 5.062e-05, 147832.1148657], [1516799280000, 5.062e-05, 5.062e-05, 5.033e-05, 5.035e-05, 309029.1266343], [1516799340000, 5.036e-05, 5.059e-05, 5.033e-05, 5.055e-05, 74365.92395302], [1516799400000, 5.051e-05, 5.055e-05, 5.037e-05, 5.041e-05, 125715.232524], [1516799460000, 5.045e-05, 5.045e-05, 5.04e-05, 5.045e-05, 24172.92405019], [1516799520000, 5.045e-05, 5.045e-05, 5.04e-05, 5.041e-05, 60851.23814769], [1516799580000, 5.041e-05, 5.043e-05, 5.039e-05, 5.041e-05, 41187.09195453], [1516799640000, 5.04e-05, 5.043e-05, 5.04e-05, 5.04e-05, 84106.24657935], [1516799700000, 5.043e-05, 5.043e-05, 5.04e-05, 5.042e-05, 44803.29812364], [1516799760000, 5.042e-05, 5.068e-05, 5.042e-05, 5.067e-05, 51128.64445916], [1516799820000, 5.067e-05, 5.081e-05, 5.042e-05, 5.072e-05, 85299.052168], [1516799880000, 5.07e-05, 5.072e-05, 5.046e-05, 5.069e-05, 87005.42695963], [1516799940000, 5.069e-05, 5.1e-05, 5.055e-05, 5.1e-05, 116655.83686229], [1516800000000, 5.071e-05, 5.099e-05, 5.069e-05, 5.07e-05, 184592.03368652], [1516800060000, 5.07e-05, 5.099e-05, 5.069e-05, 5.09e-05, 265124.80795883], [1516800120000, 5.083e-05, 5.09e-05, 5.057e-05, 5.079e-05, 123543.38143131], [1516800180000, 5.076e-05, 5.099e-05, 5.076e-05, 5.088e-05, 178756.40166082], [1516800240000, 5.077e-05, 5.094e-05, 5.06e-05, 5.072e-05, 69315.05219649], [1516800300000, 5.072e-05, 5.09e-05, 5.05e-05, 5.09e-05, 135990.29132213], [1516800360000, 5.084e-05, 5.084e-05, 5.055e-05, 5.061e-05, 34259.41303645], [1516800420000, 5.078e-05, 5.078e-05, 5.062e-05, 5.063e-05, 26888.01554263], [1516800480000, 5.075e-05, 5.075e-05, 5.063e-05, 5.064e-05, 12806.89575581], [1516800540000, 5.063e-05, 5.069e-05, 5.063e-05, 5.064e-05, 10601.66405058], [1516800600000, 5.069e-05, 5.08e-05, 5.063e-05, 5.08e-05, 66814.35172474], [1516800660000, 5.08e-05, 5.08e-05, 5.063e-05, 5.077e-05, 188581.24424103], [1516800720000, 5.07e-05, 5.077e-05, 5.049e-05, 5.049e-05, 179723.91801159], [1516800780000, 5.073e-05, 5.079e-05, 5.049e-05, 5.07e-05, 68373.8074398], [1516800840000, 5.07e-05, 5.072e-05, 5.046e-05, 5.05e-05, 170209.95584751], [1516800900000, 5.046e-05, 5.068e-05, 5.039e-05, 5.04e-05, 245071.37624461], [1516800960000, 5.064e-05, 5.065e-05, 5.036e-05, 5.036e-05, 183690.41831958], [1516801020000, 5.042e-05, 5.06e-05, 5.036e-05, 5.036e-05, 184759.8571461], [1516801080000, 5.053e-05, 5.08e-05, 5.036e-05, 5.065e-05, 88995.11125533], [1516801140000, 5.068e-05, 5.082e-05, 5.065e-05, 5.081e-05, 52073.16926087], [1516801200000, 5.08e-05, 5.091e-05, 5.066e-05, 5.089e-05, 104608.5151903], [1516801260000, 5.089e-05, 5.091e-05, 5.065e-05, 5.07e-05, 184430.65498747], [1516801320000, 5.069e-05, 5.091e-05, 5.064e-05, 5.073e-05, 171771.64441042], [1516801380000, 5.08e-05, 5.089e-05, 5.062e-05, 5.078e-05, 167416.47994678], [1516801440000, 5.078e-05, 5.088e-05, 5.063e-05, 5.071e-05, 166203.24893021], [1516801500000, 5.083e-05, 5.085e-05, 5.045e-05, 5.045e-05, 297594.76637579], [1516801560000, 5.06e-05, 5.085e-05, 5.038e-05, 5.069e-05, 225513.33403825], [1516801620000, 5.05e-05, 5.07e-05, 5.05e-05, 5.07e-05, 96582.62788347], [1516801680000, 5.067e-05, 5.07e-05, 5.054e-05, 5.07e-05, 63473.38069761], [1516801740000, 5.07e-05, 5.07e-05, 5.017e-05, 5.02e-05, 153071.1824211], [1516801800000, 5.02e-05, 5.04e-05, 4.993e-05, 5.022e-05, 551101.91805919], [1516801860000, 5.02e-05, 5.037e-05, 5e-05, 5.032e-05, 77734.92759713], [1516801920000, 5.032e-05, 5.065e-05, 5.012e-05, 5.065e-05, 193369.89180312], [1516801980000, 5.032e-05, 5.068e-05, 5.028e-05, 5.051e-05, 33315.06512807], [1516802040000, 5.05e-05, 5.088e-05, 5.04e-05, 5.051e-05, 16920.53405566], [1516802100000, 5.052e-05, 5.064e-05, 5.052e-05, 5.063e-05, 17856.59729747], [1516802160000, 5.063e-05, 5.064e-05, 5.056e-05, 5.064e-05, 27720.81210515], [1516802220000, 5.064e-05, 5.065e-05, 5.063e-05, 5.064e-05, 32997.73873274], [1516802280000, 5.066e-05, 5.12e-05, 5.066e-05, 5.12e-05, 199550.64754126], [1516802340000, 5.113e-05, 5.15e-05, 5.112e-05, 5.15e-05, 77492.79784299], [1516802400000, 5.143e-05, 5.179e-05, 5.13e-05, 5.15e-05, 275430.60873491], [1516802460000, 5.138e-05, 5.179e-05, 5.137e-05, 5.139e-05, 372199.80003558], [1516802520000, 5.139e-05, 5.172e-05, 5.12e-05, 5.137e-05, 241701.30028364], [1516802580000, 5.137e-05, 5.147e-05, 5.076e-05, 5.076e-05, 201945.35408873], [1516802640000, 5.073e-05, 5.09e-05, 5.059e-05, 5.064e-05, 166303.93359039], [1516802700000, 5.07e-05, 5.09e-05, 5.07e-05, 5.071e-05, 102478.80330079], [1516802760000, 5.071e-05, 5.08e-05, 5.064e-05, 5.064e-05, 47566.88075361], [1516802820000, 5.07e-05, 5.071e-05, 5.03e-05, 5.062e-05, 205031.58223256], [1516802880000, 5.061e-05, 5.062e-05, 5.006e-05, 5.021e-05, 221058.83860899], [1516802940000, 5.021e-05, 5.021e-05, 5.005e-05, 5.008e-05, 119699.05454135], [1516803000000, 5.008e-05, 5.009e-05, 4.988e-05, 4.988e-05, 135587.02256858], [1516803060000, 4.997e-05, 5.009e-05, 4.98e-05, 4.98e-05, 226657.51023776], [1516803120000, 4.98e-05, 4.983e-05, 4.955e-05, 4.975e-05, 184208.66706045], [1516803180000, 4.974e-05, 4.975e-05, 4.952e-05, 4.952e-05, 108813.0950025], [1516803240000, 4.952e-05, 4.952e-05, 4.94e-05, 4.94e-05, 116863.56785884], [1516803300000, 4.939e-05, 4.94e-05, 4.911e-05, 4.917e-05, 182875.11072362], [1516803360000, 4.919e-05, 4.926e-05, 4.891e-05, 4.891e-05, 268861.34145907], [1516803420000, 4.893e-05, 4.901e-05, 4.883e-05, 4.883e-05, 559636.00891556], [1516803480000, 4.885e-05, 4.885e-05, 4.86e-05, 4.881e-05, 219974.91570001], [1516803540000, 4.881e-05, 4.903e-05, 4.856e-05, 4.903e-05, 150241.16769781], [1516803600000, 4.901e-05, 4.938e-05, 4.885e-05, 4.937e-05, 120801.03844036], [1516803660000, 4.937e-05, 4.973e-05, 4.922e-05, 4.948e-05, 157991.81156931], [1516803720000, 4.946e-05, 4.948e-05, 4.917e-05, 4.94e-05, 173207.1426456], [1516803780000, 4.936e-05, 4.94e-05, 4.901e-05, 4.907e-05, 154044.91147134], [1516803840000, 4.905e-05, 4.907e-05, 4.889e-05, 4.905e-05, 177102.92664558], [1516803900000, 4.905e-05, 4.91e-05, 4.905e-05, 4.906e-05, 348134.09580258], [1516803960000, 4.906e-05, 4.907e-05, 4.88e-05, 4.889e-05, 100542.83956842], [1516804020000, 4.889e-05, 4.89e-05, 4.885e-05, 4.886e-05, 93340.18973102], [1516804080000, 4.886e-05, 4.886e-05, 4.865e-05, 4.87e-05, 33765.56373022], [1516804140000, 4.87e-05, 4.87e-05, 4.849e-05, 4.868e-05, 205789.98081062], [1516804200000, 4.869e-05, 4.869e-05, 4.845e-05, 4.846e-05, 241381.94286705], [1516804260000, 4.846e-05, 4.869e-05, 4.8e-05, 4.865e-05, 314412.14229098], [1516804320000, 4.864e-05, 4.865e-05, 4.821e-05, 4.846e-05, 183722.85825811], [1516804380000, 4.846e-05, 4.865e-05, 4.83e-05, 4.862e-05, 82777.97578701], [1516804440000, 4.862e-05, 4.867e-05, 4.849e-05, 4.855e-05, 66682.29365636], [1516804500000, 4.854e-05, 4.859e-05, 4.849e-05, 4.85e-05, 56548.50065696], [1516804560000, 4.847e-05, 4.857e-05, 4.845e-05, 4.851e-05, 50615.81012095], [1516804620000, 4.851e-05, 4.86e-05, 4.805e-05, 4.809e-05, 89344.69585027], [1516804680000, 4.82e-05, 4.84e-05, 4.805e-05, 4.817e-05, 70819.61269707], [1516804740000, 4.824e-05, 4.836e-05, 4.8e-05, 4.801e-05, 114386.74956216], [1516804800000, 4.801e-05, 4.814e-05, 4.801e-05, 4.806e-05, 84783.94384067], [1516804860000, 4.807e-05, 4.81e-05, 4.773e-05, 4.778e-05, 238133.89405499], [1516804920000, 4.773e-05, 4.78e-05, 4.766e-05, 4.768e-05, 153383.5540673], [1516804980000, 4.768e-05, 4.801e-05, 4.767e-05, 4.8e-05, 169457.08329609], [1516805040000, 4.8e-05, 4.81e-05, 4.78e-05, 4.81e-05, 52910.09553322], [1516805100000, 4.807e-05, 4.807e-05, 4.78e-05, 4.8e-05, 47730.59468809], [1516805160000, 4.804e-05, 4.807e-05, 4.774e-05, 4.78e-05, 312501.55964505], [1516805220000, 4.776e-05, 4.802e-05, 4.772e-05, 4.779e-05, 193384.4768139], [1516805280000, 4.777e-05, 4.796e-05, 4.776e-05, 4.787e-05, 69794.81235232], [1516805340000, 4.787e-05, 4.789e-05, 4.741e-05, 4.772e-05, 483734.05770449], [1516805400000, 4.772e-05, 4.785e-05, 4.76e-05, 4.783e-05, 36380.94870434], [1516805460000, 4.783e-05, 4.799e-05, 4.783e-05, 4.784e-05, 40850.46893288], [1516805520000, 4.795e-05, 4.795e-05, 4.776e-05, 4.78e-05, 165528.95641815], [1516805580000, 4.78e-05, 4.799e-05, 4.777e-05, 4.799e-05, 51529.72573358], [1516805640000, 4.799e-05, 4.833e-05, 4.791e-05, 4.8e-05, 75386.24542948], [1516805700000, 4.8e-05, 4.836e-05, 4.799e-05, 4.801e-05, 109814.10803331], [1516805760000, 4.802e-05, 4.831e-05, 4.802e-05, 4.822e-05, 24000.26481866], [1516805820000, 4.829e-05, 4.855e-05, 4.801e-05, 4.848e-05, 239737.72902261], [1516805880000, 4.827e-05, 4.848e-05, 4.826e-05, 4.847e-05, 382504.03973114], [1516805940000, 4.846e-05, 4.848e-05, 4.824e-05, 4.84e-05, 82632.58363606], [1516806000000, 4.844e-05, 4.845e-05, 4.828e-05, 4.833e-05, 130568.89807065], [1516806060000, 4.835e-05, 4.85e-05, 4.83e-05, 4.85e-05, 186891.47126937], [1516806120000, 4.85e-05, 4.85e-05, 4.825e-05, 4.837e-05, 140622.01309208], [1516806180000, 4.837e-05, 4.837e-05, 4.824e-05, 4.83e-05, 111811.85053074], [1516806240000, 4.832e-05, 4.835e-05, 4.816e-05, 4.818e-05, 75090.12696756], [1516806300000, 4.816e-05, 4.816e-05, 4.796e-05, 4.799e-05, 137679.97574643], [1516806360000, 4.796e-05, 4.796e-05, 4.788e-05, 4.796e-05, 82607.17796924], [1516806420000, 4.795e-05, 4.799e-05, 4.789e-05, 4.792e-05, 91388.95827516], [1516806480000, 4.792e-05, 4.829e-05, 4.791e-05, 4.791e-05, 73213.75357533], [1516806540000, 4.8e-05, 4.829e-05, 4.789e-05, 4.789e-05, 118181.78853007], [1516806600000, 4.79e-05, 4.792e-05, 4.777e-05, 4.787e-05, 138625.43318545], [1516806660000, 4.787e-05, 4.79e-05, 4.778e-05, 4.789e-05, 57711.65309267], [1516806720000, 4.788e-05, 4.79e-05, 4.788e-05, 4.789e-05, 30526.19838538], [1516806780000, 4.789e-05, 4.789e-05, 4.774e-05, 4.776e-05, 107815.34594013], [1516806840000, 4.776e-05, 4.787e-05, 4.75e-05, 4.755e-05, 76451.87330264], [1516806900000, 4.75e-05, 4.759e-05, 4.74e-05, 4.749e-05, 181006.4283411], [1516806960000, 4.741e-05, 4.769e-05, 4.74e-05, 4.769e-05, 77952.63840082], [1516807020000, 4.769e-05, 4.787e-05, 4.741e-05, 4.741e-05, 131603.08025316], [1516807080000, 4.783e-05, 4.784e-05, 4.741e-05, 4.75e-05, 12370.53031625], [1516807140000, 4.775e-05, 4.775e-05, 4.753e-05, 4.77e-05, 10877.13088446], [1516807200000, 4.763e-05, 4.788e-05, 4.763e-05, 4.788e-05, 34085.7314773], [1516807260000, 4.788e-05, 4.816e-05, 4.77e-05, 4.816e-05, 55449.47994484], [1516807320000, 4.813e-05, 4.813e-05, 4.786e-05, 4.788e-05, 54355.23061905], [1516807380000, 4.788e-05, 4.817e-05, 4.788e-05, 4.811e-05, 116344.55097286], [1516807440000, 4.807e-05, 4.84e-05, 4.806e-05, 4.811e-05, 140615.63460063], [1516807500000, 4.815e-05, 4.84e-05, 4.812e-05, 4.818e-05, 121638.65710505], [1516807560000, 4.818e-05, 4.826e-05, 4.815e-05, 4.82e-05, 60385.45993601], [1516807620000, 4.819e-05, 4.833e-05, 4.819e-05, 4.832e-05, 86589.48222958], [1516807680000, 4.83e-05, 4.847e-05, 4.83e-05, 4.847e-05, 68251.17785856], [1516807740000, 4.847e-05, 4.847e-05, 4.822e-05, 4.834e-05, 70515.40896938], [1516807800000, 4.837e-05, 4.838e-05, 4.827e-05, 4.832e-05, 166664.32911313], [1516807860000, 4.832e-05, 4.836e-05, 4.819e-05, 4.819e-05, 250713.78738138], [1516807920000, 4.818e-05, 4.832e-05, 4.818e-05, 4.818e-05, 28436.91409845], [1516807980000, 4.826e-05, 4.826e-05, 4.806e-05, 4.806e-05, 62069.02175856], [1516808040000, 4.806e-05, 4.806e-05, 4.791e-05, 4.8e-05, 64662.21542199], [1516808100000, 4.8e-05, 4.8e-05, 4.79e-05, 4.792e-05, 20003.66869665], [1516808160000, 4.792e-05, 4.8e-05, 4.79e-05, 4.8e-05, 41180.5192385], [1516808220000, 4.8e-05, 4.8e-05, 4.783e-05, 4.788e-05, 122380.6478313], [1516808280000, 4.788e-05, 4.788e-05, 4.777e-05, 4.781e-05, 50836.86882827], [1516808340000, 4.781e-05, 4.788e-05, 4.771e-05, 4.773e-05, 60288.32312713], [1516808400000, 4.773e-05, 4.8e-05, 4.765e-05, 4.78e-05, 46438.26247484], [1516808460000, 4.777e-05, 4.784e-05, 4.768e-05, 4.782e-05, 88219.96173059], [1516808520000, 4.781e-05, 4.782e-05, 4.781e-05, 4.781e-05, 19227.07899895], [1516808580000, 4.781e-05, 4.782e-05, 4.771e-05, 4.781e-05, 41299.86109503], [1516808640000, 4.771e-05, 4.783e-05, 4.771e-05, 4.783e-05, 70360.20810245], [1516808700000, 4.783e-05, 4.784e-05, 4.781e-05, 4.784e-05, 33549.47113349], [1516808760000, 4.782e-05, 4.824e-05, 4.782e-05, 4.823e-05, 29296.84689331], [1516808820000, 4.824e-05, 4.825e-05, 4.786e-05, 4.79e-05, 54316.13418162], [1516808880000, 4.806e-05, 4.821e-05, 4.787e-05, 4.788e-05, 87113.45600152], [1516808940000, 4.788e-05, 4.819e-05, 4.769e-05, 4.807e-05, 99259.30172911], [1516809000000, 4.807e-05, 4.807e-05, 4.801e-05, 4.805e-05, 15437.38669847], [1516809060000, 4.803e-05, 4.81e-05, 4.803e-05, 4.81e-05, 15527.7224456], [1516809120000, 4.81e-05, 4.82e-05, 4.8e-05, 4.81e-05, 91150.81254401], [1516809180000, 4.779e-05, 4.797e-05, 4.779e-05, 4.79e-05, 4833.79445433], [1516809240000, 4.79e-05, 4.79e-05, 4.78e-05, 4.79e-05, 6295.40847412], [1516809300000, 4.79e-05, 4.79e-05, 4.783e-05, 4.79e-05, 7679.47666987], [1516809360000, 4.786e-05, 4.8e-05, 4.786e-05, 4.799e-05, 19299.51661278], [1516809420000, 4.793e-05, 4.799e-05, 4.793e-05, 4.799e-05, 15006.11100272], [1516809480000, 4.799e-05, 4.799e-05, 4.788e-05, 4.788e-05, 54036.03268297], [1516809540000, 4.789e-05, 4.79e-05, 4.775e-05, 4.79e-05, 199362.4126811], [1516809600000, 4.776e-05, 4.788e-05, 4.776e-05, 4.788e-05, 14931.67876415], [1516809660000, 4.788e-05, 4.79e-05, 4.786e-05, 4.787e-05, 162505.37874232], [1516809720000, 4.787e-05, 4.787e-05, 4.778e-05, 4.787e-05, 60741.90034458], [1516809780000, 4.787e-05, 4.8e-05, 4.787e-05, 4.799e-05, 9244.51659467], [1516809840000, 4.799e-05, 4.815e-05, 4.787e-05, 4.815e-05, 37282.1610746], [1516809900000, 4.815e-05, 4.815e-05, 4.804e-05, 4.81e-05, 17111.64323543], [1516809960000, 4.81e-05, 4.811e-05, 4.799e-05, 4.81e-05, 41354.55619586], [1516810020000, 4.811e-05, 4.816e-05, 4.81e-05, 4.816e-05, 29386.99213344], [1516810080000, 4.816e-05, 4.816e-05, 4.81e-05, 4.812e-05, 44167.26293633], [1516810140000, 4.812e-05, 4.816e-05, 4.81e-05, 4.816e-05, 62531.56669867], [1516810200000, 4.812e-05, 4.812e-05, 4.81e-05, 4.81e-05, 22461.92312991], [1516810260000, 4.812e-05, 4.816e-05, 4.81e-05, 4.814e-05, 27600.91268258], [1516810320000, 4.814e-05, 4.816e-05, 4.814e-05, 4.814e-05, 35780.28898702], [1516810380000, 4.814e-05, 4.814e-05, 4.804e-05, 4.814e-05, 68215.68104117], [1516810440000, 4.813e-05, 4.83e-05, 4.804e-05, 4.804e-05, 60153.9080937], [1516810500000, 4.804e-05, 4.827e-05, 4.804e-05, 4.825e-05, 137376.1317623], [1516810560000, 4.824e-05, 4.825e-05, 4.808e-05, 4.809e-05, 19603.90073727], [1516810620000, 4.809e-05, 4.823e-05, 4.808e-05, 4.82e-05, 21797.70123891], [1516810680000, 4.813e-05, 4.813e-05, 4.803e-05, 4.803e-05, 28706.78500988], [1516810740000, 4.8e-05, 4.829e-05, 4.8e-05, 4.828e-05, 38204.90937166], [1516810800000, 4.828e-05, 4.828e-05, 4.81e-05, 4.824e-05, 69417.09457996], [1516810860000, 4.821e-05, 4.827e-05, 4.818e-05, 4.822e-05, 42056.3763287], [1516810920000, 4.822e-05, 4.822e-05, 4.82e-05, 4.822e-05, 81641.09654292], [1516810980000, 4.822e-05, 4.828e-05, 4.82e-05, 4.823e-05, 97678.07639051], [1516811040000, 4.823e-05, 4.829e-05, 4.8e-05, 4.828e-05, 37268.19788132], [1516811100000, 4.828e-05, 4.829e-05, 4.827e-05, 4.829e-05, 16557.55841448], [1516811160000, 4.828e-05, 4.83e-05, 4.825e-05, 4.83e-05, 39871.13750226], [1516811220000, 4.826e-05, 4.83e-05, 4.825e-05, 4.83e-05, 73551.14801344], [1516811280000, 4.828e-05, 4.842e-05, 4.828e-05, 4.836e-05, 63075.16344954], [1516811340000, 4.835e-05, 4.842e-05, 4.83e-05, 4.835e-05, 38627.11893043], [1516811400000, 4.839e-05, 4.855e-05, 4.839e-05, 4.855e-05, 52151.43474393], [1516811460000, 4.855e-05, 4.868e-05, 4.855e-05, 4.861e-05, 97209.57271492], [1516811520000, 4.861e-05, 4.868e-05, 4.861e-05, 4.867e-05, 120503.4221681], [1516811580000, 4.867e-05, 4.878e-05, 4.866e-05, 4.878e-05, 136051.61770011], [1516811640000, 4.88e-05, 4.885e-05, 4.876e-05, 4.884e-05, 124602.8435002], [1516811700000, 4.885e-05, 4.894e-05, 4.882e-05, 4.894e-05, 161103.33194116], [1516811760000, 4.894e-05, 4.909e-05, 4.893e-05, 4.909e-05, 147906.9645642], [1516811820000, 4.909e-05, 4.931e-05, 4.909e-05, 4.924e-05, 90037.58339932], [1516811880000, 4.924e-05, 4.941e-05, 4.905e-05, 4.92e-05, 121499.1272597], [1516811940000, 4.92e-05, 4.941e-05, 4.904e-05, 4.935e-05, 150178.04463403], [1516812000000, 4.935e-05, 4.953e-05, 4.931e-05, 4.953e-05, 218720.16702839], [1516812060000, 4.952e-05, 4.97e-05, 4.952e-05, 4.954e-05, 124545.91562762], [1516812120000, 4.954e-05, 4.97e-05, 4.953e-05, 4.97e-05, 153030.44335845], [1516812180000, 4.971e-05, 4.979e-05, 4.958e-05, 4.97e-05, 81592.64376978], [1516812240000, 4.978e-05, 4.989e-05, 4.97e-05, 4.981e-05, 197995.03470929], [1516812300000, 4.981e-05, 4.985e-05, 4.98e-05, 4.983e-05, 160503.64665416], [1516812360000, 4.983e-05, 4.985e-05, 4.954e-05, 4.954e-05, 373368.67972612], [1516812420000, 4.954e-05, 4.96e-05, 4.918e-05, 4.918e-05, 89208.28844527], [1516812480000, 4.94e-05, 4.948e-05, 4.919e-05, 4.947e-05, 115546.04840626], [1516812540000, 4.947e-05, 4.947e-05, 4.9e-05, 4.92e-05, 33329.16651599], [1516812600000, 4.92e-05, 4.938e-05, 4.911e-05, 4.92e-05, 34891.57601942], [1516812660000, 4.92e-05, 4.92e-05, 4.911e-05, 4.912e-05, 52659.12283769], [1516812720000, 4.919e-05, 4.92e-05, 4.912e-05, 4.92e-05, 77617.38984441], [1516812780000, 4.918e-05, 4.93e-05, 4.913e-05, 4.93e-05, 48319.48426351], [1516812840000, 4.926e-05, 4.93e-05, 4.926e-05, 4.93e-05, 26031.26731028], [1516812900000, 4.93e-05, 4.94e-05, 4.923e-05, 4.923e-05, 51257.7087341], [1516812960000, 4.923e-05, 4.954e-05, 4.923e-05, 4.95e-05, 79177.59263145], [1516813020000, 4.954e-05, 4.982e-05, 4.938e-05, 4.962e-05, 126855.74471061], [1516813080000, 4.962e-05, 4.962e-05, 4.954e-05, 4.959e-05, 50184.82360095], [1516813140000, 4.959e-05, 4.962e-05, 4.95e-05, 4.962e-05, 62947.78941363], [1516813200000, 4.962e-05, 4.976e-05, 4.962e-05, 4.976e-05, 18251.31252851], [1516813260000, 4.975e-05, 4.978e-05, 4.965e-05, 4.976e-05, 31828.60673035], [1516813320000, 4.976e-05, 4.982e-05, 4.975e-05, 4.978e-05, 27822.45387438], [1516813380000, 4.982e-05, 4.998e-05, 4.979e-05, 4.983e-05, 54700.46452714], [1516813440000, 4.996e-05, 4.997e-05, 4.982e-05, 4.987e-05, 18750.79813817], [1516813500000, 4.992e-05, 4.995e-05, 4.984e-05, 4.991e-05, 18085.57543825], [1516813560000, 4.991e-05, 4.996e-05, 4.984e-05, 4.99e-05, 23153.05361548], [1516813620000, 4.992e-05, 5e-05, 4.932e-05, 5e-05, 169782.3638173], [1516813680000, 4.981e-05, 5e-05, 4.981e-05, 5e-05, 81622.37439401], [1516813740000, 5e-05, 5e-05, 4.995e-05, 4.995e-05, 38127.01247034], [1516813800000, 4.991e-05, 5e-05, 4.932e-05, 4.98e-05, 71872.35109781], [1516813860000, 4.951e-05, 4.979e-05, 4.95e-05, 4.956e-05, 67786.29348222], [1516813920000, 4.956e-05, 4.974e-05, 4.956e-05, 4.959e-05, 57173.96868155], [1516813980000, 4.958e-05, 4.968e-05, 4.958e-05, 4.958e-05, 24935.77793091], [1516814040000, 4.958e-05, 4.959e-05, 4.935e-05, 4.95e-05, 61859.80162102], [1516814100000, 4.949e-05, 4.95e-05, 4.915e-05, 4.93e-05, 127155.22789888], [1516814160000, 4.926e-05, 4.926e-05, 4.9e-05, 4.926e-05, 26255.29216449], [1516814220000, 4.926e-05, 4.926e-05, 4.895e-05, 4.9e-05, 32136.29332224], [1516814280000, 4.9e-05, 4.926e-05, 4.891e-05, 4.926e-05, 91147.57434293], [1516814340000, 4.926e-05, 4.926e-05, 4.891e-05, 4.907e-05, 29662.00348561], [1516814400000, 4.924e-05, 4.925e-05, 4.924e-05, 4.924e-05, 21279.80090419], [1516814460000, 4.925e-05, 4.929e-05, 4.924e-05, 4.925e-05, 31536.04952538], [1516814520000, 4.929e-05, 4.93e-05, 4.925e-05, 4.93e-05, 13941.53954364], [1516814580000, 4.93e-05, 4.932e-05, 4.93e-05, 4.932e-05, 10711.3203618], [1516814640000, 4.932e-05, 4.95e-05, 4.932e-05, 4.934e-05, 21765.88768933], [1516814700000, 4.934e-05, 4.956e-05, 4.934e-05, 4.956e-05, 14931.6521727], [1516814760000, 4.956e-05, 4.957e-05, 4.956e-05, 4.957e-05, 8805.7253108], [1516814820000, 4.954e-05, 4.969e-05, 4.934e-05, 4.96e-05, 46656.48149097], [1516814880000, 4.96e-05, 4.97e-05, 4.959e-05, 4.97e-05, 11401.94022307], [1516814940000, 4.97e-05, 4.978e-05, 4.969e-05, 4.97e-05, 23763.34849208], [1516815000000, 4.97e-05, 4.978e-05, 4.957e-05, 4.97e-05, 39088.54575342], [1516815060000, 4.973e-05, 4.995e-05, 4.973e-05, 4.995e-05, 28272.71714033], [1516815120000, 4.995e-05, 5e-05, 4.995e-05, 4.999e-05, 80728.72376897], [1516815180000, 5e-05, 5e-05, 4.994e-05, 4.994e-05, 26852.99047094], [1516815240000, 4.995e-05, 4.997e-05, 4.977e-05, 4.981e-05, 48049.27134658], [1516815300000, 4.982e-05, 4.994e-05, 4.967e-05, 4.977e-05, 40076.972165], [1516815360000, 4.99e-05, 4.994e-05, 4.977e-05, 4.994e-05, 20572.54999595], [1516815420000, 4.994e-05, 5.001e-05, 4.994e-05, 4.994e-05, 73895.91205152], [1516815480000, 4.993e-05, 5.001e-05, 4.993e-05, 4.994e-05, 14801.56029705], [1516815540000, 4.994e-05, 5.006e-05, 4.994e-05, 4.998e-05, 9534.30672729], [1516815600000, 5.004e-05, 5.004e-05, 4.998e-05, 5e-05, 40191.91151139], [1516815660000, 5.001e-05, 5.001e-05, 4.99e-05, 4.994e-05, 17611.29909423], [1516815720000, 4.995e-05, 5.001e-05, 4.994e-05, 4.999e-05, 47967.70153842], [1516815780000, 5e-05, 5e-05, 4.973e-05, 4.973e-05, 19774.28397322], [1516815840000, 4.986e-05, 5.006e-05, 4.986e-05, 4.993e-05, 40996.5779568], [1516815900000, 4.998e-05, 5.007e-05, 4.98e-05, 4.981e-05, 56536.32742198], [1516815960000, 5e-05, 5.013e-05, 4.985e-05, 4.995e-05, 78400.85600733], [1516816020000, 4.995e-05, 4.995e-05, 4.981e-05, 4.981e-05, 7046.94467862], [1516816080000, 4.981e-05, 5e-05, 4.981e-05, 5e-05, 6042.79190834], [1516816140000, 5e-05, 5.003e-05, 5e-05, 5.003e-05, 2797.53759214], [1516816200000, 5.003e-05, 5.003e-05, 5e-05, 5.002e-05, 20567.36213082], [1516816260000, 5.002e-05, 5.01e-05, 4.982e-05, 5.003e-05, 114047.41682302], [1516816320000, 5.01e-05, 5.012e-05, 5.003e-05, 5.005e-05, 64055.77396039], [1516816380000, 5.005e-05, 5.011e-05, 5.005e-05, 5.008e-05, 19053.22710159], [1516816440000, 5.011e-05, 5.016e-05, 5.011e-05, 5.015e-05, 64493.19539645], [1516816500000, 5.016e-05, 5.026e-05, 5.016e-05, 5.026e-05, 26978.84627933], [1516816560000, 5.028e-05, 5.035e-05, 5.028e-05, 5.032e-05, 106433.71645392], [1516816620000, 5.033e-05, 5.048e-05, 5.032e-05, 5.048e-05, 77747.08159041], [1516816680000, 5.048e-05, 5.056e-05, 5.045e-05, 5.055e-05, 84349.48978752], [1516816740000, 5.056e-05, 5.059e-05, 5.05e-05, 5.052e-05, 90758.9529557], [1516816800000, 5.053e-05, 5.053e-05, 5.048e-05, 5.052e-05, 97093.40916659], [1516816860000, 5.05e-05, 5.05e-05, 5.029e-05, 5.03e-05, 38408.19815486], [1516816920000, 5.03e-05, 5.041e-05, 5.025e-05, 5.039e-05, 12039.4507556], [1516816980000, 5.039e-05, 5.041e-05, 5.03e-05, 5.037e-05, 16455.37398145], [1516817040000, 5.039e-05, 5.042e-05, 5.025e-05, 5.042e-05, 239610.82729343], [1516817100000, 5.046e-05, 5.055e-05, 5.042e-05, 5.055e-05, 23040.56023882], [1516817160000, 5.051e-05, 5.069e-05, 5.051e-05, 5.069e-05, 44585.89420637], [1516817220000, 5.068e-05, 5.071e-05, 5.055e-05, 5.055e-05, 37888.65957212], [1516817280000, 5.07e-05, 5.087e-05, 5.055e-05, 5.073e-05, 41388.64535087], [1516817340000, 5.075e-05, 5.088e-05, 5.073e-05, 5.088e-05, 19935.11884841], [1516817400000, 5.089e-05, 5.089e-05, 5.057e-05, 5.057e-05, 73530.91294914], [1516817460000, 5.051e-05, 5.079e-05, 5.051e-05, 5.079e-05, 21385.66727529], [1516817520000, 5.078e-05, 5.1e-05, 5.064e-05, 5.1e-05, 75893.96927373], [1516817580000, 5.082e-05, 5.107e-05, 5.082e-05, 5.103e-05, 101428.68457527], [1516817640000, 5.107e-05, 5.108e-05, 5.08e-05, 5.096e-05, 99756.20425588], [1516817700000, 5.096e-05, 5.108e-05, 5.096e-05, 5.108e-05, 42559.96664018], [1516817760000, 5.107e-05, 5.123e-05, 5.103e-05, 5.122e-05, 122356.50202094], [1516817820000, 5.109e-05, 5.129e-05, 5.106e-05, 5.125e-05, 150109.45284282], [1516817880000, 5.124e-05, 5.125e-05, 5.119e-05, 5.119e-05, 182450.62820605], [1516817940000, 5.123e-05, 5.125e-05, 5.119e-05, 5.125e-05, 49224.72057683], [1516818000000, 5.125e-05, 5.145e-05, 5.125e-05, 5.145e-05, 118881.05128944], [1516818060000, 5.143e-05, 5.156e-05, 5.143e-05, 5.156e-05, 131960.26923966], [1516818120000, 5.154e-05, 5.168e-05, 5.154e-05, 5.168e-05, 44146.17773493], [1516818180000, 5.168e-05, 5.181e-05, 5.161e-05, 5.18e-05, 139753.19398953], [1516818240000, 5.18e-05, 5.185e-05, 5.179e-05, 5.185e-05, 200239.72068529], [1516818300000, 5.183e-05, 5.2e-05, 5.179e-05, 5.198e-05, 100089.59664531], [1516818360000, 5.2e-05, 5.21e-05, 5.189e-05, 5.21e-05, 194477.51366282], [1516818420000, 5.208e-05, 5.218e-05, 5.19e-05, 5.217e-05, 215115.9108633], [1516818480000, 5.217e-05, 5.217e-05, 5.211e-05, 5.217e-05, 72824.37141378], [1516818540000, 5.217e-05, 5.22e-05, 5.212e-05, 5.212e-05, 199058.60144496], [1516818600000, 5.211e-05, 5.212e-05, 5.143e-05, 5.151e-05, 164898.94020768], [1516818660000, 5.16e-05, 5.16e-05, 5.142e-05, 5.15e-05, 283750.96005779], [1516818720000, 5.15e-05, 5.155e-05, 5.113e-05, 5.116e-05, 121382.52574946], [1516818780000, 5.116e-05, 5.122e-05, 5.06e-05, 5.065e-05, 122577.05664029], [1516818840000, 5.077e-05, 5.1e-05, 5.06e-05, 5.1e-05, 100923.75443525], [1516818900000, 5.084e-05, 5.122e-05, 5.084e-05, 5.1e-05, 190233.60870312], [1516818960000, 5.105e-05, 5.147e-05, 5.105e-05, 5.125e-05, 149856.76581625], [1516819020000, 5.138e-05, 5.138e-05, 5.108e-05, 5.116e-05, 58838.34640753], [1516819080000, 5.12e-05, 5.12e-05, 5.084e-05, 5.084e-05, 137619.89174274], [1516819140000, 5.082e-05, 5.12e-05, 5e-05, 5.078e-05, 585567.48023513], [1516819200000, 5.077e-05, 5.08e-05, 5.039e-05, 5.05e-05, 16728.99759158], [1516819260000, 5.05e-05, 5.066e-05, 5.042e-05, 5.066e-05, 50520.01985279], [1516819320000, 5.064e-05, 5.066e-05, 5.054e-05, 5.06e-05, 99922.82069548], [1516819380000, 5.06e-05, 5.066e-05, 5.054e-05, 5.055e-05, 88223.9637349], [1516819440000, 5.063e-05, 5.066e-05, 5.05e-05, 5.055e-05, 26532.59693662], [1516819500000, 5.055e-05, 5.055e-05, 5.054e-05, 5.055e-05, 57085.70946886], [1516819560000, 5.055e-05, 5.108e-05, 5.054e-05, 5.098e-05, 87145.63469345], [1516819620000, 5.098e-05, 5.113e-05, 5.098e-05, 5.107e-05, 67004.23622418], [1516819680000, 5.107e-05, 5.107e-05, 5.098e-05, 5.098e-05, 25390.35995839], [1516819740000, 5.099e-05, 5.099e-05, 5.072e-05, 5.097e-05, 39098.13761947], [1516819800000, 5.097e-05, 5.098e-05, 5.08e-05, 5.098e-05, 74554.66071564], [1516819860000, 5.098e-05, 5.099e-05, 5.095e-05, 5.098e-05, 19285.66651779], [1516819920000, 5.096e-05, 5.098e-05, 5.096e-05, 5.096e-05, 39258.30792064], [1516819980000, 5.098e-05, 5.098e-05, 5.095e-05, 5.096e-05, 27433.77429486], [1516820040000, 5.096e-05, 5.108e-05, 5.095e-05, 5.108e-05, 50633.17871532], [1516820100000, 5.107e-05, 5.109e-05, 5.096e-05, 5.109e-05, 183181.16458973], [1516820160000, 5.1e-05, 5.1e-05, 5.096e-05, 5.1e-05, 8564.20428191], [1516820220000, 5.1e-05, 5.1e-05, 5.08e-05, 5.08e-05, 42166.53184816], [1516820280000, 5.1e-05, 5.1e-05, 5.065e-05, 5.095e-05, 38780.64565728], [1516820340000, 5.085e-05, 5.096e-05, 5.085e-05, 5.09e-05, 22797.66001533], [1516820400000, 5.087e-05, 5.087e-05, 5.07e-05, 5.072e-05, 63974.9635253], [1516820460000, 5.072e-05, 5.074e-05, 5.048e-05, 5.05e-05, 76490.61660567], [1516820520000, 5.05e-05, 5.05e-05, 5.045e-05, 5.047e-05, 81110.09852145], [1516820580000, 5.047e-05, 5.074e-05, 5.045e-05, 5.05e-05, 39574.70856583], [1516820640000, 5.051e-05, 5.074e-05, 5.045e-05, 5.054e-05, 18326.91210477], [1516820700000, 5.054e-05, 5.074e-05, 5.054e-05, 5.074e-05, 29470.17496491], [1516820760000, 5.064e-05, 5.074e-05, 5.063e-05, 5.074e-05, 31149.66317932], [1516820820000, 5.074e-05, 5.091e-05, 5.074e-05, 5.074e-05, 35422.78216611], [1516820880000, 5.074e-05, 5.074e-05, 5.047e-05, 5.05e-05, 252818.98307071], [1516820940000, 5.049e-05, 5.05e-05, 5.045e-05, 5.05e-05, 106804.69868214], [1516821000000, 5.05e-05, 5.074e-05, 5.048e-05, 5.074e-05, 44113.69826707], [1516821060000, 5.074e-05, 5.074e-05, 5.055e-05, 5.074e-05, 6594.95212982], [1516821120000, 5.074e-05, 5.074e-05, 5.061e-05, 5.073e-05, 6448.36892507], [1516821180000, 5.073e-05, 5.085e-05, 5.073e-05, 5.085e-05, 35307.53115757], [1516821240000, 5.084e-05, 5.085e-05, 5.075e-05, 5.085e-05, 36423.94881456], [1516821300000, 5.085e-05, 5.087e-05, 5.076e-05, 5.087e-05, 29643.3605432], [1516821360000, 5.087e-05, 5.091e-05, 5.076e-05, 5.091e-05, 12854.37854925], [1516821420000, 5.091e-05, 5.096e-05, 5.091e-05, 5.094e-05, 47487.31655395], [1516821480000, 5.092e-05, 5.1e-05, 5.091e-05, 5.1e-05, 46872.69983668], [1516821540000, 5.1e-05, 5.13e-05, 5.098e-05, 5.13e-05, 50152.85795892], [1516821600000, 5.115e-05, 5.139e-05, 5.098e-05, 5.138e-05, 54284.73843341], [1516821660000, 5.126e-05, 5.137e-05, 5.126e-05, 5.135e-05, 39669.63129092], [1516821720000, 5.136e-05, 5.146e-05, 5.129e-05, 5.136e-05, 93849.69235908], [1516821780000, 5.135e-05, 5.139e-05, 5.112e-05, 5.113e-05, 88559.87922977], [1516821840000, 5.112e-05, 5.126e-05, 5.112e-05, 5.122e-05, 42175.8659773], [1516821900000, 5.115e-05, 5.126e-05, 5.115e-05, 5.121e-05, 47762.92047522], [1516821960000, 5.121e-05, 5.126e-05, 5.111e-05, 5.111e-05, 68844.74507237], [1516822020000, 5.12e-05, 5.12e-05, 5.109e-05, 5.109e-05, 34789.04974209], [1516822080000, 5.109e-05, 5.118e-05, 5.085e-05, 5.109e-05, 73921.66007087], [1516822140000, 5.118e-05, 5.119e-05, 5.108e-05, 5.109e-05, 12734.4610078], [1516822200000, 5.102e-05, 5.11e-05, 5.091e-05, 5.091e-05, 46072.5323572], [1516822260000, 5.1e-05, 5.1e-05, 5.09e-05, 5.09e-05, 15113.8474087], [1516822320000, 5.082e-05, 5.09e-05, 5.06e-05, 5.066e-05, 107728.37248234], [1516822380000, 5.088e-05, 5.095e-05, 5.088e-05, 5.09e-05, 17412.52160969], [1516822440000, 5.09e-05, 5.096e-05, 5.09e-05, 5.096e-05, 6494.07457295], [1516822500000, 5.095e-05, 5.096e-05, 5.091e-05, 5.096e-05, 17546.44945171], [1516822560000, 5.096e-05, 5.098e-05, 5.09e-05, 5.096e-05, 21695.98737197], [1516822620000, 5.093e-05, 5.097e-05, 5.093e-05, 5.094e-05, 64665.32720094], [1516822680000, 5.094e-05, 5.094e-05, 5.089e-05, 5.092e-05, 48765.50900356], [1516822740000, 5.092e-05, 5.097e-05, 5.079e-05, 5.089e-05, 19311.11045341], [1516822800000, 5.087e-05, 5.089e-05, 5.08e-05, 5.082e-05, 38193.49339347], [1516822860000, 5.085e-05, 5.09e-05, 5.081e-05, 5.089e-05, 66134.60974531], [1516822920000, 5.089e-05, 5.1e-05, 5.081e-05, 5.099e-05, 34303.05680198], [1516822980000, 5.095e-05, 5.1e-05, 5.089e-05, 5.098e-05, 33879.09042291], [1516823040000, 5.097e-05, 5.097e-05, 5.061e-05, 5.083e-05, 93882.03286286], [1516823100000, 5.083e-05, 5.087e-05, 5.059e-05, 5.059e-05, 30335.56085811], [1516823160000, 5.088e-05, 5.089e-05, 5.059e-05, 5.067e-05, 14456.97336388], [1516823220000, 5.084e-05, 5.084e-05, 5.068e-05, 5.07e-05, 41994.67231837], [1516823280000, 5.07e-05, 5.083e-05, 5.069e-05, 5.07e-05, 85015.53687467], [1516823340000, 5.07e-05, 5.082e-05, 5.069e-05, 5.082e-05, 21566.81361486], [1516823400000, 5.08e-05, 5.081e-05, 5.07e-05, 5.07e-05, 27119.36394068], [1516823460000, 5.07e-05, 5.074e-05, 5.045e-05, 5.045e-05, 236828.55717432], [1516823520000, 5.045e-05, 5.05e-05, 5.042e-05, 5.046e-05, 72963.86847918], [1516823580000, 5.047e-05, 5.047e-05, 5.034e-05, 5.047e-05, 23214.99033344], [1516823640000, 5.047e-05, 5.05e-05, 5.022e-05, 5.034e-05, 30754.65247556], [1516823700000, 5.034e-05, 5.055e-05, 5.018e-05, 5.05e-05, 44879.46095078], [1516823760000, 5.047e-05, 5.047e-05, 5.02e-05, 5.021e-05, 27692.39892211], [1516823820000, 5.021e-05, 5.042e-05, 5.02e-05, 5.04e-05, 35890.20553747], [1516823880000, 5.035e-05, 5.035e-05, 5.021e-05, 5.034e-05, 25195.97877199], [1516823940000, 5.021e-05, 5.021e-05, 5e-05, 5e-05, 126196.14124166], [1516824000000, 5.015e-05, 5.015e-05, 5e-05, 5e-05, 38895.73749833], [1516824060000, 5.012e-05, 5.012e-05, 5e-05, 5e-05, 6583.53348588], [1516824120000, 5e-05, 5.014e-05, 5e-05, 5.012e-05, 18678.55129869], [1516824180000, 5.013e-05, 5.014e-05, 5.001e-05, 5.002e-05, 92376.61045788], [1516824240000, 5.011e-05, 5.013e-05, 5.002e-05, 5.01e-05, 45438.35700535], [1516824300000, 5.01e-05, 5.013e-05, 5.01e-05, 5.012e-05, 75202.37261652], [1516824360000, 5.011e-05, 5.015e-05, 5.011e-05, 5.015e-05, 94932.45678037], [1516824420000, 5.015e-05, 5.035e-05, 5.012e-05, 5.035e-05, 34669.8986926], [1516824480000, 5.035e-05, 5.035e-05, 5.019e-05, 5.02e-05, 44922.29927714], [1516824540000, 5.02e-05, 5.038e-05, 5.019e-05, 5.038e-05, 50897.98326586], [1516824600000, 5.038e-05, 5.04e-05, 5.036e-05, 5.04e-05, 55387.89880745], [1516824660000, 5.04e-05, 5.044e-05, 5.035e-05, 5.043e-05, 73378.0192423], [1516824720000, 5.043e-05, 5.044e-05, 5.035e-05, 5.044e-05, 103357.61321716], [1516824780000, 5.043e-05, 5.045e-05, 5.04e-05, 5.044e-05, 34423.88489921], [1516824840000, 5.044e-05, 5.05e-05, 5.036e-05, 5.047e-05, 40973.18609281], [1516824900000, 5.049e-05, 5.049e-05, 5.035e-05, 5.036e-05, 34798.98932621], [1516824960000, 5.036e-05, 5.037e-05, 5.03e-05, 5.036e-05, 17400.18583719], [1516825020000, 5.031e-05, 5.031e-05, 5.029e-05, 5.03e-05, 5728.66770749], [1516825080000, 5.03e-05, 5.03e-05, 5.024e-05, 5.028e-05, 63768.86309661], [1516825140000, 5.028e-05, 5.028e-05, 5.023e-05, 5.023e-05, 11084.15631315], [1516825200000, 5.025e-05, 5.025e-05, 5.023e-05, 5.025e-05, 9558.96851332], [1516825260000, 5.025e-05, 5.026e-05, 5.022e-05, 5.022e-05, 12968.99817196], [1516825320000, 5.022e-05, 5.024e-05, 5.019e-05, 5.021e-05, 12543.29520904], [1516825380000, 5.019e-05, 5.021e-05, 5.019e-05, 5.021e-05, 28506.99205264], [1516825440000, 5.021e-05, 5.026e-05, 5.021e-05, 5.026e-05, 33391.62331419], [1516825500000, 5.026e-05, 5.041e-05, 5.025e-05, 5.027e-05, 38718.63941549], [1516825560000, 5.041e-05, 5.041e-05, 5.026e-05, 5.026e-05, 35625.55852207], [1516825620000, 5.037e-05, 5.041e-05, 5.036e-05, 5.04e-05, 6793.4321961], [1516825680000, 5.036e-05, 5.039e-05, 5.027e-05, 5.038e-05, 10246.49617335], [1516825740000, 5.038e-05, 5.038e-05, 5.036e-05, 5.036e-05, 15601.61829439], [1516825800000, 5.035e-05, 5.038e-05, 5.027e-05, 5.035e-05, 4461.32782739], [1516825860000, 5.029e-05, 5.029e-05, 5.027e-05, 5.028e-05, 9587.50267443], [1516825920000, 5.028e-05, 5.028e-05, 5.021e-05, 5.021e-05, 42707.58995982], [1516825980000, 5.023e-05, 5.028e-05, 5.02e-05, 5.022e-05, 23064.84037445], [1516826040000, 5.022e-05, 5.028e-05, 5.022e-05, 5.024e-05, 28314.39551762], [1516826100000, 5.028e-05, 5.028e-05, 5.018e-05, 5.02e-05, 16129.76408662], [1516826160000, 5.021e-05, 5.028e-05, 5.015e-05, 5.027e-05, 20919.86334863], [1516826220000, 5.027e-05, 5.027e-05, 5.012e-05, 5.02e-05, 17379.87163796], [1516826280000, 5.02e-05, 5.027e-05, 5.013e-05, 5.026e-05, 10773.51314763], [1516826340000, 5.021e-05, 5.027e-05, 5.017e-05, 5.027e-05, 18731.96044902], [1516826400000, 5.027e-05, 5.027e-05, 5.021e-05, 5.027e-05, 31142.09342104], [1516826460000, 5.027e-05, 5.027e-05, 5.025e-05, 5.027e-05, 7425.00180604], [1516826520000, 5.027e-05, 5.027e-05, 5.026e-05, 5.027e-05, 19368.58549841], [1516826580000, 5.027e-05, 5.027e-05, 5.027e-05, 5.027e-05, 40933.09542992], [1516826640000, 5.027e-05, 5.028e-05, 5.027e-05, 5.028e-05, 33596.53983213], [1516826700000, 5.028e-05, 5.028e-05, 5.028e-05, 5.028e-05, 64235.70977415], [1516826760000, 5.028e-05, 5.028e-05, 5.028e-05, 5.028e-05, 7361.83940281], [1516826820000, 5.028e-05, 5.028e-05, 5.027e-05, 5.027e-05, 253371.34727906], [1516826880000, 5.027e-05, 5.03e-05, 5.027e-05, 5.03e-05, 170703.6735327], [1516826940000, 5.038e-05, 5.044e-05, 5.038e-05, 5.044e-05, 28307.70603611], [1516827000000, 5.047e-05, 5.06e-05, 5.044e-05, 5.06e-05, 47337.22040227], [1516827060000, 5.06e-05, 5.066e-05, 5.059e-05, 5.066e-05, 25248.27840119], [1516827120000, 5.066e-05, 5.07e-05, 5.066e-05, 5.07e-05, 24114.80904833], [1516827180000, 5.069e-05, 5.095e-05, 5.069e-05, 5.094e-05, 39732.36733443], [1516827240000, 5.086e-05, 5.095e-05, 5.08e-05, 5.095e-05, 15795.79023042], [1516827300000, 5.098e-05, 5.099e-05, 5.095e-05, 5.098e-05, 26080.1702148], [1516827360000, 5.097e-05, 5.099e-05, 5.095e-05, 5.095e-05, 25823.20253696], [1516827420000, 5.098e-05, 5.099e-05, 5.07e-05, 5.07e-05, 48734.0329707], [1516827480000, 5.071e-05, 5.094e-05, 5.07e-05, 5.094e-05, 57943.77732955], [1516827540000, 5.072e-05, 5.094e-05, 5.072e-05, 5.089e-05, 28578.41937365], [1516827600000, 5.089e-05, 5.094e-05, 5.078e-05, 5.089e-05, 8951.09045634], [1516827660000, 5.08e-05, 5.093e-05, 5.08e-05, 5.093e-05, 26002.81404884], [1516827720000, 5.092e-05, 5.094e-05, 5.081e-05, 5.088e-05, 56506.18370538], [1516827780000, 5.084e-05, 5.099e-05, 5.084e-05, 5.088e-05, 63034.68086787], [1516827840000, 5.098e-05, 5.098e-05, 5.084e-05, 5.098e-05, 89875.37645932], [1516827900000, 5.098e-05, 5.106e-05, 5.098e-05, 5.105e-05, 69696.55301759], [1516827960000, 5.106e-05, 5.116e-05, 5.098e-05, 5.106e-05, 109366.45442681], [1516828020000, 5.114e-05, 5.114e-05, 5.106e-05, 5.106e-05, 27033.50004624], [1516828080000, 5.106e-05, 5.107e-05, 5.1e-05, 5.107e-05, 18077.71342443], [1516828140000, 5.106e-05, 5.107e-05, 5.106e-05, 5.106e-05, 68081.74601109], [1516828200000, 5.106e-05, 5.107e-05, 5.098e-05, 5.1e-05, 61856.48039541], [1516828260000, 5.105e-05, 5.106e-05, 5.098e-05, 5.105e-05, 25496.90366061], [1516828320000, 5.105e-05, 5.108e-05, 5.09e-05, 5.103e-05, 98320.36367445], [1516828380000, 5.103e-05, 5.14e-05, 5.098e-05, 5.125e-05, 138393.21859467], [1516828440000, 5.126e-05, 5.143e-05, 5.123e-05, 5.138e-05, 61743.30707308], [1516828500000, 5.144e-05, 5.148e-05, 5.138e-05, 5.143e-05, 30917.31464865], [1516828560000, 5.14e-05, 5.143e-05, 5.126e-05, 5.139e-05, 59759.5237172], [1516828620000, 5.143e-05, 5.149e-05, 5.131e-05, 5.139e-05, 32045.14457014], [1516828680000, 5.149e-05, 5.149e-05, 5.131e-05, 5.147e-05, 11907.43649529], [1516828740000, 5.145e-05, 5.147e-05, 5.13e-05, 5.147e-05, 36165.02291277], [1516828800000, 5.147e-05, 5.147e-05, 5.131e-05, 5.143e-05, 30556.45717904], [1516828860000, 5.145e-05, 5.145e-05, 5.137e-05, 5.143e-05, 36535.88225421], [1516828920000, 5.137e-05, 5.143e-05, 5.137e-05, 5.141e-05, 55143.30349109], [1516828980000, 5.141e-05, 5.141e-05, 5.138e-05, 5.138e-05, 111838.08534451], [1516829040000, 5.141e-05, 5.141e-05, 5.125e-05, 5.125e-05, 110272.65712949], [1516829100000, 5.125e-05, 5.137e-05, 5.124e-05, 5.134e-05, 33369.31111648], [1516829160000, 5.134e-05, 5.134e-05, 5.126e-05, 5.129e-05, 17750.27121446], [1516829220000, 5.129e-05, 5.13e-05, 5.124e-05, 5.13e-05, 39050.87329562], [1516829280000, 5.13e-05, 5.132e-05, 5.124e-05, 5.124e-05, 24948.03774168], [1516829340000, 5.131e-05, 5.143e-05, 5.123e-05, 5.133e-05, 72242.66894634], [1516829400000, 5.134e-05, 5.145e-05, 5.133e-05, 5.134e-05, 41806.75950923], [1516829460000, 5.134e-05, 5.144e-05, 5.133e-05, 5.14e-05, 15723.82528939], [1516829520000, 5.139e-05, 5.139e-05, 5.098e-05, 5.1e-05, 337019.93125266], [1516829580000, 5.1e-05, 5.1e-05, 5.086e-05, 5.099e-05, 146915.38555105], [1516829640000, 5.099e-05, 5.1e-05, 5.087e-05, 5.099e-05, 14945.02976598], [1516829700000, 5.099e-05, 5.1e-05, 5.095e-05, 5.1e-05, 36019.078781], [1516829760000, 5.1e-05, 5.119e-05, 5.1e-05, 5.102e-05, 22911.73365777], [1516829820000, 5.102e-05, 5.11e-05, 5.1e-05, 5.105e-05, 94492.76668412], [1516829880000, 5.105e-05, 5.105e-05, 5.091e-05, 5.091e-05, 16806.92208482], [1516829940000, 5.09e-05, 5.091e-05, 5.079e-05, 5.091e-05, 33480.85364269], [1516830000000, 5.09e-05, 5.093e-05, 5.086e-05, 5.093e-05, 53743.10586254], [1516830060000, 5.089e-05, 5.089e-05, 5.089e-05, 5.089e-05, 5291.65958591], [1516830120000, 5.089e-05, 5.09e-05, 5.08e-05, 5.09e-05, 14716.54068676], [1516830180000, 5.09e-05, 5.09e-05, 5.088e-05, 5.088e-05, 29766.80073664], [1516830240000, 5.088e-05, 5.089e-05, 5.079e-05, 5.089e-05, 17469.02951259], [1516830300000, 5.089e-05, 5.09e-05, 5.08e-05, 5.08e-05, 73005.41974777], [1516830360000, 5.088e-05, 5.09e-05, 5.08e-05, 5.09e-05, 47539.61153551], [1516830420000, 5.088e-05, 5.094e-05, 5.088e-05, 5.092e-05, 102808.09642661], [1516830480000, 5.094e-05, 5.112e-05, 5.094e-05, 5.112e-05, 61056.64024752], [1516830540000, 5.1e-05, 5.112e-05, 5.1e-05, 5.111e-05, 25773.57778049], [1516830600000, 5.105e-05, 5.111e-05, 5.101e-05, 5.101e-05, 16307.91418337], [1516830660000, 5.111e-05, 5.111e-05, 5.094e-05, 5.1e-05, 38634.15000324], [1516830720000, 5.1e-05, 5.1e-05, 5.094e-05, 5.1e-05, 25207.26979884], [1516830780000, 5.099e-05, 5.1e-05, 5.094e-05, 5.094e-05, 16140.50212433], [1516830840000, 5.093e-05, 5.111e-05, 5.09e-05, 5.111e-05, 48750.60596309], [1516830900000, 5.112e-05, 5.112e-05, 5.09e-05, 5.09e-05, 19164.87621756], [1516830960000, 5.097e-05, 5.099e-05, 5.093e-05, 5.099e-05, 17461.09731807], [1516831020000, 5.099e-05, 5.099e-05, 5.093e-05, 5.098e-05, 27049.86594845], [1516831080000, 5.098e-05, 5.1e-05, 5.096e-05, 5.1e-05, 121797.28158151], [1516831140000, 5.1e-05, 5.1e-05, 5.096e-05, 5.097e-05, 3385.74387642], [1516831200000, 5.096e-05, 5.1e-05, 5.09e-05, 5.1e-05, 11814.20687883], [1516831260000, 5.1e-05, 5.111e-05, 5.099e-05, 5.1e-05, 22221.29754346], [1516831320000, 5.099e-05, 5.1e-05, 5.099e-05, 5.1e-05, 15458.31556738], [1516831380000, 5.099e-05, 5.115e-05, 5.096e-05, 5.115e-05, 37219.83947401], [1516831440000, 5.115e-05, 5.115e-05, 5.09e-05, 5.108e-05, 23469.03336869], [1516831500000, 5.107e-05, 5.111e-05, 5.089e-05, 5.089e-05, 36579.55136324], [1516831560000, 5.088e-05, 5.088e-05, 5.066e-05, 5.066e-05, 55389.65469225], [1516831620000, 5.066e-05, 5.074e-05, 5.06e-05, 5.073e-05, 10587.45268291], [1516831680000, 5.066e-05, 5.074e-05, 5.066e-05, 5.074e-05, 24427.94558167], [1516831740000, 5.074e-05, 5.075e-05, 5.066e-05, 5.075e-05, 136640.30809182], [1516831800000, 5.075e-05, 5.082e-05, 5.053e-05, 5.056e-05, 236876.20964413], [1516831860000, 5.056e-05, 5.082e-05, 5.056e-05, 5.07e-05, 121265.97729099], [1516831920000, 5.082e-05, 5.099e-05, 5.071e-05, 5.08e-05, 45316.88589578], [1516831980000, 5.08e-05, 5.088e-05, 5.074e-05, 5.078e-05, 81245.04243251], [1516832040000, 5.085e-05, 5.087e-05, 5.076e-05, 5.076e-05, 91792.71930174], [1516832100000, 5.076e-05, 5.086e-05, 5.076e-05, 5.086e-05, 10834.09075716], [1516832160000, 5.086e-05, 5.086e-05, 5.079e-05, 5.079e-05, 56562.69914017], [1516832220000, 5.08e-05, 5.099e-05, 5.079e-05, 5.099e-05, 16245.04635883], [1516832280000, 5.099e-05, 5.099e-05, 5.076e-05, 5.076e-05, 79342.7774049], [1516832340000, 5.095e-05, 5.095e-05, 5.078e-05, 5.087e-05, 21523.94476937], [1516832400000, 5.087e-05, 5.087e-05, 5.06e-05, 5.06e-05, 156770.66226581], [1516832460000, 5.065e-05, 5.076e-05, 5.054e-05, 5.065e-05, 87386.3324561], [1516832520000, 5.065e-05, 5.114e-05, 5.06e-05, 5.082e-05, 161616.11495988], [1516832580000, 5.082e-05, 5.1e-05, 5.075e-05, 5.082e-05, 25044.60638735], [1516832640000, 5.082e-05, 5.095e-05, 5.065e-05, 5.067e-05, 20603.24465821], [1516832700000, 5.067e-05, 5.085e-05, 5.065e-05, 5.074e-05, 59829.09704033], [1516832760000, 5.074e-05, 5.075e-05, 5.07e-05, 5.073e-05, 72103.23310109], [1516832820000, 5.071e-05, 5.073e-05, 5.068e-05, 5.072e-05, 15555.37527224], [1516832880000, 5.072e-05, 5.078e-05, 5.072e-05, 5.078e-05, 26082.65136687], [1516832940000, 5.078e-05, 5.079e-05, 5.075e-05, 5.075e-05, 6977.15222636], [1516833000000, 5.075e-05, 5.079e-05, 5.07e-05, 5.078e-05, 40026.06007416], [1516833060000, 5.07e-05, 5.079e-05, 5.058e-05, 5.062e-05, 45906.15400062], [1516833120000, 5.078e-05, 5.078e-05, 5.035e-05, 5.058e-05, 199741.65368471], [1516833180000, 5.057e-05, 5.058e-05, 5.051e-05, 5.057e-05, 18057.86214226], [1516833240000, 5.057e-05, 5.058e-05, 5.054e-05, 5.058e-05, 106893.5740519], [1516833300000, 5.058e-05, 5.076e-05, 5.055e-05, 5.055e-05, 71563.80488658], [1516833360000, 5.056e-05, 5.077e-05, 5.016e-05, 5.044e-05, 219316.25754391], [1516833420000, 5.046e-05, 5.073e-05, 5.046e-05, 5.069e-05, 35325.83793549], [1516833480000, 5.069e-05, 5.076e-05, 5.068e-05, 5.069e-05, 58782.14616108], [1516833540000, 5.069e-05, 5.073e-05, 5.065e-05, 5.07e-05, 38891.06876722], [1516833600000, 5.075e-05, 5.075e-05, 5.073e-05, 5.075e-05, 19777.59222667], [1516833660000, 5.074e-05, 5.077e-05, 5.061e-05, 5.074e-05, 41333.40819618], [1516833720000, 5.075e-05, 5.076e-05, 5.074e-05, 5.074e-05, 3379.69197032], [1516833780000, 5.074e-05, 5.074e-05, 5.067e-05, 5.074e-05, 16226.55106613], [1516833840000, 5.072e-05, 5.074e-05, 5.07e-05, 5.07e-05, 13285.62470699], [1516833900000, 5.07e-05, 5.072e-05, 5.067e-05, 5.067e-05, 72842.48158324], [1516833960000, 5.067e-05, 5.07e-05, 5.019e-05, 5.045e-05, 127343.60239458], [1516834020000, 5.045e-05, 5.045e-05, 5.022e-05, 5.043e-05, 16497.07035832], [1516834080000, 5.043e-05, 5.043e-05, 5.026e-05, 5.026e-05, 40700.80922686], [1516834140000, 5.026e-05, 5.069e-05, 5.022e-05, 5.022e-05, 22845.83504309], [1516834200000, 5.019e-05, 5.056e-05, 5.019e-05, 5.054e-05, 58104.87677279], [1516834260000, 5.025e-05, 5.038e-05, 5.012e-05, 5.012e-05, 21446.75350126], [1516834320000, 5.013e-05, 5.013e-05, 5.004e-05, 5.008e-05, 37172.51791271], [1516834380000, 5.01e-05, 5.01e-05, 5.004e-05, 5.004e-05, 18313.80495841], [1516834440000, 5.004e-05, 5.004e-05, 5.002e-05, 5.003e-05, 13329.04881678], [1516834500000, 5.003e-05, 5.003e-05, 5.001e-05, 5.001e-05, 24681.49864627], [1516834560000, 5.001e-05, 5.001e-05, 4.999e-05, 4.999e-05, 56324.16108406], [1516834620000, 4.999e-05, 5e-05, 4.997e-05, 5e-05, 56489.28193919], [1516834680000, 4.998e-05, 4.998e-05, 4.996e-05, 4.998e-05, 20949.9565964], [1516834740000, 4.998e-05, 4.998e-05, 4.99e-05, 4.996e-05, 22454.93522693], [1516834800000, 4.994e-05, 4.996e-05, 4.95e-05, 4.959e-05, 121529.12359592], [1516834860000, 4.95e-05, 4.97e-05, 4.95e-05, 4.95e-05, 71427.53194062], [1516834920000, 4.961e-05, 4.961e-05, 4.948e-05, 4.961e-05, 112097.71862005], [1516834980000, 4.961e-05, 4.987e-05, 4.961e-05, 4.987e-05, 38346.93455869], [1516835040000, 4.987e-05, 4.999e-05, 4.985e-05, 4.999e-05, 26837.27593925], [1516835100000, 5e-05, 5.003e-05, 4.999e-05, 5.003e-05, 51061.72387561], [1516835160000, 5.003e-05, 5.003e-05, 5e-05, 5.003e-05, 2874.48110419], [1516835220000, 5.003e-05, 5.024e-05, 5.003e-05, 5.024e-05, 12552.47480234], [1516835280000, 5.024e-05, 5.032e-05, 5.024e-05, 5.032e-05, 11616.97498612], [1516835340000, 5.03e-05, 5.045e-05, 5.024e-05, 5.045e-05, 12332.82348798], [1516835400000, 5.025e-05, 5.049e-05, 5.003e-05, 5.024e-05, 82997.0627851], [1516835460000, 5.024e-05, 5.046e-05, 5.012e-05, 5.024e-05, 15887.97945464], [1516835520000, 5.012e-05, 5.029e-05, 5.012e-05, 5.024e-05, 47105.15941004], [1516835580000, 5.024e-05, 5.024e-05, 5.015e-05, 5.015e-05, 9659.37833058], [1516835640000, 5.015e-05, 5.023e-05, 5.015e-05, 5.016e-05, 20052.6392731], [1516835700000, 5.016e-05, 5.016e-05, 5.015e-05, 5.016e-05, 9068.30627769], [1516835760000, 5.015e-05, 5.016e-05, 5.001e-05, 5.011e-05, 43921.70852784], [1516835820000, 5.011e-05, 5.012e-05, 4.992e-05, 4.993e-05, 52105.18858307], [1516835880000, 5.007e-05, 5.007e-05, 4.959e-05, 5.004e-05, 47699.04970959], [1516835940000, 5.004e-05, 5.008e-05, 5.003e-05, 5.008e-05, 19515.94812171], [1516836000000, 5.008e-05, 5.029e-05, 4.992e-05, 5.026e-05, 12630.49214087], [1516836060000, 5.026e-05, 5.029e-05, 5.026e-05, 5.028e-05, 56389.39625325], [1516836120000, 5.029e-05, 5.034e-05, 5.029e-05, 5.03e-05, 31239.71728209], [1516836180000, 5.034e-05, 5.035e-05, 5.03e-05, 5.034e-05, 55129.05626558], [1516836240000, 5.035e-05, 5.044e-05, 5.03e-05, 5.044e-05, 30103.72169618], [1516836300000, 5.041e-05, 5.045e-05, 5.009e-05, 5.045e-05, 75224.50474363], [1516836360000, 5.009e-05, 5.061e-05, 5.008e-05, 5.04e-05, 32679.6028365], [1516836420000, 5.012e-05, 5.04e-05, 5.012e-05, 5.04e-05, 3762.42327399], [1516836480000, 5.04e-05, 5.04e-05, 5.022e-05, 5.039e-05, 34505.89313783], [1516836540000, 5.039e-05, 5.04e-05, 5.037e-05, 5.04e-05, 120143.80724425], [1516836600000, 5.04e-05, 5.05e-05, 5.028e-05, 5.049e-05, 38224.2574577], [1516836660000, 5.049e-05, 5.057e-05, 5.049e-05, 5.057e-05, 112003.56810001], [1516836720000, 5.057e-05, 5.062e-05, 5.049e-05, 5.055e-05, 23379.19975125], [1516836780000, 5.062e-05, 5.067e-05, 5.058e-05, 5.058e-05, 66019.64791181], [1516836840000, 5.059e-05, 5.065e-05, 5.056e-05, 5.057e-05, 14763.1836237], [1516836900000, 5.057e-05, 5.064e-05, 5.05e-05, 5.064e-05, 28211.85601669], [1516836960000, 5.061e-05, 5.064e-05, 5.052e-05, 5.06e-05, 79853.66197456], [1516837020000, 5.051e-05, 5.06e-05, 5.051e-05, 5.054e-05, 6791.82598531], [1516837080000, 5.059e-05, 5.06e-05, 5.052e-05, 5.053e-05, 18991.8448306], [1516837140000, 5.053e-05, 5.053e-05, 5.049e-05, 5.051e-05, 21625.15736007], [1516837200000, 5.051e-05, 5.064e-05, 5.049e-05, 5.049e-05, 118317.93084966], [1516837260000, 5.049e-05, 5.064e-05, 5.049e-05, 5.059e-05, 4323.37938999], [1516837320000, 5.049e-05, 5.074e-05, 5.045e-05, 5.074e-05, 60567.64765121], [1516837380000, 5.074e-05, 5.074e-05, 5.052e-05, 5.058e-05, 26265.45376702], [1516837440000, 5.058e-05, 5.06e-05, 5.02e-05, 5.02e-05, 8161.12828069], [1516837500000, 5.038e-05, 5.058e-05, 5.02e-05, 5.057e-05, 109863.18846772], [1516837560000, 5.05e-05, 5.056e-05, 5.039e-05, 5.055e-05, 13601.53124556], [1516837620000, 5.055e-05, 5.056e-05, 5.035e-05, 5.035e-05, 22555.12803872], [1516837680000, 5.039e-05, 5.039e-05, 5.039e-05, 5.039e-05, 10869.48586861], [1516837740000, 5.05e-05, 5.057e-05, 5.05e-05, 5.057e-05, 11949.27283294], [1516837800000, 5.057e-05, 5.057e-05, 5.035e-05, 5.037e-05, 6311.9828336], [1516837860000, 5.048e-05, 5.05e-05, 5.037e-05, 5.05e-05, 20834.0146763], [1516837920000, 5.05e-05, 5.058e-05, 5.035e-05, 5.058e-05, 92062.42610812], [1516837980000, 5.039e-05, 5.056e-05, 5.035e-05, 5.035e-05, 147792.76709347], [1516838040000, 5.03e-05, 5.04e-05, 5.02e-05, 5.034e-05, 17193.35553322], [1516838100000, 5.034e-05, 5.05e-05, 5.01e-05, 5.016e-05, 35254.68748049], [1516838160000, 5.036e-05, 5.036e-05, 5.012e-05, 5.034e-05, 21769.42848461], [1516838220000, 5.013e-05, 5.034e-05, 5.009e-05, 5.029e-05, 75088.82301844], [1516838280000, 5.029e-05, 5.029e-05, 5.012e-05, 5.026e-05, 76291.6881275], [1516838340000, 5.014e-05, 5.023e-05, 4.972e-05, 5.015e-05, 68983.48357836], [1516838400000, 5.01e-05, 5.015e-05, 4.966e-05, 5e-05, 13751.8450727], [1516838460000, 4.999e-05, 5e-05, 4.947e-05, 4.985e-05, 300187.94059812], [1516838520000, 4.985e-05, 4.985e-05, 4.947e-05, 4.961e-05, 83874.51560999], [1516838580000, 4.961e-05, 4.964e-05, 4.946e-05, 4.948e-05, 47485.97857033], [1516838640000, 4.948e-05, 4.961e-05, 4.946e-05, 4.958e-05, 17644.35568851], [1516838700000, 4.958e-05, 4.961e-05, 4.951e-05, 4.961e-05, 101519.34974498], [1516838760000, 4.961e-05, 5.019e-05, 4.96e-05, 5.001e-05, 68941.18612682], [1516838820000, 5.002e-05, 5.027e-05, 5.001e-05, 5.002e-05, 63349.63785518], [1516838880000, 5.019e-05, 5.024e-05, 5e-05, 5.02e-05, 37856.7154297], [1516838940000, 5.02e-05, 5.024e-05, 4.976e-05, 5e-05, 44784.20523822], [1516839000000, 5e-05, 5.019e-05, 5e-05, 5.01e-05, 7480.49366096], [1516839060000, 5.018e-05, 5.023e-05, 4.977e-05, 5.006e-05, 15153.23612469], [1516839120000, 5e-05, 5e-05, 4.977e-05, 4.98e-05, 4612.49319518], [1516839180000, 4.999e-05, 4.999e-05, 4.98e-05, 4.998e-05, 1287.55099403], [1516839240000, 4.98e-05, 4.996e-05, 4.98e-05, 4.995e-05, 6117.17011265], [1516839300000, 4.988e-05, 4.995e-05, 4.98e-05, 4.984e-05, 59110.75115798], [1516839360000, 4.981e-05, 5.01e-05, 4.981e-05, 5.01e-05, 116256.3536539], [1516839420000, 5.01e-05, 5.01e-05, 5.009e-05, 5.01e-05, 19204.33180836], [1516839480000, 5e-05, 5.01e-05, 4.989e-05, 5.006e-05, 10635.91249768], [1516839540000, 5.006e-05, 5.007e-05, 4.989e-05, 5.007e-05, 24941.84311452], [1516839600000, 4.989e-05, 5.005e-05, 4.98e-05, 4.98e-05, 11546.40469842], [1516839660000, 4.991e-05, 4.991e-05, 4.98e-05, 4.982e-05, 46254.12656485], [1516839720000, 4.986e-05, 4.986e-05, 4.974e-05, 4.977e-05, 82106.78149332], [1516839780000, 4.977e-05, 4.977e-05, 4.969e-05, 4.972e-05, 43787.52834042], [1516839840000, 4.971e-05, 4.973e-05, 4.97e-05, 4.972e-05, 14989.65200533], [1516839900000, 4.972e-05, 4.973e-05, 4.968e-05, 4.968e-05, 101069.49223984], [1516839960000, 4.973e-05, 4.973e-05, 4.959e-05, 4.962e-05, 40569.9284839], [1516840020000, 4.962e-05, 4.973e-05, 4.962e-05, 4.967e-05, 7071.9384628], [1516840080000, 4.967e-05, 4.967e-05, 4.959e-05, 4.967e-05, 74861.87771135], [1516840140000, 4.967e-05, 4.968e-05, 4.963e-05, 4.967e-05, 30285.33119173], [1516840200000, 4.967e-05, 4.968e-05, 4.962e-05, 4.968e-05, 11951.16668828], [1516840260000, 4.968e-05, 4.968e-05, 4.953e-05, 4.967e-05, 36483.79338128], [1516840320000, 4.967e-05, 4.967e-05, 4.953e-05, 4.962e-05, 29687.79817395], [1516840380000, 4.962e-05, 4.997e-05, 4.953e-05, 4.962e-05, 67712.75224257], [1516840440000, 4.962e-05, 4.995e-05, 4.962e-05, 4.962e-05, 8978.73284747], [1516840500000, 4.991e-05, 4.999e-05, 4.964e-05, 4.996e-05, 11579.12535398], [1516840560000, 4.995e-05, 4.997e-05, 4.974e-05, 4.974e-05, 9756.62007719], [1516840620000, 4.993e-05, 4.993e-05, 4.968e-05, 4.972e-05, 36839.61934878], [1516840680000, 4.988e-05, 4.988e-05, 4.972e-05, 4.979e-05, 13278.06594764], [1516840740000, 4.978e-05, 4.978e-05, 4.956e-05, 4.96e-05, 45132.93124527], [1516840800000, 4.96e-05, 4.967e-05, 4.96e-05, 4.96e-05, 21034.43746665], [1516840860000, 4.963e-05, 4.965e-05, 4.96e-05, 4.965e-05, 17500.39371409], [1516840920000, 4.965e-05, 4.965e-05, 4.962e-05, 4.963e-05, 29234.14809259], [1516840980000, 4.963e-05, 4.964e-05, 4.962e-05, 4.962e-05, 27012.13477906], [1516841040000, 4.964e-05, 4.964e-05, 4.962e-05, 4.962e-05, 19795.61889598], [1516841100000, 4.964e-05, 4.964e-05, 4.959e-05, 4.961e-05, 7701.56867746], [1516841160000, 4.961e-05, 4.961e-05, 4.95e-05, 4.95e-05, 35897.61267998], [1516841220000, 4.954e-05, 4.954e-05, 4.942e-05, 4.942e-05, 8132.45106695], [1516841280000, 4.945e-05, 4.954e-05, 4.923e-05, 4.923e-05, 84041.26345585], [1516841340000, 4.925e-05, 4.944e-05, 4.917e-05, 4.921e-05, 60670.35421099], [1516841400000, 4.921e-05, 4.921e-05, 4.917e-05, 4.92e-05, 16816.66067545], [1516841460000, 4.92e-05, 4.93e-05, 4.9e-05, 4.918e-05, 168706.85667408], [1516841520000, 4.918e-05, 4.918e-05, 4.9e-05, 4.901e-05, 124746.20375964], [1516841580000, 4.91e-05, 4.91e-05, 4.901e-05, 4.91e-05, 40470.68288672], [1516841640000, 4.91e-05, 4.91e-05, 4.903e-05, 4.903e-05, 33283.85448723], [1516841700000, 4.908e-05, 4.91e-05, 4.904e-05, 4.908e-05, 39194.93896709], [1516841760000, 4.91e-05, 4.91e-05, 4.899e-05, 4.899e-05, 36899.81163498], [1516841820000, 4.9e-05, 4.9e-05, 4.898e-05, 4.898e-05, 63462.08592318], [1516841880000, 4.899e-05, 4.901e-05, 4.898e-05, 4.9e-05, 26649.41382002], [1516841940000, 4.9e-05, 4.9e-05, 4.898e-05, 4.898e-05, 12349.24830468], [1516842000000, 4.898e-05, 4.899e-05, 4.898e-05, 4.898e-05, 8475.25720473], [1516842060000, 4.897e-05, 4.897e-05, 4.895e-05, 4.897e-05, 64003.92220762], [1516842120000, 4.897e-05, 4.897e-05, 4.895e-05, 4.897e-05, 40652.19112973], [1516842180000, 4.896e-05, 4.896e-05, 4.895e-05, 4.895e-05, 126799.57560732], [1516842240000, 4.895e-05, 4.896e-05, 4.894e-05, 4.896e-05, 44732.91219342], [1516842300000, 4.896e-05, 4.909e-05, 4.89e-05, 4.909e-05, 53513.16237701], [1516842360000, 4.91e-05, 4.91e-05, 4.901e-05, 4.909e-05, 15135.66961301], [1516842420000, 4.908e-05, 4.923e-05, 4.901e-05, 4.923e-05, 15475.25127697], [1516842480000, 4.923e-05, 4.924e-05, 4.909e-05, 4.924e-05, 24443.30953226], [1516842540000, 4.911e-05, 4.924e-05, 4.909e-05, 4.924e-05, 20186.44823938], [1516842600000, 4.925e-05, 4.928e-05, 4.913e-05, 4.927e-05, 5667.38056247], [1516842660000, 4.927e-05, 4.946e-05, 4.927e-05, 4.946e-05, 15017.54332856], [1516842720000, 4.946e-05, 4.973e-05, 4.93e-05, 4.949e-05, 27128.1389618], [1516842780000, 4.949e-05, 4.969e-05, 4.949e-05, 4.95e-05, 38418.0532328], [1516842840000, 4.96e-05, 4.963e-05, 4.951e-05, 4.963e-05, 20168.71010588], [1516842900000, 4.963e-05, 4.97e-05, 4.959e-05, 4.97e-05, 7430.46510664], [1516842960000, 4.97e-05, 4.97e-05, 4.969e-05, 4.969e-05, 14024.61977096], [1516843020000, 4.968e-05, 4.968e-05, 4.967e-05, 4.967e-05, 1449.1279497], [1516843080000, 4.967e-05, 4.968e-05, 4.959e-05, 4.968e-05, 13053.805482], [1516843140000, 4.967e-05, 4.967e-05, 4.96e-05, 4.964e-05, 2785.52444941], [1516843200000, 4.964e-05, 4.964e-05, 4.959e-05, 4.959e-05, 4377.6621709], [1516843260000, 4.961e-05, 4.97e-05, 4.959e-05, 4.962e-05, 77254.9324405], [1516843320000, 4.962e-05, 4.98e-05, 4.952e-05, 4.962e-05, 26137.40022315], [1516843380000, 4.962e-05, 4.979e-05, 4.962e-05, 4.962e-05, 12638.60271936], [1516843440000, 4.962e-05, 4.978e-05, 4.952e-05, 4.962e-05, 15364.06871334], [1516843500000, 4.953e-05, 4.962e-05, 4.953e-05, 4.962e-05, 4355.21605753], [1516843560000, 4.954e-05, 4.962e-05, 4.954e-05, 4.955e-05, 11708.27801888], [1516843620000, 4.955e-05, 4.97e-05, 4.935e-05, 4.97e-05, 43111.94399984], [1516843680000, 4.97e-05, 4.97e-05, 4.934e-05, 4.97e-05, 18694.44554328], [1516843740000, 4.956e-05, 4.97e-05, 4.956e-05, 4.96e-05, 13365.84319622], [1516843800000, 4.969e-05, 4.97e-05, 4.969e-05, 4.97e-05, 13022.70367207], [1516843860000, 4.971e-05, 4.979e-05, 4.962e-05, 4.978e-05, 87036.87688494], [1516843920000, 4.978e-05, 4.978e-05, 4.963e-05, 4.978e-05, 37358.12349605], [1516843980000, 4.978e-05, 4.984e-05, 4.978e-05, 4.984e-05, 40298.31521953], [1516844040000, 4.983e-05, 4.993e-05, 4.983e-05, 4.993e-05, 3047.57654027], [1516844100000, 4.992e-05, 4.992e-05, 4.983e-05, 4.983e-05, 9344.86660065], [1516844160000, 4.988e-05, 4.988e-05, 4.98e-05, 4.98e-05, 13537.26467232], [1516844220000, 4.984e-05, 4.984e-05, 4.965e-05, 4.979e-05, 71985.599807], [1516844280000, 4.979e-05, 4.979e-05, 4.973e-05, 4.977e-05, 3405.56210398], [1516844340000, 4.973e-05, 4.973e-05, 4.963e-05, 4.963e-05, 22669.12025633], [1516844400000, 4.963e-05, 4.969e-05, 4.962e-05, 4.962e-05, 48150.80642567], [1516844460000, 4.962e-05, 4.962e-05, 4.959e-05, 4.962e-05, 9471.26060636], [1516844520000, 4.962e-05, 4.969e-05, 4.961e-05, 4.964e-05, 20324.52296159], [1516844580000, 4.964e-05, 4.969e-05, 4.962e-05, 4.969e-05, 74817.40097966], [1516844640000, 4.969e-05, 4.969e-05, 4.964e-05, 4.966e-05, 13958.42926959], [1516844700000, 4.966e-05, 4.978e-05, 4.966e-05, 4.978e-05, 11861.47127385], [1516844760000, 4.969e-05, 4.978e-05, 4.968e-05, 4.978e-05, 14994.84220728], [1516844820000, 4.984e-05, 4.992e-05, 4.973e-05, 4.978e-05, 24354.97573728], [1516844880000, 4.978e-05, 4.992e-05, 4.978e-05, 4.992e-05, 14817.8443997], [1516844940000, 4.992e-05, 4.993e-05, 4.979e-05, 4.982e-05, 17648.98104348], [1516845000000, 4.992e-05, 4.993e-05, 4.983e-05, 4.993e-05, 52871.91845144], [1516845060000, 4.985e-05, 4.996e-05, 4.985e-05, 4.996e-05, 16559.89648632], [1516845120000, 4.995e-05, 4.996e-05, 4.988e-05, 4.996e-05, 13789.06156952], [1516845180000, 4.997e-05, 4.999e-05, 4.996e-05, 4.999e-05, 71469.16905725], [1516845240000, 4.998e-05, 5.007e-05, 4.998e-05, 5.007e-05, 72823.3302521], [1516845300000, 5.006e-05, 5.013e-05, 4.999e-05, 5.013e-05, 88887.10450322], [1516845360000, 5.013e-05, 5.019e-05, 5.011e-05, 5.017e-05, 42801.53068998], [1516845420000, 5.019e-05, 5.027e-05, 5.017e-05, 5.027e-05, 26856.60187865], [1516845480000, 5.024e-05, 5.044e-05, 5.023e-05, 5.043e-05, 37221.76600907], [1516845540000, 5.03e-05, 5.042e-05, 5.028e-05, 5.03e-05, 6558.06176729], [1516845600000, 5.03e-05, 5.042e-05, 5.023e-05, 5.023e-05, 84589.45805497], [1516845660000, 5.025e-05, 5.042e-05, 5.023e-05, 5.023e-05, 65695.12435897], [1516845720000, 5.023e-05, 5.035e-05, 5.023e-05, 5.03e-05, 25215.72746974], [1516845780000, 5.029e-05, 5.044e-05, 5.019e-05, 5.024e-05, 143897.42317452], [1516845840000, 5.019e-05, 5.038e-05, 5.008e-05, 5.02e-05, 150254.20167361], [1516845900000, 5.02e-05, 5.035e-05, 5.001e-05, 5.006e-05, 139918.55623707], [1516845960000, 5.007e-05, 5.01e-05, 5.001e-05, 5.01e-05, 120094.83388875], [1516846020000, 5.009e-05, 5.02e-05, 5.002e-05, 5.007e-05, 35574.10597719], [1516846080000, 5.007e-05, 5.007e-05, 4.995e-05, 4.995e-05, 14679.67887482], [1516846140000, 4.995e-05, 5.003e-05, 4.981e-05, 4.988e-05, 64585.89446224], [1516846200000, 4.988e-05, 5e-05, 4.988e-05, 4.989e-05, 17833.65265451], [1516846260000, 4.989e-05, 4.999e-05, 4.988e-05, 4.988e-05, 1400.70264678], [1516846320000, 4.999e-05, 4.999e-05, 4.99e-05, 4.999e-05, 5275.97544477], [1516846380000, 4.999e-05, 4.999e-05, 4.989e-05, 4.991e-05, 20163.22719145], [1516846440000, 4.991e-05, 4.998e-05, 4.988e-05, 4.988e-05, 23968.40351074], [1516846500000, 4.988e-05, 4.999e-05, 4.97e-05, 4.971e-05, 40434.58321787], [1516846560000, 4.971e-05, 4.999e-05, 4.97e-05, 4.999e-05, 33760.2514517], [1516846620000, 4.996e-05, 5e-05, 4.971e-05, 4.972e-05, 59879.8733845], [1516846680000, 4.973e-05, 4.999e-05, 4.973e-05, 4.992e-05, 5499.58646403], [1516846740000, 4.976e-05, 4.992e-05, 4.976e-05, 4.988e-05, 18047.14757782], [1516846800000, 4.988e-05, 4.992e-05, 4.977e-05, 4.992e-05, 33767.67336324], [1516846860000, 4.99e-05, 4.992e-05, 4.989e-05, 4.989e-05, 28097.3908139], [1516846920000, 4.989e-05, 4.992e-05, 4.988e-05, 4.99e-05, 12115.96893309], [1516846980000, 4.99e-05, 4.99e-05, 4.988e-05, 4.989e-05, 16905.00439081], [1516847040000, 4.989e-05, 4.989e-05, 4.978e-05, 4.98e-05, 34446.69000555], [1516847100000, 4.98e-05, 4.986e-05, 4.976e-05, 4.985e-05, 55490.30158221], [1516847160000, 4.985e-05, 4.987e-05, 4.977e-05, 4.977e-05, 19599.64821861], [1516847220000, 4.985e-05, 4.987e-05, 4.98e-05, 4.986e-05, 3492.5716172], [1516847280000, 4.986e-05, 4.992e-05, 4.985e-05, 4.985e-05, 26832.33225466], [1516847340000, 4.985e-05, 4.992e-05, 4.97e-05, 4.992e-05, 100247.42859133], [1516847400000, 4.99e-05, 4.99e-05, 4.947e-05, 4.969e-05, 82958.55463523], [1516847460000, 4.969e-05, 4.969e-05, 4.952e-05, 4.968e-05, 26012.51500497], [1516847520000, 4.965e-05, 4.965e-05, 4.95e-05, 4.953e-05, 69723.52168919], [1516847580000, 4.95e-05, 4.964e-05, 4.95e-05, 4.95e-05, 19463.62451994], [1516847640000, 4.95e-05, 4.96e-05, 4.939e-05, 4.949e-05, 21447.42624357], [1516847700000, 4.949e-05, 4.949e-05, 4.921e-05, 4.937e-05, 25771.70110423], [1516847760000, 4.924e-05, 4.935e-05, 4.92e-05, 4.92e-05, 52447.05311184], [1516847820000, 4.92e-05, 4.933e-05, 4.916e-05, 4.933e-05, 145030.91288868], [1516847880000, 4.933e-05, 4.967e-05, 4.923e-05, 4.954e-05, 102873.98269655], [1516847940000, 4.924e-05, 4.965e-05, 4.924e-05, 4.945e-05, 11519.81706551], [1516848000000, 4.943e-05, 4.961e-05, 4.943e-05, 4.961e-05, 11858.82414833], [1516848060000, 4.946e-05, 4.946e-05, 4.945e-05, 4.946e-05, 13323.57061194], [1516848120000, 4.946e-05, 4.952e-05, 4.945e-05, 4.946e-05, 13881.94676731], [1516848180000, 4.952e-05, 4.965e-05, 4.923e-05, 4.923e-05, 66484.75996656], [1516848240000, 4.966e-05, 4.966e-05, 4.939e-05, 4.965e-05, 4694.04007831], [1516848300000, 4.955e-05, 4.965e-05, 4.955e-05, 4.964e-05, 8929.68860103], [1516848360000, 4.965e-05, 4.965e-05, 4.955e-05, 4.955e-05, 5776.30880953], [1516848420000, 4.955e-05, 4.958e-05, 4.921e-05, 4.923e-05, 26512.10094222], [1516848480000, 4.95e-05, 4.95e-05, 4.922e-05, 4.923e-05, 4690.68613493], [1516848540000, 4.923e-05, 4.924e-05, 4.921e-05, 4.924e-05, 12830.23246107], [1516848600000, 4.945e-05, 4.946e-05, 4.945e-05, 4.945e-05, 10209.59555106], [1516848660000, 4.945e-05, 4.949e-05, 4.923e-05, 4.923e-05, 17737.45523005], [1516848720000, 4.923e-05, 4.943e-05, 4.923e-05, 4.925e-05, 6357.23965044], [1516848780000, 4.925e-05, 4.943e-05, 4.923e-05, 4.943e-05, 837.79437767], [1516848840000, 4.943e-05, 4.943e-05, 4.908e-05, 4.925e-05, 16299.54134789], [1516848900000, 4.926e-05, 4.943e-05, 4.925e-05, 4.942e-05, 8767.13841892], [1516848960000, 4.942e-05, 4.949e-05, 4.942e-05, 4.944e-05, 24980.0240594], [1516849020000, 4.943e-05, 4.949e-05, 4.943e-05, 4.944e-05, 13234.67607275], [1516849080000, 4.944e-05, 4.949e-05, 4.944e-05, 4.949e-05, 7187.26594005], [1516849140000, 4.948e-05, 4.949e-05, 4.918e-05, 4.948e-05, 20435.25326984], [1516849200000, 4.948e-05, 4.948e-05, 4.938e-05, 4.938e-05, 15342.13159692], [1516849260000, 4.938e-05, 4.94e-05, 4.925e-05, 4.93e-05, 18284.01845899], [1516849320000, 4.938e-05, 4.94e-05, 4.911e-05, 4.938e-05, 57421.17579114], [1516849380000, 4.938e-05, 4.94e-05, 4.91e-05, 4.94e-05, 91980.61261745], [1516849440000, 4.938e-05, 4.949e-05, 4.931e-05, 4.949e-05, 133356.5701652], [1516849500000, 4.94e-05, 4.948e-05, 4.931e-05, 4.931e-05, 17564.78907421], [1516849560000, 4.932e-05, 4.949e-05, 4.932e-05, 4.948e-05, 10937.39482697], [1516849620000, 4.948e-05, 4.951e-05, 4.948e-05, 4.95e-05, 18985.90187652], [1516849680000, 4.95e-05, 4.954e-05, 4.95e-05, 4.95e-05, 98027.50950176], [1516849740000, 4.951e-05, 4.968e-05, 4.951e-05, 4.963e-05, 12397.22785166], [1516849800000, 4.955e-05, 4.968e-05, 4.95e-05, 4.951e-05, 58075.56539785], [1516849920000, 4.964e-05, 4.964e-05, 4.954e-05, 4.959e-05, 51547.69002331], [1516849980000, 4.96e-05, 4.98e-05, 4.959e-05, 4.98e-05, 55279.58784779], [1516850040000, 4.965e-05, 4.98e-05, 4.965e-05, 4.979e-05, 30280.68264994], [1516850100000, 4.978e-05, 4.98e-05, 4.953e-05, 4.976e-05, 84896.30032046], [1516850160000, 4.976e-05, 4.976e-05, 4.952e-05, 4.953e-05, 43170.98446379], [1516850220000, 4.954e-05, 4.972e-05, 4.952e-05, 4.972e-05, 2349.7753018], [1516850280000, 4.972e-05, 4.976e-05, 4.972e-05, 4.972e-05, 27976.12846223], [1516850340000, 4.972e-05, 4.972e-05, 4.953e-05, 4.953e-05, 5485.3407974], [1516850400000, 4.953e-05, 4.968e-05, 4.952e-05, 4.953e-05, 26714.9504526], [1516850460000, 4.953e-05, 4.958e-05, 4.94e-05, 4.958e-05, 101005.1489324], [1516850520000, 4.958e-05, 4.971e-05, 4.94e-05, 4.971e-05, 92138.88681172], [1516850580000, 4.971e-05, 4.972e-05, 4.971e-05, 4.971e-05, 9271.01413666], [1516850640000, 4.955e-05, 4.971e-05, 4.951e-05, 4.971e-05, 794.0636661], [1516850700000, 4.971e-05, 4.971e-05, 4.958e-05, 4.971e-05, 5909.087041], [1516850760000, 4.971e-05, 4.972e-05, 4.954e-05, 4.96e-05, 110381.87268649], [1516850820000, 4.97e-05, 4.97e-05, 4.961e-05, 4.961e-05, 5256.61977757], [1516850880000, 4.961e-05, 4.968e-05, 4.957e-05, 4.957e-05, 9247.81368897], [1516850940000, 4.957e-05, 4.988e-05, 4.957e-05, 4.988e-05, 75194.60341981], [1516851000000, 4.957e-05, 4.987e-05, 4.951e-05, 4.951e-05, 103246.56424753], [1516851060000, 4.956e-05, 4.971e-05, 4.951e-05, 4.971e-05, 5059.93576131], [1516851120000, 4.971e-05, 4.981e-05, 4.953e-05, 4.971e-05, 17768.30056282], [1516851180000, 4.954e-05, 4.97e-05, 4.954e-05, 4.969e-05, 39461.7297866], [1516851240000, 4.969e-05, 4.969e-05, 4.954e-05, 4.955e-05, 15667.98456294], [1516851300000, 4.956e-05, 4.964e-05, 4.94e-05, 4.95e-05, 171556.36696844], [1516851360000, 4.95e-05, 4.977e-05, 4.94e-05, 4.955e-05, 101104.71868834], [1516851420000, 4.95e-05, 4.95e-05, 4.943e-05, 4.944e-05, 6613.47198473], [1516851480000, 4.943e-05, 4.943e-05, 4.932e-05, 4.932e-05, 126839.40806672], [1516851540000, 4.941e-05, 4.95e-05, 4.94e-05, 4.95e-05, 7540.82253224], [1516851600000, 4.95e-05, 4.974e-05, 4.95e-05, 4.974e-05, 16049.0268653], [1516851660000, 4.974e-05, 4.974e-05, 4.944e-05, 4.945e-05, 2638.69507774], [1516851720000, 4.945e-05, 4.964e-05, 4.945e-05, 4.957e-05, 4957.71527465], [1516851780000, 4.957e-05, 4.96e-05, 4.945e-05, 4.959e-05, 26387.77168752], [1516851840000, 4.947e-05, 4.968e-05, 4.946e-05, 4.959e-05, 21416.40386429], [1516851900000, 4.959e-05, 4.968e-05, 4.947e-05, 4.967e-05, 25383.00621542], [1516851960000, 4.967e-05, 4.967e-05, 4.946e-05, 4.966e-05, 29122.49987124], [1516852020000, 4.965e-05, 4.965e-05, 4.963e-05, 4.963e-05, 685.79369753], [1516852080000, 4.962e-05, 4.962e-05, 4.95e-05, 4.962e-05, 818.32225513], [1516852140000, 4.962e-05, 4.962e-05, 4.945e-05, 4.95e-05, 20119.17716197], [1516852200000, 4.95e-05, 4.962e-05, 4.95e-05, 4.961e-05, 44055.872527], [1516852260000, 4.961e-05, 4.961e-05, 4.959e-05, 4.961e-05, 15982.27468029], [1516852320000, 4.96e-05, 4.961e-05, 4.95e-05, 4.96e-05, 13110.33040892], [1516852380000, 4.958e-05, 4.961e-05, 4.95e-05, 4.961e-05, 11215.1734865], [1516852440000, 4.961e-05, 4.97e-05, 4.96e-05, 4.97e-05, 33324.94650505], [1516852500000, 4.961e-05, 4.97e-05, 4.961e-05, 4.97e-05, 15492.04408295], [1516852560000, 4.964e-05, 4.97e-05, 4.963e-05, 4.97e-05, 27062.42296], [1516852620000, 4.97e-05, 4.973e-05, 4.963e-05, 4.964e-05, 10398.18915309], [1516852680000, 4.965e-05, 4.973e-05, 4.965e-05, 4.967e-05, 12009.76231688], [1516852740000, 4.968e-05, 4.975e-05, 4.968e-05, 4.969e-05, 7736.27422462], [1516852800000, 4.969e-05, 4.975e-05, 4.969e-05, 4.97e-05, 33760.39363566], [1516852860000, 4.97e-05, 4.974e-05, 4.968e-05, 4.969e-05, 63640.71163832], [1516852920000, 4.969e-05, 4.974e-05, 4.968e-05, 4.974e-05, 17969.73988772], [1516852980000, 4.973e-05, 4.974e-05, 4.968e-05, 4.974e-05, 20956.65382136], [1516853040000, 4.974e-05, 4.974e-05, 4.963e-05, 4.963e-05, 10758.70583529], [1516853100000, 4.963e-05, 4.968e-05, 4.951e-05, 4.96e-05, 18827.30557479], [1516853160000, 4.968e-05, 4.972e-05, 4.951e-05, 4.96e-05, 60123.80703038], [1516853220000, 4.954e-05, 4.96e-05, 4.954e-05, 4.96e-05, 13362.3227361], [1516853280000, 4.96e-05, 4.96e-05, 4.959e-05, 4.959e-05, 13820.24856161], [1516853340000, 4.959e-05, 4.959e-05, 4.955e-05, 4.955e-05, 6925.59043694], [1516853400000, 4.954e-05, 4.966e-05, 4.953e-05, 4.953e-05, 22623.89933719], [1516853460000, 4.966e-05, 4.973e-05, 4.953e-05, 4.953e-05, 9862.35373949], [1516853520000, 4.973e-05, 4.975e-05, 4.953e-05, 4.975e-05, 32267.53927677], [1516853580000, 4.975e-05, 4.987e-05, 4.975e-05, 4.987e-05, 24399.23108482], [1516853640000, 4.988e-05, 4.988e-05, 4.98e-05, 4.98e-05, 4588.933047], [1516853700000, 4.98e-05, 4.987e-05, 4.98e-05, 4.987e-05, 107973.2106762], [1516853760000, 4.987e-05, 4.987e-05, 4.982e-05, 4.987e-05, 105801.18198736], [1516853820000, 4.987e-05, 4.987e-05, 4.986e-05, 4.987e-05, 2674.61105519], [1516853880000, 4.987e-05, 4.988e-05, 4.986e-05, 4.988e-05, 110303.51183316], [1516853940000, 4.988e-05, 4.999e-05, 4.988e-05, 4.999e-05, 311412.52637803], [1516854000000, 4.999e-05, 5.014e-05, 4.999e-05, 5.014e-05, 92741.19590101], [1516854060000, 5.014e-05, 5.029e-05, 5.014e-05, 5.026e-05, 19745.63149301], [1516854120000, 5.026e-05, 5.037e-05, 5.026e-05, 5.031e-05, 40242.89681446], [1516854180000, 5.031e-05, 5.037e-05, 5.03e-05, 5.036e-05, 52847.26332545], [1516854240000, 5.034e-05, 5.037e-05, 5.03e-05, 5.032e-05, 26334.01985577], [1516854300000, 5.033e-05, 5.053e-05, 5.032e-05, 5.041e-05, 73392.69118117], [1516854360000, 5.05e-05, 5.07e-05, 5.031e-05, 5.07e-05, 196852.79205853], [1516854420000, 5.07e-05, 5.079e-05, 5.07e-05, 5.078e-05, 145046.33067876], [1516854480000, 5.078e-05, 5.11e-05, 5.076e-05, 5.1e-05, 186609.67760102], [1516854540000, 5.095e-05, 5.118e-05, 5.086e-05, 5.11e-05, 233290.76466438], [1516854600000, 5.111e-05, 5.131e-05, 5.11e-05, 5.131e-05, 135362.16161002], [1516854660000, 5.132e-05, 5.149e-05, 5.125e-05, 5.148e-05, 181811.22384861], [1516854720000, 5.148e-05, 5.15e-05, 5.131e-05, 5.131e-05, 156738.59437636], [1516854780000, 5.132e-05, 5.15e-05, 5.13e-05, 5.15e-05, 108145.9019053], [1516854840000, 5.151e-05, 5.172e-05, 5.151e-05, 5.172e-05, 24469.47576237], [1516854900000, 5.172e-05, 5.172e-05, 5.133e-05, 5.133e-05, 149949.69296612], [1516854960000, 5.133e-05, 5.139e-05, 5.12e-05, 5.122e-05, 103863.21527426], [1516855020000, 5.119e-05, 5.155e-05, 5.065e-05, 5.132e-05, 313984.4792421], [1516855080000, 5.091e-05, 5.132e-05, 5.079e-05, 5.107e-05, 31013.77984696], [1516855140000, 5.109e-05, 5.122e-05, 5.097e-05, 5.122e-05, 22545.25535597], [1516855200000, 5.121e-05, 5.139e-05, 5.121e-05, 5.139e-05, 7958.45587846], [1516855260000, 5.139e-05, 5.149e-05, 5.137e-05, 5.139e-05, 65795.65380557], [1516855320000, 5.139e-05, 5.15e-05, 5.139e-05, 5.149e-05, 39291.32785493], [1516855380000, 5.14e-05, 5.148e-05, 5.122e-05, 5.141e-05, 19646.08630582], [1516855440000, 5.141e-05, 5.141e-05, 5.122e-05, 5.122e-05, 30806.80006209], [1516855500000, 5.124e-05, 5.128e-05, 5.123e-05, 5.128e-05, 12145.89723141], [1516855560000, 5.125e-05, 5.139e-05, 5.125e-05, 5.126e-05, 15566.54931319], [1516855620000, 5.139e-05, 5.143e-05, 5.122e-05, 5.138e-05, 64189.56408589], [1516855680000, 5.137e-05, 5.137e-05, 5.117e-05, 5.135e-05, 36425.55790092], [1516855740000, 5.134e-05, 5.134e-05, 5.121e-05, 5.13e-05, 58536.66697498], [1516855800000, 5.13e-05, 5.135e-05, 5.13e-05, 5.134e-05, 23448.92650289], [1516855860000, 5.134e-05, 5.143e-05, 5.13e-05, 5.133e-05, 51138.34551157], [1516855920000, 5.133e-05, 5.143e-05, 5.13e-05, 5.14e-05, 36385.37013802], [1516855980000, 5.14e-05, 5.142e-05, 5.138e-05, 5.142e-05, 56824.18830026], [1516856040000, 5.142e-05, 5.148e-05, 5.139e-05, 5.148e-05, 17028.17948832], [1516856100000, 5.147e-05, 5.147e-05, 5.135e-05, 5.138e-05, 31077.91625587], [1516856160000, 5.135e-05, 5.135e-05, 5.117e-05, 5.12e-05, 59174.51281511], [1516856220000, 5.12e-05, 5.12e-05, 5.117e-05, 5.117e-05, 72069.86812881], [1516856280000, 5.117e-05, 5.121e-05, 5.117e-05, 5.121e-05, 23365.49518253], [1516856340000, 5.121e-05, 5.143e-05, 5.121e-05, 5.14e-05, 1925.25966402], [1516856400000, 5.134e-05, 5.15e-05, 5.126e-05, 5.14e-05, 83766.05444814], [1516856460000, 5.14e-05, 5.15e-05, 5.131e-05, 5.137e-05, 24805.92088212], [1516856520000, 5.137e-05, 5.148e-05, 5.126e-05, 5.133e-05, 66846.85995112], [1516856580000, 5.133e-05, 5.133e-05, 5.121e-05, 5.129e-05, 81592.82520365], [1516856640000, 5.13e-05, 5.13e-05, 5.1e-05, 5.129e-05, 68110.33767878], [1516856700000, 5.129e-05, 5.131e-05, 5.118e-05, 5.128e-05, 35676.78282024], [1516856760000, 5.128e-05, 5.133e-05, 5.118e-05, 5.129e-05, 17332.10506384], [1516856820000, 5.132e-05, 5.134e-05, 5.12e-05, 5.134e-05, 35378.54344017], [1516856880000, 5.133e-05, 5.134e-05, 5.125e-05, 5.125e-05, 44771.07978615], [1516856940000, 5.125e-05, 5.13e-05, 5.116e-05, 5.125e-05, 22126.53174468], [1516857000000, 5.12e-05, 5.125e-05, 5.11e-05, 5.116e-05, 97137.33943046], [1516857060000, 5.124e-05, 5.125e-05, 5.124e-05, 5.124e-05, 8813.28270208], [1516857120000, 5.124e-05, 5.124e-05, 5.103e-05, 5.103e-05, 103619.17048103], [1516857180000, 5.107e-05, 5.116e-05, 5.101e-05, 5.101e-05, 47464.26300839], [1516857240000, 5.116e-05, 5.116e-05, 5.107e-05, 5.116e-05, 27340.4611471], [1516857300000, 5.108e-05, 5.116e-05, 5.108e-05, 5.116e-05, 37980.35740897], [1516857360000, 5.116e-05, 5.119e-05, 5.107e-05, 5.109e-05, 31024.8148325], [1516857420000, 5.112e-05, 5.112e-05, 5.107e-05, 5.11e-05, 22560.46631276], [1516857480000, 5.11e-05, 5.115e-05, 5.107e-05, 5.11e-05, 46109.4044035], [1516857540000, 5.11e-05, 5.13e-05, 5.109e-05, 5.129e-05, 9127.08230442], [1516857600000, 5.122e-05, 5.129e-05, 5.122e-05, 5.123e-05, 29306.97164772], [1516857660000, 5.123e-05, 5.129e-05, 5.122e-05, 5.122e-05, 30216.75353756], [1516857720000, 5.129e-05, 5.129e-05, 5.122e-05, 5.123e-05, 6509.77811623], [1516857780000, 5.122e-05, 5.129e-05, 5.111e-05, 5.12e-05, 33438.14376068], [1516857840000, 5.112e-05, 5.128e-05, 5.111e-05, 5.128e-05, 20190.91012185], [1516857900000, 5.128e-05, 5.129e-05, 5.122e-05, 5.128e-05, 51732.3208525], [1516857960000, 5.126e-05, 5.135e-05, 5.122e-05, 5.128e-05, 88144.07134129], [1516858020000, 5.124e-05, 5.15e-05, 5.123e-05, 5.133e-05, 31021.88419145], [1516858080000, 5.134e-05, 5.144e-05, 5.122e-05, 5.13e-05, 64608.42844451], [1516858140000, 5.13e-05, 5.137e-05, 5.124e-05, 5.13e-05, 20474.28022762], [1516858200000, 5.13e-05, 5.139e-05, 5.13e-05, 5.136e-05, 33409.58320473], [1516858260000, 5.136e-05, 5.149e-05, 5.132e-05, 5.137e-05, 50602.36979783], [1516858320000, 5.147e-05, 5.15e-05, 5.137e-05, 5.149e-05, 126473.01811863], [1516858380000, 5.149e-05, 5.149e-05, 5.137e-05, 5.145e-05, 24811.67025355], [1516858440000, 5.145e-05, 5.152e-05, 5.145e-05, 5.152e-05, 35102.06761188], [1516858500000, 5.152e-05, 5.17e-05, 5.15e-05, 5.167e-05, 126119.89314979], [1516858560000, 5.159e-05, 5.16e-05, 5.146e-05, 5.15e-05, 122387.34718051], [1516858620000, 5.146e-05, 5.155e-05, 5.146e-05, 5.151e-05, 63834.33347641], [1516858680000, 5.151e-05, 5.157e-05, 5.15e-05, 5.151e-05, 104356.023303], [1516858740000, 5.151e-05, 5.151e-05, 5.146e-05, 5.151e-05, 113298.63223562], [1516858800000, 5.151e-05, 5.151e-05, 5.15e-05, 5.151e-05, 121232.05183114], [1516858860000, 5.151e-05, 5.157e-05, 5.151e-05, 5.157e-05, 57093.71585257], [1516858920000, 5.157e-05, 5.173e-05, 5.151e-05, 5.173e-05, 26688.91669679], [1516858980000, 5.171e-05, 5.175e-05, 5.151e-05, 5.155e-05, 77364.19751835], [1516859040000, 5.156e-05, 5.17e-05, 5.154e-05, 5.17e-05, 25836.6197071], [1516859100000, 5.173e-05, 5.18e-05, 5.173e-05, 5.18e-05, 62485.33404234], [1516859160000, 5.18e-05, 5.181e-05, 5.173e-05, 5.173e-05, 56955.10502012], [1516859220000, 5.18e-05, 5.18e-05, 5.17e-05, 5.177e-05, 18765.18644771], [1516859280000, 5.177e-05, 5.18e-05, 5.173e-05, 5.173e-05, 17258.78595542], [1516859340000, 5.176e-05, 5.183e-05, 5.176e-05, 5.183e-05, 42603.69867334], [1516859400000, 5.182e-05, 5.183e-05, 5.181e-05, 5.182e-05, 79996.61620234], [1516859460000, 5.183e-05, 5.199e-05, 5.181e-05, 5.198e-05, 94396.35765886], [1516859520000, 5.198e-05, 5.205e-05, 5.198e-05, 5.205e-05, 184994.40624317], [1516859580000, 5.205e-05, 5.23e-05, 5.205e-05, 5.23e-05, 67316.92290618], [1516859640000, 5.23e-05, 5.255e-05, 5.229e-05, 5.255e-05, 303517.92442088], [1516859700000, 5.254e-05, 5.281e-05, 5.254e-05, 5.275e-05, 231109.34563168], [1516859760000, 5.275e-05, 5.281e-05, 5.258e-05, 5.259e-05, 110471.38279627], [1516859820000, 5.269e-05, 5.274e-05, 5.257e-05, 5.258e-05, 46459.32671493], [1516859880000, 5.256e-05, 5.261e-05, 5.24e-05, 5.259e-05, 51677.41727001], [1516859940000, 5.258e-05, 5.285e-05, 5.257e-05, 5.28e-05, 36290.14244844], [1516860000000, 5.282e-05, 5.294e-05, 5.28e-05, 5.292e-05, 101857.6945549], [1516860060000, 5.294e-05, 5.296e-05, 5.29e-05, 5.296e-05, 111268.43291125], [1516860120000, 5.296e-05, 5.302e-05, 5.295e-05, 5.302e-05, 484128.33518552], [1516860180000, 5.302e-05, 5.32e-05, 5.302e-05, 5.306e-05, 153454.03794148], [1516860240000, 5.317e-05, 5.321e-05, 5.305e-05, 5.32e-05, 73817.66469034], [1516860300000, 5.321e-05, 5.325e-05, 5.32e-05, 5.325e-05, 72316.39183599], [1516860360000, 5.324e-05, 5.326e-05, 5.3e-05, 5.323e-05, 173728.8204757], [1516860420000, 5.323e-05, 5.323e-05, 5.295e-05, 5.295e-05, 100104.06812746], [1516860480000, 5.295e-05, 5.312e-05, 5.262e-05, 5.3e-05, 85771.85675334], [1516860540000, 5.264e-05, 5.298e-05, 5.259e-05, 5.28e-05, 86317.02987919], [1516860600000, 5.28e-05, 5.296e-05, 5.27e-05, 5.272e-05, 68648.57976645], [1516860660000, 5.272e-05, 5.286e-05, 5.272e-05, 5.286e-05, 66240.69593495], [1516860720000, 5.281e-05, 5.29e-05, 5.28e-05, 5.286e-05, 59587.57480767], [1516860780000, 5.286e-05, 5.31e-05, 5.281e-05, 5.304e-05, 171262.97183988], [1516860840000, 5.304e-05, 5.32e-05, 5.304e-05, 5.32e-05, 119853.93097135], [1516860900000, 5.323e-05, 5.326e-05, 5.316e-05, 5.326e-05, 162010.96546139], [1516860960000, 5.318e-05, 5.326e-05, 5.317e-05, 5.325e-05, 99161.69373547], [1516861020000, 5.325e-05, 5.328e-05, 5.325e-05, 5.328e-05, 27632.61249131], [1516861080000, 5.328e-05, 5.35e-05, 5.328e-05, 5.349e-05, 246723.1042283], [1516861140000, 5.35e-05, 5.376e-05, 5.35e-05, 5.375e-05, 635794.57798712], [1516861200000, 5.374e-05, 5.4e-05, 5.372e-05, 5.399e-05, 530359.41989196], [1516861260000, 5.398e-05, 5.399e-05, 5.385e-05, 5.394e-05, 161072.29368868], [1516861320000, 5.394e-05, 5.399e-05, 5.386e-05, 5.399e-05, 79112.50349553], [1516861380000, 5.399e-05, 5.407e-05, 5.398e-05, 5.407e-05, 398606.20897293], [1516861440000, 5.407e-05, 5.44e-05, 5.407e-05, 5.44e-05, 435357.6710753], [1516861500000, 5.436e-05, 5.449e-05, 5.436e-05, 5.449e-05, 524918.39852589], [1516861560000, 5.448e-05, 5.489e-05, 5.448e-05, 5.475e-05, 394290.44499717], [1516861620000, 5.487e-05, 5.49e-05, 5.46e-05, 5.48e-05, 625696.39826686], [1516861680000, 5.476e-05, 5.487e-05, 5.46e-05, 5.479e-05, 180856.60904445], [1516861740000, 5.479e-05, 5.479e-05, 5.418e-05, 5.42e-05, 114202.73365093], [1516861800000, 5.42e-05, 5.45e-05, 5.42e-05, 5.432e-05, 226439.14134632], [1516861860000, 5.432e-05, 5.438e-05, 5.387e-05, 5.392e-05, 389760.94473186], [1516861920000, 5.392e-05, 5.412e-05, 5.38e-05, 5.399e-05, 318008.1082473], [1516861980000, 5.399e-05, 5.4e-05, 5.372e-05, 5.4e-05, 237883.70994704], [1516862040000, 5.398e-05, 5.414e-05, 5.398e-05, 5.403e-05, 78315.4496836], [1516862100000, 5.404e-05, 5.417e-05, 5.4e-05, 5.417e-05, 144578.99890825], [1516862160000, 5.411e-05, 5.431e-05, 5.411e-05, 5.427e-05, 135868.11690469], [1516862220000, 5.429e-05, 5.43e-05, 5.414e-05, 5.42e-05, 155710.80025792], [1516862280000, 5.42e-05, 5.425e-05, 5.415e-05, 5.425e-05, 104592.25818911], [1516862340000, 5.42e-05, 5.425e-05, 5.401e-05, 5.407e-05, 141389.15155967], [1516862400000, 5.406e-05, 5.42e-05, 5.386e-05, 5.404e-05, 137891.3385668], [1516862460000, 5.404e-05, 5.404e-05, 5.394e-05, 5.401e-05, 102088.17555997], [1516862520000, 5.4e-05, 5.418e-05, 5.38e-05, 5.401e-05, 114094.39698591], [1516862580000, 5.402e-05, 5.414e-05, 5.377e-05, 5.395e-05, 84776.84707147], [1516862640000, 5.4e-05, 5.403e-05, 5.376e-05, 5.376e-05, 195922.18554279], [1516862700000, 5.374e-05, 5.376e-05, 5.329e-05, 5.33e-05, 113220.53816757], [1516862760000, 5.33e-05, 5.36e-05, 5.33e-05, 5.351e-05, 132243.08081012], [1516862820000, 5.352e-05, 5.376e-05, 5.352e-05, 5.376e-05, 41483.84997933], [1516862880000, 5.372e-05, 5.375e-05, 5.369e-05, 5.372e-05, 95367.16019209], [1516862940000, 5.372e-05, 5.372e-05, 5.365e-05, 5.372e-05, 36352.48205187], [1516863000000, 5.372e-05, 5.372e-05, 5.35e-05, 5.351e-05, 67033.69006911], [1516863060000, 5.368e-05, 5.368e-05, 5.332e-05, 5.368e-05, 70237.55517404], [1516863120000, 5.355e-05, 5.36e-05, 5.333e-05, 5.337e-05, 48026.6704978], [1516863180000, 5.348e-05, 5.348e-05, 5.333e-05, 5.337e-05, 54478.84343239], [1516863240000, 5.336e-05, 5.337e-05, 5.333e-05, 5.333e-05, 132267.8246106], [1516863300000, 5.333e-05, 5.333e-05, 5.3e-05, 5.31e-05, 102194.12997782], [1516863360000, 5.326e-05, 5.327e-05, 5.31e-05, 5.326e-05, 87102.71707821], [1516863420000, 5.326e-05, 5.366e-05, 5.312e-05, 5.362e-05, 208076.77296974], [1516863480000, 5.363e-05, 5.363e-05, 5.334e-05, 5.336e-05, 69288.08150958], [1516863540000, 5.336e-05, 5.355e-05, 5.311e-05, 5.311e-05, 85606.56838722], [1516863600000, 5.321e-05, 5.33e-05, 5.294e-05, 5.313e-05, 117315.38309636], [1516863660000, 5.31e-05, 5.321e-05, 5.309e-05, 5.319e-05, 55210.72661253], [1516863720000, 5.319e-05, 5.33e-05, 5.319e-05, 5.33e-05, 100212.35338087], [1516863780000, 5.33e-05, 5.353e-05, 5.33e-05, 5.347e-05, 78794.85146923], [1516863840000, 5.347e-05, 5.35e-05, 5.346e-05, 5.349e-05, 37846.79811949], [1516863900000, 5.348e-05, 5.359e-05, 5.347e-05, 5.353e-05, 75291.01919132], [1516863960000, 5.359e-05, 5.359e-05, 5.353e-05, 5.357e-05, 20294.48585104], [1516864020000, 5.357e-05, 5.357e-05, 5.347e-05, 5.347e-05, 77283.90965721], [1516864080000, 5.347e-05, 5.358e-05, 5.334e-05, 5.358e-05, 92851.71708392], [1516864140000, 5.358e-05, 5.358e-05, 5.323e-05, 5.337e-05, 11391.98541318], [1516864200000, 5.324e-05, 5.353e-05, 5.324e-05, 5.331e-05, 24944.93026703], [1516864260000, 5.352e-05, 5.36e-05, 5.333e-05, 5.359e-05, 58985.67140538], [1516864320000, 5.368e-05, 5.372e-05, 5.368e-05, 5.372e-05, 39594.69418277], [1516864380000, 5.372e-05, 5.386e-05, 5.372e-05, 5.386e-05, 112493.31653115], [1516864440000, 5.383e-05, 5.4e-05, 5.383e-05, 5.399e-05, 68758.69558845], [1516864500000, 5.391e-05, 5.398e-05, 5.359e-05, 5.372e-05, 168919.07811223], [1516864560000, 5.373e-05, 5.373e-05, 5.359e-05, 5.364e-05, 27029.28599343], [1516864620000, 5.362e-05, 5.362e-05, 5.323e-05, 5.329e-05, 165583.46937399], [1516864680000, 5.331e-05, 5.354e-05, 5.326e-05, 5.352e-05, 25397.81871504], [1516864740000, 5.351e-05, 5.351e-05, 5.332e-05, 5.35e-05, 30851.54864358], [1516864800000, 5.335e-05, 5.345e-05, 5.332e-05, 5.335e-05, 10264.02736869], [1516864860000, 5.335e-05, 5.345e-05, 5.335e-05, 5.34e-05, 13410.00954762], [1516864920000, 5.341e-05, 5.345e-05, 5.34e-05, 5.345e-05, 39480.90379865], [1516864980000, 5.344e-05, 5.345e-05, 5.335e-05, 5.338e-05, 17798.48956698], [1516865040000, 5.335e-05, 5.338e-05, 5.331e-05, 5.335e-05, 25622.70969205], [1516865100000, 5.331e-05, 5.344e-05, 5.33e-05, 5.338e-05, 71779.52629986], [1516865160000, 5.338e-05, 5.338e-05, 5.307e-05, 5.311e-05, 253148.14996656], [1516865220000, 5.308e-05, 5.329e-05, 5.292e-05, 5.299e-05, 83018.21653081], [1516865280000, 5.292e-05, 5.315e-05, 5.292e-05, 5.308e-05, 98943.88113577], [1516865340000, 5.308e-05, 5.329e-05, 5.308e-05, 5.31e-05, 25612.53041938], [1516865400000, 5.309e-05, 5.33e-05, 5.309e-05, 5.33e-05, 39446.34493404], [1516865460000, 5.317e-05, 5.35e-05, 5.317e-05, 5.342e-05, 151707.94766566], [1516865520000, 5.34e-05, 5.35e-05, 5.335e-05, 5.339e-05, 97004.24160844], [1516865580000, 5.339e-05, 5.35e-05, 5.339e-05, 5.344e-05, 65712.17063332], [1516865640000, 5.348e-05, 5.348e-05, 5.341e-05, 5.347e-05, 13842.48203432], [1516865700000, 5.347e-05, 5.361e-05, 5.342e-05, 5.351e-05, 43751.3537279], [1516865760000, 5.352e-05, 5.371e-05, 5.352e-05, 5.368e-05, 20695.69061413], [1516865820000, 5.371e-05, 5.38e-05, 5.371e-05, 5.379e-05, 39518.65611501], [1516865880000, 5.381e-05, 5.4e-05, 5.379e-05, 5.394e-05, 78460.6918737], [1516865940000, 5.394e-05, 5.4e-05, 5.365e-05, 5.365e-05, 87116.10069998], [1516866000000, 5.365e-05, 5.371e-05, 5.359e-05, 5.367e-05, 28584.50149485], [1516866060000, 5.371e-05, 5.375e-05, 5.359e-05, 5.36e-05, 20259.02396836], [1516866120000, 5.375e-05, 5.375e-05, 5.36e-05, 5.375e-05, 2237.11776744], [1516866180000, 5.36e-05, 5.37e-05, 5.36e-05, 5.36e-05, 10847.66856481], [1516866240000, 5.36e-05, 5.37e-05, 5.36e-05, 5.369e-05, 23892.86618267], [1516866300000, 5.369e-05, 5.369e-05, 5.368e-05, 5.368e-05, 6534.08365146], [1516866360000, 5.368e-05, 5.369e-05, 5.36e-05, 5.369e-05, 12148.25040451], [1516866420000, 5.369e-05, 5.372e-05, 5.368e-05, 5.371e-05, 41616.66830558], [1516866480000, 5.372e-05, 5.374e-05, 5.372e-05, 5.374e-05, 9738.06877093], [1516866540000, 5.374e-05, 5.381e-05, 5.374e-05, 5.381e-05, 15033.91209067], [1516866600000, 5.381e-05, 5.385e-05, 5.38e-05, 5.385e-05, 11639.8844625], [1516866660000, 5.384e-05, 5.384e-05, 5.38e-05, 5.383e-05, 20125.64333435], [1516866720000, 5.383e-05, 5.384e-05, 5.372e-05, 5.372e-05, 31469.26114759], [1516866780000, 5.372e-05, 5.376e-05, 5.37e-05, 5.376e-05, 20694.56558892], [1516866840000, 5.376e-05, 5.382e-05, 5.376e-05, 5.382e-05, 12900.93787576], [1516866900000, 5.378e-05, 5.391e-05, 5.378e-05, 5.391e-05, 13270.2212844], [1516866960000, 5.395e-05, 5.396e-05, 5.376e-05, 5.388e-05, 54814.09681772], [1516867020000, 5.388e-05, 5.396e-05, 5.378e-05, 5.378e-05, 75131.0560596], [1516867080000, 5.378e-05, 5.4e-05, 5.377e-05, 5.399e-05, 14107.64124927], [1516867140000, 5.383e-05, 5.398e-05, 5.378e-05, 5.395e-05, 49000.81825156], [1516867200000, 5.393e-05, 5.393e-05, 5.377e-05, 5.392e-05, 46975.06759328], [1516867260000, 5.38e-05, 5.392e-05, 5.379e-05, 5.38e-05, 17807.51208687], [1516867320000, 5.39e-05, 5.39e-05, 5.378e-05, 5.378e-05, 49848.10407312], [1516867380000, 5.378e-05, 5.385e-05, 5.374e-05, 5.374e-05, 25470.67216361], [1516867440000, 5.374e-05, 5.374e-05, 5.372e-05, 5.372e-05, 19819.06769748], [1516867500000, 5.372e-05, 5.374e-05, 5.371e-05, 5.371e-05, 40392.34343992], [1516867560000, 5.371e-05, 5.372e-05, 5.368e-05, 5.368e-05, 14152.51606704], [1516867620000, 5.368e-05, 5.368e-05, 5.365e-05, 5.368e-05, 7180.10366204], [1516867680000, 5.365e-05, 5.365e-05, 5.347e-05, 5.36e-05, 7388.51791697], [1516867740000, 5.358e-05, 5.365e-05, 5.348e-05, 5.365e-05, 17544.84092611], [1516867800000, 5.365e-05, 5.365e-05, 5.347e-05, 5.347e-05, 30031.62040313], [1516867860000, 5.345e-05, 5.345e-05, 5.31e-05, 5.335e-05, 8791.57640399], [1516867920000, 5.333e-05, 5.335e-05, 5.31e-05, 5.31e-05, 16690.420926], [1516867980000, 5.33e-05, 5.33e-05, 5.31e-05, 5.32e-05, 7444.6039846], [1516868040000, 5.32e-05, 5.33e-05, 5.315e-05, 5.33e-05, 84339.80771], [1516868100000, 5.33e-05, 5.335e-05, 5.311e-05, 5.315e-05, 46350.24941852], [1516868160000, 5.315e-05, 5.337e-05, 5.312e-05, 5.337e-05, 35073.56109675], [1516868220000, 5.337e-05, 5.337e-05, 5.318e-05, 5.323e-05, 12809.43142733], [1516868280000, 5.323e-05, 5.33e-05, 5.297e-05, 5.297e-05, 184396.14638662], [1516868340000, 5.306e-05, 5.319e-05, 5.292e-05, 5.301e-05, 157135.83285806], [1516868400000, 5.301e-05, 5.33e-05, 5.298e-05, 5.33e-05, 157708.00386967], [1516868460000, 5.321e-05, 5.33e-05, 5.293e-05, 5.3e-05, 71467.14995951], [1516868520000, 5.301e-05, 5.329e-05, 5.292e-05, 5.321e-05, 64748.18464565], [1516868580000, 5.301e-05, 5.321e-05, 5.3e-05, 5.306e-05, 38587.02973587], [1516868640000, 5.306e-05, 5.321e-05, 5.296e-05, 5.321e-05, 97810.78264119], [1516868700000, 5.32e-05, 5.327e-05, 5.28e-05, 5.297e-05, 43998.27196349], [1516868760000, 5.297e-05, 5.326e-05, 5.297e-05, 5.326e-05, 34733.20185565], [1516868820000, 5.3e-05, 5.324e-05, 5.297e-05, 5.298e-05, 32367.48023303], [1516868880000, 5.319e-05, 5.32e-05, 5.297e-05, 5.297e-05, 43371.06390109], [1516868940000, 5.297e-05, 5.3e-05, 5.291e-05, 5.297e-05, 73974.38488611], [1516869000000, 5.298e-05, 5.321e-05, 5.297e-05, 5.321e-05, 249810.88987608], [1516869060000, 5.301e-05, 5.321e-05, 5.301e-05, 5.32e-05, 92222.68877748], [1516869120000, 5.325e-05, 5.329e-05, 5.32e-05, 5.325e-05, 126875.99084239], [1516869180000, 5.325e-05, 5.33e-05, 5.32e-05, 5.32e-05, 79639.25448886], [1516869240000, 5.325e-05, 5.33e-05, 5.32e-05, 5.33e-05, 74407.47385651], [1516869300000, 5.33e-05, 5.335e-05, 5.324e-05, 5.33e-05, 15921.31932125], [1516869360000, 5.33e-05, 5.33e-05, 5.309e-05, 5.325e-05, 40261.73164209], [1516869420000, 5.325e-05, 5.325e-05, 5.3e-05, 5.321e-05, 14293.20358376], [1516869480000, 5.321e-05, 5.321e-05, 5.305e-05, 5.32e-05, 49141.1323606], [1516869540000, 5.31e-05, 5.32e-05, 5.306e-05, 5.317e-05, 62145.94843556], [1516869600000, 5.311e-05, 5.315e-05, 5.287e-05, 5.3e-05, 135959.72691964], [1516869660000, 5.297e-05, 5.306e-05, 5.288e-05, 5.3e-05, 23651.76974488], [1516869720000, 5.3e-05, 5.303e-05, 5.3e-05, 5.302e-05, 6549.43684181], [1516869780000, 5.302e-05, 5.324e-05, 5.302e-05, 5.324e-05, 57699.07494668], [1516869840000, 5.324e-05, 5.324e-05, 5.3e-05, 5.313e-05, 4874.03335835], [1516869900000, 5.313e-05, 5.313e-05, 5.3e-05, 5.3e-05, 132778.72294901], [1516869960000, 5.3e-05, 5.312e-05, 5.292e-05, 5.312e-05, 84205.4118335], [1516870020000, 5.312e-05, 5.315e-05, 5.309e-05, 5.315e-05, 166842.61011888], [1516870080000, 5.315e-05, 5.33e-05, 5.309e-05, 5.309e-05, 44561.05594454], [1516870140000, 5.324e-05, 5.329e-05, 5.324e-05, 5.324e-05, 20241.18131925], [1516870200000, 5.324e-05, 5.334e-05, 5.31e-05, 5.334e-05, 13818.1299859], [1516870260000, 5.334e-05, 5.334e-05, 5.312e-05, 5.312e-05, 15285.98410698], [1516870320000, 5.332e-05, 5.334e-05, 5.312e-05, 5.328e-05, 31300.89963477], [1516870380000, 5.335e-05, 5.35e-05, 5.335e-05, 5.348e-05, 151851.73754519], [1516870440000, 5.348e-05, 5.356e-05, 5.348e-05, 5.35e-05, 33244.63453472], [1516870500000, 5.35e-05, 5.356e-05, 5.35e-05, 5.356e-05, 9046.43163899], [1516870560000, 5.356e-05, 5.362e-05, 5.355e-05, 5.362e-05, 91567.95154574], [1516870620000, 5.362e-05, 5.372e-05, 5.361e-05, 5.37e-05, 123738.54727594], [1516870680000, 5.369e-05, 5.37e-05, 5.362e-05, 5.37e-05, 32901.53579078], [1516870740000, 5.37e-05, 5.372e-05, 5.37e-05, 5.371e-05, 40029.22418291], [1516870800000, 5.371e-05, 5.372e-05, 5.37e-05, 5.372e-05, 25492.57967737], [1516870860000, 5.372e-05, 5.372e-05, 5.361e-05, 5.362e-05, 38007.95787446], [1516870920000, 5.362e-05, 5.369e-05, 5.356e-05, 5.356e-05, 47601.08282581], [1516870980000, 5.356e-05, 5.357e-05, 5.332e-05, 5.356e-05, 36803.38421842], [1516871040000, 5.335e-05, 5.35e-05, 5.335e-05, 5.335e-05, 15292.45442219], [1516871100000, 5.334e-05, 5.335e-05, 5.334e-05, 5.334e-05, 7769.87064663], [1516871160000, 5.333e-05, 5.356e-05, 5.312e-05, 5.312e-05, 35091.8009245], [1516871220000, 5.33e-05, 5.335e-05, 5.33e-05, 5.335e-05, 19712.8129302], [1516871280000, 5.312e-05, 5.331e-05, 5.309e-05, 5.309e-05, 15619.81194887], [1516871340000, 5.309e-05, 5.327e-05, 5.302e-05, 5.308e-05, 24833.81384718], [1516871400000, 5.305e-05, 5.327e-05, 5.303e-05, 5.31e-05, 12271.67707731], [1516871460000, 5.315e-05, 5.33e-05, 5.31e-05, 5.319e-05, 4692.6732602], [1516871520000, 5.319e-05, 5.33e-05, 5.319e-05, 5.32e-05, 7466.76890295], [1516871580000, 5.32e-05, 5.33e-05, 5.319e-05, 5.32e-05, 27760.06121365], [1516871640000, 5.327e-05, 5.327e-05, 5.32e-05, 5.327e-05, 6844.41497035], [1516871700000, 5.327e-05, 5.33e-05, 5.32e-05, 5.328e-05, 16748.91806707], [1516871760000, 5.328e-05, 5.346e-05, 5.327e-05, 5.33e-05, 11123.62495659], [1516871820000, 5.346e-05, 5.346e-05, 5.33e-05, 5.333e-05, 34073.52577042], [1516871880000, 5.346e-05, 5.365e-05, 5.346e-05, 5.365e-05, 10645.6767231], [1516871940000, 5.365e-05, 5.366e-05, 5.335e-05, 5.341e-05, 38694.39418951], [1516872000000, 5.35e-05, 5.366e-05, 5.341e-05, 5.35e-05, 9385.60054411], [1516872060000, 5.36e-05, 5.372e-05, 5.35e-05, 5.35e-05, 66369.34275381], [1516872120000, 5.36e-05, 5.373e-05, 5.343e-05, 5.365e-05, 18097.39601811], [1516872180000, 5.361e-05, 5.372e-05, 5.35e-05, 5.363e-05, 62812.84116816], [1516872240000, 5.372e-05, 5.375e-05, 5.351e-05, 5.375e-05, 17149.16329418], [1516872300000, 5.375e-05, 5.388e-05, 5.375e-05, 5.388e-05, 20425.72713619], [1516872360000, 5.388e-05, 5.4e-05, 5.388e-05, 5.4e-05, 56911.98795658], [1516872420000, 5.4e-05, 5.417e-05, 5.4e-05, 5.414e-05, 40600.27793438], [1516872480000, 5.417e-05, 5.42e-05, 5.416e-05, 5.42e-05, 13251.22041662], [1516872540000, 5.42e-05, 5.428e-05, 5.419e-05, 5.428e-05, 137357.2411456], [1516872600000, 5.426e-05, 5.428e-05, 5.422e-05, 5.424e-05, 70850.9480467], [1516872660000, 5.423e-05, 5.44e-05, 5.423e-05, 5.436e-05, 102059.9849924], [1516872720000, 5.439e-05, 5.439e-05, 5.41e-05, 5.439e-05, 52417.64031071], [1516872780000, 5.439e-05, 5.456e-05, 5.414e-05, 5.455e-05, 218888.51168696], [1516872840000, 5.456e-05, 5.465e-05, 5.449e-05, 5.464e-05, 132496.92681331], [1516872900000, 5.464e-05, 5.465e-05, 5.442e-05, 5.442e-05, 70112.96814136], [1516872960000, 5.465e-05, 5.465e-05, 5.458e-05, 5.464e-05, 20422.90933589], [1516873020000, 5.465e-05, 5.465e-05, 5.415e-05, 5.442e-05, 67054.70320815], [1516873080000, 5.428e-05, 5.443e-05, 5.428e-05, 5.441e-05, 91191.60796293], [1516873140000, 5.441e-05, 5.46e-05, 5.441e-05, 5.442e-05, 11953.44313406], [1516873200000, 5.443e-05, 5.457e-05, 5.408e-05, 5.45e-05, 73997.333449], [1516873260000, 5.45e-05, 5.45e-05, 5.444e-05, 5.45e-05, 16174.43963171], [1516873320000, 5.45e-05, 5.45e-05, 5.444e-05, 5.448e-05, 4237.18311517], [1516873380000, 5.444e-05, 5.448e-05, 5.442e-05, 5.442e-05, 90369.41309683], [1516873440000, 5.442e-05, 5.442e-05, 5.42e-05, 5.442e-05, 18447.02789295], [1516873500000, 5.442e-05, 5.444e-05, 5.44e-05, 5.444e-05, 36164.41147701], [1516873560000, 5.444e-05, 5.448e-05, 5.442e-05, 5.444e-05, 4252.80435899], [1516873620000, 5.444e-05, 5.45e-05, 5.442e-05, 5.45e-05, 69270.48131637], [1516873680000, 5.45e-05, 5.464e-05, 5.446e-05, 5.461e-05, 121296.01411558], [1516873740000, 5.461e-05, 5.462e-05, 5.45e-05, 5.462e-05, 57942.18253208], [1516873800000, 5.462e-05, 5.479e-05, 5.447e-05, 5.479e-05, 171959.27070339], [1516873860000, 5.474e-05, 5.481e-05, 5.472e-05, 5.48e-05, 159694.8137699], [1516873920000, 5.481e-05, 5.49e-05, 5.48e-05, 5.489e-05, 38685.12862894], [1516873980000, 5.488e-05, 5.489e-05, 5.446e-05, 5.475e-05, 35485.77870065], [1516874040000, 5.47e-05, 5.475e-05, 5.459e-05, 5.462e-05, 29524.7908355], [1516874100000, 5.474e-05, 5.474e-05, 5.463e-05, 5.474e-05, 10034.36399825], [1516874160000, 5.474e-05, 5.488e-05, 5.474e-05, 5.488e-05, 37714.7474298], [1516874220000, 5.486e-05, 5.489e-05, 5.485e-05, 5.488e-05, 39780.35539901], [1516874280000, 5.488e-05, 5.49e-05, 5.486e-05, 5.486e-05, 46175.39161634], [1516874340000, 5.489e-05, 5.49e-05, 5.486e-05, 5.49e-05, 51580.65796538], [1516874400000, 5.49e-05, 5.49e-05, 5.489e-05, 5.489e-05, 65193.54262172], [1516874460000, 5.49e-05, 5.49e-05, 5.475e-05, 5.489e-05, 13023.77707331], [1516874520000, 5.489e-05, 5.499e-05, 5.488e-05, 5.499e-05, 307195.55293436], [1516874580000, 5.499e-05, 5.499e-05, 5.495e-05, 5.496e-05, 170116.58870172], [1516874640000, 5.496e-05, 5.5e-05, 5.495e-05, 5.5e-05, 57586.16672722], [1516874700000, 5.5e-05, 5.5e-05, 5.495e-05, 5.495e-05, 74725.66060753], [1516874760000, 5.495e-05, 5.5e-05, 5.495e-05, 5.496e-05, 66500.66921306], [1516874820000, 5.499e-05, 5.5e-05, 5.497e-05, 5.5e-05, 51418.09338791], [1516874880000, 5.5e-05, 5.5e-05, 5.499e-05, 5.5e-05, 102066.26535452], [1516874940000, 5.5e-05, 5.5e-05, 5.498e-05, 5.498e-05, 127561.58700302], [1516875000000, 5.499e-05, 5.524e-05, 5.499e-05, 5.52e-05, 448286.76826235], [1516875060000, 5.52e-05, 5.523e-05, 5.511e-05, 5.523e-05, 88536.75573748], [1516875120000, 5.523e-05, 5.533e-05, 5.516e-05, 5.531e-05, 82615.97688844], [1516875180000, 5.532e-05, 5.535e-05, 5.53e-05, 5.535e-05, 75788.95737524], [1516875240000, 5.534e-05, 5.54e-05, 5.533e-05, 5.534e-05, 45739.18049091], [1516875300000, 5.535e-05, 5.549e-05, 5.535e-05, 5.549e-05, 18687.84566679], [1516875360000, 5.547e-05, 5.55e-05, 5.547e-05, 5.55e-05, 51393.07427118], [1516875420000, 5.55e-05, 5.55e-05, 5.534e-05, 5.547e-05, 74582.74783855], [1516875480000, 5.547e-05, 5.549e-05, 5.534e-05, 5.547e-05, 70437.21857508], [1516875540000, 5.548e-05, 5.549e-05, 5.523e-05, 5.53e-05, 65364.74113355], [1516875600000, 5.53e-05, 5.535e-05, 5.523e-05, 5.535e-05, 37839.75783368], [1516875660000, 5.535e-05, 5.55e-05, 5.534e-05, 5.548e-05, 99250.08416576], [1516875720000, 5.535e-05, 5.548e-05, 5.53e-05, 5.545e-05, 41541.70946558], [1516875780000, 5.544e-05, 5.544e-05, 5.53e-05, 5.542e-05, 12957.77798804], [1516875840000, 5.537e-05, 5.542e-05, 5.536e-05, 5.541e-05, 31148.85171557], [1516875900000, 5.541e-05, 5.542e-05, 5.54e-05, 5.54e-05, 22899.39878537], [1516875960000, 5.542e-05, 5.544e-05, 5.536e-05, 5.541e-05, 17752.94737086], [1516876020000, 5.541e-05, 5.543e-05, 5.539e-05, 5.543e-05, 17616.54545684], [1516876080000, 5.543e-05, 5.543e-05, 5.536e-05, 5.538e-05, 32563.84888002], [1516876140000, 5.537e-05, 5.548e-05, 5.536e-05, 5.542e-05, 99872.20525775], [1516876200000, 5.548e-05, 5.55e-05, 5.539e-05, 5.547e-05, 43962.30390315], [1516876260000, 5.547e-05, 5.548e-05, 5.539e-05, 5.54e-05, 81612.41974869], [1516876320000, 5.544e-05, 5.55e-05, 5.542e-05, 5.55e-05, 140023.31732396], [1516876380000, 5.548e-05, 5.55e-05, 5.524e-05, 5.547e-05, 192956.91318604], [1516876440000, 5.547e-05, 5.548e-05, 5.499e-05, 5.522e-05, 131333.8659927], [1516876500000, 5.522e-05, 5.546e-05, 5.503e-05, 5.533e-05, 33254.38488387], [1516876560000, 5.533e-05, 5.533e-05, 5.512e-05, 5.512e-05, 28994.17064217], [1516876620000, 5.513e-05, 5.527e-05, 5.499e-05, 5.511e-05, 81966.95379012], [1516876680000, 5.511e-05, 5.512e-05, 5.498e-05, 5.5e-05, 26913.67009377], [1516876740000, 5.5e-05, 5.511e-05, 5.495e-05, 5.5e-05, 156782.87326064], [1516876800000, 5.5e-05, 5.511e-05, 5.498e-05, 5.498e-05, 34660.24310843], [1516876860000, 5.498e-05, 5.498e-05, 5.477e-05, 5.478e-05, 20076.83066249], [1516876920000, 5.478e-05, 5.48e-05, 5.468e-05, 5.468e-05, 75801.38482925], [1516876980000, 5.468e-05, 5.469e-05, 5.454e-05, 5.46e-05, 68477.20498117], [1516877040000, 5.456e-05, 5.462e-05, 5.454e-05, 5.46e-05, 13951.59071074], [1516877100000, 5.461e-05, 5.468e-05, 5.461e-05, 5.462e-05, 35916.06733543], [1516877160000, 5.461e-05, 5.47e-05, 5.451e-05, 5.469e-05, 96306.15421739], [1516877220000, 5.465e-05, 5.49e-05, 5.454e-05, 5.49e-05, 222053.14315157], [1516877280000, 5.48e-05, 5.52e-05, 5.47e-05, 5.52e-05, 52765.93594671], [1516877340000, 5.515e-05, 5.532e-05, 5.486e-05, 5.51e-05, 58154.78340739], [1516877400000, 5.514e-05, 5.514e-05, 5.484e-05, 5.497e-05, 101660.18924842], [1516877460000, 5.504e-05, 5.505e-05, 5.489e-05, 5.49e-05, 70888.79045142], [1516877520000, 5.493e-05, 5.515e-05, 5.489e-05, 5.515e-05, 13625.62441442], [1516877580000, 5.525e-05, 5.526e-05, 5.515e-05, 5.515e-05, 114201.04200917], [1516877640000, 5.515e-05, 5.539e-05, 5.5e-05, 5.532e-05, 22870.6544722], [1516877700000, 5.532e-05, 5.545e-05, 5.53e-05, 5.54e-05, 27311.7182948], [1516877760000, 5.533e-05, 5.545e-05, 5.532e-05, 5.544e-05, 82817.50549079], [1516877820000, 5.545e-05, 5.549e-05, 5.544e-05, 5.549e-05, 48426.14292867], [1516877880000, 5.549e-05, 5.555e-05, 5.547e-05, 5.555e-05, 60049.13757085], [1516877940000, 5.554e-05, 5.565e-05, 5.554e-05, 5.56e-05, 128772.71128862], [1516878000000, 5.565e-05, 5.572e-05, 5.55e-05, 5.572e-05, 255652.85286334], [1516878060000, 5.565e-05, 5.58e-05, 5.557e-05, 5.562e-05, 212068.26184006], [1516878120000, 5.562e-05, 5.576e-05, 5.548e-05, 5.563e-05, 133227.91351349], [1516878180000, 5.563e-05, 5.568e-05, 5.547e-05, 5.555e-05, 87416.00916404], [1516878240000, 5.548e-05, 5.564e-05, 5.547e-05, 5.556e-05, 41311.84909529], [1516878300000, 5.556e-05, 5.568e-05, 5.55e-05, 5.55e-05, 12860.13007801], [1516878360000, 5.564e-05, 5.564e-05, 5.55e-05, 5.563e-05, 7236.65221713], [1516878420000, 5.556e-05, 5.563e-05, 5.556e-05, 5.563e-05, 33396.69479517], [1516878480000, 5.563e-05, 5.577e-05, 5.563e-05, 5.576e-05, 45505.03245983], [1516878540000, 5.571e-05, 5.577e-05, 5.571e-05, 5.577e-05, 20741.51587034], [1516878600000, 5.58e-05, 5.582e-05, 5.577e-05, 5.577e-05, 28491.59870808], [1516878660000, 5.581e-05, 5.581e-05, 5.576e-05, 5.577e-05, 16131.39503082], [1516878720000, 5.576e-05, 5.579e-05, 5.562e-05, 5.574e-05, 57511.31551315], [1516878780000, 5.574e-05, 5.589e-05, 5.57e-05, 5.588e-05, 27109.93357688], [1516878840000, 5.586e-05, 5.594e-05, 5.579e-05, 5.593e-05, 96955.85604438], [1516878900000, 5.589e-05, 5.595e-05, 5.588e-05, 5.595e-05, 68606.77140903], [1516878960000, 5.595e-05, 5.595e-05, 5.593e-05, 5.595e-05, 33601.36617745], [1516879020000, 5.595e-05, 5.599e-05, 5.576e-05, 5.596e-05, 136002.44981309], [1516879080000, 5.596e-05, 5.596e-05, 5.565e-05, 5.586e-05, 80843.08684466], [1516879140000, 5.586e-05, 5.6e-05, 5.565e-05, 5.576e-05, 137277.71095472], [1516879200000, 5.577e-05, 5.595e-05, 5.576e-05, 5.595e-05, 31116.16915337], [1516879260000, 5.595e-05, 5.598e-05, 5.595e-05, 5.596e-05, 26851.00769673], [1516879320000, 5.599e-05, 5.6e-05, 5.597e-05, 5.6e-05, 31525.56175847], [1516879380000, 5.6e-05, 5.622e-05, 5.6e-05, 5.62e-05, 392424.91414812], [1516879440000, 5.62e-05, 5.632e-05, 5.611e-05, 5.625e-05, 73636.57670271], [1516879500000, 5.632e-05, 5.638e-05, 5.625e-05, 5.632e-05, 98368.84097314], [1516879560000, 5.638e-05, 5.646e-05, 5.632e-05, 5.646e-05, 44068.54433566], [1516879620000, 5.643e-05, 5.646e-05, 5.642e-05, 5.646e-05, 29732.26574088], [1516879680000, 5.647e-05, 5.666e-05, 5.646e-05, 5.664e-05, 61577.07973857], [1516879740000, 5.665e-05, 5.675e-05, 5.663e-05, 5.673e-05, 62948.16568434], [1516879800000, 5.673e-05, 5.673e-05, 5.643e-05, 5.643e-05, 83380.38996095], [1516879860000, 5.64e-05, 5.664e-05, 5.63e-05, 5.642e-05, 64307.86682675], [1516879920000, 5.642e-05, 5.664e-05, 5.641e-05, 5.664e-05, 29146.06425157], [1516879980000, 5.662e-05, 5.671e-05, 5.637e-05, 5.662e-05, 177130.02519231], [1516880040000, 5.662e-05, 5.675e-05, 5.662e-05, 5.675e-05, 40086.99334922], [1516880100000, 5.675e-05, 5.689e-05, 5.672e-05, 5.689e-05, 80165.74014059], [1516880160000, 5.689e-05, 5.696e-05, 5.689e-05, 5.696e-05, 126184.74604759], [1516880220000, 5.696e-05, 5.71e-05, 5.695e-05, 5.71e-05, 256778.31057342], [1516880280000, 5.707e-05, 5.727e-05, 5.707e-05, 5.726e-05, 149192.88967263], [1516880340000, 5.727e-05, 5.74e-05, 5.703e-05, 5.713e-05, 352165.85186545], [1516880400000, 5.71e-05, 5.713e-05, 5.69e-05, 5.697e-05, 201500.31304867], [1516880460000, 5.69e-05, 5.69e-05, 5.665e-05, 5.67e-05, 61172.49446287], [1516880520000, 5.669e-05, 5.683e-05, 5.662e-05, 5.662e-05, 109572.16969307], [1516880580000, 5.662e-05, 5.697e-05, 5.65e-05, 5.697e-05, 203989.32225475], [1516880640000, 5.697e-05, 5.718e-05, 5.676e-05, 5.715e-05, 38916.96508568], [1516880700000, 5.714e-05, 5.715e-05, 5.697e-05, 5.702e-05, 108811.50855974], [1516880760000, 5.702e-05, 5.722e-05, 5.678e-05, 5.714e-05, 114422.78349599], [1516880820000, 5.714e-05, 5.73e-05, 5.7e-05, 5.73e-05, 84104.59264576], [1516880880000, 5.73e-05, 5.73e-05, 5.714e-05, 5.728e-05, 183469.68900338], [1516880940000, 5.729e-05, 5.738e-05, 5.728e-05, 5.733e-05, 157039.69279753], [1516881000000, 5.734e-05, 5.74e-05, 5.73e-05, 5.733e-05, 243547.84064916], [1516881060000, 5.733e-05, 5.739e-05, 5.728e-05, 5.728e-05, 158619.59243111], [1516881120000, 5.729e-05, 5.73e-05, 5.716e-05, 5.73e-05, 131690.3265259], [1516881180000, 5.728e-05, 5.74e-05, 5.7e-05, 5.7e-05, 143105.73062248], [1516881240000, 5.716e-05, 5.717e-05, 5.688e-05, 5.694e-05, 268522.58546741], [1516881300000, 5.694e-05, 5.717e-05, 5.673e-05, 5.71e-05, 149606.08831955], [1516881360000, 5.71e-05, 5.711e-05, 5.675e-05, 5.679e-05, 115779.9747212], [1516881420000, 5.678e-05, 5.714e-05, 5.662e-05, 5.679e-05, 92138.92588561], [1516881480000, 5.677e-05, 5.7e-05, 5.663e-05, 5.677e-05, 83419.53688149], [1516881540000, 5.699e-05, 5.699e-05, 5.674e-05, 5.675e-05, 49779.64337178], [1516881600000, 5.674e-05, 5.68e-05, 5.661e-05, 5.662e-05, 98880.1611729], [1516881660000, 5.662e-05, 5.662e-05, 5.631e-05, 5.631e-05, 49154.37242617], [1516881720000, 5.631e-05, 5.631e-05, 5.578e-05, 5.598e-05, 172790.99036713], [1516881780000, 5.598e-05, 5.631e-05, 5.588e-05, 5.628e-05, 114231.24450954], [1516881840000, 5.629e-05, 5.631e-05, 5.599e-05, 5.6e-05, 113878.21494532], [1516881900000, 5.599e-05, 5.6e-05, 5.59e-05, 5.591e-05, 129612.25268486], [1516881960000, 5.591e-05, 5.598e-05, 5.591e-05, 5.591e-05, 100885.70396814], [1516882020000, 5.59e-05, 5.6e-05, 5.59e-05, 5.599e-05, 261432.25567121], [1516882080000, 5.599e-05, 5.61e-05, 5.599e-05, 5.607e-05, 153095.16269523], [1516882140000, 5.607e-05, 5.625e-05, 5.603e-05, 5.625e-05, 117840.7418363], [1516882200000, 5.625e-05, 5.643e-05, 5.611e-05, 5.643e-05, 10804.98969057], [1516882260000, 5.643e-05, 5.67e-05, 5.628e-05, 5.668e-05, 116416.82277036], [1516882320000, 5.668e-05, 5.668e-05, 5.65e-05, 5.652e-05, 78774.44932098], [1516882380000, 5.663e-05, 5.67e-05, 5.63e-05, 5.65e-05, 95171.62652198], [1516882440000, 5.649e-05, 5.66e-05, 5.632e-05, 5.636e-05, 7248.73487195], [1516882500000, 5.636e-05, 5.651e-05, 5.635e-05, 5.647e-05, 37734.45684712], [1516882560000, 5.647e-05, 5.668e-05, 5.64e-05, 5.647e-05, 31065.16762004], [1516882620000, 5.647e-05, 5.647e-05, 5.607e-05, 5.607e-05, 90031.25302621], [1516882680000, 5.63e-05, 5.63e-05, 5.6e-05, 5.602e-05, 205097.75866329], [1516882740000, 5.604e-05, 5.631e-05, 5.601e-05, 5.631e-05, 286910.86749877], [1516882800000, 5.631e-05, 5.643e-05, 5.6e-05, 5.638e-05, 236294.70322917], [1516882860000, 5.64e-05, 5.641e-05, 5.626e-05, 5.633e-05, 153434.97528191], [1516882920000, 5.641e-05, 5.657e-05, 5.64e-05, 5.641e-05, 157811.45225225], [1516882980000, 5.641e-05, 5.65e-05, 5.64e-05, 5.64e-05, 61900.01247317], [1516883040000, 5.64e-05, 5.652e-05, 5.616e-05, 5.616e-05, 7631.15725724], [1516883100000, 5.616e-05, 5.626e-05, 5.616e-05, 5.62e-05, 16203.77757771], [1516883160000, 5.626e-05, 5.626e-05, 5.62e-05, 5.626e-05, 8386.6721387], [1516883220000, 5.625e-05, 5.626e-05, 5.62e-05, 5.62e-05, 91593.07101664], [1516883280000, 5.62e-05, 5.625e-05, 5.618e-05, 5.624e-05, 39572.5375682], [1516883340000, 5.624e-05, 5.659e-05, 5.624e-05, 5.627e-05, 55582.68730611], [1516883400000, 5.641e-05, 5.641e-05, 5.627e-05, 5.627e-05, 26399.84591374], [1516883460000, 5.627e-05, 5.645e-05, 5.627e-05, 5.64e-05, 32246.8802578], [1516883520000, 5.64e-05, 5.645e-05, 5.637e-05, 5.637e-05, 16068.98024089], [1516883580000, 5.637e-05, 5.645e-05, 5.637e-05, 5.64e-05, 45747.41683829], [1516883640000, 5.64e-05, 5.652e-05, 5.64e-05, 5.65e-05, 80626.98845939], [1516883700000, 5.65e-05, 5.658e-05, 5.65e-05, 5.658e-05, 40216.27212597], [1516883760000, 5.658e-05, 5.668e-05, 5.658e-05, 5.667e-05, 24732.44594606], [1516883820000, 5.667e-05, 5.675e-05, 5.66e-05, 5.661e-05, 34613.54703065], [1516883880000, 5.675e-05, 5.675e-05, 5.665e-05, 5.673e-05, 86623.88157319], [1516883940000, 5.673e-05, 5.675e-05, 5.665e-05, 5.67e-05, 98385.03877252], [1516884000000, 5.673e-05, 5.682e-05, 5.665e-05, 5.665e-05, 195443.53076681], [1516884060000, 5.665e-05, 5.67e-05, 5.65e-05, 5.65e-05, 196532.76926801], [1516884120000, 5.67e-05, 5.67e-05, 5.63e-05, 5.65e-05, 28772.91969557], [1516884180000, 5.65e-05, 5.671e-05, 5.65e-05, 5.671e-05, 2426.79983874], [1516884240000, 5.671e-05, 5.671e-05, 5.65e-05, 5.655e-05, 32270.1822181], [1516884300000, 5.655e-05, 5.67e-05, 5.655e-05, 5.67e-05, 10716.32682424], [1516884360000, 5.669e-05, 5.67e-05, 5.665e-05, 5.667e-05, 29676.80022041], [1516884420000, 5.669e-05, 5.67e-05, 5.65e-05, 5.669e-05, 57764.54998061], [1516884480000, 5.669e-05, 5.669e-05, 5.627e-05, 5.65e-05, 74876.70601649], [1516884540000, 5.65e-05, 5.669e-05, 5.633e-05, 5.652e-05, 29704.9285323], [1516884600000, 5.635e-05, 5.652e-05, 5.627e-05, 5.627e-05, 22440.23642555], [1516884660000, 5.627e-05, 5.627e-05, 5.6e-05, 5.601e-05, 124912.24362025], [1516884720000, 5.601e-05, 5.618e-05, 5.601e-05, 5.615e-05, 20195.93827709], [1516884780000, 5.615e-05, 5.615e-05, 5.6e-05, 5.6e-05, 35461.57882436], [1516884840000, 5.6e-05, 5.6e-05, 5.59e-05, 5.591e-05, 57426.58034979], [1516884900000, 5.591e-05, 5.591e-05, 5.573e-05, 5.576e-05, 69496.76065467], [1516884960000, 5.576e-05, 5.59e-05, 5.575e-05, 5.578e-05, 52349.97066965], [1516885020000, 5.589e-05, 5.597e-05, 5.578e-05, 5.581e-05, 88892.83344053], [1516885080000, 5.581e-05, 5.593e-05, 5.556e-05, 5.561e-05, 274462.48090841], [1516885140000, 5.561e-05, 5.568e-05, 5.542e-05, 5.561e-05, 252030.2752526], [1516885200000, 5.561e-05, 5.576e-05, 5.543e-05, 5.55e-05, 262933.52948861], [1516885260000, 5.551e-05, 5.561e-05, 5.544e-05, 5.561e-05, 228339.17057174], [1516885320000, 5.561e-05, 5.577e-05, 5.54e-05, 5.557e-05, 355799.34879438], [1516885380000, 5.558e-05, 5.576e-05, 5.557e-05, 5.57e-05, 125663.81235996], [1516885440000, 5.57e-05, 5.594e-05, 5.568e-05, 5.584e-05, 73964.09808355], [1516885500000, 5.594e-05, 5.594e-05, 5.587e-05, 5.588e-05, 44522.75385116], [1516885560000, 5.588e-05, 5.592e-05, 5.577e-05, 5.592e-05, 36213.1749073], [1516885620000, 5.588e-05, 5.59e-05, 5.572e-05, 5.583e-05, 30172.91624588], [1516885680000, 5.575e-05, 5.583e-05, 5.564e-05, 5.57e-05, 23927.5132632], [1516885740000, 5.57e-05, 5.581e-05, 5.569e-05, 5.577e-05, 146108.18537384], [1516885800000, 5.574e-05, 5.584e-05, 5.574e-05, 5.584e-05, 94984.35779425], [1516885860000, 5.584e-05, 5.586e-05, 5.583e-05, 5.583e-05, 12425.70163867], [1516885920000, 5.583e-05, 5.584e-05, 5.569e-05, 5.569e-05, 39126.06284397], [1516885980000, 5.57e-05, 5.584e-05, 5.569e-05, 5.58e-05, 14258.17674914], [1516886040000, 5.576e-05, 5.584e-05, 5.576e-05, 5.584e-05, 25590.2002924], [1516886100000, 5.584e-05, 5.59e-05, 5.584e-05, 5.59e-05, 24576.60855524], [1516886160000, 5.59e-05, 5.605e-05, 5.59e-05, 5.605e-05, 27260.63210497], [1516886220000, 5.605e-05, 5.618e-05, 5.6e-05, 5.61e-05, 63705.66317084], [1516886280000, 5.61e-05, 5.615e-05, 5.602e-05, 5.602e-05, 38846.56740119], [1516886340000, 5.61e-05, 5.611e-05, 5.594e-05, 5.608e-05, 47010.5127874], [1516886400000, 5.608e-05, 5.609e-05, 5.595e-05, 5.608e-05, 55560.47917186], [1516886460000, 5.607e-05, 5.609e-05, 5.607e-05, 5.609e-05, 23309.38438211], [1516886520000, 5.609e-05, 5.609e-05, 5.607e-05, 5.607e-05, 13892.66434457], [1516886580000, 5.608e-05, 5.61e-05, 5.607e-05, 5.609e-05, 27940.76066435], [1516886640000, 5.609e-05, 5.609e-05, 5.594e-05, 5.607e-05, 78764.18304354], [1516886700000, 5.608e-05, 5.609e-05, 5.607e-05, 5.609e-05, 6103.53119976], [1516886760000, 5.609e-05, 5.609e-05, 5.607e-05, 5.609e-05, 24112.88239577], [1516886820000, 5.609e-05, 5.61e-05, 5.607e-05, 5.607e-05, 8265.31483113], [1516886880000, 5.595e-05, 5.596e-05, 5.594e-05, 5.594e-05, 18577.40193649], [1516886940000, 5.595e-05, 5.609e-05, 5.595e-05, 5.596e-05, 17310.19832025], [1516887000000, 5.605e-05, 5.605e-05, 5.597e-05, 5.597e-05, 2317.81588182], [1516887060000, 5.597e-05, 5.602e-05, 5.597e-05, 5.599e-05, 15935.04405816], [1516887120000, 5.605e-05, 5.605e-05, 5.597e-05, 5.602e-05, 8991.06636067], [1516887180000, 5.598e-05, 5.6e-05, 5.596e-05, 5.596e-05, 24349.76798699], [1516887240000, 5.6e-05, 5.603e-05, 5.595e-05, 5.601e-05, 52615.99598822], [1516887300000, 5.601e-05, 5.601e-05, 5.595e-05, 5.596e-05, 4786.38315585], [1516887360000, 5.6e-05, 5.6e-05, 5.592e-05, 5.593e-05, 137702.38780859], [1516887420000, 5.595e-05, 5.6e-05, 5.593e-05, 5.593e-05, 5101.91440261], [1516887480000, 5.594e-05, 5.598e-05, 5.593e-05, 5.598e-05, 18080.18574075], [1516887540000, 5.598e-05, 5.6e-05, 5.595e-05, 5.6e-05, 20938.86571069], [1516887600000, 5.598e-05, 5.598e-05, 5.595e-05, 5.598e-05, 38482.57630762], [1516887660000, 5.598e-05, 5.598e-05, 5.596e-05, 5.598e-05, 21398.40084412], [1516887720000, 5.598e-05, 5.6e-05, 5.595e-05, 5.597e-05, 23239.66290597], [1516887780000, 5.598e-05, 5.6e-05, 5.597e-05, 5.6e-05, 4924.88982168], [1516887840000, 5.6e-05, 5.6e-05, 5.598e-05, 5.6e-05, 6594.26499506], [1516887900000, 5.598e-05, 5.6e-05, 5.598e-05, 5.6e-05, 7983.53207626], [1516887960000, 5.6e-05, 5.6e-05, 5.599e-05, 5.6e-05, 56474.78320571], [1516888020000, 5.6e-05, 5.61e-05, 5.599e-05, 5.61e-05, 27693.19264496], [1516888080000, 5.61e-05, 5.61e-05, 5.6e-05, 5.601e-05, 10339.85938458], [1516888140000, 5.601e-05, 5.611e-05, 5.6e-05, 5.611e-05, 35457.60964504], [1516888200000, 5.611e-05, 5.62e-05, 5.61e-05, 5.62e-05, 18166.36829045], [1516888260000, 5.62e-05, 5.633e-05, 5.62e-05, 5.627e-05, 48331.51804702], [1516888320000, 5.632e-05, 5.638e-05, 5.632e-05, 5.638e-05, 86662.65533182], [1516888380000, 5.632e-05, 5.638e-05, 5.63e-05, 5.63e-05, 76742.45497147], [1516888440000, 5.633e-05, 5.633e-05, 5.62e-05, 5.627e-05, 104021.14183873], [1516888500000, 5.627e-05, 5.635e-05, 5.622e-05, 5.629e-05, 42795.11646427], [1516888560000, 5.635e-05, 5.635e-05, 5.627e-05, 5.629e-05, 48495.67566437], [1516888620000, 5.629e-05, 5.63e-05, 5.629e-05, 5.629e-05, 66009.657712], [1516888680000, 5.63e-05, 5.63e-05, 5.629e-05, 5.629e-05, 70670.4398159], [1516888740000, 5.63e-05, 5.64e-05, 5.629e-05, 5.639e-05, 59381.65868777], [1516888800000, 5.639e-05, 5.64e-05, 5.627e-05, 5.627e-05, 129127.66731616], [1516888860000, 5.627e-05, 5.629e-05, 5.62e-05, 5.628e-05, 29837.01930583], [1516888920000, 5.625e-05, 5.635e-05, 5.625e-05, 5.635e-05, 11165.86967356], [1516888980000, 5.629e-05, 5.64e-05, 5.625e-05, 5.639e-05, 25648.82504057], [1516889040000, 5.638e-05, 5.64e-05, 5.629e-05, 5.64e-05, 122933.40652771], [1516889100000, 5.64e-05, 5.64e-05, 5.626e-05, 5.638e-05, 22878.26383144], [1516889160000, 5.638e-05, 5.638e-05, 5.63e-05, 5.63e-05, 19487.27399867], [1516889220000, 5.63e-05, 5.635e-05, 5.628e-05, 5.628e-05, 21824.68035013], [1516889280000, 5.628e-05, 5.629e-05, 5.627e-05, 5.629e-05, 5527.85379888], [1516889340000, 5.633e-05, 5.64e-05, 5.631e-05, 5.635e-05, 25331.35575589], [1516889400000, 5.643e-05, 5.649e-05, 5.635e-05, 5.635e-05, 17586.27303461], [1516889460000, 5.635e-05, 5.643e-05, 5.632e-05, 5.642e-05, 23328.90950269], [1516889520000, 5.643e-05, 5.648e-05, 5.631e-05, 5.631e-05, 73805.04436225], [1516889580000, 5.639e-05, 5.644e-05, 5.631e-05, 5.631e-05, 22115.94245112], [1516889640000, 5.64e-05, 5.643e-05, 5.64e-05, 5.64e-05, 24557.5982666], [1516889700000, 5.64e-05, 5.64e-05, 5.629e-05, 5.629e-05, 41593.14555445], [1516889760000, 5.629e-05, 5.629e-05, 5.62e-05, 5.62e-05, 39376.35036301], [1516889820000, 5.62e-05, 5.625e-05, 5.618e-05, 5.618e-05, 72747.39091384], [1516889880000, 5.62e-05, 5.62e-05, 5.615e-05, 5.618e-05, 6302.72692371], [1516889940000, 5.618e-05, 5.618e-05, 5.612e-05, 5.614e-05, 25418.31395299], [1516890000000, 5.614e-05, 5.615e-05, 5.612e-05, 5.613e-05, 13348.3266383], [1516890060000, 5.613e-05, 5.614e-05, 5.613e-05, 5.613e-05, 22531.62483466], [1516890120000, 5.613e-05, 5.614e-05, 5.613e-05, 5.614e-05, 16279.45691594], [1516890180000, 5.613e-05, 5.614e-05, 5.61e-05, 5.612e-05, 9938.38879052], [1516890240000, 5.612e-05, 5.613e-05, 5.61e-05, 5.61e-05, 8639.56652621], [1516890300000, 5.612e-05, 5.612e-05, 5.61e-05, 5.611e-05, 14062.77765809], [1516890360000, 5.611e-05, 5.613e-05, 5.61e-05, 5.611e-05, 21752.41183467], [1516890420000, 5.611e-05, 5.613e-05, 5.605e-05, 5.613e-05, 37251.3056121], [1516890480000, 5.61e-05, 5.612e-05, 5.61e-05, 5.612e-05, 28128.66068275], [1516890540000, 5.612e-05, 5.614e-05, 5.604e-05, 5.613e-05, 63612.70475101], [1516890600000, 5.613e-05, 5.613e-05, 5.603e-05, 5.607e-05, 131312.01942267], [1516890660000, 5.607e-05, 5.621e-05, 5.607e-05, 5.621e-05, 58428.74254423], [1516890720000, 5.622e-05, 5.643e-05, 5.613e-05, 5.633e-05, 33967.61470568], [1516890780000, 5.623e-05, 5.642e-05, 5.612e-05, 5.614e-05, 31036.57886255], [1516890840000, 5.614e-05, 5.623e-05, 5.611e-05, 5.621e-05, 81458.61175436], [1516890900000, 5.62e-05, 5.631e-05, 5.603e-05, 5.621e-05, 66692.88400632], [1516890960000, 5.629e-05, 5.629e-05, 5.62e-05, 5.62e-05, 44875.07389568], [1516891020000, 5.62e-05, 5.62e-05, 5.603e-05, 5.612e-05, 44781.10954093], [1516891080000, 5.612e-05, 5.612e-05, 5.603e-05, 5.603e-05, 17561.58432025], [1516891140000, 5.612e-05, 5.612e-05, 5.603e-05, 5.61e-05, 17611.70376233], [1516891200000, 5.605e-05, 5.612e-05, 5.605e-05, 5.611e-05, 12182.38771259], [1516891260000, 5.611e-05, 5.62e-05, 5.605e-05, 5.618e-05, 151358.04490193], [1516891320000, 5.619e-05, 5.621e-05, 5.618e-05, 5.619e-05, 14125.1034154], [1516891380000, 5.62e-05, 5.62e-05, 5.618e-05, 5.618e-05, 53416.2491387], [1516891440000, 5.618e-05, 5.62e-05, 5.618e-05, 5.618e-05, 167685.3518837], [1516891500000, 5.618e-05, 5.62e-05, 5.61e-05, 5.61e-05, 36318.53980386], [1516891560000, 5.615e-05, 5.615e-05, 5.6e-05, 5.6e-05, 183939.34449899], [1516891620000, 5.597e-05, 5.618e-05, 5.595e-05, 5.606e-05, 51130.93360762], [1516891680000, 5.597e-05, 5.605e-05, 5.587e-05, 5.587e-05, 69670.06122288], [1516891740000, 5.594e-05, 5.594e-05, 5.587e-05, 5.587e-05, 28931.82368498], [1516891800000, 5.588e-05, 5.588e-05, 5.585e-05, 5.587e-05, 28134.84645972], [1516891860000, 5.585e-05, 5.587e-05, 5.584e-05, 5.585e-05, 3059.24510018], [1516891920000, 5.584e-05, 5.584e-05, 5.576e-05, 5.576e-05, 15005.19845538], [1516891980000, 5.576e-05, 5.576e-05, 5.57e-05, 5.57e-05, 64247.6148432], [1516892040000, 5.57e-05, 5.57e-05, 5.56e-05, 5.569e-05, 48806.75382007], [1516892100000, 5.561e-05, 5.573e-05, 5.561e-05, 5.573e-05, 68224.90568047], [1516892160000, 5.569e-05, 5.58e-05, 5.569e-05, 5.573e-05, 13646.96762436], [1516892220000, 5.573e-05, 5.575e-05, 5.566e-05, 5.57e-05, 42696.18831756], [1516892280000, 5.571e-05, 5.573e-05, 5.57e-05, 5.572e-05, 10756.52092556], [1516892340000, 5.572e-05, 5.579e-05, 5.571e-05, 5.575e-05, 2525.55404707], [1516892400000, 5.575e-05, 5.579e-05, 5.575e-05, 5.577e-05, 28349.8498224], [1516892460000, 5.577e-05, 5.578e-05, 5.575e-05, 5.576e-05, 37013.45102772], [1516892520000, 5.575e-05, 5.579e-05, 5.575e-05, 5.579e-05, 44590.24102204], [1516892580000, 5.578e-05, 5.578e-05, 5.577e-05, 5.577e-05, 20591.55470805], [1516892640000, 5.577e-05, 5.577e-05, 5.566e-05, 5.566e-05, 27035.68727067], [1516892700000, 5.566e-05, 5.571e-05, 5.55e-05, 5.56e-05, 37250.63308273], [1516892760000, 5.56e-05, 5.56e-05, 5.55e-05, 5.555e-05, 20393.07172234], [1516892820000, 5.549e-05, 5.553e-05, 5.5e-05, 5.52e-05, 211201.88920598], [1516892880000, 5.525e-05, 5.525e-05, 5.498e-05, 5.498e-05, 214547.57203086], [1516892940000, 5.5e-05, 5.5e-05, 5.49e-05, 5.49e-05, 72703.54060336], [1516893000000, 5.49e-05, 5.5e-05, 5.49e-05, 5.5e-05, 55001.54124983], [1516893060000, 5.499e-05, 5.5e-05, 5.499e-05, 5.5e-05, 148785.67787033], [1516893120000, 5.501e-05, 5.52e-05, 5.5e-05, 5.52e-05, 13957.06762492], [1516893180000, 5.519e-05, 5.519e-05, 5.515e-05, 5.516e-05, 13100.32333617], [1516893240000, 5.516e-05, 5.516e-05, 5.493e-05, 5.494e-05, 138971.35295329], [1516893300000, 5.493e-05, 5.516e-05, 5.48e-05, 5.499e-05, 75688.62043837], [1516893360000, 5.499e-05, 5.52e-05, 5.481e-05, 5.51e-05, 65691.83767535], [1516893420000, 5.51e-05, 5.516e-05, 5.509e-05, 5.516e-05, 14179.49386143], [1516893480000, 5.516e-05, 5.525e-05, 5.516e-05, 5.52e-05, 3786.36217076], [1516893540000, 5.52e-05, 5.525e-05, 5.481e-05, 5.5e-05, 59892.59316985], [1516893600000, 5.517e-05, 5.519e-05, 5.482e-05, 5.5e-05, 41871.96267082], [1516893660000, 5.5e-05, 5.517e-05, 5.484e-05, 5.487e-05, 18772.79058622], [1516893720000, 5.495e-05, 5.499e-05, 5.487e-05, 5.499e-05, 31479.39490456], [1516893780000, 5.499e-05, 5.5e-05, 5.495e-05, 5.5e-05, 28695.06039323], [1516893840000, 5.5e-05, 5.5e-05, 5.484e-05, 5.484e-05, 34927.89607871], [1516893900000, 5.482e-05, 5.487e-05, 5.48e-05, 5.48e-05, 40091.65263588], [1516893960000, 5.478e-05, 5.48e-05, 5.477e-05, 5.477e-05, 14034.98675465], [1516894020000, 5.477e-05, 5.478e-05, 5.476e-05, 5.476e-05, 25887.33312711], [1516894080000, 5.476e-05, 5.478e-05, 5.451e-05, 5.477e-05, 29988.74052932], [1516894140000, 5.476e-05, 5.476e-05, 5.45e-05, 5.468e-05, 83275.52451422], [1516894200000, 5.467e-05, 5.47e-05, 5.45e-05, 5.452e-05, 36145.21251152], [1516894260000, 5.452e-05, 5.452e-05, 5.432e-05, 5.435e-05, 67131.12059085], [1516894320000, 5.434e-05, 5.434e-05, 5.421e-05, 5.434e-05, 239271.26973809], [1516894380000, 5.434e-05, 5.434e-05, 5.4e-05, 5.429e-05, 252226.53470891], [1516894440000, 5.416e-05, 5.433e-05, 5.416e-05, 5.432e-05, 55347.00301827], [1516894500000, 5.432e-05, 5.432e-05, 5.416e-05, 5.416e-05, 48752.51740372], [1516894560000, 5.416e-05, 5.425e-05, 5.416e-05, 5.418e-05, 36239.10242197], [1516894620000, 5.419e-05, 5.434e-05, 5.419e-05, 5.434e-05, 185659.45450911], [1516894680000, 5.433e-05, 5.442e-05, 5.433e-05, 5.442e-05, 17385.40745564], [1516894740000, 5.441e-05, 5.442e-05, 5.44e-05, 5.441e-05, 20439.55351622], [1516894800000, 5.44e-05, 5.441e-05, 5.438e-05, 5.439e-05, 23838.95747197], [1516894860000, 5.439e-05, 5.44e-05, 5.437e-05, 5.44e-05, 22221.84708463], [1516894920000, 5.44e-05, 5.441e-05, 5.438e-05, 5.438e-05, 31354.80166628], [1516894980000, 5.44e-05, 5.44e-05, 5.434e-05, 5.434e-05, 19291.91272626], [1516895040000, 5.434e-05, 5.44e-05, 5.428e-05, 5.428e-05, 31254.89185731], [1516895100000, 5.428e-05, 5.428e-05, 5.426e-05, 5.428e-05, 6387.07514929], [1516895160000, 5.427e-05, 5.44e-05, 5.403e-05, 5.409e-05, 72289.73461517], [1516895220000, 5.422e-05, 5.426e-05, 5.41e-05, 5.41e-05, 8241.11613109], [1516895280000, 5.411e-05, 5.412e-05, 5.4e-05, 5.401e-05, 69743.31569398], [1516895340000, 5.401e-05, 5.401e-05, 5.393e-05, 5.398e-05, 57574.19618554], [1516895400000, 5.398e-05, 5.398e-05, 5.332e-05, 5.385e-05, 224556.12579328], [1516895460000, 5.385e-05, 5.388e-05, 5.382e-05, 5.385e-05, 76626.64896734], [1516895520000, 5.385e-05, 5.392e-05, 5.385e-05, 5.39e-05, 25047.32270017], [1516895580000, 5.39e-05, 5.397e-05, 5.387e-05, 5.392e-05, 27152.3496061], [1516895640000, 5.393e-05, 5.401e-05, 5.388e-05, 5.393e-05, 55947.34197559], [1516895700000, 5.393e-05, 5.42e-05, 5.389e-05, 5.41e-05, 106963.47681925], [1516895760000, 5.415e-05, 5.43e-05, 5.41e-05, 5.427e-05, 54650.31696087], [1516895820000, 5.427e-05, 5.43e-05, 5.425e-05, 5.426e-05, 15686.22963177], [1516895880000, 5.426e-05, 5.43e-05, 5.425e-05, 5.425e-05, 21216.79436628], [1516895940000, 5.43e-05, 5.441e-05, 5.425e-05, 5.441e-05, 20118.8893369], [1516896000000, 5.44e-05, 5.446e-05, 5.439e-05, 5.446e-05, 112911.59012474], [1516896060000, 5.45e-05, 5.476e-05, 5.45e-05, 5.475e-05, 18713.23071808], [1516896120000, 5.475e-05, 5.5e-05, 5.475e-05, 5.499e-05, 100304.35385999], [1516896180000, 5.489e-05, 5.5e-05, 5.48e-05, 5.48e-05, 103182.62786415], [1516896240000, 5.48e-05, 5.499e-05, 5.473e-05, 5.48e-05, 15065.69918331], [1516896300000, 5.485e-05, 5.5e-05, 5.48e-05, 5.493e-05, 84323.70023386], [1516896360000, 5.493e-05, 5.5e-05, 5.48e-05, 5.497e-05, 69915.49715093], [1516896420000, 5.499e-05, 5.515e-05, 5.497e-05, 5.497e-05, 26912.94626902], [1516896480000, 5.515e-05, 5.515e-05, 5.493e-05, 5.493e-05, 38274.20871948], [1516896540000, 5.494e-05, 5.511e-05, 5.493e-05, 5.511e-05, 31718.58105679], [1516896600000, 5.51e-05, 5.513e-05, 5.51e-05, 5.513e-05, 26890.18464123], [1516896660000, 5.513e-05, 5.52e-05, 5.512e-05, 5.519e-05, 56129.5333968], [1516896720000, 5.519e-05, 5.519e-05, 5.51e-05, 5.51e-05, 19666.42846878], [1516896780000, 5.51e-05, 5.511e-05, 5.495e-05, 5.506e-05, 102026.78561218], [1516896840000, 5.506e-05, 5.515e-05, 5.505e-05, 5.515e-05, 52896.88961245], [1516896900000, 5.515e-05, 5.52e-05, 5.515e-05, 5.52e-05, 29713.70549122], [1516896960000, 5.52e-05, 5.536e-05, 5.52e-05, 5.53e-05, 54718.82000394], [1516897020000, 5.536e-05, 5.541e-05, 5.519e-05, 5.529e-05, 124514.33205755], [1516897080000, 5.521e-05, 5.528e-05, 5.5e-05, 5.52e-05, 78602.7102196], [1516897140000, 5.52e-05, 5.528e-05, 5.502e-05, 5.52e-05, 59267.1279906], [1516897200000, 5.528e-05, 5.532e-05, 5.52e-05, 5.532e-05, 33084.44107818], [1516897260000, 5.538e-05, 5.54e-05, 5.52e-05, 5.524e-05, 60542.4547274], [1516897320000, 5.524e-05, 5.537e-05, 5.524e-05, 5.537e-05, 6433.82446446], [1516897380000, 5.537e-05, 5.539e-05, 5.536e-05, 5.539e-05, 13239.39027476], [1516897440000, 5.539e-05, 5.546e-05, 5.539e-05, 5.546e-05, 30400.17508309], [1516897500000, 5.546e-05, 5.555e-05, 5.546e-05, 5.555e-05, 8541.81346337], [1516897560000, 5.555e-05, 5.584e-05, 5.555e-05, 5.582e-05, 33300.89405509], [1516897620000, 5.582e-05, 5.59e-05, 5.582e-05, 5.585e-05, 59027.41990782], [1516897680000, 5.585e-05, 5.59e-05, 5.585e-05, 5.589e-05, 30011.866157], [1516897740000, 5.588e-05, 5.605e-05, 5.588e-05, 5.601e-05, 95556.96767353], [1516897800000, 5.601e-05, 5.613e-05, 5.601e-05, 5.601e-05, 77575.12164829], [1516897860000, 5.607e-05, 5.607e-05, 5.601e-05, 5.602e-05, 22051.4280643], [1516897920000, 5.602e-05, 5.608e-05, 5.6e-05, 5.603e-05, 62735.80250841], [1516897980000, 5.603e-05, 5.613e-05, 5.603e-05, 5.613e-05, 53885.14668182], [1516898040000, 5.613e-05, 5.621e-05, 5.61e-05, 5.621e-05, 89900.53860616], [1516898100000, 5.618e-05, 5.618e-05, 5.615e-05, 5.616e-05, 56594.98526803], [1516898160000, 5.616e-05, 5.621e-05, 5.615e-05, 5.621e-05, 85779.62579346], [1516898220000, 5.621e-05, 5.621e-05, 5.616e-05, 5.616e-05, 34600.26708616], [1516898280000, 5.615e-05, 5.618e-05, 5.615e-05, 5.616e-05, 8401.58464748], [1516898340000, 5.618e-05, 5.62e-05, 5.616e-05, 5.618e-05, 11700.31369028], [1516898400000, 5.618e-05, 5.62e-05, 5.616e-05, 5.618e-05, 50911.25160528], [1516898460000, 5.618e-05, 5.618e-05, 5.609e-05, 5.614e-05, 21165.7022238], [1516898520000, 5.611e-05, 5.614e-05, 5.611e-05, 5.613e-05, 37984.74885953], [1516898580000, 5.613e-05, 5.613e-05, 5.611e-05, 5.611e-05, 73817.87242902], [1516898640000, 5.609e-05, 5.611e-05, 5.603e-05, 5.604e-05, 256839.53973836], [1516898700000, 5.604e-05, 5.604e-05, 5.591e-05, 5.591e-05, 59535.18829346], [1516898760000, 5.59e-05, 5.59e-05, 5.582e-05, 5.582e-05, 14169.76292363], [1516898820000, 5.581e-05, 5.582e-05, 5.575e-05, 5.581e-05, 19258.40698132], [1516898880000, 5.581e-05, 5.581e-05, 5.57e-05, 5.575e-05, 12849.823597], [1516898940000, 5.57e-05, 5.575e-05, 5.551e-05, 5.571e-05, 19582.32032539], [1516899000000, 5.57e-05, 5.57e-05, 5.539e-05, 5.55e-05, 80887.86888046], [1516899060000, 5.55e-05, 5.55e-05, 5.539e-05, 5.54e-05, 35201.46691851], [1516899120000, 5.54e-05, 5.55e-05, 5.54e-05, 5.54e-05, 33634.82678718], [1516899180000, 5.541e-05, 5.55e-05, 5.54e-05, 5.542e-05, 26817.60705816], [1516899240000, 5.55e-05, 5.55e-05, 5.543e-05, 5.544e-05, 31849.63513563], [1516899300000, 5.55e-05, 5.56e-05, 5.543e-05, 5.553e-05, 136364.54050963], [1516899360000, 5.552e-05, 5.552e-05, 5.54e-05, 5.54e-05, 119096.36745668], [1516899420000, 5.543e-05, 5.548e-05, 5.54e-05, 5.54e-05, 183376.48749498], [1516899480000, 5.542e-05, 5.548e-05, 5.542e-05, 5.545e-05, 7802.68904222], [1516899540000, 5.545e-05, 5.546e-05, 5.514e-05, 5.533e-05, 131661.84637251], [1516899600000, 5.539e-05, 5.539e-05, 5.514e-05, 5.538e-05, 21582.34027732], [1516899660000, 5.525e-05, 5.547e-05, 5.525e-05, 5.547e-05, 66010.4342134], [1516899720000, 5.547e-05, 5.548e-05, 5.545e-05, 5.546e-05, 22433.39715393], [1516899780000, 5.546e-05, 5.56e-05, 5.546e-05, 5.56e-05, 12386.18042684], [1516899840000, 5.56e-05, 5.577e-05, 5.56e-05, 5.569e-05, 28327.28113128], [1516899900000, 5.569e-05, 5.569e-05, 5.56e-05, 5.569e-05, 9342.0248279], [1516899960000, 5.569e-05, 5.577e-05, 5.569e-05, 5.57e-05, 32016.68631959], [1516900020000, 5.569e-05, 5.57e-05, 5.546e-05, 5.569e-05, 109361.1449551], [1516900080000, 5.555e-05, 5.569e-05, 5.547e-05, 5.555e-05, 15632.19473904], [1516900140000, 5.555e-05, 5.556e-05, 5.546e-05, 5.546e-05, 95418.82887363], [1516900200000, 5.555e-05, 5.555e-05, 5.545e-05, 5.546e-05, 58671.82949135], [1516900260000, 5.555e-05, 5.556e-05, 5.545e-05, 5.555e-05, 78220.89184644], [1516900320000, 5.548e-05, 5.553e-05, 5.538e-05, 5.541e-05, 33694.44086914], [1516900380000, 5.541e-05, 5.541e-05, 5.5e-05, 5.507e-05, 227357.17758829], [1516900440000, 5.502e-05, 5.507e-05, 5.489e-05, 5.502e-05, 156841.12254302], [1516900500000, 5.505e-05, 5.507e-05, 5.468e-05, 5.486e-05, 206932.56751056], [1516900560000, 5.464e-05, 5.487e-05, 5.427e-05, 5.433e-05, 150476.65859248], [1516900620000, 5.433e-05, 5.45e-05, 5.42e-05, 5.439e-05, 174839.52008879], [1516900680000, 5.438e-05, 5.458e-05, 5.42e-05, 5.439e-05, 367315.48527985], [1516900740000, 5.459e-05, 5.468e-05, 5.432e-05, 5.468e-05, 147799.56133146], [1516900800000, 5.468e-05, 5.468e-05, 5.44e-05, 5.463e-05, 33141.73941999], [1516900860000, 5.445e-05, 5.468e-05, 5.445e-05, 5.46e-05, 94240.01338104], [1516900920000, 5.462e-05, 5.462e-05, 5.45e-05, 5.456e-05, 14033.50268149], [1516900980000, 5.46e-05, 5.46e-05, 5.454e-05, 5.454e-05, 14834.83395722], [1516901040000, 5.456e-05, 5.456e-05, 5.454e-05, 5.456e-05, 36996.54943424], [1516901100000, 5.456e-05, 5.486e-05, 5.456e-05, 5.486e-05, 36938.95014435], [1516901160000, 5.485e-05, 5.495e-05, 5.402e-05, 5.424e-05, 208808.94751347], [1516901220000, 5.445e-05, 5.49e-05, 5.4e-05, 5.459e-05, 277843.38068325], [1516901280000, 5.459e-05, 5.459e-05, 5.442e-05, 5.448e-05, 46133.28697885], [1516901340000, 5.449e-05, 5.457e-05, 5.411e-05, 5.439e-05, 90590.8843794], [1516901400000, 5.439e-05, 5.448e-05, 5.401e-05, 5.445e-05, 83617.3849751], [1516901460000, 5.43e-05, 5.445e-05, 5.402e-05, 5.429e-05, 81801.75708182], [1516901520000, 5.429e-05, 5.429e-05, 5.4e-05, 5.416e-05, 173704.44367194], [1516901580000, 5.417e-05, 5.428e-05, 5.4e-05, 5.408e-05, 54450.29317334], [1516901640000, 5.419e-05, 5.444e-05, 5.398e-05, 5.416e-05, 158097.28675414], [1516901700000, 5.41e-05, 5.445e-05, 5.398e-05, 5.398e-05, 217669.36845785], [1516901760000, 5.428e-05, 5.439e-05, 5.404e-05, 5.427e-05, 25253.27047654], [1516901820000, 5.427e-05, 5.428e-05, 5.419e-05, 5.42e-05, 8260.22720358], [1516901880000, 5.42e-05, 5.43e-05, 5.42e-05, 5.43e-05, 49562.6005825], [1516901940000, 5.43e-05, 5.439e-05, 5.396e-05, 5.4e-05, 349509.79531482], [1516902000000, 5.396e-05, 5.42e-05, 5.396e-05, 5.397e-05, 272692.69783993], [1516902060000, 5.397e-05, 5.419e-05, 5.394e-05, 5.417e-05, 75408.4512136], [1516902120000, 5.415e-05, 5.416e-05, 5.403e-05, 5.405e-05, 23958.47242611], [1516902180000, 5.404e-05, 5.405e-05, 5.398e-05, 5.4e-05, 62973.51376408], [1516902240000, 5.398e-05, 5.419e-05, 5.397e-05, 5.4e-05, 165663.33534569], [1516902300000, 5.414e-05, 5.414e-05, 5.397e-05, 5.401e-05, 126068.80498504], [1516902360000, 5.405e-05, 5.405e-05, 5.394e-05, 5.401e-05, 25665.17186918], [1516902420000, 5.401e-05, 5.404e-05, 5.392e-05, 5.395e-05, 72862.61371309], [1516902480000, 5.393e-05, 5.393e-05, 5.361e-05, 5.382e-05, 197244.65508925], [1516902540000, 5.382e-05, 5.382e-05, 5.37e-05, 5.374e-05, 39566.00157379], [1516902600000, 5.374e-05, 5.38e-05, 5.359e-05, 5.359e-05, 65871.30385163], [1516902660000, 5.368e-05, 5.368e-05, 5.294e-05, 5.338e-05, 529379.31438461], [1516902720000, 5.349e-05, 5.35e-05, 5.291e-05, 5.33e-05, 299468.87430598], [1516902780000, 5.316e-05, 5.33e-05, 5.315e-05, 5.322e-05, 129454.11885901], [1516902840000, 5.322e-05, 5.327e-05, 5.315e-05, 5.316e-05, 64629.51684026], [1516902900000, 5.32e-05, 5.32e-05, 5.301e-05, 5.313e-05, 195917.81068211], [1516902960000, 5.31e-05, 5.313e-05, 5.308e-05, 5.311e-05, 150941.13690628], [1516903020000, 5.308e-05, 5.312e-05, 5.25e-05, 5.304e-05, 333642.85192962], [1516903080000, 5.304e-05, 5.323e-05, 5.288e-05, 5.322e-05, 375140.02906971], [1516903140000, 5.323e-05, 5.396e-05, 5.323e-05, 5.368e-05, 134976.41984337], [1516903200000, 5.396e-05, 5.42e-05, 5.396e-05, 5.42e-05, 95539.61298929], [1516903260000, 5.42e-05, 5.432e-05, 5.402e-05, 5.432e-05, 117255.40865565], [1516903320000, 5.43e-05, 5.43e-05, 5.402e-05, 5.425e-05, 55382.18933124], [1516903380000, 5.425e-05, 5.426e-05, 5.369e-05, 5.401e-05, 130320.47559495], [1516903440000, 5.4e-05, 5.403e-05, 5.37e-05, 5.391e-05, 125568.2436286], [1516903500000, 5.391e-05, 5.392e-05, 5.366e-05, 5.386e-05, 53013.92120921], [1516903560000, 5.385e-05, 5.385e-05, 5.368e-05, 5.37e-05, 30015.44667783], [1516903620000, 5.37e-05, 5.398e-05, 5.37e-05, 5.388e-05, 107530.14834974], [1516903680000, 5.388e-05, 5.401e-05, 5.375e-05, 5.384e-05, 181340.81985222], [1516903740000, 5.401e-05, 5.401e-05, 5.358e-05, 5.358e-05, 86241.35406257], [1516903800000, 5.359e-05, 5.39e-05, 5.359e-05, 5.36e-05, 29240.13904629], [1516903860000, 5.362e-05, 5.388e-05, 5.36e-05, 5.362e-05, 50464.55609831], [1516903920000, 5.362e-05, 5.38e-05, 5.339e-05, 5.357e-05, 145999.45578932], [1516903980000, 5.36e-05, 5.362e-05, 5.36e-05, 5.36e-05, 57731.08437689], [1516904040000, 5.36e-05, 5.37e-05, 5.332e-05, 5.333e-05, 210936.99870167], [1516904100000, 5.351e-05, 5.37e-05, 5.332e-05, 5.37e-05, 124351.66222347], [1516904160000, 5.38e-05, 5.38e-05, 5.354e-05, 5.37e-05, 27282.26899093], [1516904220000, 5.375e-05, 5.391e-05, 5.302e-05, 5.369e-05, 194586.36863516], [1516904280000, 5.368e-05, 5.38e-05, 5.333e-05, 5.38e-05, 149928.9764182], [1516904340000, 5.38e-05, 5.391e-05, 5.356e-05, 5.391e-05, 127363.98422089], [1516904400000, 5.38e-05, 5.38e-05, 5.333e-05, 5.378e-05, 33929.95807552], [1516904460000, 5.343e-05, 5.398e-05, 5.333e-05, 5.35e-05, 221205.65319269], [1516904520000, 5.391e-05, 5.4e-05, 5.353e-05, 5.4e-05, 152486.73173207], [1516904580000, 5.4e-05, 5.41e-05, 5.4e-05, 5.401e-05, 86225.29220945], [1516904640000, 5.4e-05, 5.406e-05, 5.398e-05, 5.398e-05, 72511.04029441], [1516904700000, 5.399e-05, 5.399e-05, 5.367e-05, 5.374e-05, 16420.56814921], [1516904760000, 5.367e-05, 5.374e-05, 5.366e-05, 5.367e-05, 7855.71334173], [1516904820000, 5.367e-05, 5.367e-05, 5.354e-05, 5.356e-05, 34397.72404212], [1516904880000, 5.356e-05, 5.366e-05, 5.354e-05, 5.355e-05, 56040.64709344], [1516904940000, 5.355e-05, 5.366e-05, 5.353e-05, 5.366e-05, 17324.67245422], [1516905000000, 5.366e-05, 5.366e-05, 5.355e-05, 5.365e-05, 13945.27840631], [1516905060000, 5.355e-05, 5.365e-05, 5.351e-05, 5.355e-05, 45284.78588395], [1516905120000, 5.353e-05, 5.364e-05, 5.35e-05, 5.351e-05, 13341.25139007], [1516905180000, 5.355e-05, 5.364e-05, 5.35e-05, 5.364e-05, 12185.28273496], [1516905240000, 5.364e-05, 5.364e-05, 5.364e-05, 5.364e-05, 5139.34021253], [1516905300000, 5.364e-05, 5.365e-05, 5.355e-05, 5.362e-05, 14816.62589447], [1516905360000, 5.365e-05, 5.365e-05, 5.362e-05, 5.362e-05, 4057.66193753], [1516905420000, 5.365e-05, 5.365e-05, 5.362e-05, 5.362e-05, 4019.32148828], [1516905480000, 5.363e-05, 5.365e-05, 5.362e-05, 5.365e-05, 4221.01717413], [1516905540000, 5.364e-05, 5.365e-05, 5.358e-05, 5.358e-05, 16754.16500267], [1516905600000, 5.359e-05, 5.365e-05, 5.357e-05, 5.365e-05, 40027.40584656], [1516905660000, 5.387e-05, 5.391e-05, 5.359e-05, 5.377e-05, 26498.1435807], [1516905720000, 5.364e-05, 5.377e-05, 5.364e-05, 5.365e-05, 34124.58667505], [1516905780000, 5.365e-05, 5.377e-05, 5.365e-05, 5.374e-05, 41041.13995483], [1516905840000, 5.375e-05, 5.38e-05, 5.371e-05, 5.371e-05, 55075.50146898], [1516905900000, 5.37e-05, 5.38e-05, 5.37e-05, 5.38e-05, 27409.75664159], [1516905960000, 5.38e-05, 5.397e-05, 5.38e-05, 5.397e-05, 10336.97860522], [1516906020000, 5.397e-05, 5.397e-05, 5.383e-05, 5.397e-05, 44819.68935124], [1516906080000, 5.399e-05, 5.399e-05, 5.384e-05, 5.384e-05, 46059.10913384], [1516906140000, 5.384e-05, 5.384e-05, 5.38e-05, 5.383e-05, 15511.42647157], [1516906200000, 5.383e-05, 5.383e-05, 5.372e-05, 5.383e-05, 8558.69783138], [1516906260000, 5.383e-05, 5.383e-05, 5.381e-05, 5.381e-05, 19847.33884036], [1516906320000, 5.38e-05, 5.381e-05, 5.373e-05, 5.38e-05, 6823.57406136], [1516906380000, 5.38e-05, 5.38e-05, 5.374e-05, 5.376e-05, 9060.96098849], [1516906440000, 5.376e-05, 5.383e-05, 5.376e-05, 5.383e-05, 64249.49606842], [1516906500000, 5.383e-05, 5.383e-05, 5.374e-05, 5.374e-05, 7817.845418], [1516906560000, 5.377e-05, 5.383e-05, 5.374e-05, 5.378e-05, 148753.81137207], [1516906620000, 5.383e-05, 5.383e-05, 5.381e-05, 5.381e-05, 11182.79487918], [1516906680000, 5.381e-05, 5.383e-05, 5.381e-05, 5.381e-05, 150155.66328006], [1516906740000, 5.381e-05, 5.383e-05, 5.378e-05, 5.381e-05, 18882.18773971], [1516906800000, 5.381e-05, 5.382e-05, 5.372e-05, 5.372e-05, 8140.82928822], [1516906860000, 5.382e-05, 5.382e-05, 5.36e-05, 5.382e-05, 22825.84562963], [1516906920000, 5.382e-05, 5.382e-05, 5.358e-05, 5.38e-05, 40048.84155319], [1516906980000, 5.38e-05, 5.38e-05, 5.364e-05, 5.364e-05, 25677.6176704], [1516907040000, 5.364e-05, 5.365e-05, 5.364e-05, 5.365e-05, 4971.47102933], [1516907100000, 5.365e-05, 5.365e-05, 5.364e-05, 5.364e-05, 7565.2304402], [1516907160000, 5.364e-05, 5.365e-05, 5.364e-05, 5.365e-05, 6165.9696692], [1516907220000, 5.364e-05, 5.365e-05, 5.364e-05, 5.364e-05, 3310.66540786], [1516907280000, 5.364e-05, 5.365e-05, 5.364e-05, 5.365e-05, 8776.26631875], [1516907340000, 5.364e-05, 5.365e-05, 5.364e-05, 5.365e-05, 12413.94074016], [1516907400000, 5.365e-05, 5.369e-05, 5.364e-05, 5.369e-05, 49327.43467959], [1516907460000, 5.369e-05, 5.369e-05, 5.365e-05, 5.369e-05, 54340.52609782], [1516907520000, 5.369e-05, 5.38e-05, 5.367e-05, 5.367e-05, 8765.852694], [1516907580000, 5.367e-05, 5.367e-05, 5.367e-05, 5.367e-05, 18578.62016441], [1516907640000, 5.367e-05, 5.367e-05, 5.366e-05, 5.367e-05, 24942.36491412], [1516907700000, 5.367e-05, 5.367e-05, 5.366e-05, 5.367e-05, 17979.67765964], [1516907760000, 5.368e-05, 5.368e-05, 5.366e-05, 5.366e-05, 14549.68965409], [1516907820000, 5.367e-05, 5.368e-05, 5.366e-05, 5.368e-05, 11599.01467352], [1516907880000, 5.368e-05, 5.368e-05, 5.366e-05, 5.367e-05, 37747.117751], [1516907940000, 5.367e-05, 5.368e-05, 5.366e-05, 5.366e-05, 6319.08493841], [1516908000000, 5.366e-05, 5.367e-05, 5.365e-05, 5.366e-05, 62420.46287511], [1516908060000, 5.367e-05, 5.367e-05, 5.365e-05, 5.366e-05, 2513.33030052], [1516908120000, 5.365e-05, 5.366e-05, 5.365e-05, 5.365e-05, 11675.69883905], [1516908180000, 5.366e-05, 5.366e-05, 5.365e-05, 5.365e-05, 24401.64467459], [1516908240000, 5.364e-05, 5.364e-05, 5.347e-05, 5.347e-05, 44508.88767784], [1516908300000, 5.357e-05, 5.358e-05, 5.34e-05, 5.345e-05, 41567.2632487], [1516908360000, 5.345e-05, 5.345e-05, 5.34e-05, 5.345e-05, 9143.69143532], [1516908420000, 5.345e-05, 5.345e-05, 5.342e-05, 5.342e-05, 14761.11670546], [1516908480000, 5.344e-05, 5.365e-05, 5.341e-05, 5.342e-05, 51127.31520122], [1516908540000, 5.34e-05, 5.342e-05, 5.34e-05, 5.34e-05, 14169.68167518], [1516908600000, 5.339e-05, 5.345e-05, 5.339e-05, 5.341e-05, 7476.94124962], [1516908660000, 5.341e-05, 5.342e-05, 5.336e-05, 5.339e-05, 7301.19755098], [1516908720000, 5.336e-05, 5.339e-05, 5.336e-05, 5.339e-05, 4092.97003641], [1516908780000, 5.339e-05, 5.339e-05, 5.336e-05, 5.336e-05, 8375.63532255], [1516908840000, 5.336e-05, 5.339e-05, 5.336e-05, 5.339e-05, 6014.45707796], [1516908900000, 5.338e-05, 5.339e-05, 5.33e-05, 5.33e-05, 40094.49003437], [1516908960000, 5.339e-05, 5.339e-05, 5.325e-05, 5.326e-05, 6443.09958999], [1516909020000, 5.33e-05, 5.33e-05, 5.326e-05, 5.33e-05, 16460.6307463], [1516909080000, 5.328e-05, 5.328e-05, 5.326e-05, 5.326e-05, 13663.22195204], [1516909140000, 5.328e-05, 5.328e-05, 5.303e-05, 5.303e-05, 36578.88245276], [1516909200000, 5.321e-05, 5.321e-05, 5.303e-05, 5.305e-05, 19381.64361881], [1516909260000, 5.305e-05, 5.31e-05, 5.3e-05, 5.31e-05, 47105.65101172], [1516909320000, 5.301e-05, 5.31e-05, 5.301e-05, 5.306e-05, 12743.65314479], [1516909380000, 5.306e-05, 5.31e-05, 5.304e-05, 5.304e-05, 44325.72115011], [1516909440000, 5.302e-05, 5.303e-05, 5.294e-05, 5.299e-05, 132330.83141179], [1516909500000, 5.299e-05, 5.3e-05, 5.296e-05, 5.298e-05, 22087.3349304], [1516909560000, 5.298e-05, 5.298e-05, 5.293e-05, 5.295e-05, 10071.77043634], [1516909620000, 5.293e-05, 5.295e-05, 5.28e-05, 5.287e-05, 92052.66752058], [1516909680000, 5.287e-05, 5.288e-05, 5.281e-05, 5.287e-05, 50604.50466416], [1516909740000, 5.281e-05, 5.286e-05, 5.173e-05, 5.284e-05, 681986.30292377], [1516909800000, 5.284e-05, 5.287e-05, 5.284e-05, 5.287e-05, 61699.27367811], [1516909860000, 5.287e-05, 5.287e-05, 5.103e-05, 5.27e-05, 560785.89165537], [1516909920000, 5.265e-05, 5.271e-05, 5.252e-05, 5.264e-05, 61580.98664177], [1516909980000, 5.264e-05, 5.266e-05, 5.247e-05, 5.247e-05, 107423.18802697], [1516910040000, 5.247e-05, 5.27e-05, 5.247e-05, 5.259e-05, 44608.18700308], [1516910100000, 5.259e-05, 5.279e-05, 5.259e-05, 5.275e-05, 82435.30410045], [1516910160000, 5.262e-05, 5.275e-05, 5.262e-05, 5.269e-05, 14576.1154935], [1516910220000, 5.275e-05, 5.287e-05, 5.266e-05, 5.286e-05, 78614.26202561], [1516910280000, 5.286e-05, 5.287e-05, 5.286e-05, 5.286e-05, 15927.20467272], [1516910340000, 5.286e-05, 5.287e-05, 5.276e-05, 5.279e-05, 13231.37421918], [1516910400000, 5.285e-05, 5.288e-05, 5.28e-05, 5.288e-05, 23744.10718988], [1516910460000, 5.281e-05, 5.288e-05, 5.281e-05, 5.288e-05, 19638.54063474], [1516910520000, 5.287e-05, 5.289e-05, 5.282e-05, 5.283e-05, 21603.534659], [1516910580000, 5.286e-05, 5.286e-05, 5.283e-05, 5.286e-05, 15874.43811987], [1516910640000, 5.286e-05, 5.286e-05, 5.282e-05, 5.282e-05, 8855.7712159], [1516910700000, 5.282e-05, 5.282e-05, 5.276e-05, 5.276e-05, 62647.34100955], [1516910760000, 5.269e-05, 5.269e-05, 5.262e-05, 5.269e-05, 6234.83975551], [1516910820000, 5.268e-05, 5.268e-05, 5.26e-05, 5.26e-05, 6645.30805443], [1516910880000, 5.26e-05, 5.26e-05, 5.252e-05, 5.258e-05, 16150.09528957], [1516910940000, 5.258e-05, 5.258e-05, 5.246e-05, 5.246e-05, 64703.45870344], [1516911000000, 5.247e-05, 5.259e-05, 5.241e-05, 5.258e-05, 68654.03580976], [1516911060000, 5.258e-05, 5.258e-05, 5.241e-05, 5.258e-05, 16328.30711566], [1516911120000, 5.256e-05, 5.256e-05, 5.233e-05, 5.233e-05, 25012.82742441], [1516911180000, 5.233e-05, 5.255e-05, 5.233e-05, 5.241e-05, 39711.31533031], [1516911240000, 5.24e-05, 5.251e-05, 5.235e-05, 5.24e-05, 21986.91745437], [1516911300000, 5.235e-05, 5.252e-05, 5.175e-05, 5.247e-05, 340705.6729778], [1516911360000, 5.251e-05, 5.251e-05, 5.213e-05, 5.25e-05, 46941.94368348], [1516911420000, 5.252e-05, 5.256e-05, 5.24e-05, 5.246e-05, 10113.52951954], [1516911480000, 5.24e-05, 5.246e-05, 5.235e-05, 5.245e-05, 12017.31086531], [1516911540000, 5.244e-05, 5.244e-05, 5.231e-05, 5.232e-05, 10476.26091173], [1516911600000, 5.232e-05, 5.232e-05, 5.23e-05, 5.23e-05, 8161.66679764], [1516911660000, 5.23e-05, 5.231e-05, 5.226e-05, 5.226e-05, 6383.77733725], [1516911720000, 5.226e-05, 5.226e-05, 5.212e-05, 5.213e-05, 12731.62399368], [1516911780000, 5.212e-05, 5.219e-05, 5.206e-05, 5.216e-05, 74764.09076864], [1516911840000, 5.216e-05, 5.218e-05, 5.2e-05, 5.213e-05, 36898.16385081], [1516911900000, 5.212e-05, 5.212e-05, 5.199e-05, 5.201e-05, 118387.36654691], [1516911960000, 5.199e-05, 5.2e-05, 5.19e-05, 5.19e-05, 30188.821897], [1516912020000, 5.19e-05, 5.2e-05, 5.189e-05, 5.2e-05, 44857.60576596], [1516912080000, 5.199e-05, 5.2e-05, 5.192e-05, 5.192e-05, 41043.46537058], [1516912140000, 5.195e-05, 5.195e-05, 5.19e-05, 5.191e-05, 12678.52570362], [1516912200000, 5.191e-05, 5.2e-05, 5.19e-05, 5.195e-05, 21685.98033869], [1516912260000, 5.2e-05, 5.215e-05, 5.2e-05, 5.205e-05, 30797.69798665], [1516912320000, 5.21e-05, 5.215e-05, 5.205e-05, 5.207e-05, 13142.46397886], [1516912380000, 5.207e-05, 5.256e-05, 5.206e-05, 5.256e-05, 44575.76721222], [1516912440000, 5.226e-05, 5.256e-05, 5.222e-05, 5.255e-05, 43694.23929406], [1516912500000, 5.255e-05, 5.276e-05, 5.255e-05, 5.274e-05, 30729.34335588], [1516912560000, 5.274e-05, 5.277e-05, 5.272e-05, 5.277e-05, 73392.88451634], [1516912620000, 5.277e-05, 5.29e-05, 5.276e-05, 5.284e-05, 44720.98058912], [1516912680000, 5.283e-05, 5.283e-05, 5.261e-05, 5.261e-05, 48310.07460623], [1516912740000, 5.266e-05, 5.281e-05, 5.246e-05, 5.264e-05, 35774.19809425], [1516912800000, 5.264e-05, 5.264e-05, 5.215e-05, 5.231e-05, 150880.95249253], [1516912860000, 5.256e-05, 5.258e-05, 5.231e-05, 5.258e-05, 14478.62186808], [1516912920000, 5.258e-05, 5.258e-05, 5.231e-05, 5.234e-05, 10569.13020788], [1516912980000, 5.234e-05, 5.234e-05, 5.219e-05, 5.223e-05, 5975.13975609], [1516913040000, 5.23e-05, 5.233e-05, 5.23e-05, 5.233e-05, 11071.68814507], [1516913100000, 5.256e-05, 5.256e-05, 5.234e-05, 5.234e-05, 4604.83149463], [1516913160000, 5.256e-05, 5.257e-05, 5.256e-05, 5.256e-05, 8839.30647641], [1516913220000, 5.256e-05, 5.258e-05, 5.236e-05, 5.257e-05, 51842.38429655], [1516913280000, 5.257e-05, 5.257e-05, 5.256e-05, 5.256e-05, 10691.33689676], [1516913340000, 5.256e-05, 5.257e-05, 5.256e-05, 5.256e-05, 24981.96231755], [1516913400000, 5.256e-05, 5.256e-05, 5.255e-05, 5.256e-05, 15384.61042114], [1516913460000, 5.256e-05, 5.264e-05, 5.256e-05, 5.264e-05, 15349.32192662], [1516913520000, 5.264e-05, 5.293e-05, 5.264e-05, 5.292e-05, 46401.91718907], [1516913580000, 5.28e-05, 5.299e-05, 5.28e-05, 5.295e-05, 28226.11732278], [1516913640000, 5.295e-05, 5.295e-05, 5.281e-05, 5.282e-05, 30800.73597001], [1516913700000, 5.288e-05, 5.29e-05, 5.281e-05, 5.29e-05, 50772.753786], [1516913760000, 5.292e-05, 5.299e-05, 5.287e-05, 5.292e-05, 102058.93828703], [1516913820000, 5.295e-05, 5.299e-05, 5.29e-05, 5.296e-05, 47494.03022818], [1516913880000, 5.296e-05, 5.296e-05, 5.288e-05, 5.288e-05, 63331.8718358], [1516913940000, 5.288e-05, 5.296e-05, 5.288e-05, 5.296e-05, 5794.79189737], [1516914000000, 5.296e-05, 5.301e-05, 5.291e-05, 5.301e-05, 32340.54456417], [1516914060000, 5.3e-05, 5.3e-05, 5.29e-05, 5.291e-05, 22820.00615761], [1516914120000, 5.291e-05, 5.291e-05, 5.287e-05, 5.287e-05, 43774.60099273], [1516914180000, 5.288e-05, 5.291e-05, 5.281e-05, 5.291e-05, 87565.75630992], [1516914240000, 5.281e-05, 5.291e-05, 5.28e-05, 5.28e-05, 9226.10335917], [1516914300000, 5.29e-05, 5.29e-05, 5.272e-05, 5.272e-05, 26397.83911383], [1516914360000, 5.275e-05, 5.286e-05, 5.264e-05, 5.269e-05, 40876.72085168], [1516914420000, 5.269e-05, 5.269e-05, 5.256e-05, 5.256e-05, 45523.91346934], [1516914480000, 5.256e-05, 5.256e-05, 5.238e-05, 5.256e-05, 12170.14790712], [1516914540000, 5.254e-05, 5.254e-05, 5.238e-05, 5.238e-05, 23224.26002676], [1516914600000, 5.238e-05, 5.25e-05, 5.236e-05, 5.25e-05, 31062.78976414], [1516914660000, 5.238e-05, 5.25e-05, 5.23e-05, 5.247e-05, 23936.85715748], [1516914720000, 5.247e-05, 5.247e-05, 5.227e-05, 5.235e-05, 49119.27805938], [1516914780000, 5.235e-05, 5.247e-05, 5.23e-05, 5.23e-05, 45691.44555397], [1516914840000, 5.233e-05, 5.246e-05, 5.231e-05, 5.235e-05, 43951.13950614], [1516914900000, 5.246e-05, 5.268e-05, 5.23e-05, 5.231e-05, 101050.92080444], [1516914960000, 5.231e-05, 5.265e-05, 5.23e-05, 5.265e-05, 48690.53058201], [1516915020000, 5.265e-05, 5.265e-05, 5.223e-05, 5.244e-05, 15831.26939316], [1516915080000, 5.244e-05, 5.244e-05, 5.225e-05, 5.226e-05, 3444.56744577], [1516915140000, 5.23e-05, 5.243e-05, 5.23e-05, 5.243e-05, 5083.381309], [1516915200000, 5.243e-05, 5.248e-05, 5.243e-05, 5.248e-05, 5476.4974934], [1516915260000, 5.264e-05, 5.264e-05, 5.249e-05, 5.249e-05, 10723.59517043], [1516915320000, 5.263e-05, 5.263e-05, 5.249e-05, 5.249e-05, 16123.90978743], [1516915380000, 5.262e-05, 5.273e-05, 5.246e-05, 5.246e-05, 29073.02206737], [1516915440000, 5.246e-05, 5.246e-05, 5.219e-05, 5.245e-05, 83014.41052783], [1516915500000, 5.245e-05, 5.246e-05, 5.241e-05, 5.245e-05, 10567.83038875], [1516915560000, 5.245e-05, 5.26e-05, 5.241e-05, 5.26e-05, 55276.96088141], [1516915620000, 5.259e-05, 5.26e-05, 5.259e-05, 5.259e-05, 37846.47612268], [1516915680000, 5.26e-05, 5.276e-05, 5.251e-05, 5.257e-05, 26583.36738175], [1516915740000, 5.251e-05, 5.251e-05, 5.246e-05, 5.246e-05, 11817.17373592], [1516915800000, 5.253e-05, 5.256e-05, 5.253e-05, 5.255e-05, 5335.97580158], [1516915860000, 5.256e-05, 5.256e-05, 5.246e-05, 5.246e-05, 16651.51279998], [1516915920000, 5.246e-05, 5.254e-05, 5.226e-05, 5.253e-05, 19489.71651019], [1516915980000, 5.253e-05, 5.253e-05, 5.252e-05, 5.253e-05, 8813.42938413], [1516916040000, 5.253e-05, 5.26e-05, 5.252e-05, 5.253e-05, 16984.06932678], [1516916100000, 5.26e-05, 5.26e-05, 5.252e-05, 5.253e-05, 67901.68492349], [1516916160000, 5.253e-05, 5.26e-05, 5.253e-05, 5.259e-05, 15859.7156576], [1516916220000, 5.259e-05, 5.259e-05, 5.24e-05, 5.25e-05, 25634.76221858], [1516916280000, 5.25e-05, 5.25e-05, 5.24e-05, 5.248e-05, 14154.49522012], [1516916340000, 5.247e-05, 5.248e-05, 5.24e-05, 5.24e-05, 19025.46169604], [1516916400000, 5.242e-05, 5.25e-05, 5.242e-05, 5.25e-05, 109754.78195362], [1516916460000, 5.25e-05, 5.25e-05, 5.248e-05, 5.249e-05, 7042.90713961], [1516916520000, 5.248e-05, 5.249e-05, 5.241e-05, 5.241e-05, 19536.44349377], [1516916580000, 5.247e-05, 5.247e-05, 5.241e-05, 5.247e-05, 1505.05208952], [1516916640000, 5.246e-05, 5.246e-05, 5.241e-05, 5.242e-05, 6347.9911892], [1516916700000, 5.241e-05, 5.241e-05, 5.238e-05, 5.238e-05, 14017.4079613], [1516916760000, 5.238e-05, 5.24e-05, 5.226e-05, 5.231e-05, 22243.20475483], [1516916820000, 5.231e-05, 5.24e-05, 5.221e-05, 5.221e-05, 23252.40655336], [1516916880000, 5.225e-05, 5.24e-05, 5.225e-05, 5.24e-05, 10351.21390888], [1516916940000, 5.228e-05, 5.24e-05, 5.228e-05, 5.24e-05, 44342.40462351], [1516917000000, 5.24e-05, 5.24e-05, 5.24e-05, 5.24e-05, 6168.6292363], [1516917060000, 5.24e-05, 5.24e-05, 5.225e-05, 5.225e-05, 21021.00187571], [1516917120000, 5.225e-05, 5.23e-05, 5.225e-05, 5.23e-05, 10030.97924481], [1516917180000, 5.226e-05, 5.24e-05, 5.226e-05, 5.24e-05, 14594.61241682], [1516917240000, 5.24e-05, 5.24e-05, 5.225e-05, 5.226e-05, 17863.22232035], [1516917300000, 5.236e-05, 5.236e-05, 5.225e-05, 5.23e-05, 20520.43527445], [1516917360000, 5.226e-05, 5.236e-05, 5.226e-05, 5.236e-05, 17890.8349565], [1516917420000, 5.236e-05, 5.236e-05, 5.235e-05, 5.236e-05, 43134.46665565], [1516917480000, 5.235e-05, 5.236e-05, 5.235e-05, 5.236e-05, 77811.2522168], [1516917540000, 5.238e-05, 5.24e-05, 5.235e-05, 5.238e-05, 87771.51877255], [1516917600000, 5.238e-05, 5.248e-05, 5.238e-05, 5.24e-05, 33870.56878149], [1516917660000, 5.247e-05, 5.25e-05, 5.247e-05, 5.25e-05, 6622.79267511], [1516917720000, 5.25e-05, 5.26e-05, 5.248e-05, 5.26e-05, 34763.6659704], [1516917780000, 5.26e-05, 5.27e-05, 5.26e-05, 5.27e-05, 13447.14655138], [1516917840000, 5.28e-05, 5.29e-05, 5.28e-05, 5.281e-05, 10179.24095689], [1516917900000, 5.29e-05, 5.292e-05, 5.282e-05, 5.292e-05, 23786.94897102], [1516917960000, 5.292e-05, 5.292e-05, 5.282e-05, 5.29e-05, 6928.00733054], [1516918020000, 5.284e-05, 5.299e-05, 5.284e-05, 5.299e-05, 27711.16914903], [1516918080000, 5.299e-05, 5.316e-05, 5.298e-05, 5.316e-05, 76580.68748162], [1516918140000, 5.316e-05, 5.321e-05, 5.31e-05, 5.315e-05, 132565.57300061], [1516918200000, 5.311e-05, 5.323e-05, 5.307e-05, 5.323e-05, 66496.28548242], [1516918260000, 5.322e-05, 5.323e-05, 5.319e-05, 5.322e-05, 11547.70789246], [1516918320000, 5.322e-05, 5.324e-05, 5.32e-05, 5.32e-05, 11767.89774938], [1516918380000, 5.322e-05, 5.325e-05, 5.321e-05, 5.324e-05, 19516.10471652], [1516918440000, 5.324e-05, 5.324e-05, 5.322e-05, 5.322e-05, 13647.32159028], [1516918500000, 5.324e-05, 5.342e-05, 5.323e-05, 5.342e-05, 311625.81031147], [1516918560000, 5.338e-05, 5.343e-05, 5.336e-05, 5.343e-05, 38913.43220452], [1516918620000, 5.342e-05, 5.349e-05, 5.34e-05, 5.346e-05, 17946.30478785], [1516918680000, 5.348e-05, 5.348e-05, 5.339e-05, 5.339e-05, 31365.63852534], [1516918740000, 5.339e-05, 5.345e-05, 5.337e-05, 5.337e-05, 23672.29124629], [1516918800000, 5.338e-05, 5.345e-05, 5.336e-05, 5.336e-05, 11919.56666992], [1516918860000, 5.336e-05, 5.349e-05, 5.336e-05, 5.349e-05, 73083.49777898], [1516918920000, 5.349e-05, 5.35e-05, 5.337e-05, 5.346e-05, 19217.014907], [1516918980000, 5.346e-05, 5.347e-05, 5.337e-05, 5.346e-05, 7511.37021432], [1516919040000, 5.345e-05, 5.347e-05, 5.336e-05, 5.346e-05, 14262.80153007], [1516919100000, 5.346e-05, 5.346e-05, 5.338e-05, 5.345e-05, 9222.32817131], [1516919160000, 5.338e-05, 5.343e-05, 5.337e-05, 5.343e-05, 6565.76627601], [1516919220000, 5.344e-05, 5.345e-05, 5.336e-05, 5.344e-05, 50538.64271483], [1516919280000, 5.343e-05, 5.343e-05, 5.331e-05, 5.341e-05, 21688.5988668], [1516919340000, 5.34e-05, 5.342e-05, 5.328e-05, 5.328e-05, 23054.75347244], [1516919400000, 5.331e-05, 5.345e-05, 5.324e-05, 5.332e-05, 29421.00890135], [1516919460000, 5.332e-05, 5.346e-05, 5.323e-05, 5.323e-05, 6213.09290149], [1516919520000, 5.33e-05, 5.345e-05, 5.32e-05, 5.33e-05, 10398.66065015], [1516919580000, 5.33e-05, 5.342e-05, 5.33e-05, 5.331e-05, 4179.5334409], [1516919640000, 5.331e-05, 5.341e-05, 5.331e-05, 5.338e-05, 4103.96322764], [1516919700000, 5.338e-05, 5.339e-05, 5.33e-05, 5.339e-05, 6042.926248], [1516919760000, 5.339e-05, 5.34e-05, 5.339e-05, 5.34e-05, 15967.46420162], [1516919820000, 5.34e-05, 5.341e-05, 5.339e-05, 5.341e-05, 16104.37388219], [1516919880000, 5.341e-05, 5.341e-05, 5.327e-05, 5.33e-05, 13371.44746102], [1516919940000, 5.33e-05, 5.33e-05, 5.327e-05, 5.327e-05, 6109.61406499], [1516920000000, 5.33e-05, 5.33e-05, 5.326e-05, 5.328e-05, 30600.62680552], [1516920060000, 5.326e-05, 5.329e-05, 5.326e-05, 5.326e-05, 28343.96840771], [1516920120000, 5.327e-05, 5.329e-05, 5.326e-05, 5.329e-05, 30465.53943399], [1516920180000, 5.329e-05, 5.329e-05, 5.327e-05, 5.329e-05, 19255.71986814], [1516920240000, 5.327e-05, 5.328e-05, 5.326e-05, 5.326e-05, 39280.02004039], [1516920300000, 5.326e-05, 5.326e-05, 5.303e-05, 5.314e-05, 29369.77251374], [1516920360000, 5.313e-05, 5.325e-05, 5.313e-05, 5.325e-05, 32189.29913085], [1516920420000, 5.315e-05, 5.328e-05, 5.315e-05, 5.328e-05, 35208.71355271], [1516920480000, 5.327e-05, 5.341e-05, 5.317e-05, 5.341e-05, 28763.89460514], [1516920540000, 5.341e-05, 5.341e-05, 5.341e-05, 5.341e-05, 39682.76399802], [1516920600000, 5.341e-05, 5.341e-05, 5.331e-05, 5.341e-05, 28756.88769645], [1516920660000, 5.341e-05, 5.341e-05, 5.341e-05, 5.341e-05, 38261.90124643], [1516920720000, 5.341e-05, 5.346e-05, 5.335e-05, 5.343e-05, 92219.34318894], [1516920780000, 5.343e-05, 5.351e-05, 5.342e-05, 5.35e-05, 43175.18536035], [1516920840000, 5.351e-05, 5.37e-05, 5.351e-05, 5.37e-05, 39244.30070443], [1516920900000, 5.371e-05, 5.375e-05, 5.356e-05, 5.365e-05, 58349.4614733], [1516920960000, 5.375e-05, 5.387e-05, 5.364e-05, 5.37e-05, 65453.25552793], [1516921020000, 5.37e-05, 5.388e-05, 5.365e-05, 5.381e-05, 137464.97988699], [1516921080000, 5.388e-05, 5.395e-05, 5.365e-05, 5.366e-05, 97377.8647999], [1516921140000, 5.395e-05, 5.399e-05, 5.364e-05, 5.389e-05, 64437.40572713], [1516921200000, 5.389e-05, 5.396e-05, 5.385e-05, 5.39e-05, 169468.51446566], [1516921260000, 5.39e-05, 5.397e-05, 5.381e-05, 5.396e-05, 85170.16662625], [1516921320000, 5.396e-05, 5.396e-05, 5.381e-05, 5.381e-05, 51053.28962799], [1516921380000, 5.396e-05, 5.4e-05, 5.37e-05, 5.37e-05, 56102.49270343], [1516921440000, 5.371e-05, 5.399e-05, 5.37e-05, 5.396e-05, 11295.4238013], [1516921500000, 5.388e-05, 5.39e-05, 5.376e-05, 5.39e-05, 5806.81949014], [1516921560000, 5.39e-05, 5.39e-05, 5.379e-05, 5.38e-05, 29304.71458297], [1516921620000, 5.385e-05, 5.39e-05, 5.385e-05, 5.39e-05, 67434.39957132], [1516921680000, 5.389e-05, 5.39e-05, 5.385e-05, 5.385e-05, 96069.82083848], [1516921740000, 5.385e-05, 5.389e-05, 5.379e-05, 5.379e-05, 10100.46519583], [1516921800000, 5.38e-05, 5.389e-05, 5.375e-05, 5.385e-05, 29369.17254251], [1516921860000, 5.389e-05, 5.39e-05, 5.38e-05, 5.39e-05, 90577.7223373], [1516921920000, 5.389e-05, 5.39e-05, 5.389e-05, 5.39e-05, 36261.05385598], [1516921980000, 5.39e-05, 5.401e-05, 5.379e-05, 5.379e-05, 80848.63290928], [1516922040000, 5.39e-05, 5.401e-05, 5.379e-05, 5.379e-05, 14067.00332305], [1516922100000, 5.39e-05, 5.401e-05, 5.39e-05, 5.401e-05, 17174.71621959], [1516922160000, 5.401e-05, 5.402e-05, 5.4e-05, 5.401e-05, 10729.49874731], [1516922220000, 5.401e-05, 5.411e-05, 5.401e-05, 5.402e-05, 78750.67619928], [1516922280000, 5.403e-05, 5.417e-05, 5.402e-05, 5.412e-05, 37439.33929227], [1516922340000, 5.412e-05, 5.452e-05, 5.412e-05, 5.436e-05, 338625.22896614], [1516922400000, 5.436e-05, 5.457e-05, 5.436e-05, 5.438e-05, 83411.93082611], [1516922460000, 5.438e-05, 5.453e-05, 5.436e-05, 5.436e-05, 46987.80991962], [1516922520000, 5.449e-05, 5.453e-05, 5.436e-05, 5.437e-05, 7478.41709499], [1516922580000, 5.437e-05, 5.453e-05, 5.425e-05, 5.425e-05, 54531.92925734], [1516922640000, 5.425e-05, 5.453e-05, 5.422e-05, 5.435e-05, 20250.77446965], [1516922700000, 5.453e-05, 5.459e-05, 5.44e-05, 5.453e-05, 90250.34357936], [1516922760000, 5.453e-05, 5.453e-05, 5.445e-05, 5.452e-05, 11901.36770841], [1516922820000, 5.452e-05, 5.462e-05, 5.447e-05, 5.461e-05, 23639.32438158], [1516922880000, 5.458e-05, 5.462e-05, 5.453e-05, 5.462e-05, 31496.91331279], [1516922940000, 5.458e-05, 5.466e-05, 5.454e-05, 5.454e-05, 47453.4318252], [1516923000000, 5.455e-05, 5.455e-05, 5.453e-05, 5.455e-05, 35422.77476256], [1516923060000, 5.455e-05, 5.466e-05, 5.446e-05, 5.453e-05, 22286.73182754], [1516923120000, 5.453e-05, 5.465e-05, 5.426e-05, 5.465e-05, 44492.61714541], [1516923180000, 5.458e-05, 5.465e-05, 5.436e-05, 5.457e-05, 60906.07244371], [1516923240000, 5.455e-05, 5.455e-05, 5.437e-05, 5.449e-05, 34158.31269629], [1516923300000, 5.442e-05, 5.449e-05, 5.423e-05, 5.435e-05, 26900.12137726], [1516923360000, 5.434e-05, 5.435e-05, 5.43e-05, 5.431e-05, 102682.40939861], [1516923420000, 5.431e-05, 5.449e-05, 5.431e-05, 5.431e-05, 33911.52428961], [1516923480000, 5.434e-05, 5.435e-05, 5.43e-05, 5.435e-05, 20750.36126124], [1516923540000, 5.435e-05, 5.449e-05, 5.435e-05, 5.44e-05, 15486.53202517], [1516923600000, 5.44e-05, 5.443e-05, 5.435e-05, 5.435e-05, 41631.15560738], [1516923660000, 5.435e-05, 5.443e-05, 5.435e-05, 5.443e-05, 2514.58066134], [1516923720000, 5.436e-05, 5.444e-05, 5.435e-05, 5.443e-05, 59768.34027473], [1516923780000, 5.443e-05, 5.443e-05, 5.43e-05, 5.443e-05, 10984.40177429], [1516923840000, 5.43e-05, 5.443e-05, 5.43e-05, 5.443e-05, 19360.93953229], [1516923900000, 5.443e-05, 5.468e-05, 5.442e-05, 5.46e-05, 25611.43385665], [1516923960000, 5.458e-05, 5.46e-05, 5.42e-05, 5.42e-05, 33229.61512942], [1516924020000, 5.43e-05, 5.44e-05, 5.43e-05, 5.44e-05, 6994.51735641], [1516924080000, 5.44e-05, 5.44e-05, 5.434e-05, 5.44e-05, 18401.03988052], [1516924140000, 5.448e-05, 5.459e-05, 5.44e-05, 5.458e-05, 3492.6905226], [1516924200000, 5.458e-05, 5.459e-05, 5.44e-05, 5.45e-05, 13400.09616643], [1516924260000, 5.45e-05, 5.45e-05, 5.435e-05, 5.449e-05, 5947.03081851], [1516924320000, 5.449e-05, 5.449e-05, 5.436e-05, 5.449e-05, 16915.63218469], [1516924380000, 5.449e-05, 5.449e-05, 5.448e-05, 5.448e-05, 42260.36599272], [1516924440000, 5.44e-05, 5.447e-05, 5.436e-05, 5.447e-05, 7792.80486305], [1516924500000, 5.438e-05, 5.447e-05, 5.434e-05, 5.447e-05, 30065.9519273], [1516924560000, 5.434e-05, 5.434e-05, 5.418e-05, 5.42e-05, 36935.75915341], [1516924620000, 5.421e-05, 5.451e-05, 5.4e-05, 5.404e-05, 97719.11162068], [1516924680000, 5.401e-05, 5.445e-05, 5.401e-05, 5.416e-05, 8707.70532508], [1516924740000, 5.416e-05, 5.416e-05, 5.396e-05, 5.412e-05, 34612.20552786], [1516924800000, 5.407e-05, 5.412e-05, 5.351e-05, 5.351e-05, 253279.20426721], [1516924860000, 5.385e-05, 5.392e-05, 5.351e-05, 5.387e-05, 39206.0894975], [1516924920000, 5.387e-05, 5.39e-05, 5.346e-05, 5.346e-05, 46842.42767045], [1516924980000, 5.348e-05, 5.367e-05, 5.344e-05, 5.347e-05, 22512.80739886], [1516925040000, 5.347e-05, 5.361e-05, 5.344e-05, 5.345e-05, 74158.4538036], [1516925100000, 5.345e-05, 5.367e-05, 5.344e-05, 5.364e-05, 25421.70192485], [1516925160000, 5.364e-05, 5.396e-05, 5.36e-05, 5.36e-05, 36042.33129212], [1516925220000, 5.364e-05, 5.396e-05, 5.363e-05, 5.393e-05, 21213.34865516], [1516925280000, 5.368e-05, 5.393e-05, 5.366e-05, 5.367e-05, 15516.4050636], [1516925340000, 5.385e-05, 5.39e-05, 5.367e-05, 5.39e-05, 15789.66706146], [1516925400000, 5.39e-05, 5.396e-05, 5.387e-05, 5.396e-05, 48086.9832206], [1516925460000, 5.396e-05, 5.399e-05, 5.396e-05, 5.399e-05, 1923.86913774], [1516925520000, 5.397e-05, 5.416e-05, 5.397e-05, 5.416e-05, 17634.79389367], [1516925580000, 5.4e-05, 5.411e-05, 5.399e-05, 5.401e-05, 1611.37125799], [1516925640000, 5.401e-05, 5.415e-05, 5.4e-05, 5.403e-05, 23522.27423615], [1516925700000, 5.403e-05, 5.411e-05, 5.4e-05, 5.408e-05, 37347.13074235], [1516925760000, 5.411e-05, 5.411e-05, 5.403e-05, 5.403e-05, 10594.11355596], [1516925820000, 5.403e-05, 5.403e-05, 5.398e-05, 5.403e-05, 20796.03455088], [1516925880000, 5.41e-05, 5.41e-05, 5.403e-05, 5.403e-05, 7540.39686798], [1516925940000, 5.403e-05, 5.415e-05, 5.403e-05, 5.415e-05, 29205.07036859], [1516926000000, 5.41e-05, 5.41e-05, 5.41e-05, 5.41e-05, 8194.68352486], [1516926060000, 5.401e-05, 5.41e-05, 5.397e-05, 5.404e-05, 31992.3708065], [1516926120000, 5.403e-05, 5.404e-05, 5.403e-05, 5.404e-05, 4094.45589379], [1516926180000, 5.404e-05, 5.404e-05, 5.38e-05, 5.4e-05, 33436.07851779], [1516926240000, 5.4e-05, 5.404e-05, 5.382e-05, 5.404e-05, 10319.67796593], [1516926300000, 5.404e-05, 5.404e-05, 5.4e-05, 5.4e-05, 3680.41164566], [1516926360000, 5.4e-05, 5.4e-05, 5.385e-05, 5.4e-05, 66527.78490587], [1516926420000, 5.386e-05, 5.4e-05, 5.382e-05, 5.398e-05, 32200.37402265], [1516926480000, 5.398e-05, 5.4e-05, 5.387e-05, 5.387e-05, 28334.0959451], [1516926540000, 5.387e-05, 5.4e-05, 5.387e-05, 5.4e-05, 11873.17679993], [1516926600000, 5.398e-05, 5.41e-05, 5.398e-05, 5.41e-05, 83037.63829465], [1516926660000, 5.409e-05, 5.456e-05, 5.401e-05, 5.416e-05, 82244.08397445], [1516926720000, 5.401e-05, 5.494e-05, 5.401e-05, 5.489e-05, 166635.63611059], [1516926780000, 5.487e-05, 5.487e-05, 5.437e-05, 5.439e-05, 68737.31222508], [1516926840000, 5.439e-05, 5.457e-05, 5.439e-05, 5.448e-05, 74966.51649249], [1516926900000, 5.448e-05, 5.477e-05, 5.445e-05, 5.449e-05, 172421.4857894], [1516926960000, 5.463e-05, 5.495e-05, 5.463e-05, 5.494e-05, 65295.22773066], [1516927020000, 5.494e-05, 5.5e-05, 5.463e-05, 5.5e-05, 68062.60213383], [1516927080000, 5.497e-05, 5.513e-05, 5.479e-05, 5.513e-05, 63514.19446921], [1516927140000, 5.513e-05, 5.513e-05, 5.5e-05, 5.512e-05, 107842.13868142], [1516927200000, 5.502e-05, 5.522e-05, 5.476e-05, 5.501e-05, 112186.81083736], [1516927260000, 5.501e-05, 5.522e-05, 5.501e-05, 5.52e-05, 18928.00673961], [1516927320000, 5.52e-05, 5.522e-05, 5.495e-05, 5.499e-05, 88227.07952679], [1516927380000, 5.513e-05, 5.55e-05, 5.496e-05, 5.535e-05, 99427.59965324], [1516927440000, 5.535e-05, 5.555e-05, 5.52e-05, 5.542e-05, 80934.17598574], [1516927500000, 5.541e-05, 5.567e-05, 5.518e-05, 5.537e-05, 213756.34036045], [1516927560000, 5.537e-05, 5.57e-05, 5.517e-05, 5.54e-05, 131696.6217745], [1516927620000, 5.559e-05, 5.57e-05, 5.538e-05, 5.57e-05, 318683.71863838], [1516927680000, 5.551e-05, 5.58e-05, 5.544e-05, 5.577e-05, 84206.82237043], [1516927740000, 5.58e-05, 5.599e-05, 5.575e-05, 5.598e-05, 56444.36440678], [1516927800000, 5.598e-05, 5.598e-05, 5.581e-05, 5.589e-05, 85973.32851042], [1516927860000, 5.592e-05, 5.592e-05, 5.575e-05, 5.581e-05, 33139.06491479], [1516927920000, 5.575e-05, 5.576e-05, 5.542e-05, 5.546e-05, 163020.34852368], [1516927980000, 5.542e-05, 5.599e-05, 5.539e-05, 5.575e-05, 260940.75619788], [1516928040000, 5.577e-05, 5.595e-05, 5.571e-05, 5.586e-05, 117150.82924553], [1516928100000, 5.586e-05, 5.599e-05, 5.586e-05, 5.595e-05, 57698.50736029], [1516928160000, 5.595e-05, 5.595e-05, 5.587e-05, 5.589e-05, 15573.91067279], [1516928220000, 5.59e-05, 5.595e-05, 5.586e-05, 5.595e-05, 23989.07066369], [1516928280000, 5.594e-05, 5.603e-05, 5.591e-05, 5.601e-05, 140519.10320364], [1516928340000, 5.601e-05, 5.618e-05, 5.591e-05, 5.617e-05, 320014.37329165], [1516928400000, 5.604e-05, 5.617e-05, 5.59e-05, 5.591e-05, 135455.91698612], [1516928460000, 5.591e-05, 5.6e-05, 5.59e-05, 5.592e-05, 47233.58820062], [1516928520000, 5.599e-05, 5.6e-05, 5.589e-05, 5.591e-05, 29656.83651818], [1516928580000, 5.591e-05, 5.595e-05, 5.589e-05, 5.589e-05, 46020.85201668], [1516928640000, 5.589e-05, 5.589e-05, 5.576e-05, 5.576e-05, 28940.79654334], [1516928700000, 5.576e-05, 5.577e-05, 5.57e-05, 5.575e-05, 28291.75059913], [1516928760000, 5.575e-05, 5.575e-05, 5.568e-05, 5.569e-05, 32136.10095547], [1516928820000, 5.57e-05, 5.575e-05, 5.57e-05, 5.575e-05, 72892.11558076], [1516928880000, 5.576e-05, 5.602e-05, 5.575e-05, 5.602e-05, 47113.7344764], [1516928940000, 5.599e-05, 5.603e-05, 5.594e-05, 5.595e-05, 37884.4368221], [1516929000000, 5.594e-05, 5.595e-05, 5.59e-05, 5.59e-05, 51037.0382214], [1516929060000, 5.59e-05, 5.595e-05, 5.59e-05, 5.59e-05, 121422.97918925], [1516929120000, 5.59e-05, 5.59e-05, 5.586e-05, 5.586e-05, 13593.77128563], [1516929180000, 5.588e-05, 5.589e-05, 5.586e-05, 5.588e-05, 4880.26015458], [1516929240000, 5.586e-05, 5.588e-05, 5.586e-05, 5.587e-05, 10723.28876243], [1516929300000, 5.587e-05, 5.588e-05, 5.562e-05, 5.562e-05, 53876.90601393], [1516929360000, 5.567e-05, 5.572e-05, 5.546e-05, 5.56e-05, 118475.49464423], [1516929420000, 5.555e-05, 5.572e-05, 5.543e-05, 5.543e-05, 131261.10745448], [1516929480000, 5.543e-05, 5.56e-05, 5.53e-05, 5.543e-05, 46537.61804569], [1516929540000, 5.553e-05, 5.553e-05, 5.531e-05, 5.542e-05, 46992.24169836], [1516929600000, 5.535e-05, 5.54e-05, 5.535e-05, 5.539e-05, 21167.81224682], [1516929660000, 5.539e-05, 5.54e-05, 5.538e-05, 5.54e-05, 49286.91794131], [1516929720000, 5.543e-05, 5.543e-05, 5.538e-05, 5.539e-05, 47874.82306943], [1516929780000, 5.539e-05, 5.539e-05, 5.538e-05, 5.539e-05, 55325.42733733], [1516929840000, 5.538e-05, 5.541e-05, 5.533e-05, 5.533e-05, 71568.18120646], [1516929900000, 5.533e-05, 5.538e-05, 5.53e-05, 5.531e-05, 40254.84669511], [1516929960000, 5.537e-05, 5.543e-05, 5.536e-05, 5.537e-05, 18583.91130074], [1516930020000, 5.537e-05, 5.539e-05, 5.531e-05, 5.531e-05, 33955.7452159], [1516930080000, 5.531e-05, 5.537e-05, 5.53e-05, 5.53e-05, 14267.94972295], [1516930140000, 5.537e-05, 5.56e-05, 5.535e-05, 5.55e-05, 30802.01434923], [1516930200000, 5.56e-05, 5.579e-05, 5.53e-05, 5.558e-05, 126450.58327503], [1516930260000, 5.558e-05, 5.579e-05, 5.555e-05, 5.569e-05, 26250.32496566], [1516930320000, 5.556e-05, 5.566e-05, 5.544e-05, 5.556e-05, 35284.28251378], [1516930380000, 5.555e-05, 5.556e-05, 5.554e-05, 5.554e-05, 10179.95871276], [1516930440000, 5.55e-05, 5.574e-05, 5.539e-05, 5.554e-05, 55561.86378678], [1516930500000, 5.554e-05, 5.556e-05, 5.539e-05, 5.545e-05, 37613.85319679], [1516930560000, 5.545e-05, 5.579e-05, 5.539e-05, 5.579e-05, 70708.57691162], [1516930620000, 5.555e-05, 5.555e-05, 5.547e-05, 5.555e-05, 6371.03233371], [1516930680000, 5.549e-05, 5.555e-05, 5.539e-05, 5.546e-05, 38117.91259956], [1516930740000, 5.545e-05, 5.548e-05, 5.539e-05, 5.539e-05, 53404.60430828], [1516930800000, 5.539e-05, 5.545e-05, 5.52e-05, 5.533e-05, 63219.50199548], [1516930860000, 5.54e-05, 5.54e-05, 5.519e-05, 5.521e-05, 24967.26866802], [1516930920000, 5.521e-05, 5.54e-05, 5.5e-05, 5.521e-05, 69833.34949124], [1516930980000, 5.539e-05, 5.539e-05, 5.515e-05, 5.524e-05, 61253.78728794], [1516931040000, 5.524e-05, 5.524e-05, 5.486e-05, 5.5e-05, 83611.01835357], [1516931100000, 5.523e-05, 5.524e-05, 5.5e-05, 5.5e-05, 69587.92548311], [1516931160000, 5.5e-05, 5.524e-05, 5.5e-05, 5.5e-05, 32042.17196158], [1516931220000, 5.523e-05, 5.524e-05, 5.505e-05, 5.505e-05, 32042.64783625], [1516931280000, 5.505e-05, 5.51e-05, 5.499e-05, 5.5e-05, 58032.1941003], [1516931340000, 5.5e-05, 5.505e-05, 5.49e-05, 5.49e-05, 67457.25604637], [1516931400000, 5.49e-05, 5.501e-05, 5.47e-05, 5.48e-05, 179064.46384168], [1516931460000, 5.48e-05, 5.48e-05, 5.467e-05, 5.468e-05, 126309.04018286], [1516931520000, 5.468e-05, 5.48e-05, 5.467e-05, 5.48e-05, 95403.7538812], [1516931580000, 5.48e-05, 5.48e-05, 5.478e-05, 5.48e-05, 92707.01731085], [1516931640000, 5.48e-05, 5.48e-05, 5.476e-05, 5.48e-05, 22610.56571556], [1516931700000, 5.48e-05, 5.5e-05, 5.48e-05, 5.5e-05, 17014.8399648], [1516931760000, 5.483e-05, 5.5e-05, 5.483e-05, 5.5e-05, 35701.78913471], [1516931820000, 5.5e-05, 5.5e-05, 5.481e-05, 5.481e-05, 20992.17748153], [1516931880000, 5.481e-05, 5.481e-05, 5.468e-05, 5.468e-05, 111636.81672961], [1516931940000, 5.47e-05, 5.47e-05, 5.468e-05, 5.47e-05, 117943.63612119], [1516932000000, 5.47e-05, 5.495e-05, 5.463e-05, 5.471e-05, 23738.4348631], [1516932060000, 5.475e-05, 5.483e-05, 5.471e-05, 5.482e-05, 8179.92644176], [1516932120000, 5.482e-05, 5.482e-05, 5.47e-05, 5.481e-05, 14940.30953202], [1516932180000, 5.481e-05, 5.482e-05, 5.472e-05, 5.482e-05, 10636.0657749], [1516932240000, 5.482e-05, 5.483e-05, 5.481e-05, 5.483e-05, 35938.62183743], [1516932300000, 5.483e-05, 5.483e-05, 5.482e-05, 5.483e-05, 20601.46611882], [1516932360000, 5.483e-05, 5.483e-05, 5.481e-05, 5.483e-05, 34658.00183273], [1516932420000, 5.483e-05, 5.5e-05, 5.482e-05, 5.5e-05, 26640.90534945], [1516932480000, 5.499e-05, 5.505e-05, 5.499e-05, 5.505e-05, 56477.78052898], [1516932540000, 5.508e-05, 5.52e-05, 5.506e-05, 5.509e-05, 68105.78816877], [1516932600000, 5.519e-05, 5.52e-05, 5.509e-05, 5.52e-05, 28749.85452746], [1516932660000, 5.52e-05, 5.52e-05, 5.51e-05, 5.51e-05, 21306.70288011], [1516932720000, 5.51e-05, 5.51e-05, 5.509e-05, 5.51e-05, 19310.0515667], [1516932780000, 5.519e-05, 5.519e-05, 5.508e-05, 5.508e-05, 114361.936995], [1516932840000, 5.509e-05, 5.51e-05, 5.506e-05, 5.508e-05, 16519.98300054], [1516932900000, 5.508e-05, 5.508e-05, 5.508e-05, 5.508e-05, 5627.90993397], [1516932960000, 5.506e-05, 5.507e-05, 5.498e-05, 5.498e-05, 13162.21363543], [1516933020000, 5.504e-05, 5.507e-05, 5.481e-05, 5.481e-05, 12141.47545441], [1516933080000, 5.5e-05, 5.5e-05, 5.497e-05, 5.497e-05, 689.85385297], [1516933140000, 5.485e-05, 5.497e-05, 5.471e-05, 5.471e-05, 96454.13422869], [1516933200000, 5.471e-05, 5.485e-05, 5.471e-05, 5.485e-05, 78248.2420213], [1516933260000, 5.485e-05, 5.498e-05, 5.475e-05, 5.48e-05, 12453.09297223], [1516933320000, 5.483e-05, 5.5e-05, 5.48e-05, 5.487e-05, 11697.56137869], [1516933380000, 5.49e-05, 5.49e-05, 5.487e-05, 5.488e-05, 26579.19534618], [1516933440000, 5.488e-05, 5.489e-05, 5.468e-05, 5.48e-05, 36033.64946462], [1516933500000, 5.476e-05, 5.48e-05, 5.468e-05, 5.479e-05, 27817.62667347], [1516933560000, 5.471e-05, 5.49e-05, 5.471e-05, 5.489e-05, 15682.86584846], [1516933620000, 5.488e-05, 5.489e-05, 5.48e-05, 5.486e-05, 7301.23639201], [1516933680000, 5.486e-05, 5.503e-05, 5.48e-05, 5.489e-05, 35909.50335342], [1516933740000, 5.489e-05, 5.49e-05, 5.489e-05, 5.49e-05, 26938.28050318], [1516933800000, 5.49e-05, 5.518e-05, 5.489e-05, 5.504e-05, 60982.94567012], [1516933860000, 5.504e-05, 5.516e-05, 5.504e-05, 5.504e-05, 120790.37443104], [1516933920000, 5.504e-05, 5.514e-05, 5.504e-05, 5.514e-05, 130455.64849538], [1516933980000, 5.505e-05, 5.539e-05, 5.5e-05, 5.5e-05, 24459.0952085], [1516934040000, 5.5e-05, 5.51e-05, 5.5e-05, 5.502e-05, 8605.87601252], [1516934100000, 5.509e-05, 5.539e-05, 5.509e-05, 5.509e-05, 29095.25546544], [1516934160000, 5.509e-05, 5.539e-05, 5.503e-05, 5.527e-05, 28507.15683983], [1516934220000, 5.515e-05, 5.515e-05, 5.509e-05, 5.514e-05, 21494.0101652], [1516934280000, 5.514e-05, 5.536e-05, 5.5e-05, 5.535e-05, 48700.97626818], [1516934340000, 5.516e-05, 5.539e-05, 5.516e-05, 5.516e-05, 21910.5150901], [1516934400000, 5.532e-05, 5.532e-05, 5.516e-05, 5.529e-05, 14143.16583808], [1516934460000, 5.525e-05, 5.547e-05, 5.52e-05, 5.52e-05, 33832.45600136], [1516934520000, 5.52e-05, 5.525e-05, 5.52e-05, 5.525e-05, 8141.99617877], [1516934580000, 5.522e-05, 5.529e-05, 5.521e-05, 5.526e-05, 8282.66967332], [1516934640000, 5.527e-05, 5.547e-05, 5.526e-05, 5.542e-05, 14788.42773305], [1516934700000, 5.531e-05, 5.547e-05, 5.521e-05, 5.546e-05, 68566.932797], [1516934760000, 5.547e-05, 5.548e-05, 5.545e-05, 5.547e-05, 38424.30494778], [1516934820000, 5.548e-05, 5.555e-05, 5.547e-05, 5.555e-05, 58451.29242087], [1516934880000, 5.555e-05, 5.558e-05, 5.55e-05, 5.558e-05, 184241.57153151], [1516934940000, 5.555e-05, 5.556e-05, 5.546e-05, 5.547e-05, 69830.00076243], [1516935000000, 5.547e-05, 5.547e-05, 5.519e-05, 5.544e-05, 29604.02828428], [1516935060000, 5.544e-05, 5.544e-05, 5.523e-05, 5.524e-05, 5834.62664508], [1516935120000, 5.524e-05, 5.544e-05, 5.52e-05, 5.52e-05, 35488.0326153], [1516935180000, 5.541e-05, 5.541e-05, 5.519e-05, 5.519e-05, 12362.08775252], [1516935240000, 5.519e-05, 5.525e-05, 5.505e-05, 5.525e-05, 26670.55348388], [1516935300000, 5.525e-05, 5.541e-05, 5.525e-05, 5.541e-05, 17057.31669007], [1516935360000, 5.54e-05, 5.541e-05, 5.525e-05, 5.525e-05, 18775.38790886], [1516935420000, 5.525e-05, 5.525e-05, 5.514e-05, 5.52e-05, 4852.62057442], [1516935480000, 5.52e-05, 5.539e-05, 5.52e-05, 5.532e-05, 24229.0644917], [1516935540000, 5.532e-05, 5.542e-05, 5.524e-05, 5.54e-05, 10478.63871573], [1516935600000, 5.542e-05, 5.544e-05, 5.539e-05, 5.543e-05, 49448.97926286], [1516935660000, 5.542e-05, 5.543e-05, 5.537e-05, 5.539e-05, 42281.47942257], [1516935720000, 5.539e-05, 5.544e-05, 5.539e-05, 5.543e-05, 99500.44758357], [1516935780000, 5.54e-05, 5.565e-05, 5.539e-05, 5.539e-05, 46760.11937676], [1516935840000, 5.55e-05, 5.55e-05, 5.539e-05, 5.549e-05, 109116.49051469], [1516935900000, 5.549e-05, 5.55e-05, 5.54e-05, 5.549e-05, 29424.48987444], [1516935960000, 5.549e-05, 5.55e-05, 5.549e-05, 5.55e-05, 53594.07178421], [1516936020000, 5.55e-05, 5.579e-05, 5.55e-05, 5.551e-05, 22959.42959659], [1516936080000, 5.573e-05, 5.573e-05, 5.551e-05, 5.57e-05, 16001.11703302], [1516936140000, 5.57e-05, 5.57e-05, 5.555e-05, 5.555e-05, 13557.76894627], [1516936200000, 5.554e-05, 5.555e-05, 5.551e-05, 5.552e-05, 37033.02534773], [1516936260000, 5.551e-05, 5.555e-05, 5.55e-05, 5.555e-05, 30185.48080068], [1516936320000, 5.555e-05, 5.57e-05, 5.554e-05, 5.556e-05, 112690.30299641], [1516936380000, 5.557e-05, 5.57e-05, 5.556e-05, 5.556e-05, 60620.63795733], [1516936440000, 5.568e-05, 5.58e-05, 5.561e-05, 5.569e-05, 48850.08432318], [1516936500000, 5.569e-05, 5.58e-05, 5.56e-05, 5.58e-05, 32900.28199938], [1516936560000, 5.58e-05, 5.59e-05, 5.563e-05, 5.59e-05, 52163.53740345], [1516936620000, 5.59e-05, 5.598e-05, 5.555e-05, 5.598e-05, 130227.44940747], [1516936680000, 5.573e-05, 5.596e-05, 5.573e-05, 5.594e-05, 10611.65557549], [1516936740000, 5.594e-05, 5.597e-05, 5.572e-05, 5.596e-05, 168311.65042628], [1516936800000, 5.596e-05, 5.596e-05, 5.576e-05, 5.589e-05, 50313.12335491], [1516936860000, 5.589e-05, 5.593e-05, 5.576e-05, 5.584e-05, 38726.37231939], [1516936920000, 5.584e-05, 5.584e-05, 5.567e-05, 5.57e-05, 39033.06716976], [1516936980000, 5.567e-05, 5.582e-05, 5.561e-05, 5.58e-05, 106472.88839708], [1516937040000, 5.58e-05, 5.582e-05, 5.576e-05, 5.577e-05, 87694.06986133], [1516937100000, 5.58e-05, 5.583e-05, 5.578e-05, 5.581e-05, 22436.53591316], [1516937160000, 5.581e-05, 5.588e-05, 5.58e-05, 5.588e-05, 46789.65024653], [1516937220000, 5.58e-05, 5.589e-05, 5.576e-05, 5.587e-05, 162635.6284337], [1516937280000, 5.588e-05, 5.603e-05, 5.588e-05, 5.603e-05, 336076.21429453], [1516937340000, 5.602e-05, 5.61e-05, 5.6e-05, 5.6e-05, 67110.65086728], [1516937400000, 5.6e-05, 5.608e-05, 5.6e-05, 5.6e-05, 88824.4058752], [1516937460000, 5.6e-05, 5.608e-05, 5.597e-05, 5.597e-05, 40600.26759415], [1516937520000, 5.594e-05, 5.608e-05, 5.552e-05, 5.577e-05, 118640.69483008], [1516937580000, 5.576e-05, 5.577e-05, 5.576e-05, 5.577e-05, 31551.65501006], [1516937640000, 5.577e-05, 5.579e-05, 5.576e-05, 5.577e-05, 5457.29197766], [1516937700000, 5.578e-05, 5.579e-05, 5.577e-05, 5.578e-05, 16741.27696543], [1516937760000, 5.577e-05, 5.578e-05, 5.576e-05, 5.578e-05, 20870.82252312], [1516937820000, 5.578e-05, 5.588e-05, 5.578e-05, 5.588e-05, 18984.14653883], [1516937880000, 5.588e-05, 5.596e-05, 5.588e-05, 5.595e-05, 15307.73137024], [1516937940000, 5.595e-05, 5.598e-05, 5.576e-05, 5.576e-05, 72527.97095106], [1516938000000, 5.576e-05, 5.612e-05, 5.576e-05, 5.577e-05, 165297.58425193], [1516938060000, 5.606e-05, 5.618e-05, 5.576e-05, 5.61e-05, 107693.16665327], [1516938120000, 5.61e-05, 5.623e-05, 5.579e-05, 5.621e-05, 74936.09245379], [1516938180000, 5.6e-05, 5.624e-05, 5.6e-05, 5.615e-05, 79726.13550785], [1516938240000, 5.611e-05, 5.621e-05, 5.601e-05, 5.601e-05, 22524.40792673], [1516938300000, 5.602e-05, 5.621e-05, 5.601e-05, 5.607e-05, 45116.92896934], [1516938360000, 5.615e-05, 5.615e-05, 5.601e-05, 5.61e-05, 24031.13468888], [1516938420000, 5.61e-05, 5.611e-05, 5.597e-05, 5.611e-05, 66628.90961641], [1516938480000, 5.597e-05, 5.597e-05, 5.584e-05, 5.592e-05, 61265.09148162], [1516938540000, 5.592e-05, 5.609e-05, 5.587e-05, 5.608e-05, 36877.25494385], [1516938600000, 5.588e-05, 5.608e-05, 5.588e-05, 5.589e-05, 13123.53388632], [1516938660000, 5.592e-05, 5.604e-05, 5.591e-05, 5.604e-05, 42376.48392416], [1516938720000, 5.604e-05, 5.607e-05, 5.601e-05, 5.604e-05, 18145.21422957], [1516938780000, 5.604e-05, 5.607e-05, 5.601e-05, 5.605e-05, 21534.3807527], [1516938840000, 5.607e-05, 5.609e-05, 5.605e-05, 5.606e-05, 120050.79432797], [1516938900000, 5.606e-05, 5.606e-05, 5.589e-05, 5.591e-05, 10928.06511697], [1516938960000, 5.591e-05, 5.605e-05, 5.576e-05, 5.576e-05, 73552.5457946], [1516939020000, 5.576e-05, 5.578e-05, 5.558e-05, 5.56e-05, 41895.93518871], [1516939080000, 5.583e-05, 5.583e-05, 5.559e-05, 5.57e-05, 48206.27046378], [1516939140000, 5.561e-05, 5.599e-05, 5.559e-05, 5.56e-05, 47973.71644555], [1516939200000, 5.595e-05, 5.595e-05, 5.57e-05, 5.585e-05, 9229.61805454], [1516939260000, 5.571e-05, 5.584e-05, 5.571e-05, 5.571e-05, 17418.14173469], [1516939320000, 5.58e-05, 5.58e-05, 5.57e-05, 5.58e-05, 16959.97280189], [1516939380000, 5.571e-05, 5.58e-05, 5.561e-05, 5.58e-05, 11317.36080864], [1516939440000, 5.57e-05, 5.58e-05, 5.57e-05, 5.575e-05, 11106.6134801], [1516939500000, 5.575e-05, 5.58e-05, 5.565e-05, 5.57e-05, 37535.63145991], [1516939560000, 5.561e-05, 5.562e-05, 5.547e-05, 5.547e-05, 192051.65375916], [1516939620000, 5.55e-05, 5.573e-05, 5.544e-05, 5.573e-05, 136426.61840059], [1516939680000, 5.573e-05, 5.575e-05, 5.547e-05, 5.569e-05, 47037.31732602], [1516939740000, 5.552e-05, 5.575e-05, 5.552e-05, 5.571e-05, 22002.17033188], [1516939800000, 5.572e-05, 5.572e-05, 5.553e-05, 5.556e-05, 28636.81983006], [1516939860000, 5.556e-05, 5.556e-05, 5.55e-05, 5.556e-05, 11367.62449726], [1516939920000, 5.556e-05, 5.556e-05, 5.547e-05, 5.552e-05, 8955.2246191], [1516939980000, 5.549e-05, 5.552e-05, 5.544e-05, 5.547e-05, 45648.43397358], [1516940040000, 5.545e-05, 5.547e-05, 5.541e-05, 5.541e-05, 65600.44588275], [1516940100000, 5.541e-05, 5.546e-05, 5.487e-05, 5.538e-05, 116193.06528553], [1516940160000, 5.537e-05, 5.542e-05, 5.536e-05, 5.542e-05, 33128.29864799], [1516940220000, 5.542e-05, 5.542e-05, 5.507e-05, 5.542e-05, 24977.73255201], [1516940280000, 5.537e-05, 5.54e-05, 5.537e-05, 5.537e-05, 5162.64932591], [1516940340000, 5.537e-05, 5.54e-05, 5.517e-05, 5.517e-05, 26052.61378574], [1516940400000, 5.517e-05, 5.537e-05, 5.487e-05, 5.537e-05, 126627.4537008], [1516940460000, 5.519e-05, 5.536e-05, 5.505e-05, 5.534e-05, 5433.08381507], [1516940520000, 5.523e-05, 5.534e-05, 5.519e-05, 5.534e-05, 26441.45083377], [1516940580000, 5.534e-05, 5.534e-05, 5.524e-05, 5.524e-05, 64100.14986117], [1516940640000, 5.531e-05, 5.536e-05, 5.524e-05, 5.536e-05, 22824.76220289], [1516940700000, 5.528e-05, 5.534e-05, 5.5e-05, 5.5e-05, 44703.5830632], [1516940760000, 5.5e-05, 5.522e-05, 5.5e-05, 5.505e-05, 55200.10291287], [1516940820000, 5.505e-05, 5.522e-05, 5.487e-05, 5.518e-05, 28916.85169606], [1516940880000, 5.518e-05, 5.518e-05, 5.511e-05, 5.517e-05, 25962.7487403], [1516940940000, 5.517e-05, 5.518e-05, 5.511e-05, 5.517e-05, 39808.05363896], [1516941000000, 5.511e-05, 5.511e-05, 5.487e-05, 5.487e-05, 60276.14782427], [1516941060000, 5.49e-05, 5.509e-05, 5.489e-05, 5.506e-05, 88793.58860142], [1516941120000, 5.506e-05, 5.51e-05, 5.492e-05, 5.5e-05, 72656.8681601], [1516941180000, 5.499e-05, 5.51e-05, 5.499e-05, 5.503e-05, 55118.00927556], [1516941240000, 5.503e-05, 5.522e-05, 5.503e-05, 5.522e-05, 67594.01400635], [1516941300000, 5.514e-05, 5.522e-05, 5.51e-05, 5.516e-05, 80110.81215969], [1516941360000, 5.514e-05, 5.516e-05, 5.51e-05, 5.516e-05, 9232.75996368], [1516941420000, 5.516e-05, 5.53e-05, 5.516e-05, 5.522e-05, 37411.0378606], [1516941480000, 5.522e-05, 5.532e-05, 5.522e-05, 5.523e-05, 7520.78288056], [1516941540000, 5.517e-05, 5.532e-05, 5.517e-05, 5.532e-05, 12384.52203019], [1516941600000, 5.52e-05, 5.53e-05, 5.516e-05, 5.53e-05, 5153.95173755], [1516941660000, 5.53e-05, 5.53e-05, 5.525e-05, 5.53e-05, 6065.17215202], [1516941720000, 5.53e-05, 5.53e-05, 5.526e-05, 5.53e-05, 53646.27313892], [1516941780000, 5.53e-05, 5.53e-05, 5.53e-05, 5.53e-05, 4467.42025542], [1516941840000, 5.53e-05, 5.532e-05, 5.52e-05, 5.532e-05, 16121.12253356], [1516941900000, 5.53e-05, 5.532e-05, 5.516e-05, 5.53e-05, 58022.64737507], [1516941960000, 5.532e-05, 5.532e-05, 5.517e-05, 5.52e-05, 11541.17682512], [1516942020000, 5.529e-05, 5.529e-05, 5.519e-05, 5.519e-05, 6722.9846463], [1516942080000, 5.528e-05, 5.528e-05, 5.515e-05, 5.516e-05, 25411.4498069], [1516942140000, 5.516e-05, 5.528e-05, 5.515e-05, 5.519e-05, 89765.25729703], [1516942200000, 5.519e-05, 5.528e-05, 5.516e-05, 5.528e-05, 33460.32200456], [1516942260000, 5.527e-05, 5.527e-05, 5.523e-05, 5.523e-05, 12460.83796205], [1516942320000, 5.521e-05, 5.527e-05, 5.521e-05, 5.526e-05, 21944.80563313], [1516942380000, 5.523e-05, 5.527e-05, 5.523e-05, 5.527e-05, 15295.82220668], [1516942440000, 5.527e-05, 5.527e-05, 5.515e-05, 5.515e-05, 13951.92544826], [1516942500000, 5.515e-05, 5.525e-05, 5.515e-05, 5.515e-05, 16395.75013127], [1516942560000, 5.523e-05, 5.523e-05, 5.515e-05, 5.515e-05, 8110.69201985], [1516942620000, 5.515e-05, 5.515e-05, 5.5e-05, 5.5e-05, 31782.96400605], [1516942680000, 5.5e-05, 5.515e-05, 5.499e-05, 5.5e-05, 14931.83414216], [1516942740000, 5.5e-05, 5.5e-05, 5.497e-05, 5.497e-05, 40238.26869998], [1516942800000, 5.497e-05, 5.497e-05, 5.489e-05, 5.489e-05, 58337.46231079], [1516942860000, 5.489e-05, 5.497e-05, 5.486e-05, 5.486e-05, 70193.38547864], [1516942920000, 5.49e-05, 5.49e-05, 5.484e-05, 5.486e-05, 31320.91956356], [1516942980000, 5.485e-05, 5.497e-05, 5.484e-05, 5.496e-05, 79469.0835835], [1516943040000, 5.496e-05, 5.497e-05, 5.484e-05, 5.497e-05, 76935.13684943], [1516943100000, 5.497e-05, 5.497e-05, 5.496e-05, 5.497e-05, 69531.91807255], [1516943160000, 5.496e-05, 5.497e-05, 5.482e-05, 5.482e-05, 36629.11562694], [1516943220000, 5.482e-05, 5.496e-05, 5.477e-05, 5.479e-05, 57818.85205396], [1516943280000, 5.479e-05, 5.479e-05, 5.47e-05, 5.473e-05, 20475.63254113], [1516943340000, 5.473e-05, 5.495e-05, 5.473e-05, 5.476e-05, 47212.89776452], [1516943400000, 5.496e-05, 5.497e-05, 5.48e-05, 5.497e-05, 15795.77029245], [1516943460000, 5.497e-05, 5.497e-05, 5.48e-05, 5.48e-05, 25843.70873466], [1516943520000, 5.496e-05, 5.496e-05, 5.481e-05, 5.494e-05, 20257.39491756], [1516943580000, 5.496e-05, 5.496e-05, 5.494e-05, 5.494e-05, 30255.99448916], [1516943640000, 5.494e-05, 5.496e-05, 5.494e-05, 5.496e-05, 14111.55632951], [1516943700000, 5.495e-05, 5.496e-05, 5.482e-05, 5.495e-05, 18549.94186267], [1516943760000, 5.494e-05, 5.495e-05, 5.492e-05, 5.492e-05, 1276.32974676], [1516943820000, 5.492e-05, 5.493e-05, 5.482e-05, 5.49e-05, 43699.9828606], [1516943880000, 5.49e-05, 5.496e-05, 5.49e-05, 5.493e-05, 90157.99799786], [1516943940000, 5.494e-05, 5.496e-05, 5.474e-05, 5.493e-05, 48743.05638632], [1516944000000, 5.493e-05, 5.493e-05, 5.472e-05, 5.478e-05, 6441.9352808], [1516944060000, 5.492e-05, 5.492e-05, 5.478e-05, 5.479e-05, 26983.07493364], [1516944120000, 5.479e-05, 5.492e-05, 5.479e-05, 5.492e-05, 21173.27831667], [1516944180000, 5.491e-05, 5.491e-05, 5.478e-05, 5.491e-05, 3703.53405772], [1516944240000, 5.478e-05, 5.491e-05, 5.478e-05, 5.479e-05, 5850.14561285], [1516944300000, 5.478e-05, 5.484e-05, 5.47e-05, 5.47e-05, 35418.48869625], [1516944360000, 5.473e-05, 5.492e-05, 5.47e-05, 5.473e-05, 33418.49887786], [1516944420000, 5.49e-05, 5.495e-05, 5.473e-05, 5.491e-05, 101614.44589096], [1516944480000, 5.491e-05, 5.492e-05, 5.473e-05, 5.486e-05, 17738.5447939], [1516944540000, 5.486e-05, 5.49e-05, 5.485e-05, 5.49e-05, 18677.45593555], [1516944600000, 5.494e-05, 5.512e-05, 5.486e-05, 5.487e-05, 67284.24016684], [1516944660000, 5.513e-05, 5.525e-05, 5.489e-05, 5.515e-05, 24165.43002526], [1516944720000, 5.515e-05, 5.547e-05, 5.512e-05, 5.533e-05, 184809.65086478], [1516944780000, 5.546e-05, 5.556e-05, 5.533e-05, 5.548e-05, 111842.13379699], [1516944840000, 5.549e-05, 5.564e-05, 5.498e-05, 5.498e-05, 32519.89412528], [1516944900000, 5.563e-05, 5.563e-05, 5.499e-05, 5.537e-05, 7353.00833353], [1516944960000, 5.537e-05, 5.547e-05, 5.537e-05, 5.547e-05, 14714.18714933], [1516945020000, 5.547e-05, 5.55e-05, 5.538e-05, 5.548e-05, 14544.26278146], [1516945080000, 5.55e-05, 5.564e-05, 5.55e-05, 5.555e-05, 11628.34997128], [1516945140000, 5.557e-05, 5.557e-05, 5.549e-05, 5.555e-05, 15111.22931795], [1516945200000, 5.555e-05, 5.557e-05, 5.549e-05, 5.549e-05, 21658.92199885], [1516945260000, 5.549e-05, 5.555e-05, 5.549e-05, 5.555e-05, 15893.88929246], [1516945320000, 5.555e-05, 5.555e-05, 5.549e-05, 5.555e-05, 34222.86157375], [1516945380000, 5.555e-05, 5.556e-05, 5.537e-05, 5.537e-05, 53590.91363339], [1516945440000, 5.537e-05, 5.555e-05, 5.521e-05, 5.537e-05, 11678.23493182], [1516945500000, 5.549e-05, 5.555e-05, 5.537e-05, 5.549e-05, 6230.03968496], [1516945560000, 5.549e-05, 5.556e-05, 5.549e-05, 5.556e-05, 116788.58823301], [1516945620000, 5.556e-05, 5.556e-05, 5.555e-05, 5.555e-05, 75143.15302675], [1516945680000, 5.555e-05, 5.556e-05, 5.554e-05, 5.556e-05, 37647.22892213], [1516945740000, 5.555e-05, 5.556e-05, 5.549e-05, 5.556e-05, 11631.38321093], [1516945800000, 5.549e-05, 5.556e-05, 5.549e-05, 5.555e-05, 82693.14895675], [1516945860000, 5.555e-05, 5.556e-05, 5.555e-05, 5.556e-05, 22804.29394075], [1516945920000, 5.555e-05, 5.556e-05, 5.555e-05, 5.556e-05, 83440.60598819], [1516945980000, 5.555e-05, 5.556e-05, 5.553e-05, 5.553e-05, 29293.8076264], [1516946040000, 5.553e-05, 5.553e-05, 5.547e-05, 5.553e-05, 1560.86345973], [1516946100000, 5.553e-05, 5.553e-05, 5.52e-05, 5.52e-05, 27728.72134919], [1516946160000, 5.52e-05, 5.55e-05, 5.52e-05, 5.52e-05, 3111.54220098], [1516946220000, 5.52e-05, 5.548e-05, 5.52e-05, 5.548e-05, 6824.20406733], [1516946280000, 5.548e-05, 5.548e-05, 5.52e-05, 5.52e-05, 28894.2537189], [1516946340000, 5.52e-05, 5.52e-05, 5.514e-05, 5.518e-05, 39031.49156676], [1516946400000, 5.515e-05, 5.52e-05, 5.502e-05, 5.52e-05, 112502.97825512], [1516946460000, 5.52e-05, 5.545e-05, 5.52e-05, 5.529e-05, 4394.86721591], [1516946520000, 5.542e-05, 5.553e-05, 5.529e-05, 5.533e-05, 47833.49407144], [1516946580000, 5.535e-05, 5.549e-05, 5.535e-05, 5.535e-05, 3880.41132016], [1516946640000, 5.549e-05, 5.549e-05, 5.531e-05, 5.531e-05, 23653.31643206], [1516946700000, 5.532e-05, 5.548e-05, 5.52e-05, 5.52e-05, 29257.73708236], [1516946760000, 5.532e-05, 5.548e-05, 5.532e-05, 5.537e-05, 38907.41530748], [1516946820000, 5.548e-05, 5.548e-05, 5.535e-05, 5.547e-05, 21587.13934022], [1516946880000, 5.545e-05, 5.547e-05, 5.539e-05, 5.544e-05, 5672.59750501], [1516946940000, 5.541e-05, 5.546e-05, 5.54e-05, 5.54e-05, 2329.07668653], [1516947000000, 5.54e-05, 5.548e-05, 5.537e-05, 5.547e-05, 33570.81755184], [1516947060000, 5.54e-05, 5.547e-05, 5.54e-05, 5.547e-05, 20357.88295787], [1516947120000, 5.547e-05, 5.548e-05, 5.547e-05, 5.548e-05, 16658.13158039], [1516947180000, 5.548e-05, 5.549e-05, 5.547e-05, 5.547e-05, 16932.02747375], [1516947240000, 5.547e-05, 5.549e-05, 5.544e-05, 5.545e-05, 9019.29947377], [1516947300000, 5.544e-05, 5.549e-05, 5.544e-05, 5.549e-05, 13844.02298032], [1516947360000, 5.547e-05, 5.549e-05, 5.545e-05, 5.547e-05, 2700.84405912], [1516947420000, 5.549e-05, 5.56e-05, 5.547e-05, 5.559e-05, 63895.12777565], [1516947480000, 5.559e-05, 5.559e-05, 5.547e-05, 5.55e-05, 5577.56302165], [1516947540000, 5.557e-05, 5.561e-05, 5.551e-05, 5.56e-05, 2672.86310662], [1516947600000, 5.56e-05, 5.561e-05, 5.551e-05, 5.56e-05, 6152.56592904], [1516947660000, 5.564e-05, 5.564e-05, 5.56e-05, 5.562e-05, 8186.26185017], [1516947720000, 5.562e-05, 5.565e-05, 5.56e-05, 5.562e-05, 15295.58189045], [1516947780000, 5.562e-05, 5.565e-05, 5.562e-05, 5.562e-05, 23383.50212593], [1516947840000, 5.562e-05, 5.564e-05, 5.55e-05, 5.55e-05, 22679.95754027], [1516947900000, 5.562e-05, 5.565e-05, 5.55e-05, 5.564e-05, 94713.65098073], [1516947960000, 5.564e-05, 5.565e-05, 5.564e-05, 5.564e-05, 67733.3821281], [1516948020000, 5.564e-05, 5.568e-05, 5.564e-05, 5.564e-05, 40039.37020282], [1516948080000, 5.564e-05, 5.576e-05, 5.564e-05, 5.576e-05, 91396.01580299], [1516948140000, 5.575e-05, 5.575e-05, 5.57e-05, 5.573e-05, 14154.74792472], [1516948200000, 5.573e-05, 5.573e-05, 5.568e-05, 5.57e-05, 31521.52000865], [1516948260000, 5.569e-05, 5.573e-05, 5.568e-05, 5.57e-05, 17080.68736357], [1516948320000, 5.57e-05, 5.573e-05, 5.568e-05, 5.573e-05, 27697.47461434], [1516948380000, 5.574e-05, 5.574e-05, 5.573e-05, 5.574e-05, 19679.76013462], [1516948440000, 5.575e-05, 5.577e-05, 5.575e-05, 5.577e-05, 160038.32182613], [1516948500000, 5.576e-05, 5.577e-05, 5.575e-05, 5.576e-05, 88196.64893767], [1516948560000, 5.576e-05, 5.577e-05, 5.575e-05, 5.576e-05, 26686.59889168], [1516948620000, 5.577e-05, 5.577e-05, 5.576e-05, 5.576e-05, 65626.39326922], [1516948680000, 5.576e-05, 5.585e-05, 5.576e-05, 5.579e-05, 17191.74514785], [1516948740000, 5.579e-05, 5.585e-05, 5.576e-05, 5.576e-05, 108766.88905833], [1516948800000, 5.577e-05, 5.588e-05, 5.577e-05, 5.577e-05, 25272.29083302], [1516948860000, 5.578e-05, 5.578e-05, 5.573e-05, 5.577e-05, 24985.20241124], [1516948920000, 5.578e-05, 5.59e-05, 5.578e-05, 5.578e-05, 10967.18863582], [1516948980000, 5.59e-05, 5.59e-05, 5.576e-05, 5.576e-05, 18135.21571394], [1516949040000, 5.576e-05, 5.576e-05, 5.552e-05, 5.57e-05, 32446.46050305], [1516949100000, 5.57e-05, 5.57e-05, 5.545e-05, 5.546e-05, 88669.39526944], [1516949160000, 5.546e-05, 5.552e-05, 5.546e-05, 5.552e-05, 129254.76896699], [1516949220000, 5.565e-05, 5.565e-05, 5.544e-05, 5.553e-05, 124197.43123744], [1516949280000, 5.553e-05, 5.564e-05, 5.553e-05, 5.553e-05, 54966.99001937], [1516949340000, 5.563e-05, 5.565e-05, 5.53e-05, 5.565e-05, 180584.40366437], [1516949400000, 5.564e-05, 5.564e-05, 5.55e-05, 5.55e-05, 20698.37236786], [1516949460000, 5.55e-05, 5.564e-05, 5.55e-05, 5.551e-05, 7148.83381347], [1516949520000, 5.551e-05, 5.563e-05, 5.551e-05, 5.552e-05, 5305.88345621], [1516949580000, 5.552e-05, 5.565e-05, 5.551e-05, 5.565e-05, 103912.02426754], [1516949640000, 5.565e-05, 5.59e-05, 5.532e-05, 5.551e-05, 156554.2689771], [1516949700000, 5.585e-05, 5.6e-05, 5.551e-05, 5.554e-05, 152189.33282078], [1516949760000, 5.555e-05, 5.591e-05, 5.554e-05, 5.555e-05, 30916.62610131], [1516949820000, 5.554e-05, 5.588e-05, 5.554e-05, 5.555e-05, 7602.4919334], [1516949880000, 5.579e-05, 5.582e-05, 5.554e-05, 5.578e-05, 7421.275529], [1516949940000, 5.572e-05, 5.572e-05, 5.554e-05, 5.571e-05, 14013.33157404], [1516950000000, 5.57e-05, 5.57e-05, 5.554e-05, 5.555e-05, 15347.7469671], [1516950060000, 5.556e-05, 5.556e-05, 5.554e-05, 5.555e-05, 10602.0971878], [1516950120000, 5.555e-05, 5.566e-05, 5.551e-05, 5.566e-05, 20198.2265865], [1516950180000, 5.565e-05, 5.566e-05, 5.551e-05, 5.565e-05, 26795.54100693], [1516950240000, 5.565e-05, 5.565e-05, 5.551e-05, 5.561e-05, 2030.87037451], [1516950300000, 5.552e-05, 5.559e-05, 5.551e-05, 5.558e-05, 20250.62451235], [1516950360000, 5.558e-05, 5.559e-05, 5.551e-05, 5.554e-05, 15995.33693162], [1516950420000, 5.552e-05, 5.552e-05, 5.53e-05, 5.53e-05, 22926.47475579], [1516950480000, 5.528e-05, 5.53e-05, 5.528e-05, 5.53e-05, 7832.49337794], [1516950540000, 5.53e-05, 5.55e-05, 5.52e-05, 5.52e-05, 25093.5743307], [1516950600000, 5.52e-05, 5.52e-05, 5.514e-05, 5.519e-05, 21869.69362072], [1516950660000, 5.521e-05, 5.527e-05, 5.519e-05, 5.522e-05, 26067.76349117], [1516950720000, 5.524e-05, 5.526e-05, 5.523e-05, 5.526e-05, 19241.40299615], [1516950780000, 5.525e-05, 5.526e-05, 5.514e-05, 5.525e-05, 95496.83167725], [1516950840000, 5.525e-05, 5.527e-05, 5.52e-05, 5.526e-05, 98258.64917607], [1516950900000, 5.527e-05, 5.536e-05, 5.503e-05, 5.508e-05, 25501.64814901], [1516950960000, 5.509e-05, 5.53e-05, 5.509e-05, 5.527e-05, 9864.01047061], [1516951020000, 5.516e-05, 5.527e-05, 5.515e-05, 5.516e-05, 14330.32685514], [1516951080000, 5.516e-05, 5.516e-05, 5.501e-05, 5.502e-05, 11634.5965495], [1516951140000, 5.513e-05, 5.513e-05, 5.5e-05, 5.5e-05, 53962.27823362], [1516951200000, 5.501e-05, 5.507e-05, 5.5e-05, 5.501e-05, 8419.58119217], [1516951260000, 5.508e-05, 5.508e-05, 5.503e-05, 5.503e-05, 41955.04578209], [1516951320000, 5.507e-05, 5.526e-05, 5.507e-05, 5.526e-05, 45917.89206425], [1516951380000, 5.516e-05, 5.526e-05, 5.515e-05, 5.526e-05, 35960.50336972], [1516951440000, 5.52e-05, 5.526e-05, 5.515e-05, 5.515e-05, 32032.94820135], [1516951500000, 5.515e-05, 5.524e-05, 5.509e-05, 5.524e-05, 65474.84071752], [1516951560000, 5.524e-05, 5.524e-05, 5.52e-05, 5.524e-05, 22718.54217815], [1516951620000, 5.521e-05, 5.524e-05, 5.52e-05, 5.52e-05, 15128.52812387], [1516951680000, 5.52e-05, 5.524e-05, 5.52e-05, 5.521e-05, 21202.2058091], [1516951740000, 5.521e-05, 5.539e-05, 5.52e-05, 5.529e-05, 49077.06855281], [1516951800000, 5.528e-05, 5.528e-05, 5.503e-05, 5.52e-05, 13130.73746119], [1516951860000, 5.52e-05, 5.528e-05, 5.485e-05, 5.519e-05, 54356.72177367], [1516951920000, 5.519e-05, 5.519e-05, 5.504e-05, 5.504e-05, 18301.28688918], [1516951980000, 5.503e-05, 5.503e-05, 5.499e-05, 5.5e-05, 22355.45203994], [1516952040000, 5.499e-05, 5.503e-05, 5.49e-05, 5.502e-05, 48440.79745773], [1516952100000, 5.502e-05, 5.502e-05, 5.478e-05, 5.492e-05, 60770.79820047], [1516952160000, 5.492e-05, 5.504e-05, 5.475e-05, 5.504e-05, 104383.02302962], [1516952220000, 5.504e-05, 5.52e-05, 5.483e-05, 5.492e-05, 109279.77446882], [1516952280000, 5.492e-05, 5.522e-05, 5.492e-05, 5.501e-05, 8343.67515694], [1516952340000, 5.501e-05, 5.517e-05, 5.501e-05, 5.51e-05, 14941.59807331], [1516952400000, 5.51e-05, 5.515e-05, 5.51e-05, 5.51e-05, 68199.53084439], [1516952460000, 5.51e-05, 5.51e-05, 5.506e-05, 5.506e-05, 14897.76496167], [1516952520000, 5.506e-05, 5.506e-05, 5.501e-05, 5.503e-05, 6694.3524648], [1516952580000, 5.502e-05, 5.502e-05, 5.47e-05, 5.47e-05, 99896.71896942], [1516952640000, 5.492e-05, 5.499e-05, 5.47e-05, 5.499e-05, 53973.38213047], [1516952700000, 5.474e-05, 5.499e-05, 5.472e-05, 5.499e-05, 452857.96312138], [1516952760000, 5.499e-05, 5.515e-05, 5.478e-05, 5.496e-05, 154614.91351082], [1516952820000, 5.496e-05, 5.5e-05, 5.481e-05, 5.496e-05, 46376.59021406], [1516952880000, 5.496e-05, 5.505e-05, 5.495e-05, 5.495e-05, 81623.05095894], [1516952940000, 5.495e-05, 5.498e-05, 5.472e-05, 5.497e-05, 68962.32836996], [1516953000000, 5.5e-05, 5.52e-05, 5.473e-05, 5.473e-05, 107083.60714894], [1516953060000, 5.49e-05, 5.502e-05, 5.471e-05, 5.484e-05, 70498.07164628], [1516953120000, 5.485e-05, 5.491e-05, 5.481e-05, 5.482e-05, 21366.75659859], [1516953180000, 5.483e-05, 5.485e-05, 5.483e-05, 5.485e-05, 43754.56064204], [1516953240000, 5.485e-05, 5.493e-05, 5.484e-05, 5.484e-05, 24433.57766001], [1516953300000, 5.484e-05, 5.485e-05, 5.453e-05, 5.453e-05, 105496.01985932], [1516953360000, 5.474e-05, 5.484e-05, 5.455e-05, 5.46e-05, 396754.31234608], [1516953420000, 5.484e-05, 5.484e-05, 5.458e-05, 5.46e-05, 76442.08465773], [1516953480000, 5.46e-05, 5.473e-05, 5.449e-05, 5.458e-05, 118746.09004608], [1516953540000, 5.458e-05, 5.458e-05, 5.439e-05, 5.439e-05, 43202.31796487], [1516953600000, 5.441e-05, 5.458e-05, 5.432e-05, 5.45e-05, 326873.58183149], [1516953660000, 5.454e-05, 5.458e-05, 5.45e-05, 5.452e-05, 78595.98470633], [1516953720000, 5.452e-05, 5.484e-05, 5.452e-05, 5.463e-05, 119505.46695873], [1516953780000, 5.472e-05, 5.477e-05, 5.46e-05, 5.464e-05, 261436.75145392], [1516953840000, 5.464e-05, 5.465e-05, 5.42e-05, 5.422e-05, 149218.94699529], [1516953900000, 5.422e-05, 5.45e-05, 5.409e-05, 5.446e-05, 148824.59006301], [1516953960000, 5.435e-05, 5.451e-05, 5.412e-05, 5.421e-05, 194201.34356004], [1516954020000, 5.422e-05, 5.47e-05, 5.42e-05, 5.424e-05, 205449.60909468], [1516954080000, 5.425e-05, 5.436e-05, 5.404e-05, 5.422e-05, 197835.40472679], [1516954140000, 5.422e-05, 5.452e-05, 5.404e-05, 5.439e-05, 134954.3901786], [1516954200000, 5.409e-05, 5.47e-05, 5.404e-05, 5.439e-05, 168744.91055702], [1516954260000, 5.407e-05, 5.478e-05, 5.404e-05, 5.438e-05, 397908.63206366], [1516954320000, 5.439e-05, 5.442e-05, 5.404e-05, 5.438e-05, 360369.61469205], [1516954380000, 5.438e-05, 5.467e-05, 5.402e-05, 5.414e-05, 302327.62996096], [1516954440000, 5.464e-05, 5.464e-05, 5.418e-05, 5.441e-05, 87570.66728429], [1516954500000, 5.431e-05, 5.46e-05, 5.431e-05, 5.435e-05, 66247.89493027], [1516954560000, 5.459e-05, 5.459e-05, 5.437e-05, 5.458e-05, 39457.69500394], [1516954620000, 5.446e-05, 5.46e-05, 5.443e-05, 5.45e-05, 117243.64243394], [1516954680000, 5.462e-05, 5.478e-05, 5.443e-05, 5.446e-05, 98717.42015183], [1516954740000, 5.453e-05, 5.465e-05, 5.443e-05, 5.443e-05, 20170.88721957], [1516954800000, 5.443e-05, 5.469e-05, 5.441e-05, 5.444e-05, 120527.61551021], [1516954860000, 5.446e-05, 5.469e-05, 5.444e-05, 5.444e-05, 53033.09681809], [1516954920000, 5.444e-05, 5.445e-05, 5.441e-05, 5.441e-05, 53648.90039945], [1516954980000, 5.441e-05, 5.442e-05, 5.414e-05, 5.414e-05, 29467.99471873], [1516955040000, 5.414e-05, 5.414e-05, 5.4e-05, 5.4e-05, 108422.08507385], [1516955100000, 5.4e-05, 5.414e-05, 5.37e-05, 5.383e-05, 207193.24454746], [1516955160000, 5.37e-05, 5.402e-05, 5.365e-05, 5.4e-05, 227250.62301496], [1516955220000, 5.4e-05, 5.401e-05, 5.352e-05, 5.389e-05, 338768.08041435], [1516955280000, 5.389e-05, 5.401e-05, 5.373e-05, 5.373e-05, 118776.03980958], [1516955340000, 5.374e-05, 5.388e-05, 5.356e-05, 5.37e-05, 44314.88223569], [1516955400000, 5.356e-05, 5.365e-05, 5.351e-05, 5.351e-05, 68943.74753888], [1516955460000, 5.359e-05, 5.369e-05, 5.34e-05, 5.34e-05, 204014.50936775], [1516955520000, 5.34e-05, 5.38e-05, 5.333e-05, 5.342e-05, 134901.76025105], [1516955580000, 5.342e-05, 5.362e-05, 5.34e-05, 5.359e-05, 295175.80007258], [1516955640000, 5.352e-05, 5.396e-05, 5.333e-05, 5.382e-05, 252581.790018], [1516955700000, 5.382e-05, 5.395e-05, 5.366e-05, 5.384e-05, 359865.59684361], [1516955760000, 5.384e-05, 5.395e-05, 5.366e-05, 5.374e-05, 85205.92472428], [1516955820000, 5.375e-05, 5.4e-05, 5.375e-05, 5.379e-05, 97368.25269951], [1516955880000, 5.4e-05, 5.44e-05, 5.4e-05, 5.415e-05, 186288.04706954], [1516955940000, 5.415e-05, 5.449e-05, 5.414e-05, 5.448e-05, 154141.61637493], [1516956000000, 5.448e-05, 5.45e-05, 5.425e-05, 5.43e-05, 54346.4784051], [1516956060000, 5.448e-05, 5.449e-05, 5.42e-05, 5.42e-05, 75113.81919591], [1516956120000, 5.42e-05, 5.429e-05, 5.419e-05, 5.421e-05, 81045.95430245], [1516956180000, 5.429e-05, 5.44e-05, 5.421e-05, 5.435e-05, 64751.70699617], [1516956240000, 5.436e-05, 5.445e-05, 5.421e-05, 5.428e-05, 120462.41753375], [1516956300000, 5.428e-05, 5.443e-05, 5.428e-05, 5.44e-05, 24009.70973098], [1516956360000, 5.44e-05, 5.459e-05, 5.437e-05, 5.456e-05, 59216.86580521], [1516956420000, 5.456e-05, 5.473e-05, 5.427e-05, 5.459e-05, 92787.52976686], [1516956480000, 5.459e-05, 5.46e-05, 5.447e-05, 5.452e-05, 46855.05605539], [1516956540000, 5.458e-05, 5.462e-05, 5.449e-05, 5.462e-05, 17309.28788674], [1516956600000, 5.471e-05, 5.473e-05, 5.462e-05, 5.473e-05, 154434.06534899], [1516956660000, 5.472e-05, 5.473e-05, 5.457e-05, 5.458e-05, 64540.96132278], [1516956720000, 5.461e-05, 5.472e-05, 5.455e-05, 5.458e-05, 59149.8369027], [1516956780000, 5.471e-05, 5.481e-05, 5.461e-05, 5.474e-05, 25405.46147928], [1516956840000, 5.481e-05, 5.481e-05, 5.461e-05, 5.481e-05, 14464.14233348], [1516956900000, 5.462e-05, 5.483e-05, 5.462e-05, 5.483e-05, 18117.28063827], [1516956960000, 5.483e-05, 5.485e-05, 5.483e-05, 5.483e-05, 17301.39751314], [1516957020000, 5.483e-05, 5.484e-05, 5.458e-05, 5.48e-05, 74173.83240804], [1516957080000, 5.483e-05, 5.487e-05, 5.48e-05, 5.484e-05, 34992.25698196], [1516957140000, 5.486e-05, 5.494e-05, 5.484e-05, 5.487e-05, 35975.28886408], [1516957200000, 5.485e-05, 5.485e-05, 5.461e-05, 5.462e-05, 26464.79927247], [1516957260000, 5.462e-05, 5.481e-05, 5.462e-05, 5.481e-05, 6853.69980352], [1516957320000, 5.481e-05, 5.482e-05, 5.48e-05, 5.48e-05, 28314.23057102], [1516957380000, 5.48e-05, 5.48e-05, 5.465e-05, 5.465e-05, 30159.08963131], [1516957440000, 5.475e-05, 5.475e-05, 5.464e-05, 5.464e-05, 21694.22337304], [1516957500000, 5.464e-05, 5.474e-05, 5.43e-05, 5.43e-05, 29199.05283777], [1516957560000, 5.444e-05, 5.444e-05, 5.427e-05, 5.428e-05, 8225.56685621], [1516957620000, 5.428e-05, 5.444e-05, 5.421e-05, 5.421e-05, 31056.5353931], [1516957680000, 5.428e-05, 5.444e-05, 5.421e-05, 5.428e-05, 17790.51613003], [1516957740000, 5.422e-05, 5.428e-05, 5.421e-05, 5.421e-05, 31964.33157992], [1516957800000, 5.428e-05, 5.442e-05, 5.421e-05, 5.431e-05, 20771.55897097], [1516957860000, 5.433e-05, 5.444e-05, 5.433e-05, 5.444e-05, 103968.25893378], [1516957920000, 5.434e-05, 5.444e-05, 5.434e-05, 5.444e-05, 74003.72861943], [1516957980000, 5.435e-05, 5.44e-05, 5.434e-05, 5.435e-05, 8595.15000604], [1516958040000, 5.443e-05, 5.444e-05, 5.434e-05, 5.436e-05, 127298.82543979], [1516958100000, 5.444e-05, 5.445e-05, 5.433e-05, 5.436e-05, 130047.27366953], [1516958160000, 5.436e-05, 5.436e-05, 5.432e-05, 5.434e-05, 84052.69890994], [1516958220000, 5.434e-05, 5.434e-05, 5.432e-05, 5.432e-05, 4884.25023008], [1516958280000, 5.432e-05, 5.436e-05, 5.432e-05, 5.433e-05, 22821.35544929], [1516958340000, 5.433e-05, 5.436e-05, 5.429e-05, 5.431e-05, 13000.38349925], [1516958400000, 5.431e-05, 5.436e-05, 5.429e-05, 5.429e-05, 124481.21829457], [1516958460000, 5.428e-05, 5.435e-05, 5.411e-05, 5.435e-05, 130653.36172766], [1516958520000, 5.412e-05, 5.435e-05, 5.4e-05, 5.41e-05, 203057.38096008], [1516958580000, 5.41e-05, 5.435e-05, 5.4e-05, 5.435e-05, 207568.88966466], [1516958640000, 5.435e-05, 5.44e-05, 5.435e-05, 5.436e-05, 2596.71207708], [1516958700000, 5.436e-05, 5.437e-05, 5.436e-05, 5.436e-05, 20210.25734166], [1516958760000, 5.436e-05, 5.44e-05, 5.43e-05, 5.44e-05, 140997.60809935], [1516958820000, 5.413e-05, 5.472e-05, 5.413e-05, 5.465e-05, 95605.03183771], [1516958880000, 5.445e-05, 5.472e-05, 5.44e-05, 5.443e-05, 51375.88153381], [1516958940000, 5.444e-05, 5.47e-05, 5.434e-05, 5.47e-05, 126547.28403156], [1516959000000, 5.444e-05, 5.444e-05, 5.433e-05, 5.44e-05, 181047.10719137], [1516959060000, 5.44e-05, 5.44e-05, 5.44e-05, 5.44e-05, 12029.67399349], [1516959120000, 5.44e-05, 5.464e-05, 5.44e-05, 5.464e-05, 29777.82345232], [1516959180000, 5.442e-05, 5.464e-05, 5.44e-05, 5.442e-05, 19904.42060894], [1516959240000, 5.442e-05, 5.442e-05, 5.44e-05, 5.44e-05, 7201.68201765], [1516959300000, 5.44e-05, 5.441e-05, 5.405e-05, 5.406e-05, 32153.83385885], [1516959360000, 5.407e-05, 5.433e-05, 5.4e-05, 5.407e-05, 76228.55676069], [1516959420000, 5.408e-05, 5.433e-05, 5.407e-05, 5.409e-05, 110227.46405443], [1516959480000, 5.408e-05, 5.409e-05, 5.376e-05, 5.376e-05, 31863.22910511], [1516959540000, 5.394e-05, 5.44e-05, 5.375e-05, 5.396e-05, 21488.21010071], [1516959600000, 5.4e-05, 5.425e-05, 5.4e-05, 5.404e-05, 54446.65760325], [1516959660000, 5.404e-05, 5.41e-05, 5.4e-05, 5.41e-05, 80156.84743891], [1516959720000, 5.41e-05, 5.41e-05, 5.404e-05, 5.405e-05, 21697.14997066], [1516959780000, 5.41e-05, 5.41e-05, 5.405e-05, 5.405e-05, 2989.03011627], [1516959840000, 5.405e-05, 5.436e-05, 5.405e-05, 5.425e-05, 8724.26136413], [1516959900000, 5.425e-05, 5.43e-05, 5.41e-05, 5.41e-05, 14299.42063263], [1516959960000, 5.41e-05, 5.425e-05, 5.4e-05, 5.412e-05, 43859.05650751], [1516960020000, 5.412e-05, 5.422e-05, 5.412e-05, 5.413e-05, 12321.98439659], [1516960080000, 5.413e-05, 5.418e-05, 5.36e-05, 5.375e-05, 89098.47592321], [1516960140000, 5.375e-05, 5.393e-05, 5.355e-05, 5.37e-05, 69781.36125031], [1516960200000, 5.37e-05, 5.375e-05, 5.342e-05, 5.343e-05, 69720.13755562], [1516960260000, 5.342e-05, 5.371e-05, 5.31e-05, 5.313e-05, 75897.03022249], [1516960320000, 5.311e-05, 5.313e-05, 5.299e-05, 5.3e-05, 277382.71714207], [1516960380000, 5.299e-05, 5.316e-05, 5.296e-05, 5.316e-05, 85197.35866852], [1516960440000, 5.317e-05, 5.321e-05, 5.31e-05, 5.317e-05, 38865.14608696], [1516960500000, 5.321e-05, 5.323e-05, 5.31e-05, 5.323e-05, 32154.72191149], [1516960560000, 5.321e-05, 5.323e-05, 5.311e-05, 5.323e-05, 6620.72811449], [1516960620000, 5.323e-05, 5.323e-05, 5.31e-05, 5.311e-05, 23706.15497909], [1516960680000, 5.311e-05, 5.32e-05, 5.296e-05, 5.312e-05, 86523.81409685], [1516960740000, 5.321e-05, 5.343e-05, 5.296e-05, 5.296e-05, 445173.05285402], [1516960800000, 5.33e-05, 5.35e-05, 5.3e-05, 5.349e-05, 193571.47545536], [1516960860000, 5.349e-05, 5.35e-05, 5.321e-05, 5.35e-05, 97211.00109745], [1516960920000, 5.349e-05, 5.37e-05, 5.323e-05, 5.338e-05, 241058.26219991], [1516960980000, 5.338e-05, 5.386e-05, 5.328e-05, 5.328e-05, 148180.68697939], [1516961040000, 5.384e-05, 5.393e-05, 5.356e-05, 5.393e-05, 117320.96532445], [1516961100000, 5.375e-05, 5.404e-05, 5.373e-05, 5.375e-05, 208095.90202803], [1516961160000, 5.387e-05, 5.414e-05, 5.376e-05, 5.392e-05, 196382.06593979], [1516961220000, 5.392e-05, 5.421e-05, 5.379e-05, 5.421e-05, 173832.08799052], [1516961280000, 5.415e-05, 5.415e-05, 5.35e-05, 5.403e-05, 218847.57143174], [1516961340000, 5.402e-05, 5.42e-05, 5.375e-05, 5.404e-05, 35820.65129251], [1516961400000, 5.41e-05, 5.412e-05, 5.363e-05, 5.363e-05, 20853.2941877], [1516961460000, 5.363e-05, 5.406e-05, 5.363e-05, 5.365e-05, 30065.68619648], [1516961520000, 5.397e-05, 5.41e-05, 5.397e-05, 5.406e-05, 38623.91366104], [1516961580000, 5.394e-05, 5.41e-05, 5.394e-05, 5.409e-05, 38515.4262903], [1516961640000, 5.41e-05, 5.422e-05, 5.401e-05, 5.403e-05, 19794.44562061], [1516961700000, 5.406e-05, 5.41e-05, 5.367e-05, 5.405e-05, 30728.19369466], [1516961760000, 5.406e-05, 5.423e-05, 5.404e-05, 5.422e-05, 18846.57986606], [1516961820000, 5.421e-05, 5.44e-05, 5.401e-05, 5.405e-05, 28617.73418503], [1516961880000, 5.44e-05, 5.45e-05, 5.404e-05, 5.424e-05, 8062.77356015], [1516961940000, 5.404e-05, 5.424e-05, 5.404e-05, 5.41e-05, 13118.85260277], [1516962000000, 5.41e-05, 5.41e-05, 5.408e-05, 5.41e-05, 28267.00923825], [1516962060000, 5.412e-05, 5.424e-05, 5.41e-05, 5.413e-05, 19595.19286603], [1516962120000, 5.413e-05, 5.419e-05, 5.41e-05, 5.411e-05, 11569.29569543], [1516962180000, 5.41e-05, 5.413e-05, 5.41e-05, 5.412e-05, 19811.0042371], [1516962240000, 5.411e-05, 5.424e-05, 5.41e-05, 5.416e-05, 43623.93314364], [1516962300000, 5.416e-05, 5.425e-05, 5.416e-05, 5.416e-05, 86674.49143344], [1516962360000, 5.412e-05, 5.439e-05, 5.41e-05, 5.415e-05, 56405.91613232], [1516962420000, 5.415e-05, 5.44e-05, 5.415e-05, 5.436e-05, 67088.90032021], [1516962480000, 5.43e-05, 5.44e-05, 5.415e-05, 5.42e-05, 33782.03483444], [1516962540000, 5.436e-05, 5.436e-05, 5.42e-05, 5.42e-05, 40673.32980516], [1516962600000, 5.435e-05, 5.435e-05, 5.419e-05, 5.42e-05, 27494.51134642], [1516962660000, 5.418e-05, 5.43e-05, 5.411e-05, 5.418e-05, 52019.4279499], [1516962720000, 5.418e-05, 5.419e-05, 5.41e-05, 5.41e-05, 31648.38634469], [1516962780000, 5.41e-05, 5.431e-05, 5.401e-05, 5.431e-05, 64467.05041168], [1516962840000, 5.409e-05, 5.448e-05, 5.401e-05, 5.432e-05, 113611.39950493], [1516962900000, 5.447e-05, 5.46e-05, 5.435e-05, 5.439e-05, 96022.40535681], [1516962960000, 5.439e-05, 5.459e-05, 5.438e-05, 5.459e-05, 50988.54795668], [1516963020000, 5.459e-05, 5.485e-05, 5.448e-05, 5.466e-05, 217130.98839101], [1516963080000, 5.467e-05, 5.483e-05, 5.467e-05, 5.476e-05, 30603.73001246], [1516963140000, 5.482e-05, 5.537e-05, 5.475e-05, 5.502e-05, 271999.79936424], [1516963200000, 5.502e-05, 5.52e-05, 5.49e-05, 5.505e-05, 74220.48675591], [1516963260000, 5.505e-05, 5.518e-05, 5.492e-05, 5.517e-05, 55940.26314337], [1516963320000, 5.518e-05, 5.536e-05, 5.495e-05, 5.495e-05, 87329.20217022], [1516963380000, 5.495e-05, 5.505e-05, 5.495e-05, 5.495e-05, 43954.65289296], [1516963440000, 5.495e-05, 5.509e-05, 5.495e-05, 5.5e-05, 13867.54009287], [1516963500000, 5.5e-05, 5.523e-05, 5.496e-05, 5.523e-05, 19236.93275794], [1516963560000, 5.523e-05, 5.53e-05, 5.506e-05, 5.53e-05, 16032.96147773], [1516963620000, 5.523e-05, 5.53e-05, 5.501e-05, 5.502e-05, 38251.16250085], [1516963680000, 5.502e-05, 5.53e-05, 5.502e-05, 5.53e-05, 4811.12450379], [1516963740000, 5.53e-05, 5.53e-05, 5.5e-05, 5.513e-05, 45739.070078], [1516963800000, 5.53e-05, 5.54e-05, 5.514e-05, 5.53e-05, 18411.85539984], [1516963860000, 5.53e-05, 5.54e-05, 5.514e-05, 5.53e-05, 162003.30394618], [1516963920000, 5.533e-05, 5.551e-05, 5.5e-05, 5.551e-05, 78023.21089952], [1516963980000, 5.55e-05, 5.552e-05, 5.51e-05, 5.51e-05, 116461.0374185], [1516964040000, 5.509e-05, 5.51e-05, 5.5e-05, 5.504e-05, 47292.89928718], [1516964100000, 5.5e-05, 5.504e-05, 5.49e-05, 5.503e-05, 27398.26455896], [1516964160000, 5.495e-05, 5.495e-05, 5.472e-05, 5.472e-05, 28443.84923401], [1516964220000, 5.475e-05, 5.501e-05, 5.461e-05, 5.5e-05, 42323.451545], [1516964280000, 5.5e-05, 5.5e-05, 5.462e-05, 5.48e-05, 49177.80673307], [1516964340000, 5.481e-05, 5.481e-05, 5.46e-05, 5.461e-05, 17773.3431941], [1516964400000, 5.46e-05, 5.499e-05, 5.45e-05, 5.497e-05, 29923.57242387], [1516964460000, 5.495e-05, 5.495e-05, 5.466e-05, 5.482e-05, 12718.55833319], [1516964520000, 5.482e-05, 5.499e-05, 5.481e-05, 5.495e-05, 16369.71552596], [1516964580000, 5.491e-05, 5.491e-05, 5.488e-05, 5.489e-05, 8044.30643471], [1516964640000, 5.472e-05, 5.487e-05, 5.46e-05, 5.46e-05, 71422.54179023], [1516964700000, 5.483e-05, 5.484e-05, 5.46e-05, 5.48e-05, 13058.17215225], [1516964760000, 5.472e-05, 5.488e-05, 5.463e-05, 5.463e-05, 31993.1767707], [1516964820000, 5.463e-05, 5.463e-05, 5.462e-05, 5.463e-05, 31532.84059903], [1516964880000, 5.461e-05, 5.499e-05, 5.456e-05, 5.456e-05, 15272.14565123], [1516964940000, 5.46e-05, 5.499e-05, 5.451e-05, 5.499e-05, 12474.3706215], [1516965000000, 5.494e-05, 5.497e-05, 5.448e-05, 5.494e-05, 21043.49493012], [1516965060000, 5.449e-05, 5.489e-05, 5.448e-05, 5.489e-05, 75567.87267004], [1516965120000, 5.473e-05, 5.489e-05, 5.449e-05, 5.449e-05, 6294.10636238], [1516965180000, 5.489e-05, 5.489e-05, 5.449e-05, 5.48e-05, 14332.80417643], [1516965240000, 5.453e-05, 5.479e-05, 5.453e-05, 5.464e-05, 14281.18398664], [1516965300000, 5.464e-05, 5.481e-05, 5.464e-05, 5.481e-05, 50061.33324067], [1516965360000, 5.481e-05, 5.494e-05, 5.481e-05, 5.489e-05, 16299.62178923], [1516965420000, 5.492e-05, 5.492e-05, 5.491e-05, 5.492e-05, 1638.99894016], [1516965480000, 5.489e-05, 5.492e-05, 5.489e-05, 5.491e-05, 19214.23313604], [1516965540000, 5.492e-05, 5.492e-05, 5.464e-05, 5.464e-05, 5920.50380808], [1516965600000, 5.464e-05, 5.487e-05, 5.461e-05, 5.464e-05, 22090.09244177], [1516965660000, 5.461e-05, 5.487e-05, 5.461e-05, 5.465e-05, 14315.32842578], [1516965720000, 5.465e-05, 5.487e-05, 5.462e-05, 5.462e-05, 10195.02185294], [1516965780000, 5.486e-05, 5.486e-05, 5.486e-05, 5.486e-05, 100.301003], [1516965840000, 5.462e-05, 5.483e-05, 5.462e-05, 5.463e-05, 66195.00020045], [1516965900000, 5.463e-05, 5.489e-05, 5.46e-05, 5.461e-05, 14852.46260495], [1516965960000, 5.461e-05, 5.486e-05, 5.46e-05, 5.461e-05, 2889.88601477], [1516966020000, 5.456e-05, 5.461e-05, 5.456e-05, 5.46e-05, 5844.55945068], [1516966080000, 5.46e-05, 5.46e-05, 5.449e-05, 5.449e-05, 8860.15383401], [1516966140000, 5.449e-05, 5.458e-05, 5.446e-05, 5.458e-05, 17993.70103559], [1516966200000, 5.458e-05, 5.461e-05, 5.446e-05, 5.454e-05, 79434.8165486], [1516966260000, 5.454e-05, 5.454e-05, 5.42e-05, 5.421e-05, 101487.75354739], [1516966320000, 5.421e-05, 5.446e-05, 5.42e-05, 5.446e-05, 45949.80206101], [1516966380000, 5.446e-05, 5.454e-05, 5.441e-05, 5.454e-05, 10259.97059624], [1516966440000, 5.445e-05, 5.454e-05, 5.445e-05, 5.454e-05, 5224.10089443], [1516966500000, 5.447e-05, 5.458e-05, 5.421e-05, 5.422e-05, 56986.83071548], [1516966560000, 5.442e-05, 5.442e-05, 5.422e-05, 5.439e-05, 2515.92079743], [1516966620000, 5.438e-05, 5.438e-05, 5.422e-05, 5.423e-05, 5069.47203857], [1516966680000, 5.422e-05, 5.422e-05, 5.417e-05, 5.419e-05, 4962.53847464], [1516966740000, 5.417e-05, 5.418e-05, 5.41e-05, 5.412e-05, 24177.52849124], [1516966800000, 5.41e-05, 5.41e-05, 5.399e-05, 5.399e-05, 123009.58051717], [1516966860000, 5.399e-05, 5.406e-05, 5.386e-05, 5.386e-05, 83042.62317702], [1516966920000, 5.39e-05, 5.409e-05, 5.39e-05, 5.409e-05, 23579.57794508], [1516966980000, 5.409e-05, 5.41e-05, 5.399e-05, 5.41e-05, 17931.51608298], [1516967040000, 5.41e-05, 5.439e-05, 5.41e-05, 5.439e-05, 12550.89210945], [1516967100000, 5.411e-05, 5.454e-05, 5.411e-05, 5.454e-05, 37534.40805711], [1516967160000, 5.454e-05, 5.459e-05, 5.415e-05, 5.454e-05, 13184.04567641], [1516967220000, 5.454e-05, 5.454e-05, 5.414e-05, 5.453e-05, 69945.74569616], [1516967280000, 5.453e-05, 5.453e-05, 5.434e-05, 5.436e-05, 10344.80478149], [1516967340000, 5.44e-05, 5.44e-05, 5.44e-05, 5.44e-05, 7200.38880468], [1516967400000, 5.44e-05, 5.441e-05, 5.44e-05, 5.441e-05, 1632.15397303], [1516967460000, 5.452e-05, 5.452e-05, 5.441e-05, 5.452e-05, 13558.25749974], [1516967520000, 5.451e-05, 5.452e-05, 5.45e-05, 5.45e-05, 8082.53766162], [1516967580000, 5.441e-05, 5.452e-05, 5.439e-05, 5.44e-05, 18653.5445744], [1516967640000, 5.45e-05, 5.45e-05, 5.439e-05, 5.44e-05, 5795.68076956], [1516967700000, 5.44e-05, 5.45e-05, 5.44e-05, 5.45e-05, 7458.47030134], [1516967760000, 5.449e-05, 5.459e-05, 5.445e-05, 5.459e-05, 75615.35588111], [1516967820000, 5.453e-05, 5.459e-05, 5.449e-05, 5.453e-05, 7414.9206727], [1516967880000, 5.453e-05, 5.453e-05, 5.453e-05, 5.453e-05, 3.7e-07], [1516967940000, 5.452e-05, 5.452e-05, 5.443e-05, 5.445e-05, 9940.68102918], [1516968000000, 5.446e-05, 5.452e-05, 5.44e-05, 5.44e-05, 7158.35287051], [1516968060000, 5.44e-05, 5.447e-05, 5.44e-05, 5.447e-05, 5933.37582628], [1516968120000, 5.452e-05, 5.452e-05, 5.448e-05, 5.448e-05, 6634.22163853], [1516968180000, 5.441e-05, 5.452e-05, 5.42e-05, 5.45e-05, 25655.22158457], [1516968240000, 5.45e-05, 5.45e-05, 5.421e-05, 5.449e-05, 6591.33426182], [1516968300000, 5.448e-05, 5.448e-05, 5.423e-05, 5.423e-05, 3128.67608429], [1516968360000, 5.448e-05, 5.448e-05, 5.423e-05, 5.44e-05, 12346.67512639], [1516968420000, 5.44e-05, 5.44e-05, 5.424e-05, 5.44e-05, 12777.27354738], [1516968480000, 5.44e-05, 5.44e-05, 5.405e-05, 5.427e-05, 67612.03403894], [1516968540000, 5.406e-05, 5.427e-05, 5.405e-05, 5.405e-05, 4988.60033834], [1516968600000, 5.423e-05, 5.426e-05, 5.407e-05, 5.426e-05, 19198.13988015], [1516968660000, 5.42e-05, 5.42e-05, 5.409e-05, 5.42e-05, 25185.32147781], [1516968720000, 5.41e-05, 5.418e-05, 5.408e-05, 5.41e-05, 15410.58408533], [1516968780000, 5.41e-05, 5.417e-05, 5.41e-05, 5.41e-05, 47043.43189884], [1516968840000, 5.412e-05, 5.415e-05, 5.41e-05, 5.415e-05, 16087.53555473], [1516968900000, 5.415e-05, 5.415e-05, 5.412e-05, 5.415e-05, 3541.49617047], [1516968960000, 5.42e-05, 5.42e-05, 5.412e-05, 5.419e-05, 24996.76417913], [1516969020000, 5.419e-05, 5.419e-05, 5.415e-05, 5.415e-05, 25287.91630624], [1516969080000, 5.415e-05, 5.42e-05, 5.415e-05, 5.417e-05, 58401.93573481], [1516969140000, 5.418e-05, 5.42e-05, 5.418e-05, 5.418e-05, 10018.16960853], [1516969200000, 5.422e-05, 5.427e-05, 5.415e-05, 5.421e-05, 44043.06975134], [1516969260000, 5.421e-05, 5.421e-05, 5.391e-05, 5.406e-05, 107661.11243569], [1516969320000, 5.406e-05, 5.406e-05, 5.405e-05, 5.406e-05, 17738.95615928], [1516969380000, 5.413e-05, 5.413e-05, 5.388e-05, 5.407e-05, 17270.37880486], [1516969440000, 5.413e-05, 5.414e-05, 5.403e-05, 5.407e-05, 46013.5985067], [1516969500000, 5.41e-05, 5.414e-05, 5.408e-05, 5.408e-05, 7752.34853949], [1516969560000, 5.408e-05, 5.414e-05, 5.407e-05, 5.414e-05, 12511.59817762], [1516969620000, 5.414e-05, 5.414e-05, 5.408e-05, 5.41e-05, 58429.84943099], [1516969680000, 5.41e-05, 5.41e-05, 5.391e-05, 5.391e-05, 73506.14831931], [1516969740000, 5.391e-05, 5.409e-05, 5.389e-05, 5.407e-05, 79300.00338174], [1516969800000, 5.407e-05, 5.407e-05, 5.386e-05, 5.406e-05, 237871.65663077], [1516969860000, 5.406e-05, 5.41e-05, 5.402e-05, 5.409e-05, 46471.94246052], [1516969920000, 5.409e-05, 5.41e-05, 5.402e-05, 5.41e-05, 24093.45220453], [1516969980000, 5.409e-05, 5.421e-05, 5.409e-05, 5.421e-05, 16274.32407373], [1516970040000, 5.41e-05, 5.411e-05, 5.41e-05, 5.411e-05, 5115.74068275], [1516970100000, 5.411e-05, 5.449e-05, 5.411e-05, 5.427e-05, 11014.70840925], [1516970160000, 5.427e-05, 5.439e-05, 5.426e-05, 5.427e-05, 27107.71072545], [1516970220000, 5.427e-05, 5.449e-05, 5.427e-05, 5.427e-05, 16532.50195632], [1516970280000, 5.42e-05, 5.426e-05, 5.402e-05, 5.426e-05, 3514.47914079], [1516970340000, 5.426e-05, 5.426e-05, 5.403e-05, 5.404e-05, 8658.70019539], [1516970400000, 5.424e-05, 5.424e-05, 5.402e-05, 5.402e-05, 11483.44486502], [1516970460000, 5.426e-05, 5.426e-05, 5.403e-05, 5.404e-05, 40201.33427146], [1516970520000, 5.404e-05, 5.426e-05, 5.404e-05, 5.419e-05, 118660.36427995], [1516970580000, 5.419e-05, 5.42e-05, 5.41e-05, 5.41e-05, 31959.20437019], [1516970640000, 5.418e-05, 5.418e-05, 5.41e-05, 5.418e-05, 4492.46100061], [1516970700000, 5.418e-05, 5.419e-05, 5.41e-05, 5.41e-05, 11440.0733421], [1516970760000, 5.418e-05, 5.419e-05, 5.41e-05, 5.41e-05, 13485.66985528], [1516970820000, 5.41e-05, 5.418e-05, 5.403e-05, 5.405e-05, 37123.44649764], [1516970880000, 5.407e-05, 5.419e-05, 5.405e-05, 5.406e-05, 30733.3414225], [1516970940000, 5.407e-05, 5.419e-05, 5.405e-05, 5.419e-05, 5681.58844239], [1516971000000, 5.419e-05, 5.419e-05, 5.406e-05, 5.406e-05, 8433.11031601], [1516971060000, 5.408e-05, 5.447e-05, 5.402e-05, 5.447e-05, 19943.25590885], [1516971120000, 5.446e-05, 5.447e-05, 5.418e-05, 5.447e-05, 1309.36386743], [1516971180000, 5.446e-05, 5.447e-05, 5.418e-05, 5.446e-05, 34064.10739608], [1516971240000, 5.446e-05, 5.447e-05, 5.416e-05, 5.416e-05, 15425.24894359], [1516971300000, 5.416e-05, 5.444e-05, 5.406e-05, 5.406e-05, 40719.80870075], [1516971360000, 5.442e-05, 5.443e-05, 5.406e-05, 5.406e-05, 9693.50234263], [1516971420000, 5.417e-05, 5.439e-05, 5.407e-05, 5.437e-05, 2567.87504049], [1516971480000, 5.437e-05, 5.437e-05, 5.406e-05, 5.406e-05, 41261.58803356], [1516971540000, 5.406e-05, 5.406e-05, 5.4e-05, 5.4e-05, 38311.93510196], [1516971600000, 5.4e-05, 5.4e-05, 5.399e-05, 5.4e-05, 10093.51879599], [1516971660000, 5.4e-05, 5.42e-05, 5.39e-05, 5.42e-05, 36090.09337271], [1516971720000, 5.4e-05, 5.401e-05, 5.39e-05, 5.39e-05, 19255.0376316], [1516971780000, 5.391e-05, 5.401e-05, 5.391e-05, 5.401e-05, 514.32888764], [1516971840000, 5.392e-05, 5.401e-05, 5.391e-05, 5.4e-05, 3174.37833346], [1516971900000, 5.4e-05, 5.401e-05, 5.394e-05, 5.401e-05, 4954.9742296], [1516971960000, 5.401e-05, 5.419e-05, 5.401e-05, 5.419e-05, 12169.25675708], [1516972020000, 5.419e-05, 5.455e-05, 5.419e-05, 5.442e-05, 54224.9580084], [1516972080000, 5.437e-05, 5.442e-05, 5.436e-05, 5.437e-05, 46520.98506022], [1516972140000, 5.441e-05, 5.459e-05, 5.441e-05, 5.455e-05, 15054.01055995], [1516972200000, 5.456e-05, 5.459e-05, 5.455e-05, 5.455e-05, 17935.96364558], [1516972260000, 5.458e-05, 5.458e-05, 5.455e-05, 5.456e-05, 37503.42679937], [1516972320000, 5.456e-05, 5.456e-05, 5.455e-05, 5.455e-05, 35046.63200741], [1516972380000, 5.455e-05, 5.455e-05, 5.415e-05, 5.419e-05, 60358.46938342], [1516972440000, 5.437e-05, 5.45e-05, 5.419e-05, 5.448e-05, 61265.06423331], [1516972500000, 5.448e-05, 5.45e-05, 5.422e-05, 5.449e-05, 34715.28417429], [1516972560000, 5.449e-05, 5.449e-05, 5.426e-05, 5.428e-05, 15991.28805932], [1516972620000, 5.444e-05, 5.444e-05, 5.422e-05, 5.44e-05, 21676.67820971], [1516972680000, 5.43e-05, 5.438e-05, 5.428e-05, 5.438e-05, 32290.73310474], [1516972740000, 5.438e-05, 5.447e-05, 5.438e-05, 5.447e-05, 43429.73463465], [1516972800000, 5.445e-05, 5.446e-05, 5.435e-05, 5.444e-05, 21048.12092106], [1516972860000, 5.444e-05, 5.447e-05, 5.42e-05, 5.442e-05, 127215.95024363], [1516972920000, 5.442e-05, 5.455e-05, 5.429e-05, 5.449e-05, 36495.96492159], [1516972980000, 5.449e-05, 5.456e-05, 5.414e-05, 5.45e-05, 99487.24049433], [1516973040000, 5.448e-05, 5.448e-05, 5.417e-05, 5.422e-05, 123286.9710948], [1516973100000, 5.444e-05, 5.444e-05, 5.418e-05, 5.438e-05, 69088.43239733], [1516973160000, 5.438e-05, 5.44e-05, 5.419e-05, 5.44e-05, 107140.19668377], [1516973220000, 5.421e-05, 5.439e-05, 5.419e-05, 5.42e-05, 40465.85137575], [1516973280000, 5.42e-05, 5.42e-05, 5.419e-05, 5.42e-05, 23481.83686207], [1516973340000, 5.419e-05, 5.42e-05, 5.402e-05, 5.42e-05, 38427.93239167], [1516973400000, 5.42e-05, 5.428e-05, 5.39e-05, 5.427e-05, 130706.51715547], [1516973460000, 5.425e-05, 5.426e-05, 5.418e-05, 5.42e-05, 4189.62144034], [1516973520000, 5.42e-05, 5.42e-05, 5.39e-05, 5.415e-05, 3485.61753992], [1516973580000, 5.415e-05, 5.415e-05, 5.392e-05, 5.414e-05, 11858.79661533], [1516973640000, 5.413e-05, 5.413e-05, 5.399e-05, 5.4e-05, 2757.22960528], [1516973700000, 5.4e-05, 5.412e-05, 5.4e-05, 5.401e-05, 648.54421299], [1516973760000, 5.406e-05, 5.41e-05, 5.39e-05, 5.39e-05, 23617.91178028], [1516973820000, 5.402e-05, 5.403e-05, 5.39e-05, 5.402e-05, 23078.09070168], [1516973880000, 5.402e-05, 5.402e-05, 5.396e-05, 5.396e-05, 1854.16128653], [1516973940000, 5.396e-05, 5.396e-05, 5.386e-05, 5.386e-05, 15132.04267412], [1516974000000, 5.39e-05, 5.451e-05, 5.39e-05, 5.45e-05, 525037.03669148], [1516974060000, 5.45e-05, 5.451e-05, 5.396e-05, 5.449e-05, 196464.38809692], [1516974120000, 5.448e-05, 5.448e-05, 5.392e-05, 5.418e-05, 13005.55884443], [1516974180000, 5.421e-05, 5.435e-05, 5.418e-05, 5.435e-05, 14561.94040699], [1516974240000, 5.435e-05, 5.447e-05, 5.435e-05, 5.436e-05, 13547.28402692], [1516974300000, 5.422e-05, 5.438e-05, 5.422e-05, 5.435e-05, 1204.4862969], [1516974360000, 5.422e-05, 5.422e-05, 5.422e-05, 5.422e-05, 11222.19285033], [1516974420000, 5.421e-05, 5.421e-05, 5.416e-05, 5.416e-05, 2021.40914531], [1516974480000, 5.415e-05, 5.415e-05, 5.4e-05, 5.4e-05, 24461.67382483], [1516974540000, 5.4e-05, 5.415e-05, 5.4e-05, 5.415e-05, 7142.96130519], [1516974600000, 5.415e-05, 5.421e-05, 5.415e-05, 5.42e-05, 1908.46180537], [1516974660000, 5.42e-05, 5.425e-05, 5.415e-05, 5.415e-05, 10225.82748597], [1516974720000, 5.42e-05, 5.42e-05, 5.419e-05, 5.419e-05, 11553.30637645], [1516974780000, 5.416e-05, 5.416e-05, 5.41e-05, 5.41e-05, 23391.51635484], [1516974840000, 5.41e-05, 5.418e-05, 5.41e-05, 5.418e-05, 6020.08332945], [1516974900000, 5.418e-05, 5.42e-05, 5.414e-05, 5.42e-05, 10174.16666465], [1516974960000, 5.42e-05, 5.433e-05, 5.42e-05, 5.421e-05, 867.78100672], [1516975020000, 5.42e-05, 5.43e-05, 5.403e-05, 5.403e-05, 85272.60148939], [1516975080000, 5.403e-05, 5.403e-05, 5.35e-05, 5.403e-05, 192752.73728377], [1516975140000, 5.392e-05, 5.392e-05, 5.38e-05, 5.39e-05, 24252.06571889], [1516975200000, 5.39e-05, 5.403e-05, 5.381e-05, 5.382e-05, 16762.7027064], [1516975260000, 5.382e-05, 5.425e-05, 5.382e-05, 5.4e-05, 15782.58199874], [1516975320000, 5.4e-05, 5.403e-05, 5.393e-05, 5.4e-05, 17048.87521032], [1516975380000, 5.393e-05, 5.4e-05, 5.392e-05, 5.392e-05, 24848.14697393], [1516975440000, 5.392e-05, 5.392e-05, 5.386e-05, 5.392e-05, 16043.29587148], [1516975500000, 5.387e-05, 5.423e-05, 5.381e-05, 5.381e-05, 9161.78041729], [1516975560000, 5.396e-05, 5.396e-05, 5.381e-05, 5.381e-05, 1826.20661225], [1516975620000, 5.39e-05, 5.396e-05, 5.382e-05, 5.395e-05, 12229.90374015], [1516975680000, 5.395e-05, 5.396e-05, 5.394e-05, 5.394e-05, 12478.01994445], [1516975740000, 5.391e-05, 5.394e-05, 5.383e-05, 5.39e-05, 25226.9063962], [1516975800000, 5.39e-05, 5.407e-05, 5.39e-05, 5.4e-05, 12435.25798353], [1516975860000, 5.41e-05, 5.421e-05, 5.395e-05, 5.395e-05, 39937.82546749], [1516975920000, 5.42e-05, 5.427e-05, 5.42e-05, 5.427e-05, 30675.33604223], [1516975980000, 5.427e-05, 5.443e-05, 5.427e-05, 5.428e-05, 64681.28580498], [1516976040000, 5.428e-05, 5.437e-05, 5.428e-05, 5.437e-05, 28728.49926392], [1516976100000, 5.437e-05, 5.437e-05, 5.422e-05, 5.422e-05, 42232.52400507], [1516976160000, 5.422e-05, 5.422e-05, 5.414e-05, 5.422e-05, 20066.36601774], [1516976220000, 5.422e-05, 5.43e-05, 5.417e-05, 5.43e-05, 29966.40401602], [1516976280000, 5.43e-05, 5.43e-05, 5.4e-05, 5.427e-05, 49041.20239524], [1516976340000, 5.427e-05, 5.427e-05, 5.408e-05, 5.426e-05, 17986.76146364], [1516976400000, 5.426e-05, 5.426e-05, 5.408e-05, 5.421e-05, 39905.99537675], [1516976460000, 5.41e-05, 5.421e-05, 5.4e-05, 5.419e-05, 42218.86913337], [1516976520000, 5.411e-05, 5.419e-05, 5.41e-05, 5.419e-05, 10259.68979034], [1516976580000, 5.419e-05, 5.419e-05, 5.412e-05, 5.416e-05, 49730.56455444], [1516976640000, 5.416e-05, 5.426e-05, 5.412e-05, 5.413e-05, 49380.19586777], [1516976700000, 5.42e-05, 5.429e-05, 5.42e-05, 5.422e-05, 28045.50858371], [1516976760000, 5.422e-05, 5.429e-05, 5.411e-05, 5.411e-05, 71058.72162281], [1516976820000, 5.411e-05, 5.444e-05, 5.401e-05, 5.402e-05, 59065.5307719], [1516976880000, 5.424e-05, 5.425e-05, 5.404e-05, 5.409e-05, 18309.8988193], [1516976940000, 5.403e-05, 5.415e-05, 5.403e-05, 5.415e-05, 25707.96127168], [1516977000000, 5.415e-05, 5.415e-05, 5.405e-05, 5.415e-05, 36974.98831694], [1516977060000, 5.415e-05, 5.415e-05, 5.414e-05, 5.415e-05, 50145.50116782], [1516977120000, 5.415e-05, 5.444e-05, 5.415e-05, 5.444e-05, 84842.59245752], [1516977180000, 5.444e-05, 5.45e-05, 5.376e-05, 5.446e-05, 207380.34234242], [1516977240000, 5.446e-05, 5.447e-05, 5.445e-05, 5.447e-05, 30257.97741074], [1516977300000, 5.447e-05, 5.46e-05, 5.447e-05, 5.46e-05, 18786.52928611], [1516977360000, 5.461e-05, 5.486e-05, 5.46e-05, 5.485e-05, 42502.41235378], [1516977420000, 5.485e-05, 5.49e-05, 5.481e-05, 5.486e-05, 19259.9858661], [1516977480000, 5.486e-05, 5.49e-05, 5.486e-05, 5.489e-05, 22293.52710595], [1516977540000, 5.489e-05, 5.489e-05, 5.486e-05, 5.486e-05, 23684.39710434], [1516977600000, 5.486e-05, 5.489e-05, 5.486e-05, 5.489e-05, 31634.11468283], [1516977660000, 5.488e-05, 5.489e-05, 5.478e-05, 5.478e-05, 44441.647227], [1516977720000, 5.478e-05, 5.486e-05, 5.459e-05, 5.46e-05, 12940.82347514], [1516977780000, 5.46e-05, 5.46e-05, 5.436e-05, 5.46e-05, 23573.54115858], [1516977840000, 5.46e-05, 5.461e-05, 5.445e-05, 5.46e-05, 26078.25278037], [1516977900000, 5.461e-05, 5.464e-05, 5.46e-05, 5.464e-05, 44387.33229722], [1516977960000, 5.464e-05, 5.464e-05, 5.445e-05, 5.458e-05, 29946.09076681], [1516978020000, 5.458e-05, 5.463e-05, 5.457e-05, 5.463e-05, 3811.00917414], [1516978080000, 5.463e-05, 5.466e-05, 5.463e-05, 5.465e-05, 10534.21778617], [1516978140000, 5.47e-05, 5.47e-05, 5.465e-05, 5.47e-05, 38977.7126837], [1516978200000, 5.47e-05, 5.472e-05, 5.47e-05, 5.472e-05, 17685.29898592], [1516978260000, 5.472e-05, 5.473e-05, 5.469e-05, 5.47e-05, 77495.13177038], [1516978320000, 5.47e-05, 5.47e-05, 5.465e-05, 5.465e-05, 2055.21586518], [1516978380000, 5.46e-05, 5.47e-05, 5.458e-05, 5.465e-05, 13461.06379594], [1516978440000, 5.461e-05, 5.465e-05, 5.461e-05, 5.461e-05, 611.70780811], [1516978500000, 5.461e-05, 5.465e-05, 5.46e-05, 5.461e-05, 4592.71917884], [1516978560000, 5.46e-05, 5.465e-05, 5.46e-05, 5.462e-05, 6368.16539665], [1516978620000, 5.462e-05, 5.465e-05, 5.461e-05, 5.461e-05, 32640.78478371], [1516978680000, 5.465e-05, 5.465e-05, 5.461e-05, 5.465e-05, 7093.70923941], [1516978740000, 5.465e-05, 5.472e-05, 5.462e-05, 5.472e-05, 15835.87928087], [1516978800000, 5.484e-05, 5.491e-05, 5.461e-05, 5.489e-05, 20535.50340858], [1516978860000, 5.489e-05, 5.489e-05, 5.462e-05, 5.462e-05, 7426.75043443], [1516978920000, 5.465e-05, 5.465e-05, 5.399e-05, 5.461e-05, 78815.96800401], [1516978980000, 5.461e-05, 5.461e-05, 5.459e-05, 5.459e-05, 15899.20158216], [1516979040000, 5.459e-05, 5.462e-05, 5.459e-05, 5.462e-05, 8522.80639207], [1516979100000, 5.465e-05, 5.489e-05, 5.462e-05, 5.488e-05, 35084.48080136], [1516979160000, 5.488e-05, 5.489e-05, 5.464e-05, 5.487e-05, 12646.35029055], [1516979220000, 5.487e-05, 5.488e-05, 5.465e-05, 5.488e-05, 23987.77130599], [1516979280000, 5.488e-05, 5.49e-05, 5.485e-05, 5.49e-05, 14489.53302339], [1516979340000, 5.49e-05, 5.519e-05, 5.49e-05, 5.519e-05, 231525.45723087], [1516979400000, 5.519e-05, 5.6e-05, 5.519e-05, 5.595e-05, 813273.52132839], [1516979460000, 5.595e-05, 5.602e-05, 5.587e-05, 5.59e-05, 341408.98045096], [1516979520000, 5.59e-05, 5.608e-05, 5.583e-05, 5.602e-05, 203147.49582968], [1516979580000, 5.609e-05, 5.626e-05, 5.602e-05, 5.604e-05, 314840.97568529], [1516979640000, 5.604e-05, 5.629e-05, 5.603e-05, 5.627e-05, 209233.1427491], [1516979700000, 5.605e-05, 5.622e-05, 5.565e-05, 5.599e-05, 133596.09719058], [1516979760000, 5.599e-05, 5.62e-05, 5.599e-05, 5.602e-05, 78506.99056157], [1516979820000, 5.602e-05, 5.604e-05, 5.599e-05, 5.604e-05, 17533.07143388], [1516979880000, 5.602e-05, 5.614e-05, 5.58e-05, 5.614e-05, 44835.92369408], [1516979940000, 5.61e-05, 5.61e-05, 5.579e-05, 5.598e-05, 28676.7755268], [1516980000000, 5.581e-05, 5.597e-05, 5.561e-05, 5.579e-05, 65876.50555683], [1516980060000, 5.579e-05, 5.579e-05, 5.575e-05, 5.575e-05, 54364.90712861], [1516980120000, 5.57e-05, 5.589e-05, 5.56e-05, 5.563e-05, 38782.9006885], [1516980180000, 5.563e-05, 5.578e-05, 5.562e-05, 5.575e-05, 8835.564187], [1516980240000, 5.578e-05, 5.587e-05, 5.576e-05, 5.587e-05, 23281.62113994], [1516980300000, 5.587e-05, 5.592e-05, 5.587e-05, 5.592e-05, 81063.28221256], [1516980360000, 5.592e-05, 5.597e-05, 5.59e-05, 5.59e-05, 53416.47666961], [1516980420000, 5.59e-05, 5.597e-05, 5.576e-05, 5.579e-05, 19521.58822293], [1516980480000, 5.58e-05, 5.597e-05, 5.58e-05, 5.581e-05, 188829.79119741], [1516980540000, 5.581e-05, 5.6e-05, 5.581e-05, 5.6e-05, 88014.14044332], [1516980600000, 5.602e-05, 5.614e-05, 5.6e-05, 5.614e-05, 123166.6026234], [1516980660000, 5.614e-05, 5.618e-05, 5.614e-05, 5.618e-05, 55797.01991274], [1516980720000, 5.62e-05, 5.623e-05, 5.618e-05, 5.623e-05, 39149.40577346], [1516980780000, 5.625e-05, 5.64e-05, 5.618e-05, 5.626e-05, 72992.11367529], [1516980840000, 5.627e-05, 5.64e-05, 5.623e-05, 5.632e-05, 72550.57434922], [1516980900000, 5.632e-05, 5.632e-05, 5.627e-05, 5.63e-05, 36899.11964618], [1516980960000, 5.629e-05, 5.63e-05, 5.62e-05, 5.625e-05, 62803.83075959], [1516981020000, 5.625e-05, 5.63e-05, 5.621e-05, 5.625e-05, 36191.79028211], [1516981080000, 5.629e-05, 5.629e-05, 5.625e-05, 5.627e-05, 15995.68055451], [1516981140000, 5.627e-05, 5.629e-05, 5.627e-05, 5.628e-05, 8382.07422729], [1516981200000, 5.627e-05, 5.627e-05, 5.585e-05, 5.586e-05, 123448.13479874], [1516981260000, 5.587e-05, 5.626e-05, 5.587e-05, 5.612e-05, 3850.21908284], [1516981320000, 5.612e-05, 5.622e-05, 5.588e-05, 5.62e-05, 46047.52226154], [1516981380000, 5.62e-05, 5.621e-05, 5.6e-05, 5.601e-05, 42950.25988817], [1516981440000, 5.601e-05, 5.603e-05, 5.6e-05, 5.603e-05, 27448.03484659], [1516981500000, 5.6e-05, 5.61e-05, 5.6e-05, 5.609e-05, 78461.89427632], [1516981560000, 5.608e-05, 5.615e-05, 5.59e-05, 5.59e-05, 29904.34140378], [1516981620000, 5.61e-05, 5.61e-05, 5.588e-05, 5.588e-05, 28230.86097891], [1516981680000, 5.588e-05, 5.59e-05, 5.58e-05, 5.585e-05, 120408.21379879], [1516981740000, 5.585e-05, 5.587e-05, 5.585e-05, 5.587e-05, 155522.24037468], [1516981800000, 5.587e-05, 5.604e-05, 5.587e-05, 5.588e-05, 61685.28740922], [1516981860000, 5.588e-05, 5.6e-05, 5.587e-05, 5.599e-05, 37956.05300298], [1516981920000, 5.599e-05, 5.621e-05, 5.599e-05, 5.614e-05, 59584.30306785], [1516981980000, 5.609e-05, 5.619e-05, 5.602e-05, 5.609e-05, 72100.52978104], [1516982040000, 5.61e-05, 5.62e-05, 5.61e-05, 5.615e-05, 28696.67905927], [1516982100000, 5.618e-05, 5.64e-05, 5.615e-05, 5.639e-05, 110155.61561996], [1516982160000, 5.639e-05, 5.649e-05, 5.621e-05, 5.626e-05, 68325.87487454], [1516982220000, 5.628e-05, 5.628e-05, 5.615e-05, 5.617e-05, 71009.96160884], [1516982280000, 5.617e-05, 5.643e-05, 5.615e-05, 5.635e-05, 26738.61495672], [1516982340000, 5.635e-05, 5.643e-05, 5.618e-05, 5.618e-05, 57057.77862496], [1516982400000, 5.64e-05, 5.64e-05, 5.619e-05, 5.64e-05, 27552.46153726], [1516982460000, 5.635e-05, 5.648e-05, 5.622e-05, 5.644e-05, 127179.16524418], [1516982520000, 5.648e-05, 5.656e-05, 5.622e-05, 5.648e-05, 164742.2515538], [1516982580000, 5.648e-05, 5.648e-05, 5.602e-05, 5.61e-05, 133287.97014395], [1516982640000, 5.61e-05, 5.647e-05, 5.606e-05, 5.629e-05, 92119.1192567], [1516982700000, 5.635e-05, 5.647e-05, 5.616e-05, 5.625e-05, 57870.70990974], [1516982760000, 5.618e-05, 5.647e-05, 5.616e-05, 5.633e-05, 30712.75177055], [1516982820000, 5.633e-05, 5.646e-05, 5.626e-05, 5.626e-05, 32571.01952514], [1516982880000, 5.627e-05, 5.633e-05, 5.625e-05, 5.626e-05, 11967.45572083], [1516982940000, 5.625e-05, 5.626e-05, 5.62e-05, 5.626e-05, 25100.24743867], [1516983000000, 5.62e-05, 5.643e-05, 5.62e-05, 5.643e-05, 49042.96160699], [1516983060000, 5.643e-05, 5.644e-05, 5.624e-05, 5.628e-05, 29813.98965185], [1516983120000, 5.63e-05, 5.63e-05, 5.626e-05, 5.629e-05, 58832.15073419], [1516983180000, 5.626e-05, 5.626e-05, 5.61e-05, 5.625e-05, 119198.85423532], [1516983240000, 5.625e-05, 5.629e-05, 5.606e-05, 5.612e-05, 43054.62363962], [1516983300000, 5.612e-05, 5.629e-05, 5.59e-05, 5.59e-05, 71141.74385538], [1516983360000, 5.612e-05, 5.621e-05, 5.59e-05, 5.607e-05, 53385.65089477], [1516983420000, 5.612e-05, 5.612e-05, 5.58e-05, 5.581e-05, 94774.13345067], [1516983480000, 5.581e-05, 5.6e-05, 5.58e-05, 5.58e-05, 73717.33230181], [1516983540000, 5.58e-05, 5.58e-05, 5.577e-05, 5.579e-05, 49908.22205464], [1516983600000, 5.579e-05, 5.58e-05, 5.577e-05, 5.58e-05, 84893.20527492], [1516983660000, 5.58e-05, 5.598e-05, 5.579e-05, 5.582e-05, 24661.49602303], [1516983720000, 5.582e-05, 5.598e-05, 5.577e-05, 5.598e-05, 100186.97196718], [1516983780000, 5.598e-05, 5.598e-05, 5.595e-05, 5.596e-05, 8496.40073751], [1516983840000, 5.597e-05, 5.6e-05, 5.595e-05, 5.6e-05, 79058.40489318], [1516983900000, 5.6e-05, 5.605e-05, 5.599e-05, 5.6e-05, 28062.83458585], [1516983960000, 5.6e-05, 5.626e-05, 5.6e-05, 5.602e-05, 39070.27713238], [1516984020000, 5.615e-05, 5.644e-05, 5.615e-05, 5.631e-05, 140101.00655496], [1516984080000, 5.64e-05, 5.645e-05, 5.615e-05, 5.644e-05, 85690.5319914], [1516984140000, 5.644e-05, 5.644e-05, 5.616e-05, 5.618e-05, 27719.76415724], [1516984200000, 5.617e-05, 5.642e-05, 5.616e-05, 5.62e-05, 31317.8063919], [1516984260000, 5.62e-05, 5.62e-05, 5.615e-05, 5.617e-05, 23596.81199983], [1516984320000, 5.616e-05, 5.62e-05, 5.615e-05, 5.619e-05, 50247.29451725], [1516984380000, 5.615e-05, 5.619e-05, 5.615e-05, 5.615e-05, 6572.1349814], [1516984440000, 5.615e-05, 5.619e-05, 5.615e-05, 5.617e-05, 16558.75635732], [1516984500000, 5.617e-05, 5.619e-05, 5.615e-05, 5.619e-05, 28750.69395804], [1516984560000, 5.617e-05, 5.617e-05, 5.6e-05, 5.6e-05, 42863.80115127], [1516984620000, 5.6e-05, 5.617e-05, 5.588e-05, 5.606e-05, 63320.73446236], [1516984680000, 5.605e-05, 5.607e-05, 5.582e-05, 5.589e-05, 38784.71772822], [1516984740000, 5.582e-05, 5.6e-05, 5.582e-05, 5.589e-05, 23714.37527922], [1516984800000, 5.588e-05, 5.6e-05, 5.583e-05, 5.583e-05, 4690.56818944], [1516984860000, 5.583e-05, 5.598e-05, 5.583e-05, 5.584e-05, 123267.62291496], [1516984920000, 5.584e-05, 5.597e-05, 5.575e-05, 5.575e-05, 31269.38865396], [1516984980000, 5.584e-05, 5.584e-05, 5.571e-05, 5.573e-05, 21793.42413772], [1516985040000, 5.575e-05, 5.585e-05, 5.573e-05, 5.575e-05, 44080.37831532], [1516985100000, 5.578e-05, 5.58e-05, 5.578e-05, 5.58e-05, 8891.72133281], [1516985160000, 5.58e-05, 5.58e-05, 5.544e-05, 5.575e-05, 90595.79911257], [1516985220000, 5.575e-05, 5.59e-05, 5.571e-05, 5.571e-05, 14687.1714253], [1516985280000, 5.574e-05, 5.59e-05, 5.559e-05, 5.58e-05, 59180.66900194], [1516985340000, 5.58e-05, 5.59e-05, 5.567e-05, 5.57e-05, 50439.9419407], [1516985400000, 5.57e-05, 5.57e-05, 5.569e-05, 5.569e-05, 46956.9006319], [1516985460000, 5.569e-05, 5.569e-05, 5.568e-05, 5.569e-05, 37834.68985609], [1516985520000, 5.569e-05, 5.57e-05, 5.569e-05, 5.57e-05, 101631.67083251], [1516985580000, 5.57e-05, 5.57e-05, 5.569e-05, 5.569e-05, 53923.62466576], [1516985640000, 5.57e-05, 5.57e-05, 5.569e-05, 5.57e-05, 49969.88623901], [1516985700000, 5.57e-05, 5.57e-05, 5.569e-05, 5.57e-05, 41380.44588864], [1516985760000, 5.57e-05, 5.57e-05, 5.569e-05, 5.57e-05, 35712.34043894], [1516985820000, 5.57e-05, 5.59e-05, 5.569e-05, 5.57e-05, 12486.91318026], [1516985880000, 5.57e-05, 5.593e-05, 5.569e-05, 5.58e-05, 13255.21068123], [1516985940000, 5.593e-05, 5.606e-05, 5.58e-05, 5.606e-05, 41425.00512409], [1516986000000, 5.6e-05, 5.6e-05, 5.59e-05, 5.591e-05, 5078.88292385], [1516986060000, 5.59e-05, 5.591e-05, 5.576e-05, 5.59e-05, 6421.70990168], [1516986120000, 5.576e-05, 5.59e-05, 5.576e-05, 5.59e-05, 24193.68013797], [1516986180000, 5.59e-05, 5.59e-05, 5.59e-05, 5.59e-05, 2059.51985653], [1516986240000, 5.59e-05, 5.59e-05, 5.576e-05, 5.59e-05, 18179.51655301], [1516986300000, 5.591e-05, 5.591e-05, 5.569e-05, 5.588e-05, 63068.42267399], [1516986360000, 5.569e-05, 5.588e-05, 5.569e-05, 5.588e-05, 39969.44046836], [1516986420000, 5.585e-05, 5.589e-05, 5.585e-05, 5.588e-05, 41736.61931556], [1516986480000, 5.589e-05, 5.6e-05, 5.574e-05, 5.574e-05, 34949.27435457], [1516986540000, 5.586e-05, 5.588e-05, 5.586e-05, 5.586e-05, 5145.41695625], [1516986600000, 5.588e-05, 5.588e-05, 5.58e-05, 5.585e-05, 22208.67687829], [1516986660000, 5.585e-05, 5.586e-05, 5.585e-05, 5.585e-05, 5207.51195859], [1516986720000, 5.585e-05, 5.586e-05, 5.585e-05, 5.585e-05, 18563.51278081], [1516986780000, 5.585e-05, 5.586e-05, 5.58e-05, 5.58e-05, 73511.35631544], [1516986840000, 5.58e-05, 5.585e-05, 5.574e-05, 5.58e-05, 23344.24635783], [1516986900000, 5.58e-05, 5.581e-05, 5.574e-05, 5.574e-05, 23251.53049914], [1516986960000, 5.57e-05, 5.58e-05, 5.57e-05, 5.575e-05, 8630.5911102], [1516987020000, 5.575e-05, 5.575e-05, 5.568e-05, 5.568e-05, 29647.20894674], [1516987080000, 5.568e-05, 5.569e-05, 5.555e-05, 5.568e-05, 15804.4904925], [1516987140000, 5.558e-05, 5.568e-05, 5.558e-05, 5.562e-05, 8857.95977011], [1516987200000, 5.562e-05, 5.567e-05, 5.56e-05, 5.56e-05, 9450.37641585], [1516987260000, 5.56e-05, 5.56e-05, 5.555e-05, 5.556e-05, 4929.51966571], [1516987320000, 5.556e-05, 5.556e-05, 5.555e-05, 5.555e-05, 4088.51544035], [1516987380000, 5.556e-05, 5.567e-05, 5.555e-05, 5.56e-05, 2296.07139626], [1516987440000, 5.556e-05, 5.56e-05, 5.556e-05, 5.558e-05, 32266.50046865], [1516987500000, 5.558e-05, 5.567e-05, 5.557e-05, 5.56e-05, 35291.42575567], [1516987560000, 5.563e-05, 5.563e-05, 5.556e-05, 5.56e-05, 9658.99057601], [1516987620000, 5.557e-05, 5.557e-05, 5.528e-05, 5.545e-05, 76786.32223947], [1516987680000, 5.55e-05, 5.55e-05, 5.529e-05, 5.55e-05, 14272.72639943], [1516987740000, 5.529e-05, 5.55e-05, 5.529e-05, 5.549e-05, 7813.97488763], [1516987800000, 5.549e-05, 5.55e-05, 5.529e-05, 5.529e-05, 11927.04291398], [1516987860000, 5.545e-05, 5.545e-05, 5.54e-05, 5.54e-05, 1358.2787648], [1516987920000, 5.54e-05, 5.54e-05, 5.53e-05, 5.54e-05, 7605.79716351], [1516987980000, 5.54e-05, 5.54e-05, 5.53e-05, 5.54e-05, 28749.65436378], [1516988040000, 5.54e-05, 5.54e-05, 5.535e-05, 5.535e-05, 16917.25910072], [1516988100000, 5.535e-05, 5.54e-05, 5.533e-05, 5.54e-05, 12744.2868934], [1516988160000, 5.54e-05, 5.54e-05, 5.539e-05, 5.54e-05, 23115.44935862], [1516988220000, 5.54e-05, 5.54e-05, 5.535e-05, 5.54e-05, 22185.22409765], [1516988280000, 5.535e-05, 5.54e-05, 5.534e-05, 5.539e-05, 10155.78899535], [1516988340000, 5.54e-05, 5.54e-05, 5.53e-05, 5.533e-05, 23221.62823349], [1516988400000, 5.533e-05, 5.55e-05, 5.53e-05, 5.54e-05, 100966.5182805], [1516988460000, 5.55e-05, 5.561e-05, 5.54e-05, 5.561e-05, 25189.94672349], [1516988520000, 5.561e-05, 5.567e-05, 5.553e-05, 5.563e-05, 18000.58093419], [1516988580000, 5.566e-05, 5.579e-05, 5.563e-05, 5.579e-05, 53578.82190522], [1516988640000, 5.579e-05, 5.585e-05, 5.579e-05, 5.585e-05, 6619.66843917], [1516988700000, 5.585e-05, 5.591e-05, 5.582e-05, 5.591e-05, 15631.87766516], [1516988760000, 5.591e-05, 5.591e-05, 5.572e-05, 5.591e-05, 11672.41055123], [1516988820000, 5.591e-05, 5.595e-05, 5.591e-05, 5.591e-05, 1892.58594812], [1516988880000, 5.591e-05, 5.596e-05, 5.572e-05, 5.591e-05, 15480.71143404], [1516988940000, 5.591e-05, 5.591e-05, 5.589e-05, 5.589e-05, 1923.03360353], [1516989000000, 5.589e-05, 5.589e-05, 5.589e-05, 5.589e-05, 4249.31078101], [1516989060000, 5.574e-05, 5.574e-05, 5.567e-05, 5.568e-05, 25934.37359749], [1516989120000, 5.571e-05, 5.571e-05, 5.571e-05, 5.571e-05, 394.13965333], [1516989180000, 5.571e-05, 5.581e-05, 5.567e-05, 5.581e-05, 53542.44726369], [1516989240000, 5.582e-05, 5.589e-05, 5.582e-05, 5.583e-05, 74391.80316357], [1516989300000, 5.583e-05, 5.589e-05, 5.581e-05, 5.588e-05, 30869.91794716], [1516989360000, 5.583e-05, 5.583e-05, 5.581e-05, 5.583e-05, 13679.92772211], [1516989420000, 5.586e-05, 5.586e-05, 5.581e-05, 5.582e-05, 9597.68506867], [1516989480000, 5.581e-05, 5.582e-05, 5.581e-05, 5.581e-05, 4119.44046345], [1516989540000, 5.581e-05, 5.582e-05, 5.581e-05, 5.582e-05, 6532.50668403], [1516989600000, 5.581e-05, 5.587e-05, 5.581e-05, 5.586e-05, 35860.24297319], [1516989660000, 5.587e-05, 5.587e-05, 5.58e-05, 5.58e-05, 80967.95283431], [1516989720000, 5.578e-05, 5.58e-05, 5.567e-05, 5.58e-05, 18952.13739435], [1516989780000, 5.58e-05, 5.58e-05, 5.573e-05, 5.573e-05, 21118.60725259], [1516989840000, 5.573e-05, 5.575e-05, 5.572e-05, 5.572e-05, 16509.12443373], [1516989900000, 5.575e-05, 5.575e-05, 5.575e-05, 5.575e-05, 1434.53569766], [1516989960000, 5.58e-05, 5.58e-05, 5.576e-05, 5.58e-05, 4294.69339376], [1516990020000, 5.58e-05, 5.6e-05, 5.58e-05, 5.588e-05, 56179.16843304], [1516990080000, 5.598e-05, 5.6e-05, 5.594e-05, 5.596e-05, 40518.89812478], [1516990140000, 5.598e-05, 5.598e-05, 5.595e-05, 5.595e-05, 5985.47416514], [1516990200000, 5.59e-05, 5.595e-05, 5.588e-05, 5.59e-05, 12923.88328311], [1516990260000, 5.59e-05, 5.593e-05, 5.59e-05, 5.59e-05, 19370.15324617], [1516990320000, 5.59e-05, 5.592e-05, 5.59e-05, 5.59e-05, 597.34638328], [1516990380000, 5.59e-05, 5.595e-05, 5.59e-05, 5.59e-05, 14978.8171274], [1516990440000, 5.59e-05, 5.59e-05, 5.59e-05, 5.59e-05, 30.42740199], [1516990500000, 5.59e-05, 5.607e-05, 5.582e-05, 5.59e-05, 71760.67321375], [1516990560000, 5.59e-05, 5.607e-05, 5.59e-05, 5.607e-05, 27395.41484662], [1516990620000, 5.606e-05, 5.607e-05, 5.606e-05, 5.606e-05, 14774.33679449], [1516990680000, 5.606e-05, 5.61e-05, 5.582e-05, 5.582e-05, 48288.68302822], [1516990740000, 5.591e-05, 5.606e-05, 5.581e-05, 5.606e-05, 6945.63352245], [1516990800000, 5.606e-05, 5.608e-05, 5.572e-05, 5.581e-05, 70974.41399667], [1516990860000, 5.581e-05, 5.59e-05, 5.58e-05, 5.581e-05, 24011.55401525], [1516990920000, 5.59e-05, 5.607e-05, 5.58e-05, 5.592e-05, 7576.84211642], [1516990980000, 5.607e-05, 5.609e-05, 5.58e-05, 5.604e-05, 65613.90778836], [1516991040000, 5.585e-05, 5.605e-05, 5.581e-05, 5.602e-05, 49650.00823641], [1516991100000, 5.591e-05, 5.603e-05, 5.591e-05, 5.599e-05, 45292.89025229], [1516991160000, 5.592e-05, 5.604e-05, 5.576e-05, 5.576e-05, 106961.23553334], [1516991220000, 5.577e-05, 5.61e-05, 5.576e-05, 5.61e-05, 87415.38399772], [1516991280000, 5.611e-05, 5.616e-05, 5.61e-05, 5.615e-05, 31797.43772043], [1516991340000, 5.614e-05, 5.616e-05, 5.584e-05, 5.598e-05, 59628.44858032], [1516991400000, 5.597e-05, 5.615e-05, 5.588e-05, 5.614e-05, 28968.58736852], [1516991460000, 5.614e-05, 5.614e-05, 5.58e-05, 5.609e-05, 22028.15933893], [1516991520000, 5.603e-05, 5.603e-05, 5.589e-05, 5.59e-05, 33657.51566542], [1516991580000, 5.6e-05, 5.603e-05, 5.591e-05, 5.601e-05, 41169.50585718], [1516991640000, 5.6e-05, 5.601e-05, 5.592e-05, 5.6e-05, 15384.08728637], [1516991700000, 5.6e-05, 5.608e-05, 5.59e-05, 5.607e-05, 183878.90607107], [1516991760000, 5.607e-05, 5.608e-05, 5.59e-05, 5.599e-05, 60199.49423623], [1516991820000, 5.598e-05, 5.604e-05, 5.582e-05, 5.598e-05, 40505.92068659], [1516991880000, 5.583e-05, 5.607e-05, 5.582e-05, 5.607e-05, 108586.01809434], [1516991940000, 5.607e-05, 5.608e-05, 5.582e-05, 5.607e-05, 111188.3533822], [1516992000000, 5.584e-05, 5.609e-05, 5.582e-05, 5.584e-05, 131788.43130483], [1516992060000, 5.584e-05, 5.616e-05, 5.584e-05, 5.595e-05, 108806.01869874], [1516992120000, 5.585e-05, 5.611e-05, 5.584e-05, 5.595e-05, 114358.89734535], [1516992180000, 5.595e-05, 5.61e-05, 5.591e-05, 5.591e-05, 34453.0884017], [1516992240000, 5.595e-05, 5.596e-05, 5.584e-05, 5.592e-05, 31139.11339463], [1516992300000, 5.591e-05, 5.596e-05, 5.582e-05, 5.59e-05, 45484.80022213], [1516992360000, 5.594e-05, 5.595e-05, 5.581e-05, 5.582e-05, 40606.10690706], [1516992420000, 5.582e-05, 5.593e-05, 5.582e-05, 5.582e-05, 22720.12345117], [1516992480000, 5.582e-05, 5.587e-05, 5.575e-05, 5.575e-05, 42255.31555197], [1516992540000, 5.575e-05, 5.575e-05, 5.57e-05, 5.575e-05, 51170.15244425], [1516992600000, 5.572e-05, 5.575e-05, 5.567e-05, 5.567e-05, 86937.89784792], [1516992660000, 5.567e-05, 5.567e-05, 5.56e-05, 5.56e-05, 19727.4096918], [1516992720000, 5.56e-05, 5.56e-05, 5.54e-05, 5.56e-05, 22533.99051548], [1516992780000, 5.559e-05, 5.56e-05, 5.538e-05, 5.538e-05, 47187.97591824], [1516992840000, 5.555e-05, 5.56e-05, 5.541e-05, 5.541e-05, 5308.06969431], [1516992900000, 5.559e-05, 5.56e-05, 5.538e-05, 5.56e-05, 32950.49928132], [1516992960000, 5.56e-05, 5.565e-05, 5.56e-05, 5.565e-05, 3584.50267655], [1516993020000, 5.569e-05, 5.577e-05, 5.565e-05, 5.572e-05, 21750.93885934], [1516993080000, 5.572e-05, 5.579e-05, 5.56e-05, 5.577e-05, 29023.12357119], [1516993140000, 5.577e-05, 5.591e-05, 5.577e-05, 5.591e-05, 49305.15542952], [1516993200000, 5.591e-05, 5.591e-05, 5.577e-05, 5.577e-05, 4276.94204972], [1516993260000, 5.578e-05, 5.59e-05, 5.577e-05, 5.577e-05, 33165.35473078], [1516993320000, 5.577e-05, 5.577e-05, 5.558e-05, 5.577e-05, 20420.77072553], [1516993380000, 5.577e-05, 5.577e-05, 5.565e-05, 5.577e-05, 48960.98791202], [1516993440000, 5.577e-05, 5.577e-05, 5.562e-05, 5.577e-05, 80083.16683138], [1516993500000, 5.577e-05, 5.589e-05, 5.577e-05, 5.588e-05, 27334.20380018], [1516993560000, 5.587e-05, 5.587e-05, 5.578e-05, 5.585e-05, 12738.27779897], [1516993620000, 5.585e-05, 5.587e-05, 5.585e-05, 5.587e-05, 12791.45158427], [1516993680000, 5.586e-05, 5.589e-05, 5.585e-05, 5.587e-05, 41578.8108259], [1516993740000, 5.587e-05, 5.59e-05, 5.575e-05, 5.575e-05, 36014.3725229], [1516993800000, 5.575e-05, 5.575e-05, 5.563e-05, 5.575e-05, 16105.78603677], [1516993860000, 5.575e-05, 5.575e-05, 5.565e-05, 5.57e-05, 8080.20379004], [1516993920000, 5.575e-05, 5.575e-05, 5.565e-05, 5.574e-05, 9711.02955421], [1516993980000, 5.574e-05, 5.574e-05, 5.573e-05, 5.574e-05, 17415.95315668], [1516994040000, 5.573e-05, 5.574e-05, 5.57e-05, 5.57e-05, 8761.59303483], [1516994100000, 5.567e-05, 5.573e-05, 5.567e-05, 5.573e-05, 1708.93585989], [1516994160000, 5.573e-05, 5.575e-05, 5.572e-05, 5.575e-05, 15466.73400652], [1516994220000, 5.57e-05, 5.57e-05, 5.568e-05, 5.568e-05, 13622.26756774], [1516994280000, 5.57e-05, 5.57e-05, 5.568e-05, 5.57e-05, 29031.37895728], [1516994340000, 5.569e-05, 5.57e-05, 5.569e-05, 5.57e-05, 52239.92214191], [1516994400000, 5.57e-05, 5.57e-05, 5.569e-05, 5.57e-05, 3768.59062505], [1516994460000, 5.57e-05, 5.57e-05, 5.569e-05, 5.57e-05, 8395.57528805], [1516994520000, 5.57e-05, 5.57e-05, 5.568e-05, 5.569e-05, 6600.31933458], [1516994580000, 5.569e-05, 5.57e-05, 5.565e-05, 5.568e-05, 24336.21623482], [1516994640000, 5.568e-05, 5.569e-05, 5.564e-05, 5.564e-05, 16706.71860948], [1516994700000, 5.564e-05, 5.57e-05, 5.564e-05, 5.57e-05, 11354.46814342], [1516994760000, 5.57e-05, 5.587e-05, 5.57e-05, 5.587e-05, 10037.02721338], [1516994820000, 5.587e-05, 5.587e-05, 5.587e-05, 5.587e-05, 98.91032889], [1516994880000, 5.587e-05, 5.587e-05, 5.587e-05, 5.587e-05, 1139.54482273], [1516994940000, 5.587e-05, 5.589e-05, 5.587e-05, 5.589e-05, 2648.82419959], [1516995000000, 5.587e-05, 5.59e-05, 5.587e-05, 5.59e-05, 2285.60453463], [1516995060000, 5.59e-05, 5.59e-05, 5.589e-05, 5.59e-05, 5890.46255194], [1516995120000, 5.59e-05, 5.59e-05, 5.589e-05, 5.59e-05, 4746.36158794], [1516995180000, 5.589e-05, 5.59e-05, 5.589e-05, 5.59e-05, 16399.81390648], [1516995240000, 5.59e-05, 5.59e-05, 5.589e-05, 5.59e-05, 33923.5070559], [1516995300000, 5.59e-05, 5.595e-05, 5.59e-05, 5.595e-05, 54260.08598092], [1516995360000, 5.595e-05, 5.6e-05, 5.594e-05, 5.6e-05, 16218.65012399], [1516995420000, 5.602e-05, 5.62e-05, 5.6e-05, 5.62e-05, 29373.72574738], [1516995480000, 5.62e-05, 5.62e-05, 5.61e-05, 5.618e-05, 24564.31245644], [1516995540000, 5.61e-05, 5.618e-05, 5.61e-05, 5.611e-05, 11942.30552405], [1516995600000, 5.618e-05, 5.618e-05, 5.61e-05, 5.611e-05, 36130.68124652], [1516995660000, 5.611e-05, 5.618e-05, 5.6e-05, 5.61e-05, 33666.65887271], [1516995720000, 5.61e-05, 5.615e-05, 5.61e-05, 5.612e-05, 17616.25819452], [1516995780000, 5.611e-05, 5.616e-05, 5.611e-05, 5.616e-05, 10987.12186583], [1516995840000, 5.616e-05, 5.63e-05, 5.615e-05, 5.63e-05, 36037.4498848], [1516995900000, 5.63e-05, 5.63e-05, 5.616e-05, 5.628e-05, 11577.03618533], [1516995960000, 5.628e-05, 5.628e-05, 5.612e-05, 5.612e-05, 32695.58656831], [1516996020000, 5.612e-05, 5.628e-05, 5.612e-05, 5.621e-05, 51876.48094482], [1516996080000, 5.621e-05, 5.622e-05, 5.62e-05, 5.621e-05, 16670.24286595], [1516996140000, 5.622e-05, 5.628e-05, 5.622e-05, 5.623e-05, 16650.95503232], [1516996200000, 5.625e-05, 5.625e-05, 5.62e-05, 5.62e-05, 16455.3624281], [1516996260000, 5.62e-05, 5.625e-05, 5.62e-05, 5.625e-05, 24088.27865256], [1516996320000, 5.624e-05, 5.625e-05, 5.624e-05, 5.625e-05, 6482.38383346], [1516996380000, 5.625e-05, 5.625e-05, 5.624e-05, 5.625e-05, 7485.6314956], [1516996440000, 5.624e-05, 5.625e-05, 5.612e-05, 5.623e-05, 18932.7592996], [1516996500000, 5.623e-05, 5.624e-05, 5.623e-05, 5.624e-05, 13927.39173747], [1516996560000, 5.623e-05, 5.624e-05, 5.603e-05, 5.622e-05, 15990.7136676], [1516996620000, 5.623e-05, 5.625e-05, 5.622e-05, 5.623e-05, 8512.92815287], [1516996680000, 5.623e-05, 5.625e-05, 5.622e-05, 5.625e-05, 18147.05745068], [1516996740000, 5.624e-05, 5.639e-05, 5.624e-05, 5.634e-05, 17325.95898382], [1516996800000, 5.635e-05, 5.635e-05, 5.625e-05, 5.634e-05, 17936.903564], [1516996860000, 5.634e-05, 5.635e-05, 5.626e-05, 5.635e-05, 3000.85635155], [1516996920000, 5.635e-05, 5.635e-05, 5.623e-05, 5.634e-05, 6063.2711126], [1516996980000, 5.63e-05, 5.64e-05, 5.63e-05, 5.64e-05, 13562.6703913], [1516997040000, 5.634e-05, 5.642e-05, 5.631e-05, 5.642e-05, 50961.3487598], [1516997100000, 5.642e-05, 5.659e-05, 5.642e-05, 5.659e-05, 76375.11085181], [1516997160000, 5.659e-05, 5.665e-05, 5.657e-05, 5.665e-05, 141650.51456212], [1516997220000, 5.665e-05, 5.676e-05, 5.665e-05, 5.675e-05, 20824.93959596], [1516997280000, 5.675e-05, 5.689e-05, 5.675e-05, 5.68e-05, 44046.66020361], [1516997340000, 5.679e-05, 5.68e-05, 5.651e-05, 5.667e-05, 77877.26734998], [1516997400000, 5.667e-05, 5.68e-05, 5.667e-05, 5.67e-05, 9276.92684306], [1516997460000, 5.688e-05, 5.688e-05, 5.67e-05, 5.677e-05, 4402.14801281], [1516997520000, 5.681e-05, 5.695e-05, 5.681e-05, 5.682e-05, 45617.23675873], [1516997580000, 5.686e-05, 5.695e-05, 5.686e-05, 5.695e-05, 6296.10147276], [1516997640000, 5.695e-05, 5.698e-05, 5.692e-05, 5.694e-05, 29015.11040766], [1516997700000, 5.695e-05, 5.698e-05, 5.694e-05, 5.697e-05, 25164.24420088], [1516997760000, 5.695e-05, 5.698e-05, 5.695e-05, 5.698e-05, 18900.84879427], [1516997820000, 5.698e-05, 5.7e-05, 5.696e-05, 5.696e-05, 52290.80661381], [1516997880000, 5.698e-05, 5.7e-05, 5.698e-05, 5.7e-05, 67237.84575605], [1516997940000, 5.7e-05, 5.7e-05, 5.699e-05, 5.7e-05, 112502.69841413], [1516998000000, 5.7e-05, 5.705e-05, 5.699e-05, 5.699e-05, 145104.88413394], [1516998060000, 5.699e-05, 5.709e-05, 5.697e-05, 5.707e-05, 52861.07946765], [1516998120000, 5.707e-05, 5.71e-05, 5.707e-05, 5.71e-05, 35372.67145523], [1516998180000, 5.709e-05, 5.715e-05, 5.707e-05, 5.714e-05, 100359.54383506], [1516998240000, 5.714e-05, 5.715e-05, 5.7e-05, 5.701e-05, 48100.51353028], [1516998300000, 5.701e-05, 5.714e-05, 5.696e-05, 5.703e-05, 45756.73071025], [1516998360000, 5.7e-05, 5.712e-05, 5.695e-05, 5.696e-05, 109129.36999816], [1516998420000, 5.698e-05, 5.715e-05, 5.698e-05, 5.699e-05, 159278.28860966], [1516998480000, 5.701e-05, 5.718e-05, 5.701e-05, 5.716e-05, 97150.0807104], [1516998540000, 5.716e-05, 5.716e-05, 5.71e-05, 5.716e-05, 50615.92781254], [1516998600000, 5.716e-05, 5.722e-05, 5.715e-05, 5.72e-05, 64227.9145454], [1516998660000, 5.72e-05, 5.732e-05, 5.72e-05, 5.73e-05, 53693.77272709], [1516998720000, 5.729e-05, 5.74e-05, 5.722e-05, 5.73e-05, 47780.91666592], [1516998780000, 5.73e-05, 5.74e-05, 5.721e-05, 5.723e-05, 80056.59225684], [1516998840000, 5.724e-05, 5.726e-05, 5.722e-05, 5.725e-05, 45783.0693936], [1516998900000, 5.725e-05, 5.738e-05, 5.725e-05, 5.726e-05, 46011.33584092], [1516998960000, 5.725e-05, 5.726e-05, 5.713e-05, 5.724e-05, 44560.54562979], [1516999020000, 5.724e-05, 5.725e-05, 5.7e-05, 5.7e-05, 137996.39860955], [1516999080000, 5.701e-05, 5.705e-05, 5.681e-05, 5.688e-05, 99215.08860245], [1516999140000, 5.688e-05, 5.688e-05, 5.682e-05, 5.688e-05, 85241.63111285], [1516999200000, 5.688e-05, 5.688e-05, 5.686e-05, 5.687e-05, 14173.99484458], [1516999260000, 5.687e-05, 5.688e-05, 5.68e-05, 5.68e-05, 17916.83526506], [1516999320000, 5.68e-05, 5.68e-05, 5.67e-05, 5.68e-05, 20310.77435641], [1516999380000, 5.68e-05, 5.68e-05, 5.675e-05, 5.675e-05, 13169.51493679], [1516999440000, 5.675e-05, 5.681e-05, 5.67e-05, 5.681e-05, 21935.58136985], [1516999500000, 5.68e-05, 5.688e-05, 5.675e-05, 5.685e-05, 90477.14105411], [1516999560000, 5.685e-05, 5.688e-05, 5.675e-05, 5.682e-05, 38227.40542676], [1516999620000, 5.687e-05, 5.688e-05, 5.682e-05, 5.687e-05, 31686.16834535], [1516999680000, 5.688e-05, 5.7e-05, 5.687e-05, 5.7e-05, 113154.29344744], [1516999740000, 5.7e-05, 5.709e-05, 5.692e-05, 5.709e-05, 15357.51083979], [1516999800000, 5.701e-05, 5.72e-05, 5.701e-05, 5.719e-05, 26265.931137], [1516999860000, 5.712e-05, 5.712e-05, 5.697e-05, 5.7e-05, 169126.12318327], [1516999920000, 5.698e-05, 5.72e-05, 5.67e-05, 5.692e-05, 82794.81194235], [1516999980000, 5.67e-05, 5.7e-05, 5.667e-05, 5.7e-05, 37909.35340158], [1517000040000, 5.7e-05, 5.708e-05, 5.691e-05, 5.699e-05, 22929.41315361], [1517000100000, 5.699e-05, 5.705e-05, 5.693e-05, 5.695e-05, 22262.34619223], [1517000160000, 5.698e-05, 5.704e-05, 5.695e-05, 5.695e-05, 28471.12279582], [1517000220000, 5.701e-05, 5.701e-05, 5.695e-05, 5.695e-05, 35033.29943769], [1517000280000, 5.7e-05, 5.7e-05, 5.699e-05, 5.699e-05, 3532.44042301], [1517000340000, 5.7e-05, 5.7e-05, 5.696e-05, 5.699e-05, 32592.43657005], [1517000400000, 5.7e-05, 5.701e-05, 5.69e-05, 5.69e-05, 20047.24004698], [1517000460000, 5.69e-05, 5.699e-05, 5.69e-05, 5.696e-05, 10788.10043044], [1517000520000, 5.697e-05, 5.697e-05, 5.674e-05, 5.674e-05, 59728.36058203], [1517000580000, 5.688e-05, 5.688e-05, 5.632e-05, 5.632e-05, 149724.53093129], [1517000640000, 5.638e-05, 5.669e-05, 5.638e-05, 5.666e-05, 27594.50850357], [1517000700000, 5.652e-05, 5.673e-05, 5.651e-05, 5.673e-05, 16686.94598338], [1517000760000, 5.673e-05, 5.674e-05, 5.67e-05, 5.674e-05, 39537.03593266], [1517000820000, 5.674e-05, 5.674e-05, 5.673e-05, 5.674e-05, 28258.41951372], [1517000880000, 5.673e-05, 5.674e-05, 5.673e-05, 5.674e-05, 55058.8630301], [1517000940000, 5.674e-05, 5.674e-05, 5.673e-05, 5.674e-05, 27713.42237428], [1517001000000, 5.673e-05, 5.687e-05, 5.673e-05, 5.687e-05, 16067.87004193], [1517001060000, 5.687e-05, 5.69e-05, 5.674e-05, 5.687e-05, 10404.23907415], [1517001120000, 5.689e-05, 5.69e-05, 5.687e-05, 5.69e-05, 12796.43478513], [1517001180000, 5.69e-05, 5.69e-05, 5.688e-05, 5.69e-05, 9486.00343512], [1517001240000, 5.689e-05, 5.695e-05, 5.689e-05, 5.691e-05, 57760.71996166], [1517001300000, 5.695e-05, 5.697e-05, 5.695e-05, 5.695e-05, 3598.75028106], [1517001360000, 5.695e-05, 5.71e-05, 5.69e-05, 5.71e-05, 88076.46120256], [1517001420000, 5.7e-05, 5.715e-05, 5.7e-05, 5.7e-05, 36018.45042303], [1517001480000, 5.7e-05, 5.7e-05, 5.699e-05, 5.699e-05, 15576.50013851], [1517001540000, 5.699e-05, 5.71e-05, 5.693e-05, 5.71e-05, 7022.89429742], [1517001600000, 5.698e-05, 5.71e-05, 5.698e-05, 5.702e-05, 27772.51929014], [1517001660000, 5.702e-05, 5.707e-05, 5.702e-05, 5.705e-05, 63184.20957697], [1517001720000, 5.705e-05, 5.707e-05, 5.693e-05, 5.704e-05, 26709.80857648], [1517001780000, 5.705e-05, 5.705e-05, 5.693e-05, 5.693e-05, 53843.79519349], [1517001840000, 5.693e-05, 5.703e-05, 5.691e-05, 5.692e-05, 36516.58566736], [1517001900000, 5.698e-05, 5.7e-05, 5.691e-05, 5.7e-05, 17100.56984419], [1517001960000, 5.7e-05, 5.704e-05, 5.691e-05, 5.701e-05, 99955.79260311], [1517002020000, 5.701e-05, 5.705e-05, 5.691e-05, 5.691e-05, 61446.55587225], [1517002080000, 5.691e-05, 5.691e-05, 5.687e-05, 5.689e-05, 36286.98264686], [1517002140000, 5.689e-05, 5.704e-05, 5.689e-05, 5.692e-05, 15934.99726085], [1517002200000, 5.692e-05, 5.702e-05, 5.689e-05, 5.702e-05, 41371.55929222], [1517002260000, 5.702e-05, 5.704e-05, 5.681e-05, 5.685e-05, 41246.99692309], [1517002320000, 5.698e-05, 5.701e-05, 5.698e-05, 5.7e-05, 25555.47133595], [1517002380000, 5.7e-05, 5.705e-05, 5.699e-05, 5.705e-05, 18323.47368041], [1517002440000, 5.705e-05, 5.71e-05, 5.702e-05, 5.708e-05, 40423.91023514], [1517002500000, 5.708e-05, 5.708e-05, 5.702e-05, 5.708e-05, 17637.5695147], [1517002560000, 5.708e-05, 5.718e-05, 5.708e-05, 5.715e-05, 11111.9164776], [1517002620000, 5.715e-05, 5.718e-05, 5.708e-05, 5.715e-05, 12651.04293339], [1517002680000, 5.713e-05, 5.713e-05, 5.708e-05, 5.711e-05, 43692.86931735], [1517002740000, 5.711e-05, 5.712e-05, 5.708e-05, 5.711e-05, 7322.09253882], [1517002800000, 5.711e-05, 5.711e-05, 5.707e-05, 5.708e-05, 4561.75800588], [1517002860000, 5.707e-05, 5.71e-05, 5.707e-05, 5.707e-05, 16874.33931344], [1517002920000, 5.708e-05, 5.708e-05, 5.706e-05, 5.708e-05, 14351.1224496], [1517002980000, 5.708e-05, 5.71e-05, 5.706e-05, 5.708e-05, 32964.82219635], [1517003040000, 5.707e-05, 5.711e-05, 5.707e-05, 5.708e-05, 38179.75529708], [1517003100000, 5.71e-05, 5.72e-05, 5.708e-05, 5.72e-05, 16724.49539709], [1517003160000, 5.72e-05, 5.723e-05, 5.712e-05, 5.713e-05, 27322.56790469], [1517003220000, 5.723e-05, 5.735e-05, 5.713e-05, 5.732e-05, 21314.40527177], [1517003280000, 5.731e-05, 5.736e-05, 5.725e-05, 5.731e-05, 18331.7210761], [1517003340000, 5.731e-05, 5.734e-05, 5.731e-05, 5.734e-05, 46042.72775713], [1517003400000, 5.734e-05, 5.738e-05, 5.733e-05, 5.737e-05, 33784.6815899], [1517003460000, 5.738e-05, 5.739e-05, 5.737e-05, 5.739e-05, 50214.46017883], [1517003520000, 5.739e-05, 5.74e-05, 5.737e-05, 5.74e-05, 86664.4468108], [1517003580000, 5.74e-05, 5.75e-05, 5.74e-05, 5.75e-05, 94062.68717507], [1517003640000, 5.75e-05, 5.756e-05, 5.746e-05, 5.755e-05, 101171.15404115], [1517003700000, 5.756e-05, 5.769e-05, 5.755e-05, 5.769e-05, 55499.6116059], [1517003760000, 5.769e-05, 5.776e-05, 5.769e-05, 5.773e-05, 80663.61435614], [1517003820000, 5.772e-05, 5.779e-05, 5.765e-05, 5.768e-05, 53456.70780453], [1517003880000, 5.773e-05, 5.777e-05, 5.765e-05, 5.773e-05, 42476.19444457], [1517003940000, 5.773e-05, 5.773e-05, 5.765e-05, 5.771e-05, 28585.93239535], [1517004000000, 5.768e-05, 5.769e-05, 5.765e-05, 5.768e-05, 22070.63856122], [1517004060000, 5.768e-05, 5.768e-05, 5.765e-05, 5.768e-05, 45303.18724388], [1517004120000, 5.768e-05, 5.768e-05, 5.757e-05, 5.757e-05, 35983.6311788], [1517004180000, 5.756e-05, 5.762e-05, 5.751e-05, 5.751e-05, 7770.48687853], [1517004240000, 5.754e-05, 5.762e-05, 5.737e-05, 5.75e-05, 86880.96523749], [1517004300000, 5.761e-05, 5.777e-05, 5.752e-05, 5.777e-05, 64084.14639154], [1517004360000, 5.777e-05, 5.785e-05, 5.776e-05, 5.784e-05, 58798.27041946], [1517004420000, 5.778e-05, 5.785e-05, 5.778e-05, 5.783e-05, 65107.48163527], [1517004480000, 5.784e-05, 5.793e-05, 5.784e-05, 5.793e-05, 59400.31825557], [1517004540000, 5.793e-05, 5.798e-05, 5.793e-05, 5.798e-05, 94256.85154586], [1517004600000, 5.796e-05, 5.8e-05, 5.796e-05, 5.8e-05, 130967.59547676], [1517004660000, 5.798e-05, 5.8e-05, 5.798e-05, 5.799e-05, 47692.34164821], [1517004720000, 5.8e-05, 5.8e-05, 5.79e-05, 5.79e-05, 24499.05601842], [1517004780000, 5.79e-05, 5.797e-05, 5.778e-05, 5.778e-05, 35121.75177046], [1517004840000, 5.778e-05, 5.797e-05, 5.755e-05, 5.784e-05, 140311.91802148], [1517004900000, 5.784e-05, 5.799e-05, 5.778e-05, 5.781e-05, 65626.17460473], [1517004960000, 5.781e-05, 5.801e-05, 5.781e-05, 5.801e-05, 153289.98535768], [1517005020000, 5.8e-05, 5.802e-05, 5.782e-05, 5.784e-05, 42357.72002592], [1517005080000, 5.789e-05, 5.801e-05, 5.783e-05, 5.799e-05, 78480.29071298], [1517005140000, 5.794e-05, 5.799e-05, 5.789e-05, 5.799e-05, 47097.50801732], [1517005200000, 5.792e-05, 5.792e-05, 5.774e-05, 5.779e-05, 144065.71671611], [1517005260000, 5.779e-05, 5.791e-05, 5.774e-05, 5.79e-05, 66408.73213977], [1517005320000, 5.79e-05, 5.804e-05, 5.781e-05, 5.804e-05, 29526.85684796], [1517005380000, 5.8e-05, 5.805e-05, 5.774e-05, 5.791e-05, 53883.2935184], [1517005440000, 5.799e-05, 5.799e-05, 5.791e-05, 5.798e-05, 10828.29920825], [1517005500000, 5.791e-05, 5.794e-05, 5.772e-05, 5.79e-05, 42841.02869854], [1517005560000, 5.78e-05, 5.79e-05, 5.779e-05, 5.79e-05, 23049.77959816], [1517005620000, 5.79e-05, 5.791e-05, 5.781e-05, 5.791e-05, 55433.12125269], [1517005680000, 5.789e-05, 5.789e-05, 5.769e-05, 5.769e-05, 60863.88337313], [1517005740000, 5.768e-05, 5.784e-05, 5.755e-05, 5.784e-05, 37263.31750624], [1517005800000, 5.769e-05, 5.781e-05, 5.737e-05, 5.781e-05, 32579.50088378], [1517005860000, 5.771e-05, 5.787e-05, 5.771e-05, 5.787e-05, 3762.12417748], [1517005920000, 5.782e-05, 5.782e-05, 5.752e-05, 5.77e-05, 24908.09166549], [1517005980000, 5.752e-05, 5.782e-05, 5.74e-05, 5.781e-05, 65687.79976652], [1517006040000, 5.78e-05, 5.78e-05, 5.748e-05, 5.778e-05, 45874.51272372], [1517006100000, 5.778e-05, 5.782e-05, 5.762e-05, 5.778e-05, 20169.18345633], [1517006160000, 5.785e-05, 5.786e-05, 5.784e-05, 5.786e-05, 27256.28254871], [1517006220000, 5.786e-05, 5.787e-05, 5.78e-05, 5.78e-05, 19544.99567792], [1517006280000, 5.786e-05, 5.787e-05, 5.78e-05, 5.787e-05, 114267.94411493], [1517006340000, 5.787e-05, 5.794e-05, 5.778e-05, 5.794e-05, 97973.24104233], [1517006400000, 5.785e-05, 5.789e-05, 5.777e-05, 5.782e-05, 92850.26764233], [1517006460000, 5.781e-05, 5.785e-05, 5.78e-05, 5.781e-05, 49057.89756985], [1517006520000, 5.781e-05, 5.781e-05, 5.773e-05, 5.773e-05, 35647.59350007], [1517006580000, 5.773e-05, 5.783e-05, 5.77e-05, 5.783e-05, 37111.38657332], [1517006640000, 5.783e-05, 5.785e-05, 5.774e-05, 5.785e-05, 10159.65555436], [1517006700000, 5.783e-05, 5.785e-05, 5.78e-05, 5.78e-05, 53564.39527922], [1517006760000, 5.779e-05, 5.779e-05, 5.773e-05, 5.779e-05, 23254.37092441], [1517006820000, 5.78e-05, 5.78e-05, 5.77e-05, 5.77e-05, 28652.68317755], [1517006880000, 5.77e-05, 5.773e-05, 5.77e-05, 5.77e-05, 17266.95105808], [1517006940000, 5.77e-05, 5.77e-05, 5.754e-05, 5.769e-05, 14747.97446086], [1517007000000, 5.769e-05, 5.779e-05, 5.755e-05, 5.758e-05, 66863.86487334], [1517007060000, 5.758e-05, 5.774e-05, 5.756e-05, 5.774e-05, 6542.36153872], [1517007120000, 5.774e-05, 5.774e-05, 5.757e-05, 5.769e-05, 92486.69297321], [1517007180000, 5.761e-05, 5.762e-05, 5.76e-05, 5.76e-05, 25125.20602157], [1517007240000, 5.76e-05, 5.76e-05, 5.752e-05, 5.754e-05, 6334.30011133], [1517007300000, 5.754e-05, 5.76e-05, 5.752e-05, 5.76e-05, 18284.73469462], [1517007360000, 5.759e-05, 5.773e-05, 5.754e-05, 5.773e-05, 22603.56431689], [1517007420000, 5.773e-05, 5.778e-05, 5.773e-05, 5.778e-05, 13869.8893804], [1517007480000, 5.775e-05, 5.778e-05, 5.762e-05, 5.762e-05, 58108.41448241], [1517007540000, 5.763e-05, 5.779e-05, 5.763e-05, 5.763e-05, 54271.86985901], [1517007600000, 5.763e-05, 5.779e-05, 5.751e-05, 5.777e-05, 62112.28659638], [1517007660000, 5.764e-05, 5.775e-05, 5.751e-05, 5.756e-05, 51605.57750462], [1517007720000, 5.763e-05, 5.764e-05, 5.751e-05, 5.753e-05, 46118.45880558], [1517007780000, 5.753e-05, 5.754e-05, 5.751e-05, 5.751e-05, 23944.88573528], [1517007840000, 5.751e-05, 5.751e-05, 5.746e-05, 5.746e-05, 13758.25610231], [1517007900000, 5.75e-05, 5.75e-05, 5.741e-05, 5.741e-05, 48176.64258063], [1517007960000, 5.741e-05, 5.746e-05, 5.72e-05, 5.73e-05, 39999.14679393], [1517008020000, 5.73e-05, 5.73e-05, 5.721e-05, 5.73e-05, 93444.48773966], [1517008080000, 5.729e-05, 5.73e-05, 5.72e-05, 5.73e-05, 130282.12490523], [1517008140000, 5.73e-05, 5.73e-05, 5.723e-05, 5.723e-05, 6316.34422944], [1517008200000, 5.723e-05, 5.728e-05, 5.712e-05, 5.712e-05, 27113.19375168], [1517008260000, 5.712e-05, 5.728e-05, 5.708e-05, 5.723e-05, 23442.01123975], [1517008320000, 5.728e-05, 5.73e-05, 5.712e-05, 5.73e-05, 35801.89100503], [1517008380000, 5.73e-05, 5.751e-05, 5.73e-05, 5.731e-05, 41332.86736972], [1517008440000, 5.731e-05, 5.747e-05, 5.72e-05, 5.72e-05, 44967.49232937], [1517008500000, 5.72e-05, 5.741e-05, 5.72e-05, 5.73e-05, 6803.51318005], [1517008560000, 5.73e-05, 5.741e-05, 5.721e-05, 5.74e-05, 18231.95827731], [1517008620000, 5.721e-05, 5.739e-05, 5.721e-05, 5.737e-05, 7462.31221403], [1517008680000, 5.731e-05, 5.736e-05, 5.721e-05, 5.721e-05, 12304.11571865], [1517008740000, 5.722e-05, 5.734e-05, 5.722e-05, 5.734e-05, 4145.31938267], [1517008800000, 5.731e-05, 5.731e-05, 5.722e-05, 5.722e-05, 41713.98653383], [1517008860000, 5.722e-05, 5.722e-05, 5.708e-05, 5.721e-05, 20617.61223629], [1517008920000, 5.708e-05, 5.719e-05, 5.705e-05, 5.708e-05, 27482.28791786], [1517008980000, 5.709e-05, 5.718e-05, 5.709e-05, 5.709e-05, 9464.14883998], [1517009040000, 5.716e-05, 5.716e-05, 5.71e-05, 5.71e-05, 3330.23409016], [1517009100000, 5.71e-05, 5.714e-05, 5.71e-05, 5.71e-05, 40798.86585384], [1517009160000, 5.71e-05, 5.71e-05, 5.707e-05, 5.707e-05, 19077.95414653], [1517009220000, 5.707e-05, 5.707e-05, 5.702e-05, 5.702e-05, 5584.45286242], [1517009280000, 5.702e-05, 5.709e-05, 5.701e-05, 5.702e-05, 10216.09329769], [1517009340000, 5.702e-05, 5.706e-05, 5.698e-05, 5.698e-05, 18197.8109757], [1517009400000, 5.698e-05, 5.702e-05, 5.698e-05, 5.698e-05, 20545.7699183], [1517009460000, 5.699e-05, 5.699e-05, 5.689e-05, 5.689e-05, 13173.97469713], [1517009520000, 5.689e-05, 5.702e-05, 5.68e-05, 5.702e-05, 35207.35361905], [1517009580000, 5.699e-05, 5.699e-05, 5.681e-05, 5.682e-05, 9670.50765759], [1517009640000, 5.697e-05, 5.699e-05, 5.691e-05, 5.692e-05, 17320.06262248], [1517009700000, 5.692e-05, 5.692e-05, 5.682e-05, 5.682e-05, 16221.48267046], [1517009760000, 5.682e-05, 5.688e-05, 5.682e-05, 5.682e-05, 23092.22967284], [1517009820000, 5.683e-05, 5.683e-05, 5.681e-05, 5.681e-05, 77989.20551264], [1517009880000, 5.681e-05, 5.683e-05, 5.673e-05, 5.673e-05, 26545.19198115], [1517009940000, 5.672e-05, 5.672e-05, 5.653e-05, 5.671e-05, 27892.20686113], [1517010000000, 5.671e-05, 5.671e-05, 5.652e-05, 5.671e-05, 23437.99025823], [1517010060000, 5.671e-05, 5.672e-05, 5.665e-05, 5.672e-05, 10115.57796956], [1517010120000, 5.665e-05, 5.68e-05, 5.665e-05, 5.667e-05, 80171.56208659], [1517010180000, 5.683e-05, 5.699e-05, 5.672e-05, 5.692e-05, 55453.35439172], [1517010240000, 5.7e-05, 5.706e-05, 5.692e-05, 5.7e-05, 179600.66787009], [1517010300000, 5.693e-05, 5.706e-05, 5.692e-05, 5.692e-05, 116197.26208107], [1517010360000, 5.693e-05, 5.703e-05, 5.692e-05, 5.693e-05, 36034.03803111], [1517010420000, 5.693e-05, 5.693e-05, 5.677e-05, 5.678e-05, 27325.04596757], [1517010480000, 5.679e-05, 5.688e-05, 5.678e-05, 5.687e-05, 53459.31240948], [1517010540000, 5.688e-05, 5.7e-05, 5.687e-05, 5.7e-05, 31128.96256203], [1517010600000, 5.699e-05, 5.699e-05, 5.695e-05, 5.695e-05, 31635.65139324], [1517010660000, 5.695e-05, 5.695e-05, 5.691e-05, 5.691e-05, 13384.78636847], [1517010720000, 5.692e-05, 5.699e-05, 5.691e-05, 5.699e-05, 6864.24284974], [1517010780000, 5.695e-05, 5.695e-05, 5.682e-05, 5.682e-05, 44642.18479695], [1517010840000, 5.682e-05, 5.689e-05, 5.682e-05, 5.682e-05, 51640.10131704], [1517010900000, 5.685e-05, 5.688e-05, 5.68e-05, 5.688e-05, 41343.69529724], [1517010960000, 5.688e-05, 5.688e-05, 5.681e-05, 5.682e-05, 73690.91873482], [1517011020000, 5.682e-05, 5.682e-05, 5.678e-05, 5.678e-05, 39914.07589358], [1517011080000, 5.68e-05, 5.68e-05, 5.678e-05, 5.678e-05, 9553.53090829], [1517011140000, 5.679e-05, 5.679e-05, 5.665e-05, 5.668e-05, 24906.82579693], [1517011200000, 5.668e-05, 5.668e-05, 5.666e-05, 5.667e-05, 8369.33560483], [1517011260000, 5.667e-05, 5.667e-05, 5.651e-05, 5.66e-05, 19562.83547422], [1517011320000, 5.66e-05, 5.66e-05, 5.651e-05, 5.653e-05, 43779.03043449], [1517011380000, 5.653e-05, 5.659e-05, 5.633e-05, 5.646e-05, 143026.81376271], [1517011440000, 5.637e-05, 5.65e-05, 5.62e-05, 5.65e-05, 108223.83828533], [1517011500000, 5.65e-05, 5.66e-05, 5.632e-05, 5.65e-05, 25365.07589419], [1517011560000, 5.65e-05, 5.659e-05, 5.649e-05, 5.658e-05, 11846.07300815], [1517011620000, 5.659e-05, 5.659e-05, 5.656e-05, 5.656e-05, 27115.87500149], [1517011680000, 5.656e-05, 5.666e-05, 5.652e-05, 5.665e-05, 40114.70175022], [1517011740000, 5.665e-05, 5.674e-05, 5.664e-05, 5.668e-05, 20250.18442143], [1517011800000, 5.67e-05, 5.673e-05, 5.65e-05, 5.664e-05, 55259.22359573], [1517011860000, 5.664e-05, 5.675e-05, 5.652e-05, 5.675e-05, 83030.66306112], [1517011920000, 5.665e-05, 5.665e-05, 5.645e-05, 5.664e-05, 72403.13179741], [1517011980000, 5.663e-05, 5.663e-05, 5.639e-05, 5.65e-05, 13235.20287161], [1517012040000, 5.66e-05, 5.66e-05, 5.634e-05, 5.635e-05, 78638.07682067], [1517012100000, 5.635e-05, 5.635e-05, 5.628e-05, 5.634e-05, 17615.19213362], [1517012160000, 5.634e-05, 5.634e-05, 5.629e-05, 5.633e-05, 10565.15513433], [1517012220000, 5.633e-05, 5.66e-05, 5.623e-05, 5.66e-05, 88830.20786964], [1517012280000, 5.66e-05, 5.66e-05, 5.631e-05, 5.655e-05, 20022.03787087], [1517012340000, 5.655e-05, 5.655e-05, 5.637e-05, 5.653e-05, 26066.65384811], [1517012400000, 5.65e-05, 5.653e-05, 5.632e-05, 5.644e-05, 92879.2005626], [1517012460000, 5.644e-05, 5.644e-05, 5.631e-05, 5.631e-05, 28236.47393957], [1517012520000, 5.631e-05, 5.631e-05, 5.624e-05, 5.624e-05, 17999.20490981], [1517012580000, 5.624e-05, 5.631e-05, 5.624e-05, 5.63e-05, 9840.37264398], [1517012640000, 5.63e-05, 5.631e-05, 5.63e-05, 5.631e-05, 70574.91592838], [1517012700000, 5.631e-05, 5.631e-05, 5.63e-05, 5.63e-05, 25193.90526645], [1517012760000, 5.63e-05, 5.642e-05, 5.63e-05, 5.63e-05, 23716.49722123], [1517012820000, 5.642e-05, 5.645e-05, 5.631e-05, 5.645e-05, 19542.27761159], [1517012880000, 5.65e-05, 5.654e-05, 5.633e-05, 5.65e-05, 30735.00667962], [1517012940000, 5.653e-05, 5.653e-05, 5.633e-05, 5.649e-05, 36041.83790426], [1517013000000, 5.634e-05, 5.635e-05, 5.617e-05, 5.62e-05, 161737.37380357], [1517013060000, 5.62e-05, 5.62e-05, 5.615e-05, 5.619e-05, 32325.71249634], [1517013120000, 5.619e-05, 5.62e-05, 5.61e-05, 5.611e-05, 59853.64980564], [1517013180000, 5.611e-05, 5.62e-05, 5.61e-05, 5.62e-05, 65790.69785647], [1517013240000, 5.619e-05, 5.619e-05, 5.602e-05, 5.609e-05, 33732.06989256], [1517013300000, 5.615e-05, 5.615e-05, 5.602e-05, 5.61e-05, 9881.88789239], [1517013360000, 5.603e-05, 5.603e-05, 5.592e-05, 5.602e-05, 62699.7415204], [1517013420000, 5.602e-05, 5.602e-05, 5.596e-05, 5.597e-05, 22980.29468249], [1517013480000, 5.599e-05, 5.602e-05, 5.597e-05, 5.602e-05, 40426.17763754], [1517013540000, 5.602e-05, 5.615e-05, 5.6e-05, 5.615e-05, 54579.15179444], [1517013600000, 5.615e-05, 5.615e-05, 5.606e-05, 5.613e-05, 37669.26652871], [1517013660000, 5.613e-05, 5.615e-05, 5.607e-05, 5.609e-05, 61892.87715315], [1517013720000, 5.609e-05, 5.613e-05, 5.608e-05, 5.613e-05, 20415.02166135], [1517013780000, 5.613e-05, 5.613e-05, 5.611e-05, 5.611e-05, 17839.48214647], [1517013840000, 5.613e-05, 5.613e-05, 5.608e-05, 5.613e-05, 25673.32490287], [1517013900000, 5.613e-05, 5.613e-05, 5.609e-05, 5.611e-05, 34637.23263537], [1517013960000, 5.611e-05, 5.613e-05, 5.6e-05, 5.609e-05, 50730.98858555], [1517014020000, 5.609e-05, 5.609e-05, 5.6e-05, 5.608e-05, 12066.90846679], [1517014080000, 5.609e-05, 5.609e-05, 5.6e-05, 5.6e-05, 11801.73818859], [1517014140000, 5.6e-05, 5.607e-05, 5.593e-05, 5.6e-05, 36529.13739078], [1517014200000, 5.592e-05, 5.6e-05, 5.591e-05, 5.6e-05, 36987.51634193], [1517014260000, 5.6e-05, 5.6e-05, 5.59e-05, 5.599e-05, 27540.57790308], [1517014320000, 5.6e-05, 5.6e-05, 5.592e-05, 5.6e-05, 62735.02763969], [1517014380000, 5.6e-05, 5.6e-05, 5.592e-05, 5.593e-05, 13954.86533502], [1517014440000, 5.593e-05, 5.6e-05, 5.592e-05, 5.599e-05, 43916.61481324], [1517014500000, 5.599e-05, 5.6e-05, 5.599e-05, 5.599e-05, 71335.78821259], [1517014560000, 5.599e-05, 5.599e-05, 5.598e-05, 5.598e-05, 10131.96656117], [1517014620000, 5.599e-05, 5.608e-05, 5.599e-05, 5.601e-05, 110310.1071634], [1517014680000, 5.601e-05, 5.608e-05, 5.592e-05, 5.596e-05, 74696.40439166], [1517014740000, 5.608e-05, 5.614e-05, 5.585e-05, 5.592e-05, 55097.45796409], [1517014800000, 5.592e-05, 5.592e-05, 5.579e-05, 5.584e-05, 135611.75096922], [1517014860000, 5.584e-05, 5.592e-05, 5.579e-05, 5.592e-05, 80625.72306041], [1517014920000, 5.59e-05, 5.592e-05, 5.573e-05, 5.579e-05, 216756.17787273], [1517014980000, 5.579e-05, 5.592e-05, 5.569e-05, 5.571e-05, 145207.50992615], [1517015040000, 5.592e-05, 5.62e-05, 5.563e-05, 5.563e-05, 223125.27263832], [1517015100000, 5.563e-05, 5.609e-05, 5.554e-05, 5.586e-05, 113801.18543728], [1517015160000, 5.586e-05, 5.586e-05, 5.562e-05, 5.572e-05, 39241.51361921], [1517015220000, 5.572e-05, 5.578e-05, 5.569e-05, 5.571e-05, 27535.09897819], [1517015280000, 5.571e-05, 5.586e-05, 5.57e-05, 5.572e-05, 62840.63489981], [1517015340000, 5.578e-05, 5.578e-05, 5.572e-05, 5.577e-05, 9097.66285456], [1517015400000, 5.577e-05, 5.577e-05, 5.572e-05, 5.575e-05, 73673.9761238], [1517015460000, 5.575e-05, 5.586e-05, 5.55e-05, 5.586e-05, 183840.27522868], [1517015520000, 5.553e-05, 5.598e-05, 5.553e-05, 5.585e-05, 5348.16476618], [1517015580000, 5.585e-05, 5.585e-05, 5.571e-05, 5.572e-05, 7316.93004167], [1517015640000, 5.584e-05, 5.585e-05, 5.572e-05, 5.573e-05, 9118.7603696], [1517015700000, 5.573e-05, 5.585e-05, 5.566e-05, 5.57e-05, 90802.45201662], [1517015760000, 5.57e-05, 5.57e-05, 5.556e-05, 5.556e-05, 24381.94304081], [1517015820000, 5.556e-05, 5.57e-05, 5.554e-05, 5.554e-05, 50397.20997151], [1517015880000, 5.565e-05, 5.571e-05, 5.555e-05, 5.556e-05, 21564.33787334], [1517015940000, 5.556e-05, 5.573e-05, 5.554e-05, 5.558e-05, 22371.54017303], [1517016000000, 5.558e-05, 5.57e-05, 5.55e-05, 5.555e-05, 100603.40847813], [1517016060000, 5.554e-05, 5.564e-05, 5.554e-05, 5.556e-05, 6063.66432894], [1517016120000, 5.564e-05, 5.564e-05, 5.555e-05, 5.563e-05, 18065.05411867], [1517016180000, 5.564e-05, 5.573e-05, 5.563e-05, 5.573e-05, 11693.7621537], [1517016240000, 5.573e-05, 5.6e-05, 5.573e-05, 5.583e-05, 40944.37981122], [1517016300000, 5.576e-05, 5.586e-05, 5.564e-05, 5.586e-05, 34626.88809207], [1517016360000, 5.581e-05, 5.586e-05, 5.575e-05, 5.585e-05, 24138.23288906], [1517016420000, 5.585e-05, 5.598e-05, 5.584e-05, 5.598e-05, 21790.02154558], [1517016480000, 5.597e-05, 5.6e-05, 5.586e-05, 5.6e-05, 18314.54581408], [1517016540000, 5.604e-05, 5.628e-05, 5.597e-05, 5.628e-05, 49567.15421604], [1517016600000, 5.62e-05, 5.63e-05, 5.618e-05, 5.63e-05, 55353.66432152], [1517016660000, 5.63e-05, 5.654e-05, 5.63e-05, 5.645e-05, 39262.2019303], [1517016720000, 5.645e-05, 5.654e-05, 5.638e-05, 5.654e-05, 100543.65028212], [1517016780000, 5.654e-05, 5.66e-05, 5.654e-05, 5.655e-05, 85426.75292384], [1517016840000, 5.655e-05, 5.67e-05, 5.623e-05, 5.645e-05, 313719.3532509], [1517016900000, 5.645e-05, 5.667e-05, 5.626e-05, 5.664e-05, 43829.5053673], [1517016960000, 5.656e-05, 5.656e-05, 5.631e-05, 5.631e-05, 20720.61340262], [1517017020000, 5.65e-05, 5.656e-05, 5.632e-05, 5.649e-05, 58582.47022774], [1517017080000, 5.649e-05, 5.655e-05, 5.632e-05, 5.65e-05, 17253.66955583], [1517017140000, 5.639e-05, 5.653e-05, 5.633e-05, 5.653e-05, 53491.4149513], [1517017200000, 5.653e-05, 5.656e-05, 5.653e-05, 5.653e-05, 32622.33684634], [1517017260000, 5.647e-05, 5.656e-05, 5.647e-05, 5.653e-05, 11418.20086639], [1517017320000, 5.653e-05, 5.653e-05, 5.647e-05, 5.648e-05, 16402.70643437], [1517017380000, 5.648e-05, 5.656e-05, 5.646e-05, 5.656e-05, 59633.6761091], [1517017440000, 5.647e-05, 5.655e-05, 5.629e-05, 5.637e-05, 102215.97577907], [1517017500000, 5.632e-05, 5.65e-05, 5.63e-05, 5.647e-05, 13941.25466349], [1517017560000, 5.637e-05, 5.649e-05, 5.628e-05, 5.639e-05, 92028.70100363], [1517017620000, 5.639e-05, 5.653e-05, 5.619e-05, 5.649e-05, 12380.15262064], [1517017680000, 5.645e-05, 5.645e-05, 5.619e-05, 5.63e-05, 17591.09480929], [1517017740000, 5.63e-05, 5.63e-05, 5.619e-05, 5.62e-05, 11970.94465733], [1517017800000, 5.62e-05, 5.62e-05, 5.612e-05, 5.612e-05, 7876.28199188], [1517017860000, 5.607e-05, 5.607e-05, 5.604e-05, 5.604e-05, 11539.74490753], [1517017920000, 5.602e-05, 5.604e-05, 5.6e-05, 5.6e-05, 17732.54476327], [1517017980000, 5.6e-05, 5.6e-05, 5.586e-05, 5.6e-05, 15464.1988042], [1517018040000, 5.6e-05, 5.605e-05, 5.6e-05, 5.605e-05, 13487.4588789], [1517018100000, 5.612e-05, 5.616e-05, 5.612e-05, 5.616e-05, 10829.44149806], [1517018160000, 5.612e-05, 5.612e-05, 5.601e-05, 5.602e-05, 14826.59760483], [1517018220000, 5.602e-05, 5.612e-05, 5.575e-05, 5.575e-05, 16306.45725751], [1517018280000, 5.597e-05, 5.612e-05, 5.578e-05, 5.612e-05, 13595.27447795], [1517018340000, 5.599e-05, 5.612e-05, 5.599e-05, 5.612e-05, 24288.56978441], [1517018400000, 5.612e-05, 5.612e-05, 5.6e-05, 5.612e-05, 43796.43502863], [1517018460000, 5.612e-05, 5.616e-05, 5.602e-05, 5.607e-05, 25661.85891651], [1517018520000, 5.607e-05, 5.612e-05, 5.604e-05, 5.612e-05, 37811.94727449], [1517018580000, 5.612e-05, 5.616e-05, 5.609e-05, 5.615e-05, 9405.20354957], [1517018640000, 5.615e-05, 5.615e-05, 5.615e-05, 5.615e-05, 9262.44601547], [1517018700000, 5.615e-05, 5.616e-05, 5.609e-05, 5.616e-05, 11914.23423197], [1517018760000, 5.61e-05, 5.615e-05, 5.61e-05, 5.612e-05, 11774.74897517], [1517018820000, 5.612e-05, 5.625e-05, 5.612e-05, 5.612e-05, 30055.42355191], [1517018880000, 5.626e-05, 5.655e-05, 5.618e-05, 5.618e-05, 15053.66899138], [1517018940000, 5.622e-05, 5.653e-05, 5.618e-05, 5.653e-05, 10349.08638141], [1517019000000, 5.621e-05, 5.651e-05, 5.621e-05, 5.648e-05, 3613.94710504], [1517019060000, 5.648e-05, 5.65e-05, 5.648e-05, 5.649e-05, 4993.51364906], [1517019120000, 5.649e-05, 5.65e-05, 5.648e-05, 5.648e-05, 10121.46965706], [1517019180000, 5.648e-05, 5.648e-05, 5.645e-05, 5.645e-05, 870.84391951], [1517019240000, 5.645e-05, 5.648e-05, 5.64e-05, 5.64e-05, 41051.04081346], [1517019300000, 5.643e-05, 5.655e-05, 5.64e-05, 5.645e-05, 74777.81345767], [1517019360000, 5.655e-05, 5.663e-05, 5.65e-05, 5.663e-05, 52770.18657793], [1517019420000, 5.65e-05, 5.663e-05, 5.647e-05, 5.662e-05, 1768.87575224], [1517019480000, 5.662e-05, 5.662e-05, 5.65e-05, 5.651e-05, 13488.54353923], [1517019540000, 5.652e-05, 5.652e-05, 5.651e-05, 5.651e-05, 2713.06498709], [1517019600000, 5.65e-05, 5.662e-05, 5.65e-05, 5.652e-05, 18204.69781573], [1517019660000, 5.654e-05, 5.662e-05, 5.654e-05, 5.662e-05, 6211.44360135], [1517019720000, 5.654e-05, 5.655e-05, 5.651e-05, 5.651e-05, 22814.78876422], [1517019780000, 5.651e-05, 5.654e-05, 5.65e-05, 5.65e-05, 60997.15125707], [1517019840000, 5.653e-05, 5.653e-05, 5.65e-05, 5.65e-05, 124565.81471439], [1517019900000, 5.653e-05, 5.653e-05, 5.64e-05, 5.64e-05, 38337.88987664], [1517019960000, 5.64e-05, 5.641e-05, 5.64e-05, 5.641e-05, 15696.88344466], [1517020020000, 5.64e-05, 5.654e-05, 5.64e-05, 5.64e-05, 20811.48267075], [1517020080000, 5.64e-05, 5.64e-05, 5.631e-05, 5.64e-05, 5633.40075138], [1517020140000, 5.64e-05, 5.641e-05, 5.634e-05, 5.641e-05, 1508.7391564], [1517020200000, 5.641e-05, 5.653e-05, 5.626e-05, 5.64e-05, 6047.40475951], [1517020260000, 5.641e-05, 5.652e-05, 5.63e-05, 5.652e-05, 36052.20532797], [1517020320000, 5.643e-05, 5.652e-05, 5.642e-05, 5.65e-05, 22909.82778076], [1517020380000, 5.651e-05, 5.653e-05, 5.641e-05, 5.653e-05, 23064.02229642], [1517020440000, 5.653e-05, 5.654e-05, 5.641e-05, 5.641e-05, 24901.54999889], [1517020500000, 5.642e-05, 5.659e-05, 5.638e-05, 5.645e-05, 36584.90985362], [1517020560000, 5.639e-05, 5.656e-05, 5.63e-05, 5.656e-05, 11089.25032657], [1517020620000, 5.656e-05, 5.66e-05, 5.647e-05, 5.655e-05, 23643.25401577], [1517020680000, 5.655e-05, 5.66e-05, 5.648e-05, 5.649e-05, 15714.32402011], [1517020740000, 5.659e-05, 5.661e-05, 5.648e-05, 5.648e-05, 15415.17798336], [1517020800000, 5.661e-05, 5.661e-05, 5.653e-05, 5.653e-05, 12155.14042505], [1517020860000, 5.651e-05, 5.653e-05, 5.649e-05, 5.653e-05, 29766.48006008], [1517020920000, 5.652e-05, 5.66e-05, 5.652e-05, 5.66e-05, 19582.65975555], [1517020980000, 5.655e-05, 5.661e-05, 5.654e-05, 5.661e-05, 17339.58964755], [1517021040000, 5.661e-05, 5.661e-05, 5.655e-05, 5.656e-05, 47631.57131287], [1517021100000, 5.654e-05, 5.659e-05, 5.649e-05, 5.649e-05, 22754.19014189], [1517021160000, 5.649e-05, 5.659e-05, 5.647e-05, 5.658e-05, 26406.28038091], [1517021220000, 5.658e-05, 5.658e-05, 5.645e-05, 5.646e-05, 2079.55315226], [1517021280000, 5.647e-05, 5.649e-05, 5.632e-05, 5.649e-05, 7891.7677828], [1517021340000, 5.649e-05, 5.656e-05, 5.649e-05, 5.655e-05, 1185.45422577], [1517021400000, 5.653e-05, 5.656e-05, 5.653e-05, 5.656e-05, 11184.97467547], [1517021460000, 5.654e-05, 5.656e-05, 5.653e-05, 5.655e-05, 12541.40902783], [1517021520000, 5.654e-05, 5.655e-05, 5.653e-05, 5.655e-05, 18621.27098544], [1517021580000, 5.655e-05, 5.655e-05, 5.655e-05, 5.655e-05, 4393.78761255], [1517021640000, 5.655e-05, 5.655e-05, 5.628e-05, 5.654e-05, 6675.80899741], [1517021700000, 5.654e-05, 5.654e-05, 5.635e-05, 5.653e-05, 11217.37846441], [1517021760000, 5.653e-05, 5.653e-05, 5.636e-05, 5.638e-05, 2385.00857706], [1517021820000, 5.651e-05, 5.652e-05, 5.65e-05, 5.65e-05, 13798.67551489], [1517021880000, 5.652e-05, 5.653e-05, 5.649e-05, 5.653e-05, 50699.56886854], [1517021940000, 5.653e-05, 5.653e-05, 5.645e-05, 5.647e-05, 11893.65949834], [1517022000000, 5.649e-05, 5.653e-05, 5.641e-05, 5.649e-05, 48822.2992251], [1517022060000, 5.649e-05, 5.649e-05, 5.647e-05, 5.649e-05, 10620.16654737], [1517022120000, 5.647e-05, 5.649e-05, 5.638e-05, 5.645e-05, 11460.88327031], [1517022180000, 5.64e-05, 5.641e-05, 5.635e-05, 5.641e-05, 7038.69386747], [1517022240000, 5.641e-05, 5.641e-05, 5.633e-05, 5.641e-05, 22568.71918778], [1517022300000, 5.641e-05, 5.647e-05, 5.634e-05, 5.635e-05, 29691.99205289], [1517022360000, 5.635e-05, 5.64e-05, 5.63e-05, 5.63e-05, 23657.3124342], [1517022420000, 5.63e-05, 5.641e-05, 5.63e-05, 5.635e-05, 23258.51208378], [1517022480000, 5.635e-05, 5.641e-05, 5.629e-05, 5.63e-05, 34820.99438902], [1517022540000, 5.63e-05, 5.64e-05, 5.63e-05, 5.64e-05, 10489.39979162], [1517022600000, 5.639e-05, 5.642e-05, 5.639e-05, 5.642e-05, 10791.75331452], [1517022660000, 5.642e-05, 5.642e-05, 5.641e-05, 5.641e-05, 26178.07074961], [1517022720000, 5.641e-05, 5.642e-05, 5.629e-05, 5.639e-05, 25205.38708837], [1517022780000, 5.639e-05, 5.64e-05, 5.63e-05, 5.63e-05, 30954.17947907], [1517022840000, 5.63e-05, 5.63e-05, 5.629e-05, 5.629e-05, 13053.99972324], [1517022900000, 5.64e-05, 5.646e-05, 5.629e-05, 5.634e-05, 24929.24447401], [1517022960000, 5.634e-05, 5.646e-05, 5.629e-05, 5.629e-05, 5534.87200851], [1517023020000, 5.645e-05, 5.645e-05, 5.645e-05, 5.645e-05, 481.31328012], [1517023080000, 5.63e-05, 5.64e-05, 5.629e-05, 5.63e-05, 1034.63254383], [1517023140000, 5.629e-05, 5.63e-05, 5.629e-05, 5.629e-05, 4873.51525727], [1517023200000, 5.627e-05, 5.629e-05, 5.6e-05, 5.629e-05, 106102.77923055], [1517023260000, 5.628e-05, 5.629e-05, 5.605e-05, 5.62e-05, 16979.94262617], [1517023320000, 5.62e-05, 5.62e-05, 5.605e-05, 5.62e-05, 32032.58329779], [1517023380000, 5.62e-05, 5.629e-05, 5.605e-05, 5.62e-05, 5681.00171526], [1517023440000, 5.619e-05, 5.619e-05, 5.61e-05, 5.61e-05, 1440.76736022], [1517023500000, 5.611e-05, 5.611e-05, 5.606e-05, 5.61e-05, 9043.33806921], [1517023560000, 5.61e-05, 5.61e-05, 5.607e-05, 5.607e-05, 1772.84630595], [1517023620000, 5.608e-05, 5.608e-05, 5.607e-05, 5.608e-05, 50788.9563608], [1517023680000, 5.608e-05, 5.62e-05, 5.607e-05, 5.62e-05, 7400.36600672], [1517023740000, 5.62e-05, 5.629e-05, 5.62e-05, 5.628e-05, 10898.88751683], [1517023800000, 5.629e-05, 5.629e-05, 5.628e-05, 5.629e-05, 2007.11328314], [1517023860000, 5.629e-05, 5.629e-05, 5.62e-05, 5.62e-05, 23629.82567439], [1517023920000, 5.62e-05, 5.629e-05, 5.62e-05, 5.628e-05, 58339.6378481], [1517023980000, 5.622e-05, 5.622e-05, 5.62e-05, 5.62e-05, 6759.3249199], [1517024040000, 5.62e-05, 5.629e-05, 5.62e-05, 5.622e-05, 13052.7742742], [1517024100000, 5.628e-05, 5.629e-05, 5.625e-05, 5.629e-05, 13791.82954868], [1517024160000, 5.63e-05, 5.63e-05, 5.629e-05, 5.629e-05, 1186.64880102], [1517024220000, 5.628e-05, 5.628e-05, 5.625e-05, 5.628e-05, 6543.98548351], [1517024280000, 5.628e-05, 5.628e-05, 5.628e-05, 5.628e-05, 11469.27996765], [1517024340000, 5.626e-05, 5.626e-05, 5.625e-05, 5.625e-05, 3973.82822763], [1517024400000, 5.628e-05, 5.629e-05, 5.628e-05, 5.628e-05, 2260.97505023], [1517024460000, 5.629e-05, 5.629e-05, 5.628e-05, 5.628e-05, 5062.39803097], [1517024520000, 5.629e-05, 5.629e-05, 5.628e-05, 5.628e-05, 49957.26773298], [1517024580000, 5.628e-05, 5.628e-05, 5.626e-05, 5.628e-05, 11956.07141404], [1517024640000, 5.627e-05, 5.627e-05, 5.625e-05, 5.625e-05, 5874.49446211], [1517024700000, 5.625e-05, 5.653e-05, 5.62e-05, 5.625e-05, 74651.47477997], [1517024760000, 5.645e-05, 5.646e-05, 5.625e-05, 5.645e-05, 1279.55296409], [1517024820000, 5.645e-05, 5.646e-05, 5.625e-05, 5.625e-05, 12153.79564003], [1517024880000, 5.625e-05, 5.628e-05, 5.624e-05, 5.624e-05, 7965.88592551], [1517024940000, 5.624e-05, 5.624e-05, 5.617e-05, 5.617e-05, 7189.09075575], [1517025000000, 5.624e-05, 5.628e-05, 5.617e-05, 5.617e-05, 3315.35442113], [1517025060000, 5.617e-05, 5.617e-05, 5.606e-05, 5.606e-05, 15925.93420668], [1517025120000, 5.606e-05, 5.611e-05, 5.605e-05, 5.606e-05, 4527.07948973], [1517025180000, 5.606e-05, 5.611e-05, 5.606e-05, 5.606e-05, 15996.43358204], [1517025240000, 5.607e-05, 5.612e-05, 5.606e-05, 5.612e-05, 23570.28679135], [1517025300000, 5.612e-05, 5.612e-05, 5.606e-05, 5.606e-05, 3411.29150425], [1517025360000, 5.607e-05, 5.611e-05, 5.606e-05, 5.609e-05, 6427.06509467], [1517025420000, 5.609e-05, 5.61e-05, 5.609e-05, 5.61e-05, 5590.11142235], [1517025480000, 5.61e-05, 5.613e-05, 5.609e-05, 5.609e-05, 45616.34900667], [1517025540000, 5.613e-05, 5.613e-05, 5.609e-05, 5.613e-05, 14254.4305946], [1517025600000, 5.617e-05, 5.617e-05, 5.61e-05, 5.61e-05, 4587.97144419], [1517025660000, 5.612e-05, 5.612e-05, 5.61e-05, 5.612e-05, 718.88578158], [1517025720000, 5.61e-05, 5.612e-05, 5.61e-05, 5.611e-05, 54709.23281707], [1517025780000, 5.61e-05, 5.611e-05, 5.605e-05, 5.608e-05, 30481.78669055], [1517025840000, 5.608e-05, 5.608e-05, 5.606e-05, 5.607e-05, 6473.34417233], [1517025900000, 5.608e-05, 5.612e-05, 5.606e-05, 5.612e-05, 78308.801603], [1517025960000, 5.606e-05, 5.612e-05, 5.606e-05, 5.612e-05, 100198.73779784], [1517026020000, 5.612e-05, 5.617e-05, 5.612e-05, 5.617e-05, 24307.71819075], [1517026080000, 5.617e-05, 5.617e-05, 5.614e-05, 5.614e-05, 1313.39845935], [1517026140000, 5.614e-05, 5.614e-05, 5.609e-05, 5.609e-05, 3921.00688993], [1517026200000, 5.609e-05, 5.612e-05, 5.609e-05, 5.611e-05, 2836.65850317], [1517026260000, 5.611e-05, 5.611e-05, 5.611e-05, 5.611e-05, 639.04195646], [1517026320000, 5.609e-05, 5.609e-05, 5.608e-05, 5.608e-05, 7636.56741712], [1517026380000, 5.608e-05, 5.609e-05, 5.608e-05, 5.609e-05, 1208.36783303], [1517026440000, 5.608e-05, 5.611e-05, 5.608e-05, 5.611e-05, 3226.13866886], [1517026500000, 5.609e-05, 5.624e-05, 5.609e-05, 5.618e-05, 4851.3290196], [1517026560000, 5.612e-05, 5.627e-05, 5.609e-05, 5.627e-05, 1468.96330727], [1517026620000, 5.627e-05, 5.627e-05, 5.612e-05, 5.627e-05, 6574.27776938], [1517026680000, 5.64e-05, 5.64e-05, 5.633e-05, 5.636e-05, 362.08689393], [1517026740000, 5.64e-05, 5.64e-05, 5.64e-05, 5.64e-05, 2462.49062134], [1517026800000, 5.64e-05, 5.646e-05, 5.64e-05, 5.643e-05, 7601.8998659], [1517026860000, 5.643e-05, 5.646e-05, 5.643e-05, 5.646e-05, 5140.09138502], [1517026920000, 5.644e-05, 5.646e-05, 5.643e-05, 5.646e-05, 6095.02112978], [1517026980000, 5.646e-05, 5.654e-05, 5.646e-05, 5.654e-05, 47111.02529524], [1517027040000, 5.649e-05, 5.66e-05, 5.649e-05, 5.65e-05, 9109.8651927], [1517027100000, 5.656e-05, 5.656e-05, 5.643e-05, 5.649e-05, 15066.48206084], [1517027160000, 5.644e-05, 5.657e-05, 5.644e-05, 5.646e-05, 18069.03880181], [1517027220000, 5.657e-05, 5.657e-05, 5.647e-05, 5.656e-05, 1954.92787622], [1517027280000, 5.649e-05, 5.656e-05, 5.647e-05, 5.648e-05, 11039.94019907], [1517027340000, 5.648e-05, 5.657e-05, 5.648e-05, 5.657e-05, 3331.46834331], [1517027400000, 5.657e-05, 5.657e-05, 5.648e-05, 5.656e-05, 4648.94959741], [1517027460000, 5.656e-05, 5.657e-05, 5.648e-05, 5.657e-05, 10873.070298], [1517027520000, 5.655e-05, 5.659e-05, 5.655e-05, 5.659e-05, 2994.31998973], [1517027580000, 5.659e-05, 5.659e-05, 5.658e-05, 5.658e-05, 6767.2188084], [1517027640000, 5.657e-05, 5.657e-05, 5.649e-05, 5.65e-05, 23643.43171132], [1517027700000, 5.654e-05, 5.654e-05, 5.649e-05, 5.651e-05, 3732.90085275], [1517027760000, 5.65e-05, 5.651e-05, 5.649e-05, 5.65e-05, 7458.29640999], [1517027820000, 5.65e-05, 5.658e-05, 5.64e-05, 5.64e-05, 31116.44142019], [1517027880000, 5.64e-05, 5.646e-05, 5.622e-05, 5.622e-05, 12784.53151174], [1517027940000, 5.646e-05, 5.646e-05, 5.639e-05, 5.646e-05, 514.62944261], [1517028000000, 5.646e-05, 5.65e-05, 5.646e-05, 5.65e-05, 161.15916276], [1517028060000, 5.65e-05, 5.657e-05, 5.65e-05, 5.657e-05, 9420.54223702], [1517028120000, 5.659e-05, 5.661e-05, 5.65e-05, 5.65e-05, 6255.2199258], [1517028180000, 5.65e-05, 5.659e-05, 5.65e-05, 5.65e-05, 2097.42279816], [1517028240000, 5.65e-05, 5.651e-05, 5.65e-05, 5.65e-05, 1504.00163217], [1517028300000, 5.651e-05, 5.659e-05, 5.65e-05, 5.659e-05, 12668.01257848], [1517028360000, 5.651e-05, 5.651e-05, 5.648e-05, 5.65e-05, 2689.4404084], [1517028420000, 5.65e-05, 5.65e-05, 5.649e-05, 5.649e-05, 1562.74447572], [1517028480000, 5.649e-05, 5.649e-05, 5.64e-05, 5.64e-05, 4872.80650689], [1517028540000, 5.646e-05, 5.649e-05, 5.64e-05, 5.644e-05, 24038.62896848], [1517028600000, 5.644e-05, 5.644e-05, 5.64e-05, 5.64e-05, 52471.91094854], [1517028660000, 5.641e-05, 5.649e-05, 5.64e-05, 5.648e-05, 11449.46340071], [1517028720000, 5.648e-05, 5.648e-05, 5.64e-05, 5.641e-05, 12688.7147394], [1517028780000, 5.64e-05, 5.64e-05, 5.639e-05, 5.639e-05, 30455.94761852], [1517028840000, 5.64e-05, 5.64e-05, 5.639e-05, 5.64e-05, 5619.96998416], [1517028900000, 5.64e-05, 5.648e-05, 5.639e-05, 5.64e-05, 17110.85901569], [1517028960000, 5.64e-05, 5.64e-05, 5.64e-05, 5.64e-05, 2679.01527636], [1517029020000, 5.64e-05, 5.64e-05, 5.627e-05, 5.627e-05, 4928.99803239], [1517029080000, 5.627e-05, 5.627e-05, 5.621e-05, 5.621e-05, 2950.85076944], [1517029140000, 5.621e-05, 5.622e-05, 5.621e-05, 5.622e-05, 4338.61128133], [1517029200000, 5.622e-05, 5.622e-05, 5.621e-05, 5.621e-05, 2127.87743106], [1517029260000, 5.622e-05, 5.622e-05, 5.62e-05, 5.62e-05, 9269.056942], [1517029320000, 5.62e-05, 5.621e-05, 5.619e-05, 5.619e-05, 21231.25701962], [1517029380000, 5.621e-05, 5.638e-05, 5.62e-05, 5.638e-05, 15172.59199595], [1517029440000, 5.638e-05, 5.639e-05, 5.638e-05, 5.639e-05, 4021.09340825], [1517029500000, 5.639e-05, 5.639e-05, 5.638e-05, 5.638e-05, 1694.42822288], [1517029560000, 5.632e-05, 5.632e-05, 5.619e-05, 5.628e-05, 7233.08205543], [1517029620000, 5.633e-05, 5.633e-05, 5.628e-05, 5.632e-05, 1062.04399205], [1517029680000, 5.632e-05, 5.632e-05, 5.628e-05, 5.629e-05, 3344.00551344], [1517029740000, 5.629e-05, 5.64e-05, 5.628e-05, 5.639e-05, 11362.17246929], [1517029800000, 5.633e-05, 5.639e-05, 5.627e-05, 5.627e-05, 9138.0239246], [1517029860000, 5.626e-05, 5.627e-05, 5.626e-05, 5.626e-05, 14074.24818767], [1517029920000, 5.627e-05, 5.632e-05, 5.62e-05, 5.631e-05, 19656.64086664], [1517029980000, 5.631e-05, 5.631e-05, 5.621e-05, 5.628e-05, 15498.76395613], [1517030040000, 5.628e-05, 5.629e-05, 5.623e-05, 5.626e-05, 18101.98257286], [1517030100000, 5.624e-05, 5.624e-05, 5.62e-05, 5.623e-05, 10110.819726], [1517030160000, 5.622e-05, 5.623e-05, 5.619e-05, 5.621e-05, 20098.13849708], [1517030220000, 5.622e-05, 5.627e-05, 5.621e-05, 5.627e-05, 5819.24202551], [1517030280000, 5.627e-05, 5.627e-05, 5.621e-05, 5.621e-05, 12612.3081822], [1517030340000, 5.627e-05, 5.628e-05, 5.621e-05, 5.628e-05, 15733.07436432], [1517030400000, 5.629e-05, 5.633e-05, 5.628e-05, 5.633e-05, 5768.54233247], [1517030460000, 5.633e-05, 5.633e-05, 5.632e-05, 5.633e-05, 701.1687268], [1517030520000, 5.633e-05, 5.64e-05, 5.619e-05, 5.64e-05, 9406.65972575], [1517030580000, 5.636e-05, 5.65e-05, 5.621e-05, 5.64e-05, 26657.11859603], [1517030640000, 5.632e-05, 5.647e-05, 5.632e-05, 5.632e-05, 9689.44229344], [1517030700000, 5.64e-05, 5.64e-05, 5.628e-05, 5.628e-05, 1826.24552384], [1517030760000, 5.628e-05, 5.639e-05, 5.62e-05, 5.62e-05, 45458.6688892], [1517030820000, 5.624e-05, 5.624e-05, 5.621e-05, 5.622e-05, 16794.33253066], [1517030940000, 5.624e-05, 5.624e-05, 5.622e-05, 5.622e-05, 50.0], [1517031000000, 5.623e-05, 5.633e-05, 5.623e-05, 5.633e-05, 8305.81032531], [1517031060000, 5.632e-05, 5.632e-05, 5.626e-05, 5.63e-05, 10320.14631462], [1517031120000, 5.63e-05, 5.63e-05, 5.629e-05, 5.629e-05, 13673.52939167], [1517031180000, 5.628e-05, 5.639e-05, 5.626e-05, 5.637e-05, 68772.40734505], [1517031240000, 5.637e-05, 5.637e-05, 5.624e-05, 5.634e-05, 29497.45174944], [1517031300000, 5.633e-05, 5.637e-05, 5.63e-05, 5.637e-05, 15560.58316148], [1517031360000, 5.637e-05, 5.637e-05, 5.63e-05, 5.63e-05, 27897.98081223], [1517031420000, 5.63e-05, 5.633e-05, 5.63e-05, 5.633e-05, 8310.53900937], [1517031480000, 5.633e-05, 5.65e-05, 5.629e-05, 5.633e-05, 32391.20485968], [1517031540000, 5.634e-05, 5.641e-05, 5.623e-05, 5.628e-05, 21958.98415467], [1517031600000, 5.64e-05, 5.641e-05, 5.629e-05, 5.641e-05, 21915.47930071], [1517031660000, 5.631e-05, 5.64e-05, 5.627e-05, 5.629e-05, 55005.72803752], [1517031720000, 5.629e-05, 5.631e-05, 5.61e-05, 5.621e-05, 32896.86434299], [1517031780000, 5.63e-05, 5.631e-05, 5.615e-05, 5.616e-05, 20292.30704361], [1517031840000, 5.616e-05, 5.64e-05, 5.607e-05, 5.631e-05, 34845.19533171], [1517031900000, 5.63e-05, 5.631e-05, 5.63e-05, 5.63e-05, 1534.68805137], [1517031960000, 5.64e-05, 5.64e-05, 5.639e-05, 5.639e-05, 9551.68667511], [1517032020000, 5.639e-05, 5.64e-05, 5.639e-05, 5.64e-05, 22482.79557261], [1517032080000, 5.639e-05, 5.639e-05, 5.63e-05, 5.638e-05, 9228.59730966], [1517032140000, 5.638e-05, 5.638e-05, 5.608e-05, 5.608e-05, 3744.74440641], [1517032200000, 5.608e-05, 5.638e-05, 5.608e-05, 5.638e-05, 1583.71418916], [1517032260000, 5.637e-05, 5.645e-05, 5.61e-05, 5.61e-05, 3817.67223087], [1517032320000, 5.631e-05, 5.631e-05, 5.631e-05, 5.631e-05, 1569.13614567], [1517032380000, 5.631e-05, 5.631e-05, 5.631e-05, 5.631e-05, 8415.34908794], [1517032440000, 5.63e-05, 5.631e-05, 5.63e-05, 5.631e-05, 2704.78865344], [1517032500000, 5.619e-05, 5.631e-05, 5.614e-05, 5.631e-05, 4395.14114948], [1517032560000, 5.631e-05, 5.631e-05, 5.615e-05, 5.63e-05, 1277.12257954], [1517032620000, 5.63e-05, 5.631e-05, 5.63e-05, 5.631e-05, 383.02864664], [1517032680000, 5.616e-05, 5.631e-05, 5.61e-05, 5.61e-05, 3947.70074985], [1517032740000, 5.631e-05, 5.631e-05, 5.611e-05, 5.611e-05, 3293.2002155], [1517032800000, 5.612e-05, 5.631e-05, 5.611e-05, 5.63e-05, 789.20821597], [1517032860000, 5.63e-05, 5.63e-05, 5.611e-05, 5.613e-05, 6147.74352949], [1517032920000, 5.613e-05, 5.613e-05, 5.607e-05, 5.607e-05, 11379.61467311], [1517032980000, 5.607e-05, 5.613e-05, 5.606e-05, 5.606e-05, 30159.58541162], [1517033040000, 5.606e-05, 5.606e-05, 5.603e-05, 5.603e-05, 17370.59767397], [1517033100000, 5.607e-05, 5.607e-05, 5.607e-05, 5.607e-05, 133.93103503], [1517033160000, 5.607e-05, 5.625e-05, 5.607e-05, 5.608e-05, 10618.50963609], [1517033220000, 5.607e-05, 5.622e-05, 5.603e-05, 5.603e-05, 12313.05703065], [1517033280000, 5.609e-05, 5.609e-05, 5.602e-05, 5.607e-05, 1165.0627218], [1517033340000, 5.607e-05, 5.625e-05, 5.602e-05, 5.603e-05, 4878.20152219], [1517033400000, 5.621e-05, 5.622e-05, 5.603e-05, 5.603e-05, 1366.34965726], [1517033460000, 5.604e-05, 5.624e-05, 5.602e-05, 5.624e-05, 11940.95649037], [1517033520000, 5.62e-05, 5.62e-05, 5.6e-05, 5.614e-05, 14564.44640716], [1517033580000, 5.614e-05, 5.618e-05, 5.614e-05, 5.618e-05, 9581.64570886], [1517033640000, 5.618e-05, 5.618e-05, 5.605e-05, 5.605e-05, 48.48592081], [1517033700000, 5.605e-05, 5.605e-05, 5.601e-05, 5.601e-05, 12705.64419567], [1517033760000, 5.601e-05, 5.602e-05, 5.6e-05, 5.6e-05, 17986.14235813], [1517033820000, 5.6e-05, 5.6e-05, 5.596e-05, 5.596e-05, 17261.31747898], [1517033880000, 5.599e-05, 5.599e-05, 5.595e-05, 5.598e-05, 21412.04669973], [1517033940000, 5.595e-05, 5.598e-05, 5.589e-05, 5.59e-05, 9426.43043907], [1517034000000, 5.59e-05, 5.602e-05, 5.59e-05, 5.602e-05, 37492.33712305], [1517034060000, 5.6e-05, 5.609e-05, 5.6e-05, 5.609e-05, 6690.12023502], [1517034120000, 5.609e-05, 5.62e-05, 5.602e-05, 5.603e-05, 102455.61922067], [1517034180000, 5.609e-05, 5.609e-05, 5.602e-05, 5.603e-05, 19074.59707248], [1517034240000, 5.618e-05, 5.618e-05, 5.604e-05, 5.604e-05, 2896.46302419], [1517034300000, 5.604e-05, 5.604e-05, 5.603e-05, 5.604e-05, 1172.7090846], [1517034360000, 5.605e-05, 5.619e-05, 5.605e-05, 5.619e-05, 3458.50535965], [1517034420000, 5.617e-05, 5.618e-05, 5.617e-05, 5.618e-05, 773.74760916], [1517034480000, 5.617e-05, 5.618e-05, 5.603e-05, 5.609e-05, 13538.33697248], [1517034540000, 5.604e-05, 5.608e-05, 5.59e-05, 5.602e-05, 3949.66158725], [1517034600000, 5.602e-05, 5.602e-05, 5.59e-05, 5.59e-05, 1365.94636402], [1517034660000, 5.59e-05, 5.59e-05, 5.589e-05, 5.59e-05, 4015.43622897], [1517034720000, 5.59e-05, 5.595e-05, 5.581e-05, 5.581e-05, 42504.78823341], [1517034780000, 5.592e-05, 5.595e-05, 5.582e-05, 5.582e-05, 7410.33573874], [1517034840000, 5.582e-05, 5.6e-05, 5.581e-05, 5.6e-05, 4382.28687161], [1517034900000, 5.6e-05, 5.609e-05, 5.6e-05, 5.609e-05, 1345.62121507], [1517034960000, 5.609e-05, 5.609e-05, 5.564e-05, 5.572e-05, 111396.66916444], [1517035020000, 5.572e-05, 5.599e-05, 5.564e-05, 5.564e-05, 25560.85287954], [1517035080000, 5.597e-05, 5.599e-05, 5.596e-05, 5.599e-05, 16669.31563419], [1517035140000, 5.597e-05, 5.599e-05, 5.579e-05, 5.58e-05, 30501.15742511], [1517035200000, 5.599e-05, 5.599e-05, 5.599e-05, 5.599e-05, 13595.96775679], [1517035260000, 5.599e-05, 5.599e-05, 5.599e-05, 5.599e-05, 35.32302355], [1517035320000, 5.6e-05, 5.611e-05, 5.6e-05, 5.611e-05, 1710.97241684], [1517035380000, 5.611e-05, 5.612e-05, 5.611e-05, 5.611e-05, 9393.31463665], [1517035440000, 5.611e-05, 5.612e-05, 5.6e-05, 5.611e-05, 7650.26038669], [1517035500000, 5.6e-05, 5.611e-05, 5.6e-05, 5.6e-05, 2801.36163978], [1517035560000, 5.6e-05, 5.611e-05, 5.6e-05, 5.61e-05, 3125.83572889], [1517035620000, 5.61e-05, 5.61e-05, 5.6e-05, 5.6e-05, 709.69593765], [1517035680000, 5.6e-05, 5.605e-05, 5.6e-05, 5.6e-05, 9756.68677935], [1517035740000, 5.605e-05, 5.612e-05, 5.6e-05, 5.609e-05, 20562.30590576], [1517035800000, 5.6e-05, 5.612e-05, 5.6e-05, 5.611e-05, 7849.95976336], [1517035860000, 5.611e-05, 5.612e-05, 5.611e-05, 5.611e-05, 316.05732077], [1517035920000, 5.611e-05, 5.611e-05, 5.603e-05, 5.611e-05, 5666.91677948], [1517035980000, 5.612e-05, 5.612e-05, 5.612e-05, 5.612e-05, 12227.04559543], [1517036040000, 5.613e-05, 5.617e-05, 5.612e-05, 5.617e-05, 4429.07513621], [1517036100000, 5.617e-05, 5.618e-05, 5.613e-05, 5.618e-05, 3364.3289578], [1517036160000, 5.618e-05, 5.618e-05, 5.617e-05, 5.618e-05, 6545.52822433], [1517036220000, 5.617e-05, 5.624e-05, 5.617e-05, 5.624e-05, 28274.53126537], [1517036280000, 5.624e-05, 5.624e-05, 5.624e-05, 5.624e-05, 3288.48914805], [1517036340000, 5.624e-05, 5.633e-05, 5.624e-05, 5.625e-05, 19366.03038112], [1517036400000, 5.636e-05, 5.641e-05, 5.63e-05, 5.63e-05, 28334.26894881], [1517036460000, 5.639e-05, 5.639e-05, 5.625e-05, 5.625e-05, 46639.50280268], [1517036520000, 5.625e-05, 5.697e-05, 5.6e-05, 5.635e-05, 202309.99147276], [1517036580000, 5.63e-05, 5.654e-05, 5.601e-05, 5.653e-05, 15285.91355532], [1517036640000, 5.62e-05, 5.639e-05, 5.615e-05, 5.63e-05, 5440.40692087], [1517036700000, 5.623e-05, 5.625e-05, 5.616e-05, 5.622e-05, 35815.91606245], [1517036760000, 5.622e-05, 5.63e-05, 5.618e-05, 5.618e-05, 9155.92374297], [1517036820000, 5.618e-05, 5.63e-05, 5.617e-05, 5.628e-05, 7340.57125939], [1517036880000, 5.628e-05, 5.652e-05, 5.62e-05, 5.652e-05, 76913.1006234], [1517036940000, 5.62e-05, 5.637e-05, 5.62e-05, 5.637e-05, 12581.72555029], [1517037000000, 5.637e-05, 5.647e-05, 5.618e-05, 5.647e-05, 5464.96025907], [1517037060000, 5.622e-05, 5.622e-05, 5.622e-05, 5.622e-05, 9262.13017586], [1517037120000, 5.624e-05, 5.647e-05, 5.624e-05, 5.624e-05, 10011.62023046], [1517037180000, 5.625e-05, 5.648e-05, 5.624e-05, 5.641e-05, 16156.6075499], [1517037240000, 5.641e-05, 5.644e-05, 5.631e-05, 5.644e-05, 11322.65123237], [1517037300000, 5.644e-05, 5.649e-05, 5.644e-05, 5.649e-05, 19917.0585637], [1517037360000, 5.649e-05, 5.649e-05, 5.631e-05, 5.645e-05, 29008.42814064], [1517037420000, 5.641e-05, 5.641e-05, 5.63e-05, 5.637e-05, 13109.65646667], [1517037480000, 5.637e-05, 5.637e-05, 5.63e-05, 5.631e-05, 9346.6294152], [1517037540000, 5.631e-05, 5.631e-05, 5.624e-05, 5.624e-05, 12208.35501333], [1517037600000, 5.624e-05, 5.624e-05, 5.618e-05, 5.623e-05, 15855.98920777], [1517037660000, 5.623e-05, 5.624e-05, 5.62e-05, 5.623e-05, 55970.39932101], [1517037720000, 5.624e-05, 5.637e-05, 5.623e-05, 5.637e-05, 9146.42483947], [1517037780000, 5.622e-05, 5.637e-05, 5.622e-05, 5.624e-05, 9376.79731485], [1517037840000, 5.624e-05, 5.644e-05, 5.624e-05, 5.624e-05, 12712.10682949], [1517037900000, 5.636e-05, 5.637e-05, 5.636e-05, 5.636e-05, 13892.92224841], [1517037960000, 5.636e-05, 5.636e-05, 5.624e-05, 5.63e-05, 7706.34076308], [1517038020000, 5.632e-05, 5.636e-05, 5.632e-05, 5.635e-05, 5483.01083006], [1517038080000, 5.635e-05, 5.635e-05, 5.618e-05, 5.633e-05, 27987.8829311], [1517038140000, 5.635e-05, 5.635e-05, 5.627e-05, 5.627e-05, 844.80615459], [1517038200000, 5.627e-05, 5.635e-05, 5.626e-05, 5.635e-05, 22980.34112884], [1517038260000, 5.635e-05, 5.637e-05, 5.627e-05, 5.636e-05, 21575.27797997], [1517038320000, 5.636e-05, 5.636e-05, 5.625e-05, 5.626e-05, 34188.29151162], [1517038380000, 5.635e-05, 5.635e-05, 5.625e-05, 5.63e-05, 58787.09802983], [1517038440000, 5.63e-05, 5.632e-05, 5.619e-05, 5.619e-05, 54124.93350636], [1517038500000, 5.629e-05, 5.634e-05, 5.62e-05, 5.634e-05, 7523.59383381], [1517038560000, 5.634e-05, 5.635e-05, 5.634e-05, 5.635e-05, 13715.51310117], [1517038620000, 5.635e-05, 5.643e-05, 5.634e-05, 5.643e-05, 18487.31764193], [1517038680000, 5.643e-05, 5.643e-05, 5.636e-05, 5.636e-05, 2668.31902795], [1517038740000, 5.628e-05, 5.635e-05, 5.628e-05, 5.634e-05, 16165.54407166], [1517038800000, 5.635e-05, 5.635e-05, 5.632e-05, 5.635e-05, 23881.22090805], [1517038860000, 5.634e-05, 5.635e-05, 5.634e-05, 5.635e-05, 13558.26830599], [1517038920000, 5.634e-05, 5.635e-05, 5.628e-05, 5.633e-05, 37256.54873148], [1517038980000, 5.631e-05, 5.633e-05, 5.631e-05, 5.633e-05, 12203.57130208], [1517039040000, 5.631e-05, 5.632e-05, 5.625e-05, 5.63e-05, 14045.486136], [1517039100000, 5.626e-05, 5.63e-05, 5.625e-05, 5.63e-05, 19108.71253033], [1517039160000, 5.63e-05, 5.635e-05, 5.623e-05, 5.633e-05, 15042.34734296], [1517039220000, 5.633e-05, 5.633e-05, 5.625e-05, 5.633e-05, 13012.46137568], [1517039280000, 5.634e-05, 5.635e-05, 5.633e-05, 5.635e-05, 12399.88107169], [1517039340000, 5.634e-05, 5.636e-05, 5.634e-05, 5.636e-05, 60547.76262285], [1517039400000, 5.637e-05, 5.637e-05, 5.623e-05, 5.623e-05, 6495.10614593], [1517039460000, 5.623e-05, 5.632e-05, 5.62e-05, 5.631e-05, 22967.45195381], [1517039520000, 5.631e-05, 5.631e-05, 5.631e-05, 5.631e-05, 5530.18124805], [1517039580000, 5.63e-05, 5.63e-05, 5.625e-05, 5.625e-05, 3288.65504586], [1517039640000, 5.625e-05, 5.625e-05, 5.621e-05, 5.622e-05, 17433.37096898], [1517039700000, 5.623e-05, 5.623e-05, 5.623e-05, 5.623e-05, 12542.74513675], [1517039760000, 5.623e-05, 5.626e-05, 5.623e-05, 5.623e-05, 5781.96946507], [1517039820000, 5.625e-05, 5.625e-05, 5.625e-05, 5.625e-05, 1475.84561315], [1517039880000, 5.625e-05, 5.626e-05, 5.625e-05, 5.626e-05, 3274.57655796], [1517039940000, 5.625e-05, 5.625e-05, 5.623e-05, 5.625e-05, 34222.8829806], [1517040000000, 5.625e-05, 5.625e-05, 5.623e-05, 5.625e-05, 1833.94083985], [1517040060000, 5.625e-05, 5.625e-05, 5.625e-05, 5.625e-05, 338.99713867], [1517040120000, 5.625e-05, 5.626e-05, 5.623e-05, 5.624e-05, 26136.61248519], [1517040180000, 5.624e-05, 5.63e-05, 5.624e-05, 5.624e-05, 5913.51267368], [1517040240000, 5.63e-05, 5.637e-05, 5.63e-05, 5.637e-05, 9490.68963934], [1517040300000, 5.637e-05, 5.637e-05, 5.624e-05, 5.637e-05, 8090.80172823], [1517040360000, 5.637e-05, 5.638e-05, 5.633e-05, 5.633e-05, 5504.41683283], [1517040420000, 5.627e-05, 5.631e-05, 5.624e-05, 5.624e-05, 4684.57394384], [1517040480000, 5.623e-05, 5.637e-05, 5.622e-05, 5.637e-05, 11415.44961294], [1517040540000, 5.622e-05, 5.63e-05, 5.62e-05, 5.62e-05, 6944.68654864], [1517040600000, 5.62e-05, 5.635e-05, 5.619e-05, 5.619e-05, 21953.75170437], [1517040660000, 5.635e-05, 5.639e-05, 5.61e-05, 5.61e-05, 53865.92825583], [1517040720000, 5.632e-05, 5.635e-05, 5.611e-05, 5.611e-05, 534.07462462], [1517040780000, 5.611e-05, 5.611e-05, 5.611e-05, 5.611e-05, 1167.48400228], [1517040840000, 5.611e-05, 5.614e-05, 5.611e-05, 5.611e-05, 16065.09766839], [1517040900000, 5.611e-05, 5.611e-05, 5.607e-05, 5.611e-05, 17827.67092686], [1517040960000, 5.611e-05, 5.611e-05, 5.599e-05, 5.6e-05, 24984.16928401], [1517041020000, 5.61e-05, 5.611e-05, 5.6e-05, 5.611e-05, 7665.76257057], [1517041080000, 5.611e-05, 5.611e-05, 5.603e-05, 5.603e-05, 1203.15587066], [1517041140000, 5.611e-05, 5.63e-05, 5.611e-05, 5.611e-05, 14024.22096162], [1517041200000, 5.625e-05, 5.628e-05, 5.625e-05, 5.626e-05, 2643.37276023], [1517041260000, 5.626e-05, 5.626e-05, 5.612e-05, 5.612e-05, 3084.91349519], [1517041320000, 5.612e-05, 5.623e-05, 5.612e-05, 5.614e-05, 15506.617394], [1517041380000, 5.614e-05, 5.63e-05, 5.614e-05, 5.63e-05, 43738.59254085], [1517041440000, 5.63e-05, 5.631e-05, 5.63e-05, 5.63e-05, 11959.9542861], [1517041500000, 5.631e-05, 5.639e-05, 5.631e-05, 5.639e-05, 54484.01256809], [1517041560000, 5.63e-05, 5.639e-05, 5.63e-05, 5.639e-05, 17390.84676649], [1517041620000, 5.629e-05, 5.639e-05, 5.614e-05, 5.639e-05, 30404.977923], [1517041680000, 5.638e-05, 5.639e-05, 5.615e-05, 5.615e-05, 42266.73717613], [1517041740000, 5.614e-05, 5.615e-05, 5.614e-05, 5.614e-05, 2389.42326575], [1517041800000, 5.614e-05, 5.618e-05, 5.614e-05, 5.618e-05, 8591.69953962], [1517041860000, 5.615e-05, 5.615e-05, 5.614e-05, 5.614e-05, 8749.00368338], [1517041920000, 5.618e-05, 5.618e-05, 5.614e-05, 5.614e-05, 18152.32297142], [1517041980000, 5.614e-05, 5.618e-05, 5.614e-05, 5.618e-05, 41341.7870722], [1517042040000, 5.625e-05, 5.625e-05, 5.614e-05, 5.624e-05, 7601.22238456], [1517042100000, 5.624e-05, 5.639e-05, 5.624e-05, 5.639e-05, 7529.06117091], [1517042160000, 5.624e-05, 5.64e-05, 5.619e-05, 5.64e-05, 19746.12270509], [1517042220000, 5.625e-05, 5.637e-05, 5.625e-05, 5.625e-05, 1316.22584811], [1517042280000, 5.625e-05, 5.637e-05, 5.625e-05, 5.63e-05, 5037.83691146], [1517042340000, 5.625e-05, 5.63e-05, 5.625e-05, 5.625e-05, 5068.5417864], [1517042400000, 5.625e-05, 5.626e-05, 5.611e-05, 5.611e-05, 74268.74343274], [1517042460000, 5.622e-05, 5.622e-05, 5.611e-05, 5.611e-05, 14135.0899498], [1517042520000, 5.621e-05, 5.621e-05, 5.615e-05, 5.615e-05, 677.80603424], [1517042580000, 5.616e-05, 5.624e-05, 5.615e-05, 5.624e-05, 11173.20894642], [1517042640000, 5.616e-05, 5.625e-05, 5.616e-05, 5.624e-05, 7584.30659192], [1517042700000, 5.637e-05, 5.637e-05, 5.624e-05, 5.634e-05, 3858.69858946], [1517042760000, 5.632e-05, 5.632e-05, 5.616e-05, 5.616e-05, 6314.5370082], [1517042820000, 5.616e-05, 5.619e-05, 5.6e-05, 5.615e-05, 33761.95826388], [1517042880000, 5.599e-05, 5.616e-05, 5.599e-05, 5.616e-05, 22300.62883077], [1517042940000, 5.614e-05, 5.614e-05, 5.602e-05, 5.602e-05, 7090.63213716], [1517043000000, 5.616e-05, 5.616e-05, 5.614e-05, 5.614e-05, 1607.2459405], [1517043060000, 5.603e-05, 5.603e-05, 5.599e-05, 5.599e-05, 3930.33709397], [1517043120000, 5.6e-05, 5.6e-05, 5.599e-05, 5.599e-05, 5646.45302142], [1517043180000, 5.599e-05, 5.6e-05, 5.599e-05, 5.6e-05, 3585.43886869], [1517043240000, 5.603e-05, 5.603e-05, 5.6e-05, 5.6e-05, 2707.96579811], [1517043300000, 5.6e-05, 5.6e-05, 5.585e-05, 5.595e-05, 16775.49599383], [1517043360000, 5.586e-05, 5.596e-05, 5.585e-05, 5.595e-05, 10749.00363631], [1517043420000, 5.595e-05, 5.595e-05, 5.582e-05, 5.582e-05, 5397.23980316], [1517043480000, 5.586e-05, 5.595e-05, 5.586e-05, 5.595e-05, 14638.85285226], [1517043540000, 5.595e-05, 5.616e-05, 5.595e-05, 5.616e-05, 9146.20497365], [1517043600000, 5.616e-05, 5.627e-05, 5.616e-05, 5.616e-05, 1122.93968752], [1517043660000, 5.627e-05, 5.627e-05, 5.616e-05, 5.616e-05, 120.68625019], [1517043720000, 5.616e-05, 5.616e-05, 5.6e-05, 5.6e-05, 4657.2059986], [1517043780000, 5.627e-05, 5.627e-05, 5.6e-05, 5.6e-05, 802.51705218], [1517043840000, 5.627e-05, 5.627e-05, 5.601e-05, 5.601e-05, 186.4078869], [1517043900000, 5.602e-05, 5.616e-05, 5.602e-05, 5.608e-05, 2183.20909841], [1517043960000, 5.601e-05, 5.608e-05, 5.601e-05, 5.608e-05, 1431.62351879], [1517044020000, 5.608e-05, 5.627e-05, 5.608e-05, 5.627e-05, 6676.37883178], [1517044080000, 5.627e-05, 5.627e-05, 5.627e-05, 5.627e-05, 59.80038352], [1517044140000, 5.61e-05, 5.61e-05, 5.6e-05, 5.608e-05, 2803.60551693], [1517044200000, 5.608e-05, 5.627e-05, 5.608e-05, 5.625e-05, 5727.50709369], [1517044260000, 5.617e-05, 5.617e-05, 5.617e-05, 5.617e-05, 2111.16279256], [1517044320000, 5.617e-05, 5.617e-05, 5.616e-05, 5.616e-05, 7579.28038858], [1517044380000, 5.613e-05, 5.613e-05, 5.613e-05, 5.613e-05, 89.33357155], [1517044440000, 5.613e-05, 5.613e-05, 5.608e-05, 5.608e-05, 3198.94871285], [1517044500000, 5.608e-05, 5.608e-05, 5.608e-05, 5.608e-05, 596.7307748], [1517044560000, 5.608e-05, 5.609e-05, 5.6e-05, 5.6e-05, 16693.73709488], [1517044620000, 5.602e-05, 5.607e-05, 5.6e-05, 5.602e-05, 9131.03802768], [1517044680000, 5.602e-05, 5.602e-05, 5.602e-05, 5.602e-05, 17024.2315051], [1517044740000, 5.606e-05, 5.61e-05, 5.606e-05, 5.61e-05, 1719.66654436], [1517044800000, 5.61e-05, 5.61e-05, 5.61e-05, 5.61e-05, 2164.35125833], [1517044860000, 5.616e-05, 5.616e-05, 5.616e-05, 5.616e-05, 182.48339657], [1517044920000, 5.63e-05, 5.633e-05, 5.61e-05, 5.631e-05, 11240.82308017], [1517044980000, 5.629e-05, 5.629e-05, 5.624e-05, 5.624e-05, 1389.69256739], [1517045040000, 5.623e-05, 5.623e-05, 5.608e-05, 5.608e-05, 34241.6214419], [1517045100000, 5.62e-05, 5.62e-05, 5.608e-05, 5.608e-05, 4184.00585314], [1517045160000, 5.609e-05, 5.609e-05, 5.6e-05, 5.6e-05, 8677.64834918], [1517045220000, 5.6e-05, 5.608e-05, 5.6e-05, 5.608e-05, 198.88888889], [1517045280000, 5.598e-05, 5.6e-05, 5.598e-05, 5.6e-05, 18547.72490442], [1517045340000, 5.6e-05, 5.6e-05, 5.6e-05, 5.6e-05, 215.13441898], [1517045400000, 5.598e-05, 5.6e-05, 5.597e-05, 5.6e-05, 2240.13331654], [1517045460000, 5.6e-05, 5.6e-05, 5.598e-05, 5.6e-05, 3789.46603208], [1517045520000, 5.6e-05, 5.6e-05, 5.598e-05, 5.599e-05, 2481.09291789], [1517045580000, 5.599e-05, 5.599e-05, 5.598e-05, 5.598e-05, 2135.19170055], [1517045640000, 5.598e-05, 5.599e-05, 5.596e-05, 5.596e-05, 4251.32863795], [1517045700000, 5.596e-05, 5.596e-05, 5.595e-05, 5.595e-05, 4095.25356869], [1517045760000, 5.595e-05, 5.595e-05, 5.595e-05, 5.595e-05, 60.41228154], [1517045820000, 5.587e-05, 5.595e-05, 5.586e-05, 5.586e-05, 6145.82088419], [1517045880000, 5.586e-05, 5.586e-05, 5.585e-05, 5.586e-05, 1293.92995638], [1517045940000, 5.586e-05, 5.586e-05, 5.585e-05, 5.586e-05, 6595.12896433], [1517046000000, 5.585e-05, 5.586e-05, 5.585e-05, 5.585e-05, 6749.03736247], [1517046060000, 5.585e-05, 5.585e-05, 5.582e-05, 5.582e-05, 2547.93762619], [1517046120000, 5.582e-05, 5.582e-05, 5.58e-05, 5.58e-05, 12752.81978927], [1517046180000, 5.58e-05, 5.58e-05, 5.579e-05, 5.579e-05, 6971.41863674], [1517046240000, 5.577e-05, 5.579e-05, 5.569e-05, 5.572e-05, 25708.56607923], [1517046300000, 5.572e-05, 5.579e-05, 5.569e-05, 5.579e-05, 22551.08748484], [1517046360000, 5.579e-05, 5.579e-05, 5.574e-05, 5.574e-05, 5488.89610702], [1517046420000, 5.574e-05, 5.579e-05, 5.572e-05, 5.573e-05, 8929.34592156], [1517046480000, 5.573e-05, 5.579e-05, 5.572e-05, 5.574e-05, 2640.23497329], [1517046540000, 5.574e-05, 5.579e-05, 5.574e-05, 5.576e-05, 7179.38594384], [1517046600000, 5.574e-05, 5.576e-05, 5.574e-05, 5.575e-05, 3278.59826913], [1517046660000, 5.574e-05, 5.575e-05, 5.562e-05, 5.574e-05, 55359.7967977], [1517046720000, 5.574e-05, 5.575e-05, 5.57e-05, 5.57e-05, 14929.9949187], [1517046780000, 5.575e-05, 5.575e-05, 5.57e-05, 5.575e-05, 17773.15209757], [1517046840000, 5.575e-05, 5.575e-05, 5.571e-05, 5.571e-05, 6086.19946361], [1517046900000, 5.574e-05, 5.575e-05, 5.57e-05, 5.57e-05, 9421.20374609], [1517046960000, 5.57e-05, 5.571e-05, 5.563e-05, 5.571e-05, 12629.32193712], [1517047020000, 5.571e-05, 5.571e-05, 5.564e-05, 5.564e-05, 1112.49004863], [1517047080000, 5.563e-05, 5.563e-05, 5.561e-05, 5.563e-05, 17653.09671057], [1517047140000, 5.563e-05, 5.563e-05, 5.561e-05, 5.563e-05, 45170.7656861], [1517047200000, 5.571e-05, 5.575e-05, 5.563e-05, 5.575e-05, 3368.30249649], [1517047260000, 5.565e-05, 5.575e-05, 5.565e-05, 5.574e-05, 5521.37247077], [1517047320000, 5.569e-05, 5.575e-05, 5.569e-05, 5.575e-05, 2599.29025296], [1517047380000, 5.57e-05, 5.575e-05, 5.57e-05, 5.575e-05, 2408.84100083], [1517047440000, 5.575e-05, 5.579e-05, 5.573e-05, 5.578e-05, 34046.68761812], [1517047500000, 5.578e-05, 5.579e-05, 5.575e-05, 5.578e-05, 22570.2635583], [1517047560000, 5.578e-05, 5.578e-05, 5.575e-05, 5.578e-05, 8189.85683741], [1517047620000, 5.577e-05, 5.579e-05, 5.575e-05, 5.579e-05, 23351.74492974], [1517047680000, 5.576e-05, 5.581e-05, 5.575e-05, 5.581e-05, 15531.91445705], [1517047740000, 5.58e-05, 5.58e-05, 5.576e-05, 5.58e-05, 25004.19820945], [1517047800000, 5.58e-05, 5.58e-05, 5.575e-05, 5.579e-05, 7367.52848559], [1517047860000, 5.577e-05, 5.582e-05, 5.575e-05, 5.582e-05, 27586.79882882], [1517047920000, 5.582e-05, 5.582e-05, 5.575e-05, 5.58e-05, 22369.43027662], [1517047980000, 5.586e-05, 5.586e-05, 5.563e-05, 5.57e-05, 10511.64142486], [1517048040000, 5.57e-05, 5.584e-05, 5.564e-05, 5.564e-05, 2626.55972021], [1517048100000, 5.565e-05, 5.584e-05, 5.564e-05, 5.584e-05, 1309.831204], [1517048160000, 5.565e-05, 5.584e-05, 5.564e-05, 5.584e-05, 1512.69436957], [1517048220000, 5.584e-05, 5.584e-05, 5.564e-05, 5.564e-05, 397.56083822], [1517048280000, 5.584e-05, 5.584e-05, 5.565e-05, 5.566e-05, 1824.05223478], [1517048340000, 5.58e-05, 5.58e-05, 5.566e-05, 5.566e-05, 10602.92232787], [1517048400000, 5.577e-05, 5.577e-05, 5.563e-05, 5.568e-05, 25799.75387401], [1517048460000, 5.576e-05, 5.577e-05, 5.576e-05, 5.576e-05, 25600.7788073], [1517048520000, 5.569e-05, 5.577e-05, 5.568e-05, 5.577e-05, 13028.00679238], [1517048580000, 5.577e-05, 5.577e-05, 5.573e-05, 5.577e-05, 2474.47732645], [1517048640000, 5.577e-05, 5.577e-05, 5.572e-05, 5.576e-05, 13096.16098309], [1517048700000, 5.577e-05, 5.577e-05, 5.576e-05, 5.576e-05, 16226.70463429], [1517048760000, 5.576e-05, 5.576e-05, 5.567e-05, 5.57e-05, 5228.2219125], [1517048820000, 5.57e-05, 5.57e-05, 5.567e-05, 5.57e-05, 10242.86071584], [1517048880000, 5.576e-05, 5.576e-05, 5.566e-05, 5.575e-05, 2860.2315148], [1517048940000, 5.574e-05, 5.576e-05, 5.566e-05, 5.576e-05, 10301.8835883], [1517049000000, 5.576e-05, 5.576e-05, 5.568e-05, 5.568e-05, 4158.83990633], [1517049060000, 5.569e-05, 5.575e-05, 5.569e-05, 5.57e-05, 1264.58742086], [1517049120000, 5.575e-05, 5.576e-05, 5.573e-05, 5.576e-05, 26827.58634653], [1517049180000, 5.58e-05, 5.58e-05, 5.575e-05, 5.575e-05, 13037.39179563], [1517049240000, 5.575e-05, 5.6e-05, 5.568e-05, 5.568e-05, 17208.31892141], [1517049300000, 5.568e-05, 5.598e-05, 5.568e-05, 5.598e-05, 2194.80852174], [1517049360000, 5.59e-05, 5.59e-05, 5.568e-05, 5.568e-05, 7441.0809925], [1517049420000, 5.57e-05, 5.577e-05, 5.57e-05, 5.571e-05, 10228.12596813], [1517049480000, 5.571e-05, 5.575e-05, 5.571e-05, 5.572e-05, 10671.28111006], [1517049540000, 5.574e-05, 5.575e-05, 5.572e-05, 5.575e-05, 1837.94472984], [1517049600000, 5.575e-05, 5.575e-05, 5.572e-05, 5.575e-05, 14436.20831565], [1517049660000, 5.575e-05, 5.575e-05, 5.572e-05, 5.572e-05, 407.35344946], [1517049720000, 5.575e-05, 5.599e-05, 5.574e-05, 5.599e-05, 3262.08807598], [1517049780000, 5.574e-05, 5.595e-05, 5.574e-05, 5.595e-05, 10939.918513], [1517049840000, 5.59e-05, 5.59e-05, 5.574e-05, 5.574e-05, 18961.45446403], [1517049900000, 5.574e-05, 5.574e-05, 5.574e-05, 5.574e-05, 14880.48831899], [1517049960000, 5.574e-05, 5.575e-05, 5.574e-05, 5.574e-05, 4630.87450785], [1517050020000, 5.575e-05, 5.575e-05, 5.575e-05, 5.575e-05, 7685.12927769], [1517050080000, 5.575e-05, 5.595e-05, 5.575e-05, 5.595e-05, 10289.37174154], [1517050140000, 5.575e-05, 5.575e-05, 5.575e-05, 5.575e-05, 9205.70791144], [1517050200000, 5.575e-05, 5.595e-05, 5.575e-05, 5.575e-05, 10775.81786818], [1517050260000, 5.576e-05, 5.577e-05, 5.575e-05, 5.577e-05, 544.28392321], [1517050320000, 5.577e-05, 5.595e-05, 5.577e-05, 5.577e-05, 1825.21591913], [1517050380000, 5.594e-05, 5.594e-05, 5.577e-05, 5.582e-05, 3825.81929853], [1517050440000, 5.577e-05, 5.578e-05, 5.577e-05, 5.577e-05, 54.84893601], [1517050500000, 5.577e-05, 5.593e-05, 5.577e-05, 5.577e-05, 7585.1513854], [1517050560000, 5.577e-05, 5.577e-05, 5.576e-05, 5.577e-05, 7045.64191322], [1517050620000, 5.577e-05, 5.594e-05, 5.576e-05, 5.576e-05, 10687.49216253], [1517050680000, 5.585e-05, 5.585e-05, 5.576e-05, 5.576e-05, 1015.44631594], [1517050740000, 5.584e-05, 5.584e-05, 5.576e-05, 5.576e-05, 3917.23944955], [1517050800000, 5.576e-05, 5.578e-05, 5.576e-05, 5.577e-05, 6280.45962692], [1517050860000, 5.577e-05, 5.584e-05, 5.577e-05, 5.58e-05, 4448.62668121], [1517050920000, 5.58e-05, 5.58e-05, 5.577e-05, 5.577e-05, 14143.15561995], [1517050980000, 5.577e-05, 5.578e-05, 5.576e-05, 5.576e-05, 10506.74695037], [1517051040000, 5.576e-05, 5.58e-05, 5.569e-05, 5.569e-05, 34117.80626876], [1517051100000, 5.568e-05, 5.575e-05, 5.568e-05, 5.568e-05, 3303.54733409], [1517051160000, 5.567e-05, 5.575e-05, 5.565e-05, 5.565e-05, 11642.22631165], [1517051220000, 5.565e-05, 5.566e-05, 5.564e-05, 5.564e-05, 9127.15154546], [1517051280000, 5.565e-05, 5.565e-05, 5.564e-05, 5.565e-05, 2172.99856175], [1517051340000, 5.565e-05, 5.566e-05, 5.565e-05, 5.566e-05, 1547.44130609], [1517051400000, 5.565e-05, 5.575e-05, 5.565e-05, 5.565e-05, 11090.21246524], [1517051460000, 5.565e-05, 5.584e-05, 5.565e-05, 5.584e-05, 15426.87273856], [1517051520000, 5.575e-05, 5.593e-05, 5.575e-05, 5.58e-05, 113.88342617], [1517051580000, 5.58e-05, 5.592e-05, 5.564e-05, 5.592e-05, 32675.3973858], [1517051640000, 5.592e-05, 5.592e-05, 5.563e-05, 5.589e-05, 943.01246994], [1517051700000, 5.589e-05, 5.589e-05, 5.556e-05, 5.556e-05, 68434.68907063], [1517051760000, 5.588e-05, 5.589e-05, 5.563e-05, 5.57e-05, 11907.21777645], [1517051820000, 5.57e-05, 5.584e-05, 5.57e-05, 5.584e-05, 1793.99460149], [1517051880000, 5.583e-05, 5.589e-05, 5.583e-05, 5.589e-05, 2786.27875782], [1517051940000, 5.587e-05, 5.589e-05, 5.587e-05, 5.588e-05, 4873.30976202], [1517052000000, 5.587e-05, 5.589e-05, 5.561e-05, 5.589e-05, 5638.11269908], [1517052060000, 5.588e-05, 5.595e-05, 5.576e-05, 5.595e-05, 47425.22588141], [1517052120000, 5.598e-05, 5.61e-05, 5.578e-05, 5.609e-05, 10465.77316265], [1517052180000, 5.608e-05, 5.61e-05, 5.608e-05, 5.608e-05, 21313.43400374], [1517052240000, 5.609e-05, 5.609e-05, 5.608e-05, 5.608e-05, 22367.99263083], [1517052300000, 5.608e-05, 5.609e-05, 5.583e-05, 5.584e-05, 14038.98995104], [1517052360000, 5.608e-05, 5.609e-05, 5.585e-05, 5.608e-05, 14012.30555047], [1517052420000, 5.608e-05, 5.608e-05, 5.583e-05, 5.585e-05, 1845.48801958], [1517052480000, 5.607e-05, 5.607e-05, 5.585e-05, 5.585e-05, 9514.03581394], [1517052540000, 5.586e-05, 5.606e-05, 5.586e-05, 5.606e-05, 5605.16951037], [1517052660000, 5.605e-05, 5.606e-05, 5.605e-05, 5.605e-05, 390.91652827], [1517052720000, 5.6e-05, 5.6e-05, 5.585e-05, 5.6e-05, 14447.90482264], [1517052780000, 5.586e-05, 5.586e-05, 5.585e-05, 5.585e-05, 35013.45196491], [1517052840000, 5.585e-05, 5.588e-05, 5.567e-05, 5.567e-05, 38598.46354964], [1517052900000, 5.567e-05, 5.6e-05, 5.567e-05, 5.6e-05, 10558.18920132], [1517052960000, 5.6e-05, 5.6e-05, 5.57e-05, 5.575e-05, 17104.57686343], [1517053020000, 5.575e-05, 5.606e-05, 5.575e-05, 5.606e-05, 4552.61486287], [1517053080000, 5.607e-05, 5.61e-05, 5.567e-05, 5.575e-05, 61414.61363834], [1517053140000, 5.604e-05, 5.605e-05, 5.574e-05, 5.603e-05, 4193.15842068], [1517053200000, 5.58e-05, 5.58e-05, 5.578e-05, 5.578e-05, 4530.5730769], [1517053260000, 5.579e-05, 5.579e-05, 5.578e-05, 5.578e-05, 20204.92935151], [1517053320000, 5.579e-05, 5.6e-05, 5.579e-05, 5.6e-05, 3388.07955984], [1517053380000, 5.581e-05, 5.6e-05, 5.564e-05, 5.579e-05, 52294.91072597], [1517053440000, 5.579e-05, 5.58e-05, 5.567e-05, 5.579e-05, 8115.92023678], [1517053500000, 5.579e-05, 5.579e-05, 5.571e-05, 5.575e-05, 22634.83940113], [1517053560000, 5.575e-05, 5.575e-05, 5.568e-05, 5.572e-05, 7325.58476364], [1517053620000, 5.572e-05, 5.575e-05, 5.572e-05, 5.575e-05, 970.42233073], [1517053680000, 5.574e-05, 5.575e-05, 5.573e-05, 5.575e-05, 3356.65530166], [1517053740000, 5.575e-05, 5.575e-05, 5.574e-05, 5.575e-05, 2562.29270761], [1517053800000, 5.575e-05, 5.575e-05, 5.574e-05, 5.574e-05, 27110.6311776], [1517053860000, 5.575e-05, 5.575e-05, 5.574e-05, 5.575e-05, 5308.34840662], [1517053920000, 5.575e-05, 5.575e-05, 5.569e-05, 5.569e-05, 14178.67298128], [1517053980000, 5.574e-05, 5.575e-05, 5.574e-05, 5.574e-05, 5419.92277166], [1517054040000, 5.574e-05, 5.575e-05, 5.574e-05, 5.574e-05, 3188.98564386], [1517054100000, 5.574e-05, 5.575e-05, 5.574e-05, 5.575e-05, 13163.35494314], [1517054160000, 5.575e-05, 5.575e-05, 5.569e-05, 5.574e-05, 10854.20965782], [1517054220000, 5.574e-05, 5.575e-05, 5.574e-05, 5.575e-05, 583.05226893], [1517054280000, 5.575e-05, 5.575e-05, 5.554e-05, 5.575e-05, 24779.41060477], [1517054340000, 5.574e-05, 5.574e-05, 5.573e-05, 5.573e-05, 5517.45567033], [1517054400000, 5.574e-05, 5.574e-05, 5.574e-05, 5.574e-05, 18691.77664118], [1517054460000, 5.573e-05, 5.574e-05, 5.573e-05, 5.574e-05, 26665.69496892], [1517054520000, 5.574e-05, 5.574e-05, 5.572e-05, 5.573e-05, 4646.84928891], [1517054580000, 5.573e-05, 5.573e-05, 5.562e-05, 5.57e-05, 3235.81633837], [1517054640000, 5.571e-05, 5.573e-05, 5.565e-05, 5.573e-05, 9959.91802601], [1517054700000, 5.573e-05, 5.573e-05, 5.57e-05, 5.572e-05, 4560.85869308], [1517054760000, 5.571e-05, 5.572e-05, 5.57e-05, 5.572e-05, 4984.43632507], [1517054820000, 5.572e-05, 5.572e-05, 5.571e-05, 5.571e-05, 180.46522428], [1517054880000, 5.571e-05, 5.574e-05, 5.571e-05, 5.572e-05, 14731.72607812], [1517054940000, 5.572e-05, 5.58e-05, 5.57e-05, 5.58e-05, 17924.12135739], [1517055000000, 5.583e-05, 5.6e-05, 5.583e-05, 5.6e-05, 856.63254771], [1517055060000, 5.6e-05, 5.6e-05, 5.599e-05, 5.599e-05, 7537.9690611], [1517055120000, 5.591e-05, 5.592e-05, 5.59e-05, 5.591e-05, 5317.30557618], [1517055180000, 5.591e-05, 5.591e-05, 5.59e-05, 5.59e-05, 409.50704794], [1517055240000, 5.59e-05, 5.598e-05, 5.59e-05, 5.598e-05, 949.68882789], [1517055300000, 5.598e-05, 5.599e-05, 5.59e-05, 5.599e-05, 10358.07366215], [1517055360000, 5.599e-05, 5.603e-05, 5.599e-05, 5.603e-05, 27287.97862525], [1517055420000, 5.603e-05, 5.606e-05, 5.603e-05, 5.606e-05, 15927.43338504], [1517055480000, 5.606e-05, 5.61e-05, 5.605e-05, 5.61e-05, 3348.43491094], [1517055540000, 5.61e-05, 5.61e-05, 5.607e-05, 5.609e-05, 1467.63787153], [1517055600000, 5.61e-05, 5.619e-05, 5.61e-05, 5.619e-05, 4930.80278807], [1517055660000, 5.622e-05, 5.63e-05, 5.622e-05, 5.63e-05, 15393.50644841], [1517055720000, 5.63e-05, 5.63e-05, 5.625e-05, 5.63e-05, 20496.04408771], [1517055780000, 5.627e-05, 5.63e-05, 5.625e-05, 5.63e-05, 23129.440672], [1517055840000, 5.626e-05, 5.628e-05, 5.625e-05, 5.627e-05, 9461.57398686], [1517055900000, 5.628e-05, 5.629e-05, 5.628e-05, 5.629e-05, 3157.84493941], [1517055960000, 5.629e-05, 5.63e-05, 5.629e-05, 5.629e-05, 1187.27977429], [1517056020000, 5.629e-05, 5.638e-05, 5.629e-05, 5.638e-05, 1923.67914051], [1517056080000, 5.639e-05, 5.653e-05, 5.639e-05, 5.65e-05, 49529.10083408], [1517056140000, 5.65e-05, 5.65e-05, 5.648e-05, 5.648e-05, 28813.42228014], [1517056200000, 5.65e-05, 5.65e-05, 5.648e-05, 5.648e-05, 32130.87603925], [1517056260000, 5.648e-05, 5.648e-05, 5.64e-05, 5.641e-05, 6798.60709548], [1517056320000, 5.64e-05, 5.641e-05, 5.627e-05, 5.641e-05, 13832.29909152], [1517056380000, 5.628e-05, 5.641e-05, 5.628e-05, 5.641e-05, 2551.2421257], [1517056440000, 5.641e-05, 5.643e-05, 5.634e-05, 5.643e-05, 5350.36645331], [1517056500000, 5.637e-05, 5.649e-05, 5.636e-05, 5.649e-05, 8730.55734388], [1517056560000, 5.649e-05, 5.653e-05, 5.642e-05, 5.649e-05, 5810.42452989], [1517056620000, 5.649e-05, 5.649e-05, 5.636e-05, 5.649e-05, 3218.62311663], [1517056680000, 5.647e-05, 5.647e-05, 5.637e-05, 5.647e-05, 3158.2039893], [1517056740000, 5.637e-05, 5.647e-05, 5.629e-05, 5.647e-05, 7281.91064801], [1517056800000, 5.646e-05, 5.647e-05, 5.638e-05, 5.64e-05, 30497.51465844], [1517056860000, 5.64e-05, 5.648e-05, 5.64e-05, 5.643e-05, 29654.85840276], [1517056920000, 5.643e-05, 5.646e-05, 5.64e-05, 5.64e-05, 14365.8254895], [1517056980000, 5.64e-05, 5.64e-05, 5.629e-05, 5.638e-05, 23889.34995132], [1517057040000, 5.638e-05, 5.64e-05, 5.628e-05, 5.64e-05, 15308.17563313], [1517057100000, 5.64e-05, 5.64e-05, 5.628e-05, 5.628e-05, 3343.23930212], [1517057160000, 5.628e-05, 5.64e-05, 5.628e-05, 5.629e-05, 1323.3181047], [1517057220000, 5.64e-05, 5.64e-05, 5.628e-05, 5.63e-05, 3187.21373206], [1517057280000, 5.639e-05, 5.639e-05, 5.629e-05, 5.639e-05, 11013.08205783], [1517057340000, 5.639e-05, 5.64e-05, 5.623e-05, 5.623e-05, 12426.06382233], [1517057400000, 5.639e-05, 5.64e-05, 5.623e-05, 5.64e-05, 12537.17139316], [1517057460000, 5.64e-05, 5.64e-05, 5.623e-05, 5.624e-05, 944.8131544], [1517057520000, 5.625e-05, 5.64e-05, 5.624e-05, 5.624e-05, 1349.13217667], [1517057580000, 5.64e-05, 5.64e-05, 5.624e-05, 5.624e-05, 3071.48665254], [1517057640000, 5.624e-05, 5.624e-05, 5.624e-05, 5.624e-05, 4853.41332147], [1517057700000, 5.625e-05, 5.625e-05, 5.61e-05, 5.611e-05, 12310.46047441], [1517057760000, 5.616e-05, 5.617e-05, 5.611e-05, 5.616e-05, 11896.35280872], [1517057820000, 5.616e-05, 5.616e-05, 5.611e-05, 5.616e-05, 9474.31761616], [1517057880000, 5.616e-05, 5.616e-05, 5.611e-05, 5.616e-05, 576.83477409], [1517057940000, 5.616e-05, 5.639e-05, 5.611e-05, 5.639e-05, 16380.2899984], [1517058000000, 5.616e-05, 5.639e-05, 5.616e-05, 5.634e-05, 3750.12184934], [1517058060000, 5.634e-05, 5.634e-05, 5.614e-05, 5.614e-05, 10448.66392085], [1517058120000, 5.616e-05, 5.633e-05, 5.616e-05, 5.633e-05, 15952.80670406], [1517058180000, 5.62e-05, 5.62e-05, 5.62e-05, 5.62e-05, 83.40555125], [1517058240000, 5.633e-05, 5.633e-05, 5.626e-05, 5.632e-05, 3729.2702937], [1517058300000, 5.632e-05, 5.634e-05, 5.628e-05, 5.632e-05, 9477.00934345], [1517058360000, 5.632e-05, 5.632e-05, 5.625e-05, 5.632e-05, 8723.39124114], [1517058420000, 5.632e-05, 5.639e-05, 5.632e-05, 5.632e-05, 32800.97631565], [1517058480000, 5.632e-05, 5.632e-05, 5.621e-05, 5.627e-05, 26420.87551237], [1517058540000, 5.627e-05, 5.629e-05, 5.62e-05, 5.629e-05, 21718.9999327], [1517058600000, 5.625e-05, 5.627e-05, 5.622e-05, 5.623e-05, 15519.55674859], [1517058660000, 5.623e-05, 5.626e-05, 5.619e-05, 5.625e-05, 19114.6836607], [1517058720000, 5.625e-05, 5.625e-05, 5.621e-05, 5.624e-05, 3807.52349102], [1517058780000, 5.624e-05, 5.624e-05, 5.62e-05, 5.623e-05, 24607.78328559], [1517058840000, 5.623e-05, 5.625e-05, 5.619e-05, 5.625e-05, 20934.15710594], [1517058900000, 5.625e-05, 5.625e-05, 5.614e-05, 5.614e-05, 15083.30093141], [1517058960000, 5.623e-05, 5.623e-05, 5.615e-05, 5.618e-05, 6364.41482173], [1517059020000, 5.618e-05, 5.623e-05, 5.615e-05, 5.62e-05, 6952.75572692], [1517059080000, 5.62e-05, 5.623e-05, 5.614e-05, 5.623e-05, 1216.21445476], [1517059140000, 5.617e-05, 5.617e-05, 5.615e-05, 5.615e-05, 8724.70481429], [1517059200000, 5.615e-05, 5.615e-05, 5.614e-05, 5.614e-05, 10830.38004392], [1517059260000, 5.614e-05, 5.614e-05, 5.611e-05, 5.611e-05, 14997.44519222], [1517059320000, 5.612e-05, 5.612e-05, 5.611e-05, 5.612e-05, 5049.90079327], [1517059380000, 5.611e-05, 5.612e-05, 5.61e-05, 5.61e-05, 11436.59464884], [1517059440000, 5.61e-05, 5.61e-05, 5.608e-05, 5.608e-05, 12845.35861174], [1517059500000, 5.609e-05, 5.613e-05, 5.608e-05, 5.608e-05, 6693.25852578], [1517059560000, 5.608e-05, 5.608e-05, 5.607e-05, 5.607e-05, 1378.86331116], [1517059620000, 5.607e-05, 5.63e-05, 5.601e-05, 5.601e-05, 21719.2926551], [1517059680000, 5.601e-05, 5.607e-05, 5.601e-05, 5.607e-05, 7284.50781391], [1517059740000, 5.607e-05, 5.607e-05, 5.601e-05, 5.601e-05, 5331.34701055], [1517059800000, 5.602e-05, 5.607e-05, 5.601e-05, 5.601e-05, 11836.6025231], [1517059860000, 5.605e-05, 5.605e-05, 5.6e-05, 5.601e-05, 8529.72129213], [1517059920000, 5.6e-05, 5.6e-05, 5.594e-05, 5.598e-05, 23458.54280254], [1517059980000, 5.594e-05, 5.597e-05, 5.593e-05, 5.593e-05, 3413.27726212], [1517060040000, 5.593e-05, 5.593e-05, 5.59e-05, 5.592e-05, 5808.37877552], [1517060100000, 5.593e-05, 5.593e-05, 5.587e-05, 5.587e-05, 16635.66570419], [1517060160000, 5.587e-05, 5.598e-05, 5.587e-05, 5.597e-05, 4668.8980129], [1517060220000, 5.597e-05, 5.598e-05, 5.592e-05, 5.598e-05, 3019.18917068], [1517060280000, 5.592e-05, 5.607e-05, 5.585e-05, 5.601e-05, 13770.17524064], [1517060340000, 5.601e-05, 5.601e-05, 5.585e-05, 5.59e-05, 7554.37660671], [1517060400000, 5.59e-05, 5.601e-05, 5.586e-05, 5.591e-05, 2673.32669303], [1517060460000, 5.592e-05, 5.601e-05, 5.586e-05, 5.601e-05, 4552.97263581], [1517060520000, 5.601e-05, 5.602e-05, 5.601e-05, 5.601e-05, 3120.43878547], [1517060580000, 5.607e-05, 5.607e-05, 5.601e-05, 5.602e-05, 13967.72672791], [1517060640000, 5.607e-05, 5.607e-05, 5.602e-05, 5.607e-05, 6678.56958697], [1517060700000, 5.613e-05, 5.62e-05, 5.607e-05, 5.607e-05, 6007.1432204], [1517060760000, 5.607e-05, 5.608e-05, 5.602e-05, 5.607e-05, 5480.25926404], [1517060820000, 5.607e-05, 5.607e-05, 5.605e-05, 5.607e-05, 12306.83371676], [1517060880000, 5.607e-05, 5.607e-05, 5.605e-05, 5.605e-05, 5043.22641058], [1517060940000, 5.605e-05, 5.605e-05, 5.605e-05, 5.605e-05, 1495.44584259], [1517061000000, 5.605e-05, 5.605e-05, 5.605e-05, 5.605e-05, 5720.32964009], [1517061060000, 5.605e-05, 5.605e-05, 5.602e-05, 5.605e-05, 3019.2597817], [1517061120000, 5.605e-05, 5.607e-05, 5.605e-05, 5.607e-05, 2400.72586607], [1517061180000, 5.607e-05, 5.607e-05, 5.605e-05, 5.607e-05, 2832.66398346], [1517061240000, 5.606e-05, 5.619e-05, 5.605e-05, 5.619e-05, 11694.98177599], [1517061300000, 5.619e-05, 5.619e-05, 5.619e-05, 5.619e-05, 1159.8084063], [1517061360000, 5.619e-05, 5.619e-05, 5.607e-05, 5.608e-05, 7927.1299153], [1517061420000, 5.608e-05, 5.608e-05, 5.587e-05, 5.605e-05, 12332.16455454], [1517061480000, 5.605e-05, 5.606e-05, 5.605e-05, 5.605e-05, 43796.33191955], [1517061540000, 5.608e-05, 5.608e-05, 5.608e-05, 5.608e-05, 2215.22423458], [1517061600000, 5.608e-05, 5.608e-05, 5.606e-05, 5.606e-05, 8453.23856852], [1517061660000, 5.606e-05, 5.606e-05, 5.591e-05, 5.591e-05, 7303.94390531], [1517061720000, 5.6e-05, 5.605e-05, 5.6e-05, 5.605e-05, 203.18064062], [1517061780000, 5.605e-05, 5.605e-05, 5.601e-05, 5.605e-05, 4312.4434431], [1517061840000, 5.605e-05, 5.605e-05, 5.6e-05, 5.6e-05, 7836.18985003], [1517061900000, 5.602e-05, 5.604e-05, 5.6e-05, 5.602e-05, 16908.26374266], [1517061960000, 5.602e-05, 5.603e-05, 5.602e-05, 5.602e-05, 3184.34728808], [1517062020000, 5.603e-05, 5.603e-05, 5.6e-05, 5.602e-05, 536.02715996], [1517062080000, 5.603e-05, 5.603e-05, 5.602e-05, 5.603e-05, 2240.5471481], [1517062140000, 5.603e-05, 5.605e-05, 5.602e-05, 5.603e-05, 3600.85124017], [1517062200000, 5.605e-05, 5.606e-05, 5.603e-05, 5.603e-05, 28729.83107181], [1517062260000, 5.606e-05, 5.606e-05, 5.605e-05, 5.605e-05, 2161.05983929], [1517062320000, 5.603e-05, 5.61e-05, 5.602e-05, 5.602e-05, 21941.45882284], [1517062380000, 5.602e-05, 5.606e-05, 5.602e-05, 5.606e-05, 2200.00122686], [1517062440000, 5.62e-05, 5.62e-05, 5.604e-05, 5.605e-05, 3238.55731978], [1517062500000, 5.606e-05, 5.62e-05, 5.602e-05, 5.605e-05, 5704.29025709], [1517062560000, 5.619e-05, 5.619e-05, 5.605e-05, 5.605e-05, 1184.42036839], [1517062620000, 5.616e-05, 5.616e-05, 5.605e-05, 5.605e-05, 4012.47221298], [1517062680000, 5.612e-05, 5.612e-05, 5.605e-05, 5.605e-05, 11564.95122004], [1517062740000, 5.605e-05, 5.612e-05, 5.604e-05, 5.605e-05, 15063.59864249], [1517062800000, 5.605e-05, 5.611e-05, 5.594e-05, 5.611e-05, 21552.21916703], [1517062860000, 5.593e-05, 5.607e-05, 5.591e-05, 5.605e-05, 15482.73812014], [1517062920000, 5.605e-05, 5.605e-05, 5.597e-05, 5.6e-05, 52923.55380272], [1517062980000, 5.6e-05, 5.601e-05, 5.59e-05, 5.6e-05, 21596.63516871], [1517063040000, 5.6e-05, 5.601e-05, 5.59e-05, 5.598e-05, 23608.2802316], [1517063100000, 5.591e-05, 5.6e-05, 5.59e-05, 5.59e-05, 33461.42985715], [1517063160000, 5.59e-05, 5.6e-05, 5.587e-05, 5.6e-05, 31419.76128655], [1517063220000, 5.6e-05, 5.601e-05, 5.591e-05, 5.6e-05, 13837.18298998], [1517063280000, 5.6e-05, 5.6e-05, 5.588e-05, 5.59e-05, 17897.2951596], [1517063340000, 5.59e-05, 5.597e-05, 5.587e-05, 5.596e-05, 35067.06189799], [1517063400000, 5.588e-05, 5.596e-05, 5.588e-05, 5.596e-05, 11707.33199631], [1517063460000, 5.595e-05, 5.595e-05, 5.588e-05, 5.59e-05, 28524.47057655], [1517063520000, 5.59e-05, 5.59e-05, 5.589e-05, 5.589e-05, 14128.60971279], [1517063580000, 5.59e-05, 5.59e-05, 5.589e-05, 5.589e-05, 21797.61710895], [1517063640000, 5.59e-05, 5.596e-05, 5.584e-05, 5.584e-05, 83783.15841587], [1517063700000, 5.596e-05, 5.599e-05, 5.582e-05, 5.584e-05, 15089.21302592], [1517063760000, 5.584e-05, 5.595e-05, 5.573e-05, 5.595e-05, 43364.18965976], [1517063820000, 5.593e-05, 5.593e-05, 5.592e-05, 5.592e-05, 7474.96994276], [1517063880000, 5.591e-05, 5.599e-05, 5.591e-05, 5.592e-05, 12151.12354394], [1517063940000, 5.595e-05, 5.595e-05, 5.59e-05, 5.595e-05, 17082.80321621], [1517064000000, 5.592e-05, 5.595e-05, 5.59e-05, 5.59e-05, 14969.33582961], [1517064060000, 5.59e-05, 5.595e-05, 5.59e-05, 5.595e-05, 2525.43629604], [1517064120000, 5.594e-05, 5.595e-05, 5.556e-05, 5.594e-05, 18208.2577207], [1517064180000, 5.594e-05, 5.594e-05, 5.574e-05, 5.574e-05, 449.71703884], [1517064240000, 5.591e-05, 5.591e-05, 5.574e-05, 5.59e-05, 27794.92375824], [1517064300000, 5.577e-05, 5.589e-05, 5.555e-05, 5.589e-05, 53273.94637943], [1517064360000, 5.574e-05, 5.59e-05, 5.559e-05, 5.59e-05, 11480.60444627], [1517064420000, 5.59e-05, 5.59e-05, 5.558e-05, 5.57e-05, 30356.34877252], [1517064480000, 5.57e-05, 5.57e-05, 5.56e-05, 5.57e-05, 26629.97328469], [1517064540000, 5.57e-05, 5.588e-05, 5.57e-05, 5.585e-05, 8795.7784823], [1517064600000, 5.57e-05, 5.582e-05, 5.563e-05, 5.563e-05, 11668.856686], [1517064660000, 5.563e-05, 5.563e-05, 5.56e-05, 5.56e-05, 46549.76321598], [1517064720000, 5.563e-05, 5.587e-05, 5.56e-05, 5.581e-05, 1619.75289233], [1517064780000, 5.578e-05, 5.578e-05, 5.564e-05, 5.571e-05, 42798.71279883], [1517064840000, 5.571e-05, 5.571e-05, 5.559e-05, 5.567e-05, 36013.68583089], [1517064900000, 5.569e-05, 5.571e-05, 5.566e-05, 5.567e-05, 36618.20485574], [1517064960000, 5.57e-05, 5.574e-05, 5.562e-05, 5.574e-05, 20108.62121973], [1517065020000, 5.57e-05, 5.59e-05, 5.561e-05, 5.59e-05, 27941.61119654], [1517065080000, 5.584e-05, 5.584e-05, 5.579e-05, 5.58e-05, 1957.36283444], [1517065140000, 5.579e-05, 5.598e-05, 5.579e-05, 5.579e-05, 17964.61457767], [1517065200000, 5.587e-05, 5.587e-05, 5.579e-05, 5.58e-05, 1251.14506306], [1517065260000, 5.58e-05, 5.583e-05, 5.579e-05, 5.579e-05, 35587.1608859], [1517065320000, 5.579e-05, 5.579e-05, 5.57e-05, 5.579e-05, 4263.14319572], [1517065380000, 5.579e-05, 5.579e-05, 5.572e-05, 5.578e-05, 11402.69932743], [1517065440000, 5.579e-05, 5.579e-05, 5.576e-05, 5.579e-05, 7527.20173596], [1517065500000, 5.579e-05, 5.579e-05, 5.574e-05, 5.574e-05, 22003.04221762], [1517065560000, 5.576e-05, 5.576e-05, 5.565e-05, 5.565e-05, 15995.78934688], [1517065620000, 5.576e-05, 5.577e-05, 5.575e-05, 5.577e-05, 2802.42971697], [1517065680000, 5.576e-05, 5.587e-05, 5.565e-05, 5.571e-05, 26988.58488747], [1517065740000, 5.571e-05, 5.587e-05, 5.569e-05, 5.587e-05, 2938.40481064], [1517065800000, 5.587e-05, 5.587e-05, 5.573e-05, 5.587e-05, 454.4419343], [1517065860000, 5.584e-05, 5.584e-05, 5.574e-05, 5.582e-05, 2190.44308356], [1517065920000, 5.576e-05, 5.582e-05, 5.576e-05, 5.578e-05, 5885.40950313], [1517065980000, 5.581e-05, 5.587e-05, 5.576e-05, 5.587e-05, 28337.18444769], [1517066040000, 5.587e-05, 5.617e-05, 5.58e-05, 5.593e-05, 35227.5409343], [1517066100000, 5.593e-05, 5.612e-05, 5.58e-05, 5.6e-05, 23848.19536983], [1517066160000, 5.6e-05, 5.6e-05, 5.582e-05, 5.582e-05, 3388.49078264], [1517066220000, 5.583e-05, 5.583e-05, 5.582e-05, 5.582e-05, 5470.85998787], [1517066280000, 5.583e-05, 5.585e-05, 5.582e-05, 5.583e-05, 11094.83037307], [1517066340000, 5.583e-05, 5.59e-05, 5.58e-05, 5.58e-05, 5484.3797966], [1517066400000, 5.598e-05, 5.62e-05, 5.576e-05, 5.577e-05, 16534.31634176], [1517066460000, 5.578e-05, 5.594e-05, 5.578e-05, 5.594e-05, 824.08753944], [1517066520000, 5.593e-05, 5.598e-05, 5.576e-05, 5.592e-05, 10601.56829803], [1517066580000, 5.593e-05, 5.593e-05, 5.591e-05, 5.591e-05, 3758.26927129], [1517066640000, 5.591e-05, 5.591e-05, 5.591e-05, 5.591e-05, 1010.69017684], [1517066700000, 5.59e-05, 5.59e-05, 5.589e-05, 5.589e-05, 2611.76461057], [1517066760000, 5.589e-05, 5.589e-05, 5.589e-05, 5.589e-05, 388.94586862], [1517066820000, 5.58e-05, 5.581e-05, 5.58e-05, 5.58e-05, 314.44058637], [1517066880000, 5.58e-05, 5.58e-05, 5.579e-05, 5.579e-05, 17710.31322507], [1517066940000, 5.58e-05, 5.58e-05, 5.58e-05, 5.58e-05, 1485.3019112], [1517067000000, 5.579e-05, 5.631e-05, 5.579e-05, 5.58e-05, 18657.54012309], [1517067060000, 5.58e-05, 5.581e-05, 5.58e-05, 5.581e-05, 3488.60635251], [1517067120000, 5.581e-05, 5.616e-05, 5.581e-05, 5.616e-05, 4343.80286855], [1517067180000, 5.613e-05, 5.615e-05, 5.583e-05, 5.584e-05, 2094.23446964], [1517067240000, 5.605e-05, 5.605e-05, 5.582e-05, 5.583e-05, 17349.81947263], [1517067300000, 5.584e-05, 5.587e-05, 5.583e-05, 5.587e-05, 2517.12949387], [1517067360000, 5.597e-05, 5.597e-05, 5.588e-05, 5.588e-05, 996.7778855], [1517067420000, 5.589e-05, 5.59e-05, 5.588e-05, 5.59e-05, 769.02578184], [1517067480000, 5.588e-05, 5.588e-05, 5.587e-05, 5.588e-05, 8374.05075928], [1517067540000, 5.587e-05, 5.588e-05, 5.587e-05, 5.587e-05, 8860.669191], [1517067600000, 5.585e-05, 5.585e-05, 5.582e-05, 5.582e-05, 53757.17240032], [1517067660000, 5.585e-05, 5.585e-05, 5.577e-05, 5.579e-05, 3630.68482543], [1517067720000, 5.577e-05, 5.577e-05, 5.573e-05, 5.575e-05, 6285.84309756], [1517067780000, 5.575e-05, 5.576e-05, 5.567e-05, 5.567e-05, 17461.88835455], [1517067840000, 5.567e-05, 5.58e-05, 5.56e-05, 5.58e-05, 17031.9235407], [1517067900000, 5.57e-05, 5.581e-05, 5.566e-05, 5.58e-05, 20629.34833024], [1517067960000, 5.581e-05, 5.581e-05, 5.565e-05, 5.579e-05, 33241.5013998], [1517068020000, 5.578e-05, 5.579e-05, 5.566e-05, 5.57e-05, 49615.6806623], [1517068080000, 5.57e-05, 5.579e-05, 5.57e-05, 5.578e-05, 35692.21283263], [1517068140000, 5.57e-05, 5.57e-05, 5.56e-05, 5.56e-05, 3476.91142181], [1517068200000, 5.559e-05, 5.56e-05, 5.554e-05, 5.554e-05, 23234.74062786], [1517068260000, 5.554e-05, 5.554e-05, 5.546e-05, 5.546e-05, 38033.84038059], [1517068320000, 5.546e-05, 5.546e-05, 5.545e-05, 5.546e-05, 66540.88945151], [1517068380000, 5.546e-05, 5.554e-05, 5.546e-05, 5.553e-05, 4687.99229481], [1517068440000, 5.552e-05, 5.552e-05, 5.552e-05, 5.552e-05, 1951.24330739], [1517068500000, 5.547e-05, 5.552e-05, 5.54e-05, 5.54e-05, 35908.53108931], [1517068560000, 5.543e-05, 5.555e-05, 5.54e-05, 5.555e-05, 31134.75662247], [1517068620000, 5.555e-05, 5.555e-05, 5.54e-05, 5.54e-05, 20051.70758036], [1517068680000, 5.554e-05, 5.554e-05, 5.544e-05, 5.554e-05, 14684.29622708], [1517068740000, 5.551e-05, 5.551e-05, 5.537e-05, 5.537e-05, 4025.71567665], [1517068800000, 5.537e-05, 5.537e-05, 5.51e-05, 5.53e-05, 51845.31070704], [1517068860000, 5.529e-05, 5.53e-05, 5.511e-05, 5.525e-05, 24515.71699116], [1517068920000, 5.525e-05, 5.525e-05, 5.521e-05, 5.524e-05, 12786.26467305], [1517068980000, 5.521e-05, 5.525e-05, 5.521e-05, 5.524e-05, 12527.91315701], [1517069040000, 5.524e-05, 5.525e-05, 5.524e-05, 5.524e-05, 2596.24034942], [1517069100000, 5.524e-05, 5.526e-05, 5.521e-05, 5.526e-05, 21790.23901748], [1517069160000, 5.53e-05, 5.53e-05, 5.526e-05, 5.527e-05, 14516.15674515], [1517069220000, 5.527e-05, 5.53e-05, 5.526e-05, 5.526e-05, 14798.45444128], [1517069280000, 5.528e-05, 5.53e-05, 5.528e-05, 5.53e-05, 885.00388006], [1517069340000, 5.53e-05, 5.53e-05, 5.526e-05, 5.53e-05, 13364.30843586], [1517069400000, 5.529e-05, 5.53e-05, 5.526e-05, 5.528e-05, 5076.52892278], [1517069460000, 5.528e-05, 5.528e-05, 5.525e-05, 5.525e-05, 11512.53684212], [1517069520000, 5.523e-05, 5.525e-05, 5.523e-05, 5.525e-05, 867.14790092], [1517069580000, 5.524e-05, 5.525e-05, 5.5e-05, 5.52e-05, 63650.30082287], [1517069640000, 5.52e-05, 5.524e-05, 5.5e-05, 5.517e-05, 137435.48443145], [1517069700000, 5.516e-05, 5.516e-05, 5.499e-05, 5.5e-05, 61850.67003714], [1517069760000, 5.515e-05, 5.516e-05, 5.499e-05, 5.516e-05, 25489.80036941], [1517069820000, 5.501e-05, 5.515e-05, 5.498e-05, 5.512e-05, 7838.03153795], [1517069880000, 5.498e-05, 5.509e-05, 5.495e-05, 5.497e-05, 4923.56902758], [1517069940000, 5.498e-05, 5.498e-05, 5.484e-05, 5.484e-05, 17485.13413737], [1517070000000, 5.485e-05, 5.485e-05, 5.479e-05, 5.484e-05, 12497.9995851], [1517070060000, 5.482e-05, 5.482e-05, 5.475e-05, 5.477e-05, 35772.6502582], [1517070120000, 5.476e-05, 5.477e-05, 5.47e-05, 5.475e-05, 42507.80305067], [1517070180000, 5.475e-05, 5.477e-05, 5.475e-05, 5.477e-05, 17671.36372768], [1517070240000, 5.477e-05, 5.489e-05, 5.477e-05, 5.48e-05, 54163.94306306], [1517070300000, 5.492e-05, 5.511e-05, 5.492e-05, 5.509e-05, 85736.63995321], [1517070360000, 5.492e-05, 5.509e-05, 5.48e-05, 5.493e-05, 20619.45589696], [1517070420000, 5.493e-05, 5.493e-05, 5.483e-05, 5.49e-05, 4152.22582789], [1517070480000, 5.49e-05, 5.49e-05, 5.484e-05, 5.486e-05, 6623.95623825], [1517070540000, 5.486e-05, 5.49e-05, 5.48e-05, 5.49e-05, 21384.69788023], [1517070600000, 5.489e-05, 5.489e-05, 5.485e-05, 5.485e-05, 5111.91987029], [1517070660000, 5.483e-05, 5.488e-05, 5.48e-05, 5.488e-05, 13771.25238143], [1517070720000, 5.488e-05, 5.488e-05, 5.479e-05, 5.481e-05, 38750.48887082], [1517070780000, 5.481e-05, 5.481e-05, 5.477e-05, 5.477e-05, 17543.64220502], [1517070840000, 5.477e-05, 5.481e-05, 5.471e-05, 5.471e-05, 18286.19804282], [1517070900000, 5.475e-05, 5.475e-05, 5.471e-05, 5.471e-05, 4498.08037571], [1517070960000, 5.471e-05, 5.471e-05, 5.47e-05, 5.47e-05, 9199.15377456], [1517071020000, 5.47e-05, 5.475e-05, 5.469e-05, 5.47e-05, 19690.34335878], [1517071080000, 5.468e-05, 5.47e-05, 5.468e-05, 5.468e-05, 34423.07164391], [1517071140000, 5.469e-05, 5.47e-05, 5.465e-05, 5.466e-05, 29933.58981591], [1517071200000, 5.467e-05, 5.468e-05, 5.465e-05, 5.468e-05, 16626.2734309], [1517071260000, 5.468e-05, 5.47e-05, 5.467e-05, 5.47e-05, 21348.20929352], [1517071320000, 5.468e-05, 5.47e-05, 5.468e-05, 5.47e-05, 997.74817231], [1517071380000, 5.47e-05, 5.47e-05, 5.469e-05, 5.469e-05, 13731.15961093], [1517071440000, 5.47e-05, 5.475e-05, 5.468e-05, 5.475e-05, 8224.87817213], [1517071500000, 5.47e-05, 5.475e-05, 5.47e-05, 5.474e-05, 20295.27540908], [1517071560000, 5.474e-05, 5.474e-05, 5.47e-05, 5.47e-05, 10597.30399573], [1517071620000, 5.47e-05, 5.475e-05, 5.47e-05, 5.475e-05, 15653.44089149], [1517071680000, 5.474e-05, 5.475e-05, 5.474e-05, 5.475e-05, 18773.51381676], [1517071740000, 5.474e-05, 5.475e-05, 5.472e-05, 5.472e-05, 9893.55440984], [1517071800000, 5.472e-05, 5.472e-05, 5.468e-05, 5.468e-05, 6653.12965796], [1517071860000, 5.47e-05, 5.471e-05, 5.467e-05, 5.467e-05, 32773.39411387], [1517071920000, 5.467e-05, 5.468e-05, 5.465e-05, 5.468e-05, 23698.18443659], [1517071980000, 5.468e-05, 5.468e-05, 5.459e-05, 5.46e-05, 46049.74375754], [1517072040000, 5.46e-05, 5.46e-05, 5.452e-05, 5.452e-05, 14966.19171225], [1517072100000, 5.452e-05, 5.452e-05, 5.433e-05, 5.44e-05, 196904.11679483], [1517072160000, 5.44e-05, 5.452e-05, 5.44e-05, 5.446e-05, 60508.0206357], [1517072220000, 5.446e-05, 5.45e-05, 5.442e-05, 5.444e-05, 27757.40635288], [1517072280000, 5.444e-05, 5.446e-05, 5.443e-05, 5.443e-05, 18059.34053142], [1517072340000, 5.443e-05, 5.445e-05, 5.433e-05, 5.433e-05, 25129.03593106], [1517072400000, 5.439e-05, 5.439e-05, 5.433e-05, 5.433e-05, 34801.6933505], [1517072460000, 5.432e-05, 5.438e-05, 5.426e-05, 5.43e-05, 28611.03650763], [1517072520000, 5.431e-05, 5.436e-05, 5.429e-05, 5.432e-05, 60185.88527365], [1517072580000, 5.438e-05, 5.449e-05, 5.438e-05, 5.449e-05, 18962.33647794], [1517072640000, 5.449e-05, 5.449e-05, 5.44e-05, 5.44e-05, 38658.64106485], [1517072700000, 5.44e-05, 5.454e-05, 5.438e-05, 5.442e-05, 23081.4493793], [1517072760000, 5.442e-05, 5.46e-05, 5.439e-05, 5.44e-05, 72943.76427391], [1517072820000, 5.44e-05, 5.44e-05, 5.439e-05, 5.44e-05, 21249.22837239], [1517072880000, 5.44e-05, 5.44e-05, 5.439e-05, 5.44e-05, 57665.19761959], [1517072940000, 5.44e-05, 5.459e-05, 5.44e-05, 5.44e-05, 6949.40470544], [1517073000000, 5.44e-05, 5.45e-05, 5.44e-05, 5.44e-05, 28515.82645318], [1517073060000, 5.439e-05, 5.44e-05, 5.429e-05, 5.43e-05, 18873.32931791], [1517073120000, 5.43e-05, 5.439e-05, 5.429e-05, 5.429e-05, 95577.67724402], [1517073180000, 5.429e-05, 5.439e-05, 5.426e-05, 5.437e-05, 35740.31227821], [1517073240000, 5.43e-05, 5.44e-05, 5.423e-05, 5.426e-05, 56663.02015173], [1517073300000, 5.426e-05, 5.426e-05, 5.419e-05, 5.419e-05, 40972.81750608], [1517073360000, 5.419e-05, 5.419e-05, 5.417e-05, 5.417e-05, 26131.07749631], [1517073420000, 5.417e-05, 5.418e-05, 5.413e-05, 5.413e-05, 8887.00889667], [1517073480000, 5.414e-05, 5.414e-05, 5.4e-05, 5.409e-05, 125339.63052375], [1517073540000, 5.4e-05, 5.41e-05, 5.396e-05, 5.4e-05, 94610.31900234], [1517073600000, 5.397e-05, 5.401e-05, 5.389e-05, 5.39e-05, 159159.37872422], [1517073660000, 5.39e-05, 5.39e-05, 5.365e-05, 5.365e-05, 164878.93514878], [1517073720000, 5.37e-05, 5.382e-05, 5.37e-05, 5.382e-05, 21812.56637852], [1517073780000, 5.382e-05, 5.399e-05, 5.382e-05, 5.39e-05, 28757.93628406], [1517073840000, 5.39e-05, 5.39e-05, 5.352e-05, 5.373e-05, 76469.61175633], [1517073900000, 5.373e-05, 5.385e-05, 5.35e-05, 5.366e-05, 209915.99914223], [1517073960000, 5.368e-05, 5.385e-05, 5.368e-05, 5.375e-05, 31717.66772655], [1517074020000, 5.375e-05, 5.38e-05, 5.372e-05, 5.38e-05, 64938.2877073], [1517074080000, 5.38e-05, 5.39e-05, 5.375e-05, 5.39e-05, 24752.96679925], [1517074140000, 5.39e-05, 5.412e-05, 5.39e-05, 5.401e-05, 33282.38770695], [1517074200000, 5.401e-05, 5.417e-05, 5.4e-05, 5.4e-05, 37766.37841576], [1517074260000, 5.4e-05, 5.401e-05, 5.385e-05, 5.401e-05, 24502.30138549], [1517074320000, 5.401e-05, 5.401e-05, 5.366e-05, 5.397e-05, 25928.45926837], [1517074380000, 5.397e-05, 5.401e-05, 5.385e-05, 5.397e-05, 22964.05789869], [1517074440000, 5.4e-05, 5.412e-05, 5.397e-05, 5.4e-05, 16227.40627431], [1517074500000, 5.409e-05, 5.409e-05, 5.397e-05, 5.401e-05, 36600.94262773], [1517074560000, 5.4e-05, 5.4e-05, 5.398e-05, 5.399e-05, 3097.36582244], [1517074620000, 5.4e-05, 5.4e-05, 5.399e-05, 5.399e-05, 5377.3888478], [1517074680000, 5.399e-05, 5.399e-05, 5.398e-05, 5.398e-05, 9037.46663814], [1517074740000, 5.399e-05, 5.399e-05, 5.398e-05, 5.398e-05, 18766.26505663], [1517074800000, 5.399e-05, 5.399e-05, 5.398e-05, 5.399e-05, 34454.18103357], [1517074860000, 5.399e-05, 5.412e-05, 5.398e-05, 5.412e-05, 67347.67081449], [1517074920000, 5.412e-05, 5.437e-05, 5.412e-05, 5.437e-05, 14554.06857789], [1517074980000, 5.438e-05, 5.439e-05, 5.433e-05, 5.439e-05, 15514.71895945], [1517075040000, 5.439e-05, 5.456e-05, 5.439e-05, 5.44e-05, 20264.17916058], [1517075100000, 5.44e-05, 5.456e-05, 5.409e-05, 5.439e-05, 40724.00262071], [1517075160000, 5.432e-05, 5.455e-05, 5.432e-05, 5.455e-05, 28190.11865027], [1517075220000, 5.455e-05, 5.456e-05, 5.44e-05, 5.45e-05, 9494.07699384], [1517075280000, 5.45e-05, 5.454e-05, 5.45e-05, 5.454e-05, 6728.00124528], [1517075340000, 5.454e-05, 5.456e-05, 5.452e-05, 5.454e-05, 10427.56259177], [1517075400000, 5.454e-05, 5.454e-05, 5.45e-05, 5.451e-05, 11930.93929472], [1517075460000, 5.452e-05, 5.452e-05, 5.441e-05, 5.442e-05, 25951.62128517], [1517075520000, 5.442e-05, 5.446e-05, 5.44e-05, 5.446e-05, 4746.08827332], [1517075580000, 5.45e-05, 5.45e-05, 5.44e-05, 5.441e-05, 16107.64515711], [1517075640000, 5.441e-05, 5.441e-05, 5.44e-05, 5.441e-05, 7087.96236433], [1517075700000, 5.441e-05, 5.441e-05, 5.44e-05, 5.441e-05, 3389.63682493], [1517075760000, 5.441e-05, 5.441e-05, 5.44e-05, 5.441e-05, 1216.70465038], [1517075820000, 5.441e-05, 5.441e-05, 5.43e-05, 5.44e-05, 15734.06384269], [1517075880000, 5.45e-05, 5.45e-05, 5.426e-05, 5.426e-05, 3483.41474645], [1517075940000, 5.427e-05, 5.449e-05, 5.425e-05, 5.425e-05, 6960.78893857], [1517076000000, 5.426e-05, 5.44e-05, 5.426e-05, 5.44e-05, 12040.20569085], [1517076060000, 5.44e-05, 5.44e-05, 5.44e-05, 5.44e-05, 6998.51634341], [1517076120000, 5.44e-05, 5.448e-05, 5.44e-05, 5.448e-05, 5953.00414945], [1517076180000, 5.448e-05, 5.448e-05, 5.428e-05, 5.447e-05, 8454.3301228], [1517076240000, 5.447e-05, 5.451e-05, 5.447e-05, 5.451e-05, 81902.24378267], [1517076300000, 5.452e-05, 5.457e-05, 5.452e-05, 5.456e-05, 4980.0424792], [1517076360000, 5.456e-05, 5.466e-05, 5.453e-05, 5.466e-05, 14551.84632609], [1517076420000, 5.453e-05, 5.466e-05, 5.453e-05, 5.456e-05, 9903.37370658], [1517076480000, 5.465e-05, 5.467e-05, 5.465e-05, 5.467e-05, 21808.88244063], [1517076540000, 5.467e-05, 5.467e-05, 5.465e-05, 5.465e-05, 11862.4021661], [1517076600000, 5.465e-05, 5.472e-05, 5.465e-05, 5.472e-05, 16663.42503387], [1517076660000, 5.472e-05, 5.472e-05, 5.467e-05, 5.471e-05, 30081.84860738], [1517076720000, 5.471e-05, 5.471e-05, 5.466e-05, 5.466e-05, 60547.35551211], [1517076780000, 5.47e-05, 5.47e-05, 5.466e-05, 5.467e-05, 8717.81236104], [1517076840000, 5.47e-05, 5.47e-05, 5.466e-05, 5.468e-05, 19966.19113349], [1517076900000, 5.468e-05, 5.472e-05, 5.466e-05, 5.472e-05, 6081.2133366], [1517076960000, 5.472e-05, 5.472e-05, 5.471e-05, 5.471e-05, 24487.98333877], [1517077020000, 5.471e-05, 5.475e-05, 5.471e-05, 5.472e-05, 9303.65446299], [1517077080000, 5.472e-05, 5.478e-05, 5.472e-05, 5.476e-05, 4073.73025966], [1517077140000, 5.477e-05, 5.477e-05, 5.476e-05, 5.477e-05, 1682.11199787], [1517077200000, 5.475e-05, 5.475e-05, 5.475e-05, 5.475e-05, 4247.00901779], [1517077260000, 5.475e-05, 5.477e-05, 5.471e-05, 5.476e-05, 8677.69585929], [1517077320000, 5.477e-05, 5.479e-05, 5.471e-05, 5.478e-05, 49807.20031891], [1517077380000, 5.478e-05, 5.478e-05, 5.454e-05, 5.47e-05, 23149.19032159], [1517077440000, 5.469e-05, 5.472e-05, 5.454e-05, 5.454e-05, 45918.61040548], [1517077500000, 5.455e-05, 5.455e-05, 5.453e-05, 5.454e-05, 4204.72710683], [1517077560000, 5.454e-05, 5.455e-05, 5.452e-05, 5.455e-05, 9073.12528505], [1517077620000, 5.452e-05, 5.455e-05, 5.448e-05, 5.452e-05, 7972.79876946], [1517077680000, 5.452e-05, 5.452e-05, 5.448e-05, 5.452e-05, 6168.64324292], [1517077740000, 5.452e-05, 5.452e-05, 5.448e-05, 5.448e-05, 67606.5308017], [1517077800000, 5.449e-05, 5.452e-05, 5.448e-05, 5.45e-05, 12052.66844042], [1517077860000, 5.45e-05, 5.453e-05, 5.448e-05, 5.452e-05, 13198.84650746], [1517077920000, 5.452e-05, 5.455e-05, 5.448e-05, 5.448e-05, 22164.86955804], [1517077980000, 5.452e-05, 5.455e-05, 5.448e-05, 5.455e-05, 3115.70115351], [1517078040000, 5.452e-05, 5.455e-05, 5.452e-05, 5.452e-05, 15928.0172709], [1517078100000, 5.452e-05, 5.453e-05, 5.448e-05, 5.452e-05, 4637.09005739], [1517078160000, 5.449e-05, 5.453e-05, 5.448e-05, 5.448e-05, 18850.1123046], [1517078220000, 5.449e-05, 5.453e-05, 5.448e-05, 5.453e-05, 5977.86880105], [1517078280000, 5.452e-05, 5.452e-05, 5.449e-05, 5.452e-05, 5052.10957137], [1517078340000, 5.452e-05, 5.453e-05, 5.452e-05, 5.452e-05, 539.88856107], [1517078400000, 5.452e-05, 5.455e-05, 5.452e-05, 5.453e-05, 3058.23102519], [1517078460000, 5.454e-05, 5.455e-05, 5.453e-05, 5.455e-05, 6395.63215147], [1517078520000, 5.455e-05, 5.455e-05, 5.453e-05, 5.455e-05, 12707.41424603], [1517078580000, 5.453e-05, 5.453e-05, 5.453e-05, 5.453e-05, 3308.31326645], [1517078640000, 5.453e-05, 5.454e-05, 5.453e-05, 5.454e-05, 5568.2528735], [1517078700000, 5.453e-05, 5.454e-05, 5.453e-05, 5.453e-05, 2715.78482582], [1517078760000, 5.453e-05, 5.454e-05, 5.453e-05, 5.453e-05, 548.63962463], [1517078820000, 5.453e-05, 5.453e-05, 5.453e-05, 5.453e-05, 3440.30699237], [1517078880000, 5.453e-05, 5.454e-05, 5.452e-05, 5.453e-05, 19635.78589509], [1517078940000, 5.453e-05, 5.454e-05, 5.452e-05, 5.454e-05, 19087.23444833], [1517079000000, 5.454e-05, 5.455e-05, 5.453e-05, 5.453e-05, 5628.28180264], [1517079060000, 5.453e-05, 5.455e-05, 5.452e-05, 5.455e-05, 3092.09183236], [1517079120000, 5.455e-05, 5.455e-05, 5.454e-05, 5.454e-05, 3352.36481945], [1517079180000, 5.455e-05, 5.468e-05, 5.455e-05, 5.468e-05, 3400.91137918], [1517079240000, 5.468e-05, 5.468e-05, 5.46e-05, 5.46e-05, 1819.37044572], [1517079300000, 5.46e-05, 5.468e-05, 5.46e-05, 5.468e-05, 13411.44511903], [1517079360000, 5.468e-05, 5.468e-05, 5.462e-05, 5.462e-05, 7790.60864527], [1517079420000, 5.462e-05, 5.472e-05, 5.462e-05, 5.462e-05, 19768.91598593], [1517079480000, 5.462e-05, 5.472e-05, 5.462e-05, 5.468e-05, 20659.24639428], [1517079540000, 5.469e-05, 5.47e-05, 5.468e-05, 5.468e-05, 9508.19446743], [1517079600000, 5.468e-05, 5.468e-05, 5.46e-05, 5.46e-05, 4656.85734117], [1517079660000, 5.456e-05, 5.46e-05, 5.455e-05, 5.455e-05, 13886.4129977], [1517079720000, 5.455e-05, 5.462e-05, 5.455e-05, 5.462e-05, 8479.91055075], [1517079780000, 5.455e-05, 5.455e-05, 5.455e-05, 5.455e-05, 1416.36687553], [1517079840000, 5.456e-05, 5.462e-05, 5.452e-05, 5.461e-05, 6577.39608854], [1517079900000, 5.454e-05, 5.461e-05, 5.452e-05, 5.461e-05, 7524.05817495], [1517079960000, 5.461e-05, 5.461e-05, 5.454e-05, 5.454e-05, 1516.18062587], [1517080020000, 5.454e-05, 5.465e-05, 5.454e-05, 5.465e-05, 3334.38978872], [1517080080000, 5.465e-05, 5.465e-05, 5.454e-05, 5.465e-05, 1338.36403832], [1517080140000, 5.454e-05, 5.454e-05, 5.454e-05, 5.454e-05, 914.0253429], [1517080200000, 5.454e-05, 5.464e-05, 5.448e-05, 5.448e-05, 21458.34229779], [1517080260000, 5.448e-05, 5.464e-05, 5.448e-05, 5.448e-05, 11719.62621853], [1517080320000, 5.464e-05, 5.464e-05, 5.448e-05, 5.448e-05, 9105.09933826], [1517080380000, 5.462e-05, 5.462e-05, 5.448e-05, 5.448e-05, 2367.22623289], [1517080440000, 5.448e-05, 5.462e-05, 5.448e-05, 5.448e-05, 218.73271512], [1517080500000, 5.462e-05, 5.462e-05, 5.449e-05, 5.449e-05, 10845.27113428], [1517080560000, 5.449e-05, 5.449e-05, 5.448e-05, 5.448e-05, 659.74067584], [1517080620000, 5.448e-05, 5.461e-05, 5.448e-05, 5.461e-05, 2982.88017147], [1517080680000, 5.449e-05, 5.45e-05, 5.448e-05, 5.449e-05, 18053.0210455], [1517080740000, 5.449e-05, 5.449e-05, 5.448e-05, 5.448e-05, 2300.10008162], [1517080800000, 5.449e-05, 5.46e-05, 5.448e-05, 5.46e-05, 5793.19212105], [1517080860000, 5.46e-05, 5.461e-05, 5.46e-05, 5.46e-05, 2986.43514864], [1517080920000, 5.46e-05, 5.462e-05, 5.46e-05, 5.462e-05, 13382.93345713], [1517080980000, 5.463e-05, 5.463e-05, 5.462e-05, 5.463e-05, 255.96164409], [1517081040000, 5.463e-05, 5.467e-05, 5.462e-05, 5.463e-05, 1647.84226622], [1517081100000, 5.465e-05, 5.467e-05, 5.465e-05, 5.466e-05, 1496.89584497], [1517081160000, 5.466e-05, 5.467e-05, 5.465e-05, 5.466e-05, 3037.99876902], [1517081220000, 5.466e-05, 5.467e-05, 5.465e-05, 5.467e-05, 13234.35562888], [1517081280000, 5.465e-05, 5.466e-05, 5.463e-05, 5.463e-05, 3137.41089871], [1517081340000, 5.462e-05, 5.463e-05, 5.449e-05, 5.462e-05, 5213.26636234], [1517081400000, 5.462e-05, 5.462e-05, 5.449e-05, 5.46e-05, 2643.90374007], [1517081460000, 5.449e-05, 5.46e-05, 5.449e-05, 5.46e-05, 32417.47681528], [1517081520000, 5.46e-05, 5.46e-05, 5.448e-05, 5.459e-05, 5886.96493319], [1517081580000, 5.459e-05, 5.459e-05, 5.45e-05, 5.45e-05, 2520.33762725], [1517081640000, 5.45e-05, 5.459e-05, 5.45e-05, 5.45e-05, 8198.46982718], [1517081700000, 5.459e-05, 5.459e-05, 5.452e-05, 5.459e-05, 794.29959104], [1517081760000, 5.452e-05, 5.452e-05, 5.45e-05, 5.45e-05, 3965.19638734], [1517081820000, 5.459e-05, 5.46e-05, 5.45e-05, 5.45e-05, 2565.02695641], [1517081880000, 5.459e-05, 5.46e-05, 5.459e-05, 5.459e-05, 1553.22131635], [1517081940000, 5.459e-05, 5.459e-05, 5.459e-05, 5.459e-05, 307.98840962], [1517082000000, 5.458e-05, 5.459e-05, 5.451e-05, 5.452e-05, 1507.37222362], [1517082060000, 5.452e-05, 5.456e-05, 5.452e-05, 5.452e-05, 14742.97107708], [1517082120000, 5.452e-05, 5.457e-05, 5.452e-05, 5.452e-05, 24700.73337485], [1517082180000, 5.456e-05, 5.46e-05, 5.452e-05, 5.452e-05, 21553.85237974], [1517082240000, 5.452e-05, 5.452e-05, 5.45e-05, 5.45e-05, 16757.68564305], [1517082300000, 5.45e-05, 5.45e-05, 5.449e-05, 5.449e-05, 21546.09403183], [1517082360000, 5.449e-05, 5.45e-05, 5.449e-05, 5.45e-05, 5395.67066333], [1517082420000, 5.449e-05, 5.45e-05, 5.449e-05, 5.449e-05, 2554.76310342], [1517082480000, 5.449e-05, 5.45e-05, 5.449e-05, 5.45e-05, 5076.70309426], [1517082540000, 5.45e-05, 5.45e-05, 5.44e-05, 5.44e-05, 9801.46089005], [1517082600000, 5.44e-05, 5.44e-05, 5.42e-05, 5.425e-05, 10324.63549258], [1517082660000, 5.425e-05, 5.43e-05, 5.425e-05, 5.43e-05, 5247.13516538], [1517082720000, 5.43e-05, 5.445e-05, 5.43e-05, 5.444e-05, 3708.56858542], [1517082780000, 5.442e-05, 5.442e-05, 5.431e-05, 5.431e-05, 4276.59412306], [1517082840000, 5.441e-05, 5.441e-05, 5.431e-05, 5.44e-05, 2572.75463129], [1517082900000, 5.44e-05, 5.441e-05, 5.431e-05, 5.431e-05, 10625.06667869], [1517082960000, 5.432e-05, 5.432e-05, 5.431e-05, 5.431e-05, 3553.49237105], [1517083020000, 5.431e-05, 5.431e-05, 5.429e-05, 5.429e-05, 4605.01930978], [1517083080000, 5.429e-05, 5.43e-05, 5.429e-05, 5.43e-05, 7028.72282983], [1517083140000, 5.43e-05, 5.43e-05, 5.424e-05, 5.424e-05, 11111.58150291], [1517083200000, 5.424e-05, 5.424e-05, 5.398e-05, 5.424e-05, 34653.03619052], [1517083260000, 5.397e-05, 5.421e-05, 5.384e-05, 5.384e-05, 9907.72777464], [1517083320000, 5.41e-05, 5.421e-05, 5.401e-05, 5.421e-05, 7113.40780293], [1517083380000, 5.411e-05, 5.421e-05, 5.4e-05, 5.401e-05, 34923.84788112], [1517083440000, 5.401e-05, 5.419e-05, 5.401e-05, 5.402e-05, 22276.29109868], [1517083500000, 5.419e-05, 5.419e-05, 5.403e-05, 5.404e-05, 32679.38835624], [1517083560000, 5.41e-05, 5.41e-05, 5.396e-05, 5.396e-05, 74282.67421192], [1517083620000, 5.4e-05, 5.413e-05, 5.385e-05, 5.399e-05, 15816.03703076], [1517083680000, 5.399e-05, 5.399e-05, 5.385e-05, 5.386e-05, 16700.96077579], [1517083740000, 5.398e-05, 5.4e-05, 5.397e-05, 5.397e-05, 50980.07304106], [1517083800000, 5.397e-05, 5.397e-05, 5.385e-05, 5.395e-05, 13936.79402326], [1517083860000, 5.394e-05, 5.395e-05, 5.387e-05, 5.394e-05, 48756.83110348], [1517083920000, 5.394e-05, 5.395e-05, 5.383e-05, 5.39e-05, 22557.52265811], [1517083980000, 5.394e-05, 5.394e-05, 5.381e-05, 5.384e-05, 24565.31946796], [1517084040000, 5.393e-05, 5.393e-05, 5.384e-05, 5.393e-05, 8812.44020563], [1517084100000, 5.393e-05, 5.393e-05, 5.38e-05, 5.393e-05, 7806.63410962], [1517084160000, 5.394e-05, 5.394e-05, 5.386e-05, 5.393e-05, 29257.04820723], [1517084220000, 5.393e-05, 5.395e-05, 5.393e-05, 5.393e-05, 31670.30796887], [1517084280000, 5.393e-05, 5.423e-05, 5.393e-05, 5.396e-05, 3553.20135357], [1517084340000, 5.398e-05, 5.418e-05, 5.398e-05, 5.418e-05, 270.39605852], [1517084400000, 5.401e-05, 5.419e-05, 5.4e-05, 5.419e-05, 22763.11953935], [1517084460000, 5.419e-05, 5.423e-05, 5.418e-05, 5.418e-05, 30713.40409513], [1517084520000, 5.4e-05, 5.424e-05, 5.396e-05, 5.399e-05, 3563.64975718], [1517084580000, 5.4e-05, 5.423e-05, 5.4e-05, 5.421e-05, 4014.85524754], [1517084640000, 5.402e-05, 5.415e-05, 5.402e-05, 5.402e-05, 464.01353127], [1517084700000, 5.402e-05, 5.415e-05, 5.402e-05, 5.414e-05, 2007.67899759], [1517084760000, 5.402e-05, 5.413e-05, 5.402e-05, 5.413e-05, 1091.37509666], [1517084820000, 5.413e-05, 5.414e-05, 5.413e-05, 5.413e-05, 9714.66527428], [1517084880000, 5.414e-05, 5.426e-05, 5.414e-05, 5.425e-05, 66611.42919753], [1517084940000, 5.424e-05, 5.424e-05, 5.414e-05, 5.422e-05, 7129.27636519], [1517085000000, 5.422e-05, 5.425e-05, 5.414e-05, 5.414e-05, 20748.82535122], [1517085060000, 5.414e-05, 5.422e-05, 5.402e-05, 5.402e-05, 4303.39130067], [1517085120000, 5.413e-05, 5.413e-05, 5.396e-05, 5.413e-05, 24381.3176916], [1517085180000, 5.413e-05, 5.413e-05, 5.39e-05, 5.404e-05, 5291.8003704], [1517085240000, 5.404e-05, 5.404e-05, 5.403e-05, 5.404e-05, 10296.14644021], [1517085300000, 5.391e-05, 5.391e-05, 5.387e-05, 5.391e-05, 9175.71640647], [1517085360000, 5.391e-05, 5.391e-05, 5.387e-05, 5.387e-05, 9359.79076576], [1517085420000, 5.389e-05, 5.391e-05, 5.389e-05, 5.391e-05, 2198.46252149], [1517085480000, 5.39e-05, 5.391e-05, 5.39e-05, 5.391e-05, 17300.18824743], [1517085540000, 5.391e-05, 5.391e-05, 5.39e-05, 5.391e-05, 5673.71183772], [1517085600000, 5.39e-05, 5.391e-05, 5.39e-05, 5.39e-05, 3974.293528], [1517085660000, 5.39e-05, 5.39e-05, 5.389e-05, 5.389e-05, 5474.63486269], [1517085720000, 5.389e-05, 5.39e-05, 5.389e-05, 5.389e-05, 4290.94153087], [1517085780000, 5.39e-05, 5.39e-05, 5.387e-05, 5.39e-05, 3106.22799979], [1517085840000, 5.39e-05, 5.39e-05, 5.389e-05, 5.39e-05, 5319.18950201], [1517085900000, 5.389e-05, 5.389e-05, 5.389e-05, 5.389e-05, 5862.89686177], [1517085960000, 5.389e-05, 5.389e-05, 5.388e-05, 5.388e-05, 3537.30482486], [1517086020000, 5.388e-05, 5.388e-05, 5.385e-05, 5.385e-05, 12245.83321315], [1517086080000, 5.385e-05, 5.385e-05, 5.383e-05, 5.383e-05, 3414.41302925], [1517086140000, 5.383e-05, 5.383e-05, 5.382e-05, 5.383e-05, 20741.76144569], [1517086200000, 5.384e-05, 5.39e-05, 5.383e-05, 5.39e-05, 11434.48237365], [1517086260000, 5.39e-05, 5.39e-05, 5.383e-05, 5.39e-05, 21659.24632733], [1517086320000, 5.39e-05, 5.39e-05, 5.383e-05, 5.39e-05, 24249.95964738], [1517086380000, 5.383e-05, 5.39e-05, 5.383e-05, 5.384e-05, 5483.75229595], [1517086440000, 5.384e-05, 5.39e-05, 5.384e-05, 5.39e-05, 88908.59179389], [1517086500000, 5.39e-05, 5.391e-05, 5.387e-05, 5.391e-05, 76217.93998615], [1517086560000, 5.387e-05, 5.391e-05, 5.387e-05, 5.39e-05, 17422.5272579], [1517086620000, 5.391e-05, 5.404e-05, 5.39e-05, 5.391e-05, 5498.8386837], [1517086680000, 5.404e-05, 5.404e-05, 5.39e-05, 5.4e-05, 4724.06322277], [1517086740000, 5.4e-05, 5.4e-05, 5.4e-05, 5.4e-05, 2868.53814253], [1517086800000, 5.4e-05, 5.409e-05, 5.4e-05, 5.409e-05, 1544.22771534], [1517086860000, 5.41e-05, 5.429e-05, 5.41e-05, 5.426e-05, 22902.66635355], [1517086920000, 5.429e-05, 5.429e-05, 5.41e-05, 5.415e-05, 1489.00537243], [1517086980000, 5.411e-05, 5.411e-05, 5.41e-05, 5.41e-05, 13049.10815354], [1517087040000, 5.405e-05, 5.405e-05, 5.404e-05, 5.405e-05, 2142.50366369], [1517087100000, 5.406e-05, 5.416e-05, 5.393e-05, 5.416e-05, 15032.82076034], [1517087160000, 5.429e-05, 5.435e-05, 5.412e-05, 5.43e-05, 54681.94101429], [1517087220000, 5.43e-05, 5.435e-05, 5.43e-05, 5.431e-05, 1491.84504511], [1517087280000, 5.435e-05, 5.435e-05, 5.431e-05, 5.431e-05, 33824.56798331], [1517087340000, 5.432e-05, 5.433e-05, 5.431e-05, 5.431e-05, 14913.70122903], [1517087400000, 5.432e-05, 5.432e-05, 5.431e-05, 5.432e-05, 2087.11036991], [1517087460000, 5.431e-05, 5.432e-05, 5.43e-05, 5.431e-05, 18433.44467658], [1517087520000, 5.431e-05, 5.432e-05, 5.431e-05, 5.431e-05, 2285.63125009], [1517087580000, 5.431e-05, 5.432e-05, 5.431e-05, 5.431e-05, 3193.74214076], [1517087640000, 5.431e-05, 5.433e-05, 5.431e-05, 5.432e-05, 16025.66555108], [1517087700000, 5.432e-05, 5.433e-05, 5.43e-05, 5.43e-05, 62629.99646442], [1517087760000, 5.432e-05, 5.432e-05, 5.413e-05, 5.413e-05, 1852.4453954], [1517087820000, 5.413e-05, 5.43e-05, 5.413e-05, 5.43e-05, 3774.51382819], [1517087880000, 5.429e-05, 5.429e-05, 5.424e-05, 5.428e-05, 8777.04465983], [1517087940000, 5.428e-05, 5.428e-05, 5.413e-05, 5.413e-05, 6372.91882377], [1517088000000, 5.424e-05, 5.424e-05, 5.4e-05, 5.413e-05, 24831.75063403], [1517088060000, 5.413e-05, 5.414e-05, 5.4e-05, 5.414e-05, 13011.99177321], [1517088120000, 5.414e-05, 5.426e-05, 5.4e-05, 5.426e-05, 5070.58993265], [1517088180000, 5.426e-05, 5.426e-05, 5.414e-05, 5.414e-05, 1235.58586463], [1517088240000, 5.4e-05, 5.424e-05, 5.394e-05, 5.424e-05, 3022.4831937], [1517088300000, 5.415e-05, 5.423e-05, 5.415e-05, 5.423e-05, 5340.43719639], [1517088360000, 5.423e-05, 5.423e-05, 5.415e-05, 5.423e-05, 486.26696411], [1517088420000, 5.422e-05, 5.423e-05, 5.416e-05, 5.423e-05, 3794.7977482], [1517088480000, 5.423e-05, 5.425e-05, 5.423e-05, 5.425e-05, 19466.56366269], [1517088540000, 5.423e-05, 5.423e-05, 5.423e-05, 5.423e-05, 40.6601512], [1517088600000, 5.423e-05, 5.424e-05, 5.423e-05, 5.424e-05, 781.05087486], [1517088660000, 5.423e-05, 5.424e-05, 5.423e-05, 5.423e-05, 762.91613116], [1517088720000, 5.423e-05, 5.423e-05, 5.423e-05, 5.423e-05, 10557.59434139], [1517088780000, 5.423e-05, 5.424e-05, 5.423e-05, 5.424e-05, 4912.8666046], [1517088840000, 5.424e-05, 5.424e-05, 5.423e-05, 5.423e-05, 25550.63434627], [1517088900000, 5.422e-05, 5.422e-05, 5.414e-05, 5.414e-05, 4013.87313687], [1517088960000, 5.414e-05, 5.422e-05, 5.414e-05, 5.414e-05, 1039.66751787], [1517089020000, 5.414e-05, 5.415e-05, 5.414e-05, 5.414e-05, 9135.06312397], [1517089080000, 5.413e-05, 5.414e-05, 5.41e-05, 5.41e-05, 12528.58357366], [1517089140000, 5.409e-05, 5.41e-05, 5.408e-05, 5.41e-05, 45771.44132683], [1517089200000, 5.41e-05, 5.41e-05, 5.408e-05, 5.409e-05, 36633.36488185], [1517089260000, 5.409e-05, 5.409e-05, 5.401e-05, 5.403e-05, 12144.10595238], [1517089320000, 5.404e-05, 5.41e-05, 5.404e-05, 5.41e-05, 13974.9017836], [1517089380000, 5.41e-05, 5.414e-05, 5.39e-05, 5.414e-05, 9994.49960893], [1517089440000, 5.414e-05, 5.415e-05, 5.413e-05, 5.414e-05, 5034.7364547], [1517089500000, 5.414e-05, 5.415e-05, 5.391e-05, 5.41e-05, 27904.05454232], [1517089560000, 5.415e-05, 5.415e-05, 5.412e-05, 5.412e-05, 2440.88815828], [1517089620000, 5.412e-05, 5.415e-05, 5.412e-05, 5.412e-05, 1027.84888143], [1517089680000, 5.413e-05, 5.426e-05, 5.413e-05, 5.426e-05, 22289.14787434], [1517089740000, 5.413e-05, 5.426e-05, 5.39e-05, 5.426e-05, 13030.02282837], [1517089800000, 5.426e-05, 5.426e-05, 5.397e-05, 5.399e-05, 4073.68415391], [1517089860000, 5.421e-05, 5.421e-05, 5.4e-05, 5.42e-05, 3439.81495387], [1517089920000, 5.4e-05, 5.426e-05, 5.4e-05, 5.421e-05, 5359.46989771], [1517089980000, 5.421e-05, 5.426e-05, 5.402e-05, 5.426e-05, 35039.60013695], [1517090040000, 5.404e-05, 5.424e-05, 5.404e-05, 5.404e-05, 451.0408534], [1517090100000, 5.424e-05, 5.424e-05, 5.404e-05, 5.423e-05, 11232.47976982], [1517090160000, 5.423e-05, 5.423e-05, 5.419e-05, 5.42e-05, 6999.79022491], [1517090220000, 5.42e-05, 5.421e-05, 5.419e-05, 5.419e-05, 5578.63851462], [1517090280000, 5.419e-05, 5.42e-05, 5.419e-05, 5.419e-05, 12880.12762161], [1517090340000, 5.419e-05, 5.419e-05, 5.405e-05, 5.41e-05, 28288.4993393], [1517090400000, 5.41e-05, 5.41e-05, 5.404e-05, 5.406e-05, 4649.11583434], [1517090460000, 5.406e-05, 5.41e-05, 5.405e-05, 5.405e-05, 12726.65530691], [1517090520000, 5.406e-05, 5.418e-05, 5.399e-05, 5.4e-05, 43966.96431595], [1517090580000, 5.4e-05, 5.4e-05, 5.399e-05, 5.399e-05, 26135.73716895], [1517090640000, 5.4e-05, 5.419e-05, 5.4e-05, 5.401e-05, 780.76092111], [1517090700000, 5.401e-05, 5.418e-05, 5.401e-05, 5.401e-05, 1715.87130838], [1517090760000, 5.401e-05, 5.401e-05, 5.399e-05, 5.4e-05, 26106.68415354], [1517090820000, 5.401e-05, 5.417e-05, 5.401e-05, 5.401e-05, 4074.52521729], [1517090880000, 5.401e-05, 5.413e-05, 5.401e-05, 5.401e-05, 13994.98736487], [1517090940000, 5.412e-05, 5.419e-05, 5.399e-05, 5.399e-05, 23082.67311482], [1517091000000, 5.4e-05, 5.401e-05, 5.399e-05, 5.4e-05, 3695.49896246], [1517091060000, 5.401e-05, 5.401e-05, 5.399e-05, 5.399e-05, 14806.05891815], [1517091120000, 5.4e-05, 5.4e-05, 5.389e-05, 5.39e-05, 92448.43371921], [1517091180000, 5.389e-05, 5.391e-05, 5.38e-05, 5.391e-05, 43722.47751276], [1517091240000, 5.391e-05, 5.392e-05, 5.38e-05, 5.381e-05, 31761.36223904], [1517091300000, 5.39e-05, 5.39e-05, 5.381e-05, 5.382e-05, 4756.17158147], [1517091360000, 5.382e-05, 5.39e-05, 5.382e-05, 5.382e-05, 12350.49339663], [1517091420000, 5.389e-05, 5.39e-05, 5.382e-05, 5.382e-05, 15238.69485402], [1517091480000, 5.383e-05, 5.39e-05, 5.382e-05, 5.389e-05, 24280.36170459], [1517091540000, 5.383e-05, 5.385e-05, 5.365e-05, 5.365e-05, 24919.33326525], [1517091600000, 5.365e-05, 5.383e-05, 5.365e-05, 5.383e-05, 872.66297518], [1517091660000, 5.375e-05, 5.385e-05, 5.375e-05, 5.385e-05, 5542.60252267], [1517091720000, 5.383e-05, 5.385e-05, 5.383e-05, 5.385e-05, 12816.55535648], [1517091780000, 5.383e-05, 5.385e-05, 5.375e-05, 5.38e-05, 3457.73772424], [1517091840000, 5.38e-05, 5.382e-05, 5.38e-05, 5.38e-05, 2901.4717655], [1517091900000, 5.381e-05, 5.385e-05, 5.38e-05, 5.381e-05, 5688.87125403], [1517091960000, 5.381e-05, 5.382e-05, 5.377e-05, 5.377e-05, 42146.61759384], [1517092020000, 5.377e-05, 5.384e-05, 5.377e-05, 5.378e-05, 1483.5063153], [1517092080000, 5.378e-05, 5.383e-05, 5.378e-05, 5.383e-05, 8915.45557795], [1517092140000, 5.383e-05, 5.39e-05, 5.375e-05, 5.375e-05, 40409.11791146], [1517092200000, 5.383e-05, 5.383e-05, 5.375e-05, 5.381e-05, 104992.93675598], [1517092260000, 5.381e-05, 5.389e-05, 5.381e-05, 5.383e-05, 5516.68267768], [1517092320000, 5.388e-05, 5.39e-05, 5.383e-05, 5.388e-05, 13549.86654534], [1517092380000, 5.383e-05, 5.389e-05, 5.383e-05, 5.389e-05, 10124.63958471], [1517092440000, 5.382e-05, 5.383e-05, 5.377e-05, 5.382e-05, 21502.95113138], [1517092500000, 5.382e-05, 5.39e-05, 5.377e-05, 5.377e-05, 20036.79271501], [1517092560000, 5.377e-05, 5.389e-05, 5.375e-05, 5.379e-05, 11048.85786117], [1517092620000, 5.38e-05, 5.39e-05, 5.38e-05, 5.39e-05, 23774.61693449], [1517092680000, 5.39e-05, 5.39e-05, 5.386e-05, 5.386e-05, 12290.73009982], [1517092740000, 5.39e-05, 5.397e-05, 5.386e-05, 5.386e-05, 18125.45185218], [1517092800000, 5.38e-05, 5.386e-05, 5.378e-05, 5.378e-05, 4753.13020504], [1517092860000, 5.379e-05, 5.386e-05, 5.378e-05, 5.378e-05, 30653.03661781], [1517092920000, 5.378e-05, 5.38e-05, 5.375e-05, 5.377e-05, 29197.44769467], [1517092980000, 5.377e-05, 5.395e-05, 5.377e-05, 5.385e-05, 9525.56273803], [1517093040000, 5.385e-05, 5.385e-05, 5.37e-05, 5.377e-05, 50576.16181248], [1517093100000, 5.378e-05, 5.394e-05, 5.377e-05, 5.379e-05, 40850.62070458], [1517093160000, 5.379e-05, 5.379e-05, 5.377e-05, 5.379e-05, 68708.05288738], [1517093220000, 5.379e-05, 5.379e-05, 5.379e-05, 5.379e-05, 46906.96385695], [1517093280000, 5.388e-05, 5.388e-05, 5.379e-05, 5.379e-05, 28477.30508548], [1517093340000, 5.379e-05, 5.382e-05, 5.379e-05, 5.38e-05, 29082.00706506], [1517093400000, 5.382e-05, 5.382e-05, 5.38e-05, 5.382e-05, 18675.88510008], [1517093460000, 5.382e-05, 5.385e-05, 5.379e-05, 5.382e-05, 4583.30250545], [1517093520000, 5.382e-05, 5.39e-05, 5.382e-05, 5.384e-05, 25846.83667846], [1517093580000, 5.384e-05, 5.386e-05, 5.382e-05, 5.386e-05, 17600.44940757], [1517093640000, 5.386e-05, 5.39e-05, 5.384e-05, 5.39e-05, 7414.65196926], [1517093700000, 5.394e-05, 5.394e-05, 5.387e-05, 5.394e-05, 6326.16742752], [1517093760000, 5.393e-05, 5.394e-05, 5.378e-05, 5.393e-05, 9261.0125892], [1517093820000, 5.393e-05, 5.393e-05, 5.38e-05, 5.38e-05, 7174.98928201], [1517093880000, 5.38e-05, 5.392e-05, 5.379e-05, 5.382e-05, 10577.57774745], [1517093940000, 5.387e-05, 5.394e-05, 5.384e-05, 5.387e-05, 52424.80250934], [1517094000000, 5.384e-05, 5.396e-05, 5.384e-05, 5.393e-05, 11155.27853606], [1517094060000, 5.393e-05, 5.396e-05, 5.393e-05, 5.394e-05, 5029.4862268], [1517094120000, 5.393e-05, 5.394e-05, 5.393e-05, 5.394e-05, 1075.77065591], [1517094180000, 5.393e-05, 5.395e-05, 5.393e-05, 5.394e-05, 5259.9349273], [1517094240000, 5.395e-05, 5.395e-05, 5.393e-05, 5.394e-05, 19954.00813003], [1517094300000, 5.393e-05, 5.395e-05, 5.393e-05, 5.395e-05, 4370.40846382], [1517094360000, 5.395e-05, 5.398e-05, 5.394e-05, 5.398e-05, 10606.44332265], [1517094420000, 5.398e-05, 5.399e-05, 5.379e-05, 5.391e-05, 25940.23331589], [1517094480000, 5.39e-05, 5.391e-05, 5.385e-05, 5.39e-05, 5350.65058286], [1517094540000, 5.391e-05, 5.391e-05, 5.385e-05, 5.385e-05, 5170.66450538], [1517094600000, 5.385e-05, 5.385e-05, 5.382e-05, 5.382e-05, 24989.64767887], [1517094660000, 5.379e-05, 5.382e-05, 5.367e-05, 5.367e-05, 11975.05496893], [1517094720000, 5.367e-05, 5.382e-05, 5.363e-05, 5.366e-05, 34615.63039183], [1517094780000, 5.366e-05, 5.382e-05, 5.36e-05, 5.366e-05, 68355.08447393], [1517094840000, 5.367e-05, 5.382e-05, 5.35e-05, 5.382e-05, 80316.18639945], [1517094900000, 5.382e-05, 5.382e-05, 5.357e-05, 5.375e-05, 9283.20034834], [1517094960000, 5.377e-05, 5.38e-05, 5.365e-05, 5.366e-05, 21061.88996756], [1517095020000, 5.366e-05, 5.38e-05, 5.365e-05, 5.38e-05, 14964.83014604], [1517095080000, 5.38e-05, 5.382e-05, 5.378e-05, 5.38e-05, 7218.72194186], [1517095140000, 5.382e-05, 5.382e-05, 5.38e-05, 5.381e-05, 1736.09777492], [1517095200000, 5.381e-05, 5.381e-05, 5.367e-05, 5.381e-05, 9711.9995632], [1517095260000, 5.381e-05, 5.381e-05, 5.365e-05, 5.38e-05, 36015.00825204], [1517095320000, 5.379e-05, 5.38e-05, 5.375e-05, 5.376e-05, 9656.89247098], [1517095380000, 5.376e-05, 5.38e-05, 5.376e-05, 5.379e-05, 22407.02010213], [1517095440000, 5.38e-05, 5.38e-05, 5.376e-05, 5.376e-05, 21043.0258085], [1517095500000, 5.379e-05, 5.379e-05, 5.376e-05, 5.378e-05, 6523.48571924], [1517095560000, 5.378e-05, 5.379e-05, 5.378e-05, 5.379e-05, 3414.42175519], [1517095620000, 5.379e-05, 5.38e-05, 5.379e-05, 5.379e-05, 8369.92190906], [1517095680000, 5.379e-05, 5.38e-05, 5.379e-05, 5.38e-05, 4871.61192124], [1517095740000, 5.379e-05, 5.38e-05, 5.379e-05, 5.38e-05, 6307.9462952], [1517095800000, 5.379e-05, 5.38e-05, 5.365e-05, 5.374e-05, 7593.60085317], [1517095860000, 5.37e-05, 5.37e-05, 5.351e-05, 5.37e-05, 29120.29736431], [1517095920000, 5.359e-05, 5.379e-05, 5.359e-05, 5.374e-05, 26456.24622858], [1517095980000, 5.379e-05, 5.379e-05, 5.374e-05, 5.375e-05, 87620.4254915], [1517096040000, 5.374e-05, 5.379e-05, 5.374e-05, 5.375e-05, 58363.16693572], [1517096100000, 5.375e-05, 5.38e-05, 5.374e-05, 5.38e-05, 82563.38535569], [1517096160000, 5.38e-05, 5.382e-05, 5.379e-05, 5.382e-05, 45673.75839541], [1517096220000, 5.382e-05, 5.396e-05, 5.38e-05, 5.395e-05, 2683.87851421], [1517096280000, 5.385e-05, 5.396e-05, 5.383e-05, 5.383e-05, 14819.51004664], [1517096340000, 5.382e-05, 5.383e-05, 5.381e-05, 5.381e-05, 12485.77213169], [1517096400000, 5.381e-05, 5.384e-05, 5.381e-05, 5.382e-05, 5985.90024233], [1517096460000, 5.384e-05, 5.396e-05, 5.383e-05, 5.386e-05, 17987.59262276], [1517096520000, 5.386e-05, 5.386e-05, 5.384e-05, 5.384e-05, 6410.47320251], [1517096580000, 5.396e-05, 5.396e-05, 5.387e-05, 5.396e-05, 12754.59520991], [1517096640000, 5.396e-05, 5.396e-05, 5.383e-05, 5.384e-05, 86537.87215618], [1517096700000, 5.383e-05, 5.384e-05, 5.383e-05, 5.384e-05, 13870.22852133], [1517096760000, 5.384e-05, 5.391e-05, 5.384e-05, 5.388e-05, 5616.8404188], [1517096820000, 5.39e-05, 5.395e-05, 5.389e-05, 5.395e-05, 16939.56130001], [1517096880000, 5.395e-05, 5.396e-05, 5.395e-05, 5.395e-05, 16627.66855865], [1517096940000, 5.396e-05, 5.399e-05, 5.396e-05, 5.396e-05, 17595.82868197], [1517097000000, 5.396e-05, 5.4e-05, 5.395e-05, 5.4e-05, 17522.07101858], [1517097060000, 5.4e-05, 5.4e-05, 5.395e-05, 5.395e-05, 7402.51608914], [1517097120000, 5.395e-05, 5.399e-05, 5.395e-05, 5.396e-05, 259.05725789], [1517097180000, 5.399e-05, 5.399e-05, 5.398e-05, 5.398e-05, 1471.54401911], [1517097240000, 5.399e-05, 5.399e-05, 5.398e-05, 5.399e-05, 4222.47916066], [1517097300000, 5.399e-05, 5.4e-05, 5.395e-05, 5.398e-05, 20659.84422893], [1517097360000, 5.398e-05, 5.399e-05, 5.398e-05, 5.399e-05, 10698.62731583], [1517097420000, 5.401e-05, 5.401e-05, 5.399e-05, 5.399e-05, 15265.07757578], [1517097480000, 5.399e-05, 5.42e-05, 5.395e-05, 5.395e-05, 52395.86953872], [1517097540000, 5.395e-05, 5.419e-05, 5.395e-05, 5.418e-05, 14083.73651192], [1517097600000, 5.418e-05, 5.419e-05, 5.381e-05, 5.381e-05, 10627.70440866], [1517097660000, 5.401e-05, 5.401e-05, 5.379e-05, 5.399e-05, 25182.90359882], [1517097720000, 5.398e-05, 5.398e-05, 5.394e-05, 5.394e-05, 2879.63035381], [1517097780000, 5.394e-05, 5.394e-05, 5.38e-05, 5.388e-05, 7024.73396347], [1517097840000, 5.383e-05, 5.39e-05, 5.381e-05, 5.39e-05, 5793.35535225], [1517097900000, 5.389e-05, 5.389e-05, 5.385e-05, 5.385e-05, 5367.55296708], [1517097960000, 5.385e-05, 5.385e-05, 5.379e-05, 5.379e-05, 2777.77916119], [1517098020000, 5.379e-05, 5.379e-05, 5.364e-05, 5.379e-05, 6351.8077272], [1517098080000, 5.379e-05, 5.379e-05, 5.375e-05, 5.375e-05, 2872.25622839], [1517098140000, 5.375e-05, 5.391e-05, 5.373e-05, 5.39e-05, 21357.557275], [1517098200000, 5.39e-05, 5.398e-05, 5.39e-05, 5.398e-05, 19412.57963675], [1517098260000, 5.398e-05, 5.413e-05, 5.39e-05, 5.39e-05, 18542.62845282], [1517098320000, 5.388e-05, 5.412e-05, 5.388e-05, 5.411e-05, 13999.2153261], [1517098380000, 5.394e-05, 5.411e-05, 5.392e-05, 5.392e-05, 1855.41578352], [1517098440000, 5.392e-05, 5.402e-05, 5.392e-05, 5.402e-05, 4656.09828536], [1517098500000, 5.402e-05, 5.402e-05, 5.393e-05, 5.393e-05, 1580.15645301], [1517098560000, 5.393e-05, 5.402e-05, 5.392e-05, 5.392e-05, 2923.44516528], [1517098620000, 5.392e-05, 5.392e-05, 5.379e-05, 5.379e-05, 8706.45078829], [1517098680000, 5.379e-05, 5.379e-05, 5.376e-05, 5.376e-05, 4306.0936029], [1517098740000, 5.375e-05, 5.379e-05, 5.373e-05, 5.373e-05, 12748.47208341], [1517098800000, 5.373e-05, 5.392e-05, 5.368e-05, 5.392e-05, 10760.31371625], [1517098860000, 5.39e-05, 5.392e-05, 5.362e-05, 5.39e-05, 3197.26083639], [1517098920000, 5.363e-05, 5.39e-05, 5.363e-05, 5.365e-05, 1218.80134536], [1517098980000, 5.368e-05, 5.388e-05, 5.364e-05, 5.388e-05, 18574.7132535], [1517099040000, 5.369e-05, 5.388e-05, 5.368e-05, 5.368e-05, 6243.83793407], [1517099100000, 5.368e-05, 5.39e-05, 5.364e-05, 5.39e-05, 7838.71837712], [1517099160000, 5.388e-05, 5.388e-05, 5.366e-05, 5.385e-05, 2389.97807684], [1517099220000, 5.376e-05, 5.376e-05, 5.371e-05, 5.376e-05, 7251.4611738], [1517099280000, 5.371e-05, 5.385e-05, 5.371e-05, 5.385e-05, 7022.62878585], [1517099340000, 5.384e-05, 5.384e-05, 5.375e-05, 5.375e-05, 621.82618907], [1517099400000, 5.372e-05, 5.372e-05, 5.371e-05, 5.371e-05, 15381.19528416], [1517099460000, 5.371e-05, 5.388e-05, 5.37e-05, 5.388e-05, 4862.05736675], [1517099520000, 5.387e-05, 5.387e-05, 5.372e-05, 5.372e-05, 510.75650465], [1517099580000, 5.372e-05, 5.372e-05, 5.366e-05, 5.366e-05, 19609.09905775], [1517099640000, 5.367e-05, 5.367e-05, 5.366e-05, 5.367e-05, 8432.97100748], [1517099700000, 5.367e-05, 5.387e-05, 5.367e-05, 5.387e-05, 11123.415957], [1517099760000, 5.387e-05, 5.388e-05, 5.377e-05, 5.388e-05, 1958.83985175], [1517099820000, 5.386e-05, 5.387e-05, 5.377e-05, 5.377e-05, 6281.59833019], [1517099880000, 5.377e-05, 5.387e-05, 5.377e-05, 5.377e-05, 7362.39273971], [1517099940000, 5.377e-05, 5.377e-05, 5.377e-05, 5.377e-05, 2300.65122548], [1517100000000, 5.377e-05, 5.387e-05, 5.377e-05, 5.377e-05, 10630.42641231], [1517100060000, 5.378e-05, 5.386e-05, 5.377e-05, 5.386e-05, 50802.84005018], [1517100120000, 5.378e-05, 5.378e-05, 5.364e-05, 5.364e-05, 33944.34815113], [1517100180000, 5.382e-05, 5.382e-05, 5.362e-05, 5.365e-05, 1513.91623401], [1517100240000, 5.366e-05, 5.366e-05, 5.361e-05, 5.361e-05, 8683.42246032], [1517100300000, 5.36e-05, 5.36e-05, 5.353e-05, 5.353e-05, 8890.19236753], [1517100360000, 5.354e-05, 5.365e-05, 5.354e-05, 5.365e-05, 16424.92493626], [1517100420000, 5.364e-05, 5.366e-05, 5.354e-05, 5.366e-05, 11290.75603727], [1517100480000, 5.366e-05, 5.366e-05, 5.354e-05, 5.354e-05, 7698.08883343], [1517100540000, 5.354e-05, 5.354e-05, 5.352e-05, 5.354e-05, 30834.0023248], [1517100600000, 5.354e-05, 5.366e-05, 5.354e-05, 5.366e-05, 36663.88808549], [1517100660000, 5.366e-05, 5.382e-05, 5.357e-05, 5.357e-05, 17702.00122459], [1517100720000, 5.36e-05, 5.377e-05, 5.36e-05, 5.377e-05, 18798.88326914], [1517100780000, 5.377e-05, 5.381e-05, 5.377e-05, 5.381e-05, 8860.03557449], [1517100840000, 5.377e-05, 5.381e-05, 5.377e-05, 5.381e-05, 1168.39985304], [1517100900000, 5.378e-05, 5.381e-05, 5.377e-05, 5.38e-05, 21450.70943995], [1517100960000, 5.38e-05, 5.381e-05, 5.377e-05, 5.38e-05, 10437.38169404], [1517101020000, 5.38e-05, 5.38e-05, 5.377e-05, 5.377e-05, 12756.91900315], [1517101080000, 5.377e-05, 5.38e-05, 5.377e-05, 5.38e-05, 12733.22224113], [1517101140000, 5.38e-05, 5.38e-05, 5.38e-05, 5.38e-05, 2111.89909616], [1517101200000, 5.38e-05, 5.38e-05, 5.377e-05, 5.38e-05, 49567.08814522], [1517101260000, 5.377e-05, 5.38e-05, 5.377e-05, 5.38e-05, 12752.03144622], [1517101320000, 5.378e-05, 5.378e-05, 5.377e-05, 5.378e-05, 4696.54921471], [1517101380000, 5.378e-05, 5.379e-05, 5.377e-05, 5.377e-05, 6843.19995385], [1517101440000, 5.377e-05, 5.379e-05, 5.377e-05, 5.377e-05, 6867.89978669], [1517101500000, 5.377e-05, 5.377e-05, 5.377e-05, 5.377e-05, 9371.32499265], [1517101560000, 5.377e-05, 5.378e-05, 5.377e-05, 5.378e-05, 2438.17185852], [1517101620000, 5.378e-05, 5.379e-05, 5.377e-05, 5.377e-05, 2854.06752282], [1517101680000, 5.377e-05, 5.377e-05, 5.377e-05, 5.377e-05, 1071.85028416], [1517101740000, 5.378e-05, 5.379e-05, 5.378e-05, 5.379e-05, 1227.30352235], [1517101800000, 5.379e-05, 5.379e-05, 5.378e-05, 5.379e-05, 7451.58828153], [1517101860000, 5.379e-05, 5.379e-05, 5.377e-05, 5.377e-05, 16713.8326806], [1517101920000, 5.377e-05, 5.379e-05, 5.377e-05, 5.379e-05, 5202.45783278], [1517101980000, 5.377e-05, 5.381e-05, 5.377e-05, 5.381e-05, 22531.29940611], [1517102040000, 5.381e-05, 5.381e-05, 5.377e-05, 5.377e-05, 5066.83105407], [1517102100000, 5.377e-05, 5.381e-05, 5.377e-05, 5.377e-05, 2320.87240266], [1517102160000, 5.377e-05, 5.381e-05, 5.377e-05, 5.377e-05, 7441.58077911], [1517102220000, 5.377e-05, 5.38e-05, 5.377e-05, 5.377e-05, 5522.42270207], [1517102280000, 5.37e-05, 5.37e-05, 5.37e-05, 5.37e-05, 283.91794783], [1517102340000, 5.37e-05, 5.377e-05, 5.37e-05, 5.37e-05, 458.87042222], [1517102400000, 5.377e-05, 5.377e-05, 5.37e-05, 5.37e-05, 3770.55760232], [1517102460000, 5.371e-05, 5.381e-05, 5.37e-05, 5.381e-05, 12038.37507187], [1517102520000, 5.377e-05, 5.381e-05, 5.377e-05, 5.381e-05, 9917.17053709], [1517102580000, 5.377e-05, 5.377e-05, 5.37e-05, 5.37e-05, 6997.30542471], [1517102640000, 5.37e-05, 5.377e-05, 5.358e-05, 5.358e-05, 44957.23250822], [1517102700000, 5.359e-05, 5.359e-05, 5.358e-05, 5.358e-05, 617.88724478], [1517102760000, 5.358e-05, 5.364e-05, 5.355e-05, 5.364e-05, 25147.87723433], [1517102820000, 5.358e-05, 5.364e-05, 5.35e-05, 5.35e-05, 20529.23258327], [1517102880000, 5.352e-05, 5.358e-05, 5.34e-05, 5.358e-05, 76005.8688851], [1517102940000, 5.358e-05, 5.358e-05, 5.35e-05, 5.35e-05, 49818.81127203], [1517103000000, 5.352e-05, 5.358e-05, 5.352e-05, 5.353e-05, 15315.06842649], [1517103060000, 5.356e-05, 5.358e-05, 5.352e-05, 5.358e-05, 52429.12895941], [1517103120000, 5.359e-05, 5.365e-05, 5.359e-05, 5.363e-05, 9011.21175734], [1517103180000, 5.363e-05, 5.369e-05, 5.36e-05, 5.369e-05, 12973.06637378], [1517103240000, 5.36e-05, 5.369e-05, 5.36e-05, 5.369e-05, 4191.5871535], [1517103300000, 5.369e-05, 5.369e-05, 5.361e-05, 5.369e-05, 901.76502342], [1517103360000, 5.369e-05, 5.369e-05, 5.361e-05, 5.361e-05, 3794.59757546], [1517103420000, 5.361e-05, 5.363e-05, 5.361e-05, 5.362e-05, 3244.50799355], [1517103480000, 5.362e-05, 5.369e-05, 5.362e-05, 5.365e-05, 7681.70921695], [1517103540000, 5.365e-05, 5.369e-05, 5.365e-05, 5.369e-05, 5462.32222657], [1517103600000, 5.369e-05, 5.369e-05, 5.369e-05, 5.369e-05, 768.08832824], [1517103660000, 5.369e-05, 5.369e-05, 5.365e-05, 5.366e-05, 5104.06294231], [1517103720000, 5.366e-05, 5.366e-05, 5.365e-05, 5.366e-05, 3234.3617026], [1517103780000, 5.365e-05, 5.365e-05, 5.365e-05, 5.365e-05, 405.3908884], [1517103840000, 5.366e-05, 5.366e-05, 5.365e-05, 5.365e-05, 5066.56317098], [1517103900000, 5.365e-05, 5.366e-05, 5.365e-05, 5.366e-05, 695.76985603], [1517103960000, 5.366e-05, 5.366e-05, 5.364e-05, 5.364e-05, 2970.45723854], [1517104020000, 5.365e-05, 5.365e-05, 5.364e-05, 5.365e-05, 940.54799086], [1517104080000, 5.365e-05, 5.365e-05, 5.363e-05, 5.363e-05, 4907.5934701], [1517104140000, 5.364e-05, 5.364e-05, 5.363e-05, 5.364e-05, 1602.73613678], [1517104200000, 5.363e-05, 5.363e-05, 5.362e-05, 5.362e-05, 10268.69893853], [1517104260000, 5.361e-05, 5.361e-05, 5.361e-05, 5.361e-05, 2308.45271757], [1517104320000, 5.361e-05, 5.362e-05, 5.361e-05, 5.361e-05, 11558.91859594], [1517104380000, 5.362e-05, 5.362e-05, 5.361e-05, 5.361e-05, 1551.04845394], [1517104440000, 5.361e-05, 5.361e-05, 5.361e-05, 5.361e-05, 9701.57050992], [1517104500000, 5.362e-05, 5.362e-05, 5.361e-05, 5.361e-05, 13422.93984642], [1517104560000, 5.361e-05, 5.361e-05, 5.361e-05, 5.361e-05, 1863.46205593], [1517104620000, 5.362e-05, 5.362e-05, 5.361e-05, 5.361e-05, 2591.48694979], [1517104680000, 5.361e-05, 5.362e-05, 5.361e-05, 5.362e-05, 13266.40932123], [1517104740000, 5.361e-05, 5.362e-05, 5.361e-05, 5.361e-05, 5320.42032446], [1517104800000, 5.362e-05, 5.362e-05, 5.362e-05, 5.362e-05, 299.50173781], [1517104860000, 5.361e-05, 5.361e-05, 5.361e-05, 5.361e-05, 21678.76346468], [1517104920000, 5.35e-05, 5.362e-05, 5.34e-05, 5.362e-05, 11995.4373831], [1517104980000, 5.362e-05, 5.364e-05, 5.35e-05, 5.35e-05, 17781.61051794], [1517105040000, 5.365e-05, 5.365e-05, 5.35e-05, 5.354e-05, 2672.95525251], [1517105100000, 5.354e-05, 5.354e-05, 5.35e-05, 5.354e-05, 1171.94663904], [1517105160000, 5.35e-05, 5.351e-05, 5.348e-05, 5.351e-05, 2672.81868497], [1517105220000, 5.351e-05, 5.364e-05, 5.34e-05, 5.351e-05, 12577.85173303], [1517105280000, 5.357e-05, 5.364e-05, 5.351e-05, 5.36e-05, 1698.25572684], [1517105340000, 5.35e-05, 5.36e-05, 5.35e-05, 5.357e-05, 30675.73613229], [1517105400000, 5.351e-05, 5.357e-05, 5.34e-05, 5.356e-05, 4593.10657922], [1517105460000, 5.356e-05, 5.357e-05, 5.35e-05, 5.356e-05, 17602.55428745], [1517105520000, 5.356e-05, 5.356e-05, 5.352e-05, 5.352e-05, 6658.86113086], [1517105580000, 5.356e-05, 5.357e-05, 5.352e-05, 5.352e-05, 3161.71196018], [1517105640000, 5.356e-05, 5.356e-05, 5.352e-05, 5.356e-05, 9645.13095913], [1517105700000, 5.356e-05, 5.364e-05, 5.352e-05, 5.36e-05, 6587.63286034], [1517105760000, 5.355e-05, 5.36e-05, 5.351e-05, 5.351e-05, 40994.92373306], [1517105820000, 5.352e-05, 5.364e-05, 5.351e-05, 5.353e-05, 5307.98091613], [1517105880000, 5.354e-05, 5.364e-05, 5.354e-05, 5.364e-05, 3916.25191147], [1517105940000, 5.355e-05, 5.363e-05, 5.353e-05, 5.363e-05, 24972.44416782], [1517106000000, 5.359e-05, 5.359e-05, 5.356e-05, 5.356e-05, 742.17719377], [1517106060000, 5.359e-05, 5.362e-05, 5.356e-05, 5.362e-05, 4728.44511729], [1517106120000, 5.362e-05, 5.363e-05, 5.361e-05, 5.361e-05, 5360.19834339], [1517106180000, 5.356e-05, 5.356e-05, 5.356e-05, 5.356e-05, 4051.42775269], [1517106240000, 5.36e-05, 5.363e-05, 5.36e-05, 5.361e-05, 2811.04345996], [1517106300000, 5.361e-05, 5.363e-05, 5.361e-05, 5.363e-05, 9651.64212748], [1517106360000, 5.363e-05, 5.363e-05, 5.361e-05, 5.363e-05, 3884.47286412], [1517106420000, 5.363e-05, 5.364e-05, 5.363e-05, 5.364e-05, 52390.31808974], [1517106480000, 5.364e-05, 5.364e-05, 5.363e-05, 5.364e-05, 17012.40878751], [1517106540000, 5.364e-05, 5.365e-05, 5.364e-05, 5.365e-05, 7384.02721167], [1517106600000, 5.381e-05, 5.381e-05, 5.365e-05, 5.381e-05, 429.87596046], [1517106660000, 5.381e-05, 5.385e-05, 5.381e-05, 5.385e-05, 10218.07079632], [1517106720000, 5.387e-05, 5.387e-05, 5.381e-05, 5.385e-05, 23113.30044246], [1517106780000, 5.385e-05, 5.394e-05, 5.385e-05, 5.394e-05, 13415.40646653], [1517106840000, 5.385e-05, 5.385e-05, 5.381e-05, 5.385e-05, 517.63640651], [1517106900000, 5.394e-05, 5.394e-05, 5.386e-05, 5.393e-05, 994.54578899], [1517106960000, 5.393e-05, 5.393e-05, 5.386e-05, 5.387e-05, 15888.62196612], [1517107020000, 5.387e-05, 5.387e-05, 5.385e-05, 5.385e-05, 8229.58418367], [1517107080000, 5.384e-05, 5.398e-05, 5.384e-05, 5.39e-05, 15632.14614397], [1517107140000, 5.39e-05, 5.39e-05, 5.386e-05, 5.386e-05, 12709.58190447], [1517107200000, 5.39e-05, 5.39e-05, 5.386e-05, 5.386e-05, 6709.88374602], [1517107260000, 5.386e-05, 5.397e-05, 5.386e-05, 5.396e-05, 2167.47077498], [1517107320000, 5.396e-05, 5.396e-05, 5.387e-05, 5.396e-05, 5297.51230552], [1517107380000, 5.387e-05, 5.387e-05, 5.386e-05, 5.387e-05, 37886.88957752], [1517107440000, 5.387e-05, 5.387e-05, 5.386e-05, 5.387e-05, 11550.61847829], [1517107500000, 5.387e-05, 5.396e-05, 5.387e-05, 5.387e-05, 5654.55344064], [1517107560000, 5.386e-05, 5.387e-05, 5.386e-05, 5.386e-05, 4602.79035058], [1517107620000, 5.386e-05, 5.396e-05, 5.386e-05, 5.396e-05, 5819.84798822], [1517107680000, 5.387e-05, 5.396e-05, 5.387e-05, 5.396e-05, 5948.28366081], [1517107740000, 5.396e-05, 5.399e-05, 5.387e-05, 5.387e-05, 19486.40744012], [1517107800000, 5.388e-05, 5.388e-05, 5.387e-05, 5.387e-05, 25081.46525503], [1517107860000, 5.387e-05, 5.396e-05, 5.387e-05, 5.396e-05, 14839.08944535], [1517107920000, 5.387e-05, 5.394e-05, 5.386e-05, 5.386e-05, 13505.5666326], [1517107980000, 5.386e-05, 5.386e-05, 5.385e-05, 5.386e-05, 47748.61073236], [1517108040000, 5.385e-05, 5.386e-05, 5.385e-05, 5.385e-05, 15278.50475195], [1517108100000, 5.385e-05, 5.386e-05, 5.385e-05, 5.385e-05, 31621.33696745], [1517108160000, 5.386e-05, 5.394e-05, 5.385e-05, 5.386e-05, 24707.90478451], [1517108220000, 5.386e-05, 5.387e-05, 5.381e-05, 5.381e-05, 42662.11365444], [1517108280000, 5.381e-05, 5.381e-05, 5.369e-05, 5.369e-05, 6073.28393626], [1517108340000, 5.369e-05, 5.375e-05, 5.364e-05, 5.364e-05, 550.20271582], [1517108400000, 5.367e-05, 5.373e-05, 5.364e-05, 5.364e-05, 6179.6809071], [1517108460000, 5.367e-05, 5.367e-05, 5.364e-05, 5.366e-05, 12040.93682785], [1517108520000, 5.366e-05, 5.366e-05, 5.318e-05, 5.358e-05, 36521.69068096], [1517108580000, 5.327e-05, 5.358e-05, 5.318e-05, 5.33e-05, 12244.58810148], [1517108640000, 5.33e-05, 5.356e-05, 5.33e-05, 5.356e-05, 9601.03552375], [1517108700000, 5.336e-05, 5.336e-05, 5.335e-05, 5.336e-05, 1543.276495], [1517108760000, 5.34e-05, 5.35e-05, 5.34e-05, 5.342e-05, 2534.7776005], [1517108820000, 5.342e-05, 5.349e-05, 5.342e-05, 5.349e-05, 6988.35771508], [1517108880000, 5.349e-05, 5.35e-05, 5.341e-05, 5.35e-05, 31019.8813293], [1517108940000, 5.35e-05, 5.35e-05, 5.349e-05, 5.35e-05, 48125.25041207], [1517109000000, 5.35e-05, 5.35e-05, 5.35e-05, 5.35e-05, 1091.04213427], [1517109060000, 5.35e-05, 5.35e-05, 5.349e-05, 5.349e-05, 372.74215825], [1517109120000, 5.348e-05, 5.348e-05, 5.348e-05, 5.348e-05, 2133.85749458], [1517109180000, 5.347e-05, 5.347e-05, 5.346e-05, 5.347e-05, 2762.71373269], [1517109240000, 5.336e-05, 5.347e-05, 5.336e-05, 5.346e-05, 9432.17891481], [1517109300000, 5.337e-05, 5.346e-05, 5.336e-05, 5.336e-05, 10875.92186437], [1517109360000, 5.346e-05, 5.358e-05, 5.336e-05, 5.345e-05, 22959.2806699], [1517109420000, 5.345e-05, 5.345e-05, 5.345e-05, 5.345e-05, 124.97732852], [1517109480000, 5.345e-05, 5.345e-05, 5.345e-05, 5.345e-05, 5896.96189548], [1517109540000, 5.34e-05, 5.345e-05, 5.34e-05, 5.34e-05, 24154.4375116], [1517109600000, 5.34e-05, 5.34e-05, 5.34e-05, 5.34e-05, 12.0], [1517109660000, 5.34e-05, 5.34e-05, 5.336e-05, 5.336e-05, 2594.27790858], [1517109720000, 5.338e-05, 5.355e-05, 5.338e-05, 5.355e-05, 44510.91398626], [1517109780000, 5.355e-05, 5.358e-05, 5.355e-05, 5.355e-05, 17573.91883169], [1517109840000, 5.355e-05, 5.355e-05, 5.355e-05, 5.355e-05, 3590.31671687], [1517109900000, 5.345e-05, 5.355e-05, 5.317e-05, 5.318e-05, 15554.75928847], [1517109960000, 5.323e-05, 5.323e-05, 5.323e-05, 5.323e-05, 144.61077153], [1517110020000, 5.35e-05, 5.355e-05, 5.331e-05, 5.355e-05, 4773.64565831], [1517110080000, 5.349e-05, 5.355e-05, 5.349e-05, 5.355e-05, 28182.64282208], [1517110140000, 5.355e-05, 5.355e-05, 5.335e-05, 5.337e-05, 15416.41208012], [1517110200000, 5.35e-05, 5.358e-05, 5.35e-05, 5.358e-05, 8789.18390407], [1517110260000, 5.348e-05, 5.349e-05, 5.348e-05, 5.349e-05, 488.52608886], [1517110320000, 5.35e-05, 5.358e-05, 5.349e-05, 5.358e-05, 4914.27484094], [1517110380000, 5.357e-05, 5.357e-05, 5.357e-05, 5.357e-05, 2109.795479], [1517110440000, 5.357e-05, 5.357e-05, 5.357e-05, 5.357e-05, 14805.92359349], [1517110500000, 5.357e-05, 5.357e-05, 5.348e-05, 5.357e-05, 5246.55194455], [1517110560000, 5.357e-05, 5.357e-05, 5.311e-05, 5.332e-05, 73879.46283009], [1517110620000, 5.332e-05, 5.348e-05, 5.332e-05, 5.348e-05, 609.90768068], [1517110680000, 5.348e-05, 5.348e-05, 5.333e-05, 5.348e-05, 4044.52475829], [1517110740000, 5.348e-05, 5.348e-05, 5.333e-05, 5.345e-05, 1767.40146851], [1517110800000, 5.345e-05, 5.345e-05, 5.333e-05, 5.345e-05, 10068.68460209], [1517110860000, 5.336e-05, 5.345e-05, 5.336e-05, 5.344e-05, 8213.5660562], [1517110920000, 5.338e-05, 5.344e-05, 5.338e-05, 5.343e-05, 7716.00264251], [1517110980000, 5.343e-05, 5.343e-05, 5.337e-05, 5.337e-05, 4049.04309826], [1517111040000, 5.341e-05, 5.345e-05, 5.325e-05, 5.344e-05, 23539.89990136], [1517111100000, 5.328e-05, 5.345e-05, 5.312e-05, 5.312e-05, 111715.08436953], [1517111160000, 5.342e-05, 5.342e-05, 5.329e-05, 5.342e-05, 3625.92260653], [1517111220000, 5.331e-05, 5.342e-05, 5.331e-05, 5.342e-05, 10975.3431269], [1517111280000, 5.342e-05, 5.342e-05, 5.332e-05, 5.341e-05, 1603.42189376], [1517111340000, 5.341e-05, 5.342e-05, 5.341e-05, 5.341e-05, 7581.56929485], [1517111400000, 5.341e-05, 5.342e-05, 5.341e-05, 5.342e-05, 20896.46355966], [1517111460000, 5.333e-05, 5.345e-05, 5.332e-05, 5.334e-05, 47325.60659979], [1517111520000, 5.335e-05, 5.343e-05, 5.335e-05, 5.343e-05, 6080.61009055], [1517111580000, 5.345e-05, 5.345e-05, 5.343e-05, 5.343e-05, 1533.16760192], [1517111640000, 5.344e-05, 5.344e-05, 5.343e-05, 5.343e-05, 100.9288213], [1517111700000, 5.344e-05, 5.345e-05, 5.343e-05, 5.345e-05, 5724.40543444], [1517111760000, 5.345e-05, 5.345e-05, 5.344e-05, 5.345e-05, 1013.30794915], [1517111820000, 5.344e-05, 5.345e-05, 5.324e-05, 5.345e-05, 10766.42067555], [1517111880000, 5.335e-05, 5.345e-05, 5.334e-05, 5.344e-05, 11143.0806017], [1517111940000, 5.345e-05, 5.345e-05, 5.345e-05, 5.345e-05, 95.76174702], [1517112000000, 5.344e-05, 5.345e-05, 5.3e-05, 5.345e-05, 170569.83026], [1517112060000, 5.343e-05, 5.343e-05, 5.33e-05, 5.33e-05, 9503.77918633], [1517112120000, 5.342e-05, 5.342e-05, 5.342e-05, 5.342e-05, 396.932479], [1517112180000, 5.341e-05, 5.341e-05, 5.308e-05, 5.335e-05, 30785.77598081], [1517112240000, 5.335e-05, 5.335e-05, 5.308e-05, 5.335e-05, 1849.34056877], [1517112300000, 5.335e-05, 5.335e-05, 5.334e-05, 5.334e-05, 340.41324639], [1517112360000, 5.315e-05, 5.334e-05, 5.315e-05, 5.334e-05, 1537.50142065], [1517112420000, 5.333e-05, 5.333e-05, 5.322e-05, 5.329e-05, 2577.03042419], [1517112480000, 5.333e-05, 5.335e-05, 5.333e-05, 5.334e-05, 8003.59260411], [1517112540000, 5.334e-05, 5.341e-05, 5.333e-05, 5.341e-05, 3020.99274328], [1517112600000, 5.34e-05, 5.341e-05, 5.34e-05, 5.341e-05, 923.57535156], [1517112660000, 5.341e-05, 5.341e-05, 5.34e-05, 5.34e-05, 331.44928842], [1517112720000, 5.34e-05, 5.341e-05, 5.34e-05, 5.341e-05, 9267.11513404], [1517112780000, 5.34e-05, 5.34e-05, 5.335e-05, 5.34e-05, 3710.4071611], [1517112840000, 5.34e-05, 5.342e-05, 5.329e-05, 5.329e-05, 36034.74333969], [1517112900000, 5.323e-05, 5.33e-05, 5.307e-05, 5.315e-05, 4239.32638629], [1517112960000, 5.326e-05, 5.327e-05, 5.301e-05, 5.327e-05, 50653.41253613], [1517113020000, 5.305e-05, 5.329e-05, 5.3e-05, 5.3e-05, 67448.09490177], [1517113080000, 5.3e-05, 5.326e-05, 5.292e-05, 5.299e-05, 39972.57470149], [1517113140000, 5.327e-05, 5.327e-05, 5.292e-05, 5.31e-05, 31977.36425587], [1517113200000, 5.326e-05, 5.33e-05, 5.294e-05, 5.294e-05, 142512.32111812], [1517113260000, 5.291e-05, 5.324e-05, 5.288e-05, 5.289e-05, 71949.96588412], [1517113320000, 5.293e-05, 5.321e-05, 5.289e-05, 5.289e-05, 6730.87431222], [1517113380000, 5.291e-05, 5.32e-05, 5.289e-05, 5.296e-05, 74949.34770054], [1517113440000, 5.318e-05, 5.319e-05, 5.296e-05, 5.319e-05, 658.72019327], [1517113500000, 5.301e-05, 5.319e-05, 5.27e-05, 5.319e-05, 72904.16849244], [1517113560000, 5.316e-05, 5.316e-05, 5.295e-05, 5.298e-05, 16195.08770947], [1517113620000, 5.298e-05, 5.307e-05, 5.274e-05, 5.3e-05, 33125.80712869], [1517113680000, 5.3e-05, 5.306e-05, 5.284e-05, 5.303e-05, 149039.03195297], [1517113740000, 5.298e-05, 5.304e-05, 5.289e-05, 5.293e-05, 84945.07813028], [1517113800000, 5.293e-05, 5.302e-05, 5.285e-05, 5.285e-05, 56929.15363053], [1517113860000, 5.298e-05, 5.299e-05, 5.271e-05, 5.294e-05, 98383.85299858], [1517113920000, 5.292e-05, 5.292e-05, 5.275e-05, 5.275e-05, 33519.40395092], [1517113980000, 5.29e-05, 5.303e-05, 5.276e-05, 5.281e-05, 14347.96469577], [1517114040000, 5.282e-05, 5.296e-05, 5.277e-05, 5.278e-05, 30635.47215566], [1517114100000, 5.295e-05, 5.295e-05, 5.28e-05, 5.289e-05, 24707.00073262], [1517114160000, 5.284e-05, 5.301e-05, 5.283e-05, 5.283e-05, 35720.20918766], [1517114220000, 5.287e-05, 5.296e-05, 5.287e-05, 5.287e-05, 32719.86201131], [1517114280000, 5.287e-05, 5.297e-05, 5.286e-05, 5.292e-05, 68682.09609721], [1517114340000, 5.292e-05, 5.3e-05, 5.287e-05, 5.3e-05, 1467.48814621], [1517114400000, 5.3e-05, 5.3e-05, 5.287e-05, 5.3e-05, 5392.46921275], [1517114460000, 5.3e-05, 5.301e-05, 5.289e-05, 5.291e-05, 12088.48466536], [1517114520000, 5.292e-05, 5.301e-05, 5.291e-05, 5.301e-05, 42764.4586785], [1517114580000, 5.301e-05, 5.301e-05, 5.258e-05, 5.298e-05, 40911.61656887], [1517114640000, 5.261e-05, 5.298e-05, 5.261e-05, 5.274e-05, 3890.41531395], [1517114700000, 5.279e-05, 5.3e-05, 5.279e-05, 5.284e-05, 19570.69231562], [1517114760000, 5.284e-05, 5.3e-05, 5.284e-05, 5.291e-05, 38933.1670012], [1517114820000, 5.29e-05, 5.291e-05, 5.288e-05, 5.288e-05, 9473.11605435], [1517114880000, 5.288e-05, 5.29e-05, 5.276e-05, 5.276e-05, 20761.6436113], [1517114940000, 5.276e-05, 5.276e-05, 5.262e-05, 5.275e-05, 66525.89360936], [1517115000000, 5.275e-05, 5.282e-05, 5.26e-05, 5.274e-05, 147461.68169339], [1517115060000, 5.275e-05, 5.28e-05, 5.258e-05, 5.28e-05, 10131.12879002], [1517115120000, 5.279e-05, 5.28e-05, 5.274e-05, 5.28e-05, 6522.27865297], [1517115180000, 5.279e-05, 5.279e-05, 5.274e-05, 5.276e-05, 16819.21385081], [1517115240000, 5.278e-05, 5.278e-05, 5.274e-05, 5.276e-05, 13325.29420682], [1517115300000, 5.277e-05, 5.299e-05, 5.276e-05, 5.278e-05, 67280.57133055], [1517115360000, 5.278e-05, 5.299e-05, 5.274e-05, 5.296e-05, 41314.34446815], [1517115420000, 5.296e-05, 5.296e-05, 5.26e-05, 5.292e-05, 47054.45969738], [1517115480000, 5.269e-05, 5.292e-05, 5.257e-05, 5.28e-05, 34627.33977198], [1517115540000, 5.28e-05, 5.296e-05, 5.27e-05, 5.286e-05, 43640.19710749], [1517115600000, 5.286e-05, 5.296e-05, 5.28e-05, 5.286e-05, 18202.34374383], [1517115660000, 5.286e-05, 5.286e-05, 5.28e-05, 5.28e-05, 9707.30193082], [1517115720000, 5.28e-05, 5.287e-05, 5.27e-05, 5.27e-05, 7391.63384577], [1517115780000, 5.28e-05, 5.281e-05, 5.27e-05, 5.28e-05, 24937.80995009], [1517115840000, 5.281e-05, 5.292e-05, 5.28e-05, 5.292e-05, 18985.48767891], [1517115900000, 5.28e-05, 5.281e-05, 5.271e-05, 5.271e-05, 15442.23323666], [1517115960000, 5.271e-05, 5.281e-05, 5.271e-05, 5.281e-05, 1862.73835215], [1517116020000, 5.273e-05, 5.29e-05, 5.273e-05, 5.278e-05, 17302.0297416], [1517116080000, 5.28e-05, 5.292e-05, 5.28e-05, 5.28e-05, 52543.68824737], [1517116140000, 5.277e-05, 5.28e-05, 5.277e-05, 5.277e-05, 32091.02344955], [1517116200000, 5.272e-05, 5.277e-05, 5.261e-05, 5.273e-05, 16904.67473095], [1517116260000, 5.276e-05, 5.281e-05, 5.273e-05, 5.279e-05, 117486.62605962], [1517116320000, 5.279e-05, 5.289e-05, 5.278e-05, 5.289e-05, 40170.27352367], [1517116380000, 5.279e-05, 5.287e-05, 5.265e-05, 5.273e-05, 25006.59727154], [1517116440000, 5.274e-05, 5.29e-05, 5.274e-05, 5.277e-05, 95154.39407332], [1517116500000, 5.277e-05, 5.278e-05, 5.275e-05, 5.275e-05, 32590.08068601], [1517116560000, 5.275e-05, 5.275e-05, 5.264e-05, 5.275e-05, 53255.8952803], [1517116620000, 5.276e-05, 5.29e-05, 5.276e-05, 5.28e-05, 68320.84148085], [1517116680000, 5.281e-05, 5.281e-05, 5.272e-05, 5.272e-05, 16868.65367065], [1517116740000, 5.267e-05, 5.272e-05, 5.267e-05, 5.267e-05, 43344.1742872], [1517116800000, 5.267e-05, 5.268e-05, 5.259e-05, 5.264e-05, 16711.80679895], [1517116860000, 5.26e-05, 5.264e-05, 5.255e-05, 5.257e-05, 51580.12683889], [1517116920000, 5.257e-05, 5.263e-05, 5.22e-05, 5.254e-05, 191400.69345614], [1517116980000, 5.254e-05, 5.255e-05, 5.24e-05, 5.25e-05, 27239.30726517], [1517117040000, 5.252e-05, 5.259e-05, 5.252e-05, 5.258e-05, 99725.92266575], [1517117100000, 5.261e-05, 5.263e-05, 5.255e-05, 5.255e-05, 43802.81313999], [1517117160000, 5.255e-05, 5.26e-05, 5.237e-05, 5.237e-05, 95779.12924974], [1517117220000, 5.26e-05, 5.26e-05, 5.252e-05, 5.253e-05, 33407.51610189], [1517117280000, 5.252e-05, 5.255e-05, 5.24e-05, 5.242e-05, 45580.96083421], [1517117340000, 5.25e-05, 5.25e-05, 5.23e-05, 5.231e-05, 27824.55310705], [1517117400000, 5.231e-05, 5.249e-05, 5.231e-05, 5.249e-05, 84884.30848531], [1517117460000, 5.245e-05, 5.249e-05, 5.232e-05, 5.249e-05, 23103.12152571], [1517117520000, 5.249e-05, 5.249e-05, 5.232e-05, 5.248e-05, 24429.32042351], [1517117580000, 5.248e-05, 5.264e-05, 5.248e-05, 5.248e-05, 41835.3583093], [1517117640000, 5.25e-05, 5.28e-05, 5.25e-05, 5.251e-05, 11699.52931249], [1517117700000, 5.278e-05, 5.289e-05, 5.251e-05, 5.262e-05, 6008.52797634], [1517117760000, 5.262e-05, 5.283e-05, 5.262e-05, 5.262e-05, 14130.60577351], [1517117820000, 5.262e-05, 5.277e-05, 5.258e-05, 5.276e-05, 28080.13261474], [1517117880000, 5.258e-05, 5.258e-05, 5.252e-05, 5.252e-05, 31385.1072749], [1517117940000, 5.25e-05, 5.252e-05, 5.22e-05, 5.233e-05, 26324.46388091], [1517118000000, 5.25e-05, 5.271e-05, 5.237e-05, 5.25e-05, 17362.25985732], [1517118060000, 5.25e-05, 5.271e-05, 5.246e-05, 5.252e-05, 15089.47820439], [1517118120000, 5.26e-05, 5.26e-05, 5.253e-05, 5.254e-05, 4691.63032718], [1517118180000, 5.259e-05, 5.271e-05, 5.254e-05, 5.254e-05, 8893.72072465], [1517118240000, 5.254e-05, 5.271e-05, 5.254e-05, 5.271e-05, 10656.26180878], [1517118300000, 5.271e-05, 5.271e-05, 5.256e-05, 5.26e-05, 3144.32363129], [1517118360000, 5.26e-05, 5.265e-05, 5.257e-05, 5.265e-05, 7757.75054637], [1517118420000, 5.271e-05, 5.271e-05, 5.253e-05, 5.265e-05, 4914.12906095], [1517118480000, 5.265e-05, 5.265e-05, 5.254e-05, 5.254e-05, 1306.76655112], [1517118540000, 5.264e-05, 5.264e-05, 5.255e-05, 5.264e-05, 12142.55803173], [1517118600000, 5.265e-05, 5.271e-05, 5.265e-05, 5.271e-05, 4011.48549969], [1517118660000, 5.271e-05, 5.287e-05, 5.271e-05, 5.272e-05, 9479.58399015], [1517118720000, 5.287e-05, 5.287e-05, 5.271e-05, 5.271e-05, 16023.46870896], [1517118780000, 5.27e-05, 5.271e-05, 5.27e-05, 5.27e-05, 7315.15796728], [1517118840000, 5.271e-05, 5.287e-05, 5.271e-05, 5.285e-05, 5802.94959532], [1517118900000, 5.275e-05, 5.287e-05, 5.271e-05, 5.287e-05, 102243.98809287], [1517118960000, 5.272e-05, 5.287e-05, 5.272e-05, 5.279e-05, 10173.82682611], [1517119020000, 5.279e-05, 5.29e-05, 5.279e-05, 5.284e-05, 3527.7862213], [1517119080000, 5.284e-05, 5.29e-05, 5.279e-05, 5.279e-05, 15813.87232118], [1517119140000, 5.284e-05, 5.289e-05, 5.273e-05, 5.289e-05, 11101.25043002], [1517119200000, 5.289e-05, 5.289e-05, 5.289e-05, 5.289e-05, 249.09802732], [1517119260000, 5.275e-05, 5.289e-05, 5.275e-05, 5.287e-05, 51006.75974119], [1517119320000, 5.275e-05, 5.289e-05, 5.275e-05, 5.28e-05, 2373.63797511], [1517119380000, 5.289e-05, 5.289e-05, 5.28e-05, 5.28e-05, 3828.1527015], [1517119440000, 5.28e-05, 5.281e-05, 5.276e-05, 5.276e-05, 3948.16438394], [1517119500000, 5.276e-05, 5.276e-05, 5.271e-05, 5.271e-05, 17484.84987122], [1517119560000, 5.271e-05, 5.271e-05, 5.264e-05, 5.269e-05, 25961.40855313], [1517119620000, 5.264e-05, 5.279e-05, 5.264e-05, 5.27e-05, 14766.46634344], [1517119680000, 5.27e-05, 5.275e-05, 5.25e-05, 5.25e-05, 40643.49053865], [1517119740000, 5.25e-05, 5.25e-05, 5.241e-05, 5.245e-05, 38643.25348401], [1517119800000, 5.24e-05, 5.245e-05, 5.24e-05, 5.245e-05, 2366.68291514], [1517119860000, 5.244e-05, 5.245e-05, 5.22e-05, 5.245e-05, 92353.15073801], [1517119920000, 5.245e-05, 5.25e-05, 5.227e-05, 5.231e-05, 13409.04733886], [1517119980000, 5.231e-05, 5.245e-05, 5.228e-05, 5.228e-05, 9785.92102119], [1517120040000, 5.235e-05, 5.235e-05, 5.23e-05, 5.235e-05, 14375.43192069], [1517120100000, 5.234e-05, 5.235e-05, 5.234e-05, 5.234e-05, 2564.19724381], [1517120160000, 5.235e-05, 5.24e-05, 5.235e-05, 5.24e-05, 18843.92146567], [1517120220000, 5.239e-05, 5.269e-05, 5.239e-05, 5.265e-05, 16481.08400715], [1517120280000, 5.268e-05, 5.268e-05, 5.234e-05, 5.234e-05, 27189.07053398], [1517120340000, 5.234e-05, 5.235e-05, 5.227e-05, 5.235e-05, 67077.98737662], [1517120400000, 5.235e-05, 5.245e-05, 5.231e-05, 5.235e-05, 40522.00900963], [1517120460000, 5.234e-05, 5.235e-05, 5.231e-05, 5.231e-05, 37694.72228347], [1517120520000, 5.231e-05, 5.235e-05, 5.22e-05, 5.235e-05, 31661.52096474], [1517120580000, 5.235e-05, 5.243e-05, 5.22e-05, 5.238e-05, 21364.17217394], [1517120640000, 5.238e-05, 5.238e-05, 5.221e-05, 5.221e-05, 4196.39590848], [1517120700000, 5.232e-05, 5.234e-05, 5.218e-05, 5.221e-05, 19280.2806876], [1517120760000, 5.221e-05, 5.233e-05, 5.221e-05, 5.225e-05, 42388.79928185], [1517120820000, 5.227e-05, 5.23e-05, 5.226e-05, 5.229e-05, 64636.67589915], [1517120880000, 5.23e-05, 5.23e-05, 5.216e-05, 5.216e-05, 17600.59711998], [1517120940000, 5.216e-05, 5.226e-05, 5.216e-05, 5.226e-05, 9308.0531935], [1517121000000, 5.225e-05, 5.228e-05, 5.225e-05, 5.228e-05, 5664.71061075], [1517121060000, 5.228e-05, 5.228e-05, 5.228e-05, 5.228e-05, 1272.83681137], [1517121120000, 5.228e-05, 5.228e-05, 5.217e-05, 5.22e-05, 6444.07814426], [1517121180000, 5.228e-05, 5.232e-05, 5.222e-05, 5.232e-05, 13760.94965791], [1517121240000, 5.23e-05, 5.232e-05, 5.218e-05, 5.232e-05, 7475.99145522], [1517121300000, 5.231e-05, 5.231e-05, 5.219e-05, 5.219e-05, 2896.24262643], [1517121360000, 5.219e-05, 5.23e-05, 5.217e-05, 5.22e-05, 4636.35207529], [1517121420000, 5.219e-05, 5.219e-05, 5.212e-05, 5.213e-05, 56040.28822945], [1517121480000, 5.213e-05, 5.215e-05, 5.211e-05, 5.211e-05, 93453.94327618], [1517121540000, 5.212e-05, 5.216e-05, 5.205e-05, 5.205e-05, 106892.92483512], [1517121600000, 5.205e-05, 5.215e-05, 5.197e-05, 5.21e-05, 472771.86518561], [1517121660000, 5.209e-05, 5.215e-05, 5.202e-05, 5.215e-05, 147510.53405645], [1517121720000, 5.215e-05, 5.215e-05, 5.202e-05, 5.214e-05, 111532.22129027], [1517121780000, 5.214e-05, 5.218e-05, 5.208e-05, 5.218e-05, 131720.86413216], [1517121840000, 5.218e-05, 5.23e-05, 5.207e-05, 5.207e-05, 20598.2727667], [1517121900000, 5.23e-05, 5.23e-05, 5.201e-05, 5.201e-05, 28520.08512343], [1517121960000, 5.202e-05, 5.229e-05, 5.194e-05, 5.203e-05, 51247.79035058], [1517122020000, 5.204e-05, 5.208e-05, 5.195e-05, 5.195e-05, 110303.35479703], [1517122080000, 5.198e-05, 5.207e-05, 5.183e-05, 5.187e-05, 158021.60461826], [1517122140000, 5.187e-05, 5.195e-05, 5.187e-05, 5.19e-05, 23927.14020498], [1517122200000, 5.19e-05, 5.207e-05, 5.19e-05, 5.203e-05, 163890.61233946], [1517122260000, 5.204e-05, 5.222e-05, 5.204e-05, 5.221e-05, 34995.30745081], [1517122320000, 5.222e-05, 5.222e-05, 5.211e-05, 5.221e-05, 30843.94347463], [1517122380000, 5.212e-05, 5.22e-05, 5.211e-05, 5.22e-05, 11427.57891145], [1517122440000, 5.211e-05, 5.22e-05, 5.211e-05, 5.211e-05, 5942.99726203], [1517122500000, 5.211e-05, 5.22e-05, 5.211e-05, 5.212e-05, 12551.15811525], [1517122560000, 5.219e-05, 5.22e-05, 5.219e-05, 5.22e-05, 4352.99740828], [1517122620000, 5.212e-05, 5.212e-05, 5.201e-05, 5.212e-05, 71980.47078217], [1517122680000, 5.212e-05, 5.22e-05, 5.212e-05, 5.219e-05, 30071.76927449], [1517122740000, 5.219e-05, 5.22e-05, 5.213e-05, 5.213e-05, 9054.07372681], [1517122800000, 5.213e-05, 5.22e-05, 5.212e-05, 5.213e-05, 26001.48599601], [1517122860000, 5.212e-05, 5.213e-05, 5.212e-05, 5.212e-05, 21380.98719426], [1517122920000, 5.213e-05, 5.213e-05, 5.207e-05, 5.212e-05, 30357.80762752], [1517122980000, 5.21e-05, 5.212e-05, 5.208e-05, 5.208e-05, 5158.04774526], [1517123040000, 5.208e-05, 5.208e-05, 5.2e-05, 5.2e-05, 22958.36422862], [1517123100000, 5.204e-05, 5.204e-05, 5.2e-05, 5.2e-05, 4724.43745053], [1517123160000, 5.2e-05, 5.2e-05, 5.2e-05, 5.2e-05, 1826.56319362], [1517123220000, 5.2e-05, 5.2e-05, 5.197e-05, 5.197e-05, 10034.37722645], [1517123280000, 5.197e-05, 5.197e-05, 5.188e-05, 5.188e-05, 1799.89116025], [1517123340000, 5.188e-05, 5.204e-05, 5.188e-05, 5.204e-05, 16107.08930888], [1517123400000, 5.21e-05, 5.221e-05, 5.21e-05, 5.221e-05, 8959.73059495], [1517123460000, 5.221e-05, 5.229e-05, 5.221e-05, 5.221e-05, 3354.50543406], [1517123520000, 5.229e-05, 5.23e-05, 5.221e-05, 5.229e-05, 4762.18063934], [1517123580000, 5.212e-05, 5.23e-05, 5.212e-05, 5.23e-05, 3512.74247286], [1517123640000, 5.229e-05, 5.23e-05, 5.229e-05, 5.23e-05, 6269.95967359], [1517123700000, 5.23e-05, 5.23e-05, 5.229e-05, 5.229e-05, 7918.80659723], [1517123760000, 5.229e-05, 5.238e-05, 5.229e-05, 5.238e-05, 40048.74985017], [1517123820000, 5.23e-05, 5.238e-05, 5.229e-05, 5.229e-05, 40229.47189312], [1517123880000, 5.23e-05, 5.238e-05, 5.229e-05, 5.23e-05, 15268.34262809], [1517123940000, 5.23e-05, 5.23e-05, 5.229e-05, 5.229e-05, 26347.40069455], [1517124000000, 5.229e-05, 5.236e-05, 5.229e-05, 5.229e-05, 35293.22457347], [1517124060000, 5.229e-05, 5.236e-05, 5.229e-05, 5.229e-05, 28349.76695142], [1517124120000, 5.229e-05, 5.236e-05, 5.201e-05, 5.202e-05, 49945.17162009], [1517124180000, 5.202e-05, 5.215e-05, 5.202e-05, 5.215e-05, 28655.06987123], [1517124240000, 5.201e-05, 5.215e-05, 5.201e-05, 5.215e-05, 2619.95073711], [1517124300000, 5.215e-05, 5.215e-05, 5.208e-05, 5.214e-05, 1379.85644854], [1517124360000, 5.21e-05, 5.215e-05, 5.202e-05, 5.214e-05, 15564.66113462], [1517124420000, 5.215e-05, 5.215e-05, 5.208e-05, 5.215e-05, 6622.57297355], [1517124480000, 5.208e-05, 5.215e-05, 5.208e-05, 5.209e-05, 10205.50910488], [1517124540000, 5.209e-05, 5.215e-05, 5.203e-05, 5.208e-05, 15601.67907766], [1517124600000, 5.214e-05, 5.214e-05, 5.2e-05, 5.2e-05, 29668.98255195], [1517124660000, 5.207e-05, 5.207e-05, 5.2e-05, 5.2e-05, 3010.66916992], [1517124720000, 5.2e-05, 5.206e-05, 5.185e-05, 5.206e-05, 6122.74371305], [1517124780000, 5.206e-05, 5.206e-05, 5.192e-05, 5.206e-05, 7661.87863014], [1517124840000, 5.206e-05, 5.206e-05, 5.206e-05, 5.206e-05, 1750.58770566], [1517124900000, 5.206e-05, 5.207e-05, 5.197e-05, 5.197e-05, 9964.42854473], [1517124960000, 5.198e-05, 5.198e-05, 5.198e-05, 5.198e-05, 10563.61806076], [1517125020000, 5.206e-05, 5.208e-05, 5.177e-05, 5.187e-05, 104746.32377022], [1517125080000, 5.2e-05, 5.2e-05, 5.196e-05, 5.196e-05, 7000.26656668], [1517125140000, 5.2e-05, 5.208e-05, 5.197e-05, 5.197e-05, 48103.67931297], [1517125200000, 5.208e-05, 5.208e-05, 5.207e-05, 5.207e-05, 2447.41985439], [1517125260000, 5.2e-05, 5.225e-05, 5.2e-05, 5.225e-05, 21939.48095938], [1517125320000, 5.225e-05, 5.227e-05, 5.225e-05, 5.225e-05, 7412.87137613], [1517125380000, 5.225e-05, 5.227e-05, 5.216e-05, 5.227e-05, 17253.25718367], [1517125440000, 5.229e-05, 5.237e-05, 5.227e-05, 5.237e-05, 5279.15700422], [1517125500000, 5.237e-05, 5.245e-05, 5.229e-05, 5.242e-05, 56781.79810682], [1517125560000, 5.242e-05, 5.252e-05, 5.24e-05, 5.25e-05, 7961.02118719], [1517125620000, 5.25e-05, 5.271e-05, 5.25e-05, 5.263e-05, 91723.37460348], [1517125680000, 5.263e-05, 5.271e-05, 5.25e-05, 5.25e-05, 74468.25629016], [1517125740000, 5.265e-05, 5.291e-05, 5.252e-05, 5.291e-05, 106134.17509905], [1517125800000, 5.287e-05, 5.287e-05, 5.255e-05, 5.265e-05, 10132.94710088], [1517125860000, 5.265e-05, 5.265e-05, 5.254e-05, 5.263e-05, 32900.82275539], [1517125920000, 5.263e-05, 5.264e-05, 5.256e-05, 5.264e-05, 18370.09339878], [1517125980000, 5.257e-05, 5.29e-05, 5.257e-05, 5.29e-05, 3660.00625541], [1517126040000, 5.284e-05, 5.284e-05, 5.259e-05, 5.259e-05, 7919.30849134], [1517126100000, 5.265e-05, 5.27e-05, 5.265e-05, 5.269e-05, 2417.34767691], [1517126160000, 5.268e-05, 5.268e-05, 5.257e-05, 5.268e-05, 99627.82829766], [1517126220000, 5.265e-05, 5.269e-05, 5.265e-05, 5.269e-05, 55559.67152289], [1517126280000, 5.266e-05, 5.285e-05, 5.257e-05, 5.261e-05, 58413.813718], [1517126340000, 5.27e-05, 5.27e-05, 5.263e-05, 5.265e-05, 25927.20232284], [1517126400000, 5.264e-05, 5.264e-05, 5.26e-05, 5.26e-05, 89198.83076443], [1517126460000, 5.265e-05, 5.275e-05, 5.26e-05, 5.271e-05, 70351.38659534], [1517126520000, 5.27e-05, 5.27e-05, 5.269e-05, 5.269e-05, 1612.41549429], [1517126580000, 5.267e-05, 5.267e-05, 5.265e-05, 5.266e-05, 17115.69019052], [1517126640000, 5.266e-05, 5.266e-05, 5.26e-05, 5.26e-05, 26118.90188985], [1517126700000, 5.26e-05, 5.269e-05, 5.26e-05, 5.269e-05, 43318.28054149], [1517126760000, 5.269e-05, 5.27e-05, 5.26e-05, 5.27e-05, 6824.82463739], [1517126820000, 5.269e-05, 5.271e-05, 5.263e-05, 5.268e-05, 36163.81660657], [1517126880000, 5.265e-05, 5.268e-05, 5.26e-05, 5.265e-05, 35085.05910539], [1517126940000, 5.267e-05, 5.267e-05, 5.26e-05, 5.266e-05, 13690.22023355], [1517127000000, 5.265e-05, 5.266e-05, 5.265e-05, 5.265e-05, 8110.43605201], [1517127060000, 5.265e-05, 5.265e-05, 5.26e-05, 5.26e-05, 4185.47952774], [1517127120000, 5.26e-05, 5.264e-05, 5.26e-05, 5.262e-05, 1615.8871278], [1517127180000, 5.26e-05, 5.261e-05, 5.259e-05, 5.261e-05, 5194.11167561], [1517127240000, 5.261e-05, 5.261e-05, 5.257e-05, 5.257e-05, 5584.4513312], [1517127300000, 5.256e-05, 5.257e-05, 5.197e-05, 5.214e-05, 276602.33207668], [1517127360000, 5.25e-05, 5.256e-05, 5.25e-05, 5.25e-05, 2995.77905939], [1517127420000, 5.251e-05, 5.257e-05, 5.221e-05, 5.257e-05, 68163.02740135], [1517127480000, 5.257e-05, 5.259e-05, 5.25e-05, 5.259e-05, 8146.86057116], [1517127540000, 5.259e-05, 5.259e-05, 5.25e-05, 5.25e-05, 544.83221724], [1517127600000, 5.259e-05, 5.259e-05, 5.25e-05, 5.25e-05, 399.6450213], [1517127660000, 5.258e-05, 5.258e-05, 5.25e-05, 5.25e-05, 10955.37710486], [1517127720000, 5.25e-05, 5.25e-05, 5.229e-05, 5.229e-05, 2285.35752263], [1517127780000, 5.228e-05, 5.25e-05, 5.228e-05, 5.25e-05, 14018.36364503], [1517127840000, 5.228e-05, 5.25e-05, 5.226e-05, 5.25e-05, 13749.19504534], [1517127900000, 5.25e-05, 5.25e-05, 5.226e-05, 5.226e-05, 25146.51677231], [1517127960000, 5.244e-05, 5.244e-05, 5.227e-05, 5.228e-05, 2181.84140268], [1517128020000, 5.244e-05, 5.25e-05, 5.227e-05, 5.229e-05, 22557.69869348], [1517128080000, 5.23e-05, 5.249e-05, 5.23e-05, 5.249e-05, 472.49529147], [1517128140000, 5.231e-05, 5.236e-05, 5.231e-05, 5.236e-05, 350.86346511], [1517128200000, 5.237e-05, 5.247e-05, 5.237e-05, 5.239e-05, 6728.80838383], [1517128260000, 5.245e-05, 5.255e-05, 5.245e-05, 5.254e-05, 50858.33283744], [1517128320000, 5.254e-05, 5.256e-05, 5.254e-05, 5.255e-05, 10448.09072647], [1517128380000, 5.255e-05, 5.256e-05, 5.255e-05, 5.256e-05, 7891.33718551], [1517128440000, 5.256e-05, 5.259e-05, 5.256e-05, 5.258e-05, 3142.64767785], [1517128500000, 5.258e-05, 5.263e-05, 5.256e-05, 5.256e-05, 15824.12350164], [1517128560000, 5.258e-05, 5.258e-05, 5.256e-05, 5.256e-05, 316.03505506], [1517128620000, 5.256e-05, 5.256e-05, 5.256e-05, 5.256e-05, 13094.55342959], [1517128680000, 5.258e-05, 5.258e-05, 5.251e-05, 5.251e-05, 1009.67999221], [1517128740000, 5.258e-05, 5.258e-05, 5.258e-05, 5.258e-05, 314.07078595], [1517128800000, 5.253e-05, 5.253e-05, 5.233e-05, 5.253e-05, 9556.17207805], [1517128860000, 5.253e-05, 5.253e-05, 5.253e-05, 5.253e-05, 694.31171927], [1517128920000, 5.253e-05, 5.253e-05, 5.237e-05, 5.237e-05, 1962.89345512], [1517128980000, 5.237e-05, 5.25e-05, 5.237e-05, 5.237e-05, 586.07145269], [1517129040000, 5.237e-05, 5.258e-05, 5.237e-05, 5.253e-05, 10895.98955362], [1517129100000, 5.253e-05, 5.258e-05, 5.233e-05, 5.243e-05, 10887.13523281], [1517129160000, 5.243e-05, 5.245e-05, 5.23e-05, 5.23e-05, 8491.32841307], [1517129220000, 5.232e-05, 5.251e-05, 5.232e-05, 5.233e-05, 3196.18275465], [1517129280000, 5.25e-05, 5.25e-05, 5.233e-05, 5.233e-05, 5016.98743513], [1517129340000, 5.23e-05, 5.23e-05, 5.226e-05, 5.229e-05, 17838.87443191], [1517129400000, 5.226e-05, 5.226e-05, 5.223e-05, 5.223e-05, 18314.70817417], [1517129460000, 5.226e-05, 5.256e-05, 5.223e-05, 5.247e-05, 24211.36441087], [1517129520000, 5.24e-05, 5.24e-05, 5.221e-05, 5.221e-05, 943.53509294], [1517129580000, 5.221e-05, 5.221e-05, 5.221e-05, 5.221e-05, 7177.67977848], [1517129640000, 5.221e-05, 5.232e-05, 5.214e-05, 5.214e-05, 17702.06031133], [1517129700000, 5.214e-05, 5.223e-05, 5.213e-05, 5.214e-05, 11258.79323528], [1517129760000, 5.223e-05, 5.232e-05, 5.223e-05, 5.232e-05, 816.30076387], [1517129820000, 5.224e-05, 5.23e-05, 5.224e-05, 5.23e-05, 548.36675043], [1517129880000, 5.23e-05, 5.232e-05, 5.229e-05, 5.232e-05, 12360.12181591], [1517129940000, 5.229e-05, 5.232e-05, 5.229e-05, 5.23e-05, 2068.34123333], [1517130000000, 5.23e-05, 5.23e-05, 5.227e-05, 5.227e-05, 2288.09568867], [1517130060000, 5.23e-05, 5.23e-05, 5.223e-05, 5.23e-05, 1748.27455134], [1517130120000, 5.23e-05, 5.232e-05, 5.23e-05, 5.232e-05, 1875.18936625], [1517130180000, 5.232e-05, 5.235e-05, 5.23e-05, 5.233e-05, 6676.5302217], [1517130240000, 5.233e-05, 5.25e-05, 5.233e-05, 5.25e-05, 3852.4236597], [1517130300000, 5.233e-05, 5.235e-05, 5.233e-05, 5.235e-05, 22205.59196948], [1517130360000, 5.245e-05, 5.25e-05, 5.236e-05, 5.25e-05, 2104.88004117], [1517130420000, 5.25e-05, 5.258e-05, 5.239e-05, 5.25e-05, 8088.50606352], [1517130480000, 5.25e-05, 5.258e-05, 5.239e-05, 5.258e-05, 9805.42957678], [1517130540000, 5.258e-05, 5.258e-05, 5.258e-05, 5.258e-05, 259.74270354], [1517130600000, 5.258e-05, 5.258e-05, 5.25e-05, 5.25e-05, 1286.67859068], [1517130660000, 5.253e-05, 5.258e-05, 5.253e-05, 5.253e-05, 1487.5615561], [1517130720000, 5.258e-05, 5.263e-05, 5.258e-05, 5.258e-05, 7397.39570777], [1517130780000, 5.258e-05, 5.258e-05, 5.253e-05, 5.254e-05, 9147.45218386], [1517130840000, 5.254e-05, 5.254e-05, 5.24e-05, 5.254e-05, 15060.28065673], [1517130900000, 5.254e-05, 5.254e-05, 5.24e-05, 5.24e-05, 1393.75814407], [1517130960000, 5.243e-05, 5.254e-05, 5.243e-05, 5.245e-05, 3338.40638022], [1517131020000, 5.245e-05, 5.254e-05, 5.245e-05, 5.254e-05, 1548.39687411], [1517131080000, 5.254e-05, 5.254e-05, 5.254e-05, 5.254e-05, 498.75], [1517131140000, 5.245e-05, 5.254e-05, 5.245e-05, 5.254e-05, 1730.09120811], [1517131200000, 5.246e-05, 5.246e-05, 5.246e-05, 5.246e-05, 315.0], [1517131260000, 5.254e-05, 5.254e-05, 5.247e-05, 5.254e-05, 1676.69914298], [1517131320000, 5.25e-05, 5.263e-05, 5.25e-05, 5.263e-05, 8012.05240219], [1517131440000, 5.262e-05, 5.263e-05, 5.262e-05, 5.263e-05, 1672.3250476], [1517131500000, 5.256e-05, 5.263e-05, 5.253e-05, 5.253e-05, 12369.94026918], [1517131560000, 5.263e-05, 5.27e-05, 5.253e-05, 5.263e-05, 2867.21661225], [1517131620000, 5.263e-05, 5.263e-05, 5.263e-05, 5.263e-05, 5393.25525148], [1517131680000, 5.255e-05, 5.263e-05, 5.25e-05, 5.263e-05, 2931.62174831], [1517131740000, 5.263e-05, 5.263e-05, 5.251e-05, 5.251e-05, 1562.09940382], [1517131800000, 5.263e-05, 5.272e-05, 5.251e-05, 5.272e-05, 12181.59602858], [1517131860000, 5.264e-05, 5.264e-05, 5.264e-05, 5.264e-05, 8440.71045382], [1517131920000, 5.263e-05, 5.263e-05, 5.263e-05, 5.263e-05, 12457.8985132], [1517131980000, 5.263e-05, 5.264e-05, 5.263e-05, 5.264e-05, 7206.29560886], [1517132040000, 5.264e-05, 5.289e-05, 5.264e-05, 5.285e-05, 5137.41607049], [1517132160000, 5.284e-05, 5.284e-05, 5.27e-05, 5.27e-05, 2840.47809964], [1517132220000, 5.269e-05, 5.269e-05, 5.264e-05, 5.264e-05, 10307.84775684], [1517132280000, 5.267e-05, 5.268e-05, 5.265e-05, 5.267e-05, 9205.93646943], [1517132340000, 5.267e-05, 5.27e-05, 5.267e-05, 5.27e-05, 359.05057424], [1517132400000, 5.27e-05, 5.27e-05, 5.267e-05, 5.267e-05, 6257.34458001], [1517132460000, 5.267e-05, 5.27e-05, 5.267e-05, 5.267e-05, 8475.55389604], [1517132520000, 5.27e-05, 5.27e-05, 5.27e-05, 5.27e-05, 228.33417421], [1517132580000, 5.28e-05, 5.285e-05, 5.28e-05, 5.284e-05, 27783.91276209], [1517132640000, 5.28e-05, 5.284e-05, 5.267e-05, 5.267e-05, 29927.14337636], [1517132700000, 5.27e-05, 5.28e-05, 5.27e-05, 5.271e-05, 2796.06041532], [1517132760000, 5.271e-05, 5.272e-05, 5.27e-05, 5.27e-05, 29192.39907941], [1517132820000, 5.28e-05, 5.28e-05, 5.27e-05, 5.27e-05, 6550.3579605], [1517132880000, 5.27e-05, 5.27e-05, 5.267e-05, 5.267e-05, 10849.06989044], [1517132940000, 5.267e-05, 5.275e-05, 5.265e-05, 5.275e-05, 18985.14906761], [1517133000000, 5.265e-05, 5.27e-05, 5.265e-05, 5.27e-05, 3487.81641098], [1517133060000, 5.27e-05, 5.27e-05, 5.263e-05, 5.263e-05, 19626.73655636], [1517133120000, 5.263e-05, 5.27e-05, 5.263e-05, 5.263e-05, 23187.9459286], [1517133180000, 5.263e-05, 5.266e-05, 5.263e-05, 5.263e-05, 2326.42854851], [1517133240000, 5.263e-05, 5.269e-05, 5.263e-05, 5.269e-05, 4503.69339863], [1517133300000, 5.269e-05, 5.269e-05, 5.263e-05, 5.263e-05, 13849.69614001], [1517133360000, 5.264e-05, 5.264e-05, 5.263e-05, 5.263e-05, 27026.54065711], [1517133420000, 5.263e-05, 5.263e-05, 5.263e-05, 5.263e-05, 9598.9084452], [1517133480000, 5.263e-05, 5.265e-05, 5.263e-05, 5.265e-05, 193.39089342], [1517133540000, 5.263e-05, 5.265e-05, 5.259e-05, 5.259e-05, 6106.3689038], [1517133600000, 5.258e-05, 5.258e-05, 5.235e-05, 5.235e-05, 9626.25098454], [1517133660000, 5.236e-05, 5.236e-05, 5.234e-05, 5.235e-05, 12903.30165858], [1517133720000, 5.235e-05, 5.235e-05, 5.231e-05, 5.231e-05, 20030.35228013], [1517133780000, 5.231e-05, 5.259e-05, 5.231e-05, 5.259e-05, 13901.73865665], [1517133840000, 5.259e-05, 5.259e-05, 5.237e-05, 5.246e-05, 8819.76337507], [1517133900000, 5.257e-05, 5.257e-05, 5.246e-05, 5.246e-05, 6742.65783129], [1517133960000, 5.246e-05, 5.246e-05, 5.238e-05, 5.238e-05, 1642.17222493], [1517134020000, 5.238e-05, 5.244e-05, 5.238e-05, 5.244e-05, 2203.60200599], [1517134080000, 5.244e-05, 5.244e-05, 5.237e-05, 5.237e-05, 4864.01215877], [1517134140000, 5.237e-05, 5.244e-05, 5.237e-05, 5.237e-05, 6957.86775413], [1517134200000, 5.237e-05, 5.239e-05, 5.237e-05, 5.238e-05, 1150.71753524], [1517134260000, 5.238e-05, 5.238e-05, 5.235e-05, 5.235e-05, 7682.86792228], [1517134320000, 5.237e-05, 5.237e-05, 5.227e-05, 5.227e-05, 7308.39627888], [1517134380000, 5.227e-05, 5.227e-05, 5.214e-05, 5.214e-05, 4521.87225803], [1517134440000, 5.216e-05, 5.216e-05, 5.201e-05, 5.212e-05, 12619.73225196], [1517134500000, 5.212e-05, 5.212e-05, 5.2e-05, 5.202e-05, 14638.01448553], [1517134560000, 5.202e-05, 5.207e-05, 5.2e-05, 5.2e-05, 11687.14752264], [1517134620000, 5.201e-05, 5.201e-05, 5.182e-05, 5.182e-05, 27743.80028204], [1517134680000, 5.182e-05, 5.191e-05, 5.182e-05, 5.191e-05, 48481.54668678], [1517134740000, 5.19e-05, 5.201e-05, 5.185e-05, 5.2e-05, 20638.48217026], [1517134800000, 5.2e-05, 5.202e-05, 5.193e-05, 5.202e-05, 5815.95764371], [1517134860000, 5.2e-05, 5.2e-05, 5.17e-05, 5.19e-05, 56636.81886012], [1517134920000, 5.19e-05, 5.2e-05, 5.172e-05, 5.2e-05, 7559.81973285], [1517134980000, 5.179e-05, 5.2e-05, 5.164e-05, 5.164e-05, 52412.74110765], [1517135040000, 5.188e-05, 5.199e-05, 5.154e-05, 5.188e-05, 46073.80324844], [1517135100000, 5.187e-05, 5.19e-05, 5.174e-05, 5.19e-05, 31718.60199946], [1517135160000, 5.19e-05, 5.191e-05, 5.19e-05, 5.19e-05, 18723.68303081], [1517135220000, 5.182e-05, 5.196e-05, 5.178e-05, 5.196e-05, 30131.47191838], [1517135280000, 5.196e-05, 5.196e-05, 5.18e-05, 5.183e-05, 1788.36506858], [1517135340000, 5.183e-05, 5.183e-05, 5.177e-05, 5.181e-05, 9410.31973232], [1517135400000, 5.181e-05, 5.183e-05, 5.166e-05, 5.172e-05, 40238.48854236], [1517135460000, 5.171e-05, 5.172e-05, 5.165e-05, 5.172e-05, 98192.43219313], [1517135520000, 5.172e-05, 5.173e-05, 5.165e-05, 5.172e-05, 5491.43971984], [1517135580000, 5.172e-05, 5.172e-05, 5.161e-05, 5.172e-05, 10909.98496427], [1517135640000, 5.172e-05, 5.183e-05, 5.161e-05, 5.183e-05, 11650.08336339], [1517135700000, 5.165e-05, 5.183e-05, 5.16e-05, 5.16e-05, 17859.69763448], [1517135760000, 5.166e-05, 5.188e-05, 5.16e-05, 5.17e-05, 20409.05263523], [1517135820000, 5.17e-05, 5.183e-05, 5.17e-05, 5.183e-05, 7369.89086782], [1517135880000, 5.195e-05, 5.195e-05, 5.171e-05, 5.175e-05, 9187.08033408], [1517135940000, 5.175e-05, 5.199e-05, 5.175e-05, 5.199e-05, 16189.90740731], [1517136000000, 5.199e-05, 5.2e-05, 5.183e-05, 5.199e-05, 6842.2615198], [1517136060000, 5.199e-05, 5.2e-05, 5.199e-05, 5.199e-05, 9563.39837636], [1517136120000, 5.199e-05, 5.2e-05, 5.175e-05, 5.199e-05, 18923.85232533], [1517136180000, 5.176e-05, 5.199e-05, 5.175e-05, 5.199e-05, 6184.28691298], [1517136240000, 5.199e-05, 5.199e-05, 5.175e-05, 5.175e-05, 55445.93838809], [1517136300000, 5.175e-05, 5.186e-05, 5.175e-05, 5.175e-05, 6167.14365134], [1517136360000, 5.186e-05, 5.199e-05, 5.175e-05, 5.189e-05, 8669.52887416], [1517136420000, 5.189e-05, 5.2e-05, 5.189e-05, 5.2e-05, 27555.67300913], [1517136480000, 5.2e-05, 5.2e-05, 5.192e-05, 5.192e-05, 22062.6283241], [1517136540000, 5.192e-05, 5.198e-05, 5.192e-05, 5.198e-05, 6919.71139821], [1517136600000, 5.198e-05, 5.198e-05, 5.192e-05, 5.192e-05, 20015.39681277], [1517136660000, 5.192e-05, 5.198e-05, 5.186e-05, 5.186e-05, 11940.1044853], [1517136720000, 5.198e-05, 5.198e-05, 5.198e-05, 5.198e-05, 11785.86217234], [1517136780000, 5.199e-05, 5.2e-05, 5.198e-05, 5.2e-05, 30368.28422293], [1517136840000, 5.2e-05, 5.2e-05, 5.188e-05, 5.188e-05, 20205.48829405], [1517136900000, 5.189e-05, 5.189e-05, 5.151e-05, 5.161e-05, 44068.77869557], [1517136960000, 5.165e-05, 5.185e-05, 5.165e-05, 5.179e-05, 28436.65293681], [1517137020000, 5.179e-05, 5.19e-05, 5.179e-05, 5.188e-05, 83548.02569087], [1517137080000, 5.189e-05, 5.19e-05, 5.18e-05, 5.18e-05, 13000.0], [1517137140000, 5.196e-05, 5.196e-05, 5.18e-05, 5.186e-05, 17873.13250132], [1517137200000, 5.186e-05, 5.191e-05, 5.18e-05, 5.185e-05, 19614.54247856], [1517137260000, 5.185e-05, 5.185e-05, 5.18e-05, 5.181e-05, 47297.39136072], [1517137320000, 5.182e-05, 5.182e-05, 5.175e-05, 5.18e-05, 29371.06335951], [1517137380000, 5.179e-05, 5.18e-05, 5.176e-05, 5.18e-05, 14594.24896332], [1517137440000, 5.176e-05, 5.18e-05, 5.175e-05, 5.176e-05, 10272.46431292], [1517137500000, 5.176e-05, 5.177e-05, 5.176e-05, 5.177e-05, 4148.99518138], [1517137560000, 5.177e-05, 5.177e-05, 5.172e-05, 5.172e-05, 27401.04890424], [1517137620000, 5.175e-05, 5.177e-05, 5.172e-05, 5.177e-05, 40865.18409006], [1517137680000, 5.176e-05, 5.183e-05, 5.172e-05, 5.177e-05, 48274.53401178], [1517137740000, 5.181e-05, 5.185e-05, 5.181e-05, 5.183e-05, 17928.9986366], [1517137800000, 5.183e-05, 5.184e-05, 5.174e-05, 5.175e-05, 15505.83608756], [1517137860000, 5.178e-05, 5.178e-05, 5.174e-05, 5.178e-05, 3043.05872582], [1517137920000, 5.178e-05, 5.183e-05, 5.175e-05, 5.176e-05, 4631.20288758], [1517137980000, 5.176e-05, 5.176e-05, 5.174e-05, 5.174e-05, 21835.92162576], [1517138040000, 5.174e-05, 5.182e-05, 5.172e-05, 5.172e-05, 19698.68496832], [1517138100000, 5.18e-05, 5.181e-05, 5.164e-05, 5.165e-05, 25094.27400815], [1517138160000, 5.165e-05, 5.18e-05, 5.162e-05, 5.167e-05, 11159.1758914], [1517138220000, 5.167e-05, 5.167e-05, 5.165e-05, 5.167e-05, 19564.02467569], [1517138280000, 5.167e-05, 5.181e-05, 5.167e-05, 5.181e-05, 2788.38717349], [1517138340000, 5.168e-05, 5.168e-05, 5.168e-05, 5.168e-05, 50.98550077], [1517138400000, 5.179e-05, 5.179e-05, 5.174e-05, 5.174e-05, 619.05331907], [1517138460000, 5.178e-05, 5.178e-05, 5.17e-05, 5.178e-05, 7808.86063361], [1517138520000, 5.177e-05, 5.178e-05, 5.177e-05, 5.177e-05, 5282.74790885], [1517138580000, 5.174e-05, 5.174e-05, 5.168e-05, 5.17e-05, 1375.29631464], [1517138640000, 5.169e-05, 5.171e-05, 5.151e-05, 5.17e-05, 47256.64989764], [1517138700000, 5.17e-05, 5.17e-05, 5.151e-05, 5.169e-05, 16144.58412292], [1517138760000, 5.168e-05, 5.168e-05, 5.155e-05, 5.161e-05, 4749.73849832], [1517138820000, 5.162e-05, 5.168e-05, 5.162e-05, 5.166e-05, 3901.2027333], [1517138880000, 5.166e-05, 5.168e-05, 5.166e-05, 5.167e-05, 2785.70160979], [1517138940000, 5.167e-05, 5.168e-05, 5.164e-05, 5.164e-05, 3183.40479923], [1517139000000, 5.164e-05, 5.168e-05, 5.151e-05, 5.164e-05, 13966.26047419], [1517139060000, 5.164e-05, 5.168e-05, 5.164e-05, 5.164e-05, 8919.27392131], [1517139120000, 5.152e-05, 5.16e-05, 5.151e-05, 5.16e-05, 11433.45151564], [1517139180000, 5.16e-05, 5.164e-05, 5.157e-05, 5.163e-05, 11783.77188121], [1517139240000, 5.161e-05, 5.166e-05, 5.16e-05, 5.166e-05, 5891.78763269], [1517139300000, 5.166e-05, 5.168e-05, 5.165e-05, 5.168e-05, 41928.1587943], [1517139360000, 5.168e-05, 5.177e-05, 5.165e-05, 5.169e-05, 59429.81659701], [1517139420000, 5.17e-05, 5.184e-05, 5.17e-05, 5.176e-05, 3692.57081033], [1517139480000, 5.176e-05, 5.184e-05, 5.176e-05, 5.176e-05, 2136.24456247], [1517139540000, 5.177e-05, 5.185e-05, 5.177e-05, 5.185e-05, 266.47637183], [1517139600000, 5.185e-05, 5.185e-05, 5.178e-05, 5.185e-05, 4465.39561191], [1517139660000, 5.185e-05, 5.185e-05, 5.178e-05, 5.185e-05, 590.05472246], [1517139720000, 5.185e-05, 5.185e-05, 5.183e-05, 5.185e-05, 707.93045241], [1517139780000, 5.184e-05, 5.185e-05, 5.178e-05, 5.178e-05, 46562.53702738], [1517139840000, 5.18e-05, 5.185e-05, 5.18e-05, 5.185e-05, 9500.53663348], [1517139900000, 5.183e-05, 5.185e-05, 5.183e-05, 5.184e-05, 23630.96688495], [1517139960000, 5.184e-05, 5.2e-05, 5.178e-05, 5.2e-05, 21351.0246583], [1517140020000, 5.198e-05, 5.206e-05, 5.178e-05, 5.206e-05, 31628.88149084], [1517140080000, 5.206e-05, 5.219e-05, 5.181e-05, 5.211e-05, 43035.33333678], [1517140140000, 5.211e-05, 5.243e-05, 5.21e-05, 5.231e-05, 117681.20424878], [1517140200000, 5.231e-05, 5.244e-05, 5.231e-05, 5.233e-05, 75632.2446298], [1517140260000, 5.233e-05, 5.25e-05, 5.233e-05, 5.238e-05, 15890.06330724], [1517140320000, 5.24e-05, 5.249e-05, 5.24e-05, 5.249e-05, 25328.2427389], [1517140380000, 5.249e-05, 5.249e-05, 5.238e-05, 5.24e-05, 25807.46427113], [1517140440000, 5.24e-05, 5.245e-05, 5.233e-05, 5.233e-05, 6788.4328495], [1517140500000, 5.233e-05, 5.24e-05, 5.231e-05, 5.233e-05, 23298.18154007], [1517140560000, 5.231e-05, 5.233e-05, 5.231e-05, 5.231e-05, 33585.11475837], [1517140620000, 5.233e-05, 5.238e-05, 5.215e-05, 5.215e-05, 10327.07629848], [1517140680000, 5.231e-05, 5.231e-05, 5.215e-05, 5.215e-05, 27600.30014258], [1517140740000, 5.22e-05, 5.22e-05, 5.215e-05, 5.215e-05, 2211.76275649], [1517140800000, 5.216e-05, 5.216e-05, 5.215e-05, 5.215e-05, 51310.40365036], [1517140860000, 5.205e-05, 5.215e-05, 5.164e-05, 5.188e-05, 14773.76260207], [1517140920000, 5.205e-05, 5.213e-05, 5.163e-05, 5.164e-05, 10978.97500062], [1517140980000, 5.167e-05, 5.204e-05, 5.163e-05, 5.203e-05, 2685.47469481], [1517141040000, 5.199e-05, 5.199e-05, 5.187e-05, 5.187e-05, 905.13895046], [1517141100000, 5.187e-05, 5.187e-05, 5.168e-05, 5.168e-05, 1409.44763882], [1517141160000, 5.168e-05, 5.187e-05, 5.168e-05, 5.187e-05, 21207.40075778], [1517141220000, 5.187e-05, 5.198e-05, 5.187e-05, 5.188e-05, 3332.11979023], [1517141280000, 5.188e-05, 5.188e-05, 5.184e-05, 5.184e-05, 5842.43502706], [1517141340000, 5.171e-05, 5.171e-05, 5.168e-05, 5.17e-05, 30383.84940145], [1517141400000, 5.17e-05, 5.17e-05, 5.17e-05, 5.17e-05, 4908.39491076], [1517141460000, 5.168e-05, 5.171e-05, 5.168e-05, 5.171e-05, 36088.00809444], [1517141520000, 5.172e-05, 5.184e-05, 5.172e-05, 5.172e-05, 1764.14559769], [1517141580000, 5.173e-05, 5.186e-05, 5.173e-05, 5.186e-05, 5536.59857338], [1517141640000, 5.186e-05, 5.187e-05, 5.173e-05, 5.173e-05, 8378.38601892], [1517141700000, 5.194e-05, 5.194e-05, 5.173e-05, 5.174e-05, 998.14681684], [1517141760000, 5.174e-05, 5.175e-05, 5.173e-05, 5.175e-05, 9520.87977433], [1517141820000, 5.191e-05, 5.192e-05, 5.175e-05, 5.176e-05, 8581.127376], [1517141880000, 5.175e-05, 5.187e-05, 5.175e-05, 5.175e-05, 8730.31109262], [1517141940000, 5.191e-05, 5.191e-05, 5.173e-05, 5.174e-05, 8859.02579042], [1517142000000, 5.175e-05, 5.175e-05, 5.173e-05, 5.174e-05, 5681.49608943], [1517142060000, 5.174e-05, 5.185e-05, 5.174e-05, 5.175e-05, 4668.72624378], [1517142120000, 5.174e-05, 5.175e-05, 5.174e-05, 5.175e-05, 14138.44034802], [1517142180000, 5.176e-05, 5.176e-05, 5.174e-05, 5.174e-05, 44921.83615827], [1517142240000, 5.174e-05, 5.175e-05, 5.174e-05, 5.175e-05, 16142.32415265], [1517142300000, 5.175e-05, 5.175e-05, 5.175e-05, 5.175e-05, 14180.13019856], [1517142360000, 5.175e-05, 5.19e-05, 5.175e-05, 5.18e-05, 6508.77627949], [1517142420000, 5.18e-05, 5.18e-05, 5.176e-05, 5.18e-05, 5401.23041705], [1517142480000, 5.18e-05, 5.19e-05, 5.177e-05, 5.19e-05, 16138.88197285], [1517142540000, 5.19e-05, 5.19e-05, 5.177e-05, 5.177e-05, 4336.18015246], [1517142600000, 5.18e-05, 5.199e-05, 5.18e-05, 5.194e-05, 6208.69155445], [1517142660000, 5.195e-05, 5.197e-05, 5.175e-05, 5.175e-05, 20483.34329974], [1517142720000, 5.175e-05, 5.175e-05, 5.174e-05, 5.174e-05, 12217.91838272], [1517142780000, 5.174e-05, 5.175e-05, 5.174e-05, 5.175e-05, 4773.69613217], [1517142840000, 5.175e-05, 5.197e-05, 5.175e-05, 5.195e-05, 5920.43325663], [1517142900000, 5.195e-05, 5.204e-05, 5.194e-05, 5.194e-05, 40541.84222991], [1517142960000, 5.195e-05, 5.195e-05, 5.194e-05, 5.195e-05, 10073.46001546], [1517143020000, 5.194e-05, 5.194e-05, 5.175e-05, 5.18e-05, 11979.59008468], [1517143080000, 5.175e-05, 5.18e-05, 5.174e-05, 5.175e-05, 3233.09943056], [1517143140000, 5.18e-05, 5.18e-05, 5.177e-05, 5.18e-05, 9245.83025916], [1517143200000, 5.18e-05, 5.195e-05, 5.178e-05, 5.194e-05, 3836.91709634], [1517143260000, 5.177e-05, 5.182e-05, 5.177e-05, 5.178e-05, 1567.90598575], [1517143320000, 5.178e-05, 5.194e-05, 5.178e-05, 5.194e-05, 731.31652724], [1517143380000, 5.182e-05, 5.194e-05, 5.176e-05, 5.191e-05, 25713.06509381], [1517143440000, 5.191e-05, 5.191e-05, 5.189e-05, 5.189e-05, 4074.28322253], [1517143500000, 5.189e-05, 5.219e-05, 5.189e-05, 5.189e-05, 25158.24713838], [1517143560000, 5.189e-05, 5.218e-05, 5.18e-05, 5.18e-05, 3181.55642833], [1517143620000, 5.189e-05, 5.216e-05, 5.189e-05, 5.216e-05, 1501.58227775], [1517143680000, 5.216e-05, 5.216e-05, 5.185e-05, 5.215e-05, 574.03116412], [1517143740000, 5.214e-05, 5.214e-05, 5.182e-05, 5.213e-05, 2828.02700429], [1517143800000, 5.184e-05, 5.186e-05, 5.184e-05, 5.186e-05, 2283.69118081], [1517143860000, 5.207e-05, 5.211e-05, 5.186e-05, 5.186e-05, 13701.35614052], [1517143920000, 5.2e-05, 5.205e-05, 5.186e-05, 5.2e-05, 10108.88153889], [1517143980000, 5.204e-05, 5.205e-05, 5.186e-05, 5.191e-05, 21776.11882689], [1517144040000, 5.191e-05, 5.206e-05, 5.19e-05, 5.191e-05, 29634.91675603], [1517144100000, 5.192e-05, 5.206e-05, 5.192e-05, 5.206e-05, 1161.25633149], [1517144160000, 5.194e-05, 5.206e-05, 5.194e-05, 5.205e-05, 13029.96232475], [1517144220000, 5.196e-05, 5.205e-05, 5.196e-05, 5.196e-05, 7860.30183978], [1517144280000, 5.205e-05, 5.206e-05, 5.2e-05, 5.205e-05, 15666.99263411], [1517144340000, 5.205e-05, 5.207e-05, 5.205e-05, 5.207e-05, 21575.89055997], [1517144400000, 5.206e-05, 5.207e-05, 5.205e-05, 5.205e-05, 16346.91519658], [1517144460000, 5.213e-05, 5.213e-05, 5.205e-05, 5.205e-05, 6420.63274328], [1517144520000, 5.211e-05, 5.212e-05, 5.205e-05, 5.211e-05, 8760.1365286], [1517144580000, 5.211e-05, 5.211e-05, 5.206e-05, 5.206e-05, 1905.12381535], [1517144640000, 5.206e-05, 5.211e-05, 5.206e-05, 5.21e-05, 6531.92925832], [1517144700000, 5.211e-05, 5.214e-05, 5.207e-05, 5.207e-05, 12248.68841056], [1517144760000, 5.21e-05, 5.214e-05, 5.21e-05, 5.211e-05, 7144.82743015], [1517144820000, 5.211e-05, 5.216e-05, 5.211e-05, 5.216e-05, 3147.39822546], [1517144880000, 5.216e-05, 5.222e-05, 5.214e-05, 5.216e-05, 10733.70282249], [1517144940000, 5.216e-05, 5.221e-05, 5.216e-05, 5.221e-05, 1743.50791224], [1517145000000, 5.222e-05, 5.222e-05, 5.221e-05, 5.222e-05, 12855.48436149], [1517145060000, 5.222e-05, 5.224e-05, 5.221e-05, 5.221e-05, 6116.62141878], [1517145120000, 5.222e-05, 5.223e-05, 5.216e-05, 5.216e-05, 44985.41542733], [1517145180000, 5.216e-05, 5.221e-05, 5.21e-05, 5.21e-05, 39134.32318679], [1517145240000, 5.21e-05, 5.215e-05, 5.21e-05, 5.212e-05, 148.45339358], [1517145300000, 5.212e-05, 5.215e-05, 5.21e-05, 5.213e-05, 4498.38735201], [1517145360000, 5.213e-05, 5.213e-05, 5.21e-05, 5.21e-05, 5782.90027835], [1517145420000, 5.21e-05, 5.212e-05, 5.21e-05, 5.212e-05, 635.23994757], [1517145480000, 5.212e-05, 5.212e-05, 5.21e-05, 5.21e-05, 11264.86199167], [1517145540000, 5.21e-05, 5.213e-05, 5.21e-05, 5.213e-05, 3750.8644542], [1517145600000, 5.213e-05, 5.221e-05, 5.213e-05, 5.221e-05, 11081.7306186], [1517145660000, 5.221e-05, 5.222e-05, 5.218e-05, 5.219e-05, 8586.95112039], [1517145720000, 5.222e-05, 5.25e-05, 5.222e-05, 5.25e-05, 30125.70983195], [1517145780000, 5.222e-05, 5.249e-05, 5.222e-05, 5.229e-05, 2529.4845056], [1517145840000, 5.245e-05, 5.246e-05, 5.231e-05, 5.235e-05, 12629.12581865], [1517145900000, 5.235e-05, 5.24e-05, 5.235e-05, 5.235e-05, 7890.74298179], [1517145960000, 5.237e-05, 5.247e-05, 5.237e-05, 5.24e-05, 922.43062314], [1517146020000, 5.248e-05, 5.248e-05, 5.24e-05, 5.24e-05, 2805.93976741], [1517146080000, 5.241e-05, 5.242e-05, 5.235e-05, 5.237e-05, 7124.36911559], [1517146140000, 5.237e-05, 5.237e-05, 5.231e-05, 5.231e-05, 6450.04162179], [1517146200000, 5.231e-05, 5.231e-05, 5.231e-05, 5.231e-05, 2332.00735371], [1517146260000, 5.237e-05, 5.237e-05, 5.231e-05, 5.231e-05, 4349.09186366], [1517146320000, 5.232e-05, 5.232e-05, 5.231e-05, 5.231e-05, 2444.94294238], [1517146380000, 5.231e-05, 5.232e-05, 5.231e-05, 5.232e-05, 7901.66528571], [1517146440000, 5.232e-05, 5.236e-05, 5.232e-05, 5.236e-05, 1216.30387237], [1517146500000, 5.233e-05, 5.236e-05, 5.232e-05, 5.235e-05, 33239.96266112], [1517146560000, 5.232e-05, 5.234e-05, 5.232e-05, 5.234e-05, 19144.42292262], [1517146620000, 5.234e-05, 5.236e-05, 5.231e-05, 5.231e-05, 17564.62454698], [1517146680000, 5.231e-05, 5.231e-05, 5.227e-05, 5.23e-05, 3173.42615703], [1517146740000, 5.23e-05, 5.231e-05, 5.23e-05, 5.231e-05, 3230.36725948], [1517146800000, 5.231e-05, 5.236e-05, 5.231e-05, 5.236e-05, 3194.60403437], [1517146860000, 5.236e-05, 5.24e-05, 5.231e-05, 5.24e-05, 27266.00844926], [1517146920000, 5.239e-05, 5.24e-05, 5.23e-05, 5.239e-05, 38162.92425204], [1517146980000, 5.239e-05, 5.24e-05, 5.23e-05, 5.23e-05, 1733.32422403], [1517147040000, 5.233e-05, 5.238e-05, 5.227e-05, 5.227e-05, 11269.96559634], [1517147100000, 5.227e-05, 5.227e-05, 5.225e-05, 5.225e-05, 1134.06631545], [1517147160000, 5.225e-05, 5.24e-05, 5.21e-05, 5.223e-05, 278899.91437024], [1517147220000, 5.239e-05, 5.241e-05, 5.239e-05, 5.241e-05, 19547.59210669], [1517147280000, 5.24e-05, 5.24e-05, 5.239e-05, 5.239e-05, 11901.35742437], [1517147340000, 5.239e-05, 5.239e-05, 5.224e-05, 5.224e-05, 21727.53154114], [1517147400000, 5.224e-05, 5.23e-05, 5.224e-05, 5.225e-05, 3132.63433021], [1517147460000, 5.226e-05, 5.23e-05, 5.226e-05, 5.23e-05, 3269.68135428], [1517147520000, 5.225e-05, 5.237e-05, 5.225e-05, 5.236e-05, 7174.64119795], [1517147580000, 5.237e-05, 5.237e-05, 5.224e-05, 5.224e-05, 23731.44459739], [1517147640000, 5.224e-05, 5.237e-05, 5.224e-05, 5.225e-05, 24108.00301561], [1517147700000, 5.226e-05, 5.235e-05, 5.224e-05, 5.227e-05, 15853.80264159], [1517147760000, 5.235e-05, 5.237e-05, 5.225e-05, 5.235e-05, 5894.28650158], [1517147820000, 5.235e-05, 5.237e-05, 5.235e-05, 5.235e-05, 20473.00072102], [1517147880000, 5.235e-05, 5.237e-05, 5.225e-05, 5.225e-05, 10332.33399327], [1517147940000, 5.225e-05, 5.237e-05, 5.225e-05, 5.237e-05, 4328.7113261], [1517148000000, 5.225e-05, 5.236e-05, 5.225e-05, 5.236e-05, 219.05783145], [1517148060000, 5.228e-05, 5.236e-05, 5.225e-05, 5.225e-05, 1965.35615627], [1517148120000, 5.225e-05, 5.225e-05, 5.225e-05, 5.225e-05, 129.82365851], [1517148180000, 5.225e-05, 5.23e-05, 5.225e-05, 5.226e-05, 7360.72089205], [1517148240000, 5.23e-05, 5.23e-05, 5.226e-05, 5.23e-05, 807.97534779], [1517148300000, 5.23e-05, 5.23e-05, 5.226e-05, 5.226e-05, 2786.76208491], [1517148360000, 5.226e-05, 5.23e-05, 5.226e-05, 5.226e-05, 5165.42744743], [1517148420000, 5.23e-05, 5.236e-05, 5.226e-05, 5.227e-05, 4929.77319549], [1517148480000, 5.227e-05, 5.239e-05, 5.226e-05, 5.226e-05, 22552.1391245], [1517148540000, 5.238e-05, 5.238e-05, 5.226e-05, 5.226e-05, 2416.1101274], [1517148600000, 5.226e-05, 5.227e-05, 5.226e-05, 5.226e-05, 929.70438968], [1517148660000, 5.226e-05, 5.226e-05, 5.226e-05, 5.226e-05, 748.6473904], [1517148720000, 5.235e-05, 5.239e-05, 5.229e-05, 5.229e-05, 13444.05088873], [1517148780000, 5.231e-05, 5.231e-05, 5.229e-05, 5.229e-05, 609.2988516], [1517148840000, 5.23e-05, 5.249e-05, 5.229e-05, 5.248e-05, 19759.72023651], [1517148900000, 5.249e-05, 5.249e-05, 5.247e-05, 5.249e-05, 19785.62562884], [1517148960000, 5.247e-05, 5.247e-05, 5.23e-05, 5.241e-05, 7036.67462141], [1517149020000, 5.241e-05, 5.241e-05, 5.24e-05, 5.24e-05, 51.04007634], [1517149080000, 5.24e-05, 5.24e-05, 5.23e-05, 5.24e-05, 6219.26292523], [1517149140000, 5.241e-05, 5.249e-05, 5.241e-05, 5.245e-05, 11642.92606224], [1517149200000, 5.249e-05, 5.249e-05, 5.243e-05, 5.249e-05, 37455.34261437], [1517149260000, 5.247e-05, 5.247e-05, 5.243e-05, 5.243e-05, 1052.6609543], [1517149320000, 5.24e-05, 5.243e-05, 5.23e-05, 5.231e-05, 9375.04504624], [1517149380000, 5.232e-05, 5.241e-05, 5.231e-05, 5.241e-05, 875.42146083], [1517149440000, 5.241e-05, 5.241e-05, 5.231e-05, 5.241e-05, 1537.35838795], [1517149500000, 5.24e-05, 5.245e-05, 5.23e-05, 5.244e-05, 53588.59868282], [1517149560000, 5.244e-05, 5.244e-05, 5.241e-05, 5.241e-05, 1249.10769225], [1517149620000, 5.242e-05, 5.243e-05, 5.24e-05, 5.24e-05, 3316.05751952], [1517149680000, 5.24e-05, 5.248e-05, 5.231e-05, 5.248e-05, 29483.65764847], [1517149740000, 5.246e-05, 5.247e-05, 5.245e-05, 5.245e-05, 4888.32847566], [1517149800000, 5.231e-05, 5.248e-05, 5.231e-05, 5.248e-05, 57545.26302503], [1517149860000, 5.248e-05, 5.249e-05, 5.248e-05, 5.248e-05, 3479.31144849], [1517149920000, 5.249e-05, 5.249e-05, 5.248e-05, 5.248e-05, 16274.35540776], [1517149980000, 5.248e-05, 5.249e-05, 5.231e-05, 5.24e-05, 25168.90534552], [1517150040000, 5.231e-05, 5.24e-05, 5.231e-05, 5.231e-05, 1869.67452695], [1517150100000, 5.231e-05, 5.248e-05, 5.231e-05, 5.247e-05, 14429.68874092], [1517150160000, 5.245e-05, 5.247e-05, 5.231e-05, 5.244e-05, 1869.85903659], [1517150220000, 5.24e-05, 5.24e-05, 5.24e-05, 5.24e-05, 300.0], [1517150280000, 5.232e-05, 5.239e-05, 5.232e-05, 5.239e-05, 2567.20938485], [1517150340000, 5.239e-05, 5.241e-05, 5.233e-05, 5.238e-05, 5106.85244212], [1517150400000, 5.238e-05, 5.241e-05, 5.238e-05, 5.239e-05, 2467.6823818], [1517150460000, 5.239e-05, 5.24e-05, 5.238e-05, 5.238e-05, 5549.91655446], [1517150520000, 5.234e-05, 5.238e-05, 5.232e-05, 5.233e-05, 5291.48488396], [1517150580000, 5.233e-05, 5.234e-05, 5.231e-05, 5.233e-05, 14346.30180623], [1517150640000, 5.233e-05, 5.234e-05, 5.232e-05, 5.233e-05, 5865.83939278], [1517150700000, 5.233e-05, 5.233e-05, 5.232e-05, 5.233e-05, 4595.67799591], [1517150760000, 5.232e-05, 5.232e-05, 5.232e-05, 5.232e-05, 190.98199542], [1517150820000, 5.232e-05, 5.233e-05, 5.232e-05, 5.232e-05, 3931.51370932], [1517150880000, 5.231e-05, 5.232e-05, 5.231e-05, 5.231e-05, 5750.8790944], [1517150940000, 5.231e-05, 5.232e-05, 5.231e-05, 5.231e-05, 4016.08939364], [1517151000000, 5.232e-05, 5.233e-05, 5.231e-05, 5.231e-05, 22116.60839337], [1517151060000, 5.231e-05, 5.231e-05, 5.23e-05, 5.23e-05, 4920.10814379], [1517151120000, 5.23e-05, 5.231e-05, 5.23e-05, 5.23e-05, 6742.02013369], [1517151180000, 5.23e-05, 5.231e-05, 5.229e-05, 5.229e-05, 11035.71512454], [1517151240000, 5.23e-05, 5.23e-05, 5.229e-05, 5.229e-05, 3969.51633476], [1517151300000, 5.227e-05, 5.23e-05, 5.226e-05, 5.23e-05, 18835.28328745], [1517151360000, 5.23e-05, 5.23e-05, 5.229e-05, 5.229e-05, 25271.942857], [1517151420000, 5.229e-05, 5.23e-05, 5.229e-05, 5.23e-05, 903.04493308], [1517151480000, 5.23e-05, 5.23e-05, 5.227e-05, 5.227e-05, 21173.62984111], [1517151540000, 5.227e-05, 5.227e-05, 5.225e-05, 5.225e-05, 9261.68939458], [1517151600000, 5.225e-05, 5.228e-05, 5.225e-05, 5.225e-05, 13282.93417898], [1517151660000, 5.224e-05, 5.224e-05, 5.224e-05, 5.224e-05, 1078.62961185], [1517151720000, 5.225e-05, 5.225e-05, 5.224e-05, 5.224e-05, 6499.72962295], [1517151780000, 5.225e-05, 5.225e-05, 5.215e-05, 5.215e-05, 14524.52960002], [1517151840000, 5.215e-05, 5.215e-05, 5.215e-05, 5.215e-05, 1068.47360535], [1517151900000, 5.215e-05, 5.22e-05, 5.215e-05, 5.215e-05, 10399.87241886], [1517151960000, 5.213e-05, 5.215e-05, 5.213e-05, 5.215e-05, 8939.23465088], [1517152020000, 5.215e-05, 5.215e-05, 5.214e-05, 5.214e-05, 2836.68981761], [1517152080000, 5.215e-05, 5.22e-05, 5.215e-05, 5.215e-05, 7545.47581245], [1517152140000, 5.214e-05, 5.215e-05, 5.214e-05, 5.214e-05, 2127.48096837], [1517152200000, 5.214e-05, 5.215e-05, 5.214e-05, 5.214e-05, 13570.22815924], [1517152260000, 5.214e-05, 5.214e-05, 5.213e-05, 5.214e-05, 11616.00181658], [1517152320000, 5.213e-05, 5.213e-05, 5.21e-05, 5.21e-05, 23156.78930313], [1517152380000, 5.21e-05, 5.211e-05, 5.21e-05, 5.211e-05, 4570.66998082], [1517152440000, 5.211e-05, 5.211e-05, 5.21e-05, 5.211e-05, 18110.67045336], [1517152500000, 5.211e-05, 5.211e-05, 5.21e-05, 5.21e-05, 9237.50009267], [1517152560000, 5.211e-05, 5.211e-05, 5.21e-05, 5.21e-05, 2519.70603215], [1517152620000, 5.211e-05, 5.211e-05, 5.21e-05, 5.21e-05, 39058.82171448], [1517152680000, 5.211e-05, 5.211e-05, 5.21e-05, 5.21e-05, 27374.19237376], [1517152740000, 5.21e-05, 5.211e-05, 5.21e-05, 5.21e-05, 42538.20273708], [1517152800000, 5.211e-05, 5.211e-05, 5.21e-05, 5.211e-05, 7767.67670807], [1517152860000, 5.21e-05, 5.211e-05, 5.21e-05, 5.21e-05, 10563.58144213], [1517152920000, 5.21e-05, 5.212e-05, 5.21e-05, 5.212e-05, 23989.69370191], [1517152980000, 5.211e-05, 5.212e-05, 5.211e-05, 5.211e-05, 8639.9409738], [1517153040000, 5.211e-05, 5.211e-05, 5.21e-05, 5.21e-05, 16785.94410076], [1517153100000, 5.211e-05, 5.211e-05, 5.21e-05, 5.21e-05, 1240.03079202], [1517153160000, 5.21e-05, 5.212e-05, 5.21e-05, 5.211e-05, 3468.65877299], [1517153220000, 5.211e-05, 5.211e-05, 5.21e-05, 5.21e-05, 6630.03794643], [1517153280000, 5.21e-05, 5.212e-05, 5.21e-05, 5.211e-05, 13852.73899184], [1517153340000, 5.211e-05, 5.211e-05, 5.21e-05, 5.21e-05, 73723.46766833], [1517153400000, 5.211e-05, 5.212e-05, 5.21e-05, 5.21e-05, 3119.64296265], [1517153460000, 5.211e-05, 5.229e-05, 5.21e-05, 5.21e-05, 69169.06260681], [1517153520000, 5.212e-05, 5.212e-05, 5.21e-05, 5.212e-05, 13896.46903385], [1517153580000, 5.212e-05, 5.212e-05, 5.206e-05, 5.21e-05, 16217.62265483], [1517153640000, 5.207e-05, 5.21e-05, 5.207e-05, 5.21e-05, 3063.12650367], [1517153700000, 5.211e-05, 5.228e-05, 5.211e-05, 5.214e-05, 14102.945444], [1517153760000, 5.214e-05, 5.219e-05, 5.214e-05, 5.217e-05, 11677.98068198], [1517153820000, 5.218e-05, 5.224e-05, 5.218e-05, 5.218e-05, 19811.95170944], [1517153880000, 5.218e-05, 5.225e-05, 5.215e-05, 5.215e-05, 22523.16858328], [1517153940000, 5.217e-05, 5.23e-05, 5.217e-05, 5.222e-05, 76322.99181218], [1517154000000, 5.222e-05, 5.233e-05, 5.222e-05, 5.223e-05, 12338.96991837], [1517154060000, 5.223e-05, 5.223e-05, 5.223e-05, 5.223e-05, 262.74685118], [1517154120000, 5.219e-05, 5.219e-05, 5.217e-05, 5.218e-05, 1625.0511193], [1517154180000, 5.218e-05, 5.243e-05, 5.217e-05, 5.217e-05, 21016.06081162], [1517154240000, 5.219e-05, 5.24e-05, 5.217e-05, 5.217e-05, 1418.41237046], [1517154300000, 5.217e-05, 5.218e-05, 5.217e-05, 5.218e-05, 1364.14474533], [1517154360000, 5.218e-05, 5.22e-05, 5.218e-05, 5.219e-05, 996.30738654], [1517154420000, 5.219e-05, 5.242e-05, 5.219e-05, 5.242e-05, 1580.30690282], [1517154480000, 5.236e-05, 5.236e-05, 5.236e-05, 5.236e-05, 1906.16471393], [1517154540000, 5.226e-05, 5.236e-05, 5.221e-05, 5.234e-05, 5105.74656816], [1517154600000, 5.235e-05, 5.236e-05, 5.222e-05, 5.236e-05, 6841.66779077], [1517154660000, 5.236e-05, 5.236e-05, 5.235e-05, 5.236e-05, 2822.52316422], [1517154720000, 5.236e-05, 5.236e-05, 5.224e-05, 5.224e-05, 7643.58705485], [1517154780000, 5.224e-05, 5.236e-05, 5.224e-05, 5.236e-05, 6897.14643057], [1517154840000, 5.236e-05, 5.236e-05, 5.236e-05, 5.236e-05, 1653.74313398], [1517154900000, 5.231e-05, 5.236e-05, 5.23e-05, 5.235e-05, 764.99996731], [1517154960000, 5.235e-05, 5.235e-05, 5.23e-05, 5.23e-05, 2060.69048288], [1517155020000, 5.23e-05, 5.235e-05, 5.23e-05, 5.23e-05, 3549.46564618], [1517155080000, 5.23e-05, 5.231e-05, 5.224e-05, 5.23e-05, 3342.30818184], [1517155140000, 5.23e-05, 5.23e-05, 5.225e-05, 5.23e-05, 3496.68555243], [1517155200000, 5.23e-05, 5.23e-05, 5.229e-05, 5.229e-05, 663.77822404], [1517155260000, 5.229e-05, 5.23e-05, 5.229e-05, 5.229e-05, 11428.83745354], [1517155320000, 5.229e-05, 5.234e-05, 5.229e-05, 5.234e-05, 1712.9844235], [1517155380000, 5.235e-05, 5.274e-05, 5.235e-05, 5.274e-05, 87708.85200545], [1517155440000, 5.253e-05, 5.283e-05, 5.253e-05, 5.254e-05, 35833.75991831], [1517155500000, 5.253e-05, 5.276e-05, 5.253e-05, 5.254e-05, 10462.75495142], [1517155560000, 5.255e-05, 5.273e-05, 5.255e-05, 5.272e-05, 3888.58865313], [1517155620000, 5.272e-05, 5.272e-05, 5.262e-05, 5.272e-05, 17262.69088666], [1517155680000, 5.272e-05, 5.272e-05, 5.263e-05, 5.264e-05, 1178.37588032], [1517155740000, 5.272e-05, 5.28e-05, 5.264e-05, 5.264e-05, 7865.76992987], [1517155800000, 5.264e-05, 5.264e-05, 5.264e-05, 5.264e-05, 119.5238075], [1517155860000, 5.267e-05, 5.268e-05, 5.267e-05, 5.268e-05, 2751.8805977], [1517155920000, 5.268e-05, 5.269e-05, 5.263e-05, 5.263e-05, 20118.96109631], [1517155980000, 5.263e-05, 5.263e-05, 5.263e-05, 5.263e-05, 9971.52148247], [1517156040000, 5.263e-05, 5.31e-05, 5.263e-05, 5.31e-05, 1045484.10251319], [1517156100000, 5.3e-05, 5.304e-05, 5.3e-05, 5.3e-05, 49926.42093629], [1517156160000, 5.3e-05, 5.31e-05, 5.3e-05, 5.309e-05, 155186.15172081], [1517156220000, 5.302e-05, 5.31e-05, 5.302e-05, 5.31e-05, 6281.331727], [1517156280000, 5.31e-05, 5.31e-05, 5.308e-05, 5.308e-05, 16928.97705952], [1517156340000, 5.307e-05, 5.31e-05, 5.301e-05, 5.304e-05, 63418.46916777], [1517156400000, 5.302e-05, 5.306e-05, 5.301e-05, 5.306e-05, 94818.00597639], [1517156460000, 5.306e-05, 5.327e-05, 5.301e-05, 5.32e-05, 74251.8354625], [1517156520000, 5.318e-05, 5.319e-05, 5.301e-05, 5.314e-05, 176622.17913889], [1517156580000, 5.311e-05, 5.314e-05, 5.303e-05, 5.314e-05, 31088.72571331], [1517156640000, 5.314e-05, 5.319e-05, 5.314e-05, 5.315e-05, 4400.07812378], [1517156700000, 5.319e-05, 5.319e-05, 5.315e-05, 5.315e-05, 13582.57508491], [1517156760000, 5.315e-05, 5.317e-05, 5.315e-05, 5.317e-05, 37278.50596044], [1517156820000, 5.319e-05, 5.328e-05, 5.315e-05, 5.317e-05, 50612.78713896], [1517156880000, 5.318e-05, 5.318e-05, 5.315e-05, 5.315e-05, 21765.24236342], [1517156940000, 5.317e-05, 5.328e-05, 5.315e-05, 5.315e-05, 55744.84400744], [1517157000000, 5.314e-05, 5.314e-05, 5.314e-05, 5.314e-05, 632.97100207], [1517157060000, 5.31e-05, 5.317e-05, 5.31e-05, 5.317e-05, 4791.43125617], [1517157120000, 5.317e-05, 5.317e-05, 5.31e-05, 5.314e-05, 7499.56998022], [1517157180000, 5.311e-05, 5.314e-05, 5.307e-05, 5.307e-05, 11011.25061813], [1517157240000, 5.307e-05, 5.312e-05, 5.305e-05, 5.312e-05, 3577.68066522], [1517157300000, 5.306e-05, 5.307e-05, 5.305e-05, 5.307e-05, 17602.96121499], [1517157360000, 5.307e-05, 5.307e-05, 5.305e-05, 5.306e-05, 13783.76812922], [1517157420000, 5.306e-05, 5.306e-05, 5.305e-05, 5.306e-05, 9026.80265624], [1517157480000, 5.306e-05, 5.306e-05, 5.305e-05, 5.305e-05, 1360.03142669], [1517157540000, 5.306e-05, 5.306e-05, 5.3e-05, 5.306e-05, 94308.9670221], [1517157600000, 5.306e-05, 5.306e-05, 5.303e-05, 5.306e-05, 1856.42843541], [1517157660000, 5.312e-05, 5.315e-05, 5.306e-05, 5.307e-05, 9897.8161412], [1517157720000, 5.307e-05, 5.31e-05, 5.306e-05, 5.306e-05, 5366.21607056], [1517157780000, 5.307e-05, 5.307e-05, 5.3e-05, 5.307e-05, 93596.50127454], [1517157840000, 5.307e-05, 5.307e-05, 5.306e-05, 5.306e-05, 4021.07632335], [1517157900000, 5.306e-05, 5.307e-05, 5.3e-05, 5.303e-05, 4670.47525101], [1517157960000, 5.3e-05, 5.304e-05, 5.3e-05, 5.3e-05, 11588.67945319], [1517158020000, 5.301e-05, 5.301e-05, 5.29e-05, 5.29e-05, 14157.88530348], [1517158080000, 5.29e-05, 5.298e-05, 5.279e-05, 5.29e-05, 2264.99073106], [1517158140000, 5.279e-05, 5.28e-05, 5.278e-05, 5.278e-05, 3234.63059398], [1517158200000, 5.273e-05, 5.278e-05, 5.273e-05, 5.278e-05, 6957.78864285], [1517158260000, 5.275e-05, 5.277e-05, 5.27e-05, 5.273e-05, 3531.33157306], [1517158320000, 5.273e-05, 5.277e-05, 5.27e-05, 5.277e-05, 14266.19837571], [1517158380000, 5.277e-05, 5.278e-05, 5.275e-05, 5.275e-05, 21168.83590664], [1517158440000, 5.275e-05, 5.275e-05, 5.275e-05, 5.275e-05, 1357.40925451], [1517158500000, 5.275e-05, 5.275e-05, 5.273e-05, 5.273e-05, 11415.0], [1517158560000, 5.273e-05, 5.273e-05, 5.273e-05, 5.273e-05, 320.63950774], [1517158620000, 5.273e-05, 5.273e-05, 5.27e-05, 5.27e-05, 4613.20568376], [1517158680000, 5.273e-05, 5.273e-05, 5.267e-05, 5.267e-05, 941.90425638], [1517158740000, 5.266e-05, 5.27e-05, 5.262e-05, 5.262e-05, 12346.24801818], [1517158800000, 5.265e-05, 5.278e-05, 5.265e-05, 5.27e-05, 47150.95793759], [1517158860000, 5.273e-05, 5.296e-05, 5.273e-05, 5.296e-05, 1870.89714516], [1517158920000, 5.296e-05, 5.296e-05, 5.296e-05, 5.296e-05, 20833.41460818], [1517158980000, 5.295e-05, 5.296e-05, 5.28e-05, 5.28e-05, 9836.56869909], [1517159040000, 5.278e-05, 5.28e-05, 5.259e-05, 5.26e-05, 53234.19900246], [1517159100000, 5.26e-05, 5.279e-05, 5.257e-05, 5.26e-05, 20640.7876995], [1517159160000, 5.261e-05, 5.261e-05, 5.254e-05, 5.254e-05, 205562.39373885], [1517159220000, 5.261e-05, 5.28e-05, 5.258e-05, 5.264e-05, 5724.18217335], [1517159280000, 5.259e-05, 5.259e-05, 5.254e-05, 5.255e-05, 69717.06893275], [1517159340000, 5.254e-05, 5.256e-05, 5.228e-05, 5.256e-05, 65358.49540308], [1517159400000, 5.256e-05, 5.26e-05, 5.256e-05, 5.26e-05, 1855.82135617], [1517159460000, 5.26e-05, 5.261e-05, 5.26e-05, 5.261e-05, 2487.40264714], [1517159520000, 5.263e-05, 5.263e-05, 5.237e-05, 5.263e-05, 20082.50293195], [1517159580000, 5.248e-05, 5.262e-05, 5.248e-05, 5.262e-05, 163.0035981], [1517159640000, 5.261e-05, 5.272e-05, 5.253e-05, 5.272e-05, 2353.18824066], [1517159700000, 5.259e-05, 5.272e-05, 5.259e-05, 5.263e-05, 5198.58007869], [1517159760000, 5.263e-05, 5.263e-05, 5.261e-05, 5.261e-05, 5549.13046205], [1517159820000, 5.261e-05, 5.272e-05, 5.261e-05, 5.261e-05, 2320.11070813], [1517159880000, 5.262e-05, 5.272e-05, 5.262e-05, 5.27e-05, 830.39964868], [1517159940000, 5.269e-05, 5.27e-05, 5.261e-05, 5.261e-05, 1482.31933856], [1517160000000, 5.27e-05, 5.272e-05, 5.27e-05, 5.272e-05, 1340.5251376], [1517160060000, 5.272e-05, 5.272e-05, 5.27e-05, 5.272e-05, 370.04234841], [1517160120000, 5.272e-05, 5.272e-05, 5.27e-05, 5.271e-05, 4893.65499156], [1517160180000, 5.271e-05, 5.272e-05, 5.271e-05, 5.272e-05, 9977.74791655], [1517160240000, 5.271e-05, 5.272e-05, 5.271e-05, 5.272e-05, 328.75338018], [1517160300000, 5.272e-05, 5.273e-05, 5.272e-05, 5.272e-05, 5363.03987268], [1517160360000, 5.274e-05, 5.275e-05, 5.272e-05, 5.272e-05, 8792.75907662], [1517160420000, 5.272e-05, 5.297e-05, 5.272e-05, 5.297e-05, 73340.81434621], [1517160480000, 5.297e-05, 5.297e-05, 5.278e-05, 5.292e-05, 11308.1727168], [1517160540000, 5.28e-05, 5.28e-05, 5.28e-05, 5.28e-05, 1000.0], [1517160600000, 5.281e-05, 5.281e-05, 5.28e-05, 5.281e-05, 11143.67505399], [1517160660000, 5.28e-05, 5.292e-05, 5.28e-05, 5.292e-05, 7511.48420377], [1517160720000, 5.292e-05, 5.298e-05, 5.281e-05, 5.292e-05, 10751.81020752], [1517160780000, 5.291e-05, 5.291e-05, 5.281e-05, 5.291e-05, 8624.22262981], [1517160840000, 5.291e-05, 5.291e-05, 5.291e-05, 5.291e-05, 24463.06432842], [1517160900000, 5.284e-05, 5.291e-05, 5.281e-05, 5.291e-05, 17268.09024684], [1517160960000, 5.285e-05, 5.291e-05, 5.285e-05, 5.291e-05, 3089.60615105], [1517161020000, 5.291e-05, 5.299e-05, 5.291e-05, 5.299e-05, 4305.0028927], [1517161080000, 5.298e-05, 5.3e-05, 5.298e-05, 5.299e-05, 9914.5869288], [1517161140000, 5.3e-05, 5.31e-05, 5.3e-05, 5.31e-05, 55161.16930185], [1517161200000, 5.309e-05, 5.31e-05, 5.299e-05, 5.299e-05, 6860.34213765], [1517161260000, 5.311e-05, 5.311e-05, 5.309e-05, 5.309e-05, 5032.6002412], [1517161320000, 5.311e-05, 5.312e-05, 5.31e-05, 5.312e-05, 9327.10937403], [1517161380000, 5.311e-05, 5.312e-05, 5.31e-05, 5.311e-05, 11147.02407378], [1517161440000, 5.312e-05, 5.312e-05, 5.31e-05, 5.31e-05, 2798.3017382], [1517161500000, 5.311e-05, 5.312e-05, 5.311e-05, 5.312e-05, 12314.38462101], [1517161560000, 5.312e-05, 5.315e-05, 5.312e-05, 5.315e-05, 4689.96415479], [1517161620000, 5.313e-05, 5.32e-05, 5.311e-05, 5.313e-05, 17972.16797399], [1517161680000, 5.313e-05, 5.313e-05, 5.311e-05, 5.311e-05, 8555.66630762], [1517161740000, 5.31e-05, 5.311e-05, 5.31e-05, 5.31e-05, 5948.52722133], [1517161800000, 5.311e-05, 5.311e-05, 5.31e-05, 5.311e-05, 518.20923778], [1517161860000, 5.311e-05, 5.312e-05, 5.311e-05, 5.312e-05, 1975.0710702], [1517161920000, 5.31e-05, 5.311e-05, 5.31e-05, 5.31e-05, 4445.05699754], [1517161980000, 5.311e-05, 5.312e-05, 5.311e-05, 5.311e-05, 27148.18853786], [1517162040000, 5.307e-05, 5.312e-05, 5.301e-05, 5.312e-05, 20219.29818963], [1517162100000, 5.301e-05, 5.312e-05, 5.301e-05, 5.312e-05, 55749.80905324], [1517162160000, 5.306e-05, 5.312e-05, 5.306e-05, 5.312e-05, 249.67085798], [1517162220000, 5.312e-05, 5.312e-05, 5.301e-05, 5.306e-05, 6038.80048565], [1517162280000, 5.301e-05, 5.306e-05, 5.301e-05, 5.301e-05, 3228.5738975], [1517162340000, 5.301e-05, 5.301e-05, 5.281e-05, 5.285e-05, 21186.21743769], [1517162400000, 5.285e-05, 5.285e-05, 5.28e-05, 5.285e-05, 10330.27450968], [1517162460000, 5.285e-05, 5.3e-05, 5.285e-05, 5.285e-05, 1676.31615165], [1517162520000, 5.28e-05, 5.285e-05, 5.275e-05, 5.275e-05, 67228.09450926], [1517162580000, 5.275e-05, 5.285e-05, 5.275e-05, 5.285e-05, 8607.15766404], [1517162640000, 5.285e-05, 5.31e-05, 5.279e-05, 5.31e-05, 4952.36463947], [1517162700000, 5.285e-05, 5.285e-05, 5.274e-05, 5.274e-05, 12079.0450578], [1517162760000, 5.276e-05, 5.276e-05, 5.274e-05, 5.275e-05, 8201.48964253], [1517162820000, 5.275e-05, 5.275e-05, 5.274e-05, 5.275e-05, 19846.79740843], [1517162880000, 5.276e-05, 5.309e-05, 5.276e-05, 5.309e-05, 211.7884239], [1517162940000, 5.31e-05, 5.31e-05, 5.309e-05, 5.309e-05, 3075.18145562], [1517163000000, 5.309e-05, 5.309e-05, 5.306e-05, 5.309e-05, 4475.58225325], [1517163060000, 5.3e-05, 5.309e-05, 5.3e-05, 5.309e-05, 13022.40257738], [1517163120000, 5.31e-05, 5.31e-05, 5.309e-05, 5.309e-05, 5952.89135366], [1517163180000, 5.309e-05, 5.31e-05, 5.29e-05, 5.309e-05, 9446.28371454], [1517163240000, 5.31e-05, 5.31e-05, 5.309e-05, 5.31e-05, 2211.35471601], [1517163300000, 5.31e-05, 5.312e-05, 5.308e-05, 5.311e-05, 7631.95762285], [1517163360000, 5.297e-05, 5.311e-05, 5.297e-05, 5.305e-05, 2947.61233895], [1517163420000, 5.31e-05, 5.31e-05, 5.297e-05, 5.297e-05, 6056.68687873], [1517163480000, 5.297e-05, 5.297e-05, 5.292e-05, 5.293e-05, 155.81366811], [1517163540000, 5.293e-05, 5.303e-05, 5.292e-05, 5.303e-05, 4914.24379396], [1517163600000, 5.293e-05, 5.304e-05, 5.293e-05, 5.303e-05, 2175.51378703], [1517163660000, 5.292e-05, 5.301e-05, 5.292e-05, 5.301e-05, 6335.60063012], [1517163720000, 5.301e-05, 5.304e-05, 5.293e-05, 5.301e-05, 1651.66635181], [1517163780000, 5.293e-05, 5.301e-05, 5.29e-05, 5.29e-05, 4250.14125559], [1517163840000, 5.29e-05, 5.301e-05, 5.29e-05, 5.29e-05, 4287.61280343], [1517163900000, 5.301e-05, 5.301e-05, 5.29e-05, 5.292e-05, 595.29460781], [1517163960000, 5.299e-05, 5.301e-05, 5.292e-05, 5.292e-05, 30319.34183616], [1517164020000, 5.292e-05, 5.292e-05, 5.292e-05, 5.292e-05, 1226.66666666], [1517164080000, 5.302e-05, 5.302e-05, 5.293e-05, 5.293e-05, 6501.01713513], [1517164140000, 5.301e-05, 5.301e-05, 5.29e-05, 5.297e-05, 17912.16634026], [1517164200000, 5.3e-05, 5.3e-05, 5.297e-05, 5.297e-05, 2493.81606897], [1517164260000, 5.298e-05, 5.301e-05, 5.297e-05, 5.301e-05, 1002.27226076], [1517164320000, 5.3e-05, 5.302e-05, 5.285e-05, 5.302e-05, 23569.33427544], [1517164380000, 5.302e-05, 5.302e-05, 5.285e-05, 5.29e-05, 13826.24654548], [1517164440000, 5.29e-05, 5.295e-05, 5.29e-05, 5.29e-05, 25372.4381037], [1517164500000, 5.29e-05, 5.295e-05, 5.285e-05, 5.295e-05, 52736.44673387], [1517164560000, 5.295e-05, 5.301e-05, 5.285e-05, 5.285e-05, 7650.04205155], [1517164620000, 5.3e-05, 5.3e-05, 5.285e-05, 5.289e-05, 12254.26987204], [1517164680000, 5.285e-05, 5.302e-05, 5.285e-05, 5.285e-05, 19486.63728777], [1517164740000, 5.285e-05, 5.299e-05, 5.285e-05, 5.285e-05, 3363.1677873], [1517164800000, 5.285e-05, 5.286e-05, 5.285e-05, 5.285e-05, 9365.80660721], [1517164860000, 5.283e-05, 5.285e-05, 5.283e-05, 5.283e-05, 4704.84158188], [1517164920000, 5.283e-05, 5.284e-05, 5.283e-05, 5.284e-05, 7584.89332271], [1517164980000, 5.283e-05, 5.285e-05, 5.283e-05, 5.285e-05, 1055.72750449], [1517165040000, 5.283e-05, 5.298e-05, 5.283e-05, 5.284e-05, 8445.41300198], [1517165100000, 5.285e-05, 5.285e-05, 5.284e-05, 5.284e-05, 365.33279843], [1517165160000, 5.284e-05, 5.298e-05, 5.284e-05, 5.298e-05, 1256.3270757], [1517165220000, 5.298e-05, 5.298e-05, 5.284e-05, 5.284e-05, 266.67461461], [1517165280000, 5.284e-05, 5.285e-05, 5.284e-05, 5.285e-05, 184.15487509], [1517165340000, 5.298e-05, 5.298e-05, 5.285e-05, 5.298e-05, 3731.18448774], [1517165400000, 5.29e-05, 5.298e-05, 5.289e-05, 5.297e-05, 3421.22906373], [1517165460000, 5.289e-05, 5.295e-05, 5.288e-05, 5.288e-05, 6099.99528729], [1517165520000, 5.285e-05, 5.288e-05, 5.285e-05, 5.286e-05, 1405.11791904], [1517165580000, 5.288e-05, 5.288e-05, 5.283e-05, 5.283e-05, 164235.22791932], [1517165640000, 5.281e-05, 5.282e-05, 5.281e-05, 5.281e-05, 562.54136283], [1517165700000, 5.281e-05, 5.283e-05, 5.281e-05, 5.282e-05, 3116.85454692], [1517165760000, 5.283e-05, 5.283e-05, 5.278e-05, 5.278e-05, 4387.53591178], [1517165820000, 5.283e-05, 5.283e-05, 5.275e-05, 5.275e-05, 5917.52701206], [1517165880000, 5.274e-05, 5.274e-05, 5.272e-05, 5.274e-05, 429.49216613], [1517165940000, 5.272e-05, 5.272e-05, 5.272e-05, 5.272e-05, 2147.47259987], [1517166000000, 5.273e-05, 5.274e-05, 5.272e-05, 5.272e-05, 3489.40607088], [1517166060000, 5.271e-05, 5.271e-05, 5.27e-05, 5.27e-05, 3626.99464126], [1517166120000, 5.27e-05, 5.271e-05, 5.27e-05, 5.271e-05, 6763.54973185], [1517166180000, 5.272e-05, 5.272e-05, 5.271e-05, 5.272e-05, 4467.16093491], [1517166240000, 5.272e-05, 5.283e-05, 5.271e-05, 5.272e-05, 4893.69369819], [1517166300000, 5.272e-05, 5.272e-05, 5.272e-05, 5.272e-05, 20.91236722], [1517166360000, 5.273e-05, 5.283e-05, 5.272e-05, 5.272e-05, 5468.04976739], [1517166420000, 5.276e-05, 5.276e-05, 5.271e-05, 5.274e-05, 2743.99803861], [1517166480000, 5.274e-05, 5.298e-05, 5.274e-05, 5.298e-05, 18647.5602078], [1517166540000, 5.294e-05, 5.294e-05, 5.29e-05, 5.29e-05, 3967.0308566], [1517166600000, 5.29e-05, 5.294e-05, 5.272e-05, 5.29e-05, 13520.22586726], [1517166660000, 5.29e-05, 5.294e-05, 5.272e-05, 5.272e-05, 1612.98590434], [1517166720000, 5.288e-05, 5.288e-05, 5.272e-05, 5.272e-05, 4042.09662836], [1517166780000, 5.271e-05, 5.278e-05, 5.271e-05, 5.278e-05, 9355.81894132], [1517166840000, 5.28e-05, 5.28e-05, 5.278e-05, 5.278e-05, 2881.28993318], [1517166900000, 5.279e-05, 5.279e-05, 5.277e-05, 5.277e-05, 21336.80678621], [1517166960000, 5.279e-05, 5.279e-05, 5.277e-05, 5.277e-05, 9688.29988673], [1517167020000, 5.277e-05, 5.277e-05, 5.277e-05, 5.277e-05, 7320.08518823], [1517167080000, 5.277e-05, 5.278e-05, 5.277e-05, 5.277e-05, 2958.43139165], [1517167140000, 5.278e-05, 5.278e-05, 5.277e-05, 5.278e-05, 45282.2468118], [1517167200000, 5.277e-05, 5.278e-05, 5.277e-05, 5.278e-05, 11687.29603314], [1517167260000, 5.278e-05, 5.279e-05, 5.271e-05, 5.271e-05, 89442.16236966], [1517167320000, 5.272e-05, 5.272e-05, 5.272e-05, 5.272e-05, 150.0], [1517167380000, 5.284e-05, 5.288e-05, 5.276e-05, 5.276e-05, 9669.89677712], [1517167440000, 5.276e-05, 5.288e-05, 5.276e-05, 5.285e-05, 42413.85196804], [1517167500000, 5.286e-05, 5.295e-05, 5.285e-05, 5.285e-05, 1747.03362107], [1517167560000, 5.292e-05, 5.296e-05, 5.285e-05, 5.286e-05, 6857.90154929], [1517167620000, 5.286e-05, 5.293e-05, 5.286e-05, 5.293e-05, 1150.32110868], [1517167680000, 5.293e-05, 5.293e-05, 5.285e-05, 5.293e-05, 6647.54485412], [1517167740000, 5.285e-05, 5.293e-05, 5.285e-05, 5.293e-05, 5106.49081548], [1517167800000, 5.292e-05, 5.293e-05, 5.285e-05, 5.285e-05, 11756.867773], [1517167860000, 5.285e-05, 5.286e-05, 5.285e-05, 5.285e-05, 41.7218543], [1517167920000, 5.285e-05, 5.287e-05, 5.276e-05, 5.276e-05, 11643.27253785], [1517167980000, 5.276e-05, 5.276e-05, 5.274e-05, 5.274e-05, 292.63973694], [1517168040000, 5.275e-05, 5.275e-05, 5.272e-05, 5.272e-05, 5731.27376982], [1517168100000, 5.271e-05, 5.274e-05, 5.271e-05, 5.271e-05, 6988.90841122], [1517168160000, 5.274e-05, 5.276e-05, 5.274e-05, 5.276e-05, 2854.27031687], [1517168220000, 5.276e-05, 5.282e-05, 5.276e-05, 5.276e-05, 5667.55062397], [1517168280000, 5.276e-05, 5.283e-05, 5.276e-05, 5.276e-05, 10273.12481507], [1517168340000, 5.276e-05, 5.276e-05, 5.27e-05, 5.27e-05, 26655.6671976], [1517168400000, 5.271e-05, 5.274e-05, 5.271e-05, 5.272e-05, 19197.59072837], [1517168460000, 5.272e-05, 5.276e-05, 5.272e-05, 5.272e-05, 31479.82454665], [1517168520000, 5.272e-05, 5.276e-05, 5.27e-05, 5.276e-05, 24008.16042276], [1517168580000, 5.27e-05, 5.276e-05, 5.27e-05, 5.27e-05, 7182.78103287], [1517168640000, 5.269e-05, 5.27e-05, 5.269e-05, 5.269e-05, 12518.402554], [1517168700000, 5.268e-05, 5.268e-05, 5.266e-05, 5.268e-05, 2260.34960291], [1517168760000, 5.268e-05, 5.27e-05, 5.268e-05, 5.268e-05, 5915.18346413], [1517168820000, 5.268e-05, 5.268e-05, 5.265e-05, 5.265e-05, 6187.79665994], [1517168880000, 5.267e-05, 5.267e-05, 5.265e-05, 5.265e-05, 3475.36654048], [1517168940000, 5.265e-05, 5.265e-05, 5.262e-05, 5.262e-05, 2535.18207427], [1517169000000, 5.261e-05, 5.261e-05, 5.253e-05, 5.253e-05, 10998.72261528], [1517169060000, 5.253e-05, 5.255e-05, 5.241e-05, 5.25e-05, 9429.93048483], [1517169120000, 5.255e-05, 5.255e-05, 5.245e-05, 5.255e-05, 15703.46445918], [1517169180000, 5.259e-05, 5.26e-05, 5.255e-05, 5.259e-05, 1525.47501015], [1517169240000, 5.259e-05, 5.263e-05, 5.255e-05, 5.255e-05, 9958.10082534], [1517169300000, 5.262e-05, 5.263e-05, 5.262e-05, 5.263e-05, 3570.44525252], [1517169360000, 5.262e-05, 5.263e-05, 5.262e-05, 5.262e-05, 2473.31149249], [1517169420000, 5.262e-05, 5.263e-05, 5.262e-05, 5.263e-05, 3823.46778823], [1517169480000, 5.262e-05, 5.263e-05, 5.262e-05, 5.262e-05, 53571.1948293], [1517169540000, 5.262e-05, 5.266e-05, 5.255e-05, 5.266e-05, 11391.53413231], [1517169600000, 5.266e-05, 5.267e-05, 5.243e-05, 5.267e-05, 3678.43304654], [1517169660000, 5.243e-05, 5.266e-05, 5.243e-05, 5.262e-05, 1819.40373319], [1517169720000, 5.262e-05, 5.262e-05, 5.222e-05, 5.262e-05, 108705.35335146], [1517169780000, 5.262e-05, 5.262e-05, 5.215e-05, 5.262e-05, 119230.74607663], [1517169840000, 5.261e-05, 5.267e-05, 5.261e-05, 5.267e-05, 3035.96346351], [1517169900000, 5.242e-05, 5.259e-05, 5.242e-05, 5.258e-05, 1983.66854462], [1517169960000, 5.242e-05, 5.259e-05, 5.23e-05, 5.23e-05, 23168.42905595], [1517170020000, 5.23e-05, 5.231e-05, 5.23e-05, 5.23e-05, 9115.34501397], [1517170080000, 5.23e-05, 5.259e-05, 5.23e-05, 5.232e-05, 10065.21971066], [1517170140000, 5.232e-05, 5.258e-05, 5.204e-05, 5.258e-05, 128045.56432602], [1517170200000, 5.226e-05, 5.259e-05, 5.205e-05, 5.208e-05, 4987.99526328], [1517170260000, 5.25e-05, 5.258e-05, 5.215e-05, 5.258e-05, 25727.8212878], [1517170320000, 5.256e-05, 5.256e-05, 5.256e-05, 5.256e-05, 1630.01528644], [1517170380000, 5.253e-05, 5.253e-05, 5.236e-05, 5.253e-05, 3523.03226964], [1517170440000, 5.236e-05, 5.25e-05, 5.226e-05, 5.25e-05, 1689.93504786], [1517170500000, 5.25e-05, 5.25e-05, 5.22e-05, 5.25e-05, 42767.21154884], [1517170560000, 5.235e-05, 5.25e-05, 5.207e-05, 5.249e-05, 28685.60913714], [1517170620000, 5.249e-05, 5.249e-05, 5.208e-05, 5.248e-05, 17156.01870852], [1517170680000, 5.246e-05, 5.247e-05, 5.221e-05, 5.245e-05, 1293.646965], [1517170740000, 5.245e-05, 5.245e-05, 5.222e-05, 5.223e-05, 8967.56859545], [1517170800000, 5.244e-05, 5.245e-05, 5.224e-05, 5.225e-05, 7632.99258522], [1517170860000, 5.225e-05, 5.237e-05, 5.223e-05, 5.223e-05, 15815.90993249], [1517170920000, 5.234e-05, 5.234e-05, 5.205e-05, 5.224e-05, 41641.97217796], [1517170980000, 5.224e-05, 5.224e-05, 5.211e-05, 5.216e-05, 10875.40465492], [1517171040000, 5.224e-05, 5.24e-05, 5.216e-05, 5.24e-05, 8548.27446324], [1517171100000, 5.224e-05, 5.224e-05, 5.211e-05, 5.216e-05, 9650.57133951], [1517171160000, 5.216e-05, 5.235e-05, 5.216e-05, 5.235e-05, 10138.85266855], [1517171220000, 5.234e-05, 5.235e-05, 5.219e-05, 5.219e-05, 7421.66679203], [1517171280000, 5.22e-05, 5.234e-05, 5.22e-05, 5.234e-05, 16875.1430339], [1517171340000, 5.22e-05, 5.232e-05, 5.219e-05, 5.219e-05, 1284.18812086], [1517171400000, 5.219e-05, 5.229e-05, 5.212e-05, 5.229e-05, 13361.55743891], [1517171460000, 5.215e-05, 5.229e-05, 5.215e-05, 5.217e-05, 4523.12896099], [1517171520000, 5.217e-05, 5.218e-05, 5.216e-05, 5.218e-05, 17297.24906457], [1517171580000, 5.216e-05, 5.218e-05, 5.215e-05, 5.218e-05, 26981.9096304], [1517171640000, 5.229e-05, 5.23e-05, 5.213e-05, 5.216e-05, 19779.1501458], [1517171700000, 5.215e-05, 5.229e-05, 5.21e-05, 5.216e-05, 24532.24963862], [1517171760000, 5.21e-05, 5.216e-05, 5.21e-05, 5.212e-05, 13702.11823734], [1517171820000, 5.212e-05, 5.212e-05, 5.202e-05, 5.212e-05, 16372.50402049], [1517171880000, 5.206e-05, 5.216e-05, 5.206e-05, 5.216e-05, 9393.54866286], [1517171940000, 5.216e-05, 5.229e-05, 5.215e-05, 5.22e-05, 7251.97328456], [1517172000000, 5.22e-05, 5.229e-05, 5.22e-05, 5.229e-05, 14906.66189736], [1517172060000, 5.229e-05, 5.23e-05, 5.229e-05, 5.23e-05, 6015.70660064], [1517172120000, 5.23e-05, 5.23e-05, 5.22e-05, 5.229e-05, 7194.74578134], [1517172180000, 5.229e-05, 5.229e-05, 5.221e-05, 5.228e-05, 4367.76110773], [1517172240000, 5.229e-05, 5.229e-05, 5.228e-05, 5.229e-05, 3543.47552108], [1517172300000, 5.229e-05, 5.23e-05, 5.229e-05, 5.23e-05, 544.27498317], [1517172360000, 5.229e-05, 5.23e-05, 5.221e-05, 5.229e-05, 3310.58083289], [1517172420000, 5.229e-05, 5.229e-05, 5.221e-05, 5.229e-05, 5066.36870657], [1517172480000, 5.229e-05, 5.229e-05, 5.222e-05, 5.228e-05, 689.95902344], [1517172540000, 5.222e-05, 5.229e-05, 5.219e-05, 5.219e-05, 25006.03582851], [1517172600000, 5.218e-05, 5.219e-05, 5.211e-05, 5.213e-05, 18923.00311589], [1517172660000, 5.21e-05, 5.225e-05, 5.2e-05, 5.205e-05, 16144.35700072], [1517172720000, 5.21e-05, 5.225e-05, 5.205e-05, 5.21e-05, 16620.70720086], [1517172780000, 5.21e-05, 5.224e-05, 5.21e-05, 5.224e-05, 14129.39142442], [1517172840000, 5.224e-05, 5.224e-05, 5.21e-05, 5.21e-05, 1081.32422095], [1517172900000, 5.211e-05, 5.211e-05, 5.21e-05, 5.21e-05, 1950.10996516], [1517172960000, 5.21e-05, 5.211e-05, 5.21e-05, 5.211e-05, 8417.71008846], [1517173020000, 5.21e-05, 5.211e-05, 5.2e-05, 5.201e-05, 8007.70464581], [1517173080000, 5.205e-05, 5.211e-05, 5.202e-05, 5.203e-05, 3540.51151208], [1517173140000, 5.21e-05, 5.211e-05, 5.203e-05, 5.206e-05, 2667.86823506], [1517173200000, 5.211e-05, 5.22e-05, 5.21e-05, 5.211e-05, 14251.55185099], [1517173260000, 5.211e-05, 5.211e-05, 5.21e-05, 5.21e-05, 16149.79923819], [1517173320000, 5.211e-05, 5.22e-05, 5.2e-05, 5.211e-05, 22599.66506772], [1517173380000, 5.22e-05, 5.22e-05, 5.21e-05, 5.211e-05, 8406.59712056], [1517173440000, 5.211e-05, 5.211e-05, 5.206e-05, 5.208e-05, 4459.43822301], [1517173500000, 5.208e-05, 5.21e-05, 5.207e-05, 5.21e-05, 2284.73359791], [1517173560000, 5.208e-05, 5.211e-05, 5.208e-05, 5.211e-05, 3454.56434124], [1517173620000, 5.211e-05, 5.211e-05, 5.209e-05, 5.209e-05, 4172.28511515], [1517173680000, 5.21e-05, 5.211e-05, 5.21e-05, 5.21e-05, 20965.50702339], [1517173740000, 5.209e-05, 5.21e-05, 5.208e-05, 5.208e-05, 41718.80775725], [1517173800000, 5.21e-05, 5.21e-05, 5.207e-05, 5.21e-05, 13935.1309518], [1517173860000, 5.21e-05, 5.211e-05, 5.207e-05, 5.207e-05, 6787.16914373], [1517173920000, 5.212e-05, 5.212e-05, 5.207e-05, 5.207e-05, 1364.19611916], [1517173980000, 5.207e-05, 5.212e-05, 5.2e-05, 5.207e-05, 78764.15983947], [1517174040000, 5.207e-05, 5.207e-05, 5.201e-05, 5.203e-05, 1343.41108816], [1517174100000, 5.205e-05, 5.207e-05, 5.205e-05, 5.207e-05, 1800.603762], [1517174160000, 5.208e-05, 5.229e-05, 5.208e-05, 5.229e-05, 6999.13040681], [1517174220000, 5.22e-05, 5.229e-05, 5.21e-05, 5.22e-05, 477.07651515], [1517174280000, 5.22e-05, 5.229e-05, 5.21e-05, 5.229e-05, 7275.11441639], [1517174340000, 5.229e-05, 5.229e-05, 5.213e-05, 5.213e-05, 1308.57910017], [1517174400000, 5.224e-05, 5.225e-05, 5.212e-05, 5.225e-05, 16322.52671973], [1517174460000, 5.212e-05, 5.224e-05, 5.212e-05, 5.224e-05, 2959.15123909], [1517174520000, 5.225e-05, 5.23e-05, 5.224e-05, 5.23e-05, 26396.85798925], [1517174580000, 5.23e-05, 5.23e-05, 5.227e-05, 5.23e-05, 8014.98675671], [1517174640000, 5.23e-05, 5.234e-05, 5.23e-05, 5.23e-05, 5612.53962926], [1517174700000, 5.23e-05, 5.23e-05, 5.227e-05, 5.23e-05, 2411.69207398], [1517174760000, 5.231e-05, 5.235e-05, 5.231e-05, 5.235e-05, 2582.87290952], [1517174820000, 5.235e-05, 5.24e-05, 5.233e-05, 5.233e-05, 24414.37475785], [1517174880000, 5.233e-05, 5.233e-05, 5.23e-05, 5.23e-05, 42544.34503256], [1517174940000, 5.231e-05, 5.233e-05, 5.23e-05, 5.231e-05, 29602.24407615], [1517175000000, 5.23e-05, 5.231e-05, 5.216e-05, 5.231e-05, 15074.87559123], [1517175060000, 5.22e-05, 5.221e-05, 5.21e-05, 5.211e-05, 10776.79822735], [1517175120000, 5.216e-05, 5.218e-05, 5.216e-05, 5.218e-05, 11002.63247359], [1517175180000, 5.228e-05, 5.229e-05, 5.219e-05, 5.228e-05, 26007.91103386], [1517175240000, 5.228e-05, 5.229e-05, 5.22e-05, 5.228e-05, 19241.71187228], [1517175300000, 5.229e-05, 5.23e-05, 5.223e-05, 5.23e-05, 6087.57615908], [1517175360000, 5.231e-05, 5.232e-05, 5.219e-05, 5.23e-05, 39766.57597297], [1517175420000, 5.23e-05, 5.245e-05, 5.22e-05, 5.243e-05, 70920.1936257], [1517175480000, 5.246e-05, 5.246e-05, 5.23e-05, 5.231e-05, 2744.74042203], [1517175540000, 5.232e-05, 5.233e-05, 5.23e-05, 5.23e-05, 34224.24700721], [1517175600000, 5.231e-05, 5.232e-05, 5.227e-05, 5.228e-05, 42971.63532653], [1517175660000, 5.228e-05, 5.237e-05, 5.228e-05, 5.231e-05, 53562.09409411], [1517175720000, 5.231e-05, 5.243e-05, 5.229e-05, 5.229e-05, 15113.4039737], [1517175780000, 5.229e-05, 5.241e-05, 5.229e-05, 5.241e-05, 16761.3299269], [1517175840000, 5.229e-05, 5.235e-05, 5.229e-05, 5.229e-05, 26353.33956011], [1517175900000, 5.229e-05, 5.23e-05, 5.229e-05, 5.23e-05, 4808.38546164], [1517175960000, 5.23e-05, 5.23e-05, 5.226e-05, 5.226e-05, 25452.8842766], [1517176020000, 5.227e-05, 5.23e-05, 5.224e-05, 5.225e-05, 26188.00620693], [1517176080000, 5.225e-05, 5.23e-05, 5.219e-05, 5.223e-05, 47848.13631997], [1517176140000, 5.223e-05, 5.231e-05, 5.21e-05, 5.221e-05, 44214.73408683], [1517176200000, 5.225e-05, 5.225e-05, 5.21e-05, 5.223e-05, 51556.33716635], [1517176260000, 5.211e-05, 5.223e-05, 5.21e-05, 5.217e-05, 25669.95603545], [1517176320000, 5.223e-05, 5.223e-05, 5.21e-05, 5.22e-05, 43552.3075482], [1517176380000, 5.22e-05, 5.232e-05, 5.22e-05, 5.226e-05, 106114.23930933], [1517176440000, 5.227e-05, 5.235e-05, 5.225e-05, 5.231e-05, 17481.68290316], [1517176500000, 5.23e-05, 5.235e-05, 5.226e-05, 5.227e-05, 30176.70250623], [1517176560000, 5.227e-05, 5.235e-05, 5.227e-05, 5.235e-05, 5647.33951362], [1517176620000, 5.23e-05, 5.234e-05, 5.23e-05, 5.233e-05, 7289.34208364], [1517176680000, 5.231e-05, 5.242e-05, 5.231e-05, 5.233e-05, 13045.61344664], [1517176740000, 5.233e-05, 5.234e-05, 5.231e-05, 5.231e-05, 5875.13673413], [1517176800000, 5.231e-05, 5.242e-05, 5.227e-05, 5.227e-05, 7153.7955384], [1517176860000, 5.227e-05, 5.246e-05, 5.227e-05, 5.242e-05, 36826.14817612], [1517176920000, 5.242e-05, 5.246e-05, 5.241e-05, 5.242e-05, 31866.41877679], [1517176980000, 5.232e-05, 5.242e-05, 5.227e-05, 5.228e-05, 17368.80369666], [1517177040000, 5.241e-05, 5.241e-05, 5.229e-05, 5.235e-05, 23636.10941451], [1517177100000, 5.235e-05, 5.237e-05, 5.23e-05, 5.237e-05, 7490.13887606], [1517177160000, 5.237e-05, 5.238e-05, 5.237e-05, 5.238e-05, 19736.1376907], [1517177220000, 5.242e-05, 5.242e-05, 5.238e-05, 5.242e-05, 23586.07333021], [1517177280000, 5.242e-05, 5.242e-05, 5.239e-05, 5.239e-05, 54971.16335977], [1517177340000, 5.242e-05, 5.242e-05, 5.239e-05, 5.239e-05, 22160.53766018], [1517177400000, 5.24e-05, 5.245e-05, 5.238e-05, 5.245e-05, 14799.75053236], [1517177460000, 5.245e-05, 5.246e-05, 5.24e-05, 5.246e-05, 6983.97746924], [1517177520000, 5.24e-05, 5.245e-05, 5.237e-05, 5.237e-05, 9490.19799267], [1517177580000, 5.237e-05, 5.245e-05, 5.233e-05, 5.245e-05, 5020.88855555], [1517177640000, 5.239e-05, 5.246e-05, 5.231e-05, 5.231e-05, 52759.97112274], [1517177700000, 5.232e-05, 5.236e-05, 5.231e-05, 5.233e-05, 2324.14046862], [1517177760000, 5.235e-05, 5.246e-05, 5.22e-05, 5.232e-05, 30857.63998168], [1517177820000, 5.233e-05, 5.233e-05, 5.22e-05, 5.221e-05, 9922.75736008], [1517177880000, 5.226e-05, 5.232e-05, 5.221e-05, 5.221e-05, 26563.16512514], [1517177940000, 5.22e-05, 5.224e-05, 5.22e-05, 5.224e-05, 832.62663431], [1517178000000, 5.221e-05, 5.224e-05, 5.221e-05, 5.224e-05, 13313.78106751], [1517178060000, 5.221e-05, 5.224e-05, 5.218e-05, 5.218e-05, 56986.16094701], [1517178120000, 5.232e-05, 5.232e-05, 5.21e-05, 5.21e-05, 11223.49775447], [1517178180000, 5.21e-05, 5.217e-05, 5.207e-05, 5.208e-05, 88423.17770372], [1517178240000, 5.208e-05, 5.211e-05, 5.202e-05, 5.208e-05, 34914.28328412], [1517178300000, 5.205e-05, 5.212e-05, 5.201e-05, 5.211e-05, 68201.35607963], [1517178360000, 5.211e-05, 5.218e-05, 5.202e-05, 5.218e-05, 47572.02232877], [1517178420000, 5.23e-05, 5.23e-05, 5.219e-05, 5.219e-05, 18359.54507296], [1517178480000, 5.23e-05, 5.246e-05, 5.22e-05, 5.22e-05, 1856.94894866], [1517178540000, 5.238e-05, 5.238e-05, 5.22e-05, 5.22e-05, 11303.60337436], [1517178600000, 5.22e-05, 5.23e-05, 5.22e-05, 5.225e-05, 3746.59088196], [1517178660000, 5.225e-05, 5.227e-05, 5.22e-05, 5.22e-05, 18776.6550398], [1517178720000, 5.219e-05, 5.219e-05, 5.202e-05, 5.202e-05, 1893.9331943], [1517178780000, 5.218e-05, 5.218e-05, 5.211e-05, 5.218e-05, 35871.97907652], [1517178840000, 5.218e-05, 5.218e-05, 5.218e-05, 5.218e-05, 13863.9045075], [1517178900000, 5.216e-05, 5.216e-05, 5.211e-05, 5.211e-05, 8294.67804476], [1517178960000, 5.211e-05, 5.216e-05, 5.19e-05, 5.216e-05, 43875.30413729], [1517179020000, 5.216e-05, 5.236e-05, 5.216e-05, 5.236e-05, 22761.67172756], [1517179080000, 5.236e-05, 5.236e-05, 5.227e-05, 5.227e-05, 3171.37962622], [1517179140000, 5.236e-05, 5.236e-05, 5.228e-05, 5.236e-05, 7808.70584414], [1517179200000, 5.236e-05, 5.242e-05, 5.236e-05, 5.242e-05, 1570.00711689], [1517179260000, 5.242e-05, 5.242e-05, 5.236e-05, 5.24e-05, 10041.83217523], [1517179320000, 5.237e-05, 5.237e-05, 5.236e-05, 5.236e-05, 17915.16774209], [1517179380000, 5.236e-05, 5.237e-05, 5.232e-05, 5.232e-05, 50705.03216025], [1517179440000, 5.231e-05, 5.232e-05, 5.22e-05, 5.22e-05, 7000.2783733], [1517179500000, 5.231e-05, 5.231e-05, 5.22e-05, 5.227e-05, 23938.60440969], [1517179560000, 5.227e-05, 5.231e-05, 5.227e-05, 5.231e-05, 49447.88114047], [1517179620000, 5.228e-05, 5.23e-05, 5.227e-05, 5.227e-05, 4786.10012862], [1517179680000, 5.23e-05, 5.236e-05, 5.23e-05, 5.236e-05, 4238.03992283], [1517179740000, 5.236e-05, 5.246e-05, 5.227e-05, 5.23e-05, 10247.0096311], [1517179800000, 5.228e-05, 5.228e-05, 5.223e-05, 5.228e-05, 23932.23643423], [1517179860000, 5.228e-05, 5.244e-05, 5.228e-05, 5.244e-05, 46390.71288911], [1517179920000, 5.244e-05, 5.256e-05, 5.243e-05, 5.251e-05, 49899.06187587], [1517179980000, 5.251e-05, 5.256e-05, 5.251e-05, 5.251e-05, 31878.11073538], [1517180040000, 5.251e-05, 5.256e-05, 5.228e-05, 5.251e-05, 7839.46024268], [1517180100000, 5.242e-05, 5.245e-05, 5.242e-05, 5.242e-05, 24286.87146569], [1517180160000, 5.242e-05, 5.25e-05, 5.229e-05, 5.244e-05, 21516.23869958], [1517180220000, 5.25e-05, 5.25e-05, 5.189e-05, 5.189e-05, 67235.78606144], [1517180280000, 5.197e-05, 5.244e-05, 5.195e-05, 5.244e-05, 23519.4122513], [1517180340000, 5.219e-05, 5.242e-05, 5.175e-05, 5.231e-05, 175403.72432944], [1517180400000, 5.239e-05, 5.24e-05, 5.23e-05, 5.231e-05, 16036.74378987], [1517180460000, 5.232e-05, 5.245e-05, 5.231e-05, 5.245e-05, 77672.42666123], [1517180520000, 5.233e-05, 5.246e-05, 5.231e-05, 5.243e-05, 81328.03050274], [1517180580000, 5.243e-05, 5.243e-05, 5.223e-05, 5.226e-05, 5210.83417431], [1517180640000, 5.223e-05, 5.24e-05, 5.212e-05, 5.223e-05, 4173.01864957], [1517180700000, 5.223e-05, 5.238e-05, 5.212e-05, 5.223e-05, 14112.40967892], [1517180760000, 5.224e-05, 5.24e-05, 5.224e-05, 5.232e-05, 35054.48254233], [1517180820000, 5.232e-05, 5.243e-05, 5.225e-05, 5.242e-05, 80315.97249692], [1517180880000, 5.243e-05, 5.262e-05, 5.227e-05, 5.262e-05, 106583.0722612], [1517180940000, 5.26e-05, 5.26e-05, 5.228e-05, 5.228e-05, 23188.56372435], [1517181000000, 5.228e-05, 5.24e-05, 5.228e-05, 5.24e-05, 11516.55500472], [1517181060000, 5.237e-05, 5.237e-05, 5.218e-05, 5.218e-05, 25212.28399684], [1517181120000, 5.237e-05, 5.24e-05, 5.213e-05, 5.24e-05, 10478.78487838], [1517181180000, 5.237e-05, 5.237e-05, 5.214e-05, 5.23e-05, 7553.13039887], [1517181240000, 5.23e-05, 5.23e-05, 5.215e-05, 5.215e-05, 7550.6008378], [1517181300000, 5.217e-05, 5.234e-05, 5.215e-05, 5.23e-05, 14990.08834404], [1517181360000, 5.231e-05, 5.234e-05, 5.216e-05, 5.232e-05, 18322.42607774], [1517181420000, 5.234e-05, 5.234e-05, 5.232e-05, 5.233e-05, 7863.36480056], [1517181480000, 5.232e-05, 5.235e-05, 5.232e-05, 5.233e-05, 17606.33166939], [1517181540000, 5.233e-05, 5.234e-05, 5.225e-05, 5.234e-05, 25251.82424937], [1517181600000, 5.234e-05, 5.24e-05, 5.234e-05, 5.235e-05, 38346.72186594], [1517181660000, 5.235e-05, 5.263e-05, 5.234e-05, 5.24e-05, 22111.55429962], [1517181720000, 5.262e-05, 5.263e-05, 5.24e-05, 5.242e-05, 10759.01513131], [1517181780000, 5.242e-05, 5.264e-05, 5.242e-05, 5.264e-05, 5494.41617334], [1517181840000, 5.264e-05, 5.265e-05, 5.264e-05, 5.264e-05, 13879.21374135], [1517181900000, 5.263e-05, 5.264e-05, 5.227e-05, 5.264e-05, 33987.21892925], [1517181960000, 5.264e-05, 5.267e-05, 5.264e-05, 5.266e-05, 16426.11125987], [1517182020000, 5.264e-05, 5.266e-05, 5.237e-05, 5.265e-05, 18883.54076262], [1517182080000, 5.26e-05, 5.266e-05, 5.244e-05, 5.266e-05, 13531.06305155], [1517182140000, 5.26e-05, 5.266e-05, 5.26e-05, 5.261e-05, 15325.39303215], [1517182200000, 5.265e-05, 5.265e-05, 5.261e-05, 5.264e-05, 13942.80696207], [1517182260000, 5.264e-05, 5.265e-05, 5.264e-05, 5.264e-05, 70144.4249793], [1517182320000, 5.264e-05, 5.265e-05, 5.235e-05, 5.263e-05, 13667.21367408], [1517182380000, 5.263e-05, 5.266e-05, 5.239e-05, 5.264e-05, 17976.42032577], [1517182440000, 5.263e-05, 5.264e-05, 5.242e-05, 5.263e-05, 3644.47503442], [1517182500000, 5.264e-05, 5.264e-05, 5.243e-05, 5.264e-05, 22781.03807185], [1517182560000, 5.264e-05, 5.266e-05, 5.246e-05, 5.247e-05, 31956.78870671], [1517182620000, 5.264e-05, 5.266e-05, 5.243e-05, 5.266e-05, 19205.49580569], [1517182680000, 5.266e-05, 5.266e-05, 5.264e-05, 5.266e-05, 16275.7946545], [1517182740000, 5.265e-05, 5.27e-05, 5.265e-05, 5.27e-05, 15759.00914875], [1517182800000, 5.27e-05, 5.28e-05, 5.267e-05, 5.28e-05, 9651.49293569], [1517182860000, 5.278e-05, 5.282e-05, 5.278e-05, 5.278e-05, 8006.45936363], [1517182920000, 5.281e-05, 5.281e-05, 5.267e-05, 5.279e-05, 24224.46573662], [1517182980000, 5.28e-05, 5.282e-05, 5.279e-05, 5.279e-05, 6395.30451621], [1517183040000, 5.28e-05, 5.282e-05, 5.279e-05, 5.282e-05, 3196.2279887], [1517183100000, 5.282e-05, 5.283e-05, 5.282e-05, 5.283e-05, 16660.63721837], [1517183160000, 5.282e-05, 5.282e-05, 5.28e-05, 5.282e-05, 9155.19160381], [1517183220000, 5.282e-05, 5.283e-05, 5.28e-05, 5.28e-05, 11489.84028527], [1517183280000, 5.28e-05, 5.283e-05, 5.279e-05, 5.28e-05, 46973.13291805], [1517183340000, 5.284e-05, 5.284e-05, 5.281e-05, 5.281e-05, 4217.51274447], [1517183400000, 5.28e-05, 5.284e-05, 5.28e-05, 5.281e-05, 46953.99296424], [1517183460000, 5.285e-05, 5.295e-05, 5.284e-05, 5.295e-05, 14861.94849381], [1517183520000, 5.294e-05, 5.294e-05, 5.285e-05, 5.285e-05, 73847.02498488], [1517183580000, 5.293e-05, 5.295e-05, 5.281e-05, 5.281e-05, 26649.89253641], [1517183640000, 5.281e-05, 5.281e-05, 5.281e-05, 5.281e-05, 3934.83164858], [1517183700000, 5.281e-05, 5.295e-05, 5.281e-05, 5.294e-05, 15012.74354481], [1517183760000, 5.29e-05, 5.293e-05, 5.282e-05, 5.293e-05, 15114.9666769], [1517183820000, 5.294e-05, 5.3e-05, 5.293e-05, 5.298e-05, 28189.69227891], [1517183880000, 5.298e-05, 5.298e-05, 5.29e-05, 5.29e-05, 19908.61215964], [1517183940000, 5.291e-05, 5.291e-05, 5.282e-05, 5.282e-05, 20430.15288142], [1517184000000, 5.282e-05, 5.282e-05, 5.247e-05, 5.247e-05, 68617.36320583], [1517184060000, 5.268e-05, 5.268e-05, 5.268e-05, 5.268e-05, 3302.43437182], [1517184120000, 5.282e-05, 5.282e-05, 5.257e-05, 5.259e-05, 12202.06545221], [1517184180000, 5.259e-05, 5.259e-05, 5.243e-05, 5.245e-05, 56066.32971932], [1517184240000, 5.245e-05, 5.247e-05, 5.24e-05, 5.247e-05, 19926.68771798], [1517184300000, 5.24e-05, 5.247e-05, 5.237e-05, 5.24e-05, 43981.24593724], [1517184360000, 5.24e-05, 5.24e-05, 5.235e-05, 5.24e-05, 3181.9249827], [1517184420000, 5.237e-05, 5.241e-05, 5.23e-05, 5.238e-05, 38756.35888585], [1517184480000, 5.242e-05, 5.247e-05, 5.23e-05, 5.23e-05, 22778.44989675], [1517184540000, 5.245e-05, 5.247e-05, 5.23e-05, 5.23e-05, 3143.90837528], [1517184600000, 5.23e-05, 5.24e-05, 5.217e-05, 5.217e-05, 26432.13342796], [1517184660000, 5.229e-05, 5.229e-05, 5.213e-05, 5.213e-05, 21793.87188419], [1517184720000, 5.217e-05, 5.217e-05, 5.193e-05, 5.193e-05, 28049.39766132], [1517184780000, 5.2e-05, 5.208e-05, 5.197e-05, 5.2e-05, 23786.98935648], [1517184840000, 5.207e-05, 5.207e-05, 5.174e-05, 5.185e-05, 44853.83085513], [1517184900000, 5.178e-05, 5.207e-05, 5.178e-05, 5.207e-05, 30050.36440852], [1517184960000, 5.206e-05, 5.206e-05, 5.185e-05, 5.186e-05, 38233.02650556], [1517185020000, 5.185e-05, 5.185e-05, 5.175e-05, 5.185e-05, 101678.98002062], [1517185080000, 5.185e-05, 5.186e-05, 5.175e-05, 5.186e-05, 166237.89225787], [1517185140000, 5.186e-05, 5.237e-05, 5.175e-05, 5.217e-05, 18526.55761811], [1517185200000, 5.217e-05, 5.241e-05, 5.208e-05, 5.209e-05, 2962.25469966], [1517185260000, 5.209e-05, 5.24e-05, 5.209e-05, 5.21e-05, 6581.49535917], [1517185320000, 5.209e-05, 5.21e-05, 5.209e-05, 5.21e-05, 23926.54480111], [1517185380000, 5.209e-05, 5.21e-05, 5.188e-05, 5.21e-05, 46844.75924327], [1517185440000, 5.21e-05, 5.21e-05, 5.21e-05, 5.21e-05, 746.18587238], [1517185500000, 5.19e-05, 5.21e-05, 5.19e-05, 5.19e-05, 8052.67087304], [1517185560000, 5.19e-05, 5.2e-05, 5.19e-05, 5.191e-05, 2120.40364481], [1517185620000, 5.198e-05, 5.198e-05, 5.191e-05, 5.192e-05, 2857.72509051], [1517185680000, 5.198e-05, 5.199e-05, 5.191e-05, 5.191e-05, 7747.11673183], [1517185740000, 5.2e-05, 5.21e-05, 5.19e-05, 5.21e-05, 24902.83147616], [1517185800000, 5.239e-05, 5.241e-05, 5.199e-05, 5.199e-05, 33266.0945601], [1517185860000, 5.239e-05, 5.239e-05, 5.199e-05, 5.2e-05, 2146.81711699], [1517185920000, 5.202e-05, 5.202e-05, 5.2e-05, 5.202e-05, 28021.3976313], [1517185980000, 5.202e-05, 5.202e-05, 5.202e-05, 5.202e-05, 6278.33890017], [1517186040000, 5.219e-05, 5.238e-05, 5.219e-05, 5.238e-05, 32144.38754007], [1517186100000, 5.237e-05, 5.238e-05, 5.215e-05, 5.215e-05, 5562.7192182], [1517186160000, 5.219e-05, 5.23e-05, 5.219e-05, 5.23e-05, 5600.14576552], [1517186220000, 5.219e-05, 5.233e-05, 5.219e-05, 5.233e-05, 386.70009888], [1517186280000, 5.219e-05, 5.219e-05, 5.219e-05, 5.219e-05, 304.90029125], [1517186340000, 5.231e-05, 5.232e-05, 5.216e-05, 5.216e-05, 3958.11660203], [1517186400000, 5.23e-05, 5.239e-05, 5.23e-05, 5.23e-05, 11398.20336008], [1517186460000, 5.229e-05, 5.229e-05, 5.228e-05, 5.228e-05, 938.2318471], [1517186520000, 5.225e-05, 5.238e-05, 5.216e-05, 5.216e-05, 41102.91720316], [1517186580000, 5.216e-05, 5.238e-05, 5.216e-05, 5.22e-05, 8796.15417844], [1517186640000, 5.216e-05, 5.236e-05, 5.216e-05, 5.216e-05, 13049.01219281], [1517186700000, 5.216e-05, 5.216e-05, 5.21e-05, 5.21e-05, 11364.06032538], [1517186760000, 5.21e-05, 5.216e-05, 5.193e-05, 5.203e-05, 53362.44269992], [1517186820000, 5.195e-05, 5.216e-05, 5.195e-05, 5.202e-05, 60529.11086356], [1517186880000, 5.203e-05, 5.216e-05, 5.195e-05, 5.196e-05, 35224.79575205], [1517186940000, 5.214e-05, 5.214e-05, 5.18e-05, 5.213e-05, 9836.20446733], [1517187000000, 5.2e-05, 5.2e-05, 5.196e-05, 5.196e-05, 6060.6454921], [1517187060000, 5.196e-05, 5.199e-05, 5.196e-05, 5.197e-05, 2451.57927115], [1517187120000, 5.197e-05, 5.199e-05, 5.197e-05, 5.199e-05, 9937.26295238], [1517187180000, 5.199e-05, 5.213e-05, 5.199e-05, 5.203e-05, 9702.90004376], [1517187240000, 5.203e-05, 5.213e-05, 5.199e-05, 5.204e-05, 4046.52427224], [1517187300000, 5.204e-05, 5.23e-05, 5.204e-05, 5.23e-05, 93816.35526526], [1517187360000, 5.23e-05, 5.235e-05, 5.23e-05, 5.23e-05, 44178.73521384], [1517187420000, 5.23e-05, 5.235e-05, 5.23e-05, 5.23e-05, 15199.05484992], [1517187480000, 5.208e-05, 5.208e-05, 5.18e-05, 5.182e-05, 40240.29729012], [1517187540000, 5.188e-05, 5.207e-05, 5.188e-05, 5.188e-05, 4198.13556667], [1517187600000, 5.2e-05, 5.2e-05, 5.188e-05, 5.192e-05, 15223.78083513], [1517187660000, 5.192e-05, 5.2e-05, 5.187e-05, 5.2e-05, 10605.9847574], [1517187720000, 5.199e-05, 5.2e-05, 5.199e-05, 5.199e-05, 2929.98206113], [1517187780000, 5.199e-05, 5.2e-05, 5.195e-05, 5.195e-05, 14913.32337], [1517187840000, 5.194e-05, 5.195e-05, 5.194e-05, 5.194e-05, 871.27877946], [1517187900000, 5.195e-05, 5.195e-05, 5.194e-05, 5.195e-05, 11160.90172207], [1517187960000, 5.195e-05, 5.195e-05, 5.193e-05, 5.193e-05, 4053.81393529], [1517188020000, 5.193e-05, 5.194e-05, 5.188e-05, 5.193e-05, 4710.57822273], [1517188080000, 5.193e-05, 5.194e-05, 5.193e-05, 5.194e-05, 4087.20594743], [1517188140000, 5.193e-05, 5.194e-05, 5.193e-05, 5.194e-05, 2581.08114193], [1517188200000, 5.194e-05, 5.194e-05, 5.193e-05, 5.193e-05, 6073.46753776], [1517188260000, 5.193e-05, 5.193e-05, 5.181e-05, 5.193e-05, 5202.16878338], [1517188320000, 5.181e-05, 5.2e-05, 5.18e-05, 5.185e-05, 20685.10131716], [1517188380000, 5.185e-05, 5.208e-05, 5.178e-05, 5.186e-05, 1220.41280745], [1517188440000, 5.208e-05, 5.229e-05, 5.186e-05, 5.2e-05, 9237.16682543], [1517188500000, 5.2e-05, 5.229e-05, 5.188e-05, 5.226e-05, 28637.63940509], [1517188560000, 5.226e-05, 5.226e-05, 5.192e-05, 5.226e-05, 6162.64226388], [1517188620000, 5.21e-05, 5.215e-05, 5.209e-05, 5.209e-05, 9587.94071425], [1517188680000, 5.209e-05, 5.223e-05, 5.208e-05, 5.209e-05, 2596.82619726], [1517188740000, 5.209e-05, 5.209e-05, 5.191e-05, 5.191e-05, 49538.63435226], [1517188800000, 5.191e-05, 5.215e-05, 5.19e-05, 5.21e-05, 52868.80767117], [1517188860000, 5.209e-05, 5.215e-05, 5.183e-05, 5.2e-05, 75588.56891597], [1517188920000, 5.215e-05, 5.215e-05, 5.192e-05, 5.214e-05, 14494.45432896], [1517188980000, 5.214e-05, 5.215e-05, 5.201e-05, 5.215e-05, 46794.77528486], [1517189040000, 5.214e-05, 5.214e-05, 5.201e-05, 5.205e-05, 5174.79677667], [1517189100000, 5.205e-05, 5.215e-05, 5.205e-05, 5.215e-05, 35468.53294924], [1517189160000, 5.215e-05, 5.23e-05, 5.215e-05, 5.23e-05, 20552.92871702], [1517189220000, 5.235e-05, 5.25e-05, 5.198e-05, 5.202e-05, 197722.41089424], [1517189280000, 5.203e-05, 5.25e-05, 5.2e-05, 5.225e-05, 17538.18293199], [1517189340000, 5.25e-05, 5.25e-05, 5.204e-05, 5.206e-05, 66216.62452487], [1517189400000, 5.204e-05, 5.249e-05, 5.203e-05, 5.221e-05, 16964.1900971], [1517189460000, 5.221e-05, 5.231e-05, 5.214e-05, 5.231e-05, 1634.01913088], [1517189520000, 5.246e-05, 5.246e-05, 5.231e-05, 5.246e-05, 1331.25026425], [1517189580000, 5.231e-05, 5.247e-05, 5.231e-05, 5.247e-05, 22030.34556482], [1517189640000, 5.234e-05, 5.25e-05, 5.219e-05, 5.234e-05, 46281.27943165], [1517189700000, 5.249e-05, 5.249e-05, 5.223e-05, 5.224e-05, 19800.70604714], [1517189760000, 5.224e-05, 5.233e-05, 5.218e-05, 5.233e-05, 6335.33839645], [1517189820000, 5.233e-05, 5.234e-05, 5.233e-05, 5.233e-05, 7771.50390889], [1517189880000, 5.233e-05, 5.234e-05, 5.215e-05, 5.215e-05, 5097.04913323], [1517189940000, 5.22e-05, 5.234e-05, 5.22e-05, 5.233e-05, 28817.20681556], [1517190000000, 5.234e-05, 5.234e-05, 5.217e-05, 5.234e-05, 69040.8840278], [1517190060000, 5.234e-05, 5.234e-05, 5.217e-05, 5.22e-05, 2607.85087444], [1517190120000, 5.22e-05, 5.22e-05, 5.217e-05, 5.217e-05, 41843.71968193], [1517190180000, 5.217e-05, 5.217e-05, 5.203e-05, 5.203e-05, 28833.0861491], [1517190240000, 5.203e-05, 5.22e-05, 5.178e-05, 5.185e-05, 53271.94017811], [1517190300000, 5.185e-05, 5.22e-05, 5.18e-05, 5.18e-05, 664.30077392], [1517190360000, 5.192e-05, 5.192e-05, 5.177e-05, 5.185e-05, 2658.4203523], [1517190420000, 5.185e-05, 5.191e-05, 5.18e-05, 5.18e-05, 5468.63617277], [1517190480000, 5.182e-05, 5.2e-05, 5.177e-05, 5.2e-05, 12796.31569702], [1517190540000, 5.2e-05, 5.2e-05, 5.192e-05, 5.192e-05, 1386.04131632], [1517190600000, 5.197e-05, 5.2e-05, 5.193e-05, 5.2e-05, 2498.46683906], [1517190660000, 5.22e-05, 5.232e-05, 5.203e-05, 5.231e-05, 2448.5468324], [1517190720000, 5.22e-05, 5.22e-05, 5.22e-05, 5.22e-05, 372.99748526], [1517190780000, 5.22e-05, 5.232e-05, 5.22e-05, 5.22e-05, 962.71073899], [1517190840000, 5.22e-05, 5.22e-05, 5.22e-05, 5.22e-05, 7331.44418051], [1517190900000, 5.221e-05, 5.222e-05, 5.221e-05, 5.221e-05, 3445.1954165], [1517190960000, 5.221e-05, 5.221e-05, 5.193e-05, 5.194e-05, 24051.99102804], [1517191020000, 5.198e-05, 5.219e-05, 5.197e-05, 5.219e-05, 6231.61206454], [1517191080000, 5.201e-05, 5.231e-05, 5.2e-05, 5.22e-05, 7131.52649055], [1517191140000, 5.219e-05, 5.219e-05, 5.193e-05, 5.21e-05, 10051.00598338], [1517191200000, 5.21e-05, 5.21e-05, 5.18e-05, 5.19e-05, 32782.93602384], [1517191260000, 5.21e-05, 5.21e-05, 5.192e-05, 5.195e-05, 1631.30517806], [1517191320000, 5.196e-05, 5.21e-05, 5.195e-05, 5.21e-05, 7420.63180018], [1517191380000, 5.21e-05, 5.21e-05, 5.21e-05, 5.21e-05, 6218.86655765], [1517191440000, 5.21e-05, 5.21e-05, 5.177e-05, 5.199e-05, 31006.32531071], [1517191500000, 5.188e-05, 5.188e-05, 5.18e-05, 5.18e-05, 13896.73817821], [1517191560000, 5.187e-05, 5.187e-05, 5.18e-05, 5.182e-05, 2994.56635649], [1517191620000, 5.181e-05, 5.188e-05, 5.181e-05, 5.188e-05, 11070.62811122], [1517191680000, 5.188e-05, 5.188e-05, 5.182e-05, 5.182e-05, 6896.94008166], [1517191740000, 5.188e-05, 5.188e-05, 5.182e-05, 5.188e-05, 7212.98606883], [1517191800000, 5.183e-05, 5.185e-05, 5.183e-05, 5.183e-05, 2610.77128642], [1517191860000, 5.183e-05, 5.185e-05, 5.182e-05, 5.185e-05, 2170.26239671], [1517191920000, 5.185e-05, 5.185e-05, 5.185e-05, 5.185e-05, 10048.48005393], [1517191980000, 5.185e-05, 5.188e-05, 5.185e-05, 5.188e-05, 13304.49577952], [1517192040000, 5.186e-05, 5.186e-05, 5.183e-05, 5.185e-05, 5513.1719485], [1517192100000, 5.186e-05, 5.188e-05, 5.186e-05, 5.186e-05, 5262.56782582], [1517192160000, 5.186e-05, 5.188e-05, 5.186e-05, 5.188e-05, 5219.41501017], [1517192220000, 5.186e-05, 5.188e-05, 5.183e-05, 5.184e-05, 9117.27776944], [1517192280000, 5.188e-05, 5.19e-05, 5.186e-05, 5.19e-05, 38951.53633095], [1517192340000, 5.186e-05, 5.19e-05, 5.183e-05, 5.186e-05, 708.1522865], [1517192400000, 5.184e-05, 5.186e-05, 5.184e-05, 5.186e-05, 8503.65602211], [1517192460000, 5.187e-05, 5.21e-05, 5.186e-05, 5.21e-05, 8740.95189907], [1517192520000, 5.21e-05, 5.218e-05, 5.19e-05, 5.218e-05, 1973.44077044], [1517192580000, 5.192e-05, 5.218e-05, 5.191e-05, 5.218e-05, 14411.71087331], [1517192640000, 5.217e-05, 5.217e-05, 5.217e-05, 5.217e-05, 1890.42260478], [1517192700000, 5.217e-05, 5.219e-05, 5.217e-05, 5.218e-05, 1944.6472007], [1517192760000, 5.218e-05, 5.218e-05, 5.19e-05, 5.215e-05, 7182.44669619], [1517192820000, 5.215e-05, 5.215e-05, 5.21e-05, 5.21e-05, 715.38530087], [1517192880000, 5.21e-05, 5.21e-05, 5.184e-05, 5.184e-05, 8401.36922909], [1517192940000, 5.184e-05, 5.21e-05, 5.184e-05, 5.21e-05, 1880.60101884], [1517193000000, 5.21e-05, 5.21e-05, 5.209e-05, 5.209e-05, 2833.12333683], [1517193060000, 5.205e-05, 5.209e-05, 5.184e-05, 5.209e-05, 4670.58417933], [1517193120000, 5.209e-05, 5.21e-05, 5.209e-05, 5.209e-05, 3671.45877917], [1517193180000, 5.209e-05, 5.21e-05, 5.209e-05, 5.21e-05, 639.76695812], [1517193240000, 5.209e-05, 5.21e-05, 5.201e-05, 5.201e-05, 2815.7504383], [1517193300000, 5.201e-05, 5.209e-05, 5.2e-05, 5.209e-05, 4177.06063216], [1517193360000, 5.209e-05, 5.216e-05, 5.188e-05, 5.2e-05, 14554.89812476], [1517193420000, 5.199e-05, 5.2e-05, 5.199e-05, 5.2e-05, 2575.31796181], [1517193480000, 5.2e-05, 5.2e-05, 5.199e-05, 5.2e-05, 4672.20683053], [1517193540000, 5.2e-05, 5.2e-05, 5.199e-05, 5.199e-05, 5914.88015235], [1517193600000, 5.199e-05, 5.219e-05, 5.192e-05, 5.21e-05, 15301.20320589], [1517193660000, 5.215e-05, 5.216e-05, 5.215e-05, 5.215e-05, 12612.56564832], [1517193720000, 5.215e-05, 5.215e-05, 5.209e-05, 5.21e-05, 2588.15773232], [1517193780000, 5.211e-05, 5.215e-05, 5.211e-05, 5.215e-05, 1006.95457346], [1517193840000, 5.215e-05, 5.215e-05, 5.21e-05, 5.215e-05, 3088.56900656], [1517193900000, 5.215e-05, 5.215e-05, 5.211e-05, 5.211e-05, 3482.33368169], [1517193960000, 5.215e-05, 5.218e-05, 5.212e-05, 5.218e-05, 1394.26099969], [1517194020000, 5.219e-05, 5.219e-05, 5.212e-05, 5.212e-05, 12628.76150066], [1517194080000, 5.218e-05, 5.218e-05, 5.212e-05, 5.212e-05, 2305.83801975], [1517194140000, 5.212e-05, 5.218e-05, 5.212e-05, 5.212e-05, 1506.23059451], [1517194200000, 5.218e-05, 5.218e-05, 5.215e-05, 5.217e-05, 10700.42275143], [1517194260000, 5.218e-05, 5.23e-05, 5.218e-05, 5.23e-05, 68944.59604583], [1517194320000, 5.23e-05, 5.23e-05, 5.217e-05, 5.218e-05, 70841.46144409], [1517194380000, 5.218e-05, 5.218e-05, 5.217e-05, 5.217e-05, 12661.51709833], [1517194440000, 5.217e-05, 5.218e-05, 5.217e-05, 5.217e-05, 11892.71211764], [1517194500000, 5.217e-05, 5.218e-05, 5.217e-05, 5.218e-05, 933.16093998], [1517194560000, 5.218e-05, 5.218e-05, 5.211e-05, 5.211e-05, 10216.85659109], [1517194620000, 5.211e-05, 5.218e-05, 5.211e-05, 5.211e-05, 4289.52070738], [1517194680000, 5.218e-05, 5.218e-05, 5.218e-05, 5.218e-05, 526.19087773], [1517194740000, 5.217e-05, 5.218e-05, 5.217e-05, 5.218e-05, 2141.82641175], [1517194800000, 5.218e-05, 5.218e-05, 5.218e-05, 5.218e-05, 2521.1715729], [1517194860000, 5.218e-05, 5.218e-05, 5.212e-05, 5.218e-05, 2259.36643481], [1517194920000, 5.218e-05, 5.218e-05, 5.211e-05, 5.218e-05, 5159.35582471], [1517194980000, 5.212e-05, 5.212e-05, 5.212e-05, 5.212e-05, 1098.92159042], [1517195040000, 5.212e-05, 5.218e-05, 5.212e-05, 5.218e-05, 3311.01811781], [1517195100000, 5.211e-05, 5.229e-05, 5.211e-05, 5.229e-05, 13891.51276559], [1517195160000, 5.229e-05, 5.23e-05, 5.218e-05, 5.23e-05, 4084.01303722], [1517195220000, 5.23e-05, 5.234e-05, 5.229e-05, 5.234e-05, 1788.54084523], [1517195280000, 5.232e-05, 5.232e-05, 5.23e-05, 5.23e-05, 7854.22172745], [1517195340000, 5.228e-05, 5.228e-05, 5.228e-05, 5.228e-05, 238.98173757], [1517195400000, 5.228e-05, 5.228e-05, 5.211e-05, 5.217e-05, 2792.17755099], [1517195460000, 5.217e-05, 5.232e-05, 5.211e-05, 5.211e-05, 24118.33562555], [1517195520000, 5.212e-05, 5.232e-05, 5.212e-05, 5.232e-05, 7085.68508963], [1517195580000, 5.232e-05, 5.232e-05, 5.232e-05, 5.232e-05, 4584.63205554], [1517195640000, 5.234e-05, 5.234e-05, 5.215e-05, 5.215e-05, 16795.70585807], [1517195700000, 5.229e-05, 5.229e-05, 5.227e-05, 5.229e-05, 2337.78483973], [1517195760000, 5.229e-05, 5.229e-05, 5.229e-05, 5.229e-05, 2328.22373106], [1517195820000, 5.229e-05, 5.23e-05, 5.229e-05, 5.23e-05, 12161.711104], [1517195880000, 5.23e-05, 5.23e-05, 5.229e-05, 5.23e-05, 2701.99064526], [1517195940000, 5.221e-05, 5.234e-05, 5.22e-05, 5.234e-05, 13176.30244884], [1517196000000, 5.22e-05, 5.234e-05, 5.22e-05, 5.23e-05, 2946.49746761], [1517196060000, 5.23e-05, 5.23e-05, 5.23e-05, 5.23e-05, 1087.20434892], [1517196120000, 5.229e-05, 5.23e-05, 5.229e-05, 5.23e-05, 240.27277164], [1517196180000, 5.23e-05, 5.23e-05, 5.23e-05, 5.23e-05, 4697.91308065], [1517196240000, 5.231e-05, 5.234e-05, 5.225e-05, 5.225e-05, 8070.64417993], [1517196300000, 5.22e-05, 5.234e-05, 5.22e-05, 5.22e-05, 54092.48335947], [1517196360000, 5.223e-05, 5.223e-05, 5.22e-05, 5.223e-05, 1887.85907191], [1517196420000, 5.221e-05, 5.232e-05, 5.221e-05, 5.221e-05, 5603.37742362], [1517196480000, 5.226e-05, 5.226e-05, 5.226e-05, 5.226e-05, 811.65758331], [1517196540000, 5.226e-05, 5.226e-05, 5.226e-05, 5.226e-05, 156.81027554], [1517196600000, 5.226e-05, 5.234e-05, 5.22e-05, 5.22e-05, 21795.05947869], [1517196660000, 5.227e-05, 5.234e-05, 5.22e-05, 5.22e-05, 1298.32511332], [1517196720000, 5.22e-05, 5.224e-05, 5.22e-05, 5.22e-05, 10563.76413321], [1517196780000, 5.22e-05, 5.233e-05, 5.22e-05, 5.233e-05, 3778.39405011], [1517196840000, 5.233e-05, 5.234e-05, 5.23e-05, 5.23e-05, 8925.53922658], [1517196900000, 5.23e-05, 5.234e-05, 5.23e-05, 5.234e-05, 3163.50677307], [1517196960000, 5.234e-05, 5.234e-05, 5.221e-05, 5.233e-05, 24361.27662681], [1517197020000, 5.23e-05, 5.23e-05, 5.23e-05, 5.23e-05, 45.54], [1517197080000, 5.23e-05, 5.234e-05, 5.221e-05, 5.234e-05, 26335.084762], [1517197140000, 5.233e-05, 5.234e-05, 5.221e-05, 5.221e-05, 3265.30946246], [1517197200000, 5.228e-05, 5.228e-05, 5.228e-05, 5.228e-05, 565.55485697], [1517197260000, 5.234e-05, 5.234e-05, 5.23e-05, 5.23e-05, 18730.64633112], [1517197320000, 5.23e-05, 5.234e-05, 5.23e-05, 5.233e-05, 4417.82855538], [1517197380000, 5.233e-05, 5.234e-05, 5.233e-05, 5.234e-05, 1783.66410593], [1517197440000, 5.234e-05, 5.234e-05, 5.228e-05, 5.233e-05, 6302.58050391], [1517197500000, 5.23e-05, 5.234e-05, 5.23e-05, 5.233e-05, 4884.61395401], [1517197560000, 5.228e-05, 5.234e-05, 5.228e-05, 5.234e-05, 17205.98326703], [1517197620000, 5.233e-05, 5.252e-05, 5.221e-05, 5.247e-05, 48685.64551601], [1517197680000, 5.23e-05, 5.242e-05, 5.222e-05, 5.23e-05, 13633.69841226], [1517197740000, 5.228e-05, 5.252e-05, 5.221e-05, 5.252e-05, 61508.29037544], [1517197800000, 5.252e-05, 5.252e-05, 5.23e-05, 5.233e-05, 60962.14152501], [1517197860000, 5.251e-05, 5.252e-05, 5.231e-05, 5.237e-05, 48877.86690424], [1517197920000, 5.237e-05, 5.251e-05, 5.231e-05, 5.231e-05, 15431.57382913], [1517197980000, 5.231e-05, 5.247e-05, 5.231e-05, 5.232e-05, 6694.40884388], [1517198040000, 5.232e-05, 5.247e-05, 5.23e-05, 5.243e-05, 10376.18669592], [1517198100000, 5.242e-05, 5.245e-05, 5.23e-05, 5.232e-05, 17024.22192241], [1517198160000, 5.245e-05, 5.273e-05, 5.226e-05, 5.228e-05, 24259.87332721], [1517198220000, 5.231e-05, 5.273e-05, 5.221e-05, 5.221e-05, 13915.07876274], [1517198280000, 5.226e-05, 5.26e-05, 5.226e-05, 5.26e-05, 49597.36314178], [1517198340000, 5.258e-05, 5.26e-05, 5.255e-05, 5.259e-05, 27769.74947307], [1517198400000, 5.26e-05, 5.289e-05, 5.235e-05, 5.275e-05, 36915.09950509], [1517198460000, 5.275e-05, 5.292e-05, 5.211e-05, 5.221e-05, 142588.86896211], [1517198520000, 5.268e-05, 5.268e-05, 5.242e-05, 5.242e-05, 1372.05224836], [1517198580000, 5.242e-05, 5.276e-05, 5.242e-05, 5.255e-05, 10788.17434415], [1517198640000, 5.273e-05, 5.273e-05, 5.24e-05, 5.24e-05, 8249.08461223], [1517198700000, 5.238e-05, 5.269e-05, 5.238e-05, 5.254e-05, 1372.61753322], [1517198760000, 5.265e-05, 5.269e-05, 5.262e-05, 5.264e-05, 15136.01174451], [1517198820000, 5.26e-05, 5.26e-05, 5.23e-05, 5.23e-05, 5376.61262778], [1517198880000, 5.223e-05, 5.274e-05, 5.223e-05, 5.224e-05, 12282.33223225], [1517198940000, 5.229e-05, 5.29e-05, 5.229e-05, 5.29e-05, 48920.09167274], [1517199000000, 5.265e-05, 5.285e-05, 5.239e-05, 5.266e-05, 6781.44791211], [1517199060000, 5.265e-05, 5.266e-05, 5.265e-05, 5.266e-05, 2093.82032172], [1517199120000, 5.265e-05, 5.267e-05, 5.242e-05, 5.242e-05, 27403.4984571], [1517199180000, 5.242e-05, 5.265e-05, 5.242e-05, 5.25e-05, 7025.05259969], [1517199240000, 5.25e-05, 5.264e-05, 5.242e-05, 5.259e-05, 6943.07825303], [1517199300000, 5.258e-05, 5.26e-05, 5.257e-05, 5.257e-05, 21709.34948493], [1517199360000, 5.257e-05, 5.257e-05, 5.244e-05, 5.25e-05, 3675.03912264], [1517199420000, 5.25e-05, 5.253e-05, 5.235e-05, 5.235e-05, 4163.94697435], [1517199480000, 5.236e-05, 5.252e-05, 5.236e-05, 5.252e-05, 1600.6297856], [1517199540000, 5.252e-05, 5.253e-05, 5.251e-05, 5.251e-05, 1384.64774129], [1517199600000, 5.249e-05, 5.252e-05, 5.249e-05, 5.252e-05, 3154.29535349], [1517199660000, 5.24e-05, 5.24e-05, 5.237e-05, 5.24e-05, 2321.28566091], [1517199720000, 5.239e-05, 5.24e-05, 5.237e-05, 5.24e-05, 2524.37874897], [1517199780000, 5.237e-05, 5.252e-05, 5.237e-05, 5.252e-05, 1868.85194278], [1517199840000, 5.251e-05, 5.251e-05, 5.237e-05, 5.238e-05, 506.82085727], [1517199900000, 5.238e-05, 5.252e-05, 5.237e-05, 5.252e-05, 2459.68775839], [1517199960000, 5.237e-05, 5.252e-05, 5.235e-05, 5.252e-05, 6701.9012119], [1517200020000, 5.236e-05, 5.252e-05, 5.235e-05, 5.235e-05, 10360.064044], [1517200080000, 5.236e-05, 5.236e-05, 5.223e-05, 5.235e-05, 23994.25103521], [1517200140000, 5.235e-05, 5.235e-05, 5.23e-05, 5.23e-05, 2674.4557427], [1517200200000, 5.23e-05, 5.231e-05, 5.215e-05, 5.231e-05, 12245.03151805], [1517200260000, 5.23e-05, 5.231e-05, 5.215e-05, 5.228e-05, 6023.05159079], [1517200320000, 5.228e-05, 5.231e-05, 5.216e-05, 5.216e-05, 5419.17771861], [1517200380000, 5.216e-05, 5.227e-05, 5.216e-05, 5.227e-05, 9035.64524131], [1517200440000, 5.227e-05, 5.228e-05, 5.227e-05, 5.227e-05, 2076.3656984], [1517200500000, 5.23e-05, 5.23e-05, 5.227e-05, 5.227e-05, 2924.93654801], [1517200560000, 5.219e-05, 5.227e-05, 5.219e-05, 5.227e-05, 806.27456971], [1517200620000, 5.227e-05, 5.228e-05, 5.227e-05, 5.228e-05, 6739.25562995], [1517200680000, 5.228e-05, 5.228e-05, 5.227e-05, 5.228e-05, 15166.46600847], [1517200740000, 5.228e-05, 5.228e-05, 5.227e-05, 5.228e-05, 3602.18845706], [1517200800000, 5.228e-05, 5.228e-05, 5.227e-05, 5.228e-05, 8853.69316521], [1517200860000, 5.227e-05, 5.228e-05, 5.227e-05, 5.227e-05, 309.00384373], [1517200920000, 5.221e-05, 5.227e-05, 5.221e-05, 5.227e-05, 8857.08411891], [1517200980000, 5.227e-05, 5.227e-05, 5.227e-05, 5.227e-05, 259.7247824], [1517201040000, 5.227e-05, 5.228e-05, 5.227e-05, 5.227e-05, 5702.89617132], [1517201100000, 5.227e-05, 5.227e-05, 5.227e-05, 5.227e-05, 100.0], [1517201160000, 5.227e-05, 5.227e-05, 5.226e-05, 5.227e-05, 1531.33393075], [1517201220000, 5.226e-05, 5.226e-05, 5.215e-05, 5.226e-05, 12309.44152882], [1517201280000, 5.226e-05, 5.226e-05, 5.215e-05, 5.225e-05, 18148.36951469], [1517201340000, 5.225e-05, 5.226e-05, 5.225e-05, 5.225e-05, 2910.81571879], [1517201400000, 5.225e-05, 5.228e-05, 5.217e-05, 5.228e-05, 90512.90072687], [1517201460000, 5.225e-05, 5.231e-05, 5.225e-05, 5.231e-05, 10785.04709354], [1517201520000, 5.231e-05, 5.264e-05, 5.225e-05, 5.225e-05, 10494.54912822], [1517201580000, 5.226e-05, 5.256e-05, 5.226e-05, 5.228e-05, 5599.83471671], [1517201640000, 5.254e-05, 5.254e-05, 5.228e-05, 5.229e-05, 3297.32735976], [1517201700000, 5.245e-05, 5.245e-05, 5.23e-05, 5.23e-05, 11043.43492198], [1517201760000, 5.229e-05, 5.229e-05, 5.229e-05, 5.229e-05, 1178.71622575], [1517201820000, 5.248e-05, 5.254e-05, 5.232e-05, 5.238e-05, 3119.46393207], [1517201880000, 5.231e-05, 5.265e-05, 5.231e-05, 5.233e-05, 8604.9936925], [1517201940000, 5.262e-05, 5.262e-05, 5.26e-05, 5.261e-05, 320.24055965], [1517202000000, 5.24e-05, 5.252e-05, 5.234e-05, 5.252e-05, 34082.03426225], [1517202060000, 5.247e-05, 5.247e-05, 5.234e-05, 5.234e-05, 7805.40649279], [1517202120000, 5.234e-05, 5.241e-05, 5.234e-05, 5.241e-05, 3183.02824222], [1517202180000, 5.239e-05, 5.24e-05, 5.239e-05, 5.239e-05, 386.34678688], [1517202240000, 5.24e-05, 5.24e-05, 5.239e-05, 5.239e-05, 3617.39807137], [1517202300000, 5.239e-05, 5.239e-05, 5.225e-05, 5.225e-05, 13528.44413127], [1517202360000, 5.225e-05, 5.239e-05, 5.225e-05, 5.239e-05, 6195.8635336], [1517202420000, 5.239e-05, 5.239e-05, 5.239e-05, 5.239e-05, 1642.721124], [1517202480000, 5.225e-05, 5.238e-05, 5.225e-05, 5.238e-05, 625.80177343], [1517202540000, 5.238e-05, 5.239e-05, 5.238e-05, 5.239e-05, 729.61795195], [1517202600000, 5.238e-05, 5.239e-05, 5.229e-05, 5.238e-05, 8118.49157025], [1517202660000, 5.238e-05, 5.241e-05, 5.229e-05, 5.239e-05, 33168.2891405], [1517202720000, 5.237e-05, 5.237e-05, 5.237e-05, 5.237e-05, 63.06198164], [1517202780000, 5.23e-05, 5.23e-05, 5.225e-05, 5.228e-05, 23095.48566053], [1517202840000, 5.227e-05, 5.237e-05, 5.225e-05, 5.225e-05, 9754.68388599], [1517202900000, 5.225e-05, 5.237e-05, 5.225e-05, 5.225e-05, 56166.2906049], [1517202960000, 5.235e-05, 5.235e-05, 5.225e-05, 5.225e-05, 17707.92252794], [1517203020000, 5.225e-05, 5.231e-05, 5.218e-05, 5.22e-05, 71200.8401564], [1517203080000, 5.224e-05, 5.225e-05, 5.215e-05, 5.225e-05, 33834.33522434], [1517203140000, 5.225e-05, 5.225e-05, 5.211e-05, 5.222e-05, 4426.07896493], [1517203200000, 5.211e-05, 5.222e-05, 5.211e-05, 5.212e-05, 6405.40780886], [1517203260000, 5.222e-05, 5.224e-05, 5.222e-05, 5.224e-05, 6092.61140309], [1517203320000, 5.223e-05, 5.223e-05, 5.22e-05, 5.221e-05, 2961.60223781], [1517203380000, 5.22e-05, 5.22e-05, 5.214e-05, 5.219e-05, 21384.69322163], [1517203440000, 5.218e-05, 5.222e-05, 5.214e-05, 5.216e-05, 13284.39510709], [1517203500000, 5.222e-05, 5.229e-05, 5.216e-05, 5.229e-05, 40617.72258524], [1517203560000, 5.219e-05, 5.227e-05, 5.215e-05, 5.221e-05, 7404.98293009], [1517203620000, 5.22e-05, 5.22e-05, 5.215e-05, 5.218e-05, 12355.58093432], [1517203680000, 5.218e-05, 5.218e-05, 5.213e-05, 5.213e-05, 3661.21547775], [1517203740000, 5.216e-05, 5.219e-05, 5.216e-05, 5.219e-05, 6266.2443807], [1517203800000, 5.219e-05, 5.219e-05, 5.215e-05, 5.216e-05, 41377.76803969], [1517203860000, 5.216e-05, 5.217e-05, 5.215e-05, 5.217e-05, 14401.6175397], [1517203920000, 5.215e-05, 5.215e-05, 5.215e-05, 5.215e-05, 4126.70046639], [1517203980000, 5.217e-05, 5.217e-05, 5.216e-05, 5.217e-05, 53927.25382076], [1517204040000, 5.217e-05, 5.217e-05, 5.217e-05, 5.217e-05, 3987.70488626], [1517204100000, 5.217e-05, 5.217e-05, 5.216e-05, 5.216e-05, 9188.75397767], [1517204160000, 5.217e-05, 5.225e-05, 5.217e-05, 5.225e-05, 3562.82307983], [1517204220000, 5.217e-05, 5.223e-05, 5.216e-05, 5.216e-05, 17434.5118544], [1517204280000, 5.216e-05, 5.219e-05, 5.216e-05, 5.216e-05, 19699.83093088], [1517204340000, 5.22e-05, 5.223e-05, 5.216e-05, 5.216e-05, 8617.76927796], [1517204400000, 5.216e-05, 5.223e-05, 5.216e-05, 5.223e-05, 3594.04869928], [1517204460000, 5.216e-05, 5.22e-05, 5.216e-05, 5.22e-05, 362.44131204], [1517204520000, 5.219e-05, 5.219e-05, 5.215e-05, 5.215e-05, 3659.3439976], [1517204580000, 5.216e-05, 5.218e-05, 5.215e-05, 5.216e-05, 68258.96716785], [1517204640000, 5.215e-05, 5.216e-05, 5.215e-05, 5.215e-05, 8055.0791028], [1517204700000, 5.216e-05, 5.219e-05, 5.215e-05, 5.219e-05, 4912.00278496], [1517204760000, 5.215e-05, 5.219e-05, 5.215e-05, 5.215e-05, 9167.97467846], [1517204820000, 5.215e-05, 5.215e-05, 5.214e-05, 5.214e-05, 5848.87631096], [1517204880000, 5.214e-05, 5.215e-05, 5.214e-05, 5.214e-05, 4529.23641252], [1517204940000, 5.215e-05, 5.223e-05, 5.214e-05, 5.223e-05, 20837.35328926], [1517205000000, 5.226e-05, 5.235e-05, 5.214e-05, 5.214e-05, 752.99963832], [1517205060000, 5.214e-05, 5.237e-05, 5.214e-05, 5.237e-05, 3249.47034818], [1517205120000, 5.215e-05, 5.215e-05, 5.211e-05, 5.211e-05, 141573.88257368], [1517205180000, 5.21e-05, 5.235e-05, 5.21e-05, 5.232e-05, 1264.41588099], [1517205240000, 5.21e-05, 5.21e-05, 5.21e-05, 5.21e-05, 602.02527478], [1517205300000, 5.208e-05, 5.208e-05, 5.206e-05, 5.206e-05, 2926.73811163], [1517205360000, 5.205e-05, 5.206e-05, 5.205e-05, 5.206e-05, 4006.38844194], [1517205420000, 5.206e-05, 5.228e-05, 5.205e-05, 5.205e-05, 3862.66469934], [1517205480000, 5.226e-05, 5.226e-05, 5.206e-05, 5.206e-05, 3474.87380432], [1517205540000, 5.224e-05, 5.224e-05, 5.206e-05, 5.206e-05, 5211.98573611], [1517205600000, 5.207e-05, 5.207e-05, 5.206e-05, 5.206e-05, 3727.82526348], [1517205660000, 5.206e-05, 5.206e-05, 5.206e-05, 5.206e-05, 1871.07875], [1517205720000, 5.206e-05, 5.217e-05, 5.201e-05, 5.201e-05, 13821.93544345], [1517205780000, 5.215e-05, 5.215e-05, 5.201e-05, 5.201e-05, 1100.01354941], [1517205840000, 5.202e-05, 5.217e-05, 5.201e-05, 5.201e-05, 2305.46409915], [1517205900000, 5.201e-05, 5.216e-05, 5.201e-05, 5.216e-05, 8631.09103904], [1517205960000, 5.201e-05, 5.222e-05, 5.201e-05, 5.201e-05, 14006.45979934], [1517206020000, 5.202e-05, 5.214e-05, 5.202e-05, 5.213e-05, 1263.91861156], [1517206080000, 5.203e-05, 5.227e-05, 5.202e-05, 5.222e-05, 40225.77047735], [1517206140000, 5.211e-05, 5.222e-05, 5.205e-05, 5.221e-05, 11805.21442188], [1517206200000, 5.221e-05, 5.221e-05, 5.21e-05, 5.21e-05, 11262.71174981], [1517206260000, 5.21e-05, 5.21e-05, 5.203e-05, 5.21e-05, 2013.45887725], [1517206320000, 5.21e-05, 5.215e-05, 5.2e-05, 5.2e-05, 24324.94357871], [1517206380000, 5.21e-05, 5.21e-05, 5.2e-05, 5.208e-05, 1698.15151981], [1517206440000, 5.208e-05, 5.208e-05, 5.201e-05, 5.208e-05, 7432.43262039], [1517206500000, 5.208e-05, 5.21e-05, 5.208e-05, 5.21e-05, 733.02868936], [1517206560000, 5.21e-05, 5.239e-05, 5.209e-05, 5.239e-05, 10285.34135449], [1517206620000, 5.21e-05, 5.239e-05, 5.208e-05, 5.208e-05, 5837.21786553], [1517206680000, 5.208e-05, 5.232e-05, 5.208e-05, 5.232e-05, 516.0085461], [1517206740000, 5.208e-05, 5.208e-05, 5.195e-05, 5.208e-05, 40738.77628854], [1517206800000, 5.209e-05, 5.226e-05, 5.209e-05, 5.211e-05, 2986.24086316], [1517206860000, 5.211e-05, 5.224e-05, 5.211e-05, 5.224e-05, 721.85124608], [1517206920000, 5.224e-05, 5.224e-05, 5.212e-05, 5.212e-05, 1947.12023117], [1517206980000, 5.212e-05, 5.224e-05, 5.212e-05, 5.224e-05, 1511.07251983], [1517207100000, 5.212e-05, 5.224e-05, 5.212e-05, 5.223e-05, 4019.9221925], [1517207160000, 5.223e-05, 5.223e-05, 5.213e-05, 5.213e-05, 696.82746827], [1517207220000, 5.222e-05, 5.222e-05, 5.22e-05, 5.222e-05, 955.57510061], [1517207280000, 5.222e-05, 5.222e-05, 5.212e-05, 5.212e-05, 5230.23766899], [1517207340000, 5.212e-05, 5.221e-05, 5.212e-05, 5.213e-05, 358.70755178], [1517207400000, 5.213e-05, 5.222e-05, 5.213e-05, 5.213e-05, 5704.18891621], [1517207460000, 5.213e-05, 5.213e-05, 5.21e-05, 5.21e-05, 15042.14413391], [1517207520000, 5.21e-05, 5.221e-05, 5.21e-05, 5.221e-05, 3238.93418704], [1517207580000, 5.21e-05, 5.22e-05, 5.21e-05, 5.211e-05, 446.71746229], [1517207640000, 5.218e-05, 5.218e-05, 5.211e-05, 5.218e-05, 3548.17584903], [1517207700000, 5.218e-05, 5.218e-05, 5.211e-05, 5.211e-05, 2414.80455924], [1517207760000, 5.218e-05, 5.218e-05, 5.218e-05, 5.218e-05, 1840.86282133], [1517207820000, 5.211e-05, 5.218e-05, 5.211e-05, 5.218e-05, 3579.753767], [1517207880000, 5.218e-05, 5.218e-05, 5.21e-05, 5.217e-05, 7955.59771836], [1517207940000, 5.21e-05, 5.22e-05, 5.204e-05, 5.208e-05, 7139.37445237], [1517208000000, 5.208e-05, 5.208e-05, 5.208e-05, 5.208e-05, 5199.44305222], [1517208060000, 5.204e-05, 5.204e-05, 5.193e-05, 5.2e-05, 14923.81881539], [1517208120000, 5.193e-05, 5.2e-05, 5.192e-05, 5.193e-05, 49831.32037007], [1517208180000, 5.193e-05, 5.193e-05, 5.192e-05, 5.192e-05, 22152.16268344], [1517208240000, 5.193e-05, 5.194e-05, 5.193e-05, 5.194e-05, 3633.70728275], [1517208300000, 5.194e-05, 5.194e-05, 5.194e-05, 5.194e-05, 3169.43468062], [1517208360000, 5.194e-05, 5.194e-05, 5.193e-05, 5.193e-05, 8409.89176513], [1517208420000, 5.193e-05, 5.222e-05, 5.193e-05, 5.193e-05, 32325.4055359], [1517208480000, 5.194e-05, 5.22e-05, 5.194e-05, 5.195e-05, 2071.51011258], [1517208540000, 5.215e-05, 5.215e-05, 5.195e-05, 5.21e-05, 506.82909489], [1517208600000, 5.21e-05, 5.21e-05, 5.205e-05, 5.205e-05, 1161.3589198], [1517208660000, 5.202e-05, 5.208e-05, 5.196e-05, 5.197e-05, 3046.35200077], [1517208720000, 5.197e-05, 5.197e-05, 5.196e-05, 5.196e-05, 11020.44868611], [1517208780000, 5.196e-05, 5.196e-05, 5.196e-05, 5.196e-05, 3516.8170986], [1517208840000, 5.196e-05, 5.197e-05, 5.193e-05, 5.197e-05, 51529.70249092], [1517208900000, 5.196e-05, 5.21e-05, 5.196e-05, 5.21e-05, 24259.32211528], [1517208960000, 5.209e-05, 5.209e-05, 5.197e-05, 5.197e-05, 1578.29133922], [1517209020000, 5.198e-05, 5.209e-05, 5.198e-05, 5.209e-05, 5215.37269544], [1517209080000, 5.198e-05, 5.208e-05, 5.198e-05, 5.208e-05, 1840.34647915], [1517209140000, 5.208e-05, 5.209e-05, 5.208e-05, 5.209e-05, 2738.54713147], [1517209200000, 5.208e-05, 5.21e-05, 5.208e-05, 5.209e-05, 3913.86830535], [1517209260000, 5.209e-05, 5.209e-05, 5.209e-05, 5.209e-05, 3714.74755288], [1517209320000, 5.21e-05, 5.236e-05, 5.209e-05, 5.209e-05, 8368.38774254], [1517209380000, 5.209e-05, 5.21e-05, 5.209e-05, 5.209e-05, 163.33745268], [1517209440000, 5.21e-05, 5.238e-05, 5.209e-05, 5.238e-05, 2584.2663761], [1517209500000, 5.221e-05, 5.241e-05, 5.221e-05, 5.241e-05, 334.70592637], [1517209560000, 5.234e-05, 5.234e-05, 5.221e-05, 5.221e-05, 2411.89373719], [1517209620000, 5.221e-05, 5.221e-05, 5.221e-05, 5.221e-05, 800.89706387], [1517209680000, 5.209e-05, 5.221e-05, 5.209e-05, 5.221e-05, 466.54840714], [1517209740000, 5.22e-05, 5.221e-05, 5.21e-05, 5.221e-05, 4780.92132302], [1517209800000, 5.219e-05, 5.219e-05, 5.219e-05, 5.219e-05, 1948.53617967], [1517209860000, 5.22e-05, 5.25e-05, 5.219e-05, 5.219e-05, 54024.36083249], [1517209920000, 5.21e-05, 5.219e-05, 5.198e-05, 5.219e-05, 12293.56938014], [1517209980000, 5.219e-05, 5.219e-05, 5.201e-05, 5.201e-05, 1118.16569897], [1517210040000, 5.198e-05, 5.219e-05, 5.197e-05, 5.199e-05, 26140.63414968], [1517210100000, 5.2e-05, 5.21e-05, 5.2e-05, 5.21e-05, 37413.70539891], [1517210160000, 5.212e-05, 5.229e-05, 5.212e-05, 5.213e-05, 99813.03683693], [1517210220000, 5.213e-05, 5.214e-05, 5.204e-05, 5.208e-05, 150287.37881063], [1517210280000, 5.239e-05, 5.239e-05, 5.208e-05, 5.211e-05, 7538.23058927], [1517210340000, 5.235e-05, 5.246e-05, 5.211e-05, 5.211e-05, 17090.17656148], [1517210400000, 5.212e-05, 5.243e-05, 5.212e-05, 5.237e-05, 1540.50401229], [1517210460000, 5.237e-05, 5.237e-05, 5.236e-05, 5.237e-05, 3191.99687936], [1517210520000, 5.233e-05, 5.237e-05, 5.233e-05, 5.237e-05, 99.64102218], [1517210580000, 5.233e-05, 5.233e-05, 5.233e-05, 5.233e-05, 655.83559144], [1517210640000, 5.237e-05, 5.237e-05, 5.233e-05, 5.237e-05, 2605.37521562], [1517210700000, 5.233e-05, 5.252e-05, 5.214e-05, 5.217e-05, 40227.5275126], [1517210760000, 5.213e-05, 5.247e-05, 5.194e-05, 5.194e-05, 16093.81206757], [1517210820000, 5.202e-05, 5.24e-05, 5.202e-05, 5.207e-05, 60824.23308217], [1517210880000, 5.208e-05, 5.209e-05, 5.208e-05, 5.209e-05, 342.53188061], [1517210940000, 5.208e-05, 5.211e-05, 5.202e-05, 5.211e-05, 2868.59187197], [1517211000000, 5.211e-05, 5.239e-05, 5.211e-05, 5.239e-05, 2042.97416306], [1517211060000, 5.211e-05, 5.239e-05, 5.211e-05, 5.212e-05, 3095.70006213], [1517211120000, 5.238e-05, 5.238e-05, 5.214e-05, 5.237e-05, 3147.16555197], [1517211180000, 5.224e-05, 5.236e-05, 5.224e-05, 5.236e-05, 2335.45790058], [1517211240000, 5.236e-05, 5.236e-05, 5.235e-05, 5.236e-05, 927.20113794], [1517211300000, 5.235e-05, 5.235e-05, 5.219e-05, 5.234e-05, 2716.29724356], [1517211360000, 5.219e-05, 5.245e-05, 5.21e-05, 5.245e-05, 28074.45551412], [1517211420000, 5.211e-05, 5.238e-05, 5.211e-05, 5.212e-05, 9666.40424801], [1517211480000, 5.238e-05, 5.242e-05, 5.195e-05, 5.218e-05, 48384.44325144], [1517211540000, 5.217e-05, 5.217e-05, 5.207e-05, 5.207e-05, 5508.01566116], [1517211600000, 5.207e-05, 5.215e-05, 5.206e-05, 5.215e-05, 20366.35181014], [1517211660000, 5.215e-05, 5.221e-05, 5.207e-05, 5.219e-05, 2240.81561652], [1517211720000, 5.219e-05, 5.22e-05, 5.209e-05, 5.209e-05, 5582.04354936], [1517211780000, 5.209e-05, 5.219e-05, 5.209e-05, 5.211e-05, 12906.57608046], [1517211840000, 5.221e-05, 5.224e-05, 5.219e-05, 5.221e-05, 8786.45053336], [1517211900000, 5.211e-05, 5.221e-05, 5.207e-05, 5.221e-05, 10365.77491997], [1517211960000, 5.221e-05, 5.221e-05, 5.22e-05, 5.22e-05, 902.79457919], [1517212020000, 5.22e-05, 5.221e-05, 5.22e-05, 5.221e-05, 1267.189025], [1517212080000, 5.221e-05, 5.221e-05, 5.216e-05, 5.216e-05, 518.16832469], [1517212140000, 5.221e-05, 5.25e-05, 5.216e-05, 5.221e-05, 19524.64342545], [1517212200000, 5.245e-05, 5.246e-05, 5.223e-05, 5.225e-05, 1903.32101269], [1517212260000, 5.243e-05, 5.243e-05, 5.223e-05, 5.223e-05, 1086.2027976], [1517212320000, 5.225e-05, 5.244e-05, 5.225e-05, 5.227e-05, 637.8800159], [1517212380000, 5.244e-05, 5.244e-05, 5.227e-05, 5.229e-05, 694.78592287], [1517212440000, 5.227e-05, 5.229e-05, 5.227e-05, 5.228e-05, 849.83863311], [1517212500000, 5.228e-05, 5.229e-05, 5.227e-05, 5.227e-05, 1917.46485427], [1517212560000, 5.227e-05, 5.245e-05, 5.224e-05, 5.224e-05, 2016.36779642], [1517212620000, 5.224e-05, 5.246e-05, 5.223e-05, 5.246e-05, 3316.38590992], [1517212680000, 5.235e-05, 5.24e-05, 5.208e-05, 5.233e-05, 21472.7000459], [1517212740000, 5.233e-05, 5.237e-05, 5.22e-05, 5.236e-05, 22704.87156168], [1517212800000, 5.236e-05, 5.247e-05, 5.215e-05, 5.235e-05, 15837.95866477], [1517212860000, 5.225e-05, 5.225e-05, 5.224e-05, 5.225e-05, 3675.6127392], [1517212920000, 5.225e-05, 5.225e-05, 5.209e-05, 5.209e-05, 106010.8291277], [1517212980000, 5.222e-05, 5.225e-05, 5.209e-05, 5.211e-05, 4604.56275306], [1517213040000, 5.224e-05, 5.235e-05, 5.211e-05, 5.216e-05, 4400.24115335], [1517213100000, 5.248e-05, 5.248e-05, 5.223e-05, 5.223e-05, 19788.53840376], [1517213160000, 5.223e-05, 5.226e-05, 5.223e-05, 5.226e-05, 7047.56719973], [1517213220000, 5.226e-05, 5.23e-05, 5.225e-05, 5.225e-05, 11046.51411601], [1517213280000, 5.225e-05, 5.225e-05, 5.223e-05, 5.223e-05, 12755.17083764], [1517213340000, 5.223e-05, 5.241e-05, 5.215e-05, 5.215e-05, 8225.93674551], [1517213400000, 5.223e-05, 5.238e-05, 5.215e-05, 5.22e-05, 14843.17759929], [1517213460000, 5.22e-05, 5.22e-05, 5.22e-05, 5.22e-05, 5157.21307938], [1517213520000, 5.22e-05, 5.238e-05, 5.217e-05, 5.218e-05, 9828.08068591], [1517213580000, 5.221e-05, 5.233e-05, 5.208e-05, 5.209e-05, 241198.77920909], [1517213640000, 5.209e-05, 5.237e-05, 5.208e-05, 5.237e-05, 14814.430217], [1517213700000, 5.212e-05, 5.237e-05, 5.211e-05, 5.218e-05, 57370.80356207], [1517213760000, 5.208e-05, 5.227e-05, 5.208e-05, 5.21e-05, 4482.46563523], [1517213820000, 5.21e-05, 5.21e-05, 5.21e-05, 5.21e-05, 2174.44088734], [1517213880000, 5.232e-05, 5.237e-05, 5.232e-05, 5.237e-05, 1088.49557522], [1517213940000, 5.215e-05, 5.235e-05, 5.21e-05, 5.211e-05, 3767.447832], [1517214000000, 5.22e-05, 5.22e-05, 5.211e-05, 5.22e-05, 2121.87072825], [1517214060000, 5.218e-05, 5.224e-05, 5.209e-05, 5.209e-05, 10144.80009218], [1517214120000, 5.209e-05, 5.221e-05, 5.208e-05, 5.208e-05, 3898.13138262], [1517214180000, 5.208e-05, 5.211e-05, 5.208e-05, 5.208e-05, 485.60236278], [1517214240000, 5.208e-05, 5.211e-05, 5.208e-05, 5.211e-05, 1074.01676563], [1517214300000, 5.21e-05, 5.211e-05, 5.208e-05, 5.208e-05, 6377.02024573], [1517214360000, 5.211e-05, 5.211e-05, 5.208e-05, 5.208e-05, 48653.84388476], [1517214420000, 5.211e-05, 5.235e-05, 5.211e-05, 5.211e-05, 19420.99933441], [1517214480000, 5.213e-05, 5.222e-05, 5.211e-05, 5.222e-05, 13937.81983494], [1517214540000, 5.217e-05, 5.217e-05, 5.211e-05, 5.212e-05, 5635.32463119], [1517214600000, 5.212e-05, 5.221e-05, 5.212e-05, 5.221e-05, 8092.0721424], [1517214660000, 5.222e-05, 5.228e-05, 5.221e-05, 5.221e-05, 26076.16320947], [1517214720000, 5.22e-05, 5.235e-05, 5.213e-05, 5.214e-05, 30577.5206455], [1517214780000, 5.214e-05, 5.23e-05, 5.214e-05, 5.214e-05, 33467.44897262], [1517214840000, 5.214e-05, 5.225e-05, 5.214e-05, 5.225e-05, 28726.09799563], [1517214900000, 5.23e-05, 5.23e-05, 5.211e-05, 5.211e-05, 3969.61891858], [1517214960000, 5.211e-05, 5.212e-05, 5.21e-05, 5.21e-05, 17634.25537603], [1517215020000, 5.21e-05, 5.212e-05, 5.207e-05, 5.207e-05, 18300.44805114], [1517215080000, 5.209e-05, 5.212e-05, 5.207e-05, 5.21e-05, 2459.31398831], [1517215140000, 5.21e-05, 5.225e-05, 5.21e-05, 5.211e-05, 19945.5824137], [1517215200000, 5.212e-05, 5.225e-05, 5.212e-05, 5.221e-05, 25038.70855125], [1517215260000, 5.221e-05, 5.226e-05, 5.212e-05, 5.226e-05, 70247.10486994], [1517215320000, 5.225e-05, 5.227e-05, 5.221e-05, 5.227e-05, 25664.67332163], [1517215380000, 5.224e-05, 5.25e-05, 5.215e-05, 5.23e-05, 12296.40258267], [1517215440000, 5.229e-05, 5.248e-05, 5.215e-05, 5.215e-05, 57797.0540512], [1517215500000, 5.218e-05, 5.238e-05, 5.217e-05, 5.227e-05, 10450.64975735], [1517215560000, 5.226e-05, 5.25e-05, 5.217e-05, 5.227e-05, 25752.18538267], [1517215620000, 5.227e-05, 5.23e-05, 5.227e-05, 5.227e-05, 11033.62183038], [1517215680000, 5.227e-05, 5.227e-05, 5.218e-05, 5.227e-05, 4892.75229207], [1517215740000, 5.22e-05, 5.227e-05, 5.218e-05, 5.224e-05, 9807.38937091], [1517215800000, 5.225e-05, 5.226e-05, 5.221e-05, 5.221e-05, 49736.3816097], [1517215860000, 5.226e-05, 5.226e-05, 5.221e-05, 5.223e-05, 5172.74197337], [1517215920000, 5.226e-05, 5.226e-05, 5.221e-05, 5.224e-05, 7415.70266453], [1517215980000, 5.221e-05, 5.241e-05, 5.221e-05, 5.238e-05, 2948.27528538], [1517216040000, 5.236e-05, 5.236e-05, 5.224e-05, 5.227e-05, 15541.49292088], [1517216100000, 5.227e-05, 5.227e-05, 5.224e-05, 5.227e-05, 258.58423345], [1517216160000, 5.227e-05, 5.227e-05, 5.224e-05, 5.224e-05, 3908.10558346], [1517216220000, 5.224e-05, 5.227e-05, 5.221e-05, 5.224e-05, 7395.50716765], [1517216280000, 5.223e-05, 5.224e-05, 5.223e-05, 5.224e-05, 171.80188313], [1517216340000, 5.224e-05, 5.245e-05, 5.221e-05, 5.221e-05, 18813.24334997], [1517216400000, 5.24e-05, 5.249e-05, 5.221e-05, 5.242e-05, 7996.28854042], [1517216460000, 5.24e-05, 5.24e-05, 5.221e-05, 5.221e-05, 1158.18032608], [1517216520000, 5.224e-05, 5.24e-05, 5.221e-05, 5.238e-05, 1099.61798231], [1517216580000, 5.221e-05, 5.236e-05, 5.221e-05, 5.221e-05, 4957.83469867], [1517216640000, 5.221e-05, 5.234e-05, 5.221e-05, 5.221e-05, 515.24610246], [1517216700000, 5.221e-05, 5.233e-05, 5.221e-05, 5.221e-05, 5976.88772267], [1517216760000, 5.225e-05, 5.225e-05, 5.218e-05, 5.22e-05, 10414.71076871], [1517216820000, 5.221e-05, 5.232e-05, 5.218e-05, 5.218e-05, 2479.95012907], [1517216880000, 5.218e-05, 5.224e-05, 5.213e-05, 5.213e-05, 9511.15577035], [1517216940000, 5.224e-05, 5.224e-05, 5.215e-05, 5.215e-05, 13757.90035165], [1517217000000, 5.222e-05, 5.222e-05, 5.211e-05, 5.211e-05, 3114.34740362], [1517217060000, 5.221e-05, 5.221e-05, 5.209e-05, 5.21e-05, 2415.67674628], [1517217120000, 5.21e-05, 5.21e-05, 5.207e-05, 5.21e-05, 1387.41985833], [1517217180000, 5.209e-05, 5.21e-05, 5.209e-05, 5.21e-05, 4977.92706334], [1517217240000, 5.207e-05, 5.207e-05, 5.203e-05, 5.203e-05, 1426.49116282], [1517217300000, 5.203e-05, 5.205e-05, 5.2e-05, 5.201e-05, 6147.10302293], [1517217360000, 5.202e-05, 5.205e-05, 5.201e-05, 5.201e-05, 9042.16663671], [1517217420000, 5.202e-05, 5.202e-05, 5.201e-05, 5.201e-05, 3210.25104269], [1517217480000, 5.201e-05, 5.202e-05, 5.201e-05, 5.202e-05, 405.15240311], [1517217540000, 5.202e-05, 5.202e-05, 5.202e-05, 5.202e-05, 2037.58847379], [1517217600000, 5.202e-05, 5.202e-05, 5.201e-05, 5.201e-05, 2651.21451803], [1517217660000, 5.201e-05, 5.202e-05, 5.201e-05, 5.202e-05, 26598.73413132], [1517217720000, 5.202e-05, 5.202e-05, 5.199e-05, 5.199e-05, 14682.98550597], [1517217780000, 5.199e-05, 5.199e-05, 5.193e-05, 5.195e-05, 13339.47851919], [1517217840000, 5.197e-05, 5.197e-05, 5.197e-05, 5.197e-05, 282.36022352], [1517217900000, 5.197e-05, 5.197e-05, 5.184e-05, 5.186e-05, 19781.53333925], [1517217960000, 5.186e-05, 5.197e-05, 5.186e-05, 5.19e-05, 1683.74155735], [1517218020000, 5.189e-05, 5.19e-05, 5.18e-05, 5.19e-05, 23114.99273361], [1517218080000, 5.19e-05, 5.19e-05, 5.18e-05, 5.19e-05, 7771.4554224], [1517218140000, 5.19e-05, 5.19e-05, 5.189e-05, 5.189e-05, 3502.90318276], [1517218200000, 5.189e-05, 5.2e-05, 5.183e-05, 5.189e-05, 8745.30560625], [1517218260000, 5.2e-05, 5.2e-05, 5.189e-05, 5.2e-05, 1591.40418719], [1517218320000, 5.2e-05, 5.2e-05, 5.191e-05, 5.191e-05, 1703.48641281], [1517218380000, 5.2e-05, 5.2e-05, 5.191e-05, 5.2e-05, 2392.37365662], [1517218440000, 5.195e-05, 5.2e-05, 5.195e-05, 5.2e-05, 7702.45455537], [1517218500000, 5.2e-05, 5.2e-05, 5.195e-05, 5.196e-05, 2190.0138051], [1517218560000, 5.196e-05, 5.2e-05, 5.196e-05, 5.2e-05, 5249.79815326], [1517218620000, 5.198e-05, 5.2e-05, 5.179e-05, 5.195e-05, 58700.26289365], [1517218680000, 5.198e-05, 5.198e-05, 5.195e-05, 5.195e-05, 101.63120805], [1517218740000, 5.195e-05, 5.195e-05, 5.16e-05, 5.16e-05, 54107.18669501], [1517218800000, 5.172e-05, 5.195e-05, 5.172e-05, 5.174e-05, 12885.40413344], [1517218860000, 5.194e-05, 5.194e-05, 5.182e-05, 5.182e-05, 387.34861053], [1517218920000, 5.182e-05, 5.193e-05, 5.182e-05, 5.193e-05, 1288.35124712], [1517218980000, 5.193e-05, 5.193e-05, 5.182e-05, 5.182e-05, 5752.47563073], [1517219040000, 5.182e-05, 5.193e-05, 5.182e-05, 5.193e-05, 18920.29207518], [1517219100000, 5.183e-05, 5.193e-05, 5.182e-05, 5.183e-05, 23091.71705796], [1517219160000, 5.183e-05, 5.183e-05, 5.173e-05, 5.173e-05, 3006.94715738], [1517219220000, 5.174e-05, 5.174e-05, 5.173e-05, 5.174e-05, 11659.87323478], [1517219280000, 5.174e-05, 5.183e-05, 5.174e-05, 5.183e-05, 1688.18344741], [1517219340000, 5.183e-05, 5.183e-05, 5.174e-05, 5.174e-05, 4564.58278004], [1517219400000, 5.174e-05, 5.183e-05, 5.174e-05, 5.183e-05, 1506.36009938], [1517219460000, 5.173e-05, 5.183e-05, 5.173e-05, 5.181e-05, 2195.36695933], [1517219520000, 5.181e-05, 5.183e-05, 5.181e-05, 5.181e-05, 11128.72032426], [1517219580000, 5.181e-05, 5.183e-05, 5.181e-05, 5.183e-05, 1821.51335906], [1517219640000, 5.183e-05, 5.183e-05, 5.182e-05, 5.182e-05, 937.75706414], [1517219700000, 5.182e-05, 5.183e-05, 5.173e-05, 5.183e-05, 6882.73231118], [1517219760000, 5.173e-05, 5.19e-05, 5.172e-05, 5.19e-05, 2832.06976022], [1517219820000, 5.19e-05, 5.19e-05, 5.182e-05, 5.182e-05, 7743.43360256], [1517219880000, 5.19e-05, 5.19e-05, 5.185e-05, 5.189e-05, 2346.39306158], [1517219940000, 5.173e-05, 5.189e-05, 5.173e-05, 5.189e-05, 487.93574936], [1517220000000, 5.173e-05, 5.175e-05, 5.173e-05, 5.175e-05, 4684.18917188], [1517220060000, 5.173e-05, 5.173e-05, 5.173e-05, 5.173e-05, 661.9960759], [1517220120000, 5.173e-05, 5.19e-05, 5.17e-05, 5.19e-05, 18284.44951381], [1517220180000, 5.19e-05, 5.19e-05, 5.171e-05, 5.171e-05, 12210.11818668], [1517220240000, 5.171e-05, 5.19e-05, 5.171e-05, 5.19e-05, 3189.66126323], [1517220300000, 5.172e-05, 5.19e-05, 5.172e-05, 5.188e-05, 3145.87103841], [1517220360000, 5.188e-05, 5.189e-05, 5.188e-05, 5.189e-05, 1367.20085939], [1517220420000, 5.188e-05, 5.19e-05, 5.188e-05, 5.19e-05, 9403.78084647], [1517220480000, 5.189e-05, 5.19e-05, 5.173e-05, 5.19e-05, 1027.35077282], [1517220540000, 5.189e-05, 5.19e-05, 5.175e-05, 5.175e-05, 1585.88941903], [1517220600000, 5.189e-05, 5.19e-05, 5.175e-05, 5.175e-05, 674.36008442], [1517220660000, 5.19e-05, 5.19e-05, 5.159e-05, 5.174e-05, 6428.9143895], [1517220720000, 5.174e-05, 5.19e-05, 5.174e-05, 5.174e-05, 1521.75991088], [1517220780000, 5.174e-05, 5.19e-05, 5.166e-05, 5.19e-05, 13595.07042654], [1517220840000, 5.189e-05, 5.19e-05, 5.163e-05, 5.174e-05, 14958.83774447], [1517220900000, 5.174e-05, 5.174e-05, 5.165e-05, 5.174e-05, 7633.43405322], [1517220960000, 5.174e-05, 5.174e-05, 5.167e-05, 5.167e-05, 1062.23542833], [1517221020000, 5.179e-05, 5.179e-05, 5.174e-05, 5.174e-05, 42.42818149], [1517221080000, 5.171e-05, 5.189e-05, 5.171e-05, 5.174e-05, 1844.6050326], [1517221140000, 5.174e-05, 5.174e-05, 5.174e-05, 5.174e-05, 254.20333993], [1517221200000, 5.167e-05, 5.174e-05, 5.159e-05, 5.16e-05, 3305.1090972], [1517221260000, 5.174e-05, 5.189e-05, 5.159e-05, 5.189e-05, 5487.06364705], [1517221320000, 5.189e-05, 5.19e-05, 5.189e-05, 5.19e-05, 16457.48093535], [1517221380000, 5.189e-05, 5.19e-05, 5.167e-05, 5.17e-05, 2119.24010423], [1517221440000, 5.19e-05, 5.19e-05, 5.181e-05, 5.181e-05, 18362.60888432], [1517221500000, 5.181e-05, 5.19e-05, 5.181e-05, 5.185e-05, 13075.39311793], [1517221560000, 5.186e-05, 5.19e-05, 5.185e-05, 5.19e-05, 3616.22309598], [1517221620000, 5.19e-05, 5.19e-05, 5.175e-05, 5.175e-05, 16356.60973755], [1517221680000, 5.17e-05, 5.175e-05, 5.17e-05, 5.175e-05, 18492.88822018], [1517221740000, 5.17e-05, 5.175e-05, 5.17e-05, 5.175e-05, 4724.31836206], [1517221800000, 5.174e-05, 5.188e-05, 5.169e-05, 5.188e-05, 2462.60750147], [1517221860000, 5.19e-05, 5.19e-05, 5.188e-05, 5.188e-05, 14767.5716419], [1517221920000, 5.188e-05, 5.189e-05, 5.175e-05, 5.175e-05, 2958.31407235], [1517221980000, 5.175e-05, 5.175e-05, 5.175e-05, 5.175e-05, 3221.30434783], [1517222040000, 5.175e-05, 5.188e-05, 5.175e-05, 5.188e-05, 1272.2751392], [1517222100000, 5.175e-05, 5.175e-05, 5.174e-05, 5.175e-05, 18237.06239877], [1517222160000, 5.175e-05, 5.175e-05, 5.17e-05, 5.17e-05, 1270.66903367], [1517222220000, 5.17e-05, 5.175e-05, 5.156e-05, 5.175e-05, 28558.81426371], [1517222280000, 5.169e-05, 5.175e-05, 5.168e-05, 5.17e-05, 2445.76183279], [1517222340000, 5.17e-05, 5.17e-05, 5.16e-05, 5.17e-05, 14911.95290201], [1517222400000, 5.171e-05, 5.175e-05, 5.171e-05, 5.171e-05, 321.40357253], [1517222460000, 5.171e-05, 5.171e-05, 5.157e-05, 5.17e-05, 2561.19559947], [1517222520000, 5.17e-05, 5.171e-05, 5.152e-05, 5.152e-05, 14890.49067082], [1517222580000, 5.171e-05, 5.172e-05, 5.152e-05, 5.172e-05, 10263.80784389], [1517222640000, 5.175e-05, 5.188e-05, 5.175e-05, 5.188e-05, 1346.73958376], [1517222700000, 5.175e-05, 5.188e-05, 5.172e-05, 5.175e-05, 16885.03972286], [1517222760000, 5.175e-05, 5.185e-05, 5.175e-05, 5.175e-05, 767.53855326], [1517222820000, 5.175e-05, 5.175e-05, 5.155e-05, 5.155e-05, 11011.16791366], [1517222880000, 5.156e-05, 5.172e-05, 5.156e-05, 5.159e-05, 10159.67581877], [1517222940000, 5.172e-05, 5.188e-05, 5.172e-05, 5.187e-05, 2102.08720212], [1517223000000, 5.187e-05, 5.187e-05, 5.163e-05, 5.164e-05, 956.86657854], [1517223060000, 5.164e-05, 5.185e-05, 5.163e-05, 5.164e-05, 7305.194282], [1517223120000, 5.164e-05, 5.186e-05, 5.163e-05, 5.186e-05, 2333.67140707], [1517223180000, 5.166e-05, 5.185e-05, 5.155e-05, 5.185e-05, 10623.99030787], [1517223240000, 5.185e-05, 5.185e-05, 5.161e-05, 5.161e-05, 596.22024475], [1517223300000, 5.184e-05, 5.185e-05, 5.161e-05, 5.185e-05, 3128.16956403], [1517223360000, 5.184e-05, 5.184e-05, 5.163e-05, 5.163e-05, 963.72227579], [1517223420000, 5.184e-05, 5.184e-05, 5.16e-05, 5.184e-05, 5827.01301656], [1517223480000, 5.16e-05, 5.184e-05, 5.16e-05, 5.184e-05, 1718.5936947], [1517223540000, 5.184e-05, 5.184e-05, 5.155e-05, 5.16e-05, 4884.12471276], [1517223600000, 5.16e-05, 5.16e-05, 5.16e-05, 5.16e-05, 5577.5827685], [1517223660000, 5.166e-05, 5.185e-05, 5.16e-05, 5.185e-05, 3696.45680713], [1517223720000, 5.182e-05, 5.183e-05, 5.16e-05, 5.183e-05, 26884.53593763], [1517223780000, 5.156e-05, 5.183e-05, 5.156e-05, 5.158e-05, 5120.92061041], [1517223840000, 5.167e-05, 5.167e-05, 5.13e-05, 5.151e-05, 113032.07854765], [1517223900000, 5.151e-05, 5.167e-05, 5.151e-05, 5.167e-05, 8950.83775913], [1517223960000, 5.167e-05, 5.184e-05, 5.161e-05, 5.184e-05, 14969.85007252], [1517224020000, 5.182e-05, 5.182e-05, 5.16e-05, 5.162e-05, 10226.11828633], [1517224080000, 5.161e-05, 5.166e-05, 5.161e-05, 5.166e-05, 7245.91185915], [1517224140000, 5.166e-05, 5.166e-05, 5.163e-05, 5.166e-05, 832.2964076], [1517224200000, 5.179e-05, 5.18e-05, 5.166e-05, 5.179e-05, 1721.89632149], [1517224260000, 5.179e-05, 5.179e-05, 5.166e-05, 5.166e-05, 1342.61166018], [1517224320000, 5.167e-05, 5.176e-05, 5.166e-05, 5.166e-05, 2864.26889467], [1517224380000, 5.166e-05, 5.166e-05, 5.151e-05, 5.151e-05, 9909.3449213], [1517224440000, 5.165e-05, 5.166e-05, 5.153e-05, 5.153e-05, 304.04814304], [1517224500000, 5.153e-05, 5.17e-05, 5.132e-05, 5.147e-05, 11393.82072877], [1517224560000, 5.147e-05, 5.17e-05, 5.147e-05, 5.154e-05, 5933.09363783], [1517224620000, 5.155e-05, 5.169e-05, 5.155e-05, 5.155e-05, 5428.00509023], [1517224680000, 5.158e-05, 5.166e-05, 5.158e-05, 5.166e-05, 1395.33756871], [1517224740000, 5.166e-05, 5.166e-05, 5.166e-05, 5.166e-05, 3677.49089169], [1517224800000, 5.166e-05, 5.167e-05, 5.134e-05, 5.167e-05, 22536.44909124], [1517224860000, 5.169e-05, 5.169e-05, 5.167e-05, 5.169e-05, 5289.69063573], [1517224920000, 5.167e-05, 5.168e-05, 5.13e-05, 5.132e-05, 11437.62919503], [1517224980000, 5.131e-05, 5.169e-05, 5.131e-05, 5.15e-05, 2306.57967143], [1517225040000, 5.15e-05, 5.178e-05, 5.15e-05, 5.178e-05, 4214.06999906], [1517225100000, 5.17e-05, 5.178e-05, 5.17e-05, 5.178e-05, 765.7965793], [1517225160000, 5.171e-05, 5.176e-05, 5.171e-05, 5.176e-05, 1242.86914432], [1517225220000, 5.176e-05, 5.177e-05, 5.164e-05, 5.177e-05, 3984.89721222], [1517225280000, 5.164e-05, 5.176e-05, 5.162e-05, 5.162e-05, 462.3732674], [1517225340000, 5.164e-05, 5.176e-05, 5.162e-05, 5.176e-05, 626.49389875], [1517225400000, 5.175e-05, 5.175e-05, 5.164e-05, 5.17e-05, 869.86445081], [1517225460000, 5.17e-05, 5.17e-05, 5.162e-05, 5.17e-05, 8165.46890055], [1517225520000, 5.168e-05, 5.17e-05, 5.15e-05, 5.162e-05, 4971.93942839], [1517225580000, 5.15e-05, 5.166e-05, 5.15e-05, 5.15e-05, 1899.66186026], [1517225640000, 5.15e-05, 5.154e-05, 5.135e-05, 5.14e-05, 9567.88196768], [1517225700000, 5.162e-05, 5.165e-05, 5.141e-05, 5.145e-05, 2991.50924094], [1517225760000, 5.165e-05, 5.165e-05, 5.165e-05, 5.165e-05, 506.66200774], [1517225820000, 5.145e-05, 5.145e-05, 5.144e-05, 5.145e-05, 30474.53586728], [1517225880000, 5.144e-05, 5.145e-05, 5.141e-05, 5.145e-05, 4030.35256835], [1517225940000, 5.146e-05, 5.165e-05, 5.146e-05, 5.165e-05, 585.2840208], [1517226000000, 5.165e-05, 5.165e-05, 5.146e-05, 5.165e-05, 4785.16082174], [1517226060000, 5.165e-05, 5.165e-05, 5.165e-05, 5.165e-05, 668.2472532], [1517226120000, 5.147e-05, 5.148e-05, 5.147e-05, 5.148e-05, 1640.22652049], [1517226180000, 5.163e-05, 5.167e-05, 5.151e-05, 5.163e-05, 20513.14003755], [1517226240000, 5.167e-05, 5.169e-05, 5.152e-05, 5.169e-05, 6461.53189119], [1517226300000, 5.169e-05, 5.17e-05, 5.148e-05, 5.148e-05, 37785.00863408], [1517226360000, 5.167e-05, 5.17e-05, 5.147e-05, 5.147e-05, 7664.22885913], [1517226420000, 5.147e-05, 5.176e-05, 5.147e-05, 5.148e-05, 17336.28962422], [1517226480000, 5.149e-05, 5.174e-05, 5.149e-05, 5.172e-05, 5774.0775219], [1517226540000, 5.174e-05, 5.179e-05, 5.149e-05, 5.15e-05, 16725.44550408], [1517226600000, 5.15e-05, 5.177e-05, 5.145e-05, 5.177e-05, 6109.53068784], [1517226660000, 5.145e-05, 5.174e-05, 5.145e-05, 5.174e-05, 1585.99186659], [1517226720000, 5.174e-05, 5.174e-05, 5.15e-05, 5.15e-05, 334.7569483], [1517226780000, 5.152e-05, 5.17e-05, 5.152e-05, 5.153e-05, 3664.70869889], [1517226840000, 5.153e-05, 5.178e-05, 5.153e-05, 5.178e-05, 5479.7080098], [1517226900000, 5.178e-05, 5.178e-05, 5.155e-05, 5.158e-05, 33198.27281998], [1517226960000, 5.17e-05, 5.177e-05, 5.159e-05, 5.159e-05, 5259.58214901], [1517227020000, 5.176e-05, 5.176e-05, 5.159e-05, 5.172e-05, 7908.73780705], [1517227080000, 5.172e-05, 5.178e-05, 5.164e-05, 5.178e-05, 50833.04632091], [1517227140000, 5.176e-05, 5.18e-05, 5.165e-05, 5.168e-05, 10671.76607059], [1517227200000, 5.168e-05, 5.186e-05, 5.168e-05, 5.186e-05, 2005.46138292], [1517227260000, 5.171e-05, 5.188e-05, 5.17e-05, 5.17e-05, 11438.67831032], [1517227320000, 5.17e-05, 5.185e-05, 5.17e-05, 5.171e-05, 5959.08255922], [1517227380000, 5.172e-05, 5.184e-05, 5.171e-05, 5.184e-05, 1973.50096918], [1517227440000, 5.184e-05, 5.184e-05, 5.174e-05, 5.175e-05, 2233.06270004], [1517227500000, 5.175e-05, 5.177e-05, 5.175e-05, 5.177e-05, 1219.39227182], [1517227560000, 5.175e-05, 5.175e-05, 5.174e-05, 5.174e-05, 8415.72835625], [1517227620000, 5.176e-05, 5.176e-05, 5.171e-05, 5.171e-05, 6045.66039604], [1517227680000, 5.171e-05, 5.171e-05, 5.17e-05, 5.17e-05, 2751.87363437], [1517227740000, 5.17e-05, 5.17e-05, 5.17e-05, 5.17e-05, 391.7232205], [1517227800000, 5.164e-05, 5.17e-05, 5.163e-05, 5.163e-05, 7936.49905908], [1517227860000, 5.17e-05, 5.17e-05, 5.164e-05, 5.164e-05, 1853.49062618], [1517227920000, 5.164e-05, 5.164e-05, 5.163e-05, 5.163e-05, 12915.09087334], [1517227980000, 5.163e-05, 5.164e-05, 5.163e-05, 5.164e-05, 2168.64792625], [1517228040000, 5.164e-05, 5.164e-05, 5.163e-05, 5.163e-05, 9130.69014564], [1517228100000, 5.163e-05, 5.17e-05, 5.15e-05, 5.159e-05, 9715.81881477], [1517228160000, 5.16e-05, 5.169e-05, 5.16e-05, 5.169e-05, 2570.11079441], [1517228220000, 5.16e-05, 5.16e-05, 5.16e-05, 5.16e-05, 455.61113215], [1517228280000, 5.16e-05, 5.16e-05, 5.16e-05, 5.16e-05, 11924.35160873], [1517228340000, 5.147e-05, 5.16e-05, 5.146e-05, 5.146e-05, 990.91402251], [1517228400000, 5.146e-05, 5.159e-05, 5.146e-05, 5.159e-05, 15406.93241484], [1517228460000, 5.159e-05, 5.159e-05, 5.147e-05, 5.147e-05, 757.09247568], [1517228520000, 5.159e-05, 5.16e-05, 5.149e-05, 5.149e-05, 3100.00149895], [1517228580000, 5.15e-05, 5.16e-05, 5.149e-05, 5.149e-05, 3557.30379073], [1517228640000, 5.16e-05, 5.16e-05, 5.153e-05, 5.153e-05, 942.06788591], [1517228700000, 5.154e-05, 5.169e-05, 5.154e-05, 5.168e-05, 570.80040373], [1517228760000, 5.168e-05, 5.169e-05, 5.153e-05, 5.153e-05, 2156.66137238], [1517228820000, 5.159e-05, 5.16e-05, 5.149e-05, 5.149e-05, 4893.88679843], [1517228880000, 5.148e-05, 5.169e-05, 5.148e-05, 5.169e-05, 881.83136052], [1517228940000, 5.167e-05, 5.169e-05, 5.15e-05, 5.15e-05, 7946.19125648], [1517229000000, 5.15e-05, 5.151e-05, 5.148e-05, 5.15e-05, 7854.89149499], [1517229060000, 5.15e-05, 5.15e-05, 5.147e-05, 5.147e-05, 19164.96523807], [1517229120000, 5.148e-05, 5.15e-05, 5.145e-05, 5.148e-05, 4819.0586908], [1517229180000, 5.148e-05, 5.148e-05, 5.147e-05, 5.147e-05, 7506.46864364], [1517229240000, 5.147e-05, 5.151e-05, 5.147e-05, 5.148e-05, 13061.0122204], [1517229300000, 5.167e-05, 5.167e-05, 5.167e-05, 5.167e-05, 733.0404911], [1517229360000, 5.167e-05, 5.167e-05, 5.151e-05, 5.167e-05, 186.4188667], [1517229420000, 5.151e-05, 5.151e-05, 5.151e-05, 5.151e-05, 2865.18083701], [1517229480000, 5.165e-05, 5.165e-05, 5.151e-05, 5.151e-05, 3899.77853037], [1517229540000, 5.154e-05, 5.154e-05, 5.154e-05, 5.154e-05, 1545.36433417], [1517229600000, 5.164e-05, 5.164e-05, 5.155e-05, 5.16e-05, 6512.36531914], [1517229660000, 5.163e-05, 5.164e-05, 5.156e-05, 5.16e-05, 12697.71815349], [1517229720000, 5.164e-05, 5.164e-05, 5.164e-05, 5.164e-05, 1594.17532515], [1517229780000, 5.165e-05, 5.167e-05, 5.164e-05, 5.165e-05, 2775.36257529], [1517229840000, 5.167e-05, 5.167e-05, 5.165e-05, 5.165e-05, 10823.52850869], [1517229900000, 5.165e-05, 5.166e-05, 5.15e-05, 5.15e-05, 22950.19126804], [1517229960000, 5.154e-05, 5.164e-05, 5.154e-05, 5.156e-05, 383.32726486], [1517230020000, 5.156e-05, 5.164e-05, 5.156e-05, 5.156e-05, 263.45492988], [1517230080000, 5.164e-05, 5.164e-05, 5.156e-05, 5.156e-05, 328.41992832], [1517230140000, 5.164e-05, 5.164e-05, 5.14e-05, 5.14e-05, 52367.06726909], [1517230200000, 5.14e-05, 5.147e-05, 5.138e-05, 5.141e-05, 11317.44279606], [1517230260000, 5.141e-05, 5.141e-05, 5.12e-05, 5.131e-05, 101533.19684404], [1517230320000, 5.122e-05, 5.162e-05, 5.122e-05, 5.133e-05, 10322.1234331], [1517230380000, 5.133e-05, 5.14e-05, 5.131e-05, 5.14e-05, 9701.83938483], [1517230440000, 5.14e-05, 5.15e-05, 5.132e-05, 5.132e-05, 7362.43977499], [1517230500000, 5.135e-05, 5.14e-05, 5.13e-05, 5.133e-05, 12814.81399227], [1517230560000, 5.13e-05, 5.14e-05, 5.13e-05, 5.132e-05, 9657.91039838], [1517230620000, 5.14e-05, 5.14e-05, 5.131e-05, 5.132e-05, 2211.24864814], [1517230680000, 5.133e-05, 5.14e-05, 5.131e-05, 5.133e-05, 2930.36773232], [1517230740000, 5.133e-05, 5.14e-05, 5.133e-05, 5.135e-05, 3301.96509295], [1517230800000, 5.135e-05, 5.139e-05, 5.131e-05, 5.131e-05, 9429.69248022], [1517230860000, 5.139e-05, 5.139e-05, 5.125e-05, 5.129e-05, 18164.23635601], [1517230920000, 5.138e-05, 5.139e-05, 5.13e-05, 5.139e-05, 1423.1138024], [1517230980000, 5.13e-05, 5.139e-05, 5.127e-05, 5.127e-05, 14987.51677901], [1517231040000, 5.131e-05, 5.139e-05, 5.131e-05, 5.139e-05, 3881.98454752], [1517231100000, 5.139e-05, 5.139e-05, 5.136e-05, 5.138e-05, 871.8535147], [1517231160000, 5.136e-05, 5.138e-05, 5.136e-05, 5.138e-05, 785.76037845], [1517231220000, 5.138e-05, 5.138e-05, 5.133e-05, 5.133e-05, 7066.33695087], [1517231280000, 5.134e-05, 5.139e-05, 5.131e-05, 5.139e-05, 23419.56555254], [1517231340000, 5.138e-05, 5.139e-05, 5.134e-05, 5.139e-05, 33379.96573036], [1517231400000, 5.139e-05, 5.142e-05, 5.139e-05, 5.142e-05, 14828.93422929], [1517231460000, 5.142e-05, 5.142e-05, 5.139e-05, 5.14e-05, 6152.59457564], [1517231520000, 5.142e-05, 5.15e-05, 5.14e-05, 5.15e-05, 7607.36819646], [1517231580000, 5.142e-05, 5.15e-05, 5.142e-05, 5.142e-05, 828.88084917], [1517231640000, 5.142e-05, 5.15e-05, 5.142e-05, 5.15e-05, 1492.18186781], [1517231700000, 5.149e-05, 5.15e-05, 5.149e-05, 5.149e-05, 12048.56722012], [1517231760000, 5.15e-05, 5.15e-05, 5.149e-05, 5.149e-05, 2228.31038565], [1517231820000, 5.15e-05, 5.151e-05, 5.142e-05, 5.149e-05, 26604.01877155], [1517231880000, 5.149e-05, 5.15e-05, 5.14e-05, 5.149e-05, 3938.98584493], [1517231940000, 5.15e-05, 5.15e-05, 5.141e-05, 5.141e-05, 7449.48137588], [1517232000000, 5.141e-05, 5.15e-05, 5.141e-05, 5.144e-05, 7443.06515147], [1517232060000, 5.144e-05, 5.153e-05, 5.143e-05, 5.153e-05, 34826.74637973], [1517232120000, 5.153e-05, 5.153e-05, 5.144e-05, 5.152e-05, 878.98810822], [1517232180000, 5.152e-05, 5.152e-05, 5.144e-05, 5.15e-05, 2452.09273171], [1517232240000, 5.144e-05, 5.147e-05, 5.141e-05, 5.144e-05, 20254.63443845], [1517232300000, 5.144e-05, 5.15e-05, 5.141e-05, 5.141e-05, 31445.73604195], [1517232360000, 5.141e-05, 5.147e-05, 5.141e-05, 5.147e-05, 22775.79741646], [1517232420000, 5.146e-05, 5.147e-05, 5.141e-05, 5.147e-05, 7642.44160718], [1517232480000, 5.147e-05, 5.147e-05, 5.141e-05, 5.141e-05, 2726.28350858], [1517232540000, 5.142e-05, 5.142e-05, 5.141e-05, 5.141e-05, 1408.79019153], [1517232600000, 5.146e-05, 5.146e-05, 5.146e-05, 5.146e-05, 397.70807435], [1517232660000, 5.142e-05, 5.144e-05, 5.142e-05, 5.143e-05, 2704.15229169], [1517232720000, 5.142e-05, 5.142e-05, 5.139e-05, 5.139e-05, 9815.75443853], [1517232780000, 5.139e-05, 5.142e-05, 5.139e-05, 5.142e-05, 14288.54431552], [1517232840000, 5.14e-05, 5.14e-05, 5.139e-05, 5.139e-05, 6582.43620505], [1517232900000, 5.14e-05, 5.14e-05, 5.14e-05, 5.14e-05, 39.27055077], [1517232960000, 5.14e-05, 5.14e-05, 5.139e-05, 5.139e-05, 7638.60541937], [1517233020000, 5.139e-05, 5.139e-05, 5.131e-05, 5.131e-05, 4728.47741936], [1517233080000, 5.132e-05, 5.138e-05, 5.132e-05, 5.132e-05, 3452.89477375], [1517233140000, 5.135e-05, 5.135e-05, 5.135e-05, 5.135e-05, 1403.76648729], [1517233200000, 5.137e-05, 5.139e-05, 5.137e-05, 5.139e-05, 4500.87612816], [1517233260000, 5.139e-05, 5.139e-05, 5.137e-05, 5.138e-05, 7953.35047155], [1517233320000, 5.139e-05, 5.142e-05, 5.138e-05, 5.139e-05, 12497.11862931], [1517233380000, 5.138e-05, 5.139e-05, 5.138e-05, 5.139e-05, 963.24197598], [1517233440000, 5.138e-05, 5.139e-05, 5.138e-05, 5.138e-05, 5231.29471449], [1517233500000, 5.138e-05, 5.138e-05, 5.136e-05, 5.138e-05, 8583.31240558], [1517233560000, 5.139e-05, 5.139e-05, 5.138e-05, 5.138e-05, 3964.48608744], [1517233620000, 5.138e-05, 5.139e-05, 5.138e-05, 5.139e-05, 4973.72104558], [1517233680000, 5.142e-05, 5.142e-05, 5.138e-05, 5.139e-05, 1551.48892493], [1517233740000, 5.139e-05, 5.139e-05, 5.138e-05, 5.138e-05, 7438.9131853], [1517233800000, 5.138e-05, 5.138e-05, 5.133e-05, 5.138e-05, 12013.27952477], [1517233860000, 5.138e-05, 5.139e-05, 5.131e-05, 5.139e-05, 20296.81875669], [1517233920000, 5.131e-05, 5.139e-05, 5.131e-05, 5.139e-05, 20205.74018], [1517233980000, 5.139e-05, 5.139e-05, 5.132e-05, 5.133e-05, 17249.8223846], [1517234040000, 5.133e-05, 5.139e-05, 5.133e-05, 5.135e-05, 600.37643676], [1517234100000, 5.139e-05, 5.139e-05, 5.135e-05, 5.139e-05, 4024.80564067], [1517234160000, 5.135e-05, 5.139e-05, 5.135e-05, 5.135e-05, 1018.09834429], [1517234220000, 5.135e-05, 5.138e-05, 5.135e-05, 5.138e-05, 6368.41032255], [1517234280000, 5.135e-05, 5.135e-05, 5.131e-05, 5.131e-05, 11545.54422364], [1517234340000, 5.131e-05, 5.133e-05, 5.131e-05, 5.133e-05, 12149.62649278], [1517234400000, 5.133e-05, 5.133e-05, 5.133e-05, 5.133e-05, 8031.15312265], [1517234460000, 5.133e-05, 5.133e-05, 5.131e-05, 5.131e-05, 430.06426262], [1517234520000, 5.131e-05, 5.135e-05, 5.131e-05, 5.133e-05, 12941.14143223], [1517234580000, 5.134e-05, 5.135e-05, 5.133e-05, 5.135e-05, 5668.0708518], [1517234640000, 5.134e-05, 5.139e-05, 5.134e-05, 5.139e-05, 7778.04644192], [1517234700000, 5.134e-05, 5.139e-05, 5.133e-05, 5.134e-05, 14705.44295429], [1517234760000, 5.134e-05, 5.139e-05, 5.134e-05, 5.134e-05, 7767.85443124], [1517234820000, 5.134e-05, 5.139e-05, 5.134e-05, 5.139e-05, 4725.19725914], [1517234880000, 5.139e-05, 5.139e-05, 5.138e-05, 5.138e-05, 3448.02615174], [1517234940000, 5.138e-05, 5.145e-05, 5.138e-05, 5.145e-05, 9032.32893834], [1517235000000, 5.139e-05, 5.143e-05, 5.136e-05, 5.136e-05, 10555.20485464], [1517235060000, 5.136e-05, 5.144e-05, 5.121e-05, 5.129e-05, 80937.42523479], [1517235120000, 5.129e-05, 5.129e-05, 5.121e-05, 5.122e-05, 25502.43948525], [1517235180000, 5.122e-05, 5.144e-05, 5.121e-05, 5.121e-05, 23756.5085328], [1517235240000, 5.121e-05, 5.143e-05, 5.121e-05, 5.122e-05, 4094.92528267], [1517235300000, 5.14e-05, 5.141e-05, 5.113e-05, 5.141e-05, 65811.17381173], [1517235360000, 5.14e-05, 5.144e-05, 5.113e-05, 5.114e-05, 18620.02039614], [1517235420000, 5.114e-05, 5.139e-05, 5.114e-05, 5.125e-05, 6245.21155231], [1517235480000, 5.125e-05, 5.139e-05, 5.118e-05, 5.118e-05, 1284.0092603], [1517235540000, 5.139e-05, 5.139e-05, 5.114e-05, 5.139e-05, 6695.15893703], [1517235600000, 5.139e-05, 5.139e-05, 5.118e-05, 5.121e-05, 3864.71760927], [1517235660000, 5.121e-05, 5.121e-05, 5.118e-05, 5.118e-05, 3046.30727168], [1517235720000, 5.12e-05, 5.121e-05, 5.114e-05, 5.119e-05, 5872.09025869], [1517235780000, 5.119e-05, 5.119e-05, 5.114e-05, 5.114e-05, 1549.78542482], [1517235840000, 5.114e-05, 5.119e-05, 5.114e-05, 5.115e-05, 3164.88365452], [1517235900000, 5.115e-05, 5.115e-05, 5.114e-05, 5.115e-05, 3218.208107], [1517235960000, 5.115e-05, 5.118e-05, 5.115e-05, 5.115e-05, 5555.37619421], [1517236020000, 5.115e-05, 5.118e-05, 5.115e-05, 5.118e-05, 2550.33601583], [1517236080000, 5.115e-05, 5.118e-05, 5.115e-05, 5.118e-05, 7522.2136271], [1517236140000, 5.115e-05, 5.119e-05, 5.115e-05, 5.115e-05, 1170.4805912], [1517236200000, 5.115e-05, 5.119e-05, 5.115e-05, 5.117e-05, 20815.80482935], [1517236260000, 5.117e-05, 5.119e-05, 5.115e-05, 5.115e-05, 15454.00081904], [1517236320000, 5.117e-05, 5.119e-05, 5.113e-05, 5.119e-05, 24456.97800566], [1517236380000, 5.113e-05, 5.119e-05, 5.113e-05, 5.119e-05, 13776.60476753], [1517236440000, 5.113e-05, 5.119e-05, 5.113e-05, 5.119e-05, 12695.06548537], [1517236500000, 5.114e-05, 5.119e-05, 5.114e-05, 5.119e-05, 6848.68238722], [1517236560000, 5.114e-05, 5.119e-05, 5.113e-05, 5.119e-05, 38210.08096444], [1517236620000, 5.119e-05, 5.138e-05, 5.119e-05, 5.124e-05, 6670.62803586], [1517236680000, 5.124e-05, 5.137e-05, 5.119e-05, 5.135e-05, 2824.39244097], [1517236740000, 5.135e-05, 5.136e-05, 5.123e-05, 5.123e-05, 2927.30289712], [1517236800000, 5.123e-05, 5.135e-05, 5.123e-05, 5.135e-05, 16878.62519625], [1517236860000, 5.125e-05, 5.135e-05, 5.122e-05, 5.122e-05, 34269.98552294], [1517236920000, 5.122e-05, 5.135e-05, 5.113e-05, 5.113e-05, 46171.13116457], [1517236980000, 5.134e-05, 5.134e-05, 5.113e-05, 5.113e-05, 1014.84654362], [1517237040000, 5.134e-05, 5.134e-05, 5.113e-05, 5.128e-05, 1422.05440788], [1517237100000, 5.128e-05, 5.13e-05, 5.115e-05, 5.125e-05, 38119.74095975], [1517237160000, 5.125e-05, 5.128e-05, 5.125e-05, 5.128e-05, 8607.11257753], [1517237220000, 5.127e-05, 5.128e-05, 5.125e-05, 5.128e-05, 4573.41415063], [1517237280000, 5.126e-05, 5.128e-05, 5.126e-05, 5.126e-05, 4963.75140125], [1517237340000, 5.125e-05, 5.125e-05, 5.125e-05, 5.125e-05, 261.35045795], [1517237400000, 5.126e-05, 5.128e-05, 5.126e-05, 5.128e-05, 4121.68019685], [1517237460000, 5.126e-05, 5.128e-05, 5.126e-05, 5.128e-05, 14701.19142824], [1517237520000, 5.126e-05, 5.128e-05, 5.126e-05, 5.128e-05, 7595.88608688], [1517237580000, 5.128e-05, 5.13e-05, 5.127e-05, 5.128e-05, 3932.49948417], [1517237640000, 5.13e-05, 5.139e-05, 5.128e-05, 5.139e-05, 35952.06230012], [1517237700000, 5.139e-05, 5.139e-05, 5.131e-05, 5.131e-05, 68183.86685005], [1517237760000, 5.139e-05, 5.139e-05, 5.131e-05, 5.139e-05, 6390.3367149], [1517237820000, 5.139e-05, 5.16e-05, 5.132e-05, 5.153e-05, 92970.92499467], [1517237880000, 5.153e-05, 5.153e-05, 5.134e-05, 5.138e-05, 4145.73183209], [1517237940000, 5.138e-05, 5.157e-05, 5.138e-05, 5.152e-05, 22176.34013429], [1517238000000, 5.152e-05, 5.153e-05, 5.138e-05, 5.153e-05, 9424.21805104], [1517238060000, 5.153e-05, 5.153e-05, 5.134e-05, 5.152e-05, 7538.52384984], [1517238120000, 5.138e-05, 5.152e-05, 5.134e-05, 5.152e-05, 7382.88126542], [1517238180000, 5.136e-05, 5.152e-05, 5.136e-05, 5.136e-05, 2211.32606324], [1517238240000, 5.152e-05, 5.152e-05, 5.134e-05, 5.152e-05, 3418.34650983], [1517238300000, 5.151e-05, 5.151e-05, 5.132e-05, 5.151e-05, 2376.1937871], [1517238360000, 5.144e-05, 5.151e-05, 5.132e-05, 5.133e-05, 4116.178293], [1517238420000, 5.134e-05, 5.151e-05, 5.134e-05, 5.134e-05, 2265.0], [1517238480000, 5.132e-05, 5.151e-05, 5.132e-05, 5.151e-05, 4071.42390267], [1517238540000, 5.142e-05, 5.151e-05, 5.142e-05, 5.142e-05, 237.81303638], [1517238600000, 5.142e-05, 5.149e-05, 5.135e-05, 5.143e-05, 60631.40273534], [1517238660000, 5.149e-05, 5.149e-05, 5.143e-05, 5.149e-05, 3422.03911861], [1517238720000, 5.149e-05, 5.152e-05, 5.143e-05, 5.143e-05, 13916.6875109], [1517238780000, 5.151e-05, 5.152e-05, 5.136e-05, 5.143e-05, 5700.20571516], [1517238840000, 5.142e-05, 5.16e-05, 5.135e-05, 5.135e-05, 22156.3272777], [1517238900000, 5.137e-05, 5.166e-05, 5.137e-05, 5.165e-05, 3379.21649242], [1517238960000, 5.165e-05, 5.165e-05, 5.164e-05, 5.164e-05, 6252.5883502], [1517239020000, 5.14e-05, 5.14e-05, 5.136e-05, 5.137e-05, 10280.58741634], [1517239080000, 5.157e-05, 5.157e-05, 5.156e-05, 5.156e-05, 1827.00606252], [1517239140000, 5.156e-05, 5.166e-05, 5.156e-05, 5.156e-05, 5757.26814559], [1517239200000, 5.157e-05, 5.17e-05, 5.156e-05, 5.158e-05, 33542.89675246], [1517239260000, 5.158e-05, 5.159e-05, 5.156e-05, 5.158e-05, 1046.95615353], [1517239320000, 5.158e-05, 5.158e-05, 5.156e-05, 5.158e-05, 38779.16372735], [1517239380000, 5.169e-05, 5.169e-05, 5.159e-05, 5.159e-05, 7331.0], [1517239440000, 5.159e-05, 5.17e-05, 5.158e-05, 5.17e-05, 17770.32991782], [1517239500000, 5.16e-05, 5.17e-05, 5.16e-05, 5.17e-05, 3803.77436027], [1517239560000, 5.17e-05, 5.177e-05, 5.16e-05, 5.16e-05, 18893.46724274], [1517239620000, 5.165e-05, 5.177e-05, 5.161e-05, 5.162e-05, 283.05662337], [1517239680000, 5.162e-05, 5.162e-05, 5.16e-05, 5.16e-05, 13858.95296664], [1517239740000, 5.16e-05, 5.162e-05, 5.16e-05, 5.161e-05, 8640.69191822], [1517239800000, 5.161e-05, 5.177e-05, 5.16e-05, 5.177e-05, 19718.27870864], [1517239860000, 5.176e-05, 5.177e-05, 5.16e-05, 5.177e-05, 8312.16033119], [1517239920000, 5.161e-05, 5.177e-05, 5.161e-05, 5.161e-05, 5585.10024817], [1517239980000, 5.161e-05, 5.177e-05, 5.16e-05, 5.177e-05, 50133.04833752], [1517240040000, 5.161e-05, 5.161e-05, 5.16e-05, 5.161e-05, 946.15897924], [1517240100000, 5.161e-05, 5.177e-05, 5.161e-05, 5.162e-05, 3517.14381228], [1517240160000, 5.162e-05, 5.177e-05, 5.162e-05, 5.177e-05, 4406.81381856], [1517240220000, 5.163e-05, 5.163e-05, 5.137e-05, 5.137e-05, 167072.74375238], [1517240280000, 5.137e-05, 5.149e-05, 5.136e-05, 5.149e-05, 975.56133287], [1517240340000, 5.137e-05, 5.149e-05, 5.105e-05, 5.148e-05, 96283.53766635], [1517240400000, 5.148e-05, 5.148e-05, 5.148e-05, 5.148e-05, 462.56717949], [1517240460000, 5.139e-05, 5.148e-05, 5.139e-05, 5.148e-05, 23221.91891956], [1517240520000, 5.148e-05, 5.148e-05, 5.139e-05, 5.139e-05, 1558.05032228], [1517240580000, 5.137e-05, 5.139e-05, 5.137e-05, 5.139e-05, 4309.16461741], [1517240640000, 5.139e-05, 5.147e-05, 5.139e-05, 5.147e-05, 12096.74037735], [1517240700000, 5.147e-05, 5.148e-05, 5.147e-05, 5.148e-05, 13417.01410059], [1517240760000, 5.147e-05, 5.147e-05, 5.139e-05, 5.14e-05, 1168.02533311], [1517240820000, 5.14e-05, 5.141e-05, 5.139e-05, 5.141e-05, 6514.06730697], [1517240880000, 5.141e-05, 5.141e-05, 5.139e-05, 5.141e-05, 2470.55297456], [1517240940000, 5.141e-05, 5.141e-05, 5.139e-05, 5.139e-05, 5884.65447442], [1517241000000, 5.141e-05, 5.141e-05, 5.139e-05, 5.139e-05, 8390.59986756], [1517241060000, 5.14e-05, 5.14e-05, 5.14e-05, 5.14e-05, 1445.8158099], [1517241120000, 5.139e-05, 5.14e-05, 5.139e-05, 5.14e-05, 325.70962083], [1517241180000, 5.14e-05, 5.146e-05, 5.14e-05, 5.146e-05, 2981.61798008], [1517241240000, 5.146e-05, 5.15e-05, 5.146e-05, 5.148e-05, 5732.905806], [1517241300000, 5.148e-05, 5.15e-05, 5.146e-05, 5.147e-05, 34330.58181612], [1517241360000, 5.146e-05, 5.146e-05, 5.14e-05, 5.14e-05, 274.90176702], [1517241420000, 5.139e-05, 5.14e-05, 5.139e-05, 5.139e-05, 6132.08338943], [1517241480000, 5.139e-05, 5.146e-05, 5.139e-05, 5.14e-05, 2754.60323421], [1517241540000, 5.14e-05, 5.146e-05, 5.14e-05, 5.14e-05, 394.04181024], [1517241600000, 5.14e-05, 5.146e-05, 5.139e-05, 5.139e-05, 29759.26522288], [1517241660000, 5.146e-05, 5.146e-05, 5.139e-05, 5.139e-05, 2189.94304067], [1517241720000, 5.14e-05, 5.145e-05, 5.139e-05, 5.139e-05, 4501.10871689], [1517241780000, 5.139e-05, 5.145e-05, 5.139e-05, 5.145e-05, 11800.82725534], [1517241840000, 5.142e-05, 5.142e-05, 5.139e-05, 5.142e-05, 1676.01311118], [1517241900000, 5.142e-05, 5.142e-05, 5.139e-05, 5.139e-05, 3904.39295018], [1517241960000, 5.139e-05, 5.146e-05, 5.106e-05, 5.108e-05, 21054.52842745], [1517242020000, 5.121e-05, 5.121e-05, 5.108e-05, 5.112e-05, 4114.73317128], [1517242080000, 5.112e-05, 5.142e-05, 5.11e-05, 5.11e-05, 3008.42262171], [1517242140000, 5.142e-05, 5.144e-05, 5.13e-05, 5.144e-05, 1147.03213077], [1517242200000, 5.144e-05, 5.144e-05, 5.13e-05, 5.13e-05, 335.66669896], [1517242260000, 5.13e-05, 5.146e-05, 5.13e-05, 5.144e-05, 8422.78480381], [1517242320000, 5.129e-05, 5.144e-05, 5.127e-05, 5.127e-05, 3068.81922251], [1517242380000, 5.125e-05, 5.126e-05, 5.125e-05, 5.126e-05, 252.15449264], [1517242440000, 5.125e-05, 5.125e-05, 5.122e-05, 5.122e-05, 1043.43281992], [1517242500000, 5.122e-05, 5.122e-05, 5.121e-05, 5.121e-05, 2146.2272199], [1517242560000, 5.12e-05, 5.122e-05, 5.12e-05, 5.122e-05, 10591.10105889], [1517242620000, 5.121e-05, 5.121e-05, 5.111e-05, 5.121e-05, 9534.14232083], [1517242680000, 5.112e-05, 5.121e-05, 5.112e-05, 5.121e-05, 6139.90429392], [1517242740000, 5.121e-05, 5.121e-05, 5.118e-05, 5.121e-05, 6140.23317903], [1517242800000, 5.118e-05, 5.121e-05, 5.118e-05, 5.121e-05, 1771.49383712], [1517242860000, 5.119e-05, 5.119e-05, 5.119e-05, 5.119e-05, 188.94375012], [1517242920000, 5.121e-05, 5.121e-05, 5.12e-05, 5.121e-05, 5541.50319604], [1517242980000, 5.121e-05, 5.121e-05, 5.118e-05, 5.121e-05, 6834.07845827], [1517243040000, 5.121e-05, 5.121e-05, 5.12e-05, 5.121e-05, 1679.55773112], [1517243100000, 5.121e-05, 5.121e-05, 5.12e-05, 5.12e-05, 2268.2939302], [1517243160000, 5.12e-05, 5.121e-05, 5.12e-05, 5.121e-05, 2181.14531718], [1517243220000, 5.122e-05, 5.125e-05, 5.121e-05, 5.125e-05, 4923.56295074], [1517243280000, 5.122e-05, 5.125e-05, 5.122e-05, 5.123e-05, 5277.79930991], [1517243340000, 5.124e-05, 5.128e-05, 5.124e-05, 5.127e-05, 18151.092914], [1517243400000, 5.128e-05, 5.143e-05, 5.121e-05, 5.121e-05, 6515.70545436], [1517243460000, 5.128e-05, 5.139e-05, 5.111e-05, 5.111e-05, 13246.10493794], [1517243520000, 5.122e-05, 5.122e-05, 5.11e-05, 5.111e-05, 80865.50345487], [1517243580000, 5.111e-05, 5.111e-05, 5.11e-05, 5.111e-05, 48481.0707819], [1517243640000, 5.111e-05, 5.134e-05, 5.111e-05, 5.134e-05, 2830.67205194], [1517243700000, 5.12e-05, 5.132e-05, 5.113e-05, 5.113e-05, 5517.40629944], [1517243760000, 5.122e-05, 5.122e-05, 5.106e-05, 5.12e-05, 38173.06655586], [1517243820000, 5.121e-05, 5.121e-05, 5.111e-05, 5.111e-05, 2932.55125986], [1517243880000, 5.111e-05, 5.122e-05, 5.111e-05, 5.115e-05, 30288.15308929], [1517243940000, 5.122e-05, 5.138e-05, 5.114e-05, 5.138e-05, 9837.64997566], [1517244000000, 5.137e-05, 5.138e-05, 5.106e-05, 5.106e-05, 17307.7393341], [1517244060000, 5.111e-05, 5.113e-05, 5.111e-05, 5.113e-05, 4488.36121443], [1517244120000, 5.115e-05, 5.116e-05, 5.113e-05, 5.113e-05, 13356.33641295], [1517244180000, 5.113e-05, 5.136e-05, 5.113e-05, 5.131e-05, 2288.71782574], [1517244240000, 5.116e-05, 5.128e-05, 5.109e-05, 5.109e-05, 21113.5777346], [1517244300000, 5.128e-05, 5.128e-05, 5.107e-05, 5.107e-05, 22533.03656011], [1517244360000, 5.111e-05, 5.122e-05, 5.108e-05, 5.111e-05, 14085.20154889], [1517244420000, 5.111e-05, 5.123e-05, 5.109e-05, 5.123e-05, 5158.22583469], [1517244480000, 5.11e-05, 5.111e-05, 5.11e-05, 5.111e-05, 35992.92384151], [1517244540000, 5.109e-05, 5.109e-05, 5.106e-05, 5.106e-05, 5727.71842503], [1517244600000, 5.109e-05, 5.11e-05, 5.107e-05, 5.107e-05, 28310.64341351], [1517244660000, 5.107e-05, 5.107e-05, 5.105e-05, 5.107e-05, 29401.67504618], [1517244720000, 5.107e-05, 5.109e-05, 5.107e-05, 5.109e-05, 825.23963437], [1517244780000, 5.109e-05, 5.109e-05, 5.101e-05, 5.109e-05, 28594.6552789], [1517244840000, 5.103e-05, 5.103e-05, 5.101e-05, 5.103e-05, 16987.41003055], [1517244900000, 5.103e-05, 5.109e-05, 5.1e-05, 5.108e-05, 123817.69707542], [1517244960000, 5.101e-05, 5.101e-05, 5.1e-05, 5.1e-05, 8744.71727533], [1517245020000, 5.108e-05, 5.108e-05, 5.1e-05, 5.102e-05, 79844.48747509], [1517245080000, 5.102e-05, 5.102e-05, 5.1e-05, 5.102e-05, 24098.377256], [1517245140000, 5.1e-05, 5.108e-05, 5.1e-05, 5.101e-05, 11485.03732124], [1517245200000, 5.101e-05, 5.109e-05, 5.101e-05, 5.109e-05, 3159.15058875], [1517245260000, 5.109e-05, 5.126e-05, 5.108e-05, 5.108e-05, 8677.9023747], [1517245320000, 5.109e-05, 5.109e-05, 5.108e-05, 5.108e-05, 655.99853868], [1517245380000, 5.108e-05, 5.108e-05, 5.103e-05, 5.103e-05, 3576.80661563], [1517245440000, 5.107e-05, 5.107e-05, 5.101e-05, 5.103e-05, 1390.07389455], [1517245500000, 5.107e-05, 5.107e-05, 5.103e-05, 5.107e-05, 657.07071151], [1517245560000, 5.107e-05, 5.107e-05, 5.104e-05, 5.107e-05, 1442.64789848], [1517245620000, 5.107e-05, 5.107e-05, 5.107e-05, 5.107e-05, 4029.65006222], [1517245680000, 5.107e-05, 5.107e-05, 5.1e-05, 5.1e-05, 19392.63068791], [1517245740000, 5.107e-05, 5.107e-05, 5.107e-05, 5.107e-05, 67.52753877], [1517245800000, 5.106e-05, 5.107e-05, 5.105e-05, 5.105e-05, 1475.37106931], [1517245860000, 5.107e-05, 5.107e-05, 5.105e-05, 5.105e-05, 1232.81639172], [1517245920000, 5.107e-05, 5.107e-05, 5.105e-05, 5.107e-05, 1409.59304484], [1517245980000, 5.107e-05, 5.108e-05, 5.107e-05, 5.108e-05, 1989.17657899], [1517246040000, 5.108e-05, 5.108e-05, 5.105e-05, 5.107e-05, 4092.38562456], [1517246100000, 5.107e-05, 5.107e-05, 5.105e-05, 5.107e-05, 4764.16542371], [1517246160000, 5.107e-05, 5.113e-05, 5.105e-05, 5.113e-05, 7856.65237512], [1517246220000, 5.106e-05, 5.11e-05, 5.106e-05, 5.11e-05, 168.66154589], [1517246280000, 5.106e-05, 5.109e-05, 5.106e-05, 5.109e-05, 3106.90645379], [1517246340000, 5.109e-05, 5.113e-05, 5.106e-05, 5.113e-05, 9175.58305336], [1517246400000, 5.113e-05, 5.124e-05, 5.109e-05, 5.109e-05, 8112.58265594], [1517246460000, 5.113e-05, 5.127e-05, 5.108e-05, 5.127e-05, 9063.32257541], [1517246520000, 5.124e-05, 5.124e-05, 5.106e-05, 5.109e-05, 15932.25262659], [1517246580000, 5.109e-05, 5.109e-05, 5.108e-05, 5.109e-05, 11561.13559209], [1517246640000, 5.11e-05, 5.124e-05, 5.106e-05, 5.124e-05, 2412.02756142], [1517246700000, 5.124e-05, 5.124e-05, 5.106e-05, 5.107e-05, 5901.31405056], [1517246760000, 5.114e-05, 5.114e-05, 5.108e-05, 5.114e-05, 4796.74018429], [1517246820000, 5.109e-05, 5.124e-05, 5.109e-05, 5.124e-05, 1251.36645675], [1517246880000, 5.115e-05, 5.124e-05, 5.111e-05, 5.12e-05, 12594.51517125], [1517246940000, 5.12e-05, 5.124e-05, 5.111e-05, 5.112e-05, 11173.13219746], [1517247000000, 5.121e-05, 5.123e-05, 5.12e-05, 5.123e-05, 25163.402469], [1517247060000, 5.121e-05, 5.122e-05, 5.121e-05, 5.122e-05, 4037.73131335], [1517247120000, 5.121e-05, 5.124e-05, 5.121e-05, 5.123e-05, 15364.44591239], [1517247180000, 5.123e-05, 5.124e-05, 5.122e-05, 5.122e-05, 15085.01541836], [1517247240000, 5.122e-05, 5.122e-05, 5.115e-05, 5.115e-05, 36599.68357321], [1517247300000, 5.115e-05, 5.12e-05, 5.111e-05, 5.12e-05, 56464.29015994], [1517247360000, 5.12e-05, 5.124e-05, 5.12e-05, 5.123e-05, 21846.08588318], [1517247420000, 5.124e-05, 5.124e-05, 5.123e-05, 5.124e-05, 1829.24131105], [1517247480000, 5.124e-05, 5.127e-05, 5.12e-05, 5.12e-05, 26790.88449825], [1517247540000, 5.123e-05, 5.123e-05, 5.12e-05, 5.12e-05, 10465.71058812], [1517247600000, 5.115e-05, 5.119e-05, 5.112e-05, 5.117e-05, 19964.48531924], [1517247660000, 5.117e-05, 5.117e-05, 5.1e-05, 5.1e-05, 55165.3090739], [1517247720000, 5.101e-05, 5.101e-05, 5.1e-05, 5.1e-05, 11577.78549676], [1517247780000, 5.1e-05, 5.116e-05, 5.1e-05, 5.116e-05, 4013.72448376], [1517247840000, 5.104e-05, 5.104e-05, 5.104e-05, 5.104e-05, 719.0], [1517247900000, 5.104e-05, 5.11e-05, 5.1e-05, 5.11e-05, 47603.77662548], [1517247960000, 5.099e-05, 5.11e-05, 5.096e-05, 5.1e-05, 100876.2580272], [1517248080000, 5.101e-05, 5.101e-05, 5.101e-05, 5.101e-05, 31.27722594], [1517248140000, 5.109e-05, 5.109e-05, 5.101e-05, 5.101e-05, 1207.23123929], [1517248200000, 5.101e-05, 5.101e-05, 5.101e-05, 5.101e-05, 1413.46324194], [1517248260000, 5.103e-05, 5.107e-05, 5.1e-05, 5.107e-05, 28634.55231098], [1517248320000, 5.107e-05, 5.107e-05, 5.107e-05, 5.107e-05, 419.24354464], [1517248380000, 5.101e-05, 5.108e-05, 5.101e-05, 5.107e-05, 5295.55666441], [1517248440000, 5.107e-05, 5.107e-05, 5.101e-05, 5.107e-05, 3673.3492896], [1517248500000, 5.107e-05, 5.108e-05, 5.107e-05, 5.107e-05, 9227.05185886], [1517248560000, 5.107e-05, 5.107e-05, 5.107e-05, 5.107e-05, 741.3210939], [1517248620000, 5.107e-05, 5.108e-05, 5.107e-05, 5.108e-05, 1288.73750608], [1517248680000, 5.107e-05, 5.109e-05, 5.107e-05, 5.109e-05, 2333.62017239], [1517248740000, 5.109e-05, 5.11e-05, 5.109e-05, 5.11e-05, 8374.23199832], [1517248800000, 5.11e-05, 5.11e-05, 5.101e-05, 5.101e-05, 3394.2822894], [1517248860000, 5.109e-05, 5.109e-05, 5.108e-05, 5.108e-05, 46193.48600288], [1517248920000, 5.11e-05, 5.112e-05, 5.11e-05, 5.11e-05, 37822.95330742], [1517248980000, 5.11e-05, 5.11e-05, 5.11e-05, 5.11e-05, 2653.29051705], [1517249040000, 5.11e-05, 5.11e-05, 5.109e-05, 5.109e-05, 11099.84424306], [1517249100000, 5.109e-05, 5.11e-05, 5.109e-05, 5.109e-05, 6840.20066696], [1517249160000, 5.109e-05, 5.11e-05, 5.109e-05, 5.11e-05, 1021.98057391], [1517249220000, 5.109e-05, 5.11e-05, 5.109e-05, 5.11e-05, 3723.18669718], [1517249280000, 5.109e-05, 5.109e-05, 5.101e-05, 5.101e-05, 854.89539362], [1517249340000, 5.101e-05, 5.107e-05, 5.101e-05, 5.107e-05, 2127.47581732], [1517249400000, 5.102e-05, 5.103e-05, 5.102e-05, 5.102e-05, 3916.1536182], [1517249460000, 5.102e-05, 5.103e-05, 5.102e-05, 5.102e-05, 2308.01325281], [1517249520000, 5.102e-05, 5.103e-05, 5.101e-05, 5.101e-05, 1969.09572874], [1517249580000, 5.101e-05, 5.101e-05, 5.1e-05, 5.101e-05, 13968.41950762], [1517249640000, 5.1e-05, 5.101e-05, 5.1e-05, 5.101e-05, 3135.76086963], [1517249700000, 5.1e-05, 5.101e-05, 5.1e-05, 5.1e-05, 12398.09003318], [1517249760000, 5.101e-05, 5.101e-05, 5.1e-05, 5.1e-05, 2080.68219129], [1517249820000, 5.101e-05, 5.101e-05, 5.1e-05, 5.1e-05, 2274.485954], [1517249880000, 5.1e-05, 5.101e-05, 5.1e-05, 5.101e-05, 8006.07113498], [1517249940000, 5.101e-05, 5.101e-05, 5.1e-05, 5.1e-05, 13111.09701214], [1517250000000, 5.1e-05, 5.101e-05, 5.1e-05, 5.1e-05, 29085.70012582], [1517250060000, 5.1e-05, 5.101e-05, 5.097e-05, 5.1e-05, 15603.02370537], [1517250120000, 5.097e-05, 5.101e-05, 5.097e-05, 5.1e-05, 19948.12278379], [1517250180000, 5.1e-05, 5.1e-05, 5.096e-05, 5.1e-05, 19649.42696847], [1517250240000, 5.1e-05, 5.1e-05, 5.097e-05, 5.097e-05, 3814.62398173], [1517250300000, 5.097e-05, 5.1e-05, 5.097e-05, 5.1e-05, 580.0854318], [1517250360000, 5.1e-05, 5.1e-05, 5.096e-05, 5.096e-05, 14536.96323096], [1517250420000, 5.097e-05, 5.1e-05, 5.096e-05, 5.1e-05, 22513.18958083], [1517250480000, 5.1e-05, 5.1e-05, 5.096e-05, 5.096e-05, 35093.09020505], [1517250540000, 5.096e-05, 5.1e-05, 5.096e-05, 5.1e-05, 64753.92560594], [1517250600000, 5.1e-05, 5.1e-05, 5.056e-05, 5.096e-05, 159935.62645052], [1517250660000, 5.095e-05, 5.095e-05, 5.086e-05, 5.093e-05, 4888.07353143], [1517250720000, 5.091e-05, 5.097e-05, 5.091e-05, 5.095e-05, 9888.84230591], [1517250780000, 5.097e-05, 5.11e-05, 5.095e-05, 5.109e-05, 26238.2018812], [1517250840000, 5.109e-05, 5.109e-05, 5.08e-05, 5.108e-05, 20282.32437108], [1517250900000, 5.108e-05, 5.108e-05, 5.08e-05, 5.108e-05, 15695.1005876], [1517250960000, 5.11e-05, 5.11e-05, 5.108e-05, 5.11e-05, 19095.81339402], [1517251020000, 5.11e-05, 5.11e-05, 5.108e-05, 5.109e-05, 11790.40542386], [1517251080000, 5.108e-05, 5.108e-05, 5.107e-05, 5.108e-05, 3841.90127362], [1517251140000, 5.108e-05, 5.108e-05, 5.108e-05, 5.108e-05, 254.10765711], [1517251200000, 5.105e-05, 5.105e-05, 5.1e-05, 5.104e-05, 11945.9522309], [1517251260000, 5.1e-05, 5.104e-05, 5.092e-05, 5.1e-05, 7251.70721351], [1517251320000, 5.1e-05, 5.1e-05, 5.099e-05, 5.099e-05, 495.76672983], [1517251380000, 5.099e-05, 5.103e-05, 5.092e-05, 5.093e-05, 1257.26922701], [1517251440000, 5.093e-05, 5.102e-05, 5.093e-05, 5.1e-05, 6302.39025094], [1517251500000, 5.1e-05, 5.103e-05, 5.093e-05, 5.093e-05, 15254.30998559], [1517251560000, 5.093e-05, 5.099e-05, 5.092e-05, 5.093e-05, 20503.46406526], [1517251620000, 5.093e-05, 5.096e-05, 5.092e-05, 5.093e-05, 9334.37871431], [1517251680000, 5.096e-05, 5.096e-05, 5.092e-05, 5.093e-05, 11793.98518798], [1517251740000, 5.096e-05, 5.096e-05, 5.094e-05, 5.096e-05, 1685.80688619], [1517251800000, 5.096e-05, 5.1e-05, 5.096e-05, 5.097e-05, 9838.05556383], [1517251860000, 5.097e-05, 5.097e-05, 5.09e-05, 5.092e-05, 7158.6851535], [1517251920000, 5.096e-05, 5.096e-05, 5.09e-05, 5.09e-05, 40528.86185645], [1517251980000, 5.09e-05, 5.096e-05, 5.09e-05, 5.09e-05, 38397.38878098], [1517252040000, 5.09e-05, 5.096e-05, 5.09e-05, 5.096e-05, 13347.98981163], [1517252100000, 5.096e-05, 5.096e-05, 5.091e-05, 5.091e-05, 14991.1593036], [1517252160000, 5.095e-05, 5.097e-05, 5.091e-05, 5.097e-05, 27239.7531059], [1517252220000, 5.103e-05, 5.104e-05, 5.097e-05, 5.103e-05, 24940.64771218], [1517252280000, 5.103e-05, 5.104e-05, 5.097e-05, 5.102e-05, 6077.14614133], [1517252340000, 5.097e-05, 5.099e-05, 5.097e-05, 5.097e-05, 8704.65612454], [1517252400000, 5.099e-05, 5.103e-05, 5.097e-05, 5.103e-05, 12813.23738591], [1517252460000, 5.102e-05, 5.104e-05, 5.099e-05, 5.103e-05, 46811.13245867], [1517252520000, 5.103e-05, 5.104e-05, 5.103e-05, 5.103e-05, 18670.37094726], [1517252580000, 5.104e-05, 5.104e-05, 5.103e-05, 5.103e-05, 7837.06403782], [1517252640000, 5.103e-05, 5.103e-05, 5.096e-05, 5.096e-05, 28956.140924], [1517252700000, 5.096e-05, 5.103e-05, 5.096e-05, 5.103e-05, 4341.07235146], [1517252760000, 5.103e-05, 5.104e-05, 5.097e-05, 5.098e-05, 8095.55804949], [1517252820000, 5.098e-05, 5.104e-05, 5.098e-05, 5.104e-05, 1403.78031018], [1517252880000, 5.103e-05, 5.104e-05, 5.098e-05, 5.098e-05, 1887.64444132], [1517252940000, 5.1e-05, 5.108e-05, 5.098e-05, 5.108e-05, 3490.64275614], [1517253000000, 5.098e-05, 5.109e-05, 5.098e-05, 5.103e-05, 2409.32607142], [1517253060000, 5.1e-05, 5.103e-05, 5.1e-05, 5.1e-05, 1504.04134737], [1517253120000, 5.1e-05, 5.1e-05, 5.092e-05, 5.092e-05, 9367.98463501], [1517253180000, 5.102e-05, 5.108e-05, 5.1e-05, 5.108e-05, 3967.07061789], [1517253240000, 5.108e-05, 5.126e-05, 5.108e-05, 5.126e-05, 24474.80144235], [1517253300000, 5.125e-05, 5.125e-05, 5.109e-05, 5.124e-05, 13209.15076613], [1517253360000, 5.109e-05, 5.109e-05, 5.108e-05, 5.108e-05, 9678.32386703], [1517253420000, 5.109e-05, 5.109e-05, 5.108e-05, 5.108e-05, 154.04251071], [1517253480000, 5.108e-05, 5.108e-05, 5.092e-05, 5.092e-05, 7311.10993471], [1517253540000, 5.092e-05, 5.092e-05, 5.092e-05, 5.092e-05, 5250.0], [1517253600000, 5.109e-05, 5.109e-05, 5.082e-05, 5.109e-05, 61514.34288438], [1517253660000, 5.1e-05, 5.109e-05, 5.1e-05, 5.109e-05, 1820.17859044], [1517253720000, 5.109e-05, 5.109e-05, 5.109e-05, 5.109e-05, 1061.53814158], [1517253780000, 5.1e-05, 5.1e-05, 5.082e-05, 5.092e-05, 30148.86618946], [1517253840000, 5.083e-05, 5.092e-05, 5.083e-05, 5.092e-05, 7698.39337339], [1517253900000, 5.09e-05, 5.09e-05, 5.085e-05, 5.085e-05, 1272.83712687], [1517253960000, 5.086e-05, 5.092e-05, 5.086e-05, 5.088e-05, 8426.56145277], [1517254020000, 5.088e-05, 5.088e-05, 5.086e-05, 5.088e-05, 17876.21559933], [1517254080000, 5.087e-05, 5.087e-05, 5.085e-05, 5.085e-05, 27894.93037555], [1517254140000, 5.087e-05, 5.092e-05, 5.087e-05, 5.092e-05, 4980.30346545], [1517254200000, 5.092e-05, 5.092e-05, 5.088e-05, 5.088e-05, 18455.3021381], [1517254260000, 5.088e-05, 5.092e-05, 5.085e-05, 5.088e-05, 14265.17899625], [1517254320000, 5.088e-05, 5.088e-05, 5.085e-05, 5.086e-05, 4031.90436689], [1517254380000, 5.087e-05, 5.087e-05, 5.085e-05, 5.087e-05, 307.00197038], [1517254440000, 5.087e-05, 5.088e-05, 5.087e-05, 5.088e-05, 3514.0386121], [1517254500000, 5.087e-05, 5.087e-05, 5.085e-05, 5.085e-05, 63110.76707814], [1517254560000, 5.085e-05, 5.086e-05, 5.085e-05, 5.086e-05, 5360.43745975], [1517254620000, 5.086e-05, 5.087e-05, 5.08e-05, 5.087e-05, 40287.09641423], [1517254680000, 5.087e-05, 5.092e-05, 5.087e-05, 5.087e-05, 21949.00307133], [1517254740000, 5.087e-05, 5.087e-05, 5.081e-05, 5.087e-05, 18896.00662244], [1517254800000, 5.081e-05, 5.087e-05, 5.081e-05, 5.085e-05, 15157.9614006], [1517254860000, 5.085e-05, 5.087e-05, 5.081e-05, 5.087e-05, 8628.33259294], [1517254920000, 5.087e-05, 5.087e-05, 5.087e-05, 5.087e-05, 808.98285593], [1517254980000, 5.085e-05, 5.086e-05, 5.085e-05, 5.086e-05, 9357.36684712], [1517255040000, 5.086e-05, 5.086e-05, 5.081e-05, 5.081e-05, 27855.41427792], [1517255100000, 5.081e-05, 5.081e-05, 5.081e-05, 5.081e-05, 36134.19301223], [1517255160000, 5.081e-05, 5.081e-05, 5.08e-05, 5.081e-05, 59706.72282677], [1517255220000, 5.081e-05, 5.081e-05, 5.077e-05, 5.081e-05, 68136.57639472], [1517255280000, 5.081e-05, 5.081e-05, 5.077e-05, 5.08e-05, 19315.70373185], [1517255340000, 5.081e-05, 5.081e-05, 5.078e-05, 5.08e-05, 38765.72681523], [1517255400000, 5.08e-05, 5.08e-05, 5.077e-05, 5.08e-05, 3810.35156491], [1517255460000, 5.08e-05, 5.08e-05, 5.077e-05, 5.077e-05, 42329.4542158], [1517255520000, 5.077e-05, 5.08e-05, 5.077e-05, 5.078e-05, 14655.02139803], [1517255580000, 5.078e-05, 5.08e-05, 5.078e-05, 5.078e-05, 34872.4398736], [1517255640000, 5.078e-05, 5.08e-05, 5.075e-05, 5.08e-05, 44134.54588492], [1517255700000, 5.078e-05, 5.081e-05, 5.078e-05, 5.081e-05, 15710.97733624], [1517255760000, 5.08e-05, 5.081e-05, 5.056e-05, 5.081e-05, 36471.95417704], [1517255820000, 5.081e-05, 5.081e-05, 5.071e-05, 5.071e-05, 20581.75543616], [1517255880000, 5.071e-05, 5.081e-05, 5.071e-05, 5.081e-05, 40113.31511962], [1517255940000, 5.081e-05, 5.1e-05, 5.071e-05, 5.1e-05, 18691.68379683], [1517256000000, 5.1e-05, 5.1e-05, 5.081e-05, 5.081e-05, 1458.04237221], [1517256060000, 5.081e-05, 5.092e-05, 5.081e-05, 5.082e-05, 4950.26346816], [1517256120000, 5.082e-05, 5.092e-05, 5.082e-05, 5.09e-05, 11417.96096482], [1517256180000, 5.09e-05, 5.09e-05, 5.085e-05, 5.09e-05, 6906.26689181], [1517256240000, 5.087e-05, 5.087e-05, 5.085e-05, 5.086e-05, 3651.36283186], [1517256300000, 5.086e-05, 5.09e-05, 5.085e-05, 5.085e-05, 3002.76619305], [1517256360000, 5.089e-05, 5.09e-05, 5.086e-05, 5.09e-05, 18768.31575122], [1517256420000, 5.086e-05, 5.09e-05, 5.086e-05, 5.086e-05, 1293.79054269], [1517256480000, 5.086e-05, 5.09e-05, 5.086e-05, 5.086e-05, 15644.94502032], [1517256540000, 5.086e-05, 5.09e-05, 5.082e-05, 5.082e-05, 76591.42334706], [1517256600000, 5.092e-05, 5.092e-05, 5.057e-05, 5.092e-05, 18624.35540324], [1517256660000, 5.058e-05, 5.092e-05, 5.058e-05, 5.075e-05, 19613.57131786], [1517256720000, 5.075e-05, 5.092e-05, 5.058e-05, 5.075e-05, 4857.76858085], [1517256780000, 5.075e-05, 5.075e-05, 5.061e-05, 5.064e-05, 1075.59117698], [1517256840000, 5.09e-05, 5.09e-05, 5.067e-05, 5.07e-05, 3703.29837855], [1517256900000, 5.089e-05, 5.089e-05, 5.072e-05, 5.072e-05, 2282.45819972], [1517256960000, 5.08e-05, 5.089e-05, 5.058e-05, 5.089e-05, 21135.60388883], [1517257020000, 5.08e-05, 5.091e-05, 5.058e-05, 5.058e-05, 16904.79271847], [1517257080000, 5.088e-05, 5.088e-05, 5.058e-05, 5.06e-05, 3037.56275763], [1517257140000, 5.058e-05, 5.06e-05, 5.058e-05, 5.06e-05, 15687.05539097], [1517257200000, 5.06e-05, 5.081e-05, 5.06e-05, 5.081e-05, 20153.3839276], [1517257260000, 5.079e-05, 5.08e-05, 5.057e-05, 5.065e-05, 20241.91784883], [1517257320000, 5.065e-05, 5.065e-05, 5.057e-05, 5.065e-05, 25279.61052502], [1517257380000, 5.065e-05, 5.081e-05, 5.057e-05, 5.057e-05, 19174.46058618], [1517257440000, 5.057e-05, 5.08e-05, 5.057e-05, 5.077e-05, 1695.45667781], [1517257500000, 5.077e-05, 5.08e-05, 5.057e-05, 5.07e-05, 11269.11514959], [1517257560000, 5.079e-05, 5.08e-05, 5.057e-05, 5.08e-05, 12423.74033355], [1517257620000, 5.064e-05, 5.08e-05, 5.064e-05, 5.066e-05, 8753.12930435], [1517257680000, 5.066e-05, 5.08e-05, 5.06e-05, 5.063e-05, 13528.48654001], [1517257740000, 5.071e-05, 5.08e-05, 5.071e-05, 5.071e-05, 12123.57997374], [1517257800000, 5.071e-05, 5.08e-05, 5.071e-05, 5.071e-05, 21401.50004859], [1517257860000, 5.073e-05, 5.08e-05, 5.073e-05, 5.08e-05, 4380.10064315], [1517257920000, 5.075e-05, 5.08e-05, 5.056e-05, 5.073e-05, 38896.54234494], [1517257980000, 5.08e-05, 5.089e-05, 5.066e-05, 5.073e-05, 42517.56730876], [1517258040000, 5.087e-05, 5.087e-05, 5.067e-05, 5.078e-05, 23503.28281597], [1517258100000, 5.085e-05, 5.085e-05, 5.079e-05, 5.079e-05, 607.06773792], [1517258160000, 5.079e-05, 5.084e-05, 5.079e-05, 5.08e-05, 2327.95339818], [1517258220000, 5.084e-05, 5.084e-05, 5.08e-05, 5.08e-05, 39353.72704232], [1517258280000, 5.08e-05, 5.084e-05, 5.079e-05, 5.08e-05, 53467.45450477], [1517258340000, 5.08e-05, 5.08e-05, 5.079e-05, 5.079e-05, 54700.4689941], [1517258400000, 5.08e-05, 5.08e-05, 5.058e-05, 5.058e-05, 11994.60834877], [1517258460000, 5.058e-05, 5.079e-05, 5.058e-05, 5.078e-05, 4814.43825846], [1517258520000, 5.077e-05, 5.077e-05, 5.065e-05, 5.069e-05, 23581.9642842], [1517258580000, 5.066e-05, 5.069e-05, 5.065e-05, 5.068e-05, 11657.12827554], [1517258640000, 5.068e-05, 5.069e-05, 5.065e-05, 5.069e-05, 5111.69427201], [1517258700000, 5.069e-05, 5.069e-05, 5.059e-05, 5.059e-05, 14553.57298073], [1517258760000, 5.065e-05, 5.069e-05, 5.056e-05, 5.069e-05, 31723.51408434], [1517258820000, 5.069e-05, 5.071e-05, 5.068e-05, 5.071e-05, 11816.63363866], [1517258880000, 5.068e-05, 5.078e-05, 5.068e-05, 5.078e-05, 6837.21816403], [1517258940000, 5.078e-05, 5.078e-05, 5.07e-05, 5.07e-05, 44422.31955414], [1517259000000, 5.07e-05, 5.078e-05, 5.07e-05, 5.077e-05, 1657.0288858], [1517259060000, 5.077e-05, 5.077e-05, 5.068e-05, 5.069e-05, 13840.08628899], [1517259120000, 5.07e-05, 5.07e-05, 5.069e-05, 5.07e-05, 1093.16060856], [1517259180000, 5.07e-05, 5.075e-05, 5.07e-05, 5.075e-05, 1291.73998469], [1517259240000, 5.07e-05, 5.07e-05, 5.06e-05, 5.06e-05, 12162.19800274], [1517259300000, 5.068e-05, 5.07e-05, 5.061e-05, 5.07e-05, 9225.50376891], [1517259360000, 5.07e-05, 5.07e-05, 5.062e-05, 5.063e-05, 919.38949325], [1517259420000, 5.063e-05, 5.07e-05, 5.063e-05, 5.07e-05, 2581.35485872], [1517259480000, 5.063e-05, 5.065e-05, 5.063e-05, 5.064e-05, 2072.10344255], [1517259540000, 5.064e-05, 5.07e-05, 5.061e-05, 5.064e-05, 16057.76386643], [1517259600000, 5.065e-05, 5.065e-05, 5.064e-05, 5.064e-05, 2027.66387188], [1517259660000, 5.064e-05, 5.07e-05, 5.058e-05, 5.058e-05, 35980.75396684], [1517259720000, 5.07e-05, 5.07e-05, 5.056e-05, 5.069e-05, 21366.46395788], [1517259780000, 5.059e-05, 5.069e-05, 5.059e-05, 5.069e-05, 2208.64760386], [1517259840000, 5.069e-05, 5.069e-05, 5.059e-05, 5.069e-05, 8848.85234244], [1517259900000, 5.069e-05, 5.069e-05, 5.055e-05, 5.055e-05, 105080.63377991], [1517259960000, 5.07e-05, 5.07e-05, 5.055e-05, 5.055e-05, 200337.44619526], [1517260020000, 5.069e-05, 5.069e-05, 5.057e-05, 5.069e-05, 834.00888153], [1517260080000, 5.057e-05, 5.069e-05, 5.057e-05, 5.069e-05, 19601.30634052], [1517260140000, 5.069e-05, 5.075e-05, 5.057e-05, 5.069e-05, 13161.29962204], [1517260200000, 5.069e-05, 5.075e-05, 5.069e-05, 5.07e-05, 2434.80987063], [1517260260000, 5.075e-05, 5.075e-05, 5.057e-05, 5.057e-05, 2505.2455591], [1517260320000, 5.07e-05, 5.071e-05, 5.061e-05, 5.071e-05, 7533.91799826], [1517260380000, 5.067e-05, 5.072e-05, 5.067e-05, 5.068e-05, 3940.90646781], [1517260440000, 5.071e-05, 5.071e-05, 5.057e-05, 5.057e-05, 26298.24186939], [1517260500000, 5.057e-05, 5.068e-05, 5.057e-05, 5.06e-05, 13918.43369689], [1517260560000, 5.06e-05, 5.068e-05, 5.06e-05, 5.06e-05, 1073.13201603], [1517260620000, 5.068e-05, 5.07e-05, 5.058e-05, 5.07e-05, 522.53233129], [1517260680000, 5.07e-05, 5.07e-05, 5.06e-05, 5.07e-05, 5811.98408355], [1517260740000, 5.07e-05, 5.07e-05, 5.06e-05, 5.067e-05, 4608.91548538], [1517260800000, 5.062e-05, 5.063e-05, 5.058e-05, 5.062e-05, 18660.76109896], [1517260860000, 5.062e-05, 5.07e-05, 5.062e-05, 5.062e-05, 2017.86978209], [1517260920000, 5.069e-05, 5.069e-05, 5.058e-05, 5.058e-05, 714.69586001], [1517260980000, 5.062e-05, 5.069e-05, 5.058e-05, 5.069e-05, 10589.62138402], [1517261040000, 5.069e-05, 5.07e-05, 5.058e-05, 5.06e-05, 6202.01355289], [1517261100000, 5.069e-05, 5.077e-05, 5.057e-05, 5.058e-05, 17451.90554216], [1517261160000, 5.058e-05, 5.074e-05, 5.058e-05, 5.059e-05, 2890.44994432], [1517261220000, 5.06e-05, 5.074e-05, 5.06e-05, 5.074e-05, 12605.9575574], [1517261280000, 5.074e-05, 5.074e-05, 5.062e-05, 5.063e-05, 2534.169343], [1517261340000, 5.064e-05, 5.072e-05, 5.062e-05, 5.062e-05, 44548.50052628], [1517261400000, 5.072e-05, 5.075e-05, 5.062e-05, 5.074e-05, 84838.29071222], [1517261460000, 5.074e-05, 5.075e-05, 5.062e-05, 5.063e-05, 11547.11007082], [1517261520000, 5.063e-05, 5.075e-05, 5.063e-05, 5.064e-05, 3466.58167357], [1517261580000, 5.075e-05, 5.075e-05, 5.064e-05, 5.074e-05, 11281.09327284], [1517261640000, 5.075e-05, 5.075e-05, 5.067e-05, 5.067e-05, 2153.63092907], [1517261700000, 5.073e-05, 5.075e-05, 5.063e-05, 5.063e-05, 39185.52803048], [1517261760000, 5.066e-05, 5.066e-05, 5.063e-05, 5.066e-05, 19818.17684337], [1517261820000, 5.065e-05, 5.075e-05, 5.062e-05, 5.062e-05, 25736.38436097], [1517261880000, 5.062e-05, 5.074e-05, 5.062e-05, 5.068e-05, 4960.75278819], [1517261940000, 5.07e-05, 5.074e-05, 5.07e-05, 5.074e-05, 2329.26648914], [1517262000000, 5.073e-05, 5.074e-05, 5.068e-05, 5.068e-05, 7002.74089694], [1517262060000, 5.068e-05, 5.075e-05, 5.068e-05, 5.075e-05, 21390.90339143], [1517262120000, 5.075e-05, 5.078e-05, 5.074e-05, 5.074e-05, 9655.36270815], [1517262180000, 5.074e-05, 5.088e-05, 5.065e-05, 5.088e-05, 14949.08965868], [1517262240000, 5.088e-05, 5.09e-05, 5.071e-05, 5.071e-05, 2277.1229885], [1517262300000, 5.071e-05, 5.09e-05, 5.071e-05, 5.088e-05, 4393.24669228], [1517262360000, 5.088e-05, 5.088e-05, 5.072e-05, 5.072e-05, 8713.06412954], [1517262420000, 5.072e-05, 5.072e-05, 5.071e-05, 5.072e-05, 4552.03141769], [1517262480000, 5.072e-05, 5.089e-05, 5.072e-05, 5.073e-05, 3571.33208062], [1517262540000, 5.074e-05, 5.09e-05, 5.074e-05, 5.088e-05, 1165.60734776], [1517262600000, 5.088e-05, 5.1e-05, 5.08e-05, 5.08e-05, 12533.99963507], [1517262660000, 5.08e-05, 5.1e-05, 5.073e-05, 5.1e-05, 11205.65341174], [1517262720000, 5.087e-05, 5.1e-05, 5.077e-05, 5.092e-05, 22946.40125771], [1517262780000, 5.076e-05, 5.092e-05, 5.076e-05, 5.092e-05, 1066.37713444], [1517262840000, 5.077e-05, 5.092e-05, 5.077e-05, 5.077e-05, 3127.25753552], [1517262900000, 5.077e-05, 5.092e-05, 5.076e-05, 5.085e-05, 8659.2985803], [1517262960000, 5.085e-05, 5.092e-05, 5.085e-05, 5.09e-05, 1347.33308878], [1517263020000, 5.09e-05, 5.092e-05, 5.078e-05, 5.092e-05, 1629.84178046], [1517263140000, 5.079e-05, 5.091e-05, 5.079e-05, 5.091e-05, 1234.02758098], [1517263200000, 5.091e-05, 5.091e-05, 5.079e-05, 5.079e-05, 7880.61045884], [1517263260000, 5.079e-05, 5.1e-05, 5.078e-05, 5.1e-05, 4178.94916457], [1517263320000, 5.09e-05, 5.091e-05, 5.078e-05, 5.078e-05, 1583.45741384], [1517263380000, 5.089e-05, 5.129e-05, 5.089e-05, 5.124e-05, 117566.83861879], [1517263440000, 5.127e-05, 5.15e-05, 5.124e-05, 5.15e-05, 91474.97065781], [1517263500000, 5.125e-05, 5.15e-05, 5.125e-05, 5.149e-05, 37488.01634958], [1517263560000, 5.128e-05, 5.148e-05, 5.128e-05, 5.146e-05, 21362.43821594], [1517263620000, 5.144e-05, 5.146e-05, 5.132e-05, 5.144e-05, 18973.49973869], [1517263680000, 5.144e-05, 5.149e-05, 5.144e-05, 5.149e-05, 70063.98538001], [1517263740000, 5.144e-05, 5.149e-05, 5.144e-05, 5.146e-05, 10838.98517243], [1517263800000, 5.146e-05, 5.15e-05, 5.146e-05, 5.148e-05, 52989.74554513], [1517263860000, 5.148e-05, 5.189e-05, 5.148e-05, 5.149e-05, 174519.67873874], [1517263920000, 5.155e-05, 5.186e-05, 5.155e-05, 5.172e-05, 12327.92940167], [1517263980000, 5.172e-05, 5.172e-05, 5.155e-05, 5.155e-05, 44648.32188242], [1517264040000, 5.155e-05, 5.17e-05, 5.149e-05, 5.149e-05, 19785.76758761], [1517264100000, 5.17e-05, 5.17e-05, 5.149e-05, 5.169e-05, 12116.13370107], [1517264160000, 5.15e-05, 5.169e-05, 5.149e-05, 5.149e-05, 26360.24819864], [1517264220000, 5.17e-05, 5.17e-05, 5.149e-05, 5.169e-05, 23259.32657761], [1517264280000, 5.168e-05, 5.17e-05, 5.15e-05, 5.17e-05, 10138.18480739], [1517264340000, 5.17e-05, 5.17e-05, 5.149e-05, 5.17e-05, 35976.40290961], [1517264400000, 5.17e-05, 5.189e-05, 5.17e-05, 5.188e-05, 16529.54496916], [1517264460000, 5.188e-05, 5.189e-05, 5.171e-05, 5.189e-05, 3922.33030731], [1517264520000, 5.19e-05, 5.194e-05, 5.19e-05, 5.194e-05, 13023.04001507], [1517264580000, 5.194e-05, 5.2e-05, 5.192e-05, 5.199e-05, 142424.87958864], [1517264640000, 5.194e-05, 5.2e-05, 5.19e-05, 5.19e-05, 37402.25329351], [1517264700000, 5.19e-05, 5.197e-05, 5.19e-05, 5.19e-05, 17751.38514123], [1517264760000, 5.194e-05, 5.194e-05, 5.18e-05, 5.18e-05, 27670.76661327], [1517264820000, 5.18e-05, 5.188e-05, 5.17e-05, 5.17e-05, 13031.15822181], [1517264880000, 5.185e-05, 5.193e-05, 5.17e-05, 5.17e-05, 27074.31963978], [1517264940000, 5.172e-05, 5.193e-05, 5.143e-05, 5.17e-05, 13365.22781227], [1517265000000, 5.17e-05, 5.192e-05, 5.15e-05, 5.15e-05, 8512.52246017], [1517265060000, 5.151e-05, 5.189e-05, 5.15e-05, 5.151e-05, 5396.58892015], [1517265120000, 5.15e-05, 5.151e-05, 5.139e-05, 5.151e-05, 5371.03309745], [1517265180000, 5.139e-05, 5.151e-05, 5.139e-05, 5.151e-05, 15234.37438441], [1517265240000, 5.151e-05, 5.152e-05, 5.15e-05, 5.152e-05, 17875.65889618], [1517265300000, 5.178e-05, 5.18e-05, 5.152e-05, 5.179e-05, 9066.44424632], [1517265360000, 5.177e-05, 5.178e-05, 5.157e-05, 5.177e-05, 4203.20485312], [1517265420000, 5.175e-05, 5.177e-05, 5.175e-05, 5.175e-05, 13151.27830356], [1517265480000, 5.175e-05, 5.175e-05, 5.151e-05, 5.157e-05, 48939.04299907], [1517265540000, 5.157e-05, 5.157e-05, 5.155e-05, 5.157e-05, 11322.10241705], [1517265600000, 5.157e-05, 5.157e-05, 5.151e-05, 5.151e-05, 18287.15291964], [1517265660000, 5.156e-05, 5.157e-05, 5.156e-05, 5.156e-05, 17244.98740694], [1517265720000, 5.155e-05, 5.157e-05, 5.155e-05, 5.155e-05, 23495.29038343], [1517265780000, 5.155e-05, 5.157e-05, 5.155e-05, 5.157e-05, 722.75950201], [1517265840000, 5.157e-05, 5.174e-05, 5.153e-05, 5.174e-05, 6695.05396104], [1517265900000, 5.169e-05, 5.169e-05, 5.152e-05, 5.152e-05, 5240.2363068], [1517265960000, 5.152e-05, 5.168e-05, 5.151e-05, 5.152e-05, 1778.52173504], [1517266020000, 5.152e-05, 5.165e-05, 5.151e-05, 5.165e-05, 21788.25213544], [1517266080000, 5.165e-05, 5.165e-05, 5.15e-05, 5.15e-05, 6570.76744214], [1517266140000, 5.15e-05, 5.164e-05, 5.139e-05, 5.15e-05, 16827.88074808], [1517266200000, 5.161e-05, 5.161e-05, 5.161e-05, 5.161e-05, 245.88865908], [1517266260000, 5.15e-05, 5.15e-05, 5.149e-05, 5.149e-05, 3647.17128178], [1517266320000, 5.141e-05, 5.174e-05, 5.141e-05, 5.172e-05, 19614.98434186], [1517266380000, 5.172e-05, 5.176e-05, 5.138e-05, 5.138e-05, 24343.00836767], [1517266440000, 5.138e-05, 5.138e-05, 5.135e-05, 5.135e-05, 13839.3105414], [1517266500000, 5.138e-05, 5.138e-05, 5.135e-05, 5.136e-05, 3980.33106706], [1517266560000, 5.136e-05, 5.136e-05, 5.135e-05, 5.135e-05, 42271.62561691], [1517266620000, 5.133e-05, 5.135e-05, 5.133e-05, 5.135e-05, 13347.04476227], [1517266680000, 5.137e-05, 5.169e-05, 5.132e-05, 5.132e-05, 8228.35380438], [1517266740000, 5.138e-05, 5.139e-05, 5.134e-05, 5.134e-05, 75755.68485822], [1517266800000, 5.136e-05, 5.136e-05, 5.134e-05, 5.134e-05, 2988.12694071], [1517266860000, 5.135e-05, 5.139e-05, 5.135e-05, 5.139e-05, 5604.3731809], [1517266920000, 5.139e-05, 5.139e-05, 5.135e-05, 5.139e-05, 2587.57035004], [1517266980000, 5.136e-05, 5.139e-05, 5.135e-05, 5.139e-05, 22484.18423436], [1517267040000, 5.139e-05, 5.139e-05, 5.136e-05, 5.136e-05, 1260.42106019], [1517267100000, 5.136e-05, 5.139e-05, 5.136e-05, 5.139e-05, 9345.27981081], [1517267160000, 5.139e-05, 5.139e-05, 5.135e-05, 5.139e-05, 13757.87533095], [1517267220000, 5.139e-05, 5.139e-05, 5.135e-05, 5.138e-05, 10333.17682011], [1517267280000, 5.136e-05, 5.138e-05, 5.135e-05, 5.135e-05, 53248.53737983], [1517267340000, 5.138e-05, 5.139e-05, 5.135e-05, 5.139e-05, 7366.03408977], [1517267400000, 5.135e-05, 5.139e-05, 5.135e-05, 5.139e-05, 2318.35537737], [1517267460000, 5.139e-05, 5.139e-05, 5.135e-05, 5.135e-05, 10392.95745476], [1517267520000, 5.139e-05, 5.139e-05, 5.135e-05, 5.139e-05, 12034.4641664], [1517267580000, 5.139e-05, 5.139e-05, 5.133e-05, 5.139e-05, 745.57810338], [1517267640000, 5.136e-05, 5.138e-05, 5.13e-05, 5.138e-05, 1143.23953434], [1517267700000, 5.138e-05, 5.139e-05, 5.138e-05, 5.139e-05, 2944.29565976], [1517267760000, 5.139e-05, 5.139e-05, 5.139e-05, 5.139e-05, 125.22481376], [1517267820000, 5.139e-05, 5.139e-05, 5.134e-05, 5.139e-05, 3015.32346665], [1517267880000, 5.134e-05, 5.139e-05, 5.126e-05, 5.13e-05, 3331.78522288], [1517267940000, 5.138e-05, 5.139e-05, 5.13e-05, 5.139e-05, 44607.48521425], [1517268000000, 5.139e-05, 5.139e-05, 5.139e-05, 5.139e-05, 1426.87171491], [1517268060000, 5.139e-05, 5.139e-05, 5.127e-05, 5.139e-05, 6397.60808328], [1517268120000, 5.138e-05, 5.138e-05, 5.131e-05, 5.132e-05, 11452.24041963], [1517268180000, 5.132e-05, 5.139e-05, 5.132e-05, 5.139e-05, 15079.23581619], [1517268240000, 5.138e-05, 5.139e-05, 5.132e-05, 5.138e-05, 3462.70641975], [1517268300000, 5.138e-05, 5.139e-05, 5.127e-05, 5.127e-05, 2645.48762989], [1517268360000, 5.127e-05, 5.127e-05, 5.127e-05, 5.127e-05, 2336.0], [1517268420000, 5.127e-05, 5.138e-05, 5.123e-05, 5.123e-05, 1434.72258812], [1517268480000, 5.123e-05, 5.135e-05, 5.123e-05, 5.123e-05, 16173.78870653], [1517268540000, 5.123e-05, 5.138e-05, 5.123e-05, 5.138e-05, 6167.97561344], [1517268600000, 5.123e-05, 5.138e-05, 5.123e-05, 5.123e-05, 7120.04656768], [1517268660000, 5.135e-05, 5.135e-05, 5.135e-05, 5.135e-05, 417.9406037], [1517268720000, 5.137e-05, 5.137e-05, 5.123e-05, 5.137e-05, 6180.12599697], [1517268780000, 5.137e-05, 5.137e-05, 5.137e-05, 5.137e-05, 298.29140391], [1517268840000, 5.137e-05, 5.137e-05, 5.123e-05, 5.129e-05, 288.81724494], [1517268900000, 5.132e-05, 5.138e-05, 5.132e-05, 5.138e-05, 11899.94150837], [1517268960000, 5.137e-05, 5.138e-05, 5.137e-05, 5.138e-05, 14185.12091189], [1517269020000, 5.137e-05, 5.138e-05, 5.132e-05, 5.138e-05, 8563.34922595], [1517269080000, 5.138e-05, 5.138e-05, 5.129e-05, 5.138e-05, 5948.69767462], [1517269140000, 5.136e-05, 5.138e-05, 5.136e-05, 5.138e-05, 4063.7641737], [1517269200000, 5.138e-05, 5.139e-05, 5.138e-05, 5.138e-05, 23281.62072514], [1517269260000, 5.138e-05, 5.138e-05, 5.138e-05, 5.138e-05, 6678.88491826], [1517269320000, 5.137e-05, 5.138e-05, 5.132e-05, 5.132e-05, 5070.35290737], [1517269380000, 5.132e-05, 5.132e-05, 5.126e-05, 5.126e-05, 72820.57370083], [1517269440000, 5.126e-05, 5.126e-05, 5.123e-05, 5.126e-05, 14811.11158655], [1517269500000, 5.126e-05, 5.126e-05, 5.123e-05, 5.123e-05, 9335.68031341], [1517269560000, 5.126e-05, 5.126e-05, 5.123e-05, 5.126e-05, 17542.77714089], [1517269620000, 5.126e-05, 5.13e-05, 5.125e-05, 5.13e-05, 3494.65777379], [1517269680000, 5.13e-05, 5.131e-05, 5.13e-05, 5.131e-05, 13315.72540575], [1517269740000, 5.131e-05, 5.131e-05, 5.13e-05, 5.13e-05, 2800.61521986], [1517269800000, 5.131e-05, 5.131e-05, 5.13e-05, 5.13e-05, 4937.37554627], [1517269860000, 5.131e-05, 5.131e-05, 5.131e-05, 5.131e-05, 1364.66148859], [1517269920000, 5.135e-05, 5.135e-05, 5.131e-05, 5.135e-05, 4724.31733428], [1517269980000, 5.135e-05, 5.139e-05, 5.131e-05, 5.139e-05, 58189.01781085], [1517270040000, 5.139e-05, 5.161e-05, 5.139e-05, 5.161e-05, 25178.31631418], [1517270100000, 5.155e-05, 5.155e-05, 5.145e-05, 5.145e-05, 7443.91484999], [1517270160000, 5.151e-05, 5.151e-05, 5.151e-05, 5.151e-05, 8157.13123757], [1517270220000, 5.148e-05, 5.148e-05, 5.139e-05, 5.145e-05, 11785.66470462], [1517270280000, 5.148e-05, 5.158e-05, 5.124e-05, 5.145e-05, 36271.15587992], [1517270340000, 5.124e-05, 5.14e-05, 5.123e-05, 5.123e-05, 3795.48303228], [1517270400000, 5.125e-05, 5.14e-05, 5.124e-05, 5.14e-05, 1775.82688439], [1517270460000, 5.125e-05, 5.125e-05, 5.114e-05, 5.114e-05, 12530.0695212], [1517270520000, 5.14e-05, 5.158e-05, 5.107e-05, 5.158e-05, 7587.10741753], [1517270580000, 5.145e-05, 5.158e-05, 5.145e-05, 5.157e-05, 1747.7967742], [1517270640000, 5.147e-05, 5.157e-05, 5.146e-05, 5.146e-05, 23593.50312353], [1517270700000, 5.156e-05, 5.156e-05, 5.134e-05, 5.146e-05, 6628.92385047], [1517270760000, 5.147e-05, 5.147e-05, 5.12e-05, 5.134e-05, 8007.09033944], [1517270820000, 5.143e-05, 5.146e-05, 5.134e-05, 5.134e-05, 4532.41658109], [1517270880000, 5.134e-05, 5.14e-05, 5.134e-05, 5.135e-05, 3081.66059865], [1517270940000, 5.144e-05, 5.145e-05, 5.135e-05, 5.14e-05, 9178.25605153], [1517271000000, 5.144e-05, 5.144e-05, 5.135e-05, 5.135e-05, 12145.34022726], [1517271060000, 5.138e-05, 5.138e-05, 5.1e-05, 5.135e-05, 67814.41511093], [1517271120000, 5.1e-05, 5.143e-05, 5.1e-05, 5.142e-05, 18636.36080092], [1517271180000, 5.142e-05, 5.144e-05, 5.142e-05, 5.144e-05, 2313.75910974], [1517271240000, 5.142e-05, 5.143e-05, 5.142e-05, 5.143e-05, 1684.97194151], [1517271300000, 5.143e-05, 5.145e-05, 5.139e-05, 5.139e-05, 7948.53522418], [1517271360000, 5.139e-05, 5.139e-05, 5.091e-05, 5.091e-05, 51052.2436466], [1517271420000, 5.105e-05, 5.137e-05, 5.101e-05, 5.105e-05, 9732.4493686], [1517271480000, 5.1e-05, 5.105e-05, 5.1e-05, 5.104e-05, 12019.29704142], [1517271540000, 5.104e-05, 5.106e-05, 5.091e-05, 5.091e-05, 23961.40027598], [1517271600000, 5.105e-05, 5.105e-05, 5.085e-05, 5.085e-05, 53297.81931239], [1517271660000, 5.085e-05, 5.138e-05, 5.077e-05, 5.097e-05, 37410.50242306], [1517271720000, 5.097e-05, 5.125e-05, 5.083e-05, 5.121e-05, 11391.1654581], [1517271780000, 5.121e-05, 5.121e-05, 5.088e-05, 5.097e-05, 1595.41166463], [1517271840000, 5.097e-05, 5.097e-05, 5.088e-05, 5.097e-05, 6638.41964606], [1517271900000, 5.097e-05, 5.1e-05, 5.097e-05, 5.097e-05, 2481.11159963], [1517271960000, 5.095e-05, 5.097e-05, 5.085e-05, 5.085e-05, 4192.92689593], [1517272020000, 5.087e-05, 5.096e-05, 5.087e-05, 5.096e-05, 744.93705912], [1517272080000, 5.096e-05, 5.096e-05, 5.087e-05, 5.096e-05, 1899.92687141], [1517272140000, 5.087e-05, 5.096e-05, 5.084e-05, 5.096e-05, 4475.75327922], [1517272200000, 5.096e-05, 5.096e-05, 5.054e-05, 5.078e-05, 118991.20565407], [1517272260000, 5.084e-05, 5.084e-05, 5.084e-05, 5.084e-05, 133.30434438], [1517272320000, 5.08e-05, 5.083e-05, 5.062e-05, 5.08e-05, 10021.88790352], [1517272380000, 5.08e-05, 5.08e-05, 5.071e-05, 5.071e-05, 4299.09513266], [1517272440000, 5.08e-05, 5.08e-05, 5.071e-05, 5.08e-05, 2974.63652136], [1517272500000, 5.071e-05, 5.08e-05, 5.062e-05, 5.08e-05, 4007.41501496], [1517272560000, 5.08e-05, 5.08e-05, 5.061e-05, 5.08e-05, 3668.98164983], [1517272620000, 5.062e-05, 5.08e-05, 5.062e-05, 5.075e-05, 3352.74483473], [1517272680000, 5.079e-05, 5.079e-05, 5.061e-05, 5.061e-05, 1753.19137251], [1517272740000, 5.079e-05, 5.079e-05, 5.061e-05, 5.078e-05, 4663.22167401], [1517272800000, 5.078e-05, 5.078e-05, 5.064e-05, 5.064e-05, 6036.62852183], [1517272860000, 5.074e-05, 5.074e-05, 5.061e-05, 5.066e-05, 53469.01055451], [1517272920000, 5.066e-05, 5.071e-05, 5.06e-05, 5.062e-05, 50033.57528449], [1517272980000, 5.062e-05, 5.062e-05, 5.061e-05, 5.061e-05, 32951.20511726], [1517273040000, 5.061e-05, 5.062e-05, 5.057e-05, 5.062e-05, 7962.95093138], [1517273100000, 5.062e-05, 5.062e-05, 5.057e-05, 5.057e-05, 9094.6479728], [1517273160000, 5.057e-05, 5.061e-05, 5.055e-05, 5.056e-05, 8360.92026904], [1517273220000, 5.055e-05, 5.055e-05, 5.051e-05, 5.053e-05, 5529.92635414], [1517273280000, 5.051e-05, 5.054e-05, 5.051e-05, 5.054e-05, 6709.79204542], [1517273340000, 5.054e-05, 5.055e-05, 5.05e-05, 5.052e-05, 25870.70259468], [1517273400000, 5.052e-05, 5.052e-05, 5.049e-05, 5.049e-05, 13172.78973336], [1517273460000, 5.049e-05, 5.049e-05, 5.046e-05, 5.046e-05, 20944.11040626], [1517273520000, 5.046e-05, 5.049e-05, 5.033e-05, 5.048e-05, 41734.81717664], [1517273580000, 5.037e-05, 5.052e-05, 5.037e-05, 5.051e-05, 45133.19728212], [1517273640000, 5.049e-05, 5.052e-05, 5.049e-05, 5.052e-05, 46472.86871513], [1517273700000, 5.052e-05, 5.053e-05, 5.037e-05, 5.049e-05, 59659.25639423], [1517273760000, 5.053e-05, 5.053e-05, 5.037e-05, 5.053e-05, 9487.93925205], [1517273820000, 5.053e-05, 5.053e-05, 5.038e-05, 5.038e-05, 3062.00479895], [1517273880000, 5.052e-05, 5.053e-05, 5.04e-05, 5.053e-05, 7937.84658718], [1517273940000, 5.055e-05, 5.056e-05, 5.055e-05, 5.055e-05, 6010.63558833], [1517274000000, 5.055e-05, 5.056e-05, 5.041e-05, 5.056e-05, 7122.59785009], [1517274060000, 5.056e-05, 5.056e-05, 5.055e-05, 5.055e-05, 5239.21915549], [1517274120000, 5.056e-05, 5.056e-05, 5.055e-05, 5.056e-05, 3738.65450394], [1517274180000, 5.055e-05, 5.056e-05, 5.042e-05, 5.056e-05, 37229.51782363], [1517274240000, 5.056e-05, 5.057e-05, 5.056e-05, 5.057e-05, 11133.42692215], [1517274300000, 5.057e-05, 5.057e-05, 5.056e-05, 5.056e-05, 1985.08753435], [1517274360000, 5.057e-05, 5.068e-05, 5.055e-05, 5.056e-05, 7365.33826423], [1517274420000, 5.051e-05, 5.051e-05, 5.044e-05, 5.044e-05, 3070.8570491], [1517274480000, 5.043e-05, 5.044e-05, 5.043e-05, 5.043e-05, 3195.60486709], [1517274540000, 5.043e-05, 5.043e-05, 5.041e-05, 5.043e-05, 3651.14151049], [1517274600000, 5.043e-05, 5.043e-05, 5.028e-05, 5.028e-05, 136551.1022443], [1517274660000, 5.043e-05, 5.05e-05, 5.03e-05, 5.049e-05, 40698.86847684], [1517274720000, 5.03e-05, 5.055e-05, 5.03e-05, 5.031e-05, 49419.75680165], [1517274780000, 5.055e-05, 5.055e-05, 5.035e-05, 5.035e-05, 7549.17248945], [1517274840000, 5.053e-05, 5.054e-05, 5.051e-05, 5.054e-05, 5232.86818554], [1517274900000, 5.056e-05, 5.056e-05, 5.05e-05, 5.052e-05, 4213.26835501], [1517274960000, 5.052e-05, 5.052e-05, 5.03e-05, 5.048e-05, 6525.39163568], [1517275020000, 5.03e-05, 5.047e-05, 5.027e-05, 5.041e-05, 6394.28851015], [1517275080000, 5.03e-05, 5.04e-05, 5.027e-05, 5.036e-05, 17935.41868708], [1517275140000, 5.036e-05, 5.046e-05, 5.03e-05, 5.03e-05, 10065.88084794], [1517275200000, 5.03e-05, 5.035e-05, 5.027e-05, 5.033e-05, 16701.27296084], [1517275260000, 5.025e-05, 5.033e-05, 5.008e-05, 5.013e-05, 132414.12771096], [1517275320000, 5.013e-05, 5.033e-05, 5.004e-05, 5.028e-05, 26148.14520259], [1517275380000, 5.026e-05, 5.026e-05, 5.008e-05, 5.01e-05, 27321.33921832], [1517275440000, 5.023e-05, 5.025e-05, 5.008e-05, 5.009e-05, 18576.40666045], [1517275500000, 5.022e-05, 5.024e-05, 5.006e-05, 5.021e-05, 82358.55520763], [1517275560000, 5.021e-05, 5.021e-05, 5.008e-05, 5.02e-05, 7544.095467], [1517275620000, 5.022e-05, 5.022e-05, 5.02e-05, 5.022e-05, 13956.69636802], [1517275680000, 5.02e-05, 5.03e-05, 5.011e-05, 5.011e-05, 48330.14959006], [1517275740000, 5.011e-05, 5.03e-05, 5.007e-05, 5.016e-05, 71927.7637375], [1517275800000, 5.011e-05, 5.029e-05, 5.006e-05, 5.007e-05, 63466.39552216], [1517275860000, 5.008e-05, 5.027e-05, 5.006e-05, 5.006e-05, 72700.3583473], [1517275920000, 5.006e-05, 5.02e-05, 5.006e-05, 5.019e-05, 48732.91143635], [1517275980000, 5.02e-05, 5.025e-05, 5.007e-05, 5.019e-05, 58438.03754261], [1517276040000, 5.019e-05, 5.028e-05, 5.006e-05, 5.028e-05, 43613.84936122], [1517276100000, 5.028e-05, 5.03e-05, 5.007e-05, 5.028e-05, 7166.59576138], [1517276160000, 5.009e-05, 5.028e-05, 5.009e-05, 5.02e-05, 6491.90364013], [1517276220000, 5.02e-05, 5.02e-05, 5.011e-05, 5.011e-05, 17384.3353452], [1517276280000, 5.011e-05, 5.019e-05, 5.01e-05, 5.019e-05, 13041.67693336], [1517276340000, 5.019e-05, 5.02e-05, 5.011e-05, 5.019e-05, 3988.55218829], [1517276400000, 5.013e-05, 5.019e-05, 5.011e-05, 5.011e-05, 38721.39098603], [1517276460000, 5.011e-05, 5.011e-05, 5.006e-05, 5.006e-05, 73549.68598691], [1517276520000, 5.011e-05, 5.011e-05, 5.006e-05, 5.006e-05, 54586.07261164], [1517276580000, 5.006e-05, 5.011e-05, 5.006e-05, 5.01e-05, 346.77719778], [1517276640000, 5.006e-05, 5.006e-05, 5.004e-05, 5.004e-05, 31473.68051896], [1517276700000, 5.003e-05, 5.006e-05, 5e-05, 5.002e-05, 236839.29044241], [1517276760000, 5.002e-05, 5.006e-05, 5.002e-05, 5.006e-05, 2738.10642389], [1517276820000, 5.006e-05, 5.006e-05, 5e-05, 5.006e-05, 29527.29200301], [1517276880000, 5.005e-05, 5.006e-05, 5e-05, 5e-05, 18327.64469081], [1517276940000, 5.001e-05, 5.001e-05, 5e-05, 5e-05, 5914.80656179], [1517277000000, 5.001e-05, 5.001e-05, 5e-05, 5e-05, 41487.27502059], [1517277060000, 5e-05, 5.001e-05, 5e-05, 5.001e-05, 36651.01123613], [1517277120000, 5.001e-05, 5.001e-05, 5e-05, 5.001e-05, 28839.27309568], [1517277180000, 5.001e-05, 5.001e-05, 5e-05, 5.001e-05, 57608.82848477], [1517277240000, 5.001e-05, 5.001e-05, 5e-05, 5.001e-05, 8582.22679041], [1517277300000, 5e-05, 5.007e-05, 5e-05, 5.007e-05, 31930.43861314], [1517277360000, 5.007e-05, 5.009e-05, 5e-05, 5.008e-05, 29603.34245347], [1517277420000, 5.008e-05, 5.008e-05, 4.992e-05, 5.007e-05, 31610.39818859], [1517277480000, 5.007e-05, 5.007e-05, 4.999e-05, 5.002e-05, 15158.69589991], [1517277540000, 5.002e-05, 5.007e-05, 5e-05, 5.006e-05, 17062.61400864], [1517277600000, 5.006e-05, 5.007e-05, 4.999e-05, 4.999e-05, 13595.88585237], [1517277660000, 4.999e-05, 5.006e-05, 4.992e-05, 4.992e-05, 5373.96495706], [1517277720000, 4.993e-05, 4.993e-05, 4.99e-05, 4.99e-05, 6349.11115388], [1517277780000, 4.99e-05, 4.99e-05, 4.99e-05, 4.99e-05, 1778.76244064], [1517277840000, 4.99e-05, 4.99e-05, 4.987e-05, 4.988e-05, 24325.08067233], [1517277900000, 4.988e-05, 4.988e-05, 4.986e-05, 4.986e-05, 39389.05925749], [1517277960000, 4.987e-05, 4.988e-05, 4.987e-05, 4.987e-05, 4754.52971532], [1517278020000, 4.987e-05, 4.987e-05, 4.986e-05, 4.987e-05, 3821.13476258], [1517278080000, 4.987e-05, 5.005e-05, 4.986e-05, 5.005e-05, 130796.1394048], [1517278140000, 5.005e-05, 5.011e-05, 5.005e-05, 5.005e-05, 3619.79268965], [1517278200000, 5.007e-05, 5.007e-05, 5.005e-05, 5.007e-05, 6334.85401548], [1517278260000, 5.007e-05, 5.007e-05, 5.006e-05, 5.007e-05, 8004.04752153], [1517278320000, 5.007e-05, 5.011e-05, 5.005e-05, 5.005e-05, 22021.61692612], [1517278380000, 5.005e-05, 5.01e-05, 5.003e-05, 5.01e-05, 8800.36067513], [1517278440000, 5.01e-05, 5.01e-05, 5.009e-05, 5.009e-05, 168.290575], [1517278500000, 5.009e-05, 5.009e-05, 5.004e-05, 5.009e-05, 13803.11314877], [1517278560000, 5.009e-05, 5.009e-05, 5.005e-05, 5.005e-05, 2425.37055509], [1517278620000, 5.005e-05, 5.005e-05, 5e-05, 5e-05, 14656.72925591], [1517278680000, 5e-05, 5.004e-05, 5e-05, 5.004e-05, 7080.48944711], [1517278740000, 5e-05, 5.004e-05, 5e-05, 5.004e-05, 22132.94717456], [1517278800000, 5.003e-05, 5.005e-05, 5.001e-05, 5.005e-05, 3220.00949307], [1517278860000, 5.005e-05, 5.005e-05, 5e-05, 5e-05, 17695.56273223], [1517278920000, 5.005e-05, 5.009e-05, 5e-05, 5.009e-05, 16894.435427], [1517278980000, 5.006e-05, 5.009e-05, 5.005e-05, 5.009e-05, 8853.52560227], [1517279040000, 5.009e-05, 5.009e-05, 5.005e-05, 5.009e-05, 4311.84191322], [1517279100000, 5.009e-05, 5.009e-05, 5.009e-05, 5.009e-05, 7420.77890709], [1517279160000, 5.009e-05, 5.009e-05, 5.008e-05, 5.009e-05, 8895.50461226], [1517279220000, 5.009e-05, 5.009e-05, 5.008e-05, 5.008e-05, 2070.12908358], [1517279280000, 5.008e-05, 5.008e-05, 5.007e-05, 5.008e-05, 1329.66459368], [1517279340000, 5.007e-05, 5.009e-05, 5.001e-05, 5.003e-05, 47424.0125439], [1517279400000, 5.003e-05, 5.003e-05, 4.992e-05, 5.002e-05, 27266.43282627], [1517279460000, 5.002e-05, 5.003e-05, 5.002e-05, 5.003e-05, 32376.21707788], [1517279520000, 5.002e-05, 5.003e-05, 5.002e-05, 5.003e-05, 12864.95447629], [1517279580000, 5.003e-05, 5.003e-05, 5.002e-05, 5.003e-05, 4547.5954912], [1517279640000, 5.003e-05, 5.003e-05, 5.002e-05, 5.003e-05, 3862.59873389], [1517279700000, 5.003e-05, 5.003e-05, 5e-05, 5.002e-05, 20787.34607932], [1517279760000, 5.002e-05, 5.002e-05, 5.002e-05, 5.002e-05, 3990.04293846], [1517279820000, 5.002e-05, 5.003e-05, 5.002e-05, 5.003e-05, 6143.84781064], [1517279880000, 5.003e-05, 5.003e-05, 5e-05, 5.003e-05, 26532.94441247], [1517279940000, 5e-05, 5.009e-05, 4.996e-05, 5.009e-05, 3678.62322453], [1517280000000, 5.008e-05, 5.009e-05, 5.008e-05, 5.009e-05, 3110.54555843], [1517280060000, 5.009e-05, 5.009e-05, 5.009e-05, 5.009e-05, 10086.28167194], [1517280120000, 5.009e-05, 5.009e-05, 5.003e-05, 5.009e-05, 10857.16361705], [1517280180000, 5.004e-05, 5.009e-05, 5.004e-05, 5.009e-05, 503.91320939], [1517280240000, 5.005e-05, 5.009e-05, 5.004e-05, 5.009e-05, 9591.74229388], [1517280300000, 5.009e-05, 5.01e-05, 5.004e-05, 5.01e-05, 31755.14442883], [1517280360000, 5.01e-05, 5.011e-05, 5.005e-05, 5.005e-05, 3223.07417471], [1517280420000, 5.011e-05, 5.011e-05, 5.005e-05, 5.01e-05, 21626.53153435], [1517280480000, 5.01e-05, 5.011e-05, 5.01e-05, 5.01e-05, 4269.16459529], [1517280540000, 5.011e-05, 5.011e-05, 5.004e-05, 5.004e-05, 93557.56360229], [1517280600000, 5.01e-05, 5.011e-05, 5.003e-05, 5.011e-05, 36596.08668063], [1517280660000, 5.011e-05, 5.011e-05, 5.004e-05, 5.011e-05, 36488.20927939], [1517280720000, 5.011e-05, 5.011e-05, 5.011e-05, 5.011e-05, 32554.51952093], [1517280780000, 5.011e-05, 5.011e-05, 5.003e-05, 5.003e-05, 39535.53173271], [1517280840000, 5.01e-05, 5.01e-05, 5.003e-05, 5.01e-05, 16026.40036617], [1517280900000, 5.01e-05, 5.01e-05, 5.009e-05, 5.01e-05, 4979.74248183], [1517280960000, 5.01e-05, 5.01e-05, 5.003e-05, 5.009e-05, 47806.13835566], [1517281020000, 5.009e-05, 5.009e-05, 5.003e-05, 5.009e-05, 9082.11055129], [1517281080000, 5.009e-05, 5.009e-05, 5.008e-05, 5.008e-05, 10924.03918773], [1517281140000, 5.009e-05, 5.009e-05, 5.007e-05, 5.009e-05, 5374.4415837], [1517281200000, 5.006e-05, 5.009e-05, 4.99e-05, 4.991e-05, 40707.32484709], [1517281260000, 4.991e-05, 5.005e-05, 4.96e-05, 4.98e-05, 170757.22933065], [1517281320000, 4.971e-05, 5.005e-05, 4.97e-05, 4.98e-05, 51636.58847577], [1517281380000, 4.98e-05, 4.98e-05, 4.966e-05, 4.966e-05, 27872.59671092], [1517281440000, 4.966e-05, 5.001e-05, 4.966e-05, 5.001e-05, 110.56201783], [1517281500000, 4.999e-05, 5.005e-05, 4.976e-05, 4.99e-05, 3320.47584217], [1517281560000, 4.99e-05, 5e-05, 4.99e-05, 4.995e-05, 12591.76552865], [1517281620000, 4.995e-05, 4.995e-05, 4.99e-05, 4.991e-05, 23895.43857846], [1517281680000, 4.991e-05, 4.991e-05, 4.99e-05, 4.991e-05, 81874.0645964], [1517281740000, 4.991e-05, 4.998e-05, 4.965e-05, 4.976e-05, 43744.01142508], [1517281800000, 4.976e-05, 4.985e-05, 4.962e-05, 4.962e-05, 19293.56880048], [1517281860000, 4.962e-05, 4.996e-05, 4.962e-05, 4.962e-05, 22171.93803446], [1517281920000, 4.993e-05, 4.993e-05, 4.99e-05, 4.99e-05, 577.08961709], [1517281980000, 4.99e-05, 4.99e-05, 4.963e-05, 4.987e-05, 1227.42136059], [1517282040000, 4.987e-05, 4.987e-05, 4.96e-05, 4.96e-05, 21691.25255258], [1517282100000, 4.985e-05, 4.986e-05, 4.956e-05, 4.956e-05, 6268.07752685], [1517282160000, 4.957e-05, 4.957e-05, 4.956e-05, 4.956e-05, 60921.33722788], [1517282220000, 4.957e-05, 4.957e-05, 4.955e-05, 4.957e-05, 30970.3540825], [1517282280000, 4.957e-05, 4.975e-05, 4.955e-05, 4.956e-05, 26971.61133374], [1517282340000, 4.956e-05, 4.987e-05, 4.954e-05, 4.954e-05, 28732.92232226], [1517282400000, 4.953e-05, 4.975e-05, 4.952e-05, 4.954e-05, 13732.79308517], [1517282460000, 4.954e-05, 4.975e-05, 4.954e-05, 4.975e-05, 28720.62549898], [1517282520000, 4.975e-05, 4.975e-05, 4.952e-05, 4.975e-05, 12227.79219078], [1517282580000, 4.967e-05, 4.99e-05, 4.954e-05, 4.99e-05, 19606.15087114], [1517282640000, 4.99e-05, 5.008e-05, 4.967e-05, 5.005e-05, 93718.82310922], [1517282700000, 5e-05, 5.005e-05, 4.988e-05, 5.002e-05, 61443.3182427], [1517282760000, 4.998e-05, 5e-05, 4.976e-05, 4.991e-05, 18324.20111352], [1517282820000, 4.991e-05, 4.995e-05, 4.99e-05, 4.992e-05, 25491.2997336], [1517282880000, 4.99e-05, 4.992e-05, 4.98e-05, 4.99e-05, 48789.82589505], [1517282940000, 4.981e-05, 4.993e-05, 4.968e-05, 4.988e-05, 16509.5878904], [1517283000000, 4.987e-05, 4.996e-05, 4.981e-05, 4.986e-05, 52828.96262158], [1517283060000, 4.986e-05, 4.987e-05, 4.971e-05, 4.987e-05, 32007.45184722], [1517283120000, 4.975e-05, 4.994e-05, 4.975e-05, 4.994e-05, 33175.31061942], [1517283180000, 4.994e-05, 4.994e-05, 4.986e-05, 4.992e-05, 5902.83276056], [1517283240000, 4.987e-05, 4.992e-05, 4.987e-05, 4.988e-05, 4738.65202336], [1517283300000, 4.988e-05, 4.994e-05, 4.986e-05, 4.994e-05, 6320.67071316], [1517283360000, 4.988e-05, 5e-05, 4.986e-05, 5e-05, 20803.92612987], [1517283420000, 4.994e-05, 5e-05, 4.979e-05, 5e-05, 42240.10393453], [1517283480000, 4.979e-05, 5e-05, 4.979e-05, 4.979e-05, 15377.60537453], [1517283540000, 4.979e-05, 4.991e-05, 4.979e-05, 4.988e-05, 38155.85598554], [1517283600000, 4.975e-05, 4.979e-05, 4.975e-05, 4.979e-05, 5072.99350526], [1517283660000, 4.979e-05, 4.989e-05, 4.975e-05, 4.975e-05, 21194.08480088], [1517283720000, 4.975e-05, 4.988e-05, 4.975e-05, 4.988e-05, 4722.84863643], [1517283780000, 4.975e-05, 4.987e-05, 4.975e-05, 4.975e-05, 11645.10496701], [1517283840000, 4.987e-05, 4.987e-05, 4.987e-05, 4.987e-05, 1631.45055998], [1517283900000, 4.977e-05, 4.986e-05, 4.977e-05, 4.986e-05, 1869.27760153], [1517283960000, 4.982e-05, 4.982e-05, 4.977e-05, 4.977e-05, 1344.71437015], [1517284020000, 4.977e-05, 4.982e-05, 4.976e-05, 4.981e-05, 12827.75361263], [1517284080000, 4.981e-05, 4.981e-05, 4.975e-05, 4.976e-05, 4623.45077156], [1517284140000, 4.981e-05, 4.981e-05, 4.968e-05, 4.969e-05, 36219.05273393], [1517284200000, 4.975e-05, 4.975e-05, 4.966e-05, 4.968e-05, 4026.03391041], [1517284260000, 4.969e-05, 4.986e-05, 4.969e-05, 4.979e-05, 15745.4245613], [1517284320000, 4.979e-05, 4.979e-05, 4.969e-05, 4.969e-05, 954.76309964], [1517284380000, 4.97e-05, 4.985e-05, 4.969e-05, 4.983e-05, 7271.65628702], [1517284440000, 4.98e-05, 4.986e-05, 4.979e-05, 4.986e-05, 2024.54269252], [1517284500000, 4.986e-05, 5e-05, 4.986e-05, 5e-05, 25552.01629869], [1517284560000, 4.99e-05, 4.999e-05, 4.99e-05, 4.999e-05, 256.42415986], [1517284620000, 4.999e-05, 4.999e-05, 4.991e-05, 4.998e-05, 655.86294976], [1517284680000, 4.997e-05, 4.998e-05, 4.997e-05, 4.997e-05, 3405.74158087], [1517284740000, 4.993e-05, 4.997e-05, 4.98e-05, 4.98e-05, 13888.32960212], [1517284800000, 4.981e-05, 4.998e-05, 4.981e-05, 4.998e-05, 1281.56411634], [1517284860000, 4.998e-05, 4.998e-05, 4.979e-05, 4.998e-05, 4606.34726649], [1517284920000, 4.998e-05, 4.998e-05, 4.998e-05, 4.998e-05, 1000.0], [1517284980000, 4.998e-05, 4.998e-05, 4.996e-05, 4.996e-05, 269.06529544], [1517285040000, 4.98e-05, 4.98e-05, 4.98e-05, 4.98e-05, 575.76363362], [1517285100000, 4.98e-05, 4.99e-05, 4.98e-05, 4.98e-05, 7768.78512592], [1517285160000, 4.99e-05, 4.999e-05, 4.99e-05, 4.998e-05, 2338.8280237], [1517285220000, 4.998e-05, 4.999e-05, 4.998e-05, 4.998e-05, 937.52889159], [1517285280000, 4.997e-05, 4.999e-05, 4.981e-05, 4.981e-05, 7971.47925446], [1517285340000, 4.981e-05, 4.997e-05, 4.979e-05, 4.997e-05, 9686.61249814], [1517285400000, 4.984e-05, 4.997e-05, 4.984e-05, 4.984e-05, 7089.08267653], [1517285460000, 4.984e-05, 4.984e-05, 4.984e-05, 4.984e-05, 4393.50294524], [1517285520000, 4.984e-05, 4.995e-05, 4.982e-05, 4.982e-05, 17357.31050001], [1517285580000, 4.982e-05, 4.994e-05, 4.979e-05, 4.994e-05, 21936.53111764], [1517285640000, 4.993e-05, 4.993e-05, 4.981e-05, 4.982e-05, 1078.40726841], [1517285700000, 4.982e-05, 4.982e-05, 4.98e-05, 4.98e-05, 3200.75954717], [1517285760000, 4.982e-05, 4.998e-05, 4.979e-05, 4.979e-05, 15430.73338661], [1517285820000, 4.98e-05, 4.98e-05, 4.979e-05, 4.979e-05, 5142.79711993], [1517285880000, 4.979e-05, 4.979e-05, 4.95e-05, 4.95e-05, 24599.06932593], [1517285940000, 4.98e-05, 4.98e-05, 4.941e-05, 4.941e-05, 34127.44072018], [1517286000000, 4.952e-05, 4.952e-05, 4.944e-05, 4.944e-05, 1978.0], [1517286060000, 4.951e-05, 4.98e-05, 4.951e-05, 4.952e-05, 2583.00675217], [1517286120000, 4.953e-05, 4.98e-05, 4.953e-05, 4.977e-05, 3458.2152403], [1517286180000, 4.976e-05, 4.976e-05, 4.961e-05, 4.976e-05, 7139.71497567], [1517286240000, 4.976e-05, 4.98e-05, 4.966e-05, 4.98e-05, 6345.45723362], [1517286300000, 4.98e-05, 4.98e-05, 4.966e-05, 4.98e-05, 1932.07791426], [1517286360000, 4.98e-05, 4.98e-05, 4.972e-05, 4.98e-05, 19984.78331253], [1517286420000, 4.98e-05, 4.98e-05, 4.978e-05, 4.978e-05, 31697.36426616], [1517286480000, 4.972e-05, 4.98e-05, 4.972e-05, 4.978e-05, 7194.51509905], [1517286540000, 4.974e-05, 4.978e-05, 4.974e-05, 4.978e-05, 176.88513635], [1517286600000, 4.978e-05, 4.978e-05, 4.977e-05, 4.978e-05, 1438.879577], [1517286660000, 4.978e-05, 4.98e-05, 4.978e-05, 4.98e-05, 2162.43896454], [1517286720000, 4.98e-05, 4.985e-05, 4.978e-05, 4.985e-05, 5363.37276689], [1517286780000, 4.996e-05, 4.996e-05, 4.985e-05, 4.985e-05, 3643.20958432], [1517286840000, 4.985e-05, 4.993e-05, 4.984e-05, 4.985e-05, 2173.44170831], [1517286900000, 4.993e-05, 4.993e-05, 4.978e-05, 4.978e-05, 2517.71750933], [1517286960000, 4.981e-05, 4.981e-05, 4.978e-05, 4.981e-05, 2303.10180739], [1517287020000, 4.981e-05, 4.981e-05, 4.981e-05, 4.981e-05, 2975.91981429], [1517287080000, 4.995e-05, 4.995e-05, 4.983e-05, 4.983e-05, 1877.00240252], [1517287140000, 4.984e-05, 4.994e-05, 4.983e-05, 4.983e-05, 16441.6640693], [1517287200000, 4.994e-05, 4.994e-05, 4.985e-05, 4.994e-05, 2144.71719744], [1517287260000, 4.994e-05, 4.994e-05, 4.985e-05, 4.994e-05, 1010.87491602], [1517287320000, 4.994e-05, 4.995e-05, 4.985e-05, 4.995e-05, 26610.17269432], [1517287380000, 4.995e-05, 5e-05, 4.995e-05, 5e-05, 16689.36463401], [1517287440000, 5e-05, 5e-05, 4.995e-05, 4.995e-05, 10412.40376457], [1517287500000, 4.995e-05, 4.999e-05, 4.994e-05, 4.999e-05, 4517.82597006], [1517287560000, 4.999e-05, 4.999e-05, 4.997e-05, 4.999e-05, 86.22566781], [1517287620000, 4.999e-05, 4.999e-05, 4.999e-05, 4.999e-05, 983.72274951], [1517287680000, 4.999e-05, 5e-05, 4.999e-05, 5e-05, 3120.73419291], [1517287740000, 4.999e-05, 5e-05, 4.995e-05, 4.999e-05, 6609.89893349], [1517287800000, 4.995e-05, 5.011e-05, 4.995e-05, 5.008e-05, 40728.82731784]]
\ No newline at end of file
diff --git a/tests/testdata/XMR_BTC-1m.json b/tests/testdata/XMR_BTC-1m.json
deleted file mode 100644
index 7eb4122e0..000000000
--- a/tests/testdata/XMR_BTC-1m.json
+++ /dev/null
@@ -1 +0,0 @@
-[[1516423920000, 0.02995009, 0.03000002, 0.029931, 0.029931, 18.94196128], [1516423980000, 0.029931, 0.03000002, 0.0299, 0.0299, 55.0310912], [1516424040000, 0.0299, 0.03000001, 0.029839, 0.03000001, 26.39712697], [1516424100000, 0.03000002, 0.03000002, 0.029887, 0.02989, 10.80599975], [1516424160000, 0.03000001, 0.03019786, 0.02983901, 0.02983901, 61.63959668], [1516424220000, 0.02983903, 0.03015, 0.02983901, 0.02985, 12.4765724], [1516424280000, 0.02985, 0.0300595, 0.02983915, 0.02999999, 14.5673343], [1516424340000, 0.02983914, 0.03, 0.02983914, 0.02983915, 18.255432], [1516424400000, 0.02983915, 0.03, 0.02983902, 0.02983902, 19.13405043], [1516424460000, 0.03, 0.03, 0.02983903, 0.03, 7.63617477], [1516424520000, 0.02983903, 0.03, 0.02977795, 0.02977795, 45.11722381], [1516424580000, 0.02984701, 0.02984701, 0.0297, 0.02977795, 37.36073885], [1516424640000, 0.02977795, 0.02977795, 0.02960248, 0.02960266, 38.35012381], [1516424700000, 0.02977795, 0.02994988, 0.02960778, 0.02994132, 6.40204601], [1516424760000, 0.02960789, 0.02994082, 0.02960785, 0.02960798, 11.13558635], [1516424820000, 0.02960798, 0.02994007, 0.02960798, 0.02993999, 7.6024226], [1516424880000, 0.02993999, 0.02994005, 0.02960933, 0.02993995, 27.22859325], [1516424940000, 0.02970011, 0.02994005, 0.02960265, 0.02960266, 42.02376543], [1516425000000, 0.02960268, 0.02993987, 0.02960266, 0.02960272, 14.71385197], [1516425060000, 0.02961, 0.0299393, 0.02960272, 0.02993928, 13.13361817], [1516425120000, 0.02978964, 0.02978974, 0.02961062, 0.02961067, 3.91886392], [1516425180000, 0.02978964, 0.02978964, 0.02978964, 0.02978964, 2.63291138], [1516425240000, 0.02961111, 0.02978964, 0.02961111, 0.02978963, 2.22406038], [1516425300000, 0.02978962, 0.02978963, 0.02961167, 0.0297896, 3.58376201], [1516425360000, 0.02961149, 0.02978964, 0.02961145, 0.0297896, 20.45854933], [1516425420000, 0.0297896, 0.0297896, 0.02961162, 0.0297896, 2.17488443], [1516425480000, 0.0297896, 0.0297896, 0.02970029, 0.0297896, 1.72969124], [1516425540000, 0.0297896, 0.02993898, 0.02970046, 0.02993898, 12.61436076], [1516425600000, 0.02993901, 0.02994015, 0.0299389, 0.0299389, 30.49399097], [1516425660000, 0.0299389, 0.0299389, 0.02970005, 0.0299389, 57.70414494], [1516425720000, 0.02994014, 0.02994015, 0.02970006, 0.02994011, 24.13091729], [1516425780000, 0.02994011, 0.02994015, 0.02970005, 0.02992998, 163.64725858], [1516425840000, 0.02992998, 0.02992998, 0.02992996, 0.02992998, 6.12042132], [1516425900000, 0.02992998, 0.02992999, 0.02970135, 0.02970135, 5.53644231], [1516425960000, 0.02992998, 0.02992998, 0.02970113, 0.0299299, 28.82586862], [1516426020000, 0.0299299, 0.02993, 0.02971009, 0.02993, 97.71628646], [1516426080000, 0.02971027, 0.02992964, 0.02960259, 0.02992953, 109.08359432], [1516426140000, 0.02961247, 0.02992938, 0.02961219, 0.0299292, 174.84419481], [1516426200000, 0.02992902, 0.02993, 0.02961444, 0.02992894, 77.67585668], [1516426260000, 0.02992902, 0.0299627, 0.02961452, 0.02993234, 190.77725964], [1516426320000, 0.02993233, 0.02993234, 0.02993233, 0.02993233, 0.60400976], [1516426380000, 0.02993233, 0.02993233, 0.0296556, 0.02993233, 7.3658471], [1516426440000, 0.02993233, 0.02993233, 0.02970091, 0.02977168, 1.74338028], [1516426500000, 0.0298009, 0.0298009, 0.0297005, 0.0297005, 24.5320457], [1516426560000, 0.0297005, 0.02993233, 0.0297005, 0.02977167, 7.12195392], [1516426620000, 0.02977167, 0.02977172, 0.02961447, 0.02965001, 181.03195833], [1516426680000, 0.02965001, 0.02965001, 0.02961447, 0.02961447, 18.41877727], [1516426740000, 0.02961439, 0.02961439, 0.0295523, 0.02958041, 19.89856671], [1516426800000, 0.02959518, 0.02992814, 0.0295, 0.02992787, 372.99730087], [1516426860000, 0.0299276, 0.0299276, 0.02955052, 0.02955052, 4.36620522], [1516426920000, 0.02955134, 0.02989, 0.02955127, 0.02989, 14.16704898], [1516426980000, 0.02988982, 0.02989, 0.0295, 0.0295, 172.95726671], [1516427040000, 0.02966842, 0.02966842, 0.0295004, 0.02950058, 85.70984332], [1516427100000, 0.02950058, 0.02966842, 0.02950058, 0.02950082, 62.59328359], [1516427160000, 0.02950082, 0.02978865, 0.0295006, 0.02960082, 14.93020605], [1516427220000, 0.02966842, 0.02977767, 0.02945126, 0.02945128, 93.52804382], [1516427280000, 0.02977722, 0.02977722, 0.02977722, 0.02977722, 0.01678285], [1516427340000, 0.02945134, 0.02965014, 0.029432, 0.02965014, 42.40549635], [1516427400000, 0.02971936, 0.02971936, 0.02971936, 0.02971936, 0.33647941], [1516427460000, 0.02945138, 0.0297, 0.0294, 0.02946001, 75.57499614], [1516427520000, 0.02946002, 0.02946002, 0.02940001, 0.02940002, 26.68641025], [1516427580000, 0.02940008, 0.02975, 0.02940003, 0.02969913, 128.34135226], [1516427640000, 0.02979973, 0.02979973, 0.02969912, 0.02969912, 1.37324663], [1516427700000, 0.02947071, 0.02947071, 0.02947068, 0.02947068, 42.46429954], [1516427760000, 0.0296798, 0.0296798, 0.02935008, 0.02935008, 137.95299692], [1516427820000, 0.02967978, 0.02967978, 0.02935085, 0.02935085, 0.23380812], [1516427880000, 0.02966991, 0.02966999, 0.02935108, 0.02966988, 2.84530976], [1516427940000, 0.02966987, 0.02975, 0.02966986, 0.02975, 29.15982158], [1516428000000, 0.02979969, 0.02979969, 0.02979935, 0.02979935, 1.51906477], [1516428060000, 0.02967438, 0.0297989, 0.02935123, 0.02979866, 115.90227175], [1516428120000, 0.02967, 0.02974997, 0.02935141, 0.02969195, 88.41392012], [1516428180000, 0.02974996, 0.02979851, 0.02969195, 0.02979851, 12.6665572], [1516428240000, 0.02969195, 0.02979965, 0.02969195, 0.02979965, 2.8710123], [1516428300000, 0.02969195, 0.02979954, 0.02945, 0.02958588, 27.97103451], [1516428360000, 0.02958588, 0.02969185, 0.02946114, 0.02946114, 75.52882089], [1516428420000, 0.0296917, 0.0296917, 0.02959827, 0.02959827, 13.230997], [1516428480000, 0.02946161, 0.02959827, 0.02946161, 0.02957073, 11.91665599], [1516428540000, 0.02957073, 0.02969173, 0.0294611, 0.0294611, 286.75256283], [1516428600000, 0.02969173, 0.02969173, 0.02956278, 0.02969156, 4.40929836], [1516428660000, 0.02969148, 0.02969192, 0.02946779, 0.02946779, 2.66315257], [1516428720000, 0.02969192, 0.02969192, 0.02946796, 0.02969181, 150.48813841], [1516428780000, 0.02969181, 0.02984998, 0.02946684, 0.02946684, 92.3603347], [1516428840000, 0.02958588, 0.02978558, 0.02958588, 0.02978558, 0.69702898], [1516428900000, 0.02983746, 0.02983747, 0.02958588, 0.02958589, 0.96547484], [1516428960000, 0.02958589, 0.02983596, 0.0294, 0.02975, 131.81771708], [1516429020000, 0.02982875, 0.02982875, 0.02940018, 0.02979983, 107.45492461], [1516429080000, 0.02971185, 0.02971185, 0.0294, 0.0294, 179.40347502], [1516429140000, 0.029547, 0.02979992, 0.02936, 0.02945784, 26.31054024], [1516429200000, 0.029547, 0.02975, 0.02945811, 0.02945849, 174.38889623], [1516429260000, 0.0294591, 0.02974999, 0.02945903, 0.02974999, 33.95114373], [1516429320000, 0.029477, 0.02969993, 0.02945853, 0.02969993, 165.84073367], [1516429380000, 0.02965, 0.02979884, 0.02965, 0.02965, 1.30343025], [1516429440000, 0.02965, 0.02979786, 0.02948201, 0.02979786, 10.71942144], [1516429500000, 0.02965, 0.02965, 0.02948203, 0.02965, 2.4660354], [1516429560000, 0.02948203, 0.02964036, 0.02948002, 0.02948002, 15.80267476], [1516429620000, 0.02948003, 0.02964036, 0.02948003, 0.02964036, 2.0072865], [1516429680000, 0.02964995, 0.02964995, 0.02964995, 0.02964995, 0.67453625], [1516429740000, 0.02965, 0.02965, 0.02945, 0.02945, 21.48373844], [1516429800000, 0.02940004, 0.02966905, 0.02940004, 0.02966905, 2.09511323], [1516429860000, 0.02966867, 0.02966868, 0.0296145, 0.0296145, 1.8781881], [1516429920000, 0.0296145, 0.0296145, 0.0296145, 0.0296145, 0.54027587], [1516429980000, 0.0296145, 0.0296145, 0.0296145, 0.0296145, 13.41220648], [1516430040000, 0.0296145, 0.02974917, 0.02948017, 0.02974869, 8.76115648], [1516430100000, 0.02974833, 0.02974833, 0.02948005, 0.02948005, 121.65384418], [1516430160000, 0.02974772, 0.02974772, 0.02974675, 0.02974675, 0.84844363], [1516430220000, 0.02972991, 0.02972991, 0.02972991, 0.02972991, 0.03361711], [1516430280000, 0.02972932, 0.02972932, 0.02972923, 0.02972923, 3.30847391], [1516430340000, 0.02975, 0.02983742, 0.02975, 0.02983742, 0.7446213], [1516430400000, 0.02983734, 0.02983734, 0.02983734, 0.02983734, 0.30806215], [1516430460000, 0.02983743, 0.02993897, 0.02983743, 0.02993897, 38.67293951], [1516430520000, 0.02993897, 0.02993897, 0.02993854, 0.02993855, 5.86745946], [1516430580000, 0.02965001, 0.02993854, 0.02965001, 0.02993827, 10.23409575], [1516430640000, 0.02992531, 0.02992531, 0.02965127, 0.02965127, 0.26479529], [1516430700000, 0.0299383, 0.02999802, 0.0299383, 0.0299383, 3.91730517], [1516430760000, 0.02999802, 0.02999991, 0.0299383, 0.0299383, 2.49190025], [1516430820000, 0.0299383, 0.02993831, 0.0299383, 0.0299383, 0.82411091], [1516430880000, 0.02999999, 0.03, 0.02999999, 0.03, 8.65259474], [1516430940000, 0.02999999, 0.03, 0.02999999, 0.02999999, 4.49955316], [1516431000000, 0.02999999, 0.03009999, 0.0299383, 0.02993839, 37.14509161], [1516431120000, 0.02993839, 0.0300919, 0.0299383, 0.0300919, 18.95855696], [1516431180000, 0.0300919, 0.0300919, 0.0299383, 0.0299383, 0.70782618], [1516431240000, 0.0299383, 0.02993831, 0.0299383, 0.02993831, 58.72822118], [1516431300000, 0.0299383, 0.0300909, 0.0299383, 0.0300909, 1.67477637], [1516431360000, 0.0300909, 0.0300909, 0.0300909, 0.0300909, 2.3463454], [1516431420000, 0.0299383, 0.0299383, 0.0299383, 0.0299383, 0.3907589], [1516431480000, 0.0300909, 0.0300909, 0.0300909, 0.0300909, 0.0779188], [1516431540000, 0.03008587, 0.0300909, 0.03001462, 0.03001462, 0.60776971], [1516431600000, 0.03001467, 0.0300909, 0.03001467, 0.0300909, 1.28686146], [1516431660000, 0.03001467, 0.0301, 0.03001467, 0.0301, 5.16514751], [1516431720000, 0.0301, 0.03015, 0.0300909, 0.03015, 11.28738521], [1516431780000, 0.03015, 0.03015, 0.03015, 0.03015, 15.0], [1516431840000, 0.03015, 0.03018242, 0.0300146, 0.0300146, 4.390931], [1516431900000, 0.0300527, 0.0300527, 0.0300146, 0.0300527, 0.73297947], [1516431960000, 0.0300146, 0.03018244, 0.0300146, 0.03018243, 1.24751623], [1516432080000, 0.0300527, 0.0300527, 0.0300527, 0.0300527, 0.15], [1516432140000, 0.0300146, 0.03028361, 0.02991262, 0.02991262, 227.1897907], [1516432200000, 0.0300146, 0.03015, 0.02991262, 0.03014983, 13.83511962], [1516432320000, 0.02991267, 0.03003365, 0.02991267, 0.02991267, 5.82063454], [1516432380000, 0.02991267, 0.0299999, 0.02987755, 0.02987755, 2.60239379], [1516432440000, 0.02987755, 0.02987755, 0.02987755, 0.02987755, 1.9631709], [1516432500000, 0.02987755, 0.03009679, 0.02975012, 0.02975115, 8.23641295], [1516432560000, 0.02975139, 0.03009667, 0.02975139, 0.02975191, 1.16700739], [1516432620000, 0.02985027, 0.02985027, 0.02975246, 0.02975265, 0.93173992], [1516432740000, 0.02998982, 0.0299899, 0.02998982, 0.0299899, 0.70951856], [1516432800000, 0.02988952, 0.02988952, 0.0297, 0.0297, 1.95343369], [1516432860000, 0.0297, 0.02996985, 0.02966858, 0.02996985, 4.09307761], [1516432920000, 0.0298, 0.0298, 0.0298, 0.0298, 3.21888599], [1516432980000, 0.0298, 0.0298, 0.02979999, 0.0298, 6.88141088], [1516433040000, 0.02975, 0.0298, 0.02969477, 0.0298, 2.97346745], [1516433100000, 0.0298, 0.0298, 0.0298, 0.0298, 17.52355645], [1516433160000, 0.0298, 0.0298, 0.0298, 0.0298, 1.73051606], [1516433220000, 0.0298, 0.0299, 0.0298, 0.0299, 113.80298443], [1516433280000, 0.02971005, 0.0299, 0.02971005, 0.0299, 0.58926699], [1516433340000, 0.0299, 0.0299, 0.0299, 0.0299, 0.1777065], [1516433400000, 0.0299, 0.0299, 0.0299, 0.0299, 2.5655444], [1516433460000, 0.02989999, 0.0299, 0.02989999, 0.0299, 2.48267285], [1516433520000, 0.0299, 0.0299, 0.0299, 0.0299, 0.26755852], [1516433580000, 0.0299, 0.0299, 0.0298, 0.0298, 1.4208005], [1516433640000, 0.0299, 0.0299, 0.0299, 0.0299, 0.86586082], [1516433700000, 0.0299, 0.0299, 0.02989999, 0.0299, 87.73038912], [1516433760000, 0.0299, 0.0299, 0.0299, 0.0299, 1.27496732], [1516433880000, 0.0299, 0.0299, 0.0299, 0.0299, 0.12362625], [1516433940000, 0.02989999, 0.0299999, 0.02989999, 0.0299999, 1.88658558], [1516434060000, 0.02999989, 0.0299999, 0.02999989, 0.0299999, 1.502847], [1516434120000, 0.02999989, 0.02999989, 0.02999987, 0.02999987, 1.32975587], [1516434180000, 0.02999987, 0.02999989, 0.02999987, 0.02999987, 4.90667347], [1516434240000, 0.02999705, 0.02999705, 0.02980102, 0.02980102, 1.10497606], [1516434300000, 0.029801, 0.02998901, 0.029801, 0.029801, 15.88646519], [1516434360000, 0.02998898, 0.02998898, 0.02998856, 0.02998856, 16.60930367], [1516434420000, 0.02980103, 0.02998786, 0.02980103, 0.02980104, 0.2043705], [1516434480000, 0.02998748, 0.02998748, 0.02980104, 0.02980104, 10.00384673], [1516434540000, 0.02980104, 0.02987376, 0.02980104, 0.02987376, 1.75076626], [1516434600000, 0.02988376, 0.02988376, 0.02988376, 0.02988376, 0.1386602], [1516434660000, 0.02986438, 0.02988375, 0.02986438, 0.02988375, 0.51844229], [1516434720000, 0.02988375, 0.02989998, 0.02980104, 0.02980104, 22.44333374], [1516434780000, 0.02980104, 0.02989998, 0.02980104, 0.02985104, 45.88884986], [1516434840000, 0.02980104, 0.02980104, 0.02980104, 0.02980104, 2.44733317], [1516434900000, 0.02980104, 0.02980104, 0.02980104, 0.02980104, 2.44609638], [1516434960000, 0.029851, 0.029851, 0.029851, 0.029851, 0.36874728], [1516435020000, 0.029851, 0.029851, 0.029851, 0.029851, 0.33499715], [1516435080000, 0.02980104, 0.029851, 0.02980104, 0.029851, 1.64913696], [1516435140000, 0.02980104, 0.02980104, 0.029801, 0.02980104, 18.86423408], [1516435200000, 0.02980104, 0.02980104, 0.02980059, 0.02980059, 9.47266648], [1516435260000, 0.029801, 0.029801, 0.029801, 0.029801, 0.06279043], [1516435320000, 0.029801, 0.029801, 0.029801, 0.029801, 4.51855191], [1516435380000, 0.029801, 0.029801, 0.02980059, 0.029801, 3.05443661], [1516435440000, 0.029801, 0.02980104, 0.029801, 0.02980104, 8.94748435], [1516435500000, 0.02980103, 0.02980103, 0.02980103, 0.02980103, 1.53960226], [1516435620000, 0.02980103, 0.02980104, 0.02980059, 0.02980104, 15.50979371], [1516435680000, 0.02980104, 0.02980104, 0.02980059, 0.02980059, 2.66126614], [1516435740000, 0.0298006, 0.02980104, 0.02980059, 0.02980104, 2.18263292], [1516435800000, 0.02980059, 0.02980104, 0.02980059, 0.02980104, 50.05308669], [1516435860000, 0.02980104, 0.02985103, 0.02980104, 0.02985103, 0.97008075], [1516435920000, 0.02980104, 0.02985103, 0.02980104, 0.02985103, 4.18867396], [1516436040000, 0.02980104, 0.02985103, 0.02980104, 0.02980104, 2.45415545], [1516436100000, 0.02980104, 0.02985103, 0.02980104, 0.02985103, 1.62489831], [1516436160000, 0.02980104, 0.0299, 0.02980104, 0.0299, 75.40412237], [1516436220000, 0.0299, 0.0299, 0.0298, 0.029899, 100.43168771], [1516436280000, 0.02989892, 0.02989892, 0.02989892, 0.02989892, 0.74596669], [1516436340000, 0.02989899, 0.029899, 0.02989899, 0.029899, 0.67626699], [1516436400000, 0.029899, 0.029899, 0.029899, 0.029899, 0.33445934], [1516436460000, 0.029899, 0.029899, 0.029899, 0.029899, 0.9975], [1516436520000, 0.029899, 0.029899, 0.029899, 0.029899, 2.39713341], [1516436580000, 0.029899, 0.029899, 0.02971236, 0.02971236, 3.04310765], [1516436640000, 0.02971246, 0.02971246, 0.02971246, 0.02971246, 0.09649915], [1516436760000, 0.02971284, 0.029899, 0.02971284, 0.029899, 1.72582541], [1516436820000, 0.0298, 0.0298, 0.0298, 0.0298, 7.18734901], [1516436880000, 0.0298, 0.0298, 0.0298, 0.0298, 0.1], [1516436940000, 0.0298, 0.0298, 0.0298, 0.0298, 11.93708647], [1516437000000, 0.02979999, 0.0298, 0.02979999, 0.02979999, 1.24741261], [1516437120000, 0.02971248, 0.02979999, 0.0297, 0.02979999, 24.10413254], [1516437180000, 0.02978149, 0.02978149, 0.02975565, 0.02975565, 1.51796087], [1516437240000, 0.02979999, 0.0298, 0.02969477, 0.02969477, 17.98008431], [1516437300000, 0.02988839, 0.02988839, 0.0296948, 0.0296948, 5.26851089], [1516437420000, 0.0297998, 0.0297998, 0.0297998, 0.0297998, 0.16778636], [1516437480000, 0.0297997, 0.0297998, 0.0297997, 0.0297998, 1.32], [1516437540000, 0.02976, 0.02976, 0.02965181, 0.02965181, 0.25104918], [1516437600000, 0.02965181, 0.02965181, 0.02965181, 0.02965181, 0.4], [1516437660000, 0.0297997, 0.0297997, 0.029799, 0.029799, 2.32429856], [1516437720000, 0.0297, 0.0297, 0.0297, 0.0297, 39.51073621], [1516437780000, 0.0297, 0.0297, 0.0297, 0.0297, 71.46663159], [1516437840000, 0.0297, 0.0297, 0.0297, 0.0297, 14.43815917], [1516437900000, 0.0297, 0.0297, 0.0297, 0.0297, 7.75348192], [1516437960000, 0.02965181, 0.0297, 0.02960779, 0.0297, 19.81954711], [1516438020000, 0.0297, 0.0297, 0.0297, 0.0297, 2.14836639], [1516438080000, 0.02965181, 0.02965181, 0.0296518, 0.02965181, 9.20062705], [1516438140000, 0.02965181, 0.0297, 0.02965181, 0.0297, 1.68793923], [1516438200000, 0.0297, 0.0297, 0.0297, 0.0297, 4.55699177], [1516438380000, 0.02965182, 0.02969, 0.02965182, 0.02965187, 4.43669914], [1516438440000, 0.02965187, 0.02965187, 0.02945, 0.0295, 12.40673564], [1516438500000, 0.0295, 0.02969, 0.0295, 0.02969, 46.86851421], [1516438560000, 0.02969, 0.02969, 0.02969, 0.02969, 0.11489999], [1516438620000, 0.02964815, 0.02967, 0.02964815, 0.02967, 2.75653452], [1516438680000, 0.02966999, 0.02966999, 0.02966999, 0.02966999, 0.12105837], [1516438740000, 0.02966999, 0.02990001, 0.0295017, 0.0299, 325.61492048], [1516438800000, 0.0299, 0.02990341, 0.0299, 0.0299, 17.27452184], [1516438860000, 0.0299, 0.02990344, 0.0299, 0.02990344, 17.48240414], [1516438980000, 0.02990345, 0.02994838, 0.02990345, 0.02994838, 2.85884549], [1516439040000, 0.02994838, 0.0301, 0.02994838, 0.03000001, 25.43328747], [1516439100000, 0.030003, 0.03014843, 0.030003, 0.03009999, 4.08999015], [1516439160000, 0.0301, 0.0301, 0.03000301, 0.0301, 14.32085605], [1516439220000, 0.0301, 0.03014839, 0.03000001, 0.03000001, 7.38834151], [1516439280000, 0.03000001, 0.0301, 0.03000001, 0.03000001, 4.51697999], [1516439340000, 0.03000001, 0.03000001, 0.03, 0.03, 5.90006929], [1516439400000, 0.03, 0.03000001, 0.02990623, 0.03000001, 2.01260737], [1516439460000, 0.03, 0.03014848, 0.03, 0.0300251, 12.77563361], [1516439520000, 0.03014846, 0.0301485, 0.03013542, 0.0301485, 0.41904752], [1516439580000, 0.03014955, 0.03015, 0.0301485, 0.0301485, 4.26557831], [1516439640000, 0.03015, 0.0302, 0.03015, 0.0302, 0.98163955], [1516439700000, 0.03019999, 0.03025, 0.03019998, 0.03025, 3.68740152], [1516439760000, 0.0302, 0.0304, 0.0302, 0.0304, 73.71508532], [1516439820000, 0.03029408, 0.03066237, 0.03022022, 0.03066051, 23.63848507], [1516439880000, 0.0306605, 0.03084215, 0.03032792, 0.03035059, 63.57909215], [1516439940000, 0.03035059, 0.03084192, 0.03035059, 0.0305, 3.8390766], [1516440000000, 0.03066042, 0.03077277, 0.03050002, 0.03060201, 13.55273876], [1516440060000, 0.03077277, 0.03087614, 0.03060213, 0.03087613, 76.65667865], [1516440120000, 0.03087614, 0.030887, 0.0307, 0.030887, 56.2057405], [1516440180000, 0.030887, 0.03099, 0.03070411, 0.03087614, 8.5857504], [1516440240000, 0.03087614, 0.03093, 0.03087614, 0.03087615, 17.7889643], [1516440300000, 0.03087615, 0.0308762, 0.03087614, 0.03087614, 25.41652618], [1516440360000, 0.03087614, 0.03099, 0.03087614, 0.03087614, 14.51132739], [1516440420000, 0.03087614, 0.0318, 0.03075, 0.03147794, 1852.53758074], [1516440480000, 0.03090708, 0.03144271, 0.03090708, 0.03090758, 45.33631088], [1516440540000, 0.03091799, 0.0315, 0.03091799, 0.03144266, 114.83545248], [1516440600000, 0.03144266, 0.0316401, 0.03144246, 0.03144246, 52.86959575], [1516440660000, 0.0314425, 0.03163999, 0.03144246, 0.0314428, 55.25748941], [1516440720000, 0.0314428, 0.03154428, 0.03144246, 0.03154425, 45.92101198], [1516440780000, 0.03154427, 0.03162983, 0.0313501, 0.0313501, 54.44965405], [1516440840000, 0.0313501, 0.03162973, 0.03135008, 0.0313501, 63.61070463], [1516440900000, 0.0313501, 0.03162937, 0.03135001, 0.03135005, 20.79649642], [1516440960000, 0.03135002, 0.03154996, 0.03120024, 0.03154972, 57.1527998], [1516441020000, 0.03130001, 0.03154948, 0.03115001, 0.03149995, 23.01684541], [1516441080000, 0.03120102, 0.03149896, 0.03120102, 0.031203, 11.90988889], [1516441140000, 0.03149304, 0.03149304, 0.0312, 0.03149293, 18.50271205], [1516441200000, 0.03141872, 0.03149273, 0.03115066, 0.03115066, 13.86705201], [1516441260000, 0.0312004, 0.03144274, 0.03115066, 0.03144258, 39.42504519], [1516441320000, 0.0312316, 0.03144202, 0.0312004, 0.03143167, 6.70645266], [1516441380000, 0.03143151, 0.03143151, 0.03115004, 0.03142938, 3.15803818], [1516441440000, 0.03142926, 0.03154938, 0.0314277, 0.03154938, 57.77046342], [1516441500000, 0.03154938, 0.03154939, 0.03142772, 0.03154939, 16.87150819], [1516441560000, 0.03154939, 0.03154939, 0.03124285, 0.03154936, 11.91074439], [1516441620000, 0.0314293, 0.03154939, 0.03125541, 0.03125572, 4.51963053], [1516441680000, 0.03154936, 0.03164001, 0.03154936, 0.03164001, 39.25264457], [1516441740000, 0.03155002, 0.03164001, 0.03147113, 0.03163891, 25.47632469], [1516441800000, 0.03164, 0.0318, 0.0315408, 0.03154098, 48.36484012], [1516441860000, 0.0315589, 0.0318, 0.03154111, 0.03179997, 31.82138372], [1516441920000, 0.03179988, 0.0318, 0.03155966, 0.0318, 13.53337813], [1516441980000, 0.03156009, 0.0318, 0.03156009, 0.03157022, 7.82804263], [1516442040000, 0.03179971, 0.03179971, 0.03160012, 0.0317997, 5.28069359], [1516442100000, 0.03160042, 0.0317997, 0.03160042, 0.031702, 13.09659731], [1516442160000, 0.0317997, 0.03180129, 0.0317, 0.03170205, 29.39673696], [1516442220000, 0.03170205, 0.03189, 0.03170205, 0.03189, 4.63470555], [1516442280000, 0.03170212, 0.0318889, 0.03170212, 0.0318889, 13.77281806], [1516442340000, 0.03188888, 0.03188889, 0.0317022, 0.031789, 8.97744357], [1516442400000, 0.03170218, 0.031789, 0.03170203, 0.03170203, 6.73875818], [1516442460000, 0.03170214, 0.0317817, 0.03170203, 0.03170218, 5.58698322], [1516442520000, 0.03170218, 0.03178725, 0.03170217, 0.03170217, 2.41045563], [1516442580000, 0.03170217, 0.03178896, 0.0317001, 0.0317001, 1.85826053], [1516442640000, 0.0317887, 0.0317887, 0.03129013, 0.03131016, 14.709518], [1516442700000, 0.03140002, 0.03163338, 0.03115738, 0.03129606, 44.25857628], [1516442760000, 0.03129605, 0.03129605, 0.03098717, 0.03129584, 10.01842556], [1516442820000, 0.0312958, 0.0312958, 0.0310101, 0.03129528, 16.59257775], [1516442880000, 0.03129496, 0.03129525, 0.03101039, 0.03101039, 107.30158237], [1516442940000, 0.03113877, 0.03134999, 0.03101051, 0.0312954, 28.9158947], [1516443000000, 0.0312954, 0.03134996, 0.03102135, 0.03134985, 14.71185309], [1516443060000, 0.03134951, 0.03155, 0.03109186, 0.03118225, 56.52647673], [1516443120000, 0.03141737, 0.03159998, 0.03118241, 0.03159998, 11.36577332], [1516443180000, 0.03141737, 0.03153, 0.03128313, 0.03140017, 37.53000903], [1516443240000, 0.03140029, 0.03159998, 0.03140029, 0.03152993, 6.50285867], [1516443300000, 0.03152993, 0.03159998, 0.03152993, 0.03152994, 5.04045296], [1516443360000, 0.03159998, 0.03159998, 0.03139999, 0.03149999, 51.78667243], [1516443420000, 0.03149999, 0.03159997, 0.03149999, 0.03159997, 15.42870704], [1516443480000, 0.03159997, 0.0316, 0.03145, 0.03152097, 32.36964779], [1516443540000, 0.03145, 0.03149999, 0.03130002, 0.03130002, 22.94384222], [1516443600000, 0.03130003, 0.03130003, 0.0313, 0.0313, 0.52145017], [1516443660000, 0.03129999, 0.03130003, 0.03129999, 0.03130003, 3.57871704], [1516443720000, 0.03130003, 0.03144899, 0.03130003, 0.03144899, 3.23543998], [1516443780000, 0.03130003, 0.03138876, 0.03110002, 0.03110013, 3.51750707], [1516443840000, 0.03136496, 0.03136496, 0.03110013, 0.03110023, 1.38498597], [1516443900000, 0.03110033, 0.03133248, 0.03110033, 0.03133245, 3.15888059], [1516443960000, 0.03133247, 0.03133247, 0.03132249, 0.03132249, 10.63367689], [1516444020000, 0.03132249, 0.03132249, 0.03132249, 0.03132249, 0.03519835], [1516444080000, 0.03132249, 0.03133249, 0.03110112, 0.03110112, 57.78154975], [1516444200000, 0.03133249, 0.03133249, 0.0311032, 0.03133241, 7.16347362], [1516444260000, 0.03133232, 0.03133232, 0.03133232, 0.03133232, 0.05670363], [1516444320000, 0.03110033, 0.03133241, 0.03110033, 0.03110084, 0.7011252], [1516444380000, 0.03110126, 0.03110126, 0.03110126, 0.03110126, 1.45391872], [1516444440000, 0.03110166, 0.03128967, 0.0311, 0.03128967, 23.15492617], [1516444500000, 0.0311, 0.03128964, 0.03102005, 0.03110202, 67.70122977], [1516444560000, 0.03105641, 0.03128966, 0.03105641, 0.03128966, 11.38782088], [1516444620000, 0.03105644, 0.03128964, 0.03105644, 0.03124799, 9.43727838], [1516444680000, 0.03106125, 0.03128961, 0.03106125, 0.03128961, 6.21451317], [1516444740000, 0.03128831, 0.03128967, 0.03128831, 0.03128963, 10.57288788], [1516444800000, 0.03128966, 0.03128967, 0.03128964, 0.03128964, 12.60253597], [1516444860000, 0.03128964, 0.03128967, 0.03128831, 0.03128831, 0.54439212], [1516444920000, 0.0312883, 0.03128967, 0.0312883, 0.0312883, 1.45925638], [1516444980000, 0.03128966, 0.03128967, 0.03107264, 0.03107264, 3.13214863], [1516445040000, 0.03128967, 0.03128967, 0.03128967, 0.03128967, 0.5733283], [1516445100000, 0.03128967, 0.03128967, 0.03107399, 0.03128967, 1.30040642], [1516445160000, 0.03128967, 0.03128967, 0.03128967, 0.03128967, 0.608881], [1516445220000, 0.03128967, 0.03128967, 0.03107457, 0.03107457, 0.39009255], [1516445280000, 0.03107457, 0.03128955, 0.03107457, 0.0310746, 13.03670912], [1516445340000, 0.03127939, 0.03127939, 0.03107452, 0.03107452, 0.73188899], [1516445400000, 0.03107451, 0.03107451, 0.03090001, 0.031, 2.83114885], [1516445460000, 0.031, 0.031, 0.03099999, 0.031, 0.48338743], [1516445520000, 0.031, 0.031, 0.031, 0.031, 0.17318419], [1516445580000, 0.03099999, 0.03099999, 0.0309, 0.0309, 6.06191757], [1516445640000, 0.03090001, 0.03099998, 0.0309, 0.0309, 11.63618561], [1516445700000, 0.03099997, 0.03099997, 0.03085992, 0.03085992, 11.646736], [1516445760000, 0.03085992, 0.0309, 0.03085992, 0.0309, 2.94832968], [1516445820000, 0.03096993, 0.03096993, 0.03060001, 0.03060001, 50.25723142], [1516445880000, 0.03075, 0.03085989, 0.03060024, 0.03085989, 9.36236783], [1516445940000, 0.03075, 0.03078075, 0.03074999, 0.03078075, 0.92380696], [1516446000000, 0.03085709, 0.03085709, 0.03070012, 0.03085709, 19.26818143], [1516446060000, 0.03085709, 0.03085709, 0.0307, 0.03085709, 7.11931175], [1516446120000, 0.03085705, 0.03085987, 0.03085705, 0.03085987, 0.07947952], [1516446180000, 0.03085987, 0.03085988, 0.03070014, 0.03085988, 1.36022269], [1516446240000, 0.0307003, 0.0307003, 0.0307, 0.03070024, 11.15787286], [1516446300000, 0.03070024, 0.03091693, 0.03070024, 0.03091665, 5.8596221], [1516446360000, 0.03091669, 0.03091669, 0.03070025, 0.03091666, 4.49597703], [1516446420000, 0.03091669, 0.03100729, 0.03071025, 0.03100729, 9.68206808], [1516446480000, 0.03091745, 0.0311, 0.03091745, 0.0311, 7.90356784], [1516446540000, 0.03111999, 0.03119987, 0.0311, 0.03119987, 2.47912188], [1516446600000, 0.03110006, 0.03119988, 0.0311, 0.0311, 25.88926141], [1516446660000, 0.0311, 0.03119988, 0.03105, 0.03119987, 17.51138197], [1516446720000, 0.0312, 0.03128966, 0.0310501, 0.03123102, 2.22535596], [1516446780000, 0.03105015, 0.03128967, 0.03105015, 0.03128966, 43.35302393], [1516446840000, 0.03123102, 0.03147706, 0.03123094, 0.03123094, 20.46876692], [1516446900000, 0.03123094, 0.03150001, 0.03123094, 0.0315, 39.33207871], [1516446960000, 0.0315, 0.0315, 0.0315, 0.0315, 5.84597623], [1516447020000, 0.0315, 0.03165399, 0.0315, 0.0316539, 14.01899818], [1516447080000, 0.0316539, 0.0316539, 0.0315, 0.0315, 0.94453041], [1516447140000, 0.03150006, 0.03150006, 0.0315, 0.0315, 1.0310276], [1516447200000, 0.0315, 0.03165373, 0.0315, 0.0315, 55.4287544], [1516447260000, 0.03150006, 0.03161809, 0.03142124, 0.03150311, 59.26655575], [1516447320000, 0.03150311, 0.03160778, 0.03142124, 0.03142124, 23.05022238], [1516447380000, 0.03142124, 0.03142124, 0.0313, 0.0313, 1.85241387], [1516447440000, 0.0313, 0.03158499, 0.03128567, 0.03128591, 5.24392275], [1516447500000, 0.03158382, 0.03158382, 0.0313003, 0.0313003, 0.67535991], [1516447560000, 0.03130031, 0.0313004, 0.03123101, 0.03123132, 21.3204996], [1516447620000, 0.03123132, 0.03123132, 0.03123132, 0.03123132, 9.91950574], [1516447680000, 0.03123156, 0.03123158, 0.03123156, 0.03123158, 0.96053943], [1516447800000, 0.03123227, 0.03123227, 0.03123227, 0.03123227, 1.0], [1516447920000, 0.03123195, 0.03123195, 0.03123195, 0.03123195, 0.06109232], [1516447980000, 0.0312322, 0.0315447, 0.0312322, 0.03123258, 3.66002493], [1516448040000, 0.03149971, 0.03149971, 0.0312332, 0.0312332, 2.62469287], [1516448100000, 0.03149915, 0.03149915, 0.0312332, 0.0312332, 6.54097039], [1516448160000, 0.03123322, 0.03146687, 0.03123158, 0.03123158, 2.65301696], [1516448220000, 0.031231, 0.031231, 0.0312, 0.0312, 1.25773783], [1516448280000, 0.03118505, 0.03118505, 0.03118505, 0.03118505, 0.46623136], [1516448340000, 0.03115, 0.03123075, 0.03109701, 0.03115, 13.80237726], [1516448400000, 0.03123063, 0.03123063, 0.03071105, 0.03077681, 29.012517], [1516448460000, 0.03122461, 0.03122461, 0.03095945, 0.03095945, 22.72258094], [1516448520000, 0.0307508, 0.0309, 0.0307508, 0.0309, 0.47017114], [1516448580000, 0.03090002, 0.03090003, 0.03083296, 0.03083296, 29.33846273], [1516448640000, 0.03075129, 0.03102968, 0.03075, 0.03096931, 5.46995658], [1516448700000, 0.03096497, 0.03096931, 0.03075171, 0.03075171, 1.12738399], [1516448760000, 0.0309693, 0.03104997, 0.03075185, 0.0309, 54.76855988], [1516448820000, 0.03089999, 0.03104997, 0.03076821, 0.03076821, 12.20583298], [1516448880000, 0.03104998, 0.03126351, 0.03104998, 0.03126351, 6.09661845], [1516448940000, 0.03104998, 0.0312893, 0.03093046, 0.03093103, 69.75470546], [1516449000000, 0.03095006, 0.03128835, 0.03095006, 0.03128815, 1.09959233], [1516449060000, 0.03097954, 0.03097954, 0.03097954, 0.03097954, 0.63854562], [1516449120000, 0.03111911, 0.03111911, 0.0309705, 0.0309705, 0.65001126], [1516449180000, 0.03097054, 0.03111902, 0.03097053, 0.03097065, 0.53812422], [1516449240000, 0.03097066, 0.03097071, 0.03097066, 0.03097071, 3.768893], [1516449300000, 0.03097071, 0.03110951, 0.0308, 0.0308, 34.90234853], [1516449360000, 0.030932, 0.03123982, 0.03085053, 0.03123982, 39.66167955], [1516449420000, 0.03085115, 0.03111919, 0.03085115, 0.03111919, 37.04559419], [1516449480000, 0.03124412, 0.03125, 0.03090146, 0.031, 13.33607465], [1516449540000, 0.031, 0.0313889, 0.03090434, 0.0313889, 45.49171423], [1516449600000, 0.03105, 0.03105, 0.03090169, 0.03090169, 9.37167224], [1516449660000, 0.03090176, 0.03090176, 0.03090176, 0.03090176, 4.64], [1516449720000, 0.03090217, 0.03119982, 0.03090217, 0.03090295, 2.79369337], [1516449780000, 0.0311998, 0.0311998, 0.03119975, 0.03119975, 0.33775798], [1516449840000, 0.03119972, 0.03119972, 0.03097013, 0.03119971, 2.0355], [1516449900000, 0.03119964, 0.03119964, 0.03099, 0.03099, 0.19771476], [1516449960000, 0.03099001, 0.03099001, 0.03099, 0.03099001, 13.72690313], [1516450020000, 0.03099001, 0.03099001, 0.03098999, 0.03098999, 0.12443684], [1516450080000, 0.03098025, 0.03143672, 0.03098025, 0.03098025, 57.94820168], [1516450140000, 0.03109957, 0.03109957, 0.03109957, 0.03109957, 0.6607717], [1516450200000, 0.03109939, 0.03109939, 0.03095, 0.03095, 0.76360177], [1516450260000, 0.03095, 0.0310993, 0.03085268, 0.03085268, 13.42703897], [1516450320000, 0.03109925, 0.03109925, 0.03085268, 0.03085282, 9.88543146], [1516450380000, 0.03085317, 0.03085317, 0.03080001, 0.030801, 7.70998589], [1516450440000, 0.030801, 0.03108877, 0.03076824, 0.03076824, 10.04066474], [1516450500000, 0.03076824, 0.03108817, 0.03076824, 0.03076826, 0.89874528], [1516450560000, 0.03107058, 0.03107058, 0.03076826, 0.03076826, 0.91298098], [1516450620000, 0.03076826, 0.0307683, 0.03076821, 0.0307683, 5.22723499], [1516450800000, 0.03076821, 0.03103904, 0.03076821, 0.03103904, 0.70072727], [1516450860000, 0.03076821, 0.03101977, 0.03076821, 0.03099975, 0.39920022], [1516450920000, 0.03099965, 0.03099965, 0.03099897, 0.03099897, 0.12206835], [1516450980000, 0.03099882, 0.03099882, 0.03076821, 0.03076821, 0.50081372], [1516451040000, 0.03076824, 0.03099782, 0.03076821, 0.03099735, 5.98811629], [1516451100000, 0.03099722, 0.03099723, 0.03076843, 0.03099641, 1.49295191], [1516451160000, 0.03076867, 0.03109118, 0.03076864, 0.03099868, 11.23712474], [1516451220000, 0.03080008, 0.03080008, 0.03080008, 0.03080008, 1.34181016], [1516451280000, 0.03106614, 0.0311, 0.03093029, 0.0311, 8.84844401], [1516451340000, 0.0311, 0.0311, 0.03096007, 0.03096022, 4.24033136], [1516451400000, 0.03096032, 0.0311, 0.03096032, 0.0311, 11.18285998], [1516451460000, 0.0311, 0.0311, 0.03096139, 0.03096144, 1.40152794], [1516451520000, 0.0311, 0.0311, 0.03109972, 0.03109999, 0.81073724], [1516451580000, 0.03109999, 0.03115, 0.03100296, 0.03100316, 12.6678605], [1516451640000, 0.031146, 0.03134998, 0.031146, 0.03134998, 2.05753911], [1516451700000, 0.03134977, 0.03134977, 0.03115, 0.03134958, 2.54129083], [1516451760000, 0.03115, 0.0312553, 0.03100403, 0.0312553, 1.09640575], [1516451820000, 0.03125528, 0.03125528, 0.03125528, 0.03125528, 1.49383545], [1516451880000, 0.03125528, 0.03125528, 0.03100001, 0.03100019, 6.01981485], [1516452000000, 0.03125525, 0.03135, 0.03100111, 0.03135, 1.04015067], [1516452060000, 0.03129827, 0.03129827, 0.03129827, 0.03129827, 1.29814385], [1516452180000, 0.03129596, 0.03129596, 0.03100123, 0.03100123, 2.18643921], [1516452240000, 0.03129502, 0.03129502, 0.03129502, 0.03129502, 14.66198693], [1516452300000, 0.03129451, 0.03129451, 0.03129359, 0.03129359, 4.64235803], [1516452360000, 0.03129353, 0.03129353, 0.03100012, 0.03100012, 0.87663595], [1516452480000, 0.03100133, 0.03129086, 0.03100059, 0.03129086, 1.09914246], [1516452540000, 0.03129073, 0.03129073, 0.03129065, 0.03129065, 0.38026376], [1516452600000, 0.03129054, 0.03149586, 0.03100331, 0.03130945, 38.88571399], [1516452660000, 0.03101654, 0.0311, 0.03101654, 0.03105047, 7.2978997], [1516452720000, 0.03130944, 0.03130944, 0.03130944, 0.03130944, 0.26702474], [1516452780000, 0.03144466, 0.03144479, 0.03130944, 0.03130949, 12.01552457], [1516452840000, 0.0313095, 0.03130952, 0.0313095, 0.03130952, 0.43483986], [1516452900000, 0.03143458, 0.03149797, 0.03130953, 0.03149797, 9.18122981], [1516452960000, 0.03144495, 0.03149796, 0.03130953, 0.03130953, 1.78667253], [1516453080000, 0.0314978, 0.0314978, 0.0314965, 0.0314965, 0.12946586], [1516453140000, 0.03149649, 0.03149649, 0.03149649, 0.03149649, 0.02], [1516453200000, 0.03149649, 0.03149797, 0.03138634, 0.0314979, 2.33493802], [1516453260000, 0.03133594, 0.0314979, 0.0313102, 0.0313102, 1.78528897], [1516453320000, 0.0314972, 0.0314979, 0.03131021, 0.0314979, 1.71181916], [1516453380000, 0.0314978, 0.0314978, 0.0314978, 0.0314978, 0.05166254], [1516453440000, 0.03149774, 0.03149774, 0.0314975, 0.03149774, 2.40987855], [1516453500000, 0.0313106, 0.03159239, 0.0313106, 0.03159239, 34.59542459], [1516453560000, 0.03159239, 0.03165, 0.0314, 0.03165, 6.4207942], [1516453620000, 0.03140005, 0.03165401, 0.03140005, 0.03140075, 6.38135735], [1516453680000, 0.03165401, 0.03175902, 0.03142131, 0.0317, 46.16989785], [1516453740000, 0.0317, 0.03192126, 0.0317, 0.03192126, 60.27996831], [1516453800000, 0.03192126, 0.0319725, 0.03170015, 0.03170022, 33.52379244], [1516453860000, 0.03197245, 0.03197247, 0.03170023, 0.03170166, 71.78608907], [1516453920000, 0.03170246, 0.031969, 0.03170246, 0.03196886, 5.78396976], [1516453980000, 0.031969, 0.031969, 0.03176498, 0.0317951, 22.28600447], [1516454040000, 0.031969, 0.032, 0.03179513, 0.031995, 139.27882703], [1516454100000, 0.032, 0.032, 0.031995, 0.032, 116.51280212], [1516454160000, 0.032, 0.032142, 0.03192001, 0.03192059, 82.38079497], [1516454220000, 0.03192081, 0.03214184, 0.03192081, 0.03214184, 1.67994033], [1516454280000, 0.03192156, 0.03214184, 0.03192156, 0.0321418, 5.23772758], [1516454340000, 0.03194155, 0.03194188, 0.03194155, 0.03194188, 6.90787265], [1516454400000, 0.03194188, 0.03214184, 0.03194188, 0.0319419, 11.43569768], [1516454460000, 0.0319419, 0.03214183, 0.0319419, 0.0319419, 1.9292717], [1516454520000, 0.0319419, 0.03214182, 0.03194187, 0.03194191, 21.81516542], [1516454580000, 0.03194191, 0.03194192, 0.03194187, 0.03194187, 75.8627415], [1516454640000, 0.03194187, 0.03198, 0.03194187, 0.03194187, 30.43945039], [1516454700000, 0.03194187, 0.03214184, 0.03192096, 0.03192096, 55.01541474], [1516454760000, 0.03192096, 0.03192096, 0.03183047, 0.03183055, 12.50771272], [1516454820000, 0.03191838, 0.03214184, 0.03183068, 0.0321418, 39.80111325], [1516454880000, 0.03185582, 0.03198109, 0.03185582, 0.03198109, 45.47951857], [1516454940000, 0.03198109, 0.03214146, 0.03198109, 0.03214146, 0.70575612], [1516455000000, 0.032, 0.0321418, 0.032, 0.03214177, 4.3945246], [1516455060000, 0.03214176, 0.03214176, 0.03198109, 0.03198109, 0.82467853], [1516455120000, 0.03198109, 0.03198109, 0.03189165, 0.03198109, 0.64306298], [1516455180000, 0.03198109, 0.03209999, 0.03198109, 0.03209999, 3.18726396], [1516455240000, 0.03209999, 0.03213179, 0.03198111, 0.03206413, 2.22288922], [1516455300000, 0.03198109, 0.03214179, 0.03198109, 0.03206413, 11.5778748], [1516455360000, 0.03206413, 0.03238308, 0.03206413, 0.03206413, 173.72224239], [1516455420000, 0.03206413, 0.03206413, 0.03198113, 0.03198113, 5.91069165], [1516455480000, 0.03198113, 0.03214175, 0.03198109, 0.03214175, 19.13518541], [1516455540000, 0.03200011, 0.0321417, 0.03198113, 0.03214164, 69.75037962], [1516455600000, 0.0321416, 0.0321416, 0.03188519, 0.03194896, 52.8181773], [1516455660000, 0.03188519, 0.03200028, 0.0318, 0.0318, 20.45215148], [1516455720000, 0.03179511, 0.0318, 0.0317, 0.0318, 9.11642589], [1516455780000, 0.0317, 0.03189539, 0.03165, 0.03165, 59.65917012], [1516455840000, 0.03165, 0.03165, 0.03145023, 0.03145023, 3.1869843], [1516455900000, 0.03145023, 0.03179994, 0.03145022, 0.03179389, 11.09739372], [1516455960000, 0.03145026, 0.03145026, 0.03145022, 0.03145026, 10.46781247], [1516456020000, 0.0314503, 0.03174954, 0.03144999, 0.03174954, 5.40603732], [1516456080000, 0.03145, 0.03174874, 0.03125, 0.03145, 7.79240835], [1516456140000, 0.03144999, 0.03144999, 0.03125008, 0.03144998, 22.79233997], [1516456200000, 0.03144998, 0.03145, 0.03144996, 0.03144996, 36.72190166], [1516456260000, 0.03144993, 0.03144996, 0.03114425, 0.03144996, 35.55894246], [1516456320000, 0.03144997, 0.03159915, 0.03144997, 0.03159915, 90.35815582], [1516456380000, 0.0314, 0.0315991, 0.03123211, 0.03123211, 3.40625903], [1516456440000, 0.03154443, 0.03159865, 0.03123531, 0.03159703, 6.73447528], [1516456500000, 0.0314598, 0.0314598, 0.03127692, 0.03127707, 1.88738603], [1516456560000, 0.03127744, 0.03159677, 0.03127744, 0.03159673, 10.39329463], [1516456620000, 0.0315967, 0.0315967, 0.03133281, 0.03133281, 0.1807117], [1516456680000, 0.0315965, 0.03159654, 0.03142, 0.03142, 10.57455843], [1516456740000, 0.03159651, 0.03159652, 0.03142005, 0.03159652, 7.72838711], [1516456800000, 0.03142003, 0.03159652, 0.03135017, 0.03159652, 0.63157945], [1516456860000, 0.03159651, 0.03175749, 0.0314, 0.0314, 33.73121606], [1516456920000, 0.03159689, 0.03177798, 0.03159689, 0.03177779, 2.42645889], [1516456980000, 0.03177776, 0.03177776, 0.03140016, 0.03176172, 7.38695774], [1516457040000, 0.03170997, 0.03170997, 0.03159989, 0.03159989, 0.08332327], [1516457100000, 0.03159989, 0.03177776, 0.03159984, 0.03159984, 5.19282916], [1516457160000, 0.03159984, 0.03159989, 0.03145139, 0.03145139, 7.02163121], [1516457220000, 0.03159984, 0.03159989, 0.03159983, 0.03159989, 1.99196142], [1516457280000, 0.03159989, 0.03159989, 0.03109999, 0.03159959, 2000.66713337], [1516457340000, 0.03159987, 0.03159987, 0.03113264, 0.03113276, 1.0309624], [1516457400000, 0.03159892, 0.03159894, 0.03155, 0.03159835, 26.89360903], [1516457460000, 0.03149987, 0.03149987, 0.03145, 0.03149965, 5.9259571], [1516457520000, 0.0314, 0.03149931, 0.03113562, 0.03149894, 5.07273674], [1516457580000, 0.03115, 0.03115, 0.03115, 0.03115, 2.94335472], [1516457640000, 0.03125871, 0.03143378, 0.03115, 0.03115001, 30.73103371], [1516457700000, 0.03141509, 0.0314172, 0.03113264, 0.0314171, 17.32227434], [1516457760000, 0.03113264, 0.03141701, 0.03112224, 0.03141661, 23.06842749], [1516457820000, 0.0311229, 0.03140995, 0.0311229, 0.03140991, 4.21831767], [1516457880000, 0.03140981, 0.03140996, 0.03112306, 0.03140996, 6.37380805], [1516457940000, 0.03140993, 0.03140996, 0.03112309, 0.03140973, 23.00223752], [1516458000000, 0.03140973, 0.03140973, 0.03132332, 0.03135, 1.16056633], [1516458060000, 0.03135, 0.03140972, 0.03135, 0.03140972, 0.33532087], [1516458120000, 0.03140972, 0.03140972, 0.03113001, 0.03113034, 3.48241973], [1516458180000, 0.03138992, 0.03138992, 0.03138976, 0.03138976, 3.9333522], [1516458240000, 0.03138975, 0.03138975, 0.0311, 0.0311, 21.71399132], [1516458300000, 0.03138928, 0.03138928, 0.03110001, 0.03110001, 2.47630374], [1516458360000, 0.03110001, 0.03124475, 0.03110001, 0.03124475, 6.50471397], [1516458420000, 0.03126638, 0.03129765, 0.03124475, 0.03129765, 62.80188874], [1516458480000, 0.03137738, 0.03137738, 0.03110001, 0.03137733, 1.22561375], [1516458540000, 0.03137733, 0.03141, 0.03137733, 0.03141, 20.61276958], [1516458600000, 0.03141, 0.03143369, 0.03123032, 0.0314336, 7.49457375], [1516458660000, 0.0314336, 0.03143369, 0.03130025, 0.03130067, 13.04391423], [1516458720000, 0.03133804, 0.03143369, 0.03133804, 0.03143369, 22.15313598], [1516458780000, 0.03143369, 0.03158894, 0.03133847, 0.03158891, 4.02903491], [1516458840000, 0.03158889, 0.0316, 0.03133872, 0.0316, 35.53493538], [1516458900000, 0.03159033, 0.03165, 0.03159033, 0.03165, 6.82874429], [1516458960000, 0.03165, 0.0317, 0.0316, 0.0316, 2.37976635], [1516459020000, 0.0316, 0.03174618, 0.0316, 0.03174618, 3.95359276], [1516459080000, 0.03150012, 0.03189266, 0.03150012, 0.03174999, 56.26534908], [1516459140000, 0.03174999, 0.03189002, 0.03152669, 0.03188563, 26.15359263], [1516459200000, 0.0318, 0.0318, 0.03155109, 0.03155109, 2.59004473], [1516459260000, 0.03155155, 0.03156174, 0.03155155, 0.03156166, 4.82861145], [1516459320000, 0.031797, 0.031856, 0.03156178, 0.0316, 16.75849439], [1516459380000, 0.03156192, 0.03185442, 0.03156188, 0.03185435, 17.31358338], [1516459440000, 0.03185424, 0.03185424, 0.03185405, 0.03185405, 34.10278102], [1516459500000, 0.03185387, 0.03185387, 0.03160014, 0.03160067, 9.31759356], [1516459560000, 0.03160095, 0.03185397, 0.03160095, 0.03163259, 5.92505419], [1516459620000, 0.03185399, 0.03185399, 0.03163262, 0.03163262, 0.1802588], [1516459680000, 0.03165, 0.03185396, 0.03165, 0.03185382, 6.30772825], [1516459740000, 0.03185355, 0.03185355, 0.03163264, 0.03163264, 17.25086155], [1516459860000, 0.03175311, 0.03175311, 0.0316326, 0.03175311, 99.61817679], [1516459920000, 0.03184718, 0.03184993, 0.03163264, 0.03184993, 8.75393175], [1516459980000, 0.03184993, 0.03184993, 0.03163264, 0.0317848, 3.4557228], [1516460040000, 0.0317848, 0.03178484, 0.031784, 0.03178484, 6.46871629], [1516460100000, 0.03163264, 0.03178484, 0.0316005, 0.03160051, 10.67566804], [1516460160000, 0.0316005, 0.03183802, 0.0316005, 0.03183802, 15.80356735], [1516460220000, 0.03160051, 0.031608, 0.03156166, 0.031608, 11.71227087], [1516460280000, 0.03181477, 0.03181477, 0.0315, 0.03180979, 7.01054189], [1516460340000, 0.03156176, 0.03179993, 0.03156176, 0.03156182, 12.16905113], [1516460400000, 0.03169995, 0.03178693, 0.0316999, 0.03178693, 77.62745741], [1516460460000, 0.03167, 0.03169994, 0.03152725, 0.03152725, 13.55710868], [1516460520000, 0.03153771, 0.03180994, 0.03153771, 0.03180994, 5.28395446], [1516460580000, 0.03153887, 0.03153887, 0.03150003, 0.03153785, 8.52278589], [1516460640000, 0.03153785, 0.03180932, 0.03148217, 0.03180932, 7.23953011], [1516460700000, 0.03180927, 0.03180927, 0.0314822, 0.0314822, 0.50190863], [1516460760000, 0.0314822, 0.0314822, 0.0314822, 0.0314822, 0.51226396], [1516460820000, 0.03145751, 0.0314822, 0.03145751, 0.03145751, 6.69938023], [1516460880000, 0.03167352, 0.03167352, 0.03167349, 0.03167349, 1.15278601], [1516460940000, 0.03167344, 0.03167349, 0.0315, 0.0315, 89.25602564], [1516461000000, 0.0315, 0.03167327, 0.0315, 0.03150001, 10.71236615], [1516461060000, 0.03150001, 0.03150001, 0.0315, 0.0315, 1.78202981], [1516461120000, 0.03167307, 0.03167307, 0.03127119, 0.03127119, 11.62590729], [1516461180000, 0.03127178, 0.0316709, 0.03127178, 0.03160198, 9.54076381], [1516461240000, 0.03160182, 0.03160182, 0.0314, 0.0314, 2.91566992], [1516461300000, 0.03159968, 0.03159968, 0.0314, 0.03159938, 4.06085804], [1516461360000, 0.03159884, 0.03159884, 0.03159884, 0.03159884, 0.28528414], [1516461420000, 0.03159832, 0.03159832, 0.03159793, 0.03159793, 1.03172637], [1516461480000, 0.03149976, 0.03159751, 0.0313, 0.03158276, 2.65072918], [1516461540000, 0.03158262, 0.03158265, 0.03128828, 0.03128831, 12.16943635], [1516461600000, 0.03129831, 0.03157991, 0.03129831, 0.03157965, 6.00628371], [1516461660000, 0.03157965, 0.0318, 0.0313187, 0.0313187, 513.44588291], [1516461720000, 0.03131911, 0.03179964, 0.03131911, 0.03145, 1.4224899], [1516461780000, 0.03145, 0.03145, 0.03140238, 0.03140268, 3.39338923], [1516461840000, 0.03144999, 0.0315, 0.03140276, 0.0315, 1.75351535], [1516461900000, 0.03146659, 0.0317498, 0.0314499, 0.03174952, 33.27472967], [1516461960000, 0.03174863, 0.03174863, 0.03146675, 0.03146698, 11.87841024], [1516462020000, 0.03169997, 0.03169997, 0.03146669, 0.03146669, 5.30246138], [1516462080000, 0.03146677, 0.03169997, 0.03146677, 0.03169997, 0.86500154], [1516462140000, 0.03159565, 0.03159565, 0.03159565, 0.03159565, 0.25], [1516462200000, 0.03146677, 0.03159552, 0.03146677, 0.03159538, 11.78298265], [1516462260000, 0.03149751, 0.03159538, 0.03146, 0.03146, 9.84544841], [1516462320000, 0.03146, 0.0315, 0.03146, 0.0315, 8.83985911], [1516462380000, 0.03146, 0.0315, 0.03136, 0.03136, 6.95685392], [1516462440000, 0.031495, 0.031495, 0.031495, 0.031495, 0.07031284], [1516462500000, 0.03149499, 0.0315, 0.03128787, 0.03128787, 4.20440788], [1516462560000, 0.03128787, 0.03128787, 0.031275, 0.03128787, 1.13615442], [1516462620000, 0.03128787, 0.03128787, 0.031275, 0.031275, 9.11935479], [1516462680000, 0.03127501, 0.03128787, 0.03127501, 0.03128787, 26.58054969], [1516462740000, 0.03128786, 0.03128787, 0.03128786, 0.03128787, 5.3318847], [1516462800000, 0.03128787, 0.03128787, 0.03128787, 0.03128787, 2.30776171], [1516462860000, 0.03128787, 0.03128787, 0.03127501, 0.03127501, 14.58694138], [1516462920000, 0.03127501, 0.03127501, 0.031275, 0.031275, 3.34067256], [1516462980000, 0.03127499, 0.03127501, 0.03125, 0.03125, 12.91153683], [1516463040000, 0.03126, 0.03126, 0.0312, 0.03125, 1.69057537], [1516463100000, 0.0312, 0.03126, 0.03100064, 0.03115515, 39.83723611], [1516463160000, 0.03115515, 0.03126, 0.03115511, 0.03115511, 2.32218839], [1516463220000, 0.03115511, 0.03125999, 0.03115511, 0.03125999, 0.5397594], [1516463280000, 0.03115511, 0.03125989, 0.03100067, 0.0312598, 39.63454476], [1516463340000, 0.03114765, 0.03125989, 0.03100093, 0.03125989, 25.49504941], [1516463400000, 0.03125989, 0.03125989, 0.03100213, 0.03125989, 2.97089957], [1516463460000, 0.03125989, 0.03125989, 0.03100225, 0.03125989, 4.54676205], [1516463520000, 0.03125989, 0.03125989, 0.03125989, 0.03125989, 0.14750156], [1516463580000, 0.03125989, 0.03125989, 0.03125989, 0.03125989, 1.94540898], [1516463640000, 0.03125989, 0.03125989, 0.03125989, 0.03125989, 6.30291149], [1516463700000, 0.03125988, 0.03125989, 0.03100692, 0.03125989, 14.26629061], [1516463760000, 0.03125989, 0.03125989, 0.03125989, 0.03125989, 18.83714476], [1516463820000, 0.03125989, 0.03126, 0.03125989, 0.03126, 1.99591187], [1516463880000, 0.031275, 0.03127501, 0.031275, 0.03127501, 3.27287336], [1516463940000, 0.031275, 0.03127501, 0.03127499, 0.03127501, 0.57255394], [1516464000000, 0.03127501, 0.03127501, 0.031275, 0.03127501, 0.81501823], [1516464060000, 0.03127501, 0.03127501, 0.03127501, 0.03127501, 10.5328523], [1516464120000, 0.03131228, 0.03131228, 0.03127501, 0.03127501, 120.41259562], [1516464180000, 0.03131225, 0.03131226, 0.03131225, 0.03131225, 0.48601125], [1516464300000, 0.03131, 0.03131, 0.03131, 0.03131, 0.95816031], [1516464360000, 0.03127501, 0.03127501, 0.031275, 0.031275, 34.9755471], [1516464420000, 0.031275, 0.031275, 0.03125989, 0.031275, 17.11821527], [1516464480000, 0.031275, 0.031275, 0.03113356, 0.03127497, 7.89841865], [1516464600000, 0.03127497, 0.031275, 0.03113356, 0.03113356, 12.28552571], [1516464660000, 0.03127494, 0.03127494, 0.03127494, 0.03127494, 0.06394896], [1516464720000, 0.03127494, 0.03127501, 0.03127494, 0.03127501, 7.59870094], [1516464780000, 0.03127501, 0.03127501, 0.03127501, 0.03127501, 1.40351639], [1516464840000, 0.03127501, 0.03127501, 0.03103004, 0.03103006, 2.25531752], [1516464900000, 0.03127497, 0.031275, 0.03103051, 0.03103076, 2.29177958], [1516464960000, 0.031275, 0.031275, 0.03103172, 0.03103172, 0.4700576], [1516465020000, 0.03127496, 0.031275, 0.03127496, 0.031275, 14.5553771], [1516465080000, 0.031275, 0.031275, 0.031275, 0.031275, 0.31894484], [1516465140000, 0.03127499, 0.031275, 0.03127499, 0.031275, 5.31156836], [1516465200000, 0.031275, 0.031275, 0.03127499, 0.031275, 2.79462687], [1516465260000, 0.031275, 0.03127501, 0.03127499, 0.03127501, 11.06967216], [1516465320000, 0.03127501, 0.03127501, 0.03127, 0.03127, 51.52251293], [1516465380000, 0.03127003, 0.03127501, 0.03127, 0.03127501, 4.05193402], [1516465440000, 0.03127501, 0.03127501, 0.03127501, 0.03127501, 0.03025795], [1516465500000, 0.031275, 0.03131, 0.031275, 0.03131, 54.11098732], [1516465560000, 0.03131, 0.03131, 0.03130999, 0.03130999, 6.99755396], [1516465620000, 0.03131, 0.03131, 0.03130999, 0.03130999, 11.73820806], [1516465680000, 0.03130999, 0.03131, 0.03130999, 0.03130999, 1.02125331], [1516465740000, 0.03130999, 0.03131, 0.03130999, 0.03130999, 3.34979727], [1516465800000, 0.03130999, 0.03131, 0.03130999, 0.03131, 3.01784618], [1516465860000, 0.03130999, 0.0313122, 0.03130999, 0.03131, 4.41508961], [1516465920000, 0.0313122, 0.03131228, 0.0313122, 0.03131228, 0.9612771], [1516465980000, 0.03131228, 0.03131228, 0.0313122, 0.03131228, 2.64843863], [1516466040000, 0.03131228, 0.03131228, 0.0313122, 0.0313122, 1.08732258], [1516466100000, 0.03131228, 0.03139999, 0.0313122, 0.03134399, 2.87598077], [1516466160000, 0.03134399, 0.03134399, 0.0313122, 0.0313122, 1.09333584], [1516466220000, 0.0313122, 0.03134399, 0.0313122, 0.0313122, 4.85508786], [1516466280000, 0.0313122, 0.0313122, 0.0313122, 0.0313122, 0.5643289], [1516466340000, 0.0313122, 0.0314, 0.0313122, 0.0314, 8.58740433], [1516466400000, 0.03135609, 0.03139999, 0.0313122, 0.03139999, 7.21235675], [1516466460000, 0.03139997, 0.03139997, 0.0313122, 0.03139997, 0.95282697], [1516466580000, 0.0313122, 0.03139999, 0.0313122, 0.03139999, 9.03316829], [1516466640000, 0.03139999, 0.03139999, 0.0313222, 0.0313222, 6.05877111], [1516466700000, 0.0313222, 0.03139999, 0.0313122, 0.031317, 10.30308647], [1516466760000, 0.03139999, 0.03139999, 0.03130999, 0.03130999, 12.59675112], [1516466820000, 0.03130999, 0.03138947, 0.03130999, 0.03130999, 100.46264223], [1516466880000, 0.03138945, 0.03138945, 0.03127, 0.03127, 72.78879216], [1516466940000, 0.03127, 0.03127, 0.03100296, 0.03100296, 16.18146798], [1516467000000, 0.03111863, 0.03127, 0.03100296, 0.03126975, 153.08647706], [1516467060000, 0.03101979, 0.03126956, 0.03101979, 0.03126956, 0.04664468], [1516467120000, 0.03126908, 0.03126908, 0.03126908, 0.03126908, 1.18851728], [1516467180000, 0.03126891, 0.03126892, 0.03126891, 0.03126892, 1.0], [1516467240000, 0.03126878, 0.03126878, 0.03101979, 0.03101979, 7.28074419], [1516467300000, 0.03126841, 0.03126841, 0.03102585, 0.03126804, 14.20667079], [1516467360000, 0.03126761, 0.03126761, 0.03126753, 0.03126753, 0.07193798], [1516467420000, 0.03126731, 0.03126731, 0.03126731, 0.03126731, 4.87366867], [1516467540000, 0.03126676, 0.03126677, 0.0311522, 0.0311522, 0.18418485], [1516467600000, 0.03115225, 0.03126651, 0.03114429, 0.03126651, 3.02463229], [1516467660000, 0.03126637, 0.0312664, 0.03126637, 0.0312664, 2.70553099], [1516467720000, 0.03126635, 0.03126635, 0.03101985, 0.03101985, 0.30085762], [1516467780000, 0.03102005, 0.03102005, 0.03102005, 0.03102005, 0.09668174], [1516467840000, 0.0312, 0.0312, 0.0312, 0.0312, 0.11888442], [1516467900000, 0.0312, 0.0312, 0.0312, 0.0312, 1.79901947], [1516467960000, 0.0312, 0.0312, 0.0312, 0.0312, 0.83763279], [1516468020000, 0.0312, 0.0312, 0.03119999, 0.03119999, 0.05434391], [1516468080000, 0.03119999, 0.03119999, 0.03102184, 0.03119999, 0.60251014], [1516468140000, 0.031142, 0.03119999, 0.03102259, 0.03119999, 8.96310995], [1516468200000, 0.03102275, 0.03126677, 0.03102275, 0.03126677, 1.74097154], [1516468260000, 0.03124993, 0.03124993, 0.03124993, 0.03124993, 0.03200001], [1516468380000, 0.03122998, 0.03122998, 0.03121, 0.03121, 58.66943063], [1516468500000, 0.03102343, 0.03121, 0.031023, 0.03121, 4.14807599], [1516468560000, 0.031023, 0.031023, 0.03100012, 0.03100012, 10.20160083], [1516468620000, 0.03100012, 0.03120992, 0.03100012, 0.031002, 31.80064749], [1516468680000, 0.03121, 0.03121, 0.031002, 0.031002, 1.38215969], [1516468740000, 0.03120982, 0.03120982, 0.031002, 0.031002, 0.3891516], [1516468800000, 0.03120921, 0.03120921, 0.0312092, 0.0312092, 1.79407665], [1516468860000, 0.0311, 0.0311, 0.0311, 0.0311, 0.3215434], [1516468920000, 0.0311, 0.0311, 0.031, 0.0311, 8.518793], [1516468980000, 0.03109991, 0.0311, 0.031002, 0.031002, 15.30945981], [1516469040000, 0.0311, 0.0311, 0.03109992, 0.0311, 0.45699743], [1516469100000, 0.0311, 0.0311, 0.03100002, 0.0311, 1.8950818], [1516469160000, 0.03109992, 0.03109992, 0.03109992, 0.03109992, 1.79461852], [1516469220000, 0.031003, 0.031042, 0.031003, 0.031042, 3.50385374], [1516469280000, 0.031003, 0.031042, 0.031, 0.031003, 4.77437275], [1516469340000, 0.031042, 0.031042, 0.031003, 0.031042, 2.43729407], [1516469400000, 0.031042, 0.031042, 0.031042, 0.031042, 0.55], [1516469460000, 0.03109999, 0.0311, 0.03109999, 0.0311, 17.04523416], [1516469520000, 0.0311, 0.0311, 0.031042, 0.031042, 1.85273956], [1516469580000, 0.031042, 0.0311, 0.031042, 0.0311, 11.20555561], [1516469640000, 0.03100001, 0.03100001, 0.03100001, 0.03100001, 0.69603145], [1516469700000, 0.03109, 0.0311, 0.03100001, 0.03100002, 3.01830395], [1516469760000, 0.03100009, 0.0311, 0.03100009, 0.0311, 0.30734002], [1516469820000, 0.03100023, 0.03100023, 0.03100023, 0.03100023, 0.64878203], [1516469880000, 0.03100023, 0.0311, 0.031, 0.0311, 22.03899588], [1516469940000, 0.0311, 0.0311, 0.0311, 0.0311, 4.48719689], [1516470000000, 0.031, 0.0311, 0.031, 0.0311, 0.44210198], [1516470060000, 0.0311, 0.0311, 0.0311, 0.0311, 1.40830677], [1516470120000, 0.0311, 0.0311, 0.0311, 0.0311, 0.07112964], [1516470180000, 0.0311, 0.0311, 0.0311, 0.0311, 36.1174244], [1516470240000, 0.0311, 0.0311, 0.03100002, 0.0311, 36.14129394], [1516470300000, 0.0311, 0.0311, 0.0311, 0.0311, 2.68261341], [1516470360000, 0.031005, 0.0311, 0.031005, 0.03100504, 5.97851346], [1516470420000, 0.0311, 0.0311, 0.0311, 0.0311, 5.83555873], [1516470480000, 0.0311, 0.0311, 0.03100506, 0.0311, 8.63753035], [1516470540000, 0.03100513, 0.0311, 0.03100513, 0.0311, 3.94212345], [1516470600000, 0.0311, 0.0311, 0.03100509, 0.03100509, 3.46727194], [1516470660000, 0.03100509, 0.0311, 0.03100509, 0.0311, 5.8079818], [1516470720000, 0.0311, 0.0311, 0.0311, 0.0311, 16.71829958], [1516470780000, 0.0311, 0.0311, 0.0311, 0.0311, 0.3190207], [1516470840000, 0.03100518, 0.03100518, 0.03100518, 0.03100518, 5.1984817], [1516470900000, 0.03100518, 0.03109999, 0.03100518, 0.03100518, 2.32699056], [1516470960000, 0.03109997, 0.03109997, 0.03109993, 0.03109993, 14.44000258], [1516471020000, 0.0310999, 0.0310999, 0.0310999, 0.0310999, 0.36073955], [1516471080000, 0.03100518, 0.03100518, 0.03100518, 0.03100518, 5.60591688], [1516471140000, 0.03100518, 0.03100518, 0.031005, 0.031005, 3.39035117], [1516471200000, 0.031005, 0.03109989, 0.031005, 0.03109989, 0.61551303], [1516471320000, 0.03109988, 0.03109988, 0.03109987, 0.03109987, 0.42504475], [1516471380000, 0.03109987, 0.03109987, 0.03109987, 0.03109987, 0.11187273], [1516471440000, 0.031005, 0.031005, 0.031005, 0.031005, 1.28178101], [1516471500000, 0.03109986, 0.03109988, 0.03109986, 0.03109988, 6.73982559], [1516471560000, 0.03109988, 0.0310999, 0.03109988, 0.0310999, 15.57422718], [1516471620000, 0.03109986, 0.0310999, 0.031005, 0.0310999, 3.84291308], [1516471680000, 0.0310999, 0.0310999, 0.03109988, 0.03109988, 0.24377253], [1516471740000, 0.03109989, 0.03109989, 0.031007, 0.031007, 0.37946872], [1516471800000, 0.031007, 0.03109988, 0.031, 0.031, 63.78132599], [1516471860000, 0.031, 0.031, 0.03096229, 0.03096229, 2.857432], [1516471920000, 0.03096229, 0.03099999, 0.03096229, 0.03099999, 2.93802285], [1516471980000, 0.03099999, 0.03099999, 0.03096229, 0.03099999, 4.11411315], [1516472040000, 0.03099998, 0.03099998, 0.03095, 0.03095, 3.79352357], [1516472100000, 0.03092, 0.03099999, 0.03092, 0.03095, 3.43932521], [1516472160000, 0.03095, 0.03095, 0.03095, 0.03095, 0.16155088], [1516472220000, 0.03095, 0.03095, 0.03095, 0.03095, 0.35864296], [1516472280000, 0.0309203, 0.03095, 0.03092, 0.03095, 3.450546], [1516472340000, 0.03095, 0.03095, 0.0309, 0.0309, 13.62380293], [1516472400000, 0.030883, 0.03092, 0.030883, 0.030883, 4.97254473], [1516472460000, 0.030883, 0.03092, 0.030883, 0.030883, 1.15139246], [1516472520000, 0.030883, 0.030883, 0.03085148, 0.03085148, 2.4465774], [1516472580000, 0.030883, 0.030883, 0.03082222, 0.03088216, 17.89866865], [1516472640000, 0.03082222, 0.03082222, 0.0308222, 0.0308222, 2.90560767], [1516472700000, 0.03082222, 0.03082222, 0.0308, 0.0308, 2.00315095], [1516472760000, 0.0308, 0.0308, 0.03077344, 0.03077344, 2.94955179], [1516472820000, 0.03077344, 0.03077344, 0.03077344, 0.03077344, 1.93115544], [1516472880000, 0.0307734, 0.0307734, 0.03075, 0.0307513, 17.12521941], [1516472940000, 0.0307513, 0.0307513, 0.03075, 0.03075, 0.55886593], [1516473000000, 0.03075, 0.03075131, 0.03075, 0.03075, 19.42132858], [1516473060000, 0.03075, 0.03075131, 0.0307414, 0.03075131, 0.98798263], [1516473120000, 0.03075131, 0.03075131, 0.0307513, 0.03075131, 24.58859745], [1516473180000, 0.03075131, 0.03075131, 0.0307513, 0.03075131, 16.16271723], [1516473240000, 0.03075131, 0.03075131, 0.03075131, 0.03075131, 68.71092735], [1516473300000, 0.0307513, 0.03075131, 0.0307513, 0.03075131, 7.69842585], [1516473360000, 0.03075131, 0.03075131, 0.0307513, 0.03075131, 2.29687356], [1516473420000, 0.03075131, 0.03075131, 0.03075131, 0.03075131, 2.79234495], [1516473480000, 0.03075131, 0.03075131, 0.03074133, 0.03075131, 71.08408125], [1516473540000, 0.03074133, 0.03075131, 0.03074133, 0.03075131, 3.08498074], [1516473600000, 0.0307413, 0.03075131, 0.0307413, 0.03075131, 4.31027209], [1516473660000, 0.0307413, 0.03075131, 0.03070973, 0.0307098, 39.50615305], [1516473720000, 0.03075131, 0.03075131, 0.03069293, 0.03069293, 21.15469371], [1516473780000, 0.0307, 0.0307, 0.03069293, 0.0307, 4.7930858], [1516473840000, 0.0307, 0.03075131, 0.03069293, 0.03075131, 7.21524427], [1516473900000, 0.03075131, 0.03075131, 0.0307, 0.03075131, 13.36191343], [1516473960000, 0.03072056, 0.03075131, 0.03072056, 0.03075131, 26.41243644], [1516474020000, 0.0307513, 0.0307513, 0.0307513, 0.0307513, 0.65037901], [1516474080000, 0.03072057, 0.03072057, 0.03072056, 0.03072057, 3.15943512], [1516474140000, 0.03072057, 0.0307513, 0.03072056, 0.0307513, 2.26530143], [1516474200000, 0.0307513, 0.03075131, 0.0307513, 0.03075131, 1.0004534], [1516474260000, 0.03075131, 0.03075131, 0.03069293, 0.03075131, 21.97425598], [1516474320000, 0.03075131, 0.03075131, 0.03075131, 0.03075131, 0.0718409], [1516474380000, 0.03075131, 0.03075131, 0.030693, 0.030693, 10.33242531], [1516474440000, 0.03075131, 0.03075131, 0.03075131, 0.03075131, 2.01691843], [1516474500000, 0.03075131, 0.03075131, 0.03075131, 0.03075131, 0.72215185], [1516474560000, 0.03075131, 0.03075131, 0.03075131, 0.03075131, 0.42901729], [1516474620000, 0.03075131, 0.03075131, 0.03075131, 0.03075131, 22.88445295], [1516474680000, 0.0307513, 0.0307513, 0.030693, 0.0307513, 3.78257387], [1516474740000, 0.030693, 0.0307513, 0.030693, 0.0307513, 1.37230361], [1516474800000, 0.030693, 0.030693, 0.030693, 0.030693, 30.21569485], [1516474860000, 0.030693, 0.0307513, 0.030693, 0.030693, 5.08139469], [1516474920000, 0.03069293, 0.030693, 0.03069293, 0.030693, 19.70728659], [1516474980000, 0.03069293, 0.03069293, 0.03068689, 0.03068692, 4.06892289], [1516475040000, 0.03068692, 0.03068692, 0.0306869, 0.03068692, 7.6606184], [1516475100000, 0.03068692, 0.03069293, 0.03068692, 0.03069293, 2.49650544], [1516475160000, 0.03069293, 0.03069293, 0.03069293, 0.03069293, 1.59573298], [1516475220000, 0.03069293, 0.03069293, 0.03068692, 0.03069293, 5.13412646], [1516475280000, 0.03069293, 0.030693, 0.03068695, 0.030693, 19.93585441], [1516475340000, 0.030693, 0.030693, 0.030693, 0.030693, 5.32184826], [1516475400000, 0.030693, 0.030693, 0.0306871, 0.0306871, 19.11194137], [1516475460000, 0.0306871, 0.0306871, 0.0306871, 0.0306871, 41.93040556], [1516475520000, 0.03068709, 0.03075131, 0.03068709, 0.03068713, 76.57570296], [1516475580000, 0.03068713, 0.03075131, 0.03068713, 0.03075131, 5.54924563], [1516475640000, 0.0307513, 0.03075131, 0.03074514, 0.03075131, 1.79228011], [1516475700000, 0.03075131, 0.03075131, 0.03074514, 0.03075131, 7.8459698], [1516475760000, 0.03075131, 0.03075131, 0.03075131, 0.03075131, 4.1848365], [1516475820000, 0.03075131, 0.03075131, 0.0306869, 0.0306869, 0.97327663], [1516475880000, 0.0306869, 0.0306869, 0.03065906, 0.03068687, 18.47129285], [1516475940000, 0.0307513, 0.0307513, 0.0307513, 0.0307513, 0.03379829], [1516476000000, 0.0307513, 0.03075131, 0.03068688, 0.03075131, 67.3344293], [1516476060000, 0.03075131, 0.03075131, 0.03075131, 0.03075131, 7.97127913], [1516476120000, 0.03075131, 0.03075131, 0.03075131, 0.03075131, 14.35595785], [1516476180000, 0.03075131, 0.03075131, 0.03075131, 0.03075131, 74.27050448], [1516476240000, 0.03075131, 0.03075131, 0.03068691, 0.03075131, 23.52220872], [1516476300000, 0.03075131, 0.03075131, 0.03068691, 0.03075131, 9.51718313], [1516476360000, 0.03075131, 0.03075131, 0.03068691, 0.03075131, 18.65198393], [1516476420000, 0.03075131, 0.03075131, 0.03068693, 0.03068693, 17.41968468], [1516476480000, 0.03075131, 0.03075131, 0.03075131, 0.03075131, 1.00400299], [1516476540000, 0.03075131, 0.03077777, 0.03075131, 0.03075131, 68.26118705], [1516476600000, 0.03075131, 0.03082222, 0.03071912, 0.03077777, 24.08798654], [1516476660000, 0.03077777, 0.03077777, 0.03068692, 0.03068692, 9.3663251], [1516476720000, 0.03077777, 0.03077777, 0.03068692, 0.03077777, 0.23674765], [1516476780000, 0.03077777, 0.03082222, 0.03068692, 0.03082222, 4.75974598], [1516476840000, 0.03082222, 0.03082222, 0.03075457, 0.03075457, 1.93565118], [1516476900000, 0.03082222, 0.03082222, 0.03068692, 0.03082222, 6.96087663], [1516476960000, 0.03082222, 0.03082222, 0.03068692, 0.03082222, 9.22520285], [1516477020000, 0.03082222, 0.03082222, 0.03082221, 0.03082221, 11.98190242], [1516477080000, 0.03082221, 0.03082222, 0.03068692, 0.03082222, 2.73396568], [1516477140000, 0.03082222, 0.0309, 0.03082222, 0.0309, 17.09530189], [1516477200000, 0.0308822, 0.0308822, 0.03082222, 0.03088208, 0.6043642], [1516477260000, 0.030882, 0.03088212, 0.030882, 0.03088212, 0.05363037], [1516477320000, 0.03083, 0.0308821, 0.03083, 0.03083001, 1.80679227], [1516477380000, 0.03083001, 0.03088185, 0.03082222, 0.03082222, 1.17013597], [1516477440000, 0.03082222, 0.03082222, 0.03065782, 0.03068687, 3.10127104], [1516477500000, 0.03088191, 0.0308821, 0.03069936, 0.03088202, 6.33418967], [1516477560000, 0.03085606, 0.0308821, 0.030666, 0.0308821, 3.69724336], [1516477620000, 0.0308821, 0.0308821, 0.0308821, 0.0308821, 13.3651235], [1516477680000, 0.0308821, 0.0308821, 0.03069072, 0.03069072, 8.11016142], [1516477740000, 0.03069072, 0.03074806, 0.03068845, 0.03069072, 1.55460968], [1516477800000, 0.03074806, 0.03087896, 0.03074806, 0.0307788, 2.51559794], [1516477860000, 0.0307788, 0.03095, 0.0307788, 0.03095, 19.97097364], [1516477920000, 0.03077879, 0.03077879, 0.03077879, 0.03077879, 0.09218888], [1516477980000, 0.03077879, 0.03077879, 0.03077879, 0.03077879, 0.5347026], [1516478040000, 0.03077879, 0.03077879, 0.03077879, 0.03077879, 0.75051682], [1516478100000, 0.03076, 0.03094821, 0.03076, 0.03077879, 3.52098677], [1516478160000, 0.03077879, 0.0307788, 0.03069076, 0.0307788, 1.94148471], [1516478220000, 0.0307788, 0.0307788, 0.0307064, 0.0307788, 1.73020411], [1516478280000, 0.03077881, 0.03077881, 0.03077881, 0.03077881, 0.09], [1516478340000, 0.03077881, 0.03077881, 0.0307788, 0.0307788, 16.68228857], [1516478400000, 0.03094717, 0.03094718, 0.03074495, 0.03074495, 1.56506802], [1516478460000, 0.03074495, 0.03074495, 0.03068856, 0.03068856, 1.60331947], [1516478520000, 0.03068871, 0.03094086, 0.03068871, 0.03094086, 0.19316311], [1516478580000, 0.03093491, 0.03093491, 0.03093481, 0.03093481, 1.85403202], [1516478640000, 0.03093462, 0.03093462, 0.03092998, 0.03093452, 13.51074737], [1516478700000, 0.03092998, 0.03093424, 0.03066599, 0.03073, 63.69824487], [1516478760000, 0.03092967, 0.03092986, 0.03073, 0.03092986, 1.77007415], [1516478820000, 0.03073001, 0.03092924, 0.03073001, 0.03092924, 0.09283747], [1516478880000, 0.03092912, 0.03092912, 0.0307301, 0.0307301, 0.5637674], [1516478940000, 0.0307301, 0.0307301, 0.03071029, 0.03071029, 11.3343075], [1516479000000, 0.0307103, 0.03092791, 0.03066608, 0.03066608, 3.6123071], [1516479060000, 0.03092766, 0.03092766, 0.03066613, 0.03066613, 3.66157367], [1516479180000, 0.0306662, 0.0309261, 0.03066599, 0.03092579, 6.40166601], [1516479240000, 0.03065782, 0.03065782, 0.03065782, 0.03065782, 0.65155456], [1516479300000, 0.0307959, 0.0307959, 0.03065782, 0.03079586, 0.73190915], [1516479360000, 0.03079587, 0.03079587, 0.03061083, 0.03061083, 16.14623632], [1516479420000, 0.03061084, 0.03079492, 0.0306108, 0.03079492, 0.70760585], [1516479480000, 0.0306108, 0.0306108, 0.03059786, 0.0306, 17.49244986], [1516479540000, 0.0306, 0.03079091, 0.03059786, 0.03079091, 1.58429205], [1516479600000, 0.0306, 0.03079032, 0.03059999, 0.03079024, 1.12323719], [1516479660000, 0.03078991, 0.03078991, 0.03078991, 0.03078991, 0.06702737], [1516479780000, 0.03059787, 0.03078849, 0.03059786, 0.03059786, 1.76029987], [1516479840000, 0.03059787, 0.03059787, 0.03059786, 0.03059787, 4.19203533], [1516479900000, 0.03059787, 0.03059787, 0.03059786, 0.03059786, 3.26241846], [1516479960000, 0.03059787, 0.03059787, 0.03059787, 0.03059787, 27.96521247], [1516480020000, 0.03059787, 0.030791, 0.03059787, 0.03059787, 0.8623201], [1516480080000, 0.03067, 0.03067, 0.03059786, 0.03059786, 0.24728496], [1516480140000, 0.03067, 0.03067, 0.03067, 0.03067, 1.66399337], [1516480200000, 0.03067, 0.03067, 0.03059787, 0.03059787, 11.06203532], [1516480260000, 0.03059786, 0.03059787, 0.0305, 0.03059, 81.4777055], [1516480320000, 0.03067, 0.03067, 0.03050008, 0.03050008, 1.0772657], [1516480380000, 0.03067, 0.03067, 0.03050008, 0.03067, 9.35368599], [1516480440000, 0.03057, 0.03057, 0.03050008, 0.03050008, 2.74582681], [1516480500000, 0.03057, 0.03057, 0.03057, 0.03057, 1.19390579], [1516480560000, 0.03066999, 0.03066999, 0.03051312, 0.03051312, 0.15772506], [1516480620000, 0.03066998, 0.03075923, 0.03051312, 0.03073126, 119.2946543], [1516480680000, 0.03073126, 0.03073126, 0.03051321, 0.03073115, 0.15570651], [1516480740000, 0.03073114, 0.03073115, 0.03051321, 0.03051321, 1.47493021], [1516480800000, 0.03051311, 0.0307, 0.03051311, 0.0307, 4.5008151], [1516480860000, 0.03069999, 0.03069999, 0.03051322, 0.03069999, 0.66875216], [1516480920000, 0.03069999, 0.0307, 0.03051321, 0.03069995, 6.10171824], [1516480980000, 0.0305131, 0.03051311, 0.03050009, 0.03050009, 2.75157934], [1516481040000, 0.03050011, 0.03050011, 0.0305, 0.0305001, 20.76282214], [1516481100000, 0.03050001, 0.03050011, 0.03050001, 0.03050001, 2.70375695], [1516481160000, 0.0305001, 0.0305001, 0.0305, 0.0305, 2.38295744], [1516481220000, 0.03050011, 0.03050011, 0.03050011, 0.03050011, 0.11189714], [1516481280000, 0.03050011, 0.03050011, 0.03050011, 0.03050011, 0.12170629], [1516481340000, 0.03050011, 0.03059, 0.03050011, 0.03059, 1.34070058], [1516481400000, 0.03059, 0.03064488, 0.03050011, 0.03050011, 2.43800576], [1516481460000, 0.03064489, 0.03064489, 0.03050011, 0.03050011, 5.83837919], [1516481520000, 0.03050011, 0.03050011, 0.03050011, 0.03050011, 2.87774576], [1516481580000, 0.03050011, 0.03050011, 0.0305, 0.03050011, 16.40747836], [1516481640000, 0.03050011, 0.0307, 0.03050011, 0.0307, 25.0], [1516481700000, 0.03071351, 0.03071351, 0.03069999, 0.03069999, 0.25897368], [1516481760000, 0.03069999, 0.03069999, 0.03069989, 0.03069989, 0.52070601], [1516481820000, 0.03069989, 0.03071348, 0.03069989, 0.03071345, 5.0312955], [1516481880000, 0.03071347, 0.03071347, 0.03071346, 0.03071346, 0.07907963], [1516482000000, 0.03061707, 0.03071338, 0.03061707, 0.03071338, 0.32661486], [1516482060000, 0.03052079, 0.03052079, 0.03052078, 0.03052078, 3.73976547], [1516482120000, 0.03052078, 0.03052078, 0.03052078, 0.03052078, 9.405002], [1516482180000, 0.03052078, 0.0306, 0.03052077, 0.0306, 3.275405], [1516482240000, 0.0306, 0.03069989, 0.03055, 0.03069963, 10.05218439], [1516482300000, 0.0306, 0.03069944, 0.03055, 0.03055, 4.61321998], [1516482360000, 0.03055, 0.03065967, 0.0305, 0.03065967, 10.72448234], [1516482420000, 0.0305, 0.0305005, 0.0305, 0.0305, 1.44846486], [1516482480000, 0.0305, 0.03062983, 0.0305, 0.03061248, 3.78970609], [1516482540000, 0.0305, 0.03065949, 0.0305, 0.0305, 49.82822313], [1516482600000, 0.03050001, 0.03061247, 0.0305, 0.0305, 0.92306587], [1516482660000, 0.03060247, 0.03060247, 0.03050001, 0.03060247, 0.71231431], [1516482720000, 0.03050001, 0.03050001, 0.0305, 0.0305, 57.85170225], [1516482780000, 0.03060247, 0.03069846, 0.0305, 0.03069846, 0.60513196], [1516482840000, 0.03069838, 0.03069838, 0.0305, 0.0305, 0.8612372], [1516482900000, 0.0305, 0.03069789, 0.0305, 0.03050001, 2.64259085], [1516482960000, 0.03050001, 0.03068273, 0.0305, 0.03068273, 5.01845242], [1516483020000, 0.03068255, 0.03068255, 0.0305, 0.0305, 4.99685578], [1516483080000, 0.03050002, 0.03050002, 0.0305, 0.03050001, 2.501], [1516483140000, 0.03050002, 0.03050002, 0.03050001, 0.03050001, 30.11227375], [1516483200000, 0.03050001, 0.03064489, 0.03050001, 0.03064489, 5.78366609], [1516483260000, 0.03061035, 0.03064489, 0.03061035, 0.03064489, 7.11378559], [1516483320000, 0.03050001, 0.03050001, 0.0305, 0.0305, 3.23385517], [1516483380000, 0.03050001, 0.03050001, 0.03050001, 0.03050001, 0.02717876], [1516483440000, 0.03050001, 0.03050001, 0.0305, 0.03050001, 5.1422956], [1516483500000, 0.03050001, 0.03064489, 0.03050001, 0.03064489, 0.0457365], [1516483560000, 0.0306, 0.0306, 0.0306, 0.0306, 0.24901127], [1516483620000, 0.03050001, 0.03050001, 0.0305, 0.0305, 7.3870545], [1516483680000, 0.0305, 0.03050001, 0.0305, 0.0305, 25.77857904], [1516483740000, 0.0305, 0.0305, 0.0305, 0.0305, 0.31585184], [1516483800000, 0.0305, 0.03068165, 0.0305, 0.0305, 0.82890332], [1516483860000, 0.0305, 0.03050001, 0.0305, 0.0305, 159.82227384], [1516483920000, 0.0305, 0.03052748, 0.0305, 0.03052748, 10.09031089], [1516483980000, 0.03052748, 0.03052748, 0.0305, 0.0305, 99.01514045], [1516484040000, 0.0305, 0.03052748, 0.0305, 0.0305, 11.01693515], [1516484100000, 0.0305, 0.0306694, 0.0305, 0.0305, 3.01344541], [1516484160000, 0.0305, 0.0305, 0.0305, 0.0305, 51.41024363], [1516484220000, 0.0305, 0.03066809, 0.0305, 0.0305, 46.27183264], [1516484400000, 0.03063689, 0.0306369, 0.0305, 0.0305, 6.87423497], [1516484460000, 0.0305, 0.0305, 0.0305, 0.0305, 7.360875], [1516484520000, 0.0305, 0.0305, 0.0304662, 0.0304662, 4.8155917], [1516484580000, 0.03046384, 0.03046384, 0.03011849, 0.03016499, 287.4205552], [1516484640000, 0.03013702, 0.03016498, 0.0301, 0.03016489, 52.14804224], [1516484700000, 0.03016489, 0.03016489, 0.03006, 0.03006, 12.69400845], [1516484760000, 0.03006, 0.03016485, 0.03, 0.03016462, 53.49236622], [1516484820000, 0.03016462, 0.03016462, 0.03, 0.03016405, 16.98621859], [1516484880000, 0.03016381, 0.03016381, 0.03, 0.03000001, 13.77290106], [1516484940000, 0.03008173, 0.03008173, 0.03000001, 0.03000001, 24.2559361], [1516485000000, 0.03000001, 0.03009, 0.03, 0.0300095, 20.57650268], [1516485060000, 0.0300095, 0.03016252, 0.03000942, 0.03016234, 7.25820884], [1516485120000, 0.03016233, 0.03016233, 0.03008601, 0.03008601, 2.62106684], [1516485180000, 0.03016161, 0.03016161, 0.03008601, 0.03008601, 1.57656566], [1516485240000, 0.03008601, 0.03016118, 0.03007121, 0.03007121, 23.14227461], [1516485300000, 0.03007121, 0.03007121, 0.03007104, 0.03007104, 6.39782801], [1516485360000, 0.03007112, 0.03007121, 0.03007101, 0.03007101, 2.78222282], [1516485420000, 0.03007101, 0.03007101, 0.0300095, 0.0300095, 7.12675961], [1516485480000, 0.0300095, 0.03007101, 0.0300095, 0.03007101, 5.76190166], [1516485540000, 0.03007101, 0.03007101, 0.030071, 0.030071, 0.85565874], [1516485600000, 0.03007069, 0.03007069, 0.02992473, 0.0300706, 32.47335149], [1516485660000, 0.0300706, 0.0300706, 0.02992474, 0.0300706, 27.20170766], [1516485720000, 0.0300706, 0.0300706, 0.030065, 0.0300706, 19.1274452], [1516485780000, 0.0300706, 0.0300706, 0.030068, 0.0300706, 83.05109569], [1516485840000, 0.0300706, 0.03007101, 0.0300706, 0.03007101, 1.93468974], [1516485900000, 0.03007101, 0.03007101, 0.03006502, 0.03007101, 7.31201364], [1516485960000, 0.03007101, 0.03015302, 0.03007101, 0.03015302, 0.81348555], [1516486020000, 0.03015302, 0.03016167, 0.03006502, 0.03006502, 3.08927404], [1516486080000, 0.03006502, 0.03016167, 0.030065, 0.03016167, 4.30688991], [1516486140000, 0.03016166, 0.03016166, 0.03016166, 0.03016166, 0.42106434], [1516486200000, 0.03016163, 0.03016163, 0.03016162, 0.03016162, 1.56230606], [1516486260000, 0.03016162, 0.03016162, 0.03016159, 0.03016159, 3.93015796], [1516486320000, 0.03016159, 0.03016159, 0.03006601, 0.03006601, 21.46248146], [1516486380000, 0.03006601, 0.03006601, 0.030066, 0.03006601, 3.28540185], [1516486440000, 0.03016158, 0.03016158, 0.030066, 0.03006601, 5.29941756], [1516486500000, 0.03006601, 0.03006601, 0.030066, 0.03006601, 6.62408163], [1516486560000, 0.03006601, 0.03015301, 0.030066, 0.03006602, 5.72831356], [1516486620000, 0.03006602, 0.0301, 0.03006602, 0.0301, 1.27941453], [1516486680000, 0.0301, 0.03016073, 0.0301, 0.0301, 3.02226797], [1516486740000, 0.0301, 0.0301, 0.0301, 0.0301, 0.0888007], [1516486800000, 0.0301, 0.0301, 0.0301, 0.0301, 4.91771719], [1516486860000, 0.0301, 0.0301, 0.03006599, 0.03006599, 13.64782322], [1516486920000, 0.03006599, 0.03006599, 0.03006599, 0.03006599, 0.4323667], [1516486980000, 0.03006501, 0.03006599, 0.030065, 0.03006599, 0.21386304], [1516487040000, 0.030065, 0.03016073, 0.030065, 0.03016066, 0.22339449], [1516487100000, 0.03016053, 0.03016053, 0.03015999, 0.03015999, 0.96173628], [1516487160000, 0.030065, 0.03015997, 0.030065, 0.03015997, 7.05143222], [1516487220000, 0.03015899, 0.03015899, 0.03015499, 0.03015499, 4.33888859], [1516487280000, 0.03015499, 0.03015499, 0.02994484, 0.03015496, 21.51153537], [1516487340000, 0.03015496, 0.03015496, 0.02994663, 0.03015495, 1.99809242], [1516487400000, 0.03015491, 0.03015491, 0.02998271, 0.03015491, 0.34153217], [1516487460000, 0.03015491, 0.03015494, 0.03015491, 0.03015494, 3.02134104], [1516487520000, 0.03015492, 0.03015494, 0.03015491, 0.03015493, 0.97355474], [1516487580000, 0.03000001, 0.03000001, 0.03000001, 0.03000001, 0.088], [1516487640000, 0.03000001, 0.03000001, 0.03000001, 0.03000001, 0.19698797], [1516487700000, 0.03015398, 0.03015398, 0.02999999, 0.03000001, 24.83891491], [1516487760000, 0.03000001, 0.03000001, 0.03000001, 0.03000001, 5.96], [1516487820000, 0.03015369, 0.03015369, 0.03015365, 0.03015365, 9.97598326], [1516487940000, 0.03015345, 0.03015345, 0.03015345, 0.03015345, 0.69925457], [1516488000000, 0.0299959, 0.0299959, 0.02999, 0.02999, 5.73930784], [1516488060000, 0.03015325, 0.03015325, 0.03015325, 0.03015325, 0.07959329], [1516488120000, 0.03015323, 0.03015323, 0.02998271, 0.03006802, 4.54957125], [1516488180000, 0.03006802, 0.03015323, 0.02998271, 0.02998271, 8.33855865], [1516488240000, 0.03015323, 0.03015323, 0.02998271, 0.02998271, 20.46818887], [1516488300000, 0.03015323, 0.03015323, 0.02998272, 0.03015323, 0.22732221], [1516488360000, 0.03015322, 0.03015322, 0.03015299, 0.03015299, 0.42924999], [1516488420000, 0.03015199, 0.03015199, 0.02999, 0.02999, 22.63223379], [1516488480000, 0.02999005, 0.03015199, 0.02999001, 0.03000133, 18.46490222], [1516488600000, 0.03010307, 0.03010307, 0.03010307, 0.03010307, 0.1], [1516488660000, 0.03015199, 0.03015199, 0.03015199, 0.03015199, 0.49341895], [1516488720000, 0.03015199, 0.03015199, 0.03015199, 0.03015199, 0.03717698], [1516488780000, 0.0301519, 0.0301519, 0.03010307, 0.03010307, 1.77241962], [1516488840000, 0.03015198, 0.03015198, 0.03015198, 0.03015198, 0.14169425], [1516488960000, 0.03005, 0.03005, 0.03005, 0.03005, 0.25233883], [1516489020000, 0.03005, 0.03015197, 0.03005, 0.03015197, 0.25458292], [1516489080000, 0.03005004, 0.03005004, 0.03005004, 0.03005004, 1.31511287], [1516489140000, 0.03005005, 0.03005006, 0.03005005, 0.03005005, 0.47465565], [1516489200000, 0.03005006, 0.03005006, 0.03005005, 0.03005006, 4.03472208], [1516489260000, 0.03005006, 0.03015195, 0.03005006, 0.03015195, 6.8131243], [1516489380000, 0.030147, 0.030147, 0.03014699, 0.03014699, 0.31130697], [1516489440000, 0.03014699, 0.03014699, 0.03014699, 0.03014699, 1.47031639], [1516489500000, 0.03014699, 0.03014699, 0.03014698, 0.03014698, 1.2650661], [1516489560000, 0.03014698, 0.03014698, 0.0300501, 0.03014698, 18.59861442], [1516489620000, 0.03009854, 0.03014698, 0.0300501, 0.03005011, 1.14283074], [1516489680000, 0.03014698, 0.03014698, 0.03014698, 0.03014698, 0.23439032], [1516489740000, 0.03005011, 0.03014698, 0.03005011, 0.03014698, 0.23110201], [1516489800000, 0.03005011, 0.03014697, 0.02990013, 0.02998457, 197.61510083], [1516489860000, 0.03014674, 0.03014674, 0.02998457, 0.03012898, 2.0414414], [1516489920000, 0.030129, 0.030129, 0.03012898, 0.03012898, 331.50121886], [1516489980000, 0.0300236, 0.03012897, 0.0300236, 0.03012891, 26.27334439], [1516490040000, 0.03012797, 0.03012797, 0.0300236, 0.0300236, 6.16342396], [1516490100000, 0.0300236, 0.03012795, 0.0300236, 0.0300236, 5.46929275], [1516490160000, 0.0300236, 0.03011962, 0.0300236, 0.03011953, 2.06510859], [1516490220000, 0.03011957, 0.03011957, 0.02992472, 0.03011943, 10.44066464], [1516490280000, 0.02992472, 0.02992472, 0.02992472, 0.02992472, 0.13093051], [1516490340000, 0.03011961, 0.03011961, 0.03011961, 0.03011961, 0.07870052], [1516490400000, 0.03002216, 0.03002216, 0.03002216, 0.03002216, 0.24180181], [1516490460000, 0.03002216, 0.03011983, 0.02992472, 0.02992472, 13.83415038], [1516490520000, 0.03011982, 0.03011982, 0.03011952, 0.03011952, 0.48590208], [1516490580000, 0.03011917, 0.03011917, 0.03011889, 0.03011889, 1.25263795], [1516490640000, 0.03011885, 0.03011885, 0.03011885, 0.03011885, 2.05553837], [1516490700000, 0.0301184, 0.0301184, 0.03002203, 0.03011799, 2.7195162], [1516490760000, 0.03002203, 0.03002203, 0.03002203, 0.03002203, 2.91994388], [1516490820000, 0.03002203, 0.03011764, 0.03002203, 0.03005205, 0.98268484], [1516490880000, 0.03005205, 0.03005205, 0.03005205, 0.03005205, 2.30870264], [1516490940000, 0.03005205, 0.03012799, 0.03005205, 0.03012799, 0.43104168], [1516491000000, 0.03002204, 0.030128, 0.03002203, 0.030128, 1.82868072], [1516491060000, 0.030128, 0.030128, 0.030128, 0.030128, 0.75045426], [1516491120000, 0.030128, 0.030128, 0.03009787, 0.03009787, 3.2527473], [1516491180000, 0.03009787, 0.030128, 0.03009787, 0.030128, 3.03725936], [1516491240000, 0.03009787, 0.030128, 0.03009787, 0.03009787, 2.05179983], [1516491300000, 0.03009787, 0.030128, 0.03006602, 0.030128, 3.10445607], [1516491360000, 0.03004436, 0.03012798, 0.03004436, 0.03004436, 25.68584432], [1516491420000, 0.03012798, 0.030128, 0.03004436, 0.030128, 9.53270154], [1516491480000, 0.030128, 0.030128, 0.030128, 0.030128, 2.16952996], [1516491540000, 0.030128, 0.030128, 0.030128, 0.030128, 0.35542868], [1516491600000, 0.030128, 0.030128, 0.03008617, 0.030128, 1.98912864], [1516491660000, 0.030128, 0.030128, 0.030128, 0.030128, 2.26853241], [1516491720000, 0.030128, 0.030128, 0.03004439, 0.030128, 1.78930185], [1516491780000, 0.030128, 0.030128, 0.030128, 0.030128, 1.38344413], [1516491840000, 0.030128, 0.030128, 0.03004437, 0.030128, 36.46653089], [1516491900000, 0.030128, 0.030128, 0.030128, 0.030128, 0.13866435], [1516491960000, 0.03004437, 0.0301, 0.03004437, 0.0301, 0.61865955], [1516492020000, 0.0301, 0.0301, 0.03004437, 0.0301, 12.07167816], [1516492080000, 0.0301, 0.0301, 0.0301, 0.0301, 2.0568632], [1516492140000, 0.0301, 0.030128, 0.0301, 0.030128, 12.16311965], [1516492200000, 0.030128, 0.03012896, 0.03004437, 0.03004437, 4.37971948], [1516492260000, 0.03004437, 0.03004438, 0.03004437, 0.03004437, 7.0253871], [1516492320000, 0.03004437, 0.03012895, 0.03004437, 0.03012894, 5.57589917], [1516492380000, 0.03012893, 0.03012893, 0.03012893, 0.03012893, 33.10771408], [1516492440000, 0.03004437, 0.03012892, 0.03004437, 0.03004437, 0.46788581], [1516492500000, 0.03012891, 0.03012891, 0.03004437, 0.03004437, 9.07557296], [1516492560000, 0.03012889, 0.03012889, 0.03004437, 0.03004437, 10.7833704], [1516492620000, 0.03004437, 0.03004437, 0.03004437, 0.03004437, 11.70656076], [1516492680000, 0.03004437, 0.03012889, 0.03004437, 0.03012889, 3.34047448], [1516492740000, 0.03004437, 0.03004437, 0.03004437, 0.03004437, 0.45653231], [1516492800000, 0.03012783, 0.03012888, 0.03012783, 0.03012888, 64.86794247], [1516492860000, 0.03012888, 0.03012888, 0.03004437, 0.03004437, 26.80798586], [1516492920000, 0.03012887, 0.03021927, 0.03004437, 0.03004437, 349.58592722], [1516492980000, 0.030231, 0.030231, 0.03004437, 0.03004437, 150.19237927], [1516493040000, 0.03004437, 0.03018033, 0.03004437, 0.03018032, 10.30387668], [1516493100000, 0.03017991, 0.03017996, 0.03004437, 0.03017987, 131.21231727], [1516493160000, 0.03004437, 0.03017985, 0.03004437, 0.03017985, 5.67560907], [1516493220000, 0.03004437, 0.03017983, 0.03004437, 0.03017983, 6.49782379], [1516493280000, 0.03014999, 0.03014999, 0.03014999, 0.03014999, 16.405], [1516493340000, 0.03014998, 0.03017988, 0.03004437, 0.03015, 123.03621577], [1516493400000, 0.03004437, 0.03038575, 0.03004437, 0.03017988, 27.15875122], [1516493460000, 0.03017988, 0.03038574, 0.0300537, 0.03005398, 30.32649983], [1516493580000, 0.03010534, 0.03010534, 0.03010534, 0.03010534, 0.36945358], [1516493640000, 0.03014543, 0.03038574, 0.03013544, 0.03038572, 17.60171339], [1516493700000, 0.03038572, 0.03038574, 0.03014602, 0.03014632, 2.73515308], [1516493760000, 0.0303856, 0.0303856, 0.03034957, 0.03034957, 5.77103534], [1516493820000, 0.03034957, 0.03038574, 0.03020668, 0.03038574, 5.09194365], [1516493880000, 0.03038573, 0.03059949, 0.0303856, 0.03040003, 53.14838802], [1516493940000, 0.03049028, 0.0305999, 0.03049028, 0.0304903, 10.31539342], [1516494000000, 0.0305999, 0.03061394, 0.0304903, 0.03061394, 12.44814046], [1516494060000, 0.03061394, 0.03061394, 0.0304903, 0.0304903, 5.7706039], [1516494120000, 0.0304903, 0.03061394, 0.0304903, 0.03061394, 11.96028673], [1516494180000, 0.03061394, 0.03061394, 0.03049033, 0.03049034, 3.54154103], [1516494240000, 0.03061394, 0.03061394, 0.03061394, 0.03061394, 0.40151604], [1516494300000, 0.03056014, 0.03061394, 0.03056014, 0.03060021, 16.30390738], [1516494360000, 0.03049032, 0.03061394, 0.0304903, 0.03049467, 4.12835381], [1516494420000, 0.03058648, 0.03061394, 0.03049028, 0.03049468, 35.72151308], [1516494480000, 0.03054, 0.03054, 0.03049028, 0.03049028, 92.08025821], [1516494540000, 0.03049028, 0.03049028, 0.0304, 0.0304, 13.159413], [1516494600000, 0.0304, 0.0305389, 0.0303856, 0.0305388, 10.78293519], [1516494660000, 0.0303, 0.03048695, 0.03020668, 0.03048695, 14.60454655], [1516494720000, 0.0303, 0.0303, 0.03020669, 0.03020669, 1.81896449], [1516494780000, 0.03020668, 0.03042198, 0.0302, 0.03042198, 0.72167319], [1516494840000, 0.03020668, 0.03020668, 0.03020668, 0.03020668, 11.26149855], [1516494900000, 0.03020668, 0.03035424, 0.03020668, 0.03035422, 2.7174682], [1516494960000, 0.03035422, 0.03035422, 0.03020669, 0.03020669, 0.58291798], [1516495020000, 0.03020668, 0.03020668, 0.03020668, 0.03020668, 0.12072831], [1516495080000, 0.03048684, 0.03048684, 0.03016014, 0.03016081, 4.64506867], [1516495140000, 0.03048582, 0.03048582, 0.03004437, 0.03004447, 14.19640199], [1516495200000, 0.03035, 0.03047366, 0.0300444, 0.03045999, 59.85180439], [1516495260000, 0.03004515, 0.03004538, 0.03004437, 0.03004538, 15.08966235], [1516495320000, 0.03004555, 0.03004555, 0.03004554, 0.03004554, 3.10149371], [1516495380000, 0.0303388, 0.0303388, 0.03033868, 0.03033868, 0.14805219], [1516495440000, 0.0300454, 0.0300454, 0.03004437, 0.03004437, 1.57143651], [1516495500000, 0.03004437, 0.03019999, 0.03004437, 0.03019999, 0.95078644], [1516495560000, 0.03019999, 0.0302, 0.03004438, 0.0302, 21.03476822], [1516495620000, 0.0302, 0.0302, 0.03004437, 0.03004438, 23.56270181], [1516495680000, 0.03004438, 0.03019995, 0.03004438, 0.03019995, 2.41602888], [1516495740000, 0.03019991, 0.03019991, 0.03004438, 0.03004438, 1.55383955], [1516495800000, 0.03019991, 0.03019991, 0.03019988, 0.03019988, 2.66420598], [1516495860000, 0.03007911, 0.0301999, 0.03004437, 0.0301999, 10.87878591], [1516495920000, 0.0301999, 0.0301999, 0.03019989, 0.03019989, 0.15055444], [1516495980000, 0.03004437, 0.03019988, 0.03004437, 0.03019988, 11.52299946], [1516496040000, 0.03019989, 0.03031798, 0.03004437, 0.03031798, 14.11457058], [1516496100000, 0.03004437, 0.03031747, 0.03004437, 0.03004437, 6.03859049], [1516496160000, 0.03031659, 0.03031659, 0.03004437, 0.03004439, 2.07810788], [1516496220000, 0.03004441, 0.03004441, 0.03004439, 0.03004439, 2.81604706], [1516496280000, 0.03004438, 0.03004438, 0.03004437, 0.03004437, 9.81809215], [1516496340000, 0.03004438, 0.03004438, 0.03004437, 0.03004437, 0.7038882], [1516496400000, 0.03004437, 0.03024932, 0.03004437, 0.03024922, 8.38535553], [1516496460000, 0.03004437, 0.03004437, 0.03004437, 0.03004437, 48.7768761], [1516496520000, 0.03014636, 0.03014636, 0.03002204, 0.03002204, 24.8322589], [1516496580000, 0.03002203, 0.03024864, 0.02985173, 0.03, 60.04592028], [1516496640000, 0.03, 0.03, 0.02985, 0.02985, 3.72520284], [1516496700000, 0.03011642, 0.03011646, 0.0298504, 0.03011608, 3.88246488], [1516496760000, 0.02985007, 0.03011601, 0.02980177, 0.02980181, 142.76033453], [1516496820000, 0.03011477, 0.03011477, 0.02980953, 0.02980953, 12.87541048], [1516496880000, 0.02980206, 0.03003946, 0.02980206, 0.03003946, 2.79632738], [1516496940000, 0.03003946, 0.03011468, 0.02980319, 0.03011466, 24.75716642], [1516497000000, 0.03011466, 0.03011469, 0.03011466, 0.03011469, 1.23210377], [1516497060000, 0.03011468, 0.03011499, 0.03010146, 0.03011499, 35.87280776], [1516497120000, 0.03010146, 0.03011497, 0.02999618, 0.03011494, 26.24191442], [1516497180000, 0.03010144, 0.03010145, 0.03010144, 0.03010145, 0.16610495], [1516497240000, 0.0301014, 0.03010145, 0.03010139, 0.03010139, 12.78756804], [1516497300000, 0.03010115, 0.03010115, 0.03010091, 0.03010091, 0.76390534], [1516497360000, 0.02985, 0.02985, 0.02983315, 0.02983319, 5.68617646], [1516497420000, 0.0301005, 0.0301005, 0.02980208, 0.0301002, 1.8899985], [1516497480000, 0.03010019, 0.03010019, 0.02980211, 0.02980211, 0.88127537], [1516497540000, 0.02980217, 0.02980219, 0.02980199, 0.02980199, 15.21272396], [1516497600000, 0.02980199, 0.02980199, 0.029765, 0.029773, 6.08174219], [1516497660000, 0.03000167, 0.03000167, 0.029773, 0.02998135, 2.9535718], [1516497720000, 0.02998068, 0.0299807, 0.02998067, 0.02998068, 16.56804797], [1516497780000, 0.02998031, 0.02998031, 0.0299803, 0.0299803, 1.04648572], [1516497840000, 0.02998016, 0.02998016, 0.0299801, 0.0299801, 4.21701888], [1516497900000, 0.02996008, 0.02996008, 0.0299599, 0.0299599, 5.00774543], [1516497960000, 0.02975017, 0.02975017, 0.02975015, 0.02975015, 0.89164094], [1516498020000, 0.02975015, 0.02995938, 0.02975015, 0.02995934, 5.22218386], [1516498080000, 0.02995934, 0.02995934, 0.02995934, 0.02995934, 0.15977088], [1516498140000, 0.02995934, 0.02995934, 0.02995916, 0.02995916, 2.62386966], [1516498200000, 0.0299591, 0.0299591, 0.02983932, 0.02983932, 14.67653807], [1516498260000, 0.02995885, 0.02995885, 0.02983932, 0.02983932, 13.99052301], [1516498320000, 0.02983932, 0.02983932, 0.02975015, 0.02975015, 0.14694789], [1516498380000, 0.02975016, 0.02975016, 0.02975016, 0.02975016, 0.1302006], [1516498440000, 0.02975016, 0.02975016, 0.02975016, 0.02975016, 0.17631494], [1516498560000, 0.02995867, 0.02995868, 0.02995862, 0.02995862, 11.69928201], [1516498620000, 0.02985731, 0.02995786, 0.02985731, 0.02995786, 3.47631938], [1516498680000, 0.02985731, 0.0299575, 0.02975601, 0.02985731, 49.0703466], [1516498740000, 0.02985731, 0.02985731, 0.02985731, 0.02985731, 4.83683233], [1516498800000, 0.029857, 0.02985731, 0.029857, 0.02985731, 1.10593924], [1516498920000, 0.02975015, 0.02985731, 0.02974896, 0.02974896, 5.23969663], [1516498980000, 0.02975, 0.02975, 0.029688, 0.029688, 56.71639114], [1516499040000, 0.02985689, 0.02985689, 0.0296859, 0.02985688, 2.18104184], [1516499100000, 0.02985688, 0.02985688, 0.02985688, 0.02985688, 0.85454077], [1516499160000, 0.02967329, 0.02967329, 0.02965149, 0.02967329, 2.77171596], [1516499220000, 0.02967329, 0.02985668, 0.02964358, 0.02985668, 5.43511271], [1516499280000, 0.02985668, 0.02985668, 0.02985668, 0.02985668, 0.8], [1516499340000, 0.02985668, 0.02985668, 0.02985668, 0.02985668, 0.00542784], [1516499460000, 0.02964405, 0.02964405, 0.02964405, 0.02964405, 2.22594808], [1516499520000, 0.02964405, 0.02985667, 0.02964396, 0.02964396, 3.95981352], [1516499580000, 0.0296444, 0.02985667, 0.0296444, 0.02985666, 1.51925687], [1516499700000, 0.02985666, 0.02985666, 0.02985666, 0.02985666, 9.0], [1516499760000, 0.02985647, 0.02985647, 0.02964444, 0.02964444, 0.30957879], [1516499820000, 0.02964445, 0.02985637, 0.02964445, 0.02985637, 4.43457589], [1516499880000, 0.02985584, 0.02985584, 0.02985583, 0.02985583, 2.55289637], [1516499940000, 0.0296855, 0.02985577, 0.0296855, 0.02985577, 0.93937069], [1516500000000, 0.02968558, 0.02968558, 0.02968558, 0.02968558, 0.46697355], [1516500060000, 0.02968561, 0.02985618, 0.02968561, 0.02985618, 4.16080963], [1516500120000, 0.02985625, 0.02985625, 0.02985619, 0.02985619, 1.21271172], [1516500180000, 0.02985607, 0.02985607, 0.0296856, 0.02985577, 0.61190736], [1516500240000, 0.02985565, 0.02985565, 0.02968561, 0.02968561, 15.8762156], [1516500300000, 0.02968561, 0.02968561, 0.02964501, 0.02968561, 3.7366561], [1516500360000, 0.02968561, 0.02968561, 0.02964501, 0.02968561, 2.60412435], [1516500420000, 0.02968561, 0.02982662, 0.02968561, 0.02982662, 6.09058966], [1516500480000, 0.029812, 0.02995908, 0.02980954, 0.02995905, 52.94332678], [1516500540000, 0.02995902, 0.02995902, 0.02995865, 0.02995865, 12.60677276], [1516500600000, 0.02995865, 0.02995921, 0.02965131, 0.02965131, 7.83378439], [1516500660000, 0.02965139, 0.02993922, 0.02965139, 0.02993922, 4.00689365], [1516500780000, 0.02993922, 0.02993922, 0.02993922, 0.02993922, 10.73992784], [1516500840000, 0.02993922, 0.02993924, 0.02993922, 0.02993924, 8.62496309], [1516500900000, 0.02993924, 0.02993924, 0.02993923, 0.02993924, 0.37325204], [1516500960000, 0.02993924, 0.02995922, 0.02993924, 0.02995922, 1.99495237], [1516501020000, 0.02993923, 0.02993923, 0.02993923, 0.02993923, 0.15794566], [1516501080000, 0.03, 0.03, 0.03, 0.03, 0.16783333], [1516501140000, 0.03004999, 0.03005, 0.03000002, 0.03000002, 2.25524551], [1516501200000, 0.03008143, 0.03010019, 0.03, 0.03010019, 6.04481332], [1516501260000, 0.03010016, 0.03010019, 0.03010016, 0.03010019, 0.4836929], [1516501320000, 0.03010019, 0.0302493, 0.03010019, 0.03024929, 2.74067156], [1516501380000, 0.03010141, 0.03024919, 0.03010139, 0.03010139, 15.21838611], [1516501440000, 0.03010139, 0.0301014, 0.03010139, 0.03010139, 5.40642943], [1516501500000, 0.03010139, 0.03024437, 0.03010139, 0.03010139, 1.92661244], [1516501560000, 0.03024437, 0.03024438, 0.03010139, 0.03024437, 15.49927843], [1516501620000, 0.03024437, 0.03024437, 0.03024435, 0.03024435, 2.48181441], [1516501680000, 0.03024434, 0.03024435, 0.03010199, 0.03010199, 0.34906626], [1516501740000, 0.03010199, 0.03010199, 0.03010199, 0.03010199, 0.97236557], [1516501800000, 0.03010139, 0.03010199, 0.03010139, 0.03010199, 8.89015474], [1516501860000, 0.03010139, 0.03010198, 0.03010139, 0.03010139, 22.87828874], [1516501920000, 0.03010198, 0.03010199, 0.03010198, 0.03010199, 1.0047091], [1516501980000, 0.03010199, 0.03010199, 0.03010139, 0.03010139, 1.31670482], [1516502040000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 5.04049259], [1516502100000, 0.03010139, 0.03010199, 0.03010139, 0.03010139, 10.42298859], [1516502160000, 0.03010199, 0.03010199, 0.03010139, 0.03010139, 2.24978082], [1516502220000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 14.62704803], [1516502280000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 28.23777812], [1516502340000, 0.03010139, 0.0301014, 0.03010139, 0.0301014, 4.2102197], [1516502400000, 0.03010139, 0.03010199, 0.03010139, 0.03010139, 4.93530937], [1516502460000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 29.27244927], [1516502520000, 0.03010199, 0.03010199, 0.03010139, 0.03010139, 12.59745051], [1516502580000, 0.03024303, 0.03024303, 0.03010139, 0.03010139, 66.3850511], [1516502640000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 11.18558897], [1516502700000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 8.17239927], [1516502760000, 0.03010139, 0.03024211, 0.03010139, 0.03024211, 8.86795946], [1516502820000, 0.03010139, 0.03024199, 0.03010139, 0.03010139, 49.59153852], [1516502880000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 21.46361923], [1516502940000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 18.87796202], [1516503000000, 0.03024197, 0.03024197, 0.03010139, 0.03024197, 0.8343051], [1516503060000, 0.0302, 0.0302, 0.0302, 0.0302, 0.06122086], [1516503120000, 0.03017999, 0.03017999, 0.03017999, 0.03017999, 1.0], [1516503180000, 0.03017999, 0.03017999, 0.03010139, 0.03017998, 2.81094414], [1516503240000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 19.77469366], [1516503300000, 0.03017998, 0.03024965, 0.03010139, 0.03010139, 10.75942008], [1516503360000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 0.25181602], [1516503420000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 0.69134467], [1516503480000, 0.030102, 0.030102, 0.030102, 0.030102, 0.3], [1516503540000, 0.030102, 0.030102, 0.030102, 0.030102, 2.0], [1516503600000, 0.03017987, 0.03024959, 0.03017987, 0.03024959, 0.46382717], [1516503660000, 0.03017987, 0.03017987, 0.03017987, 0.03017987, 5.06380545], [1516503720000, 0.03017977, 0.03017987, 0.03017977, 0.03017987, 0.08108538], [1516503780000, 0.03017987, 0.03039791, 0.03010202, 0.03010202, 26.81985739], [1516503840000, 0.03010303, 0.0301352, 0.03010303, 0.0301352, 1.05500353], [1516503900000, 0.03010365, 0.03038313, 0.03010353, 0.03010353, 3.51485228], [1516503960000, 0.03038281, 0.03038281, 0.03038281, 0.03038281, 0.16286004], [1516504080000, 0.03011005, 0.03011005, 0.03010518, 0.03011004, 4.89197686], [1516504140000, 0.03011004, 0.03011004, 0.03011004, 0.03011004, 0.55891948], [1516504200000, 0.03011008, 0.03037207, 0.03011008, 0.03037207, 1.61381401], [1516504260000, 0.0303, 0.0303, 0.030102, 0.030102, 12.65044697], [1516504320000, 0.03029497, 0.03029497, 0.03010211, 0.03010211, 0.69817068], [1516504380000, 0.0302949, 0.030295, 0.03029487, 0.03029487, 8.70439686], [1516504440000, 0.03029487, 0.03029487, 0.03029487, 0.03029487, 0.03662514], [1516504500000, 0.03029487, 0.03029487, 0.03029484, 0.03029484, 0.07324834], [1516504560000, 0.03029481, 0.03029487, 0.03029481, 0.03029487, 5.75966266], [1516504620000, 0.03029487, 0.0303, 0.03011023, 0.0303, 124.90369819], [1516504740000, 0.03011024, 0.03011024, 0.03010139, 0.03010139, 100.0223821], [1516504800000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 50.0], [1516504860000, 0.0301014, 0.0301014, 0.03010139, 0.03010139, 8.13257684], [1516504920000, 0.03029931, 0.03029931, 0.03029874, 0.03029874, 0.35057856], [1516504980000, 0.03029865, 0.03029865, 0.03029808, 0.03029808, 1.68577355], [1516505220000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 0.03013085], [1516505280000, 0.03010139, 0.03010139, 0.03010139, 0.03010139, 0.28644891], [1516505340000, 0.03029632, 0.03029632, 0.03029632, 0.03029632, 1.05304328], [1516505400000, 0.03029633, 0.03029634, 0.03029632, 0.03029632, 2.36760393], [1516505460000, 0.03029632, 0.03029633, 0.03029632, 0.03029632, 6.940208], [1516505520000, 0.03029597, 0.03029597, 0.03029594, 0.03029594, 0.07616426], [1516505580000, 0.03029593, 0.03029593, 0.03029593, 0.03029593, 0.06271463], [1516505640000, 0.03029597, 0.03029597, 0.03029597, 0.03029597, 0.06138294], [1516505700000, 0.03029596, 0.03029596, 0.03019868, 0.03029596, 0.80673113], [1516505760000, 0.03029595, 0.03029596, 0.03029595, 0.03029596, 3.88968562], [1516505820000, 0.03029597, 0.030296, 0.03029597, 0.03029597, 5.99007826], [1516505880000, 0.03029597, 0.03029597, 0.03029597, 0.03029597, 0.27253245], [1516505940000, 0.03029597, 0.03029599, 0.03029597, 0.03029599, 2.91113154], [1516506000000, 0.030296, 0.03029888, 0.03029599, 0.03029887, 54.13676811], [1516506060000, 0.03029599, 0.03029599, 0.03029599, 0.03029599, 3.82975756], [1516506120000, 0.03029599, 0.03029888, 0.03029596, 0.03029596, 6.99906348], [1516506180000, 0.03029887, 0.03029887, 0.030102, 0.030102, 9.46567833], [1516506240000, 0.030102, 0.03017725, 0.030102, 0.030102, 13.46904506], [1516506300000, 0.03010139, 0.030102, 0.02993924, 0.02993924, 7.03628175], [1516506360000, 0.03010199, 0.03022037, 0.02993924, 0.03022037, 8.49122326], [1516506420000, 0.02991007, 0.02991011, 0.02991004, 0.02991011, 1.12673503], [1516506480000, 0.03021979, 0.03021979, 0.02991011, 0.02991011, 0.67209802], [1516506540000, 0.02992, 0.03021915, 0.02992, 0.03021903, 19.45583244], [1516506600000, 0.03021881, 0.03021882, 0.02992048, 0.02992048, 3.79409169], [1516506720000, 0.03021806, 0.03021806, 0.03021776, 0.03021776, 0.16521634], [1516506780000, 0.03021781, 0.03021915, 0.02992129, 0.03021766, 3.07946021], [1516506840000, 0.03021766, 0.03021766, 0.03021751, 0.03021751, 1.87265947], [1516506900000, 0.03021683, 0.03021683, 0.03021674, 0.03021676, 3.08878069], [1516507140000, 0.03, 0.03, 0.03, 0.03, 0.63333333], [1516507200000, 0.02992, 0.02992, 0.02992, 0.02992, 2.10743798], [1516507260000, 0.02992, 0.02999999, 0.0299101, 0.0299101, 4.72581403], [1516507320000, 0.02992, 0.02992, 0.02991, 0.02991, 1.60915914], [1516507380000, 0.02991, 0.02991, 0.02985, 0.02985, 1.67006878], [1516507440000, 0.02985, 0.02987185, 0.0298, 0.02987185, 11.7283312], [1516507500000, 0.0298, 0.02987185, 0.02969007, 0.02969007, 2.98390595], [1516507560000, 0.0298718, 0.02987185, 0.0297, 0.0298718, 15.79415027], [1516507620000, 0.02980362, 0.0298718, 0.02975521, 0.02975521, 1.95786471], [1516507680000, 0.02975521, 0.0298718, 0.02950001, 0.02972969, 61.25839079], [1516507740000, 0.02972968, 0.0297297, 0.02946464, 0.02946466, 44.36261081], [1516507800000, 0.0294648, 0.02972959, 0.0294648, 0.02946491, 1.86078959], [1516507860000, 0.02946494, 0.02972911, 0.02946492, 0.02972863, 72.29332693], [1516507920000, 0.02972819, 0.02972819, 0.0295002, 0.0295002, 1.8936731], [1516507980000, 0.02970592, 0.02972763, 0.02946577, 0.0297, 12.62473032], [1516508040000, 0.0297, 0.02970556, 0.02946635, 0.02967907, 10.43576794], [1516508100000, 0.0297279, 0.0297279, 0.02967907, 0.02969992, 2.32864439], [1516508160000, 0.02969991, 0.02969991, 0.02967904, 0.02967907, 1.17296225], [1516508220000, 0.02967907, 0.02972814, 0.02946695, 0.02969993, 5.36231645], [1516508280000, 0.02969993, 0.02969999, 0.02946667, 0.02969979, 5.04055867], [1516508340000, 0.02969996, 0.02969996, 0.0295043, 0.0295043, 0.80641293], [1516508400000, 0.02950441, 0.02969999, 0.02947664, 0.02947676, 16.92512216], [1516508460000, 0.02969995, 0.02969995, 0.02947544, 0.02969972, 7.67465428], [1516508520000, 0.02948414, 0.02969407, 0.02948414, 0.02969403, 5.9278948], [1516508580000, 0.02969403, 0.02969409, 0.02948421, 0.02969402, 0.3985275], [1516508640000, 0.02969402, 0.02969403, 0.02969402, 0.02969403, 0.22051968], [1516508700000, 0.02969403, 0.02969403, 0.02948418, 0.02969403, 3.43472698], [1516508760000, 0.02969403, 0.02969403, 0.02948426, 0.02948426, 0.46553153], [1516508820000, 0.02969397, 0.029694, 0.02969397, 0.029694, 15.36736525], [1516508880000, 0.029694, 0.029694, 0.029694, 0.029694, 24.51484956], [1516508940000, 0.029694, 0.029694, 0.02948415, 0.02948415, 5.19187423], [1516509000000, 0.02969402, 0.02969403, 0.02969402, 0.02969403, 0.09901266], [1516509060000, 0.02948414, 0.029694, 0.02947644, 0.029694, 1.14794887], [1516509120000, 0.029694, 0.029694, 0.02947627, 0.0294763, 3.1665636], [1516509180000, 0.02969392, 0.02969395, 0.02969392, 0.02969395, 1.2057874], [1516509240000, 0.02969395, 0.02969395, 0.02969395, 0.02969395, 2.33640545], [1516509300000, 0.0295, 0.02969392, 0.0295, 0.02969392, 9.8546834], [1516509360000, 0.0295, 0.02969392, 0.0295, 0.0295, 7.12265433], [1516509480000, 0.02969392, 0.02969403, 0.0295, 0.02969403, 2.53415267], [1516509540000, 0.02969403, 0.0297, 0.0295, 0.0297, 2.41689695], [1516509600000, 0.0295, 0.02950563, 0.02946677, 0.02950563, 52.26059441], [1516509660000, 0.02950563, 0.02969981, 0.02946466, 0.02946466, 8.1322854], [1516509720000, 0.02946466, 0.02946466, 0.02943326, 0.02943326, 10.33837491], [1516509900000, 0.02969875, 0.02969875, 0.02943326, 0.02969844, 5.82500707], [1516509960000, 0.02954971, 0.02954971, 0.02943401, 0.02943401, 0.64065896], [1516510020000, 0.02969804, 0.02969805, 0.029434, 0.02943401, 2.53804434], [1516510080000, 0.02943436, 0.0296967, 0.02943436, 0.0296967, 4.80561769], [1516510140000, 0.02943536, 0.02969684, 0.02943529, 0.02943569, 11.22200184], [1516510200000, 0.02943569, 0.02969684, 0.02943566, 0.02969684, 8.06867489], [1516510260000, 0.02969684, 0.02969685, 0.02943576, 0.02943714, 24.88142028], [1516510320000, 0.02969684, 0.0297, 0.02943718, 0.02943743, 22.01378394], [1516510380000, 0.0297, 0.0297, 0.02943772, 0.02943811, 24.96372408], [1516510440000, 0.02943816, 0.02972814, 0.02943816, 0.02944336, 22.92506997], [1516510500000, 0.02970001, 0.02972912, 0.02944376, 0.02972912, 22.2590473], [1516510560000, 0.0294464, 0.02985, 0.0294464, 0.02954893, 76.86827041], [1516510620000, 0.02962444, 0.02986542, 0.02945, 0.02945062, 68.81755146], [1516510680000, 0.02986532, 0.02986532, 0.02945087, 0.02945112, 12.91244894], [1516510740000, 0.02945137, 0.02945137, 0.02945137, 0.02945137, 0.42568286], [1516510800000, 0.02974737, 0.02974847, 0.02974737, 0.02974828, 5.48519393], [1516510860000, 0.0297482, 0.02979992, 0.02974777, 0.02979992, 8.52219669], [1516510920000, 0.02979992, 0.02979999, 0.02951784, 0.02979999, 48.20220994], [1516510980000, 0.0295209, 0.02952113, 0.0295209, 0.02952113, 2.09864167], [1516511040000, 0.02952136, 0.02979661, 0.02952003, 0.02952003, 8.96856086], [1516511100000, 0.02979644, 0.02979644, 0.02952003, 0.02979617, 3.09732199], [1516511160000, 0.02979528, 0.02979528, 0.02979528, 0.02979528, 0.61622658], [1516511220000, 0.02979494, 0.02979494, 0.02979494, 0.02979494, 2.75730729], [1516511280000, 0.02979404, 0.02979404, 0.02979352, 0.02979352, 0.89080167], [1516511340000, 0.02979297, 0.029796, 0.02945102, 0.02945112, 33.79653085], [1516511400000, 0.02979316, 0.02979317, 0.02979306, 0.02979306, 0.69143318], [1516511460000, 0.02979279, 0.02979279, 0.02952025, 0.02979189, 11.56313035], [1516511520000, 0.02978909, 0.02978909, 0.029465, 0.02964444, 10.61053602], [1516511580000, 0.02976994, 0.02976994, 0.02943326, 0.02943326, 14.62589154], [1516511640000, 0.02943326, 0.02943326, 0.02941322, 0.02941322, 0.37054773], [1516511700000, 0.02957597, 0.02957597, 0.02957597, 0.02957597, 0.21146867], [1516511760000, 0.02973575, 0.02973575, 0.02957597, 0.02957597, 7.32325834], [1516511820000, 0.02957597, 0.02957597, 0.02957597, 0.02957597, 21.87025492], [1516511880000, 0.02957597, 0.02957597, 0.02945009, 0.02957597, 4.37359348], [1516511940000, 0.02957597, 0.02957597, 0.0294501, 0.02957597, 1.33775581], [1516512000000, 0.02957596, 0.02957597, 0.02957596, 0.02957597, 1.49307838], [1516512060000, 0.02957597, 0.02957597, 0.02957597, 0.02957597, 2.24349506], [1516512120000, 0.0295, 0.02957597, 0.0295, 0.02957597, 1.04737319], [1516512180000, 0.02957596, 0.02974999, 0.02957596, 0.02971646, 5.14233127], [1516512240000, 0.02945102, 0.02971638, 0.02945, 0.02971638, 3.29420623], [1516512300000, 0.02971637, 0.02971639, 0.02971636, 0.02971636, 12.45206647], [1516512360000, 0.02971636, 0.02978415, 0.02941321, 0.02975, 71.33196036], [1516512420000, 0.02975, 0.02989999, 0.02975, 0.02978399, 67.19310668], [1516512480000, 0.02978399, 0.0299, 0.02978399, 0.02978399, 1.23828506], [1516512540000, 0.0299, 0.02999892, 0.02955, 0.02999384, 48.03974965], [1516512600000, 0.0299936, 0.0299936, 0.02960005, 0.02997621, 71.49606389], [1516512660000, 0.02997603, 0.02997621, 0.02997603, 0.02997621, 0.53651123], [1516512720000, 0.02997585, 0.02997585, 0.02966553, 0.02966555, 4.93077174], [1516512840000, 0.02997584, 0.02997584, 0.02997584, 0.02997584, 0.31234941], [1516512900000, 0.02997532, 0.02997532, 0.02965, 0.029795, 2.31274848], [1516512960000, 0.029795, 0.029795, 0.029795, 0.029795, 0.3961089], [1516513020000, 0.02993653, 0.02993653, 0.02962456, 0.02962461, 12.37149128], [1516513080000, 0.02962558, 0.02962602, 0.02962558, 0.02962602, 0.22505022], [1516513140000, 0.02962705, 0.02992933, 0.02962705, 0.02962818, 3.10525436], [1516513260000, 0.02963179, 0.02993627, 0.02963179, 0.02993627, 0.51922182], [1516513320000, 0.02993627, 0.02993627, 0.02993627, 0.02993627, 0.31217], [1516513380000, 0.02992239, 0.02992239, 0.02963539, 0.0299223, 4.22192346], [1516513440000, 0.02992251, 0.02992251, 0.02963617, 0.02963617, 1.03665785], [1516513560000, 0.02992231, 0.02992231, 0.02992231, 0.02992231, 0.48041653], [1516513620000, 0.02992212, 0.02992212, 0.02963903, 0.02963924, 9.20936938], [1516513680000, 0.02963934, 0.02992172, 0.02963933, 0.02992172, 4.15973794], [1516513800000, 0.02964071, 0.02964095, 0.02964071, 0.02964094, 0.32993167], [1516513920000, 0.02964396, 0.02964409, 0.02964396, 0.02964406, 0.85034427], [1516513980000, 0.0299186, 0.0299186, 0.0299186, 0.0299186, 0.25129001], [1516514040000, 0.02991787, 0.02991787, 0.02991725, 0.02991725, 11.94051207], [1516514100000, 0.02991681, 0.02991681, 0.02964802, 0.02964802, 5.66860749], [1516514160000, 0.02964801, 0.02964801, 0.02964801, 0.02964801, 7.731341], [1516514220000, 0.02964801, 0.02991641, 0.02960001, 0.0299163, 5.92985681], [1516514280000, 0.02991622, 0.0299186, 0.02991622, 0.0299186, 2.0], [1516514340000, 0.02960211, 0.02991824, 0.02960211, 0.02991824, 4.12692426], [1516514400000, 0.02991766, 0.02991766, 0.02991758, 0.0299176, 13.49723246], [1516514460000, 0.0299176, 0.0299176, 0.02960411, 0.02960411, 6.22947703], [1516514520000, 0.02960435, 0.02988698, 0.02960435, 0.02988698, 12.11416988], [1516514580000, 0.02960502, 0.02988679, 0.02960502, 0.02988666, 12.67810495], [1516514700000, 0.02960456, 0.02960456, 0.0296045, 0.0296045, 6.43949934], [1516514820000, 0.02988471, 0.02988471, 0.02988471, 0.02988471, 0.10232176], [1516514880000, 0.02988443, 0.02988443, 0.02988443, 0.02988443, 0.07694804], [1516514940000, 0.02988457, 0.02988471, 0.02988442, 0.02988442, 7.51032873], [1516515000000, 0.02988465, 0.02988465, 0.02988461, 0.02988461, 0.35905551], [1516515060000, 0.02981902, 0.02981902, 0.02975351, 0.02975351, 0.03697305], [1516515120000, 0.02988412, 0.02988412, 0.02988412, 0.02988412, 0.34870242], [1516515180000, 0.0298846, 0.02993627, 0.0298846, 0.02993627, 26.65899655], [1516515240000, 0.02993627, 0.02993627, 0.02993626, 0.02993627, 3.37546873], [1516515300000, 0.02993626, 0.02993627, 0.02993626, 0.02993627, 0.52611526], [1516515480000, 0.02975351, 0.02975351, 0.02968692, 0.0297535, 1.48251151], [1516515540000, 0.02975348, 0.02975351, 0.02975348, 0.02975351, 6.24412363], [1516515600000, 0.02989483, 0.02993626, 0.02989483, 0.02993626, 0.33450633], [1516515660000, 0.02993626, 0.02993627, 0.02993626, 0.02993627, 0.14343538], [1516515720000, 0.02993613, 0.02993626, 0.0297535, 0.02993626, 9.27792839], [1516515780000, 0.02993625, 0.02993626, 0.02993625, 0.02993626, 0.12446123], [1516515840000, 0.02993626, 0.02993626, 0.0297535, 0.0297535, 6.65836938], [1516515900000, 0.0297535, 0.02975353, 0.0297535, 0.02975353, 1.89761007], [1516515960000, 0.02975353, 0.02975354, 0.0297535, 0.0297535, 25.9554381], [1516516020000, 0.0297535, 0.0297535, 0.0297535, 0.0297535, 1.52427772], [1516516080000, 0.0297535, 0.02975352, 0.0297535, 0.02975352, 24.36593078], [1516516200000, 0.02975352, 0.02993627, 0.0297535, 0.02993627, 4.08710727], [1516516260000, 0.0297535, 0.02993626, 0.0297535, 0.02993626, 6.8914241], [1516516320000, 0.02993627, 0.02993627, 0.02983157, 0.02983157, 10.44417515], [1516516380000, 0.02975373, 0.02975373, 0.02975365, 0.02975365, 1.3219554], [1516516440000, 0.02995, 0.03, 0.02975399, 0.02999001, 21.09307068], [1516516500000, 0.0297629, 0.02976303, 0.0297535, 0.02976288, 28.38058148], [1516516560000, 0.02999224, 0.02999224, 0.02976288, 0.02976294, 8.97642112], [1516516680000, 0.02988446, 0.03, 0.02976347, 0.02976347, 25.20086026], [1516516740000, 0.02999999, 0.03, 0.02999999, 0.03, 1.98515613], [1516516800000, 0.03, 0.03, 0.03, 0.03, 1.16961574], [1516516860000, 0.03, 0.03, 0.03, 0.03, 0.38733661], [1516516920000, 0.03, 0.03, 0.03, 0.03, 11.921876], [1516516980000, 0.02999998, 0.03, 0.02976472, 0.03, 35.40168478], [1516517040000, 0.02999999, 0.0300196, 0.02999999, 0.0300196, 0.43177967], [1516517100000, 0.03, 0.03, 0.03, 0.03, 1.4076675], [1516517160000, 0.03, 0.03, 0.03, 0.03, 22.13025916], [1516517220000, 0.03001959, 0.0302, 0.03, 0.03, 104.33333606], [1516517280000, 0.03, 0.03, 0.03, 0.03, 0.62104912], [1516517340000, 0.03019867, 0.03019867, 0.03000001, 0.03019826, 0.73880749], [1516517400000, 0.03, 0.03017884, 0.03, 0.03017884, 1.89198225], [1516517460000, 0.03, 0.03, 0.03, 0.03, 1.11156854], [1516517520000, 0.03, 0.03, 0.03, 0.03, 5.25], [1516517580000, 0.03, 0.03017876, 0.03, 0.03017875, 8.37273608], [1516517640000, 0.03000001, 0.03021685, 0.03000001, 0.0301788, 3.95633317], [1516517700000, 0.0301788, 0.03024992, 0.0301788, 0.03024963, 12.58733297], [1516517820000, 0.03000039, 0.0300004, 0.03000039, 0.03000039, 1.0561504], [1516517880000, 0.03000039, 0.03024986, 0.0299, 0.0299, 6.27106458], [1516517940000, 0.03000039, 0.03000039, 0.03000039, 0.03000039, 0.47712928], [1516518000000, 0.03024894, 0.03024894, 0.02990052, 0.03024851, 2.82710125], [1516518060000, 0.02990118, 0.02990118, 0.02990116, 0.02990116, 15.20570106], [1516518120000, 0.0299014, 0.02990218, 0.0299014, 0.02990218, 3.60767025], [1516518180000, 0.02990237, 0.02990237, 0.02990218, 0.02990218, 16.0], [1516518300000, 0.0302462, 0.0302462, 0.02985052, 0.02985059, 2.17656175], [1516518360000, 0.0298506, 0.02985081, 0.0298506, 0.02985081, 1.97250107], [1516518420000, 0.02985081, 0.03014975, 0.02985081, 0.03014975, 20.74753611], [1516518480000, 0.0300999, 0.0300999, 0.0298505, 0.03009976, 2.53503221], [1516518540000, 0.03008986, 0.03008986, 0.03008986, 0.03008986, 0.22328033], [1516518600000, 0.03008879, 0.0300888, 0.03008868, 0.03008871, 2.6916315], [1516518660000, 0.03019987, 0.03019996, 0.03008871, 0.03008871, 19.03582109], [1516518720000, 0.02986413, 0.02986413, 0.02985089, 0.02985089, 2.64477986], [1516518780000, 0.02985092, 0.0301338, 0.02979781, 0.02979789, 5.08616918], [1516518840000, 0.0300875, 0.03013351, 0.02979057, 0.03009977, 4.95176828], [1516518900000, 0.02979071, 0.03009929, 0.02976411, 0.03009919, 3.53054319], [1516518960000, 0.03009905, 0.03009905, 0.03009905, 0.03009905, 0.1], [1516519020000, 0.03009862, 0.03009863, 0.02976499, 0.02976604, 11.67287837], [1516519080000, 0.0300895, 0.0300895, 0.03008931, 0.03008931, 0.4367197], [1516519200000, 0.02979, 0.03006957, 0.02979, 0.03006957, 0.69339144], [1516519260000, 0.02979064, 0.02979064, 0.02979064, 0.02979064, 0.5], [1516519320000, 0.02979251, 0.02979289, 0.02979251, 0.02979289, 2.68731282], [1516519380000, 0.02979441, 0.02979441, 0.02979441, 0.02979441, 0.2], [1516519500000, 0.02979642, 0.02979642, 0.02979085, 0.02979086, 11.37182958], [1516519560000, 0.02979086, 0.02979088, 0.02975, 0.02975, 17.93654394], [1516519620000, 0.03006655, 0.03006655, 0.03006655, 0.03006655, 0.0413454], [1516519800000, 0.03002853, 0.03002853, 0.03002814, 0.03002814, 0.99286673], [1516519860000, 0.03002792, 0.03002792, 0.0297, 0.0297, 0.61102093], [1516519920000, 0.0297, 0.02999993, 0.0297, 0.02999993, 3.59042745], [1516519980000, 0.02999976, 0.02999976, 0.02982581, 0.02982581, 0.12620683], [1516520040000, 0.02999905, 0.02999905, 0.02999859, 0.02999859, 0.39741729], [1516520100000, 0.02965, 0.02999843, 0.02963249, 0.02963605, 6.53768341], [1516520220000, 0.0299491, 0.0299491, 0.0299489, 0.0299489, 0.27338092], [1516520280000, 0.02994857, 0.02994979, 0.02994857, 0.02994979, 0.15390239], [1516520340000, 0.02994951, 0.02994951, 0.02994939, 0.02994939, 0.13940409], [1516520400000, 0.02963777, 0.02994931, 0.02963777, 0.02973806, 31.28342855], [1516520460000, 0.02989299, 0.02989299, 0.02963823, 0.02963823, 5.11901613], [1516520520000, 0.02989256, 0.02989256, 0.02963832, 0.02963832, 0.09643357], [1516520580000, 0.02963864, 0.0296388, 0.02963864, 0.0296388, 3.47298801], [1516520640000, 0.02986186, 0.02994788, 0.02986186, 0.02994788, 3.68199235], [1516520700000, 0.02994692, 0.02994699, 0.02963959, 0.0296396, 38.70276685], [1516520760000, 0.02963976, 0.02963976, 0.02943085, 0.02950109, 118.94548504], [1516520820000, 0.02975, 0.02975, 0.02943, 0.02943, 1.85160114], [1516520880000, 0.02967, 0.02967116, 0.02943004, 0.02943205, 2.57425908], [1516520940000, 0.02967115, 0.02967115, 0.029442, 0.0296, 6.19095222], [1516521000000, 0.0296, 0.02973622, 0.02959999, 0.02973622, 9.85787551], [1516521060000, 0.02945, 0.0297357, 0.0294, 0.02940012, 13.96192486], [1516521120000, 0.02969976, 0.02969976, 0.02969976, 0.02969976, 0.03367027], [1516521180000, 0.02969935, 0.02975, 0.02950017, 0.02950017, 6.7015292], [1516521240000, 0.029662, 0.02979975, 0.029662, 0.02967121, 30.32105378], [1516521300000, 0.02967124, 0.02967124, 0.02967116, 0.02967116, 2.0089871], [1516521360000, 0.02967124, 0.02967124, 0.02967124, 0.02967124, 0.0022647], [1516521420000, 0.02967124, 0.02985, 0.02967124, 0.02974281, 1.63480877], [1516521480000, 0.02974281, 0.02985, 0.02967124, 0.02967124, 1.76190467], [1516521540000, 0.02967134, 0.02984991, 0.02967134, 0.02984983, 3.02490213], [1516521600000, 0.02984991, 0.02984991, 0.02984991, 0.02984991, 0.33501061], [1516521660000, 0.02984991, 0.02995, 0.02984991, 0.02985, 10.20808208], [1516521720000, 0.02985, 0.0300016, 0.02984991, 0.02984991, 34.6580234], [1516521780000, 0.02967137, 0.0298, 0.02967137, 0.0298, 7.66451842], [1516521840000, 0.0298, 0.0298, 0.02971486, 0.0298, 5.10290074], [1516521900000, 0.0298, 0.02984999, 0.0298, 0.02984999, 0.34577777], [1516521960000, 0.029716, 0.02984999, 0.029716, 0.02984999, 0.50764578], [1516522140000, 0.02987706, 0.02987706, 0.02984999, 0.02984999, 3.78789044], [1516522200000, 0.02973084, 0.02984999, 0.02973084, 0.02984999, 5.28600171], [1516522260000, 0.03002742, 0.03002742, 0.03002742, 0.03002742, 0.49954341], [1516522440000, 0.02985, 0.02987985, 0.02984999, 0.02984999, 2.74274584], [1516522500000, 0.02975798, 0.03004073, 0.02972448, 0.02975801, 17.57805711], [1516522560000, 0.029878, 0.029878, 0.02971433, 0.02971433, 2.20657225], [1516522620000, 0.029878, 0.029878, 0.02971443, 0.029878, 0.3639839], [1516522680000, 0.029878, 0.029878, 0.029878, 0.029878, 0.1602069], [1516522740000, 0.02987799, 0.02987799, 0.02972, 0.02972, 1.21709645], [1516522800000, 0.02987789, 0.0298779, 0.0298769, 0.0298769, 0.37469442], [1516522860000, 0.0297286, 0.0297286, 0.02967125, 0.02967125, 5.49262546], [1516522920000, 0.02967125, 0.02967125, 0.02955, 0.02955, 6.66859844], [1516522980000, 0.02955, 0.02986419, 0.02955, 0.02986415, 10.47191931], [1516523040000, 0.02976664, 0.02976664, 0.02951548, 0.02951548, 0.28314611], [1516523100000, 0.02987796, 0.02987796, 0.02987796, 0.02987796, 0.16734744], [1516523160000, 0.02984998, 0.02984999, 0.02984998, 0.02984999, 0.049284], [1516523220000, 0.02984999, 0.02985, 0.02984999, 0.02984999, 33.47103743], [1516523280000, 0.02984999, 0.02985, 0.02984999, 0.02985, 0.38105781], [1516523340000, 0.02985, 0.02985, 0.02985, 0.02985, 0.13275278], [1516523400000, 0.02985, 0.02985, 0.02985, 0.02985, 5.54296639], [1516523460000, 0.02985, 0.02985, 0.02984999, 0.02985, 12.53531249], [1516523520000, 0.02987796, 0.0299, 0.02987796, 0.0299, 14.72090381], [1516523580000, 0.0299, 0.0299, 0.02973997, 0.0299, 38.2525602], [1516523640000, 0.0299, 0.0299, 0.02974013, 0.0299, 10.27547254], [1516523700000, 0.02989999, 0.0299, 0.02974218, 0.02974218, 19.66048863], [1516523760000, 0.02974225, 0.0299, 0.02974225, 0.0299, 14.22502491], [1516523820000, 0.02974284, 0.0299, 0.02974284, 0.02974309, 3.68883078], [1516523880000, 0.0299, 0.0299, 0.0299, 0.0299, 0.07413431], [1516523940000, 0.02989999, 0.0299, 0.02974409, 0.0299, 0.73474406], [1516524000000, 0.0299, 0.0299, 0.02981986, 0.02981986, 2.17033358], [1516524060000, 0.0299, 0.0299, 0.02981986, 0.02981986, 4.40554397], [1516524120000, 0.02981986, 0.02981986, 0.02981985, 0.02981985, 5.56923517], [1516524180000, 0.02961465, 0.02981985, 0.02961465, 0.02981985, 5.35466715], [1516524240000, 0.02981985, 0.02989997, 0.02981985, 0.02989997, 7.67296633], [1516524300000, 0.02989997, 0.0299, 0.02981985, 0.0299, 7.66413066], [1516524360000, 0.02981985, 0.02989997, 0.02960056, 0.02960056, 5.39345699], [1516524420000, 0.0297187, 0.029876, 0.02960088, 0.02984994, 5.1010669], [1516524480000, 0.02984992, 0.02984995, 0.02960138, 0.02984995, 4.85069552], [1516524540000, 0.0296, 0.02984986, 0.02956107, 0.02984984, 1.3829022], [1516524660000, 0.02984985, 0.02984986, 0.02984985, 0.02984986, 0.65892578], [1516524720000, 0.02984986, 0.02985, 0.02984986, 0.02985, 0.1989349], [1516524780000, 0.02972298, 0.02985, 0.02972298, 0.02985, 0.29158835], [1516524840000, 0.029845, 0.029845, 0.02972298, 0.029845, 0.55322795], [1516524900000, 0.02984499, 0.02985, 0.02984499, 0.02985, 0.38680154], [1516524960000, 0.029845, 0.02985, 0.02972299, 0.02985, 9.12988756], [1516525080000, 0.02985, 0.02985, 0.029723, 0.02985, 2.79566484], [1516525140000, 0.02984999, 0.02985, 0.029723, 0.02985, 14.52439394], [1516525200000, 0.02984999, 0.02985, 0.02972921, 0.02972921, 14.43378584], [1516525260000, 0.02984999, 0.0299, 0.0298, 0.0299, 41.85395011], [1516525320000, 0.0299, 0.02995, 0.0299, 0.02995, 2.56295636], [1516525380000, 0.02995, 0.03, 0.02974079, 0.029905, 1.79263378], [1516525440000, 0.029905, 0.03, 0.02979175, 0.02999999, 82.28846939], [1516525500000, 0.02975697, 0.03, 0.02975696, 0.03, 50.40901851], [1516525560000, 0.02975913, 0.03, 0.02975913, 0.02975956, 22.30862171], [1516525620000, 0.03, 0.03, 0.02975965, 0.02980001, 13.27418248], [1516525680000, 0.02980001, 0.03, 0.02980001, 0.02980017, 19.99257244], [1516525740000, 0.02999999, 0.03, 0.02980062, 0.03, 3.41274757], [1516525800000, 0.02999998, 0.03, 0.02999998, 0.02999998, 1.66666666], [1516525860000, 0.02980116, 0.02980117, 0.02980116, 0.02980117, 0.7619048], [1516525920000, 0.02999999, 0.03, 0.02980006, 0.02980006, 1.10729265], [1516525980000, 0.02999999, 0.02999999, 0.02999999, 0.02999999, 3.21718167], [1516526040000, 0.03, 0.03004074, 0.03, 0.03004074, 116.41288785], [1516526100000, 0.03004074, 0.03006654, 0.029801, 0.0298072, 61.33870387], [1516526160000, 0.02980731, 0.030094, 0.02980731, 0.02981601, 7.71578868], [1516526220000, 0.02981608, 0.03009836, 0.02981608, 0.03, 4.93083707], [1516526280000, 0.0298201, 0.02990164, 0.02980007, 0.02990163, 2.93964401], [1516526340000, 0.0298253, 0.02990155, 0.02980007, 0.02990155, 3.86007674], [1516526400000, 0.02980007, 0.02999987, 0.02980007, 0.02999972, 3.48534981], [1516526460000, 0.02999936, 0.02999939, 0.02999936, 0.02999939, 1.98403314], [1516526520000, 0.02980008, 0.02999937, 0.02980008, 0.02999937, 2.16966831], [1516526580000, 0.02999937, 0.02999937, 0.02980008, 0.02980008, 0.63143821], [1516526640000, 0.02980009, 0.02999933, 0.02975222, 0.02975222, 21.00133667], [1516526700000, 0.02999933, 0.02999997, 0.02975225, 0.02999997, 26.67191867], [1516526760000, 0.02980008, 0.02999931, 0.02973285, 0.02973285, 39.61047306], [1516526820000, 0.0298, 0.0298, 0.0298, 0.0298, 0.10313087], [1516526880000, 0.0298, 0.0298, 0.02972921, 0.0298, 14.90721806], [1516526940000, 0.0298, 0.0298, 0.0298, 0.0298, 0.58555918], [1516527000000, 0.0298, 0.0298, 0.0297292, 0.0298, 2.62726786], [1516527060000, 0.02979999, 0.0299459, 0.02961263, 0.0298, 5.27830691], [1516527120000, 0.0298, 0.0298, 0.0298, 0.0298, 1.31015107], [1516527180000, 0.0299492, 0.0299492, 0.0299492, 0.0299492, 2.0], [1516527240000, 0.02994914, 0.02994914, 0.02994914, 0.02994914, 0.13942489], [1516527300000, 0.02961249, 0.02994739, 0.02961248, 0.02994739, 2.93251545], [1516527360000, 0.02989704, 0.02989704, 0.02961248, 0.02961248, 0.88399605], [1516527420000, 0.02961248, 0.02961248, 0.02961248, 0.02961248, 3.0], [1516527600000, 0.02972703, 0.02995, 0.02972703, 0.02995, 0.43982294], [1516527660000, 0.02978226, 0.02978226, 0.02978226, 0.02978226, 3.0], [1516527780000, 0.02978226, 0.0299, 0.02978226, 0.02978226, 13.06506821], [1516527840000, 0.02978226, 0.02978226, 0.02978226, 0.02978226, 0.25725774], [1516527900000, 0.02989998, 0.02989999, 0.02978226, 0.02978226, 5.81423008], [1516527960000, 0.02978226, 0.02978226, 0.02978226, 0.02978226, 0.45269851], [1516528020000, 0.0296, 0.02988914, 0.0296, 0.0296, 6.53041268], [1516528140000, 0.0296, 0.02971777, 0.0296, 0.02971777, 0.96146531], [1516528200000, 0.02971777, 0.02971777, 0.02971777, 0.02971777, 1.69333023], [1516528260000, 0.02971777, 0.02988588, 0.02971777, 0.02988588, 4.0], [1516528320000, 0.02988588, 0.02988588, 0.02988588, 0.02988588, 0.55093882], [1516528380000, 0.02988585, 0.02988585, 0.02988585, 0.02988585, 0.66753932], [1516528440000, 0.02988597, 0.02988597, 0.02988596, 0.02988597, 2.23052436], [1516528500000, 0.02988597, 0.02988597, 0.02968226, 0.02968226, 3.53850077], [1516528560000, 0.02968227, 0.0298881, 0.02968227, 0.0298881, 1.07124313], [1516528620000, 0.02965706, 0.0298881, 0.02965706, 0.0298881, 5.88432169], [1516528680000, 0.029878, 0.0299, 0.0296596, 0.02989997, 23.25041072], [1516528740000, 0.02989997, 0.0299, 0.029889, 0.0299, 0.39615354], [1516528800000, 0.02968244, 0.0299, 0.02968244, 0.0299, 7.0738567], [1516528860000, 0.02965889, 0.02965889, 0.02965888, 0.02965888, 1.82506562], [1516528920000, 0.0298996, 0.0298996, 0.0298996, 0.0298996, 0.03006531], [1516528980000, 0.02965557, 0.0299, 0.02965557, 0.0299, 21.2346564], [1516529040000, 0.02965557, 0.02965557, 0.02960693, 0.02960693, 1.27753471], [1516529100000, 0.02960798, 0.02989997, 0.02960786, 0.02989997, 9.06969579], [1516529160000, 0.02989903, 0.02999886, 0.02956117, 0.02961225, 159.7824474], [1516529220000, 0.02972459, 0.02989768, 0.02961225, 0.02989768, 0.95207268], [1516529280000, 0.02989686, 0.02989686, 0.02989686, 0.02989686, 1.74736939], [1516529340000, 0.0298967, 0.0298967, 0.0298967, 0.0298967, 9.42443384], [1516529460000, 0.02989579, 0.02989579, 0.02989579, 0.02989579, 0.03774069], [1516529520000, 0.02989542, 0.02989542, 0.02989542, 0.02989542, 0.26354382], [1516529580000, 0.02965, 0.02965, 0.02965, 0.02965, 1.32864177], [1516529640000, 0.02960016, 0.02989612, 0.02960016, 0.02989612, 3.57459821], [1516529700000, 0.02989612, 0.02989988, 0.02989612, 0.02989988, 0.33449178], [1516529760000, 0.02965, 0.02965, 0.02965, 0.02965, 0.16260162], [1516529820000, 0.02989988, 0.02989988, 0.02989984, 0.02989984, 0.10556892], [1516529880000, 0.02989984, 0.02989984, 0.02989984, 0.02989984, 0.27720734], [1516529940000, 0.02989977, 0.0298998, 0.0298996, 0.0298996, 4.28921245], [1516530000000, 0.0298993, 0.0298993, 0.02975103, 0.02975103, 0.27274064], [1516530060000, 0.02975103, 0.02989799, 0.02975103, 0.02989799, 0.36081431], [1516530120000, 0.02975103, 0.02988, 0.02975103, 0.02978078, 3.85268933], [1516530180000, 0.02975102, 0.02978078, 0.02975102, 0.02975102, 5.67550779], [1516530240000, 0.02978078, 0.02978078, 0.02975102, 0.02975102, 8.10746695], [1516530300000, 0.02978078, 0.02978078, 0.02975102, 0.02978078, 0.45176464], [1516530360000, 0.02981056, 0.02981056, 0.02981056, 0.02981056, 0.03705761], [1516530420000, 0.02989983, 0.02989983, 0.02989983, 0.02989983, 0.04608761], [1516530540000, 0.02975102, 0.02975102, 0.02975102, 0.02975102, 1.0], [1516530600000, 0.02989984, 0.0299, 0.02989984, 0.0299, 1.79509352], [1516530660000, 0.0299, 0.0299, 0.02989999, 0.0299, 40.59468673], [1516530720000, 0.0299, 0.0299, 0.0299, 0.0299, 22.95845998], [1516530780000, 0.0299, 0.0299, 0.02975107, 0.0299, 29.1954553], [1516530840000, 0.0299, 0.02999931, 0.02975135, 0.02975201, 24.53451822], [1516530900000, 0.02999931, 0.03000872, 0.02999923, 0.03000872, 0.86739001], [1516530960000, 0.0300387, 0.03009296, 0.02978648, 0.02978648, 6.94602151], [1516531020000, 0.03009836, 0.03009973, 0.03009836, 0.03009973, 0.03700794], [1516531080000, 0.02979216, 0.03014409, 0.02979216, 0.03014409, 3.64722676], [1516531140000, 0.03013202, 0.0302, 0.02999634, 0.02999637, 4.2716676], [1516531200000, 0.0302, 0.0302, 0.02999698, 0.0302, 7.99725981], [1516531380000, 0.03019997, 0.03019997, 0.02999862, 0.02999862, 0.15], [1516531440000, 0.03019996, 0.03019996, 0.03019995, 0.03019995, 0.07350291], [1516531500000, 0.03019995, 0.03019995, 0.02999967, 0.02999974, 12.12770647], [1516531560000, 0.03019995, 0.03019995, 0.02999984, 0.02999986, 0.70255244], [1516531620000, 0.03019992, 0.03019992, 0.03019992, 0.03019992, 0.07350004], [1516531680000, 0.03019992, 0.03019993, 0.03019992, 0.03019992, 0.07349873], [1516531740000, 0.03019992, 0.0302, 0.03000111, 0.0302, 50.11534476], [1516531800000, 0.0302, 0.0302, 0.0302, 0.0302, 2.7065279], [1516531860000, 0.03019999, 0.0302, 0.03019999, 0.0302, 6.86299599], [1516531920000, 0.0302, 0.0302, 0.0302, 0.0302, 3.78945548], [1516531980000, 0.0302, 0.0302, 0.0302, 0.0302, 6.52187062], [1516532040000, 0.0302, 0.0302, 0.0302, 0.0302, 0.14841301], [1516532100000, 0.03019999, 0.0302, 0.03019999, 0.0302, 8.37031227], [1516532160000, 0.0302, 0.0302, 0.03001373, 0.0302, 0.67971718], [1516532220000, 0.0302, 0.0302, 0.0302, 0.0302, 0.07346355], [1516532280000, 0.03001642, 0.03001642, 0.03001642, 0.03001642, 0.25], [1516532340000, 0.0302, 0.0302, 0.03001881, 0.03019998, 1.75367932], [1516532400000, 0.03019998, 0.03019998, 0.03001949, 0.03002001, 3.03907688], [1516532460000, 0.03019998, 0.03019998, 0.03019998, 0.03019998, 1.1630226], [1516532520000, 0.03002, 0.03019998, 0.03002, 0.03019998, 4.6349618], [1516532640000, 0.03001997, 0.03001997, 0.03001997, 0.03001997, 1.00557863], [1516532700000, 0.03019997, 0.03019997, 0.03019997, 0.03019997, 0.33112582], [1516532760000, 0.03019968, 0.03019968, 0.03019928, 0.03019928, 21.11699883], [1516532820000, 0.03000002, 0.03000002, 0.02999974, 0.02999974, 3.27290572], [1516532880000, 0.03019795, 0.03019795, 0.03019756, 0.03019756, 0.08222651], [1516532940000, 0.02990001, 0.02990001, 0.02990001, 0.02990001, 2.725], [1516533000000, 0.02990002, 0.02990002, 0.02990001, 0.02990001, 2.00936628], [1516533120000, 0.0301949, 0.0301949, 0.0301949, 0.0301949, 0.23543597], [1516533300000, 0.03017317, 0.03017317, 0.0299, 0.0299, 0.50502994], [1516533360000, 0.02990002, 0.02990002, 0.02990002, 0.02990002, 0.76487187], [1516533420000, 0.02990002, 0.02990002, 0.02990001, 0.02990002, 3.08957637], [1516533480000, 0.03014061, 0.03014061, 0.03014061, 0.03014061, 0.04017829], [1516533540000, 0.02990007, 0.02990007, 0.02990007, 0.02990007, 0.84157542], [1516533600000, 0.02990024, 0.03013921, 0.02990024, 0.02990027, 1.26621635], [1516533660000, 0.03, 0.03, 0.03, 0.03, 4.4986493], [1516533720000, 0.03, 0.03, 0.02990003, 0.02999997, 21.36442464], [1516533780000, 0.02999997, 0.02999997, 0.02999997, 0.02999997, 0.07374576], [1516533840000, 0.02999997, 0.02999997, 0.02999997, 0.02999997, 0.03687288], [1516533900000, 0.02999997, 0.02999997, 0.02990003, 0.02990003, 0.23950339], [1516533960000, 0.02999997, 0.03, 0.02999997, 0.03, 7.0553098], [1516534020000, 0.02999999, 0.03019998, 0.02999997, 0.02999997, 67.87479063], [1516534080000, 0.03019995, 0.03019995, 0.02999997, 0.02999997, 0.69954825], [1516534140000, 0.02999997, 0.03019995, 0.02999997, 0.02999997, 3.20840693], [1516534200000, 0.02999997, 0.02999997, 0.02999996, 0.02999996, 0.98451542], [1516534260000, 0.02999994, 0.03002994, 0.02999994, 0.03002994, 5.12944477], [1516534320000, 0.03002994, 0.03002994, 0.03002994, 0.03002994, 0.03675014], [1516534380000, 0.03002994, 0.03019992, 0.03, 0.03, 29.60512894], [1516534440000, 0.02999997, 0.02999997, 0.02999996, 0.02999997, 0.34436541], [1516534500000, 0.02999997, 0.03, 0.02999997, 0.03, 0.64341108], [1516534560000, 0.03, 0.03, 0.02990003, 0.02990003, 9.18874695], [1516534620000, 0.03, 0.03, 0.03, 0.03, 5.85922214], [1516534680000, 0.03, 0.03029775, 0.02990007, 0.03029775, 8.67351614], [1516534740000, 0.03029599, 0.03029599, 0.02990183, 0.02990384, 4.89795601], [1516534860000, 0.03029578, 0.03029578, 0.03029578, 0.03029578, 0.03457205], [1516534920000, 0.030287, 0.030287, 0.030287, 0.030287, 2.2], [1516534980000, 0.03028697, 0.03028697, 0.02995355, 0.02995372, 7.37233236], [1516535040000, 0.02995385, 0.03028397, 0.02995384, 0.03028397, 0.87412716], [1516535100000, 0.03028384, 0.03028384, 0.03028384, 0.03028384, 0.48524043], [1516535160000, 0.03028379, 0.03028381, 0.02995543, 0.02995543, 2.88759418], [1516535220000, 0.03023092, 0.03035, 0.03007829, 0.03007829, 4.47299289], [1516535280000, 0.02996236, 0.03007829, 0.02996236, 0.03007829, 0.65952575], [1516535340000, 0.03028132, 0.03028132, 0.03028132, 0.03028132, 0.0370884], [1516535400000, 0.03007173, 0.0304, 0.03007173, 0.0304, 4.67853562], [1516535520000, 0.03039649, 0.03039649, 0.03007078, 0.0301, 3.84372268], [1516535580000, 0.030072, 0.0300721, 0.0300505, 0.0300505, 8.72103852], [1516535700000, 0.0302222, 0.0302222, 0.0302222, 0.0302222, 0.99264777], [1516535880000, 0.03022219, 0.0302222, 0.03022219, 0.0302222, 0.03978785], [1516535940000, 0.03005051, 0.03005051, 0.03005051, 0.03005051, 0.3], [1516536000000, 0.0302222, 0.0302222, 0.0302222, 0.0302222, 0.72186562], [1516536060000, 0.0302222, 0.0302222, 0.03006, 0.03006, 1.36466319], [1516536120000, 0.0302222, 0.0302222, 0.03006006, 0.0302222, 0.16054905], [1516536180000, 0.03022218, 0.0302222, 0.03022218, 0.0302222, 3.59], [1516536300000, 0.0302222, 0.0302222, 0.03006455, 0.0302222, 0.84024801], [1516536360000, 0.03006665, 0.0302222, 0.03006665, 0.0302222, 0.14978478], [1516536420000, 0.03022219, 0.0302222, 0.03007046, 0.0302222, 13.8349881], [1516536480000, 0.03022048, 0.03022048, 0.03022048, 0.03022048, 0.16545069], [1516536540000, 0.03007337, 0.0304, 0.03007337, 0.0304, 3.04421743], [1516536600000, 0.0304, 0.03041383, 0.03020002, 0.03020066, 0.79156307], [1516536660000, 0.03039999, 0.03055, 0.03020413, 0.03020447, 80.20328146], [1516536720000, 0.03020461, 0.03020464, 0.03020461, 0.03020464, 4.33987228], [1516536780000, 0.03020467, 0.03053233, 0.03020464, 0.03051403, 7.15304688], [1516536900000, 0.03051321, 0.03051346, 0.03027835, 0.03027835, 22.62438459], [1516536960000, 0.03027835, 0.03051245, 0.03027835, 0.03027835, 0.48760348], [1516537020000, 0.03027835, 0.03027835, 0.03026, 0.03026, 1.62023674], [1516537080000, 0.03026, 0.03026, 0.03026, 0.03026, 9.58254165], [1516537140000, 0.03026, 0.03026, 0.03020001, 0.03020001, 0.36990481], [1516537200000, 0.03020001, 0.03025999, 0.0300505, 0.0300505, 2.57209971], [1516537260000, 0.0300505, 0.03026, 0.03000034, 0.03000034, 4.97915878], [1516537320000, 0.03026, 0.03026, 0.03026, 0.03026, 0.03430683], [1516537380000, 0.03025999, 0.03035, 0.03025999, 0.03026, 2.79261915], [1516537440000, 0.03026, 0.03043277, 0.03026, 0.03043277, 2.53691972], [1516537500000, 0.03042985, 0.03042985, 0.03026, 0.03026, 3.98611419], [1516537560000, 0.03026, 0.03043, 0.03026, 0.03043, 6.74385941], [1516537620000, 0.03010481, 0.03010481, 0.03010481, 0.03010481, 1.01724756], [1516537680000, 0.03011062, 0.03042997, 0.03011062, 0.03042997, 6.83943268], [1516537740000, 0.03011072, 0.03042997, 0.03011072, 0.03042997, 8.60134399], [1516537800000, 0.03042997, 0.03043, 0.03042997, 0.03043, 0.65724644], [1516537860000, 0.03042994, 0.03042994, 0.03012053, 0.03042986, 1.10876276], [1516537920000, 0.03012096, 0.03012097, 0.03011066, 0.03012097, 1.35935533], [1516537980000, 0.03042967, 0.03042968, 0.03042967, 0.03042968, 2.22385194], [1516538040000, 0.03017021, 0.03041865, 0.03017021, 0.03041845, 1.13939801], [1516538100000, 0.030408, 0.030408, 0.03040768, 0.03040768, 4.78134004], [1516538160000, 0.03040691, 0.03040692, 0.03040691, 0.03040692, 11.73951596], [1516538340000, 0.03030337, 0.03040671, 0.03030337, 0.03040671, 0.50342327], [1516538400000, 0.0303042, 0.0303042, 0.0303042, 0.0303042, 0.19124856], [1516538460000, 0.0303042, 0.0303042, 0.0303042, 0.0303042, 3.2569844], [1516538520000, 0.0303042, 0.03040675, 0.0303042, 0.0303042, 1.2201596], [1516538580000, 0.03012127, 0.03030419, 0.03012127, 0.03030419, 2.20215488], [1516538640000, 0.03012117, 0.03012117, 0.03012117, 0.03012117, 0.03771751], [1516538700000, 0.03012137, 0.03012137, 0.03012137, 0.03012137, 0.04377114], [1516538760000, 0.0303042, 0.03040673, 0.0303042, 0.03040673, 5.19828049], [1516538880000, 0.03040673, 0.03044991, 0.03040673, 0.03044983, 0.72957643], [1516538940000, 0.03044981, 0.03044981, 0.03044981, 0.03044981, 0.21706871], [1516539000000, 0.03044966, 0.03044966, 0.03021279, 0.03044959, 1.59056834], [1516539060000, 0.03044954, 0.03045, 0.03021286, 0.03021286, 15.94448585], [1516539120000, 0.03043896, 0.03043896, 0.0304388, 0.0304388, 0.27696708], [1516539180000, 0.03043861, 0.03043861, 0.03043861, 0.03043861, 0.041123], [1516539300000, 0.03043859, 0.03053147, 0.03043859, 0.03043861, 71.69573007], [1516539360000, 0.03012961, 0.03013019, 0.03012961, 0.03013019, 1.01130653], [1516539420000, 0.03032505, 0.03032505, 0.03018255, 0.03018255, 74.89071803], [1516539480000, 0.03018642, 0.03018652, 0.0300001, 0.0301, 194.79284491], [1516539540000, 0.0301, 0.03044302, 0.0301, 0.03044302, 9.0267628], [1516539600000, 0.0304428, 0.0304428, 0.03044231, 0.03044231, 0.94197442], [1516539720000, 0.03010003, 0.03010003, 0.03010003, 0.03010003, 0.5076211], [1516539780000, 0.03010004, 0.03010004, 0.03010004, 0.03010004, 0.27751793], [1516539840000, 0.03010004, 0.03010004, 0.0301, 0.0301, 3.17681911], [1516539900000, 0.03010004, 0.03029996, 0.03005001, 0.03029995, 8.63138073], [1516539960000, 0.03029919, 0.03029919, 0.03029919, 0.03029919, 0.12772036], [1516540020000, 0.03005, 0.03005, 0.03, 0.03, 5.16638935], [1516540080000, 0.03000001, 0.03029529, 0.03000001, 0.03000001, 2.3821085], [1516540140000, 0.03024965, 0.03024965, 0.03024947, 0.03024947, 0.08452952], [1516540200000, 0.03019961, 0.03019961, 0.03019914, 0.03019914, 0.28968345], [1516540260000, 0.03019851, 0.03019851, 0.03019851, 0.03019851, 0.13367153], [1516540320000, 0.03000003, 0.03019849, 0.03000003, 0.03019849, 0.11227927], [1516540380000, 0.03014983, 0.03014983, 0.03014983, 0.03014983, 0.64292517], [1516540440000, 0.03014983, 0.03014983, 0.03014983, 0.03014983, 0.55693517], [1516540500000, 0.03014974, 0.03014975, 0.03014974, 0.03014975, 1.35136787], [1516540560000, 0.0300749, 0.03007491, 0.03007487, 0.03007488, 3.41467928], [1516540620000, 0.03007488, 0.03014975, 0.03000005, 0.03007488, 8.73956243], [1516540680000, 0.03001003, 0.03014959, 0.03001003, 0.03014959, 6.90820327], [1516540740000, 0.03007489, 0.03014625, 0.03007489, 0.03014625, 0.07790149], [1516540800000, 0.03014625, 0.030148, 0.03014625, 0.030148, 0.78880008], [1516540860000, 0.030148, 0.030148, 0.030148, 0.030148, 0.21871506], [1516540920000, 0.03014991, 0.03014991, 0.030148, 0.030148, 0.07338564], [1516540980000, 0.03014799, 0.03014799, 0.03002001, 0.03014782, 10.23194652], [1516541040000, 0.03014773, 0.0301479, 0.03, 0.0301479, 16.0627734], [1516541100000, 0.0301479, 0.0301479, 0.0301479, 0.0301479, 0.41134991], [1516541160000, 0.03014769, 0.0301479, 0.03014769, 0.0301479, 3.95345591], [1516541220000, 0.0301479, 0.0301479, 0.0301477, 0.03014771, 0.70059477], [1516541280000, 0.03014767, 0.03014767, 0.03014747, 0.03014747, 0.21307252], [1516541340000, 0.03014747, 0.03014747, 0.03014739, 0.03014739, 0.14037473], [1516541400000, 0.03000001, 0.03014709, 0.03000001, 0.03014709, 3.47621168], [1516541460000, 0.030147, 0.03014745, 0.030147, 0.03014745, 0.5312318], [1516541520000, 0.03014745, 0.0301479, 0.03014745, 0.0301479, 7.40711455], [1516541580000, 0.03014782, 0.0301479, 0.03000003, 0.03000003, 3.82450565], [1516541640000, 0.03014781, 0.03014782, 0.03014781, 0.03014782, 15.825361], [1516541700000, 0.03014782, 0.0301479, 0.03014782, 0.0301479, 20.72560517], [1516541760000, 0.0301479, 0.03019795, 0.0301479, 0.03019795, 0.13772626], [1516541820000, 0.03019787, 0.03019787, 0.03019787, 0.03019787, 0.6326588], [1516541880000, 0.0301479, 0.0301479, 0.0301479, 0.0301479, 1.2849173], [1516542120000, 0.0300555, 0.0301479, 0.03000003, 0.03000003, 2.36877773], [1516542240000, 0.03000033, 0.03000033, 0.03000033, 0.03000033, 0.15], [1516542300000, 0.03000061, 0.03000085, 0.03000058, 0.03000085, 4.92303941], [1516542360000, 0.03000085, 0.03014789, 0.03000085, 0.03014789, 0.20822334], [1516542480000, 0.03014788, 0.03014788, 0.03014788, 0.03014788, 0.06172798], [1516542600000, 0.03000028, 0.03000028, 0.03000026, 0.03000026, 0.15], [1516542720000, 0.03000088, 0.03000099, 0.03000079, 0.03000099, 2.15], [1516542780000, 0.03014787, 0.03019902, 0.03014787, 0.03019902, 0.80454544], [1516542840000, 0.03019902, 0.03019902, 0.03000102, 0.03000102, 0.23147461], [1516542900000, 0.03026665, 0.03026686, 0.030003, 0.030003, 0.19691917], [1516542960000, 0.03009968, 0.03029733, 0.03009968, 0.03029733, 0.34700447], [1516543020000, 0.03029692, 0.03029692, 0.03009947, 0.03009947, 0.24566725], [1516543080000, 0.03029835, 0.03029835, 0.03029835, 0.03029835, 1.0], [1516543140000, 0.03029835, 0.03029835, 0.03029835, 0.03029835, 0.08160239], [1516543200000, 0.0302984, 0.03029858, 0.03000102, 0.0302985, 16.98199132], [1516543260000, 0.03029789, 0.03029789, 0.03029789, 0.03029789, 3.36556361], [1516543440000, 0.03029782, 0.03029782, 0.03029779, 0.03029779, 0.5550937], [1516543500000, 0.03029775, 0.03029775, 0.03029775, 0.03029775, 0.61390696], [1516543620000, 0.03029762, 0.03029762, 0.03029754, 0.03029754, 0.15563883], [1516543800000, 0.03018145, 0.03029729, 0.03018145, 0.03029724, 2.79200423], [1516543860000, 0.03029719, 0.03029728, 0.03029719, 0.03029728, 1.25588527], [1516543980000, 0.03007, 0.03029753, 0.03007, 0.03029753, 24.31946589], [1516544040000, 0.03029753, 0.03029766, 0.03029753, 0.03029766, 2.78738029], [1516544100000, 0.03029766, 0.03037, 0.03029766, 0.03037, 3.41398322], [1516544160000, 0.03037, 0.03041163, 0.03029766, 0.0303999, 6.4652726], [1516544220000, 0.03010184, 0.03010184, 0.03010181, 0.03010181, 0.17971844], [1516544280000, 0.03010217, 0.03010224, 0.03010213, 0.03010223, 10.51490202], [1516544340000, 0.03010234, 0.03010237, 0.03010234, 0.03010237, 0.7555256], [1516544400000, 0.03029164, 0.03029164, 0.03029164, 0.03029164, 0.64510803], [1516544460000, 0.03029126, 0.03029126, 0.03010181, 0.03010181, 0.83754978], [1516544520000, 0.03019381, 0.03029083, 0.0300625, 0.0300625, 1.0596876], [1516544580000, 0.03029031, 0.03029031, 0.03006339, 0.03006339, 3.4560552], [1516544640000, 0.03006348, 0.03006351, 0.03006348, 0.03006351, 1.27152982], [1516544700000, 0.0300626, 0.03028855, 0.0300625, 0.03006253, 3.77359268], [1516544760000, 0.03028744, 0.03028744, 0.03028744, 0.03028744, 0.13206703], [1516544820000, 0.03019991, 0.03028533, 0.03019991, 0.03028533, 7.21442956], [1516544880000, 0.03028441, 0.03028441, 0.03005011, 0.03005011, 0.84097377], [1516544940000, 0.03027618, 0.03029167, 0.03027618, 0.03029167, 0.99990484], [1516545000000, 0.0302916, 0.0302916, 0.0302916, 0.0302916, 1.47639593], [1516545060000, 0.03029159, 0.0302916, 0.03005267, 0.03005694, 2.53313556], [1516545120000, 0.03005701, 0.03005701, 0.03005694, 0.03005694, 21.24785053], [1516545240000, 0.03005017, 0.03005017, 0.03005017, 0.03005017, 1.1], [1516545300000, 0.03029156, 0.03029157, 0.03005, 0.03005, 23.57702339], [1516545360000, 0.03018604, 0.03018604, 0.03000005, 0.03000005, 25.50911144], [1516545420000, 0.03000005, 0.03000005, 0.03000004, 0.03000005, 0.51365047], [1516545480000, 0.03018578, 0.03018578, 0.03000003, 0.03000003, 0.81728192], [1516545540000, 0.03018566, 0.03018567, 0.03006504, 0.03006504, 7.03615636], [1516545600000, 0.03006504, 0.03006504, 0.03006504, 0.03006504, 1.70329322], [1516545660000, 0.03006496, 0.03006496, 0.03000004, 0.03006495, 2.88497397], [1516545720000, 0.03006487, 0.03006487, 0.03006487, 0.03006487, 0.03675011], [1516545780000, 0.03006479, 0.03006485, 0.02985374, 0.03000001, 7.11169915], [1516545840000, 0.03006484, 0.03006484, 0.02985388, 0.02986285, 0.78735184], [1516545900000, 0.03006467, 0.03006484, 0.02975108, 0.03006484, 80.16515837], [1516545960000, 0.03006484, 0.03006504, 0.02975904, 0.02976905, 3.13801347], [1516546020000, 0.03006267, 0.03006267, 0.02977109, 0.0297713, 17.33875402], [1516546080000, 0.02977133, 0.03006161, 0.02977133, 0.03006149, 6.49983402], [1516546140000, 0.02977531, 0.03006122, 0.02977531, 0.03, 3.2925623], [1516546200000, 0.02977622, 0.0301, 0.02977622, 0.03006112, 3.6058144], [1516546260000, 0.03009999, 0.03018604, 0.02977845, 0.03018604, 9.04476693], [1516546320000, 0.03018604, 0.03018604, 0.03005285, 0.03005285, 1.56598636], [1516546380000, 0.02985018, 0.02985018, 0.02980024, 0.02980025, 99.54813369], [1516546500000, 0.03005283, 0.03015, 0.03005283, 0.03015, 4.31606531], [1516546560000, 0.03015, 0.03015, 0.02990258, 0.03015, 1.86392967], [1516546620000, 0.03015, 0.03019944, 0.03005285, 0.03019944, 1.46071262], [1516546800000, 0.03019982, 0.0302, 0.03019982, 0.0302, 2.0234477], [1516546860000, 0.03019982, 0.03019982, 0.03005286, 0.03019969, 2.12198895], [1516546920000, 0.0300529, 0.0300529, 0.0300529, 0.0300529, 0.34904011], [1516546980000, 0.03005285, 0.03019952, 0.02990079, 0.02990079, 19.0551395], [1516547040000, 0.02990079, 0.03001146, 0.02975142, 0.02984732, 188.68261254], [1516547100000, 0.03004997, 0.03004997, 0.02975257, 0.02975257, 2.11271187], [1516547160000, 0.03004947, 0.03004948, 0.02975281, 0.02975281, 37.11157904], [1516547220000, 0.02975777, 0.03004899, 0.02975284, 0.03004899, 110.16446714], [1516547280000, 0.03004885, 0.03004897, 0.02976201, 0.02976201, 298.36750134], [1516547340000, 0.02976403, 0.03004842, 0.02976401, 0.03004832, 0.64024239], [1516547400000, 0.03004812, 0.03004812, 0.02977612, 0.03004751, 151.81130857], [1516547460000, 0.03004717, 0.03004718, 0.03004717, 0.03004718, 0.5], [1516547580000, 0.03004612, 0.03004612, 0.03004612, 0.03004612, 0.05669717], [1516547640000, 0.0300454, 0.0300454, 0.0300454, 0.0300454, 0.19890485], [1516547700000, 0.03004515, 0.03004515, 0.03004501, 0.03004507, 1.78373434], [1516547880000, 0.03004379, 0.03004379, 0.03004379, 0.03004379, 0.16], [1516547940000, 0.0299166, 0.0299166, 0.0299166, 0.0299166, 0.03979659], [1516548000000, 0.03004378, 0.03004389, 0.02980125, 0.02980125, 101.69047342], [1516548060000, 0.02980237, 0.03, 0.02980235, 0.03, 2.04209821], [1516548120000, 0.02980394, 0.03004378, 0.02980301, 0.03004378, 4.06537798], [1516548180000, 0.03004376, 0.03004376, 0.03004376, 0.03004376, 0.08966039], [1516548300000, 0.03004374, 0.03004377, 0.03004374, 0.03004376, 4.65752603], [1516548360000, 0.03004376, 0.03004376, 0.03004376, 0.03004376, 0.16984002], [1516548420000, 0.03004376, 0.03004376, 0.02980332, 0.02980332, 99.6], [1516548540000, 0.030043, 0.03004372, 0.030043, 0.03004372, 0.517621], [1516548600000, 0.03004372, 0.03004372, 0.02980432, 0.03, 1.46757433], [1516548660000, 0.02980575, 0.03, 0.02980575, 0.03, 17.38913096], [1516548720000, 0.02995628, 0.02995628, 0.02995628, 0.02995628, 0.40061724], [1516548780000, 0.02995628, 0.03, 0.02995628, 0.03, 0.50758197], [1516548840000, 0.02999999, 0.03, 0.0298097, 0.02981003, 2.79481847], [1516548900000, 0.02999999, 0.03, 0.0298102, 0.0298102, 1.78618652], [1516548960000, 0.02999668, 0.03, 0.02979292, 0.02999997, 5.71016839], [1516549020000, 0.02979677, 0.02979679, 0.02979676, 0.02979678, 22.38731197], [1516549080000, 0.0297968, 0.02979685, 0.02976742, 0.02976742, 109.94458121], [1516549140000, 0.02977235, 0.02977235, 0.02977235, 0.02977235, 1.0], [1516549200000, 0.02977216, 0.02999946, 0.02976752, 0.02976752, 5.47730891], [1516549260000, 0.02980377, 0.02980377, 0.02976742, 0.02976742, 2.2692539], [1516549320000, 0.02976742, 0.02976752, 0.02976742, 0.02976742, 75.20412501], [1516549380000, 0.02996064, 0.02996064, 0.02976742, 0.02976742, 24.00815207], [1516549440000, 0.02976742, 0.02995931, 0.02976742, 0.02976742, 10.99818896], [1516549500000, 0.02976742, 0.02976742, 0.0297, 0.02975, 122.33432754], [1516549560000, 0.02975, 0.02975, 0.029694, 0.029694, 4.54316756], [1516549620000, 0.02975, 0.02975, 0.0297, 0.02975, 7.07984771], [1516549680000, 0.02975, 0.02975, 0.029694, 0.029694, 25.76159658], [1516549740000, 0.029694, 0.02975, 0.029689, 0.02975, 109.8091328], [1516549800000, 0.0296875, 0.02975, 0.0296875, 0.0296875, 2.84931527], [1516549860000, 0.02974999, 0.02974999, 0.02974999, 0.02974999, 0.19041722], [1516549920000, 0.0297499, 0.02974999, 0.0297499, 0.02974999, 4.72698073], [1516549980000, 0.0296875, 0.02974999, 0.0295, 0.0295, 20.40352705], [1516550040000, 0.02950324, 0.02950324, 0.02950324, 0.02950324, 6.78720379], [1516550100000, 0.02974988, 0.02974999, 0.02950496, 0.02972912, 9.09572146], [1516550160000, 0.02972912, 0.02972912, 0.02972912, 0.02972912, 0.20838835], [1516550220000, 0.02950817, 0.02950835, 0.02950815, 0.02950834, 9.87878059], [1516550280000, 0.02972912, 0.02972912, 0.02950847, 0.02950847, 1.34716003], [1516550340000, 0.02974975, 0.02974999, 0.02974975, 0.02974999, 75.86444048], [1516550400000, 0.02974999, 0.02995, 0.02974999, 0.0299, 30.98541927], [1516550460000, 0.0299, 0.029998, 0.02985, 0.029998, 10.46708986], [1516550520000, 0.02998573, 0.02998573, 0.02985008, 0.02985008, 25.3407085], [1516550580000, 0.02997, 0.03, 0.02985026, 0.02985026, 12.62555415], [1516550640000, 0.02990003, 0.03002492, 0.0299, 0.0299, 3.80862309], [1516550700000, 0.02990021, 0.03002224, 0.02970027, 0.03002224, 5.31323948], [1516550760000, 0.03002224, 0.03002224, 0.02970083, 0.02970083, 1.63578478], [1516550820000, 0.02970117, 0.02970121, 0.02970117, 0.02970121, 0.08146513], [1516550940000, 0.02985883, 0.02985883, 0.02985883, 0.02985883, 0.02], [1516551000000, 0.02985883, 0.03001443, 0.02965002, 0.02985881, 3.76494613], [1516551060000, 0.02985881, 0.02985881, 0.02965, 0.02969, 3.77254992], [1516551120000, 0.0298586, 0.0298586, 0.02969, 0.02985824, 1.28903521], [1516551180000, 0.02985768, 0.02985768, 0.02969, 0.02969, 2.55448432], [1516551240000, 0.02985759, 0.02985759, 0.02969, 0.02985742, 12.15938224], [1516551300000, 0.0298399, 0.0298399, 0.02969, 0.0298399, 2.68347746], [1516551360000, 0.02983974, 0.02983974, 0.02969, 0.02969, 2.72040676], [1516551480000, 0.02969, 0.0298396, 0.02969, 0.02983959, 2.60307108], [1516551540000, 0.02969, 0.02969, 0.02969, 0.02969, 0.79641278], [1516551600000, 0.02969, 0.02983939, 0.02969, 0.02969, 5.61289045], [1516551660000, 0.02969, 0.02969, 0.02963725, 0.02963725, 2.29963462], [1516551720000, 0.02963725, 0.02969, 0.0296, 0.02969, 4.05087614], [1516551780000, 0.02968999, 0.02983725, 0.02968999, 0.02969, 12.19860706], [1516551840000, 0.02969, 0.02969, 0.02969, 0.02969, 33.03954493], [1516551900000, 0.02983957, 0.02983957, 0.02957343, 0.02983957, 1.67563577], [1516551960000, 0.02967658, 0.02967658, 0.02955001, 0.02955001, 46.80431586], [1516552020000, 0.02960474, 0.02960474, 0.02960474, 0.02960474, 1e-08], [1516552140000, 0.02955, 0.02955001, 0.02955, 0.02955, 4.28533963], [1516552200000, 0.02955, 0.02955, 0.0295, 0.0295, 7.69957762], [1516552260000, 0.02955, 0.02955, 0.02955, 0.02955, 0.81349143], [1516552320000, 0.02955, 0.02955, 0.02954999, 0.02955, 3.07887131], [1516552380000, 0.02955, 0.02955, 0.02955, 0.02955, 14.89356294], [1516552440000, 0.02955, 0.02955, 0.02955, 0.02955, 0.16668165], [1516552500000, 0.02977798, 0.02977817, 0.02977795, 0.02977803, 9.56808606], [1516552560000, 0.02976788, 0.02976788, 0.0295, 0.02976776, 6.90537411], [1516552680000, 0.02976668, 0.02976668, 0.02976603, 0.02976603, 2.53167034], [1516552740000, 0.0297659, 0.0297659, 0.02950009, 0.0297656, 1.10490911], [1516552800000, 0.02976473, 0.02976474, 0.02976473, 0.02976474, 0.38334456], [1516552860000, 0.02976441, 0.02976442, 0.02976422, 0.02976422, 0.68363364], [1516552920000, 0.0297635, 0.0297641, 0.0297635, 0.0297641, 1.74007314], [1516552980000, 0.02976297, 0.02976297, 0.02951, 0.02951007, 27.32198955], [1516553040000, 0.02951007, 0.02951007, 0.02951, 0.02951007, 112.41142702], [1516553100000, 0.02951007, 0.02951007, 0.02951, 0.02951007, 99.88267148], [1516553160000, 0.02976319, 0.0297632, 0.02951014, 0.02951014, 1.53037991], [1516553220000, 0.0297626, 0.0297626, 0.02976228, 0.02976228, 0.29654034], [1516553340000, 0.0295118, 0.02976156, 0.0295118, 0.02976156, 1.15867819], [1516553460000, 0.0297188, 0.0297188, 0.0297188, 0.0297188, 2.78144953], [1516553520000, 0.02976152, 0.02976156, 0.0297188, 0.02976156, 3.47556576], [1516553580000, 0.02976156, 0.02976344, 0.02976156, 0.02976344, 0.62208914], [1516553640000, 0.0297656, 0.02985742, 0.0297656, 0.02985742, 11.12648855], [1516553700000, 0.02985742, 0.02985742, 0.02985742, 0.02985742, 26.17562925], [1516553760000, 0.02985742, 0.02995, 0.02977101, 0.02978101, 4.94093015], [1516553820000, 0.02978301, 0.030002, 0.02976301, 0.02986301, 6.01871836], [1516553880000, 0.029871, 0.02999, 0.029871, 0.02999, 0.37358802], [1516553940000, 0.02998032, 0.02998032, 0.02998032, 0.02998032, 0.07204115], [1516554000000, 0.02998031, 0.030025, 0.02998031, 0.030025, 1.09521636], [1516554060000, 0.02991, 0.02991, 0.02991, 0.02991, 0.04599094], [1516554120000, 0.02991, 0.02991, 0.02991, 0.02991, 0.1], [1516554180000, 0.03002487, 0.03002487, 0.02992, 0.03002473, 8.82310231], [1516554240000, 0.029916, 0.029916, 0.029916, 0.029916, 1.99999999], [1516554300000, 0.02994895, 0.03002496, 0.029916, 0.03, 1.30457967], [1516554360000, 0.03, 0.030025, 0.03, 0.030002, 9.51034305], [1516554420000, 0.03000001, 0.03004518, 0.03, 0.03004518, 5.43375304], [1516554480000, 0.030002, 0.030004, 0.03, 0.03, 19.99244004], [1516554540000, 0.030002, 0.030002, 0.03, 0.030002, 11.05940083], [1516554600000, 0.030002, 0.030002, 0.03, 0.03, 29.29097864], [1516554660000, 0.03, 0.030002, 0.03, 0.030002, 22.17673541], [1516554720000, 0.030002, 0.030002, 0.03, 0.030002, 151.55529417], [1516554780000, 0.030002, 0.030002, 0.030002, 0.030002, 5.83396471], [1516554840000, 0.03000001, 0.030002, 0.03000001, 0.030002, 7.84295711], [1516554900000, 0.03000001, 0.030002, 0.03, 0.03, 43.83753375], [1516554960000, 0.03, 0.03, 0.03, 0.03, 10.03684421], [1516555080000, 0.03, 0.030002, 0.03, 0.03, 25.68823396], [1516555140000, 0.03000199, 0.030002, 0.03000199, 0.030002, 3.0], [1516555200000, 0.030002, 0.030002, 0.030002, 0.030002, 9.94293404], [1516555260000, 0.030002, 0.030002, 0.030002, 0.030002, 0.07151172], [1516555380000, 0.030002, 0.030002, 0.03000001, 0.03000001, 0.30686636], [1516555440000, 0.03000001, 0.03000001, 0.03, 0.03, 6.99129327], [1516555500000, 0.03, 0.03, 0.03, 0.03, 15.0], [1516555560000, 0.03, 0.03, 0.03, 0.03, 1.40437616], [1516555620000, 0.03004508, 0.03005, 0.03, 0.03, 7.28379075], [1516555680000, 0.0301, 0.0301, 0.0301, 0.0301, 2.15], [1516555740000, 0.03, 0.03, 0.03, 0.03, 1.34212102], [1516555800000, 0.03005, 0.0301, 0.03005, 0.0301, 0.3327787], [1516555860000, 0.03009999, 0.03009999, 0.03, 0.03, 77.08909924], [1516555920000, 0.03, 0.03009998, 0.03, 0.03, 14.29880645], [1516555980000, 0.03, 0.03, 0.03, 0.03, 2.0], [1516556040000, 0.03009999, 0.03009999, 0.03, 0.03, 0.50572138], [1516556100000, 0.03009998, 0.03009999, 0.03009998, 0.03009999, 4.24992669], [1516556160000, 0.0301, 0.0301, 0.03009999, 0.03009999, 22.96061128], [1516556220000, 0.0301, 0.0301, 0.03, 0.03, 1.98471676], [1516556280000, 0.03009999, 0.03009999, 0.03, 0.03, 2.04143073], [1516556340000, 0.03009999, 0.03009999, 0.03, 0.03, 8.69208795], [1516556400000, 0.0301, 0.0301, 0.03, 0.03009999, 2.66020422], [1516556460000, 0.03, 0.03009999, 0.03, 0.03, 2.99651403], [1516556580000, 0.03, 0.0301, 0.03, 0.03009997, 16.57197196], [1516556640000, 0.03, 0.03009999, 0.03, 0.03, 2.12018198], [1516556700000, 0.03, 0.0301, 0.03, 0.0301, 5.27481002], [1516556760000, 0.0301, 0.0301, 0.03, 0.03, 0.2888007], [1516556820000, 0.03009999, 0.03009999, 0.03009999, 0.03009999, 0.05921434], [1516556880000, 0.03009999, 0.03009999, 0.03000022, 0.03000022, 3.15783536], [1516556940000, 0.03009988, 0.0301, 0.03009988, 0.0301, 5.6902744], [1516557000000, 0.03013535, 0.03013535, 0.03013535, 0.03013535, 0.36103851], [1516557060000, 0.03014999, 0.0302, 0.03014999, 0.0302, 1.46761802], [1516557120000, 0.0302, 0.0302, 0.0302, 0.0302, 0.69536423], [1516557240000, 0.03019989, 0.03019989, 0.03, 0.03, 1.16273858], [1516557300000, 0.03, 0.03, 0.03, 0.03, 0.10304565], [1516557420000, 0.03, 0.03019984, 0.03, 0.03019984, 3.18913287], [1516557480000, 0.03019982, 0.03019982, 0.03019982, 0.03019982, 2.56461035], [1516557540000, 0.03019981, 0.03019982, 0.03019981, 0.03019982, 0.09909061], [1516557600000, 0.03019982, 0.03019982, 0.03019982, 0.03019982, 0.33471851], [1516557660000, 0.03019982, 0.03019982, 0.03019982, 0.03019982, 2.72818238], [1516557720000, 0.03019982, 0.03019982, 0.030075, 0.030075, 0.71686051], [1516557780000, 0.030075, 0.030075, 0.030075, 0.030075, 1.01984825], [1516557840000, 0.03019961, 0.03019961, 0.03019961, 0.03019961, 0.02], [1516557900000, 0.03019939, 0.03019939, 0.03019926, 0.03019926, 0.55506294], [1516557960000, 0.030075, 0.030075, 0.03, 0.03, 1.0], [1516558020000, 0.030075, 0.030075, 0.030075, 0.030075, 0.8], [1516558080000, 0.030075, 0.030075, 0.03005, 0.03005, 0.36209058], [1516558140000, 0.03005, 0.03005, 0.03005, 0.03005, 14.975032], [1516558200000, 0.03005, 0.03005, 0.03004999, 0.03005, 92.75911802], [1516558260000, 0.03005, 0.03005, 0.03, 0.03, 748.31260436], [1516558320000, 0.03005, 0.03005, 0.03005, 0.03005, 0.06095809], [1516558440000, 0.03005, 0.03005, 0.03004999, 0.03005, 4.03905311], [1516558500000, 0.03005, 0.03005, 0.03, 0.03005, 0.74952913], [1516558560000, 0.03005, 0.03005, 0.03005, 0.03005, 0.05537303], [1516558620000, 0.03005, 0.03005, 0.03, 0.03, 0.89888108], [1516558680000, 0.03005, 0.03005, 0.03005, 0.03005, 0.417], [1516558740000, 0.03000001, 0.03000001, 0.03000001, 0.03000001, 0.24487594], [1516558800000, 0.03004999, 0.03005, 0.03004999, 0.03005, 0.3327798], [1516558860000, 0.03005, 0.03005, 0.03000001, 0.03005, 1.35967516], [1516558920000, 0.03005, 0.03005, 0.03004999, 0.03005, 3.57974435], [1516559040000, 0.03005, 0.03005, 0.03005, 0.03005, 0.80920497], [1516559100000, 0.03005, 0.03005, 0.03005, 0.03005, 2.09210749], [1516559160000, 0.03005, 0.03005, 0.03005, 0.03005, 0.74529181], [1516559220000, 0.03004999, 0.03005, 0.03004999, 0.03005, 0.19643189], [1516559280000, 0.03005, 0.03005, 0.03005, 0.03005, 0.217], [1516559340000, 0.03005, 0.03005, 0.03005, 0.03005, 1.91118122], [1516559400000, 0.03000001, 0.03005, 0.03000001, 0.03005, 2.74486404], [1516559520000, 0.03000001, 0.03000001, 0.03000001, 0.03000001, 3.0], [1516559580000, 0.03004999, 0.03015, 0.03, 0.03012235, 7.85293503], [1516559640000, 0.03012235, 0.03018773, 0.03012235, 0.03018771, 0.34567874], [1516559700000, 0.03018767, 0.03018767, 0.03018767, 0.03018767, 0.33126074], [1516559760000, 0.03018767, 0.03018767, 0.03018767, 0.03018767, 1.65216461], [1516559880000, 0.03018767, 0.03018767, 0.03018767, 0.03018767, 0.09913049], [1516559940000, 0.03018767, 0.0301877, 0.03018767, 0.0301877, 0.09374517], [1516560060000, 0.0301877, 0.0301877, 0.0301877, 0.0301877, 0.36], [1516560180000, 0.03018769, 0.03018769, 0.03018769, 0.03018769, 0.0325563], [1516560300000, 0.03018769, 0.03018769, 0.03018769, 0.03018769, 0.73201748], [1516560420000, 0.03008407, 0.0301877, 0.03008407, 0.0301877, 0.16760254], [1516560480000, 0.03000012, 0.03000014, 0.03000012, 0.03000014, 0.64695907], [1516560600000, 0.03018763, 0.03035022, 0.03018759, 0.03018759, 249.45480033], [1516560660000, 0.03018761, 0.03018762, 0.03018759, 0.03018759, 0.14709545], [1516560720000, 0.03018762, 0.03018762, 0.03018762, 0.03018762, 0.10772252], [1516560900000, 0.03018758, 0.0303496, 0.03018758, 0.0303496, 5.71791577], [1516560960000, 0.03034916, 0.03034916, 0.03034916, 0.03034916, 0.73751163], [1516561020000, 0.03034856, 0.03034856, 0.03034835, 0.03034835, 0.3127771], [1516561080000, 0.03006751, 0.03006751, 0.0300675, 0.0300675, 2.0214955], [1516561140000, 0.0300675, 0.03017995, 0.03000002, 0.03017995, 4.38513758], [1516561260000, 0.03000002, 0.03000002, 0.03000002, 0.03000002, 0.374], [1516561320000, 0.03000002, 0.03010916, 0.03000002, 0.03010916, 5.90010279], [1516561380000, 0.03010916, 0.03014455, 0.03001883, 0.03014455, 0.37517796], [1516561440000, 0.0301092, 0.0301092, 0.0301092, 0.0301092, 0.13251764], [1516561500000, 0.03010916, 0.03010916, 0.03001883, 0.03001883, 12.39179104], [1516561560000, 0.03000002, 0.03000002, 0.03000002, 0.03000002, 2.75820559], [1516561680000, 0.0300723, 0.0300723, 0.0300723, 0.0300723, 0.4699534], [1516561740000, 0.03014454, 0.03018, 0.03014205, 0.03018, 10.56675461], [1516561800000, 0.03014205, 0.03018, 0.03002549, 0.03018, 1.83815444], [1516561860000, 0.03017999, 0.03017999, 0.03017999, 0.03017999, 0.08565852], [1516562040000, 0.03017999, 0.03017999, 0.03002909, 0.03017999, 0.24465597], [1516562100000, 0.03017998, 0.03017998, 0.03017998, 0.03017998, 0.5641591], [1516562160000, 0.03017998, 0.03017998, 0.03017998, 0.03017998, 1.11367208], [1516562340000, 0.03017997, 0.03017997, 0.03017997, 0.03017997, 0.25877398], [1516562400000, 0.03017997, 0.03017997, 0.03017997, 0.03017997, 0.566337], [1516562460000, 0.03017997, 0.03017997, 0.03017997, 0.03017997, 1.64729307], [1516562520000, 0.03017997, 0.03034762, 0.03017997, 0.03034762, 5.2890729], [1516562580000, 0.03025988, 0.03025988, 0.03025988, 0.03025988, 1.5215977], [1516562640000, 0.03034874, 0.03034874, 0.03034874, 0.03034874, 0.05403759], [1516562760000, 0.03006429, 0.03006429, 0.03006429, 0.03006429, 1.71452005], [1516562820000, 0.03010934, 0.03010934, 0.03010909, 0.03010909, 62.373], [1516562880000, 0.0300748, 0.0301091, 0.03000063, 0.0300009, 37.72951542], [1516562940000, 0.03034564, 0.03034565, 0.03034564, 0.03034565, 8.224992], [1516563000000, 0.03000674, 0.03000674, 0.03000674, 0.03000674, 5.67177724], [1516563060000, 0.03034549, 0.03034874, 0.0300087, 0.0300087, 23.84184559], [1516563120000, 0.03034874, 0.0304, 0.03034874, 0.0304, 24.49615532], [1516563180000, 0.03034925, 0.03034925, 0.03034925, 0.03034925, 0.33785838], [1516563240000, 0.0304, 0.0304, 0.03034925, 0.0303493, 0.92608869], [1516563300000, 0.03034925, 0.0303493, 0.03034925, 0.0303493, 0.42949689], [1516563360000, 0.03034925, 0.03034925, 0.03016809, 0.03016845, 30.52760536], [1516563420000, 0.0301689, 0.0301689, 0.0301689, 0.0301689, 0.23433433], [1516563600000, 0.03034925, 0.0304, 0.03034925, 0.03034925, 1.02135804], [1516563660000, 0.03034925, 0.0303493, 0.03034925, 0.03034925, 2.18417565], [1516563720000, 0.03034925, 0.0304, 0.03034925, 0.0304, 0.05661208], [1516563780000, 0.03034925, 0.0304, 0.03034925, 0.0304, 0.54583161], [1516563840000, 0.03034925, 0.03034925, 0.03034925, 0.03034925, 0.18], [1516563900000, 0.03039999, 0.0304, 0.03039999, 0.0304, 1.562236], [1516563960000, 0.0304, 0.0304, 0.0304, 0.0304, 3.87657131], [1516564020000, 0.03040864, 0.03045, 0.03040864, 0.03045, 1.10561413], [1516564080000, 0.03037346, 0.03045079, 0.03017724, 0.03045079, 8.94185993], [1516564140000, 0.03045079, 0.03046702, 0.03045079, 0.03046702, 2.75509894], [1516564200000, 0.03046702, 0.03046702, 0.03045079, 0.03045079, 0.13172545], [1516564380000, 0.03045079, 0.03045079, 0.03026831, 0.03026847, 15.80395036], [1516564440000, 0.03026809, 0.03026809, 0.03017674, 0.03017674, 0.6762473], [1516564500000, 0.0302699, 0.03027183, 0.0302699, 0.03027183, 1.82731332], [1516564620000, 0.03016991, 0.03016991, 0.03016991, 0.03016991, 0.33886703], [1516564680000, 0.03039238, 0.03039238, 0.03017025, 0.03017067, 1.00377415], [1516564740000, 0.03035275, 0.03035275, 0.03035275, 0.03035275, 0.973621], [1516564800000, 0.03035275, 0.03035275, 0.03035275, 0.03035275, 0.16472972], [1516564860000, 0.03035275, 0.03035275, 0.03035275, 0.03035275, 0.03396013], [1516564920000, 0.03035275, 0.03039239, 0.03035275, 0.03035275, 1.5301658], [1516564980000, 0.03035275, 0.03035275, 0.03035275, 0.03035275, 44.574237], [1516565040000, 0.0301763, 0.03035275, 0.0301763, 0.03035275, 5.6], [1516565100000, 0.03035275, 0.03039239, 0.03035275, 0.03039239, 31.04717358], [1516565160000, 0.03035275, 0.03035275, 0.03035275, 0.03035275, 3.18274295], [1516565220000, 0.03018049, 0.03039239, 0.03018049, 0.03039239, 3.12943976], [1516565280000, 0.03039239, 0.03045949, 0.03018374, 0.03045949, 3.58673478], [1516565340000, 0.03018712, 0.03018712, 0.03018712, 0.03018712, 0.13002498], [1516565400000, 0.03046276, 0.03048678, 0.03046276, 0.03046276, 4.60603088], [1516565460000, 0.03046276, 0.0304628, 0.03046276, 0.0304628, 1.72521918], [1516565520000, 0.03046276, 0.03046276, 0.03035203, 0.03035203, 7.10936241], [1516565580000, 0.03017232, 0.03017232, 0.03017226, 0.03017226, 1.0], [1516565700000, 0.03017173, 0.03035203, 0.03016952, 0.03016952, 11.95234867], [1516565760000, 0.03035203, 0.03035203, 0.03016952, 0.03035195, 4.76347755], [1516565820000, 0.03043987, 0.03043987, 0.0304396, 0.0304396, 0.44259383], [1516565880000, 0.030439, 0.030439, 0.03026074, 0.03026082, 1.49924058], [1516565940000, 0.03029539, 0.03029539, 0.03029539, 0.03029539, 0.01650801], [1516566000000, 0.03037541, 0.03037541, 0.03016952, 0.03016952, 1.37789805], [1516566060000, 0.03016952, 0.03016952, 0.03016952, 0.03016952, 0.54], [1516566120000, 0.03016952, 0.03016952, 0.03010003, 0.03010003, 2.82556427], [1516566180000, 0.03016952, 0.03016952, 0.03016951, 0.03016951, 0.27391335], [1516566240000, 0.03016952, 0.03016952, 0.03016952, 0.03016952, 1.84403846], [1516566300000, 0.03016952, 0.03016952, 0.03016952, 0.03016952, 0.07492895], [1516566360000, 0.03016951, 0.03016951, 0.0301695, 0.0301695, 2.03929002], [1516566420000, 0.03012217, 0.03016952, 0.03010002, 0.03010002, 96.42520928], [1516566480000, 0.03010002, 0.03010002, 0.03010002, 0.03010002, 4.04002622], [1516566540000, 0.03010002, 0.03010002, 0.03010002, 0.03010002, 5.60592133], [1516566600000, 0.03010002, 0.03016952, 0.03006637, 0.03006637, 19.0138696], [1516566720000, 0.03016952, 0.03016952, 0.03016952, 0.03016952, 0.12670381], [1516566780000, 0.03016952, 0.03016952, 0.03016952, 0.03016952, 1.0], [1516566840000, 0.03016952, 0.03016952, 0.03016952, 0.03016952, 0.26203301], [1516566900000, 0.03016952, 0.03016952, 0.03016952, 0.03016952, 7.62455454], [1516566960000, 0.03016952, 0.03016952, 0.03006637, 0.03006637, 4.61577066], [1516567020000, 0.03006637, 0.03006637, 0.03000874, 0.03000874, 1.65422497], [1516567080000, 0.03016952, 0.03016952, 0.03016952, 0.03016952, 0.11466967], [1516567140000, 0.03000927, 0.03000927, 0.03000927, 0.03000927, 3.0], [1516567260000, 0.03016952, 0.03016952, 0.03016952, 0.03016952, 0.63829043], [1516567440000, 0.03016951, 0.03016951, 0.03016951, 0.03016951, 0.24657544], [1516567500000, 0.03000927, 0.03000927, 0.03000927, 0.03000927, 0.28], [1516567620000, 0.03000928, 0.03000928, 0.03000927, 0.03000927, 2.45035611], [1516567680000, 0.03016951, 0.03016951, 0.03016951, 0.03016951, 0.1001767], [1516567740000, 0.03016951, 0.03016951, 0.03016951, 0.03016951, 0.05444073], [1516567800000, 0.03000927, 0.03000927, 0.03000927, 0.03000927, 0.51217956], [1516567860000, 0.03000927, 0.03016952, 0.03000927, 0.03016952, 1.32597184], [1516567920000, 0.03000927, 0.03000927, 0.03000927, 0.03000927, 0.20564891], [1516567980000, 0.03016952, 0.03016952, 0.03016952, 0.03016952, 0.04628253], [1516568040000, 0.03000927, 0.03000927, 0.03000927, 0.03000927, 0.52156], [1516568100000, 0.03016951, 0.03016952, 0.03016951, 0.03016952, 2.043076], [1516568160000, 0.03016952, 0.03016952, 0.03016952, 0.03016952, 0.29582161], [1516568220000, 0.03016952, 0.03016952, 0.0301695, 0.0301695, 0.42100883], [1516568280000, 0.03016944, 0.03016944, 0.03000003, 0.03000003, 24.58103318], [1516568340000, 0.03000003, 0.03000003, 0.03000003, 0.03000003, 24.3157884], [1516568400000, 0.03016855, 0.03016855, 0.03000003, 0.03000003, 4.98375462], [1516568460000, 0.03016815, 0.03016816, 0.03000003, 0.03000003, 37.37129088], [1516568520000, 0.03000003, 0.03000003, 0.03000002, 0.03000002, 6.53149786], [1516568580000, 0.03000002, 0.03000002, 0.03000002, 0.03000002, 1.318465], [1516568640000, 0.03000002, 0.03000002, 0.03, 0.03, 36.56463671], [1516568700000, 0.03000002, 0.03000002, 0.03, 0.03, 0.64999978], [1516568760000, 0.02999458, 0.02999458, 0.02999458, 0.02999458, 0.69134716], [1516568820000, 0.03, 0.03000002, 0.03, 0.03000002, 4.87650496], [1516568940000, 0.03008042, 0.03008042, 0.03008042, 0.03008042, 0.0220988], [1516569000000, 0.03008042, 0.03012002, 0.03008042, 0.03012002, 0.37353877], [1516569060000, 0.03012002, 0.03016952, 0.03012002, 0.03012002, 2.49348177], [1516569120000, 0.03012002, 0.03026992, 0.03012002, 0.03026991, 3.96350436], [1516569180000, 0.03026972, 0.03026972, 0.03012002, 0.03012002, 5.18969068], [1516569240000, 0.03012002, 0.03026912, 0.03012002, 0.03026912, 18.35927954], [1516569300000, 0.03012002, 0.03026893, 0.03012002, 0.03026883, 56.70875703], [1516569420000, 0.03012002, 0.03012002, 0.03012002, 0.03012002, 3.80918337], [1516569480000, 0.03000022, 0.03000023, 0.03000002, 0.03000002, 36.19690333], [1516569540000, 0.03000002, 0.03000002, 0.02985012, 0.02985012, 66.02134445], [1516569600000, 0.03000002, 0.03000002, 0.03000002, 0.03000002, 0.41121539], [1516569660000, 0.02999994, 0.02999994, 0.02999994, 0.02999994, 1.62064249], [1516569720000, 0.03000001, 0.03000001, 0.02999993, 0.03000001, 4.38851493], [1516569780000, 0.03000001, 0.03000001, 0.03000001, 0.03000001, 2.95780246], [1516569840000, 0.03000002, 0.03000002, 0.03000001, 0.03000001, 1.63526951], [1516569900000, 0.03000002, 0.03000002, 0.03000001, 0.03000001, 6.33743574], [1516569960000, 0.03000001, 0.03000001, 0.03000001, 0.03000001, 2.82063385], [1516570020000, 0.03000002, 0.03000002, 0.03000001, 0.03000001, 0.78423934], [1516570080000, 0.03000001, 0.03000001, 0.03000001, 0.03000001, 30.66165315], [1516570140000, 0.03000001, 0.03000002, 0.02984427, 0.03000002, 4.65382115], [1516570200000, 0.02984427, 0.02984427, 0.02984427, 0.02984427, 4.8634836], [1516570260000, 0.03000002, 0.03000002, 0.0298443, 0.0298443, 12.80864584], [1516570320000, 0.0298443, 0.0298443, 0.0298443, 0.0298443, 28.69029511], [1516570380000, 0.0298443, 0.0298443, 0.02983033, 0.0298443, 30.14817309], [1516570440000, 0.0298443, 0.0298443, 0.02976254, 0.0298443, 7.08525595], [1516570500000, 0.0298443, 0.0298443, 0.0298443, 0.0298443, 8.33768088], [1516570560000, 0.0298443, 0.03000002, 0.02976313, 0.03000002, 57.20500191], [1516570680000, 0.02976543, 0.03000002, 0.02976543, 0.03000002, 1.64146157], [1516570740000, 0.03000002, 0.03000002, 0.02989, 0.02989, 1.22999909], [1516570800000, 0.02989, 0.03000002, 0.02989, 0.03000002, 3.12630133], [1516570860000, 0.03000002, 0.03000002, 0.02976759, 0.02976759, 1.21147], [1516570920000, 0.0297883, 0.0297883, 0.0297883, 0.0297883, 5.55395116], [1516570980000, 0.02978845, 0.02978845, 0.02978845, 0.02978845, 7.30210856], [1516571100000, 0.03000002, 0.03000002, 0.03000002, 0.03000002, 7.65899075], [1516571160000, 0.03000002, 0.03000002, 0.03000002, 0.03000002, 1.0], [1516571220000, 0.03000002, 0.03000002, 0.03000002, 0.03000002, 20.56878266], [1516571280000, 0.03000002, 0.0301, 0.03000002, 0.03009839, 3.69392531], [1516571340000, 0.0300984, 0.0300984, 0.02983213, 0.02990937, 19.6794636], [1516571400000, 0.0301, 0.03026668, 0.0300985, 0.0300985, 10.66433872], [1516571460000, 0.0300985, 0.03019088, 0.0300985, 0.0300985, 8.36430705], [1516571580000, 0.03008711, 0.03008711, 0.03, 0.03, 1.35894937], [1516571640000, 0.03, 0.03008711, 0.03, 0.03008711, 0.1525279], [1516571700000, 0.03008712, 0.03008712, 0.02990001, 0.03, 6.76429001], [1516571820000, 0.03008307, 0.03008307, 0.03008307, 0.03008307, 0.07451825], [1516571880000, 0.03008305, 0.03008305, 0.03, 0.03, 7.14890702], [1516571940000, 0.03, 0.03, 0.03, 0.03, 0.34763383], [1516572000000, 0.0299, 0.03, 0.0299, 0.03, 1.00194516], [1516572060000, 0.0299, 0.0299, 0.0297625, 0.0298, 80.84634513], [1516572120000, 0.0298, 0.0298, 0.0297661, 0.0298, 135.71049536], [1516572180000, 0.0298, 0.0298, 0.02976611, 0.0298, 57.80749416], [1516572240000, 0.0298, 0.0298, 0.0298, 0.0298, 17.81502798], [1516572300000, 0.0298, 0.0298, 0.0298, 0.0298, 3.10910197], [1516572420000, 0.0297999, 0.0298, 0.02976622, 0.02976622, 2.1580732], [1516572480000, 0.0298, 0.0298, 0.0298, 0.0298, 0.12212999], [1516572540000, 0.0298, 0.0298, 0.0298, 0.0298, 6.02608527], [1516572600000, 0.0298, 0.0298, 0.0298, 0.0298, 0.56270903], [1516572660000, 0.0298, 0.0298, 0.02977075, 0.0298, 7.29483376], [1516572720000, 0.02979999, 0.0298, 0.02976625, 0.02976625, 0.76173024], [1516572780000, 0.02976625, 0.0298, 0.02976625, 0.02976625, 13.61725036], [1516572840000, 0.02976625, 0.0298, 0.02976625, 0.0298, 6.84121763], [1516572900000, 0.0298, 0.0298, 0.02976626, 0.02978, 10.17535838], [1516572960000, 0.02978, 0.0298, 0.02976627, 0.0298, 32.56719991], [1516573020000, 0.0298, 0.0298, 0.02976627, 0.02976628, 8.7383698], [1516573080000, 0.0298, 0.0298, 0.0298, 0.0298, 0.09582029], [1516573140000, 0.0298, 0.0298, 0.02976629, 0.02976629, 3.16479094], [1516573200000, 0.0298, 0.0298, 0.0298, 0.0298, 5.66107744], [1516573260000, 0.0298, 0.0298, 0.0298, 0.0298, 7.19778948], [1516573320000, 0.0298, 0.0298, 0.02976631, 0.0298, 53.99214087], [1516573380000, 0.0298, 0.0298, 0.02976631, 0.0298, 20.38267813], [1516573440000, 0.0298, 0.0298, 0.0298, 0.0298, 0.07407744], [1516573500000, 0.0298, 0.0298, 0.0298, 0.0298, 22.25614742], [1516573560000, 0.0298, 0.0298, 0.02979582, 0.02979582, 4.30533639], [1516573620000, 0.02979582, 0.0298, 0.02976633, 0.0298, 42.47709248], [1516573680000, 0.0298, 0.0298, 0.02976634, 0.0298, 14.34114444], [1516573740000, 0.02979999, 0.0298, 0.02976635, 0.0298, 36.8809154], [1516573800000, 0.0298, 0.0298, 0.0298, 0.0298, 19.1650918], [1516573860000, 0.0298, 0.0298, 0.02976652, 0.02976652, 17.26229317], [1516573920000, 0.02987897, 0.0300682, 0.02987897, 0.0300682, 1.92359302], [1516573980000, 0.02987897, 0.02987897, 0.02987897, 0.02987897, 0.1], [1516574040000, 0.03009999, 0.03015, 0.03009997, 0.0301, 4.24941926], [1516574160000, 0.02987897, 0.02987897, 0.02987897, 0.02987897, 2.45], [1516574220000, 0.03019071, 0.03019071, 0.03019071, 0.03019071, 0.14383462], [1516574280000, 0.03019071, 0.03019071, 0.02987916, 0.02987916, 4.54847098], [1516574340000, 0.03013086, 0.03013089, 0.03013086, 0.03013089, 0.99783216], [1516574400000, 0.03013086, 0.03013086, 0.02988551, 0.02988551, 0.93488551], [1516574460000, 0.03013078, 0.03013086, 0.03013078, 0.03013078, 0.92498915], [1516574520000, 0.03013078, 0.03013078, 0.02989028, 0.03013077, 3.17983788], [1516574580000, 0.03013077, 0.03013078, 0.0299207, 0.03013076, 71.07571052], [1516574640000, 0.03013078, 0.03013078, 0.03013078, 0.03013078, 0.30429876], [1516574700000, 0.03013078, 0.03013078, 0.03000008, 0.03013077, 4.17460336], [1516574760000, 0.03000023, 0.03013077, 0.03, 0.03013077, 0.51196615], [1516574820000, 0.03013075, 0.03013078, 0.03000001, 0.03013077, 2.00642412], [1516574880000, 0.03013077, 0.03013077, 0.03000004, 0.03013077, 6.41591849], [1516574940000, 0.03013076, 0.03013076, 0.03013076, 0.03013076, 1.203174], [1516575000000, 0.02999999, 0.03013076, 0.02999999, 0.03013076, 1.11691052], [1516575060000, 0.03010951, 0.03010951, 0.03, 0.03, 0.68069508], [1516575120000, 0.03, 0.03, 0.03, 0.03, 1.01439234], [1516575300000, 0.03013075, 0.03013075, 0.03013075, 0.03013075, 0.06692865], [1516575360000, 0.03013074, 0.03013075, 0.03013074, 0.03013075, 0.39826423], [1516575420000, 0.03013075, 0.03013075, 0.02999999, 0.03013074, 3.03798876], [1516575480000, 0.03013074, 0.03013074, 0.03013074, 0.03013074, 0.57186645], [1516575540000, 0.02999999, 0.03012903, 0.02999999, 0.03012903, 1.12785341], [1516575600000, 0.03013071, 0.03020593, 0.02991, 0.02991, 78.43586787], [1516575660000, 0.02991, 0.02993071, 0.02991, 0.02991001, 1.17239879], [1516575720000, 0.03013074, 0.03013074, 0.02991001, 0.03013074, 5.71106463], [1516575780000, 0.03013073, 0.03026877, 0.02991052, 0.02991074, 4.58432111], [1516575900000, 0.03007723, 0.03007723, 0.02991052, 0.02991052, 0.51946785], [1516576020000, 0.03007724, 0.03007724, 0.03007723, 0.03007723, 0.63101835], [1516576080000, 0.02991052, 0.02991052, 0.02991052, 0.02991052, 2.07628176], [1516576140000, 0.03007722, 0.03007722, 0.03007722, 0.03007722, 0.41643909], [1516576200000, 0.03007722, 0.03007723, 0.02991053, 0.03007723, 2.84670114], [1516576260000, 0.02991053, 0.02991053, 0.02991052, 0.02991052, 7.6542056], [1516576320000, 0.03007719, 0.03007723, 0.03007719, 0.03007723, 2.38985678], [1516576440000, 0.02991053, 0.03007717, 0.02991053, 0.03007717, 7.06011173], [1516576500000, 0.03007718, 0.03007718, 0.02991052, 0.02991052, 0.83668877], [1516576560000, 0.03007719, 0.03007719, 0.03007714, 0.03007715, 0.43141871], [1516576620000, 0.03007714, 0.03007715, 0.02991052, 0.02991052, 0.54058425], [1516576680000, 0.02991053, 0.03007, 0.02991052, 0.02997052, 3.14636221], [1516576740000, 0.02997052, 0.02997052, 0.02991052, 0.02991052, 0.34636116], [1516576800000, 0.02991052, 0.02997052, 0.02991052, 0.02991052, 4.56206028], [1516576860000, 0.02997052, 0.02997052, 0.02991052, 0.02997052, 4.9201169], [1516576980000, 0.02997051, 0.03007723, 0.02997051, 0.03007723, 21.91514543], [1516577040000, 0.03007722, 0.03007723, 0.02991052, 0.03007721, 9.48855145], [1516577100000, 0.0300772, 0.03007727, 0.0300772, 0.03007727, 35.47515627], [1516577160000, 0.03007727, 0.03007727, 0.02991077, 0.03007727, 66.51177089], [1516577220000, 0.03007727, 0.03007727, 0.02992111, 0.03007727, 51.83909442], [1516577280000, 0.03007727, 0.03007727, 0.02992115, 0.03007374, 29.35213345], [1516577340000, 0.03007727, 0.03007727, 0.03007727, 0.03007727, 18.08302272], [1516577400000, 0.03007374, 0.03007727, 0.02995391, 0.03007727, 24.80104583], [1516577460000, 0.03007727, 0.03007727, 0.03007727, 0.03007727, 54.8811141], [1516577520000, 0.03007727, 0.03007727, 0.03007727, 0.03007727, 11.226166], [1516577580000, 0.03007727, 0.03007727, 0.03007726, 0.03007727, 13.68246862], [1516577640000, 0.03007727, 0.03007727, 0.02991, 0.03007727, 30.70430523], [1516577700000, 0.03007725, 0.03007727, 0.02991014, 0.02991014, 2.395853], [1516577880000, 0.03007, 0.03007, 0.03005, 0.03005, 18.86366404], [1516577940000, 0.03005, 0.03007727, 0.03005, 0.03007727, 19.40070042], [1516578000000, 0.03007727, 0.03007727, 0.02991088, 0.02991099, 26.88314675], [1516578060000, 0.03, 0.03003, 0.02991016, 0.03, 10.40535617], [1516578120000, 0.02991001, 0.03, 0.02991001, 0.03, 2.56156957], [1516578180000, 0.03, 0.03007723, 0.03, 0.03007722, 1.07888224], [1516578240000, 0.03007722, 0.03007727, 0.02995386, 0.03007727, 3.92032692], [1516578300000, 0.03007727, 0.03007727, 0.03007727, 0.03007727, 18.36207427], [1516578360000, 0.03007727, 0.03007727, 0.03007727, 0.03007727, 8.02840422], [1516578420000, 0.03007727, 0.03007727, 0.03007727, 0.03007727, 0.07372056], [1516578480000, 0.03007727, 0.03007727, 0.02991074, 0.03007727, 18.53013421], [1516578540000, 0.03007727, 0.03007727, 0.02991115, 0.03007727, 61.23057674], [1516578600000, 0.03007727, 0.03007727, 0.03007727, 0.03007727, 26.73637223], [1516578660000, 0.03007727, 0.03007727, 0.03007727, 0.03007727, 3.07679807], [1516578720000, 0.03007727, 0.03007727, 0.03007726, 0.03007727, 3.6623607], [1516578780000, 0.03007727, 0.03007727, 0.03007726, 0.03007726, 6.31683545], [1516578840000, 0.03007727, 0.03007727, 0.03007726, 0.03007727, 2.3073327], [1516578900000, 0.03007727, 0.03007727, 0.03007726, 0.03007726, 5.53782224], [1516578960000, 0.03007726, 0.03007727, 0.02991762, 0.03007727, 7.20088931], [1516579020000, 0.03007727, 0.03007727, 0.02991317, 0.03007726, 2.61729246], [1516579080000, 0.03007726, 0.03007726, 0.0300772, 0.0300772, 0.07371397], [1516579140000, 0.0300772, 0.0300772, 0.0299155, 0.0300771, 0.91776739], [1516579200000, 0.03007705, 0.03007705, 0.029913, 0.02991301, 15.43098213], [1516579260000, 0.03007686, 0.03007686, 0.02991301, 0.03007686, 1.29136727], [1516579320000, 0.03007686, 0.03007686, 0.02988936, 0.02988937, 16.18477972], [1516579380000, 0.02988938, 0.03007726, 0.02988938, 0.03007726, 3.51903346], [1516579440000, 0.03006712, 0.03006712, 0.02988943, 0.03000147, 6.72852674], [1516579500000, 0.03000143, 0.03006711, 0.0298895, 0.03006711, 6.0393103], [1516579560000, 0.02999297, 0.02999298, 0.02999297, 0.02999298, 1.11442889], [1516579620000, 0.02999298, 0.03006711, 0.02999298, 0.03006711, 3.85686744], [1516579680000, 0.03006711, 0.03006711, 0.03006711, 0.03006711, 0.60582294], [1516579740000, 0.03006711, 0.03006711, 0.02988953, 0.02988953, 30.06745708], [1516579800000, 0.02988953, 0.02999298, 0.02988936, 0.02999298, 18.9253572], [1516579860000, 0.02999298, 0.02999298, 0.02999298, 0.02999298, 4.2895724], [1516579920000, 0.02999298, 0.02999298, 0.02988937, 0.02999298, 2.0706824], [1516579980000, 0.02999298, 0.02999298, 0.02988938, 0.02999298, 1.13394311], [1516580040000, 0.02999298, 0.02999298, 0.02988936, 0.02988936, 6.37213329], [1516580100000, 0.02988936, 0.02999298, 0.02988936, 0.02999298, 10.88429778], [1516580160000, 0.02999298, 0.02999298, 0.02990473, 0.02999298, 3.24335467], [1516580220000, 0.02999298, 0.02999298, 0.02990473, 0.02990473, 0.05417412], [1516580280000, 0.02999298, 0.02999298, 0.02982769, 0.02999298, 19.27465649], [1516580340000, 0.02999298, 0.02999298, 0.02999297, 0.02999297, 0.80913455], [1516580400000, 0.02985, 0.02985, 0.02985, 0.02985, 5.0], [1516580460000, 0.02999298, 0.02999298, 0.02999298, 0.02999298, 1.36675248], [1516580520000, 0.02999298, 0.02999298, 0.02999298, 0.02999298, 1.14035964], [1516580580000, 0.02999298, 0.02999298, 0.02999298, 0.02999298, 8.98629135], [1516580640000, 0.02999298, 0.02999298, 0.02980023, 0.02980026, 4.85167916], [1516580700000, 0.02999298, 0.02999298, 0.02999298, 0.02999298, 0.64063463], [1516580760000, 0.02999298, 0.02999298, 0.02999297, 0.02999297, 2.10555872], [1516580820000, 0.02999297, 0.02999297, 0.02999297, 0.02999297, 6.57528663], [1516580880000, 0.02999298, 0.02999298, 0.02999298, 0.02999298, 3.20491307], [1516580940000, 0.02999298, 0.02999298, 0.02980013, 0.02980015, 37.78383646], [1516581000000, 0.02980053, 0.02980053, 0.02980053, 0.02980053, 0.16449313], [1516581060000, 0.02997298, 0.02997298, 0.02980089, 0.02997298, 3.40601564], [1516581240000, 0.02983596, 0.02997298, 0.02983596, 0.02997298, 2.05359021], [1516581300000, 0.02997298, 0.02997298, 0.02997298, 0.02997298, 4.87191074], [1516581360000, 0.030072, 0.030072, 0.02997298, 0.02997299, 3.16609758], [1516581420000, 0.02997298, 0.03007198, 0.02997298, 0.03007198, 0.82020382], [1516581480000, 0.03007176, 0.03007725, 0.02980074, 0.02980075, 31.94037433], [1516581540000, 0.03007717, 0.03007717, 0.02980019, 0.02980019, 4.76695602], [1516581600000, 0.02980019, 0.02982999, 0.02980019, 0.02980019, 4.20689428], [1516581660000, 0.03007122, 0.03007122, 0.03007122, 0.03007122, 0.16267296], [1516581780000, 0.02986133, 0.02986133, 0.02986133, 0.02986133, 0.40661109], [1516581840000, 0.02986133, 0.02986133, 0.02986133, 0.02986133, 0.02], [1516581900000, 0.03001067, 0.03001067, 0.02986133, 0.02986133, 1.65836487], [1516581960000, 0.03007038, 0.03007038, 0.03007025, 0.03007025, 1.26028218], [1516582020000, 0.02986133, 0.03006973, 0.02980015, 0.02980015, 22.75279674], [1516582080000, 0.0298003, 0.0298003, 0.02975002, 0.02975002, 11.12871378], [1516582140000, 0.03006858, 0.03006858, 0.02975025, 0.03006843, 18.73342749], [1516582200000, 0.03006797, 0.03006798, 0.02998616, 0.02998616, 35.62956695], [1516582440000, 0.02998616, 0.03006549, 0.02998616, 0.02998616, 0.42103703], [1516582500000, 0.02998616, 0.03006548, 0.02998616, 0.02998616, 0.37515594], [1516582560000, 0.02979375, 0.02979385, 0.02979375, 0.02979385, 0.2183339], [1516582620000, 0.02979385, 0.03006479, 0.02979385, 0.03006479, 10.45052802], [1516582680000, 0.03006452, 0.03006452, 0.03006452, 0.03006452, 0.03656851], [1516582740000, 0.02990704, 0.02990704, 0.02990704, 0.02990704, 0.03700312], [1516582800000, 0.02990704, 0.03007727, 0.02990704, 0.03006499, 19.56947546], [1516582860000, 0.0298255, 0.0300772, 0.0298255, 0.03007719, 4.00520525], [1516582920000, 0.03007719, 0.03007727, 0.03007719, 0.03007719, 77.91573193], [1516582980000, 0.03007719, 0.03007727, 0.03007719, 0.03007719, 36.61405429], [1516583040000, 0.03007719, 0.03007719, 0.03007719, 0.03007719, 3.49948177], [1516583100000, 0.03007719, 0.03007719, 0.03007719, 0.03007719, 0.15231136], [1516583160000, 0.03007719, 0.03007719, 0.03007719, 0.03007719, 9.19437805], [1516583400000, 0.02982847, 0.03007724, 0.02982847, 0.03007724, 1.61177402], [1516583460000, 0.03007724, 0.03007724, 0.03007724, 0.03007724, 1.12951432], [1516583520000, 0.03007724, 0.03007724, 0.03007724, 0.03007724, 0.04467539], [1516583580000, 0.03007724, 0.03007724, 0.02996366, 0.02996366, 2.79604445], [1516583640000, 0.02996366, 0.02996366, 0.02996366, 0.02996366, 1.16031591], [1516583700000, 0.03007724, 0.03007724, 0.03007724, 0.03007724, 2.71490622], [1516583820000, 0.02989999, 0.02989999, 0.02989999, 0.02989999, 5.385], [1516583880000, 0.02987, 0.03007724, 0.02987, 0.03007724, 1.60521343], [1516583940000, 0.03007721, 0.03007724, 0.03007721, 0.03007724, 0.4839702], [1516584000000, 0.03007724, 0.03007724, 0.03007724, 0.03007724, 1.12143412], [1516584060000, 0.03007724, 0.03007724, 0.03007724, 0.03007724, 0.13202031], [1516584180000, 0.03007724, 0.03007724, 0.02982855, 0.02982855, 4.62208637], [1516584240000, 0.03007709, 0.03007709, 0.03007709, 0.03007709, 0.03109299], [1516584300000, 0.02982854, 0.02982854, 0.02975071, 0.02975071, 2.58737149], [1516584360000, 0.02975071, 0.0298285, 0.02975, 0.02975172, 3.58847087], [1516584480000, 0.0298285, 0.0298285, 0.0298285, 0.0298285, 0.36909485], [1516584540000, 0.03007341, 0.03007341, 0.02978, 0.02978, 5.81422431], [1516584600000, 0.02978028, 0.03005336, 0.02978028, 0.02978033, 19.33274105], [1516584660000, 0.03002472, 0.03002472, 0.02978, 0.02978, 6.51293812], [1516584720000, 0.02975, 0.02975, 0.02975, 0.02975, 1.63615627], [1516584780000, 0.02973051, 0.02973051, 0.02973051, 0.02973051, 0.22558881], [1516584840000, 0.02988732, 0.03002472, 0.02988732, 0.03002472, 1.02957326], [1516584900000, 0.03002438, 0.03002445, 0.03002438, 0.03002445, 0.39724311], [1516584960000, 0.03002454, 0.03002472, 0.02973209, 0.02973209, 4.40797294], [1516585080000, 0.029735, 0.029735, 0.029735, 0.029735, 4.54883526], [1516585140000, 0.02973501, 0.02973501, 0.02973501, 0.02973501, 0.02071302], [1516585200000, 0.029735, 0.03001255, 0.029735, 0.02973534, 0.3082057], [1516585260000, 0.03001166, 0.03001166, 0.03001166, 0.03001166, 0.04520937], [1516585320000, 0.02973911, 0.03001137, 0.02973911, 0.02974056, 1.23105976], [1516585380000, 0.02974174, 0.029743, 0.02974174, 0.029743, 9.23220358], [1516585440000, 0.03002394, 0.03002394, 0.02986664, 0.02986664, 0.47358161], [1516585500000, 0.02999994, 0.02999994, 0.02973, 0.02973, 4.03034046], [1516585560000, 0.02973003, 0.0299869, 0.029705, 0.0299869, 1.56140455], [1516585680000, 0.02998573, 0.02998573, 0.02998573, 0.02998573, 0.66248398], [1516585740000, 0.02970516, 0.02970516, 0.02970514, 0.02970514, 0.68482119], [1516585800000, 0.02997472, 0.02997478, 0.02997472, 0.02997478, 2.16631413], [1516585920000, 0.0299, 0.0299, 0.0299, 0.0299, 5.0], [1516585980000, 0.0299, 0.0299, 0.0299, 0.0299, 7.30831361], [1516586040000, 0.02971037, 0.02971037, 0.02971037, 0.02971037, 2.15328148], [1516586100000, 0.02971093, 0.0298999, 0.02971093, 0.0298999, 1.58869767], [1516586160000, 0.02971122, 0.02971122, 0.02971002, 0.02971002, 1.83073068], [1516586220000, 0.02989989, 0.02989989, 0.02971001, 0.02971002, 1.37825179], [1516586280000, 0.02971001, 0.02971001, 0.02971, 0.02971, 39.97336438], [1516586340000, 0.02980525, 0.0298999, 0.02971, 0.0298999, 0.9090527], [1516586400000, 0.02971002, 0.0298999, 0.02971, 0.0298999, 39.56670983], [1516586460000, 0.02989986, 0.0298999, 0.02989986, 0.0298999, 4.14571673], [1516586520000, 0.02983988, 0.02983988, 0.02983988, 0.02983988, 0.07596503], [1516586580000, 0.02983987, 0.02983988, 0.02983987, 0.02983988, 0.51384728], [1516586640000, 0.02983988, 0.02983988, 0.02983988, 0.02983988, 0.50780086], [1516586700000, 0.02971, 0.02971, 0.02971, 0.02971, 0.09174985], [1516586760000, 0.02971, 0.02983988, 0.02971, 0.02983988, 7.94302622], [1516586820000, 0.02971, 0.02971, 0.02971, 0.02971, 0.73662825], [1516586880000, 0.02971, 0.029816, 0.02971, 0.02971, 7.95184292], [1516586940000, 0.02971, 0.02981599, 0.02971, 0.02981599, 7.58804222], [1516587000000, 0.02981599, 0.02981599, 0.02971, 0.02971, 3.15529474], [1516587060000, 0.02971, 0.02981599, 0.0297, 0.0297, 41.02730196], [1516587120000, 0.0297, 0.029816, 0.0297, 0.029816, 10.09201444], [1516587240000, 0.0296785, 0.02981599, 0.0296785, 0.02981599, 0.18742733], [1516587300000, 0.02981599, 0.029816, 0.02981599, 0.02981599, 57.41905382], [1516587360000, 0.029816, 0.029816, 0.02981599, 0.02981599, 10.39090089], [1516587420000, 0.02981599, 0.02981599, 0.02981599, 0.02981599, 0.0739536], [1516587480000, 0.029816, 0.029816, 0.02981599, 0.02981599, 1.23529211], [1516587540000, 0.02981599, 0.029816, 0.02981599, 0.02981599, 0.42238987], [1516587600000, 0.029816, 0.029816, 0.02974724, 0.02981599, 3.51744202], [1516587660000, 0.029816, 0.029816, 0.02981599, 0.02981599, 1.23375627], [1516587720000, 0.02981599, 0.029816, 0.02981599, 0.029816, 1.85773754], [1516587840000, 0.029816, 0.029816, 0.02981599, 0.02981599, 72.79755077], [1516587900000, 0.02981599, 0.029816, 0.02981599, 0.02981599, 1.25464745], [1516587960000, 0.029816, 0.029816, 0.029816, 0.029816, 46.74650774], [1516588020000, 0.029816, 0.029816, 0.029816, 0.029816, 0.07395358], [1516588080000, 0.02983988, 0.02988, 0.02983988, 0.02983988, 7.2722761], [1516588140000, 0.02987994, 0.02987997, 0.02983988, 0.02983988, 5.33220676], [1516588200000, 0.02986413, 0.02986413, 0.02983988, 0.02985572, 4.78713054], [1516588260000, 0.02985572, 0.02985572, 0.02983988, 0.02983988, 6.11604995], [1516588320000, 0.02983988, 0.02983988, 0.029816, 0.029816, 0.07392399], [1516588380000, 0.02985557, 0.02985557, 0.02985557, 0.02985557, 0.42045971], [1516588440000, 0.029816, 0.02985557, 0.029816, 0.029816, 6.89184035], [1516588500000, 0.02981599, 0.029816, 0.02981599, 0.02981599, 5.22388005], [1516588560000, 0.02981599, 0.02981599, 0.02981599, 0.02981599, 1.9066546], [1516588620000, 0.02981599, 0.02985575, 0.02981599, 0.02981599, 2.37706929], [1516588680000, 0.02985575, 0.03002466, 0.02966259, 0.02966279, 37.19048419], [1516588740000, 0.02989591, 0.02989591, 0.02989579, 0.02989579, 11.30936045], [1516588800000, 0.0297, 0.02999996, 0.0297, 0.02989542, 14.70009009], [1516588920000, 0.02989542, 0.02989542, 0.02989542, 0.02989542, 0.26740799], [1516588980000, 0.02975311, 0.02989534, 0.02965, 0.02965321, 5.97998603], [1516589040000, 0.02965, 0.02989463, 0.02960241, 0.02960249, 7.3557796], [1516589100000, 0.02989451, 0.02989451, 0.02960247, 0.0296532, 1.93944814], [1516589220000, 0.0296532, 0.0296532, 0.0296532, 0.0296532, 0.11009843], [1516589280000, 0.02987097, 0.02987097, 0.02977491, 0.02987093, 1.42068234], [1516589340000, 0.02986997, 0.02986997, 0.02986997, 0.02986997, 0.44217884], [1516589400000, 0.02977491, 0.02977491, 0.02977491, 0.02977491, 0.07405564], [1516589460000, 0.02977491, 0.02977491, 0.02977491, 0.02977491, 0.09683481], [1516589520000, 0.02977491, 0.02977491, 0.02977491, 0.02977491, 0.07405564], [1516589580000, 0.02986997, 0.02986997, 0.02986992, 0.02986992, 0.05544763], [1516589640000, 0.02977491, 0.02977491, 0.02961035, 0.02961039, 0.6509565], [1516589700000, 0.0296558, 0.02986992, 0.0296558, 0.02986992, 12.17491305], [1516589820000, 0.02965579, 0.02965579, 0.02905106, 0.02905126, 831.97040476], [1516589880000, 0.02940057, 0.02975, 0.02900001, 0.02900018, 597.94033689], [1516589940000, 0.02965, 0.02969999, 0.0294, 0.0296999, 5.3117771], [1516590000000, 0.0296996, 0.0296996, 0.02900018, 0.02941723, 218.13878556], [1516590060000, 0.02941723, 0.02969895, 0.0285, 0.02900057, 986.929728], [1516590120000, 0.02900188, 0.02955, 0.02900167, 0.02944987, 624.62676919], [1516590180000, 0.02934999, 0.02944986, 0.02900059, 0.02944977, 118.09545327], [1516590240000, 0.02925034, 0.02944977, 0.02900429, 0.02944972, 198.39055101], [1516590300000, 0.02944964, 0.02944964, 0.02899999, 0.02934941, 1835.14663347], [1516590360000, 0.02934941, 0.02934941, 0.02925271, 0.0293494, 14.10299668], [1516590420000, 0.0293494, 0.02934941, 0.02925271, 0.02933023, 6.96686628], [1516590480000, 0.02934925, 0.0293494, 0.02934925, 0.0293494, 0.64056132], [1516590540000, 0.02934933, 0.02934933, 0.02934933, 0.02934933, 1.11265268], [1516590600000, 0.02934941, 0.02939768, 0.02934941, 0.02935, 48.70747692], [1516590660000, 0.02935, 0.02939767, 0.02934995, 0.02935, 14.88992116], [1516590720000, 0.02934995, 0.02939763, 0.02934995, 0.02939763, 5.23749053], [1516590780000, 0.02939763, 0.02939763, 0.02915046, 0.02935001, 8.95358726], [1516590840000, 0.02934995, 0.02934995, 0.02915058, 0.02915062, 5.78857138], [1516590900000, 0.02935001, 0.0293545, 0.02915069, 0.02935442, 2.92273135], [1516590960000, 0.02935442, 0.02935442, 0.02935442, 0.02935442, 1.0], [1516591020000, 0.02935451, 0.02941781, 0.02935451, 0.02941781, 74.92493885], [1516591080000, 0.02941828, 0.02941828, 0.02941828, 0.02941828, 0.12597779], [1516591140000, 0.02941828, 0.02941828, 0.02941828, 0.02941828, 0.21108642], [1516591200000, 0.029399, 0.029399, 0.029399, 0.029399, 0.13389536], [1516591260000, 0.029399, 0.02941828, 0.029399, 0.02941828, 4.17625813], [1516591320000, 0.02941828, 0.02941828, 0.02941828, 0.02941828, 0.07511656], [1516591380000, 0.02941828, 0.02954455, 0.02941828, 0.02954455, 22.36906966], [1516591440000, 0.02940889, 0.02954681, 0.02923721, 0.02954681, 4.39157431], [1516591500000, 0.0295467, 0.0295467, 0.02954659, 0.02954659, 0.57426163], [1516591620000, 0.02923845, 0.02954562, 0.02923845, 0.02923887, 2.91345056], [1516591740000, 0.0295446, 0.0295446, 0.02923844, 0.02923844, 23.60650603], [1516591800000, 0.02954306, 0.02954306, 0.02954306, 0.02954306, 0.33848736], [1516591980000, 0.02924745, 0.02924754, 0.02915065, 0.02915065, 22.73190724], [1516592040000, 0.02953981, 0.02953981, 0.02953981, 0.02953981, 0.16926184], [1516592100000, 0.02949999, 0.02949999, 0.02924744, 0.02948981, 5.70609101], [1516592220000, 0.0294891, 0.0294891, 0.0293675, 0.02948883, 0.57245577], [1516592280000, 0.02948087, 0.02948095, 0.02948087, 0.02948095, 9.12471992], [1516592340000, 0.0294808, 0.02954056, 0.029265, 0.02954056, 11.94305662], [1516592400000, 0.02954056, 0.02962339, 0.02954056, 0.02962339, 40.06870505], [1516592460000, 0.02962338, 0.02967673, 0.02962338, 0.02967673, 114.54186994], [1516592520000, 0.02958058, 0.02968525, 0.02958058, 0.02968525, 12.55639538], [1516592580000, 0.02968526, 0.02968526, 0.02968526, 0.02968526, 7.57625484], [1516592640000, 0.02969994, 0.02969999, 0.02968526, 0.02969999, 13.18444762], [1516592700000, 0.0297, 0.02971792, 0.02954024, 0.02971792, 11.68588442], [1516592760000, 0.02973387, 0.02975, 0.02954033, 0.02975, 5.45388404], [1516592820000, 0.02975, 0.02975, 0.02954048, 0.02954048, 0.3], [1516592880000, 0.02975833, 0.02977574, 0.02975833, 0.02977557, 6.45326377], [1516592940000, 0.02977548, 0.02977557, 0.02977548, 0.02977557, 48.85050437], [1516593000000, 0.02977557, 0.02977571, 0.02977557, 0.02977571, 45.04715882], [1516593060000, 0.02977565, 0.02977573, 0.02954056, 0.02977573, 18.54600026], [1516593120000, 0.02977573, 0.02977573, 0.02977573, 0.02977573, 80.88066788], [1516593180000, 0.02977573, 0.0297953, 0.02954091, 0.0297953, 3.51285054], [1516593240000, 0.02979598, 0.02979598, 0.02979598, 0.02979598, 0.34156683], [1516593300000, 0.02979598, 0.02979598, 0.02954142, 0.02972149, 1.2075283], [1516593420000, 0.02979598, 0.029796, 0.02954807, 0.029796, 13.31677321], [1516593480000, 0.02979601, 0.0298, 0.02979601, 0.0298, 5.18895973], [1516593540000, 0.02985, 0.02985, 0.02985, 0.02985, 0.08616646], [1516593720000, 0.0298498, 0.0298498, 0.0298498, 0.0298498, 4.9346175], [1516593780000, 0.02970055, 0.02970055, 0.02955744, 0.02955744, 1.05049612], [1516593960000, 0.0295602, 0.0295602, 0.0295602, 0.0295602, 0.03405129], [1516594020000, 0.0298498, 0.0298498, 0.02956125, 0.02956125, 7.5160988], [1516594080000, 0.0298498, 0.0298498, 0.029849, 0.029849, 0.07458949], [1516594140000, 0.029849, 0.029849, 0.02956309, 0.02956309, 0.88844044], [1516594200000, 0.02956313, 0.0298498, 0.02956313, 0.0298498, 3.28037075], [1516594260000, 0.0298498, 0.0298498, 0.02956412, 0.02956412, 1.03729241], [1516594320000, 0.0298498, 0.0298498, 0.0298498, 0.0298498, 0.15096573], [1516594380000, 0.0298498, 0.0298498, 0.0298498, 0.0298498, 0.19948], [1516594440000, 0.02956653, 0.02956653, 0.02956653, 0.02956653, 3.50629509], [1516594620000, 0.02984979, 0.0299, 0.02984979, 0.0299, 7.41951424], [1516594800000, 0.02987018, 0.02989915, 0.02987018, 0.02989908, 5.53367869], [1516594920000, 0.02989993, 0.02989993, 0.02989993, 0.02989993, 1.68731625], [1516594980000, 0.02960351, 0.02989993, 0.0296035, 0.02989993, 6.97860266], [1516595040000, 0.02989957, 0.02989957, 0.02989957, 0.02989957, 0.8147255], [1516595100000, 0.02989989, 0.0298999, 0.02989957, 0.02989957, 1.66889854], [1516595160000, 0.0297599, 0.0297599, 0.0297599, 0.0297599, 0.03722458], [1516595220000, 0.0297599, 0.02975991, 0.0297599, 0.02975991, 2.50323807], [1516595280000, 0.02982744, 0.02982744, 0.02982744, 0.02982744, 5.03722314], [1516595340000, 0.02982744, 0.02982744, 0.02982744, 0.02982744, 0.04277686], [1516595400000, 0.02988384, 0.02988384, 0.02988383, 0.02988383, 8.27352], [1516595460000, 0.02988384, 0.02988384, 0.029621, 0.02988384, 2.75266325], [1516595520000, 0.0298, 0.02988384, 0.0298, 0.02988384, 7.16244532], [1516595580000, 0.02962219, 0.02962219, 0.02962219, 0.02962219, 1.0], [1516595640000, 0.02989993, 0.02989993, 0.02989993, 0.02989993, 0.0963213], [1516595700000, 0.02989993, 0.02989993, 0.02989993, 0.02989993, 0.13353819], [1516595760000, 0.02989993, 0.02989993, 0.02962513, 0.02962513, 0.29739242], [1516595820000, 0.02989993, 0.02989993, 0.02989993, 0.02989993, 1.13721489], [1516595880000, 0.02989993, 0.02989993, 0.02989993, 0.02989993, 0.07442778], [1516595940000, 0.02989993, 0.0299, 0.02967361, 0.02967361, 15.85949676], [1516596060000, 0.0299, 0.0299, 0.02967545, 0.0299, 4.92986505], [1516596120000, 0.0299, 0.02999008, 0.0299, 0.02999008, 2.60647887], [1516596180000, 0.0299, 0.0299, 0.0299, 0.0299, 1.30768538], [1516596240000, 0.02972183, 0.02998954, 0.02962498, 0.02962498, 3.34694106], [1516596300000, 0.02972185, 0.0299, 0.02972182, 0.02972182, 1.28516576], [1516596360000, 0.02972185, 0.02994254, 0.02972185, 0.0299, 2.59082439], [1516596420000, 0.02962928, 0.02993567, 0.02962928, 0.02993567, 0.76475767], [1516596540000, 0.02963305, 0.0299, 0.02963305, 0.02987453, 1.59395189], [1516596780000, 0.02967065, 0.02967065, 0.02967053, 0.02967053, 35.0], [1516596840000, 0.02967079, 0.02986, 0.02967079, 0.02967084, 1.29769366], [1516596900000, 0.02967084, 0.02987453, 0.02967084, 0.0298745, 2.47658097], [1516596960000, 0.02981512, 0.02981512, 0.02981512, 0.02981512, 0.03715931], [1516597020000, 0.02981512, 0.02981512, 0.02981512, 0.02981512, 0.36106476], [1516597080000, 0.0298745, 0.0298745, 0.0298745, 0.0298745, 1.04098104], [1516597200000, 0.02984482, 0.02987453, 0.02984482, 0.02987453, 0.79316574], [1516597260000, 0.02987453, 0.02987453, 0.0298745, 0.02987453, 1.02189657], [1516597320000, 0.02987453, 0.02987453, 0.02987453, 0.02987453, 2.16224466], [1516597380000, 0.02987453, 0.02987453, 0.02987453, 0.02987453, 0.07380926], [1516597440000, 0.02987453, 0.02987453, 0.02987453, 0.02987453, 3.26655375], [1516597500000, 0.02987453, 0.02987453, 0.02964983, 0.02987453, 20.86644278], [1516597560000, 0.02987442, 0.02987442, 0.0296501, 0.02986913, 0.91457996], [1516597620000, 0.02986913, 0.02986913, 0.02986912, 0.02986912, 0.37436789], [1516597680000, 0.02986913, 0.02986913, 0.02986908, 0.02986913, 0.07436744], [1516597740000, 0.02986912, 0.02986912, 0.02986912, 0.02986912, 0.12201788], [1516597800000, 0.02986912, 0.02986912, 0.02986912, 0.02986912, 3.17635404], [1516597860000, 0.02986912, 0.02986912, 0.02986912, 0.02986912, 0.07436609], [1516597920000, 0.02986912, 0.02986912, 0.02986909, 0.02986909, 0.0743648], [1516597980000, 0.02986903, 0.02986903, 0.02965184, 0.02986892, 0.67497363], [1516598040000, 0.02986902, 0.02986902, 0.02986902, 0.02986902, 0.03718134], [1516598100000, 0.02986902, 0.02986902, 0.02986902, 0.02986902, 1.00438805], [1516598160000, 0.02986903, 0.02986903, 0.02986899, 0.02986899, 0.13717865], [1516598220000, 0.02986899, 0.02986899, 0.02965448, 0.02965448, 14.03717837], [1516598280000, 0.02986667, 0.02986667, 0.02965475, 0.02965475, 0.20619739], [1516598340000, 0.02965475, 0.02986903, 0.02965475, 0.02986664, 4.13819435], [1516598400000, 0.02986664, 0.02986664, 0.02986661, 0.02986661, 4.39219604], [1516598460000, 0.02986663, 0.02986664, 0.02965498, 0.02986664, 9.66100896], [1516598520000, 0.02986664, 0.02986664, 0.02986664, 0.02986664, 0.11474338], [1516598580000, 0.02965478, 0.02986661, 0.02965478, 0.02986661, 0.30109384], [1516598640000, 0.02986661, 0.02986661, 0.02986661, 0.02986661, 0.16233668], [1516598700000, 0.02986661, 0.02998849, 0.02986661, 0.02995, 319.53104013], [1516598760000, 0.02995, 0.02995, 0.02989664, 0.02989664, 14.51392773], [1516598940000, 0.02989664, 0.02994944, 0.02989664, 0.02994944, 3.78321982], [1516599000000, 0.02999003, 0.02999003, 0.02967088, 0.02967122, 2.03274745], [1516599120000, 0.02999008, 0.02999008, 0.02967232, 0.02967232, 1.07475304], [1516599240000, 0.02967293, 0.02999, 0.02967293, 0.02999, 67.03782266], [1516599300000, 0.02967382, 0.02999001, 0.02967382, 0.02999001, 1.10033344], [1516599360000, 0.02998997, 0.02998997, 0.02998997, 0.02998997, 0.16591585], [1516599420000, 0.02999008, 0.02999008, 0.02999008, 0.02999008, 0.05397915], [1516599660000, 0.02999003, 0.02999003, 0.02999003, 0.02999003, 0.35419504], [1516599720000, 0.02999008, 0.02999008, 0.02999008, 0.02999008, 0.06003299], [1516599840000, 0.02998996, 0.02998999, 0.02998996, 0.02998999, 0.60092115], [1516599900000, 0.02968244, 0.02968244, 0.02968244, 0.02968244, 0.32815973], [1516600020000, 0.02968493, 0.02968539, 0.02968493, 0.02968539, 3.14221388], [1516600140000, 0.02968764, 0.02968764, 0.02968764, 0.02968764, 3.0], [1516600320000, 0.02969453, 0.02979509, 0.02969452, 0.02979509, 5.84435174], [1516600500000, 0.02998925, 0.02998925, 0.02998925, 0.02998925, 0.33345226], [1516600560000, 0.02998905, 0.02998905, 0.02998904, 0.02998904, 0.99615017], [1516600740000, 0.02998767, 0.02998769, 0.02998767, 0.02998769, 30.0], [1516600800000, 0.02979518, 0.02997395, 0.02979518, 0.02997395, 2.89473475], [1516600860000, 0.02979521, 0.02997348, 0.02979521, 0.02997348, 9.26479356], [1516600920000, 0.0299728, 0.0299728, 0.02997279, 0.02997279, 1.33051723], [1516600980000, 0.02997, 0.02997, 0.02997, 0.02997, 1.02679295], [1516601040000, 0.02995999, 0.02995999, 0.0299, 0.0299, 0.59011693], [1516601100000, 0.02989999, 0.0299, 0.029797, 0.029797, 0.5831481], [1516601220000, 0.02979704, 0.02979704, 0.02979704, 0.02979704, 0.22232219], [1516601340000, 0.02979704, 0.02995963, 0.029797, 0.029959, 3.43606496], [1516601400000, 0.02979704, 0.02995898, 0.02979704, 0.02995894, 15.15421026], [1516601460000, 0.02979705, 0.02979705, 0.029797, 0.02979705, 1.13619639], [1516601520000, 0.02979705, 0.02979705, 0.02979705, 0.02979705, 0.00380361], [1516601580000, 0.02979706, 0.02979706, 0.02979706, 0.02979706, 0.1218162], [1516601700000, 0.029797, 0.029797, 0.029797, 0.029797, 1.0], [1516601760000, 0.029797, 0.029797, 0.02967782, 0.02967793, 8.38227027], [1516601820000, 0.02967793, 0.02967793, 0.02967793, 0.02967793, 0.60330433], [1516601940000, 0.02994581, 0.02994581, 0.02994569, 0.02994569, 0.28547975], [1516602000000, 0.0299455, 0.0299455, 0.02994537, 0.02994537, 0.08571778], [1516602120000, 0.02994482, 0.02994482, 0.02994482, 0.02994482, 0.99490304], [1516602180000, 0.02967904, 0.02994464, 0.02967892, 0.02967905, 4.09830775], [1516602240000, 0.029679, 0.029679, 0.029679, 0.029679, 0.49711373], [1516602360000, 0.0296793, 0.02967932, 0.02933006, 0.02956848, 100.20776904], [1516602420000, 0.02978022, 0.02985707, 0.02950794, 0.02985702, 114.14207627], [1516602540000, 0.02985641, 0.02985641, 0.02973172, 0.02973173, 1.35862529], [1516602600000, 0.02985641, 0.02989107, 0.02973173, 0.02973173, 16.93444867], [1516602660000, 0.02989108, 0.02989108, 0.02989108, 0.02989108, 0.18311568], [1516602720000, 0.02989108, 0.02989108, 0.02989107, 0.02989108, 3.49533625], [1516602780000, 0.02989108, 0.02989108, 0.029891, 0.02989108, 1.57378761], [1516602840000, 0.02989108, 0.02989108, 0.02989108, 0.02989108, 0.41927542], [1516602900000, 0.02989108, 0.02990428, 0.02977152, 0.02990428, 6.08038895], [1516602960000, 0.02990428, 0.02992408, 0.02990428, 0.02992408, 1.29727324], [1516603020000, 0.02992408, 0.02992408, 0.02992408, 0.02992408, 2.25479804], [1516603080000, 0.02992408, 0.02995885, 0.02992408, 0.0299241, 9.10131279], [1516603140000, 0.0299241, 0.02995885, 0.0299241, 0.02995885, 30.55773642], [1516603200000, 0.02995885, 0.02995885, 0.02973981, 0.02973982, 8.78400979], [1516603260000, 0.029959, 0.02997039, 0.029959, 0.02997039, 0.06166498], [1516603320000, 0.02997039, 0.02998801, 0.02974059, 0.02974059, 3.14794076], [1516603380000, 0.02998775, 0.0299878, 0.02998775, 0.02998777, 4.7911007], [1516603500000, 0.02998775, 0.02998775, 0.02974182, 0.02998775, 2.33428702], [1516603560000, 0.02998773, 0.02998773, 0.02998773, 0.02998773, 0.31206897], [1516603620000, 0.02974228, 0.02974228, 0.02974228, 0.02974228, 1.14891292], [1516603680000, 0.02974216, 0.02974228, 0.02974216, 0.02974228, 1.96582435], [1516603740000, 0.02974228, 0.02974228, 0.02974228, 0.02974228, 0.17040056], [1516603800000, 0.02974228, 0.02974228, 0.02974228, 0.02974228, 3.09329679], [1516603860000, 0.0298211, 0.0299877, 0.0298211, 0.0299877, 3.3660115], [1516604100000, 0.02998689, 0.02998689, 0.02986125, 0.02986125, 0.70387866], [1516604160000, 0.02986125, 0.02986125, 0.02986125, 0.02986125, 0.07384152], [1516604220000, 0.02986125, 0.02986125, 0.02986125, 0.02986125, 0.02823573], [1516604340000, 0.02998539, 0.02998539, 0.02998539, 0.02998539, 2.57023602], [1516604400000, 0.02998481, 0.02998481, 0.02973927, 0.02973927, 0.66700016], [1516604520000, 0.02974055, 0.02974055, 0.02974055, 0.02974055, 0.06741764], [1516604640000, 0.02986374, 0.02990884, 0.02974301, 0.02974301, 1.54825992], [1516604700000, 0.02998377, 0.02998377, 0.02974324, 0.02998376, 0.89433558], [1516605000000, 0.02998371, 0.02998375, 0.02998371, 0.02998374, 0.59047207], [1516605060000, 0.02978897, 0.02978897, 0.02978896, 0.02978896, 0.908547], [1516605120000, 0.02978896, 0.02978896, 0.02978896, 0.02978896, 0.07561894], [1516605240000, 0.02978896, 0.02978896, 0.02978896, 0.02978896, 1.82351377], [1516605300000, 0.02978896, 0.02990656, 0.02974959, 0.02974969, 4.25004569], [1516605360000, 0.02974906, 0.02974907, 0.02973804, 0.02973804, 3.34213113], [1516605420000, 0.02973795, 0.02973795, 0.02973795, 0.02973795, 0.045], [1516605480000, 0.02990656, 0.02990656, 0.02973799, 0.02973799, 1.09677946], [1516605540000, 0.02997797, 0.02997815, 0.02997797, 0.02997815, 0.19012877], [1516605600000, 0.02997815, 0.02997815, 0.02997815, 0.02997815, 0.06550631], [1516605720000, 0.02997812, 0.02997812, 0.02997812, 0.02997812, 0.33274235], [1516605780000, 0.02973866, 0.02973866, 0.02973866, 0.02973866, 0.02268587], [1516605900000, 0.02989048, 0.02997812, 0.02989048, 0.02989048, 1.66059021], [1516605960000, 0.02973877, 0.02973877, 0.02973877, 0.02973877, 0.34097342], [1516606020000, 0.02974, 0.02997812, 0.02974, 0.02997812, 0.2012213], [1516606080000, 0.02976504, 0.02997812, 0.02974004, 0.02974004, 3.05986211], [1516606140000, 0.02974005, 0.02995469, 0.0296621, 0.02995469, 11.30367015], [1516606200000, 0.02995466, 0.02995466, 0.02966567, 0.02966567, 0.66767484], [1516606260000, 0.02995466, 0.02995466, 0.02995466, 0.02995466, 0.03192924], [1516606380000, 0.02995465, 0.02995465, 0.02966763, 0.02966763, 29.62448171], [1516606440000, 0.02995465, 0.02995465, 0.02966819, 0.02995465, 3.6661636], [1516606500000, 0.02985819, 0.02985819, 0.02985819, 0.02985819, 1.43144672], [1516606560000, 0.02985819, 0.02994564, 0.02985819, 0.02994564, 2.49939955], [1516606620000, 0.02994564, 0.02994564, 0.02994564, 0.02994564, 0.07307732], [1516606680000, 0.0298732, 0.0298732, 0.0298732, 0.0298732, 0.03715779], [1516606740000, 0.0298732, 0.03, 0.02967143, 0.03, 30.7014254], [1516606800000, 0.03, 0.03, 0.03, 0.03, 1.33333332], [1516606860000, 0.02970579, 0.02970579, 0.02970579, 0.02970579, 2.67593672], [1516606980000, 0.03, 0.03, 0.03, 0.03, 1.240005], [1516607040000, 0.03002454, 0.03002454, 0.03001, 0.03001, 3.09734897], [1516607100000, 0.02996531, 0.02996531, 0.02972038, 0.02995, 5.25746259], [1516607160000, 0.02972073, 0.02995, 0.02972073, 0.02995, 3.582264], [1516607220000, 0.02995, 0.02995, 0.02995, 0.02995, 0.24002408], [1516607280000, 0.02995, 0.02995, 0.02995, 0.02995, 0.79519556], [1516607340000, 0.02996531, 0.02996531, 0.02972301, 0.02972335, 8.00198243], [1516607400000, 0.02975001, 0.02995, 0.02975001, 0.02995, 2.87656981], [1516607460000, 0.02995, 0.02995, 0.02994997, 0.02994997, 0.84626501], [1516607520000, 0.02994997, 0.02994997, 0.02994997, 0.02994997, 8.73930342], [1516607580000, 0.02988608, 0.02988608, 0.02988608, 0.02988608, 0.07409282], [1516607640000, 0.02988608, 0.02988608, 0.02988608, 0.02988608, 0.80269536], [1516607700000, 0.02988608, 0.02993999, 0.02988608, 0.02988608, 5.65113485], [1516607760000, 0.02976001, 0.02993994, 0.02966215, 0.02966226, 2.51023204], [1516607880000, 0.0299392, 0.0299392, 0.02966229, 0.02966229, 0.21349176], [1516607940000, 0.02993857, 0.02993857, 0.02989999, 0.02989999, 2.59533297], [1516608000000, 0.02971668, 0.029862, 0.02971668, 0.02985199, 4.52325744], [1516608060000, 0.02966226, 0.02966226, 0.02966226, 0.02966226, 0.4], [1516608120000, 0.02966226, 0.02983184, 0.02966226, 0.0296623, 0.47028082], [1516608180000, 0.02983184, 0.02983184, 0.02983184, 0.02983184, 0.13408492], [1516608300000, 0.0298318, 0.0298318, 0.02966229, 0.0298318, 5.82902301], [1516608360000, 0.0298318, 0.0298318, 0.0298318, 0.0298318, 0.05920796], [1516608420000, 0.0296621, 0.0296621, 0.0296621, 0.0296621, 0.11454641], [1516608480000, 0.02983177, 0.02983177, 0.02983177, 0.02983177, 0.10321018], [1516608600000, 0.02983174, 0.0298318, 0.02983174, 0.0298318, 1.6760694], [1516608720000, 0.0298318, 0.0298318, 0.02972745, 0.02983179, 2.11237697], [1516608840000, 0.02983179, 0.02983179, 0.0296621, 0.02983177, 10.2025925], [1516608900000, 0.02983177, 0.02983177, 0.0296621, 0.0296621, 15.98721097], [1516608960000, 0.02965, 0.029787, 0.02962623, 0.029787, 0.64730131], [1516609020000, 0.029787, 0.029787, 0.029787, 0.029787, 0.29801248], [1516609080000, 0.02977699, 0.029777, 0.02962485, 0.02962488, 13.57813118], [1516609140000, 0.02977698, 0.029777, 0.02977698, 0.029777, 6.07307983], [1516609200000, 0.029777, 0.029777, 0.029777, 0.029777, 0.074304], [1516609260000, 0.029777, 0.029777, 0.029777, 0.029777, 0.52890298], [1516609320000, 0.029777, 0.029777, 0.029777, 0.029777, 0.14672528], [1516609380000, 0.029777, 0.029777, 0.02967548, 0.029777, 11.92211605], [1516609440000, 0.029777, 0.029777, 0.02967548, 0.029777, 37.94583321], [1516609500000, 0.029777, 0.029777, 0.029777, 0.029777, 19.00275481], [1516609560000, 0.029777, 0.029777, 0.029777, 0.029777, 8.296175], [1516609620000, 0.029777, 0.029777, 0.02962484, 0.029777, 32.06191232], [1516609680000, 0.029777, 0.02985591, 0.029777, 0.02985591, 42.03748767], [1516609740000, 0.02985591, 0.02985591, 0.0298318, 0.0298318, 1.08954477], [1516609800000, 0.0298318, 0.02985591, 0.0298318, 0.02985591, 0.43651574], [1516609860000, 0.02985591, 0.02985591, 0.02985591, 0.02985591, 28.63729367], [1516609920000, 0.02985591, 0.02985591, 0.02985591, 0.02985591, 31.05825189], [1516609980000, 0.02985591, 0.02995566, 0.02985591, 0.02995566, 37.84571286], [1516610040000, 0.02995566, 0.02995566, 0.02995566, 0.02995566, 0.5], [1516610100000, 0.02975393, 0.02995566, 0.02965, 0.02965, 222.30668384], [1516610160000, 0.02975393, 0.02995556, 0.02963212, 0.02995555, 81.02544087], [1516610220000, 0.02994767, 0.02995566, 0.02994767, 0.02995566, 10.0], [1516610280000, 0.02996326, 0.02996326, 0.02995563, 0.02995563, 3.36094009], [1516610340000, 0.02972316, 0.02972316, 0.02972316, 0.02972316, 2.1], [1516610400000, 0.02995565, 0.02995565, 0.02995565, 0.02995565, 0.42592715], [1516610640000, 0.02988, 0.02988, 0.02972651, 0.02988, 1.07417693], [1516610700000, 0.02988, 0.02995565, 0.02988, 0.02995565, 1.66933241], [1516610760000, 0.02995565, 0.02995565, 0.02995565, 0.02995565, 35.82665696], [1516610820000, 0.02995565, 0.02995565, 0.02995551, 0.02995551, 1.81422462], [1516610880000, 0.02995527, 0.02995527, 0.02995527, 0.02995527, 1.1127], [1516610940000, 0.0299553, 0.0299555, 0.0299553, 0.0299555, 0.61775301], [1516611000000, 0.0299555, 0.0299555, 0.0299555, 0.0299555, 0.33382851], [1516611060000, 0.0299555, 0.0299555, 0.02995549, 0.02995549, 0.66488277], [1516611120000, 0.02995549, 0.02995549, 0.029732, 0.02995549, 0.24282567], [1516611180000, 0.02995549, 0.02995549, 0.02995549, 0.02995549, 0.10389168], [1516611240000, 0.02995549, 0.02995549, 0.02995549, 0.02995549, 2.64181164], [1516611300000, 0.02995549, 0.02995549, 0.02995548, 0.02995548, 0.50130191], [1516611420000, 0.02990062, 0.02990062, 0.02973732, 0.02990062, 1.99539486], [1516611480000, 0.02990062, 0.02995548, 0.0299, 0.02995548, 13.25079856], [1516611540000, 0.0299, 0.02995543, 0.0299, 0.02995543, 13.23856244], [1516611660000, 0.02995543, 0.02995543, 0.02974178, 0.02995543, 46.26068445], [1516611720000, 0.029955, 0.029955, 0.029955, 0.029955, 1.44247958], [1516611900000, 0.029955, 0.029955, 0.029955, 0.029955, 0.33383408], [1516612020000, 0.029955, 0.029955, 0.029955, 0.029955, 0.07], [1516612080000, 0.02975471, 0.02975474, 0.02975471, 0.02975474, 0.63546381], [1516612140000, 0.02995498, 0.02995499, 0.02995498, 0.02995499, 0.46392949], [1516612200000, 0.02995499, 0.02995499, 0.0298, 0.0298, 0.86278298], [1516612260000, 0.0298, 0.0298, 0.02975515, 0.0298, 19.41955613], [1516612320000, 0.0298, 0.0298, 0.029761, 0.029761, 14.86647767], [1516612380000, 0.0298, 0.0298, 0.0298, 0.0298, 0.75183955], [1516612440000, 0.0298, 0.0298, 0.02977104, 0.0298, 3.36585934], [1516612500000, 0.0298, 0.0298, 0.0298, 0.0298, 3.78333049], [1516612560000, 0.0298, 0.0298, 0.02977106, 0.02977107, 24.31828576], [1516612620000, 0.0298, 0.0298, 0.0298, 0.0298, 7.16183847], [1516612680000, 0.0298, 0.0298, 0.0298, 0.0298, 1.8468121], [1516612740000, 0.0298, 0.0298, 0.0298, 0.0298, 0.14150941], [1516612800000, 0.0298, 0.0298, 0.0298, 0.0298, 7.50756851], [1516612860000, 0.0298, 0.02995499, 0.0298, 0.02995499, 13.30019045], [1516612920000, 0.02995499, 0.02995499, 0.0298, 0.0298, 0.93331421], [1516613040000, 0.02977939, 0.02977947, 0.02977939, 0.02977947, 2.02616841], [1516613100000, 0.02995498, 0.02995499, 0.02977948, 0.02977948, 1.24846365], [1516613220000, 0.02977948, 0.02977948, 0.02977948, 0.02977948, 0.12990678], [1516613340000, 0.02977952, 0.02977952, 0.02977952, 0.02977952, 0.63505626], [1516613400000, 0.02978203, 0.02995497, 0.02978203, 0.02978203, 2.51448376], [1516613520000, 0.02978202, 0.02978202, 0.02978202, 0.02978202, 4.54], [1516613580000, 0.02986894, 0.02986894, 0.02986894, 0.02986894, 0.0589458], [1516613640000, 0.02986894, 0.02986894, 0.02978202, 0.02978202, 4.84099029], [1516613700000, 0.02985648, 0.02985648, 0.02985648, 0.02985648, 1.38790165], [1516613760000, 0.02985645, 0.02995499, 0.02985645, 0.02995498, 10.60651608], [1516613880000, 0.02995498, 0.02995498, 0.02995498, 0.02995498, 0.48535905], [1516614000000, 0.02982, 0.02995498, 0.02982, 0.02994143, 33.15773802], [1516614120000, 0.02978228, 0.02987485, 0.02978228, 0.02987485, 1.27574376], [1516614180000, 0.02987485, 0.02995498, 0.02987485, 0.02995498, 0.08549314], [1516614240000, 0.02987485, 0.02995498, 0.02982943, 0.02995498, 0.23760352], [1516614300000, 0.02982943, 0.02995499, 0.02982943, 0.02982943, 3.12169968], [1516614420000, 0.02995498, 0.02995498, 0.02995498, 0.02995498, 0.47080066], [1516614480000, 0.02995498, 0.02995498, 0.02982943, 0.02995498, 1.57684189], [1516614600000, 0.0299, 0.02995499, 0.0299, 0.02995499, 0.66889632], [1516614660000, 0.02995494, 0.02995498, 0.02995494, 0.02995498, 10.23341087], [1516614720000, 0.02995498, 0.02995498, 0.02982943, 0.02982943, 0.32433724], [1516614780000, 0.02995499, 0.02995499, 0.02995499, 0.02995499, 0.06441027], [1516614900000, 0.02995498, 0.02995499, 0.02979101, 0.02995499, 2.27750456], [1516614960000, 0.02995499, 0.02995499, 0.02995499, 0.02995499, 0.14749724], [1516615020000, 0.02995499, 0.02995499, 0.02995499, 0.02995499, 0.04876516], [1516615080000, 0.02978301, 0.02978301, 0.02978301, 0.02978301, 0.3], [1516615140000, 0.02978305, 0.02978306, 0.02978305, 0.02978306, 0.50046306], [1516615200000, 0.02995498, 0.02995499, 0.02995498, 0.02995499, 0.33383408], [1516615260000, 0.02995497, 0.02995497, 0.02995497, 0.02995497, 0.03701777], [1516615320000, 0.02978312, 0.02995499, 0.02978312, 0.02995499, 4.14741345], [1516615380000, 0.02995499, 0.029955, 0.02978316, 0.02978317, 8.82388736], [1516615440000, 0.0297832, 0.0297832, 0.02978319, 0.02978319, 1.0], [1516615500000, 0.029955, 0.029955, 0.02995499, 0.02995499, 0.66766816], [1516615560000, 0.02995498, 0.02995529, 0.02995498, 0.02995529, 2.00920495], [1516615620000, 0.02995529, 0.02995529, 0.02983516, 0.0298352, 0.93252945], [1516615740000, 0.02983517, 0.02983517, 0.02983517, 0.02983517, 10.0], [1516615800000, 0.02995529, 0.02995529, 0.02995529, 0.02995529, 0.66766148], [1516615860000, 0.0298352, 0.02995529, 0.02983516, 0.02995529, 4.23949544], [1516615920000, 0.02995549, 0.02995549, 0.02995524, 0.02995524, 0.1381079], [1516615980000, 0.02995524, 0.02995524, 0.02983516, 0.02983516, 0.93674318], [1516616040000, 0.02983516, 0.02995549, 0.02983516, 0.02995549, 0.44050448], [1516616100000, 0.02995549, 0.0299555, 0.02995549, 0.0299555, 1.56050014], [1516616160000, 0.02995548, 0.0299555, 0.02979499, 0.0299555, 1.33239767], [1516616340000, 0.0299326, 0.0299326, 0.0299326, 0.0299326, 0.14932883], [1516616400000, 0.0299326, 0.0299326, 0.0299326, 0.0299326, 2.79641494], [1516616460000, 0.0297832, 0.0297832, 0.0297832, 0.0297832, 0.64976888], [1516616520000, 0.02978342, 0.02978342, 0.02978342, 0.02978342, 0.3926496], [1516616700000, 0.0299326, 0.0299326, 0.0299326, 0.0299326, 0.03691452], [1516616760000, 0.0299326, 0.0299326, 0.02978325, 0.0299326, 1.49011489], [1516616820000, 0.0299326, 0.02993261, 0.0299326, 0.02993261, 1.41], [1516616880000, 0.0299326, 0.0299326, 0.0299326, 0.0299326, 0.41], [1516616940000, 0.0299326, 0.0299555, 0.0299326, 0.0299555, 15.57085073], [1516617000000, 0.0299555, 0.0299555, 0.0299555, 0.0299555, 0.43], [1516617060000, 0.0299555, 0.0299555, 0.0299555, 0.0299555, 0.20629599], [1516617180000, 0.0299555, 0.03007727, 0.0299555, 0.03007727, 83.8625626], [1516617240000, 0.03007726, 0.03007727, 0.03007726, 0.03007727, 5.09564915], [1516617300000, 0.03007726, 0.03007726, 0.03001338, 0.03007726, 0.50098714], [1516617420000, 0.02982129, 0.03007721, 0.02982129, 0.02982166, 0.83371491], [1516617480000, 0.02982323, 0.02982323, 0.02982323, 0.02982323, 1.0], [1516617540000, 0.03007705, 0.03007713, 0.02982352, 0.02982391, 3.50526975], [1516617600000, 0.02982461, 0.02982461, 0.02982461, 0.02982461, 0.1], [1516617660000, 0.03007696, 0.03007699, 0.03007696, 0.03007699, 15.73961634], [1516617780000, 0.02999999, 0.03007724, 0.02982273, 0.02982273, 38.46666503], [1516617840000, 0.03007716, 0.03007716, 0.03007716, 0.03007716, 0.18], [1516617900000, 0.0300771, 0.03007716, 0.02999, 0.02999, 10.40362037], [1516617960000, 0.02999, 0.02999, 0.02999, 0.02999, 1.01207036], [1516618020000, 0.02999, 0.03002445, 0.02999, 0.03002445, 3.25128469], [1516618140000, 0.03002446, 0.03002446, 0.03002446, 0.03002446, 0.25745472], [1516618200000, 0.03002446, 0.03002446, 0.03002446, 0.03002446, 3.23262625], [1516618260000, 0.030014, 0.03012543, 0.02983139, 0.03011482, 86.54742495], [1516618320000, 0.0298321, 0.0298321, 0.0298321, 0.0298321, 0.37], [1516618440000, 0.0301136, 0.0301136, 0.0301136, 0.0301136, 0.20335223], [1516618620000, 0.02983542, 0.02983562, 0.02983542, 0.02983562, 1.14260313], [1516618680000, 0.02983609, 0.02983609, 0.02983609, 0.02983609, 0.30183986], [1516618740000, 0.03011009, 0.03011009, 0.02983647, 0.02983647, 21.1247075], [1516618800000, 0.03010938, 0.03010938, 0.02983211, 0.02983211, 42.11604602], [1516618920000, 0.02983248, 0.03010477, 0.02983245, 0.030099, 26.60038135], [1516618980000, 0.02983248, 0.03008899, 0.02983218, 0.03, 5.07278799], [1516619040000, 0.03, 0.03, 0.03, 0.03, 2.01905569], [1516619100000, 0.03, 0.03, 0.03, 0.03, 0.33333333], [1516619340000, 0.02983231, 0.02983232, 0.02983231, 0.02983232, 0.51366618], [1516619460000, 0.02983238, 0.03, 0.02983238, 0.03, 0.53699402], [1516619520000, 0.02983247, 0.02983247, 0.02983247, 0.02983247, 2.59271703], [1516619580000, 0.02983247, 0.03, 0.02983247, 0.03, 3.65646482], [1516619640000, 0.03, 0.03, 0.02998, 0.02998, 2.01743444], [1516619700000, 0.02998, 0.03, 0.02998, 0.02998, 7.77309896], [1516619760000, 0.02998, 0.02998, 0.02982795, 0.02982795, 3.52955633], [1516619820000, 0.03, 0.03, 0.03, 0.03, 2.4e-07], [1516619880000, 0.03, 0.03008082, 0.03, 0.03008082, 0.17911846], [1516619940000, 0.03008082, 0.03008082, 0.03, 0.03008077, 2.31819997], [1516620000000, 0.03008075, 0.03008075, 0.03, 0.03, 0.57455846], [1516620060000, 0.02982921, 0.03003352, 0.02982921, 0.03003352, 12.027242], [1516620120000, 0.02982983, 0.02982983, 0.02982983, 0.02982983, 2.26606807], [1516620180000, 0.02982991, 0.03003352, 0.0298299, 0.02982994, 1.46457523], [1516620300000, 0.03003352, 0.03003352, 0.03003352, 0.03003352, 0.02883844], [1516620360000, 0.02983011, 0.02983011, 0.0298293, 0.0298293, 100.0], [1516620480000, 0.03003349, 0.03003354, 0.0299, 0.0299, 6.41406575], [1516620660000, 0.0299, 0.0301, 0.0299, 0.0301, 42.13305597], [1516620720000, 0.0301, 0.03012799, 0.0299, 0.02990004, 49.60459941], [1516620840000, 0.03012792, 0.03012792, 0.03012789, 0.03012789, 0.43751681], [1516620900000, 0.02990015, 0.03012777, 0.02990005, 0.02990005, 4.1730575], [1516620960000, 0.02990005, 0.02990203, 0.02990004, 0.02990202, 4.76176533], [1516621020000, 0.02990042, 0.03012734, 0.02990042, 0.03012734, 0.73968391], [1516621080000, 0.03012694, 0.03012695, 0.02990004, 0.02990004, 5.33285649], [1516621140000, 0.02990004, 0.02990004, 0.02990004, 0.02990004, 3.10156069], [1516621200000, 0.02990004, 0.03012339, 0.02990004, 0.03012325, 5.08168667], [1516621260000, 0.03003351, 0.03003352, 0.02986241, 0.02986241, 23.55400354], [1516621320000, 0.02986241, 0.02986241, 0.02986241, 0.02986241, 3.14777453], [1516621380000, 0.03003347, 0.03003347, 0.02986241, 0.02986241, 1.096692], [1516621440000, 0.02986241, 0.02986241, 0.02986241, 0.02986241, 0.16926184], [1516621500000, 0.02986241, 0.03000499, 0.02986241, 0.03000499, 0.95714011], [1516621560000, 0.02986241, 0.02986241, 0.02986241, 0.02986241, 5.92350771], [1516621620000, 0.02986241, 0.02986241, 0.02986241, 0.02986241, 0.91798163], [1516621680000, 0.02986241, 0.03001232, 0.02986241, 0.03001232, 1.32350733], [1516621740000, 0.02983552, 0.02983552, 0.02983552, 0.02983552, 9.61914657], [1516621800000, 0.02983552, 0.02983552, 0.02983552, 0.02983552, 22.88820597], [1516621860000, 0.02983552, 0.02986241, 0.02983552, 0.02986241, 6.59815326], [1516621920000, 0.02983552, 0.02983552, 0.02983552, 0.02983552, 1.81081724], [1516621980000, 0.02986241, 0.02986241, 0.0298293, 0.0298293, 20.85840515], [1516622100000, 0.02985459, 0.02985459, 0.02985459, 0.02985459, 0.21985611], [1516622160000, 0.02985265, 0.02985265, 0.02985226, 0.02985226, 0.51547097], [1516622220000, 0.02984962, 0.02993981, 0.0298, 0.0298, 2.28743054], [1516622280000, 0.0298, 0.0298, 0.02969976, 0.0297, 9.75765112], [1516622340000, 0.0297, 0.02979662, 0.0297, 0.02979662, 5.37831856], [1516622400000, 0.02979964, 0.0299394, 0.02979964, 0.0299394, 1.00678572], [1516622460000, 0.02965, 0.02965, 0.02962604, 0.02962604, 0.5407264], [1516622520000, 0.02962604, 0.02994138, 0.02962484, 0.02994138, 4.95313121], [1516622640000, 0.02993, 0.02993862, 0.02993, 0.02993862, 0.17132393], [1516622700000, 0.02993476, 0.02993476, 0.029626, 0.02993468, 1.67029227], [1516622760000, 0.02962603, 0.02962603, 0.02962603, 0.02962603, 0.92031968], [1516622880000, 0.02993338, 0.02993338, 0.0296268, 0.02993325, 2.91693745], [1516622940000, 0.02962732, 0.02962734, 0.02962732, 0.02962734, 14.84900083], [1516623000000, 0.02979435, 0.02979435, 0.02979435, 0.02979435, 2.25832897], [1516623060000, 0.02979435, 0.02979435, 0.029626, 0.029626, 1.34761159], [1516623120000, 0.02990718, 0.02990718, 0.02990718, 0.02990718, 0.05052774], [1516623180000, 0.029626, 0.02990623, 0.029626, 0.02990623, 1.03813673], [1516623240000, 0.029626, 0.029626, 0.029626, 0.029626, 0.4679119], [1516623300000, 0.02962599, 0.029626, 0.02962484, 0.029626, 2.115315], [1516623360000, 0.02962484, 0.0298, 0.02958226, 0.029605, 2.4369878], [1516623420000, 0.02958227, 0.02979993, 0.02958224, 0.02979992, 1.49575293], [1516623540000, 0.02958235, 0.02958235, 0.02958235, 0.02958235, 0.31245885], [1516623600000, 0.02958239, 0.02979997, 0.02958224, 0.02958224, 3.51889832], [1516623720000, 0.02979997, 0.02979998, 0.02958267, 0.02958267, 1.50866176], [1516623780000, 0.02979997, 0.02979997, 0.02979997, 0.02979997, 0.46677329], [1516623840000, 0.02979993, 0.02979993, 0.02979993, 0.02979993, 0.33473188], [1516623900000, 0.0297999, 0.0297999, 0.02979987, 0.02979987, 1.25311794], [1516624020000, 0.02979987, 0.02979987, 0.02958877, 0.02958877, 1.08921103], [1516624080000, 0.02958903, 0.02958929, 0.02958903, 0.02958912, 1.36017605], [1516624140000, 0.02958944, 0.02979987, 0.02958944, 0.02979987, 0.76734436], [1516624200000, 0.02967, 0.02967, 0.02967, 0.02967, 6.96644296], [1516624260000, 0.0297998, 0.02979987, 0.02962717, 0.02962717, 2.64652545], [1516624320000, 0.0297998, 0.0297998, 0.02960301, 0.02973834, 16.69706372], [1516624380000, 0.02958925, 0.02973834, 0.02958224, 0.02973834, 24.74512596], [1516624440000, 0.02973834, 0.02973834, 0.0295893, 0.0295893, 1.14435137], [1516624500000, 0.02973834, 0.02973834, 0.02958224, 0.02958224, 8.41035984], [1516624560000, 0.02958224, 0.02973834, 0.02958224, 0.02973834, 4.91143703], [1516624620000, 0.02973834, 0.02973834, 0.02973834, 0.02973834, 0.89361977], [1516624680000, 0.02958226, 0.0295823, 0.02958224, 0.02958224, 17.10281819], [1516624740000, 0.02958224, 0.02973834, 0.0295501, 0.02973834, 43.17521073], [1516624800000, 0.02955225, 0.02979851, 0.02955221, 0.02979833, 6.1328004], [1516624860000, 0.029553, 0.029553, 0.029553, 0.029553, 0.02706897], [1516624920000, 0.02978806, 0.02978806, 0.02965, 0.02965, 0.19377576], [1516624980000, 0.02955225, 0.02955226, 0.02955225, 0.02955225, 19.99103486], [1516625040000, 0.02955222, 0.02977618, 0.02955222, 0.02977618, 1.34522834], [1516625160000, 0.0297749, 0.0297749, 0.02965, 0.02977455, 1.81417599], [1516625220000, 0.02955222, 0.02977403, 0.02955222, 0.02977403, 0.45006713], [1516625280000, 0.02977339, 0.02977339, 0.029674, 0.02977316, 1.25976455], [1516625340000, 0.029694, 0.029694, 0.02967336, 0.029694, 29.08566475], [1516625460000, 0.029594, 0.029594, 0.029594, 0.029594, 1.190299], [1516625520000, 0.02957522, 0.02957522, 0.02952917, 0.02957522, 2.19957445], [1516625580000, 0.02952917, 0.02957522, 0.02952917, 0.02952917, 3.52888236], [1516625640000, 0.02969203, 0.02969203, 0.02952917, 0.02952917, 1.35529831], [1516625700000, 0.0296914, 0.0296914, 0.02952917, 0.02952917, 5.49377354], [1516625760000, 0.02952917, 0.02952917, 0.02952917, 0.02952917, 0.04314084], [1516625820000, 0.02969072, 0.02969072, 0.02941537, 0.02952917, 5.48897174], [1516625880000, 0.02941538, 0.02952917, 0.02941536, 0.02941545, 4.30866135], [1516625940000, 0.02941541, 0.02960638, 0.02941537, 0.02960638, 0.96960966], [1516626000000, 0.02941538, 0.02941538, 0.02941538, 0.02941538, 0.25], [1516626060000, 0.02960638, 0.02960638, 0.02960638, 0.02960638, 0.1], [1516626120000, 0.02960638, 0.02969118, 0.02960638, 0.02969117, 4.20309174], [1516626180000, 0.02942116, 0.0296911, 0.02942116, 0.02942186, 5.26649536], [1516626240000, 0.02951897, 0.02951897, 0.02951825, 0.02951897, 2.15768572], [1516626300000, 0.02951897, 0.02951897, 0.02942299, 0.02942299, 4.64173113], [1516626360000, 0.02969066, 0.02969066, 0.02969058, 0.02969058, 0.40423025], [1516626420000, 0.02969042, 0.02969042, 0.02969042, 0.02969042, 0.03647792], [1516626480000, 0.02943211, 0.02969033, 0.02943211, 0.02969031, 1.19612898], [1516626600000, 0.02969028, 0.0296912, 0.02969028, 0.0296912, 1.34724132], [1516626660000, 0.0296912, 0.0296912, 0.02944411, 0.0296912, 0.83479551], [1516626720000, 0.02944437, 0.0296912, 0.02944437, 0.0296912, 0.45395459], [1516626780000, 0.0296912, 0.029694, 0.02950402, 0.0295101, 12.12669576], [1516626840000, 0.029667, 0.029667, 0.029667, 0.029667, 0.01894348], [1516626900000, 0.02975, 0.02992109, 0.02975, 0.02975, 23.87427955], [1516626960000, 0.02975, 0.02975, 0.02975, 0.02975, 8.50476455], [1516627020000, 0.02975, 0.02975, 0.02975, 0.02975, 11.36393166], [1516627080000, 0.02975, 0.02975, 0.02974999, 0.02975, 25.79839487], [1516627140000, 0.02974999, 0.02975, 0.02974999, 0.02974999, 76.1243566], [1516627200000, 0.02974999, 0.02975, 0.02955004, 0.02955004, 5.12689628], [1516627260000, 0.02974999, 0.02974999, 0.02950244, 0.02950244, 2.54930595], [1516627320000, 0.02950756, 0.0297499, 0.02950188, 0.02950188, 3.53918664], [1516627380000, 0.02950186, 0.02973029, 0.02950186, 0.02950186, 20.19801832], [1516627440000, 0.02972795, 0.02972795, 0.02950186, 0.02950188, 1.1707421], [1516627500000, 0.02950186, 0.02972464, 0.02950186, 0.02972452, 4.58598187], [1516627560000, 0.02972446, 0.02972446, 0.02950188, 0.02950188, 1.25931567], [1516627620000, 0.02950207, 0.02972437, 0.02950207, 0.02972437, 1.65413242], [1516627740000, 0.02972401, 0.02972401, 0.02972401, 0.02972401, 0.61454501], [1516627800000, 0.02961293, 0.02972442, 0.02961293, 0.02972437, 1.34949592], [1516627860000, 0.02972437, 0.02972439, 0.0294811, 0.0294811, 6.73151283], [1516627920000, 0.0294811, 0.0294811, 0.02944334, 0.0294811, 1.3445102], [1516627980000, 0.0294811, 0.0295811, 0.02944375, 0.0295811, 15.47455006], [1516628040000, 0.02944443, 0.0295811, 0.02944443, 0.0295811, 0.13000005], [1516628100000, 0.02944459, 0.02972414, 0.02944459, 0.02972403, 3.04249418], [1516628160000, 0.02970392, 0.02970392, 0.02944464, 0.02944464, 2.29141903], [1516628220000, 0.02944464, 0.02944464, 0.02944464, 0.02944464, 0.20131], [1516628280000, 0.02965297, 0.02965302, 0.02965259, 0.02965259, 10.5195439], [1516628340000, 0.02944465, 0.02956459, 0.02944464, 0.02956459, 2.93770403], [1516628400000, 0.02963145, 0.02965213, 0.02963145, 0.02963145, 22.06615424], [1516628460000, 0.02945001, 0.0297236, 0.02945001, 0.0297236, 21.53778086], [1516628520000, 0.02959492, 0.02959492, 0.02945771, 0.02959475, 3.27690242], [1516628580000, 0.02966337, 0.02972319, 0.02941539, 0.02941539, 15.32977693], [1516628640000, 0.02941539, 0.02972279, 0.02941538, 0.02941538, 27.31729832], [1516628700000, 0.02941538, 0.02965928, 0.02941538, 0.02965916, 3.17913826], [1516628760000, 0.02941538, 0.02958903, 0.02920001, 0.02920001, 24.76460978], [1516628820000, 0.02940171, 0.0295, 0.02925304, 0.0295, 1.97276922], [1516628880000, 0.0292636, 0.02951532, 0.0292636, 0.02951528, 0.23254214], [1516628940000, 0.02926376, 0.0295152, 0.02926376, 0.02951517, 1.34619689], [1516629000000, 0.02951524, 0.02951531, 0.02951518, 0.02951531, 1.38877884], [1516629060000, 0.02951517, 0.02951517, 0.02926363, 0.02926363, 7.2879771], [1516629120000, 0.0292, 0.02926433, 0.02912126, 0.02926432, 31.93627107], [1516629180000, 0.02912126, 0.02912126, 0.02912126, 0.02912126, 1.5], [1516629240000, 0.02912126, 0.02926425, 0.02912126, 0.02912127, 1.55249738], [1516629300000, 0.02912127, 0.02926431, 0.02912126, 0.02916431, 6.21393773], [1516629360000, 0.02916431, 0.02926431, 0.02912126, 0.02916431, 3.88227707], [1516629420000, 0.02926431, 0.02926431, 0.02916431, 0.02916431, 5.96189955], [1516629480000, 0.0292643, 0.02926431, 0.02916438, 0.02926431, 2.11667206], [1516629540000, 0.02926431, 0.02926433, 0.02916438, 0.02926433, 73.74569277], [1516629600000, 0.02926433, 0.02926435, 0.02926433, 0.02926435, 49.94566649], [1516629660000, 0.02939192, 0.02944356, 0.02926478, 0.0293919, 5.31805813], [1516629720000, 0.0293919, 0.029448, 0.02926435, 0.02926435, 17.32628912], [1516629780000, 0.02917286, 0.02926435, 0.02917286, 0.02926435, 6.79552438], [1516629840000, 0.02926435, 0.02926435, 0.02917325, 0.02926435, 2.03637386], [1516629900000, 0.02944799, 0.029448, 0.02916431, 0.02917442, 162.20554975], [1516629960000, 0.02917493, 0.02944784, 0.02917493, 0.02917494, 2.58605582], [1516630020000, 0.02917502, 0.02944782, 0.02917502, 0.02919505, 10.29811809], [1516630080000, 0.02944777, 0.02944786, 0.02919589, 0.02919589, 1.9097424], [1516630140000, 0.029196, 0.029448, 0.029196, 0.029448, 22.59682085], [1516630200000, 0.02944784, 0.029448, 0.02922814, 0.029448, 9.04401843], [1516630260000, 0.029448, 0.029448, 0.029448, 0.029448, 4.65586206], [1516630380000, 0.029448, 0.029448, 0.029448, 0.029448, 0.12781732], [1516630440000, 0.0292504, 0.0292504, 0.0289902, 0.029, 2642.43650418], [1516630500000, 0.029, 0.029, 0.02899001, 0.029, 63.64414843], [1516630560000, 0.02899001, 0.029, 0.02899, 0.029, 18.86603678], [1516630620000, 0.029, 0.029, 0.029, 0.029, 7.40836032], [1516630680000, 0.029, 0.029, 0.0289996, 0.029, 11.13352372], [1516630740000, 0.029, 0.029, 0.02899944, 0.029, 20.531277], [1516630800000, 0.02899999, 0.029, 0.02899999, 0.029, 8.10521697], [1516630860000, 0.029, 0.029, 0.02899999, 0.02899999, 8.75691877], [1516630920000, 0.029, 0.029, 0.0285, 0.0285, 1644.97374564], [1516630980000, 0.0285, 0.02899999, 0.028496, 0.0289, 685.0158153], [1516631040000, 0.0289, 0.02899996, 0.02869502, 0.02899993, 21.2063471], [1516631100000, 0.0289, 0.02899993, 0.0289, 0.02899992, 43.6590998], [1516631160000, 0.02891731, 0.02899992, 0.0289, 0.02895, 2.15962206], [1516631220000, 0.02891731, 0.02905, 0.02890001, 0.02896, 15.46896282], [1516631280000, 0.0291, 0.02913505, 0.0289, 0.0289, 5.32714951], [1516631400000, 0.0289, 0.02909993, 0.0289, 0.02890004, 2.76460023], [1516631460000, 0.02906152, 0.02906152, 0.0289, 0.02906152, 9.78552663], [1516631520000, 0.0289, 0.02914997, 0.0289, 0.02906152, 18.65212253], [1516631580000, 0.02914997, 0.02914997, 0.02906152, 0.02906152, 0.83773529], [1516631640000, 0.02915, 0.02925, 0.02890098, 0.02925, 51.42187671], [1516631700000, 0.02925, 0.02934184, 0.02925, 0.02934184, 36.11284329], [1516631760000, 0.02895003, 0.02934174, 0.02895003, 0.02900226, 10.84925126], [1516631820000, 0.02900277, 0.02925863, 0.02900277, 0.02925855, 9.25227164], [1516631880000, 0.02925863, 0.02942124, 0.02925863, 0.02925863, 11.76426429], [1516631940000, 0.02938388, 0.02938754, 0.02913842, 0.02925858, 26.95048266], [1516632000000, 0.0292878, 0.0292878, 0.02925858, 0.02925858, 2.98268837], [1516632060000, 0.02925864, 0.02925864, 0.02924, 0.02924, 6.80996996], [1516632120000, 0.02922136, 0.02922136, 0.02910309, 0.02922136, 0.69663071], [1516632180000, 0.02924, 0.02924, 0.02924, 0.02924, 0.07576501], [1516632240000, 0.02924, 0.02926936, 0.02923999, 0.02926936, 0.65479374], [1516632300000, 0.02910325, 0.02924001, 0.02910325, 0.02924001, 2.2697041], [1516632360000, 0.02924001, 0.02924001, 0.02924001, 0.02924001, 5.31128351], [1516632420000, 0.02924001, 0.02924001, 0.029175, 0.029175, 1.10052799], [1516632480000, 0.02924001, 0.02924849, 0.02924001, 0.02924849, 6.92804153], [1516632540000, 0.02920002, 0.02924849, 0.02920002, 0.02920002, 8.09027955], [1516632600000, 0.02920002, 0.02920002, 0.0292, 0.02920002, 14.91555288], [1516632660000, 0.02920002, 0.0292878, 0.02920002, 0.0292878, 6.87051946], [1516632720000, 0.0292878, 0.02937456, 0.02922469, 0.0292878, 6.1661181], [1516632780000, 0.0292878, 0.0292878, 0.0292, 0.0292878, 2.24837562], [1516632840000, 0.0292878, 0.02937456, 0.0292878, 0.02937456, 13.88291703], [1516632900000, 0.0292878, 0.02932424, 0.02917164, 0.0291717, 12.03199245], [1516632960000, 0.02932424, 0.02932424, 0.02932424, 0.02932424, 0.07558718], [1516633020000, 0.02932424, 0.02941307, 0.02917184, 0.02941304, 7.95341299], [1516633080000, 0.02941304, 0.02941307, 0.02933174, 0.02933174, 0.22147105], [1516633140000, 0.02932424, 0.02932424, 0.02932424, 0.02932424, 4.03410106], [1516633200000, 0.02941304, 0.02941304, 0.02932426, 0.02932426, 21.07048906], [1516633260000, 0.02941304, 0.02945857, 0.02941304, 0.02945857, 3.29849387], [1516633320000, 0.02945857, 0.02951499, 0.02932424, 0.02932424, 2.29488476], [1516633380000, 0.02932424, 0.02932424, 0.02932424, 0.02932424, 1.1], [1516633440000, 0.02951466, 0.02951466, 0.02951466, 0.02951466, 0.07618282], [1516633500000, 0.02951463, 0.02951463, 0.02951463, 0.02951463, 0.08153987], [1516633560000, 0.029328, 0.029328, 0.0292286, 0.02922874, 12.59972063], [1516633620000, 0.02951402, 0.02951402, 0.02951294, 0.02951294, 3.16320758], [1516633680000, 0.02951284, 0.02951284, 0.02930021, 0.02935, 2.21721368], [1516633740000, 0.02935, 0.02935, 0.02926386, 0.02926386, 0.9815317], [1516633800000, 0.02942024, 0.02951265, 0.02942024, 0.02951265, 0.33990251], [1516633860000, 0.02949451, 0.02949451, 0.02942024, 0.02942024, 0.36774757], [1516633920000, 0.02942024, 0.02949451, 0.02942024, 0.02949451, 1.8347237], [1516633980000, 0.02942024, 0.02942024, 0.02935, 0.02935, 1.22799428], [1516634040000, 0.02935, 0.02949438, 0.02935, 0.02935, 2.85590948], [1516634100000, 0.02949428, 0.02949428, 0.02949425, 0.02949425, 2.01714568], [1516634160000, 0.02949415, 0.02949415, 0.02949415, 0.02949415, 18.04], [1516634220000, 0.02949403, 0.02949403, 0.02910326, 0.02910326, 51.87449431], [1516634340000, 0.029431, 0.029431, 0.029431, 0.029431, 0.2], [1516634400000, 0.0294309, 0.02943091, 0.02917471, 0.02917471, 36.58859811], [1516634460000, 0.02917504, 0.02917504, 0.02917504, 0.02917504, 0.78993429], [1516634520000, 0.02917513, 0.02917513, 0.0291748, 0.0291748, 12.0], [1516634640000, 0.02942969, 0.02942978, 0.02917526, 0.02917526, 16.31734039], [1516634700000, 0.02942936, 0.02942936, 0.02942924, 0.02942924, 9.54335814], [1516634760000, 0.02917575, 0.0294286, 0.02917566, 0.0294286, 0.64795236], [1516634820000, 0.02917543, 0.02917546, 0.02917543, 0.02917543, 1.67112631], [1516634940000, 0.02942739, 0.02942739, 0.02942686, 0.02942686, 10.16990863], [1516635000000, 0.02917554, 0.02917554, 0.02917543, 0.02917543, 21.812872], [1516635060000, 0.02917543, 0.02917543, 0.02917543, 0.02917543, 0.97661269], [1516635120000, 0.02941006, 0.0294101, 0.02937618, 0.02937618, 23.83464259], [1516635180000, 0.02917544, 0.02937618, 0.02917544, 0.02937618, 2.59644999], [1516635240000, 0.0293761, 0.0293761, 0.02917541, 0.02937591, 59.883247], [1516635300000, 0.02917543, 0.02917543, 0.02910327, 0.02917541, 3.58412604], [1516635360000, 0.0291754, 0.02917543, 0.0291754, 0.02917543, 0.94788251], [1516635420000, 0.0291754, 0.0291754, 0.0291754, 0.0291754, 0.73665221], [1516635480000, 0.0291754, 0.02933512, 0.02910326, 0.02933512, 9.90767162], [1516635540000, 0.02933482, 0.02933482, 0.0286604, 0.0286604, 100.3005652], [1516635600000, 0.02933456, 0.02933456, 0.02899763, 0.02924972, 77.86049346], [1516635660000, 0.02924972, 0.02924972, 0.02899952, 0.02915, 0.68675781], [1516635720000, 0.0292, 0.02924968, 0.02915001, 0.02924968, 45.81576968], [1516635780000, 0.02924968, 0.02924972, 0.02924968, 0.02924972, 13.12602817], [1516635840000, 0.02924968, 0.02937618, 0.02924968, 0.02937618, 26.22963999], [1516635900000, 0.02937618, 0.02937618, 0.02937618, 0.02937618, 0.6362696], [1516635960000, 0.02920817, 0.02920822, 0.02920814, 0.02920822, 71.53217608], [1516636020000, 0.02937618, 0.02937618, 0.02937618, 0.02937618, 10.597545], [1516636080000, 0.02937618, 0.02940389, 0.02920913, 0.02940389, 6.25750432], [1516636140000, 0.02940389, 0.0294942, 0.02940389, 0.0294942, 8.04812522], [1516636200000, 0.0295, 0.02952429, 0.0294942, 0.02952426, 24.55941277], [1516636260000, 0.02952426, 0.02952426, 0.02923564, 0.02952426, 9.49083045], [1516636320000, 0.02923712, 0.02952426, 0.02923712, 0.02952426, 1.2400849], [1516636380000, 0.02924701, 0.02952426, 0.02924701, 0.02952426, 10.36630427], [1516636440000, 0.02925604, 0.02952426, 0.02925604, 0.02952426, 0.44739123], [1516636500000, 0.02952426, 0.02952426, 0.02926309, 0.02952426, 5.28869683], [1516636560000, 0.02952426, 0.02970367, 0.02927154, 0.0295438, 75.27497457], [1516636620000, 0.0295438, 0.02971999, 0.0295438, 0.02971999, 6.03728651], [1516636680000, 0.02955, 0.02974041, 0.02930001, 0.02974041, 39.39272047], [1516636740000, 0.02974117, 0.02974117, 0.0296, 0.0296001, 14.12065785], [1516636800000, 0.0296001, 0.02964535, 0.0294, 0.0294, 18.01034731], [1516636860000, 0.02960007, 0.02960007, 0.02938134, 0.02938141, 4.17876108], [1516636920000, 0.02938154, 0.0296001, 0.02938154, 0.0296001, 4.24655172], [1516636980000, 0.02949654, 0.02964535, 0.02936422, 0.02936422, 3.19979121], [1516637040000, 0.0296666, 0.0296666, 0.02966659, 0.02966659, 0.43915382], [1516637100000, 0.02966659, 0.02966659, 0.02937045, 0.02966657, 0.79394988], [1516637280000, 0.02966657, 0.02966657, 0.02966657, 0.02966657, 0.03362371], [1516637340000, 0.02959242, 0.02959242, 0.02959242, 0.02959242, 0.46601941], [1516637400000, 0.02959242, 0.02966658, 0.02951777, 0.02951777, 2.1054026], [1516637460000, 0.02951767, 0.02959242, 0.02951767, 0.02951767, 6.31291744], [1516637520000, 0.02951767, 0.02951767, 0.02951747, 0.02951767, 35.26338786], [1516637580000, 0.02951767, 0.02951767, 0.02951767, 0.02951767, 35.03213918], [1516637700000, 0.02951757, 0.02951767, 0.02951714, 0.02951767, 15.18181929], [1516637760000, 0.02951714, 0.02951767, 0.02935699, 0.02935699, 3.47540453], [1516637820000, 0.02935699, 0.02935699, 0.02935699, 0.02935699, 0.06795656], [1516637880000, 0.02951767, 0.02951767, 0.02951767, 0.02951767, 0.03280861], [1516637940000, 0.02951767, 0.0296, 0.02951767, 0.0296, 51.35257822], [1516638000000, 0.02963548, 0.02963548, 0.02935007, 0.02935007, 1.01462754], [1516638060000, 0.02935, 0.02935, 0.02935, 0.02935, 0.17035775], [1516638120000, 0.02935, 0.0296666, 0.02935, 0.0296666, 126.34338825], [1516638180000, 0.0296666, 0.02975358, 0.02966566, 0.02966569, 7.85511511], [1516638240000, 0.0296657, 0.0298, 0.0296657, 0.0296657, 18.09179863], [1516638300000, 0.0295316, 0.02983348, 0.0295316, 0.02983348, 7.32107964], [1516638360000, 0.0296657, 0.0296657, 0.0296657, 0.0296657, 0.03304344], [1516638420000, 0.02983348, 0.02983349, 0.02983348, 0.02983349, 1.67177893], [1516638480000, 0.0296657, 0.0296657, 0.0296657, 0.0296657, 0.94874407], [1516638540000, 0.02983348, 0.02983349, 0.02983348, 0.02983349, 0.89026987], [1516638600000, 0.0296657, 0.02967657, 0.0296657, 0.0296657, 33.31509655], [1516638660000, 0.0296657, 0.02983346, 0.0296657, 0.0296657, 2.5475571], [1516638720000, 0.0296657, 0.02984349, 0.02942009, 0.02942033, 12.7556778], [1516638780000, 0.02942117, 0.02942164, 0.02942117, 0.02942164, 2.78856172], [1516638840000, 0.02942182, 0.02981287, 0.02942182, 0.02981287, 0.32195186], [1516638900000, 0.02972898, 0.02972898, 0.02942277, 0.02942285, 1.99448582], [1516638960000, 0.02971396, 0.02971396, 0.02971366, 0.02971374, 4.79612086], [1516639020000, 0.0297137, 0.0297137, 0.0297137, 0.0297137, 0.05740073], [1516639140000, 0.0297137, 0.0297137, 0.02942402, 0.02942402, 26.69373992], [1516639260000, 0.02971285, 0.02971285, 0.02971285, 0.02971285, 0.14080716], [1516639320000, 0.02942429, 0.02942429, 0.02942429, 0.02942429, 0.827], [1516639380000, 0.02942429, 0.02942429, 0.02942429, 0.02942429, 0.6], [1516639440000, 0.02942453, 0.02942453, 0.02942453, 0.02942453, 0.34843243], [1516639500000, 0.02942457, 0.02942457, 0.02942456, 0.02942456, 0.48386384], [1516639560000, 0.02971077, 0.02971077, 0.02942434, 0.0297106, 7.38647669], [1516639680000, 0.02942434, 0.02942434, 0.02942434, 0.02942434, 0.4], [1516639740000, 0.0294243, 0.0295, 0.02942417, 0.02942417, 0.7075464], [1516639800000, 0.0295, 0.0295, 0.0295, 0.0295, 0.57956014], [1516639860000, 0.0295, 0.0295, 0.0295, 0.0295, 0.03746944], [1516639920000, 0.0295, 0.0295, 0.0295, 0.0295, 3.26984125], [1516639980000, 0.0295, 0.02968843, 0.0295, 0.02968843, 0.59102594], [1516640040000, 0.02968843, 0.02968844, 0.0295, 0.0295, 6.35185029], [1516640100000, 0.0294967, 0.02961816, 0.02942416, 0.02961816, 9.72687718], [1516640220000, 0.02969003, 0.02969006, 0.02942416, 0.0294243, 13.39560393], [1516640280000, 0.02942436, 0.0296892, 0.0294243, 0.0296892, 1.59897611], [1516640340000, 0.02942433, 0.02942434, 0.02934829, 0.02934829, 24.44864806], [1516640400000, 0.02942432, 0.02942433, 0.02942432, 0.02942433, 3.17119862], [1516640460000, 0.02941415, 0.02941415, 0.029349, 0.029349, 2.99956435], [1516640520000, 0.02941415, 0.02941415, 0.02920763, 0.02920763, 24.73461184], [1516640580000, 0.02934897, 0.02934897, 0.02905699, 0.02910415, 36.329049], [1516640640000, 0.02910415, 0.02910416, 0.02900415, 0.02900415, 87.92521909], [1516640700000, 0.02900415, 0.02900415, 0.02895, 0.02895, 64.12205177], [1516640760000, 0.02890401, 0.02900407, 0.0287, 0.02900397, 28.92993526], [1516640820000, 0.02900397, 0.02900397, 0.0284093, 0.02895, 164.86754177], [1516640880000, 0.02897698, 0.0291305, 0.02879007, 0.02879007, 44.20279065], [1516640940000, 0.029125, 0.02912793, 0.02879, 0.02909959, 9.95848734], [1516641000000, 0.02899798, 0.02909957, 0.02885015, 0.02896901, 14.1695314], [1516641060000, 0.028969, 0.02909933, 0.02895605, 0.02896904, 25.36251642], [1516641120000, 0.02896904, 0.02896904, 0.02886768, 0.02896904, 2.79685936], [1516641180000, 0.02896904, 0.02896904, 0.02896874, 0.02896904, 0.79230265], [1516641240000, 0.02896904, 0.02909591, 0.028861, 0.029, 4.18499115], [1516641300000, 0.029, 0.02908275, 0.0288576, 0.02908258, 9.01650535], [1516641360000, 0.02908253, 0.02908253, 0.02907996, 0.02907996, 1.01005838], [1516641420000, 0.02905299, 0.02905299, 0.02904096, 0.02904096, 27.05021591], [1516641480000, 0.0290378, 0.0290378, 0.0290378, 0.0290378, 0.5], [1516641540000, 0.0290378, 0.02907889, 0.0290378, 0.02907881, 1.05674038], [1516641600000, 0.02907866, 0.02907866, 0.02907866, 0.02907866, 0.27511442], [1516641660000, 0.02907949, 0.02907949, 0.0290784, 0.0290784, 3.29752151], [1516641720000, 0.02880789, 0.02907817, 0.02880789, 0.02907817, 0.52850646], [1516641840000, 0.02881087, 0.02881087, 0.02881087, 0.02881087, 0.3376], [1516641900000, 0.02889959, 0.02906496, 0.02889959, 0.02906496, 1.06524932], [1516641960000, 0.02904409, 0.02907806, 0.02904409, 0.02907806, 0.68970657], [1516642020000, 0.029, 0.029, 0.029, 0.029, 15.54178081], [1516642080000, 0.029, 0.02907674, 0.029, 0.02905, 4.87624704], [1516642140000, 0.02904999, 0.02904999, 0.02904992, 0.02904992, 2.05159291], [1516642200000, 0.02904984, 0.02904984, 0.02904982, 0.02904982, 0.82053991], [1516642260000, 0.02904972, 0.02904972, 0.02904956, 0.02904956, 0.70023426], [1516642320000, 0.02904916, 0.02904916, 0.02904916, 0.02904916, 1.0], [1516642380000, 0.02900876, 0.02900876, 0.02900852, 0.02900852, 5.45353587], [1516642440000, 0.02900825, 0.02900826, 0.02900825, 0.02900826, 2.65402558], [1516642500000, 0.02900783, 0.02900783, 0.02879, 0.0288, 12.30485001], [1516642560000, 0.0288, 0.02880784, 0.02879, 0.02880784, 4.60623987], [1516642620000, 0.02900681, 0.02900681, 0.02900681, 0.02900681, 0.08618582], [1516642680000, 0.0290066, 0.0290066, 0.02879003, 0.02879003, 3.79673886], [1516642740000, 0.02879003, 0.02879499, 0.02879001, 0.02879499, 9.52653644], [1516642800000, 0.0290046, 0.0290046, 0.0290046, 0.0290046, 0.10343151], [1516642860000, 0.02900449, 0.02900449, 0.02900429, 0.02900429, 2.82369301], [1516642920000, 0.02879, 0.02879, 0.02879, 0.02879, 2.99654055], [1516642980000, 0.02900252, 0.02900252, 0.02900221, 0.02900221, 1.4274609], [1516643040000, 0.02900177, 0.02900177, 0.028795, 0.02900162, 5.68338722], [1516643100000, 0.02900113, 0.02900113, 0.02900083, 0.02900083, 1.44821656], [1516643160000, 0.028999, 0.028999, 0.0289715, 0.0289715, 1.23839475], [1516643220000, 0.02897167, 0.02897167, 0.02897139, 0.02897139, 0.58961765], [1516643280000, 0.02897127, 0.02897127, 0.02897098, 0.02897098, 11.61925389], [1516643340000, 0.02897084, 0.02897084, 0.028795, 0.02897027, 40.07840993], [1516643400000, 0.02896991, 0.02896991, 0.02896982, 0.02896982, 1.13254512], [1516643460000, 0.02896451, 0.02896451, 0.02896451, 0.02896451, 0.03828804], [1516643520000, 0.02896451, 0.02896986, 0.02879646, 0.02879646, 10.79508491], [1516643580000, 0.02897062, 0.028999, 0.02879719, 0.028999, 11.86291087], [1516643640000, 0.02903708, 0.02903708, 0.02903706, 0.02903706, 57.16469679], [1516643700000, 0.02903, 0.02903, 0.0287978, 0.0287978, 5.64584312], [1516643760000, 0.02879796, 0.02879797, 0.02879796, 0.02879796, 0.39016023], [1516643820000, 0.02903652, 0.02903652, 0.02903652, 0.02903652, 0.02748262], [1516643880000, 0.02903618, 0.02903618, 0.02903604, 0.02903604, 0.07983407], [1516643940000, 0.0290358, 0.0290358, 0.0290358, 0.0290358, 0.4], [1516644000000, 0.02903545, 0.02903545, 0.02900511, 0.02900511, 1.48959535], [1516644060000, 0.02900509, 0.02900509, 0.02900507, 0.02900507, 1.67901283], [1516644120000, 0.0290047, 0.0290047, 0.0290047, 0.0290047, 0.04918488], [1516644180000, 0.02900407, 0.02900407, 0.02900407, 0.02900407, 0.68687622], [1516644300000, 0.02880001, 0.02900337, 0.0288, 0.02900337, 2.037], [1516644420000, 0.0289826, 0.0289826, 0.0289826, 0.0289826, 0.66996408], [1516644480000, 0.02898229, 0.02898229, 0.02898228, 0.02898228, 4.49602921], [1516644540000, 0.02882301, 0.02894875, 0.02879, 0.02894875, 20.78266258], [1516644600000, 0.02895213, 0.02895213, 0.02895193, 0.02895193, 1.90591962], [1516644660000, 0.02895169, 0.02895169, 0.02885, 0.02895167, 20.4572513], [1516644720000, 0.02885001, 0.02895155, 0.0288469, 0.02895149, 2.56875431], [1516644780000, 0.0288, 0.0288, 0.0287, 0.0287, 17.541669], [1516644840000, 0.02894075, 0.02894075, 0.0286069, 0.02880388, 7.43658167], [1516644900000, 0.02864293, 0.02880377, 0.02863215, 0.02880375, 70.74001592], [1516644960000, 0.02880375, 0.02880375, 0.02880375, 0.02880375, 0.54666189], [1516645020000, 0.02880375, 0.02880375, 0.02880375, 0.02880375, 0.06973831], [1516645080000, 0.0288037, 0.0288037, 0.0288037, 0.0288037, 0.06943547], [1516645140000, 0.02880362, 0.02880364, 0.02880362, 0.02880364, 1.11790515], [1516645200000, 0.02880363, 0.02880363, 0.02860705, 0.02862, 5.5115427], [1516645260000, 0.02862, 0.02862, 0.02860702, 0.02862, 27.86477412], [1516645320000, 0.02862, 0.02862, 0.02860697, 0.02861273, 18.12474804], [1516645380000, 0.02861273, 0.02862, 0.02861273, 0.02861868, 1.32395048], [1516645440000, 0.0286187, 0.0286187, 0.02861868, 0.0286187, 19.73596662], [1516645500000, 0.02861868, 0.02861868, 0.02860688, 0.02860688, 3.81256368], [1516645560000, 0.02860688, 0.02860688, 0.0286, 0.02860688, 23.77754817], [1516645620000, 0.02860688, 0.02860688, 0.0286, 0.0286, 14.67713651], [1516645680000, 0.02860688, 0.02861868, 0.0286, 0.0286, 6.27307826], [1516645740000, 0.02861868, 0.02861868, 0.02861868, 0.02861868, 2.31303481], [1516645800000, 0.02861868, 0.02868269, 0.0286, 0.02868269, 25.79843567], [1516645860000, 0.02868269, 0.02877852, 0.02868269, 0.02877852, 0.61101196], [1516645920000, 0.02872131, 0.02872131, 0.02868269, 0.02868269, 2.54050808], [1516645980000, 0.02877852, 0.02877852, 0.02872687, 0.02872687, 11.28071712], [1516646040000, 0.02877852, 0.02877852, 0.02868367, 0.02877852, 16.04885557], [1516646100000, 0.02877852, 0.0288037, 0.02872275, 0.0288037, 15.35906349], [1516646160000, 0.02880369, 0.02880369, 0.02880369, 0.02880369, 0.0770338], [1516646220000, 0.02880369, 0.02880369, 0.02880369, 0.02880369, 5.43594188], [1516646280000, 0.02880368, 0.02880368, 0.02880368, 0.02880368, 0.45], [1516646340000, 0.02880368, 0.02880368, 0.0288, 0.0288, 8.77967778], [1516646400000, 0.02880367, 0.02880368, 0.02880367, 0.02880368, 0.69435522], [1516646460000, 0.02880364, 0.02880364, 0.02880364, 0.02880364, 2.11084212], [1516646520000, 0.02880357, 0.02880357, 0.02880357, 0.02880357, 0.23274523], [1516646580000, 0.02880347, 0.02880347, 0.02880345, 0.02880345, 0.21199268], [1516646640000, 0.02880343, 0.02880343, 0.02870928, 0.02870928, 2.15412355], [1516646700000, 0.02870928, 0.02870928, 0.02870928, 0.02870928, 1.31670945], [1516646760000, 0.02862412, 0.0288037, 0.02862411, 0.0288037, 8.16501162], [1516646820000, 0.0288037, 0.0288037, 0.0288037, 0.0288037, 23.62305438], [1516646880000, 0.0288037, 0.0288037, 0.02862589, 0.0288037, 0.8789376], [1516646940000, 0.0288037, 0.0288037, 0.0288037, 0.0288037, 0.20709986], [1516647000000, 0.0288037, 0.0288037, 0.0288037, 0.0288037, 2.09784097], [1516647060000, 0.0288037, 0.0288041, 0.0288037, 0.0288037, 32.45408402], [1516647120000, 0.02881017, 0.02881017, 0.0288037, 0.02881017, 6.12214087], [1516647180000, 0.0288037, 0.02881017, 0.0288037, 0.02881, 3.66191861], [1516647240000, 0.02881017, 0.02881017, 0.02881016, 0.02881016, 0.41084993], [1516647300000, 0.02881016, 0.02881016, 0.02881016, 0.02881016, 0.15265211], [1516647360000, 0.028766, 0.02889975, 0.02862411, 0.02889975, 36.41528383], [1516647420000, 0.02889974, 0.02889999, 0.02889971, 0.02889999, 26.41249791], [1516647480000, 0.02889999, 0.0289, 0.02889972, 0.0289, 0.42552145], [1516647540000, 0.02889972, 0.02889975, 0.02881017, 0.02889975, 0.15233018], [1516647600000, 0.02889975, 0.02889975, 0.02889975, 0.02889975, 0.38429237], [1516647660000, 0.02889975, 0.02889975, 0.0288102, 0.0288102, 0.07653604], [1516647720000, 0.02881017, 0.0288102, 0.02869915, 0.02881019, 48.13756476], [1516647780000, 0.02881019, 0.02887733, 0.02881019, 0.02887733, 3.91700645], [1516647840000, 0.02887733, 0.02887733, 0.02869986, 0.02881019, 10.42539452], [1516647900000, 0.02881019, 0.02881019, 0.02869965, 0.02881019, 2.64391425], [1516647960000, 0.02881019, 0.0288102, 0.02881019, 0.0288102, 3.6535759], [1516648020000, 0.0288102, 0.0288102, 0.0288102, 0.0288102, 0.03841533], [1516648080000, 0.0288102, 0.0288102, 0.0288102, 0.0288102, 0.1156306], [1516648140000, 0.0288102, 0.02881021, 0.02869966, 0.02881021, 0.40424174], [1516648200000, 0.02881021, 0.02881021, 0.02881021, 0.02881021, 0.1740184], [1516648260000, 0.02881021, 0.02881021, 0.02881021, 0.02881021, 1.82212891], [1516648320000, 0.02881021, 0.02881021, 0.02874925, 0.02874925, 8.2690846], [1516648380000, 0.02874925, 0.02874925, 0.02874925, 0.02874925, 0.10791216], [1516648440000, 0.02874925, 0.02874925, 0.02874925, 0.02874925, 1.4548217], [1516648500000, 0.02874925, 0.02874925, 0.02869964, 0.02869964, 6.49486337], [1516648620000, 0.02874925, 0.02874925, 0.02874925, 0.02874925, 13.59357864], [1516648680000, 0.02874925, 0.02874925, 0.02874925, 0.02874925, 0.10435055], [1516648740000, 0.02874925, 0.02874925, 0.02867765, 0.02874925, 2.09111], [1516648800000, 0.02874925, 0.02874925, 0.02874925, 0.02874925, 0.05144879], [1516648860000, 0.02874925, 0.02874925, 0.02874925, 0.02874925, 0.83994022], [1516648920000, 0.02874925, 0.02874925, 0.02874925, 0.02874925, 3.03021313], [1516648980000, 0.02874925, 0.02874925, 0.02874925, 0.02874925, 1.29981224], [1516649040000, 0.02862419, 0.02862419, 0.0286187, 0.0286187, 48.20522509], [1516649100000, 0.0286187, 0.02874925, 0.0286187, 0.02874925, 27.6798818], [1516649160000, 0.02874925, 0.02874925, 0.02874925, 0.02874925, 1.41762548], [1516649220000, 0.02874925, 0.02874925, 0.02874925, 0.02874925, 0.14844199], [1516649280000, 0.02874925, 0.02874925, 0.02874925, 0.02874925, 3.34487164], [1516649340000, 0.02874925, 0.02874925, 0.02874925, 0.02874925, 0.04174021], [1516649400000, 0.0286187, 0.02874925, 0.0286187, 0.02874925, 3.6564345], [1516649460000, 0.02874925, 0.02874925, 0.02860013, 0.02874925, 1.27571713], [1516649520000, 0.02874925, 0.02874925, 0.02860119, 0.02874925, 11.14427222], [1516649580000, 0.02881021, 0.02881021, 0.02881021, 0.02881021, 0.19653123], [1516649640000, 0.02881021, 0.02881021, 0.02877972, 0.02877972, 0.12114885], [1516649700000, 0.02877972, 0.02881021, 0.02867972, 0.02877972, 11.12330198], [1516649760000, 0.02881021, 0.0288997, 0.02881021, 0.0288997, 1.49178281], [1516649820000, 0.0288997, 0.0288997, 0.0288997, 0.0288997, 1.0], [1516649880000, 0.0288997, 0.0288997, 0.0288997, 0.0288997, 0.08986291], [1516649940000, 0.02889965, 0.02889965, 0.02889965, 0.02889965, 3.55245768], [1516650000000, 0.02882726, 0.02882726, 0.02877973, 0.02877973, 3.25800951], [1516650060000, 0.02877973, 0.02889926, 0.02877973, 0.02877973, 5.93413926], [1516650120000, 0.02877973, 0.02889669, 0.02877973, 0.02889668, 6.52572952], [1516650180000, 0.02888055, 0.02888055, 0.02888055, 0.02888055, 0.11885049], [1516650240000, 0.02883971, 0.02888056, 0.02883971, 0.02888056, 0.69443754], [1516650300000, 0.02888055, 0.02888055, 0.02888055, 0.02888055, 0.70741986], [1516650360000, 0.02888054, 0.02888055, 0.02888054, 0.02888055, 138.1553115], [1516650420000, 0.02877973, 0.02877973, 0.02877973, 0.02877973, 3.86252003], [1516650480000, 0.0288997, 0.0288997, 0.0288997, 0.0288997, 0.12217224], [1516650660000, 0.02889969, 0.02889969, 0.02877973, 0.02877973, 12.97759679], [1516650720000, 0.02866461, 0.02866461, 0.02866461, 0.02866461, 0.09492746], [1516650780000, 0.02877973, 0.02877973, 0.02877973, 0.02877973, 0.07692448], [1516650840000, 0.02877973, 0.02877973, 0.02877973, 0.02877973, 1.89321614], [1516650900000, 0.028779, 0.028779, 0.02866461, 0.02866471, 7.60439994], [1516650960000, 0.02866471, 0.02866471, 0.02866461, 0.02866471, 5.49302002], [1516651020000, 0.02866471, 0.02866471, 0.02866471, 0.02866471, 10.19112692], [1516651080000, 0.02866461, 0.02866471, 0.02866461, 0.02866471, 4.66379342], [1516651140000, 0.028601, 0.02863255, 0.02857869, 0.02863255, 5.55808644], [1516651200000, 0.02863255, 0.02863255, 0.02863255, 0.02863255, 0.25527172], [1516651260000, 0.0286325, 0.0286325, 0.02857869, 0.02863245, 10.39842018], [1516651320000, 0.02863245, 0.02863245, 0.02857869, 0.02863245, 1.52268852], [1516651380000, 0.02863245, 0.02863245, 0.02863245, 0.02863245, 2.35823296], [1516651440000, 0.02863245, 0.02863245, 0.02863244, 0.02863244, 1.04949702], [1516651500000, 0.02863244, 0.02863244, 0.02863244, 0.02863244, 3.58120904], [1516651560000, 0.02857869, 0.02863244, 0.02857869, 0.02857869, 29.36260409], [1516651620000, 0.02857869, 0.02857869, 0.02850001, 0.02857869, 25.31089703], [1516651680000, 0.02857869, 0.02863245, 0.02857869, 0.02863245, 5.23434302], [1516651740000, 0.02863255, 0.02863255, 0.02863255, 0.02863255, 0.03850542], [1516651800000, 0.02863245, 0.02863255, 0.0285, 0.02861212, 1.18017892], [1516651860000, 0.0285, 0.02861212, 0.0285, 0.02861212, 1.61219037], [1516651920000, 0.02857868, 0.02863255, 0.02857868, 0.02863255, 5.36364169], [1516651980000, 0.02863255, 0.02863255, 0.02863255, 0.02863255, 1.60523274], [1516652040000, 0.02863255, 0.02866471, 0.02863255, 0.02866471, 2.18086625], [1516652100000, 0.02866471, 0.02866471, 0.02866471, 0.02866471, 0.07692444], [1516652160000, 0.02866471, 0.02866471, 0.02866471, 0.02866471, 6.51195852], [1516652220000, 0.02866471, 0.02866471, 0.02866471, 0.02866471, 0.38344412], [1516652280000, 0.02866471, 0.02866471, 0.02866471, 0.02866471, 3.27089912], [1516652340000, 0.02866471, 0.02866471, 0.02866471, 0.02866471, 0.03846222], [1516652400000, 0.02877335, 0.0287797, 0.02877335, 0.0287797, 2.35301035], [1516652460000, 0.0287797, 0.0287797, 0.02877335, 0.02877335, 10.25670808], [1516652520000, 0.0287797, 0.02877973, 0.0287797, 0.02877973, 17.74031485], [1516652580000, 0.02877973, 0.02877973, 0.02866474, 0.02866474, 38.24674767], [1516652640000, 0.02877973, 0.02877973, 0.02877973, 0.02877973, 36.41971185], [1516652700000, 0.02877973, 0.02889975, 0.02869035, 0.02889975, 115.05411468], [1516652760000, 0.02869088, 0.02889975, 0.02869016, 0.02889975, 117.30566523], [1516652820000, 0.0288997, 0.02889975, 0.02869016, 0.0288997, 11.92007568], [1516652880000, 0.02869017, 0.02869017, 0.02862236, 0.02862236, 8.43722348], [1516652940000, 0.0288706, 0.0288706, 0.02887047, 0.02887047, 7.22762367], [1516653000000, 0.028792, 0.028792, 0.028792, 0.028792, 0.09661163], [1516653060000, 0.02887004, 0.02887004, 0.0288698, 0.0288698, 0.90001379], [1516653120000, 0.02862236, 0.02862236, 0.02862236, 0.02862236, 3.05998355], [1516653180000, 0.02862236, 0.02862236, 0.02862234, 0.02862234, 0.55401152], [1516653240000, 0.02862236, 0.02862236, 0.02862234, 0.02862235, 12.30159159], [1516653300000, 0.02880903, 0.02880903, 0.02857868, 0.02879884, 3.89159146], [1516653360000, 0.02858868, 0.02878842, 0.02858868, 0.02878842, 0.08024731], [1516653420000, 0.02878792, 0.02878792, 0.02878792, 0.02878792, 0.02494437], [1516653480000, 0.02869242, 0.02869244, 0.02869242, 0.02869244, 0.07708319], [1516653540000, 0.02878784, 0.02880929, 0.0285944, 0.02859443, 6.10693434], [1516653600000, 0.02861111, 0.02861111, 0.02861111, 0.02861111, 4.18090932], [1516653720000, 0.02860555, 0.02877326, 0.02857872, 0.02877326, 2.99968266], [1516653780000, 0.02877528, 0.02877531, 0.02877528, 0.02877531, 1.15074645], [1516653840000, 0.02857871, 0.0288092, 0.02850002, 0.02857871, 7.92114395], [1516653900000, 0.02857871, 0.02873753, 0.02857871, 0.02857871, 3.27197593], [1516653960000, 0.02873718, 0.02873718, 0.02853999, 0.02873683, 5.8982964], [1516654020000, 0.02853998, 0.02853998, 0.0285, 0.02853998, 3.9596877], [1516654080000, 0.02869988, 0.02873208, 0.02869988, 0.02873208, 1.09111136], [1516654140000, 0.02873205, 0.02873205, 0.02865539, 0.02873203, 4.1995997], [1516654200000, 0.02873206, 0.02873206, 0.02873206, 0.02873206, 0.35972975], [1516654260000, 0.02873199, 0.02873199, 0.02873199, 0.02873199, 1.00400299], [1516654380000, 0.02865539, 0.02865539, 0.02865539, 0.02865539, 0.2343475], [1516654440000, 0.02851007, 0.02869985, 0.02851007, 0.02869985, 6.00572677], [1516654500000, 0.02869986, 0.02873173, 0.02851004, 0.02851004, 1.94512588], [1516654560000, 0.02869985, 0.02869985, 0.02850002, 0.02862, 17.68660514], [1516654620000, 0.02851132, 0.02851132, 0.02850002, 0.02850002, 8.32948042], [1516654680000, 0.02851132, 0.02851132, 0.02850005, 0.02850005, 10.45810751], [1516654740000, 0.02851132, 0.02869966, 0.02850002, 0.02850002, 8.68441625], [1516654860000, 0.02859594, 0.02869883, 0.02850002, 0.0286987, 5.20192877], [1516654920000, 0.0285, 0.02869845, 0.02849059, 0.02866193, 11.40900111], [1516654980000, 0.02866193, 0.02866193, 0.02850389, 0.02850389, 2.6664108], [1516655040000, 0.02869832, 0.02869832, 0.02852389, 0.02852389, 0.65173952], [1516655100000, 0.0286, 0.02869454, 0.0286, 0.02869454, 0.24164881], [1516655160000, 0.02850454, 0.02850454, 0.02850454, 0.02850454, 1.0], [1516655220000, 0.02850476, 0.02850476, 0.02850474, 0.02850474, 1.8], [1516655340000, 0.02869471, 0.02869476, 0.0286947, 0.02869476, 0.46005476], [1516655400000, 0.02869467, 0.02869467, 0.02850495, 0.02869461, 4.20102625], [1516655460000, 0.02869465, 0.02869471, 0.02859982, 0.02859982, 1.93981585], [1516655520000, 0.02859982, 0.02869465, 0.02859982, 0.02869465, 6.99119325], [1516655640000, 0.02850495, 0.02850495, 0.02850495, 0.02850495, 2.28120731], [1516655700000, 0.02869213, 0.02869232, 0.02869213, 0.02869232, 4.00584685], [1516655760000, 0.02869232, 0.02869232, 0.02869232, 0.02869232, 0.52489564], [1516655820000, 0.02869232, 0.02869233, 0.02869215, 0.02869233, 10.12884197], [1516655880000, 0.02851032, 0.02869233, 0.02851032, 0.02869233, 47.21867431], [1516655940000, 0.02851162, 0.02869233, 0.02851162, 0.02869233, 18.39072172], [1516656000000, 0.02869233, 0.0288, 0.02869233, 0.02869465, 31.80852269], [1516656060000, 0.02863712, 0.02863712, 0.02851759, 0.02863712, 8.23104424], [1516656120000, 0.02854754, 0.02863711, 0.0285185, 0.0285819, 16.35349777], [1516656180000, 0.02863712, 0.02863712, 0.02854646, 0.02854646, 7.05971221], [1516656240000, 0.02854646, 0.02857723, 0.02854646, 0.02854646, 5.66752068], [1516656300000, 0.02853235, 0.02853235, 0.02843879, 0.02843879, 39.02019162], [1516656360000, 0.02843879, 0.02853236, 0.02843879, 0.02853236, 1.19266511], [1516656420000, 0.02853236, 0.02854647, 0.02853236, 0.02854647, 0.92193223], [1516656480000, 0.02853236, 0.02863785, 0.02853236, 0.02863785, 0.99977774], [1516656540000, 0.02853236, 0.02853237, 0.02853235, 0.02853237, 5.7003129], [1516656600000, 0.02853237, 0.02853237, 0.02853235, 0.02853235, 4.70249127], [1516656660000, 0.02853237, 0.02853237, 0.02853236, 0.02853237, 1.382076], [1516656720000, 0.02853237, 0.02853237, 0.02853235, 0.02853237, 0.9195793], [1516656780000, 0.02853237, 0.02853237, 0.02853237, 0.02853237, 0.20188084], [1516656840000, 0.02853237, 0.02853237, 0.02853237, 0.02853237, 0.07728124], [1516656900000, 0.02853237, 0.02853237, 0.02853235, 0.02853235, 6.25629046], [1516656960000, 0.02853235, 0.02853235, 0.02853235, 0.02853235, 2.78703349], [1516657020000, 0.0285, 0.02863785, 0.0285, 0.0286, 16.6744481], [1516657080000, 0.0285, 0.0286, 0.0284111, 0.0286, 17.95488584], [1516657140000, 0.0286, 0.02863774, 0.02841022, 0.02841115, 0.38574304], [1516657200000, 0.02863769, 0.02863769, 0.0284998, 0.0284998, 0.27988921], [1516657260000, 0.0284998, 0.02863776, 0.02841101, 0.02841101, 2.09554062], [1516657380000, 0.02841103, 0.02841103, 0.02841103, 0.02841103, 1.30460684], [1516657440000, 0.02841103, 0.02867999, 0.02841103, 0.02867999, 13.88329417], [1516657500000, 0.0285, 0.02867997, 0.0285, 0.02867997, 2.9495214], [1516657560000, 0.0285, 0.0286378, 0.0285, 0.0286378, 0.22037895], [1516657680000, 0.02862796, 0.02862796, 0.02862796, 0.02862796, 0.5035], [1516657800000, 0.02862489, 0.02862489, 0.02841138, 0.02841138, 5.98834242], [1516657860000, 0.02841138, 0.02841138, 0.0284, 0.0284, 49.13306614], [1516657920000, 0.02841138, 0.02841138, 0.02839, 0.02841138, 13.76218115], [1516657980000, 0.02841138, 0.02841138, 0.02841138, 0.02841138, 3.89085117], [1516658040000, 0.02841138, 0.02841138, 0.02839, 0.02839, 18.37750535], [1516658100000, 0.02841138, 0.02841138, 0.02837934, 0.02837934, 1.90995969], [1516658160000, 0.02837934, 0.02861082, 0.02837934, 0.02861082, 5.99174271], [1516658220000, 0.02861082, 0.02862487, 0.02861082, 0.02862487, 2.37029946], [1516658340000, 0.0286249, 0.02880925, 0.02845007, 0.02845007, 57.35745107], [1516658400000, 0.0284504, 0.0284504, 0.0284504, 0.0284504, 0.1], [1516658460000, 0.0284504, 0.0284504, 0.0284504, 0.0284504, 19.1924139], [1516658580000, 0.0287, 0.02880929, 0.0287, 0.02880929, 5.64272843], [1516658640000, 0.02880928, 0.02880929, 0.02880927, 0.02880929, 0.14676296], [1516658700000, 0.02853817, 0.02880928, 0.02853817, 0.02880927, 2.52066549], [1516658760000, 0.02880927, 0.02880929, 0.02880926, 0.02880927, 1.49001081], [1516658820000, 0.02880929, 0.02888864, 0.02880929, 0.02880929, 6.47442364], [1516658880000, 0.02888862, 0.02888862, 0.02880929, 0.02888862, 0.39746204], [1516658940000, 0.02888862, 0.02888862, 0.0288093, 0.0288093, 3.21169054], [1516659000000, 0.02888862, 0.02889975, 0.02880931, 0.02889975, 3.09792808], [1516659060000, 0.02889975, 0.02889975, 0.02880931, 0.02880931, 42.0453179], [1516659120000, 0.02888862, 0.02888862, 0.0288093, 0.02880931, 8.40466153], [1516659180000, 0.02880931, 0.02880931, 0.02880931, 0.02880931, 2.51762814], [1516659240000, 0.02888862, 0.02888862, 0.02888862, 0.02888862, 0.03826897], [1516659300000, 0.02888862, 0.02888862, 0.0288593, 0.0288593, 2.06948446], [1516659360000, 0.0288593, 0.02888862, 0.02880934, 0.02888862, 12.97598726], [1516659420000, 0.02888862, 0.02889975, 0.02880934, 0.02880934, 38.79526401], [1516659480000, 0.0289, 0.02895, 0.0289, 0.02895, 3.24323541], [1516659540000, 0.02895, 0.02898923, 0.0289289, 0.02898923, 2.03039881], [1516659600000, 0.02898923, 0.029, 0.02898923, 0.029, 2.54777646], [1516659660000, 0.029, 0.029, 0.02897294, 0.028973, 8.95643036], [1516659720000, 0.028973, 0.029, 0.02897295, 0.029, 30.03692642], [1516659780000, 0.029, 0.02907806, 0.02897298, 0.02907806, 27.24578984], [1516659840000, 0.02907806, 0.02907806, 0.0290001, 0.0290001, 7.77134983], [1516659900000, 0.0290001, 0.02907806, 0.0290001, 0.02907806, 3.98849233], [1516659960000, 0.0290002, 0.029145, 0.0290002, 0.029145, 14.63120479], [1516660020000, 0.02900038, 0.02929997, 0.02900038, 0.02929997, 8.25422186], [1516660080000, 0.02910718, 0.02910719, 0.02910718, 0.02910719, 1.36171558], [1516660200000, 0.02919719, 0.02919719, 0.02910715, 0.02919719, 3.2869406], [1516660260000, 0.02919719, 0.02929993, 0.0290005, 0.02901622, 53.80927854], [1516660320000, 0.02901625, 0.02929979, 0.02901625, 0.02929966, 1.29508141], [1516660380000, 0.02900055, 0.02900055, 0.02900055, 0.02900055, 1.32975398], [1516660440000, 0.02919993, 0.02929891, 0.02900059, 0.02929891, 8.14347431], [1516660500000, 0.02900074, 0.02929873, 0.0290006, 0.02900106, 48.42828796], [1516660560000, 0.02900129, 0.02900129, 0.02900129, 0.02900129, 0.07262137], [1516660620000, 0.02900129, 0.02900129, 0.02900129, 0.02900129, 9.14801584], [1516660680000, 0.02900129, 0.02900129, 0.02900107, 0.02900129, 12.15129616], [1516660740000, 0.02900107, 0.02900129, 0.0290006, 0.02900129, 10.12495044], [1516660800000, 0.02920583, 0.02920583, 0.0290006, 0.0290006, 83.73546039], [1516660860000, 0.0290006, 0.02910308, 0.0290006, 0.0290006, 23.18105672], [1516660920000, 0.0290006, 0.0291, 0.0290006, 0.0290006, 3.53716239], [1516660980000, 0.0290006, 0.02909999, 0.0290006, 0.02909996, 1.32900035], [1516661040000, 0.0290006, 0.0290006, 0.0290006, 0.0290006, 0.0760329], [1516661100000, 0.02909994, 0.02909994, 0.0290006, 0.0290006, 98.65691571], [1516661160000, 0.0290006, 0.02909992, 0.0290006, 0.0290006, 68.97440851], [1516661220000, 0.02909991, 0.02909991, 0.0290999, 0.02909991, 1.60867036], [1516661280000, 0.0290006, 0.0290006, 0.0290006, 0.0290006, 0.531], [1516661400000, 0.02909991, 0.02918219, 0.02900064, 0.02900064, 2.02766153], [1516661460000, 0.02900064, 0.02909991, 0.0290006, 0.0290006, 44.30219328], [1516661520000, 0.02901832, 0.02901832, 0.0290006, 0.0290006, 0.7177642], [1516661580000, 0.02909991, 0.02909991, 0.02909991, 0.02909991, 0.22293731], [1516661640000, 0.02909991, 0.02909991, 0.02900071, 0.02900071, 4.16721569], [1516661700000, 0.02918142, 0.02918216, 0.0291814, 0.02918216, 0.80673199], [1516661760000, 0.02918216, 0.02918216, 0.02918216, 0.02918216, 0.69696725], [1516661820000, 0.02918216, 0.02918218, 0.02918216, 0.02918218, 1.60875418], [1516661880000, 0.02918218, 0.02918218, 0.0291, 0.02918218, 2.15600363], [1516661940000, 0.02918218, 0.02926457, 0.0291, 0.0291, 0.30808378], [1516662000000, 0.02918216, 0.02928694, 0.02918216, 0.02926446, 0.79616892], [1516662060000, 0.02926446, 0.02928694, 0.02906545, 0.02906545, 10.72748232], [1516662120000, 0.02926417, 0.02926447, 0.02900708, 0.02926391, 78.63565628], [1516662180000, 0.02900829, 0.02900938, 0.02900829, 0.02900937, 6.87376136], [1516662240000, 0.02926285, 0.02926285, 0.0290006, 0.0290006, 15.25356424], [1516662300000, 0.02900061, 0.02928694, 0.02900061, 0.02926221, 31.5064646], [1516662360000, 0.02926222, 0.02934587, 0.02926222, 0.02934587, 2.81965725], [1516662420000, 0.02934587, 0.02935542, 0.02934587, 0.02935542, 1.36742695], [1516662480000, 0.02935542, 0.02939, 0.02905984, 0.0291597, 3.8635359], [1516662540000, 0.02937675, 0.02939, 0.02916021, 0.02916021, 1.52809167], [1516662600000, 0.02939, 0.0294, 0.02916093, 0.02939, 2.53897981], [1516662660000, 0.02939998, 0.02939998, 0.02916121, 0.0291614, 2.97371259], [1516662720000, 0.0291614, 0.02939998, 0.0291614, 0.02916159, 8.34210668], [1516662780000, 0.02916163, 0.02931699, 0.02916163, 0.02931699, 1.73725325], [1516662840000, 0.02931699, 0.02931699, 0.02931699, 0.02931699, 0.54386791], [1516662900000, 0.02939494, 0.02940216, 0.02931699, 0.02939494, 10.53434335], [1516662960000, 0.02931699, 0.02940209, 0.02916107, 0.02940209, 5.17565464], [1516663020000, 0.02940205, 0.02940205, 0.02940205, 0.02940205, 0.2078545], [1516663080000, 0.02940099, 0.02940099, 0.0292, 0.0292, 7.27136381], [1516663140000, 0.0292, 0.02939028, 0.0292, 0.02939028, 1.17090095], [1516663200000, 0.0292, 0.02938833, 0.0292, 0.0292, 12.60831573], [1516663260000, 0.0292, 0.02938802, 0.02916064, 0.02916064, 9.78322052], [1516663320000, 0.0292, 0.0292, 0.0292, 0.0292, 0.57426288], [1516663380000, 0.02938726, 0.02938726, 0.02938726, 0.02938726, 0.1436009], [1516663500000, 0.02931679, 0.0293168, 0.02921, 0.02931672, 5.33647814], [1516663560000, 0.02931665, 0.02931665, 0.02921, 0.02921, 3.48604581], [1516663620000, 0.0292, 0.02931655, 0.02904419, 0.02931643, 8.6913986], [1516663680000, 0.02927633, 0.02927633, 0.02927633, 0.02927633, 3.1304482], [1516663740000, 0.02927629, 0.02927629, 0.02927629, 0.02927629, 0.04821327], [1516663800000, 0.02924625, 0.02924625, 0.02924625, 0.02924625, 0.34180672], [1516663860000, 0.02904023, 0.02918618, 0.0290006, 0.0290006, 21.1355562], [1516663920000, 0.0290006, 0.02918175, 0.0290006, 0.0290006, 9.44984862], [1516663980000, 0.02900063, 0.02900063, 0.02900063, 0.02900063, 1.35888693], [1516664040000, 0.02918157, 0.02918157, 0.02918157, 0.02918157, 0.11708827], [1516664100000, 0.02918157, 0.02918161, 0.02901653, 0.02918156, 7.76214266], [1516664160000, 0.02900062, 0.02918158, 0.0290006, 0.02918156, 26.17109768], [1516664280000, 0.02918154, 0.02918155, 0.02918154, 0.02918155, 2.31216941], [1516664340000, 0.02918155, 0.02918155, 0.0291742, 0.0291742, 0.36049018], [1516664400000, 0.02900071, 0.02918155, 0.02900071, 0.02918154, 6.63150734], [1516664460000, 0.0291, 0.0291, 0.0291, 0.0291, 0.0378866], [1516664520000, 0.0291, 0.02918151, 0.0290006, 0.0290006, 5.18500444], [1516664580000, 0.02900066, 0.02900066, 0.02900066, 0.02900066, 0.16067237], [1516664640000, 0.02900061, 0.02918155, 0.02900061, 0.02909105, 19.44439967], [1516664700000, 0.02918154, 0.02918155, 0.0290006, 0.02918154, 16.33022881], [1516664760000, 0.0290006, 0.02918154, 0.0290006, 0.02918154, 3.87092552], [1516664820000, 0.02917614, 0.02917614, 0.02917614, 0.02917614, 0.25017637], [1516664880000, 0.02900066, 0.02917613, 0.02900066, 0.02917613, 13.79419633], [1516664940000, 0.02917613, 0.02918155, 0.0290006, 0.0290006, 130.9214242], [1516665000000, 0.02910451, 0.02919613, 0.0290006, 0.02919608, 10.09378332], [1516665060000, 0.0290006, 0.0290006, 0.0290006, 0.0290006, 1.03318436], [1516665120000, 0.0290006, 0.0290006, 0.0290006, 0.0290006, 4.06000222], [1516665180000, 0.02919602, 0.02919602, 0.02919601, 0.02919601, 0.8189697], [1516665240000, 0.02900061, 0.02900062, 0.02900061, 0.02900062, 0.62362134], [1516665300000, 0.0291201, 0.029196, 0.0291201, 0.0291201, 8.30183555], [1516665360000, 0.02900063, 0.02922619, 0.02900063, 0.02922619, 30.11528206], [1516665420000, 0.02921617, 0.0292562, 0.02916737, 0.02916737, 1.50920364], [1516665480000, 0.0291201, 0.0291201, 0.02900111, 0.02900111, 0.8085113], [1516665540000, 0.02916737, 0.02922617, 0.02916384, 0.02922605, 22.87058243], [1516665600000, 0.02922, 0.02922604, 0.02912607, 0.02922604, 7.23673663], [1516665660000, 0.02922604, 0.02922604, 0.02900721, 0.02900721, 29.25829335], [1516665720000, 0.02922604, 0.02922604, 0.02922604, 0.02922604, 88.95917768], [1516665780000, 0.0290006, 0.02922604, 0.0290006, 0.02922604, 4.75183006], [1516665840000, 0.029018, 0.029226, 0.02900145, 0.029226, 1.12285095], [1516665900000, 0.02922599, 0.02922599, 0.02922588, 0.02922588, 23.85318559], [1516665960000, 0.02922587, 0.02922588, 0.02922587, 0.02922588, 3.32666482], [1516666020000, 0.02922599, 0.02922599, 0.02900163, 0.02922598, 0.27823185], [1516666080000, 0.02922597, 0.02922597, 0.02922595, 0.02922595, 0.25205509], [1516666140000, 0.0292, 0.0292, 0.02900189, 0.02900189, 1.89339178], [1516666200000, 0.02922554, 0.02922555, 0.0290016, 0.02922553, 2.31083236], [1516666320000, 0.02922525, 0.02922525, 0.02900151, 0.02900151, 5.44819755], [1516666380000, 0.02914652, 0.02922495, 0.02914652, 0.02922494, 0.27668141], [1516666440000, 0.02922459, 0.02922459, 0.02922459, 0.02922459, 7.37789171], [1516666500000, 0.02900151, 0.02922448, 0.02900147, 0.02922439, 5.38252766], [1516666560000, 0.02900163, 0.02900163, 0.0290006, 0.0290006, 11.00324101], [1516666680000, 0.02922379, 0.02922379, 0.02922365, 0.02922365, 0.30491864], [1516666740000, 0.02922364, 0.02922364, 0.02900061, 0.02900061, 5.25420343], [1516666800000, 0.02900061, 0.0292234, 0.02900061, 0.02900063, 7.32913049], [1516666860000, 0.02901144, 0.02922323, 0.02901144, 0.02922323, 0.72726863], [1516666980000, 0.02922293, 0.02922293, 0.02906506, 0.02906506, 11.52169707], [1516667040000, 0.02906506, 0.02922215, 0.02906506, 0.02915753, 6.79212386], [1516667100000, 0.02915753, 0.02915753, 0.02906506, 0.02906506, 3.75412616], [1516667160000, 0.02906506, 0.02906506, 0.02900011, 0.02906506, 1.03622937], [1516667220000, 0.02906506, 0.02906506, 0.029, 0.02906506, 4.69655081], [1516667280000, 0.02915753, 0.02915753, 0.02907006, 0.02915753, 0.72123827], [1516667340000, 0.02906506, 0.02906506, 0.02906506, 0.02906506, 6.63465547], [1516667400000, 0.02906506, 0.02915753, 0.02906506, 0.02915753, 13.04981512], [1516667460000, 0.02915753, 0.02915753, 0.02915753, 0.02915753, 0.23215692], [1516667520000, 0.02915752, 0.02915752, 0.02915752, 0.02915752, 0.5049112], [1516667580000, 0.02915752, 0.02915752, 0.02915752, 0.02915752, 0.17105358], [1516667640000, 0.02915752, 0.02915752, 0.02906506, 0.02906506, 1.44697533], [1516667700000, 0.02906506, 0.02906506, 0.02900011, 0.02906506, 14.94678415], [1516667760000, 0.02906506, 0.02906506, 0.029, 0.029, 1.6216489], [1516667820000, 0.02906506, 0.02906506, 0.029, 0.029, 2.29480582], [1516667880000, 0.02905, 0.02905, 0.02905, 0.02905, 4.61631658], [1516667940000, 0.02905, 0.02905, 0.02905, 0.02905, 4.13229665], [1516668000000, 0.02906506, 0.02920326, 0.029, 0.02920326, 2.00070876], [1516668060000, 0.02920315, 0.02920315, 0.02920315, 0.02920315, 0.30508723], [1516668120000, 0.02920305, 0.02920305, 0.029, 0.029, 1.27292614], [1516668180000, 0.02920314, 0.02922288, 0.02920314, 0.02922268, 1.88660801], [1516668240000, 0.029, 0.02922247, 0.02899451, 0.02922247, 10.5], [1516668360000, 0.02899451, 0.0292221, 0.02888403, 0.0292221, 18.22992336], [1516668420000, 0.02922194, 0.02922194, 0.02888425, 0.02922143, 1.25596615], [1516668480000, 0.02888509, 0.0292, 0.02888509, 0.0292, 2.6860262], [1516668540000, 0.02889913, 0.02889929, 0.02889913, 0.02889929, 1.91043376], [1516668600000, 0.02889939, 0.02917654, 0.02889939, 0.02917654, 0.40472787], [1516668660000, 0.02917646, 0.02922605, 0.02917646, 0.02922605, 9.39529223], [1516668720000, 0.02922604, 0.02922607, 0.02922604, 0.02922607, 0.46614084], [1516668780000, 0.02903849, 0.02922597, 0.02890675, 0.02890675, 2.90530006], [1516668840000, 0.0290385, 0.0290385, 0.0290385, 0.0290385, 0.03813974], [1516668900000, 0.0290385, 0.02921494, 0.0290385, 0.0290385, 5.72022123], [1516668960000, 0.0290385, 0.02921427, 0.0290385, 0.0292141, 0.74473089], [1516669080000, 0.02891295, 0.02921353, 0.02891294, 0.02921353, 0.34982486], [1516669200000, 0.02891318, 0.02916896, 0.02891318, 0.02915999, 3.28286891], [1516669260000, 0.0291569, 0.0291569, 0.02914491, 0.02914491, 6.0532255], [1516669320000, 0.02913883, 0.02913883, 0.02913883, 0.02913883, 0.57134955], [1516669380000, 0.02913882, 0.02913882, 0.02913863, 0.02913869, 12.93302425], [1516669440000, 0.02891327, 0.02911999, 0.02891323, 0.02911999, 2.57112721], [1516669500000, 0.02911998, 0.02911998, 0.02911998, 0.02911998, 0.15124729], [1516669560000, 0.02911997, 0.02911997, 0.02911997, 0.02911997, 0.78147691], [1516669620000, 0.0289133, 0.02913232, 0.0289133, 0.02913232, 0.81021597], [1516669680000, 0.02891329, 0.02891344, 0.02891329, 0.02891344, 0.291], [1516669740000, 0.0289135, 0.02891352, 0.0289135, 0.02891352, 0.91], [1516669800000, 0.02910664, 0.02910987, 0.02908192, 0.02908192, 10.42779832], [1516669860000, 0.02913224, 0.02913759, 0.0291322, 0.02913754, 2.56028231], [1516669920000, 0.02913751, 0.02913751, 0.0291375, 0.02913751, 1.03055924], [1516669980000, 0.02913752, 0.02913869, 0.02913752, 0.02913869, 1.48501399], [1516670040000, 0.02921345, 0.02921345, 0.02921332, 0.02921332, 1.12396138], [1516670100000, 0.02921323, 0.02921323, 0.02921319, 0.02921319, 2.3016495], [1516670160000, 0.0289151, 0.0292126, 0.0289151, 0.0292126, 12.26993509], [1516670220000, 0.02891609, 0.02921237, 0.02891609, 0.02921236, 1.69613837], [1516670280000, 0.02921236, 0.02921238, 0.02910002, 0.02910002, 1.44332285], [1516670400000, 0.02914999, 0.02915, 0.02914999, 0.02915, 0.41534369], [1516670460000, 0.02914999, 0.02921187, 0.02914999, 0.02921187, 7.19060203], [1516670520000, 0.02891728, 0.02921178, 0.02891728, 0.02921178, 2.77899107], [1516670580000, 0.02919999, 0.02919999, 0.02919999, 0.02919999, 0.02394759], [1516670640000, 0.02919997, 0.02919997, 0.02919997, 0.02919997, 0.0497266], [1516670760000, 0.02919967, 0.02919968, 0.02919967, 0.02919968, 1.00425742], [1516670880000, 0.02919965, 0.02919966, 0.02919965, 0.02919966, 2.76812869], [1516671060000, 0.02892478, 0.02892478, 0.02890077, 0.02890077, 100.0], [1516671180000, 0.02919955, 0.02919955, 0.02919948, 0.02919948, 0.24436856], [1516671360000, 0.0289037, 0.02919962, 0.02890369, 0.02890392, 3.82812641], [1516671420000, 0.02919954, 0.02919954, 0.02890457, 0.02890457, 0.28388794], [1516671480000, 0.02919928, 0.02919929, 0.02919928, 0.02919929, 0.28279447], [1516671600000, 0.0291982, 0.0291982, 0.0291982, 0.0291982, 0.05536404], [1516671660000, 0.02916773, 0.02916773, 0.02916772, 0.02916772, 0.38819136], [1516671720000, 0.02916743, 0.02916743, 0.02916743, 0.02916743, 0.06072149], [1516671780000, 0.02916742, 0.02916742, 0.02900001, 0.02900001, 0.36515499], [1516671840000, 0.02900001, 0.02900001, 0.02900001, 0.02900001, 1.14643958], [1516671900000, 0.02900001, 0.02900001, 0.02900001, 0.02900001, 0.3828451], [1516671960000, 0.02900001, 0.02912136, 0.02900001, 0.02912136, 0.34808584], [1516672020000, 0.02912136, 0.02912137, 0.02912136, 0.02912137, 4.63182055], [1516672080000, 0.02916767, 0.0292, 0.029, 0.02912137, 5.7928739], [1516672200000, 0.02912137, 0.02912137, 0.02912137, 0.02912137, 0.06755023], [1516672260000, 0.029, 0.02912137, 0.029, 0.02912137, 0.75868729], [1516672320000, 0.02912137, 0.02912137, 0.02912137, 0.02912137, 10.7853038], [1516672380000, 0.02912137, 0.02912137, 0.029, 0.02912137, 0.51436598], [1516672440000, 0.02912137, 0.02912137, 0.02906068, 0.02912137, 0.70510693], [1516672500000, 0.029, 0.029, 0.029, 0.029, 0.42944244], [1516672560000, 0.029, 0.02912137, 0.029, 0.02912137, 1.29960706], [1516672620000, 0.029, 0.029, 0.029, 0.029, 1.21615925], [1516672680000, 0.02912137, 0.02912137, 0.02912137, 0.02912137, 0.7020135], [1516672800000, 0.02912137, 0.02912137, 0.029, 0.029, 15.07333489], [1516672860000, 0.02912134, 0.02912134, 0.02912134, 0.02912134, 0.0588132], [1516673100000, 0.02900001, 0.02912137, 0.02900001, 0.02912137, 1.7870001], [1516673160000, 0.02900001, 0.02900001, 0.02900001, 0.02900001, 0.1778478], [1516673220000, 0.02900001, 0.02900001, 0.02900001, 0.02900001, 0.98522167], [1516673280000, 0.02900001, 0.02900001, 0.029, 0.029, 6.92849345], [1516673400000, 0.02912137, 0.02912137, 0.02912136, 0.02912136, 0.460287], [1516673520000, 0.02900001, 0.02912136, 0.02900001, 0.02912136, 0.9371987], [1516673580000, 0.02912136, 0.02912136, 0.02912136, 0.02912136, 1.00400299], [1516673640000, 0.02912, 0.02912, 0.02911, 0.02911, 5.25980568], [1516673700000, 0.02912136, 0.02912136, 0.02912136, 0.02912136, 0.38166323], [1516673760000, 0.02900003, 0.02900003, 0.02900002, 0.02900002, 1.24622269], [1516673880000, 0.02912136, 0.02912136, 0.02900001, 0.02900002, 2.77581966], [1516673940000, 0.02900001, 0.02912136, 0.029, 0.02912135, 3.61745337], [1516674000000, 0.029, 0.02912133, 0.029, 0.029, 7.41745647], [1516674060000, 0.02903107, 0.02903107, 0.02903107, 0.02903107, 0.15573104], [1516674120000, 0.02903107, 0.02903107, 0.02903107, 0.02903107, 0.05970676], [1516674180000, 0.02903107, 0.02903107, 0.02903107, 0.02903107, 0.13418905], [1516674240000, 0.02903107, 0.02903107, 0.02903107, 0.02903107, 0.07566569], [1516674300000, 0.02903107, 0.02911241, 0.02903107, 0.02911241, 0.34445818], [1516674360000, 0.0291213, 0.0291213, 0.0291213, 0.0291213, 0.74689082], [1516674420000, 0.02912027, 0.0291213, 0.02890077, 0.02890077, 33.25042729], [1516674480000, 0.0289008, 0.02911968, 0.02890077, 0.02911963, 5.60975171], [1516674540000, 0.02911955, 0.0291196, 0.02890077, 0.02890081, 21.84812922], [1516674600000, 0.0289008, 0.02890081, 0.0289008, 0.02890081, 1.34869071], [1516674660000, 0.02890081, 0.02890081, 0.02890079, 0.02890081, 2.96809511], [1516674720000, 0.02890079, 0.02890081, 0.02890079, 0.02890081, 1.20898188], [1516674780000, 0.02890081, 0.02890081, 0.02890081, 0.02890081, 0.03814801], [1516674840000, 0.02890081, 0.02890081, 0.02890081, 0.02890081, 0.07629602], [1516674900000, 0.02890081, 0.02890081, 0.02890081, 0.02890081, 0.4223072], [1516674960000, 0.02890081, 0.02890081, 0.0289008, 0.02890081, 3.54848005], [1516675020000, 0.02890081, 0.02890081, 0.02890081, 0.02890081, 3.90912494], [1516675080000, 0.02890081, 0.02890081, 0.02890081, 0.02890081, 0.1804101], [1516675140000, 0.02890081, 0.02890081, 0.02890077, 0.02890081, 1.08333987], [1516675200000, 0.02890081, 0.02890081, 0.02890081, 0.02890081, 1.23088563], [1516675260000, 0.0289008, 0.0289008, 0.0289008, 0.0289008, 1.00143054], [1516675320000, 0.0289008, 0.0289008, 0.02890077, 0.0289008, 7.4807669], [1516675380000, 0.0289008, 0.0289008, 0.0289008, 0.0289008, 0.53656372], [1516675440000, 0.0289008, 0.0289008, 0.02890077, 0.0289008, 11.993736], [1516675500000, 0.0289008, 0.02890081, 0.0289008, 0.02890081, 3.49801234], [1516675560000, 0.02890081, 0.02890081, 0.02890081, 0.02890081, 0.07629602], [1516675620000, 0.02890081, 0.02890081, 0.02890081, 0.02890081, 0.15415844], [1516675680000, 0.02890081, 0.029121, 0.02890081, 0.02912095, 3.00612025], [1516675740000, 0.02890379, 0.02890379, 0.02890087, 0.02890087, 0.98305523], [1516675800000, 0.02890087, 0.02912136, 0.02890087, 0.02890141, 4.2786703], [1516675860000, 0.02912049, 0.02912136, 0.02912049, 0.02912136, 11.90793498], [1516675920000, 0.02912136, 0.02912136, 0.02912136, 0.02912136, 1.71564604], [1516675980000, 0.02912133, 0.02912133, 0.02912133, 0.02912133, 3.80992077], [1516676100000, 0.02890275, 0.02890275, 0.02890084, 0.02890084, 2.44436499], [1516676160000, 0.02890085, 0.02912046, 0.02890077, 0.02890077, 8.71965806], [1516676340000, 0.02911851, 0.02911851, 0.02890087, 0.02890087, 1.69682944], [1516676400000, 0.02911748, 0.02911752, 0.02911746, 0.02911746, 6.68687214], [1516676520000, 0.02911737, 0.02920385, 0.029, 0.029, 68.69477954], [1516676580000, 0.02890151, 0.02890151, 0.02890087, 0.02890087, 41.08046908], [1516676640000, 0.02890144, 0.02890144, 0.02890144, 0.02890144, 0.07629574], [1516676700000, 0.02890144, 0.02890144, 0.02890144, 0.02890144, 0.76840088], [1516676760000, 0.02890144, 0.02890144, 0.02890143, 0.02890144, 37.23205071], [1516676820000, 0.02890144, 0.02890144, 0.02890081, 0.02890144, 2.39943493], [1516676880000, 0.02890144, 0.02890144, 0.02890144, 0.02890144, 0.03814718], [1516676940000, 0.0289008, 0.0289008, 0.02890077, 0.02890077, 41.556995], [1516677000000, 0.02890077, 0.02890144, 0.02890077, 0.02890077, 7.16174496], [1516677060000, 0.02890077, 0.02890077, 0.02890077, 0.02890077, 0.14369119], [1516677120000, 0.02890077, 0.02890077, 0.02890077, 0.02890077, 0.21787869], [1516677240000, 0.02890077, 0.02890077, 0.02890077, 0.02890077, 0.46253469], [1516677300000, 0.02890109, 0.02910841, 0.02890109, 0.02910074, 1.72528673], [1516677360000, 0.02890077, 0.02909984, 0.02890077, 0.02909984, 0.09976743], [1516677480000, 0.02890077, 0.02890077, 0.02890077, 0.02890077, 2.89338247], [1516677540000, 0.02890077, 0.029, 0.02888425, 0.02888425, 35.23325418], [1516677600000, 0.02890076, 0.02907956, 0.02890076, 0.02907956, 80.3193456], [1516677660000, 0.02907955, 0.02910862, 0.029, 0.029, 51.31548205], [1516677720000, 0.02892807, 0.02892807, 0.02892807, 0.02892807, 0.03802534], [1516677780000, 0.02892808, 0.02907352, 0.02885082, 0.02907344, 74.03959069], [1516677900000, 0.029, 0.029, 0.02885082, 0.029, 1.72912575], [1516677960000, 0.029, 0.029, 0.02885082, 0.02885082, 5.31837483], [1516678020000, 0.029, 0.029, 0.029, 0.029, 0.71541666], [1516678080000, 0.029, 0.029, 0.02885083, 0.02896406, 0.93660201], [1516678140000, 0.02896406, 0.02900001, 0.02885082, 0.02900001, 35.55353878], [1516678200000, 0.02885082, 0.02916699, 0.02885082, 0.02885082, 2.28609135], [1516678260000, 0.02916395, 0.02916399, 0.02880935, 0.02885142, 198.05958071], [1516678380000, 0.02914992, 0.02914992, 0.02914989, 0.02914992, 9.0911706], [1516678440000, 0.02914966, 0.02916594, 0.02914963, 0.02916563, 16.26834904], [1516678500000, 0.02916554, 0.02916575, 0.02902201, 0.02916559, 1.54732384], [1516678560000, 0.02916559, 0.02916559, 0.02916559, 0.02916559, 1.74608815], [1516678620000, 0.02914961, 0.02914969, 0.0288814, 0.02914969, 15.56294725], [1516678740000, 0.02916557, 0.02916557, 0.02916557, 0.02916557, 0.93051166], [1516678800000, 0.02916546, 0.02916546, 0.02916546, 0.02916546, 1.02861255], [1516678860000, 0.02916524, 0.02916524, 0.02916524, 0.02916524, 0.28779508], [1516678920000, 0.02916513, 0.02916575, 0.02916513, 0.02916558, 10.35025486], [1516678980000, 0.02889839, 0.02922571, 0.02889839, 0.02922566, 50.35115266], [1516679100000, 0.02922545, 0.02922545, 0.0289046, 0.02922543, 16.90877198], [1516679160000, 0.02922543, 0.02922543, 0.02890638, 0.02890638, 1.09593254], [1516679220000, 0.02891005, 0.02922541, 0.02891005, 0.02904236, 15.02939163], [1516679280000, 0.0292249, 0.0292249, 0.0292249, 0.0292249, 0.9], [1516679340000, 0.02922457, 0.02922457, 0.02922438, 0.02922438, 9.48757872], [1516679400000, 0.02922387, 0.02922387, 0.02922378, 0.02922378, 21.72084917], [1516679460000, 0.02922337, 0.02922337, 0.02922288, 0.02922288, 15.54375933], [1516679520000, 0.02922286, 0.02922286, 0.02922286, 0.02922286, 0.57946599], [1516679580000, 0.02922225, 0.02922225, 0.02922206, 0.02922206, 1.85], [1516679640000, 0.02922154, 0.02922172, 0.02922154, 0.02922171, 2.82766719], [1516679700000, 0.0292215, 0.02922607, 0.0292215, 0.02922607, 10.62468139], [1516679760000, 0.0292215, 0.02929495, 0.0292215, 0.02925, 64.90314879], [1516679820000, 0.02924997, 0.02924998, 0.02924997, 0.02924998, 15.73306104], [1516679880000, 0.02914074, 0.02914074, 0.02914074, 0.02914074, 3.38739806], [1516679940000, 0.02924998, 0.02924998, 0.02914074, 0.02914074, 6.94861985], [1516680000000, 0.02914074, 0.02914074, 0.0291407, 0.0291407, 4.3141467], [1516680060000, 0.0291407, 0.0291407, 0.0291407, 0.0291407, 0.49239758], [1516680120000, 0.0291407, 0.02914074, 0.02910001, 0.02910001, 2.43555226], [1516680180000, 0.02914074, 0.02914646, 0.02910001, 0.02910001, 4.71130656], [1516680240000, 0.02910001, 0.02910001, 0.0291, 0.02910001, 11.02052878], [1516680300000, 0.02910001, 0.02910001, 0.02910001, 0.02910001, 0.07577374], [1516680360000, 0.0291, 0.02910001, 0.0291, 0.02910001, 7.55641306], [1516680420000, 0.0291, 0.0291, 0.0291, 0.0291, 0.0378866], [1516680480000, 0.02910001, 0.02910001, 0.0291, 0.02910001, 12.70282891], [1516680540000, 0.02910001, 0.02910001, 0.0291, 0.0291, 1.12177461], [1516680600000, 0.02910001, 0.02910001, 0.0291, 0.02910001, 0.11366034], [1516680660000, 0.02910001, 0.02910001, 0.02904243, 0.02904243, 1.58326494], [1516680720000, 0.02904243, 0.02910001, 0.02904236, 0.02910001, 1.02521283], [1516680780000, 0.02910001, 0.02910001, 0.02910001, 0.02910001, 3.4654521], [1516680840000, 0.02904237, 0.02910002, 0.0289212, 0.02910001, 15.83686852], [1516680900000, 0.02910001, 0.02910001, 0.02910001, 0.02910001, 0.07577316], [1516680960000, 0.02910001, 0.02910001, 0.02910001, 0.02910001, 3.67577316], [1516681020000, 0.02910001, 0.02910001, 0.02910001, 0.02910001, 0.03788658], [1516681080000, 0.02914645, 0.02914646, 0.02912645, 0.02914646, 1.945], [1516681140000, 0.02914646, 0.02924297, 0.02914646, 0.02914646, 1.22558949], [1516681200000, 0.02914646, 0.02914646, 0.02914646, 0.02914646, 0.11236242], [1516681260000, 0.02914647, 0.02914647, 0.02914646, 0.02914646, 0.0756524], [1516681320000, 0.02914646, 0.02914646, 0.02914645, 0.02914645, 0.07565243], [1516681380000, 0.02914645, 0.02914645, 0.02914645, 0.02914645, 0.07565244], [1516681440000, 0.02924039, 0.02924039, 0.02914645, 0.02914645, 0.14365696], [1516681500000, 0.02914645, 0.02923945, 0.02910001, 0.02923933, 2.07677816], [1516681620000, 0.02923804, 0.02923804, 0.02923796, 0.02923796, 0.32968162], [1516681680000, 0.02910002, 0.02910002, 0.029, 0.029, 2.91532663], [1516681740000, 0.02923624, 0.02923624, 0.029, 0.02923579, 1.81379646], [1516681800000, 0.02923511, 0.02923511, 0.02923395, 0.02923395, 0.76555824], [1516681860000, 0.02923366, 0.02923366, 0.02923199, 0.02923199, 10.23433252], [1516681920000, 0.029, 0.029, 0.0289, 0.0289, 19.13486785], [1516681980000, 0.0289, 0.02890019, 0.0289, 0.02890019, 18.40879155], [1516682040000, 0.02919999, 0.0292, 0.02890053, 0.02890072, 0.83471172], [1516682100000, 0.02919983, 0.02922137, 0.02890116, 0.02890119, 0.80113171], [1516682340000, 0.02921445, 0.02921445, 0.02921445, 0.02921445, 0.02641763], [1516682400000, 0.029204, 0.029204, 0.029204, 0.029204, 2.06279181], [1516682460000, 0.02920348, 0.02920348, 0.02920348, 0.02920348, 1.89690666], [1516682520000, 0.02902415, 0.02920147, 0.02902415, 0.02920147, 3.53862711], [1516682580000, 0.02920093, 0.02920096, 0.02920093, 0.02920096, 3.41564113], [1516682640000, 0.02920065, 0.02920065, 0.02920065, 0.02920065, 0.0716742], [1516682700000, 0.02920034, 0.02920034, 0.02920027, 0.02920027, 0.78740387], [1516682760000, 0.02920022, 0.02920022, 0.02920021, 0.02920021, 5.43562461], [1516682880000, 0.02919944, 0.02919944, 0.02919944, 0.02919944, 0.34076858], [1516682940000, 0.02919921, 0.02919921, 0.02919921, 0.02919921, 2.0], [1516683000000, 0.02919907, 0.02919907, 0.02919907, 0.02919907, 0.05878349], [1516683060000, 0.02890877, 0.02919835, 0.02890877, 0.02919835, 4.04788658], [1516683120000, 0.02919828, 0.02919828, 0.02919811, 0.02919811, 0.09428841], [1516683180000, 0.0289089, 0.0289089, 0.0289089, 0.0289089, 0.2], [1516683240000, 0.02919666, 0.02919666, 0.02919666, 0.02919666, 0.35024416], [1516683300000, 0.02919642, 0.02919642, 0.02919642, 0.02919642, 0.23270693], [1516683360000, 0.02919569, 0.02919569, 0.02919569, 0.02919569, 0.30225906], [1516683420000, 0.02919536, 0.02919536, 0.02890898, 0.02890898, 2.18795631], [1516683480000, 0.02914996, 0.02914996, 0.02914996, 0.02914996, 0.50000017], [1516683600000, 0.028909, 0.02912752, 0.02890899, 0.02912752, 48.31737809], [1516683660000, 0.02912752, 0.02912752, 0.02890899, 0.02890899, 1.07130868], [1516683720000, 0.02890899, 0.02910192, 0.02890899, 0.02910192, 0.28403322], [1516683780000, 0.02890899, 0.02890899, 0.02890897, 0.02890899, 1.83697658], [1516683840000, 0.02900447, 0.02912546, 0.02900447, 0.02912546, 0.1774991], [1516683900000, 0.02912546, 0.02918419, 0.02912546, 0.02918419, 0.34334174], [1516683960000, 0.02918398, 0.02918398, 0.02918362, 0.02918362, 0.83212513], [1516684020000, 0.02918358, 0.02918358, 0.02918358, 0.02918358, 0.33237426], [1516684080000, 0.02918354, 0.02918354, 0.02918354, 0.02918354, 1.50427723], [1516684200000, 0.02918287, 0.02918287, 0.02890146, 0.02918279, 28.33419249], [1516684260000, 0.02890147, 0.02918087, 0.02890035, 0.02890035, 13.98537968], [1516684380000, 0.02917935, 0.02917935, 0.02890039, 0.02890039, 0.36421853], [1516684500000, 0.02916665, 0.02916665, 0.02916637, 0.02916637, 1.13310364], [1516684560000, 0.02916617, 0.02916617, 0.02890035, 0.02890035, 1.03630459], [1516684620000, 0.02890037, 0.02916506, 0.02890035, 0.02890039, 28.67636152], [1516684680000, 0.02890039, 0.0291649, 0.0289, 0.0289, 9.63648974], [1516684800000, 0.02916365, 0.02916365, 0.0289, 0.02916255, 3.48134237], [1516684860000, 0.0289, 0.02915081, 0.0289, 0.02915081, 0.51392163], [1516684920000, 0.02891, 0.02891, 0.02891, 0.02891, 1.427477], [1516684980000, 0.02891, 0.02891, 0.02891, 0.02891, 0.15219647], [1516685040000, 0.02891, 0.02891, 0.02890003, 0.02891, 0.72032653], [1516685280000, 0.0290998, 0.0290998, 0.02891, 0.02891, 1.37445246], [1516685340000, 0.02909925, 0.02909925, 0.02909925, 0.02909925, 0.10283738], [1516685400000, 0.02891, 0.02909849, 0.02891, 0.02909849, 1.81674478], [1516685520000, 0.02909776, 0.02909779, 0.02909772, 0.02909772, 4.86852116], [1516685580000, 0.02891, 0.02891, 0.02891, 0.02891, 0.4], [1516685640000, 0.02891, 0.02891, 0.0289, 0.0289, 12.93999955], [1516685700000, 0.0289, 0.02890999, 0.02888109, 0.02890999, 16.154295], [1516685760000, 0.02890999, 0.02907096, 0.0288093, 0.02907093, 26.70174698], [1516685880000, 0.0288093, 0.02905082, 0.02872822, 0.0290505, 11.33606949], [1516685940000, 0.02872822, 0.02905026, 0.02870004, 0.02904983, 2.37753441], [1516686000000, 0.02888109, 0.02904933, 0.02888109, 0.02904932, 1.48597177], [1516686180000, 0.02903988, 0.02903989, 0.0288, 0.02903989, 37.40063218], [1516686240000, 0.02903988, 0.02903988, 0.02903988, 0.02903988, 0.17174658], [1516686300000, 0.02903988, 0.02903989, 0.02903988, 0.02903989, 0.75866645], [1516686420000, 0.02903989, 0.02903989, 0.02903989, 0.02903989, 3.3105741], [1516686480000, 0.02903989, 0.02903989, 0.02903989, 0.02903989, 0.12217338], [1516686540000, 0.02903989, 0.02903989, 0.02903989, 0.02903989, 0.72913366], [1516686600000, 0.02890033, 0.02890033, 0.02890033, 0.02890033, 22.92533032], [1516686660000, 0.02890033, 0.02890033, 0.02890033, 0.02890033, 1.00704699], [1516686720000, 0.02899999, 0.02905, 0.02890034, 0.02890034, 9.65200517], [1516686780000, 0.02890034, 0.02890034, 0.02890034, 0.02890034, 0.5203226], [1516686840000, 0.029022, 0.0290999, 0.029022, 0.0290999, 0.24210297], [1516686900000, 0.02890034, 0.0290999, 0.02890034, 0.0290999, 1.30761945], [1516687020000, 0.0290999, 0.0291, 0.02890045, 0.02890045, 0.3949009], [1516687080000, 0.02890071, 0.02890071, 0.02890034, 0.02890045, 19.73557607], [1516687140000, 0.02890045, 0.02890045, 0.02890045, 0.02890045, 1.09926249], [1516687200000, 0.02875178, 0.02875178, 0.02875178, 0.02875178, 0.11593531], [1516687260000, 0.02896129, 0.02896129, 0.02896129, 0.02896129, 0.63665212], [1516687320000, 0.02896129, 0.02917527, 0.02896129, 0.02917527, 5.06090747], [1516687380000, 0.02896, 0.02896, 0.02896, 0.02896, 0.17331023], [1516687500000, 0.02896, 0.02917481, 0.02896, 0.02917481, 0.1731186], [1516687560000, 0.02917441, 0.02917441, 0.02917441, 0.02917441, 2.03331913], [1516687620000, 0.0291743, 0.0291743, 0.0291743, 0.0291743, 0.5939696], [1516687680000, 0.02916894, 0.02916894, 0.02916894, 0.02916894, 1.0], [1516687740000, 0.02916996, 0.02916996, 0.02916996, 0.02916996, 1.00400299], [1516687800000, 0.02911447, 0.02911447, 0.0289601, 0.0289601, 1.47680763], [1516687860000, 0.02896, 0.02911447, 0.02896, 0.02911447, 13.74057145], [1516687980000, 0.0288503, 0.02911444, 0.0288503, 0.02911444, 1.05677603], [1516688100000, 0.02911444, 0.02911444, 0.02911444, 0.02911444, 3.07173994], [1516688220000, 0.02888323, 0.02888332, 0.02888323, 0.02888332, 0.32508567], [1516688280000, 0.02888346, 0.02888346, 0.02888345, 0.02888345, 61.59], [1516688340000, 0.029, 0.029, 0.029, 0.029, 49.45061672], [1516688400000, 0.0289989, 0.02911439, 0.0289989, 0.02911439, 1.05338763], [1516688460000, 0.02911431, 0.02911431, 0.02911431, 0.02911431, 0.09915174], [1516688520000, 0.0288838, 0.0288838, 0.0288503, 0.0288503, 7.69749823], [1516688580000, 0.02911093, 0.0291111, 0.0288826, 0.029111, 17.29469337], [1516688640000, 0.02885023, 0.02911099, 0.02885014, 0.02888326, 58.40165374], [1516688700000, 0.02885, 0.02888326, 0.02882109, 0.02888326, 9.00812058], [1516688760000, 0.02911096, 0.02911099, 0.02911096, 0.02911098, 24.93314929], [1516688820000, 0.02882131, 0.02882131, 0.0288213, 0.0288213, 39.79448219], [1516688940000, 0.02911094, 0.02911094, 0.02911094, 0.02911094, 0.04631292], [1516689000000, 0.02911089, 0.02911095, 0.02911089, 0.02911095, 0.80487468], [1516689060000, 0.02882217, 0.02911091, 0.02882215, 0.0291109, 1.57556253], [1516689120000, 0.02911, 0.02911, 0.02882228, 0.02882228, 5.86240005], [1516689180000, 0.02882243, 0.02882253, 0.02882243, 0.02882253, 1.21802477], [1516689360000, 0.029101, 0.029101, 0.029101, 0.029101, 0.03370774], [1516689420000, 0.029001, 0.0291, 0.029001, 0.029001, 4.00400299], [1516689480000, 0.0291, 0.0291, 0.0291, 0.0291, 0.02628844], [1516689540000, 0.02900101, 0.02900101, 0.029001, 0.02900101, 1.84210057], [1516689600000, 0.02900101, 0.02900101, 0.029001, 0.02900101, 12.62073368], [1516689660000, 0.02900101, 0.02903409, 0.02885785, 0.02900101, 1.63177787], [1516689720000, 0.02900101, 0.02900102, 0.02900101, 0.02900102, 0.50432299], [1516689780000, 0.02897173, 0.02897173, 0.02897173, 0.02897173, 0.07742867], [1516689840000, 0.02897173, 0.02897173, 0.02897173, 0.02897173, 4.10271316], [1516689900000, 0.02897173, 0.02897173, 0.02897172, 0.02897172, 0.42157359], [1516689960000, 0.02897172, 0.02897174, 0.02897172, 0.02897174, 111.61064255], [1516690020000, 0.02897173, 0.02897173, 0.02897173, 0.02897173, 0.55949215], [1516690080000, 0.02897208, 0.02897208, 0.02897208, 0.02897208, 21.42776684], [1516690200000, 0.02897255, 0.02921591, 0.02897254, 0.02920269, 7.56218044], [1516690260000, 0.02920272, 0.02925, 0.02920269, 0.02920269, 12.31596763], [1516690320000, 0.02920269, 0.02926916, 0.02920269, 0.02926916, 31.49819327], [1516690380000, 0.02926915, 0.02926916, 0.02898485, 0.02898485, 24.04701199], [1516690440000, 0.02898522, 0.02898522, 0.02898522, 0.02898522, 0.1], [1516690500000, 0.0292691, 0.0292691, 0.02898585, 0.02898585, 0.18988452], [1516690680000, 0.02915, 0.02915, 0.02915, 0.02915, 0.18586543], [1516690740000, 0.02898662, 0.02898662, 0.02898526, 0.02898526, 9.77], [1516690800000, 0.02898525, 0.02915, 0.02898523, 0.02915, 33.04573577], [1516690920000, 0.02914999, 0.02914999, 0.02914999, 0.02914999, 0.68610658], [1516691040000, 0.02895002, 0.02905, 0.02895002, 0.02905, 0.72112663], [1516691100000, 0.02914999, 0.02915, 0.02895008, 0.02895016, 3.41570304], [1516691160000, 0.02915, 0.02915, 0.02905003, 0.02905003, 0.0773987], [1516691220000, 0.02905003, 0.02905003, 0.02905003, 0.02905003, 4.88689231], [1516691280000, 0.02915, 0.02915, 0.0289511, 0.0289511, 24.2409863], [1516691340000, 0.02926879, 0.0292688, 0.02926879, 0.0292688, 1.198602], [1516691400000, 0.02926914, 0.02926915, 0.02926912, 0.02926912, 0.73382221], [1516691460000, 0.02926907, 0.02926907, 0.02898488, 0.02898488, 0.27226865], [1516691520000, 0.02917615, 0.02930001, 0.02898611, 0.02930001, 7.23296796], [1516691580000, 0.029269, 0.02930001, 0.02901912, 0.029269, 2.65461064], [1516691640000, 0.02901957, 0.02901957, 0.02901957, 0.02901957, 0.35082672], [1516691700000, 0.02930846, 0.02934936, 0.02898556, 0.02898556, 1.75451282], [1516691760000, 0.02898592, 0.02935, 0.02898592, 0.0293422, 5.6084885], [1516691820000, 0.0292, 0.0292, 0.0292, 0.0292, 25.63547021], [1516691880000, 0.02905, 0.02905, 0.02905, 0.02905, 0.21009417], [1516691940000, 0.02905, 0.02905, 0.029, 0.02905, 0.64239354], [1516692000000, 0.029, 0.02905, 0.02890323, 0.02905, 2.9881094], [1516692060000, 0.02890343, 0.02890343, 0.0289, 0.0289, 10.63469168], [1516692120000, 0.02905, 0.02905, 0.02905, 0.02905, 0.50250299], [1516692180000, 0.02893237, 0.02905, 0.02893233, 0.02893233, 6.02378195], [1516692240000, 0.02904999, 0.02905, 0.02893233, 0.02893235, 1.4365117], [1516692300000, 0.02893235, 0.02905, 0.02893233, 0.02905, 2.10496624], [1516692360000, 0.02905, 0.02919775, 0.02905, 0.02919756, 0.0929422], [1516692420000, 0.029, 0.029, 0.02893233, 0.029, 2.38212436], [1516692480000, 0.029, 0.029, 0.029, 0.029, 0.34398116], [1516692540000, 0.029, 0.029, 0.029, 0.029, 0.07621236], [1516692600000, 0.029, 0.029, 0.02893233, 0.029, 3.37490184], [1516692660000, 0.029, 0.029, 0.029, 0.029, 1.08023864], [1516692720000, 0.029, 0.029, 0.029, 0.029, 4.23357707], [1516692780000, 0.02893338, 0.02893338, 0.02893338, 0.02893338, 0.81781047], [1516692840000, 0.02893422, 0.02893422, 0.02893422, 0.02893422, 3.6698], [1516692900000, 0.02908265, 0.02917295, 0.02893291, 0.02893291, 93.97781639], [1516692960000, 0.02908756, 0.02908756, 0.02908756, 0.02908756, 0.02806492], [1516693020000, 0.02908756, 0.02908756, 0.02908756, 0.02908756, 0.05436066], [1516693140000, 0.02893292, 0.02908756, 0.02893292, 0.02908756, 0.98916851], [1516693200000, 0.028933, 0.0290782, 0.028933, 0.0290782, 4.46849735], [1516693260000, 0.0290782, 0.0290782, 0.0290782, 0.0290782, 0.03810548], [1516693320000, 0.02893292, 0.0290782, 0.02893292, 0.0290782, 3.67926093], [1516693380000, 0.02906117, 0.02906117, 0.02895342, 0.02895342, 1.17805426], [1516693440000, 0.02895341, 0.02895342, 0.02895341, 0.02895342, 37.66314549], [1516693500000, 0.02908756, 0.02928287, 0.02895432, 0.02928252, 1.12777116], [1516693560000, 0.02928208, 0.0292821, 0.02895546, 0.02895546, 3.23023523], [1516693620000, 0.02928128, 0.02928128, 0.02895687, 0.02895687, 0.37565361], [1516693740000, 0.02928011, 0.02928011, 0.02928011, 0.02928011, 1.00400299], [1516693800000, 0.02927915, 0.02927915, 0.02927913, 0.02927913, 5.03761763], [1516693860000, 0.02927819, 0.02927819, 0.02895457, 0.02895457, 25.28122864], [1516693920000, 0.0289553, 0.0289553, 0.0289553, 0.0289553, 0.34153821], [1516693980000, 0.02908457, 0.02927594, 0.02895596, 0.02895596, 0.11661876], [1516694040000, 0.02927281, 0.02927281, 0.02926996, 0.02926996, 0.29922689], [1516694100000, 0.02923296, 0.02923297, 0.02923296, 0.02923297, 2.0], [1516694160000, 0.02895356, 0.02921799, 0.02895356, 0.02895357, 4.49275083], [1516694220000, 0.02895345, 0.0289536, 0.02895345, 0.0289536, 2.74615787], [1516694280000, 0.02895365, 0.02895388, 0.02895365, 0.02895388, 0.81205348], [1516694340000, 0.02895388, 0.02920429, 0.02895342, 0.02920429, 6.91081511], [1516694400000, 0.02895342, 0.02895351, 0.02895342, 0.02895351, 3.92112698], [1516694460000, 0.02920303, 0.02920303, 0.02920219, 0.02920219, 0.28941542], [1516694520000, 0.02895342, 0.02895342, 0.02895342, 0.02895342, 9.61818678], [1516694580000, 0.02920078, 0.02920078, 0.0289538, 0.02919874, 38.0226548], [1516694640000, 0.02919781, 0.02919781, 0.02895342, 0.02895342, 7.58814714], [1516694700000, 0.02919731, 0.02919731, 0.02919701, 0.02919701, 16.96248027], [1516694760000, 0.02919659, 0.0291966, 0.02913911, 0.02913911, 73.61030928], [1516694820000, 0.02895342, 0.02913911, 0.02895342, 0.02913911, 5.38850651], [1516694940000, 0.02902, 0.02922, 0.02902, 0.02902, 135.52217546], [1516695000000, 0.02902, 0.02908999, 0.02902, 0.02902, 16.2329825], [1516695060000, 0.02902, 0.02902, 0.02902, 0.02902, 4.65128108], [1516695120000, 0.02916896, 0.02927092, 0.02916896, 0.02927092, 0.3416788], [1516695180000, 0.02925, 0.02925, 0.02925, 0.02925, 110.0], [1516695240000, 0.02902, 0.02902, 0.02902, 0.02902, 1.01171458], [1516695300000, 0.02924897, 0.02924897, 0.02924881, 0.02924881, 0.92523031], [1516695360000, 0.02924833, 0.02924833, 0.02901999, 0.02901999, 0.16294154], [1516695480000, 0.02895342, 0.02895342, 0.02895342, 0.02895342, 1.28271336], [1516695540000, 0.02895342, 0.02895342, 0.02895342, 0.02895342, 1.38914869], [1516695600000, 0.02914513, 0.02914513, 0.02914479, 0.02914479, 1.72394864], [1516695660000, 0.02914448, 0.02914448, 0.02914422, 0.02914422, 4.49136789], [1516695780000, 0.02895349, 0.02895349, 0.02895342, 0.02895342, 2.17614617], [1516695840000, 0.02914286, 0.02914286, 0.02895342, 0.02895342, 1.72680162], [1516695900000, 0.02895342, 0.02914247, 0.02895342, 0.02914245, 1.09824305], [1516695960000, 0.02914239, 0.02914239, 0.02895342, 0.02895342, 3.79687788], [1516696020000, 0.02895342, 0.02895342, 0.02895342, 0.02895342, 2.3], [1516696080000, 0.02895342, 0.0289535, 0.02895342, 0.0289535, 2.03616878], [1516696140000, 0.0289535, 0.02914076, 0.02895343, 0.02914076, 1.50427195], [1516696200000, 0.02914039, 0.02914039, 0.02914039, 0.02914039, 0.68633236], [1516696320000, 0.02895345, 0.02895345, 0.02895345, 0.02895345, 0.03807835], [1516696380000, 0.02895347, 0.02895347, 0.02895345, 0.02895345, 0.53], [1516696440000, 0.02895348, 0.02895348, 0.02895344, 0.02895344, 2.62851222], [1516696500000, 0.0291295, 0.02912951, 0.0291295, 0.02912951, 0.68658918], [1516696560000, 0.02895345, 0.02895345, 0.02895344, 0.02895344, 5.25702614], [1516696620000, 0.02895344, 0.02895344, 0.02895344, 0.02895344, 0.61696323], [1516696680000, 0.02912949, 0.02912949, 0.02895344, 0.02895344, 1.09090306], [1516696740000, 0.02912949, 0.02912949, 0.02895344, 0.02895344, 1.05991396], [1516696800000, 0.029, 0.0291295, 0.02895344, 0.0291295, 1.26117592], [1516696920000, 0.029129, 0.029129, 0.029129, 0.029129, 0.10293182], [1516696980000, 0.029129, 0.0291295, 0.029129, 0.0291295, 0.09511182], [1516697040000, 0.02895346, 0.02912946, 0.02881999, 0.02912946, 82.57947611], [1516697100000, 0.02881999, 0.02912917, 0.0287936, 0.02912907, 4.12899983], [1516697160000, 0.0291, 0.0291, 0.0291, 0.0291, 0.04822691], [1516697280000, 0.02909957, 0.02909957, 0.02909957, 0.02909957, 0.68557714], [1516697340000, 0.02909939, 0.0291, 0.02880468, 0.02909992, 16.27934034], [1516697400000, 0.02909991, 0.02909991, 0.02909991, 0.02909991, 0.34364379], [1516697520000, 0.02909982, 0.02909983, 0.02909982, 0.02909983, 0.40075784], [1516697700000, 0.02883618, 0.0291, 0.02883618, 0.02883693, 23.99657832], [1516697820000, 0.02909984, 0.02909984, 0.02909984, 0.02909984, 0.14567618], [1516697880000, 0.02909992, 0.02909992, 0.02909992, 0.02909992, 0.24124252], [1516697940000, 0.02909968, 0.02909968, 0.02909968, 0.02909968, 0.06477481], [1516698000000, 0.02909992, 0.0291, 0.02909992, 0.0291, 10.15567672], [1516698060000, 0.0291, 0.02920045, 0.0291, 0.02920045, 18.10587195], [1516698120000, 0.0291, 0.02920045, 0.0291, 0.0291, 15.95042075], [1516698180000, 0.02912236, 0.02920045, 0.02912235, 0.02912237, 71.1796952], [1516698240000, 0.0289327, 0.0289327, 0.02888872, 0.02888872, 1.37974165], [1516698300000, 0.02917068, 0.02919996, 0.02917068, 0.02919996, 0.34280973], [1516698360000, 0.02889141, 0.0292, 0.02889141, 0.0292, 0.54905398], [1516698480000, 0.0292, 0.0292, 0.0292, 0.0292, 0.01708048], [1516698540000, 0.02919942, 0.02919969, 0.02919942, 0.02919969, 0.17789806], [1516698600000, 0.0289222, 0.02919963, 0.0289222, 0.02919963, 8.57424464], [1516698660000, 0.02919964, 0.0292, 0.02919963, 0.0292, 95.88917904], [1516698840000, 0.02917048, 0.02917048, 0.02893121, 0.02917041, 9.42619938], [1516698900000, 0.02917037, 0.02917037, 0.02893152, 0.02893152, 1.79832276], [1516698960000, 0.02917024, 0.02917024, 0.02917024, 0.02917024, 0.03882236], [1516699020000, 0.02917035, 0.02917035, 0.02895203, 0.02895203, 0.62103363], [1516699080000, 0.02917003, 0.02917003, 0.02917003, 0.02917003, 0.31165237], [1516699200000, 0.029169, 0.029169, 0.028973, 0.028973, 0.6600419], [1516699260000, 0.029168, 0.02916831, 0.02892277, 0.02892277, 3.56396345], [1516699320000, 0.02892277, 0.02892277, 0.02891293, 0.02891293, 1.02815049], [1516699380000, 0.02916618, 0.02916618, 0.02891293, 0.02891293, 1.76063133], [1516699440000, 0.02891293, 0.02891293, 0.02891293, 0.02891293, 0.65121604], [1516699500000, 0.02891293, 0.02912578, 0.02891293, 0.02891293, 0.31013704], [1516699560000, 0.02891293, 0.02891293, 0.02891293, 0.02891293, 39.20626345], [1516699620000, 0.02891293, 0.02891293, 0.02891293, 0.02891293, 0.07626346], [1516699680000, 0.02891293, 0.02891293, 0.02891293, 0.02891293, 0.03813173], [1516699800000, 0.02912087, 0.02912087, 0.02912084, 0.02912084, 0.68679196], [1516699860000, 0.02891293, 0.02897468, 0.02891293, 0.02897468, 0.07609591], [1516699920000, 0.02891293, 0.02891293, 0.02891293, 0.02891293, 0.07626346], [1516699980000, 0.02891293, 0.02891293, 0.02891293, 0.02891293, 0.03813173], [1516700040000, 0.02911784, 0.02911784, 0.02911784, 0.02911784, 0.03934389], [1516700100000, 0.02911737, 0.02911737, 0.02891293, 0.02891293, 0.5330568], [1516700160000, 0.02891293, 0.02891293, 0.02891293, 0.02891293, 0.2], [1516700220000, 0.02911548, 0.02911548, 0.02911199, 0.02911199, 0.2527686], [1516700340000, 0.02910083, 0.02910085, 0.02910083, 0.02910085, 2.19249923], [1516700400000, 0.02910026, 0.02910026, 0.02910026, 0.02910026, 0.68727812], [1516700460000, 0.02910002, 0.02910002, 0.02910002, 0.02910002, 0.0335397], [1516700520000, 0.02909964, 0.02909964, 0.02909946, 0.02909946, 1.88945126], [1516700580000, 0.02909944, 0.02909944, 0.028805, 0.028805, 4.47039542], [1516700640000, 0.02909917, 0.02909917, 0.02909915, 0.02909915, 3.01989754], [1516700700000, 0.02909906, 0.02909906, 0.02909906, 0.02909906, 0.3803846], [1516700760000, 0.02909866, 0.02909866, 0.02909866, 0.02909866, 0.03601658], [1516700820000, 0.0290981, 0.0290981, 0.0290981, 0.0290981, 0.84], [1516700880000, 0.028805, 0.028805, 0.028805, 0.028805, 0.0320186], [1516700940000, 0.02909735, 0.02909735, 0.02909735, 0.02909735, 0.02545567], [1516701000000, 0.02909648, 0.02909648, 0.02909648, 0.02909648, 0.13712589], [1516701240000, 0.02909199, 0.02909199, 0.02908893, 0.02908893, 0.10760042], [1516701300000, 0.02907482, 0.02907482, 0.02907482, 0.02907482, 0.04868332], [1516701420000, 0.02887499, 0.02887499, 0.02887499, 0.02887499, 0.08045308], [1516701480000, 0.02887499, 0.0290732, 0.02887499, 0.0290732, 2.66458165], [1516701540000, 0.02887498, 0.02907285, 0.02887498, 0.02907285, 3.08961444], [1516701600000, 0.02896598, 0.02896598, 0.02880502, 0.02880502, 0.67346701], [1516701660000, 0.02896598, 0.02896598, 0.02896598, 0.02896598, 0.9940477], [1516701720000, 0.02880502, 0.02880502, 0.02880502, 0.02880502, 1.1124872], [1516701780000, 0.02880501, 0.02880502, 0.028787, 0.02880502, 10.74360138], [1516701840000, 0.02880502, 0.02880502, 0.02875358, 0.02875358, 4.54187629], [1516701900000, 0.02880502, 0.02895444, 0.0288025, 0.0288025, 0.6871919], [1516701960000, 0.0288025, 0.02885168, 0.02875358, 0.02885168, 2.20253474], [1516702020000, 0.02885168, 0.02895402, 0.02885168, 0.02885168, 4.13603332], [1516702080000, 0.02885168, 0.02891983, 0.02875358, 0.02891983, 1.00587748], [1516702140000, 0.0289198, 0.0289198, 0.02891978, 0.02891978, 2.68318169], [1516702200000, 0.02885169, 0.02885169, 0.02885169, 0.02885169, 1.91323279], [1516702260000, 0.02885169, 0.02885169, 0.02885167, 0.02885169, 2.36819657], [1516702320000, 0.02885169, 0.02885169, 0.02885169, 0.02885169, 1.13407161], [1516702380000, 0.02885169, 0.02885169, 0.02885169, 0.02885169, 0.03834317], [1516702440000, 0.02885169, 0.02885169, 0.02885168, 0.02885168, 0.07668635], [1516702500000, 0.02885168, 0.02909695, 0.02885168, 0.02909688, 16.16312186], [1516702560000, 0.02909651, 0.02909651, 0.02909636, 0.02909636, 15.63109146], [1516702680000, 0.02900047, 0.02909592, 0.02900047, 0.02909592, 15.46234644], [1516702800000, 0.02902288, 0.02902288, 0.02902288, 0.02902288, 1.378222], [1516702860000, 0.02902288, 0.02909591, 0.02902288, 0.02909591, 2.17847736], [1516702920000, 0.02902288, 0.0290959, 0.02902288, 0.02902288, 2.02879454], [1516702980000, 0.02902288, 0.02909592, 0.02892137, 0.02909592, 1.38839459], [1516703100000, 0.02883075, 0.02909588, 0.02881999, 0.02881999, 1.08330043], [1516703220000, 0.02909581, 0.02909584, 0.02909581, 0.02909584, 0.442323], [1516703280000, 0.02909581, 0.02909581, 0.02906005, 0.02906005, 2.13162032], [1516703340000, 0.02882037, 0.02882037, 0.02882037, 0.02882037, 1.62025599], [1516703520000, 0.02882248, 0.02882366, 0.02882248, 0.02882366, 2.49286966], [1516703580000, 0.02882553, 0.02882553, 0.02882545, 0.02882545, 1.03429504], [1516703640000, 0.02882022, 0.02882022, 0.02882022, 0.02882022, 4.65763504], [1516703700000, 0.02905945, 0.02905945, 0.02905914, 0.02905914, 0.72600263], [1516703760000, 0.02905882, 0.02905882, 0.02905834, 0.02905834, 0.40538435], [1516703820000, 0.02882013, 0.02882013, 0.0288201, 0.0288201, 5.9112426], [1516704000000, 0.029056, 0.029056, 0.02881999, 0.02881999, 5.63818955], [1516704060000, 0.0288194, 0.02884881, 0.02875286, 0.02875358, 11.82835374], [1516704120000, 0.0287529, 0.0287529, 0.0287529, 0.0287529, 57.65220459], [1516704180000, 0.0287529, 0.0287529, 0.0287529, 0.0287529, 39.44259631], [1516704240000, 0.0287529, 0.0287529, 0.0287529, 0.0287529, 0.11147522], [1516704300000, 0.0287529, 0.0287529, 0.0287529, 0.0287529, 1.40342836], [1516704360000, 0.0287529, 0.0287529, 0.0287529, 0.0287529, 0.22108536], [1516704420000, 0.0287529, 0.0287529, 0.0287529, 0.0287529, 0.11495313], [1516704480000, 0.0287529, 0.02883528, 0.02875, 0.02883528, 12.39670644], [1516704540000, 0.02883528, 0.02883528, 0.02883528, 0.02883528, 0.06217008], [1516704600000, 0.02897271, 0.02897271, 0.02897264, 0.02897267, 0.68555308], [1516704900000, 0.02876, 0.0289716, 0.02876, 0.0289716, 0.44491576], [1516705020000, 0.02897119, 0.02897119, 0.02897113, 0.02897113, 1.17715809], [1516705080000, 0.02897113, 0.02897132, 0.0287529, 0.02897112, 68.39322537], [1516705140000, 0.02897104, 0.02897104, 0.0287529, 0.0287529, 10.03288662], [1516705200000, 0.0287529, 0.0287529, 0.0287529, 0.0287529, 15.5], [1516705260000, 0.0287529, 0.0287529, 0.0287529, 0.0287529, 1.93136578], [1516705320000, 0.0287529, 0.0287529, 0.0287529, 0.0287529, 5.28465294], [1516705380000, 0.02876, 0.02876, 0.02876, 0.02876, 42.54116401], [1516705440000, 0.028925, 0.028925, 0.028925, 0.028925, 0.25252012], [1516705500000, 0.02891893, 0.02891893, 0.02876, 0.02876, 2.65355207], [1516705560000, 0.02876, 0.02888699, 0.02876, 0.02888699, 1.05937441], [1516705620000, 0.02876, 0.02887797, 0.02876, 0.02887797, 3.09575564], [1516705800000, 0.02876, 0.02876, 0.02876, 0.02876, 0.03833449], [1516705860000, 0.02876, 0.0288628, 0.02876, 0.0288628, 0.07709148], [1516705920000, 0.0288628, 0.0288628, 0.02886279, 0.02886279, 0.08537675], [1516705980000, 0.02886278, 0.02886278, 0.02871847, 0.02871847, 1.73397854], [1516706040000, 0.02871847, 0.02871847, 0.02871847, 0.02871847, 0.84625138], [1516706100000, 0.02871847, 0.02871847, 0.02871847, 0.02871847, 0.99607129], [1516706220000, 0.02871847, 0.02871847, 0.02871847, 0.02871847, 1.08480505], [1516706280000, 0.02871847, 0.02871847, 0.02871847, 0.02871847, 1.09921898], [1516706340000, 0.02871847, 0.02871847, 0.02871847, 0.02871847, 0.10130299], [1516706400000, 0.02871, 0.02871, 0.02871, 0.02871, 0.328], [1516706460000, 0.02871, 0.02871847, 0.02871, 0.02871847, 1.23444758], [1516706520000, 0.02871, 0.02871847, 0.02871, 0.02871847, 2.60035338], [1516706640000, 0.02871, 0.02871, 0.02871, 0.02871, 0.53840125], [1516706700000, 0.02871847, 0.02871847, 0.02871847, 0.02871847, 0.50250299], [1516706760000, 0.02871847, 0.02896298, 0.02871847, 0.02896298, 17.37273707], [1516706820000, 0.0289589, 0.0289589, 0.02895598, 0.02895598, 0.15739436], [1516706880000, 0.02895554, 0.02895554, 0.028712, 0.028712, 12.72926252], [1516706940000, 0.0289529, 0.0289529, 0.0289529, 0.0289529, 0.10130299], [1516707000000, 0.02893497, 0.02893497, 0.02863504, 0.02863504, 39.43490482], [1516707060000, 0.02863504, 0.02892385, 0.02859873, 0.0286, 36.79500516], [1516707120000, 0.02860001, 0.028893, 0.02857465, 0.02857465, 15.51599887], [1516707180000, 0.02857466, 0.02878499, 0.02856199, 0.02857465, 2.54746956], [1516707240000, 0.028771, 0.02877394, 0.0285387, 0.02877082, 25.07014375], [1516707300000, 0.02876498, 0.02876498, 0.02876491, 0.02876491, 1.25475003], [1516707360000, 0.0287649, 0.02876492, 0.028759, 0.02876492, 9.27233244], [1516707420000, 0.02876491, 0.02876491, 0.02876491, 0.02876491, 8.07832766], [1516707480000, 0.02876469, 0.02876469, 0.02853874, 0.02853874, 0.33827089], [1516707540000, 0.0285387, 0.0285387, 0.02851389, 0.02851389, 2.64139022], [1516707600000, 0.0285139, 0.02851944, 0.02850133, 0.02851944, 6.29994516], [1516707660000, 0.0285194, 0.0285194, 0.0285194, 0.0285194, 5.67376419], [1516707720000, 0.02873797, 0.028738, 0.02873797, 0.028738, 1.79975028], [1516707780000, 0.0285194, 0.02873799, 0.0285194, 0.02851947, 2.31650974], [1516707840000, 0.02851944, 0.02851944, 0.02851944, 0.02851944, 0.3], [1516707900000, 0.02873433, 0.02873433, 0.02873417, 0.02873418, 2.15995424], [1516707960000, 0.0285196, 0.02873433, 0.0285196, 0.02873433, 11.49801976], [1516708020000, 0.02873433, 0.02876361, 0.02873433, 0.02873433, 2.01911825], [1516708080000, 0.02873427, 0.02873427, 0.02852147, 0.02873406, 6.58327044], [1516708140000, 0.02873192, 0.02873192, 0.02873192, 0.02873192, 0.01913934], [1516708200000, 0.02873171, 0.02873171, 0.0285, 0.0285, 25.50608622], [1516708260000, 0.02871192, 0.02871192, 0.02842, 0.02868375, 55.34561314], [1516708320000, 0.028681, 0.02868399, 0.028681, 0.02868399, 8.27061426], [1516708380000, 0.02844628, 0.02868399, 0.02844628, 0.02868399, 0.06400353], [1516708440000, 0.02844628, 0.02862599, 0.02844628, 0.02844755, 5.85169614], [1516708500000, 0.02866996, 0.02866996, 0.02844625, 0.02844625, 32.72523529], [1516708560000, 0.02844625, 0.02844625, 0.0284462, 0.02844625, 51.56460651], [1516708620000, 0.02844625, 0.02844625, 0.0284462, 0.0284462, 18.96113921], [1516708680000, 0.02844625, 0.02855235, 0.02841, 0.02841, 9.23806888], [1516708800000, 0.028616, 0.02866612, 0.028616, 0.02866612, 11.60266729], [1516708860000, 0.02866612, 0.02867287, 0.02866612, 0.02867287, 0.07731445], [1516708920000, 0.02852014, 0.02868399, 0.02852014, 0.02852031, 31.13224537], [1516708980000, 0.02874897, 0.02874897, 0.02852069, 0.02852069, 40.02114165], [1516709040000, 0.02874886, 0.02874886, 0.02874884, 0.02874884, 2.90847844], [1516709100000, 0.02874882, 0.02874882, 0.02842726, 0.02867287, 35.43948502], [1516709160000, 0.02874834, 0.02874834, 0.02867287, 0.02867287, 0.19926077], [1516709220000, 0.02874822, 0.02874822, 0.02874822, 0.02874822, 2.00832255], [1516709280000, 0.02867288, 0.02874754, 0.0284301, 0.0284301, 9.69248993], [1516709340000, 0.02867279, 0.02872957, 0.02867279, 0.02872957, 0.87811937], [1516709400000, 0.028535, 0.028535, 0.028535, 0.028535, 2.0], [1516709460000, 0.028535, 0.028535, 0.028535, 0.028535, 9.5515353], [1516709520000, 0.0284509, 0.0284509, 0.0284509, 0.0284509, 10.0], [1516709580000, 0.02872914, 0.02872932, 0.02872914, 0.02872932, 0.13709105], [1516709640000, 0.02872909, 0.02872909, 0.02871886, 0.02871886, 12.22080664], [1516709700000, 0.02870926, 0.02872926, 0.02870926, 0.0287292, 4.09033375], [1516709820000, 0.0286991, 0.0287291, 0.0286991, 0.0287291, 19.24238996], [1516709880000, 0.02845249, 0.02871934, 0.02845249, 0.02871934, 3.32677613], [1516709940000, 0.02847869, 0.02847869, 0.02847869, 0.02847869, 3.653], [1516710000000, 0.02847869, 0.02863914, 0.02847869, 0.02863914, 1.59482359], [1516710060000, 0.02845219, 0.02845219, 0.02845219, 0.02845219, 0.91062504], [1516710120000, 0.02847869, 0.02865911, 0.02847869, 0.02865911, 2.07103488], [1516710180000, 0.02865911, 0.02865914, 0.0284427, 0.02844291, 3.67657538], [1516710240000, 0.02863697, 0.0286591, 0.02863697, 0.0286591, 69.83903833], [1516710300000, 0.02854986, 0.02854986, 0.02854986, 0.02854986, 12.03051519], [1516710360000, 0.02854986, 0.02865699, 0.02854986, 0.028655, 6.80171019], [1516710420000, 0.02865906, 0.02865906, 0.02865906, 0.02865906, 39.52161663], [1516710480000, 0.02865905, 0.02865905, 0.0284398, 0.0284398, 0.77796726], [1516710540000, 0.02865905, 0.0286591, 0.02865905, 0.0286591, 1.17698817], [1516710600000, 0.0286591, 0.0286591, 0.02865906, 0.02865906, 0.26818841], [1516710660000, 0.02853595, 0.02865906, 0.02845607, 0.02865906, 17.7557058], [1516710720000, 0.02844164, 0.02865905, 0.02844164, 0.02844169, 10.84948302], [1516710780000, 0.0286591, 0.0286591, 0.0286591, 0.0286591, 1.0386356], [1516710840000, 0.0286591, 0.0286591, 0.0286591, 0.0286591, 1.29901362], [1516710900000, 0.02853595, 0.0286591, 0.02853595, 0.0286591, 0.79102152], [1516710960000, 0.0286591, 0.0286591, 0.0286591, 0.0286591, 1.18655261], [1516711020000, 0.0286591, 0.0286591, 0.02849274, 0.02849274, 10.53526489], [1516711080000, 0.02854288, 0.02854288, 0.02854288, 0.02854288, 0.22959476], [1516711140000, 0.0286591, 0.0286591, 0.0286591, 0.0286591, 10.0], [1516711200000, 0.02854288, 0.0286591, 0.02844285, 0.0286591, 32.69027233], [1516711260000, 0.0286591, 0.0286591, 0.0286591, 0.0286591, 1.4632054], [1516711320000, 0.0286591, 0.0286591, 0.0286591, 0.0286591, 1.22206972], [1516711380000, 0.0286591, 0.0286591, 0.0286591, 0.0286591, 0.11627782], [1516711440000, 0.0286591, 0.0286591, 0.02855201, 0.02855201, 3.70776448], [1516711500000, 0.0286, 0.0286, 0.0286, 0.0286, 0.03854895], [1516711560000, 0.0286, 0.0286, 0.0286, 0.0286, 7.00518449], [1516711620000, 0.0286, 0.02860001, 0.0286, 0.02860001, 3.20001255], [1516711680000, 0.02860001, 0.02860001, 0.02860001, 0.02860001, 0.50250299], [1516711740000, 0.02860001, 0.02860001, 0.02860001, 0.02860001, 1.1091881], [1516711800000, 0.02860001, 0.02860001, 0.02860001, 0.02860001, 1.65751671], [1516711860000, 0.02860001, 0.0286591, 0.02860001, 0.0286591, 2.48941803], [1516711980000, 0.0286591, 0.0286591, 0.0286591, 0.0286591, 0.08225416], [1516712160000, 0.0286591, 0.0286591, 0.0286591, 0.0286591, 3.51319386], [1516712220000, 0.0286591, 0.0286591, 0.02845426, 0.0286001, 68.26372496], [1516712280000, 0.0286001, 0.0286001, 0.0286, 0.0286, 0.11624222], [1516712340000, 0.02858627, 0.0286, 0.02858627, 0.0286, 0.12665255], [1516712400000, 0.0286, 0.0286, 0.0286, 0.0286, 0.47452148], [1516712460000, 0.02845361, 0.0286, 0.02845358, 0.02845358, 44.47155359], [1516712520000, 0.0286, 0.0286, 0.02845359, 0.0286, 6.73034373], [1516712580000, 0.0286, 0.0286001, 0.02845359, 0.02845359, 4.04445037], [1516712640000, 0.0286001, 0.0286001, 0.02860001, 0.02860001, 2.5445565], [1516712700000, 0.02860001, 0.02860001, 0.02860001, 0.02860001, 8.39593098], [1516712760000, 0.02860001, 0.02860001, 0.02860001, 0.02860001, 8.8804491], [1516712820000, 0.02865907, 0.0286591, 0.02846426, 0.0286591, 0.84444191], [1516712940000, 0.02865906, 0.02865906, 0.02865906, 0.02865906, 0.32991353], [1516713000000, 0.02865906, 0.02865906, 0.02865906, 0.02865906, 0.38765955], [1516713120000, 0.02865906, 0.02865906, 0.02865906, 0.02865906, 1.36232271], [1516713240000, 0.02865906, 0.02865906, 0.02865906, 0.02865906, 13.99834982], [1516713300000, 0.02865903, 0.02865906, 0.02846544, 0.02865906, 1.08397799], [1516713360000, 0.02846542, 0.02865905, 0.02846517, 0.02865901, 21.44444514], [1516713420000, 0.02865596, 0.02865596, 0.02865596, 0.02865596, 0.05813958], [1516713540000, 0.02865593, 0.02865593, 0.02865593, 0.02865593, 0.08189598], [1516713600000, 0.02865593, 0.02865593, 0.02865593, 0.02865593, 0.34896827], [1516713840000, 0.02865593, 0.02865593, 0.0286559, 0.0286559, 7.09086943], [1516713960000, 0.0285, 0.0285, 0.0285, 0.0285, 0.62474967], [1516714020000, 0.0285, 0.0285, 0.0285, 0.0285, 0.45], [1516714140000, 0.02865592, 0.02865592, 0.02865592, 0.02865592, 0.427244], [1516714200000, 0.02865592, 0.02865592, 0.02865592, 0.02865592, 0.34896827], [1516714260000, 0.02865592, 0.02865592, 0.02865592, 0.02865592, 1.0], [1516714320000, 0.02865592, 0.02865592, 0.02865592, 0.02865592, 0.18035391], [1516714380000, 0.02865592, 0.02865592, 0.02865592, 0.02865592, 2.85688806], [1516714440000, 0.02865592, 0.02865592, 0.02865591, 0.02865591, 0.30015694], [1516714500000, 0.0285001, 0.02865591, 0.0285001, 0.02865591, 1.80296731], [1516714680000, 0.02865591, 0.02865591, 0.02865591, 0.02865591, 1.0], [1516714800000, 0.02865591, 0.02865591, 0.02865591, 0.02865591, 0.14254526], [1516714860000, 0.02865591, 0.02865591, 0.0285001, 0.02865591, 0.3031183], [1516714920000, 0.02865591, 0.02865591, 0.02865591, 0.02865591, 0.27869815], [1516715100000, 0.02865591, 0.02865591, 0.0285001, 0.02865591, 2.32461387], [1516715160000, 0.0285001, 0.02865591, 0.0285001, 0.02865591, 3.37261639], [1516715220000, 0.02865591, 0.02865591, 0.02865591, 0.02865591, 0.0385787], [1516715280000, 0.02857813, 0.02857813, 0.0285001, 0.0285001, 2.05059441], [1516715460000, 0.0286559, 0.0286559, 0.0286559, 0.0286559, 0.34975466], [1516715520000, 0.0286559, 0.0286559, 0.0286559, 0.0286559, 0.03315109], [1516715580000, 0.0286559, 0.0286559, 0.02850201, 0.02850201, 12.75939849], [1516715640000, 0.02865589, 0.02865589, 0.02864588, 0.02865589, 7.28379212], [1516715700000, 0.02865589, 0.0286559, 0.02865089, 0.0286559, 39.50931042], [1516715760000, 0.0286559, 0.0286559, 0.02865089, 0.0286559, 3.37550122], [1516715820000, 0.0286559, 0.0286559, 0.0286559, 0.0286559, 28.14279611], [1516715880000, 0.0286559, 0.02865906, 0.0286559, 0.02865906, 90.04352185], [1516715940000, 0.02865906, 0.02865911, 0.02865906, 0.02865911, 1.12563028], [1516716000000, 0.02870931, 0.02870931, 0.02865089, 0.02865089, 5.10467914], [1516716060000, 0.02872935, 0.02877539, 0.02872935, 0.02877539, 5.79087044], [1516716120000, 0.02877539, 0.0288, 0.02872935, 0.0288, 2.89281201], [1516716180000, 0.02872935, 0.02881435, 0.02872935, 0.02881435, 20.17397917], [1516716240000, 0.02872935, 0.02872935, 0.02872935, 0.02872935, 2.17638169], [1516716300000, 0.02881435, 0.02881435, 0.02872935, 0.02872935, 10.19455755], [1516716360000, 0.02872935, 0.02881435, 0.02872935, 0.02881434, 2.09218953], [1516716420000, 0.02872935, 0.02872935, 0.02872935, 0.02872935, 1.74509007], [1516716480000, 0.02881434, 0.02881434, 0.02872935, 0.02881434, 2.35350029], [1516716540000, 0.02872935, 0.02872935, 0.02872935, 0.02872935, 4.67605002], [1516716600000, 0.02872935, 0.02881434, 0.02872935, 0.02872935, 4.09565988], [1516716660000, 0.02872935, 0.02872935, 0.02872935, 0.02872935, 4.58937539], [1516716720000, 0.02872935, 0.02881429, 0.02872935, 0.02881429, 1.08075377], [1516716780000, 0.02872935, 0.02872935, 0.0286509, 0.0286509, 9.20783304], [1516716840000, 0.02865092, 0.02865092, 0.02865092, 0.02865092, 0.39075829], [1516716900000, 0.02865092, 0.02881419, 0.02865092, 0.02865092, 4.38834856], [1516716960000, 0.02865092, 0.02865092, 0.02865092, 0.02865092, 1.48884453], [1516717020000, 0.02865092, 0.02881415, 0.02865092, 0.02865092, 1.45757241], [1516717140000, 0.02865092, 0.02865092, 0.02865091, 0.02865092, 6.72994752], [1516717200000, 0.02873271, 0.02881435, 0.02865092, 0.02881434, 3.83855387], [1516717260000, 0.02865092, 0.02881434, 0.02865092, 0.02865092, 0.98863519], [1516717320000, 0.02881432, 0.02881432, 0.02865092, 0.02865092, 0.50067725], [1516717380000, 0.02865092, 0.02865092, 0.02865092, 0.02865092, 0.08463558], [1516717440000, 0.02865092, 0.02865092, 0.02865092, 0.02865092, 1.04870981], [1516717500000, 0.02865092, 0.02865092, 0.02865092, 0.02865092, 1.0472647], [1516717560000, 0.02881428, 0.02881428, 0.02865092, 0.02881428, 2.31417241], [1516717620000, 0.02865092, 0.02881429, 0.02865092, 0.02881428, 0.53147334], [1516717740000, 0.02865092, 0.02865092, 0.02865092, 0.02865092, 9.0], [1516717800000, 0.02865092, 0.0288141, 0.02865092, 0.0288141, 1.55401397], [1516717860000, 0.02865092, 0.02865092, 0.02865091, 0.02865091, 3.47708045], [1516717980000, 0.02865092, 0.02865092, 0.02865091, 0.02865091, 1.07361255], [1516718040000, 0.0288141, 0.0288141, 0.0288141, 0.0288141, 0.64390351], [1516718100000, 0.02881409, 0.02881409, 0.02881409, 0.02881409, 0.69410462], [1516718160000, 0.0288141, 0.02881435, 0.0286514, 0.02881435, 8.18789918], [1516718220000, 0.02881409, 0.02881435, 0.02871152, 0.02881435, 26.90782166], [1516718280000, 0.0288316, 0.02885, 0.0288141, 0.02885, 2.20096258], [1516718340000, 0.02885, 0.0289, 0.02885, 0.0289, 0.09967564], [1516718400000, 0.0288141, 0.02893062, 0.0288141, 0.02893062, 3.02588026], [1516718460000, 0.02893062, 0.02893062, 0.02881411, 0.02881411, 18.9446357], [1516718520000, 0.02881411, 0.02881411, 0.02881411, 0.02881411, 3.08539195], [1516718580000, 0.02893062, 0.02893062, 0.02881411, 0.0289, 21.23921045], [1516718640000, 0.0289, 0.0289, 0.0288141, 0.0289, 2.33668797], [1516718700000, 0.0289, 0.0289, 0.0289, 0.0289, 0.54554548], [1516718760000, 0.0289, 0.0289, 0.0289, 0.0289, 0.03828149], [1516718820000, 0.0289, 0.0289, 0.0287196, 0.0287196, 2.12964087], [1516718880000, 0.02889974, 0.02889974, 0.02889959, 0.02889959, 0.09741382], [1516718940000, 0.0287136, 0.0287136, 0.0286, 0.02871359, 15.8815867], [1516719000000, 0.02871356, 0.02871356, 0.02855, 0.02871336, 2.23912693], [1516719060000, 0.02871338, 0.02871353, 0.02871335, 0.02871353, 13.57560742], [1516719120000, 0.02871352, 0.02871352, 0.02871352, 0.02871352, 4.27043371], [1516719240000, 0.02871287, 0.02871287, 0.02846517, 0.02846517, 61.60185931], [1516719300000, 0.02846517, 0.02871213, 0.02845, 0.02871213, 5.959284], [1516719360000, 0.02868217, 0.0287112, 0.02868217, 0.0287112, 2.09], [1516719420000, 0.02868217, 0.02868217, 0.02868198, 0.028682, 7.46888594], [1516719480000, 0.02868199, 0.02868199, 0.02844319, 0.02844338, 3.81478249], [1516719540000, 0.02868191, 0.02868191, 0.02844351, 0.02844376, 3.14292743], [1516719600000, 0.02868179, 0.02868216, 0.02844328, 0.02868213, 15.11572548], [1516719660000, 0.02844386, 0.02868212, 0.02844386, 0.02844575, 1.03973481], [1516719720000, 0.02844575, 0.02844578, 0.02844575, 0.02844578, 5.93813706], [1516719780000, 0.02844578, 0.02844578, 0.02844578, 0.02844578, 0.39055797], [1516719840000, 0.02844583, 0.02844583, 0.02844581, 0.02844581, 7.04849222], [1516719900000, 0.02867671, 0.02867671, 0.02844581, 0.02867645, 40.87366779], [1516720020000, 0.0286762, 0.02867625, 0.02854762, 0.02863326, 9.9775631], [1516720140000, 0.02863324, 0.02863324, 0.02863324, 0.02863324, 10.10279123], [1516720200000, 0.02863324, 0.02863324, 0.02844589, 0.02844589, 0.65147927], [1516720260000, 0.02844589, 0.02849006, 0.02844589, 0.0284459, 6.25013366], [1516720320000, 0.02844592, 0.02844592, 0.0284459, 0.0284459, 1.3], [1516720380000, 0.02849006, 0.02849006, 0.02837177, 0.02837178, 44.3311262], [1516720440000, 0.02837179, 0.0284459, 0.02837179, 0.02840001, 45.63398576], [1516720500000, 0.02840001, 0.02859983, 0.02828157, 0.02828157, 52.1420752], [1516720560000, 0.02828157, 0.02828157, 0.02828157, 0.02828157, 6.33351], [1516720620000, 0.02859392, 0.02859392, 0.02859392, 0.02859392, 0.09527124], [1516720680000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 0.8266714], [1516720740000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 1.44672078], [1516720800000, 0.02859385, 0.02859393, 0.02859382, 0.02859385, 13.12096996], [1516720860000, 0.02859385, 0.02859385, 0.02847952, 0.02847952, 5.8304263], [1516720920000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 2.36721749], [1516720980000, 0.0285, 0.0285, 0.0285, 0.0285, 0.06915129], [1516721040000, 0.0285, 0.02857125, 0.02845086, 0.02845086, 2.29507368], [1516721100000, 0.02859381, 0.02859382, 0.02859381, 0.02859382, 3.67335696], [1516721160000, 0.02859382, 0.02859382, 0.02845091, 0.02859382, 1.04917848], [1516721220000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 0.35741499], [1516721280000, 0.0285938, 0.02859382, 0.02845085, 0.02845085, 13.83033714], [1516721340000, 0.02847944, 0.02847944, 0.02839693, 0.02839694, 5.78781092], [1516721400000, 0.02859377, 0.02859382, 0.02859377, 0.02859381, 1.84555994], [1516721460000, 0.02859382, 0.02859382, 0.02859381, 0.02859382, 4.04562262], [1516721520000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 3.55258838], [1516721580000, 0.02856, 0.02856, 0.02856, 0.02856, 1.88995096], [1516721640000, 0.02856, 0.02859381, 0.02856, 0.02859381, 5.47489471], [1516721700000, 0.02859381, 0.02859381, 0.02847432, 0.02847432, 4.01796301], [1516721760000, 0.02847432, 0.02847432, 0.02847432, 0.02847432, 0.65250837], [1516721820000, 0.02859381, 0.02859382, 0.02859381, 0.02859382, 0.07743859], [1516721880000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 31.51588196], [1516721940000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 13.78549575], [1516722000000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 3.34055403], [1516722060000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 8.36812148], [1516722120000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 0.31431617], [1516722180000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 1.01938092], [1516722300000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 0.34972616], [1516722360000, 0.02859382, 0.02859382, 0.028475, 0.028475, 17.89964633], [1516722420000, 0.028475, 0.028475, 0.028475, 0.028475, 0.115], [1516722480000, 0.028475, 0.028475, 0.028475, 0.028475, 1.03218796], [1516722540000, 0.02847501, 0.02847501, 0.02847501, 0.02847501, 0.24735227], [1516722600000, 0.02847501, 0.02859382, 0.028475, 0.02859382, 3.15254644], [1516722720000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 4.06063069], [1516722780000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 21.55864001], [1516722840000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 0.61490431], [1516722900000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 13.29292009], [1516722960000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 13.6683582], [1516723020000, 0.02859382, 0.02859382, 0.02848001, 0.02848001, 8.14504754], [1516723080000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 0.94126524], [1516723140000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 0.43674962], [1516723200000, 0.02859382, 0.02859382, 0.02859382, 0.02859382, 0.53847029], [1516723260000, 0.02859649, 0.02865, 0.0285645, 0.0285645, 41.85504074], [1516723320000, 0.02865, 0.02865, 0.028475, 0.028475, 21.12408449], [1516723380000, 0.028475, 0.02864973, 0.02845081, 0.02864973, 1.84903859], [1516723440000, 0.0283933, 0.02864935, 0.0283933, 0.02863927, 2.65979775], [1516723500000, 0.02853907, 0.02853907, 0.02828157, 0.02847873, 22.49948749], [1516723560000, 0.02828157, 0.02845859, 0.02828156, 0.02845847, 57.12083563], [1516723620000, 0.02828157, 0.02845809, 0.02827655, 0.02827655, 15.45881894], [1516723680000, 0.02828157, 0.0284579, 0.02827655, 0.0284579, 10.65592339], [1516723740000, 0.02845781, 0.02845781, 0.02827657, 0.02827657, 3.87083797], [1516723800000, 0.02845706, 0.02845706, 0.02845705, 0.02845705, 0.59016083], [1516723860000, 0.02830007, 0.02830007, 0.02827656, 0.02830007, 10.72126471], [1516723920000, 0.02837163, 0.02837163, 0.02837163, 0.02837163, 0.03877112], [1516723980000, 0.02845691, 0.02845691, 0.02845691, 0.02845691, 22.72406863], [1516724040000, 0.0284569, 0.0284569, 0.02838575, 0.02845688, 1.50556084], [1516724100000, 0.02845684, 0.02845685, 0.02845684, 0.02845685, 11.56030761], [1516724160000, 0.02845685, 0.02845685, 0.02845685, 0.02845685, 0.27954184], [1516724220000, 0.02845689, 0.02851799, 0.02831486, 0.02831486, 33.5330366], [1516724280000, 0.02851099, 0.02855653, 0.02851098, 0.02855653, 1.2957439], [1516724340000, 0.02855647, 0.0285565, 0.02855647, 0.0285565, 1.74654796], [1516724400000, 0.02855624, 0.02855624, 0.02855619, 0.02855619, 1.17304657], [1516724520000, 0.02855602, 0.02855602, 0.02855602, 0.02855602, 1.0], [1516724580000, 0.0285561, 0.0285561, 0.02855598, 0.02855598, 17.8144587], [1516724640000, 0.02855594, 0.02855594, 0.02855594, 0.02855594, 0.05], [1516724700000, 0.02855591, 0.02855591, 0.02855591, 0.02855591, 1.14620761], [1516724760000, 0.02841321, 0.02841321, 0.02838581, 0.02838581, 0.52527388], [1516724820000, 0.02838593, 0.02853899, 0.0283, 0.02831462, 42.86933486], [1516724880000, 0.02831462, 0.02831462, 0.02827114, 0.028312, 8.43149717], [1516724940000, 0.028312, 0.02841014, 0.02827114, 0.02841014, 5.7375269], [1516725000000, 0.02841014, 0.02850798, 0.02841014, 0.02850798, 3.54667548], [1516725060000, 0.0282714, 0.0282714, 0.0282714, 0.0282714, 0.8], [1516725120000, 0.02849297, 0.02849297, 0.02828194, 0.02828332, 10.43094142], [1516725180000, 0.02849999, 0.02849999, 0.02828406, 0.02849999, 1.08771932], [1516725240000, 0.02849999, 0.02855603, 0.02845299, 0.02855598, 178.57698701], [1516725300000, 0.028554, 0.02855603, 0.028554, 0.02855603, 1.54203496], [1516725360000, 0.02855603, 0.02855603, 0.02855396, 0.02855396, 0.62809915], [1516725420000, 0.02855395, 0.02855398, 0.02855391, 0.02855397, 0.27894614], [1516725480000, 0.02855397, 0.02867618, 0.02853531, 0.02867617, 74.96679205], [1516725540000, 0.02866617, 0.02866617, 0.02853532, 0.02853532, 58.03616162], [1516725600000, 0.02853532, 0.02867618, 0.02835982, 0.02867618, 1.47666637], [1516725660000, 0.02867594, 0.02867602, 0.02839904, 0.02839904, 0.26973411], [1516725720000, 0.0283992, 0.02866999, 0.02835004, 0.02835004, 37.61242132], [1516725780000, 0.0284, 0.02855976, 0.0284, 0.02855976, 2.02585644], [1516725840000, 0.0285497, 0.02854971, 0.02839, 0.02839, 89.27099357], [1516725900000, 0.02839, 0.02849965, 0.02835, 0.02835, 69.65653762], [1516725960000, 0.02835, 0.02839, 0.02825, 0.02839, 38.42918874], [1516726020000, 0.02839, 0.02839, 0.02839, 0.02839, 4.63661392], [1516726080000, 0.02839, 0.02839, 0.02825, 0.02825, 1.00889419], [1516726140000, 0.0282501, 0.0282501, 0.0282501, 0.0282501, 0.62284383], [1516726200000, 0.0282501, 0.02853849, 0.0282501, 0.02825026, 1.63538807], [1516726260000, 0.02825038, 0.02825038, 0.02825038, 0.02825038, 1.01198402], [1516726320000, 0.02849983, 0.028538, 0.02825056, 0.02825056, 187.88265588], [1516726380000, 0.02825042, 0.02825056, 0.02824008, 0.0282501, 51.05809439], [1516726440000, 0.0282501, 0.02825056, 0.0282501, 0.02825056, 4.51491073], [1516726500000, 0.02825056, 0.02851497, 0.02825038, 0.0285149, 8.36525235], [1516726560000, 0.0284549, 0.0284549, 0.0284549, 0.0284549, 0.05], [1516726620000, 0.0283, 0.02843464, 0.0283, 0.02839471, 1.1196917], [1516726680000, 0.02839198, 0.02839198, 0.02823562, 0.02823562, 27.97069112], [1516726740000, 0.02823903, 0.02823903, 0.02823903, 0.02823903, 3.3481167], [1516726800000, 0.02823903, 0.02837, 0.02823903, 0.02836999, 0.38722395], [1516726860000, 0.02836998, 0.02837, 0.02836998, 0.02836998, 23.87935719], [1516726920000, 0.02823905, 0.02823905, 0.0282338, 0.0282338, 23.56033943], [1516726980000, 0.02823905, 0.02823905, 0.02823903, 0.02823903, 13.81267847], [1516727040000, 0.02823903, 0.02823903, 0.02822811, 0.02822811, 2.97102153], [1516727100000, 0.02822812, 0.02823902, 0.02822811, 0.02823901, 2.67286853], [1516727160000, 0.02823902, 0.02823902, 0.02823902, 0.02823902, 0.37811365], [1516727220000, 0.02823902, 0.02823903, 0.02823902, 0.02823903, 106.84058378], [1516727280000, 0.02833126, 0.02836997, 0.02823902, 0.02823902, 1.04932769], [1516727340000, 0.02823902, 0.02836997, 0.02823902, 0.02836997, 0.79949715], [1516727400000, 0.02836997, 0.02836997, 0.02833, 0.02833, 0.65586777], [1516727460000, 0.02833, 0.02833, 0.0283, 0.0283, 0.74267385], [1516727520000, 0.02831972, 0.02833, 0.0283, 0.02833, 2.15037312], [1516727580000, 0.02831972, 0.02831972, 0.02830001, 0.02830001, 2.70059502], [1516727640000, 0.02831972, 0.02831972, 0.02831972, 0.02831972, 9.97435729], [1516727700000, 0.02831972, 0.02831972, 0.028318, 0.028318, 1.98463172], [1516727760000, 0.02831972, 0.02831972, 0.02831972, 0.02831972, 5.18470411], [1516727820000, 0.02831972, 0.02831972, 0.02831971, 0.02831971, 3.33616233], [1516727880000, 0.02831972, 0.02831972, 0.02831971, 0.02831972, 8.38315233], [1516727940000, 0.02831972, 0.02831972, 0.028318, 0.02831972, 8.72421095], [1516728000000, 0.02831972, 0.02833, 0.02827, 0.02827, 12.55382146], [1516728060000, 0.02833, 0.02839434, 0.02823902, 0.02826999, 16.73441436], [1516728120000, 0.02826999, 0.02826999, 0.02823902, 0.02826999, 0.21368021], [1516728180000, 0.02826999, 0.02826999, 0.02826999, 0.02826999, 0.61214133], [1516728240000, 0.02826999, 0.02826999, 0.0282, 0.02821676, 2.42152329], [1516728300000, 0.02821676, 0.02826999, 0.02821, 0.02826998, 5.9092069], [1516728360000, 0.02821, 0.02831892, 0.02821, 0.02831892, 12.56372368], [1516728480000, 0.02829819, 0.02829819, 0.02821001, 0.02821001, 0.03896009], [1516728600000, 0.02821005, 0.02825, 0.02821005, 0.02825, 1.3539823], [1516728660000, 0.02825, 0.02831892, 0.02821001, 0.02821004, 22.19747441], [1516728720000, 0.02821004, 0.02825, 0.0281149, 0.0281149, 115.10564516], [1516728780000, 0.02811383, 0.02825, 0.02802076, 0.02802087, 42.03764939], [1516728840000, 0.0280209, 0.02803, 0.0280209, 0.02803, 1.0844975], [1516728900000, 0.02803, 0.02824934, 0.02803, 0.02803, 2.50530262], [1516728960000, 0.02824864, 0.02824864, 0.02824864, 0.02824864, 0.56993864], [1516729020000, 0.02824846, 0.02824846, 0.0281, 0.0281, 13.78752631], [1516729080000, 0.0281, 0.02823741, 0.02803004, 0.02823664, 7.48097614], [1516729140000, 0.02823664, 0.02823664, 0.02809622, 0.02809622, 4.04380993], [1516729200000, 0.02809621, 0.02809622, 0.02802088, 0.02802088, 24.85932668], [1516729260000, 0.02809621, 0.02809622, 0.02809621, 0.02809622, 35.88102886], [1516729320000, 0.02820823, 0.02820823, 0.02802076, 0.02802079, 4.5], [1516729380000, 0.0282362, 0.0282362, 0.02802076, 0.02808217, 2.79627512], [1516729440000, 0.02802076, 0.02823593, 0.02802076, 0.02823585, 1.90718469], [1516729500000, 0.02819, 0.02819, 0.02802076, 0.02802076, 59.88027598], [1516729560000, 0.02802076, 0.02818949, 0.02802076, 0.02802076, 2.91689961], [1516729620000, 0.02818945, 0.02818945, 0.02802076, 0.0281666, 1.22897538], [1516729680000, 0.02802577, 0.02816649, 0.02802076, 0.02802577, 3.19403986], [1516729740000, 0.02802578, 0.02816648, 0.02802577, 0.02816647, 4.80914742], [1516729800000, 0.02816647, 0.02816647, 0.02807425, 0.02807425, 9.17207817], [1516729860000, 0.02806025, 0.02815568, 0.027926, 0.02815565, 160.7412477], [1516729920000, 0.02815565, 0.02815565, 0.02815527, 0.02815527, 2.31787648], [1516729980000, 0.02815526, 0.02815526, 0.02815483, 0.02815483, 1.16975898], [1516730040000, 0.02813319, 0.02813319, 0.02813319, 0.02813319, 1.0541015], [1516730100000, 0.02813313, 0.02813317, 0.0279262, 0.02813317, 1.91048753], [1516730160000, 0.02813308, 0.02813308, 0.02813302, 0.02813302, 1.63391502], [1516730220000, 0.02813304, 0.02813304, 0.02795002, 0.02795002, 5.04013153], [1516730340000, 0.02799234, 0.02813301, 0.02795005, 0.02813301, 2.59131198], [1516730400000, 0.02795001, 0.02813295, 0.02795001, 0.02813295, 68.15623695], [1516730460000, 0.02813295, 0.02813295, 0.02795002, 0.028, 1.62152806], [1516730520000, 0.02813294, 0.02813295, 0.0279, 0.0279, 105.32166719], [1516730580000, 0.02795001, 0.02795002, 0.02786, 0.02795002, 58.18681388], [1516730640000, 0.02795002, 0.02795002, 0.02786, 0.02795002, 2.26404089], [1516730700000, 0.02795002, 0.02811993, 0.02795002, 0.02811989, 8.68063926], [1516730760000, 0.02790001, 0.02811991, 0.02786067, 0.028, 3.20843413], [1516730820000, 0.02809998, 0.02809998, 0.02809997, 0.02809997, 0.60985375], [1516730880000, 0.02805, 0.02809998, 0.02805, 0.02809998, 17.30957734], [1516730940000, 0.02805, 0.02809998, 0.02805, 0.02809998, 3.37270978], [1516731000000, 0.02809998, 0.02809998, 0.02809997, 0.02809998, 6.3081754], [1516731060000, 0.02809998, 0.02809998, 0.02809997, 0.02809998, 7.66779622], [1516731120000, 0.02809998, 0.02809998, 0.02805, 0.02805, 2.01909361], [1516731180000, 0.02809998, 0.02809998, 0.02809998, 0.02809998, 5.23085573], [1516731240000, 0.02809997, 0.02809998, 0.02801568, 0.02801568, 41.54831799], [1516731300000, 0.02801568, 0.02801569, 0.02786687, 0.02800001, 45.26291289], [1516731360000, 0.02800001, 0.02801569, 0.02786034, 0.02786034, 4.42315388], [1516731420000, 0.02801569, 0.02809998, 0.02801569, 0.02801569, 3.70143625], [1516731480000, 0.02809998, 0.02809998, 0.02809998, 0.02809998, 3.70680854], [1516731540000, 0.02809998, 0.02813319, 0.02809998, 0.02813319, 3.71142201], [1516731600000, 0.02813307, 0.02813319, 0.02803467, 0.02809998, 19.20625607], [1516731660000, 0.02813318, 0.02813319, 0.02809998, 0.02809998, 39.31126753], [1516731720000, 0.02813319, 0.02816646, 0.02809998, 0.02809998, 53.74577358], [1516731780000, 0.02809998, 0.02809998, 0.02809998, 0.02809998, 0.07117442], [1516731840000, 0.02809998, 0.02809998, 0.02809997, 0.02809997, 0.18109582], [1516731900000, 0.02802069, 0.02816647, 0.028014, 0.02816647, 42.11948548], [1516731960000, 0.02816647, 0.02816647, 0.02816647, 0.02816647, 0.1], [1516732020000, 0.02816646, 0.02816646, 0.02816646, 0.02816646, 0.9], [1516732080000, 0.02816646, 0.02816647, 0.02816646, 0.02816646, 0.77219264], [1516732140000, 0.02816647, 0.02816647, 0.02816646, 0.02816646, 0.83254809], [1516732200000, 0.02816645, 0.02816645, 0.028014, 0.028014, 94.59999418], [1516732260000, 0.02801401, 0.02801401, 0.028014, 0.028014, 0.11688356], [1516732320000, 0.028014, 0.028014, 0.028014, 0.028014, 0.71403785], [1516732380000, 0.028014, 0.02815895, 0.02799988, 0.02815895, 2.9348493], [1516732440000, 0.0281654, 0.02816545, 0.02816538, 0.02816542, 3.9], [1516732500000, 0.02816538, 0.02816538, 0.02805275, 0.02805275, 2.94845835], [1516732560000, 0.02802467, 0.02805275, 0.02802467, 0.02805275, 0.32898319], [1516732620000, 0.02805275, 0.02816513, 0.02805275, 0.02807046, 4.45502859], [1516732680000, 0.02813691, 0.02813691, 0.02802467, 0.02802467, 0.10417765], [1516732740000, 0.02802466, 0.02810899, 0.02802466, 0.02802466, 18.34940541], [1516732800000, 0.02810898, 0.02810899, 0.02810898, 0.02810899, 0.51575794], [1516732860000, 0.02810898, 0.028109, 0.02810898, 0.028109, 1.19713697], [1516732920000, 0.02807046, 0.02807046, 0.02807046, 0.02807046, 0.06421374], [1516733040000, 0.02807046, 0.02807046, 0.02807045, 0.02807045, 22.9244491], [1516733100000, 0.02807045, 0.02807046, 0.02799252, 0.02799252, 2.12636725], [1516733160000, 0.02799252, 0.02807045, 0.0279924, 0.02807045, 1.61232296], [1516733220000, 0.02807045, 0.02807045, 0.02803148, 0.02803148, 0.3139246], [1516733280000, 0.02805186, 0.02807045, 0.02801432, 0.02801432, 1.6510063], [1516733340000, 0.02795818, 0.0280704, 0.02795818, 0.0280704, 0.33366159], [1516733400000, 0.02807038, 0.02807038, 0.0279301, 0.0279301, 1.10812548], [1516733460000, 0.0279301, 0.0279301, 0.0279, 0.0279301, 1.87405143], [1516733520000, 0.0279301, 0.0279301, 0.0279301, 0.0279301, 9.12390113], [1516733580000, 0.0279301, 0.0279301, 0.02787395, 0.02787395, 1.05281625], [1516733640000, 0.027874, 0.0279301, 0.027874, 0.0279301, 46.56655991], [1516733700000, 0.0279301, 0.0279301, 0.02787396, 0.0279301, 5.13792261], [1516733760000, 0.0279301, 0.0279301, 0.02787393, 0.02787393, 0.69495559], [1516733820000, 0.02787393, 0.0279301, 0.02787393, 0.0279301, 9.40010348], [1516733880000, 0.0279301, 0.0279301, 0.02793009, 0.02793009, 18.29348507], [1516733940000, 0.02793009, 0.0279301, 0.02793009, 0.02793009, 44.33470447], [1516734000000, 0.02793009, 0.0279301, 0.02793009, 0.0279301, 2.52317006], [1516734060000, 0.0279301, 0.0279301, 0.02793009, 0.0279301, 5.2112638], [1516734120000, 0.02793009, 0.02807027, 0.02790297, 0.02794815, 1.35377466], [1516734180000, 0.02807027, 0.02807027, 0.02794815, 0.02807025, 1.02540712], [1516734240000, 0.028, 0.02807027, 0.02790303, 0.02807027, 2.0332065], [1516734300000, 0.02807027, 0.02807027, 0.027903, 0.02803421, 3.14236321], [1516734360000, 0.02803421, 0.02803421, 0.02803338, 0.02803338, 14.96381401], [1516734420000, 0.02803338, 0.02807028, 0.02790301, 0.02807027, 13.99261329], [1516734480000, 0.02807027, 0.02807028, 0.02807027, 0.02807028, 0.03947376], [1516734540000, 0.02807028, 0.02807028, 0.02807028, 0.02807028, 0.0394741], [1516734600000, 0.02807028, 0.02807028, 0.02805028, 0.02805028, 40.45851701], [1516734660000, 0.02807028, 0.02807028, 0.02805028, 0.02805028, 3.49314003], [1516734720000, 0.02804944, 0.02805028, 0.02804944, 0.02805028, 5.86653411], [1516734780000, 0.02805028, 0.02805028, 0.02793694, 0.02805028, 15.11621698], [1516734840000, 0.02805028, 0.02805028, 0.02805028, 0.02805028, 2.58381607], [1516734900000, 0.02805028, 0.02805028, 0.02804944, 0.02805028, 1.16943978], [1516734960000, 0.02805028, 0.02805028, 0.02805028, 0.02805028, 0.03946387], [1516735020000, 0.02805028, 0.02805028, 0.02805028, 0.02805028, 1.19143538], [1516735080000, 0.02807032, 0.02810898, 0.02804992, 0.02804992, 2.09531538], [1516735140000, 0.0280739, 0.02810899, 0.02804992, 0.02810899, 12.53467995], [1516735200000, 0.02810899, 0.02810899, 0.02810899, 0.02810899, 0.71151588], [1516735260000, 0.02810899, 0.02810899, 0.02810899, 0.02810899, 0.57507222], [1516735320000, 0.02810897, 0.02810898, 0.02809992, 0.02809992, 4.33403903], [1516735380000, 0.02808003, 0.02808003, 0.02803608, 0.02808, 3.142473], [1516735440000, 0.02808, 0.02808002, 0.02793701, 0.02800001, 5.97503608], [1516735500000, 0.02800001, 0.02808001, 0.02800001, 0.02808001, 1.96617729], [1516735560000, 0.02793704, 0.02793704, 0.02793703, 0.02793703, 2.44480374], [1516735620000, 0.02808, 0.02808, 0.02793705, 0.02793705, 1.26197034], [1516735680000, 0.02793705, 0.02807998, 0.02793705, 0.02807998, 0.81456379], [1516735740000, 0.02807995, 0.02807995, 0.02793706, 0.02807994, 7.91507536], [1516735800000, 0.02807993, 0.02807993, 0.02793705, 0.02793705, 6.88477616], [1516735860000, 0.02793705, 0.0280799, 0.02793704, 0.02793704, 4.01764462], [1516735920000, 0.02793704, 0.02793705, 0.02793704, 0.02793705, 2.72160892], [1516735980000, 0.02807993, 0.02807993, 0.02807992, 0.02807992, 0.13440773], [1516736040000, 0.02800848, 0.02807992, 0.02800848, 0.02807992, 0.82156123], [1516736100000, 0.02807992, 0.02807992, 0.02793707, 0.02793707, 1.28230365], [1516736160000, 0.02807992, 0.02807992, 0.02793707, 0.02793707, 1.7], [1516736220000, 0.02807991, 0.02807992, 0.02807987, 0.02807987, 0.6], [1516736280000, 0.02793711, 0.02793712, 0.0279371, 0.0279371, 2.01265822], [1516736340000, 0.02794, 0.02807986, 0.0279371, 0.02807986, 3.04007686], [1516736400000, 0.0279371, 0.02807984, 0.0279371, 0.02807984, 24.99121826], [1516736460000, 0.0280625, 0.02807986, 0.0280625, 0.02807982, 6.01638402], [1516736520000, 0.02807981, 0.02807981, 0.02807981, 0.02807981, 1.50938659], [1516736580000, 0.02807981, 0.02807981, 0.02807981, 0.02807981, 0.24], [1516736640000, 0.02807981, 0.028109, 0.02805173, 0.02807981, 81.75887496], [1516736700000, 0.02816647, 0.02816647, 0.02805796, 0.02805796, 10.23031526], [1516736760000, 0.02804886, 0.02804886, 0.02793802, 0.02793802, 3.03105347], [1516736820000, 0.02804886, 0.02804886, 0.02804886, 0.02804886, 1.07426096], [1516736880000, 0.02804886, 0.02807955, 0.02804886, 0.02807955, 8.93085641], [1516736940000, 0.02809998, 0.02809998, 0.02809993, 0.02809993, 8.16171176], [1516737000000, 0.02793793, 0.02809998, 0.02793793, 0.02809996, 1.46723974], [1516737060000, 0.02809995, 0.02809995, 0.02801453, 0.02801453, 1.14333304], [1516737120000, 0.0280999, 0.0280999, 0.0279379, 0.0279379, 5.06597847], [1516737180000, 0.02793791, 0.02806742, 0.02790304, 0.02806742, 3.81937337], [1516737240000, 0.02790303, 0.0280674, 0.02790299, 0.027903, 44.77257715], [1516737300000, 0.02790301, 0.02806735, 0.027903, 0.027903, 80.60749072], [1516737360000, 0.02806729, 0.02806731, 0.02796909, 0.02806726, 1.32201517], [1516737420000, 0.02806724, 0.02806724, 0.0279, 0.0279, 22.34568121], [1516737480000, 0.02806718, 0.02806719, 0.0279, 0.028055, 9.15705742], [1516737540000, 0.0279, 0.02805697, 0.0279, 0.02805, 11.75243569], [1516737600000, 0.02805, 0.02806338, 0.02804999, 0.02804999, 4.01301246], [1516737660000, 0.028, 0.028, 0.028, 0.028, 23.30101117], [1516737720000, 0.028, 0.028, 0.028, 0.028, 1.83951623], [1516737780000, 0.028, 0.028, 0.02790007, 0.028, 1.09576623], [1516737840000, 0.028, 0.028, 0.028, 0.028, 1.19712012], [1516737900000, 0.028, 0.028, 0.0279001, 0.0279001, 1.0], [1516737960000, 0.02799, 0.02799, 0.02790008, 0.02799, 6.26275303], [1516738020000, 0.02798999, 0.02799, 0.02798999, 0.02799, 2.65439085], [1516738080000, 0.02799, 0.02799, 0.02799, 0.02799, 1.23881586], [1516738140000, 0.02799, 0.02799, 0.02799, 0.02799, 2.25966745], [1516738200000, 0.02799, 0.02799, 0.02790007, 0.02799, 5.82963526], [1516738260000, 0.02790007, 0.02804997, 0.02790007, 0.02804995, 11.06985258], [1516738320000, 0.02804995, 0.02804995, 0.0279671, 0.02796752, 13.58608602], [1516738380000, 0.02804991, 0.02804991, 0.02804991, 0.02804991, 1.34], [1516738440000, 0.02804995, 0.02804995, 0.02790005, 0.02804991, 12.33463695], [1516738500000, 0.02804991, 0.02804991, 0.02790005, 0.02790005, 8.28394378], [1516738560000, 0.02790005, 0.02790005, 0.02790004, 0.02790004, 1.55578224], [1516738620000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 3.41746744], [1516738680000, 0.02790004, 0.02790005, 0.02787242, 0.02790005, 3.59448088], [1516738740000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 2.98406744], [1516738800000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 0.95859986], [1516738860000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 3.85636511], [1516738920000, 0.02790005, 0.02790005, 0.02790004, 0.02790005, 3.51673298], [1516738980000, 0.02790005, 0.02790005, 0.02787238, 0.02790004, 7.88496088], [1516739040000, 0.02787238, 0.02790004, 0.02784962, 0.02790004, 6.31921491], [1516739100000, 0.02788379, 0.02790005, 0.02787238, 0.02790005, 0.89610524], [1516739160000, 0.02790005, 0.02790005, 0.02787239, 0.02790005, 3.70955526], [1516739220000, 0.02790005, 0.02790005, 0.02787238, 0.02787238, 1.60788565], [1516739280000, 0.02787238, 0.02790005, 0.02787238, 0.02790005, 0.07898174], [1516739340000, 0.02787238, 0.02790004, 0.02784962, 0.02790004, 2.04387282], [1516739400000, 0.02790004, 0.02790004, 0.02790004, 0.02790004, 1.14647203], [1516739460000, 0.02790004, 0.02790004, 0.02790004, 0.02790004, 1.5], [1516739520000, 0.02790004, 0.02790004, 0.02790004, 0.02790004, 2.7], [1516739580000, 0.02790004, 0.02790004, 0.02790004, 0.02790004, 1.03655911], [1516739640000, 0.02790004, 0.02790005, 0.02790004, 0.02790005, 4.98922054], [1516739700000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 0.30657186], [1516739760000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 5.82752086], [1516739820000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 0.03951636], [1516739880000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 18.88462325], [1516739940000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 7.05812739], [1516740000000, 0.02790005, 0.02790005, 0.02790004, 0.02790005, 43.49382241], [1516740060000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 0.07903272], [1516740120000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 7.16022996], [1516740180000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 2.83213447], [1516740240000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 0.60078791], [1516740300000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 0.72881402], [1516740360000, 0.02790005, 0.02790005, 0.02790004, 0.02790005, 5.46309319], [1516740420000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 24.09587348], [1516740480000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 0.46952827], [1516740540000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 0.4724638], [1516740600000, 0.02790004, 0.02790005, 0.02790003, 0.02790005, 3.74733896], [1516740660000, 0.02790004, 0.02790005, 0.02790003, 0.02790005, 2.83321459], [1516740720000, 0.02790005, 0.02790005, 0.02790004, 0.02790005, 3.89600307], [1516740780000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 1.6425101], [1516740840000, 0.02790005, 0.02790005, 0.02790004, 0.02790004, 3.16574945], [1516740900000, 0.02790005, 0.02790005, 0.02781837, 0.02781837, 4.24099342], [1516740960000, 0.02782143, 0.02790005, 0.02782143, 0.02790005, 7.93449472], [1516741020000, 0.02790005, 0.02790005, 0.02790005, 0.02790005, 0.61583737], [1516741080000, 0.02790005, 0.02790005, 0.02790004, 0.02790004, 0.51695918], [1516741140000, 0.02803795, 0.02803795, 0.0280379, 0.0280379, 1.8112448], [1516741200000, 0.02803794, 0.02803794, 0.02790006, 0.02790006, 8.86498501], [1516741260000, 0.02790007, 0.02803789, 0.02790004, 0.02803789, 2.57014347], [1516741320000, 0.02803788, 0.02803788, 0.02790006, 0.02790006, 4.99118715], [1516741380000, 0.02790006, 0.02790006, 0.02790005, 0.02790006, 2.61192943], [1516741440000, 0.02790006, 0.02790006, 0.02790006, 0.02790006, 1.09542803], [1516741500000, 0.02790005, 0.02790006, 0.02790005, 0.02790006, 13.06320166], [1516741560000, 0.02790006, 0.02790006, 0.02790006, 0.02790006, 21.73505856], [1516741620000, 0.02790006, 0.02790006, 0.02790006, 0.02790006, 12.23882943], [1516741680000, 0.02790006, 0.02790006, 0.02790006, 0.02790006, 10.64554104], [1516741740000, 0.02790006, 0.02790006, 0.02790006, 0.02790006, 2.61808414], [1516741800000, 0.02790006, 0.02790006, 0.02790006, 0.02790006, 10.04425341], [1516741860000, 0.02790006, 0.02790006, 0.02790006, 0.02790006, 5.25584283], [1516741920000, 0.02790006, 0.02790006, 0.02790006, 0.02790006, 13.88227859], [1516741980000, 0.027969, 0.027969, 0.02790005, 0.027969, 13.21349615], [1516742040000, 0.027969, 0.027969, 0.02790006, 0.02796899, 1.09804398], [1516742100000, 0.02796899, 0.027972, 0.02790004, 0.027972, 6.04166764], [1516742160000, 0.02797199, 0.027972, 0.02797199, 0.027972, 3.21876832], [1516742220000, 0.02797199, 0.02804991, 0.02790008, 0.02804991, 13.7514598], [1516742280000, 0.02804991, 0.02804991, 0.02804991, 0.02804991, 0.21028269], [1516742340000, 0.02790033, 0.02790033, 0.02790033, 0.02790033, 5.0], [1516742400000, 0.0280499, 0.02804998, 0.0280499, 0.02804998, 0.82145629], [1516742460000, 0.02804998, 0.02813, 0.0280499, 0.0280499, 7.01600299], [1516742580000, 0.02812979, 0.02812984, 0.02812979, 0.0281298, 6.38649314], [1516742640000, 0.0281298, 0.02812983, 0.0281298, 0.0281298, 7.75549126], [1516742700000, 0.02809457, 0.02809457, 0.02809456, 0.02809457, 0.96760282], [1516742760000, 0.02809456, 0.02809457, 0.02804995, 0.02804995, 8.74524419], [1516742820000, 0.02804994, 0.02804995, 0.02804994, 0.02804995, 7.74767109], [1516742880000, 0.02809457, 0.02813, 0.02804995, 0.02804995, 1.95305483], [1516742940000, 0.02813, 0.02813, 0.02813, 0.02813, 12.864583], [1516743000000, 0.02813, 0.02813, 0.02813, 0.02813, 2.09891887], [1516743060000, 0.02813, 0.02813, 0.02804993, 0.02804993, 1.6170708], [1516743120000, 0.02813, 0.02813, 0.02813, 0.02813, 10.68618475], [1516743180000, 0.02813, 0.02813, 0.02813, 0.02813, 3.80819568], [1516743240000, 0.02813, 0.02813, 0.02805004, 0.02813, 5.26941771], [1516743300000, 0.02813, 0.02813, 0.02813, 0.02813, 0.07860984], [1516743360000, 0.02812999, 0.02812999, 0.02805006, 0.02812998, 12.23892349], [1516743420000, 0.02812999, 0.02814999, 0.02812999, 0.02814999, 3.89720183], [1516743480000, 0.02814999, 0.02814999, 0.02806124, 0.02806124, 1.84076854], [1516743540000, 0.02814997, 0.02814999, 0.02814997, 0.02814999, 17.49842342], [1516743600000, 0.02814999, 0.02814999, 0.02814999, 0.02814999, 0.6], [1516743660000, 0.02814999, 0.02814999, 0.02814999, 0.02814999, 0.17932562], [1516743720000, 0.02814999, 0.02814999, 0.02814998, 0.02814999, 0.69082164], [1516743780000, 0.02814998, 0.02814998, 0.02806131, 0.02806131, 3.23499642], [1516743840000, 0.02814998, 0.02814999, 0.02814998, 0.02814999, 1.012921], [1516743900000, 0.02814999, 0.02814999, 0.02814998, 0.02814998, 4.26731841], [1516743960000, 0.02814998, 0.02814998, 0.0281057, 0.0281057, 1.30919214], [1516744020000, 0.02814998, 0.02814998, 0.0281057, 0.02814998, 1.80016367], [1516744080000, 0.02814998, 0.02814999, 0.02814998, 0.02814998, 10.42345561], [1516744140000, 0.02814998, 0.02814999, 0.02812433, 0.02812433, 14.19085861], [1516744200000, 0.02814999, 0.02814999, 0.02814999, 0.02814999, 0.35523978], [1516744260000, 0.02814999, 0.02814999, 0.02814999, 0.02814999, 0.42336491], [1516744320000, 0.02814999, 0.02814999, 0.02814999, 0.02814999, 7.0331554], [1516744380000, 0.02814999, 0.02814999, 0.02812434, 0.02814999, 15.06129903], [1516744440000, 0.02813716, 0.02813716, 0.02813716, 0.02813716, 0.11758779], [1516744500000, 0.02813716, 0.02813716, 0.02813716, 0.02813716, 1.01202777], [1516744560000, 0.02813716, 0.02813716, 0.02813716, 0.02813716, 0.07838654], [1516744620000, 0.02813716, 0.02813716, 0.02813, 0.02813, 0.11757957], [1516744680000, 0.02813716, 0.02814999, 0.02813716, 0.02814999, 1.51953979], [1516744740000, 0.02814999, 0.02814999, 0.02814999, 0.02814999, 0.07838622], [1516744800000, 0.02813, 0.02814999, 0.02813, 0.02814999, 2.00833469], [1516744860000, 0.02814999, 0.02814999, 0.02813001, 0.02814999, 46.01498622], [1516744920000, 0.02814999, 0.02814999, 0.02813001, 0.02814999, 2.54922252], [1516744980000, 0.02814999, 0.02814999, 0.02813, 0.02814999, 20.1512296], [1516745040000, 0.02814999, 0.02814999, 0.02813, 0.02813, 1.88168129], [1516745100000, 0.02813, 0.02814999, 0.02813, 0.02814999, 0.66352884], [1516745160000, 0.02814999, 0.02814999, 0.02814, 0.02814999, 74.76798304], [1516745220000, 0.02814999, 0.02814999, 0.02814501, 0.02814999, 102.74598933], [1516745280000, 0.02814999, 0.02814999, 0.02814999, 0.02814999, 1.8501113], [1516745340000, 0.02814999, 0.02814999, 0.02814999, 0.02814999, 0.07834444], [1516745400000, 0.02814999, 0.02814999, 0.02814999, 0.02814999, 63.71718132], [1516745460000, 0.02814999, 0.02825, 0.02814999, 0.02825, 34.14586488], [1516745520000, 0.02824997, 0.02829999, 0.02815004, 0.02829998, 5.65840312], [1516745580000, 0.02829998, 0.02837211, 0.02815004, 0.02815004, 7.16817811], [1516745640000, 0.0282151, 0.02834898, 0.0282151, 0.02834898, 5.08495978], [1516745700000, 0.02834898, 0.02838982, 0.02834372, 0.02838974, 86.46911842], [1516745760000, 0.02815173, 0.02815173, 0.02815173, 0.02815173, 2.68786008], [1516745820000, 0.02838953, 0.02838953, 0.0282155, 0.0282155, 1.61047921], [1516745880000, 0.0282155, 0.02838952, 0.0282155, 0.0282155, 1.02409134], [1516745940000, 0.02830211, 0.02830211, 0.0282155, 0.0283021, 1.55676124], [1516746000000, 0.0283021, 0.02830211, 0.0283021, 0.0283021, 5.35374553], [1516746060000, 0.0283021, 0.02838989, 0.02821549, 0.02837755, 5.14578453], [1516746120000, 0.02838988, 0.0283899, 0.02833759, 0.02838987, 4.02814778], [1516746180000, 0.0282155, 0.02838986, 0.0282155, 0.02838982, 2.18169584], [1516746240000, 0.0283898, 0.0283898, 0.0283898, 0.0283898, 0.18086311], [1516746300000, 0.0283898, 0.02838981, 0.0283898, 0.02838981, 0.35223918], [1516746360000, 0.02838662, 0.02838981, 0.02838661, 0.02838661, 0.83917551], [1516746420000, 0.02838661, 0.0285, 0.0283866, 0.0285, 210.35383901], [1516746480000, 0.02838659, 0.02838659, 0.0282156, 0.02829383, 7.67160648], [1516746540000, 0.0283866, 0.0283866, 0.02821604, 0.02821604, 4.09121378], [1516746600000, 0.02821633, 0.0282864, 0.02821633, 0.0282864, 1.94149283], [1516746660000, 0.02836577, 0.02836577, 0.0282864, 0.02828655, 4.21849368], [1516746720000, 0.02836575, 0.02838659, 0.0282865, 0.0282865, 31.96970743], [1516746780000, 0.02838659, 0.02838659, 0.02828651, 0.02828651, 26.38705908], [1516746840000, 0.02828651, 0.02849921, 0.02828651, 0.02849917, 52.9010754], [1516746960000, 0.0283, 0.0283, 0.0283, 0.0283, 0.5], [1516747080000, 0.0284415, 0.02849975, 0.0284415, 0.02849975, 1.82739443], [1516747140000, 0.0284415, 0.02849986, 0.02830376, 0.02849986, 5.9753573], [1516747200000, 0.02848915, 0.02848915, 0.02848915, 0.02848915, 1.18784479], [1516747260000, 0.02848915, 0.02848915, 0.02830084, 0.02830084, 27.79535887], [1516747320000, 0.0284891, 0.0284891, 0.02848905, 0.02848905, 37.17623963], [1516747440000, 0.02849971, 0.02849971, 0.02849971, 0.02849971, 0.03889714], [1516747500000, 0.02849971, 0.0285, 0.02834456, 0.0285, 6.00885233], [1516747560000, 0.0285, 0.0285, 0.02849971, 0.02849971, 0.33183179], [1516747620000, 0.02849965, 0.0285, 0.02842222, 0.02849978, 17.90565716], [1516747680000, 0.02849978, 0.02849978, 0.02849978, 0.02849978, 0.03889483], [1516747740000, 0.02849978, 0.02849978, 0.02849, 0.02849, 0.07778924], [1516747800000, 0.02849978, 0.02849978, 0.02836006, 0.02849799, 3.05804589], [1516747860000, 0.028498, 0.02849978, 0.02842001, 0.02842001, 14.64880611], [1516747920000, 0.02849, 0.02849979, 0.02842001, 0.02849979, 68.58711223], [1516747980000, 0.02849979, 0.0285, 0.02842001, 0.0285, 0.20227266], [1516748040000, 0.02849999, 0.02849999, 0.02842001, 0.02842001, 14.28121391], [1516748100000, 0.02849997, 0.02849999, 0.02842002, 0.02849999, 8.04303415], [1516748160000, 0.02849999, 0.0285, 0.02849998, 0.02849999, 1.20675548], [1516748220000, 0.02849999, 0.0285, 0.02849998, 0.0285, 1.46385747], [1516748280000, 0.0285, 0.02851574, 0.0285, 0.02851574, 29.46586573], [1516748340000, 0.02851574, 0.02851574, 0.02849998, 0.02849998, 5.87266236], [1516748400000, 0.02851574, 0.02851574, 0.02849998, 0.02851574, 13.29238446], [1516748460000, 0.02852721, 0.02852721, 0.02849998, 0.02849998, 8.62395409], [1516748520000, 0.02849999, 0.02852721, 0.02849998, 0.02851, 7.58165075], [1516748580000, 0.02852721, 0.02852849, 0.02851, 0.02852849, 4.37770891], [1516748640000, 0.02851, 0.02852849, 0.02851, 0.02852849, 6.24884967], [1516748700000, 0.02852849, 0.028538, 0.02851, 0.02851, 2.91361018], [1516748760000, 0.028538, 0.028538, 0.02849999, 0.0285, 2.60536591], [1516748880000, 0.02850001, 0.02853799, 0.02849998, 0.02853798, 1.64975316], [1516748940000, 0.02849998, 0.02853798, 0.02849998, 0.02853797, 1.08935272], [1516749000000, 0.02853799, 0.028538, 0.02853799, 0.028538, 0.07736868], [1516749060000, 0.028538, 0.028538, 0.02849998, 0.028538, 4.11418498], [1516749120000, 0.0285, 0.0285, 0.0285, 0.0285, 0.077369], [1516749180000, 0.0285, 0.028538, 0.02849998, 0.028538, 0.29406423], [1516749240000, 0.028538, 0.028538, 0.0285248, 0.0285248, 0.11977558], [1516749300000, 0.02852478, 0.02852479, 0.02844868, 0.02852479, 3.13075994], [1516749360000, 0.02844868, 0.02853799, 0.02841448, 0.02853798, 58.70212138], [1516749420000, 0.02853798, 0.0285482, 0.02840261, 0.0285482, 32.17164703], [1516749480000, 0.0285482, 0.02855, 0.0285482, 0.02855, 8.25680471], [1516749540000, 0.02855, 0.02862972, 0.02855, 0.02862972, 15.84653704], [1516749600000, 0.02862972, 0.02868698, 0.02842486, 0.02862964, 69.01291664], [1516749660000, 0.02862964, 0.0286869, 0.02855169, 0.02864849, 3.58021385], [1516749720000, 0.02844217, 0.02868687, 0.02844217, 0.02844278, 36.38575264], [1516749780000, 0.02844288, 0.02868614, 0.02844288, 0.02868604, 2.66350914], [1516749840000, 0.02845, 0.0286856, 0.02845, 0.02846013, 2.34437949], [1516749900000, 0.02847, 0.02847, 0.02847, 0.02847, 2.81744862], [1516749960000, 0.0285, 0.0285, 0.0285, 0.0285, 2.34728384], [1516750020000, 0.0285, 0.0285, 0.02848, 0.02848, 1.88340474], [1516750080000, 0.02848, 0.02848008, 0.02848, 0.02848008, 0.15041449], [1516750140000, 0.02868514, 0.02868515, 0.02848004, 0.02868507, 3.260735], [1516750200000, 0.02868511, 0.02868514, 0.02868511, 0.02868511, 2.09167214], [1516750260000, 0.02868494, 0.02868507, 0.02848054, 0.02848054, 18.8868011], [1516750320000, 0.02868507, 0.02868515, 0.02868507, 0.02868515, 0.32916996], [1516750380000, 0.02868514, 0.02868515, 0.02868514, 0.02868515, 3.53247234], [1516750440000, 0.02868514, 0.02868514, 0.02868514, 0.02868514, 0.1065741], [1516750500000, 0.02868514, 0.02868514, 0.02858515, 0.02858515, 2.30260017], [1516750560000, 0.02867, 0.02867, 0.02867, 0.02867, 0.06844209], [1516750620000, 0.02867, 0.02868515, 0.02867, 0.02868515, 0.67199548], [1516750800000, 0.02868507, 0.02868509, 0.02858515, 0.02858515, 2.55420805], [1516750860000, 0.0286351, 0.0286351, 0.02858229, 0.02858229, 12.1588339], [1516750920000, 0.02858229, 0.02858515, 0.02840133, 0.02840133, 154.0771462], [1516750980000, 0.02858515, 0.02858515, 0.02858515, 0.02858515, 0.26745655], [1516751040000, 0.02858494, 0.02858494, 0.02858494, 0.02858494, 0.08174803], [1516751100000, 0.02858442, 0.02858443, 0.02858435, 0.02858435, 26.41777636], [1516751160000, 0.02840426, 0.02840447, 0.02840121, 0.02840447, 4.55799945], [1516751280000, 0.02840711, 0.02856995, 0.02835048, 0.02856995, 51.19591603], [1516751460000, 0.02835, 0.0285682, 0.02835, 0.0285682, 1.76008044], [1516751520000, 0.02856671, 0.02856671, 0.02856671, 0.02856671, 0.03481379], [1516751640000, 0.02830019, 0.02830033, 0.02830019, 0.02830032, 5.01934336], [1516751700000, 0.02856052, 0.02856204, 0.0285591, 0.02856204, 1.40053323], [1516751760000, 0.02832243, 0.02832243, 0.02830001, 0.02830001, 3.57197797], [1516751820000, 0.02843184, 0.02843184, 0.02843184, 0.02843184, 0.28771205], [1516751880000, 0.0284318, 0.02843183, 0.0284318, 0.02843183, 0.54843745], [1516751940000, 0.02843184, 0.02843184, 0.02843184, 0.02843184, 0.24210681], [1516752000000, 0.02843183, 0.02843184, 0.0284318, 0.0284318, 3.64745987], [1516752060000, 0.0284318, 0.0284318, 0.0284318, 0.0284318, 1.27455416], [1516752120000, 0.02843181, 0.02843183, 0.0284318, 0.02843181, 17.337182], [1516752180000, 0.02843181, 0.02843181, 0.0284318, 0.02843181, 5.15570066], [1516752240000, 0.0284318, 0.02843181, 0.0284318, 0.0284318, 7.26442942], [1516752300000, 0.0284318, 0.02843181, 0.0284318, 0.02843181, 4.57285075], [1516752360000, 0.02843181, 0.02843184, 0.0284318, 0.0284318, 76.27610193], [1516752420000, 0.0284318, 0.0284318, 0.0284318, 0.0284318, 5.20541382], [1516752480000, 0.0284318, 0.02843181, 0.02833236, 0.02843181, 24.68665567], [1516752540000, 0.02843181, 0.02843184, 0.0284318, 0.0284318, 80.37021104], [1516752600000, 0.0284318, 0.02843184, 0.0284318, 0.0284318, 8.40531124], [1516752660000, 0.02843182, 0.02843184, 0.02843181, 0.02843182, 25.47273752], [1516752720000, 0.0284318, 0.0284318, 0.02832945, 0.02832945, 0.29493135], [1516752780000, 0.02832945, 0.02832945, 0.02830001, 0.02830001, 11.32582355], [1516752840000, 0.02843181, 0.02843181, 0.02843179, 0.02843179, 1.21877363], [1516752900000, 0.02843178, 0.02843178, 0.02843178, 0.02843178, 0.09375037], [1516752960000, 0.02830001, 0.02830001, 0.02820029, 0.0282202, 18.81590266], [1516753020000, 0.0282802, 0.02836129, 0.0282802, 0.02836129, 4.43621744], [1516753080000, 0.02836128, 0.02836129, 0.02836128, 0.02836128, 1.15608047], [1516753140000, 0.02836127, 0.02836127, 0.02836127, 0.02836127, 1.26248053], [1516753200000, 0.0282802, 0.02836127, 0.0282202, 0.02836127, 13.64433075], [1516753260000, 0.02836128, 0.02836128, 0.02810003, 0.0282, 52.99109217], [1516753320000, 0.0282, 0.0282, 0.0282, 0.0282, 4.01677838], [1516753380000, 0.0282, 0.0282, 0.0282, 0.0282, 0.71843404], [1516753440000, 0.0282, 0.0282, 0.0282, 0.0282, 17.01622853], [1516753500000, 0.0282, 0.0282, 0.02819999, 0.02819999, 9.8405198], [1516753560000, 0.02819999, 0.0282, 0.02809678, 0.02809678, 5.77967948], [1516753620000, 0.0282, 0.0282, 0.0282, 0.0282, 0.45570088], [1516753680000, 0.0282, 0.0282, 0.0282, 0.0282, 69.29701035], [1516753740000, 0.0282, 0.0282, 0.0282, 0.0282, 31.64770862], [1516753800000, 0.02820001, 0.02820001, 0.02809679, 0.02820001, 18.43849634], [1516753860000, 0.02820001, 0.02820001, 0.02820001, 0.02820001, 0.3992395], [1516753920000, 0.0282, 0.02820001, 0.02819999, 0.02820001, 21.30821822], [1516753980000, 0.0282, 0.0282, 0.02819999, 0.02819999, 0.68541422], [1516754040000, 0.0282, 0.0282, 0.02819999, 0.02819999, 1.43281607], [1516754100000, 0.0282, 0.02820001, 0.02819999, 0.02820001, 9.29690114], [1516754160000, 0.02820001, 0.02820001, 0.02820001, 0.02820001, 36.6213673], [1516754220000, 0.02820001, 0.02835975, 0.02820001, 0.02835975, 47.1928718], [1516754340000, 0.02835973, 0.02835973, 0.02835973, 0.02835973, 0.02568615], [1516754400000, 0.0281284, 0.02836125, 0.0281284, 0.02836125, 1.30522606], [1516754460000, 0.02812872, 0.02836097, 0.02812863, 0.02836047, 3.06729839], [1516754520000, 0.02821773, 0.02821773, 0.02821773, 0.02821773, 0.03907118], [1516754580000, 0.02821773, 0.02836034, 0.02821773, 0.02836027, 0.2871204], [1516754640000, 0.02821773, 0.02835013, 0.02821773, 0.02835013, 0.14814236], [1516754700000, 0.02821773, 0.0283401, 0.02821773, 0.02821773, 4.8471483], [1516754760000, 0.02821773, 0.02834004, 0.02821773, 0.02834, 9.66434236], [1516754820000, 0.02834, 0.02834, 0.02812864, 0.02833987, 54.23169819], [1516754880000, 0.0283393, 0.02834001, 0.0283393, 0.02834001, 37.14364853], [1516754940000, 0.02833999, 0.02834, 0.02833999, 0.02834, 0.24862064], [1516755000000, 0.02834, 0.02834, 0.0281287, 0.0282222, 3.1731498], [1516755060000, 0.0282222, 0.02833986, 0.02812871, 0.02812872, 1.28501175], [1516755120000, 0.02810914, 0.02810914, 0.02810911, 0.02810911, 10.0], [1516755180000, 0.02833963, 0.02833963, 0.02833957, 0.02833957, 0.22746204], [1516755240000, 0.0283396, 0.0283396, 0.0283396, 0.0283396, 0.031], [1516755300000, 0.02833984, 0.02833984, 0.02810907, 0.02810907, 2.05947974], [1516755360000, 0.0283294, 0.02833935, 0.02810904, 0.02810904, 6.92795668], [1516755420000, 0.02811069, 0.02832522, 0.02810904, 0.02832522, 2.22341311], [1516755480000, 0.02832481, 0.02832481, 0.02832476, 0.02832476, 0.47275711], [1516755540000, 0.02832434, 0.02832434, 0.02832432, 0.02832432, 0.9], [1516755600000, 0.02832431, 0.02832431, 0.02810904, 0.02810904, 6.25769449], [1516755660000, 0.02810908, 0.02810908, 0.02805743, 0.02806144, 43.06612017], [1516755720000, 0.02810904, 0.02810904, 0.02805743, 0.02805743, 0.56601766], [1516755780000, 0.02805743, 0.02810903, 0.02805743, 0.02805743, 18.55999681], [1516755900000, 0.02805743, 0.02812872, 0.02805743, 0.02805743, 10.21341203], [1516755960000, 0.02812871, 0.02828259, 0.02812871, 0.02828259, 0.65800726], [1516756020000, 0.02828213, 0.02828213, 0.02828213, 0.02828213, 0.05361932], [1516756200000, 0.02828074, 0.02828074, 0.02828066, 0.02828066, 3.63090616], [1516756260000, 0.02805747, 0.02827889, 0.02805743, 0.02805743, 4.25527353], [1516756500000, 0.02827827, 0.0282783, 0.02827827, 0.0282783, 9.47494335], [1516756620000, 0.02805779, 0.02805779, 0.02805776, 0.02805776, 1.0], [1516756800000, 0.02827791, 0.02827791, 0.02805776, 0.02805788, 1.75989227], [1516756860000, 0.02805788, 0.02827769, 0.02805788, 0.02827765, 4.08830546], [1516756920000, 0.02827755, 0.02827758, 0.02827755, 0.02827758, 2.0], [1516756980000, 0.02827725, 0.02827725, 0.02827725, 0.02827725, 0.17637648], [1516757040000, 0.02827715, 0.02827716, 0.02805813, 0.02805816, 4.18241232], [1516757100000, 0.02805816, 0.02805816, 0.02805816, 0.02805816, 1.73055306], [1516757220000, 0.02805824, 0.02805824, 0.02805824, 0.02805824, 1.5], [1516757280000, 0.02827675, 0.02827691, 0.02805831, 0.02805831, 1.10205367], [1516757340000, 0.02826863, 0.02826863, 0.02826863, 0.02826863, 3.15702021], [1516757400000, 0.02826863, 0.02827759, 0.02826863, 0.02827759, 0.32422241], [1516757580000, 0.02827765, 0.02827765, 0.02827765, 0.02827765, 0.4239577], [1516757640000, 0.02827745, 0.02827755, 0.02827743, 0.02827743, 2.00415186], [1516757700000, 0.02827743, 0.02827744, 0.02827743, 0.02827743, 0.22927391], [1516757760000, 0.02827743, 0.02827744, 0.02827742, 0.02827744, 6.56169116], [1516757820000, 0.02827744, 0.02827744, 0.02827743, 0.02827744, 8.00002953], [1516757880000, 0.02827743, 0.0282784, 0.02827743, 0.0282784, 12.49512593], [1516757940000, 0.02827839, 0.0282784, 0.02827839, 0.0282784, 0.56306663], [1516758000000, 0.0282784, 0.02839406, 0.02827838, 0.02839406, 3.25717503], [1516758060000, 0.02827743, 0.02839406, 0.02827743, 0.02827743, 2.46715593], [1516758120000, 0.02839405, 0.02839406, 0.02839405, 0.02839405, 2.64323507], [1516758180000, 0.02839405, 0.02839406, 0.02839405, 0.02839405, 5.70527691], [1516758240000, 0.02839405, 0.02839406, 0.02827743, 0.02839406, 5.60849673], [1516758300000, 0.02839405, 0.02839406, 0.02827743, 0.02839406, 4.61496543], [1516758360000, 0.02839405, 0.02839405, 0.02839405, 0.02839405, 0.3], [1516758420000, 0.02827743, 0.02827743, 0.02827743, 0.02827743, 2.10118982], [1516758540000, 0.02839404, 0.02839406, 0.02839404, 0.02839406, 1.59840909], [1516758600000, 0.02827743, 0.02839406, 0.02827743, 0.02839405, 6.6700239], [1516758660000, 0.02839404, 0.02839405, 0.02839404, 0.02839405, 0.07797782], [1516758720000, 0.02839405, 0.02839406, 0.02827744, 0.02839406, 75.08433624], [1516758780000, 0.02839406, 0.02839406, 0.02827809, 0.02839406, 57.87493937], [1516758840000, 0.02839406, 0.02853943, 0.02839406, 0.02853915, 4.79716323], [1516758900000, 0.02853915, 0.02853915, 0.02853915, 0.02853915, 0.03882861], [1516758960000, 0.02839405, 0.02853913, 0.02832353, 0.02853913, 2.76704076], [1516759080000, 0.02853911, 0.02853943, 0.02832699, 0.02853943, 10.22703213], [1516759140000, 0.02853943, 0.02853943, 0.02853943, 0.02853943, 0.47663775], [1516759200000, 0.02853943, 0.02855956, 0.02832901, 0.02855956, 6.63737506], [1516759260000, 0.02855956, 0.02855956, 0.02853943, 0.02855956, 2.49112543], [1516759320000, 0.02855956, 0.02855956, 0.02855955, 0.02855956, 0.45232708], [1516759380000, 0.02855956, 0.0285699, 0.02855956, 0.0285699, 5.70011917], [1516759440000, 0.0285596, 0.0285699, 0.0285596, 0.0285699, 1.8335511], [1516759500000, 0.02856989, 0.02856989, 0.0285596, 0.0285596, 2.09741966], [1516759560000, 0.02856989, 0.0286, 0.0285596, 0.0286, 0.21348617], [1516759620000, 0.0285596, 0.0286, 0.0285596, 0.0285596, 3.2268872], [1516759680000, 0.0285596, 0.0285596, 0.0285596, 0.0285596, 1.04697616], [1516759740000, 0.0285596, 0.0285596, 0.0285596, 0.0285596, 3.03323309], [1516759800000, 0.0285596, 0.0285596, 0.0285596, 0.0285596, 2.20447594], [1516759920000, 0.0285596, 0.02865359, 0.0285596, 0.02865359, 9.85163543], [1516759980000, 0.0285596, 0.02855962, 0.0285596, 0.02855962, 0.87744636], [1516760040000, 0.02865358, 0.02865359, 0.0285596, 0.0285596, 2.18542643], [1516760100000, 0.0285596, 0.0285596, 0.02835028, 0.02835039, 1.81387381], [1516760160000, 0.02835066, 0.02835066, 0.02835066, 0.02835066, 0.07015876], [1516760340000, 0.02835226, 0.02835226, 0.02835226, 0.02835226, 1.0], [1516760400000, 0.02835226, 0.02855947, 0.02835226, 0.02855947, 0.37398921], [1516760460000, 0.02855946, 0.02863294, 0.02855946, 0.02863294, 0.50809306], [1516760520000, 0.02863285, 0.02872648, 0.02838092, 0.02868587, 45.99986188], [1516760580000, 0.02838139, 0.02838139, 0.02838138, 0.02838138, 2.08545202], [1516760640000, 0.02840154, 0.02840154, 0.02840154, 0.02840154, 0.35803667], [1516760700000, 0.02872638, 0.02872638, 0.02840195, 0.02840206, 9.99578771], [1516760760000, 0.02840241, 0.02840241, 0.02840241, 0.02840241, 0.35803667], [1516760880000, 0.02840377, 0.02840377, 0.02840377, 0.02840377, 0.4], [1516760940000, 0.02840425, 0.02840425, 0.02840425, 0.02840425, 0.35460992], [1516761060000, 0.02854736, 0.02854736, 0.02854736, 0.02854736, 0.35803667], [1516761120000, 0.0285488, 0.02871741, 0.0285488, 0.02871741, 0.17739576], [1516761180000, 0.02871715, 0.02871715, 0.02871715, 0.02871715, 0.42923895], [1516761360000, 0.02871632, 0.02871632, 0.02871632, 0.02871632, 7.6369], [1516761420000, 0.02871632, 0.02871632, 0.0285474, 0.02854742, 1.24960864], [1516761480000, 0.02854759, 0.02871638, 0.02854757, 0.02871638, 0.21855754], [1516761540000, 0.02871638, 0.02871639, 0.0285476, 0.0285476, 2.02565378], [1516761600000, 0.02871636, 0.02871653, 0.02871635, 0.02871653, 14.24127827], [1516761660000, 0.02871653, 0.02873204, 0.02871636, 0.02873204, 34.55043321], [1516761720000, 0.02873203, 0.02873204, 0.02873203, 0.02873204, 1.502145], [1516761780000, 0.02874502, 0.02874502, 0.02873204, 0.02873204, 3.21520865], [1516761840000, 0.02854766, 0.02854766, 0.02854762, 0.02854762, 3.56982738], [1516761900000, 0.02864633, 0.02864633, 0.02854761, 0.02854761, 43.85679422], [1516761960000, 0.02854761, 0.02854761, 0.02854761, 0.02854761, 6.00215413], [1516762020000, 0.02874417, 0.02874417, 0.02874417, 0.02874417, 2.79775758], [1516762080000, 0.02874411, 0.02874417, 0.02874411, 0.02874417, 7.74934892], [1516762140000, 0.02874417, 0.02874421, 0.028585, 0.02874417, 10.67812105], [1516762200000, 0.02874417, 0.02874417, 0.028585, 0.028585, 1.9044178], [1516762260000, 0.02874415, 0.02874417, 0.028585, 0.02874417, 5.94970262], [1516762320000, 0.02874417, 0.0288, 0.028585, 0.028585, 3.67177544], [1516762380000, 0.02874416, 0.02874416, 0.02874416, 0.02874416, 1.71156137], [1516762440000, 0.02874416, 0.02874416, 0.02874416, 0.02874416, 0.38292252], [1516762500000, 0.02858506, 0.02876417, 0.0285494, 0.0285494, 2.77603113], [1516762560000, 0.02876417, 0.0288093, 0.02876417, 0.0288093, 0.8807534], [1516762620000, 0.02858509, 0.02858509, 0.0285477, 0.0285477, 60.0], [1516762680000, 0.02854773, 0.02854773, 0.02854773, 0.02854773, 3.63534544], [1516762740000, 0.02854772, 0.02854772, 0.02854761, 0.02854761, 31.67104612], [1516762800000, 0.02865049, 0.02871899, 0.02865049, 0.02871899, 0.09655438], [1516762860000, 0.02871899, 0.02871899, 0.02854761, 0.02854761, 3.68453933], [1516763040000, 0.02869, 0.02869, 0.02869, 0.02869, 15.84618278], [1516763220000, 0.02859, 0.02859, 0.02854762, 0.02854762, 0.73199797], [1516763280000, 0.02859, 0.02859, 0.02858999, 0.02859, 0.11585967], [1516763340000, 0.02858999, 0.02859, 0.02858857, 0.02859, 5.07750517], [1516763400000, 0.02859, 0.02867966, 0.02859, 0.02867966, 0.07512752], [1516763460000, 0.02867961, 0.02867961, 0.02867961, 0.02867961, 0.07723958], [1516763520000, 0.02867959, 0.02867961, 0.02867958, 0.02867961, 0.11617728], [1516763580000, 0.02867959, 0.02867968, 0.02854766, 0.02867968, 2.93766164], [1516763640000, 0.02867961, 0.02867961, 0.02867961, 0.02867961, 0.03861979], [1516763700000, 0.0286796, 0.0286899, 0.0286796, 0.0286899, 0.14152446], [1516763760000, 0.0286899, 0.0286899, 0.02867967, 0.02867968, 0.36142484], [1516763820000, 0.02867968, 0.02867968, 0.02867968, 0.02867968, 0.07688428], [1516763880000, 0.02867961, 0.02867968, 0.02854846, 0.02867967, 41.14721069], [1516763940000, 0.02867967, 0.02867968, 0.02854857, 0.02854857, 0.94944636], [1516764000000, 0.02854871, 0.02867967, 0.02854847, 0.02854847, 1.9877326], [1516764060000, 0.02854901, 0.028565, 0.02854847, 0.028565, 15.52521247], [1516764120000, 0.02854847, 0.02867966, 0.02854846, 0.02854846, 7.48001672], [1516764180000, 0.02854846, 0.02867966, 0.02851101, 0.02851102, 3.88208944], [1516764240000, 0.02851102, 0.02867965, 0.02851102, 0.02867964, 4.69670761], [1516764300000, 0.02851102, 0.02867965, 0.02851102, 0.02867964, 8.46458368], [1516764360000, 0.02867963, 0.02867964, 0.0286796, 0.02867964, 1.84699657], [1516764420000, 0.02867962, 0.02867962, 0.02867962, 0.02867962, 0.254371], [1516764480000, 0.02867963, 0.02867963, 0.02851165, 0.02851165, 7.16947603], [1516764540000, 0.02867961, 0.02867965, 0.02867961, 0.02867965, 56.68308675], [1516764600000, 0.02867965, 0.02867965, 0.02851943, 0.02867964, 49.32933021], [1516764660000, 0.02867962, 0.02871897, 0.02867962, 0.02871897, 5.377], [1516764720000, 0.02852148, 0.02852148, 0.02852148, 0.02852148, 0.05257589], [1516764780000, 0.02852196, 0.028752, 0.02852196, 0.028752, 42.68148988], [1516764840000, 0.0286, 0.028752, 0.0286, 0.028752, 0.19545645], [1516764960000, 0.02875199, 0.028752, 0.02875199, 0.028752, 0.03854926], [1516765020000, 0.028752, 0.028752, 0.028752, 0.028752, 4.29953067], [1516765080000, 0.028752, 0.028752, 0.02875199, 0.028752, 0.07709781], [1516765140000, 0.028752, 0.028752, 0.02875199, 0.02875199, 4.78964559], [1516765200000, 0.02875199, 0.028752, 0.02875199, 0.02875199, 5.15676495], [1516765260000, 0.02875199, 0.028752, 0.02875199, 0.02875199, 5.46853378], [1516765320000, 0.02875199, 0.0287635, 0.02875199, 0.02875199, 11.69841959], [1516765380000, 0.02875199, 0.0287635, 0.02875199, 0.02875199, 3.30078823], [1516765440000, 0.02875199, 0.02879, 0.02875199, 0.02879, 3.61110052], [1516765500000, 0.02879, 0.02880015, 0.0287636, 0.02880015, 5.87809505], [1516765560000, 0.0287635, 0.02881537, 0.02875199, 0.02881537, 13.74543013], [1516765620000, 0.02875199, 0.02875199, 0.02875199, 0.02875199, 0.89287439], [1516765800000, 0.02883823, 0.02883824, 0.02883823, 0.02883824, 5.02975133], [1516765860000, 0.02883823, 0.02883825, 0.02883823, 0.02883825, 0.03834517], [1516765920000, 0.02883825, 0.02885, 0.02883825, 0.02885, 0.03834548], [1516765980000, 0.02884999, 0.0289306, 0.02884999, 0.0289306, 1.04167849], [1516766040000, 0.02893048, 0.02893048, 0.02893048, 0.02893048, 0.04674767], [1516766100000, 0.0289305, 0.02894607, 0.0289305, 0.02894607, 24.32437559], [1516766160000, 0.02893798, 0.02893798, 0.028752, 0.028752, 7.287883], [1516766220000, 0.028752, 0.028752, 0.028752, 0.028752, 1.06729879], [1516766280000, 0.02875201, 0.02875201, 0.028752, 0.028752, 7.71564893], [1516766340000, 0.028752, 0.028752, 0.028752, 0.028752, 7.0], [1516766400000, 0.028752, 0.0289373, 0.028752, 0.0289373, 7.46055347], [1516766460000, 0.028752, 0.028752, 0.028752, 0.028752, 0.21474997], [1516766520000, 0.028752, 0.028752, 0.028752, 0.028752, 0.28750134], [1516766580000, 0.028937, 0.02893739, 0.028752, 0.02893739, 4.70871915], [1516766640000, 0.02893744, 0.02893792, 0.02875201, 0.02875201, 6.11632833], [1516766700000, 0.02893789, 0.0289379, 0.02875201, 0.02875204, 2.92996884], [1516766760000, 0.02875202, 0.02875202, 0.028752, 0.028752, 6.15445942], [1516766820000, 0.02875202, 0.02875202, 0.02875202, 0.02875202, 1.30887743], [1516766880000, 0.02875202, 0.02875202, 0.028752, 0.028752, 1.23068495], [1516766940000, 0.02875202, 0.02875202, 0.02875202, 0.02875202, 0.26039761], [1516767000000, 0.02875202, 0.02893795, 0.028752, 0.02893795, 2.56591285], [1516767060000, 0.02893795, 0.0289461, 0.02893795, 0.02894606, 0.27642076], [1516767120000, 0.02894605, 0.02894605, 0.028752, 0.02894601, 10.74934525], [1516767180000, 0.02894596, 0.02895, 0.02894592, 0.0289461, 45.10716136], [1516767240000, 0.02894999, 0.02894999, 0.02875201, 0.02875201, 9.66615465], [1516767300000, 0.02875201, 0.02875201, 0.02875201, 0.02875201, 0.05980585], [1516767360000, 0.02894978, 0.02894978, 0.02875201, 0.02875201, 0.10394765], [1516767420000, 0.02894963, 0.02894964, 0.02894963, 0.02894964, 7.64467802], [1516767480000, 0.02875203, 0.02875203, 0.02875201, 0.02875202, 1.16405804], [1516767540000, 0.02875203, 0.02894971, 0.02875203, 0.02894969, 6.73997704], [1516767600000, 0.02894968, 0.02894968, 0.02875205, 0.02875205, 0.12453483], [1516767660000, 0.02894963, 0.0289499, 0.02875201, 0.02894956, 3.47881125], [1516767720000, 0.02894956, 0.02894999, 0.02894954, 0.02894955, 3.48755916], [1516767780000, 0.02894955, 0.02894956, 0.0288, 0.0288, 1.25110344], [1516767840000, 0.0288, 0.02894956, 0.0288, 0.0288, 4.06644604], [1516767900000, 0.02894954, 0.02894955, 0.0288, 0.0288, 6.40563823], [1516767960000, 0.0288, 0.0288, 0.0288, 0.0288, 1.8022895], [1516768020000, 0.0288, 0.0288, 0.0288, 0.0288, 41.18946863], [1516768080000, 0.0288, 0.02887477, 0.0288, 0.0288, 10.74168218], [1516768140000, 0.0288, 0.0288, 0.0288, 0.0288, 0.41117576], [1516768200000, 0.0288, 0.0288, 0.0288, 0.0288, 0.6], [1516768260000, 0.0288, 0.0289483, 0.0288, 0.0289483, 2.95168809], [1516768320000, 0.0288, 0.0288, 0.0288, 0.0288, 0.88047935], [1516768380000, 0.0288, 0.0288, 0.0288, 0.0288, 5.91453261], [1516768440000, 0.02894823, 0.02894823, 0.02894823, 0.02894823, 0.03796321], [1516768500000, 0.02894826, 0.02894831, 0.0288, 0.0288, 2.44257401], [1516768560000, 0.0288, 0.0289483, 0.0288, 0.0289483, 3.32200722], [1516768620000, 0.0288, 0.0288, 0.0288, 0.0288, 0.26552448], [1516768740000, 0.0288, 0.0288, 0.02875203, 0.0288, 0.7629323], [1516768800000, 0.0288, 0.02894827, 0.0288, 0.02894827, 16.13949416], [1516768860000, 0.0288465, 0.0288465, 0.0288465, 0.0288465, 0.04579077], [1516768920000, 0.0288465, 0.02894382, 0.0288465, 0.0288465, 1.5764395], [1516768980000, 0.02894381, 0.02894381, 0.02894381, 0.02894381, 0.25472684], [1516769040000, 0.0288465, 0.02894383, 0.0288465, 0.0288465, 15.00824329], [1516769100000, 0.02894382, 0.02894382, 0.0289, 0.0289, 0.07643951], [1516769160000, 0.0289, 0.0289, 0.0288465, 0.0288465, 0.33051999], [1516769220000, 0.0289, 0.02894382, 0.0289, 0.0289, 4.34603897], [1516769280000, 0.02894381, 0.02894381, 0.0289, 0.02894381, 1.90050026], [1516769400000, 0.0289, 0.0289, 0.0289, 0.0289, 0.19837267], [1516769460000, 0.0289, 0.0289, 0.02875204, 0.0288, 2.5066296], [1516769640000, 0.02875202, 0.02875202, 0.02875201, 0.02875201, 1.4910844], [1516769700000, 0.02875201, 0.0289, 0.02875201, 0.02875201, 1.42070194], [1516769760000, 0.02889999, 0.0289, 0.02889999, 0.0289, 0.17864665], [1516769820000, 0.0289, 0.0289, 0.0289, 0.0289, 5.68513765], [1516769880000, 0.028752, 0.028752, 0.028752, 0.028752, 0.35575768], [1516769940000, 0.02889999, 0.0289, 0.02889999, 0.0289, 0.4932113], [1516770000000, 0.0289, 0.0289, 0.028752, 0.028752, 0.646], [1516770060000, 0.02889999, 0.02889999, 0.028752, 0.028752, 6.38245987], [1516770120000, 0.028752, 0.0289, 0.028752, 0.0289, 1.13620937], [1516770180000, 0.02889999, 0.0289, 0.02889999, 0.0289, 0.08466752], [1516770240000, 0.0289, 0.0289, 0.0289, 0.0289, 0.98340083], [1516770300000, 0.02889999, 0.02894373, 0.02889999, 0.02894373, 4.21194751], [1516770360000, 0.02875201, 0.02875201, 0.02875201, 0.02875201, 3.12206788], [1516770420000, 0.02875201, 0.02875201, 0.02875201, 0.02875201, 0.84812198], [1516770480000, 0.02894368, 0.02894368, 0.02894368, 0.02894368, 0.09721637], [1516770540000, 0.02875201, 0.02875201, 0.02875201, 0.02875201, 0.09721684], [1516770780000, 0.02894316, 0.02894316, 0.02875201, 0.02875201, 4.02519906], [1516770840000, 0.028752, 0.028752, 0.028752, 0.028752, 0.99999998], [1516770960000, 0.02891998, 0.02892, 0.02891998, 0.02892, 3.86622792], [1516771020000, 0.02875201, 0.02891998, 0.02875201, 0.02891998, 18.17370784], [1516771080000, 0.02875201, 0.02875201, 0.02875199, 0.02875199, 57.08943721], [1516771140000, 0.028752, 0.028752, 0.02860106, 0.02860106, 1.05870659], [1516771200000, 0.02860114, 0.02891959, 0.02860071, 0.02860071, 29.84501438], [1516771260000, 0.02860071, 0.02888403, 0.028511, 0.028511, 32.93885856], [1516771320000, 0.0288835, 0.0288835, 0.02855, 0.02855, 0.21663075], [1516771380000, 0.02888299, 0.02888301, 0.02873869, 0.02888257, 14.88521594], [1516771440000, 0.02855, 0.02878984, 0.028511, 0.02878984, 1.38156149], [1516771500000, 0.02878952, 0.02878952, 0.028511, 0.028511, 1.17829478], [1516771560000, 0.028511, 0.02878895, 0.0285, 0.02878877, 26.07863814], [1516771620000, 0.02845001, 0.02873636, 0.02840212, 0.02873636, 8.69854532], [1516771680000, 0.02869984, 0.02869984, 0.02869979, 0.02869979, 1.22778786], [1516771740000, 0.02869976, 0.02869976, 0.02869976, 0.02869976, 0.63963695], [1516771800000, 0.02869838, 0.02869838, 0.02869838, 0.02869838, 0.69690296], [1516771860000, 0.02869776, 0.02869776, 0.02842102, 0.02842102, 1.0427947], [1516771920000, 0.02842102, 0.02842102, 0.02838003, 0.02838003, 53.84243079], [1516771980000, 0.02838005, 0.02838005, 0.02838003, 0.02838003, 0.63963695], [1516772040000, 0.02838004, 0.02838004, 0.02838, 0.02838, 17.7934356], [1516772100000, 0.02838002, 0.02864622, 0.02838002, 0.02851627, 41.78058857], [1516772160000, 0.02838002, 0.02846687, 0.02838, 0.02838001, 7.82085093], [1516772220000, 0.02859987, 0.02859987, 0.02845, 0.02845, 4.37929375], [1516772280000, 0.02844999, 0.02850619, 0.02838001, 0.02850619, 32.54932389], [1516772340000, 0.02843999, 0.02851626, 0.02838, 0.02838, 103.74466182], [1516772400000, 0.02851626, 0.02851626, 0.02851626, 0.02851626, 0.74343451], [1516772460000, 0.02851626, 0.02851626, 0.02851626, 0.02851626, 0.64208125], [1516772580000, 0.02838, 0.02838, 0.02838, 0.02838, 1.0], [1516772640000, 0.02851499, 0.02851499, 0.02851499, 0.02851499, 0.10109919], [1516772700000, 0.02851499, 0.02851625, 0.02851499, 0.02851599, 2.05492754], [1516772760000, 0.02848, 0.02848, 0.02848, 0.02848, 0.18134189], [1516772820000, 0.02847997, 0.02848, 0.02847997, 0.02847998, 0.4543146], [1516772880000, 0.02838, 0.0284795, 0.02838, 0.0284795, 0.95345227], [1516773000000, 0.028479, 0.028479, 0.02838001, 0.028479, 0.78952291], [1516773060000, 0.028479, 0.02851598, 0.028479, 0.02851598, 25.32644027], [1516773120000, 0.0283995, 0.02851599, 0.0283995, 0.02851599, 0.25255688], [1516773180000, 0.02851598, 0.02851598, 0.02851598, 0.02851598, 0.30859878], [1516773240000, 0.02851597, 0.02851597, 0.02851597, 0.02851597, 0.06125648], [1516773300000, 0.02851598, 0.02851599, 0.02851588, 0.02851599, 2.97876943], [1516773360000, 0.0284, 0.0284, 0.02838006, 0.02838006, 0.34717761], [1516773420000, 0.02851599, 0.02851599, 0.0284, 0.0284, 3.37535196], [1516773480000, 0.0284, 0.02851599, 0.0284, 0.02851599, 0.5911714], [1516773600000, 0.0283801, 0.02851599, 0.0283801, 0.02851599, 1.38367758], [1516773660000, 0.02838009, 0.02851599, 0.02838009, 0.02851599, 0.70918856], [1516773720000, 0.02851599, 0.02851599, 0.0285104, 0.0285104, 0.07327919], [1516773780000, 0.0285104, 0.02851599, 0.0285104, 0.0285104, 7.23856853], [1516773840000, 0.02851597, 0.02851597, 0.02851596, 0.02851596, 0.12447509], [1516773900000, 0.02851594, 0.02851594, 0.02851594, 0.02851594, 0.35068154], [1516774020000, 0.02851593, 0.02851593, 0.02851593, 0.02851593, 0.5], [1516774080000, 0.02851524, 0.02851524, 0.028421, 0.028421, 0.07732708], [1516774140000, 0.02851595, 0.02851596, 0.02851595, 0.02851596, 66.68213366], [1516774200000, 0.02851593, 0.02851593, 0.02851593, 0.02851593, 0.35068154], [1516774320000, 0.02851593, 0.02851594, 0.02851593, 0.02851594, 0.36051191], [1516774440000, 0.028421, 0.02851594, 0.02838101, 0.02851594, 1.12990194], [1516774500000, 0.02851593, 0.02851594, 0.02838101, 0.02838101, 1.12221731], [1516774560000, 0.02851592, 0.02851592, 0.02851592, 0.02851592, 2.31445415], [1516774680000, 0.028382, 0.028382, 0.02838009, 0.02838009, 9.924304], [1516774800000, 0.0283801, 0.0283801, 0.0283801, 0.0283801, 1.8], [1516774920000, 0.02838009, 0.02838009, 0.02838009, 0.02838009, 0.20387238], [1516774980000, 0.02851587, 0.02851587, 0.02851587, 0.02851587, 1.46918963], [1516775040000, 0.0285159, 0.0285159, 0.0285159, 0.0285159, 2.91947114], [1516775100000, 0.02851589, 0.02851589, 0.02851589, 0.02851589, 0.91009461], [1516775160000, 0.02851585, 0.02851585, 0.02851582, 0.02851582, 0.58598707], [1516775220000, 0.0285158, 0.0285158, 0.02851579, 0.02851579, 2.57052084], [1516775280000, 0.02838011, 0.02838011, 0.02838011, 0.02838011, 1.2], [1516775340000, 0.02838011, 0.02838011, 0.02838009, 0.02838011, 1.14971001], [1516775400000, 0.02838011, 0.02838011, 0.02838009, 0.02838009, 0.23884792], [1516775460000, 0.02838009, 0.02838009, 0.02838009, 0.02838009, 0.28736602], [1516775520000, 0.02838009, 0.02838009, 0.02838009, 0.02838009, 4.10720272], [1516775580000, 0.02849994, 0.02849994, 0.02849994, 0.02849994, 1.11666901], [1516775640000, 0.02845994, 0.02849994, 0.02838009, 0.02838009, 7.76011], [1516775700000, 0.02843956, 0.02843956, 0.02843956, 0.02843956, 0.79483585], [1516775760000, 0.02838009, 0.02838009, 0.02838008, 0.02838008, 5.24633068], [1516775820000, 0.02838008, 0.02843956, 0.028, 0.02813321, 480.26419151], [1516775880000, 0.02830201, 0.02837753, 0.02813638, 0.02837736, 3.97188555], [1516775940000, 0.02830607, 0.02830608, 0.02830604, 0.02830604, 5.607523], [1516776000000, 0.02829603, 0.02829603, 0.02813331, 0.02813331, 0.43405019], [1516776060000, 0.02829584, 0.02829584, 0.02826591, 0.02826594, 2.25525634], [1516776120000, 0.02826582, 0.02826583, 0.02819516, 0.02819516, 0.94847643], [1516776180000, 0.02828954, 0.02828954, 0.02824937, 0.02824937, 6.25748433], [1516776240000, 0.02801515, 0.02827925, 0.02801515, 0.02825871, 0.86925501], [1516776300000, 0.0282617, 0.0282617, 0.0282617, 0.0282617, 0.05395462], [1516776360000, 0.0282316, 0.0282316, 0.0282216, 0.0282216, 9.14973587], [1516776480000, 0.0282513, 0.02825166, 0.02825123, 0.02825123, 14.34534932], [1516776540000, 0.02800142, 0.02800165, 0.02800142, 0.02800165, 1.192564], [1516776600000, 0.02825037, 0.02825038, 0.02822061, 0.02822061, 2.88410877], [1516776660000, 0.02825011, 0.02825166, 0.0282501, 0.02825166, 1.46618077], [1516776720000, 0.02825161, 0.02825161, 0.02825161, 0.02825161, 0.25131301], [1516776780000, 0.02825159, 0.02825159, 0.02825159, 0.02825159, 0.15928307], [1516776900000, 0.02825132, 0.02825132, 0.02812, 0.02825123, 1.98566572], [1516776960000, 0.02812001, 0.02812001, 0.02812001, 0.02812001, 0.17780932], [1516777020000, 0.02812002, 0.02812002, 0.02812, 0.02812, 3.69674539], [1516777080000, 0.02825151, 0.02825151, 0.02800693, 0.02800693, 14.0840832], [1516777260000, 0.02800867, 0.02800867, 0.02800867, 0.02800867, 0.44], [1516777380000, 0.0280102, 0.0280102, 0.0280102, 0.0280102, 0.15166207], [1516777440000, 0.02825138, 0.02825138, 0.02825138, 0.02825138, 0.25106259], [1516777500000, 0.02825136, 0.02825138, 0.02811013, 0.02825137, 1.04965635], [1516777560000, 0.02825137, 0.02825137, 0.02825137, 0.02825137, 0.04303354], [1516777680000, 0.02825138, 0.02825138, 0.0282513, 0.0282513, 5.4787964], [1516777740000, 0.0282513, 0.0282513, 0.0282513, 0.0282513, 7.0177658], [1516777800000, 0.0282513, 0.0282513, 0.0282513, 0.0282513, 67.51956764], [1516777860000, 0.0282513, 0.0282513, 0.0282513, 0.0282513, 0.68003852], [1516777920000, 0.0282513, 0.0282513, 0.0282513, 0.0282513, 2.19409827], [1516777980000, 0.0282513, 0.0282513, 0.0282513, 0.0282513, 7.55118756], [1516778040000, 0.0282513, 0.0282513, 0.0282513, 0.0282513, 20.03902475], [1516778100000, 0.02825134, 0.02837993, 0.0282513, 0.02837993, 31.73377972], [1516778160000, 0.0282513, 0.02832982, 0.0282513, 0.0282513, 8.09250088], [1516778220000, 0.0282513, 0.02832982, 0.0282513, 0.0282513, 3.11515296], [1516778280000, 0.0282513, 0.02835944, 0.0282513, 0.0282513, 3.36007331], [1516778400000, 0.0282513, 0.02835943, 0.0282513, 0.0282513, 11.4709073], [1516778460000, 0.02835943, 0.02835943, 0.02811012, 0.02811012, 6.09277272], [1516778520000, 0.02809233, 0.02809248, 0.02809233, 0.02809248, 0.2], [1516778580000, 0.02828807, 0.02828807, 0.02828807, 0.02828807, 3.52618546], [1516778700000, 0.02824933, 0.02824933, 0.02824933, 0.02824933, 0.83187851], [1516778760000, 0.02824933, 0.02828807, 0.02824933, 0.02824933, 8.24907373], [1516778820000, 0.02824933, 0.02824933, 0.02824933, 0.02824933, 0.816796], [1516778880000, 0.02828807, 0.0284, 0.02828807, 0.0284, 32.22768995], [1516778940000, 0.02824933, 0.02824933, 0.02824933, 0.02824933, 1.04842047], [1516779000000, 0.02828806, 0.02828806, 0.02824933, 0.02824933, 1.20872327], [1516779060000, 0.02828806, 0.0283998, 0.02815582, 0.02815582, 2.09000662], [1516779240000, 0.02839984, 0.02839993, 0.02839984, 0.02839993, 14.81070492], [1516779300000, 0.02839992, 0.02839992, 0.02839992, 0.02839992, 33.93085041], [1516779360000, 0.02830678, 0.02839992, 0.02830678, 0.02830678, 5.09086072], [1516779420000, 0.02830678, 0.02830678, 0.02830678, 0.02830678, 10.31753537], [1516779480000, 0.02839992, 0.02857998, 0.02839992, 0.02857998, 73.90452615], [1516779540000, 0.02830682, 0.02830682, 0.02830682, 0.02830682, 0.022], [1516779600000, 0.02857384, 0.02857384, 0.02830729, 0.02830729, 0.58579532], [1516779720000, 0.02830773, 0.02857184, 0.02830773, 0.0283078, 10.86924944], [1516779780000, 0.0284, 0.0284, 0.0284, 0.0284, 5.30864261], [1516779840000, 0.0284, 0.0284, 0.0284, 0.0284, 1.0501589], [1516779900000, 0.0284, 0.02864519, 0.0284, 0.0284, 4.05865252], [1516779960000, 0.0284, 0.02840001, 0.0284, 0.02840001, 52.1017699], [1516780020000, 0.0285998, 0.0285998, 0.0284, 0.0284, 2.35176994], [1516780080000, 0.0284, 0.0284, 0.02825, 0.02825, 4.44516597], [1516780200000, 0.02838222, 0.02838222, 0.02838222, 0.02838222, 0.3523335], [1516780260000, 0.02838222, 0.02838222, 0.02838222, 0.02838222, 0.40165991], [1516780380000, 0.02838222, 0.0284577, 0.02832152, 0.02832152, 2.04301949], [1516780440000, 0.02825, 0.02825, 0.02825, 0.02825, 0.16], [1516780500000, 0.02832127, 0.02832152, 0.02832127, 0.02832152, 1.15649413], [1516780560000, 0.02832152, 0.0284, 0.02832152, 0.0284, 23.59049705], [1516780620000, 0.0284, 0.02851331, 0.0284, 0.0284, 27.83068441], [1516780680000, 0.0284, 0.02851396, 0.0284, 0.0284, 93.09052456], [1516780740000, 0.02851392, 0.0286, 0.02839982, 0.02839982, 189.64821728], [1516780800000, 0.02839982, 0.0284, 0.02839982, 0.0284, 1.52447605], [1516780860000, 0.0284, 0.0284, 0.02832153, 0.02839983, 0.3810627], [1516780920000, 0.02832152, 0.0284, 0.02825023, 0.0284, 12.45419454], [1516780980000, 0.0284, 0.02859999, 0.0284, 0.02859999, 1.08290023], [1516781040000, 0.0284, 0.02859986, 0.0284, 0.0285, 78.34369346], [1516781100000, 0.0285, 0.0285, 0.0284, 0.0285, 11.29854292], [1516781280000, 0.0284, 0.0284, 0.0284, 0.0284, 0.71245685], [1516781340000, 0.0284, 0.0284, 0.0284, 0.0284, 0.94152932], [1516781400000, 0.0284, 0.0284, 0.0284, 0.0284, 0.82025071], [1516781460000, 0.0284, 0.0284, 0.0284, 0.0284, 0.58916751], [1516781520000, 0.0284, 0.0284, 0.0284, 0.0284, 0.17924065], [1516781700000, 0.0283, 0.02839999, 0.0283, 0.0283, 2.19395788], [1516781760000, 0.0283, 0.02839999, 0.0283, 0.0283, 55.03055487], [1516781820000, 0.0283, 0.0283, 0.02825001, 0.02825001, 10.30081754], [1516781880000, 0.02825001, 0.02832875, 0.02825001, 0.02825002, 2.66998401], [1516781940000, 0.02825001, 0.02825001, 0.0282, 0.02825, 11.06788037], [1516782000000, 0.02820881, 0.02825, 0.0282, 0.02825, 15.14782432], [1516782060000, 0.0282009, 0.02832873, 0.0282009, 0.02832873, 19.46369744], [1516782120000, 0.02832872, 0.02832872, 0.02832872, 0.02832872, 0.03895711], [1516782180000, 0.02832872, 0.02832873, 0.02832872, 0.02832873, 0.08799253], [1516782240000, 0.02832873, 0.02832873, 0.02832869, 0.02832869, 0.22289752], [1516782300000, 0.02832865, 0.02832869, 0.02832865, 0.02832868, 2.22371973], [1516782360000, 0.02832868, 0.02832868, 0.02832868, 0.02832868, 0.08386503], [1516782480000, 0.02832867, 0.02832867, 0.02815401, 0.02815401, 0.0791654], [1516782540000, 0.02815405, 0.02832871, 0.02815405, 0.02832871, 0.73762162], [1516782600000, 0.0283287, 0.02832872, 0.02832868, 0.02832872, 7.49407639], [1516782660000, 0.02832872, 0.02832872, 0.0283287, 0.02832872, 80.25035858], [1516782720000, 0.02832872, 0.02854999, 0.02832872, 0.02854863, 21.97796935], [1516782780000, 0.02854845, 0.02854845, 0.02854826, 0.02854826, 2.83170873], [1516782840000, 0.02854826, 0.02854826, 0.02854826, 0.02854826, 10.58323879], [1516782900000, 0.02854825, 0.02854825, 0.02835158, 0.02854825, 0.31521362], [1516782960000, 0.02854824, 0.02854824, 0.02832953, 0.02832953, 1.03271649], [1516783020000, 0.02832994, 0.02832994, 0.02832994, 0.02832994, 0.07117442], [1516783080000, 0.02854824, 0.02854824, 0.02854824, 0.02854824, 0.10173353], [1516783200000, 0.02848388, 0.02859292, 0.02840753, 0.02859276, 1.25596726], [1516783260000, 0.02859248, 0.02859248, 0.0285922, 0.0285922, 1.38369801], [1516783440000, 0.02859151, 0.02859151, 0.02859151, 0.02859151, 1.58406457], [1516783560000, 0.02859104, 0.02859105, 0.02859104, 0.02859105, 37.35338244], [1516783620000, 0.02859297, 0.02859297, 0.02859297, 0.02859297, 0.38491828], [1516783680000, 0.02859297, 0.02859297, 0.02859297, 0.02859297, 0.07962334], [1516783800000, 0.02859293, 0.02859293, 0.02859293, 0.02859293, 1.04921151], [1516783860000, 0.02845, 0.02845, 0.02845, 0.02845, 0.14047833], [1516783920000, 0.02847845, 0.02847845, 0.02835974, 0.02845, 2.30706936], [1516783980000, 0.02859011, 0.02859011, 0.02858974, 0.02858974, 1.47833865], [1516784040000, 0.02858966, 0.02858966, 0.02835982, 0.02835982, 2.01954793], [1516784100000, 0.02835985, 0.02858913, 0.02835985, 0.02858904, 2.77437093], [1516784160000, 0.02858, 0.02858893, 0.02835981, 0.02835981, 1.63538639], [1516784220000, 0.02835982, 0.02835985, 0.02835982, 0.02835982, 2.44814567], [1516784280000, 0.02835979, 0.02835979, 0.02835979, 0.02835979, 7.83509311], [1516784340000, 0.02837, 0.02837, 0.02836, 0.02836, 7.5358901], [1516784400000, 0.02857926, 0.02857926, 0.02857926, 0.02857926, 0.3499036], [1516784460000, 0.02836015, 0.02836015, 0.02836015, 0.02836015, 0.09711], [1516784520000, 0.02857897, 0.02857897, 0.02857897, 0.02857897, 48.29056946], [1516784700000, 0.02857894, 0.02857894, 0.02857894, 0.02857894, 0.41989009], [1516784820000, 0.02857894, 0.02869873, 0.02857894, 0.02869873, 45.97022337], [1516784880000, 0.02840004, 0.02869809, 0.02840004, 0.0286978, 41.80204025], [1516784940000, 0.02869755, 0.02869755, 0.02869755, 0.02869755, 0.59358833], [1516785000000, 0.02869632, 0.02869632, 0.02841015, 0.02869625, 1.65300346], [1516785060000, 0.0286958, 0.0286958, 0.02841026, 0.02841026, 0.78112291], [1516785120000, 0.02869556, 0.02869556, 0.02869502, 0.02869502, 0.11463358], [1516785240000, 0.02848001, 0.02869326, 0.02848, 0.02848, 4.08459984], [1516785300000, 0.02848, 0.02869282, 0.02848, 0.02869282, 2.25448695], [1516785360000, 0.02848, 0.02848, 0.02848, 0.02848, 2.0], [1516785420000, 0.02848, 0.02858609, 0.02848, 0.02848, 3.81335305], [1516785480000, 0.02848, 0.02848, 0.02848, 0.02848, 0.12461326], [1516785540000, 0.02848, 0.02848, 0.02848, 0.02848, 2.81164029], [1516785600000, 0.02848, 0.02855, 0.02840001, 0.02840001, 38.8357673], [1516785780000, 0.02840001, 0.02840001, 0.02836021, 0.02836021, 20.7663112], [1516785900000, 0.02836021, 0.02852404, 0.02836021, 0.02852402, 1.84571191], [1516785960000, 0.02836021, 0.02852405, 0.02836021, 0.02852405, 0.60896419], [1516786080000, 0.02836021, 0.02836021, 0.02836021, 0.02836021, 0.08713903], [1516786140000, 0.028524, 0.02852402, 0.02836021, 0.02852401, 1.28675119], [1516786200000, 0.028524, 0.02852401, 0.028524, 0.02852401, 1.31972702], [1516786260000, 0.02852401, 0.02852401, 0.02836021, 0.02842487, 12.85331282], [1516786320000, 0.02836021, 0.02852405, 0.02836021, 0.02852405, 1.80272435], [1516786380000, 0.02852405, 0.02852405, 0.02852405, 0.02852405, 12.0691846], [1516786440000, 0.02849, 0.02849, 0.02849, 0.02849, 0.50966304], [1516786500000, 0.02849, 0.02849, 0.02849, 0.02849, 0.5046682], [1516786560000, 0.02845, 0.02845, 0.0283625, 0.02844999, 1.57828294], [1516786680000, 0.02844999, 0.02844999, 0.02844999, 0.02844999, 0.32152172], [1516786740000, 0.02844999, 0.02844999, 0.0283625, 0.02844999, 0.69644871], [1516786800000, 0.02844999, 0.02849, 0.0283625, 0.02849, 1.83121405], [1516786860000, 0.02848999, 0.02849, 0.02848999, 0.02848999, 5.0057996], [1516786920000, 0.02848999, 0.02849, 0.02848999, 0.02848999, 22.88558081], [1516786980000, 0.02849, 0.02849, 0.02849, 0.02849, 0.02571281], [1516787040000, 0.02848999, 0.02849, 0.02848999, 0.02849, 0.49033502], [1516787100000, 0.02849, 0.02849, 0.02849, 0.02849, 2.87194416], [1516787160000, 0.02849, 0.02849, 0.02849, 0.02849, 5.43141955], [1516787220000, 0.02849, 0.02849, 0.02849, 0.02849, 0.13309883], [1516787280000, 0.02849, 0.02849, 0.02849, 0.02849, 0.07739616], [1516787340000, 0.02849, 0.02849, 0.02849, 0.02849, 2.06023821], [1516787400000, 0.02849, 0.02849, 0.02848999, 0.02848999, 6.35256258], [1516787460000, 0.02849, 0.02849, 0.02848999, 0.02849, 2.467543], [1516787520000, 0.02848999, 0.02849, 0.02848999, 0.02848999, 3.19703025], [1516787580000, 0.02849, 0.02849, 0.02848999, 0.02848999, 7.67226724], [1516787640000, 0.02848999, 0.02848999, 0.02835976, 0.02835976, 31.42773617], [1516787700000, 0.02848999, 0.02848999, 0.02848999, 0.02848999, 5.92551621], [1516787760000, 0.02841671, 0.02841671, 0.02835976, 0.02835976, 2.46977441], [1516787820000, 0.02841671, 0.02848997, 0.02835976, 0.02848997, 2.2515544], [1516787880000, 0.02835976, 0.02848999, 0.02835976, 0.02835976, 2.11369023], [1516787940000, 0.02835976, 0.02835976, 0.02835976, 0.02835976, 2.09265728], [1516788000000, 0.02835976, 0.02848998, 0.02835976, 0.02848998, 0.52654621], [1516788060000, 0.02835976, 0.02835976, 0.02832011, 0.02832011, 3.8310887], [1516788120000, 0.02830001, 0.02830001, 0.02830001, 0.02830001, 1.93620462], [1516788180000, 0.02848986, 0.02848986, 0.02848986, 0.02848986, 0.10582992], [1516788240000, 0.0283, 0.0283, 0.0283, 0.0283, 8.634], [1516788300000, 0.0283, 0.0283, 0.0283, 0.0283, 11.9427057], [1516788360000, 0.02825001, 0.02825001, 0.02817468, 0.02817468, 17.81211527], [1516788420000, 0.02848855, 0.02848855, 0.02848833, 0.02848833, 51.29960906], [1516788480000, 0.02817469, 0.02848824, 0.02810373, 0.02810373, 1.9419073], [1516788540000, 0.02844998, 0.0284877, 0.02844985, 0.02844985, 7.21263397], [1516788600000, 0.02848758, 0.02848758, 0.02848758, 0.02848758, 0.25567475], [1516788660000, 0.02815034, 0.02815034, 0.02815034, 0.02815034, 0.25], [1516788720000, 0.02848695, 0.02848695, 0.02848695, 0.02848695, 10.55175543], [1516788780000, 0.02848685, 0.02848685, 0.02820672, 0.02820672, 3.26212514], [1516788900000, 0.02848695, 0.02848856, 0.02848695, 0.02848856, 0.35103731], [1516788960000, 0.02821863, 0.02834609, 0.02821863, 0.02822435, 1.35969134], [1516789020000, 0.02834609, 0.02834609, 0.02822647, 0.02822647, 1.04567969], [1516789080000, 0.02821926, 0.02821926, 0.02821923, 0.02821923, 1.26732998], [1516789200000, 0.02848722, 0.02848722, 0.02821931, 0.02821931, 1.25230256], [1516789260000, 0.02821932, 0.02821932, 0.02817001, 0.02817001, 1.46009369], [1516789320000, 0.02817006, 0.02817006, 0.02817001, 0.02817001, 5.0], [1516789380000, 0.0282, 0.0282, 0.02817024, 0.02817024, 2.2566068], [1516789440000, 0.02820005, 0.02820005, 0.02817001, 0.02817001, 20.36603825], [1516789500000, 0.02848403, 0.02848403, 0.02848403, 0.02848403, 0.7021461], [1516789620000, 0.02817056, 0.02817056, 0.02817056, 0.02817056, 2.05], [1516789740000, 0.02817056, 0.02817056, 0.02817056, 0.02817056, 0.04109309], [1516789800000, 0.02847901, 0.02847901, 0.02847895, 0.02847895, 1.05340407], [1516789980000, 0.0284687, 0.0284687, 0.02817069, 0.0282, 9.04112564], [1516790040000, 0.0282, 0.0282, 0.0282, 0.0282, 3.0], [1516790100000, 0.02846872, 0.02846872, 0.02846856, 0.02846856, 0.75126296], [1516790160000, 0.02846838, 0.02846838, 0.02820033, 0.02820033, 1.38816819], [1516790220000, 0.0282, 0.0282, 0.02819162, 0.02819162, 14.0220534], [1516790280000, 0.02818782, 0.02818782, 0.02818782, 0.02818782, 0.25], [1516790400000, 0.02846669, 0.02846669, 0.02846669, 0.02846669, 0.2], [1516790460000, 0.02846653, 0.02846653, 0.02846653, 0.02846653, 0.18296521], [1516790520000, 0.0281879, 0.0281879, 0.0281879, 0.0281879, 0.870334], [1516790580000, 0.0281879, 0.0281879, 0.02818761, 0.02818761, 12.64413283], [1516790640000, 0.02818761, 0.02818761, 0.02818761, 0.02818761, 1.24744065], [1516790700000, 0.02818761, 0.02818761, 0.02818761, 0.02818761, 11.40308493], [1516790760000, 0.02818761, 0.02818761, 0.02817, 0.02817, 0.52101789], [1516790820000, 0.02818761, 0.0283832, 0.02818761, 0.0283832, 1.17131147], [1516790880000, 0.02838324, 0.02838324, 0.02838319, 0.0283832, 26.32857836], [1516790940000, 0.02838319, 0.02838319, 0.02818764, 0.02818764, 73.30081717], [1516791000000, 0.0283832, 0.02846268, 0.02818767, 0.02846182, 1.08006759], [1516791120000, 0.02839066, 0.02845917, 0.02818767, 0.02818767, 4.89474154], [1516791180000, 0.02818767, 0.02818767, 0.02818767, 0.02818767, 0.43499076], [1516791240000, 0.0283, 0.0283, 0.0283, 0.0283, 1.0], [1516791300000, 0.02838582, 0.02838582, 0.0283, 0.0283, 2.93484384], [1516791360000, 0.0283, 0.0283, 0.0283, 0.0283, 13.15385337], [1516791420000, 0.02846763, 0.02846763, 0.02846763, 0.02846763, 0.35253342], [1516791480000, 0.02846691, 0.02846691, 0.0283, 0.02846686, 1.6436959], [1516791540000, 0.02846673, 0.02846684, 0.02846673, 0.02846684, 1.2925991], [1516791600000, 0.02846674, 0.02846683, 0.02846672, 0.02846683, 1.55133639], [1516791660000, 0.02846683, 0.02846683, 0.02846681, 0.02846681, 0.08451473], [1516791720000, 0.02846682, 0.02846683, 0.0283, 0.02846683, 0.17659231], [1516791780000, 0.02846683, 0.02846683, 0.02846683, 0.02846683, 0.03895781], [1516791840000, 0.02830001, 0.0284675, 0.02830001, 0.0284675, 7.91181749], [1516791900000, 0.02846749, 0.02846749, 0.02830023, 0.02846748, 10.47778149], [1516791960000, 0.02846748, 0.02846748, 0.02846748, 0.02846748, 0.2], [1516792020000, 0.02846748, 0.02848856, 0.02846748, 0.02848856, 7.20049873], [1516792080000, 0.02846748, 0.02846748, 0.02846748, 0.02846748, 0.12], [1516792140000, 0.02846748, 0.02846748, 0.02846748, 0.02846748, 0.13733026], [1516792260000, 0.02846001, 0.02849, 0.02846, 0.02849, 6.27043261], [1516792320000, 0.02846, 0.02846, 0.02846, 0.02846, 1.2331702], [1516792380000, 0.02846, 0.02846, 0.02846, 0.02846, 2.55776866], [1516792440000, 0.02846001, 0.02849, 0.02846, 0.02846, 22.282075], [1516792500000, 0.02849, 0.02849, 0.02846, 0.02846, 3.53724656], [1516792560000, 0.0283, 0.02848998, 0.0283, 0.02848998, 0.59450055], [1516792620000, 0.02848998, 0.02848998, 0.02848998, 0.02848998, 1.50816613], [1516792680000, 0.0283, 0.02848999, 0.0283, 0.02848999, 0.88377066], [1516792740000, 0.02848999, 0.02848999, 0.02848999, 0.02848999, 0.09789257], [1516792800000, 0.02849, 0.02849, 0.02848999, 0.02848999, 0.4007104], [1516792860000, 0.0283, 0.0283, 0.0283, 0.0283, 0.12640421], [1516792920000, 0.02848999, 0.02849, 0.02848999, 0.02849, 2.78675683], [1516793100000, 0.02849, 0.02849, 0.02849, 0.02849, 1.09191739], [1516793160000, 0.02839, 0.02839, 0.02839, 0.02839, 1.32535985], [1516793220000, 0.02839, 0.02839, 0.0283899, 0.0283899, 3.31996155], [1516793280000, 0.0283899, 0.02849, 0.0283899, 0.02849, 3.62106382], [1516793340000, 0.02849, 0.0285, 0.02849, 0.0285, 0.55896148], [1516793400000, 0.0285, 0.02858067, 0.02833001, 0.02858067, 4.87549866], [1516793460000, 0.02858063, 0.0285807, 0.02833001, 0.0285807, 3.01601758], [1516793640000, 0.02858046, 0.02858046, 0.0285804, 0.0285804, 1.34697644], [1516793700000, 0.02858031, 0.02858031, 0.0285803, 0.02858031, 15.54665869], [1516793760000, 0.02833019, 0.02833019, 0.02830897, 0.02830897, 1.9], [1516793820000, 0.02831085, 0.02857995, 0.02831085, 0.02857995, 2.81947417], [1516793880000, 0.02830005, 0.02857988, 0.0283, 0.02857964, 16.64844819], [1516793940000, 0.0285796, 0.0285796, 0.02857956, 0.02857959, 1.60224813], [1516794000000, 0.02857958, 0.02857958, 0.02830072, 0.02857954, 12.15872835], [1516794060000, 0.02830102, 0.02858, 0.02830102, 0.02858, 10.04529279], [1516794120000, 0.02857999, 0.02864999, 0.02857999, 0.02864999, 31.1633206], [1516794180000, 0.0286, 0.02869418, 0.0286, 0.02860001, 17.56586234], [1516794240000, 0.0286, 0.0286, 0.02859999, 0.02859999, 38.84810405], [1516794300000, 0.0286, 0.0286, 0.02859998, 0.02859999, 2.6292484], [1516794360000, 0.02859999, 0.0286, 0.02859998, 0.0286, 17.52086851], [1516794420000, 0.02859998, 0.0286, 0.02859998, 0.02859998, 3.18710096], [1516794480000, 0.02859998, 0.02859998, 0.02835, 0.02859997, 16.38589747], [1516794540000, 0.02859996, 0.02859996, 0.02859996, 0.02859996, 0.32882771], [1516794600000, 0.02859992, 0.02859993, 0.02859992, 0.02859993, 0.69930314], [1516794660000, 0.02833886, 0.02833903, 0.02833886, 0.02833903, 0.38760469], [1516794720000, 0.02859987, 0.02859987, 0.02833955, 0.02833955, 0.28842928], [1516794780000, 0.02834002, 0.02834002, 0.02834002, 0.02834002, 0.2], [1516794840000, 0.02859969, 0.02859969, 0.02859969, 0.02859969, 0.09391146], [1516794900000, 0.02834049, 0.02859966, 0.02834049, 0.02859961, 22.20555223], [1516794960000, 0.02859961, 0.02859961, 0.02834062, 0.0284, 2.40075581], [1516795020000, 0.0284, 0.0284, 0.0284, 0.0284, 1.068], [1516795080000, 0.02859957, 0.02859957, 0.0283656, 0.02836564, 0.68511133], [1516795140000, 0.02836564, 0.02836564, 0.02836564, 0.02836564, 0.08766635], [1516795200000, 0.02836564, 0.02857399, 0.02836564, 0.02857098, 17.08563265], [1516795320000, 0.02856999, 0.02856999, 0.02836564, 0.02836564, 1.42282773], [1516795380000, 0.02836564, 0.02836564, 0.02836564, 0.02836564, 0.23173349], [1516795440000, 0.02836564, 0.02836564, 0.02822092, 0.02822092, 28.34040966], [1516795500000, 0.02836564, 0.02845299, 0.02822118, 0.02845, 25.60522387], [1516795560000, 0.02822128, 0.02822128, 0.02822128, 0.02822128, 10.05553757], [1516795620000, 0.02845298, 0.02845298, 0.02845298, 0.02845298, 0.02636642], [1516795680000, 0.02822158, 0.02845296, 0.02822158, 0.02845296, 5.30544207], [1516795740000, 0.02845298, 0.02845299, 0.02822241, 0.02822241, 43.742147], [1516795800000, 0.02845293, 0.02845296, 0.02845293, 0.02845293, 8.75800324], [1516795860000, 0.02845296, 0.02845296, 0.02845293, 0.02845296, 1.68686364], [1516795920000, 0.02833, 0.02833, 0.02820066, 0.02820066, 2.41968369], [1516795980000, 0.0282, 0.0282, 0.02810702, 0.02812943, 4.74019073], [1516796040000, 0.02812943, 0.02812943, 0.02812943, 0.02812943, 1.94950068], [1516796100000, 0.02812943, 0.02832123, 0.02810702, 0.02810702, 4.50907248], [1516796160000, 0.02830163, 0.02830163, 0.0281, 0.02810702, 31.26223757], [1516796220000, 0.02810701, 0.02810702, 0.02810701, 0.02810702, 4.78409492], [1516796280000, 0.02810702, 0.02830132, 0.02810702, 0.02830095, 17.66272139], [1516796340000, 0.02830081, 0.02830081, 0.02830081, 0.02830081, 0.44681344], [1516796400000, 0.02830044, 0.02830044, 0.02830011, 0.02830011, 4.6593601], [1516796520000, 0.02829968, 0.02829968, 0.0281, 0.0281, 5.49390339], [1516796580000, 0.02829927, 0.02829927, 0.0281, 0.0281, 29.91713945], [1516796640000, 0.02810701, 0.02826876, 0.02810701, 0.02826876, 5.01137125], [1516796700000, 0.02826876, 0.02826876, 0.02810701, 0.02810701, 2.34267677], [1516796760000, 0.0282547, 0.0282547, 0.0282547, 0.0282547, 0.06205724], [1516796880000, 0.02810701, 0.02825365, 0.02810701, 0.02825365, 11.44911754], [1516796940000, 0.02825099, 0.02825099, 0.02810702, 0.02823799, 1.66611092], [1516797000000, 0.02810702, 0.02822797, 0.02810701, 0.02822795, 17.8152295], [1516797060000, 0.02810701, 0.02822793, 0.02801678, 0.02801678, 7.57696721], [1516797120000, 0.0280171, 0.02822749, 0.0280171, 0.02801752, 4.87798022], [1516797180000, 0.0281, 0.0282261, 0.02809999, 0.02822607, 2.84154479], [1516797240000, 0.02822604, 0.02822604, 0.0281, 0.028226, 0.11956231], [1516797300000, 0.02822599, 0.02822606, 0.02822598, 0.02822604, 2.19743905], [1516797360000, 0.02822604, 0.02822605, 0.02822601, 0.02822603, 7.36065072], [1516797420000, 0.02822603, 0.02822603, 0.0281, 0.028226, 7.34592675], [1516797480000, 0.0281, 0.0281, 0.02809999, 0.02809999, 1.14688972], [1516797540000, 0.0281, 0.0281, 0.0281, 0.0281, 14.57311028], [1516797600000, 0.02822599, 0.02822599, 0.02801678, 0.02822599, 3.56998359], [1516797660000, 0.02822599, 0.02822599, 0.02822599, 0.02822599, 1.29524619], [1516797720000, 0.02822599, 0.02822599, 0.02800418, 0.02822599, 2.88933018], [1516797780000, 0.02822599, 0.02822599, 0.02800461, 0.02822596, 1.59493637], [1516797840000, 0.02822595, 0.02822596, 0.02822595, 0.02822596, 0.09703317], [1516797900000, 0.02821997, 0.02822, 0.02821997, 0.02822, 1.49865599], [1516797960000, 0.02821997, 0.02821997, 0.02801124, 0.02801124, 1.51959678], [1516798020000, 0.02821997, 0.02821997, 0.02821993, 0.02821994, 2.72361933], [1516798080000, 0.0282199, 0.0282199, 0.0282199, 0.0282199, 0.19657584], [1516798140000, 0.02821989, 0.02821989, 0.0280113, 0.02821988, 2.80651959], [1516798200000, 0.02801158, 0.02821988, 0.02801158, 0.02821988, 0.42031211], [1516798260000, 0.02821899, 0.02822, 0.02821899, 0.02822, 7.92], [1516798320000, 0.02821898, 0.02822, 0.02821898, 0.02822, 7.96679873], [1516798440000, 0.02822, 0.02822599, 0.02822, 0.02822599, 10.39329755], [1516798500000, 0.02822599, 0.02822605, 0.02822599, 0.02822605, 2.14096983], [1516798560000, 0.02822605, 0.02822605, 0.02822605, 0.02822605, 14.29106128], [1516798620000, 0.02822605, 0.02822605, 0.02822605, 0.02822605, 38.2140149], [1516798680000, 0.02822605, 0.02822605, 0.02822, 0.02822605, 19.64586287], [1516798740000, 0.02822605, 0.02822605, 0.02822605, 0.02822605, 10.58272154], [1516798800000, 0.02822605, 0.02822605, 0.02822001, 0.028226, 3.44383881], [1516798860000, 0.02822605, 0.02834999, 0.02822605, 0.02834999, 53.65855035], [1516798920000, 0.02834999, 0.02835, 0.02834999, 0.02835, 62.63958979], [1516798980000, 0.02834999, 0.02849999, 0.02822601, 0.02849999, 13.88012939], [1516799040000, 0.02837028, 0.02837028, 0.02822603, 0.02822603, 85.31606865], [1516799100000, 0.02849987, 0.02849987, 0.02822876, 0.02822876, 2.76275127], [1516799280000, 0.0284981, 0.0284981, 0.02849794, 0.02849794, 2.83689149], [1516799340000, 0.0284, 0.0284, 0.0284, 0.0284, 0.03859061], [1516799400000, 0.0284, 0.0284, 0.02839999, 0.02839999, 1.30702833], [1516799460000, 0.02822876, 0.0283999, 0.02822876, 0.0283999, 1.41110674], [1516799520000, 0.02822876, 0.02822876, 0.02822876, 0.02822876, 0.03123505], [1516799580000, 0.02822876, 0.02822876, 0.02822876, 0.02822876, 0.2909419], [1516799640000, 0.02822876, 0.02838, 0.02822876, 0.02837996, 0.82560067], [1516799700000, 0.02837996, 0.02838, 0.02822876, 0.02822876, 2.63823834], [1516799760000, 0.02835983, 0.02835985, 0.02835982, 0.02835985, 0.17209218], [1516799820000, 0.02837997, 0.02837997, 0.02822, 0.02822, 23.13026322], [1516799880000, 0.02822, 0.02837941, 0.02808667, 0.02837932, 16.72630475], [1516799940000, 0.028379, 0.028379, 0.028379, 0.028379, 0.03746264], [1516800000000, 0.0283787, 0.0283787, 0.02800539, 0.02800539, 19.33873952], [1516800060000, 0.02834995, 0.02834995, 0.02829952, 0.02829955, 6.63838313], [1516800120000, 0.02800744, 0.02800744, 0.02800744, 0.02800744, 20.0], [1516800180000, 0.02829871, 0.02829871, 0.02800823, 0.02800823, 15.20469362], [1516800240000, 0.02829771, 0.02829771, 0.02803627, 0.02803627, 1.75885579], [1516800360000, 0.02828982, 0.02828985, 0.0280643, 0.0280643, 8.43088078], [1516800420000, 0.02813339, 0.02813339, 0.02813339, 0.02813339, 0.55805574], [1516800480000, 0.02806431, 0.02828859, 0.02800326, 0.02828833, 19.91496304], [1516800540000, 0.02806458, 0.02828822, 0.02806458, 0.02828813, 14.54872008], [1516800600000, 0.02828786, 0.02828786, 0.02828768, 0.02828768, 0.88177959], [1516800660000, 0.02828753, 0.02828753, 0.02828753, 0.02828753, 0.05560011], [1516800720000, 0.02812494, 0.02828733, 0.02812494, 0.02828733, 0.33014793], [1516800780000, 0.02828704, 0.02828704, 0.02828685, 0.02828699, 44.64944322], [1516800840000, 0.028287, 0.02828701, 0.02812494, 0.02812494, 95.50863994], [1516800900000, 0.028287, 0.02828705, 0.0281, 0.02828705, 10.48053686], [1516800960000, 0.02828691, 0.02828691, 0.02828691, 0.02828691, 0.23363364], [1516801020000, 0.0282869, 0.0282869, 0.02810055, 0.02810104, 9.55206206], [1516801080000, 0.02828687, 0.028348, 0.0281323, 0.0281323, 26.04322804], [1516801140000, 0.02834999, 0.02834999, 0.02813255, 0.02813255, 1.68647608], [1516801200000, 0.02834999, 0.02834999, 0.02834993, 0.02834998, 1.10449618], [1516801260000, 0.02828705, 0.02835, 0.02813249, 0.02813277, 2.62943745], [1516801380000, 0.02834984, 0.02834984, 0.02813367, 0.02813367, 0.08758059], [1516801440000, 0.02834974, 0.02834987, 0.0281343, 0.0281343, 70.56368577], [1516801500000, 0.02834965, 0.02834965, 0.02834965, 0.02834965, 1.26472629], [1516801560000, 0.02834965, 0.02834965, 0.02834965, 0.02834965, 0.03708386], [1516801680000, 0.02834965, 0.02834965, 0.02834965, 0.02834965, 1.67079719], [1516801740000, 0.0283496, 0.02834965, 0.0283496, 0.02834965, 0.29664415], [1516801800000, 0.02827877, 0.02827877, 0.02827877, 0.02827877, 0.85870047], [1516801920000, 0.02827877, 0.02827877, 0.02814047, 0.02827877, 9.82894925], [1516801980000, 0.02814108, 0.02827877, 0.02814108, 0.02827877, 0.89835521], [1516802040000, 0.02827877, 0.02827877, 0.02827877, 0.02827877, 2.03876542], [1516802100000, 0.02827877, 0.02827877, 0.02827877, 0.02827877, 13.07220479], [1516802160000, 0.02827877, 0.02827877, 0.02814437, 0.02814437, 1.50619801], [1516802220000, 0.0281445, 0.02827877, 0.0281445, 0.02827877, 0.45017248], [1516802280000, 0.02827877, 0.02827877, 0.02827877, 0.02827877, 0.05845647], [1516802340000, 0.0282, 0.0282, 0.0282, 0.0282, 2.08344073], [1516802400000, 0.0282, 0.02833, 0.02818914, 0.02833, 0.30271811], [1516802460000, 0.02827877, 0.02827877, 0.02818914, 0.02827877, 13.09778615], [1516802520000, 0.02827877, 0.02827877, 0.02827877, 0.02827877, 0.6002293], [1516802580000, 0.02827877, 0.02827877, 0.02818914, 0.02827877, 3.43675113], [1516802640000, 0.02818914, 0.02827877, 0.02818914, 0.02827876, 1.9381737], [1516802700000, 0.02827876, 0.02827877, 0.02818914, 0.02827877, 9.81758555], [1516802760000, 0.02827877, 0.02827878, 0.02827877, 0.02827878, 6.81477502], [1516802820000, 0.02833, 0.02844272, 0.02833, 0.02844272, 13.53533736], [1516802880000, 0.02844266, 0.02844266, 0.02818928, 0.02844246, 2.75701066], [1516802940000, 0.02844243, 0.02844243, 0.02844229, 0.02844229, 0.81776245], [1516803000000, 0.02844218, 0.02844218, 0.02818942, 0.02818942, 1.04133533], [1516803060000, 0.02844176, 0.02844176, 0.02844176, 0.02844176, 0.04750105], [1516803120000, 0.02818994, 0.02844078, 0.02818994, 0.02844078, 0.64611815], [1516803180000, 0.02819016, 0.02819029, 0.02819016, 0.02819029, 1.561408], [1516803240000, 0.0281904, 0.02843996, 0.0281904, 0.0284397, 194.94665993], [1516803300000, 0.02843923, 0.02843923, 0.02843923, 0.02843923, 0.35162485], [1516803360000, 0.02818926, 0.02843852, 0.02818926, 0.02843852, 2.84904573], [1516803420000, 0.0281892, 0.0281892, 0.02818915, 0.02818915, 6.66291], [1516803480000, 0.02818914, 0.02818915, 0.028135, 0.028135, 2.81437085], [1516803540000, 0.0281891, 0.0281891, 0.02813499, 0.028135, 19.72465772], [1516803600000, 0.02818915, 0.02842738, 0.02818915, 0.02842716, 5.98417132], [1516803660000, 0.02842716, 0.02842716, 0.02818915, 0.02818915, 35.3504689], [1516803720000, 0.0282, 0.0282, 0.0282, 0.0282, 0.25175299], [1516803780000, 0.02813328, 0.02813328, 0.02813327, 0.02813328, 1.62625398], [1516803840000, 0.02813328, 0.02813328, 0.02813328, 0.02813328, 3.28111465], [1516803900000, 0.02819999, 0.0283775, 0.02813277, 0.02837716, 9.63436438], [1516803960000, 0.02837716, 0.02837716, 0.02813277, 0.02813277, 42.60000939], [1516804020000, 0.02813277, 0.02813282, 0.02813277, 0.02813277, 21.90884701], [1516804080000, 0.02813282, 0.02813282, 0.0281, 0.0281, 45.83996772], [1516804140000, 0.0281, 0.0281, 0.02805, 0.0281, 2.35415134], [1516804200000, 0.0281, 0.02813281, 0.02800326, 0.02800337, 66.14582791], [1516804260000, 0.02813281, 0.02813281, 0.02813281, 0.02813281, 0.03937007], [1516804320000, 0.02805, 0.02813281, 0.02805, 0.02813275, 19.81065295], [1516804380000, 0.02813275, 0.02813281, 0.02805029, 0.02813281, 1.29319804], [1516804440000, 0.02813281, 0.02813281, 0.02813281, 0.02813281, 0.25736611], [1516804500000, 0.02813281, 0.0283499, 0.02813281, 0.02813281, 7.37407765], [1516804560000, 0.02813281, 0.02813281, 0.02813281, 0.02813281, 2.97883732], [1516804620000, 0.02813281, 0.02834863, 0.02813281, 0.02834863, 2.80466015], [1516804680000, 0.02829999, 0.02829999, 0.02829999, 0.02829999, 0.04083908], [1516804740000, 0.02813281, 0.0283458, 0.02813281, 0.0283457, 5.84816755], [1516804800000, 0.02832009, 0.02832009, 0.02832009, 0.02832009, 0.11263724], [1516804860000, 0.02813287, 0.02813287, 0.02813284, 0.02813284, 7.8942659], [1516804920000, 0.02832012, 0.02832012, 0.02813284, 0.02813284, 4.06765483], [1516804980000, 0.02832009, 0.02832018, 0.02831997, 0.02832018, 10.40738724], [1516805040000, 0.02832012, 0.02832012, 0.02832012, 0.02832012, 0.05190875], [1516805100000, 0.02832011, 0.02832011, 0.02832011, 0.02832011, 0.35310609], [1516805160000, 0.02813295, 0.02832018, 0.02813295, 0.02832018, 6.31044608], [1516805220000, 0.02832011, 0.02832018, 0.02832011, 0.02832011, 2.96941343], [1516805280000, 0.02813302, 0.02813303, 0.02813302, 0.02813303, 0.68462282], [1516805340000, 0.028133, 0.02832011, 0.02813284, 0.0283201, 24.16926967], [1516805400000, 0.02832003, 0.02832003, 0.02831995, 0.02831995, 2.62556696], [1516805460000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 1.72621846], [1516805520000, 0.02813281, 0.02832003, 0.02813281, 0.02832003, 0.18227991], [1516805580000, 0.02813281, 0.02813281, 0.02813281, 0.02813281, 0.21965097], [1516805640000, 0.02813281, 0.02813281, 0.02813281, 0.02813281, 0.87837884], [1516805700000, 0.0281328, 0.02813281, 0.02807066, 0.02807107, 3.00007515], [1516805760000, 0.02813281, 0.02813281, 0.02813281, 0.02813281, 0.08819534], [1516805820000, 0.02831932, 0.02831932, 0.02813281, 0.02813281, 14.62681527], [1516805940000, 0.02813281, 0.02813281, 0.02813281, 0.02813281, 0.19724771], [1516806000000, 0.0282, 0.0282, 0.0282, 0.0282, 0.35460992], [1516806060000, 0.0281329, 0.0281329, 0.0281329, 0.0281329, 0.68270107], [1516806120000, 0.02819998, 0.02819998, 0.02819998, 0.02819998, 0.11125443], [1516806180000, 0.02819997, 0.0282, 0.02819997, 0.02819997, 35.57880013], [1516806240000, 0.02819997, 0.02819997, 0.0281329, 0.02819997, 0.92779716], [1516806300000, 0.0281329, 0.0281329, 0.0281329, 0.0281329, 7.49949378], [1516806360000, 0.0281329, 0.0281329, 0.02813281, 0.02813281, 21.67970695], [1516806480000, 0.02813281, 0.02813281, 0.02813281, 0.02813281, 0.69343272], [1516806540000, 0.02819997, 0.0282, 0.02819997, 0.0282, 45.63524093], [1516806600000, 0.02831976, 0.02831976, 0.02831949, 0.02831949, 1.45576011], [1516806720000, 0.02831866, 0.02831866, 0.02813295, 0.02813295, 1.23673323], [1516806780000, 0.02817688, 0.02817688, 0.02817688, 0.02817688, 0.0390391], [1516806840000, 0.02813295, 0.02817688, 0.02813295, 0.02817688, 1.2904953], [1516806900000, 0.02831804, 0.02831804, 0.02831796, 0.02831796, 1.41252787], [1516806960000, 0.028151, 0.0282, 0.028151, 0.028151, 23.08107366], [1516807020000, 0.028151, 0.028151, 0.028151, 0.028151, 1.02772143], [1516807080000, 0.02831787, 0.02831788, 0.02831785, 0.02831785, 0.45363244], [1516807140000, 0.0283178, 0.0283178, 0.0283178, 0.0283178, 0.08075234], [1516807200000, 0.02831783, 0.02831785, 0.02831776, 0.02831776, 1.05940431], [1516807260000, 0.02815138, 0.02831771, 0.02815101, 0.02831771, 7.70838536], [1516807320000, 0.02831769, 0.02831772, 0.02831769, 0.02831772, 0.04914626], [1516807380000, 0.02831769, 0.02831769, 0.02815111, 0.02815111, 35.32533088], [1516807500000, 0.02815104, 0.02815105, 0.02815104, 0.02815105, 2.87016913], [1516807560000, 0.02815105, 0.02815105, 0.02815101, 0.02815105, 9.45831711], [1516807620000, 0.02815101, 0.02815105, 0.028151, 0.02815105, 31.27838406], [1516807680000, 0.02815105, 0.02815105, 0.02815105, 0.02815105, 2.44665989], [1516807740000, 0.02815101, 0.02815101, 0.028151, 0.02815101, 10.04382182], [1516807800000, 0.028151, 0.028151, 0.028151, 0.028151, 0.5], [1516807860000, 0.02815101, 0.02815101, 0.02815101, 0.02815101, 0.09682874], [1516807920000, 0.02815101, 0.02815101, 0.02815101, 0.02815101, 0.51348184], [1516807980000, 0.028151, 0.02815105, 0.028151, 0.02815105, 35.46660344], [1516808040000, 0.02815101, 0.02815105, 0.028151, 0.02815105, 19.48078733], [1516808160000, 0.02815105, 0.02815105, 0.02815105, 0.02815105, 0.34048604], [1516808220000, 0.02815105, 0.02831764, 0.02815105, 0.02831764, 17.03357902], [1516808280000, 0.02831765, 0.02831765, 0.02831765, 0.02831765, 0.35224318], [1516808340000, 0.02831764, 0.02831764, 0.02831764, 0.02831764, 0.31681062], [1516808400000, 0.02831764, 0.02831764, 0.02815102, 0.02815102, 2.09971678], [1516808520000, 0.02815105, 0.028303, 0.02815105, 0.02815105, 0.70070782], [1516808580000, 0.02829699, 0.02829699, 0.02829699, 0.02829699, 0.12641079], [1516808640000, 0.02829699, 0.02829699, 0.02815105, 0.02815105, 8.38571229], [1516808700000, 0.02815105, 0.02831761, 0.02815105, 0.02815105, 2.35453052], [1516808760000, 0.02815105, 0.02815105, 0.02815105, 0.02815105, 2.11631513], [1516808820000, 0.02815105, 0.02815105, 0.02815105, 0.02815105, 0.05], [1516808880000, 0.02815105, 0.02815105, 0.02815105, 0.02815105, 8.91482145], [1516808940000, 0.0282, 0.0282, 0.02815105, 0.02815106, 4.0970074], [1516809000000, 0.02829692, 0.02829692, 0.02815106, 0.0281511, 0.88063092], [1516809060000, 0.02815112, 0.02815112, 0.02815105, 0.0281511, 46.35747322], [1516809120000, 0.02815106, 0.02831762, 0.02815103, 0.02815103, 5.33567086], [1516809180000, 0.02815104, 0.02815105, 0.02815104, 0.02815105, 0.77678859], [1516809240000, 0.02815105, 0.02815105, 0.02815105, 0.02815105, 6.49653407], [1516809300000, 0.02815105, 0.02815105, 0.02815105, 0.02815105, 0.43355394], [1516809360000, 0.02815105, 0.02815105, 0.02815103, 0.02815103, 6.65571851], [1516809420000, 0.02815105, 0.02815105, 0.02815102, 0.02815102, 3.96391676], [1516809480000, 0.02815101, 0.02815102, 0.02815101, 0.02815102, 36.32339486], [1516809540000, 0.02815102, 0.02815102, 0.02815, 0.02815, 22.82050435], [1516809600000, 0.02815, 0.02831757, 0.02815, 0.02831757, 0.50788864], [1516809720000, 0.02815102, 0.02831745, 0.02814504, 0.02831745, 4.50455253], [1516809780000, 0.02831741, 0.02831741, 0.02831741, 0.02831741, 0.24719774], [1516809840000, 0.02831737, 0.02831737, 0.02814504, 0.02814504, 1.38600785], [1516809900000, 0.0283172, 0.0283172, 0.02831717, 0.02831717, 20.91765204], [1516809960000, 0.02831715, 0.02831715, 0.02831714, 0.02831714, 0.10533253], [1516810020000, 0.02831714, 0.02831716, 0.02831714, 0.02831716, 6.4669171], [1516810080000, 0.02831715, 0.02831715, 0.02831715, 0.02831715, 0.11227074], [1516810140000, 0.02831715, 0.02831715, 0.02831715, 0.02831715, 4.59097005], [1516810200000, 0.02831716, 0.02831716, 0.02831716, 0.02831716, 0.4373231], [1516810260000, 0.02831713, 0.02831716, 0.02831713, 0.02831716, 12.63416601], [1516810320000, 0.02831716, 0.02831716, 0.02831716, 0.02831716, 9.69563219], [1516810380000, 0.02831716, 0.02831716, 0.02815002, 0.02831714, 2.13288071], [1516810440000, 0.02831714, 0.02837581, 0.02815002, 0.02815002, 61.46452583], [1516810500000, 0.02815083, 0.02834996, 0.02815083, 0.02834996, 10.70546736], [1516810560000, 0.0283499, 0.02838177, 0.0283499, 0.02838177, 17.69841931], [1516810620000, 0.0283498, 0.0283498, 0.02815013, 0.02834977, 2.36445947], [1516810680000, 0.02815012, 0.02815012, 0.02815, 0.02815, 3.69414542], [1516810740000, 0.02837545, 0.02837545, 0.02837, 0.02837, 0.20768542], [1516810800000, 0.02837487, 0.02837763, 0.02836992, 0.02837763, 0.75034707], [1516810860000, 0.02838168, 0.02838168, 0.02838168, 0.02838168, 0.88060847], [1516810920000, 0.02838168, 0.02838168, 0.02838168, 0.02838168, 0.13269479], [1516811040000, 0.02836721, 0.02837809, 0.02836721, 0.02837809, 1.07492732], [1516811100000, 0.02836721, 0.02836721, 0.02836721, 0.02836721, 0.35163839], [1516811160000, 0.02819, 0.02836721, 0.02817006, 0.02836721, 11.57690342], [1516811280000, 0.02838107, 0.02838134, 0.02815, 0.02815, 47.11657037], [1516811340000, 0.02817006, 0.02837979, 0.02814506, 0.02814506, 1.39360951], [1516811400000, 0.02835998, 0.02836, 0.02835998, 0.02836, 1.0578279], [1516811460000, 0.02835999, 0.02835999, 0.02835999, 0.02835999, 0.2933256], [1516811520000, 0.02835999, 0.02835999, 0.02835999, 0.02835999, 0.098857], [1516811580000, 0.02835999, 0.02835999, 0.02820439, 0.02820439, 1.42743421], [1516811640000, 0.02836, 0.02836, 0.02836, 0.02836, 19.89351935], [1516811700000, 0.02835997, 0.02835997, 0.02835997, 0.02835997, 0.3526093], [1516811760000, 0.02820439, 0.02835997, 0.02815015, 0.02835997, 2.35677231], [1516811940000, 0.02835995, 0.02835996, 0.02835995, 0.02835996, 3.83965832], [1516812000000, 0.0282, 0.02835996, 0.0282, 0.02835996, 4.47409349], [1516812060000, 0.02835996, 0.02835996, 0.0282, 0.02820001, 3.06085566], [1516812120000, 0.0282, 0.02820001, 0.0282, 0.0282, 2.87974164], [1516812180000, 0.02820001, 0.02820001, 0.02820001, 0.02820001, 1.30923601], [1516812240000, 0.02820001, 0.02820001, 0.0282, 0.02820001, 1.10772335], [1516812300000, 0.02820001, 0.02820001, 0.02820001, 0.02820001, 0.7874119], [1516812360000, 0.02820001, 0.02820001, 0.02820001, 0.02820001, 4.71384945], [1516812420000, 0.0282, 0.02820001, 0.0282, 0.02820001, 6.54573176], [1516812480000, 0.02820001, 0.02820001, 0.0282, 0.0282, 29.11639609], [1516812540000, 0.0282, 0.0282, 0.0282, 0.0282, 15.0], [1516812600000, 0.02820001, 0.02838, 0.02811313, 0.02811313, 20.57767679], [1516812720000, 0.02837982, 0.02837982, 0.02837982, 0.02837982, 0.0978026], [1516812780000, 0.02812003, 0.02812003, 0.02812003, 0.02812003, 1.69], [1516812840000, 0.02812022, 0.02812022, 0.02812022, 0.02812022, 0.12044892], [1516812960000, 0.02837482, 0.02837482, 0.02837482, 0.02837482, 0.4031699], [1516813020000, 0.02837482, 0.02837482, 0.02812031, 0.02818041, 27.9970892], [1516813080000, 0.02818041, 0.02837386, 0.02818041, 0.02837386, 0.03364689], [1516813140000, 0.02837385, 0.02837999, 0.0281205, 0.02837999, 50.34432552], [1516813200000, 0.028375, 0.028375, 0.028375, 0.028375, 0.07839889], [1516813260000, 0.02837497, 0.02837497, 0.02813063, 0.02813063, 7.42003396], [1516813320000, 0.02837498, 0.02837498, 0.02837497, 0.02837497, 0.08493108], [1516813380000, 0.02813472, 0.02837491, 0.02813472, 0.02837491, 0.17320737], [1516813500000, 0.02837491, 0.02837491, 0.02837491, 0.02837491, 0.70484828], [1516813560000, 0.02837491, 0.02837491, 0.02837491, 0.02837491, 0.43347374], [1516813620000, 0.02813859, 0.02813859, 0.02813859, 0.02813859, 1.17600799], [1516813740000, 0.02814062, 0.02814086, 0.02814062, 0.02814086, 3.2036715], [1516813800000, 0.02814099, 0.02837491, 0.02814099, 0.02837491, 0.52077436], [1516813860000, 0.02837491, 0.02837491, 0.0283749, 0.02837491, 1.51182974], [1516813920000, 0.0283749, 0.0283749, 0.0283749, 0.0283749, 0.55220427], [1516813980000, 0.02837491, 0.02837491, 0.0283749, 0.02837491, 7.03876664], [1516814040000, 0.02837491, 0.02837491, 0.02837491, 0.02837491, 0.5], [1516814100000, 0.02837491, 0.02837491, 0.02837491, 0.02837491, 1.05727242], [1516814280000, 0.0281527, 0.02837491, 0.0281527, 0.02837491, 2.22770811], [1516814340000, 0.02837491, 0.02837491, 0.02835827, 0.02835827, 0.77143063], [1516814520000, 0.02815635, 0.02815639, 0.02815635, 0.02815639, 0.57987695], [1516814580000, 0.02835827, 0.02835827, 0.02815671, 0.02815671, 3.79109718], [1516814700000, 0.02835827, 0.02835827, 0.02835827, 0.02835827, 0.70526088], [1516814760000, 0.02835827, 0.02835827, 0.02835827, 0.02835827, 0.09808436], [1516814820000, 0.02834165, 0.02835827, 0.02834165, 0.02835827, 0.19238334], [1516814880000, 0.02835827, 0.02835827, 0.02835827, 0.02835827, 0.07829508], [1516814940000, 0.02835826, 0.02835827, 0.02816609, 0.02816674, 3.75927774], [1516815000000, 0.0283582, 0.02835827, 0.0283582, 0.02835827, 1.28175214], [1516815060000, 0.02835827, 0.02835827, 0.02835825, 0.02835825, 3.00676986], [1516815120000, 0.02835826, 0.02835826, 0.02817181, 0.02835824, 20.86198669], [1516815180000, 0.02835823, 0.02835823, 0.02835823, 0.02835823, 6.82415926], [1516815240000, 0.02835823, 0.02835823, 0.0283, 0.0283, 1.74272896], [1516815300000, 0.0283582, 0.0283582, 0.0283582, 0.0283582, 0.057755], [1516815360000, 0.0283582, 0.0283582, 0.0283582, 0.0283582, 0.2493472], [1516815420000, 0.0283542, 0.0283542, 0.0283542, 0.0283542, 0.38057238], [1516815480000, 0.0283542, 0.0283542, 0.02819442, 0.0283542, 9.73735545], [1516815540000, 0.02819525, 0.0283542, 0.02819525, 0.0283542, 8.11545897], [1516815600000, 0.0283542, 0.0283582, 0.0283542, 0.0283582, 0.70536286], [1516815660000, 0.02819553, 0.02819553, 0.02819553, 0.02819553, 0.50005239], [1516815720000, 0.0283, 0.0283, 0.0283, 0.0283, 0.07823516], [1516815780000, 0.0283, 0.0283, 0.0283, 0.0283, 0.21467227], [1516815840000, 0.02825, 0.02825, 0.02825, 0.02825, 1.07302803], [1516815900000, 0.02825, 0.0283, 0.02825, 0.0283, 45.36003186], [1516815960000, 0.0283, 0.0283, 0.0283, 0.0283, 3.33878679], [1516816020000, 0.0283, 0.0283, 0.0283, 0.0283, 1.49106818], [1516816080000, 0.0283, 0.0283, 0.02818423, 0.0283, 0.2123415], [1516816140000, 0.0283, 0.0283, 0.0283, 0.0283, 0.279484], [1516816200000, 0.0283, 0.0283, 0.0283, 0.0283, 0.43141001], [1516816260000, 0.0283, 0.0283, 0.0283, 0.0283, 0.03902656], [1516816320000, 0.0283, 0.0283, 0.02825, 0.02825, 0.57077701], [1516816380000, 0.0283, 0.0283, 0.02818475, 0.02825, 9.35890041], [1516816440000, 0.0283, 0.0283, 0.02813489, 0.0283, 2.81136014], [1516816500000, 0.0283, 0.0283, 0.0283, 0.0283, 1.71947739], [1516816560000, 0.0283, 0.0283, 0.0283, 0.0283, 0.07837073], [1516816620000, 0.0283, 0.0283, 0.0283, 0.0283, 0.07836404], [1516816680000, 0.02829999, 0.02829999, 0.02814268, 0.02814268, 0.50021743], [1516816740000, 0.02829999, 0.02829999, 0.02829999, 0.02829999, 0.31838992], [1516816800000, 0.02829999, 0.0283, 0.02829999, 0.0283, 8.64323537], [1516816860000, 0.0283, 0.0283, 0.02816309, 0.02816313, 3.96390642], [1516816920000, 0.0283, 0.0283, 0.0283, 0.0283, 0.66855901], [1516816980000, 0.0283, 0.0283, 0.0281637, 0.0283, 0.20373413], [1516817040000, 0.0283, 0.0283, 0.0283, 0.0283, 60.07829221], [1516817100000, 0.0283, 0.0283, 0.02825, 0.0283, 0.45177819], [1516817160000, 0.02825, 0.02825, 0.02819648, 0.02825, 7.87366356], [1516817220000, 0.02825, 0.02825, 0.02825, 0.02825, 0.07820184], [1516817280000, 0.0281965, 0.02825, 0.0281, 0.02825, 77.42763557], [1516817340000, 0.02825, 0.0283, 0.02816601, 0.02816613, 54.75205814], [1516817400000, 0.02816623, 0.02816623, 0.02816623, 0.02816623, 0.38034419], [1516817460000, 0.02816601, 0.0283582, 0.02816601, 0.0283582, 6.04348994], [1516817520000, 0.0283582, 0.02835827, 0.02816602, 0.02835827, 40.40302536], [1516817580000, 0.02835817, 0.02835821, 0.02835817, 0.02835819, 4.02750526], [1516817640000, 0.02835821, 0.02835821, 0.02816612, 0.02816612, 8.11271078], [1516817760000, 0.02835819, 0.02835819, 0.02835819, 0.02835819, 0.08348524], [1516817880000, 0.02835817, 0.02835817, 0.02835815, 0.02835815, 0.61076419], [1516817940000, 0.02835815, 0.02835815, 0.02835815, 0.02835815, 0.07819174], [1516818000000, 0.02835814, 0.02835814, 0.02835814, 0.02835814, 0.258658], [1516818060000, 0.02835814, 0.02835814, 0.02835814, 0.02835814, 1.65202214], [1516818120000, 0.0283, 0.02835815, 0.0283, 0.0283, 3.14217663], [1516818180000, 0.0283, 0.02835813, 0.0283, 0.02835813, 1.0389578], [1516818240000, 0.02835813, 0.02835813, 0.0283, 0.0283581, 0.50669344], [1516818300000, 0.0283581, 0.0283581, 0.0283581, 0.0283581, 0.60263293], [1516818360000, 0.02830001, 0.02830001, 0.02830001, 0.02830001, 0.0715001], [1516818420000, 0.02835, 0.02835, 0.02835, 0.02835, 0.07791546], [1516818480000, 0.02835, 0.02835, 0.02830001, 0.02830001, 0.46809606], [1516818540000, 0.02830001, 0.02830001, 0.0283, 0.0283, 7.87166939], [1516818600000, 0.02830001, 0.02835, 0.02830001, 0.02835, 0.8463028], [1516818660000, 0.02835, 0.02835, 0.02834998, 0.02834998, 0.89809773], [1516818720000, 0.02834996, 0.02834996, 0.02830001, 0.02830001, 1.26073851], [1516818780000, 0.0283499, 0.0283499, 0.02830001, 0.02830001, 11.28501141], [1516818840000, 0.02830001, 0.02830001, 0.02830001, 0.02830001, 11.90496839], [1516818900000, 0.02834995, 0.02834995, 0.02830001, 0.02834995, 4.01492331], [1516818960000, 0.02834994, 0.02834994, 0.02834994, 0.02834994, 0.0964019], [1516819020000, 0.02830001, 0.02830001, 0.02830001, 0.02830001, 0.202], [1516819080000, 0.02834993, 0.02834994, 0.02830001, 0.02830001, 3.19419403], [1516819140000, 0.02830001, 0.02834993, 0.02830001, 0.02834993, 0.61804572], [1516819440000, 0.028345, 0.028345, 0.028345, 0.028345, 0.03531427], [1516819500000, 0.02834988, 0.02834988, 0.0283498, 0.0283498, 0.43052823], [1516819560000, 0.0283498, 0.0283498, 0.0283498, 0.0283498, 2.07779156], [1516819620000, 0.0283498, 0.0283498, 0.0283498, 0.0283498, 0.14769864], [1516819680000, 0.0283498, 0.0283498, 0.028345, 0.028345, 2.61507059], [1516819740000, 0.028345, 0.028345, 0.028345, 0.028345, 0.07791584], [1516819800000, 0.0283, 0.0283, 0.02820622, 0.02820622, 126.70934036], [1516819860000, 0.0283, 0.0283, 0.02820622, 0.0283, 1.3373139], [1516819920000, 0.0283, 0.0283, 0.0283, 0.0283, 7.33711745], [1516819980000, 0.02829, 0.0283, 0.02820012, 0.0283, 7.8285661], [1516820040000, 0.0283, 0.02834472, 0.02820019, 0.02834472, 26.13621106], [1516820100000, 0.02833, 0.02833, 0.02833, 0.02833, 0.8423887], [1516820160000, 0.02833, 0.02833, 0.02833, 0.02833, 2.5439109], [1516820220000, 0.02833, 0.028345, 0.02820055, 0.02820056, 11.17589163], [1516820280000, 0.02834499, 0.02834499, 0.02834497, 0.02834499, 2.16229692], [1516820340000, 0.02834498, 0.02834498, 0.02834498, 0.02834498, 0.03870236], [1516820400000, 0.02834498, 0.02834498, 0.02834497, 0.02834497, 1.10892621], [1516820460000, 0.02834497, 0.02834497, 0.02820011, 0.02834497, 1.34921491], [1516820520000, 0.02834469, 0.02834469, 0.02834469, 0.02834469, 0.07969068], [1516820580000, 0.02834499, 0.02834499, 0.02834499, 0.02834499, 0.03909575], [1516820640000, 0.02834499, 0.02834499, 0.02820012, 0.02834499, 17.6101915], [1516820700000, 0.02834498, 0.02834498, 0.02834498, 0.02834498, 0.43098744], [1516820760000, 0.028345, 0.028345, 0.0282001, 0.028345, 26.64465144], [1516820820000, 0.02834498, 0.02834498, 0.02834498, 0.02834498, 0.03909577], [1516820880000, 0.0282001, 0.02835827, 0.0282001, 0.02835827, 129.01163498], [1516820940000, 0.02835827, 0.02835827, 0.0282, 0.0282, 191.97745451], [1516821000000, 0.02835826, 0.02837491, 0.0282001, 0.02837491, 50.83084464], [1516821060000, 0.0282001, 0.02837491, 0.0282001, 0.02837491, 3.22383913], [1516821180000, 0.02834491, 0.02834491, 0.02834491, 0.02834491, 1.90086664], [1516821240000, 0.02834491, 0.02834491, 0.02834491, 0.02834491, 0.03909586], [1516821300000, 0.02834491, 0.02837491, 0.02834491, 0.02837491, 0.59943365], [1516821420000, 0.0283749, 0.02837491, 0.0283749, 0.02837491, 2.81505477], [1516821480000, 0.0283749, 0.0283749, 0.02837489, 0.02837489, 0.47025122], [1516821540000, 0.02837488, 0.0284, 0.02837488, 0.0284, 24.06471925], [1516821660000, 0.02839995, 0.02839997, 0.02839995, 0.02839995, 0.160546], [1516821720000, 0.02839995, 0.02839995, 0.02839994, 0.02839994, 0.09315505], [1516821780000, 0.02839991, 0.02839993, 0.02825, 0.02825, 34.14429441], [1516821840000, 0.02825, 0.02839879, 0.02825, 0.02839879, 0.12621885], [1516821900000, 0.02825, 0.02838575, 0.02825, 0.02838575, 0.60232226], [1516821960000, 0.02838518, 0.02838518, 0.02838518, 0.02838518, 0.0803148], [1516822020000, 0.02838488, 0.02838488, 0.02838488, 0.02838488, 2.09476869], [1516822080000, 0.02838401, 0.02838485, 0.02825005, 0.02838485, 0.26882461], [1516822140000, 0.02838485, 0.02838575, 0.02825006, 0.02825006, 1.08249933], [1516822200000, 0.02838575, 0.02838575, 0.02838575, 0.02838575, 0.04495359], [1516822260000, 0.02838575, 0.02838575, 0.02838575, 0.02838575, 0.92106002], [1516822320000, 0.02825119, 0.02825119, 0.02825119, 0.02825119, 0.01956268], [1516822440000, 0.02825139, 0.02825139, 0.02825139, 0.02825139, 0.07045474], [1516822500000, 0.02825142, 0.02825142, 0.02825142, 0.02825142, 0.5], [1516822560000, 0.0282516, 0.02825172, 0.0282516, 0.02825172, 27.99157663], [1516822620000, 0.02838575, 0.02838575, 0.02825119, 0.02825119, 29.90432677], [1516822680000, 0.02838571, 0.02838572, 0.02838571, 0.02838572, 2.79003759], [1516822740000, 0.02838572, 0.02838572, 0.02825119, 0.02825119, 18.67173701], [1516822800000, 0.02825119, 0.02838572, 0.02816602, 0.02816602, 46.00844676], [1516822860000, 0.02816628, 0.02816628, 0.02816628, 0.02816628, 6.28456579], [1516822920000, 0.02838557, 0.02838557, 0.02838557, 0.02838557, 0.76070252], [1516822980000, 0.02838548, 0.0284, 0.02838548, 0.0284, 15.16062259], [1516823040000, 0.0284, 0.0284, 0.0284, 0.0284, 0.66061647], [1516823100000, 0.0284, 0.0284, 0.0284, 0.0284, 0.3996041], [1516823160000, 0.0284, 0.0284, 0.02816785, 0.0284, 0.85091539], [1516823280000, 0.02839999, 0.02839999, 0.02839999, 0.02839999, 1.90724704], [1516823340000, 0.02839999, 0.02839999, 0.02839999, 0.02839999, 1.65515312], [1516823400000, 0.02839998, 0.02839999, 0.02820323, 0.02820323, 1.59049981], [1516823460000, 0.02839993, 0.02839993, 0.02839993, 0.02839993, 0.26666666], [1516823520000, 0.02839991, 0.02839991, 0.02839991, 0.02839991, 1.13665134], [1516823580000, 0.0283415, 0.02839988, 0.02834149, 0.02839988, 3.85437029], [1516823640000, 0.02839988, 0.02839993, 0.02839988, 0.02839993, 1.62008871], [1516823700000, 0.02818227, 0.02839996, 0.02818227, 0.02839995, 3.28540992], [1516823760000, 0.02817915, 0.02817915, 0.02817915, 0.02817915, 34.58464743], [1516823820000, 0.02817915, 0.02817915, 0.02817915, 0.02817915, 0.39745697], [1516823880000, 0.02817915, 0.02817915, 0.02817915, 0.02817915, 95.23958367], [1516823940000, 0.02817915, 0.02817915, 0.02816623, 0.02817915, 20.17831193], [1516824000000, 0.02817918, 0.02839998, 0.02816613, 0.02839984, 49.79567181], [1516824060000, 0.02839979, 0.02839979, 0.02825799, 0.02839211, 8.09247709], [1516824120000, 0.02839996, 0.02839998, 0.02817925, 0.02817925, 5.0112575], [1516824180000, 0.02817924, 0.02839968, 0.02816601, 0.02839968, 44.6421478], [1516824240000, 0.02810013, 0.02839917, 0.02810013, 0.02810041, 42.94598822], [1516824300000, 0.02810227, 0.02839864, 0.02810216, 0.02839839, 33.81230339], [1516824360000, 0.02839828, 0.02839828, 0.02839788, 0.02839788, 3.96770605], [1516824480000, 0.02839739, 0.02839739, 0.02839739, 0.02839739, 0.05297167], [1516824600000, 0.02839662, 0.02839663, 0.02839658, 0.02839661, 2.81723492], [1516824660000, 0.02811086, 0.02839739, 0.02811086, 0.02839739, 1.98080008], [1516824780000, 0.02839738, 0.02839738, 0.02839738, 0.02839738, 1.30759776], [1516824840000, 0.02839737, 0.02839738, 0.02839737, 0.02839737, 4.02908399], [1516824900000, 0.02839738, 0.02839738, 0.02839737, 0.02839737, 1.76072455], [1516824960000, 0.02838664, 0.02839737, 0.02838664, 0.02839737, 3.19678022], [1516825020000, 0.02812147, 0.02812147, 0.02812147, 0.02812147, 0.03021666], [1516825080000, 0.02839738, 0.02839738, 0.02839738, 0.02839738, 0.04639376], [1516825140000, 0.02839737, 0.02839737, 0.02839737, 0.02839737, 0.04607124], [1516825200000, 0.02839738, 0.0283974, 0.02839738, 0.0283974, 0.93767771], [1516825320000, 0.02813265, 0.02813265, 0.02813265, 0.02813265, 0.03700868], [1516825380000, 0.02813294, 0.02813294, 0.0281328, 0.02813284, 6.98244865], [1516825440000, 0.02813284, 0.02813284, 0.02813253, 0.02813284, 11.94680671], [1516825500000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 1.61600419], [1516825560000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 4.4296751], [1516825620000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 3.95173053], [1516825680000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 0.07837876], [1516825740000, 0.02813284, 0.02813284, 0.02813282, 0.02813284, 4.07060486], [1516825800000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 1.39464635], [1516825860000, 0.02813283, 0.02813284, 0.02813283, 0.02813284, 0.23371374], [1516825920000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 0.1137038], [1516825980000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 0.50529346], [1516826040000, 0.02813284, 0.02813284, 0.02813283, 0.02813284, 6.17651245], [1516826100000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 0.47258553], [1516826160000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 20.57128571], [1516826220000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 0.96094513], [1516826280000, 0.02813284, 0.02813284, 0.02813283, 0.02813284, 1.79757126], [1516826340000, 0.02813284, 0.02813284, 0.02813283, 0.02813283, 1.11184247], [1516826400000, 0.02813283, 0.02813284, 0.02813283, 0.02813284, 3.21806666], [1516826460000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 0.56514355], [1516826520000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 9.46301903], [1516826580000, 0.02813284, 0.02813284, 0.02813284, 0.02813284, 6.27058786], [1516826640000, 0.02813283, 0.02837504, 0.02813283, 0.02837501, 126.652331], [1516826700000, 0.02813286, 0.0283748, 0.02813286, 0.0283748, 1.09715974], [1516826820000, 0.02837388, 0.02837388, 0.02837388, 0.02837388, 7.09505781], [1516826880000, 0.02837358, 0.02837366, 0.02830326, 0.02830326, 74.68933175], [1516826940000, 0.02830326, 0.02830326, 0.02813283, 0.02813283, 51.01753916], [1516827000000, 0.02813283, 0.0283033, 0.02813283, 0.0283033, 2.30866229], [1516827120000, 0.0283033, 0.02832103, 0.02813284, 0.0283033, 47.97370243], [1516827180000, 0.0283033, 0.02839999, 0.02813295, 0.02813295, 42.94889695], [1516827240000, 0.02813283, 0.02814, 0.02813283, 0.02814, 17.51356373], [1516827300000, 0.02830228, 0.02830229, 0.02813284, 0.02813285, 5.6693005], [1516827360000, 0.02813287, 0.02830228, 0.02813287, 0.02813289, 0.78484497], [1516827420000, 0.02813289, 0.02813293, 0.02813289, 0.02813293, 0.6732515], [1516827480000, 0.02813291, 0.02813291, 0.02813283, 0.02813283, 42.70485354], [1516827600000, 0.02813288, 0.02813288, 0.02813288, 0.02813288, 0.25015899], [1516827660000, 0.02813291, 0.02813291, 0.02813291, 0.02813291, 0.24], [1516827720000, 0.02836984, 0.02837012, 0.02813291, 0.0282173, 7.62537989], [1516827780000, 0.0282173, 0.0282173, 0.02813289, 0.02813289, 0.19996625], [1516827840000, 0.02821728, 0.02836814, 0.02821728, 0.02836778, 0.66743406], [1516827900000, 0.02836737, 0.02836737, 0.02836723, 0.02836723, 1.39609535], [1516828080000, 0.02836071, 0.02836071, 0.0282202, 0.0282202, 0.48584932], [1516828140000, 0.02826153, 0.02826166, 0.02826153, 0.02826153, 20.82983531], [1516828200000, 0.02826153, 0.02826153, 0.02813291, 0.02813291, 11.87720394], [1516828260000, 0.02813291, 0.02813291, 0.02813291, 0.02813291, 0.79504869], [1516828380000, 0.02835343, 0.02835343, 0.02835343, 0.02835343, 0.1053184], [1516828440000, 0.02835324, 0.02835324, 0.02816104, 0.028353, 2.16903773], [1516828500000, 0.02835297, 0.0284, 0.02835297, 0.0284, 39.55864005], [1516828560000, 0.02826, 0.02837341, 0.02826, 0.02837341, 189.81301961], [1516828680000, 0.0284, 0.0284, 0.0284, 0.0284, 0.11577782], [1516828740000, 0.02839994, 0.02839994, 0.02839979, 0.02839979, 156.92133967], [1516828800000, 0.02839399, 0.02839399, 0.02838799, 0.02838799, 1.52728336], [1516828920000, 0.02837893, 0.02837894, 0.02816112, 0.02816112, 49.87286178], [1516828980000, 0.02837886, 0.02837887, 0.02837699, 0.028377, 72.24376245], [1516829100000, 0.02837698, 0.02837698, 0.02816117, 0.02837689, 1.77727058], [1516829160000, 0.02826954, 0.02826954, 0.02816457, 0.02816457, 2.20006381], [1516829220000, 0.02816119, 0.02816119, 0.02816119, 0.02816119, 8.31317627], [1516829280000, 0.02816119, 0.02816119, 0.02816118, 0.02816118, 0.63772602], [1516829340000, 0.02816119, 0.02837659, 0.02816118, 0.02837659, 14.69484297], [1516829520000, 0.02836988, 0.02836988, 0.02836985, 0.02836985, 0.46179455], [1516829580000, 0.02836976, 0.02836976, 0.02836956, 0.02836956, 13.18500248], [1516829700000, 0.02816126, 0.02816126, 0.02816125, 0.02816125, 0.49192252], [1516829760000, 0.02816125, 0.02836888, 0.02816125, 0.02836888, 0.05220576], [1516829820000, 0.02836888, 0.02836888, 0.02836875, 0.02836875, 0.09991343], [1516829880000, 0.02836867, 0.02836867, 0.02836867, 0.02836867, 0.03940658], [1516829940000, 0.02816126, 0.02816126, 0.0281612, 0.02816126, 30.20599662], [1516830000000, 0.02816126, 0.02816126, 0.02811087, 0.02816126, 18.27621166], [1516830060000, 0.02816126, 0.02816126, 0.02811088, 0.02811088, 12.6454796], [1516830120000, 0.02811088, 0.02836795, 0.02811086, 0.02836795, 6.17470051], [1516830180000, 0.02834795, 0.02836888, 0.02811472, 0.02811472, 502.45], [1516830240000, 0.02836783, 0.02836783, 0.02811478, 0.02811492, 6.04450287], [1516830300000, 0.02836781, 0.02836781, 0.02836781, 0.02836781, 0.7050247], [1516830360000, 0.0283678, 0.02836888, 0.02813522, 0.02836888, 378.9407485], [1516830420000, 0.028365, 0.02836888, 0.028365, 0.02836888, 4.38794337], [1516830480000, 0.02836888, 0.02836888, 0.02836888, 0.02836888, 0.035], [1516830540000, 0.02836888, 0.02836888, 0.02836888, 0.02836888, 1.60232771], [1516830600000, 0.02835999, 0.02836, 0.02835999, 0.02835999, 1.36510866], [1516830660000, 0.02835999, 0.02835999, 0.02826194, 0.02826194, 35.88294584], [1516830780000, 0.02826194, 0.02836888, 0.02826194, 0.02826194, 42.68184364], [1516830840000, 0.02836886, 0.02836886, 0.02836886, 0.02836886, 0.12971905], [1516830900000, 0.02815533, 0.02815533, 0.02811206, 0.02811232, 5.54395765], [1516830960000, 0.02811249, 0.02836883, 0.02811249, 0.02836883, 14.59681029], [1516831020000, 0.02836883, 0.02836883, 0.0283688, 0.0283688, 5.17907912], [1516831140000, 0.02836872, 0.02836872, 0.02836856, 0.02836856, 3.22722743], [1516831200000, 0.02811835, 0.02836888, 0.02811832, 0.02836888, 667.99906052], [1516831260000, 0.02836888, 0.02836888, 0.02836888, 0.02836888, 0.7324248], [1516831320000, 0.02811966, 0.02836885, 0.02811963, 0.0282, 5.39176153], [1516831380000, 0.0282, 0.0282, 0.0282, 0.0282, 0.87624479], [1516831440000, 0.0282, 0.0282, 0.0282, 0.0282, 1.57979466], [1516831500000, 0.0282, 0.0282, 0.02819999, 0.02819999, 4.24963736], [1516831560000, 0.02819999, 0.02819999, 0.02819999, 0.02819999, 11.10810399], [1516831620000, 0.02819999, 0.0282, 0.02819999, 0.0282, 2.47273987], [1516831680000, 0.0282, 0.0282, 0.0282, 0.0282, 2.93714533], [1516831740000, 0.0282, 0.0282282, 0.02819999, 0.02819999, 1.51900807], [1516831800000, 0.0282282, 0.02836888, 0.0282282, 0.02836888, 0.66918127], [1516831920000, 0.02836888, 0.02837, 0.02836888, 0.02837, 0.13658432], [1516831980000, 0.02836888, 0.02836888, 0.02836888, 0.02836888, 0.02667559], [1516832040000, 0.02837, 0.02837697, 0.02837, 0.02837697, 1.09030814], [1516832100000, 0.02837, 0.02837694, 0.02837, 0.02837694, 1.28532186], [1516832220000, 0.02837699, 0.02837699, 0.02837699, 0.02837699, 2.81918554], [1516832280000, 0.02837899, 0.02837899, 0.02837899, 0.02837899, 0.03714476], [1516832400000, 0.02837899, 0.02843711, 0.02837899, 0.02843711, 6.37826629], [1516832460000, 0.02835947, 0.02843711, 0.02835947, 0.02843711, 8.56194659], [1516832520000, 0.02843711, 0.02843809, 0.02820014, 0.0282336, 2.46296841], [1516832580000, 0.0282336, 0.0282336, 0.0282336, 0.0282336, 0.37749287], [1516832640000, 0.028233, 0.028233, 0.028233, 0.028233, 5.18222117], [1516832700000, 0.028233, 0.028233, 0.028233, 0.028233, 0.43238226], [1516832760000, 0.028233, 0.028233, 0.028233, 0.028233, 0.03908458], [1516832820000, 0.02823, 0.02823, 0.02823, 0.02823, 0.07816864], [1516832880000, 0.02823, 0.028233, 0.02823, 0.028233, 16.26814335], [1516832940000, 0.02843844, 0.02846025, 0.02843844, 0.02846025, 1.20266112], [1516833000000, 0.02843844, 0.0284602, 0.02843844, 0.0284602, 0.70327444], [1516833060000, 0.02843842, 0.02843844, 0.02843842, 0.02843844, 0.5], [1516833120000, 0.02843844, 0.02843844, 0.02843844, 0.02843844, 0.24466779], [1516833240000, 0.02843844, 0.02843844, 0.02843844, 0.02843844, 12.75004892], [1516833420000, 0.02843838, 0.02843844, 0.02843838, 0.02843844, 0.04136795], [1516833480000, 0.0284, 0.0284, 0.0284, 0.0284, 1.1513803], [1516833540000, 0.0284, 0.0284, 0.02833828, 0.02833828, 1.9990522], [1516833600000, 0.02833828, 0.02833828, 0.02825004, 0.02833828, 3.36550559], [1516833660000, 0.02833828, 0.02833828, 0.02825708, 0.02833828, 19.57182274], [1516833720000, 0.02833828, 0.02833828, 0.02833828, 0.02833828, 4.95689858], [1516833780000, 0.02839999, 0.0284, 0.02839999, 0.0284, 1.03957921], [1516833840000, 0.0284, 0.0284, 0.02827821, 0.0284, 1.36360237], [1516833900000, 0.0284, 0.02843844, 0.0284, 0.02840001, 0.40190997], [1516833960000, 0.02840001, 0.02840001, 0.02840001, 0.02840001, 0.46077259], [1516834020000, 0.02840001, 0.02845056, 0.02840001, 0.02845056, 5.55148931], [1516834080000, 0.02827932, 0.02827932, 0.02827931, 0.02827931, 0.39873751], [1516834200000, 0.02843844, 0.02843844, 0.02843, 0.02843, 0.56623955], [1516834260000, 0.02827943, 0.0282795, 0.02827943, 0.02827943, 3.32573413], [1516834320000, 0.02843, 0.02843, 0.02843, 0.02843, 3.50912263], [1516834380000, 0.02827943, 0.02827943, 0.02827943, 0.02827943, 0.78261838], [1516834500000, 0.02842999, 0.02843, 0.02842999, 0.02843, 0.35174111], [1516834560000, 0.02842999, 0.02843, 0.02827942, 0.02842151, 7.41876725], [1516834620000, 0.02842151, 0.02843, 0.02842151, 0.02843, 0.69911997], [1516834680000, 0.02827936, 0.02837581, 0.02827936, 0.02837581, 0.10846106], [1516834740000, 0.02837579, 0.02837579, 0.02837579, 0.02837579, 0.45842001], [1516834800000, 0.02837579, 0.02837579, 0.02837579, 0.02837579, 0.17673023], [1516834860000, 0.02837579, 0.02837579, 0.02837579, 0.02837579, 0.40792815], [1516834980000, 0.02827937, 0.02837578, 0.028233, 0.028233, 11.90304562], [1516835040000, 0.02837568, 0.02837568, 0.02837568, 0.02837568, 0.58168763], [1516835100000, 0.0283, 0.0283, 0.0283, 0.0283, 0.03904839], [1516835160000, 0.0283, 0.02837568, 0.0283, 0.02837568, 12.5226075], [1516835220000, 0.02837569, 0.02837569, 0.02823444, 0.02823444, 3.37101337], [1516835280000, 0.0283757, 0.0283757, 0.0283757, 0.0283757, 0.03738204], [1516835460000, 0.02837, 0.02837, 0.02837, 0.02837, 0.80703511], [1516835520000, 0.02823454, 0.02823454, 0.02823454, 0.02823454, 0.29566], [1516835580000, 0.02836858, 0.02837, 0.02836858, 0.02837, 0.0518896], [1516835700000, 0.02835, 0.02835, 0.02830016, 0.02830016, 1.61618381], [1516835760000, 0.0283, 0.0283, 0.02823442, 0.02823442, 2.17646267], [1516835820000, 0.02823441, 0.02823442, 0.02823441, 0.02823441, 4.61296789], [1516835880000, 0.02823441, 0.02823449, 0.02823441, 0.02823449, 0.42626366], [1516835940000, 0.02823449, 0.02823449, 0.02823441, 0.02823441, 0.78197977], [1516836060000, 0.02823441, 0.02823441, 0.02823441, 0.02823441, 0.5], [1516836240000, 0.02823441, 0.02823441, 0.02823441, 0.02823441, 8.54684758], [1516836360000, 0.02823441, 0.02823441, 0.02823441, 0.02823441, 0.47900908], [1516836420000, 0.0283, 0.0283, 0.02823441, 0.02823441, 5.99235125], [1516836480000, 0.0283, 0.0283, 0.0283, 0.0283, 0.675], [1516836600000, 0.02823441, 0.02823441, 0.028233, 0.028233, 14.0], [1516836720000, 0.0283, 0.0283, 0.0283, 0.0283, 0.25175299], [1516836780000, 0.0283, 0.0283, 0.0283, 0.0283, 1.49031343], [1516836840000, 0.0283, 0.0283, 0.028233, 0.028233, 27.86337255], [1516836900000, 0.028233, 0.0283, 0.028233, 0.0283, 1.55335689], [1516836960000, 0.0283, 0.0283, 0.02819999, 0.02819999, 4.86398437], [1516837020000, 0.0283, 0.0283, 0.02815001, 0.02815001, 3.82136186], [1516837080000, 0.02815, 0.02815, 0.02815, 0.02815, 0.17761989], [1516837140000, 0.02813481, 0.02813481, 0.02813481, 0.02813481, 0.10271771], [1516837260000, 0.02829998, 0.0283, 0.02811089, 0.0283, 14.14021225], [1516837320000, 0.0283, 0.02834995, 0.02811317, 0.02811317, 5.51656493], [1516837440000, 0.02820863, 0.02820863, 0.02811085, 0.02811085, 15.180744], [1516837500000, 0.02834994, 0.02834997, 0.02834989, 0.02834989, 2.21465861], [1516837560000, 0.02834966, 0.02834966, 0.02834966, 0.02834966, 12.06789424], [1516837620000, 0.02834958, 0.0283496, 0.02834956, 0.02834959, 3.41269839], [1516837680000, 0.02812568, 0.02834933, 0.02812568, 0.02812582, 3.81358117], [1516837740000, 0.0283491, 0.0283491, 0.02812579, 0.0283491, 1.0751124], [1516837800000, 0.02812581, 0.02834881, 0.02812581, 0.0283487, 23.97772879], [1516837860000, 0.02834864, 0.02834867, 0.02812581, 0.02812583, 5.71062382], [1516837920000, 0.02812583, 0.02834862, 0.02812581, 0.02812584, 3.78268767], [1516837980000, 0.02812582, 0.02834505, 0.02812581, 0.02834502, 1.71291927], [1516838040000, 0.02812581, 0.02834461, 0.02812581, 0.02812581, 7.44964148], [1516838100000, 0.02812581, 0.02834444, 0.0281258, 0.0281258, 5.59304236], [1516838160000, 0.02834056, 0.02834056, 0.0281258, 0.0281258, 7.85869189], [1516838220000, 0.02812579, 0.02812579, 0.02805001, 0.0281, 11.04596762], [1516838280000, 0.0281, 0.0283389, 0.0277984, 0.0281, 285.44595387], [1516838340000, 0.0282, 0.0282, 0.02815, 0.02819999, 4.11763252], [1516838400000, 0.0281, 0.02829477, 0.02809999, 0.02829474, 58.42286765], [1516838460000, 0.02829466, 0.02829466, 0.028, 0.02829458, 111.87178274], [1516838520000, 0.02829451, 0.02829451, 0.02800005, 0.02825426, 18.04989896], [1516838580000, 0.02825408, 0.02829463, 0.02800008, 0.02800008, 66.88560319], [1516838700000, 0.02825402, 0.02829451, 0.02800035, 0.02825406, 7.76979576], [1516838760000, 0.02825406, 0.02829455, 0.02800094, 0.02829455, 13.36017934], [1516838820000, 0.02825405, 0.02825405, 0.02825405, 0.02825405, 0.12040207], [1516838880000, 0.02825405, 0.02825405, 0.0282321, 0.0282321, 0.54109692], [1516838940000, 0.0282321, 0.02829459, 0.0282321, 0.0282321, 4.10235194], [1516839000000, 0.02823005, 0.02824502, 0.02823005, 0.02824502, 1.46162254], [1516839060000, 0.028245, 0.0282946, 0.028245, 0.0282946, 5.36113304], [1516839120000, 0.02824218, 0.02829461, 0.02824218, 0.02829461, 2.86551604], [1516839240000, 0.02829429, 0.02829429, 0.02829429, 0.02829429, 0.10576339], [1516839300000, 0.02801458, 0.02829479, 0.02801458, 0.02829479, 4.70846366], [1516839360000, 0.02802509, 0.02802509, 0.02802509, 0.02802509, 3.87980249], [1516839480000, 0.02807903, 0.02829474, 0.02807902, 0.02829474, 0.10637592], [1516839540000, 0.02829456, 0.02829456, 0.02829456, 0.02829456, 26.73667003], [1516839600000, 0.028294, 0.028294, 0.02829397, 0.02829397, 0.70686364], [1516839660000, 0.02829388, 0.02829388, 0.02829383, 0.02829384, 0.263123], [1516839720000, 0.02810001, 0.02828981, 0.02800011, 0.02828981, 11.55460967], [1516839780000, 0.02828962, 0.02828962, 0.02828962, 0.02828962, 0.0877508], [1516839900000, 0.02828863, 0.02828863, 0.02800202, 0.02827841, 3.38291755], [1516839960000, 0.02827828, 0.02827828, 0.02827828, 0.02827828, 0.10446238], [1516840020000, 0.02800367, 0.02800367, 0.02800364, 0.02800364, 1.53778559], [1516840200000, 0.02819996, 0.02819996, 0.02819996, 0.02819996, 0.80964882], [1516840260000, 0.02819996, 0.02819996, 0.02819996, 0.02819996, 0.03735329], [1516840320000, 0.02819996, 0.02819996, 0.02819993, 0.02819993, 0.11772377], [1516840380000, 0.02819993, 0.02819993, 0.02806036, 0.02819851, 0.56498213], [1516840440000, 0.02819996, 0.02819996, 0.02819996, 0.02819996, 7.30516235], [1516840500000, 0.02819876, 0.02819996, 0.02819876, 0.02819876, 61.15016527], [1516840560000, 0.02819876, 0.02819876, 0.02819876, 0.02819876, 2.84904715], [1516840620000, 0.02819996, 0.02819996, 0.02819876, 0.02819876, 3.91235199], [1516840680000, 0.02819876, 0.02819876, 0.02810616, 0.02810616, 6.69470959], [1516840740000, 0.02810616, 0.02819876, 0.02810616, 0.02819876, 0.85820664], [1516840800000, 0.02810616, 0.02819876, 0.02805896, 0.02805896, 4.10281697], [1516840920000, 0.02819876, 0.02819876, 0.02819876, 0.02819876, 0.57003996], [1516840980000, 0.02819876, 0.02819876, 0.02805896, 0.02805896, 4.21541841], [1516841040000, 0.02819873, 0.02819873, 0.02805896, 0.02805896, 0.96752553], [1516841100000, 0.02805896, 0.02819875, 0.02805896, 0.02819875, 2.20628595], [1516841160000, 0.02819876, 0.02819876, 0.02819876, 0.02819876, 0.08078896], [1516841220000, 0.02819876, 0.02819876, 0.02805688, 0.02805688, 16.84472244], [1516841280000, 0.02805688, 0.028059, 0.02805688, 0.028059, 9.47189941], [1516841340000, 0.028059, 0.028059, 0.02805689, 0.02805689, 0.05005993], [1516841400000, 0.02805689, 0.02805689, 0.02805689, 0.02805689, 1.45], [1516841460000, 0.02808494, 0.02808494, 0.02805808, 0.02808494, 0.53367976], [1516841520000, 0.02819871, 0.02819876, 0.02819869, 0.02819876, 5.21154147], [1516841580000, 0.02819871, 0.02819871, 0.02819871, 0.02819871, 0.15161545], [1516841640000, 0.02819871, 0.02819871, 0.02819871, 0.02819871, 0.92344854], [1516841760000, 0.02819872, 0.02819872, 0.02819272, 0.02819272, 14.1096712], [1516841820000, 0.02819272, 0.02819872, 0.02819272, 0.02819872, 1.77894921], [1516841880000, 0.02819872, 0.02819872, 0.02819872, 0.02819872, 0.11], [1516841940000, 0.02805723, 0.02805723, 0.02805723, 0.02805723, 0.65], [1516842000000, 0.02815, 0.02819871, 0.02815, 0.02819871, 3.45971752], [1516842060000, 0.02819872, 0.02819872, 0.02819872, 0.02819872, 0.70925254], [1516842120000, 0.02819874, 0.02819874, 0.02819874, 0.02819874, 0.52031665], [1516842180000, 0.02805729, 0.02805729, 0.02805729, 0.02805729, 0.05], [1516842240000, 0.02819871, 0.02819871, 0.02819871, 0.02819871, 0.01993041], [1516842300000, 0.02819871, 0.02819873, 0.02805722, 0.02819873, 8.64565461], [1516842420000, 0.02805728, 0.02819868, 0.02805688, 0.02819868, 0.22748628], [1516842540000, 0.02819865, 0.02819866, 0.02819865, 0.02819866, 0.06993884], [1516842660000, 0.02819865, 0.02819874, 0.02819865, 0.02819874, 1.0], [1516842780000, 0.02813248, 0.02813249, 0.02813248, 0.02813249, 4.96750183], [1516842840000, 0.02805689, 0.02806, 0.02795002, 0.02800664, 113.03755468], [1516842900000, 0.02813247, 0.02819994, 0.02813247, 0.02819994, 1.0], [1516842960000, 0.02819992, 0.02819992, 0.02819992, 0.02819992, 1.08818928], [1516843080000, 0.02807736, 0.02807736, 0.02795895, 0.02795895, 1.0], [1516843140000, 0.02817593, 0.02817594, 0.02817593, 0.02817594, 0.112861], [1516843200000, 0.02817593, 0.02819994, 0.02812595, 0.0281992, 15.22109144], [1516843380000, 0.02819916, 0.02819916, 0.02812595, 0.02812595, 0.66560283], [1516843440000, 0.02799582, 0.02812595, 0.02799582, 0.02812595, 0.61726571], [1516843500000, 0.02803741, 0.02803741, 0.02803741, 0.02803741, 1.91985555], [1516843560000, 0.02803741, 0.02803741, 0.02800479, 0.02803739, 0.5454839], [1516843620000, 0.02803739, 0.02803739, 0.02803739, 0.02803739, 1.14993494], [1516843680000, 0.02803739, 0.0280374, 0.02803597, 0.0280374, 2.2663827], [1516843740000, 0.028125, 0.028125, 0.028125, 0.028125, 0.07345004], [1516843860000, 0.02812499, 0.028125, 0.0280374, 0.02812499, 3.7694889], [1516843920000, 0.02812499, 0.02812593, 0.02811817, 0.02811817, 16.27399997], [1516843980000, 0.02795373, 0.02812592, 0.02795373, 0.02812592, 2.76099326], [1516844040000, 0.02812592, 0.02812592, 0.02812591, 0.02812591, 14.07688972], [1516844100000, 0.02812592, 0.02812592, 0.02811817, 0.02811817, 1.12163834], [1516844160000, 0.02812592, 0.02812592, 0.02811817, 0.02812592, 17.53047804], [1516844220000, 0.02812592, 0.02812592, 0.02811817, 0.02811817, 5.35824664], [1516844280000, 0.02811817, 0.02811817, 0.02811817, 0.02811817, 0.31848865], [1516844340000, 0.02811816, 0.02812592, 0.02811816, 0.02812592, 14.05331768], [1516844400000, 0.02812592, 0.02812592, 0.02795501, 0.02795501, 5.70700299], [1516844460000, 0.02812591, 0.02812592, 0.02812591, 0.02812592, 14.05331768], [1516844520000, 0.02812591, 0.02812592, 0.02795621, 0.02795621, 10.85464283], [1516844580000, 0.02812592, 0.02812592, 0.02795678, 0.02795678, 33.73942902], [1516844640000, 0.02812592, 0.02812592, 0.02812591, 0.02812592, 15.62344052], [1516844700000, 0.02812592, 0.02813, 0.02812592, 0.02813, 18.08154312], [1516844760000, 0.02812999, 0.02819989, 0.02812999, 0.02813, 12.9941169], [1516844820000, 0.02819987, 0.0282, 0.02795808, 0.02795808, 57.32015219], [1516844880000, 0.02819996, 0.02819996, 0.02818403, 0.02818403, 9.10208681], [1516844940000, 0.02818403, 0.02818403, 0.02818403, 0.02818403, 0.26531276], [1516845000000, 0.02819998, 0.0282, 0.02796818, 0.0282, 3.16102473], [1516845060000, 0.0282, 0.0282, 0.0282, 0.0282, 3.26088988], [1516845120000, 0.0282, 0.0282, 0.0282, 0.0282, 0.1], [1516845180000, 0.02819997, 0.02819997, 0.02819996, 0.02819996, 0.54533299], [1516845240000, 0.02819996, 0.02819996, 0.02819995, 0.02819996, 0.62188965], [1516845300000, 0.02819995, 0.02819995, 0.02797082, 0.02819989, 3.08776924], [1516845360000, 0.02819989, 0.02819989, 0.02797161, 0.02797161, 0.21674968], [1516845420000, 0.02819986, 0.02819986, 0.02819986, 0.02819986, 0.06505177], [1516845480000, 0.02804266, 0.02819999, 0.02804266, 0.02819998, 25.33261182], [1516845540000, 0.02808617, 0.02808617, 0.02799904, 0.02799904, 0.46903979], [1516845600000, 0.02819989, 0.02819989, 0.02819989, 0.02819989, 0.35461118], [1516845720000, 0.02812939, 0.02819993, 0.02812939, 0.02819993, 0.78812295], [1516845780000, 0.02799923, 0.02799923, 0.02795625, 0.02799923, 35.48374201], [1516845840000, 0.02799923, 0.02799923, 0.02799921, 0.02799921, 5.91791459], [1516845900000, 0.0279992, 0.02799923, 0.02795625, 0.02799923, 6.69651473], [1516845960000, 0.02799923, 0.02799923, 0.02799922, 0.02799923, 2.71832491], [1516846020000, 0.02799923, 0.02799923, 0.02799923, 0.02799923, 13.51098046], [1516846080000, 0.02799921, 0.02799923, 0.02795631, 0.02799923, 4.86370522], [1516846140000, 0.02799923, 0.02799923, 0.02795631, 0.02799923, 1.37587376], [1516846200000, 0.02799923, 0.02799923, 0.02795632, 0.02799923, 7.51674101], [1516846260000, 0.02799922, 0.02799923, 0.02799922, 0.02799923, 7.44961305], [1516846320000, 0.02799923, 0.02799923, 0.02799922, 0.02799923, 0.39661865], [1516846380000, 0.02799923, 0.02799923, 0.02799921, 0.02799923, 2.44085638], [1516846440000, 0.02799923, 0.02799923, 0.02799922, 0.02799923, 71.63455358], [1516846500000, 0.02819922, 0.02819922, 0.02819915, 0.02819915, 1.94975081], [1516846560000, 0.0279992, 0.0279992, 0.0279992, 0.0279992, 0.1], [1516846620000, 0.0279992, 0.0281991, 0.0279992, 0.0281991, 5.01600299], [1516846680000, 0.02819908, 0.02819909, 0.02795678, 0.02795678, 3.10733386], [1516846800000, 0.02819897, 0.02819897, 0.02819897, 0.02819897, 0.04012537], [1516846860000, 0.02819876, 0.02819876, 0.02819876, 0.02819876, 0.47760076], [1516846980000, 0.02819865, 0.02819866, 0.02801261, 0.02801261, 5.4533424], [1516847040000, 0.02801261, 0.0281986, 0.02801261, 0.0281986, 0.66736613], [1516847100000, 0.02801261, 0.0281986, 0.0280126, 0.0280126, 8.02666593], [1516847160000, 0.02819861, 0.02819862, 0.02819861, 0.02819862, 0.72384569], [1516847220000, 0.02819862, 0.02819865, 0.02819862, 0.02819864, 1.02341107], [1516847280000, 0.02819862, 0.02819864, 0.02819862, 0.02819864, 16.82464611], [1516847340000, 0.02819863, 0.0282, 0.02816001, 0.0282, 32.37265934], [1516847400000, 0.0281703, 0.0282, 0.0281703, 0.0282, 0.57603486], [1516847460000, 0.02819999, 0.0282, 0.02819998, 0.0282, 3.49205141], [1516847520000, 0.02819997, 0.02819999, 0.02819997, 0.02819999, 0.36580676], [1516847580000, 0.02819983, 0.02819983, 0.02819983, 0.02819983, 0.03864983], [1516847640000, 0.02819982, 0.02819984, 0.02819982, 0.02819984, 1.21453736], [1516847700000, 0.02819983, 0.02819983, 0.02819981, 0.02819981, 2.12767464], [1516847760000, 0.0281998, 0.02819981, 0.0281998, 0.0281998, 1.06588503], [1516847820000, 0.0281998, 0.02819981, 0.02801543, 0.0281998, 0.801241], [1516847940000, 0.02801683, 0.02801683, 0.0280168, 0.0280168, 0.65861177], [1516848000000, 0.02801683, 0.0281998, 0.02801672, 0.0281998, 0.5670295], [1516848120000, 0.02819979, 0.02819979, 0.02819979, 0.02819979, 0.20510903], [1516848300000, 0.02801678, 0.02801678, 0.02801672, 0.02801672, 47.80435374], [1516848360000, 0.02801672, 0.02801672, 0.02791142, 0.02791142, 29.34752204], [1516848420000, 0.0280166, 0.0280166, 0.0280166, 0.0280166, 0.20072534], [1516848480000, 0.0280166, 0.0280166, 0.0280166, 0.0280166, 0.78242475], [1516848540000, 0.0280166, 0.0280166, 0.02801659, 0.0280166, 0.11844325], [1516848600000, 0.02801519, 0.0280166, 0.02792496, 0.0280166, 16.87047896], [1516848660000, 0.0280166, 0.02819681, 0.02798716, 0.02798716, 14.31809661], [1516848720000, 0.02801661, 0.02801661, 0.02792721, 0.02801661, 3.1591542], [1516848780000, 0.02801661, 0.02801661, 0.02792761, 0.02801661, 5.08654728], [1516848840000, 0.02801661, 0.02801661, 0.02792762, 0.02792762, 0.39220726], [1516848900000, 0.0280166, 0.02801661, 0.0280166, 0.02801661, 2.27538912], [1516848960000, 0.028, 0.02801661, 0.02792744, 0.02801661, 78.22886706], [1516849020000, 0.02819568, 0.02819568, 0.02819568, 0.02819568, 0.04102758], [1516849080000, 0.02801661, 0.02801661, 0.02793013, 0.02801661, 12.67166666], [1516849140000, 0.02801661, 0.02816674, 0.02793013, 0.02816674, 0.38694817], [1516849200000, 0.02793013, 0.02818087, 0.02792744, 0.02818083, 0.90444812], [1516849320000, 0.02817993, 0.02817995, 0.02817993, 0.02817995, 4.0], [1516849380000, 0.0281799, 0.02817993, 0.02817989, 0.02817989, 0.12426714], [1516849440000, 0.02817988, 0.02817988, 0.02817988, 0.02817988, 1.00400299], [1516849500000, 0.02817979, 0.02817979, 0.02817967, 0.02817974, 0.74604934], [1516849620000, 0.0281793, 0.0281793, 0.0281793, 0.0281793, 0.49310975], [1516849680000, 0.028179, 0.028179, 0.028179, 0.028179, 0.03903614], [1516849740000, 0.02793339, 0.02817898, 0.02792792, 0.02817898, 13.98515094], [1516849800000, 0.02817887, 0.02817892, 0.02817887, 0.02817892, 2.83052333], [1516849860000, 0.028, 0.02817892, 0.028, 0.02817892, 3.31365063], [1516849920000, 0.02817891, 0.02817891, 0.02817891, 0.02817891, 0.01831822], [1516849980000, 0.02817891, 0.02817892, 0.02817891, 0.02817892, 0.50967728], [1516850040000, 0.02817892, 0.02817892, 0.02790125, 0.02790125, 20.03626808], [1516850100000, 0.0281784, 0.0281784, 0.02790124, 0.02817832, 6.74275073], [1516850160000, 0.02817831, 0.02817831, 0.02810788, 0.02817831, 2.12929806], [1516850400000, 0.02790126, 0.02810784, 0.02790126, 0.02790127, 2.02314219], [1516850460000, 0.02810784, 0.02810784, 0.02810784, 0.02810784, 0.17391951], [1516850520000, 0.02810781, 0.02810788, 0.02810781, 0.02810788, 1.48963854], [1516850580000, 0.02810502, 0.02810502, 0.02810502, 0.02810502, 4.90673503], [1516850640000, 0.02790234, 0.02810502, 0.02790234, 0.02810502, 1.59619148], [1516850700000, 0.02810501, 0.02810502, 0.02810501, 0.02810502, 7.85105814], [1516850760000, 0.02810499, 0.02810499, 0.02810499, 0.02810499, 0.1064763], [1516850820000, 0.02790903, 0.02810502, 0.02790901, 0.02810502, 85.68852898], [1516850880000, 0.02810502, 0.02810502, 0.02810501, 0.02810501, 10.01823373], [1516850940000, 0.02810501, 0.02810501, 0.02804306, 0.02804306, 0.5155097], [1516851120000, 0.02804305, 0.02810502, 0.02804305, 0.02810502, 1.30542289], [1516851180000, 0.02807109, 0.02807109, 0.02807109, 0.02807109, 3.16354006], [1516851240000, 0.02807109, 0.02807109, 0.02807109, 0.02807109, 0.11458982], [1516851300000, 0.02810498, 0.028105, 0.02807109, 0.028105, 1.88576725], [1516851360000, 0.02804306, 0.028105, 0.02798965, 0.02798966, 12.13472062], [1516851480000, 0.02795, 0.02798966, 0.02795, 0.02798966, 1.56024788], [1516851540000, 0.02810499, 0.028105, 0.02798966, 0.02798966, 19.36274622], [1516851600000, 0.02798966, 0.02798966, 0.02798966, 0.02798966, 1.31134502], [1516851660000, 0.02795, 0.02798965, 0.02795, 0.02798965, 2.12762804], [1516851720000, 0.02798965, 0.02798965, 0.02798965, 0.02798965, 0.59198472], [1516851840000, 0.02798963, 0.02798965, 0.02798963, 0.02798965, 8.36918417], [1516851900000, 0.02798965, 0.02798965, 0.02798965, 0.02798965, 39.95297466], [1516851960000, 0.02798965, 0.02798965, 0.02798964, 0.02798965, 4.55849933], [1516852020000, 0.02798965, 0.02798965, 0.02798965, 0.02798965, 0.28332456], [1516852080000, 0.02798965, 0.02798965, 0.02798965, 0.02798965, 2.48259041], [1516852140000, 0.02795, 0.02795, 0.02795, 0.02795, 1.21920655], [1516852200000, 0.02798964, 0.02798965, 0.02798964, 0.02798965, 4.8842362], [1516852260000, 0.02795, 0.02795, 0.02790124, 0.02790124, 0.99868593], [1516852320000, 0.02798964, 0.02798965, 0.02760162, 0.02790124, 336.80511847], [1516852380000, 0.02790124, 0.02817791, 0.0279012, 0.02817791, 5.59570308], [1516852440000, 0.028, 0.02804999, 0.02790124, 0.02804997, 0.67010466], [1516852500000, 0.02804994, 0.02804997, 0.02804994, 0.02804997, 0.82540922], [1516852560000, 0.02804994, 0.02804994, 0.0279012, 0.02804994, 76.69985462], [1516852620000, 0.02800999, 0.02801, 0.02800999, 0.02801, 48.44237951], [1516852680000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 1.87636639], [1516852740000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 5.12758222], [1516852800000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 6.60285151], [1516852860000, 0.0279012, 0.0279012, 0.02790118, 0.02790118, 4.26175878], [1516852920000, 0.02790118, 0.02790118, 0.02790118, 0.02790118, 9.4482956], [1516852980000, 0.02790118, 0.0279012, 0.02790118, 0.0279012, 0.68857969], [1516853040000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 6.50458646], [1516853100000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 7.53824383], [1516853160000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 9.21783543], [1516853220000, 0.0279012, 0.0279012, 0.0279, 0.0279012, 1.47599238], [1516853280000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 19.4213804], [1516853340000, 0.0279012, 0.0279012, 0.0279, 0.0279, 12.47336739], [1516853400000, 0.0279012, 0.0279012, 0.0279, 0.0279, 0.16515998], [1516853460000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 2.74922911], [1516853520000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 0.07903232], [1516853580000, 0.0279, 0.0279012, 0.0279, 0.0279012, 5.76588553], [1516853640000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 0.09903232], [1516853700000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 0.39792368], [1516853760000, 0.0279, 0.0279, 0.02783877, 0.02783877, 1.06708008], [1516853820000, 0.0279012, 0.02800984, 0.0279012, 0.02800984, 16.76959227], [1516853880000, 0.02793981, 0.02793981, 0.02793981, 0.02793981, 0.20717657], [1516853940000, 0.02793981, 0.02793981, 0.02793981, 0.02793981, 0.34909337], [1516854000000, 0.0279398, 0.02793981, 0.02775124, 0.02793981, 2.99108042], [1516854060000, 0.02793977, 0.02793981, 0.02793977, 0.02793981, 0.67783842], [1516854120000, 0.0279398, 0.0279398, 0.0279398, 0.0279398, 0.035946], [1516854240000, 0.02793979, 0.02793979, 0.02793979, 0.02793979, 1.04269875], [1516854300000, 0.02793979, 0.02793979, 0.02793979, 0.02793979, 0.35791236], [1516854360000, 0.02793974, 0.02793975, 0.02784202, 0.02793974, 1.44931207], [1516854480000, 0.02793973, 0.02793979, 0.02793973, 0.02793979, 18.69426812], [1516854540000, 0.02793979, 0.02793979, 0.02783025, 0.0279, 107.80633924], [1516854600000, 0.02793979, 0.02800984, 0.02783025, 0.02800981, 29.90278514], [1516854660000, 0.02800981, 0.02800981, 0.02800981, 0.02800981, 1.98308304], [1516854720000, 0.028, 0.02800981, 0.028, 0.0280098, 3.27110031], [1516854780000, 0.02800979, 0.02800979, 0.02800979, 0.02800979, 0.042], [1516854840000, 0.02800979, 0.02800979, 0.02800979, 0.02800979, 1.23373152], [1516854900000, 0.02800981, 0.02800981, 0.02800979, 0.0280098, 60.38673489], [1516854960000, 0.02800979, 0.0280098, 0.02800979, 0.0280098, 0.10683757], [1516855020000, 0.028, 0.02800981, 0.02780154, 0.02800981, 16.54154341], [1516855080000, 0.02800981, 0.02800981, 0.02776072, 0.0280098, 10.43068303], [1516855200000, 0.02800979, 0.02800979, 0.02800979, 0.02800979, 0.07228432], [1516855260000, 0.02800971, 0.02800979, 0.02800971, 0.02800971, 0.49294696], [1516855320000, 0.02781326, 0.02800971, 0.02774802, 0.02800971, 24.13255408], [1516855380000, 0.02800963, 0.02800967, 0.02800963, 0.02800967, 83.04344354], [1516855440000, 0.02800939, 0.02800967, 0.02800939, 0.02800967, 11.43005394], [1516855500000, 0.02800967, 0.02812845, 0.02800032, 0.02800032, 81.74891402], [1516855560000, 0.02808502, 0.02809084, 0.0280003, 0.02808427, 65.50611127], [1516855620000, 0.02808426, 0.02808427, 0.02788347, 0.02808423, 64.56664846], [1516855680000, 0.02798385, 0.02798385, 0.02798385, 0.02798385, 7.47333963], [1516855740000, 0.02798385, 0.02798385, 0.02798385, 0.02798385, 0.07879544], [1516855800000, 0.0279839, 0.02808425, 0.02781356, 0.02781356, 9.08890576], [1516855860000, 0.0279839, 0.02808418, 0.0279839, 0.02808418, 0.73922536], [1516855920000, 0.02808403, 0.02808403, 0.02781371, 0.02781371, 0.26631181], [1516855980000, 0.02808382, 0.02808382, 0.02781508, 0.02781508, 1.81775348], [1516856040000, 0.02781508, 0.02808356, 0.02781508, 0.02808352, 2.79701465], [1516856160000, 0.0278151, 0.02808298, 0.0278151, 0.02808288, 1.79683764], [1516856220000, 0.02781527, 0.02808264, 0.02774801, 0.02808264, 75.23209773], [1516856280000, 0.02804984, 0.02804984, 0.02804972, 0.02804973, 1.8956869], [1516856340000, 0.02800197, 0.02800197, 0.02774961, 0.02774961, 1.11400299], [1516856400000, 0.02774319, 0.02800183, 0.02770121, 0.02770121, 35.06878585], [1516856460000, 0.02799928, 0.02799928, 0.02799928, 0.02799928, 0.05468686], [1516856520000, 0.02774471, 0.02795571, 0.0277447, 0.02795564, 17.69721666], [1516856580000, 0.02799906, 0.02799916, 0.02799906, 0.02799916, 1.04686141], [1516856700000, 0.02799916, 0.02799916, 0.02799916, 0.02799916, 1.51175529], [1516856760000, 0.02799915, 0.02799915, 0.0278089, 0.0278089, 3.73625099], [1516856820000, 0.02799916, 0.02799917, 0.02799916, 0.02799917, 2.93465579], [1516856880000, 0.02799916, 0.02799917, 0.02799916, 0.02799917, 2.78870462], [1516856940000, 0.02799916, 0.02799916, 0.02799914, 0.02799914, 0.15874621], [1516857000000, 0.02780893, 0.02799913, 0.02780893, 0.02780903, 3.44211074], [1516857060000, 0.02799909, 0.02799909, 0.02799909, 0.02799909, 1.00400299], [1516857120000, 0.02799907, 0.02799907, 0.02780903, 0.02780903, 54.5439401], [1516857180000, 0.02780903, 0.02780904, 0.02780903, 0.02780904, 5.14566622], [1516857240000, 0.02780904, 0.02780904, 0.02780903, 0.02780904, 3.21679819], [1516857300000, 0.02780904, 0.02780904, 0.02780904, 0.02780904, 4.48320181], [1516857600000, 0.02793537, 0.02799652, 0.02793537, 0.02799652, 0.35796874], [1516857660000, 0.02799652, 0.02799652, 0.02799652, 0.02799652, 0.04068017], [1516857720000, 0.02799652, 0.02799652, 0.0278722, 0.0278722, 0.59545095], [1516857780000, 0.0278722, 0.02798589, 0.0278722, 0.02798588, 8.43358898], [1516857840000, 0.0278722, 0.0278722, 0.02787219, 0.02787219, 0.51], [1516857960000, 0.02798583, 0.02798583, 0.02787219, 0.02798582, 1.20223799], [1516858020000, 0.02798582, 0.02798583, 0.02798582, 0.02798583, 5.75883724], [1516858080000, 0.02798582, 0.02798582, 0.02798582, 0.02798582, 1.06319808], [1516858140000, 0.02798578, 0.0279858, 0.02798578, 0.0279858, 1.27874714], [1516858200000, 0.027873, 0.02798579, 0.027873, 0.02798579, 1.30131177], [1516858260000, 0.02798579, 0.02798579, 0.02798579, 0.02798579, 0.15385054], [1516858320000, 0.02798579, 0.02798579, 0.02798579, 0.02798579, 14.75924113], [1516858380000, 0.02798579, 0.02798579, 0.02798579, 0.02798579, 0.50597927], [1516858440000, 0.02798579, 0.02798579, 0.02798579, 0.02798579, 1.30925883], [1516858500000, 0.0279857, 0.02798579, 0.0279717, 0.02798579, 2.14780904], [1516858560000, 0.027873, 0.027873, 0.02780886, 0.02780887, 32.48266166], [1516858620000, 0.027985, 0.027985, 0.027985, 0.027985, 0.40412455], [1516858680000, 0.02798579, 0.02798579, 0.02798579, 0.02798579, 0.09254196], [1516858800000, 0.02798579, 0.02798579, 0.02798579, 0.02798579, 0.20962306], [1516858860000, 0.02786249, 0.02798578, 0.02786249, 0.02798578, 2.16451233], [1516858920000, 0.02786389, 0.02798578, 0.0278625, 0.02798578, 15.96215892], [1516858980000, 0.02798578, 0.02798578, 0.02798578, 0.02798578, 0.042], [1516859040000, 0.02798578, 0.02798579, 0.02798578, 0.02798579, 3.47319316], [1516859100000, 0.02798578, 0.02798578, 0.02798578, 0.02798578, 0.23294268], [1516859160000, 0.0279, 0.02798578, 0.0279, 0.02798578, 2.53484698], [1516859220000, 0.02798578, 0.02798578, 0.0278, 0.0279, 16.83062446], [1516859280000, 0.0279, 0.02798579, 0.0279, 0.02798579, 15.89009964], [1516859340000, 0.02798575, 0.02798579, 0.02798575, 0.02798579, 150.5464033], [1516859400000, 0.02798579, 0.02798579, 0.02798578, 0.02798578, 0.40002869], [1516859460000, 0.02798578, 0.02798579, 0.0279, 0.02798579, 84.48958719], [1516859520000, 0.02798579, 0.0279858, 0.02798578, 0.0279858, 25.27357682], [1516859580000, 0.0279858, 0.02805, 0.0279, 0.0279, 141.83025344], [1516859640000, 0.0279, 0.02802201, 0.0279, 0.02802201, 3.97280118], [1516859700000, 0.0279, 0.02808243, 0.02789999, 0.02789999, 74.29902885], [1516859820000, 0.02798579, 0.02808197, 0.02780033, 0.02808197, 16.27680555], [1516859880000, 0.02802981, 0.02802981, 0.02802981, 0.02802981, 1.68964265], [1516859940000, 0.02780182, 0.02802981, 0.02780182, 0.02802981, 3.67823625], [1516860000000, 0.02802981, 0.02802981, 0.02802981, 0.02802981, 1.19754771], [1516860060000, 0.028021, 0.028021, 0.028021, 0.028021, 39.00224187], [1516860120000, 0.02802985, 0.02802985, 0.028021, 0.028021, 15.69760898], [1516860180000, 0.02802249, 0.02802249, 0.028021, 0.02802247, 16.52976166], [1516860240000, 0.02802247, 0.02802247, 0.02802247, 0.02802247, 4.18454429], [1516860300000, 0.02802247, 0.02802248, 0.02802247, 0.02802247, 5.70646058], [1516860360000, 0.02802247, 0.02802248, 0.02780097, 0.02780097, 24.96443233], [1516860420000, 0.02780097, 0.02802249, 0.02780095, 0.02802249, 12.71732551], [1516860480000, 0.02780163, 0.02802245, 0.0278016, 0.02802245, 6.44460612], [1516860600000, 0.02780163, 0.02802179, 0.02780163, 0.02802178, 7.00778732], [1516860840000, 0.02800715, 0.02800715, 0.02780163, 0.02780163, 31.70193637], [1516860900000, 0.02800648, 0.02800648, 0.02800642, 0.02800645, 1.36261468], [1516860960000, 0.02800628, 0.02800628, 0.02800628, 0.02800628, 2.99535354], [1516861080000, 0.028, 0.02800318, 0.028, 0.02800313, 1.18390615], [1516861140000, 0.02800313, 0.02800313, 0.02800313, 0.02800313, 0.9975], [1516861200000, 0.0278051, 0.02800171, 0.02780194, 0.02800171, 1.19225565], [1516861260000, 0.02800171, 0.02800171, 0.0279, 0.0279, 1.0030355], [1516861320000, 0.02793, 0.02793, 0.02793, 0.02793, 0.11307612], [1516861380000, 0.02793139, 0.02793139, 0.02793, 0.02793, 6.0], [1516861440000, 0.02800165, 0.02800165, 0.02800164, 0.02800164, 0.1710486], [1516861500000, 0.02800163, 0.02800307, 0.02800163, 0.02800307, 0.62150043], [1516861620000, 0.02800311, 0.02800311, 0.02800306, 0.02800306, 1.07646395], [1516861680000, 0.02800307, 0.02800307, 0.02800307, 0.02800307, 2.00792602], [1516861740000, 0.02800307, 0.02800307, 0.02800307, 0.02800307, 0.35127777], [1516861800000, 0.02800312, 0.02800312, 0.02800307, 0.02800307, 9.33675426], [1516861860000, 0.02800307, 0.02800307, 0.02800307, 0.02800307, 0.2529974], [1516861920000, 0.02800306, 0.02800307, 0.02793, 0.02793, 13.94943908], [1516861980000, 0.02793, 0.02793, 0.02793, 0.02793, 0.079], [1516862040000, 0.02793, 0.02800306, 0.02793, 0.02800306, 0.08147368], [1516862100000, 0.02793305, 0.02793305, 0.02793305, 0.02793305, 0.4809427], [1516862160000, 0.02800307, 0.02800307, 0.02793, 0.02793, 0.44805069], [1516862220000, 0.02800307, 0.02800307, 0.028002, 0.02800307, 12.65753776], [1516862340000, 0.02794, 0.02800307, 0.02794, 0.02800307, 8.15654316], [1516862400000, 0.02800306, 0.02800307, 0.02794, 0.02794, 3.89478867], [1516862460000, 0.02794, 0.02800709, 0.02794, 0.02800709, 1.01447985], [1516862520000, 0.02800709, 0.02800709, 0.02800708, 0.02800708, 11.82523518], [1516862580000, 0.02795, 0.0280071, 0.02795, 0.02795, 0.15376591], [1516862640000, 0.02794, 0.02795, 0.02794, 0.02795, 2.6455907], [1516862700000, 0.02794, 0.0280071, 0.02794, 0.0280071, 12.62072211], [1516862760000, 0.0280071, 0.0280071, 0.02795, 0.02795, 0.53944544], [1516862820000, 0.0280071, 0.0280071, 0.02795, 0.02795, 26.3169751], [1516862880000, 0.02795, 0.0280071, 0.02795, 0.0280071, 9.33175408], [1516863000000, 0.02800709, 0.0280071, 0.02800708, 0.0280071, 60.11972485], [1516863060000, 0.0280071, 0.02808126, 0.0280071, 0.02808126, 19.61643564], [1516863120000, 0.0280071, 0.02808128, 0.0280071, 0.02808128, 39.21835455], [1516863180000, 0.02808128, 0.02808128, 0.02794, 0.02808128, 32.4353307], [1516863240000, 0.02801769, 0.02808128, 0.02801769, 0.02808128, 0.3461644], [1516863300000, 0.02808128, 0.02808128, 0.02808128, 0.02808128, 30.01434216], [1516863480000, 0.02808401, 0.02808403, 0.02808401, 0.02808403, 0.09383286], [1516863600000, 0.02794002, 0.02809992, 0.02794002, 0.02800003, 9.83953505], [1516863660000, 0.02800001, 0.02800001, 0.028, 0.028, 4.69657009], [1516863720000, 0.028, 0.028, 0.028, 0.028, 0.63917867], [1516863780000, 0.028, 0.028, 0.02793001, 0.02793001, 26.17874673], [1516863840000, 0.02809962, 0.02809963, 0.02809962, 0.02809963, 0.06097268], [1516863960000, 0.02802937, 0.02809952, 0.0279593, 0.02809952, 0.5799525], [1516864020000, 0.02809948, 0.02809948, 0.02794465, 0.02794465, 0.4660199], [1516864080000, 0.02794465, 0.02794465, 0.02794465, 0.02794465, 0.0187648], [1516864140000, 0.02809932, 0.02809932, 0.02794465, 0.02794465, 0.23173619], [1516864200000, 0.02794465, 0.02794465, 0.02794465, 0.02794465, 0.07892085], [1516864260000, 0.02794465, 0.02809921, 0.02794465, 0.02809921, 4.71681386], [1516864320000, 0.02809901, 0.02809901, 0.027971, 0.027971, 3.92500479], [1516864380000, 0.027971, 0.027971, 0.027971, 0.027971, 1.68175393], [1516864440000, 0.027971, 0.02809894, 0.027971, 0.027971, 4.73454992], [1516864500000, 0.0280989, 0.0280989, 0.0280989, 0.0280989, 0.35588581], [1516864560000, 0.027971, 0.027971, 0.027971, 0.027971, 89.23489833], [1516864620000, 0.027971, 0.027971, 0.027971, 0.027971, 8.23294242], [1516864800000, 0.0280982, 0.0280982, 0.0280982, 0.0280982, 0.07380165], [1516864860000, 0.02809794, 0.02809794, 0.02809794, 0.02809794, 0.52316976], [1516864980000, 0.02809792, 0.02809793, 0.02809792, 0.02809793, 0.09137166], [1516865040000, 0.02809788, 0.02809789, 0.02793007, 0.02793007, 1.86179436], [1516865100000, 0.02793007, 0.02809794, 0.02793007, 0.02809791, 0.71338839], [1516865160000, 0.02809788, 0.02809794, 0.02801794, 0.02801794, 1.20160299], [1516865280000, 0.02801794, 0.02801794, 0.02782939, 0.02782939, 15.48626351], [1516865340000, 0.02793007, 0.02809764, 0.02780164, 0.02780203, 12.4363195], [1516865400000, 0.02809762, 0.02809762, 0.02780217, 0.02780243, 1.29491114], [1516865460000, 0.02780261, 0.0280976, 0.02780261, 0.02809756, 3.04358402], [1516865520000, 0.02809754, 0.02809754, 0.02780295, 0.02809751, 35.0394349], [1516865580000, 0.02780338, 0.02780346, 0.02780338, 0.02780345, 0.74759017], [1516865640000, 0.02800001, 0.02801687, 0.02780362, 0.02780362, 2.17186303], [1516865700000, 0.02801687, 0.0280383, 0.02801687, 0.02803811, 1.76710635], [1516865880000, 0.02792302, 0.02799997, 0.02780356, 0.02799997, 6.76525307], [1516865940000, 0.02799999, 0.02799999, 0.02799997, 0.02799998, 1.00462359], [1516866000000, 0.02799997, 0.02809726, 0.0279999, 0.02809726, 53.48221476], [1516866060000, 0.028, 0.028, 0.02780186, 0.02780186, 9.16784561], [1516866120000, 0.02809716, 0.02809716, 0.02780169, 0.02809709, 14.28117348], [1516866180000, 0.02809709, 0.02809709, 0.02809709, 0.02809709, 0.04498016], [1516866240000, 0.02809707, 0.02809707, 0.02780292, 0.02780292, 0.7988066], [1516866300000, 0.02809675, 0.02809675, 0.02809672, 0.02809672, 0.71182482], [1516866360000, 0.0278037, 0.02809659, 0.0278037, 0.02780379, 11.40235766], [1516866420000, 0.0280964, 0.0280964, 0.0280964, 0.0280964, 0.03670234], [1516866480000, 0.0278044, 0.0278044, 0.0278044, 0.0278044, 0.05193454], [1516866660000, 0.02798368, 0.02798368, 0.02780511, 0.02780511, 0.3582754], [1516866840000, 0.0279, 0.0279, 0.02780439, 0.02789998, 17.72442015], [1516866900000, 0.02780439, 0.02789997, 0.02780169, 0.02789995, 11.36779542], [1516866960000, 0.02789995, 0.02789995, 0.02780169, 0.02789995, 18.63563496], [1516867080000, 0.02789995, 0.02789995, 0.02780169, 0.02780169, 28.35058941], [1516867140000, 0.02789994, 0.02789994, 0.02789994, 0.02789994, 4.59621341], [1516867200000, 0.02789995, 0.02789995, 0.02789995, 0.02789995, 0.55258252], [1516867260000, 0.02789995, 0.02789995, 0.02789994, 0.02789995, 0.88175317], [1516867380000, 0.02789995, 0.02789995, 0.02789995, 0.02789995, 3.2417377], [1516867440000, 0.02789995, 0.02789995, 0.02789995, 0.02789995, 0.45225591], [1516867500000, 0.02789995, 0.02789995, 0.02789995, 0.02789995, 2.4173756], [1516867560000, 0.02789994, 0.02789994, 0.02789994, 0.02789994, 0.45047142], [1516867620000, 0.02789994, 0.02789995, 0.02775, 0.02789993, 59.15666744], [1516867680000, 0.02789993, 0.02789995, 0.02789993, 0.02789995, 0.03979619], [1516867740000, 0.02789995, 0.02789995, 0.02789995, 0.02789995, 0.29583388], [1516867800000, 0.02789995, 0.02789995, 0.02789995, 0.02789995, 7.27337061], [1516867860000, 0.02789995, 0.02789995, 0.02789995, 0.02789995, 4.83528268], [1516867920000, 0.02789995, 0.02789995, 0.02789995, 0.02789995, 0.81240338], [1516867980000, 0.02789995, 0.02789995, 0.02789995, 0.02789995, 0.0395165], [1516868040000, 0.02789994, 0.02789994, 0.02789994, 0.02789994, 0.43520529], [1516868100000, 0.02789994, 0.02789994, 0.02789993, 0.02789993, 2.01657824], [1516868160000, 0.02789994, 0.02789994, 0.02789994, 0.02789994, 0.55996199], [1516868220000, 0.02789994, 0.02789994, 0.02789994, 0.02789994, 0.44843144], [1516868280000, 0.02789994, 0.02789994, 0.02770801, 0.02770801, 7.37238742], [1516868340000, 0.027712, 0.02789991, 0.027712, 0.02789991, 0.1304601], [1516868400000, 0.02789991, 0.02789994, 0.02773011, 0.02789991, 21.68252578], [1516868460000, 0.0278999, 0.0278999, 0.02772509, 0.02789989, 2.35424223], [1516868520000, 0.02789985, 0.02789985, 0.02789985, 0.02789985, 0.27367838], [1516868580000, 0.02789986, 0.02789988, 0.02789986, 0.02789988, 0.1210332], [1516868640000, 0.02789987, 0.02789994, 0.02770811, 0.02770811, 10.27258438], [1516868700000, 0.02789982, 0.02789982, 0.02770815, 0.02789978, 3.57685241], [1516868760000, 0.02789975, 0.02789975, 0.02772206, 0.02789975, 7.41029377], [1516868820000, 0.02772223, 0.02789975, 0.02772223, 0.02789975, 6.74838008], [1516868880000, 0.02789972, 0.02789972, 0.02765001, 0.02766803, 55.34181524], [1516868940000, 0.02767007, 0.02789968, 0.02767004, 0.02789961, 17.46858777], [1516869000000, 0.02789959, 0.02789975, 0.02789956, 0.02789975, 12.21092854], [1516869060000, 0.02789975, 0.02789975, 0.02768608, 0.02789972, 10.28880077], [1516869120000, 0.02789972, 0.02789972, 0.02782997, 0.02782997, 0.14707334], [1516869180000, 0.02789974, 0.02789974, 0.02789974, 0.02789974, 0.1208775], [1516869240000, 0.0278997, 0.02789975, 0.0278997, 0.02789974, 10.05314937], [1516869300000, 0.02789975, 0.02789975, 0.02772005, 0.02789975, 2.81287463], [1516869360000, 0.02789975, 0.02789975, 0.02773103, 0.02773103, 15.07952289], [1516869420000, 0.02789975, 0.02789975, 0.02789975, 0.02789975, 0.07950539], [1516869480000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 0.07903354], [1516869540000, 0.02789975, 0.02789976, 0.02773645, 0.02789976, 2.07583858], [1516869600000, 0.02789976, 0.02789976, 0.02789975, 0.02789975, 3.97082603], [1516869660000, 0.02789975, 0.02789975, 0.02775523, 0.02775523, 9.67594551], [1516869720000, 0.02789975, 0.02789975, 0.02789975, 0.02789975, 1.27802989], [1516869780000, 0.02789975, 0.02789976, 0.02789975, 0.02789976, 5.23282057], [1516869840000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 3.09456771], [1516869900000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 0.437868], [1516869960000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 0.07944142], [1516870020000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 0.11924709], [1516870080000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 0.35447263], [1516870140000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 0.0794375], [1516870200000, 0.02789976, 0.02789976, 0.02789975, 0.02789975, 1.84944703], [1516870260000, 0.02789976, 0.02789976, 0.02775831, 0.02775831, 25.27887057], [1516870320000, 0.02789974, 0.02789975, 0.02775835, 0.02789974, 2.14058437], [1516870380000, 0.02789974, 0.02789976, 0.02789974, 0.02789976, 1.2594347], [1516870440000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 0.11507651], [1516870500000, 0.02789976, 0.02789976, 0.02789975, 0.02789975, 1.81888454], [1516870560000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 0.07942856], [1516870620000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 0.07945143], [1516870680000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 0.11517836], [1516870740000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 0.54439999], [1516870800000, 0.02789976, 0.02789976, 0.02778201, 0.02789976, 39.47399181], [1516870860000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 12.74727571], [1516870920000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 22.87119287], [1516870980000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 21.5193818], [1516871040000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 5.96788577], [1516871100000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 4.78387308], [1516871160000, 0.02789976, 0.02789976, 0.02789975, 0.02789976, 1.51018963], [1516871220000, 0.02789976, 0.02789976, 0.02789976, 0.02789976, 0.59879665], [1516871280000, 0.02789976, 0.02789976, 0.02789975, 0.02789976, 27.999666], [1516871340000, 0.02789976, 0.028, 0.02789976, 0.028, 5.03293486], [1516871400000, 0.02789976, 0.028, 0.02789975, 0.028, 3.55992525], [1516871460000, 0.028, 0.028, 0.028, 0.028, 1.05400299], [1516871520000, 0.028, 0.028, 0.028, 0.028, 2.32720007], [1516871580000, 0.028, 0.028, 0.028, 0.028, 4.1803516], [1516871640000, 0.028, 0.028, 0.028, 0.028, 0.05], [1516871700000, 0.028, 0.028, 0.028, 0.028, 0.90040672], [1516871760000, 0.02799999, 0.02799999, 0.02799999, 0.02799999, 0.0443453], [1516871940000, 0.02780061, 0.02780062, 0.02780061, 0.02780062, 1.3199892], [1516872000000, 0.02799, 0.02799998, 0.02780355, 0.02799997, 2.47568053], [1516872060000, 0.02780579, 0.02799997, 0.02780579, 0.02799997, 33.89243299], [1516872120000, 0.02790302, 0.028, 0.02790302, 0.028, 1.0684395], [1516872180000, 0.0279, 0.028, 0.02780776, 0.02780776, 6.36393082], [1516872240000, 0.02799999, 0.02799999, 0.02780786, 0.02780787, 17.09166834], [1516872300000, 0.02780787, 0.02799996, 0.02780606, 0.0278078, 2.89367772], [1516872360000, 0.02780782, 0.02780782, 0.02780779, 0.02780779, 2.00609011], [1516872420000, 0.02780782, 0.02780784, 0.02780782, 0.02780784, 0.09415185], [1516872480000, 0.02780784, 0.02780786, 0.02780784, 0.02780786, 1.729694], [1516872540000, 0.02780786, 0.02780786, 0.02780651, 0.02780651, 6.28816508], [1516872600000, 0.02780784, 0.02780784, 0.02780599, 0.02780599, 2.33035998], [1516872660000, 0.02780629, 0.02780629, 0.02780629, 0.02780629, 0.88142912], [1516872720000, 0.0279998, 0.0279998, 0.02780646, 0.02799977, 3.94783329], [1516872780000, 0.02799977, 0.02799977, 0.02780697, 0.02780718, 28.50061731], [1516872840000, 0.02780722, 0.02799977, 0.02780722, 0.02799977, 60.03803668], [1516872900000, 0.02799978, 0.02799979, 0.02799978, 0.02799979, 0.37848525], [1516872960000, 0.02780756, 0.02780756, 0.02780756, 0.02780756, 0.42062156], [1516873080000, 0.02799972, 0.02799975, 0.02799972, 0.02799975, 0.75100021], [1516873140000, 0.02780646, 0.02780646, 0.02780646, 0.02780646, 0.09016831], [1516873200000, 0.02799964, 0.02799964, 0.02799964, 0.02799964, 0.35714795], [1516873260000, 0.0278073, 0.0278073, 0.02780724, 0.02780724, 57.66165429], [1516873320000, 0.02780647, 0.02789975, 0.02780645, 0.02789975, 3.35912717], [1516873380000, 0.02789975, 0.02789975, 0.02789975, 0.02789975, 0.14186908], [1516873440000, 0.02789975, 0.02789975, 0.02789975, 0.02789975, 0.16954727], [1516873500000, 0.02789973, 0.02789973, 0.02789972, 0.02789972, 0.07930009], [1516873560000, 0.02780601, 0.02789976, 0.02780601, 0.02789976, 8.31582286], [1516873680000, 0.02799929, 0.02799932, 0.02799929, 0.02799932, 0.3], [1516873740000, 0.02780605, 0.02780605, 0.02780605, 0.02780605, 0.09916009], [1516873800000, 0.02780603, 0.02799927, 0.02774101, 0.02778867, 5.15372357], [1516873920000, 0.02799908, 0.02799908, 0.02780894, 0.02780894, 1.03981027], [1516873980000, 0.02780894, 0.02799935, 0.02780894, 0.02799935, 37.52427189], [1516874100000, 0.02780974, 0.02799888, 0.02780974, 0.02799888, 0.73776019], [1516874220000, 0.02799872, 0.02799872, 0.0279265, 0.0279265, 0.12187134], [1516874280000, 0.0279264, 0.0279264, 0.0279264, 0.0279264, 1.41854606], [1516874340000, 0.0279264, 0.0279264, 0.0279264, 0.0279264, 1.26478153], [1516874400000, 0.0279264, 0.0279264, 0.0279264, 0.0279264, 0.61527921], [1516874520000, 0.0279265, 0.02799871, 0.0279265, 0.02799871, 0.11182068], [1516874580000, 0.02780889, 0.02780889, 0.02780889, 0.02780889, 0.16196679], [1516874700000, 0.02799857, 0.02799857, 0.02799857, 0.02799857, 0.35716071], [1516874760000, 0.02799857, 0.02799857, 0.02799857, 0.02799857, 0.5], [1516874820000, 0.02799869, 0.02799871, 0.02799869, 0.02799871, 0.10640721], [1516874880000, 0.02790869, 0.02790869, 0.02780899, 0.02780899, 0.15364939], [1516874940000, 0.02780898, 0.02780898, 0.02780898, 0.02780898, 0.40459756], [1516875000000, 0.02799863, 0.02799873, 0.02799863, 0.02799873, 0.35716071], [1516875060000, 0.02780898, 0.02799873, 0.02780898, 0.02799873, 0.294519], [1516875120000, 0.02799867, 0.02799869, 0.02799867, 0.02799869, 0.40148692], [1516875180000, 0.02799871, 0.02799871, 0.02780899, 0.02780899, 0.06125939], [1516875240000, 0.02799867, 0.02799871, 0.02799867, 0.0279987, 3.64144803], [1516875300000, 0.0279987, 0.0279987, 0.02780899, 0.02780899, 0.87946518], [1516875360000, 0.02780899, 0.02799869, 0.02780899, 0.02799869, 1.27152147], [1516875420000, 0.02799869, 0.02799869, 0.02799869, 0.02799869, 0.34367202], [1516875480000, 0.02784599, 0.02784612, 0.02784599, 0.02784612, 0.18306606], [1516875540000, 0.0279987, 0.0279987, 0.0279987, 0.0279987, 0.24333556], [1516875600000, 0.02799871, 0.02799871, 0.0279987, 0.0279987, 0.09613444], [1516875660000, 0.0279987, 0.0279987, 0.02784598, 0.02784598, 2.61608374], [1516875780000, 0.02799871, 0.02799871, 0.02799871, 0.02799871, 0.03959279], [1516875840000, 0.02799871, 0.02799871, 0.02784599, 0.02799871, 6.01589557], [1516875900000, 0.02799871, 0.02799871, 0.02785125, 0.02785133, 3.8541486], [1516875960000, 0.02785133, 0.02799871, 0.02782003, 0.02782003, 28.34968893], [1516876020000, 0.02799871, 0.02799871, 0.02799871, 0.02799871, 0.07917064], [1516876080000, 0.02799871, 0.02799871, 0.02799871, 0.02799871, 0.07917064], [1516876140000, 0.02799871, 0.02799871, 0.02785153, 0.02799871, 0.14141633], [1516876200000, 0.02799871, 0.02799871, 0.02780899, 0.02799871, 0.58914256], [1516876260000, 0.02799871, 0.02799871, 0.02780905, 0.02799871, 0.40609171], [1516876320000, 0.02799871, 0.02799871, 0.02781881, 0.02799871, 1.12814764], [1516876440000, 0.02799871, 0.02799871, 0.02782552, 0.02799871, 0.25415744], [1516876500000, 0.02799871, 0.02799871, 0.02782595, 0.02782631, 0.5338219], [1516876560000, 0.02799871, 0.02799871, 0.02782694, 0.02799871, 0.56248989], [1516876620000, 0.02799871, 0.02799871, 0.02782802, 0.02799871, 0.11493095], [1516876680000, 0.02782904, 0.02800986, 0.02782904, 0.02800986, 12.13084899], [1516876740000, 0.02800986, 0.02800986, 0.02799871, 0.02799871, 0.15767199], [1516876800000, 0.02799871, 0.028, 0.02798871, 0.028, 0.7959805], [1516876860000, 0.028, 0.028, 0.02798871, 0.028, 0.16152518], [1516876920000, 0.028, 0.028, 0.02783086, 0.02783086, 0.35837124], [1516876980000, 0.028, 0.028, 0.02783147, 0.028, 0.20301835], [1516877040000, 0.02783155, 0.0281, 0.02783155, 0.0281, 4.52036585], [1516877100000, 0.02783172, 0.0281, 0.02783171, 0.0281, 0.44701235], [1516877160000, 0.02783209, 0.0281, 0.02783209, 0.0281, 1.47786896], [1516877220000, 0.0281, 0.02811228, 0.0281, 0.0281, 1.49184894], [1516877280000, 0.0281, 0.02811812, 0.0281, 0.0281, 0.40810457], [1516877340000, 0.0281, 0.0281, 0.02783171, 0.02783171, 0.8314302], [1516877400000, 0.02811694, 0.028117, 0.02811694, 0.028117, 0.35565798], [1516877460000, 0.02783324, 0.02783324, 0.02783324, 0.02783324, 0.09834227], [1516877520000, 0.0278359, 0.0278359, 0.0278359, 0.0278359, 0.05333842], [1516877700000, 0.0281, 0.0281, 0.0281, 0.0281, 1.44901094], [1516877760000, 0.0281, 0.02811698, 0.0281, 0.0281, 0.39176529], [1516877820000, 0.0281, 0.0281, 0.0281, 0.0281, 2.11188797], [1516877880000, 0.0281, 0.0281, 0.0281, 0.0281, 1.13610119], [1516877940000, 0.02783674, 0.02783674, 0.02783674, 0.02783674, 0.06125953], [1516878000000, 0.02783769, 0.0280997, 0.02783769, 0.0280997, 0.43890435], [1516878060000, 0.02783865, 0.02783865, 0.02783865, 0.02783865, 0.04604011], [1516878240000, 0.02784085, 0.02784085, 0.02784085, 0.02784085, 0.03778409], [1516878300000, 0.02798977, 0.02798977, 0.02798977, 0.02798977, 0.7937462], [1516878360000, 0.02784086, 0.02798976, 0.02784086, 0.02798976, 0.27842474], [1516878420000, 0.02798977, 0.02804344, 0.02798977, 0.02804344, 3.46888242], [1516878480000, 0.02798977, 0.02798977, 0.02798977, 0.02798977, 0.09407982], [1516878540000, 0.02798977, 0.02798977, 0.02798977, 0.02798977, 0.41600794], [1516878600000, 0.02804315, 0.02804315, 0.02804315, 0.02804315, 0.35659268], [1516878660000, 0.02798977, 0.02809274, 0.02798977, 0.02809274, 1.88910324], [1516878720000, 0.02798977, 0.02809967, 0.02798977, 0.02809967, 0.43946828], [1516878780000, 0.02798977, 0.02798977, 0.02798977, 0.02798977, 0.04598245], [1516878840000, 0.02798977, 0.02798977, 0.02798977, 0.02798977, 1.82314358], [1516878900000, 0.02798977, 0.02809924, 0.02798977, 0.02809924, 0.7309142], [1516878960000, 0.02798977, 0.02809917, 0.02798977, 0.02809909, 7.74261994], [1516879020000, 0.02798977, 0.02798977, 0.02784572, 0.02784572, 0.05292943], [1516879080000, 0.02784571, 0.02784571, 0.0278359, 0.0278359, 0.2], [1516879200000, 0.02798976, 0.02806927, 0.02798976, 0.02806927, 0.714546], [1516879260000, 0.02783705, 0.02783705, 0.02783705, 0.02783705, 0.09057056], [1516879380000, 0.0280491, 0.0280491, 0.02783797, 0.02783797, 1.06368196], [1516879440000, 0.02804892, 0.02804892, 0.02783738, 0.02804876, 0.77366791], [1516879500000, 0.02783738, 0.02783738, 0.02783738, 0.02783738, 0.02529531], [1516879620000, 0.02804765, 0.02804765, 0.02804765, 0.02804765, 0.28220192], [1516879740000, 0.02804734, 0.02804734, 0.02783745, 0.02783745, 0.88745707], [1516879800000, 0.027839, 0.0280473, 0.027839, 0.0280473, 4.85922055], [1516880040000, 0.02804729, 0.02804729, 0.02804729, 0.02804729, 0.48514203], [1516880100000, 0.02804728, 0.02804728, 0.02804728, 0.02804728, 0.04183165], [1516880160000, 0.02804628, 0.02804628, 0.02804628, 0.02804628, 0.5], [1516880220000, 0.02804628, 0.02804628, 0.02784434, 0.02804628, 0.63040541], [1516880280000, 0.02804627, 0.02804627, 0.028, 0.028, 0.25213056], [1516880340000, 0.028, 0.028, 0.028, 0.028, 0.14987645], [1516880400000, 0.028, 0.028, 0.028, 0.028, 0.16941924], [1516880460000, 0.028, 0.028, 0.028, 0.028, 0.73029495], [1516880520000, 0.028, 0.028, 0.028, 0.028, 0.1656664], [1516880580000, 0.028, 0.028, 0.02788014, 0.02788014, 0.15305781], [1516880640000, 0.02788014, 0.02788014, 0.02788012, 0.02788012, 6.09965579], [1516880700000, 0.027999, 0.027999, 0.027999, 0.027999, 0.07908868], [1516880760000, 0.02788012, 0.02799898, 0.02788012, 0.02799898, 1.13018928], [1516880880000, 0.02799898, 0.02799898, 0.02799898, 0.02799898, 0.28461634], [1516880940000, 0.02799898, 0.02799898, 0.0279, 0.0279, 29.06568963], [1516881000000, 0.0279, 0.0279, 0.0279, 0.0279, 44.07106324], [1516881060000, 0.0279, 0.0279, 0.0279, 0.0279, 36.96916581], [1516881120000, 0.0279, 0.0279, 0.0279, 0.0279, 47.57976264], [1516881180000, 0.0279, 0.02799898, 0.02788153, 0.02799898, 31.34712775], [1516881240000, 0.02799898, 0.02809967, 0.02799898, 0.02809967, 14.05993114], [1516881300000, 0.0278822, 0.0280996, 0.0278822, 0.0280996, 3.8498726], [1516881420000, 0.02788347, 0.02788347, 0.02788347, 0.02788347, 0.05693942], [1516881480000, 0.02809955, 0.02809955, 0.02809954, 0.02809954, 0.32540306], [1516881540000, 0.02809954, 0.02809954, 0.02783953, 0.02809951, 45.34306876], [1516881600000, 0.02809925, 0.02809925, 0.02788786, 0.02809059, 1.56698207], [1516881660000, 0.02809046, 0.02809046, 0.02809025, 0.02809025, 1.05832866], [1516881720000, 0.02808973, 0.02808973, 0.02788744, 0.02788744, 1.1176983], [1516881780000, 0.0280891, 0.0280891, 0.0280891, 0.0280891, 0.042], [1516881840000, 0.02808889, 0.02808892, 0.02808889, 0.02808892, 2.63426067], [1516881960000, 0.02788893, 0.02788893, 0.02788885, 0.02788885, 0.67893555], [1516882020000, 0.02808785, 0.02808785, 0.02808785, 0.02808785, 4.35399505], [1516882080000, 0.02788945, 0.02808781, 0.02788906, 0.02808781, 2.14317111], [1516882140000, 0.02788907, 0.02788907, 0.02783806, 0.02783806, 0.36], [1516882200000, 0.0280871, 0.0280871, 0.02808709, 0.02808709, 0.39418754], [1516882260000, 0.02807997, 0.02807997, 0.02807996, 0.02807996, 0.28743749], [1516882320000, 0.02807999, 0.02807999, 0.02807999, 0.02807999, 0.09157799], [1516882380000, 0.02807999, 0.02808, 0.02807999, 0.02808, 0.07672786], [1516882440000, 0.02807997, 0.02807999, 0.02807997, 0.02807999, 0.07256251], [1516882500000, 0.02807999, 0.02807999, 0.02807998, 0.02807998, 4.76333492], [1516882620000, 0.02807998, 0.02807998, 0.02807998, 0.02807998, 0.04131992], [1516882680000, 0.02807998, 0.02807999, 0.02807998, 0.02807999, 1.17258043], [1516882740000, 0.02807991, 0.02807991, 0.02807991, 0.02807991, 1.89099653], [1516882800000, 0.02807973, 0.02807973, 0.02807973, 0.02807973, 15.5], [1516882860000, 0.02784269, 0.02784269, 0.02784268, 0.02784268, 1.89099653], [1516882920000, 0.02784261, 0.02784271, 0.02782014, 0.02784271, 13.05814051], [1516882980000, 0.02806789, 0.02807789, 0.02806789, 0.02807789, 1.68490541], [1516883040000, 0.02784333, 0.02784333, 0.02784323, 0.02784323, 1.0], [1516883100000, 0.02806446, 0.02806446, 0.02806423, 0.02806423, 0.40805794], [1516883160000, 0.02784316, 0.02804374, 0.02784316, 0.02804374, 0.23052928], [1516883220000, 0.02787781, 0.02801999, 0.02787781, 0.02787781, 9.12756117], [1516883280000, 0.02802, 0.02802, 0.02787781, 0.02787781, 19.1437309], [1516883340000, 0.02787781, 0.02804164, 0.02787781, 0.02804164, 17.09783903], [1516883400000, 0.02787781, 0.02803991, 0.02787781, 0.02787781, 7.60017265], [1516883460000, 0.02803953, 0.02803953, 0.02782012, 0.02782012, 13.75850286], [1516883520000, 0.02803911, 0.02803911, 0.02803879, 0.02803879, 5.37489639], [1516883700000, 0.02803731, 0.02803736, 0.02803731, 0.02803736, 0.71333544], [1516883760000, 0.02803724, 0.02803724, 0.02787024, 0.02803723, 1.18794071], [1516883820000, 0.02803718, 0.02803719, 0.02803718, 0.02803719, 1.0], [1516883880000, 0.0278745, 0.0278745, 0.0278745, 0.0278745, 0.10540617], [1516883940000, 0.02787421, 0.02787421, 0.02787421, 0.02787421, 0.17980114], [1516884000000, 0.02787421, 0.02787421, 0.02787421, 0.02787421, 0.20797757], [1516884060000, 0.02787421, 0.02803641, 0.02787421, 0.02803641, 3.58589809], [1516884120000, 0.02803641, 0.02803713, 0.02787421, 0.02787421, 6.10917957], [1516884180000, 0.02803706, 0.02803706, 0.02803587, 0.0280359, 10.32618194], [1516884240000, 0.02803561, 0.02803561, 0.02803561, 0.02803561, 0.85388881], [1516884300000, 0.0280356, 0.0280356, 0.02803554, 0.02803554, 1.78344035], [1516884360000, 0.02799999, 0.02799999, 0.02799999, 0.02799999, 1.26537996], [1516884420000, 0.02787421, 0.02787421, 0.02787421, 0.02787421, 0.33570703], [1516884480000, 0.02787421, 0.02787421, 0.02787421, 0.02787421, 0.06976829], [1516884540000, 0.02787421, 0.02787421, 0.02782, 0.02787421, 7.40288271], [1516884600000, 0.02787031, 0.02787421, 0.02787031, 0.02787421, 1.68410809], [1516884660000, 0.02787421, 0.02787421, 0.02787421, 0.02787421, 1.27317235], [1516884720000, 0.02786, 0.02786, 0.02786, 0.02786, 0.03963004], [1516884780000, 0.02786, 0.02786, 0.02782, 0.02782, 0.79569057], [1516884840000, 0.02782, 0.02782, 0.02782, 0.02782, 1.94295499], [1516884900000, 0.02786, 0.02797379, 0.02780885, 0.02780898, 1.90700053], [1516884960000, 0.0278, 0.0278, 0.02775926, 0.02775926, 4.36133758], [1516885020000, 0.02775, 0.02775, 0.02774108, 0.02774108, 36.7571305], [1516885080000, 0.0278, 0.0278, 0.0278, 0.0278, 3.14628247], [1516885140000, 0.0278, 0.0278, 0.0278, 0.0278, 0.07948562], [1516885200000, 0.0278, 0.02780001, 0.0278, 0.02780001, 3.35102718], [1516885260000, 0.02780001, 0.02780898, 0.02774108, 0.02774108, 3.95369784], [1516885320000, 0.02774108, 0.0278, 0.02774108, 0.0278, 0.29416531], [1516885380000, 0.0278, 0.0278, 0.0277, 0.0277, 5.03974281], [1516885440000, 0.02779999, 0.0278, 0.02769801, 0.0278, 16.22662951], [1516885500000, 0.0278, 0.02780898, 0.0278, 0.02780898, 2.09869654], [1516885560000, 0.02780898, 0.02780898, 0.02780898, 0.02780898, 0.07931662], [1516885620000, 0.02779999, 0.02780898, 0.02769901, 0.02769901, 0.37414524], [1516885680000, 0.02780898, 0.02780898, 0.027698, 0.027699, 13.39413324], [1516885740000, 0.02780898, 0.02795858, 0.027698, 0.02795858, 20.67735126], [1516885800000, 0.02795827, 0.02795827, 0.02795827, 0.02795827, 0.35767553], [1516885980000, 0.02795843, 0.02795843, 0.02795843, 0.02795843, 0.10703518], [1516886100000, 0.02795799, 0.02795799, 0.02795799, 0.02795799, 0.35767809], [1516886160000, 0.02784644, 0.02784644, 0.02780898, 0.02780898, 4.25731829], [1516886400000, 0.02789993, 0.02789998, 0.02789993, 0.02789998, 2.50896565], [1516886460000, 0.02789997, 0.02789997, 0.02780898, 0.02780898, 0.39895935], [1516886520000, 0.02780898, 0.02780898, 0.02780898, 0.02780898, 0.93624981], [1516886580000, 0.02780898, 0.02780898, 0.02780898, 0.02780898, 0.16687722], [1516886640000, 0.02789993, 0.02789993, 0.02770087, 0.02770087, 1.8328597], [1516886700000, 0.02789993, 0.02789993, 0.02789993, 0.02789993, 0.09956769], [1516886760000, 0.02770185, 0.02795561, 0.02770093, 0.0279556, 1.9519712], [1516886820000, 0.02795534, 0.02795537, 0.0279553, 0.0279553, 3.10799495], [1516886880000, 0.02795489, 0.02795489, 0.02795489, 0.02795489, 0.09664051], [1516886940000, 0.02795463, 0.02795463, 0.02772313, 0.02772313, 1.22095179], [1516887000000, 0.02772313, 0.02795262, 0.02772313, 0.02795262, 2.26959897], [1516887060000, 0.02795252, 0.02795252, 0.02795249, 0.02795249, 0.86724799], [1516887120000, 0.02772328, 0.02795212, 0.02772313, 0.02795212, 4.91628066], [1516887180000, 0.02772356, 0.02772356, 0.02772356, 0.02772356, 1.0], [1516887240000, 0.02795178, 0.02795178, 0.02795178, 0.02795178, 0.0490351], [1516887300000, 0.02795149, 0.02795149, 0.02795149, 0.02795149, 0.7155251], [1516887480000, 0.02795096, 0.02795096, 0.02795096, 0.02795096, 0.41035355], [1516887600000, 0.0278142, 0.02795078, 0.02775178, 0.02775179, 1.61973767], [1516887660000, 0.02775188, 0.0279439, 0.02775179, 0.0279439, 4.23159547], [1516887720000, 0.02794546, 0.02794546, 0.02794546, 0.02794546, 0.21416931], [1516887780000, 0.02794547, 0.02794547, 0.02794547, 0.02794547, 0.18322518], [1516887840000, 0.02794547, 0.02794547, 0.02794547, 0.02794547, 0.31876785], [1516887900000, 0.02794536, 0.02794542, 0.02794536, 0.02794542, 0.35784064], [1516887960000, 0.02775194, 0.02775194, 0.02775193, 0.02775193, 0.24660256], [1516888020000, 0.02775193, 0.0279454, 0.0277519, 0.0277519, 40.76874128], [1516888140000, 0.02794525, 0.02794525, 0.02793511, 0.02793511, 0.47814721], [1516888200000, 0.02793505, 0.02793505, 0.02793505, 0.02793505, 0.1819497], [1516888260000, 0.02775191, 0.02775191, 0.02775191, 0.02775191, 0.22216777], [1516888320000, 0.02775191, 0.02775191, 0.0277519, 0.0277519, 0.48895357], [1516888380000, 0.027935, 0.027935, 0.027935, 0.027935, 0.02194105], [1516888440000, 0.02777037, 0.02777037, 0.02777037, 0.02777037, 2.44783534], [1516888500000, 0.02777037, 0.02777037, 0.02775178, 0.02775193, 13.17358013], [1516888560000, 0.02777037, 0.02777037, 0.02775195, 0.02777037, 1.85366362], [1516888620000, 0.02777037, 0.02777037, 0.02777037, 0.02777037, 0.11912886], [1516888680000, 0.02777037, 0.02777037, 0.02777037, 0.02777037, 0.07899193], [1516888740000, 0.02777037, 0.02777037, 0.02777037, 0.02777037, 1.10276868], [1516888800000, 0.02792902, 0.02793499, 0.02792902, 0.02793499, 0.35805077], [1516888920000, 0.02793505, 0.02793505, 0.02793505, 0.02793505, 0.04113576], [1516888980000, 0.02777037, 0.02793503, 0.02777037, 0.02793503, 1.27295781], [1516889040000, 0.02793503, 0.02793503, 0.02793503, 0.02793503, 3.36220848], [1516889100000, 0.02793503, 0.02794525, 0.02793503, 0.02794525, 3.2473337], [1516889160000, 0.02785271, 0.02785271, 0.02785271, 0.02785271, 0.05364452], [1516889220000, 0.02785271, 0.02785271, 0.02779898, 0.02779898, 0.67003246], [1516889280000, 0.02779898, 0.02785271, 0.02779898, 0.02785271, 0.14658784], [1516889340000, 0.02785271, 0.02785271, 0.02779901, 0.02779901, 1.94218295], [1516889400000, 0.02785271, 0.02785271, 0.02779902, 0.02779902, 2.61752519], [1516889460000, 0.02785271, 0.02785271, 0.02785271, 0.02785271, 0.11409297], [1516889520000, 0.02785271, 0.02785271, 0.02779902, 0.02785271, 1.10686884], [1516889580000, 0.02785271, 0.02785271, 0.02779903, 0.02785271, 0.58633239], [1516889640000, 0.02785271, 0.02785271, 0.02785271, 0.02785271, 0.02005137], [1516889700000, 0.02795079, 0.0279508, 0.02795079, 0.0279508, 0.75621267], [1516889760000, 0.02785271, 0.02785271, 0.02781354, 0.02781354, 0.3577527], [1516889820000, 0.02785271, 0.02785271, 0.02785271, 0.02785271, 0.04237311], [1516889880000, 0.02785271, 0.02785271, 0.02781353, 0.02785271, 0.77480006], [1516889940000, 0.02785271, 0.02785271, 0.02785271, 0.02785271, 0.06443808], [1516890000000, 0.02781353, 0.02785271, 0.027799, 0.02785271, 4.22387409], [1516890060000, 0.02785271, 0.02785271, 0.0278135, 0.0278135, 6.74579711], [1516890120000, 0.0278135, 0.0278135, 0.027799, 0.0278135, 0.30283894], [1516890180000, 0.0278135, 0.0278135, 0.0278135, 0.0278135, 0.24123498], [1516890240000, 0.0278135, 0.0278135, 0.0278135, 0.0278135, 0.12324955], [1516890300000, 0.0278135, 0.0278135, 0.0278135, 0.0278135, 1.06469898], [1516890360000, 0.0278135, 0.0278135, 0.0278135, 0.0278135, 0.33164675], [1516890420000, 0.0278135, 0.0278135, 0.0278135, 0.0278135, 1.63479156], [1516890480000, 0.0278135, 0.0278135, 0.027799, 0.027799, 0.92097886], [1516890540000, 0.027799, 0.0278135, 0.02777037, 0.0278135, 3.08407239], [1516890600000, 0.0278135, 0.0278135, 0.0278135, 0.0278135, 1.9742459], [1516890660000, 0.0278135, 0.0278135, 0.0278135, 0.0278135, 0.07940118], [1516890720000, 0.0278135, 0.0278135, 0.0278135, 0.0278135, 0.08447324], [1516890780000, 0.0278135, 0.0278135, 0.027772, 0.0278135, 8.00611661], [1516890840000, 0.0278135, 0.0278135, 0.0278135, 0.0278135, 6.1132453], [1516890900000, 0.0278135, 0.02785271, 0.0278135, 0.02785271, 1.49233192], [1516890960000, 0.02785271, 0.02785271, 0.02785271, 0.02785271, 0.88873797], [1516891020000, 0.02784802, 0.02784802, 0.0278, 0.0278, 3.75854789], [1516891080000, 0.02777038, 0.02777038, 0.02777038, 0.02777038, 0.90353157], [1516891140000, 0.02777038, 0.0278, 0.02777038, 0.0278, 6.10031688], [1516891200000, 0.0278, 0.0278, 0.02777038, 0.02777038, 21.11057473], [1516891260000, 0.0278, 0.02785271, 0.02777038, 0.02785271, 42.65294335], [1516891320000, 0.02785271, 0.02785271, 0.02785271, 0.02785271, 0.4619513], [1516891380000, 0.02785271, 0.02785271, 0.02785271, 0.02785271, 7.08009531], [1516891440000, 0.02785271, 0.02785271, 0.02785271, 0.02785271, 3.88429191], [1516891500000, 0.02785271, 0.02785271, 0.02785271, 0.02785271, 0.66723193], [1516891560000, 0.02785271, 0.02803384, 0.02785271, 0.02803384, 2.61052149], [1516891620000, 0.02803384, 0.02803879, 0.02803384, 0.02803879, 5.71660065], [1516891680000, 0.02785, 0.02803699, 0.02785, 0.02786391, 7.46739403], [1516891740000, 0.02803699, 0.02803699, 0.02803699, 0.02803699, 0.06365828], [1516891800000, 0.028, 0.028, 0.028, 0.028, 0.10739695], [1516891920000, 0.02786394, 0.02786394, 0.02786394, 0.02786394, 0.24729632], [1516891980000, 0.02786394, 0.02803699, 0.02786394, 0.02803699, 0.30772052], [1516892040000, 0.02803697, 0.02803697, 0.02795045, 0.02803697, 6.58859468], [1516892100000, 0.02803699, 0.02803699, 0.02803699, 0.02803699, 0.04546451], [1516892160000, 0.02803699, 0.02803699, 0.02803699, 0.02803699, 2.20474737], [1516892220000, 0.02803699, 0.02803699, 0.02803699, 0.02803699, 1.597552], [1516892280000, 0.02803699, 0.02803699, 0.02803699, 0.02803699, 0.95238664], [1516892340000, 0.028037, 0.028037, 0.02784642, 0.02784642, 8.97864874], [1516892400000, 0.02803697, 0.02803697, 0.02803697, 0.02803697, 1.42668616], [1516892460000, 0.02803697, 0.028037, 0.02803697, 0.02803699, 6.77675926], [1516892520000, 0.02803699, 0.028037, 0.02803699, 0.028037, 3.64501946], [1516892580000, 0.028037, 0.028037, 0.02803699, 0.02803699, 0.1031306], [1516892700000, 0.02803699, 0.02803699, 0.02803699, 0.02803699, 3.97775761], [1516892760000, 0.02803699, 0.02803699, 0.02803699, 0.02803699, 0.97141721], [1516892820000, 0.028037, 0.028037, 0.02803699, 0.02803699, 28.61713751], [1516892880000, 0.02803699, 0.02803699, 0.02803699, 0.02803699, 0.32705004], [1516892940000, 0.02803699, 0.02803699, 0.02794171, 0.02794171, 0.07503757], [1516893000000, 0.02803699, 0.02803699, 0.02803699, 0.02803699, 2.56604475], [1516893060000, 0.02803699, 0.02803699, 0.02803699, 0.02803699, 0.47380468], [1516893120000, 0.02794171, 0.02803699, 0.02794171, 0.02803699, 1.05347753], [1516893300000, 0.02803698, 0.02803699, 0.02803698, 0.02803699, 1.7833577], [1516893420000, 0.02794171, 0.02803699, 0.02794171, 0.02803699, 4.31453643], [1516893480000, 0.02803699, 0.02803699, 0.02803699, 0.02803699, 0.06398154], [1516893540000, 0.028037, 0.028037, 0.028037, 0.028037, 1.08668566], [1516893600000, 0.028037, 0.0280396, 0.02794171, 0.02794171, 4.28170094], [1516893660000, 0.0280396, 0.0280396, 0.02794171, 0.0280396, 1.27985728], [1516893720000, 0.02805, 0.02805, 0.0280396, 0.0280396, 0.65280415], [1516893900000, 0.02805, 0.02808625, 0.02805, 0.02808625, 1.98530136], [1516893960000, 0.02805678, 0.028088, 0.02805678, 0.02808625, 1.12658296], [1516894020000, 0.0280396, 0.028088, 0.0280396, 0.0280396, 1.05176239], [1516894140000, 0.028088, 0.028088, 0.0280396, 0.0280396, 10.94435298], [1516894200000, 0.0280396, 0.028088, 0.0280396, 0.028088, 0.74756123], [1516894260000, 0.028088, 0.028088, 0.028088, 0.028088, 0.39800886], [1516894320000, 0.02794171, 0.02794171, 0.02794171, 0.02794171, 14.84264007], [1516894380000, 0.02794171, 0.02794171, 0.02794171, 0.02794171, 0.22820217], [1516894440000, 0.02794171, 0.02794171, 0.02794171, 0.02794171, 0.07913422], [1516894500000, 0.02794171, 0.02794171, 0.02794171, 0.02794171, 4.73774849], [1516894560000, 0.02794171, 0.02794171, 0.02794171, 0.02794171, 0.31498647], [1516894620000, 0.0278654, 0.02794171, 0.0278654, 0.02794171, 1.08409394], [1516894680000, 0.02794171, 0.02794171, 0.02794171, 0.02794171, 0.07908856], [1516894740000, 0.02794171, 0.02808797, 0.02788092, 0.02808797, 3.21902244], [1516894800000, 0.02808797, 0.028088, 0.02808797, 0.028088, 1.7801196], [1516894860000, 0.028088, 0.0281, 0.028088, 0.0281, 6.51073821], [1516895040000, 0.0281, 0.0281, 0.0281, 0.0281, 0.33785396], [1516895100000, 0.0281, 0.0281, 0.0281, 0.0281, 2.42835676], [1516895220000, 0.0281, 0.0281, 0.0281, 0.0281, 6.77770368], [1516895280000, 0.0281, 0.028117, 0.0281, 0.028117, 1.619238], [1516895340000, 0.028117, 0.028117, 0.028117, 0.028117, 10.10429575], [1516895400000, 0.02811811, 0.02812844, 0.02800002, 0.02800003, 1.56805306], [1516895520000, 0.02800001, 0.02800001, 0.02800001, 0.02800001, 1.52357096], [1516895640000, 0.02812844, 0.02812844, 0.02812844, 0.02812844, 0.04223166], [1516895820000, 0.02800003, 0.02800003, 0.028, 0.028, 1.13801199], [1516895880000, 0.02812843, 0.02812843, 0.02812843, 0.02812843, 0.09111898], [1516896000000, 0.02812843, 0.02812844, 0.02812843, 0.02812844, 3.46965037], [1516896060000, 0.02800001, 0.02800001, 0.02800001, 0.02800001, 5.0], [1516896120000, 0.02812844, 0.02812844, 0.02812844, 0.02812844, 0.48533348], [1516896180000, 0.02812844, 0.02812844, 0.02812844, 0.02812844, 1.51065135], [1516896240000, 0.02812844, 0.02812844, 0.02800001, 0.02800001, 0.57251766], [1516896300000, 0.02812844, 0.02812844, 0.02812844, 0.02812844, 0.39461889], [1516896360000, 0.028, 0.028, 0.028, 0.028, 1.0], [1516896420000, 0.028, 0.02812844, 0.028, 0.02812844, 2.01955471], [1516896480000, 0.028, 0.02812844, 0.028, 0.02812844, 1.45116422], [1516896540000, 0.02812844, 0.02812844, 0.02812844, 0.02812844, 1.0], [1516896600000, 0.0281284, 0.0281284, 0.028, 0.028, 0.68233238], [1516896660000, 0.0281284, 0.02812844, 0.0281284, 0.02812844, 10.99391419], [1516896720000, 0.02800001, 0.02800001, 0.02800001, 0.02800001, 0.15242941], [1516896780000, 0.02800001, 0.02800001, 0.02800001, 0.02800001, 0.03937528], [1516896840000, 0.02800001, 0.02800001, 0.02800001, 0.02800001, 0.26651413], [1516896900000, 0.028, 0.02814867, 0.028, 0.02814867, 0.79589264], [1516896960000, 0.02814865, 0.02814866, 0.02814865, 0.02814866, 3.0], [1516897020000, 0.02800001, 0.02800001, 0.02800001, 0.02800001, 0.33640022], [1516897080000, 0.02800002, 0.02814869, 0.02800001, 0.02813, 0.74465953], [1516897200000, 0.02813, 0.02814869, 0.02813, 0.02814868, 1.22685666], [1516897260000, 0.02814866, 0.02814868, 0.02814866, 0.02814868, 1.2861574], [1516897320000, 0.02814866, 0.02814866, 0.02814866, 0.02814866, 9.43107829], [1516897440000, 0.02814865, 0.02814865, 0.02814865, 0.02814865, 0.135], [1516897500000, 0.02814866, 0.02814868, 0.02800002, 0.02800002, 7.97556889], [1516897740000, 0.02800003, 0.02800003, 0.028, 0.028, 1.05717067], [1516897800000, 0.02800001, 0.02814868, 0.02794203, 0.02814868, 1.41198588], [1516897860000, 0.02794204, 0.02794204, 0.02794203, 0.02794203, 1.05952878], [1516897920000, 0.02794205, 0.02814868, 0.02794205, 0.02814868, 4.75826334], [1516897980000, 0.02814866, 0.02814866, 0.02814866, 0.02814866, 0.04237585], [1516898040000, 0.02814866, 0.02814868, 0.02814866, 0.02814868, 6.33258383], [1516898220000, 0.02814866, 0.02814866, 0.02814866, 0.02814866, 0.16694858], [1516898340000, 0.028, 0.028, 0.028, 0.028, 0.22761785], [1516898400000, 0.02814864, 0.02814864, 0.02814864, 0.02814864, 0.35525745], [1516898460000, 0.02800001, 0.02800001, 0.028, 0.028, 0.71123147], [1516898520000, 0.028, 0.02800001, 0.028, 0.028, 2.03121033], [1516898580000, 0.02800002, 0.02800002, 0.02800001, 0.02800002, 6.36798438], [1516898640000, 0.02800002, 0.02800002, 0.02800002, 0.02800002, 3.68614868], [1516898700000, 0.02811202, 0.02811202, 0.02811202, 0.02811202, 0.43487974], [1516898760000, 0.02811202, 0.02811202, 0.02811202, 0.02811202, 0.03936834], [1516898820000, 0.02800562, 0.02811201, 0.02800562, 0.02811201, 2.25273127], [1516898880000, 0.02811201, 0.02811201, 0.02811201, 0.02811201, 0.32473458], [1516898940000, 0.02811201, 0.02811202, 0.02811201, 0.02811202, 11.18274237], [1516899000000, 0.02811202, 0.02814866, 0.02811202, 0.02814866, 13.87433597], [1516899060000, 0.02814868, 0.02814868, 0.02814866, 0.02814866, 2.40030387], [1516899120000, 0.02814868, 0.02814868, 0.02814868, 0.02814868, 5.45], [1516899180000, 0.02814868, 0.0281489, 0.02814868, 0.02814886, 5.29415573], [1516899240000, 0.0281489, 0.0281489, 0.02814886, 0.0281489, 9.0538326], [1516899300000, 0.0281489, 0.0281489, 0.02814866, 0.0281489, 12.73039418], [1516899360000, 0.0281489, 0.0281489, 0.0281489, 0.0281489, 65.899935], [1516899420000, 0.02814866, 0.02814866, 0.02814866, 0.02814866, 1.52210096], [1516899480000, 0.02814866, 0.02814866, 0.02814866, 0.02814866, 1.75071784], [1516899540000, 0.0281489, 0.0281489, 0.0281489, 0.0281489, 0.1800001], [1516899600000, 0.0281489, 0.02819812, 0.0281489, 0.0281489, 7.08321112], [1516899660000, 0.02815, 0.02815, 0.0281489, 0.0281489, 13.20859024], [1516899720000, 0.0281489, 0.02815, 0.02814866, 0.02815, 1.31990108], [1516899780000, 0.02814866, 0.02819977, 0.02814866, 0.02814866, 39.20977442], [1516899840000, 0.02814866, 0.02819999, 0.02814866, 0.02814866, 0.17878755], [1516899900000, 0.02814866, 0.02824884, 0.02813429, 0.02824884, 7.20381383], [1516899960000, 0.02813429, 0.02824022, 0.02790009, 0.02824022, 26.64551995], [1516900020000, 0.02790028, 0.02790028, 0.02790028, 0.02790028, 0.15], [1516900080000, 0.02790072, 0.02790072, 0.02790072, 0.02790072, 0.0889129], [1516900140000, 0.02790087, 0.02790087, 0.02790087, 0.02790087, 3.06596247], [1516900200000, 0.02790109, 0.02823784, 0.02790109, 0.0282378, 2.75307991], [1516900260000, 0.02819135, 0.02819135, 0.02819126, 0.02819126, 2.62737904], [1516900380000, 0.02819076, 0.02819076, 0.02819076, 0.02819076, 4.08611501], [1516900440000, 0.02819024, 0.02819024, 0.02819022, 0.02819023, 40.00586294], [1516900500000, 0.02790411, 0.02790411, 0.0279, 0.0279, 273.34948017], [1516900560000, 0.0279, 0.0279, 0.02789999, 0.0279, 72.68954746], [1516900620000, 0.0279, 0.0279, 0.0279, 0.0279, 35.81472445], [1516900680000, 0.0279, 0.0279, 0.02789057, 0.0279, 56.06512442], [1516900740000, 0.0279, 0.0279, 0.0279, 0.0279, 7.58368162], [1516900800000, 0.0279, 0.0279, 0.0279, 0.0279, 27.88789212], [1516900860000, 0.0279, 0.0279, 0.0279, 0.0279, 5.66296822], [1516900920000, 0.0279, 0.0279, 0.0279, 0.0279, 3.81193202], [1516900980000, 0.0279, 0.0279, 0.02789059, 0.02789059, 99.96114017], [1516901040000, 0.0279, 0.0279, 0.0279, 0.0279, 9.51162146], [1516901100000, 0.0279, 0.0279, 0.02789061, 0.0279, 17.72756014], [1516901160000, 0.0279, 0.0279, 0.0279, 0.0279, 1.84737507], [1516901220000, 0.0279, 0.0279, 0.0279, 0.0279, 0.04553738], [1516901280000, 0.0279, 0.0279, 0.02789065, 0.02789065, 34.7340192], [1516901340000, 0.0279, 0.0279, 0.02789065, 0.0279, 9.00251009], [1516901400000, 0.0279, 0.0279, 0.02789065, 0.0279, 1.50428795], [1516901460000, 0.0279, 0.0279, 0.0279, 0.0279, 21.58754658], [1516901520000, 0.02789067, 0.0279, 0.02789067, 0.02789067, 7.51314202], [1516901580000, 0.0279, 0.0279, 0.02789067, 0.0279, 0.20087999], [1516901640000, 0.0279, 0.0279, 0.0279, 0.0279, 1.67669349], [1516901700000, 0.0279, 0.0279, 0.0279, 0.0279, 0.94476532], [1516901760000, 0.0279, 0.0279, 0.0279, 0.0279, 0.14537075], [1516901820000, 0.0279, 0.0279, 0.0279, 0.0279, 68.40151911], [1516901880000, 0.0279, 0.0279, 0.0279, 0.0279, 1.21324997], [1516901940000, 0.0279, 0.0279, 0.0279, 0.0279, 0.57905928], [1516902000000, 0.0279, 0.0279, 0.0279, 0.0279, 0.94014213], [1516902060000, 0.0279, 0.0279, 0.0279, 0.0279, 5.07050689], [1516902120000, 0.0279, 0.0279, 0.0279, 0.0279, 0.40993538], [1516902180000, 0.0279, 0.0279, 0.0279, 0.0279, 3.61479811], [1516902240000, 0.0279, 0.0279, 0.0279, 0.0279, 6.02324525], [1516902300000, 0.0279, 0.0279, 0.0278907, 0.0279, 0.58266284], [1516902360000, 0.0279, 0.0279, 0.0279, 0.0279, 0.13799525], [1516902420000, 0.0279, 0.0279, 0.02785699, 0.027857, 25.38966863], [1516902480000, 0.02785699, 0.027857, 0.02785403, 0.027857, 0.82553873], [1516902540000, 0.027857, 0.0279, 0.02773683, 0.027857, 50.02917172], [1516902600000, 0.02774101, 0.0279, 0.02774101, 0.0279, 3.41464148], [1516902660000, 0.02789999, 0.0279, 0.02789999, 0.0279, 54.23100513], [1516902720000, 0.0279, 0.0279, 0.0279, 0.0279, 0.10716736], [1516902780000, 0.0279, 0.0279, 0.0279, 0.0279, 0.70380523], [1516902840000, 0.0279, 0.0279, 0.02789999, 0.0279, 10.42088493], [1516902900000, 0.0279, 0.0279, 0.0279, 0.0279, 1.63807151], [1516902960000, 0.0279, 0.0279, 0.02781408, 0.0279, 2.03245257], [1516903020000, 0.0279, 0.0279, 0.0279, 0.0279, 0.17281226], [1516903080000, 0.0279, 0.0279, 0.0279, 0.0279, 0.5274137], [1516903140000, 0.0279, 0.0279, 0.0279, 0.0279, 0.77571545], [1516903200000, 0.0279, 0.0279, 0.02775001, 0.02789999, 6.43664344], [1516903260000, 0.02789999, 0.0279, 0.02789999, 0.0279, 0.10983225], [1516903320000, 0.0279, 0.0279, 0.0279, 0.0279, 0.07903286], [1516903380000, 0.0279, 0.0279, 0.0279, 0.0279, 39.86095066], [1516903440000, 0.0279, 0.0279, 0.0279, 0.0279, 44.95580831], [1516903500000, 0.0279, 0.0279, 0.02789999, 0.0279, 17.14955898], [1516903560000, 0.0279, 0.0279, 0.0279, 0.0279, 1.27903286], [1516903620000, 0.0279, 0.0279, 0.0279, 0.0279, 0.1174986], [1516903680000, 0.0279, 0.0279, 0.0279, 0.0279, 1.00959495], [1516903740000, 0.02789999, 0.0279, 0.02789999, 0.0279, 0.20353679], [1516903800000, 0.0279, 0.0279, 0.0279, 0.0279, 0.35786225], [1516903860000, 0.0279, 0.0279, 0.0279, 0.0279, 0.16286779], [1516903920000, 0.0279, 0.0279, 0.02789999, 0.0279, 19.28438176], [1516903980000, 0.0279, 0.0279, 0.0279, 0.0279, 2.09306097], [1516904040000, 0.02789999, 0.0279, 0.02789999, 0.0279, 0.40556969], [1516904100000, 0.0279, 0.0279, 0.02789999, 0.0279, 1.72026535], [1516904160000, 0.02789999, 0.0279, 0.02789999, 0.0279, 1.21726738], [1516904220000, 0.0279, 0.0279, 0.0279, 0.0279, 0.07189569], [1516904280000, 0.0279, 0.0279, 0.0279, 0.0279, 0.46336096], [1516904400000, 0.0279, 0.0279, 0.0279, 0.0279, 0.44639329], [1516904460000, 0.0279, 0.0279, 0.0279, 0.0279, 45.47866444], [1516904520000, 0.0279, 0.02790001, 0.02779108, 0.02790001, 26.72934269], [1516904640000, 0.02803642, 0.02803648, 0.0280364, 0.0280364, 9.2593901], [1516904760000, 0.0279663, 0.0279663, 0.02796628, 0.02796628, 0.37479673], [1516904820000, 0.02796628, 0.0279663, 0.02779405, 0.02779405, 1.62554559], [1516904880000, 0.02796628, 0.02796628, 0.02796626, 0.02796626, 2.19044085], [1516904940000, 0.02796626, 0.02796628, 0.02796626, 0.02796628, 2.67172006], [1516905000000, 0.02796626, 0.02796626, 0.02796626, 0.02796626, 0.97547397], [1516905060000, 0.02796628, 0.02796628, 0.02796627, 0.02796627, 2.61816422], [1516905120000, 0.02796627, 0.02796628, 0.02796626, 0.02796626, 0.83368551], [1516905180000, 0.02796627, 0.02796627, 0.02796626, 0.02796626, 1.13903417], [1516905300000, 0.02796628, 0.02796628, 0.02796628, 0.02796628, 0.35757322], [1516905360000, 0.02796628, 0.02796628, 0.02796628, 0.02796628, 0.0620131], [1516905420000, 0.02796626, 0.02796628, 0.02796626, 0.02796628, 1.03845092], [1516905480000, 0.02796627, 0.02796628, 0.02796626, 0.02796626, 1.46643885], [1516905540000, 0.02796626, 0.02796626, 0.02796626, 0.02796626, 0.15], [1516905600000, 0.02796628, 0.02796628, 0.02796626, 0.02796628, 5.62105295], [1516905660000, 0.02796628, 0.02796628, 0.02796628, 0.02796628, 0.91731792], [1516905720000, 0.02796628, 0.02796628, 0.02796626, 0.02796626, 1.75094], [1516905780000, 0.02796628, 0.02796628, 0.02796626, 0.02796628, 4.45576465], [1516905840000, 0.02796628, 0.02796628, 0.02796628, 0.02796628, 0.23631824], [1516905900000, 0.02796628, 0.02809893, 0.02796626, 0.02796626, 8.86169269], [1516905960000, 0.0280987, 0.0280987, 0.02809862, 0.02809862, 0.19572448], [1516906080000, 0.02809911, 0.02809911, 0.02809911, 0.02809911, 0.44241302], [1516906140000, 0.02809843, 0.02809843, 0.02809825, 0.02809825, 1.19929782], [1516906200000, 0.0280979, 0.0280979, 0.0280978, 0.0280978, 4.70876758], [1516906260000, 0.02802755, 0.02802755, 0.02802755, 0.02802755, 1.14868003], [1516906320000, 0.02802755, 0.02802755, 0.02802755, 0.02802755, 1.15889112], [1516906440000, 0.02802755, 0.02802755, 0.02802753, 0.02802753, 4.07918199], [1516906500000, 0.02802745, 0.02802753, 0.02802745, 0.02802753, 0.79276617], [1516906620000, 0.02802751, 0.02802751, 0.02802741, 0.02802741, 0.07917934], [1516906680000, 0.02802733, 0.02802753, 0.02802733, 0.02802753, 0.07917916], [1516906740000, 0.02802731, 0.02802753, 0.02802723, 0.02802723, 0.40195021], [1516906800000, 0.02802714, 0.02802755, 0.02784655, 0.02784655, 18.44305083], [1516906860000, 0.02802751, 0.02802753, 0.02802751, 0.02802753, 1.05606963], [1516906920000, 0.02802739, 0.02802739, 0.02784656, 0.02784656, 10.03578146], [1516907040000, 0.02786732, 0.02786732, 0.02786731, 0.02786732, 0.55801434], [1516907100000, 0.02786732, 0.02802751, 0.02786732, 0.02797806, 3.95266323], [1516907280000, 0.02786732, 0.02786732, 0.02786732, 0.02786732, 0.95902964], [1516907340000, 0.02786732, 0.02786732, 0.02786732, 0.02786732, 0.31838677], [1516907400000, 0.02786732, 0.02802751, 0.02786732, 0.02802751, 21.15764061], [1516907460000, 0.02802751, 0.02802751, 0.02786733, 0.02802751, 1.23280497], [1516907520000, 0.02802751, 0.02802751, 0.02802751, 0.02802751, 0.5], [1516907580000, 0.02786733, 0.02786733, 0.02786732, 0.02786732, 1.23893934], [1516907640000, 0.02786733, 0.02786733, 0.02786733, 0.02786733, 0.12792297], [1516907700000, 0.02802749, 0.02802751, 0.02802741, 0.02802743, 2.66039072], [1516907760000, 0.02802733, 0.02802733, 0.02802733, 0.02802733, 0.28543486], [1516907940000, 0.027874, 0.02802733, 0.02787208, 0.02787415, 5.22062899], [1516908060000, 0.02787491, 0.02787491, 0.0278749, 0.0278749, 1.0], [1516908120000, 0.02787499, 0.0280272, 0.02787498, 0.0280272, 0.86929796], [1516908180000, 0.02802719, 0.02802733, 0.02802719, 0.02802733, 0.07899501], [1516908240000, 0.02802733, 0.02802733, 0.02802733, 0.02802733, 1.08440887], [1516908300000, 0.02802731, 0.02802731, 0.02802731, 0.02802731, 1.86286278], [1516908360000, 0.02802731, 0.02802731, 0.02802731, 0.02802731, 0.0788879], [1516908420000, 0.02802731, 0.02802732, 0.02802731, 0.02802732, 0.08284593], [1516908480000, 0.02802732, 0.02802732, 0.02802724, 0.02802724, 0.84843301], [1516908540000, 0.02802732, 0.02802732, 0.02802731, 0.02802732, 2.61888786], [1516908600000, 0.0279712, 0.0279712, 0.02795117, 0.0279712, 0.57088619], [1516908660000, 0.0279712, 0.0279712, 0.0279712, 0.0279712, 2.21866718], [1516908720000, 0.0279712, 0.0279712, 0.0279712, 0.0279712, 4.90731306], [1516908780000, 0.0279712, 0.0279712, 0.0279712, 0.0279712, 0.14161104], [1516908840000, 0.0279712, 0.0279712, 0.0279712, 0.0279712, 0.72479439], [1516908900000, 0.0279712, 0.0279712, 0.0279712, 0.0279712, 29.43514904], [1516908960000, 0.0279712, 0.0279712, 0.02792352, 0.02795, 51.65872957], [1516909020000, 0.02795, 0.02795, 0.02786757, 0.02795, 2.35859996], [1516909080000, 0.02795, 0.02795, 0.02795, 0.02795, 2.61602512], [1516909140000, 0.02795, 0.02795, 0.02794999, 0.02794999, 0.71914487], [1516909200000, 0.02794999, 0.02794999, 0.02786862, 0.02794999, 1.59003677], [1516909260000, 0.02794999, 0.02794999, 0.02794999, 0.02794999, 2.6019984], [1516909320000, 0.02786919, 0.02794999, 0.02786919, 0.02794999, 0.75], [1516909380000, 0.02794999, 0.02794999, 0.02786976, 0.02786976, 14.46989211], [1516909440000, 0.02786981, 0.02786995, 0.02785001, 0.02786981, 137.52426965], [1516909500000, 0.02786981, 0.02786981, 0.02779406, 0.02779417, 148.46662097], [1516909560000, 0.02786979, 0.02786981, 0.02786979, 0.02786981, 0.95180553], [1516909620000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 49.5509937], [1516909680000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 5.85625453], [1516909740000, 0.0278698, 0.02786981, 0.0278698, 0.0278698, 0.68668509], [1516909800000, 0.0278698, 0.02786981, 0.0278698, 0.02786981, 0.47678496], [1516909860000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 7.63851985], [1516909920000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 4.38382], [1516909980000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 0.03966543], [1516910040000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 233.10178712], [1516910100000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 0.07933086], [1516910160000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 146.78290698], [1516910220000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 0.08577207], [1516910280000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 0.07915208], [1516910340000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 14.15715208], [1516910400000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 0.07915208], [1516910460000, 0.02786981, 0.02786981, 0.02784725, 0.02784725, 7.51707859], [1516910520000, 0.0278698, 0.0278698, 0.0278698, 0.0278698, 0.98484437], [1516910580000, 0.0278698, 0.0278698, 0.0278698, 0.0278698, 0.07918214], [1516910640000, 0.0278698, 0.0278698, 0.0278698, 0.0278698, 0.07918214], [1516910700000, 0.02785, 0.02785, 0.02785, 0.02785, 1.43824904], [1516910760000, 0.02784727, 0.02785, 0.02775001, 0.02785, 137.17487005], [1516910820000, 0.02785, 0.02785, 0.02775545, 0.02785, 0.31653589], [1516910880000, 0.02775553, 0.02786, 0.02775005, 0.02786, 16.23386381], [1516910940000, 0.02775012, 0.02786, 0.02775012, 0.02786, 5.50380933], [1516911000000, 0.02786, 0.02786, 0.02775016, 0.02785992, 7.29033171], [1516911060000, 0.0277502, 0.02786, 0.02775019, 0.02786, 2.05873297], [1516911120000, 0.02786, 0.02786, 0.02785972, 0.02785972, 0.27657526], [1516911180000, 0.02786, 0.02786, 0.02786, 0.02786, 0.07945966], [1516911240000, 0.02786, 0.02786, 0.02786, 0.02786, 1.52647662], [1516911300000, 0.02786, 0.0278698, 0.02786, 0.0278698, 0.48146898], [1516911360000, 0.0278698, 0.0278698, 0.0278698, 0.0278698, 0.60495588], [1516911420000, 0.02786979, 0.02786979, 0.02786971, 0.02786971, 3.75811374], [1516911480000, 0.02786979, 0.02786979, 0.02775, 0.02775, 36.76052804], [1516911540000, 0.02774999, 0.02775, 0.02774999, 0.02775, 18.38628098], [1516911600000, 0.02775, 0.0278697, 0.02775, 0.02775001, 7.29653116], [1516911660000, 0.0278697, 0.0278697, 0.02775003, 0.02775003, 0.72432397], [1516911720000, 0.02775003, 0.02775004, 0.02775003, 0.02775004, 9.47491865], [1516911780000, 0.02786979, 0.02786979, 0.02786979, 0.02786979, 0.14702718], [1516911840000, 0.02786979, 0.02786979, 0.02786979, 0.02786979, 0.04407573], [1516911900000, 0.0278697, 0.02786979, 0.02784176, 0.02784176, 0.62529416], [1516911960000, 0.02786979, 0.02786979, 0.02784176, 0.02784176, 0.41982053], [1516912020000, 0.02786978, 0.02786978, 0.02784176, 0.02784176, 1.2876468], [1516912080000, 0.02775006, 0.02775006, 0.02775006, 0.02775006, 2.196], [1516912140000, 0.02778888, 0.02784176, 0.02778888, 0.02784176, 2.91173315], [1516912260000, 0.02786979, 0.02786979, 0.02775007, 0.02775012, 13.11948852], [1516912320000, 0.02786979, 0.02786979, 0.02786971, 0.02786971, 0.22041435], [1516912380000, 0.02786962, 0.02786962, 0.02786962, 0.02786962, 0.03972995], [1516912440000, 0.0278697, 0.0278697, 0.0278697, 0.0278697, 1.0], [1516912500000, 0.02786962, 0.0278697, 0.02786962, 0.0278697, 1.35797882], [1516912560000, 0.02786954, 0.02786962, 0.02786954, 0.02786962, 1.04373281], [1516912620000, 0.02775008, 0.02786962, 0.02775008, 0.02786962, 8.17566966], [1516912680000, 0.02775006, 0.02775006, 0.02775005, 0.02775005, 7.99273197], [1516912740000, 0.02775005, 0.02786962, 0.02775005, 0.02786962, 7.61964431], [1516912800000, 0.0278697, 0.0278697, 0.02775005, 0.02775005, 1.13826695], [1516912860000, 0.02775005, 0.02786963, 0.02775005, 0.02786963, 1.56117849], [1516912920000, 0.02786963, 0.0278697, 0.02786963, 0.0278697, 3.87454265], [1516912980000, 0.02786969, 0.0278697, 0.02786969, 0.02786969, 1.97973905], [1516913040000, 0.02786969, 0.0278697, 0.02786969, 0.0278697, 0.23455642], [1516913100000, 0.0278697, 0.02786971, 0.0278697, 0.02786971, 3.12304701], [1516913160000, 0.02786979, 0.02786979, 0.02786971, 0.02786979, 0.18006135], [1516913220000, 0.02786979, 0.02786981, 0.02786979, 0.02786981, 250.5462523], [1516913280000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 1.7827882], [1516913340000, 0.02786981, 0.02786981, 0.02786981, 0.02786981, 33.89845623], [1516913400000, 0.02794589, 0.02799735, 0.02786981, 0.02799735, 100.87579439], [1516913520000, 0.02799735, 0.02799735, 0.02799735, 0.02799735, 0.26878012], [1516913700000, 0.02799735, 0.02799735, 0.02786988, 0.02786988, 0.6661621], [1516913760000, 0.02786991, 0.02786991, 0.02786989, 0.02786989, 23.67099704], [1516913820000, 0.02786989, 0.02786989, 0.02786989, 0.02786989, 36.7750626], [1516913880000, 0.02786989, 0.02786989, 0.02786981, 0.02786989, 57.26029472], [1516913940000, 0.02786989, 0.02786989, 0.02786989, 0.02786989, 26.98800411], [1516914000000, 0.02786983, 0.02800854, 0.02786983, 0.02800854, 9.70638943], [1516914060000, 0.0279, 0.0279, 0.0279, 0.0279, 0.03955893], [1516914120000, 0.0279, 0.02800854, 0.0279, 0.02800854, 1.02060819], [1516914180000, 0.02800854, 0.02800854, 0.02800854, 0.02800854, 9.86446931], [1516914240000, 0.02800854, 0.02802733, 0.02800854, 0.02802731, 25.63980015], [1516914300000, 0.02802733, 0.0281, 0.02800854, 0.02800854, 38.24585063], [1516914420000, 0.02809852, 0.02809852, 0.02809852, 0.02809852, 0.03386957], [1516914480000, 0.02800854, 0.02800854, 0.02800854, 0.02800854, 3.72048358], [1516914540000, 0.02809853, 0.02809853, 0.02809853, 0.02809853, 1.77500389], [1516914600000, 0.028088, 0.028088, 0.02800854, 0.02800854, 0.96007119], [1516914720000, 0.02808796, 0.02808796, 0.02800854, 0.02800854, 4.48224071], [1516914780000, 0.02800853, 0.02800853, 0.02800853, 0.02800853, 0.30539704], [1516914900000, 0.02800853, 0.02800853, 0.0278699, 0.02800853, 2.2623989], [1516914960000, 0.02786992, 0.02800853, 0.02786992, 0.02800853, 0.40103569], [1516915020000, 0.02800851, 0.02800851, 0.0278699, 0.0278699, 0.15142843], [1516915140000, 0.0280085, 0.02800854, 0.0280085, 0.02800854, 1.00588337], [1516915200000, 0.02800853, 0.02800853, 0.02800853, 0.02800853, 0.35703447], [1516915260000, 0.02800853, 0.02800853, 0.028, 0.028, 0.58943559], [1516915380000, 0.02799999, 0.028, 0.02799999, 0.028, 0.21513179], [1516915440000, 0.02799999, 0.028, 0.02799999, 0.028, 5.56795109], [1516915500000, 0.02799999, 0.02808797, 0.02799999, 0.02808797, 10.39116998], [1516915560000, 0.02808797, 0.0281, 0.02808797, 0.0281, 21.26838523], [1516915620000, 0.02808797, 0.02808797, 0.02808797, 0.02808797, 0.22187253], [1516915680000, 0.02808797, 0.02808797, 0.02808797, 0.02808797, 0.07850336], [1516915740000, 0.028088, 0.0281, 0.02808797, 0.0281, 0.1514336], [1516915800000, 0.0281, 0.028293, 0.02808797, 0.02808797, 70.2046066], [1516915860000, 0.02824876, 0.02829296, 0.02808797, 0.02815, 2.36010518], [1516915920000, 0.02808797, 0.02829293, 0.02808797, 0.02808797, 4.32770046], [1516915980000, 0.0282, 0.0282, 0.02808797, 0.02808797, 2.66088861], [1516916040000, 0.02824998, 0.02824998, 0.02824998, 0.02824998, 0.11995461], [1516916100000, 0.02824998, 0.02824999, 0.02824998, 0.02824999, 1.4159292], [1516916220000, 0.02824993, 0.02824993, 0.02824993, 0.02824993, 0.05078938], [1516916280000, 0.02817929, 0.02817929, 0.0281, 0.0281, 1.15534378], [1516916340000, 0.0281, 0.0281, 0.0281, 0.0281, 0.25], [1516916400000, 0.0281, 0.0281, 0.02809999, 0.0281, 1.33345435], [1516916460000, 0.0281, 0.02824993, 0.02808797, 0.02808797, 5.31761545], [1516916580000, 0.02808797, 0.02808797, 0.02808797, 0.02808797, 21.31117055], [1516916700000, 0.02808797, 0.02808797, 0.02808797, 0.02808797, 4.92003068], [1516916760000, 0.02808797, 0.02808797, 0.02808797, 0.02808797, 0.2], [1516916820000, 0.02808798, 0.02808798, 0.02808797, 0.02808797, 1.6238269], [1516916880000, 0.02808798, 0.02808798, 0.02808798, 0.02808798, 0.48162321], [1516917060000, 0.0282487, 0.02824879, 0.02824869, 0.02824879, 147.81002981], [1516917180000, 0.02824877, 0.02824877, 0.02808798, 0.02808798, 7.23795253], [1516917240000, 0.02808798, 0.02824876, 0.02808797, 0.02808797, 3.83925196], [1516917300000, 0.02808797, 0.02824874, 0.02808797, 0.02824874, 12.70494236], [1516917360000, 0.02808797, 0.02808797, 0.02808797, 0.02808797, 6.66451747], [1516917420000, 0.02808797, 0.02808797, 0.02808797, 0.02808797, 1.56625168], [1516917480000, 0.02824874, 0.02824874, 0.02824874, 0.02824874, 2.46613763], [1516917540000, 0.02824874, 0.02824874, 0.02808797, 0.02808797, 1.69444766], [1516917600000, 0.02824874, 0.02824875, 0.02808797, 0.02824875, 3.51537197], [1516917720000, 0.02824874, 0.02824874, 0.02824874, 0.02824874, 0.94879634], [1516917780000, 0.0281, 0.0281, 0.02808797, 0.02808797, 1.54409946], [1516917840000, 0.02808798, 0.02808798, 0.02808797, 0.02808797, 2.08819896], [1516917900000, 0.02824873, 0.02824873, 0.02808798, 0.02808798, 1.44209805], [1516917960000, 0.02808798, 0.02808798, 0.02808797, 0.02808797, 1.04409946], [1516918020000, 0.02824873, 0.02824873, 0.02824872, 0.02824872, 1.215], [1516918140000, 0.02808797, 0.02808797, 0.02808797, 0.02808797, 0.28710512], [1516918200000, 0.02816834, 0.02816834, 0.02816834, 0.02816834, 0.58435112], [1516918320000, 0.02816834, 0.02816834, 0.02816834, 0.02816834, 1.55565796], [1516918500000, 0.02824868, 0.02824869, 0.02816834, 0.02816834, 1.47643011], [1516918620000, 0.02816831, 0.02824869, 0.02816831, 0.02824869, 19.051], [1516918740000, 0.02824869, 0.02824874, 0.02824869, 0.02824874, 1.84786491], [1516918800000, 0.02824873, 0.02824874, 0.028248, 0.028248, 0.46744406], [1516918860000, 0.02810002, 0.02810002, 0.02810002, 0.02810002, 2.48487687], [1516918920000, 0.02824798, 0.02824874, 0.02808797, 0.02824874, 100.75918005], [1516918980000, 0.02808798, 0.02808798, 0.02808798, 0.02808798, 2.33734834], [1516919040000, 0.02824856, 0.02824857, 0.02808798, 0.02808798, 138.41360247], [1516919100000, 0.02808797, 0.02808797, 0.02808797, 0.02808797, 0.97264118], [1516919160000, 0.02808797, 0.02824859, 0.02808797, 0.02808797, 81.7552983], [1516919280000, 0.02824858, 0.02824858, 0.02815, 0.02815, 0.27214051], [1516919340000, 0.02814978, 0.0282486, 0.02814978, 0.0282486, 0.46422924], [1516919400000, 0.0282486, 0.0282486, 0.0282486, 0.0282486, 0.05340365], [1516919460000, 0.0282486, 0.0282486, 0.0282486, 0.0282486, 4.215341], [1516919520000, 0.0282486, 0.02824875, 0.0282486, 0.02824875, 1.23511551], [1516919580000, 0.02824875, 0.02824875, 0.02824875, 0.02824875, 1.88511631], [1516919700000, 0.02824875, 0.02824875, 0.02824875, 0.02824875, 0.53077703], [1516919760000, 0.02808801, 0.02824875, 0.02808801, 0.02824875, 3.57898572], [1516919820000, 0.02808812, 0.02824875, 0.02808812, 0.02824875, 3.69202212], [1516919880000, 0.02824875, 0.02824875, 0.02824875, 0.02824875, 0.71389183], [1516920000000, 0.02824875, 0.02824875, 0.02824875, 0.02824875, 0.35399859], [1516920180000, 0.0282487, 0.02825, 0.0282487, 0.02825, 34.54038236], [1516920240000, 0.02825, 0.028293, 0.02825, 0.028293, 37.97460991], [1516920300000, 0.028293, 0.02829838, 0.02808836, 0.02829838, 34.4193552], [1516920360000, 0.02808853, 0.02810004, 0.02808853, 0.02810004, 1.74769033], [1516920420000, 0.02829835, 0.02829835, 0.02829835, 0.02829835, 0.39284651], [1516920480000, 0.02829835, 0.02829835, 0.02808869, 0.02808869, 1.59306342], [1516920540000, 0.0280889, 0.0280889, 0.0280889, 0.0280889, 8.74996769], [1516920600000, 0.02829835, 0.02829838, 0.02829835, 0.02829835, 3.39686909], [1516920660000, 0.02829835, 0.02829835, 0.02810077, 0.0282983, 2.95155301], [1516920780000, 0.02810058, 0.02810058, 0.02810058, 0.02810058, 1.13357187], [1516920840000, 0.02810077, 0.02810077, 0.02810077, 0.02810077, 0.17353263], [1516920900000, 0.02829825, 0.0282983, 0.02829825, 0.0282983, 0.35337936], [1516920960000, 0.02829828, 0.02829828, 0.02829828, 0.02829828, 0.03704923], [1516921020000, 0.02810082, 0.02810082, 0.02810082, 0.02810082, 2.0], [1516921080000, 0.02829827, 0.02829835, 0.02810092, 0.02829835, 5.06209202], [1516921200000, 0.02810118, 0.0282983, 0.02810108, 0.0282983, 0.39003711], [1516921260000, 0.02829829, 0.0282983, 0.02829829, 0.0282983, 0.740052], [1516921320000, 0.02810101, 0.0282983, 0.02810101, 0.0282983, 19.6185717], [1516921380000, 0.02829825, 0.02829825, 0.02829825, 0.02829825, 2.0], [1516921440000, 0.0282001, 0.0282001, 0.0282001, 0.0282001, 0.11698619], [1516921500000, 0.02829092, 0.02829825, 0.02820211, 0.02820211, 0.42512253], [1516921560000, 0.02820213, 0.02820213, 0.02820213, 0.02820213, 0.0612784], [1516921620000, 0.02820335, 0.02820435, 0.02820335, 0.02820435, 0.66754917], [1516921680000, 0.02820435, 0.02820435, 0.0282043, 0.0282043, 4.00536284], [1516921740000, 0.0282043, 0.0282043, 0.02820212, 0.0282043, 0.57100293], [1516921800000, 0.0282043, 0.0282043, 0.02820214, 0.0282043, 0.97211113], [1516921860000, 0.0282043, 0.0282043, 0.02820214, 0.02820429, 8.70965566], [1516921920000, 0.02820429, 0.02820429, 0.02820429, 0.02820429, 0.25844631], [1516921980000, 0.02820429, 0.02820429, 0.02810643, 0.02810643, 28.37744446], [1516922040000, 0.02820429, 0.0284, 0.02820429, 0.02820429, 19.73580171], [1516922100000, 0.02820429, 0.0282043, 0.02820429, 0.0282043, 4.11998437], [1516922160000, 0.02834999, 0.02834999, 0.0282043, 0.02834999, 0.41266311], [1516922220000, 0.0283499, 0.0283499, 0.02820429, 0.0282043, 5.24365494], [1516922280000, 0.02825075, 0.02834999, 0.02820429, 0.02834999, 2.27076464], [1516922340000, 0.02834999, 0.02835, 0.02822752, 0.02822752, 0.34023019], [1516922400000, 0.02822752, 0.0284, 0.02821578, 0.02834999, 1.79453658], [1516922460000, 0.02834999, 0.02834999, 0.02834999, 0.02834999, 3.51851976], [1516922520000, 0.02834998, 0.028399, 0.0282043, 0.028399, 3.24855077], [1516922580000, 0.02828868, 0.028399, 0.02828868, 0.02828868, 1.11247849], [1516922640000, 0.02828868, 0.02828868, 0.02828868, 0.02828868, 0.66592308], [1516922700000, 0.02828868, 0.02828868, 0.02828868, 0.02828868, 0.83683792], [1516922760000, 0.02828868, 0.02828868, 0.02828867, 0.02828868, 1.59574854], [1516922820000, 0.02828868, 0.02839899, 0.0282343, 0.02839899, 1.64037343], [1516922880000, 0.028399, 0.028399, 0.028399, 0.028399, 0.05006833], [1516922940000, 0.028399, 0.028399, 0.028399, 0.028399, 0.05982234], [1516923060000, 0.028399, 0.028399, 0.028399, 0.028399, 0.47345385], [1516923120000, 0.0282343, 0.0282343, 0.02820435, 0.02820435, 14.0], [1516923180000, 0.02820431, 0.028399, 0.02820431, 0.028399, 1.61121819], [1516923300000, 0.028399, 0.028399, 0.028399, 0.028399, 0.45368138], [1516923360000, 0.028399, 0.028399, 0.028399, 0.028399, 0.4962165], [1516923480000, 0.028399, 0.028399, 0.02839872, 0.028399, 1.6031134], [1516923540000, 0.02820861, 0.02820861, 0.02820861, 0.02820861, 0.14718024], [1516923600000, 0.02820865, 0.02820865, 0.02820865, 0.02820865, 0.12024833], [1516923660000, 0.02820868, 0.02820868, 0.02820865, 0.02820865, 2.63683856], [1516923720000, 0.02839899, 0.02839899, 0.02820471, 0.02820471, 2.71891592], [1516923780000, 0.02838, 0.02838, 0.0282047, 0.0282047, 0.49738948], [1516923840000, 0.02820444, 0.0284, 0.02820444, 0.0284, 18.43152655], [1516923900000, 0.0284, 0.0284, 0.0284, 0.0284, 3.50224972], [1516923960000, 0.0284, 0.0284, 0.02825225, 0.02825225, 3.84279383], [1516924020000, 0.02825225, 0.02825225, 0.02825225, 0.02825225, 0.49571787], [1516924080000, 0.02844934, 0.02844934, 0.02844924, 0.02844926, 2.75551906], [1516924200000, 0.02829565, 0.02829565, 0.02829565, 0.02829565, 0.06136485], [1516924260000, 0.0282059, 0.02827641, 0.02820444, 0.02820444, 3.73086671], [1516924380000, 0.02820444, 0.02844765, 0.02820444, 0.02844765, 1.9182458], [1516924440000, 0.02820447, 0.02820447, 0.02820446, 0.02820446, 0.06500156], [1516924500000, 0.02820472, 0.02820474, 0.02820447, 0.02820471, 2.82736902], [1516924560000, 0.02820447, 0.02820474, 0.02820447, 0.02820447, 15.17727219], [1516924620000, 0.02820447, 0.02843725, 0.02820447, 0.02843725, 3.5131348], [1516924740000, 0.02820556, 0.02820556, 0.02820556, 0.02820556, 3.0], [1516924800000, 0.02839979, 0.02839979, 0.02839979, 0.02839979, 0.05208253], [1516924860000, 0.02839976, 0.02839976, 0.02839976, 0.02839976, 0.52615958], [1516924920000, 0.02839976, 0.02839976, 0.02839956, 0.02839956, 0.41078628], [1516924980000, 0.0283989, 0.0283989, 0.0283989, 0.0283989, 1.0], [1516925040000, 0.02839993, 0.02839993, 0.02839993, 0.02839993, 0.50250299], [1516925100000, 0.02835, 0.02835, 0.02835, 0.02835, 2.2636684], [1516925160000, 0.02839992, 0.02839992, 0.02820476, 0.0283998, 4.39639823], [1516925220000, 0.0283998, 0.0283998, 0.0283998, 0.0283998, 0.05636338], [1516925280000, 0.0283998, 0.0283998, 0.02839972, 0.02839972, 1.0023665], [1516925340000, 0.02839972, 0.02839972, 0.02839972, 0.02839972, 3.0880934], [1516925400000, 0.02839965, 0.0284, 0.02825, 0.02825, 60.31186478], [1516925460000, 0.02838965, 0.02844994, 0.02820652, 0.02820656, 16.14958385], [1516925580000, 0.0284496, 0.0284496, 0.0284496, 0.0284496, 0.16284758], [1516925640000, 0.0282066, 0.0282066, 0.0282066, 0.0282066, 1.23733556], [1516925700000, 0.02844929, 0.02844998, 0.02820616, 0.0284493, 14.08925244], [1516925760000, 0.02844927, 0.02844987, 0.02820638, 0.02844987, 3.39073663], [1516925820000, 0.02820643, 0.02820645, 0.0282064, 0.02820643, 7.66909394], [1516925880000, 0.02820679, 0.02844891, 0.02820473, 0.028438, 20.82133881], [1516925940000, 0.02843799, 0.0284476, 0.02830227, 0.028431, 4.30141788], [1516926000000, 0.02820473, 0.02844998, 0.02820471, 0.02844998, 17.53750895], [1516926060000, 0.02820526, 0.02844646, 0.02820526, 0.02844646, 1.65783173], [1516926120000, 0.02844646, 0.02844646, 0.02820555, 0.0282056, 4.29515868], [1516926180000, 0.02820585, 0.02844946, 0.02820585, 0.02844946, 3.94996803], [1516926240000, 0.02844995, 0.02855765, 0.02821127, 0.02855765, 14.82134309], [1516926300000, 0.02855751, 0.02855751, 0.02821196, 0.02825, 35.86560113], [1516926360000, 0.02825, 0.02825, 0.02825, 0.02825, 5.30233703], [1516926420000, 0.02825, 0.02825, 0.02825, 0.02825, 1.92456811], [1516926480000, 0.02849997, 0.02849997, 0.02827838, 0.02827838, 0.81264216], [1516926540000, 0.02827838, 0.02827838, 0.02827838, 0.02827838, 0.65], [1516926600000, 0.02827832, 0.02849997, 0.02827832, 0.02849997, 0.78346219], [1516926660000, 0.02827837, 0.02827837, 0.02827837, 0.02827837, 0.03327851], [1516926720000, 0.02827846, 0.02849988, 0.02827846, 0.02827875, 0.60657295], [1516926780000, 0.02827875, 0.02847688, 0.02827875, 0.02847688, 0.59396249], [1516926900000, 0.02828004, 0.02849991, 0.02828001, 0.02828102, 6.60547774], [1516926960000, 0.02828102, 0.02849991, 0.02828102, 0.02849991, 22.02612757], [1516927020000, 0.02846948, 0.02849997, 0.028281, 0.02849994, 8.80556521], [1516927080000, 0.02849994, 0.02849994, 0.02839001, 0.02839001, 0.15659922], [1516927140000, 0.02838799, 0.02838799, 0.02828099, 0.02828099, 0.93910297], [1516927200000, 0.02838597, 0.02838799, 0.028281, 0.02838697, 3.65928087], [1516927260000, 0.02838697, 0.02849996, 0.02828099, 0.02848955, 40.9336724], [1516927320000, 0.02828099, 0.02848946, 0.02828099, 0.02848933, 12.82727011], [1516927380000, 0.028281, 0.02848686, 0.02828099, 0.02848686, 0.46964288], [1516927440000, 0.02828099, 0.02848577, 0.02828099, 0.02848577, 0.48590413], [1516927500000, 0.02828107, 0.02847991, 0.02828107, 0.02847982, 1.080953], [1516927560000, 0.02847978, 0.02847978, 0.02833737, 0.02833737, 0.38994405], [1516927620000, 0.02833737, 0.02847868, 0.0282789, 0.0282789, 0.16032819], [1516927740000, 0.02828324, 0.02828324, 0.02827875, 0.0282789, 2.8383721], [1516927800000, 0.0282789, 0.02846566, 0.02827875, 0.02845542, 16.6583914], [1516927860000, 0.0282789, 0.02830538, 0.02827832, 0.02830538, 5.48133252], [1516927920000, 0.02827832, 0.02827832, 0.02827832, 0.02827832, 1.10216396], [1516927980000, 0.02827832, 0.02827832, 0.02827832, 0.02827832, 3.1], [1516928040000, 0.02845539, 0.02849399, 0.02845539, 0.02849399, 23.51051666], [1516928100000, 0.02827832, 0.02848988, 0.02827832, 0.02848331, 16.41191067], [1516928160000, 0.02827833, 0.02827833, 0.02827833, 0.02827833, 0.04958079], [1516928220000, 0.02827832, 0.02847908, 0.02827832, 0.02847908, 0.1158528], [1516928280000, 0.02847891, 0.02847892, 0.0282669, 0.02845872, 117.92856312], [1516928340000, 0.0283, 0.02846869, 0.0283, 0.02846869, 2.9221114], [1516928400000, 0.0283, 0.0283, 0.0283, 0.0283, 0.84322175], [1516928460000, 0.0283, 0.028465, 0.0283, 0.02846499, 29.07639295], [1516928520000, 0.02846497, 0.028465, 0.02846497, 0.02846499, 4.28937894], [1516928580000, 0.02829999, 0.02849789, 0.02829999, 0.02849787, 55.90874586], [1516928640000, 0.02830002, 0.02857048, 0.02830002, 0.02857048, 13.1741761], [1516928700000, 0.02832303, 0.02855, 0.02830047, 0.02830047, 0.43782008], [1516928760000, 0.02854992, 0.02854994, 0.02830081, 0.02830081, 15.85721953], [1516928820000, 0.02830093, 0.02854985, 0.02830093, 0.02854978, 0.90021064], [1516928880000, 0.02830139, 0.02851189, 0.0282558, 0.0283042, 1.73042769], [1516928940000, 0.0283042, 0.02857047, 0.0282669, 0.02826721, 37.20377841], [1516929000000, 0.0282673, 0.02857006, 0.0282673, 0.02826746, 4.46077683], [1516929060000, 0.02856995, 0.02856995, 0.02826765, 0.02826787, 9.2947487], [1516929120000, 0.02856984, 0.02856989, 0.02856984, 0.02856989, 13.7063879], [1516929180000, 0.02826913, 0.02826913, 0.02826913, 0.02826913, 0.04151305], [1516929240000, 0.02826981, 0.02826981, 0.02826981, 0.02826981, 0.07231277], [1516929300000, 0.02827025, 0.02827051, 0.02827023, 0.02827051, 3.5865749], [1516929360000, 0.02827071, 0.02857048, 0.02827071, 0.02857048, 3.10469426], [1516929420000, 0.02827136, 0.02827159, 0.02827136, 0.02827159, 0.32802795], [1516929480000, 0.0282725, 0.0282725, 0.0282725, 0.0282725, 0.0458293], [1516929540000, 0.02827286, 0.02827286, 0.02827286, 0.02827286, 0.09], [1516929600000, 0.02828309, 0.02857045, 0.02828309, 0.02857045, 0.43481733], [1516929660000, 0.02830008, 0.02857045, 0.02830008, 0.02857045, 0.49556196], [1516929720000, 0.02830026, 0.02858999, 0.02830026, 0.02858999, 6.86306455], [1516929780000, 0.02857044, 0.02858999, 0.02857044, 0.02858999, 1.77999279], [1516929840000, 0.02830103, 0.02857041, 0.02830102, 0.0285, 5.58215748], [1516929900000, 0.02833748, 0.02833748, 0.02833748, 0.02833748, 0.11808935], [1516929960000, 0.02833769, 0.02833769, 0.0282831, 0.02830102, 71.89162319], [1516930020000, 0.02857036, 0.02857036, 0.02857036, 0.02857036, 0.10056041], [1516930080000, 0.0283377, 0.0285703, 0.0283377, 0.0285703, 4.0908828], [1516930200000, 0.02853485, 0.02853485, 0.02833772, 0.02833772, 0.09607758], [1516930260000, 0.02853406, 0.02853406, 0.02853406, 0.02853406, 0.06050332], [1516930320000, 0.02833771, 0.02833771, 0.02826726, 0.0283377, 1.15299193], [1516930380000, 0.02826723, 0.02833768, 0.02826723, 0.02826724, 5.8159172], [1516930440000, 0.02833764, 0.02833764, 0.02826721, 0.02833758, 2.76043985], [1516930500000, 0.02833758, 0.02833758, 0.02826721, 0.02833748, 2.25716709], [1516930560000, 0.02833747, 0.02833747, 0.02826721, 0.02833742, 3.540646], [1516930620000, 0.02833742, 0.02852098, 0.02833742, 0.02833742, 7.39859945], [1516930680000, 0.02833743, 0.02852079, 0.02833743, 0.02852079, 0.44444657], [1516930740000, 0.02852076, 0.02852076, 0.02833744, 0.02833744, 0.896073], [1516930800000, 0.02833744, 0.02852, 0.02833744, 0.02852, 1.17676404], [1516930860000, 0.0284, 0.0284, 0.0284, 0.0284, 1.07729846], [1516930920000, 0.02852, 0.02852, 0.02852, 0.02852, 34.50723504], [1516930980000, 0.02852, 0.02852079, 0.02852, 0.02852, 9.00806868], [1516931040000, 0.02852039, 0.02852079, 0.02852039, 0.02852079, 1.25651354], [1516931100000, 0.02852079, 0.02852079, 0.02852, 0.02852, 2.18468917], [1516931160000, 0.02852001, 0.02852001, 0.02852, 0.02852, 6.42086079], [1516931220000, 0.02852078, 0.02852079, 0.02852, 0.02852, 0.07133665], [1516931280000, 0.02852, 0.02852, 0.02852, 0.02852, 6.24932031], [1516931340000, 0.02852, 0.02853347, 0.02852, 0.02852, 8.54157743], [1516931400000, 0.02852, 0.02853349, 0.02852, 0.02852, 6.73274272], [1516931460000, 0.02852, 0.02853348, 0.02852, 0.02853348, 2.34029213], [1516931520000, 0.02853348, 0.02853349, 0.02852, 0.02852, 9.37572293], [1516931580000, 0.02853349, 0.02853349, 0.02853349, 0.02853349, 0.29171501], [1516931640000, 0.02852, 0.02853349, 0.02852, 0.02853349, 9.29161433], [1516931700000, 0.02852, 0.02853348, 0.02852, 0.02852, 2.06407378], [1516931820000, 0.028521, 0.02853348, 0.02852, 0.02852, 8.36676542], [1516931880000, 0.02852, 0.02853348, 0.02852, 0.02852, 12.17600582], [1516931940000, 0.02852, 0.02852, 0.0284, 0.0284, 4.23740709], [1516932000000, 0.0284, 0.02853349, 0.0284, 0.02852602, 18.66213727], [1516932060000, 0.02852602, 0.02852602, 0.02852602, 0.02852602, 6.07460768], [1516932120000, 0.02852602, 0.02852602, 0.02852602, 0.02852602, 28.17926592], [1516932240000, 0.028526, 0.02853263, 0.028526, 0.02853263, 3.24321033], [1516932300000, 0.02835004, 0.0285335, 0.02835004, 0.0285335, 0.73093048], [1516932360000, 0.02835004, 0.02835004, 0.02835, 0.02835, 0.45], [1516932420000, 0.02844174, 0.02844174, 0.02844174, 0.02844174, 0.03876345], [1516932480000, 0.02844174, 0.02853316, 0.02835001, 0.02853307, 0.87207403], [1516932540000, 0.02835, 0.02853288, 0.02835, 0.02853272, 0.13278804], [1516932660000, 0.02844148, 0.02844148, 0.02844148, 0.02844148, 0.21468975], [1516932720000, 0.02853143, 0.02853143, 0.02853143, 0.02853143, 0.45335715], [1516932780000, 0.02835002, 0.02835002, 0.02825, 0.02825, 3.54588963], [1516932840000, 0.02852094, 0.02852094, 0.02852094, 0.02852094, 0.08235778], [1516932900000, 0.02851047, 0.0285105, 0.02851047, 0.0285105, 2.28329581], [1516932960000, 0.02825115, 0.02825115, 0.02825115, 0.02825115, 0.25447972], [1516933020000, 0.02825138, 0.0282514, 0.02825138, 0.0282514, 2.73343798], [1516933140000, 0.02825276, 0.02848971, 0.02825276, 0.02848971, 0.64666392], [1516933200000, 0.02848968, 0.02848971, 0.02825513, 0.02825522, 1.12132704], [1516933260000, 0.02848955, 0.02848955, 0.02848944, 0.02848944, 0.22424558], [1516933320000, 0.02848958, 0.02848958, 0.02848958, 0.02848958, 1.86800136], [1516933500000, 0.02848947, 0.02848947, 0.02828963, 0.02828963, 1.3067711], [1516933560000, 0.02828963, 0.02829945, 0.02828963, 0.02829945, 1.02603703], [1516933620000, 0.02848823, 0.02848823, 0.02848823, 0.02848823, 0.04729352], [1516933680000, 0.02829945, 0.02839383, 0.02825, 0.02839383, 2.2198438], [1516933740000, 0.02834929, 0.0284231, 0.02834929, 0.0284231, 3.26846648], [1516933800000, 0.02825008, 0.02847703, 0.02825008, 0.02847703, 1.85148272], [1516933860000, 0.02825019, 0.02825019, 0.02825019, 0.02825019, 9.94042732], [1516933920000, 0.02848141, 0.02848143, 0.02825054, 0.02825054, 4.08357769], [1516933980000, 0.02825127, 0.028397, 0.02825057, 0.028397, 1.83352133], [1516934100000, 0.02847545, 0.02848154, 0.02840335, 0.02840335, 7.42845297], [1516934160000, 0.0283, 0.0283, 0.02825, 0.02825, 1.42280728], [1516934220000, 0.02847751, 0.02847751, 0.02847751, 0.02847751, 0.32099177], [1516934280000, 0.0282503, 0.02825039, 0.02825028, 0.02825028, 16.65565628], [1516934340000, 0.02847774, 0.02847774, 0.02847753, 0.02847753, 1.31597695], [1516934400000, 0.02847743, 0.02847743, 0.02847728, 0.02847728, 1.09740574], [1516934460000, 0.02847743, 0.02847743, 0.02847741, 0.02847741, 0.45867958], [1516934580000, 0.02847678, 0.02847678, 0.02847678, 0.02847678, 0.24202946], [1516934640000, 0.02847676, 0.02847677, 0.02836398, 0.02836398, 1.29931428], [1516934700000, 0.02836398, 0.02836398, 0.02836398, 0.02836398, 0.50335394], [1516934760000, 0.02826491, 0.02826491, 0.0282649, 0.02826491, 1.89135635], [1516934820000, 0.02826491, 0.02826491, 0.0282649, 0.02826491, 11.55183239], [1516934880000, 0.02836398, 0.02836398, 0.02825107, 0.02836398, 2.84201966], [1516934940000, 0.02836398, 0.02836398, 0.02836398, 0.02836398, 3.05325188], [1516935000000, 0.02836398, 0.02841886, 0.02836398, 0.02841884, 4.25372404], [1516935060000, 0.02825127, 0.02841877, 0.02825126, 0.02841877, 0.20613957], [1516935120000, 0.02825126, 0.02825126, 0.02825, 0.02825126, 1.13434658], [1516935180000, 0.02825126, 0.02833459, 0.02820215, 0.02833459, 14.82203634], [1516935240000, 0.02839794, 0.02839794, 0.02820215, 0.02820215, 9.9316458], [1516935300000, 0.02820215, 0.02838942, 0.02820215, 0.02820215, 31.0296021], [1516935360000, 0.02820215, 0.02820215, 0.02820215, 0.02820215, 4.138614], [1516935420000, 0.02820215, 0.02820215, 0.02810702, 0.02810702, 5.23871657], [1516935480000, 0.02824261, 0.02833776, 0.02824261, 0.0283372, 1.23864605], [1516935540000, 0.02833711, 0.02833711, 0.02833711, 0.02833711, 0.39105211], [1516935600000, 0.02833653, 0.02833653, 0.028336, 0.028336, 0.99976966], [1516935660000, 0.0283357, 0.02833571, 0.0283357, 0.02833571, 1.747], [1516935720000, 0.02824261, 0.02824261, 0.02824261, 0.02824261, 0.0380629], [1516935780000, 0.02824261, 0.02824261, 0.0282426, 0.0282426, 0.03550233], [1516935840000, 0.0282426, 0.0282426, 0.0282426, 0.0282426, 1.39068529], [1516935900000, 0.0282426, 0.0282426, 0.0282426, 0.0282426, 0.64159317], [1516935960000, 0.0282426, 0.0282426, 0.0282426, 0.0282426, 1.00154276], [1516936020000, 0.0282426, 0.0282426, 0.0282426, 0.0282426, 2.98846476], [1516936140000, 0.0282426, 0.0282426, 0.0281963, 0.0281963, 0.37559474], [1516936200000, 0.0281963, 0.02833612, 0.0281963, 0.0283361, 37.21705952], [1516936260000, 0.0283361, 0.0283361, 0.0283361, 0.0283361, 1.35019379], [1516936320000, 0.0283361, 0.0283361, 0.02815001, 0.0283361, 1.97899484], [1516936380000, 0.0283361, 0.0283361, 0.02815001, 0.02815001, 3.83349252], [1516936440000, 0.0283361, 0.02841882, 0.0283361, 0.02841882, 105.53257386], [1516936500000, 0.02841881, 0.02841881, 0.0283361, 0.0283361, 2.03554568], [1516936560000, 0.0283361, 0.0283361, 0.0283361, 0.0283361, 0.02389602], [1516936620000, 0.02815019, 0.0283361, 0.02812522, 0.0283361, 0.60242285], [1516936680000, 0.0283361, 0.0283361, 0.0281243, 0.0281243, 0.63349663], [1516936800000, 0.0283361, 0.0283361, 0.0283361, 0.0283361, 0.04294801], [1516936860000, 0.0283361, 0.02839527, 0.0283361, 0.0283361, 1.94243885], [1516936920000, 0.0283361, 0.0283361, 0.0283361, 0.0283361, 1.08336404], [1516936980000, 0.02833605, 0.02833605, 0.02833605, 0.02833605, 0.83337684], [1516937040000, 0.02813001, 0.02833595, 0.02812452, 0.02833595, 22.58871041], [1516937160000, 0.02833583, 0.02833583, 0.02812553, 0.02812553, 4.08927551], [1516937280000, 0.02815, 0.02815, 0.02815, 0.02815, 0.44887751], [1516937340000, 0.02815, 0.02815, 0.02815, 0.02815, 1.06715517], [1516937400000, 0.02815, 0.02815, 0.02815, 0.02815, 4.6859477], [1516937460000, 0.02815, 0.02833545, 0.02815, 0.02833545, 5.27604302], [1516937700000, 0.02833545, 0.02833545, 0.02815041, 0.02815041, 18.35578178], [1516937760000, 0.02815041, 0.02815041, 0.02815041, 0.02815041, 6.88943377], [1516937820000, 0.02815041, 0.02833545, 0.02815041, 0.02833545, 2.36232078], [1516937940000, 0.02833545, 0.02833545, 0.02815501, 0.02815501, 10.02397112], [1516938000000, 0.02833545, 0.02833545, 0.02815901, 0.02815901, 0.45291418], [1516938240000, 0.02833536, 0.02833536, 0.02833536, 0.02833536, 0.03534959], [1516938300000, 0.02826452, 0.02826452, 0.02826452, 0.02826452, 0.37616575], [1516938360000, 0.02826452, 0.02826452, 0.02826452, 0.02826452, 0.14576833], [1516938420000, 0.0283353, 0.0283353, 0.0283353, 0.0283353, 0.12705], [1516938480000, 0.0283353, 0.0283353, 0.02815937, 0.02833529, 2.57694606], [1516938540000, 0.02833528, 0.02834052, 0.02833528, 0.02834052, 34.03725559], [1516938600000, 0.02833529, 0.0283353, 0.02833529, 0.02833529, 13.45048205], [1516938660000, 0.02833529, 0.0283353, 0.02833529, 0.02833529, 3.27935157], [1516938720000, 0.0283353, 0.0283353, 0.02833529, 0.02833529, 19.05014302], [1516938780000, 0.02833529, 0.02833529, 0.02833529, 0.02833529, 0.72647054], [1516938900000, 0.0283353, 0.0283353, 0.0283353, 0.0283353, 3.78253659], [1516938960000, 0.02833529, 0.0283353, 0.02833529, 0.0283353, 0.46884669], [1516939020000, 0.0283353, 0.0283353, 0.0283353, 0.0283353, 0.08842742], [1516939080000, 0.02834052, 0.02834052, 0.02834052, 0.02834052, 0.31322599], [1516939140000, 0.02834052, 0.02834052, 0.02834052, 0.02834052, 0.23671548], [1516939200000, 0.0283353, 0.02834, 0.0283353, 0.02834, 1.26581722], [1516939260000, 0.0283353, 0.02834, 0.0283353, 0.02834, 0.87533509], [1516939320000, 0.02833531, 0.02834, 0.02833531, 0.02834, 0.84095425], [1516939380000, 0.02833531, 0.02833531, 0.02833531, 0.02833531, 3.38962558], [1516939440000, 0.02833531, 0.02833927, 0.02833531, 0.02833927, 5.27614504], [1516939500000, 0.02833999, 0.02834052, 0.02833999, 0.02834052, 0.87421309], [1516939560000, 0.02833927, 0.02834052, 0.02833927, 0.02833927, 1.41196662], [1516939620000, 0.02834052, 0.02834052, 0.02833927, 0.02833927, 0.40506881], [1516939680000, 0.02834052, 0.02834052, 0.02834052, 0.02834052, 0.81060008], [1516939860000, 0.02834052, 0.02834052, 0.02833927, 0.02833927, 13.93099798], [1516939920000, 0.02833927, 0.02834052, 0.02833927, 0.02834052, 8.34035879], [1516939980000, 0.02833928, 0.02834052, 0.02833927, 0.02834052, 5.354013], [1516940040000, 0.02833928, 0.02833928, 0.02833927, 0.02833927, 7.329151], [1516940100000, 0.02833927, 0.02833927, 0.02833529, 0.02833529, 7.129569], [1516940160000, 0.02833529, 0.02833529, 0.02833529, 0.02833529, 6.603304], [1516940220000, 0.02833529, 0.02834052, 0.02833529, 0.02833529, 9.01202702], [1516940280000, 0.02833529, 0.02834052, 0.02815931, 0.02815931, 28.93238664], [1516940340000, 0.02823529, 0.02823529, 0.02815931, 0.02815931, 5.0], [1516940400000, 0.02833526, 0.02833526, 0.02833526, 0.02833526, 1.05875001], [1516940460000, 0.02833525, 0.02834052, 0.02823529, 0.02823529, 4.19941763], [1516940520000, 0.02823529, 0.02834051, 0.02823529, 0.02834051, 1.12100019], [1516940580000, 0.02834052, 0.02834052, 0.02834052, 0.02834052, 0.01983415], [1516940640000, 0.02823529, 0.02823529, 0.02823529, 0.02823529, 3.65482608], [1516940700000, 0.02823529, 0.0283405, 0.02823529, 0.0283405, 4.34572], [1516940760000, 0.02823529, 0.02823529, 0.02823529, 0.02823529, 8.22123417], [1516940820000, 0.02823529, 0.02834047, 0.02823529, 0.02823529, 3.74852895], [1516940880000, 0.02823529, 0.02823529, 0.02823529, 0.02823529, 2.528015], [1516940940000, 0.02823529, 0.02823529, 0.02823529, 0.02823529, 2.47863898], [1516941000000, 0.02833969, 0.02833969, 0.02815937, 0.02833956, 4.44745855], [1516941120000, 0.02833935, 0.02833935, 0.02833928, 0.02833928, 0.22327321], [1516941240000, 0.02833867, 0.02833867, 0.02833867, 0.02833867, 0.48300215], [1516941300000, 0.0283386, 0.0283386, 0.0283386, 0.0283386, 0.04895981], [1516941360000, 0.02833929, 0.0283393, 0.02833929, 0.0283393, 0.06433671], [1516941420000, 0.02833927, 0.02833927, 0.02833927, 0.02833927, 0.03906658], [1516941480000, 0.02833927, 0.02833927, 0.02833927, 0.02833927, 0.09896059], [1516941600000, 0.02833923, 0.02833928, 0.02833923, 0.02833928, 0.35286811], [1516941660000, 0.02833923, 0.02833923, 0.02833905, 0.02833905, 1.38883846], [1516941720000, 0.02833923, 0.02833923, 0.02815954, 0.02815954, 4.0107232], [1516941780000, 0.02815954, 0.02833916, 0.02815954, 0.02833916, 2.44494036], [1516941840000, 0.02833912, 0.02833912, 0.02833911, 0.02833912, 5.43310297], [1516941900000, 0.02833912, 0.02833912, 0.02815954, 0.02815956, 2.76940199], [1516941960000, 0.02815958, 0.02815958, 0.02815956, 0.02815956, 0.28875419], [1516942020000, 0.02815956, 0.02815956, 0.02815954, 0.02815956, 2.12560891], [1516942080000, 0.02815956, 0.02815956, 0.02815956, 0.02815956, 1.25721099], [1516942140000, 0.02815956, 0.02815956, 0.02815956, 0.02815956, 1.49042774], [1516942200000, 0.02815956, 0.02815956, 0.02815953, 0.02815953, 0.45756276], [1516942260000, 0.02815953, 0.02815953, 0.02815953, 0.02815953, 0.0682885], [1516942320000, 0.02815953, 0.02815953, 0.02815953, 0.02815953, 1.81103784], [1516942380000, 0.02815953, 0.02815953, 0.02815953, 0.02815953, 0.37818243], [1516942440000, 0.02815953, 0.02815953, 0.02815953, 0.02815953, 0.04895414], [1516942500000, 0.02815953, 0.02815953, 0.02815953, 0.02815953, 1.06535982], [1516942560000, 0.02815953, 0.02815953, 0.02815953, 0.02815953, 0.83351587], [1516942620000, 0.02815953, 0.02815953, 0.02815953, 0.02815953, 0.03915223], [1516942680000, 0.02815953, 0.02815953, 0.02815952, 0.02815953, 0.10206821], [1516942740000, 0.02815953, 0.02815953, 0.02815953, 0.02815953, 9.46876329], [1516942800000, 0.02815953, 0.02830151, 0.02815953, 0.02830151, 1.56252759], [1516942860000, 0.02830151, 0.02830151, 0.0283015, 0.0283015, 0.68861577], [1516942920000, 0.02830151, 0.02830151, 0.02830151, 0.02830151, 0.65233228], [1516942980000, 0.0283015, 0.0283015, 0.02827306, 0.02827306, 1.04395604], [1516943040000, 0.02827306, 0.02834052, 0.02827306, 0.02834052, 18.65618882], [1516943100000, 0.02834052, 0.02834052, 0.02834052, 0.02834052, 1.18698414], [1516943220000, 0.02833987, 0.02834052, 0.02833987, 0.02834052, 0.93565646], [1516943280000, 0.02834052, 0.02834052, 0.02834052, 0.02834052, 0.05012821], [1516943400000, 0.02816268, 0.02816268, 0.0281593, 0.0281593, 14.99584467], [1516943460000, 0.0281599, 0.0281599, 0.0281593, 0.0281593, 3.4460079], [1516943520000, 0.02824049, 0.02824049, 0.02824049, 0.02824049, 0.03915043], [1516943580000, 0.02824049, 0.02824049, 0.02824049, 0.02824049, 0.09659787], [1516943640000, 0.02816146, 0.02824049, 0.02816146, 0.02824048, 3.08933557], [1516943700000, 0.02824048, 0.02824048, 0.02824048, 0.02824048, 0.04630997], [1516943760000, 0.02824048, 0.02824048, 0.02824048, 0.02824048, 0.0177548], [1516943820000, 0.02824048, 0.02824048, 0.02820096, 0.02820096, 2.94263986], [1516943880000, 0.02822916, 0.02822916, 0.02822916, 0.02822916, 0.08207036], [1516943940000, 0.02816146, 0.02822916, 0.028155, 0.0281593, 3.6868804], [1516944000000, 0.0281593, 0.02824048, 0.02815501, 0.02815501, 22.07681345], [1516944060000, 0.02815501, 0.02815501, 0.02814749, 0.02814749, 7.4632305], [1516944120000, 0.02815501, 0.02815501, 0.02815501, 0.02815501, 1.4e-07], [1516944180000, 0.02824048, 0.02824048, 0.02824048, 0.02824048, 0.0391688], [1516944240000, 0.02824048, 0.02824048, 0.02824048, 0.02824048, 0.0391688], [1516944300000, 0.02824048, 0.02824048, 0.02824048, 0.02824048, 2.80636765], [1516944360000, 0.02824048, 0.02824049, 0.02824048, 0.02824049, 0.03916809], [1516944420000, 0.02824049, 0.02824049, 0.02824049, 0.02824049, 0.211894], [1516944540000, 0.02824049, 0.02824049, 0.02824049, 0.02824049, 0.07909246], [1516944600000, 0.02821348, 0.02823, 0.02814749, 0.02823, 2.47187239], [1516944660000, 0.02824049, 0.02824049, 0.02814749, 0.02824049, 3.56033916], [1516944720000, 0.02824049, 0.02824049, 0.02824049, 0.02824049, 0.03916878], [1516944780000, 0.02824049, 0.02824049, 0.02824049, 0.02824049, 0.25991262], [1516944840000, 0.02814749, 0.02814749, 0.02814749, 0.02814749, 0.1], [1516944900000, 0.0283403, 0.0283403, 0.0283403, 0.0283403, 0.35285317], [1516944960000, 0.02834028, 0.02834028, 0.02834028, 0.02834028, 0.45202662], [1516945020000, 0.02834028, 0.02834028, 0.02834028, 0.02834028, 0.27651896], [1516945080000, 0.02814749, 0.02814749, 0.02810791, 0.02810791, 0.2395], [1516945140000, 0.02814749, 0.02814749, 0.02814749, 0.02814749, 2.139211], [1516945200000, 0.02814749, 0.02834028, 0.02810861, 0.02834028, 0.55371837], [1516945260000, 0.02810872, 0.02810872, 0.02810872, 0.02810872, 0.02953577], [1516945320000, 0.02834026, 0.02834026, 0.02834026, 0.02834026, 0.02953577], [1516945380000, 0.02834028, 0.02834028, 0.02834028, 0.02834028, 0.11796547], [1516945440000, 0.02834028, 0.02834028, 0.02834028, 0.02834028, 0.54591293], [1516945500000, 0.02834028, 0.02834031, 0.02834028, 0.02834031, 0.54732557], [1516945560000, 0.02822525, 0.02834049, 0.02822525, 0.02834049, 48.97087898], [1516945620000, 0.02834049, 0.02834052, 0.02834049, 0.02834049, 0.8246788], [1516945680000, 0.0283405, 0.0283405, 0.0283405, 0.0283405, 0.01778422], [1516945740000, 0.0283405, 0.02834051, 0.0283405, 0.02834051, 0.70689334], [1516945800000, 0.0283405, 0.02834051, 0.02834049, 0.02834051, 5.41012649], [1516945860000, 0.02811601, 0.02834051, 0.02811601, 0.02834051, 2.23922006], [1516945980000, 0.02834049, 0.02834049, 0.02834049, 0.02834049, 1.81290756], [1516946040000, 0.02834049, 0.02834049, 0.02834049, 0.02834049, 1.33713544], [1516946100000, 0.02834049, 0.02834051, 0.02834049, 0.02834051, 0.40472709], [1516946220000, 0.02834051, 0.02834051, 0.02834051, 0.02834051, 0.15340406], [1516946280000, 0.02834051, 0.02834051, 0.02834051, 0.02834051, 0.16177565], [1516946400000, 0.02834051, 0.02834051, 0.02834051, 0.02834051, 0.35285192], [1516946460000, 0.02814538, 0.02814538, 0.02814538, 0.02814538, 0.86432811], [1516946520000, 0.02834051, 0.02834051, 0.02834051, 0.02834051, 0.03846172], [1516946640000, 0.02834051, 0.02834051, 0.02834051, 0.02834051, 3.11701213], [1516946700000, 0.02834051, 0.02834052, 0.0281454, 0.02834049, 1.1663412], [1516946820000, 0.02834, 0.02834, 0.02834, 0.02834, 0.17684108], [1516946880000, 0.02814531, 0.02847775, 0.0281164, 0.02847775, 158.26436424], [1516947000000, 0.028339, 0.02847706, 0.028339, 0.02847706, 30.98776696], [1516947060000, 0.02835, 0.02835, 0.02835, 0.02835, 0.03493581], [1516947120000, 0.0283, 0.0283, 0.0283, 0.0283, 0.3012236], [1516947180000, 0.0283, 0.0283, 0.02815, 0.02815, 11.1293119], [1516947240000, 0.0282, 0.0282, 0.0282, 0.0282, 0.26450564], [1516947300000, 0.0282, 0.02833, 0.0282, 0.02833, 1.19326306], [1516947360000, 0.02833, 0.02833, 0.02833, 0.02833, 0.03909603], [1516947420000, 0.02833, 0.02833, 0.02833, 0.02833, 2.19686822], [1516947480000, 0.02834999, 0.02848947, 0.02833, 0.0284894, 7.90247387], [1516947540000, 0.02833, 0.02833, 0.02820002, 0.02833, 0.93046714], [1516947600000, 0.02833, 0.0284886, 0.02833, 0.0284886, 1.42609603], [1516947660000, 0.02833, 0.02848843, 0.02820012, 0.02848843, 10.83570586], [1516947720000, 0.02848499, 0.02848499, 0.02848484, 0.02848484, 2.62808024], [1516947780000, 0.02848456, 0.02848458, 0.02848456, 0.02848458, 0.6], [1516947840000, 0.02848414, 0.02848414, 0.02848397, 0.02848397, 0.95511968], [1516947900000, 0.02848372, 0.02848372, 0.0284834, 0.02848344, 2.1099697], [1516947960000, 0.02848294, 0.02848295, 0.02848294, 0.02848295, 0.34149519], [1516948020000, 0.02848264, 0.02848266, 0.02848264, 0.02848266, 0.11727128], [1516948200000, 0.0284821, 0.02848211, 0.0282042, 0.0282042, 3.40638908], [1516948260000, 0.02820432, 0.02820432, 0.02820432, 0.02820432, 0.03], [1516948380000, 0.02820489, 0.02820489, 0.02820489, 0.02820489, 0.04389687], [1516948680000, 0.02847115, 0.02847115, 0.02847115, 0.02847115, 0.19462061], [1516948740000, 0.02820645, 0.02820645, 0.02820645, 0.02820645, 0.39302108], [1516948800000, 0.02846681, 0.02848051, 0.02846549, 0.02848051, 0.70257282], [1516948860000, 0.02820669, 0.02820669, 0.02820669, 0.02820669, 0.05629947], [1516948920000, 0.0282056, 0.0282056, 0.02820054, 0.02820054, 3.64631217], [1516948980000, 0.02843978, 0.02843978, 0.02820054, 0.02820054, 1.09127166], [1516949040000, 0.02839982, 0.02839982, 0.02839982, 0.02839982, 1.55152042], [1516949280000, 0.02835, 0.02835, 0.02820005, 0.02835, 12.04646356], [1516949400000, 0.02835, 0.02835, 0.02835, 0.02835, 2.81252602], [1516949460000, 0.02835, 0.02835, 0.02820005, 0.02820005, 3.82186948], [1516949580000, 0.02834114, 0.02834114, 0.02834114, 0.02834114, 6.30475606], [1516949640000, 0.02834114, 0.02834114, 0.02834114, 0.02834114, 0.1276777], [1516949700000, 0.02834114, 0.02834114, 0.02820003, 0.02820003, 1.48150522], [1516949760000, 0.02820003, 0.02834116, 0.02820003, 0.02834116, 0.4803509], [1516949820000, 0.02834116, 0.02835, 0.02834116, 0.02835, 1.1878663], [1516949880000, 0.02839981, 0.02839981, 0.02839981, 0.02839981, 0.57278273], [1516950000000, 0.02839982, 0.02839982, 0.02839982, 0.02839982, 0.0852781], [1516950060000, 0.02835, 0.02839981, 0.02834116, 0.02839981, 2.0825297], [1516950120000, 0.02839981, 0.02839981, 0.02834116, 0.02834116, 4.81288459], [1516950180000, 0.02820331, 0.02820331, 0.02820331, 0.02820331, 0.6], [1516950240000, 0.02839982, 0.0284523, 0.02839982, 0.0284523, 1.63030135], [1516950300000, 0.02820333, 0.02820333, 0.02820331, 0.02820331, 0.32548025], [1516950360000, 0.0284513, 0.0284513, 0.02829883, 0.02829884, 1.15795036], [1516950480000, 0.02845155, 0.02845155, 0.02845155, 0.02845155, 1.00400299], [1516950540000, 0.02820405, 0.02845127, 0.02820405, 0.02845127, 0.23608161], [1516950600000, 0.02845114, 0.02845117, 0.02821043, 0.02821043, 5.18406824], [1516950660000, 0.02820333, 0.02820333, 0.02820333, 0.02820333, 1.03032855], [1516950780000, 0.028437, 0.028437, 0.028437, 0.028437, 0.06265375], [1516950840000, 0.02843634, 0.02843634, 0.02843634, 0.02843634, 0.05002739], [1516950900000, 0.0283198, 0.02836575, 0.0283198, 0.02836575, 0.35310983], [1516950960000, 0.02820331, 0.02839597, 0.0282033, 0.02839597, 3.23111502], [1516951020000, 0.0282033, 0.0282033, 0.0282033, 0.0282033, 0.46367015], [1516951140000, 0.02834361, 0.02834361, 0.02834361, 0.02834361, 1.01094117], [1516951200000, 0.02835365, 0.02835365, 0.02835365, 0.02835365, 1.35268765], [1516951380000, 0.0282033, 0.0282033, 0.0282033, 0.0282033, 1.77201916], [1516951500000, 0.0282033, 0.0282033, 0.0282033, 0.0282033, 0.60824762], [1516951560000, 0.02837822, 0.02837822, 0.02837822, 0.02837822, 0.25], [1516951620000, 0.0282034, 0.0282034, 0.0282, 0.0282, 2.0236214], [1516951680000, 0.02837819, 0.02839073, 0.0282035, 0.0282035, 3.69838317], [1516951740000, 0.0282035, 0.0282035, 0.0282035, 0.0282035, 0.07819158], [1516951800000, 0.0282035, 0.0282035, 0.0282035, 0.0282035, 0.07819158], [1516951860000, 0.0282035, 0.0282035, 0.0282035, 0.0282035, 0.03909579], [1516951980000, 0.02820001, 0.028451, 0.0282, 0.0282, 5.57951577], [1516952040000, 0.0284508, 0.0284508, 0.0284508, 0.0284508, 0.10518147], [1516952220000, 0.02832545, 0.02832545, 0.02832545, 0.02832545, 0.07925838], [1516952280000, 0.02843962, 0.02843962, 0.0282, 0.0283254, 38.90872286], [1516952340000, 0.0282, 0.0282, 0.0282, 0.0282, 19.731338], [1516952400000, 0.0282, 0.0283254, 0.0282, 0.0282, 21.67130002], [1516952460000, 0.0282, 0.02837919, 0.0282, 0.02837919, 7.34262057], [1516952520000, 0.0283791, 0.0283791, 0.0282, 0.0282, 22.1975434], [1516952580000, 0.0282, 0.02837897, 0.0282, 0.0282, 14.41709176], [1516952640000, 0.0282, 0.02837864, 0.0282, 0.02837859, 38.33832426], [1516952700000, 0.02837822, 0.02837822, 0.02837822, 0.02837822, 0.35238316], [1516952760000, 0.0282002, 0.0282002, 0.0282, 0.0282, 2.12542832], [1516952820000, 0.02837768, 0.02837768, 0.0282, 0.02837728, 0.76731006], [1516952880000, 0.0282, 0.02837696, 0.0282, 0.0282, 2.33898571], [1516952940000, 0.02837693, 0.02837693, 0.0282, 0.0282, 1.08450464], [1516953000000, 0.02832, 0.02837673, 0.02832, 0.02837671, 0.74724462], [1516953060000, 0.0282, 0.0282, 0.0282, 0.0282, 2.30615193], [1516953120000, 0.02837649, 0.02837649, 0.02837649, 0.02837649, 0.09201234], [1516953180000, 0.0282033, 0.0282033, 0.0282033, 0.0282033, 0.41149723], [1516953300000, 0.02837644, 0.02837644, 0.02837644, 0.02837644, 1.41554054], [1516953540000, 0.02836998, 0.02836998, 0.02836998, 0.02836998, 0.53334242], [1516953600000, 0.02836995, 0.02836995, 0.02836995, 0.02836995, 0.04574249], [1516953660000, 0.02836995, 0.02836995, 0.02836995, 0.02836995, 0.08002347], [1516953720000, 0.0282033, 0.0282033, 0.0282, 0.0282, 11.293982], [1516953780000, 0.02836894, 0.02836894, 0.02836894, 0.02836894, 0.09485486], [1516953840000, 0.02820001, 0.02836993, 0.0282, 0.02836993, 3.67996931], [1516953900000, 0.02836993, 0.02836995, 0.02836993, 0.02836995, 1.14380743], [1516954020000, 0.02836995, 0.02836995, 0.02836995, 0.02836995, 0.78976491], [1516954080000, 0.02836995, 0.02836995, 0.02820009, 0.02820013, 29.62076568], [1516954140000, 0.028368, 0.028368, 0.02820107, 0.02820107, 5.66910235], [1516954200000, 0.028368, 0.02845148, 0.02820315, 0.02845148, 2.09163042], [1516954260000, 0.02845155, 0.02845155, 0.0282, 0.02828118, 25.68963879], [1516954320000, 0.0282, 0.02845142, 0.0282, 0.02845136, 9.04335616], [1516954380000, 0.02820001, 0.02845121, 0.0282, 0.02820002, 2.91300533], [1516954440000, 0.02820002, 0.02820002, 0.0282, 0.0282, 31.74602157], [1516954500000, 0.0282, 0.02844, 0.0282, 0.0282, 21.87953686], [1516954560000, 0.02828685, 0.02828685, 0.02828685, 0.02828685, 12.09170256], [1516954620000, 0.0282, 0.0282, 0.02817325, 0.02817325, 62.25078], [1516954680000, 0.02817325, 0.02817325, 0.02817325, 0.02817325, 1.89833577], [1516954740000, 0.028167, 0.02823004, 0.02815, 0.02823004, 7.73216115], [1516954800000, 0.02823004, 0.02828681, 0.02823004, 0.02823004, 5.83973299], [1516954860000, 0.02823004, 0.02828679, 0.02823004, 0.02825844, 30.29130837], [1516954920000, 0.02823004, 0.02823004, 0.02823004, 0.02823004, 3.01900507], [1516954980000, 0.02823005, 0.02840072, 0.02823005, 0.02840072, 2.85236076], [1516955040000, 0.02840072, 0.02840072, 0.02834989, 0.02840072, 2.45797284], [1516955100000, 0.0284007, 0.02840072, 0.0284007, 0.02840072, 4.15377274], [1516955160000, 0.02840072, 0.02845154, 0.02840072, 0.02845154, 20.66985455], [1516955220000, 0.02845154, 0.02845154, 0.0282406, 0.02824082, 10.27357692], [1516955280000, 0.02824075, 0.02824082, 0.02822412, 0.02822422, 9.09576339], [1516955340000, 0.02822424, 0.02822424, 0.028224, 0.02822402, 3.94837746], [1516955400000, 0.02822401, 0.0284007, 0.02822401, 0.0284007, 1.90460198], [1516955460000, 0.0284007, 0.02845155, 0.02822405, 0.02845155, 9.18637557], [1516955520000, 0.02845153, 0.02845154, 0.02822464, 0.02845154, 2.61922599], [1516955580000, 0.028234, 0.02848139, 0.028234, 0.02845155, 19.47610947], [1516955640000, 0.02848137, 0.02848137, 0.02827426, 0.02828436, 30.05563385], [1516955700000, 0.02845154, 0.02848142, 0.02829479, 0.02848142, 3.21382423], [1516955760000, 0.02847999, 0.02848134, 0.02824521, 0.02848134, 0.15168976], [1516955820000, 0.02824553, 0.02848124, 0.02824553, 0.0282457, 0.44240429], [1516955880000, 0.02824638, 0.02824638, 0.02824638, 0.02824638, 0.04931292], [1516956000000, 0.02848132, 0.02848137, 0.02848132, 0.02848137, 0.70221512], [1516956060000, 0.02830005, 0.02848137, 0.02830005, 0.02848137, 1.55670074], [1516956120000, 0.02848137, 0.02848137, 0.0283, 0.0283, 2.54325294], [1516956240000, 0.02827238, 0.02827238, 0.02815001, 0.02815001, 12.0], [1516956300000, 0.02816104, 0.02846081, 0.02816104, 0.02846081, 1.17290973], [1516956360000, 0.02817354, 0.0284644, 0.02817352, 0.02817356, 7.87017961], [1516956420000, 0.02817385, 0.02846396, 0.02817385, 0.02846396, 0.15152254], [1516956480000, 0.02817449, 0.02846367, 0.02817449, 0.02846364, 1.18224265], [1516956540000, 0.02817464, 0.02846308, 0.02817464, 0.02846264, 0.29284472], [1516956600000, 0.02817483, 0.02846248, 0.02817483, 0.02846233, 1.48319234], [1516956660000, 0.02817525, 0.02846147, 0.02817525, 0.02819707, 27.20056593], [1516956720000, 0.02818244, 0.0284, 0.02817504, 0.02819721, 35.45638708], [1516956780000, 0.02846093, 0.02846138, 0.02819892, 0.02846138, 6.13250902], [1516956840000, 0.02820274, 0.02820356, 0.02820274, 0.02820356, 0.568849], [1516956900000, 0.02846126, 0.02846313, 0.02821432, 0.02846122, 2.11986292], [1516956960000, 0.02824764, 0.02846126, 0.02824764, 0.02846126, 17.4511985], [1516957020000, 0.02846126, 0.02846126, 0.02828866, 0.02828866, 5.04806883], [1516957080000, 0.02829872, 0.02846126, 0.02829872, 0.02846126, 0.92299023], [1516957140000, 0.02846126, 0.02846126, 0.02829886, 0.02846126, 1.82290323], [1516957200000, 0.02846126, 0.02846126, 0.02829954, 0.02846126, 7.69545176], [1516957260000, 0.02846126, 0.02846126, 0.02846125, 0.02846125, 0.75622677], [1516957320000, 0.02846125, 0.02846125, 0.02846125, 0.02846125, 0.17864523], [1516957380000, 0.02846125, 0.02846125, 0.02830423, 0.02830423, 0.11209607], [1516957440000, 0.02846125, 0.02846126, 0.02830517, 0.02846126, 10.50047935], [1516957500000, 0.02846308, 0.02858309, 0.02846308, 0.02848864, 73.22529018], [1516957560000, 0.02848864, 0.02855, 0.02848864, 0.02855, 1.53824455], [1516957620000, 0.02854999, 0.02854999, 0.02848864, 0.02854999, 0.66877398], [1516957680000, 0.02854998, 0.02854999, 0.02854998, 0.02854999, 0.30019672], [1516957740000, 0.02854999, 0.02858308, 0.02854999, 0.02858308, 1.99015941], [1516957800000, 0.02858306, 0.02858306, 0.02858302, 0.02858305, 1.55098342], [1516957860000, 0.02858301, 0.02858301, 0.02858301, 0.02858301, 0.3498583], [1516957920000, 0.02848864, 0.02848864, 0.02831671, 0.02831671, 1.18474895], [1516957980000, 0.02831671, 0.02831671, 0.02821349, 0.02821349, 2.97355632], [1516958040000, 0.02845683, 0.02845683, 0.02821348, 0.02845665, 1.60542429], [1516958100000, 0.02821348, 0.02845391, 0.02821065, 0.02845391, 2.2664072], [1516958160000, 0.02845076, 0.02845079, 0.02821067, 0.02821067, 2.68219949], [1516958220000, 0.02821066, 0.02845033, 0.02821066, 0.02845033, 0.07354592], [1516958280000, 0.02821065, 0.02844428, 0.02809782, 0.02844428, 20.86169306], [1516958340000, 0.02844415, 0.02844415, 0.02844415, 0.02844415, 0.25], [1516958400000, 0.02815044, 0.02839999, 0.02815044, 0.02839999, 1.423998], [1516958460000, 0.02839991, 0.02839991, 0.02839991, 0.02839991, 10.0], [1516958520000, 0.0284, 0.0284, 0.0284, 0.0284, 0.03601686], [1516958580000, 0.0284, 0.02842469, 0.0284, 0.0284, 18.08670036], [1516958640000, 0.028153, 0.02841399, 0.02815297, 0.02841399, 9.42993478], [1516958700000, 0.02841399, 0.02842466, 0.02841399, 0.02842464, 4.98214607], [1516958760000, 0.02842464, 0.02842464, 0.02842461, 0.02842463, 3.0457797], [1516958820000, 0.0284246, 0.0284246, 0.0284246, 0.0284246, 0.20722007], [1516958940000, 0.02821914, 0.02821914, 0.02815412, 0.02815412, 0.30180317], [1516959000000, 0.02837403, 0.02837403, 0.02815412, 0.02834388, 2.66721488], [1516959060000, 0.02834388, 0.02834388, 0.02834388, 0.02834388, 0.07056196], [1516959120000, 0.02815412, 0.02815412, 0.02815412, 0.02815412, 1.83191555], [1516959180000, 0.02815412, 0.02815412, 0.02815412, 0.02815412, 1.0254477], [1516959240000, 0.02815412, 0.02815412, 0.02815, 0.02815412, 0.76773729], [1516959300000, 0.02815412, 0.02833599, 0.0280949, 0.0280949, 2.28393032], [1516959360000, 0.0283252, 0.0283252, 0.0283252, 0.0283252, 0.02320202], [1516959420000, 0.02808904, 0.02808904, 0.0280889, 0.02808904, 6.94249693], [1516959480000, 0.028089, 0.02808904, 0.0280889, 0.02808904, 2.64725593], [1516959540000, 0.02808904, 0.02827302, 0.02808904, 0.02827302, 6.3886074], [1516959600000, 0.02827216, 0.02827239, 0.02808836, 0.02808858, 49.42409729], [1516959660000, 0.02808891, 0.0282721, 0.02808891, 0.02827209, 1.45972049], [1516959720000, 0.028159, 0.028159, 0.0281, 0.0281, 5.11203715], [1516959780000, 0.02808858, 0.02827199, 0.02800406, 0.02800406, 13.45950703], [1516959840000, 0.02800408, 0.02827183, 0.02800408, 0.02827183, 0.13181032], [1516959900000, 0.0282715, 0.0282715, 0.02800403, 0.02800411, 3.49886903], [1516959960000, 0.0282713, 0.0282713, 0.0282713, 0.0282713, 0.06069696], [1516960020000, 0.02827077, 0.02827077, 0.02801411, 0.02801411, 10.55480617], [1516960080000, 0.02827042, 0.02827042, 0.02801411, 0.02801411, 45.49321344], [1516960140000, 0.02826972, 0.02826972, 0.02826954, 0.02826954, 5.55787605], [1516960200000, 0.02801411, 0.0282691, 0.02801411, 0.02826899, 4.94496311], [1516960320000, 0.02801414, 0.02826413, 0.02801414, 0.02826412, 6.50936557], [1516960380000, 0.028069, 0.028069, 0.02793454, 0.02801414, 28.16970851], [1516960440000, 0.02801414, 0.02801414, 0.02793453, 0.02801414, 2.09975383], [1516960500000, 0.02801414, 0.02801414, 0.02795, 0.02801413, 1.731146], [1516960560000, 0.02801413, 0.02801414, 0.02801412, 0.02801414, 2.56741055], [1516960620000, 0.02801414, 0.02801414, 0.02793453, 0.02801414, 19.89356514], [1516960680000, 0.02793453, 0.02801414, 0.02786989, 0.02786989, 8.02645449], [1516960740000, 0.02787001, 0.02801413, 0.02785005, 0.02785005, 2.59871902], [1516960800000, 0.02801413, 0.02805556, 0.02801413, 0.02805474, 4.58332039], [1516960860000, 0.02805474, 0.02805474, 0.02785013, 0.02785032, 6.51555274], [1516960920000, 0.02805473, 0.02805474, 0.02805473, 0.02805474, 0.48283009], [1516960980000, 0.02805473, 0.02805556, 0.02805473, 0.02805556, 2.72860329], [1516961040000, 0.02805474, 0.02805556, 0.02805473, 0.02805556, 9.99410231], [1516961100000, 0.02805556, 0.02806899, 0.02787635, 0.02806899, 24.93727882], [1516961160000, 0.02806898, 0.02806898, 0.02787695, 0.02806897, 6.81999632], [1516961220000, 0.02806897, 0.02824999, 0.02806897, 0.02824999, 8.64371346], [1516961280000, 0.028, 0.02824991, 0.02790107, 0.02791114, 3.98473644], [1516961340000, 0.02824984, 0.02824985, 0.02824984, 0.02824985, 0.04396634], [1516961400000, 0.0282495, 0.02824983, 0.0282495, 0.02824983, 1.06196192], [1516961460000, 0.02824975, 0.02824983, 0.02824974, 0.02824983, 2.38884046], [1516961520000, 0.02800898, 0.02824975, 0.02800898, 0.02824975, 0.14865642], [1516961640000, 0.02800281, 0.02800281, 0.02800281, 0.02800281, 0.04306109], [1516961700000, 0.02824892, 0.02824892, 0.02800279, 0.02824843, 3.69535852], [1516961760000, 0.02824838, 0.02824838, 0.0282299, 0.0282299, 4.12433248], [1516961820000, 0.02800033, 0.02800033, 0.02799992, 0.02800017, 6.18462105], [1516961880000, 0.0280001, 0.0280001, 0.0280001, 0.0280001, 0.29679847], [1516961940000, 0.0280001, 0.02824499, 0.0280001, 0.02824499, 3.79065521], [1516962000000, 0.02824392, 0.02824392, 0.02799999, 0.02823369, 2.68075666], [1516962060000, 0.02799999, 0.02799999, 0.02799999, 0.02799999, 6.99605842], [1516962120000, 0.02799999, 0.02799999, 0.0279, 0.02799999, 11.93206292], [1516962180000, 0.02799999, 0.02799999, 0.02799999, 0.02799999, 0.0790325], [1516962240000, 0.02799999, 0.02799999, 0.027999, 0.027999, 0.25380201], [1516962300000, 0.027999, 0.02817879, 0.02790004, 0.02817844, 4.20455884], [1516962360000, 0.02816805, 0.02816805, 0.02816805, 0.02816805, 0.11060359], [1516962420000, 0.0279, 0.02814737, 0.02787676, 0.02814737, 37.25373843], [1516962480000, 0.02814716, 0.02814716, 0.02787676, 0.02787676, 0.88837292], [1516962540000, 0.02814643, 0.02814643, 0.0279, 0.0279, 0.38878078], [1516962600000, 0.02814598, 0.02814598, 0.0281458, 0.02814584, 12.84069071], [1516962660000, 0.02814571, 0.02814571, 0.02814571, 0.02814571, 0.56476057], [1516962720000, 0.02819988, 0.02819996, 0.02800003, 0.02800003, 2.18828208], [1516962780000, 0.0282, 0.02824464, 0.02800012, 0.02800046, 6.83805232], [1516962840000, 0.02824465, 0.02824465, 0.02824465, 0.02824465, 0.06080206], [1516962900000, 0.02793175, 0.02824493, 0.02793175, 0.02824493, 1.13936862], [1516962960000, 0.02800058, 0.02825, 0.02800058, 0.02825, 6.97102111], [1516963020000, 0.02800101, 0.0282966, 0.02800101, 0.02828712, 0.31874807], [1516963080000, 0.02800229, 0.02800229, 0.02800229, 0.02800229, 0.02471123], [1516963140000, 0.02800318, 0.02800318, 0.02800318, 0.02800318, 0.32469114], [1516963200000, 0.02828708, 0.02833699, 0.02800397, 0.02833699, 15.01286703], [1516963260000, 0.02800499, 0.02833406, 0.02800499, 0.02833406, 0.10104791], [1516963320000, 0.02800566, 0.02833391, 0.02800566, 0.0280063, 0.26767589], [1516963380000, 0.02800631, 0.02800681, 0.02800631, 0.02800681, 4.04008073], [1516963440000, 0.02833317, 0.02833317, 0.0280072, 0.0280072, 7.06574663], [1516963500000, 0.02800778, 0.02833261, 0.02800778, 0.02833238, 1.68631627], [1516963560000, 0.02800861, 0.02800861, 0.02800861, 0.02800861, 0.05149683], [1516963620000, 0.02824656, 0.02824656, 0.02824656, 0.02824656, 0.0423556], [1516963680000, 0.02833084, 0.02833084, 0.02801348, 0.02801348, 0.99778847], [1516963740000, 0.02832666, 0.02832666, 0.02801483, 0.02801515, 42.41002181], [1516963800000, 0.02832392, 0.02832392, 0.02801523, 0.02801523, 0.21362688], [1516963860000, 0.02832122, 0.02832122, 0.02801579, 0.02801579, 0.05784804], [1516963920000, 0.02832118, 0.02832118, 0.02832095, 0.02832095, 0.08171572], [1516963980000, 0.02801699, 0.02801699, 0.02801699, 0.02801699, 1.82374993], [1516964040000, 0.02831992, 0.02831992, 0.02831992, 0.02831992, 0.06678012], [1516964100000, 0.02803883, 0.02831934, 0.02803883, 0.02803933, 1.52487091], [1516964160000, 0.0283188, 0.0283188, 0.02804007, 0.02831858, 9.21128684], [1516964280000, 0.0282053, 0.0282053, 0.0282053, 0.0282053, 1.4671088], [1516964340000, 0.0282053, 0.0282053, 0.0282053, 0.0282053, 0.17848129], [1516964460000, 0.02831845, 0.02831845, 0.02831845, 0.02831845, 0.93062761], [1516964520000, 0.02807864, 0.02807864, 0.02807864, 0.02807864, 0.1], [1516964640000, 0.02830321, 0.02830485, 0.02829951, 0.02829951, 0.17136032], [1516964700000, 0.02807864, 0.02829914, 0.02807864, 0.02829914, 0.41899345], [1516964940000, 0.02829874, 0.02829874, 0.02829874, 0.02829874, 0.0630407], [1516965000000, 0.028298, 0.028298, 0.02829789, 0.02829789, 1.76690555], [1516965120000, 0.0282, 0.0282, 0.02807872, 0.02807872, 0.99647494], [1516965180000, 0.02807868, 0.02807872, 0.02807868, 0.02807872, 0.5074485], [1516965240000, 0.02807868, 0.02807868, 0.02807868, 0.02807868, 0.71], [1516965300000, 0.02807868, 0.02828854, 0.02801896, 0.02828854, 2.03926833], [1516965360000, 0.02801896, 0.02801896, 0.02801896, 0.02801896, 0.03617526], [1516965480000, 0.02801905, 0.02828628, 0.02801905, 0.02801906, 9.75242337], [1516965540000, 0.02828552, 0.02828552, 0.02801903, 0.02801903, 1.03997236], [1516965600000, 0.02828457, 0.02828457, 0.02828457, 0.02828457, 0.02412274], [1516965660000, 0.02801904, 0.02828305, 0.02801904, 0.02828305, 0.2409457], [1516965720000, 0.02801926, 0.02801938, 0.02801926, 0.02801926, 56.82729105], [1516965780000, 0.02801926, 0.02828213, 0.02801926, 0.02828213, 44.97551808], [1516965840000, 0.0280193, 0.02827081, 0.0280193, 0.02827074, 0.4793476], [1516965900000, 0.02801904, 0.02801904, 0.02801904, 0.02801904, 3.62104834], [1516965960000, 0.0282498, 0.0282498, 0.02824973, 0.02824973, 0.05106391], [1516966020000, 0.02801904, 0.02801904, 0.02801904, 0.02801904, 0.2977019], [1516966080000, 0.02824838, 0.02824838, 0.02824838, 0.02824838, 0.05918788], [1516966140000, 0.02801904, 0.02801904, 0.02801904, 0.02801904, 1.32265968], [1516966200000, 0.02801904, 0.02821717, 0.02801902, 0.02821717, 0.72677558], [1516966260000, 0.02821, 0.02821, 0.02821, 0.02821, 0.1], [1516966320000, 0.02820999, 0.02821, 0.02812935, 0.02820999, 1.50780586], [1516966380000, 0.02801905, 0.02801905, 0.02801905, 0.02801905, 0.024], [1516966440000, 0.02801905, 0.02819989, 0.02801905, 0.02801905, 1.14553981], [1516966500000, 0.02801905, 0.02801905, 0.02801904, 0.02801904, 0.89634852], [1516966560000, 0.02801905, 0.02801905, 0.02801905, 0.02801905, 0.57204556], [1516966620000, 0.02801905, 0.02801905, 0.02801905, 0.02801905, 0.47563352], [1516966680000, 0.02801904, 0.02801905, 0.02801904, 0.02801905, 0.17071095], [1516966740000, 0.02801905, 0.02801905, 0.02801905, 0.02801905, 0.39334852], [1516966800000, 0.02801905, 0.02817257, 0.02801904, 0.02801905, 3.55168363], [1516966860000, 0.02801904, 0.02816981, 0.02801904, 0.02816981, 4.81512559], [1516967040000, 0.02823138, 0.02823138, 0.02801904, 0.02809689, 0.56013526], [1516967100000, 0.02809689, 0.02809689, 0.02809674, 0.02809674, 0.39525954], [1516967160000, 0.02801904, 0.02820311, 0.02801904, 0.02820311, 1.1286312], [1516967220000, 0.02801904, 0.02801904, 0.02801904, 0.02801904, 1.32069653], [1516967280000, 0.02820221, 0.02820221, 0.02801904, 0.02801904, 0.21238261], [1516967340000, 0.02807192, 0.02807192, 0.02801366, 0.02801366, 14.254202], [1516967580000, 0.02801365, 0.02801366, 0.028, 0.028, 0.70805159], [1516967640000, 0.02795, 0.02795, 0.0278, 0.02792, 11.20395337], [1516967700000, 0.02792, 0.02792, 0.02792, 0.02792, 0.22160497], [1516967760000, 0.0279, 0.02792, 0.02780218, 0.02792, 9.99173479], [1516967820000, 0.02792, 0.02792, 0.02792, 0.02792, 0.2361152], [1516967880000, 0.02792, 0.02792, 0.02792, 0.02792, 1.93910951], [1516967940000, 0.02792, 0.02799939, 0.02792, 0.02799939, 1.3129259], [1516968000000, 0.02799927, 0.02799927, 0.02799927, 0.02799927, 0.35715178], [1516968060000, 0.02799927, 0.02799927, 0.02799927, 0.02799927, 0.0363565], [1516968120000, 0.02780263, 0.02799891, 0.02780261, 0.02799891, 0.3591881], [1516968300000, 0.02790292, 0.02790292, 0.02790292, 0.02790292, 0.25954933], [1516968360000, 0.02790292, 0.02790292, 0.02790292, 0.02790292, 0.07792683], [1516968420000, 0.02790292, 0.02790292, 0.02790292, 0.02790292, 0.15300774], [1516968480000, 0.02790292, 0.02790292, 0.02790292, 0.02790292, 0.08724973], [1516968540000, 0.0279028, 0.0279028, 0.0279028, 0.0279028, 0.09241294], [1516968600000, 0.0279028, 0.02790292, 0.0279028, 0.02790292, 1.15245426], [1516968660000, 0.02790292, 0.02790292, 0.02788, 0.02788, 0.82078278], [1516968840000, 0.02788, 0.02798, 0.02788, 0.02798, 0.23619389], [1516968900000, 0.02798, 0.02798, 0.02798, 0.02798, 0.08461291], [1516968960000, 0.02798, 0.02798, 0.02798, 0.02798, 0.0657252], [1516969020000, 0.02795, 0.02795, 0.02795, 0.02795, 0.0395445], [1516969080000, 0.02795, 0.02795, 0.02795, 0.02795, 0.37962192], [1516969140000, 0.02795, 0.02799927, 0.02795, 0.02799927, 5.04348907], [1516969200000, 0.02798, 0.02799927, 0.02798, 0.02798, 0.59125], [1516969260000, 0.02798, 0.02806798, 0.02798, 0.02806798, 7.50125057], [1516969320000, 0.02806798, 0.02806799, 0.02799925, 0.02799925, 3.29127698], [1516969380000, 0.02799925, 0.02799925, 0.02798, 0.02798, 0.95684607], [1516969500000, 0.02799925, 0.02799925, 0.02798, 0.02798, 0.75715178], [1516969560000, 0.02798, 0.02799925, 0.02798, 0.02798, 3.92575241], [1516969620000, 0.02798, 0.02798, 0.02780289, 0.02780289, 11.59610846], [1516969680000, 0.02780295, 0.02799922, 0.02780295, 0.027803, 0.54774674], [1516969740000, 0.02799922, 0.02799922, 0.02780303, 0.02799922, 1.82650693], [1516969800000, 0.02799922, 0.02799922, 0.02799922, 0.02799922, 1.98607384], [1516969860000, 0.02799922, 0.02799922, 0.02799922, 0.02799922, 1.16613666], [1516969920000, 0.02799922, 0.02799922, 0.02799922, 0.02799922, 0.27489455], [1516969980000, 0.02780682, 0.02799922, 0.02780682, 0.02799921, 3.37912606], [1516970040000, 0.02799921, 0.02799921, 0.02799921, 0.02799921, 0.08703433], [1516970100000, 0.02799925, 0.02799925, 0.0279992, 0.0279992, 4.06590375], [1516970160000, 0.0279992, 0.0279992, 0.0279992, 0.0279992, 3.34556063], [1516970220000, 0.02799919, 0.02803725, 0.02780384, 0.0279992, 5.80040273], [1516970280000, 0.0279992, 0.0279992, 0.0279992, 0.0279992, 0.02632397], [1516970340000, 0.02780448, 0.0279992, 0.02780448, 0.0279992, 0.38290931], [1516970400000, 0.02803724, 0.02810979, 0.02803724, 0.02810968, 35.92760436], [1516970460000, 0.02810965, 0.02810968, 0.02810945, 0.02810945, 71.12461407], [1516970520000, 0.02813979, 0.02813979, 0.02813979, 0.02813979, 5.517503], [1516970580000, 0.02810926, 0.02810926, 0.02784695, 0.02784695, 10.34605841], [1516970640000, 0.02810881, 0.02810881, 0.02810881, 0.02810881, 0.04061726], [1516970700000, 0.02810812, 0.02810812, 0.02784644, 0.0280999, 3.07381356], [1516970760000, 0.02809981, 0.02809981, 0.02784642, 0.02784642, 12.41942451], [1516970820000, 0.02798708, 0.02798708, 0.02798708, 0.02798708, 0.07125972], [1516970940000, 0.02798708, 0.02798708, 0.02798708, 0.02798708, 0.22187559], [1516971000000, 0.02798707, 0.02798708, 0.02798707, 0.02798708, 2.9377687], [1516971060000, 0.02798708, 0.02809794, 0.02798708, 0.02809773, 5.75365437], [1516971120000, 0.0280977, 0.0280977, 0.02784643, 0.02809731, 2.73585198], [1516971180000, 0.02784643, 0.02784643, 0.02780221, 0.02780221, 100.06118352], [1516971240000, 0.02803724, 0.02803724, 0.02803724, 0.02803724, 2.5], [1516971300000, 0.02803725, 0.02809896, 0.02803725, 0.02809878, 4.62963942], [1516971360000, 0.02809867, 0.02809867, 0.0280985, 0.0280985, 1.06766757], [1516971420000, 0.02809802, 0.02809802, 0.02809802, 0.02809802, 2.50850299], [1516971540000, 0.02784723, 0.02784723, 0.02784714, 0.02784714, 40.5], [1516971600000, 0.02809683, 0.02809683, 0.028, 0.028, 0.75112024], [1516971660000, 0.028, 0.028, 0.028, 0.028, 0.53571428], [1516971720000, 0.028, 0.028, 0.02784744, 0.02784744, 1.14609999], [1516971840000, 0.02805978, 0.02805978, 0.02805975, 0.02805977, 2.28989976], [1516971900000, 0.02805982, 0.02809716, 0.02805982, 0.02809697, 1.78096238], [1516971960000, 0.02809652, 0.02809652, 0.02809652, 0.02809652, 0.6028152], [1516972020000, 0.02784892, 0.02784892, 0.02784892, 0.02784892, 3.0], [1516972200000, 0.02785012, 0.02806087, 0.02785012, 0.02806087, 0.70762127], [1516972260000, 0.02806084, 0.028061, 0.02806084, 0.02806084, 6.36756717], [1516972320000, 0.02806083, 0.028061, 0.02785586, 0.02785586, 3.42664572], [1516972380000, 0.02785587, 0.028, 0.02785587, 0.028, 7.71428571], [1516972440000, 0.028, 0.028, 0.028, 0.028, 0.26874881], [1516972500000, 0.028, 0.028, 0.028, 0.028, 1.03714285], [1516972560000, 0.02799998, 0.02799998, 0.02799998, 0.02799998, 0.51428608], [1516972620000, 0.02799998, 0.028, 0.02799998, 0.028, 14.41860062], [1516972680000, 0.028, 0.028, 0.028, 0.028, 3.15556694], [1516972740000, 0.028, 0.028, 0.028, 0.028, 0.5698449], [1516972800000, 0.028, 0.028, 0.028, 0.028, 19.0535656], [1516972860000, 0.028, 0.028, 0.028, 0.028, 3.53671212], [1516972920000, 0.028, 0.028, 0.028, 0.028, 1.44764857], [1516972980000, 0.028, 0.028, 0.028, 0.028, 0.0393753], [1516973040000, 0.028, 0.028, 0.02799998, 0.028, 43.101654], [1516973100000, 0.028, 0.028, 0.028, 0.028, 0.35714285], [1516973160000, 0.028, 0.02809755, 0.028, 0.02809755, 19.26212849], [1516973220000, 0.02812471, 0.02814972, 0.02812471, 0.02814972, 6.06030027], [1516973280000, 0.0281497, 0.0281497, 0.02800094, 0.02800094, 3.15524332], [1516973340000, 0.02800094, 0.02814968, 0.02800094, 0.02800094, 0.82593798], [1516973400000, 0.02800094, 0.02813999, 0.02799998, 0.02813999, 3.79799729], [1516973460000, 0.02799998, 0.02799998, 0.02799998, 0.02799998, 1.62497237], [1516973520000, 0.02799998, 0.02799998, 0.02799998, 0.02799998, 1.63240666], [1516973580000, 0.02799998, 0.02799998, 0.02799998, 0.02799998, 0.03937503], [1516973700000, 0.02799998, 0.02813999, 0.02799998, 0.02813999, 3.38948865], [1516973760000, 0.02806998, 0.02806998, 0.028, 0.028, 0.16873595], [1516973820000, 0.028, 0.02813993, 0.028, 0.02813992, 1.98858621], [1516973880000, 0.02813989, 0.02814966, 0.02813989, 0.02814966, 50.1474862], [1516973940000, 0.028, 0.028, 0.028, 0.028, 4.38056597], [1516974000000, 0.028, 0.028, 0.028, 0.028, 3.61943403], [1516974060000, 0.02814972, 0.02814972, 0.02799998, 0.02814972, 6.01912257], [1516974120000, 0.0281497, 0.0281497, 0.02799998, 0.02799998, 1.31199949], [1516974180000, 0.02799998, 0.02799998, 0.02799998, 0.02799998, 0.41347621], [1516974240000, 0.0281, 0.0281, 0.02799998, 0.02799998, 0.31159702], [1516974300000, 0.02799998, 0.02799998, 0.02790006, 0.02790006, 5.57591751], [1516974360000, 0.02799998, 0.02799998, 0.02799998, 0.02799998, 0.11854842], [1516974420000, 0.02799994, 0.02799994, 0.02799994, 0.02799994, 0.03951596], [1516974480000, 0.02799994, 0.02799994, 0.02790023, 0.02795, 4.13358853], [1516974540000, 0.02795, 0.02795008, 0.02795, 0.02795008, 0.60584828], [1516974600000, 0.02795008, 0.02795008, 0.02795, 0.02795, 0.96316937], [1516974660000, 0.02795, 0.02795008, 0.02795, 0.02795008, 4.07889124], [1516974720000, 0.02795008, 0.02795008, 0.02795008, 0.02795008, 2.94749593], [1516974780000, 0.02795, 0.02799998, 0.02795, 0.02799998, 0.7068], [1516974900000, 0.02799998, 0.0281, 0.02799998, 0.0281, 5.01600299], [1516974960000, 0.02809997, 0.02809997, 0.02809997, 0.02809997, 0.05678628], [1516975020000, 0.02809997, 0.0281, 0.02790082, 0.0281, 35.78918395], [1516975080000, 0.0281, 0.0281, 0.02790086, 0.02790086, 5.67123499], [1516975140000, 0.0281, 0.0281, 0.02790084, 0.02809997, 5.82671323], [1516975200000, 0.0281, 0.0281, 0.0281, 0.0281, 1.0], [1516975260000, 0.02791103, 0.02809997, 0.02790024, 0.02790024, 16.46900122], [1516975380000, 0.02809997, 0.02809997, 0.02790032, 0.02790032, 0.54824691], [1516975440000, 0.02809934, 0.02809934, 0.02809931, 0.02809931, 3.55260423], [1516975500000, 0.02809932, 0.02809932, 0.02790471, 0.02790471, 2.0], [1516975560000, 0.02809932, 0.02809932, 0.02809932, 0.02809932, 0.02059704], [1516975680000, 0.02809932, 0.02809999, 0.02809932, 0.02809999, 0.40908302], [1516975740000, 0.02790062, 0.02790062, 0.02790062, 0.02790062, 0.26], [1516975800000, 0.02790111, 0.02790111, 0.02790111, 0.02790111, 0.26], [1516975920000, 0.02790069, 0.02790069, 0.02790064, 0.02790064, 2.15702534], [1516976040000, 0.02790066, 0.02809995, 0.02790062, 0.02809991, 10.36543345], [1516976160000, 0.02809995, 0.02809996, 0.02790073, 0.02790073, 3.03384052], [1516976220000, 0.02790073, 0.02809984, 0.02790073, 0.02792072, 1.43990758], [1516976280000, 0.02809982, 0.02809982, 0.02809982, 0.02809982, 0.04186848], [1516976400000, 0.02809483, 0.02809483, 0.02809483, 0.02809483, 0.44615899], [1516976520000, 0.02809482, 0.02809482, 0.02800112, 0.02809482, 1.34050716], [1516976580000, 0.02809482, 0.02809482, 0.02809482, 0.02809482, 0.41836433], [1516976640000, 0.02809479, 0.02809479, 0.02809479, 0.02809479, 0.08304126], [1516976700000, 0.02809473, 0.02809488, 0.028, 0.028, 23.83560444], [1516976760000, 0.028, 0.02809481, 0.028, 0.02809481, 0.29457136], [1516976820000, 0.0279308, 0.0279308, 0.0279308, 0.0279308, 0.31937815], [1516976880000, 0.0280948, 0.02809488, 0.0280948, 0.02809488, 4.23880181], [1516976940000, 0.02809488, 0.02809488, 0.02809488, 0.02809488, 0.30636997], [1516977000000, 0.0279414, 0.02809488, 0.0279414, 0.02809488, 1.07545859], [1516977060000, 0.02809488, 0.02809488, 0.02794144, 0.02809488, 13.11671333], [1516977120000, 0.0279414, 0.0279414, 0.02794092, 0.02794092, 1.26], [1516977180000, 0.02794153, 0.02808976, 0.02794153, 0.02794153, 1.47345048], [1516977300000, 0.02798244, 0.02809474, 0.02794155, 0.02809474, 1.37831726], [1516977420000, 0.02808973, 0.02808973, 0.02808973, 0.02808973, 0.01886811], [1516977480000, 0.02808973, 0.0281, 0.02808973, 0.0281, 80.17656699], [1516977540000, 0.0280208, 0.0280208, 0.0280208, 0.0280208, 0.07891476], [1516977600000, 0.0280208, 0.0280208, 0.0280208, 0.0280208, 0.16260946], [1516977660000, 0.0280208, 0.0280208, 0.02794158, 0.02794158, 1.36659448], [1516977720000, 0.02794158, 0.0280208, 0.02794158, 0.0280208, 1.41260776], [1516977780000, 0.0280208, 0.0280208, 0.0280208, 0.0280208, 0.83413098], [1516977840000, 0.0280208, 0.0280208, 0.0280208, 0.0280208, 0.45117081], [1516977900000, 0.0280208, 0.0280208, 0.0280208, 0.0280208, 4.07891476], [1516977960000, 0.0280208, 0.0281, 0.0280208, 0.0281, 1.11851631], [1516978020000, 0.02794158, 0.02794158, 0.02792972, 0.02792972, 10.71857977], [1516978080000, 0.028, 0.028, 0.028, 0.028, 0.65062981], [1516978140000, 0.028, 0.028, 0.028, 0.028, 1.74937019], [1516978200000, 0.0281, 0.0281, 0.0281, 0.0281, 2.74993569], [1516978260000, 0.0281, 0.0281, 0.0281, 0.0281, 0.07876505], [1516978320000, 0.0281, 0.0281, 0.0281, 0.0281, 0.03947419], [1516978380000, 0.0281, 0.0281, 0.0281, 0.0281, 0.03943164], [1516978500000, 0.0281, 0.0281, 0.0281, 0.0281, 0.03940362], [1516978560000, 0.02799982, 0.0281, 0.02799982, 0.0281, 3.73234414], [1516978620000, 0.0281, 0.0281, 0.0281, 0.0281, 0.16941455], [1516978680000, 0.0281, 0.0281, 0.0281, 0.0281, 1.20361025], [1516978800000, 0.02797993, 0.0281, 0.02797993, 0.0281, 5.32042402], [1516978860000, 0.0281, 0.0281, 0.0281, 0.0281, 0.14341827], [1516978920000, 0.0279798, 0.0281, 0.0279798, 0.0279798, 70.73250738], [1516978980000, 0.0280502, 0.0281, 0.02797986, 0.0281, 11.06079146], [1516979040000, 0.0281, 0.0281, 0.0281, 0.0281, 0.07880654], [1516979100000, 0.0281, 0.0281, 0.02798894, 0.02798894, 0.56465349], [1516979160000, 0.02808, 0.0281, 0.02808, 0.0281, 8.65043442], [1516979220000, 0.0281, 0.0281, 0.0281, 0.0281, 0.6087498], [1516979280000, 0.02801502, 0.0281, 0.02800045, 0.0281, 2.30161789], [1516979340000, 0.0281, 0.0281, 0.0281, 0.0281, 2.90684861], [1516979400000, 0.0281, 0.0281, 0.0279798, 0.0279798, 19.10511432], [1516979460000, 0.0279798, 0.0279798, 0.02788998, 0.0279007, 34.05573568], [1516979520000, 0.02797978, 0.02797978, 0.0279007, 0.0279007, 4.72890814], [1516979580000, 0.0279797, 0.0279797, 0.02786, 0.02786002, 2.50777119], [1516979640000, 0.02786002, 0.02786005, 0.02786002, 0.02786005, 0.3527777], [1516979700000, 0.02786006, 0.02797969, 0.02786006, 0.02786006, 1.26186415], [1516979760000, 0.02786006, 0.02786006, 0.02777, 0.02780222, 21.81081002], [1516979820000, 0.02780224, 0.02803704, 0.02780224, 0.02803704, 1.0743947], [1516979880000, 0.02780227, 0.02803698, 0.02780227, 0.0278023, 6.05970281], [1516979940000, 0.02803681, 0.02803681, 0.02781226, 0.02781226, 9.84644166], [1516980000000, 0.02782226, 0.02782226, 0.02782226, 0.02782226, 3.68457463], [1516980060000, 0.0278223, 0.0278223, 0.0278223, 0.0278223, 0.0494726], [1516980120000, 0.02790214, 0.02804689, 0.02782226, 0.02784642, 74.16911259], [1516980180000, 0.02804681, 0.02804681, 0.02782226, 0.02782226, 23.65920683], [1516980240000, 0.02795623, 0.02803725, 0.02795623, 0.02795623, 0.58281474], [1516980300000, 0.02795623, 0.0281, 0.02782226, 0.02784642, 31.60034243], [1516980360000, 0.02803725, 0.02804236, 0.02783229, 0.02783229, 3.48666015], [1516980480000, 0.02788279, 0.0281, 0.02788279, 0.0281, 3.29040038], [1516980540000, 0.0281, 0.0281, 0.0281, 0.0281, 0.32365128], [1516980600000, 0.0281, 0.0281, 0.0281, 0.0281, 3.30308716], [1516980660000, 0.0281, 0.0281, 0.0281, 0.0281, 2.93233945], [1516980720000, 0.02793928, 0.02793928, 0.02793928, 0.02793928, 0.20029328], [1516980780000, 0.02809989, 0.02809989, 0.02809989, 0.02809989, 0.52999654], [1516980840000, 0.02809977, 0.02809977, 0.02809977, 0.02809977, 1.18], [1516980960000, 0.02809985, 0.0281, 0.02809985, 0.02809999, 36.28765597], [1516981020000, 0.02809999, 0.02809999, 0.02787808, 0.02803649, 8.35350478], [1516981080000, 0.02803649, 0.0281, 0.02803649, 0.0281, 3.15295695], [1516981140000, 0.0281, 0.0281, 0.02796822, 0.0281, 1.47580833], [1516981200000, 0.0281, 0.0281, 0.0281, 0.0281, 12.2992596], [1516981260000, 0.0281, 0.0281, 0.0281, 0.0281, 0.2043821], [1516981320000, 0.0281, 0.0281, 0.0281, 0.0281, 7.45429188], [1516981440000, 0.028099, 0.0281, 0.028099, 0.0281, 1.00864617], [1516981500000, 0.028049, 0.0281, 0.02795092, 0.0281, 1.82501911], [1516981620000, 0.0281, 0.0281, 0.0281, 0.0281, 0.22866664], [1516981680000, 0.0280438, 0.0280438, 0.0280438, 0.0280438, 1.17167556], [1516981740000, 0.0280438, 0.02822707, 0.0280438, 0.0281, 20.15935914], [1516981800000, 0.0280438, 0.0280438, 0.02794032, 0.0280438, 2.19590798], [1516981860000, 0.0281, 0.0281, 0.0281, 0.0281, 0.60405214], [1516981980000, 0.02795089, 0.02795112, 0.02792008, 0.02792008, 3.5], [1516982040000, 0.0281, 0.0281, 0.0281, 0.0281, 0.3723729], [1516982100000, 0.0279203, 0.0281, 0.0279203, 0.0281, 0.35587188], [1516982160000, 0.02792033, 0.02792033, 0.02790012, 0.02790013, 4.86242929], [1516982220000, 0.02790013, 0.02809997, 0.02790012, 0.02790012, 3.57618467], [1516982280000, 0.02790012, 0.02790012, 0.02790012, 0.02790012, 0.35875469], [1516982340000, 0.02790025, 0.02790025, 0.02790025, 0.02790025, 4.04150257], [1516982400000, 0.0279003, 0.02790058, 0.0279003, 0.02790058, 6.95824662], [1516982460000, 0.02790065, 0.02814999, 0.0278, 0.02780001, 100.74143173], [1516982520000, 0.02780001, 0.02810245, 0.02771, 0.02783963, 35.46257269], [1516982580000, 0.02801919, 0.02801922, 0.0279, 0.0279, 11.89346057], [1516982640000, 0.028019, 0.02802944, 0.0277, 0.02772033, 90.87349288], [1516982700000, 0.02772046, 0.02802944, 0.02772046, 0.02796412, 16.50658147], [1516982760000, 0.0279, 0.02796409, 0.02779146, 0.02796409, 3.84583391], [1516982820000, 0.0279641, 0.02796411, 0.02772403, 0.02796408, 4.30645337], [1516982880000, 0.02796408, 0.02796412, 0.02796408, 0.02796411, 3.69850095], [1516982940000, 0.02796412, 0.02802944, 0.02775512, 0.02775537, 71.14103007], [1516983000000, 0.02775543, 0.02802944, 0.02775543, 0.02802939, 8.56243107], [1516983060000, 0.0280293, 0.0280293, 0.02802915, 0.02802916, 2.82219217], [1516983120000, 0.028, 0.02802918, 0.0277555, 0.02802905, 4.86325004], [1516983180000, 0.02802887, 0.02802887, 0.02802887, 0.02802887, 0.04773483], [1516983240000, 0.0277564, 0.02775654, 0.0277564, 0.02775654, 0.52339588], [1516983300000, 0.02775659, 0.02802872, 0.02775658, 0.02802867, 3.37191207], [1516983360000, 0.02802862, 0.02802862, 0.02776107, 0.02776107, 0.43228423], [1516983420000, 0.02802864, 0.02802867, 0.02802863, 0.02802867, 2.83776147], [1516983480000, 0.02802867, 0.02802906, 0.02772055, 0.027761, 65.08953964], [1516983540000, 0.027761, 0.02802867, 0.02776099, 0.0277612, 14.10515722], [1516983600000, 0.02802867, 0.02802867, 0.02802861, 0.02802867, 2.96540153], [1516983660000, 0.02802864, 0.02802864, 0.02802864, 0.02802864, 0.98517157], [1516983720000, 0.02792614, 0.02802863, 0.02789367, 0.02789367, 7.4341424], [1516983780000, 0.02792538, 0.02802864, 0.02792538, 0.02792538, 2.45576097], [1516983840000, 0.02792538, 0.02792538, 0.02792538, 0.02792538, 1.2966659], [1516983900000, 0.02792538, 0.02792538, 0.02792538, 0.02792538, 1.98340972], [1516983960000, 0.02792538, 0.02792538, 0.02792538, 0.02792538, 0.07905022], [1516984020000, 0.02792538, 0.02792538, 0.02792538, 0.02792538, 0.07905022], [1516984080000, 0.0278937, 0.02802906, 0.02789369, 0.02789369, 13.24381602], [1516984140000, 0.02789369, 0.02802904, 0.02789369, 0.02802904, 0.56963705], [1516984200000, 0.02802905, 0.02802906, 0.02802905, 0.02802906, 1.7838603], [1516984260000, 0.02802906, 0.02802906, 0.02802905, 0.02802905, 1.7838603], [1516984320000, 0.02802905, 0.02802905, 0.02802905, 0.02802905, 0.43075723], [1516984380000, 0.02802905, 0.02802905, 0.02802905, 0.02802905, 0.94975676], [1516984440000, 0.028, 0.02802905, 0.028, 0.02802905, 6.64334825], [1516984500000, 0.02802905, 0.02802905, 0.02802905, 0.02802905, 1.07031618], [1516984560000, 0.028, 0.028, 0.0278937, 0.0278937, 26.26873478], [1516984680000, 0.02802905, 0.02802905, 0.0278937, 0.0278937, 0.14204001], [1516984740000, 0.02802906, 0.02802906, 0.02802906, 0.02802906, 1.0], [1516984800000, 0.02802905, 0.02802905, 0.02802905, 0.02802905, 0.71354412], [1516984920000, 0.02802905, 0.02802907, 0.0278509, 0.02802907, 15.02479501], [1516984980000, 0.02802906, 0.02802906, 0.02802906, 0.02802906, 0.14983876], [1516985040000, 0.02802906, 0.02802906, 0.02792359, 0.02802906, 0.19469033], [1516985100000, 0.02805, 0.02805, 0.02805, 0.02805, 0.35650623], [1516985160000, 0.02805, 0.02805, 0.0280498, 0.02805, 3.71052797], [1516985220000, 0.02804999, 0.02804999, 0.0280498, 0.02804999, 1.45129382], [1516985280000, 0.02804999, 0.02804999, 0.0280498, 0.02804999, 2.79179902], [1516985340000, 0.02804999, 0.02805, 0.02804999, 0.02805, 0.22132702], [1516985400000, 0.02805, 0.02805, 0.02802907, 0.02802907, 17.87145487], [1516985460000, 0.02805, 0.02805, 0.02791097, 0.02805, 8.92641491], [1516985520000, 0.02805, 0.02805, 0.02792182, 0.02792182, 6.79251214], [1516985580000, 0.02805, 0.02805, 0.02805, 0.02805, 0.03797769], [1516985640000, 0.02805, 0.02805, 0.0279421, 0.02794211, 2.23021343], [1516985700000, 0.02805, 0.02805, 0.02805, 0.02805, 0.43537722], [1516985760000, 0.02805, 0.02805, 0.02798216, 0.02798216, 0.21809981], [1516985820000, 0.02798216, 0.02805, 0.02796215, 0.02805, 7.63584711], [1516985880000, 0.02796219, 0.02808, 0.02796219, 0.02808, 2.08181306], [1516985940000, 0.02808, 0.02808, 0.02808, 0.02808, 0.29630996], [1516986000000, 0.02797217, 0.02797217, 0.02796219, 0.02796219, 16.71234701], [1516986060000, 0.02807, 0.02823228, 0.02796219, 0.02823228, 39.69279459], [1516986120000, 0.02815999, 0.02823226, 0.02815989, 0.0281599, 37.02553494], [1516986300000, 0.02815, 0.02815, 0.02815, 0.02815, 2.95670427], [1516986360000, 0.02815, 0.02815, 0.02815, 0.02815, 0.08880994], [1516986420000, 0.02797223, 0.02797223, 0.02797223, 0.02797223, 3.24171902], [1516986480000, 0.02797222, 0.02797222, 0.02796223, 0.02796223, 3.20315754], [1516986540000, 0.02796224, 0.02796224, 0.02796224, 0.02796224, 0.1809893], [1516986660000, 0.02814984, 0.02814984, 0.02814979, 0.02814979, 0.08455691], [1516986720000, 0.02797222, 0.02797222, 0.02796219, 0.02796219, 65.46486667], [1516986780000, 0.02797221, 0.02797221, 0.02797221, 0.02797221, 1.41168514], [1516986840000, 0.02814838, 0.02814838, 0.02814838, 0.02814838, 0.21262325], [1516986900000, 0.02814812, 0.02814812, 0.02814792, 0.02814792, 16.29690604], [1516986960000, 0.02796252, 0.02796252, 0.02796252, 0.02796252, 0.54481722], [1516987020000, 0.02796252, 0.02796252, 0.02796252, 0.02796252, 0.07885687], [1516987080000, 0.027962, 0.02796252, 0.027962, 0.02796252, 0.82214162], [1516987140000, 0.02796252, 0.02796252, 0.02796252, 0.02796252, 0.34755951], [1516987260000, 0.02796252, 0.02796252, 0.02796252, 0.02796252, 0.01788108], [1516987320000, 0.027962, 0.02796252, 0.027962, 0.02796252, 2.0410754], [1516987380000, 0.027962, 0.027962, 0.027962, 0.027962, 5.84210257], [1516987440000, 0.027962, 0.027962, 0.027962, 0.027962, 0.12485812], [1516987500000, 0.02796252, 0.02796252, 0.02796252, 0.02796252, 5.71524362], [1516987560000, 0.02796252, 0.02812679, 0.02796252, 0.02812679, 15.72503621], [1516987740000, 0.027962, 0.027962, 0.027962, 0.027962, 11.14540173], [1516987800000, 0.027962, 0.02812654, 0.027962, 0.02812654, 0.47686593], [1516987860000, 0.027962, 0.027962, 0.027962, 0.027962, 0.30550612], [1516987920000, 0.027962, 0.027962, 0.027962, 0.027962, 0.51318602], [1516987980000, 0.02796201, 0.02796201, 0.027962, 0.027962, 0.77143628], [1516988040000, 0.02796201, 0.02812624, 0.027962, 0.02812624, 0.82070301], [1516988100000, 0.02812606, 0.02812606, 0.02812445, 0.02812445, 0.80762657], [1516988160000, 0.02811923, 0.02812422, 0.02811923, 0.02812422, 178.61749145], [1516988280000, 0.02812419, 0.02812419, 0.02812419, 0.02812419, 0.04803093], [1516988400000, 0.02812417, 0.02812417, 0.02796201, 0.02796201, 3.23774414], [1516988640000, 0.02812417, 0.02812417, 0.02796469, 0.02796469, 0.53775195], [1516988700000, 0.02812417, 0.0281242, 0.02812417, 0.02812419, 3.6665819], [1516988760000, 0.02796469, 0.02796469, 0.02796469, 0.02796469, 0.05], [1516988820000, 0.02796469, 0.02796469, 0.02796469, 0.02796469, 0.05], [1516988880000, 0.02796469, 0.02796469, 0.02796469, 0.02796469, 1.5], [1516988940000, 0.02796469, 0.028, 0.02796469, 0.028, 1.18574407], [1516989000000, 0.028, 0.0281242, 0.028, 0.0281242, 1.30234407], [1516989060000, 0.0281242, 0.02814435, 0.0281242, 0.02814435, 0.78166164], [1516989180000, 0.02796472, 0.02796472, 0.02796472, 0.02796472, 1.15713324], [1516989240000, 0.02796472, 0.02796472, 0.02796472, 0.02796472, 2.62478047], [1516989300000, 0.02796472, 0.02796472, 0.02796472, 0.02796472, 1.7651525], [1516989420000, 0.02796472, 0.02796472, 0.02796472, 0.02796472, 0.02166807], [1516989480000, 0.02796472, 0.02796472, 0.02796472, 0.02796472, 0.29706271], [1516989540000, 0.02796472, 0.02796472, 0.02796472, 0.02796472, 0.52317654], [1516989600000, 0.02796472, 0.02796472, 0.02796472, 0.02796472, 0.07884996], [1516989660000, 0.02796472, 0.02796472, 0.02796472, 0.02796472, 0.07884996], [1516989720000, 0.02796472, 0.02813911, 0.02796472, 0.02813911, 0.12602422], [1516989900000, 0.02815, 0.02815, 0.02796471, 0.02796471, 0.42308091], [1516989960000, 0.02813911, 0.02813911, 0.02813911, 0.02813911, 0.04804272], [1516990080000, 0.02813911, 0.02816, 0.02813911, 0.02816, 23.97550907], [1516990200000, 0.02816, 0.02819972, 0.02814575, 0.02819972, 0.67306274], [1516990260000, 0.02819972, 0.02819972, 0.02819972, 0.02819972, 0.05150497], [1516990320000, 0.02819972, 0.0282, 0.02819972, 0.0282, 0.04176451], [1516990560000, 0.0282, 0.0282, 0.0282, 0.0282, 5.0], [1516990740000, 0.02819992, 0.02819992, 0.02819992, 0.02819992, 1.49208712], [1516990800000, 0.02809468, 0.02809468, 0.02809468, 0.02809468, 0.03334237], [1516990860000, 0.02809468, 0.02809468, 0.02809468, 0.02809468, 0.26735441], [1516991040000, 0.02809468, 0.02809468, 0.02809468, 0.02809468, 1.93372235], [1516991100000, 0.02809468, 0.02821987, 0.02809468, 0.02821987, 47.27048127], [1516991160000, 0.02821987, 0.02823227, 0.02821977, 0.02821977, 156.69395382], [1516991280000, 0.02821959, 0.02821959, 0.02821959, 0.02821959, 3.73846127], [1516991340000, 0.02821959, 0.02821959, 0.02821959, 0.02821959, 0.08901148], [1516991400000, 0.02821959, 0.02821959, 0.02809468, 0.02809468, 0.64343928], [1516991580000, 0.02809468, 0.02811959, 0.02809468, 0.02811959, 15.15809247], [1516991640000, 0.02811959, 0.02811959, 0.02811959, 0.02811959, 0.17759042], [1516991700000, 0.02811959, 0.02811959, 0.02809468, 0.02811959, 1.04534603], [1516991760000, 0.02811959, 0.02811959, 0.02811959, 0.02811959, 3.61595793], [1516991820000, 0.02821904, 0.02821904, 0.0281194, 0.0281194, 1.49468416], [1516991880000, 0.0281194, 0.0281194, 0.02809468, 0.0281194, 3.61362751], [1516992000000, 0.0281194, 0.0282184, 0.0281194, 0.0282184, 7.90873335], [1516992060000, 0.02821813, 0.02821813, 0.02821813, 0.02821813, 0.05609018], [1516992120000, 0.02821813, 0.02821813, 0.02821768, 0.02821768, 0.22740746], [1516992180000, 0.02821741, 0.02821741, 0.02821723, 0.02821723, 0.05598494], [1516992240000, 0.02821704, 0.02821704, 0.02821704, 0.02821704, 3.0], [1516992360000, 0.02818, 0.02818, 0.02818, 0.02818, 0.07153854], [1516992420000, 0.02821597, 0.02821597, 0.02818001, 0.02818001, 0.67293234], [1516992480000, 0.02818, 0.02818001, 0.02818, 0.02818001, 4.03242826], [1516992540000, 0.0281194, 0.0281194, 0.0281194, 0.0281194, 2.4383302], [1516992720000, 0.02818001, 0.02818001, 0.02818001, 0.02818001, 1.44198414], [1516992900000, 0.02818001, 0.0281802, 0.02818001, 0.0281802, 3.53090326], [1516992960000, 0.02821641, 0.02823181, 0.02821641, 0.02823181, 0.2182369], [1516993020000, 0.0281802, 0.0281802, 0.0281194, 0.0281194, 9.28602222], [1516993080000, 0.0281194, 0.0281194, 0.0281194, 0.0281194, 0.65887488], [1516993140000, 0.0281194, 0.02818019, 0.0281194, 0.02818019, 0.37994482], [1516993200000, 0.02818019, 0.02823027, 0.02818019, 0.02823027, 50.94708172], [1516993320000, 0.0281802, 0.0281802, 0.0281802, 0.0281802, 0.35714068], [1516993380000, 0.0281194, 0.02822991, 0.0281194, 0.0281194, 2.52382128], [1516993440000, 0.0281194, 0.0281194, 0.02809468, 0.02809468, 0.86], [1516993500000, 0.02809468, 0.02809468, 0.02809468, 0.02809468, 0.72197524], [1516993560000, 0.02809468, 0.02809468, 0.02796478, 0.02809468, 3.60214323], [1516993620000, 0.02809468, 0.02809468, 0.02796529, 0.02809468, 0.52840494], [1516993680000, 0.02809468, 0.02809468, 0.02809468, 0.02809468, 0.1835729], [1516993740000, 0.02796584, 0.02809468, 0.02796584, 0.02809468, 1.58343732], [1516993800000, 0.02809468, 0.02823019, 0.02809468, 0.02823019, 0.40747269], [1516993860000, 0.02823019, 0.02823019, 0.02823019, 0.02823019, 0.07826727], [1516993920000, 0.02823019, 0.02823019, 0.02823018, 0.02823019, 0.20127552], [1516993980000, 0.02823018, 0.02823019, 0.02823018, 0.02823019, 0.55414635], [1516994040000, 0.02823011, 0.02823011, 0.02823011, 0.02823011, 0.04131688], [1516994100000, 0.02823011, 0.02823011, 0.02809468, 0.02809468, 1.1387617], [1516994160000, 0.02823011, 0.02823019, 0.02823011, 0.02823011, 3.42955595], [1516994220000, 0.02823011, 0.02823011, 0.0282301, 0.0282301, 0.49580597], [1516994280000, 0.0282301, 0.02823019, 0.0282301, 0.02823019, 20.06480669], [1516994340000, 0.0282301, 0.02823228, 0.02809468, 0.02823228, 143.17802734], [1516994400000, 0.02823228, 0.02823228, 0.02809468, 0.02823228, 0.16706343], [1516994460000, 0.02823228, 0.02823228, 0.02809469, 0.02823228, 0.18314516], [1516994580000, 0.02809468, 0.02809468, 0.02809468, 0.02809468, 2.02420191], [1516994640000, 0.02809468, 0.02809468, 0.02809468, 0.02809468, 5.74948616], [1516994700000, 0.02809468, 0.02809468, 0.02809468, 0.02809468, 1.05707001], [1516994760000, 0.02807784, 0.02809468, 0.02807784, 0.02809468, 0.81988295], [1516994820000, 0.028066, 0.02823228, 0.028066, 0.02823228, 2.21745347], [1516994940000, 0.02809468, 0.02809468, 0.02809468, 0.02809468, 0.02520425], [1516995000000, 0.02823227, 0.02823227, 0.02823227, 0.02823227, 0.04076524], [1516995060000, 0.02809468, 0.02809468, 0.02809468, 0.02809468, 1.04732493], [1516995180000, 0.02823228, 0.02823228, 0.02823228, 0.02823228, 0.16052447], [1516995240000, 0.02823228, 0.02823228, 0.02823228, 0.02823228, 0.57712427], [1516995300000, 0.02823228, 0.02823228, 0.02823228, 0.02823228, 1.81377889], [1516995360000, 0.02823226, 0.02823226, 0.02823226, 0.02823226, 0.14798523], [1516995420000, 0.02823217, 0.02823217, 0.02823217, 0.02823217, 2.68227637], [1516995600000, 0.02823226, 0.02823226, 0.02809467, 0.02809467, 0.58622775], [1516995660000, 0.02823225, 0.02823225, 0.02823224, 0.02823224, 0.10672796], [1516995720000, 0.02823224, 0.02823224, 0.02823224, 0.02823224, 0.3], [1516995840000, 0.02819869, 0.02819869, 0.02800001, 0.02800001, 39.29585741], [1516995900000, 0.02819867, 0.02819867, 0.02819867, 0.02819867, 0.38814238], [1516995960000, 0.02819866, 0.02819866, 0.02819866, 0.02819866, 0.07636746], [1516996080000, 0.02819866, 0.0281987, 0.02819866, 0.0281987, 5.3520918], [1516996200000, 0.02819866, 0.02819866, 0.02819866, 0.02819866, 1.32469112], [1516996500000, 0.02823224, 0.02823224, 0.02823224, 0.02823224, 0.70841096], [1516996560000, 0.02802145, 0.02802161, 0.02802145, 0.02802157, 3.37637035], [1516996620000, 0.0282322, 0.0282322, 0.0282322, 0.0282322, 0.06332787], [1516996740000, 0.02802204, 0.02802204, 0.02802204, 0.02802204, 0.28756135], [1516996800000, 0.0280221, 0.02823214, 0.02802207, 0.02823214, 6.79780379], [1516996860000, 0.02802219, 0.02802219, 0.02802207, 0.0280221, 3.75454519], [1516997040000, 0.02823215, 0.02823215, 0.02823213, 0.02823213, 0.44739346], [1516997100000, 0.02823198, 0.02823201, 0.02823198, 0.02823199, 7.43822191], [1516997160000, 0.02823189, 0.02823189, 0.02802211, 0.02805121, 16.94161987], [1516997220000, 0.02802211, 0.02823195, 0.0280025, 0.02823195, 9.05151216], [1516997280000, 0.02822684, 0.02822689, 0.02822684, 0.02822685, 3.55058998], [1516997340000, 0.02822689, 0.02823199, 0.02802775, 0.02802775, 2.28916638], [1516997400000, 0.02823197, 0.02823197, 0.02823197, 0.02823197, 0.35420799], [1516997520000, 0.02823191, 0.02823191, 0.02823191, 0.02823191, 3.47447144], [1516997580000, 0.0282319, 0.0282319, 0.0282319, 0.0282319, 0.03827455], [1516997640000, 0.0282319, 0.02834611, 0.0282319, 0.02834611, 33.71734675], [1516997700000, 0.02832602, 0.02832602, 0.02802305, 0.028323, 72.4287368], [1516997760000, 0.0283, 0.02835355, 0.02801996, 0.02835355, 70.95952395], [1516997820000, 0.02835355, 0.02835355, 0.02804195, 0.02804195, 0.46305351], [1516997940000, 0.02835, 0.02835, 0.02835, 0.02835, 0.2], [1516998000000, 0.02834997, 0.02835, 0.02834997, 0.02835, 0.35273368], [1516998060000, 0.02835, 0.02835, 0.02835, 0.02835, 0.10183319], [1516998120000, 0.02835, 0.0283561, 0.02835, 0.0283561, 17.56894607], [1516998180000, 0.02835611, 0.02835611, 0.02807393, 0.02807399, 13.81311453], [1516998240000, 0.02835847, 0.02836199, 0.02810008, 0.02836199, 3.90772869], [1516998300000, 0.0282, 0.0282, 0.0282, 0.0282, 1.25578752], [1516998480000, 0.0281085, 0.0281085, 0.0281085, 0.0281085, 1.0], [1516998600000, 0.02835999, 0.02836, 0.02835999, 0.02836, 0.60433042], [1516998660000, 0.0282, 0.0282, 0.02810868, 0.02810868, 16.74372236], [1516998840000, 0.02835997, 0.0284, 0.02835997, 0.0284, 45.47712571], [1516998900000, 0.0284, 0.02840094, 0.0284, 0.02840094, 0.70422534], [1516999020000, 0.02825002, 0.02825002, 0.02825, 0.02825, 17.56894607], [1516999080000, 0.02825, 0.02843399, 0.02825, 0.02825, 13.59812741], [1516999140000, 0.02825, 0.02825, 0.02825, 0.02825, 7.12530091], [1516999200000, 0.02843394, 0.02845, 0.02843394, 0.02844898, 78.36944255], [1516999260000, 0.02844898, 0.02844898, 0.02825, 0.02825, 1.33172946], [1516999320000, 0.02825, 0.0284488, 0.02825, 0.0284488, 71.85183902], [1516999380000, 0.02844876, 0.02844876, 0.02844874, 0.02844874, 0.52485347], [1516999440000, 0.02844872, 0.0284489, 0.02825006, 0.02825006, 77.19529812], [1516999500000, 0.02825006, 0.02825006, 0.02825006, 0.02825006, 0.03119503], [1516999560000, 0.0284489, 0.0284489, 0.0284489, 0.0284489, 18.76455279], [1516999620000, 0.02825006, 0.02825006, 0.02825006, 0.02825006, 0.06222459], [1516999680000, 0.0283, 0.0283, 0.0283, 0.0283, 0.10680322], [1516999740000, 0.0283, 0.02845, 0.0283, 0.02845, 0.32558763], [1516999800000, 0.02845, 0.02857899, 0.02830003, 0.02849995, 144.51707177], [1516999860000, 0.0285, 0.02857859, 0.02830015, 0.02830015, 71.77893718], [1516999920000, 0.02830018, 0.02847199, 0.02830018, 0.02847199, 0.09553601], [1516999980000, 0.02830032, 0.02830035, 0.02830032, 0.02830035, 0.09775641], [1517000040000, 0.02847199, 0.02847199, 0.02847199, 0.02847199, 0.1], [1517000100000, 0.02847199, 0.02854998, 0.02840366, 0.02840366, 10.23140446], [1517000160000, 0.02837296, 0.0289, 0.02837296, 0.02877379, 553.77180554], [1517000220000, 0.0288, 0.029, 0.0288, 0.02894498, 126.03519929], [1517000280000, 0.02894498, 0.02904789, 0.02894498, 0.02904789, 29.2171593], [1517000340000, 0.02900006, 0.0291, 0.02900002, 0.0290001, 50.39025589], [1517000400000, 0.0290001, 0.02912518, 0.0290001, 0.02900012, 22.12836385], [1517000460000, 0.02900012, 0.02914627, 0.02896647, 0.02897691, 76.16333983], [1517000520000, 0.02897691, 0.0292, 0.02897691, 0.02897698, 54.78820049], [1517000580000, 0.02915, 0.0292, 0.028977, 0.02897901, 31.9054856], [1517000640000, 0.02919999, 0.02925, 0.02897905, 0.02898342, 98.93507121], [1517000700000, 0.02898392, 0.0293, 0.02898392, 0.0293, 26.99245986], [1517000760000, 0.0293, 0.02935, 0.02900105, 0.02933001, 6.48771662], [1517000820000, 0.02933529, 0.0293821, 0.02910004, 0.02910083, 125.59631729], [1517000880000, 0.02910096, 0.0293821, 0.02910086, 0.02920002, 61.58067786], [1517000940000, 0.02920005, 0.02920006, 0.02920005, 0.02920006, 0.19619497], [1517001000000, 0.02920003, 0.0293821, 0.02920002, 0.0293821, 5.2583355], [1517001060000, 0.0293821, 0.0293821, 0.02910103, 0.02938197, 10.79926198], [1517001120000, 0.02938195, 0.02938195, 0.0291009, 0.0293819, 6.33245671], [1517001180000, 0.02910081, 0.0293821, 0.0291008, 0.02938209, 89.40370365], [1517001240000, 0.02938209, 0.0293821, 0.02910098, 0.02910098, 4.26911913], [1517001300000, 0.0293821, 0.0294, 0.02910098, 0.0294, 11.67426773], [1517001360000, 0.0294, 0.02940803, 0.02910979, 0.02940803, 20.94125989], [1517001420000, 0.02911001, 0.02940803, 0.02911001, 0.02911243, 72.44281657], [1517001480000, 0.02911243, 0.029473, 0.02911224, 0.02911224, 258.77200524], [1517001540000, 0.0291161, 0.02915, 0.0291161, 0.02911616, 17.94931081], [1517001600000, 0.02911234, 0.02937712, 0.02911234, 0.0292447, 2.11142286], [1517001660000, 0.02924469, 0.02937712, 0.02910058, 0.02937658, 7.07805695], [1517001720000, 0.0291007, 0.02937379, 0.02910047, 0.0291005, 3.92913895], [1517001780000, 0.02910049, 0.02937311, 0.02910049, 0.02910077, 56.11760748], [1517001840000, 0.0291009, 0.02937247, 0.0291009, 0.02937247, 1.71675071], [1517001900000, 0.02937208, 0.02937208, 0.02937182, 0.02937182, 17.81016753], [1517001960000, 0.02937181, 0.02937182, 0.02910249, 0.02937169, 8.10059525], [1517002020000, 0.02937144, 0.02937145, 0.02910314, 0.02937118, 7.23536372], [1517002080000, 0.02921551, 0.02930195, 0.0290497, 0.02930195, 99.71437297], [1517002140000, 0.02910038, 0.02910038, 0.02902659, 0.0290497, 3.03120006], [1517002200000, 0.0290497, 0.02910038, 0.02895, 0.02910038, 13.60296484], [1517002260000, 0.02895001, 0.02895002, 0.02888299, 0.02888301, 46.43483252], [1517002320000, 0.02895001, 0.02895001, 0.02888292, 0.02895001, 22.16863986], [1517002380000, 0.02895001, 0.02895001, 0.0287638, 0.0287638, 8.79885754], [1517002440000, 0.0288, 0.02895, 0.02876381, 0.02894997, 7.67160265], [1517002500000, 0.02894993, 0.02894993, 0.02880005, 0.02880014, 4.36499116], [1517002560000, 0.02880014, 0.02880014, 0.0288001, 0.02880011, 6.81028002], [1517002620000, 0.02880011, 0.02880011, 0.02876379, 0.02876379, 15.00209822], [1517002680000, 0.02876379, 0.0287638, 0.02871958, 0.02871958, 16.55486113], [1517002740000, 0.02871958, 0.02871959, 0.0287021, 0.02871959, 1.18119221], [1517002800000, 0.02871959, 0.028723, 0.02871959, 0.028723, 1.50366479], [1517002860000, 0.0287196, 0.028723, 0.0287196, 0.028723, 6.21953169], [1517002920000, 0.02871971, 0.028723, 0.02871971, 0.0287227, 8.12442689], [1517002980000, 0.0287227, 0.0287227, 0.0287, 0.0287, 4.13488851], [1517003040000, 0.0287, 0.02871971, 0.02865, 0.02865005, 10.87724636], [1517003100000, 0.02871971, 0.02871971, 0.02865006, 0.0286501, 1.9290271], [1517003160000, 0.02871971, 0.0287227, 0.0287197, 0.0287197, 7.83270848], [1517003220000, 0.02871971, 0.02880586, 0.0287197, 0.0287197, 3.04936645], [1517003280000, 0.0287197, 0.0287197, 0.0287197, 0.0287197, 0.2336656], [1517003340000, 0.0287197, 0.0287197, 0.02868015, 0.02868015, 3.71925034], [1517003400000, 0.02868015, 0.0287197, 0.02868015, 0.0287197, 1.15145152], [1517003460000, 0.0287197, 0.0287197, 0.02868015, 0.02868015, 12.92655031], [1517003520000, 0.02868015, 0.02878288, 0.02868015, 0.02868015, 4.86231814], [1517003580000, 0.02877974, 0.02877974, 0.02877974, 0.02877974, 0.11920046], [1517003640000, 0.02868, 0.0287796, 0.02863662, 0.02877945, 103.75694138], [1517003700000, 0.02877944, 0.02877945, 0.02863662, 0.02877945, 1.99373828], [1517003820000, 0.02877943, 0.02877943, 0.02877943, 0.02877943, 0.18686908], [1517003880000, 0.02877943, 0.02891626, 0.02863663, 0.02863667, 169.21997187], [1517003940000, 0.02864342, 0.02864342, 0.02864342, 0.02864342, 0.35657567], [1517004000000, 0.02864354, 0.02886993, 0.02858342, 0.02886993, 184.33217286], [1517004120000, 0.02864355, 0.02886317, 0.02864355, 0.02886317, 0.27501627], [1517004180000, 0.02864355, 0.02886283, 0.02858406, 0.02864355, 2.7890939], [1517004240000, 0.02864355, 0.02886285, 0.02858414, 0.02886282, 7.02018492], [1517004360000, 0.02858518, 0.02886282, 0.02858518, 0.02886277, 1.55756382], [1517004420000, 0.02886279, 0.02886282, 0.02886278, 0.02886282, 1.47456565], [1517004480000, 0.02886281, 0.02886281, 0.02886279, 0.0288628, 6.31550691], [1517004540000, 0.0288628, 0.02886281, 0.0288628, 0.0288628, 3.97496052], [1517004600000, 0.02886281, 0.02886281, 0.02877621, 0.02886281, 5.90831357], [1517004660000, 0.02886281, 0.02886281, 0.02865359, 0.02865359, 18.54184688], [1517004720000, 0.02886281, 0.02886282, 0.02865404, 0.02865825, 5.54568025], [1517004780000, 0.02865849, 0.02886317, 0.02865847, 0.02886315, 37.26808136], [1517004840000, 0.02886315, 0.02886316, 0.02866284, 0.02886316, 5.07118461], [1517004900000, 0.02886316, 0.02886316, 0.028863, 0.028863, 1.50358222], [1517004960000, 0.02886282, 0.028863, 0.0285872, 0.02886299, 146.61763029], [1517005020000, 0.02886297, 0.028863, 0.02886297, 0.028863, 1.5089836], [1517005080000, 0.028863, 0.028863, 0.028863, 0.028863, 0.50521815], [1517005140000, 0.028863, 0.028863, 0.02886296, 0.02886296, 431.13233358], [1517005200000, 0.02886296, 0.02886299, 0.02886296, 0.02886299, 1.52995723], [1517005260000, 0.02886299, 0.02886316, 0.02886299, 0.02886316, 2.07710365], [1517005320000, 0.028863, 0.02886317, 0.028863, 0.02886317, 1.65604093], [1517005380000, 0.02886317, 0.02886317, 0.02886317, 0.02886317, 1.38356896], [1517005440000, 0.02886317, 0.02891608, 0.02886317, 0.02891608, 2.10654656], [1517005500000, 0.02891608, 0.02891608, 0.02891608, 0.02891608, 1.8159909], [1517005560000, 0.02891607, 0.02891608, 0.02891607, 0.02891608, 2.33346949], [1517005620000, 0.02891608, 0.02891626, 0.02891608, 0.02891626, 7.78126222], [1517005680000, 0.02891626, 0.02891651, 0.0289161, 0.02891651, 6.27809759], [1517005740000, 0.02891651, 0.02895001, 0.02891607, 0.02895001, 3.19696867], [1517005800000, 0.02895001, 0.0289501, 0.02891607, 0.0289501, 7.06628105], [1517005860000, 0.02895999, 0.029, 0.02895155, 0.02895155, 1.99385801], [1517005920000, 0.02895155, 0.02895155, 0.02895155, 0.02895155, 3.93], [1517005980000, 0.029, 0.02919998, 0.029, 0.02919998, 24.69596543], [1517006040000, 0.02919995, 0.0292, 0.02868748, 0.02868748, 243.16712025], [1517006100000, 0.029, 0.02911172, 0.029, 0.0291, 7.27843766], [1517006160000, 0.02909999, 0.02909999, 0.02885, 0.02885, 1.54852213], [1517006220000, 0.02885, 0.02909998, 0.02885, 0.02885008, 0.80552784], [1517006280000, 0.0290999, 0.0290999, 0.02885018, 0.02909989, 0.32548255], [1517006340000, 0.02909989, 0.0290999, 0.02909989, 0.0290999, 0.03775133], [1517006400000, 0.02909985, 0.02909985, 0.02909985, 0.02909985, 0.03855724], [1517006460000, 0.02909984, 0.02909984, 0.02909984, 0.02909984, 3.4278539], [1517006520000, 0.02909983, 0.02909983, 0.02909983, 0.02909983, 0.34278539], [1517006880000, 0.02909983, 0.02909983, 0.02909983, 0.02909983, 0.22149703], [1517006940000, 0.02909984, 0.02909984, 0.02895951, 0.02895951, 8.21467619], [1517007000000, 0.02909984, 0.02909984, 0.02895952, 0.02909984, 2.31078652], [1517007060000, 0.02895951, 0.0290999, 0.02895951, 0.0290999, 1.56634512], [1517007120000, 0.0290999, 0.02909999, 0.0290999, 0.02909999, 1.50469466], [1517007180000, 0.02909999, 0.02909999, 0.02896006, 0.02909999, 13.53538179], [1517007240000, 0.02909999, 0.02909999, 0.02909989, 0.02909999, 2.52722899], [1517007300000, 0.02909999, 0.02918729, 0.02909989, 0.02918729, 2.36938784], [1517007360000, 0.02909989, 0.02919991, 0.02909989, 0.02909989, 3.70696107], [1517007420000, 0.02909989, 0.02909989, 0.02895952, 0.02909981, 11.67952533], [1517007480000, 0.02909989, 0.02909989, 0.02896048, 0.02909989, 2.08150442], [1517007540000, 0.02909989, 0.02918, 0.02909989, 0.02918, 0.83226231], [1517007600000, 0.02918, 0.02918, 0.02917992, 0.02918, 4.70716884], [1517007660000, 0.02917992, 0.02917992, 0.02917992, 0.02917992, 0.87590834], [1517007720000, 0.02918, 0.02918, 0.02917992, 0.02917992, 13.32082836], [1517007780000, 0.02917992, 0.02917992, 0.02917992, 0.02917992, 7.441], [1517007840000, 0.02912469, 0.02912469, 0.02895952, 0.02895952, 0.2069151], [1517007900000, 0.02895984, 0.02895984, 0.02895984, 0.02895984, 0.03491187], [1517008020000, 0.02895951, 0.029, 0.02895951, 0.029, 0.62323591], [1517008080000, 0.029, 0.029, 0.029, 0.029, 0.0761409], [1517008140000, 0.029, 0.029, 0.029, 0.029, 0.03807045], [1517008200000, 0.029, 0.029, 0.029, 0.029, 0.03807045], [1517008260000, 0.02897975, 0.029, 0.02897975, 0.029, 1.10790418], [1517008320000, 0.029, 0.029, 0.029, 0.029, 0.07608798], [1517008380000, 0.029, 0.029, 0.029, 0.029, 0.07608798], [1517008440000, 0.029, 0.029, 0.029, 0.029, 0.88220826], [1517008500000, 0.029, 0.029, 0.02895957, 0.02895957, 1.13180111], [1517008560000, 0.02895957, 0.029, 0.02895957, 0.029, 0.76479929], [1517008620000, 0.029, 0.029, 0.0289596, 0.0289596, 3.0376428], [1517008680000, 0.02903197, 0.02909992, 0.02903197, 0.0290999, 1.08352757], [1517008740000, 0.02900001, 0.02900001, 0.02895951, 0.02895951, 1.15881113], [1517008860000, 0.02899983, 0.0291, 0.02895951, 0.0291, 1.23681131], [1517008920000, 0.02895951, 0.02908956, 0.02895951, 0.02895951, 15.02141518], [1517008980000, 0.02895951, 0.02895951, 0.02886394, 0.02886394, 4.78503128], [1517009040000, 0.02886394, 0.02886394, 0.02885, 0.02885005, 26.56189532], [1517009100000, 0.02909994, 0.02909994, 0.02909994, 0.02909994, 0.06410898], [1517009160000, 0.02885001, 0.02885002, 0.02885001, 0.02885002, 19.33477568], [1517009220000, 0.02885002, 0.02885002, 0.02885002, 0.02885002, 26.80703209], [1517009340000, 0.029, 0.029, 0.029, 0.029, 0.74869214], [1517009400000, 0.029, 0.029, 0.029, 0.029, 0.37241379], [1517009460000, 0.0289, 0.02899999, 0.0289, 0.0289, 3.10039452], [1517009520000, 0.0289, 0.0289995, 0.0289, 0.0289995, 0.61054831], [1517009580000, 0.0289995, 0.0291, 0.0289, 0.0291, 4.94610212], [1517009640000, 0.0291, 0.02914999, 0.0291, 0.0291, 0.85801494], [1517009700000, 0.0291257, 0.0291257, 0.02912568, 0.02912568, 1.27767989], [1517009760000, 0.02912565, 0.02912568, 0.02912565, 0.02912565, 0.43596444], [1517009820000, 0.02912568, 0.02912568, 0.02891861, 0.02912568, 3.3658252], [1517009880000, 0.02912566, 0.02912574, 0.02912566, 0.02912574, 1.48966173], [1517009940000, 0.0291257, 0.02912574, 0.0291257, 0.02912574, 1.01041861], [1517010000000, 0.02912568, 0.02917, 0.02892505, 0.02892505, 93.97343177], [1517010060000, 0.02916997, 0.029179, 0.02893585, 0.029179, 35.75482373], [1517010180000, 0.02915287, 0.02915287, 0.02915287, 0.02915287, 2.44182132], [1517010240000, 0.02906615, 0.02917899, 0.02893728, 0.02917896, 5.37661662], [1517010300000, 0.02917896, 0.02917896, 0.02917896, 0.02917896, 0.17525669], [1517010360000, 0.02917896, 0.02917896, 0.02917882, 0.02917882, 10.23135351], [1517010420000, 0.0290856, 0.02917857, 0.0290856, 0.02917857, 0.37547047], [1517010480000, 0.02908559, 0.02908559, 0.02890239, 0.02903481, 16.13504233], [1517010540000, 0.02890578, 0.02890602, 0.02890578, 0.02890602, 1.21709821], [1517010600000, 0.02890636, 0.02905965, 0.02890636, 0.02905965, 6.85981735], [1517010720000, 0.02905966, 0.02915121, 0.02890676, 0.02890676, 95.13811717], [1517010780000, 0.02890683, 0.02890688, 0.02890681, 0.02890685, 9.46069555], [1517010840000, 0.02890709, 0.02890709, 0.02890709, 0.02890709, 0.10753973], [1517010900000, 0.02890737, 0.02915123, 0.02890737, 0.02915123, 8.37079072], [1517010960000, 0.0291, 0.0291, 0.02904644, 0.02904644, 0.14119841], [1517011020000, 0.02904644, 0.02904644, 0.02904644, 0.02904644, 0.44730978], [1517011080000, 0.02904644, 0.0291, 0.02904644, 0.0291, 5.95855985], [1517011200000, 0.0291, 0.02914, 0.02899365, 0.02914, 12.5150799], [1517011260000, 0.02914, 0.029179, 0.02914, 0.029179, 6.21314662], [1517011320000, 0.02917831, 0.02917998, 0.02899416, 0.02917998, 2.84539727], [1517011380000, 0.02917998, 0.02917998, 0.02917998, 0.02917998, 1.13134072], [1517011440000, 0.02917998, 0.0292, 0.02917998, 0.0292, 2.05200051], [1517011500000, 0.0292, 0.02925, 0.02900124, 0.02925, 2.669491], [1517011560000, 0.0292, 0.02925, 0.0292, 0.02925, 0.32797908], [1517011620000, 0.02900213, 0.02925, 0.02900213, 0.0292, 4.23471549], [1517011680000, 0.02927578, 0.0292887, 0.02927578, 0.02927578, 2.41439566], [1517011740000, 0.02928, 0.02928, 0.02900277, 0.02900299, 5.23870404], [1517011800000, 0.02928869, 0.0292887, 0.0290032, 0.0290032, 3.07147817], [1517011860000, 0.02928839, 0.02928888, 0.02928836, 0.02928851, 8.63074886], [1517011920000, 0.02900494, 0.02900494, 0.02900494, 0.02900494, 0.92239657], [1517011980000, 0.02928872, 0.02928872, 0.02928872, 0.02928872, 0.59850395], [1517012040000, 0.02928864, 0.02928864, 0.02928864, 0.02928864, 0.76624085], [1517012100000, 0.02928888, 0.02928888, 0.02928887, 0.02928887, 0.07599349], [1517012160000, 0.02928887, 0.02928888, 0.02901665, 0.02901666, 5.55432144], [1517012280000, 0.02928872, 0.02928872, 0.02901974, 0.02901974, 0.63799218], [1517012340000, 0.02902029, 0.02902029, 0.02902029, 0.02902029, 1.61030437], [1517012400000, 0.0290214, 0.02902153, 0.0290214, 0.02902153, 0.63413055], [1517012460000, 0.02928842, 0.02928842, 0.02928842, 0.02928842, 0.5], [1517012520000, 0.02902913, 0.02903116, 0.02902913, 0.02903114, 40.66516405], [1517012580000, 0.02903131, 0.02903131, 0.02903131, 0.02903131, 0.13488098], [1517012640000, 0.0292, 0.0292, 0.0292, 0.0292, 0.07594734], [1517012700000, 0.0291, 0.0291, 0.0291, 0.0291, 0.42], [1517012760000, 0.02918437, 0.02928661, 0.0291, 0.02928661, 1.16376656], [1517012880000, 0.02928582, 0.0292859, 0.02910001, 0.02928588, 6.67571164], [1517012940000, 0.02928571, 0.02928571, 0.02910001, 0.02910001, 7.70924202], [1517013000000, 0.0291, 0.02928565, 0.0289, 0.02921973, 29.56947675], [1517013060000, 0.02920969, 0.02921963, 0.02919151, 0.02919151, 0.45923906], [1517013120000, 0.02919138, 0.02919138, 0.02919138, 0.02919138, 3.23313995], [1517013180000, 0.02913, 0.02913, 0.02913, 0.02913, 5.0], [1517013240000, 0.02903656, 0.02903656, 0.02903656, 0.02903656, 1.11459612], [1517013420000, 0.0289684, 0.0289684, 0.0289684, 0.0289684, 0.03366477], [1517013480000, 0.0289684, 0.02903656, 0.02890001, 0.02903656, 7.65058884], [1517013540000, 0.02892277, 0.02892277, 0.02892277, 0.02892277, 0.05338078], [1517013600000, 0.02903656, 0.02903656, 0.02903656, 0.02903656, 0.09382026], [1517013660000, 0.02903656, 0.02903662, 0.02903656, 0.02903662, 3.84924511], [1517013720000, 0.02910334, 0.02910625, 0.02910334, 0.02910625, 0.10046435], [1517013780000, 0.02903662, 0.02913799, 0.02903662, 0.02903662, 1.05353858], [1517013840000, 0.02903662, 0.0291436, 0.02903662, 0.0291436, 1.50792518], [1517013900000, 0.02903662, 0.02914393, 0.02903662, 0.02903662, 1.02689524], [1517013960000, 0.02918963, 0.02918992, 0.02890013, 0.02890604, 13.36318155], [1517014020000, 0.02918939, 0.02918939, 0.02918932, 0.02918932, 0.1034136], [1517014080000, 0.02918981, 0.02918981, 0.02918981, 0.02918981, 1.09996146], [1517014140000, 0.0291898, 0.0291898, 0.0291898, 0.0291898, 0.06279537], [1517014200000, 0.029, 0.029, 0.029, 0.029, 3.7], [1517014320000, 0.02918992, 0.02918992, 0.02918992, 0.02918992, 0.07348096], [1517014380000, 0.02918989, 0.02918992, 0.02918989, 0.02918992, 1.85493063], [1517014500000, 0.02918992, 0.02918992, 0.0291439, 0.0291439, 1.45616967], [1517014560000, 0.0291669, 0.0291669, 0.0291669, 0.0291669, 0.01717531], [1517014620000, 0.02919166, 0.02919166, 0.02919166, 0.02919166, 0.04401017], [1517014680000, 0.02919166, 0.02925, 0.02919166, 0.02925, 6.50188494], [1517014740000, 0.02919166, 0.02922, 0.0291669, 0.02922, 0.74668426], [1517014860000, 0.02922, 0.02922, 0.02922, 0.02922, 0.05062832], [1517014920000, 0.02922, 0.02925, 0.02908134, 0.02925, 1.23390002], [1517014980000, 0.02925, 0.02925, 0.0290817, 0.0290817, 0.09448524], [1517015040000, 0.02909086, 0.02909102, 0.0290821, 0.02909102, 9.20754932], [1517015100000, 0.02909102, 0.029235, 0.02909102, 0.029235, 1.61014509], [1517015160000, 0.029235, 0.029235, 0.02909087, 0.02909087, 17.42938553], [1517015220000, 0.02909088, 0.02909088, 0.02909088, 0.02909088, 8.8372809], [1517015280000, 0.02909088, 0.02909088, 0.02909088, 0.02909088, 3.9276478], [1517015400000, 0.02909088, 0.029235, 0.02909088, 0.029235, 3.36891512], [1517015460000, 0.029235, 0.029235, 0.029235, 0.029235, 0.39905988], [1517015520000, 0.029235, 0.02928888, 0.02909087, 0.02928888, 6.6135812], [1517015580000, 0.02928888, 0.02928888, 0.02928888, 0.02928888, 9.21124619], [1517015640000, 0.02928888, 0.02928888, 0.02918888, 0.02918888, 1.27216859], [1517015760000, 0.02918888, 0.02918888, 0.02918888, 0.02918888, 0.03789852], [1517015820000, 0.02918888, 0.02918888, 0.02918888, 0.02918888, 0.10012251], [1517015880000, 0.02918888, 0.02918888, 0.02918888, 0.02918888, 5.71586311], [1517015940000, 0.0291886, 0.0291886, 0.02907109, 0.0290909, 4.79657729], [1517016000000, 0.0290909, 0.02916081, 0.02904455, 0.02916081, 11.5044396], [1517016060000, 0.02918, 0.02918, 0.02904534, 0.02904534, 17.06501425], [1517016120000, 0.02918, 0.02918, 0.02904546, 0.02918, 3.18334578], [1517016180000, 0.02918, 0.02918, 0.02904589, 0.02918, 1.53314915], [1517016240000, 0.02904631, 0.02918, 0.02904628, 0.02918, 1.96726157], [1517016300000, 0.02918, 0.02926542, 0.02918, 0.02926542, 0.34270047], [1517016420000, 0.02926542, 0.02929319, 0.02926542, 0.02929301, 0.18175174], [1517016480000, 0.02904637, 0.02904637, 0.02904637, 0.02904637, 1.73381938], [1517016600000, 0.02929914, 0.02929914, 0.02929914, 0.02929914, 0.2549534], [1517016660000, 0.02929907, 0.02929907, 0.02904681, 0.02904694, 3.25598152], [1517016720000, 0.02904703, 0.02904703, 0.02904703, 0.02904703, 0.07079472], [1517016780000, 0.02904695, 0.02904695, 0.02904695, 0.02904695, 1.49383393], [1517016840000, 0.02904705, 0.02904705, 0.02904705, 0.02904705, 0.508], [1517016900000, 0.02904694, 0.02929597, 0.02902741, 0.02904903, 14.79669717], [1517017020000, 0.0292, 0.0292, 0.02904709, 0.02904709, 4.93128819], [1517017080000, 0.0292, 0.0292, 0.0292, 0.0292, 0.34432034], [1517017140000, 0.0292, 0.0292, 0.02905201, 0.02905201, 0.06322406], [1517017200000, 0.0292, 0.0292, 0.0292, 0.0292, 0.04603454], [1517017260000, 0.02906, 0.02920663, 0.02906, 0.02920663, 0.47708981], [1517017320000, 0.02906001, 0.02906001, 0.02906001, 0.02906001, 0.47636161], [1517017440000, 0.02920663, 0.02920663, 0.02904708, 0.02904708, 4.76298153], [1517017500000, 0.02904708, 0.02919988, 0.02904708, 0.02919988, 4.13953271], [1517017560000, 0.02919988, 0.02919988, 0.02899026, 0.02899041, 6.42130371], [1517017740000, 0.02899154, 0.02899154, 0.02899154, 0.02899154, 2.96411064], [1517017800000, 0.02919, 0.02919, 0.02919, 0.02919, 0.34258307], [1517017860000, 0.02918997, 0.02919, 0.02918997, 0.02919, 4.57388769], [1517017920000, 0.02899279, 0.02899279, 0.02899279, 0.02899279, 0.03696552], [1517017980000, 0.02899321, 0.02899321, 0.02899321, 0.02899321, 0.045], [1517018040000, 0.02919978, 0.02919978, 0.02919978, 0.02919978, 0.03551856], [1517018100000, 0.0291997, 0.0291997, 0.0291997, 0.0291997, 0.03805547], [1517018160000, 0.02899512, 0.02899524, 0.02899512, 0.02899524, 0.29142631], [1517018220000, 0.0291997, 0.0291997, 0.02919969, 0.02919969, 1.82], [1517018280000, 0.02899697, 0.02899697, 0.02899697, 0.02899697, 0.03981727], [1517018340000, 0.02919967, 0.02919968, 0.02919966, 0.02919968, 2.488], [1517018400000, 0.029199, 0.02929993, 0.02912955, 0.02912955, 6.00426796], [1517018460000, 0.02910161, 0.02910161, 0.02910161, 0.02910161, 0.27509973], [1517018520000, 0.02908236, 0.02908236, 0.02908236, 0.02908236, 0.2111615], [1517018580000, 0.02908236, 0.02908236, 0.02900016, 0.02908236, 1.63274804], [1517018640000, 0.02908236, 0.02908236, 0.02908236, 0.02908236, 0.11305806], [1517018700000, 0.02908236, 0.02908236, 0.02908236, 0.02908236, 1.20412759], [1517018760000, 0.02908236, 0.02908236, 0.02908236, 0.02908236, 2.2897467], [1517018820000, 0.02908236, 0.02916741, 0.02908236, 0.02916741, 16.55944353], [1517018880000, 0.02916741, 0.02916741, 0.02916741, 0.02916741, 5e-08], [1517018940000, 0.02916741, 0.02921342, 0.02902693, 0.02902732, 0.5889137], [1517019000000, 0.02902735, 0.02921342, 0.02902693, 0.02902694, 25.51578955], [1517019060000, 0.02900128, 0.02900128, 0.02900108, 0.02900128, 5.23760843], [1517019120000, 0.02900128, 0.02900128, 0.02900128, 0.02900128, 0.07204376], [1517019180000, 0.02900128, 0.02900128, 0.02899042, 0.02900124, 32.21673607], [1517019240000, 0.02899054, 0.02920975, 0.02899054, 0.02920975, 52.59202249], [1517019300000, 0.0289908, 0.02899089, 0.02899077, 0.02899089, 12.71241817], [1517019360000, 0.02899089, 0.02899089, 0.02899089, 0.02899089, 1.78886829], [1517019420000, 0.02899101, 0.02899101, 0.028991, 0.028991, 3.77208375], [1517019480000, 0.02918991, 0.02918991, 0.02918958, 0.02918958, 0.5006671], [1517019540000, 0.02899026, 0.0292, 0.0289, 0.0289, 25.57645958], [1517019600000, 0.02890019, 0.02890027, 0.02890019, 0.02890027, 6.91691755], [1517019660000, 0.029, 0.029, 0.02890002, 0.029, 2.18611878], [1517019720000, 0.029, 0.029, 0.0289, 0.0289, 11.9152982], [1517019780000, 0.02894762, 0.02894762, 0.0289, 0.02894762, 3.3415693], [1517019840000, 0.02894762, 0.02894762, 0.0289, 0.0289, 1.03537715], [1517019900000, 0.02894762, 0.02894762, 0.0289, 0.0289, 0.45695111], [1517019960000, 0.02894762, 0.02894762, 0.02894762, 0.02894762, 0.07629794], [1517020020000, 0.02894762, 0.02894762, 0.0289, 0.02894762, 9.93234391], [1517020080000, 0.0289, 0.02894762, 0.0289, 0.02894762, 0.49041912], [1517020140000, 0.02894762, 0.02894762, 0.02894762, 0.02894762, 0.03814897], [1517020200000, 0.0289, 0.0289, 0.0289, 0.0289, 1.35866902], [1517020260000, 0.0289, 0.02891867, 0.0289, 0.0289, 3.91340648], [1517020320000, 0.02894762, 0.02894762, 0.02894762, 0.02894762, 0.06001759], [1517020380000, 0.02894762, 0.02894762, 0.0289, 0.02894762, 8.7515634], [1517020440000, 0.0289, 0.02894762, 0.0289, 0.02894762, 2.47307822], [1517020500000, 0.0289, 0.02894762, 0.0289, 0.0289, 0.93799869], [1517020560000, 0.02894762, 0.02894762, 0.0289, 0.0289, 1.51583445], [1517020620000, 0.02894762, 0.02914229, 0.0289, 0.02892381, 18.99942394], [1517020680000, 0.02892381, 0.02892381, 0.0289, 0.02892381, 40.60935901], [1517020740000, 0.02892381, 0.02892381, 0.0289, 0.0289, 34.03488168], [1517020800000, 0.0289, 0.0289, 0.02884747, 0.02885, 6.71747292], [1517020860000, 0.02899846, 0.02899846, 0.02885, 0.02885, 5.77798634], [1517020920000, 0.02889992, 0.02889992, 0.02889992, 0.02889992, 0.10706289], [1517020980000, 0.02889992, 0.02889992, 0.02884747, 0.02884747, 0.49966676], [1517021040000, 0.02882728, 0.02882728, 0.0288, 0.0288, 1.55279964], [1517021100000, 0.02876399, 0.02884747, 0.0286777, 0.02884747, 13.89829378], [1517021160000, 0.02873208, 0.02884725, 0.02865, 0.02865, 1.09706643], [1517021220000, 0.02865033, 0.0288475, 0.02865033, 0.0287, 3.07293813], [1517021280000, 0.02865033, 0.02884738, 0.02865, 0.02884738, 1.63171449], [1517021400000, 0.02884716, 0.02887381, 0.02865, 0.02887381, 4.03125499], [1517021460000, 0.0288735, 0.0288735, 0.0288735, 0.0288735, 0.29438728], [1517021580000, 0.02862922, 0.02862922, 0.02862838, 0.02862838, 2.18151205], [1517021700000, 0.02886833, 0.02886833, 0.02886825, 0.02886825, 0.51681485], [1517021760000, 0.02886779, 0.02886779, 0.02886473, 0.02886473, 0.29635426], [1517021820000, 0.0288637, 0.0288637, 0.02863142, 0.02886281, 0.21546793], [1517022000000, 0.028862, 0.02886271, 0.02862396, 0.02886271, 4.65034933], [1517022060000, 0.02886269, 0.02886269, 0.02886264, 0.02886267, 0.99403723], [1517022120000, 0.02886259, 0.02886259, 0.02858624, 0.02862424, 17.27988075], [1517022240000, 0.02884997, 0.02884997, 0.02884997, 0.02884997, 1.1733104], [1517022360000, 0.02863329, 0.02863329, 0.02863268, 0.02863329, 79.84262402], [1517022420000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 24.81217207], [1517022480000, 0.02863329, 0.02863329, 0.02861887, 0.02863329, 12.46189686], [1517022540000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 4.41941259], [1517022600000, 0.02863329, 0.02863329, 0.02861886, 0.02863329, 15.53514832], [1517022660000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 1.427108], [1517022720000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 1.81142708], [1517022780000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 0.97987127], [1517022840000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 5.23984121], [1517022900000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 1.32629085], [1517022960000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 0.07704714], [1517023020000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 1.2933244], [1517023080000, 0.02863329, 0.02863329, 0.02861886, 0.02861886, 7.64651362], [1517023140000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 0.63830743], [1517023200000, 0.02863329, 0.02863329, 0.02861886, 0.02863329, 5.23091979], [1517023260000, 0.02863329, 0.02863329, 0.02858624, 0.02858624, 0.54131686], [1517023320000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 1.78463599], [1517023380000, 0.02858624, 0.02863329, 0.02858624, 0.02858624, 3.4127349], [1517023440000, 0.02858624, 0.02858624, 0.02858624, 0.02858624, 0.51500994], [1517023500000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 0.34924371], [1517023560000, 0.0286, 0.02863329, 0.0286, 0.02863329, 0.29672902], [1517023620000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 1.66890206], [1517023680000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 1.72357246], [1517023740000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 0.810769], [1517023800000, 0.02863329, 0.02863329, 0.02863329, 0.02863329, 0.07698459], [1517023860000, 0.02858625, 0.02863329, 0.02858625, 0.02863329, 7.11856777], [1517023920000, 0.02863329, 0.02878658, 0.02863329, 0.02878658, 1.84853362], [1517024040000, 0.02863329, 0.0288114, 0.02863329, 0.02881138, 0.65800616], [1517024100000, 0.02863329, 0.02881097, 0.02863329, 0.02874562, 1.20111968], [1517024160000, 0.02879631, 0.02879631, 0.02871071, 0.02871071, 0.55700576], [1517024220000, 0.02868666, 0.02868666, 0.02863329, 0.02863329, 1.29714927], [1517024280000, 0.02871071, 0.02871071, 0.02871071, 0.02871071, 0.03831322], [1517024520000, 0.02871071, 0.02871071, 0.02871071, 0.02871071, 2.89141626], [1517024580000, 0.02871071, 0.02871071, 0.02871071, 0.02871071, 0.57008286], [1517024760000, 0.02871071, 0.02871071, 0.02871071, 0.02871071, 1.74857596], [1517024820000, 0.02871071, 0.02871071, 0.02871071, 0.02871071, 0.0389705], [1517024880000, 0.02871071, 0.02871071, 0.02863329, 0.02863329, 11.21174872], [1517025000000, 0.02871071, 0.02871071, 0.02862519, 0.02862519, 3.08523718], [1517025060000, 0.02862145, 0.02862145, 0.02861605, 0.02861605, 0.2755172], [1517025120000, 0.02879, 0.02879, 0.02879, 0.02879, 2.41945013], [1517025180000, 0.02860824, 0.02879, 0.02860823, 0.02878997, 6.36241493], [1517025240000, 0.02878997, 0.02878997, 0.02860826, 0.02860826, 1.05423999], [1517025300000, 0.0287899, 0.0287899, 0.02860827, 0.02860827, 3.36381321], [1517025360000, 0.02878989, 0.02878989, 0.02878989, 0.02878989, 0.31634154], [1517025420000, 0.02860821, 0.02860821, 0.02858624, 0.02858624, 18.3195373], [1517025480000, 0.02858624, 0.02885, 0.02858624, 0.02858624, 86.24834522], [1517025540000, 0.0285862, 0.02867147, 0.02858342, 0.02867147, 4.18170112], [1517025600000, 0.02858348, 0.02882129, 0.02858348, 0.02879562, 30.6747582], [1517025660000, 0.02858343, 0.02882127, 0.02858343, 0.02882127, 5.07124052], [1517025720000, 0.02879997, 0.02879997, 0.02858354, 0.02858354, 1.30859414], [1517025780000, 0.02879996, 0.02879996, 0.02858663, 0.02858663, 1.86448994], [1517025840000, 0.02879997, 0.02879997, 0.02879997, 0.02879997, 0.05902783], [1517025900000, 0.02879985, 0.02879985, 0.02879983, 0.02879983, 1.03993272], [1517025960000, 0.02879997, 0.02879997, 0.02858434, 0.02858434, 0.55973367], [1517026020000, 0.02858435, 0.02879981, 0.02858347, 0.0287998, 4.33313345], [1517026080000, 0.02858435, 0.02879996, 0.02858347, 0.02879996, 1.05013828], [1517026200000, 0.02868667, 0.02868667, 0.02868667, 0.02868667, 0.03857137], [1517026260000, 0.02868667, 0.02868667, 0.02868667, 0.02868667, 0.69017528], [1517026320000, 0.02868667, 0.02872632, 0.02868667, 0.02872632, 2.09670781], [1517026380000, 0.02872632, 0.02875211, 0.02868667, 0.02868667, 9.32126078], [1517026440000, 0.02875211, 0.02876731, 0.02858348, 0.02876731, 0.41586492], [1517026620000, 0.02876731, 0.02878, 0.02876731, 0.02878, 1.54649524], [1517026680000, 0.02858349, 0.02879475, 0.02858348, 0.02879475, 3.02777523], [1517026800000, 0.02878, 0.02879295, 0.02878, 0.02879295, 0.34746351], [1517026920000, 0.02858348, 0.02858348, 0.02858348, 0.02858348, 0.25], [1517026980000, 0.02858348, 0.02858348, 0.02858348, 0.02858348, 3.02661012], [1517027040000, 0.02871759, 0.02871759, 0.02858348, 0.02858348, 2.56801709], [1517027100000, 0.02858348, 0.02858348, 0.02858348, 0.02858348, 1.0147303], [1517027160000, 0.02858348, 0.02858348, 0.02858347, 0.02858347, 4.96443556], [1517027220000, 0.02858348, 0.02858348, 0.02858347, 0.02858347, 2.0430679], [1517027280000, 0.02858348, 0.02858348, 0.02858348, 0.02858348, 0.06990059], [1517027340000, 0.02858348, 0.02858348, 0.02858348, 0.02858348, 0.21167316], [1517027400000, 0.02858348, 0.02858348, 0.02858348, 0.02858348, 7.1878163], [1517027460000, 0.02858348, 0.02858348, 0.02858347, 0.02858347, 0.15705035], [1517027520000, 0.02858348, 0.02858348, 0.02858348, 0.02858348, 0.49418353], [1517027580000, 0.02858348, 0.02858348, 0.02858348, 0.02858348, 0.0874631], [1517027640000, 0.02858348, 0.02858348, 0.02858348, 0.02858348, 0.04940269], [1517027700000, 0.02858348, 0.02858348, 0.02858342, 0.02858342, 2.88684147], [1517027760000, 0.0285834, 0.0285834, 0.0285834, 0.0285834, 1.19815223], [1517027820000, 0.0285834, 0.0285834, 0.02855, 0.02855, 3.53354698], [1517027940000, 0.028583, 0.028583, 0.0285, 0.0285, 2.93864269], [1517028000000, 0.028583, 0.028583, 0.0283, 0.02849269, 181.81074168], [1517028060000, 0.02849269, 0.02849269, 0.02849269, 0.02849269, 2.59306585], [1517028120000, 0.0284927, 0.0284927, 0.0284927, 0.0284927, 1.34496219], [1517028240000, 0.0284927, 0.0284927, 0.0284927, 0.0284927, 0.07738884], [1517028300000, 0.0284927, 0.0284927, 0.0284927, 0.0284927, 0.37125788], [1517028360000, 0.02849269, 0.0284927, 0.02836163, 0.0284927, 6.3290219], [1517028420000, 0.0284927, 0.0284927, 0.0283727, 0.0283727, 2.67009643], [1517028480000, 0.02849269, 0.02857818, 0.0283727, 0.02857818, 0.86334874], [1517028540000, 0.02857818, 0.02858199, 0.02836163, 0.02836163, 1.6809736], [1517028600000, 0.02858259, 0.02858259, 0.02837227, 0.02837227, 0.84965549], [1517028660000, 0.02858229, 0.0285823, 0.02836163, 0.02836163, 11.98379206], [1517028720000, 0.02836163, 0.02858295, 0.02836163, 0.02858295, 0.70423548], [1517028780000, 0.02836163, 0.02836163, 0.02836163, 0.02836163, 0.17593244], [1517028900000, 0.02858289, 0.02858292, 0.02850766, 0.02850766, 2.73394829], [1517028960000, 0.02858297, 0.02858297, 0.02858296, 0.02858296, 0.08576467], [1517029080000, 0.02858296, 0.02858296, 0.02858296, 0.02858296, 0.15749691], [1517029140000, 0.02858299, 0.02858299, 0.02858299, 0.02858299, 0.6550046], [1517029200000, 0.02850766, 0.02858299, 0.02850765, 0.02850765, 1.35967187], [1517029260000, 0.02850765, 0.02858299, 0.02850765, 0.02858299, 3.70169711], [1517029380000, 0.02838287, 0.02838287, 0.02838287, 0.02838287, 1.0], [1517029440000, 0.02838706, 0.02858299, 0.02838706, 0.02858299, 0.54608676], [1517029500000, 0.02858299, 0.02858299, 0.02858299, 0.02858299, 0.50098057], [1517029560000, 0.02858299, 0.02858299, 0.02858299, 0.02858299, 0.63741327], [1517029620000, 0.028408, 0.02858299, 0.02840512, 0.02858299, 10.57762654], [1517029680000, 0.02858299, 0.02858299, 0.02858, 0.02858, 0.07762502], [1517029740000, 0.02858, 0.02858, 0.02858, 0.02858, 0.07762419], [1517029800000, 0.02858, 0.02858, 0.02858, 0.02858, 0.42751852], [1517029860000, 0.02858, 0.02858, 0.02858, 0.02858, 0.07762244], [1517030040000, 0.02858, 0.02858, 0.02858, 0.02858, 7.174635], [1517030100000, 0.02858, 0.02858299, 0.02858, 0.02858299, 0.34989503], [1517030160000, 0.02858299, 0.0286765, 0.02841906, 0.02841906, 19.61137934], [1517030280000, 0.02867652, 0.02867653, 0.02867652, 0.02867653, 1.03508613], [1517030340000, 0.0287, 0.0287, 0.02857072, 0.02857072, 1.49066458], [1517030400000, 0.0287, 0.0288, 0.02853319, 0.02879995, 10.63866381], [1517030460000, 0.02853402, 0.02853402, 0.028534, 0.028534, 0.50739957], [1517030580000, 0.02872498, 0.02872498, 0.02872498, 0.02872498, 0.05828656], [1517030640000, 0.02872498, 0.02872498, 0.02872482, 0.02872482, 1.03123596], [1517030700000, 0.02872467, 0.02872467, 0.028534, 0.028534, 1.20159896], [1517030760000, 0.028534, 0.028534, 0.028534, 0.028534, 0.50561797], [1517030820000, 0.02869387, 0.02869387, 0.028534, 0.028534, 2.87652764], [1517030940000, 0.028534, 0.028534, 0.028534, 0.028534, 9.227979], [1517031000000, 0.028534, 0.028534, 0.02851057, 0.02851057, 10.533783], [1517031120000, 0.02851057, 0.02851057, 0.02851057, 0.02851057, 1.00117431], [1517031240000, 0.02851057, 0.02866812, 0.02851057, 0.02866812, 0.5305134], [1517031300000, 0.02851057, 0.02851057, 0.02851057, 0.02851057, 0.22023201], [1517031420000, 0.02851057, 0.02851057, 0.02851057, 0.02851057, 0.527434], [1517031480000, 0.02866642, 0.02866642, 0.02866642, 0.02866642, 2.43007888], [1517031540000, 0.02851057, 0.02851057, 0.02851057, 0.02851057, 5.02756753], [1517031600000, 0.0286656, 0.0286656, 0.02851057, 0.02866543, 2.67592124], [1517031660000, 0.02851057, 0.02866505, 0.02851057, 0.02851057, 6.85908907], [1517031780000, 0.02863387, 0.02863387, 0.02838414, 0.02838414, 0.63182065], [1517031900000, 0.02856864, 0.02856864, 0.02856864, 0.02856864, 0.04566241], [1517031960000, 0.02838364, 0.02856864, 0.02838364, 0.02856864, 5.8], [1517032020000, 0.02856864, 0.02860502, 0.02856864, 0.02857835, 1.33956694], [1517032080000, 0.02860483, 0.02860483, 0.02838278, 0.02860474, 2.4617239], [1517032140000, 0.02838278, 0.02860446, 0.02838278, 0.02860432, 2.47547482], [1517032200000, 0.02860581, 0.02860581, 0.02860581, 0.02860581, 0.5289214], [1517032260000, 0.02860581, 0.02860581, 0.02860579, 0.02860579, 1.18934271], [1517032380000, 0.02863152, 0.02863156, 0.02863152, 0.02863156, 0.03869997], [1517032440000, 0.02863156, 0.02863156, 0.02863156, 0.02863156, 0.07739844], [1517032500000, 0.02863156, 0.02864547, 0.02863156, 0.02864547, 0.11609381], [1517032560000, 0.02864547, 0.02864547, 0.02864547, 0.02864547, 0.07738798], [1517032620000, 0.02864547, 0.02864547, 0.02849863, 0.02864547, 21.62665937], [1517032680000, 0.02869992, 0.02869992, 0.02869992, 0.02869992, 0.07736235], [1517032740000, 0.02869992, 0.02869992, 0.02850683, 0.02869992, 2.07700662], [1517032800000, 0.0287, 0.0287, 0.0287, 0.0287, 0.07734443], [1517032920000, 0.0287, 0.0287, 0.02869999, 0.02869999, 0.70572481], [1517033040000, 0.0287, 0.02875439, 0.0287, 0.0287, 4.06196288], [1517033100000, 0.0287, 0.0287, 0.028525, 0.02852901, 46.37152063], [1517033160000, 0.02872499, 0.02872499, 0.02869998, 0.02869998, 0.07728371], [1517033220000, 0.02869997, 0.02869997, 0.02865, 0.02869997, 13.95055956], [1517033280000, 0.02865, 0.02866, 0.02865, 0.02866, 1.31428714], [1517033340000, 0.02869997, 0.02869997, 0.02869997, 0.02869997, 0.07201517], [1517033460000, 0.02869997, 0.02869997, 0.02869997, 0.02869997, 0.22678806], [1517033580000, 0.02869997, 0.02879999, 0.02869997, 0.02879999, 1.00400299], [1517033760000, 0.02869997, 0.02869997, 0.02869997, 0.02869997, 0.03747826], [1517033820000, 0.02866, 0.02866, 0.02866, 0.02866, 2.0], [1517033880000, 0.02866, 0.02866, 0.02866, 0.02866, 0.90805736], [1517033940000, 0.02866, 0.02866, 0.02857013, 0.02857013, 26.98859563], [1517034000000, 0.02857015, 0.02875, 0.02857015, 0.02857016, 4.29103787], [1517034120000, 0.02857029, 0.02857029, 0.02857029, 0.02857029, 0.96252174], [1517034360000, 0.0285706, 0.0285706, 0.0285, 0.0285, 100.0], [1517034480000, 0.02865, 0.02865, 0.02865, 0.02865, 0.03988857], [1517034540000, 0.02865, 0.02874478, 0.02865, 0.02874478, 0.60895549], [1517034600000, 0.02865, 0.02865, 0.02865, 0.02865, 0.28230349], [1517034660000, 0.02860989, 0.02874333, 0.0285279, 0.0285279, 0.63088328], [1517034720000, 0.02850003, 0.02874295, 0.0285, 0.0285, 10.98638416], [1517034780000, 0.0285, 0.0285, 0.0285, 0.0285, 0.22957039], [1517034900000, 0.02874136, 0.02874136, 0.0285, 0.02874111, 1.30887211], [1517034960000, 0.02874072, 0.02874072, 0.02874072, 0.02874072, 0.04376182], [1517035020000, 0.0287403, 0.0287403, 0.02874029, 0.02874029, 0.71691907], [1517035080000, 0.02850003, 0.02850003, 0.02850003, 0.02850003, 0.07399883], [1517035200000, 0.02869208, 0.02869208, 0.02869207, 0.02869207, 1.04558031], [1517035260000, 0.02869146, 0.02869146, 0.02850003, 0.02850003, 1.40635435], [1517035320000, 0.02850003, 0.02850003, 0.02850003, 0.02850003, 0.33306133], [1517035380000, 0.02850003, 0.02850003, 0.02850003, 0.02850003, 2.82767166], [1517035440000, 0.02850003, 0.02850003, 0.02850003, 0.02850003, 1.86393694], [1517035500000, 0.0285, 0.02867908, 0.0285, 0.02867879, 5.47527291], [1517035560000, 0.0285, 0.0285, 0.0285, 0.0285, 0.78160386], [1517035620000, 0.02867785, 0.02867785, 0.0285, 0.0285, 5.47674837], [1517035680000, 0.0285, 0.0285, 0.0285, 0.0285, 0.04054002], [1517035800000, 0.0285, 0.0285, 0.0285, 0.0285, 10.58685695], [1517035980000, 0.02866527, 0.02866527, 0.02866521, 0.02866521, 0.65961818], [1517036040000, 0.02866507, 0.02866507, 0.0285, 0.0285, 0.95067485], [1517036100000, 0.0285, 0.0285, 0.0285, 0.0285, 0.60712093], [1517036160000, 0.0285, 0.0285, 0.0285, 0.0285, 15.33531764], [1517036220000, 0.0285, 0.0285, 0.02848849, 0.02848849, 1.95437907], [1517036280000, 0.0285798, 0.0285798, 0.02848849, 0.02848849, 1.83932995], [1517036340000, 0.02848849, 0.02862298, 0.02848849, 0.02862298, 0.38610616], [1517036400000, 0.02862298, 0.02866505, 0.02862298, 0.02866505, 0.42415625], [1517036460000, 0.02848838, 0.02848838, 0.02848838, 0.02848838, 0.66686314], [1517036520000, 0.02866501, 0.02866504, 0.02866501, 0.02866504, 1.06012486], [1517036580000, 0.02866501, 0.02866501, 0.02848839, 0.02848839, 1.9922001], [1517036640000, 0.02848839, 0.02848839, 0.02848839, 0.02848839, 0.5], [1517036700000, 0.02866499, 0.02866499, 0.02866499, 0.02866499, 0.04627602], [1517036760000, 0.02848838, 0.02848838, 0.02848838, 0.02848838, 10.55263158], [1517036820000, 0.02848838, 0.028665, 0.02848838, 0.028665, 0.0650856], [1517036880000, 0.028665, 0.02866504, 0.028665, 0.02866504, 0.2655544], [1517036940000, 0.02866503, 0.02866505, 0.02866503, 0.02866505, 0.21658251], [1517037180000, 0.02866504, 0.02866505, 0.02866504, 0.02866505, 1.17946118], [1517037240000, 0.02871659, 0.02871659, 0.02871659, 0.02871659, 0.05376828], [1517037480000, 0.02871659, 0.02871659, 0.02871659, 0.02871659, 0.89476428], [1517037600000, 0.02874449, 0.02874449, 0.02874449, 0.02874449, 3.47981431], [1517037780000, 0.02869487, 0.02869487, 0.02869487, 0.02869487, 0.04913172], [1517037960000, 0.02869457, 0.02869457, 0.02869457, 0.02869457, 0.03873579], [1517038200000, 0.02848709, 0.02869457, 0.02848709, 0.02869457, 1.07067836], [1517038260000, 0.02869457, 0.02869488, 0.02869457, 0.02869488, 0.55887751], [1517038440000, 0.02869488, 0.02869488, 0.02869488, 0.02869488, 4.58061465], [1517038500000, 0.02869488, 0.02869488, 0.02869488, 0.02869488, 0.03868745], [1517038560000, 0.02869488, 0.02869488, 0.02869488, 0.02869488, 4.41889481], [1517038620000, 0.02869488, 0.02869488, 0.02869488, 0.02869488, 0.07736831], [1517038680000, 0.02869488, 0.02869488, 0.02869488, 0.02869488, 0.07736692], [1517038800000, 0.02869488, 0.02869488, 0.02869488, 0.02869488, 0.38515627], [1517038860000, 0.02869488, 0.02869488, 0.02869488, 0.02869488, 0.851197], [1517038920000, 0.02871784, 0.02871784, 0.02871784, 0.02871784, 0.07684318], [1517038980000, 0.02871784, 0.02873024, 0.0287, 0.0287, 3.85876374], [1517039040000, 0.0287, 0.02873024, 0.0287, 0.0287, 4.34518709], [1517039100000, 0.02874449, 0.02874449, 0.02874449, 0.02874449, 0.38630737], [1517039160000, 0.0287, 0.0287, 0.0287, 0.0287, 0.09520619], [1517039280000, 0.0287, 0.0287, 0.0287, 0.0287, 2.00366538], [1517039340000, 0.0287, 0.0287, 0.0287, 0.0287, 0.07684304], [1517039400000, 0.0287, 0.0287, 0.0287, 0.0287, 1.64644788], [1517039460000, 0.0287, 0.0287, 0.0287, 0.0287, 0.09644534], [1517039520000, 0.0287, 0.0287, 0.02859445, 0.0287, 1.62585838], [1517039580000, 0.02859236, 0.02859236, 0.02859236, 0.02859236, 1.15710595], [1517039640000, 0.02865001, 0.0287, 0.02865, 0.0287, 18.20428537], [1517039700000, 0.0287, 0.0287, 0.02865, 0.0287, 2.25836503], [1517039760000, 0.0287, 0.0287, 0.02865, 0.0287, 0.84830534], [1517039820000, 0.0287, 0.0287, 0.02865, 0.02865, 0.57696388], [1517039880000, 0.02865, 0.0287, 0.02865, 0.0287, 1.2849478], [1517039940000, 0.0287, 0.0287, 0.0287, 0.0287, 2.03848194], [1517040000000, 0.0287, 0.0287, 0.0287, 0.0287, 0.77732582], [1517040060000, 0.0287, 0.0287, 0.0287, 0.0287, 1.38691399], [1517040240000, 0.02866, 0.02866, 0.02865001, 0.02865001, 10.00120606], [1517040300000, 0.0287, 0.0287, 0.0287, 0.0287, 0.34843205], [1517040360000, 0.0287, 0.0287, 0.0287, 0.0287, 0.28186912], [1517040540000, 0.0287, 0.0287, 0.0287, 0.0287, 0.42024519], [1517040600000, 0.0287, 0.0287, 0.0287, 0.0287, 1.49378808], [1517040660000, 0.0287, 0.02875, 0.02865005, 0.02865005, 26.0247548], [1517040720000, 0.02875, 0.02875, 0.02865005, 0.02865005, 1.95705263], [1517040840000, 0.02875, 0.02875, 0.02870002, 0.02870002, 4.48503865], [1517040900000, 0.02870002, 0.02870002, 0.02870002, 0.02870002, 1.76351682], [1517040960000, 0.02870002, 0.0291682, 0.02870002, 0.0291682, 257.41935484], [1517041020000, 0.02870002, 0.02870002, 0.02870002, 0.02870002, 0.04295066], [1517041080000, 0.02879999, 0.02879999, 0.02875501, 0.02875501, 0.11367622], [1517041140000, 0.02875501, 0.0288, 0.02875501, 0.0288, 0.23384727], [1517041200000, 0.0287101, 0.0288, 0.02871, 0.0288, 14.71071593], [1517041320000, 0.0288, 0.02888632, 0.02872641, 0.02872641, 0.50978475], [1517041380000, 0.02872641, 0.02872641, 0.02872641, 0.02872641, 6.11914185], [1517041500000, 0.02885, 0.02893371, 0.02885, 0.02893219, 1.38559587], [1517041560000, 0.028875, 0.028875, 0.02872644, 0.02872645, 0.71922038], [1517041620000, 0.02872645, 0.02872645, 0.02871003, 0.02871003, 0.8923642], [1517041680000, 0.02871003, 0.02896597, 0.02871003, 0.02896597, 2.44920296], [1517041740000, 0.02873874, 0.02873874, 0.02873874, 0.02873874, 0.03840128], [1517041800000, 0.02873874, 0.02887162, 0.02873874, 0.02887161, 0.69432397], [1517041860000, 0.02887159, 0.02893416, 0.02887159, 0.02893416, 2.0], [1517041920000, 0.02893316, 0.02893316, 0.02884017, 0.02884017, 0.0925533], [1517041980000, 0.02893289, 0.02904995, 0.02884018, 0.02884019, 3.35868426], [1517042100000, 0.02884019, 0.02892714, 0.02884019, 0.02892714, 0.34673823], [1517042160000, 0.02884019, 0.02884019, 0.02884019, 0.02884019, 0.03026618], [1517042220000, 0.028975, 0.02904398, 0.028975, 0.02904398, 0.46471973], [1517042280000, 0.02871404, 0.02871424, 0.02871404, 0.02871424, 0.08484675], [1517042400000, 0.02877398, 0.02896472, 0.02877398, 0.02896472, 0.69507192], [1517042520000, 0.02871119, 0.02871119, 0.02871119, 0.02871119, 0.02348213], [1517042580000, 0.02896332, 0.02896332, 0.02896332, 0.02896332, 0.23260527], [1517042640000, 0.02871208, 0.02871208, 0.02871208, 0.02871208, 0.07670425], [1517042700000, 0.02871269, 0.02871269, 0.02871269, 0.02871269, 0.34813244], [1517042940000, 0.02889994, 0.02889994, 0.02889994, 0.02889994, 0.04265604], [1517043000000, 0.02889996, 0.02889999, 0.02889996, 0.02889999, 2.07612456], [1517043060000, 0.02874022, 0.02874022, 0.02871, 0.02871002, 7.3558487], [1517043240000, 0.02889999, 0.02889999, 0.02889999, 0.02889999, 0.03590614], [1517043300000, 0.02889986, 0.02889986, 0.02889985, 0.02889985, 1.73392333], [1517043480000, 0.028899, 0.0289, 0.028899, 0.02889968, 1.65351869], [1517043600000, 0.02871001, 0.02889892, 0.02871, 0.02889888, 2.45070366], [1517043660000, 0.02889887, 0.02889887, 0.02889887, 0.02889887, 0.34603393], [1517043720000, 0.02889859, 0.02889859, 0.02889859, 0.02889859, 0.06574687], [1517043780000, 0.02889815, 0.02889815, 0.02889814, 0.02889814, 66.23624736], [1517043840000, 0.02871001, 0.02871001, 0.02871001, 0.02871001, 0.31], [1517043900000, 0.028884, 0.028884, 0.02879615, 0.02879615, 0.73063933], [1517043960000, 0.028876, 0.028876, 0.02879615, 0.02879615, 0.09168015], [1517044200000, 0.02871002, 0.02879614, 0.02871001, 0.028788, 7.63225474], [1517044260000, 0.02871001, 0.02871001, 0.0287, 0.0287, 3.4553192], [1517044320000, 0.028788, 0.028788, 0.028788, 0.028788, 2.00700299], [1517044380000, 0.028788, 0.028788, 0.028675, 0.028788, 0.87769068], [1517044440000, 0.028788, 0.028788, 0.028675, 0.028675, 0.24212514], [1517044500000, 0.028675, 0.02879615, 0.028675, 0.02879614, 1.49151751], [1517044560000, 0.02879614, 0.02879614, 0.02879613, 0.02879614, 0.17755673], [1517044680000, 0.02865002, 0.02865002, 0.02865002, 0.02865002, 0.18090912], [1517044740000, 0.02865002, 0.02865002, 0.02848711, 0.02865002, 15.61979869], [1517044800000, 0.02865002, 0.02879596, 0.02865002, 0.02879588, 1.78371598], [1517044980000, 0.028625, 0.028625, 0.028625, 0.028625, 3.42258568], [1517045040000, 0.028625, 0.028625, 0.028625, 0.028625, 0.038549], [1517045100000, 0.028625, 0.02868, 0.028625, 0.02868, 1.30032147], [1517045160000, 0.02860001, 0.02860001, 0.0286, 0.0286, 4.28388334], [1517045220000, 0.028575, 0.02867996, 0.0285, 0.02867996, 3.68800645], [1517045400000, 0.02867916, 0.02867916, 0.02867904, 0.02867904, 8.19734533], [1517045460000, 0.02867898, 0.02867898, 0.02867898, 0.02867898, 0.34868597], [1517045520000, 0.02867894, 0.02867894, 0.02867894, 0.02867894, 0.11835137], [1517045580000, 0.02855, 0.02867892, 0.02855, 0.02867892, 3.93028741], [1517045700000, 0.02867891, 0.02867898, 0.02867891, 0.02867898, 5.9813804], [1517045760000, 0.02867898, 0.02867898, 0.02867898, 0.02867898, 1.3541373], [1517045820000, 0.02867898, 0.02867898, 0.02867892, 0.02867892, 5.473108], [1517045880000, 0.02867892, 0.02867892, 0.02867892, 0.02867892, 0.03742228], [1517045940000, 0.02867892, 0.02867898, 0.02867892, 0.02867898, 4.258751], [1517046000000, 0.02867898, 0.02878, 0.02867898, 0.02878, 1.08321228], [1517046120000, 0.02878, 0.02878, 0.02878, 0.02878, 1.52085071], [1517046240000, 0.02859229, 0.02859229, 0.02859229, 0.02859229, 0.1478887], [1517046300000, 0.02878, 0.02878, 0.02878, 0.02878, 0.75312309], [1517046360000, 0.0287, 0.0287, 0.0287, 0.0287, 0.03855798], [1517046420000, 0.0287, 0.0287, 0.0287, 0.0287, 0.30638517], [1517046600000, 0.02877997, 0.02878, 0.02877997, 0.02878, 0.69492702], [1517046780000, 0.02878, 0.02878, 0.02878, 0.02878, 0.02258513], [1517046840000, 0.02878, 0.02878, 0.0287, 0.0287, 5.13618162], [1517046900000, 0.02878, 0.02878, 0.02878, 0.02878, 0.69492702], [1517046960000, 0.02878, 0.02878, 0.02878, 0.02878, 0.25655097], [1517047020000, 0.02878, 0.02878, 0.0287, 0.0287, 8.28913472], [1517047080000, 0.02877992, 0.02877992, 0.02877992, 0.02877992, 0.18019643], [1517047140000, 0.0287, 0.0287, 0.0287, 0.0287, 0.58749743], [1517047200000, 0.0287, 0.0287, 0.0287, 0.0287, 0.6968641], [1517047380000, 0.02863399, 0.02863399, 0.02860434, 0.02863399, 0.52711131], [1517047440000, 0.02863399, 0.02869966, 0.0285614, 0.0285614, 1.22644604], [1517047500000, 0.02860434, 0.02869994, 0.02860434, 0.02869994, 1.14306051], [1517047800000, 0.02869848, 0.02869848, 0.02848709, 0.02848709, 12.5282632], [1517047860000, 0.02848709, 0.02848709, 0.02848709, 0.02848709, 0.18320356], [1517048100000, 0.02869552, 0.02869552, 0.02869534, 0.02869534, 2.47054272], [1517048340000, 0.02869326, 0.02869326, 0.02869326, 0.02869326, 0.03510552], [1517048520000, 0.0286918, 0.0286918, 0.0286918, 0.0286918, 0.43784764], [1517048580000, 0.02869144, 0.02869144, 0.02869144, 0.02869144, 0.11831293], [1517048640000, 0.02869096, 0.02869096, 0.02869096, 0.02869096, 0.0375763], [1517048700000, 0.02869051, 0.02869326, 0.02853596, 0.02853596, 10.39746318], [1517048880000, 0.02853596, 0.02869292, 0.02853596, 0.02869292, 0.80793635], [1517049000000, 0.02869231, 0.02869231, 0.02862434, 0.0286923, 6.06378024], [1517049060000, 0.02859689, 0.02859689, 0.02859689, 0.02859689, 0.03855314], [1517049120000, 0.02859689, 0.02859689, 0.02859689, 0.02859689, 0.03855314], [1517049180000, 0.02859689, 0.02859689, 0.02859689, 0.02859689, 0.08], [1517049300000, 0.02859689, 0.02868645, 0.02857797, 0.02868634, 2.42971353], [1517049360000, 0.02859689, 0.02859689, 0.0285, 0.0285, 4.11978], [1517049420000, 0.0285, 0.0285, 0.0285, 0.0285, 1.56477989], [1517049540000, 0.02868523, 0.02868523, 0.02848709, 0.02848709, 1.53703431], [1517049600000, 0.02868503, 0.02868503, 0.02836, 0.02853621, 6.46907886], [1517049660000, 0.02853621, 0.02853621, 0.02853621, 0.02853621, 1.79368306], [1517049720000, 0.0285362, 0.02853621, 0.0285362, 0.02853621, 0.10599262], [1517049780000, 0.0285362, 0.0285362, 0.0285362, 0.0285362, 0.40456051], [1517049900000, 0.02853621, 0.02853621, 0.02853621, 0.02853621, 4.35566023], [1517049960000, 0.02853621, 0.02853621, 0.02853621, 0.02853621, 2.77827538], [1517050080000, 0.02853621, 0.02853621, 0.02853621, 0.02853621, 0.06605708], [1517050140000, 0.02853621, 0.02853621, 0.02853621, 0.02853621, 0.39594606], [1517050200000, 0.02853621, 0.02858808, 0.02853621, 0.02858803, 2.45302456], [1517050320000, 0.02845, 0.02845, 0.0283, 0.0283, 5.75219019], [1517050380000, 0.02858829, 0.028697, 0.02858829, 0.028697, 12.35046796], [1517050500000, 0.02869683, 0.02869683, 0.02869677, 0.02869677, 1.3938836], [1517050560000, 0.0286967, 0.02869671, 0.02837825, 0.02837825, 0.58006777], [1517050800000, 0.02854411, 0.02868373, 0.02846133, 0.02868373, 0.73588211], [1517050860000, 0.02868374, 0.02868374, 0.02868329, 0.02868329, 0.7356075], [1517050980000, 0.02867485, 0.02867485, 0.02842416, 0.02867478, 0.88067607], [1517051100000, 0.02842416, 0.02866582, 0.02830001, 0.028375, 7.65792869], [1517051160000, 0.028375, 0.02848184, 0.0283, 0.02830001, 2.74985975], [1517051220000, 0.02835, 0.02848184, 0.02830001, 0.02832501, 0.79984586], [1517051280000, 0.02832511, 0.0286468, 0.02832511, 0.02832548, 3.47767396], [1517051340000, 0.02832565, 0.02864597, 0.02832565, 0.02864597, 0.19781847], [1517051400000, 0.02864539, 0.02864539, 0.02864539, 0.02864539, 0.34909497], [1517051460000, 0.02864502, 0.02864502, 0.02864482, 0.02864482, 3.31774151], [1517051580000, 0.02864388, 0.02864388, 0.02864388, 0.02864388, 0.5], [1517051700000, 0.02864345, 0.02864539, 0.02864344, 0.02864539, 4.5483079], [1517051760000, 0.02864319, 0.02869183, 0.02864319, 0.02869183, 8.51778021], [1517051820000, 0.02869183, 0.02869184, 0.028675, 0.028675, 8.39167213], [1517051880000, 0.02859033, 0.02869673, 0.02859033, 0.02869673, 3.02152159], [1517051940000, 0.02869673, 0.02869673, 0.02869664, 0.02869664, 1.50400299], [1517052000000, 0.0284128, 0.02869673, 0.0284128, 0.02869672, 6.25536382], [1517052060000, 0.0286967, 0.0286967, 0.0286967, 0.0286967, 1.0], [1517052120000, 0.02869668, 0.02869689, 0.02848, 0.02848, 1.64264407], [1517052180000, 0.02869689, 0.02869689, 0.02869689, 0.02869689, 0.194], [1517052240000, 0.02869687, 0.02869687, 0.02861, 0.02861, 0.09334803], [1517052300000, 0.02861, 0.02869688, 0.02850801, 0.02869688, 3.35055636], [1517052360000, 0.02869688, 0.02869688, 0.0285087, 0.0285087, 6.36132055], [1517052480000, 0.02869688, 0.02869688, 0.02869688, 0.02869688, 0.45102816], [1517052540000, 0.02869688, 0.02869688, 0.02869688, 0.02869688, 0.04407021], [1517052600000, 0.02869688, 0.02869688, 0.02869688, 0.02869688, 2.10599725], [1517052660000, 0.02869688, 0.02869689, 0.02850927, 0.02850927, 1.18028076], [1517052720000, 0.02869688, 0.02869689, 0.02869688, 0.02869689, 1.29020794], [1517052840000, 0.02850928, 0.028694, 0.02839693, 0.028694, 2.52929922], [1517052900000, 0.02869085, 0.02869085, 0.02837507, 0.02839128, 2.10619756], [1517052960000, 0.02869063, 0.02869063, 0.0283794, 0.02837941, 3.01314783], [1517053020000, 0.02837941, 0.02869003, 0.02835017, 0.02835028, 1.5680955], [1517053080000, 0.0285, 0.0285, 0.0285, 0.0285, 0.17543859], [1517053200000, 0.0285, 0.0285, 0.02849998, 0.02849998, 1.52382684], [1517053260000, 0.02849997, 0.02849998, 0.02832605, 0.02835001, 13.29532873], [1517053320000, 0.02835001, 0.02849998, 0.02835001, 0.02849998, 0.8845438], [1517053380000, 0.02849998, 0.02849998, 0.02849998, 0.02849998, 8.60231902], [1517053500000, 0.0285, 0.0285, 0.02832618, 0.0285, 5.69556663], [1517053620000, 0.02832604, 0.02832604, 0.02832604, 0.02832604, 0.04606297], [1517053680000, 0.02849, 0.02849, 0.02849, 0.02849, 0.05705722], [1517053740000, 0.02849, 0.02849, 0.02849, 0.02849, 2.1060021], [1517053800000, 0.02849, 0.02849, 0.02834761, 0.02834761, 0.69229279], [1517053860000, 0.02849, 0.02849, 0.02849, 0.02849, 4.12364622], [1517053920000, 0.02849, 0.02849, 0.0283476, 0.0283476, 2.77770378], [1517054040000, 0.02849, 0.02849, 0.02849, 0.02849, 2.97988397], [1517054100000, 0.02849, 0.02849, 0.02849, 0.02849, 0.42870711], [1517054160000, 0.02849, 0.02849, 0.02849, 0.02849, 0.12233191], [1517054220000, 0.02849, 0.02849, 0.02849, 0.02849, 0.07770676], [1517054280000, 0.02849, 0.02849, 0.02837604, 0.02849, 0.90932216], [1517054340000, 0.02837604, 0.02837604, 0.02832605, 0.028361, 11.26458413], [1517054400000, 0.028361, 0.02844336, 0.02834937, 0.02844336, 6.12416062], [1517054460000, 0.02844336, 0.02849, 0.02844336, 0.02849, 1.52104541], [1517054520000, 0.028507, 0.02850999, 0.028507, 0.02850999, 0.56405748], [1517054580000, 0.02850999, 0.02853551, 0.02834961, 0.02850999, 11.01265511], [1517054640000, 0.02834942, 0.02834942, 0.02834942, 0.02834942, 0.0887752], [1517054760000, 0.02859297, 0.02863805, 0.02859297, 0.02863805, 0.47866753], [1517055000000, 0.02863494, 0.02863494, 0.02863494, 0.02863494, 0.07802274], [1517055060000, 0.02863454, 0.02863454, 0.02863454, 0.02863454, 0.02409212], [1517055120000, 0.02863402, 0.02863402, 0.02835214, 0.02835214, 1.14364872], [1517055180000, 0.02849074, 0.02849074, 0.02849074, 0.02849074, 0.15], [1517055240000, 0.02863365, 0.02863804, 0.02863365, 0.02863804, 0.21120547], [1517055300000, 0.02849082, 0.0286381, 0.02836093, 0.0286381, 3.33904085], [1517055360000, 0.0286381, 0.0286381, 0.028628, 0.028628, 0.11264044], [1517055420000, 0.02837217, 0.02837217, 0.02837217, 0.02837217, 0.12], [1517055480000, 0.02865, 0.02865, 0.02837357, 0.02837368, 100.08185534], [1517055540000, 0.02865, 0.02865, 0.02864968, 0.02864968, 0.19251365], [1517055600000, 0.02864944, 0.02864944, 0.02864944, 0.02864944, 0.34904623], [1517055900000, 0.02837368, 0.02845523, 0.02835284, 0.02845523, 1.61677065], [1517055960000, 0.02835285, 0.02845523, 0.02835285, 0.02845523, 7.98695031], [1517056020000, 0.02844999, 0.02845523, 0.02844999, 0.02845523, 0.27845827], [1517056080000, 0.02845523, 0.02852194, 0.02845523, 0.02852194, 5.29711558], [1517056140000, 0.02852194, 0.02852194, 0.02852194, 0.02852194, 0.17677976], [1517056200000, 0.02852194, 0.02858712, 0.02845002, 0.02858712, 2.24278952], [1517056260000, 0.02858719, 0.02858719, 0.02858719, 0.02858719, 0.03524393], [1517056320000, 0.02863888, 0.02865824, 0.02858719, 0.02858719, 2.58623885], [1517056380000, 0.02845001, 0.02858719, 0.02835285, 0.02858719, 4.14423318], [1517056440000, 0.02865732, 0.02865732, 0.02865722, 0.02865722, 4.27616581], [1517056560000, 0.02866372, 0.02866372, 0.02858719, 0.02858719, 0.20983874], [1517056620000, 0.02858719, 0.02858719, 0.02858719, 0.02858719, 0.12619048], [1517056680000, 0.02866315, 0.02866315, 0.02866315, 0.02866315, 0.09030959], [1517056740000, 0.02866254, 0.02866255, 0.02866254, 0.02866255, 1.58300353], [1517056860000, 0.02845029, 0.02845029, 0.02845029, 0.02845029, 0.3], [1517056920000, 0.0286614, 0.0286614, 0.0286614, 0.0286614, 1.0], [1517057040000, 0.028675, 0.028675, 0.028675, 0.028675, 2.59436453], [1517057100000, 0.02857658, 0.0286748, 0.02857658, 0.0286748, 0.15623409], [1517057160000, 0.0286748, 0.028675, 0.0286748, 0.02867489, 5.50158837], [1517057220000, 0.02867489, 0.028675, 0.0286748, 0.0286748, 1.43827576], [1517057280000, 0.0286748, 0.0286748, 0.0286748, 0.0286748, 0.0771608], [1517057340000, 0.0286748, 0.02867481, 0.0286748, 0.02867481, 1.14215954], [1517057400000, 0.02869687, 0.02869689, 0.02867481, 0.02869689, 2.45152468], [1517057460000, 0.02869689, 0.02869689, 0.02869688, 0.02869688, 0.23161781], [1517057520000, 0.02869686, 0.02869686, 0.02869686, 0.02869686, 0.19503961], [1517057580000, 0.02869686, 0.02873, 0.0286748, 0.02873, 38.79046888], [1517057640000, 0.02872499, 0.02872499, 0.02872499, 0.02872499, 0.09306389], [1517057700000, 0.02872499, 0.02872499, 0.02859812, 0.02859812, 0.16216873], [1517057760000, 0.028725, 0.028725, 0.028725, 0.028725, 1.17819658], [1517057820000, 0.028725, 0.028725, 0.028725, 0.028725, 2.02974605], [1517057880000, 0.02873, 0.02878, 0.028725, 0.02872999, 6.7758766], [1517057940000, 0.028725, 0.028725, 0.028725, 0.028725, 4.76711493], [1517058000000, 0.028725, 0.02877499, 0.028725, 0.028725, 15.92416029], [1517058060000, 0.02877499, 0.02877499, 0.028725, 0.028725, 7.29630293], [1517058120000, 0.028725, 0.028775, 0.02847444, 0.02874067, 9.59172405], [1517058240000, 0.02874019, 0.02874019, 0.02874019, 0.02874019, 0.08561698], [1517058300000, 0.028737, 0.02873949, 0.028737, 0.02873949, 0.16175795], [1517058360000, 0.02874043, 0.02874063, 0.028739, 0.028739, 0.1403933], [1517058420000, 0.028739, 0.02877926, 0.02848704, 0.02848704, 1.68999433], [1517058600000, 0.02877939, 0.02877939, 0.02877939, 0.02877939, 0.34746955], [1517058660000, 0.02877934, 0.02877934, 0.02877925, 0.02877925, 10.22925563], [1517058780000, 0.02877884, 0.02877884, 0.02877884, 0.02877884, 0.03457482], [1517058900000, 0.02850335, 0.02850501, 0.02850333, 0.02850501, 4.79463667], [1517058960000, 0.02877859, 0.02877859, 0.02877851, 0.02877851, 0.08580419], [1517059020000, 0.02877859, 0.02877859, 0.028519, 0.02863896, 4.4857796], [1517059080000, 0.02863896, 0.02874071, 0.02863896, 0.02874071, 2.19346513], [1517059140000, 0.02877999, 0.02877999, 0.0285212, 0.0285212, 7.46704032], [1517059200000, 0.028518, 0.02852001, 0.028518, 0.02852001, 2.63071498], [1517059260000, 0.02852104, 0.02852104, 0.02852104, 0.02852104, 0.14053473], [1517059380000, 0.02877842, 0.02877842, 0.02877842, 0.02877842, 0.59876105], [1517059440000, 0.028778, 0.02877842, 0.028778, 0.02877842, 1.2263993], [1517059500000, 0.02855019, 0.02855019, 0.02855019, 0.02855019, 0.7], [1517059560000, 0.02855019, 0.02855019, 0.02855019, 0.02855019, 0.34956386], [1517059620000, 0.02863049, 0.02863049, 0.02863049, 0.02863049, 0.07712533], [1517059680000, 0.02863049, 0.02863049, 0.02863049, 0.02863049, 0.03850854], [1517059740000, 0.02863049, 0.02868275, 0.02863049, 0.02863049, 1.70364715], [1517059800000, 0.02868275, 0.02868275, 0.02868275, 0.02868275, 0.208662], [1517059860000, 0.0287, 0.02874833, 0.0287, 0.02874833, 0.313], [1517059980000, 0.0287, 0.02877208, 0.02863049, 0.02877208, 0.97700593], [1517060040000, 0.02877208, 0.02877208, 0.02877208, 0.02877208, 0.13959888], [1517060100000, 0.02878, 0.02878792, 0.02878, 0.02878792, 0.04525308], [1517060160000, 0.02863049, 0.02863049, 0.02863049, 0.02863049, 0.05522682], [1517060280000, 0.02863049, 0.02863049, 0.02863049, 0.02863049, 1.0], [1517060340000, 0.02878433, 0.02879151, 0.02878433, 0.02879151, 2.4468216], [1517060400000, 0.02879151, 0.02879611, 0.02878433, 0.02878433, 2.09060477], [1517060460000, 0.02878433, 0.02879611, 0.02878433, 0.02878433, 2.12975601], [1517060520000, 0.02878433, 0.02879611, 0.02878433, 0.02878433, 2.05550407], [1517060580000, 0.02878433, 0.02878433, 0.02861516, 0.02861516, 19.80867052], [1517060640000, 0.02861516, 0.02861516, 0.02861516, 0.02861516, 0.03861622], [1517060700000, 0.02861516, 0.02861516, 0.02861516, 0.02861516, 0.21481749], [1517060760000, 0.02861516, 0.02861516, 0.02861516, 0.02861516, 0.11584866], [1517060820000, 0.02861516, 0.02861516, 0.02861516, 0.02861516, 0.80861622], [1517060880000, 0.02861516, 0.02861516, 0.02855019, 0.02861516, 2.5498223], [1517061120000, 0.02861516, 0.02861516, 0.02861516, 0.02861516, 2.49861622], [1517061360000, 0.02861512, 0.02861516, 0.02861512, 0.02861516, 0.03861628], [1517061600000, 0.0286151, 0.0286151, 0.0285502, 0.0285502, 10.19185981], [1517061660000, 0.02863049, 0.02863049, 0.02863049, 0.02863049, 0.88418549], [1517061720000, 0.02863049, 0.02863049, 0.02863049, 0.02863049, 0.11581451], [1517061780000, 0.028781, 0.02879544, 0.028781, 0.02879544, 0.70529098], [1517061840000, 0.02855317, 0.02855317, 0.02855317, 0.02855317, 0.17759042], [1517061960000, 0.02879544, 0.02879544, 0.02878544, 0.02878544, 0.10847948], [1517062020000, 0.02878544, 0.02878544, 0.02878544, 0.02878544, 0.24863366], [1517062080000, 0.02879544, 0.02879615, 0.02879544, 0.02879615, 0.50948365], [1517062140000, 0.02879615, 0.02879615, 0.02878544, 0.02878544, 1.14074461], [1517062200000, 0.02879615, 0.02879615, 0.02879615, 0.02879615, 0.04167224], [1517062260000, 0.02879615, 0.02879615, 0.02878544, 0.02878544, 0.20784011], [1517062320000, 0.02878544, 0.02878544, 0.02878544, 0.02878544, 1.26205071], [1517062380000, 0.02878544, 0.02879615, 0.02878544, 0.02879615, 1.70965535], [1517062440000, 0.02878544, 0.02878544, 0.02878544, 0.02878544, 0.78290114], [1517062500000, 0.02878544, 0.02878544, 0.02878544, 0.02878544, 0.34739833], [1517062560000, 0.02858211, 0.02858211, 0.02858211, 0.02858211, 0.89393369], [1517062620000, 0.02868264, 0.02868264, 0.02868264, 0.02868264, 0.57829441], [1517062680000, 0.02868264, 0.02868264, 0.02868264, 0.02868264, 0.02408961], [1517062740000, 0.02868264, 0.02868264, 0.02868264, 0.02868264, 6.11510865], [1517062800000, 0.02868264, 0.02880382, 0.02868264, 0.0288015, 2.05275875], [1517062860000, 0.02868264, 0.02868264, 0.02868264, 0.02868264, 0.3140019], [1517062920000, 0.02868264, 0.02868264, 0.02868264, 0.02868264, 42.91627896], [1517063040000, 0.0286769, 0.0286769, 0.02860061, 0.02860061, 2.62250952], [1517063100000, 0.0288015, 0.0288015, 0.0288015, 0.0288015, 0.14299442], [1517063160000, 0.0288015, 0.0288015, 0.0288015, 0.0288015, 0.75864825], [1517063340000, 0.02860303, 0.0288015, 0.028603, 0.0288015, 5.03673651], [1517063400000, 0.0288015, 0.0288015, 0.0288015, 0.0288015, 0.05790428], [1517063460000, 0.0288015, 0.0288015, 0.0288015, 0.0288015, 2.97345602], [1517063520000, 0.0288015, 0.0288015, 0.0288015, 0.0288015, 0.08680103], [1517063580000, 0.0288015, 0.02880562, 0.0288015, 0.02880561, 2.40278841], [1517063700000, 0.02861901, 0.02862101, 0.02861901, 0.02862101, 1.8011206], [1517063880000, 0.02880562, 0.02880562, 0.02863211, 0.02863211, 4.1402579], [1517064300000, 0.0288, 0.0288, 0.0288, 0.0288, 1.78297524], [1517064360000, 0.0286848, 0.0288, 0.0286848, 0.0288, 0.13132832], [1517064420000, 0.0286848, 0.0286848, 0.02863673, 0.02863673, 3.920458], [1517064480000, 0.02868482, 0.0288, 0.02868482, 0.0288, 0.60005307], [1517064600000, 0.0288, 0.0288, 0.02868487, 0.02868487, 0.2859308], [1517064720000, 0.02868488, 0.0288, 0.02868488, 0.0288, 5.02213411], [1517064780000, 0.0288, 0.0288, 0.0288, 0.0288, 0.03987122], [1517064960000, 0.0288, 0.0288, 0.0288, 0.0288, 0.29706596], [1517065020000, 0.0288, 0.0288, 0.0288, 0.0288, 0.07656092], [1517065080000, 0.02868488, 0.0288, 0.02868487, 0.0288, 1.27689199], [1517065140000, 0.02868487, 0.02868487, 0.02868487, 0.02868487, 0.4], [1517065200000, 0.0288, 0.0288, 0.0288, 0.0288, 0.45812519], [1517065260000, 0.02868487, 0.02868487, 0.02868487, 0.02868487, 0.0306761], [1517065500000, 0.02868489, 0.02868489, 0.02868481, 0.02868481, 11.8062861], [1517065680000, 0.02868481, 0.02868482, 0.02868481, 0.02868482, 1.00254952], [1517065800000, 0.0288, 0.0288, 0.0288, 0.0288, 0.07592631], [1517065860000, 0.0288, 0.0288, 0.0288, 0.0288, 0.23148214], [1517065980000, 0.0288, 0.0288, 0.0288, 0.0288, 1.64624703], [1517066040000, 0.0288, 0.0288, 0.02868483, 0.02868483, 0.19645539], [1517066100000, 0.0288, 0.0288, 0.02868482, 0.0288, 1.45495691], [1517066220000, 0.0288, 0.0288, 0.02868482, 0.02868482, 0.4568153], [1517066280000, 0.02868483, 0.02868483, 0.02868483, 0.02868483, 0.48], [1517066340000, 0.02868483, 0.02868483, 0.0286848, 0.0286848, 5.46011184], [1517066400000, 0.0288, 0.0288, 0.0286848, 0.0286848, 7.29830691], [1517066460000, 0.0286848, 0.0288, 0.0286848, 0.0286848, 20.56503366], [1517066520000, 0.0288, 0.0288, 0.0288, 0.0288, 0.07848621], [1517066580000, 0.0288, 0.0288, 0.0288, 0.0288, 0.76687033], [1517066640000, 0.0288, 0.0288, 0.0288, 0.0288, 1.03843517], [1517066700000, 0.0288, 0.0288, 0.02868481, 0.02868481, 4.03843517], [1517066760000, 0.0288, 0.02885623, 0.02868481, 0.028825, 9.65884674], [1517066820000, 0.02880562, 0.02880562, 0.02868481, 0.02880562, 0.17248133], [1517066880000, 0.02880562, 0.02880562, 0.02880562, 0.02880562, 0.07687054], [1517066940000, 0.02880562, 0.02880562, 0.02880562, 0.02880562, 0.07687054], [1517067000000, 0.02880562, 0.02880562, 0.02880562, 0.02880562, 0.18083905], [1517067060000, 0.0288056, 0.02880563, 0.02878481, 0.02880563, 4.33851657], [1517067120000, 0.02880561, 0.02880563, 0.02878481, 0.02878481, 1.35252883], [1517067180000, 0.02878481, 0.02878481, 0.02878481, 0.02878481, 0.03843503], [1517067240000, 0.0286848, 0.0286848, 0.0286848, 0.0286848, 3.39166438], [1517067300000, 0.02880557, 0.02880559, 0.0286848, 0.0286848, 1.09741379], [1517067420000, 0.0288055, 0.0288055, 0.0288055, 0.0288055, 0.20829552], [1517067480000, 0.02874515, 0.02880189, 0.02874515, 0.02880189, 6.90462353], [1517067540000, 0.02874515, 0.02879991, 0.02874515, 0.02874515, 93.3146965], [1517067600000, 0.02874515, 0.02874515, 0.02874515, 0.02874515, 1.06940301], [1517067720000, 0.0286848, 0.0286848, 0.02863211, 0.02863211, 38.89527302], [1517067780000, 0.02868479, 0.02868479, 0.02868479, 0.02868479, 0.05192524], [1517067900000, 0.02868479, 0.02868479, 0.0285961, 0.0285961, 1.34119578], [1517067960000, 0.0285961, 0.02863211, 0.0285961, 0.0285961, 2.1212041], [1517068020000, 0.02858594, 0.02863212, 0.02856, 0.02856, 54.85027489], [1517068080000, 0.02856, 0.02856, 0.0285, 0.0285, 51.55570767], [1517068140000, 0.02850002, 0.02863104, 0.0284999, 0.0284999, 19.751177], [1517068200000, 0.0284999, 0.0284999, 0.0284999, 0.0284999, 0.12105836], [1517068260000, 0.0284999, 0.02863058, 0.0284999, 0.0284999, 1.32275012], [1517068320000, 0.0286304, 0.0286304, 0.02845, 0.02845, 1.91214598], [1517068380000, 0.02863007, 0.02863007, 0.02863007, 0.02863007, 0.08508143], [1517068500000, 0.02862882, 0.02862885, 0.0285, 0.02862872, 1.41761435], [1517068560000, 0.0285, 0.0285, 0.02845, 0.0285, 2.44623899], [1517068620000, 0.0285, 0.0285, 0.02845, 0.02845, 0.50485872], [1517068680000, 0.02862297, 0.02862297, 0.02843664, 0.02845, 2.36489337], [1517068740000, 0.02845, 0.02845, 0.02843664, 0.02843664, 6.1175342], [1517068800000, 0.02843664, 0.02845, 0.02843664, 0.02845, 3.20377676], [1517068860000, 0.02845, 0.02845, 0.02835284, 0.02835284, 48.44052762], [1517068920000, 0.02845, 0.02845, 0.02835284, 0.02835284, 3.96355147], [1517068980000, 0.02835, 0.02835, 0.02835, 0.02835, 2.25179864], [1517069040000, 0.02835, 0.02845, 0.0282848, 0.0282848, 325.47383126], [1517069100000, 0.0282848, 0.02834936, 0.0282848, 0.02834936, 11.75703121], [1517069160000, 0.02834936, 0.02834936, 0.02834936, 0.02834936, 0.10384369], [1517069220000, 0.02835001, 0.02845, 0.02835001, 0.02845, 1.67503501], [1517069280000, 0.02845, 0.02845, 0.02831708, 0.02845, 16.75659968], [1517069340000, 0.02845, 0.02845, 0.02845, 0.02845, 0.09980843], [1517069400000, 0.02845, 0.02845, 0.02832701, 0.02845, 2.83188677], [1517069460000, 0.02845, 0.02845, 0.02831708, 0.02831708, 17.88665761], [1517069520000, 0.02831708, 0.02844988, 0.028314, 0.02844988, 54.74249556], [1517069580000, 0.02844988, 0.02844988, 0.0283, 0.02843988, 0.91718698], [1517069640000, 0.02843988, 0.02844988, 0.02843988, 0.02844988, 58.59302874], [1517069700000, 0.02844988, 0.02844999, 0.028312, 0.02844999, 0.59942015], [1517069760000, 0.02831201, 0.02831201, 0.02831002, 0.02831002, 0.5327787], [1517069880000, 0.02844999, 0.02845, 0.02844999, 0.02845, 3.16911162], [1517069940000, 0.02845, 0.02845, 0.02845, 0.02845, 6.0695082], [1517070000000, 0.02845, 0.02845, 0.02844999, 0.02844999, 1.90993514], [1517070060000, 0.02845, 0.02845, 0.02831001, 0.02845, 0.57562189], [1517070120000, 0.02845, 0.02845, 0.02831002, 0.02845, 1.79974667], [1517070180000, 0.02845, 0.02845, 0.02845, 0.02845, 0.39422982], [1517070240000, 0.02845, 0.02845, 0.02845, 0.02845, 0.1190306], [1517070300000, 0.02845, 0.02845, 0.02845, 0.02845, 0.11549733], [1517070360000, 0.02831103, 0.02831103, 0.02831103, 0.02831103, 0.4], [1517070480000, 0.02845, 0.02845, 0.02845, 0.02845, 2.24113462], [1517070540000, 0.02845, 0.02845, 0.02845, 0.02845, 0.39314587], [1517070720000, 0.02831103, 0.02831103, 0.02831103, 0.02831103, 5.22], [1517070900000, 0.02831103, 0.02831103, 0.02831103, 0.02831103, 0.13181743], [1517070960000, 0.02844993, 0.02844993, 0.02833613, 0.02833613, 1.98882899], [1517071020000, 0.02836447, 0.02836447, 0.02833613, 0.02833613, 3.11784056], [1517071080000, 0.02833613, 0.02833613, 0.02833613, 0.02833613, 0.07788536], [1517071140000, 0.02833613, 0.02833613, 0.02833613, 0.02833613, 47.78901026], [1517071200000, 0.02831104, 0.02833613, 0.02831104, 0.02833613, 3.11883278], [1517071260000, 0.02833613, 0.02833613, 0.02833612, 0.02833612, 2.06192835], [1517071320000, 0.02833612, 0.02833612, 0.02833612, 0.02833612, 0.20934318], [1517071380000, 0.02833613, 0.02833613, 0.02833613, 0.02833613, 7.93126063], [1517071440000, 0.02833613, 0.02833613, 0.02833613, 0.02833613, 6.78939382], [1517071500000, 0.02833613, 0.02833613, 0.02832006, 0.02832006, 10.23010799], [1517071560000, 0.02832006, 0.02833613, 0.02832006, 0.02833613, 2.06378405], [1517071620000, 0.02833613, 0.02833613, 0.028326, 0.028326, 0.99045312], [1517071680000, 0.028326, 0.028326, 0.028326, 0.028326, 0.16592529], [1517071740000, 0.028326, 0.028326, 0.028326, 0.028326, 2.53246938], [1517071800000, 0.02832011, 0.02832599, 0.02832011, 0.02832013, 33.34370149], [1517071860000, 0.02832013, 0.02832013, 0.02832013, 0.02832013, 0.49723756], [1517071980000, 0.02832599, 0.02832599, 0.02832013, 0.02832013, 3.60447978], [1517072040000, 0.02832013, 0.02832013, 0.02832013, 0.02832013, 0.89829811], [1517072100000, 0.02832599, 0.02832599, 0.02832599, 0.02832599, 3.25612171], [1517072160000, 0.02832599, 0.028326, 0.02832113, 0.028326, 27.09], [1517072220000, 0.028326, 0.028326, 0.028326, 0.028326, 0.90585727], [1517072280000, 0.028326, 0.02833613, 0.028326, 0.02833613, 1.32006541], [1517072340000, 0.028326, 0.02833613, 0.02832113, 0.02832113, 1.55745809], [1517072400000, 0.02832113, 0.02833613, 0.02832113, 0.02832113, 0.6429964], [1517072460000, 0.02833613, 0.02833613, 0.02832113, 0.02832113, 3.02136718], [1517072520000, 0.0283361, 0.02833613, 0.028311, 0.02833613, 30.25945287], [1517072580000, 0.0282848, 0.0282848, 0.0282848, 0.0282848, 0.03894246], [1517072640000, 0.02833612, 0.02833612, 0.02833612, 0.02833612, 0.09186643], [1517072700000, 0.02833612, 0.02833612, 0.02833612, 0.02833612, 1.52999784], [1517072760000, 0.02833612, 0.02833613, 0.0282848, 0.0282848, 2.58418267], [1517072820000, 0.02833612, 0.02833612, 0.02833612, 0.02833612, 0.04160359], [1517072940000, 0.0282848, 0.0282848, 0.0282396, 0.028275, 6.76966809], [1517073000000, 0.028275, 0.028275, 0.028275, 0.028275, 0.35366931], [1517073060000, 0.028275, 0.028275, 0.02825, 0.02825, 0.12780928], [1517073120000, 0.028275, 0.028275, 0.028275, 0.028275, 0.16976127], [1517073180000, 0.028275, 0.028275, 0.028275, 0.028275, 0.50121768], [1517073240000, 0.02825002, 0.02825002, 0.02825002, 0.02825002, 0.44029588], [1517073300000, 0.02825002, 0.02825002, 0.02825002, 0.02825002, 0.3484048], [1517073360000, 0.028275, 0.028275, 0.02825002, 0.02825002, 0.53552384], [1517073420000, 0.02825001, 0.028275, 0.02825001, 0.028275, 1.50661971], [1517073480000, 0.02827499, 0.02827499, 0.02825002, 0.02825002, 0.99228451], [1517073540000, 0.02825002, 0.02825002, 0.02820783, 0.02820783, 1.14459686], [1517073600000, 0.02820783, 0.02820783, 0.02820783, 0.02820783, 0.49477735], [1517073660000, 0.028225, 0.028225, 0.02820783, 0.02820783, 1.80596495], [1517073720000, 0.0282078, 0.02820783, 0.02820118, 0.02820783, 1.56731649], [1517073780000, 0.02820783, 0.02820784, 0.02820783, 0.02820783, 3.59235323], [1517073900000, 0.028205, 0.028205, 0.028205, 0.028205, 0.07818884], [1517073960000, 0.028205, 0.028205, 0.028205, 0.028205, 0.43827778], [1517074020000, 0.028205, 0.02820784, 0.0282, 0.0282, 13.71058877], [1517074080000, 0.0282, 0.0282, 0.02815009, 0.02815009, 9.92067011], [1517074140000, 0.0282, 0.0282, 0.02815009, 0.02815009, 8.66567081], [1517074200000, 0.02815009, 0.0282, 0.02815009, 0.0282, 1.43380404], [1517074260000, 0.0282, 0.0282, 0.02815007, 0.02815007, 25.45555034], [1517074320000, 0.02815007, 0.02815007, 0.02815007, 0.02815007, 9.67426503], [1517074380000, 0.02815007, 0.0282, 0.02815007, 0.0282, 0.51917737], [1517074440000, 0.0282, 0.0282, 0.0282, 0.0282, 5.60907451], [1517074500000, 0.0282, 0.0282, 0.0282, 0.0282, 0.43430816], [1517074560000, 0.0282, 0.0282, 0.0282, 0.0282, 0.15489351], [1517074620000, 0.02815108, 0.02815108, 0.02815108, 0.02815108, 0.2199921], [1517074680000, 0.02815108, 0.0282, 0.02815007, 0.0282, 41.77112345], [1517074740000, 0.0282, 0.0282, 0.0282, 0.0282, 0.0391653], [1517074800000, 0.0282, 0.0282, 0.028199, 0.028199, 0.32559271], [1517074860000, 0.02815007, 0.0282, 0.02815007, 0.0282, 3.21855612], [1517074920000, 0.028199, 0.0282, 0.028199, 0.0282, 3.90782985], [1517074980000, 0.028199, 0.0282, 0.02815007, 0.0282, 7.1751365], [1517075040000, 0.0282, 0.0282, 0.0282, 0.0282, 0.03546099], [1517075100000, 0.0282, 0.0282, 0.0282, 0.0282, 1.15470601], [1517075160000, 0.0282, 0.0282, 0.0282, 0.0282, 59.95940626], [1517075220000, 0.0282, 0.0282, 0.0282, 0.0282, 17.26706775], [1517075280000, 0.0282, 0.0282, 0.028199, 0.028199, 2.5227694], [1517075340000, 0.028199, 0.028199, 0.02815014, 0.028199, 4.07904009], [1517075400000, 0.028199, 0.0282, 0.028199, 0.0282, 8.0739211], [1517075460000, 0.0282, 0.0282, 0.0282, 0.0282, 2.92597423], [1517075520000, 0.0282, 0.0282, 0.0282, 0.0282, 0.07819208], [1517075580000, 0.0282, 0.0282, 0.0282, 0.0282, 19.89019585], [1517075640000, 0.0282, 0.0282, 0.0282, 0.0282, 0.09922444], [1517075700000, 0.0282, 0.0282, 0.0282, 0.0282, 0.30214148], [1517075760000, 0.0282, 0.0282, 0.0282, 0.0282, 5.27473965], [1517075820000, 0.0282, 0.0282, 0.02819999, 0.0282, 55.10627121], [1517075880000, 0.0282, 0.0282, 0.0282, 0.0282, 0.85550375], [1517075940000, 0.0282, 0.0282, 0.0282, 0.0282, 0.07819208], [1517076000000, 0.0282, 0.0282, 0.0282, 0.0282, 4.16685661], [1517076060000, 0.0282, 0.0282, 0.0282, 0.0282, 0.07819208], [1517076120000, 0.0282, 0.0282, 0.0282, 0.0282, 0.07819208], [1517076180000, 0.0282, 0.0282, 0.0282, 0.0282, 14.74235354], [1517076240000, 0.0282, 0.0282, 0.02819999, 0.0282, 11.30780673], [1517076300000, 0.0282, 0.0282, 0.02819999, 0.0282, 1.2541068], [1517076360000, 0.0282, 0.0282, 0.0282, 0.0282, 0.03909604], [1517076420000, 0.0282, 0.0282, 0.0282, 0.0282, 2.26229242], [1517076480000, 0.02819999, 0.0282, 0.02819999, 0.02819999, 1.05744005], [1517076600000, 0.0282, 0.0282, 0.02819999, 0.02819999, 0.82990063], [1517076660000, 0.02819999, 0.0282, 0.02819999, 0.0282, 0.12212646], [1517076720000, 0.0282, 0.0282, 0.02819999, 0.02819999, 0.13398046], [1517076780000, 0.028195, 0.02819999, 0.028195, 0.02819999, 0.26791767], [1517076840000, 0.02819999, 0.0282, 0.02819999, 0.0282, 1.4641144], [1517076900000, 0.0282, 0.0282, 0.02819505, 0.02819505, 0.90555347], [1517076960000, 0.0282, 0.0282, 0.0282, 0.0282, 0.4494005], [1517077020000, 0.0282, 0.0282, 0.028195, 0.0282, 34.2264541], [1517077080000, 0.0282, 0.0282, 0.02819506, 0.0282, 2.76273749], [1517077140000, 0.0282, 0.0282, 0.0282, 0.0282, 0.0782055], [1517077200000, 0.0282, 0.0282, 0.0282, 0.0282, 15.78345377], [1517077260000, 0.0282, 0.0282, 0.0282, 0.0282, 6.2941831], [1517077320000, 0.0282, 0.0282, 0.0282, 0.0282, 0.0782055], [1517077380000, 0.02819999, 0.02819999, 0.02819999, 0.02819999, 0.07820554], [1517077440000, 0.02819999, 0.0282, 0.02819999, 0.0282, 0.5554705], [1517077500000, 0.0282, 0.0282, 0.0282, 0.0282, 0.0782055], [1517077560000, 0.0282, 0.0282, 0.0282, 0.0282, 5.3782055], [1517077620000, 0.0282, 0.0282, 0.02819512, 0.02819513, 5.08223671], [1517077680000, 0.0282, 0.0282, 0.02819515, 0.02819515, 0.20139457], [1517077740000, 0.0282, 0.0282, 0.02819515, 0.0282, 51.8136935], [1517077800000, 0.0282, 0.0282, 0.0282, 0.0282, 0.47787203], [1517077860000, 0.0282, 0.0282, 0.0282, 0.0282, 17.36754394], [1517077920000, 0.0282, 0.0284, 0.0282, 0.0284, 21.44122139], [1517077980000, 0.02844998, 0.02844998, 0.02844998, 0.02844998, 0.0473248], [1517078040000, 0.02844998, 0.02844998, 0.0284, 0.02844998, 1.50596331], [1517078100000, 0.028475, 0.02867101, 0.028475, 0.028475, 4.74769039], [1517078160000, 0.02862474, 0.02862474, 0.0285, 0.0285, 3.21411521], [1517078220000, 0.0285, 0.02862433, 0.0285, 0.0285, 12.57045833], [1517078280000, 0.02855, 0.02862414, 0.0285, 0.0285, 0.99477735], [1517078400000, 0.02857494, 0.02857494, 0.02857494, 0.02857494, 1.41424276], [1517078460000, 0.02857494, 0.028575, 0.02847813, 0.028575, 3.12717121], [1517078520000, 0.0283688, 0.02857491, 0.0283118, 0.02857491, 0.36035194], [1517078580000, 0.02831225, 0.02831225, 0.02831225, 0.02831225, 0.23739097], [1517078700000, 0.02841807, 0.02841807, 0.02841806, 0.02841806, 0.34986241], [1517078760000, 0.02841806, 0.02841806, 0.02841803, 0.02841806, 1.75234982], [1517078820000, 0.02841803, 0.02841806, 0.02841803, 0.02841806, 0.21900641], [1517078880000, 0.02841805, 0.02841805, 0.02841804, 0.02841805, 3.53169782], [1517078940000, 0.02841805, 0.02841806, 0.02841805, 0.02841806, 0.07759212], [1517079000000, 0.02841806, 0.02841806, 0.02841806, 0.02841806, 0.03879604], [1517079060000, 0.02841806, 0.02841806, 0.02841806, 0.02841806, 0.041621], [1517079180000, 0.02857491, 0.02857491, 0.02857491, 0.02857491, 0.78589454], [1517079300000, 0.02857491, 0.02857491, 0.02857491, 0.02857491, 0.04648665], [1517079360000, 0.02857488, 0.02857491, 0.02857488, 0.02857491, 5.24543364], [1517079480000, 0.02841803, 0.02841803, 0.02841803, 0.02841803, 0.78492933], [1517079540000, 0.02841803, 0.02857492, 0.02841803, 0.02857492, 0.54588016], [1517079600000, 0.02857492, 0.02857492, 0.0285749, 0.0285749, 0.7269587], [1517079720000, 0.02841803, 0.02841803, 0.02841803, 0.02841803, 0.25619119], [1517079780000, 0.02857492, 0.02857492, 0.02857492, 0.02857492, 3.2801655], [1517079840000, 0.02857492, 0.02857492, 0.02857492, 0.02857492, 0.7373118], [1517079900000, 0.02857491, 0.02857491, 0.02857491, 0.02857491, 0.34995748], [1517079960000, 0.02832572, 0.02857493, 0.02832572, 0.02857493, 0.4250834], [1517080020000, 0.02832648, 0.02832652, 0.0283264, 0.02832652, 2.31484676], [1517080200000, 0.02857495, 0.02864858, 0.02836097, 0.02848656, 11.40375513], [1517080320000, 0.0285, 0.0286848, 0.0285, 0.0286848, 27.84447574], [1517080380000, 0.02859999, 0.02875, 0.02859998, 0.02875, 20.4327873], [1517080440000, 0.02867498, 0.02867498, 0.02867498, 0.02867498, 0.54727917], [1517080500000, 0.02867498, 0.0287006, 0.02857504, 0.0286751, 1.36398483], [1517080560000, 0.02857512, 0.0286751, 0.02857512, 0.02860005, 7.2916041], [1517080620000, 0.0286751, 0.02875, 0.0286751, 0.02875, 4.83979996], [1517080680000, 0.0287462, 0.02881057, 0.0287199, 0.0287199, 25.74739918], [1517080740000, 0.0287199, 0.028775, 0.0287199, 0.028775, 0.14383637], [1517080800000, 0.02871991, 0.02885623, 0.02871991, 0.0288, 6.3217411], [1517080860000, 0.02880001, 0.02885618, 0.02871704, 0.02872004, 39.8558487], [1517080920000, 0.0287202, 0.0288, 0.02872019, 0.0288, 3.76512189], [1517080980000, 0.0288, 0.0288, 0.0287381, 0.0288, 0.42822162], [1517081040000, 0.0288, 0.02885623, 0.0288, 0.02885623, 0.77876448], [1517081100000, 0.0288288, 0.02885623, 0.02873808, 0.02885, 4.36052261], [1517081160000, 0.02885, 0.02885623, 0.02885, 0.02885, 3.37478786], [1517081220000, 0.02885623, 0.02885623, 0.02885, 0.02885623, 8.88338942], [1517081280000, 0.028875, 0.028875, 0.028875, 0.028875, 2.09268337], [1517081340000, 0.028875, 0.02888887, 0.028875, 0.02888887, 2.58776691], [1517081400000, 0.02888887, 0.02888887, 0.028875, 0.02888887, 0.83221769], [1517081460000, 0.02888887, 0.02888888, 0.02888887, 0.02888888, 0.4302322], [1517081520000, 0.02888888, 0.02889, 0.02888887, 0.02888887, 2.4434269], [1517081580000, 0.02888887, 0.02889, 0.02888887, 0.02889, 18.83337262], [1517081640000, 0.02889, 0.02889, 0.02889, 0.02889, 6.45950041], [1517081700000, 0.02889, 0.02889, 0.02889, 0.02889, 3.449807], [1517081820000, 0.02888887, 0.02888887, 0.02885, 0.02885, 10.47170155], [1517081880000, 0.02885, 0.02885, 0.02885, 0.02885, 8.68485177], [1517081940000, 0.02885028, 0.02885028, 0.02885, 0.02885, 2.1445052], [1517082000000, 0.02885, 0.0288888, 0.02885, 0.02885, 9.83395688], [1517082060000, 0.02885, 0.02885, 0.02885, 0.02885, 1.46679363], [1517082120000, 0.0288889, 0.0288889, 0.02885, 0.02885, 1.95680165], [1517082180000, 0.0288889, 0.0288889, 0.02885, 0.0288889, 32.60992296], [1517082240000, 0.0288889, 0.0288889, 0.02885, 0.02885, 6.06867582], [1517082300000, 0.02885, 0.02889, 0.02885, 0.02885, 2.40297542], [1517082360000, 0.02885, 0.02885, 0.02885, 0.02885, 0.25], [1517082420000, 0.02886999, 0.02889264, 0.02885, 0.02885, 19.46941273], [1517082480000, 0.02885, 0.02885, 0.02873807, 0.02873807, 3.62990796], [1517082540000, 0.02885, 0.02887, 0.02885, 0.02887, 0.10903302], [1517082600000, 0.02887, 0.02887, 0.02878942, 0.02878942, 1.62474233], [1517082660000, 0.02879782, 0.02879782, 0.02878942, 0.02879782, 0.23850659], [1517082720000, 0.02879782, 0.02879782, 0.02879782, 0.02879782, 0.07668582], [1517082780000, 0.02879782, 0.02879782, 0.02879782, 0.02879782, 0.03834291], [1517082840000, 0.02879782, 0.02879782, 0.02873808, 0.02879782, 4.07661295], [1517082900000, 0.02879782, 0.02879782, 0.02879782, 0.02879782, 0.07672804], [1517082960000, 0.02879782, 0.02879782, 0.02879782, 0.02879782, 0.07672804], [1517083020000, 0.02873807, 0.02879782, 0.02873807, 0.02873807, 0.38696021], [1517083080000, 0.02873807, 0.02879782, 0.02873807, 0.02879782, 0.28496359], [1517083140000, 0.02873807, 0.02879782, 0.02873807, 0.02879782, 1.15440585], [1517083200000, 0.02879782, 0.02879782, 0.02879782, 0.02879782, 3.1567536], [1517083260000, 0.02873807, 0.02873807, 0.02873807, 0.02873807, 0.06997166], [1517083320000, 0.02879782, 0.02879782, 0.02873807, 0.02873807, 0.10833814], [1517083380000, 0.02873807, 0.02879782, 0.02873807, 0.02873807, 13.73746247], [1517083440000, 0.02873807, 0.02873807, 0.02873807, 0.02873807, 2.04662973], [1517083500000, 0.02873807, 0.02873807, 0.02873807, 0.02873807, 1.97192226], [1517083560000, 0.02879782, 0.02879782, 0.02873807, 0.02874, 13.53027224], [1517083620000, 0.02873807, 0.02873807, 0.02873807, 0.02873807, 10.33682896], [1517083680000, 0.02873807, 0.02879782, 0.02873807, 0.02873807, 52.42807356], [1517083740000, 0.02873807, 0.02879782, 0.0287202, 0.0287202, 23.75073794], [1517083860000, 0.0287202, 0.0287202, 0.02872003, 0.02872003, 1.28542404], [1517083920000, 0.0287, 0.0287, 0.028575, 0.02857501, 2.23124131], [1517083980000, 0.02857501, 0.0287202, 0.02857501, 0.0287202, 1.4925664], [1517084040000, 0.02857515, 0.02857515, 0.02857507, 0.02857507, 14.0], [1517084100000, 0.02857501, 0.02857501, 0.02857501, 0.02857501, 0.29503944], [1517084160000, 0.028575, 0.02879771, 0.02855009, 0.02879, 7.88634493], [1517084220000, 0.02879, 0.02879, 0.02879, 0.02879, 12.35444886], [1517084280000, 0.02879, 0.02879776, 0.02879, 0.02879776, 31.15145122], [1517084340000, 0.02879, 0.02879, 0.02879, 0.02879, 10.22713277], [1517084400000, 0.02855255, 0.02879573, 0.02855255, 0.02879573, 0.49075996], [1517084580000, 0.02856013, 0.02856013, 0.02856013, 0.02856013, 0.25], [1517084640000, 0.0287957, 0.0287957, 0.0287957, 0.0287957, 0.03820014], [1517084760000, 0.02856256, 0.02869, 0.02856256, 0.02869, 1.11623885], [1517085000000, 0.02869, 0.02869, 0.02869, 0.02869, 0.93859851], [1517085060000, 0.02869, 0.02869, 0.02869, 0.02869, 0.12486811], [1517085120000, 0.02869, 0.02869, 0.02869, 0.02869, 0.03859816], [1517085180000, 0.02869, 0.02869, 0.02856405, 0.02869, 0.16232338], [1517085240000, 0.02869, 0.02869, 0.02856467, 0.02869, 3.36106704], [1517085300000, 0.02856489, 0.02869, 0.02856489, 0.02869, 0.55780099], [1517085360000, 0.02869, 0.02869, 0.0286875, 0.02869, 0.13054322], [1517085420000, 0.02869, 0.02869, 0.02869, 0.02869, 0.83113046], [1517085480000, 0.02869, 0.02869861, 0.02869, 0.02869861, 0.3328282], [1517085540000, 0.02869861, 0.02872595, 0.02869861, 0.02872595, 0.86348209], [1517085600000, 0.028675, 0.028675, 0.02856382, 0.02856382, 5.5], [1517085660000, 0.02856623, 0.02857002, 0.02856623, 0.02857002, 2.06403476], [1517085720000, 0.0286, 0.0286, 0.0286, 0.0286, 12.19300002], [1517085780000, 0.0287, 0.0287, 0.0287, 0.0287, 0.11707597], [1517085840000, 0.02856622, 0.0287, 0.02856622, 0.0287, 0.40359478], [1517085900000, 0.0287, 0.0287, 0.0287, 0.0287, 0.34843205], [1517086020000, 0.0287, 0.0287, 0.0287, 0.0287, 0.03859478], [1517086080000, 0.0287, 0.0287, 0.0287, 0.0287, 0.03859478], [1517086140000, 0.0287, 0.0287, 0.02856356, 0.0287, 4.85303106], [1517086200000, 0.0287, 0.0287, 0.0287, 0.0287, 0.0945749], [1517086260000, 0.0287, 0.0287, 0.0287, 0.0287, 0.0771965], [1517086380000, 0.02856359, 0.02865415, 0.02856359, 0.02865415, 0.33192117], [1517086440000, 0.02865415, 0.02865415, 0.02865415, 0.02865415, 0.0808816], [1517086500000, 0.0285636, 0.02865415, 0.0285636, 0.02865415, 7.38544157], [1517086560000, 0.02865415, 0.02865415, 0.02857742, 0.02857742, 0.2821867], [1517086620000, 0.0286, 0.02865, 0.0286, 0.02860011, 0.4608156], [1517086680000, 0.02865, 0.02865, 0.02865, 0.02865, 0.55809915], [1517086740000, 0.02865, 0.02865, 0.02865, 0.02865, 0.11498602], [1517086800000, 0.02865, 0.02865, 0.02857741, 0.02857741, 0.19476221], [1517086860000, 0.02857741, 0.02865, 0.02857741, 0.02865, 5.78462652], [1517086920000, 0.02865001, 0.02867865, 0.02865, 0.02865005, 1.30707404], [1517086980000, 0.02865005, 0.02865005, 0.02865, 0.02865, 0.2905989], [1517087040000, 0.02865005, 0.02865005, 0.02865005, 0.02865005, 0.0769638], [1517087100000, 0.02865005, 0.02865005, 0.02865, 0.02865005, 3.70454521], [1517087160000, 0.02865, 0.02875349, 0.02865, 0.02875349, 1.48669632], [1517087280000, 0.02865028, 0.02865028, 0.02865028, 0.02865028, 0.13404421], [1517087340000, 0.02865028, 0.02865028, 0.02865028, 0.02865028, 0.07696318], [1517087400000, 0.02865028, 0.0287391, 0.02865028, 0.0287391, 2.11689118], [1517087460000, 0.0286501, 0.0286501, 0.0286501, 0.0286501, 0.01764104], [1517087520000, 0.0286501, 0.0286501, 0.0286501, 0.0286501, 3.01726286], [1517087580000, 0.0286501, 0.0286501, 0.02865005, 0.0286501, 0.25254066], [1517087640000, 0.0286501, 0.0286501, 0.0286501, 0.0286501, 0.07696366], [1517087700000, 0.0286501, 0.0286501, 0.0286501, 0.0286501, 0.07696366], [1517087760000, 0.0286501, 0.0286501, 0.0286501, 0.0286501, 0.98396366], [1517087820000, 0.0286501, 0.0286501, 0.0286501, 0.0286501, 0.07696366], [1517087880000, 0.0286501, 0.0286501, 0.0286501, 0.0286501, 0.34052034], [1517087940000, 0.0286501, 0.02880195, 0.0286501, 0.02880195, 0.67794368], [1517088120000, 0.02880195, 0.02881921, 0.02880195, 0.02881921, 3.75], [1517088180000, 0.02881923, 0.02881923, 0.02881918, 0.02881918, 0.25786318], [1517088240000, 0.02881922, 0.02881922, 0.0288192, 0.0288192, 5.04487118], [1517088300000, 0.0288192, 0.0288192, 0.02865, 0.02865, 5.61514518], [1517088360000, 0.02881901, 0.02881901, 0.02865, 0.02865, 0.89399355], [1517088420000, 0.02865, 0.02882928, 0.02865, 0.02882928, 15.50999927], [1517088480000, 0.02882927, 0.02882927, 0.02865, 0.02865, 4.47876781], [1517088540000, 0.02882909, 0.02882931, 0.02882909, 0.02882931, 1.00400299], [1517088600000, 0.02865, 0.02865, 0.02865, 0.02865, 0.51885248], [1517088840000, 0.02865, 0.02865, 0.02865, 0.02865, 9.42042947], [1517088900000, 0.02864999, 0.02865, 0.02863184, 0.02865, 0.56705089], [1517088960000, 0.02863184, 0.02865, 0.02859449, 0.02865, 1.77570257], [1517089020000, 0.02865, 0.02865, 0.02865, 0.02865, 0.91115674], [1517089080000, 0.02865, 0.02865, 0.02865, 0.02865, 0.42224014], [1517089140000, 0.02865, 0.02865, 0.02865, 0.02865, 0.0771128], [1517089200000, 0.02865, 0.02882599, 0.02865, 0.02882599, 3.29793332], [1517089260000, 0.02865, 0.02865, 0.02865, 0.02865, 0.05240108], [1517089440000, 0.02865201, 0.0287, 0.02865201, 0.02865201, 3.26368419], [1517089500000, 0.028829, 0.02882931, 0.02865202, 0.02865202, 3.02300791], [1517089560000, 0.02866107, 0.02866107, 0.02866107, 0.02866107, 0.37351849], [1517089620000, 0.02865201, 0.02865201, 0.02865201, 0.02865201, 1.55049307], [1517089680000, 0.02882931, 0.02882931, 0.02882931, 0.02882931, 0.66493282], [1517089740000, 0.02865201, 0.02882931, 0.02865201, 0.02882931, 2.57803573], [1517089800000, 0.02865201, 0.02865201, 0.02865201, 0.02865201, 0.46592735], [1517089860000, 0.02882931, 0.02882931, 0.02865201, 0.02865201, 5.05085753], [1517089920000, 0.02865202, 0.02865202, 0.028652, 0.028652, 8.24544913], [1517089980000, 0.028652, 0.028652, 0.028652, 0.028652, 0.18437778], [1517090100000, 0.028652, 0.028652, 0.02865, 0.02865, 0.03482157], [1517090280000, 0.02875, 0.02875, 0.02875, 0.02875, 1.48674959], [1517090400000, 0.02882804, 0.02882804, 0.028828, 0.028828, 0.34300522], [1517090460000, 0.02865006, 0.02865008, 0.02865006, 0.02865008, 0.3139749], [1517090520000, 0.02865012, 0.02865012, 0.02865012, 0.02865012, 0.146], [1517090580000, 0.02865012, 0.02865012, 0.0286501, 0.0286501, 0.69086298], [1517090700000, 0.02865029, 0.02882809, 0.02865029, 0.02865033, 1.56943539], [1517090940000, 0.02865102, 0.02865105, 0.02865102, 0.02865105, 5.07408904], [1517091000000, 0.02865102, 0.02865102, 0.02865102, 0.02865102, 1.0], [1517091120000, 0.02865303, 0.02882931, 0.02865303, 0.02882931, 1.08833689], [1517091180000, 0.02865404, 0.02882931, 0.02865404, 0.02865405, 0.58473086], [1517091240000, 0.02882931, 0.02884648, 0.02865409, 0.02884648, 3.78041187], [1517091300000, 0.02886479, 0.02886479, 0.02886479, 0.02886479, 0.34644272], [1517091360000, 0.02873217, 0.02873217, 0.02865077, 0.02865077, 3.10471036], [1517091480000, 0.02865077, 0.02865077, 0.02865077, 0.02865077, 0.28543418], [1517091540000, 0.02884995, 0.02884995, 0.02873217, 0.02874924, 1.09347954], [1517091600000, 0.02884999, 0.02885, 0.02872303, 0.02872303, 1.4476079], [1517091660000, 0.02880195, 0.02884934, 0.02880195, 0.02884934, 0.17684626], [1517091720000, 0.02880195, 0.02884997, 0.02880195, 0.02884997, 0.59594142], [1517091780000, 0.02880195, 0.02880195, 0.02871764, 0.02871764, 0.03468822], [1517091840000, 0.02885, 0.02885, 0.02885, 0.02885, 0.1924565], [1517091900000, 0.02884999, 0.02885, 0.02884999, 0.02885, 2.6764639], [1517092020000, 0.02865199, 0.02885, 0.02865199, 0.02885, 0.09975924], [1517092080000, 0.02865408, 0.02865408, 0.02865408, 0.02865408, 0.02661425], [1517092140000, 0.02875805, 0.02875805, 0.02875805, 0.02875805, 0.07694642], [1517092200000, 0.02875805, 0.02885, 0.02875805, 0.02885, 1.31419924], [1517092260000, 0.02884999, 0.02889264, 0.02868707, 0.02868707, 9.89835579], [1517092320000, 0.02883199, 0.02883199, 0.02868742, 0.02868742, 1.0], [1517092440000, 0.02889264, 0.02889264, 0.02889264, 0.02889264, 0.07681598], [1517092560000, 0.02871542, 0.02889828, 0.02867164, 0.02876293, 13.8851144], [1517092620000, 0.02876293, 0.02876293, 0.02876293, 0.02876293, 0.24991452], [1517092680000, 0.02876293, 0.02876293, 0.02876293, 0.02876293, 0.07690393], [1517092740000, 0.02876293, 0.02876293, 0.02876293, 0.02876293, 0.07690255], [1517092800000, 0.02876293, 0.02876923, 0.02876293, 0.02876923, 0.11148689], [1517092860000, 0.02876923, 0.02885535, 0.02866022, 0.02866022, 1.48590471], [1517092920000, 0.02866046, 0.02866059, 0.02866046, 0.02866055, 6.26416636], [1517093040000, 0.02889768, 0.02889769, 0.02889768, 0.02889769, 0.6265716], [1517093100000, 0.02889751, 0.02889751, 0.02889751, 0.02889751, 0.03536017], [1517093280000, 0.02866109, 0.02866112, 0.02866109, 0.02866112, 0.41992932], [1517093340000, 0.02877976, 0.02877976, 0.02877976, 0.02877976, 0.18593444], [1517093700000, 0.02866061, 0.02866061, 0.02866061, 0.02866061, 0.2], [1517093760000, 0.02866061, 0.02866061, 0.02865077, 0.0286606, 4.32679747], [1517093820000, 0.02865077, 0.02865077, 0.02865077, 0.02865077, 0.61058671], [1517093880000, 0.02879127, 0.02879127, 0.02873813, 0.02873813, 0.07696155], [1517093940000, 0.02868, 0.02868, 0.02865077, 0.02865077, 0.91463509], [1517094000000, 0.02868, 0.02868, 0.02865077, 0.02865077, 0.28547255], [1517094060000, 0.02868, 0.02868, 0.02868, 0.02868, 0.07696161], [1517094120000, 0.02868, 0.02868, 0.02868, 0.02868, 0.12105963], [1517094180000, 0.02868, 0.02868, 0.02868, 0.02868, 0.62404626], [1517094240000, 0.02868, 0.02868, 0.02865081, 0.02868, 0.57696126], [1517094300000, 0.02868, 0.02885315, 0.02868, 0.02885315, 1.64060423], [1517094420000, 0.02889691, 0.02889691, 0.02865081, 0.02865081, 0.20486896], [1517094480000, 0.02889, 0.02889, 0.02888977, 0.02888977, 0.08891645], [1517094540000, 0.02877508, 0.02877508, 0.0286508, 0.02877508, 1.07696182], [1517094600000, 0.02877, 0.02887703, 0.02877, 0.02887703, 1.18141267], [1517094660000, 0.02887703, 0.02887703, 0.02887672, 0.02887672, 0.32555452], [1517094720000, 0.02887649, 0.02887649, 0.02887641, 0.02887641, 0.24551084], [1517094840000, 0.02865082, 0.02865082, 0.02865082, 0.02865082, 2.1], [1517094900000, 0.02889474, 0.02889476, 0.02889463, 0.02889463, 1.73041872], [1517094960000, 0.02889463, 0.02889473, 0.02889461, 0.02889473, 1.78638855], [1517095020000, 0.02889457, 0.02889457, 0.02865091, 0.02865091, 0.69211905], [1517095080000, 0.02865091, 0.02865091, 0.02865091, 0.02865091, 4.71266152], [1517095140000, 0.02865091, 0.02865091, 0.02865091, 0.02865091, 0.11663635], [1517095200000, 0.02865091, 0.02865091, 0.02865091, 0.02865091, 2.52016567], [1517095260000, 0.02865091, 0.02865091, 0.02865091, 0.02865091, 7.57912896], [1517095320000, 0.02865091, 0.02865091, 0.02865091, 0.02865091, 0.6014635], [1517095440000, 0.0288284, 0.0288284, 0.0288284, 0.0288284, 0.03468801], [1517095500000, 0.02882839, 0.02885677, 0.02882809, 0.02882809, 1.04064406], [1517095560000, 0.0288, 0.0288, 0.0288, 0.0288, 0.19975038], [1517095620000, 0.028698, 0.02878, 0.028698, 0.02878, 0.56997726], [1517095680000, 0.02877999, 0.02877999, 0.02865077, 0.02865077, 4.5007035], [1517095800000, 0.028778, 0.028778, 0.028778, 0.028778, 0.34748766], [1517095920000, 0.02877799, 0.02877799, 0.02877799, 0.02877799, 0.65991027], [1517095980000, 0.02877799, 0.02877799, 0.02877799, 0.02877799, 0.34008973], [1517096100000, 0.02865077, 0.02865077, 0.02865077, 0.02865077, 0.15], [1517096160000, 0.028778, 0.02882526, 0.02877799, 0.02882526, 4.85448436], [1517096220000, 0.02865077, 0.02865077, 0.02865077, 0.02865077, 0.49369171], [1517096280000, 0.02882501, 0.02882501, 0.02882501, 0.02882501, 1.4810751], [1517096400000, 0.02882468, 0.02882468, 0.02882459, 0.0288246, 2.08154928], [1517096580000, 0.02865078, 0.02865078, 0.02865077, 0.02865077, 5.05063291], [1517096700000, 0.02878499, 0.02878499, 0.02865077, 0.02878488, 7.17547349], [1517096760000, 0.02865077, 0.02865077, 0.02865077, 0.02865077, 0.174105], [1517096820000, 0.02865077, 0.02865077, 0.02865077, 0.02865077, 11.757693], [1517096880000, 0.02865077, 0.02865077, 0.02865077, 0.02865077, 32.15628638], [1517096940000, 0.02865077, 0.02873, 0.02865077, 0.02873, 1.44464849], [1517097000000, 0.02865077, 0.02882433, 0.02865077, 0.02865077, 4.93682512], [1517097060000, 0.02865078, 0.02865078, 0.02865033, 0.02865033, 12.86066249], [1517097120000, 0.02865078, 0.02865078, 0.02865033, 0.02865033, 2.36199078], [1517097180000, 0.02865078, 0.02865078, 0.0286, 0.0286, 8.65633631], [1517097240000, 0.02865078, 0.02865078, 0.02856408, 0.02856408, 11.37211863], [1517097300000, 0.02856408, 0.02856408, 0.02827912, 0.02844, 80.0635368], [1517097360000, 0.02844, 0.02844, 0.02825, 0.02843996, 9.14730344], [1517097420000, 0.02843994, 0.02843995, 0.0282, 0.02843986, 38.0600956], [1517097480000, 0.028425, 0.028425, 0.028425, 0.028425, 0.16625], [1517097540000, 0.0284249, 0.02843936, 0.0284, 0.0284, 1.26018273], [1517097600000, 0.028375, 0.02842449, 0.02835, 0.02842396, 14.42487377], [1517097660000, 0.02835, 0.02842473, 0.02835, 0.02842473, 13.68609812], [1517097720000, 0.02835, 0.02837027, 0.02835, 0.02835, 1.96153598], [1517097780000, 0.02835, 0.02837027, 0.02835, 0.02837027, 1.15908984], [1517097840000, 0.02835, 0.02837027, 0.02835, 0.02835, 0.26427327], [1517097900000, 0.0283499, 0.02835, 0.028325, 0.028325, 2.02099239], [1517097960000, 0.028325, 0.02848871, 0.02829594, 0.02848871, 9.68871014], [1517098020000, 0.02829594, 0.02848866, 0.02819658, 0.02848865, 5.04547688], [1517098080000, 0.02848863, 0.02848863, 0.0284884, 0.0284884, 11.66098408], [1517098140000, 0.0284884, 0.0284884, 0.02825004, 0.02825004, 0.86855437], [1517098320000, 0.02825, 0.02825, 0.02822505, 0.02825, 10.02666095], [1517098380000, 0.0284883, 0.0284883, 0.0284883, 0.0284883, 0.14040836], [1517098440000, 0.02848833, 0.02849115, 0.02848833, 0.02849115, 3.04501632], [1517098500000, 0.0284893, 0.0284893, 0.0284893, 0.0284893, 0.63946013], [1517098560000, 0.0284893, 0.0284893, 0.0284893, 0.0284893, 4.59146904], [1517098620000, 0.0284893, 0.02849999, 0.0284893, 0.02849999, 14.430285], [1517098680000, 0.02849999, 0.02849999, 0.02849991, 0.02849991, 3.56140951], [1517098740000, 0.02822944, 0.02822944, 0.02822944, 0.02822944, 2.45703165], [1517098800000, 0.02822947, 0.02822947, 0.02822945, 0.02822945, 1.54919695], [1517098860000, 0.0282299, 0.0282299, 0.0282299, 0.0282299, 3.0], [1517098920000, 0.0283, 0.0283, 0.0283, 0.0283, 0.10026257], [1517099040000, 0.02830004, 0.02835656, 0.0283, 0.02835656, 3.08478618], [1517099100000, 0.02835656, 0.02848829, 0.02822975, 0.02848829, 3.11041036], [1517099160000, 0.02848809, 0.02848809, 0.02823001, 0.02823007, 2.63774315], [1517099220000, 0.02823018, 0.02823018, 0.02823018, 0.02823018, 0.875], [1517099340000, 0.02848831, 0.02849997, 0.02848831, 0.02849997, 1.72182387], [1517099400000, 0.02849969, 0.02849969, 0.02849969, 0.02849969, 0.35088088], [1517099460000, 0.02849997, 0.02849997, 0.02849996, 0.02849996, 0.29249303], [1517099520000, 0.02849996, 0.02849996, 0.02846431, 0.02846431, 1.20024482], [1517099580000, 0.02838597, 0.02846431, 0.02830008, 0.02846431, 1.67457862], [1517099640000, 0.02846431, 0.02846431, 0.02846431, 0.02846431, 3.59108694], [1517099700000, 0.0284643, 0.0284643, 0.02830006, 0.02846428, 1.26588985], [1517099760000, 0.02846428, 0.02846428, 0.02846428, 0.02846428, 0.07791562], [1517099820000, 0.02830007, 0.02846428, 0.02830007, 0.02846426, 3.66538113], [1517099880000, 0.02846426, 0.02846426, 0.02830007, 0.02830007, 3.0742051], [1517100000000, 0.02846426, 0.02846428, 0.0283001, 0.0283001, 3.06393103], [1517100060000, 0.0283001, 0.02846428, 0.02830007, 0.02846428, 1.35306628], [1517100120000, 0.02846428, 0.02846428, 0.02835, 0.02835, 0.59347561], [1517100180000, 0.02846428, 0.02846428, 0.02846428, 0.02846428, 0.09397257], [1517100240000, 0.02830012, 0.02830012, 0.02830012, 0.02830012, 1.08675592], [1517100300000, 0.02830012, 0.02846428, 0.02830012, 0.02846428, 1.06409233], [1517100360000, 0.02846428, 0.02846428, 0.02846428, 0.02846428, 0.08081392], [1517100420000, 0.02830053, 0.02830053, 0.02830053, 0.02830053, 0.6792987], [1517100480000, 0.02846428, 0.02846428, 0.02830053, 0.02830053, 0.34950506], [1517100540000, 0.02830111, 0.02830111, 0.0283011, 0.0283011, 8.32577416], [1517100600000, 0.02846428, 0.02846428, 0.02846428, 0.02846428, 1.27444759], [1517100660000, 0.02846428, 0.02846428, 0.02846428, 0.02846428, 0.11686503], [1517100720000, 0.02846428, 0.02848136, 0.02846428, 0.02848136, 1.10348072], [1517100780000, 0.02846428, 0.02846428, 0.02830211, 0.02830211, 2.567824], [1517100840000, 0.02830212, 0.02846428, 0.02830212, 0.02830212, 0.24029596], [1517100900000, 0.02846428, 0.02846428, 0.02846428, 0.02846428, 2.64382387], [1517100960000, 0.02846428, 0.02846428, 0.02846428, 0.02846428, 1.5], [1517101020000, 0.0285, 0.0285, 0.0285, 0.0285, 0.0387331], [1517101080000, 0.02849997, 0.02849997, 0.02849997, 0.02849997, 0.0387328], [1517101140000, 0.02847303, 0.02847303, 0.02847303, 0.02847303, 0.03873305], [1517101200000, 0.02847303, 0.02847303, 0.02847303, 0.02847303, 0.0774661], [1517101320000, 0.02847303, 0.02847303, 0.02847303, 0.02847303, 0.04326902], [1517101380000, 0.02847303, 0.02847303, 0.02847303, 0.02847303, 0.58444842], [1517101440000, 0.02847303, 0.02847303, 0.02847303, 0.02847303, 1.91093892], [1517101500000, 0.02847303, 0.02847303, 0.02847303, 0.02847303, 0.03984183], [1517101560000, 0.02847303, 0.02847303, 0.02839881, 0.02839881, 0.39600049], [1517101620000, 0.02835373, 0.02835373, 0.02835373, 0.02835373, 1.00909519], [1517101680000, 0.02835373, 0.02850001, 0.02830222, 0.02850001, 4.3981156], [1517101740000, 0.02850001, 0.02850002, 0.02850001, 0.02850001, 1.22191255], [1517101800000, 0.02850001, 0.02858027, 0.02850001, 0.02858027, 12.22023944], [1517101860000, 0.02858027, 0.02858027, 0.02830576, 0.02830576, 1.43586462], [1517101980000, 0.02857135, 0.02857135, 0.02830212, 0.02830212, 0.58032971], [1517102040000, 0.02853, 0.02853, 0.02853, 0.02853, 0.0468825], [1517102100000, 0.02830223, 0.02830223, 0.0283022, 0.0283022, 0.70514091], [1517102160000, 0.02852961, 0.02852961, 0.02830577, 0.02830577, 6.14935995], [1517102280000, 0.02850998, 0.02850998, 0.02830008, 0.02830008, 31.89914837], [1517102340000, 0.02830008, 0.02850963, 0.02830008, 0.02830008, 2.70839165], [1517102400000, 0.02848964, 0.02848964, 0.02848944, 0.02848944, 1.06154206], [1517102460000, 0.0284893, 0.0284893, 0.0284893, 0.0284893, 0.08898538], [1517102520000, 0.02847445, 0.02847445, 0.02847445, 0.02847445, 0.03972102], [1517102640000, 0.02839999, 0.02839999, 0.02832008, 0.02839994, 3.04344878], [1517102700000, 0.02839995, 0.02839995, 0.02832008, 0.02832008, 4.60593266], [1517102820000, 0.02845986, 0.02845986, 0.02845986, 0.02845986, 0.04676474], [1517102880000, 0.02845892, 0.02845892, 0.02845892, 0.02845892, 0.34785896], [1517102940000, 0.02845886, 0.02845886, 0.02845878, 0.02845878, 0.40635978], [1517103000000, 0.02845853, 0.02845853, 0.02845853, 0.02845853, 0.058742], [1517103180000, 0.02832008, 0.02832008, 0.02832008, 0.02832008, 0.49058995], [1517103240000, 0.02832008, 0.02832008, 0.02829, 0.02832008, 6.90041234], [1517103300000, 0.02832008, 0.02845885, 0.02832008, 0.02845885, 5.41394597], [1517103360000, 0.02845883, 0.02845883, 0.02845883, 0.02845883, 1.0], [1517103420000, 0.02845883, 0.02845986, 0.02845881, 0.02845984, 5.17846732], [1517103480000, 0.02845984, 0.02845984, 0.02845984, 0.02845984, 1.19265125], [1517103540000, 0.02845984, 0.02845984, 0.02845984, 0.02845984, 0.04310112], [1517103600000, 0.02845986, 0.02845986, 0.02845986, 0.02845986, 0.42164157], [1517103660000, 0.02845986, 0.02845986, 0.02845986, 0.02845986, 0.0351372], [1517103720000, 0.02845986, 0.02845986, 0.02845986, 0.02845986, 0.0903937], [1517103780000, 0.02834662, 0.02845986, 0.02834662, 0.02845986, 0.07348025], [1517103840000, 0.02845986, 0.02845986, 0.02845986, 0.02845986, 0.07778766], [1517103900000, 0.02845986, 0.02845986, 0.02845986, 0.02845986, 2.70778766], [1517103960000, 0.02845986, 0.02845986, 0.02845986, 0.02845986, 0.08566629], [1517104020000, 0.02845986, 0.02845986, 0.02834663, 0.02834667, 1.13889383], [1517104080000, 0.02845986, 0.02845986, 0.02845986, 0.02845986, 0.49094674], [1517104200000, 0.02845986, 0.02856294, 0.02845986, 0.02856294, 6.35301508], [1517104260000, 0.02845984, 0.02849814, 0.02845984, 0.02849814, 0.60121605], [1517104440000, 0.02856294, 0.02859975, 0.02856294, 0.02859975, 1.7], [1517104680000, 0.02859988, 0.02859988, 0.02859988, 0.02859988, 0.54569147], [1517104740000, 0.02859988, 0.02859989, 0.02849814, 0.02859989, 0.85882539], [1517104800000, 0.02859989, 0.02859989, 0.02859989, 0.02859989, 0.13], [1517104860000, 0.02858199, 0.02858199, 0.02858199, 0.02858199, 0.12079078], [1517104920000, 0.02841571, 0.02841571, 0.02841571, 0.02841571, 0.79700109], [1517104980000, 0.02841571, 0.02841571, 0.02841571, 0.02841571, 0.66662222], [1517105040000, 0.02858199, 0.02858199, 0.02858199, 0.02858199, 0.05808891], [1517105100000, 0.02844583, 0.02844583, 0.02844583, 0.02844583, 0.03879915], [1517105160000, 0.02844583, 0.02844583, 0.02844583, 0.02844583, 0.03879915], [1517105220000, 0.02844583, 0.02856815, 0.02844583, 0.02856815, 0.15462973], [1517105280000, 0.02856815, 0.02856815, 0.02856815, 0.02856815, 0.11099919], [1517105340000, 0.02856816, 0.02856816, 0.02856816, 0.02856816, 0.08301269], [1517105400000, 0.0285682, 0.0285682, 0.0285682, 0.0285682, 1.07828121], [1517105460000, 0.0285682, 0.02858199, 0.0285682, 0.02858199, 1.03859201], [1517105520000, 0.02858199, 0.02858199, 0.02858199, 0.02858199, 0.37718402], [1517105580000, 0.02858199, 0.02858199, 0.0285682, 0.02858199, 0.1116417], [1517105640000, 0.02858199, 0.02858199, 0.02858199, 0.02858199, 0.09117057], [1517105700000, 0.0285999, 0.0285999, 0.0285999, 0.0285999, 0.63056398], [1517105820000, 0.0285999, 0.0285999, 0.0285999, 0.0285999, 0.03859189], [1517105880000, 0.0285999, 0.0285999, 0.028585, 0.028585, 0.21399189], [1517105940000, 0.02858495, 0.0285999, 0.02858495, 0.0285999, 0.71115444], [1517106000000, 0.0285999, 0.0285999, 0.0285999, 0.0285999, 0.03859189], [1517106060000, 0.0285999, 0.0285999, 0.0285999, 0.0285999, 0.03859189], [1517106120000, 0.0285999, 0.0285999, 0.0285999, 0.0285999, 0.03859189], [1517106180000, 0.0285999, 0.0285999, 0.0285999, 0.0285999, 0.47616721], [1517106240000, 0.0285999, 0.0285999, 0.0285682, 0.0285682, 10.59803186], [1517106300000, 0.0285682, 0.0285682, 0.0285682, 0.0285682, 0.68931], [1517106360000, 0.0285999, 0.0285999, 0.02856815, 0.02856815, 9.09565109], [1517106420000, 0.02856815, 0.02856815, 0.02848135, 0.02848135, 0.07725338], [1517106480000, 0.02851678, 0.0285999, 0.02848135, 0.02848135, 3.34501507], [1517106540000, 0.02848135, 0.02848135, 0.02841571, 0.02841571, 1.76679539], [1517106600000, 0.02840175, 0.02841589, 0.02832008, 0.02832008, 8.10949413], [1517106660000, 0.02830977, 0.02841581, 0.02830977, 0.02841581, 0.97192165], [1517106720000, 0.02830977, 0.02830977, 0.02829, 0.02829, 0.35953117], [1517106780000, 0.02829, 0.02829001, 0.02829, 0.02829001, 0.07794274], [1517106840000, 0.02829001, 0.02829001, 0.02829001, 0.02829001, 0.0779427], [1517106900000, 0.02829001, 0.02841567, 0.02829, 0.02829, 21.63119737], [1517106960000, 0.02829, 0.02829, 0.02829, 0.02829, 0.07794274], [1517107020000, 0.02829, 0.02829, 0.02819506, 0.02819506, 11.4302388], [1517107080000, 0.02825458, 0.0282546, 0.02819506, 0.02825459, 2.17703033], [1517107140000, 0.02825459, 0.02825459, 0.02825, 0.02825458, 1.73885417], [1517107200000, 0.02825456, 0.02825456, 0.0281, 0.02818, 10.21447066], [1517107260000, 0.02810001, 0.0282545, 0.0281, 0.0282545, 1.88505506], [1517107320000, 0.0282546, 0.02830021, 0.0282, 0.02830021, 1.5637605], [1517107380000, 0.02830021, 0.02832943, 0.02830021, 0.02832943, 0.42371448], [1517107440000, 0.02832943, 0.02832943, 0.02832943, 0.02832943, 0.23090016], [1517107500000, 0.028175, 0.028175, 0.02815457, 0.02815457, 0.41426748], [1517107560000, 0.02815315, 0.02837741, 0.02815315, 0.02837741, 0.12619011], [1517107620000, 0.02837741, 0.02837741, 0.02837741, 0.02837741, 0.1421453], [1517107800000, 0.0284158, 0.0284158, 0.0284158, 0.0284158, 0.04202362], [1517107860000, 0.0284158, 0.0284158, 0.0284158, 0.0284158, 0.30234155], [1517107920000, 0.02815553, 0.02815553, 0.02815553, 0.02815553, 2.0], [1517108160000, 0.02815841, 0.02815841, 0.02815838, 0.02815838, 26.65418405], [1517108220000, 0.02841556, 0.02841569, 0.02841556, 0.02841569, 1.02037057], [1517108280000, 0.02841557, 0.02841557, 0.02841557, 0.02841557, 0.08583337], [1517108400000, 0.02828684, 0.02828684, 0.02828684, 0.02828684, 0.35352178], [1517108460000, 0.02828684, 0.02828684, 0.02828684, 0.02828684, 0.04242255], [1517108520000, 0.0281585, 0.02828687, 0.0281585, 0.02828687, 0.10597352], [1517108940000, 0.02828687, 0.02828687, 0.02828687, 0.02828687, 0.04775687], [1517109000000, 0.02828685, 0.02828685, 0.02816, 0.02816, 1.92256254], [1517109060000, 0.02816001, 0.02816001, 0.02816, 0.02816, 2.3], [1517109240000, 0.02828687, 0.02828687, 0.02816, 0.02816, 0.67875771], [1517109300000, 0.02816, 0.02816, 0.02816, 0.02816, 0.39426733], [1517109360000, 0.02816, 0.02816, 0.02816, 0.02816, 3.86381876], [1517109420000, 0.02816, 0.02816, 0.02816, 0.02816, 3.01810854], [1517109480000, 0.02816, 0.02816, 0.02816, 0.02816, 0.0783074], [1517109540000, 0.02816, 0.02827555, 0.02816, 0.02827555, 2.17746802], [1517109600000, 0.02828687, 0.02828687, 0.02828687, 0.02828687, 0.392512], [1517109720000, 0.02828687, 0.02828687, 0.02828687, 0.02828687, 1.71494421], [1517109840000, 0.0281585, 0.0281585, 0.0281529, 0.0281529, 15.9388713], [1517109900000, 0.02815289, 0.02828687, 0.02815289, 0.02828687, 0.58948462], [1517109960000, 0.02815288, 0.02815288, 0.02815288, 0.02815288, 1.53590862], [1517110020000, 0.02815299, 0.02828687, 0.02815299, 0.02828687, 0.60443261], [1517110080000, 0.02828674, 0.02828687, 0.02828674, 0.02828687, 1.49123731], [1517110140000, 0.02828687, 0.02828687, 0.02815292, 0.02815292, 0.76923314], [1517110200000, 0.02815295, 0.02828687, 0.02815295, 0.02828687, 0.37663497], [1517110260000, 0.02815302, 0.02828687, 0.02815302, 0.02828687, 1.66940299], [1517110320000, 0.02815288, 0.02828687, 0.02815288, 0.02828687, 1.48493326], [1517110380000, 0.02828687, 0.02828687, 0.02828687, 0.02828687, 0.02356256], [1517110560000, 0.02828684, 0.02828684, 0.02828684, 0.02828684, 0.01738675], [1517110620000, 0.02828684, 0.02828684, 0.02828684, 0.02828684, 0.05527173], [1517110680000, 0.02815288, 0.02815288, 0.02815288, 0.02815288, 0.03573707], [1517110740000, 0.02815288, 0.02815288, 0.02815288, 0.02815288, 0.04403563], [1517110800000, 0.02815288, 0.02828684, 0.02815288, 0.02828684, 0.64890073], [1517110920000, 0.02828674, 0.02828681, 0.02828674, 0.02828681, 2.00982864], [1517110980000, 0.02828683, 0.02828683, 0.02828683, 0.02828683, 0.07070425], [1517111100000, 0.02828683, 0.02828684, 0.02828683, 0.02828684, 0.70704356], [1517111220000, 0.0282828, 0.02828687, 0.0282828, 0.02828687, 3.96152891], [1517111400000, 0.0282828, 0.0282828, 0.02815288, 0.02815288, 0.21943834], [1517111460000, 0.02815288, 0.02815288, 0.02815288, 0.02815288, 0.09307989], [1517111520000, 0.02815288, 0.02815288, 0.02815288, 0.02815288, 0.34718557], [1517111580000, 0.02815288, 0.02815288, 0.02815288, 0.02815288, 0.25013284], [1517111640000, 0.02815288, 0.02815288, 0.02815288, 0.02815288, 0.14633818], [1517111700000, 0.02815288, 0.02815288, 0.02815287, 0.02815287, 1.41247459], [1517111760000, 0.02815287, 0.02818059, 0.0281, 0.0281, 7.59394753], [1517111820000, 0.02819833, 0.02828687, 0.02819833, 0.02828687, 0.48214434], [1517112000000, 0.02828687, 0.02828687, 0.02828687, 0.02828687, 0.6975785], [1517112060000, 0.02819833, 0.02831224, 0.028125, 0.028312, 0.7120605], [1517112240000, 0.028125, 0.02831124, 0.028125, 0.02831124, 1.91946107], [1517112360000, 0.02831079, 0.02831079, 0.02831071, 0.02831071, 0.39570344], [1517112420000, 0.02831051, 0.02831051, 0.028125, 0.028125, 0.83401407], [1517112480000, 0.02831018, 0.02831018, 0.02831018, 0.02831018, 0.03384507], [1517112540000, 0.02830979, 0.02830979, 0.02830979, 0.02830979, 0.08235552], [1517112600000, 0.02830926, 0.02830926, 0.028125, 0.028125, 2.2064816], [1517112660000, 0.02830908, 0.02830908, 0.02830899, 0.02830899, 0.18311022], [1517112720000, 0.02830899, 0.02830899, 0.02830899, 0.02830899, 0.02190306], [1517112780000, 0.02830895, 0.02830899, 0.02820501, 0.02830899, 1.75684109], [1517112840000, 0.02830899, 0.02830899, 0.02820508, 0.02820508, 0.26209136], [1517112900000, 0.0282051, 0.02830904, 0.0282051, 0.02827817, 3.14519007], [1517112960000, 0.02827817, 0.02827817, 0.02827817, 0.02827817, 0.27339817], [1517113140000, 0.02820509, 0.02820509, 0.02813176, 0.02813176, 0.28665051], [1517113200000, 0.0281, 0.02813176, 0.0281, 0.02813176, 3.66382972], [1517113260000, 0.02813176, 0.0282051, 0.0281, 0.0282051, 3.91666537], [1517113320000, 0.0281318, 0.0282051, 0.0281, 0.0282051, 1.22190368], [1517113380000, 0.0282051, 0.0282051, 0.0282051, 0.0282051, 0.45883486], [1517113440000, 0.02813, 0.02813, 0.02813, 0.02813, 0.83658887], [1517113500000, 0.02813, 0.02813, 0.02807244, 0.02807244, 3.44646622], [1517113560000, 0.02813, 0.0282051, 0.0280697, 0.0282051, 5.34359595], [1517113620000, 0.02813, 0.02813, 0.0280697, 0.0280697, 0.636], [1517113680000, 0.028205, 0.02826458, 0.0280697, 0.0280697, 0.91481656], [1517113740000, 0.02813, 0.02813, 0.0280697, 0.0280697, 3.15668735], [1517113800000, 0.02813, 0.02824482, 0.02813, 0.02824478, 2.25127802], [1517113920000, 0.02824417, 0.02824417, 0.02824416, 0.02824416, 0.57781775], [1517113980000, 0.028244, 0.02824402, 0.028244, 0.02824402, 10.04568186], [1517114040000, 0.02824397, 0.02824399, 0.02824384, 0.02824384, 20.2819632], [1517114100000, 0.02806971, 0.028185, 0.02806971, 0.028185, 13.58174621], [1517114160000, 0.02806971, 0.02806971, 0.0280697, 0.0280697, 0.50992148], [1517114280000, 0.0280697, 0.0280697, 0.0280697, 0.0280697, 1.08279013], [1517114400000, 0.0280697, 0.0280697, 0.0280697, 0.0280697, 1.0], [1517114460000, 0.028185, 0.028185, 0.028185, 0.028185, 1.41825379], [1517114520000, 0.0282188, 0.0282188, 0.0280697, 0.0280697, 0.2890697], [1517114580000, 0.02821882, 0.02821882, 0.0280697, 0.0280697, 0.07461087], [1517114640000, 0.02821882, 0.02821882, 0.0280697, 0.0280697, 0.22438317], [1517114700000, 0.0280697, 0.0280697, 0.0280697, 0.0280697, 0.05], [1517114760000, 0.0280697, 0.0280697, 0.0280697, 0.0280697, 0.98609874], [1517114820000, 0.0280697, 0.02821835, 0.0280697, 0.02821835, 5.30727399], [1517114880000, 0.0280697, 0.0280697, 0.0280697, 0.0280697, 0.11783169], [1517114940000, 0.0280697, 0.0280697, 0.0280697, 0.0280697, 0.03927723], [1517115000000, 0.0280697, 0.02821729, 0.0280697, 0.02821729, 0.39366849], [1517115060000, 0.02821688, 0.02821688, 0.02821684, 0.02821684, 0.39049387], [1517115120000, 0.02821594, 0.02821597, 0.0280697, 0.0280697, 22.74958627], [1517115180000, 0.0280697, 0.02821568, 0.02803, 0.0282116, 17.81405466], [1517115240000, 0.02803, 0.02803, 0.02802, 0.02802, 3.92812209], [1517115300000, 0.02801665, 0.02802, 0.028, 0.028, 94.77439321], [1517115360000, 0.028, 0.02802, 0.02796469, 0.02802, 2.58302935], [1517115480000, 0.02821039, 0.02821039, 0.02796469, 0.02796469, 1.30581898], [1517115540000, 0.02820941, 0.02820941, 0.02796471, 0.02796471, 0.77102039], [1517115600000, 0.02820874, 0.02820874, 0.02796471, 0.02820799, 2.61171478], [1517115660000, 0.02820793, 0.02820793, 0.027962, 0.027962, 40.34938955], [1517115840000, 0.02820656, 0.02820656, 0.027962, 0.027962, 2.86518693], [1517115900000, 0.02820589, 0.02820589, 0.027962, 0.027962, 0.85453575], [1517115960000, 0.02819584, 0.02819584, 0.027962, 0.027962, 4.39366462], [1517116020000, 0.027962, 0.027962, 0.02796046, 0.02796046, 4.42037624], [1517116080000, 0.02796046, 0.0281628, 0.02795, 0.02795, 1.21728225], [1517116140000, 0.02795, 0.0279592, 0.02794431, 0.02794431, 10.42129611], [1517116200000, 0.02793893, 0.02794431, 0.02793893, 0.02793893, 0.84044714], [1517116260000, 0.02793893, 0.02794431, 0.02784736, 0.02794431, 58.53061797], [1517116320000, 0.0279, 0.02794431, 0.02780053, 0.02780053, 25.55462993], [1517116380000, 0.02794431, 0.02794431, 0.02794431, 0.02794431, 0.0760363], [1517116440000, 0.02794431, 0.02794431, 0.02794431, 0.02794431, 5.28215006], [1517116500000, 0.02794431, 0.02794431, 0.0279443, 0.02794431, 0.91547767], [1517116560000, 0.02794431, 0.02794431, 0.02794431, 0.02794431, 0.10672597], [1517116620000, 0.02794431, 0.02794431, 0.02794431, 0.02794431, 0.026078], [1517116680000, 0.02794431, 0.02794431, 0.02787522, 0.02787522, 1.79015991], [1517116740000, 0.02787522, 0.02794431, 0.02777001, 0.02777001, 79.85472213], [1517116800000, 0.02785, 0.02794431, 0.02785, 0.02794431, 3.09849408], [1517116860000, 0.0279443, 0.0279443, 0.0279443, 0.0279443, 1.09369894], [1517116920000, 0.02785001, 0.02785001, 0.02785001, 0.02785001, 0.07044505], [1517116980000, 0.0279443, 0.0279443, 0.0279443, 0.0279443, 1.23493528], [1517117040000, 0.0279443, 0.0279443, 0.0279443, 0.0279443, 0.15844319], [1517117100000, 0.0279443, 0.02796666, 0.0279443, 0.02796666, 0.75503454], [1517117160000, 0.0279443, 0.0279443, 0.0279443, 0.0279443, 0.19910647], [1517117220000, 0.0279443, 0.0279443, 0.0279443, 0.0279443, 0.04482096], [1517117280000, 0.0279443, 0.02819579, 0.0279443, 0.02819579, 2.40915719], [1517117340000, 0.02819559, 0.02819559, 0.02819559, 0.02819559, 0.11516918], [1517117400000, 0.02819527, 0.02819527, 0.02808249, 0.02808249, 0.11581181], [1517117460000, 0.02788826, 0.02788826, 0.0278882, 0.0278882, 28.995848], [1517117520000, 0.02819441, 0.02819441, 0.02788927, 0.02819422, 3.61487544], [1517117580000, 0.02819395, 0.02819395, 0.02819365, 0.02819365, 0.11577434], [1517117640000, 0.02789134, 0.0281931, 0.02789128, 0.0281931, 2.58310017], [1517117700000, 0.02819266, 0.02819266, 0.02819211, 0.02819214, 1.52501031], [1517117820000, 0.02819203, 0.02819211, 0.02793261, 0.02793261, 7.07043226], [1517117880000, 0.02793299, 0.02793299, 0.02793296, 0.02793297, 11.31007923], [1517117940000, 0.02812999, 0.02812999, 0.02812999, 0.02812999, 0.08000033], [1517118060000, 0.02793662, 0.02793662, 0.02793662, 0.02793662, 0.38394832], [1517118120000, 0.02812999, 0.02812999, 0.0279367, 0.0279367, 2.03253879], [1517118180000, 0.02814679, 0.02818526, 0.02814679, 0.02818496, 2.05847794], [1517118240000, 0.02818296, 0.02818296, 0.02818296, 0.02818296, 0.04881794], [1517118360000, 0.02818178, 0.02818178, 0.02818113, 0.02818113, 0.2883928], [1517118420000, 0.02818045, 0.02818045, 0.02818045, 0.02818045, 0.04424698], [1517118480000, 0.02799, 0.02817961, 0.02798886, 0.02817928, 0.91569451], [1517118600000, 0.02798886, 0.02798886, 0.02798886, 0.02798886, 0.06626988], [1517118660000, 0.02797555, 0.02797555, 0.02785, 0.02785, 48.17337778], [1517118780000, 0.02785007, 0.02785007, 0.02785007, 0.02785007, 4.6881198], [1517118900000, 0.02797555, 0.02798115, 0.02797555, 0.02797555, 1.62851124], [1517118960000, 0.02798115, 0.02798473, 0.02798115, 0.02798473, 0.10388882], [1517119020000, 0.02798115, 0.02798115, 0.02797555, 0.02797556, 8.26769275], [1517119080000, 0.02798473, 0.02817442, 0.02798473, 0.02817442, 0.42333596], [1517119140000, 0.02817434, 0.02817434, 0.02798473, 0.02798473, 0.10056735], [1517119200000, 0.02798473, 0.0281917, 0.02797555, 0.02819133, 2.72368492], [1517119260000, 0.02797558, 0.02797558, 0.02797555, 0.02797555, 0.36778226], [1517119440000, 0.027976, 0.027976, 0.027976, 0.027976, 0.03117633], [1517119560000, 0.027976, 0.027976, 0.02797555, 0.02797555, 0.16172367], [1517119620000, 0.027976, 0.027976, 0.027976, 0.027976, 2.90441181], [1517119740000, 0.027976, 0.027976, 0.027976, 0.027976, 20.03940943], [1517119800000, 0.02797555, 0.027976, 0.02797555, 0.027976, 5.22090193], [1517119860000, 0.027976, 0.027976, 0.02797555, 0.02797555, 1.56616892], [1517119920000, 0.02797555, 0.027976, 0.02787502, 0.027976, 6.52632917], [1517119980000, 0.027976, 0.027976, 0.027875, 0.027976, 7.84334563], [1517120040000, 0.027976, 0.027976, 0.027976, 0.027976, 34.04026043], [1517120100000, 0.027976, 0.027976, 0.027976, 0.027976, 0.02], [1517120220000, 0.02818385, 0.02818385, 0.02818385, 0.02818385, 0.66729064], [1517120340000, 0.02818223, 0.02818223, 0.02818201, 0.02818201, 0.40392857], [1517120400000, 0.02818117, 0.02818117, 0.02787, 0.02787, 15.04053882], [1517120460000, 0.02818027, 0.02818027, 0.02817972, 0.02817972, 0.18442469], [1517120520000, 0.02787062, 0.02787062, 0.02787045, 0.02787045, 8.52801467], [1517120580000, 0.02787045, 0.02787045, 0.02787, 0.02787001, 9.05552403], [1517120640000, 0.02787, 0.02806642, 0.02787, 0.02788, 6.567189], [1517120700000, 0.02788, 0.02788, 0.02788, 0.02788, 0.33507235], [1517120760000, 0.027889, 0.027889, 0.02788, 0.02788, 6.04334743], [1517120820000, 0.02788, 0.02788, 0.02787045, 0.02787045, 59.23998533], [1517120880000, 0.02806546, 0.02806546, 0.02806546, 0.02806546, 0.02407297], [1517121060000, 0.02806385, 0.02806385, 0.02806366, 0.02806366, 3.07855834], [1517121120000, 0.02806182, 0.02806182, 0.02806182, 0.02806182, 0.50310617], [1517121240000, 0.02787045, 0.02787045, 0.02787045, 0.02787045, 10.94673594], [1517121300000, 0.02787, 0.02787045, 0.02787, 0.02787045, 159.48306326], [1517121360000, 0.02787045, 0.02787045, 0.02787, 0.02787, 3.101348], [1517121420000, 0.02787001, 0.02787045, 0.02787001, 0.02787045, 84.36938599], [1517121480000, 0.02787045, 0.02790703, 0.02787002, 0.02790703, 1.1435346], [1517121540000, 0.02790703, 0.02790703, 0.02787, 0.02790703, 2.81902761], [1517121780000, 0.02790703, 0.02790703, 0.02789999, 0.02789999, 0.74697761], [1517121840000, 0.02789999, 0.02789999, 0.02787, 0.02787, 0.82573367], [1517121900000, 0.02789999, 0.02789999, 0.02787, 0.02787, 5.20791139], [1517121960000, 0.02789998, 0.02789998, 0.02787, 0.02787, 4.19250313], [1517122020000, 0.02785, 0.02785, 0.02785, 0.02785, 5.312951], [1517122080000, 0.02785, 0.02787242, 0.02785, 0.02787242, 41.33329081], [1517122140000, 0.02785, 0.02787242, 0.02785, 0.02787242, 0.79658682], [1517122200000, 0.02787241, 0.02787241, 0.02787241, 0.02787241, 0.48556784], [1517122260000, 0.02789999, 0.0279, 0.02789999, 0.0279, 1.58811613], [1517122320000, 0.0279, 0.0279, 0.02789999, 0.02789999, 0.60293101], [1517122440000, 0.02787242, 0.02789999, 0.02787242, 0.02789999, 2.478], [1517122500000, 0.02787242, 0.0279, 0.02787242, 0.0279, 1.83043666], [1517122620000, 0.0279, 0.0279, 0.0279, 0.0279, 4.91039426], [1517122680000, 0.0279, 0.0279, 0.02785, 0.02785, 23.09324545], [1517122740000, 0.02785, 0.0279, 0.02785, 0.0279, 3.47630649], [1517122800000, 0.0279, 0.0279, 0.0279, 0.0279, 0.03942652], [1517122860000, 0.02785, 0.02785, 0.02785, 0.02785, 1.0], [1517122920000, 0.02785, 0.02785, 0.02785, 0.02785, 5.0], [1517122980000, 0.0279, 0.0279, 0.0279, 0.0279, 0.07168458], [1517123040000, 0.0279, 0.0279, 0.0279, 0.0279, 0.03839857], [1517123160000, 0.0279, 0.0279, 0.0279, 0.0279, 2.05814553], [1517123220000, 0.0279, 0.02809853, 0.0279, 0.02809853, 1.65236947], [1517123280000, 0.02809777, 0.0280978, 0.0279, 0.0279, 13.16901565], [1517123340000, 0.02785003, 0.02809683, 0.02785003, 0.02809683, 3.78269572], [1517123400000, 0.02809636, 0.02809636, 0.02809635, 0.02809635, 0.08762433], [1517123460000, 0.02809635, 0.02809635, 0.02809635, 0.02809635, 0.07090032], [1517123520000, 0.02809635, 0.02809635, 0.02809635, 0.02809635, 0.78508517], [1517123580000, 0.02792172, 0.02792172, 0.02792169, 0.02792169, 1.88563758], [1517123640000, 0.02792172, 0.0280327, 0.02792172, 0.0280327, 0.74126963], [1517123760000, 0.02814553, 0.02814553, 0.02814553, 0.02814553, 0.03622988], [1517123820000, 0.02814553, 0.02816, 0.02814553, 0.02816, 0.34278967], [1517123880000, 0.02816, 0.02818824, 0.02796312, 0.02818824, 1.25583459], [1517123940000, 0.02818824, 0.02818824, 0.02800713, 0.02800713, 31.55802179], [1517124000000, 0.02800713, 0.02801183, 0.02800713, 0.02801183, 23.18088636], [1517124060000, 0.02801183, 0.02819365, 0.02801183, 0.02819365, 1.5472413], [1517124240000, 0.02819365, 0.02824431, 0.02798355, 0.02798355, 4.85734991], [1517124300000, 0.02798625, 0.02798625, 0.02798625, 0.02798625, 0.10175804], [1517124360000, 0.02819365, 0.02819365, 0.02819365, 0.02819365, 0.4605439], [1517124420000, 0.0281, 0.028225, 0.0281, 0.02822499, 0.86301415], [1517124480000, 0.02798948, 0.02798997, 0.02798948, 0.02798997, 6.41715887], [1517124540000, 0.02799005, 0.02822433, 0.02799005, 0.02799049, 22.8323529], [1517124600000, 0.02799049, 0.02799049, 0.02799049, 0.02799049, 2.77867777], [1517124660000, 0.02822328, 0.02822328, 0.02799049, 0.0279905, 13.74665578], [1517124720000, 0.0282228, 0.0282228, 0.02799051, 0.0282228, 1.05945289], [1517124780000, 0.02799051, 0.02799051, 0.02799051, 0.02799051, 0.09549037], [1517124840000, 0.02799051, 0.02799051, 0.02799051, 0.02799051, 3.92645539], [1517124900000, 0.02799051, 0.02799051, 0.02799051, 0.02799051, 1.43434323], [1517125080000, 0.02799051, 0.02799051, 0.02799051, 0.02799051, 0.34287085], [1517125140000, 0.02799051, 0.02799051, 0.02797391, 0.02797391, 3.01752101], [1517125260000, 0.02822055, 0.02822055, 0.02822004, 0.02822004, 0.48431577], [1517125380000, 0.02821799, 0.02821799, 0.02821799, 0.02821799, 5.99398951], [1517125440000, 0.0279741, 0.02821736, 0.0279741, 0.02821736, 6.83719704], [1517125500000, 0.02821643, 0.02821643, 0.02821643, 0.02821643, 0.11655066], [1517125620000, 0.02821547, 0.02821547, 0.02809526, 0.02809526, 0.19101154], [1517125680000, 0.02809526, 0.02809526, 0.02809526, 0.02809526, 0.7516482], [1517125740000, 0.02809526, 0.02809526, 0.02809526, 0.02809526, 0.26352493], [1517125800000, 0.02809526, 0.02809526, 0.02809525, 0.02809525, 0.07882337], [1517125860000, 0.02809525, 0.02809525, 0.0280952, 0.0280952, 0.11744212], [1517125920000, 0.02809519, 0.02809519, 0.02797397, 0.02809519, 13.44341593], [1517125980000, 0.028, 0.02809519, 0.028, 0.02809519, 0.80489562], [1517126040000, 0.028, 0.028, 0.028, 0.028, 4.75866352], [1517126100000, 0.02799999, 0.02805, 0.02799999, 0.02805, 12.4852882], [1517126160000, 0.02805, 0.02805, 0.02805, 0.02805, 0.0787502], [1517126220000, 0.02805, 0.02805, 0.02805, 0.02805, 0.03936124], [1517126280000, 0.02805, 0.02805, 0.02805, 0.02805, 1.54251346], [1517126520000, 0.02805, 0.02809481, 0.02805, 0.02809481, 0.66461113], [1517126640000, 0.02809419, 0.02809419, 0.02792173, 0.02792173, 9.8648083], [1517126700000, 0.028, 0.028, 0.02792173, 0.028, 0.93100916], [1517126760000, 0.028, 0.028, 0.02792173, 0.028, 0.41404361], [1517126820000, 0.028, 0.028, 0.02796081, 0.02796081, 0.07897104], [1517126880000, 0.02792173, 0.028, 0.02792172, 0.028, 11.58789073], [1517126940000, 0.028, 0.028, 0.028, 0.028, 0.07897126], [1517127000000, 0.028, 0.028, 0.028, 0.028, 1.27647126], [1517127060000, 0.028, 0.028, 0.028, 0.028, 2.33908133], [1517127120000, 0.028, 0.028, 0.028, 0.028, 0.22127733], [1517127180000, 0.028, 0.028, 0.028, 0.028, 0.03948563], [1517127240000, 0.02792172, 0.028, 0.02792172, 0.028, 1.34594625], [1517127300000, 0.028, 0.028, 0.028, 0.028, 1.29135237], [1517127360000, 0.028, 0.028, 0.028, 0.028, 26.87849403], [1517127420000, 0.02793001, 0.028, 0.02793001, 0.028, 30.48557071], [1517127480000, 0.028, 0.028, 0.028, 0.028, 5.22066527], [1517127540000, 0.0280168, 0.0280168, 0.0280168, 0.0280168, 0.03948527], [1517127600000, 0.0280168, 0.02805, 0.0280168, 0.02805, 0.50923214], [1517127660000, 0.02805, 0.02805, 0.02805, 0.02805, 2.77272461], [1517127780000, 0.02805, 0.02805, 0.02805, 0.02805, 0.35650624], [1517127840000, 0.02805, 0.02805, 0.02805, 0.02805, 0.11882118], [1517127900000, 0.02805, 0.02805, 0.02805, 0.02805, 0.03693446], [1517128020000, 0.02805, 0.02805, 0.02805, 0.02805, 1.48153412], [1517128080000, 0.02805, 0.02805, 0.02805, 0.02805, 1.18829486], [1517128140000, 0.02807244, 0.02809526, 0.02805, 0.02805, 4.77163003], [1517128260000, 0.02809526, 0.02809526, 0.02809526, 0.02809526, 0.19753348], [1517128320000, 0.02809526, 0.02809526, 0.02809526, 0.02809526, 0.02080945], [1517128380000, 0.02809526, 0.02809526, 0.02809526, 0.02809526, 1.0], [1517128440000, 0.02809526, 0.02809526, 0.02809526, 0.02809526, 0.78880867], [1517128620000, 0.02815, 0.02815, 0.02804, 0.02804, 0.35535519], [1517128680000, 0.02802318, 0.02802318, 0.02802318, 0.02802318, 2.74221332], [1517128740000, 0.02802318, 0.02802318, 0.0280168, 0.0280168, 1.11387365], [1517128800000, 0.0280168, 0.0280168, 0.02801157, 0.02801157, 1.59868441], [1517128860000, 0.028, 0.02815, 0.028, 0.02815, 4.16963913], [1517128980000, 0.02815, 0.02815, 0.028, 0.028, 14.91785984], [1517129040000, 0.02815, 0.02821476, 0.02815, 0.02821476, 0.72746846], [1517129100000, 0.02821465, 0.02821465, 0.02821465, 0.02821465, 0.66108657], [1517129160000, 0.02821398, 0.02821398, 0.02821398, 0.02821398, 0.02540868], [1517129220000, 0.02821335, 0.02821335, 0.02821332, 0.02821332, 7.52517598], [1517129280000, 0.02821318, 0.02821318, 0.02821292, 0.02821292, 0.11766192], [1517129340000, 0.02821343, 0.02821343, 0.028, 0.028, 2.38047999], [1517129400000, 0.02821329, 0.02821335, 0.02821329, 0.02821335, 25.0], [1517129460000, 0.02798329, 0.02798329, 0.02798329, 0.02798329, 0.35], [1517129580000, 0.02798429, 0.02798429, 0.02798429, 0.02798429, 9.21303728], [1517129640000, 0.027985, 0.027985, 0.027985, 0.027985, 0.32254943], [1517129880000, 0.02798747, 0.0279878, 0.02798747, 0.0279878, 1.5], [1517129940000, 0.02798831, 0.02798831, 0.02798831, 0.02798831, 0.07643903], [1517130000000, 0.02821365, 0.02821528, 0.02821365, 0.02821528, 0.1069359], [1517130240000, 0.02820826, 0.02820826, 0.02820826, 0.02820826, 3.76489835], [1517130480000, 0.02799503, 0.02799503, 0.02799503, 0.02799503, 1.5], [1517130660000, 0.02799502, 0.02820688, 0.02799502, 0.02820688, 0.2390402], [1517130720000, 0.02820688, 0.02820688, 0.02820688, 0.02820688, 0.06443722], [1517130840000, 0.02820688, 0.02820688, 0.02820688, 0.02820688, 0.65452343], [1517131080000, 0.02820688, 0.02820688, 0.02820688, 0.02820688, 0.0570074], [1517131200000, 0.02820688, 0.02820688, 0.02820688, 0.02820688, 1.83256923], [1517131260000, 0.02820669, 0.02820669, 0.02805, 0.02805, 8.60295576], [1517131320000, 0.02820688, 0.02821532, 0.02820688, 0.02821532, 3.69539051], [1517131440000, 0.02801203, 0.02801203, 0.02801203, 0.02801203, 1.17754387], [1517131500000, 0.02821529, 0.02821529, 0.02820685, 0.02820685, 1.31948922], [1517131680000, 0.02820688, 0.02820688, 0.02820688, 0.02820688, 0.08964645], [1517131800000, 0.02820685, 0.02820685, 0.02820685, 0.02820685, 0.03590694], [1517131860000, 0.02820685, 0.02820685, 0.02820684, 0.02820684, 0.78504974], [1517131920000, 0.02820684, 0.02820684, 0.02820684, 0.02820684, 2.44612406], [1517131980000, 0.02820684, 0.02820684, 0.0282, 0.0282, 1.43588956], [1517132040000, 0.0282, 0.0282, 0.0282, 0.0282, 0.49604793], [1517132100000, 0.0282, 0.02820684, 0.0282, 0.02820684, 0.75734187], [1517132160000, 0.02820659, 0.02820659, 0.02820659, 0.02820659, 1.06], [1517132220000, 0.02820659, 0.02820659, 0.02820659, 0.02820659, 0.0010687], [1517132400000, 0.02820659, 0.02820659, 0.02820659, 0.02820659, 1.75972994], [1517132580000, 0.02820658, 0.02820658, 0.02819995, 0.02819995, 0.57606009], [1517132640000, 0.02819995, 0.0282, 0.02799532, 0.0282, 0.32184892], [1517132700000, 0.02819995, 0.02819995, 0.02819992, 0.02819995, 1.43844472], [1517132760000, 0.02819994, 0.02819994, 0.02819994, 0.02819994, 0.03583432], [1517132820000, 0.02799526, 0.02799526, 0.0279915, 0.0279915, 2.04437137], [1517132880000, 0.02799526, 0.02799526, 0.02799526, 0.02799526, 1.12895843], [1517132940000, 0.02799526, 0.02799526, 0.02799202, 0.02799526, 27.65795513], [1517133000000, 0.02799526, 0.02799526, 0.0279923, 0.02799526, 4.03173786], [1517133060000, 0.02799526, 0.02799526, 0.02799526, 0.02799526, 0.40169904], [1517133120000, 0.02799526, 0.02799526, 0.02799267, 0.02799526, 0.11335077], [1517133180000, 0.02799526, 0.02799526, 0.02799526, 0.02799526, 1.12315327], [1517133240000, 0.02799526, 0.02799526, 0.02799526, 0.02799526, 0.43377104], [1517133300000, 0.02799526, 0.02799526, 0.02799526, 0.02799526, 26.34306815], [1517133360000, 0.02799526, 0.02799526, 0.02799526, 0.02799526, 0.09946026], [1517133420000, 0.02799526, 0.02799526, 0.02799355, 0.02799526, 1.63760196], [1517133480000, 0.02799526, 0.02799526, 0.02799526, 0.02799526, 10.15447197], [1517133540000, 0.02799526, 0.02799526, 0.02799397, 0.02799397, 0.71091699], [1517133600000, 0.02799416, 0.02799526, 0.02799416, 0.02799526, 1.41396467], [1517133660000, 0.02799526, 0.02799526, 0.02799526, 0.02799526, 0.07877068], [1517133720000, 0.02799526, 0.02799526, 0.02799526, 0.02799526, 0.78138409], [1517133780000, 0.02799526, 0.02799526, 0.02799526, 0.02799526, 0.38672453], [1517133840000, 0.02799526, 0.02799526, 0.02799526, 0.02799526, 1.36742866], [1517133900000, 0.02799526, 0.02799526, 0.02799526, 0.02799526, 1.48095859], [1517133960000, 0.02799526, 0.02802326, 0.02799416, 0.02799416, 9.33816276], [1517134020000, 0.02806525, 0.02820683, 0.02806525, 0.02820683, 1.31575811], [1517134140000, 0.0282068, 0.0282068, 0.0282068, 0.0282068, 0.35649725], [1517134200000, 0.02799419, 0.02799419, 0.02799419, 0.02799419, 0.9975], [1517134260000, 0.02820662, 0.02820662, 0.02820662, 0.02820662, 0.18592923], [1517134440000, 0.02820675, 0.02820675, 0.02820675, 0.02820675, 0.03718578], [1517134500000, 0.02820667, 0.02820668, 0.02820667, 0.02820667, 1.06157022], [1517134740000, 0.02820667, 0.02820667, 0.02820667, 0.02820667, 1.75074912], [1517134800000, 0.02820667, 0.02820681, 0.02820667, 0.02820681, 0.9641809], [1517134860000, 0.02820681, 0.02820681, 0.0282067, 0.0282067, 2.17296321], [1517134920000, 0.02820667, 0.02820667, 0.02800105, 0.02820667, 2.95055584], [1517135040000, 0.02820664, 0.02820664, 0.02817804, 0.02817804, 0.51379089], [1517135160000, 0.02817804, 0.02817804, 0.02800009, 0.02800021, 6.39259725], [1517135220000, 0.02820679, 0.0282068, 0.02820678, 0.02820678, 0.52746686], [1517135280000, 0.02820678, 0.0282068, 0.02820678, 0.02820678, 1.55001475], [1517135340000, 0.02820678, 0.02820681, 0.02820678, 0.02820681, 1.40657385], [1517135400000, 0.02820681, 0.02820681, 0.02820678, 0.02820681, 0.61065825], [1517135460000, 0.02820681, 0.02820684, 0.02820681, 0.02820684, 0.15738742], [1517135520000, 0.02820681, 0.02820681, 0.028, 0.028, 6.70962922], [1517135700000, 0.02820664, 0.02820664, 0.02801302, 0.02820664, 2.47941833], [1517135880000, 0.02820675, 0.02820676, 0.02820675, 0.02820675, 2.96332994], [1517135940000, 0.02820676, 0.02820683, 0.02820676, 0.02820676, 0.30989372], [1517136000000, 0.02820682, 0.02822395, 0.02820675, 0.02822395, 18.877301], [1517136060000, 0.02822395, 0.02822395, 0.02822394, 0.02822395, 26.17380639], [1517136120000, 0.02822395, 0.02822395, 0.02822394, 0.02822395, 7.06031102], [1517136180000, 0.02822395, 0.02822395, 0.02815338, 0.02822393, 15.93842903], [1517136240000, 0.02816749, 0.02822395, 0.02816749, 0.02822395, 4.28242826], [1517136300000, 0.02822394, 0.02822395, 0.02808486, 0.02822395, 10.57608931], [1517136360000, 0.02822395, 0.02827499, 0.02799419, 0.02827499, 6.63440231], [1517136420000, 0.02827498, 0.0283, 0.02824999, 0.0283, 5.04508802], [1517136480000, 0.0283, 0.02832768, 0.02800767, 0.0283276, 1.87703388], [1517136540000, 0.0283276, 0.0283276, 0.0283, 0.0283, 0.48663151], [1517136600000, 0.0283, 0.02832746, 0.02800885, 0.02832746, 5.93041055], [1517136660000, 0.02801594, 0.02832746, 0.02800878, 0.02832735, 5.43121504], [1517136720000, 0.02832731, 0.02832731, 0.02800522, 0.02800522, 1.34347672], [1517136780000, 0.02832483, 0.02832483, 0.02832483, 0.02832483, 0.05393107], [1517136840000, 0.02832479, 0.02832479, 0.02832479, 0.02832479, 0.03109299], [1517136900000, 0.02832472, 0.02832472, 0.02832199, 0.02832199, 3.5304875], [1517136960000, 0.02832199, 0.028322, 0.028318, 0.028318, 2.22193736], [1517137020000, 0.028322, 0.028322, 0.028322, 0.028322, 0.04351564], [1517137200000, 0.02832, 0.02832471, 0.028316, 0.02832471, 9.22295579], [1517137260000, 0.02832199, 0.02832199, 0.028316, 0.028316, 2.20096583], [1517137440000, 0.02812001, 0.02812001, 0.02812001, 0.02812001, 0.05154385], [1517137500000, 0.02812001, 0.0283097, 0.02812, 0.02812, 2.48933139], [1517137560000, 0.02812002, 0.02830955, 0.02812002, 0.02830955, 0.28724706], [1517137620000, 0.02830939, 0.02830939, 0.02830939, 0.02830939, 0.05444004], [1517137740000, 0.02830862, 0.02830862, 0.02830862, 0.02830862, 0.06367531], [1517137800000, 0.02830836, 0.02830836, 0.02830835, 0.02830836, 1.05975609], [1517137860000, 0.02830825, 0.02830825, 0.02812002, 0.02830816, 54.86067679], [1517137920000, 0.02830812, 0.02830812, 0.02812, 0.02812, 1.54139157], [1517137980000, 0.02812, 0.02830763, 0.02812, 0.02830763, 2.91242369], [1517138040000, 0.02812026, 0.02812026, 0.0281202, 0.0281202, 0.20823881], [1517138100000, 0.02812, 0.02830721, 0.02812, 0.02830719, 7.64931304], [1517138160000, 0.02812003, 0.02812003, 0.0281, 0.02810401, 19.98612667], [1517138220000, 0.02810401, 0.02829582, 0.028104, 0.028104, 4.46212025], [1517138400000, 0.02819976, 0.02829376, 0.02819976, 0.02829376, 0.35461244], [1517138460000, 0.028104, 0.028104, 0.028104, 0.028104, 2.23920776], [1517138520000, 0.028285, 0.028285, 0.028285, 0.028285, 0.3691264], [1517138580000, 0.02828148, 0.02828148, 0.02828089, 0.02828089, 7.15979052], [1517138640000, 0.028104, 0.028104, 0.028104, 0.028104, 0.08359544], [1517138700000, 0.028104, 0.028104, 0.02796844, 0.02796875, 85.37645983], [1517138760000, 0.02826995, 0.02826995, 0.02826995, 0.02826995, 0.08486155], [1517138820000, 0.0282499, 0.0282499, 0.0282, 0.0282, 1.05290661], [1517138940000, 0.028002, 0.02820003, 0.028002, 0.02820003, 0.99672106], [1517139000000, 0.02824902, 0.02824902, 0.02820003, 0.02820003, 1.99219536], [1517139060000, 0.02820003, 0.02820003, 0.0282, 0.0282, 18.59639848], [1517139120000, 0.0282, 0.0282, 0.0282, 0.0282, 0.16544681], [1517139180000, 0.0282, 0.0282, 0.028024, 0.0282, 1.77957996], [1517139240000, 0.02819992, 0.02819992, 0.02819992, 0.02819992, 0.1238436], [1517139300000, 0.02819991, 0.02819991, 0.028024, 0.028024, 1.81435717], [1517139360000, 0.02819997, 0.02819997, 0.02800721, 0.02819996, 0.16234049], [1517139420000, 0.02800735, 0.02800735, 0.02800734, 0.02800734, 1.2287519], [1517139480000, 0.02800724, 0.02819996, 0.02800723, 0.02819996, 4.10518912], [1517139540000, 0.02819995, 0.02819996, 0.02799386, 0.028009, 32.45479], [1517139600000, 0.028009, 0.02819996, 0.02800722, 0.02800975, 7.04709038], [1517139660000, 0.0281999, 0.02819996, 0.028009, 0.028009, 10.6184988], [1517139720000, 0.028009, 0.028009, 0.028009, 0.028009, 4.68514775], [1517139780000, 0.02806501, 0.02806502, 0.02800901, 0.02800901, 8.85486391], [1517139840000, 0.02800901, 0.02800901, 0.02800901, 0.02800901, 6.05582452], [1517139900000, 0.02800901, 0.02800901, 0.02798427, 0.02800901, 7.96159995], [1517139960000, 0.02800901, 0.02800901, 0.028009, 0.02800901, 23.64904367], [1517140020000, 0.02800901, 0.02800901, 0.02800901, 0.02800901, 0.0036141], [1517140080000, 0.02810093, 0.02810093, 0.02810093, 0.02810093, 0.09761227], [1517140140000, 0.02800918, 0.02815989, 0.02800915, 0.02815989, 14.3507018], [1517140200000, 0.02815987, 0.0281901, 0.02800942, 0.02800944, 37.15831827], [1517140260000, 0.02815984, 0.02815985, 0.02800946, 0.02815983, 8.96846006], [1517140320000, 0.02815983, 0.02815983, 0.0280095, 0.02815983, 0.25165532], [1517140380000, 0.02815983, 0.02815983, 0.0280846, 0.02815983, 0.44024994], [1517140440000, 0.02815983, 0.02815985, 0.02815983, 0.02815984, 9.67851829], [1517140500000, 0.0281598, 0.0281598, 0.02815979, 0.0281598, 2.48581305], [1517140560000, 0.0281598, 0.0281598, 0.0281598, 0.0281598, 2.0], [1517140620000, 0.0281598, 0.02815981, 0.0281598, 0.02815981, 5.73380031], [1517140680000, 0.02815981, 0.02815982, 0.02815981, 0.02815981, 8.15682613], [1517140740000, 0.02815981, 0.02815981, 0.0281598, 0.0281598, 7.80227227], [1517140800000, 0.0281598, 0.02815981, 0.0281598, 0.02815981, 1.52662431], [1517140860000, 0.02815981, 0.02815985, 0.0281598, 0.02815981, 13.91214392], [1517140920000, 0.02815981, 0.02815981, 0.0281598, 0.0281598, 1.29451229], [1517140980000, 0.0281598, 0.02815985, 0.02810547, 0.02810547, 6.62645236], [1517141040000, 0.02810547, 0.02810547, 0.02810547, 0.02810547, 1.00327682], [1517141100000, 0.02815984, 0.0281901, 0.02815984, 0.0281901, 2.87185636], [1517141160000, 0.02819009, 0.02819009, 0.02819009, 0.02819009, 0.04185526], [1517141220000, 0.0281901, 0.0281901, 0.02815984, 0.02815984, 0.85346798], [1517141280000, 0.02812886, 0.02815984, 0.0280846, 0.02815984, 1.97679747], [1517141340000, 0.02815983, 0.02815983, 0.02815983, 0.02815983, 0.0520865], [1517141400000, 0.02815983, 0.0281901, 0.0280846, 0.0281901, 4.5535506], [1517141460000, 0.02819007, 0.02826516, 0.0280846, 0.02826515, 5.31951605], [1517141520000, 0.02826515, 0.02826515, 0.02826502, 0.02826502, 0.18538646], [1517141580000, 0.02826499, 0.02826499, 0.02826499, 0.02826499, 0.06658386], [1517141640000, 0.02826499, 0.02826499, 0.0282649, 0.0282649, 0.2689846], [1517141700000, 0.0282649, 0.0282649, 0.02808537, 0.02826488, 3.46727159], [1517141760000, 0.02826488, 0.02827292, 0.02826487, 0.02826487, 6.08095155], [1517141820000, 0.02826487, 0.02826487, 0.0280862, 0.0280862, 9.09642235], [1517141880000, 0.02826486, 0.02826487, 0.02808621, 0.02826486, 9.30676392], [1517141940000, 0.02826486, 0.02826487, 0.02826486, 0.02826487, 16.36936309], [1517142000000, 0.02808472, 0.02826487, 0.02808472, 0.02826487, 4.73365898], [1517142060000, 0.02826487, 0.02826487, 0.02808472, 0.02826487, 4.06351794], [1517142120000, 0.02808472, 0.02826484, 0.0280846, 0.02826484, 0.48419239], [1517142180000, 0.02826482, 0.02826483, 0.02826482, 0.02826483, 1.0], [1517142240000, 0.0282648, 0.02826483, 0.0282648, 0.02826483, 1.55798438], [1517142300000, 0.0280846, 0.02826484, 0.0280846, 0.02826484, 3.32696908], [1517142360000, 0.02826484, 0.02826487, 0.0280846, 0.02826487, 8.47042978], [1517142420000, 0.02826487, 0.02830718, 0.02806778, 0.02829996, 8.18045899], [1517142480000, 0.02805616, 0.02805616, 0.02803918, 0.02803918, 5.75522591], [1517142540000, 0.02829989, 0.02829989, 0.02829989, 0.02829989, 0.04027507], [1517142600000, 0.02829988, 0.02829988, 0.02829987, 0.02829988, 1.09721346], [1517142660000, 0.02829987, 0.02829988, 0.02829987, 0.02829988, 2.82686504], [1517142720000, 0.02829988, 0.02829988, 0.02829896, 0.02829896, 1.46843252], [1517142840000, 0.02829895, 0.02829895, 0.02804298, 0.02804298, 1.23295004], [1517142900000, 0.02823626, 0.02829994, 0.02804788, 0.02829991, 13.54912472], [1517143020000, 0.02804852, 0.02829991, 0.02804847, 0.02829991, 3.04283309], [1517143080000, 0.02829964, 0.02829964, 0.02829949, 0.02829949, 0.09788509], [1517143140000, 0.02829947, 0.02829949, 0.02829947, 0.02829948, 10.39177173], [1517143200000, 0.02829947, 0.02830719, 0.02829946, 0.02830719, 16.75735909], [1517143260000, 0.02830719, 0.02830719, 0.02830718, 0.02830718, 0.18614257], [1517143320000, 0.02804985, 0.02804985, 0.02804985, 0.02804985, 0.17968449], [1517143440000, 0.02804992, 0.02805013, 0.02804992, 0.02805013, 2.06368769], [1517143500000, 0.02805021, 0.02830719, 0.02805021, 0.02830719, 2.92398947], [1517143560000, 0.02830711, 0.02830711, 0.02830711, 0.02830711, 0.36219536], [1517143620000, 0.02830711, 0.02830711, 0.02805101, 0.02805101, 1.91817132], [1517143680000, 0.0283, 0.02830711, 0.02823491, 0.02823491, 0.39191229], [1517143740000, 0.02823491, 0.02823491, 0.02804881, 0.02804881, 1.17008968], [1517143800000, 0.02804881, 0.02819009, 0.02804881, 0.02819009, 2.07251358], [1517143860000, 0.0281, 0.0281, 0.0281, 0.0281, 2.0791706], [1517143920000, 0.02804964, 0.02830716, 0.02804964, 0.02830716, 2.37405523], [1517143980000, 0.02830718, 0.02830718, 0.02830718, 0.02830718, 0.87418426], [1517144040000, 0.02830719, 0.02830719, 0.02830718, 0.02830718, 13.14220355], [1517144100000, 0.02830718, 0.02830719, 0.02823243, 0.02823243, 2.93651654], [1517144160000, 0.02823243, 0.02823243, 0.02823243, 0.02823243, 0.35865953], [1517144220000, 0.02823243, 0.02830719, 0.02823243, 0.02830719, 0.80485761], [1517144280000, 0.02830719, 0.02830719, 0.02830719, 0.02830719, 9.43408093], [1517144340000, 0.02823243, 0.02823243, 0.02812367, 0.02812367, 0.48028616], [1517144400000, 0.02823243, 0.02823243, 0.02812384, 0.02823243, 1.44049554], [1517144460000, 0.02823243, 0.02823243, 0.02823243, 0.02823243, 1.49521523], [1517144520000, 0.02823243, 0.02826022, 0.02823243, 0.02826022, 1.95068876], [1517144580000, 0.02827799, 0.02830719, 0.02827799, 0.028278, 3.95131998], [1517144640000, 0.02829259, 0.02829259, 0.02826022, 0.02826022, 0.35430621], [1517144700000, 0.028278, 0.028278, 0.02823243, 0.028278, 0.35250776], [1517144760000, 0.028278, 0.028278, 0.028278, 0.028278, 1.03905092], [1517144820000, 0.02827799, 0.028278, 0.02823243, 0.02823243, 0.22238711], [1517144880000, 0.028278, 0.028278, 0.028278, 0.028278, 0.2175809], [1517144940000, 0.028278, 0.02832471, 0.02823243, 0.02832471, 7.96266998], [1517145000000, 0.02832471, 0.028325, 0.02832471, 0.028325, 0.35304875], [1517145060000, 0.02832499, 0.028499, 0.02832499, 0.028499, 41.6531536], [1517145120000, 0.02847399, 0.02855999, 0.02847399, 0.02849399, 14.23997077], [1517145180000, 0.028491, 0.02855929, 0.02830586, 0.02853938, 30.02337482], [1517145240000, 0.02845854, 0.02858237, 0.02830583, 0.02858236, 31.46887682], [1517145300000, 0.0284, 0.028425, 0.02828956, 0.02842499, 5.31370096], [1517145360000, 0.02845, 0.02855213, 0.02845, 0.02855213, 0.22918096], [1517145480000, 0.0283331, 0.0283331, 0.0283331, 0.0283331, 3.96686922], [1517145540000, 0.0283332, 0.0284441, 0.02823243, 0.02823243, 39.29588561], [1517145600000, 0.02819471, 0.02819471, 0.02815, 0.02815, 1.12967499], [1517145660000, 0.02815, 0.02833986, 0.02815, 0.02833986, 16.97078535], [1517145720000, 0.02832595, 0.02832595, 0.02815, 0.02815, 13.81232878], [1517145780000, 0.028125, 0.028125, 0.028125, 0.028125, 0.0392], [1517145840000, 0.02812501, 0.02812501, 0.02812501, 0.02812501, 0.03919999], [1517145900000, 0.02812502, 0.02829599, 0.02812502, 0.02812502, 2.55305491], [1517145960000, 0.02812502, 0.02829241, 0.028125, 0.02829241, 0.68283255], [1517146020000, 0.028125, 0.0282869, 0.028125, 0.02812501, 0.32839999], [1517146080000, 0.028125, 0.02812502, 0.028125, 0.02812502, 0.59883968], [1517146200000, 0.02828049, 0.02828071, 0.02820251, 0.02828068, 2.77289245], [1517146260000, 0.028125, 0.028125, 0.028125, 0.028125, 0.03399161], [1517146380000, 0.0282805, 0.0282807, 0.02820273, 0.0282807, 1.10753991], [1517146500000, 0.02828065, 0.02828065, 0.028125, 0.028125, 2.88356224], [1517146560000, 0.028125, 0.02828061, 0.028125, 0.02828061, 0.24501162], [1517146620000, 0.028125, 0.028125, 0.028125, 0.028125, 0.02], [1517146800000, 0.02828058, 0.02829759, 0.02828058, 0.02829759, 0.35359928], [1517146860000, 0.028125, 0.028125, 0.028125, 0.028125, 4.08727516], [1517146980000, 0.028125, 0.028125, 0.02802558, 0.02804578, 52.31073203], [1517147040000, 0.028075, 0.028075, 0.02804596, 0.02804599, 61.1438497], [1517147100000, 0.02828723, 0.02828723, 0.02816863, 0.02816863, 3.6470296], [1517147220000, 0.02805361, 0.028125, 0.02805357, 0.028125, 5.60395185], [1517147280000, 0.028125, 0.028125, 0.028125, 0.028125, 2.2454207], [1517147340000, 0.028125, 0.02814308, 0.028125, 0.02814307, 6.7362621], [1517147400000, 0.02828715, 0.02828722, 0.0282871, 0.02828722, 3.18165977], [1517147460000, 0.02828723, 0.02828724, 0.02807017, 0.02828724, 3.88868958], [1517147580000, 0.02818724, 0.02818724, 0.02818724, 0.02818724, 1.99887967], [1517147640000, 0.02818724, 0.02818724, 0.02818723, 0.02818723, 0.82549652], [1517147700000, 0.02818723, 0.02818724, 0.02818723, 0.02818724, 3.21104425], [1517147760000, 0.02818724, 0.02818724, 0.02818724, 0.02818724, 2.16783347], [1517147820000, 0.02818724, 0.02818724, 0.02818724, 0.02818724, 1.81677513], [1517147880000, 0.02818724, 0.02818724, 0.02818724, 0.02818724, 0.07841554], [1517147940000, 0.02818721, 0.02818724, 0.02818721, 0.02818724, 0.32013041], [1517148000000, 0.02818724, 0.02831972, 0.02818724, 0.02831972, 2.4323399], [1517148060000, 0.02831974, 0.0283257, 0.02818725, 0.02818725, 1.95868288], [1517148180000, 0.02832571, 0.02834011, 0.02832571, 0.02834011, 0.17114836], [1517148360000, 0.02834006, 0.02834006, 0.02834006, 0.02834006, 0.14250676], [1517148420000, 0.0283405, 0.0283405, 0.0283405, 0.0283405, 0.79915874], [1517148480000, 0.02818725, 0.02834043, 0.02818725, 0.02834043, 6.45517452], [1517148540000, 0.02834043, 0.02834043, 0.02834043, 0.02834043, 1.32990609], [1517148600000, 0.02834042, 0.02835253, 0.02834042, 0.02835253, 2.11681784], [1517148660000, 0.02835253, 0.02835253, 0.02835253, 0.02835253, 2.09546162], [1517148780000, 0.02835253, 0.02835253, 0.02835253, 0.02835253, 0.032922], [1517148840000, 0.0281875, 0.0281875, 0.0281875, 0.0281875, 0.23231531], [1517148900000, 0.02835252, 0.02835253, 0.02835252, 0.02835253, 0.35270258], [1517148960000, 0.02835253, 0.02835253, 0.02835253, 0.02835253, 0.19178725], [1517149020000, 0.0283525, 0.0283525, 0.0283525, 0.0283525, 0.14543271], [1517149080000, 0.0283525, 0.0283525, 0.02818856, 0.02818856, 0.42511801], [1517149140000, 0.02819007, 0.02835253, 0.02819007, 0.02835253, 3.01660551], [1517149260000, 0.02835253, 0.02835253, 0.02835253, 0.02835253, 0.71592146], [1517149380000, 0.02835253, 0.02835253, 0.02835253, 0.02835253, 0.80325022], [1517149440000, 0.02835259, 0.02835261, 0.02835259, 0.02835261, 0.06862895], [1517149500000, 0.02835261, 0.0284, 0.02835261, 0.0284, 1.36718109], [1517149560000, 0.0284, 0.028425, 0.0284, 0.028425, 0.2083284], [1517149620000, 0.0284, 0.0284, 0.02835259, 0.02835259, 9.25528964], [1517149680000, 0.02842495, 0.02842495, 0.02842495, 0.02842495, 0.20577406], [1517149800000, 0.02842479, 0.02842496, 0.02842479, 0.02842496, 0.35180546], [1517149860000, 0.02835259, 0.02835259, 0.02835259, 0.02835259, 0.11384608], [1517149920000, 0.02835259, 0.02835259, 0.02835259, 0.02835259, 0.74759142], [1517150040000, 0.02835259, 0.02835259, 0.02835259, 0.02835259, 0.03885408], [1517150160000, 0.02835259, 0.02835259, 0.02835259, 0.02835259, 6.07086592], [1517150220000, 0.02842498, 0.02842499, 0.02835259, 0.02842499, 1.20910751], [1517150280000, 0.02842499, 0.02858707, 0.02835261, 0.02835261, 110.49358533], [1517150340000, 0.02835261, 0.02835261, 0.02835261, 0.02835261, 1.27703562], [1517150400000, 0.02835261, 0.02835261, 0.02835261, 0.02835261, 0.23003601], [1517150460000, 0.02835261, 0.02835261, 0.02835259, 0.02835261, 5.17611146], [1517150520000, 0.02842498, 0.02842499, 0.02842498, 0.02842499, 3.45560413], [1517150580000, 0.02835259, 0.02842499, 0.02835259, 0.02842499, 5.45567178], [1517150640000, 0.02842499, 0.02845, 0.02842499, 0.02845, 9.71545263], [1517150700000, 0.02845, 0.02845, 0.02845, 0.02845, 0.96398725], [1517150760000, 0.02845909, 0.02845909, 0.02845909, 0.02845909, 0.12040014], [1517150820000, 0.02845909, 0.02845909, 0.02845909, 0.02845909, 7.38489862], [1517150940000, 0.02845909, 0.0284591, 0.02845909, 0.0284591, 0.18890833], [1517151000000, 0.0284591, 0.02847499, 0.0283526, 0.02847499, 0.45570823], [1517151060000, 0.02847498, 0.02850503, 0.02847498, 0.02850503, 0.65983724], [1517151180000, 0.0285, 0.0285, 0.0285, 0.0285, 0.43417547], [1517151240000, 0.0285, 0.02852803, 0.02849999, 0.02852803, 0.43768973], [1517151300000, 0.0283526, 0.02835261, 0.0283526, 0.0283526, 0.33777063], [1517151360000, 0.0283526, 0.0283526, 0.0283526, 0.0283526, 0.07777064], [1517151420000, 0.0283526, 0.0283526, 0.0283526, 0.0283526, 0.07777064], [1517151480000, 0.02852805, 0.02852805, 0.02852805, 0.02852805, 6.44913984], [1517151540000, 0.02852805, 0.02852806, 0.02852805, 0.02852806, 0.06272818], [1517151780000, 0.02852805, 0.02852805, 0.02852805, 0.02852805, 16.61553902], [1517151900000, 0.02852805, 0.02856296, 0.02852805, 0.02856293, 3.15311238], [1517151960000, 0.02856293, 0.02856293, 0.02856293, 0.02856293, 2.61900133], [1517152020000, 0.02835301, 0.02835301, 0.02835301, 0.02835301, 0.33557046], [1517152140000, 0.02835309, 0.02835309, 0.02835304, 0.02835304, 0.7917152], [1517152200000, 0.02835312, 0.02858576, 0.02835312, 0.02858576, 0.4001045], [1517152320000, 0.02858559, 0.02858559, 0.0284, 0.02858558, 0.86971065], [1517152380000, 0.02840001, 0.02858572, 0.0284, 0.02858565, 1.85277718], [1517152440000, 0.02840002, 0.02858566, 0.02840002, 0.02840002, 0.7611778], [1517152500000, 0.02858397, 0.028584, 0.02840002, 0.028584, 6.110365], [1517152560000, 0.028584, 0.028598, 0.02840002, 0.02840006, 4.04450505], [1517152620000, 0.02857397, 0.02857397, 0.02857397, 0.02857397, 0.18823827], [1517152680000, 0.02857397, 0.02859799, 0.02857397, 0.02857397, 1.35987982], [1517152740000, 0.02845, 0.02851, 0.02845, 0.02845, 0.4534359], [1517152800000, 0.02857396, 0.02859979, 0.02845, 0.02845, 3.62907102], [1517152860000, 0.02859979, 0.02859979, 0.02859976, 0.02859978, 5.39516796], [1517152980000, 0.028597, 0.028597, 0.0285, 0.0285, 1.11483396], [1517153040000, 0.0285, 0.02858697, 0.0285, 0.0285, 7.25171613], [1517153100000, 0.0285, 0.0285, 0.02840978, 0.02840978, 20.57675912], [1517153160000, 0.02840978, 0.02840978, 0.02840002, 0.02840975, 0.78318698], [1517153280000, 0.02840977, 0.02840981, 0.02840977, 0.02840981, 1.103142], [1517153340000, 0.02840004, 0.02840004, 0.02840003, 0.02840003, 2.0], [1517153400000, 0.02840981, 0.02852638, 0.02840981, 0.02852638, 0.35199121], [1517153460000, 0.02840003, 0.02840003, 0.0284, 0.02840003, 3.02368108], [1517153520000, 0.02840003, 0.02840003, 0.02840003, 0.02840003, 0.02833698], [1517153580000, 0.02840007, 0.02840007, 0.02840007, 0.02840007, 0.1136593], [1517153640000, 0.02840005, 0.02840005, 0.02840005, 0.02840005, 0.03123151], [1517153700000, 0.0284001, 0.02852634, 0.0284001, 0.02852634, 0.37997406], [1517153760000, 0.02852634, 0.02852638, 0.02840005, 0.02852638, 0.39449535], [1517153820000, 0.02840005, 0.02840005, 0.02840005, 0.02840005, 0.26818321], [1517153880000, 0.02852635, 0.02852635, 0.02852635, 0.02852635, 2.39834816], [1517153940000, 0.02852635, 0.02852635, 0.02840005, 0.02840005, 6.03737293], [1517154000000, 0.02840006, 0.02844422, 0.02840006, 0.02844422, 0.35984948], [1517154120000, 0.02844419, 0.02844419, 0.02844419, 0.02844419, 0.08801693], [1517154180000, 0.02844419, 0.02844422, 0.02844419, 0.02844422, 0.28823748], [1517154240000, 0.02840005, 0.02840005, 0.02840005, 0.02840005, 0.12248314], [1517154300000, 0.02844422, 0.02852635, 0.02844422, 0.02852635, 0.35156552], [1517154420000, 0.02840005, 0.02840005, 0.02840005, 0.02840005, 2.53306], [1517154480000, 0.02840505, 0.02840505, 0.02840005, 0.02840005, 0.42629373], [1517154540000, 0.02852636, 0.02852637, 0.02852636, 0.02852637, 3.49641402], [1517154780000, 0.02840005, 0.02840005, 0.02840005, 0.02840005, 0.06584527], [1517154900000, 0.02852634, 0.02852635, 0.02852634, 0.02852635, 0.70110738], [1517155020000, 0.02843, 0.02843, 0.02843, 0.02843, 0.03877946], [1517155080000, 0.02843, 0.02843, 0.02843, 0.02843, 0.03877946], [1517155140000, 0.02843, 0.02852634, 0.02843, 0.02843, 0.35401365], [1517155200000, 0.02843, 0.02852634, 0.02843, 0.02852634, 2.1198274], [1517155260000, 0.02852634, 0.02852634, 0.02843, 0.02843, 2.13594791], [1517155380000, 0.02852633, 0.02852634, 0.02843, 0.02852634, 1.25546881], [1517155440000, 0.02843, 0.02852634, 0.02843, 0.02852634, 6.77114467], [1517155500000, 0.02852634, 0.02852634, 0.02852634, 0.02852634, 4.13528843], [1517155560000, 0.02852634, 0.02852635, 0.02852634, 0.02852635, 0.09322765], [1517155620000, 0.02852634, 0.02852634, 0.02852634, 0.02852634, 1.08498496], [1517155680000, 0.02852634, 0.02854038, 0.02852634, 0.02854038, 0.55273669], [1517155800000, 0.0284001, 0.02852634, 0.0284001, 0.02852634, 0.84769841], [1517155860000, 0.02852634, 0.02852634, 0.02852634, 0.02852634, 0.03137477], [1517155920000, 0.02852634, 0.02852634, 0.02852634, 0.02852634, 0.05440741], [1517156040000, 0.02852634, 0.02852634, 0.02852634, 0.02852634, 0.04339954], [1517156100000, 0.02852633, 0.02852634, 0.02852633, 0.02852634, 0.72320976], [1517156160000, 0.0284001, 0.02852634, 0.02840005, 0.02852634, 2.06187612], [1517156220000, 0.02852634, 0.02852634, 0.02852634, 0.02852634, 2.61143093], [1517156280000, 0.02852634, 0.02852634, 0.02840005, 0.02840005, 3.02169959], [1517156400000, 0.02840005, 0.02852633, 0.02840005, 0.02840005, 211.44171558], [1517156580000, 0.02852633, 0.02852634, 0.02852633, 0.02852634, 0.08269586], [1517156640000, 0.02852634, 0.02852634, 0.02852634, 0.02852634, 1.92874619], [1517156760000, 0.02852634, 0.02852634, 0.02852632, 0.02852632, 1.63931609], [1517156820000, 0.02852633, 0.02852633, 0.02852633, 0.02852633, 0.01195596], [1517156880000, 0.02852634, 0.02853487, 0.028405, 0.028405, 5.87758553], [1517157000000, 0.028405, 0.02852595, 0.028405, 0.028405, 3.37670274], [1517157060000, 0.028405, 0.02852595, 0.02840005, 0.02852595, 4.00153551], [1517157180000, 0.02840005, 0.02840005, 0.02840005, 0.02840005, 5.97438473], [1517157240000, 0.02840005, 0.02840005, 0.02840005, 0.02840005, 0.19748082], [1517157300000, 0.02840005, 0.02850799, 0.02840005, 0.02850799, 1.7998036], [1517157360000, 0.02840005, 0.02853487, 0.02840005, 0.02853487, 89.65850136], [1517157420000, 0.02840005, 0.02840005, 0.02840005, 0.02840005, 0.6973877], [1517157480000, 0.02840005, 0.02853487, 0.02840005, 0.02853487, 7.31330732], [1517157600000, 0.02853486, 0.02853487, 0.02847816, 0.02847816, 2.60302052], [1517157660000, 0.02847816, 0.02847816, 0.02840005, 0.02840005, 10.93990146], [1517157720000, 0.02843804, 0.02843804, 0.02843804, 0.02843804, 0.21059088], [1517157840000, 0.02843804, 0.02843805, 0.02840005, 0.02840005, 1.03882065], [1517157900000, 0.02840005, 0.02843805, 0.02840005, 0.02843805, 0.40734235], [1517158080000, 0.02843804, 0.02843804, 0.02843804, 0.02843804, 0.02658155], [1517158140000, 0.02843804, 0.02843804, 0.02843804, 0.02843804, 0.18482312], [1517158200000, 0.02843804, 0.02843804, 0.02843804, 0.02843804, 0.84022443], [1517158260000, 0.02843803, 0.02843804, 0.02843803, 0.02843803, 1.76744849], [1517158320000, 0.02843804, 0.02843804, 0.02843804, 0.02843804, 0.03876878], [1517158380000, 0.02843804, 0.02843805, 0.02843803, 0.02843803, 0.56491282], [1517158440000, 0.02843805, 0.02843805, 0.02840005, 0.02840005, 37.80254768], [1517158500000, 0.02843804, 0.02853488, 0.02843804, 0.02853487, 4.87379662], [1517158560000, 0.02853487, 0.02853487, 0.02840005, 0.02840005, 24.62113808], [1517158680000, 0.0284001, 0.02840011, 0.0284001, 0.0284001, 3.08575771], [1517158740000, 0.0284001, 0.0284001, 0.0284001, 0.0284001, 3.53738731], [1517158800000, 0.02840011, 0.02853488, 0.02840011, 0.02853488, 0.7932955], [1517158860000, 0.02853488, 0.02856684, 0.02853488, 0.02856677, 4.50280004], [1517158920000, 0.0284001, 0.0284001, 0.0284001, 0.0284001, 0.09363341], [1517158980000, 0.02840011, 0.02856667, 0.02840011, 0.02856667, 0.0845758], [1517159040000, 0.02856647, 0.0285665, 0.02856647, 0.0285665, 2.0], [1517159100000, 0.02856629, 0.02856629, 0.02856629, 0.02856629, 0.35006283], [1517159280000, 0.0285661, 0.02856611, 0.0285661, 0.02856611, 0.1035063], [1517159340000, 0.02856596, 0.02856596, 0.0284001, 0.0284001, 2.07264792], [1517159400000, 0.02840012, 0.0285655, 0.02840005, 0.02840005, 68.65312531], [1517159460000, 0.0284005, 0.0284005, 0.02840005, 0.02840005, 1.00262677], [1517159520000, 0.02854438, 0.02856539, 0.02854436, 0.02856539, 18.27565933], [1517159580000, 0.02856299, 0.02856299, 0.02856299, 0.02856299, 0.15915391], [1517159640000, 0.02855697, 0.02855699, 0.02840005, 0.02840005, 14.44565373], [1517159700000, 0.02855691, 0.02855691, 0.02840005, 0.02855689, 26.34654292], [1517159760000, 0.02855687, 0.02855687, 0.02840005, 0.02840005, 82.90622642], [1517159820000, 0.02840006, 0.02853996, 0.02835259, 0.02835259, 225.3993593], [1517159940000, 0.02835259, 0.0283526, 0.02835259, 0.0283526, 8.6553346], [1517160000000, 0.0283526, 0.0285354, 0.02835259, 0.02853522, 15.95166893], [1517160180000, 0.0283527, 0.02850809, 0.02835269, 0.02850809, 1.79997291], [1517160240000, 0.02835269, 0.02853365, 0.02835259, 0.02853165, 7.5370925], [1517160300000, 0.02835259, 0.02835259, 0.0283247, 0.0283247, 196.40511554], [1517160360000, 0.02834999, 0.02834999, 0.02834999, 0.02834999, 0.07784728], [1517160420000, 0.02834998, 0.02834999, 0.02834998, 0.02834999, 0.07937612], [1517160480000, 0.02834999, 0.02835, 0.02834999, 0.02835, 20.26344802], [1517160540000, 0.02835, 0.02835, 0.02832474, 0.02835, 60.4503465], [1517160600000, 0.02835, 0.02835, 0.02835, 0.02835, 0.7164884], [1517160660000, 0.02835, 0.02835, 0.0283247, 0.0283247, 6.29262876], [1517160720000, 0.02835, 0.02835, 0.02835, 0.02835, 0.1058201], [1517160780000, 0.02835, 0.02835, 0.02829401, 0.02829401, 79.21645613], [1517160840000, 0.02835, 0.02835, 0.02835, 0.02835, 0.73542116], [1517160900000, 0.02832499, 0.02832499, 0.02829401, 0.02829401, 0.17359935], [1517160960000, 0.02829402, 0.02835, 0.02829399, 0.02835, 3.78914521], [1517161020000, 0.02835, 0.02835, 0.02835, 0.02835, 0.38675716], [1517161080000, 0.02835, 0.02835, 0.02835, 0.02835, 0.07793232], [1517161140000, 0.02835, 0.02835, 0.02835, 0.02835, 0.03896616], [1517161320000, 0.02829405, 0.02829405, 0.02829405, 0.02829405, 1.8807858], [1517161380000, 0.02829405, 0.02829405, 0.02829405, 0.02829405, 4.69507838], [1517161440000, 0.02829405, 0.02836701, 0.02829405, 0.02836701, 1.04085932], [1517161560000, 0.02836701, 0.02836701, 0.02836701, 0.02836701, 5.47777295], [1517161740000, 0.028367, 0.02836701, 0.028367, 0.02836701, 0.25833128], [1517161800000, 0.02836701, 0.02836701, 0.02836698, 0.02836701, 1.9516558], [1517161860000, 0.0282941, 0.02836701, 0.0282941, 0.02836701, 0.34179631], [1517161920000, 0.02836699, 0.02836699, 0.02836699, 0.02836699, 0.1225713], [1517162100000, 0.02836693, 0.028367, 0.0283, 0.0283, 1.99694236], [1517162220000, 0.02836697, 0.02836697, 0.0282941, 0.0283, 1.15784217], [1517162280000, 0.0283, 0.0283, 0.0283, 0.0283, 2.29100647], [1517162340000, 0.028367, 0.02836701, 0.028367, 0.02836701, 76.77107575], [1517162400000, 0.0283, 0.02836701, 0.0283, 0.02836701, 0.41690729], [1517162460000, 0.02836701, 0.02836701, 0.02829411, 0.02836701, 6.02965277], [1517162520000, 0.02836701, 0.02852984, 0.02829412, 0.02852965, 82.08029385], [1517162580000, 0.02852961, 0.02852961, 0.02829411, 0.02852937, 3.58245326], [1517162640000, 0.02852937, 0.02852937, 0.02852937, 0.02852937, 0.3505156], [1517162700000, 0.02852852, 0.02852892, 0.02830009, 0.02852827, 192.55786683], [1517162760000, 0.0285282, 0.02852821, 0.02852797, 0.02852797, 3.62297506], [1517162880000, 0.0284, 0.02852769, 0.0284, 0.02852769, 0.09814053], [1517162940000, 0.02852771, 0.02852771, 0.02829417, 0.0283007, 16.76479275], [1517163000000, 0.0283007, 0.0283007, 0.02829417, 0.02829417, 45.94754182], [1517163060000, 0.0283007, 0.0283007, 0.02829419, 0.0283007, 13.94407431], [1517163120000, 0.0283007, 0.0283007, 0.0283007, 0.0283007, 3.02360553], [1517163180000, 0.0283007, 0.0283007, 0.02829422, 0.0283007, 12.71134487], [1517163240000, 0.0283007, 0.0283007, 0.02829425, 0.0283007, 9.81225138], [1517163300000, 0.0283007, 0.02853412, 0.02829428, 0.02852391, 90.06883837], [1517163420000, 0.02838505, 0.02838505, 0.02838505, 0.02838505, 0.0230041], [1517163480000, 0.0284, 0.0284, 0.0284, 0.0284, 0.0778281], [1517163540000, 0.0284, 0.0284, 0.0284, 0.0284, 0.21926994], [1517163600000, 0.0284, 0.02853177, 0.02833197, 0.02853177, 2.26473109], [1517163660000, 0.02853177, 0.02853178, 0.02853177, 0.02853178, 1.09171492], [1517163720000, 0.02853178, 0.02853178, 0.02853177, 0.02853177, 7.91465466], [1517163780000, 0.02853177, 0.02853178, 0.02853177, 0.02853177, 11.30323828], [1517163840000, 0.02853177, 0.02853178, 0.02853177, 0.02853177, 2.59175848], [1517163900000, 0.02853177, 0.02853178, 0.02853177, 0.02853177, 24.47187843], [1517163960000, 0.02853178, 0.02853178, 0.02853177, 0.02853177, 27.23686594], [1517164080000, 0.02853169, 0.02853178, 0.02853169, 0.02853178, 0.22676413], [1517164200000, 0.02845764, 0.02853138, 0.02845764, 0.02853138, 1.05238154], [1517164320000, 0.02853078, 0.02853078, 0.02853078, 0.02853078, 0.23334267], [1517164380000, 0.0284, 0.0284, 0.02829399, 0.02829399, 5.24384014], [1517164500000, 0.028294, 0.0284, 0.02829399, 0.028294, 37.96299402], [1517164560000, 0.0284, 0.0284, 0.0284, 0.0284, 0.34545159], [1517164620000, 0.02829401, 0.02829401, 0.028294, 0.028294, 4.28688037], [1517164680000, 0.02829401, 0.02829401, 0.02829401, 0.02829401, 1.20473514], [1517164800000, 0.0284, 0.0284, 0.02839999, 0.02839999, 3.16901403], [1517164860000, 0.02839999, 0.02839999, 0.02829401, 0.02839999, 3.68951885], [1517164920000, 0.0284, 0.0284, 0.0284, 0.0284, 0.03865002], [1517164980000, 0.028294, 0.028294, 0.028294, 0.028294, 1.95258603], [1517165100000, 0.0284, 0.028509, 0.0284, 0.02850892, 3.16763175], [1517165160000, 0.02850891, 0.02850891, 0.02829399, 0.028502, 7.4920554], [1517165280000, 0.02849353, 0.02849353, 0.02849352, 0.02849352, 0.08556118], [1517165340000, 0.02849337, 0.02849337, 0.02849337, 0.02849337, 0.18249882], [1517165400000, 0.02849278, 0.02849278, 0.02829407, 0.02849271, 5.25746481], [1517165460000, 0.02849257, 0.02849257, 0.02849257, 0.02849257, 0.02139084], [1517165520000, 0.02829405, 0.02849228, 0.02829405, 0.02849228, 0.36911914], [1517165580000, 0.02849193, 0.02849194, 0.02827501, 0.02827502, 12.92209848], [1517165640000, 0.02829399, 0.028294, 0.0282845, 0.0282845, 1.03110656], [1517165700000, 0.02827504, 0.028294, 0.02827504, 0.028294, 1.50112548], [1517165760000, 0.028294, 0.028294, 0.028294, 0.028294, 0.03897919], [1517165820000, 0.028294, 0.028294, 0.028294, 0.028294, 0.0779507], [1517165880000, 0.02828454, 0.028294, 0.02828454, 0.028294, 0.22319159], [1517165940000, 0.02828455, 0.028294, 0.02828455, 0.028294, 0.12724611], [1517166000000, 0.02829399, 0.02829399, 0.02828457, 0.02829399, 2.27404343], [1517166060000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 7.86830577], [1517166120000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 1.41372728], [1517166180000, 0.02829399, 0.02829399, 0.02828459, 0.02829399, 7.10436921], [1517166240000, 0.02828932, 0.02828932, 0.02828932, 0.02828932, 1.70188416], [1517166300000, 0.02829399, 0.02829399, 0.0282846, 0.02829399, 9.98720492], [1517166360000, 0.02829399, 0.02829399, 0.028275, 0.02829399, 13.56531356], [1517166540000, 0.028278, 0.028278, 0.028278, 0.028278, 0.07610832], [1517166600000, 0.028278, 0.028278, 0.028278, 0.028278, 4.35602646], [1517166660000, 0.028278, 0.02829399, 0.028278, 0.02829399, 2.55267601], [1517166720000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 0.43148532], [1517166780000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 0.03902675], [1517166900000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 3.41595608], [1517166960000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 0.0780535], [1517167020000, 0.02829399, 0.02829399, 0.02825001, 0.02825001, 0.34224082], [1517167080000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 0.14841623], [1517167140000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 0.03902675], [1517167200000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 4.85680528], [1517167260000, 0.02829399, 0.02829399, 0.02825002, 0.02829399, 2.08163616], [1517167320000, 0.02825003, 0.02829399, 0.02825003, 0.02829399, 1.38149253], [1517167380000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 0.0411664], [1517167500000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 7.35783275], [1517167620000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 0.03839662], [1517167800000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 1.41372728], [1517167920000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 2.10510862], [1517168100000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 2.47402274], [1517168340000, 0.02829399, 0.02829399, 0.02829399, 0.02829399, 0.1272355], [1517168400000, 0.02829399, 0.02829399, 0.02825012, 0.02829399, 0.70489278], [1517168460000, 0.02825012, 0.02825012, 0.02825011, 0.02825011, 0.27308773], [1517168520000, 0.02825012, 0.02829399, 0.02825, 0.02825, 6.33572362], [1517168580000, 0.02825, 0.02829399, 0.02821692, 0.02829399, 2.39700392], [1517168640000, 0.02821692, 0.02829399, 0.02821692, 0.02829399, 5.24392797], [1517168700000, 0.02825949, 0.02829397, 0.02821692, 0.02829396, 3.80567429], [1517168760000, 0.02821692, 0.02821692, 0.02821111, 0.02821692, 2.97688291], [1517168820000, 0.02821111, 0.02821111, 0.0281, 0.028175, 10.14187218], [1517168880000, 0.028175, 0.02829099, 0.02810858, 0.02814282, 1.94780811], [1517168940000, 0.02828098, 0.02828098, 0.02805085, 0.02805318, 4.31707521], [1517169000000, 0.02825694, 0.02825694, 0.028, 0.028, 22.64157676], [1517169060000, 0.02805001, 0.02822989, 0.028, 0.02805, 18.47096661], [1517169120000, 0.02805, 0.02821791, 0.02799999, 0.02800147, 6.01298163], [1517169180000, 0.02800009, 0.02819695, 0.02799999, 0.02799999, 12.23106135], [1517169240000, 0.02819082, 0.02819082, 0.02798313, 0.02798313, 48.89898884], [1517169300000, 0.02817, 0.02817, 0.02798314, 0.02809974, 1.91866084], [1517169360000, 0.02798314, 0.02809963, 0.02798021, 0.02798021, 0.52154996], [1517169420000, 0.02809889, 0.02809889, 0.02791, 0.02809868, 3.99915592], [1517169480000, 0.02809834, 0.02809834, 0.02791, 0.02791, 3.94007884], [1517169540000, 0.02792501, 0.02809727, 0.027925, 0.02809713, 79.09944025], [1517169600000, 0.02809657, 0.02809657, 0.0280964, 0.0280964, 3.34475246], [1517169660000, 0.02809604, 0.02809604, 0.02809092, 0.02809092, 0.51580889], [1517169720000, 0.02809071, 0.02809071, 0.02792501, 0.02792501, 0.33028232], [1517169780000, 0.02792501, 0.02808975, 0.0278163, 0.0278163, 25.81078236], [1517169840000, 0.02785, 0.02785002, 0.02777, 0.02782001, 19.72868344], [1517169900000, 0.02785001, 0.028036, 0.02782001, 0.02802997, 5.14168732], [1517169960000, 0.02782002, 0.02802395, 0.02782002, 0.02801794, 11.28723359], [1517170020000, 0.0280147, 0.0280147, 0.02782001, 0.02782001, 29.97955183], [1517170080000, 0.02799699, 0.02799699, 0.02798199, 0.02798199, 1.23345581], [1517170140000, 0.02798199, 0.02798199, 0.02772438, 0.027745, 9.39677957], [1517170200000, 0.027745, 0.0279748, 0.027745, 0.02797457, 4.32779547], [1517170260000, 0.0278, 0.02797426, 0.0278, 0.02780001, 39.9744844], [1517170320000, 0.0278, 0.02797396, 0.0278, 0.02780001, 5.91667347], [1517170380000, 0.0278, 0.0279734, 0.0278, 0.02797311, 8.91629796], [1517170440000, 0.02797304, 0.02797304, 0.02797286, 0.02797286, 2.14490928], [1517170500000, 0.02780006, 0.02780006, 0.02780004, 0.02780005, 20.36170033], [1517170560000, 0.02780005, 0.0279728, 0.02780005, 0.02780005, 3.67884142], [1517170620000, 0.02780005, 0.02780005, 0.02780004, 0.02780005, 15.36615314], [1517170680000, 0.02780005, 0.02780005, 0.02780005, 0.02780005, 1.5745129], [1517170740000, 0.02780005, 0.02780005, 0.02780005, 0.02780005, 2.69109304], [1517170800000, 0.02780004, 0.02780004, 0.02780004, 0.02780004, 8.86746268], [1517170860000, 0.02780004, 0.02780005, 0.02780004, 0.02780005, 7.70731351], [1517170920000, 0.02780004, 0.02780005, 0.02780004, 0.02780005, 5.66495041], [1517170980000, 0.02780005, 0.02797278, 0.02780005, 0.02797278, 25.13661992], [1517171040000, 0.0279749, 0.0279749, 0.0279141, 0.02797163, 37.5020462], [1517171100000, 0.02797163, 0.02797191, 0.0279141, 0.02797182, 0.80145947], [1517171160000, 0.0279141, 0.0279141, 0.0279141, 0.0279141, 0.07899234], [1517171220000, 0.02797177, 0.0279718, 0.02797177, 0.0279718, 1.1046836], [1517171280000, 0.02797172, 0.02797173, 0.0279141, 0.0279141, 2.18096649], [1517171340000, 0.0279141, 0.0279141, 0.0279141, 0.0279141, 0.04310524], [1517171400000, 0.02797178, 0.02797178, 0.02797175, 0.02797176, 4.03622625], [1517171460000, 0.02794177, 0.02794177, 0.02794177, 0.02794177, 0.07243019], [1517171520000, 0.02790001, 0.02797175, 0.02790001, 0.02797172, 0.24770947], [1517171580000, 0.02790001, 0.02790001, 0.0279, 0.0279, 0.09516318], [1517171640000, 0.0279, 0.0279, 0.0279, 0.0279, 0.00876339], [1517171700000, 0.0279, 0.0279603, 0.0279, 0.0279603, 5.27284005], [1517171760000, 0.0279, 0.0279717, 0.02785815, 0.02785815, 0.22016466], [1517171820000, 0.02797168, 0.02797168, 0.02782837, 0.02782837, 2.6981338], [1517171880000, 0.02795742, 0.02795742, 0.02795742, 0.02795742, 2.00700299], [1517171940000, 0.0279574, 0.0279574, 0.0279574, 0.0279574, 0.02973739], [1517172000000, 0.02780011, 0.02795737, 0.02780004, 0.02795735, 1.33755121], [1517172060000, 0.02795735, 0.02795735, 0.02795734, 0.02795734, 0.93622285], [1517172120000, 0.02780007, 0.02780007, 0.02780007, 0.02780007, 1.10395352], [1517172180000, 0.02795734, 0.02795734, 0.02795734, 0.02795734, 0.06957386], [1517172240000, 0.02795716, 0.02795716, 0.02787871, 0.02787871, 2.6182833], [1517172300000, 0.02787871, 0.02795695, 0.02780008, 0.02780008, 1.78859013], [1517172360000, 0.02795691, 0.02795691, 0.02795691, 0.02795691, 0.05277117], [1517172420000, 0.02795684, 0.02795687, 0.02795684, 0.02795687, 2.22603106], [1517172480000, 0.02783188, 0.02783188, 0.02780004, 0.02780004, 26.5], [1517172600000, 0.02781, 0.02795666, 0.02781, 0.02795661, 6.35285503], [1517172660000, 0.02795661, 0.02795661, 0.0279, 0.02795653, 5.92504567], [1517172720000, 0.02795653, 0.02795653, 0.02795636, 0.02795636, 8.22707456], [1517172780000, 0.0279563, 0.0279563, 0.0279, 0.0279, 6.32476495], [1517172840000, 0.02795615, 0.02795615, 0.0279, 0.0279, 3.46068953], [1517172900000, 0.0279, 0.027956, 0.0279, 0.02795099, 18.60783818], [1517172960000, 0.02795099, 0.02795099, 0.02795087, 0.02795087, 6.18187281], [1517173020000, 0.02795086, 0.02795087, 0.0279508, 0.02795082, 1.26100872], [1517173080000, 0.0279508, 0.0279508, 0.02795079, 0.0279508, 6.27693277], [1517173140000, 0.02795077, 0.02795077, 0.02795046, 0.02795046, 0.43910518], [1517173200000, 0.02795052, 0.0279508, 0.02795052, 0.0279508, 1.57420029], [1517173260000, 0.0279507, 0.02795081, 0.0279507, 0.02795081, 4.09118954], [1517173500000, 0.02781004, 0.02795069, 0.0278, 0.027948, 12.943809], [1517173560000, 0.0278, 0.0278, 0.02779659, 0.02779659, 6.18488026], [1517173620000, 0.0277966, 0.02779661, 0.02779659, 0.02779661, 1.23141371], [1517173680000, 0.02779661, 0.02779661, 0.02779661, 0.02779661, 0.42411741], [1517173800000, 0.02779659, 0.02795069, 0.02779566, 0.02795069, 4.72955132], [1517173860000, 0.02786685, 0.027948, 0.02786685, 0.02786685, 0.53000079], [1517173920000, 0.02786685, 0.02786685, 0.02786685, 0.02786685, 0.1332756], [1517173980000, 0.02786685, 0.02786685, 0.0278, 0.02786685, 5.14113047], [1517174100000, 0.02786685, 0.02793978, 0.0278, 0.0278, 1.4353998], [1517174160000, 0.02795069, 0.02795069, 0.02795069, 0.02795069, 0.1935505], [1517174220000, 0.0278, 0.0278, 0.0278, 0.0278, 3.84558415], [1517174280000, 0.02785, 0.02788512, 0.02785, 0.02788512, 1.04037836], [1517174340000, 0.02788512, 0.02788512, 0.02788512, 0.02788512, 0.52824298], [1517174400000, 0.02795068, 0.02795068, 0.02795065, 0.02795066, 0.75420045], [1517174460000, 0.02795059, 0.02795062, 0.02795059, 0.02795062, 6.20171301], [1517174580000, 0.02786685, 0.02786685, 0.02786684, 0.02786684, 0.46103702], [1517174640000, 0.02786684, 0.02786684, 0.0278668, 0.0278668, 0.15287341], [1517174700000, 0.0278668, 0.02795062, 0.027775, 0.02795062, 4.07654985], [1517174820000, 0.02795061, 0.02795062, 0.02777502, 0.02777502, 7.50376257], [1517174880000, 0.02777502, 0.02777502, 0.02777502, 0.02777502, 0.07938846], [1517174940000, 0.02777502, 0.02777502, 0.02777502, 0.02777502, 1.11354498], [1517175000000, 0.02777502, 0.02777502, 0.02777501, 0.02777502, 8.55566119], [1517175060000, 0.02777502, 0.02777502, 0.02776312, 0.02777502, 81.64566306], [1517175120000, 0.02777502, 0.02787225, 0.02777502, 0.02787225, 5.93394032], [1517175180000, 0.02787225, 0.02787225, 0.02787222, 0.02787222, 4.86172563], [1517175240000, 0.02787219, 0.02787219, 0.02787219, 0.02787219, 0.15342067], [1517175300000, 0.02787218, 0.02787222, 0.02787218, 0.02787222, 3.67458539], [1517175360000, 0.02787221, 0.02787221, 0.02787221, 0.02787221, 0.11851586], [1517175420000, 0.02787219, 0.02787219, 0.02787219, 0.02787219, 0.18307301], [1517175480000, 0.0278722, 0.02787221, 0.0278722, 0.02787221, 1.27793531], [1517175540000, 0.02787221, 0.02787221, 0.0278722, 0.0278722, 5.0902417], [1517175600000, 0.02787219, 0.02787221, 0.02787219, 0.0278722, 4.59991481], [1517175660000, 0.0278722, 0.02787221, 0.02787219, 0.02787221, 8.34879958], [1517175720000, 0.0278722, 0.02787221, 0.0278722, 0.0278722, 5.38170645], [1517175780000, 0.0278722, 0.02787221, 0.02787219, 0.0278722, 9.16715004], [1517175840000, 0.0278722, 0.02787221, 0.02787219, 0.0278722, 12.88682144], [1517175900000, 0.0278722, 0.0278722, 0.0278722, 0.0278722, 1.04685888], [1517175960000, 0.0278722, 0.02795062, 0.0278722, 0.0279506, 15.3713039], [1517176020000, 0.02795059, 0.02795059, 0.02787221, 0.02795056, 1.95305723], [1517176080000, 0.02795051, 0.02795051, 0.02795051, 0.02795051, 2.4797319], [1517176140000, 0.02795051, 0.02795051, 0.02795051, 0.02795051, 2.00318489], [1517176200000, 0.02795048, 0.0279505, 0.02787219, 0.0279505, 13.6006334], [1517176260000, 0.0279505, 0.0279505, 0.02795046, 0.02795046, 2.62100096], [1517176320000, 0.02795049, 0.02795052, 0.02795049, 0.02795052, 6.71386858], [1517176380000, 0.02795051, 0.02795062, 0.02795046, 0.02795046, 4.58604815], [1517176440000, 0.02795046, 0.0279505, 0.02795046, 0.0279505, 1.51323214], [1517176500000, 0.0279505, 0.02795059, 0.0279505, 0.0279505, 0.7944376], [1517176560000, 0.02795053, 0.02795053, 0.02791975, 0.02791975, 2.65424391], [1517176620000, 0.02791975, 0.02791975, 0.02789856, 0.02789856, 0.11849453], [1517176680000, 0.02789856, 0.02789856, 0.02789856, 0.02789856, 0.07903634], [1517176740000, 0.02789857, 0.02795042, 0.02786279, 0.02786279, 0.4056721], [1517176800000, 0.02786279, 0.02786279, 0.02786279, 0.02786279, 0.2791384], [1517176860000, 0.02786279, 0.02786279, 0.02786279, 0.02786279, 0.43803987], [1517176920000, 0.02786279, 0.02786279, 0.02786279, 0.02786279, 1.45863279], [1517176980000, 0.02786279, 0.0278628, 0.02786279, 0.0278628, 0.65210745], [1517177040000, 0.0278628, 0.0278628, 0.02786279, 0.02786279, 3.6858975], [1517177100000, 0.02786279, 0.02795062, 0.02786279, 0.02795062, 1.09864016], [1517177160000, 0.02795062, 0.02795069, 0.02795062, 0.02795069, 1.47546291], [1517177220000, 0.0279507, 0.02795642, 0.02795069, 0.02795069, 0.27350646], [1517177280000, 0.02795069, 0.02795069, 0.02795069, 0.02795069, 0.17888892], [1517177340000, 0.02795069, 0.02795069, 0.02795069, 0.02795069, 0.07888892], [1517177400000, 0.02795069, 0.02795641, 0.02786279, 0.02795639, 3.81457266], [1517177460000, 0.02795638, 0.02795639, 0.02795638, 0.02795638, 7.17390922], [1517177520000, 0.02795636, 0.02795637, 0.02786279, 0.02786279, 4.51388121], [1517177580000, 0.02786279, 0.0279507, 0.02786279, 0.0279507, 0.48042913], [1517177640000, 0.02786279, 0.0279507, 0.02786279, 0.0279507, 0.54547286], [1517177700000, 0.0279507, 0.02796685, 0.0278628, 0.02796685, 7.32995791], [1517177760000, 0.0279508, 0.0279508, 0.0279508, 0.0279508, 0.07888862], [1517177820000, 0.02796685, 0.02796685, 0.0279507, 0.0279507, 0.97723382], [1517177880000, 0.0279507, 0.0279507, 0.0278628, 0.0278628, 1.45294163], [1517177940000, 0.0278628, 0.0278628, 0.02786279, 0.02786279, 1.19130841], [1517178000000, 0.0278628, 0.0278628, 0.0278628, 0.0278628, 0.03956919], [1517178060000, 0.0278628, 0.0279507, 0.02786279, 0.02786279, 2.3811005], [1517178120000, 0.0278628, 0.0279507, 0.0278628, 0.0279507, 3.18565499], [1517178240000, 0.02786281, 0.0279507, 0.02786281, 0.0279507, 2.1498391], [1517178300000, 0.0279507, 0.0279507, 0.0279507, 0.0279507, 0.37742925], [1517178420000, 0.0279507, 0.0279507, 0.02786279, 0.02786279, 19.32893527], [1517178480000, 0.02795068, 0.02795068, 0.02795068, 0.02795068, 0.07607044], [1517178600000, 0.02795068, 0.0279507, 0.02795068, 0.02795068, 0.98777279], [1517178660000, 0.02786282, 0.0279507, 0.02786282, 0.0279507, 0.11969213], [1517178720000, 0.0279507, 0.0279507, 0.02795069, 0.02795069, 0.22262211], [1517178840000, 0.02795069, 0.02795069, 0.02795069, 0.02795069, 0.59657623], [1517178900000, 0.02795068, 0.02795069, 0.02795068, 0.02795069, 0.71554558], [1517178960000, 0.02787001, 0.02795069, 0.02787001, 0.02795069, 0.57582736], [1517179020000, 0.02787, 0.02787, 0.02787, 0.02787, 10.54924812], [1517179080000, 0.02786282, 0.02787, 0.02786282, 0.02787, 1.62128141], [1517179140000, 0.02787, 0.02787, 0.02787, 0.02787, 2.10901987], [1517179200000, 0.02787, 0.02792692, 0.02787, 0.0279, 5.03472533], [1517179260000, 0.0279, 0.02792692, 0.0279, 0.02792692, 5.37345294], [1517179320000, 0.02786639, 0.02786639, 0.02786639, 0.02786639, 1.1872232], [1517179380000, 0.02786639, 0.0279507, 0.02786639, 0.0279507, 13.96671373], [1517179500000, 0.02795069, 0.0279507, 0.02795069, 0.0279507, 2.86218232], [1517179560000, 0.0279507, 0.0279507, 0.02786279, 0.02786279, 5.06073123], [1517179620000, 0.0279507, 0.0279507, 0.0279507, 0.0279507, 2.20591081], [1517179800000, 0.02790696, 0.02790696, 0.02790696, 0.02790696, 0.43386193], [1517179860000, 0.02790696, 0.02790696, 0.02790696, 0.02790696, 1.4739193], [1517179920000, 0.0279507, 0.0279507, 0.0279507, 0.0279507, 0.1177069], [1517179980000, 0.0279507, 0.02796686, 0.0279507, 0.02796686, 8.51337229], [1517180040000, 0.02795909, 0.02796686, 0.02795909, 0.02796686, 0.59723567], [1517180100000, 0.02796686, 0.02796686, 0.02790697, 0.02790697, 1.2648144], [1517180160000, 0.02790696, 0.02790697, 0.02790696, 0.02790697, 2.82907708], [1517180220000, 0.02790697, 0.02790697, 0.02790696, 0.02790696, 4.75962535], [1517180280000, 0.02790696, 0.02790696, 0.02790696, 0.02790696, 0.641337], [1517180340000, 0.0278869, 0.02790696, 0.02784106, 0.02790696, 108.38865164], [1517180400000, 0.02790696, 0.02796686, 0.02779553, 0.02796686, 3.34165645], [1517180460000, 0.02796686, 0.02796686, 0.02796686, 0.02796686, 0.93440933], [1517180520000, 0.02796686, 0.02796686, 0.02777661, 0.02777661, 1.58599116], [1517180580000, 0.02777794, 0.02796686, 0.02777661, 0.02796686, 23.10242433], [1517180640000, 0.02796685, 0.02796685, 0.02796685, 0.02796685, 0.17163177], [1517180700000, 0.02796685, 0.02796686, 0.02796685, 0.02796686, 7.12242595], [1517180760000, 0.02796686, 0.02796686, 0.02796686, 0.02796686, 0.25818424], [1517180820000, 0.02796686, 0.02796686, 0.02796686, 0.02796686, 0.08999109], [1517180940000, 0.02796686, 0.02796686, 0.02796686, 0.02796686, 0.81557553], [1517181000000, 0.02796686, 0.02796686, 0.02796686, 0.02796686, 4.50375745], [1517181060000, 0.02796686, 0.028075, 0.02796686, 0.028075, 5.73476378], [1517181300000, 0.0280036, 0.0281, 0.0280036, 0.0281, 1.42471258], [1517181360000, 0.02805791, 0.0281, 0.02805791, 0.0281, 4.6327422], [1517181420000, 0.0281, 0.0281, 0.0281, 0.0281, 0.28469751], [1517181480000, 0.02801257, 0.02801257, 0.02801257, 0.02801257, 9.02427338], [1517181600000, 0.02809999, 0.0281, 0.02809999, 0.0281, 1.7793594], [1517181660000, 0.0281, 0.0281, 0.02801267, 0.02801267, 1.90615445], [1517181720000, 0.0281, 0.0281, 0.0281, 0.0281, 2.83570428], [1517181780000, 0.0281, 0.02812218, 0.0281, 0.02812218, 3.26679635], [1517181840000, 0.02812218, 0.02812218, 0.02812218, 0.02812218, 2.0992086], [1517181900000, 0.02812218, 0.02814666, 0.02812218, 0.02814666, 1.50036478], [1517181960000, 0.02812218, 0.02812218, 0.028075, 0.028075, 0.06522355], [1517182080000, 0.02814666, 0.02814666, 0.02814666, 0.02814666, 2.8843681], [1517182140000, 0.02814753, 0.02814753, 0.02814753, 0.02814753, 5.51890527], [1517182200000, 0.02814753, 0.02814753, 0.0281467, 0.0281467, 1.28482738], [1517182260000, 0.0281467, 0.0281467, 0.0281467, 0.0281467, 2.46789604], [1517182320000, 0.02814753, 0.02814753, 0.0281467, 0.0281467, 2.47916719], [1517182380000, 0.02814753, 0.02814753, 0.02814753, 0.02814753, 3.68394336], [1517182440000, 0.0281467, 0.028199, 0.02814666, 0.02814666, 58.37005683], [1517182500000, 0.028175, 0.02819896, 0.028175, 0.02819896, 0.54714277], [1517182560000, 0.02819, 0.02819, 0.02814666, 0.02814666, 1.71462753], [1517182620000, 0.02814666, 0.0282, 0.02814666, 0.0282, 12.85629123], [1517182680000, 0.02814666, 0.0282, 0.02814666, 0.0282, 0.37660449], [1517182740000, 0.0282, 0.0282, 0.0282, 0.0282, 8.42051883], [1517182800000, 0.0282, 0.0282, 0.0282, 0.0282, 0.35460992], [1517182860000, 0.0282, 0.0282, 0.0282, 0.0282, 4.70848603], [1517182980000, 0.0282, 0.0282, 0.0282, 0.0282, 0.30571876], [1517183040000, 0.02819999, 0.0282, 0.02819999, 0.0282, 3.40745458], [1517183100000, 0.0282, 0.02825552, 0.0282, 0.02825552, 19.55914386], [1517183160000, 0.02807554, 0.028225, 0.02807554, 0.028225, 0.15890619], [1517183220000, 0.028225, 0.028225, 0.028225, 0.028225, 0.08865075], [1517183280000, 0.02807504, 0.02807504, 0.02807504, 0.02807504, 1.11932676], [1517183340000, 0.028225, 0.028225, 0.02822498, 0.02822498, 0.06729214], [1517183400000, 0.02825, 0.02826853, 0.02825, 0.02826853, 0.3539823], [1517183520000, 0.02826853, 0.02826853, 0.02826853, 0.02826853, 0.01804126], [1517183580000, 0.02826852, 0.02826852, 0.02826852, 0.02826852, 0.03537503], [1517183700000, 0.02826852, 0.02826852, 0.02826852, 0.02826852, 0.70750128], [1517183760000, 0.0282685, 0.0282685, 0.028075, 0.0282685, 0.20535947], [1517183820000, 0.0282, 0.0282, 0.0282, 0.0282, 5.1501018], [1517183880000, 0.0282, 0.0282, 0.0282, 0.0282, 1.51608752], [1517183940000, 0.0282, 0.0282, 0.0282, 0.0282, 1.09359512], [1517184000000, 0.0281, 0.0282, 0.0281, 0.0281, 53.94957371], [1517184060000, 0.0282, 0.0282282, 0.02810001, 0.02810001, 6.11395803], [1517184120000, 0.02810001, 0.0282, 0.02810001, 0.0282, 2.01392211], [1517184180000, 0.0282, 0.0282, 0.02815, 0.02815, 3.10317931], [1517184240000, 0.02815, 0.02815, 0.02815, 0.02815, 0.0784007], [1517184300000, 0.02815, 0.0282063, 0.02808159, 0.02808159, 0.51679597], [1517184360000, 0.0282063, 0.0282063, 0.02807503, 0.02810505, 1.39562091], [1517184420000, 0.0282063, 0.028289, 0.0282063, 0.028289, 4.41747885], [1517184480000, 0.028289, 0.028289, 0.028289, 0.028289, 0.08162476], [1517184540000, 0.028289, 0.028289, 0.028289, 0.028289, 2.03339941], [1517184600000, 0.028289, 0.02829121, 0.028289, 0.02829121, 0.53141027], [1517184780000, 0.028289, 0.028289, 0.028289, 0.028289, 3.05777697], [1517184840000, 0.028289, 0.0282912, 0.028289, 0.0282912, 15.48454649], [1517184900000, 0.0282912, 0.02829401, 0.028289, 0.02829401, 14.09126129], [1517184960000, 0.028289, 0.02829401, 0.028289, 0.02829401, 14.18591543], [1517185080000, 0.02829401, 0.02829401, 0.028289, 0.02829401, 31.12777085], [1517185140000, 0.02829401, 0.02829401, 0.02829401, 0.02829401, 6.54099178], [1517185200000, 0.02829401, 0.02829401, 0.028289, 0.02829401, 2.7671591], [1517185260000, 0.02829401, 0.02829401, 0.028289, 0.028289, 0.27023815], [1517185320000, 0.028289, 0.02829401, 0.02825788, 0.028289, 6.65799232], [1517185380000, 0.02823643, 0.028294, 0.02820024, 0.02820024, 2.32485796], [1517185440000, 0.02829401, 0.02829401, 0.028294, 0.02829401, 16.49532582], [1517185500000, 0.028294, 0.02829401, 0.02820024, 0.02829401, 5.40573631], [1517185620000, 0.02820025, 0.02820025, 0.02820025, 0.02820025, 1.42993906], [1517185680000, 0.02829401, 0.02829401, 0.02820028, 0.02829401, 12.68989648], [1517185740000, 0.02829401, 0.02829401, 0.02820025, 0.02820025, 1.81452451], [1517185800000, 0.02829401, 0.02829401, 0.02829398, 0.02829401, 10.52189064], [1517185860000, 0.02829401, 0.02829401, 0.02813584, 0.02813584, 17.92826956], [1517185920000, 0.02829401, 0.02829401, 0.02809681, 0.02829398, 3.63820088], [1517185980000, 0.02829401, 0.02829401, 0.02829401, 0.02829401, 13.11475], [1517186040000, 0.02829401, 0.02829401, 0.02810104, 0.02810104, 0.34081468], [1517186100000, 0.02829401, 0.02829401, 0.02829401, 0.02829401, 0.78355786], [1517186160000, 0.02829401, 0.02829401, 0.02829398, 0.02829401, 6.12065557], [1517186220000, 0.02827644, 0.02827644, 0.02827644, 0.02827644, 0.08636619], [1517186280000, 0.02822, 0.02827644, 0.02810139, 0.02827644, 0.24302767], [1517186400000, 0.02827644, 0.02827644, 0.02827644, 0.02827644, 0.3536518], [1517186460000, 0.02827644, 0.02827644, 0.02827644, 0.02827644, 0.03923246], [1517186520000, 0.02827644, 0.02827644, 0.02827644, 0.02827644, 9.18326866], [1517186580000, 0.02827644, 0.02829401, 0.02827644, 0.02829401, 3.35160795], [1517186640000, 0.02827644, 0.02829401, 0.0281224, 0.02829401, 9.72254265], [1517186700000, 0.02829401, 0.02829401, 0.02812373, 0.02829401, 1.10309513], [1517186760000, 0.02829401, 0.02829401, 0.02829401, 0.02829401, 24.66455912], [1517186820000, 0.02829401, 0.02829401, 0.02812392, 0.02812392, 18.57320555], [1517186880000, 0.02812395, 0.028293, 0.02812395, 0.028293, 0.63438966], [1517186940000, 0.02812397, 0.02812397, 0.02812397, 0.02812397, 0.54110952], [1517187000000, 0.02829295, 0.02829295, 0.02829294, 0.02829294, 1.19276521], [1517187060000, 0.028134, 0.02829293, 0.02813209, 0.02829293, 6.29779352], [1517187120000, 0.0282929, 0.02829401, 0.0282929, 0.02829401, 31.32344498], [1517187180000, 0.02829401, 0.028325, 0.02829401, 0.028325, 47.33130398], [1517187240000, 0.028325, 0.02834948, 0.028325, 0.02834948, 4.40009484], [1517187300000, 0.02830866, 0.02838094, 0.02830865, 0.02838094, 26.37946644], [1517187360000, 0.02838094, 0.02838094, 0.0283087, 0.0283087, 1.23274067], [1517187420000, 0.02835, 0.02835, 0.02835, 0.02835, 0.03894577], [1517187480000, 0.02835, 0.02835, 0.02834999, 0.02835, 0.12730423], [1517187540000, 0.02835, 0.02835, 0.02830865, 0.02835, 0.85233808], [1517187600000, 0.02829401, 0.02838094, 0.02826003, 0.02838094, 18.52491059], [1517187660000, 0.02826005, 0.0282601, 0.02825785, 0.02825785, 9.02033466], [1517187720000, 0.02825777, 0.02825777, 0.02825777, 0.02825777, 4.24591628], [1517187780000, 0.02825777, 0.02838, 0.02825777, 0.02825777, 118.11443487], [1517187840000, 0.0283, 0.02840383, 0.0283, 0.02840383, 18.81026298], [1517187900000, 0.02840383, 0.02840383, 0.0284, 0.02840383, 7.95924537], [1517187960000, 0.0284, 0.02840383, 0.0284, 0.0284, 2.47443679], [1517188020000, 0.02840382, 0.02840382, 0.02840382, 0.02840382, 0.10790097], [1517188080000, 0.02840383, 0.02840383, 0.0284038, 0.0284038, 0.82165262], [1517188140000, 0.0284038, 0.0284038, 0.0284, 0.0284, 0.37269959], [1517188200000, 0.0284038, 0.02840383, 0.0284, 0.02840383, 2.03813589], [1517188260000, 0.02840383, 0.02840383, 0.02840382, 0.02840383, 0.14173934], [1517188320000, 0.02840383, 0.02840383, 0.02840383, 0.02840383, 0.26529022], [1517188380000, 0.02840383, 0.02840383, 0.02840383, 0.02840383, 0.52278513], [1517188440000, 0.02840383, 0.02840383, 0.0284, 0.02840383, 8.14180572], [1517188500000, 0.028425, 0.0285, 0.0284, 0.02849226, 4.95374318], [1517188560000, 0.02849226, 0.0285, 0.0284, 0.0284, 0.85062358], [1517188620000, 0.0284, 0.02845, 0.0284, 0.02845, 0.50899967], [1517188680000, 0.02844999, 0.0285, 0.02844999, 0.028475, 0.98956958], [1517188740000, 0.0284755, 0.0285, 0.0284755, 0.0285, 1.33196935], [1517188800000, 0.0284755, 0.0285, 0.0284, 0.0284, 18.57398877], [1517188860000, 0.0284, 0.02851062, 0.0284, 0.0285, 6.18485808], [1517188920000, 0.02851062, 0.02852498, 0.0285, 0.02852498, 4.97897487], [1517188980000, 0.0284, 0.0284, 0.0284, 0.0284, 2.47569741], [1517189040000, 0.0284, 0.0284, 0.0284, 0.0284, 9.28598971], [1517189100000, 0.0284, 0.02849687, 0.0283051, 0.02830518, 3.08502012], [1517189160000, 0.02830521, 0.02852406, 0.02830521, 0.02852406, 0.93307905], [1517189220000, 0.02830594, 0.028306, 0.02830594, 0.02830599, 42.93035927], [1517189280000, 0.0285239, 0.0285239, 0.0285239, 0.0285239, 0.05540627], [1517189400000, 0.02852085, 0.02852085, 0.02852078, 0.02852079, 1.43092616], [1517189460000, 0.0285208, 0.0285208, 0.0285208, 0.0285208, 0.3506213], [1517189520000, 0.02852077, 0.02852077, 0.02852077, 0.02852077, 0.56437385], [1517189640000, 0.02852033, 0.02852037, 0.02852033, 0.02852037, 0.69513666], [1517189700000, 0.0285203, 0.0285205, 0.02852029, 0.0285205, 1.7531372], [1517189760000, 0.0285205, 0.0285205, 0.0285205, 0.0285205, 0.61209362], [1517189820000, 0.02852044, 0.02852044, 0.02842044, 0.02842044, 1.41137404], [1517189880000, 0.02852025, 0.02852028, 0.02852025, 0.02852028, 0.87042678], [1517190000000, 0.02852019, 0.02852048, 0.0283998, 0.0283998, 2.4037951], [1517190120000, 0.02850045, 0.02850045, 0.02850045, 0.02850045, 0.05238781], [1517190180000, 0.0283998, 0.0283998, 0.02832345, 0.0283998, 0.64543723], [1517190300000, 0.0283998, 0.02847499, 0.0283, 0.02846498, 8.62163789], [1517190360000, 0.02830001, 0.02842, 0.02830001, 0.02830001, 0.43269146], [1517190420000, 0.02830001, 0.02843493, 0.02820386, 0.02842464, 31.93136317], [1517190480000, 0.02820386, 0.02820386, 0.02812501, 0.02812501, 14.67422349], [1517190540000, 0.028175, 0.02832211, 0.028175, 0.02832211, 2.26020516], [1517190600000, 0.02840349, 0.02840349, 0.02840348, 0.02840348, 1.49121658], [1517190660000, 0.02840327, 0.02840327, 0.02840324, 0.02840324, 0.08908781], [1517190720000, 0.02817501, 0.02840318, 0.02812679, 0.02840318, 4.24034019], [1517190840000, 0.02812678, 0.02812678, 0.02812677, 0.02812677, 0.2], [1517190900000, 0.02839983, 0.02839983, 0.02839974, 0.02839974, 1.26542], [1517191320000, 0.02839942, 0.02839942, 0.02839942, 0.02839942, 0.37097368], [1517191380000, 0.02812591, 0.02812591, 0.0281259, 0.0281259, 7.51875], [1517191440000, 0.02838071, 0.02839974, 0.02812642, 0.0283801, 74.27202823], [1517191500000, 0.0283801, 0.0283801, 0.02812747, 0.02835, 2.08964821], [1517191560000, 0.02835, 0.0283801, 0.02835, 0.0283801, 0.32399115], [1517191620000, 0.02812801, 0.02838009, 0.02812801, 0.02838009, 0.16650691], [1517191740000, 0.02822597, 0.02822597, 0.02822597, 0.02822597, 0.31936277], [1517191800000, 0.02822597, 0.02822597, 0.02812778, 0.02822597, 14.48823581], [1517191860000, 0.02822596, 0.02838009, 0.02822596, 0.02838009, 5.78768233], [1517191920000, 0.02838009, 0.02838009, 0.0283, 0.0283, 5.63038245], [1517191980000, 0.0283, 0.02838009, 0.0283, 0.02838009, 47.62506162], [1517192040000, 0.02838, 0.02838, 0.02838, 0.02838, 0.15005934], [1517192100000, 0.02837999, 0.02837999, 0.02837999, 0.02837999, 1.25528182], [1517192160000, 0.0283, 0.02837999, 0.0283, 0.02837999, 2.9174155], [1517192220000, 0.02837999, 0.02837999, 0.02823307, 0.0283, 0.35156739], [1517192280000, 0.0283, 0.0283, 0.0283, 0.0283, 0.0781003], [1517192340000, 0.02829999, 0.0283, 0.02829999, 0.0283, 0.40546789], [1517192400000, 0.0283789, 0.0283789, 0.0283, 0.0283, 1.55045524], [1517192460000, 0.0283, 0.0283, 0.0283, 0.0283, 0.10051325], [1517192520000, 0.02825755, 0.0283, 0.02820036, 0.0283, 7.5044407], [1517192580000, 0.02829999, 0.0283, 0.02829999, 0.0283, 0.10467623], [1517192640000, 0.02829999, 0.0283, 0.02820025, 0.02820025, 2.89125353], [1517192700000, 0.02829999, 0.0283, 0.02820034, 0.0283, 4.44326666], [1517192760000, 0.0283, 0.02834567, 0.0283, 0.02834567, 5.18997055], [1517192820000, 0.02837494, 0.0283789, 0.02837494, 0.0283789, 1.49509325], [1517192880000, 0.0283789, 0.02838, 0.0283789, 0.02838, 1.82509007], [1517192940000, 0.02838, 0.0283801, 0.02838, 0.0283801, 0.5], [1517193060000, 0.02820259, 0.02820259, 0.02820255, 0.02820256, 2.27270544], [1517193120000, 0.02820256, 0.0284, 0.02820256, 0.02820262, 7.92924131], [1517193180000, 0.02840331, 0.02840792, 0.02820264, 0.02820264, 2.53274973], [1517193240000, 0.02820264, 0.02820264, 0.02820264, 0.02820264, 0.40970427], [1517193300000, 0.02829999, 0.02842268, 0.02820231, 0.02820231, 3.0616565], [1517193420000, 0.02820233, 0.02820233, 0.02820233, 0.02820233, 1.34830736], [1517193480000, 0.02842268, 0.02843973, 0.02842268, 0.02843973, 1.30171267], [1517193540000, 0.02820249, 0.02820249, 0.02820249, 0.02820249, 0.2695266], [1517193600000, 0.02845, 0.02846855, 0.02845, 0.02846855, 0.35149384], [1517193660000, 0.02846855, 0.02846855, 0.02846855, 0.02846855, 0.08428276], [1517193720000, 0.02820279, 0.02820279, 0.02820279, 0.02820279, 0.74357646], [1517193840000, 0.02820295, 0.02820295, 0.02820295, 0.02820295, 0.62818016], [1517193900000, 0.02820321, 0.02847499, 0.02820314, 0.02847499, 1.18317239], [1517194020000, 0.02847477, 0.02847477, 0.02847454, 0.02847454, 1.03484399], [1517194200000, 0.0284733, 0.02847333, 0.02847286, 0.02847286, 0.76808909], [1517194260000, 0.0284727, 0.0284727, 0.0284727, 0.0284727, 0.22717488], [1517194320000, 0.02847209, 0.02847209, 0.02847209, 0.02847209, 0.035515], [1517194380000, 0.02847179, 0.02847179, 0.02820455, 0.02847143, 9.89180299], [1517194440000, 0.02820463, 0.02820463, 0.02820463, 0.02820463, 0.4811371], [1517194500000, 0.02847081, 0.02847214, 0.02820491, 0.02820491, 1.14338116], [1517194560000, 0.0282057, 0.0282057, 0.0282057, 0.0282057, 0.04068036], [1517194620000, 0.02847167, 0.02847389, 0.02847167, 0.02847389, 2.64234878], [1517194680000, 0.02847373, 0.02847451, 0.02847373, 0.02847451, 0.25481652], [1517194860000, 0.02847424, 0.02847424, 0.02821007, 0.02821007, 0.51664143], [1517194920000, 0.02821025, 0.02821032, 0.0282101, 0.0282101, 1.82831235], [1517194980000, 0.02821038, 0.02821038, 0.02821038, 0.02821038, 0.36123584], [1517195040000, 0.0283, 0.0283, 0.0283, 0.0283, 1.0], [1517195100000, 0.02843263, 0.02845368, 0.02843263, 0.02845368, 0.7034179], [1517195160000, 0.02845368, 0.02845368, 0.0283, 0.0283, 1.45641312], [1517195220000, 0.0283, 0.0283, 0.02829044, 0.02829044, 0.52324733], [1517195280000, 0.02829044, 0.02847333, 0.02829044, 0.02847333, 6.18266893], [1517195340000, 0.0284745, 0.02847451, 0.0284745, 0.02847451, 0.2821921], [1517195400000, 0.02828392, 0.02847439, 0.02828392, 0.02847439, 1.35119265], [1517195460000, 0.02847397, 0.02847397, 0.02847397, 0.02847397, 0.10077577], [1517195520000, 0.02847394, 0.02847394, 0.02847393, 0.02847393, 0.92395333], [1517195580000, 0.02821396, 0.02821396, 0.02821396, 0.02821396, 2.14285713], [1517195700000, 0.02847342, 0.02847342, 0.02847342, 0.02847342, 0.17566412], [1517195820000, 0.02847322, 0.02847322, 0.02847309, 0.02847309, 0.1132409], [1517195880000, 0.02847316, 0.02847316, 0.0284731, 0.0284731, 0.07811801], [1517195940000, 0.02847302, 0.0284731, 0.02847302, 0.0284731, 5.79069068], [1517196000000, 0.0284731, 0.02847344, 0.02847305, 0.02847305, 1.02988042], [1517196060000, 0.02847344, 0.02847344, 0.02847305, 0.02847305, 0.38929634], [1517196120000, 0.02847344, 0.02847344, 0.02847343, 0.02847344, 0.51536109], [1517196180000, 0.02847305, 0.02847305, 0.02847305, 0.02847305, 1.93079813], [1517196240000, 0.02847344, 0.02847344, 0.02847305, 0.02847305, 1.94415483], [1517196300000, 0.02847305, 0.02847305, 0.02847305, 0.02847305, 0.84619807], [1517196480000, 0.02847343, 0.02847344, 0.02847305, 0.02847305, 2.6564381], [1517196540000, 0.02837088, 0.02837088, 0.02834346, 0.02834346, 0.25370044], [1517196600000, 0.02847344, 0.02847344, 0.02847344, 0.02847344, 1.56115692], [1517196660000, 0.02847343, 0.0285239, 0.02847343, 0.0285239, 14.03126269], [1517196720000, 0.0285, 0.0285239, 0.02823379, 0.028237, 4.14293265], [1517196780000, 0.0285239, 0.0285239, 0.0285239, 0.0285239, 1.15464565], [1517196960000, 0.0285239, 0.0285239, 0.0285239, 0.0285239, 0.28637987], [1517197020000, 0.0285239, 0.0285239, 0.0285239, 0.0285239, 0.74], [1517197080000, 0.0285239, 0.02859979, 0.0285239, 0.02859979, 84.09724834], [1517197140000, 0.02859979, 0.02861825, 0.02824345, 0.02824345, 154.43161328], [1517197200000, 0.02855, 0.02861808, 0.02855, 0.02861808, 3.22561393], [1517197260000, 0.028558, 0.028558, 0.028558, 0.028558, 2.61715318], [1517197320000, 0.02826178, 0.02826189, 0.02826178, 0.02826189, 3.78719725], [1517197500000, 0.02841015, 0.02855789, 0.02841015, 0.02855789, 0.83896417], [1517197560000, 0.02841015, 0.02841015, 0.02832439, 0.02832439, 0.48886474], [1517197620000, 0.02826407, 0.02832439, 0.02826407, 0.02832439, 0.59037175], [1517197680000, 0.02853197, 0.02853197, 0.02853197, 0.02853197, 7.24059441], [1517197800000, 0.0284837, 0.0284837, 0.0284837, 0.0284837, 0.35107798], [1517197860000, 0.02848369, 0.02848369, 0.02848369, 0.02848369, 0.03792182], [1517197920000, 0.02848366, 0.0284837, 0.02848366, 0.0284837, 1.15818607], [1517198040000, 0.02848, 0.0284837, 0.02848, 0.0284837, 1.13490065], [1517198100000, 0.02848365, 0.02848365, 0.02848, 0.02848, 2.40359053], [1517198220000, 0.02848001, 0.02848001, 0.02848, 0.02848, 0.02027915], [1517198400000, 0.02847999, 0.0284837, 0.02844582, 0.0284837, 2.86947433], [1517198460000, 0.0284837, 0.0284837, 0.0284837, 0.0284837, 1.0759912], [1517198520000, 0.02844582, 0.02844582, 0.02844582, 0.02844582, 0.16218689], [1517198580000, 0.02825198, 0.02828149, 0.02825198, 0.02828149, 0.12438009], [1517198640000, 0.02828149, 0.02828149, 0.02828149, 0.02828149, 1.50930112], [1517198700000, 0.02828149, 0.0283836, 0.02828149, 0.0283836, 2.54283099], [1517198940000, 0.0283836, 0.0283836, 0.0283836, 0.0283836, 0.60209988], [1517199000000, 0.02844581, 0.0284837, 0.02844581, 0.0284837, 1.10032297], [1517199120000, 0.02838369, 0.02848368, 0.028245, 0.028245, 5.13262878], [1517199180000, 0.02823014, 0.02827025, 0.02822999, 0.02822999, 3.44262758], [1517199240000, 0.02823, 0.02823, 0.02823, 0.02823, 0.21253993], [1517199300000, 0.02823, 0.0284832, 0.02823, 0.0284832, 1.20216828], [1517199420000, 0.02823003, 0.02823003, 0.02823001, 0.02823001, 3.99993567], [1517199600000, 0.02846223, 0.02846223, 0.02846223, 0.02846223, 0.35134318], [1517199660000, 0.02823001, 0.02846194, 0.02823001, 0.0284617, 0.29683025], [1517199780000, 0.02846144, 0.02846144, 0.02846142, 0.02846143, 2.44012461], [1517199900000, 0.02839994, 0.02839999, 0.02839987, 0.02839987, 0.88750492], [1517199960000, 0.0284, 0.0284, 0.0284, 0.0284, 1.27484496], [1517200020000, 0.02824146, 0.02839993, 0.02824146, 0.02839993, 10.11673039], [1517200140000, 0.02824146, 0.02824146, 0.02824146, 0.02824146, 0.02357823], [1517200200000, 0.02824146, 0.02824146, 0.02824146, 0.02824146, 0.26221224], [1517200320000, 0.02824146, 0.02824146, 0.02824146, 0.02824146, 0.6428876], [1517200380000, 0.02824146, 0.0283, 0.02822502, 0.02822502, 27.48846329], [1517200440000, 0.02822502, 0.02822503, 0.02822501, 0.02822501, 8.4], [1517200500000, 0.0283, 0.0283, 0.0282145, 0.02829999, 4.22413405], [1517200560000, 0.0283, 0.0283, 0.0282145, 0.0282145, 12.82011377], [1517200620000, 0.02829999, 0.02829999, 0.0282145, 0.0282145, 3.85046117], [1517200680000, 0.0282145, 0.02829996, 0.0282145, 0.02829996, 1.22364459], [1517200740000, 0.0282145, 0.02821451, 0.028205, 0.028205, 5.33173617], [1517200800000, 0.02821451, 0.02821451, 0.02820246, 0.02820246, 3.95219413], [1517200860000, 0.02820246, 0.02820246, 0.02820246, 0.02820246, 0.88363993], [1517200920000, 0.02820246, 0.02820359, 0.0282, 0.0282, 0.1144876], [1517200980000, 0.0282, 0.0282, 0.0282, 0.0282, 0.03909574], [1517201040000, 0.0282, 0.02820357, 0.0282, 0.0282, 0.23209796], [1517201100000, 0.0282, 0.0282, 0.02815, 0.02815, 0.45661161], [1517201160000, 0.02820359, 0.02820359, 0.028175, 0.028175, 0.09995585], [1517201220000, 0.028175, 0.02817501, 0.028175, 0.028175, 0.07826085], [1517201280000, 0.028175, 0.02820343, 0.02815, 0.02820343, 0.06854782], [1517201340000, 0.02815, 0.02815, 0.02802001, 0.02802001, 15.48357902], [1517201400000, 0.0281, 0.02826742, 0.028, 0.028236, 42.4633918], [1517201460000, 0.028075, 0.02832677, 0.02805001, 0.02805001, 54.8210325], [1517201520000, 0.02805001, 0.02805001, 0.02798107, 0.02798107, 54.51478249], [1517201640000, 0.02800003, 0.02800004, 0.02795007, 0.02795007, 193.63160065], [1517201700000, 0.02829984, 0.02829984, 0.02829984, 0.02829984, 0.35335813], [1517201760000, 0.02802946, 0.02822719, 0.02802946, 0.02822719, 0.07003536], [1517201880000, 0.02822719, 0.0282987, 0.02822719, 0.02829848, 2.47909377], [1517202000000, 0.02829785, 0.02829785, 0.02798516, 0.02798516, 1.56233229], [1517202060000, 0.02798516, 0.02829778, 0.02798516, 0.02829773, 0.6207742], [1517202120000, 0.02798516, 0.02829721, 0.02798516, 0.02829721, 2.40805128], [1517202180000, 0.02829711, 0.02829711, 0.02829692, 0.02829692, 3.09410658], [1517202240000, 0.02829674, 0.02829674, 0.02829674, 0.02829674, 0.0565948], [1517202300000, 0.02798521, 0.02798521, 0.02798521, 0.02798521, 0.16869232], [1517202360000, 0.02829645, 0.02829645, 0.02797168, 0.02829635, 66.14384691], [1517202480000, 0.02827499, 0.02829633, 0.02827499, 0.02829633, 3.13908551], [1517202540000, 0.02829632, 0.02829633, 0.02829632, 0.02829633, 0.08392998], [1517202600000, 0.02797504, 0.02829625, 0.02787501, 0.0278776, 183.43479183], [1517202660000, 0.02827499, 0.02829618, 0.02827499, 0.02829177, 2.91758636], [1517202720000, 0.02824999, 0.02824999, 0.02824998, 0.02824998, 0.15580785], [1517202780000, 0.02824996, 0.02824996, 0.02824996, 0.02824996, 0.0952858], [1517202840000, 0.0281125, 0.02824998, 0.0281125, 0.02824998, 0.20232023], [1517202900000, 0.02824998, 0.02824998, 0.02824993, 0.02824994, 3.61065808], [1517202960000, 0.02824994, 0.02824994, 0.02824991, 0.02824991, 24.65234607], [1517203020000, 0.02811253, 0.02811253, 0.02811253, 0.02811253, 0.06283662], [1517203080000, 0.02811252, 0.02811253, 0.02785, 0.02785, 228.37355626], [1517203140000, 0.0281125, 0.0281125, 0.02790003, 0.02790003, 51.40540116], [1517203260000, 0.02792501, 0.02811252, 0.02790004, 0.02811252, 30.5780752], [1517203320000, 0.02811249, 0.02811249, 0.0279, 0.0279, 24.2088883], [1517203380000, 0.0279001, 0.0279001, 0.02790009, 0.02790009, 4.58598393], [1517203440000, 0.0279001, 0.0279001, 0.02788889, 0.02788889, 10.33010117], [1517203500000, 0.02811242, 0.02811242, 0.02811242, 0.02811242, 0.19052547], [1517203560000, 0.02811222, 0.02811232, 0.02811222, 0.02811229, 19.28130943], [1517203620000, 0.02800513, 0.02811229, 0.0278959, 0.02811229, 80.00332335], [1517203680000, 0.02811224, 0.02811224, 0.02811207, 0.02811211, 4.91729751], [1517203740000, 0.02811202, 0.02811202, 0.02811202, 0.02811202, 0.11844064], [1517203800000, 0.0281118, 0.0281118, 0.0281118, 0.0281118, 1.76509238], [1517204280000, 0.02789752, 0.02789752, 0.02789748, 0.02789748, 0.4], [1517204340000, 0.02811167, 0.02811167, 0.02811167, 0.02811167, 0.03584553], [1517204400000, 0.02811134, 0.02811134, 0.02811134, 0.02811134, 1.0], [1517204460000, 0.02811108, 0.02811108, 0.02811108, 0.02811108, 0.20351741], [1517204520000, 0.02811102, 0.02811102, 0.02811102, 0.02811102, 0.1173916], [1517204580000, 0.02789774, 0.02789774, 0.02789713, 0.02789713, 7.38892654], [1517204700000, 0.02789713, 0.02789713, 0.02789713, 0.02789713, 0.08], [1517204760000, 0.02811096, 0.02811096, 0.02811096, 0.02811096, 0.06457749], [1517205000000, 0.02810993, 0.02810993, 0.02810987, 0.02810987, 0.7114931], [1517205120000, 0.0281097, 0.0281097, 0.0281097, 0.0281097, 0.1125814], [1517205180000, 0.02805705, 0.02805705, 0.02800424, 0.02800424, 3.79077452], [1517205240000, 0.02800424, 0.02800424, 0.02788873, 0.02800424, 61.33614188], [1517205300000, 0.02800424, 0.02800424, 0.02800424, 0.02800424, 0.05799971], [1517205420000, 0.02800424, 0.02800424, 0.02800424, 0.02800424, 0.07855953], [1517205600000, 0.02800424, 0.02800424, 0.02800424, 0.02800424, 0.71417858], [1517205660000, 0.02800424, 0.02800424, 0.02800424, 0.02800424, 0.54339052], [1517205720000, 0.02800424, 0.02800424, 0.02800424, 0.02800424, 0.15], [1517205780000, 0.02800424, 0.02800424, 0.02800424, 0.02800424, 18.9925951], [1517205840000, 0.02800424, 0.02800424, 0.02800424, 0.02800424, 31.9343869], [1517205900000, 0.02800423, 0.02800424, 0.02800423, 0.02800424, 0.41933421], [1517205960000, 0.02800424, 0.02800424, 0.02800424, 0.02800424, 1.39264625], [1517206020000, 0.02800424, 0.02800424, 0.02800424, 0.02800424, 8.67564483], [1517206080000, 0.02800424, 0.02800424, 0.02800424, 0.02800424, 32.09418015], [1517206140000, 0.02807423, 0.02807423, 0.02807423, 0.02807423, 3.60307735], [1517206260000, 0.02800424, 0.02807423, 0.02791011, 0.02807423, 145.25441179], [1517206440000, 0.02807405, 0.02807423, 0.02807405, 0.02807422, 36.84526077], [1517206500000, 0.02807422, 0.0281096, 0.02807422, 0.0281096, 8.66491427], [1517206560000, 0.02810957, 0.02810958, 0.02810957, 0.02810958, 1.75358773], [1517206620000, 0.02810954, 0.02810955, 0.02810954, 0.02810955, 0.32558497], [1517206680000, 0.0278768, 0.02787731, 0.0278768, 0.02787731, 1.43405418], [1517206740000, 0.02810952, 0.02810952, 0.02810952, 0.02810952, 0.35429182], [1517206800000, 0.02810951, 0.02810951, 0.02791324, 0.02791324, 0.935514], [1517206980000, 0.02810952, 0.02810952, 0.02810952, 0.02810952, 0.03618911], [1517207100000, 0.02810954, 0.02811095, 0.02810954, 0.0281096, 2.43050908], [1517207160000, 0.02810952, 0.02810953, 0.02810952, 0.02810953, 5.27901338], [1517207220000, 0.02810952, 0.02810953, 0.02810952, 0.02810952, 1.04175673], [1517207340000, 0.02808898, 0.02808898, 0.02808898, 0.02808898, 0.29041824], [1517207400000, 0.028077, 0.028077, 0.02790439, 0.02790439, 0.49549035], [1517207460000, 0.0279044, 0.0279044, 0.02790439, 0.02790439, 0.29346369], [1517207520000, 0.02805, 0.02805, 0.02804898, 0.02804898, 2.55681731], [1517207580000, 0.02808098, 0.02808098, 0.02808098, 0.02808098, 0.13072974], [1517207640000, 0.02807299, 0.02807299, 0.02807299, 0.02807299, 2.36328189], [1517207760000, 0.02787809, 0.02787809, 0.02779259, 0.02779259, 3.41711297], [1517207820000, 0.02807169, 0.02807169, 0.02778297, 0.02778297, 109.65171418], [1517207880000, 0.02779295, 0.02779295, 0.02779295, 0.02779295, 0.17640504], [1517207940000, 0.027825, 0.027825, 0.02778297, 0.0278, 31.42633245], [1517208000000, 0.02806526, 0.02806526, 0.02806526, 0.02806526, 0.35631061], [1517208060000, 0.02780205, 0.02780205, 0.02778372, 0.02778372, 58.10933349], [1517208120000, 0.02778372, 0.02778372, 0.02778372, 0.02778372, 0.03059626], [1517208180000, 0.02802919, 0.02802919, 0.02802919, 0.02802919, 0.04003066], [1517208240000, 0.02802919, 0.02802919, 0.0280289, 0.0280289, 2.24114058], [1517208300000, 0.02802854, 0.02802854, 0.02802837, 0.02802837, 0.40469439], [1517208360000, 0.02802808, 0.02802809, 0.02802808, 0.02802809, 5.12345713], [1517208480000, 0.02778385, 0.02778385, 0.02778385, 0.02778385, 1.30401345], [1517208540000, 0.02778385, 0.02801599, 0.02778385, 0.02801599, 9.616438], [1517208600000, 0.02801559, 0.02801559, 0.02801545, 0.02801548, 2.51108903], [1517208660000, 0.02801547, 0.02801547, 0.02801535, 0.02801535, 3.75381501], [1517208720000, 0.02801282, 0.02801282, 0.02801282, 0.02801282, 0.06477274], [1517208780000, 0.02793987, 0.02793987, 0.02793987, 0.02793987, 0.35791147], [1517208840000, 0.02793986, 0.02793986, 0.02793986, 0.02793986, 1.57408119], [1517208900000, 0.02793986, 0.02793986, 0.02793986, 0.02793986, 0.71582216], [1517208960000, 0.0279398, 0.0279398, 0.02785398, 0.02785398, 0.50342609], [1517209020000, 0.02785398, 0.02785398, 0.02785398, 0.02785398, 0.50286352], [1517209140000, 0.02793984, 0.02793984, 0.02793984, 0.02793984, 1.24309965], [1517209200000, 0.02793984, 0.02793984, 0.02793984, 0.02793984, 0.08048853], [1517209260000, 0.02793984, 0.02793984, 0.02793984, 0.02793984, 0.67521885], [1517209380000, 0.02793984, 0.02793984, 0.02793984, 0.02793984, 0.10710512], [1517209440000, 0.02793984, 0.02793984, 0.02793984, 0.02793984, 0.1634432], [1517209680000, 0.02791164, 0.02793987, 0.02791164, 0.02793987, 26.71374126], [1517209740000, 0.02778415, 0.02778415, 0.02778415, 0.02778415, 0.88855894], [1517209860000, 0.02778418, 0.0280141, 0.02778418, 0.0280141, 0.28673718], [1517210100000, 0.02778419, 0.02778419, 0.02778419, 0.02778419, 3.17023534], [1517210160000, 0.02778419, 0.02778419, 0.02778419, 0.02778419, 0.82402559], [1517210220000, 0.02778418, 0.02799856, 0.02778418, 0.02799856, 1.12143713], [1517210280000, 0.02778432, 0.02778432, 0.02778426, 0.02778426, 1.0], [1517210340000, 0.02799593, 0.02799593, 0.02799569, 0.02799569, 0.12566527], [1517210400000, 0.02799518, 0.02799518, 0.0279951, 0.0279951, 0.90300204], [1517210460000, 0.02799493, 0.02799494, 0.02778624, 0.02799444, 1.99741253], [1517210520000, 0.02799429, 0.02799439, 0.02778568, 0.02799412, 0.57700229], [1517210580000, 0.02799393, 0.02799393, 0.02799393, 0.02799393, 0.0641874], [1517210640000, 0.02799335, 0.02799335, 0.02799335, 0.02799335, 0.02418896], [1517210700000, 0.02799293, 0.02799295, 0.02799293, 0.02799295, 0.17411501], [1517210760000, 0.02799278, 0.02799278, 0.02799278, 0.02799278, 11.88470586], [1517210820000, 0.02799266, 0.02799266, 0.0277852, 0.0277852, 0.28963496], [1517210880000, 0.0277852, 0.0277852, 0.02778519, 0.0277852, 1.35688671], [1517210940000, 0.02797493, 0.02797493, 0.0277852, 0.0277852, 6.06889078], [1517211000000, 0.0277852, 0.02797471, 0.0277852, 0.02797469, 2.27826375], [1517211120000, 0.0277852, 0.02793608, 0.02778519, 0.02778519, 2.69652714], [1517211180000, 0.02797461, 0.02797461, 0.02797461, 0.02797461, 0.76351229], [1517211300000, 0.02797461, 0.02797462, 0.02797461, 0.02797462, 2.18448241], [1517211360000, 0.02797461, 0.02797462, 0.02797461, 0.02797461, 2.70967962], [1517211420000, 0.02797461, 0.02797461, 0.0279746, 0.02797461, 0.07935927], [1517211480000, 0.02797461, 0.02797461, 0.02778531, 0.02797461, 4.31127488], [1517211540000, 0.0279746, 0.0279746, 0.0279746, 0.0279746, 0.03967929], [1517211600000, 0.0279746, 0.0279746, 0.0279746, 0.0279746, 0.43681999], [1517211660000, 0.0279746, 0.0279746, 0.0279746, 0.0279746, 0.03967644], [1517211720000, 0.02797459, 0.02797459, 0.02797459, 0.02797459, 0.07935218], [1517211780000, 0.02797459, 0.02797459, 0.02797458, 0.02797458, 0.0793522], [1517211840000, 0.02797458, 0.02797459, 0.02797458, 0.02797459, 0.31964901], [1517211900000, 0.02797459, 0.02797459, 0.02797458, 0.02797458, 0.07935648], [1517211960000, 0.02779301, 0.02786268, 0.02778522, 0.02778522, 6.90768998], [1517212020000, 0.02786268, 0.02797458, 0.02786268, 0.02797458, 0.07743869], [1517212140000, 0.027801, 0.027801, 0.027801, 0.027801, 1.4144078], [1517212200000, 0.027801, 0.02797448, 0.02778412, 0.02778412, 33.18158929], [1517212260000, 0.02797441, 0.02797441, 0.02797441, 0.02797441, 0.04051203], [1517212320000, 0.02797437, 0.02797438, 0.02797437, 0.02797438, 0.32542923], [1517212440000, 0.02797441, 0.02797442, 0.02797441, 0.02797442, 0.31660046], [1517212620000, 0.02797431, 0.02797431, 0.02797431, 0.02797431, 1.14104121], [1517212680000, 0.0279, 0.0279, 0.02778782, 0.02778782, 2.10245669], [1517212740000, 0.02797431, 0.02797431, 0.02797431, 0.02797431, 0.07934179], [1517212800000, 0.02797431, 0.02797431, 0.02797395, 0.02797395, 0.07931096], [1517212860000, 0.02797431, 0.02797431, 0.02797431, 0.02797431, 0.29323336], [1517212920000, 0.02797431, 0.02797431, 0.02797429, 0.02797429, 0.44125682], [1517212980000, 0.02797415, 0.0279743, 0.02797254, 0.02797254, 6.94115818], [1517213040000, 0.02797144, 0.02797144, 0.02797144, 0.02797144, 0.03961572], [1517213100000, 0.02797395, 0.02797395, 0.02790051, 0.02797395, 4.71859442], [1517213160000, 0.02797263, 0.02797395, 0.02797263, 0.02797394, 0.17059167], [1517213220000, 0.02792866, 0.02797391, 0.02783101, 0.0278342, 43.31064665], [1517213280000, 0.0278342, 0.0278342, 0.02783233, 0.02783233, 9.2190775], [1517213340000, 0.02783233, 0.02797145, 0.02783233, 0.02797145, 1.11745166], [1517213400000, 0.02797145, 0.02797145, 0.02783606, 0.02783606, 4.67326651], [1517213460000, 0.02783606, 0.02797117, 0.02783606, 0.02783606, 17.33702594], [1517213520000, 0.02783606, 0.02783606, 0.02778413, 0.02778415, 3.78590976], [1517213580000, 0.02778417, 0.02778417, 0.02778417, 0.02778417, 2.0], [1517213640000, 0.02778417, 0.02797114, 0.02778417, 0.02797113, 11.50123673], [1517213700000, 0.02797113, 0.02797113, 0.02797113, 0.02797113, 3.82177099], [1517213820000, 0.0279012, 0.0279012, 0.02778418, 0.02778419, 0.82230321], [1517213880000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 0.18793258], [1517213940000, 0.0279012, 0.0279012, 0.0279012, 0.0279012, 0.07935661], [1517214000000, 0.0279012, 0.0279012, 0.02778417, 0.0279012, 0.24990772], [1517214120000, 0.02790119, 0.0279012, 0.02790119, 0.0279012, 0.08924882], [1517214180000, 0.0279012, 0.02797431, 0.0277842, 0.02797431, 3.50382233], [1517214300000, 0.02797428, 0.02797428, 0.02797428, 0.02797428, 0.06325949], [1517214360000, 0.02797428, 0.02797428, 0.02797428, 0.02797428, 0.04353463], [1517214420000, 0.02778412, 0.02797428, 0.02778412, 0.02797428, 3.0693994], [1517214480000, 0.02797428, 0.02797431, 0.02797428, 0.02797428, 0.20235699], [1517214540000, 0.02797428, 0.02797428, 0.027785, 0.027785, 4.19422679], [1517214600000, 0.02797428, 0.02797429, 0.02797428, 0.02797429, 0.71494192], [1517214660000, 0.02797429, 0.02797429, 0.02778413, 0.02778413, 0.38257004], [1517214720000, 0.02778414, 0.027786, 0.02777502, 0.027786, 10.63100227], [1517214840000, 0.02797378, 0.02797378, 0.02777996, 0.02777996, 5.10695925], [1517214900000, 0.02777997, 0.02797392, 0.02775, 0.02775, 45.35747479], [1517214960000, 0.02776363, 0.02797431, 0.02776353, 0.02797431, 4.94144619], [1517215020000, 0.02797431, 0.02797431, 0.02797431, 0.02797431, 0.87507851], [1517215080000, 0.0278135, 0.0278135, 0.0278135, 0.0278135, 0.12264216], [1517215140000, 0.02797431, 0.02797431, 0.02781351, 0.02781351, 0.98630263], [1517215320000, 0.02797451, 0.02797451, 0.02797451, 0.02797451, 0.03169071], [1517215380000, 0.02797452, 0.02797452, 0.02797451, 0.02797451, 0.40137772], [1517215440000, 0.02797451, 0.02797451, 0.02797451, 0.02797451, 0.0861116], [1517215500000, 0.0279745, 0.0279745, 0.0279745, 0.0279745, 0.78622315], [1517215620000, 0.02797449, 0.0279745, 0.02781863, 0.0279745, 1.53629114], [1517215680000, 0.0279745, 0.0279745, 0.0279745, 0.0279745, 0.11290691], [1517215800000, 0.02781875, 0.02781875, 0.02781875, 0.02781875, 0.05841531], [1517215920000, 0.02797457, 0.02798001, 0.02797457, 0.02798001, 0.11899355], [1517215980000, 0.02798001, 0.02798001, 0.02798001, 0.02798001, 0.06699767], [1517216100000, 0.02799555, 0.02799556, 0.02789769, 0.02789769, 1.29473463], [1517216160000, 0.02799554, 0.02799556, 0.0279955, 0.02799554, 8.01622083], [1517216280000, 0.02789769, 0.02789769, 0.02789769, 0.02789769, 1.13555453], [1517216340000, 0.02799549, 0.02799552, 0.02799549, 0.02799552, 0.35093959], [1517216460000, 0.02799552, 0.02799552, 0.02799552, 0.02799552, 6.80512013], [1517216520000, 0.02799551, 0.02799552, 0.02799551, 0.02799552, 0.11917757], [1517216580000, 0.02799552, 0.02799552, 0.02799552, 0.02799552, 0.0790387], [1517216640000, 0.02799552, 0.02799553, 0.02799552, 0.02799553, 0.11833662], [1517216700000, 0.02799553, 0.02799553, 0.02799553, 0.02799553, 10.73935849], [1517216760000, 0.02799553, 0.02799553, 0.02799553, 0.02799553, 0.07887208], [1517216820000, 0.02799553, 0.02799553, 0.02795667, 0.02795667, 1.10228547], [1517216880000, 0.02799553, 0.02799554, 0.02795667, 0.02795667, 1.12741749], [1517216940000, 0.02799552, 0.02799552, 0.02799551, 0.02799551, 0.0788721], [1517217000000, 0.0279955, 0.02799553, 0.02795667, 0.02799553, 5.63487899], [1517217060000, 0.02795667, 0.0279955, 0.02795667, 0.0279955, 0.53406735], [1517217120000, 0.0279955, 0.0279955, 0.0279955, 0.0279955, 0.07885722], [1517217180000, 0.0279955, 0.02799551, 0.0279955, 0.0279955, 0.2388572], [1517217240000, 0.0279955, 0.0279955, 0.02795667, 0.0279955, 3.849851], [1517217300000, 0.02799549, 0.0279955, 0.02797608, 0.02797608, 4.87115612], [1517217360000, 0.02797608, 0.02799559, 0.02795667, 0.02799559, 3.77799858], [1517217420000, 0.02801547, 0.02801548, 0.02799559, 0.02801548, 3.85258372], [1517217480000, 0.02801548, 0.02801548, 0.02795667, 0.02795667, 1.98628756], [1517217540000, 0.02801547, 0.02801547, 0.02801547, 0.02801547, 0.03049557], [1517217600000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.39263982], [1517217720000, 0.02801547, 0.02801547, 0.02801547, 0.02801547, 0.00579795], [1517217780000, 0.02795667, 0.02795667, 0.02795667, 0.02795667, 0.3], [1517217840000, 0.02795667, 0.02801548, 0.02795667, 0.02801548, 0.41961624], [1517217900000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 2.96117319], [1517218140000, 0.02801547, 0.02801547, 0.02801547, 0.02801547, 0.16413636], [1517218200000, 0.02801546, 0.02801547, 0.02801546, 0.02801547, 0.71389052], [1517218260000, 0.02801547, 0.02801547, 0.02801547, 0.02801547, 0.03394882], [1517218320000, 0.02801547, 0.02801547, 0.02801547, 0.02801547, 0.14804515], [1517218380000, 0.02801547, 0.02801547, 0.02801547, 0.02801547, 0.158046], [1517218500000, 0.02801546, 0.02801547, 0.02801546, 0.02801547, 0.87864523], [1517218560000, 0.02801546, 0.02801547, 0.02801546, 0.02801547, 1.00521495], [1517218680000, 0.02801547, 0.02801547, 0.02801546, 0.02801546, 0.28915851], [1517218800000, 0.02801547, 0.02801547, 0.02801546, 0.02801546, 1.10839138], [1517218860000, 0.02801546, 0.02801546, 0.02801546, 0.02801546, 0.57983881], [1517218920000, 0.02801546, 0.02801547, 0.02795667, 0.02801547, 2.86925199], [1517219040000, 0.02801546, 0.02801546, 0.02801546, 0.02801546, 0.02757386], [1517219100000, 0.02801548, 0.02801548, 0.02801546, 0.02801546, 0.46625345], [1517219160000, 0.02801546, 0.02801546, 0.02801546, 0.02801546, 0.04042336], [1517219220000, 0.02801546, 0.02801547, 0.02801546, 0.02801547, 0.24006866], [1517219280000, 0.02795668, 0.02795668, 0.02795668, 0.02795668, 1.42975115], [1517219340000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.01784367], [1517219400000, 0.02801548, 0.02801548, 0.02795668, 0.02801548, 30.76068324], [1517219520000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 2.4093198], [1517219580000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.2443053], [1517219640000, 0.02801548, 0.02801548, 0.02801547, 0.02801547, 0.13070006], [1517219700000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.47794194], [1517219820000, 0.02801547, 0.02801548, 0.02795668, 0.02801548, 8.75928951], [1517219940000, 0.02801547, 0.02801548, 0.02801547, 0.02801548, 0.71685267], [1517220000000, 0.02801547, 0.02801548, 0.02801547, 0.02801548, 0.39629852], [1517220060000, 0.02801548, 0.02801548, 0.02801547, 0.02801547, 3.04195822], [1517220120000, 0.02801547, 0.02801547, 0.02801547, 0.02801547, 0.02952998], [1517220180000, 0.02801548, 0.02801548, 0.02801547, 0.02801548, 3.0116253], [1517220240000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.04886861], [1517220300000, 0.02801548, 0.02801548, 0.02801547, 0.02801547, 0.75264651], [1517220360000, 0.02801547, 0.02801547, 0.02801547, 0.02801547, 0.02912245], [1517220420000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.88748287], [1517220540000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.03783444], [1517220600000, 0.02801547, 0.02801547, 0.02801547, 0.02801547, 9.62324705], [1517220660000, 0.02801546, 0.02801548, 0.02801546, 0.02801548, 0.44287156], [1517220780000, 0.02801547, 0.02801548, 0.02795668, 0.02795668, 0.88160299], [1517220840000, 0.02795668, 0.02795668, 0.02795668, 0.02795668, 0.12929449], [1517220900000, 0.02801547, 0.02801548, 0.02801547, 0.02801548, 0.05800085], [1517221020000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.97151964], [1517221140000, 0.02801547, 0.02801548, 0.02801547, 0.02801548, 0.03935355], [1517221200000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.99694517], [1517221260000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.07870706], [1517221320000, 0.02801548, 0.02801548, 0.02801546, 0.02801548, 3.45116583], [1517221380000, 0.02801548, 0.02801548, 0.02801546, 0.02801547, 6.54442393], [1517221440000, 0.02795668, 0.02801548, 0.02795668, 0.02801548, 5.8712258], [1517221500000, 0.02798607, 0.02801548, 0.02795668, 0.02801548, 14.72888212], [1517221560000, 0.02801548, 0.02801548, 0.02801545, 0.02801548, 0.07887214], [1517221620000, 0.02801548, 0.02801548, 0.02801547, 0.02801547, 0.07887213], [1517221680000, 0.02801547, 0.02801547, 0.02801547, 0.02801547, 0.3700164], [1517221740000, 0.02801547, 0.02801547, 0.02801546, 0.02801546, 0.07887215], [1517221800000, 0.02801546, 0.02801546, 0.02801546, 0.02801546, 0.07887216], [1517221860000, 0.02801546, 0.02801546, 0.02795668, 0.02795668, 43.43171196], [1517221920000, 0.02795668, 0.02795668, 0.02795668, 0.02795668, 3.24014557], [1517221980000, 0.02795667, 0.02795668, 0.02795667, 0.02795668, 0.71500047], [1517222040000, 0.02795668, 0.02795668, 0.02795667, 0.02795667, 4.52999837], [1517222100000, 0.02795667, 0.02795668, 0.02795667, 0.02795668, 2.2213832], [1517222160000, 0.02795668, 0.02795668, 0.02795668, 0.02795668, 0.35423371], [1517222220000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 2.30385603], [1517222280000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 12.04151568], [1517222340000, 0.02801547, 0.02801548, 0.02801547, 0.02801548, 1.36285729], [1517222400000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.35694526], [1517222460000, 0.02801547, 0.02801548, 0.02801547, 0.02801548, 1.18916778], [1517222520000, 0.02801547, 0.02801547, 0.02801547, 0.02801547, 0.02264965], [1517222640000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.16209996], [1517222760000, 0.02801548, 0.02801548, 0.02801547, 0.02801548, 6.92387524], [1517222820000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 7.13587924], [1517222880000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 3.56793962], [1517222940000, 0.02801547, 0.02801547, 0.02801547, 0.02801547, 1.0], [1517223000000, 0.02801548, 0.02801548, 0.02801547, 0.02801547, 0.38094399], [1517223060000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.19701209], [1517223120000, 0.02801548, 0.02801549, 0.02801548, 0.02801548, 22.30608924], [1517223240000, 0.02801548, 0.028075, 0.02801548, 0.02801548, 1.50858453], [1517223300000, 0.02807499, 0.028075, 0.02807499, 0.028075, 0.09813461], [1517223360000, 0.028075, 0.028075, 0.028075, 0.028075, 3.10290858], [1517223420000, 0.028075, 0.02809762, 0.028075, 0.028075, 2.0452898], [1517223480000, 0.028075, 0.028075, 0.028075, 0.028075, 2.51039133], [1517223540000, 0.028075, 0.028075, 0.028075, 0.028075, 3.91631007], [1517223660000, 0.028075, 0.0280976, 0.028075, 0.028075, 0.78023335], [1517223720000, 0.028075, 0.028075, 0.028075, 0.028075, 6.24871409], [1517223780000, 0.028075, 0.028075, 0.028075, 0.028075, 1.00531143], [1517223840000, 0.02809759, 0.0280976, 0.02809759, 0.02809759, 0.15877451], [1517223900000, 0.0280976, 0.0280976, 0.0280976, 0.0280976, 0.13494142], [1517224020000, 0.02809759, 0.02811096, 0.02801548, 0.02801548, 1.92258938], [1517224140000, 0.02801548, 0.02801548, 0.02801548, 0.02801548, 0.08274816], [1517224200000, 0.02811096, 0.02811096, 0.02801547, 0.02801547, 0.84463901], [1517224260000, 0.02811095, 0.02811095, 0.02811095, 0.02811095, 1.40652618], [1517224320000, 0.02811096, 0.02811096, 0.02811095, 0.02811095, 3.36397777], [1517224380000, 0.02806, 0.02811095, 0.02798745, 0.02811095, 4.46394423], [1517224500000, 0.02811094, 0.02811094, 0.02811094, 0.02811094, 0.35573389], [1517224620000, 0.02811094, 0.02811095, 0.02811094, 0.02811095, 5.51066841], [1517224680000, 0.02811095, 0.02811095, 0.02798728, 0.02798728, 0.53153246], [1517224800000, 0.02811088, 0.02811093, 0.02811088, 0.02811093, 0.35573389], [1517224860000, 0.02796, 0.02811083, 0.02795667, 0.02811083, 90.65166131], [1517225100000, 0.02795667, 0.02811095, 0.02795667, 0.02811095, 6.7827571], [1517225220000, 0.027958, 0.02811095, 0.02795667, 0.02811095, 8.71749167], [1517225280000, 0.02811095, 0.02811095, 0.02811095, 0.02811095, 3.48394955], [1517225340000, 0.02811095, 0.02811095, 0.02811095, 0.02811095, 0.06304763], [1517225400000, 0.02811094, 0.02811095, 0.02811094, 0.02811095, 1.06720167], [1517225580000, 0.027958, 0.027958, 0.027958, 0.027958, 0.09054264], [1517225820000, 0.02811093, 0.02811095, 0.02811093, 0.02811095, 36.28442573], [1517225880000, 0.02811094, 0.02811095, 0.02811094, 0.02811095, 0.43870124], [1517225940000, 0.02811095, 0.02811095, 0.02811095, 0.02811095, 0.357263], [1517226000000, 0.02798998, 0.02811095, 0.02798998, 0.02800848, 4.83116021], [1517226060000, 0.02811095, 0.02811095, 0.02811095, 0.02811095, 0.0787262], [1517226120000, 0.02811095, 0.02811095, 0.02795667, 0.02795667, 32.31273736], [1517226180000, 0.02811094, 0.02811095, 0.02796277, 0.02796277, 22.24534824], [1517226360000, 0.02811086, 0.028125, 0.02811086, 0.028125, 28.20415381], [1517226420000, 0.028125, 0.028125, 0.028125, 0.028125, 0.15303348], [1517226540000, 0.02798544, 0.02815, 0.02798544, 0.02815, 7.86905956], [1517226600000, 0.02815, 0.02819411, 0.02815, 0.02819411, 1.57281774], [1517226660000, 0.02815, 0.02815, 0.02815, 0.02815, 0.35791147], [1517226720000, 0.02815, 0.02815, 0.02815, 0.02815, 0.35791172], [1517226900000, 0.02815001, 0.02819411, 0.02815, 0.02819411, 2.07191228], [1517226960000, 0.02815, 0.02819411, 0.02815, 0.02819411, 3.84612384], [1517227020000, 0.02819411, 0.02819411, 0.02815, 0.02815, 2.1262708], [1517227080000, 0.02819409, 0.0282, 0.02815, 0.0282, 6.10924699], [1517227140000, 0.0282, 0.0282, 0.02815, 0.02815, 0.69383143], [1517227200000, 0.02815, 0.02815, 0.02814992, 0.02815, 0.18856085], [1517227260000, 0.02815, 0.02815, 0.02815, 0.02815, 1.64346894], [1517227320000, 0.02815, 0.02820952, 0.02800124, 0.02800124, 11.48933821], [1517227380000, 0.02800128, 0.02800128, 0.02800128, 0.02800128, 0.33043461], [1517227500000, 0.0280025, 0.02820951, 0.02800237, 0.02820951, 0.42957627], [1517227560000, 0.02800256, 0.02800256, 0.02800256, 0.02800256, 0.1214], [1517227680000, 0.02820947, 0.02820947, 0.02820944, 0.02820944, 0.71926618], [1517227740000, 0.0280041, 0.0280041, 0.0280041, 0.0280041, 0.21510465], [1517227800000, 0.02800551, 0.02820942, 0.02800551, 0.02820942, 0.25024954], [1517227920000, 0.02820933, 0.02820933, 0.02820933, 0.02820933, 0.30052878], [1517227980000, 0.02820821, 0.02820933, 0.02820821, 0.02820933, 6.89707854], [1517228040000, 0.02820937, 0.02820937, 0.02820933, 0.02820936, 0.51985474], [1517228100000, 0.02820937, 0.02820947, 0.02820936, 0.02820936, 8.69016684], [1517228160000, 0.02820947, 0.02820947, 0.02820936, 0.02820936, 1.41631686], [1517228220000, 0.02820936, 0.02820936, 0.02820936, 0.02820936, 1.44252486], [1517228280000, 0.02820936, 0.02820936, 0.02820936, 0.02820936, 1.9806452], [1517228340000, 0.02820936, 0.02820936, 0.02820936, 0.02820936, 1.59331704], [1517228400000, 0.02820936, 0.02820936, 0.02820936, 0.02820936, 0.76947151], [1517228460000, 0.02820936, 0.02820936, 0.02820936, 0.02820936, 14.10130635], [1517228520000, 0.02820936, 0.02820936, 0.02820936, 0.02820936, 0.07838436], [1517228580000, 0.02814166, 0.02820937, 0.02809504, 0.02820937, 0.77079989], [1517228760000, 0.02801604, 0.02801604, 0.02801604, 0.02801604, 1.00028713], [1517228820000, 0.02820411, 0.02820947, 0.02820411, 0.02820947, 0.50250299], [1517228880000, 0.02820947, 0.02820952, 0.02820947, 0.02820952, 0.29920658], [1517228940000, 0.02820952, 0.02821503, 0.02820952, 0.02821503, 1.00202936], [1517229000000, 0.02822499, 0.02824999, 0.02822499, 0.02824999, 1.00400299], [1517229060000, 0.02824999, 0.0283, 0.02820952, 0.02820952, 4.8098972], [1517229120000, 0.02824999, 0.02824999, 0.02820952, 0.02820952, 0.18520848], [1517229180000, 0.02824995, 0.02825, 0.02820952, 0.02820952, 0.30437708], [1517229240000, 0.02822971, 0.02834991, 0.02820952, 0.02820952, 40.2534264], [1517229300000, 0.0283, 0.02835936, 0.0283, 0.02835936, 0.35335689], [1517229420000, 0.02832499, 0.02837038, 0.02832499, 0.02837038, 1.554831], [1517229480000, 0.02835, 0.0283747, 0.0282117, 0.02821195, 4.47162903], [1517229600000, 0.02821285, 0.028375, 0.02821285, 0.028375, 1.82485326], [1517229720000, 0.02821394, 0.028375, 0.02821394, 0.028375, 1.47184298], [1517229780000, 0.02837499, 0.0285, 0.0282146, 0.0284, 20.44330591], [1517229840000, 0.02821554, 0.02821554, 0.02821554, 0.02821554, 0.72857683], [1517229900000, 0.02821621, 0.02821621, 0.02821621, 0.02821621, 0.34554911], [1517230020000, 0.02828474, 0.02828474, 0.02828474, 0.02828474, 0.07814244], [1517230080000, 0.02828474, 0.02828474, 0.02828474, 0.02828474, 0.19939952], [1517230140000, 0.02828474, 0.02828474, 0.02828474, 0.02828474, 0.14599882], [1517230200000, 0.02828474, 0.02828474, 0.02828466, 0.02828466, 8.91642704], [1517230260000, 0.02828474, 0.02840002, 0.02828466, 0.02828466, 6.57207371], [1517230320000, 0.02840002, 0.02840002, 0.02828469, 0.02828469, 0.42300408], [1517230440000, 0.0282847, 0.02828475, 0.0282847, 0.02828475, 0.20197337], [1517230500000, 0.02840001, 0.02840001, 0.02838, 0.02838, 0.42235912], [1517230560000, 0.02831321, 0.02831321, 0.02831321, 0.02831321, 0.0601444], [1517230620000, 0.02831321, 0.02840001, 0.02831321, 0.02840001, 0.07288854], [1517230860000, 0.0284, 0.02840001, 0.0283134, 0.0283134, 0.46388029], [1517230920000, 0.0283136, 0.02840001, 0.0283136, 0.02840001, 0.50554366], [1517230980000, 0.02840001, 0.028425, 0.02840001, 0.028425, 1.32064228], [1517231040000, 0.02842499, 0.02842499, 0.02840002, 0.02840002, 0.78502806], [1517231100000, 0.02840001, 0.02840001, 0.02834321, 0.02834323, 0.54199308], [1517231160000, 0.02842498, 0.02842498, 0.02842498, 0.02842498, 0.08283981], [1517231220000, 0.02842488, 0.02842488, 0.02842488, 0.02842488, 0.22155324], [1517231280000, 0.02842478, 0.02848822, 0.02842478, 0.02848822, 62.18443082], [1517231340000, 0.02848822, 0.02849999, 0.02823808, 0.02823808, 20.55385725], [1517231460000, 0.02844999, 0.02844999, 0.02844999, 0.02844999, 1.62632058], [1517231520000, 0.02844999, 0.0285, 0.02825, 0.02825, 7.9294764], [1517231580000, 0.0282505, 0.02849998, 0.0282505, 0.02849998, 0.35816527], [1517231640000, 0.02825083, 0.02825083, 0.02825083, 0.02825083, 0.06549322], [1517231700000, 0.02849975, 0.02849976, 0.02849975, 0.02849976, 0.35087965], [1517231760000, 0.02849965, 0.02849965, 0.02849965, 0.02849965, 0.26038281], [1517231820000, 0.0282508, 0.02849945, 0.0282508, 0.02849945, 0.10384956], [1517231880000, 0.02849923, 0.02849923, 0.02849905, 0.02849905, 0.1252539], [1517232000000, 0.02849882, 0.02849882, 0.02849879, 0.02849879, 0.8523738], [1517232060000, 0.02849605, 0.02849605, 0.02822175, 0.02825089, 0.59275521], [1517232120000, 0.02825088, 0.02825089, 0.02821047, 0.02821047, 0.29568017], [1517232180000, 0.02844999, 0.02844999, 0.02844999, 0.02844999, 0.16602595], [1517232240000, 0.02841999, 0.02842, 0.02820979, 0.02842, 0.47913608], [1517232300000, 0.02840997, 0.02846991, 0.02820981, 0.02820981, 0.73008556], [1517232360000, 0.02821, 0.02821, 0.02821, 0.02821, 0.41349073], [1517232480000, 0.02834, 0.02834, 0.02834, 0.02834, 10.21171489], [1517232540000, 0.0282105, 0.02834, 0.0282105, 0.02834, 11.49446239], [1517232660000, 0.02833899, 0.02834, 0.02833799, 0.02834, 2.12732359], [1517232720000, 0.02834999, 0.02837834, 0.028345, 0.028345, 0.07815576], [1517232780000, 0.028345, 0.02837334, 0.028345, 0.02837334, 2.33911062], [1517232840000, 0.02821499, 0.02837334, 0.02821499, 0.02837334, 0.06627042], [1517232900000, 0.02837333, 0.02837334, 0.028373, 0.028373, 1.09464311], [1517232960000, 0.028373, 0.028373, 0.028373, 0.028373, 1.78980062], [1517233020000, 0.02821749, 0.028373, 0.02821749, 0.02837298, 0.43907131], [1517233080000, 0.02837298, 0.02837298, 0.02837298, 0.02837298, 0.03907053], [1517233140000, 0.02837297, 0.02837298, 0.02837297, 0.02837297, 0.07813931], [1517233200000, 0.02837297, 0.02837297, 0.02837297, 0.02837297, 0.7931674], [1517233260000, 0.02837297, 0.02837297, 0.02837297, 0.02837297, 0.12168132], [1517233320000, 0.02837297, 0.02837298, 0.02837296, 0.02837298, 0.23680382], [1517233380000, 0.02837297, 0.02837297, 0.02837297, 0.02837297, 0.03908178], [1517233440000, 0.02837297, 0.02837297, 0.02837294, 0.02837294, 0.17329829], [1517233500000, 0.02837294, 0.02837294, 0.028372, 0.02837294, 3.41541575], [1517233560000, 0.028372, 0.02837295, 0.028372, 0.02837295, 3.08234072], [1517233620000, 0.02837295, 0.02837295, 0.02837295, 0.02837295, 1.6915755], [1517233680000, 0.02837295, 0.02837295, 0.02837295, 0.02837295, 0.06122084], [1517233740000, 0.02837295, 0.02837295, 0.02837295, 0.02837295, 0.03786072], [1517233800000, 0.028372, 0.02837295, 0.02830107, 0.02837295, 0.10423934], [1517233860000, 0.02837294, 0.02837295, 0.02837294, 0.02837295, 2.0], [1517233980000, 0.02837277, 0.02837277, 0.02837277, 0.02837277, 0.15120069], [1517234040000, 0.02837277, 0.02837295, 0.02830117, 0.02830117, 7.99071653], [1517234100000, 0.02830117, 0.02837293, 0.02821011, 0.02837293, 5.66266865], [1517234160000, 0.02837295, 0.02837295, 0.02837295, 0.02837295, 0.0728546], [1517234400000, 0.02837292, 0.02837295, 0.02837292, 0.02837295, 0.42921936], [1517234460000, 0.02821023, 0.02821023, 0.02821023, 0.02821023, 0.39951621], [1517234520000, 0.02837292, 0.02837292, 0.02830001, 0.02830001, 0.31821508], [1517234580000, 0.02830001, 0.02830001, 0.02830001, 0.02830001, 0.11946828], [1517234640000, 0.02830001, 0.02830001, 0.0283, 0.02830001, 14.16448273], [1517234700000, 0.02830001, 0.02830001, 0.02823208, 0.02823208, 18.93969701], [1517234760000, 0.02822711, 0.02822711, 0.02822711, 0.02822711, 0.05298354], [1517234820000, 0.0283, 0.02830001, 0.0283, 0.02830001, 0.22288671], [1517234880000, 0.02830001, 0.02830001, 0.02830001, 0.02830001, 0.42296805], [1517234940000, 0.02830001, 0.02830001, 0.02830001, 0.02830001, 0.03638796], [1517235000000, 0.02830001, 0.02830001, 0.02821014, 0.02830001, 0.73455072], [1517235120000, 0.0282999, 0.0282999, 0.0282999, 0.0282999, 4.0], [1517235420000, 0.02828372, 0.028284, 0.02828372, 0.028284, 0.38095456], [1517235480000, 0.028284, 0.028284, 0.02828399, 0.028284, 0.62004215], [1517235600000, 0.028284, 0.028284, 0.028284, 0.028284, 7.0907182], [1517235660000, 0.02821016, 0.02821016, 0.02821016, 0.02821016, 0.02], [1517235720000, 0.02821015, 0.02821015, 0.02821015, 0.02821015, 0.025731], [1517235780000, 0.02821016, 0.028285, 0.02821016, 0.028285, 6.49994608], [1517235840000, 0.028285, 0.028285, 0.028285, 0.028285, 11.032425], [1517235900000, 0.028285, 0.028285, 0.028285, 0.028285, 0.70708856], [1517235960000, 0.02821014, 0.02828499, 0.02821014, 0.02828499, 3.57176905], [1517236020000, 0.02821014, 0.02821014, 0.02821, 0.02821, 15.31744865], [1517236080000, 0.02820947, 0.02820947, 0.02820338, 0.02820338, 0.45004163], [1517236140000, 0.0282, 0.0282, 0.028175, 0.028175, 0.82713043], [1517236200000, 0.0282, 0.0282, 0.028175, 0.028175, 0.45304099], [1517236260000, 0.028175, 0.028175, 0.028175, 0.028175, 0.03913043], [1517236320000, 0.028175, 0.028175, 0.02815, 0.02815, 0.03913043], [1517236380000, 0.02818999, 0.02818999, 0.02815, 0.02818999, 5.17844289], [1517236440000, 0.028125, 0.028125, 0.02810504, 0.02810504, 1.33721987], [1517236500000, 0.02817999, 0.02817999, 0.02817999, 0.02817999, 0.14194469], [1517236740000, 0.02810504, 0.02810504, 0.02810504, 0.02810504, 5.01173418], [1517236860000, 0.02815, 0.02815, 0.02810504, 0.02810504, 1.79120802], [1517236920000, 0.02810504, 0.02810504, 0.02810504, 0.02810504, 0.53960584], [1517236980000, 0.02814999, 0.02814999, 0.02810504, 0.02810504, 0.41751245], [1517237040000, 0.02810504, 0.02810504, 0.02810504, 0.02810504, 0.78042293], [1517237100000, 0.02815, 0.02815, 0.02810504, 0.02810504, 0.71047956], [1517237160000, 0.02815, 0.02817999, 0.02815, 0.02817999, 8.14246255], [1517237220000, 0.02817999, 0.02817999, 0.02817999, 0.02817999, 0.03912351], [1517237280000, 0.02818996, 0.02828891, 0.02817999, 0.02828891, 0.45738759], [1517237340000, 0.02828865, 0.02828867, 0.02828847, 0.02828847, 6.41940553], [1517237400000, 0.02828847, 0.02828847, 0.02828847, 0.02828847, 0.35350053], [1517237580000, 0.0281051, 0.0281051, 0.0281051, 0.0281051, 2.872823], [1517237640000, 0.02828136, 0.02828136, 0.0281051, 0.0281051, 3.58494107], [1517237700000, 0.0282197, 0.0282197, 0.0281051, 0.02821939, 2.89998031], [1517237760000, 0.02821934, 0.02821934, 0.0281051, 0.0281051, 3.02328614], [1517237820000, 0.02821396, 0.02821396, 0.0281051, 0.0281051, 3.04630224], [1517237880000, 0.0281051, 0.02821352, 0.02810504, 0.02821352, 3.63107499], [1517237940000, 0.02821306, 0.02821306, 0.02821305, 0.02821305, 0.25266279], [1517238000000, 0.02810504, 0.02821256, 0.02808, 0.02821256, 2.47408965], [1517238060000, 0.02821236, 0.02821236, 0.02808, 0.02808, 0.42266088], [1517238120000, 0.02821141, 0.02821141, 0.02821123, 0.02821123, 0.75386462], [1517238180000, 0.02821084, 0.02821084, 0.02808, 0.02808, 2.14845646], [1517238300000, 0.02808, 0.02808, 0.02808, 0.02808, 0.07672472], [1517238420000, 0.02820751, 0.02820751, 0.02820751, 0.02820751, 1.92852357], [1517238480000, 0.02820715, 0.02820715, 0.02820715, 0.02820715, 0.05], [1517238540000, 0.02820611, 0.02820611, 0.02820611, 0.02820611, 0.04991772], [1517238600000, 0.02820597, 0.02820597, 0.02820597, 0.02820597, 0.43253131], [1517238660000, 0.02820514, 0.02820514, 0.02820514, 0.02820514, 0.15228094], [1517238720000, 0.02820514, 0.02820514, 0.02820514, 0.02820514, 0.16856717], [1517238900000, 0.02820403, 0.02820403, 0.02820403, 0.02820403, 0.16883732], [1517239140000, 0.02808, 0.0282035, 0.02808, 0.0282035, 1.5696898], [1517239200000, 0.02808, 0.02820481, 0.02808, 0.02820323, 0.98694758], [1517239260000, 0.02808, 0.02808, 0.0280611, 0.0280611, 2.806525], [1517239440000, 0.0280611, 0.0280611, 0.0280611, 0.0280611, 0.02494484], [1517239500000, 0.02820473, 0.02820473, 0.02820473, 0.02820473, 0.35454958], [1517239680000, 0.028165, 0.028165, 0.028025, 0.028165, 5.57025674], [1517239740000, 0.02805, 0.02805001, 0.02805, 0.02805001, 3.66399668], [1517239800000, 0.02805002, 0.028165, 0.02805002, 0.028165, 0.58921152], [1517239860000, 0.02805002, 0.02805002, 0.02800992, 0.02800992, 1.0638419], [1517239920000, 0.028165, 0.028165, 0.028165, 0.028165, 0.83966966], [1517240100000, 0.02816499, 0.02816499, 0.02800993, 0.02800993, 11.40913715], [1517240160000, 0.02800993, 0.02800993, 0.02800993, 0.02800993, 0.14133479], [1517240220000, 0.028165, 0.028165, 0.028165, 0.028165, 0.04650876], [1517240280000, 0.028165, 0.028165, 0.028165, 0.028165, 0.32578792], [1517240340000, 0.02800111, 0.02800111, 0.02800111, 0.02800111, 1.0], [1517240400000, 0.028163, 0.028165, 0.028163, 0.028163, 26.71771172], [1517240460000, 0.028163, 0.028165, 0.028163, 0.028163, 14.4561745], [1517240520000, 0.028163, 0.028163, 0.028163, 0.028163, 1.107353], [1517240580000, 0.02816499, 0.02816499, 0.02816499, 0.02816499, 0.02221142], [1517240640000, 0.02816499, 0.02816499, 0.028163, 0.028163, 2.241648], [1517240700000, 0.028163, 0.028165, 0.028163, 0.028163, 2.71621835], [1517240760000, 0.028163, 0.028163, 0.028163, 0.028163, 5.36724503], [1517240820000, 0.02808978, 0.02808978, 0.02808978, 0.02808978, 0.06018285], [1517240880000, 0.02808978, 0.028165, 0.02808978, 0.028165, 19.22541028], [1517241000000, 0.028165, 0.028165, 0.02816499, 0.02816499, 1.69293056], [1517241060000, 0.02816499, 0.02816499, 0.02816498, 0.02816498, 0.99634438], [1517241120000, 0.02810216, 0.02810216, 0.02810216, 0.02810216, 0.03923186], [1517241180000, 0.02810216, 0.02810216, 0.02803936, 0.02803936, 0.16543052], [1517241300000, 0.02810215, 0.028165, 0.02803936, 0.028165, 4.87871295], [1517241360000, 0.02816499, 0.028165, 0.02816499, 0.028165, 7.04566159], [1517241420000, 0.028165, 0.028165, 0.02810215, 0.02810215, 1.57559637], [1517241480000, 0.028165, 0.028165, 0.02810215, 0.02810215, 0.13353331], [1517241540000, 0.02810215, 0.02810215, 0.02810215, 0.02810215, 0.07846374], [1517241600000, 0.02816499, 0.02816499, 0.02806, 0.02816499, 24.38388825], [1517241660000, 0.02814418, 0.028165, 0.02798191, 0.02798191, 15.96303183], [1517241720000, 0.02797555, 0.02797555, 0.02797555, 0.02797555, 0.57701754], [1517241780000, 0.02797555, 0.02797555, 0.02797555, 0.02797555, 11.81783166], [1517241840000, 0.02797631, 0.02797631, 0.027975, 0.027975, 3.37221196], [1517241900000, 0.0279755, 0.0281648, 0.0279755, 0.0281648, 5.69296729], [1517241960000, 0.02807062, 0.02807062, 0.02807062, 0.02807062, 0.12475467], [1517242020000, 0.02816447, 0.02816447, 0.02816447, 0.02816447, 2.84045014], [1517242080000, 0.02814311, 0.02814311, 0.02814311, 0.02814311, 2.69917477], [1517242140000, 0.02814311, 0.02814311, 0.02814311, 0.02814311, 18.7984886], [1517242200000, 0.027975, 0.027975, 0.02791214, 0.02791214, 21.5392923], [1517242260000, 0.027975, 0.027975, 0.027975, 0.027975, 1.0], [1517242320000, 0.02805492, 0.02809259, 0.02805492, 0.02809259, 2.37329197], [1517242440000, 0.02809259, 0.0280926, 0.02809259, 0.0280926, 0.25576137], [1517242500000, 0.02809259, 0.02809259, 0.02809259, 0.02809259, 0.17513551], [1517242560000, 0.028, 0.028, 0.028, 0.028, 0.03569456], [1517242680000, 0.028, 0.02809261, 0.028, 0.0280926, 3.98367031], [1517242740000, 0.0280926, 0.02809261, 0.02795, 0.02809261, 1.05439872], [1517242800000, 0.02809261, 0.02811796, 0.0278822, 0.0278822, 68.76288315], [1517242860000, 0.02807034, 0.02811795, 0.02807034, 0.02811795, 2.01517552], [1517242920000, 0.02811795, 0.02811796, 0.02800878, 0.02800878, 3.94893079], [1517242980000, 0.02800878, 0.02800878, 0.02800878, 0.02800878, 0.07872532], [1517243040000, 0.02800878, 0.02800878, 0.02800878, 0.02800878, 0.07872532], [1517243100000, 0.02800878, 0.02811796, 0.02800878, 0.02809281, 9.00892804], [1517243160000, 0.02811796, 0.02811796, 0.02788223, 0.02788223, 43.40633822], [1517243220000, 0.02811796, 0.02811796, 0.02790001, 0.02790001, 0.30251], [1517243280000, 0.02790011, 0.02790011, 0.02790011, 0.02790011, 7.30496305], [1517243340000, 0.02811794, 0.02811795, 0.02811794, 0.02811795, 0.352], [1517243580000, 0.02811794, 0.02811794, 0.02798451, 0.02798451, 2.73185857], [1517243640000, 0.02798451, 0.02798451, 0.02798451, 0.02798451, 0.61491448], [1517243700000, 0.02811779, 0.02811779, 0.02798451, 0.02811777, 1.81762979], [1517243760000, 0.02798451, 0.0281177, 0.02798451, 0.02811762, 3.53192901], [1517243820000, 0.02798451, 0.02798451, 0.02798451, 0.02798451, 0.24620619], [1517243880000, 0.02798451, 0.02798451, 0.02798451, 0.02798451, 2.76701778], [1517243940000, 0.02798451, 0.02798451, 0.02798451, 0.02798451, 0.07879358], [1517244000000, 0.02798451, 0.02811717, 0.02798451, 0.02798451, 3.84739069], [1517244060000, 0.02798451, 0.02811711, 0.02798451, 0.02798951, 0.12136543], [1517244120000, 0.02798951, 0.02798951, 0.02798951, 0.02798951, 0.14992221], [1517244180000, 0.02798951, 0.02798951, 0.02798951, 0.02798951, 0.38940825], [1517244240000, 0.02798951, 0.02811687, 0.02798951, 0.02798951, 0.1244011], [1517244300000, 0.02798951, 0.02811669, 0.0278326, 0.0278326, 91.67942111], [1517244360000, 0.0279, 0.0279, 0.0279, 0.0279, 2.38601201], [1517244480000, 0.02799998, 0.02799998, 0.02789998, 0.02789998, 12.11275947], [1517244540000, 0.02789998, 0.0279, 0.02789998, 0.0279, 16.9287143], [1517244600000, 0.0279, 0.0279, 0.0279, 0.0279, 5.74609614], [1517244660000, 0.0279, 0.0279, 0.0279, 0.0279, 5.57921858], [1517244720000, 0.0279, 0.02790001, 0.0279, 0.0279, 14.86856903], [1517244840000, 0.02790001, 0.02790001, 0.02790001, 0.02790001, 0.40229469], [1517244900000, 0.02790001, 0.02790001, 0.02790001, 0.02790001, 6.07526879], [1517244960000, 0.02790001, 0.02790001, 0.0279, 0.0279, 16.98792062], [1517245020000, 0.02790001, 0.028, 0.0279, 0.028, 11.56013456], [1517245080000, 0.02790002, 0.02790002, 0.02790001, 0.02790001, 0.7295161], [1517245140000, 0.02799999, 0.02799999, 0.02790002, 0.02790002, 1.74022541], [1517245200000, 0.02799995, 0.02799995, 0.02790002, 0.02790002, 0.20737336], [1517245260000, 0.02790002, 0.02790002, 0.02790002, 0.02790002, 0.80551033], [1517245320000, 0.02790001, 0.02790002, 0.0279, 0.02790002, 3.48636975], [1517245500000, 0.02799954, 0.02799955, 0.02799954, 0.02799955, 70.0], [1517245560000, 0.02799953, 0.02799953, 0.02799953, 0.02799953, 0.07677937], [1517245740000, 0.02799978, 0.02799978, 0.02790002, 0.02790002, 0.75985251], [1517245800000, 0.02790002, 0.02799978, 0.0279, 0.0279, 9.52329512], [1517245860000, 0.02789, 0.02789, 0.02789, 0.02789, 0.19165276], [1517246100000, 0.02787764, 0.02789, 0.02786526, 0.02789, 0.18688242], [1517246160000, 0.02786539, 0.02786539, 0.02786539, 0.02786539, 0.03956521], [1517246220000, 0.02786539, 0.02786539, 0.02786539, 0.02786539, 2.03386957], [1517246280000, 0.02786539, 0.02786539, 0.02786526, 0.02786526, 2.99745213], [1517246340000, 0.027885, 0.027885, 0.027885, 0.027885, 0.07907478], [1517246400000, 0.027885, 0.027885, 0.02786526, 0.02786526, 0.07907478], [1517246460000, 0.027885, 0.02789, 0.027885, 0.027885, 1.96046261], [1517246520000, 0.027885, 0.027885, 0.027885, 0.027885, 0.54059673], [1517246580000, 0.027885, 0.027885, 0.027885, 0.027885, 3.09977328], [1517246640000, 0.0278655, 0.0278655, 0.0278655, 0.0278655, 0.33622514], [1517246700000, 0.0278655, 0.0278655, 0.02786526, 0.02786526, 4.87480368], [1517246760000, 0.02786526, 0.02786526, 0.02786526, 0.02786526, 0.20996281], [1517246820000, 0.02786549, 0.0278655, 0.02786549, 0.0278655, 9.33545845], [1517246880000, 0.0278655, 0.0278655, 0.0278655, 0.0278655, 0.84938248], [1517246940000, 0.0278655, 0.0278655, 0.0278655, 0.0278655, 0.24960153], [1517247000000, 0.0278655, 0.0278655, 0.0278655, 0.0278655, 0.22602132], [1517247060000, 0.0278655, 0.0278655, 0.0278655, 0.0278655, 0.5320141], [1517247120000, 0.0278655, 0.0278655, 0.0278655, 0.0278655, 10.87340178], [1517247180000, 0.0278655, 0.0278655, 0.02786527, 0.02786527, 0.49181225], [1517247240000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 2.05835869], [1517247300000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 0.02051], [1517247360000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 1.79434831], [1517247480000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 3.1377188], [1517247540000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 3.89733841], [1517247660000, 0.02786526, 0.02786526, 0.02786526, 0.02786526, 32.656526], [1517247840000, 0.0278651, 0.0278651, 0.0278651, 0.0278651, 3.72774671], [1517247960000, 0.0278651, 0.0278651, 0.0278651, 0.0278651, 0.75019354], [1517248080000, 0.0278651, 0.0278651, 0.0278651, 0.0278651, 1.66215911], [1517248140000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 1.61413565], [1517248200000, 0.02785405, 0.02785405, 0.02785312, 0.02785312, 0.77747758], [1517248260000, 0.02785312, 0.02785312, 0.02785312, 0.02785312, 44.01400992], [1517248320000, 0.02785312, 0.02785312, 0.02785312, 0.02785312, 8.22782688], [1517248380000, 0.02785312, 0.02785312, 0.0278431, 0.02785312, 1.34518322], [1517248440000, 0.02785312, 0.02785312, 0.0278431, 0.02785311, 15.75919381], [1517248500000, 0.02785311, 0.02785312, 0.02785311, 0.02785312, 0.79724673], [1517248560000, 0.02785312, 0.02785312, 0.02785312, 0.02785312, 4.29528632], [1517248620000, 0.02785312, 0.02785405, 0.02785312, 0.02785405, 2.78988518], [1517248740000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 2.01340617], [1517248800000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 0.7591654], [1517248860000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 0.59557798], [1517248920000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 0.80994518], [1517248980000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 0.36333866], [1517249040000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 2.75037698], [1517249100000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 1.0395827], [1517249160000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 5.4391654], [1517249220000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 0.0791654], [1517249280000, 0.02785405, 0.02785405, 0.02785314, 0.02785314, 0.07916561], [1517249340000, 0.02785314, 0.02785314, 0.02785314, 0.02785314, 1.01031143], [1517249400000, 0.02785314, 0.02785315, 0.02785314, 0.02785315, 3.41164451], [1517249460000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 0.0791654], [1517249520000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 0.1187481], [1517249580000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 0.1895827], [1517249640000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 0.1187481], [1517249700000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 0.58301232], [1517249760000, 0.02785405, 0.02785405, 0.02785405, 0.02785405, 3.58151476], [1517249820000, 0.02786527, 0.02786527, 0.02785318, 0.02786527, 10.01097182], [1517249880000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 2.10916567], [1517249940000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 14.38727568], [1517250000000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 1.13072214], [1517250060000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 0.07916568], [1517250120000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 11.60151475], [1517250180000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 0.2363187], [1517250240000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 1.07966264], [1517250300000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 0.11840485], [1517250360000, 0.02786527, 0.02786527, 0.02786527, 0.02786527, 0.11840485], [1517250420000, 0.02786527, 0.02786527, 0.0278532, 0.02786527, 3.43758861], [1517250480000, 0.02786527, 0.02786527, 0.02785322, 0.02785322, 48.75969537], [1517250540000, 0.02785322, 0.02789, 0.02785317, 0.02789, 52.26670286], [1517250600000, 0.02793215, 0.02793215, 0.02785315, 0.02785315, 1.21778395], [1517250660000, 0.02793214, 0.02793215, 0.02785317, 0.02793215, 1.07915525], [1517250720000, 0.02793215, 0.02799982, 0.02793215, 0.02799982, 0.53441593], [1517250780000, 0.02799982, 0.02799991, 0.02799982, 0.02799982, 3.88715014], [1517250840000, 0.02799982, 0.02799982, 0.02799982, 0.02799982, 0.08976975], [1517250900000, 0.02799982, 0.02799982, 0.02785317, 0.02785317, 0.5327143], [1517250960000, 0.02785318, 0.02785318, 0.02785316, 0.02785316, 8.39323115], [1517251080000, 0.02785498, 0.02785498, 0.02785498, 0.02785498, 0.40302629], [1517251140000, 0.028, 0.028, 0.028, 0.028, 0.18856735], [1517251320000, 0.02785564, 0.02785564, 0.02785564, 0.02785564, 1.18], [1517251380000, 0.028, 0.028, 0.028, 0.028, 0.07438486], [1517251440000, 0.02785573, 0.02785574, 0.02785573, 0.02785574, 0.38878283], [1517251560000, 0.02786001, 0.02786001, 0.02786001, 0.02786001, 0.05], [1517251740000, 0.02786001, 0.02786001, 0.02786001, 0.02786001, 0.37409734], [1517251800000, 0.02786002, 0.028, 0.02786001, 0.02786002, 2.15616215], [1517251860000, 0.028, 0.02804906, 0.028, 0.02804906, 0.38641432], [1517251980000, 0.02804904, 0.02804906, 0.02804904, 0.02804906, 10.0], [1517252040000, 0.02804906, 0.02804906, 0.02801694, 0.02801694, 0.1731125], [1517252100000, 0.028, 0.028, 0.028, 0.028, 2.58656395], [1517252160000, 0.028, 0.028, 0.028, 0.028, 0.13057346], [1517252220000, 0.02791112, 0.02791112, 0.0279111, 0.0279111, 5.07697745], [1517252280000, 0.02792001, 0.02792001, 0.02792001, 0.02792001, 1.23221395], [1517252340000, 0.02801694, 0.02801694, 0.02801694, 0.02801694, 0.53808015], [1517252460000, 0.02792211, 0.02792211, 0.02792211, 0.02792211, 3.92521916], [1517252580000, 0.02801694, 0.02801694, 0.02801694, 0.02801694, 0.63098743], [1517252640000, 0.02801694, 0.02813308, 0.02801694, 0.02813308, 2.89038268], [1517252700000, 0.02813309, 0.02813309, 0.02790565, 0.02790565, 1.42181272], [1517252760000, 0.02813309, 0.02813309, 0.02813309, 0.02813309, 0.03835893], [1517252820000, 0.02813306, 0.02813306, 0.02813306, 0.02813306, 0.09952703], [1517252880000, 0.02812306, 0.0281331, 0.02812306, 0.0281331, 5.03530114], [1517252940000, 0.02813304, 0.02813304, 0.02813304, 0.02813304, 0.21784066], [1517253000000, 0.02813304, 0.02813304, 0.02790868, 0.02813304, 0.74382996], [1517253060000, 0.02813304, 0.02813307, 0.02813304, 0.02813304, 0.32537163], [1517253120000, 0.02813309, 0.02813309, 0.02813306, 0.02813309, 0.94761924], [1517253180000, 0.02813306, 0.0281331, 0.02813306, 0.0281331, 21.69690704], [1517253240000, 0.0281331, 0.0281331, 0.02813306, 0.0281331, 15.98902957], [1517253300000, 0.02813304, 0.0281331, 0.02808, 0.02808, 0.27891753], [1517253360000, 0.02808, 0.0281331, 0.02808, 0.02808, 10.32295796], [1517253420000, 0.02808, 0.02808, 0.02808, 0.02808, 0.07852564], [1517253480000, 0.02808, 0.02813304, 0.02808, 0.02808, 0.5045127], [1517253540000, 0.02813289, 0.02813289, 0.02813289, 0.02813289, 51.5213047], [1517253720000, 0.0281328, 0.02813289, 0.02790118, 0.02790118, 90.54217882], [1517253840000, 0.02795117, 0.02814999, 0.0279, 0.02790001, 172.5832966], [1517253900000, 0.02790018, 0.02814999, 0.02790017, 0.02790048, 19.35908873], [1517253960000, 0.02790056, 0.02814997, 0.02790056, 0.02790077, 9.36730326], [1517254020000, 0.02790085, 0.02790124, 0.02790085, 0.02790124, 7.20885029], [1517254080000, 0.028, 0.028, 0.02790273, 0.02790295, 3.26436898], [1517254140000, 0.02790329, 0.02814951, 0.02790329, 0.02790358, 0.99047428], [1517254200000, 0.02790387, 0.02814924, 0.02790387, 0.02814924, 9.14869686], [1517254260000, 0.02814924, 0.02814924, 0.02794794, 0.02795101, 3.52164765], [1517254320000, 0.02795104, 0.02795114, 0.027951, 0.02795114, 3.32311097], [1517254380000, 0.02795135, 0.02795194, 0.02795135, 0.02795194, 1.29731247], [1517254440000, 0.02795212, 0.02814986, 0.02795212, 0.02795223, 12.86420699], [1517254500000, 0.02795255, 0.02795297, 0.02795255, 0.02795297, 8.56349483], [1517254560000, 0.02795297, 0.02814899, 0.02795294, 0.02795296, 7.86093272], [1517254620000, 0.02795297, 0.02795299, 0.02795296, 0.02795298, 2.5654987], [1517254680000, 0.02795298, 0.02814892, 0.02795298, 0.02814892, 4.93661013], [1517254740000, 0.02814892, 0.02814892, 0.02814892, 0.02814892, 11.06384541], [1517254800000, 0.02814892, 0.02815, 0.02814892, 0.02815, 1.05087025], [1517254860000, 0.0281649, 0.0281649, 0.02808137, 0.02808138, 12.95390312], [1517254920000, 0.02813998, 0.02814, 0.02813998, 0.02814, 3.79071983], [1517254980000, 0.02808136, 0.02808136, 0.02808136, 0.02808136, 0.06105296], [1517255100000, 0.028139, 0.028139, 0.028139, 0.028139, 0.7107573], [1517255160000, 0.02808138, 0.02808138, 0.02805, 0.02805, 0.44766785], [1517255280000, 0.02805, 0.02805, 0.02805, 0.02805, 0.03931612], [1517255340000, 0.02805, 0.02805, 0.02805, 0.02805, 0.85886676], [1517255460000, 0.02813898, 0.02815, 0.02813898, 0.02815, 15.16823722], [1517255580000, 0.0281649, 0.028175, 0.0281649, 0.028175, 15.21997833], [1517255640000, 0.02819998, 0.0282, 0.028175, 0.028175, 1.77234861], [1517255700000, 0.02819999, 0.02819999, 0.028175, 0.028175, 4.80759485], [1517255760000, 0.02819998, 0.02819998, 0.02819998, 0.02819998, 0.05219862], [1517255820000, 0.02819999, 0.02819999, 0.02819999, 0.02819999, 0.12003147], [1517255880000, 0.02819998, 0.02819998, 0.028175, 0.028175, 1.42422087], [1517255940000, 0.02819998, 0.02819998, 0.02819998, 0.02819998, 0.13329123], [1517256000000, 0.02819998, 0.02819998, 0.028175, 0.028175, 3.01120745], [1517256060000, 0.02819998, 0.02819999, 0.0281999, 0.02819999, 1.80792087], [1517256120000, 0.02819999, 0.02819999, 0.02817497, 0.02817497, 0.35109097], [1517256180000, 0.02817497, 0.02817497, 0.02817497, 0.02817497, 0.02609851], [1517256240000, 0.02817495, 0.02817495, 0.02817495, 0.02817495, 0.03119651], [1517256300000, 0.02816999, 0.02817495, 0.02816999, 0.02817495, 0.39406322], [1517256360000, 0.02817495, 0.02817495, 0.02817495, 0.02817495, 0.28682591], [1517256420000, 0.02816999, 0.02816999, 0.02816999, 0.02816999, 0.039999], [1517256540000, 0.02817494, 0.02817494, 0.02817494, 0.02817494, 0.0250417], [1517256600000, 0.02817495, 0.02817495, 0.02817494, 0.02817494, 0.06494126], [1517256660000, 0.02817495, 0.02817495, 0.02815, 0.02817495, 7.10013154], [1517256720000, 0.0281125, 0.0281125, 0.0281125, 0.0281125, 1.5296965], [1517256780000, 0.02817495, 0.02817495, 0.02817495, 0.02817495, 0.36315971], [1517256960000, 0.0281125, 0.0281125, 0.0281125, 0.0281125, 3.2], [1517257020000, 0.02815, 0.02817493, 0.02815, 0.02817493, 2.03295822], [1517257080000, 0.02817493, 0.02817493, 0.02817493, 0.02817493, 19.40112108], [1517257140000, 0.02817494, 0.02817495, 0.02817493, 0.02817494, 2.38060756], [1517257200000, 0.02817493, 0.02817493, 0.02817493, 0.02817493, 19.20286804], [1517257260000, 0.02817493, 0.02817493, 0.02817493, 0.02817493, 2.38797021], [1517257320000, 0.02817493, 0.02817493, 0.02817493, 0.02817493, 2.04812112], [1517257380000, 0.02817493, 0.02817493, 0.02817493, 0.02817493, 0.03960772], [1517257440000, 0.02817493, 0.02817493, 0.02817493, 0.02817493, 0.98499032], [1517257500000, 0.02817494, 0.02817495, 0.02817493, 0.02817493, 5.92703327], [1517257560000, 0.02817493, 0.02819989, 0.02817493, 0.02819989, 3.97747356], [1517257620000, 0.02817494, 0.02819988, 0.02817493, 0.02817493, 1.36142352], [1517257680000, 0.028174, 0.028174, 0.028174, 0.028174, 1.0], [1517257740000, 0.02815, 0.02815, 0.02815, 0.02815, 2.63179818], [1517257800000, 0.02815, 0.02815, 0.02814999, 0.02815, 0.86122242], [1517257860000, 0.02815, 0.02815, 0.02815, 0.02815, 3.15994188], [1517257980000, 0.0281125, 0.02815, 0.0281125, 0.0281125, 2.12415107], [1517258100000, 0.0281125, 0.0281125, 0.0281125, 0.0281125, 2.0], [1517258280000, 0.0281125, 0.0281125, 0.02810033, 0.02810033, 4.07396572], [1517258340000, 0.02810033, 0.02810033, 0.02810033, 0.02810033, 0.4858677], [1517258460000, 0.02806001, 0.0281125, 0.02806001, 0.0281125, 0.24271971], [1517258520000, 0.02806, 0.02806, 0.02806, 0.02806, 0.27300362], [1517258640000, 0.02811249, 0.02817399, 0.02811249, 0.02817399, 5.01600299], [1517258700000, 0.02806, 0.02806, 0.02798, 0.02798, 32.8], [1517258760000, 0.02817397, 0.02817397, 0.02817397, 0.02817397, 0.2569747], [1517258820000, 0.027953, 0.027953, 0.027953, 0.027953, 1.0], [1517258880000, 0.02817384, 0.02817384, 0.02817384, 0.02817384, 0.06102693], [1517259120000, 0.027953, 0.02795306, 0.027953, 0.02795306, 0.24304748], [1517259240000, 0.028, 0.02813583, 0.028, 0.02813583, 0.9224896], [1517259300000, 0.02813583, 0.028159, 0.02813583, 0.02813583, 1.64423385], [1517259360000, 0.02813583, 0.02813583, 0.02813583, 0.02813583, 4.77836982], [1517259420000, 0.02815899, 0.02815899, 0.02813583, 0.02813583, 5.72120689], [1517259480000, 0.02813583, 0.02813583, 0.02813583, 0.02813583, 0.70407679], [1517259540000, 0.02813583, 0.028159, 0.02813583, 0.02813583, 7.69531612], [1517259600000, 0.02813583, 0.02813583, 0.02813583, 0.02813583, 0.42695691], [1517259660000, 0.02813583, 0.02813583, 0.02813583, 0.02813583, 0.69645357], [1517259720000, 0.02813583, 0.02813583, 0.02813583, 0.02813583, 0.07836982], [1517259780000, 0.02815899, 0.028159, 0.02813583, 0.02813583, 3.6760812], [1517259840000, 0.02813583, 0.02813583, 0.02813583, 0.02813583, 0.17836982], [1517259900000, 0.0281458, 0.0281458, 0.0281458, 0.0281458, 0.07834206], [1517259960000, 0.0281458, 0.0281458, 0.0281, 0.0281, 4.50937417], [1517260020000, 0.02808106, 0.02808106, 0.028051, 0.028051, 0.10002402], [1517260140000, 0.028051, 0.028051, 0.028051, 0.028051, 17.03058178], [1517260200000, 0.028051, 0.028051, 0.0279743, 0.028051, 15.46325162], [1517260260000, 0.028051, 0.028051, 0.028051, 0.028051, 0.20251428], [1517260320000, 0.028051, 0.028051, 0.028051, 0.028051, 7.34306684], [1517260380000, 0.028051, 0.028051, 0.028051, 0.028051, 0.564], [1517260440000, 0.028051, 0.02815899, 0.028051, 0.02815899, 13.69043972], [1517260500000, 0.02815897, 0.02815897, 0.02815897, 0.02815897, 0.35512624], [1517260560000, 0.028051, 0.028051, 0.028051, 0.028051, 0.886], [1517260620000, 0.02815895, 0.02815895, 0.0279977, 0.0279977, 2.89307202], [1517260800000, 0.02800016, 0.02800016, 0.02800016, 0.02800016, 1.19958733], [1517260860000, 0.02815897, 0.02815897, 0.02815897, 0.02815897, 1.0], [1517260980000, 0.0280182, 0.0280182, 0.02800036, 0.02800036, 0.26666666], [1517261040000, 0.02800036, 0.02800036, 0.02800036, 0.02800036, 2.33324754], [1517261100000, 0.02800036, 0.02800036, 0.02800036, 0.02800036, 4.7621371], [1517261160000, 0.02800036, 0.02800036, 0.02800036, 0.02800036, 1.71762306], [1517261220000, 0.02800001, 0.02800036, 0.0279977, 0.02800036, 16.62977567], [1517261280000, 0.0279977, 0.02800036, 0.0279977, 0.0279977, 2.2499827], [1517261340000, 0.0279977, 0.0279977, 0.0279977, 0.0279977, 1.54170342], [1517261400000, 0.0279977, 0.0279977, 0.0279977, 0.0279977, 9.92141969], [1517261460000, 0.027953, 0.0279977, 0.02790056, 0.02790056, 16.87253225], [1517261520000, 0.0279977, 0.0279977, 0.02790057, 0.02790057, 0.52409227], [1517261580000, 0.02790057, 0.02790057, 0.02790057, 0.02790057, 263.03415399], [1517261640000, 0.0279977, 0.0279977, 0.0279977, 0.0279977, 0.72559182], [1517261700000, 0.0279977, 0.0279977, 0.0279977, 0.0279977, 0.50687342], [1517261760000, 0.02791364, 0.0279977, 0.02791364, 0.0279977, 5.42074296], [1517261820000, 0.02790097, 0.02790097, 0.02790097, 0.02790097, 1.08913157], [1517261880000, 0.0279977, 0.0279977, 0.0279977, 0.0279977, 8.88548123], [1517262000000, 0.02790097, 0.0279977, 0.02790097, 0.0279977, 1.05460638], [1517262060000, 0.0279977, 0.0279977, 0.0279977, 0.0279977, 30.76885662], [1517262120000, 0.028, 0.028, 0.028, 0.028, 0.03571428], [1517262180000, 0.028, 0.028, 0.028, 0.028, 0.18395859], [1517262240000, 0.02790093, 0.02790093, 0.02790093, 0.02790093, 0.90659797], [1517262300000, 0.028, 0.028, 0.028, 0.028, 0.03168542], [1517262420000, 0.028, 0.028, 0.028, 0.028, 0.02357694], [1517262480000, 0.028, 0.028, 0.028, 0.028, 0.67506477], [1517262540000, 0.028, 0.028, 0.028, 0.028, 0.53500761], [1517262600000, 0.028, 0.0281467, 0.028, 0.0281467, 41.14337226], [1517262660000, 0.02800001, 0.02800001, 0.028, 0.028, 0.31534956], [1517262780000, 0.028, 0.028, 0.028, 0.028, 0.05352788], [1517262840000, 0.028, 0.028, 0.028, 0.028, 0.03822889], [1517262900000, 0.02800001, 0.02800001, 0.02800001, 0.02800001, 0.03839458], [1517262960000, 0.028, 0.028, 0.028, 0.028, 0.04878153], [1517263020000, 0.028, 0.028, 0.028, 0.028, 4.60986565], [1517263080000, 0.02796641, 0.028, 0.0279309, 0.028, 1.71570946], [1517263200000, 0.0279309, 0.028, 0.0279309, 0.028, 1.88876387], [1517263260000, 0.028, 0.028, 0.028, 0.028, 0.58846235], [1517263320000, 0.028, 0.028, 0.0279309, 0.0279309, 0.41740754], [1517263380000, 0.0279309, 0.0279309, 0.0279307, 0.0279307, 8.67530311], [1517263440000, 0.027901, 0.027901, 0.027901, 0.027901, 0.03462059], [1517263500000, 0.0279307, 0.0279307, 0.02790001, 0.02790001, 6.35802897], [1517263560000, 0.02790001, 0.02790001, 0.0279, 0.0279, 3.0], [1517263620000, 0.02798373, 0.02798373, 0.02787113, 0.0279, 6.78352514], [1517263680000, 0.02787147, 0.02787147, 0.02787147, 0.02787147, 2.95697093], [1517263740000, 0.02798373, 0.02798377, 0.02798373, 0.02798377, 3.45617914], [1517263800000, 0.02798377, 0.02809996, 0.02798373, 0.02798373, 8.89416904], [1517263860000, 0.02798373, 0.02809991, 0.02798373, 0.02809991, 2.04064885], [1517263920000, 0.02798373, 0.028, 0.02798373, 0.02798373, 10.09904926], [1517263980000, 0.02798373, 0.02809997, 0.02798373, 0.02809991, 3.94382211], [1517264040000, 0.02798373, 0.02798373, 0.02798373, 0.02798373, 0.01910459], [1517264280000, 0.02807897, 0.02807897, 0.02807897, 0.02807897, 0.72418123], [1517264340000, 0.02807894, 0.02809997, 0.027984, 0.02809997, 11.11942644], [1517264400000, 0.02796, 0.02809997, 0.02796, 0.02796, 14.63521304], [1517264580000, 0.02809997, 0.02809997, 0.02796, 0.02796, 0.415], [1517264700000, 0.02796, 0.02796, 0.02796, 0.02796, 0.02416218], [1517264820000, 0.02796026, 0.02796026, 0.02796026, 0.02796026, 4.50446975], [1517264880000, 0.02796, 0.02796, 0.02788741, 0.02788741, 10.27264116], [1517265000000, 0.02809994, 0.02809994, 0.02809994, 0.02809994, 0.35587315], [1517265060000, 0.02809994, 0.02809994, 0.02809994, 0.02809994, 0.13954274], [1517265120000, 0.02798687, 0.02798687, 0.02787858, 0.02787858, 7.0], [1517265240000, 0.02809993, 0.02809993, 0.02809993, 0.02809993, 0.23763234], [1517265300000, 0.02809991, 0.02809994, 0.02809991, 0.02809994, 1.77936575], [1517265360000, 0.0279, 0.0279, 0.0279, 0.0279, 10.0], [1517265420000, 0.0279279, 0.0279279, 0.02788217, 0.0279, 0.353], [1517265480000, 0.02788525, 0.02788525, 0.02788525, 0.02788525, 0.14681053], [1517265600000, 0.02808701, 0.02808701, 0.02788637, 0.02808701, 3.9164026], [1517265660000, 0.02808701, 0.0281, 0.02788673, 0.0281, 7.2283836], [1517265720000, 0.0281, 0.02814958, 0.0281, 0.02814948, 4.74730604], [1517265780000, 0.02788759, 0.02788759, 0.02788758, 0.02788758, 0.52773435], [1517265840000, 0.02815882, 0.02815882, 0.02788831, 0.02788832, 4.82871149], [1517265900000, 0.02788759, 0.02815839, 0.02788757, 0.02815792, 38.39068379], [1517265960000, 0.02815789, 0.02815789, 0.02788843, 0.028, 34.00568025], [1517266200000, 0.02808187, 0.028082, 0.02789026, 0.02808191, 12.56841883], [1517266260000, 0.02808191, 0.02808191, 0.02789, 0.02789, 1.21561996], [1517266320000, 0.02789, 0.02808188, 0.02789, 0.02808188, 1.5346792], [1517266380000, 0.0278876, 0.02788761, 0.02786883, 0.0278876, 56.0], [1517266440000, 0.02796742, 0.02796742, 0.02796742, 0.02796742, 0.06061852], [1517266500000, 0.02796742, 0.02796742, 0.02796742, 0.02796742, 4.50100846], [1517266560000, 0.02792, 0.02792, 0.02792, 0.02792, 0.99371564], [1517266620000, 0.02792, 0.02792, 0.02792, 0.02792, 0.95940397], [1517266680000, 0.02792, 0.02796742, 0.02792, 0.02796742, 0.16285985], [1517266740000, 0.02796742, 0.02796742, 0.02796742, 0.02796742, 2.85334501], [1517266800000, 0.02796741, 0.02796741, 0.02796741, 0.02796741, 0.7151183], [1517266860000, 0.02796741, 0.02796742, 0.02792752, 0.02796742, 8.65891422], [1517266920000, 0.02796742, 0.02796742, 0.02796742, 0.02796742, 6.04970418], [1517266980000, 0.02796, 0.02796, 0.02796, 0.02796, 0.33820918], [1517267040000, 0.02796742, 0.02796742, 0.0279, 0.0279, 0.0929194], [1517267100000, 0.0279674, 0.0279674, 0.0279674, 0.0279674, 3.60683985], [1517267220000, 0.02796738, 0.02796738, 0.02796738, 0.02796738, 0.01923076], [1517267280000, 0.0279, 0.0279, 0.02785001, 0.02785001, 17.99820467], [1517267400000, 0.02795, 0.02795, 0.02795, 0.02795, 10.10468546], [1517267460000, 0.02785091, 0.02795, 0.0278509, 0.02795, 18.03820467], [1517267520000, 0.02795, 0.02795, 0.02795, 0.02795, 0.3], [1517267580000, 0.02795, 0.02795, 0.02795, 0.02795, 6.64633001], [1517267640000, 0.02790045, 0.02790045, 0.02790045, 0.02790045, 0.42555873], [1517267700000, 0.02790045, 0.02790045, 0.02790045, 0.02790045, 8.35444714], [1517267760000, 0.02790045, 0.02790045, 0.02790045, 0.02790045, 2.0], [1517267880000, 0.02790045, 0.02790085, 0.02790045, 0.02790085, 9.63517942], [1517267940000, 0.02790045, 0.02790085, 0.02790045, 0.02790085, 11.01027675], [1517268000000, 0.02790085, 0.02790085, 0.02785, 0.02790085, 32.03410679], [1517268060000, 0.02790085, 0.02790085, 0.02785, 0.02790085, 23.87370105], [1517268120000, 0.02790085, 0.02790085, 0.02786573, 0.02790085, 10.97397389], [1517268180000, 0.02790085, 0.02790085, 0.02790084, 0.02790085, 2.405381], [1517268240000, 0.02790085, 0.02795107, 0.02790085, 0.02795107, 5.06671489], [1517268300000, 0.02795107, 0.02796742, 0.02795107, 0.02796046, 0.79418602], [1517268360000, 0.02796046, 0.02796046, 0.02796046, 0.02796046, 0.07889118], [1517268420000, 0.02795, 0.02808163, 0.02795, 0.02795207, 5.31037581], [1517268480000, 0.02795207, 0.02795207, 0.02795207, 0.02795207, 14.34598583], [1517268600000, 0.02795207, 0.02807896, 0.02795207, 0.02795208, 3.86343055], [1517268660000, 0.02795208, 0.02795208, 0.02795208, 0.02795208, 12.96434142], [1517268720000, 0.02807816, 0.02807816, 0.02807796, 0.02807796, 0.46034774], [1517268780000, 0.02795208, 0.02795208, 0.02795208, 0.02795208, 0.9975], [1517268960000, 0.0280499, 0.02805979, 0.0279524, 0.0279524, 6.8568399], [1517269080000, 0.0279524, 0.0280597, 0.02795208, 0.02795208, 6.14771001], [1517269140000, 0.02795208, 0.02795208, 0.02795208, 0.02795208, 1.5894425], [1517269200000, 0.02795208, 0.02805957, 0.02795, 0.02795, 18.04209619], [1517269320000, 0.02794972, 0.02795, 0.02794972, 0.02795, 2.4243265], [1517269380000, 0.02795, 0.02795, 0.02786614, 0.02786614, 42.97], [1517269440000, 0.02795, 0.02805853, 0.02783236, 0.02783236, 42.40450811], [1517269500000, 0.02805793, 0.02805793, 0.02805793, 0.02805793, 0.35640459], [1517269560000, 0.02805745, 0.02805745, 0.02805745, 0.02805745, 0.04242304], [1517269620000, 0.0280574, 0.0280574, 0.02793346, 0.02805726, 3.08302596], [1517269680000, 0.02805725, 0.02805725, 0.02805725, 0.02805725, 12.0], [1517269800000, 0.02805884, 0.02805884, 0.02805884, 0.02805884, 1.62552794], [1517269860000, 0.02805884, 0.02805884, 0.02805884, 0.02805884, 0.03585514], [1517269920000, 0.02805884, 0.02805884, 0.02805725, 0.02805725, 3.34885275], [1517269980000, 0.02805725, 0.02805725, 0.02805725, 0.02805725, 0.00343096], [1517270040000, 0.0280281, 0.0280281, 0.0280281, 0.0280281, 0.04440596], [1517270100000, 0.02803323, 0.02803323, 0.02793385, 0.02793385, 1.14325718], [1517270160000, 0.028, 0.02808163, 0.02783249, 0.02783249, 138.08002745], [1517270220000, 0.02783249, 0.02783249, 0.0278135, 0.02783236, 145.94862898], [1517270280000, 0.02783236, 0.02808112, 0.02783236, 0.02808112, 5.36322297], [1517270340000, 0.02808099, 0.02808112, 0.027823, 0.02808112, 16.98382751], [1517270400000, 0.02808112, 0.02808163, 0.02808112, 0.02808163, 9.30063822], [1517270460000, 0.02808112, 0.02808112, 0.02808112, 0.02808112, 6.41497633], [1517270520000, 0.02808162, 0.02808163, 0.02782375, 0.02799738, 45.17048282], [1517270580000, 0.02799738, 0.02799738, 0.02799738, 0.02799738, 0.14713346], [1517270640000, 0.02789853, 0.02789853, 0.02789853, 0.02789853, 1.15449184], [1517270760000, 0.02782647, 0.02799738, 0.02782647, 0.02799738, 0.34556067], [1517270820000, 0.02799738, 0.028082, 0.02799738, 0.028082, 14.87916723], [1517270880000, 0.02808162, 0.0281, 0.02782923, 0.02782932, 171.09277758], [1517271000000, 0.0281, 0.0281, 0.0281, 0.0281, 0.59034946], [1517271060000, 0.0281, 0.0281, 0.02787987, 0.02787987, 3.16733601], [1517271120000, 0.02809565, 0.02809565, 0.02809565, 0.02809565, 0.025], [1517271180000, 0.0281, 0.02812353, 0.0281, 0.02812353, 0.77660541], [1517271240000, 0.02812312, 0.02812312, 0.0278421, 0.0278421, 27.53541001], [1517271300000, 0.02803805, 0.02811418, 0.02783073, 0.02811418, 22.56237537], [1517271420000, 0.02789853, 0.0278987, 0.02783106, 0.0278987, 12.65789338], [1517271480000, 0.0278987, 0.0278987, 0.0278987, 0.0278987, 0.15376253], [1517271540000, 0.0278987, 0.02811176, 0.0278987, 0.02811176, 0.86476037], [1517271660000, 0.02798223, 0.02798223, 0.02783243, 0.02783243, 27.56548595], [1517271720000, 0.02791308, 0.02791308, 0.02783245, 0.02783245, 21.93], [1517271840000, 0.02791311, 0.02791311, 0.02791311, 0.02791311, 8.35544126], [1517271900000, 0.02808079, 0.02808079, 0.02808079, 0.02808079, 0.35611394], [1517271960000, 0.02791311, 0.02791314, 0.02791311, 0.02791314, 23.49963141], [1517272020000, 0.0279133, 0.02793, 0.0279133, 0.02793, 11.49210216], [1517272080000, 0.0279133, 0.028, 0.0279133, 0.028, 0.78849421], [1517272260000, 0.02799929, 0.02808199, 0.02791339, 0.02791339, 21.89560808], [1517272320000, 0.028, 0.02808199, 0.028, 0.02808199, 8.3], [1517272380000, 0.02808198, 0.02808199, 0.02808198, 0.02808199, 3.95175161], [1517272440000, 0.02808199, 0.02808199, 0.02808199, 0.02808199, 6.90911105], [1517272500000, 0.02808199, 0.028082, 0.02808199, 0.028082, 9.22795902], [1517272620000, 0.02808199, 0.028082, 0.02799728, 0.02799728, 3.14943903], [1517272740000, 0.028082, 0.028082, 0.02799728, 0.02799728, 1.95270517], [1517272800000, 0.028082, 0.028082, 0.02799728, 0.02799775, 7.28134917], [1517272860000, 0.02795281, 0.02805332, 0.02791338, 0.02791341, 32.37973967], [1517272920000, 0.02791346, 0.02791346, 0.02791338, 0.02791338, 2.78503516], [1517272980000, 0.02791338, 0.02791338, 0.02791338, 0.02791338, 1.80252686], [1517273040000, 0.02808153, 0.028082, 0.02808153, 0.028082, 2.83865955], [1517273100000, 0.02791339, 0.02808124, 0.02791338, 0.02808124, 0.67820259], [1517273160000, 0.02808114, 0.02808138, 0.02808114, 0.02808129, 0.17915234], [1517273220000, 0.02808124, 0.02808124, 0.02807996, 0.02807996, 0.08630281], [1517273280000, 0.02791342, 0.02807895, 0.02791341, 0.02791342, 3.27492928], [1517273340000, 0.02807891, 0.028082, 0.02791344, 0.028082, 118.60239477], [1517273400000, 0.028082, 0.02810383, 0.028082, 0.0281038, 1.78049995], [1517273460000, 0.02810383, 0.02811298, 0.02810383, 0.02811298, 1.7791188], [1517273580000, 0.02810383, 0.02810383, 0.02810383, 0.02810383, 0.08450948], [1517273700000, 0.02809995, 0.02811989, 0.02791347, 0.02811298, 6.39611082], [1517273760000, 0.02811989, 0.02813703, 0.02811298, 0.02811298, 1.44372004], [1517273820000, 0.02811298, 0.02811298, 0.02811298, 0.02811298, 4.7e-07], [1517274000000, 0.02811243, 0.02811243, 0.02811243, 0.02811243, 0.80095496], [1517274060000, 0.0281124, 0.02811246, 0.0281124, 0.02811246, 1.42285838], [1517274120000, 0.02791367, 0.02791367, 0.02791366, 0.02791366, 7.5], [1517274180000, 0.02791366, 0.02791366, 0.02791366, 0.02791366, 1.19820039], [1517274240000, 0.02791372, 0.02791372, 0.02791372, 0.02791372, 1.4], [1517274300000, 0.02810233, 0.02810233, 0.02810232, 0.02810232, 0.71168552], [1517274480000, 0.02810232, 0.02810232, 0.02810232, 0.02810232, 0.02263906], [1517274600000, 0.02810232, 0.02811243, 0.02810232, 0.02811243, 2.49089932], [1517274660000, 0.02810241, 0.02810241, 0.02810241, 0.02810241, 0.54362599], [1517274720000, 0.0279664, 0.0279664, 0.02791547, 0.02791572, 1.32420279], [1517274840000, 0.0281124, 0.02811246, 0.02791591, 0.0281124, 21.32740023], [1517274900000, 0.02811245, 0.02811246, 0.02811245, 0.02811245, 1.77856825], [1517274960000, 0.02811245, 0.02811245, 0.02811199, 0.028112, 2.724263], [1517275020000, 0.02791654, 0.02791657, 0.02791653, 0.02791657, 10.65], [1517275080000, 0.0279166, 0.02791663, 0.0279166, 0.02791663, 2.23544622], [1517275140000, 0.0281119, 0.02811245, 0.0281119, 0.02811245, 4.87773396], [1517275200000, 0.02811245, 0.02811246, 0.0281119, 0.02811245, 14.67510468], [1517275260000, 0.02811245, 0.02811245, 0.02791702, 0.02811243, 9.1839756], [1517275320000, 0.02811243, 0.02811243, 0.02811242, 0.02811242, 7.94093117], [1517275380000, 0.02791743, 0.0281124, 0.02791741, 0.0281124, 28.0], [1517275500000, 0.02811235, 0.02811235, 0.02811235, 0.02811235, 1.06714473], [1517275560000, 0.02811235, 0.02811235, 0.02791669, 0.02811233, 2.61649078], [1517275620000, 0.0281123, 0.0281123, 0.0281123, 0.0281123, 0.499999], [1517275680000, 0.02811233, 0.02811234, 0.02811233, 0.02811234, 2.27272047], [1517275740000, 0.02811234, 0.02811234, 0.02811234, 0.02811234, 0.23872317], [1517275800000, 0.02811234, 0.02815899, 0.02811233, 0.02815899, 1.7785809], [1517275860000, 0.02815899, 0.028159, 0.02815892, 0.02815892, 4.07045493], [1517275920000, 0.0281123, 0.028159, 0.0279212, 0.028159, 5.60530005], [1517275980000, 0.028159, 0.028159, 0.028159, 0.028159, 2.0], [1517276040000, 0.02792231, 0.028159, 0.0279223, 0.02792248, 31.20062812], [1517276100000, 0.02792267, 0.02815894, 0.02792267, 0.02815892, 2.69593529], [1517276160000, 0.02792317, 0.02815885, 0.02792317, 0.02815885, 3.28539261], [1517276220000, 0.02815882, 0.02815883, 0.02815882, 0.02815883, 1.41696228], [1517276340000, 0.02792403, 0.02815889, 0.02792403, 0.02815889, 0.15062632], [1517276400000, 0.02815893, 0.028159, 0.02815893, 0.028159, 2.48588746], [1517276460000, 0.028159, 0.028159, 0.02792503, 0.02792503, 14.50490128], [1517276520000, 0.02815899, 0.02815899, 0.02815898, 0.02815898, 0.4095617], [1517276580000, 0.02815898, 0.02815898, 0.02793604, 0.028, 0.67426279], [1517276640000, 0.02815898, 0.02815898, 0.02815898, 0.02815898, 0.17316504], [1517276700000, 0.02815898, 0.028159, 0.02794357, 0.02815898, 2.48874893], [1517276880000, 0.02815894, 0.02815895, 0.02815894, 0.02815895, 0.34210051], [1517276940000, 0.02815895, 0.02815898, 0.02815895, 0.02815898, 0.24485799], [1517277000000, 0.02815898, 0.02815898, 0.028, 0.028, 0.83168564], [1517277060000, 0.02800001, 0.02800001, 0.028, 0.02800001, 0.87521621], [1517277120000, 0.028, 0.028, 0.028, 0.028, 0.10683854], [1517277180000, 0.02794334, 0.0281128, 0.02794334, 0.0281128, 0.24593065], [1517277240000, 0.0281128, 0.0281128, 0.0281128, 0.0281128, 0.03945516], [1517277300000, 0.02794334, 0.02815337, 0.02794334, 0.02815337, 1.46295166], [1517277360000, 0.02815895, 0.02815895, 0.02815895, 0.02815895, 0.11075339], [1517277420000, 0.02815894, 0.02815894, 0.02815894, 0.02815894, 0.17224346], [1517277480000, 0.02794557, 0.02794574, 0.02794557, 0.02794574, 0.32726257], [1517277540000, 0.02794503, 0.02815892, 0.02794503, 0.02815892, 4.51032015], [1517277600000, 0.02815892, 0.02815892, 0.02815892, 0.02815892, 0.74931898], [1517277660000, 0.02808852, 0.02808852, 0.02808852, 0.02808852, 0.09422492], [1517277720000, 0.02808852, 0.02808852, 0.02794341, 0.02794341, 0.65937132], [1517277780000, 0.02794344, 0.02805114, 0.02792452, 0.02792453, 4.83458797], [1517277840000, 0.02808851, 0.0281474, 0.02808851, 0.0281474, 0.39924405], [1517277900000, 0.02814712, 0.028159, 0.02814712, 0.028159, 8.00036819], [1517277960000, 0.02792469, 0.02792476, 0.02792469, 0.02792476, 0.22], [1517278020000, 0.02815856, 0.02815856, 0.02815856, 0.02815856, 0.02624032], [1517278080000, 0.02792511, 0.02792511, 0.02792511, 0.02792511, 6.30221199], [1517278140000, 0.02792513, 0.02792513, 0.02792513, 0.02792513, 15.87711087], [1517278200000, 0.02792513, 0.02804503, 0.02792513, 0.02804503, 0.81317219], [1517278320000, 0.02804502, 0.02804502, 0.02804502, 0.02804502, 0.02087291], [1517278440000, 0.02804502, 0.02804502, 0.02804502, 0.02804502, 0.01412709], [1517278500000, 0.02804501, 0.02813673, 0.02804501, 0.02813673, 1.42627916], [1517278560000, 0.02792482, 0.02813653, 0.02792482, 0.02813653, 0.4406788], [1517278740000, 0.02813538, 0.02813538, 0.02813538, 0.02813538, 0.24401901], [1517278800000, 0.02792477, 0.02813379, 0.02792477, 0.02813368, 0.91293369], [1517278860000, 0.02813305, 0.02813305, 0.02813305, 0.02813305, 0.39], [1517278980000, 0.02792476, 0.02813058, 0.02792476, 0.02813058, 3.76604442], [1517279040000, 0.02813002, 0.02813002, 0.02813002, 0.02813002, 0.64642908], [1517279100000, 0.02812977, 0.02812977, 0.02812974, 0.02812974, 0.49582445], [1517279220000, 0.02812911, 0.02812911, 0.0279245, 0.0279245, 2.84458594], [1517279340000, 0.02802709, 0.02802709, 0.02802709, 0.02802709, 0.5211744], [1517279400000, 0.02802709, 0.02802709, 0.02802709, 0.02802709, 0.13284115], [1517279460000, 0.0279245, 0.0279245, 0.0279245, 0.0279245, 0.19315885], [1517279520000, 0.0279245, 0.0279245, 0.0279245, 0.0279245, 5.50644054], [1517279640000, 0.0279245, 0.0279245, 0.0279245, 0.0279245, 2.70470401], [1517279700000, 0.02797269, 0.02797269, 0.0279245, 0.0279245, 0.31452574], [1517279760000, 0.0279245, 0.02813068, 0.0279245, 0.0279245, 0.95723781], [1517279820000, 0.0279245, 0.0279245, 0.0279245, 0.0279245, 0.50423108], [1517279880000, 0.02813118, 0.02813118, 0.02792451, 0.02792451, 1.42873384], [1517279940000, 0.02792458, 0.02792458, 0.0279245, 0.02792452, 0.28654142], [1517280060000, 0.0279245, 0.02792459, 0.0279245, 0.0279245, 1.93276666], [1517280120000, 0.0279245, 0.0279245, 0.0279245, 0.0279245, 6.08871041], [1517280240000, 0.0279245, 0.0279245, 0.0279245, 0.0279245, 0.4], [1517280300000, 0.02813127, 0.02813138, 0.02813127, 0.02813138, 0.47780928], [1517280360000, 0.02792452, 0.028159, 0.02792452, 0.028159, 74.37722226], [1517280480000, 0.028159, 0.028159, 0.028, 0.028, 1.61827012], [1517280540000, 0.02808, 0.02808, 0.02808, 0.02808, 0.11812578], [1517280600000, 0.02808, 0.02808, 0.02800025, 0.02808, 3.44044552], [1517280660000, 0.02808, 0.02808, 0.02800025, 0.02808, 1.66403789], [1517280720000, 0.02808, 0.02808, 0.02808, 0.02808, 0.04500612], [1517280780000, 0.02807, 0.02807, 0.02807, 0.02807, 0.03937473], [1517280840000, 0.02807, 0.02807, 0.02807, 0.02807, 0.07874946], [1517280900000, 0.02807, 0.02807, 0.02800025, 0.02807, 1.43163168], [1517280960000, 0.02807, 0.02807, 0.02807, 0.02807, 31.47352578], [1517281020000, 0.02807, 0.02807, 0.02800025, 0.02800025, 3.81213303], [1517281080000, 0.02800025, 0.02800025, 0.02800025, 0.02800025, 0.07896342], [1517281140000, 0.0279245, 0.0279245, 0.02792357, 0.0279245, 62.51190196], [1517281200000, 0.0279245, 0.02807, 0.02792358, 0.02807, 70.62499246], [1517281260000, 0.02807, 0.02807, 0.02803517, 0.02807, 25.32576826], [1517281320000, 0.02807, 0.02807, 0.02803517, 0.02807, 0.11426537], [1517281380000, 0.02806999, 0.02808, 0.02791384, 0.02808, 4.31250263], [1517281500000, 0.0279229, 0.02808, 0.02791376, 0.02791376, 0.95518103], [1517281560000, 0.02791376, 0.02808, 0.02791376, 0.02808, 0.1303615], [1517281680000, 0.02792486, 0.02792486, 0.02791013, 0.02791013, 8.34755273], [1517281740000, 0.02791013, 0.02791015, 0.02791013, 0.02791015, 11.76261519], [1517281800000, 0.02807999, 0.02807999, 0.02791013, 0.02791013, 181.08392073], [1517281860000, 0.02796767, 0.02796767, 0.02792002, 0.02792002, 0.37268179], [1517281920000, 0.02792001, 0.02792001, 0.02792001, 0.02792001, 0.5], [1517281980000, 0.02792001, 0.02807999, 0.02792001, 0.02807999, 0.53948813], [1517282040000, 0.02792001, 0.02807999, 0.02792001, 0.02807999, 9.13813769], [1517282100000, 0.02807999, 0.02808, 0.02807999, 0.02808, 4.12300584], [1517282220000, 0.02807999, 0.02807999, 0.02807999, 0.02807999, 0.02709756], [1517282280000, 0.02807999, 0.02807999, 0.02792, 0.02792, 15.41846362], [1517282400000, 0.02805, 0.02805, 0.02792, 0.02792, 22.86252086], [1517282520000, 0.02803899, 0.028039, 0.02792, 0.02792, 8.89444865], [1517282580000, 0.02802999, 0.02802999, 0.02802999, 0.02802999, 0.25], [1517282640000, 0.02802999, 0.02802999, 0.02802499, 0.02802499, 5.39939465], [1517282700000, 0.02791013, 0.028025, 0.02791013, 0.028025, 2.31364852], [1517282760000, 0.028025, 0.028025, 0.028025, 0.028025, 0.24851676], [1517282820000, 0.028, 0.028, 0.028, 0.028, 5.02326379], [1517282880000, 0.028, 0.028, 0.028, 0.028, 4.97673621], [1517282940000, 0.028, 0.028, 0.028, 0.028, 0.20326279], [1517283000000, 0.028, 0.028025, 0.02791013, 0.028, 12.49497475], [1517283060000, 0.028025, 0.028025, 0.028025, 0.028025, 0.03841361], [1517283120000, 0.028, 0.028, 0.028, 0.028, 48.12463186], [1517283180000, 0.02802499, 0.02810337, 0.028, 0.02810337, 24.92783801], [1517283240000, 0.02809798, 0.0281258, 0.028095, 0.028122, 20.90359127], [1517283300000, 0.028116, 0.028116, 0.02811299, 0.02811299, 3.20570732], [1517283480000, 0.02810097, 0.02810097, 0.02793982, 0.02793982, 0.14149654], [1517283540000, 0.02810052, 0.02810052, 0.02810052, 0.02810052, 0.06463564], [1517283600000, 0.02809973, 0.02809973, 0.02791013, 0.02791013, 13.1341454], [1517283660000, 0.02809944, 0.02809944, 0.02809943, 0.02809944, 2.83756888], [1517283720000, 0.02791013, 0.02791013, 0.02791013, 0.02791013, 1.14218888], [1517283780000, 0.02800222, 0.02800222, 0.02800222, 0.02800222, 0.04804829], [1517283840000, 0.02790629, 0.02790629, 0.02790629, 0.02790629, 0.12510879], [1517283900000, 0.02790629, 0.02790629, 0.02790629, 0.02790629, 0.79571692], [1517283960000, 0.02790629, 0.02790629, 0.02790629, 0.02790629, 0.81363428], [1517284020000, 0.02790629, 0.02790629, 0.02790001, 0.02790629, 2.1917442], [1517284080000, 0.02790629, 0.02790629, 0.02785001, 0.02790629, 6.14803262], [1517284140000, 0.02785001, 0.02790629, 0.02785, 0.02785, 10.94615268], [1517284200000, 0.02785001, 0.02785001, 0.02785001, 0.02785001, 0.79730756], [1517284260000, 0.02785001, 0.02785001, 0.02784829, 0.02785001, 2.54919682], [1517284320000, 0.02785001, 0.02785001, 0.02785, 0.02785, 1.53926552], [1517284380000, 0.02785, 0.02785, 0.02783073, 0.02783073, 20.99207952], [1517284440000, 0.02783073, 0.02783073, 0.02783073, 0.02783073, 1.02637204], [1517284500000, 0.02783073, 0.02790629, 0.02783073, 0.027831, 2.45930138], [1517284560000, 0.02790629, 0.02790629, 0.027831, 0.027831, 18.28766665], [1517284620000, 0.02784464, 0.02784464, 0.02784464, 0.02784464, 0.29565319], [1517284680000, 0.02784466, 0.02784466, 0.0278135, 0.0278135, 25.99627316], [1517284740000, 0.0278135, 0.02784466, 0.0278135, 0.0278135, 51.7445866], [1517284800000, 0.02784466, 0.02790584, 0.0278135, 0.02790556, 9.70150318], [1517284860000, 0.027814, 0.02790536, 0.027814, 0.027814, 19.37195803], [1517284920000, 0.02790536, 0.02790536, 0.02790536, 0.02790536, 0.04289846], [1517284980000, 0.02790535, 0.02790535, 0.02790535, 0.02790535, 0.14700085], [1517285040000, 0.027814, 0.02790536, 0.027814, 0.027814, 16.25438999], [1517285100000, 0.0279053, 0.02790534, 0.0278135, 0.0278135, 5.77036588], [1517285160000, 0.0278135, 0.02790526, 0.0278135, 0.0278135, 15.26643044], [1517285220000, 0.02790528, 0.02790528, 0.0278135, 0.0278135, 15.42083303], [1517285280000, 0.02790516, 0.02790516, 0.0278135, 0.0278135, 15.11624163], [1517285340000, 0.0278135, 0.0279046, 0.0278135, 0.0278135, 12.16047255], [1517285400000, 0.02790515, 0.02790515, 0.02781079, 0.02781079, 1.7436699], [1517285460000, 0.02781079, 0.02781079, 0.027795, 0.027795, 13.39059345], [1517285520000, 0.0279046, 0.0279046, 0.02781565, 0.02781566, 7.54778316], [1517285580000, 0.027795, 0.02781566, 0.02778979, 0.02778979, 3.87863386], [1517285640000, 0.02778979, 0.02781567, 0.0277889, 0.0277889, 1.5643888], [1517285700000, 0.0277898, 0.02788168, 0.0277898, 0.02788168, 7.53687948], [1517285760000, 0.0277889, 0.02789645, 0.02777446, 0.02777447, 3.17994027], [1517285820000, 0.02777447, 0.0278964, 0.02777446, 0.02777446, 2.00328847], [1517285880000, 0.02777446, 0.0278, 0.027724, 0.0278, 20.20494356], [1517285940000, 0.0278, 0.02790459, 0.0278, 0.02790459, 0.54427542], [1517286000000, 0.02772403, 0.0279046, 0.02772401, 0.02772412, 3.57951195], [1517286060000, 0.02790451, 0.0279046, 0.027904, 0.0279045, 1.51573223], [1517286120000, 0.027904, 0.027904, 0.02772447, 0.02772447, 3.8276659], [1517286180000, 0.02790399, 0.02790399, 0.02772402, 0.02772402, 0.17294237], [1517286240000, 0.02790398, 0.02790398, 0.02790398, 0.02790398, 0.10851211], [1517286300000, 0.02772418, 0.02772419, 0.027724, 0.027724, 9.45613716], [1517286360000, 0.02790392, 0.02790392, 0.02790392, 0.02790392, 0.02207825], [1517286420000, 0.02790399, 0.02790399, 0.02790399, 0.02790399, 0.07948987], [1517286660000, 0.02790299, 0.027903, 0.02790299, 0.027903, 0.7], [1517286780000, 0.02790299, 0.02790299, 0.02790299, 0.02790299, 8.0], [1517286900000, 0.02790299, 0.02790299, 0.02790299, 0.02790299, 0.05964466], [1517286960000, 0.0278, 0.02790299, 0.0278, 0.0278, 4.46467717], [1517287020000, 0.02776667, 0.0278, 0.02775, 0.0278, 7.89256882], [1517287080000, 0.0278, 0.0278, 0.02777003, 0.02777003, 1.40196757], [1517287140000, 0.02777003, 0.0278, 0.02777003, 0.0278, 0.30744783], [1517287200000, 0.0278, 0.0278918, 0.0278, 0.0278918, 157.48387769], [1517287260000, 0.02777007, 0.02777007, 0.02777007, 0.02777007, 0.09488906], [1517287380000, 0.0278918, 0.0278918, 0.0278918, 0.0278918, 0.04550659], [1517287440000, 0.0278918, 0.0278918, 0.02777008, 0.02777008, 0.23286135], [1517287500000, 0.0278918, 0.0279046, 0.0278918, 0.0279046, 2.81020095], [1517287560000, 0.02790459, 0.0279046, 0.02790459, 0.0279046, 0.19280284], [1517287620000, 0.0279046, 0.0279046, 0.0279046, 0.0279046, 0.25175], [1517287680000, 0.02790459, 0.0279046, 0.02790459, 0.0279046, 0.15454707]]
\ No newline at end of file
diff --git a/tests/testdata/ZEC_BTC-1m.json b/tests/testdata/ZEC_BTC-1m.json
deleted file mode 100644
index 500be88d5..000000000
--- a/tests/testdata/ZEC_BTC-1m.json
+++ /dev/null
@@ -1 +0,0 @@
-[[1516423920000, 0.04381001, 0.044196, 0.04375889, 0.04375889, 11.54003373], [1516423980000, 0.044157, 0.044157, 0.04375472, 0.04375472, 3.14119615], [1516424040000, 0.04375888, 0.044, 0.0437, 0.044, 5.72153135], [1516424100000, 0.044, 0.04420975, 0.0437, 0.04420975, 33.96184175], [1516424160000, 0.04417198, 0.04430682, 0.04370066, 0.04391916, 15.00875857], [1516424220000, 0.04412499, 0.04412499, 0.0436578, 0.0436578, 25.5199568], [1516424280000, 0.04358666, 0.04358695, 0.0435, 0.04350022, 67.52440059], [1516424340000, 0.04350023, 0.04383521, 0.0435, 0.0436308, 16.34622145], [1516424400000, 0.04356554, 0.04385241, 0.0435, 0.04363082, 3.00986465], [1516424460000, 0.04384296, 0.04384296, 0.0435, 0.0435, 1.34213196], [1516424520000, 0.04373688, 0.04383113, 0.0435, 0.0435, 19.53127172], [1516424580000, 0.04381, 0.04381, 0.0435, 0.0435, 26.92119768], [1516424640000, 0.04365147, 0.04365147, 0.0433, 0.043344, 32.01350257], [1516424700000, 0.04346265, 0.04346265, 0.0433, 0.04332, 39.65327186], [1516424760000, 0.043344, 0.04360067, 0.043344, 0.04343971, 4.26612425], [1516424820000, 0.04343971, 0.04343971, 0.04331999, 0.0434397, 19.10154523], [1516424880000, 0.0434397, 0.04343971, 0.0433, 0.0433, 3.46263962], [1516424940000, 0.04330001, 0.04343, 0.0433, 0.0433, 6.36063962], [1516425000000, 0.0433, 0.04342996, 0.0432, 0.0432, 28.0225439], [1516425060000, 0.0432, 0.04322, 0.0432, 0.0432, 20.19976754], [1516425120000, 0.0432, 0.04322, 0.0432, 0.04322, 1.21186989], [1516425180000, 0.0432, 0.0432, 0.0431895, 0.0432, 1.13941792], [1516425240000, 0.0432, 0.0432, 0.04315001, 0.04315001, 1.51240888], [1516425300000, 0.0432, 0.04342973, 0.04301001, 0.04338011, 8.88571947], [1516425360000, 0.04305001, 0.04336035, 0.04301001, 0.04301801, 2.85647104], [1516425420000, 0.04336034, 0.04336036, 0.04301801, 0.04301802, 2.22661171], [1516425480000, 0.04336035, 0.04336035, 0.04336035, 0.04336035, 0.04607384], [1516425540000, 0.04326035, 0.04334043, 0.04315165, 0.0433, 0.69197092], [1516425600000, 0.0433, 0.04334043, 0.0433, 0.04334043, 0.45663473], [1516425660000, 0.0433, 0.04334034, 0.043, 0.04334005, 56.63796949], [1516425720000, 0.04334, 0.04334, 0.04329984, 0.04329984, 11.85503323], [1516425780000, 0.043188, 0.0432998, 0.04316863, 0.04316863, 0.79469122], [1516425840000, 0.04316863, 0.04316863, 0.04316862, 0.04316863, 1.82146249], [1516425900000, 0.04317864, 0.0432997, 0.04317863, 0.04317863, 1.17226607], [1516425960000, 0.04317863, 0.04317863, 0.04317863, 0.04317863, 23.26090685], [1516426020000, 0.04317863, 0.04317863, 0.04316863, 0.04316863, 1.98145989], [1516426080000, 0.04316863, 0.04317863, 0.04292123, 0.042942, 34.52850821], [1516426140000, 0.04294101, 0.04317863, 0.04294101, 0.04317863, 80.51935955], [1516426200000, 0.04317853, 0.04317863, 0.042962, 0.042962, 0.31438691], [1516426260000, 0.04317863, 0.04326825, 0.04316199, 0.04326825, 17.38009198], [1516426320000, 0.04329983, 0.04334005, 0.04329983, 0.04334005, 0.0281669], [1516426380000, 0.04325153, 0.04336036, 0.04325152, 0.04325153, 3.60522949], [1516426440000, 0.04336036, 0.04336036, 0.04325153, 0.04325153, 4.11967811], [1516426500000, 0.04336036, 0.04336036, 0.04325153, 0.04325153, 0.71187026], [1516426560000, 0.04336019, 0.04336019, 0.04294101, 0.04314356, 29.37372689], [1516426620000, 0.042965, 0.04329994, 0.04292124, 0.04327777, 4.27919509], [1516426680000, 0.04292127, 0.04292345, 0.04290001, 0.04292125, 9.38821818], [1516426740000, 0.04290001, 0.0432329, 0.04290001, 0.0432329, 5.21039447], [1516426800000, 0.04323289, 0.04323289, 0.04323288, 0.04323288, 0.26600112], [1516426920000, 0.04292135, 0.04323261, 0.04290004, 0.04323261, 11.25047171], [1516426980000, 0.04323262, 0.04323279, 0.04323261, 0.04323279, 8.20820855], [1516427040000, 0.04323287, 0.04323288, 0.04323287, 0.04323288, 0.10181699], [1516427100000, 0.04291573, 0.04323278, 0.04291573, 0.04323252, 8.93454153], [1516427160000, 0.043, 0.043, 0.043, 0.043, 4.04768232], [1516427220000, 0.04321791, 0.04323287, 0.043, 0.043, 9.43297788], [1516427280000, 0.043, 0.043, 0.043, 0.043, 3.15654495], [1516427340000, 0.04291573, 0.043, 0.04285625, 0.04285625, 27.92347331], [1516427400000, 0.04290003, 0.04290003, 0.04284364, 0.0429, 8.42008799], [1516427460000, 0.0429, 0.04290003, 0.0429, 0.04290003, 1.0824005], [1516427520000, 0.04284366, 0.04290003, 0.04284364, 0.04290003, 1.21531753], [1516427580000, 0.04290003, 0.04290003, 0.04284366, 0.04284366, 0.34649289], [1516427700000, 0.04289999, 0.0429, 0.04289999, 0.04289999, 2.09859945], [1516427760000, 0.04284366, 0.04289998, 0.04284366, 0.04289998, 1.03136134], [1516427820000, 0.04289998, 0.04289999, 0.04284366, 0.04289999, 5.8482882], [1516427880000, 0.0429, 0.0429, 0.04284364, 0.04284364, 15.19318126], [1516427940000, 0.04284366, 0.04290003, 0.04284364, 0.04284364, 26.16809583], [1516428000000, 0.04284364, 0.04284364, 0.0428012, 0.0428012, 3.91517775], [1516428060000, 0.042801, 0.04284364, 0.042801, 0.04284364, 1.53375327], [1516428120000, 0.04284364, 0.04284364, 0.04284364, 0.04284364, 0.84839065], [1516428180000, 0.04284363, 0.04284364, 0.04284363, 0.04284364, 0.43808389], [1516428240000, 0.04284363, 0.04284364, 0.04284363, 0.04284364, 0.15627781], [1516428300000, 0.04284363, 0.04284364, 0.0428, 0.0428436, 5.68702871], [1516428360000, 0.0428436, 0.04284363, 0.0428436, 0.04284363, 0.73245528], [1516428420000, 0.04284363, 0.04284364, 0.04284363, 0.04284364, 2.56933377], [1516428480000, 0.042802, 0.04310799, 0.042802, 0.04310299, 4.55598231], [1516428540000, 0.04310299, 0.04323287, 0.04299999, 0.04299999, 21.4019796], [1516428600000, 0.04299999, 0.04321799, 0.04299999, 0.04310299, 11.66066917], [1516428660000, 0.04310299, 0.043188, 0.04310299, 0.04317299, 0.56171262], [1516428720000, 0.043168, 0.043168, 0.042802, 0.042802, 32.99786641], [1516428780000, 0.04313799, 0.043138, 0.04285432, 0.04285432, 4.90672788], [1516428840000, 0.04313799, 0.04323287, 0.04313799, 0.04323287, 0.65456835], [1516428900000, 0.04313799, 0.04323287, 0.04313799, 0.04323287, 1.8754756], [1516428960000, 0.04313799, 0.04313799, 0.042945, 0.04313799, 9.93299148], [1516429020000, 0.043, 0.04313799, 0.043, 0.04313799, 33.9413291], [1516429080000, 0.04313799, 0.04313799, 0.04284602, 0.04284602, 0.97143436], [1516429140000, 0.04294602, 0.04313, 0.04270013, 0.04282336, 34.89292244], [1516429200000, 0.04282336, 0.04282336, 0.04282336, 0.04282336, 0.259], [1516429260000, 0.0431198, 0.043188, 0.0431198, 0.04317559, 15.69677567], [1516429320000, 0.0428891, 0.0428891, 0.0428891, 0.0428891, 0.04945091], [1516429380000, 0.04323287, 0.04323287, 0.04290901, 0.04290904, 23.27678943], [1516429440000, 0.04291402, 0.043355, 0.04291401, 0.04323287, 13.71733376], [1516429500000, 0.04307094, 0.04307094, 0.04307094, 0.04307094, 0.082945], [1516429620000, 0.04307094, 0.04307094, 0.04307094, 0.04307094, 9.807e-05], [1516429680000, 0.04332999, 0.043442, 0.04332999, 0.043442, 0.29568873], [1516429740000, 0.04341698, 0.04341698, 0.043024, 0.043034, 1.75581918], [1516429800000, 0.043034, 0.043034, 0.04301001, 0.043034, 1.31495338], [1516429860000, 0.043034, 0.043034, 0.043034, 0.043034, 2.55308607], [1516429920000, 0.04340699, 0.04340699, 0.043034, 0.043034, 0.24937758], [1516430100000, 0.04338899, 0.04339, 0.04315, 0.04315, 2.93103401], [1516430220000, 0.04308601, 0.04341199, 0.04308601, 0.04341199, 2.25601326], [1516430280000, 0.04311606, 0.04311606, 0.043034, 0.04311605, 0.87260402], [1516430340000, 0.04311605, 0.04311605, 0.04311605, 0.04311605, 0.5380901], [1516430400000, 0.04311605, 0.04338939, 0.04311605, 0.04338939, 0.23193192], [1516430460000, 0.04309902, 0.0433907, 0.04309902, 0.04310901, 7.0672054], [1516430580000, 0.04310902, 0.04341698, 0.04308227, 0.04341698, 3.04401934], [1516430640000, 0.04341698, 0.043447, 0.04309501, 0.04343699, 8.98885928], [1516430700000, 0.043432, 0.043432, 0.04338497, 0.04338497, 14.82710045], [1516430760000, 0.04312397, 0.043447, 0.043089, 0.043447, 16.83706443], [1516430820000, 0.043447, 0.043447, 0.043447, 0.043447, 9.31393258], [1516430880000, 0.043447, 0.04345204, 0.043447, 0.04345204, 2.08832498], [1516430940000, 0.04345204, 0.04345204, 0.04312538, 0.04312538, 0.13428568], [1516431000000, 0.04312544, 0.04345205, 0.04312543, 0.04345205, 0.97066779], [1516431180000, 0.04341898, 0.04341898, 0.04341898, 0.04341898, 0.23031391], [1516431240000, 0.04327819, 0.04340999, 0.04312543, 0.04323075, 57.22106095], [1516431300000, 0.04323075, 0.04342888, 0.04323075, 0.04342888, 0.76287278], [1516431420000, 0.04323075, 0.04323075, 0.04315801, 0.04316301, 1.02778884], [1516431480000, 0.04316302, 0.04316302, 0.043163, 0.04316302, 1.64226755], [1516431540000, 0.0431478, 0.0431478, 0.04307, 0.04308001, 0.85629158], [1516431600000, 0.04309502, 0.04334134, 0.04303001, 0.04304011, 1.29790213], [1516431660000, 0.0430451, 0.04341348, 0.0430451, 0.04308501, 3.50358067], [1516431720000, 0.04309, 0.04341348, 0.04309, 0.04341348, 0.78991953], [1516431780000, 0.04342593, 0.04342593, 0.04342593, 0.04342593, 1.28311534], [1516431840000, 0.043421, 0.043421, 0.043421, 0.043421, 0.78163551], [1516431900000, 0.043421, 0.04342592, 0.043421, 0.04342592, 9.43394192], [1516431960000, 0.043421, 0.043421, 0.043421, 0.043421, 0.59599411], [1516432020000, 0.0431478, 0.0431478, 0.04312713, 0.04312713, 0.52122447], [1516432140000, 0.04312713, 0.0431478, 0.043075, 0.0431478, 4.64224839], [1516432200000, 0.04339963, 0.04340299, 0.04339963, 0.04340299, 0.46083374], [1516432260000, 0.04339962, 0.04339962, 0.04313746, 0.04313746, 0.28862157], [1516432320000, 0.04310201, 0.04341207, 0.043102, 0.043102, 0.83484278], [1516432440000, 0.04310701, 0.04310701, 0.04309701, 0.04309701, 0.49696135], [1516432500000, 0.04310701, 0.04345399, 0.04310201, 0.04310201, 0.9577574], [1516432560000, 0.0432, 0.04320001, 0.0432, 0.04320001, 0.368365], [1516432620000, 0.04320001, 0.04335, 0.0432, 0.0432, 7.44741211], [1516432680000, 0.0432, 0.04334999, 0.0432, 0.04334999, 0.42358346], [1516432800000, 0.043202, 0.043317, 0.043092, 0.043317, 14.12990923], [1516432860000, 0.04339998, 0.04342499, 0.042884, 0.0429, 116.54286334], [1516432920000, 0.0429, 0.04330313, 0.0429, 0.04330313, 54.8792976], [1516432980000, 0.043279, 0.043279, 0.043279, 0.043279, 0.0504718], [1516433040000, 0.04305949, 0.04305949, 0.04305949, 0.04305949, 0.02432702], [1516433100000, 0.04305949, 0.04327198, 0.04292401, 0.04321499, 10.16150814], [1516433160000, 0.04321499, 0.04321499, 0.04321499, 0.04321499, 0.30024491], [1516433220000, 0.04327198, 0.04327198, 0.04327198, 0.04327198, 0.38561599], [1516433280000, 0.04321499, 0.04321499, 0.04321499, 0.04321499, 0.24886469], [1516433340000, 0.04305949, 0.04305949, 0.04295902, 0.04305949, 4.77608915], [1516433400000, 0.04297921, 0.04321499, 0.04297921, 0.04321499, 5.05699284], [1516433460000, 0.0429792, 0.04321499, 0.0429791, 0.04321499, 6.92800093], [1516433520000, 0.04321499, 0.04321499, 0.04321499, 0.04321499, 0.01450055], [1516433580000, 0.04321499, 0.04321499, 0.04321499, 0.04321499, 0.06601483], [1516433640000, 0.04321499, 0.04321499, 0.04321499, 0.04321499, 0.55365732], [1516433700000, 0.0429813, 0.04321499, 0.0429813, 0.04321499, 0.42845639], [1516433760000, 0.04298131, 0.04298131, 0.04298131, 0.04298131, 1.577], [1516433820000, 0.04321499, 0.04321499, 0.04321499, 0.04321499, 2.98559148], [1516433940000, 0.04298131, 0.04298131, 0.04295902, 0.04295902, 5.08649474], [1516434000000, 0.04295902, 0.04321498, 0.04295902, 0.04295903, 8.22521132], [1516434060000, 0.04295902, 0.04295902, 0.04288901, 0.04289886, 0.76913469], [1516434120000, 0.04320051, 0.04321499, 0.04288402, 0.04304005, 12.43845237], [1516434180000, 0.04304005, 0.043289, 0.04304005, 0.043289, 10.70102687], [1516434240000, 0.043289, 0.043289, 0.043289, 0.043289, 1.10160004], [1516434300000, 0.043289, 0.043289, 0.04290901, 0.04293401, 6.77581433], [1516434360000, 0.04320144, 0.04320144, 0.0432, 0.0432, 0.50418342], [1516434480000, 0.0432, 0.043397, 0.043029, 0.043029, 2.61353699], [1516434540000, 0.0432, 0.04341736, 0.0432, 0.04341736, 0.56964466], [1516434600000, 0.04341399, 0.043414, 0.04307801, 0.04307801, 4.23653995], [1516434660000, 0.04307401, 0.04322725, 0.04307401, 0.04322725, 10.39337096], [1516434720000, 0.04301, 0.043409, 0.04301, 0.043409, 0.6], [1516434780000, 0.04340899, 0.043409, 0.04303501, 0.043399, 9.39041706], [1516434840000, 0.043399, 0.04359994, 0.043399, 0.04359994, 17.3375776], [1516434900000, 0.04339899, 0.043399, 0.04339899, 0.043399, 0.02141471], [1516435020000, 0.04315605, 0.04315605, 0.0431457, 0.0431457, 0.16302952], [1516435080000, 0.0431457, 0.04314572, 0.0431457, 0.04314572, 0.55758878], [1516435140000, 0.04314569, 0.04314569, 0.04314569, 0.04314569, 0.5], [1516435200000, 0.04296013, 0.04296013, 0.04296013, 0.04296013, 0.06475374], [1516435260000, 0.04296013, 0.04314569, 0.04296013, 0.04314569, 0.81859733], [1516435320000, 0.04314569, 0.04314572, 0.04314482, 0.04314572, 0.36970617], [1516435440000, 0.04314572, 0.04314572, 0.04314572, 0.04314572, 0.08391436], [1516435500000, 0.0432964, 0.0432964, 0.04314572, 0.04314572, 0.07043351], [1516435560000, 0.04314572, 0.043379, 0.04314572, 0.043379, 1.25580173], [1516435620000, 0.04296033, 0.04337899, 0.04296032, 0.04337899, 0.64541548], [1516435680000, 0.04337896, 0.04337898, 0.04337896, 0.04337898, 2.28457113], [1516435740000, 0.043379, 0.043405, 0.04337898, 0.043379, 0.83147995], [1516435800000, 0.04337898, 0.04344769, 0.04337898, 0.04337898, 0.69100266], [1516435860000, 0.04337898, 0.04337898, 0.0431458, 0.0431458, 0.56381712], [1516435920000, 0.04314572, 0.04314581, 0.04314572, 0.04314581, 0.4086608], [1516435980000, 0.04314581, 0.043433, 0.04314572, 0.04314572, 1.93029259], [1516436100000, 0.04314576, 0.04314576, 0.04298001, 0.04300007, 1.69874294], [1516436160000, 0.04342297, 0.04342297, 0.04300502, 0.04301, 1.03268907], [1516436220000, 0.04301503, 0.04301503, 0.04301502, 0.04301502, 0.93], [1516436280000, 0.04302005, 0.04336299, 0.04301501, 0.04336299, 5.29671707], [1516436340000, 0.04301716, 0.04302701, 0.04301716, 0.04302701, 0.10120719], [1516436520000, 0.04305201, 0.04305201, 0.04305201, 0.04305201, 0.45995031], [1516436580000, 0.04336691, 0.04336691, 0.04336691, 0.04336691, 0.35136777], [1516436640000, 0.04306201, 0.04336691, 0.04306201, 0.04306204, 1.353999], [1516436700000, 0.04306707, 0.04306708, 0.04305205, 0.04305205, 0.24105713], [1516436760000, 0.04305205, 0.043372, 0.04302701, 0.043372, 4.45716951], [1516436880000, 0.04334608, 0.04334608, 0.04334608, 0.04334608, 0.74934752], [1516436940000, 0.04334608, 0.04334608, 0.04334608, 0.04334608, 0.23012605], [1516437000000, 0.04302201, 0.04302701, 0.04302201, 0.043027, 0.52518657], [1516437060000, 0.04333898, 0.04333898, 0.04333898, 0.04333898, 0.23016375], [1516437120000, 0.043027, 0.043027, 0.043027, 0.043027, 0.04990686], [1516437180000, 0.043027, 0.043027, 0.043027, 0.043027, 0.33181851], [1516437300000, 0.04333895, 0.04333898, 0.04333895, 0.04333898, 0.2307971], [1516437360000, 0.04303201, 0.04303201, 0.043027, 0.043027, 2.99957022], [1516437420000, 0.04332097, 0.04333898, 0.04332097, 0.04333898, 1.96285323], [1516437540000, 0.043318, 0.043318, 0.04302702, 0.04331797, 1.01268111], [1516437600000, 0.04303002, 0.043325, 0.04303002, 0.043036, 35.82262918], [1516437660000, 0.04303701, 0.043403, 0.04303701, 0.043403, 0.75245629], [1516437720000, 0.043403, 0.043403, 0.043058, 0.043058, 2.83439775], [1516437780000, 0.043053, 0.043053, 0.043053, 0.043053, 0.37897557], [1516437840000, 0.04338792, 0.04338792, 0.04306, 0.04306, 0.40781592], [1516437900000, 0.04305301, 0.043383, 0.04304501, 0.04304501, 6.99752574], [1516437960000, 0.04306001, 0.04306001, 0.04306001, 0.04306001, 1.05248588], [1516438020000, 0.04305898, 0.04306501, 0.04305898, 0.043065, 11.73406185], [1516438080000, 0.04306403, 0.04337776, 0.04306, 0.04337776, 0.28051867], [1516438200000, 0.04312, 0.04312, 0.04306296, 0.04306296, 1.6731336], [1516438260000, 0.04306, 0.04306, 0.04303703, 0.04303704, 2.58081503], [1516438320000, 0.04303704, 0.04324576, 0.043001, 0.04324576, 4.97175743], [1516438380000, 0.04324576, 0.04324576, 0.043001, 0.043001, 4.29151723], [1516438440000, 0.043001, 0.043001, 0.043, 0.043, 5.88873091], [1516438500000, 0.04296502, 0.04312339, 0.04296502, 0.04312339, 1.83130394], [1516438560000, 0.04296501, 0.04296501, 0.04296501, 0.04296501, 0.09], [1516438620000, 0.04296501, 0.04296501, 0.04296501, 0.04296501, 0.04643313], [1516438680000, 0.04296501, 0.043, 0.04296013, 0.04296013, 2.53595314], [1516438740000, 0.043, 0.043, 0.04296013, 0.043, 1.06812217], [1516438800000, 0.043, 0.043279, 0.042884, 0.043279, 11.86802683], [1516438860000, 0.042965, 0.0429651, 0.042965, 0.042965, 1.59976964], [1516438920000, 0.042965, 0.042965, 0.042965, 0.042965, 1.09342617], [1516438980000, 0.042965, 0.042965, 0.042965, 0.042965, 0.66983943], [1516439040000, 0.042965, 0.042965, 0.042965, 0.042965, 0.02279754], [1516439100000, 0.04333599, 0.04333599, 0.043306, 0.043306, 0.92126299], [1516439160000, 0.04330099, 0.04330099, 0.042966, 0.042966, 0.08781772], [1516439220000, 0.04329095, 0.043291, 0.042965, 0.042965, 2.81796178], [1516439280000, 0.04327999, 0.04344759, 0.04297, 0.04340299, 16.83054471], [1516439400000, 0.0432, 0.04343298, 0.0432, 0.04334598, 11.27384919], [1516439460000, 0.04334598, 0.043438, 0.04319438, 0.043433, 1.34470464], [1516439520000, 0.043418, 0.043418, 0.043418, 0.043418, 0.212156], [1516439580000, 0.0432, 0.0432, 0.0432, 0.0432, 0.25408898], [1516439640000, 0.04302412, 0.0432, 0.04302412, 0.0432, 1.34627595], [1516439700000, 0.04302412, 0.04302412, 0.04302412, 0.04302412, 0.02031342], [1516439760000, 0.04302412, 0.0432, 0.04300501, 0.0432, 0.90318763], [1516439820000, 0.0432, 0.0432, 0.04305279, 0.043058, 1.66875734], [1516439880000, 0.0432, 0.0433, 0.0432, 0.0433, 0.43279843], [1516439940000, 0.0433, 0.0433, 0.0433, 0.0433, 0.04684606], [1516440000000, 0.04310002, 0.04310002, 0.04309098, 0.04309098, 0.13564185], [1516440060000, 0.04310003, 0.04310003, 0.04309098, 0.04309098, 2.4], [1516440180000, 0.0433, 0.043384, 0.0433, 0.043384, 0.38568627], [1516440240000, 0.043384, 0.0434476, 0.043384, 0.04344299, 10.34072528], [1516440300000, 0.04344299, 0.043495, 0.04344299, 0.043443, 2.02021074], [1516440360000, 0.0435, 0.0435, 0.043443, 0.0435, 1.58698806], [1516440420000, 0.043443, 0.0435, 0.04344299, 0.0435, 3.50005064], [1516440480000, 0.04344299, 0.0435, 0.04344299, 0.0435, 4.08383659], [1516440540000, 0.043443, 0.0435, 0.043443, 0.0435, 0.35388447], [1516440600000, 0.0435, 0.043708, 0.0435, 0.0435, 13.115571], [1516440660000, 0.04351, 0.04351, 0.04351, 0.04351, 0.20881308], [1516440720000, 0.04351, 0.04351, 0.04350001, 0.04350001, 1.90168773], [1516440780000, 0.0435, 0.043705, 0.0435, 0.0435, 3.43922592], [1516440840000, 0.04370595, 0.04370595, 0.0435, 0.043703, 15.15404482], [1516440900000, 0.0435, 0.0435, 0.0435, 0.0435, 0.96159566], [1516440960000, 0.0435, 0.04350002, 0.0435, 0.04350002, 1.85893879], [1516441080000, 0.04361999, 0.04361999, 0.04350002, 0.04350002, 0.50169459], [1516441140000, 0.04350002, 0.0436, 0.04350002, 0.0436, 0.48731141], [1516441200000, 0.04350002, 0.0436, 0.04350002, 0.0436, 1.07171558], [1516441260000, 0.04350002, 0.04350002, 0.04350002, 0.04350002, 1.5], [1516441380000, 0.04351999, 0.04352, 0.04350002, 0.04350002, 1.14990021], [1516441440000, 0.04352111, 0.04360999, 0.04350002, 0.04360999, 0.73267874], [1516441500000, 0.04360999, 0.04361999, 0.04360999, 0.04360999, 0.88736016], [1516441560000, 0.04361999, 0.0437, 0.04350003, 0.04350003, 0.96805422], [1516441680000, 0.04350003, 0.04369999, 0.04350003, 0.04369999, 0.13174978], [1516441740000, 0.04369999, 0.04369999, 0.04369999, 0.04369999, 0.02436091], [1516441800000, 0.04365, 0.04365, 0.04365, 0.04365, 1.10203919], [1516441920000, 0.04364999, 0.0437, 0.04364999, 0.0437, 0.63973561], [1516441980000, 0.04365, 0.04365, 0.04365, 0.04365, 1.61100021], [1516442040000, 0.04365, 0.04370298, 0.04365, 0.04370298, 7.63661478], [1516442100000, 0.04370298, 0.04371131, 0.0437, 0.0437, 1.74666648], [1516442160000, 0.0437, 0.0437, 0.0437, 0.0437, 0.93590687], [1516442220000, 0.0437, 0.0437, 0.0437, 0.0437, 0.708126], [1516442280000, 0.04371131, 0.04372814, 0.0437, 0.04372814, 1.45072662], [1516442340000, 0.04372813, 0.04374291, 0.04372813, 0.04373, 1.70232713], [1516442400000, 0.04374291, 0.04374291, 0.04373, 0.04373, 1.17683316], [1516442460000, 0.04373, 0.04373001, 0.0437, 0.0437, 1.75630514], [1516442520000, 0.0437, 0.0437001, 0.0437, 0.0437001, 0.77468499], [1516442580000, 0.0437001, 0.0437001, 0.0437, 0.0437, 0.84039627], [1516442640000, 0.0437001, 0.04373, 0.0437001, 0.04373, 1.94952208], [1516442700000, 0.04373, 0.0438, 0.04365001, 0.0438, 10.06228313], [1516442760000, 0.0438, 0.0438, 0.0438, 0.0438, 0.02525196], [1516442820000, 0.04377743, 0.0438, 0.04366001, 0.04366001, 5.13503501], [1516442880000, 0.043799, 0.044, 0.04372001, 0.04372001, 1.24625368], [1516442940000, 0.04372501, 0.04375001, 0.04372501, 0.04375001, 5.68254526], [1516443000000, 0.04386, 0.044, 0.04372502, 0.04378, 16.35776317], [1516443060000, 0.04378, 0.04399492, 0.04365, 0.04365681, 12.05530987], [1516443120000, 0.04365683, 0.0436904, 0.04365001, 0.04365401, 6.95089603], [1516443180000, 0.043654, 0.04365501, 0.04365, 0.04365003, 1.37243609], [1516443240000, 0.04365001, 0.04394318, 0.04365, 0.043655, 2.75583092], [1516443300000, 0.04365502, 0.044, 0.043655, 0.043996, 1.70937567], [1516443360000, 0.04378, 0.04378, 0.04378, 0.04378, 0.03766031], [1516443420000, 0.04378, 0.04378, 0.04378, 0.04378, 0.05051562], [1516443480000, 0.04378, 0.043996, 0.043505, 0.043505, 63.23279842], [1516443540000, 0.04368808, 0.04368809, 0.04351, 0.04368809, 5.64360492], [1516443600000, 0.043515, 0.04368809, 0.043515, 0.04351503, 1.81910253], [1516443720000, 0.04361, 0.04368809, 0.04361, 0.04368809, 3.18036548], [1516443780000, 0.04368808, 0.04368809, 0.04368808, 0.04368809, 1.02240982], [1516443840000, 0.04368809, 0.04368809, 0.04368809, 0.04368809, 1.01369939], [1516443900000, 0.04368809, 0.04368809, 0.04352001, 0.04368809, 0.88617928], [1516443960000, 0.04352001, 0.04368809, 0.04352001, 0.04368809, 0.49425924], [1516444080000, 0.043686, 0.04368809, 0.043686, 0.04368809, 0.50250866], [1516444140000, 0.04368809, 0.0437, 0.04352501, 0.04353, 7.61780438], [1516444200000, 0.04353002, 0.043865, 0.043525, 0.043865, 0.72895427], [1516444380000, 0.04385999, 0.04385999, 0.04385999, 0.04385999, 0.97173532], [1516444440000, 0.04352501, 0.04352501, 0.04352501, 0.04352501, 0.89504971], [1516444500000, 0.043841, 0.043841, 0.04352002, 0.04352002, 0.68421135], [1516444560000, 0.04352002, 0.04352002, 0.04352001, 0.04352001, 0.64070319], [1516444620000, 0.04353001, 0.043827, 0.04353001, 0.043827, 0.39721069], [1516444680000, 0.04352001, 0.04352001, 0.04352001, 0.04352001, 0.19596106], [1516444740000, 0.04379999, 0.0438, 0.04379999, 0.0438, 1.21886778], [1516444800000, 0.0438, 0.04393199, 0.0438, 0.04393199, 7.00641868], [1516444860000, 0.0438, 0.0438, 0.0438, 0.0438, 1.64750684], [1516444920000, 0.0438, 0.0438, 0.04366048, 0.04366049, 0.92593094], [1516444980000, 0.0436605, 0.0438, 0.04366048, 0.04366048, 4.62959388], [1516445040000, 0.04366048, 0.0438, 0.04366048, 0.04366048, 2.20879593], [1516445100000, 0.04366048, 0.0438, 0.04353801, 0.0438, 1.88278179], [1516445160000, 0.0438, 0.0438, 0.04353802, 0.0438, 0.55704], [1516445280000, 0.0438, 0.0438, 0.0438, 0.0438, 0.04604328], [1516445400000, 0.0438, 0.0438, 0.0438, 0.0438, 2.30479452], [1516445460000, 0.0438, 0.0438, 0.04349999, 0.0435, 60.98436505], [1516445520000, 0.0435, 0.0435, 0.04331301, 0.0435, 15.33903684], [1516445580000, 0.0435, 0.0435, 0.0435, 0.0435, 1.46705925], [1516445640000, 0.04328, 0.0435, 0.043255, 0.0435, 26.11072803], [1516445700000, 0.04359004, 0.04367299, 0.04359004, 0.04367299, 1.21400608], [1516445820000, 0.04335207, 0.04359999, 0.04335207, 0.04359999, 0.08172488], [1516445880000, 0.04341, 0.04341, 0.04326501, 0.04341, 2.2908303], [1516446000000, 0.04341, 0.04341, 0.043255, 0.043255, 1.41999638], [1516446060000, 0.043255, 0.04325503, 0.043255, 0.04325503, 0.25984264], [1516446120000, 0.04359798, 0.04359798, 0.04359797, 0.04359797, 0.48864849], [1516446180000, 0.04359797, 0.04359797, 0.043593, 0.043593, 3.9277227], [1516446240000, 0.04359, 0.04359797, 0.04327585, 0.04327585, 0.59754863], [1516446300000, 0.043593, 0.043593, 0.04325806, 0.04325806, 0.60276804], [1516446360000, 0.04327804, 0.04359797, 0.04327617, 0.04358689, 3.77019799], [1516446420000, 0.04359796, 0.04359797, 0.04359796, 0.04359797, 0.38555364], [1516446540000, 0.0435975, 0.0435975, 0.0435975, 0.0435975, 0.26593611], [1516446600000, 0.0435975, 0.0435975, 0.0435975, 0.0435975, 0.88975363], [1516446660000, 0.0435975, 0.0435975, 0.0435975, 0.0435975, 0.316901], [1516446720000, 0.0435975, 0.0435975, 0.0435975, 0.0435975, 0.8268971], [1516446840000, 0.0435975, 0.04359996, 0.0435975, 0.04359996, 16.01397678], [1516446900000, 0.0435975, 0.04375, 0.0435975, 0.04375, 0.73308411], [1516447020000, 0.04373599, 0.04373599, 0.04373599, 0.04373599, 0.26514499], [1516447080000, 0.04340902, 0.043419, 0.04340902, 0.043419, 0.99112055], [1516447140000, 0.04372, 0.04372, 0.04372, 0.04372, 0.06439108], [1516447260000, 0.043369, 0.043384, 0.043369, 0.043384, 0.19184229], [1516447380000, 0.0437, 0.043734, 0.0437, 0.043734, 0.70341304], [1516447500000, 0.04372398, 0.043745, 0.04372398, 0.043745, 1.21620302], [1516447560000, 0.04341, 0.04341, 0.04341, 0.04341, 0.1532], [1516447620000, 0.04373, 0.04373, 0.04373, 0.04373, 0.5405], [1516447680000, 0.043585, 0.043585, 0.043585, 0.043585, 0.22692124], [1516447740000, 0.04336501, 0.04336501, 0.04336501, 0.04336501, 0.39188243], [1516447800000, 0.04358499, 0.04373497, 0.043387, 0.043387, 1.14718365], [1516447920000, 0.043387, 0.04365398, 0.043387, 0.04365398, 0.43604176], [1516447980000, 0.04336501, 0.04336501, 0.04336501, 0.04336501, 0.52386416], [1516448040000, 0.04336501, 0.04336501, 0.04336501, 0.04336501, 0.21538516], [1516448100000, 0.04364996, 0.04364998, 0.04336505, 0.04336505, 0.25443399], [1516448160000, 0.043375, 0.043375, 0.04336506, 0.04336506, 0.05084449], [1516448220000, 0.04336506, 0.04336506, 0.04336506, 0.04336506, 0.04073587], [1516448280000, 0.04336507, 0.04336507, 0.04336507, 0.04336507, 0.07], [1516448340000, 0.04336505, 0.04363399, 0.04336505, 0.04363399, 0.48334571], [1516448400000, 0.04362899, 0.043745, 0.04362681, 0.043745, 14.17677629], [1516448460000, 0.04362897, 0.04370999, 0.04362897, 0.04370999, 1.61951396], [1516448520000, 0.043368, 0.04369496, 0.043368, 0.04368999, 13.22575611], [1516448580000, 0.043688, 0.043688, 0.04368799, 0.04368799, 0.95666118], [1516448640000, 0.04368581, 0.04368581, 0.04338397, 0.04338397, 0.42926006], [1516448700000, 0.04368581, 0.04369278, 0.04337801, 0.04369278, 1.49821844], [1516448760000, 0.04368798, 0.04368798, 0.04336505, 0.04336505, 0.29322109], [1516448880000, 0.04336505, 0.043678, 0.04336505, 0.043678, 0.52440417], [1516448940000, 0.043365, 0.043365, 0.043365, 0.043365, 0.28], [1516449000000, 0.043365, 0.04375, 0.043365, 0.04353213, 34.09834469], [1516449060000, 0.04353213, 0.04353213, 0.04337411, 0.04337411, 0.23160784], [1516449120000, 0.04369278, 0.04369278, 0.04369278, 0.04369278, 0.95052788], [1516449180000, 0.04338904, 0.04338904, 0.04338904, 0.04338904, 0.05976458], [1516449240000, 0.04369277, 0.043708, 0.043367, 0.043367, 7.50291928], [1516449300000, 0.04364683, 0.043735, 0.04364683, 0.043735, 11.83641067], [1516449360000, 0.04339501, 0.04339501, 0.04310001, 0.043395, 23.80627891], [1516449420000, 0.043395, 0.043395, 0.043395, 0.043395, 0.26113627], [1516449480000, 0.043395, 0.04344552, 0.04320105, 0.04344552, 1.52683079], [1516449540000, 0.043105, 0.043105, 0.043105, 0.043105, 0.44937734], [1516449600000, 0.04344552, 0.04344552, 0.04316001, 0.04344552, 3.12816049], [1516449660000, 0.04344552, 0.04344552, 0.04344552, 0.04344552, 0.16442052], [1516449780000, 0.0434455, 0.04344552, 0.04316602, 0.04344552, 1.83938807], [1516449840000, 0.043161, 0.043176, 0.043161, 0.043176, 0.18603485], [1516449900000, 0.04318607, 0.04318607, 0.04318607, 0.04318607, 0.01566554], [1516450020000, 0.043206, 0.04320603, 0.04314136, 0.04314136, 0.80200511], [1516450080000, 0.04315602, 0.04315602, 0.04315602, 0.04315602, 0.08077891], [1516450200000, 0.04316601, 0.04351398, 0.04316601, 0.04351398, 0.04255509], [1516450260000, 0.04352299, 0.04352299, 0.04352299, 0.04352299, 0.24733001], [1516450320000, 0.043512, 0.043512, 0.043181, 0.04318601, 4.32741736], [1516450500000, 0.04351199, 0.043512, 0.04351199, 0.043512, 0.43734714], [1516450560000, 0.04324508, 0.04324508, 0.04324508, 0.04324508, 0.40028591], [1516450620000, 0.043512, 0.043512, 0.043512, 0.043512, 0.0114423], [1516450680000, 0.04324102, 0.04324102, 0.04324101, 0.04324101, 5.2573], [1516450740000, 0.04324102, 0.04324102, 0.04324102, 0.04324102, 1.11934044], [1516450800000, 0.043512, 0.04359666, 0.043512, 0.04359666, 0.22982165], [1516450860000, 0.04361962, 0.04361962, 0.043455, 0.043455, 5.38317188], [1516450980000, 0.04331, 0.04331, 0.04331, 0.04331, 0.02545897], [1516451040000, 0.04331, 0.04331, 0.04331, 0.04331, 0.05687184], [1516451100000, 0.043455, 0.043455, 0.043455, 0.043455, 0.55067356], [1516451280000, 0.04345499, 0.043455, 0.04330501, 0.043455, 0.33954501], [1516451340000, 0.04330501, 0.04330501, 0.04330002, 0.04330002, 0.64902514], [1516451400000, 0.04330501, 0.04373075, 0.04330501, 0.043455, 2.86537283], [1516451460000, 0.043455, 0.043455, 0.043455, 0.043455, 1.331596], [1516451520000, 0.043455, 0.043455, 0.043455, 0.043455, 0.55320945], [1516451580000, 0.04365199, 0.04365199, 0.04353554, 0.04353554, 0.68058052], [1516451700000, 0.0434, 0.0434, 0.0434, 0.0434, 0.44278535], [1516451760000, 0.0434, 0.0434, 0.04331001, 0.0434, 1.98125623], [1516451820000, 0.0434, 0.0434, 0.0434, 0.0434, 0.10851614], [1516451880000, 0.0434, 0.0434, 0.0434, 0.0434, 1.64837713], [1516451940000, 0.0434, 0.0434, 0.04331501, 0.0434, 0.25102579], [1516452000000, 0.0434, 0.04373498, 0.04334901, 0.04334901, 0.51635237], [1516452060000, 0.043695, 0.043695, 0.043695, 0.043695, 0.0228833], [1516452180000, 0.04333503, 0.04333503, 0.04333503, 0.04333503, 0.02090909], [1516452240000, 0.04331005, 0.04331005, 0.04331, 0.04331004, 1.08985736], [1516452300000, 0.04331004, 0.04331004, 0.04331004, 0.04331004, 1.24002009], [1516452360000, 0.04331004, 0.04365, 0.04331004, 0.04365, 0.32984313], [1516452600000, 0.04363382, 0.04364499, 0.04363382, 0.04364499, 0.68754195], [1516452660000, 0.04364999, 0.04365, 0.04332, 0.04364998, 1.83641224], [1516452900000, 0.04332052, 0.04364501, 0.04332052, 0.043645, 0.89658113], [1516452960000, 0.0434, 0.0434, 0.0434, 0.0434, 0.35338116], [1516453020000, 0.0434, 0.0434, 0.0434, 0.0434, 0.12175791], [1516453140000, 0.0434, 0.0434, 0.0434, 0.0434, 0.86488598], [1516453200000, 0.0434, 0.0434, 0.04330002, 0.0434, 1.60784318], [1516453260000, 0.0434, 0.0434, 0.04330002, 0.0434, 1.12409187], [1516453320000, 0.0434, 0.0434, 0.0434, 0.0434, 0.23846788], [1516453380000, 0.0434, 0.0434, 0.0434, 0.0434, 1.27528515], [1516453440000, 0.0434, 0.0434, 0.0434, 0.0434, 0.05092394], [1516453500000, 0.0434, 0.0434, 0.0434, 0.0434, 0.74216816], [1516453560000, 0.0434, 0.0434, 0.0434, 0.0434, 0.05092394], [1516453620000, 0.0434, 0.0434, 0.0434, 0.0434, 0.02546197], [1516453680000, 0.04330002, 0.04330002, 0.04330002, 0.04330002, 4.4912825], [1516453740000, 0.0434, 0.0434, 0.04330002, 0.04330002, 0.65052848], [1516453800000, 0.0434, 0.0434, 0.04330002, 0.0434, 1.65056648], [1516453860000, 0.0434, 0.0434, 0.04330002, 0.0434, 7.12237004], [1516453920000, 0.0434, 0.0434, 0.0434, 0.0434, 0.20330417], [1516453980000, 0.04330002, 0.0434, 0.04330002, 0.0434, 0.3679202], [1516454040000, 0.0434, 0.0434, 0.0434, 0.0434, 0.64724005], [1516454100000, 0.0434, 0.0434, 0.04330002, 0.04330002, 3.01947598], [1516454160000, 0.04330002, 0.04330002, 0.0433, 0.0433, 1.44439126], [1516454220000, 0.04330002, 0.04330002, 0.04330002, 0.04330002, 0.17554735], [1516454280000, 0.04330002, 0.04330002, 0.04330002, 0.04330002, 0.05092414], [1516454340000, 0.0433, 0.04353, 0.04318601, 0.0433, 3.25981177], [1516454400000, 0.0433, 0.043635, 0.0433, 0.043635, 0.7813894], [1516454460000, 0.04323601, 0.043244, 0.043191, 0.043191, 6.85774948], [1516454520000, 0.04336707, 0.04336707, 0.043196, 0.04336707, 0.32461915], [1516454580000, 0.04320101, 0.04336707, 0.04320101, 0.04321601, 0.80768314], [1516454640000, 0.04321101, 0.04352421, 0.04321101, 0.04352421, 0.70162656], [1516454700000, 0.04352421, 0.04363, 0.04352421, 0.04356594, 3.21076167], [1516454760000, 0.04362998, 0.04362998, 0.04356588, 0.04356594, 1.60135378], [1516454940000, 0.04327304, 0.04356588, 0.04327304, 0.04356588, 3.21704951], [1516455000000, 0.04328802, 0.04356586, 0.04328802, 0.04356586, 0.70894245], [1516455060000, 0.04356586, 0.04356586, 0.04330801, 0.04330801, 3.15807482], [1516455120000, 0.04356, 0.04356, 0.04356, 0.04356, 0.83078117], [1516455180000, 0.04330802, 0.04330802, 0.04330802, 0.04330802, 0.68960414], [1516455240000, 0.04330802, 0.04330805, 0.04330802, 0.04330805, 0.64285987], [1516455300000, 0.04330805, 0.04356, 0.04330805, 0.04356, 0.93526192], [1516455360000, 0.04330805, 0.04356, 0.04330801, 0.04330801, 16.1569009], [1516455480000, 0.04330801, 0.04345, 0.04330801, 0.04345, 2.4730696], [1516455540000, 0.04345, 0.04345, 0.04345, 0.04345, 0.2003669], [1516455600000, 0.04345, 0.04356588, 0.04345, 0.043561, 2.1724369], [1516455660000, 0.043556, 0.043561, 0.043556, 0.043561, 46.71593894], [1516455720000, 0.043561, 0.04356588, 0.043561, 0.043561, 4.04472249], [1516455780000, 0.043561, 0.043561, 0.043561, 0.043561, 4.98779297], [1516455840000, 0.04356584, 0.04356585, 0.043561, 0.043561, 30.70208118], [1516455900000, 0.043561, 0.04356587, 0.043561, 0.043561, 16.59961708], [1516455960000, 0.043561, 0.04356587, 0.043561, 0.043561, 3.04601222], [1516456020000, 0.043561, 0.04356588, 0.043561, 0.04356588, 2.30673808], [1516456080000, 0.04356588, 0.04356588, 0.04356588, 0.04356588, 1.83170294], [1516456200000, 0.04356588, 0.04363967, 0.04356585, 0.04356585, 1.4095378], [1516456260000, 0.04335131, 0.04335131, 0.04335131, 0.04335131, 0.5], [1516456320000, 0.04335131, 0.04335131, 0.04335131, 0.04335131, 0.24520475], [1516456380000, 0.04335131, 0.04335131, 0.04334513, 0.04334513, 1.85220431], [1516456440000, 0.04334513, 0.04363986, 0.04333961, 0.04333961, 6.91151687], [1516456500000, 0.04330801, 0.04363985, 0.043236, 0.04325601, 4.00849072], [1516456560000, 0.04327601, 0.04328602, 0.04327601, 0.04328602, 0.15150543], [1516456620000, 0.0436, 0.043605, 0.0436, 0.043605, 1.0668345], [1516456680000, 0.043592, 0.043592, 0.04325101, 0.04325101, 2.24872769], [1516456740000, 0.04325101, 0.04359585, 0.04320101, 0.04359585, 1.11211615], [1516456800000, 0.04359573, 0.04362999, 0.04359573, 0.043615, 1.25918158], [1516456860000, 0.043615, 0.043615, 0.043615, 0.043615, 2.06553444], [1516456920000, 0.043615, 0.043615, 0.043283, 0.043283, 1.53486924], [1516457040000, 0.0436, 0.0436, 0.0436, 0.0436, 0.19803791], [1516457100000, 0.04328614, 0.04359236, 0.04325601, 0.04359228, 1.24514561], [1516457220000, 0.04345051, 0.04345051, 0.04345051, 0.04345051, 0.04126489], [1516457280000, 0.04343233, 0.04345051, 0.04343233, 0.04345051, 0.50066704], [1516457400000, 0.04359216, 0.04361497, 0.04359216, 0.04361497, 0.22939883], [1516457460000, 0.04359216, 0.04361493, 0.043281, 0.043281, 10.29946923], [1516457520000, 0.04361499, 0.04361499, 0.04361499, 0.04361499, 0.03], [1516457640000, 0.04327105, 0.04327109, 0.043261, 0.043261, 0.40175672], [1516457700000, 0.04325103, 0.0434, 0.04325103, 0.0434, 2.08002978], [1516457760000, 0.0434, 0.0434, 0.0434, 0.0434, 0.30191165], [1516457820000, 0.04326801, 0.04326801, 0.04326801, 0.04326801, 0.0303], [1516457880000, 0.0433, 0.0433, 0.0433, 0.0433, 0.02548073], [1516457940000, 0.0433, 0.0433, 0.043278, 0.043278, 1.35740245], [1516458000000, 0.043268, 0.043271, 0.043268, 0.043271, 0.92059707], [1516458060000, 0.043271, 0.043271, 0.04326111, 0.043268, 10.16987973], [1516458120000, 0.0432611, 0.043268, 0.0432611, 0.043268, 1.23559344], [1516458180000, 0.043268, 0.0433, 0.0432611, 0.0433, 1.9984922], [1516458240000, 0.0433, 0.0433, 0.04325601, 0.04325601, 2.81846031], [1516458300000, 0.043268, 0.0433, 0.043268, 0.0433, 0.513217], [1516458360000, 0.0433, 0.0433, 0.043268, 0.043268, 0.2325034], [1516458420000, 0.0433, 0.0433, 0.0433, 0.0433, 0.3517403], [1516458480000, 0.04358826, 0.04358826, 0.043273, 0.043273, 0.39543287], [1516458540000, 0.043273, 0.04358725, 0.043273, 0.04358725, 0.06658506], [1516458600000, 0.04358725, 0.043605, 0.04358725, 0.043605, 0.68827545], [1516458660000, 0.04358853, 0.04358853, 0.043268, 0.043268, 2.19361936], [1516458780000, 0.04326801, 0.04326801, 0.04326801, 0.04326801, 1.24064213], [1516458900000, 0.04358724, 0.04358725, 0.04318101, 0.04353999, 6.68772377], [1516458960000, 0.043185, 0.04352998, 0.043185, 0.04352996, 2.50560642], [1516459020000, 0.043525, 0.043525, 0.04318701, 0.043525, 6.55596952], [1516459080000, 0.04320202, 0.04352996, 0.04320202, 0.04321701, 1.89470096], [1516459140000, 0.04321701, 0.04356499, 0.04321701, 0.04352777, 2.4929144], [1516459200000, 0.04352776, 0.04352777, 0.04352776, 0.04352777, 0.7737681], [1516459260000, 0.04352777, 0.04361499, 0.04322703, 0.04361499, 2.83266503], [1516459320000, 0.04361499, 0.043635, 0.04326401, 0.04326401, 1.78739351], [1516459380000, 0.04326406, 0.04365, 0.04326405, 0.04326605, 12.08128673], [1516459440000, 0.04326606, 0.04365, 0.04326606, 0.04365, 4.86906407], [1516459500000, 0.04365, 0.04365, 0.04331201, 0.04331201, 0.79790059], [1516459620000, 0.0436, 0.04367279, 0.0436, 0.04367279, 0.63298405], [1516459680000, 0.04367279, 0.0437, 0.0436, 0.04367279, 1.67430194], [1516459740000, 0.04367279, 0.04367279, 0.04367279, 0.04367279, 0.74457476], [1516459800000, 0.04367278, 0.04367279, 0.04334701, 0.04334903, 1.88035612], [1516459860000, 0.04335203, 0.04372124, 0.04335203, 0.04372124, 1.36225266], [1516459920000, 0.043701, 0.043701, 0.043354, 0.04366199, 3.93563938], [1516459980000, 0.043657, 0.043657, 0.043657, 0.043657, 0.2156], [1516460040000, 0.043657, 0.043657, 0.043657, 0.043657, 0.76921035], [1516460100000, 0.04336944, 0.04366198, 0.04336944, 0.04366197, 0.46115462], [1516460160000, 0.04335402, 0.04335402, 0.04335402, 0.04335402, 0.05995939], [1516460220000, 0.04339737, 0.04361613, 0.0431, 0.04352756, 18.45521558], [1516460280000, 0.04314502, 0.04314502, 0.04314502, 0.04314502, 0.05037605], [1516460400000, 0.0434433, 0.0434433, 0.0434433, 0.0434433, 0.03249504], [1516460460000, 0.0434433, 0.04363699, 0.04319501, 0.04319501, 1.4076], [1516460520000, 0.043245, 0.043607, 0.043245, 0.043607, 4.59523882], [1516460640000, 0.04323078, 0.04355, 0.04323078, 0.04355, 1.38208095], [1516460700000, 0.04353899, 0.043539, 0.04353899, 0.043539, 0.22967913], [1516460760000, 0.04353, 0.04353, 0.04317, 0.04317, 5.01115934], [1516460820000, 0.04320155, 0.0434838, 0.04320155, 0.0434838, 0.84191649], [1516460880000, 0.04315505, 0.04315505, 0.04315504, 0.04315504, 21.40334207], [1516460940000, 0.04349711, 0.0435, 0.0431915, 0.0431915, 0.61009798], [1516461000000, 0.04349497, 0.04349497, 0.04349497, 0.04349497, 0.22993791], [1516461060000, 0.04354, 0.04354, 0.04354, 0.04354, 0.43560663], [1516461180000, 0.04353499, 0.04353499, 0.043207, 0.043207, 0.05422309], [1516461240000, 0.04353497, 0.04353498, 0.04320712, 0.04320712, 2.07461502], [1516461300000, 0.04320712, 0.04347911, 0.04320712, 0.04347911, 0.61288688], [1516461360000, 0.04347909, 0.04347909, 0.04313919, 0.04313919, 4.47355235], [1516461420000, 0.04313919, 0.04313919, 0.043105, 0.043105, 0.79090872], [1516461480000, 0.043105, 0.04344621, 0.043105, 0.04344115, 0.29983981], [1516461540000, 0.04311001, 0.04311001, 0.04311001, 0.04311001, 0.0331], [1516461600000, 0.043115, 0.04344115, 0.043115, 0.04344115, 0.6524047], [1516461660000, 0.04344115, 0.04344115, 0.04344115, 0.04344115, 0.01012438], [1516461720000, 0.04344115, 0.04348159, 0.04344115, 0.04348159, 0.69916122], [1516461780000, 0.04344115, 0.04344115, 0.04344115, 0.04344115, 0.00173619], [1516461900000, 0.04343, 0.04344115, 0.04342999, 0.04343, 1.48496273], [1516461960000, 0.04342999, 0.04380001, 0.04342999, 0.0438, 798.64164149], [1516462020000, 0.0438, 0.04380001, 0.0438, 0.0438, 445.11025852], [1516462080000, 0.0438, 0.043805, 0.0438, 0.0438, 135.54657397], [1516462140000, 0.0438, 0.04381, 0.0438, 0.0438, 273.27778946], [1516462200000, 0.0438, 0.04381, 0.0438, 0.0438, 97.84542678], [1516462260000, 0.0438, 0.043805, 0.0438, 0.0438, 35.93161206], [1516462320000, 0.04364899, 0.0438, 0.043581, 0.043581, 1.67043348], [1516462380000, 0.043159, 0.043159, 0.043159, 0.043159, 1.06138866], [1516462440000, 0.043523, 0.043523, 0.043518, 0.043518, 1.27628036], [1516462500000, 0.043159, 0.043694, 0.043159, 0.043694, 2.60300801], [1516462560000, 0.043518, 0.043674, 0.04330666, 0.043583, 6.90854573], [1516462620000, 0.04330752, 0.04330752, 0.04323233, 0.04323233, 0.22583571], [1516462680000, 0.04323233, 0.04323233, 0.04323233, 0.04323233, 0.39647875], [1516462740000, 0.04323233, 0.04390001, 0.04323233, 0.0439, 345.15701143], [1516462800000, 0.0439, 0.04390002, 0.04320001, 0.04369199, 34.36380704], [1516462860000, 0.04321016, 0.04321028, 0.04321016, 0.04321027, 1.52065718], [1516462980000, 0.04351017, 0.04351017, 0.04323043, 0.04323043, 1.84175533], [1516463040000, 0.04323043, 0.04323043, 0.04323043, 0.04323043, 0.0510301], [1516463100000, 0.04323043, 0.04366098, 0.04321042, 0.04321042, 2.74203697], [1516463160000, 0.04321058, 0.04321058, 0.04321058, 0.04321058, 0.06767845], [1516463220000, 0.043576, 0.043576, 0.04321058, 0.04321058, 31.08712186], [1516463280000, 0.04321058, 0.04321058, 0.04315901, 0.04321058, 7.10834613], [1516463340000, 0.04321058, 0.04321058, 0.04315901, 0.0432, 3.91530935], [1516463400000, 0.04315901, 0.04321058, 0.04315901, 0.04321058, 3.57991007], [1516463460000, 0.04321058, 0.04321058, 0.04321058, 0.04321058, 0.05109044], [1516463520000, 0.04321058, 0.04321058, 0.04321058, 0.04321058, 0.18864344], [1516463580000, 0.0432105, 0.04321058, 0.04315902, 0.04321058, 3.1133342], [1516463640000, 0.04315902, 0.04321058, 0.04315902, 0.04315902, 6.39162803], [1516463700000, 0.04321058, 0.04321058, 0.04321058, 0.04321058, 1.20821389], [1516463760000, 0.04315902, 0.04321058, 0.04315902, 0.04321058, 44.4023635], [1516463820000, 0.04321058, 0.04321058, 0.04321058, 0.04321058, 0.05109044], [1516463880000, 0.04315902, 0.04321058, 0.04315902, 0.04315902, 17.06110466], [1516463940000, 0.04315902, 0.04321058, 0.04315902, 0.04321058, 24.4652444], [1516464000000, 0.04364776, 0.04364776, 0.043159, 0.04339153, 3.81964512], [1516464060000, 0.04339153, 0.04339153, 0.04315901, 0.04315901, 0.29335699], [1516464120000, 0.04315908, 0.04342655, 0.04315908, 0.04339153, 6.17275739], [1516464180000, 0.04315916, 0.043668, 0.04315916, 0.04366781, 7.06981389], [1516464300000, 0.04317804, 0.04358289, 0.04317803, 0.04358289, 0.26463045], [1516464360000, 0.04357849, 0.04357849, 0.04324, 0.04324, 1.84532254], [1516464540000, 0.04320197, 0.04320201, 0.04315915, 0.04315915, 13.078175], [1516464600000, 0.04315915, 0.04324, 0.043159, 0.043159, 13.61549963], [1516464660000, 0.04324, 0.04355399, 0.04315901, 0.043537, 33.5384219], [1516464720000, 0.04352692, 0.043527, 0.04352692, 0.043527, 1.02315717], [1516464780000, 0.043512, 0.043512, 0.04313701, 0.04313701, 1.01820254], [1516464840000, 0.04318445, 0.04318445, 0.04313701, 0.04313701, 0.10026278], [1516464900000, 0.04342698, 0.04342698, 0.04342698, 0.04342698, 0.23027149], [1516464960000, 0.043418, 0.043418, 0.043418, 0.043418, 0.5], [1516465020000, 0.043418, 0.043418, 0.04313702, 0.04313702, 0.28276389], [1516465080000, 0.04313702, 0.04313702, 0.04313702, 0.04313702, 0.03477291], [1516465140000, 0.04313702, 0.04313702, 0.04313702, 0.04313702, 0.16161886], [1516465200000, 0.04313708, 0.04313708, 0.04313708, 0.04313708, 3.11929327], [1516465260000, 0.04313708, 0.043413, 0.04313708, 0.043408, 94.61473629], [1516465320000, 0.043413, 0.043413, 0.04313709, 0.04313709, 34.49855871], [1516465380000, 0.04313708, 0.04313708, 0.0431, 0.0431, 14.34046432], [1516465440000, 0.0431, 0.0431, 0.0431, 0.0431, 10.978452], [1516465500000, 0.0431, 0.0431, 0.0431, 0.0431, 0.23156899], [1516465560000, 0.0431, 0.0431, 0.0431, 0.0431, 0.08247548], [1516465620000, 0.0431, 0.04310001, 0.0431, 0.0431, 6.2846936], [1516465680000, 0.0431, 0.0431, 0.0431, 0.0431, 7.35669118], [1516465740000, 0.0431, 0.0431, 0.0431, 0.0431, 6.01747622], [1516465800000, 0.0431, 0.043342, 0.0431, 0.0431, 6.94609344], [1516465860000, 0.0431, 0.0431, 0.0431, 0.0431, 3.01170971], [1516465920000, 0.0431, 0.0431, 0.0431, 0.0431, 1.20770379], [1516465980000, 0.0431, 0.04330596, 0.0431, 0.04330596, 1.39962191], [1516466040000, 0.0431, 0.043296, 0.0431, 0.0431, 2.50699307], [1516466100000, 0.0431, 0.0431, 0.0431, 0.0431, 26.67796195], [1516466160000, 0.0431, 0.043276, 0.0431, 0.043276, 0.509442], [1516466220000, 0.04310001, 0.04310001, 0.0431, 0.0431, 24.27675168], [1516466280000, 0.04310002, 0.04310002, 0.0431, 0.0431, 4.60467586], [1516466340000, 0.04325991, 0.043295, 0.04325991, 0.04326499, 9.06559657], [1516466400000, 0.04326499, 0.043291, 0.0431, 0.043291, 11.31877619], [1516466460000, 0.043296, 0.04339419, 0.043296, 0.04339419, 0.96377676], [1516466520000, 0.04341785, 0.04341791, 0.04308798, 0.04341791, 14.42434522], [1516466580000, 0.0432, 0.0432, 0.0432, 0.0432, 1.34333316], [1516466640000, 0.0433093, 0.0433093, 0.04311232, 0.04311232, 3.47840313], [1516466700000, 0.04311244, 0.04356399, 0.04311244, 0.04356399, 3.24129776], [1516466760000, 0.04351884, 0.04351884, 0.04313483, 0.04313483, 1.15105312], [1516466820000, 0.04313482, 0.04313483, 0.04313482, 0.04313483, 0.67012731], [1516466940000, 0.04311485, 0.04311485, 0.04308798, 0.04308798, 10.96055081], [1516467000000, 0.04311485, 0.04356599, 0.04303, 0.04313268, 55.74019157], [1516467060000, 0.04303009, 0.04303009, 0.04300001, 0.04303009, 14.98013679], [1516467120000, 0.0430904, 0.0430924, 0.04303009, 0.0430924, 7.21843146], [1516467180000, 0.0430924, 0.04320513, 0.0430924, 0.04320513, 4.40158609], [1516467240000, 0.0430905, 0.04343458, 0.042965, 0.04313268, 7.62846611], [1516467300000, 0.042965, 0.04346602, 0.042965, 0.043, 8.35273142], [1516467360000, 0.04313662, 0.04326249, 0.04313053, 0.04326249, 0.62259466], [1516467420000, 0.04326249, 0.04346602, 0.0430111, 0.0430111, 3.75388346], [1516467480000, 0.04301109, 0.04325991, 0.04301109, 0.04325991, 0.12604388], [1516467540000, 0.04343238, 0.04346597, 0.0430111, 0.04346597, 0.87209518], [1516467600000, 0.04312836, 0.04346601, 0.04312835, 0.04312835, 9.67505134], [1516467660000, 0.04337773, 0.04337773, 0.04337773, 0.04337773, 0.04599202], [1516467720000, 0.04337773, 0.04338463, 0.04337773, 0.04338463, 0.38862738], [1516467780000, 0.04346599, 0.04346599, 0.04312835, 0.04312835, 1.1726294], [1516467840000, 0.04312835, 0.04332082, 0.04312835, 0.04332082, 11.11678898], [1516467900000, 0.04332082, 0.04346601, 0.04332082, 0.04346601, 3.21983055], [1516467960000, 0.043314, 0.04343017, 0.043314, 0.04343017, 0.71387019], [1516468020000, 0.043466, 0.04346601, 0.04345, 0.04345, 1.56927978], [1516468080000, 0.04345, 0.04346601, 0.04345, 0.04346601, 15.06853758], [1516468140000, 0.04346601, 0.04356599, 0.04345, 0.04345, 9.97465254], [1516468200000, 0.04345, 0.04345, 0.0434301, 0.0434301, 16.75963154], [1516468260000, 0.0434301, 0.0434301, 0.0434301, 0.0434301, 1.11512752], [1516468320000, 0.04319508, 0.04343008, 0.04317111, 0.04343008, 1.33249817], [1516468440000, 0.04312614, 0.04312614, 0.04312614, 0.04312614, 0.5], [1516468500000, 0.04301326, 0.04339996, 0.04301326, 0.04339996, 2.63514174], [1516468560000, 0.04301345, 0.04339995, 0.04301345, 0.04339995, 1.20886967], [1516468620000, 0.04301403, 0.04339993, 0.04301402, 0.04339993, 2.02758418], [1516468680000, 0.04303903, 0.04339988, 0.04303903, 0.043059, 10.69095472], [1516468740000, 0.04305912, 0.04339976, 0.0430591, 0.04339976, 0.28816799], [1516468800000, 0.04339994, 0.04339994, 0.04339979, 0.04339979, 0.30539752], [1516468860000, 0.04339979, 0.04339979, 0.0430821, 0.04316109, 3.05231775], [1516468920000, 0.0433892, 0.0433892, 0.04321087, 0.04321087, 0.30734848], [1516468980000, 0.04321086, 0.04321087, 0.04321086, 0.04321087, 0.37054057], [1516469040000, 0.04338672, 0.04338672, 0.04338672, 0.04338672, 0.05], [1516469100000, 0.04338499, 0.04338499, 0.04338491, 0.04338499, 1.78954772], [1516469160000, 0.04338399, 0.04338399, 0.04321087, 0.04338399, 1.23055737], [1516469220000, 0.04338399, 0.04338399, 0.04321089, 0.04338388, 1.41076952], [1516469280000, 0.04338388, 0.04338389, 0.04321121, 0.04338389, 8.4611595], [1516469340000, 0.04338399, 0.04338918, 0.04338399, 0.04338918, 2.67680546], [1516469400000, 0.04342801, 0.04342801, 0.04338918, 0.043428, 13.30580354], [1516469460000, 0.043428, 0.043428, 0.04328069, 0.04328069, 9.50677092], [1516469520000, 0.04321134, 0.043428, 0.04321134, 0.0433, 1.71781594], [1516469580000, 0.0433, 0.0433, 0.0433, 0.0433, 0.24999999], [1516469640000, 0.0433, 0.04342799, 0.0433, 0.04342799, 2.74495852], [1516469700000, 0.04342799, 0.04342799, 0.04342798, 0.04342799, 2.03886636], [1516469760000, 0.04342799, 0.043428, 0.04342799, 0.043428, 8.90636187], [1516469820000, 0.043428, 0.043428, 0.04321155, 0.04321155, 5.25995518], [1516469880000, 0.04342799, 0.043428, 0.04342799, 0.04342799, 11.031053], [1516469940000, 0.04342799, 0.04342799, 0.04342799, 0.04342799, 4.29920195], [1516470000000, 0.04342799, 0.043428, 0.04342799, 0.043428, 5.03630798], [1516470060000, 0.043428, 0.043428, 0.043428, 0.043428, 0.77778552], [1516470120000, 0.043428, 0.04343008, 0.04342799, 0.04343008, 12.01288588], [1516470180000, 0.04342821, 0.04356138, 0.04342801, 0.04342841, 8.4583902], [1516470240000, 0.04342851, 0.04342851, 0.04342851, 0.04342851, 0.08], [1516470300000, 0.04342831, 0.04356134, 0.04342831, 0.04356134, 0.80069932], [1516470360000, 0.04342861, 0.04342861, 0.04342861, 0.04342861, 0.6048079], [1516470420000, 0.04356129, 0.04356129, 0.04342801, 0.04343008, 1.33789705], [1516470480000, 0.04354999, 0.04354999, 0.04354126, 0.04354126, 0.596033], [1516470540000, 0.04343008, 0.04343008, 0.04343008, 0.04343008, 0.18041366], [1516470600000, 0.04343008, 0.04343008, 0.04342801, 0.04342801, 5.06235292], [1516470660000, 0.04342801, 0.04343003, 0.04342799, 0.04342799, 22.11417699], [1516470720000, 0.04323, 0.04323, 0.04321087, 0.04322998, 0.34775828], [1516470780000, 0.04322996, 0.04322996, 0.04321087, 0.04321087, 1.67282466], [1516470840000, 0.04321087, 0.04321087, 0.04312402, 0.04321086, 1.17766422], [1516470900000, 0.04321086, 0.04343004, 0.04312402, 0.04343004, 19.2842851], [1516470960000, 0.04343004, 0.04354125, 0.04343004, 0.04343004, 4.80916285], [1516471020000, 0.04343004, 0.04343005, 0.043157, 0.043157, 0.78892536], [1516471080000, 0.043157, 0.043157, 0.04312187, 0.04312187, 7.35678987], [1516471140000, 0.04315699, 0.04315699, 0.04315699, 0.04315699, 1.23383472], [1516471200000, 0.04315699, 0.04320015, 0.04310002, 0.04315697, 5.56489437], [1516471260000, 0.04310003, 0.04315697, 0.04310003, 0.04315696, 1.05930168], [1516471320000, 0.04315696, 0.04315696, 0.04315696, 0.04315696, 4.03781051], [1516471380000, 0.04315696, 0.04315697, 0.04310004, 0.04315697, 8.22567935], [1516471440000, 0.04315697, 0.04320012, 0.04314314, 0.04314314, 1.42979127], [1516471500000, 0.04310003, 0.04314313, 0.04310003, 0.04314313, 4.52003245], [1516471560000, 0.04314313, 0.04314314, 0.04312, 0.04314314, 0.63152251], [1516471620000, 0.04314314, 0.04314314, 0.04314314, 0.04314314, 0.00145258], [1516471680000, 0.0432774, 0.0433541, 0.0432774, 0.0433541, 0.44128201], [1516471740000, 0.0432774, 0.0432774, 0.0432774, 0.0432774, 0.02045399], [1516471800000, 0.0433541, 0.0433541, 0.0433541, 0.0433541, 5.40841386], [1516471860000, 0.0433835, 0.04338353, 0.0433541, 0.04338353, 7.67365063], [1516471920000, 0.04338353, 0.04342369, 0.04338353, 0.04342369, 0.12735286], [1516471980000, 0.04338353, 0.0434237, 0.04338353, 0.04338353, 1.70725429], [1516472040000, 0.04338353, 0.04338353, 0.04338353, 0.04338353, 1.86803591], [1516472100000, 0.04338353, 0.0434237, 0.04338353, 0.0434237, 2.51217573], [1516472160000, 0.04338353, 0.04338353, 0.0433541, 0.0433541, 4.69713691], [1516472220000, 0.04338353, 0.04338353, 0.0433541, 0.0433541, 2.24430021], [1516472280000, 0.0433835, 0.0433835, 0.0433541, 0.0433541, 0.09720087], [1516472340000, 0.0433835, 0.0433835, 0.0433541, 0.0433835, 0.77016115], [1516472400000, 0.0433541, 0.0433835, 0.0433541, 0.0433835, 0.33423279], [1516472460000, 0.0433835, 0.0433835, 0.0433541, 0.0433541, 0.2305044], [1516472520000, 0.0433541, 0.0433835, 0.0433541, 0.0433541, 0.19885629], [1516472580000, 0.0433641, 0.0433641, 0.0433541, 0.0433541, 1.04735671], [1516472640000, 0.0433541, 0.04338349, 0.0433541, 0.0433541, 3.80650661], [1516472700000, 0.0433541, 0.0433541, 0.04335409, 0.04335409, 4.89045268], [1516472760000, 0.0433, 0.04335405, 0.0433, 0.04335405, 0.05046204], [1516472820000, 0.04335, 0.04335, 0.04335, 0.04335, 0.02546191], [1516472880000, 0.04334999, 0.04341205, 0.04334999, 0.04338354, 159.49629316], [1516472940000, 0.0434237, 0.04362, 0.0434237, 0.0434237, 72.19647792], [1516473000000, 0.0434237, 0.0435, 0.0434237, 0.0434237, 0.8533171], [1516473060000, 0.0434237, 0.0434237, 0.04338353, 0.04338353, 5.42533887], [1516473120000, 0.04338353, 0.04349999, 0.04338353, 0.04338468, 9.57146545], [1516473180000, 0.04338468, 0.0434, 0.04338354, 0.04338354, 0.35314202], [1516473240000, 0.04338353, 0.04338355, 0.04338353, 0.04338354, 8.27682693], [1516473300000, 0.04338355, 0.04338355, 0.04338355, 0.04338355, 0.46100474], [1516473360000, 0.04338355, 0.04339997, 0.04338355, 0.04339997, 7.23010195], [1516473420000, 0.04338354, 0.04348353, 0.04338354, 0.04348353, 0.71188845], [1516473480000, 0.04348353, 0.04348353, 0.04338355, 0.04338355, 2.64065634], [1516473540000, 0.04338356, 0.04338356, 0.04338355, 0.04338355, 5.307], [1516473600000, 0.04338355, 0.04348299, 0.04338355, 0.04348299, 12.75804917], [1516473660000, 0.04348299, 0.04348299, 0.04338355, 0.04338355, 4.62112381], [1516473720000, 0.04338355, 0.04348298, 0.04338353, 0.04338353, 31.60585311], [1516473780000, 0.04338353, 0.04338353, 0.04338353, 0.04338353, 1.50259445], [1516473840000, 0.04338353, 0.04338353, 0.04338353, 0.04338353, 4.31698696], [1516473900000, 0.04338353, 0.04348295, 0.04338353, 0.04348295, 0.61684885], [1516473960000, 0.04348, 0.04348294, 0.04348, 0.04348, 2.8680604], [1516474020000, 0.04348294, 0.04348295, 0.04348, 0.04348, 3.0376736], [1516474080000, 0.04348, 0.04348, 0.04348, 0.04348, 0.15813934], [1516474140000, 0.04348, 0.04348299, 0.04348, 0.04348, 1.44055123], [1516474200000, 0.04348, 0.04348294, 0.04348, 0.04348294, 1.29265625], [1516474260000, 0.04348, 0.04348, 0.04348, 0.04348, 0.94745331], [1516474320000, 0.04348, 0.0434829, 0.04348, 0.04348, 7.509148], [1516474380000, 0.04348, 0.04348, 0.04348, 0.04348, 1.20018948], [1516474500000, 0.04348, 0.04348, 0.0432774, 0.0432774, 0.47995261], [1516474560000, 0.0432774, 0.04347996, 0.0432774, 0.04347996, 0.90462364], [1516474620000, 0.0432774, 0.0432774, 0.0432774, 0.0432774, 0.51005368], [1516474680000, 0.04337124, 0.04337124, 0.04337124, 0.04337124, 0.37103254], [1516474740000, 0.0432774, 0.0432774, 0.0432774, 0.0432774, 0.11345899], [1516474860000, 0.04332067, 0.04332067, 0.04332067, 0.04332067, 0.47721187], [1516474920000, 0.04332067, 0.04337115, 0.04321702, 0.04337115, 0.45195344], [1516474980000, 0.04332066, 0.04332066, 0.04332066, 0.04332066, 5.07806303], [1516475040000, 0.04321702, 0.04332066, 0.04321702, 0.04332066, 1.17191813], [1516475100000, 0.04332059, 0.04337124, 0.04332059, 0.04337123, 2.64106266], [1516475160000, 0.04321702, 0.0433712, 0.04310001, 0.04321701, 3.19797637], [1516475220000, 0.04321701, 0.04321701, 0.04321701, 0.04321701, 2.14604475], [1516475280000, 0.04321701, 0.04321701, 0.043217, 0.043217, 0.57419333], [1516475340000, 0.043217, 0.043217, 0.0431001, 0.04320812, 8.1063891], [1516475400000, 0.04320812, 0.04321689, 0.04320812, 0.04320812, 2.0201041], [1516475460000, 0.04320812, 0.0432168, 0.04320812, 0.0432168, 3.15424289], [1516475520000, 0.04321689, 0.04321689, 0.0432168, 0.0432168, 8.50012718], [1516475580000, 0.0432168, 0.0432168, 0.0432168, 0.0432168, 5.22996984], [1516475640000, 0.0432168, 0.0432168, 0.04321679, 0.0432168, 0.66894091], [1516475700000, 0.0432168, 0.0432168, 0.04321679, 0.0432168, 3.8610393], [1516475760000, 0.0432168, 0.0432168, 0.0432168, 0.0432168, 4.56470947], [1516475820000, 0.0432168, 0.0432168, 0.0432168, 0.0432168, 0.03886474], [1516475880000, 0.0432168, 0.0432168, 0.0432168, 0.0432168, 0.23376875], [1516475940000, 0.0432168, 0.0432168, 0.04321679, 0.0432168, 5.63409103], [1516476000000, 0.0432168, 0.0432168, 0.04321679, 0.0432168, 7.31524307], [1516476060000, 0.0432168, 0.0432168, 0.04321679, 0.0432168, 12.97046502], [1516476120000, 0.0432168, 0.0432168, 0.04321679, 0.04321679, 5.1706887], [1516476180000, 0.04321679, 0.0432168, 0.04321678, 0.0432168, 14.91211883], [1516476240000, 0.0432168, 0.0432168, 0.04310501, 0.04321679, 57.6795294], [1516476300000, 0.04321679, 0.04321679, 0.0431609, 0.04321679, 1.19471915], [1516476360000, 0.04321679, 0.04321679, 0.04321679, 0.04321679, 2.59634843], [1516476420000, 0.0432, 0.04321679, 0.0432, 0.0432, 0.96610989], [1516476480000, 0.04321679, 0.0432168, 0.04321679, 0.0432168, 5.45338883], [1516476540000, 0.0432168, 0.0432168, 0.0432168, 0.0432168, 3.39998523], [1516476600000, 0.0432168, 0.0432168, 0.04321679, 0.0432168, 1.62438831], [1516476660000, 0.0432168, 0.0432168, 0.04321679, 0.04321679, 6.86988256], [1516476720000, 0.0432168, 0.0432168, 0.04321679, 0.0432168, 2.76930076], [1516476780000, 0.0432168, 0.0432168, 0.0432168, 0.0432168, 0.03681915], [1516476840000, 0.0432168, 0.0432168, 0.0432168, 0.0432168, 31.3634176], [1516476900000, 0.04321689, 0.04321689, 0.04321681, 0.04321681, 0.98143196], [1516476960000, 0.04321681, 0.04321681, 0.04321681, 0.04321681, 0.30097183], [1516477020000, 0.04321688, 0.04321688, 0.04321688, 0.04321688, 0.07943175], [1516477080000, 0.04321688, 0.04321689, 0.04321681, 0.04321689, 13.01610339], [1516477140000, 0.043217, 0.043217, 0.043217, 0.043217, 0.02551098], [1516477200000, 0.04342154, 0.04342154, 0.04321701, 0.04342154, 3.46183828], [1516477260000, 0.04342154, 0.04342154, 0.04342154, 0.04342154, 0.12106582], [1516477320000, 0.04342154, 0.0434216, 0.04342154, 0.0434216, 5.08532314], [1516477380000, 0.0434216, 0.04347999, 0.0434216, 0.04342161, 24.73239224], [1516477440000, 0.04342161, 0.04342161, 0.0434216, 0.0434216, 0.509265], [1516477500000, 0.04342161, 0.04347998, 0.04342161, 0.04347998, 7.42158701], [1516477560000, 0.04342162, 0.04347998, 0.04342162, 0.04347998, 0.98511493], [1516477620000, 0.04347998, 0.0435, 0.04347998, 0.04348, 9.41232784], [1516477680000, 0.04348, 0.0435, 0.04342167, 0.04347997, 6.98069689], [1516477740000, 0.04347997, 0.0434801, 0.04347997, 0.0434801, 7.03036386], [1516477800000, 0.0434801, 0.04349989, 0.04348, 0.04348, 2.42492851], [1516477860000, 0.04348, 0.0435, 0.04348, 0.0435, 8.50760409], [1516477920000, 0.0435, 0.0435, 0.0435, 0.0435, 2.16380483], [1516477980000, 0.04350001, 0.04350001, 0.04350001, 0.04350001, 0.7], [1516478040000, 0.04350001, 0.04360998, 0.04350001, 0.04360998, 0.27392279], [1516478100000, 0.04350001, 0.043609, 0.04350001, 0.043609, 1.12006594], [1516478160000, 0.043605, 0.04360898, 0.043605, 0.04360503, 2.58961535], [1516478220000, 0.04360503, 0.04360504, 0.04360503, 0.04360504, 5.74969232], [1516478280000, 0.0436051, 0.04360995, 0.0436051, 0.04360995, 8.71374424], [1516478340000, 0.04360512, 0.04360512, 0.04360512, 0.04360512, 3.93356746], [1516478400000, 0.04360515, 0.04360995, 0.04360515, 0.04360517, 0.96324222], [1516478460000, 0.04360517, 0.04360995, 0.04360517, 0.04360995, 0.41698175], [1516478520000, 0.04360995, 0.04361, 0.04360995, 0.04360999, 12.18416606], [1516478580000, 0.04361, 0.04361, 0.04360999, 0.04360999, 8.99471133], [1516478640000, 0.04361, 0.04361, 0.04360999, 0.04361, 13.56912277], [1516478700000, 0.04361, 0.04361, 0.04361, 0.04361, 26.55380519], [1516478760000, 0.04361, 0.0437, 0.04360999, 0.04369999, 39.80557371], [1516478820000, 0.04369999, 0.04369999, 0.04366999, 0.04367, 11.79478318], [1516478880000, 0.0437, 0.0437, 0.04367, 0.0437, 25.50904084], [1516478940000, 0.04367, 0.0439, 0.04367, 0.0439, 57.74576516], [1516479000000, 0.04370002, 0.0439, 0.04370001, 0.0439, 24.64951124], [1516479060000, 0.0439, 0.04399381, 0.04370003, 0.04370004, 9.272678], [1516479120000, 0.04399381, 0.044, 0.04370004, 0.04370004, 4.35690091], [1516479180000, 0.044, 0.04400867, 0.04372617, 0.04385002, 6.03998977], [1516479240000, 0.0438, 0.0438, 0.04372617, 0.04372617, 0.36731631], [1516479300000, 0.04370025, 0.043897, 0.04370025, 0.043897, 0.72628306], [1516479360000, 0.043726, 0.043726, 0.04370001, 0.043726, 13.19397224], [1516479420000, 0.04389697, 0.04389697, 0.043726, 0.043726, 1.60679309], [1516479480000, 0.043726, 0.043726, 0.043726, 0.043726, 0.01927668], [1516479540000, 0.043726, 0.043726, 0.04370001, 0.04370001, 2.66529701], [1516479600000, 0.04370001, 0.0438968, 0.04370001, 0.04370001, 0.43160978], [1516479660000, 0.04370001, 0.04370001, 0.04370001, 0.04370001, 0.95021789], [1516479720000, 0.04370001, 0.04370001, 0.04370001, 0.04370001, 0.02522883], [1516479780000, 0.04370001, 0.04370001, 0.04370001, 0.04370001, 2.84237926], [1516479840000, 0.04370001, 0.04388, 0.04370001, 0.043722, 1.01963359], [1516479900000, 0.04373, 0.0438, 0.04373, 0.04373, 1.34433805], [1516479960000, 0.04373, 0.04379999, 0.04373, 0.04373, 1.68049841], [1516480020000, 0.04373, 0.04373, 0.04370001, 0.04370001, 1.30650421], [1516480080000, 0.04370001, 0.04378, 0.04370001, 0.04370001, 5.24758197], [1516480140000, 0.04370001, 0.0438, 0.04370001, 0.04370001, 73.52306173], [1516480200000, 0.04370001, 0.04379781, 0.04370001, 0.04371, 9.14746499], [1516480260000, 0.04371, 0.04379781, 0.04371, 0.04371, 1.25718619], [1516480320000, 0.04371, 0.0437978, 0.04371, 0.04371, 7.83579693], [1516480380000, 0.04371, 0.04371, 0.04361, 0.04361, 10.72775773], [1516480440000, 0.04361, 0.04361, 0.04361, 0.04361, 1.75011138], [1516480500000, 0.04361, 0.04361, 0.04361, 0.04361, 1.30856264], [1516480560000, 0.04361, 0.04361, 0.04361, 0.04361, 1.05928384], [1516480620000, 0.04361, 0.04361, 0.04361, 0.04361, 0.43823919], [1516480680000, 0.04361, 0.04370999, 0.04361, 0.04365, 1.30768135], [1516480740000, 0.04365, 0.04384112, 0.04365, 0.04384112, 27.83753123], [1516480800000, 0.04365002, 0.0438411, 0.04365, 0.04365, 1.82667632], [1516480860000, 0.04365, 0.04365, 0.04365, 0.04365, 0.41320369], [1516480920000, 0.043821, 0.04384112, 0.043781, 0.043781, 45.89799946], [1516480980000, 0.043801, 0.04389394, 0.04365, 0.04365, 14.26126078], [1516481040000, 0.04382591, 0.04389175, 0.04365, 0.04389175, 1.97996127], [1516481100000, 0.04389174, 0.044, 0.04382591, 0.044, 10.5815724], [1516481160000, 0.04365, 0.04365002, 0.04365, 0.04365, 1.09603002], [1516481220000, 0.04365, 0.04394666, 0.04361001, 0.04394666, 1.55140029], [1516481280000, 0.04394661, 0.04394662, 0.04392463, 0.04392463, 2.06925768], [1516481400000, 0.04363, 0.04392434, 0.04361412, 0.04392434, 20.72031142], [1516481460000, 0.04392424, 0.04392805, 0.04361412, 0.04361412, 18.64501977], [1516481520000, 0.04361412, 0.04392225, 0.04361412, 0.04361412, 5.78613059], [1516481580000, 0.04392574, 0.04393192, 0.04361412, 0.04361412, 2.0361158], [1516481640000, 0.0439253, 0.0439253, 0.04361412, 0.04361412, 8.11806789], [1516481700000, 0.04361412, 0.04391986, 0.04361412, 0.04391985, 1.8431324], [1516481760000, 0.04361412, 0.04361412, 0.04361412, 0.04361412, 12.44255691], [1516481820000, 0.04361412, 0.04389986, 0.04361412, 0.04361412, 8.62305043], [1516481880000, 0.04361412, 0.04361412, 0.04361412, 0.04361412, 0.02433898], [1516481940000, 0.04361412, 0.04389989, 0.043605, 0.04389989, 10.27373432], [1516482000000, 0.04389989, 0.04389989, 0.04361412, 0.04361412, 0.9738786], [1516482060000, 0.043605, 0.04389, 0.043605, 0.043605, 19.0441629], [1516482180000, 0.04361412, 0.04362, 0.0435, 0.0435, 3.80402642], [1516482240000, 0.04376, 0.04376, 0.04342218, 0.04342234, 0.587052], [1516482300000, 0.04342249, 0.04388768, 0.04342249, 0.04361398, 0.98274299], [1516482360000, 0.04361398, 0.04388687, 0.04342171, 0.04342171, 2.1386293], [1516482420000, 0.04342179, 0.04371097, 0.04342179, 0.04342214, 0.21317698], [1516482480000, 0.04342235, 0.04342235, 0.04342161, 0.04342161, 15.93133067], [1516482540000, 0.04372999, 0.04372999, 0.04342161, 0.04342161, 0.15928339], [1516482600000, 0.0437298, 0.0437298, 0.0437298, 0.0437298, 0.22867596], [1516482660000, 0.04342172, 0.04342172, 0.04342161, 0.04342161, 1.65749887], [1516482720000, 0.04342161, 0.04371, 0.04342161, 0.04342161, 0.74902913], [1516482780000, 0.04370999, 0.04370999, 0.04370999, 0.04370999, 0.3111564], [1516482840000, 0.04370999, 0.04370999, 0.04342162, 0.04342162, 0.0911], [1516482900000, 0.04342162, 0.04345, 0.04342162, 0.04342162, 6.251], [1516482960000, 0.04370999, 0.04378791, 0.04370999, 0.04378791, 1.03294281], [1516483020000, 0.04342198, 0.04342198, 0.04342198, 0.04342198, 0.30491994], [1516483080000, 0.04342198, 0.04348647, 0.04342198, 0.04348647, 1.3865087], [1516483140000, 0.04342161, 0.04348647, 0.04342161, 0.04348647, 0.8114331], [1516483200000, 0.04348647, 0.04348647, 0.04342161, 0.04348647, 0.74495604], [1516483380000, 0.04342161, 0.04348647, 0.04342161, 0.04348647, 84.90441325], [1516483500000, 0.04348645, 0.04348647, 0.04348645, 0.04348647, 3.0], [1516483560000, 0.04342161, 0.04348647, 0.04342161, 0.04348647, 4.21341891], [1516483680000, 0.04342161, 0.04342161, 0.04342161, 0.04342161, 4.75290081], [1516483740000, 0.04342161, 0.04348657, 0.04342161, 0.04348657, 78.16865279], [1516483800000, 0.04382359, 0.04382359, 0.04342161, 0.04342161, 5.43855455], [1516483860000, 0.04342898, 0.04342898, 0.04342898, 0.04342898, 0.14651737], [1516484040000, 0.04342898, 0.04342898, 0.04342898, 0.04342898, 0.58531643], [1516484100000, 0.04342898, 0.04342898, 0.04322592, 0.04322592, 0.6116287], [1516484160000, 0.04342898, 0.04342898, 0.04342898, 0.04342898, 0.03], [1516484220000, 0.04342898, 0.04342898, 0.04342898, 0.04342898, 0.013], [1516484340000, 0.04342898, 0.04342898, 0.04342898, 0.04342898, 0.72411641], [1516484400000, 0.04342898, 0.043556, 0.04342898, 0.043556, 1.27726862], [1516484460000, 0.04330006, 0.04357002, 0.04315907, 0.04315908, 25.89828616], [1516484520000, 0.04315909, 0.04315909, 0.04315909, 0.04315909, 0.02447346], [1516484580000, 0.04315909, 0.04315909, 0.04315909, 0.04315909, 1.44630782], [1516484640000, 0.04315931, 0.04315931, 0.04315931, 0.04315931, 0.2], [1516484760000, 0.0431591, 0.0431591, 0.0431591, 0.0431591, 0.4], [1516484820000, 0.0431591, 0.04355282, 0.04311758, 0.04311758, 0.18240694], [1516484880000, 0.04311758, 0.04349991, 0.04311758, 0.04349991, 20.09500316], [1516485000000, 0.04349387, 0.04349387, 0.043105, 0.043105, 1.16228157], [1516485060000, 0.04310501, 0.04310501, 0.04310501, 0.04310501, 0.1308235], [1516485120000, 0.04310501, 0.04310501, 0.04310501, 0.04310501, 0.0415597], [1516485180000, 0.04310501, 0.04310501, 0.04310501, 0.04310501, 0.38274762], [1516485240000, 0.04310508, 0.04310508, 0.04310508, 0.04310508, 0.01293693], [1516485360000, 0.04341935, 0.04341935, 0.04311081, 0.04311081, 0.52712183], [1516485420000, 0.04341708, 0.04341708, 0.04311078, 0.04311078, 0.29543674], [1516485480000, 0.04341718, 0.04341718, 0.04341501, 0.04341501, 1.27129106], [1516485540000, 0.04311135, 0.04311139, 0.04311135, 0.04311139, 0.35232554], [1516485720000, 0.04311139, 0.043415, 0.04311139, 0.043415, 1.11148244], [1516485900000, 0.04311078, 0.04312, 0.04311078, 0.04312, 0.50954888], [1516485960000, 0.04325593, 0.04325593, 0.04312, 0.04325593, 1.72885941], [1516486020000, 0.04325592, 0.04325593, 0.04325592, 0.04325592, 3.74269934], [1516486080000, 0.04325592, 0.04325592, 0.04312505, 0.04312505, 8.07295695], [1516486140000, 0.04312505, 0.04312505, 0.04312505, 0.04312505, 0.24347797], [1516486200000, 0.04312505, 0.04312505, 0.04312, 0.04312, 4.00547159], [1516486260000, 0.04312505, 0.04312505, 0.04312505, 0.04312505, 3.61643614], [1516486320000, 0.04312, 0.04312505, 0.04312, 0.04312, 4.74949426], [1516486380000, 0.04312, 0.04312505, 0.04312, 0.04312, 4.58643635], [1516486440000, 0.04312001, 0.04341936, 0.04312, 0.04341936, 1.71892893], [1516486560000, 0.04312001, 0.04312001, 0.04312001, 0.04312001, 0.36060033], [1516486620000, 0.04312, 0.04312, 0.04312, 0.04312, 0.3847475], [1516486680000, 0.04312, 0.04312, 0.04312, 0.04312, 0.17247244], [1516486800000, 0.04326967, 0.04341936, 0.04312, 0.04312, 6.79059417], [1516486920000, 0.04312, 0.04312, 0.04312, 0.04312, 1.81278902], [1516486980000, 0.04312, 0.04312, 0.04312, 0.04312, 0.02556818], [1516487280000, 0.04312, 0.04312, 0.04312, 0.04312, 0.02556818], [1516487340000, 0.04312, 0.04312, 0.04312, 0.04312, 0.02556818], [1516487400000, 0.04341936, 0.04341936, 0.04341936, 0.04341936, 0.04594725], [1516487460000, 0.04312, 0.04312, 0.04312, 0.04312, 0.14216782], [1516487520000, 0.04312, 0.04341934, 0.04312, 0.04312, 0.45113636], [1516487580000, 0.0431201, 0.04341933, 0.0431201, 0.04341933, 0.87654694], [1516487640000, 0.04312011, 0.04312011, 0.04312011, 0.04312011, 0.3138422], [1516487700000, 0.0431201, 0.04322276, 0.0431201, 0.04322276, 0.52648265], [1516487760000, 0.04322276, 0.04322276, 0.0431201, 0.0431201, 1.32575128], [1516487820000, 0.04322276, 0.04322276, 0.04322276, 0.04322276, 2.3398457], [1516487880000, 0.04322276, 0.04345, 0.0431201, 0.0431201, 1.26563308], [1516487940000, 0.0431201, 0.04322276, 0.0431201, 0.04322276, 0.54076933], [1516488000000, 0.0431201, 0.04345, 0.0431201, 0.04345, 1.54276874], [1516488060000, 0.04345, 0.04345, 0.0431201, 0.04345, 0.73363271], [1516488120000, 0.04345, 0.04345, 0.04345, 0.04345, 0.62937], [1516488180000, 0.04328505, 0.04328505, 0.04328505, 0.04328505, 0.03192593], [1516488240000, 0.04312011, 0.04312011, 0.04312011, 0.04312011, 0.04994776], [1516488360000, 0.04322, 0.04322, 0.04322, 0.04322, 0.0327], [1516488420000, 0.04347773, 0.04353207, 0.04347773, 0.04353207, 0.70679807], [1516488480000, 0.04353181, 0.04353181, 0.04353144, 0.04353144, 0.09752036], [1516488540000, 0.04349981, 0.04349981, 0.04349981, 0.04349981, 0.97285155], [1516488600000, 0.04322, 0.04349973, 0.04322, 0.04349973, 0.08424468], [1516488660000, 0.04322, 0.04322, 0.04322, 0.04322, 0.03016457], [1516488720000, 0.04335986, 0.04349965, 0.04335986, 0.04335986, 2.10757438], [1516488780000, 0.04349957, 0.04349957, 0.04322, 0.04349949, 0.69910756], [1516488840000, 0.04349941, 0.04349941, 0.04349941, 0.04349941, 0.054], [1516488900000, 0.04315836, 0.04315836, 0.043158, 0.043158, 0.07708266], [1516488960000, 0.04315796, 0.04349843, 0.04315796, 0.04349843, 0.27108158], [1516489020000, 0.0431202, 0.04349825, 0.0431202, 0.04349815, 16.46966836], [1516489080000, 0.04312011, 0.04312015, 0.04312011, 0.04312015, 0.26701597], [1516489140000, 0.0431203, 0.0431203, 0.0431203, 0.0431203, 0.1], [1516489200000, 0.043497, 0.043497, 0.04312042, 0.04312042, 0.34355299], [1516489260000, 0.04312041, 0.0434965, 0.04312041, 0.04349641, 0.84550546], [1516489320000, 0.043494, 0.043494, 0.04349383, 0.04349383, 9.33388816], [1516489380000, 0.04312025, 0.04349981, 0.04312025, 0.04348948, 8.9699591], [1516489440000, 0.04312168, 0.04349962, 0.04312168, 0.04349962, 0.11921514], [1516489500000, 0.04312173, 0.04312182, 0.04312173, 0.04312182, 0.04429493], [1516489560000, 0.0432, 0.0433296, 0.0432, 0.0433296, 0.16220368], [1516489620000, 0.04349877, 0.04349877, 0.0432, 0.0432, 0.3204255], [1516489680000, 0.0432, 0.0432, 0.0432, 0.0432, 3.33303422], [1516489860000, 0.04348984, 0.04348984, 0.04348984, 0.04348984, 0.21952091], [1516489920000, 0.04335113, 0.04335113, 0.04322502, 0.04322502, 2.32646052], [1516489980000, 0.04312123, 0.04312247, 0.04312123, 0.04312247, 1.85441174], [1516490100000, 0.04312435, 0.04312435, 0.04312435, 0.04312435, 0.02844446], [1516490160000, 0.04348846, 0.04348846, 0.04348846, 0.04348846, 0.02324262], [1516490220000, 0.04348833, 0.04348833, 0.04348833, 0.04348833, 0.0391144], [1516490280000, 0.04312456, 0.04339998, 0.04312455, 0.04339998, 1.63538637], [1516490340000, 0.04329998, 0.0433, 0.04329998, 0.0433, 1.61242534], [1516490400000, 0.04312457, 0.04312457, 0.04312457, 0.04312457, 0.07946571], [1516490460000, 0.0431246, 0.04312461, 0.0431246, 0.04312461, 1.54841344], [1516490520000, 0.04329996, 0.0433, 0.04329996, 0.0433, 8.36475259], [1516490580000, 0.04336348, 0.04336348, 0.0433, 0.0433, 0.92046552], [1516490640000, 0.04312474, 0.04312474, 0.04312474, 0.04312474, 0.80196522], [1516490700000, 0.04312474, 0.04312474, 0.04312474, 0.04312474, 1.15861601], [1516490760000, 0.04312474, 0.04312474, 0.04312474, 0.04312474, 4.36673438], [1516490820000, 0.04312456, 0.04312456, 0.04312456, 0.04312456, 0.06609001], [1516490880000, 0.0433, 0.0433, 0.0433, 0.0433, 0.06977068], [1516490940000, 0.04321231, 0.04321231, 0.04321231, 0.04321231, 0.05721393], [1516491000000, 0.0432123, 0.0432123, 0.04312456, 0.0432123, 2.2004079], [1516491060000, 0.04312456, 0.0434, 0.04312456, 0.04315002, 0.68398036], [1516491120000, 0.04339999, 0.04339999, 0.04312456, 0.04312456, 0.95342995], [1516491180000, 0.04339999, 0.04339999, 0.04339999, 0.04339999, 0.0576402], [1516491240000, 0.04315148, 0.04315148, 0.04315148, 0.04315148, 0.1590613], [1516491300000, 0.04315283, 0.04340999, 0.04315283, 0.0432, 1.00085159], [1516491420000, 0.04341, 0.04341, 0.0432, 0.0432, 0.33095849], [1516491480000, 0.0432004, 0.0432004, 0.0432004, 0.0432004, 0.0421], [1516491540000, 0.04340998, 0.04340998, 0.0432006, 0.0432006, 0.53565333], [1516491660000, 0.0432003, 0.0432003, 0.0432003, 0.0432003, 0.09980766], [1516491720000, 0.04320074, 0.04329694, 0.04320074, 0.0432011, 8.34305784], [1516491780000, 0.0432969, 0.0432969, 0.0432969, 0.0432969, 0.87300155], [1516491840000, 0.0432969, 0.04340996, 0.04320101, 0.04320162, 3.72490113], [1516491900000, 0.04320122, 0.04340995, 0.04320122, 0.04340995, 1.39829681], [1516491960000, 0.04340995, 0.04341, 0.04340995, 0.04341, 3.25950846], [1516492020000, 0.0432051, 0.0435, 0.0432051, 0.0435, 1.28645654], [1516492080000, 0.0435, 0.0435, 0.04340999, 0.04340999, 1.91664672], [1516492140000, 0.04320275, 0.04320317, 0.04320275, 0.04320317, 0.93063455], [1516492200000, 0.04349999, 0.04355562, 0.04349999, 0.04355562, 3.97786381], [1516492260000, 0.04349999, 0.04355562, 0.04349999, 0.04349999, 1.46541748], [1516492320000, 0.04349999, 0.04355561, 0.04349999, 0.04355561, 0.26765813], [1516492380000, 0.04355561, 0.04355562, 0.04355561, 0.04355562, 3.54593754], [1516492440000, 0.04363395, 0.04363395, 0.04363395, 0.04363395, 0.0383897], [1516492500000, 0.04355562, 0.04363395, 0.04355562, 0.04363395, 0.37400213], [1516492560000, 0.04355562, 0.04363394, 0.04355562, 0.04355562, 11.14642301], [1516492620000, 0.04363389, 0.04363692, 0.04349999, 0.04355343, 13.01213434], [1516492680000, 0.04363687, 0.04363687, 0.04363681, 0.04363686, 1.12922698], [1516492740000, 0.0435, 0.04363691, 0.0435, 0.0436368, 0.90060492], [1516492800000, 0.0436368, 0.0437, 0.04350001, 0.04369994, 3.9012291], [1516492860000, 0.04369989, 0.0437, 0.04350003, 0.04369995, 1.96858206], [1516492920000, 0.0437, 0.044, 0.04369996, 0.044, 103.5291722], [1516492980000, 0.04399983, 0.044, 0.04399974, 0.044, 13.88098073], [1516493100000, 0.044, 0.044, 0.04368213, 0.04368213, 1.77101436], [1516493160000, 0.04368076, 0.04368076, 0.04368076, 0.04368076, 0.04229295], [1516493220000, 0.04368097, 0.04368107, 0.04368097, 0.04368107, 0.153566], [1516493280000, 0.044, 0.044, 0.04368066, 0.04368106, 34.27585517], [1516493340000, 0.04368077, 0.044, 0.04368067, 0.044, 1.78903215], [1516493400000, 0.04398634, 0.044, 0.04368259, 0.044, 2.63428335], [1516493460000, 0.04399999, 0.044, 0.04368263, 0.04368263, 0.71215316], [1516493520000, 0.04368278, 0.044, 0.04368278, 0.044, 11.43221064], [1516493580000, 0.044, 0.044, 0.04368066, 0.04368066, 31.15016345], [1516493640000, 0.04368066, 0.04398392, 0.04354407, 0.04398392, 2.0913527], [1516493700000, 0.04356501, 0.044, 0.04356501, 0.044, 5.71045784], [1516493760000, 0.044, 0.044, 0.04368345, 0.044, 30.04686116], [1516493820000, 0.04399999, 0.04399999, 0.04399999, 0.04399999, 0.0476754], [1516493880000, 0.04399999, 0.04399999, 0.04368509, 0.04399999, 3.51677694], [1516493940000, 0.04399998, 0.04399999, 0.04369111, 0.04369111, 1.78100752], [1516494000000, 0.04399999, 0.044, 0.04370602, 0.04370605, 17.58558363], [1516494060000, 0.04371601, 0.044, 0.04371601, 0.04372604, 19.76237802], [1516494120000, 0.044, 0.044183, 0.043736, 0.04400001, 18.70759263], [1516494180000, 0.04400001, 0.04416601, 0.04400001, 0.04400001, 1.12513304], [1516494240000, 0.04390827, 0.044195, 0.04375504, 0.04416602, 10.28555194], [1516494300000, 0.04416602, 0.04436176, 0.04416602, 0.04425, 10.2345691], [1516494360000, 0.04430919, 0.04449999, 0.04418137, 0.04419502, 27.81782042], [1516494420000, 0.04415543, 0.04437344, 0.04399904, 0.04418968, 8.05174356], [1516494480000, 0.04449997, 0.04449998, 0.04418964, 0.04425635, 36.3335012], [1516494540000, 0.04425635, 0.04449997, 0.04418964, 0.04449997, 11.37294381], [1516494600000, 0.04449996, 0.04449999, 0.04401402, 0.04401901, 18.33984427], [1516494660000, 0.04401402, 0.04405499, 0.04385786, 0.04385796, 45.71505467], [1516494720000, 0.0439, 0.04403901, 0.04387302, 0.04392, 7.97568351], [1516494780000, 0.04392, 0.04392, 0.04392, 0.04392, 0.8177107], [1516494840000, 0.04393, 0.0442043, 0.04392501, 0.0442043, 1.58529125], [1516494900000, 0.04420431, 0.04421615, 0.04417797, 0.04421615, 4.17201479], [1516494960000, 0.04428944, 0.04430689, 0.04428944, 0.04430199, 0.25330615], [1516495020000, 0.04392004, 0.04392004, 0.04392004, 0.04392004, 0.10011041], [1516495080000, 0.04392504, 0.04392504, 0.04392504, 0.04392504, 0.17658254], [1516495140000, 0.04392505, 0.04392505, 0.04392505, 0.04392505, 0.1965], [1516495200000, 0.04392504, 0.04425899, 0.043731, 0.043731, 12.71384678], [1516495260000, 0.04374108, 0.044234, 0.04374108, 0.044229, 15.73574772], [1516495440000, 0.04389229, 0.04389229, 0.043786, 0.043786, 1.30575252], [1516495500000, 0.04374138, 0.04416596, 0.04374138, 0.04374138, 1.40421835], [1516495560000, 0.04374138, 0.04374138, 0.04334003, 0.04334003, 22.0], [1516495620000, 0.04374138, 0.04374138, 0.04374138, 0.04374138, 5.38149411], [1516495680000, 0.04374138, 0.04374138, 0.04374138, 0.04374138, 0.42478166], [1516495740000, 0.04374138, 0.04374138, 0.04374138, 0.04374138, 1.92268222], [1516495800000, 0.0437412, 0.04374139, 0.0437412, 0.04374139, 0.93567065], [1516495860000, 0.04374138, 0.04374139, 0.04374138, 0.04374139, 6.96151427], [1516495920000, 0.04374139, 0.0437414, 0.04374134, 0.0437414, 8.04696936], [1516495980000, 0.043934, 0.04393888, 0.0436, 0.04393881, 6.47244557], [1516496040000, 0.04360001, 0.04360001, 0.0436, 0.0436, 5.19797976], [1516496100000, 0.04393831, 0.04393831, 0.04344918, 0.04344919, 14.43037736], [1516496160000, 0.04344924, 0.04344924, 0.04344919, 0.04344921, 2.6293067], [1516496220000, 0.04344932, 0.04344932, 0.04344931, 0.04344931, 2.30824273], [1516496280000, 0.04354139, 0.04354139, 0.04344921, 0.04344941, 1.94685564], [1516496340000, 0.04344941, 0.04344941, 0.04344941, 0.04344941, 10.02885822], [1516496400000, 0.04344941, 0.04354133, 0.04344941, 0.04344941, 6.26921561], [1516496460000, 0.04354133, 0.043542, 0.04334, 0.04334007, 62.04050146], [1516496520000, 0.04334, 0.04334, 0.04334, 0.04334, 7.8282508], [1516496580000, 0.04334, 0.0433695, 0.04334, 0.04334, 21.79655494], [1516496640000, 0.04334, 0.04336955, 0.04334, 0.04336955, 3.82858139], [1516496700000, 0.04334, 0.04336954, 0.04334, 0.04334, 2.93506342], [1516496760000, 0.04334, 0.04336952, 0.04334, 0.04336952, 19.9032618], [1516496820000, 0.04336952, 0.0435065, 0.04334, 0.04334, 14.29955198], [1516496880000, 0.04334, 0.04334001, 0.04334, 0.04334001, 1.22202436], [1516496940000, 0.04334, 0.04334, 0.04334, 0.04334, 10.914], [1516497000000, 0.04334, 0.04355596, 0.04334, 0.04355596, 0.32114563], [1516497060000, 0.04334, 0.043341, 0.04334, 0.043341, 0.09151176], [1516497120000, 0.043341, 0.04374986, 0.043341, 0.04374986, 27.7725921], [1516497180000, 0.043341, 0.04366621, 0.043341, 0.04366621, 9.68175053], [1516497240000, 0.04335693, 0.04335693, 0.04335693, 0.04335693, 0.16031097], [1516497300000, 0.04335692, 0.04335693, 0.04335692, 0.04335693, 7.81981481], [1516497360000, 0.04365613, 0.04365613, 0.04365613, 0.04365613, 0.01411919], [1516497420000, 0.043341, 0.043341, 0.043341, 0.043341, 0.30529549], [1516497480000, 0.043341, 0.043341, 0.043341, 0.043341, 0.02109386], [1516497540000, 0.043341, 0.043341, 0.043341, 0.043341, 2.44881104], [1516497600000, 0.04365601, 0.04365601, 0.04334001, 0.04334001, 0.241974], [1516497720000, 0.04334001, 0.04365017, 0.04334, 0.04334, 5.66235638], [1516497780000, 0.04334005, 0.04364788, 0.04334005, 0.0435001, 0.73397704], [1516497840000, 0.0435001, 0.0435001, 0.0435001, 0.0435001, 1.00062357], [1516497900000, 0.0435001, 0.0435001, 0.0435001, 0.0435001, 0.75280539], [1516497960000, 0.0435001, 0.04365599, 0.0435001, 0.0435001, 9.76292886], [1516498080000, 0.0435001, 0.0435001, 0.0435001, 0.0435001, 2.63195296], [1516498140000, 0.0435001, 0.04365591, 0.0434255, 0.04365591, 5.16210995], [1516498200000, 0.04334009, 0.04334009, 0.04334, 0.04334, 21.19790912], [1516498320000, 0.04334001, 0.04365498, 0.04334, 0.04365498, 0.4014195], [1516498380000, 0.04334001, 0.04334001, 0.04334001, 0.04334001, 0.023553], [1516498560000, 0.04334003, 0.04334003, 0.04334, 0.04334, 20.19746866], [1516498620000, 0.04349499, 0.043495, 0.04349499, 0.043495, 2.9354065], [1516498740000, 0.04349499, 0.04349499, 0.04334, 0.04334, 4.02372742], [1516498800000, 0.04334, 0.04349499, 0.04334, 0.04334, 2.15628256], [1516498860000, 0.04349499, 0.04349499, 0.04334, 0.04334, 9.8109], [1516498920000, 0.04334, 0.04334, 0.04334, 0.04334, 0.02313106], [1516498980000, 0.04334, 0.04349498, 0.04334, 0.04349498, 4.41361134], [1516499040000, 0.04334, 0.04334, 0.04334, 0.04334, 0.92621475], [1516499100000, 0.04334, 0.04334, 0.04334, 0.04334, 0.12758], [1516499160000, 0.04334, 0.04349498, 0.04334, 0.04349498, 0.6267616], [1516499220000, 0.04334, 0.04334, 0.04334, 0.04334, 0.02018343], [1516499280000, 0.04334001, 0.04334001, 0.04334, 0.04334, 0.23725654], [1516499340000, 0.04334, 0.04334, 0.04334, 0.04334, 0.05928858], [1516499400000, 0.04349497, 0.04349497, 0.04349497, 0.04349497, 0.3123574], [1516499460000, 0.04349497, 0.04349497, 0.04349497, 0.04349497, 0.44771867], [1516499520000, 0.04349497, 0.04349497, 0.04349497, 0.04349497, 0.40533307], [1516499580000, 0.04334, 0.04349497, 0.04334, 0.04349497, 0.466647], [1516499760000, 0.04349497, 0.04349497, 0.04349497, 0.04349497, 4.0], [1516499820000, 0.04349399, 0.04349399, 0.04334001, 0.04334001, 0.10466193], [1516499880000, 0.04334001, 0.04334001, 0.04334, 0.04334, 7.93070586], [1516499940000, 0.04334, 0.04334, 0.04334, 0.04334, 1.67346342], [1516500000000, 0.04334, 0.04334001, 0.04334, 0.04334, 3.49583234], [1516500060000, 0.04334, 0.04334001, 0.04334, 0.04334001, 23.12033944], [1516500120000, 0.04334, 0.04334001, 0.04334, 0.04334, 53.12724897], [1516500180000, 0.04334, 0.04334001, 0.0433, 0.0433, 18.32724238], [1516500240000, 0.0433, 0.0433, 0.0433, 0.0433, 0.68323776], [1516500300000, 0.0433, 0.0433, 0.04322601, 0.04322601, 2.99347653], [1516500360000, 0.04322601, 0.04322601, 0.04318, 0.04318, 0.41787408], [1516500480000, 0.04334, 0.04334, 0.0431801, 0.0431801, 0.36548576], [1516500540000, 0.04334, 0.04334, 0.04312002, 0.04312455, 13.79219516], [1516500600000, 0.0431245, 0.04330436, 0.04312001, 0.04330436, 8.23828446], [1516500660000, 0.04330436, 0.04333999, 0.04312, 0.04333999, 54.31612803], [1516500720000, 0.04312, 0.04312, 0.04297399, 0.042974, 101.5134996], [1516500780000, 0.042974, 0.042974, 0.04297399, 0.04297399, 6.53967651], [1516500840000, 0.04297399, 0.04297399, 0.04297399, 0.04297399, 0.23750992], [1516500900000, 0.04297399, 0.04307697, 0.04297399, 0.04297399, 15.18891749], [1516500960000, 0.04304656, 0.0432811, 0.04297398, 0.0432811, 8.0251976], [1516501020000, 0.043281, 0.043281, 0.043281, 0.043281, 0.01577532], [1516501200000, 0.04328066, 0.04328066, 0.04328061, 0.04328061, 0.05091206], [1516501260000, 0.04328059, 0.04328059, 0.04294508, 0.04294508, 0.13896771], [1516501320000, 0.04328051, 0.04328061, 0.04295526, 0.04295526, 6.01157644], [1516501380000, 0.04328034, 0.04328035, 0.04328034, 0.04328035, 0.14787311], [1516501440000, 0.04295539, 0.0432803, 0.04295527, 0.04328028, 1.05005836], [1516501500000, 0.0429554, 0.04328024, 0.04295527, 0.04295527, 2.1469098], [1516501560000, 0.04295528, 0.04328012, 0.04295527, 0.04328012, 1.4826636], [1516501620000, 0.04295529, 0.04295534, 0.04295526, 0.04295526, 5.14865826], [1516501680000, 0.04295526, 0.04295526, 0.04295526, 0.04295526, 2.16443579], [1516501800000, 0.04295526, 0.04295526, 0.04295526, 0.04295526, 0.33872832], [1516501860000, 0.04326372, 0.04326372, 0.04326372, 0.04326372, 0.01544963], [1516501920000, 0.04295526, 0.04295526, 0.04295526, 0.04295526, 0.10319662], [1516501980000, 0.04295526, 0.04295526, 0.04295526, 0.04295526, 0.0731273], [1516502040000, 0.04299, 0.04299, 0.04295526, 0.04299, 3.66796145], [1516502100000, 0.04299, 0.04299, 0.04298999, 0.04299, 9.93431693], [1516502160000, 0.04295537, 0.04299, 0.04290501, 0.04298999, 9.37408995], [1516502220000, 0.04298999, 0.04298999, 0.04298999, 0.04298999, 1.2895864], [1516502280000, 0.04299899, 0.04299899, 0.04287948, 0.04287948, 5.29741836], [1516502340000, 0.04299898, 0.04299898, 0.04299895, 0.04299895, 0.1847616], [1516502400000, 0.04299894, 0.04299894, 0.04285, 0.04293921, 11.15169439], [1516502460000, 0.04291921, 0.04291921, 0.0429192, 0.0429192, 1.72199214], [1516502520000, 0.04285, 0.04285, 0.04285, 0.04285, 6.15028457], [1516502580000, 0.04285061, 0.04293921, 0.04285061, 0.04293921, 2.06918039], [1516502640000, 0.042856, 0.042856, 0.042856, 0.042856, 0.15557673], [1516502700000, 0.042854, 0.04320401, 0.042854, 0.04285401, 13.14355914], [1516502760000, 0.04295403, 0.04322074, 0.04295403, 0.04295403, 0.07178932], [1516502880000, 0.04302347, 0.04302347, 0.04295402, 0.04295402, 8.53558313], [1516502940000, 0.04285062, 0.04311891, 0.04285062, 0.04311891, 9.9384293], [1516503000000, 0.04311899, 0.043207, 0.04285063, 0.0428561, 12.40920073], [1516503060000, 0.042866, 0.04323798, 0.04286102, 0.04323798, 5.26856039], [1516503120000, 0.04286901, 0.04321399, 0.04286901, 0.04287401, 21.1140026], [1516503180000, 0.04286903, 0.04286903, 0.04286903, 0.04286903, 7.798656], [1516503240000, 0.04285062, 0.04286903, 0.04285001, 0.04285001, 6.39268514], [1516503300000, 0.04285001, 0.04317259, 0.04285001, 0.04285501, 1.55089201], [1516503360000, 0.04317244, 0.04317245, 0.04317244, 0.04317245, 1.0], [1516503420000, 0.04285511, 0.04317242, 0.04285511, 0.04317242, 1.36680189], [1516503480000, 0.04285512, 0.04285514, 0.04285512, 0.04285514, 0.50982236], [1516503540000, 0.04286005, 0.04295636, 0.04286005, 0.04287745, 0.59774901], [1516503600000, 0.0431722, 0.043244, 0.0431722, 0.043244, 7.0], [1516503660000, 0.04317219, 0.04317219, 0.04317219, 0.04317219, 0.01619794], [1516503720000, 0.04317219, 0.04317219, 0.04287198, 0.04317219, 0.06188431], [1516503900000, 0.04317218, 0.04317218, 0.04317218, 0.04317218, 0.79366215], [1516503960000, 0.04287005, 0.04287005, 0.04287005, 0.04287005, 1.10018807], [1516504020000, 0.04317219, 0.04317219, 0.04317217, 0.04317218, 1.23580261], [1516504080000, 0.04317218, 0.04317219, 0.043, 0.043, 0.78009413], [1516504140000, 0.04287012, 0.043, 0.04287012, 0.043, 1.22650493], [1516504200000, 0.043, 0.04327997, 0.04288504, 0.04288504, 13.15562346], [1516504260000, 0.04327409, 0.04334001, 0.04327408, 0.04334001, 12.15180591], [1516504320000, 0.04338491, 0.04338491, 0.04315535, 0.04315535, 4.28319633], [1516504380000, 0.04292001, 0.04292001, 0.04292001, 0.04292001, 0.09570401], [1516504440000, 0.042975, 0.04299501, 0.042975, 0.042995, 4.57465419], [1516504500000, 0.04338465, 0.04338469, 0.04338465, 0.04338469, 0.230496], [1516504560000, 0.04293201, 0.04338463, 0.042932, 0.04338462, 1.29506749], [1516504680000, 0.04294206, 0.04294208, 0.04294206, 0.04294207, 4.75649835], [1516504740000, 0.04294207, 0.04294207, 0.04292501, 0.04292501, 5.48127898], [1516504800000, 0.042925, 0.04294207, 0.042925, 0.04294207, 0.25579404], [1516504860000, 0.04294207, 0.04294207, 0.04294207, 0.04294207, 7.95010227], [1516504920000, 0.042947, 0.042947, 0.042947, 0.042947, 0.0413], [1516504980000, 0.042947, 0.042947, 0.042947, 0.042947, 0.03728958], [1516505040000, 0.04294208, 0.04294208, 0.04294207, 0.04294207, 1.08803197], [1516505100000, 0.04294207, 0.04334072, 0.04294207, 0.04334072, 1.31218011], [1516505160000, 0.04334058, 0.04334058, 0.04334058, 0.04334058, 0.02], [1516505220000, 0.04333889, 0.04333898, 0.04333889, 0.04333898, 0.71819588], [1516505400000, 0.042947, 0.042947, 0.042947, 0.042947, 1.01112898], [1516505460000, 0.04332796, 0.04332796, 0.042935, 0.042935, 0.82472085], [1516505520000, 0.04311916, 0.04311916, 0.04311916, 0.04311916, 0.47085948], [1516505580000, 0.04311916, 0.04319999, 0.04311916, 0.04311916, 0.88975243], [1516505640000, 0.042935, 0.04311912, 0.04293, 0.04311912, 2.07637349], [1516505700000, 0.04293, 0.04293, 0.04293, 0.04293, 2.93727566], [1516505760000, 0.04293, 0.043, 0.042925, 0.042925, 1.80878005], [1516505820000, 0.042925, 0.0431191, 0.04285001, 0.0431191, 3.27502925], [1516505880000, 0.0430376, 0.04311916, 0.04286, 0.04286, 23.08249873], [1516505940000, 0.04311915, 0.04311915, 0.04311915, 0.04311915, 0.09180094], [1516506000000, 0.043, 0.04311915, 0.042831, 0.04311915, 18.45947464], [1516506060000, 0.04311915, 0.04311915, 0.04311915, 0.04311915, 2.9995501], [1516506120000, 0.04311915, 0.04311915, 0.04282335, 0.04282335, 17.30278104], [1516506180000, 0.04311915, 0.04311915, 0.04311793, 0.043118, 2.18508509], [1516506240000, 0.04311793, 0.04311916, 0.04311793, 0.04311916, 5.79931368], [1516506300000, 0.0428334, 0.0428336, 0.042833, 0.042833, 1.60995607], [1516506360000, 0.042833, 0.04311915, 0.04280005, 0.04311915, 0.55050882], [1516506420000, 0.042805, 0.043, 0.042805, 0.042805, 1.18850189], [1516506480000, 0.04311245, 0.04311245, 0.04311245, 0.04311245, 0.02421118], [1516506600000, 0.04311915, 0.04311915, 0.04311915, 0.04311915, 0.04512413], [1516506720000, 0.04311896, 0.04311916, 0.04311896, 0.04311916, 1.15668267], [1516506780000, 0.04311915, 0.04311916, 0.04311915, 0.04311916, 0.25778363], [1516506840000, 0.04311915, 0.04311915, 0.04281174, 0.04281174, 0.07495897], [1516506900000, 0.04280501, 0.04280501, 0.042805, 0.042805, 5.523169], [1516506960000, 0.04280005, 0.042805, 0.04280005, 0.042805, 6.3079458], [1516507020000, 0.04295, 0.04311902, 0.04295, 0.04295, 1.52941804], [1516507080000, 0.04295, 0.04295, 0.042722, 0.042722, 25.2437245], [1516507380000, 0.04283945, 0.04283945, 0.042726, 0.042726, 2.31891589], [1516507440000, 0.042726, 0.042726, 0.042722, 0.042722, 15.51866623], [1516507500000, 0.042722, 0.04283945, 0.04272142, 0.04272142, 23.5006837], [1516507560000, 0.04272142, 0.04283945, 0.04272142, 0.04272142, 6.50410463], [1516507620000, 0.04272142, 0.04283945, 0.04272142, 0.04283945, 7.48060025], [1516507680000, 0.04272142, 0.04286087, 0.04271338, 0.042715, 31.82251147], [1516507740000, 0.042715, 0.042715, 0.0427, 0.0427, 48.49360544], [1516507800000, 0.0427, 0.043012, 0.0427, 0.043012, 6.83768042], [1516507860000, 0.04300199, 0.04300199, 0.04300199, 0.04300199, 0.19139881], [1516507920000, 0.0427, 0.0427, 0.0427, 0.0427, 1.21699858], [1516507980000, 0.0427, 0.0427, 0.0427, 0.0427, 11.11326522], [1516508040000, 0.0427, 0.0427, 0.0427, 0.0427, 10.43990573], [1516508100000, 0.0427, 0.0427, 0.0427, 0.0427, 0.98371344], [1516508160000, 0.0427, 0.04299178, 0.0427, 0.0427002, 1.32227816], [1516508280000, 0.04299169, 0.04299169, 0.04299169, 0.04299169, 0.07661317], [1516508340000, 0.04299695, 0.04300199, 0.04299695, 0.04300199, 0.44082953], [1516508400000, 0.04300554, 0.04300554, 0.0427002, 0.0427002, 0.38809683], [1516508460000, 0.0427002, 0.04303983, 0.04270001, 0.04270001, 1.6487834], [1516508580000, 0.04289999, 0.04289999, 0.04289998, 0.04289998, 1.09899425], [1516508640000, 0.04289998, 0.04289998, 0.04289998, 0.04289998, 0.45674833], [1516508700000, 0.04289999, 0.0429, 0.04270007, 0.04270007, 8.69126375], [1516508760000, 0.04270007, 0.04270007, 0.04270007, 0.04270007, 0.52532663], [1516508820000, 0.04270007, 0.0429, 0.0427, 0.04289997, 11.16870182], [1516508880000, 0.04289997, 0.04289997, 0.04289997, 0.04289997, 0.08498366], [1516508940000, 0.04270007, 0.04270007, 0.04270007, 0.04270007, 0.04039363], [1516509000000, 0.04270007, 0.04289996, 0.04270007, 0.04289996, 1.19734838], [1516509060000, 0.04289996, 0.0429, 0.04289996, 0.0429, 0.06888995], [1516509120000, 0.04289999, 0.04289999, 0.04289999, 0.04289999, 1.5015466], [1516509180000, 0.04289999, 0.04289999, 0.0428, 0.04289999, 0.49888153], [1516509240000, 0.04289999, 0.04289999, 0.04289997, 0.04289997, 0.25042473], [1516509300000, 0.04270009, 0.043005, 0.0427, 0.0427, 6.21296252], [1516509420000, 0.04270021, 0.04270032, 0.0427, 0.0427, 1.11030968], [1516509480000, 0.0427, 0.04304, 0.0427, 0.04304, 6.19737079], [1516509540000, 0.04270136, 0.04270157, 0.04270136, 0.04270156, 26.11988429], [1516509600000, 0.0427, 0.04301017, 0.0427, 0.0427, 0.82447534], [1516509660000, 0.04299699, 0.04299699, 0.0427, 0.0427, 0.47132697], [1516509720000, 0.0427, 0.0427, 0.0427, 0.0427, 1.50273706], [1516509780000, 0.0427, 0.04298697, 0.0427, 0.04298697, 1.01304872], [1516509840000, 0.042987, 0.04298701, 0.04298697, 0.04298697, 0.51092317], [1516509900000, 0.04298697, 0.04298698, 0.0427, 0.04298698, 0.85232127], [1516509960000, 0.04298999, 0.04298999, 0.0427, 0.04270001, 12.06902109], [1516510020000, 0.04270001, 0.04270001, 0.0427, 0.04270001, 0.26437271], [1516510080000, 0.0427002, 0.0427002, 0.0427002, 0.0427002, 3.49988717], [1516510140000, 0.0427, 0.0427, 0.0427, 0.0427, 0.70890831], [1516510200000, 0.04295, 0.04295, 0.0427, 0.0427, 1.68327132], [1516510260000, 0.0427, 0.0427, 0.0427, 0.0427, 0.02515493], [1516510320000, 0.0427, 0.0427, 0.0427, 0.0427, 3.02834459], [1516510380000, 0.0427, 0.04299236, 0.0427, 0.04299236, 2.3926506], [1516510440000, 0.04282999, 0.04282999, 0.04282999, 0.04282999, 0.06123162], [1516510500000, 0.04282999, 0.04299232, 0.04282999, 0.04299232, 0.25329358], [1516510560000, 0.0427, 0.0427, 0.0427, 0.0427, 0.02385877], [1516510620000, 0.04299239, 0.04299239, 0.04299238, 0.04299238, 6.38093009], [1516510680000, 0.0427, 0.0427, 0.0427, 0.0427, 9.6721], [1516510740000, 0.04299238, 0.04299238, 0.04299238, 0.04299238, 0.08341234], [1516510800000, 0.04299238, 0.043035, 0.04270134, 0.04270134, 7.13267466], [1516510860000, 0.04270134, 0.04303994, 0.04270134, 0.04270244, 13.06565791], [1516510920000, 0.0427081, 0.04270856, 0.0427081, 0.04270856, 6.96060434], [1516510980000, 0.04270859, 0.04270859, 0.0427, 0.0427, 4.99858737], [1516511040000, 0.0427, 0.0427, 0.04266001, 0.0427, 8.10229122], [1516511100000, 0.04266001, 0.04301968, 0.04266001, 0.04266001, 20.81820901], [1516511160000, 0.04266001, 0.04266001, 0.04266001, 0.04266001, 3.53248328], [1516511220000, 0.04298494, 0.04298495, 0.04270222, 0.04270222, 0.5557317], [1516511340000, 0.04270222, 0.04270228, 0.04266001, 0.04270228, 0.46245542], [1516511400000, 0.04266001, 0.04270233, 0.04255, 0.04255, 8.61635794], [1516511460000, 0.04259762, 0.04259762, 0.042387, 0.04245364, 34.28208101], [1516511520000, 0.04245576, 0.04259762, 0.04231, 0.04259762, 9.29551773], [1516511580000, 0.04259761, 0.04260592, 0.04231999, 0.04244672, 5.35812863], [1516511640000, 0.0427008, 0.04275799, 0.042325, 0.042325, 6.8561791], [1516511700000, 0.042335, 0.042335, 0.042335, 0.042335, 4.09980402], [1516511760000, 0.04269292, 0.04301968, 0.04234501, 0.04234501, 15.33902346], [1516511820000, 0.04234501, 0.04234502, 0.04234501, 0.04234502, 5.67426644], [1516511880000, 0.04241782, 0.04241782, 0.04241782, 0.04241782, 0.06988915], [1516512000000, 0.0427107, 0.04273193, 0.0423101, 0.0423101, 4.29482938], [1516512060000, 0.04245365, 0.042717, 0.04245365, 0.042717, 11.56561082], [1516512180000, 0.042697, 0.042697, 0.04245365, 0.04269195, 0.23089036], [1516512240000, 0.04268199, 0.04268199, 0.042677, 0.042677, 0.932286], [1516512300000, 0.04268197, 0.04268197, 0.04245365, 0.04245365, 0.31539523], [1516512360000, 0.04266697, 0.04266697, 0.04266697, 0.04266697, 0.0361017], [1516512420000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 9.72274057], [1516512480000, 0.04245365, 0.04266696, 0.0423101, 0.042315, 2.92371358], [1516512540000, 0.042647, 0.042647, 0.04264699, 0.04264699, 8.30133422], [1516512600000, 0.04264688, 0.04264688, 0.04264686, 0.04264686, 0.21264139], [1516512660000, 0.04232006, 0.04264687, 0.042315, 0.04264687, 7.83203334], [1516512720000, 0.04264677, 0.04264687, 0.04231501, 0.04264672, 3.25232578], [1516512780000, 0.04231502, 0.04231502, 0.042315, 0.042315, 2.8], [1516512840000, 0.04264669, 0.042712, 0.042315, 0.042315, 15.85195766], [1516512900000, 0.04264873, 0.04264873, 0.042644, 0.042644, 0.53639781], [1516512960000, 0.04231507, 0.04264384, 0.042315, 0.042315, 3.12216445], [1516513020000, 0.0423101, 0.0423101, 0.0423101, 0.0423101, 0.13333333], [1516513080000, 0.04233, 0.04263994, 0.04233, 0.04263994, 0.15143852], [1516513140000, 0.04263994, 0.04263994, 0.04263994, 0.04263994, 0.03547029], [1516513200000, 0.04263994, 0.04263994, 0.04263993, 0.04263993, 0.39879575], [1516513320000, 0.042342, 0.04263991, 0.042342, 0.042426, 7.88650408], [1516513380000, 0.04234201, 0.04238401, 0.04233, 0.04238401, 7.81470283], [1516513440000, 0.04238401, 0.04238401, 0.04233, 0.04233, 1.53328143], [1516513500000, 0.042384, 0.042384, 0.0423101, 0.0423101, 9.41623478], [1516513560000, 0.0423102, 0.04263499, 0.0423102, 0.04232, 8.70091077], [1516513620000, 0.04231646, 0.04261661, 0.0423151, 0.0423151, 0.82242588], [1516513680000, 0.0423151, 0.0423151, 0.042315, 0.042315, 1.1112498], [1516513800000, 0.0423101, 0.042602, 0.0423101, 0.042602, 5.14757228], [1516513860000, 0.04237614, 0.04237614, 0.042273, 0.042273, 7.86311574], [1516513920000, 0.04230998, 0.04259294, 0.04230998, 0.04259199, 0.2887511], [1516513980000, 0.04258997, 0.04258998, 0.04258997, 0.04258998, 0.30209628], [1516514040000, 0.04230998, 0.04230998, 0.04230998, 0.04230998, 0.02784392], [1516514100000, 0.042579, 0.042579, 0.042579, 0.042579, 0.01468574], [1516514160000, 0.04256999, 0.04256999, 0.04256999, 0.04256999, 0.03459827], [1516514220000, 0.04252, 0.04252, 0.04252, 0.04252, 0.24638969], [1516514280000, 0.04251, 0.04251, 0.04251, 0.04251, 0.30130408], [1516514340000, 0.04230999, 0.04230999, 0.04230998, 0.04230998, 0.35715715], [1516514400000, 0.04250998, 0.04250998, 0.0422, 0.04247, 9.55617031], [1516514460000, 0.04247, 0.04247, 0.0422, 0.0422, 1.17392535], [1516514520000, 0.04239, 0.04239, 0.04238999, 0.04238999, 0.23634272], [1516514580000, 0.0422, 0.0422, 0.0422, 0.0422, 0.56019328], [1516514640000, 0.0422, 0.0422, 0.0422, 0.0422, 1.09725572], [1516514700000, 0.0422, 0.04235999, 0.0422, 0.04235998, 0.44697176], [1516514760000, 0.0422, 0.04235997, 0.0422, 0.04235997, 0.14504291], [1516514820000, 0.04235997, 0.04235997, 0.04235997, 0.04235997, 0.71760593], [1516514880000, 0.04235995, 0.04235995, 0.04235995, 0.04235995, 0.4349069], [1516514940000, 0.04220003, 0.04235996, 0.04220003, 0.04235996, 0.53817512], [1516515000000, 0.04235996, 0.04237999, 0.04235996, 0.04237998, 2.23871422], [1516515060000, 0.04235996, 0.04235996, 0.0422, 0.0422, 0.1202825], [1516515120000, 0.04220012, 0.0424, 0.04220012, 0.0424, 3.4385652], [1516515180000, 0.0424, 0.0424, 0.0424, 0.0424, 0.04227978], [1516515240000, 0.04239999, 0.0424, 0.04239999, 0.0424, 3.19571509], [1516515300000, 0.04239999, 0.0424, 0.04221231, 0.0424, 21.51199429], [1516515360000, 0.0424, 0.0424, 0.0422, 0.04239999, 1.15174866], [1516515420000, 0.042399, 0.04239999, 0.0422, 0.0422, 0.14839913], [1516515540000, 0.04220001, 0.04220001, 0.04220001, 0.04220001, 0.3], [1516515600000, 0.0422, 0.0424, 0.0421644, 0.04239999, 10.9674043], [1516515660000, 0.04218102, 0.04239999, 0.04218102, 0.04238888, 11.89666772], [1516515720000, 0.042387, 0.042387, 0.0421644, 0.042387, 2.25897143], [1516515780000, 0.042387, 0.04238888, 0.042387, 0.04238888, 1.47627019], [1516515840000, 0.04238888, 0.04238888, 0.04238888, 0.04238888, 0.49102741], [1516515900000, 0.04217, 0.0424, 0.04217, 0.04238888, 9.14512572], [1516515960000, 0.04238888, 0.04238888, 0.04213119, 0.04213119, 16.4040331], [1516516020000, 0.04238888, 0.04238888, 0.04238888, 0.04238888, 0.33123687], [1516516080000, 0.04213119, 0.04213119, 0.04213119, 0.04213119, 2.93928755], [1516516200000, 0.04213119, 0.04235, 0.04213119, 0.04213119, 0.96426644], [1516516260000, 0.04235, 0.04238842, 0.0421322, 0.0421322, 1.07095102], [1516516380000, 0.04213221, 0.04238841, 0.04213221, 0.04238841, 0.08099258], [1516516500000, 0.0422948, 0.0422948, 0.0422948, 0.0422948, 0.1042818], [1516516560000, 0.0421312, 0.0423883, 0.04213119, 0.0423883, 5.45125259], [1516516680000, 0.0421312, 0.0421312, 0.04202201, 0.04210009, 22.49966297], [1516516740000, 0.04238826, 0.04238826, 0.04238825, 0.04238825, 0.27076011], [1516516800000, 0.04238823, 0.04238824, 0.04238821, 0.04238821, 0.2280295], [1516516860000, 0.0423882, 0.0423883, 0.0423882, 0.0423883, 3.73827684], [1516516920000, 0.0423883, 0.04238835, 0.04238821, 0.04238835, 0.8902515], [1516516980000, 0.04238835, 0.04238835, 0.04238835, 0.04238835, 0.16546521], [1516517040000, 0.04237777, 0.04237777, 0.04237777, 0.04237777, 0.02958498], [1516517100000, 0.04235999, 0.04236, 0.04235999, 0.04236, 0.47214352], [1516517160000, 0.04235989, 0.04236, 0.04235989, 0.04236, 0.57334903], [1516517220000, 0.042357, 0.04236, 0.04235699, 0.04235699, 2.70622293], [1516517280000, 0.04235701, 0.04236, 0.0422, 0.0422, 1.44333352], [1516517340000, 0.04223302, 0.04236, 0.04223302, 0.04236, 3.69709994], [1516517400000, 0.04236, 0.04238888, 0.04236, 0.04238888, 9.3530324], [1516517460000, 0.04238888, 0.04238888, 0.04238888, 0.04238888, 5.83203837], [1516517520000, 0.04238888, 0.04249286, 0.04238888, 0.04249286, 0.90868673], [1516517580000, 0.04249286, 0.04249286, 0.04249286, 0.04249286, 0.17168566], [1516517640000, 0.04249286, 0.04256999, 0.042291, 0.04256999, 13.38625974], [1516517700000, 0.04253571, 0.04258998, 0.04227319, 0.04258997, 8.36390771], [1516517760000, 0.0422931, 0.04258998, 0.0422931, 0.04258998, 10.08212019], [1516517820000, 0.04228302, 0.042585, 0.042215, 0.04228302, 4.54628108], [1516517880000, 0.04238899, 0.042575, 0.042215, 0.0424389, 2.15769707], [1516517940000, 0.04257998, 0.04257998, 0.04225265, 0.04225265, 0.84614879], [1516518000000, 0.042561, 0.04257, 0.04256098, 0.04257, 0.46989168], [1516518060000, 0.042561, 0.042561, 0.042561, 0.042561, 0.01290992], [1516518120000, 0.04229278, 0.04257, 0.042225, 0.042225, 1.47154124], [1516518180000, 0.04224, 0.04255, 0.042042, 0.042042, 15.60379238], [1516518240000, 0.042205, 0.042205, 0.042205, 0.042205, 0.04121947], [1516518420000, 0.04248491, 0.04248491, 0.04248491, 0.04248491, 0.472303], [1516518480000, 0.042515, 0.042515, 0.042515, 0.042515, 0.047786], [1516518540000, 0.04209801, 0.042485, 0.04204307, 0.04247498, 17.55679795], [1516518600000, 0.04247497, 0.04247497, 0.04203901, 0.04245, 36.7082009], [1516518660000, 0.04205001, 0.04205001, 0.04205001, 0.04205001, 0.4735154], [1516518720000, 0.042432, 0.042432, 0.042407, 0.042407, 0.07459802], [1516518780000, 0.042057, 0.04238699, 0.042057, 0.04238699, 1.4098348], [1516518840000, 0.042057, 0.04238696, 0.0417777, 0.042, 113.0053004], [1516518900000, 0.042, 0.04240199, 0.042, 0.04238198, 2.8708592], [1516518960000, 0.04200005, 0.04229999, 0.041915, 0.04229999, 9.29091447], [1516519020000, 0.0423, 0.0423, 0.04195425, 0.04195425, 4.44326394], [1516519080000, 0.04195424, 0.04226839, 0.04180805, 0.04226839, 114.73312683], [1516519140000, 0.04186809, 0.04186809, 0.04186809, 0.04186809, 0.33679147], [1516519200000, 0.04220998, 0.04220998, 0.04186809, 0.041869, 1.3097341], [1516519260000, 0.041869, 0.04217997, 0.041869, 0.04186901, 4.2126827], [1516519320000, 0.04217995, 0.042199, 0.04186902, 0.04219899, 1.46897626], [1516519380000, 0.04219898, 0.04219898, 0.041869, 0.04207025, 5.69240768], [1516519440000, 0.04219647, 0.04225596, 0.04219647, 0.042241, 1.12468073], [1516519500000, 0.04224101, 0.04224101, 0.04220179, 0.04220179, 0.66734816], [1516519560000, 0.0422018, 0.0422018, 0.04186809, 0.04218703, 12.09267556], [1516519620000, 0.04189301, 0.042241, 0.041893, 0.042241, 10.34129739], [1516519680000, 0.04191404, 0.04191404, 0.04191404, 0.04191404, 1.2875282], [1516519740000, 0.04218701, 0.04218701, 0.041915, 0.04218701, 0.12411108], [1516519800000, 0.04218697, 0.04221162, 0.04191501, 0.04191502, 2.11943184], [1516519860000, 0.04191503, 0.04237213, 0.04191503, 0.042016, 11.81878421], [1516519920000, 0.0419152, 0.04235699, 0.0419152, 0.04191606, 1.29135089], [1516519980000, 0.042327, 0.042327, 0.04193611, 0.042317, 4.20585582], [1516520040000, 0.042317, 0.042342, 0.042023, 0.042048, 1.49851054], [1516520100000, 0.04205209, 0.04235385, 0.04204801, 0.04235385, 2.2899825], [1516520160000, 0.04205303, 0.04237099, 0.042053, 0.04237099, 1.22263753], [1516520220000, 0.04230972, 0.042376, 0.042048, 0.042048, 7.89019597], [1516520280000, 0.042043, 0.04236098, 0.042043, 0.04236098, 0.19271444], [1516520340000, 0.042361, 0.042361, 0.042361, 0.042361, 0.18923504], [1516520400000, 0.04236099, 0.042361, 0.04230973, 0.04230973, 0.83848502], [1516520460000, 0.04230973, 0.04235203, 0.04230973, 0.04235203, 0.13945011], [1516520520000, 0.04218535, 0.04218535, 0.04218532, 0.04218532, 0.24386057], [1516520580000, 0.042045, 0.04220644, 0.042043, 0.04218535, 2.11842337], [1516520640000, 0.041914, 0.04212357, 0.04191365, 0.04191365, 3.79753356], [1516520700000, 0.0419, 0.04232415, 0.04186816, 0.041878, 36.96786174], [1516520760000, 0.041873, 0.04223367, 0.04177903, 0.04177903, 27.15397933], [1516520820000, 0.042185, 0.04229899, 0.04177907, 0.04187115, 42.28320987], [1516520880000, 0.04186809, 0.0418681, 0.04179401, 0.041824, 5.65492912], [1516520940000, 0.04182401, 0.04182401, 0.041824, 0.041824, 1.56471451], [1516521000000, 0.041808, 0.04218485, 0.041808, 0.04218485, 1.14848088], [1516521060000, 0.04183301, 0.04183301, 0.04183, 0.04183, 0.8231602], [1516521120000, 0.04217262, 0.04217262, 0.041854, 0.041854, 1.49640153], [1516521180000, 0.04201054, 0.04201054, 0.04201054, 0.04201054, 0.24], [1516521240000, 0.04187801, 0.04187801, 0.04187801, 0.04187801, 0.02006384], [1516521300000, 0.04217261, 0.04217262, 0.04191232, 0.04191232, 0.97424156], [1516521360000, 0.04217262, 0.04217262, 0.041813, 0.041813, 0.31443915], [1516521420000, 0.04184861, 0.04184861, 0.04184861, 0.04184861, 0.05206073], [1516521480000, 0.04179302, 0.04255993, 0.04179302, 0.04182909, 32.63339073], [1516521540000, 0.04182951, 0.04182951, 0.04182951, 0.04182951, 0.05161168], [1516521600000, 0.04182977, 0.0420695, 0.04182976, 0.04183032, 3.99202849], [1516521660000, 0.04183022, 0.04220199, 0.04183022, 0.04220199, 0.21894367], [1516521720000, 0.04217799, 0.04218998, 0.04217799, 0.04218998, 1.22195615], [1516521780000, 0.042257, 0.042257, 0.042257, 0.042257, 7.3], [1516521840000, 0.04195, 0.04195, 0.04195, 0.04195, 0.33692723], [1516521900000, 0.0420121, 0.0420121, 0.042012, 0.042012, 1.63231009], [1516521960000, 0.04203, 0.042257, 0.04202501, 0.042257, 0.47389991], [1516522020000, 0.042361, 0.04254099, 0.042257, 0.042257, 2.4221793], [1516522080000, 0.042257, 0.04252099, 0.042257, 0.042257, 2.3445359], [1516522200000, 0.04197007, 0.042257, 0.04197007, 0.042257, 0.5467528], [1516522260000, 0.042257, 0.042257, 0.042257, 0.042257, 0.18680647], [1516522320000, 0.042257, 0.042257, 0.042257, 0.042257, 2.01796952], [1516522500000, 0.04200002, 0.042257, 0.04200002, 0.04202, 2.50781755], [1516522560000, 0.04248499, 0.04248499, 0.04248499, 0.04248499, 0.01344694], [1516522620000, 0.04210001, 0.04242997, 0.04203004, 0.04203004, 4.14809518], [1516522680000, 0.04203004, 0.042035, 0.04203003, 0.042035, 0.92526062], [1516522800000, 0.04211, 0.04236286, 0.04211, 0.04236286, 0.72965144], [1516522860000, 0.04236286, 0.04236287, 0.04212001, 0.04212001, 0.66801208], [1516522920000, 0.04241312, 0.04241312, 0.04241312, 0.04241312, 0.02085471], [1516522980000, 0.04212, 0.04242495, 0.04212, 0.04242495, 0.41843331], [1516523040000, 0.04241997, 0.042561, 0.04241997, 0.042561, 4.18167935], [1516523100000, 0.04251099, 0.04251099, 0.042193, 0.042193, 0.68681688], [1516523160000, 0.042213, 0.042218, 0.042208, 0.042208, 5.75865349], [1516523220000, 0.042208, 0.04224904, 0.042208, 0.042218, 2.23657402], [1516523280000, 0.042556, 0.042556, 0.042213, 0.04254099, 1.08574844], [1516523340000, 0.042208, 0.042208, 0.042208, 0.042208, 5.27489597], [1516523400000, 0.04250097, 0.042566, 0.0422503, 0.042253, 2.80418403], [1516523460000, 0.04225301, 0.04247843, 0.04225301, 0.04225301, 0.71740609], [1516523520000, 0.04247843, 0.04248, 0.04247843, 0.04248, 1.00862683], [1516523580000, 0.04248, 0.04248, 0.04248, 0.04248, 0.04291903], [1516523640000, 0.04257598, 0.04257599, 0.04257598, 0.04257599, 1.06820442], [1516523700000, 0.04258099, 0.04258998, 0.04258099, 0.04258998, 4.18558016], [1516523760000, 0.04257598, 0.04258998, 0.04257598, 0.04258998, 0.67529678], [1516523880000, 0.04247843, 0.04247843, 0.04247843, 0.04247843, 0.4247863], [1516523940000, 0.04247843, 0.04247843, 0.04226769, 0.04226801, 9.48761766], [1516524000000, 0.0425342, 0.042585, 0.042238, 0.042238, 4.8694756], [1516524060000, 0.04253418, 0.04253418, 0.04253414, 0.04253414, 0.28817738], [1516524180000, 0.04254085, 0.04254085, 0.04254085, 0.04254085, 0.09222883], [1516524240000, 0.04254085, 0.04254085, 0.04231901, 0.04231901, 11.78906084], [1516524300000, 0.04256, 0.04256, 0.04256, 0.04256, 0.02349685], [1516524600000, 0.0422181, 0.04251994, 0.0422181, 0.042228, 1.85847992], [1516524720000, 0.0422181, 0.042228, 0.0422181, 0.04221815, 1.66026318], [1516524780000, 0.04227023, 0.04254999, 0.0422181, 0.04254999, 0.7387672], [1516524900000, 0.04254998, 0.04254998, 0.04222004, 0.04222004, 6.64785443], [1516524960000, 0.04254998, 0.04254998, 0.04222, 0.04253427, 4.80439099], [1516525020000, 0.04254999, 0.04254999, 0.04254999, 0.04254999, 3.46821195], [1516525140000, 0.04222901, 0.04223417, 0.04222901, 0.04223417, 0.9685004], [1516525200000, 0.04223425, 0.04223425, 0.04203004, 0.04203004, 34.11166776], [1516525260000, 0.04203004, 0.04254499, 0.04203004, 0.04254499, 8.15322497], [1516525320000, 0.04224019, 0.04224019, 0.04224019, 0.04224019, 0.07174611], [1516525380000, 0.04243003, 0.04254499, 0.04243003, 0.04254498, 1.29597049], [1516525440000, 0.04225011, 0.04254999, 0.04225011, 0.04254668, 5.73971837], [1516525500000, 0.04254999, 0.04257076, 0.042275, 0.04228521, 4.75356891], [1516525560000, 0.0422911, 0.04258026, 0.0422911, 0.04258025, 5.49300771], [1516525620000, 0.04258025, 0.04258025, 0.04258025, 0.04258025, 5.50053327], [1516525680000, 0.04258025, 0.04258025, 0.0422951, 0.0423002, 8.10496274], [1516525800000, 0.04258499, 0.04258997, 0.04232621, 0.04232621, 0.73861773], [1516525980000, 0.042589, 0.042589, 0.0423001, 0.04232621, 10.48076913], [1516526040000, 0.04232621, 0.04256835, 0.04232621, 0.04256835, 0.02010005], [1516526100000, 0.04258109, 0.04258109, 0.04258109, 0.04258109, 0.2347969], [1516526160000, 0.04258498, 0.04258997, 0.04256835, 0.04256835, 0.50901412], [1516526220000, 0.04256835, 0.04256835, 0.04232621, 0.04256835, 0.18285374], [1516526340000, 0.04256835, 0.04256835, 0.04256835, 0.04256835, 0.28189958], [1516526400000, 0.04256835, 0.04256835, 0.04256835, 0.04256835, 1.17458295], [1516526520000, 0.04256835, 0.04256835, 0.04256835, 0.04256835, 1.0], [1516526580000, 0.04226028, 0.04256835, 0.04226016, 0.04226029, 2.58674086], [1516526640000, 0.04256834, 0.04256834, 0.04256834, 0.04256834, 0.11169296], [1516526700000, 0.04226609, 0.04226609, 0.04226609, 0.04226609, 1.01682377], [1516526760000, 0.04226609, 0.0422661, 0.042239, 0.042239, 5.33899357], [1516526820000, 0.0422391, 0.0422391, 0.04213718, 0.04213718, 1.56587141], [1516526880000, 0.0422391, 0.0422391, 0.04214701, 0.0422391, 5.16451037], [1516526940000, 0.0422391, 0.0422391, 0.04196002, 0.0422391, 83.13167475], [1516527000000, 0.0422391, 0.0422391, 0.041996, 0.042016, 3.62013945], [1516527060000, 0.04236698, 0.04236699, 0.042347, 0.042347, 1.39795824], [1516527120000, 0.04234199, 0.04234199, 0.04234198, 0.04234198, 8.0521186], [1516527180000, 0.042037, 0.04204701, 0.042037, 0.042047, 2.28720015], [1516527240000, 0.042037, 0.04233897, 0.042011, 0.04233897, 0.24188276], [1516527300000, 0.04233594, 0.04233594, 0.04202101, 0.04233586, 0.97279989], [1516527360000, 0.04233575, 0.0430001, 0.04233575, 0.04254747, 403.36756726], [1516527420000, 0.04233575, 0.04233575, 0.04203609, 0.04203609, 2.199], [1516527480000, 0.04219008, 0.04219008, 0.042041, 0.04219008, 0.14297897], [1516527540000, 0.04219008, 0.04219008, 0.04214999, 0.04214999, 1.60064511], [1516527600000, 0.04215, 0.04219009, 0.04205101, 0.04219007, 1.2630072], [1516527720000, 0.04219, 0.04219001, 0.04219, 0.04219001, 0.405873], [1516527780000, 0.042056, 0.042056, 0.04205103, 0.04205103, 20.58512969], [1516527840000, 0.04205102, 0.042185, 0.04205102, 0.042185, 1.34472481], [1516527900000, 0.042185, 0.04219008, 0.04205103, 0.04219008, 9.8215394], [1516527960000, 0.042187, 0.042187, 0.042187, 0.042187, 0.01388162], [1516528020000, 0.04205103, 0.04205103, 0.04201602, 0.0420509, 1.02304733], [1516528080000, 0.04201602, 0.04201602, 0.04201602, 0.04201602, 0.11533433], [1516528140000, 0.04201602, 0.04201602, 0.04201602, 0.04201602, 2.515], [1516528200000, 0.04205062, 0.04205062, 0.0420506, 0.0420506, 2.12122859], [1516528260000, 0.0420506, 0.0420506, 0.04205053, 0.04205053, 1.0323049], [1516528320000, 0.04205046, 0.04205046, 0.04205036, 0.04205036, 28.89238871], [1516528380000, 0.04201602, 0.04205027, 0.04201602, 0.04205027, 3.2926622], [1516528440000, 0.04201602, 0.04205016, 0.041955, 0.04201602, 4.20758272], [1516528500000, 0.04201602, 0.04204988, 0.042016, 0.04201602, 4.25899517], [1516528560000, 0.042016, 0.04205039, 0.04195, 0.04195, 16.65520153], [1516528620000, 0.04195, 0.04201599, 0.04183162, 0.04183166, 13.24371312], [1516528680000, 0.04201599, 0.04205039, 0.04183702, 0.04183702, 4.81882926], [1516528740000, 0.04201599, 0.04205039, 0.04201599, 0.04205039, 4.95759396], [1516528800000, 0.04205039, 0.04205039, 0.04205039, 0.04205039, 0.29049878], [1516528860000, 0.04205039, 0.04205039, 0.04184703, 0.04184712, 5.72813508], [1516528920000, 0.04184706, 0.04184712, 0.04184706, 0.04184712, 0.06271519], [1516528980000, 0.04205039, 0.04205039, 0.04196084, 0.04196084, 2.67705826], [1516529040000, 0.04196084, 0.04196084, 0.041852, 0.041852, 1.37365793], [1516529100000, 0.041852, 0.04205039, 0.041852, 0.04205039, 5.07761721], [1516529160000, 0.04205039, 0.04205039, 0.04205039, 0.04205039, 0.12574456], [1516529280000, 0.04205039, 0.04205039, 0.04205039, 0.04205039, 0.50405], [1516529340000, 0.041857, 0.041857, 0.04184713, 0.04184713, 26.60652082], [1516529400000, 0.04205039, 0.04205039, 0.04205039, 0.04205039, 0.04652244], [1516529460000, 0.04205053, 0.04205053, 0.04205053, 0.04205053, 0.0583586], [1516529580000, 0.04205053, 0.04205053, 0.04205053, 0.04205053, 7.0], [1516529700000, 0.04205053, 0.04205053, 0.04205053, 0.04205053, 0.36973749], [1516529760000, 0.04205053, 0.04205053, 0.04205053, 0.04205053, 0.47778714], [1516529820000, 0.04203, 0.04205053, 0.04196101, 0.04205053, 1.4316123], [1516529880000, 0.041933, 0.04205053, 0.04193115, 0.04193115, 0.44769429], [1516529940000, 0.04193115, 0.04193115, 0.04193115, 0.04193115, 0.03132253], [1516530060000, 0.04193115, 0.04193115, 0.04192107, 0.04193115, 0.51414823], [1516530120000, 0.04193602, 0.04193602, 0.04193602, 0.04193602, 0.42024025], [1516530180000, 0.04223382, 0.04223382, 0.042051, 0.042051, 0.0683358], [1516530360000, 0.04223813, 0.04224569, 0.04223813, 0.04224569, 3.33204869], [1516530420000, 0.04224568, 0.04224569, 0.04224568, 0.04224568, 1.1468726], [1516530480000, 0.04224568, 0.04224569, 0.04224568, 0.04224568, 3.20758202], [1516530540000, 0.04224568, 0.04224569, 0.04224568, 0.04224568, 1.7752474], [1516530600000, 0.04224568, 0.04224569, 0.04224568, 0.04224568, 2.09372141], [1516530660000, 0.04224568, 0.04224568, 0.04203445, 0.04203445, 5.91988956], [1516530720000, 0.04203445, 0.04203445, 0.04203445, 0.04203445, 0.54941694], [1516530780000, 0.04203445, 0.04222946, 0.04203445, 0.04222946, 0.46533271], [1516530840000, 0.04222908, 0.04222946, 0.04222908, 0.04222946, 0.113968], [1516530900000, 0.04222946, 0.04222946, 0.04222946, 0.04222946, 0.23235285], [1516531080000, 0.04222946, 0.04222946, 0.04222946, 0.04222946, 0.0524377], [1516531140000, 0.04222946, 0.04222946, 0.04222946, 0.04222946, 0.134971], [1516531200000, 0.04222946, 0.04222946, 0.04222946, 0.04222946, 4.18003833], [1516531260000, 0.04222946, 0.04222946, 0.04222946, 0.04222946, 0.82341633], [1516531320000, 0.04200001, 0.0422294, 0.042, 0.0422294, 0.37214252], [1516531500000, 0.04200001, 0.0422294, 0.04200001, 0.0422294, 0.6383703], [1516531560000, 0.0422294, 0.0422294, 0.0422294, 0.0422294, 0.01552718], [1516531620000, 0.0422294, 0.0422294, 0.0422294, 0.0422294, 0.96315462], [1516531740000, 0.0422294, 0.0422294, 0.0422294, 0.0422294, 0.44444444], [1516531800000, 0.0422294, 0.0422294, 0.0422294, 0.0422294, 0.26980184], [1516531860000, 0.0422294, 0.0422294, 0.0422294, 0.0422294, 2.36186164], [1516531920000, 0.0422294, 0.0422294, 0.0420005, 0.0422294, 41.13778365], [1516532040000, 0.0422294, 0.0422294, 0.04200001, 0.0422294, 9.11827157], [1516532100000, 0.0422294, 0.0422294, 0.04200001, 0.04200001, 16.91929149], [1516532160000, 0.04200001, 0.0422294, 0.04200001, 0.0422294, 0.15175313], [1516532220000, 0.0422294, 0.0422294, 0.0422294, 0.0422294, 0.02624635], [1516532280000, 0.04203111, 0.0422294, 0.04203111, 0.0422294, 1.67907927], [1516532400000, 0.04224562, 0.04224562, 0.04224562, 0.04224562, 0.47342208], [1516532460000, 0.0422456, 0.0422456, 0.04199221, 0.04199221, 0.03668618], [1516532520000, 0.04224481, 0.04224481, 0.04224481, 0.04224481, 0.01396259], [1516532640000, 0.04199221, 0.04224463, 0.04199221, 0.04224463, 0.69226092], [1516532700000, 0.04223991, 0.04223991, 0.04197662, 0.04197662, 8.08133697], [1516532760000, 0.04224481, 0.0422457, 0.04224481, 0.04224562, 0.96595987], [1516532820000, 0.04201888, 0.04201888, 0.04201888, 0.04201888, 0.56715635], [1516532940000, 0.0422457, 0.0422457, 0.0422457, 0.0422457, 4.39553835], [1516533000000, 0.0422457, 0.0422457, 0.04201869, 0.04201869, 0.71172514], [1516533120000, 0.0422457, 0.0422457, 0.0422457, 0.0422457, 0.04406625], [1516533180000, 0.0422457, 0.0422457, 0.0422457, 0.0422457, 0.47920567], [1516533240000, 0.0422457, 0.0422457, 0.0422457, 0.0422457, 3.06853483], [1516533300000, 0.042334, 0.042334, 0.042334, 0.042334, 0.4724335], [1516533360000, 0.04227003, 0.04227003, 0.04227003, 0.04227003, 2.37719233], [1516533480000, 0.04227003, 0.04227003, 0.04227003, 0.04227003, 0.02620392], [1516533540000, 0.0420186, 0.0420186, 0.0420186, 0.0420186, 0.32885811], [1516533600000, 0.04227003, 0.04227003, 0.04227003, 0.04227003, 0.23470735], [1516533660000, 0.04227003, 0.04227003, 0.04201869, 0.04227003, 1.56451216], [1516533720000, 0.04201877, 0.04227003, 0.0420187, 0.04227003, 1.55447627], [1516533780000, 0.04201864, 0.04227003, 0.04201864, 0.04227, 0.17592011], [1516533840000, 0.04227, 0.04227, 0.04227, 0.04227, 0.16440532], [1516533900000, 0.04227, 0.04227003, 0.04227, 0.04227003, 7.91474659], [1516533960000, 0.04227001, 0.04227003, 0.04227001, 0.04227003, 0.14985693], [1516534020000, 0.04227003, 0.04227003, 0.04227003, 0.04227003, 0.0522513], [1516534080000, 0.0422, 0.0422, 0.0422, 0.0422, 0.29337767], [1516534140000, 0.0421998, 0.04227003, 0.042029, 0.04227003, 5.17264829], [1516534200000, 0.04227003, 0.04227003, 0.04227003, 0.04227003, 5.35450773], [1516534260000, 0.04227, 0.04227, 0.0420331, 0.04203317, 1.04309254], [1516534320000, 0.04227003, 0.04227003, 0.04227003, 0.04227003, 16.35656063], [1516534380000, 0.04203326, 0.04227003, 0.04203326, 0.04227003, 0.61177385], [1516534440000, 0.04227003, 0.04227003, 0.04219818, 0.04219818, 1.79186768], [1516534500000, 0.04219818, 0.04227003, 0.04219818, 0.04227003, 0.43480415], [1516534560000, 0.04219818, 0.04227003, 0.04203326, 0.04227003, 21.47904799], [1516534620000, 0.04203326, 0.04227003, 0.04203326, 0.04227003, 10.58500717], [1516534680000, 0.04227003, 0.04227003, 0.04227003, 0.04227003, 16.13067356], [1516534740000, 0.04227003, 0.04227003, 0.04203327, 0.04203332, 1.8711396], [1516534800000, 0.042048, 0.04248, 0.042048, 0.04248, 4.38162302], [1516534860000, 0.042334, 0.04233401, 0.042334, 0.04233401, 2.65463667], [1516534920000, 0.04222835, 0.04222835, 0.04222503, 0.04222503, 0.12843967], [1516534980000, 0.04222505, 0.0423, 0.04206301, 0.0423, 5.79983631], [1516535040000, 0.04230001, 0.04230001, 0.04208801, 0.04230001, 2.68200746], [1516535100000, 0.04248518, 0.0425, 0.04230001, 0.04230001, 0.7489429], [1516535160000, 0.04230002, 0.0425, 0.04230001, 0.04230001, 0.09327058], [1516535220000, 0.0425, 0.04251899, 0.04230002, 0.04230002, 9.14898926], [1516535280000, 0.04230002, 0.04230002, 0.04230002, 0.04230002, 0.39711479], [1516535340000, 0.0425, 0.0425, 0.04249501, 0.04249501, 13.44436706], [1516535400000, 0.04249501, 0.0425, 0.04249501, 0.04249502, 1.34888635], [1516535460000, 0.04249502, 0.04249506, 0.042495, 0.04249506, 23.2685058], [1516535520000, 0.04249508, 0.04249508, 0.04230004, 0.04230004, 2.47312288], [1516535580000, 0.04230003, 0.04230003, 0.04203332, 0.04230003, 98.59299831], [1516535640000, 0.04230003, 0.04230003, 0.04205301, 0.04205301, 4.15879929], [1516535700000, 0.042058, 0.04228117, 0.04205799, 0.0421634, 6.73595109], [1516535760000, 0.04216339, 0.04228116, 0.0420601, 0.04228116, 6.65996946], [1516535820000, 0.04216339, 0.04216339, 0.04205301, 0.042063, 1.43218367], [1516535880000, 0.04228115, 0.04244, 0.04206778, 0.04231994, 8.15326289], [1516535940000, 0.04210801, 0.04210801, 0.04210801, 0.04210801, 0.35056628], [1516536000000, 0.04212805, 0.042453, 0.04212301, 0.042453, 1.32841905], [1516536060000, 0.04211301, 0.042453, 0.04211301, 0.042446, 3.28276241], [1516536180000, 0.04243799, 0.04244299, 0.04243799, 0.04244299, 3.40284388], [1516536240000, 0.04244299, 0.04244299, 0.042103, 0.042103, 0.42827322], [1516536300000, 0.04244299, 0.04250899, 0.04244299, 0.042504, 6.0], [1516536360000, 0.0423118, 0.042514, 0.0423118, 0.042514, 0.27978844], [1516536420000, 0.04250899, 0.04250899, 0.0423118, 0.0423118, 0.11739818], [1516536480000, 0.04251399, 0.0426, 0.042312, 0.042312, 16.73858091], [1516536540000, 0.04231701, 0.04232201, 0.04231701, 0.04232201, 1.05814451], [1516536600000, 0.04232208, 0.04297795, 0.04232208, 0.04274967, 129.99982175], [1516536660000, 0.04233702, 0.04271069, 0.04233702, 0.04271069, 83.02886977], [1516536720000, 0.04271069, 0.04271069, 0.04239095, 0.04239095, 0.3304912], [1516536780000, 0.04240102, 0.0427106, 0.04240102, 0.0427106, 0.05788975], [1516536840000, 0.04250001, 0.04250001, 0.04250001, 0.04250001, 0.70278543], [1516536900000, 0.04250001, 0.04271075, 0.04250001, 0.04250001, 6.38614492], [1516536960000, 0.04260538, 0.04274966, 0.04250001, 0.04250001, 16.24924323], [1516537020000, 0.04274965, 0.04274965, 0.04274965, 0.04274965, 1.23207979], [1516537080000, 0.04274965, 0.04274965, 0.04274965, 0.04274965, 2.26794887], [1516537140000, 0.042745, 0.042745, 0.04250001, 0.04250001, 0.64176934], [1516537200000, 0.04250001, 0.042745, 0.0425, 0.042745, 3.65398463], [1516537260000, 0.04250001, 0.04255, 0.0425, 0.0425, 28.05586974], [1516537320000, 0.0425, 0.04273497, 0.0425, 0.0425, 1.38883929], [1516537380000, 0.0425, 0.0425, 0.0425, 0.0425, 1.69231469], [1516537440000, 0.04270994, 0.04270994, 0.04239442, 0.04239442, 5.41964647], [1516537500000, 0.04239442, 0.04239442, 0.04239442, 0.04239442, 1.17870872], [1516537560000, 0.04249397, 0.042652, 0.042312, 0.042312, 5.24976957], [1516537620000, 0.04271, 0.04271, 0.04271, 0.04271, 0.01473651], [1516537680000, 0.04266994, 0.04266994, 0.042312, 0.042655, 0.319803], [1516537740000, 0.04264495, 0.04264495, 0.0425588, 0.0425588, 1.67621214], [1516537800000, 0.04231644, 0.04263497, 0.042312, 0.04263497, 0.5362656], [1516537860000, 0.0425588, 0.0425588, 0.04219501, 0.04226589, 2.12567012], [1516537920000, 0.0422413, 0.0425539, 0.04214, 0.04246928, 2.57407421], [1516537980000, 0.04246928, 0.04246928, 0.042129, 0.042129, 7.49073903], [1516538040000, 0.04212907, 0.042134, 0.04212907, 0.042134, 0.31960303], [1516538100000, 0.04246783, 0.042472, 0.042134, 0.042134, 0.71739564], [1516538160000, 0.042134, 0.04244821, 0.042134, 0.04244821, 4.63247363], [1516538280000, 0.04244818, 0.04244818, 0.04214911, 0.04244816, 6.53887172], [1516538340000, 0.04244817, 0.04244817, 0.04244814, 0.04244814, 0.271985], [1516538400000, 0.04244812, 0.04244812, 0.04216978, 0.04216978, 0.28869723], [1516538460000, 0.0424481, 0.0424481, 0.0424481, 0.0424481, 0.3119078], [1516538520000, 0.0424481, 0.0424481, 0.0424481, 0.0424481, 0.911154], [1516538580000, 0.04216978, 0.042443, 0.042065, 0.04244298, 4.72590084], [1516538640000, 0.04244289, 0.04244289, 0.04210503, 0.04210503, 10.202731], [1516538700000, 0.04244289, 0.0424481, 0.04207, 0.042114, 0.99582719], [1516538760000, 0.0424481, 0.0424481, 0.0424481, 0.0424481, 0.01674573], [1516538820000, 0.04212358, 0.04213, 0.04212358, 0.04213, 2.22940807], [1516538880000, 0.04212358, 0.0424481, 0.04212358, 0.0424481, 1.21631114], [1516539000000, 0.0424481, 0.0424481, 0.0424481, 0.0424481, 0.4711636], [1516539120000, 0.0424481, 0.0424481, 0.0424481, 0.0424481, 0.79270984], [1516539180000, 0.0424481, 0.042458, 0.0424481, 0.042458, 1.17460357], [1516539240000, 0.04246306, 0.04246306, 0.04222222, 0.04246306, 3.11219899], [1516539300000, 0.042472, 0.042686, 0.042472, 0.042686, 3.3099929], [1516539360000, 0.0425588, 0.0425588, 0.04246306, 0.04246306, 0.1894898], [1516539420000, 0.04246306, 0.04246306, 0.04224155, 0.04224155, 2.40643286], [1516539480000, 0.04246306, 0.04246306, 0.04246306, 0.04246306, 0.07203141], [1516539600000, 0.04246306, 0.04266098, 0.04246306, 0.04266098, 0.51319858], [1516539660000, 0.04246306, 0.042646, 0.04246306, 0.042646, 0.04258676], [1516539720000, 0.04260599, 0.04260599, 0.04260599, 0.04260599, 0.08526349], [1516539780000, 0.042242, 0.04259099, 0.04222, 0.04259099, 0.78940072], [1516539840000, 0.042581, 0.04268598, 0.042581, 0.04259099, 18.61453364], [1516539900000, 0.04259099, 0.04268099, 0.04259099, 0.04259099, 16.30832766], [1516539960000, 0.04259099, 0.042681, 0.04221301, 0.04267599, 3.76419961], [1516540020000, 0.042666, 0.042666, 0.042319, 0.04265099, 1.10548901], [1516540080000, 0.042322, 0.04232601, 0.042322, 0.042326, 0.88159653], [1516540140000, 0.04232601, 0.04232601, 0.04232601, 0.04232601, 0.16830885], [1516540200000, 0.04259499, 0.042595, 0.04232601, 0.04232601, 0.69553539], [1516540260000, 0.04258999, 0.04258999, 0.04258998, 0.04258999, 0.0762774], [1516540320000, 0.04258999, 0.04259498, 0.04258999, 0.04259498, 1.11763363], [1516540380000, 0.04238888, 0.04238888, 0.04232604, 0.04232604, 6.63386824], [1516540440000, 0.04238888, 0.04259498, 0.04238888, 0.04259498, 1.67593716], [1516540500000, 0.04257961, 0.04257961, 0.04257961, 0.04257961, 0.14151925], [1516540560000, 0.04257961, 0.04258, 0.04257961, 0.04258, 0.20532412], [1516540620000, 0.04257961, 0.04257961, 0.04252202, 0.04252202, 0.03211789], [1516540680000, 0.04252202, 0.04257961, 0.04252202, 0.04252202, 0.98025901], [1516540740000, 0.04252202, 0.04257961, 0.04252202, 0.04252202, 2.73077704], [1516540800000, 0.04252202, 0.04257961, 0.04232604, 0.04252202, 4.41527008], [1516540860000, 0.04257961, 0.04257961, 0.04232604, 0.0424, 0.78903809], [1516540920000, 0.0424424, 0.04255396, 0.0424, 0.0424, 10.27809255], [1516540980000, 0.0424, 0.04240001, 0.0423, 0.04240001, 0.20649844], [1516541040000, 0.04240001, 0.04256198, 0.04240001, 0.04256198, 0.51487209], [1516541100000, 0.04240001, 0.04240001, 0.04240001, 0.04240001, 0.10183319], [1516541280000, 0.04256198, 0.04256198, 0.04240001, 0.04240001, 0.18707027], [1516541340000, 0.04240001, 0.04256198, 0.04240001, 0.04256198, 0.32254519], [1516541400000, 0.04240001, 0.04240001, 0.04240001, 0.04240001, 7.82967033], [1516541460000, 0.04240001, 0.04256198, 0.04240001, 0.04240001, 1.73964876], [1516541520000, 0.04240001, 0.04256, 0.04240001, 0.04240001, 7.5218775], [1516541580000, 0.04240001, 0.04240001, 0.0423, 0.0423, 1.20236072], [1516541640000, 0.04233793, 0.04233793, 0.04218322, 0.0423378, 0.15098352], [1516541700000, 0.0423378, 0.0423378, 0.0423378, 0.0423378, 0.02009661], [1516541760000, 0.0423378, 0.0423378, 0.0423378, 0.0423378, 0.05582863], [1516541880000, 0.04218322, 0.04218322, 0.04216363, 0.04218322, 0.24058815], [1516541940000, 0.04218322, 0.04218322, 0.04218322, 0.04218322, 0.22422705], [1516542000000, 0.04240001, 0.04257599, 0.04240001, 0.04255098, 0.49131], [1516542180000, 0.04246599, 0.04246599, 0.04218074, 0.04218074, 0.12514101], [1516542240000, 0.04218074, 0.04218074, 0.04209005, 0.04209005, 0.50447982], [1516542300000, 0.04247099, 0.04247099, 0.04246598, 0.04246598, 0.33473267], [1516542360000, 0.04243375, 0.04243375, 0.04243375, 0.04243375, 0.01638275], [1516542420000, 0.04243375, 0.04243375, 0.04243375, 0.04243375, 0.06575669], [1516542480000, 0.04239481, 0.0425, 0.04224653, 0.04239481, 5.882653], [1516542540000, 0.04234462, 0.04234462, 0.04234462, 0.04234462, 8.83218454], [1516542600000, 0.04225, 0.04246799, 0.04225, 0.04234462, 0.66021519], [1516542660000, 0.0421784, 0.0423446, 0.04209002, 0.0423446, 1.10735268], [1516542720000, 0.04212053, 0.04212053, 0.04212053, 0.04212053, 0.10048082], [1516542840000, 0.04213102, 0.04246399, 0.04213102, 0.04246399, 0.15433853], [1516542900000, 0.04213601, 0.042469, 0.04213601, 0.042464, 5.37703142], [1516542960000, 0.042469, 0.042469, 0.04214601, 0.042151, 9.46089281], [1516543020000, 0.04247356, 0.04247357, 0.04215121, 0.04225122, 1.99427717], [1516543080000, 0.04225123, 0.04246895, 0.04225123, 0.04246895, 0.26536039], [1516543140000, 0.04225123, 0.04225123, 0.04225123, 0.04225123, 0.3], [1516543200000, 0.04225122, 0.04247347, 0.04225122, 0.04247347, 0.61345992], [1516543260000, 0.04247347, 0.04249788, 0.04247347, 0.04249788, 7.29421312], [1516543320000, 0.04247347, 0.04247347, 0.04247347, 0.04247347, 3.87015532], [1516543380000, 0.04247347, 0.04249783, 0.04247347, 0.04247347, 1.2709674], [1516543440000, 0.04249783, 0.04249788, 0.04247347, 0.04247347, 42.85699419], [1516543500000, 0.04247347, 0.04249788, 0.04247347, 0.04247347, 2.32617474], [1516543560000, 0.04247347, 0.04247347, 0.04247347, 0.04247347, 0.40109597], [1516543620000, 0.04247347, 0.04247347, 0.04231178, 0.04231178, 11.67030296], [1516543680000, 0.04226, 0.04226, 0.04226, 0.04226, 0.24218063], [1516543740000, 0.04226, 0.04226, 0.04226, 0.04226, 0.18153143], [1516543800000, 0.04249788, 0.04249788, 0.04249788, 0.04249788, 0.03169351], [1516543860000, 0.04249788, 0.04249788, 0.04226003, 0.0422738, 0.71587473], [1516543920000, 0.04249788, 0.04249788, 0.04226, 0.04226, 1.23957327], [1516543980000, 0.04226, 0.04226, 0.04212053, 0.04212053, 2.19142665], [1516544040000, 0.04212053, 0.04226, 0.04212053, 0.04226, 0.10132022], [1516544100000, 0.04225999, 0.04226, 0.0421511, 0.04226, 1.25249669], [1516544160000, 0.04226, 0.04273299, 0.04226, 0.04273299, 3.96903607], [1516544220000, 0.0423401, 0.04235011, 0.0423401, 0.04235011, 1.084], [1516544280000, 0.04235036, 0.04271298, 0.04235036, 0.04236001, 0.60923303], [1516544340000, 0.04236001, 0.04267799, 0.04236001, 0.04236843, 1.72173588], [1516544400000, 0.04235401, 0.04265912, 0.04235401, 0.04235401, 0.59019798], [1516544460000, 0.04235401, 0.04263401, 0.04235401, 0.042634, 1.90875609], [1516544520000, 0.042634, 0.042634, 0.04235401, 0.04235401, 0.74435134], [1516544580000, 0.04235401, 0.04235401, 0.04226024, 0.04226024, 1.8719906], [1516544640000, 0.04235401, 0.04235401, 0.04235401, 0.04235401, 0.06778149], [1516544700000, 0.042354, 0.042354, 0.04212001, 0.04212001, 0.22195073], [1516544760000, 0.04212, 0.04222068, 0.04212, 0.04222068, 3.08580405], [1516544820000, 0.04222068, 0.04222068, 0.04222068, 0.04222068, 0.13828396], [1516544880000, 0.04235401, 0.04235402, 0.04235401, 0.04235402, 0.18461518], [1516544940000, 0.04235401, 0.042511, 0.04235401, 0.042511, 5.4466236], [1516545000000, 0.042634, 0.042648, 0.042634, 0.04264799, 0.93715974], [1516545060000, 0.042354, 0.042638, 0.042354, 0.04252242, 5.17535409], [1516545120000, 0.04252242, 0.04252242, 0.042296, 0.04252242, 1.24786108], [1516545180000, 0.04263587, 0.0428664, 0.04252243, 0.04252243, 43.05249918], [1516545240000, 0.04252701, 0.04252702, 0.04252701, 0.04252702, 0.126], [1516545300000, 0.04256955, 0.04256955, 0.042487, 0.04252243, 0.54056603], [1516545360000, 0.04252243, 0.04272806, 0.04252243, 0.04272806, 0.89190671], [1516545420000, 0.04252243, 0.04252243, 0.04252243, 0.04252243, 0.0472], [1516545480000, 0.04241554, 0.04252243, 0.04241554, 0.04252243, 0.1392], [1516545540000, 0.04252243, 0.042723, 0.04233071, 0.04235901, 5.24394933], [1516545600000, 0.04234102, 0.04235101, 0.04234102, 0.042351, 0.189], [1516545660000, 0.042341, 0.04262524, 0.042341, 0.04262524, 0.20641009], [1516545720000, 0.04262525, 0.04269699, 0.04262524, 0.04262525, 2.53327585], [1516545780000, 0.04260846, 0.04262525, 0.04260846, 0.04262525, 0.05837351], [1516545840000, 0.04262525, 0.042723, 0.04234501, 0.042713, 1.50341659], [1516545900000, 0.042703, 0.042703, 0.04246959, 0.04267299, 4.1206913], [1516545960000, 0.04233083, 0.04266799, 0.04233083, 0.04260997, 1.00183919], [1516546020000, 0.04260997, 0.04260997, 0.04257498, 0.04257498, 0.881043], [1516546080000, 0.042565, 0.042565, 0.04253996, 0.04253996, 1.59455129], [1516546140000, 0.04253499, 0.04253499, 0.04233083, 0.04252995, 1.37213939], [1516546200000, 0.04251999, 0.04252994, 0.04233083, 0.04251999, 1.52400734], [1516546260000, 0.04252, 0.04254998, 0.04226943, 0.04226943, 4.41443039], [1516546320000, 0.04226944, 0.04251999, 0.04226943, 0.04226943, 1.02395776], [1516546500000, 0.042515, 0.04252, 0.04251499, 0.042515, 2.82235064], [1516546560000, 0.04251599, 0.042516, 0.04251599, 0.042516, 0.94082224], [1516546620000, 0.04251599, 0.04251599, 0.04251599, 0.04251599, 0.12846323], [1516546800000, 0.042515, 0.04251599, 0.042515, 0.04251599, 0.41816099], [1516546860000, 0.04226944, 0.04226944, 0.04226944, 0.04226944, 0.299], [1516546920000, 0.042274, 0.042274, 0.04226944, 0.04226944, 0.23412374], [1516546980000, 0.04226944, 0.04251599, 0.04226944, 0.04226944, 6.35811294], [1516547040000, 0.04226944, 0.04226944, 0.04226944, 0.04226944, 2.70760189], [1516547100000, 0.04226944, 0.04226944, 0.04226881, 0.04226944, 2.94452948], [1516547160000, 0.04226944, 0.04226944, 0.04226944, 0.04226944, 0.06], [1516547220000, 0.04226881, 0.04251099, 0.04226881, 0.04226944, 3.34643103], [1516547400000, 0.04251097, 0.04251599, 0.04251097, 0.04251599, 0.89240636], [1516547520000, 0.04251598, 0.04251598, 0.04251598, 0.04251598, 0.03630755], [1516547640000, 0.04251597, 0.04258999, 0.04251597, 0.04251598, 1.30173384], [1516547700000, 0.04251597, 0.04251598, 0.04251597, 0.04251598, 0.23520556], [1516547760000, 0.042506, 0.042506, 0.04226881, 0.04250599, 7.22311838], [1516547940000, 0.04250597, 0.04250599, 0.04226881, 0.04226881, 1.11021869], [1516548000000, 0.04250597, 0.04250597, 0.04226881, 0.04226881, 0.63243789], [1516548060000, 0.04220372, 0.04226881, 0.04219801, 0.04226881, 2.52567817], [1516548120000, 0.04219801, 0.04219801, 0.04219801, 0.04219801, 0.54944365], [1516548180000, 0.04219801, 0.04219801, 0.04219801, 0.04219801, 0.10851534], [1516548240000, 0.04219801, 0.04226881, 0.04219801, 0.04219801, 0.72635567], [1516548300000, 0.04219801, 0.04226881, 0.04219801, 0.04226881, 1.46984287], [1516548360000, 0.04226881, 0.04226881, 0.04226881, 0.04226881, 1.24211543], [1516548420000, 0.04219801, 0.04219801, 0.04219801, 0.04219801, 1.02490107], [1516548540000, 0.04219801, 0.04219801, 0.04216019, 0.04216019, 1.9855453], [1516548600000, 0.04216019, 0.04219801, 0.04201, 0.04212722, 8.05323077], [1516548660000, 0.04212721, 0.04226881, 0.04212721, 0.04226881, 0.99957263], [1516548780000, 0.04209973, 0.04226881, 0.04209973, 0.04226881, 0.42648094], [1516548840000, 0.04226881, 0.04226881, 0.04226881, 0.04226881, 0.36162205], [1516548900000, 0.04226881, 0.04226881, 0.04209983, 0.04209983, 0.95501685], [1516548960000, 0.04209983, 0.04226881, 0.04209983, 0.04226881, 9.86485091], [1516549020000, 0.04226881, 0.04226881, 0.0421003, 0.04210032, 7.864861], [1516549080000, 0.04211, 0.04211, 0.04211, 0.04211, 0.17535865], [1516549140000, 0.04210033, 0.04211002, 0.04210033, 0.04211002, 0.60914242], [1516549200000, 0.04226881, 0.042436, 0.04226881, 0.042436, 1.88177452], [1516549260000, 0.042436, 0.042436, 0.042436, 0.042436, 3.19868595], [1516549320000, 0.0420501, 0.0420501, 0.04205, 0.04205, 0.34404642], [1516549380000, 0.042065, 0.042065, 0.042065, 0.042065, 1.0], [1516549440000, 0.04210034, 0.04210034, 0.04210034, 0.04210034, 0.03039283], [1516549500000, 0.04210035, 0.04243599, 0.042074, 0.042426, 4.33808595], [1516549560000, 0.04200504, 0.04200504, 0.04200504, 0.04200504, 0.1], [1516549620000, 0.04241099, 0.042411, 0.04202507, 0.04202507, 0.21126488], [1516549680000, 0.04202509, 0.042064, 0.04200003, 0.042064, 0.86919211], [1516549740000, 0.04238597, 0.04238599, 0.04236099, 0.04236099, 2.89826333], [1516549860000, 0.042065, 0.042291, 0.042065, 0.042291, 0.06533091], [1516549980000, 0.04229, 0.04232427, 0.04229, 0.042305, 6.78374674], [1516550040000, 0.04229101, 0.04229101, 0.042, 0.042, 0.37216154], [1516550100000, 0.042287, 0.042287, 0.042287, 0.042287, 0.15606945], [1516550220000, 0.04224494, 0.04224494, 0.04224494, 0.04224494, 0.3800111], [1516550280000, 0.042, 0.042, 0.04193678, 0.04199999, 24.65594459], [1516550340000, 0.04193678, 0.042, 0.04193678, 0.042, 4.32963686], [1516550400000, 0.042, 0.04223799, 0.042, 0.04223799, 3.87426209], [1516550460000, 0.042008, 0.04201802, 0.041978, 0.041978, 15.8700838], [1516550520000, 0.04229101, 0.04231929, 0.04205, 0.04205, 9.4068667], [1516550580000, 0.04206701, 0.04236399, 0.04200822, 0.04205, 41.14957177], [1516550640000, 0.04205, 0.04213915, 0.042005, 0.04205, 9.3523691], [1516550700000, 0.04205, 0.04233023, 0.042, 0.04231999, 11.88775085], [1516550760000, 0.04231999, 0.04231999, 0.04200014, 0.04200018, 0.59927394], [1516550820000, 0.0421, 0.0421, 0.0421, 0.0421, 0.36], [1516550880000, 0.0421, 0.04228258, 0.042, 0.04228258, 2.75169476], [1516550940000, 0.04200502, 0.04201012, 0.04200502, 0.04201012, 1.18524813], [1516551000000, 0.0423, 0.042428, 0.042055, 0.042423, 2.8945051], [1516551060000, 0.042423, 0.042423, 0.0421561, 0.0421561, 1.70316726], [1516551120000, 0.0421561, 0.04242299, 0.04205001, 0.04205001, 4.68486521], [1516551180000, 0.042066, 0.04239298, 0.042066, 0.04239298, 1.57391357], [1516551240000, 0.042071, 0.04239298, 0.042071, 0.042076, 2.91987723], [1516551300000, 0.04239297, 0.04239298, 0.04239297, 0.04239298, 1.17944], [1516551360000, 0.04207601, 0.04207601, 0.04200502, 0.042015, 59.14382257], [1516551420000, 0.04202501, 0.04235799, 0.042008, 0.042008, 25.51226932], [1516551480000, 0.042005, 0.04214752, 0.042005, 0.04214752, 6.80848598], [1516551540000, 0.04214751, 0.04214752, 0.042, 0.04214752, 4.76138875], [1516551600000, 0.042005, 0.042005, 0.042005, 0.042005, 0.04], [1516551660000, 0.04200001, 0.04200001, 0.04200001, 0.04200001, 0.77672555], [1516551720000, 0.04202022, 0.042383, 0.04202012, 0.042378, 12.06397909], [1516551780000, 0.042045, 0.04237799, 0.042045, 0.04237799, 0.39778137], [1516551840000, 0.042074, 0.04237799, 0.042074, 0.04237799, 0.27015443], [1516551900000, 0.04209121, 0.042388, 0.04209121, 0.04209164, 1.57131812], [1516551960000, 0.0423, 0.0423, 0.04209184, 0.04209184, 2.51004357], [1516552020000, 0.042388, 0.04242, 0.0421078, 0.04242, 28.26773763], [1516552080000, 0.04231834, 0.04242, 0.04231834, 0.04231835, 0.98017454], [1516552200000, 0.04231836, 0.04231836, 0.04231835, 0.04231836, 1.36928973], [1516552260000, 0.04231836, 0.04231836, 0.04231833, 0.04231833, 10.79676486], [1516552320000, 0.04209624, 0.04209983, 0.042005, 0.04207, 16.03738588], [1516552380000, 0.0420721, 0.04226842, 0.04200501, 0.04226842, 3.17730005], [1516552440000, 0.04226842, 0.04226843, 0.04226842, 0.04226843, 3.30306566], [1516552500000, 0.04226843, 0.04241998, 0.042076, 0.04209185, 7.58456944], [1516552560000, 0.04200001, 0.04200001, 0.04200001, 0.04200001, 1.712], [1516552620000, 0.042, 0.04209184, 0.042, 0.04209184, 0.14263146], [1516552680000, 0.04205, 0.04209184, 0.04205, 0.04209184, 0.41392859], [1516552800000, 0.04209185, 0.04209185, 0.042, 0.042, 0.1307722], [1516552860000, 0.042, 0.04205, 0.04193678, 0.04193678, 7.5438614], [1516552920000, 0.04193678, 0.04193678, 0.0419, 0.0419, 4.32812506], [1516552980000, 0.04184713, 0.04184713, 0.04184712, 0.04184712, 0.27086448], [1516553100000, 0.04204999, 0.04205, 0.04204999, 0.04205, 0.23781212], [1516553160000, 0.04204999, 0.04205, 0.04204999, 0.04205, 2.31942538], [1516553280000, 0.04204999, 0.04204999, 0.04204999, 0.04204999, 0.1341698], [1516553340000, 0.04205, 0.04205, 0.04205, 0.04205, 1.47443531], [1516553400000, 0.04205, 0.04205, 0.04204999, 0.04204999, 0.24077775], [1516553460000, 0.04204999, 0.04205, 0.04204999, 0.04205, 0.38359226], [1516553520000, 0.04204999, 0.04205, 0.04204999, 0.04204999, 1.19850936], [1516553580000, 0.04205, 0.04205, 0.04204999, 0.04204999, 1.76069517], [1516553640000, 0.04205, 0.04205, 0.04205, 0.04205, 0.02009136], [1516553700000, 0.04205, 0.04205, 0.04205, 0.04205, 1.0828705], [1516553760000, 0.04205, 0.04226843, 0.04205, 0.04226843, 0.88282702], [1516553820000, 0.04205019, 0.04205019, 0.04205019, 0.04205019, 0.16137929], [1516553940000, 0.04226841, 0.04226841, 0.04204999, 0.04205019, 7.19687685], [1516554000000, 0.04204999, 0.04226841, 0.04204999, 0.04226841, 1.32213816], [1516554060000, 0.042263, 0.042263, 0.04205009, 0.04205009, 0.12157068], [1516554120000, 0.04205009, 0.04205009, 0.04205009, 0.04205009, 0.2110235], [1516554180000, 0.04204999, 0.042253, 0.04204999, 0.042253, 11.20454994], [1516554240000, 0.04204999, 0.04204999, 0.04204999, 0.04204999, 2.38962875], [1516554300000, 0.04204999, 0.042253, 0.04187001, 0.04187001, 3.18486727], [1516554360000, 0.04187001, 0.0418721, 0.04187, 0.04187001, 5.74325229], [1516554420000, 0.042, 0.042, 0.04187001, 0.04187001, 0.28472832], [1516554540000, 0.042, 0.042, 0.04187502, 0.04187502, 3.02567156], [1516554600000, 0.0421964, 0.0421964, 0.04187502, 0.04187502, 0.47993508], [1516554660000, 0.04187547, 0.04187549, 0.04187547, 0.04187549, 9.63506527], [1516554720000, 0.04203194, 0.04203194, 0.04188001, 0.04188001, 0.6124], [1516554780000, 0.04188501, 0.04222382, 0.04188501, 0.04222381, 1.42279965], [1516554840000, 0.04222381, 0.04222381, 0.04188512, 0.04188512, 0.12972013], [1516554900000, 0.04222381, 0.04222382, 0.04222381, 0.04222382, 2.81985838], [1516555020000, 0.04222372, 0.04222382, 0.04222372, 0.04222382, 4.74020547], [1516555140000, 0.042, 0.042, 0.042, 0.042, 0.16572109], [1516555320000, 0.04187529, 0.042, 0.04187529, 0.042, 0.5529305], [1516555380000, 0.0422, 0.0422, 0.0422, 0.0422, 1.15262851], [1516555440000, 0.04187506, 0.04187506, 0.04187506, 0.04187506, 0.04060473], [1516555500000, 0.04219999, 0.0422, 0.04219999, 0.0422, 14.85457074], [1516555560000, 0.0422, 0.0422, 0.04188049, 0.04188049, 12.0990761], [1516555620000, 0.04188051, 0.0420899, 0.04188049, 0.04188052, 20.73368127], [1516555800000, 0.04219965, 0.04219971, 0.04219965, 0.04219971, 0.473937], [1516555860000, 0.04219964, 0.04219971, 0.04219964, 0.04219964, 2.83831129], [1516555980000, 0.04219961, 0.04219961, 0.04219961, 0.04219961, 0.0466726], [1516556040000, 0.0418807, 0.04218514, 0.0418807, 0.04188072, 1.69891504], [1516556100000, 0.0421851, 0.0421851, 0.04203292, 0.04203292, 0.68416148], [1516556220000, 0.04203291, 0.04203291, 0.04203291, 0.04203291, 0.52023119], [1516556280000, 0.04188054, 0.042, 0.04188054, 0.042, 1.46739827], [1516556340000, 0.04208704, 0.04218481, 0.04188053, 0.04188053, 1.86979486], [1516556400000, 0.04218381, 0.04218381, 0.04188053, 0.04188053, 0.29254954], [1516556460000, 0.0418805, 0.0418805, 0.04188049, 0.04188049, 1.78738227], [1516556520000, 0.04188049, 0.04188049, 0.04188049, 0.04188049, 0.5010871], [1516556580000, 0.0418805, 0.0418805, 0.0418805, 0.0418805, 0.08280656], [1516556640000, 0.0418805, 0.04218, 0.0418805, 0.04212682, 6.43422095], [1516556700000, 0.04212682, 0.04212682, 0.04212682, 0.04212682, 4.96449155], [1516556760000, 0.04218379, 0.04218379, 0.04218379, 0.04218379, 1.37997204], [1516556820000, 0.04218379, 0.04218379, 0.04188511, 0.04218379, 0.94024196], [1516556880000, 0.04218379, 0.0421838, 0.04190219, 0.0421838, 2.15172103], [1516556940000, 0.0421838, 0.0421838, 0.0421, 0.0421838, 1.0826437], [1516557000000, 0.0421838, 0.0421838, 0.0421838, 0.0421838, 0.66800404], [1516557120000, 0.0421838, 0.0421838, 0.0421838, 0.0421838, 2.2429923], [1516557180000, 0.04191113, 0.04218513, 0.04191113, 0.04218513, 0.43824986], [1516557420000, 0.04218513, 0.04218513, 0.04218513, 0.04218513, 0.09426777], [1516557540000, 0.04193904, 0.04193904, 0.04193904, 0.04193904, 0.03009694], [1516557600000, 0.04218513, 0.04218513, 0.04218513, 0.04218513, 0.11683338], [1516557660000, 0.04219965, 0.04219971, 0.04219965, 0.04219971, 0.14806435], [1516557720000, 0.04218515, 0.04218515, 0.04218515, 0.04218515, 0.05003133], [1516557780000, 0.04219971, 0.04219971, 0.04219971, 0.04219971, 0.03393194], [1516557840000, 0.04218516, 0.04218516, 0.04218516, 0.04218516, 0.09982466], [1516557900000, 0.04218515, 0.0422, 0.04218514, 0.0422, 4.93108232], [1516557960000, 0.04218514, 0.04218518, 0.04218514, 0.04218514, 0.95962977], [1516558020000, 0.04218515, 0.04218515, 0.04218515, 0.04218515, 0.34625959], [1516558140000, 0.04218515, 0.04218515, 0.04218515, 0.04218515, 2.007869], [1516558200000, 0.04218513, 0.0422, 0.04218513, 0.04218513, 1.90139678], [1516558320000, 0.04218513, 0.04218513, 0.04218513, 0.04218513, 0.33127985], [1516558440000, 0.0421999, 0.0421999, 0.04218513, 0.04218513, 3.02612487], [1516558500000, 0.0421999, 0.0421999, 0.04218513, 0.0421999, 1.92651378], [1516558560000, 0.0421999, 0.0421999, 0.0421999, 0.0421999, 0.05207583], [1516558620000, 0.04194514, 0.04194514, 0.04194514, 0.04194514, 0.08694237], [1516558680000, 0.04194513, 0.04194513, 0.04194513, 0.04194513, 0.10877593], [1516558740000, 0.04194513, 0.0421999, 0.04194513, 0.0421999, 1.23107045], [1516558800000, 0.0421999, 0.0421999, 0.04195, 0.0421999, 1.72289089], [1516558860000, 0.0421999, 0.0421999, 0.04195, 0.0421999, 1.92527152], [1516559100000, 0.0421999, 0.0421999, 0.0421999, 0.0421999, 1.41884222], [1516559160000, 0.0421999, 0.0421999, 0.0421999, 0.0421999, 0.42599023], [1516559220000, 0.0421999, 0.0421999, 0.04219989, 0.04219989, 0.98748367], [1516559340000, 0.04195, 0.04195, 0.04195, 0.04195, 0.11897114], [1516559400000, 0.04195, 0.04195, 0.04195, 0.04195, 0.02013125], [1516559520000, 0.04195, 0.04195, 0.04195, 0.04195, 1.94573745], [1516559580000, 0.04209999, 0.0421999, 0.04195, 0.0421999, 0.56144051], [1516559640000, 0.04195, 0.0422, 0.04195, 0.0422, 3.4708468], [1516559700000, 0.0422, 0.0422, 0.04195001, 0.0422, 0.60563316], [1516559820000, 0.04219998, 0.04219998, 0.04219998, 0.04219998, 0.01607824], [1516559880000, 0.0419603, 0.0419603, 0.0419603, 0.0419603, 0.18], [1516559940000, 0.04196, 0.04219979, 0.04196, 0.04219979, 0.24372491], [1516560000000, 0.04219998, 0.04219998, 0.04219998, 0.04219998, 0.47393364], [1516560060000, 0.04196, 0.04196, 0.04196, 0.04196, 0.08641652], [1516560180000, 0.04219998, 0.04219998, 0.04219998, 0.04219998, 0.35353544], [1516560240000, 0.04196, 0.04196, 0.04196, 0.04196, 0.12058493], [1516560300000, 0.04195, 0.04196, 0.04195, 0.04196, 0.3849518], [1516560480000, 0.0421999, 0.0421999, 0.0421999, 0.0421999, 0.03768006], [1516560540000, 0.04196, 0.04196, 0.04194513, 0.04194513, 9.20886064], [1516560600000, 0.04194513, 0.04196, 0.04188049, 0.04196, 3.43022942], [1516560780000, 0.04196, 0.04196, 0.04196, 0.04196, 0.17570132], [1516560840000, 0.04196, 0.04196, 0.04187506, 0.04187506, 0.74077776], [1516560900000, 0.04187501, 0.04187501, 0.04187501, 0.04187501, 0.08532667], [1516560960000, 0.04187001, 0.04196, 0.04187, 0.04196, 1.0075381], [1516561020000, 0.04187, 0.04187, 0.04187, 0.04187, 0.07067038], [1516561080000, 0.04196, 0.04196, 0.04187, 0.04187, 0.4498144], [1516561140000, 0.04187, 0.04219999, 0.04187, 0.04219999, 3.99494714], [1516561200000, 0.04199689, 0.04218999, 0.04196, 0.04218999, 1.04726942], [1516561320000, 0.0419815, 0.0419815, 0.0419815, 0.0419815, 0.544], [1516561380000, 0.0419815, 0.04218498, 0.0419815, 0.0421, 0.79672891], [1516561440000, 0.042, 0.042, 0.042, 0.042, 0.1], [1516561500000, 0.042, 0.042, 0.04188289, 0.04199999, 0.48076229], [1516561560000, 0.04199999, 0.042, 0.04199999, 0.042, 0.29357954], [1516561620000, 0.04187001, 0.04187001, 0.04187001, 0.04187001, 1.08324381], [1516561740000, 0.042, 0.04214495, 0.042, 0.04214495, 0.14360735], [1516561800000, 0.04187001, 0.04187001, 0.04187, 0.04187001, 1.47166483], [1516561860000, 0.04187, 0.04187, 0.04187, 0.04187, 3.50670272], [1516561920000, 0.04187, 0.04187, 0.04187, 0.04187, 0.8258534], [1516561980000, 0.04187, 0.04187, 0.04187, 0.04187, 0.04103047], [1516562040000, 0.04187001, 0.04187001, 0.04187, 0.04187001, 29.32759221], [1516562100000, 0.04187, 0.04216999, 0.04187, 0.04187002, 0.70223253], [1516562160000, 0.04219992, 0.04219992, 0.04219992, 0.04219992, 0.0276493], [1516562280000, 0.04188, 0.04218103, 0.04188, 0.04218103, 0.1525625], [1516562580000, 0.0419905, 0.04219971, 0.04187011, 0.04219971, 1.19434431], [1516562640000, 0.04219959, 0.04219964, 0.04219959, 0.04219964, 0.92133143], [1516562820000, 0.04219964, 0.04219998, 0.04219964, 0.04219964, 1.84967623], [1516562940000, 0.04219964, 0.04219964, 0.04219964, 0.04219964, 0.02012827], [1516563000000, 0.04219964, 0.04219964, 0.04219964, 0.04219964, 2.1046619], [1516563060000, 0.04219964, 0.04219964, 0.04219964, 0.04219964, 0.15103499], [1516563120000, 0.04219996, 0.04219996, 0.04219964, 0.04219964, 0.34537662], [1516563180000, 0.04219964, 0.04219964, 0.04191401, 0.041934, 0.38550995], [1516563240000, 0.04193502, 0.041959, 0.04193501, 0.04193502, 7.55836993], [1516563300000, 0.04194101, 0.04219997, 0.041912, 0.041934, 1.13979742], [1516563360000, 0.041954, 0.041954, 0.04194, 0.04194, 0.20091451], [1516563420000, 0.04196, 0.04196, 0.04191401, 0.04194, 16.29014144], [1516563480000, 0.04194, 0.04219998, 0.04194, 0.04194, 10.07945333], [1516563540000, 0.0421631, 0.0421631, 0.0421631, 0.0421631, 0.12207435], [1516563600000, 0.0421631, 0.0421631, 0.0421631, 0.0421631, 0.26083234], [1516563720000, 0.0421631, 0.0421631, 0.0421631, 0.0421631, 1.89101079], [1516563780000, 0.0421631, 0.0421631, 0.0421631, 0.0421631, 0.09020341], [1516563840000, 0.04205779, 0.0421631, 0.04205779, 0.0421631, 7.54133735], [1516563900000, 0.04219998, 0.04219998, 0.0421631, 0.0421631, 3.93172686], [1516563960000, 0.04215, 0.04215, 0.04215, 0.04215, 2.0], [1516564020000, 0.04215, 0.0421631, 0.04215, 0.0421631, 0.49321167], [1516564080000, 0.04212695, 0.04214494, 0.04212695, 0.04214494, 0.20347557], [1516564140000, 0.04214494, 0.04214494, 0.04214494, 0.04214494, 0.29172977], [1516564200000, 0.04212695, 0.04215, 0.04212695, 0.04215, 0.48918907], [1516564260000, 0.04215, 0.0422, 0.04215, 0.0422, 19.22476539], [1516564320000, 0.0422, 0.0422, 0.0422, 0.0422, 8.857125], [1516564440000, 0.0422, 0.04228917, 0.0422, 0.04228917, 16.72500643], [1516564500000, 0.04226818, 0.04226818, 0.04226818, 0.04226818, 0.024], [1516564560000, 0.04226818, 0.04226818, 0.04226818, 0.04226818, 0.01148141], [1516564620000, 0.04226818, 0.04226818, 0.04214138, 0.04214138, 0.04201007], [1516564680000, 0.04200043, 0.04200057, 0.04200043, 0.04200043, 0.23300419], [1516564740000, 0.042, 0.042, 0.042, 0.042, 0.02004543], [1516564800000, 0.042, 0.04228917, 0.04195714, 0.04228917, 2.47316894], [1516564860000, 0.04228916, 0.04228916, 0.04196205, 0.04196205, 0.31499758], [1516564920000, 0.04198705, 0.04228911, 0.04198705, 0.04228911, 0.13148647], [1516564980000, 0.04198707, 0.04198707, 0.04198705, 0.04198705, 0.93449983], [1516565040000, 0.04228905, 0.04229999, 0.04198752, 0.04198752, 3.5509206], [1516565100000, 0.042008, 0.042013, 0.042008, 0.042013, 0.14014209], [1516565160000, 0.04228905, 0.0423, 0.04228905, 0.04229999, 38.42601433], [1516565220000, 0.0423, 0.0423, 0.0423, 0.0423, 5.20237875], [1516565280000, 0.042121, 0.04215401, 0.042121, 0.04215401, 0.12273927], [1516565340000, 0.04242, 0.04242, 0.04242, 0.04242, 0.8644], [1516565400000, 0.04242, 0.04242, 0.04241, 0.04242, 0.85563785], [1516565460000, 0.04230011, 0.04242, 0.04230011, 0.04242, 0.99301972], [1516565520000, 0.04241, 0.04241, 0.04241, 0.04241, 1.988048], [1516565580000, 0.04241, 0.0425, 0.04241, 0.0425, 42.52871468], [1516565640000, 0.0425, 0.04251597, 0.0425, 0.04251597, 1.3420899], [1516565700000, 0.04258502, 0.04264, 0.04258502, 0.04264, 5.7636293], [1516565760000, 0.04264, 0.04264, 0.04264, 0.04264, 4.19125585], [1516565940000, 0.04263999, 0.04264, 0.04263999, 0.04264, 0.08669197], [1516566000000, 0.04260509, 0.04264, 0.04260502, 0.04260502, 1.98157348], [1516566060000, 0.04256243, 0.04264, 0.04256243, 0.04264, 2.1696963], [1516566120000, 0.04256243, 0.04263995, 0.04256243, 0.04256243, 2.28785094], [1516566180000, 0.04256243, 0.04264, 0.04251982, 0.04251982, 1.60208505], [1516566240000, 0.04263995, 0.04264, 0.04263995, 0.04264, 4.44781383], [1516566300000, 0.04264, 0.04264, 0.04263996, 0.04264, 2.17537303], [1516566360000, 0.04264, 0.04264, 0.04251983, 0.04251983, 3.1082334], [1516566420000, 0.04264, 0.04264, 0.04251983, 0.04264, 0.64676175], [1516566600000, 0.04264, 0.04264, 0.04264, 0.04264, 15.629234], [1516566660000, 0.04263, 0.04263, 0.04263, 0.04263, 0.02], [1516566720000, 0.04263, 0.04263, 0.04263, 0.04263, 0.01765875], [1516566780000, 0.04263, 0.04264, 0.04263, 0.04264, 10.88288188], [1516566840000, 0.04265, 0.04272806, 0.04261001, 0.04272806, 2.49784969], [1516566900000, 0.04277074, 0.04282008, 0.04277074, 0.04282008, 0.65030337], [1516566960000, 0.04280775, 0.04280775, 0.04277073, 0.04277074, 1.43048613], [1516567020000, 0.04282008, 0.04289393, 0.04267368, 0.04267368, 3.71628362], [1516567080000, 0.04277369, 0.0429, 0.04277369, 0.04277369, 0.89958415], [1516567140000, 0.04280001, 0.04280001, 0.04255, 0.04255004, 6.52594663], [1516567200000, 0.04255013, 0.04265015, 0.04255013, 0.04265015, 0.89202025], [1516567260000, 0.04265015, 0.04265015, 0.04265014, 0.04265014, 3.50520814], [1516567320000, 0.04265015, 0.04265015, 0.04265015, 0.04265015, 0.19746341], [1516567380000, 0.04265015, 0.04265015, 0.04265014, 0.04265014, 1.06484252], [1516567440000, 0.04265015, 0.04265015, 0.04265014, 0.04265015, 8.88051685], [1516567500000, 0.04265015, 0.04265017, 0.04265015, 0.04265017, 1.09966785], [1516567560000, 0.04265016, 0.04265016, 0.04265015, 0.04265015, 4.7119802], [1516567620000, 0.04265016, 0.0429, 0.04265016, 0.0429, 1.06801442], [1516567680000, 0.0426502, 0.0427, 0.04265016, 0.0427, 0.50096999], [1516567800000, 0.04270001, 0.04270001, 0.04270001, 0.04270001, 0.5], [1516567860000, 0.04289, 0.04289, 0.04289, 0.04289, 2.60253651], [1516567920000, 0.04289001, 0.04289001, 0.04270003, 0.04270003, 8.53388665], [1516567980000, 0.04270003, 0.04270003, 0.04270003, 0.04270003, 0.46995628], [1516568040000, 0.04289, 0.04289, 0.04270001, 0.04289, 0.24746524], [1516568100000, 0.04289, 0.04289, 0.04270002, 0.04270002, 1.80584545], [1516568160000, 0.04270003, 0.04289001, 0.04270003, 0.04289001, 4.29682846], [1516568220000, 0.04289001, 0.0429, 0.04289, 0.04289001, 28.12025538], [1516568280000, 0.04289001, 0.0429, 0.04289, 0.04289, 2.67857626], [1516568340000, 0.04289, 0.0429, 0.04289, 0.0429, 3.28592916], [1516568400000, 0.04289001, 0.04289989, 0.04239997, 0.04241043, 33.74468946], [1516568460000, 0.042895, 0.042895, 0.042855, 0.042855, 0.28849171], [1516568520000, 0.04241113, 0.04277939, 0.04241113, 0.04277939, 0.85832275], [1516568580000, 0.04277938, 0.04277938, 0.04243995, 0.04243995, 3.25934011], [1516568700000, 0.04277938, 0.04277938, 0.04244065, 0.04244065, 0.04786604], [1516568820000, 0.04244604, 0.04244604, 0.04244604, 0.04244604, 0.016476], [1516568940000, 0.04248104, 0.04248104, 0.04248104, 0.04248104, 0.0245769], [1516569000000, 0.04248105, 0.04248105, 0.042481, 0.042481, 3.44967434], [1516569060000, 0.04262133, 0.042674, 0.04262132, 0.042674, 0.37691859], [1516569180000, 0.042674, 0.042674, 0.042674, 0.042674, 0.12465315], [1516569240000, 0.04262132, 0.04262132, 0.04262132, 0.04262132, 0.63823069], [1516569300000, 0.042674, 0.042674, 0.042674, 0.042674, 0.02], [1516569360000, 0.04262132, 0.04262132, 0.04244056, 0.04244056, 1.08982091], [1516569420000, 0.04244056, 0.04244056, 0.04241113, 0.04241113, 1.37999072], [1516569480000, 0.04241113, 0.04241113, 0.04226393, 0.04226393, 1.66137776], [1516569540000, 0.04226392, 0.042497, 0.04223886, 0.04223886, 2.41588812], [1516569600000, 0.04241113, 0.04248913, 0.04226705, 0.04246405, 2.90641812], [1516569660000, 0.04222103, 0.04239728, 0.0421514, 0.04239728, 0.69808889], [1516569720000, 0.0422222, 0.04241113, 0.04212989, 0.04241113, 2.3974168], [1516569780000, 0.04241113, 0.04246455, 0.04241113, 0.04246455, 2.23547785], [1516569840000, 0.04246455, 0.04246455, 0.0424645, 0.04246451, 0.45341308], [1516569900000, 0.04246451, 0.04246451, 0.04246451, 0.04246451, 0.2460958], [1516570140000, 0.04227807, 0.0424645, 0.04215986, 0.04215986, 0.22739486], [1516570200000, 0.04212984, 0.04216991, 0.04212984, 0.04216991, 1.47927674], [1516570260000, 0.04216992, 0.04246, 0.04216991, 0.04246, 4.52432693], [1516570320000, 0.04246, 0.04246, 0.04246, 0.04246, 0.01768582], [1516570440000, 0.04227995, 0.04246, 0.04227995, 0.04246, 0.31968804], [1516570500000, 0.04246, 0.04246, 0.04246, 0.04246, 0.23551577], [1516570560000, 0.04216987, 0.04245999, 0.04216987, 0.04245999, 0.82309874], [1516570740000, 0.04217053, 0.04217053, 0.04217053, 0.04217053, 0.02012457], [1516570800000, 0.04245998, 0.04245998, 0.04245998, 0.04245998, 0.35577744], [1516570860000, 0.04245998, 0.04245998, 0.04245998, 0.04245998, 0.05290653], [1516570920000, 0.04217086, 0.04217086, 0.04217086, 0.04217086, 1.0], [1516571100000, 0.04245998, 0.04245998, 0.0421719, 0.0421719, 56.64030777], [1516571220000, 0.04218179, 0.04218179, 0.04218179, 0.04218179, 0.08049743], [1516571280000, 0.04218303, 0.04218303, 0.04218303, 0.04218303, 0.03001199], [1516571340000, 0.04218428, 0.04218428, 0.04218428, 0.04218428, 0.2], [1516571460000, 0.04218525, 0.04218525, 0.04218501, 0.04218501, 17.29880382], [1516571520000, 0.04245997, 0.04245998, 0.04245997, 0.04245998, 5.42340066], [1516571580000, 0.04219001, 0.04219217, 0.04219001, 0.04219217, 1.11818246], [1516571700000, 0.04231846, 0.04231846, 0.04231846, 0.04231846, 0.12089104], [1516571880000, 0.04219217, 0.04219217, 0.04218501, 0.04218501, 3.55218142], [1516571940000, 0.04217169, 0.04245048, 0.04217169, 0.04245048, 0.13051116], [1516572000000, 0.04245047, 0.04245047, 0.04217169, 0.04217169, 0.27474643], [1516572060000, 0.04217169, 0.04217169, 0.04217169, 0.04217169, 0.02748846], [1516572180000, 0.04217169, 0.04217169, 0.04217169, 0.04217169, 0.03337217], [1516572240000, 0.04243291, 0.04243998, 0.04243291, 0.04243998, 1.22184411], [1516572420000, 0.04230195, 0.04230195, 0.04198705, 0.04198705, 4.3865447], [1516572480000, 0.042, 0.042, 0.04198705, 0.042, 0.79273384], [1516572540000, 0.042, 0.042, 0.04197346, 0.04197346, 2.06723891], [1516572600000, 0.04197346, 0.042, 0.04195001, 0.042, 3.23497443], [1516572660000, 0.042, 0.04215152, 0.042, 0.04215152, 1.41417079], [1516572780000, 0.04196654, 0.04196654, 0.04195002, 0.04195002, 3.5], [1516572840000, 0.04195002, 0.04195002, 0.04195002, 0.04195002, 0.17988608], [1516572900000, 0.04224993, 0.04224994, 0.04224993, 0.04224994, 0.58205101], [1516572960000, 0.0422, 0.0422, 0.0422, 0.0422, 1.18033564], [1516573020000, 0.04195001, 0.04195001, 0.04194364, 0.04194364, 5.63817772], [1516573080000, 0.04224499, 0.04224499, 0.04224499, 0.04224499, 0.09604431], [1516573200000, 0.0419439, 0.04224511, 0.0419439, 0.04224511, 1.39072845], [1516573260000, 0.0419439, 0.0419439, 0.04194188, 0.04194188, 2.56516677], [1516573320000, 0.04194188, 0.04194188, 0.04194188, 0.04194188, 0.42713532], [1516573380000, 0.04194189, 0.04194189, 0.04194189, 0.04194189, 0.02017876], [1516573500000, 0.04221991, 0.04245047, 0.041915, 0.04221778, 59.69259003], [1516573560000, 0.04221778, 0.04221778, 0.04221778, 0.04221778, 0.07387955], [1516573620000, 0.04221778, 0.04221778, 0.04221778, 0.04221778, 0.1460983], [1516573680000, 0.04218604, 0.04218604, 0.04218604, 0.04218604, 0.09531826], [1516573740000, 0.04218605, 0.04221778, 0.04218605, 0.04221778, 2.49341222], [1516573800000, 0.04221778, 0.042265, 0.04218604, 0.042265, 4.85482634], [1516573920000, 0.04220668, 0.04220668, 0.04203501, 0.04203501, 7.604571], [1516573980000, 0.04227991, 0.04227991, 0.04227991, 0.04227991, 0.20431748], [1516574040000, 0.04227991, 0.04227991, 0.04227983, 0.04227983, 7.60079802], [1516574100000, 0.04227983, 0.042329, 0.04204403, 0.042329, 8.58965363], [1516574280000, 0.042329, 0.042329, 0.042329, 0.042329, 0.23809523], [1516574400000, 0.042329, 0.04242971, 0.042329, 0.04242971, 0.26654131], [1516574460000, 0.04242971, 0.04242971, 0.04242971, 0.04242971, 0.07070517], [1516574520000, 0.04242971, 0.04242971, 0.04242971, 0.04242971, 0.1254751], [1516574580000, 0.04242971, 0.04242971, 0.04242971, 0.04242971, 0.247485], [1516574640000, 0.04242971, 0.04242971, 0.04242971, 0.04242971, 0.02265699], [1516574700000, 0.04242971, 0.04242971, 0.04242971, 0.04242971, 0.23421434], [1516574760000, 0.04242971, 0.04242972, 0.042329, 0.04242972, 2.83112961], [1516574820000, 0.04242972, 0.04242972, 0.04242972, 0.04242972, 0.01298453], [1516574880000, 0.042329, 0.04242972, 0.042329, 0.04242972, 2.68133282], [1516574940000, 0.042329, 0.04242972, 0.042329, 0.04242972, 0.29648868], [1516575000000, 0.042329, 0.042329, 0.042329, 0.042329, 0.08066585], [1516575060000, 0.042329, 0.04241, 0.042329, 0.04241, 0.260192], [1516575120000, 0.04241, 0.04241, 0.04232901, 0.042331, 0.46133859], [1516575180000, 0.04241, 0.04241, 0.04213875, 0.04241, 23.9624932], [1516575240000, 0.04241, 0.04241, 0.04215403, 0.04215406, 1.8922592], [1516575420000, 0.04216401, 0.04241, 0.042164, 0.04241, 6.25401], [1516575480000, 0.04240992, 0.04242972, 0.04240984, 0.04242972, 20.32767563], [1516575540000, 0.04218, 0.04242993, 0.04218, 0.04221502, 13.58332064], [1516575600000, 0.04221502, 0.04245047, 0.04221502, 0.04245047, 0.58924488], [1516575660000, 0.04221502, 0.04221502, 0.04221502, 0.04221502, 0.14167009], [1516575720000, 0.04221502, 0.04245047, 0.04213282, 0.04221502, 10.46564404], [1516575780000, 0.04221502, 0.04221502, 0.04221502, 0.04221502, 0.05383583], [1516575840000, 0.04211801, 0.04243396, 0.042118, 0.04243396, 23.97625661], [1516575900000, 0.04243392, 0.04243392, 0.04241392, 0.04241392, 0.12357712], [1516575960000, 0.042404, 0.042404, 0.04196728, 0.04196728, 29.9138931], [1516576140000, 0.04196728, 0.04196728, 0.04196728, 0.04196728, 0.0477], [1516576200000, 0.04200924, 0.04200924, 0.04196728, 0.04196728, 0.252], [1516576380000, 0.04210924, 0.04210924, 0.04210924, 0.04210924, 0.25], [1516576500000, 0.042279, 0.04230692, 0.042279, 0.04230692, 7.3892584], [1516576560000, 0.04228791, 0.04228791, 0.04228791, 0.04228791, 0.48503515], [1516576620000, 0.04228892, 0.04228892, 0.04228892, 0.04228892, 7.06282453], [1516576680000, 0.04210925, 0.04229199, 0.04210925, 0.04229199, 0.07389054], [1516576740000, 0.04210925, 0.04210925, 0.04195, 0.04195, 2.51987647], [1516576800000, 0.04226699, 0.04226699, 0.04203415, 0.04203415, 3.16124394], [1516576860000, 0.04203414, 0.04203414, 0.04203414, 0.04203414, 3.47181361], [1516576920000, 0.04203414, 0.04203414, 0.04203414, 0.04203414, 0.3], [1516577160000, 0.0422669, 0.0422669, 0.04203414, 0.04203414, 0.12862163], [1516577220000, 0.04203413, 0.04203413, 0.04203413, 0.04203413, 0.97452746], [1516577280000, 0.04203413, 0.04203414, 0.04203413, 0.04203414, 0.10899137], [1516577340000, 0.04207617, 0.04207617, 0.04207617, 0.04207617, 0.12337251], [1516577400000, 0.04207617, 0.04207617, 0.04203412, 0.04203412, 2.47930594], [1516577460000, 0.04207617, 0.04207617, 0.04207617, 0.04207617, 0.05245746], [1516577580000, 0.04207617, 0.04207622, 0.04207617, 0.04207622, 0.89590014], [1516577640000, 0.04226691, 0.04226691, 0.04207617, 0.04207622, 7.40187074], [1516577700000, 0.04207622, 0.04207622, 0.04207622, 0.04207622, 0.05254122], [1516577820000, 0.04207622, 0.04207622, 0.04196724, 0.04196724, 0.36023052], [1516577880000, 0.04207621, 0.04207622, 0.04196722, 0.04196722, 5.31069376], [1516577940000, 0.04207622, 0.04207622, 0.04196724, 0.04196724, 2.79150733], [1516578000000, 0.04207622, 0.042325, 0.04196724, 0.042325, 1.6313926], [1516578120000, 0.04230097, 0.04230099, 0.04230097, 0.04230099, 6.13425876], [1516578180000, 0.04230099, 0.04230099, 0.04230098, 0.04230098, 12.4862679], [1516578240000, 0.04230098, 0.04230099, 0.0420895, 0.0420895, 0.56848942], [1516578300000, 0.0420895, 0.04230099, 0.0420895, 0.04230099, 1.36452998], [1516578420000, 0.0420895, 0.0420895, 0.0420895, 0.0420895, 0.1412901], [1516578480000, 0.04229, 0.04229, 0.04229, 0.04229, 0.16006698], [1516578540000, 0.04227, 0.04230099, 0.04227, 0.04230099, 0.26956874], [1516578600000, 0.04229001, 0.04229001, 0.0420895, 0.0420895, 3.3785366], [1516578660000, 0.04229001, 0.04229001, 0.04229001, 0.04229001, 0.10541991], [1516578780000, 0.04228765, 0.04228765, 0.04228765, 0.04228765, 1.567701], [1516578840000, 0.04229002, 0.04229002, 0.04228766, 0.04228766, 0.25068477], [1516578900000, 0.04228766, 0.04229002, 0.04228766, 0.04228766, 0.79765206], [1516578960000, 0.04228766, 0.04228899, 0.04228766, 0.04228766, 2.12674841], [1516579020000, 0.04228766, 0.04228899, 0.04228766, 0.04228899, 2.45014162], [1516579080000, 0.04228766, 0.04256302, 0.04216301, 0.04228766, 54.05858891], [1516579140000, 0.04246456, 0.042534, 0.042201, 0.04220601, 2.96010254], [1516579200000, 0.0422, 0.042519, 0.04219631, 0.04219631, 0.51719516], [1516579260000, 0.04219404, 0.04219404, 0.04219404, 0.04219404, 2.9899], [1516579320000, 0.042192, 0.042202, 0.042192, 0.042202, 1.35720685], [1516579380000, 0.04251896, 0.04251898, 0.042204, 0.04251898, 0.67093347], [1516579440000, 0.04221402, 0.04221404, 0.04221402, 0.04221404, 0.73353408], [1516579500000, 0.04231408, 0.04254365, 0.04231408, 0.04254365, 5.02362892], [1516579560000, 0.04233093, 0.04257781, 0.04231408, 0.04231408, 2.33802131], [1516579620000, 0.04231408, 0.04257781, 0.04220901, 0.042219, 3.42826063], [1516579680000, 0.04221901, 0.042505, 0.04207709, 0.04208235, 15.53896152], [1516579740000, 0.04208237, 0.042445, 0.04208237, 0.042445, 3.04496664], [1516579800000, 0.04211701, 0.04211701, 0.04211701, 0.04211701, 0.45215987], [1516579860000, 0.04244498, 0.04244498, 0.04219549, 0.04219549, 0.11594899], [1516579920000, 0.0421955, 0.04244497, 0.0421955, 0.04244497, 0.16788532], [1516579980000, 0.04219549, 0.04244497, 0.04219549, 0.04244497, 0.08815038], [1516580040000, 0.04219549, 0.04219549, 0.04219548, 0.04219548, 7.97108634], [1516580100000, 0.04219549, 0.04219549, 0.04200501, 0.04200501, 0.46718708], [1516580160000, 0.04200501, 0.04200501, 0.04200501, 0.04200501, 2.06302661], [1516580220000, 0.04218, 0.04219549, 0.04218, 0.04219549, 2.44204611], [1516580280000, 0.04220502, 0.04226972, 0.04220502, 0.04226971, 13.23010483], [1516580340000, 0.04233497, 0.04233497, 0.04233497, 0.04233497, 0.5189559], [1516580400000, 0.04233497, 0.04233498, 0.04233497, 0.04233497, 0.76414813], [1516580460000, 0.04233497, 0.04233497, 0.04233497, 0.04233497, 0.0520846], [1516580520000, 0.04233498, 0.04244496, 0.04233497, 0.04234, 2.80068891], [1516580580000, 0.04233502, 0.04234, 0.04200002, 0.04200002, 98.2310605], [1516580640000, 0.04200069, 0.04200069, 0.04200069, 0.04200069, 0.03790128], [1516580700000, 0.04233484, 0.04233485, 0.04200116, 0.04200116, 0.37077457], [1516580760000, 0.04231859, 0.04231859, 0.04202006, 0.04202054, 0.61470007], [1516580820000, 0.04233477, 0.04234, 0.04233476, 0.04234, 1.6925067], [1516580880000, 0.042397, 0.042397, 0.042397, 0.042397, 0.06868083], [1516580940000, 0.04202194, 0.04223853, 0.04202194, 0.04223853, 1.58175987], [1516581000000, 0.04223853, 0.04223853, 0.04223853, 0.04223853, 0.05220352], [1516581060000, 0.04239999, 0.04239999, 0.04223853, 0.04223853, 0.12359047], [1516581120000, 0.04223853, 0.04223853, 0.0422, 0.0422, 7.41350826], [1516581180000, 0.0422, 0.0422, 0.0422, 0.0422, 0.07750184], [1516581240000, 0.0420218, 0.04236499, 0.042, 0.04236499, 20.67619567], [1516581360000, 0.04201783, 0.04234487, 0.04201783, 0.042335, 2.83822135], [1516581420000, 0.04201782, 0.042305, 0.04195601, 0.042305, 14.06123553], [1516581540000, 0.04228999, 0.04228999, 0.04228999, 0.04228999, 0.03331571], [1516581600000, 0.04197816, 0.04197816, 0.04197816, 0.04197816, 0.11354866], [1516581660000, 0.04228992, 0.04228995, 0.04228992, 0.04228995, 0.84209374], [1516581720000, 0.04200004, 0.04200004, 0.04195, 0.04195, 0.46836905], [1516581780000, 0.04195101, 0.04226309, 0.04195101, 0.04226309, 1.6735782], [1516581840000, 0.04226308, 0.04227998, 0.04226308, 0.04227998, 0.993756], [1516581900000, 0.04227998, 0.042285, 0.04195148, 0.04195148, 2.87363033], [1516581960000, 0.04197782, 0.04197784, 0.04197782, 0.04197784, 4.90533478], [1516582020000, 0.04197799, 0.04197799, 0.04196501, 0.04196501, 10.90533479], [1516582080000, 0.04196501, 0.042, 0.04196501, 0.042, 0.0787256], [1516582200000, 0.04227743, 0.04227754, 0.04227743, 0.04227754, 0.23653299], [1516582320000, 0.04197101, 0.04197101, 0.04197101, 0.04197101, 0.50464277], [1516582380000, 0.041991, 0.04199101, 0.041991, 0.04199101, 1.55465462], [1516582440000, 0.04227694, 0.04227699, 0.04227694, 0.04227695, 6.02119766], [1516582500000, 0.04227695, 0.04232199, 0.041971, 0.042001, 25.51056193], [1516582560000, 0.041991, 0.042, 0.041991, 0.042, 1.89435202], [1516582680000, 0.04199105, 0.04233499, 0.04199104, 0.04233499, 0.7895536], [1516582740000, 0.04232464, 0.04232464, 0.04232464, 0.04232464, 0.09290531], [1516582860000, 0.04232456, 0.04232456, 0.04199274, 0.04199299, 5.00035207], [1516582920000, 0.04199313, 0.04232465, 0.04199313, 0.04232465, 2.25270706], [1516582980000, 0.04232465, 0.04232491, 0.04232465, 0.04232491, 0.9472865], [1516583040000, 0.04233001, 0.04241212, 0.04233001, 0.04241212, 0.41448469], [1516583100000, 0.04242855, 0.04244497, 0.04241212, 0.04241212, 1.01063484], [1516583160000, 0.04244496, 0.04246217, 0.04241212, 0.04241212, 2.66704729], [1516583220000, 0.04241212, 0.04241212, 0.04241212, 0.04241212, 0.02599493], [1516583280000, 0.04241212, 0.04241212, 0.04241212, 0.04241212, 0.28440107], [1516583340000, 0.04241212, 0.04241212, 0.04241212, 0.04241212, 0.91606587], [1516583400000, 0.04241213, 0.04257782, 0.04241213, 0.04246218, 0.33357126], [1516583460000, 0.04246218, 0.04257782, 0.04246218, 0.04246218, 1.10426628], [1516583520000, 0.04246218, 0.04259998, 0.04246218, 0.04259998, 2.95581849], [1516583580000, 0.04252866, 0.04259499, 0.04252866, 0.04252866, 6.50278379], [1516583640000, 0.04252866, 0.04252866, 0.04241211, 0.0424296, 4.43724329], [1516583700000, 0.04241212, 0.0424296, 0.04241212, 0.0424296, 1.03793301], [1516583760000, 0.04241212, 0.04241213, 0.04241212, 0.04241213, 0.51361487], [1516583820000, 0.04241212, 0.04241213, 0.04241212, 0.04241212, 14.23458044], [1516583880000, 0.04241212, 0.04241213, 0.04241212, 0.04241213, 0.65702085], [1516584000000, 0.04241213, 0.0424296, 0.04241213, 0.04241213, 0.71057635], [1516584060000, 0.04241213, 0.04241213, 0.04241213, 0.04241213, 1.81442141], [1516584120000, 0.0424296, 0.0424296, 0.0424296, 0.0424296, 1.2338253], [1516584180000, 0.0424296, 0.0424296, 0.04241213, 0.04242087, 2.7436949], [1516584300000, 0.04242086, 0.04242087, 0.04241214, 0.04242087, 0.60632614], [1516584360000, 0.04241214, 0.04241214, 0.04241214, 0.04241214, 0.42698984], [1516584420000, 0.04241214, 0.04241214, 0.04241214, 0.04241214, 0.52599492], [1516584480000, 0.04241214, 0.04241214, 0.04241214, 0.04241214, 2.30148026], [1516584540000, 0.04241214, 0.04241214, 0.04241214, 0.04241214, 1.77080132], [1516584600000, 0.0424125, 0.04241251, 0.0424125, 0.04241251, 6.72053244], [1516584660000, 0.04241251, 0.04241251, 0.04241251, 0.04241251, 0.05280743], [1516584720000, 0.04241251, 0.04241251, 0.04241251, 0.04241251, 0.7655181], [1516584780000, 0.04241251, 0.04242087, 0.04241251, 0.04242087, 0.28318635], [1516584840000, 0.04242088, 0.04242088, 0.04242088, 0.04242088, 1.41344446], [1516584900000, 0.04242088, 0.04242088, 0.04242088, 0.04242088, 0.28025476], [1516584960000, 0.04242088, 0.04242088, 0.04242087, 0.04242087, 6.40099301], [1516585020000, 0.04242087, 0.04242088, 0.04242087, 0.04242088, 0.11315711], [1516585080000, 0.04242088, 0.04259997, 0.04242088, 0.04242088, 0.79452821], [1516585140000, 0.04242088, 0.04258499, 0.04242088, 0.04258498, 0.9175254], [1516585200000, 0.04242088, 0.0426, 0.04242088, 0.04242088, 2.06186498], [1516585260000, 0.0426, 0.0426, 0.04242088, 0.04242088, 1.91437912], [1516585320000, 0.04242088, 0.04242088, 0.04242087, 0.04242087, 4.28640308], [1516585380000, 0.04242087, 0.04242087, 0.04242087, 0.04242087, 1.41423523], [1516585440000, 0.04242087, 0.0426, 0.04242087, 0.04242088, 7.54829542], [1516585500000, 0.04242088, 0.04242088, 0.04242088, 0.04242088, 1.46223532], [1516585560000, 0.0426, 0.0426, 0.04242088, 0.0426, 1.86975561], [1516585620000, 0.04242088, 0.04242088, 0.04242088, 0.04242088, 0.48397526], [1516585740000, 0.04242088, 0.04259999, 0.04242088, 0.04259999, 0.05369529], [1516585860000, 0.0424209, 0.04242092, 0.0424209, 0.04242092, 3.1457662], [1516585920000, 0.04259999, 0.0426, 0.04242091, 0.04242093, 3.26175563], [1516585980000, 0.04242093, 0.04242093, 0.04242093, 0.04242093, 0.024], [1516586040000, 0.04250001, 0.04250001, 0.0425, 0.0425, 7.97151852], [1516586100000, 0.0425, 0.04250004, 0.04241212, 0.04250004, 33.97824628], [1516586160000, 0.04241212, 0.04241212, 0.04241212, 0.04241212, 7.883832], [1516586220000, 0.04241211, 0.04241212, 0.04208086, 0.04208098, 2.79225429], [1516586280000, 0.04241165, 0.04245981, 0.04241165, 0.04245981, 3.23774715], [1516586400000, 0.04212007, 0.042477, 0.04212007, 0.04247298, 3.20907736], [1516586460000, 0.04247299, 0.04247299, 0.04245983, 0.04245983, 3.20542081], [1516586520000, 0.04245983, 0.04252, 0.04245983, 0.04252, 7.36445622], [1516586580000, 0.04245983, 0.04252, 0.04245983, 0.04252, 1.36969529], [1516586640000, 0.04245983, 0.04245983, 0.04245983, 0.04245983, 0.96827446], [1516586700000, 0.04245983, 0.04252, 0.04245983, 0.04245983, 4.44875527], [1516586760000, 0.04245983, 0.04245983, 0.04245983, 0.04245983, 0.05193144], [1516586820000, 0.04245983, 0.04247086, 0.04245983, 0.04247086, 0.70793466], [1516586880000, 0.04247086, 0.04247086, 0.04245983, 0.04245983, 4.61593661], [1516586940000, 0.04245983, 0.04247086, 0.04245983, 0.04247086, 0.0964258], [1516587000000, 0.04245983, 0.04245983, 0.04245983, 0.04245983, 0.05193144], [1516587060000, 0.04245983, 0.04245983, 0.04245982, 0.04245982, 4.30135698], [1516587180000, 0.04245068, 0.04245983, 0.04245068, 0.04245983, 0.4], [1516587300000, 0.04245983, 0.04252, 0.04245983, 0.04252, 3.59492607], [1516587360000, 0.04251999, 0.04251999, 0.04226713, 0.04226713, 0.15101691], [1516587420000, 0.04226713, 0.04251999, 0.04226713, 0.04251999, 0.45717182], [1516587600000, 0.04236347, 0.04252, 0.04236347, 0.04252, 0.66260107], [1516587660000, 0.04252, 0.04252, 0.04252, 0.04252, 12.18204979], [1516587720000, 0.04226713, 0.04226713, 0.04226713, 0.04226713, 0.2294531], [1516587780000, 0.04251999, 0.04254, 0.04251999, 0.04254, 25.36639757], [1516587900000, 0.04259996, 0.04259999, 0.04259996, 0.04259999, 0.30906433], [1516587960000, 0.04259997, 0.04259998, 0.04259996, 0.04259996, 1.51979473], [1516588020000, 0.04259996, 0.04259996, 0.04259996, 0.04259996, 1.02676062], [1516588080000, 0.04259996, 0.04259997, 0.04259996, 0.04259997, 0.49300736], [1516588140000, 0.04259996, 0.04259996, 0.04259996, 0.04259996, 0.42676062], [1516588200000, 0.04259996, 0.04259997, 0.04259996, 0.04259997, 0.40462099], [1516588260000, 0.04259996, 0.04259997, 0.0425, 0.04250001, 42.37083443], [1516588320000, 0.0425, 0.0425, 0.0425, 0.0425, 0.43700412], [1516588380000, 0.04259997, 0.04259997, 0.04259997, 0.04259997, 0.13499971], [1516588440000, 0.04250001, 0.04259996, 0.04250001, 0.04259996, 0.89890993], [1516588500000, 0.04259996, 0.04259996, 0.04250001, 0.04250001, 0.18953605], [1516588620000, 0.04250001, 0.04250001, 0.04250001, 0.04250001, 5.0], [1516588680000, 0.04259996, 0.04259997, 0.04259996, 0.04259997, 0.27067474], [1516588800000, 0.04259993, 0.04259993, 0.04250001, 0.04250001, 0.15772417], [1516588860000, 0.04250001, 0.04259993, 0.04250001, 0.04250001, 4.45313059], [1516588920000, 0.04250002, 0.04250003, 0.0425, 0.0425, 10.399729], [1516588980000, 0.0425, 0.04250001, 0.0425, 0.04250001, 7.23160115], [1516589040000, 0.04250001, 0.04250001, 0.04250001, 0.04250001, 0.3902775], [1516589100000, 0.04250001, 0.04259996, 0.0425, 0.0425, 1.27546908], [1516589160000, 0.0425, 0.0425, 0.0425, 0.0425, 0.05188236], [1516589220000, 0.04250001, 0.04250001, 0.04250001, 0.04250001, 0.40192562], [1516589280000, 0.04250001, 0.04259996, 0.04250001, 0.04250001, 1.68790196], [1516589340000, 0.04259997, 0.04259998, 0.0425, 0.04250001, 0.7282849], [1516589400000, 0.04250001, 0.0426, 0.0421625, 0.04216251, 22.06776938], [1516589460000, 0.0424073, 0.04248996, 0.0424073, 0.04248996, 0.84814616], [1516589520000, 0.04226801, 0.04226801, 0.04226801, 0.04226801, 0.19461122], [1516589580000, 0.04226801, 0.04226801, 0.04226801, 0.04226801, 0.13060275], [1516589640000, 0.04226801, 0.04226801, 0.04226801, 0.04226801, 0.05223257], [1516589700000, 0.04226801, 0.04231029, 0.04216253, 0.04216253, 0.61634326], [1516589820000, 0.04240177, 0.04240177, 0.04240177, 0.04240177, 0.05617322], [1516589880000, 0.04245759, 0.042495, 0.04240178, 0.04240178, 7.42600127], [1516590000000, 0.04240178, 0.04259998, 0.04240178, 0.04259998, 5.79888887], [1516590120000, 0.04240178, 0.04240178, 0.04240177, 0.04240178, 3.32974877], [1516590180000, 0.04240177, 0.04240177, 0.042195, 0.042195, 1.65576159], [1516590240000, 0.04240177, 0.04259499, 0.04220101, 0.04220101, 1.13393556], [1516590300000, 0.04259499, 0.04259499, 0.04216257, 0.042529, 0.62298712], [1516590360000, 0.04216257, 0.04216257, 0.04216257, 0.04216257, 0.2], [1516590420000, 0.04249399, 0.04249399, 0.04249399, 0.04249399, 0.14664393], [1516590540000, 0.04216281, 0.04216281, 0.0421628, 0.0421628, 0.64226937], [1516590600000, 0.04216283, 0.04216283, 0.04216283, 0.04216283, 0.14930522], [1516590660000, 0.04216286, 0.04249399, 0.04216286, 0.04249399, 0.07048484], [1516590720000, 0.042489, 0.042489, 0.042489, 0.042489, 0.280523], [1516590840000, 0.04216299, 0.042163, 0.04216299, 0.042163, 0.75972542], [1516590900000, 0.04216312, 0.04216312, 0.04216312, 0.04216312, 0.12077776], [1516590960000, 0.04229, 0.04246116, 0.04229, 0.04246116, 0.67082426], [1516591020000, 0.0421633, 0.0421633, 0.0421633, 0.0421633, 0.10235806], [1516591080000, 0.042463, 0.042463, 0.042463, 0.042463, 2.34910393], [1516591140000, 0.04216746, 0.04216746, 0.04216746, 0.04216746, 0.02439729], [1516591200000, 0.04216801, 0.04216801, 0.04216801, 0.04216801, 0.0202], [1516591260000, 0.042463, 0.042585, 0.042463, 0.042585, 1.90095593], [1516591380000, 0.04247661, 0.04247662, 0.04247661, 0.04247662, 2.66310711], [1516591440000, 0.04247662, 0.04259999, 0.04247662, 0.04259999, 0.11139618], [1516591500000, 0.04247661, 0.04247662, 0.04247661, 0.04247662, 0.05191092], [1516591560000, 0.0426, 0.0426, 0.0426, 0.0426, 2.31600018], [1516591620000, 0.04247662, 0.0426, 0.04247662, 0.04247662, 0.90088052], [1516591680000, 0.04247662, 0.04247662, 0.04247662, 0.04247662, 0.05191092], [1516591740000, 0.04247662, 0.04247662, 0.04247662, 0.04247662, 0.02595546], [1516591800000, 0.04247662, 0.0426, 0.04247662, 0.04247662, 2.02460942], [1516591860000, 0.04247662, 0.0426, 0.04247662, 0.04247662, 0.12796558], [1516591920000, 0.04247662, 0.04247662, 0.04247662, 0.04247662, 0.05191092], [1516591980000, 0.04247662, 0.0426, 0.04247662, 0.04247662, 0.62947794], [1516592040000, 0.04247662, 0.04247662, 0.04247662, 0.04247662, 0.05191092], [1516592100000, 0.0426, 0.0426, 0.04247662, 0.0426, 1.2371228], [1516592220000, 0.04237237, 0.04237237, 0.04237237, 0.04237237, 0.27859012], [1516592280000, 0.04225664, 0.04225664, 0.04225664, 0.04225664, 0.28337998], [1516592340000, 0.04256499, 0.04256499, 0.042213, 0.042213, 0.05607992], [1516592400000, 0.042595, 0.042595, 0.042595, 0.042595, 0.23476933], [1516592580000, 0.04254494, 0.04254494, 0.04254494, 0.04254494, 0.0408178], [1516592700000, 0.04254495, 0.04255269, 0.04224801, 0.04224801, 0.43504579], [1516592760000, 0.04256, 0.04256, 0.04256, 0.04256, 0.02252556], [1516592880000, 0.04243482, 0.04243482, 0.04243482, 0.04243482, 0.03010876], [1516592940000, 0.04243482, 0.04243482, 0.04243482, 0.04243482, 0.05445346], [1516593000000, 0.04259999, 0.0426, 0.04243482, 0.04243482, 0.38827677], [1516593060000, 0.04243482, 0.04243482, 0.04243482, 0.04243482, 0.94690244], [1516593120000, 0.0425, 0.0425, 0.0425, 0.0425, 1.0], [1516593180000, 0.04243482, 0.04250001, 0.04243482, 0.04250001, 0.72864429], [1516593240000, 0.04250001, 0.04257101, 0.0425, 0.0425, 1.41669931], [1516593300000, 0.04250001, 0.04257101, 0.04250001, 0.04250001, 0.90139931], [1516593360000, 0.0425, 0.0425, 0.04216258, 0.04216258, 29.34728343], [1516593420000, 0.0424, 0.0424, 0.04217815, 0.0424, 3.95772906], [1516593480000, 0.0424, 0.0424, 0.0424, 0.0424, 0.14000067], [1516593540000, 0.0424, 0.042525, 0.0424, 0.042525, 0.58011029], [1516593600000, 0.04252498, 0.04252498, 0.04252498, 0.04252498, 0.57563271], [1516593780000, 0.04217886, 0.04217886, 0.04217883, 0.04217883, 3.44703553], [1516593840000, 0.04217883, 0.04217883, 0.04217819, 0.04217819, 3.91594106], [1516593900000, 0.04217819, 0.04217819, 0.04217819, 0.04217819, 0.21737089], [1516594020000, 0.0425, 0.0425, 0.0425, 0.0425, 0.14732595], [1516594140000, 0.0425, 0.042525, 0.0425, 0.042525, 0.63427052], [1516594200000, 0.04254998, 0.04254998, 0.04220015, 0.04220018, 1.0356635], [1516594320000, 0.04220601, 0.04220601, 0.04220601, 0.04220601, 0.3], [1516594380000, 0.04224401, 0.04224401, 0.04224401, 0.04224401, 0.6], [1516594440000, 0.04253497, 0.04253498, 0.04253497, 0.04253498, 1.42501987], [1516594500000, 0.04253498, 0.04255, 0.04253498, 0.04255, 1.2632752], [1516594560000, 0.04253499, 0.04253499, 0.04253499, 0.04253499, 0.96083344], [1516594680000, 0.04253499, 0.04253499, 0.04253499, 0.04253499, 5.9609435], [1516594740000, 0.04253499, 0.04253499, 0.04225101, 0.042256, 3.43282417], [1516594800000, 0.042256, 0.04255, 0.042256, 0.04255, 2.08850274], [1516594860000, 0.04226611, 0.04255, 0.04226611, 0.04255, 13.13463946], [1516594920000, 0.04227603, 0.0426, 0.04227601, 0.04255001, 0.29716654], [1516594980000, 0.0426, 0.0426, 0.0426, 0.0426, 0.05182178], [1516595040000, 0.04255001, 0.04255001, 0.04255001, 0.04255001, 0.30046194], [1516595100000, 0.04255001, 0.04255001, 0.04255001, 0.04255001, 0.92099462], [1516595160000, 0.0426, 0.0426, 0.0426, 0.0426, 1.4969639], [1516595220000, 0.04255001, 0.04255001, 0.04255001, 0.04255001, 0.782556], [1516595280000, 0.04255001, 0.04262999, 0.04255001, 0.04262999, 1.31238785], [1516595340000, 0.04255001, 0.04255001, 0.04255001, 0.04255001, 1.12462396], [1516595400000, 0.04255001, 0.04263044, 0.04255001, 0.04263044, 1.35337957], [1516595460000, 0.04263044, 0.0426635, 0.04263, 0.0426635, 3.58534411], [1516595520000, 0.04266465, 0.04268, 0.04266465, 0.04268, 0.87739732], [1516595580000, 0.04268879, 0.04270099, 0.04268879, 0.04270099, 0.40849927], [1516595640000, 0.0427065, 0.0428, 0.04257001, 0.0428, 2.06006494], [1516595700000, 0.04270651, 0.0429, 0.04270651, 0.0429, 1.11402989], [1516595760000, 0.04270659, 0.0427066, 0.04270659, 0.0427066, 0.33828536], [1516595820000, 0.0427066, 0.04278006, 0.0427066, 0.04278006, 3.67746213], [1516595880000, 0.04278006, 0.0429, 0.04278006, 0.04278006, 3.66874262], [1516595940000, 0.04293497, 0.04293497, 0.04270651, 0.0428, 6.41629713], [1516596000000, 0.04270651, 0.04297793, 0.04270651, 0.04270651, 2.0356906], [1516596060000, 0.04270651, 0.04297299, 0.04270651, 0.04297299, 2.52598398], [1516596120000, 0.04270651, 0.04270651, 0.04270651, 0.04270651, 0.13657964], [1516596180000, 0.04270652, 0.04270652, 0.04251303, 0.04251303, 4.06120371], [1516596240000, 0.04254301, 0.04258801, 0.04254301, 0.04258801, 0.63503695], [1516596300000, 0.04261301, 0.042628, 0.04261301, 0.042628, 6.84553926], [1516596360000, 0.04263301, 0.0429, 0.04263301, 0.042638, 0.3521052], [1516596480000, 0.04289999, 0.04289999, 0.04264301, 0.04264301, 1.02797203], [1516596540000, 0.042648, 0.042648, 0.042648, 0.042648, 0.20164], [1516596600000, 0.0429, 0.04297792, 0.0429, 0.04297792, 0.92477851], [1516596660000, 0.04297792, 0.04297792, 0.04270334, 0.04270334, 2.53961656], [1516596780000, 0.04297792, 0.0430001, 0.04297792, 0.042995, 43.58777963], [1516596840000, 0.04299501, 0.04299501, 0.042995, 0.042995, 8.20273277], [1516596900000, 0.042995, 0.042995, 0.04299, 0.042995, 9.77664834], [1516596960000, 0.04284462, 0.042995, 0.04274665, 0.04274665, 0.60850387], [1516597020000, 0.04268209, 0.04268209, 0.04268209, 0.04268209, 0.03295552], [1516597140000, 0.04268222, 0.04268222, 0.04268222, 0.04268222, 0.07265598], [1516597200000, 0.04268215, 0.04298999, 0.04267729, 0.04267731, 1.99833783], [1516597260000, 0.04267732, 0.04298384, 0.04267729, 0.04267729, 4.77717857], [1516597320000, 0.04298479, 0.04298479, 0.04267729, 0.04267729, 1.37877566], [1516597380000, 0.04267729, 0.04267729, 0.04267729, 0.04267729, 1.87088301], [1516597440000, 0.04267729, 0.04267729, 0.04264801, 0.04267729, 14.78664525], [1516597500000, 0.04267729, 0.04278523, 0.04255801, 0.04278523, 25.53578719], [1516597560000, 0.04252201, 0.04282802, 0.042522, 0.042542, 1.3610621], [1516597620000, 0.042587, 0.042587, 0.042587, 0.042587, 0.03837676], [1516597680000, 0.04282802, 0.04289948, 0.042576, 0.042576, 0.58721193], [1516597740000, 0.04295999, 0.04295999, 0.04295999, 0.04295999, 0.02403691], [1516597800000, 0.04293999, 0.04293999, 0.04293999, 0.04293999, 2.96358434], [1516597860000, 0.04266267, 0.04266268, 0.04266267, 0.04266268, 0.92432524], [1516597920000, 0.04288499, 0.04288499, 0.04288499, 0.04288499, 0.38836442], [1516597980000, 0.04266271, 0.04266271, 0.04266269, 0.04266269, 3.52471672], [1516598100000, 0.04285, 0.04285, 0.04285, 0.04285, 0.70011666], [1516598160000, 0.04285, 0.0429, 0.04285, 0.0429, 2.86432327], [1516598280000, 0.04259715, 0.04259715, 0.04259715, 0.04259715, 0.10033104], [1516598340000, 0.0425972, 0.0425972, 0.0425972, 0.0425972, 0.05004124], [1516598400000, 0.04274859, 0.0429, 0.04274859, 0.04274859, 1.3298027], [1516598460000, 0.04274859, 0.04274859, 0.04274859, 0.04274859, 0.4457303], [1516598580000, 0.0429, 0.0429, 0.0429, 0.0429, 0.50926482], [1516598640000, 0.0429, 0.0429, 0.04274859, 0.04274859, 0.13001162], [1516598700000, 0.04274859, 0.04274859, 0.04267442, 0.04267442, 8.0], [1516598760000, 0.04267442, 0.04267442, 0.04267442, 0.04267442, 0.09769673], [1516598820000, 0.04267442, 0.04267442, 0.04267442, 0.04267442, 0.05183462], [1516598880000, 0.04267442, 0.04267442, 0.04267442, 0.04267442, 0.05190631], [1516598940000, 0.0425503, 0.0425503, 0.0425503, 0.0425503, 0.20652], [1516599000000, 0.042669, 0.042669, 0.04255031, 0.04255031, 7.46872436], [1516599060000, 0.04255031, 0.04255031, 0.0425503, 0.04255031, 1.58343677], [1516599120000, 0.04255031, 0.04255031, 0.04239702, 0.04255031, 3.99941389], [1516599180000, 0.04255031, 0.04255031, 0.04255031, 0.04255031, 5.40289324], [1516599240000, 0.0425503, 0.0425503, 0.04252388, 0.04252388, 3.933841], [1516599300000, 0.0425503, 0.0425503, 0.0425503, 0.0425503, 0.05185326], [1516599360000, 0.0425503, 0.0425503, 0.0425503, 0.0425503, 0.63939318], [1516599420000, 0.0425503, 0.0425503, 0.0425503, 0.0425503, 0.20631327], [1516599480000, 0.0425503, 0.0425503, 0.0425503, 0.0425503, 8.83622826], [1516599540000, 0.0425239, 0.0425239, 0.0425239, 0.0425239, 7.17128542], [1516599600000, 0.04252389, 0.0425239, 0.04252389, 0.04252389, 8.43582986], [1516599660000, 0.04252389, 0.04252389, 0.04252388, 0.04252389, 5.80603292], [1516599720000, 0.04252388, 0.0425239, 0.04252388, 0.0425239, 4.86466207], [1516599780000, 0.0425239, 0.0425239, 0.04252388, 0.04252388, 7.3506856], [1516599840000, 0.0425239, 0.0425239, 0.0425238, 0.0425238, 7.99803863], [1516599900000, 0.0425239, 0.0425239, 0.04235225, 0.04235225, 27.60146161], [1516599960000, 0.04226624, 0.04235225, 0.04226624, 0.042286, 33.48587882], [1516600020000, 0.042286, 0.042545, 0.04226712, 0.042545, 14.80507254], [1516600200000, 0.042545, 0.042545, 0.042545, 0.042545, 0.23504524], [1516600440000, 0.042545, 0.042545, 0.042545, 0.042545, 0.012], [1516600500000, 0.04228601, 0.0425503, 0.04228601, 0.0425503, 0.45535941], [1516600800000, 0.0424, 0.0424, 0.0424, 0.0424, 0.2645], [1516600920000, 0.04228601, 0.04254, 0.04228601, 0.04254, 1.67643294], [1516600980000, 0.04228601, 0.04228601, 0.04228601, 0.04228601, 0.0949], [1516601040000, 0.04228601, 0.04228601, 0.04228601, 0.04228601, 0.27751778], [1516601100000, 0.04254498, 0.04254498, 0.04228601, 0.04254497, 0.58215301], [1516601160000, 0.04254497, 0.042545, 0.04254497, 0.042545, 7.78481824], [1516601220000, 0.04228601, 0.04254499, 0.04228601, 0.04254499, 1.59222879], [1516601280000, 0.04228601, 0.04228601, 0.04228601, 0.04228601, 2.39363059], [1516601400000, 0.04228601, 0.04228601, 0.042286, 0.042286, 10.13384554], [1516601460000, 0.042286, 0.04254498, 0.042286, 0.04254498, 1.28026479], [1516601580000, 0.04253999, 0.04253999, 0.04253999, 0.04253999, 1.25], [1516601700000, 0.04226623, 0.04253499, 0.04226623, 0.04253499, 0.40206852], [1516601760000, 0.04226623, 0.04226623, 0.04226623, 0.04226623, 0.4056808], [1516601820000, 0.04226623, 0.042535, 0.04226623, 0.042535, 2.32837996], [1516601880000, 0.04230001, 0.04253999, 0.04230001, 0.04253999, 0.3913961], [1516601940000, 0.04226623, 0.04226623, 0.04226623, 0.04226623, 1.00228926], [1516602000000, 0.04226623, 0.04226623, 0.04226623, 0.04226623, 2.27459037], [1516602060000, 0.0423719, 0.0423719, 0.04226623, 0.04226623, 1.34423658], [1516602120000, 0.04254492, 0.04254492, 0.04254492, 0.04254492, 0.22532102], [1516602180000, 0.04235931, 0.04235931, 0.04226623, 0.04226623, 1.35141493], [1516602300000, 0.04253999, 0.04253999, 0.04226623, 0.04226623, 0.93689408], [1516602360000, 0.04254, 0.04254, 0.04254, 0.04254, 0.23496197], [1516602420000, 0.04226623, 0.04226623, 0.04226623, 0.04226623, 0.03291321], [1516602480000, 0.04226623, 0.04226623, 0.04226623, 0.04226623, 0.29927198], [1516602600000, 0.04251998, 0.04251998, 0.04251998, 0.04251998, 0.14515154], [1516602660000, 0.04226623, 0.04226623, 0.04226623, 0.04226623, 0.23026618], [1516602720000, 0.04251399, 0.04251399, 0.04226623, 0.04226623, 0.13757576], [1516602780000, 0.04226623, 0.04250899, 0.04226623, 0.04226623, 0.86007792], [1516602840000, 0.04250899, 0.04250899, 0.04250899, 0.04250899, 0.05969832], [1516602900000, 0.04250898, 0.04250898, 0.04250897, 0.04250897, 0.5435753], [1516602960000, 0.04226623, 0.04226623, 0.04226623, 0.04226623, 0.10669274], [1516603020000, 0.04226623, 0.04226623, 0.04226623, 0.04226623, 0.08081496], [1516603140000, 0.04226623, 0.04226623, 0.04226623, 0.04226623, 0.12039908], [1516603200000, 0.04226623, 0.04250894, 0.04226623, 0.04250894, 1.02182731], [1516603320000, 0.04250894, 0.04250895, 0.04250894, 0.04250895, 4.45529851], [1516603380000, 0.04250895, 0.04250895, 0.04250894, 0.04250894, 1.44510831], [1516603440000, 0.04250894, 0.04250895, 0.04250894, 0.04250894, 7.50246133], [1516603500000, 0.04250894, 0.04250895, 0.04232157, 0.04232157, 1.45433347], [1516603560000, 0.04232157, 0.04232157, 0.04232157, 0.04232157, 0.10397947], [1516603620000, 0.04248614, 0.04248614, 0.04248614, 0.04248614, 0.02605069], [1516603680000, 0.04248614, 0.04250896, 0.04248614, 0.04250896, 0.05210138], [1516603740000, 0.04250896, 0.04250896, 0.04232157, 0.04232157, 4.20432516], [1516603800000, 0.04232157, 0.04248615, 0.04232157, 0.04248615, 3.60572607], [1516603920000, 0.04232157, 0.04232157, 0.04232157, 0.04232157, 0.05010072], [1516603980000, 0.04248615, 0.04248615, 0.04248615, 0.04248615, 0.50193165], [1516604040000, 0.04248615, 0.04248615, 0.04226624, 0.04226624, 3.2974041], [1516604100000, 0.04248615, 0.04248615, 0.04226624, 0.04226624, 0.78553155], [1516604160000, 0.04248615, 0.04248615, 0.04248615, 0.04248615, 0.4218897], [1516604220000, 0.04226624, 0.04226624, 0.04226624, 0.04226624, 0.16822428], [1516604280000, 0.04248615, 0.04248615, 0.04248615, 0.04248615, 0.04625002], [1516604340000, 0.04248615, 0.04248616, 0.04248615, 0.04248616, 1.69445005], [1516604400000, 0.04226624, 0.04248615, 0.04226624, 0.04248615, 0.3179713], [1516604520000, 0.04226624, 0.04248615, 0.04226624, 0.04248615, 0.58073819], [1516604640000, 0.04226624, 0.04226624, 0.04226624, 0.04226624, 0.26215756], [1516604700000, 0.04245374, 0.04245374, 0.04245374, 0.04245374, 0.05], [1516604760000, 0.04248615, 0.04248615, 0.04245374, 0.04245374, 0.19376971], [1516604820000, 0.04245374, 0.04245374, 0.04245374, 0.04245374, 0.05193888], [1516604880000, 0.04245374, 0.04245374, 0.04245374, 0.04245374, 0.05193888], [1516604940000, 0.04245374, 0.04245374, 0.04245374, 0.04245374, 1.97840702], [1516605000000, 0.04245374, 0.04245374, 0.04245374, 0.04245374, 3.4921843], [1516605060000, 0.04245374, 0.04245374, 0.04245374, 0.04245374, 0.68395551], [1516605120000, 0.04245374, 0.04245375, 0.04245374, 0.04245374, 1.10749341], [1516605180000, 0.04245374, 0.04245374, 0.04245373, 0.04245373, 2.51197666], [1516605240000, 0.04245374, 0.04245374, 0.04245374, 0.04245374, 0.02501504], [1516605300000, 0.04245289, 0.04245374, 0.04245289, 0.04245374, 0.91311372], [1516605360000, 0.04245375, 0.04248615, 0.04245374, 0.04248615, 2.04120363], [1516605420000, 0.04245375, 0.04248615, 0.04245374, 0.04245375, 1.66978129], [1516605480000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 0.65589069], [1516605540000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 0.02596944], [1516605600000, 0.04245375, 0.04248615, 0.04245375, 0.04248615, 1.31672917], [1516605660000, 0.04245375, 0.04248615, 0.04245375, 0.04245375, 0.06885591], [1516605720000, 0.04245375, 0.04248615, 0.04245375, 0.04245375, 0.29880511], [1516605780000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 3.34637288], [1516605840000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 0.07344497], [1516605900000, 0.04245375, 0.04245376, 0.04245375, 0.04245375, 1.24287612], [1516605960000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 2.39823818], [1516606020000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 0.42761199], [1516606080000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 0.05193888], [1516606140000, 0.04245375, 0.04245376, 0.04245375, 0.04245376, 1.1406186], [1516606200000, 0.04245375, 0.04248615, 0.04245375, 0.04248615, 1.44586305], [1516606260000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 0.65960014], [1516606320000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 1.24258683], [1516606380000, 0.04245375, 0.04249999, 0.04245375, 0.04245376, 1.18403512], [1516606440000, 0.04245377, 0.04249999, 0.04245377, 0.04249999, 5.13667164], [1516606500000, 0.04249999, 0.0425, 0.04245376, 0.04245376, 10.02793582], [1516606560000, 0.04245376, 0.04245376, 0.04245376, 0.04245376, 0.04597406], [1516606620000, 0.04245376, 0.04245376, 0.04245376, 0.04245376, 1.38210795], [1516606680000, 0.04245376, 0.04245376, 0.04245376, 0.04245376, 0.05193886], [1516606740000, 0.04245376, 0.04245376, 0.04245375, 0.04245375, 22.15875492], [1516606800000, 0.04245375, 0.04245376, 0.04245375, 0.04245376, 2.91808688], [1516606860000, 0.04245375, 0.04245377, 0.04245375, 0.04245377, 11.7666371], [1516606920000, 0.04245377, 0.04245377, 0.04245375, 0.04245375, 8.34692363], [1516606980000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 3.59393888], [1516607040000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 2.20976856], [1516607100000, 0.04245375, 0.0425, 0.04245375, 0.04245375, 2.35022864], [1516607160000, 0.04245375, 0.0425, 0.04245375, 0.04245375, 23.27747055], [1516607220000, 0.04245375, 0.0425, 0.04245375, 0.04245375, 1.08882252], [1516607280000, 0.0425, 0.0425, 0.04245375, 0.04245375, 3.50789747], [1516607340000, 0.04245375, 0.0425, 0.04245375, 0.0425, 4.53786601], [1516607400000, 0.04245375, 0.0425, 0.04245375, 0.0425, 0.5944271], [1516607460000, 0.04245375, 0.0425, 0.04245375, 0.04245375, 0.54714564], [1516607520000, 0.04245375, 0.04245375, 0.04245375, 0.04245375, 0.05193888], [1516607580000, 0.04245375, 0.04245376, 0.04245375, 0.04245376, 0.68492142], [1516607640000, 0.04245376, 0.04245376, 0.04245376, 0.04245376, 5.3275312], [1516607700000, 0.04245376, 0.0425, 0.04245376, 0.04245376, 0.3064349], [1516607760000, 0.04245376, 0.04245376, 0.04245376, 0.04245376, 0.05193886], [1516607820000, 0.04245376, 0.04245377, 0.04245376, 0.04245377, 0.14401602], [1516607880000, 0.04245377, 0.04245377, 0.04245377, 0.04245377, 0.05193886], [1516607940000, 0.04245377, 0.0425, 0.04245377, 0.04245377, 0.5224429], [1516608000000, 0.04245377, 0.0425, 0.04245377, 0.0425, 6.40039954], [1516608060000, 0.04245377, 0.04245377, 0.04245289, 0.0424529, 1.71107442], [1516608120000, 0.0424529, 0.0425, 0.0424529, 0.0425, 4.72689628], [1516608180000, 0.0424529, 0.0425, 0.0424529, 0.0424529, 1.51102763], [1516608240000, 0.0424529, 0.0424529, 0.04245289, 0.04245289, 1.80083992], [1516608300000, 0.04245289, 0.0425, 0.04220005, 0.0425, 3.49039964], [1516608360000, 0.0422554, 0.0422554, 0.0422002, 0.0422002, 0.04637045], [1516608420000, 0.0422554, 0.0422554, 0.0422554, 0.0422554, 1.50648484], [1516608480000, 0.0422554, 0.0422554, 0.0422554, 0.0422554, 0.10009556], [1516608600000, 0.0425, 0.0425, 0.0425, 0.0425, 1.78733733], [1516608660000, 0.0423, 0.0423, 0.04225541, 0.04225541, 0.1022197], [1516608720000, 0.04225541, 0.0423, 0.04225541, 0.0423, 1.31632936], [1516608780000, 0.04230001, 0.0425, 0.04230001, 0.0425, 0.61233529], [1516608840000, 0.04230001, 0.04230001, 0.04230001, 0.04230001, 0.02000465], [1516608900000, 0.04249999, 0.04249999, 0.04230001, 0.04230001, 0.52962088], [1516608960000, 0.04230001, 0.04249999, 0.04230001, 0.04249999, 1.33516975], [1516609020000, 0.04230001, 0.04249999, 0.04230001, 0.04230001, 1.24410904], [1516609200000, 0.04234001, 0.04234001, 0.04234001, 0.04234001, 0.3337], [1516609260000, 0.04249995, 0.04249995, 0.04249995, 0.04249995, 0.04417496], [1516609320000, 0.04234001, 0.04234001, 0.04234001, 0.04234001, 0.3568], [1516609380000, 0.04236008, 0.04236008, 0.04236008, 0.04236008, 1.15327619], [1516609440000, 0.04236008, 0.04236008, 0.04236008, 0.04236008, 0.02192235], [1516609500000, 0.04249995, 0.04249995, 0.04249995, 0.04249995, 0.05842015], [1516609560000, 0.04249994, 0.04249994, 0.04249901, 0.04249993, 0.28256521], [1516609620000, 0.04249901, 0.04249993, 0.04249901, 0.04249993, 2.58804766], [1516609680000, 0.04249993, 0.04249993, 0.04249993, 0.04249993, 1.14368244], [1516609740000, 0.04249993, 0.04249993, 0.04236009, 0.04236009, 0.18157848], [1516609800000, 0.04249992, 0.04249992, 0.04231001, 0.04236008, 23.91586787], [1516609860000, 0.04236008, 0.04236008, 0.04231001, 0.04231001, 1.29684672], [1516609920000, 0.04231001, 0.04236008, 0.04231001, 0.04231001, 2.92635391], [1516609980000, 0.04231001, 0.04231001, 0.04231001, 0.04231001, 12.01788051], [1516610040000, 0.04231001, 0.04236008, 0.04231, 0.04231, 8.2113212], [1516610100000, 0.04231, 0.04231, 0.0423, 0.0423, 7.85829095], [1516610160000, 0.04222001, 0.0423, 0.04222001, 0.04222001, 24.66977726], [1516610220000, 0.04222015, 0.04231, 0.04220023, 0.04220023, 43.19626217], [1516610280000, 0.04220023, 0.04231, 0.04220021, 0.04220021, 14.57453005], [1516610340000, 0.04231, 0.04231, 0.04231, 0.04231, 0.05221347], [1516610400000, 0.04231, 0.04231, 0.04220021, 0.04220021, 0.76130314], [1516610460000, 0.04231, 0.04231, 0.04231, 0.04231, 0.05225092], [1516610520000, 0.042309, 0.04231, 0.042309, 0.04231, 17.17792139], [1516610580000, 0.042398, 0.04249992, 0.042398, 0.04249992, 15.35099482], [1516610640000, 0.04249992, 0.04249993, 0.04249992, 0.04249993, 1.32857421], [1516610700000, 0.04249994, 0.04249995, 0.042495, 0.042495, 1.22067723], [1516610760000, 0.04249995, 0.04249995, 0.04221241, 0.04221241, 0.245], [1516610820000, 0.0422226, 0.04249994, 0.0422226, 0.04222465, 3.55020135], [1516610880000, 0.04249994, 0.0425, 0.04249994, 0.0425, 30.0], [1516610940000, 0.04249999, 0.0425, 0.04249999, 0.0425, 0.20116941], [1516611000000, 0.04226435, 0.04226435, 0.04226435, 0.04226435, 0.20257488], [1516611060000, 0.0425, 0.0425, 0.0425, 0.0425, 0.23657817], [1516611120000, 0.04249999, 0.0425, 0.04249999, 0.0425, 2.66276803], [1516611180000, 0.04230001, 0.04230001, 0.04229084, 0.04229084, 1.25360824], [1516611240000, 0.0425, 0.0425, 0.0425, 0.0425, 0.36103361], [1516611300000, 0.04249499, 0.04249499, 0.04248999, 0.04248999, 0.99025564], [1516611360000, 0.0423969, 0.0425, 0.0423969, 0.0425, 12.10231207], [1516611420000, 0.04239691, 0.04239691, 0.04230001, 0.04230001, 0.79684752], [1516611480000, 0.04230001, 0.04230001, 0.04230001, 0.04230001, 2.3069], [1516611540000, 0.04230001, 0.04230001, 0.04230001, 0.04230001, 1.00842596], [1516611600000, 0.0425, 0.0425, 0.0425, 0.0425, 0.47058822], [1516611660000, 0.0425, 0.0425, 0.0425, 0.0425, 0.02069252], [1516611720000, 0.0425, 0.0425, 0.0425, 0.0425, 0.02390078], [1516611840000, 0.04230001, 0.04230001, 0.04230001, 0.04230001, 1.1798021], [1516611900000, 0.04230001, 0.0424, 0.04230001, 0.0424, 0.0543916], [1516612020000, 0.04245, 0.0425, 0.04240501, 0.04240501, 0.62432297], [1516612080000, 0.04240601, 0.04240601, 0.04240601, 0.04240601, 0.30400194], [1516612140000, 0.04240601, 0.04240601, 0.04240601, 0.04240601, 0.02769641], [1516612200000, 0.0425, 0.0425, 0.0425, 0.0425, 1.54699151], [1516612260000, 0.04245379, 0.04245379, 0.04240002, 0.04240002, 7.87172938], [1516612320000, 0.04240003, 0.04240003, 0.0424, 0.0424, 14.88386403], [1516612380000, 0.04228398, 0.04228398, 0.04223788, 0.04228396, 13.42048122], [1516612440000, 0.04228395, 0.04228395, 0.04228394, 0.04228394, 0.57418796], [1516612500000, 0.04223789, 0.04223789, 0.04223788, 0.04223788, 0.6], [1516612560000, 0.04228395, 0.04228395, 0.04223788, 0.04228395, 3.5768819], [1516612620000, 0.04228395, 0.04228395, 0.04218628, 0.04218628, 1.81163612], [1516612680000, 0.04219578, 0.04219578, 0.0421625, 0.0421625, 2.01413954], [1516612740000, 0.0421625, 0.04218628, 0.042131, 0.042131, 9.76660825], [1516612800000, 0.04218628, 0.04227578, 0.04218628, 0.04227578, 1.65270453], [1516612860000, 0.04227578, 0.04227578, 0.04227578, 0.04227578, 0.99518291], [1516612920000, 0.04228395, 0.04228395, 0.04205375, 0.04205375, 0.30066106], [1516613040000, 0.04210532, 0.04228395, 0.04210532, 0.04228395, 0.1690904], [1516613100000, 0.0422, 0.04228395, 0.04210532, 0.04228395, 0.961681], [1516613160000, 0.04214038, 0.04214038, 0.04214038, 0.04214038, 0.13216277], [1516613220000, 0.04214038, 0.04228395, 0.04214038, 0.04228395, 0.43844119], [1516613280000, 0.04214038, 0.04228395, 0.04205106, 0.04205106, 3.29384462], [1516613340000, 0.04228395, 0.04228395, 0.04205106, 0.042052, 1.08657871], [1516613400000, 0.04228395, 0.04228395, 0.04205106, 0.04205106, 1.02294514], [1516613460000, 0.042052, 0.04228395, 0.04205106, 0.04228395, 7.27862482], [1516613520000, 0.04228395, 0.04228395, 0.04228395, 0.04228395, 0.04322426], [1516613580000, 0.04228395, 0.04228395, 0.04212254, 0.04228395, 0.87950033], [1516613640000, 0.04228396, 0.04228396, 0.04228396, 0.04228396, 1.38320266], [1516613700000, 0.04228396, 0.04228396, 0.04228395, 0.04228395, 2.33897709], [1516613760000, 0.04228396, 0.04228396, 0.04228396, 0.04228396, 0.99605036], [1516613820000, 0.04228396, 0.04228397, 0.04228395, 0.04228395, 0.1185948], [1516613880000, 0.04228397, 0.04228397, 0.04228397, 0.04228397, 0.01072635], [1516614000000, 0.04228397, 0.04228397, 0.04228397, 0.04228397, 0.02607391], [1516614060000, 0.04228395, 0.04228397, 0.04228395, 0.04228395, 0.94461024], [1516614120000, 0.04228395, 0.04228395, 0.04228395, 0.04228395, 0.20673577], [1516614180000, 0.04228395, 0.04245535, 0.04228395, 0.04245535, 0.14871461], [1516614300000, 0.04228395, 0.04228395, 0.04228395, 0.04228395, 0.37870597], [1516614360000, 0.04228395, 0.04245535, 0.04228395, 0.04245535, 0.31357359], [1516614480000, 0.04245535, 0.04245535, 0.04245535, 0.04245535, 0.0452604], [1516614540000, 0.04245535, 0.04245535, 0.04232798, 0.04232798, 0.1067984], [1516614600000, 0.04232798, 0.04248, 0.04232798, 0.04247999, 0.49857339], [1516614660000, 0.04238555, 0.04245299, 0.04211201, 0.04245299, 7.15256642], [1516614720000, 0.04247298, 0.04247298, 0.04247295, 0.04247295, 0.16722336], [1516614780000, 0.04247295, 0.04247295, 0.04247295, 0.04247295, 0.2724759], [1516614900000, 0.04232894, 0.04245795, 0.0422001, 0.0422001, 0.50596785], [1516614960000, 0.0423, 0.04230001, 0.0423, 0.04230001, 4.35005731], [1516615020000, 0.04245795, 0.04248889, 0.04236181, 0.04248889, 4.78451154], [1516615200000, 0.0423001, 0.04249, 0.0423, 0.04249, 2.92114585], [1516615320000, 0.04244, 0.04244, 0.0423, 0.0423, 0.23741358], [1516615380000, 0.0423, 0.0423, 0.0423, 0.0423, 0.01493078], [1516615500000, 0.04243, 0.04243, 0.04243, 0.04243, 0.36471728], [1516615560000, 0.04243, 0.04243, 0.04243, 0.04243, 0.07799962], [1516615740000, 0.04243, 0.04243, 0.04243, 0.04243, 0.60535729], [1516615800000, 0.04230003, 0.04230003, 0.04230003, 0.04230003, 0.05020006], [1516615860000, 0.04243, 0.04243, 0.04243, 0.04243, 0.25940573], [1516616040000, 0.04236501, 0.04236501, 0.04230003, 0.04236501, 0.07351889], [1516616100000, 0.042345, 0.04243, 0.04230004, 0.04230004, 0.8704052], [1516616160000, 0.04230007, 0.04230009, 0.04230007, 0.04230009, 2.15758851], [1516616220000, 0.04231002, 0.04231002, 0.04230004, 0.04230004, 0.23580368], [1516616280000, 0.04230004, 0.04243, 0.04230004, 0.04232002, 1.56954134], [1516616340000, 0.04232001, 0.04243, 0.04232001, 0.04232002, 0.78593539], [1516616400000, 0.04232002, 0.04232002, 0.04232002, 0.04232002, 0.08592052], [1516616460000, 0.04232002, 0.04232002, 0.04232002, 0.04232002, 0.11161858], [1516616640000, 0.04243, 0.04249, 0.04243, 0.04249, 0.66048412], [1516616700000, 0.04249, 0.04249998, 0.04249, 0.04249998, 0.70225619], [1516616760000, 0.04230051, 0.0423006, 0.04230051, 0.0423006, 5.78625422], [1516616820000, 0.0423006, 0.0425, 0.0423006, 0.0425, 7.05], [1516616880000, 0.04230063, 0.0425, 0.04230061, 0.0425, 9.1851062], [1516616940000, 0.04230061, 0.04230061, 0.04230061, 0.04230061, 0.15031904], [1516617120000, 0.0425, 0.0425, 0.0425, 0.0425, 0.01586366], [1516617180000, 0.0424, 0.0424, 0.0424, 0.0424, 0.05212732], [1516617240000, 0.0424, 0.0424, 0.0424, 0.0424, 0.19834111], [1516617300000, 0.0423006, 0.0424, 0.0423006, 0.0423006, 0.08124625], [1516617360000, 0.0423006, 0.0424, 0.0423005, 0.0424, 0.37145772], [1516617480000, 0.0424, 0.0424, 0.04230002, 0.0423005, 1.40060727], [1516617540000, 0.0423005, 0.0423005, 0.04220583, 0.0423, 3.40409534], [1516617600000, 0.0423, 0.04246899, 0.042169, 0.042169, 1.49102151], [1516617660000, 0.042169, 0.042169, 0.04216332, 0.04216332, 0.08821226], [1516617720000, 0.04217255, 0.04217255, 0.04216331, 0.04216701, 0.165997], [1516617840000, 0.04247191, 0.04247191, 0.0424719, 0.0424719, 0.24691063], [1516617900000, 0.04247295, 0.04247295, 0.0424719, 0.0424719, 1.74180437], [1516617960000, 0.0424719, 0.0424719, 0.042134, 0.042134, 7.92823913], [1516618020000, 0.042452, 0.042452, 0.04213401, 0.04244199, 0.35217169], [1516618140000, 0.04216334, 0.04216334, 0.04216334, 0.04216334, 0.0876], [1516618200000, 0.04245316, 0.04247499, 0.04245316, 0.04247499, 0.84587342], [1516618260000, 0.04247499, 0.04247499, 0.04247499, 0.04247499, 0.3941356], [1516618320000, 0.04217501, 0.0425, 0.042175, 0.0425, 1.62640495], [1516618440000, 0.04249999, 0.0425, 0.04217792, 0.042179, 0.69987123], [1516618500000, 0.0425, 0.0425, 0.04216432, 0.04218062, 5.92153204], [1516618560000, 0.04249499, 0.042504, 0.04231327, 0.042504, 3.50950014], [1516618620000, 0.0421635, 0.04219694, 0.0421635, 0.04219694, 0.17951129], [1516618680000, 0.04219697, 0.04219697, 0.04219694, 0.04219694, 2.37638079], [1516618740000, 0.04219698, 0.04249868, 0.04219698, 0.042494, 8.0370169], [1516618800000, 0.04219701, 0.04219701, 0.04219695, 0.04219695, 7.37234847], [1516618920000, 0.04248, 0.04250896, 0.04248, 0.04250896, 9.01079983], [1516619040000, 0.04250889, 0.04255, 0.04219694, 0.04219694, 18.57176859], [1516619100000, 0.04247, 0.04268611, 0.04247, 0.04268611, 84.74086794], [1516619160000, 0.04218701, 0.04259, 0.042187, 0.04259, 1.82175979], [1516619220000, 0.04258998, 0.04258998, 0.04256997, 0.04256997, 0.07020811], [1516619280000, 0.0421901, 0.04252499, 0.0421901, 0.04252499, 0.14321047], [1516619340000, 0.04252489, 0.04254, 0.04219911, 0.04219911, 1.29248279], [1516619400000, 0.04219911, 0.04219911, 0.0421901, 0.0421901, 0.90576946], [1516619460000, 0.0421901, 0.0422, 0.0421901, 0.0422, 8.60199608], [1516619520000, 0.04253999, 0.04254, 0.042205, 0.042205, 7.71533459], [1516619580000, 0.04254495, 0.04254498, 0.04219201, 0.04219201, 13.32947726], [1516619640000, 0.04219201, 0.04219202, 0.04219011, 0.04219011, 0.43791261], [1516619700000, 0.04219012, 0.04231669, 0.04219011, 0.04231669, 0.47562522], [1516619760000, 0.04231669, 0.04233225, 0.04231669, 0.04231669, 0.20855593], [1516619820000, 0.04231669, 0.04233225, 0.04231669, 0.04233225, 0.42009907], [1516619880000, 0.04231669, 0.04231669, 0.04231669, 0.04231669, 0.03889995], [1516619940000, 0.04231669, 0.0423178, 0.04231669, 0.0423178, 0.05210642], [1516620000000, 0.0423178, 0.0423178, 0.0423178, 0.0423178, 0.59184557], [1516620060000, 0.04231669, 0.04231669, 0.04231669, 0.04231669, 0.02004475], [1516620120000, 0.04231669, 0.04233225, 0.04231669, 0.04233225, 4.17095552], [1516620180000, 0.04233225, 0.04244365, 0.04233225, 0.04244365, 2.22260671], [1516620240000, 0.04244366, 0.04244366, 0.04244366, 0.04244366, 0.55479816], [1516620300000, 0.04244366, 0.04244366, 0.04244366, 0.04244366, 0.05195122], [1516620360000, 0.04244366, 0.04244366, 0.04244366, 0.04244366, 0.05195122], [1516620420000, 0.04244366, 0.04244366, 0.04244366, 0.04244366, 0.07370566], [1516620480000, 0.04244778, 0.04244778, 0.04244366, 0.04244366, 10.30165253], [1516620540000, 0.04244366, 0.04244366, 0.04244366, 0.04244366, 0.1631635], [1516620600000, 0.04219101, 0.04244366, 0.04219011, 0.04219011, 0.90869381], [1516620660000, 0.04244366, 0.04254491, 0.04244366, 0.04254491, 13.12684238], [1516620780000, 0.04224402, 0.042542, 0.04224402, 0.04224601, 1.84965311], [1516620900000, 0.04250601, 0.042542, 0.04240601, 0.042542, 1.37649074], [1516620960000, 0.04254491, 0.04280053, 0.04245917, 0.04245917, 19.68479162], [1516621080000, 0.04245919, 0.04250639, 0.04245917, 0.04250639, 1.40575088], [1516621140000, 0.04250639, 0.04250639, 0.04231604, 0.04231604, 0.24404656], [1516621200000, 0.04231618, 0.04279984, 0.04231618, 0.04279984, 1.01043652], [1516621260000, 0.04231638, 0.04279976, 0.04231638, 0.04279976, 0.20974399], [1516621320000, 0.04231652, 0.04231652, 0.04231652, 0.04231652, 0.02259411], [1516621380000, 0.04231681, 0.04231681, 0.04231681, 0.04231681, 0.03434342], [1516621500000, 0.0426199, 0.0426199, 0.0426199, 0.0426199, 0.82748691], [1516621560000, 0.04234313, 0.04234317, 0.04234313, 0.04234317, 0.96621929], [1516621620000, 0.0426199, 0.0426199, 0.04235303, 0.04235303, 0.60260652], [1516621680000, 0.04235804, 0.04235804, 0.04235804, 0.04235804, 0.09252816], [1516621740000, 0.0426199, 0.0426199, 0.0426199, 0.0426199, 0.406087], [1516621800000, 0.04240001, 0.0426199, 0.04234332, 0.0426199, 4.3710105], [1516621860000, 0.04234322, 0.04234322, 0.04234321, 0.04234321, 1.2], [1516621980000, 0.0426199, 0.0426199, 0.04234321, 0.04234321, 1.55105669], [1516622040000, 0.04234321, 0.04234321, 0.042233, 0.042233, 0.12094655], [1516622100000, 0.04268618, 0.04268618, 0.04268618, 0.04268618, 0.23441162], [1516622160000, 0.04227114, 0.04227114, 0.04227113, 0.04227113, 1.22], [1516622220000, 0.04265999, 0.04265999, 0.04265999, 0.04265999, 0.02461609], [1516622280000, 0.0423668, 0.0423668, 0.0423668, 0.0423668, 0.108], [1516622340000, 0.0425487, 0.04265999, 0.0425487, 0.04265999, 0.93679842], [1516622400000, 0.04238033, 0.04265999, 0.04238008, 0.04265999, 6.38992267], [1516622460000, 0.04235507, 0.04235507, 0.04221365, 0.04223401, 7.7836029], [1516622520000, 0.04224402, 0.042254, 0.04224402, 0.042254, 0.18559827], [1516622580000, 0.04254822, 0.04254822, 0.04224901, 0.04224901, 1.01903138], [1516622640000, 0.04229126, 0.04254822, 0.04229126, 0.04229126, 0.0962], [1516622700000, 0.04254822, 0.04265799, 0.04229126, 0.04239125, 2.24206666], [1516622760000, 0.04239125, 0.04239125, 0.04229125, 0.04229125, 0.69652124], [1516622820000, 0.04223001, 0.04223803, 0.04223001, 0.04223803, 1.69152642], [1516622880000, 0.04223805, 0.04223805, 0.04223805, 0.04223805, 0.118717], [1516622940000, 0.04224001, 0.04224001, 0.04224, 0.04224, 0.1003], [1516623000000, 0.042263, 0.04265798, 0.042263, 0.04265795, 1.12720887], [1516623060000, 0.04259661, 0.04259662, 0.042313, 0.042313, 3.82317615], [1516623120000, 0.04232, 0.04232, 0.04232, 0.04232, 0.02016846], [1516623180000, 0.04232002, 0.04232002, 0.04232002, 0.04232002, 0.07200777], [1516623240000, 0.04232002, 0.04254822, 0.04232002, 0.04254822, 0.39461323], [1516623300000, 0.04259448, 0.04259449, 0.04259448, 0.04259449, 0.23477209], [1516623360000, 0.04259449, 0.04259449, 0.04259449, 0.04259449, 0.01704954], [1516623420000, 0.04232003, 0.04232003, 0.04232002, 0.04232002, 0.28295048], [1516623480000, 0.04232003, 0.04232003, 0.04232003, 0.04232003, 1.06127703], [1516623540000, 0.04259448, 0.04259449, 0.04259448, 0.04259449, 0.14931873], [1516623600000, 0.04259448, 0.04259449, 0.04259448, 0.04259449, 0.58106863], [1516623660000, 0.04232003, 0.04232003, 0.04232003, 0.04232003, 0.21636775], [1516623720000, 0.04232003, 0.04232003, 0.04232003, 0.04232003, 0.01800321], [1516623780000, 0.042313, 0.042313, 0.042313, 0.042313, 2.6329004], [1516623840000, 0.042313, 0.0425, 0.042313, 0.0425, 2.49144044], [1516623900000, 0.0425, 0.0425, 0.042313, 0.042313, 0.40847784], [1516623960000, 0.0425, 0.0425, 0.042313, 0.042313, 0.12712928], [1516624020000, 0.0425, 0.04258886, 0.0425, 0.04258886, 3.25798091], [1516624080000, 0.0425, 0.0425, 0.042313, 0.042313, 2.02607348], [1516624140000, 0.0423131, 0.0423131, 0.042313, 0.042313, 0.17185954], [1516624200000, 0.04231303, 0.04259449, 0.042313, 0.04231307, 3.26250579], [1516624260000, 0.04231304, 0.04231304, 0.042313, 0.042313, 6.93487898], [1516624320000, 0.04231301, 0.04231304, 0.04228832, 0.04231304, 1.34339918], [1516624380000, 0.04231304, 0.04231304, 0.04231301, 0.04231301, 0.15242923], [1516624440000, 0.04231301, 0.04231304, 0.04225183, 0.04229408, 0.61127875], [1516624500000, 0.04231304, 0.04231304, 0.04223805, 0.04223805, 0.40228232], [1516624560000, 0.04229408, 0.04251299, 0.04223805, 0.04233593, 1.24466212], [1516624680000, 0.0422382, 0.0422382, 0.04223805, 0.0422382, 2.42325309], [1516624740000, 0.0422382, 0.0422382, 0.04223815, 0.0422382, 3.65012636], [1516624800000, 0.0422382, 0.0422382, 0.04223805, 0.0422382, 0.92806607], [1516624860000, 0.0422382, 0.0422382, 0.04222829, 0.04222829, 0.18365931], [1516624920000, 0.04222829, 0.0422382, 0.04222829, 0.0422382, 2.97376911], [1516624980000, 0.0422382, 0.0422382, 0.042238, 0.042238, 0.05221647], [1516625040000, 0.042238, 0.042238, 0.042238, 0.042238, 0.02610818], [1516625100000, 0.04222829, 0.042238, 0.04222829, 0.042238, 2.40666263], [1516625160000, 0.04223799, 0.042238, 0.0421901, 0.0421901, 2.18511044], [1516625220000, 0.0421901, 0.042238, 0.0421901, 0.0421901, 0.16540912], [1516625280000, 0.0421901, 0.042238, 0.0421901, 0.042238, 0.11133069], [1516625340000, 0.0421901, 0.042238, 0.0421901, 0.042238, 0.42929248], [1516625400000, 0.0421901, 0.0421901, 0.0421901, 0.0421901, 0.57720178], [1516625460000, 0.0421901, 0.04219011, 0.0421901, 0.04219011, 1.25419134], [1516625520000, 0.042238, 0.042238, 0.042238, 0.042238, 0.04788574], [1516625580000, 0.042238, 0.042238, 0.042237, 0.042237, 0.45457182], [1516625640000, 0.0421901, 0.0421901, 0.04218701, 0.04218701, 1.40869292], [1516625700000, 0.0421633, 0.04218701, 0.0421, 0.04218701, 4.20116251], [1516625760000, 0.04210002, 0.04210002, 0.0421, 0.0421, 1.07694392], [1516625820000, 0.0421, 0.0421, 0.0421, 0.0421, 0.03456154], [1516625880000, 0.04205611, 0.04210002, 0.04205611, 0.04210002, 0.45920022], [1516625940000, 0.0421, 0.04210002, 0.0421, 0.04210002, 0.45150628], [1516626000000, 0.0421, 0.04210002, 0.0421, 0.04210002, 0.21113124], [1516626060000, 0.04210001, 0.04210002, 0.0421, 0.04210002, 1.40357577], [1516626120000, 0.0421, 0.0421901, 0.0421, 0.0421901, 2.45468964], [1516626180000, 0.04210001, 0.0421901, 0.04210001, 0.0421901, 0.25292047], [1516626240000, 0.0421901, 0.0421901, 0.0421901, 0.0421901, 0.63862868], [1516626300000, 0.0421901, 0.0421901, 0.0421501, 0.0421501, 0.10818205], [1516626360000, 0.04210001, 0.04210001, 0.04210001, 0.04210001, 0.29079066], [1516626420000, 0.0421501, 0.0421501, 0.0421501, 0.0421501, 0.08784303], [1516626480000, 0.04210002, 0.042145, 0.04210002, 0.042145, 0.61709126], [1516626540000, 0.042145, 0.0421501, 0.042145, 0.0421501, 10.34227479], [1516626600000, 0.04215, 0.0421501, 0.04215, 0.0421501, 0.17864561], [1516626660000, 0.0421501, 0.0421501, 0.0421, 0.0421, 13.73703263], [1516626720000, 0.0421, 0.0421501, 0.0421, 0.0421501, 1.18164757], [1516626780000, 0.0421888, 0.0421901, 0.0420561, 0.0421901, 0.40370737], [1516626840000, 0.0421901, 0.0421901, 0.0421901, 0.0421901, 0.36179646], [1516626900000, 0.0421901, 0.042238, 0.0421901, 0.04223799, 6.05923497], [1516626960000, 0.04223799, 0.04223799, 0.04205106, 0.04205106, 2.36776516], [1516627020000, 0.04205609, 0.0420561, 0.04201, 0.04204597, 10.73101133], [1516627080000, 0.0420459, 0.04205093, 0.04201, 0.04205093, 8.96786982], [1516627140000, 0.04201, 0.04201, 0.04195, 0.041951, 19.07059548], [1516627200000, 0.04192878, 0.04200999, 0.0419, 0.041951, 5.43348976], [1516627260000, 0.0419, 0.0419, 0.04187, 0.04187, 1.9818992], [1516627320000, 0.04188987, 0.04188988, 0.04187, 0.04188988, 0.2594601], [1516627380000, 0.04188988, 0.04188988, 0.04183656, 0.04183656, 0.27959707], [1516627440000, 0.04187, 0.04187, 0.04185831, 0.04187, 3.63948643], [1516627500000, 0.04187, 0.04188988, 0.0418, 0.04188988, 19.32172674], [1516627560000, 0.04188988, 0.04188988, 0.04180001, 0.04180001, 12.27474532], [1516627620000, 0.04188988, 0.042238, 0.04188988, 0.04190721, 29.80837284], [1516627680000, 0.04190902, 0.04223499, 0.04175723, 0.04175723, 29.92217888], [1516627740000, 0.04175723, 0.04203665, 0.04175723, 0.04175723, 2.35087693], [1516627800000, 0.04203665, 0.042078, 0.04173949, 0.04173952, 13.18710508], [1516627860000, 0.042, 0.042085, 0.04173948, 0.04173969, 12.40950827], [1516627920000, 0.04173969, 0.04173969, 0.04173968, 0.04173968, 0.24750194], [1516627980000, 0.04173968, 0.04173969, 0.04173947, 0.04173969, 5.20770733], [1516628040000, 0.04173969, 0.0418, 0.04173969, 0.0418, 10.73760466], [1516628100000, 0.042045, 0.042045, 0.0418, 0.042, 7.67934377], [1516628160000, 0.04180002, 0.042, 0.0418, 0.0418, 4.66403573], [1516628220000, 0.04180001, 0.04180001, 0.0418, 0.04180001, 0.38226891], [1516628280000, 0.0418, 0.04180001, 0.0418, 0.04180001, 6.76730338], [1516628340000, 0.04180001, 0.04180001, 0.0418, 0.04180001, 11.31190793], [1516628400000, 0.04180001, 0.04180001, 0.04173947, 0.04173947, 5.9582863], [1516628460000, 0.04173947, 0.04179663, 0.04173947, 0.04179663, 0.73702312], [1516628520000, 0.04173947, 0.04180001, 0.04172962, 0.04172962, 12.94055288], [1516628580000, 0.04172962, 0.04180001, 0.04172962, 0.04180001, 11.49204956], [1516628640000, 0.04180001, 0.04180001, 0.04162, 0.04162005, 25.91837008], [1516628700000, 0.04180001, 0.04180001, 0.04162, 0.04162501, 10.92965642], [1516628760000, 0.04169552, 0.0418, 0.04169552, 0.04169552, 2.54716052], [1516628820000, 0.04169552, 0.0418, 0.04169552, 0.0418, 0.16962874], [1516628880000, 0.04169552, 0.04180001, 0.04169552, 0.04169552, 4.72410074], [1516628940000, 0.04169562, 0.04169596, 0.0416955, 0.04169585, 10.62901618], [1516629000000, 0.04169584, 0.04169584, 0.04154421, 0.04154421, 21.885501], [1516629060000, 0.04153097, 0.04154421, 0.04150079, 0.04150079, 7.69748851], [1516629120000, 0.04150079, 0.0415008, 0.0415, 0.0415, 3.66288339], [1516629180000, 0.0415, 0.04154422, 0.0415, 0.04154422, 8.39239797], [1516629240000, 0.04154422, 0.041563, 0.0415008, 0.0415008, 1.08130986], [1516629300000, 0.04179552, 0.04180001, 0.0415, 0.0415, 12.1040306], [1516629360000, 0.04179556, 0.04179556, 0.0415, 0.04177, 4.7356351], [1516629420000, 0.04176999, 0.04176999, 0.0415, 0.0415, 12.1211092], [1516629480000, 0.04168151, 0.04177, 0.04150001, 0.04177, 3.25310587], [1516629540000, 0.04150003, 0.041769, 0.04150001, 0.041768, 3.97125701], [1516629600000, 0.041749, 0.04180001, 0.04150011, 0.04180001, 1.98751397], [1516629660000, 0.04179587, 0.04179607, 0.04150001, 0.04179607, 5.64071332], [1516629720000, 0.04179607, 0.04179607, 0.04150044, 0.04179607, 20.47845699], [1516629780000, 0.04152004, 0.04198999, 0.04152004, 0.04198999, 0.65216139], [1516629840000, 0.041975, 0.04217919, 0.04175617, 0.04198, 51.34895428], [1516629900000, 0.04198, 0.04198, 0.04180007, 0.04180007, 0.10889748], [1516629960000, 0.04180019, 0.04180026, 0.04180019, 0.04180026, 2.75519347], [1516630020000, 0.04180029, 0.04180037, 0.04180029, 0.04180037, 3.78097454], [1516630080000, 0.0419, 0.04221099, 0.0419, 0.04221099, 6.21943481], [1516630140000, 0.04190024, 0.04222949, 0.04190001, 0.04190001, 23.20972071], [1516630200000, 0.04206037, 0.04206038, 0.04191, 0.04191, 13.24453141], [1516630260000, 0.04190055, 0.04191, 0.04190055, 0.04191, 0.51822447], [1516630320000, 0.04190055, 0.04190056, 0.04190055, 0.04190055, 1.55953968], [1516630380000, 0.04190055, 0.04201699, 0.04154696, 0.04154759, 9.31670131], [1516630440000, 0.04199197, 0.04202185, 0.04199197, 0.04202185, 5.57496833], [1516630500000, 0.04202184, 0.04202185, 0.04201198, 0.04201198, 1.5308858], [1516630560000, 0.04201198, 0.04201198, 0.04186503, 0.04186503, 0.65945556], [1516630620000, 0.041968, 0.04197278, 0.0418531, 0.0418531, 0.21456686], [1516630680000, 0.0418531, 0.04196799, 0.04150754, 0.04196797, 0.14221], [1516630740000, 0.04160327, 0.04160327, 0.04160327, 0.04160327, 0.02986637], [1516630800000, 0.04151804, 0.041938, 0.04151804, 0.04151822, 3.09353923], [1516630860000, 0.041923, 0.041923, 0.04150002, 0.04190798, 6.08090439], [1516630980000, 0.04190297, 0.04190297, 0.04151871, 0.04151871, 1.58018029], [1516631040000, 0.04188299, 0.04188299, 0.04188299, 0.04188299, 0.06159737], [1516631100000, 0.04185397, 0.041878, 0.04185397, 0.041859, 1.46880296], [1516631160000, 0.04185397, 0.04185397, 0.04185397, 0.04185397, 0.09754388], [1516631220000, 0.041849, 0.041849, 0.041849, 0.041849, 0.47790867], [1516631280000, 0.0418489, 0.0418489, 0.04151005, 0.04151005, 8.11885308], [1516631340000, 0.04151005, 0.04151005, 0.041505, 0.04151004, 0.77599523], [1516631400000, 0.04151005, 0.04174331, 0.04150001, 0.04171061, 2.21734459], [1516631460000, 0.04171061, 0.04184889, 0.04171061, 0.04184889, 1.38798405], [1516631520000, 0.04184889, 0.04184889, 0.041631, 0.041631, 11.26688007], [1516631580000, 0.04171061, 0.04171061, 0.04160786, 0.04160786, 0.25312722], [1516631640000, 0.0415001, 0.04171061, 0.04150001, 0.04160786, 5.78228787], [1516631700000, 0.04160786, 0.04171061, 0.04150001, 0.04160787, 1.5112593], [1516631760000, 0.04160787, 0.04171061, 0.04160787, 0.04171061, 2.80354904], [1516631820000, 0.0417106, 0.04189501, 0.0417106, 0.04189501, 1.71184931], [1516631880000, 0.04189501, 0.0419, 0.04189501, 0.04189501, 3.047071], [1516631940000, 0.04189501, 0.04189998, 0.04151001, 0.04156609, 16.0572616], [1516632000000, 0.04156609, 0.042098, 0.04156609, 0.042093, 8.88481905], [1516632060000, 0.042078, 0.042098, 0.04157238, 0.04200001, 3.80821741], [1516632120000, 0.04200001, 0.04200001, 0.042, 0.04200001, 4.42240052], [1516632180000, 0.04200002, 0.042082, 0.042, 0.042082, 1.92062141], [1516632240000, 0.042, 0.042, 0.04156611, 0.04156612, 5.79902875], [1516632300000, 0.04172895, 0.04172895, 0.0417289, 0.0417289, 0.26616563], [1516632360000, 0.0417289, 0.04172895, 0.0415666, 0.0415666, 4.07767249], [1516632420000, 0.04157243, 0.04172895, 0.04157243, 0.04157291, 0.95328449], [1516632480000, 0.04172895, 0.04200896, 0.0415, 0.04200895, 97.29725077], [1516632540000, 0.041994, 0.041994, 0.041989, 0.041989, 0.22096582], [1516632600000, 0.041974, 0.041974, 0.041974, 0.041974, 0.06518705], [1516632660000, 0.0421, 0.0421, 0.0421, 0.0421, 0.1], [1516632720000, 0.04210289, 0.04223798, 0.04210289, 0.0422, 0.72384395], [1516632780000, 0.04220001, 0.04220001, 0.042103, 0.042103, 12.27244451], [1516632840000, 0.042124, 0.04214, 0.042103, 0.042103, 1.56023652], [1516632900000, 0.042103, 0.042103, 0.041959, 0.041959, 0.53408495], [1516632960000, 0.041959, 0.042073, 0.0415933, 0.0415933, 3.58651337], [1516633020000, 0.0415933, 0.04159516, 0.04150004, 0.04159516, 6.524546], [1516633080000, 0.04159517, 0.04207499, 0.04159517, 0.04207499, 1.32498344], [1516633140000, 0.04159527, 0.042052, 0.04159527, 0.042042, 0.24437808], [1516633200000, 0.04202699, 0.04202699, 0.04160154, 0.04202199, 0.93301368], [1516633320000, 0.04184637, 0.04202197, 0.04184637, 0.04197201, 15.96853065], [1516633380000, 0.04197201, 0.04202198, 0.04197201, 0.04202198, 4.26923109], [1516633440000, 0.04197201, 0.04197201, 0.04160315, 0.041967, 0.96271654], [1516633500000, 0.04160335, 0.041962, 0.04160335, 0.04195697, 1.55139802], [1516633560000, 0.04160814, 0.04160817, 0.04160814, 0.04160817, 0.46296239], [1516633620000, 0.04195698, 0.04195698, 0.04181023, 0.04181023, 11.30840653], [1516633680000, 0.04161316, 0.04161316, 0.04161316, 0.04161316, 0.60900918], [1516633740000, 0.04195401, 0.04195401, 0.04195401, 0.04195401, 4.45763756], [1516633800000, 0.04196699, 0.04196699, 0.04195401, 0.04196698, 4.44465937], [1516633860000, 0.04195401, 0.04195401, 0.04180727, 0.04180727, 2.24997083], [1516633920000, 0.04195401, 0.04195401, 0.041954, 0.04195401, 6.45394175], [1516633980000, 0.041954, 0.04195401, 0.041603, 0.04195401, 5.64600588], [1516634040000, 0.04195401, 0.04195401, 0.04160305, 0.04195399, 0.17045012], [1516634100000, 0.04195399, 0.041972, 0.04160507, 0.04160507, 1.67371646], [1516634220000, 0.04196999, 0.04196999, 0.04195399, 0.04196698, 2.94181323], [1516634280000, 0.04195399, 0.04195399, 0.04176646, 0.04176646, 3.80382141], [1516634340000, 0.04176646, 0.04176646, 0.04176646, 0.04176646, 0.03881868], [1516634400000, 0.04176646, 0.04176646, 0.04160502, 0.04160502, 1.52577186], [1516634460000, 0.04160502, 0.04176644, 0.04160502, 0.04176644, 0.29640843], [1516634520000, 0.04161, 0.04161, 0.04161, 0.04161, 0.05299206], [1516634580000, 0.04176644, 0.04176645, 0.04160503, 0.04176645, 2.57864148], [1516634640000, 0.04176644, 0.04176644, 0.04160999, 0.04160999, 0.34661011], [1516634700000, 0.04160999, 0.04160999, 0.04160999, 0.04160999, 0.30236855], [1516634760000, 0.04160999, 0.04176644, 0.04160502, 0.04176644, 0.13875236], [1516634820000, 0.04161, 0.04176644, 0.04160502, 0.04176644, 0.25289599], [1516634880000, 0.04176645, 0.04176645, 0.04169, 0.04176644, 0.45496011], [1516634940000, 0.04176644, 0.04176644, 0.04169, 0.04176644, 0.18069706], [1516635000000, 0.04169, 0.04176645, 0.04169, 0.04169, 4.18034221], [1516635060000, 0.04169, 0.04176645, 0.04169, 0.04176645, 4.64770768], [1516635120000, 0.04169, 0.04176645, 0.041605, 0.04176645, 3.2436667], [1516635180000, 0.04176645, 0.04176645, 0.04176645, 0.04176645, 0.06098433], [1516635240000, 0.04172821, 0.04176645, 0.04172821, 0.04172821, 1.80888639], [1516635300000, 0.04176645, 0.04176645, 0.04172821, 0.04172821, 0.29810062], [1516635360000, 0.04172822, 0.04172822, 0.04172822, 0.04172822, 0.15618169], [1516635420000, 0.04176644, 0.04176644, 0.04172821, 0.04172821, 1.82228796], [1516635480000, 0.041605, 0.04172822, 0.041605, 0.04172822, 0.18182177], [1516635540000, 0.04172822, 0.04172822, 0.04172822, 0.04172822, 0.55273441], [1516635600000, 0.04172822, 0.04172822, 0.041605, 0.04160553, 48.26457454], [1516635660000, 0.0417282, 0.04172822, 0.0417282, 0.04172822, 3.59468964], [1516635720000, 0.0416051, 0.04176647, 0.0416051, 0.04176647, 7.36636227], [1516635780000, 0.04160601, 0.04181358, 0.0415, 0.04181358, 16.84303322], [1516635900000, 0.0416241, 0.04195698, 0.0416241, 0.04195698, 3.39473794], [1516635960000, 0.041942, 0.041942, 0.041942, 0.041942, 0.0461251], [1516636080000, 0.04164249, 0.04169125, 0.04162904, 0.04169124, 45.48716053], [1516636140000, 0.04169124, 0.041942, 0.04169124, 0.041942, 0.65383481], [1516636200000, 0.04169124, 0.041942, 0.04169124, 0.04169124, 2.18730454], [1516636260000, 0.041942, 0.04194336, 0.04187518, 0.04187518, 4.52130349], [1516636320000, 0.041962, 0.041962, 0.041962, 0.041962, 0.11283371], [1516636380000, 0.041961, 0.041961, 0.04196099, 0.04196099, 0.12536644], [1516636440000, 0.04196097, 0.04196098, 0.04196097, 0.04196097, 1.02099313], [1516636500000, 0.04195898, 0.04199499, 0.0416051, 0.04199499, 29.30602777], [1516636560000, 0.041705, 0.041705, 0.04157, 0.041705, 4.86280158], [1516636620000, 0.04163744, 0.04163744, 0.04163744, 0.04163744, 0.02647402], [1516636680000, 0.04163744, 0.04190435, 0.04163744, 0.04190435, 0.08312366], [1516636740000, 0.04163744, 0.041944, 0.04150001, 0.04150001, 5.62490003], [1516636800000, 0.0415, 0.04161251, 0.0415, 0.04150001, 1.90116406], [1516636860000, 0.0416125, 0.0416125, 0.0416125, 0.0416125, 1.27000603], [1516636920000, 0.04150005, 0.0416125, 0.04150001, 0.0416125, 2.91400603], [1516636980000, 0.0416125, 0.04192399, 0.0416, 0.04170001, 1.96578067], [1516637040000, 0.04170001, 0.04194196, 0.04163453, 0.04184005, 2.8729808], [1516637100000, 0.0418, 0.0418, 0.04163452, 0.0418, 9.53986983], [1516637160000, 0.04163452, 0.04163452, 0.04161251, 0.04161251, 0.67333259], [1516637220000, 0.04155635, 0.04179997, 0.04155635, 0.04179997, 1.7185821], [1516637280000, 0.04179989, 0.04179989, 0.04179989, 0.04179989, 0.0134211], [1516637340000, 0.04179988, 0.04179988, 0.04150001, 0.04155635, 2.90332067], [1516637400000, 0.04179825, 0.0418, 0.04150526, 0.04150529, 3.28731866], [1516637460000, 0.04179871, 0.041825, 0.04151, 0.04182498, 14.40661496], [1516637520000, 0.04179868, 0.04183963, 0.04179868, 0.04179868, 0.53807782], [1516637580000, 0.04154832, 0.04154832, 0.04154832, 0.04154832, 0.02833701], [1516637640000, 0.04154832, 0.04154832, 0.04150507, 0.04150507, 0.61750944], [1516637700000, 0.04154832, 0.04154832, 0.04154831, 0.04154832, 0.57842658], [1516637760000, 0.04154832, 0.04154832, 0.04154831, 0.04154832, 0.13811301], [1516637820000, 0.04154832, 0.04154832, 0.04150529, 0.04150529, 0.15489671], [1516637880000, 0.04150529, 0.04167635, 0.04150529, 0.04167635, 1.5660568], [1516637940000, 0.04151001, 0.04182556, 0.04151001, 0.04182556, 0.04579949], [1516638000000, 0.04151001, 0.04182548, 0.04151001, 0.04182548, 0.32466873], [1516638060000, 0.04151, 0.0418189, 0.0415, 0.0418189, 37.6793779], [1516638120000, 0.0415, 0.0415, 0.04139701, 0.04139701, 26.16259903], [1516638180000, 0.0414278, 0.0414278, 0.04139712, 0.04139712, 0.1176757], [1516638240000, 0.0414278, 0.0414278, 0.0414278, 0.0414278, 1.32678359], [1516638300000, 0.0414278, 0.0414278, 0.04142779, 0.0414278, 1.27170837], [1516638360000, 0.0414278, 0.0414278, 0.0414278, 0.0414278, 0.27440682], [1516638420000, 0.0414278, 0.0414278, 0.04142779, 0.04142779, 0.26874466], [1516638480000, 0.04142779, 0.0414278, 0.04142779, 0.0414278, 0.88607382], [1516638540000, 0.0414278, 0.0414278, 0.04142779, 0.0414278, 1.27457813], [1516638600000, 0.04142779, 0.0414278, 0.04142779, 0.0414278, 2.14617902], [1516638660000, 0.0414278, 0.0414278, 0.0414278, 0.0414278, 0.75668524], [1516638720000, 0.0414278, 0.04149994, 0.041361, 0.04149994, 8.65643619], [1516638780000, 0.04149994, 0.04149994, 0.04135957, 0.04149994, 1.68405976], [1516638840000, 0.04165708, 0.04165708, 0.04135956, 0.04135957, 0.19371031], [1516638900000, 0.04169063, 0.04169063, 0.04167597, 0.04167597, 0.15698705], [1516639020000, 0.04166094, 0.04166094, 0.04135611, 0.04166093, 2.05371555], [1516639080000, 0.0417, 0.0417, 0.0415855, 0.0415855, 7.03875049], [1516639140000, 0.04135597, 0.04135597, 0.04135593, 0.04135597, 5.3276465], [1516639200000, 0.04135597, 0.04135597, 0.04135595, 0.04135597, 1.40898897], [1516639260000, 0.04136601, 0.0415855, 0.04136601, 0.0415855, 0.30168163], [1516639320000, 0.0415855, 0.0415855, 0.04135597, 0.0415855, 0.36854664], [1516639380000, 0.0415855, 0.0415855, 0.0415855, 0.0415855, 0.10129256], [1516639440000, 0.04136104, 0.04136104, 0.04136104, 0.04136104, 0.10136486], [1516639500000, 0.04158544, 0.04158544, 0.04135594, 0.04135596, 0.21762629], [1516639560000, 0.04158539, 0.04158539, 0.041356, 0.041356, 0.07319815], [1516639680000, 0.04158534, 0.04158538, 0.0415853, 0.04158538, 3.898435], [1516639740000, 0.04158538, 0.04158538, 0.04158538, 0.04158538, 0.08108143], [1516639800000, 0.04158496, 0.04158496, 0.04158496, 0.04158496, 0.02067223], [1516639920000, 0.04158538, 0.04158538, 0.04136101, 0.04158538, 0.44096204], [1516639980000, 0.04158538, 0.04158538, 0.04158538, 0.04158538, 0.09231644], [1516640040000, 0.04158538, 0.04158538, 0.04137101, 0.04158538, 1.59545775], [1516640160000, 0.04158538, 0.04158538, 0.04137101, 0.04158538, 0.36709863], [1516640220000, 0.04158538, 0.04158538, 0.04158538, 0.04158538, 0.08816299], [1516640280000, 0.04158538, 0.04158538, 0.04158538, 0.04158538, 0.67274546], [1516640340000, 0.04158538, 0.04158538, 0.04158538, 0.04158538, 0.24328357], [1516640400000, 0.04158538, 0.04158538, 0.04158538, 0.04158538, 0.12538845], [1516640460000, 0.04158538, 0.04158538, 0.04158538, 0.04158538, 0.02476244], [1516640520000, 0.04158538, 0.04158538, 0.04137201, 0.04158538, 0.16957737], [1516640580000, 0.04158538, 0.04158538, 0.04158538, 0.04158538, 0.02551078], [1516640640000, 0.04158538, 0.0415854, 0.04138104, 0.0415854, 2.56139245], [1516640700000, 0.04158539, 0.0415854, 0.04158539, 0.0415854, 0.15403244], [1516640760000, 0.0415854, 0.0415854, 0.04138513, 0.0415854, 1.0349358], [1516640820000, 0.0415854, 0.04158541, 0.0413726, 0.04158541, 11.74494187], [1516640880000, 0.04158541, 0.04158541, 0.04158541, 0.04158541, 0.4809379], [1516640940000, 0.04158541, 0.04158541, 0.04158541, 0.04158541, 0.36519166], [1516641000000, 0.04158541, 0.04158541, 0.04158541, 0.04158541, 0.04319384], [1516641060000, 0.04158541, 0.04158541, 0.04148566, 0.04148566, 0.2332007], [1516641120000, 0.04139637, 0.04158541, 0.04139126, 0.04139126, 0.93810582], [1516641180000, 0.0415855, 0.0415855, 0.0415855, 0.0415855, 0.08487726], [1516641240000, 0.0415855, 0.0415855, 0.0415855, 0.0415855, 0.04534457], [1516641300000, 0.0415855, 0.0415855, 0.0415855, 0.0415855, 0.10788604], [1516641360000, 0.04139207, 0.0415855, 0.04139207, 0.0415855, 1.52906185], [1516641480000, 0.0415855, 0.0415855, 0.0415855, 0.0415855, 0.38668764], [1516641540000, 0.0415783, 0.0415783, 0.0413925, 0.0415783, 0.24845412], [1516641600000, 0.0415783, 0.0415855, 0.0415783, 0.0415855, 0.24051007], [1516641720000, 0.0415855, 0.0415855, 0.0415855, 0.0415855, 0.09376458], [1516641840000, 0.0413925, 0.04158549, 0.0413925, 0.04158549, 0.04919311], [1516641900000, 0.0413925, 0.0417, 0.041371, 0.04160599, 129.80981395], [1516641960000, 0.04139273, 0.04160599, 0.041371, 0.04160599, 3.0408165], [1516642020000, 0.04160599, 0.04160599, 0.04160599, 0.04160599, 0.31460155], [1516642080000, 0.04140001, 0.0417042, 0.04140001, 0.0417, 55.70328251], [1516642140000, 0.0417, 0.0417, 0.0417, 0.0417, 41.17661684], [1516642200000, 0.04178499, 0.04178499, 0.0417, 0.041775, 0.10081548], [1516642260000, 0.0417, 0.0417, 0.04169499, 0.04169499, 22.79111845], [1516642320000, 0.04140001, 0.041678, 0.04140001, 0.041678, 0.60269505], [1516642380000, 0.04140001, 0.041676, 0.04135593, 0.04135593, 28.8743568], [1516642440000, 0.04135592, 0.04135592, 0.04129485, 0.04129485, 4.95205776], [1516642500000, 0.04129485, 0.041598, 0.0412291, 0.04143589, 38.83617851], [1516642560000, 0.04133847, 0.04158292, 0.04133847, 0.04158292, 13.56009588], [1516642620000, 0.04140001, 0.0415928, 0.04140001, 0.04159272, 0.15808215], [1516642680000, 0.04140102, 0.04140102, 0.0414, 0.0414, 0.41484366], [1516642740000, 0.0414, 0.0414, 0.04135201, 0.0414, 1.9865051], [1516642800000, 0.0414, 0.0414, 0.0414, 0.0414, 0.05334022], [1516642860000, 0.0414, 0.0414, 0.0414, 0.0414, 0.1454493], [1516642920000, 0.0414, 0.0414, 0.04139999, 0.04139999, 2.22971176], [1516642980000, 0.0414, 0.0414, 0.0414, 0.0414, 0.73264012], [1516643040000, 0.04159272, 0.04159272, 0.04159272, 0.04159272, 0.01542085], [1516643100000, 0.04159272, 0.04166448, 0.04159272, 0.04166448, 1.51054685], [1516643160000, 0.04159273, 0.04159273, 0.04158792, 0.04158792, 0.60760999], [1516643220000, 0.04140003, 0.04159273, 0.04140003, 0.04140003, 5.27963921], [1516643280000, 0.04159273, 0.04159273, 0.04140003, 0.04140003, 0.86146032], [1516643340000, 0.04159273, 0.04159273, 0.04140801, 0.04159273, 0.44627724], [1516643400000, 0.04159273, 0.04167798, 0.04159273, 0.04167026, 0.72764154], [1516643460000, 0.04159274, 0.04167798, 0.04159274, 0.04167369, 0.1838702], [1516643520000, 0.04167369, 0.04167369, 0.04159277, 0.04159277, 1.18708249], [1516643580000, 0.04159277, 0.04165381, 0.04159277, 0.04159277, 0.85301402], [1516643640000, 0.04159277, 0.0416538, 0.04159277, 0.041649, 0.33437847], [1516643700000, 0.04160001, 0.04164692, 0.04159273, 0.04159278, 1.63063957], [1516643820000, 0.04158784, 0.04158784, 0.04140803, 0.04158784, 0.28583231], [1516643880000, 0.04140802, 0.04140802, 0.04140002, 0.04140002, 1.62201556], [1516643940000, 0.0415775, 0.0415775, 0.0415775, 0.0415775, 0.2405147], [1516644000000, 0.04158784, 0.04158784, 0.04158784, 0.04158784, 0.24048288], [1516644120000, 0.04141, 0.041568, 0.04141, 0.041568, 1.44023564], [1516644180000, 0.04157742, 0.04157751, 0.04148, 0.04157751, 2.02330594], [1516644240000, 0.0415775, 0.04158785, 0.0415775, 0.04157751, 7.40574377], [1516644300000, 0.0415775, 0.0415775, 0.0415775, 0.0415775, 0.29366938], [1516644360000, 0.0415775, 0.0415775, 0.04148, 0.04148, 1.68262688], [1516644420000, 0.04148, 0.04148, 0.041423, 0.04148, 8.86588458], [1516644480000, 0.04148, 0.0415775, 0.04148, 0.0415773, 3.58194853], [1516644540000, 0.0415775, 0.0415775, 0.04142, 0.04142001, 1.28721586], [1516644600000, 0.04157298, 0.04157298, 0.04141, 0.04155798, 4.4495604], [1516644660000, 0.04140002, 0.04140002, 0.04140002, 0.04140002, 0.26714604], [1516644720000, 0.04140002, 0.04154798, 0.04140002, 0.04140002, 0.52504798], [1516644780000, 0.04155289, 0.04155796, 0.0414765, 0.04155297, 2.69087494], [1516644840000, 0.04147649, 0.04147649, 0.04140002, 0.04140002, 0.07148181], [1516644900000, 0.04140002, 0.04155792, 0.04140002, 0.04155792, 1.25026411], [1516644960000, 0.04140002, 0.0415529, 0.04140002, 0.0415529, 0.31206549], [1516645020000, 0.04140002, 0.04155795, 0.04140002, 0.04155289, 1.64098116], [1516645080000, 0.04140002, 0.04154799, 0.0414, 0.0414, 0.85921298], [1516645140000, 0.0414, 0.04154795, 0.04121, 0.04121, 13.27709347], [1516645200000, 0.04149899, 0.04149899, 0.04121, 0.04121, 0.48162675], [1516645320000, 0.04121, 0.0415036, 0.04121, 0.04121001, 3.22458725], [1516645380000, 0.04121501, 0.04151827, 0.04121501, 0.04151827, 19.71093323], [1516645440000, 0.04151827, 0.04151827, 0.04121001, 0.04121001, 16.68358709], [1516645500000, 0.04121, 0.04151825, 0.04121, 0.04121003, 1.58359742], [1516645560000, 0.04121004, 0.04131, 0.04121, 0.04131, 3.04209016], [1516645620000, 0.0414951, 0.04149551, 0.0414951, 0.04149551, 0.53063136], [1516645680000, 0.04130999, 0.041496, 0.04108038, 0.04149083, 41.97520053], [1516645740000, 0.04149083, 0.04149083, 0.04149083, 0.04149083, 2.02219693], [1516645800000, 0.04146099, 0.04146099, 0.04146099, 0.04146099, 0.08210132], [1516645860000, 0.04144092, 0.0414809, 0.04144092, 0.0414809, 0.96505883], [1516645920000, 0.04145083, 0.04146099, 0.04145083, 0.04146099, 1.14843885], [1516645980000, 0.04146092, 0.04146092, 0.04145083, 0.04145083, 0.74289353], [1516646040000, 0.04146099, 0.04146099, 0.04111043, 0.04111077, 1.54044847], [1516646100000, 0.04146066, 0.04146066, 0.04111713, 0.04113211, 5.11638705], [1516646160000, 0.04145598, 0.04145598, 0.04114171, 0.04114171, 10.34694248], [1516646220000, 0.04114171, 0.04114171, 0.04114171, 0.04114171, 0.2022], [1516646280000, 0.04114228, 0.04114228, 0.04114228, 0.04114228, 0.17075894], [1516646340000, 0.04114228, 0.04114228, 0.04114228, 0.04114228, 0.25006115], [1516646400000, 0.04144992, 0.04144992, 0.04144992, 0.04144992, 0.36699948], [1516646520000, 0.04124502, 0.04143, 0.04124502, 0.04143, 0.45906424], [1516646580000, 0.04114234, 0.04114234, 0.04114228, 0.04114228, 4.56925344], [1516646640000, 0.04139092, 0.04139092, 0.0413885, 0.0413885, 1.04547253], [1516646820000, 0.0413789, 0.0413789, 0.04137879, 0.04137879, 1.64533869], [1516646880000, 0.04137845, 0.04137846, 0.04137845, 0.04137846, 1.21529482], [1516646940000, 0.04114238, 0.04114238, 0.04114238, 0.04114238, 0.034693], [1516647000000, 0.04114238, 0.04114238, 0.04114238, 0.04114238, 0.5999], [1516647060000, 0.0413781, 0.04137843, 0.0411631, 0.04137843, 12.88661067], [1516647120000, 0.04123338, 0.04137891, 0.04123338, 0.04137891, 3.57696784], [1516647180000, 0.0411523, 0.0413885, 0.0411523, 0.0413885, 4.5793117], [1516647240000, 0.0413885, 0.0413885, 0.0411524, 0.04137588, 24.81212657], [1516647300000, 0.04127638, 0.04137586, 0.041136, 0.041371, 4.72556075], [1516647360000, 0.04137099, 0.04137099, 0.04137099, 0.04137099, 0.14386944], [1516647420000, 0.04113223, 0.04113233, 0.04102875, 0.04113222, 4.7631402], [1516647480000, 0.04113222, 0.04113222, 0.04101915, 0.04101915, 4.46674378], [1516647540000, 0.04101915, 0.04113222, 0.04101, 0.04113222, 4.31537831], [1516647600000, 0.04113222, 0.04113222, 0.04101, 0.04113222, 2.1932321], [1516647660000, 0.04113222, 0.04113222, 0.04113222, 0.04113222, 3.846], [1516647720000, 0.04101, 0.041351, 0.04101, 0.041351, 2.25040592], [1516647780000, 0.04132841, 0.04132841, 0.04101001, 0.04101001, 0.56302976], [1516647840000, 0.04101501, 0.04136099, 0.04101501, 0.04136099, 0.2261108], [1516647900000, 0.041345, 0.041345, 0.041345, 0.041345, 0.24177365], [1516648020000, 0.04116017, 0.04116017, 0.04116017, 0.04116017, 0.70143054], [1516648080000, 0.04136099, 0.041361, 0.04136099, 0.041361, 17.91056197], [1516648140000, 0.041361, 0.04136105, 0.0411602, 0.0411602, 14.76892226], [1516648200000, 0.0411602, 0.0411602, 0.04101502, 0.041066, 13.10270662], [1516648260000, 0.04101512, 0.04132314, 0.04101, 0.04101, 2.4593], [1516648320000, 0.04101, 0.04133499, 0.041, 0.04132, 57.82177483], [1516648500000, 0.041291, 0.041291, 0.041291, 0.041291, 0.04622184], [1516648560000, 0.0412, 0.04128908, 0.0412, 0.04128207, 0.46011845], [1516648620000, 0.04128207, 0.041301, 0.04128207, 0.041301, 2.92725042], [1516648680000, 0.041301, 0.041301, 0.04100001, 0.04100001, 1.14161348], [1516648740000, 0.04130998, 0.04130998, 0.04100001, 0.04100001, 4.16769418], [1516648800000, 0.041, 0.04100001, 0.041, 0.041, 14.75453111], [1516648860000, 0.041, 0.041, 0.040929, 0.04096271, 1.45274408], [1516648920000, 0.04096271, 0.041, 0.04096271, 0.041, 1.6984695], [1516649040000, 0.041, 0.041, 0.04096271, 0.041, 1.19478517], [1516649100000, 0.041, 0.041, 0.04096271, 0.041, 6.00928602], [1516649160000, 0.041, 0.041, 0.0409295, 0.0409295, 13.5546893], [1516649220000, 0.04092951, 0.041, 0.0409, 0.040918, 14.32687878], [1516649280000, 0.040918, 0.040918, 0.04086392, 0.0409, 1.83794763], [1516649340000, 0.04086336, 0.04086336, 0.040815, 0.04086336, 3.17098951], [1516649400000, 0.04086336, 0.04086336, 0.04081501, 0.04081501, 0.85592299], [1516649460000, 0.04086336, 0.04086336, 0.04086336, 0.04086336, 1.10433999], [1516649520000, 0.04086336, 0.04086336, 0.04081501, 0.04086336, 15.97705588], [1516649580000, 0.04086336, 0.0409, 0.04086336, 0.0409, 7.0667684], [1516649640000, 0.0409, 0.0409, 0.04081502, 0.0409, 2.31731224], [1516649700000, 0.04089999, 0.040918, 0.04081504, 0.04090001, 5.90787877], [1516649760000, 0.04090001, 0.04100001, 0.04090001, 0.04100001, 4.57792071], [1516649820000, 0.04100001, 0.04100001, 0.04091801, 0.04091801, 0.33075949], [1516649880000, 0.04100001, 0.04100001, 0.0409, 0.0409, 15.03206548], [1516649940000, 0.04081504, 0.04100001, 0.04081, 0.040815, 19.63098687], [1516650000000, 0.040815, 0.040815, 0.04081001, 0.040815, 5.83579666], [1516650060000, 0.04085582, 0.04118799, 0.04081001, 0.04081003, 8.75680082], [1516650120000, 0.04118796, 0.04118799, 0.04081016, 0.04081016, 1.24484899], [1516650180000, 0.041143, 0.041143, 0.041133, 0.041133, 2.05949694], [1516650240000, 0.04098914, 0.041158, 0.04083216, 0.041158, 0.66803379], [1516650300000, 0.04083232, 0.041118, 0.04083232, 0.04083239, 0.5432734], [1516650360000, 0.041079, 0.04108, 0.04083247, 0.04083247, 1.06877243], [1516650420000, 0.04083248, 0.04083248, 0.04071, 0.04083238, 20.9644432], [1516650480000, 0.04071431, 0.041, 0.04071431, 0.041, 2.00775036], [1516650540000, 0.04083238, 0.04083238, 0.04083238, 0.04083238, 2.429727], [1516650600000, 0.041, 0.041, 0.04071431, 0.04071431, 2.31953168], [1516650720000, 0.04079433, 0.04079433, 0.04079433, 0.04079433, 0.12937864], [1516650840000, 0.04099999, 0.04099999, 0.04079432, 0.04079432, 4.225718], [1516650900000, 0.04099999, 0.041, 0.04099999, 0.041, 0.24390243], [1516650960000, 0.04099999, 0.04099999, 0.04099999, 0.04099999, 0.1], [1516651020000, 0.04099999, 0.04099999, 0.04099999, 0.04099999, 0.0729878], [1516651080000, 0.0408, 0.04099998, 0.0408, 0.0408, 0.0961712], [1516651140000, 0.0408, 0.0408, 0.04079999, 0.04079999, 3.3784909], [1516651200000, 0.04082, 0.04099998, 0.04079999, 0.04079999, 7.31448163], [1516651260000, 0.04099998, 0.04099998, 0.04079999, 0.04079999, 0.04550071], [1516651320000, 0.04079999, 0.0409, 0.04079999, 0.0408, 0.32581899], [1516651380000, 0.0408, 0.04080001, 0.0408, 0.0408, 0.11500719], [1516651440000, 0.04080001, 0.0409, 0.0408, 0.0409, 0.63591639], [1516651500000, 0.0408, 0.0408, 0.04071432, 0.04071432, 0.9763412], [1516651560000, 0.04071431, 0.04071431, 0.04071, 0.04071, 0.05415786], [1516651620000, 0.04071, 0.0407143, 0.0406969, 0.0407143, 16.54353239], [1516651680000, 0.0407143, 0.0407143, 0.0407143, 0.0407143, 4.04329913], [1516651740000, 0.04071429, 0.04071429, 0.0406969, 0.0406969, 1.40435499], [1516651800000, 0.0406969, 0.0406969, 0.04062867, 0.04062867, 5.0], [1516651860000, 0.04062867, 0.04071429, 0.04062867, 0.04071429, 1.54132078], [1516651920000, 0.0407143, 0.0407143, 0.04062486, 0.04062486, 0.36402644], [1516651980000, 0.04062486, 0.04071429, 0.04056, 0.04056, 0.8681909], [1516652040000, 0.0405925, 0.04089999, 0.0405925, 0.04086499, 35.51185351], [1516652100000, 0.04089998, 0.04117, 0.04089998, 0.04089998, 54.79640483], [1516652160000, 0.04093498, 0.04118799, 0.04057003, 0.04057003, 128.36893661], [1516652220000, 0.04117598, 0.04117598, 0.04116597, 0.04116597, 0.35216531], [1516652580000, 0.04113986, 0.04113986, 0.04113986, 0.04113986, 0.02514753], [1516652700000, 0.041, 0.041, 0.04085002, 0.04085002, 0.47868461], [1516652760000, 0.04065001, 0.040655, 0.04064999, 0.04064999, 2.74635305], [1516652820000, 0.04064999, 0.040915, 0.04058, 0.04058, 22.66008696], [1516652880000, 0.04065, 0.04091495, 0.04058, 0.0409, 1.52916902], [1516653000000, 0.04089199, 0.04089199, 0.04065066, 0.04088659, 0.75971574], [1516653060000, 0.04087459, 0.040875, 0.04087459, 0.040875, 0.01933517], [1516653120000, 0.04079, 0.04079, 0.04079, 0.04079, 3.53628985], [1516653180000, 0.04057003, 0.0408079, 0.04057002, 0.0408079, 14.8000251], [1516653240000, 0.04057003, 0.04057003, 0.04057003, 0.04057003, 1.0], [1516653360000, 0.0405954, 0.04083203, 0.04057003, 0.040832, 41.51241592], [1516653420000, 0.04057007, 0.04057007, 0.04057003, 0.04057003, 0.25], [1516653480000, 0.04057501, 0.04057501, 0.040575, 0.040575, 0.50870651], [1516653540000, 0.04057501, 0.04057501, 0.04057501, 0.04057501, 0.3543442], [1516653600000, 0.04057501, 0.04057501, 0.04057499, 0.04057499, 7.11398189], [1516653660000, 0.04057004, 0.04057004, 0.04057003, 0.04057003, 4.34619565], [1516653720000, 0.04057003, 0.040575, 0.04057003, 0.040575, 16.27668681], [1516653780000, 0.040575, 0.040575, 0.04057003, 0.04057003, 8.96163585], [1516653840000, 0.04057003, 0.04057498, 0.04057003, 0.04057497, 3.9912036], [1516653900000, 0.04057497, 0.04057497, 0.04057497, 0.04057497, 0.29500946], [1516653960000, 0.04057497, 0.04057497, 0.04057495, 0.04057495, 2.13263979], [1516654020000, 0.04057495, 0.04057495, 0.04057003, 0.04057003, 0.1182918], [1516654080000, 0.04057248, 0.04057248, 0.04057003, 0.04057247, 7.64765762], [1516654140000, 0.04057247, 0.04057494, 0.04057247, 0.04057494, 0.65410901], [1516654200000, 0.04057493, 0.04057493, 0.04057489, 0.04057489, 0.46158841], [1516654260000, 0.04057488, 0.04057491, 0.04057488, 0.04057491, 0.05435074], [1516654320000, 0.04057491, 0.04057491, 0.0405749, 0.04057491, 0.28368301], [1516654380000, 0.04057491, 0.04057492, 0.04057021, 0.04057492, 29.17536841], [1516654440000, 0.04057492, 0.0407614, 0.04057491, 0.0407614, 22.96504035], [1516654500000, 0.040575, 0.040575, 0.040575, 0.040575, 0.14408093], [1516654560000, 0.04086481, 0.04086481, 0.04057503, 0.04057507, 0.81712973], [1516654620000, 0.04086436, 0.04086436, 0.0405751, 0.0405751, 0.11539849], [1516654680000, 0.04086043, 0.04086043, 0.04086043, 0.04086043, 0.04849821], [1516654800000, 0.04086041, 0.04086041, 0.040855, 0.040855, 0.32480126], [1516654860000, 0.04085001, 0.04085501, 0.04057621, 0.04085499, 1.2258942], [1516654920000, 0.04085498, 0.04085498, 0.04085, 0.04085, 0.56035783], [1516654980000, 0.04084599, 0.04084599, 0.04084599, 0.04084599, 0.02768804], [1516655040000, 0.04084599, 0.04084599, 0.04084599, 0.04084599, 0.02454852], [1516655100000, 0.04084598, 0.04084598, 0.0407111, 0.0407111, 0.16094753], [1516655160000, 0.040845, 0.040845, 0.040845, 0.040845, 0.3], [1516655220000, 0.0407111, 0.04084599, 0.040625, 0.040625, 0.42267745], [1516655280000, 0.04085001, 0.04091497, 0.04085001, 0.04091497, 8.10677911], [1516655340000, 0.04091497, 0.04091498, 0.040905, 0.04091498, 79.56710043], [1516655400000, 0.04091498, 0.04091498, 0.04089404, 0.04089404, 22.46744733], [1516655460000, 0.04076667, 0.04076667, 0.0407, 0.04070701, 10.333931], [1516655520000, 0.04090499, 0.04090499, 0.04090499, 0.04090499, 0.02708397], [1516655580000, 0.04090499, 0.04090499, 0.040665, 0.040895, 49.57437964], [1516655640000, 0.040897, 0.040897, 0.040897, 0.040897, 0.12223453], [1516655700000, 0.04089678, 0.040897, 0.04089659, 0.04089698, 6.60195631], [1516655760000, 0.0407981, 0.0407981, 0.0407981, 0.0407981, 0.04289938], [1516655820000, 0.04058001, 0.04079803, 0.04058001, 0.040625, 7.05125106], [1516655880000, 0.04079803, 0.040897, 0.04061902, 0.04079803, 37.69081632], [1516655940000, 0.04079804, 0.04079804, 0.04079804, 0.04079804, 2.52588968], [1516656000000, 0.040897, 0.040897, 0.04079804, 0.04079805, 6.95440619], [1516656060000, 0.04079809, 0.04079809, 0.04079804, 0.04079804, 14.97548275], [1516656120000, 0.04079804, 0.04079804, 0.04079803, 0.04079803, 52.95295474], [1516656180000, 0.04079803, 0.04079804, 0.04079803, 0.04079803, 2.73215037], [1516656240000, 0.04079803, 0.04079803, 0.04079803, 0.04079803, 1.78703334], [1516656300000, 0.04079803, 0.040897, 0.04079803, 0.040897, 2.10381416], [1516656360000, 0.04079804, 0.04079804, 0.04079803, 0.04079803, 1.57625032], [1516656420000, 0.04079803, 0.04079803, 0.04058001, 0.04058001, 8.23993471], [1516656480000, 0.04058001, 0.04058001, 0.04058001, 0.04058001, 0.17585902], [1516656540000, 0.04058001, 0.04058001, 0.04058001, 0.04058001, 0.15434242], [1516656600000, 0.04058001, 0.04079803, 0.0405761, 0.0405761, 1.7813743], [1516656660000, 0.0405761, 0.0405761, 0.0405761, 0.0405761, 0.20434761], [1516656720000, 0.04070641, 0.04076661, 0.04070641, 0.04076661, 0.11578764], [1516656840000, 0.04070641, 0.04070641, 0.04070641, 0.04070641, 0.37129328], [1516656900000, 0.04070641, 0.04070641, 0.040575, 0.04057501, 31.16903883], [1516656960000, 0.04070641, 0.04070641, 0.04070641, 0.04070641, 0.02717203], [1516657020000, 0.0407064, 0.04076661, 0.04057503, 0.04057503, 21.50802739], [1516657080000, 0.04076661, 0.04076661, 0.04076661, 0.04076661, 0.0543298], [1516657140000, 0.04076661, 0.04076661, 0.04076661, 0.04076661, 1.46164891], [1516657200000, 0.04057503, 0.04076661, 0.04057503, 0.04076661, 0.70113748], [1516657260000, 0.04057502, 0.04057503, 0.04057502, 0.04057503, 1.05447917], [1516657320000, 0.04057505, 0.04057505, 0.04057505, 0.04057505, 0.0565], [1516657380000, 0.04076661, 0.04076661, 0.04076661, 0.04076661, 61.54647798], [1516657500000, 0.04075158, 0.04079803, 0.04075158, 0.04079803, 0.27483584], [1516657560000, 0.04058501, 0.04079803, 0.04058501, 0.04079803, 0.16696288], [1516657620000, 0.040585, 0.040585, 0.040585, 0.040585, 0.10330247], [1516657680000, 0.04079799, 0.04079799, 0.04058002, 0.0407, 0.46863279], [1516657740000, 0.0406995, 0.0407, 0.0406995, 0.0407, 0.64248226], [1516657800000, 0.04057505, 0.0407, 0.04057505, 0.04057505, 1.72792555], [1516657860000, 0.04057505, 0.04057505, 0.04057505, 0.04057505, 3.21562685], [1516657920000, 0.0407, 0.0407, 0.04057505, 0.04057506, 2.52070701], [1516657980000, 0.04057506, 0.04057506, 0.04057505, 0.04057505, 0.71218285], [1516658040000, 0.04062202, 0.0407, 0.04057003, 0.04057003, 15.75717178], [1516658100000, 0.04057003, 0.04057003, 0.0403, 0.04043537, 29.02417044], [1516658160000, 0.04043537, 0.040685, 0.04043537, 0.04043537, 16.64248097], [1516658220000, 0.040635, 0.04067, 0.04043537, 0.04043537, 2.73725485], [1516658280000, 0.04053545, 0.04067499, 0.04043537, 0.04067499, 5.74016717], [1516658340000, 0.04053544, 0.04053544, 0.04040873, 0.04043536, 5.77462323], [1516658400000, 0.04066499, 0.04068498, 0.04049998, 0.04049998, 3.40083363], [1516658460000, 0.04049998, 0.04066496, 0.04043536, 0.04066496, 3.92378361], [1516658520000, 0.04043536, 0.04043536, 0.04043536, 0.04043536, 2.90086717], [1516658580000, 0.04066495, 0.04066495, 0.04066495, 0.04066495, 0.08936807], [1516658640000, 0.04064707, 0.04064707, 0.04049647, 0.04049647, 3.18030372], [1516658700000, 0.04064199, 0.04064698, 0.04064199, 0.04064698, 0.59850088], [1516658760000, 0.04064706, 0.04064706, 0.04064706, 0.04064706, 0.61346863], [1516658820000, 0.04051197, 0.04051197, 0.04051197, 0.04051197, 0.05012442], [1516658880000, 0.04063364, 0.04063364, 0.04063364, 0.04063364, 0.7317009], [1516658940000, 0.04063364, 0.04063364, 0.04063364, 0.04063364, 1.94052247], [1516659000000, 0.04063364, 0.04063374, 0.04063364, 0.04063364, 2.26907907], [1516659060000, 0.04063364, 0.04063364, 0.04063364, 0.04063364, 5.77867332], [1516659120000, 0.04063364, 0.04063364, 0.04051198, 0.04051198, 0.26682294], [1516659180000, 0.0406311, 0.0406311, 0.04051198, 0.04051198, 1.03840706], [1516659240000, 0.0406311, 0.0406311, 0.0406311, 0.0406311, 0.4134789], [1516659300000, 0.0406311, 0.0406311, 0.0406311, 0.0406311, 0.24611689], [1516659360000, 0.0406311, 0.04063364, 0.0406311, 0.04063364, 3.32864024], [1516659420000, 0.04063364, 0.04063364, 0.04063364, 0.04063364, 6.29784375], [1516659480000, 0.04063307, 0.04063364, 0.04063307, 0.04063307, 2.13503344], [1516659540000, 0.04063307, 0.04068498, 0.04063307, 0.04068498, 8.3561454], [1516659600000, 0.04063308, 0.0406849, 0.04063308, 0.04063309, 0.07433214], [1516659660000, 0.0406849, 0.04068498, 0.0406849, 0.04068498, 7.14597806], [1516659720000, 0.04076659, 0.04076659, 0.04076659, 0.04076659, 0.03], [1516659780000, 0.04079803, 0.04079803, 0.0407666, 0.0407666, 0.08843358], [1516659840000, 0.0407666, 0.0407666, 0.04076659, 0.04076659, 2.08482092], [1516659900000, 0.04076658, 0.04076659, 0.04045, 0.04076658, 19.35362783], [1516660020000, 0.04046003, 0.04076659, 0.04046003, 0.04076659, 5.15608982], [1516660080000, 0.04076659, 0.04079803, 0.04076, 0.04079803, 2.92602582], [1516660140000, 0.04079803, 0.04079803, 0.04079803, 0.04079803, 5.98252488], [1516660200000, 0.04076882, 0.04100089, 0.04076882, 0.04098099, 30.09566671], [1516660260000, 0.04098099, 0.04100089, 0.04098099, 0.04100001, 2.29598764], [1516660320000, 0.04100001, 0.04100002, 0.04100001, 0.04100002, 1.92733586], [1516660380000, 0.04100001, 0.04100089, 0.041, 0.041, 9.28811947], [1516660440000, 0.041, 0.04100001, 0.041, 0.041, 2.00348217], [1516660500000, 0.041, 0.0410009, 0.041, 0.0410009, 6.78949866], [1516660560000, 0.0410009, 0.0410009, 0.0410009, 0.0410009, 0.0537793], [1516660620000, 0.0410009, 0.0410009, 0.041, 0.041, 17.09865364], [1516660680000, 0.041, 0.041, 0.04090205, 0.041, 6.10073625], [1516660740000, 0.040782, 0.040782, 0.040777, 0.040777, 0.10017165], [1516660800000, 0.040782, 0.040782, 0.040777, 0.040777, 0.74224975], [1516660860000, 0.040777, 0.04077899, 0.040777, 0.04077899, 1.48516574], [1516661040000, 0.04100498, 0.04113899, 0.04100498, 0.04113899, 38.25610961], [1516661100000, 0.04113899, 0.04116899, 0.04113899, 0.04113899, 3.24759466], [1516661160000, 0.04113899, 0.04117419, 0.04113899, 0.04113899, 35.71422249], [1516661220000, 0.04117421, 0.04117421, 0.04113899, 0.04113899, 1.51300676], [1516661340000, 0.04117, 0.04117, 0.04113899, 0.04115, 2.21989679], [1516661400000, 0.04115, 0.04117421, 0.04115, 0.04115, 5.17303026], [1516661460000, 0.04115, 0.04124, 0.04113899, 0.04113899, 22.07650466], [1516661520000, 0.04117321, 0.04124, 0.04115, 0.04124, 3.06891059], [1516661580000, 0.04124, 0.04124, 0.04124, 0.04124, 26.46186928], [1516661640000, 0.04124, 0.04124, 0.04115001, 0.04124, 32.22221787], [1516661700000, 0.04124, 0.04138, 0.04124, 0.04138, 1.70342304], [1516661760000, 0.04132001, 0.04156998, 0.04132001, 0.04156998, 2.21405304], [1516661820000, 0.04133003, 0.04157012, 0.04133001, 0.04133001, 1.58709252], [1516661880000, 0.04133001, 0.04157014, 0.04133, 0.0415701, 9.58807134], [1516661940000, 0.04133, 0.04156802, 0.04133, 0.04156802, 0.43546509], [1516662000000, 0.04133, 0.04156802, 0.04133, 0.04156802, 0.68861058], [1516662060000, 0.04133202, 0.04133202, 0.04133202, 0.04133202, 0.04055024], [1516662120000, 0.04156802, 0.04156802, 0.04156802, 0.04156802, 0.11541799], [1516662180000, 0.04156802, 0.04156805, 0.0413501, 0.04156803, 11.24103587], [1516662240000, 0.04156803, 0.04157014, 0.04156803, 0.04156804, 1.38995736], [1516662300000, 0.04156804, 0.0415775, 0.0414176, 0.04142302, 7.11042148], [1516662360000, 0.04142305, 0.0415775, 0.04138463, 0.0414, 27.33836151], [1516662420000, 0.0414401, 0.0415775, 0.04142011, 0.041444, 6.32446391], [1516662480000, 0.0415775, 0.0416538, 0.04142405, 0.041474, 23.48167929], [1516662540000, 0.0415681, 0.0415681, 0.0415681, 0.0415681, 0.2640049], [1516662600000, 0.04156811, 0.0416538, 0.04156811, 0.0416538, 1.03682158], [1516662660000, 0.0416338, 0.0416538, 0.0416338, 0.0416538, 0.99505347], [1516662720000, 0.0414571, 0.04163379, 0.0414571, 0.0415, 3.65468139], [1516662780000, 0.041519, 0.041519, 0.04113899, 0.04113899, 24.88338534], [1516662840000, 0.041417, 0.041519, 0.041417, 0.0415, 0.45721087], [1516662900000, 0.04150001, 0.04150001, 0.04148871, 0.04150001, 2.56607355], [1516662960000, 0.04148871, 0.04150001, 0.04148871, 0.0415, 0.22950418], [1516663020000, 0.04148871, 0.04148871, 0.04148871, 0.04148871, 0.02657349], [1516663080000, 0.04148872, 0.04148872, 0.04148871, 0.04148871, 5.61727293], [1516663140000, 0.0414887, 0.041519, 0.04126532, 0.041519, 3.22851474], [1516663200000, 0.04160899, 0.041629, 0.04160899, 0.041629, 0.72099786], [1516663260000, 0.04161899, 0.04161899, 0.041519, 0.041519, 1.80825524], [1516663320000, 0.04120885, 0.04150899, 0.041139, 0.04150899, 1.52830877], [1516663380000, 0.041139, 0.041139, 0.04113899, 0.04113899, 0.78536152], [1516663440000, 0.041374, 0.041374, 0.04113899, 0.04113899, 2.20723687], [1516663500000, 0.04136899, 0.04136899, 0.04113899, 0.04113899, 2.53781646], [1516663560000, 0.04113899, 0.04135799, 0.04113899, 0.04113899, 1.92208299], [1516663620000, 0.04133799, 0.041487, 0.04083524, 0.041487, 22.72467957], [1516663680000, 0.04118843, 0.041333, 0.04106238, 0.04106238, 0.16075284], [1516663740000, 0.04106244, 0.04107003, 0.04106244, 0.04107003, 0.05369378], [1516663800000, 0.04107009, 0.04139095, 0.04107, 0.04111067, 19.8512672], [1516663860000, 0.04111067, 0.04138594, 0.04111067, 0.04138594, 1.81912363], [1516663920000, 0.04107012, 0.04137099, 0.04107, 0.04107, 1.21540685], [1516663980000, 0.04107, 0.04107, 0.04107, 0.04107, 0.04653976], [1516664040000, 0.04107, 0.04107, 0.04107, 0.04107, 0.17612382], [1516664100000, 0.04131599, 0.04131599, 0.04107, 0.04107, 0.78025542], [1516664160000, 0.04107, 0.04109999, 0.04107, 0.04109999, 0.07988774], [1516664220000, 0.04107, 0.04107, 0.04080001, 0.04107, 0.52532165], [1516664280000, 0.04107, 0.04107, 0.04107, 0.04107, 0.24024156], [1516664400000, 0.041124, 0.041144, 0.041124, 0.041144, 0.48627488], [1516664460000, 0.04112899, 0.04112899, 0.04112899, 0.04112899, 0.08296083], [1516664520000, 0.04110399, 0.041104, 0.04073941, 0.04073941, 2.29654999], [1516664580000, 0.040888, 0.040888, 0.040603, 0.040603, 0.8386435], [1516664640000, 0.04059644, 0.0408516, 0.040582, 0.0408516, 5.24410811], [1516664700000, 0.04088801, 0.04088801, 0.0408516, 0.0408516, 0.419581], [1516664760000, 0.04088801, 0.04088801, 0.04088801, 0.04088801, 1.11321034], [1516664820000, 0.04088802, 0.04108389, 0.04088802, 0.04108389, 0.10265915], [1516664940000, 0.04088802, 0.04088802, 0.04088802, 0.04088802, 0.09987801], [1516665000000, 0.04108, 0.04108, 0.04108, 0.04108, 1.84787311], [1516665120000, 0.041079, 0.041079, 0.041079, 0.041079, 0.37369367], [1516665180000, 0.04088802, 0.04088802, 0.04088802, 0.04088802, 0.27696389], [1516665240000, 0.04088802, 0.041079, 0.04088802, 0.04088802, 3.23780807], [1516665300000, 0.04088802, 0.04106898, 0.04088802, 0.04104499, 6.997466], [1516665360000, 0.041, 0.041, 0.0409, 0.0409, 6.41017881], [1516665420000, 0.041, 0.041, 0.041, 0.041, 0.17709175], [1516665480000, 0.041, 0.041, 0.041, 0.041, 0.07144399], [1516665540000, 0.04090001, 0.04090001, 0.04090001, 0.04090001, 0.0707086], [1516665600000, 0.041, 0.041, 0.041, 0.041, 1.51732672], [1516665660000, 0.041, 0.041, 0.04090003, 0.041, 5.29359617], [1516665720000, 0.04090001, 0.041, 0.0409, 0.04090001, 1.40878631], [1516665780000, 0.041, 0.041, 0.04090112, 0.04090112, 7.0818029], [1516665840000, 0.041, 0.04108389, 0.041, 0.04108389, 0.08429595], [1516665900000, 0.04108389, 0.041369, 0.041, 0.041, 2.48593218], [1516665960000, 0.041327, 0.041327, 0.041, 0.04130594, 1.80974972], [1516666020000, 0.04100001, 0.04100001, 0.041, 0.041, 1.59764872], [1516666080000, 0.041, 0.04123797, 0.041, 0.041, 7.34454743], [1516666140000, 0.041, 0.041, 0.041, 0.041, 0.22120323], [1516666200000, 0.041, 0.04127598, 0.041, 0.041, 2.15341321], [1516666260000, 0.04099999, 0.04127578, 0.04099999, 0.04127578, 3.21835805], [1516666320000, 0.0411, 0.0411, 0.0411, 0.0411, 1.8017043], [1516666380000, 0.0411, 0.04123592, 0.0411, 0.0411, 0.31672438], [1516666440000, 0.04123592, 0.04123592, 0.0411, 0.0411, 2.10989208], [1516666500000, 0.0411, 0.04132597, 0.0411, 0.0411, 4.11844372], [1516666560000, 0.0411, 0.04110001, 0.0411, 0.04110001, 3.61669515], [1516666620000, 0.0411, 0.04110001, 0.0411, 0.0411, 0.06975568], [1516666680000, 0.04110001, 0.04110001, 0.0411, 0.0411, 1.81723174], [1516666740000, 0.0411, 0.04110001, 0.0411, 0.04110001, 0.9371429], [1516666800000, 0.04110001, 0.04138399, 0.04110001, 0.04110001, 2.44901901], [1516666860000, 0.04138399, 0.04138399, 0.04091, 0.04117704, 8.07144472], [1516666980000, 0.04117704, 0.04126, 0.041175, 0.04126, 0.62772813], [1516667040000, 0.04117704, 0.04117704, 0.041175, 0.04117704, 0.33176454], [1516667100000, 0.04117704, 0.04126, 0.041175, 0.041175, 5.99914084], [1516667220000, 0.04092049, 0.04137991, 0.04092049, 0.04137991, 0.47457448], [1516667280000, 0.04094101, 0.040947, 0.040915, 0.040915, 11.88763854], [1516667400000, 0.04125498, 0.04125498, 0.04092, 0.04092, 1.02190544], [1516667520000, 0.04092, 0.04092, 0.04092, 0.04092, 0.02808515], [1516667580000, 0.04092501, 0.04092501, 0.04092501, 0.04092501, 0.2072], [1516667640000, 0.04120001, 0.04120002, 0.04093, 0.04093, 11.42767766], [1516667700000, 0.04123032, 0.04123032, 0.040925, 0.04092501, 0.69689677], [1516667760000, 0.04123012, 0.04123012, 0.04123012, 0.04123012, 0.28949904], [1516668060000, 0.04093101, 0.04093101, 0.04093101, 0.04093101, 0.01905778], [1516668120000, 0.04122997, 0.04122998, 0.04122997, 0.04122998, 0.13509221], [1516668180000, 0.04122998, 0.04123, 0.04122998, 0.04123, 2.7050882], [1516668240000, 0.04094101, 0.04123, 0.040941, 0.04123, 2.06740604], [1516668300000, 0.040925, 0.04123033, 0.040925, 0.04123033, 2.79665403], [1516668360000, 0.04123033, 0.04123033, 0.04123033, 0.04123033, 4.29997181], [1516668420000, 0.04124995, 0.04133392, 0.04108613, 0.041329, 1.48779894], [1516668480000, 0.04105917, 0.04105917, 0.04105917, 0.04105917, 0.02685149], [1516668540000, 0.04105916, 0.04105925, 0.04105916, 0.04105925, 0.05370292], [1516668600000, 0.04105916, 0.04105917, 0.04105916, 0.04105917, 0.05370297], [1516668660000, 0.04105916, 0.04139081, 0.04105916, 0.04122502, 2.08016944], [1516668720000, 0.04122502, 0.04122502, 0.04122502, 0.04122502, 0.22667059], [1516668780000, 0.04122502, 0.04122502, 0.04122502, 0.04122502, 0.09056988], [1516668840000, 0.04139067, 0.04139067, 0.04106732, 0.04139057, 1.16331192], [1516668900000, 0.04139053, 0.04139053, 0.04105916, 0.04105916, 0.52281062], [1516668960000, 0.04105916, 0.04139046, 0.04105916, 0.04139036, 0.10932927], [1516669020000, 0.04105916, 0.04139033, 0.04105916, 0.04139033, 0.2302728], [1516669080000, 0.0413903, 0.04139049, 0.040925, 0.040925, 25.62459584], [1516669140000, 0.04092502, 0.04118332, 0.04092502, 0.04105916, 3.96790905], [1516669200000, 0.0411, 0.04118333, 0.04105916, 0.04118333, 0.44651986], [1516669260000, 0.04105916, 0.04118333, 0.04105916, 0.04118333, 1.03554782], [1516669320000, 0.04105916, 0.04118333, 0.04092502, 0.04118332, 3.33762258], [1516669440000, 0.04118331, 0.04118331, 0.04118331, 0.04118331, 0.09927785], [1516669500000, 0.04118333, 0.04118333, 0.041183, 0.041183, 1.11156681], [1516669560000, 0.04118333, 0.04118333, 0.041181, 0.041181, 0.10093495], [1516669620000, 0.041183, 0.04118333, 0.041183, 0.04118333, 0.16000522], [1516669740000, 0.04098, 0.04098, 0.04098, 0.04098, 0.02690337], [1516669800000, 0.04118299, 0.04123719, 0.04091, 0.04123719, 7.87780173], [1516669860000, 0.041261, 0.041261, 0.040857, 0.04089915, 19.58638858], [1516669920000, 0.040857, 0.040857, 0.040857, 0.040857, 3.45091559], [1516669980000, 0.04085699, 0.040857, 0.0408516, 0.0408516, 6.00764654], [1516670040000, 0.0411589, 0.0411589, 0.0411589, 0.0411589, 0.03771276], [1516670100000, 0.04085702, 0.04135498, 0.04085702, 0.04118151, 3.01298314], [1516670160000, 0.0411589, 0.041182, 0.0411589, 0.04118199, 0.13483498], [1516670220000, 0.04118197, 0.041182, 0.04118197, 0.041182, 1.00400299], [1516670280000, 0.041325, 0.041325, 0.041325, 0.041325, 0.02153973], [1516670460000, 0.04116999, 0.04116999, 0.04116999, 0.04116999, 0.55412673], [1516670520000, 0.04117999, 0.04117999, 0.04117999, 0.04117999, 0.09413206], [1516670580000, 0.04116999, 0.04117, 0.04116999, 0.04117, 0.09163559], [1516670640000, 0.04115998, 0.04115998, 0.04115998, 0.04115998, 0.02675395], [1516670700000, 0.04116498, 0.041165, 0.04116498, 0.041165, 0.49916673], [1516670820000, 0.041165, 0.041165, 0.041165, 0.041165, 0.11331679], [1516670880000, 0.041165, 0.041165, 0.040857, 0.04116, 0.28907561], [1516670940000, 0.04115998, 0.04115998, 0.04115998, 0.04115998, 0.07726816], [1516671000000, 0.04115199, 0.04115199, 0.04115199, 0.04115199, 0.57683092], [1516671120000, 0.040864, 0.04115199, 0.040864, 0.04115199, 0.06286188], [1516671180000, 0.04115199, 0.04115199, 0.04115, 0.04115, 0.03448907], [1516671240000, 0.04115, 0.04115, 0.04115, 0.04115, 0.04720386], [1516671300000, 0.04115199, 0.04115199, 0.04115, 0.04115, 2.61529098], [1516671360000, 0.0408741, 0.0408741, 0.040874, 0.040874, 0.24336053], [1516671420000, 0.0411, 0.0411, 0.0411, 0.0411, 0.07420542], [1516671480000, 0.0411, 0.04110009, 0.0408641, 0.0408641, 12.62320771], [1516671600000, 0.040874, 0.04110009, 0.04086501, 0.04110009, 0.89427019], [1516671720000, 0.04110009, 0.04110009, 0.04110009, 0.04110009, 11.57140912], [1516671900000, 0.04110009, 0.04115, 0.04110009, 0.04115, 1.60676271], [1516672020000, 0.0411001, 0.04110011, 0.0411001, 0.0411001, 2.42638384], [1516672080000, 0.04115, 0.0412, 0.04115, 0.0412, 0.2729135], [1516672140000, 0.04120001, 0.04120001, 0.04120001, 0.04120001, 0.03070389], [1516672200000, 0.04129001, 0.04139094, 0.04129001, 0.04139094, 2.36997385], [1516672260000, 0.04130001, 0.04130001, 0.04130001, 0.04130001, 1.35], [1516672320000, 0.04132001, 0.04132001, 0.04128337, 0.04128337, 1.38381886], [1516672380000, 0.04128337, 0.04128337, 0.04128337, 0.04128337, 0.24529295], [1516672500000, 0.04128337, 0.04128337, 0.04128337, 0.04128337, 0.24222811], [1516672560000, 0.04128337, 0.04128337, 0.04128337, 0.04128337, 0.32712837], [1516672620000, 0.04128337, 0.04142061, 0.04110009, 0.04110009, 2.96437325], [1516672680000, 0.0414, 0.0414, 0.04139997, 0.04139997, 0.26], [1516672740000, 0.041395, 0.041395, 0.04108601, 0.04108601, 0.47], [1516672860000, 0.04108601, 0.04119496, 0.04086902, 0.04119496, 1.18642224], [1516672920000, 0.0412, 0.04124, 0.0412, 0.04124, 3.53075717], [1516672980000, 0.040899, 0.040899, 0.04089403, 0.04089403, 11.40457611], [1516673100000, 0.041196, 0.04119999, 0.040904, 0.04119999, 1.10352593], [1516673220000, 0.041195, 0.041195, 0.041195, 0.041195, 1.0], [1516673280000, 0.04119467, 0.0412, 0.04119467, 0.0412, 3.44517548], [1516673340000, 0.0412, 0.0412, 0.0412, 0.0412, 0.54789789], [1516673400000, 0.0412, 0.04126498, 0.0412, 0.04126498, 3.5496149], [1516673460000, 0.0412, 0.0412, 0.0412, 0.0412, 0.05351942], [1516673520000, 0.0412, 0.0412, 0.0412, 0.0412, 0.12885061], [1516673580000, 0.0412, 0.0412, 0.0412, 0.0412, 1.75351942], [1516673640000, 0.0412, 0.0412, 0.0412, 0.0412, 5.71190041], [1516673700000, 0.04126498, 0.04126498, 0.04104202, 0.04104202, 1.03343713], [1516673760000, 0.04094223, 0.04104202, 0.04094223, 0.04104202, 0.03776072], [1516673820000, 0.04092381, 0.04092381, 0.04092381, 0.04092381, 0.23258079], [1516673880000, 0.04090811, 0.04090811, 0.0409051, 0.04090511, 3.64220415], [1516673940000, 0.04104202, 0.04122499, 0.0409051, 0.04121643, 2.31536611], [1516674000000, 0.04090511, 0.04090511, 0.040864, 0.040864, 6.1115464], [1516674060000, 0.040864, 0.04121643, 0.040864, 0.040864, 0.46954419], [1516674120000, 0.040864, 0.040864, 0.040864, 0.040864, 0.02803639], [1516674180000, 0.04117699, 0.041235, 0.04088401, 0.04088401, 1.05400299], [1516674240000, 0.04089401, 0.04089401, 0.040864, 0.040864, 2.41051428], [1516674300000, 0.04118199, 0.041182, 0.040867, 0.040867, 5.35840406], [1516674420000, 0.040867, 0.04090701, 0.040867, 0.040907, 1.1345018], [1516674480000, 0.040872, 0.040872, 0.040872, 0.040872, 0.02045863], [1516674540000, 0.04117997, 0.041185, 0.04117997, 0.041185, 5.15153589], [1516674600000, 0.04086701, 0.04086701, 0.04086701, 0.04086701, 0.81216012], [1516674660000, 0.04086701, 0.04086701, 0.040867, 0.040867, 2.3426471], [1516674720000, 0.040867, 0.041092, 0.0408516, 0.041019, 5.52415324], [1516674780000, 0.04117999, 0.04118, 0.041092, 0.041092, 2.89868876], [1516674840000, 0.041092, 0.04126, 0.041092, 0.041092, 4.06073728], [1516674900000, 0.041092, 0.041092, 0.04094828, 0.041092, 1.29867367], [1516675080000, 0.041092, 0.041092, 0.04090599, 0.04090599, 5.02500421], [1516675200000, 0.04109199, 0.041092, 0.04109199, 0.041092, 0.48671274], [1516675260000, 0.04093003, 0.04093003, 0.04093003, 0.04093003, 0.02284071], [1516675320000, 0.041092, 0.041092, 0.041092, 0.041092, 0.96961093], [1516675380000, 0.04100002, 0.041092, 0.04100002, 0.041092, 0.0780569], [1516675500000, 0.04105827, 0.041092, 0.04105827, 0.041092, 1.34176422], [1516675560000, 0.041092, 0.04135368, 0.041092, 0.0411, 5.59095795], [1516675620000, 0.04110001, 0.04110001, 0.04110001, 0.04110001, 0.05364962], [1516675680000, 0.04112, 0.04112001, 0.04112, 0.04112001, 0.36273719], [1516675920000, 0.04112001, 0.04112001, 0.04112001, 0.04112001, 0.04741221], [1516675980000, 0.04112001, 0.04112001, 0.04112001, 0.04112001, 0.14507033], [1516676100000, 0.04112001, 0.04112001, 0.04112001, 0.04112001, 0.02681176], [1516676160000, 0.0411002, 0.0411002, 0.0411002, 0.0411002, 0.02682469], [1516676220000, 0.0411002, 0.04112001, 0.0411002, 0.04112001, 0.25015701], [1516676340000, 0.04110021, 0.04110021, 0.04110021, 0.04110021, 0.02682468], [1516676400000, 0.04110022, 0.04135199, 0.04110021, 0.04110021, 2.67567548], [1516676460000, 0.04110021, 0.04137599, 0.04110021, 0.04110021, 1.47081426], [1516676520000, 0.041365, 0.041365, 0.041365, 0.041365, 0.01640896], [1516676700000, 0.04110021, 0.041337, 0.04110021, 0.04110021, 0.4262577], [1516676760000, 0.04110021, 0.04110021, 0.04110021, 0.04110021, 0.05364936], [1516676820000, 0.04110021, 0.04110021, 0.040887, 0.040887, 11.43811408], [1516676880000, 0.04088699, 0.04088699, 0.04088699, 0.04088699, 0.59329105], [1516677000000, 0.0410523, 0.04105232, 0.0410523, 0.04105232, 0.70871905], [1516677060000, 0.04105232, 0.04105232, 0.0408516, 0.0408516, 3.68840764], [1516677120000, 0.04105236, 0.04105236, 0.04105236, 0.04105236, 0.13185768], [1516677180000, 0.0408516, 0.04105236, 0.0408516, 0.04105236, 0.69023937], [1516677300000, 0.04105236, 0.04105236, 0.04105236, 0.04105236, 0.97436444], [1516677420000, 0.0409, 0.04105236, 0.0409, 0.04105236, 0.68172715], [1516677480000, 0.04105235, 0.04105235, 0.04105235, 0.04105235, 0.22131152], [1516677540000, 0.04105235, 0.04105235, 0.04105235, 0.04105235, 0.15162683], [1516677600000, 0.04105235, 0.04105235, 0.04105235, 0.04105235, 1.70514197], [1516677720000, 0.04085162, 0.04085162, 0.04085162, 0.04085162, 0.10005974], [1516677780000, 0.04105235, 0.04110001, 0.04105235, 0.0411, 26.18367383], [1516677840000, 0.04110799, 0.04110799, 0.04110799, 0.04110799, 0.04846092], [1516677900000, 0.0411, 0.041195, 0.04087601, 0.04119499, 4.39885651], [1516677960000, 0.04118999, 0.04118999, 0.040857, 0.040857, 1.11295997], [1516678080000, 0.04120021, 0.04134498, 0.04120021, 0.04134, 4.88077157], [1516678200000, 0.04129993, 0.04129998, 0.04129993, 0.04129998, 1.01446321], [1516678260000, 0.04129998, 0.04129998, 0.04129997, 0.04129997, 1.83555382], [1516678320000, 0.04129997, 0.04129998, 0.04093651, 0.04093651, 2.71256551], [1516678380000, 0.04093653, 0.04129998, 0.04093653, 0.04129998, 1.16285227], [1516678440000, 0.04097001, 0.04129998, 0.04093671, 0.040952, 16.00741965], [1516678500000, 0.04101704, 0.04136, 0.04095202, 0.04135999, 2.35167226], [1516678560000, 0.04101757, 0.04108001, 0.04101757, 0.04108001, 0.30561627], [1516678620000, 0.04108002, 0.04144773, 0.04108001, 0.04108001, 7.0070814], [1516678680000, 0.04108002, 0.04108003, 0.04108002, 0.04108002, 5.07853962], [1516678800000, 0.0410801, 0.04144772, 0.0410801, 0.04144771, 1.32871715], [1516678860000, 0.04144771, 0.04154999, 0.04124047, 0.04144771, 38.4340229], [1516678980000, 0.041524, 0.04152538, 0.041524, 0.04152538, 0.19545624], [1516679040000, 0.04120671, 0.04120671, 0.04120671, 0.04120671, 0.01988876], [1516679160000, 0.04121, 0.0415254, 0.04121, 0.04121, 5.31436337], [1516679220000, 0.04121, 0.0418, 0.0411632, 0.04136274, 154.74164692], [1516679280000, 0.0412, 0.0412, 0.04086211, 0.040872, 17.39780057], [1516679340000, 0.040872, 0.040872, 0.040872, 0.040872, 5.88931302], [1516679400000, 0.040872, 0.040895, 0.040872, 0.040895, 4.21508698], [1516679460000, 0.04107, 0.04107401, 0.04090001, 0.04107401, 0.58788176], [1516679520000, 0.04092001, 0.041335, 0.04092001, 0.04133499, 13.47181528], [1516679580000, 0.04133999, 0.04133999, 0.04099, 0.04099, 0.24744873], [1516679640000, 0.041, 0.041, 0.041, 0.041, 0.07398223], [1516679700000, 0.041345, 0.041345, 0.041345, 0.041345, 0.09042295], [1516679820000, 0.041345, 0.041345, 0.04101018, 0.04133499, 0.85262361], [1516679880000, 0.041345, 0.041345, 0.041345, 0.041345, 0.07421677], [1516679940000, 0.04134701, 0.04164216, 0.04134701, 0.0415, 16.62554636], [1516680000000, 0.04134501, 0.04154891, 0.04134501, 0.04154891, 0.47174677], [1516680120000, 0.041527, 0.041527, 0.041345, 0.041345, 1.02205632], [1516680180000, 0.041345, 0.041345, 0.041345, 0.041345, 0.05333172], [1516680240000, 0.041345, 0.041345, 0.041345, 0.041345, 0.88409717], [1516680300000, 0.041345, 0.041345, 0.04102829, 0.0411029, 1.57107416], [1516680360000, 0.04102403, 0.04102411, 0.04102403, 0.04102411, 0.09794357], [1516680420000, 0.04102508, 0.04102518, 0.04102508, 0.04102518, 0.05374757], [1516680480000, 0.04102527, 0.04102527, 0.04102527, 0.04102527, 0.02687369], [1516680540000, 0.04145094, 0.04145095, 0.04103644, 0.04103647, 7.48088068], [1516680600000, 0.04103653, 0.04103658, 0.04103653, 0.04103658, 0.09253672], [1516680660000, 0.0410367, 0.04103759, 0.0410367, 0.04103759, 0.05373189], [1516680720000, 0.04115157, 0.04115157, 0.04115157, 0.04115157, 0.82970233], [1516680840000, 0.04115157, 0.04142764, 0.04115157, 0.04142764, 1.27781388], [1516680900000, 0.04142764, 0.04142772, 0.04103646, 0.04103652, 11.92205661], [1516680960000, 0.04103655, 0.04103661, 0.04103655, 0.04103661, 0.08601965], [1516681020000, 0.04142745, 0.04142745, 0.04142745, 0.04142745, 0.01623188], [1516681140000, 0.04142732, 0.04142772, 0.04142732, 0.04142732, 0.81685587], [1516681200000, 0.04109, 0.04142772, 0.04109, 0.04142772, 0.22747394], [1516681320000, 0.04142762, 0.04142762, 0.04142762, 0.04142762, 0.01294654], [1516681380000, 0.04109039, 0.04109039, 0.04109039, 0.04109039, 0.13631137], [1516681500000, 0.0410904, 0.04142746, 0.0410904, 0.04142743, 1.97200364], [1516681560000, 0.04109039, 0.04109039, 0.04109039, 0.04109039, 0.21078513], [1516681620000, 0.04130314, 0.04139624, 0.04130314, 0.04139624, 0.67537283], [1516681680000, 0.04108783, 0.04139623, 0.04103644, 0.04103645, 2.49537188], [1516681740000, 0.04107, 0.04107, 0.04101801, 0.04101802, 2.10094481], [1516681800000, 0.04101814, 0.041402, 0.04101814, 0.04102851, 1.53898062], [1516681860000, 0.04102853, 0.04139199, 0.040905, 0.040915, 7.1246934], [1516681920000, 0.04091501, 0.040945, 0.04091501, 0.040945, 0.52258759], [1516681980000, 0.0413519, 0.0413519, 0.04121834, 0.04121834, 0.05194142], [1516682040000, 0.04121834, 0.04121834, 0.04096001, 0.04096001, 0.5270161], [1516682100000, 0.04135161, 0.04135184, 0.04104451, 0.04104451, 1.35262177], [1516682160000, 0.04116847, 0.04116847, 0.04099901, 0.04099901, 2.54969144], [1516682220000, 0.04116847, 0.04116847, 0.04116847, 0.04116847, 0.13320549], [1516682280000, 0.04116847, 0.04116847, 0.04116847, 0.04116847, 0.0535604], [1516682340000, 0.04116847, 0.04116847, 0.04116847, 0.04116847, 0.19558425], [1516682400000, 0.04116847, 0.04116847, 0.04116846, 0.04116847, 1.77090726], [1516682460000, 0.04116844, 0.04116847, 0.04096001, 0.04096001, 1.65791173], [1516682520000, 0.04116846, 0.04149098, 0.0409, 0.0409, 57.4118794], [1516682580000, 0.0413096, 0.04149098, 0.04090501, 0.04108531, 50.99122349], [1516682640000, 0.04108536, 0.04108536, 0.04101601, 0.04101601, 6.16313087], [1516682700000, 0.04106426, 0.04140599, 0.04106426, 0.04106426, 2.01815631], [1516682760000, 0.04106426, 0.04106426, 0.04106426, 0.04106426, 0.10234402], [1516682820000, 0.04138597, 0.04138597, 0.04138099, 0.04138099, 1.0752427], [1516683000000, 0.041135, 0.04138097, 0.041135, 0.04138097, 0.26846204], [1516683060000, 0.04138097, 0.04138098, 0.04138097, 0.04138098, 2.41052774], [1516683120000, 0.041135, 0.041135, 0.041135, 0.041135, 0.02680199], [1516683180000, 0.041135, 0.041135, 0.041135, 0.041135, 0.05360398], [1516683240000, 0.041135, 0.04113501, 0.041135, 0.041135, 0.10360398], [1516683300000, 0.04113508, 0.04145199, 0.041135, 0.04125, 6.37406395], [1516683360000, 0.04113501, 0.04143329, 0.04113501, 0.04113517, 0.30626349], [1516683420000, 0.04113518, 0.04113518, 0.04113515, 0.04113515, 6.61841305], [1516683480000, 0.04113, 0.04134583, 0.04106426, 0.0411301, 1.01443706], [1516683540000, 0.04106426, 0.04106426, 0.04106426, 0.04106426, 0.15087672], [1516683600000, 0.04106426, 0.04131597, 0.04106426, 0.04130598, 0.87064753], [1516683660000, 0.0412, 0.04130598, 0.0412, 0.04130598, 1.32557536], [1516683720000, 0.04120001, 0.04130598, 0.04120001, 0.04130598, 0.30734589], [1516683780000, 0.04120001, 0.04120001, 0.0409, 0.04093001, 21.68320704], [1516683840000, 0.04093001, 0.04093501, 0.04091002, 0.04091002, 0.3777531], [1516683900000, 0.04125599, 0.041256, 0.04125599, 0.041256, 0.48471922], [1516683960000, 0.041271, 0.041271, 0.04123599, 0.04123599, 0.58328202], [1516684080000, 0.04122599, 0.041276, 0.04122099, 0.04125101, 33.67656327], [1516684140000, 0.041257, 0.04143307, 0.041257, 0.04130607, 10.95744461], [1516684200000, 0.04125725, 0.04143299, 0.04125725, 0.04125728, 1.13150567], [1516684260000, 0.04143298, 0.041433, 0.04115914, 0.04115914, 5.68275419], [1516684320000, 0.04113907, 0.04113907, 0.04113907, 0.04113907, 0.05359868], [1516684380000, 0.04113907, 0.04113907, 0.04091505, 0.04091506, 4.23056917], [1516684440000, 0.04138796, 0.04138796, 0.04138791, 0.04138791, 0.539007], [1516684500000, 0.04138789, 0.04138789, 0.040923, 0.040923, 0.69328173], [1516684620000, 0.041367, 0.041367, 0.041367, 0.041367, 0.01830554], [1516684680000, 0.04136688, 0.04136695, 0.040945, 0.040945, 10.14514825], [1516684740000, 0.04095605, 0.04135997, 0.04095604, 0.04135997, 0.80758458], [1516684800000, 0.041339, 0.041339, 0.04128797, 0.041288, 0.75117286], [1516684860000, 0.04090006, 0.04138788, 0.04090006, 0.04097017, 45.71744331], [1516684920000, 0.0413442, 0.04135076, 0.04105259, 0.04135076, 2.53622339], [1516684980000, 0.04090014, 0.04090014, 0.04090014, 0.04090014, 0.10798], [1516685040000, 0.04090018, 0.0409002, 0.04090018, 0.0409002, 0.14757551], [1516685100000, 0.04090033, 0.04115714, 0.0409002, 0.040915, 15.1243626], [1516685160000, 0.04091501, 0.04091501, 0.04091001, 0.04091001, 0.27143371], [1516685220000, 0.04091001, 0.04091001, 0.04091001, 0.04091001, 0.01965879], [1516685280000, 0.04091, 0.04091, 0.0409002, 0.0409002, 0.28767471], [1516685340000, 0.0409002, 0.0409002, 0.0409, 0.0409, 0.75922245], [1516685400000, 0.04090029, 0.04090029, 0.0409, 0.04090024, 2.27234147], [1516685460000, 0.04090024, 0.04090026, 0.0409, 0.04090026, 0.45101232], [1516685520000, 0.04090026, 0.04090026, 0.0409, 0.0409, 1.54009503], [1516685580000, 0.04089999, 0.0409, 0.04089999, 0.04089999, 1.465], [1516685640000, 0.040872, 0.0409, 0.040872, 0.0409, 0.36539134], [1516685700000, 0.0409, 0.0409, 0.040872, 0.040872, 0.34285244], [1516685760000, 0.040872, 0.04089995, 0.040872, 0.040872, 0.75257839], [1516685820000, 0.04089995, 0.04089995, 0.040872, 0.040872, 0.11165896], [1516685880000, 0.040872, 0.04089996, 0.040872, 0.040872, 2.30160211], [1516685940000, 0.040872, 0.04087201, 0.040872, 0.04087201, 0.07610919], [1516686000000, 0.04089995, 0.04089995, 0.040872, 0.040872, 2.52261071], [1516686060000, 0.040872, 0.040872, 0.040872, 0.040872, 0.12994823], [1516686120000, 0.040872, 0.04089994, 0.040872, 0.04089994, 0.78340031], [1516686180000, 0.04089994, 0.04089996, 0.0407512, 0.04089996, 12.38601222], [1516686240000, 0.04089996, 0.04089996, 0.0408516, 0.04085165, 0.202396], [1516686300000, 0.04089995, 0.04089995, 0.04089995, 0.04089995, 0.33897441], [1516686360000, 0.0409, 0.0409, 0.04089995, 0.04089995, 0.32049374], [1516686420000, 0.04085165, 0.0409, 0.04085165, 0.04085165, 0.74313639], [1516686480000, 0.04085165, 0.04085165, 0.0408516, 0.0408516, 0.08291574], [1516686540000, 0.0408516, 0.0409, 0.0408516, 0.0409, 28.17163873], [1516686600000, 0.0408516, 0.0408516, 0.0408516, 0.0408516, 0.15218383], [1516686780000, 0.0408516, 0.04089999, 0.0408516, 0.0408516, 0.12021989], [1516686840000, 0.0408516, 0.0408516, 0.0408516, 0.0408516, 0.70088208], [1516686900000, 0.0408516, 0.0408516, 0.0408516, 0.0408516, 0.34478845], [1516686960000, 0.0408014, 0.0408516, 0.0408014, 0.0408516, 0.13086934], [1516687020000, 0.0408516, 0.0408516, 0.0408516, 0.0408516, 0.10587663], [1516687080000, 0.04075131, 0.0408516, 0.04075131, 0.0408516, 6.11750615], [1516687140000, 0.04075121, 0.0408516, 0.04075121, 0.04075121, 1.37292107], [1516687200000, 0.0408516, 0.0408516, 0.0408516, 0.0408516, 0.05410896], [1516687260000, 0.0408516, 0.0408516, 0.04080139, 0.04080139, 3.14558288], [1516687320000, 0.04080139, 0.04080139, 0.04080139, 0.04080139, 26.30663245], [1516687380000, 0.04080139, 0.04080139, 0.04080139, 0.04080139, 10.65397558], [1516687440000, 0.04080139, 0.04080139, 0.04075121, 0.04080139, 1.00139914], [1516687500000, 0.04080139, 0.04080139, 0.04075121, 0.04075121, 2.13824385], [1516687560000, 0.04080139, 0.04080139, 0.04075121, 0.04076001, 1.37422979], [1516687620000, 0.04076001, 0.04076001, 0.0406633, 0.04075122, 12.76838394], [1516687680000, 0.04066331, 0.04080139, 0.04066331, 0.04080139, 0.43505215], [1516687740000, 0.04067, 0.04080139, 0.04067, 0.04080139, 2.03437048], [1516687800000, 0.04080139, 0.04080139, 0.04067, 0.04078271, 28.63018517], [1516687860000, 0.04067, 0.04067001, 0.04067, 0.04067001, 1.91512413], [1516687920000, 0.04078271, 0.04078271, 0.04067003, 0.04067003, 1.58926361], [1516687980000, 0.04078271, 0.04078271, 0.04067, 0.04067, 4.73951108], [1516688040000, 0.04078271, 0.04078271, 0.04067002, 0.04078271, 1.21993018], [1516688100000, 0.0407827, 0.0407827, 0.0407827, 0.0407827, 0.735606], [1516688160000, 0.0407827, 0.0407827, 0.04068074, 0.04068074, 0.0563718], [1516688220000, 0.0407827, 0.0407827, 0.04067, 0.0407814, 1.83128746], [1516688280000, 0.04078139, 0.04078139, 0.04078139, 0.04078139, 0.36948218], [1516688340000, 0.04074061, 0.04074061, 0.04074061, 0.04074061, 0.02700008], [1516688400000, 0.04068879, 0.0407814, 0.04068879, 0.04068879, 1.61345947], [1516688460000, 0.040761, 0.0407814, 0.040761, 0.0407814, 0.09299528], [1516688580000, 0.0407814, 0.04078271, 0.0407814, 0.04078271, 8.54667714], [1516688700000, 0.04068075, 0.04078271, 0.04068075, 0.04068089, 5.81459474], [1516688760000, 0.04068089, 0.04068089, 0.04068089, 0.04068089, 0.0422737], [1516688820000, 0.04068075, 0.04068089, 0.04068075, 0.04068089, 4.30975628], [1516688880000, 0.04068075, 0.04068075, 0.04068075, 0.04068075, 2.0594691], [1516688940000, 0.04068075, 0.04068096, 0.04068075, 0.04068096, 1.30540913], [1516689000000, 0.04078271, 0.041304, 0.04069617, 0.04069617, 4.68361284], [1516689060000, 0.04079368, 0.04079368, 0.04074223, 0.04074224, 0.69720716], [1516689120000, 0.04074235, 0.04079368, 0.04074235, 0.04079368, 0.08108174], [1516689180000, 0.04074224, 0.0407938, 0.04074224, 0.04074293, 0.81326868], [1516689240000, 0.0407951, 0.0407956, 0.0407951, 0.0407956, 0.05405027], [1516689300000, 0.0407956, 0.041069, 0.0407956, 0.041069, 1.04999715], [1516689360000, 0.041093, 0.04113599, 0.04074224, 0.04074224, 44.24528522], [1516689420000, 0.04075, 0.04075, 0.04075, 0.04075, 0.206556], [1516689480000, 0.04075, 0.04075, 0.04074224, 0.04074224, 1.11143559], [1516689540000, 0.04074224, 0.04103399, 0.04074224, 0.04074224, 0.84210017], [1516689600000, 0.041015, 0.041015, 0.041015, 0.041015, 0.24381323], [1516689840000, 0.0407572, 0.041289, 0.0407572, 0.041289, 4.56884089], [1516689900000, 0.04109299, 0.04109299, 0.04109299, 0.04109299, 0.09619139], [1516689960000, 0.04106799, 0.04106799, 0.0407583, 0.04106299, 37.9499955], [1516690020000, 0.04122792, 0.04122792, 0.04076969, 0.04122291, 0.11414264], [1516690080000, 0.04076972, 0.04119298, 0.04076972, 0.04119298, 3.74244955], [1516690140000, 0.04076974, 0.04076974, 0.04076974, 0.04076974, 0.02791608], [1516690200000, 0.04111295, 0.04111295, 0.04111294, 0.04111294, 0.29022867], [1516690260000, 0.041124, 0.04124798, 0.04112299, 0.04124798, 11.09937011], [1516690320000, 0.041, 0.04124796, 0.04084002, 0.04123792, 14.05620644], [1516690380000, 0.0407751, 0.0407751, 0.04076972, 0.04077302, 10.275178], [1516690440000, 0.04076972, 0.04076972, 0.04076972, 0.04076972, 0.2378], [1516690500000, 0.04076972, 0.04077, 0.04076972, 0.04076972, 2.80685363], [1516690560000, 0.04077, 0.04077, 0.04076972, 0.04076972, 4.03264394], [1516690620000, 0.04076972, 0.04076972, 0.04076972, 0.04076972, 6.05460478], [1516690680000, 0.04068089, 0.04068089, 0.04067, 0.04067, 1.18236192], [1516690740000, 0.04067, 0.04067, 0.04067, 0.04067, 5.59947507], [1516690800000, 0.04067, 0.04076972, 0.04067, 0.04076972, 0.62721047], [1516690860000, 0.04076972, 0.04077, 0.04067, 0.04076999, 3.60410374], [1516690920000, 0.04067, 0.04067, 0.0406633, 0.0406633, 2.05624989], [1516690980000, 0.04066331, 0.04066331, 0.0406633, 0.0406633, 0.74409403], [1516691040000, 0.04067, 0.04077, 0.0406633, 0.0406633, 5.95645613], [1516691100000, 0.04068893, 0.04068893, 0.0406633, 0.0406633, 3.15770378], [1516691160000, 0.0406633, 0.0406633, 0.0406633, 0.0406633, 2.2542848], [1516691220000, 0.0406633, 0.04068892, 0.0406633, 0.04068892, 0.19702085], [1516691280000, 0.04068892, 0.04077, 0.04068892, 0.04068892, 6.27064936], [1516691340000, 0.04077, 0.04077, 0.04068893, 0.04068893, 6.54634728], [1516691400000, 0.04077, 0.04077, 0.0406633, 0.0406633, 6.37042343], [1516691460000, 0.04076993, 0.04076993, 0.0406, 0.0406, 4.0556732], [1516691520000, 0.0406, 0.0408713, 0.0406, 0.0408713, 18.88315911], [1516691580000, 0.04076992, 0.04076992, 0.0406, 0.04073861, 3.13522615], [1516691640000, 0.0406, 0.04100635, 0.04058001, 0.04100635, 6.57682441], [1516691700000, 0.04059, 0.0409736, 0.04059, 0.040964, 1.75462202], [1516691760000, 0.040939, 0.040939, 0.04092898, 0.04093397, 2.92437789], [1516691820000, 0.04093396, 0.041104, 0.040595, 0.040595, 1.84417059], [1516691880000, 0.04060001, 0.04060001, 0.04059, 0.04060001, 6.14465208], [1516691940000, 0.040582, 0.04075386, 0.04056084, 0.040578, 12.74472296], [1516692000000, 0.040578, 0.040578, 0.040578, 0.040578, 0.597], [1516692060000, 0.0405271, 0.04063011, 0.0405, 0.04063011, 3.0759127], [1516692120000, 0.04052853, 0.04071449, 0.0403, 0.04041568, 41.51898914], [1516692180000, 0.04041568, 0.04049998, 0.0403, 0.04049165, 4.31160095], [1516692240000, 0.04049998, 0.04049998, 0.04049165, 0.04049165, 9.31033643], [1516692300000, 0.04049165, 0.04049998, 0.04049165, 0.04049998, 1.13496803], [1516692360000, 0.04049998, 0.04049998, 0.04049165, 0.04049998, 1.93386878], [1516692420000, 0.04049998, 0.04049998, 0.04039873, 0.04039873, 1.56524818], [1516692480000, 0.04049164, 0.04049165, 0.04049164, 0.04049165, 1.19108889], [1516692540000, 0.04049165, 0.04049998, 0.04039042, 0.04039042, 3.45724634], [1516692600000, 0.04039042, 0.0404, 0.04039042, 0.0404, 3.05790561], [1516692660000, 0.040497, 0.040497, 0.040497, 0.040497, 0.11836193], [1516692720000, 0.040497, 0.04049998, 0.040497, 0.040497, 2.64977394], [1516692780000, 0.040497, 0.040497, 0.0404, 0.0404, 3.83929438], [1516692900000, 0.040497, 0.040497, 0.0404, 0.0404, 1.42727435], [1516692960000, 0.0404162, 0.040497, 0.04032798, 0.04032798, 4.09326579], [1516693020000, 0.040497, 0.040497, 0.04049699, 0.04049699, 0.09318778], [1516693080000, 0.04039, 0.040497, 0.04039, 0.04039575, 8.15477907], [1516693140000, 0.04039575, 0.04039575, 0.04039575, 0.04039575, 0.26823007], [1516693200000, 0.040497, 0.040497, 0.040497, 0.040497, 0.16094776], [1516693260000, 0.0403958, 0.04049699, 0.04039, 0.04049699, 4.23708629], [1516693320000, 0.04039, 0.04039, 0.04039, 0.04039, 0.5992509], [1516693380000, 0.04039, 0.04049699, 0.04039, 0.04039, 1.67982642], [1516693440000, 0.04049699, 0.04049699, 0.04049699, 0.04049699, 0.71270023], [1516693500000, 0.04049699, 0.04049699, 0.04039575, 0.04049699, 23.04373173], [1516693560000, 0.04049699, 0.04049699, 0.04049699, 0.04049699, 36.00017469], [1516693620000, 0.04049699, 0.04049699, 0.04045, 0.04045, 2.78492663], [1516693680000, 0.04049699, 0.04049699, 0.04049699, 0.04049699, 11.13237384], [1516693740000, 0.04058392, 0.04058392, 0.04058392, 0.04058392, 0.31681114], [1516693800000, 0.04058392, 0.04058392, 0.04058392, 0.04058392, 0.02716593], [1516693860000, 0.04064458, 0.04064458, 0.04064458, 0.04064458, 0.11856273], [1516693920000, 0.04064455, 0.04064458, 0.04064455, 0.04064457, 8.09642664], [1516693980000, 0.04054297, 0.04054297, 0.04044637, 0.04044637, 0.50869828], [1516694040000, 0.04054297, 0.04054297, 0.04054297, 0.04054297, 0.05438683], [1516694100000, 0.04054297, 0.04064457, 0.04054297, 0.04064457, 0.27325636], [1516694160000, 0.04054296, 0.04054296, 0.04054296, 0.04054296, 0.02719338], [1516694220000, 0.04054296, 0.04064, 0.04054296, 0.04064, 20.5874335], [1516694280000, 0.04064457, 0.04064458, 0.04054296, 0.04064458, 19.00070346], [1516694340000, 0.04064457, 0.04064457, 0.04064457, 0.04064457, 1.0], [1516694400000, 0.04054296, 0.04054296, 0.04054296, 0.04054296, 2.03454172], [1516694520000, 0.04054296, 0.04054296, 0.04054296, 0.04054296, 12.2199], [1516694580000, 0.04049637, 0.04054296, 0.04044637, 0.04054296, 5.9622817], [1516694640000, 0.04054296, 0.04054296, 0.04054296, 0.04054296, 1.47909199], [1516694700000, 0.04054296, 0.04054296, 0.04054296, 0.04054296, 0.78503077], [1516694760000, 0.04050242, 0.04050242, 0.0403001, 0.04030012, 9.56229449], [1516694820000, 0.04049466, 0.04054295, 0.04030012, 0.04054293, 0.45254797], [1516694880000, 0.04030015, 0.04030015, 0.04030015, 0.04030015, 0.73929961], [1516694940000, 0.04054286, 0.04054286, 0.04030002, 0.04030002, 11.43596733], [1516695000000, 0.04052936, 0.04052938, 0.0403, 0.0403, 142.98089315], [1516695060000, 0.04052933, 0.04052933, 0.0403, 0.0403, 5.71391231], [1516695120000, 0.04029, 0.0403, 0.04029, 0.0403, 2.8897479], [1516695180000, 0.04029, 0.04029, 0.04019927, 0.04026799, 41.74527164], [1516695240000, 0.04026799, 0.04047799, 0.04019196, 0.04036682, 4.61684384], [1516695300000, 0.04046299, 0.040463, 0.04036682, 0.040463, 1.66427478], [1516695360000, 0.04041751, 0.04052933, 0.040183, 0.040183, 9.13400332], [1516695420000, 0.04052799, 0.040528, 0.04013107, 0.04045691, 4.64399808], [1516695480000, 0.04045199, 0.04045199, 0.04044194, 0.04044199, 5.22183723], [1516695540000, 0.04044199, 0.040488, 0.04044199, 0.040488, 4.285978], [1516695600000, 0.04044198, 0.040488, 0.04044198, 0.040465, 5.08606445], [1516695660000, 0.0404702, 0.0404702, 0.040154, 0.04045, 2.69289375], [1516695720000, 0.04015295, 0.04015295, 0.040137, 0.040137, 4.26286332], [1516695780000, 0.04015295, 0.04043208, 0.04015295, 0.04043208, 0.32712102], [1516695840000, 0.04013855, 0.04013855, 0.04013854, 0.04013854, 0.5478873], [1516695900000, 0.04043189, 0.04044494, 0.04043189, 0.04044494, 0.73940317], [1516695960000, 0.04013863, 0.04038544, 0.04013855, 0.04013855, 0.79316916], [1516696080000, 0.04015, 0.04042586, 0.04015, 0.04042586, 0.35590595], [1516696140000, 0.04042586, 0.04042587, 0.04042586, 0.04042587, 4.27782947], [1516696260000, 0.04042586, 0.04042586, 0.04032478, 0.04032478, 0.29411107], [1516696320000, 0.04031394, 0.04042572, 0.04015, 0.04042572, 4.64510846], [1516696440000, 0.04015095, 0.0403562, 0.04015095, 0.0403562, 7.71641062], [1516696500000, 0.04035621, 0.04041195, 0.04035621, 0.04040616, 1.32067082], [1516696560000, 0.04015096, 0.04015096, 0.04015096, 0.04015096, 0.13313872], [1516696620000, 0.04015096, 0.04040613, 0.04015095, 0.040156, 1.3158757], [1516696680000, 0.04016095, 0.04016095, 0.04016095, 0.04016095, 0.0585201], [1516696800000, 0.04041195, 0.04041195, 0.040166, 0.040166, 1.05894709], [1516696860000, 0.04039999, 0.04039999, 0.04039999, 0.04039999, 0.17517405], [1516696920000, 0.04039999, 0.04039999, 0.04039999, 0.04039999, 0.07154638], [1516697040000, 0.0403, 0.0403, 0.0403, 0.0403, 0.10156182], [1516697100000, 0.0403, 0.0403, 0.04016606, 0.0401661, 3.35903132], [1516697160000, 0.0401661, 0.04041194, 0.0401661, 0.04041194, 52.09718733], [1516697220000, 0.04041192, 0.04041192, 0.04041191, 0.04041192, 1.28563264], [1516697280000, 0.04041192, 0.04041194, 0.04041192, 0.04041192, 73.19731378], [1516697340000, 0.04041192, 0.04073154, 0.04041192, 0.04041198, 1.89676899], [1516697400000, 0.04041198, 0.0405, 0.04041198, 0.04041202, 1.37129358], [1516697460000, 0.04041202, 0.04099999, 0.04041202, 0.04078998, 177.74228037], [1516697520000, 0.0404121, 0.04099295, 0.0404121, 0.04099295, 105.85513053], [1516697580000, 0.04090698, 0.04096994, 0.04058668, 0.04058669, 9.22797723], [1516697640000, 0.04075732, 0.04075732, 0.04058677, 0.04058677, 0.80151228], [1516697700000, 0.04051968, 0.04058687, 0.04051968, 0.04058667, 3.8742067], [1516697760000, 0.04058667, 0.04070738, 0.04058667, 0.04058667, 2.4939281], [1516697820000, 0.04070739, 0.04070739, 0.04058667, 0.04058668, 2.21887655], [1516697880000, 0.04058668, 0.04070739, 0.04058667, 0.04058667, 1.17990295], [1516697940000, 0.04058667, 0.04058667, 0.04058667, 0.04058667, 0.71428571], [1516698000000, 0.04070739, 0.04072848, 0.04070739, 0.04070739, 2.12802028], [1516698060000, 0.04084678, 0.04084678, 0.04084678, 0.04084678, 0.01221075], [1516698240000, 0.04084678, 0.04084679, 0.04066327, 0.04084679, 4.69828015], [1516698300000, 0.04066342, 0.04084679, 0.04066342, 0.04066343, 1.05191798], [1516698360000, 0.04066343, 0.04084679, 0.04066342, 0.04082851, 4.43104871], [1516698420000, 0.04068016, 0.04082851, 0.04066343, 0.04082851, 0.8110151], [1516698480000, 0.04066343, 0.04066343, 0.04066343, 0.04066343, 1.60512165], [1516698600000, 0.0408285, 0.04090698, 0.04066342, 0.04066342, 6.38110777], [1516698660000, 0.04067343, 0.04067343, 0.04067343, 0.04067343, 0.2040796], [1516698720000, 0.04067343, 0.04067343, 0.04067343, 0.04067343, 0.02710615], [1516698780000, 0.04067343, 0.04090699, 0.04067343, 0.04067343, 0.6657918], [1516698900000, 0.04091947, 0.04091947, 0.04091947, 0.04091947, 0.78473277], [1516698960000, 0.04091944, 0.04095853, 0.04091941, 0.04091941, 7.48483275], [1516699020000, 0.04067343, 0.04067343, 0.04067343, 0.04067343, 1.30770061], [1516699080000, 0.04067343, 0.04067343, 0.04067343, 0.04067343, 0.3076], [1516699140000, 0.04067343, 0.04067343, 0.04067343, 0.04067343, 0.01766874], [1516699260000, 0.04067343, 0.04087695, 0.04067343, 0.04087695, 5.19426263], [1516699320000, 0.04067343, 0.04067343, 0.04066327, 0.04066327, 0.05421907], [1516699380000, 0.04066328, 0.04066328, 0.04066327, 0.04066327, 0.05422583], [1516699440000, 0.04066327, 0.0407, 0.04066327, 0.0407, 0.28737138], [1516699500000, 0.04066327, 0.04069816, 0.04066327, 0.04066327, 0.32999295], [1516699560000, 0.04069816, 0.04069816, 0.04066327, 0.04066327, 0.0909904], [1516699620000, 0.04069816, 0.0407, 0.04066328, 0.04066328, 0.76327288], [1516699680000, 0.0407, 0.0407, 0.04066328, 0.0407, 1.58258831], [1516699740000, 0.04066328, 0.04066328, 0.04066328, 0.04066328, 0.65936296], [1516699800000, 0.04066328, 0.04066328, 0.04066327, 0.04066327, 3.17529319], [1516699860000, 0.04066327, 0.04066328, 0.04066327, 0.04066328, 2.73291666], [1516699920000, 0.04066328, 0.0407, 0.04066328, 0.0407, 12.65481964], [1516699980000, 0.04066328, 0.04066328, 0.04066328, 0.04066328, 0.05422582], [1516700040000, 0.040668, 0.040668, 0.04066327, 0.04066328, 5.24623558], [1516700100000, 0.04066328, 0.0407, 0.04066328, 0.04066328, 0.97135613], [1516700160000, 0.0407, 0.040878, 0.04066328, 0.04066801, 0.44065799], [1516700220000, 0.040668, 0.04087801, 0.04066327, 0.04087801, 26.21222803], [1516700280000, 0.04087801, 0.04087801, 0.04087801, 0.04087801, 0.34759976], [1516700340000, 0.0409, 0.04094565, 0.04087801, 0.04087801, 4.93221066], [1516700400000, 0.04087801, 0.04087801, 0.04087801, 0.04087801, 0.05394098], [1516700460000, 0.04087801, 0.04087802, 0.040878, 0.040878, 1.96838556], [1516700520000, 0.040878, 0.040878, 0.040878, 0.040878, 1.20379239], [1516700580000, 0.040878, 0.040878, 0.040878, 0.040878, 13.21337564], [1516700640000, 0.040878, 0.04087801, 0.040878, 0.040878, 15.64250104], [1516700700000, 0.040878, 0.040878, 0.040878, 0.040878, 0.074341], [1516700760000, 0.040878, 0.040878, 0.040878, 0.040878, 0.053941], [1516700820000, 0.040878, 0.04087802, 0.040878, 0.04087802, 0.06956539], [1516700880000, 0.040878, 0.04087802, 0.040878, 0.04087802, 0.18078781], [1516700940000, 0.04087802, 0.04087802, 0.04087802, 0.04087802, 0.12948001], [1516701000000, 0.04090802, 0.041, 0.04090802, 0.04090802, 0.54170628], [1516701060000, 0.04090802, 0.04090802, 0.04087802, 0.04087802, 0.47047664], [1516701120000, 0.04087802, 0.04087802, 0.04087802, 0.04087802, 0.05394096], [1516701180000, 0.04087802, 0.041, 0.04087802, 0.04087802, 0.15401302], [1516701240000, 0.04087802, 0.041, 0.04087802, 0.04087802, 0.22886454], [1516701300000, 0.041, 0.041, 0.04087802, 0.04087802, 0.46542921], [1516701360000, 0.04087802, 0.04099, 0.04087802, 0.04087802, 0.11084908], [1516701420000, 0.04087802, 0.04126798, 0.04087802, 0.04087802, 68.89288969], [1516701480000, 0.04124698, 0.04124699, 0.04124698, 0.04124699, 14.86900543], [1516701540000, 0.04124698, 0.04124698, 0.04124698, 0.04124698, 0.15856006], [1516701660000, 0.04124497, 0.04124497, 0.04124497, 0.04124497, 0.02288566], [1516701720000, 0.04089704, 0.04124497, 0.04089704, 0.04124497, 3.11589159], [1516701780000, 0.04090034, 0.04091888, 0.0408783, 0.04091888, 1.08734347], [1516701840000, 0.04087821, 0.04087821, 0.04087819, 0.04087819, 0.72209026], [1516701900000, 0.0408782, 0.04087821, 0.0408782, 0.04087821, 0.91474559], [1516701960000, 0.04087821, 0.04087821, 0.04087819, 0.04087821, 9.95576555], [1516702020000, 0.04087819, 0.04124477, 0.04087819, 0.04124477, 2.74535771], [1516702080000, 0.04087821, 0.04120523, 0.04087819, 0.04120523, 1.75006097], [1516702140000, 0.04087821, 0.04087821, 0.04087819, 0.04087819, 0.45167661], [1516702200000, 0.04118898, 0.04118898, 0.0408782, 0.0408782, 0.46500597], [1516702260000, 0.041166, 0.04119985, 0.04108722, 0.04119985, 0.57720814], [1516702380000, 0.04119165, 0.041243, 0.0408782, 0.0408782, 2.26554619], [1516702440000, 0.04123791, 0.04123791, 0.04123791, 0.04123791, 0.47063558], [1516702560000, 0.041, 0.041, 0.041, 0.041, 0.73943417], [1516702620000, 0.04087821, 0.041, 0.0408782, 0.0408782, 1.33708091], [1516702680000, 0.0408782, 0.0408782, 0.04087819, 0.04087819, 0.66151916], [1516702740000, 0.041, 0.041, 0.041, 0.041, 0.19138528], [1516702800000, 0.041, 0.041, 0.041, 0.041, 0.02705088], [1516702860000, 0.04087821, 0.04087821, 0.04087821, 0.04087821, 0.024], [1516702920000, 0.04087821, 0.04087821, 0.04087821, 0.04087821, 4.93779076], [1516702980000, 0.041, 0.04119516, 0.041, 0.04119516, 1.7251264], [1516703040000, 0.04087821, 0.04118584, 0.04087821, 0.04118584, 0.70629889], [1516703160000, 0.04120524, 0.04120524, 0.04087821, 0.04087821, 1.5965145], [1516703220000, 0.04120394, 0.04120394, 0.04092157, 0.04092157, 3.03263867], [1516703280000, 0.04087821, 0.04087821, 0.04087821, 0.04087821, 0.02694184], [1516703340000, 0.04091655, 0.04091655, 0.04091655, 0.04091655, 0.02073771], [1516703400000, 0.04087821, 0.04124487, 0.04087819, 0.04087819, 2.67400262], [1516703460000, 0.04087819, 0.04087819, 0.04087819, 0.04087819, 1.4594335], [1516703520000, 0.04090019, 0.04090019, 0.04087819, 0.04087819, 0.72901678], [1516703640000, 0.04087819, 0.04087819, 0.04087819, 0.04087819, 0.71681183], [1516703700000, 0.04119993, 0.04119994, 0.04119993, 0.04119994, 0.97087612], [1516703760000, 0.04090001, 0.04119988, 0.0408782, 0.0408782, 1.11270033], [1516703820000, 0.0408782, 0.0408782, 0.04087819, 0.04087819, 11.67644538], [1516703880000, 0.04087819, 0.04087819, 0.04087819, 0.04087819, 0.08091111], [1516703940000, 0.04087819, 0.04087819, 0.04087819, 0.04087819, 0.08803654], [1516704000000, 0.04087819, 0.04087819, 0.04087819, 0.04087819, 0.05394074], [1516704060000, 0.0408785, 0.0408785, 0.0408785, 0.0408785, 0.41004284], [1516704120000, 0.0408785, 0.0408785, 0.0408785, 0.0408785, 0.05394034], [1516704180000, 0.0408785, 0.0408785, 0.0408785, 0.0408785, 2.51694034], [1516704240000, 0.0408785, 0.0409, 0.0408785, 0.0409, 0.05394034], [1516704300000, 0.0409, 0.0409, 0.0408785, 0.0408785, 12.46959961], [1516704360000, 0.0408785, 0.0408785, 0.0408785, 0.0408785, 0.07442559], [1516704420000, 0.040925, 0.04105699, 0.0408001, 0.04085075, 8.28825954], [1516704480000, 0.04092499, 0.04092499, 0.04085075, 0.04085075, 0.04491557], [1516704540000, 0.04085075, 0.04085075, 0.04085075, 0.04085075, 0.10343096], [1516704600000, 0.04085075, 0.0412999, 0.04085075, 0.0412999, 94.208264], [1516704660000, 0.04085076, 0.04085081, 0.04085076, 0.04085081, 0.41905497], [1516704720000, 0.04085076, 0.04086693, 0.04085076, 0.04086693, 0.12128759], [1516704780000, 0.04086699, 0.04086699, 0.04086699, 0.04086699, 0.0333], [1516704900000, 0.04125772, 0.04125772, 0.0412576, 0.0412576, 0.29854641], [1516704960000, 0.04086732, 0.04086732, 0.040867, 0.040867, 2.46], [1516705020000, 0.041, 0.041, 0.041, 0.041, 0.845406], [1516705080000, 0.040867, 0.040867, 0.040867, 0.040867, 1.32585714], [1516705140000, 0.041, 0.041, 0.04088, 0.04088, 0.53491787], [1516705200000, 0.04088, 0.04099999, 0.04088, 0.04099999, 0.80947652], [1516705260000, 0.04088, 0.04088, 0.04088, 0.04088, 0.14499999], [1516705320000, 0.04088, 0.04088, 0.04088, 0.04088, 8.44050514], [1516705380000, 0.04088, 0.04099998, 0.04088, 0.04088, 20.54015747], [1516705440000, 0.04099996, 0.04099996, 0.04088, 0.04088, 8.9835854], [1516705500000, 0.04088, 0.04093998, 0.04088, 0.04088, 1.90356018], [1516705560000, 0.04088, 0.04088, 0.04088, 0.04088, 1.05393836], [1516705620000, 0.04088, 0.04088, 0.04088, 0.04088, 9.00961442], [1516705680000, 0.040867, 0.04088, 0.040867, 0.040867, 0.39565819], [1516705740000, 0.040867, 0.040867, 0.040867, 0.040867, 0.02697776], [1516705800000, 0.040867, 0.040867, 0.04086691, 0.04086691, 0.07637776], [1516705860000, 0.04088, 0.04088, 0.04086691, 0.04086691, 1.0750602], [1516705920000, 0.04085075, 0.04085075, 0.04084804, 0.04084804, 0.85560357], [1516705980000, 0.04080011, 0.04080011, 0.04080011, 0.04080011, 0.0646], [1516706040000, 0.04080011, 0.04080011, 0.0408001, 0.0408001, 5.281623], [1516706100000, 0.04087999, 0.04087999, 0.04087999, 0.04087999, 0.58753992], [1516706160000, 0.04088, 0.04088, 0.04087999, 0.04087999, 0.66062296], [1516706220000, 0.0408001, 0.0408001, 0.0408001, 0.0408001, 0.48155527], [1516706280000, 0.0408001, 0.0408001, 0.0408001, 0.0408001, 1.982847], [1516706340000, 0.04087998, 0.04087999, 0.0407, 0.0407, 1.05400334], [1516706460000, 0.04087997, 0.04087997, 0.04087993, 0.04087993, 0.66899024], [1516706520000, 0.04056044, 0.04056044, 0.04056044, 0.04056044, 0.1717305], [1516706580000, 0.04056044, 0.04056044, 0.04056044, 0.04056044, 0.13602078], [1516706640000, 0.04056042, 0.04056042, 0.04056042, 0.04056042, 0.0371426], [1516706700000, 0.0405001, 0.04056043, 0.0405001, 0.04056043, 2.29625876], [1516706760000, 0.04056042, 0.04056044, 0.04056, 0.04056, 13.89971853], [1516706820000, 0.0405601, 0.0405601, 0.04056, 0.04056, 1.2], [1516706880000, 0.0405601, 0.04086, 0.0405601, 0.04056011, 1.94758861], [1516706940000, 0.04086252, 0.04086252, 0.04086252, 0.04086252, 1.52152648], [1516707000000, 0.04086252, 0.04086252, 0.0405601, 0.04056012, 2.17701856], [1516707060000, 0.04086244, 0.04086245, 0.04086244, 0.04086245, 0.3], [1516707120000, 0.04056018, 0.040875, 0.04050018, 0.04050018, 6.71507408], [1516707180000, 0.04050021, 0.04087, 0.0405002, 0.04050023, 2.13359767], [1516707240000, 0.04050021, 0.04050021, 0.04050021, 0.04050021, 0.14685013], [1516707300000, 0.04055588, 0.040817, 0.04055588, 0.04055589, 1.64898082], [1516707360000, 0.04055589, 0.040825, 0.04055589, 0.040825, 7.09105262], [1516707420000, 0.04082699, 0.040827, 0.04055588, 0.04055588, 0.42398481], [1516707480000, 0.04055588, 0.04055588, 0.04055588, 0.04055588, 0.04559273], [1516707540000, 0.04082599, 0.04083945, 0.04052074, 0.04052074, 3.87157555], [1516707600000, 0.04083942, 0.04083942, 0.04052087, 0.04052088, 0.34270294], [1516707780000, 0.04050045, 0.04080935, 0.0405001, 0.0405001, 2.96092851], [1516707840000, 0.04050046, 0.04050046, 0.04050045, 0.04050045, 0.65030814], [1516707900000, 0.0405001, 0.04083396, 0.0405, 0.04083395, 7.61623845], [1516707960000, 0.04050016, 0.04083942, 0.04050016, 0.04050041, 1.0024621], [1516708020000, 0.04083942, 0.04083946, 0.04050065, 0.04050065, 1.28757833], [1516708080000, 0.04050071, 0.04050071, 0.0403, 0.04030021, 26.46150172], [1516708140000, 0.0405, 0.0405, 0.0405, 0.0405, 0.70479647], [1516708200000, 0.04031002, 0.04061734, 0.04025001, 0.04061732, 24.5425298], [1516708380000, 0.04027501, 0.04027501, 0.04027501, 0.04027501, 0.09521882], [1516708440000, 0.04025002, 0.04053472, 0.04025002, 0.04053451, 4.21040445], [1516708500000, 0.04053356, 0.04053356, 0.040513, 0.040513, 0.74050302], [1516708560000, 0.040513, 0.040513, 0.040513, 0.040513, 0.0868738], [1516708620000, 0.04025001, 0.04051296, 0.04025, 0.04051296, 0.46310885], [1516708680000, 0.04025, 0.04053298, 0.0402, 0.04050037, 8.40567232], [1516708740000, 0.040522, 0.040522, 0.0402, 0.0402, 0.54915575], [1516708800000, 0.04020001, 0.040501, 0.0402, 0.04050099, 1.1759714], [1516708860000, 0.04020064, 0.04020501, 0.04020054, 0.04020501, 1.15947719], [1516708920000, 0.04051, 0.04051, 0.040215, 0.04050997, 0.61884365], [1516708980000, 0.04050999, 0.04050999, 0.04050994, 0.04050994, 0.05297876], [1516709040000, 0.04050986, 0.04050986, 0.04050986, 0.04050986, 0.08506732], [1516709100000, 0.040481, 0.040496, 0.04020013, 0.04020013, 4.01069439], [1516709160000, 0.04020013, 0.04049624, 0.04020013, 0.04049624, 2.15239943], [1516709220000, 0.04050999, 0.04051, 0.04020013, 0.04021723, 4.03201151], [1516709280000, 0.0402, 0.04022205, 0.0402, 0.04022205, 1.59338775], [1516709340000, 0.04022204, 0.04022204, 0.04022204, 0.04022204, 0.4548207], [1516709400000, 0.04022204, 0.04022204, 0.04022204, 0.04022204, 0.1290207], [1516709460000, 0.04022204, 0.04022204, 0.04022204, 0.04022204, 0.0548207], [1516709520000, 0.04022204, 0.0404962, 0.04022204, 0.04022204, 0.3272479], [1516709580000, 0.040476, 0.04049624, 0.04022204, 0.04049624, 0.18147167], [1516709640000, 0.04022204, 0.04049624, 0.0402, 0.04020001, 1.72072957], [1516709700000, 0.04020002, 0.04054245, 0.04020002, 0.04020012, 0.3017874], [1516709760000, 0.04020002, 0.04020002, 0.04020002, 0.04020002, 0.05485067], [1516709820000, 0.04023545, 0.04054299, 0.04023545, 0.04054299, 0.57914042], [1516709880000, 0.04020008, 0.04073098, 0.04020008, 0.04073098, 50.82207078], [1516709940000, 0.040632, 0.040632, 0.04053793, 0.04053793, 1.28466623], [1516710000000, 0.04035795, 0.0405379, 0.04021001, 0.040215, 3.81698273], [1516710060000, 0.0402002, 0.04050964, 0.0402, 0.0402159, 11.77144203], [1516710180000, 0.04021612, 0.04021612, 0.04021612, 0.04021612, 0.01953337], [1516710240000, 0.04054899, 0.04054899, 0.04053365, 0.04053365, 6.82805274], [1516710300000, 0.04024123, 0.04053367, 0.04024123, 0.04024123, 5.74759106], [1516710360000, 0.04024123, 0.04024123, 0.04024123, 0.04024123, 0.5], [1516710480000, 0.04024123, 0.04046894, 0.04024123, 0.04024123, 12.54145229], [1516710540000, 0.04024123, 0.04024123, 0.04024123, 0.04024123, 0.38778725], [1516710600000, 0.04024122, 0.04024122, 0.04024122, 0.04024122, 0.08801859], [1516710660000, 0.04024123, 0.04024123, 0.04024123, 0.04024123, 0.44651445], [1516710720000, 0.040534, 0.040534, 0.04053082, 0.04053082, 0.2655739], [1516710900000, 0.04049983, 0.04055986, 0.04049983, 0.04055986, 20.60967694], [1516711020000, 0.0403, 0.04055986, 0.0403, 0.04055986, 0.09807288], [1516711140000, 0.0405, 0.0405, 0.0405, 0.0405, 0.1099], [1516711200000, 0.0405, 0.0405, 0.0405, 0.0405, 0.1401], [1516711260000, 0.0403, 0.0403, 0.0403, 0.0403, 0.10033795], [1516711320000, 0.0405, 0.0405, 0.04024125, 0.04024125, 0.64654783], [1516711380000, 0.04029502, 0.04029502, 0.04029502, 0.04029502, 0.1000125], [1516711500000, 0.04049999, 0.0405, 0.04024125, 0.04024125, 0.47588905], [1516711560000, 0.04024128, 0.04024128, 0.04024123, 0.04024123, 2.13751302], [1516711620000, 0.04024122, 0.04055, 0.04021002, 0.04021002, 7.40079263], [1516711680000, 0.04054999, 0.04055986, 0.04025501, 0.04025501, 2.51570703], [1516711740000, 0.04054, 0.04054, 0.04054, 0.04054, 1.00400299], [1516711800000, 0.04053997, 0.04054, 0.04053997, 0.04054, 1.00400299], [1516711920000, 0.04051999, 0.04051999, 0.04051999, 0.04051999, 0.87575632], [1516711980000, 0.040261, 0.040261, 0.040261, 0.040261, 2.94959471], [1516712040000, 0.04024102, 0.04024102, 0.04024102, 0.04024102, 0.23209247], [1516712100000, 0.0404, 0.0404, 0.0404, 0.0404, 0.2772896], [1516712160000, 0.0404, 0.0404, 0.0404, 0.0404, 2.0247928], [1516712220000, 0.0404, 0.0404001, 0.0404, 0.0404, 1.61143003], [1516712280000, 0.04049999, 0.0405, 0.0404, 0.0405, 9.67025232], [1516712460000, 0.0404, 0.04040001, 0.0404, 0.04040001, 10.8418446], [1516712520000, 0.0405, 0.0405, 0.04040001, 0.04040001, 0.63731075], [1516712580000, 0.04040001, 0.04040001, 0.0404, 0.0404, 3.53], [1516712640000, 0.0404, 0.0405, 0.0404, 0.0405, 0.96935745], [1516712700000, 0.0405, 0.0405, 0.0405, 0.0405, 0.07400557], [1516712820000, 0.04040001, 0.04040001, 0.0404, 0.0404, 0.43864442], [1516712880000, 0.0404, 0.0404, 0.0404, 0.0404, 0.04745369], [1516712940000, 0.0405, 0.0405, 0.04031, 0.04031, 67.63802072], [1516713000000, 0.0403101, 0.0403101, 0.0403101, 0.0403101, 0.27], [1516713060000, 0.0403101, 0.04049999, 0.04031, 0.04049999, 2.40282498], [1516713120000, 0.04049999, 0.04049999, 0.04049999, 0.04049999, 0.42734827], [1516713180000, 0.04049999, 0.04049999, 0.04031, 0.04031, 0.31545879], [1516713240000, 0.04049999, 0.04049999, 0.0403, 0.0403, 5.72214885], [1516713300000, 0.04029999, 0.0403, 0.04029999, 0.0403, 4.73304623], [1516713360000, 0.0403, 0.0403, 0.0403, 0.0403, 0.07059075], [1516713420000, 0.04049, 0.04049999, 0.04025501, 0.04025504, 7.72000998], [1516713480000, 0.04025504, 0.04049999, 0.04025, 0.04025, 7.08725554], [1516713540000, 0.04026002, 0.04026002, 0.04026002, 0.04026002, 3.24126632], [1516713600000, 0.0404, 0.0404, 0.0404, 0.0404, 0.36232243], [1516713720000, 0.04024002, 0.040241, 0.04024002, 0.040241, 0.09365478], [1516713780000, 0.0404, 0.0404, 0.0404, 0.0404, 0.74515915], [1516713840000, 0.0404, 0.0404, 0.0404, 0.0404, 1.49972204], [1516713900000, 0.04049999, 0.04049999, 0.04040001, 0.04040001, 2.34479022], [1516713960000, 0.04045011, 0.04045011, 0.04026102, 0.04026102, 8.48947832], [1516714020000, 0.04027847, 0.04049999, 0.04027847, 0.04049999, 7.91295421], [1516714080000, 0.04049999, 0.04049999, 0.04049999, 0.04049999, 3.80343696], [1516714260000, 0.04049999, 0.04049999, 0.04049999, 0.04049999, 1.19031384], [1516714320000, 0.04031002, 0.04031002, 0.04031002, 0.04031002, 0.01684465], [1516714380000, 0.04049999, 0.04049999, 0.04032771, 0.04032771, 0.40074799], [1516714440000, 0.04032771, 0.04032771, 0.04032771, 0.04032771, 0.1001], [1516714500000, 0.04049999, 0.04049999, 0.04049999, 0.04049999, 0.58168683], [1516714560000, 0.04049999, 0.04049999, 0.04030002, 0.04030002, 54.96210536], [1516714620000, 0.0403, 0.04049999, 0.0403, 0.04049999, 29.75538618], [1516714680000, 0.04049999, 0.04049999, 0.04049999, 0.04049999, 0.08514593], [1516714740000, 0.04032012, 0.04032012, 0.04032012, 0.04032012, 0.02], [1516714800000, 0.04032001, 0.04032001, 0.04032001, 0.04032001, 0.1071809], [1516714860000, 0.04032001, 0.04049999, 0.04032001, 0.04049999, 0.96570214], [1516714920000, 0.04032001, 0.04049801, 0.04032001, 0.04049801, 0.35339965], [1516714980000, 0.04049801, 0.04049999, 0.040341, 0.040341, 1.43875156], [1516715040000, 0.040341, 0.040341, 0.040341, 0.040341, 1.3292947], [1516715100000, 0.040341, 0.040341, 0.04014949, 0.04014949, 11.94635676], [1516715160000, 0.040341, 0.040341, 0.040341, 0.040341, 1.3120392], [1516715220000, 0.040341, 0.040341, 0.040341, 0.040341, 3.55], [1516715340000, 0.040341, 0.040341, 0.040189, 0.04018901, 10.37758556], [1516715400000, 0.04049995, 0.04049995, 0.04049499, 0.04049499, 0.60575824], [1516715460000, 0.04034101, 0.04034101, 0.04034101, 0.04034101, 0.30381301], [1516715520000, 0.0404, 0.04040001, 0.0404, 0.04040001, 0.80534873], [1516715580000, 0.04049996, 0.04049997, 0.0404, 0.0404, 7.38296753], [1516715640000, 0.04040001, 0.04040001, 0.04040001, 0.04040001, 0.1881027], [1516715700000, 0.04040001, 0.04040001, 0.04040001, 0.04040001, 0.27481455], [1516715760000, 0.04040001, 0.04040001, 0.04040001, 0.04040001, 5.31045319], [1516715820000, 0.04040001, 0.04049498, 0.04040001, 0.04040001, 0.45725801], [1516715880000, 0.04049498, 0.04049998, 0.04040012, 0.04049998, 16.23656479], [1516715940000, 0.04049998, 0.04049998, 0.04049998, 0.04049998, 4.90924063], [1516716000000, 0.04049998, 0.04049998, 0.04049998, 0.04049998, 1.49022556], [1516716060000, 0.04049998, 0.04049998, 0.04049998, 0.04049998, 54.53139716], [1516716120000, 0.04049999, 0.04049999, 0.04049998, 0.04049998, 0.05490479], [1516716180000, 0.04049998, 0.04049999, 0.04049998, 0.04049999, 0.27466413], [1516716240000, 0.04034604, 0.04049999, 0.04034604, 0.04049999, 2.9638424], [1516716300000, 0.04049999, 0.04055499, 0.04049999, 0.0405, 3.41462552], [1516716360000, 0.0405, 0.0405, 0.04034609, 0.0405, 4.03012664], [1516716420000, 0.0405, 0.04055986, 0.0405, 0.04055986, 2.15457386], [1516716480000, 0.04055986, 0.04055986, 0.04055986, 0.04055986, 0.21040018], [1516716540000, 0.04055986, 0.04055986, 0.04055986, 0.04055986, 1.48601623], [1516716600000, 0.04055986, 0.04055986, 0.04055986, 0.04055986, 0.76690201], [1516716660000, 0.04050106, 0.04050106, 0.04050106, 0.04050106, 1.13345659], [1516716720000, 0.04050106, 0.04050106, 0.04050106, 0.04050106, 0.02730734], [1516716780000, 0.04050106, 0.04055986, 0.04050106, 0.04055986, 0.77949033], [1516716840000, 0.04055986, 0.04059, 0.04034613, 0.04059, 0.16611168], [1516716900000, 0.04059, 0.04059, 0.04058999, 0.04059, 2.1689257], [1516716960000, 0.04059, 0.04059, 0.04059, 0.04059, 2.61150185], [1516717020000, 0.04059, 0.04059, 0.04059, 0.04059, 0.07024646], [1516717080000, 0.04059, 0.04059, 0.04059, 0.04059, 0.05743412], [1516717140000, 0.04050013, 0.04059, 0.04050013, 0.04050013, 5.48262293], [1516717200000, 0.04050013, 0.04069998, 0.04050013, 0.04050026, 0.79002576], [1516717260000, 0.04069998, 0.04069998, 0.04050026, 0.04069998, 3.96696739], [1516717320000, 0.04046543, 0.04046543, 0.04046543, 0.04046543, 0.28422156], [1516717380000, 0.04069998, 0.04069998, 0.04069998, 0.04069998, 0.43073757], [1516717440000, 0.04069998, 0.04069999, 0.0405, 0.04069999, 0.86173052], [1516717500000, 0.04069999, 0.04069999, 0.04069999, 0.04069999, 0.3657768], [1516717560000, 0.04069999, 0.04073293, 0.0405899, 0.04058991, 0.64264497], [1516717620000, 0.04058991, 0.04073292, 0.04058991, 0.04065, 0.07242386], [1516717680000, 0.04065, 0.04065, 0.04058991, 0.04065, 2.56189677], [1516717740000, 0.04065, 0.04067574, 0.04065, 0.04067574, 0.12696747], [1516717800000, 0.04067574, 0.04067574, 0.04065, 0.04067574, 0.34992952], [1516717860000, 0.04065001, 0.04075199, 0.04065001, 0.04065002, 1.74788917], [1516717920000, 0.040752, 0.040752, 0.04065002, 0.040752, 7.23752211], [1516717980000, 0.040752, 0.040752, 0.04065002, 0.04065002, 1.68767266], [1516718040000, 0.04065002, 0.04075099, 0.04065002, 0.04075099, 1.10294381], [1516718100000, 0.04075099, 0.040752, 0.04070051, 0.040752, 3.57459322], [1516718160000, 0.040752, 0.040752, 0.040752, 0.040752, 0.50017825], [1516718220000, 0.040752, 0.040752, 0.04065002, 0.040752, 2.73782233], [1516718340000, 0.04065002, 0.04075, 0.04065002, 0.04075, 1.02712193], [1516718400000, 0.04075, 0.04075, 0.04075, 0.04075, 0.24539877], [1516718460000, 0.04065007, 0.04065007, 0.04065007, 0.04065007, 0.12150808], [1516718520000, 0.04075, 0.04075, 0.04066008, 0.04066008, 1.91844862], [1516718580000, 0.04075, 0.04075, 0.04074999, 0.04074999, 0.51182835], [1516718640000, 0.04075, 0.04075, 0.04066009, 0.04066009, 9.02028254], [1516718700000, 0.04074996, 0.04074999, 0.04074996, 0.04074999, 0.92094659], [1516718760000, 0.04074996, 0.04074999, 0.04074996, 0.04074999, 0.26485058], [1516718820000, 0.04066008, 0.04074999, 0.04066008, 0.04074999, 0.29515684], [1516718880000, 0.04066009, 0.04066009, 0.04065006, 0.04065007, 21.52467121], [1516718940000, 0.04065007, 0.04074999, 0.04065006, 0.04065007, 24.36903507], [1516719000000, 0.04074999, 0.040752, 0.04065007, 0.04065007, 16.39469092], [1516719060000, 0.04065007, 0.0408, 0.04065007, 0.04065007, 1.48351851], [1516719120000, 0.0408, 0.04080001, 0.04070001, 0.04080001, 6.88206313], [1516719180000, 0.04080001, 0.04083946, 0.04079796, 0.04083944, 27.12298613], [1516719240000, 0.04080006, 0.04083943, 0.04080006, 0.04083943, 9.54043508], [1516719300000, 0.04080005, 0.04080005, 0.04079985, 0.0408, 0.35867713], [1516719360000, 0.04080001, 0.04080001, 0.04080001, 0.04080001, 0.11086556], [1516719420000, 0.04065007, 0.04065007, 0.04065007, 0.04065007, 0.1489413], [1516719480000, 0.04080001, 0.04080001, 0.04080001, 0.04080001, 0.5754647], [1516719540000, 0.04080001, 0.04080001, 0.04065007, 0.04065007, 1.05824643], [1516719600000, 0.04065007, 0.04080001, 0.04065007, 0.04080001, 0.88268009], [1516719660000, 0.04065007, 0.04065007, 0.04065007, 0.04065007, 4.02712172], [1516719720000, 0.04080001, 0.04080001, 0.04065007, 0.04065007, 0.91500702], [1516719780000, 0.04065007, 0.04065007, 0.04065007, 0.04065007, 0.2286294], [1516719840000, 0.04065007, 0.04079993, 0.04065007, 0.04065007, 5.5758851], [1516719900000, 0.04065007, 0.04065007, 0.04065007, 0.04065007, 0.05424344], [1516719960000, 0.04065007, 0.04065007, 0.04065007, 0.04065007, 0.05275123], [1516720020000, 0.04065007, 0.04065007, 0.04065007, 0.04065007, 1.02712172], [1516720080000, 0.04065007, 0.04083945, 0.04065007, 0.04083945, 2.52614025], [1516720200000, 0.0408, 0.0408, 0.0408, 0.0408, 0.24509803], [1516720320000, 0.0408, 0.0408, 0.04065007, 0.04065007, 22.0332645], [1516720380000, 0.04079999, 0.04079999, 0.04065007, 0.04065007, 8.99244908], [1516720440000, 0.04065007, 0.04065008, 0.04065007, 0.04065008, 0.10136516], [1516720500000, 0.04065008, 0.04065008, 0.0405686, 0.0405686, 0.55292147], [1516720560000, 0.0405686, 0.0405686, 0.0405686, 0.0405686, 0.37311448], [1516720620000, 0.04043901, 0.0405686, 0.04022997, 0.040401, 27.12100634], [1516720680000, 0.040401, 0.040401, 0.040401, 0.040401, 1.19119737], [1516720740000, 0.0405686, 0.0405686, 0.0405686, 0.0405686, 0.58947368], [1516720800000, 0.0405686, 0.04063807, 0.0405686, 0.04063807, 2.31053457], [1516720860000, 0.04052035, 0.0405686, 0.04052035, 0.0405686, 1.75247587], [1516720920000, 0.0405686, 0.0405686, 0.0405686, 0.0405686, 3.76578013], [1516720980000, 0.04063807, 0.04063807, 0.04052501, 0.04052501, 3.12617199], [1516721040000, 0.04052501, 0.04079992, 0.04052501, 0.04079992, 6.98518966], [1516721100000, 0.04074789, 0.04079996, 0.04060537, 0.04079988, 1.48283217], [1516721160000, 0.04079988, 0.0408, 0.040541, 0.040541, 1.54126395], [1516721220000, 0.0408, 0.0408, 0.0408, 0.0408, 0.61015607], [1516721280000, 0.04079999, 0.04079999, 0.04079993, 0.04079993, 1.75563], [1516721340000, 0.04079992, 0.04079992, 0.04079991, 0.04079991, 3.93296724], [1516721400000, 0.0406, 0.04079989, 0.0406, 0.04079989, 2.78983035], [1516721460000, 0.04079987, 0.04079988, 0.04079987, 0.04079988, 0.66576126], [1516721520000, 0.04079988, 0.04079988, 0.04060001, 0.04060001, 2.74241463], [1516721580000, 0.04079988, 0.0408, 0.04079988, 0.0408, 4.97284483], [1516721700000, 0.04079999, 0.0408, 0.04079999, 0.0408, 6.03464118], [1516721760000, 0.0408, 0.0408, 0.04060511, 0.04079999, 1.11752734], [1516721820000, 0.04083945, 0.04088, 0.04083945, 0.04088, 25.66221511], [1516721880000, 0.04088, 0.04088, 0.04088, 0.04088, 1.680601], [1516721940000, 0.04087999, 0.04088, 0.04087999, 0.04088, 16.90382542], [1516722000000, 0.0409757, 0.0409757, 0.0409757, 0.0409757, 0.24404708], [1516722060000, 0.0409757, 0.0409757, 0.0409757, 0.0409757, 0.83827494], [1516722180000, 0.040861, 0.040861, 0.040861, 0.040861, 2.48872306], [1516722240000, 0.04097569, 0.04097569, 0.04097569, 0.04097569, 1.63811557], [1516722300000, 0.0409757, 0.04098, 0.04097569, 0.04098, 0.82958277], [1516722360000, 0.04098, 0.04099999, 0.04098, 0.04099999, 21.48374941], [1516722420000, 0.04099999, 0.04099999, 0.04098, 0.04098, 0.4038486], [1516722480000, 0.04098, 0.04098, 0.04098, 0.04098, 1.77312692], [1516722540000, 0.04099998, 0.04099998, 0.04098, 0.04098, 0.57171807], [1516722600000, 0.04098, 0.04099999, 0.040861, 0.040861, 7.64937677], [1516722660000, 0.040861, 0.040861, 0.040861, 0.040861, 0.29826197], [1516722720000, 0.040861, 0.04090186, 0.040861, 0.04090186, 0.27875221], [1516722780000, 0.04090186, 0.04099997, 0.04090186, 0.04099997, 0.16671167], [1516722840000, 0.04090187, 0.04099999, 0.04090187, 0.04099999, 4.20204477], [1516722900000, 0.04099999, 0.04099999, 0.04099998, 0.04099999, 0.92860086], [1516722960000, 0.04099999, 0.04099999, 0.04090187, 0.04090187, 2.22729666], [1516723020000, 0.04090187, 0.04090187, 0.04090187, 0.04090187, 0.12125166], [1516723140000, 0.04099998, 0.04099999, 0.04099998, 0.04099999, 4.06430651], [1516723200000, 0.04099999, 0.04099999, 0.04099998, 0.04099999, 263.82705827], [1516723260000, 0.04099999, 0.04099999, 0.04099998, 0.04099998, 0.27633287], [1516723320000, 0.04099998, 0.04099999, 0.04099998, 0.04099998, 5.4039911], [1516723380000, 0.04099998, 0.04099999, 0.04099998, 0.04099999, 0.10502791], [1516723440000, 0.04099998, 0.04099998, 0.04099998, 0.04099998, 0.09970778], [1516723500000, 0.04099999, 0.04099999, 0.04099998, 0.04099999, 0.93202506], [1516723560000, 0.04099999, 0.04099999, 0.04099999, 0.04099999, 219.7994909], [1516723620000, 0.04099999, 0.04099999, 0.0409019, 0.04099999, 12.46443006], [1516723680000, 0.04099999, 0.04110197, 0.0409019, 0.04110197, 68.41768735], [1516723740000, 0.04110196, 0.04110196, 0.04110196, 0.04110196, 0.82769437], [1516723800000, 0.04110196, 0.04129, 0.04088277, 0.04115286, 4.22348391], [1516723860000, 0.04115286, 0.04126998, 0.04095559, 0.04097101, 1.32887148], [1516723920000, 0.04097603, 0.04097603, 0.04097603, 0.04097603, 0.03425795], [1516723980000, 0.04124998, 0.04124999, 0.04102299, 0.04112632, 12.54931736], [1516724040000, 0.04112632, 0.04112632, 0.04102801, 0.04112632, 4.88718609], [1516724100000, 0.04112632, 0.04124999, 0.04112632, 0.04116746, 4.70540632], [1516724160000, 0.04116746, 0.04124999, 0.04116746, 0.04116746, 0.97721733], [1516724220000, 0.04116746, 0.04124999, 0.04116745, 0.04116745, 3.70216107], [1516724280000, 0.04129124, 0.0413, 0.041029, 0.0413, 2.67113482], [1516724340000, 0.04129997, 0.04129997, 0.04129997, 0.04129997, 2.21232135], [1516724400000, 0.041299, 0.041299, 0.041299, 0.041299, 0.24213075], [1516724460000, 0.04102907, 0.04102907, 0.04102907, 0.04102907, 0.3838], [1516724520000, 0.04129, 0.04129, 0.04102907, 0.041049, 0.35305044], [1516724580000, 0.04102907, 0.04102907, 0.04102907, 0.04102907, 0.36], [1516724640000, 0.04102907, 0.0412507, 0.04102906, 0.04102906, 5.85869966], [1516724700000, 0.04102906, 0.04125059, 0.04102906, 0.04102907, 0.63024171], [1516724760000, 0.04102908, 0.04125052, 0.04102906, 0.04102906, 21.84154862], [1516724820000, 0.04102906, 0.04102906, 0.04102906, 0.04102906, 36.69590634], [1516724880000, 0.04102906, 0.04102906, 0.04102906, 0.04102906, 4.31666218], [1516724940000, 0.04102906, 0.04102906, 0.04102906, 0.04102906, 0.23627551], [1516725000000, 0.0410291, 0.04102912, 0.0410291, 0.04102912, 1.23616901], [1516725060000, 0.04102906, 0.04102906, 0.04102906, 0.04102906, 7.394507], [1516725120000, 0.04102907, 0.0410291, 0.04102907, 0.04102907, 3.75193849], [1516725180000, 0.04102907, 0.0410291, 0.04102906, 0.04102906, 8.16038877], [1516725240000, 0.04102906, 0.04102907, 0.04102906, 0.04102907, 0.09462178], [1516725300000, 0.04102907, 0.04119998, 0.0406179, 0.04102907, 40.62881506], [1516725360000, 0.04102907, 0.04109999, 0.04102907, 0.04102907, 29.37480994], [1516725420000, 0.04107999, 0.04107999, 0.04107999, 0.04107999, 0.421], [1516725480000, 0.04102907, 0.04102907, 0.04102907, 0.04102907, 13.39879884], [1516725540000, 0.04107995, 0.04115075, 0.04102907, 0.04107994, 2.81607243], [1516725600000, 0.04115075, 0.04115075, 0.04115075, 0.04115075, 0.28019349], [1516725660000, 0.04115076, 0.04115077, 0.04115076, 0.04115077, 0.77083806], [1516725720000, 0.04115077, 0.04115077, 0.04115076, 0.04115077, 22.25854388], [1516725780000, 0.04115077, 0.04115077, 0.04115076, 0.04115076, 1.26094722], [1516725840000, 0.04115076, 0.04115077, 0.04115076, 0.04115076, 17.58196945], [1516725900000, 0.04115076, 0.04115076, 0.04115075, 0.04115075, 11.77328707], [1516725960000, 0.04114869, 0.04114869, 0.04114869, 0.04114869, 0.09324909], [1516726020000, 0.04086264, 0.04114866, 0.040827, 0.04084, 0.98066509], [1516726080000, 0.04114859, 0.04114859, 0.04082499, 0.04101931, 18.35267262], [1516726140000, 0.0410193, 0.0410193, 0.04082, 0.04101929, 1.34292433], [1516726200000, 0.04101929, 0.041039, 0.04101929, 0.041039, 2.59134126], [1516726260000, 0.041021, 0.041021, 0.0410193, 0.04101931, 0.33655406], [1516726320000, 0.04101931, 0.04101931, 0.04101929, 0.04101929, 13.74882102], [1516726380000, 0.04101929, 0.04101929, 0.04101928, 0.04101928, 0.9662813], [1516726440000, 0.04101927, 0.04115076, 0.04082001, 0.04115076, 5.2661132], [1516726500000, 0.04115076, 0.04115076, 0.04115076, 0.04115076, 6.82066718], [1516726560000, 0.04115076, 0.04115076, 0.04115076, 0.04115076, 7.07444526], [1516726620000, 0.04115076, 0.04115076, 0.04115076, 0.04115076, 10.09783408], [1516726680000, 0.04115077, 0.041195, 0.04089301, 0.041195, 3.27028434], [1516726740000, 0.041, 0.04118498, 0.041, 0.041, 1.29067488], [1516726800000, 0.041, 0.04118497, 0.041, 0.04100024, 34.32425354], [1516726860000, 0.041005, 0.04118497, 0.041005, 0.04101002, 0.70157898], [1516726920000, 0.04101004, 0.04101004, 0.04101004, 0.04101004, 0.02688367], [1516726980000, 0.04100502, 0.041195, 0.04100502, 0.041195, 0.06970745], [1516727040000, 0.041167, 0.041167, 0.041007, 0.04100703, 0.6462797], [1516727100000, 0.04100502, 0.04121929, 0.04100502, 0.04116701, 1.6953825], [1516727160000, 0.04116701, 0.04116701, 0.04116701, 0.04116701, 38.95456483], [1516727220000, 0.04116702, 0.041219, 0.04116701, 0.04116701, 0.48254645], [1516727280000, 0.04116701, 0.04116702, 0.04116701, 0.04116702, 5.0535623], [1516727340000, 0.04116702, 0.04121929, 0.04116701, 0.04116701, 16.63524957], [1516727400000, 0.04116703, 0.04121928, 0.041167, 0.04121928, 23.68408956], [1516727460000, 0.041167, 0.041167, 0.04100513, 0.04100513, 0.53796067], [1516727520000, 0.04100513, 0.04116699, 0.04100513, 0.04116699, 0.35954671], [1516727580000, 0.04101, 0.04101, 0.04101, 0.04101, 0.02688369], [1516727640000, 0.04101, 0.04101, 0.04101, 0.04101, 1.10228447], [1516727700000, 0.04100514, 0.04121928, 0.04100514, 0.04121928, 2.85346465], [1516727760000, 0.04100514, 0.04121927, 0.04100514, 0.04121927, 0.94506378], [1516727820000, 0.04100514, 0.04121927, 0.04100514, 0.04121922, 4.83863547], [1516728000000, 0.0412192, 0.04121922, 0.04100514, 0.04100514, 3.88641026], [1516728060000, 0.04100514, 0.04100514, 0.04100514, 0.04100514, 0.42836775], [1516728120000, 0.04100514, 0.04100514, 0.04100514, 0.04100514, 1.22606539], [1516728180000, 0.04100515, 0.04121917, 0.04100514, 0.04121917, 1.37899471], [1516728240000, 0.04121917, 0.04121917, 0.04083001, 0.04100513, 17.54987993], [1516728300000, 0.04100513, 0.04114652, 0.04088, 0.04088, 3.87868914], [1516728360000, 0.04114651, 0.04114651, 0.04082001, 0.04082001, 0.07209525], [1516728480000, 0.04086531, 0.04114599, 0.04086531, 0.04089002, 0.25660678], [1516728540000, 0.04104599, 0.04104599, 0.04104598, 0.04104598, 2.06775659], [1516728600000, 0.04104599, 0.04114599, 0.04104599, 0.041046, 3.33054928], [1516728660000, 0.04114598, 0.04114598, 0.041046, 0.041046, 5.06338036], [1516728720000, 0.04104601, 0.04104601, 0.041046, 0.041046, 0.84552357], [1516728780000, 0.04114597, 0.04114598, 0.04114597, 0.04114598, 4.51405432], [1516728840000, 0.04104601, 0.04104601, 0.04104601, 0.04104601, 0.01222769], [1516728900000, 0.041046, 0.04114596, 0.041046, 0.04114596, 0.59260002], [1516728960000, 0.041046, 0.041046, 0.041046, 0.041046, 0.02686011], [1516729020000, 0.041046, 0.041136, 0.041046, 0.041136, 0.0896984], [1516729080000, 0.041046, 0.0411, 0.041046, 0.041046, 0.8914771], [1516729140000, 0.041046, 0.041046, 0.041046, 0.041046, 2.88717728], [1516729200000, 0.041046, 0.04109997, 0.04090685, 0.04090685, 2.98010384], [1516729260000, 0.04090002, 0.04090002, 0.04090002, 0.04090002, 0.23107609], [1516729320000, 0.04090003, 0.04099999, 0.04090002, 0.04090003, 5.42717081], [1516729380000, 0.04099998, 0.04099998, 0.04090003, 0.04090003, 0.10012196], [1516729440000, 0.04099997, 0.04099997, 0.04099997, 0.04099997, 0.05391218], [1516729500000, 0.04090003, 0.04090003, 0.04090003, 0.04090003, 0.32857776], [1516729560000, 0.04090014, 0.04099995, 0.04090002, 0.04090003, 0.81297193], [1516729620000, 0.04090498, 0.04099994, 0.04090003, 0.04090634, 1.34265738], [1516729680000, 0.04090634, 0.04099995, 0.04083888, 0.04099994, 7.34947777], [1516729740000, 0.04083895, 0.04099992, 0.04081467, 0.04083898, 15.89719455], [1516729800000, 0.04084404, 0.04084409, 0.04084404, 0.04084409, 0.65723437], [1516729860000, 0.04099992, 0.04099992, 0.04048481, 0.04083896, 150.27654398], [1516729920000, 0.04084408, 0.04084409, 0.04083896, 0.04084409, 3.59376453], [1516729980000, 0.04084409, 0.041, 0.04084409, 0.041, 2.43519802], [1516730040000, 0.04100207, 0.04100207, 0.04100206, 0.04100207, 11.52927522], [1516730160000, 0.04100205, 0.04100207, 0.04100205, 0.04100207, 4.19183228], [1516730220000, 0.04100207, 0.04100207, 0.04100207, 0.04100207, 0.02696042], [1516730280000, 0.04100207, 0.04100207, 0.04089412, 0.04100207, 10.66777661], [1516730340000, 0.04100207, 0.04100207, 0.04100207, 0.04100207, 3.93330809], [1516730400000, 0.04100207, 0.04100207, 0.04091901, 0.04100207, 2.7095105], [1516730460000, 0.04100207, 0.04100207, 0.04095993, 0.04099, 1.19364102], [1516730520000, 0.04099, 0.0411, 0.04099, 0.0411, 1.3067167], [1516730580000, 0.04095999, 0.0412255, 0.04095999, 0.0412255, 3.5566468], [1516730640000, 0.0412255, 0.04124916, 0.04110003, 0.04124916, 6.62085943], [1516730700000, 0.04124917, 0.041295, 0.04110003, 0.04124917, 28.90468755], [1516730760000, 0.04124917, 0.04131587, 0.04110003, 0.04125, 18.08709901], [1516730820000, 0.04125, 0.0413481, 0.04125, 0.04133999, 0.181744], [1516730880000, 0.04111001, 0.04111001, 0.04110044, 0.04110044, 0.34279291], [1516730940000, 0.04134, 0.04134, 0.04110505, 0.04111, 2.00913322], [1516731000000, 0.04111, 0.04139, 0.041104, 0.04139, 3.10632946], [1516731060000, 0.04139, 0.04139, 0.04110502, 0.04139, 8.20063269], [1516731120000, 0.04111, 0.04139, 0.04110801, 0.04110801, 1.86161916], [1516731180000, 0.041108, 0.04110801, 0.040995, 0.040995, 5.89471931], [1516731240000, 0.040995, 0.04133999, 0.040995, 0.04133999, 0.12725252], [1516731300000, 0.04131499, 0.04133999, 0.04099501, 0.041339, 2.74210346], [1516731360000, 0.041339, 0.041339, 0.041, 0.041, 1.81672172], [1516731420000, 0.04133199, 0.04133999, 0.04133199, 0.04133999, 1.78007213], [1516731480000, 0.04133998, 0.04133998, 0.04133998, 0.04133998, 0.12671993], [1516731540000, 0.041118, 0.041118, 0.04110806, 0.04110806, 21.34854635], [1516731600000, 0.04133999, 0.04139, 0.04133999, 0.04139, 1.69210638], [1516731660000, 0.041385, 0.041385, 0.041385, 0.041385, 0.29865552], [1516731720000, 0.04138499, 0.04138499, 0.04110805, 0.04110805, 2.25012419], [1516731780000, 0.04110806, 0.04138497, 0.04110806, 0.04138497, 0.66005222], [1516731840000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 0.02681956], [1516731900000, 0.04110808, 0.04136998, 0.04110808, 0.04135999, 1.77438732], [1516731960000, 0.04110806, 0.04110807, 0.04110806, 0.04110807, 0.61463911], [1516732080000, 0.04110805, 0.04110805, 0.04110805, 0.04110805, 30.0], [1516732140000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 0.16085817], [1516732200000, 0.04110805, 0.0413, 0.04110805, 0.04110805, 3.65783552], [1516732320000, 0.04110805, 0.04110805, 0.04110805, 0.04110805, 46.50289867], [1516732440000, 0.04123137, 0.0413, 0.04110805, 0.0413, 4.69478655], [1516732500000, 0.04129, 0.04129, 0.04129, 0.04129, 0.24213075], [1516732560000, 0.041295, 0.041295, 0.041295, 0.041295, 0.02506226], [1516732620000, 0.04110805, 0.04110805, 0.04110805, 0.04110805, 1.91721361], [1516732680000, 0.0412, 0.0412, 0.0412, 0.0412, 1.5042], [1516732740000, 0.041295, 0.041295, 0.0412, 0.0412, 0.94929335], [1516732800000, 0.0412, 0.041295, 0.0412, 0.041295, 1.48437878], [1516732860000, 0.0412, 0.0412, 0.0412, 0.0412, 3.36784367], [1516732920000, 0.0412, 0.0412, 0.0412, 0.0412, 0.05], [1516732980000, 0.0412, 0.0412, 0.0412, 0.0412, 0.9354], [1516733040000, 0.0412, 0.0412, 0.0412, 0.0412, 0.00904967], [1516733100000, 0.0412, 0.04128499, 0.0412, 0.04128499, 0.28420298], [1516733160000, 0.04128499, 0.04128499, 0.04128499, 0.04128499, 0.03172383], [1516733220000, 0.04128499, 0.04129, 0.04128499, 0.04129, 4.65910976], [1516733280000, 0.04129, 0.04129, 0.04129, 0.04129, 0.0652839], [1516733340000, 0.0412, 0.0412, 0.0412, 0.0412, 0.1417349], [1516733400000, 0.0412, 0.0412, 0.0412, 0.0412, 0.03016674], [1516733460000, 0.0412, 0.0412, 0.0412, 0.0412, 0.1665], [1516733520000, 0.0412, 0.0412, 0.0412, 0.0412, 0.41552906], [1516733580000, 0.0412, 0.0412, 0.0412, 0.0412, 0.50922989], [1516733640000, 0.0412, 0.0412, 0.04110805, 0.0412, 1.6126111], [1516733700000, 0.04119794, 0.0412, 0.04119794, 0.0412, 0.48546162], [1516733760000, 0.04110805, 0.04110815, 0.04110805, 0.04110805, 5.00037497], [1516733820000, 0.04110805, 0.04119794, 0.04110805, 0.04119794, 2.34298331], [1516733880000, 0.04119794, 0.0412, 0.04119794, 0.04119794, 0.97168674], [1516733940000, 0.04119794, 0.04119794, 0.04119794, 0.04119794, 1.32051735], [1516734000000, 0.04119794, 0.04119794, 0.04119794, 0.04119794, 0.48546162], [1516734060000, 0.04115485, 0.04115485, 0.04115485, 0.04115485, 0.07461987], [1516734120000, 0.04119794, 0.04119794, 0.04110805, 0.04119794, 0.37573561], [1516734300000, 0.04115485, 0.04119794, 0.04110805, 0.04119794, 4.37919243], [1516734360000, 0.04110805, 0.041197, 0.04110805, 0.04110805, 2.87708222], [1516734420000, 0.04110805, 0.04119794, 0.04110805, 0.041197, 0.19669372], [1516734480000, 0.041197, 0.041197, 0.04110805, 0.04110805, 0.30880066], [1516734540000, 0.04110805, 0.04110805, 0.04110805, 0.04110805, 0.2663809], [1516734600000, 0.04110805, 0.04119794, 0.04110805, 0.04119794, 4.99973184], [1516734660000, 0.04110805, 0.04110805, 0.04110805, 0.04110805, 0.02681956], [1516734720000, 0.04110805, 0.04115299, 0.04110805, 0.04115299, 0.32281956], [1516734780000, 0.041196, 0.041196, 0.04110805, 0.041194, 2.78600804], [1516734840000, 0.04119599, 0.04119599, 0.04110805, 0.04110805, 3.25190754], [1516734900000, 0.04119597, 0.04119598, 0.04110805, 0.04119598, 0.30208619], [1516735020000, 0.04110805, 0.04110805, 0.04110805, 0.04110805, 0.44652654], [1516735080000, 0.04110805, 0.04115, 0.04110805, 0.04110805, 0.80948302], [1516735140000, 0.04110805, 0.04110805, 0.04110805, 0.04110805, 0.08045868], [1516735200000, 0.04114999, 0.04114999, 0.04110805, 0.04110805, 0.82670811], [1516735260000, 0.04114998, 0.04114998, 0.04110805, 0.04110805, 9.84884187], [1516735320000, 0.04110805, 0.04110805, 0.04110805, 0.04110805, 0.08363912], [1516735380000, 0.04110805, 0.04110805, 0.04110805, 0.04110805, 0.29530427], [1516735440000, 0.04110805, 0.04110805, 0.04110805, 0.04110805, 0.060119], [1516735500000, 0.04110805, 0.04114998, 0.04110805, 0.04114998, 0.26983292], [1516735560000, 0.04110805, 0.04110805, 0.04110805, 0.04110805, 0.02681956], [1516735620000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 0.03004213], [1516735680000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 0.02046201], [1516735740000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 1.22477277], [1516735800000, 0.04110806, 0.04114998, 0.04110806, 0.04114998, 1.34178565], [1516735860000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 0.10004436], [1516735920000, 0.04110806, 0.04114998, 0.04110806, 0.04114998, 0.71070513], [1516735980000, 0.04114998, 0.04114998, 0.04110808, 0.04110808, 0.32252066], [1516736040000, 0.04114998, 0.04114998, 0.04114998, 0.04114998, 2.0], [1516736100000, 0.04114998, 0.04114998, 0.04112901, 0.04112901, 0.53473565], [1516736280000, 0.04110809, 0.04110809, 0.04110809, 0.04110809, 0.42687771], [1516736400000, 0.04112901, 0.04112901, 0.04112901, 0.04112901, 6.07007736], [1516736460000, 0.04112901, 0.04112901, 0.04112901, 0.04112901, 9.80397011], [1516736520000, 0.04112901, 0.04112901, 0.041129, 0.041129, 0.59715604], [1516736580000, 0.041129, 0.04112901, 0.04110809, 0.04112901, 1.49308916], [1516736640000, 0.04112901, 0.04112901, 0.04112901, 0.04112901, 3.01088617], [1516736700000, 0.04110819, 0.04112901, 0.04110819, 0.04112901, 0.59324556], [1516736760000, 0.04112901, 0.04112901, 0.04112901, 0.04112901, 0.03701583], [1516736820000, 0.041129, 0.04112901, 0.041129, 0.04112901, 0.23595729], [1516736880000, 0.04112901, 0.04112901, 0.04112901, 0.04112901, 0.09280701], [1516736940000, 0.04112901, 0.04112901, 0.04110809, 0.04112901, 3.69254604], [1516737000000, 0.04110809, 0.04112901, 0.04110806, 0.04110806, 16.84166881], [1516737060000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 31.073341], [1516737120000, 0.04112901, 0.04112901, 0.04110806, 0.04110806, 11.43572814], [1516737180000, 0.04112901, 0.04112901, 0.04112901, 0.04112901, 0.04893072], [1516737240000, 0.041109, 0.041109, 0.04110806, 0.04110806, 1.28834406], [1516737300000, 0.041109, 0.04112901, 0.041109, 0.04112901, 0.51885471], [1516737360000, 0.04110806, 0.04112901, 0.04110806, 0.04112901, 10.82829295], [1516737420000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 0.05363912], [1516737480000, 0.04112901, 0.04112901, 0.04110806, 0.04110806, 6.28329692], [1516737540000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 11.9720111], [1516737600000, 0.04110806, 0.04112901, 0.04110806, 0.04112901, 3.20014813], [1516737660000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 0.35474484], [1516737720000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 2.75117973], [1516737840000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 0.13175251], [1516737900000, 0.04115, 0.04119599, 0.04115, 0.04119599, 0.86299905], [1516738020000, 0.04119599, 0.04139, 0.04119599, 0.04139, 18.42236214], [1516738080000, 0.04138999, 0.04138999, 0.04138999, 0.04138999, 0.08393942], [1516738140000, 0.04111805, 0.04139, 0.04111805, 0.04139, 9.18291571], [1516738200000, 0.04138999, 0.04139, 0.0411181, 0.04138999, 1.02757014], [1516738260000, 0.04138999, 0.04138999, 0.04138998, 0.04138999, 0.84682454], [1516738320000, 0.04138999, 0.04139, 0.04138998, 0.04138998, 3.9896337], [1516738380000, 0.04120002, 0.04139, 0.04120002, 0.04139, 2.19415787], [1516738440000, 0.04138999, 0.04139, 0.04138999, 0.04139, 1.08235425], [1516738500000, 0.04139, 0.04177921, 0.04139, 0.0417791, 72.13650223], [1516738560000, 0.0412005, 0.0412005, 0.0412005, 0.0412005, 0.23953983], [1516738620000, 0.04121805, 0.04158999, 0.04121805, 0.04158999, 0.26115048], [1516738800000, 0.0415264, 0.0415264, 0.0415264, 0.0415264, 0.48162132], [1516738860000, 0.04137231, 0.04162199, 0.04137231, 0.04162199, 1.64271247], [1516738980000, 0.04152084, 0.04152084, 0.04152084, 0.04152084, 0.04248087], [1516739040000, 0.04121857, 0.04121857, 0.04121806, 0.04121806, 0.64469569], [1516739100000, 0.04121806, 0.04152639, 0.04121806, 0.0412181, 3.6529211], [1516739160000, 0.04132465, 0.04132465, 0.04132465, 0.04132465, 1.08700879], [1516739220000, 0.04149999, 0.04149999, 0.04132465, 0.04132465, 7.64802409], [1516739280000, 0.04121813, 0.04132465, 0.04121812, 0.04132465, 0.47723397], [1516739340000, 0.04121815, 0.04132465, 0.04121815, 0.04122303, 1.29854097], [1516739400000, 0.04122303, 0.04132465, 0.04121806, 0.04122304, 6.29991777], [1516739460000, 0.04122305, 0.04132465, 0.04121806, 0.04121806, 5.8440999], [1516739520000, 0.04132465, 0.04132465, 0.04121807, 0.04121807, 0.06267564], [1516739580000, 0.04132465, 0.04132465, 0.04132464, 0.04132464, 3.26963885], [1516739640000, 0.04122, 0.04132465, 0.04122, 0.04132465, 7.43661179], [1516739820000, 0.04132465, 0.04132465, 0.04125001, 0.04125001, 0.06674637], [1516739880000, 0.04125001, 0.04132465, 0.04125001, 0.04132464, 5.25263227], [1516739940000, 0.04132465, 0.04132465, 0.04125001, 0.04132464, 0.61099893], [1516740000000, 0.04132464, 0.04132464, 0.04125001, 0.04132464, 0.08375244], [1516740060000, 0.04125365, 0.04125365, 0.04125, 0.04125, 10.26086898], [1516740120000, 0.04125, 0.04132464, 0.04125, 0.04125, 2.58225696], [1516740180000, 0.04132463, 0.04132463, 0.04132463, 0.04132463, 0.02672744], [1516740300000, 0.04125, 0.04125, 0.04125, 0.04125, 0.99781586], [1516740360000, 0.04132463, 0.04132463, 0.04125, 0.04125, 20.51804927], [1516740420000, 0.04124999, 0.04124999, 0.0412, 0.04124999, 20.07274651], [1516740480000, 0.04124999, 0.04124999, 0.04124999, 0.04124999, 0.0535197], [1516740540000, 0.04124999, 0.04124999, 0.0411181, 0.0411182, 5.81584898], [1516740600000, 0.0411182, 0.04124998, 0.0411182, 0.0411182, 2.70181987], [1516740660000, 0.04124998, 0.04124998, 0.04124998, 0.04124998, 0.05354], [1516740720000, 0.04124998, 0.04124999, 0.0412, 0.04124999, 5.00833631], [1516740780000, 0.04125, 0.04132463, 0.04125, 0.04132463, 3.709731], [1516740840000, 0.04132463, 0.04132463, 0.04125, 0.04125, 15.41060991], [1516740900000, 0.04125, 0.04142462, 0.04125, 0.04142462, 0.85982142], [1516740960000, 0.0414241, 0.0414241, 0.04125001, 0.04125001, 1.46805339], [1516741020000, 0.0414241, 0.04142448, 0.0414241, 0.04142448, 2.56514181], [1516741080000, 0.04125001, 0.04125001, 0.04125001, 0.04125001, 6.5247023], [1516741140000, 0.04142448, 0.04142448, 0.04125001, 0.04125001, 0.83797397], [1516741200000, 0.04142448, 0.04142462, 0.04142448, 0.04142462, 0.5855255], [1516741260000, 0.04142448, 0.04142452, 0.04133724, 0.04133724, 1.2844439], [1516741320000, 0.04133724, 0.04133724, 0.04124999, 0.04124999, 0.70883088], [1516741380000, 0.04133724, 0.04133724, 0.04125009, 0.04125009, 0.64395046], [1516741440000, 0.04133723, 0.04133723, 0.04133723, 0.04133723, 0.02854383], [1516741620000, 0.04133721, 0.04133721, 0.04133721, 0.04133721, 0.07220751], [1516741680000, 0.04133723, 0.04133723, 0.04125001, 0.04125001, 1.78903872], [1516741740000, 0.04125001, 0.04133722, 0.04125001, 0.04125001, 1.18158384], [1516741800000, 0.04125001, 0.04133723, 0.04125001, 0.04133723, 0.59592569], [1516741860000, 0.04125019, 0.04125019, 0.04125019, 0.04125019, 0.91718459], [1516741920000, 0.04125019, 0.04125019, 0.04125019, 0.04125019, 0.11497257], [1516741980000, 0.04133723, 0.04133723, 0.04125001, 0.04125001, 5.67738122], [1516742040000, 0.04133722, 0.04133722, 0.04133722, 0.04133722, 0.932575], [1516742100000, 0.04124999, 0.04124999, 0.04124999, 0.04124999, 1.10378698], [1516742160000, 0.04124999, 0.04133723, 0.04124998, 0.04133723, 1.18965083], [1516742220000, 0.041337, 0.041337, 0.04125355, 0.04125355, 0.08940941], [1516742280000, 0.04127585, 0.04127585, 0.04124998, 0.04124998, 0.2474053], [1516742340000, 0.04124998, 0.041337, 0.04124998, 0.04124998, 0.08362431], [1516742400000, 0.04131723, 0.04142463, 0.04124998, 0.04124998, 2.44801015], [1516742460000, 0.04131723, 0.0414, 0.04124998, 0.04124998, 0.35687111], [1516742580000, 0.04125001, 0.04125001, 0.04113401, 0.04113401, 1.52488032], [1516742640000, 0.04113401, 0.04113401, 0.04113401, 0.04113401, 1.05806298], [1516742700000, 0.04113402, 0.04135, 0.04113401, 0.04135, 1.10608893], [1516742820000, 0.0413495, 0.0413495, 0.0413495, 0.0413495, 0.24976291], [1516742880000, 0.0412, 0.0413495, 0.0412, 0.0413495, 0.39729348], [1516742940000, 0.0412, 0.0412, 0.0412, 0.0412, 0.122543], [1516743000000, 0.0412, 0.041349, 0.0412, 0.0412, 13.50029364], [1516743060000, 0.0412, 0.041205, 0.0412, 0.041205, 2.42688076], [1516743120000, 0.04134899, 0.04135, 0.04134899, 0.04135, 2.04669134], [1516743180000, 0.04135, 0.0414, 0.04135, 0.0414, 0.03037344], [1516743240000, 0.0414, 0.0414, 0.0414, 0.0414, 1.02666337], [1516743300000, 0.0414, 0.0414, 0.04139999, 0.04139999, 0.05332675], [1516743420000, 0.04139999, 0.04139999, 0.04135, 0.04135, 12.64733338], [1516743480000, 0.0414, 0.0414, 0.0414, 0.0414, 0.02666217], [1516743540000, 0.0414, 0.0414, 0.0414, 0.0414, 0.69405842], [1516743600000, 0.0414, 0.04142463, 0.0414, 0.04142463, 1.82099365], [1516743660000, 0.04142463, 0.04142463, 0.04142463, 0.04142463, 0.25332438], [1516743720000, 0.04142463, 0.04142463, 0.04135102, 0.04142463, 3.70350621], [1516743780000, 0.04142463, 0.04142463, 0.04136101, 0.04142463, 0.29357559], [1516743840000, 0.04142463, 0.04146454, 0.04142463, 0.04146454, 0.46026647], [1516743900000, 0.04141283, 0.04141283, 0.04136111, 0.04141283, 0.29127382], [1516743960000, 0.04141283, 0.04141283, 0.04137, 0.04141283, 0.44910256], [1516744020000, 0.04141283, 0.0416, 0.04141283, 0.0416, 2.64661625], [1516744080000, 0.04137, 0.04137, 0.04137, 0.04137, 0.1369], [1516744140000, 0.04137, 0.0416, 0.04137, 0.0416, 0.77669455], [1516744260000, 0.04137001, 0.04137001, 0.04137001, 0.04137001, 6.37999999], [1516744320000, 0.04159999, 0.04159999, 0.04137002, 0.04137002, 0.61982256], [1516744380000, 0.04159999, 0.0416, 0.04137002, 0.0416, 0.77022146], [1516744440000, 0.0415, 0.04159998, 0.0415, 0.04150001, 6.1296399], [1516744500000, 0.04150001, 0.0416, 0.04150001, 0.0416, 3.80511689], [1516744560000, 0.04138002, 0.04138002, 0.04138002, 0.04138002, 0.24607449], [1516744620000, 0.04139115, 0.04139115, 0.04139115, 0.04139115, 0.33629361], [1516744680000, 0.04138002, 0.04139115, 0.04138002, 0.04139115, 1.10316635], [1516744800000, 0.04138002, 0.04159906, 0.04138002, 0.04159906, 0.50504504], [1516744860000, 0.04143913, 0.04159888, 0.04143913, 0.04143913, 0.72114836], [1516744920000, 0.04145537, 0.04159862, 0.04143913, 0.04159862, 9.48991412], [1516744980000, 0.04143914, 0.04158391, 0.04143914, 0.04143914, 0.37316633], [1516745040000, 0.04143914, 0.04143914, 0.04143913, 0.04143914, 9.15318035], [1516745100000, 0.04143913, 0.04143913, 0.04121, 0.04121, 50.09990641], [1516745160000, 0.04125, 0.04142898, 0.04120002, 0.04120002, 10.46242526], [1516745220000, 0.04120005, 0.04125051, 0.04120005, 0.04125051, 1.5576013], [1516745280000, 0.04120007, 0.04120007, 0.04120007, 0.04120007, 0.02675966], [1516745340000, 0.04120002, 0.04120002, 0.04120002, 0.04120002, 10.57972772], [1516745400000, 0.04124985, 0.04124985, 0.0411742, 0.0411742, 4.56920189], [1516745460000, 0.0411742, 0.04124945, 0.04113401, 0.04113401, 29.40180249], [1516745520000, 0.04113401, 0.04124918, 0.04110806, 0.04110806, 175.59803549], [1516745580000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 29.79726853], [1516745640000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 4.05885159], [1516745700000, 0.04110806, 0.04124945, 0.04110806, 0.04124945, 18.07887306], [1516745760000, 0.04110806, 0.04110806, 0.04110806, 0.04110806, 0.07445038], [1516745880000, 0.04110807, 0.04110807, 0.04110806, 0.04110807, 71.85363214], [1516745940000, 0.04110807, 0.04110807, 0.04090502, 0.04090504, 185.03437016], [1516746000000, 0.04091056, 0.04091056, 0.0408957, 0.04091047, 20.36261775], [1516746060000, 0.0408957, 0.04091047, 0.04079991, 0.04079991, 31.89398603], [1516746120000, 0.0407999, 0.0408, 0.04079986, 0.04079987, 17.0579286], [1516746180000, 0.04079987, 0.04084043, 0.0407, 0.04079962, 63.25007697], [1516746240000, 0.04091056, 0.04091056, 0.04091056, 0.04091056, 1.13930073], [1516746300000, 0.04091016, 0.04091025, 0.04091003, 0.04091003, 9.07732768], [1516746360000, 0.04090999, 0.04090999, 0.04071903, 0.04071903, 21.42096304], [1516746420000, 0.0408, 0.04091056, 0.0408, 0.0408, 6.51446232], [1516746480000, 0.04091054, 0.04091054, 0.04091054, 0.04091054, 0.14917198], [1516746540000, 0.04089999, 0.04089999, 0.04080001, 0.04080001, 0.97556935], [1516746600000, 0.04080001, 0.04080001, 0.04080001, 0.04080001, 0.0705], [1516746660000, 0.04089999, 0.04091056, 0.04080001, 0.04080001, 2.43432299], [1516746720000, 0.04091056, 0.04091056, 0.04091052, 0.04091052, 0.28639663], [1516746780000, 0.04091052, 0.04091056, 0.04091052, 0.04091056, 1.9356757], [1516746840000, 0.04091056, 0.04091056, 0.04091056, 0.04091056, 0.3325301], [1516746900000, 0.04091056, 0.04091056, 0.04086001, 0.04091056, 4.38989968], [1516746960000, 0.04091057, 0.04091057, 0.04091057, 0.04091057, 0.68580203], [1516747020000, 0.04091057, 0.04091057, 0.04091057, 0.04091057, 0.05395375], [1516747080000, 0.04091057, 0.04091057, 0.04091057, 0.04091057, 1.28326558], [1516747140000, 0.04091057, 0.04091057, 0.04091057, 0.04091057, 5.81930649], [1516747200000, 0.04106186, 0.04106186, 0.0410384, 0.04106186, 0.4953489], [1516747260000, 0.0410384, 0.0410384, 0.0410384, 0.0410384, 2.09962073], [1516747320000, 0.04110069, 0.04110069, 0.0410384, 0.04110058, 12.59382074], [1516747380000, 0.04110014, 0.04110014, 0.04110014, 0.04110014, 0.1989052], [1516747500000, 0.04106954, 0.04110067, 0.04106954, 0.04110067, 0.70967076], [1516747560000, 0.04110067, 0.04110068, 0.04106954, 0.04110068, 7.01731874], [1516747620000, 0.04110068, 0.04110068, 0.04106954, 0.04106954, 0.11582551], [1516747680000, 0.04109599, 0.04109599, 0.04106955, 0.04106955, 0.40664563], [1516747740000, 0.04106955, 0.04110054, 0.04106955, 0.04106955, 2.42869912], [1516747800000, 0.04106955, 0.04110054, 0.04106955, 0.04110054, 1.02691357], [1516747860000, 0.04106956, 0.04106956, 0.04106956, 0.04106956, 0.13605126], [1516747920000, 0.04106956, 0.04110053, 0.04106955, 0.04106956, 4.56784057], [1516747980000, 0.04106955, 0.04106955, 0.04106955, 0.04106955, 3.07027423], [1516748040000, 0.04106955, 0.04106955, 0.04106955, 0.04106955, 0.05368942], [1516748100000, 0.04107979, 0.0410798, 0.04107979, 0.0410798, 0.08051403], [1516748160000, 0.0410798, 0.04108492, 0.04078207, 0.04108492, 22.90643466], [1516748220000, 0.04109, 0.04109, 0.04108492, 0.04108492, 0.14731325], [1516748280000, 0.04108493, 0.04109004, 0.04108491, 0.04108491, 1.57099356], [1516748340000, 0.04108474, 0.04108475, 0.04108474, 0.04108475, 0.61409041], [1516748460000, 0.04092544, 0.04109004, 0.04092544, 0.04092544, 1.85856642], [1516748520000, 0.04092544, 0.04092544, 0.04092544, 0.04092544, 2.32788918], [1516748580000, 0.04092544, 0.04108495, 0.04092544, 0.04092544, 0.33530595], [1516748640000, 0.04092544, 0.04109003, 0.04092544, 0.04109003, 6.92273196], [1516748760000, 0.04108499, 0.04109004, 0.04108499, 0.04109004, 71.347288], [1516748820000, 0.04109001, 0.04109001, 0.04082412, 0.04082412, 0.11211551], [1516748880000, 0.04109003, 0.04109003, 0.04109003, 0.04109003, 0.05978235], [1516748940000, 0.04109003, 0.04109003, 0.04109003, 0.04109003, 0.657], [1516749000000, 0.04109003, 0.04109003, 0.04109003, 0.04109003, 0.19209189], [1516749060000, 0.04082102, 0.04082102, 0.04082102, 0.04082102, 0.01573298], [1516749120000, 0.04109003, 0.04109004, 0.04109003, 0.04109004, 0.45349086], [1516749180000, 0.04109004, 0.04109004, 0.04109004, 0.04109004, 1.91469241], [1516749240000, 0.04082101, 0.04082101, 0.04082101, 0.04082101, 39.72539382], [1516749360000, 0.04082101, 0.04082101, 0.04081101, 0.04081101, 1.98075443], [1516749420000, 0.04110053, 0.04110053, 0.04082109, 0.0408211, 0.2007153], [1516749480000, 0.0411005, 0.0411005, 0.040827, 0.0411005, 1.05869685], [1516749540000, 0.0411005, 0.0411005, 0.0411005, 0.0411005, 3.93163559], [1516749600000, 0.0411005, 0.041139, 0.0411005, 0.04113898, 32.69725099], [1516749660000, 0.04085115, 0.04085115, 0.04085115, 0.04085115, 0.0241], [1516749720000, 0.04084934, 0.04084934, 0.04084934, 0.04084934, 0.2482171], [1516749780000, 0.0408512, 0.0408512, 0.04085116, 0.04085116, 0.56835982], [1516749840000, 0.04085403, 0.04085403, 0.04085116, 0.04085116, 0.17605631], [1516749900000, 0.04113894, 0.04113894, 0.04085403, 0.04085406, 0.75911912], [1516749960000, 0.04086103, 0.04113891, 0.040803, 0.04085606, 43.39861244], [1516750020000, 0.04085605, 0.04085606, 0.04085605, 0.04085606, 7.934272], [1516750080000, 0.04085606, 0.04112898, 0.04085606, 0.04112898, 13.55230407], [1516750140000, 0.04112007, 0.04112007, 0.04112007, 0.04112007, 0.20136477], [1516750200000, 0.040979, 0.04111506, 0.04085, 0.04111505, 37.57895165], [1516750380000, 0.04110499, 0.04110499, 0.04110499, 0.04110499, 0.01943399], [1516750440000, 0.04096645, 0.04096645, 0.04096645, 0.04096645, 0.10286638], [1516750500000, 0.04109999, 0.04109999, 0.04109999, 0.04109999, 0.726618], [1516750800000, 0.04108995, 0.04108995, 0.04108995, 0.04108995, 0.2433688], [1516750860000, 0.04109499, 0.04109499, 0.04109499, 0.04109499, 0.04866], [1516750920000, 0.04090001, 0.04097909, 0.04088101, 0.04095001, 1.61459948], [1516750980000, 0.04097908, 0.04097908, 0.04089, 0.04089, 11.78858391], [1516751040000, 0.04089, 0.04089, 0.0408681, 0.0408681, 7.15465785], [1516751100000, 0.0408681, 0.0408681, 0.0408681, 0.0408681, 0.31589144], [1516751160000, 0.0408681, 0.0408681, 0.0408681, 0.0408681, 1.83569602], [1516751220000, 0.0408681, 0.040881, 0.0408681, 0.0408681, 0.97210231], [1516751340000, 0.04086809, 0.04086809, 0.040708, 0.040708, 0.26206892], [1516751460000, 0.04088069, 0.04088069, 0.04088069, 0.04088069, 0.02767459], [1516751580000, 0.04088069, 0.04088069, 0.04088069, 0.04088069, 0.04285371], [1516751640000, 0.04088059, 0.04088059, 0.04079433, 0.04079434, 8.50199594], [1516751700000, 0.04079434, 0.04079434, 0.04079433, 0.04079433, 2.5886612], [1516751760000, 0.04079433, 0.04079433, 0.04070801, 0.04079431, 2.28924552], [1516751820000, 0.04079431, 0.04079431, 0.0407943, 0.0407943, 0.48794355], [1516751880000, 0.04079431, 0.04079431, 0.0407943, 0.0407943, 1.80282567], [1516751940000, 0.04070801, 0.04070801, 0.040708, 0.040708, 1.76087352], [1516752000000, 0.04068201, 0.040708, 0.040682, 0.040708, 1.71017473], [1516752060000, 0.04070799, 0.040708, 0.04069001, 0.04070799, 0.48525298], [1516752120000, 0.04070799, 0.040708, 0.04069001, 0.04069001, 11.66951038], [1516752180000, 0.04069, 0.04070799, 0.04068201, 0.04068201, 7.451309], [1516752240000, 0.04068202, 0.04070799, 0.04068202, 0.04070799, 0.25897813], [1516752300000, 0.04070799, 0.04070799, 0.04070799, 0.04070799, 0.49130392], [1516752360000, 0.04070799, 0.04070799, 0.040695, 0.040695, 0.13732456], [1516752420000, 0.04070799, 0.04070799, 0.04069502, 0.04069502, 2.04480786], [1516752480000, 0.04069502, 0.04069502, 0.04040398, 0.04069502, 106.19151306], [1516752540000, 0.04069501, 0.04069501, 0.04060599, 0.040606, 2.66795759], [1516752600000, 0.040606, 0.04069495, 0.040606, 0.04069495, 0.6854849], [1516752660000, 0.04069501, 0.04069501, 0.040606, 0.040606, 0.28543098], [1516752720000, 0.04069099, 0.04069099, 0.040406, 0.04040802, 5.04397102], [1516752780000, 0.04059899, 0.04059899, 0.04040802, 0.04040803, 10.93271008], [1516752840000, 0.04040851, 0.04058499, 0.04040851, 0.04058499, 0.40912273], [1516752900000, 0.04058, 0.04058, 0.04057998, 0.04057998, 2.74639645], [1516752960000, 0.04045001, 0.04057499, 0.04045001, 0.04057499, 0.51907652], [1516753020000, 0.0404275, 0.0404275, 0.04042748, 0.0404275, 21.36519747], [1516753080000, 0.04042748, 0.04042749, 0.04040803, 0.04040803, 10.80154764], [1516753140000, 0.04040802, 0.04040803, 0.04040802, 0.04040802, 2.37782614], [1516753200000, 0.04040781, 0.04040802, 0.040392, 0.040392, 7.18030058], [1516753260000, 0.04039201, 0.04040803, 0.040392, 0.04040803, 17.35417271], [1516753320000, 0.04039201, 0.04040801, 0.04039201, 0.04040801, 4.57362683], [1516753380000, 0.04040802, 0.04040802, 0.040408, 0.040408, 1.84665617], [1516753440000, 0.04040799, 0.04040799, 0.04040799, 0.04040799, 0.061], [1516753500000, 0.04039201, 0.04039201, 0.04035312, 0.04035312, 6.25180823], [1516753560000, 0.04026416, 0.04040798, 0.04023222, 0.04023222, 1.05556417], [1516753620000, 0.04023222, 0.04040798, 0.0402222, 0.04022621, 12.06583953], [1516753680000, 0.04022625, 0.04022625, 0.04022625, 0.04022625, 2.28648173], [1516753740000, 0.04022625, 0.04022626, 0.04022625, 0.04022626, 0.53786779], [1516753800000, 0.04040797, 0.04040802, 0.04040797, 0.04040802, 3.07329713], [1516753920000, 0.040408, 0.040408, 0.040408, 0.040408, 0.04845171], [1516754040000, 0.04040799, 0.04040799, 0.04040799, 0.04040799, 3.47893529], [1516754100000, 0.040408, 0.040408, 0.040408, 0.040408, 0.97343709], [1516754160000, 0.040408, 0.04040801, 0.040408, 0.04040801, 37.87895815], [1516754220000, 0.04040801, 0.04040801, 0.04040801, 0.04040801, 9.70857769], [1516754280000, 0.04040801, 0.04040801, 0.04040801, 0.04040801, 13.75992508], [1516754340000, 0.040408, 0.04040801, 0.040408, 0.040408, 1.05117156], [1516754400000, 0.04040801, 0.04040801, 0.040408, 0.040408, 8.71477179], [1516754460000, 0.040408, 0.040408, 0.040408, 0.040408, 1.66545905], [1516754640000, 0.04059999, 0.04059999, 0.04059999, 0.04059999, 0.04679804], [1516754700000, 0.04059999, 0.04059999, 0.04041805, 0.04041805, 0.64312241], [1516754760000, 0.04041805, 0.04041805, 0.04041805, 0.04041805, 0.00077611], [1516754820000, 0.04059999, 0.04059999, 0.04059999, 0.04059999, 0.0180746], [1516754880000, 0.04040802, 0.04059999, 0.04040802, 0.04059999, 6.27606682], [1516754940000, 0.04059998, 0.04059998, 0.04059998, 0.04059998, 0.18226605], [1516755000000, 0.04059998, 0.04059998, 0.04059997, 0.04059997, 0.52955665], [1516755060000, 0.04052362, 0.04052362, 0.04052362, 0.04052362, 0.02720636], [1516755120000, 0.04052362, 0.04052362, 0.040408, 0.04052362, 13.4455496], [1516755180000, 0.04052363, 0.04052363, 0.04052362, 0.04052363, 0.63189717], [1516755240000, 0.04052362, 0.04060601, 0.04052362, 0.0406, 3.54263636], [1516755300000, 0.04060601, 0.04060601, 0.04059999, 0.04059999, 0.83965371], [1516755360000, 0.04060601, 0.04060601, 0.04059999, 0.04060601, 0.94267544], [1516755420000, 0.04059999, 0.04060601, 0.04059999, 0.04059999, 0.25681356], [1516755480000, 0.04060601, 0.04060601, 0.04059999, 0.04060601, 0.2377782], [1516755540000, 0.04059999, 0.04059999, 0.04059999, 0.04059999, 0.47495026], [1516755600000, 0.04052362, 0.04059999, 0.04052362, 0.04059999, 0.18465969], [1516755660000, 0.04059998, 0.04059999, 0.04059998, 0.04059999, 0.07251764], [1516755780000, 0.04059998, 0.04059999, 0.04059998, 0.04059999, 1.37511322], [1516755840000, 0.04059998, 0.04059998, 0.04059998, 0.04059998, 0.01425128], [1516755900000, 0.04059995, 0.04059995, 0.04059995, 0.04059995, 0.24630602], [1516755960000, 0.04059995, 0.04059995, 0.04059995, 0.04059995, 0.24630572], [1516756080000, 0.0405999, 0.0405999, 0.0405999, 0.0405999, 0.07089759], [1516756140000, 0.04059989, 0.04059989, 0.04059989, 0.04059989, 0.01608528], [1516756200000, 0.04059988, 0.04059988, 0.04040798, 0.04040798, 0.45508231], [1516756260000, 0.040418, 0.040418, 0.040418, 0.040418, 0.38187267], [1516756320000, 0.040418, 0.04045841, 0.040418, 0.04045841, 0.65], [1516756380000, 0.04040798, 0.04045841, 0.04040798, 0.04045841, 0.45024546], [1516756440000, 0.04040799, 0.04045841, 0.04040799, 0.04040799, 0.85888984], [1516756500000, 0.04045841, 0.04057979, 0.04045841, 0.04057979, 5.11522055], [1516756560000, 0.04057977, 0.04059987, 0.040408, 0.040408, 4.20073707], [1516756620000, 0.04059987, 0.04059987, 0.04040797, 0.040596, 0.84943671], [1516756680000, 0.04040797, 0.04059987, 0.04040797, 0.04059987, 2.68169438], [1516756740000, 0.04059987, 0.04059987, 0.04059987, 0.04059987, 0.074128], [1516756800000, 0.04059599, 0.04059599, 0.04059599, 0.04059599, 0.09198204], [1516756860000, 0.04056656, 0.04056656, 0.04056656, 0.04056656, 0.02395565], [1516756920000, 0.04056653, 0.04056658, 0.04056653, 0.04056658, 0.91615118], [1516757040000, 0.04040797, 0.04040797, 0.04040797, 0.04040797, 0.68880958], [1516757100000, 0.04040797, 0.04040797, 0.04040797, 0.04040797, 0.6631347], [1516757220000, 0.04056658, 0.04056658, 0.04056658, 0.04056658, 2.27672762], [1516757280000, 0.04040798, 0.04040798, 0.04040798, 0.04040798, 0.60928264], [1516757340000, 0.04040808, 0.04056658, 0.04040808, 0.04040818, 0.52348297], [1516757400000, 0.04040818, 0.04056658, 0.04040798, 0.04056658, 0.43987064], [1516757460000, 0.04040798, 0.04040798, 0.04040797, 0.04040798, 1.47141516], [1516757520000, 0.04056658, 0.04056658, 0.04040798, 0.04040798, 0.28128693], [1516757580000, 0.04056658, 0.04059988, 0.04040798, 0.04040798, 17.24533386], [1516757640000, 0.04040798, 0.04059988, 0.04040798, 0.04059988, 0.54573621], [1516757760000, 0.04040798, 0.04059986, 0.04040798, 0.04059986, 0.13498412], [1516757820000, 0.04040798, 0.04040798, 0.04040798, 0.04040798, 3.48555366], [1516757880000, 0.04058899, 0.04058899, 0.04058899, 0.04058899, 0.09872857], [1516758000000, 0.04058899, 0.04059899, 0.04058899, 0.04059899, 0.62052973], [1516758060000, 0.04059301, 0.04059899, 0.04035236, 0.04035236, 2.19422648], [1516758120000, 0.04059899, 0.04059899, 0.04059899, 0.04059899, 0.03545211], [1516758180000, 0.04045, 0.04059899, 0.04035236, 0.04059899, 2.76212891], [1516758240000, 0.04035236, 0.04035236, 0.04035236, 0.04035236, 0.46926022], [1516758300000, 0.04035237, 0.04035237, 0.04029209, 0.04029209, 5.53432326], [1516758420000, 0.0403455, 0.0403455, 0.040211, 0.04021502, 12.82315413], [1516758480000, 0.040556, 0.040556, 0.04021101, 0.04051868, 5.27545354], [1516758540000, 0.04051867, 0.04051867, 0.04051867, 0.04051867, 0.0277321], [1516758600000, 0.04021332, 0.04051863, 0.04021332, 0.04021332, 1.65178162], [1516758660000, 0.04051856, 0.04060601, 0.04051856, 0.04051869, 21.68606468], [1516758720000, 0.04051869, 0.04051869, 0.040218, 0.04034478, 4.71181882], [1516758780000, 0.04023001, 0.04055399, 0.04021101, 0.040292, 16.26279723], [1516758840000, 0.0402211, 0.04069601, 0.0402211, 0.04063551, 19.69074763], [1516758900000, 0.04035372, 0.04063548, 0.04035372, 0.04035479, 0.5977297], [1516758960000, 0.04063548, 0.040762, 0.04035125, 0.04063551, 32.37420002], [1516759080000, 0.04063099, 0.040722, 0.04063099, 0.040722, 55.02679827], [1516759140000, 0.04072199, 0.040722, 0.040221, 0.04035082, 34.07364207], [1516759200000, 0.04035082, 0.04051806, 0.04035081, 0.04051806, 4.65581945], [1516759260000, 0.04051806, 0.04051806, 0.04051806, 0.04051806, 0.16334799], [1516759320000, 0.04051806, 0.04051806, 0.04051806, 0.04051806, 3.15338576], [1516759380000, 0.04051806, 0.04051806, 0.04051806, 0.04051806, 1.66900635], [1516759440000, 0.04051806, 0.04051806, 0.04051806, 0.04051806, 2.60636255], [1516759560000, 0.04054498, 0.04054498, 0.04054498, 0.04054498, 0.01971939], [1516759620000, 0.04054498, 0.04054498, 0.04054498, 0.04054498, 0.02614262], [1516759740000, 0.04049999, 0.04049999, 0.04049998, 0.04049998, 0.1052604], [1516759800000, 0.04049998, 0.04049998, 0.04049998, 0.04049998, 0.25538525], [1516759860000, 0.04049997, 0.04049997, 0.04049997, 0.04049997, 0.01684698], [1516759920000, 0.04049996, 0.04049996, 0.04022505, 0.04049995, 0.45696301], [1516760040000, 0.04049994, 0.04049996, 0.0402219, 0.04049996, 1.17791949], [1516760100000, 0.0403426, 0.04049993, 0.04022, 0.04022701, 6.99936506], [1516760160000, 0.04022701, 0.04022701, 0.04022701, 0.04022701, 0.07340456], [1516760220000, 0.04042126, 0.04042126, 0.04042126, 0.04042126, 0.14725612], [1516760280000, 0.04042126, 0.04042126, 0.04021724, 0.04021724, 0.26706623], [1516760340000, 0.040226, 0.0405, 0.04021798, 0.04042125, 2.40664035], [1516760400000, 0.04042125, 0.0405, 0.04042125, 0.04045949, 0.99618132], [1516760460000, 0.0404595, 0.04049999, 0.0404595, 0.0404595, 0.30632435], [1516760580000, 0.04049999, 0.04049999, 0.0403202, 0.0403202, 1.01692426], [1516760640000, 0.0403202, 0.0403202, 0.0403202, 0.0403202, 0.02405299], [1516760760000, 0.0403202, 0.0403202, 0.04021101, 0.04029749, 1.153029], [1516760820000, 0.04049998, 0.04049998, 0.04049998, 0.04049998, 0.09872333], [1516760880000, 0.04049998, 0.04049998, 0.04049998, 0.04049998, 0.1], [1516761000000, 0.04049997, 0.04049999, 0.04049997, 0.04049999, 1.01057789], [1516761060000, 0.04049997, 0.04049999, 0.04039873, 0.04039873, 1.06073354], [1516761120000, 0.04049999, 0.04049999, 0.04049999, 0.04049999, 0.01719607], [1516761180000, 0.04049999, 0.04049999, 0.04049999, 0.04049999, 0.01711774], [1516761240000, 0.04037504, 0.04049899, 0.04037503, 0.04049899, 0.45660005], [1516761300000, 0.04049494, 0.04049494, 0.040219, 0.040219, 2.6282336], [1516761360000, 0.04037503, 0.04037503, 0.04037503, 0.04037503, 0.794999], [1516761420000, 0.04037503, 0.04037503, 0.04029999, 0.04029999, 2.95763496], [1516761480000, 0.0403, 0.04049999, 0.0403, 0.04049999, 3.04569767], [1516761540000, 0.04049999, 0.04049999, 0.04029998, 0.04029998, 1.31877971], [1516761600000, 0.04049999, 0.04049999, 0.04021601, 0.04022, 3.41016802], [1516761660000, 0.04022, 0.04022001, 0.04021601, 0.04022001, 1.90375891], [1516761720000, 0.04022001, 0.04049995, 0.04022001, 0.04022004, 0.5451543], [1516761780000, 0.04048998, 0.04048998, 0.04022004, 0.04022004, 1.34501506], [1516761840000, 0.04022004, 0.04022004, 0.04022004, 0.04022004, 1.80453106], [1516761900000, 0.04022004, 0.04022004, 0.04022004, 0.04022004, 11.70409183], [1516761960000, 0.04022004, 0.04022004, 0.04022004, 0.04022004, 2.83989554], [1516762020000, 0.04022004, 0.04022004, 0.04022004, 0.04022004, 4.16698515], [1516762080000, 0.04022004, 0.04022004, 0.04022004, 0.04022004, 1.25244498], [1516762140000, 0.04022004, 0.04022004, 0.04022004, 0.04022004, 0.44742188], [1516762200000, 0.04022004, 0.04022004, 0.04022004, 0.04022004, 0.34987], [1516762320000, 0.04022003, 0.04022004, 0.04022003, 0.04022004, 0.9073292], [1516762380000, 0.04022004, 0.04022004, 0.04022003, 0.04022004, 3.86187459], [1516762440000, 0.04022004, 0.04022004, 0.04022004, 0.04022004, 6.62155243], [1516762500000, 0.04022004, 0.04022004, 0.04022004, 0.04022004, 20.15167108], [1516762560000, 0.04022004, 0.04022004, 0.04022004, 0.04022004, 0.124], [1516762620000, 0.04022004, 0.04022004, 0.04022004, 0.04022004, 2.75344168], [1516762680000, 0.04022004, 0.04046989, 0.04022004, 0.04022009, 11.73438488], [1516762740000, 0.04022009, 0.04038378, 0.04022005, 0.04022005, 2.0433093], [1516762800000, 0.04048995, 0.04048995, 0.04048995, 0.04048995, 0.30966318], [1516762860000, 0.04048992, 0.04048992, 0.04048992, 0.04048992, 0.04313747], [1516762920000, 0.04049493, 0.04049493, 0.04049493, 0.04049493, 0.02286365], [1516762980000, 0.04049483, 0.04049483, 0.04049483, 0.04049483, 0.053569], [1516763040000, 0.04049482, 0.04049488, 0.04049482, 0.04049488, 2.47], [1516763100000, 0.04049481, 0.04049481, 0.04049481, 0.04049481, 0.32178567], [1516763160000, 0.04049481, 0.04049481, 0.04049481, 0.04049481, 0.1192284], [1516763220000, 0.04049481, 0.04049481, 0.04049481, 0.04049481, 0.21555403], [1516763280000, 0.04049, 0.04049, 0.04049, 0.04049, 0.01986476], [1516763340000, 0.0402693, 0.0402693, 0.0402693, 0.0402693, 0.02450124], [1516763400000, 0.0404948, 0.04049482, 0.0404948, 0.04049481, 2.24694528], [1516763460000, 0.0402693, 0.040494, 0.0402693, 0.040494, 0.55879787], [1516763580000, 0.04028755, 0.04028755, 0.0402693, 0.0402693, 0.12956097], [1516763640000, 0.0402693, 0.0402693, 0.0402693, 0.0402693, 0.148707], [1516763700000, 0.0402693, 0.04063318, 0.0402693, 0.04026936, 7.59035064], [1516763760000, 0.04026936, 0.04053248, 0.04026929, 0.04053248, 8.16777927], [1516763820000, 0.04034852, 0.04047081, 0.04026933, 0.04026933, 0.12883483], [1516763880000, 0.04022004, 0.04022004, 0.04022004, 0.04022004, 0.0536356], [1516763940000, 0.0404708, 0.0404708, 0.04022501, 0.04023001, 1.99663366], [1516764000000, 0.0404708, 0.040684, 0.04026933, 0.04027901, 93.96807088], [1516764060000, 0.04027902, 0.040613, 0.04027902, 0.040361, 5.74162759], [1516764120000, 0.04036105, 0.040613, 0.04035101, 0.04035101, 31.88431658], [1516764180000, 0.04049116, 0.04061299, 0.04035612, 0.04035613, 23.03849548], [1516764240000, 0.04036101, 0.04036101, 0.04036101, 0.04036101, 19.3481009], [1516764360000, 0.04035614, 0.04035614, 0.04034624, 0.04034624, 63.64095321], [1516764420000, 0.04066299, 0.04066299, 0.0403463, 0.0403463, 6.69543032], [1516764480000, 0.04034635, 0.04034635, 0.04034635, 0.04034635, 0.1], [1516764600000, 0.04067795, 0.04068293, 0.0406779, 0.04067796, 2.12713503], [1516764660000, 0.04067796, 0.040723, 0.040381, 0.04071299, 12.85796379], [1516764720000, 0.04051462, 0.04051462, 0.04034637, 0.04034637, 6.57311412], [1516764780000, 0.0403463, 0.0405736, 0.0403463, 0.0405736, 5.66166051], [1516764840000, 0.04034632, 0.04034632, 0.04034632, 0.04034632, 0.025], [1516764900000, 0.04065008, 0.04065008, 0.04065008, 0.04065008, 0.24600185], [1516764960000, 0.04067499, 0.04067499, 0.04067499, 0.04067499, 2.30567614], [1516765020000, 0.0403464, 0.0403464, 0.04034631, 0.04034631, 0.25795487], [1516765140000, 0.0403464, 0.0403464, 0.0403464, 0.0403464, 0.20009564], [1516765380000, 0.04066556, 0.0406659, 0.04066556, 0.0406659, 0.37730608], [1516765440000, 0.04066556, 0.04066556, 0.04066556, 0.04066556, 13.52764931], [1516765500000, 0.04066556, 0.04066556, 0.04066556, 0.04066556, 10.77076216], [1516765560000, 0.04066556, 0.04066556, 0.04066556, 0.04066556, 0.29242166], [1516765680000, 0.04065997, 0.04065997, 0.04065997, 0.04065997, 0.1], [1516765800000, 0.04055832, 0.04055832, 0.04055832, 0.04055832, 0.05687889], [1516765860000, 0.04034744, 0.04055833, 0.04034744, 0.04055832, 6.9513242], [1516765920000, 0.04055832, 0.0406, 0.04055831, 0.04055831, 0.06323539], [1516766040000, 0.0405583, 0.04062, 0.0403475, 0.0403475, 27.73111331], [1516766160000, 0.0404685, 0.0404685, 0.04034747, 0.04034747, 35.61758365], [1516766220000, 0.04059442, 0.04061999, 0.04059442, 0.04061997, 2.03413101], [1516766280000, 0.04061998, 0.04062, 0.0403475, 0.0403475, 48.88347526], [1516766340000, 0.04034747, 0.0403475, 0.04034747, 0.04034747, 1.16501262], [1516766400000, 0.04034749, 0.04062, 0.0401311, 0.040133, 51.33776284], [1516766460000, 0.040135, 0.04013514, 0.04013418, 0.04013514, 4.01111985], [1516766520000, 0.04060698, 0.04060698, 0.04014701, 0.04059699, 1.30387189], [1516766580000, 0.04021701, 0.04021701, 0.040217, 0.040217, 0.1001], [1516766640000, 0.04059691, 0.04059698, 0.04059691, 0.04059698, 9.82633498], [1516766700000, 0.04059695, 0.04059695, 0.04059695, 0.04059695, 0.0598646], [1516766760000, 0.04059692, 0.040606, 0.04059692, 0.040606, 12.28299014], [1516766820000, 0.040615, 0.040615, 0.04030598, 0.04060499, 1.17659071], [1516766880000, 0.040306, 0.040665, 0.040306, 0.040665, 7.5241809], [1516766940000, 0.04060999, 0.04060999, 0.04060998, 0.04060998, 0.08916308], [1516767000000, 0.04060997, 0.040656, 0.04060997, 0.040656, 0.24624476], [1516767060000, 0.04066555, 0.04066555, 0.04066555, 0.04066555, 0.07720344], [1516767120000, 0.04066556, 0.040752, 0.04037765, 0.04060998, 16.3575834], [1516767180000, 0.04070599, 0.04076199, 0.0404, 0.040415, 32.46834594], [1516767240000, 0.040415, 0.040415, 0.04037967, 0.040415, 2.76399699], [1516767300000, 0.04068898, 0.04068898, 0.04068898, 0.04068898, 0.24576666], [1516767480000, 0.040418, 0.040418, 0.040418, 0.040418, 0.56439447], [1516767540000, 0.040415, 0.040418, 0.040415, 0.040415, 0.54938799], [1516767600000, 0.04041501, 0.04063399, 0.04041501, 0.04041502, 0.79680248], [1516767660000, 0.04041502, 0.04062399, 0.04041502, 0.04041504, 3.02063777], [1516767720000, 0.040585, 0.04059998, 0.04041504, 0.04059997, 13.12966979], [1516767780000, 0.04041504, 0.04059994, 0.04041504, 0.04059994, 0.28748811], [1516767840000, 0.04041504, 0.04050749, 0.04041504, 0.04050749, 0.4803606], [1516767900000, 0.04059696, 0.04059697, 0.04041504, 0.04041504, 0.54570098], [1516767960000, 0.04041504, 0.04041504, 0.04041504, 0.04041504, 0.0545589], [1516768020000, 0.04041504, 0.04041504, 0.04041504, 0.04041504, 1.1645589], [1516768080000, 0.04041504, 0.04054199, 0.04013226, 0.04013237, 7.54841273], [1516768200000, 0.040512, 0.04051698, 0.04028261, 0.04051698, 21.60119183], [1516768260000, 0.04051697, 0.04051698, 0.04051697, 0.04051698, 3.36248385], [1516768320000, 0.04051696, 0.04051696, 0.040192, 0.040192, 0.04510216], [1516768380000, 0.04050043, 0.04051698, 0.04022783, 0.04024, 65.28317346], [1516768440000, 0.04023881, 0.040532, 0.04023881, 0.04024402, 25.11336046], [1516768500000, 0.04035387, 0.04035387, 0.040244, 0.040245, 6.64479122], [1516768560000, 0.04034664, 0.04051854, 0.040191, 0.04051854, 9.95369824], [1516768620000, 0.04020101, 0.04021102, 0.04020101, 0.04021102, 0.90515212], [1516768680000, 0.04021103, 0.04021103, 0.04019602, 0.040201, 12.02398326], [1516768740000, 0.04049998, 0.04049998, 0.04049998, 0.04049998, 0.08458201], [1516768800000, 0.04049998, 0.04049998, 0.04049998, 0.04049998, 0.31233403], [1516768860000, 0.04049998, 0.04049998, 0.04049998, 0.04049998, 0.36882619], [1516769100000, 0.04047489, 0.04049497, 0.04020601, 0.04049497, 31.43866214], [1516769160000, 0.040485, 0.04049497, 0.040485, 0.04049497, 61.92375037], [1516769220000, 0.04053199, 0.04062619, 0.04053199, 0.04062619, 6.76438401], [1516769280000, 0.04062618, 0.04062619, 0.04033007, 0.04033007, 2.47162152], [1516769340000, 0.04033007, 0.04033007, 0.04033007, 0.04033007, 0.71550669], [1516769400000, 0.04033007, 0.04033007, 0.04033007, 0.04033007, 0.27531041], [1516769460000, 0.04033007, 0.0403704, 0.04029615, 0.04029615, 1.14995391], [1516769520000, 0.04033007, 0.04033007, 0.04029616, 0.04033007, 0.11508611], [1516769580000, 0.04033007, 0.04033007, 0.04029617, 0.04033007, 0.84931948], [1516769640000, 0.04033007, 0.04033007, 0.04033007, 0.04033007, 0.02736011], [1516769700000, 0.04033007, 0.04033007, 0.04033007, 0.04033007, 0.10174629], [1516769760000, 0.04033007, 0.04033007, 0.04033007, 0.04033007, 0.07239593], [1516769820000, 0.04033007, 0.04033007, 0.04029621, 0.04033007, 0.40994458], [1516769880000, 0.04033007, 0.04033007, 0.04033006, 0.04033007, 1.98290415], [1516769940000, 0.04029624, 0.04033007, 0.04023123, 0.04033007, 39.97565446], [1516770000000, 0.04024101, 0.04033007, 0.040236, 0.04033007, 97.15087154], [1516770060000, 0.04033007, 0.04060099, 0.04030624, 0.04030624, 16.54395512], [1516770120000, 0.04023105, 0.04023106, 0.04012453, 0.04012453, 26.49380411], [1516770180000, 0.04013016, 0.04030624, 0.04013, 0.04030624, 10.98720684], [1516770240000, 0.04030624, 0.04030624, 0.04013121, 0.04030624, 16.18544324], [1516770300000, 0.04017048, 0.04030624, 0.04017047, 0.04021877, 17.5530519], [1516770360000, 0.04030624, 0.04030625, 0.04017276, 0.04017277, 73.63761078], [1516770420000, 0.04030625, 0.04030625, 0.04030625, 0.04030625, 12.32680269], [1516770480000, 0.04018001, 0.040526, 0.04018001, 0.040526, 0.88354018], [1516770540000, 0.04018004, 0.04038094, 0.04018, 0.04018, 4.55309238], [1516770600000, 0.04051896, 0.04051896, 0.04020829, 0.04020833, 1.20631572], [1516770660000, 0.04018003, 0.04018003, 0.04018003, 0.04018003, 1.95784019], [1516770780000, 0.04018012, 0.04030066, 0.04018005, 0.04018013, 1.16493645], [1516770840000, 0.04018013, 0.04028083, 0.04018013, 0.04028083, 1.05274708], [1516770900000, 0.04031638, 0.04048168, 0.04031638, 0.04048168, 0.24803801], [1516770960000, 0.04028083, 0.04048167, 0.04018013, 0.04048167, 0.42245143], [1516771020000, 0.04018012, 0.04050084, 0.04018012, 0.04048155, 1.23667268], [1516771080000, 0.04048156, 0.04048156, 0.04048156, 0.04048156, 0.25303409], [1516771140000, 0.04048156, 0.04048156, 0.04020739, 0.04020739, 0.83179285], [1516771200000, 0.04048152, 0.04048157, 0.04018183, 0.0404815, 5.40152286], [1516771260000, 0.0404815, 0.0404815, 0.04019052, 0.04019052, 0.39107392], [1516771320000, 0.04018002, 0.040201, 0.04018001, 0.040201, 1.53509721], [1516771380000, 0.04047694, 0.04047694, 0.040201, 0.040201, 10.95398995], [1516771440000, 0.040201, 0.040201, 0.040201, 0.040201, 7.39317332], [1516771500000, 0.040201, 0.04047694, 0.040201, 0.040201, 15.85906463], [1516771560000, 0.04047693, 0.04047693, 0.04047693, 0.04047693, 0.07921205], [1516771620000, 0.040206, 0.040206, 0.040206, 0.040206, 0.0352], [1516771680000, 0.04047693, 0.04047693, 0.04047693, 0.04047693, 0.51621171], [1516771800000, 0.04047688, 0.04047688, 0.04047686, 0.04047688, 0.51920024], [1516771860000, 0.04021101, 0.04021101, 0.04021101, 0.04021101, 0.05006857], [1516771920000, 0.04047686, 0.04047686, 0.04047686, 0.04047686, 0.01915325], [1516772100000, 0.04047686, 0.04047686, 0.04047686, 0.04047686, 0.24705449], [1516772160000, 0.04021103, 0.04021103, 0.04021103, 0.04021103, 0.15052279], [1516772220000, 0.04021103, 0.04029, 0.04021103, 0.04021103, 2.65766613], [1516772340000, 0.040216, 0.040216, 0.040216, 0.040216, 0.39295819], [1516772400000, 0.04028999, 0.04028999, 0.040221, 0.040221, 0.7948712], [1516772460000, 0.0402555, 0.0402555, 0.040221, 0.040221, 7.52514155], [1516772700000, 0.04022101, 0.04047685, 0.04022101, 0.04022101, 0.41942092], [1516772760000, 0.04022101, 0.04022101, 0.04022101, 0.04022101, 1.08310985], [1516772820000, 0.04022101, 0.04022101, 0.04022101, 0.04022101, 0.01849236], [1516772880000, 0.040221, 0.04022101, 0.040221, 0.04022101, 0.18520466], [1516772940000, 0.04041325, 0.04041325, 0.04041325, 0.04041325, 0.68479343], [1516773000000, 0.04041325, 0.04041325, 0.04041324, 0.04041324, 0.27674596], [1516773060000, 0.04041322, 0.04041322, 0.04041322, 0.04041322, 0.08245341], [1516773120000, 0.04041322, 0.04041323, 0.040221, 0.04041322, 1.40252895], [1516773180000, 0.04022, 0.04022, 0.04022, 0.04022, 1.34328032], [1516773240000, 0.04022, 0.04022, 0.04022, 0.04022, 1.16215193], [1516773420000, 0.04041314, 0.040542, 0.04041314, 0.040542, 2.72889374], [1516773600000, 0.04053774, 0.04053775, 0.04053774, 0.04053775, 0.4933679], [1516773660000, 0.04022006, 0.04053775, 0.04022, 0.04053775, 1.57420645], [1516773720000, 0.04051497, 0.04051497, 0.04051493, 0.04051493, 0.17848635], [1516773780000, 0.04022003, 0.04022003, 0.04022002, 0.04022002, 0.53017588], [1516773840000, 0.04022003, 0.04022003, 0.04022003, 0.04022003, 0.08031456], [1516773900000, 0.04051493, 0.04051493, 0.04051492, 0.04051492, 0.4937662], [1516774080000, 0.04050382, 0.04050382, 0.04050382, 0.04050382, 0.4215726], [1516774140000, 0.0404, 0.0404, 0.0404, 0.0404, 0.0545792], [1516774200000, 0.0404, 0.0404, 0.0404, 0.0404, 0.726999], [1516774440000, 0.0402204, 0.04039999, 0.0402204, 0.04039999, 0.87303908], [1516774620000, 0.04023797, 0.04023797, 0.04018, 0.04018001, 8.36475424], [1516774680000, 0.04018002, 0.04018002, 0.04018002, 0.04018002, 0.20454105], [1516774800000, 0.04039999, 0.0404, 0.04039999, 0.0404, 0.63850436], [1516774860000, 0.0401801, 0.0401801, 0.0401801, 0.0401801, 0.06053339], [1516774920000, 0.0401801, 0.0401801, 0.0401801, 0.0401801, 0.10003489], [1516774980000, 0.04039999, 0.0404, 0.04018032, 0.0404, 2.05407075], [1516775040000, 0.0404, 0.0404, 0.04039999, 0.0404, 4.27368187], [1516775100000, 0.0404, 0.0405049, 0.04039999, 0.04039999, 1.34107131], [1516775160000, 0.04039999, 0.04041779, 0.04033458, 0.04041779, 2.32204882], [1516775220000, 0.04018772, 0.0405049, 0.04018772, 0.0405049, 4.17340233], [1516775280000, 0.04018781, 0.04018781, 0.04018766, 0.04018781, 6.61114523], [1516775340000, 0.04039974, 0.04039974, 0.04039974, 0.04039974, 0.10007773], [1516775400000, 0.04050398, 0.04050398, 0.040499, 0.040499, 4.00800098], [1516775460000, 0.04030837, 0.0405, 0.04030837, 0.0405, 1.74053969], [1516775520000, 0.04045231, 0.04045231, 0.04045231, 0.04045231, 0.02725432], [1516775580000, 0.04045231, 0.04049578, 0.04045231, 0.04045231, 0.1487208], [1516775640000, 0.040497, 0.040497, 0.04047565, 0.04047565, 1.89947656], [1516775700000, 0.04047565, 0.0406122, 0.04047565, 0.0406122, 28.4004588], [1516775760000, 0.04047565, 0.04047565, 0.04047565, 0.04047565, 0.03166875], [1516775820000, 0.04061199, 0.04061199, 0.04061199, 0.04061199, 1.70302234], [1516775880000, 0.04061199, 0.0406122, 0.04047565, 0.04047565, 1.85009093], [1516775940000, 0.04047565, 0.04047565, 0.04047565, 0.04047565, 0.0500142], [1516776000000, 0.04047565, 0.040612, 0.04047565, 0.040612, 0.68081246], [1516776060000, 0.04047565, 0.040612, 0.04047565, 0.04047565, 29.51529805], [1516776120000, 0.04061199, 0.04061199, 0.04061199, 0.04061199, 1.58069206], [1516776180000, 0.04061199, 0.04061199, 0.04030838, 0.04030839, 1.88568446], [1516776240000, 0.04060995, 0.04060996, 0.04030841, 0.0406, 1.08221723], [1516776300000, 0.0403084, 0.04059996, 0.04030837, 0.04030837, 1.62247466], [1516776360000, 0.04030837, 0.04059595, 0.04030837, 0.04030837, 3.27777602], [1516776420000, 0.04030837, 0.0404, 0.04030837, 0.0404, 6.43723511], [1516776480000, 0.0404, 0.0404, 0.0404, 0.0404, 1.80584207], [1516776540000, 0.0404, 0.0404, 0.0404, 0.0404, 0.752584], [1516776600000, 0.0404, 0.04065228, 0.0404, 0.04065228, 5.352793], [1516776720000, 0.04044001, 0.04044001, 0.04044001, 0.04044001, 0.23394703], [1516776780000, 0.04044002, 0.040727, 0.04044002, 0.040727, 9.4917337], [1516776900000, 0.040446, 0.04073298, 0.040446, 0.04073298, 0.69143997], [1516776960000, 0.04044102, 0.04044102, 0.040441, 0.040441, 0.73500967], [1516777080000, 0.0407481, 0.0407481, 0.04044607, 0.04044607, 0.9449907], [1516777140000, 0.04074809, 0.040807, 0.04045601, 0.040807, 4.28564811], [1516777200000, 0.04075498, 0.04075499, 0.04075497, 0.04075497, 0.74952267], [1516777260000, 0.04075497, 0.04082699, 0.0404583, 0.0404583, 1.40573284], [1516777320000, 0.04045833, 0.040744, 0.040424, 0.040744, 7.8920854], [1516777380000, 0.040749, 0.040749, 0.04042404, 0.04072294, 3.43938346], [1516777440000, 0.04042401, 0.04042404, 0.040424, 0.04042404, 0.50086034], [1516777500000, 0.04042404, 0.0407148, 0.04042404, 0.04042404, 0.39529953], [1516777560000, 0.04070995, 0.04070995, 0.04042404, 0.04042404, 0.0685915], [1516777620000, 0.04042404, 0.04071278, 0.04042404, 0.04071277, 0.2964715], [1516777680000, 0.04071275, 0.040721, 0.04071275, 0.040721, 4.11428554], [1516777740000, 0.04042421, 0.04070998, 0.0404242, 0.04070994, 4.23443064], [1516777800000, 0.0404242, 0.04072094, 0.040405, 0.040405, 8.57744271], [1516777920000, 0.0404, 0.04060369, 0.0404, 0.04041, 4.57841626], [1516777980000, 0.0404101, 0.0404101, 0.04041, 0.04041, 0.036921], [1516778040000, 0.04041002, 0.04041002, 0.04041001, 0.04041001, 0.71553472], [1516778100000, 0.04049729, 0.04073799, 0.04049729, 0.04051754, 2.54280281], [1516778160000, 0.04042502, 0.04072299, 0.040405, 0.040405, 0.6652509], [1516778220000, 0.04041, 0.04041001, 0.040405, 0.040405, 0.63267671], [1516778280000, 0.04040501, 0.040714, 0.04040501, 0.040424, 8.16253507], [1516778340000, 0.04042398, 0.040424, 0.0404, 0.040405, 2.04037211], [1516778400000, 0.040424, 0.04073799, 0.040424, 0.04042734, 1.2103401], [1516778460000, 0.04042726, 0.04042726, 0.04040001, 0.04041779, 0.66788861], [1516778520000, 0.04042399, 0.040722, 0.04042399, 0.04054396, 9.90162519], [1516778580000, 0.04072199, 0.04072199, 0.04072199, 0.04072199, 0.08566293], [1516778640000, 0.04054396, 0.04054396, 0.04054396, 0.04054396, 0.03099824], [1516778700000, 0.04072199, 0.040722, 0.0407131, 0.0407131, 2.23632814], [1516778760000, 0.04054396, 0.04054396, 0.04054396, 0.04054396, 0.02], [1516778820000, 0.0407131, 0.040722, 0.0407131, 0.040722, 1.91904195], [1516778880000, 0.040722, 0.040722, 0.040722, 0.040722, 3.53895799], [1516778940000, 0.04054396, 0.04054396, 0.04054396, 0.04054396, 0.342018], [1516779000000, 0.040722, 0.040722, 0.040722, 0.040722, 1.25656256], [1516779060000, 0.040722, 0.040722, 0.04054396, 0.04054396, 2.78043671], [1516779120000, 0.040722, 0.040722, 0.040722, 0.040722, 0.17065219], [1516779180000, 0.040722, 0.040722, 0.040722, 0.040722, 0.2], [1516779240000, 0.040722, 0.040722, 0.04054398, 0.040722, 7.49587893], [1516779300000, 0.040722, 0.040722, 0.04054418, 0.04054418, 0.28919271], [1516779360000, 0.040722, 0.040722, 0.04054397, 0.040722, 9.45102104], [1516779420000, 0.040722, 0.040722, 0.040722, 0.040722, 7.72717159], [1516779480000, 0.040722, 0.040722, 0.04054408, 0.040722, 10.0458065], [1516779540000, 0.040722, 0.040722, 0.04054439, 0.040722, 0.25881325], [1516779600000, 0.040722, 0.040722, 0.040722, 0.040722, 0.27275996], [1516779660000, 0.040722, 0.040722, 0.040722, 0.040722, 1.72021314], [1516779720000, 0.04054436, 0.040722, 0.04054436, 0.040722, 3.22759238], [1516779780000, 0.040722, 0.040722, 0.04054436, 0.04054436, 1.418155], [1516779840000, 0.04054436, 0.040721, 0.04054397, 0.04054436, 1.32179957], [1516779900000, 0.040721, 0.040721, 0.04054396, 0.04054397, 1.5299314], [1516779960000, 0.040721, 0.040721, 0.04054396, 0.04054396, 0.76728209], [1516780020000, 0.040721, 0.040721, 0.040721, 0.040721, 0.2807853], [1516780140000, 0.04054396, 0.04054396, 0.04054396, 0.04054396, 0.3939], [1516780200000, 0.04054396, 0.04072099, 0.04054396, 0.04072099, 0.52719289], [1516780260000, 0.04071512, 0.04071512, 0.04071512, 0.04071512, 0.02719289], [1516780320000, 0.04072, 0.04072099, 0.04054396, 0.04054396, 1.80482883], [1516780380000, 0.04072099, 0.04072099, 0.04072099, 0.04072099, 0.08048387], [1516780440000, 0.04054396, 0.040722, 0.04054396, 0.040722, 2.98858395], [1516780500000, 0.040722, 0.040722, 0.0406, 0.04072199, 0.5347714], [1516780560000, 0.040722, 0.040722, 0.040722, 0.040722, 1.01801346], [1516780620000, 0.040722, 0.040722, 0.04052514, 0.04052514, 61.03919652], [1516780680000, 0.04052514, 0.04052514, 0.04052514, 0.04052514, 9.66479177], [1516780740000, 0.040722, 0.040722, 0.04052514, 0.040722, 14.65206619], [1516780800000, 0.04052514, 0.040722, 0.04052514, 0.040722, 5.94763982], [1516780860000, 0.040722, 0.040722, 0.04052514, 0.04052514, 0.11892794], [1516780920000, 0.040722, 0.040722, 0.040722, 0.040722, 6.66346276], [1516781040000, 0.040722, 0.040722, 0.04052514, 0.04052514, 0.43772397], [1516781100000, 0.040722, 0.040722, 0.040722, 0.040722, 0.2455675], [1516781160000, 0.04072199, 0.04072199, 0.04072199, 0.04072199, 1.81974714], [1516781280000, 0.0407, 0.040722, 0.04052514, 0.04052514, 3.07753273], [1516781340000, 0.040722, 0.040722, 0.04052514, 0.04052514, 9.3761397], [1516781400000, 0.0407, 0.0407, 0.0407, 0.0407, 0.24570024], [1516781460000, 0.0407, 0.040722, 0.0407, 0.040722, 49.58250659], [1516781520000, 0.04052518, 0.04052518, 0.04052518, 0.04052518, 0.12100753], [1516781580000, 0.04052518, 0.04052518, 0.0404, 0.04040001, 10.0473631], [1516781640000, 0.04040001, 0.04052518, 0.04040001, 0.04052516, 2.02941763], [1516781700000, 0.04040002, 0.04040003, 0.04040002, 0.04040003, 1.89707471], [1516781760000, 0.04040003, 0.04052518, 0.04040002, 0.04052518, 0.65829921], [1516781880000, 0.04052518, 0.04052518, 0.04052518, 0.04052518, 1.17946323], [1516782000000, 0.04045, 0.04052518, 0.04045, 0.04052518, 5.61035612], [1516782060000, 0.04045001, 0.04045001, 0.04045, 0.04045, 0.10405056], [1516782120000, 0.04052518, 0.04052518, 0.04045, 0.04045, 0.2013077], [1516782180000, 0.04052518, 0.04052518, 0.04045, 0.04045, 0.18200427], [1516782240000, 0.04045, 0.04045, 0.04045, 0.04045, 0.15619465], [1516782300000, 0.04045, 0.04045, 0.04045, 0.04045, 0.0478], [1516782360000, 0.04045, 0.04052512, 0.04045, 0.04045, 0.14454376], [1516782480000, 0.04052511, 0.04052511, 0.04045001, 0.04045001, 2.58110055], [1516782540000, 0.04052511, 0.040722, 0.04052511, 0.040722, 17.72449987], [1516782600000, 0.040722, 0.040722, 0.040722, 0.040722, 0.2455675], [1516782660000, 0.04045505, 0.04045505, 0.04045505, 0.04045505, 0.12040771], [1516782780000, 0.04049001, 0.04049001, 0.04049001, 0.04049001, 0.5], [1516782840000, 0.0405, 0.0405, 0.0405, 0.0405, 0.41017883], [1516782900000, 0.040722, 0.040722, 0.04050505, 0.040722, 3.96017991], [1516782960000, 0.040722, 0.040722, 0.040722, 0.040722, 2.44077256], [1516783020000, 0.040711, 0.040711, 0.04051, 0.040711, 0.10140908], [1516783080000, 0.04050001, 0.040722, 0.04050001, 0.04065393, 0.42609972], [1516783140000, 0.04065393, 0.04065393, 0.040505, 0.04065393, 0.15374118], [1516783200000, 0.04065393, 0.040722, 0.04065393, 0.040722, 1.58084336], [1516783260000, 0.04072199, 0.04072199, 0.04072199, 0.04072199, 0.44048189], [1516783320000, 0.040722, 0.040722, 0.040722, 0.040722, 1.81600625], [1516783380000, 0.04065393, 0.04065393, 0.04065393, 0.04065393, 0.15993492], [1516783440000, 0.04065393, 0.04065393, 0.040495, 0.04049501, 2.37767949], [1516783500000, 0.04049501, 0.040722, 0.04049501, 0.04049501, 5.69917093], [1516783560000, 0.0405355, 0.04053558, 0.0405355, 0.04053558, 1.2189697], [1516783620000, 0.0405355, 0.04053558, 0.04045001, 0.04045001, 7.6187537], [1516783680000, 0.04049046, 0.040719, 0.04045001, 0.04045001, 1.17093051], [1516783740000, 0.040722, 0.040722, 0.04045, 0.040722, 3.50920186], [1516783800000, 0.04045001, 0.04045001, 0.04045001, 0.04045001, 0.172], [1516783860000, 0.04045001, 0.04071197, 0.04045001, 0.04071197, 0.17521594], [1516783920000, 0.04045, 0.04045, 0.04041001, 0.04041001, 0.10967684], [1516784100000, 0.04068119, 0.0406812, 0.04068119, 0.0406812, 1.22906895], [1516784220000, 0.04068119, 0.0406812, 0.04068119, 0.0406812, 1.10658425], [1516784280000, 0.04045, 0.040679, 0.04033801, 0.040679, 51.36541986], [1516784340000, 0.04068091, 0.04068091, 0.04040004, 0.0406563, 0.44470371], [1516784460000, 0.04040004, 0.04040004, 0.04040004, 0.04040004, 0.06081498], [1516784520000, 0.040401, 0.04066633, 0.040401, 0.04066633, 0.27187787], [1516784580000, 0.04065631, 0.04065631, 0.04065631, 0.04065631, 0.04906987], [1516784640000, 0.04065631, 0.04065631, 0.04040007, 0.0405141, 3.69572143], [1516784700000, 0.0404001, 0.04051409, 0.0404001, 0.04051409, 0.84835909], [1516784760000, 0.0405546, 0.0405546, 0.04040025, 0.04040025, 0.9325505], [1516784820000, 0.04040036, 0.04040036, 0.04040036, 0.04040036, 0.02004209], [1516784880000, 0.04040152, 0.040644, 0.04040152, 0.040644, 1.46491319], [1516784940000, 0.04040174, 0.04040174, 0.04040139, 0.04040163, 0.74494739], [1516785000000, 0.04040163, 0.040631, 0.04040163, 0.040631, 0.51350002], [1516785060000, 0.040631, 0.040631, 0.040631, 0.040631, 0.46222713], [1516785120000, 0.0405659, 0.0405659, 0.0405659, 0.0405659, 0.49179237], [1516785180000, 0.04040131, 0.04056542, 0.04040131, 0.04056542, 0.21270352], [1516785240000, 0.040561, 0.040561, 0.04040131, 0.04040131, 1.30836228], [1516785300000, 0.04040131, 0.04055491, 0.04040131, 0.04055491, 1.6108562], [1516785360000, 0.04055491, 0.04055491, 0.04055483, 0.04055491, 4.26866315], [1516785420000, 0.04055483, 0.04055488, 0.04055483, 0.04055483, 10.24780384], [1516785480000, 0.04055488, 0.04055488, 0.04055483, 0.04055483, 0.3600935], [1516785540000, 0.04055488, 0.04056566, 0.04055488, 0.04056566, 5.08433087], [1516785600000, 0.04056566, 0.0405659, 0.04056566, 0.04056566, 0.30719945], [1516785660000, 0.04056566, 0.04064399, 0.04055488, 0.04064398, 2.2157357], [1516785720000, 0.04055488, 0.04055488, 0.04055488, 0.04055488, 0.75015043], [1516785780000, 0.04055488, 0.04064399, 0.04055483, 0.04055483, 0.36984438], [1516785840000, 0.04055483, 0.04055488, 0.04055483, 0.04055483, 0.74655891], [1516785900000, 0.04040131, 0.04051431, 0.04040131, 0.04040131, 1.28342964], [1516785960000, 0.04040131, 0.04040131, 0.04040131, 0.04040131, 0.42916671], [1516786020000, 0.04051431, 0.04051431, 0.04051431, 0.04051431, 0.97402739], [1516786140000, 0.04051431, 0.04051431, 0.04040131, 0.04040131, 3.30608454], [1516786200000, 0.04051431, 0.04051431, 0.04051431, 0.04051431, 0.51322032], [1516786260000, 0.04051431, 0.04051431, 0.04033801, 0.04040005, 4.92815085], [1516786320000, 0.04040005, 0.04051431, 0.04033801, 0.04033801, 2.21163921], [1516786380000, 0.04040005, 0.04040005, 0.04040005, 0.04040005, 0.14911494], [1516786440000, 0.04040005, 0.04040005, 0.04040005, 0.04040005, 0.02728957], [1516786500000, 0.04040005, 0.040629, 0.04040005, 0.04054254, 2.68760608], [1516786560000, 0.04040005, 0.04040005, 0.04040005, 0.04040005, 0.1691267], [1516786620000, 0.04040025, 0.04040025, 0.04040005, 0.04040005, 1.08841858], [1516786680000, 0.04040025, 0.04040025, 0.04040005, 0.04040005, 1.828132], [1516786740000, 0.04040004, 0.04040004, 0.04040004, 0.04040004, 1.99820942], [1516786800000, 0.04040004, 0.04040004, 0.04040004, 0.04040004, 0.86795119], [1516786980000, 0.04032785, 0.04032785, 0.04032785, 0.04032785, 0.04322697], [1516787040000, 0.04030837, 0.04032785, 0.04030837, 0.04030837, 1.49672368], [1516787100000, 0.04032785, 0.04040004, 0.04032785, 0.04040004, 1.84160358], [1516787160000, 0.04040004, 0.04040004, 0.04040004, 0.04040004, 0.02294941], [1516787220000, 0.04032785, 0.04032785, 0.04032785, 0.04032785, 1.42459303], [1516787340000, 0.04032785, 0.04032785, 0.04032785, 0.04032785, 0.34689489], [1516787400000, 0.04032785, 0.04032785, 0.04032785, 0.04032785, 1.40606967], [1516787460000, 0.04032785, 0.04032785, 0.04032785, 0.04032785, 0.81346538], [1516787520000, 0.04032785, 0.04039785, 0.04032785, 0.04039785, 1.00787391], [1516787580000, 0.04039785, 0.04039785, 0.04039785, 0.04039785, 0.01866827], [1516787640000, 0.04035, 0.04035, 0.04035, 0.04035, 0.02973035], [1516787760000, 0.04032785, 0.04032785, 0.04032785, 0.04032785, 0.02650912], [1516787820000, 0.04030838, 0.04030838, 0.04030838, 0.04030838, 0.06062945], [1516787880000, 0.04030838, 0.04030838, 0.04030838, 0.04030838, 0.74156772], [1516787940000, 0.04030838, 0.04035, 0.04030837, 0.04035, 6.22856934], [1516788000000, 0.04030837, 0.04030837, 0.04018789, 0.04018789, 0.49247126], [1516788060000, 0.04018789, 0.04035, 0.04015039, 0.04035, 21.71021941], [1516788120000, 0.04035, 0.04035, 0.04035, 0.04035, 0.09964319], [1516788240000, 0.04016001, 0.04030838, 0.04016001, 0.04030838, 1.06773799], [1516788300000, 0.04030838, 0.04030838, 0.04030837, 0.04030837, 1.96266957], [1516788360000, 0.04030837, 0.04030837, 0.04030837, 0.04030837, 1.95655785], [1516788420000, 0.04016573, 0.04030838, 0.04016, 0.04018113, 12.66915942], [1516788480000, 0.04018113, 0.04040024, 0.04016, 0.04016, 3.05404529], [1516788540000, 0.04016, 0.04040023, 0.04012453, 0.04012453, 32.84935685], [1516788600000, 0.0402449, 0.04040024, 0.0402449, 0.04040024, 0.27215757], [1516788660000, 0.04040024, 0.04040024, 0.0404, 0.04040023, 4.3613612], [1516788720000, 0.04012454, 0.04041926, 0.04012454, 0.04041926, 15.32264836], [1516788780000, 0.04041926, 0.04061011, 0.04041926, 0.04041926, 0.81949869], [1516788840000, 0.04041926, 0.04061011, 0.04041926, 0.04041926, 1.56460847], [1516788900000, 0.04061011, 0.040618, 0.040322, 0.040322, 1.96552031], [1516788960000, 0.040593, 0.040593, 0.04059299, 0.040593, 1.48915956], [1516789020000, 0.040618, 0.040618, 0.040618, 0.040618, 0.42647896], [1516789080000, 0.040285, 0.040285, 0.040285, 0.040285, 3.1401], [1516789140000, 0.040598, 0.04060299, 0.040598, 0.04060299, 8.60156394], [1516789200000, 0.040593, 0.040593, 0.04027201, 0.04027201, 0.73904367], [1516789260000, 0.040285, 0.040285, 0.040285, 0.040285, 1.06842566], [1516789440000, 0.040383, 0.04057299, 0.040383, 0.04057299, 0.08883632], [1516789500000, 0.04028611, 0.04028611, 0.04028611, 0.04028611, 0.06767027], [1516789560000, 0.04029102, 0.04029102, 0.04029102, 0.04029102, 0.10010578], [1516789620000, 0.04059796, 0.040613, 0.04059796, 0.040613, 0.8098877], [1516789680000, 0.04032349, 0.04032349, 0.040291, 0.040291, 4.27751347], [1516789800000, 0.04062784, 0.04062784, 0.04062784, 0.04062784, 0.49227376], [1516789860000, 0.04062299, 0.04062299, 0.04060568, 0.04060568, 10.02122102], [1516789980000, 0.04060569, 0.04061298, 0.04060568, 0.04060568, 1.10952976], [1516790100000, 0.04032142, 0.04060299, 0.04030604, 0.040601, 0.6431854], [1516790220000, 0.04030768, 0.040586, 0.04030604, 0.040586, 2.57221048], [1516790340000, 0.040586, 0.0405894, 0.040586, 0.0405894, 0.26513693], [1516790400000, 0.0404, 0.04059598, 0.0404, 0.04059598, 0.82070484], [1516790520000, 0.04040001, 0.04059598, 0.04040001, 0.04059598, 4.06882823], [1516790580000, 0.04060099, 0.040601, 0.04060099, 0.040601, 1.00400299], [1516790640000, 0.04040002, 0.04060568, 0.04040002, 0.04040003, 2.5580127], [1516790700000, 0.04060568, 0.04062785, 0.04060568, 0.04062785, 0.49254168], [1516790760000, 0.04040003, 0.0405, 0.04040001, 0.04040001, 0.63522949], [1516790820000, 0.04040001, 0.0405, 0.04040001, 0.04040001, 0.74414561], [1516790880000, 0.04040002, 0.04040002, 0.04040001, 0.04040001, 0.291712], [1516790940000, 0.04040001, 0.04062785, 0.04040001, 0.04040001, 2.98670292], [1516791000000, 0.04040001, 0.04040001, 0.04040001, 0.04040001, 0.28454949], [1516791060000, 0.04040001, 0.04040001, 0.04040001, 0.04040001, 0.0272896], [1516791120000, 0.04040001, 0.04040001, 0.04040001, 0.04040001, 0.75525894], [1516791180000, 0.04062785, 0.04065292, 0.04040001, 0.04040001, 2.05449252], [1516791240000, 0.04064092, 0.04064092, 0.04040001, 0.04040001, 0.13940387], [1516791300000, 0.04040001, 0.04063599, 0.04040001, 0.04040001, 3.13786571], [1516791360000, 0.04040002, 0.0405, 0.04040001, 0.0405, 7.53811821], [1516791420000, 0.04040002, 0.04040002, 0.04040002, 0.04040002, 0.079], [1516791480000, 0.04049666, 0.04049666, 0.04049666, 0.04049666, 0.42654394], [1516791540000, 0.04049666, 0.04049666, 0.04049666, 0.04049666, 1.17888847], [1516791600000, 0.04049666, 0.04049666, 0.04040002, 0.04049666, 1.75167382], [1516791660000, 0.04049666, 0.04049666, 0.04049666, 0.04049666, 0.2469337], [1516791720000, 0.04049666, 0.04049666, 0.04040002, 0.04049666, 0.67198718], [1516791780000, 0.04049666, 0.04049666, 0.04049666, 0.04049666, 0.6], [1516791840000, 0.04049665, 0.04049665, 0.04040002, 0.04049665, 11.83868023], [1516791900000, 0.04049665, 0.04049665, 0.04049665, 0.04049665, 0.9877348], [1516791960000, 0.04040002, 0.04040002, 0.04040002, 0.04040002, 0.07886636], [1516792020000, 0.04040002, 0.04040002, 0.04040002, 0.04040002, 0.27516754], [1516792080000, 0.04049664, 0.04071568, 0.04049664, 0.04061812, 24.46167773], [1516792140000, 0.04049665, 0.04049665, 0.04049665, 0.04049665, 0.05444894], [1516792200000, 0.04049669, 0.040738, 0.04049669, 0.04071099, 81.6318249], [1516792260000, 0.04050743, 0.040738, 0.0404258, 0.0404258, 27.80594617], [1516792320000, 0.04073581, 0.04073581, 0.04073581, 0.04073581, 2.43656317], [1516792380000, 0.04072099, 0.04072099, 0.0404258, 0.0404258, 4.49087374], [1516792440000, 0.0404258, 0.0404258, 0.04040001, 0.0404258, 4.26204875], [1516792500000, 0.0404258, 0.0404258, 0.04040001, 0.04040001, 10.75675859], [1516792560000, 0.04040001, 0.0404258, 0.04040001, 0.0404258, 2.99350919], [1516792620000, 0.0404258, 0.0404258, 0.0404258, 0.0404258, 0.39516343], [1516792680000, 0.04040002, 0.04040002, 0.04040002, 0.04040002, 1.88271152], [1516792740000, 0.04040002, 0.0404258, 0.04040002, 0.04042579, 0.55009362], [1516792800000, 0.04040003, 0.04042579, 0.04040003, 0.04042579, 0.33026113], [1516792860000, 0.04042579, 0.0404258, 0.04040003, 0.040405, 0.96145103], [1516792920000, 0.040405, 0.040405, 0.040405, 0.040405, 0.0399], [1516792980000, 0.040405, 0.040405, 0.040405, 0.040405, 1.43303053], [1516793040000, 0.04068898, 0.040689, 0.040405, 0.040405, 1.02834364], [1516793100000, 0.040405, 0.0406799, 0.040405, 0.0406799, 1.21683832], [1516793160000, 0.040405, 0.040405, 0.040405, 0.040405, 1.05], [1516793220000, 0.04041001, 0.04041001, 0.04041001, 0.04041001, 0.55940048], [1516793280000, 0.04041001, 0.04041001, 0.04041001, 0.04041001, 9.49487], [1516793340000, 0.040666, 0.04066917, 0.040405, 0.04040501, 3.27003386], [1516793400000, 0.04040501, 0.04065899, 0.04040501, 0.04065899, 2.51365453], [1516793460000, 0.040654, 0.040654, 0.04040502, 0.04040502, 1.66267486], [1516793520000, 0.04040502, 0.04040502, 0.040405, 0.040405, 0.88515035], [1516793580000, 0.040405, 0.04062396, 0.040405, 0.04062396, 0.04585752], [1516793640000, 0.040405, 0.040405, 0.0404, 0.0404, 1.22566009], [1516793700000, 0.0404, 0.04040499, 0.0404, 0.04040499, 1.74397648], [1516793760000, 0.04040497, 0.04040497, 0.04040497, 0.04040497, 0.02462963], [1516793820000, 0.0404, 0.0404, 0.04016, 0.04016, 2.16339976], [1516793880000, 0.04040499, 0.04040499, 0.04015999, 0.04016, 3.50258092], [1516793940000, 0.04040499, 0.04040499, 0.04040499, 0.04040499, 0.4113888], [1516794060000, 0.04040499, 0.04049999, 0.04020001, 0.04049999, 0.32897457], [1516794120000, 0.04049996, 0.04059197, 0.04049996, 0.04059197, 3.67536215], [1516794180000, 0.04049995, 0.04049995, 0.04035718, 0.04035718, 0.18121806], [1516794240000, 0.04035717, 0.04067499, 0.04023003, 0.04023003, 71.49759309], [1516794300000, 0.04023003, 0.04035614, 0.04016, 0.04035614, 24.05144342], [1516794360000, 0.04035614, 0.04039322, 0.040266, 0.040266, 97.10307581], [1516794420000, 0.04023001, 0.04023001, 0.040211, 0.040211, 25.01982177], [1516794480000, 0.04030014, 0.04030014, 0.04030014, 0.04030014, 0.65973698], [1516794540000, 0.040216, 0.040554, 0.040216, 0.040554, 6.86751267], [1516794600000, 0.04023101, 0.040647, 0.04023101, 0.040647, 0.76034197], [1516794660000, 0.04026601, 0.04026801, 0.04026601, 0.04026801, 1.53013466], [1516794720000, 0.04026801, 0.040565, 0.04026801, 0.040565, 0.50723252], [1516794780000, 0.04026801, 0.04026801, 0.04022794, 0.04022794, 1.4758341], [1516794840000, 0.04026601, 0.04026601, 0.04026601, 0.04026601, 0.36819443], [1516794900000, 0.0403, 0.04048999, 0.0403, 0.04048999, 0.39375228], [1516794960000, 0.0403, 0.04048999, 0.0403, 0.04048999, 0.11022492], [1516795020000, 0.0403, 0.0403, 0.040268, 0.040268, 1.95802467], [1516795080000, 0.0403, 0.04048989, 0.04026801, 0.04027001, 12.48074231], [1516795140000, 0.0403, 0.0403, 0.0403, 0.0403, 0.23052797], [1516795200000, 0.04042515, 0.04048989, 0.04042515, 0.04048989, 5.15786684], [1516795260000, 0.04048989, 0.04048989, 0.04048989, 0.04048989, 0.061], [1516795320000, 0.04027004, 0.04048989, 0.04015, 0.04027004, 6.61231103], [1516795440000, 0.04019998, 0.04048989, 0.04016, 0.04016, 2.02242993], [1516795500000, 0.04046703, 0.04048984, 0.04046673, 0.04048984, 1.23557831], [1516795560000, 0.04047032, 0.04047032, 0.0401752, 0.0401752, 0.16782], [1516795620000, 0.04048195, 0.04048195, 0.04047299, 0.04047299, 0.1619713], [1516795740000, 0.04031357, 0.04031357, 0.040134, 0.04031357, 6.70484869], [1516795800000, 0.04013401, 0.04043157, 0.04013401, 0.04043155, 1.96175885], [1516795980000, 0.04043147, 0.04043154, 0.0401421, 0.04043147, 13.71104409], [1516796040000, 0.04043145, 0.04043146, 0.0401435, 0.0401435, 1.04138024], [1516796100000, 0.04043143, 0.04043144, 0.04043143, 0.04043144, 0.74199631], [1516796220000, 0.04043141, 0.04043148, 0.04014367, 0.04043148, 20.22476441], [1516796280000, 0.04043138, 0.04043139, 0.04043138, 0.04043139, 0.81690409], [1516796340000, 0.0401436, 0.0401436, 0.0401436, 0.0401436, 0.5019], [1516796400000, 0.04042175, 0.04042184, 0.04042175, 0.04042184, 0.74217375], [1516796460000, 0.04014353, 0.04014355, 0.04014353, 0.04014353, 0.4538486], [1516796520000, 0.04014354, 0.04042184, 0.04014354, 0.0404214, 1.89602615], [1516796580000, 0.04014467, 0.04042144, 0.04014467, 0.04032387, 4.25696437], [1516796640000, 0.04032387, 0.04032387, 0.04032387, 0.04032387, 0.03258251], [1516796700000, 0.04032387, 0.04042144, 0.04032387, 0.04042143, 12.58964639], [1516796760000, 0.04042143, 0.04042143, 0.04020101, 0.04032516, 3.64284333], [1516796820000, 0.04042143, 0.04042145, 0.04042143, 0.04042145, 11.0], [1516796880000, 0.040179, 0.04042183, 0.040179, 0.04019402, 1.27883122], [1516796940000, 0.04016902, 0.04042184, 0.04016902, 0.04042184, 1.69663267], [1516797000000, 0.04042184, 0.04048995, 0.04018403, 0.04048995, 4.06747525], [1516797060000, 0.04018907, 0.04048995, 0.04018403, 0.04048995, 4.68488841], [1516797120000, 0.04048994, 0.04048995, 0.04019426, 0.04048995, 0.96796003], [1516797180000, 0.04048988, 0.0404899, 0.04048988, 0.0404899, 0.58718963], [1516797240000, 0.04048988, 0.04048988, 0.04048988, 0.04048988, 0.28845194], [1516797300000, 0.04048988, 0.04048995, 0.04048988, 0.04048995, 3.34672966], [1516797360000, 0.04048988, 0.04064599, 0.04048988, 0.04048988, 6.27572638], [1516797420000, 0.04048988, 0.04060499, 0.04048988, 0.04048988, 3.58239011], [1516797480000, 0.04048988, 0.04048988, 0.040261, 0.040261, 6.61464299], [1516797540000, 0.040261, 0.04058, 0.04018729, 0.04057997, 7.48519753], [1516797600000, 0.040261, 0.04057997, 0.040261, 0.04057997, 0.2117868], [1516797660000, 0.04050715, 0.04057996, 0.040279, 0.040279, 0.85438637], [1516797720000, 0.04057996, 0.04061, 0.04028902, 0.04061, 2.69668651], [1516797780000, 0.04030404, 0.04061, 0.04030404, 0.04061, 2.75260735], [1516797840000, 0.04061, 0.04065138, 0.04061, 0.04061001, 1.18038785], [1516797900000, 0.04065138, 0.04065138, 0.04057996, 0.04057996, 2.66762795], [1516797960000, 0.04065138, 0.04065138, 0.04047413, 0.04047413, 13.76888216], [1516798020000, 0.04047413, 0.04067499, 0.04032501, 0.04067499, 17.33193581], [1516798080000, 0.04067499, 0.04068, 0.04067499, 0.04068, 0.5], [1516798140000, 0.04068, 0.04068, 0.04068, 0.04068, 0.02608511], [1516798200000, 0.04068, 0.040738, 0.04068, 0.040738, 2.08654204], [1516798260000, 0.04049003, 0.04097908, 0.04049003, 0.04097703, 9.52943689], [1516798320000, 0.04057723, 0.040588, 0.04057723, 0.040588, 0.36982807], [1516798380000, 0.040977, 0.040977, 0.040977, 0.040977, 0.41856473], [1516798440000, 0.04061002, 0.04061002, 0.04058303, 0.04058303, 1.39898756], [1516798500000, 0.040922, 0.040922, 0.040583, 0.04089992, 17.46327788], [1516798560000, 0.04089698, 0.04107999, 0.04072127, 0.0409999, 101.96601473], [1516798620000, 0.04107996, 0.04107999, 0.04058802, 0.04058802, 11.27987825], [1516798680000, 0.04077429, 0.04098044, 0.04060301, 0.04098044, 11.40909461], [1516798740000, 0.04098043, 0.0409999, 0.040628, 0.04098039, 59.48937086], [1516798800000, 0.0407, 0.04111109, 0.0407, 0.04098002, 2.74556006], [1516798860000, 0.04070002, 0.04071001, 0.04070002, 0.04071001, 0.587334], [1516798920000, 0.04078233, 0.04119993, 0.04071501, 0.040735, 9.56904459], [1516798980000, 0.04119988, 0.04119988, 0.04074, 0.04075, 2.68751607], [1516799040000, 0.04119978, 0.04119978, 0.04079963, 0.04079963, 2.26002165], [1516799100000, 0.04079963, 0.04103945, 0.0407, 0.0407, 2.55145703], [1516799160000, 0.04070001, 0.04070001, 0.04070001, 0.04070001, 0.07776487], [1516799220000, 0.04070001, 0.040999, 0.04070001, 0.040999, 0.42762976], [1516799280000, 0.04070001, 0.041017, 0.0407, 0.0407, 18.65170518], [1516799340000, 0.0407, 0.0407, 0.0407, 0.0407, 0.85199945], [1516799400000, 0.0407, 0.041012, 0.0407, 0.04070001, 2.6663142], [1516799460000, 0.04070005, 0.04070005, 0.04070005, 0.04070005, 0.061], [1516799520000, 0.04099896, 0.04099896, 0.0407, 0.0407, 1.68067068], [1516799580000, 0.0407, 0.0407, 0.0407, 0.0407, 0.20748712], [1516799640000, 0.0407, 0.0407, 0.040583, 0.040583, 1.15920685], [1516799700000, 0.040583, 0.0407, 0.040477, 0.04063, 6.18339144], [1516799760000, 0.04047701, 0.040479, 0.04047412, 0.040479, 4.25784275], [1516799820000, 0.04047412, 0.04062996, 0.0404717, 0.0404717, 2.00346944], [1516799880000, 0.0404717, 0.04077498, 0.0404717, 0.04047171, 2.94257075], [1516799940000, 0.04047171, 0.04080499, 0.04047171, 0.04047175, 0.5282516], [1516800000000, 0.04047177, 0.040809, 0.04047171, 0.040809, 4.4899679], [1516800060000, 0.04047171, 0.04047171, 0.0402785, 0.04047171, 13.65328114], [1516800120000, 0.040809, 0.041002, 0.04072399, 0.041002, 14.39160134], [1516800240000, 0.04080894, 0.04080894, 0.04080894, 0.04080894, 0.49810469], [1516800300000, 0.04080894, 0.04080894, 0.04080894, 0.04080894, 1.13276087], [1516800360000, 0.04080894, 0.04080894, 0.04054866, 0.04054866, 1.0371426], [1516800420000, 0.04054866, 0.04080894, 0.04054866, 0.04080894, 0.22537265], [1516800540000, 0.04042001, 0.040799, 0.04042, 0.04047202, 3.30316157], [1516800600000, 0.04047202, 0.04079499, 0.04047084, 0.04079499, 6.57753765], [1516800660000, 0.04040006, 0.04040006, 0.04040006, 0.04040006, 1.043892], [1516800720000, 0.04078888, 0.04080896, 0.04078888, 0.04080896, 4.97223274], [1516800780000, 0.040494, 0.04080896, 0.040494, 0.04049402, 1.60589767], [1516800900000, 0.04079598, 0.040804, 0.04049419, 0.04049421, 1.26030585], [1516801020000, 0.04049422, 0.04080399, 0.04049413, 0.04080398, 1.82676447], [1516801140000, 0.040769, 0.040769, 0.04049433, 0.04049438, 1.05266221], [1516801200000, 0.04075399, 0.04076396, 0.04049422, 0.040759, 2.6755782], [1516801260000, 0.04075399, 0.04075399, 0.04049422, 0.04074899, 0.37764801], [1516801320000, 0.04074399, 0.04074897, 0.04074399, 0.04074897, 0.95157896], [1516801380000, 0.04049422, 0.040734, 0.04049422, 0.040734, 0.71978217], [1516801440000, 0.04073397, 0.04073896, 0.04073396, 0.04073896, 1.32815419], [1516801500000, 0.04073396, 0.04073896, 0.04053526, 0.04053526, 4.33598755], [1516801560000, 0.04049422, 0.04073896, 0.04049422, 0.04073896, 5.44043172], [1516801620000, 0.04051473, 0.04073399, 0.04051473, 0.04073399, 0.04701234], [1516801680000, 0.04051473, 0.04051473, 0.04051473, 0.04051473, 0.05442464], [1516801740000, 0.04051478, 0.04051478, 0.04051478, 0.04051478, 0.32542622], [1516801800000, 0.04051478, 0.0407339, 0.04051478, 0.0407339, 1.15976249], [1516801860000, 0.0407339, 0.0407339, 0.0405, 0.0405, 5.09848107], [1516801920000, 0.04073387, 0.04073389, 0.0405, 0.04073389, 1.07032377], [1516801980000, 0.04073388, 0.04073388, 0.04049422, 0.04049422, 8.7713119], [1516802040000, 0.04073387, 0.04073387, 0.04073387, 0.04073387, 0.32305183], [1516802100000, 0.04049422, 0.04073389, 0.04049422, 0.04073388, 0.77230724], [1516802160000, 0.04073388, 0.04073388, 0.04073358, 0.04073358, 2.23560853], [1516802220000, 0.04073357, 0.04073357, 0.04049422, 0.04073357, 4.625769], [1516802280000, 0.04049422, 0.0406, 0.04049422, 0.0406, 11.07947749], [1516802340000, 0.04049421, 0.04049421, 0.04037271, 0.04037271, 5.11951425], [1516802400000, 0.04037271, 0.0406, 0.04037271, 0.0406, 3.45218901], [1516802460000, 0.0406, 0.0406, 0.0406, 0.0406, 0.32321473], [1516802520000, 0.0406, 0.0406, 0.04030001, 0.04030704, 2.08997505], [1516802580000, 0.04030908, 0.04059158, 0.0403, 0.04030021, 3.4597838], [1516802640000, 0.04059, 0.04059157, 0.04030091, 0.04030092, 0.89136581], [1516802700000, 0.04059155, 0.04059158, 0.04059154, 0.04059154, 3.00314343], [1516802760000, 0.04059157, 0.04059158, 0.04059154, 0.04059154, 1.16409929], [1516802820000, 0.04044979, 0.04044979, 0.04030681, 0.04030683, 3.81896928], [1516802880000, 0.04030683, 0.04030683, 0.04027949, 0.0403009, 1.49502186], [1516802940000, 0.04026823, 0.0404076, 0.04024, 0.04024005, 5.34588728], [1516803000000, 0.04059149, 0.04059149, 0.04059149, 0.04059149, 0.24635699], [1516803060000, 0.04059049, 0.0405905, 0.04059049, 0.0405905, 0.1936038], [1516803120000, 0.04058999, 0.04059154, 0.04058999, 0.04059154, 0.32272264], [1516803180000, 0.0403, 0.0403, 0.04017224, 0.04017234, 10.90838599], [1516803240000, 0.04028024, 0.04028024, 0.04018001, 0.04028024, 0.20512708], [1516803300000, 0.04050505, 0.04056898, 0.04018006, 0.04018006, 10.3035875], [1516803360000, 0.04055897, 0.04055897, 0.04020025, 0.04022149, 2.78213369], [1516803420000, 0.04026171, 0.040554, 0.04026171, 0.04026171, 0.37322983], [1516803480000, 0.04026171, 0.04050295, 0.04026171, 0.04050295, 1.97540151], [1516803540000, 0.04050295, 0.04050295, 0.04026171, 0.04026171, 3.12853375], [1516803600000, 0.040548, 0.040548, 0.04026271, 0.04026271, 5.81307476], [1516803660000, 0.04026271, 0.04047051, 0.04018002, 0.04018002, 1.09647574], [1516803720000, 0.04047034, 0.04047036, 0.04047034, 0.04047035, 42.35172576], [1516803780000, 0.04018011, 0.04018016, 0.04018011, 0.04018016, 0.13068491], [1516803840000, 0.04018002, 0.04018018, 0.04017, 0.04017, 7.65483466], [1516803900000, 0.04017, 0.04044633, 0.04016337, 0.04018018, 3.15918576], [1516803960000, 0.04014357, 0.04018018, 0.04012453, 0.040129, 10.84669735], [1516804020000, 0.04018018, 0.04044607, 0.040129, 0.04044607, 20.98597439], [1516804080000, 0.04041515, 0.04041515, 0.04012901, 0.04041515, 1.37158565], [1516804140000, 0.04013096, 0.04013096, 0.04012454, 0.04012455, 3.72800532], [1516804200000, 0.04012455, 0.04039999, 0.04012453, 0.04039999, 8.1251998], [1516804260000, 0.04012458, 0.04039999, 0.04012458, 0.04039799, 0.47365732], [1516804320000, 0.04038998, 0.04038998, 0.04038998, 0.04038998, 0.0280844], [1516804380000, 0.04034969, 0.04034969, 0.04034969, 0.04034969, 0.6], [1516804440000, 0.04034969, 0.04034969, 0.04012459, 0.04012459, 0.50382021], [1516804500000, 0.04034969, 0.04036999, 0.0401246, 0.0401246, 0.95766299], [1516804560000, 0.04012459, 0.0401867, 0.04012453, 0.0401867, 14.79133447], [1516804620000, 0.0401867, 0.04034999, 0.04012453, 0.04034999, 0.64839855], [1516804680000, 0.04012453, 0.04034999, 0.04012357, 0.04012358, 6.78656518], [1516804740000, 0.04012453, 0.04012453, 0.04012453, 0.04012453, 0.02008527], [1516804800000, 0.04012357, 0.04034995, 0.04012357, 0.04034995, 4.51743761], [1516804860000, 0.04012357, 0.04034993, 0.04012357, 0.04034993, 0.93092445], [1516804920000, 0.04012358, 0.04012358, 0.04012357, 0.04012357, 1.28367003], [1516804980000, 0.04012357, 0.04012357, 0.04012355, 0.04012355, 2.19783518], [1516805040000, 0.04012358, 0.04034, 0.04012001, 0.04012001, 0.63571491], [1516805100000, 0.04033999, 0.04034, 0.04033999, 0.04034, 0.98196834], [1516805160000, 0.04012001, 0.04012001, 0.04012001, 0.04012001, 1.69788098], [1516805220000, 0.04012001, 0.04012001, 0.04012, 0.04012, 0.64474312], [1516805280000, 0.04012, 0.04012002, 0.04012, 0.04012002, 6.7328484], [1516805340000, 0.04012002, 0.04012002, 0.04012002, 0.04012002, 0.24862899], [1516805400000, 0.04012001, 0.04012002, 0.04012001, 0.04012002, 0.59995135], [1516805460000, 0.04012002, 0.04012002, 0.04012002, 0.04012002, 3.32004476], [1516805520000, 0.04012001, 0.04012002, 0.0401, 0.0401, 35.66834274], [1516805580000, 0.0401, 0.04012002, 0.0401, 0.04011199, 25.44566672], [1516805640000, 0.04011197, 0.04011197, 0.0401, 0.0401, 14.36557038], [1516805700000, 0.04012001, 0.04012001, 0.0401, 0.0401, 0.52599825], [1516805760000, 0.0401, 0.04012001, 0.0401, 0.04012001, 0.22760515], [1516805820000, 0.04012001, 0.04012001, 0.0401, 0.0401, 1.70235884], [1516805880000, 0.04010001, 0.04012, 0.04010001, 0.04012, 0.98588133], [1516805940000, 0.04010001, 0.04010001, 0.0401, 0.0401, 0.42], [1516806000000, 0.04011999, 0.04012, 0.04011999, 0.04012, 1.46949226], [1516806060000, 0.04012, 0.04012, 0.04011999, 0.04012, 3.84020441], [1516806120000, 0.04012, 0.04012, 0.04012, 0.04012, 0.26936699], [1516806180000, 0.04012, 0.04012, 0.04012, 0.04012, 0.75265839], [1516806240000, 0.04012, 0.04012, 0.04011998, 0.04011998, 4.04424418], [1516806300000, 0.04011998, 0.04012, 0.0401, 0.0401, 4.25542746], [1516806420000, 0.0401, 0.0401, 0.0401, 0.0401, 0.42836542], [1516806480000, 0.0401, 0.04012, 0.0401, 0.04012, 0.10749377], [1516806540000, 0.0401, 0.0401, 0.0401, 0.0401, 0.20842585], [1516806600000, 0.0401001, 0.04012, 0.0401, 0.04012, 1.46166947], [1516806660000, 0.04012, 0.04012, 0.04012, 0.04012, 0.64394184], [1516806780000, 0.0401, 0.04011, 0.0401, 0.0401, 5.27681847], [1516806840000, 0.0401, 0.0401, 0.0401, 0.0401, 12.7133355], [1516806900000, 0.0401, 0.04011, 0.0401, 0.04011, 4.9497241], [1516806960000, 0.0401, 0.04011, 0.0401, 0.0401, 10.17393183], [1516807020000, 0.0401, 0.0401, 0.0401, 0.0401, 1.96585513], [1516807080000, 0.0401, 0.04010001, 0.0401, 0.04010001, 0.05498753], [1516807140000, 0.04010001, 0.04011, 0.04010001, 0.04011, 0.87867189], [1516807200000, 0.04010001, 0.04011, 0.0401, 0.0401, 25.46219411], [1516807260000, 0.0401, 0.0401, 0.0401, 0.0401, 4.66909433], [1516807320000, 0.04011, 0.04011, 0.0401, 0.04010001, 0.76384923], [1516807380000, 0.04011, 0.04011, 0.0401, 0.0401, 1.01612962], [1516807440000, 0.04011, 0.04011, 0.0401, 0.0401, 0.27900856], [1516807500000, 0.0401, 0.0401, 0.0401, 0.0401, 2.93165138], [1516807560000, 0.0401, 0.0401, 0.04009701, 0.04009701, 24.50488343], [1516807620000, 0.04009701, 0.04009701, 0.04, 0.04, 52.95414738], [1516807680000, 0.04, 0.04, 0.04, 0.04, 0.06287183], [1516807740000, 0.04, 0.04, 0.04, 0.04, 7.67600868], [1516807800000, 0.0401, 0.04010999, 0.0401, 0.0401, 0.18924036], [1516807980000, 0.0401, 0.0401, 0.04009999, 0.04009999, 1.01884347], [1516808040000, 0.04, 0.04, 0.03990002, 0.0399201, 11.39389506], [1516808100000, 0.039999, 0.04009999, 0.03990003, 0.04009999, 13.80289853], [1516808160000, 0.04009999, 0.04009999, 0.04009, 0.04009, 0.05650062], [1516808220000, 0.04009999, 0.04009999, 0.04009, 0.04009, 1.92687976], [1516808280000, 0.04009, 0.04009, 0.04009, 0.04009, 0.33677543], [1516808340000, 0.04009, 0.04009, 0.04, 0.04, 2.84782736], [1516808400000, 0.04009, 0.04009, 0.04009, 0.04009, 0.24943876], [1516808520000, 0.04, 0.0401, 0.04, 0.0401, 59.23093513], [1516808580000, 0.0401, 0.04012, 0.04004499, 0.04012, 25.87802823], [1516808640000, 0.04012, 0.04024999, 0.03991846, 0.04024999, 4.27044638], [1516808700000, 0.039924, 0.039924, 0.039924, 0.039924, 0.03678264], [1516808820000, 0.0402166, 0.0402166, 0.03990058, 0.03990058, 2.0], [1516808880000, 0.0400318, 0.0400318, 0.0400318, 0.0400318, 0.027478], [1516808940000, 0.04024853, 0.04025, 0.04024847, 0.04025, 2.87575459], [1516809000000, 0.04025, 0.040327, 0.04024999, 0.04031799, 33.8497224], [1516809060000, 0.04004723, 0.04004723, 0.04004723, 0.04004723, 0.01503197], [1516809120000, 0.04006723, 0.040284, 0.03990609, 0.04021833, 15.62995187], [1516809180000, 0.04028399, 0.04033, 0.04028399, 0.04033, 2.12550809], [1516809240000, 0.04033, 0.04039999, 0.03991211, 0.04034999, 38.44330725], [1516809300000, 0.04006997, 0.04034797, 0.03994654, 0.03994654, 8.89452031], [1516809360000, 0.039948, 0.03994808, 0.039948, 0.03994808, 0.15653993], [1516809420000, 0.03994809, 0.03994809, 0.03994809, 0.03994809, 0.39362754], [1516809480000, 0.03996301, 0.03996311, 0.03996301, 0.03996301, 1.24383636], [1516809540000, 0.04023399, 0.04023399, 0.04023399, 0.04023399, 1.5339163], [1516809600000, 0.04015929, 0.0403419, 0.04, 0.04033898, 7.43973851], [1516809660000, 0.04000001, 0.04044607, 0.04000001, 0.04000401, 32.06764131], [1516809720000, 0.04010581, 0.04039926, 0.04, 0.04039917, 27.12594926], [1516809780000, 0.04000002, 0.04039867, 0.04000002, 0.040015, 0.84994983], [1516809840000, 0.040015, 0.0404132, 0.04001496, 0.04016963, 33.44006044], [1516809900000, 0.04016963, 0.040418, 0.04016963, 0.04039867, 28.6054994], [1516809960000, 0.04016963, 0.04016963, 0.04016963, 0.04016963, 0.02308609], [1516810020000, 0.0401, 0.04010001, 0.0401, 0.04010001, 0.25917315], [1516810140000, 0.04016963, 0.04016963, 0.04016963, 0.04016963, 0.07022559], [1516810200000, 0.04016963, 0.04016963, 0.0401696, 0.0401696, 0.94683341], [1516810260000, 0.0401696, 0.0401696, 0.0401696, 0.0401696, 3.99980974], [1516810320000, 0.04013382, 0.04013382, 0.04010002, 0.04010002, 0.22918065], [1516810440000, 0.0401696, 0.04044405, 0.04010102, 0.04010102, 106.73341102], [1516810500000, 0.04044403, 0.04044404, 0.04044403, 0.04044404, 0.24725546], [1516810560000, 0.0402, 0.0402, 0.0402, 0.0402, 0.02], [1516810620000, 0.04044399, 0.04044399, 0.04044399, 0.04044399, 0.04024144], [1516810680000, 0.0402, 0.0402, 0.0402, 0.0402, 1.07381523], [1516810740000, 0.0402, 0.0402, 0.0402, 0.0402, 1.5], [1516810800000, 0.04043898, 0.04043899, 0.04021, 0.04043899, 2.41959282], [1516810860000, 0.04021, 0.04021, 0.0402, 0.0402, 1.23639617], [1516810920000, 0.0402, 0.0402, 0.0402, 0.0402, 27.79348964], [1516810980000, 0.0401, 0.0402, 0.0401, 0.0402, 17.68361202], [1516811040000, 0.04010001, 0.04044392, 0.0401, 0.04044392, 86.52887969], [1516811100000, 0.04044385, 0.04044385, 0.0401001, 0.0401001, 0.70182534], [1516811160000, 0.0401, 0.04010006, 0.0401, 0.04010006, 0.09531997], [1516811220000, 0.0401, 0.0401, 0.0401, 0.0401, 0.93125312], [1516811280000, 0.0401, 0.0401, 0.0401, 0.0401, 0.15030751], [1516811340000, 0.04010002, 0.04010002, 0.04010002, 0.04010002, 0.20070984], [1516811400000, 0.04010002, 0.04038684, 0.04010002, 0.0403867, 0.36286078], [1516811460000, 0.04038682, 0.04038682, 0.04038675, 0.04038675, 0.46627748], [1516811520000, 0.04010001, 0.04010001, 0.04010001, 0.04010001, 0.04626649], [1516811580000, 0.04010001, 0.04010001, 0.04010001, 0.04010001, 1.1327609], [1516811640000, 0.04010001, 0.04034995, 0.04010001, 0.04034995, 1.30637914], [1516811700000, 0.04034994, 0.04034994, 0.04034993, 0.04034994, 0.74349624], [1516811820000, 0.04010001, 0.0402, 0.0401, 0.0401, 6.552383], [1516811940000, 0.04010002, 0.04010002, 0.04010002, 0.04010002, 0.01491169], [1516812000000, 0.04010002, 0.04029993, 0.04010002, 0.04029993, 0.66707158], [1516812060000, 0.04029995, 0.04029995, 0.04029995, 0.04029995, 0.02520482], [1516812120000, 0.0402, 0.0402, 0.0402, 0.0402, 0.02245], [1516812180000, 0.0402, 0.0402, 0.0402, 0.0402, 1.6849905], [1516812240000, 0.0402, 0.0402, 0.0402, 0.0402, 95.12871252], [1516812300000, 0.0402, 0.04029797, 0.0402, 0.04029797, 1.47987601], [1516812360000, 0.0402, 0.0402, 0.0402, 0.0402, 5.96401124], [1516812420000, 0.0402, 0.0402, 0.04010006, 0.04010006, 0.34409045], [1516812480000, 0.04015004, 0.04015004, 0.04015004, 0.04015004, 0.02745951], [1516812540000, 0.04015104, 0.04015104, 0.04015104, 0.04015104, 0.05491764], [1516812600000, 0.04015104, 0.04015104, 0.04015005, 0.04015005, 5.33539322], [1516812660000, 0.04015005, 0.04015005, 0.04015005, 0.04015005, 0.05491898], [1516812720000, 0.04015006, 0.04015006, 0.0401, 0.0401, 12.95437417], [1516812780000, 0.0400001, 0.0400001, 0.0400001, 0.0400001, 0.42011252], [1516812840000, 0.0400001, 0.0400001, 0.0399, 0.0399, 5.3971166], [1516812900000, 0.04, 0.04, 0.04, 0.04, 0.59451091], [1516812960000, 0.03999999, 0.03999999, 0.03989803, 0.03989803, 0.44478544], [1516813020000, 0.03989804, 0.03989804, 0.039898, 0.039898, 2.1], [1516813080000, 0.0399999, 0.03999999, 0.0399999, 0.03999999, 0.75787185], [1516813140000, 0.03995999, 0.03999999, 0.03995999, 0.03999999, 0.05958404], [1516813200000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 0.28951901], [1516813260000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 0.0639356], [1516813320000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 0.74152461], [1516813380000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 0.77086653], [1516813440000, 0.03999999, 0.03999999, 0.03996001, 0.03999999, 46.62038447], [1516813500000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 0.03935112], [1516813560000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 0.03910256], [1516813620000, 0.03996001, 0.03999999, 0.03996001, 0.03999999, 0.47450554], [1516813680000, 0.03999999, 0.03999999, 0.03997999, 0.03997999, 0.06653879], [1516813740000, 0.03997999, 0.03997999, 0.03996, 0.03997999, 7.9062607], [1516813800000, 0.03997999, 0.03999999, 0.03997999, 0.03997999, 3.53324469], [1516813860000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 0.73334765], [1516813920000, 0.03997999, 0.03999999, 0.03996, 0.03997999, 66.46525856], [1516813980000, 0.03999999, 0.0402, 0.039891, 0.04007245, 80.9869249], [1516814040000, 0.04007245, 0.04029107, 0.04007245, 0.04029107, 4.33970697], [1516814100000, 0.04029107, 0.04029107, 0.04026702, 0.04026703, 1.39709453], [1516814160000, 0.04026703, 0.04029106, 0.04026703, 0.04029106, 0.75675476], [1516814220000, 0.04029105, 0.04029105, 0.04029105, 0.04029105, 0.73], [1516814280000, 0.04029104, 0.04029104, 0.04029104, 0.04029104, 0.01879424], [1516814340000, 0.03999114, 0.03999114, 0.03999114, 0.03999114, 0.02020601], [1516814400000, 0.03999118, 0.04029103, 0.03999118, 0.04028103, 1.11949306], [1516814460000, 0.04028102, 0.04028104, 0.04007962, 0.04007962, 12.85591676], [1516814520000, 0.04007962, 0.04007962, 0.04007962, 0.04007962, 1.0482179], [1516814580000, 0.04007962, 0.04007962, 0.04007962, 0.04007962, 0.29518601], [1516814640000, 0.04007962, 0.04028098, 0.04007962, 0.04028098, 0.22491444], [1516814700000, 0.04007962, 0.04007962, 0.04007962, 0.04007962, 1.21176196], [1516814760000, 0.04007962, 0.04007962, 0.04007962, 0.04007962, 0.18775922], [1516814880000, 0.04007962, 0.04007962, 0.04007962, 0.04007962, 3.049], [1516814940000, 0.04007962, 0.0402808, 0.04007962, 0.04007962, 1.06391321], [1516815000000, 0.04028078, 0.04028103, 0.04007962, 0.04017962, 2.36994223], [1516815060000, 0.04017962, 0.04017962, 0.04007962, 0.04007962, 1.91421259], [1516815120000, 0.04007962, 0.0401589, 0.04007962, 0.0401589, 0.04966609], [1516815180000, 0.0401589, 0.04028081, 0.0401589, 0.04028081, 0.6], [1516815240000, 0.04007963, 0.04028079, 0.04007963, 0.04007963, 22.33124544], [1516815300000, 0.04007963, 0.04028077, 0.04007963, 0.04028077, 1.26903362], [1516815360000, 0.04007963, 0.04007963, 0.04007963, 0.04007963, 9.87549405], [1516815420000, 0.04007963, 0.04007963, 0.03999105, 0.03999105, 12.61333797], [1516815480000, 0.04003954, 0.04003954, 0.03999106, 0.04003954, 0.55570746], [1516815540000, 0.04003954, 0.04003954, 0.04003954, 0.04003954, 0.05513768], [1516815600000, 0.03999109, 0.04028552, 0.03999109, 0.04028552, 0.79006542], [1516815660000, 0.0402855, 0.04028553, 0.03999111, 0.03999111, 32.00619839], [1516815720000, 0.04000004, 0.04000004, 0.04000004, 0.04000004, 0.02756866], [1516815780000, 0.04000004, 0.04000004, 0.03999111, 0.04000004, 0.11775772], [1516815840000, 0.04000004, 0.04000004, 0.04000004, 0.04000004, 0.03012263], [1516815900000, 0.04028327, 0.0402855, 0.04028327, 0.0402855, 0.74471191], [1516815960000, 0.04005098, 0.04028555, 0.04005098, 0.04028555, 2.70838472], [1516816020000, 0.04000006, 0.04000006, 0.04000006, 0.04000006, 0.45260189], [1516816080000, 0.04000006, 0.04000006, 0.04000004, 0.04000004, 0.86291283], [1516816200000, 0.04028209, 0.04028209, 0.04000005, 0.04028207, 0.8672941], [1516816260000, 0.04000014, 0.04000014, 0.04000014, 0.04000014, 0.03038393], [1516816320000, 0.04028203, 0.04028203, 0.04000004, 0.04000019, 11.62548446], [1516816380000, 0.0400002, 0.04000022, 0.04000004, 0.04000022, 1.37961648], [1516816440000, 0.04000013, 0.04023314, 0.04000013, 0.04000013, 1.16493125], [1516816500000, 0.04000013, 0.04023314, 0.04000013, 0.04000013, 3.93580748], [1516816560000, 0.04000013, 0.04000013, 0.04000013, 0.04000013, 0.07557445], [1516816620000, 0.04026842, 0.04026842, 0.04000013, 0.04000013, 23.48792663], [1516816680000, 0.04000014, 0.04000014, 0.04000013, 0.04000013, 24.77439437], [1516816740000, 0.04000013, 0.04000014, 0.04000013, 0.04000013, 6.71990409], [1516816800000, 0.04000014, 0.04025227, 0.04000013, 0.04025227, 2.03000217], [1516816920000, 0.04000014, 0.04025217, 0.03999105, 0.03999105, 20.80474057], [1516816980000, 0.04000014, 0.04000014, 0.04000014, 0.04000014, 1.08], [1516817040000, 0.04000016, 0.04000016, 0.04000014, 0.04000014, 12.21588506], [1516817100000, 0.04025216, 0.04025216, 0.04000014, 0.04000014, 35.32157344], [1516817160000, 0.04025206, 0.04025206, 0.04025206, 0.04025206, 0.85645468], [1516817280000, 0.04025197, 0.04025197, 0.04000017, 0.04000017, 0.16707804], [1516817400000, 0.04000018, 0.04000018, 0.04000016, 0.04000017, 0.37961243], [1516817460000, 0.04000017, 0.04000018, 0.04000017, 0.04000018, 0.32980788], [1516817520000, 0.04000018, 0.04025206, 0.04000018, 0.04025206, 0.39027355], [1516817700000, 0.04000019, 0.04000019, 0.04000019, 0.04000019, 1.31448474], [1516817760000, 0.04000019, 0.04000019, 0.04000018, 0.04000018, 0.29802516], [1516817820000, 0.04000017, 0.04000017, 0.04000017, 0.04000017, 0.03020122], [1516817880000, 0.04000017, 0.04000017, 0.04000017, 0.04000017, 0.09256231], [1516817940000, 0.04000017, 0.04000019, 0.04000004, 0.04000004, 9.53355005], [1516818000000, 0.04025, 0.04025, 0.04025, 0.04025, 0.935365], [1516818060000, 0.04025, 0.04025, 0.04025, 0.04025, 0.07434782], [1516818120000, 0.04000005, 0.04000005, 0.04000005, 0.04000005, 0.02010955], [1516818240000, 0.04000006, 0.04000006, 0.04000005, 0.04000005, 0.24888713], [1516818420000, 0.04000006, 0.04000006, 0.04000005, 0.04000005, 1.3298433], [1516818480000, 0.04000005, 0.04000005, 0.04000005, 0.04000005, 0.501], [1516818540000, 0.04000005, 0.04025205, 0.04000005, 0.04025205, 0.6348323], [1516818600000, 0.04000005, 0.04000005, 0.04000005, 0.04000005, 0.10823654], [1516818660000, 0.04000005, 0.04025202, 0.04000005, 0.04025202, 1.32094602], [1516818780000, 0.040004, 0.040004, 0.04000005, 0.04000005, 0.07315815], [1516818840000, 0.040004, 0.040004, 0.04000005, 0.04000005, 11.01481313], [1516818900000, 0.04000005, 0.04025193, 0.04000005, 0.04025193, 0.29543547], [1516818960000, 0.04000009, 0.04000009, 0.04000009, 0.04000009, 0.06709641], [1516819020000, 0.04000009, 0.04000009, 0.04000009, 0.04000009, 2.02978143], [1516819080000, 0.04000009, 0.04021186, 0.04000007, 0.04000007, 1.91119932], [1516819140000, 0.04000008, 0.04000008, 0.04000008, 0.04000008, 0.08803332], [1516819200000, 0.040211, 0.04025188, 0.04005016, 0.0400816, 7.39766916], [1516819260000, 0.04000012, 0.04000015, 0.04000012, 0.04000015, 0.10916104], [1516819320000, 0.0400816, 0.0400816, 0.04000017, 0.04000017, 0.14034126], [1516819380000, 0.0400816, 0.0400816, 0.04000017, 0.04000018, 0.10743101], [1516819500000, 0.0400816, 0.04025204, 0.0400816, 0.04025204, 0.4442193], [1516819560000, 0.04025204, 0.04025204, 0.04025204, 0.04025204, 0.17990791], [1516819680000, 0.04000101, 0.04000101, 0.04000027, 0.04000101, 2.34230746], [1516819740000, 0.04025199, 0.04025201, 0.04000101, 0.04000101, 1.49212359], [1516819800000, 0.04000101, 0.04000101, 0.04000101, 0.04000101, 1.09747431], [1516819860000, 0.04000101, 0.04000101, 0.04000016, 0.04000016, 9.2318307], [1516819920000, 0.04000016, 0.04000018, 0.04000016, 0.04000018, 3.42233832], [1516819980000, 0.04000018, 0.04000018, 0.04000018, 0.04000018, 2.05618315], [1516820040000, 0.0400002, 0.0402, 0.04000017, 0.0402, 1.05812219], [1516820100000, 0.0402, 0.0402, 0.0402, 0.0402, 0.38832732], [1516820160000, 0.0402, 0.0402, 0.0402, 0.0402, 0.05], [1516820280000, 0.0402, 0.04020001, 0.040008, 0.040008, 3.45578208], [1516820340000, 0.0402, 0.0402, 0.0402, 0.0402, 0.07479754], [1516820400000, 0.0402, 0.0402, 0.0402, 0.0402, 0.24875621], [1516820520000, 0.0402, 0.0402, 0.040008, 0.04019999, 0.46528104], [1516820580000, 0.0402, 0.0402, 0.0402, 0.0402, 0.1849903], [1516820640000, 0.0402, 0.0402, 0.04000016, 0.04003277, 8.14286982], [1516820700000, 0.04003277, 0.0402, 0.04003277, 0.04003277, 18.44716561], [1516820760000, 0.04003277, 0.04003277, 0.04001176, 0.04003276, 10.74132073], [1516820820000, 0.04003276, 0.04003276, 0.039996, 0.04003276, 12.2901911], [1516820880000, 0.04020001, 0.04020001, 0.04003276, 0.04020001, 3.13355123], [1516820940000, 0.04003276, 0.04003276, 0.04003276, 0.04003276, 0.08054198], [1516821000000, 0.0402, 0.04020001, 0.0402, 0.04020001, 0.24875621], [1516821240000, 0.04004, 0.04020001, 0.04004, 0.04020001, 2.27428212], [1516821300000, 0.04004, 0.04004, 0.04004, 0.04004, 0.05506994], [1516821360000, 0.04004, 0.04004, 0.04004, 0.04004, 0.07523781], [1516821420000, 0.04004, 0.04004, 0.04004, 0.04004, 6.91874982], [1516821480000, 0.04004, 0.04019997, 0.04004, 0.04019997, 0.80110148], [1516821540000, 0.04004, 0.04004, 0.04003999, 0.04003999, 3.37712079], [1516821600000, 0.04004, 0.04019992, 0.04004, 0.04004, 1.93312704], [1516821660000, 0.04019991, 0.04025198, 0.04019991, 0.04025198, 2.059641], [1516821720000, 0.04025199, 0.04027999, 0.04003999, 0.04025205, 54.65522059], [1516821780000, 0.04025205, 0.04025205, 0.04003277, 0.04003277, 12.25285836], [1516821840000, 0.04003277, 0.04028, 0.04003277, 0.04003278, 24.84654464], [1516821900000, 0.04003277, 0.04003278, 0.04003277, 0.04003278, 48.62106122], [1516821960000, 0.04003278, 0.04026025, 0.039891, 0.04015013, 36.72295591], [1516822020000, 0.03989601, 0.03989601, 0.03989601, 0.03989601, 16.47587], [1516822080000, 0.04015013, 0.04027993, 0.039901, 0.039901, 25.11974142], [1516822140000, 0.04027989, 0.04028, 0.03989604, 0.04026207, 21.32201503], [1516822200000, 0.039915, 0.04027998, 0.039891, 0.039896, 22.67831806], [1516822260000, 0.039896, 0.04028, 0.039896, 0.04026014, 5.02667831], [1516822320000, 0.04026014, 0.04026014, 0.03990004, 0.03994503, 2.77715173], [1516822380000, 0.04026003, 0.04026003, 0.04025995, 0.04025995, 0.53899852], [1516822440000, 0.03994166, 0.04025995, 0.03994166, 0.04025995, 1.4966618], [1516822500000, 0.04025995, 0.04025995, 0.04025995, 0.04025995, 0.87208796], [1516822560000, 0.03996039, 0.03996039, 0.03996039, 0.03996039, 0.35988327], [1516822620000, 0.03996052, 0.03996052, 0.03996038, 0.03996038, 0.30346518], [1516822680000, 0.04025975, 0.04025975, 0.0399604, 0.0399604, 0.347], [1516822740000, 0.04025038, 0.04025038, 0.03994166, 0.03994166, 39.46723612], [1516822800000, 0.03994167, 0.04025033, 0.03994167, 0.04025032, 0.6545907], [1516822860000, 0.0402503, 0.0402503, 0.03996041, 0.03996041, 0.28623224], [1516822920000, 0.0401189, 0.0401189, 0.03994167, 0.03994167, 0.63426977], [1516823040000, 0.0401189, 0.04023926, 0.03996116, 0.03996116, 3.21975507], [1516823100000, 0.0399417, 0.04013815, 0.03994167, 0.03994167, 1.33699336], [1516823160000, 0.03994167, 0.04013815, 0.03994167, 0.04013815, 8.34838455], [1516823220000, 0.039947, 0.04004257, 0.03994367, 0.03999, 1.60995737], [1516823280000, 0.03999, 0.03999, 0.03994167, 0.03994167, 17.13509493], [1516823340000, 0.03994169, 0.03994169, 0.03994167, 0.03994169, 4.81504468], [1516823400000, 0.03999, 0.04, 0.03999, 0.04, 4.3451117], [1516823460000, 0.04, 0.0403, 0.04, 0.04, 124.94688933], [1516823520000, 0.04025977, 0.0402599, 0.04025977, 0.0402599, 4.72407677], [1516823640000, 0.04001779, 0.04001779, 0.04, 0.04, 0.20265643], [1516823700000, 0.04, 0.04001779, 0.04, 0.04001779, 0.65537165], [1516823820000, 0.04001779, 0.04001779, 0.04001779, 0.04001779, 0.41975777], [1516823880000, 0.04000007, 0.04000007, 0.04000007, 0.04000007, 0.20122637], [1516823940000, 0.04000007, 0.04000007, 0.04000007, 0.04000007, 0.22234876], [1516824000000, 0.04001779, 0.04025989, 0.04001779, 0.04025989, 2.10579651], [1516824060000, 0.04025989, 0.040328, 0.04000007, 0.04025986, 7.54294076], [1516824120000, 0.04025986, 0.04025986, 0.0402598, 0.0402598, 2.27858896], [1516824180000, 0.0400008, 0.0400008, 0.0400008, 0.0400008, 0.05255957], [1516824240000, 0.0400008, 0.04024988, 0.0400008, 0.04024988, 0.65132899], [1516824300000, 0.04024978, 0.04024978, 0.04013017, 0.04022999, 3.04918531], [1516824360000, 0.04022997, 0.04023, 0.04000007, 0.04000007, 0.80053603], [1516824420000, 0.04013017, 0.04013017, 0.04000008, 0.04000008, 0.86379015], [1516824480000, 0.0400001, 0.0400001, 0.039891, 0.039891, 47.41826231], [1516824540000, 0.039895, 0.03989501, 0.039895, 0.03989501, 4.4012041], [1516824600000, 0.03989501, 0.04023994, 0.03989003, 0.04023994, 20.16190421], [1516824660000, 0.03989004, 0.04023991, 0.03987388, 0.04023991, 3.42594143], [1516824720000, 0.04003991, 0.04003991, 0.04003991, 0.04003991, 0.14785275], [1516824780000, 0.04003991, 0.04023994, 0.04003991, 0.04023994, 2.19775231], [1516824840000, 0.04003991, 0.04005, 0.03978814, 0.03978814, 54.76703322], [1516824900000, 0.04018601, 0.04023992, 0.03978869, 0.03978877, 33.23346364], [1516824960000, 0.03978892, 0.03978892, 0.03978892, 0.03978892, 0.04707413], [1516825020000, 0.03978915, 0.04023911, 0.03978915, 0.04023911, 0.09043546], [1516825140000, 0.0402378, 0.0402378, 0.04003692, 0.04003692, 1.76669606], [1516825200000, 0.04003692, 0.04003692, 0.04003692, 0.04003692, 1.49861748], [1516825260000, 0.04003692, 0.04003692, 0.04003692, 0.04003692, 5.13395545], [1516825320000, 0.04003692, 0.04003692, 0.04003692, 0.04003692, 0.04700652], [1516825380000, 0.04003692, 0.04003692, 0.04003692, 0.04003692, 1.1640608], [1516825440000, 0.04003692, 0.04003692, 0.04003691, 0.04003691, 0.48948135], [1516825500000, 0.04003692, 0.04003693, 0.04003692, 0.04003693, 4.61411952], [1516825560000, 0.04003692, 0.04003692, 0.04003692, 0.04003692, 0.58213673], [1516825620000, 0.04003692, 0.04003692, 0.04003692, 0.04003692, 0.05281809], [1516825680000, 0.04003692, 0.04003692, 0.04003691, 0.04003691, 1.35366081], [1516825800000, 0.04003691, 0.04003693, 0.04003691, 0.04003693, 0.98328883], [1516825920000, 0.04003691, 0.04003693, 0.04003691, 0.04003693, 0.76997003], [1516826040000, 0.04003692, 0.04003692, 0.04003692, 0.04003692, 0.85820724], [1516826100000, 0.04003692, 0.04003692, 0.04003692, 0.04003692, 0.65657128], [1516826160000, 0.04003691, 0.04003693, 0.04003691, 0.04003693, 3.8867084], [1516826220000, 0.04003691, 0.04003693, 0.04003691, 0.04003693, 0.19749746], [1516826280000, 0.04003693, 0.04003693, 0.04003693, 0.04003693, 0.05507456], [1516826400000, 0.04003693, 0.04003693, 0.04003693, 0.04003693, 2.02754734], [1516826520000, 0.04003693, 0.04005, 0.04003692, 0.04005, 7.85558908], [1516826580000, 0.04003693, 0.04003693, 0.04003692, 0.04003692, 7.03801888], [1516826640000, 0.04003692, 0.04003693, 0.04003692, 0.04003693, 0.23971586], [1516826700000, 0.04005, 0.04005, 0.04003692, 0.04003692, 7.85757132], [1516826760000, 0.04003692, 0.04005, 0.04003692, 0.04003692, 0.25997041], [1516826820000, 0.04003692, 0.04003692, 0.04003692, 0.04003692, 0.0127], [1516826880000, 0.0400499, 0.0400499, 0.0400499, 0.0400499, 0.013], [1516826940000, 0.0400499, 0.04005, 0.0400499, 0.04005, 2.38602996], [1516827000000, 0.04003693, 0.04005, 0.04003692, 0.04005, 14.04758216], [1516827060000, 0.04005, 0.04005, 0.04003692, 0.04005, 41.92459492], [1516827120000, 0.04003692, 0.04003692, 0.04003692, 0.04003692, 0.05507416], [1516827240000, 0.0399033, 0.04003692, 0.0399033, 0.04003692, 0.05155606], [1516827300000, 0.04003692, 0.04003693, 0.04003692, 0.04003692, 1.82852435], [1516827420000, 0.0400369, 0.0400369, 0.0400369, 0.0400369, 0.04995391], [1516827480000, 0.0400369, 0.04003691, 0.0399033, 0.0399033, 10.78164695], [1516827540000, 0.04003691, 0.04003691, 0.0399033, 0.0399033, 2.76863181], [1516827600000, 0.0400369, 0.0400369, 0.04, 0.04, 1.22984961], [1516827660000, 0.04, 0.04, 0.04, 0.04, 0.10963136], [1516827720000, 0.0400369, 0.0400369, 0.04, 0.04, 0.26466306], [1516827780000, 0.04, 0.04003627, 0.0399033, 0.0399033, 0.790505], [1516827840000, 0.04003625, 0.04003625, 0.04003623, 0.04003624, 0.14269681], [1516827900000, 0.04003623, 0.04003623, 0.0399033, 0.0399033, 0.68467228], [1516827960000, 0.04003618, 0.04003619, 0.04003618, 0.04003619, 0.1045754], [1516828020000, 0.04, 0.040035, 0.04, 0.040035, 0.80520331], [1516828080000, 0.04003498, 0.04003498, 0.04003496, 0.04003496, 0.50973298], [1516828140000, 0.04003198, 0.04003198, 0.04, 0.04, 0.81314385], [1516828200000, 0.04000095, 0.04002692, 0.04, 0.04, 0.83115721], [1516828260000, 0.04002692, 0.04002692, 0.04, 0.04, 0.30048451], [1516828320000, 0.04002692, 0.04003497, 0.04002691, 0.04003497, 14.53834306], [1516828380000, 0.0400269, 0.0400269, 0.0400269, 0.0400269, 0.20202471], [1516828500000, 0.04, 0.04002691, 0.04, 0.04002691, 29.02785883], [1516828620000, 0.04002689, 0.04002689, 0.04, 0.04, 0.26912785], [1516828680000, 0.04, 0.04, 0.04, 0.04, 5.13245537], [1516828740000, 0.04, 0.04002689, 0.04, 0.04002689, 1.49575526], [1516828800000, 0.04, 0.04, 0.04, 0.04, 21.00178699], [1516828860000, 0.04, 0.04002688, 0.03981503, 0.03981503, 38.38336831], [1516828920000, 0.04002688, 0.04002688, 0.03982676, 0.03982676, 1.04322519], [1516829040000, 0.03982676, 0.03982676, 0.03978814, 0.03978814, 2.0], [1516829100000, 0.04001227, 0.04001229, 0.03974467, 0.03976781, 30.19307282], [1516829160000, 0.04001224, 0.04001224, 0.03975002, 0.03975002, 8.07708946], [1516829220000, 0.03975003, 0.04001224, 0.03975003, 0.04001224, 0.45478826], [1516829340000, 0.04001223, 0.04001223, 0.04001223, 0.04001223, 0.17153192], [1516829400000, 0.04001223, 0.04001223, 0.03975007, 0.04001221, 1.06699136], [1516829460000, 0.03975019, 0.04001222, 0.03975019, 0.04001221, 2.45087519], [1516829520000, 0.04001222, 0.04001223, 0.04001222, 0.04001222, 7.08727461], [1516829580000, 0.04001222, 0.04001222, 0.04001222, 0.04001222, 12.35610411], [1516829700000, 0.040012, 0.04001222, 0.040012, 0.04001221, 0.50730328], [1516829760000, 0.04001221, 0.04001223, 0.04001221, 0.04001221, 2.0601377], [1516829820000, 0.0400122, 0.04005, 0.0400122, 0.04005, 39.32338059], [1516829880000, 0.04002692, 0.04004999, 0.03975515, 0.03979034, 10.28823827], [1516829940000, 0.04004997, 0.04004997, 0.03975514, 0.04003746, 0.90848948], [1516830000000, 0.04003746, 0.04004989, 0.03985477, 0.03985477, 2.01715035], [1516830060000, 0.03980359, 0.0400393, 0.03975512, 0.03975713, 74.48678484], [1516830120000, 0.03975713, 0.04004998, 0.03975713, 0.04004994, 21.74040241], [1516830180000, 0.04004999, 0.04004999, 0.04004999, 0.04004999, 0.02956108], [1516830300000, 0.0397621, 0.03976215, 0.0397621, 0.03976215, 0.2469137], [1516830360000, 0.03976218, 0.04004996, 0.03976218, 0.04004986, 2.35266253], [1516830420000, 0.04004985, 0.04004985, 0.04004985, 0.04004985, 0.02933904], [1516830480000, 0.04004986, 0.04004989, 0.04004986, 0.04004989, 0.69427716], [1516830540000, 0.04004986, 0.04004986, 0.04004986, 0.04004986, 2.18610023], [1516830600000, 0.04004986, 0.04004986, 0.04004986, 0.04004986, 0.33564985], [1516830660000, 0.04004986, 0.04004986, 0.04004986, 0.04004986, 0.12660843], [1516830720000, 0.04004986, 0.04004986, 0.04004986, 0.04004986, 3.0], [1516830780000, 0.04004986, 0.04004986, 0.04004986, 0.04004986, 0.2], [1516830840000, 0.04004986, 0.04004986, 0.04004984, 0.04004984, 1.87307089], [1516830900000, 0.04004984, 0.04004985, 0.04004982, 0.04004985, 0.60911046], [1516830960000, 0.04004985, 0.04004985, 0.0399, 0.0399, 0.18595751], [1516831020000, 0.04004983, 0.04004983, 0.04004983, 0.04004983, 0.1291529], [1516831080000, 0.04004983, 0.04004983, 0.0399, 0.0399497, 3.13013777], [1516831140000, 0.03995, 0.03995, 0.03995, 0.03995, 0.027597], [1516831200000, 0.03995, 0.04005, 0.03995, 0.04005, 5.00773737], [1516831260000, 0.04005, 0.04005, 0.04005, 0.04005, 1.61301707], [1516831380000, 0.0399501, 0.0399501, 0.0399501, 0.0399501, 0.0503148], [1516831440000, 0.04, 0.04, 0.0399501, 0.0399501, 0.31626357], [1516831500000, 0.04005, 0.04005, 0.04, 0.04, 4.3916865], [1516831560000, 0.04, 0.04005001, 0.03995, 0.03995, 150.55090239], [1516831620000, 0.03995, 0.03995, 0.03995, 0.03995, 1.94269343], [1516831680000, 0.0399501, 0.04002711, 0.03995, 0.03995, 15.55446894], [1516831740000, 0.03995, 0.03995, 0.03995, 0.03995, 0.40877157], [1516831800000, 0.04004999, 0.04004999, 0.03995, 0.04004999, 31.5], [1516831860000, 0.03981301, 0.03981313, 0.03981301, 0.03981313, 0.16549851], [1516831920000, 0.03981638, 0.04004999, 0.03981638, 0.04004999, 4.75917], [1516831980000, 0.03981542, 0.03981542, 0.03981542, 0.03981542, 0.33080357], [1516832040000, 0.03981551, 0.03981551, 0.03981551, 0.03981551, 0.29641775], [1516832100000, 0.04004998, 0.04005, 0.04004998, 0.04005, 0.54610564], [1516832160000, 0.04004999, 0.04004999, 0.04004999, 0.04004999, 3.42102392], [1516832220000, 0.04010029, 0.04010029, 0.04010029, 0.04010029, 0.02100583], [1516832280000, 0.04010028, 0.04010028, 0.04004999, 0.04004999, 1.80980298], [1516832400000, 0.04005, 0.0401003, 0.04005, 0.0401003, 0.24968789], [1516832520000, 0.04005, 0.04005, 0.04005, 0.04005, 0.01472], [1516832580000, 0.0400503, 0.0400503, 0.0400503, 0.0400503, 1.73522652], [1516832640000, 0.0400503, 0.0400503, 0.04005, 0.04005, 0.97855777], [1516832700000, 0.04005, 0.04005, 0.04, 0.04, 5.42576205], [1516832760000, 0.04, 0.04, 0.04, 0.04, 1.95153299], [1516832820000, 0.04, 0.04, 0.03981551, 0.03981551, 3.15125681], [1516832880000, 0.03981551, 0.03981551, 0.03981551, 0.03981551, 0.06124475], [1516832940000, 0.03981551, 0.0399, 0.03981539, 0.03981539, 7.78326246], [1516833000000, 0.0400503, 0.0400503, 0.0400503, 0.0400503, 1.50550299], [1516833060000, 0.0400503, 0.0400503, 0.0400503, 0.0400503, 0.01978865], [1516833120000, 0.0400503, 0.0400503, 0.04005028, 0.04005028, 1.32242886], [1516833180000, 0.04, 0.04005031, 0.04, 0.04005031, 83.39171142], [1516833240000, 0.04005031, 0.04005031, 0.04005031, 0.04005031, 0.05505576], [1516833300000, 0.04005031, 0.04005031, 0.04005031, 0.04005031, 0.40090606], [1516833360000, 0.04005031, 0.04019999, 0.04005031, 0.04005031, 6.83469198], [1516833420000, 0.04005031, 0.04005031, 0.04005031, 0.04005031, 1.98248972], [1516833480000, 0.04005031, 0.04018466, 0.04005031, 0.04005031, 13.58274112], [1516833540000, 0.04005031, 0.04005031, 0.04005031, 0.04005031, 0.05505576], [1516833600000, 0.04005031, 0.04005031, 0.04005031, 0.04005031, 0.05505576], [1516833660000, 0.04005031, 0.04018867, 0.04005031, 0.04005031, 0.85504674], [1516833720000, 0.04005031, 0.04005031, 0.04005031, 0.04005031, 5.76583882], [1516833780000, 0.04005031, 0.04005031, 0.04005031, 0.04005031, 6.01599475], [1516833840000, 0.04018691, 0.04018955, 0.04005031, 0.04018955, 1.19456535], [1516833900000, 0.04018955, 0.04018955, 0.04018955, 0.04018955, 0.02488208], [1516833960000, 0.04018955, 0.04018955, 0.04018955, 0.04018955, 0.01833855], [1516834020000, 0.04018955, 0.04018955, 0.04018955, 0.04018955, 0.17188346], [1516834080000, 0.04018955, 0.04019492, 0.04018955, 0.04019492, 2.16728123], [1516834140000, 0.04019492, 0.0402, 0.04019492, 0.0402, 6.12791476], [1516834200000, 0.0402, 0.04023807, 0.0402, 0.0402, 9.17771183], [1516834260000, 0.04023807, 0.04023807, 0.0402, 0.0402, 0.35710922], [1516834320000, 0.0402, 0.04023807, 0.0402, 0.04023807, 8.50692454], [1516834380000, 0.04023807, 0.04023807, 0.0402, 0.0402, 2.91198396], [1516834440000, 0.0402, 0.0402, 0.04005031, 0.04005031, 22.75981737], [1516834500000, 0.04005031, 0.04005031, 0.039949, 0.04005031, 14.08961395], [1516834560000, 0.04005031, 0.04005031, 0.03982, 0.03983104, 3.20217695], [1516834680000, 0.04, 0.04003015, 0.039831, 0.04003015, 2.08914212], [1516834740000, 0.039831, 0.04005031, 0.039831, 0.04005031, 2.91918382], [1516834800000, 0.04015042, 0.04015042, 0.03982333, 0.04002244, 6.52232368], [1516834860000, 0.03982333, 0.04002242, 0.03982331, 0.04002242, 68.98024849], [1516834920000, 0.04002242, 0.04002242, 0.03982331, 0.04002242, 19.2301876], [1516834980000, 0.03982333, 0.03982333, 0.0398154, 0.0398154, 2.71429399], [1516835040000, 0.0398154, 0.03981541, 0.0398154, 0.03981541, 0.3301803], [1516835100000, 0.03981541, 0.04002237, 0.03981541, 0.04002237, 0.32051732], [1516835160000, 0.03981549, 0.0398155, 0.0398154, 0.0398154, 12.5931311], [1516835220000, 0.03981539, 0.04002242, 0.03981539, 0.04002242, 3.65584005], [1516835280000, 0.04002242, 0.04002242, 0.03981546, 0.03981546, 2.96658836], [1516835340000, 0.03981546, 0.04001452, 0.03981545, 0.04001452, 5.2878887], [1516835400000, 0.03981544, 0.04001451, 0.0398154, 0.03981544, 1.63929519], [1516835460000, 0.039825, 0.04001451, 0.0398154, 0.04001451, 13.88353689], [1516835520000, 0.03999758, 0.04001, 0.03981546, 0.03981745, 4.53106885], [1516835580000, 0.03981546, 0.04001, 0.03981546, 0.04001, 4.78289897], [1516835700000, 0.04, 0.04, 0.04, 0.04, 0.15140793], [1516835760000, 0.040002, 0.040002, 0.03981549, 0.03981549, 1.69667677], [1516835820000, 0.03981549, 0.03981549, 0.03981549, 0.03981549, 0.11537839], [1516835880000, 0.03981549, 0.0399, 0.03981549, 0.0399, 2.70427143], [1516835940000, 0.0399, 0.0399, 0.03981549, 0.03981549, 0.93659678], [1516836000000, 0.0399, 0.0399, 0.0399, 0.0399, 1.00250626], [1516836060000, 0.0399, 0.0399, 0.0399, 0.0399, 1.05568251], [1516836120000, 0.0399, 0.0399, 0.0399, 0.0399, 0.02506265], [1516836180000, 0.03982, 0.03982, 0.03982, 0.03982, 0.53392487], [1516836240000, 0.03982, 0.03982, 0.03982, 0.03982, 0.0378], [1516836300000, 0.0399, 0.0399, 0.0399, 0.0399, 0.89144436], [1516836360000, 0.03982001, 0.03989999, 0.03982001, 0.03989999, 0.63825085], [1516836420000, 0.03982501, 0.03983001, 0.03982501, 0.03983001, 0.1207], [1516836480000, 0.03989999, 0.04, 0.03989999, 0.04, 1.87992876], [1516836540000, 0.03982501, 0.04, 0.03982501, 0.04, 0.6930718], [1516836600000, 0.03982504, 0.04016599, 0.03982504, 0.04016599, 2.06295207], [1516836660000, 0.04010001, 0.04017099, 0.04010001, 0.04010001, 4.47246824], [1516836720000, 0.04017098, 0.04017098, 0.04010002, 0.04010002, 1.15767324], [1516836780000, 0.04010002, 0.04010002, 0.04010002, 0.04010002, 0.18079604], [1516836840000, 0.04010002, 0.04010002, 0.04010001, 0.04010001, 2.73047149], [1516836900000, 0.04017089, 0.04017089, 0.04010002, 0.04010002, 0.64727935], [1516836960000, 0.04010002, 0.04017088, 0.04010002, 0.04017086, 3.12475411], [1516837020000, 0.04010002, 0.04019383, 0.04010001, 0.04019378, 79.02665184], [1516837080000, 0.04019378, 0.04019378, 0.04019378, 0.04019378, 3.05885924], [1516837140000, 0.04019378, 0.0401938, 0.04010002, 0.04010002, 1.82431753], [1516837200000, 0.04010002, 0.04019369, 0.04010002, 0.04010002, 0.34663813], [1516837260000, 0.04010002, 0.04010002, 0.04010002, 0.04010002, 0.0549875], [1516837320000, 0.04010002, 0.04019357, 0.04010002, 0.04010002, 1.1781156], [1516837380000, 0.04010002, 0.04010002, 0.04010002, 0.04010002, 0.39346466], [1516837440000, 0.04015, 0.04019346, 0.04015, 0.04015, 0.75466463], [1516837500000, 0.04015, 0.04019337, 0.04015, 0.04015, 0.81439807], [1516837560000, 0.04015, 0.04015, 0.04015, 0.04015, 5.02745953], [1516837620000, 0.04015001, 0.04015001, 0.04015001, 0.04015001, 0.52591904], [1516837680000, 0.04015001, 0.04015001, 0.04015001, 0.04015001, 0.36891904], [1516837740000, 0.04015001, 0.04015001, 0.04015001, 0.04015001, 0.62591904], [1516837800000, 0.04015001, 0.04015001, 0.04015001, 0.04015001, 0.83991904], [1516837860000, 0.04015001, 0.04017145, 0.04015001, 0.04015001, 5.08152257], [1516837920000, 0.04015001, 0.04015001, 0.04015001, 0.04015001, 0.05491904], [1516837980000, 0.04015001, 0.04015001, 0.04015001, 0.04015001, 0.05491904], [1516838040000, 0.04017134, 0.04017134, 0.04015001, 0.04015001, 1.49901993], [1516838100000, 0.04015001, 0.04015301, 0.04015001, 0.04015001, 77.31829096], [1516838160000, 0.04015001, 0.04015001, 0.04015, 0.04015, 11.20624268], [1516838220000, 0.04015, 0.04015148, 0.04015, 0.04015148, 7.9871829], [1516838280000, 0.04015148, 0.04015149, 0.04015, 0.04015, 32.6859837], [1516838340000, 0.04015, 0.04015, 0.04015, 0.04015, 1.62897224], [1516838400000, 0.04015, 0.04015141, 0.04015, 0.04015141, 3.2468817], [1516838460000, 0.04015141, 0.04015143, 0.04015, 0.04015139, 3.40656135], [1516838520000, 0.04015, 0.0401514, 0.04015, 0.04015, 2.36861687], [1516838580000, 0.0401513, 0.0401513, 0.0401513, 0.0401513, 0.02745864], [1516838640000, 0.04015138, 0.04015301, 0.04015138, 0.04015301, 28.88164151], [1516838700000, 0.04015301, 0.04015301, 0.0401513, 0.04015301, 2.5729838], [1516838760000, 0.04015301, 0.04021505, 0.0401513, 0.04017134, 3.01453509], [1516838820000, 0.0401513, 0.0401513, 0.0401513, 0.0401513, 9.16385564], [1516838880000, 0.0401513, 0.04021503, 0.0401513, 0.0401513, 1.04325391], [1516838940000, 0.0401513, 0.0401513, 0.0401513, 0.0401513, 1.57043168], [1516839000000, 0.0401513, 0.04021505, 0.0401513, 0.0401513, 1.54689786], [1516839060000, 0.04021504, 0.04021504, 0.0401513, 0.0401513, 1.10812769], [1516839120000, 0.04021504, 0.04021504, 0.0401513, 0.0401513, 0.61405457], [1516839180000, 0.04021503, 0.04023808, 0.0401513, 0.0401513, 2.67565471], [1516839240000, 0.0401513, 0.0401513, 0.0401513, 0.0401513, 0.15656928], [1516839300000, 0.04021504, 0.04021504, 0.04015, 0.04021504, 2.66376066], [1516839360000, 0.04015, 0.04021504, 0.04015, 0.04015, 1.81899298], [1516839420000, 0.04021132, 0.04021132, 0.04015, 0.04015, 7.75881585], [1516839480000, 0.04015, 0.04015, 0.04015, 0.04015, 1.18581206], [1516839540000, 0.04015, 0.04021503, 0.04015, 0.04021503, 1.00564845], [1516839600000, 0.04021503, 0.04021504, 0.04021503, 0.04021503, 0.70921577], [1516839660000, 0.04021503, 0.04021503, 0.04021503, 0.04021503, 1.05504191], [1516839720000, 0.04021503, 0.04021503, 0.04015, 0.04015, 8.14751808], [1516839780000, 0.04015, 0.04021504, 0.04015, 0.04015, 2.54388644], [1516839840000, 0.04015, 0.04015, 0.04015, 0.04015, 4.43876231], [1516839900000, 0.04018251, 0.04023994, 0.04018251, 0.04023994, 1.24325778], [1516839960000, 0.04023994, 0.04023994, 0.04023994, 0.04023994, 0.14216821], [1516840080000, 0.04015, 0.04015, 0.04015, 0.04015, 0.02007611], [1516840140000, 0.04023994, 0.04023994, 0.04015, 0.04015, 1.05562565], [1516840200000, 0.04015, 0.04034054, 0.04015, 0.04034054, 2.74497435], [1516840260000, 0.04034053, 0.04034054, 0.04034053, 0.04034054, 0.94755656], [1516840320000, 0.04034053, 0.04034053, 0.04015, 0.04015, 0.42539576], [1516840380000, 0.04015, 0.04015, 0.04015, 0.04015, 0.10446216], [1516840440000, 0.04034053, 0.04034053, 0.04034053, 0.04034053, 0.05194894], [1516840500000, 0.04034054, 0.04034993, 0.04034054, 0.04034993, 10.0563969], [1516840560000, 0.04015, 0.04034993, 0.04015, 0.04034993, 0.53528339], [1516840620000, 0.04034993, 0.04035901, 0.04034993, 0.04035901, 6.00800809], [1516840680000, 0.04035901, 0.04041272, 0.04035901, 0.04035901, 2.35014239], [1516840740000, 0.04035901, 0.04035901, 0.04035901, 0.04035901, 0.67231732], [1516840800000, 0.04035902, 0.04041272, 0.04015, 0.04015, 101.86949156], [1516840860000, 0.040165, 0.040165, 0.040165, 0.040165, 0.57649128], [1516840980000, 0.040165, 0.040165, 0.04016002, 0.04016499, 0.09490542], [1516841040000, 0.04016499, 0.040165, 0.04016499, 0.040165, 3.73005277], [1516841100000, 0.04016499, 0.040165, 0.04016499, 0.040165, 1.98961621], [1516841160000, 0.040165, 0.04040795, 0.04016499, 0.04040795, 8.48063141], [1516841220000, 0.04041272, 0.04044276, 0.04041272, 0.04044276, 0.90275412], [1516841280000, 0.04041271, 0.04041271, 0.04041271, 0.04041271, 1.71423925], [1516841340000, 0.0404372, 0.04044384, 0.0404372, 0.04044384, 0.34650026], [1516841400000, 0.04043719, 0.04043719, 0.04043719, 0.04043719, 0.24729704], [1516841580000, 0.04019016, 0.04019016, 0.04019016, 0.04019016, 0.02497694], [1516841640000, 0.04019016, 0.04019016, 0.04019016, 0.04019016, 0.02481966], [1516841700000, 0.04019016, 0.04019016, 0.04019016, 0.04019016, 2.13671231], [1516841760000, 0.04043717, 0.04043718, 0.04043717, 0.04043718, 3.3320116], [1516841880000, 0.04020009, 0.04020009, 0.04020009, 0.04020009, 0.07339733], [1516841940000, 0.04043717, 0.04043717, 0.04020018, 0.04020018, 0.10806197], [1516842000000, 0.04020022, 0.04043717, 0.04020022, 0.04043717, 9.62412644], [1516842060000, 0.04043717, 0.04043718, 0.04043717, 0.04043717, 3.17904467], [1516842120000, 0.04043717, 0.04043718, 0.04043717, 0.04043717, 0.2185867], [1516842180000, 0.04043717, 0.04043718, 0.04013002, 0.04043718, 26.52663018], [1516842240000, 0.04043718, 0.04043719, 0.04043718, 0.04043718, 1.65403587], [1516842300000, 0.04043719, 0.04044385, 0.04043718, 0.04043719, 1.87560853], [1516842360000, 0.04043719, 0.04043719, 0.04043719, 0.04043719, 0.31127076], [1516842420000, 0.04043719, 0.0404372, 0.04043719, 0.04043719, 1.10891385], [1516842480000, 0.04043719, 0.04043719, 0.04043718, 0.04043718, 12.21444949], [1516842540000, 0.04013505, 0.04043718, 0.04013505, 0.04043718, 3.03269946], [1516842600000, 0.04043718, 0.04043718, 0.04043718, 0.04043718, 0.24729704], [1516842660000, 0.04043718, 0.04044385, 0.0403704, 0.04044384, 3.92456203], [1516842780000, 0.04037984, 0.04037984, 0.0403734, 0.0403734, 5.10801629], [1516842840000, 0.0403734, 0.0403734, 0.0403704, 0.0403704, 5.33805758], [1516842960000, 0.04037041, 0.04037984, 0.04037041, 0.04037041, 0.13370073], [1516843020000, 0.04037041, 0.04037042, 0.04037041, 0.04037042, 0.2168084], [1516843080000, 0.04037046, 0.04037046, 0.04037046, 0.04037046, 0.03052255], [1516843140000, 0.04037047, 0.04037984, 0.04037047, 0.04037984, 1.61308126], [1516843200000, 0.04037984, 0.04037984, 0.04037984, 0.04037984, 0.24764857], [1516843260000, 0.04037515, 0.04037515, 0.04037515, 0.04037515, 0.55598625], [1516843320000, 0.04037516, 0.04037519, 0.04037516, 0.04037519, 0.69511366], [1516843440000, 0.04037522, 0.04037522, 0.04037522, 0.04037522, 1.8167082], [1516843500000, 0.04037522, 0.04037981, 0.04037522, 0.04037981, 0.09426956], [1516843560000, 0.04044384, 0.04044384, 0.04044384, 0.04044384, 0.68237257], [1516843680000, 0.04037522, 0.04037522, 0.04037521, 0.04037521, 2.67729611], [1516843740000, 0.04037042, 0.04037521, 0.04037041, 0.04037041, 1.42291532], [1516843800000, 0.04037521, 0.04037521, 0.04037041, 0.04037041, 1.76233245], [1516843920000, 0.0403704, 0.0403704, 0.0403704, 0.0403704, 0.02197439], [1516843980000, 0.04014001, 0.04014001, 0.04014001, 0.04014001, 0.10273043], [1516844040000, 0.04014001, 0.04014001, 0.04013, 0.04013015, 21.32078396], [1516844100000, 0.04037011, 0.04037011, 0.04013019, 0.04013019, 1.04347322], [1516844220000, 0.04013015, 0.04037005, 0.04013, 0.04037005, 10.59204327], [1516844280000, 0.04013001, 0.04013001, 0.04013001, 0.04013001, 0.02], [1516844340000, 0.04013001, 0.04013001, 0.04013001, 0.04013001, 0.01822117], [1516844400000, 0.04023, 0.04023, 0.04013003, 0.04013003, 3.49532693], [1516844460000, 0.04013002, 0.04023, 0.04013002, 0.0401301, 4.99922874], [1516844520000, 0.04023001, 0.04023001, 0.0402, 0.0402, 0.05491923], [1516844580000, 0.04019999, 0.04023001, 0.04019999, 0.04023001, 3.58530904], [1516844700000, 0.0403701, 0.04037041, 0.0403701, 0.0403701, 0.79361746], [1516844760000, 0.04037011, 0.04044385, 0.04037011, 0.04044385, 11.50938124], [1516844820000, 0.04040001, 0.04040001, 0.0404, 0.0404, 1.44935057], [1516844880000, 0.0404, 0.0404, 0.0404, 0.0404, 0.2789947], [1516844940000, 0.0404, 0.04040001, 0.0404, 0.04040001, 0.43145059], [1516845000000, 0.0404, 0.04044391, 0.0404, 0.0404, 6.38781021], [1516845120000, 0.04044388, 0.04044388, 0.04044388, 0.04044388, 2.59003203], [1516845180000, 0.04044388, 0.04044606, 0.04044388, 0.04044606, 2.21411643], [1516845300000, 0.04044606, 0.04044606, 0.04044606, 0.04044606, 0.66103639], [1516845420000, 0.04044606, 0.04044606, 0.04044606, 0.04044606, 0.33394432], [1516845480000, 0.04040002, 0.04040002, 0.04040002, 0.04040002, 1.04727723], [1516845540000, 0.04040002, 0.04044606, 0.04040001, 0.04044606, 1.79363288], [1516845600000, 0.04044606, 0.04044606, 0.04044606, 0.04044606, 0.56363531], [1516845660000, 0.04044606, 0.04044606, 0.04040002, 0.04040002, 0.1668194], [1516845720000, 0.04044606, 0.04044606, 0.04040001, 0.04040001, 1.71201378], [1516845780000, 0.04040001, 0.04044604, 0.04040001, 0.04044604, 0.32312259], [1516845840000, 0.0404, 0.0404, 0.0404, 0.0404, 0.74344756], [1516845900000, 0.0404, 0.04044604, 0.0404, 0.0404, 30.62612808], [1516845960000, 0.04042988, 0.04042988, 0.0402, 0.0402, 0.49118821], [1516846020000, 0.0402, 0.0402, 0.04013501, 0.04013501, 0.76468854], [1516846080000, 0.0402, 0.0402, 0.0402, 0.0402, 0.35886608], [1516846140000, 0.0402, 0.0402, 0.0402, 0.0402, 0.18606771], [1516846200000, 0.0402, 0.0402, 0.0402, 0.0402, 0.79180669], [1516846260000, 0.0403206, 0.04044598, 0.0403206, 0.04044596, 4.73377504], [1516846320000, 0.04013008, 0.04013008, 0.04013, 0.04013, 2.80689047], [1516846380000, 0.0402, 0.0402, 0.04013002, 0.0402, 5.36858225], [1516846440000, 0.04013003, 0.0402, 0.04013003, 0.0402, 0.24866833], [1516846500000, 0.0402, 0.0402, 0.0402, 0.0402, 9.39614343], [1516846560000, 0.0402, 0.0404457, 0.0402, 0.0402, 1.20375793], [1516846620000, 0.04042999, 0.04042999, 0.04042999, 0.04042999, 0.43318976], [1516846860000, 0.04042996, 0.04042996, 0.04042996, 0.04042996, 0.255287], [1516846920000, 0.04042996, 0.04042996, 0.04042996, 0.04042996, 0.04254265], [1516846980000, 0.040429, 0.04044607, 0.04025, 0.04044606, 4.53311375], [1516847040000, 0.04044606, 0.04044606, 0.04044606, 0.04044606, 0.05081016], [1516847160000, 0.04025, 0.04025, 0.04025, 0.04025, 0.15700732], [1516847220000, 0.04025, 0.04044606, 0.04025, 0.04044606, 4.26575877], [1516847280000, 0.04044607, 0.0404869, 0.04044606, 0.0404461, 0.78087814], [1516847340000, 0.04044606, 0.04044606, 0.04044606, 0.04044606, 0.05556693], [1516847400000, 0.04025001, 0.04044606, 0.04025001, 0.04044606, 1.25382752], [1516847460000, 0.04044606, 0.04044606, 0.04044606, 0.04044606, 0.24329268], [1516847520000, 0.04044606, 0.0404869, 0.04044606, 0.0404869, 6.64650918], [1516847580000, 0.04044606, 0.0404461, 0.04044606, 0.0404461, 6.20287359], [1516847640000, 0.04044606, 0.04044608, 0.04044606, 0.04044606, 4.37979296], [1516847700000, 0.04034494, 0.0404869, 0.04025, 0.04048688, 1.48283015], [1516847760000, 0.04048, 0.04048, 0.04025, 0.04025, 0.72953858], [1516847820000, 0.04048684, 0.04048684, 0.04025, 0.04025, 5.35684632], [1516847880000, 0.04025001, 0.04025001, 0.04025001, 0.04025001, 0.06700696], [1516848060000, 0.04047194, 0.04047196, 0.04025052, 0.04025052, 6.0], [1516848120000, 0.04025052, 0.04046993, 0.04025052, 0.04046993, 4.08053284], [1516848180000, 0.04045498, 0.04045498, 0.04025052, 0.04044495, 2.0865626], [1516848240000, 0.04025052, 0.04044496, 0.04025052, 0.04025052, 3.29334548], [1516848300000, 0.04025052, 0.04045493, 0.0402505, 0.0402505, 30.18093787], [1516848360000, 0.0402505, 0.0402505, 0.04013002, 0.04013002, 32.62985681], [1516848420000, 0.04013002, 0.04041499, 0.04013002, 0.04041499, 2.26990846], [1516848480000, 0.04013004, 0.04041492, 0.04013002, 0.0404149, 6.20531841], [1516848600000, 0.04041466, 0.04041466, 0.04041465, 0.04041465, 2.72178253], [1516848660000, 0.04041465, 0.04041465, 0.04013007, 0.04041462, 3.52742101], [1516848720000, 0.04041465, 0.04041465, 0.04013385, 0.04013385, 0.32743532], [1516848780000, 0.0404, 0.0404, 0.04013386, 0.04013388, 9.61785101], [1516848840000, 0.0401339, 0.04041447, 0.0401339, 0.0401339, 2.92387733], [1516848900000, 0.0401339, 0.0401339, 0.0401339, 0.0401339, 2.4916591], [1516848960000, 0.04013388, 0.0401339, 0.04013388, 0.0401339, 1.02662608], [1516849020000, 0.0401339, 0.0401339, 0.04013388, 0.0401339, 0.50577339], [1516849080000, 0.0401339, 0.0401339, 0.0401339, 0.0401339, 0.04966079], [1516849140000, 0.0401339, 0.0401339, 0.04013388, 0.0401339, 1.39786446], [1516849200000, 0.04013388, 0.0401339, 0.04013, 0.04013388, 27.89508349], [1516849260000, 0.04013388, 0.04013388, 0.04013388, 0.04013388, 0.24668142], [1516849320000, 0.04013388, 0.04013388, 0.04013388, 0.04013388, 1.11844407], [1516849380000, 0.04013388, 0.04013388, 0.04013, 0.04013, 0.17065264], [1516849440000, 0.04013, 0.04013, 0.04013, 0.04013, 12.5543], [1516849500000, 0.04013388, 0.0401339, 0.04013388, 0.0401339, 4.80461712], [1516849560000, 0.04025, 0.04025005, 0.04025, 0.04025, 161.01551235], [1516849620000, 0.04025, 0.04041465, 0.04025, 0.04041465, 4.80744215], [1516849680000, 0.04025, 0.04025001, 0.04025, 0.04025001, 2.58220883], [1516849740000, 0.04025001, 0.04025001, 0.04025, 0.04025, 4.80503309], [1516849800000, 0.04025, 0.04041093, 0.04025, 0.04025, 0.53524558], [1516849860000, 0.04025, 0.04025, 0.04025, 0.04025, 0.36040772], [1516849920000, 0.04025, 0.04025001, 0.04025, 0.04025, 10.29576833], [1516849980000, 0.04025, 0.04025, 0.04025, 0.04025, 0.0821739], [1516850040000, 0.04041042, 0.04041042, 0.04025, 0.04025, 0.11789786], [1516850100000, 0.04041027, 0.0404103, 0.04025002, 0.04041029, 2.51994457], [1516850160000, 0.04025, 0.04041466, 0.04025, 0.0403, 5.17973076], [1516850220000, 0.0403, 0.0404, 0.04025, 0.04025, 4.33897192], [1516850280000, 0.04025, 0.04025, 0.04025, 0.04025, 0.58552623], [1516850340000, 0.04025, 0.04025, 0.04025, 0.04025, 0.1983], [1516850400000, 0.0403, 0.0403, 0.0403, 0.0403, 1.4888337], [1516850520000, 0.04025001, 0.04025001, 0.04025001, 0.04025001, 0.09310863], [1516850580000, 0.04025001, 0.04025001, 0.04025001, 0.04025001, 0.1922], [1516850640000, 0.04025001, 0.04025001, 0.04025001, 0.04025001, 0.5764328], [1516850700000, 0.04025001, 0.04029992, 0.04025, 0.04026002, 1.79871171], [1516850760000, 0.04026002, 0.04029992, 0.04025, 0.04025, 2.41726702], [1516850820000, 0.04025, 0.04029991, 0.04025, 0.04025, 7.69606971], [1516850880000, 0.04025, 0.04025, 0.04025, 0.04025, 0.40062911], [1516850940000, 0.04025, 0.04025, 0.04025, 0.04025, 4.56795827], [1516851000000, 0.04025, 0.04029992, 0.04025, 0.04029992, 7.99176357], [1516851060000, 0.04029991, 0.04029991, 0.04025, 0.04025, 3.97288265], [1516851120000, 0.04025, 0.04025, 0.04025, 0.04025, 9.67529834], [1516851180000, 0.04025, 0.04025, 0.04025, 0.04025, 45.00530659], [1516851240000, 0.0403, 0.0403, 0.04025, 0.04025, 16.17514272], [1516851300000, 0.04025, 0.0403, 0.04025, 0.04025, 15.30512395], [1516851360000, 0.04025, 0.0403, 0.04025, 0.0403, 1.46414141], [1516851420000, 0.04025, 0.0403, 0.04025, 0.0403, 21.35614965], [1516851480000, 0.04025, 0.0403, 0.04025, 0.0403, 1.91453837], [1516851540000, 0.0403, 0.0403, 0.04025, 0.04025, 2.04982167], [1516851600000, 0.04025, 0.04025, 0.04025, 0.04025, 0.76101775], [1516851660000, 0.04025, 0.04025, 0.04025, 0.04025, 0.51749806], [1516851780000, 0.04025, 0.04025, 0.04025, 0.04025, 3.0], [1516851840000, 0.04025, 0.04025, 0.04025, 0.04025, 0.65289646], [1516851900000, 0.0403, 0.0403, 0.04025, 0.04025, 3.23855758], [1516851960000, 0.04025, 0.0403, 0.04025, 0.04025, 14.18111274], [1516852020000, 0.04025, 0.0403, 0.04025, 0.04025, 2.32676023], [1516852080000, 0.04025, 0.04025, 0.04025, 0.04025, 0.52665827], [1516852140000, 0.04025, 0.04025, 0.04025, 0.04025, 4.08593082], [1516852200000, 0.04025, 0.04025, 0.04025, 0.04025, 8.75416413], [1516852260000, 0.04025, 0.04025, 0.04025, 0.04025, 10.99982454], [1516852320000, 0.04025, 0.04025, 0.04025, 0.04025, 0.50325872], [1516852380000, 0.04025, 0.04025, 0.04025, 0.04025, 0.24504458], [1516852500000, 0.0402505, 0.0403, 0.04025, 0.04025, 15.80925381], [1516852560000, 0.04025, 0.0403, 0.04025, 0.0403, 2.38009402], [1516852620000, 0.04025, 0.0403, 0.04025, 0.0403, 2.51939368], [1516852680000, 0.04025, 0.04025, 0.04025, 0.04025, 2.13414034], [1516852740000, 0.04025, 0.04025, 0.04025, 0.04025, 0.4337309], [1516852800000, 0.04025, 0.04029999, 0.04025, 0.04029999, 0.2811299], [1516852860000, 0.04025, 0.0403, 0.04025, 0.0403, 3.46451553], [1516852920000, 0.04025, 0.04025, 0.04025, 0.04025, 0.07736439], [1516852980000, 0.04025, 0.0403, 0.04025, 0.0403, 0.09181006], [1516853040000, 0.04025001, 0.04025001, 0.04025001, 0.04025001, 0.25962866], [1516853100000, 0.04025001, 0.0403, 0.04025001, 0.0403, 4.79489996], [1516853160000, 0.0403, 0.0403, 0.04025001, 0.04029999, 0.31549899], [1516853220000, 0.04025001, 0.04025001, 0.04025001, 0.04025001, 0.64810469], [1516853280000, 0.04025001, 0.04025001, 0.04025, 0.04025, 1.94034188], [1516853340000, 0.04025, 0.04025, 0.04025, 0.04025, 0.81177805], [1516853400000, 0.04025, 0.04025, 0.04025, 0.04025, 4.54017703], [1516853460000, 0.04025, 0.04029999, 0.04025, 0.04025, 5.95072391], [1516853520000, 0.04029999, 0.04029999, 0.04025, 0.04025, 6.70073988], [1516853580000, 0.04025, 0.04029999, 0.04025, 0.04025, 3.29696893], [1516853640000, 0.04025, 0.04025, 0.04025, 0.04025, 0.21971761], [1516853700000, 0.04025, 0.04029999, 0.04025, 0.04029999, 0.20257085], [1516853760000, 0.04029999, 0.04029999, 0.04025, 0.04025, 0.77331052], [1516853820000, 0.04025, 0.04025, 0.04025, 0.04025, 1.08419315], [1516853880000, 0.04025, 0.04025, 0.04025, 0.04025, 22.13107408], [1516853940000, 0.04025, 0.04025, 0.04025, 0.04025, 2.79600552], [1516854000000, 0.04025, 0.04029999, 0.04025, 0.04025, 1.62246816], [1516854060000, 0.04025, 0.04025, 0.04025, 0.04025, 17.61165555], [1516854120000, 0.04025, 0.04029998, 0.04025, 0.04025, 6.17556351], [1516854180000, 0.04025, 0.04025, 0.04025, 0.04025, 6.51862798], [1516854240000, 0.04025, 0.04029998, 0.04025, 0.04029998, 0.37788836], [1516854300000, 0.04029998, 0.04029998, 0.04029998, 0.04029998, 0.12388648], [1516854360000, 0.04029998, 0.04029999, 0.04029998, 0.04029999, 0.20923083], [1516854420000, 0.04029998, 0.04029998, 0.04029998, 0.04029998, 0.01290988], [1516854480000, 0.04029998, 0.04029998, 0.04025, 0.04025, 2.73866643], [1516854540000, 0.04025, 0.04025, 0.04025, 0.04025, 0.38012241], [1516854600000, 0.04025, 0.04029999, 0.04025, 0.04025, 1.08714081], [1516854660000, 0.04025, 0.04025, 0.04025, 0.04025, 0.22044516], [1516854720000, 0.04025, 0.04025, 0.04025, 0.04025, 0.0891106], [1516854780000, 0.04025, 0.04025, 0.04025, 0.04025, 0.02197698], [1516854840000, 0.04025, 0.0403, 0.04025, 0.0403, 91.5235092], [1516854900000, 0.0403, 0.0403, 0.04025, 0.04025, 26.67114258], [1516854960000, 0.0403, 0.0403, 0.0403, 0.0403, 0.50228828], [1516855020000, 0.0403, 0.0403, 0.0403, 0.0403, 5.86428899], [1516855080000, 0.04025, 0.04025, 0.04025, 0.04025, 0.75662935], [1516855140000, 0.04025, 0.0403, 0.04025, 0.0403, 1.42534347], [1516855200000, 0.04025, 0.0403, 0.04025, 0.0403, 0.97810691], [1516855260000, 0.04025, 0.0403, 0.04025, 0.0403, 2.5459367], [1516855320000, 0.04025, 0.0403, 0.04025, 0.04025, 0.70602326], [1516855380000, 0.04025, 0.0403, 0.04025, 0.04025, 0.15080482], [1516855440000, 0.04025, 0.0403, 0.04025, 0.0403, 2.79877326], [1516855500000, 0.04025, 0.0403, 0.04025, 0.0403, 8.28626629], [1516855560000, 0.0403, 0.0403, 0.04025, 0.0403, 1.73504488], [1516855620000, 0.0403, 0.0403, 0.0403, 0.0403, 6.20014134], [1516855680000, 0.04025, 0.04025, 0.04025, 0.04025, 0.07261296], [1516855800000, 0.0403, 0.0403, 0.04025, 0.0403, 0.3845086], [1516855860000, 0.04025, 0.04025, 0.04025, 0.04025, 0.01840316], [1516855920000, 0.04025, 0.04025, 0.04025, 0.04025, 16.90804334], [1516855980000, 0.04025, 0.04025, 0.04025, 0.04025, 5.5926542], [1516856040000, 0.04029999, 0.04029999, 0.04025, 0.04025, 2.23014108], [1516856100000, 0.04025, 0.04025, 0.04025, 0.04025, 6.4997622], [1516856160000, 0.04013404, 0.04013404, 0.04013001, 0.04013001, 5.80999248], [1516856220000, 0.04013001, 0.04013001, 0.04013001, 0.04013001, 0.1114411], [1516856280000, 0.04025, 0.04025, 0.04020975, 0.04020975, 0.45732848], [1516856340000, 0.04020975, 0.04020975, 0.04020975, 0.04020975, 0.07], [1516856400000, 0.04025, 0.04025, 0.04025, 0.04025, 0.2484472], [1516856460000, 0.04024, 0.04024, 0.04024, 0.04024, 0.01786992], [1516856520000, 0.04020975, 0.04024, 0.04013, 0.04013, 8.25837014], [1516856580000, 0.04013, 0.04013, 0.04013, 0.04013, 0.24913022], [1516856640000, 0.04013, 0.04013, 0.04013, 0.04013, 0.11132711], [1516856700000, 0.04024999, 0.04025, 0.04013, 0.04013, 7.57782118], [1516856760000, 0.04013, 0.04025, 0.04013, 0.04025, 2.98919412], [1516856820000, 0.04025, 0.04025, 0.04013, 0.04013, 0.58224933], [1516856880000, 0.04013, 0.04013, 0.04013, 0.04013, 0.11966917], [1516857000000, 0.04013, 0.04024997, 0.04013, 0.04024997, 6.61460397], [1516857060000, 0.04024997, 0.04024997, 0.04024997, 0.04024997, 1.04742063], [1516857240000, 0.04024997, 0.04024997, 0.04013, 0.04013, 9.84870247], [1516857300000, 0.04024997, 0.04024997, 0.04013, 0.04013, 0.78789774], [1516857360000, 0.04024996, 0.04024997, 0.04024996, 0.04024997, 1.31656706], [1516857420000, 0.04024997, 0.0403, 0.04024997, 0.04024997, 3.48020658], [1516857480000, 0.04024997, 0.04024997, 0.04024997, 0.04024997, 0.00015374], [1516857540000, 0.04018678, 0.04018678, 0.04013, 0.04013, 1.27378883], [1516857600000, 0.04013, 0.0403, 0.04013, 0.04024997, 0.42521709], [1516857660000, 0.04013001, 0.04013001, 0.04013001, 0.04013001, 0.3737851], [1516857720000, 0.04013, 0.04013001, 0.04013, 0.04013001, 22.97776308], [1516857780000, 0.04013001, 0.04024997, 0.04013, 0.04013, 9.78781776], [1516857840000, 0.04013, 0.04013, 0.04013, 0.04013, 0.06862435], [1516857900000, 0.04013, 0.04024997, 0.04013, 0.04024997, 0.27503468], [1516857960000, 0.04013, 0.04024997, 0.04013, 0.04024997, 0.11266744], [1516858020000, 0.0402499, 0.0402499, 0.04013, 0.04013, 0.7802853], [1516858080000, 0.0402499, 0.04024997, 0.0402499, 0.04024997, 1.00400299], [1516858140000, 0.04024997, 0.04024997, 0.04024997, 0.04024997, 1.00621596], [1516858200000, 0.04024997, 0.04024997, 0.04024997, 0.04024997, 1.74036408], [1516858260000, 0.04024997, 0.04024997, 0.04024997, 0.04024997, 0.01604894], [1516858440000, 0.04013109, 0.04013109, 0.040111, 0.04013109, 23.23096503], [1516858500000, 0.04013109, 0.04013109, 0.04011, 0.040111, 28.4452816], [1516858560000, 0.04013, 0.04013, 0.04011, 0.04011, 5.5039236], [1516858620000, 0.04011, 0.04024997, 0.04011, 0.04024997, 0.9287865], [1516858680000, 0.04011, 0.04024997, 0.04011, 0.04011, 9.53812272], [1516858740000, 0.04011, 0.04024997, 0.04011, 0.04024997, 24.88427567], [1516858800000, 0.04024997, 0.04024997, 0.04011, 0.04011, 36.17865835], [1516858860000, 0.04011, 0.04024997, 0.04011, 0.04011, 11.9918512], [1516858920000, 0.04024997, 0.04024997, 0.04024997, 0.04024997, 0.32773712], [1516858980000, 0.04011001, 0.04011001, 0.04011001, 0.04011001, 0.1383725], [1516859040000, 0.04011006, 0.04011006, 0.04011006, 0.04011006, 0.20533188], [1516859100000, 0.04024997, 0.04024997, 0.04024997, 0.04024997, 1.08342232], [1516859160000, 0.04011016, 0.04011016, 0.04011, 0.04011, 10.0], [1516859220000, 0.04024997, 0.04024997, 0.04024996, 0.04024997, 1.15244767], [1516859280000, 0.04011001, 0.04011001, 0.04011, 0.04011, 5.47873866], [1516859340000, 0.04011001, 0.04011001, 0.04011001, 0.04011001, 0.21475807], [1516859400000, 0.04011001, 0.0402, 0.04011, 0.04011, 28.68250857], [1516859460000, 0.04011, 0.04011, 0.04011, 0.04011, 0.04851434], [1516859520000, 0.04011, 0.04011, 0.04011, 0.04011, 0.84910196], [1516859580000, 0.04011, 0.04011, 0.04011, 0.04011, 0.21769425], [1516859640000, 0.04011, 0.04011, 0.04011, 0.04011, 0.165572], [1516859700000, 0.0402, 0.0403, 0.04011, 0.0403, 1.58058096], [1516859760000, 0.04011001, 0.04011001, 0.04011001, 0.04011001, 0.10773], [1516859820000, 0.04011001, 0.04011001, 0.04011001, 0.04011001, 1.03275394], [1516859880000, 0.04011001, 0.0403, 0.04011001, 0.0403, 1.55033715], [1516859940000, 0.04011001, 0.04011001, 0.04011, 0.04011, 6.22548599], [1516860060000, 0.0403, 0.0403, 0.0403, 0.0403, 0.39418849], [1516860120000, 0.0403, 0.0403, 0.04011, 0.04011, 0.22085184], [1516860180000, 0.0403, 0.0403, 0.0403, 0.0403, 0.22376729], [1516860240000, 0.0403, 0.0403, 0.04011, 0.0403, 1.03547755], [1516860300000, 0.0403, 0.0403, 0.04011, 0.04011, 0.5941977], [1516860360000, 0.0403, 0.0403, 0.04011, 0.04011, 1.31959811], [1516860420000, 0.04011, 0.04011, 0.04011, 0.04011, 0.94234395], [1516860540000, 0.04011, 0.04011, 0.04011, 0.04011, 0.166974], [1516860600000, 0.0403, 0.0403, 0.0403, 0.0403, 1.24813895], [1516860660000, 0.04025942, 0.04025942, 0.04025942, 0.04025942, 0.49677818], [1516860720000, 0.04025741, 0.04025741, 0.04011, 0.04011, 21.89972842], [1516860780000, 0.04011, 0.04011, 0.04011, 0.04011, 0.97792647], [1516860840000, 0.04011, 0.04011, 0.04011, 0.04011, 1.43967499], [1516860900000, 0.04010048, 0.04021482, 0.04010048, 0.04010048, 2.35788566], [1516860960000, 0.04021482, 0.0403, 0.04021482, 0.0403, 1.2305574], [1516861020000, 0.04029999, 0.0403, 0.04029999, 0.0403, 15.96878088], [1516861080000, 0.0403, 0.0403, 0.0403, 0.0403, 4.19214459], [1516861140000, 0.0403, 0.0403, 0.0401, 0.0401, 2.16362029], [1516861200000, 0.0401, 0.0403, 0.0401, 0.0403, 2.76148174], [1516861320000, 0.04010002, 0.04010002, 0.04010002, 0.04010002, 0.02036515], [1516861380000, 0.04019202, 0.04019202, 0.04019202, 0.04019202, 1.3723], [1516861440000, 0.0403, 0.04040795, 0.0403, 0.04040795, 0.46406361], [1516861500000, 0.04040794, 0.04040795, 0.04040794, 0.04040795, 3.77342463], [1516861560000, 0.04011535, 0.04011535, 0.04011535, 0.04011535, 0.15437], [1516861620000, 0.04011535, 0.04011535, 0.04011535, 0.04011535, 0.4584976], [1516861680000, 0.04011535, 0.04011535, 0.04011535, 0.04011535, 1.06041127], [1516861740000, 0.04040794, 0.04040796, 0.040202, 0.04040796, 1.37736795], [1516861800000, 0.04040796, 0.04040796, 0.04040796, 0.04040796, 0.24747574], [1516861920000, 0.04040795, 0.04040799, 0.04040795, 0.04040799, 0.01757807], [1516861980000, 0.04040799, 0.04040799, 0.04040795, 0.04040795, 6.75693399], [1516862040000, 0.0402021, 0.04040797, 0.0402021, 0.04040797, 14.44749756], [1516862100000, 0.04040797, 0.04040799, 0.04040797, 0.04040799, 1.12152829], [1516862160000, 0.04022, 0.04022, 0.04022, 0.04022, 0.18834484], [1516862220000, 0.04041264, 0.04041264, 0.04041264, 0.04041264, 2.00700299], [1516862280000, 0.04022, 0.04041263, 0.040202, 0.0403, 78.71288994], [1516862340000, 0.0403, 0.04041466, 0.040202, 0.04041466, 24.10507338], [1516862400000, 0.040202, 0.04041466, 0.040202, 0.040202, 0.89580722], [1516862460000, 0.04041466, 0.04046994, 0.04041466, 0.04046994, 0.16237895], [1516862520000, 0.040166, 0.040166, 0.040166, 0.040166, 0.22241992], [1516862640000, 0.04016619, 0.04045997, 0.040166, 0.04045997, 1.12], [1516862700000, 0.04045998, 0.04046283, 0.04045899, 0.04046283, 37.19311172], [1516862760000, 0.04016609, 0.04045998, 0.04016599, 0.04016599, 11.27794104], [1516862820000, 0.04045998, 0.040475, 0.04045988, 0.04045988, 43.25149366], [1516862880000, 0.04047502, 0.04047502, 0.04016603, 0.04016666, 8.67588499], [1516862940000, 0.04016602, 0.04016602, 0.04016601, 0.04016601, 0.65361186], [1516863000000, 0.04048684, 0.04048685, 0.0403106, 0.0403106, 1.373175], [1516863060000, 0.04017711, 0.040488, 0.04017711, 0.04017724, 8.05450909], [1516863120000, 0.04048797, 0.0405, 0.04048797, 0.040488, 88.7068689], [1516863180000, 0.04048798, 0.04053903, 0.04016601, 0.04048797, 53.0989644], [1516863240000, 0.04049876, 0.04049876, 0.04018643, 0.04018643, 11.11561306], [1516863300000, 0.04053902, 0.04053903, 0.04053902, 0.04053903, 4.0751611], [1516863360000, 0.04022212, 0.0405695, 0.04022212, 0.0405695, 16.37457021], [1516863420000, 0.04055564, 0.0406, 0.04055564, 0.0406, 7.25128322], [1516863480000, 0.04025312, 0.04041524, 0.04025312, 0.04033418, 5.24616004], [1516863540000, 0.04033972, 0.04034503, 0.04033972, 0.04034503, 1.64936227], [1516863600000, 0.04065399, 0.04065399, 0.04064376, 0.04065398, 17.88589513], [1516863660000, 0.04064892, 0.04064892, 0.04023214, 0.04023217, 2.6813355], [1516863720000, 0.04028001, 0.0404, 0.04028001, 0.0404, 63.34959588], [1516863780000, 0.0404, 0.0404, 0.0404, 0.0404, 0.05474192], [1516863840000, 0.04028022, 0.0403684, 0.04028021, 0.04028021, 43.46674519], [1516863900000, 0.04028021, 0.0403684, 0.04028021, 0.0403684, 7.66339686], [1516863960000, 0.0403684, 0.0403684, 0.04028029, 0.04028029, 7.03928442], [1516864020000, 0.0403684, 0.0404, 0.04029, 0.04029, 1.7407225], [1516864080000, 0.04029, 0.0404, 0.04029, 0.04029005, 16.30919532], [1516864140000, 0.04029016, 0.0404, 0.04029016, 0.0404, 1.67805744], [1516864200000, 0.0404, 0.0404, 0.04029501, 0.04029501, 14.2280031], [1516864260000, 0.04030001, 0.0404, 0.04030001, 0.0403999, 15.45368658], [1516864320000, 0.04030001, 0.0404, 0.04030001, 0.0404, 0.78693122], [1516864380000, 0.04030004, 0.04030004, 0.04030004, 0.04030004, 0.55614891], [1516864440000, 0.04030004, 0.0404, 0.04030004, 0.0404, 0.54562166], [1516864500000, 0.04039999, 0.0404, 0.04039999, 0.0404, 0.27939672], [1516864560000, 0.04039999, 0.0404, 0.04033001, 0.0404, 6.42562209], [1516864620000, 0.0404, 0.0404, 0.0404, 0.0404, 4.51464295], [1516864680000, 0.0404, 0.0404, 0.04033001, 0.0404, 0.31030708], [1516864740000, 0.0404, 0.0404, 0.0404, 0.0404, 2.30954452], [1516864800000, 0.0404, 0.0404, 0.04033501, 0.04033501, 1.15711875], [1516864860000, 0.04033501, 0.0404, 0.04033501, 0.04033501, 1.07703183], [1516864920000, 0.04033501, 0.0404, 0.04033501, 0.0404, 1.55092741], [1516864980000, 0.04034001, 0.04034001, 0.04034001, 0.04034001, 0.27438819], [1516865040000, 0.0404, 0.0404, 0.0404, 0.0404, 0.06188118], [1516865100000, 0.04034001, 0.04034001, 0.04034001, 0.04034001, 0.08094336], [1516865160000, 0.0404, 0.0404, 0.04034001, 0.04034001, 5.95469862], [1516865220000, 0.04034001, 0.0404, 0.04034001, 0.0404, 5.58848896], [1516865280000, 0.04035, 0.0404, 0.04035, 0.0404, 0.107214], [1516865340000, 0.04035, 0.0404, 0.04035, 0.04035, 8.26779267], [1516865400000, 0.04035, 0.0404, 0.04035, 0.04035, 0.8899792], [1516865460000, 0.04035, 0.04035, 0.04035, 0.04035, 1.59609982], [1516865520000, 0.0404, 0.0404, 0.04035, 0.04035, 6.0022074], [1516865580000, 0.04035, 0.04035, 0.04033001, 0.04033001, 9.01785995], [1516865640000, 0.04027, 0.0404, 0.04027, 0.0404, 0.5550928], [1516865700000, 0.04027, 0.04035, 0.04027, 0.04027, 0.4290097], [1516865760000, 0.0403, 0.0403, 0.04027, 0.04027, 1.52694775], [1516865820000, 0.04027, 0.04034996, 0.04027, 0.04027, 0.74673005], [1516865880000, 0.04027001, 0.04027001, 0.04027001, 0.04027001, 0.05172861], [1516865940000, 0.04027001, 0.04027001, 0.04027001, 0.04027001, 0.53047114], [1516866000000, 0.04027, 0.04027001, 0.04027, 0.04027001, 1.27570151], [1516866060000, 0.04027, 0.04027, 0.04027, 0.04027, 0.20875475], [1516866120000, 0.04027, 0.04027, 0.04027, 0.04027, 1.33165953], [1516866180000, 0.04027, 0.04027, 0.04027, 0.04027, 0.0547554], [1516866240000, 0.04027, 0.04027, 0.04022967, 0.04022967, 1.5173971], [1516866300000, 0.04022967, 0.04027, 0.04022967, 0.04027, 2.64444893], [1516866360000, 0.04022967, 0.04027, 0.04022967, 0.04022967, 2.26370477], [1516866420000, 0.04022967, 0.04022967, 0.04022967, 0.04022967, 0.18600288], [1516866480000, 0.04022967, 0.04022967, 0.04022967, 0.04022967, 0.11292336], [1516866540000, 0.04022967, 0.04022967, 0.04022967, 0.04022967, 0.30313411], [1516866600000, 0.04022967, 0.04024983, 0.04022967, 0.04022967, 2.37356447], [1516866660000, 0.04024983, 0.04024983, 0.04022218, 0.04022218, 5.36134146], [1516866720000, 0.04022218, 0.0402296, 0.04016898, 0.0402296, 0.11319819], [1516866780000, 0.04016898, 0.04016898, 0.04016898, 0.04016898, 0.10235831], [1516866840000, 0.04022, 0.04022, 0.04009, 0.04009, 22.02543622], [1516866900000, 0.04022, 0.04022967, 0.04009, 0.04009, 0.77410051], [1516866960000, 0.04009, 0.04009, 0.04009, 0.04009, 2.0], [1516867020000, 0.04009, 0.04022967, 0.04009, 0.04022967, 1.63030299], [1516867080000, 0.04022967, 0.04024983, 0.04022967, 0.04024983, 77.14515072], [1516867140000, 0.04024983, 0.0403, 0.04024983, 0.04027003, 13.54509362], [1516867200000, 0.0403, 0.0403, 0.04027003, 0.0403, 2.31923724], [1516867260000, 0.0403, 0.0403, 0.0403, 0.0403, 0.32714611], [1516867320000, 0.0403, 0.0403, 0.040289, 0.040289, 1.87233809], [1516867380000, 0.04027501, 0.040289, 0.04027003, 0.040289, 0.19291253], [1516867440000, 0.04027004, 0.04027004, 0.04027003, 0.04027004, 4.76844788], [1516867500000, 0.04027004, 0.04054983, 0.04027003, 0.04054983, 7.80545077], [1516867560000, 0.04027003, 0.04027003, 0.04027003, 0.04027003, 0.29500273], [1516867620000, 0.04027003, 0.04027003, 0.04027003, 0.04027003, 0.03016021], [1516867680000, 0.04027003, 0.04027507, 0.04027003, 0.04027507, 0.47426691], [1516867740000, 0.04027513, 0.04040951, 0.04027513, 0.04040951, 0.12005369], [1516867800000, 0.04027527, 0.0405, 0.04027527, 0.0405, 0.52324257], [1516867860000, 0.04040951, 0.04040951, 0.04027007, 0.04039, 0.94083869], [1516867920000, 0.04039, 0.0405, 0.04039, 0.0405, 1.5850038], [1516868040000, 0.04039, 0.04039, 0.04039, 0.04039, 0.03031752], [1516868100000, 0.04039, 0.04049051, 0.04039, 0.04049051, 1.21799307], [1516868160000, 0.04039, 0.04039, 0.04039, 0.04039, 4.23307758], [1516868220000, 0.04027005, 0.04027005, 0.04022501, 0.04022505, 2.41621543], [1516868280000, 0.04022505, 0.0405, 0.04022505, 0.0405, 8.71360551], [1516868340000, 0.0405, 0.040549, 0.04023599, 0.0405, 4.419876], [1516868400000, 0.0402253, 0.040549, 0.0402253, 0.04054892, 1.49041048], [1516868460000, 0.04054892, 0.04054892, 0.04009, 0.04009, 18.90945827], [1516868520000, 0.04010114, 0.04039987, 0.04010114, 0.04039987, 1.09069336], [1516868580000, 0.04039985, 0.04039985, 0.04009001, 0.04039974, 10.9826929], [1516868640000, 0.0402999, 0.0402999, 0.0402999, 0.0402999, 0.28226751], [1516868700000, 0.0402999, 0.0402999, 0.0402, 0.0402, 0.22750076], [1516868760000, 0.04009, 0.0402, 0.04009, 0.0402, 0.10864425], [1516868820000, 0.0402, 0.0402999, 0.0402, 0.0402, 5.7255026], [1516868880000, 0.0402, 0.0402, 0.04009, 0.0402, 70.61650717], [1516868940000, 0.0402, 0.0402, 0.0402, 0.0402, 0.17666465], [1516869000000, 0.0402, 0.0402, 0.0402, 0.0402, 4.50447553], [1516869060000, 0.0402, 0.0402, 0.04009, 0.04009, 0.36105613], [1516869120000, 0.04009, 0.04009, 0.04009, 0.04009, 0.41463297], [1516869180000, 0.04009, 0.04009, 0.04009, 0.04009, 0.07041192], [1516869240000, 0.04009, 0.04009, 0.04009, 0.04009, 3.20349633], [1516869300000, 0.0402, 0.0402999, 0.0402, 0.0402999, 0.66061717], [1516869420000, 0.0402999, 0.0402999, 0.0402999, 0.0402999, 0.305], [1516869480000, 0.04009032, 0.0402999, 0.04009032, 0.0402999, 1.67748446], [1516869540000, 0.0402999, 0.0402999, 0.04009595, 0.04009595, 2.18700121], [1516869600000, 0.04009, 0.0402999, 0.04009, 0.0402999, 0.33577374], [1516869660000, 0.04009, 0.04033563, 0.04009, 0.04033563, 2.77453865], [1516869720000, 0.04009, 0.04009001, 0.04009, 0.04009, 5.06741283], [1516869780000, 0.04009002, 0.040393, 0.04009002, 0.04009002, 0.70264664], [1516869840000, 0.04009002, 0.04009002, 0.04009002, 0.04009002, 0.03448565], [1516869900000, 0.04009002, 0.04039298, 0.04009, 0.04009, 0.4504556], [1516869960000, 0.04038232, 0.04038232, 0.0403823, 0.0403823, 0.10677777], [1516870020000, 0.04039298, 0.04039298, 0.04009, 0.04009, 0.27622875], [1516870080000, 0.04038226, 0.04038234, 0.04009, 0.04009, 0.20574612], [1516870140000, 0.04009, 0.04039283, 0.04009, 0.04039283, 6.75538668], [1516870200000, 0.04009, 0.04009, 0.04009, 0.04009, 0.84483717], [1516870260000, 0.04009, 0.04009, 0.04009, 0.04009, 0.08989433], [1516870320000, 0.04009, 0.04009, 0.04009, 0.04009, 0.1163884], [1516870380000, 0.040095, 0.040095, 0.040095, 0.040095, 0.1828504], [1516870500000, 0.040095, 0.04038182, 0.040095, 0.040095, 0.89252689], [1516870560000, 0.040095, 0.040095, 0.040095, 0.040095, 0.02682322], [1516870620000, 0.040095, 0.04034997, 0.040095, 0.04034992, 0.73372449], [1516870680000, 0.040095, 0.0402, 0.040095, 0.0402, 1.21478906], [1516870740000, 0.040095, 0.040095, 0.040095, 0.040095, 1.18452265], [1516870800000, 0.040095, 0.0402, 0.040095, 0.0402, 0.82353093], [1516870860000, 0.040095, 0.0401, 0.040095, 0.040095, 8.56232385], [1516870920000, 0.040095, 0.04015, 0.040095, 0.04015, 0.04760874], [1516870980000, 0.04015, 0.04015, 0.040095, 0.040095, 0.58911843], [1516871040000, 0.040095, 0.04038162, 0.040095, 0.04038098, 3.92533922], [1516871100000, 0.04009501, 0.04038093, 0.04009501, 0.04038093, 1.44456265], [1516871160000, 0.04009506, 0.04009506, 0.04009506, 0.04009506, 0.030967], [1516871340000, 0.04037995, 0.04037996, 0.04009505, 0.04009505, 10.11053481], [1516871400000, 0.04009505, 0.0403798, 0.04009505, 0.04009507, 3.17370404], [1516871460000, 0.04009508, 0.04009508, 0.04009506, 0.04009506, 0.16454887], [1516871520000, 0.04009508, 0.04027974, 0.04009506, 0.0401, 2.18289901], [1516871580000, 0.0401, 0.04015, 0.0401, 0.04015, 1.2204329], [1516871640000, 0.04015, 0.04015, 0.0401, 0.0401, 6.71235639], [1516871700000, 0.0401, 0.04027974, 0.0401, 0.04027974, 0.3202861], [1516871760000, 0.04015, 0.04015, 0.04015, 0.04015, 0.08838754], [1516871820000, 0.04015, 0.0402797, 0.04015, 0.0402797, 0.07280877], [1516871880000, 0.04015, 0.04027969, 0.04015, 0.04027969, 0.29749357], [1516871940000, 0.04015, 0.0403556, 0.04015, 0.0403556, 23.43805105], [1516872000000, 0.04015002, 0.04038, 0.04015002, 0.04038, 0.31367595], [1516872060000, 0.04015, 0.04015, 0.04015, 0.04015, 0.0988665], [1516872120000, 0.04015, 0.04015, 0.04015, 0.04015, 1.04544244], [1516872180000, 0.04015003, 0.04038, 0.04015003, 0.04038, 0.40697657], [1516872240000, 0.04038, 0.04038, 0.04015, 0.04023877, 1.72742979], [1516872300000, 0.04023877, 0.04023877, 0.04015001, 0.04020861, 7.50997898], [1516872360000, 0.04021145, 0.04021145, 0.04020864, 0.04021145, 2.73779092], [1516872420000, 0.04021145, 0.04021881, 0.04017099, 0.04021879, 0.72513863], [1516872480000, 0.04015003, 0.04049593, 0.04015002, 0.0402, 1.47908945], [1516872540000, 0.0402, 0.04046074, 0.0402, 0.04046074, 0.07644046], [1516872600000, 0.04015005, 0.04049185, 0.04015001, 0.04015001, 4.98302392], [1516872660000, 0.04015003, 0.04043432, 0.04015002, 0.04015002, 4.90980775], [1516872720000, 0.04015002, 0.04015002, 0.04015002, 0.04015002, 0.03099507], [1516872780000, 0.04015004, 0.04015004, 0.04015004, 0.04015004, 1.21677057], [1516872840000, 0.04015005, 0.04015005, 0.04015005, 0.04015005, 0.89825465], [1516872900000, 0.04015005, 0.04015005, 0.04015005, 0.04015005, 0.1054803], [1516872960000, 0.04015005, 0.04015005, 0.04015005, 0.04015005, 0.13984128], [1516873020000, 0.04015005, 0.04015005, 0.04015005, 0.04015005, 1.02217755], [1516873080000, 0.04037348, 0.04046112, 0.04015006, 0.04015006, 0.10022213], [1516873140000, 0.04017502, 0.04017502, 0.040175, 0.04017502, 0.43767416], [1516873200000, 0.04018, 0.04018001, 0.04018, 0.04018001, 2.67587013], [1516873260000, 0.04018001, 0.04018001, 0.04018001, 0.04018001, 0.0220837], [1516873320000, 0.04018001, 0.04018001, 0.04018001, 0.04018001, 0.06348853], [1516873380000, 0.04018001, 0.04018001, 0.04018001, 0.04018001, 0.55971426], [1516873440000, 0.04018002, 0.04018002, 0.04018001, 0.04018001, 0.11077459], [1516873500000, 0.04018001, 0.04039997, 0.04018001, 0.04039997, 0.52885484], [1516873560000, 0.04025, 0.04025, 0.04025, 0.04025, 0.49410071], [1516873620000, 0.04039997, 0.04039997, 0.04025, 0.04025, 0.06959755], [1516873680000, 0.04039996, 0.04039996, 0.04039996, 0.04039996, 0.36934841], [1516873740000, 0.0402539, 0.0402539, 0.0402539, 0.0402539, 0.1820827], [1516873800000, 0.04039425, 0.04039995, 0.04039425, 0.04039995, 0.47164598], [1516873860000, 0.0402539, 0.04039992, 0.0402539, 0.04039992, 0.17227843], [1516873920000, 0.0402539, 0.0402539, 0.0402539, 0.0402539, 1.70262539], [1516873980000, 0.04039992, 0.04039992, 0.04039991, 0.04039991, 0.28666671], [1516874040000, 0.0402539, 0.04039992, 0.0402539, 0.04039992, 4.11118943], [1516874100000, 0.04039992, 0.04039994, 0.0402539, 0.0402539, 1.3658936], [1516874220000, 0.0402539, 0.0402539, 0.0402539, 0.0402539, 0.07324004], [1516874280000, 0.0402539, 0.04039993, 0.0402539, 0.04039993, 0.15351449], [1516874340000, 0.0402539, 0.04039, 0.0402539, 0.04039, 0.34008083], [1516874460000, 0.04025, 0.04039, 0.04025, 0.04025, 0.08278361], [1516874520000, 0.04025, 0.04039, 0.04025, 0.04025, 5.44972579], [1516874580000, 0.04025001, 0.04038998, 0.04025, 0.04025, 0.44213621], [1516874640000, 0.04025, 0.04038996, 0.04025, 0.04038996, 20.08684744], [1516874700000, 0.04025, 0.04038996, 0.04025, 0.04038996, 0.3102273], [1516874760000, 0.04025001, 0.04025001, 0.04025001, 0.04025001, 0.09129302], [1516874820000, 0.04038993, 0.04038993, 0.04038993, 0.04038993, 0.133074], [1516874880000, 0.04025001, 0.04025001, 0.04025, 0.04025, 1.9306042], [1516874940000, 0.04025001, 0.04025002, 0.04025001, 0.04025002, 1.25643039], [1516875000000, 0.04025002, 0.04025002, 0.04025002, 0.04025002, 0.44553093], [1516875060000, 0.04025002, 0.04038993, 0.04025002, 0.04025002, 0.20657059], [1516875120000, 0.04025002, 0.04038993, 0.040175, 0.04028993, 13.56283755], [1516875180000, 0.04028993, 0.04028993, 0.040175, 0.040175, 0.98121995], [1516875240000, 0.04028993, 0.04028993, 0.04028993, 0.04028993, 0.03393791], [1516875300000, 0.04028992, 0.04028992, 0.040175, 0.040175, 0.439593], [1516875360000, 0.04017501, 0.04028992, 0.04017501, 0.04028992, 0.29482115], [1516875540000, 0.040175, 0.04028992, 0.040175, 0.04024962, 6.66842336], [1516875600000, 0.04024962, 0.04024962, 0.04017502, 0.04017502, 0.44009943], [1516875660000, 0.04024962, 0.04028992, 0.04024962, 0.04028992, 2.98015082], [1516875780000, 0.04028991, 0.04028992, 0.04028991, 0.04028992, 1.61469257], [1516875840000, 0.04028992, 0.04028992, 0.04028992, 0.04028992, 5.47271263], [1516875900000, 0.04028992, 0.04028993, 0.04028992, 0.04028992, 1.81986966], [1516875960000, 0.04028992, 0.04028992, 0.04024964, 0.04028992, 0.9307266], [1516876020000, 0.04028992, 0.04028993, 0.04028992, 0.04028993, 10.5994236], [1516876080000, 0.04028993, 0.04038993, 0.04028993, 0.04028993, 2.03548013], [1516876140000, 0.04028993, 0.04028993, 0.04028993, 0.04028993, 0.32234007], [1516876200000, 0.04038993, 0.04038994, 0.04034954, 0.04038994, 1.50802731], [1516876260000, 0.0403498, 0.04035, 0.0403498, 0.04035, 0.05464698], [1516876320000, 0.04035, 0.04038994, 0.04035, 0.04038994, 1.30964093], [1516876380000, 0.04035, 0.0406, 0.04035, 0.04039998, 3.35701188], [1516876440000, 0.04035, 0.04035, 0.04035, 0.04035, 0.24950363], [1516876500000, 0.04039756, 0.04039756, 0.04039756, 0.04039756, 0.4944603], [1516876560000, 0.04035716, 0.04035716, 0.04034954, 0.04034954, 0.04390788], [1516876620000, 0.04034954, 0.04034954, 0.04034954, 0.04034954, 0.29784914], [1516876680000, 0.04034954, 0.040355, 0.04034954, 0.040355, 2.1436479], [1516876740000, 0.040355, 0.040355, 0.040355, 0.040355, 0.33693502], [1516876800000, 0.040355, 0.040355, 0.04035, 0.040355, 0.46732914], [1516876860000, 0.04035001, 0.040355, 0.04035, 0.040355, 0.35253599], [1516876920000, 0.040355, 0.0407, 0.04035, 0.04069999, 51.10800418], [1516876980000, 0.04069998, 0.04069998, 0.04047321, 0.04069998, 4.16574423], [1516877040000, 0.0403831, 0.04065928, 0.0403831, 0.04038318, 3.21250017], [1516877100000, 0.04052161, 0.04069997, 0.04052161, 0.04065918, 3.94759538], [1516877160000, 0.04052161, 0.04069995, 0.04052161, 0.04052161, 0.3060356], [1516877220000, 0.04045094, 0.04045096, 0.04045094, 0.04045096, 0.2234936], [1516877280000, 0.04052161, 0.04052161, 0.04052161, 0.04052161, 0.0545105], [1516877340000, 0.040452, 0.04069996, 0.040452, 0.04069996, 0.56852093], [1516877400000, 0.04052162, 0.04069996, 0.04052162, 0.04069996, 6.27698338], [1516877460000, 0.04069996, 0.04069996, 0.04045255, 0.04045255, 1.07859817], [1516877520000, 0.04069997, 0.0407, 0.04045259, 0.04045259, 0.76505702], [1516877580000, 0.04045286, 0.0407, 0.0404525, 0.04045304, 10.43885777], [1516877640000, 0.0407, 0.0407, 0.04045311, 0.04045311, 1.05487733], [1516877700000, 0.0407, 0.04092519, 0.0407, 0.04092519, 24.67531679], [1516877820000, 0.04054652, 0.04054656, 0.04054652, 0.04054656, 0.42079463], [1516877880000, 0.04054662, 0.04054662, 0.04054662, 0.04054662, 0.0944008], [1516877940000, 0.04054801, 0.04078902, 0.04054801, 0.04054804, 0.52683831], [1516878000000, 0.04078902, 0.04086661, 0.04054906, 0.04054907, 0.70465143], [1516878060000, 0.04054909, 0.04063021, 0.04054909, 0.0405492, 3.78418743], [1516878120000, 0.04054915, 0.04086647, 0.04054805, 0.04086647, 2.00824826], [1516878180000, 0.04054923, 0.04055001, 0.04054923, 0.04055001, 6.38303101], [1516878240000, 0.04055002, 0.04086632, 0.04055002, 0.04055007, 0.4680067], [1516878300000, 0.04055011, 0.04055011, 0.04055011, 0.04055011, 0.0642089], [1516878360000, 0.04055023, 0.04086646, 0.04055023, 0.04055027, 1.52203793], [1516878420000, 0.04055029, 0.04055042, 0.04055029, 0.04055033, 0.58191485], [1516878480000, 0.04086635, 0.04086638, 0.04086635, 0.04086638, 2.5735722], [1516878540000, 0.04086637, 0.04086637, 0.04055042, 0.04086637, 4.39169609], [1516878600000, 0.04055052, 0.04086627, 0.04055052, 0.04086627, 0.28705732], [1516878660000, 0.0406, 0.04060001, 0.04055052, 0.040551, 11.35527366], [1516878780000, 0.04058102, 0.040766, 0.04058102, 0.040766, 0.1563229], [1516878840000, 0.040766, 0.040766, 0.040766, 0.040766, 0.36319732], [1516878900000, 0.0407659, 0.0409252, 0.0406, 0.0409252, 4.03205528], [1516878960000, 0.04085, 0.04085, 0.04085, 0.04085, 0.11438484], [1516879020000, 0.04085, 0.04085, 0.04085, 0.04085, 0.04883721], [1516879080000, 0.04060001, 0.04060004, 0.04060001, 0.04060004, 0.14461727], [1516879140000, 0.04060005, 0.04085, 0.04060005, 0.04085, 1.05770571], [1516879200000, 0.04060001, 0.04090527, 0.04060001, 0.04090527, 0.53991078], [1516879260000, 0.04060001, 0.04060001, 0.04060001, 0.04060001, 0.02972673], [1516879380000, 0.04060004, 0.04060004, 0.04060004, 0.04060004, 0.0296833], [1516879440000, 0.04060006, 0.04060006, 0.04060003, 0.04060006, 2.72835288], [1516879500000, 0.04060007, 0.0409053, 0.04060007, 0.0409053, 2.33628874], [1516879560000, 0.04060013, 0.04060017, 0.04060013, 0.04060017, 0.07949781], [1516879680000, 0.04060019, 0.04060019, 0.04060019, 0.04060019, 0.047105], [1516879740000, 0.04060019, 0.0406002, 0.04060019, 0.0406002, 0.12652405], [1516879800000, 0.04060022, 0.04075, 0.04060022, 0.04075, 5.6568898], [1516879860000, 0.04075, 0.04087184, 0.04075, 0.04087184, 7.13282068], [1516879920000, 0.04075, 0.0407501, 0.04075, 0.0407501, 0.74438502], [1516879980000, 0.04075011, 0.04087184, 0.04075011, 0.04075011, 7.95059827], [1516880040000, 0.04075011, 0.0409053, 0.0407501, 0.0407501, 1.64718322], [1516880100000, 0.0407501, 0.0409252, 0.0407501, 0.0407501, 0.79604434], [1516880160000, 0.0407501, 0.0409252, 0.0407501, 0.0409252, 2.55641692], [1516880220000, 0.0407501, 0.0407501, 0.0407501, 0.0407501, 0.54395415], [1516880280000, 0.0407501, 0.0407501, 0.0407501, 0.0407501, 0.10807567], [1516880340000, 0.0407501, 0.04092515, 0.0407501, 0.04092515, 5.39577974], [1516880400000, 0.04092515, 0.04092515, 0.04092515, 0.04092515, 14.21201243], [1516880460000, 0.04092515, 0.04092515, 0.04078194, 0.04078194, 3.49344929], [1516880520000, 0.04078194, 0.04092517, 0.04078194, 0.04092517, 0.85957801], [1516880580000, 0.04078194, 0.04078194, 0.04078194, 0.04078194, 0.08388326], [1516880640000, 0.04078194, 0.04078194, 0.04078194, 0.04078194, 0.08654517], [1516880700000, 0.04078194, 0.04078194, 0.04078194, 0.04078194, 2.17609751], [1516880760000, 0.04078194, 0.04078194, 0.04078194, 0.04078194, 1.01812018], [1516880820000, 0.0409251, 0.0409251, 0.0409251, 0.0409251, 0.0165811], [1516880880000, 0.04078194, 0.041, 0.04078194, 0.041, 37.31034077], [1516880940000, 0.041, 0.04101199, 0.041, 0.041, 7.92726517], [1516881000000, 0.04101199, 0.041012, 0.041, 0.041, 5.71255891], [1516881060000, 0.041, 0.0410001, 0.041, 0.0410001, 2.68687844], [1516881120000, 0.0410001, 0.0410001, 0.0410001, 0.0410001, 0.81756902], [1516881180000, 0.0410001, 0.041012, 0.041, 0.041, 14.84886895], [1516881240000, 0.041, 0.04100001, 0.041, 0.041, 2.0097707], [1516881300000, 0.041, 0.041012, 0.041, 0.041012, 0.61715976], [1516881360000, 0.041, 0.041012, 0.041, 0.041012, 11.1220197], [1516881420000, 0.041012, 0.041012, 0.041012, 0.041012, 0.07384879], [1516881480000, 0.041012, 0.041012, 0.041012, 0.041012, 0.8073717], [1516881540000, 0.041012, 0.041012, 0.041, 0.041, 8.45569552], [1516881600000, 0.041, 0.04109197, 0.041, 0.041, 6.75521914], [1516881660000, 0.041, 0.041, 0.041, 0.041, 2.69457588], [1516881720000, 0.041, 0.0410919, 0.041, 0.041, 0.59644629], [1516881780000, 0.041, 0.04109189, 0.041, 0.041, 1.64825206], [1516881840000, 0.04109189, 0.04109189, 0.041, 0.041, 8.81445848], [1516881900000, 0.041, 0.04109192, 0.041, 0.04109192, 6.53570368], [1516881960000, 0.04109192, 0.041095, 0.041, 0.041095, 3.75648918], [1516882020000, 0.041, 0.041095, 0.041, 0.041, 5.81495788], [1516882080000, 0.041, 0.04109499, 0.041, 0.04101, 1.04167422], [1516882140000, 0.04101, 0.04109495, 0.04101, 0.04109495, 11.13535309], [1516882200000, 0.04109495, 0.04109499, 0.04101, 0.04101, 4.02258169], [1516882260000, 0.04101, 0.04101, 0.04101, 0.04101, 0.2636812], [1516882320000, 0.04109499, 0.04109499, 0.04101, 0.04101, 1.94397771], [1516882380000, 0.04101, 0.04101, 0.04101, 0.04101, 0.82605499], [1516882440000, 0.04101, 0.04101, 0.04101, 0.04101, 1.09511259], [1516882500000, 0.04101, 0.0410101, 0.04101, 0.0410101, 2.08868154], [1516882560000, 0.0410101, 0.04101011, 0.0410101, 0.0410101, 0.86615947], [1516882620000, 0.04109497, 0.04109497, 0.0410101, 0.04109497, 0.67472191], [1516882680000, 0.0410101, 0.0410101, 0.0410101, 0.0410101, 0.07567916], [1516882740000, 0.04109494, 0.04119999, 0.04101, 0.04101, 22.48596093], [1516882800000, 0.041134, 0.041134, 0.04101, 0.04101, 0.65998806], [1516882860000, 0.04101, 0.04113387, 0.04101, 0.04101, 15.88658206], [1516882920000, 0.04101, 0.04113385, 0.04101, 0.04101001, 9.41266952], [1516882980000, 0.04113379, 0.04113379, 0.04101, 0.04101001, 5.59674191], [1516883040000, 0.04101001, 0.04101001, 0.04101, 0.04101, 2.09916531], [1516883100000, 0.04101, 0.0411336, 0.04101, 0.04102, 8.65149939], [1516883160000, 0.04102, 0.04113355, 0.04102, 0.04102, 3.16363684], [1516883220000, 0.04102, 0.04111999, 0.04102, 0.04102, 1.04119742], [1516883280000, 0.04102, 0.04111991, 0.04102, 0.04111991, 54.86349366], [1516883340000, 0.04111991, 0.04111999, 0.04102, 0.04102, 8.12808898], [1516883400000, 0.04111991, 0.04119992, 0.04111991, 0.04111999, 4.19291293], [1516883460000, 0.04111999, 0.04119992, 0.04111991, 0.04111991, 3.90932909], [1516883520000, 0.04111998, 0.04111999, 0.04111991, 0.04111998, 11.77008015], [1516883580000, 0.04113828, 0.04119981, 0.04111998, 0.04111998, 3.26237917], [1516883640000, 0.04112, 0.04113828, 0.04112, 0.04112, 1.35718676], [1516883700000, 0.04112, 0.04119981, 0.04112, 0.04119981, 11.28374189], [1516883760000, 0.04111998, 0.04111998, 0.04101002, 0.04101002, 2.54442258], [1516883820000, 0.04101002, 0.04119963, 0.04101002, 0.04119963, 2.6055077], [1516883940000, 0.04101001, 0.04101001, 0.04101001, 0.04101001, 0.659], [1516884000000, 0.0411975, 0.0411975, 0.04119746, 0.04119746, 1.72819951], [1516884060000, 0.04101001, 0.04116542, 0.04101001, 0.04116541, 1.37425313], [1516884120000, 0.04116, 0.04116542, 0.04101001, 0.04101001, 1.39615832], [1516884180000, 0.04101, 0.04101, 0.04101, 0.04101, 0.02231543], [1516884240000, 0.04101, 0.04101001, 0.04101, 0.04101001, 2.60230534], [1516884300000, 0.04101, 0.04101001, 0.04101, 0.04101001, 3.23708089], [1516884360000, 0.04101, 0.04101, 0.04101, 0.04101, 0.04987532], [1516884420000, 0.04101, 0.041165, 0.04101, 0.04116494, 17.42329133], [1516884480000, 0.04116488, 0.04116488, 0.04116486, 0.04116486, 0.36952328], [1516884540000, 0.04105, 0.0411648, 0.04101, 0.04101, 1.07365411], [1516884600000, 0.04101, 0.04116398, 0.041, 0.041, 149.93573787], [1516884660000, 0.04106482, 0.04106482, 0.041, 0.041, 3.63895613], [1516884720000, 0.04101001, 0.04116376, 0.04101001, 0.04116376, 1.95484079], [1516884780000, 0.04116373, 0.04116373, 0.041, 0.041, 13.33552601], [1516884840000, 0.041, 0.04116358, 0.041, 0.041, 3.63946124], [1516884900000, 0.04116352, 0.04116352, 0.041, 0.041, 12.92196424], [1516884960000, 0.041, 0.04116336, 0.041, 0.041, 0.84029856], [1516885020000, 0.041, 0.041, 0.041, 0.041, 1.12218429], [1516885080000, 0.041, 0.0411632, 0.041, 0.0411632, 1.38816515], [1516885200000, 0.0411, 0.0411, 0.0411, 0.0411, 0.2919708], [1516885260000, 0.041051, 0.0411, 0.041, 0.0411, 1.60363179], [1516885320000, 0.041, 0.0411, 0.041, 0.041, 10.68548144], [1516885380000, 0.041, 0.0411, 0.041, 0.041, 42.31677463], [1516885440000, 0.041, 0.041, 0.041, 0.041, 1.06652554], [1516885500000, 0.041, 0.0411, 0.041, 0.0411, 3.1109896], [1516885560000, 0.041, 0.041, 0.041, 0.041, 0.55867333], [1516885620000, 0.041, 0.0411, 0.041, 0.041, 1.2833559], [1516885680000, 0.041, 0.041, 0.041, 0.041, 3.01431982], [1516885740000, 0.041, 0.04115978, 0.041, 0.0411597, 9.87214354], [1516885800000, 0.0411597, 0.0411597, 0.041, 0.04115962, 2.9645381], [1516885860000, 0.04115957, 0.04115957, 0.04115957, 0.04115957, 0.0906285], [1516885920000, 0.041, 0.041, 0.041, 0.041, 0.30688253], [1516885980000, 0.041, 0.041, 0.041, 0.041, 22.72825395], [1516886040000, 0.041, 0.041, 0.041, 0.041, 0.65422668], [1516886100000, 0.041, 0.04111995, 0.041, 0.041, 6.23832026], [1516886160000, 0.041, 0.04111993, 0.0409, 0.0409, 20.69872148], [1516886220000, 0.0409, 0.0409, 0.0409, 0.0409, 4.29312006], [1516886280000, 0.041, 0.04111895, 0.0409, 0.041, 0.99079497], [1516886340000, 0.041, 0.041, 0.041, 0.041, 4.15495271], [1516886400000, 0.041103, 0.041103, 0.041, 0.04109798, 6.6427387], [1516886460000, 0.041, 0.04109794, 0.041, 0.041, 1.1960307], [1516886520000, 0.041, 0.041, 0.041, 0.041, 0.73837302], [1516886640000, 0.041, 0.04109699, 0.041, 0.04109696, 3.02329215], [1516886700000, 0.041, 0.04109592, 0.041, 0.04109592, 0.83937906], [1516886760000, 0.04109592, 0.04109598, 0.04109592, 0.04109598, 0.83439662], [1516886820000, 0.04100001, 0.04100001, 0.041, 0.041, 3.57962565], [1516886880000, 0.04109597, 0.04109597, 0.04100001, 0.04100001, 0.4174875], [1516886940000, 0.04100001, 0.04100001, 0.04100001, 0.04100001, 0.69511054], [1516887000000, 0.04109597, 0.04109597, 0.04109597, 0.04109597, 0.24333268], [1516887060000, 0.04109598, 0.04109599, 0.04109598, 0.04109598, 9.53560717], [1516887120000, 0.04109598, 0.04109598, 0.041017, 0.041017, 1.39948951], [1516887180000, 0.04109598, 0.04109598, 0.04109598, 0.04109598, 0.04587492], [1516887240000, 0.041017, 0.04109598, 0.041017, 0.041018, 0.72052529], [1516887300000, 0.04109598, 0.04109598, 0.04109598, 0.04109598, 0.72999804], [1516887360000, 0.04109598, 0.04109599, 0.04109598, 0.04109599, 1.95619043], [1516887420000, 0.04109599, 0.041119, 0.04109599, 0.041119, 2.00700299], [1516887480000, 0.0411, 0.04112, 0.0411, 0.04112, 5.02264391], [1516887540000, 0.04112, 0.04115, 0.04112, 0.04114998, 4.71338245], [1516887600000, 0.04112001, 0.04114998, 0.04112001, 0.04114997, 24.97688416], [1516887660000, 0.04114998, 0.04115, 0.04114998, 0.04114998, 5.74841512], [1516887720000, 0.04114998, 0.04114998, 0.04114997, 0.04114997, 10.31598825], [1516887780000, 0.04114998, 0.04115999, 0.04114998, 0.04115999, 15.647325], [1516887840000, 0.04115, 0.04115999, 0.04114997, 0.04114997, 5.98702133], [1516887900000, 0.04114997, 0.04114997, 0.04112001, 0.04112001, 7.02706679], [1516887960000, 0.04109598, 0.04109598, 0.04105, 0.04105, 2.16527884], [1516888020000, 0.04105, 0.04109598, 0.04105, 0.04105, 2.9200594], [1516888080000, 0.041018, 0.041018, 0.0409, 0.0409, 10.41653989], [1516888200000, 0.04101, 0.04101, 0.04099999, 0.04099999, 0.58768592], [1516888260000, 0.04099999, 0.04115981, 0.04095, 0.04101, 8.2588884], [1516888320000, 0.04101, 0.0411598, 0.04101, 0.04101, 0.49626399], [1516888380000, 0.04101, 0.04101, 0.04101, 0.04101, 0.88167067], [1516888440000, 0.04101001, 0.04115979, 0.04101, 0.04115979, 0.63659549], [1516888500000, 0.0410717, 0.04115977, 0.0410717, 0.04115977, 1.13042995], [1516888560000, 0.04115977, 0.04115977, 0.04115977, 0.04115977, 1.70642851], [1516888620000, 0.04115979, 0.04116383, 0.04115979, 0.04116383, 0.16322199], [1516888680000, 0.04115977, 0.04116383, 0.041048, 0.041048, 2.27405404], [1516888740000, 0.041048, 0.04116383, 0.041048, 0.04116383, 1.65729627], [1516888800000, 0.04116383, 0.0412, 0.04116383, 0.0412, 23.94766511], [1516888860000, 0.0412, 0.04126177, 0.04119996, 0.04126177, 4.95885834], [1516888920000, 0.04120552, 0.04126177, 0.04120552, 0.04126177, 4.09280101], [1516888980000, 0.04120552, 0.04124673, 0.04120552, 0.041211, 0.54542881], [1516889040000, 0.04124672, 0.04126177, 0.04124672, 0.04124673, 3.05767632], [1516889100000, 0.04124673, 0.04126177, 0.04124673, 0.04126177, 3.26777295], [1516889160000, 0.04126177, 0.04135396, 0.04126177, 0.04135396, 1.07746182], [1516889220000, 0.04126178, 0.0412618, 0.04126177, 0.0412618, 1.34272253], [1516889280000, 0.04135396, 0.04135396, 0.04135396, 0.04135396, 0.0267198], [1516889340000, 0.04135395, 0.04136331, 0.04135395, 0.041354, 12.6496271], [1516889400000, 0.04135396, 0.04136013, 0.04135396, 0.04135396, 3.70291224], [1516889460000, 0.04135396, 0.0414, 0.04135396, 0.04135396, 6.73245619], [1516889520000, 0.04135396, 0.04136331, 0.04135396, 0.04135397, 2.5127234], [1516889580000, 0.04136331, 0.0414, 0.04135399, 0.041354, 0.30360928], [1516889640000, 0.041354, 0.0414, 0.041354, 0.0414, 0.98479732], [1516889700000, 0.0414, 0.0414037, 0.0413541, 0.0413541, 5.99363641], [1516889760000, 0.0413541, 0.04141605, 0.0413541, 0.0413541, 4.26640498], [1516889820000, 0.04135396, 0.04141605, 0.04135396, 0.04141605, 1.34089677], [1516889880000, 0.04135396, 0.04135396, 0.04135396, 0.04135396, 0.19191573], [1516889940000, 0.04141399, 0.04141605, 0.04135396, 0.04135396, 4.84421475], [1516890000000, 0.04135396, 0.04141398, 0.04135396, 0.04141398, 1.69710797], [1516890060000, 0.04141395, 0.04141604, 0.04141395, 0.04141604, 5.06464208], [1516890120000, 0.0414144, 0.0414144, 0.04141398, 0.0414144, 0.29819193], [1516890180000, 0.0414144, 0.04141605, 0.0414144, 0.04141605, 0.70996586], [1516890240000, 0.04141605, 0.04141605, 0.0414144, 0.0414144, 0.28988286], [1516890300000, 0.04142088, 0.04142088, 0.04141398, 0.04141398, 6.46542604], [1516890360000, 0.04142088, 0.04142734, 0.04141398, 0.04141398, 8.4426677], [1516890420000, 0.04142088, 0.04142734, 0.04141398, 0.04142693, 1.70056553], [1516890480000, 0.04142733, 0.04142733, 0.04142733, 0.04142733, 0.0266133], [1516890540000, 0.04142693, 0.0415, 0.04142693, 0.0415, 136.15580059], [1516890600000, 0.0415, 0.0415, 0.04142693, 0.04142693, 49.83933592], [1516890660000, 0.04142693, 0.04142693, 0.04141398, 0.04141398, 11.10015306], [1516890720000, 0.04141399, 0.041414, 0.04141399, 0.041414, 1.83059481], [1516890780000, 0.04142693, 0.04142693, 0.041414, 0.04142693, 12.68345972], [1516890840000, 0.04142693, 0.04142733, 0.04142693, 0.04142693, 5.8255368], [1516890900000, 0.04142733, 0.04143989, 0.04142733, 0.04142733, 4.57102617], [1516890960000, 0.04142733, 0.0415, 0.04142733, 0.0415, 73.48025202], [1516891020000, 0.0415, 0.0415, 0.04149999, 0.04149999, 1.49164171], [1516891080000, 0.04149999, 0.0415, 0.04142733, 0.04143796, 11.30951467], [1516891140000, 0.04143796, 0.04149999, 0.04143796, 0.04143796, 3.5054089], [1516891200000, 0.04149999, 0.04149999, 0.04143796, 0.04149999, 1.68495565], [1516891260000, 0.0415, 0.0415, 0.04149999, 0.04149999, 1.76890034], [1516891320000, 0.04149999, 0.0415, 0.04149999, 0.0415, 3.53532083], [1516891380000, 0.04149999, 0.0415, 0.04149999, 0.0415, 4.01416562], [1516891440000, 0.04149999, 0.0415, 0.04149999, 0.0415, 2.49908835], [1516891500000, 0.04149999, 0.04154, 0.04149999, 0.04150002, 2.04857558], [1516891560000, 0.04154, 0.04154351, 0.04150003, 0.04154351, 9.54787907], [1516891620000, 0.04154351, 0.04160157, 0.04150002, 0.04160157, 1.26642491], [1516891680000, 0.04160157, 0.0417, 0.04153275, 0.0417, 2.07929754], [1516891740000, 0.0417, 0.04170701, 0.0417, 0.0417, 2.57266599], [1516891800000, 0.0417, 0.04170002, 0.0417, 0.04170002, 1.11430025], [1516891860000, 0.041707, 0.041742, 0.041707, 0.04173357, 6.09950683], [1516891920000, 0.04173782, 0.04174835, 0.0417, 0.0417, 10.82696409], [1516891980000, 0.04170001, 0.041742, 0.0417, 0.0417, 66.755305], [1516892040000, 0.0417, 0.0417, 0.04164, 0.04164, 63.01687027], [1516892100000, 0.04155447, 0.04170003, 0.0412, 0.04120554, 43.97211908], [1516892160000, 0.04120556, 0.04168798, 0.04102001, 0.04120005, 103.7891804], [1516892220000, 0.0412088, 0.04122934, 0.04120005, 0.04122934, 1.76297803], [1516892280000, 0.04122934, 0.04122934, 0.04122934, 0.04122934, 4.90208186], [1516892340000, 0.04145972, 0.04170003, 0.04125002, 0.0413981, 6.20892693], [1516892400000, 0.04129125, 0.04170003, 0.04127521, 0.04160613, 5.47836044], [1516892460000, 0.04160612, 0.04170002, 0.04131019, 0.04169994, 9.6925949], [1516892520000, 0.04143953, 0.04169994, 0.04133902, 0.04168999, 4.48229444], [1516892580000, 0.04168997, 0.04169994, 0.04133919, 0.04169994, 11.92056422], [1516892640000, 0.04168994, 0.04177, 0.04138, 0.04176992, 19.57017157], [1516892700000, 0.04176992, 0.0418802, 0.04176992, 0.04178, 40.64712597], [1516892760000, 0.04177, 0.04180437, 0.04145641, 0.04156109, 7.1925867], [1516892820000, 0.04156114, 0.04180437, 0.04156114, 0.04156601, 6.47772045], [1516892880000, 0.04156128, 0.04180437, 0.04156128, 0.041566, 47.16702176], [1516892940000, 0.04180437, 0.04187163, 0.041784, 0.041784, 0.77199982], [1516893000000, 0.04178399, 0.04178399, 0.04178399, 0.04178399, 1.4359563], [1516893060000, 0.04178399, 0.04178399, 0.04178399, 0.04178399, 0.05792469], [1516893120000, 0.04178399, 0.04178399, 0.04157028, 0.04157028, 1.15000023], [1516893180000, 0.04157039, 0.0415704, 0.04157039, 0.0415704, 0.23207146], [1516893300000, 0.04178397, 0.04178399, 0.04160598, 0.04160598, 1.79134636], [1516893420000, 0.04160599, 0.04160599, 0.04160182, 0.04160598, 3.14105269], [1516893480000, 0.04160182, 0.04160598, 0.04160182, 0.04160598, 0.21521237], [1516893540000, 0.04160182, 0.04160598, 0.04160182, 0.04160182, 2.99214744], [1516893600000, 0.04160182, 0.04177061, 0.04160182, 0.04177061, 10.74986915], [1516893660000, 0.04160599, 0.04177055, 0.04160182, 0.04160182, 6.42908725], [1516893720000, 0.04160182, 0.04160182, 0.04159171, 0.04159171, 22.00946619], [1516893780000, 0.04159171, 0.04160182, 0.0414, 0.0415917, 34.77077125], [1516893840000, 0.0414, 0.0414, 0.04128, 0.04128, 5.34478558], [1516893900000, 0.04118197, 0.04158596, 0.04118197, 0.04158594, 1.25084533], [1516893960000, 0.04118289, 0.04153399, 0.04118196, 0.04153399, 1.42404251], [1516894020000, 0.04147299, 0.04147299, 0.04146798, 0.04146798, 2.52295146], [1516894080000, 0.04118195, 0.04144297, 0.04112, 0.04114, 2.13647096], [1516894140000, 0.04142799, 0.04142799, 0.04114001, 0.04114001, 17.58987854], [1516894200000, 0.04114002, 0.041383, 0.04114002, 0.04138299, 2.3459095], [1516894260000, 0.04114001, 0.04138293, 0.04114001, 0.04114001, 4.26257791], [1516894320000, 0.04114001, 0.04136998, 0.04114001, 0.041368, 4.59150611], [1516894380000, 0.04125, 0.04136998, 0.04114001, 0.04136591, 20.29460712], [1516894440000, 0.04114001, 0.04114001, 0.04114001, 0.04114001, 0.16129466], [1516894500000, 0.04136586, 0.04136586, 0.04136586, 0.04136586, 5.9293704], [1516894560000, 0.04114003, 0.04114003, 0.04114003, 0.04114003, 0.18616384], [1516894620000, 0.04136583, 0.041469, 0.0413658, 0.041469, 18.50253068], [1516894680000, 0.04114006, 0.04114006, 0.04114006, 0.04114006, 0.03242295], [1516894740000, 0.04136577, 0.04136586, 0.04114005, 0.04114005, 15.56457119], [1516894800000, 0.04114005, 0.0411673, 0.04114005, 0.04115002, 6.79741769], [1516894860000, 0.0411673, 0.04136586, 0.0411673, 0.04136586, 0.89648705], [1516894920000, 0.04116589, 0.04136585, 0.04115002, 0.04115002, 1.7694422], [1516894980000, 0.04136585, 0.04136585, 0.0413, 0.0413, 1.3940723], [1516895040000, 0.04136585, 0.04136585, 0.04136585, 0.04136585, 0.6], [1516895100000, 0.04118196, 0.04136583, 0.04118196, 0.04136583, 0.93214399], [1516895160000, 0.04136583, 0.04136583, 0.04136582, 0.04136583, 0.07429228], [1516895280000, 0.04115015, 0.04115015, 0.04115015, 0.04115015, 0.72484501], [1516895400000, 0.04136582, 0.04136582, 0.04136582, 0.04136582, 0.48349118], [1516895520000, 0.04136, 0.04136, 0.04136, 0.04136, 0.07905043], [1516895580000, 0.04115015, 0.04135998, 0.04115015, 0.04135995, 4.30859989], [1516895640000, 0.04115015, 0.04115015, 0.04115015, 0.04115015, 0.06124073], [1516895760000, 0.0411502, 0.0411502, 0.0411502, 0.0411502, 0.04324854], [1516895820000, 0.04133499, 0.04133499, 0.0411502, 0.04133498, 2.02255976], [1516895880000, 0.04115021, 0.04115021, 0.04115015, 0.04115015, 5.83480189], [1516895940000, 0.04115015, 0.04115016, 0.04115015, 0.04115016, 0.34398068], [1516896000000, 0.04116788, 0.04133697, 0.04116788, 0.04129714, 20.13555737], [1516896060000, 0.04116788, 0.04127559, 0.04116788, 0.04116788, 10.17799871], [1516896120000, 0.04116788, 0.04133686, 0.04116788, 0.04133671, 16.52437943], [1516896180000, 0.0413367, 0.04133671, 0.04115016, 0.04115016, 23.58719764], [1516896240000, 0.04115018, 0.04116611, 0.04115015, 0.04116611, 5.38897528], [1516896300000, 0.04115015, 0.04115015, 0.04115002, 0.04115002, 2.28433133], [1516896360000, 0.04115002, 0.04116611, 0.04115002, 0.04116611, 9.49704274], [1516896420000, 0.04116611, 0.04116611, 0.0411661, 0.0411661, 0.60388716], [1516896480000, 0.04115, 0.0411661, 0.04112, 0.04115, 3.82248543], [1516896540000, 0.04115, 0.04115, 0.04115, 0.04115, 0.13626336], [1516896600000, 0.04115, 0.04115, 0.04101001, 0.04101001, 4.24001057], [1516896660000, 0.04101001, 0.04101001, 0.04101001, 0.04101001, 1.34472962], [1516896720000, 0.04116, 0.04116, 0.04101001, 0.04116, 0.17219918], [1516896780000, 0.04101001, 0.04101002, 0.04101001, 0.04101001, 1.71997645], [1516896840000, 0.04101002, 0.04116, 0.04101, 0.04116, 3.8499457], [1516896900000, 0.04101003, 0.04116, 0.04101003, 0.04116, 1.00531507], [1516896960000, 0.04101004, 0.04116, 0.04101004, 0.04116, 5.32292685], [1516897020000, 0.04116001, 0.04116001, 0.04116, 0.04116, 6.39254741], [1516897080000, 0.04102, 0.041158, 0.04102, 0.04102, 1.18070211], [1516897140000, 0.04106102, 0.04106102, 0.04106102, 0.04106102, 0.17170871], [1516897200000, 0.04101004, 0.04101004, 0.04101004, 0.04101004, 0.41377905], [1516897260000, 0.04101004, 0.04101004, 0.04101004, 0.04101004, 0.55591653], [1516897320000, 0.04101004, 0.04101004, 0.04101004, 0.04101004, 0.05614498], [1516897380000, 0.04101004, 0.04101004, 0.04101004, 0.04101004, 0.56246012], [1516897440000, 0.04101004, 0.04101004, 0.04101003, 0.04101004, 7.33230972], [1516897500000, 0.04101003, 0.04101003, 0.04100999, 0.04100999, 20.49903449], [1516897560000, 0.04100999, 0.04100999, 0.041, 0.041, 0.04551074], [1516897620000, 0.04100999, 0.04100999, 0.04090001, 0.04100999, 5.15998599], [1516897680000, 0.04100999, 0.04100999, 0.04100999, 0.04100999, 0.51396312], [1516897740000, 0.04100999, 0.04100999, 0.04090002, 0.04100998, 1.06328598], [1516897800000, 0.04090002, 0.04100997, 0.04090002, 0.04090002, 2.5183178], [1516897860000, 0.04100997, 0.04100997, 0.04100997, 0.04100997, 0.05391216], [1516897920000, 0.04100997, 0.04100997, 0.04100997, 0.04100997, 0.09369869], [1516897980000, 0.0409001, 0.04100998, 0.0409001, 0.04090011, 0.81718101], [1516898040000, 0.04100996, 0.04100998, 0.04100996, 0.04100996, 3.16209211], [1516898100000, 0.04100995, 0.04100995, 0.04100995, 0.04100995, 1.15261951], [1516898160000, 0.04100996, 0.04100996, 0.04100996, 0.04100996, 0.05391217], [1516898220000, 0.04100995, 0.04100995, 0.04100995, 0.04100995, 1.22710159], [1516898280000, 0.04100995, 0.04100995, 0.04090016, 0.04100995, 0.71802794], [1516898340000, 0.04100994, 0.04101004, 0.04100994, 0.04101004, 32.84581644], [1516898400000, 0.04101003, 0.04101004, 0.04101003, 0.04101004, 0.50833616], [1516898460000, 0.04101004, 0.04101005, 0.04101004, 0.04101005, 18.39731467], [1516898520000, 0.04101005, 0.04116001, 0.04101005, 0.04101005, 3.88786171], [1516898580000, 0.04101005, 0.04101005, 0.04101003, 0.04101005, 0.65203143], [1516898640000, 0.04101003, 0.04101005, 0.04101003, 0.04101005, 0.27244328], [1516898700000, 0.04101005, 0.04101005, 0.04101005, 0.04101005, 6.04549114], [1516898760000, 0.04101004, 0.04101005, 0.04101004, 0.04101005, 2.90791397], [1516898820000, 0.04101003, 0.04116001, 0.04101003, 0.04116001, 1.57488103], [1516898880000, 0.04101003, 0.04101003, 0.04101003, 0.04101003, 4.6036195], [1516898940000, 0.04099, 0.04101003, 0.04099, 0.04101003, 0.83940801], [1516899000000, 0.04090033, 0.04116001, 0.04090033, 0.04116001, 0.41515865], [1516899060000, 0.04116001, 0.04116001, 0.04116001, 0.04116001, 0.0181517], [1516899120000, 0.04090017, 0.04116, 0.04090017, 0.04090018, 0.14972377], [1516899180000, 0.04099538, 0.04099538, 0.04099538, 0.04099538, 0.09492657], [1516899240000, 0.04116, 0.04116001, 0.04099539, 0.041, 1.35060338], [1516899300000, 0.04099538, 0.04116001, 0.04099538, 0.04116001, 0.11361565], [1516899360000, 0.04099536, 0.04116001, 0.04099536, 0.04116001, 0.04320031], [1516899420000, 0.04099542, 0.041302, 0.04099542, 0.041302, 7.17971096], [1516899480000, 0.0413, 0.0413, 0.0413, 0.0413, 3.41125893], [1516899540000, 0.0413, 0.041301, 0.04123, 0.041301, 23.11684292], [1516899600000, 0.041301, 0.041301, 0.041301, 0.041301, 0.02394813], [1516899660000, 0.04130104, 0.04130198, 0.041301, 0.041301, 3.37686168], [1516899720000, 0.041301, 0.041301, 0.041301, 0.041301, 1.74118351], [1516899780000, 0.041301, 0.04130195, 0.041301, 0.04130195, 0.92850117], [1516899840000, 0.041301, 0.041301, 0.041301, 0.041301, 0.84216822], [1516899900000, 0.041301, 0.04130191, 0.041301, 0.041301, 4.46766612], [1516899960000, 0.041301, 0.041301, 0.041301, 0.041301, 1.14099408], [1516900020000, 0.041301, 0.04130187, 0.04123, 0.04130187, 2.29491415], [1516900080000, 0.04123, 0.04123, 0.04123, 0.04123, 0.2], [1516900140000, 0.04130186, 0.04130186, 0.04123, 0.04130186, 5.76228819], [1516900200000, 0.04130179, 0.04130179, 0.04130179, 0.04130179, 2.57687859], [1516900260000, 0.04123, 0.04130178, 0.04123, 0.04123, 0.12348048], [1516900320000, 0.04123, 0.04123, 0.04123, 0.04123, 0.02674024], [1516900380000, 0.041245, 0.04124505, 0.041245, 0.04124505, 0.0801915], [1516900440000, 0.04129792, 0.04129792, 0.04124505, 0.04124505, 4.63944084], [1516900500000, 0.04124505, 0.04129754, 0.04124505, 0.04129754, 1.25518217], [1516900560000, 0.04129754, 0.04129754, 0.04124505, 0.04124505, 9.01997538], [1516900620000, 0.04129752, 0.041302, 0.04129752, 0.041302, 20.69089346], [1516900740000, 0.04124505, 0.04124505, 0.04124505, 0.04124505, 0.04987158], [1516900800000, 0.04124505, 0.041302, 0.04109472, 0.04109472, 4.8642528], [1516900920000, 0.04130199, 0.04130199, 0.04130197, 0.04130199, 0.68903014], [1516900980000, 0.04130198, 0.04130198, 0.04130198, 0.04130198, 0.02974344], [1516901040000, 0.041034, 0.04130198, 0.041034, 0.04130198, 4.36290826], [1516901100000, 0.04130198, 0.04130199, 0.04130198, 0.04130199, 13.44780889], [1516901160000, 0.04130198, 0.041302, 0.04130198, 0.04130199, 97.98201866], [1516901220000, 0.04130199, 0.04133195, 0.04130199, 0.04130199, 1.51963167], [1516901280000, 0.04133196, 0.04133196, 0.04130199, 0.04130199, 6.33553031], [1516901340000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 10.59639079], [1516901400000, 0.04130199, 0.04135998, 0.04130199, 0.04135998, 0.86052018], [1516901460000, 0.04130199, 0.04135998, 0.04130199, 0.04135996, 0.23117903], [1516901520000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 10.10667116], [1516901580000, 0.04135997, 0.04135997, 0.04130199, 0.04130199, 0.57480684], [1516901640000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 0.14325], [1516901700000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 1.35047273], [1516901760000, 0.04135995, 0.04135995, 0.04130199, 0.04130199, 1.06271856], [1516901820000, 0.04135995, 0.04135995, 0.04130199, 0.04130199, 0.27294986], [1516901880000, 0.04135994, 0.04135994, 0.04135994, 0.04135994, 1.0], [1516901940000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 0.02669363], [1516902000000, 0.04135995, 0.04135997, 0.04130199, 0.04135997, 0.90882169], [1516902060000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 0.13669394], [1516902120000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 0.08584561], [1516902180000, 0.04135996, 0.04135997, 0.04130199, 0.04135996, 7.29462608], [1516902240000, 0.04135996, 0.04135996, 0.04130199, 0.04130199, 0.05331244], [1516902300000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 0.41378771], [1516902360000, 0.04130199, 0.04130392, 0.04130199, 0.04130199, 21.87449417], [1516902420000, 0.04135996, 0.04135996, 0.04130199, 0.04130199, 0.90884237], [1516902480000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 0.98098368], [1516902540000, 0.04130199, 0.04140999, 0.04130199, 0.04140998, 3.77152032], [1516902600000, 0.04140998, 0.04140999, 0.04130199, 0.04140999, 0.35666228], [1516902660000, 0.041302, 0.041302, 0.041302, 0.041302, 0.02669362], [1516902720000, 0.0413035, 0.04167419, 0.0413035, 0.04131, 51.78096113], [1516902780000, 0.04149999, 0.04149999, 0.04130199, 0.04130199, 10.35083518], [1516902840000, 0.04131075, 0.041556, 0.04131075, 0.04131075, 0.4633761], [1516902900000, 0.04131076, 0.04155599, 0.04131075, 0.04131075, 5.95337594], [1516902960000, 0.04155599, 0.04155599, 0.04131075, 0.04131075, 1.90021891], [1516903080000, 0.04131075, 0.04131075, 0.04131075, 0.04131075, 0.02668797], [1516903140000, 0.04131075, 0.04131075, 0.041302, 0.041302, 2.42244988], [1516903200000, 0.041302, 0.04154075, 0.04130199, 0.04130199, 36.45709451], [1516903260000, 0.04152073, 0.04152073, 0.04130199, 0.04130199, 3.91882421], [1516903320000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 33.70924997], [1516903380000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 8.9182409], [1516903440000, 0.04130199, 0.04148994, 0.04130199, 0.04148988, 1.76951611], [1516903500000, 0.04148986, 0.04148986, 0.04130199, 0.04130199, 0.29440977], [1516903560000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 0.96383776], [1516903620000, 0.04130199, 0.041302, 0.04130199, 0.04130199, 3.81087448], [1516903680000, 0.04130199, 0.0413859, 0.04130199, 0.04130199, 3.51211763], [1516903740000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 0.08472638], [1516903800000, 0.04130199, 0.04153261, 0.04130199, 0.04130199, 0.55706708], [1516903860000, 0.04153257, 0.04153257, 0.04153257, 0.04153257, 14.0], [1516903920000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 0.2], [1516903980000, 0.04135, 0.0415549, 0.04135, 0.0415549, 0.77072565], [1516904040000, 0.04135028, 0.04155492, 0.04135028, 0.04155492, 1.37210074], [1516904100000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 0.05144576], [1516904160000, 0.0414, 0.0414, 0.0414, 0.0414, 0.08850242], [1516904220000, 0.0414, 0.0414, 0.0414, 0.0414, 0.03540033], [1516904340000, 0.0414, 0.0414, 0.041302, 0.041302, 0.11519604], [1516904400000, 0.041302, 0.0414, 0.04130199, 0.04130299, 10.35624453], [1516904460000, 0.04139999, 0.0414, 0.04130199, 0.04135, 0.79282574], [1516904520000, 0.0414, 0.0414, 0.04135, 0.04135999, 0.1683913], [1516904580000, 0.04139999, 0.04139999, 0.04130199, 0.04130199, 12.37999783], [1516904640000, 0.04130199, 0.04130299, 0.04130199, 0.04130299, 0.43890007], [1516904700000, 0.04130299, 0.04130299, 0.04130299, 0.04130299, 0.29014811], [1516904760000, 0.04130299, 0.0415549, 0.04130299, 0.04130299, 2.36633283], [1516904820000, 0.04130299, 0.04153918, 0.04130299, 0.04130299, 1.56539781], [1516904880000, 0.04130299, 0.04130299, 0.04130299, 0.04130299, 0.24328596], [1516904940000, 0.04130299, 0.04131651, 0.04130299, 0.04131651, 0.15095937], [1516905000000, 0.0413031, 0.04130312, 0.0413031, 0.04130312, 0.25744516], [1516905060000, 0.04130312, 0.04146251, 0.04130199, 0.04146251, 48.60509818], [1516905120000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 46.96227726], [1516905180000, 0.04130199, 0.04130199, 0.04130199, 0.04130199, 0.26307696], [1516905240000, 0.04130199, 0.04145445, 0.04130199, 0.04130199, 0.09327815], [1516905300000, 0.041302, 0.041302, 0.041302, 0.041302, 0.20992203], [1516905360000, 0.041302, 0.041302, 0.041302, 0.041302, 2.45481071], [1516905420000, 0.041302, 0.041302, 0.041302, 0.041302, 0.13729293], [1516905480000, 0.041302, 0.0414625, 0.04130199, 0.04130199, 15.65034746], [1516905540000, 0.04130199, 0.04147089, 0.04130199, 0.04130199, 1.84265087], [1516905600000, 0.04154489, 0.04168417, 0.04154489, 0.04168417, 3.02468751], [1516905660000, 0.0415449, 0.04168905, 0.04144388, 0.04147089, 5.70134031], [1516905720000, 0.04167371, 0.04169207, 0.0414709, 0.04169207, 1.37056607], [1516905780000, 0.041701, 0.04189428, 0.04169207, 0.0417, 25.55574418], [1516905840000, 0.0417, 0.0418, 0.0417, 0.0417, 0.31837448], [1516905900000, 0.04154063, 0.04189428, 0.04154063, 0.0418, 2.69273448], [1516905960000, 0.0418, 0.0418, 0.0417, 0.04170001, 1.50124565], [1516906020000, 0.0418, 0.04189428, 0.0418, 0.04189428, 0.20962843], [1516906080000, 0.04189428, 0.04189429, 0.04189428, 0.04189429, 2.69741169], [1516906140000, 0.0418943, 0.04198236, 0.0418943, 0.04194003, 7.27779601], [1516906200000, 0.04194003, 0.04198235, 0.04194003, 0.04198235, 4.51088404], [1516906260000, 0.04198235, 0.042, 0.04198235, 0.04199979, 65.54598444], [1516906320000, 0.042, 0.04209999, 0.04199979, 0.04209999, 5.84540788], [1516906380000, 0.04209999, 0.0421, 0.04199979, 0.0419998, 9.97044399], [1516906440000, 0.0419998, 0.0419998, 0.0419998, 0.0419998, 0.58823747], [1516906500000, 0.04199981, 0.0421, 0.0419998, 0.04199981, 12.98901776], [1516906560000, 0.0419998, 0.0421, 0.0419998, 0.04209, 33.56785055], [1516906620000, 0.04209, 0.0421, 0.04199981, 0.04199981, 0.85657292], [1516906680000, 0.04209, 0.04209, 0.04199981, 0.04199981, 3.17333374], [1516906740000, 0.04199981, 0.04209999, 0.04199981, 0.04209, 2.96080539], [1516906800000, 0.04209, 0.04209, 0.04199981, 0.04199981, 6.13869198], [1516906860000, 0.0421, 0.0421, 0.0421, 0.0421, 4.86386734], [1516906920000, 0.04199981, 0.0421, 0.04199981, 0.0421, 5.69677098], [1516906980000, 0.0421, 0.0421, 0.04199981, 0.04199981, 2.17429563], [1516907040000, 0.0421, 0.0421, 0.04199981, 0.04199981, 7.40318451], [1516907100000, 0.042, 0.0420999, 0.042, 0.04209989, 0.27175697], [1516907160000, 0.042, 0.042, 0.04199981, 0.04199981, 0.90779833], [1516907220000, 0.04199981, 0.042, 0.04199981, 0.042, 0.26442893], [1516907280000, 0.04199981, 0.04199981, 0.04199981, 0.04199981, 1.27851398], [1516907340000, 0.04199981, 0.04199981, 0.04199981, 0.04199981, 0.70774905], [1516907400000, 0.04199981, 0.042, 0.04199981, 0.04199981, 21.12463523], [1516907460000, 0.04199981, 0.04199981, 0.04199981, 0.04199981, 1.24451964], [1516907520000, 0.04199981, 0.04199981, 0.04199981, 0.04199981, 0.27852278], [1516907580000, 0.04199981, 0.04199981, 0.04199981, 0.04199981, 2.72312694], [1516907640000, 0.04199981, 0.04199997, 0.04199981, 0.04199982, 0.96514231], [1516907700000, 0.04199982, 0.0419999, 0.04199981, 0.04199981, 1.85078282], [1516907760000, 0.04199981, 0.0419999, 0.04199981, 0.04199981, 19.79546322], [1516907820000, 0.04199981, 0.04199994, 0.0419998, 0.0419998, 15.10927816], [1516907880000, 0.0419998, 0.0419998, 0.0419998, 0.0419998, 0.25250026], [1516907940000, 0.04199986, 0.04199986, 0.0419998, 0.0419998, 2.01098142], [1516908000000, 0.0419998, 0.0419998, 0.0419998, 0.0419998, 2.0], [1516908060000, 0.0419998, 0.04199989, 0.0419998, 0.0419998, 1.85348437], [1516908120000, 0.0419998, 0.04199988, 0.0419998, 0.04199988, 1.6743549], [1516908180000, 0.04199988, 0.04199988, 0.04199988, 0.04199988, 1.2238641], [1516908240000, 0.0419998, 0.0419998, 0.0419998, 0.0419998, 1.09779037], [1516908300000, 0.04199987, 0.04199988, 0.04199985, 0.04199988, 5.99119765], [1516908360000, 0.04199981, 0.04199992, 0.04199981, 0.04199992, 5.99102433], [1516908420000, 0.04199992, 0.042, 0.04199981, 0.04199981, 0.39722292], [1516908480000, 0.04199992, 0.04199992, 0.0419998, 0.0419998, 5.66095478], [1516908540000, 0.04199992, 0.04199992, 0.0419998, 0.04199981, 7.17876074], [1516908600000, 0.04199981, 0.04199981, 0.04199981, 0.04199981, 0.57848809], [1516908660000, 0.04199981, 0.04199981, 0.04199981, 0.04199981, 0.83585225], [1516908720000, 0.04199981, 0.04199981, 0.0419998, 0.04199981, 3.41657228], [1516908780000, 0.0419998, 0.0419998, 0.0419998, 0.0419998, 0.99736909], [1516908840000, 0.0419998, 0.04199981, 0.0419998, 0.04199981, 0.1050009], [1516908960000, 0.04199981, 0.04199992, 0.0419998, 0.0419998, 6.45348037], [1516909020000, 0.0419998, 0.0419998, 0.0419998, 0.0419998, 1.1871974], [1516909080000, 0.0419998, 0.0419998, 0.0419998, 0.0419998, 13.02350026], [1516909140000, 0.0419998, 0.04199992, 0.0419998, 0.0419998, 1.12748907], [1516909200000, 0.0419998, 0.0419998, 0.0419998, 0.0419998, 1.76357713], [1516909260000, 0.0419998, 0.0419999, 0.0419998, 0.0419998, 1.14830664], [1516909320000, 0.0419998, 0.04199992, 0.0419998, 0.0419998, 0.64394035], [1516909380000, 0.0419998, 0.04204776, 0.0419998, 0.04204776, 7.08098601], [1516909440000, 0.0419998, 0.0419998, 0.0419998, 0.0419998, 0.28045189], [1516909500000, 0.0419998, 0.042, 0.0419998, 0.0419998, 27.20150146], [1516909560000, 0.0419998, 0.0419998, 0.0419998, 0.0419998, 2.12114157], [1516909620000, 0.0419998, 0.0421, 0.0419998, 0.0421, 34.52143515], [1516909680000, 0.0421, 0.0421, 0.0421, 0.0421, 1.76573393], [1516909740000, 0.0421, 0.0421, 0.0419998, 0.0419998, 5.6043588], [1516909800000, 0.0421, 0.04210606, 0.0421, 0.04210606, 0.76246389], [1516909860000, 0.0421, 0.04210606, 0.0421, 0.04210606, 9.31670958], [1516909920000, 0.04210606, 0.04210606, 0.0421, 0.0421, 9.9563753], [1516909980000, 0.0421, 0.0421, 0.0421, 0.0421, 0.66614952], [1516910040000, 0.0421, 0.0421, 0.0421, 0.0421, 1.4027415], [1516910100000, 0.0421, 0.0421, 0.0421, 0.0421, 3.28646744], [1516910160000, 0.0421, 0.0421, 0.04198236, 0.04198236, 11.62285614], [1516910220000, 0.04198236, 0.04199979, 0.04198236, 0.04198236, 15.14282676], [1516910280000, 0.04198236, 0.04198236, 0.04194, 0.04198236, 8.09510503], [1516910340000, 0.04198236, 0.04198236, 0.04194, 0.04194, 9.23824397], [1516910400000, 0.04198236, 0.0421, 0.04194, 0.04194, 0.80248605], [1516910460000, 0.04194, 0.04194, 0.04194, 0.04194, 0.62119368], [1516910520000, 0.04209497, 0.04209497, 0.04194, 0.04194, 20.58997949], [1516910580000, 0.04194, 0.04194, 0.04194, 0.04194, 1.50156248], [1516910640000, 0.04194, 0.0419405, 0.04194, 0.04194, 16.55230915], [1516910700000, 0.04194, 0.042, 0.04194, 0.04194, 4.14961957], [1516910760000, 0.04194, 0.04194001, 0.04194, 0.04194001, 1.78112496], [1516910820000, 0.04194001, 0.04197999, 0.04194, 0.04194001, 2.25523713], [1516910880000, 0.04197999, 0.04197999, 0.04194, 0.04194, 0.85712612], [1516910940000, 0.04194, 0.04198, 0.04194, 0.04194, 3.45493754], [1516911000000, 0.04194, 0.04208499, 0.04194, 0.04194, 1.20640748], [1516911060000, 0.04194, 0.04208499, 0.04194, 0.04194, 18.75726784], [1516911120000, 0.04204995, 0.04208494, 0.04194, 0.04194, 13.18160002], [1516911180000, 0.04194, 0.04194, 0.04194, 0.04194, 0.0525751], [1516911240000, 0.04194, 0.04208498, 0.04194, 0.04194, 2.50135599], [1516911300000, 0.04194, 0.04194, 0.04194, 0.04194, 1.16163239], [1516911360000, 0.04194, 0.04209998, 0.04194, 0.04194003, 4.39848975], [1516911420000, 0.04194003, 0.04194003, 0.04194003, 0.04194003, 1.54148043], [1516911480000, 0.04199003, 0.04211862, 0.04199003, 0.04211862, 0.92046885], [1516911540000, 0.04194003, 0.04194003, 0.04194003, 0.04194003, 1.09729671], [1516911600000, 0.04194003, 0.04211861, 0.04194003, 0.0421186, 1.49037524], [1516911660000, 0.0421186, 0.0421186, 0.04194003, 0.04194003, 4.71635901], [1516911720000, 0.0421184, 0.0421184, 0.0421184, 0.0421184, 0.36571297], [1516911780000, 0.04211838, 0.04211838, 0.04194003, 0.04211837, 1.11429135], [1516911840000, 0.04194003, 0.04194003, 0.04194003, 0.04194003, 2.091], [1516911900000, 0.04194003, 0.04211839, 0.04194003, 0.04211838, 2.65017454], [1516911960000, 0.04194004, 0.04194004, 0.04194004, 0.04194004, 0.02729121], [1516912020000, 0.04194004, 0.04194004, 0.04194004, 0.04194004, 2.201342], [1516912080000, 0.04194004, 0.04211827, 0.04194004, 0.04211827, 1.00436406], [1516912140000, 0.04194003, 0.04194003, 0.04194003, 0.04194003, 0.02628753], [1516912200000, 0.04194004, 0.04211826, 0.04194004, 0.04211826, 0.43975681], [1516912260000, 0.04211826, 0.04211826, 0.04194004, 0.04194004, 1.88960869], [1516912320000, 0.04211823, 0.04211823, 0.04194004, 0.04194004, 0.24092527], [1516912380000, 0.04211818, 0.04211818, 0.04194004, 0.04194004, 0.08218676], [1516912440000, 0.04194004, 0.04211798, 0.04194004, 0.04211798, 1.6573635], [1516912500000, 0.04211795, 0.04211795, 0.04194004, 0.04194004, 5.6306352], [1516912560000, 0.04194004, 0.04194004, 0.04194004, 0.04194004, 5.39047566], [1516912620000, 0.04199999, 0.04199999, 0.04194004, 0.04194004, 0.16867198], [1516912680000, 0.04194004, 0.04199899, 0.04194004, 0.04194004, 0.93400177], [1516912740000, 0.04194004, 0.04194004, 0.04194, 0.04194, 35.22590303], [1516912800000, 0.04199899, 0.041999, 0.04199899, 0.04199899, 0.31238037], [1516912860000, 0.041999, 0.041999, 0.04194, 0.04194, 2.48685801], [1516912920000, 0.04194, 0.041999, 0.04194, 0.04194, 5.37756209], [1516912980000, 0.041999, 0.041999, 0.04194, 0.04194, 0.52050053], [1516913040000, 0.04194, 0.04194, 0.04194, 0.04194, 0.44868102], [1516913100000, 0.04194, 0.041999, 0.04194, 0.04194, 0.53348166], [1516913160000, 0.041999, 0.041999, 0.04194, 0.04194, 1.6246492], [1516913220000, 0.04194, 0.04194017, 0.04194, 0.04194, 2.06019911], [1516913280000, 0.04194, 0.04194, 0.04194, 0.04194, 25.8015221], [1516913340000, 0.04194, 0.04194, 0.04194, 0.04194, 6.0732737], [1516913400000, 0.04194, 0.04194, 0.04194, 0.04194, 0.34731869], [1516913460000, 0.04194, 0.04194, 0.04194, 0.04194, 10.26429124], [1516913520000, 0.04199598, 0.04199604, 0.04194, 0.04194, 11.53084911], [1516913580000, 0.04194, 0.04199324, 0.04194, 0.04194, 20.42460927], [1516913640000, 0.04194, 0.04199324, 0.04194, 0.04199324, 18.11236569], [1516913700000, 0.04194, 0.04194, 0.04194, 0.04194, 0.0525751], [1516913760000, 0.04194, 0.04199324, 0.04194, 0.04194, 0.52823474], [1516913820000, 0.04194, 0.04199324, 0.04194, 0.04194, 1.81515694], [1516913880000, 0.04194, 0.04199323, 0.04194, 0.04194, 2.56702077], [1516914000000, 0.04194, 0.04199324, 0.04194, 0.04199323, 2.75248324], [1516914060000, 0.04194, 0.04194, 0.04194, 0.04194, 37.36424013], [1516914120000, 0.04194, 0.04199323, 0.04194, 0.04194, 26.56775068], [1516914180000, 0.04194, 0.04194, 0.04194, 0.04194, 0.29699415], [1516914240000, 0.04194, 0.04194, 0.04194, 0.04194, 0.05377003], [1516914300000, 0.04194, 0.04194, 0.04194, 0.04194, 2.66448858], [1516914360000, 0.04194, 0.04194, 0.04194, 0.04194, 0.37809035], [1516914420000, 0.04194, 0.04194, 0.04194, 0.04194, 1.10439829], [1516914480000, 0.04194, 0.04194, 0.04194, 0.04194, 14.49442313], [1516914540000, 0.04194, 0.04199323, 0.04194, 0.04194, 7.38824921], [1516914600000, 0.04194, 0.04194, 0.04194, 0.04194, 52.1682849], [1516914660000, 0.04194, 0.04194, 0.04194, 0.04194, 14.99099363], [1516914720000, 0.0419932, 0.0419932, 0.04194, 0.04194, 2.41063761], [1516914780000, 0.04194, 0.04194, 0.0417, 0.0417, 6.33036268], [1516914840000, 0.0417, 0.0417, 0.04137194, 0.04140777, 26.09017195], [1516914900000, 0.04140777, 0.04156339, 0.04137193, 0.04156339, 16.21388544], [1516914960000, 0.04156339, 0.04157147, 0.04137701, 0.04156546, 3.02465866], [1516915020000, 0.04156546, 0.04185235, 0.04155157, 0.04155157, 31.15262847], [1516915080000, 0.04174458, 0.04183829, 0.04166109, 0.04166109, 1.26711358], [1516915140000, 0.04149208, 0.04166109, 0.04149208, 0.04166109, 0.28720886], [1516915200000, 0.04166109, 0.04185232, 0.04166109, 0.04185232, 1.60843486], [1516915260000, 0.04166109, 0.04166109, 0.04166109, 0.04166109, 0.11158878], [1516915320000, 0.04185231, 0.04185231, 0.04185231, 0.04185231, 0.16008674], [1516915380000, 0.04185232, 0.04185232, 0.04185232, 0.04185232, 0.02500885], [1516915440000, 0.04166109, 0.04166109, 0.04166109, 0.04166109, 0.13618096], [1516915500000, 0.04185232, 0.04185235, 0.04185232, 0.04185232, 2.50188337], [1516915560000, 0.04166109, 0.04166109, 0.04166109, 0.04166109, 0.25538035], [1516915620000, 0.0416611, 0.0416611, 0.04166109, 0.04166109, 0.03145017], [1516915680000, 0.041847, 0.041847, 0.04182697, 0.04182697, 17.79668382], [1516915740000, 0.04182697, 0.04185, 0.04182697, 0.04185, 1.26881987], [1516915800000, 0.04166109, 0.041827, 0.0415156, 0.041827, 0.54643552], [1516915860000, 0.041827, 0.0418523, 0.04147463, 0.04147463, 0.21980142], [1516915980000, 0.04148003, 0.04184695, 0.04148003, 0.04184695, 0.79431453], [1516916040000, 0.04184694, 0.04184694, 0.04184694, 0.04184694, 0.0122133], [1516916100000, 0.04180999, 0.04180999, 0.04180999, 0.04180999, 0.47835446], [1516916160000, 0.0414802, 0.04180998, 0.04148015, 0.04180998, 0.6455298], [1516916220000, 0.04149876, 0.04149876, 0.04149876, 0.04149876, 0.18481812], [1516916280000, 0.04149876, 0.04149877, 0.04149876, 0.04149877, 4.78822534], [1516916340000, 0.04165436, 0.04180996, 0.04137195, 0.041377, 16.67528693], [1516916400000, 0.04137702, 0.04174167, 0.04137702, 0.04174166, 0.27536605], [1516916460000, 0.04139, 0.04139002, 0.04139, 0.04139, 4.11203062], [1516916520000, 0.0416, 0.04179399, 0.0416, 0.04179392, 2.04611899], [1516916580000, 0.0414, 0.0414, 0.0414, 0.0414, 0.49999999], [1516916640000, 0.04142, 0.04142501, 0.04142, 0.041425, 4.12058516], [1516916700000, 0.04143403, 0.04143403, 0.04143403, 0.04143403, 0.06019196], [1516916760000, 0.0415, 0.04185234, 0.0415, 0.04185234, 2.94654882], [1516916820000, 0.0415, 0.0415, 0.0415, 0.0415, 0.0462264], [1516916880000, 0.0415, 0.0415, 0.0415, 0.0415, 4.24608527], [1516916940000, 0.0415, 0.0415, 0.04144635, 0.0415, 3.55599032], [1516917000000, 0.0415, 0.0415, 0.04144635, 0.04144635, 0.9229502], [1516917060000, 0.0414095, 0.0414095, 0.0414095, 0.0414095, 0.86921846], [1516917180000, 0.0414095, 0.0415, 0.0414095, 0.0414095, 13.25283977], [1516917240000, 0.0415, 0.0415, 0.0414095, 0.0414095, 9.77694501], [1516917300000, 0.0414095, 0.0415, 0.04139, 0.0415, 3.30685988], [1516917420000, 0.0413895, 0.04183234, 0.0413895, 0.04173025, 18.03029183], [1516917600000, 0.04183234, 0.04183234, 0.04183, 0.04183234, 3.39895996], [1516917660000, 0.04183234, 0.04183234, 0.04173234, 0.04183234, 0.6547561], [1516917720000, 0.04183234, 0.04183235, 0.04183234, 0.04183234, 6.12691252], [1516917780000, 0.04183235, 0.04185235, 0.04183235, 0.041844, 3.88076203], [1516917840000, 0.04184, 0.041844, 0.04184, 0.041844, 0.19727918], [1516917900000, 0.041844, 0.04185235, 0.041844, 0.04185235, 1.6191353], [1516917960000, 0.04185235, 0.04185235, 0.041844, 0.04185235, 3.14424302], [1516918020000, 0.041844, 0.04185235, 0.041844, 0.04185235, 0.96115895], [1516918080000, 0.041852, 0.041852, 0.041852, 0.041852, 0.05269606], [1516918140000, 0.041852, 0.041852, 0.041852, 0.041852, 9.94730394], [1516918200000, 0.04185235, 0.04196999, 0.04185235, 0.04196999, 0.57670651], [1516918260000, 0.04196999, 0.04196999, 0.04185235, 0.04185235, 0.39592956], [1516918320000, 0.04185235, 0.04185235, 0.04185235, 0.04185235, 0.21188415], [1516918380000, 0.04185235, 0.04199898, 0.04185235, 0.04185235, 22.19363203], [1516918560000, 0.04188997, 0.04188997, 0.04185236, 0.04188997, 1.75447271], [1516918620000, 0.04185236, 0.04188997, 0.041844, 0.041844, 3.23700563], [1516918680000, 0.041844, 0.041844, 0.04184, 0.04184, 0.27682102], [1516918740000, 0.041844, 0.041844, 0.04184, 0.04184, 0.78432783], [1516918860000, 0.04184, 0.041844, 0.04184, 0.041844, 2.29097796], [1516918920000, 0.04184, 0.041844, 0.04184, 0.041844, 5.50442419], [1516918980000, 0.0418502, 0.04188997, 0.0418502, 0.0418502, 2.99478923], [1516919040000, 0.0418502, 0.0418502, 0.0418502, 0.0418502, 0.15006213], [1516919100000, 0.0418502, 0.04188997, 0.04184, 0.04184, 0.96169071], [1516919220000, 0.04184, 0.04184, 0.04184, 0.04184, 0.56690026], [1516919280000, 0.04183235, 0.04183235, 0.04174, 0.04174, 3.06675865], [1516919340000, 0.04174, 0.04174, 0.04174, 0.04174, 1.13186766], [1516919400000, 0.04174, 0.04188997, 0.04174, 0.04188997, 3.25944019], [1516919460000, 0.0419861, 0.0419861, 0.04188997, 0.0419861, 1.14900256], [1516919520000, 0.0419861, 0.0419861, 0.0419861, 0.0419861, 2.55941159], [1516919580000, 0.041999, 0.041999, 0.04174, 0.041999, 7.71052735], [1516919700000, 0.041999, 0.041999, 0.041999, 0.041999, 0.10267227], [1516919760000, 0.04174, 0.04174, 0.04174, 0.04174, 0.1643], [1516919820000, 0.0418695, 0.0418695, 0.04174, 0.0418695, 0.25337916], [1516920000000, 0.04174, 0.04174, 0.04174, 0.04174, 0.03], [1516920120000, 0.04174001, 0.04174001, 0.04174001, 0.04174001, 0.09936133], [1516920180000, 0.04174001, 0.04174001, 0.04174001, 0.04174001, 0.0264137], [1516920240000, 0.04174, 0.04207976, 0.04174, 0.04207976, 1.60616076], [1516920300000, 0.04174, 0.04174, 0.04174, 0.04174, 0.13073444], [1516920360000, 0.04174001, 0.04174001, 0.04174, 0.04174, 7.20531864], [1516920420000, 0.04205, 0.04206665, 0.04204998, 0.04204998, 0.6231206], [1516920540000, 0.04204974, 0.04204974, 0.04204948, 0.04204948, 2.1489095], [1516920600000, 0.04204939, 0.04204939, 0.04204939, 0.04204939, 0.0128037], [1516920660000, 0.0420192, 0.0420192, 0.0420192, 0.0420192, 0.064], [1516920780000, 0.04174001, 0.04174001, 0.041725, 0.041725, 59.78082441], [1516920840000, 0.041725, 0.04174, 0.0417, 0.04174, 16.79912317], [1516920900000, 0.04197998, 0.04197998, 0.04161, 0.04161, 9.7890183], [1516920960000, 0.04173999, 0.04173999, 0.04161, 0.04173999, 2.26957636], [1516921020000, 0.04173999, 0.04173999, 0.04173999, 0.04173999, 2.75979536], [1516921200000, 0.0417, 0.04174001, 0.0417, 0.04174001, 19.67919615], [1516921260000, 0.04174001, 0.04204974, 0.04174001, 0.04204974, 0.75354299], [1516921380000, 0.04204974, 0.04204974, 0.04204974, 0.04204974, 0.99143276], [1516921440000, 0.04204974, 0.04204974, 0.04204974, 0.04204974, 0.7174019], [1516921500000, 0.04204973, 0.04204974, 0.04204973, 0.04204974, 0.23781382], [1516921560000, 0.04204974, 0.04204974, 0.04204974, 0.04204974, 0.07445279], [1516921620000, 0.04204974, 0.04207975, 0.04204974, 0.04207975, 7.90263753], [1516921680000, 0.04207976, 0.04207976, 0.04193259, 0.04207976, 2.99195906], [1516921860000, 0.04207976, 0.04207976, 0.04207976, 0.04207976, 1.16716462], [1516921920000, 0.04180422, 0.04207976, 0.04180209, 0.04207976, 0.87783652], [1516921980000, 0.04207976, 0.04207976, 0.04207976, 0.04207976, 0.12070035], [1516922040000, 0.0419, 0.0421, 0.0419, 0.0419, 1.90465768], [1516922100000, 0.0421, 0.0421, 0.0421, 0.0421, 0.47505938], [1516922220000, 0.0419, 0.04209999, 0.04180209, 0.04209999, 3.79762706], [1516922280000, 0.04209997, 0.0421, 0.042, 0.042, 38.56149837], [1516922340000, 0.042, 0.042, 0.042, 0.042, 0.07125892], [1516922400000, 0.042, 0.042, 0.042, 0.042, 2.53343495], [1516922460000, 0.04180209, 0.04180209, 0.04180209, 0.04180209, 1.03778046], [1516922520000, 0.04180209, 0.04180209, 0.0418, 0.0418, 2.85703653], [1516922580000, 0.0418, 0.04180209, 0.0417849, 0.04180209, 0.1028368], [1516922640000, 0.04180209, 0.04180209, 0.04180209, 0.04180209, 0.0737739], [1516922700000, 0.04178491, 0.04180209, 0.04178491, 0.04180209, 0.77153214], [1516922760000, 0.041802, 0.041802, 0.041802, 0.041802, 0.05277052], [1516922820000, 0.04178492, 0.041802, 0.04178488, 0.041802, 0.60341591], [1516922880000, 0.041802, 0.04180209, 0.041802, 0.04180209, 0.05277047], [1516922940000, 0.04180198, 0.04180198, 0.04180198, 0.04180198, 0.05277054], [1516923000000, 0.04180198, 0.04180198, 0.0417, 0.04180198, 0.41341725], [1516923060000, 0.04180198, 0.04180198, 0.04180198, 0.04180198, 0.02643891], [1516923120000, 0.04180198, 0.04180198, 0.04161169, 0.04180198, 13.5517993], [1516923180000, 0.04180198, 0.04180198, 0.04180198, 0.04180198, 5.36475724], [1516923240000, 0.04180198, 0.04180198, 0.04177905, 0.04180198, 13.2007644], [1516923300000, 0.0418, 0.04180198, 0.0418, 0.04180198, 0.76718538], [1516923360000, 0.04180197, 0.04180197, 0.04180197, 0.04180197, 0.13430898], [1516923420000, 0.04180197, 0.04180199, 0.04180196, 0.04180196, 1.02846233], [1516923480000, 0.04180196, 0.04180196, 0.04180196, 0.04180196, 0.05275008], [1516923540000, 0.04180196, 0.04180196, 0.0418012, 0.0418012, 1.02637504], [1516923600000, 0.04195, 0.04195, 0.0418012, 0.0418999, 1.50877864], [1516923660000, 0.0418999, 0.0418999, 0.04180905, 0.04180905, 2.67590882], [1516923720000, 0.04180122, 0.0418999, 0.04180122, 0.0418999, 4.23138826], [1516923780000, 0.0418999, 0.042, 0.0418999, 0.042, 10.43938758], [1516923840000, 0.0418999, 0.042, 0.04180124, 0.042, 8.3188635], [1516923900000, 0.042, 0.042, 0.042, 0.042, 13.55719139], [1516923960000, 0.042, 0.042, 0.042, 0.042, 0.39041031], [1516924020000, 0.042, 0.042, 0.042, 0.042, 0.7217894], [1516924080000, 0.042, 0.042, 0.04185603, 0.04185603, 2.29698896], [1516924140000, 0.042, 0.042, 0.041876, 0.042, 0.08805557], [1516924200000, 0.04195, 0.0421186, 0.04189101, 0.04189105, 6.0459183], [1516924260000, 0.0421186, 0.0421186, 0.0421186, 0.0421186, 0.05262724], [1516924320000, 0.0421186, 0.04213222, 0.04190116, 0.04213222, 8.36467261], [1516924380000, 0.04213222, 0.04213222, 0.04190122, 0.04213222, 0.09380389], [1516924440000, 0.04196369, 0.04213222, 0.04190193, 0.04213222, 0.35562578], [1516924500000, 0.04191104, 0.04220999, 0.04191104, 0.04220999, 3.46767704], [1516924560000, 0.04213222, 0.04220999, 0.04213222, 0.04220999, 3.29112579], [1516924620000, 0.04213222, 0.04221, 0.04213222, 0.04221, 2.31172883], [1516924680000, 0.04213223, 0.04222232, 0.04213223, 0.04222232, 12.70994549], [1516924740000, 0.04222232, 0.04225264, 0.041935, 0.04225264, 57.0259526], [1516924800000, 0.04226894, 0.04237598, 0.04196004, 0.04211006, 46.54541353], [1516924860000, 0.04237386, 0.04238294, 0.04212003, 0.0423, 13.90710908], [1516924920000, 0.04213003, 0.0423, 0.0420659, 0.0423, 24.45673901], [1516924980000, 0.0423, 0.0424, 0.0423, 0.0424, 5.52096086], [1516925040000, 0.04215007, 0.04249, 0.04215007, 0.04216502, 1.87420152], [1516925100000, 0.04249, 0.0425, 0.04220001, 0.04220001, 4.94775916], [1516925160000, 0.04249996, 0.0425, 0.04220504, 0.0425, 5.71121639], [1516925220000, 0.0425, 0.0425, 0.04223504, 0.04223508, 25.4808757], [1516925280000, 0.0425, 0.042601, 0.0425, 0.042601, 9.56733307], [1516925340000, 0.042601, 0.042701, 0.04231003, 0.042701, 80.1692071], [1516925400000, 0.042701, 0.04280756, 0.04235601, 0.0423984, 88.2844268], [1516925460000, 0.0425202, 0.0429999, 0.04240008, 0.04253516, 24.82950565], [1516925520000, 0.04253516, 0.0429999, 0.04253516, 0.04262753, 19.85704189], [1516925580000, 0.0427823, 0.04284703, 0.0426275, 0.04284703, 1.15690493], [1516925640000, 0.04284703, 0.04299953, 0.0427823, 0.0427823, 2.49691114], [1516925700000, 0.0427823, 0.043, 0.0426275, 0.04266762, 31.68753697], [1516925760000, 0.04267768, 0.04299999, 0.04267768, 0.04299999, 1.68787013], [1516925820000, 0.04267782, 0.04267784, 0.04267782, 0.04267784, 0.16366057], [1516925880000, 0.04299996, 0.04299996, 0.04299996, 0.04299996, 0.23329668], [1516926000000, 0.0429999, 0.04316386, 0.04280002, 0.04290001, 41.62227853], [1516926060000, 0.04290501, 0.04324356, 0.04277034, 0.04277034, 42.57336717], [1516926120000, 0.0431075, 0.0437348, 0.043, 0.04364, 284.42484962], [1516926180000, 0.04364, 0.04364, 0.0435, 0.04350001, 40.65397587], [1516926240000, 0.04350916, 0.04378999, 0.0435, 0.0435, 21.76493302], [1516926300000, 0.0435, 0.04350003, 0.0435, 0.0435, 41.83567382], [1516926360000, 0.0435, 0.04383599, 0.0435, 0.04358097, 96.80536898], [1516926420000, 0.04350001, 0.04358097, 0.0435, 0.04358097, 44.74154661], [1516926480000, 0.04358097, 0.04366865, 0.04358097, 0.04366865, 9.18195344], [1516926540000, 0.04360001, 0.04366865, 0.04360001, 0.04360002, 23.82039827], [1516926600000, 0.04366865, 0.04390025, 0.04366865, 0.0439, 94.65280851], [1516926660000, 0.04390001, 0.0439815, 0.04360002, 0.0439, 53.69131054], [1516926720000, 0.04396787, 0.04399005, 0.04360001, 0.04398853, 48.55683296], [1516926780000, 0.04395765, 0.04398852, 0.04341155, 0.04350024, 53.64871817], [1516926840000, 0.04350024, 0.0439559, 0.04263435, 0.04322178, 152.08785311], [1516926900000, 0.04322178, 0.04369261, 0.04322178, 0.04322254, 36.15336838], [1516926960000, 0.04322254, 0.04369249, 0.04322254, 0.04322291, 7.95308188], [1516927020000, 0.04369209, 0.04369209, 0.04324, 0.04367, 21.31686045], [1516927080000, 0.04367, 0.04367, 0.04324081, 0.04324098, 41.24855177], [1516927140000, 0.04324101, 0.04369285, 0.04324101, 0.0432414, 6.2680438], [1516927200000, 0.04357897, 0.04359998, 0.04324156, 0.04357895, 3.39802468], [1516927260000, 0.04357894, 0.04357894, 0.04324131, 0.04324132, 34.93446674], [1516927320000, 0.04324132, 0.04350021, 0.04324132, 0.04324132, 7.18511134], [1516927380000, 0.04324132, 0.04339257, 0.04324131, 0.04339257, 65.6304545], [1516927440000, 0.04324131, 0.04339253, 0.04324131, 0.04324131, 17.49440473], [1516927500000, 0.04324131, 0.04339252, 0.04324131, 0.04324131, 27.68749515], [1516927560000, 0.04324131, 0.04349999, 0.04324131, 0.04324131, 3.58896222], [1516927620000, 0.04324131, 0.04349986, 0.04324131, 0.04349985, 13.77029632], [1516927680000, 0.04324132, 0.04349999, 0.04324131, 0.04324131, 13.66567925], [1516927740000, 0.04324131, 0.04324131, 0.04324131, 0.04324131, 56.11405617], [1516927800000, 0.04324131, 0.0434289, 0.04324131, 0.04324131, 123.99907916], [1516927860000, 0.04324131, 0.04342889, 0.04324131, 0.04324131, 55.09054258], [1516927920000, 0.04324131, 0.04338581, 0.04324131, 0.04324131, 23.04710279], [1516927980000, 0.04324131, 0.04324131, 0.042942, 0.042942, 5.0982184], [1516928040000, 0.04293402, 0.042939, 0.04293402, 0.04293402, 2.63885836], [1516928100000, 0.04293402, 0.04302366, 0.04292882, 0.04302, 6.07526423], [1516928160000, 0.0428184, 0.04302366, 0.04266713, 0.04302, 0.81240364], [1516928220000, 0.04302, 0.04302, 0.04267901, 0.04267901, 2.30792516], [1516928280000, 0.042685, 0.04268501, 0.042685, 0.04268501, 2.38681256], [1516928340000, 0.04268916, 0.04300974, 0.042685, 0.04299844, 15.6774695], [1516928400000, 0.04268501, 0.04298415, 0.042685, 0.04298415, 1.56807403], [1516928460000, 0.042685, 0.04307355, 0.042685, 0.04302366, 41.42024746], [1516928520000, 0.04302366, 0.0430736, 0.043, 0.04302365, 40.10907652], [1516928580000, 0.042685, 0.042685, 0.04263436, 0.04263436, 2.79411663], [1516928640000, 0.04263436, 0.04299993, 0.04263436, 0.04299993, 23.0926053], [1516928700000, 0.04263714, 0.04296746, 0.04263714, 0.04263715, 0.4889918], [1516928760000, 0.04263715, 0.04263715, 0.04263715, 0.04263715, 0.19253527], [1516928820000, 0.04296837, 0.04296837, 0.04263721, 0.04263721, 0.14226537], [1516928880000, 0.04263723, 0.04296836, 0.04263715, 0.04295949, 2.40931884], [1516929000000, 0.04295946, 0.04295946, 0.04263714, 0.04263714, 4.64808571], [1516929060000, 0.04263714, 0.04263714, 0.04263713, 0.04263713, 25.85877895], [1516929120000, 0.04263713, 0.04295945, 0.04263713, 0.04295945, 0.20351585], [1516929180000, 0.04263714, 0.04263714, 0.04263714, 0.04263714, 0.02315854], [1516929240000, 0.04263714, 0.04263714, 0.04263714, 0.04263714, 0.0301037], [1516929300000, 0.04263714, 0.04263714, 0.04263713, 0.04263713, 0.05], [1516929360000, 0.042912, 0.042912, 0.04263435, 0.04263712, 0.88170807], [1516929420000, 0.04263573, 0.04263713, 0.04249745, 0.04249745, 2.70835361], [1516929480000, 0.04249745, 0.04263712, 0.04238609, 0.04238609, 21.36004126], [1516929540000, 0.04239596, 0.04263713, 0.04235001, 0.04263713, 9.91723001], [1516929600000, 0.04235712, 0.04263713, 0.042355, 0.04263713, 2.41300257], [1516929660000, 0.04235501, 0.04235506, 0.04235501, 0.04235506, 0.19141836], [1516929720000, 0.04235501, 0.04263713, 0.04235501, 0.04263713, 1.39319674], [1516929840000, 0.04235503, 0.04235503, 0.04235001, 0.04235001, 0.9007519], [1516929900000, 0.04235001, 0.04263713, 0.04220808, 0.0426371, 63.90635742], [1516929960000, 0.04221019, 0.04263712, 0.04220892, 0.0423365, 5.24582945], [1516930020000, 0.042587, 0.04259701, 0.04220893, 0.04220893, 1.93246094], [1516930080000, 0.04220893, 0.04254848, 0.04220892, 0.04254848, 0.30613786], [1516930140000, 0.04252847, 0.04252847, 0.04220808, 0.0425284, 0.92775433], [1516930200000, 0.04220976, 0.04252842, 0.04220976, 0.04248838, 1.7410927], [1516930260000, 0.04248838, 0.04248838, 0.04248837, 0.04248837, 0.72026414], [1516930320000, 0.04248837, 0.04248837, 0.04220978, 0.04247988, 0.29801016], [1516930380000, 0.04247988, 0.04252841, 0.04247988, 0.04248839, 3.22752439], [1516930440000, 0.04222095, 0.04222095, 0.04222095, 0.04222095, 0.07559713], [1516930500000, 0.04252842, 0.0426371, 0.04252842, 0.0426371, 0.47027398], [1516930560000, 0.04222167, 0.0426371, 0.04222167, 0.0426371, 0.10006111], [1516930620000, 0.04225181, 0.04263709, 0.0422518, 0.04263709, 1.39268416], [1516930680000, 0.04230714, 0.04263708, 0.04230713, 0.04263707, 8.33117475], [1516930740000, 0.04263707, 0.04263709, 0.04238109, 0.04263709, 4.10893965], [1516930800000, 0.04263707, 0.04263707, 0.042635, 0.042635, 0.49493282], [1516930860000, 0.04235122, 0.042635, 0.04235121, 0.042635, 0.86366882], [1516930920000, 0.04255123, 0.042716, 0.04255123, 0.042716, 8.29282021], [1516930980000, 0.042716, 0.04295945, 0.042635, 0.04263501, 9.55742656], [1516931040000, 0.042635, 0.042635, 0.04239918, 0.042635, 5.28262999], [1516931100000, 0.04240416, 0.042875, 0.04240416, 0.042875, 1.12788986], [1516931160000, 0.04240454, 0.04287499, 0.04240454, 0.04287499, 3.44271273], [1516931220000, 0.0428749, 0.04287491, 0.04287479, 0.04287479, 1.62316589], [1516931280000, 0.04248782, 0.04248782, 0.04248782, 0.04248782, 0.04], [1516931340000, 0.04287225, 0.04287225, 0.04287225, 0.04287225, 0.47954188], [1516931400000, 0.04253126, 0.042872, 0.04240456, 0.042872, 2.62092222], [1516931460000, 0.04240474, 0.04253126, 0.04240474, 0.04253126, 0.27636688], [1516931580000, 0.04253128, 0.04253128, 0.04253128, 0.04253128, 0.2469221], [1516931640000, 0.04253128, 0.04253128, 0.04253128, 0.04253128, 0.72444863], [1516931700000, 0.04255, 0.04275998, 0.04255, 0.04255, 0.30727411], [1516931760000, 0.04255, 0.04255, 0.04253128, 0.04255, 2.56683759], [1516931820000, 0.04253128, 0.04253128, 0.04253128, 0.04253128, 0.83692766], [1516931880000, 0.0425499, 0.0425499, 0.04240474, 0.04240474, 0.50772213], [1516931940000, 0.04240474, 0.0425499, 0.04240474, 0.04240474, 3.20586495], [1516932000000, 0.04240474, 0.0424773, 0.04240474, 0.04240474, 9.20046715], [1516932060000, 0.04240454, 0.04240454, 0.04222177, 0.04222177, 3.0429885], [1516932120000, 0.04222177, 0.04230917, 0.04221002, 0.04230917, 2.56262255], [1516932180000, 0.04230917, 0.04238187, 0.04221052, 0.04238187, 14.34513839], [1516932240000, 0.04238186, 0.04238187, 0.04221005, 0.04221006, 7.41484044], [1516932300000, 0.04221006, 0.04221008, 0.04221006, 0.04221006, 1.29613781], [1516932360000, 0.04221008, 0.04221008, 0.04221006, 0.04221008, 0.83398326], [1516932420000, 0.04221008, 0.04221008, 0.04221008, 0.04221008, 0.80042733], [1516932480000, 0.04221008, 0.04221008, 0.04221006, 0.04221006, 0.63889139], [1516932540000, 0.04221007, 0.04221008, 0.04221006, 0.04221006, 0.19065786], [1516932600000, 0.04221008, 0.04221008, 0.04221006, 0.04221007, 0.3463183], [1516932660000, 0.04221006, 0.04231269, 0.04221006, 0.04221006, 4.63921007], [1516932720000, 0.04221005, 0.04221005, 0.0421, 0.0421, 0.55726086], [1516932780000, 0.04210001, 0.0423126, 0.0421, 0.04210002, 0.07351375], [1516932840000, 0.04231258, 0.04231258, 0.0421, 0.0421, 10.7504453], [1516932900000, 0.04229999, 0.0423, 0.04229999, 0.0423, 0.30584334], [1516932960000, 0.0423, 0.0423, 0.04229999, 0.0423, 2.16480939], [1516933020000, 0.04229999, 0.0423, 0.0421521, 0.0421521, 0.05895174], [1516933080000, 0.0423, 0.0423, 0.0421521, 0.0421521, 0.06715525], [1516933140000, 0.0423, 0.04231259, 0.0423, 0.04231259, 7.98062603], [1516933200000, 0.04213, 0.0423, 0.04213, 0.0423, 3.7851932], [1516933260000, 0.04213001, 0.0423, 0.04213001, 0.0423, 1.0483187], [1516933320000, 0.04228742, 0.04228742, 0.04228742, 0.04228742, 0.3142665], [1516933380000, 0.04228742, 0.0423, 0.04228742, 0.0423, 8.96777387], [1516933440000, 0.0423, 0.0423, 0.04213, 0.0423, 1.24425079], [1516933500000, 0.04229999, 0.0423, 0.04229999, 0.04229999, 1.16070015], [1516933560000, 0.04229999, 0.04229999, 0.04229999, 0.04229999, 0.27078564], [1516933620000, 0.04213001, 0.04229999, 0.04213, 0.04229999, 0.23063077], [1516933680000, 0.0423, 0.0423, 0.0423, 0.0423, 0.02616909], [1516933740000, 0.04213, 0.04213, 0.0421, 0.04213, 5.78190959], [1516933800000, 0.04220059, 0.04220059, 0.04213, 0.04213, 0.058883], [1516933860000, 0.04220058, 0.04220058, 0.04213001, 0.04213001, 0.05718179], [1516933920000, 0.04220058, 0.04220058, 0.04213001, 0.04220058, 0.09386879], [1516933980000, 0.04220058, 0.04220058, 0.04213001, 0.04219, 0.14787347], [1516934040000, 0.04218999, 0.04218999, 0.04213001, 0.04213001, 0.48225922], [1516934100000, 0.04213001, 0.04213001, 0.04210003, 0.04210003, 1.50698754], [1516934160000, 0.04213, 0.04213, 0.04213, 0.04213, 2.15191675], [1516934220000, 0.04213, 0.04219, 0.04212999, 0.04219, 6.17422324], [1516934280000, 0.0423, 0.0423, 0.04218999, 0.04218999, 2.10203884], [1516934340000, 0.04219, 0.04219, 0.04218999, 0.04218999, 0.3546084], [1516934400000, 0.04219, 0.04219, 0.04219, 0.04219, 23.88475221], [1516934460000, 0.04219, 0.04219, 0.04219, 0.04219, 8.3695123], [1516934520000, 0.04219, 0.04219, 0.04218999, 0.04219, 0.36739255], [1516934580000, 0.04219, 0.04219, 0.04204372, 0.04219, 2.32139597], [1516934640000, 0.04219, 0.04219, 0.04219, 0.04219, 0.02613198], [1516934700000, 0.04219, 0.04219, 0.04218999, 0.04218999, 6.39051489], [1516934760000, 0.04219, 0.04219, 0.04219, 0.04219, 0.04669316], [1516934820000, 0.04219, 0.04219, 0.04218999, 0.04219, 0.08341872], [1516934880000, 0.04219, 0.04219, 0.04219, 0.04219, 0.04736586], [1516934940000, 0.04218999, 0.04218999, 0.04204371, 0.04204371, 3.64091612], [1516935000000, 0.04204371, 0.04219, 0.04204371, 0.04219, 0.61117068], [1516935180000, 0.04204373, 0.0421899, 0.04204371, 0.0421899, 0.82654315], [1516935240000, 0.0421899, 0.04219, 0.0421899, 0.0421899, 2.28817044], [1516935300000, 0.0421899, 0.0421899, 0.0421899, 0.0421899, 0.61553142], [1516935360000, 0.0421899, 0.04219, 0.0421899, 0.04219, 0.60674883], [1516935420000, 0.0421899, 0.0421899, 0.0421899, 0.0421899, 0.33558938], [1516935480000, 0.04219, 0.04219, 0.0421899, 0.04219, 59.08731917], [1516935540000, 0.0421899, 0.04219, 0.0421899, 0.04219, 0.492709], [1516935600000, 0.0421899, 0.0423, 0.0421899, 0.0423, 0.37700254], [1516935660000, 0.0423, 0.04244967, 0.0423, 0.04244966, 2.2991893], [1516935720000, 0.04224845, 0.04224845, 0.04224845, 0.04224845, 0.27504905], [1516935780000, 0.04224845, 0.04259998, 0.04224845, 0.04259998, 0.0855492], [1516935840000, 0.0423, 0.04230001, 0.0423, 0.04230001, 0.17982824], [1516935900000, 0.04258956, 0.04258956, 0.04258956, 0.04258956, 0.2347991], [1516935960000, 0.04230001, 0.04258951, 0.0423, 0.04258951, 2.85345137], [1516936020000, 0.0425895, 0.04258952, 0.04232, 0.04232, 10.61965303], [1516936080000, 0.04232, 0.04232001, 0.04232, 0.04232, 0.86513453], [1516936140000, 0.04259571, 0.04259571, 0.04232, 0.04232, 0.7125949], [1516936200000, 0.04259571, 0.04259571, 0.04259571, 0.04259571, 0.46953096], [1516936260000, 0.04259145, 0.04259145, 0.04232, 0.04232, 1.86160753], [1516936380000, 0.04232001, 0.04232001, 0.04223, 0.04223, 1.85442257], [1516936500000, 0.04223011, 0.04259137, 0.0422301, 0.04259137, 2.22869296], [1516936560000, 0.04223011, 0.0425915, 0.0422301, 0.04235, 3.78994837], [1516936620000, 0.04235, 0.04235, 0.04235, 0.04235, 34.50529692], [1516936680000, 0.04235, 0.04259571, 0.04235, 0.04235, 7.06919744], [1516936740000, 0.042351, 0.042351, 0.04230001, 0.04230001, 11.38618034], [1516936800000, 0.04259565, 0.04259565, 0.04259565, 0.04259565, 0.46953096], [1516936860000, 0.04255, 0.04255, 0.04255, 0.04255, 0.03843624], [1516936920000, 0.04254995, 0.04254995, 0.04254995, 0.04254995, 0.15520393], [1516936980000, 0.04254995, 0.04254995, 0.04254995, 0.04254995, 0.02468089], [1516937040000, 0.04254991, 0.04254991, 0.04254991, 0.04254991, 0.63286741], [1516937100000, 0.042549, 0.04254993, 0.04230006, 0.04230006, 0.2542456], [1516937160000, 0.04230006, 0.04254996, 0.04230006, 0.04254996, 0.79344634], [1516937220000, 0.04254996, 0.04254996, 0.04230006, 0.04254996, 0.95673606], [1516937280000, 0.04230006, 0.04230006, 0.04230006, 0.04230006, 0.10124568], [1516937340000, 0.04230008, 0.04230008, 0.04230008, 0.04230008, 0.9727215], [1516937400000, 0.04254989, 0.04254993, 0.042302, 0.042302, 0.56483519], [1516937460000, 0.042302, 0.042302, 0.042302, 0.042302, 0.055078], [1516937580000, 0.04254799, 0.04254799, 0.042302, 0.042302, 9.27597837], [1516937640000, 0.042302, 0.042302, 0.042302, 0.042302, 0.6790254], [1516937700000, 0.04230201, 0.042452, 0.04230008, 0.04230008, 0.63841139], [1516937760000, 0.04230008, 0.04230008, 0.0423, 0.0423, 11.83308592], [1516937820000, 0.04230008, 0.04230008, 0.0423, 0.0423, 10.66563909], [1516937880000, 0.04230001, 0.04230008, 0.0423, 0.0423, 1.32538663], [1516937940000, 0.04230008, 0.04234238, 0.04230008, 0.04230008, 1.42626854], [1516938000000, 0.04230008, 0.04230008, 0.0423, 0.0423, 4.94487001], [1516938060000, 0.0423, 0.04230001, 0.0423, 0.0423, 7.59505956], [1516938120000, 0.042452, 0.042452, 0.042452, 0.042452, 0.31020825], [1516938180000, 0.0424, 0.0424, 0.0424, 0.0424, 0.100125], [1516938240000, 0.0424, 0.042452, 0.0424, 0.042452, 0.72219516], [1516938300000, 0.042452, 0.042452, 0.042452, 0.042452, 0.08306255], [1516938360000, 0.04245199, 0.04245199, 0.04245199, 0.04245199, 0.1556843], [1516938480000, 0.04245158, 0.04245158, 0.04245158, 0.04245158, 0.02], [1516938600000, 0.04230003, 0.04245143, 0.04230003, 0.04245143, 0.34083799], [1516938660000, 0.04245126, 0.04245159, 0.04245126, 0.04245159, 3.29034312], [1516938720000, 0.04245159, 0.0424516, 0.04245159, 0.04245159, 2.66260909], [1516938780000, 0.04245159, 0.04245159, 0.04245159, 0.04245159, 1.20805305], [1516938900000, 0.0424516, 0.042452, 0.0424516, 0.042452, 0.23556238], [1516939020000, 0.0423516, 0.0423516, 0.04230005, 0.04230005, 0.22052902], [1516939080000, 0.04230005, 0.04230005, 0.04230005, 0.04230005, 4.89067206], [1516939140000, 0.04230005, 0.04230005, 0.04230005, 0.04230005, 0.61], [1516939200000, 0.04230005, 0.04230005, 0.04230005, 0.04230005, 0.93984376], [1516939260000, 0.04230005, 0.04230005, 0.0423, 0.0423, 0.3628544], [1516939320000, 0.0423, 0.04230005, 0.0423, 0.04230005, 3.53087019], [1516939380000, 0.04230001, 0.04230001, 0.0423, 0.0423, 2.98807707], [1516939440000, 0.04230005, 0.04230005, 0.0423, 0.0423, 0.59147909], [1516939500000, 0.0423, 0.04230005, 0.0423, 0.0423, 0.95037722], [1516939560000, 0.04230005, 0.04230005, 0.04230005, 0.04230005, 4.07969495], [1516939620000, 0.04230006, 0.042452, 0.04230005, 0.042452, 2.07918511], [1516939680000, 0.04230007, 0.04230007, 0.04230007, 0.04230007, 0.1758], [1516939740000, 0.04230007, 0.04230007, 0.04230005, 0.04230005, 4.65429575], [1516939800000, 0.04230005, 0.04230005, 0.0423, 0.0423, 26.15208509], [1516939860000, 0.04223013, 0.04230007, 0.0421899, 0.04230007, 10.17], [1516939920000, 0.0421899, 0.0421899, 0.0421899, 0.0421899, 0.05047342], [1516939980000, 0.04230007, 0.042452, 0.04230007, 0.042452, 1.08575669], [1516940040000, 0.04218993, 0.04218993, 0.04218993, 0.04218993, 0.17138761], [1516940100000, 0.042452, 0.042452, 0.04218993, 0.04218993, 6.92585265], [1516940160000, 0.04218993, 0.042452, 0.04218993, 0.042452, 6.48808942], [1516940220000, 0.042452, 0.042452, 0.042452, 0.042452, 0.22600214], [1516940280000, 0.04224498, 0.042452, 0.04218993, 0.04218993, 10.64714129], [1516940340000, 0.04218994, 0.04218996, 0.04218994, 0.04218996, 0.05037246], [1516940400000, 0.04238996, 0.04245198, 0.04228997, 0.04228997, 0.09741216], [1516940460000, 0.04228997, 0.04228997, 0.04218996, 0.04218996, 0.46019849], [1516940520000, 0.04219001, 0.04245199, 0.04219, 0.04245199, 1.19174634], [1516940640000, 0.04245197, 0.04245197, 0.04219006, 0.04219006, 0.31], [1516940700000, 0.04245197, 0.04245199, 0.04245197, 0.04245199, 0.70668048], [1516940760000, 0.04245197, 0.04245197, 0.04245197, 0.04245197, 0.01293118], [1516940820000, 0.04245196, 0.04245196, 0.04245196, 0.04245196, 0.0644013], [1516940880000, 0.04219003, 0.04219003, 0.04209003, 0.04209003, 13.81730401], [1516941000000, 0.04245173, 0.042452, 0.04245171, 0.042452, 3.71668681], [1516941060000, 0.04245172, 0.042452, 0.04245172, 0.04245199, 0.50875257], [1516941120000, 0.04227, 0.04227, 0.04227, 0.04227, 0.02013382], [1516941180000, 0.04227006, 0.042452, 0.04227006, 0.04227006, 0.83847876], [1516941240000, 0.04227011, 0.042452, 0.04227011, 0.042452, 0.12749047], [1516941300000, 0.04236102, 0.042452, 0.04236102, 0.042452, 1.01302073], [1516941360000, 0.04229, 0.04229, 0.04229, 0.04229, 0.28819955], [1516941420000, 0.0422901, 0.042452, 0.04229, 0.04229, 3.97945091], [1516941480000, 0.04229, 0.04229, 0.04227001, 0.04227001, 5.02040718], [1516941600000, 0.042452, 0.042452, 0.042452, 0.042452, 0.7545651], [1516941660000, 0.04245193, 0.042452, 0.04245193, 0.04245193, 9.46529923], [1516941720000, 0.04227, 0.04227, 0.04227, 0.04227, 5.46258965], [1516941780000, 0.04209085, 0.04209085, 0.04209085, 0.04209085, 18.17606869], [1516941840000, 0.0420922, 0.0420922, 0.0420922, 0.0420922, 0.24], [1516941900000, 0.04209223, 0.0424519, 0.04209223, 0.04209229, 0.44593659], [1516942020000, 0.04209401, 0.04245189, 0.04209401, 0.04245189, 0.02653286], [1516942080000, 0.04227296, 0.04227296, 0.04209423, 0.04209423, 0.13426055], [1516942140000, 0.04227296, 0.04227296, 0.04227296, 0.04227296, 0.5119804], [1516942200000, 0.04227296, 0.0424519, 0.04227296, 0.0424519, 0.47302013], [1516942260000, 0.04245189, 0.04245189, 0.04245189, 0.04245189, 0.02355607], [1516942380000, 0.04209503, 0.04209503, 0.04209503, 0.04209503, 0.41238381], [1516942500000, 0.04245189, 0.0424519, 0.04209603, 0.04209603, 0.70294848], [1516942560000, 0.04245185, 0.04245185, 0.04245185, 0.04245185, 0.04], [1516942620000, 0.04210007, 0.04210007, 0.04210006, 0.04210006, 6.83], [1516942680000, 0.04245184, 0.04245184, 0.04245184, 0.04245184, 0.44269434], [1516942740000, 0.04245185, 0.042452, 0.04211008, 0.042452, 13.66001425], [1516942800000, 0.04245199, 0.042452, 0.04245, 0.042452, 2.49998316], [1516942920000, 0.042452, 0.042452, 0.042452, 0.042452, 1.08172736], [1516943100000, 0.04222601, 0.042452, 0.04222601, 0.042452, 0.28306082], [1516943160000, 0.042452, 0.042452, 0.042398, 0.042398, 0.54738717], [1516943220000, 0.0423975, 0.0423975, 0.0423975, 0.0423975, 0.80696147], [1516943340000, 0.04239, 0.0423975, 0.04239, 0.0423975, 2.75761126], [1516943400000, 0.04238997, 0.04238997, 0.04238996, 0.04238996, 0.66087119], [1516943460000, 0.04238996, 0.04238996, 0.04223401, 0.04223401, 0.25953441], [1516943520000, 0.04238996, 0.04238996, 0.04223401, 0.04223401, 1.08349771], [1516943580000, 0.04223402, 0.0423975, 0.04223402, 0.0423975, 3.61288194], [1516943640000, 0.0423975, 0.0423975, 0.0423975, 0.0423975, 8.21503071], [1516943700000, 0.0423975, 0.0423975, 0.04223491, 0.04223491, 2.1686342], [1516943760000, 0.04223491, 0.0423975, 0.04223491, 0.0423975, 0.05754064], [1516943820000, 0.04223501, 0.0423975, 0.04223491, 0.0423975, 6.04208086], [1516943880000, 0.0423975, 0.0423975, 0.04223491, 0.0423975, 4.18720224], [1516944000000, 0.0423975, 0.0423975, 0.0423975, 0.0423975, 0.94345184], [1516944060000, 0.0423975, 0.0423975, 0.0423975, 0.0423975, 0.05220796], [1516944120000, 0.0423975, 0.0423975, 0.0423975, 0.0423975, 0.44596255], [1516944240000, 0.04239752, 0.04239752, 0.04239752, 0.04239752, 0.30037642], [1516944300000, 0.04239752, 0.04245, 0.04239752, 0.04245, 0.35429171], [1516944360000, 0.04245, 0.04245, 0.04225601, 0.04225601, 2.49549003], [1516944420000, 0.04244999, 0.04244999, 0.04223505, 0.04223505, 3.57748542], [1516944480000, 0.04223505, 0.04223505, 0.04223505, 0.04223505, 0.2251], [1516944540000, 0.04223505, 0.04223505, 0.04223505, 0.04223505, 8.51353504], [1516944600000, 0.04223505, 0.04223505, 0.04223505, 0.04223505, 23.49975873], [1516944660000, 0.042452, 0.042452, 0.042452, 0.042452, 0.37355766], [1516944720000, 0.04223505, 0.04223505, 0.04223505, 0.04223505, 11.29217768], [1516944780000, 0.042452, 0.042452, 0.04223505, 0.04223505, 1.94466529], [1516944900000, 0.042452, 0.042452, 0.04219537, 0.04223507, 77.80742877], [1516944960000, 0.042452, 0.042452, 0.04223507, 0.04223507, 0.28359678], [1516945020000, 0.04223507, 0.04223507, 0.04223507, 0.04223507, 0.06714354], [1516945080000, 0.04223507, 0.04223507, 0.04223507, 0.04223507, 5.15674083], [1516945200000, 0.04223507, 0.04223507, 0.04213803, 0.04213803, 20.49715713], [1516945260000, 0.04234872, 0.04234872, 0.04234872, 0.04234872, 0.94926127], [1516945320000, 0.04234872, 0.04245199, 0.04213304, 0.04213304, 1.18636831], [1516945380000, 0.04213311, 0.04213311, 0.04213311, 0.04213311, 67.32679198], [1516945440000, 0.04213311, 0.04213311, 0.04212769, 0.04213311, 11.51815175], [1516945500000, 0.04213311, 0.04213311, 0.04213311, 0.04213311, 1.47982554], [1516945560000, 0.04213311, 0.04213311, 0.04205721, 0.0421331, 4.35798247], [1516945620000, 0.04213311, 0.04213311, 0.04204371, 0.04213308, 58.92744224], [1516945680000, 0.04213307, 0.04213311, 0.04213307, 0.0421331, 3.2366397], [1516945740000, 0.04204371, 0.04213311, 0.04196301, 0.04213311, 15.12620097], [1516945800000, 0.04196301, 0.04213311, 0.04196301, 0.04213311, 15.09156006], [1516945860000, 0.0421331, 0.0421331, 0.0421331, 0.0421331, 5.11273554], [1516945920000, 0.04213311, 0.04213311, 0.04196301, 0.04196301, 1.30754821], [1516945980000, 0.04196306, 0.04213308, 0.04196301, 0.042, 37.33334988], [1516946040000, 0.04196301, 0.04196301, 0.04196301, 0.04196301, 0.313744], [1516946100000, 0.0421331, 0.04243298, 0.0421331, 0.04243298, 40.54605403], [1516946160000, 0.04197328, 0.04200017, 0.04197328, 0.04200017, 15.39193849], [1516946220000, 0.04200017, 0.04243289, 0.04200003, 0.04243284, 7.14230373], [1516946280000, 0.04202103, 0.04202603, 0.04202103, 0.04202603, 0.62676], [1516946340000, 0.04202604, 0.04243274, 0.04202604, 0.0420261, 0.61969694], [1516946400000, 0.0420261, 0.04236264, 0.0420261, 0.04236264, 0.8066095], [1516946460000, 0.0423626, 0.04236261, 0.0422, 0.0422, 0.07895216], [1516946700000, 0.04202615, 0.04202615, 0.04202615, 0.04202615, 0.8], [1516946760000, 0.04202616, 0.04202616, 0.04202616, 0.04202616, 0.04714559], [1516946820000, 0.04203102, 0.04203103, 0.04203102, 0.04203102, 0.54710497], [1516947060000, 0.04203602, 0.04203602, 0.04203103, 0.04203601, 2.098192], [1516947120000, 0.04203103, 0.04234626, 0.04203103, 0.04234626, 6.03621649], [1516947180000, 0.04203103, 0.04203103, 0.04203103, 0.04203103, 10.46209329], [1516947240000, 0.04203103, 0.04203103, 0.04203103, 0.04203103, 0.081], [1516947300000, 0.04207101, 0.0420999, 0.04203102, 0.0420999, 0.71594924], [1516947360000, 0.0420999, 0.04231998, 0.0420999, 0.04231998, 0.402203], [1516947420000, 0.0420999, 0.0420999, 0.0420999, 0.0420999, 0.58474634], [1516947480000, 0.0420999, 0.04231999, 0.0420999, 0.04231999, 0.81965515], [1516947540000, 0.04203104, 0.04203104, 0.04203102, 0.04203102, 0.83770873], [1516947600000, 0.04203102, 0.04231987, 0.04203102, 0.04231987, 0.53460631], [1516947660000, 0.04203104, 0.04203104, 0.04203103, 0.04203103, 0.22186506], [1516947720000, 0.04231974, 0.04231974, 0.04203102, 0.04203102, 9.04148475], [1516947780000, 0.04203103, 0.04203103, 0.04200003, 0.04203103, 1.51708575], [1516947840000, 0.04200004, 0.04200006, 0.04200004, 0.04200005, 0.22694382], [1516947900000, 0.04203103, 0.04226347, 0.04200003, 0.04200003, 2.96591353], [1516947960000, 0.04200003, 0.04200003, 0.04200003, 0.04200003, 0.52495607], [1516948020000, 0.04200003, 0.04200003, 0.042, 0.042, 1.54432374], [1516948080000, 0.042, 0.042, 0.042, 0.042, 2.09415456], [1516948140000, 0.042, 0.042, 0.042, 0.042, 0.88290257], [1516948200000, 0.04226337, 0.04226339, 0.04226337, 0.04226339, 0.70983402], [1516948260000, 0.042, 0.042, 0.042, 0.042, 0.522372], [1516948320000, 0.04226339, 0.04226339, 0.04226339, 0.04226339, 0.34179562], [1516948440000, 0.042, 0.042, 0.042, 0.042, 2.79746376], [1516948500000, 0.04226338, 0.04226338, 0.041962, 0.041962, 7.02678834], [1516948560000, 0.041962, 0.041963, 0.041962, 0.041963, 5.47898801], [1516948620000, 0.041963, 0.041963, 0.041963, 0.041963, 0.05254764], [1516948680000, 0.04196299, 0.04196299, 0.04196202, 0.04196202, 0.5233337], [1516948740000, 0.04196202, 0.04196299, 0.04196202, 0.04196249, 0.53160591], [1516948800000, 0.04196249, 0.04196299, 0.04196249, 0.04196299, 1.48992593], [1516948860000, 0.04196299, 0.04196299, 0.04196297, 0.04196297, 0.05254718], [1516948920000, 0.0419625, 0.04196297, 0.0419625, 0.04196297, 0.44622971], [1516948980000, 0.04196297, 0.04196297, 0.04196297, 0.04196297, 0.02627384], [1516949040000, 0.04196201, 0.04196201, 0.04196201, 0.04196201, 0.01515065], [1516949100000, 0.04196186, 0.04196296, 0.04196186, 0.04196296, 0.52648483], [1516949160000, 0.04196186, 0.04196186, 0.0419247, 0.04196185, 0.07575233], [1516949220000, 0.0419247, 0.0419247, 0.0419247, 0.0419247, 0.07492845], [1516949280000, 0.0419, 0.0419, 0.0419, 0.0419, 0.09182509], [1516949340000, 0.04191235, 0.04191235, 0.04191235, 0.04191235, 0.04811668], [1516949400000, 0.0419, 0.0419, 0.04189999, 0.04189999, 4.34313955], [1516949460000, 0.041895, 0.0419, 0.041895, 0.0419, 0.09603778], [1516949520000, 0.041895, 0.041895, 0.0416117, 0.0416117, 21.71077244], [1516949580000, 0.04179999, 0.0418, 0.0416117, 0.0418, 3.65105687], [1516949640000, 0.04179999, 0.0419247, 0.04179998, 0.0419247, 0.51576691], [1516949700000, 0.04163279, 0.04192448, 0.04163279, 0.04192448, 0.29099578], [1516949760000, 0.0416329, 0.04192, 0.0416329, 0.0416329, 0.78997262], [1516949820000, 0.0416329, 0.0419199, 0.0416329, 0.0419199, 0.53948078], [1516949880000, 0.0416329, 0.04163291, 0.0416329, 0.04163291, 0.06158966], [1516949940000, 0.04163293, 0.04163293, 0.04163293, 0.04163293, 1.5], [1516950000000, 0.04183516, 0.0419189, 0.04163293, 0.0419189, 4.72859032], [1516950060000, 0.0419189, 0.0419189, 0.0419189, 0.0419189, 0.09936108], [1516950120000, 0.0419189, 0.0419189, 0.04185512, 0.04185512, 0.2879109], [1516950180000, 0.04185512, 0.04191, 0.04180634, 0.04191, 0.66225244], [1516950240000, 0.0419, 0.04191, 0.04189, 0.04189, 4.80909856], [1516950300000, 0.04180635, 0.04188994, 0.04180634, 0.04188994, 0.08455975], [1516950360000, 0.04180634, 0.04188994, 0.04180634, 0.04188994, 0.12327562], [1516950420000, 0.04180634, 0.04180635, 0.04180634, 0.04180634, 0.04695009], [1516950480000, 0.041811, 0.04189001, 0.04180634, 0.04180634, 22.86640494], [1516950540000, 0.04180634, 0.04189, 0.04180634, 0.04189, 5.00865664], [1516950600000, 0.04188999, 0.04189, 0.04188, 0.04189, 0.88853097], [1516950780000, 0.04188997, 0.04188997, 0.04163501, 0.04163501, 1.79553654], [1516950840000, 0.04188998, 0.04188998, 0.04163501, 0.04163502, 0.55686798], [1516950900000, 0.04163501, 0.04163502, 0.04163501, 0.04163501, 0.83452022], [1516950960000, 0.041635, 0.041635, 0.04163289, 0.04163289, 0.20504706], [1516951020000, 0.04163289, 0.04163502, 0.04163289, 0.04163501, 0.54155262], [1516951080000, 0.04163501, 0.04163501, 0.04163501, 0.04163501, 0.14633117], [1516951140000, 0.041635, 0.04163501, 0.04163289, 0.04163289, 3.36089724], [1516951200000, 0.04163501, 0.04163501, 0.04163501, 0.04163501, 0.0949045], [1516951260000, 0.041635, 0.041635, 0.04163289, 0.04163289, 1.06481322], [1516951320000, 0.041635, 0.041635, 0.041635, 0.041635, 0.10332148], [1516951380000, 0.041635, 0.04163501, 0.041635, 0.04163501, 2.31578672], [1516951440000, 0.04163501, 0.04163501, 0.04161169, 0.04161169, 3.67582754], [1516951500000, 0.0415, 0.04163501, 0.0415, 0.0415, 0.24761484], [1516951560000, 0.0415, 0.0415, 0.04147107, 0.04147107, 1.09679622], [1516951620000, 0.04147107, 0.0415, 0.04147107, 0.0415, 0.95077268], [1516951680000, 0.04163501, 0.04163502, 0.04163501, 0.04163502, 0.51898846], [1516951740000, 0.04163524, 0.04179736, 0.04163502, 0.04179736, 0.26179609], [1516951800000, 0.04179729, 0.04187995, 0.04179729, 0.04187995, 0.53878715], [1516951860000, 0.04163502, 0.04187799, 0.04163502, 0.04163502, 0.08021065], [1516951980000, 0.04185291, 0.04185291, 0.04185291, 0.04185291, 0.01575605], [1516952040000, 0.0413901, 0.0413901, 0.0413901, 0.0413901, 0.3], [1516952100000, 0.04185483, 0.04185483, 0.04162144, 0.04162144, 0.29439014], [1516952160000, 0.04162144, 0.04162144, 0.04140259, 0.04162144, 6.1319962], [1516952220000, 0.0416214, 0.04162144, 0.04137195, 0.04137206, 6.98876627], [1516952280000, 0.04137404, 0.04137507, 0.04137404, 0.04137507, 0.72680622], [1516952340000, 0.04137519, 0.04162144, 0.04137519, 0.04149919, 5.78356936], [1516952400000, 0.04162144, 0.04162144, 0.04149919, 0.04149919, 0.41168117], [1516952460000, 0.04162144, 0.04162144, 0.04149919, 0.04149919, 3.37128512], [1516952520000, 0.04162143, 0.04162144, 0.04149919, 0.04162144, 1.52968213], [1516952580000, 0.04149919, 0.04162144, 0.04149919, 0.04162144, 0.06981578], [1516952640000, 0.04162142, 0.04162144, 0.04162142, 0.04162144, 1.42896667], [1516952700000, 0.04149919, 0.04162144, 0.04149919, 0.04162144, 0.90198276], [1516952820000, 0.04162144, 0.04162144, 0.04149919, 0.04149919, 0.12267666], [1516952880000, 0.04149919, 0.04162143, 0.04149919, 0.04149919, 0.07578253], [1516952940000, 0.04149919, 0.04150001, 0.04149919, 0.04150001, 0.09327791], [1516953000000, 0.04162143, 0.04162144, 0.04162143, 0.04162143, 14.40026596], [1516953060000, 0.04162143, 0.04162144, 0.04162143, 0.04162143, 4.00101456], [1516953120000, 0.04162143, 0.04162143, 0.04137195, 0.04162142, 14.23187243], [1516953300000, 0.04137195, 0.04159999, 0.04137195, 0.04159999, 1.17263904], [1516953360000, 0.04137198, 0.04137198, 0.04137193, 0.04137196, 8.76464567], [1516953420000, 0.04137196, 0.04137197, 0.04136999, 0.04137, 0.7662235], [1516953480000, 0.04137, 0.04137, 0.04137, 0.04137, 0.03223042], [1516953540000, 0.04137001, 0.04137197, 0.04128, 0.04128, 5.13654655], [1516953600000, 0.04137195, 0.04153538, 0.04137194, 0.04153538, 1.91438588], [1516953660000, 0.04153538, 0.04153538, 0.04128, 0.04137197, 1.1176799], [1516953720000, 0.04137197, 0.04137197, 0.04128, 0.04137197, 0.78373486], [1516953780000, 0.04129839, 0.04137197, 0.04127301, 0.04137197, 9.2427958], [1516953840000, 0.04137404, 0.04157327, 0.04118, 0.04157327, 9.62438274], [1516953900000, 0.04159999, 0.04162141, 0.0411863, 0.0411863, 1.53827311], [1516953960000, 0.04156283, 0.04156283, 0.04156283, 0.04156283, 0.18649826], [1516954080000, 0.04156287, 0.04156287, 0.04123114, 0.04123114, 0.83363301], [1516954140000, 0.04118911, 0.0414229, 0.04115961, 0.04115961, 7.00277797], [1516954200000, 0.041183, 0.04156287, 0.04112244, 0.04145321, 3.74375479], [1516954260000, 0.04138145, 0.04145321, 0.04123751, 0.0414532, 2.50701537], [1516954320000, 0.0414532, 0.0414532, 0.041034, 0.04112903, 34.49650531], [1516954380000, 0.04116302, 0.04145206, 0.041039, 0.04138761, 2.53489206], [1516954440000, 0.04138753, 0.04138759, 0.041039, 0.04138759, 2.47221035], [1516954500000, 0.04138573, 0.04145095, 0.041039, 0.04145095, 1.75004513], [1516954560000, 0.04103902, 0.04138895, 0.041039, 0.04138887, 2.31307299], [1516954620000, 0.04145091, 0.04145092, 0.04100001, 0.04100001, 6.99048016], [1516954680000, 0.04141, 0.04141, 0.04140999, 0.04140999, 1.68185959], [1516954800000, 0.04139, 0.04139, 0.04138999, 0.04138999, 0.48317931], [1516954860000, 0.04137997, 0.04137997, 0.041, 0.041, 9.27747347], [1516954920000, 0.041, 0.041, 0.041, 0.041, 1.65747106], [1516954980000, 0.041, 0.04115003, 0.0409001, 0.04115003, 9.07548108], [1516955040000, 0.04090062, 0.04115003, 0.04090062, 0.04115003, 0.1794159], [1516955100000, 0.04114003, 0.04114003, 0.0409101, 0.0409101, 3.18008462], [1516955160000, 0.04103715, 0.04103715, 0.04091, 0.04091, 2.11356666], [1516955220000, 0.04091, 0.04113421, 0.04091, 0.04113421, 1.30154907], [1516955280000, 0.04091, 0.04103715, 0.0409, 0.0409, 2.57202075], [1516955340000, 0.04090008, 0.04091, 0.0409, 0.0409, 23.05523046], [1516955400000, 0.04091, 0.04114, 0.04091, 0.04113001, 1.62133098], [1516955460000, 0.04113001, 0.04113001, 0.04091, 0.04113001, 12.28168449], [1516955520000, 0.04112, 0.04114003, 0.04090001, 0.04090001, 2.44258116], [1516955580000, 0.04090001, 0.04113, 0.04090001, 0.04111999, 7.08136204], [1516955640000, 0.04112204, 0.04115002, 0.0409, 0.0409, 34.47896136], [1516955700000, 0.0409, 0.0409, 0.0408541, 0.0409, 29.05353984], [1516955760000, 0.0409, 0.0409, 0.04082992, 0.0409, 4.07689293], [1516955820000, 0.0408541, 0.0409, 0.0408, 0.0409, 5.73789651], [1516955880000, 0.0408, 0.0408, 0.0408, 0.0408, 5.13030281], [1516955940000, 0.0408, 0.0408, 0.04077777, 0.0408, 2.42833041], [1516956000000, 0.0408, 0.0409, 0.04077777, 0.0408, 27.3742613], [1516956060000, 0.0409, 0.0409, 0.04077777, 0.0409, 16.23635984], [1516956120000, 0.0409, 0.04111555, 0.04075001, 0.04111555, 5.40655431], [1516956180000, 0.04076, 0.04076, 0.04075008, 0.04076, 6.5075014], [1516956240000, 0.04076, 0.04111544, 0.04076, 0.04076, 0.74758135], [1516956300000, 0.04111462, 0.04111463, 0.04076001, 0.04111462, 5.43442958], [1516956360000, 0.04088227, 0.04093776, 0.04088227, 0.04088227, 1.18135426], [1516956420000, 0.04077103, 0.04078117, 0.04077103, 0.04078117, 0.83665992], [1516956480000, 0.04093776, 0.04109137, 0.04093776, 0.04109137, 0.88859215], [1516956600000, 0.04109137, 0.0411146, 0.04109136, 0.0411146, 0.65802013], [1516956660000, 0.04109136, 0.04109136, 0.04109128, 0.04109128, 2.87486025], [1516956720000, 0.04109128, 0.04114006, 0.04076, 0.04114006, 4.08299824], [1516956780000, 0.04077012, 0.04114003, 0.0407701, 0.04077011, 1.76928302], [1516956840000, 0.04109128, 0.04109128, 0.041091, 0.04109128, 0.28754768], [1516956900000, 0.0409, 0.04114005, 0.0409, 0.0409, 3.49516018], [1516956960000, 0.0409, 0.0409, 0.04082322, 0.04082322, 1.04035192], [1516957020000, 0.04082322, 0.04090546, 0.04082322, 0.04090546, 10.76700683], [1516957080000, 0.040905, 0.04090546, 0.040905, 0.04090546, 1.1030747], [1516957140000, 0.04090546, 0.04090546, 0.04090546, 0.04090546, 1.13715768], [1516957200000, 0.04090547, 0.04090547, 0.04090547, 0.04090547, 0.10000659], [1516957260000, 0.04110875, 0.04115003, 0.04110875, 0.04115003, 0.59490578], [1516957320000, 0.0409055, 0.0409055, 0.04086371, 0.04086371, 5.84197306], [1516957440000, 0.04110875, 0.041146, 0.04110875, 0.04110875, 0.17447003], [1516957500000, 0.04110875, 0.04115003, 0.04110875, 0.04110876, 1.75689008], [1516957560000, 0.04110876, 0.04110876, 0.04110875, 0.04110876, 1.3664855], [1516957620000, 0.04110875, 0.04110875, 0.04110875, 0.04110875, 0.05363822], [1516957680000, 0.04110875, 0.04110875, 0.04110875, 0.04110875, 7.19826091], [1516957740000, 0.041, 0.041, 0.041, 0.041, 0.11301942], [1516957800000, 0.041, 0.04110875, 0.040781, 0.040781, 0.73170729], [1516957860000, 0.04077592, 0.04077592, 0.04077592, 0.04077592, 0.1], [1516957920000, 0.04077592, 0.04077592, 0.04077592, 0.04077592, 0.79837622], [1516957980000, 0.04077592, 0.040786, 0.0407759, 0.040786, 2.43611835], [1516958040000, 0.040786, 0.04099999, 0.04077593, 0.04077593, 11.67998926], [1516958100000, 0.04099998, 0.04099998, 0.04077592, 0.04077592, 2.12441079], [1516958160000, 0.04077593, 0.04077593, 0.04077593, 0.04077593, 0.1153871], [1516958220000, 0.04077593, 0.04077593, 0.04077593, 0.04077593, 0.04786441], [1516958280000, 0.04099996, 0.04099996, 0.04099996, 0.04099996, 0.02465255], [1516958340000, 0.04099996, 0.04099996, 0.04099996, 0.04099996, 0.02439026], [1516958400000, 0.04077594, 0.04099997, 0.04076001, 0.04076001, 37.9603683], [1516958460000, 0.04076002, 0.04099997, 0.04076002, 0.04099997, 0.92842235], [1516958580000, 0.04076002, 0.04076002, 0.04076001, 0.04076001, 0.20497673], [1516958640000, 0.04099997, 0.04099997, 0.04076, 0.04076, 2.34030049], [1516958700000, 0.04076, 0.04099056, 0.04076, 0.04077, 2.9356903], [1516958820000, 0.04099997, 0.04099997, 0.04099997, 0.04099997, 0.06512199], [1516958880000, 0.04077, 0.04077, 0.04077, 0.04077, 0.0755], [1516959000000, 0.04077, 0.04099995, 0.04077, 0.04099995, 0.50830463], [1516959060000, 0.04077, 0.04077, 0.04077, 0.04077, 0.24390303], [1516959120000, 0.04078, 0.0407803, 0.04078, 0.0407803, 0.17511407], [1516959180000, 0.04078, 0.04078, 0.04078, 0.04078, 21.74726849], [1516959240000, 0.04078, 0.04078, 0.04077004, 0.04077004, 7.99968332], [1516959300000, 0.04077004, 0.04078, 0.04077, 0.04078, 5.16591065], [1516959360000, 0.04077999, 0.04082078, 0.04076, 0.04082078, 0.61696476], [1516959420000, 0.0407999, 0.04099995, 0.04076, 0.04099995, 2.26274807], [1516959480000, 0.04099995, 0.04099995, 0.04082077, 0.04082077, 3.06606816], [1516959540000, 0.04082076, 0.04082076, 0.0408207, 0.0408207, 0.28800553], [1516959600000, 0.04082075, 0.04082076, 0.04076, 0.04082076, 6.47390031], [1516959660000, 0.0408207, 0.0409999, 0.04075, 0.0409999, 3.53960713], [1516959720000, 0.0409999, 0.04099995, 0.0409999, 0.04099995, 2.48001022], [1516959780000, 0.04099995, 0.04099995, 0.04099995, 0.04099995, 41.11938064], [1516959840000, 0.04099995, 0.04099996, 0.04099995, 0.04099996, 0.85396132], [1516959900000, 0.04099995, 0.04099995, 0.04082076, 0.04082076, 0.91734428], [1516959960000, 0.04082076, 0.04099995, 0.04075, 0.04099995, 0.27476685], [1516960020000, 0.04075, 0.04075001, 0.04075, 0.04075, 1.10870477], [1516960080000, 0.04099994, 0.04099994, 0.04075003, 0.04099994, 0.21248882], [1516960200000, 0.04075004, 0.04099994, 0.04075004, 0.04099994, 1.24154513], [1516960260000, 0.04099994, 0.041, 0.04099994, 0.041, 10.79632099], [1516960320000, 0.041, 0.041, 0.04099999, 0.04099999, 2.43695689], [1516960380000, 0.04099999, 0.04102309, 0.04099999, 0.04102309, 0.59692071], [1516960440000, 0.0409999, 0.04137192, 0.0409999, 0.04137192, 76.25790434], [1516960500000, 0.04136188, 0.04188995, 0.04084026, 0.04177874, 163.31050928], [1516960560000, 0.04112345, 0.041617, 0.0410001, 0.0411004, 9.83302217], [1516960620000, 0.04110041, 0.04114483, 0.04094013, 0.041, 16.74765854], [1516960680000, 0.04140983, 0.04142286, 0.041, 0.041, 3.54148484], [1516960740000, 0.04105, 0.04105, 0.04075912, 0.0408, 20.25323293], [1516960800000, 0.04120799, 0.04138578, 0.04120716, 0.04129769, 1.99810168], [1516960860000, 0.04102051, 0.04113584, 0.0410205, 0.04113584, 1.3772724], [1516960920000, 0.04133621, 0.04155498, 0.04133621, 0.04153499, 21.67298878], [1516960980000, 0.04153495, 0.04153496, 0.04153495, 0.04153496, 5.27789954], [1516961040000, 0.04151, 0.04161097, 0.04150982, 0.04161097, 1.13764378], [1516961100000, 0.04150963, 0.04160698, 0.04150963, 0.04160458, 0.48181624], [1516961160000, 0.04139894, 0.04159383, 0.04139893, 0.04139894, 1.11348998], [1516961220000, 0.04139894, 0.041589, 0.04102001, 0.04139886, 10.61558934], [1516961280000, 0.04115015, 0.04115015, 0.04115014, 0.04115014, 0.75433026], [1516961340000, 0.04139894, 0.04139894, 0.04118024, 0.04139894, 25.217003], [1516961400000, 0.04139894, 0.04177291, 0.04139894, 0.04151589, 11.69615283], [1516961460000, 0.04124601, 0.04124601, 0.04124601, 0.04124601, 0.11024924], [1516961520000, 0.04151579, 0.04179847, 0.041021, 0.04160561, 188.11152828], [1516961640000, 0.04144382, 0.04180879, 0.04144382, 0.04180879, 1.232404], [1516961700000, 0.04137618, 0.04160561, 0.04137618, 0.04160561, 5.61222144], [1516961760000, 0.04160561, 0.04160561, 0.04158183, 0.0416, 0.85299731], [1516961820000, 0.04158183, 0.04160561, 0.04158183, 0.04160561, 0.41445728], [1516961880000, 0.04160561, 0.04180824, 0.04160561, 0.04180824, 0.1300374], [1516961940000, 0.04160562, 0.041786, 0.04160562, 0.041786, 0.03075883], [1516962000000, 0.04178592, 0.04179992, 0.04160562, 0.04178, 2.94830499], [1516962060000, 0.04160563, 0.04160563, 0.04160563, 0.04160563, 3.87666709], [1516962120000, 0.04178, 0.04178, 0.04178, 0.04178, 1.35017503], [1516962180000, 0.04178, 0.04178, 0.04164798, 0.04164798, 3.78754747], [1516962240000, 0.04164798, 0.041648, 0.04160562, 0.04164799, 5.61150785], [1516962300000, 0.04164799, 0.04180851, 0.04160562, 0.04160562, 19.07773958], [1516962360000, 0.04158183, 0.04158183, 0.04147463, 0.04147463, 0.1286977], [1516962420000, 0.04147463, 0.04147463, 0.04147463, 0.04147463, 1.72856723], [1516962480000, 0.0415, 0.0415, 0.0415, 0.0415, 0.05313254], [1516962540000, 0.0415, 0.0415, 0.0415, 0.0415, 0.05056428], [1516962600000, 0.04173182, 0.04173182, 0.0415, 0.0415, 2.71619038], [1516962660000, 0.0415, 0.041628, 0.04117961, 0.041628, 0.69113679], [1516962720000, 0.04117982, 0.04159161, 0.04117982, 0.04159161, 1.70632167], [1516962780000, 0.04162699, 0.04162699, 0.04119024, 0.04119024, 0.37912156], [1516962900000, 0.04121602, 0.04162121, 0.04121602, 0.04162121, 0.26057819], [1516962960000, 0.04162064, 0.04162064, 0.04162064, 0.04162064, 0.82621971], [1516963200000, 0.04161892, 0.04162669, 0.04161892, 0.04162669, 0.74649475], [1516963260000, 0.04162668, 0.04162668, 0.04136908, 0.04136908, 0.14631005], [1516963320000, 0.04162661, 0.04162661, 0.04162661, 0.04162661, 0.12011524], [1516963380000, 0.04162651, 0.04162652, 0.04162651, 0.04162652, 0.46757133], [1516963440000, 0.04139, 0.04139, 0.04120605, 0.04120605, 10.11698487], [1516963500000, 0.04162621, 0.04162621, 0.041262, 0.041262, 0.45123331], [1516963560000, 0.041262, 0.041262, 0.04125703, 0.041262, 0.1531348], [1516963620000, 0.04129716, 0.04129716, 0.04129716, 0.04129716, 0.1355601], [1516963680000, 0.04130205, 0.04162551, 0.04130205, 0.04162551, 0.03588626], [1516963740000, 0.04130211, 0.04130211, 0.04129715, 0.04130205, 9.64553709], [1516963800000, 0.04130501, 0.04162507, 0.04130501, 0.04162499, 1.29650275], [1516963860000, 0.04162515, 0.04162515, 0.04130503, 0.04130503, 1.2102385], [1516963920000, 0.04130502, 0.04130503, 0.04124104, 0.04130503, 4.49498999], [1516963980000, 0.04130503, 0.04161671, 0.04130503, 0.04161671, 0.91975931], [1516964100000, 0.04159995, 0.04159996, 0.04159986, 0.04159986, 0.72115383], [1516964160000, 0.04130502, 0.04130502, 0.04130502, 0.04130502, 0.21350175], [1516964280000, 0.04130502, 0.04151154, 0.04130501, 0.04130501, 5.56253845], [1516964340000, 0.04151154, 0.04151155, 0.04151154, 0.04151155, 0.33820253], [1516964460000, 0.04130501, 0.04130501, 0.04124104, 0.04124105, 2.51684862], [1516964520000, 0.04124105, 0.04141694, 0.04124105, 0.04141694, 2.28304594], [1516964580000, 0.04141694, 0.04151154, 0.04124104, 0.04124104, 1.84397836], [1516964700000, 0.04124104, 0.041503, 0.04124104, 0.041503, 1.30233514], [1516964760000, 0.04124104, 0.04124104, 0.04124104, 0.04124104, 0.3086655], [1516964820000, 0.04129, 0.04145042, 0.04124104, 0.04145042, 17.62981234], [1516964880000, 0.04145, 0.04145, 0.04144982, 0.04144982, 0.55657775], [1516964940000, 0.04144592, 0.04144891, 0.041445, 0.041445, 1.52603141], [1516965000000, 0.04144213, 0.04144987, 0.04124106, 0.04124106, 1.35356527], [1516965060000, 0.04124106, 0.04124106, 0.04124106, 0.04124106, 0.02673327], [1516965120000, 0.04124106, 0.04124119, 0.04124106, 0.04124118, 1.53415869], [1516965180000, 0.04124118, 0.04124118, 0.04124118, 0.04124118, 7.49129599], [1516965240000, 0.04124106, 0.04124117, 0.041015, 0.04124117, 16.03769169], [1516965360000, 0.04101021, 0.04101021, 0.04101021, 0.04101021, 6.36108433], [1516965420000, 0.04124, 0.04124, 0.04124, 0.04124, 1.2189321], [1516965480000, 0.04123999, 0.04124118, 0.04123999, 0.04124116, 3.00895368], [1516965540000, 0.04124118, 0.04124118, 0.04124118, 0.04124118, 1.76833969], [1516965600000, 0.04124118, 0.04124118, 0.04124118, 0.04124118, 3.60874679], [1516965660000, 0.04124118, 0.04150294, 0.04124118, 0.04150294, 3.49905221], [1516965720000, 0.04124118, 0.04124118, 0.04124117, 0.04124117, 0.09684796], [1516965840000, 0.04124118, 0.04124118, 0.04124118, 0.04124118, 0.01452174], [1516965900000, 0.04124118, 0.04124118, 0.04124118, 0.04124118, 0.15317264], [1516965960000, 0.04124118, 0.04124118, 0.04106647, 0.04124118, 1.15530957], [1516966020000, 0.04124118, 0.04124118, 0.04124118, 0.04124118, 0.25636671], [1516966080000, 0.04124118, 0.04124118, 0.04124118, 0.04124118, 0.05371478], [1516966140000, 0.041119, 0.04124118, 0.04107081, 0.04124118, 12.41715081], [1516966200000, 0.04130789, 0.04150286, 0.04124119, 0.04124119, 4.98235662], [1516966260000, 0.04141658, 0.041503, 0.04141658, 0.041503, 3.36504575], [1516966320000, 0.04148222, 0.041503, 0.04148222, 0.041503, 0.86748635], [1516966440000, 0.04124119, 0.04124119, 0.04124119, 0.04124119, 0.05], [1516966500000, 0.04124119, 0.04148205, 0.04124119, 0.04148205, 0.37858405], [1516966620000, 0.04143977, 0.04143977, 0.04124129, 0.04124129, 1.37703704], [1516966680000, 0.04124119, 0.04124119, 0.04124119, 0.04124119, 1.84632073], [1516966740000, 0.04139383, 0.04139383, 0.0412412, 0.0412412, 0.18130655], [1516966800000, 0.0412412, 0.04139999, 0.04124119, 0.04124119, 28.05366187], [1516966860000, 0.04139999, 0.0414, 0.04124118, 0.0414, 2.08605633], [1516966920000, 0.04114876, 0.04114876, 0.04102002, 0.04114876, 3.77618342], [1516966980000, 0.04114876, 0.04114876, 0.04114876, 0.04114876, 0.05376082], [1516967040000, 0.04114876, 0.04114876, 0.04114876, 0.04114876, 0.39477334], [1516967100000, 0.04114876, 0.04114876, 0.04114876, 0.04114876, 10.87660505], [1516967160000, 0.04114876, 0.04114876, 0.04114876, 0.04114876, 13.04678451], [1516967220000, 0.04139743, 0.04139743, 0.04114875, 0.04114876, 14.26936382], [1516967280000, 0.04139999, 0.0414, 0.04139999, 0.0414, 0.60386488], [1516967340000, 0.0414, 0.0414, 0.04114876, 0.04114876, 0.32673209], [1516967400000, 0.0414, 0.0414, 0.0414, 0.0414, 0.24154589], [1516967460000, 0.0414, 0.0414, 0.04114876, 0.04114876, 1.13460427], [1516967520000, 0.04114876, 0.041149, 0.04114876, 0.041149, 0.59362442], [1516967580000, 0.04127244, 0.04127244, 0.04115401, 0.04115401, 2.85048443], [1516967700000, 0.04115901, 0.0414, 0.04115901, 0.0414, 3.02540715], [1516967760000, 0.041149, 0.041149, 0.041149, 0.041149, 0.23322642], [1516967820000, 0.04118305, 0.04118305, 0.041149, 0.041149, 0.10417818], [1516968180000, 0.04135, 0.04135, 0.04135, 0.04135, 0.06765139], [1516968240000, 0.04134999, 0.04134999, 0.04134999, 0.04134999, 0.15417024], [1516968300000, 0.041149, 0.041149, 0.04102022, 0.04102022, 10.94703636], [1516968360000, 0.04134989, 0.04134989, 0.04102023, 0.04102023, 0.27159695], [1516968420000, 0.0413498, 0.0413498, 0.0413498, 0.0413498, 0.46875647], [1516968540000, 0.04113332, 0.04113332, 0.04113322, 0.04113322, 0.12536968], [1516968600000, 0.04133395, 0.04133397, 0.04113322, 0.04113322, 1.11034902], [1516968660000, 0.04113322, 0.04113322, 0.04113322, 0.04113322, 0.12930016], [1516968720000, 0.04113322, 0.04135, 0.04113322, 0.04135, 2.12950299], [1516968780000, 0.04113322, 0.04113322, 0.04113322, 0.04113322, 1.12140599], [1516968840000, 0.04113322, 0.04113322, 0.04102022, 0.04102022, 5.39857632], [1516968900000, 0.04102022, 0.04135, 0.04102022, 0.04103501, 2.52181725], [1516968960000, 0.04105, 0.04139, 0.04105, 0.04139, 1.67870834], [1516969020000, 0.0410998, 0.04139, 0.0410998, 0.04138997, 0.60762852], [1516969080000, 0.04138996, 0.0414, 0.0411, 0.041105, 0.37225128], [1516969140000, 0.04139999, 0.0414, 0.04139999, 0.04139999, 0.21528214], [1516969200000, 0.04139999, 0.0414, 0.04139999, 0.04139999, 0.28365551], [1516969260000, 0.04107502, 0.04107506, 0.04107502, 0.04107506, 0.65113656], [1516969320000, 0.04108001, 0.0414, 0.04108001, 0.0414, 3.38607219], [1516969380000, 0.04139999, 0.04139999, 0.04139999, 0.04139999, 0.12999801], [1516969440000, 0.0413, 0.0413, 0.0413, 0.0413, 0.01993733], [1516969500000, 0.0413, 0.0413, 0.0413, 0.0413, 0.28764407], [1516969620000, 0.04111422, 0.04111422, 0.04111422, 0.04111422, 0.33059073], [1516969680000, 0.0413, 0.0413, 0.0413, 0.0413, 0.09134178], [1516969740000, 0.04111422, 0.04111422, 0.04111422, 0.04111422, 0.20116012], [1516969800000, 0.04111422, 0.04111422, 0.041035, 0.04111422, 4.27558358], [1516969860000, 0.04111422, 0.04111422, 0.04103001, 0.04103001, 1.73642533], [1516969920000, 0.04103001, 0.04111422, 0.04102022, 0.04102022, 1.58308947], [1516969980000, 0.04102022, 0.04102022, 0.04102022, 0.04102022, 1.66778799], [1516970040000, 0.04103, 0.04133892, 0.040982, 0.04133892, 22.03901548], [1516970100000, 0.04103004, 0.04103004, 0.04071718, 0.04071718, 124.15257854], [1516970160000, 0.04090301, 0.041, 0.04077902, 0.041, 56.09107935], [1516970280000, 0.04110196, 0.04110196, 0.041, 0.041, 1.10618617], [1516970340000, 0.041, 0.041, 0.041, 0.041, 0.35451635], [1516970400000, 0.04091, 0.04091, 0.04091, 0.04091, 0.03410401], [1516970460000, 0.04091, 0.04091501, 0.04091, 0.04091501, 0.23817056], [1516970520000, 0.04110193, 0.04110193, 0.04110193, 0.04110193, 1.21648788], [1516970580000, 0.04092, 0.04110196, 0.04090999, 0.04110196, 5.50368542], [1516970700000, 0.04110196, 0.041192, 0.04110196, 0.04115881, 2.06185604], [1516970760000, 0.04115884, 0.04133399, 0.041154, 0.04127899, 3.22111962], [1516970880000, 0.041329, 0.041329, 0.0409501, 0.0409501, 0.02982747], [1516970940000, 0.04096001, 0.04129581, 0.04096001, 0.04129581, 2.25074337], [1516971000000, 0.04097002, 0.041425, 0.040935, 0.041425, 16.87293025], [1516971060000, 0.04142499, 0.041425, 0.04139999, 0.04139999, 2.99242049], [1516971120000, 0.04138999, 0.04138999, 0.04093501, 0.04093501, 1.02541509], [1516971180000, 0.04135399, 0.04135998, 0.04135399, 0.04135998, 0.64424429], [1516971240000, 0.04135396, 0.04135396, 0.04135396, 0.04135396, 0.13785177], [1516971300000, 0.04135395, 0.04135397, 0.04135395, 0.04135397, 0.7254443], [1516971360000, 0.04135397, 0.04135397, 0.0412, 0.0412, 1.37135209], [1516971420000, 0.0412, 0.04138333, 0.0412, 0.04138331, 41.14628108], [1516971480000, 0.04129167, 0.04129168, 0.04129167, 0.04129168, 0.22051455], [1516971540000, 0.04129167, 0.04143, 0.0412, 0.04143, 57.63988039], [1516971600000, 0.04143, 0.04147199, 0.0412, 0.0412, 52.37191243], [1516971660000, 0.0412, 0.04147199, 0.0412, 0.0412, 1.20618101], [1516971720000, 0.0412, 0.04146699, 0.0411542, 0.0411542, 0.77870318], [1516971840000, 0.04114639, 0.041352, 0.04113895, 0.04113895, 0.11559561], [1516971900000, 0.04135199, 0.04135199, 0.041139, 0.04135199, 2.79203571], [1516971960000, 0.041139, 0.041139, 0.041139, 0.041139, 0.8369392], [1516972020000, 0.04134498, 0.04134498, 0.04113892, 0.04113892, 3.25310688], [1516972140000, 0.04100502, 0.04100502, 0.04100501, 0.04100501, 0.09650279], [1516972200000, 0.04100502, 0.0411389, 0.04100502, 0.0411389, 1.28188324], [1516972260000, 0.0411389, 0.0412213, 0.04100505, 0.04100505, 4.1569818], [1516972320000, 0.04100506, 0.04100508, 0.04100506, 0.04100508, 0.62795407], [1516972380000, 0.0413, 0.0413, 0.04103246, 0.0413, 1.36765173], [1516972440000, 0.0412, 0.0412, 0.0412, 0.0412, 0.60090772], [1516972500000, 0.04120001, 0.04120001, 0.0412, 0.04120001, 0.80978471], [1516972560000, 0.0412, 0.04120001, 0.0412, 0.0412, 0.13849309], [1516972620000, 0.04120001, 0.04120001, 0.04100512, 0.04100512, 0.24400664], [1516972680000, 0.04100512, 0.04100512, 0.04100506, 0.04100512, 21.69384138], [1516972740000, 0.04100512, 0.041015, 0.0410051, 0.041015, 0.64736487], [1516972800000, 0.0413, 0.04130001, 0.04101002, 0.041299, 4.14915812], [1516972860000, 0.041299, 0.041299, 0.04101002, 0.04101002, 0.28384542], [1516972920000, 0.04101001, 0.04101001, 0.04101001, 0.04101001, 0.0687287], [1516972980000, 0.04101001, 0.04101001, 0.04101001, 0.04101001, 0.37795319], [1516973040000, 0.041299, 0.041299, 0.04101502, 0.04101502, 0.15189117], [1516973100000, 0.041299, 0.04130001, 0.041299, 0.04130001, 0.27146237], [1516973160000, 0.04129999, 0.04133665, 0.04129999, 0.04133665, 6.99896018], [1516973220000, 0.0413, 0.0413, 0.0413, 0.0413, 0.03788105], [1516973280000, 0.04114988, 0.04114988, 0.041114, 0.041114, 6.24661775], [1516973340000, 0.04114987, 0.04114987, 0.04101001, 0.04101001, 0.21689794], [1516973400000, 0.04102501, 0.0413, 0.04102501, 0.0413, 0.5275846], [1516973520000, 0.04129862, 0.04129862, 0.04129862, 0.04129862, 0.015183], [1516973700000, 0.04129862, 0.04129862, 0.041, 0.041, 2.44662347], [1516973820000, 0.04100001, 0.041005, 0.04100001, 0.041005, 0.19357986], [1516973880000, 0.041005, 0.041005, 0.041005, 0.041005, 0.15596273], [1516974000000, 0.04104, 0.04104, 0.04104, 0.04104, 0.05006662], [1516974060000, 0.04104, 0.04104, 0.04100499, 0.04104, 1.4919369], [1516974120000, 0.04104, 0.04104, 0.04100499, 0.04104, 0.53510215], [1516974180000, 0.04104, 0.04104, 0.04104, 0.04104, 0.02688706], [1516974240000, 0.04104, 0.04104, 0.041, 0.04104, 5.05377752], [1516974300000, 0.04104, 0.04104, 0.04104, 0.04104, 0.56790665], [1516974360000, 0.04104, 0.04104, 0.04100504, 0.04104, 2.03875185], [1516974420000, 0.04104, 0.04104, 0.04104, 0.04104, 0.01511305], [1516974480000, 0.04104, 0.04104, 0.04100504, 0.04100504, 0.36992747], [1516974540000, 0.04104, 0.04104, 0.04104, 0.04104, 0.07309941], [1516974600000, 0.04100504, 0.04104, 0.041, 0.04104, 4.71615284], [1516974660000, 0.041, 0.041, 0.041, 0.041, 0.75798837], [1516974720000, 0.041, 0.04104, 0.041, 0.04104, 0.0773089], [1516974780000, 0.04104, 0.04104, 0.041, 0.041, 1.36378369], [1516974840000, 0.04104, 0.04104, 0.04104, 0.04104, 0.05378092], [1516974900000, 0.04102, 0.04104, 0.04102, 0.04104, 2.26632376], [1516974960000, 0.04104, 0.04104, 0.04104, 0.04104, 0.61598069], [1516975020000, 0.04104, 0.04104, 0.04104, 0.04104, 0.02689046], [1516975080000, 0.04104, 0.04104, 0.04102, 0.04104, 4.28821638], [1516975140000, 0.04104, 0.04104, 0.04104, 0.04104, 0.05377752], [1516975200000, 0.041005, 0.04104, 0.041005, 0.04104, 0.37806012], [1516975260000, 0.04101, 0.04101, 0.041005, 0.041005, 27.61000903], [1516975320000, 0.04104, 0.04104, 0.041, 0.04104, 37.25201771], [1516975380000, 0.04104, 0.04104, 0.04104, 0.04104, 0.02689046], [1516975440000, 0.04100001, 0.04104, 0.041, 0.04104, 0.97619417], [1516975500000, 0.041, 0.041, 0.041, 0.041, 0.37533905], [1516975560000, 0.041, 0.041, 0.041, 0.041, 0.0805], [1516975620000, 0.04128899, 0.04128899, 0.04128899, 0.04128899, 0.02738063], [1516975680000, 0.04128899, 0.04129862, 0.04128899, 0.04129862, 0.03], [1516975740000, 0.04100001, 0.04129858, 0.041, 0.04129858, 2.26415094], [1516975800000, 0.04129399, 0.04129399, 0.04129399, 0.04129399, 0.66839745], [1516975860000, 0.04100001, 0.04100001, 0.041, 0.041, 1.04640417], [1516975920000, 0.041, 0.04100001, 0.041, 0.04100001, 0.44068147], [1516975980000, 0.04107, 0.04107, 0.04107, 0.04107, 0.20409523], [1516976040000, 0.0412, 0.04132661, 0.04107, 0.04107, 4.59362743], [1516976160000, 0.04107001, 0.04107001, 0.04107001, 0.04107001, 0.10559334], [1516976220000, 0.04132661, 0.04134098, 0.04132661, 0.04134098, 0.75948924], [1516976340000, 0.04134098, 0.04134098, 0.04134098, 0.04134098, 0.07810089], [1516976400000, 0.041336, 0.041336, 0.041336, 0.041336, 0.80570513], [1516976520000, 0.04110003, 0.04110003, 0.04110002, 0.04110002, 0.10565766], [1516976580000, 0.04110002, 0.04110002, 0.04110002, 0.04110002, 0.01852146], [1516976640000, 0.04110012, 0.04132098, 0.0411, 0.04132098, 1.77615574], [1516976760000, 0.04110002, 0.04110002, 0.04110002, 0.04110002, 0.5], [1516976820000, 0.04110002, 0.04110002, 0.04110001, 0.04110001, 0.34804666], [1516976880000, 0.04110001, 0.04110002, 0.0411, 0.04110002, 0.55676451], [1516976940000, 0.04110001, 0.04110001, 0.0411, 0.0411, 1.12676398], [1516977000000, 0.0411, 0.0411, 0.0411, 0.0411, 0.05364964], [1516977060000, 0.0411, 0.0411, 0.0411, 0.0411, 0.04685467], [1516977120000, 0.0411, 0.04115, 0.0411, 0.0411, 1.70702173], [1516977180000, 0.0411, 0.04114999, 0.0411, 0.0411, 0.82721556], [1516977240000, 0.0411, 0.04131998, 0.0411, 0.0411, 2.54812309], [1516977300000, 0.0411, 0.04129998, 0.0411, 0.0411, 5.53667251], [1516977360000, 0.0411, 0.0411, 0.0411, 0.0411, 3.41259657], [1516977420000, 0.0411, 0.04124897, 0.0411, 0.0411, 3.99855807], [1516977480000, 0.0411, 0.0411, 0.0411, 0.0411, 0.22715813], [1516977540000, 0.04110001, 0.04110001, 0.0411, 0.0411, 0.05364963], [1516977600000, 0.04110001, 0.04110001, 0.04110001, 0.04110001, 1.27744117], [1516977660000, 0.04110001, 0.04110002, 0.04110001, 0.04110001, 0.05364961], [1516977720000, 0.04110001, 0.041229, 0.04110001, 0.04110001, 0.86836928], [1516977780000, 0.04110001, 0.04110001, 0.0411, 0.0411, 7.20640737], [1516977840000, 0.0411, 0.04110001, 0.0411, 0.0411, 1.41401326], [1516977900000, 0.0411, 0.04110001, 0.0411, 0.0411, 0.10352135], [1516978020000, 0.0411, 0.0411, 0.0411, 0.0411, 2.19843588], [1516978080000, 0.04100002, 0.04100002, 0.04100002, 0.04100002, 1.07961465], [1516978140000, 0.04100002, 0.04100002, 0.04100001, 0.04100001, 0.13377223], [1516978200000, 0.04100002, 0.04100002, 0.041, 0.04100002, 3.85773552], [1516978260000, 0.041, 0.04100002, 0.041, 0.041, 1.24338768], [1516978380000, 0.041, 0.041, 0.041, 0.041, 0.59183636], [1516978440000, 0.0411, 0.0411, 0.0411, 0.0411, 0.03670194], [1516978500000, 0.04100001, 0.04100001, 0.041, 0.04100001, 4.46289148], [1516978560000, 0.04100001, 0.0411, 0.04100001, 0.0411, 0.30961442], [1516978680000, 0.041, 0.04100001, 0.041, 0.04100001, 0.07096474], [1516978740000, 0.0411, 0.04110001, 0.0411, 0.04110001, 1.96629218], [1516978800000, 0.0411, 0.04110001, 0.0411, 0.04110001, 0.31525138], [1516978860000, 0.04110001, 0.04110001, 0.041, 0.041, 4.25411593], [1516978920000, 0.041, 0.04109999, 0.041, 0.04109999, 0.04432974], [1516978980000, 0.04113685, 0.04113685, 0.04113685, 0.04113685, 0.72927303], [1516979040000, 0.04100001, 0.04100001, 0.04100001, 0.04100001, 0.49044494], [1516979100000, 0.04100001, 0.04100001, 0.04100001, 0.04100001, 0.20425603], [1516979220000, 0.041211, 0.0412757, 0.04100002, 0.04100002, 1.21304645], [1516979280000, 0.04104102, 0.04128098, 0.041, 0.04100234, 1.30461286], [1516979340000, 0.04100234, 0.0413869, 0.04100001, 0.04100001, 23.59647865], [1516979400000, 0.04100001, 0.04100003, 0.04100001, 0.04100002, 2.24299279], [1516979460000, 0.04100002, 0.04128499, 0.04100002, 0.04128499, 0.78624521], [1516979640000, 0.04100007, 0.04100007, 0.041, 0.041, 6.69503618], [1516979700000, 0.041164, 0.04118498, 0.041164, 0.04118498, 1.28361018], [1516979760000, 0.04100001, 0.04117294, 0.04099999, 0.041, 6.79961898], [1516979820000, 0.04100001, 0.041214, 0.041, 0.041212, 1.48718804], [1516979880000, 0.04118899, 0.04118899, 0.04118899, 0.04118899, 0.12164634], [1516979940000, 0.04100001, 0.04114105, 0.04079033, 0.04114105, 10.33031679], [1516980000000, 0.0409, 0.041202, 0.0409, 0.041, 1.91871373], [1516980060000, 0.04100002, 0.04100002, 0.04097569, 0.04097569, 0.53317988], [1516980120000, 0.04097569, 0.04109944, 0.04093298, 0.04093298, 0.30921676], [1516980180000, 0.041127, 0.041127, 0.04112699, 0.04112699, 0.38326747], [1516980300000, 0.04099997, 0.04099998, 0.04099997, 0.04099998, 0.40885146], [1516980420000, 0.04099998, 0.04099999, 0.04099998, 0.04099998, 0.42690602], [1516980540000, 0.04099998, 0.04099998, 0.04099998, 0.04099998, 0.48840945], [1516980600000, 0.04099999, 0.04112695, 0.04099999, 0.04112695, 0.21949397], [1516980660000, 0.04113161, 0.04117105, 0.04099998, 0.041, 2.91201132], [1516980720000, 0.04099998, 0.04099998, 0.04093301, 0.04093301, 1.21359958], [1516980780000, 0.04093301, 0.04093302, 0.040933, 0.040933, 1.83020981], [1516980840000, 0.04093299, 0.04112696, 0.0409, 0.04110051, 1.03448512], [1516980900000, 0.04090001, 0.04090001, 0.04085783, 0.04085783, 0.99965363], [1516980960000, 0.04085783, 0.04089989, 0.04085783, 0.04089989, 0.07885341], [1516981020000, 0.04099449, 0.04099449, 0.04099449, 0.04099449, 0.34094843], [1516981140000, 0.04087801, 0.04087801, 0.04087801, 0.04087801, 0.0756], [1516981200000, 0.04087806, 0.041251, 0.04087805, 0.041251, 0.69091131], [1516981260000, 0.04099809, 0.04099809, 0.04099809, 0.04099809, 0.11148073], [1516981320000, 0.04106224, 0.04106224, 0.04099809, 0.04099809, 0.34499281], [1516981440000, 0.0409981, 0.0409981, 0.04089843, 0.04089843, 0.19661767], [1516981500000, 0.04088805, 0.041251, 0.04088804, 0.041251, 0.98076704], [1516981560000, 0.04087801, 0.04087801, 0.04087801, 0.04087801, 0.29978117], [1516981620000, 0.04089301, 0.04116849, 0.04089301, 0.04089303, 0.67354542], [1516981740000, 0.04114987, 0.04114987, 0.04090703, 0.04090703, 3.9563001], [1516981800000, 0.04114987, 0.04121557, 0.04114987, 0.04121557, 1.07273879], [1516981920000, 0.04091701, 0.04091701, 0.04091701, 0.04091701, 0.04212566], [1516981980000, 0.04091701, 0.04114971, 0.04091701, 0.04091701, 2.46493119], [1516982100000, 0.04091701, 0.04091701, 0.04090703, 0.04090703, 0.53272661], [1516982160000, 0.04090703, 0.04090703, 0.04090703, 0.04090703, 0.0149725], [1516982220000, 0.041125, 0.041148, 0.04089303, 0.04089303, 0.73565967], [1516982280000, 0.04089304, 0.04089304, 0.04089303, 0.04089303, 0.33901177], [1516982340000, 0.04089304, 0.04089304, 0.04089304, 0.04089304, 0.05392156], [1516982400000, 0.04089304, 0.04089304, 0.04089301, 0.04089304, 1.10041741], [1516982460000, 0.04089301, 0.04089301, 0.04074, 0.04074, 5.53898103], [1516982520000, 0.04074, 0.04089301, 0.04074, 0.04089301, 0.50031357], [1516982580000, 0.04089301, 0.04089304, 0.04073951, 0.04073951, 4.11356162], [1516982640000, 0.04073952, 0.04074001, 0.04073952, 0.04074, 0.98251861], [1516982700000, 0.04109199, 0.041092, 0.04089304, 0.041092, 2.08946838], [1516982760000, 0.04077799, 0.04098156, 0.04077768, 0.04098156, 5.276871], [1516982820000, 0.04098157, 0.04098157, 0.04077767, 0.04078301, 1.27774857], [1516982880000, 0.040788, 0.04098154, 0.040788, 0.04098154, 0.75243967], [1516982940000, 0.04098155, 0.04098155, 0.04098155, 0.04098155, 2.65005388], [1516983000000, 0.04098155, 0.04098155, 0.040791, 0.04098155, 8.59815116], [1516983060000, 0.04098154, 0.04098154, 0.04098154, 0.04098154, 0.19573059], [1516983120000, 0.04098153, 0.04098153, 0.04098153, 0.04098153, 0.02684135], [1516983240000, 0.04098147, 0.04098147, 0.04078605, 0.04078605, 0.46459868], [1516983300000, 0.04078605, 0.04098154, 0.04078605, 0.04098154, 0.74353713], [1516983360000, 0.04098154, 0.04098156, 0.04098154, 0.04098156, 0.52049772], [1516983420000, 0.04098156, 0.04109717, 0.04098156, 0.04109717, 0.04491225], [1516983480000, 0.04098156, 0.04098201, 0.04098156, 0.04098156, 0.71261702], [1516983540000, 0.04098156, 0.04098156, 0.04098156, 0.04098156, 1.16225394], [1516983600000, 0.04109712, 0.04109712, 0.04098156, 0.04098156, 2.3686796], [1516983660000, 0.04109712, 0.04109718, 0.04098156, 0.04098156, 49.34934492], [1516983720000, 0.04109717, 0.04120696, 0.04098156, 0.04098156, 6.38399199], [1516983780000, 0.04120696, 0.04120696, 0.04098157, 0.04098157, 0.40943473], [1516983840000, 0.04098156, 0.041197, 0.04098156, 0.04098156, 43.30304918], [1516983900000, 0.04119698, 0.04119698, 0.04098156, 0.04098156, 69.4096437], [1516983960000, 0.04098156, 0.04098157, 0.04098156, 0.04098156, 1.38088519], [1516984020000, 0.04098156, 0.04114699, 0.04084159, 0.04084159, 26.380303], [1516984080000, 0.04084159, 0.04084159, 0.040745, 0.040773, 11.02020644], [1516984140000, 0.04107295, 0.04107295, 0.04077701, 0.04077701, 0.33254248], [1516984200000, 0.041, 0.041, 0.041, 0.041, 0.92102014], [1516984260000, 0.041, 0.04111991, 0.041, 0.04111991, 3.5528169], [1516984320000, 0.0411, 0.0411, 0.0411, 0.0411, 0.01543993], [1516984380000, 0.04080711, 0.0409, 0.0408071, 0.0408071, 0.85680705], [1516984440000, 0.0408071, 0.0408071, 0.04080709, 0.04080709, 0.63900182], [1516984500000, 0.04080709, 0.0411199, 0.04080709, 0.0411199, 1.11871329], [1516984620000, 0.04111988, 0.04111988, 0.04082365, 0.04082365, 0.71396134], [1516984680000, 0.04111987, 0.04111987, 0.04111987, 0.04111987, 0.150017], [1516984740000, 0.0409, 0.0409, 0.040864, 0.040864, 2.90701796], [1516984800000, 0.040864, 0.040864, 0.040864, 0.040864, 0.09115118], [1516984860000, 0.040864, 0.041, 0.04071718, 0.041, 15.30743627], [1516984920000, 0.041, 0.04111987, 0.041, 0.041, 0.20188048], [1516984980000, 0.041, 0.041, 0.041, 0.041, 8.01978291], [1516985040000, 0.04111986, 0.04111986, 0.041, 0.041, 0.27162865], [1516985100000, 0.041, 0.04100001, 0.041, 0.041, 2.77822848], [1516985160000, 0.041, 0.041, 0.041, 0.041, 0.19776463], [1516985220000, 0.041, 0.04111987, 0.041, 0.041, 2.17567038], [1516985280000, 0.041, 0.04111987, 0.041, 0.04111987, 1.69575628], [1516985340000, 0.04100002, 0.04111986, 0.041, 0.04100001, 0.06616654], [1516985400000, 0.04100002, 0.04111499, 0.04100002, 0.041105, 0.44925996], [1516985460000, 0.04100003, 0.04111497, 0.04100003, 0.04100003, 0.87102932], [1516985520000, 0.04100003, 0.04111498, 0.041, 0.041, 52.58140973], [1516985580000, 0.04111497, 0.04111497, 0.041, 0.041, 5.37351947], [1516985640000, 0.041, 0.04110499, 0.041, 0.041, 0.22035304], [1516985700000, 0.041, 0.04111099, 0.041, 0.041, 0.41551179], [1516985760000, 0.04110999, 0.04110999, 0.041, 0.041, 0.15023191], [1516985820000, 0.04111099, 0.04111099, 0.041, 0.04100001, 0.70591991], [1516985880000, 0.0411, 0.0411, 0.04095, 0.0411, 2.05561374], [1516985940000, 0.04095, 0.0411, 0.04095, 0.04109996, 0.14687004], [1516986000000, 0.04095, 0.04109995, 0.04095, 0.04095, 7.27582195], [1516986060000, 0.04095, 0.0411, 0.04095, 0.0411, 2.86448038], [1516986120000, 0.04106213, 0.04106213, 0.04077001, 0.04077001, 0.27439505], [1516986180000, 0.04106214, 0.04106214, 0.04106214, 0.04106214, 0.03736064], [1516986240000, 0.04106213, 0.04106213, 0.04106213, 0.04106213, 0.01223721], [1516986300000, 0.04105699, 0.04105699, 0.04087004, 0.04087004, 0.27053957], [1516986360000, 0.04105699, 0.04105699, 0.04105699, 0.04105699, 0.0517476], [1516986420000, 0.04105697, 0.04105697, 0.04087004, 0.04087004, 1.45757748], [1516986480000, 0.04087004, 0.04105699, 0.04087004, 0.04087004, 1.89142683], [1516986540000, 0.04087004, 0.04087004, 0.04087004, 0.04087004, 0.97624143], [1516986600000, 0.04105698, 0.04105698, 0.04087004, 0.04087004, 0.22619282], [1516986660000, 0.04087004, 0.04105698, 0.04087004, 0.04087004, 0.1701058], [1516986720000, 0.04105698, 0.04105698, 0.04087004, 0.04087004, 4.49406111], [1516986780000, 0.04087004, 0.04105698, 0.04087004, 0.04105698, 0.17730501], [1516986840000, 0.04087004, 0.04087004, 0.04087004, 0.04087004, 0.32752281], [1516986960000, 0.04087004, 0.04087004, 0.0408517, 0.0408517, 17.77759414], [1516987020000, 0.04087004, 0.04087004, 0.04077, 0.04077, 4.07404], [1516987080000, 0.04103198, 0.04103198, 0.04103198, 0.04103198, 0.01597563], [1516987140000, 0.04071719, 0.04101032, 0.04071718, 0.04101032, 1.50341133], [1516987200000, 0.04071718, 0.04071718, 0.04071718, 0.04071718, 0.026398], [1516987260000, 0.040994, 0.040994, 0.040994, 0.040994, 0.06985178], [1516987560000, 0.0407172, 0.0407172, 0.04071, 0.04071, 2.67759512], [1516987620000, 0.04071099, 0.04099999, 0.04071099, 0.04099999, 22.03199992], [1516987680000, 0.04071101, 0.04071101, 0.040711, 0.040711, 0.47873986], [1516987740000, 0.040711, 0.040711, 0.040711, 0.040711, 0.61075261], [1516987800000, 0.040711, 0.040711, 0.040711, 0.040711, 0.64094549], [1516987860000, 0.040711, 0.040711, 0.040711, 0.040711, 0.01731288], [1516987920000, 0.040711, 0.040711, 0.040711, 0.040711, 2.29523137], [1516987980000, 0.0408514, 0.0408514, 0.040711, 0.040711, 0.49625247], [1516988040000, 0.040711, 0.040711, 0.040711, 0.040711, 0.90348006], [1516988100000, 0.040711, 0.04092586, 0.04062958, 0.04062958, 2.17151668], [1516988160000, 0.040699, 0.040699, 0.04061, 0.04061, 2.5770589], [1516988220000, 0.04061, 0.040699, 0.04061, 0.04061, 0.36041005], [1516988280000, 0.040699, 0.040711, 0.04061, 0.04061, 4.73695799], [1516988340000, 0.040899, 0.040899, 0.040899, 0.040899, 0.04208439], [1516988400000, 0.04061, 0.04061, 0.04061, 0.04061, 0.10782105], [1516988460000, 0.04075449, 0.04075449, 0.04061, 0.04061, 0.1], [1516988580000, 0.04081753, 0.04081753, 0.04081753, 0.04081753, 1.5336544], [1516988700000, 0.0408175, 0.04081754, 0.0408175, 0.0408175, 0.82050159], [1516988760000, 0.04081753, 0.04081753, 0.04081753, 0.04081753, 0.21383232], [1516988820000, 0.04081752, 0.04081752, 0.04081752, 0.04081752, 0.0152085], [1516988880000, 0.04072342, 0.04072342, 0.04061009, 0.04061009, 0.02707287], [1516988940000, 0.0408, 0.0408, 0.0408, 0.0408, 43.95620686], [1516989000000, 0.04079899, 0.040799, 0.04061013, 0.04061013, 0.32621204], [1516989060000, 0.04061013, 0.0408, 0.04061, 0.04061, 64.72463312], [1516989120000, 0.04061, 0.0408, 0.04061, 0.0408, 26.00733217], [1516989180000, 0.04061002, 0.04061002, 0.04061002, 0.04061002, 0.34833091], [1516989240000, 0.04061011, 0.04061011, 0.04061011, 0.04061011, 0.75], [1516989360000, 0.04079998, 0.04079998, 0.04079998, 0.04079998, 0.55288262], [1516989420000, 0.04079999, 0.04079999, 0.04061012, 0.04061201, 0.73869103], [1516989480000, 0.04061201, 0.04061201, 0.040612, 0.04061201, 22.59749892], [1516989540000, 0.04061201, 0.04065262, 0.04061011, 0.04061011, 8.03386082], [1516989600000, 0.04079999, 0.0408, 0.04079999, 0.0408, 0.24509803], [1516989660000, 0.04070001, 0.0408, 0.04070001, 0.0408, 21.98780608], [1516989720000, 0.04070001, 0.0408, 0.04070001, 0.0408, 0.05404923], [1516989780000, 0.04070001, 0.0408, 0.04070001, 0.0408, 0.10907785], [1516989960000, 0.0408, 0.0408, 0.04068165, 0.04068165, 5.07329022], [1516990020000, 0.04068165, 0.04068165, 0.04068165, 0.04068165, 5.83359625], [1516990080000, 0.04068165, 0.04068165, 0.04061014, 0.04061014, 5.49447546], [1516990140000, 0.0406368, 0.0406368, 0.0406368, 0.0406368, 0.3367647], [1516990200000, 0.0406368, 0.0408, 0.0406368, 0.0408, 1.80428342], [1516990260000, 0.0408, 0.0408, 0.0408, 0.0408, 0.01911764], [1516990320000, 0.04078022, 0.04078022, 0.04078022, 0.04078022, 0.02957521], [1516990380000, 0.04078023, 0.04078023, 0.04078021, 0.04078021, 0.14742777], [1516990440000, 0.04078023, 0.0408, 0.04078023, 0.0408, 5.42367313], [1516990500000, 0.0408, 0.0408, 0.0408, 0.0408, 7.35534647], [1516990560000, 0.04078023, 0.04078023, 0.04078023, 0.04078023, 1.37652386], [1516990620000, 0.0408, 0.0408, 0.04078022, 0.0408, 5.09727392], [1516990680000, 0.0408, 0.0408, 0.0408, 0.0408, 0.02450965], [1516990740000, 0.04078023, 0.04078023, 0.04061, 0.04078023, 10.06991494], [1516990860000, 0.04078023, 0.0408, 0.04064503, 0.04064503, 2.26170169], [1516990920000, 0.0408, 0.0408, 0.0408, 0.0408, 0.02696078], [1516990980000, 0.0408, 0.0408, 0.0408, 0.0408, 0.80551466], [1516991100000, 0.0408, 0.0408, 0.04064505, 0.04064505, 0.83847372], [1516991160000, 0.0408, 0.0408, 0.0408, 0.0408, 0.05423039], [1516991220000, 0.04066512, 0.04070579, 0.04064504, 0.04064504, 7.70378402], [1516991280000, 0.04064504, 0.04064504, 0.04064504, 0.04064504, 0.10832476], [1516991400000, 0.04064504, 0.04064504, 0.04064503, 0.04064503, 10.23610831], [1516991460000, 0.04064503, 0.04064504, 0.04061, 0.04064504, 3.90965452], [1516991520000, 0.04064504, 0.04075, 0.04064504, 0.04075, 0.28894571], [1516991640000, 0.04075, 0.04075, 0.04066, 0.04066, 0.97734211], [1516991700000, 0.04066, 0.04066, 0.04066, 0.04066, 0.56167524], [1516991820000, 0.04075, 0.04075001, 0.04075, 0.04075001, 0.05717866], [1516991880000, 0.04075, 0.04075001, 0.04066, 0.04075, 5.56130275], [1516991940000, 0.04066001, 0.04075, 0.04066, 0.04066001, 0.50784801], [1516992000000, 0.04074995, 0.04075001, 0.04066001, 0.04075001, 2.0453893], [1516992060000, 0.04066, 0.04079076, 0.04066, 0.04066, 0.38091337], [1516992120000, 0.04079999, 0.0408, 0.04066, 0.0408, 0.14070119], [1516992180000, 0.04079999, 0.0408, 0.04079999, 0.0408, 1.02708845], [1516992240000, 0.0408, 0.0408, 0.0408, 0.0408, 1.4], [1516992420000, 0.0408, 0.0408, 0.0408, 0.0408, 0.02002015], [1516992540000, 0.04067, 0.04067, 0.04066, 0.04066, 0.41302348], [1516992600000, 0.04066, 0.0407999, 0.0406102, 0.04061021, 13.69274454], [1516992660000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 6.1060879], [1516992720000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 1.34839905], [1516992780000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 1.0542968], [1516992840000, 0.04065999, 0.04065999, 0.04061021, 0.04065999, 0.46265781], [1516992900000, 0.04065999, 0.04065999, 0.0406102, 0.04061021, 1.50579863], [1516992960000, 0.04061021, 0.04061021, 0.0406102, 0.0406102, 0.24757116], [1516993020000, 0.0406102, 0.0406102, 0.0406102, 0.0406102, 29.70282424], [1516993080000, 0.0406102, 0.0406102, 0.04061, 0.04061, 2.54014333], [1516993140000, 0.0406102, 0.04065999, 0.0406102, 0.04065999, 3.49401983], [1516993200000, 0.04065999, 0.04065999, 0.04061021, 0.04065999, 1.1036628], [1516993260000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 0.60197148], [1516993320000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 3.62000062], [1516993380000, 0.04065999, 0.04065999, 0.04061021, 0.04065999, 4.24560295], [1516993440000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 0.3345638], [1516993500000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 8.07626689], [1516993560000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 1.30322172], [1516993620000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 4.74501568], [1516993680000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 0.62900688], [1516993740000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 0.68754852], [1516993800000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 0.72935866], [1516993860000, 0.04065999, 0.04065999, 0.04061024, 0.04065999, 1.87469817], [1516993920000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 0.16053656], [1516993980000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 0.0542968], [1516994040000, 0.04062003, 0.04065999, 0.04062003, 0.04065999, 0.0814453], [1516994100000, 0.04065999, 0.04065999, 0.04065999, 0.04065999, 2.28123989], [1516994160000, 0.04065999, 0.0408, 0.04065999, 0.0408, 1.24957487], [1516994220000, 0.0408, 0.0408, 0.0406102, 0.0406102, 0.69954326], [1516994280000, 0.0408, 0.0408, 0.0408, 0.0408, 0.31305339], [1516994340000, 0.0408, 0.0408, 0.04061022, 0.0407, 1.28493044], [1516994400000, 0.0407, 0.0407, 0.0407, 0.0407, 0.36284864], [1516994460000, 0.0407, 0.0407, 0.0407, 0.0407, 7.60271965], [1516994520000, 0.0408, 0.0408, 0.0407, 0.0407, 11.70175571], [1516994580000, 0.0407004, 0.0407004, 0.0407, 0.0407, 0.07058336], [1516994640000, 0.04070002, 0.04070002, 0.04070002, 0.04070002, 0.57013943], [1516994760000, 0.0408, 0.0408, 0.0408, 0.0408, 0.98039215], [1516994820000, 0.0408, 0.0408, 0.0408, 0.0408, 3.52086036], [1516994880000, 0.04070004, 0.04070004, 0.04070003, 0.04070004, 6.67440638], [1516994940000, 0.04070004, 0.04070004, 0.04070004, 0.04070004, 2.52514407], [1516995000000, 0.04070004, 0.04070004, 0.04070003, 0.04070004, 0.85684493], [1516995120000, 0.0407001, 0.0407001, 0.04070009, 0.0407001, 0.33647859], [1516995300000, 0.0408, 0.0408, 0.0408, 0.0408, 5.31800555], [1516995360000, 0.0407002, 0.0407002, 0.0407002, 0.0407002, 0.02708852], [1516995480000, 0.0407002, 0.0407002, 0.0407002, 0.0407002, 0.15291148], [1516995540000, 0.0408, 0.0408, 0.0408, 0.0408, 0.07460493], [1516995600000, 0.0408, 0.0408, 0.0408, 0.0408, 0.53604018], [1516995660000, 0.04070021, 0.04070021, 0.04070021, 0.04070021, 0.93689315], [1516995780000, 0.0408, 0.0408, 0.04070022, 0.0408, 27.8379089], [1516995840000, 0.0408, 0.0408, 0.0408, 0.0408, 2.22335677], [1516995900000, 0.0408, 0.0408, 0.0408, 0.0408, 0.29927493], [1516995960000, 0.0408, 0.0408, 0.0408, 0.0408, 0.52835249], [1516996020000, 0.0408, 0.0408, 0.04070025, 0.04070025, 0.36393536], [1516996140000, 0.0408, 0.0408, 0.0408, 0.0408, 2.83391703], [1516996200000, 0.0408, 0.0408, 0.04070024, 0.0408, 1.03707088], [1516996260000, 0.04070221, 0.04070221, 0.04070221, 0.04070221, 0.12848901], [1516996380000, 0.04070221, 0.04070221, 0.04070221, 0.04070221, 0.06059571], [1516996500000, 0.0408, 0.0408, 0.0408, 0.0408, 0.24509803], [1516996560000, 0.04070222, 0.04070222, 0.04070222, 0.04070222, 0.01340399], [1516996620000, 0.04070222, 0.04070222, 0.04070222, 0.04070222, 0.02708718], [1516996680000, 0.04070222, 0.04070222, 0.04070222, 0.04070222, 0.02708718], [1516996740000, 0.04070222, 0.04070222, 0.04070222, 0.04070222, 0.07295485], [1516996860000, 0.0408, 0.0408, 0.0408, 0.0408, 0.26793346], [1516996920000, 0.0408, 0.0408, 0.0408, 0.0408, 0.29054119], [1516997100000, 0.04073666, 0.0408, 0.040707, 0.0408, 15.10114698], [1516997160000, 0.040804, 0.040804, 0.0408, 0.040804, 1.99479829], [1516997220000, 0.0408175, 0.04081752, 0.0408175, 0.04081751, 1.35310757], [1516997280000, 0.04081753, 0.04081753, 0.04081753, 0.04081753, 0.10324304], [1516997400000, 0.040899, 0.040899, 0.040899, 0.040899, 0.00161561], [1516997460000, 0.041, 0.04100022, 0.041, 0.04100022, 1.99156357], [1516997520000, 0.04100022, 0.04100022, 0.04100021, 0.04100022, 0.62027916], [1516997580000, 0.04100022, 0.04101032, 0.04100022, 0.04100022, 1.30461591], [1516997640000, 0.04101032, 0.04104, 0.04101032, 0.04101033, 1.89998007], [1516997700000, 0.04102511, 0.04104, 0.04101033, 0.04102533, 4.13405734], [1516997760000, 0.04102533, 0.04102533, 0.04102533, 0.04102533, 0.91705739], [1516997820000, 0.04102533, 0.041042, 0.04102533, 0.04104, 5.56097498], [1516997880000, 0.04104, 0.04104, 0.04102533, 0.04102533, 8.76146933], [1516997940000, 0.04104, 0.04104, 0.04102533, 0.04102533, 1.88960374], [1516998000000, 0.04102533, 0.04102533, 0.04100021, 0.04101033, 1.10143881], [1516998060000, 0.04101033, 0.04105698, 0.04100021, 0.04105698, 0.58040532], [1516998120000, 0.04100021, 0.04100021, 0.04100021, 0.04100021, 0.05378022], [1516998180000, 0.04100022, 0.04100022, 0.04100021, 0.04100021, 0.34378022], [1516998240000, 0.04100021, 0.0410286, 0.04100021, 0.04100021, 0.23868022], [1516998600000, 0.04095003, 0.04100021, 0.04095, 0.04100021, 2.20743425], [1516998780000, 0.0410002, 0.0410002, 0.0410002, 0.0410002, 0.01756635], [1516998900000, 0.04100019, 0.04100019, 0.04100019, 0.04100019, 0.48719274], [1516998960000, 0.04100019, 0.04105698, 0.04095001, 0.04095001, 6.88197405], [1516999080000, 0.04095002, 0.04095002, 0.04095001, 0.04095001, 0.07850758], [1516999140000, 0.04095001, 0.04095001, 0.04095001, 0.04095001, 0.01266027], [1516999200000, 0.04105698, 0.04111987, 0.04095001, 0.041, 0.74573719], [1516999260000, 0.041, 0.041, 0.04099, 0.041, 5.7719937], [1516999320000, 0.04095001, 0.04095001, 0.04095001, 0.04095001, 0.85849525], [1516999440000, 0.04095, 0.04095001, 0.04095, 0.04095001, 0.48883549], [1516999500000, 0.04089902, 0.04095, 0.04089902, 0.04095, 0.54029265], [1516999560000, 0.04086, 0.04095, 0.04086, 0.04095, 0.26145823], [1516999620000, 0.04095, 0.04095, 0.04095, 0.04095, 0.01847561], [1516999680000, 0.04090499, 0.04095, 0.04090499, 0.04095, 0.48921956], [1516999740000, 0.04095, 0.04111985, 0.04086, 0.04086, 114.10619239], [1516999800000, 0.04111987, 0.04112, 0.04095001, 0.04095001, 2.92227934], [1516999860000, 0.04086, 0.04095001, 0.04083439, 0.04086, 14.17404731], [1516999920000, 0.04086, 0.04086, 0.04086, 0.04086, 10.2870658], [1516999980000, 0.04086, 0.04095001, 0.04086, 0.04095001, 9.2765182], [1517000040000, 0.04080504, 0.04080504, 0.04080504, 0.04080504, 6.60643695], [1517000100000, 0.04080504, 0.04080504, 0.04077, 0.04077001, 22.58432255], [1517000160000, 0.04080504, 0.04080504, 0.04080504, 0.04080504, 0.82319459], [1517000220000, 0.04080504, 0.04080504, 0.04078001, 0.04078001, 10.59004629], [1517000280000, 0.04078001, 0.04080504, 0.04078001, 0.04080504, 1.66452978], [1517000340000, 0.04080504, 0.04080504, 0.04080504, 0.04080504, 5.10955847], [1517000400000, 0.04080504, 0.04080504, 0.04080504, 0.04080504, 0.05407056], [1517000460000, 0.04080504, 0.04080504, 0.04080504, 0.04080504, 0.29866734], [1517000520000, 0.04080504, 0.04080504, 0.04078007, 0.04080504, 1.31193322], [1517000580000, 0.04080504, 0.04080504, 0.04078007, 0.04080504, 1.75964348], [1517000640000, 0.04080504, 0.04080504, 0.04080504, 0.04080504, 1.42511805], [1517000700000, 0.04080504, 0.04080504, 0.04080504, 0.04080504, 1.34787388], [1517000760000, 0.04080504, 0.04080504, 0.04080504, 0.04080504, 0.56004228], [1517000820000, 0.04080504, 0.04080504, 0.04080504, 0.04080504, 0.72745678], [1517000880000, 0.04080504, 0.04080504, 0.04080504, 0.04080504, 0.08830222], [1517000940000, 0.04078019, 0.04080504, 0.04078017, 0.04080504, 0.19546706], [1517001000000, 0.04080504, 0.04105999, 0.040782, 0.04104, 6.95956337], [1517001060000, 0.04104, 0.04119331, 0.040782, 0.04116, 4.81704992], [1517001120000, 0.04115999, 0.04115999, 0.04115999, 0.04115999, 0.24295432], [1517001180000, 0.0408394, 0.0408394, 0.0408394, 0.0408394, 0.06124947], [1517001240000, 0.0408394, 0.0408394, 0.04081001, 0.04081002, 0.94575111], [1517001300000, 0.04115398, 0.04115399, 0.04112474, 0.04112517, 0.87645284], [1517001360000, 0.04112517, 0.04115894, 0.04112517, 0.04115894, 1.45836806], [1517001420000, 0.04115893, 0.04115893, 0.040838, 0.040838, 0.17541736], [1517001480000, 0.04083803, 0.04083803, 0.04083802, 0.04083802, 1.50189802], [1517001600000, 0.04115874, 0.04115874, 0.04083805, 0.04083805, 3.40146668], [1517001660000, 0.04115871, 0.04115871, 0.04083803, 0.04115866, 5.34516378], [1517001720000, 0.04115866, 0.04115866, 0.04115863, 0.04115863, 3.90792847], [1517001780000, 0.04115863, 0.04115863, 0.04115863, 0.04115863, 0.24296258], [1517001840000, 0.04083826, 0.04083828, 0.04083826, 0.04083828, 0.07287554], [1517001900000, 0.04115399, 0.04115848, 0.04083835, 0.04083835, 3.1587072], [1517001960000, 0.04115846, 0.04115846, 0.04115841, 0.04115841, 2.42963406], [1517002020000, 0.04115841, 0.04115841, 0.0411584, 0.0411584, 5.05826581], [1517002080000, 0.0411584, 0.0411584, 0.0411584, 0.0411584, 4.21875489], [1517002140000, 0.04083861, 0.04083868, 0.0408386, 0.04083867, 5.73112878], [1517002200000, 0.04083867, 0.04115827, 0.04083867, 0.04108958, 3.62024532], [1517002260000, 0.04108958, 0.04115825, 0.04083859, 0.0411582, 3.65015306], [1517002320000, 0.04115815, 0.04115815, 0.04115815, 0.04115815, 0.0160869], [1517002380000, 0.04114, 0.04114, 0.04114, 0.04114, 0.49913896], [1517002440000, 0.0408387, 0.04113994, 0.0408387, 0.04113993, 0.61769541], [1517002500000, 0.0411399, 0.0411399, 0.04083871, 0.04083871, 1.97958416], [1517002800000, 0.040839, 0.04103999, 0.040839, 0.04103998, 1.52062352], [1517002860000, 0.04103998, 0.04103998, 0.040839, 0.040839, 0.26380956], [1517002920000, 0.040839, 0.040839, 0.040839, 0.040839, 0.0609], [1517003040000, 0.040839, 0.040839, 0.040839, 0.040839, 0.02699625], [1517003100000, 0.0410399, 0.04103994, 0.0410399, 0.04103994, 0.24366531], [1517003160000, 0.04103498, 0.04103498, 0.04103498, 0.04103498, 0.83243179], [1517003220000, 0.04103989, 0.04103989, 0.04103989, 0.04103989, 0.01605601], [1517003280000, 0.0409391, 0.04093911, 0.0409391, 0.04093911, 0.25386049], [1517003340000, 0.04093912, 0.04103986, 0.04093911, 0.04093911, 1.86186254], [1517003400000, 0.04093911, 0.04103983, 0.04093911, 0.04103981, 1.62343068], [1517003460000, 0.04093912, 0.04093912, 0.04083871, 0.04083871, 4.01545025], [1517003520000, 0.04083873, 0.04083873, 0.04083873, 0.04083873, 0.02699643], [1517003580000, 0.04083909, 0.04083909, 0.04083909, 0.04083909, 0.97723167], [1517003640000, 0.04083909, 0.04083909, 0.04083909, 0.04083909, 0.3573815], [1517003700000, 0.0408391, 0.0408391, 0.04083874, 0.04083874, 1.99043937], [1517003760000, 0.04083876, 0.0408391, 0.04083876, 0.0408391, 3.76234716], [1517003820000, 0.0408391, 0.0408391, 0.0408391, 0.0408391, 3.67945258], [1517003880000, 0.04103975, 0.04103975, 0.0408389, 0.0408389, 1.90193924], [1517003940000, 0.0408391, 0.0408391, 0.04083875, 0.04083875, 0.26016174], [1517004000000, 0.04103976, 0.04103977, 0.04084, 0.04103977, 5.48281485], [1517004060000, 0.04103974, 0.04103974, 0.04084, 0.04084, 0.85208151], [1517004180000, 0.04084, 0.04084, 0.04084, 0.04084, 3.31791993], [1517004240000, 0.04084, 0.04084, 0.04084, 0.04084, 0.25], [1517004300000, 0.04084, 0.04084, 0.04084, 0.04084, 5.20388917], [1517004360000, 0.04084, 0.04084, 0.04084, 0.04084, 0.03], [1517004420000, 0.04084, 0.04084, 0.04083999, 0.04084, 0.64716139], [1517004480000, 0.04083875, 0.04083875, 0.04083875, 0.04083875, 0.39989642], [1517004540000, 0.04083875, 0.04083875, 0.04083875, 0.04083875, 0.73644282], [1517004600000, 0.04083875, 0.0408394, 0.04083875, 0.04083875, 0.28555799], [1517004660000, 0.0408394, 0.04084, 0.0408394, 0.04084, 0.41319209], [1517004720000, 0.04083875, 0.04083875, 0.04083875, 0.04083875, 7.92527632], [1517004780000, 0.04083875, 0.0410398, 0.04083875, 0.0410398, 0.88526047], [1517004900000, 0.04084, 0.04101872, 0.04084, 0.04101872, 0.24485798], [1517004960000, 0.04083875, 0.04083875, 0.04083875, 0.04083875, 0.08755214], [1517005020000, 0.04103978, 0.04103978, 0.04083875, 0.04083875, 0.08125248], [1517005080000, 0.04083875, 0.04083875, 0.04083875, 0.04083875, 0.0202371], [1517005140000, 0.04083875, 0.04083875, 0.04083875, 0.04083875, 1.02458017], [1517005200000, 0.04083875, 0.04083875, 0.04083875, 0.04083875, 1.00432997], [1517005260000, 0.04083875, 0.04083875, 0.04083875, 0.04083875, 1.77176694], [1517005320000, 0.04083875, 0.04083875, 0.04083875, 0.04083875, 0.10088054], [1517005380000, 0.04099997, 0.04099997, 0.04083875, 0.04083875, 0.55791167], [1517005500000, 0.04085339, 0.04085339, 0.04085339, 0.04085339, 0.49825341], [1517005620000, 0.04099, 0.04099, 0.04085339, 0.04085339, 0.0268968], [1517005680000, 0.04085339, 0.04099997, 0.04085339, 0.04099997, 0.42836603], [1517005740000, 0.04099997, 0.041, 0.04099996, 0.04099996, 0.64991154], [1517005800000, 0.04099996, 0.04099996, 0.04085339, 0.04085339, 0.40727612], [1517005860000, 0.04099995, 0.04099995, 0.04085339, 0.04099995, 0.05755775], [1517005920000, 0.04085339, 0.04099995, 0.04085339, 0.04099995, 0.32356236], [1517005980000, 0.04099995, 0.04099995, 0.04099995, 0.04099995, 0.07338343], [1517006040000, 0.04099995, 0.04099995, 0.04099995, 0.04099995, 0.56025338], [1517006100000, 0.04085339, 0.04099995, 0.04085339, 0.04099995, 0.26480303], [1517006340000, 0.04099994, 0.04099994, 0.04099994, 0.04099994, 0.21407019], [1517006400000, 0.04099994, 0.04099994, 0.04099994, 0.04099994, 0.05378056], [1517006460000, 0.04099994, 0.04099994, 0.04092667, 0.04092667, 0.05378056], [1517006520000, 0.04092667, 0.04092667, 0.04092667, 0.04092667, 0.13600749], [1517006580000, 0.04092667, 0.04092667, 0.04085339, 0.04085339, 0.13636364], [1517006640000, 0.04092667, 0.04092667, 0.04092667, 0.04092667, 0.04044092], [1517006700000, 0.04092667, 0.04092667, 0.04092667, 0.04092667, 0.24433926], [1517006820000, 0.04092667, 0.04092667, 0.04085339, 0.04085339, 0.40462986], [1517006880000, 0.04085339, 0.04085339, 0.04085339, 0.04085339, 0.03952225], [1517006940000, 0.04088, 0.04088, 0.04088, 0.04088, 5.84727581], [1517007000000, 0.04088, 0.04092667, 0.04088, 0.04092667, 0.27197344], [1517007060000, 0.040899, 0.04089925, 0.040899, 0.04089925, 0.34169372], [1517007120000, 0.04089925, 0.04089925, 0.04089925, 0.04089925, 0.03001936], [1517007180000, 0.04089925, 0.04089999, 0.04089925, 0.04089999, 2.45302591], [1517007240000, 0.04092667, 0.04099995, 0.04089999, 0.04089999, 0.47212535], [1517007300000, 0.040909, 0.04099994, 0.040909, 0.04099994, 0.1123746], [1517007480000, 0.04099993, 0.04099995, 0.04099993, 0.04099995, 12.32985401], [1517007540000, 0.04099995, 0.04099996, 0.04099995, 0.04099995, 3.78844255], [1517007600000, 0.04099995, 0.04099995, 0.04099995, 0.04099995, 0.24793882], [1517007660000, 0.04099995, 0.04099995, 0.04089999, 0.04089999, 27.99812029], [1517007720000, 0.04089996, 0.04089996, 0.04089996, 0.04089996, 0.16139724], [1517007780000, 0.04089999, 0.04089999, 0.04089999, 0.04089999, 1.52266583], [1517007840000, 0.04089999, 0.04089999, 0.04089999, 0.04089999, 0.34971615], [1517007900000, 0.04085339, 0.04089999, 0.04085339, 0.04089999, 4.08525424], [1517008020000, 0.04085339, 0.04085339, 0.04085339, 0.04085339, 0.41474576], [1517008080000, 0.04085339, 0.04085339, 0.0408, 0.0408, 4.55793805], [1517008140000, 0.0408, 0.0408, 0.0408, 0.0408, 0.71594577], [1517008200000, 0.0408, 0.0408, 0.0408, 0.0408, 0.51409389], [1517008260000, 0.0408, 0.0408, 0.04078501, 0.0408, 0.72619239], [1517008320000, 0.0408, 0.04085339, 0.0408, 0.04085339, 0.90300382], [1517008380000, 0.04085339, 0.04085339, 0.04085339, 0.04085339, 0.05404416], [1517008440000, 0.04085339, 0.04085339, 0.04085339, 0.04085339, 0.60040965], [1517008500000, 0.04085339, 0.04085339, 0.04085339, 0.04085339, 0.18993733], [1517008620000, 0.04085339, 0.04085339, 0.04085339, 0.04085339, 0.12376056], [1517008680000, 0.0408, 0.04085339, 0.04078501, 0.04085339, 2.57090123], [1517008860000, 0.0408, 0.04089998, 0.0408, 0.04089998, 5.64521752], [1517008920000, 0.04089999, 0.04089999, 0.04089999, 0.04089999, 0.08997304], [1517009040000, 0.0408267, 0.04089999, 0.04078501, 0.0407909, 6.47068121], [1517009100000, 0.04089999, 0.04089999, 0.0407909, 0.0407909, 5.5089], [1517009160000, 0.04078501, 0.04089, 0.04078501, 0.04089, 0.35741653], [1517009220000, 0.04089, 0.04089, 0.04089, 0.04089, 0.07988106], [1517009340000, 0.04082, 0.04082, 0.04082, 0.04082, 0.18665468], [1517009400000, 0.04082, 0.04089, 0.04082, 0.04089, 8.34032141], [1517009460000, 0.04089, 0.04089999, 0.04089, 0.04089999, 5.003229], [1517009520000, 0.04089999, 0.04089999, 0.04089999, 0.04089999, 5.41107573], [1517009580000, 0.04089999, 0.04089999, 0.04089, 0.04089, 0.24239147], [1517009640000, 0.04089, 0.04089, 0.04089, 0.04089, 0.0270281], [1517009700000, 0.04089, 0.04089999, 0.04079092, 0.04089999, 3.19611425], [1517009760000, 0.04089, 0.04089, 0.04079092, 0.04089, 2.43633795], [1517009820000, 0.04089, 0.04089999, 0.04089, 0.04089999, 8.12568601], [1517009880000, 0.04089, 0.04089999, 0.04089, 0.04089, 0.96791884], [1517009940000, 0.04089999, 0.04089999, 0.04089999, 0.04089999, 31.56216169], [1517010000000, 0.04089999, 0.04089999, 0.04089999, 0.04089999, 0.02696278], [1517010060000, 0.04089002, 0.04089999, 0.04089001, 0.04089999, 0.07580136], [1517010120000, 0.04089999, 0.04089999, 0.0407911, 0.04089999, 2.35577369], [1517010180000, 0.04089999, 0.04089999, 0.04089999, 0.04089999, 0.02682763], [1517010300000, 0.040899, 0.040899, 0.040899, 0.040899, 0.68028847], [1517010360000, 0.040899, 0.040899, 0.040899, 0.040899, 3.43428802], [1517010420000, 0.040899, 0.040899, 0.040899, 0.040899, 1.12056769], [1517010480000, 0.040899, 0.040899, 0.040899, 0.040899, 9.43325856], [1517010540000, 0.040899, 0.04089999, 0.040899, 0.04089999, 0.90951218], [1517010600000, 0.04089999, 0.04089999, 0.04089999, 0.04089999, 12.81006383], [1517010660000, 0.04089999, 0.04089999, 0.04089999, 0.04089999, 0.34030453], [1517010720000, 0.04089999, 0.04089999, 0.04089999, 0.04089999, 0.34094843], [1517010840000, 0.04087903, 0.04087903, 0.04087903, 0.04087903, 0.13728402], [1517010900000, 0.04087903, 0.04087903, 0.04087903, 0.04087903, 0.0514293], [1517010960000, 0.04087903, 0.04089999, 0.04087903, 0.04089999, 0.05405611], [1517011020000, 0.04079114, 0.04089999, 0.0407909, 0.04089999, 3.59900374], [1517011080000, 0.04089999, 0.04089999, 0.04089998, 0.04089998, 0.0540564], [1517011140000, 0.04079091, 0.04089955, 0.04079091, 0.04089955, 0.14737737], [1517011200000, 0.04089955, 0.04089955, 0.04089955, 0.04089955, 0.02702812], [1517011260000, 0.04079091, 0.04089955, 0.04072529, 0.04089955, 5.17042816], [1517011320000, 0.04072552, 0.04072559, 0.04072552, 0.04072559, 0.23779617], [1517011380000, 0.0407256, 0.0411, 0.04072528, 0.0411, 155.92241256], [1517011440000, 0.0411, 0.04113987, 0.0411, 0.04113987, 41.95547148], [1517011500000, 0.0411, 0.0411, 0.0411, 0.0411, 11.96115158], [1517011560000, 0.0411, 0.0411, 0.0411, 0.0411, 0.5237124], [1517011620000, 0.0411, 0.0411, 0.0411, 0.0411, 9.07173016], [1517011680000, 0.0411, 0.0411, 0.0411, 0.0411, 0.84030783], [1517011740000, 0.0411, 0.04113987, 0.0411, 0.0411, 12.60842313], [1517011800000, 0.0411, 0.0411, 0.0411, 0.0411, 0.48954189], [1517011980000, 0.0411, 0.04113987, 0.040808, 0.040808, 1.66198479], [1517012040000, 0.04112084, 0.04113987, 0.04112084, 0.04113987, 1.01047903], [1517012280000, 0.0409, 0.0409, 0.0409, 0.0409, 0.028], [1517012580000, 0.0409, 0.0409, 0.0409, 0.0409, 0.04067675], [1517012640000, 0.0409, 0.0409, 0.0409, 0.0409, 0.07395003], [1517012700000, 0.04113986, 0.04113986, 0.04113986, 0.04113986, 0.16922856], [1517012760000, 0.04090001, 0.04116144, 0.0409, 0.04116144, 1.0369659], [1517012940000, 0.0411614, 0.0411614, 0.04090012, 0.04116139, 0.57999537], [1517013000000, 0.0411614, 0.04116142, 0.0411614, 0.04116142, 6.60031184], [1517013060000, 0.04116141, 0.04116142, 0.041, 0.041, 0.68003132], [1517013120000, 0.041, 0.04116141, 0.041, 0.041, 0.42482776], [1517013180000, 0.041, 0.041, 0.0409, 0.0409, 0.94048193], [1517013240000, 0.04090001, 0.04116142, 0.04090001, 0.04116142, 0.87832374], [1517013300000, 0.04090003, 0.04090003, 0.04090003, 0.04090003, 1.54232253], [1517013360000, 0.04090001, 0.04090001, 0.04090001, 0.04090001, 0.05102358], [1517013420000, 0.04116141, 0.04116141, 0.0409, 0.0409, 0.89864569], [1517013480000, 0.04090001, 0.04090001, 0.04090001, 0.04090001, 0.41574984], [1517013540000, 0.04090002, 0.04116138, 0.04090001, 0.0410307, 1.78065702], [1517013600000, 0.0410307, 0.0410307, 0.04083903, 0.04090002, 69.35513941], [1517013660000, 0.04090002, 0.04090002, 0.04090002, 0.04090002, 0.09346226], [1517013720000, 0.04090002, 0.04090002, 0.04083902, 0.04083902, 0.40340144], [1517013780000, 0.04083902, 0.04083902, 0.04083902, 0.04083902, 0.47997971], [1517013840000, 0.04083901, 0.04083901, 0.04083285, 0.04083285, 0.11100371], [1517013900000, 0.04083902, 0.04103068, 0.04083902, 0.04103068, 0.8928944], [1517013960000, 0.04103067, 0.04103067, 0.04083902, 0.04083902, 2.52506188], [1517014020000, 0.04083902, 0.04103067, 0.04083285, 0.04103067, 0.56046667], [1517014080000, 0.04103067, 0.04103067, 0.04082, 0.04082, 0.3645499], [1517014140000, 0.04080001, 0.04082, 0.04080001, 0.04082, 0.88955089], [1517014200000, 0.04082, 0.04082, 0.04082, 0.04082, 0.11837986], [1517014260000, 0.04082, 0.04082, 0.04082, 0.04082, 0.39739722], [1517014320000, 0.04082, 0.04082, 0.04081003, 0.04081003, 0.07783034], [1517014380000, 0.04082, 0.04082, 0.04082, 0.04082, 1.33147999], [1517014860000, 0.04093034, 0.04093034, 0.04093034, 0.04093034, 0.01766212], [1517014920000, 0.04093033, 0.04093034, 0.04093033, 0.04093034, 0.29729078], [1517014980000, 0.04083, 0.04083, 0.04083, 0.04083, 0.03047741], [1517015100000, 0.04093033, 0.04103069, 0.04093033, 0.04103069, 2.10215184], [1517015220000, 0.04103068, 0.04103069, 0.04103068, 0.04103069, 0.050654], [1517015280000, 0.04103068, 0.04103068, 0.04103068, 0.04103068, 0.06714085], [1517015340000, 0.04103068, 0.04103068, 0.04093033, 0.04093033, 0.40458837], [1517015400000, 0.04100203, 0.04100204, 0.04083717, 0.04083717, 9.53203454], [1517015460000, 0.04083222, 0.04083222, 0.04083221, 0.04083221, 7.49705405], [1517015520000, 0.04083, 0.0408301, 0.04083, 0.0408301, 7.39220454], [1517015580000, 0.0408302, 0.0408305, 0.04082, 0.04082, 6.49444134], [1517015640000, 0.04081006, 0.040815, 0.04081, 0.04081, 5.07064261], [1517015700000, 0.04081, 0.040812, 0.04081, 0.040812, 0.4424011], [1517015760000, 0.04082, 0.04100202, 0.04081, 0.04100202, 0.70047004], [1517015820000, 0.04081, 0.04103065, 0.04081, 0.04103065, 7.45591007], [1517015880000, 0.04103065, 0.04103069, 0.04103065, 0.04103069, 5.24168006], [1517015940000, 0.04111851, 0.041134, 0.04111851, 0.041134, 0.94032076], [1517016060000, 0.04083068, 0.04083068, 0.04083068, 0.04083068, 0.29820125], [1517016120000, 0.04113594, 0.04113594, 0.04113594, 0.04113594, 0.30084531], [1517016180000, 0.04113594, 0.04113594, 0.04113594, 0.04113594, 1.96008896], [1517016240000, 0.04113594, 0.04113594, 0.04113594, 0.04113594, 9.96838638], [1517016300000, 0.04113594, 0.04114097, 0.04113594, 0.04113594, 1.15161801], [1517016360000, 0.04113594, 0.04113594, 0.04113594, 0.04113594, 0.20033433], [1517016420000, 0.04113594, 0.04114095, 0.04113594, 0.04113594, 1.46432539], [1517016480000, 0.04083596, 0.04083596, 0.04081, 0.04081, 75.14054971], [1517016540000, 0.04082002, 0.04112599, 0.04081, 0.04112599, 28.43951373], [1517016600000, 0.04082, 0.04111891, 0.04082, 0.04111891, 2.46416504], [1517016660000, 0.041131, 0.041131, 0.041131, 0.041131, 0.0171197], [1517017080000, 0.04110893, 0.04110894, 0.04082858, 0.04110887, 2.27665469], [1517017140000, 0.04082858, 0.04082858, 0.04082858, 0.04082858, 0.04865853], [1517017440000, 0.04082858, 0.04082858, 0.04082373, 0.04082373, 0.04530124], [1517017500000, 0.04096382, 0.04111886, 0.04096382, 0.04111886, 0.21867204], [1517017560000, 0.04111886, 0.04111887, 0.04111886, 0.04111887, 0.01665351], [1517017680000, 0.04111397, 0.04111397, 0.04111397, 0.04111397, 0.05105737], [1517017740000, 0.04111196, 0.04111197, 0.04081795, 0.04081795, 0.61806131], [1517017800000, 0.04081001, 0.0408105, 0.04081, 0.0408105, 5.95319996], [1517017920000, 0.04094067, 0.04094067, 0.04081051, 0.04081051, 0.29683706], [1517018040000, 0.04081001, 0.041102, 0.04081001, 0.04081002, 0.70132698], [1517018100000, 0.04081002, 0.04081002, 0.04081001, 0.04081002, 1.83847981], [1517018160000, 0.04081002, 0.04081002, 0.04081001, 0.04081002, 0.69205543], [1517018220000, 0.04110199, 0.04110199, 0.04110199, 0.04110199, 0.48659432], [1517018340000, 0.0408105, 0.0408105, 0.0408105, 0.0408105, 0.4089], [1517018400000, 0.04110166, 0.04110166, 0.04110166, 0.04110166, 0.97319812], [1517018460000, 0.04110154, 0.04110154, 0.04110152, 0.04110152, 0.46445613], [1517018520000, 0.04110154, 0.0411555, 0.04110154, 0.04110154, 77.81658154], [1517018580000, 0.04084956, 0.04084956, 0.04084956, 0.04084956, 0.23953708], [1517018640000, 0.04084956, 0.04085529, 0.04084956, 0.04085529, 1.47560379], [1517018760000, 0.04107371, 0.04107376, 0.04107371, 0.04107376, 0.42809661], [1517019000000, 0.04107376, 0.04115584, 0.04085198, 0.04085198, 0.31932476], [1517019060000, 0.04084798, 0.04084798, 0.04084798, 0.04084798, 0.0495037], [1517019120000, 0.04083621, 0.04083621, 0.040831, 0.040831, 0.07279098], [1517019180000, 0.04083302, 0.04083302, 0.04083302, 0.04083302, 0.01990233], [1517019240000, 0.04083306, 0.04083306, 0.04083306, 0.04083306, 0.08721067], [1517019420000, 0.04112234, 0.04112235, 0.0408263, 0.0408263, 8.0615122], [1517019480000, 0.0408555, 0.0408555, 0.0408555, 0.0408555, 1.0], [1517019540000, 0.04111624, 0.04114599, 0.04111624, 0.04114599, 4.2124168], [1517019600000, 0.04114422, 0.04115582, 0.04114422, 0.04115582, 0.30989163], [1517019660000, 0.041151, 0.041151, 0.041151, 0.041151, 0.03948624], [1517019720000, 0.04099624, 0.04099624, 0.04099624, 0.04099624, 0.05183584], [1517019780000, 0.04085551, 0.04085551, 0.0408555, 0.0408555, 4.49145598], [1517019900000, 0.0408555, 0.0408555, 0.0408555, 0.0408555, 1.00690424], [1517019960000, 0.04099622, 0.04099624, 0.04099622, 0.04099624, 2.37798487], [1517020020000, 0.04111695, 0.04111695, 0.041112, 0.041112, 0.0822388], [1517020140000, 0.04113998, 0.041183, 0.04086458, 0.04086594, 1.97226351], [1517020260000, 0.0408555, 0.04116281, 0.0408555, 0.04116281, 0.09065569], [1517020320000, 0.04114946, 0.04114947, 0.04085551, 0.04085555, 8.17932461], [1517020380000, 0.04085556, 0.041153, 0.04085552, 0.04085552, 0.35983989], [1517020440000, 0.04117897, 0.04117897, 0.0408555, 0.0408555, 6.56219582], [1517020500000, 0.0408555, 0.04114299, 0.0408555, 0.0408555, 0.49233958], [1517020560000, 0.0408555, 0.04113499, 0.0408555, 0.04113499, 0.6580421], [1517020620000, 0.04101023, 0.04101023, 0.04089084, 0.04089084, 1.14423737], [1517020740000, 0.04091023, 0.04091023, 0.04091023, 0.04091023, 0.02], [1517020800000, 0.04091023, 0.04101022, 0.0408555, 0.0408555, 16.25582105], [1517020860000, 0.0408555, 0.04115097, 0.0408555, 0.04115097, 1.20457138], [1517020920000, 0.0408555, 0.04111878, 0.0408555, 0.04110894, 0.78802625], [1517021040000, 0.04111397, 0.041134, 0.04111397, 0.041134, 0.03955123], [1517021100000, 0.04111397, 0.041119, 0.04111397, 0.04111897, 0.72967845], [1517021160000, 0.0408555, 0.04109698, 0.0408555, 0.04109698, 2.78800163], [1517021340000, 0.04090927, 0.04090928, 0.04086, 0.04090927, 2.42677025], [1517021400000, 0.04090927, 0.04090927, 0.04086, 0.04086, 0.87348355], [1517021460000, 0.04086, 0.04088463, 0.04086, 0.04088463, 1.13083006], [1517021520000, 0.04086, 0.04088463, 0.04081, 0.040812, 10.74184352], [1517021580000, 0.04088462, 0.04088463, 0.04088462, 0.04088463, 0.03960401], [1517021640000, 0.04088463, 0.04090927, 0.04088463, 0.04090927, 1.23229693], [1517021760000, 0.04090927, 0.04090927, 0.04081, 0.04081, 9.93965518], [1517021820000, 0.04081, 0.04090927, 0.04081, 0.04090927, 2.47961331], [1517021880000, 0.04083, 0.04090927, 0.04083, 0.04090927, 0.11282591], [1517021940000, 0.04090927, 0.04090927, 0.04090927, 0.04090927, 0.12051471], [1517022000000, 0.04090927, 0.04090927, 0.04083001, 0.04090927, 1.09270229], [1517022060000, 0.04090927, 0.04090927, 0.04090927, 0.04090927, 0.35731749], [1517022120000, 0.04090927, 0.04090927, 0.04090926, 0.04090927, 2.31716833], [1517022180000, 0.04090927, 0.04090927, 0.04083, 0.04083, 0.29791684], [1517022240000, 0.04083, 0.04090927, 0.04083, 0.04090927, 0.90727155], [1517022300000, 0.04090927, 0.04090927, 0.04083, 0.04083, 0.55916738], [1517022360000, 0.04090927, 0.04090927, 0.04090927, 0.04090927, 0.03954947], [1517022420000, 0.04090926, 0.04090927, 0.04083, 0.0409, 0.71725537], [1517022480000, 0.04083, 0.0409, 0.04083, 0.0409, 0.46982237], [1517022540000, 0.04083, 0.0409, 0.04083, 0.0409, 0.44055147], [1517022600000, 0.04083, 0.0409, 0.04083, 0.0409, 1.0275972], [1517022660000, 0.0409, 0.04090927, 0.04083, 0.04090927, 33.50885904], [1517022720000, 0.04090927, 0.04090927, 0.04090927, 0.04090927, 0.10442197], [1517022780000, 0.04110395, 0.04119337, 0.04110395, 0.04110395, 5.75430273], [1517022840000, 0.04110395, 0.04110395, 0.04110395, 0.04110395, 7.55428814], [1517022900000, 0.04090926, 0.04113497, 0.04090926, 0.04113497, 0.48888638], [1517022960000, 0.04113495, 0.04119, 0.04113495, 0.04119, 0.03970065], [1517023020000, 0.04083001, 0.04113495, 0.04083001, 0.04113495, 0.39174517], [1517023080000, 0.04112692, 0.04112692, 0.04112692, 0.04112692, 0.12155111], [1517023140000, 0.04112606, 0.04112606, 0.04084001, 0.04112499, 0.08143896], [1517023200000, 0.04112414, 0.04112414, 0.04084, 0.04112414, 0.28551503], [1517023260000, 0.0411241, 0.04112411, 0.0411241, 0.04112411, 0.03973044], [1517023320000, 0.04084006, 0.04112326, 0.04084006, 0.04112326, 10.61426481], [1517023380000, 0.04109999, 0.04109999, 0.04109999, 0.04109999, 0.03973639], [1517023440000, 0.04105272, 0.04105273, 0.04105272, 0.04105273, 4.8939407], [1517023560000, 0.04105273, 0.04105273, 0.04105273, 0.04105273, 0.03979956], [1517023620000, 0.04105273, 0.04105273, 0.04105273, 0.04105273, 0.04015533], [1517023680000, 0.04105273, 0.04105273, 0.04105273, 0.04105273, 0.04026404], [1517023740000, 0.04105273, 0.04105273, 0.04105273, 0.04105273, 0.03979955], [1517023800000, 0.04105273, 0.04105273, 0.04105273, 0.04105273, 0.04004272], [1517023860000, 0.04105273, 0.04105273, 0.04105273, 0.04105273, 0.04027618], [1517023920000, 0.0409, 0.04105273, 0.0409, 0.04105273, 0.08882217], [1517023980000, 0.0409, 0.0409, 0.0409, 0.0409, 0.04960095], [1517024040000, 0.04105273, 0.04105273, 0.0409, 0.0409, 6.15711491], [1517024100000, 0.0409, 0.04105273, 0.0409, 0.0409, 0.13407216], [1517024160000, 0.0409, 0.04105273, 0.0409, 0.04105273, 2.74039955], [1517024220000, 0.0409, 0.04105271, 0.0409, 0.0409, 0.11150198], [1517024280000, 0.0409, 0.04105271, 0.0409, 0.04105271, 0.37604731], [1517024340000, 0.04105271, 0.04105271, 0.04105271, 0.04105271, 0.04049314], [1517024400000, 0.0409, 0.0409, 0.0409, 0.0409, 0.05391198], [1517024460000, 0.04105271, 0.04105271, 0.0409, 0.0409, 0.38520376], [1517024520000, 0.0410527, 0.0410527, 0.0410527, 0.0410527, 0.0405014], [1517024580000, 0.0409999, 0.0410527, 0.0409999, 0.0410527, 16.53169439], [1517024640000, 0.0410527, 0.0410527, 0.0409, 0.0409, 9.24671444], [1517024700000, 0.0409, 0.0410527, 0.0409, 0.0409, 0.73211905], [1517024760000, 0.0409, 0.0410527, 0.0409, 0.0410527, 0.73607497], [1517024820000, 0.0409, 0.0409, 0.0409, 0.0409, 0.10100268], [1517024880000, 0.0410527, 0.0410527, 0.0409, 0.0409, 0.0618706], [1517024940000, 0.0410527, 0.0410527, 0.0410527, 0.0410527, 0.04073584], [1517025000000, 0.0410527, 0.0410527, 0.0410527, 0.0410527, 0.0407538], [1517025060000, 0.0409, 0.0410527, 0.0409, 0.0409, 0.37166772], [1517025120000, 0.0409, 0.0410527, 0.0409, 0.0410527, 0.40141669], [1517025180000, 0.0410527, 0.0410527, 0.0410527, 0.0410527, 0.04061936], [1517025240000, 0.0409, 0.04105268, 0.0409, 0.04105268, 0.14108558], [1517025300000, 0.04095, 0.04095, 0.04095, 0.04095, 0.18920707], [1517025360000, 0.0410527, 0.0410527, 0.04095, 0.04095, 0.06720803], [1517025420000, 0.04095, 0.0410527, 0.04095, 0.04095, 0.16031792], [1517025480000, 0.04095, 0.04105269, 0.04095, 0.04105269, 1.86016606], [1517025540000, 0.0410527, 0.0410527, 0.0410527, 0.0410527, 0.7605553], [1517025600000, 0.0410527, 0.0410527, 0.04095, 0.04095, 2.70248646], [1517025660000, 0.04095, 0.0410527, 0.04095, 0.04095, 4.80649435], [1517025720000, 0.04095, 0.04095, 0.04095, 0.04095, 0.12701243], [1517025780000, 0.04105269, 0.0410527, 0.04095, 0.04095, 1.17289532], [1517025840000, 0.04095, 0.0410527, 0.04095, 0.04095, 1.48195183], [1517025900000, 0.04105269, 0.04105269, 0.04105269, 0.04105269, 0.04083146], [1517025960000, 0.04095, 0.0410527, 0.04095, 0.0410527, 3.50141746], [1517026020000, 0.04095, 0.0410527, 0.04095, 0.0410527, 0.24370921], [1517026080000, 0.04095, 0.0410527, 0.0409, 0.0410527, 0.24828239], [1517026140000, 0.0410527, 0.0410527, 0.0409, 0.0409, 0.11175851], [1517026200000, 0.040886, 0.0410527, 0.040886, 0.0409, 0.68621803], [1517026260000, 0.0409, 0.0410527, 0.040886, 0.040886, 0.15536676], [1517026320000, 0.0410527, 0.0410527, 0.0408875, 0.0408875, 0.18934837], [1517026380000, 0.0410527, 0.0410527, 0.0410527, 0.0410527, 0.04036698], [1517026440000, 0.0410527, 0.0410527, 0.0410527, 0.0410527, 0.09361414], [1517026500000, 0.0408875, 0.0410527, 0.0408875, 0.0408875, 2.92820507], [1517026560000, 0.040886, 0.0408875, 0.040886, 0.0408875, 0.29761575], [1517026620000, 0.040886, 0.0408875, 0.040886, 0.0408875, 0.11357688], [1517026740000, 0.0408875, 0.04105272, 0.04081, 0.04081, 5.87988363], [1517026800000, 0.04081, 0.04105268, 0.04081, 0.04105268, 0.51736694], [1517026860000, 0.04105267, 0.04105267, 0.04105267, 0.04105267, 0.0590512], [1517026920000, 0.04081001, 0.04081001, 0.04081001, 0.04081001, 0.05970449], [1517026980000, 0.04081001, 0.04081001, 0.04081, 0.04081001, 20.24540224], [1517027040000, 0.04081001, 0.04081001, 0.04081, 0.04081, 0.16476799], [1517027100000, 0.04081001, 0.04105259, 0.04081, 0.04081, 0.26511879], [1517027220000, 0.04081, 0.04081001, 0.04081, 0.04081001, 0.24643794], [1517027280000, 0.04081, 0.04081001, 0.04081, 0.04081, 3.30261579], [1517027340000, 0.04081001, 0.04081001, 0.04081001, 0.04081001, 0.16277379], [1517027400000, 0.04081, 0.04081001, 0.04081, 0.04081001, 0.34906903], [1517027460000, 0.04081001, 0.04081001, 0.04081001, 0.04081001, 0.07277388], [1517027520000, 0.04081, 0.04081, 0.04081, 0.04081, 0.28173256], [1517027580000, 0.04081001, 0.04081001, 0.04081001, 0.04081001, 0.83968217], [1517027700000, 0.04081001, 0.04081001, 0.04081001, 0.04081001, 0.49007596], [1517027820000, 0.04081001, 0.04081001, 0.04081001, 0.04081001, 1.47393121], [1517027880000, 0.04081001, 0.04081001, 0.04081, 0.04081, 5.12110641], [1517027940000, 0.04081001, 0.04081001, 0.04081001, 0.04081001, 0.14702275], [1517028000000, 0.0410527, 0.0410527, 0.0410527, 0.0410527, 0.39185371], [1517028060000, 0.0410527, 0.04105273, 0.0410527, 0.04105273, 1.16324503], [1517028120000, 0.04105273, 0.04105273, 0.04105273, 0.04105273, 1.09240919], [1517028180000, 0.04107574, 0.04107574, 0.04105273, 0.04105273, 0.6666281], [1517028240000, 0.04105273, 0.04105273, 0.04105273, 0.04105273, 0.23489973], [1517028360000, 0.04092578, 0.04105273, 0.04092578, 0.04105273, 0.01828782], [1517028480000, 0.04105272, 0.04105272, 0.04105272, 0.04105272, 0.84230108], [1517028540000, 0.04105273, 0.04105273, 0.04105273, 0.04105273, 0.07343334], [1517028600000, 0.04086789, 0.04107696, 0.040811, 0.04107696, 0.52721026], [1517028660000, 0.040811, 0.040811, 0.040811, 0.040811, 0.24109271], [1517028720000, 0.040811, 0.040811, 0.040811, 0.040811, 1.22375372], [1517028840000, 0.040811, 0.040811, 0.040811, 0.040811, 0.09711], [1517028900000, 0.04094378, 0.04107655, 0.040811, 0.04107653, 1.19499218], [1517028960000, 0.040811, 0.040811, 0.040811, 0.040811, 0.01867139], [1517029140000, 0.040811, 0.040811, 0.040811, 0.040811, 1.08351789], [1517029320000, 0.04108997, 0.04108997, 0.040888, 0.040888, 0.22460719], [1517029380000, 0.040888, 0.040888, 0.040888, 0.040888, 0.5766958], [1517029440000, 0.040811, 0.040811, 0.040811, 0.040811, 2.67304459], [1517029500000, 0.04107092, 0.04107092, 0.04107092, 0.04107092, 0.025], [1517029560000, 0.040811, 0.040811, 0.04081, 0.04081, 23.0], [1517029680000, 0.04097092, 0.04107089, 0.04097092, 0.04107089, 2.4682235], [1517029740000, 0.04081001, 0.04081001, 0.04081, 0.04081, 2.55210257], [1517029860000, 0.04081, 0.04081001, 0.04081, 0.04081, 0.69134211], [1517029920000, 0.04081, 0.04081001, 0.04081, 0.04081001, 8.32013636], [1517030100000, 0.04109595, 0.04109595, 0.04109595, 0.04109595, 0.48666536], [1517030160000, 0.04109594, 0.04109594, 0.04081004, 0.04081004, 0.26345618], [1517030280000, 0.04081005, 0.04081005, 0.04081005, 0.04081005, 0.19895178], [1517030340000, 0.04081002, 0.04081002, 0.04081002, 0.04081002, 0.02282456], [1517030400000, 0.04081006, 0.04108599, 0.04081005, 0.04108597, 3.48646106], [1517030580000, 0.04108099, 0.04108099, 0.04108099, 0.04108099, 0.04131751], [1517030700000, 0.04081011, 0.04081011, 0.04081005, 0.04081011, 3.81270481], [1517030760000, 0.04081011, 0.04081011, 0.04081011, 0.04081011, 0.05403114], [1517030820000, 0.04081011, 0.04081011, 0.04081011, 0.04081011, 0.05403114], [1517030880000, 0.04081011, 0.04081011, 0.04081011, 0.04081011, 0.78245062], [1517030940000, 0.04081011, 0.04081011, 0.04081005, 0.04081005, 0.38415509], [1517031000000, 0.04107199, 0.04107199, 0.04081005, 0.04081005, 3.69607054], [1517031060000, 0.04081005, 0.04107291, 0.04081005, 0.04107291, 0.05864332], [1517031120000, 0.04081005, 0.04081005, 0.04081005, 0.04081005, 10.08328], [1517031180000, 0.04107281, 0.04107281, 0.04107281, 0.04107281, 0.34946864], [1517031240000, 0.04107274, 0.04107274, 0.04081009, 0.04081009, 0.57245877], [1517031300000, 0.04081009, 0.04107266, 0.04081009, 0.04081009, 0.64554871], [1517031420000, 0.04081009, 0.04081009, 0.04081009, 0.04081009, 0.05038804], [1517031480000, 0.04081009, 0.04081009, 0.04081009, 0.04081009, 2.57222249], [1517031600000, 0.0410728, 0.0410728, 0.04081009, 0.04081009, 0.39991921], [1517031660000, 0.04081009, 0.04107274, 0.04081005, 0.04081005, 39.19330591], [1517031720000, 0.04081005, 0.04081005, 0.04081005, 0.04081005, 11.85002213], [1517031780000, 0.04081005, 0.04081005, 0.04081, 0.04081, 16.91369151], [1517031840000, 0.04081, 0.04081, 0.04081, 0.04081, 84.8797176], [1517031900000, 0.04081, 0.04081, 0.04081, 0.04081, 0.1334], [1517031960000, 0.04106219, 0.04106219, 0.04081, 0.04081, 0.04407604], [1517032020000, 0.04081006, 0.04081006, 0.04081006, 0.04081006, 0.23944078], [1517032080000, 0.04081006, 0.041042, 0.04081, 0.041042, 11.2533887], [1517032140000, 0.04081, 0.04081, 0.04081, 0.04081, 0.04982694], [1517032200000, 0.04104176, 0.04104176, 0.04104176, 0.04104176, 0.50250299], [1517032260000, 0.04081001, 0.04081001, 0.04081001, 0.04081001, 0.125732], [1517032320000, 0.04081001, 0.04081001, 0.04081, 0.04081, 10.64048059], [1517032380000, 0.04081, 0.04103595, 0.04081, 0.04103594, 0.14912512], [1517032500000, 0.04081, 0.04081, 0.04081, 0.04081, 0.7], [1517032560000, 0.04081, 0.04081, 0.04081, 0.04081, 0.60657334], [1517032740000, 0.04083, 0.04083, 0.04083, 0.04083, 0.16124677], [1517032800000, 0.04083, 0.04103195, 0.04083, 0.04103195, 0.58014395], [1517032860000, 0.04103194, 0.04103194, 0.04103193, 0.04103193, 0.18319354], [1517032920000, 0.04103193, 0.04103193, 0.04083, 0.04083, 6.7459117], [1517032980000, 0.04083, 0.04083, 0.04083, 0.04083, 1.24155961], [1517033040000, 0.04084, 0.04103594, 0.04084, 0.04103594, 2.86596303], [1517033100000, 0.04103594, 0.04103594, 0.04084, 0.04084, 7.5329481], [1517033160000, 0.04084, 0.04084, 0.04084, 0.04084, 0.0201], [1517033220000, 0.04084, 0.04084, 0.04081, 0.04081, 0.02699559], [1517033340000, 0.04081, 0.04081, 0.04081, 0.04081, 0.34663112], [1517033400000, 0.04081, 0.0410359, 0.04081, 0.04081, 142.69682797], [1517033460000, 0.04081, 0.04081, 0.04081, 0.04081, 0.52473567], [1517033520000, 0.04081, 0.04081, 0.04081, 0.04081, 5.23692224], [1517033580000, 0.04081, 0.04081, 0.04081, 0.04081, 0.48383741], [1517033640000, 0.040811, 0.040811, 0.040811, 0.040811, 3.16112226], [1517033700000, 0.04099999, 0.04099999, 0.04099999, 0.04099999, 0.09731772], [1517033760000, 0.040811, 0.04099994, 0.040811, 0.040811, 0.07293062], [1517033820000, 0.040812, 0.04099991, 0.040812, 0.040812, 0.15402822], [1517033880000, 0.040813, 0.040813, 0.040813, 0.040813, 0.05402756], [1517033940000, 0.04081301, 0.04099975, 0.04081301, 0.04081301, 6.82525079], [1517034000000, 0.04081301, 0.04081301, 0.04081, 0.04081, 0.85629399], [1517034060000, 0.04099969, 0.04099969, 0.04081, 0.04081, 7.87169801], [1517034120000, 0.04081, 0.04081, 0.04081, 0.04081, 0.32003087], [1517034180000, 0.04081, 0.04082, 0.04081, 0.04082, 1.24156775], [1517034240000, 0.04081, 0.04082, 0.04081, 0.04081, 4.36711934], [1517034300000, 0.04082, 0.04082, 0.04082, 0.04082, 0.94836648], [1517034360000, 0.04082, 0.04082, 0.04082, 0.04082, 1.38463353], [1517034420000, 0.04082, 0.04082, 0.04082, 0.04082, 0.05401764], [1517034480000, 0.04082, 0.04082, 0.04082, 0.04082, 0.05401764], [1517034540000, 0.04082, 0.04082, 0.04082, 0.04082, 0.2653429], [1517034600000, 0.04082, 0.04082, 0.04081, 0.04081, 1.36968792], [1517034660000, 0.04081001, 0.04095254, 0.04081, 0.04095254, 2.67458981], [1517034720000, 0.04081, 0.04081, 0.04081, 0.04081, 0.27653663], [1517034780000, 0.04095253, 0.04095253, 0.04081, 0.04081, 0.9067314], [1517034840000, 0.04081, 0.04095254, 0.04081, 0.04081, 58.05532261], [1517034900000, 0.04081, 0.04095253, 0.04081, 0.04095253, 2.33183112], [1517034960000, 0.04095253, 0.04095253, 0.04081, 0.04081, 0.29596497], [1517035020000, 0.04079814, 0.04079814, 0.04072, 0.04072, 115.06206718], [1517035080000, 0.0407201, 0.0407201, 0.04072, 0.04072, 0.08014866], [1517035140000, 0.04072, 0.04072, 0.04072, 0.04072, 1.71905697], [1517035200000, 0.04072, 0.04072, 0.04072, 0.04072, 3.24643928], [1517035260000, 0.04072, 0.04072, 0.04072, 0.04072, 11.31089824], [1517035320000, 0.04072, 0.04072, 0.04072, 0.04072, 11.56543291], [1517035380000, 0.04072, 0.04072, 0.04072, 0.04072, 1.0541263], [1517035440000, 0.04072, 0.04072, 0.04072, 0.04072, 4.04941826], [1517035500000, 0.04072, 0.04090762, 0.04072, 0.04090761, 5.20745564], [1517035560000, 0.04072, 0.04072, 0.04072, 0.04072, 3.75004974], [1517035680000, 0.04072, 0.04072, 0.04072, 0.04072, 0.60566683], [1517035860000, 0.04072, 0.04072113, 0.04072, 0.04072, 5.22996758], [1517035920000, 0.04072, 0.04072, 0.04072, 0.04072, 3.87743004], [1517035980000, 0.04072, 0.04072, 0.04072, 0.04072, 0.02918438], [1517036040000, 0.04093229, 0.04097182, 0.04093229, 0.04097182, 0.50250299], [1517036160000, 0.04072, 0.04072, 0.04072, 0.04072, 0.05011589], [1517036220000, 0.04072, 0.04072, 0.04072, 0.04072, 0.1107152], [1517036280000, 0.04072, 0.04072, 0.04072, 0.04072, 0.02707515], [1517036340000, 0.04072, 0.04072, 0.04072, 0.04072, 0.27003714], [1517036400000, 0.04072, 0.04072, 0.04072, 0.04072, 0.46664717], [1517036460000, 0.04072, 0.04072, 0.04072, 0.04072, 0.74796878], [1517036520000, 0.04072, 0.04072, 0.04072, 0.04072, 0.02707515], [1517036640000, 0.04072, 0.04097094, 0.04072, 0.04097094, 0.43893288], [1517036700000, 0.04072001, 0.0409709, 0.04072, 0.04097, 4.36757773], [1517036760000, 0.04072, 0.04096999, 0.04072, 0.04072, 1.0182529], [1517036820000, 0.04072, 0.04072, 0.04072, 0.04072, 0.91718659], [1517036880000, 0.04072, 0.04072, 0.04072, 0.04072, 0.02004511], [1517037000000, 0.04097, 0.04097, 0.04097, 0.04097, 0.06516963], [1517037240000, 0.04097, 0.04097, 0.04097, 0.04097, 0.02522555], [1517037360000, 0.04096999, 0.04097094, 0.04072001, 0.04072001, 1.61019012], [1517037420000, 0.04097094, 0.04097182, 0.04097094, 0.04097182, 0.3110191], [1517037660000, 0.04072001, 0.04072001, 0.04072001, 0.04072001, 0.16828004], [1517037720000, 0.04072001, 0.04072001, 0.04072, 0.04072, 1.33333333], [1517037780000, 0.04072, 0.04072, 0.04072, 0.04072, 0.01432982], [1517037840000, 0.04072, 0.04072, 0.04072, 0.04072, 1.07734978], [1517037900000, 0.04072, 0.04072, 0.04072, 0.04072, 0.14839735], [1517037960000, 0.04097181, 0.04097181, 0.04097181, 0.04097181, 0.06516675], [1517038020000, 0.04072, 0.04072, 0.04072, 0.04072, 9.23567459], [1517038080000, 0.04097181, 0.04097181, 0.04097181, 0.04097181, 0.0353609], [1517038140000, 0.04072, 0.04099974, 0.04072, 0.04072, 6.1723724], [1517038200000, 0.04072, 0.04072, 0.04072, 0.04072, 0.164269], [1517038320000, 0.04099957, 0.04099957, 0.04099957, 0.04099957, 0.0661826], [1517038440000, 0.04072, 0.04099944, 0.04072, 0.04099944, 0.07945781], [1517038500000, 0.04072, 0.04072, 0.04072, 0.04072, 0.0200507], [1517038560000, 0.04072, 0.04072, 0.04072, 0.04072, 0.31758373], [1517038620000, 0.04073, 0.04073, 0.04072, 0.04072, 19.76819512], [1517038740000, 0.04072, 0.04072, 0.04072, 0.04072, 0.0200088], [1517038800000, 0.04099927, 0.04099927, 0.04099927, 0.04099927, 0.4878132], [1517038860000, 0.04072001, 0.04072001, 0.04072, 0.04072, 0.3557], [1517038920000, 0.04072001, 0.04099925, 0.04072, 0.04099924, 2.16654612], [1517038980000, 0.04072001, 0.04072001, 0.04072001, 0.04072001, 0.04625356], [1517039040000, 0.04072001, 0.04099921, 0.04072, 0.04072, 6.48548561], [1517039100000, 0.04072, 0.04072, 0.04072, 0.04072, 0.03984644], [1517039220000, 0.04099911, 0.04099917, 0.04099908, 0.04099909, 5.46719965], [1517039340000, 0.04099902, 0.04099902, 0.04072001, 0.04072001, 0.09440456], [1517039400000, 0.0409992, 0.0409992, 0.04072004, 0.04072004, 1.98596195], [1517039460000, 0.04072005, 0.04072005, 0.04072, 0.04072, 0.695299], [1517039520000, 0.04075, 0.04075, 0.04075, 0.04075, 0.34234275], [1517039580000, 0.04097746, 0.04097746, 0.04075, 0.04075, 0.28934442], [1517039640000, 0.04075, 0.04075, 0.04075, 0.04075, 0.32359137], [1517039700000, 0.04075, 0.04099937, 0.04075, 0.04075, 0.89618632], [1517039760000, 0.04075, 0.04075, 0.04075, 0.04075, 0.0496245], [1517039820000, 0.04099929, 0.04099929, 0.04099929, 0.04099929, 0.02439066], [1517039880000, 0.04099926, 0.04099928, 0.04099926, 0.04099928, 0.09224205], [1517039940000, 0.04075001, 0.04099923, 0.04075001, 0.04099923, 0.56512384], [1517040000000, 0.04099922, 0.04099922, 0.0409992, 0.0409992, 1.28443696], [1517040060000, 0.04085001, 0.04085001, 0.04075, 0.04075, 0.19056728], [1517040240000, 0.04075001, 0.04075001, 0.0407, 0.0407, 449.53340434], [1517040300000, 0.0407, 0.04099903, 0.0407, 0.04099895, 12.48772747], [1517040360000, 0.04070001, 0.04070001, 0.04070001, 0.04070001, 0.1359409], [1517040480000, 0.04070001, 0.04070001, 0.04070001, 0.04070001, 0.04], [1517040600000, 0.04099855, 0.04099855, 0.04070001, 0.04099853, 1.38070977], [1517040660000, 0.04070001, 0.04099233, 0.04070001, 0.04070005, 1.06496156], [1517040720000, 0.04070005, 0.04099232, 0.04070005, 0.04099232, 1.13785735], [1517040780000, 0.04070009, 0.04099224, 0.04070009, 0.04070413, 0.39441091], [1517040840000, 0.04070413, 0.04070413, 0.04070413, 0.04070413, 0.0405], [1517040900000, 0.04071002, 0.04084812, 0.04071, 0.04071, 0.79862472], [1517040960000, 0.04071, 0.04084811, 0.04071, 0.04084811, 9.59077849], [1517041020000, 0.04084811, 0.04084811, 0.04071, 0.04071, 5.10189488], [1517041080000, 0.04070001, 0.04071, 0.04070001, 0.04071, 0.10262331], [1517041140000, 0.04071, 0.04071, 0.0407, 0.0407, 2.69248473], [1517041200000, 0.04071, 0.04071, 0.0407, 0.04071, 4.00366634], [1517041260000, 0.0407, 0.04071, 0.0407, 0.0407, 2.07801272], [1517041320000, 0.0407, 0.04071, 0.0407, 0.04071, 2.04572998], [1517041380000, 0.0407, 0.04071, 0.0407, 0.04071, 0.26746726], [1517041440000, 0.04071, 0.04071, 0.0407, 0.0407, 2.94060755], [1517041500000, 0.04071, 0.04071, 0.04071, 0.04071, 0.55770829], [1517041560000, 0.0407, 0.04071, 0.0407, 0.04071, 4.80059458], [1517041620000, 0.04071009, 0.04072002, 0.04071009, 0.04072002, 0.11366072], [1517041680000, 0.04072003, 0.04072003, 0.04072003, 0.04072003, 0.05507672], [1517041740000, 0.0407101, 0.04099212, 0.04071009, 0.04071009, 0.40131947], [1517041800000, 0.04071009, 0.04071009, 0.04071009, 0.04071009, 0.78323518], [1517041860000, 0.04071009, 0.04071017, 0.04071009, 0.04071017, 0.33761401], [1517041920000, 0.04071, 0.04071, 0.0407, 0.0407, 0.85718664], [1517041980000, 0.04071017, 0.04103594, 0.0407, 0.040715, 2.03328292], [1517042040000, 0.0410359, 0.04105, 0.04072, 0.04073001, 0.82837553], [1517042100000, 0.04071007, 0.04104963, 0.040705, 0.040705, 8.44410096], [1517042160000, 0.040705, 0.04104399, 0.040705, 0.04104399, 0.61256827], [1517042400000, 0.040705, 0.04104399, 0.040705, 0.04104399, 1.20504277], [1517042520000, 0.04072013, 0.04072013, 0.04072013, 0.04072013, 0.0190216], [1517042700000, 0.04077548, 0.04077548, 0.04077548, 0.04077548, 0.7357359], [1517042760000, 0.04077548, 0.04077548, 0.04072014, 0.04072014, 0.13106499], [1517042820000, 0.04072013, 0.04077548, 0.04072013, 0.04077548, 0.10246401], [1517042880000, 0.04072013, 0.04072013, 0.04072013, 0.04072013, 0.2237466], [1517042940000, 0.04072013, 0.04072013, 0.04072013, 0.04072013, 0.0270853], [1517043000000, 0.04072013, 0.04077548, 0.04071, 0.04071, 0.56823993], [1517043060000, 0.04077548, 0.04077548, 0.04077548, 0.04077548, 0.08819574], [1517043120000, 0.04077548, 0.04077548, 0.04077548, 0.04077548, 0.05416402], [1517043180000, 0.04077548, 0.04077548, 0.04077548, 0.04077548, 0.02708201], [1517043300000, 0.04077548, 0.04077548, 0.04077548, 0.04077548, 0.4904906], [1517043360000, 0.04077548, 0.04077548, 0.04077548, 0.04077548, 0.032028], [1517043420000, 0.04073, 0.04077548, 0.04071, 0.04077548, 2.97064673], [1517043480000, 0.0407382, 0.0407382, 0.0407382, 0.0407382, 0.21310961], [1517043540000, 0.0407382, 0.04077548, 0.0407382, 0.04077548, 0.14324091], [1517043600000, 0.04077548, 0.04077548, 0.04072, 0.04077548, 5.28629389], [1517043660000, 0.04077548, 0.04077548, 0.04077548, 0.04077548, 0.01533816], [1517043900000, 0.04077548, 0.04077548, 0.04077548, 0.04077548, 1.24995596], [1517044200000, 0.04071001, 0.04098793, 0.04071001, 0.04098793, 2.05074019], [1517044380000, 0.04097999, 0.04098, 0.04071, 0.04071, 1.15126301], [1517044500000, 0.04071, 0.040976, 0.04071, 0.040976, 1.38627569], [1517044560000, 0.04071001, 0.04097598, 0.04071001, 0.04097598, 3.02628017], [1517044620000, 0.04097597, 0.04097598, 0.04071001, 0.04071001, 1.34432468], [1517044680000, 0.04071001, 0.04071001, 0.04071001, 0.04071001, 1.50270986], [1517044740000, 0.04071001, 0.04071001, 0.04071001, 0.04071001, 0.90398846], [1517044800000, 0.0408, 0.0408, 0.0408, 0.0408, 1.47058818], [1517044860000, 0.04071001, 0.04071001, 0.04071001, 0.04071001, 0.02019273], [1517044920000, 0.04071002, 0.04071002, 0.04071001, 0.04071001, 0.04018819], [1517044980000, 0.04071001, 0.04071001, 0.04071001, 0.04071001, 0.035], [1517045100000, 0.0408, 0.0408, 0.0408, 0.0408, 1.22549015], [1517045160000, 0.0408, 0.0408, 0.0408, 0.0408, 1.95299574], [1517045220000, 0.04071002, 0.04071003, 0.04071002, 0.04071003, 0.17377646], [1517045280000, 0.04071003, 0.040715, 0.04071002, 0.040715, 0.25792116], [1517045340000, 0.04071501, 0.04071501, 0.04071501, 0.04071501, 0.44181619], [1517045400000, 0.04097592, 0.04097593, 0.04097592, 0.04097593, 0.48809178], [1517045460000, 0.04097592, 0.04097592, 0.04097592, 0.04097592, 0.01642708], [1517045580000, 0.04097592, 0.04097593, 0.04072, 0.04072, 0.31723038], [1517045640000, 0.04072001, 0.04072001, 0.04071503, 0.04071503, 1.70316525], [1517045700000, 0.04072001, 0.04107003, 0.04072001, 0.04107003, 3.56001269], [1517045760000, 0.04104268, 0.04106995, 0.04104268, 0.04106995, 0.25920502], [1517045820000, 0.04106966, 0.04106974, 0.04106966, 0.04106974, 0.33847134], [1517045880000, 0.04106987, 0.04106987, 0.04106978, 0.04106978, 1.65328074], [1517045940000, 0.04106978, 0.04106987, 0.04074553, 0.04106978, 0.4862899], [1517046000000, 0.0410697, 0.04106978, 0.04070001, 0.04070001, 10.29441637], [1517046060000, 0.04106941, 0.04106941, 0.04106941, 0.04106941, 0.07304655], [1517046120000, 0.04106884, 0.04106884, 0.04106884, 0.04106884, 0.07304776], [1517046180000, 0.0410683, 0.0410683, 0.0410683, 0.0410683, 0.22375553], [1517046300000, 0.041047, 0.041047, 0.04104691, 0.04104692, 0.7308404], [1517046360000, 0.04101694, 0.04101694, 0.04101694, 0.04101694, 1.33785916], [1517046480000, 0.04075, 0.04075, 0.04074577, 0.04074577, 0.191023], [1517046540000, 0.04074577, 0.04074577, 0.04074577, 0.04074577, 0.30564393], [1517046600000, 0.04074577, 0.04074577, 0.04074577, 0.04074577, 0.49084812], [1517046660000, 0.04070002, 0.04070002, 0.04070002, 0.04070002, 0.144618], [1517046720000, 0.04070003, 0.04070003, 0.04070003, 0.04070003, 0.10006833], [1517046840000, 0.04074577, 0.04074577, 0.04074577, 0.04074577, 3.2746577], [1517046900000, 0.04074577, 0.0408, 0.04071, 0.04071, 2.52791238], [1517046960000, 0.04071, 0.04071, 0.04071, 0.04071, 0.78308193], [1517047020000, 0.04070003, 0.04070003, 0.04070003, 0.04070003, 0.168119], [1517047080000, 0.04070003, 0.04071, 0.04070002, 0.04071, 1.4828513], [1517047200000, 0.04070002, 0.04071, 0.04070001, 0.04071, 5.12252194], [1517047260000, 0.04071, 0.04071, 0.04071, 0.04071, 0.13058759], [1517047320000, 0.04070999, 0.04070999, 0.04070999, 0.04070999, 0.018102], [1517047440000, 0.040705, 0.040705, 0.0407, 0.0407, 0.49593478], [1517047500000, 0.04071, 0.04071, 0.04071, 0.04071, 0.49127978], [1517047560000, 0.04071, 0.04071, 0.04070001, 0.04071, 0.72121879], [1517047680000, 0.0407, 0.0407, 0.0407, 0.0407, 0.504823], [1517047740000, 0.04071, 0.0409, 0.04071, 0.0409, 1.89252334], [1517047800000, 0.04089999, 0.04100699, 0.04089999, 0.04090001, 2.33482423], [1517047860000, 0.04071001, 0.04071001, 0.04071001, 0.04071001, 0.10290506], [1517047980000, 0.04071, 0.04071, 0.04071, 0.04071, 0.13782713], [1517048100000, 0.04089999, 0.0409, 0.04089999, 0.0409, 0.51231319], [1517048160000, 0.0409, 0.0409, 0.0409, 0.0409, 0.0176659], [1517048220000, 0.04071101, 0.04071101, 0.04071101, 0.04071101, 0.166], [1517048340000, 0.04089999, 0.0409, 0.0407, 0.0407, 9.85880175], [1517048400000, 0.0407, 0.0409, 0.0407, 0.0409, 2.43590574], [1517048460000, 0.04070002, 0.04070002, 0.04070002, 0.04070002, 0.09998378], [1517048520000, 0.04089999, 0.0409999, 0.04087954, 0.0409999, 1.62806112], [1517048580000, 0.04087954, 0.04087954, 0.04070701, 0.04087954, 0.19277487], [1517048700000, 0.04070004, 0.04087951, 0.04070001, 0.04070001, 2.67078656], [1517048760000, 0.0407, 0.04070003, 0.0407, 0.0407, 0.12921388], [1517048820000, 0.04070003, 0.04070003, 0.0407, 0.0407, 0.84105939], [1517048880000, 0.0407, 0.0407, 0.0407, 0.0407, 2.48825243], [1517048940000, 0.0407, 0.04070002, 0.0407, 0.0407, 6.22509015], [1517049000000, 0.0407, 0.04088484, 0.0407, 0.04088483, 1.2826781], [1517049060000, 0.04088482, 0.04088482, 0.0407, 0.04070001, 0.29876657], [1517049120000, 0.04088477, 0.04088477, 0.04070001, 0.04070001, 0.64478605], [1517049180000, 0.04070001, 0.04070002, 0.04070001, 0.04070001, 0.38690041], [1517049240000, 0.04088481, 0.04088481, 0.04070001, 0.04070001, 0.12562967], [1517049300000, 0.04070001, 0.04088484, 0.04070001, 0.04088484, 1.02305868], [1517049360000, 0.04070001, 0.04070001, 0.04070001, 0.04070001, 0.0541769], [1517049420000, 0.04088474, 0.04088474, 0.04088474, 0.04088474, 3.0], [1517049480000, 0.04070001, 0.04070002, 0.04070001, 0.04070002, 0.84998116], [1517049540000, 0.04070002, 0.04070005, 0.04070002, 0.04070005, 0.19599344], [1517049600000, 0.04088475, 0.04088475, 0.04088474, 0.04088474, 3.43078014], [1517049660000, 0.04088471, 0.04088471, 0.04088471, 0.04088471, 0.28016119], [1517049720000, 0.04070007, 0.04070007, 0.04070007, 0.04070007, 0.10689922], [1517049780000, 0.04070007, 0.04070007, 0.04070003, 0.04070003, 0.46486125], [1517049900000, 0.04070003, 0.04088398, 0.04070003, 0.04070003, 0.91560555], [1517049960000, 0.04070003, 0.04070003, 0.04070003, 0.04070003, 0.66220643], [1517050020000, 0.04088399, 0.04088399, 0.04070003, 0.04070003, 27.97216158], [1517050080000, 0.0408838, 0.0408838, 0.0407, 0.0407, 22.01519296], [1517050140000, 0.04070001, 0.04070001, 0.0407, 0.0407, 0.56060004], [1517050200000, 0.0408837, 0.0408837, 0.0407, 0.0407, 1.24935497], [1517050260000, 0.0407, 0.0407, 0.0407, 0.0407, 0.1013], [1517050320000, 0.0407, 0.0407, 0.0407, 0.0407, 0.05], [1517050440000, 0.0407, 0.0407, 0.0407, 0.0407, 0.16726865], [1517050500000, 0.0408837, 0.0408837, 0.0408837, 0.0408837, 0.4891925], [1517050620000, 0.0407, 0.0407, 0.0407, 0.0407, 0.44848464], [1517050800000, 0.0407, 0.04078369, 0.0407, 0.04078369, 0.56776296], [1517050860000, 0.04078369, 0.04078369, 0.04078369, 0.04078369, 0.41263673], [1517050920000, 0.0407, 0.0407, 0.0407, 0.0407, 0.0541769], [1517050980000, 0.0407, 0.04078369, 0.0407, 0.0407, 2.84646743], [1517051040000, 0.0407, 0.0407, 0.0407, 0.0407, 0.03007175], [1517051100000, 0.04078369, 0.04078369, 0.0407, 0.0407, 0.69304549], [1517051160000, 0.0407, 0.0407, 0.0407, 0.0407, 0.30784404], [1517051220000, 0.0407, 0.0407, 0.0407, 0.0407, 0.02708845], [1517051280000, 0.04074157, 0.0408, 0.0407, 0.0408, 0.93767316], [1517051340000, 0.0407, 0.0407, 0.0407, 0.0407, 0.0541769], [1517051400000, 0.0407, 0.0407, 0.04069001, 0.04069001, 3.03166787], [1517051460000, 0.04069001, 0.04069001, 0.04069001, 0.04069001, 0.11169367], [1517051520000, 0.04069001, 0.04069001, 0.04069001, 0.04069001, 0.0812853], [1517051580000, 0.04069001, 0.04069001, 0.04069001, 0.04069001, 0.0541902], [1517051640000, 0.04069001, 0.0407, 0.04069001, 0.04069001, 0.10967802], [1517051700000, 0.04069001, 0.0407, 0.04069001, 0.0407, 0.27279534], [1517051760000, 0.04069001, 0.0407, 0.04069001, 0.0407, 2.39566124], [1517051820000, 0.0407, 0.0407, 0.0407, 0.0407, 0.40202823], [1517051880000, 0.0408, 0.0408, 0.0408, 0.0408, 3.00011427], [1517051940000, 0.0408, 0.0408, 0.0408, 0.0408, 1.2330912], [1517052000000, 0.0408, 0.04088475, 0.0408, 0.04088475, 1.66114674], [1517052060000, 0.04088475, 0.041, 0.04088475, 0.041, 0.37517765], [1517052120000, 0.041, 0.041, 0.041, 0.041, 3.21813547], [1517052180000, 0.041, 0.041, 0.04076136, 0.041, 2.4107755], [1517052240000, 0.041, 0.041, 0.041, 0.041, 0.08510328], [1517052300000, 0.04070015, 0.04104128, 0.04070015, 0.04104128, 1.62125126], [1517052360000, 0.04070501, 0.04070501, 0.0407, 0.0407, 0.33], [1517052480000, 0.04097641, 0.04097641, 0.04097641, 0.04097641, 0.11004368], [1517052540000, 0.0407, 0.04097629, 0.0407, 0.04097629, 0.09849976], [1517052600000, 0.0407, 0.0409094, 0.04069002, 0.0409094, 5.70573424], [1517052840000, 0.0409094, 0.040985, 0.0409094, 0.040985, 0.94614762], [1517052900000, 0.04099, 0.041, 0.040985, 0.041, 0.78528495], [1517052960000, 0.04069001, 0.04069001, 0.04069001, 0.04069001, 0.0270951], [1517053080000, 0.04069003, 0.04069003, 0.04069003, 0.04069003, 0.10871454], [1517053140000, 0.04070001, 0.04070001, 0.0407, 0.0407, 0.46190594], [1517053200000, 0.04096493, 0.040995, 0.04096493, 0.040985, 1.46460796], [1517053260000, 0.04070001, 0.04094, 0.0407, 0.04094, 0.54698843], [1517053320000, 0.0407, 0.04092483, 0.0407, 0.04092483, 10.25714556], [1517053380000, 0.0407, 0.0407, 0.0407, 0.0407, 0.61310923], [1517053500000, 0.0409, 0.04096997, 0.0407, 0.0407, 2.17935701], [1517053560000, 0.0407, 0.0407, 0.0407, 0.0407, 0.0541769], [1517053620000, 0.0407, 0.0407, 0.0407, 0.0407, 0.02708845], [1517053680000, 0.0409394, 0.0409394, 0.0407, 0.0407, 0.11610877], [1517053740000, 0.0407, 0.0407, 0.0407, 0.0407, 0.8041769], [1517053800000, 0.0407, 0.040705, 0.0407, 0.0407, 1.63415349], [1517053860000, 0.0407, 0.0407, 0.04069, 0.0407, 12.67677479], [1517053920000, 0.040705, 0.040705, 0.04069, 0.04069, 2.20546771], [1517053980000, 0.0407, 0.04089725, 0.04069, 0.0407, 1.08171728], [1517054040000, 0.04091824, 0.04091824, 0.0407, 0.0407, 0.03986406], [1517054100000, 0.04090821, 0.04091824, 0.04069, 0.04069, 9.53747013], [1517054160000, 0.04089, 0.04089, 0.04069, 0.04069, 0.12236024], [1517054220000, 0.04069, 0.04089, 0.04069, 0.04069, 0.52835173], [1517054280000, 0.04069, 0.04069, 0.04069, 0.04069, 1.60210263], [1517054340000, 0.04069, 0.04083838, 0.04069, 0.04083838, 2.46962539], [1517054400000, 0.04069, 0.04083199, 0.04069, 0.04083199, 0.80783566], [1517054460000, 0.04083199, 0.04083838, 0.0407, 0.0407, 0.14937574], [1517054580000, 0.0407, 0.0407, 0.0407, 0.0407, 0.18775718], [1517054640000, 0.04069, 0.04069, 0.04069, 0.04069, 0.24567022], [1517054700000, 0.04069, 0.0407, 0.04069, 0.04069, 1.00460559], [1517054760000, 0.04069, 0.04069, 0.04069, 0.04069, 10.16291573], [1517054820000, 0.0407, 0.0407, 0.04069001, 0.0407, 1.58375372], [1517054940000, 0.0407, 0.0407, 0.04069001, 0.04069001, 0.72073146], [1517055000000, 0.04069, 0.04069001, 0.04069, 0.04069, 0.48983877], [1517055060000, 0.04069001, 0.04069001, 0.04069001, 0.04069001, 0.39223411], [1517055120000, 0.04069, 0.04069, 0.04069, 0.04069, 0.02709511], [1517055180000, 0.04069, 0.04069, 0.04069, 0.04069, 0.0186705], [1517055240000, 0.04069001, 0.04069001, 0.04069, 0.04069, 2.05401459], [1517055300000, 0.04069, 0.04069001, 0.04069, 0.04069, 1.34812351], [1517055360000, 0.04069001, 0.04069001, 0.04069001, 0.04069001, 0.11646776], [1517055420000, 0.04069, 0.04069001, 0.04069, 0.04069, 28.53171443], [1517055480000, 0.04069, 0.04069001, 0.04069, 0.04069, 5.46243916], [1517055540000, 0.04069, 0.04069, 0.04069, 0.04069, 0.18144322], [1517055600000, 0.04069, 0.04069, 0.04069, 0.04069, 1.06061564], [1517055660000, 0.04069, 0.04069, 0.04069, 0.04069, 5.21555434], [1517055720000, 0.04069001, 0.04069001, 0.04069, 0.04069, 0.14412737], [1517055840000, 0.04069001, 0.04069001, 0.04069001, 0.04069001, 1.22573084], [1517055900000, 0.04069, 0.04069001, 0.04069, 0.04069, 2.87512293], [1517055960000, 0.04069001, 0.04069001, 0.04069001, 0.04069001, 0.01225738], [1517056080000, 0.04069, 0.04069001, 0.04069, 0.04069001, 0.3723044], [1517056200000, 0.04069, 0.04069001, 0.04069, 0.04069001, 0.30791382], [1517056260000, 0.04069, 0.04069, 0.04069, 0.04069, 0.10205365], [1517056320000, 0.04069001, 0.04069001, 0.04069, 0.04069001, 3.04138132], [1517056380000, 0.04069001, 0.04069001, 0.04069, 0.04069, 101.13924093], [1517056440000, 0.04069001, 0.0407, 0.04069, 0.0407, 100.18313892], [1517056620000, 0.0406999, 0.0408, 0.0406999, 0.0408, 32.31875322], [1517056680000, 0.0408, 0.0408, 0.04069, 0.04069, 6.33148897], [1517056740000, 0.04069, 0.04069, 0.04069, 0.04069, 0.57635323], [1517056800000, 0.04069, 0.0408, 0.04069, 0.0408, 1.0183404], [1517056860000, 0.04079999, 0.0408, 0.04069, 0.04069, 33.51456971], [1517056920000, 0.04069, 0.04069, 0.04069, 0.04069, 0.03050172], [1517056980000, 0.040691, 0.040691, 0.040691, 0.040691, 1.22570101], [1517057040000, 0.04069, 0.04069, 0.04069, 0.04069, 0.05091209], [1517057100000, 0.04069, 0.04069, 0.04069, 0.04069, 0.02973403], [1517057160000, 0.040691, 0.040691, 0.040691, 0.040691, 0.03117467], [1517057220000, 0.040691, 0.040691, 0.04069, 0.04069, 1.299364], [1517057340000, 0.0406905, 0.0406905, 0.0406905, 0.0406905, 0.42235], [1517057400000, 0.040691, 0.040691, 0.04069051, 0.04069051, 6.134229], [1517057520000, 0.040691, 0.040691, 0.040691, 0.040691, 0.22709489], [1517057580000, 0.04069053, 0.040691, 0.04069053, 0.04069054, 14.42576643], [1517057640000, 0.04069054, 0.040691, 0.04069054, 0.040691, 1.50344733], [1517057700000, 0.040691, 0.040691, 0.040691, 0.040691, 0.24575458], [1517057760000, 0.040691, 0.040691, 0.040691, 0.040691, 0.87236569], [1517057880000, 0.0406915, 0.0408, 0.0406915, 0.0406915, 1.29339941], [1517057940000, 0.0406915, 0.0406915, 0.04069099, 0.04069099, 0.84919001], [1517058000000, 0.04069099, 0.04069099, 0.04069099, 0.04069099, 0.08495763], [1517058060000, 0.0406915, 0.0408, 0.0406915, 0.0408, 19.42821319], [1517058120000, 0.04069099, 0.04069099, 0.04069099, 0.04069099, 1.3741], [1517058180000, 0.04069098, 0.04069098, 0.04069098, 0.04069098, 0.10065393], [1517058240000, 0.04069098, 0.0406915, 0.04069098, 0.0406915, 1.08653508], [1517058300000, 0.0406915, 0.0406915, 0.0406915, 0.0406915, 0.30694558], [1517058360000, 0.0406915, 0.0406915, 0.04069051, 0.04069052, 2.70338821], [1517058420000, 0.04069053, 0.0408, 0.04069053, 0.04069053, 0.62163093], [1517058480000, 0.04069053, 0.04069053, 0.04069053, 0.04069053, 0.74008142], [1517058540000, 0.04069053, 0.04069053, 0.04069, 0.04069, 11.19768727], [1517058600000, 0.04069001, 0.0406901, 0.04060013, 0.04060013, 9.73650087], [1517058660000, 0.04060013, 0.04060013, 0.04060013, 0.04060013, 0.66095221], [1517058780000, 0.0406901, 0.0406901, 0.04060025, 0.04060025, 0.02709504], [1517058900000, 0.04060841, 0.04060841, 0.04060841, 0.04060841, 0.192113], [1517058960000, 0.04072, 0.04072, 0.04072, 0.04072, 0.02366205], [1517059080000, 0.04071997, 0.04071997, 0.04071997, 0.04071997, 0.06556979], [1517059140000, 0.04071994, 0.04071994, 0.04071994, 0.04071994, 0.04911598], [1517059200000, 0.04071994, 0.04071994, 0.04060843, 0.04060844, 0.47446569], [1517059260000, 0.04060844, 0.04071994, 0.04060844, 0.04071994, 0.44157526], [1517059320000, 0.04071995, 0.04071995, 0.04060844, 0.04060844, 0.94077412], [1517059380000, 0.04060844, 0.04071996, 0.04060844, 0.04060844, 1.00813703], [1517059440000, 0.04060844, 0.04060844, 0.04060843, 0.04060844, 0.41694406], [1517059500000, 0.04060843, 0.04060844, 0.04060013, 0.04060013, 8.53506416], [1517059560000, 0.04060013, 0.04060013, 0.04058001, 0.04058001, 2.71972267], [1517059620000, 0.04060001, 0.04060001, 0.04058001, 0.04058001, 0.3107494], [1517059680000, 0.04058001, 0.0406, 0.04058001, 0.04058001, 2.08682024], [1517059740000, 0.04057501, 0.04058001, 0.04057501, 0.04057501, 0.7945137], [1517059800000, 0.04058001, 0.0406, 0.04058001, 0.0406, 0.29274967], [1517059860000, 0.0406, 0.0406, 0.04057501, 0.04057501, 0.25432707], [1517059920000, 0.04060013, 0.04060013, 0.04060013, 0.04060013, 0.26475051], [1517059980000, 0.0406, 0.04060001, 0.0406, 0.0406, 1.06032645], [1517060040000, 0.04060001, 0.04060001, 0.0406, 0.0406, 2.44353222], [1517060100000, 0.04060013, 0.0408, 0.04060013, 0.0407199, 2.33584056], [1517060160000, 0.0408, 0.0408, 0.0408, 0.0408, 0.24705666], [1517060280000, 0.0408, 0.0408, 0.0408, 0.0408, 0.25991206], [1517060400000, 0.04079999, 0.04079999, 0.0406, 0.0406, 0.41093544], [1517060460000, 0.0406, 0.0406, 0.0406, 0.0406, 0.02450078], [1517060520000, 0.04060013, 0.04060013, 0.04060001, 0.04060001, 0.07913914], [1517060580000, 0.04060001, 0.04060001, 0.04060001, 0.04060001, 0.39931247], [1517060640000, 0.0406, 0.04060001, 0.04059999, 0.04059999, 3.50481684], [1517060700000, 0.04058, 0.04058, 0.04058, 0.04058, 1.6158181], [1517060760000, 0.04060001, 0.04060001, 0.04058, 0.04060001, 0.55143783], [1517060820000, 0.04060001, 0.04060001, 0.04060001, 0.04060001, 0.53377712], [1517060880000, 0.04060002, 0.04060002, 0.0406, 0.0406, 5.0], [1517061000000, 0.0407, 0.0407, 0.0407, 0.0407, 0.24570024], [1517061120000, 0.0407, 0.0407, 0.0407, 0.0407, 1.28685191], [1517061300000, 0.0407, 0.04077, 0.0407, 0.04077, 8.67516773], [1517061360000, 0.0407, 0.0407, 0.0407, 0.0407, 0.02708845], [1517061480000, 0.0407, 0.0407, 0.0407, 0.0407, 0.07415837], [1517061540000, 0.0407, 0.0407, 0.0407, 0.0407, 0.42584163], [1517061600000, 0.0407, 0.04077, 0.0407, 0.04077, 0.24570024], [1517061720000, 0.04077, 0.04077, 0.0406, 0.0406, 0.0376521], [1517061840000, 0.04076993, 0.04076994, 0.0406, 0.0406, 4.98724008], [1517061900000, 0.04076887, 0.04076887, 0.04076887, 0.04076887, 0.05016893], [1517061960000, 0.04068497, 0.04076887, 0.04068497, 0.04076887, 0.48316048], [1517062020000, 0.0407688, 0.0407688, 0.040768, 0.040768, 1.10109726], [1517062080000, 0.04072787, 0.04072787, 0.04072787, 0.04072787, 0.02706992], [1517062140000, 0.040765, 0.04077, 0.040765, 0.04077, 7.30144283], [1517062200000, 0.04074, 0.04074, 0.04068497, 0.04068497, 15.7867791], [1517062320000, 0.04072787, 0.04072787, 0.0406, 0.0406, 3.51259301], [1517062380000, 0.0406, 0.0406, 0.0406, 0.0406, 9.71901434], [1517062440000, 0.0406, 0.0406, 0.0406, 0.0406, 0.19617914], [1517062500000, 0.040595, 0.0406, 0.040595, 0.0406, 1.17937875], [1517062560000, 0.040595, 0.04059749, 0.040595, 0.040595, 4.89266308], [1517062620000, 0.04059499, 0.040595, 0.04059499, 0.040595, 0.05678888], [1517062680000, 0.040595, 0.040595, 0.040595, 0.040595, 5.31443268], [1517062740000, 0.040595, 0.040595, 0.040595, 0.040595, 3.98534302], [1517062800000, 0.040595, 0.040595, 0.04058002, 0.04058002, 26.86765029], [1517062860000, 0.040595, 0.040595, 0.040595, 0.040595, 0.80572351], [1517062920000, 0.040595, 0.040595, 0.04058002, 0.040595, 2.29836321], [1517062980000, 0.040595, 0.040595, 0.040595, 0.040595, 0.73316251], [1517063040000, 0.040595, 0.040595, 0.04058, 0.04058, 5.89900054], [1517063100000, 0.040595, 0.040595, 0.04058, 0.04058, 1.21701723], [1517063160000, 0.04058, 0.04058, 0.04058, 0.04058, 2.17299464], [1517063220000, 0.04059, 0.040595, 0.04058, 0.04058, 0.50575413], [1517063280000, 0.04058, 0.04058, 0.04057501, 0.04057501, 5.2597905], [1517063400000, 0.04057501, 0.04057501, 0.04057501, 0.04057501, 1.88579472], [1517063460000, 0.04058, 0.04058, 0.04058, 0.04058, 0.06503726], [1517063520000, 0.04057999, 0.04057999, 0.04057501, 0.04057501, 2.25424514], [1517063640000, 0.040575, 0.04058, 0.04055, 0.04058, 13.77263796], [1517063700000, 0.04058, 0.04058, 0.04058, 0.04058, 0.94905741], [1517063820000, 0.04058, 0.04058, 0.04058, 0.04058, 0.06271025], [1517063940000, 0.04055, 0.04055, 0.04037972, 0.0404, 37.46691594], [1517064000000, 0.04037972, 0.0404, 0.0403, 0.0404, 9.2117426], [1517064060000, 0.04046095, 0.04046095, 0.04022001, 0.04045094, 53.27603319], [1517064120000, 0.04039339, 0.04047096, 0.04008, 0.04010237, 30.71439758], [1517064180000, 0.04010237, 0.04033199, 0.04, 0.04, 321.23404887], [1517064240000, 0.04031199, 0.04031199, 0.03975512, 0.03975512, 146.34074063], [1517064300000, 0.04014291, 0.04014291, 0.03971932, 0.0398, 100.29615454], [1517064360000, 0.040098, 0.040098, 0.0398, 0.03999995, 16.78938416], [1517064420000, 0.03999995, 0.03999995, 0.03959001, 0.0396291, 76.28199899], [1517064480000, 0.0396291, 0.03997497, 0.039511, 0.039511, 20.43338366], [1517064540000, 0.03982997, 0.03982997, 0.03948489, 0.03948489, 40.7849084], [1517064600000, 0.03982297, 0.03989997, 0.03954197, 0.03956444, 16.83425623], [1517064660000, 0.03981006, 0.03981006, 0.03956444, 0.03956444, 16.61719321], [1517064720000, 0.0395644, 0.03981006, 0.03955485, 0.03956444, 22.33189026], [1517064780000, 0.0396357, 0.03981004, 0.03956454, 0.03981, 18.56417023], [1517064840000, 0.03981, 0.03981, 0.03956444, 0.03956444, 11.44471817], [1517064900000, 0.03956444, 0.03980997, 0.03956444, 0.03976794, 82.47620399], [1517064960000, 0.03980997, 0.03981005, 0.03980997, 0.03981005, 15.09588078], [1517065020000, 0.03981006, 0.03982868, 0.03956444, 0.03982, 181.49563204], [1517065080000, 0.03982868, 0.03984809, 0.03955541, 0.03955541, 51.6754933], [1517065140000, 0.03955541, 0.03986997, 0.03955541, 0.03986997, 32.62998743], [1517065200000, 0.03986997, 0.03991001, 0.039599, 0.03988, 21.57389389], [1517065260000, 0.03957003, 0.03989902, 0.03957003, 0.0396, 0.28628189], [1517065320000, 0.0396, 0.03987798, 0.0396, 0.03985499, 0.71284155], [1517065380000, 0.0397, 0.03985998, 0.0396, 0.03965, 10.33316492], [1517065440000, 0.03965, 0.03979699, 0.03965, 0.03965246, 16.86127747], [1517065500000, 0.03965246, 0.03989492, 0.03965246, 0.03989492, 77.47722827], [1517065560000, 0.03989492, 0.03989998, 0.03989492, 0.03989492, 133.12355972], [1517065620000, 0.0399644, 0.03996441, 0.03989492, 0.03989492, 26.87604538], [1517065680000, 0.03989492, 0.0399644, 0.03989492, 0.0399644, 9.08602161], [1517065740000, 0.03994399, 0.03994399, 0.03976034, 0.039924, 27.20013055], [1517065800000, 0.03976034, 0.03994399, 0.03965246, 0.03994399, 4.16242198], [1517065860000, 0.03965601, 0.0399749, 0.03965601, 0.0399749, 7.47629501], [1517065920000, 0.03997488, 0.0399749, 0.03997488, 0.0399749, 1.37586397], [1517065980000, 0.03997488, 0.03997488, 0.03997488, 0.03997488, 0.50510269], [1517066040000, 0.039974, 0.039974, 0.0397842, 0.0397842, 0.73869917], [1517066100000, 0.03994399, 0.03994399, 0.03990405, 0.03990405, 0.29291661], [1517066160000, 0.03990405, 0.03990405, 0.03982429, 0.03982429, 1.10499009], [1517066220000, 0.03990405, 0.03990405, 0.03990405, 0.03990405, 0.42734721], [1517066280000, 0.03990405, 0.0399041, 0.03990405, 0.0399041, 0.40769556], [1517066340000, 0.0399041, 0.0399041, 0.0399041, 0.0399041, 0.11928996], [1517066400000, 0.0399041, 0.0399041, 0.0399041, 0.0399041, 0.15929908], [1517066460000, 0.039943, 0.039943, 0.039943, 0.039943, 0.22637004], [1517066520000, 0.039943, 0.039943, 0.03990411, 0.039943, 3.18227293], [1517066580000, 0.03994399, 0.03994399, 0.0399042, 0.03994399, 2.0618354], [1517066640000, 0.03994399, 0.03997489, 0.03994399, 0.03997489, 4.72156607], [1517066700000, 0.0399749, 0.0399749, 0.0399749, 0.0399749, 1.39755149], [1517066760000, 0.0399749, 0.03999899, 0.0399749, 0.0399749, 2.94983313], [1517066820000, 0.0399749, 0.0399749, 0.0399749, 0.0399749, 1.64771425], [1517066880000, 0.0399749, 0.0399749, 0.0399749, 0.0399749, 10.86546147], [1517066940000, 0.03997473, 0.03997473, 0.03996471, 0.03996471, 0.73285311], [1517067000000, 0.03997489, 0.039999, 0.03996471, 0.039999, 96.73783257], [1517067060000, 0.03996471, 0.039999, 0.03996471, 0.039999, 0.8151374], [1517067120000, 0.03999875, 0.03999875, 0.03996472, 0.03999875, 0.60173809], [1517067180000, 0.03999875, 0.03999875, 0.03999875, 0.03999875, 0.13673956], [1517067240000, 0.039999, 0.039999, 0.03999875, 0.039999, 7.30260332], [1517067300000, 0.039999, 0.039999, 0.039999, 0.039999, 13.05175345], [1517067360000, 0.039999, 0.039999, 0.039999, 0.039999, 4.27025064], [1517067420000, 0.039999, 0.04015584, 0.039999, 0.04015584, 5.9389], [1517067480000, 0.04015584, 0.04015584, 0.04015584, 0.04015584, 0.95500984], [1517067540000, 0.04015584, 0.04021049, 0.04013576, 0.04015584, 2.16982242], [1517067600000, 0.04021049, 0.04021049, 0.04015584, 0.04021049, 0.35409096], [1517067660000, 0.04021048, 0.04021048, 0.04019001, 0.04021048, 2.77884181], [1517067720000, 0.04015584, 0.04021046, 0.03999876, 0.03999876, 11.32807584], [1517067780000, 0.04021046, 0.04021046, 0.0399041, 0.0399041, 15.95645311], [1517067840000, 0.0399041, 0.04015361, 0.0399041, 0.04015361, 11.00631048], [1517067900000, 0.0399, 0.04015361, 0.03984, 0.03984, 14.97779948], [1517067960000, 0.039829, 0.03985, 0.03982429, 0.03982429, 13.14634403], [1517068020000, 0.03982899, 0.039829, 0.03982899, 0.03982899, 2.09973824], [1517068080000, 0.0398243, 0.039829, 0.03982429, 0.03982429, 5.18696767], [1517068140000, 0.03982429, 0.0398243, 0.0398, 0.0398, 8.60312652], [1517068200000, 0.0398243, 0.0398243, 0.03982429, 0.0398243, 5.93994931], [1517068260000, 0.03982429, 0.0398243, 0.03982429, 0.0398243, 17.38486747], [1517068320000, 0.0398, 0.0398, 0.0398, 0.0398, 0.25852881], [1517068380000, 0.0398, 0.0398223, 0.0398, 0.0398223, 0.99174453], [1517068440000, 0.0398223, 0.0398223, 0.03982229, 0.03982229, 3.92671637], [1517068500000, 0.03982229, 0.0398223, 0.03974901, 0.03974901, 93.69905793], [1517068560000, 0.03974901, 0.03982899, 0.03968001, 0.03982899, 32.64406478], [1517068620000, 0.03982898, 0.03982898, 0.03969001, 0.03982898, 10.20284154], [1517068680000, 0.03969001, 0.03982899, 0.03969001, 0.03982897, 1.72839316], [1517068740000, 0.03982899, 0.04014597, 0.03982899, 0.04014597, 10.94708284], [1517068800000, 0.03982898, 0.03982898, 0.03982897, 0.03982897, 6.20972242], [1517068860000, 0.03982897, 0.03982897, 0.03973501, 0.03982896, 5.79178556], [1517068920000, 0.03982896, 0.03982898, 0.03982896, 0.03982898, 5.25758897], [1517068980000, 0.03982898, 0.04013, 0.03976501, 0.04013, 22.49851421], [1517069040000, 0.04002343, 0.04013, 0.03995999, 0.03995999, 0.9717942], [1517069100000, 0.03995999, 0.0401155, 0.039839, 0.039839, 1.4092724], [1517069160000, 0.04013, 0.04013, 0.04013, 0.04013, 0.27821645], [1517069220000, 0.03984901, 0.03984901, 0.039839, 0.039839, 2.32483469], [1517069280000, 0.03984737, 0.03984737, 0.039683, 0.03974, 3.87038521], [1517069340000, 0.0401296, 0.0401296, 0.0401296, 0.0401296, 0.01384254], [1517069400000, 0.04009989, 0.04013, 0.0398, 0.0398, 5.42970326], [1517069460000, 0.0398, 0.03989504, 0.0398, 0.03989504, 2.81517885], [1517069520000, 0.03989504, 0.0401276, 0.03989503, 0.03989503, 12.79892842], [1517069580000, 0.03989503, 0.04013, 0.03989503, 0.04013, 2.26343831], [1517069640000, 0.03989503, 0.03989505, 0.03989503, 0.03989504, 6.91736302], [1517069700000, 0.03989504, 0.03989504, 0.03989504, 0.03989504, 0.323598], [1517069760000, 0.04013, 0.04013, 0.04013, 0.04013, 1.0], [1517069820000, 0.0399101, 0.0399101, 0.0399101, 0.0399101, 0.02], [1517069880000, 0.04008773, 0.04008773, 0.04, 0.04008773, 2.79712902], [1517069940000, 0.04008773, 0.04008773, 0.04008773, 0.04008773, 0.05500436], [1517070000000, 0.04012999, 0.04013, 0.04008773, 0.04008773, 1.94995689], [1517070060000, 0.04008773, 0.04013, 0.04008773, 0.04008773, 1.55127604], [1517070120000, 0.04008773, 0.04013, 0.04008773, 0.04008773, 1.16237433], [1517070180000, 0.04008773, 0.04008773, 0.04008773, 0.04008773, 0.27314667], [1517070240000, 0.04008773, 0.04018082, 0.04, 0.04, 21.33438966], [1517070300000, 0.03996407, 0.040171, 0.03996407, 0.04017099, 3.5819642], [1517070360000, 0.04017099, 0.04017099, 0.03996407, 0.03996407, 0.69181614], [1517070420000, 0.0399101, 0.0399101, 0.0399101, 0.0399101, 0.21647835], [1517070540000, 0.03991011, 0.03991011, 0.03991011, 0.03991011, 9.0709199], [1517070660000, 0.03991011, 0.03991011, 0.03991011, 0.03991011, 0.70668925], [1517070720000, 0.03996407, 0.04009005, 0.03996407, 0.04009005, 0.03867945], [1517070840000, 0.039912, 0.039912, 0.039912, 0.039912, 0.05524654], [1517070900000, 0.039912, 0.04009005, 0.039912, 0.039912, 0.30468468], [1517070960000, 0.04009005, 0.04009005, 0.039912, 0.04, 4.33214881], [1517071020000, 0.04, 0.04, 0.039912, 0.039912, 0.450251], [1517071080000, 0.04, 0.04, 0.03991011, 0.03991011, 8.03903723], [1517071140000, 0.03991011, 0.04, 0.03991011, 0.03991011, 0.5335122], [1517071200000, 0.03991011, 0.04, 0.03991011, 0.04, 0.50647986], [1517071260000, 0.04, 0.04, 0.03991011, 0.03991011, 11.05208486], [1517071320000, 0.03991011, 0.03991011, 0.03991011, 0.03991011, 0.11094057], [1517071380000, 0.03991011, 0.04, 0.03989503, 0.03989503, 42.24457691], [1517071440000, 0.04, 0.04, 0.03981291, 0.03981291, 3.6162006], [1517071500000, 0.04, 0.04, 0.039755, 0.03998999, 2.76627582], [1517071560000, 0.039755, 0.03998998, 0.039755, 0.03998998, 0.06225271], [1517071620000, 0.0398895, 0.03999499, 0.0398895, 0.0398895, 0.11797611], [1517071680000, 0.0398895, 0.0398895, 0.0398895, 0.0398895, 0.55962872], [1517071740000, 0.039755, 0.0398895, 0.039755, 0.0398895, 1.38], [1517071800000, 0.03974, 0.0398895, 0.03974, 0.03974, 0.31195659], [1517071860000, 0.03974, 0.03974, 0.03974, 0.03974, 0.01915617], [1517071920000, 0.03974, 0.03974, 0.03974, 0.03974, 0.4138422], [1517071980000, 0.03974, 0.03974, 0.03974, 0.03974, 0.69168422], [1517072040000, 0.03974, 0.03974, 0.03967001, 0.03973, 3.87136691], [1517072100000, 0.03967001, 0.03973, 0.03967001, 0.03968, 4.58202559], [1517072160000, 0.03967001, 0.03968, 0.039594, 0.03968, 15.02351163], [1517072220000, 0.03959, 0.03973, 0.03959, 0.03959, 1.29509023], [1517072280000, 0.039595, 0.039595, 0.039595, 0.039595, 4.10569236], [1517072340000, 0.03973, 0.03973, 0.03959, 0.03959, 2.05464675], [1517072400000, 0.03959, 0.03972998, 0.03959, 0.03972998, 0.57099429], [1517072460000, 0.03959, 0.03959, 0.03959, 0.03959, 0.02784794], [1517072520000, 0.03959, 0.0396, 0.03959, 0.03959, 0.07487304], [1517072580000, 0.03959, 0.03985536, 0.03959, 0.03985536, 0.2058261], [1517072640000, 0.0396, 0.0396, 0.03959, 0.03959, 0.69789632], [1517072700000, 0.03959, 0.039591, 0.03959, 0.039591, 1.53883567], [1517072760000, 0.03959, 0.039591, 0.03959, 0.039591, 0.59444941], [1517072820000, 0.03972, 0.039854, 0.03972, 0.039854, 81.07454795], [1517072880000, 0.04, 0.04, 0.04, 0.04, 0.621924], [1517072940000, 0.039906, 0.039906, 0.039906, 0.039906, 0.41524889], [1517073000000, 0.03999998, 0.04, 0.039712, 0.039712, 5.42657348], [1517073120000, 0.03974006, 0.03974006, 0.03974006, 0.03974006, 0.10772587], [1517073180000, 0.039745, 0.039745, 0.039745, 0.039745, 2.65], [1517073240000, 0.03998901, 0.03998901, 0.039989, 0.039989, 0.21762477], [1517073300000, 0.039989, 0.04, 0.03977001, 0.03977001, 0.64085309], [1517073360000, 0.03978, 0.03999999, 0.03978, 0.03999999, 0.16363794], [1517073420000, 0.03997975, 0.04, 0.03997975, 0.04, 1.841549], [1517073480000, 0.03999999, 0.03999999, 0.03983501, 0.03983501, 0.10043585], [1517073540000, 0.03988, 0.03988, 0.03987502, 0.03987502, 14.20776455], [1517073600000, 0.03987502, 0.03987502, 0.03985, 0.03987502, 1.95833967], [1517073660000, 0.03987502, 0.03987502, 0.03983289, 0.03983289, 5.39254254], [1517073720000, 0.03983, 0.03983, 0.03983, 0.03983, 0.26722148], [1517073780000, 0.03999997, 0.03999999, 0.03983, 0.03983, 0.71822743], [1517073840000, 0.03999998, 0.03999998, 0.03999998, 0.03999998, 0.2], [1517073900000, 0.03983001, 0.03983001, 0.03974601, 0.03974601, 32.25075923], [1517073960000, 0.03965031, 0.03965031, 0.03965031, 0.03965031, 21.17807862], [1517074020000, 0.03965031, 0.03965031, 0.03965031, 0.03965031, 0.84372874], [1517074080000, 0.03974015, 0.03983001, 0.039679, 0.03983001, 3.45648811], [1517074140000, 0.03983001, 0.03983001, 0.03965036, 0.03965036, 1.22963138], [1517074200000, 0.03983001, 0.03983001, 0.03983001, 0.03983001, 5.62279197], [1517074260000, 0.03969502, 0.03969502, 0.03969502, 0.03969502, 0.09348128], [1517074320000, 0.03999992, 0.04003299, 0.03999992, 0.040028, 8.701], [1517074380000, 0.03972, 0.0399, 0.03972, 0.0399, 0.05048294], [1517074440000, 0.0399, 0.04001098, 0.0399, 0.0399, 0.85749135], [1517074500000, 0.03990001, 0.04001199, 0.0399, 0.04001199, 0.32893413], [1517074560000, 0.04001199, 0.04001199, 0.04001198, 0.04001199, 0.46542707], [1517074620000, 0.03999718, 0.03999718, 0.0399, 0.0399, 0.15248463], [1517074680000, 0.0399, 0.0399, 0.0399, 0.0399, 0.36030575], [1517074740000, 0.0399, 0.03999497, 0.0399, 0.0399, 1.25415487], [1517074800000, 0.0399, 0.0399, 0.0399, 0.0399, 12.7099174], [1517074860000, 0.0399, 0.03999697, 0.0399, 0.03999697, 1.31079444], [1517074920000, 0.039997, 0.04, 0.0399, 0.03992, 1.31551014], [1517074980000, 0.03992, 0.03992, 0.03992, 0.03992, 1.06723548], [1517075040000, 0.03992, 0.04004675, 0.0399, 0.0399, 0.6316454], [1517075100000, 0.0399, 0.0399, 0.0399, 0.0399, 0.05526316], [1517075160000, 0.0399, 0.0400467, 0.0399, 0.0399, 9.84029508], [1517075220000, 0.0399, 0.0399, 0.0399, 0.0399, 0.09674754], [1517075280000, 0.0399, 0.04004671, 0.0399, 0.0399, 23.899887], [1517075340000, 0.04003698, 0.04003699, 0.0399, 0.0399, 0.1766018], [1517075400000, 0.0399, 0.04002699, 0.03980287, 0.03980287, 4.3990766], [1517075460000, 0.03980287, 0.03980287, 0.03980287, 0.03980287, 0.5], [1517075520000, 0.040022, 0.040027, 0.040022, 0.040027, 3.74449053], [1517075640000, 0.040027, 0.040027, 0.040027, 0.040027, 0.01794364], [1517075700000, 0.03972159, 0.04001479, 0.03972155, 0.03972155, 0.95548636], [1517075760000, 0.03972159, 0.03972159, 0.03972154, 0.03972155, 4.56790711], [1517075820000, 0.03995321, 0.03995321, 0.03972155, 0.03973, 0.25570314], [1517075880000, 0.03973, 0.03976973, 0.03972155, 0.03972155, 0.15811379], [1517075940000, 0.03972154, 0.03972154, 0.03972154, 0.03972154, 3.36628708], [1517076000000, 0.03995321, 0.03995321, 0.03972154, 0.03972154, 0.79432575], [1517076060000, 0.03972154, 0.03972154, 0.03970766, 0.03970766, 0.5897166], [1517076120000, 0.03970766, 0.03972154, 0.03970766, 0.0397077, 0.33508805], [1517076180000, 0.0397077, 0.03972154, 0.03970766, 0.03972154, 0.14627404], [1517076240000, 0.03970767, 0.03972154, 0.03970767, 0.03970768, 2.16738335], [1517076300000, 0.03972154, 0.03998999, 0.03972154, 0.03972154, 1.04914021], [1517076360000, 0.0398, 0.03985, 0.0398, 0.0398, 10.12224553], [1517076420000, 0.0398, 0.0398, 0.0398, 0.0398, 1.48805741], [1517076480000, 0.0398, 0.0398, 0.03972154, 0.03972154, 5.9796656], [1517076540000, 0.03972154, 0.0397216, 0.03972154, 0.03972154, 4.36499976], [1517076600000, 0.03972154, 0.03972154, 0.0397215, 0.03972151, 187.77590866], [1517076660000, 0.03970768, 0.0397215, 0.03970768, 0.03970769, 0.45607097], [1517076720000, 0.0397612, 0.0397612, 0.0397077, 0.0397612, 0.41931799], [1517076780000, 0.0397612, 0.0397612, 0.03965031, 0.039655, 116.51194195], [1517076900000, 0.03985, 0.039981, 0.03985, 0.039981, 0.25094102], [1517076960000, 0.03985, 0.04, 0.03985, 0.03998, 4.82476509], [1517077020000, 0.03998, 0.03998, 0.03990977, 0.03998, 3.96955624], [1517077080000, 0.039685, 0.039685, 0.039685, 0.039685, 0.05], [1517077140000, 0.03968501, 0.03998062, 0.03924515, 0.03998, 102.2754072], [1517077200000, 0.03998, 0.03998, 0.03998, 0.03998, 0.20779929], [1517077260000, 0.03998, 0.03998, 0.03998, 0.03998, 3.74547972], [1517077320000, 0.03998, 0.039995, 0.03998, 0.03998, 0.53916298], [1517077380000, 0.03998, 0.03998, 0.03965701, 0.03997198, 1.833298], [1517077440000, 0.03996, 0.03996, 0.03996, 0.03996, 0.92975209], [1517077500000, 0.03992288, 0.03992288, 0.039593, 0.03987243, 0.75144866], [1517077560000, 0.0395822, 0.0395822, 0.0395822, 0.0395822, 0.3599884], [1517077620000, 0.03961969, 0.0396593, 0.03961969, 0.0396593, 0.222332], [1517077680000, 0.0396593, 0.0396593, 0.0396593, 0.0396593, 0.21133606], [1517077740000, 0.0396593, 0.0396593, 0.0396593, 0.0396593, 0.25719399], [1517077860000, 0.03987241, 0.03987241, 0.03987241, 0.03987241, 0.01668604], [1517077980000, 0.0396593, 0.0396691, 0.03960952, 0.0396691, 7.11765635], [1517078100000, 0.03987242, 0.03987242, 0.03975, 0.03975, 0.27871192], [1517078160000, 0.0397, 0.03975, 0.0396691, 0.03974998, 2.04583912], [1517078220000, 0.03974998, 0.03974998, 0.03974998, 0.03974998, 0.05558496], [1517078280000, 0.03974998, 0.03974998, 0.03974998, 0.03974998, 0.05558496], [1517078340000, 0.03974998, 0.03975, 0.03969998, 0.03975, 2.05313421], [1517078400000, 0.03975, 0.03975, 0.03975, 0.03975, 0.12838412], [1517078460000, 0.03975, 0.03975, 0.0396691, 0.03975, 0.16633292], [1517078520000, 0.03975, 0.03975, 0.03975, 0.03975, 0.2779461], [1517078580000, 0.03975, 0.03975, 0.03975, 0.03975, 1.487813], [1517078640000, 0.03975, 0.03987242, 0.0396691, 0.0396691, 0.18792528], [1517078700000, 0.0397, 0.0397, 0.0397, 0.0397, 0.11952754], [1517078760000, 0.03984191, 0.03987242, 0.03984191, 0.03987242, 1.44858551], [1517078820000, 0.03987242, 0.03987242, 0.03987242, 0.03987242, 0.44788864], [1517078880000, 0.03987242, 0.03987242, 0.03987242, 0.03987242, 0.07905066], [1517078940000, 0.03987242, 0.03987242, 0.03987242, 0.03987242, 0.02765069], [1517079000000, 0.03987242, 0.03997999, 0.03987242, 0.03987242, 4.08051957], [1517079060000, 0.03997998, 0.03997998, 0.03987242, 0.03987242, 0.49751336], [1517079120000, 0.03987242, 0.03987242, 0.03987242, 0.03987242, 0.02765069], [1517079180000, 0.03987242, 0.03987242, 0.03987242, 0.03987242, 0.26568898], [1517079240000, 0.03987235, 0.03987235, 0.03987235, 0.03987235, 0.09258828], [1517079360000, 0.03987235, 0.03987235, 0.03987235, 0.03987235, 0.01250875], [1517079600000, 0.03967901, 0.03967901, 0.03967901, 0.03967901, 0.05560986], [1517079660000, 0.03987242, 0.03987242, 0.03987242, 0.03987242, 0.20309906], [1517079720000, 0.03987242, 0.03987242, 0.039679, 0.039679, 2.49703495], [1517079780000, 0.03987242, 0.03987242, 0.03987242, 0.03987242, 0.10911598], [1517079900000, 0.03987242, 0.03987242, 0.03987242, 0.03987242, 1.02658052], [1517080140000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 0.23316746], [1517080200000, 0.03970502, 0.03970502, 0.03970501, 0.03970501, 0.11958721], [1517080260000, 0.03970501, 0.03970501, 0.039705, 0.03970501, 0.58926155], [1517080320000, 0.039705, 0.03970502, 0.039705, 0.03970502, 2.50563295], [1517080380000, 0.03970502, 0.03998638, 0.03970502, 0.03998638, 3.74450182], [1517080440000, 0.039941, 0.039941, 0.039941, 0.039941, 0.02503694], [1517080500000, 0.039941, 0.03998469, 0.039941, 0.03998469, 0.25036929], [1517080560000, 0.0398, 0.0398, 0.0398, 0.0398, 0.20209508], [1517080620000, 0.03998454, 0.03998457, 0.03998454, 0.03998457, 0.38972872], [1517080680000, 0.03998457, 0.03998457, 0.03998457, 0.03998457, 0.19328557], [1517080740000, 0.0398, 0.0398, 0.0398, 0.0398, 0.05104693], [1517080800000, 0.0398, 0.0398, 0.03970502, 0.03970502, 26.57717794], [1517080920000, 0.03970505, 0.03971, 0.03970505, 0.03970505, 0.79877386], [1517080980000, 0.03999387, 0.03999387, 0.03970507, 0.03970507, 0.20266255], [1517081100000, 0.03999103, 0.03999103, 0.03999103, 0.03999103, 0.25005626], [1517081160000, 0.03999369, 0.03999369, 0.03970511, 0.03970511, 0.1425734], [1517081280000, 0.03998885, 0.03999369, 0.03998885, 0.03999369, 0.78802186], [1517081340000, 0.03970524, 0.03970524, 0.03970502, 0.03970502, 139.8174683], [1517081400000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 0.52543159], [1517081460000, 0.03970502, 0.03998648, 0.03970502, 0.03998648, 0.12099165], [1517081520000, 0.03984806, 0.03984806, 0.03984806, 0.03984806, 0.07489528], [1517081580000, 0.03984806, 0.03984806, 0.03970503, 0.03970503, 0.04295606], [1517081640000, 0.03970503, 0.03970503, 0.03970503, 0.03970503, 0.03678599], [1517081700000, 0.03971, 0.03971, 0.03971, 0.03971, 0.02667214], [1517081760000, 0.03998647, 0.04, 0.03998647, 0.04, 8.0], [1517081820000, 0.03972002, 0.03972002, 0.03972002, 0.03972002, 0.03054703], [1517081880000, 0.03996335, 0.03996335, 0.03996335, 0.03996335, 0.05], [1517081940000, 0.03996335, 0.03996335, 0.03996335, 0.03996335, 0.08424549], [1517082000000, 0.03995, 0.03995, 0.03995, 0.03995, 0.20014597], [1517082240000, 0.03994, 0.03994, 0.03994, 0.03994, 0.49582868], [1517082360000, 0.03993989, 0.03993989, 0.03993989, 0.03993989, 0.10126401], [1517082420000, 0.03993989, 0.03993989, 0.03975301, 0.03975301, 0.14987619], [1517082540000, 0.03993985, 0.03993985, 0.03993985, 0.03993985, 3.61750685], [1517082600000, 0.03977499, 0.03977499, 0.03977499, 0.03977499, 0.09294859], [1517082720000, 0.03977499, 0.03977499, 0.03977499, 0.03977499, 0.05042733], [1517082780000, 0.03977499, 0.03993989, 0.03976801, 0.03993989, 7.27817902], [1517082960000, 0.039939, 0.039939, 0.039939, 0.039939, 0.22], [1517083020000, 0.03976701, 0.039772, 0.03976159, 0.039772, 0.24247704], [1517083140000, 0.03976301, 0.03993989, 0.0397616, 0.0397616, 13.81561301], [1517083200000, 0.0397616, 0.0397616, 0.03975301, 0.03975301, 0.81791574], [1517083260000, 0.0397616, 0.0397616, 0.0397616, 0.0397616, 0.05546796], [1517083320000, 0.0397616, 0.0397616, 0.03975301, 0.03975301, 0.55147104], [1517083380000, 0.039715, 0.0397616, 0.039715, 0.0397616, 1.8008125], [1517083440000, 0.0397616, 0.0397616, 0.0397616, 0.0397616, 0.02776681], [1517083500000, 0.03976159, 0.03976159, 0.03976159, 0.03976159, 0.0510992], [1517083560000, 0.03976159, 0.03976159, 0.03976159, 0.03976159, 0.09877386], [1517083620000, 0.03976159, 0.03993989, 0.03976159, 0.03993989, 0.6537276], [1517083680000, 0.0397616, 0.03993989, 0.0397616, 0.03993989, 0.4653729], [1517083800000, 0.03993989, 0.03993989, 0.0397616, 0.0397616, 0.48303575], [1517083920000, 0.0397616, 0.0397616, 0.03976159, 0.03976159, 0.32664218], [1517084040000, 0.03976159, 0.03976159, 0.03976159, 0.03976159, 0.13570048], [1517084100000, 0.03976159, 0.03976159, 0.03976159, 0.03976159, 0.04863673], [1517084160000, 0.03976159, 0.0397616, 0.03976159, 0.0397616, 0.04656399], [1517084220000, 0.03976159, 0.03976159, 0.03970502, 0.03970502, 2.43562064], [1517084280000, 0.0397616, 0.03993781, 0.03970502, 0.03970502, 1.95790602], [1517084340000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 0.18150692], [1517084460000, 0.0397616, 0.0397616, 0.0397616, 0.0397616, 1.02772776], [1517084520000, 0.0397616, 0.0397616, 0.0397616, 0.0397616, 0.02772776], [1517084640000, 0.0397616, 0.0397616, 0.0397616, 0.0397616, 0.08945552], [1517084700000, 0.0397616, 0.0397616, 0.0397616, 0.0397616, 0.05545552], [1517084760000, 0.0397616, 0.0397616, 0.03975199, 0.03975199, 0.54616567], [1517084820000, 0.03981996, 0.03981996, 0.03975199, 0.03975199, 0.1660965], [1517084880000, 0.03975199, 0.03975199, 0.03975199, 0.03975199, 0.02773446], [1517084940000, 0.03975199, 0.03975199, 0.03975199, 0.03975199, 0.05293971], [1517085060000, 0.03981996, 0.03981996, 0.03981996, 0.03981996, 0.01711639], [1517085120000, 0.03975208, 0.03991999, 0.03975208, 0.03988945, 3.84832489], [1517085180000, 0.03975208, 0.03975208, 0.03975199, 0.03975208, 0.98469634], [1517085240000, 0.03975208, 0.03975208, 0.03975208, 0.03975208, 2.19752954], [1517085300000, 0.03975208, 0.03979183, 0.03975208, 0.03979183, 0.13794432], [1517085360000, 0.03991998, 0.03991998, 0.03979183, 0.03979183, 0.90029783], [1517085420000, 0.03975199, 0.03979183, 0.03975199, 0.03979183, 1.12617087], [1517085480000, 0.03979183, 0.03979183, 0.03979183, 0.03979183, 0.05541338], [1517085540000, 0.03979183, 0.03979183, 0.03979183, 0.03979183, 0.02770669], [1517085600000, 0.03979183, 0.03979183, 0.03979183, 0.03979183, 0.08312007], [1517085660000, 0.03979183, 0.03979183, 0.03979183, 0.03979183, 0.02770669], [1517085720000, 0.03979183, 0.03979183, 0.03979183, 0.03979183, 0.37042057], [1517085780000, 0.03979183, 0.03991993, 0.03979183, 0.03979183, 0.28999366], [1517085840000, 0.03979183, 0.03979183, 0.03979183, 0.03979183, 0.26791338], [1517085900000, 0.03979183, 0.03979183, 0.03979183, 0.03979183, 1.10167048], [1517085960000, 0.03979183, 0.03979183, 0.03979183, 0.03979183, 0.02770669], [1517086020000, 0.03979183, 0.03991998, 0.03979, 0.03979, 0.42191701], [1517086080000, 0.03979, 0.03979, 0.03979, 0.03979, 0.02770797], [1517086140000, 0.03991997, 0.03993943, 0.03979, 0.03993943, 1.65606932], [1517086200000, 0.03979, 0.03979, 0.03979, 0.03979, 0.02770797], [1517086260000, 0.03979, 0.03979, 0.03979, 0.03979, 0.05541594], [1517086320000, 0.03991998, 0.03991998, 0.03979, 0.03979, 0.15106524], [1517086380000, 0.0398, 0.03991998, 0.0398, 0.03991998, 0.05569884], [1517086440000, 0.0398, 0.0398, 0.0398, 0.0398, 0.89058496], [1517086500000, 0.0398, 0.0398, 0.03979, 0.03979, 0.55331842], [1517086560000, 0.0398, 0.0398, 0.03979, 0.03979, 1.63091295], [1517086620000, 0.0398, 0.0398, 0.03979, 0.0398, 0.59754488], [1517086680000, 0.03979001, 0.03979001, 0.03979001, 0.03979001, 0.05541592], [1517086740000, 0.03979001, 0.0398, 0.03979001, 0.0398, 1.09302439], [1517086800000, 0.0398, 0.0398, 0.03979001, 0.03979001, 0.3068123], [1517086860000, 0.03979001, 0.0398, 0.03979001, 0.0398, 0.15784451], [1517086920000, 0.03979001, 0.0398, 0.03979001, 0.0398, 3.06241891], [1517086980000, 0.03979001, 0.03979001, 0.03979001, 0.03979001, 0.08537846], [1517087040000, 0.03979001, 0.03979001, 0.03979, 0.03979, 4.23077547], [1517087100000, 0.03979, 0.03979, 0.03975199, 0.03975199, 3.56928957], [1517087160000, 0.039752, 0.039752, 0.03975199, 0.03975199, 0.81773445], [1517087220000, 0.03975199, 0.03975199, 0.03975199, 0.03975199, 1.30740123], [1517087280000, 0.03975199, 0.03979, 0.03975199, 0.03979, 1.99429137], [1517087340000, 0.0398, 0.03988685, 0.03975199, 0.03975199, 3.28588237], [1517087400000, 0.03975199, 0.03975199, 0.03974365, 0.03974365, 0.22426334], [1517087460000, 0.03975199, 0.03977765, 0.03974365, 0.03977765, 1.78480601], [1517087520000, 0.03988685, 0.03988686, 0.03988685, 0.03988686, 0.30518438], [1517087580000, 0.03988686, 0.03988686, 0.03977765, 0.03988685, 0.47947814], [1517087640000, 0.03988686, 0.03988686, 0.03977765, 0.03977765, 0.44845326], [1517087700000, 0.03977765, 0.03988686, 0.03974365, 0.03974365, 7.99590091], [1517087760000, 0.03974365, 0.03974365, 0.03970502, 0.03970502, 5.94909104], [1517087820000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 0.10855184], [1517087880000, 0.03977765, 0.03991997, 0.03970502, 0.03970502, 1.91653607], [1517087940000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 0.41516037], [1517088000000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 1.0717348], [1517088060000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 0.05553454], [1517088120000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 0.59859523], [1517088180000, 0.03970502, 0.03979999, 0.03970502, 0.03979999, 16.52678328], [1517088240000, 0.03979999, 0.03991986, 0.03970502, 0.03970502, 3.07762639], [1517088300000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 0.05553454], [1517088360000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 13.47239062], [1517088420000, 0.03970502, 0.03971, 0.03970502, 0.03971, 0.05848845], [1517088480000, 0.03971, 0.03991974, 0.03970502, 0.03991973, 9.4266977], [1517088660000, 0.03970503, 0.03970503, 0.03970503, 0.03970503, 0.22363409], [1517088720000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 0.02776727], [1517088780000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 0.28917617], [1517088840000, 0.03970502, 0.03988997, 0.03970502, 0.03970502, 0.42193968], [1517088900000, 0.03987499, 0.03987499, 0.03970502, 0.03970502, 1.68803862], [1517088960000, 0.03970502, 0.03974472, 0.03970502, 0.03974472, 0.0555068], [1517089020000, 0.03975, 0.03978975, 0.03975, 0.03978975, 0.72411537], [1517089080000, 0.03978975, 0.03978975, 0.03978975, 0.03978975, 0.16494164], [1517089140000, 0.03978975, 0.039895, 0.03978975, 0.03989497, 2.75481819], [1517089200000, 0.03978975, 0.03978975, 0.03974472, 0.03974472, 4.06233826], [1517089260000, 0.03974472, 0.03974472, 0.03970502, 0.03970502, 2.15501612], [1517089320000, 0.03970502, 0.03970503, 0.03970502, 0.03970502, 5.95388982], [1517089380000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 1.42139139], [1517089440000, 0.03970502, 0.03970503, 0.03970502, 0.03970502, 0.46014333], [1517089500000, 0.03970502, 0.03970503, 0.03970502, 0.03970502, 0.29650176], [1517089560000, 0.03970502, 0.03970503, 0.03970502, 0.03970502, 1.56123695], [1517089620000, 0.03970502, 0.03970503, 0.03970502, 0.03970502, 12.20857617], [1517089680000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 0.05553454], [1517089740000, 0.03970502, 0.03970502, 0.03970502, 0.03970502, 0.05553454], [1517089800000, 0.03970502, 0.03970503, 0.03970502, 0.03970502, 0.36976232], [1517089860000, 0.03970503, 0.039878, 0.03970502, 0.03987798, 1.7178088], [1517089920000, 0.03970502, 0.03986797, 0.039705, 0.03986797, 14.61243641], [1517089980000, 0.039705, 0.039705, 0.0396, 0.0396, 1.19084696], [1517090040000, 0.0396, 0.03963959, 0.0396, 0.03963959, 0.63053301], [1517090100000, 0.03963959, 0.03963959, 0.03945601, 0.03945601, 0.79009829], [1517090160000, 0.039495, 0.039495, 0.03949499, 0.039495, 1.53002726], [1517090220000, 0.039495, 0.039495, 0.039495, 0.039495, 18.60496732], [1517090280000, 0.039495, 0.039495, 0.039495, 0.039495, 1.71165066], [1517090340000, 0.039495, 0.039495, 0.039495, 0.039495, 0.0935736], [1517090400000, 0.039495, 0.03963959, 0.039495, 0.03963959, 0.3649716], [1517090460000, 0.03963959, 0.03980898, 0.03963959, 0.03973114, 0.42932751], [1517090580000, 0.0397311, 0.0397311, 0.0397311, 0.0397311, 0.08324712], [1517090640000, 0.0397311, 0.0397311, 0.0397311, 0.0397311, 0.04259878], [1517090820000, 0.03953247, 0.03953247, 0.03947423, 0.03947423, 0.40405974], [1517090880000, 0.03945601, 0.03968991, 0.03945601, 0.03968991, 4.11062099], [1517090940000, 0.03969239, 0.03969239, 0.039446, 0.039446, 0.26182604], [1517091000000, 0.03945102, 0.03945102, 0.039451, 0.039451, 2.0], [1517091180000, 0.03974499, 0.03974499, 0.03974499, 0.03974499, 0.61219322], [1517091240000, 0.03972499, 0.03972499, 0.03972499, 0.03972499, 0.1231527], [1517091300000, 0.03969399, 0.03969399, 0.03952335, 0.03952335, 0.47977012], [1517091360000, 0.03960399, 0.03960399, 0.03960399, 0.03960399, 0.0278381], [1517091420000, 0.03969095, 0.03977799, 0.03969095, 0.03969095, 2.80710261], [1517091480000, 0.03969095, 0.03969096, 0.03960399, 0.03960399, 0.6907116], [1517091540000, 0.03960399, 0.03960399, 0.03960399, 0.03960399, 0.10350393], [1517091600000, 0.03964359, 0.03964359, 0.03964359, 0.03964359, 0.3511603], [1517091660000, 0.03964359, 0.03964359, 0.03964359, 0.03964359, 0.0556206], [1517091720000, 0.03964359, 0.03964359, 0.03964359, 0.03964359, 0.0556206], [1517091780000, 0.03964359, 0.03969095, 0.03964359, 0.03964359, 0.42533515], [1517091840000, 0.03964359, 0.03964359, 0.03964359, 0.03964359, 1.24368331], [1517091900000, 0.03966727, 0.03980611, 0.03964359, 0.03964359, 3.1374056], [1517091960000, 0.03964359, 0.03964359, 0.03964359, 0.03964359, 0.6705105], [1517092020000, 0.039604, 0.039604, 0.03960399, 0.03960399, 0.21371573], [1517092080000, 0.03960399, 0.03960399, 0.039441, 0.039441, 5.0], [1517092140000, 0.03951, 0.03951, 0.039446, 0.039446, 3.13028916], [1517092200000, 0.039446, 0.039446, 0.039446, 0.039446, 0.194096], [1517092260000, 0.03964358, 0.03964358, 0.03964358, 0.03964358, 0.01705422], [1517092440000, 0.03964357, 0.03964359, 0.03964357, 0.03964359, 19.14632324], [1517092500000, 0.03965, 0.039846, 0.03965, 0.039846, 1.0362825], [1517092560000, 0.03965002, 0.039895, 0.03965002, 0.039895, 12.66272979], [1517092620000, 0.03965006, 0.03965006, 0.03965006, 0.03965006, 0.95], [1517092680000, 0.0397, 0.039701, 0.0397, 0.039701, 0.86975469], [1517092860000, 0.0397001, 0.0397001, 0.0397, 0.0397, 1.57048007], [1517092920000, 0.0397, 0.0397, 0.03965005, 0.03965005, 0.08997739], [1517093100000, 0.03965005, 0.03965005, 0.03965005, 0.03965005, 0.08369452], [1517093160000, 0.0397, 0.0397, 0.0397, 0.0397, 0.01697981], [1517093220000, 0.03969998, 0.03969999, 0.03958001, 0.03958001, 2.5887398], [1517093280000, 0.03958001, 0.03970001, 0.03958, 0.03970001, 6.65967888], [1517093460000, 0.0396, 0.0396, 0.03953803, 0.03953803, 36.53603473], [1517093520000, 0.03970001, 0.03991984, 0.03970001, 0.0399, 14.48761188], [1517093580000, 0.0399, 0.03990001, 0.03961005, 0.03990001, 57.77782848], [1517093640000, 0.0396356, 0.03963561, 0.0396356, 0.03963561, 0.15], [1517093760000, 0.03990001, 0.03991, 0.03964532, 0.03991, 2.81987683], [1517093820000, 0.03991, 0.03991, 0.03964533, 0.03964533, 0.32929912], [1517093880000, 0.03991982, 0.03991984, 0.03964532, 0.03965501, 4.80265749], [1517093940000, 0.03965501, 0.03965502, 0.03964532, 0.03964532, 0.42413693], [1517094000000, 0.03960001, 0.03960001, 0.03960001, 0.03960001, 0.02780908], [1517094060000, 0.03964533, 0.03988768, 0.03964533, 0.03988768, 0.85691513], [1517094120000, 0.03988765, 0.03988765, 0.03970002, 0.03970002, 0.10972371], [1517094180000, 0.03970002, 0.03988764, 0.03970002, 0.03988764, 0.33588255], [1517094240000, 0.03970002, 0.03988765, 0.03970002, 0.03988765, 1.11191502], [1517094300000, 0.03988763, 0.03988764, 0.03970002, 0.03988764, 4.23728045], [1517094360000, 0.03988763, 0.03988763, 0.03970002, 0.03970002, 0.52953071], [1517094420000, 0.03970002, 0.03988759, 0.03970002, 0.03988759, 0.18562523], [1517094480000, 0.03970003, 0.03970003, 0.03970003, 0.03970003, 0.02777076], [1517094540000, 0.03970003, 0.03988756, 0.03970002, 0.03970003, 1.38109828], [1517094600000, 0.03970003, 0.03988756, 0.03970003, 0.03988756, 0.33124599], [1517094660000, 0.03970003, 0.03970003, 0.03970003, 0.03970003, 0.07605568], [1517094720000, 0.03970003, 0.03970003, 0.03970003, 0.03970003, 0.55603155], [1517094780000, 0.03970003, 0.03988753, 0.03970003, 0.03970004, 0.36584862], [1517094840000, 0.03970003, 0.03970004, 0.03970003, 0.03970004, 0.05554151], [1517094900000, 0.03970004, 0.03988757, 0.03970004, 0.03988757, 1.78270204], [1517094960000, 0.03988757, 0.03988757, 0.03988757, 0.03988757, 2.03615198], [1517095020000, 0.03970004, 0.03970004, 0.03970003, 0.03970004, 0.2133738], [1517095080000, 0.03970004, 0.03970004, 0.03970004, 0.03970004, 0.17462862], [1517095140000, 0.03970003, 0.03970004, 0.03970003, 0.03970004, 0.04917076], [1517095200000, 0.03970004, 0.0398876, 0.03970003, 0.0398876, 2.26566891], [1517095260000, 0.0398876, 0.03988765, 0.03970003, 0.03970003, 1.78129187], [1517095320000, 0.03970003, 0.03988765, 0.03970003, 0.03970003, 0.46896509], [1517095380000, 0.03970003, 0.03988765, 0.03970003, 0.03970003, 1.12662832], [1517095440000, 0.03970003, 0.03988764, 0.03970003, 0.03970003, 0.9304026], [1517095500000, 0.03970003, 0.03991979, 0.0397, 0.03991977, 8.39825095], [1517095560000, 0.0397, 0.0397, 0.0397, 0.0397, 5.95390963], [1517095620000, 0.03960002, 0.03960002, 0.03960002, 0.03960002, 0.5286], [1517095680000, 0.03960374, 0.03960374, 0.03960001, 0.03960001, 0.18888568], [1517095740000, 0.03960374, 0.03960374, 0.0396, 0.0396, 0.51425192], [1517095800000, 0.03960374, 0.03979978, 0.03960374, 0.03979978, 0.80349616], [1517095860000, 0.03986236, 0.03986236, 0.03960002, 0.03986235, 0.32091589], [1517095980000, 0.03983997, 0.03986235, 0.039602, 0.039602, 29.50845285], [1517096040000, 0.03986238, 0.03986238, 0.03986238, 0.03986238, 1.8966482], [1517096100000, 0.03986238, 0.0399, 0.03986238, 0.0399, 0.75258888], [1517096220000, 0.03989996, 0.03990997, 0.03961529, 0.03961529, 1.17630406], [1517096280000, 0.03989998, 0.03989999, 0.03989997, 0.03989997, 2.09521315], [1517096340000, 0.03989997, 0.03989997, 0.03976042, 0.03989997, 0.11540988], [1517096400000, 0.03988999, 0.03988999, 0.03988999, 0.03988999, 0.25068939], [1517096520000, 0.03988999, 0.03988999, 0.03988999, 0.03988999, 5.85005449], [1517096580000, 0.03988999, 0.03988999, 0.03988999, 0.03988999, 8.98250298], [1517096640000, 0.03987997, 0.03987997, 0.03987996, 0.03987996, 17.83718262], [1517096700000, 0.03988999, 0.03988999, 0.03988999, 0.03988999, 0.50137878], [1517096760000, 0.03988, 0.03988, 0.03960802, 0.03960802, 0.13539496], [1517096820000, 0.03960802, 0.03960802, 0.03960802, 0.03960802, 1.7431785], [1517096880000, 0.03960802, 0.03960802, 0.03960802, 0.03960802, 2.5741275], [1517096940000, 0.03960802, 0.03960802, 0.03960802, 0.03960802, 0.51625064], [1517097000000, 0.03960802, 0.03960802, 0.039602, 0.039602, 0.61667338], [1517097060000, 0.039602, 0.039602, 0.0396, 0.039602, 0.28563401], [1517097120000, 0.039602, 0.039602, 0.039602, 0.039602, 4.90423843], [1517097180000, 0.03960802, 0.039885, 0.03960802, 0.039885, 9.07271148], [1517097240000, 0.03960204, 0.03960204, 0.03960204, 0.03960204, 0.10062012], [1517097300000, 0.03988988, 0.03988988, 0.03988824, 0.03988824, 0.05610425], [1517097360000, 0.03960219, 0.03960219, 0.03960218, 0.03960218, 1.04143902], [1517097480000, 0.03960207, 0.03960207, 0.039602, 0.039602, 4.54499999], [1517097540000, 0.03960201, 0.03960203, 0.03960201, 0.03960203, 1.67390796], [1517097600000, 0.03985676, 0.03985676, 0.03985676, 0.03985676, 0.0185566], [1517097660000, 0.03985199, 0.03985199, 0.03985199, 0.03985199, 0.01852372], [1517097720000, 0.03960207, 0.03960207, 0.039602, 0.039602, 0.1], [1517097780000, 0.0398466, 0.03984699, 0.039602, 0.039602, 0.40081936], [1517097840000, 0.039602, 0.03983698, 0.039602, 0.03983698, 3.06694668], [1517097900000, 0.039602, 0.03984699, 0.039602, 0.039602, 0.26944851], [1517097960000, 0.039602, 0.03983699, 0.039602, 0.03983699, 2.42017333], [1517098020000, 0.03960203, 0.03960203, 0.03960203, 0.03960203, 0.34422232], [1517098200000, 0.03960203, 0.03983197, 0.039602, 0.039602, 1.27681092], [1517098260000, 0.03960201, 0.03960201, 0.03960201, 0.03960201, 0.05089285], [1517098320000, 0.03960201, 0.03960201, 0.039602, 0.039602, 0.25791802], [1517098380000, 0.039602, 0.039602, 0.0396, 0.0396, 0.14296757], [1517098440000, 0.0396, 0.03981199, 0.0396, 0.03981199, 1.75278343], [1517098560000, 0.03979199, 0.03979199, 0.0396, 0.03979199, 0.93864186], [1517098740000, 0.03978499, 0.03978699, 0.03978499, 0.03978699, 4.18761322], [1517098800000, 0.03978699, 0.03978699, 0.03978699, 0.03978699, 0.97853031], [1517098860000, 0.03978699, 0.03978699, 0.03978699, 0.03978699, 0.02146969], [1517099040000, 0.03978, 0.03978, 0.03978, 0.03978, 0.13411861], [1517099160000, 0.03981199, 0.03981199, 0.03981199, 0.03981199, 0.02511806], [1517099220000, 0.039811, 0.03981599, 0.039811, 0.03981599, 1.3436031], [1517099340000, 0.0397, 0.039811, 0.03960001, 0.039811, 1.47596208], [1517099460000, 0.03970001, 0.039811, 0.0396, 0.0396, 5.89629101], [1517099520000, 0.0396, 0.03981099, 0.0396, 0.03981099, 0.24875722], [1517099580000, 0.0396, 0.03961001, 0.0396, 0.03961001, 0.33289923], [1517099640000, 0.0396, 0.03961, 0.0396, 0.03961, 1.5040347], [1517099700000, 0.03961, 0.03961, 0.03961, 0.03961, 0.12656999], [1517099820000, 0.03981096, 0.039811, 0.03981096, 0.039811, 0.05532393], [1517099880000, 0.039811, 0.039811, 0.039811, 0.039811, 0.64887103], [1517099940000, 0.03981096, 0.03981096, 0.0396, 0.0396, 1.82022819], [1517100000000, 0.03981098, 0.03981098, 0.0396, 0.0396, 1.99793382], [1517100060000, 0.03960001, 0.03960001, 0.03960001, 0.03960001, 2.56720358], [1517100120000, 0.0396, 0.03960502, 0.0396, 0.03960502, 2.22019084], [1517100180000, 0.03981094, 0.03981094, 0.03981094, 0.03981094, 0.07721534], [1517100240000, 0.03981093, 0.03981094, 0.03981093, 0.03981094, 1.96975077], [1517100300000, 0.03981093, 0.03981093, 0.03981093, 0.03981093, 0.25118748], [1517100360000, 0.03980499, 0.03980499, 0.03980499, 0.03980499, 0.01545879], [1517100420000, 0.03960001, 0.03960001, 0.0396, 0.0396, 8.12453549], [1517100480000, 0.0396, 0.0396, 0.0396, 0.0396, 0.32104639], [1517100540000, 0.03960003, 0.03960003, 0.03960003, 0.03960003, 0.05809365], [1517100600000, 0.0398109, 0.0398109, 0.0396, 0.0396, 0.47943958], [1517100660000, 0.0396, 0.0396, 0.0396, 0.0396, 2.0148915], [1517100720000, 0.0396, 0.0396, 0.0396, 0.0396, 0.748547], [1517100840000, 0.0396, 0.03981083, 0.0396, 0.03981083, 2.03758386], [1517100900000, 0.03981088, 0.03981089, 0.03981088, 0.03981089, 0.9860488], [1517100960000, 0.03981089, 0.0398109, 0.03981083, 0.03981083, 2.80623838], [1517101020000, 0.03981083, 0.03981089, 0.03981083, 0.03981089, 0.38487519], [1517101080000, 0.03981089, 0.03981089, 0.03981083, 0.03981089, 1.33109963], [1517101140000, 0.03981089, 0.03981089, 0.03981083, 0.03981083, 0.05160788], [1517101200000, 0.03981089, 0.03981089, 0.03981083, 0.03981089, 0.41968813], [1517101260000, 0.03981089, 0.03981089, 0.03981083, 0.03981083, 0.04365953], [1517101320000, 0.03981088, 0.03981088, 0.03981083, 0.03981083, 1.03362878], [1517101380000, 0.03981084, 0.03981084, 0.03981084, 0.03981084, 0.05538693], [1517101440000, 0.03981084, 0.03981084, 0.03981084, 0.03981084, 0.05538692], [1517101500000, 0.03981084, 0.03981084, 0.03981084, 0.03981084, 0.05538692], [1517101560000, 0.03981084, 0.03981087, 0.03981083, 0.03981083, 1.13982359], [1517101620000, 0.03981083, 0.03981087, 0.03981083, 0.03981083, 0.43216845], [1517101680000, 0.03981083, 0.03981083, 0.03981083, 0.03981083, 2.44993823], [1517101740000, 0.03981087, 0.03981087, 0.03967159, 0.03981083, 0.65732776], [1517101800000, 0.03981083, 0.03981089, 0.03981083, 0.03981089, 4.62466157], [1517101860000, 0.0398109, 0.03991984, 0.03968671, 0.03991984, 11.54381228], [1517101920000, 0.03981088, 0.03991982, 0.03981088, 0.03981088, 5.63179028], [1517101980000, 0.03981088, 0.03981088, 0.03981085, 0.03981085, 2.86878164], [1517102040000, 0.039615, 0.039615, 0.039615, 0.039615, 0.2796696], [1517102100000, 0.039605, 0.03981086, 0.0396, 0.0396, 2.84975329], [1517102160000, 0.03981086, 0.03981086, 0.0396, 0.0396, 1.16039924], [1517102340000, 0.03981086, 0.03984811, 0.03981086, 0.03984765, 1.06486641], [1517102400000, 0.0396, 0.0396, 0.03957001, 0.0396, 1.6430024], [1517102460000, 0.03959999, 0.0396, 0.03959998, 0.0396, 2.02794748], [1517102520000, 0.0396, 0.0396, 0.0396, 0.0396, 0.5], [1517102580000, 0.03961, 0.03987393, 0.03961, 0.03987393, 26.40735639], [1517102640000, 0.03961033, 0.03961033, 0.03961033, 0.03961033, 0.10333475], [1517102760000, 0.03987389, 0.03987393, 0.03987389, 0.03987393, 0.83440557], [1517102820000, 0.03987393, 0.03987393, 0.03987393, 0.03987393, 0.02577659], [1517102940000, 0.03986899, 0.03987392, 0.03961101, 0.03961101, 0.7158968], [1517103000000, 0.03986899, 0.03987392, 0.03986899, 0.03987392, 0.24408599], [1517103060000, 0.03986899, 0.03987392, 0.03986899, 0.0398691, 0.91529493], [1517103120000, 0.0398739, 0.0398739, 0.0398691, 0.03986911, 0.23013948], [1517103180000, 0.0398691, 0.0398691, 0.0398691, 0.0398691, 0.05530598], [1517103240000, 0.0398691, 0.0398691, 0.0398691, 0.0398691, 4.83738951], [1517103300000, 0.03986911, 0.03986911, 0.0398691, 0.0398691, 16.22377983], [1517103360000, 0.0398691, 0.03987392, 0.0398691, 0.0398691, 0.60469255], [1517103420000, 0.0398691, 0.0398691, 0.0398691, 0.0398691, 0.3807313], [1517103480000, 0.0398691, 0.0398691, 0.0398691, 0.0398691, 0.05530598], [1517103540000, 0.03986912, 0.03986912, 0.03986912, 0.03986912, 0.54530596], [1517103600000, 0.03986913, 0.03986913, 0.03986913, 0.03986913, 0.05530594], [1517103660000, 0.03986913, 0.03993989, 0.03986913, 0.03986913, 0.3181339], [1517103720000, 0.03986913, 0.03986913, 0.03986912, 0.03986912, 0.35530594], [1517103780000, 0.03993949, 0.0399399, 0.03986912, 0.03986912, 0.8895869], [1517103840000, 0.03986912, 0.03986912, 0.03986912, 0.03986912, 0.0512457], [1517103900000, 0.03986912, 0.03986912, 0.03986912, 0.03986912, 0.165768], [1517103960000, 0.03986912, 0.0399399, 0.03986912, 0.03986912, 1.11314451], [1517104020000, 0.03986912, 0.03986912, 0.03986912, 0.03986912, 0.05530596], [1517104080000, 0.03986912, 0.0399399, 0.03986912, 0.03986912, 0.42293463], [1517104140000, 0.03986912, 0.03986912, 0.03986912, 0.03986912, 22.08515355], [1517104200000, 0.03986392, 0.03986392, 0.03986392, 0.03986392, 0.1254267], [1517104320000, 0.039605, 0.03986912, 0.03960105, 0.03985912, 0.46052016], [1517104380000, 0.039606, 0.039606, 0.039606, 0.039606, 1.51128525], [1517104500000, 0.039606, 0.039611, 0.039606, 0.039611, 0.070002], [1517104560000, 0.03985912, 0.03985912, 0.03985912, 0.03985912, 0.1721261], [1517104800000, 0.03962603, 0.03985912, 0.03962603, 0.03985912, 0.30026306], [1517104920000, 0.03985912, 0.03985912, 0.03985912, 0.03985912, 0.1608031], [1517104980000, 0.039611, 0.039611, 0.039611, 0.039611, 0.41175635], [1517105100000, 0.03985912, 0.03985912, 0.03985912, 0.03985912, 0.28839425], [1517105340000, 0.03985911, 0.03985912, 0.039611, 0.039611, 2.01514265], [1517105580000, 0.03962101, 0.03985912, 0.03962101, 0.03985912, 0.72912804], [1517105640000, 0.03985912, 0.03985912, 0.03985912, 0.03985912, 0.34853239], [1517105700000, 0.03964607, 0.03964607, 0.03964607, 0.03964607, 0.099788], [1517105760000, 0.03985912, 0.03985912, 0.03985912, 0.03985912, 0.34182153], [1517105820000, 0.03975, 0.03985912, 0.03975, 0.03985912, 1.12012756], [1517105880000, 0.03970102, 0.03970103, 0.03970102, 0.03970103, 0.43399748], [1517106000000, 0.03965601, 0.03965601, 0.03965601, 0.03965601, 0.05080131], [1517106060000, 0.03985912, 0.03985912, 0.03985912, 0.03985912, 0.10536805], [1517106120000, 0.03985912, 0.03985912, 0.03985912, 0.03985912, 1.14591397], [1517106240000, 0.03985912, 0.03986912, 0.03985912, 0.03986912, 0.25610579], [1517106300000, 0.03986912, 0.03986912, 0.03986912, 0.03986912, 0.25082081], [1517106420000, 0.03986912, 0.03986912, 0.03986912, 0.03986912, 1.25096817], [1517106540000, 0.03986912, 0.0399399, 0.03986912, 0.0399399, 1.28518319], [1517106600000, 0.03991, 0.03991, 0.03965409, 0.03965409, 0.28523852], [1517106660000, 0.03991, 0.03991, 0.03965411, 0.03966402, 2.56953978], [1517106720000, 0.039675, 0.039675, 0.0396699, 0.0396699, 0.43062329], [1517106780000, 0.03968501, 0.03968503, 0.03968501, 0.03968503, 0.17536544], [1517106840000, 0.03968503, 0.03969002, 0.03968502, 0.03969, 6.92752459], [1517106900000, 0.0397, 0.03991, 0.0397, 0.0397, 1.47820035], [1517106960000, 0.0397, 0.0397, 0.0397, 0.0397, 3.95439412], [1517107140000, 0.039805, 0.0399399, 0.03970001, 0.0397051, 2.03286976], [1517107200000, 0.03970004, 0.0397051, 0.03970001, 0.0397051, 9.46628399], [1517107260000, 0.0397051, 0.0399399, 0.03970001, 0.03970001, 1.04370741], [1517107320000, 0.03970256, 0.03990107, 0.03970256, 0.03990107, 0.05526181], [1517107380000, 0.03990107, 0.03990107, 0.03990107, 0.03990107, 0.09561527], [1517107440000, 0.03990107, 0.03990107, 0.03990107, 0.03990107, 0.05526168], [1517107500000, 0.03990107, 0.03996335, 0.03990107, 0.03990107, 9.28512434], [1517107560000, 0.03996335, 0.03996335, 0.03996335, 0.03996335, 0.01705046], [1517107620000, 0.03990107, 0.03990107, 0.03990107, 0.03990107, 0.099788], [1517107680000, 0.0399011, 0.0399011, 0.0399011, 0.0399011, 0.03827611], [1517107740000, 0.0399011, 0.0399011, 0.03990107, 0.03990107, 0.46708039], [1517107800000, 0.03990107, 0.03996915, 0.03990107, 0.03996915, 0.68417179], [1517107860000, 0.03990107, 0.03990107, 0.03990107, 0.03990107, 0.05526168], [1517107920000, 0.03990107, 0.03990107, 0.03990107, 0.03990107, 0.05526168], [1517107980000, 0.03990107, 0.03990107, 0.03990107, 0.03990107, 0.1312], [1517108040000, 0.03990107, 0.03990107, 0.03990107, 0.03990107, 0.10120168], [1517108100000, 0.03990107, 0.03990107, 0.03990107, 0.03990107, 0.05526168], [1517108160000, 0.03990107, 0.03998999, 0.03990107, 0.03998999, 0.26006358], [1517108220000, 0.03990107, 0.03990107, 0.03990107, 0.03990107, 0.02763084], [1517108280000, 0.03998998, 0.039995, 0.03990107, 0.03990107, 6.55816569], [1517108340000, 0.03990107, 0.03990107, 0.03990107, 0.03990107, 0.05526168], [1517108400000, 0.03990107, 0.03990107, 0.03990107, 0.03990107, 0.1976333], [1517108460000, 0.03990107, 0.03990107, 0.03990107, 0.03990107, 0.0931016], [1517108640000, 0.03990107, 0.04, 0.03990107, 0.03990107, 2.28660677], [1517108700000, 0.03990107, 0.04, 0.03976152, 0.04, 0.32261262], [1517108760000, 0.03970301, 0.03970301, 0.03970301, 0.03970301, 0.141797], [1517108880000, 0.03999498, 0.04, 0.03999498, 0.04, 11.4565269], [1517108940000, 0.04, 0.040022, 0.04, 0.040022, 0.0705518], [1517109000000, 0.040017, 0.040017, 0.040017, 0.040017, 0.15], [1517109060000, 0.03971029, 0.03971029, 0.03971029, 0.03971029, 1.70564422], [1517109120000, 0.03971029, 0.03971029, 0.03971029, 0.03971029, 0.02518238], [1517109180000, 0.03971029, 0.03971029, 0.03966402, 0.03966402, 0.15702313], [1517109240000, 0.03971029, 0.03971029, 0.03971029, 0.03971029, 4.9875], [1517109300000, 0.03971029, 0.03971029, 0.03971029, 0.03971029, 0.0143423], [1517109360000, 0.03971029, 0.03971029, 0.03971029, 0.03971029, 0.02137529], [1517109420000, 0.03966402, 0.03966402, 0.03966402, 0.03966402, 0.40036776], [1517109540000, 0.03971029, 0.04, 0.03971029, 0.04, 57.92232418], [1517109600000, 0.04, 0.04, 0.04, 0.04, 3.07767582], [1517109660000, 0.03971139, 0.03971139, 0.03971139, 0.03971139, 0.02403788], [1517109720000, 0.03971139, 0.03972201, 0.03971139, 0.03972201, 5.11143044], [1517109960000, 0.03968401, 0.03968401, 0.039684, 0.039684, 2.01592577], [1517110020000, 0.0396845, 0.0396845, 0.0396845, 0.0396845, 0.04378407], [1517110140000, 0.0396845, 0.0396845, 0.0396845, 0.0396845, 0.27283097], [1517110200000, 0.0396845, 0.03996599, 0.0396845, 0.03996599, 0.36664764], [1517110260000, 0.03968451, 0.03968451, 0.0396845, 0.0396845, 1.03026696], [1517110320000, 0.0396845, 0.0396845, 0.0396845, 0.0396845, 0.02151881], [1517110440000, 0.03996699, 0.03996699, 0.03996699, 0.03996699, 1.64994247], [1517110500000, 0.03996699, 0.03998, 0.03996699, 0.03998, 1.14653489], [1517110560000, 0.03971029, 0.03971029, 0.03971029, 0.03971029, 1.28700011], [1517110620000, 0.03971029, 0.03971029, 0.03971029, 0.03971029, 1e-07], [1517110680000, 0.03998, 0.04, 0.03998, 0.03998524, 0.50635413], [1517110740000, 0.03998524, 0.03998524, 0.03998524, 0.03998524, 0.03384888], [1517110800000, 0.03999993, 0.03999993, 0.03999993, 0.03999993, 0.25000062], [1517110860000, 0.03969001, 0.03969001, 0.03969001, 0.03969001, 0.1431], [1517110920000, 0.03970503, 0.03970503, 0.03970503, 0.03970503, 0.03219159], [1517110980000, 0.0399399, 0.0399399, 0.0399399, 0.0399399, 0.03231478], [1517111040000, 0.0399399, 0.0399399, 0.0399399, 0.0399399, 6.553e-05], [1517111100000, 0.03998892, 0.04000001, 0.03998892, 0.04000001, 2.25707238], [1517111160000, 0.03999997, 0.04000001, 0.03999997, 0.03999999, 7.24922236], [1517111220000, 0.03999999, 0.04, 0.03999999, 0.03999999, 2.82058738], [1517111280000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 2.44734743], [1517111340000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 0.44505202], [1517111400000, 0.03999999, 0.04, 0.03999999, 0.04, 4.96944159], [1517111460000, 0.03977582, 0.03977582, 0.03977582, 0.03977582, 0.15603268], [1517111520000, 0.04, 0.04, 0.04, 0.04, 0.03423417], [1517111700000, 0.04, 0.04, 0.04, 0.04, 0.68289944], [1517111760000, 0.03977584, 0.03991082, 0.03977584, 0.03991082, 1.22420856], [1517111820000, 0.039776, 0.03991082, 0.039776, 0.03991082, 0.22126601], [1517112000000, 0.03991082, 0.04004675, 0.03991082, 0.04004675, 0.63041938], [1517112060000, 0.04004674, 0.04004675, 0.03991082, 0.04004675, 0.2695531], [1517112180000, 0.03991082, 0.03991082, 0.03991082, 0.03991082, 1.01256481], [1517112240000, 0.03991082, 0.03991082, 0.039776, 0.03991082, 1.59976957], [1517112300000, 0.04004667, 0.04004667, 0.03991082, 0.03991082, 0.27733255], [1517112360000, 0.03991082, 0.03991082, 0.039776, 0.039776, 0.16976801], [1517112420000, 0.039776, 0.039776, 0.03977582, 0.03977582, 2.01127025], [1517112600000, 0.04000049, 0.04004673, 0.04000049, 0.04004673, 0.24999687], [1517112780000, 0.03977582, 0.03977582, 0.03977582, 0.03977582, 3.18731268], [1517112840000, 0.03977582, 0.04004675, 0.03977582, 0.04004675, 20.63546526], [1517112900000, 0.04003699, 0.040042, 0.04002699, 0.040042, 7.65404762], [1517113020000, 0.03977582, 0.03977582, 0.03977582, 0.03977582, 2.01127216], [1517113080000, 0.03977582, 0.03977582, 0.03977582, 0.03977582, 1.14649472], [1517113140000, 0.03977582, 0.03977582, 0.03977582, 0.03977582, 1.00563608], [1517113200000, 0.03977582, 0.04000444, 0.03977581, 0.03977581, 2.44242064], [1517113260000, 0.03977581, 0.03977581, 0.03977581, 0.03977581, 0.159], [1517113320000, 0.03977581, 0.03977581, 0.03968452, 0.0397758, 0.682054], [1517113380000, 0.03968452, 0.03968452, 0.039611, 0.0396845, 2.08827185], [1517113440000, 0.0396845, 0.0396845, 0.039611, 0.039611, 0.24642439], [1517113500000, 0.0396845, 0.0396845, 0.0396845, 0.0396845, 0.52917385], [1517113560000, 0.039611, 0.039611, 0.03957024, 0.03957024, 2.05], [1517113620000, 0.039611, 0.039611, 0.039611, 0.039611, 1.11030344], [1517113680000, 0.039611, 0.03967878, 0.039611, 0.03966666, 2.71100462], [1517113740000, 0.03967878, 0.0396845, 0.03967878, 0.0396845, 2.50703862], [1517113800000, 0.03957025, 0.0396845, 0.03952012, 0.0396845, 18.9918608], [1517113860000, 0.0396845, 0.0396845, 0.0396845, 0.0396845, 0.01723008], [1517113920000, 0.03955, 0.03955, 0.03954999, 0.03955, 3.09624601], [1517113980000, 0.03955, 0.03955, 0.03955, 0.03955, 0.18870924], [1517114040000, 0.03968449, 0.03968449, 0.03968449, 0.03968449, 0.15371244], [1517114100000, 0.03968449, 0.0396845, 0.03968449, 0.03968449, 0.55695548], [1517114160000, 0.03968449, 0.03968449, 0.03955744, 0.03955744, 0.04613794], [1517114220000, 0.03955744, 0.03955744, 0.03955, 0.03955, 1.08368363], [1517114340000, 0.0396845, 0.0396845, 0.03952012, 0.03952012, 0.91001967], [1517114460000, 0.03958922, 0.0396845, 0.03958922, 0.0396845, 0.06133364], [1517114580000, 0.0395892, 0.0395892, 0.039489, 0.039489, 6.23939269], [1517114640000, 0.03955744, 0.03955744, 0.039489, 0.039489, 1.39566603], [1517114700000, 0.0396845, 0.0396845, 0.0396845, 0.0396845, 1.75031243], [1517114760000, 0.039495, 0.0396845, 0.039495, 0.0396845, 0.05438174], [1517114820000, 0.0396845, 0.0396845, 0.0396845, 0.0396845, 0.06767742], [1517114880000, 0.039684, 0.039684, 0.03949, 0.03949, 0.43270318], [1517114940000, 0.039684, 0.039684, 0.039684, 0.039684, 0.83444712], [1517115000000, 0.039684, 0.0396845, 0.039684, 0.0396845, 14.69745069], [1517115120000, 0.0396845, 0.03978099, 0.0396845, 0.03978099, 2.43677533], [1517115180000, 0.03952005, 0.03952005, 0.03952005, 0.03952005, 3.88312743], [1517115240000, 0.03952005, 0.03952005, 0.039495, 0.039495, 1.71042762], [1517115300000, 0.03951515, 0.03978099, 0.039495, 0.03978099, 2.9294624], [1517115360000, 0.0396, 0.0396, 0.03958, 0.03958, 5.20033912], [1517115540000, 0.0396, 0.0396, 0.0396, 0.0396, 0.0279151], [1517115600000, 0.0396, 0.03978098, 0.0396, 0.03978098, 0.56086938], [1517115660000, 0.03978098, 0.03978098, 0.03950001, 0.03950001, 2.34775619], [1517115720000, 0.03950473, 0.03978098, 0.03950473, 0.03978098, 0.06731496], [1517115780000, 0.03949672, 0.03949672, 0.03949001, 0.03949001, 0.53454504], [1517115840000, 0.03949001, 0.03949672, 0.03949001, 0.03949672, 3.75265918], [1517115900000, 0.03949, 0.03977562, 0.03949, 0.03977561, 2.35775206], [1517115960000, 0.03949014, 0.03949014, 0.03949, 0.03949014, 2.53292906], [1517116020000, 0.03949014, 0.03949014, 0.03949, 0.03949, 2.33013299], [1517116140000, 0.03949, 0.0397601, 0.03949, 0.0397601, 0.47642812], [1517116200000, 0.0397601, 0.0397601, 0.0397601, 0.0397601, 0.36604465], [1517116260000, 0.0397601, 0.0397601, 0.0397601, 0.0397601, 0.19609732], [1517116320000, 0.0397601, 0.0397601, 0.0397601, 0.0397601, 0.13454704], [1517116380000, 0.03949, 0.03949, 0.03949, 0.03949, 0.42894435], [1517116440000, 0.0397601, 0.03977152, 0.039465, 0.039465, 8.70569314], [1517116500000, 0.039465, 0.03977199, 0.039465, 0.03946505, 0.84115975], [1517116560000, 0.03947001, 0.03974531, 0.039451, 0.039451, 1.69169147], [1517116620000, 0.03975699, 0.03975699, 0.039446, 0.03945102, 1.3908269], [1517116680000, 0.039446, 0.039446, 0.03944515, 0.03944515, 36.91500067], [1517116740000, 0.03944515, 0.03944515, 0.03944515, 0.03944515, 0.13722809], [1517116800000, 0.03944515, 0.03944515, 0.03944515, 0.03944515, 0.06518459], [1517116860000, 0.03944515, 0.03945, 0.03944515, 0.03945, 6.16174051], [1517116920000, 0.039455, 0.039455, 0.039455, 0.039455, 0.1029], [1517117040000, 0.039455, 0.03946001, 0.039455, 0.03946001, 0.40589961], [1517117160000, 0.039455, 0.039455, 0.039455, 0.039455, 1.53081236], [1517117220000, 0.03974995, 0.03974995, 0.03945501, 0.03945501, 0.55592193], [1517117280000, 0.03946002, 0.03946002, 0.03946002, 0.03946002, 0.04386925], [1517117340000, 0.03948002, 0.03974995, 0.03948002, 0.03974995, 0.42034056], [1517117400000, 0.03950504, 0.03977562, 0.03950504, 0.03977562, 0.35308198], [1517117460000, 0.03974995, 0.03978098, 0.03953002, 0.03957001, 8.2645131], [1517117520000, 0.039575, 0.03958009, 0.039575, 0.03958, 2.09657556], [1517117640000, 0.03960501, 0.03984494, 0.03960501, 0.03984494, 0.66597611], [1517117700000, 0.03984494, 0.03984494, 0.03962001, 0.03984494, 3.33985852], [1517117760000, 0.039625, 0.03984494, 0.03952095, 0.03984494, 7.75260839], [1517117820000, 0.03984494, 0.03984494, 0.03956311, 0.03956311, 3.86534323], [1517117880000, 0.0396081, 0.03984494, 0.0396081, 0.039643, 5.35305987], [1517117940000, 0.03966702, 0.03989531, 0.03966702, 0.03989531, 0.24384733], [1517118000000, 0.039687, 0.03968702, 0.039687, 0.03968701, 1.30223873], [1517118060000, 0.03960001, 0.03960001, 0.03960001, 0.03960001, 0.78], [1517118120000, 0.0398, 0.0398, 0.03960501, 0.03960501, 0.06460563], [1517118180000, 0.0398, 0.0398, 0.03960504, 0.03960504, 0.11561656], [1517118240000, 0.0398, 0.0398, 0.03962, 0.03962, 2.33263963], [1517118300000, 0.03989531, 0.03989531, 0.0398, 0.0398, 1.40323507], [1517118420000, 0.0398, 0.039954, 0.0398, 0.039954, 0.93384515], [1517118480000, 0.0398, 0.0398, 0.0398, 0.0398, 0.048999], [1517118540000, 0.0398, 0.0398, 0.0398, 0.0398, 0.099999], [1517118600000, 0.0398, 0.03989497, 0.0398, 0.0398, 1.60746556], [1517118720000, 0.0398, 0.0398, 0.0398, 0.0398, 1.291143], [1517118780000, 0.0398, 0.0398, 0.03957802, 0.03957802, 10.91089117], [1517118840000, 0.03957802, 0.03957802, 0.03951001, 0.03951001, 0.10504806], [1517118900000, 0.03979999, 0.0398, 0.03979999, 0.0398, 0.68657248], [1517119020000, 0.03956001, 0.03956001, 0.03956001, 0.03956001, 0.02081001], [1517119080000, 0.03956501, 0.03956501, 0.03956501, 0.03956501, 0.21306252], [1517119140000, 0.0398, 0.03980001, 0.0398, 0.03980001, 0.35406571], [1517119200000, 0.0398, 0.03980001, 0.0398, 0.03980001, 0.68205184], [1517119260000, 0.03980001, 0.03980001, 0.03980001, 0.03980001, 1.21290028], [1517119440000, 0.03980001, 0.03980001, 0.03974199, 0.03974199, 0.05544243], [1517119500000, 0.03980001, 0.03980001, 0.03974199, 0.03974199, 0.42537871], [1517119560000, 0.039742, 0.039742, 0.03948502, 0.03974199, 2.17329059], [1517119620000, 0.03974199, 0.039886, 0.03974199, 0.03974199, 3.55586835], [1517119680000, 0.039886, 0.03999, 0.03974199, 0.03974199, 1.319675], [1517119740000, 0.039886, 0.03997999, 0.039886, 0.03997999, 7.17505466], [1517119800000, 0.03997998, 0.03997999, 0.03961701, 0.03961701, 2.79182984], [1517119860000, 0.03963703, 0.03963703, 0.03959244, 0.039627, 4.49133663], [1517119920000, 0.039627, 0.039637, 0.039627, 0.039637, 0.13897937], [1517119980000, 0.039637, 0.039637, 0.039637, 0.039637, 0.0529882], [1517120040000, 0.03976235, 0.039855, 0.03976235, 0.039855, 1.21004785], [1517120100000, 0.03962701, 0.03962701, 0.03959244, 0.03962701, 0.15767747], [1517120220000, 0.039632, 0.039955, 0.039632, 0.039955, 0.28762652], [1517120340000, 0.03977861, 0.03977861, 0.03959244, 0.03959244, 0.65273828], [1517120400000, 0.03959244, 0.03959244, 0.039588, 0.03959244, 1.19864664], [1517120460000, 0.03959244, 0.03959244, 0.03959244, 0.03959244, 0.05888152], [1517120520000, 0.0398846, 0.03989531, 0.0398846, 0.03989531, 0.83005194], [1517120640000, 0.0396, 0.0396, 0.0396, 0.0396, 1.70651968], [1517120700000, 0.0396, 0.0396, 0.0396, 0.0396, 0.0135534], [1517120760000, 0.03958801, 0.03958801, 0.03958801, 0.03958801, 0.19157242], [1517120820000, 0.039588, 0.039588, 0.039588, 0.039588, 0.92031062], [1517120880000, 0.03950501, 0.039588, 0.03950501, 0.039588, 0.56530624], [1517120940000, 0.039588, 0.039588, 0.0395, 0.0395, 11.47960686], [1517121000000, 0.0395, 0.0396975, 0.0395, 0.0396975, 4.82981356], [1517121060000, 0.0395666, 0.0395666, 0.0395, 0.0395, 0.07240769], [1517121120000, 0.039455, 0.0395, 0.03945, 0.0395, 3.93208675], [1517121180000, 0.0395, 0.0396975, 0.0395, 0.0396975, 0.15653217], [1517121240000, 0.039448, 0.039448, 0.039448, 0.039448, 4.802], [1517121300000, 0.0396975, 0.0396975, 0.0396975, 0.0396975, 0.25190503], [1517121540000, 0.03969741, 0.03969742, 0.03969741, 0.03969741, 1.65916471], [1517121660000, 0.03945, 0.03945, 0.03945, 0.03945, 0.149682], [1517121720000, 0.03945, 0.03945001, 0.03944515, 0.03944515, 5.24895258], [1517121780000, 0.03944515, 0.03944515, 0.03944515, 0.03944515, 1.98504214], [1517121840000, 0.03944515, 0.03944515, 0.03944515, 0.03944515, 4.97442782], [1517121900000, 0.03944515, 0.03965, 0.03944515, 0.03944515, 16.16021572], [1517121960000, 0.03945, 0.03945, 0.03944515, 0.03944515, 2.11077645], [1517122020000, 0.03944515, 0.03944515, 0.03944515, 0.03944515, 5.17491676], [1517122080000, 0.039446, 0.039446, 0.039446, 0.039446, 0.64935122], [1517122140000, 0.039446, 0.039446, 0.03944515, 0.03944515, 4.4579502], [1517122200000, 0.03965, 0.03967756, 0.03965, 0.03967756, 0.16582356], [1517122320000, 0.03944516, 0.03945, 0.03944516, 0.03945, 1.95556341], [1517122440000, 0.03967756, 0.0398, 0.03967756, 0.0398, 30.26824584], [1517122500000, 0.0398, 0.03999999, 0.03948402, 0.039494, 55.89480343], [1517122560000, 0.03988798, 0.039893, 0.03988798, 0.039893, 14.64409877], [1517122620000, 0.039893, 0.039893, 0.039893, 0.039893, 0.67535613], [1517122680000, 0.03989301, 0.03989302, 0.039893, 0.039893, 1.92745024], [1517122740000, 0.039893, 0.03989702, 0.039597, 0.03965761, 3.87132604], [1517122800000, 0.03975641, 0.04004674, 0.03950002, 0.03950002, 120.27173151], [1517122860000, 0.03951, 0.03961197, 0.03950001, 0.03961197, 9.71702057], [1517122920000, 0.03961197, 0.03961197, 0.03955, 0.03955, 8.69154315], [1517122980000, 0.039545, 0.03955, 0.03953982, 0.03953982, 12.27262239], [1517123040000, 0.03953983, 0.03953983, 0.03953983, 0.03953983, 1.07631004], [1517123100000, 0.03953982, 0.03953983, 0.03953982, 0.03953983, 2.10279602], [1517123160000, 0.03953983, 0.03953983, 0.03953983, 0.03953983, 1.324173], [1517123220000, 0.03953983, 0.03953983, 0.03953981, 0.03953981, 13.73213279], [1517123280000, 0.03953983, 0.03955, 0.03953983, 0.03955, 4.97920742], [1517123340000, 0.03958501, 0.03958501, 0.03958501, 0.03958501, 1.00037107], [1517123460000, 0.03971197, 0.03971197, 0.03971197, 0.03971197, 0.10065973], [1517123520000, 0.03971197, 0.03971197, 0.03971195, 0.03971195, 1.50842105], [1517123640000, 0.03958623, 0.03971198, 0.03958623, 0.03971198, 0.76872376], [1517123700000, 0.03983976, 0.03983976, 0.03983976, 0.03983976, 0.03001284], [1517123760000, 0.03953981, 0.03985576, 0.03953981, 0.03985576, 1.59350241], [1517123820000, 0.03983921, 0.039841, 0.03983921, 0.039841, 1.03781297], [1517123880000, 0.03954653, 0.03985081, 0.03944, 0.03985081, 81.48953861], [1517123940000, 0.03985081, 0.03987, 0.03985081, 0.03987, 3.70662541], [1517124000000, 0.03953998, 0.03953998, 0.03953407, 0.03953407, 8.98976775], [1517124060000, 0.03953407, 0.03953407, 0.03944322, 0.03953407, 8.7728893], [1517124240000, 0.03953407, 0.03979498, 0.03953407, 0.03979498, 0.05161062], [1517124300000, 0.03979493, 0.03979494, 0.0397949, 0.0397949, 1.03811079], [1517124420000, 0.0397949, 0.03979493, 0.0397949, 0.0397949, 6.34886462], [1517124480000, 0.0397949, 0.0397949, 0.0397949, 0.0397949, 0.07877535], [1517124540000, 0.0397949, 0.03979491, 0.03971148, 0.03971148, 1.14141269], [1517124600000, 0.03971148, 0.03971148, 0.03971148, 0.03971148, 0.97223725], [1517124660000, 0.039765, 0.03979, 0.039765, 0.03979, 0.10589811], [1517124780000, 0.0395, 0.0395, 0.0395, 0.0395, 0.39893181], [1517124900000, 0.0395, 0.0395, 0.039401, 0.03948363, 18.9458178], [1517125020000, 0.039401, 0.039401, 0.039401, 0.039401, 0.594342], [1517125080000, 0.039401, 0.039401, 0.039401, 0.039401, 0.170627], [1517125140000, 0.03940101, 0.03965096, 0.03940101, 0.03965096, 1.7443356], [1517125200000, 0.039401, 0.039401, 0.03935, 0.03937, 1.72904215], [1517125260000, 0.03937, 0.03937, 0.03937, 0.03937, 0.0648875], [1517125320000, 0.03935, 0.03968, 0.03935, 0.03968, 2.69178517], [1517125380000, 0.03935002, 0.03935002, 0.03935002, 0.03935002, 0.76026801], [1517125440000, 0.03935, 0.03935, 0.03935, 0.03935, 1.45223149], [1517125500000, 0.03935, 0.03963393, 0.03935, 0.03963393, 13.48950608], [1517125620000, 0.03935, 0.03935, 0.03935, 0.03935, 3.49998957], [1517125680000, 0.03935, 0.03935, 0.03935, 0.03935, 0.02801779], [1517125740000, 0.03935, 0.03935, 0.03935, 0.03935, 0.07176161], [1517125800000, 0.03953598, 0.03953598, 0.03953598, 0.03953598, 0.09760884], [1517125860000, 0.03935, 0.03953598, 0.03935, 0.03948592, 3.10740722], [1517125920000, 0.03935, 0.0394458, 0.03935, 0.03935, 0.19366221], [1517125980000, 0.03935, 0.03935, 0.03935, 0.03935, 1.14862423], [1517126040000, 0.03935, 0.03935, 0.03935, 0.03935, 2.39097829], [1517126100000, 0.03935, 0.03935, 0.03935, 0.03935, 0.13659911], [1517126160000, 0.03935, 0.03935, 0.0392778, 0.0392778, 8.07316104], [1517126220000, 0.03947989, 0.03947989, 0.03947989, 0.03947989, 0.50658702], [1517126280000, 0.03947989, 0.0395, 0.0392778, 0.0392778, 11.10888064], [1517126340000, 0.0392778, 0.03949999, 0.0392778, 0.03949999, 1.22532536], [1517126460000, 0.03949999, 0.0395, 0.0392778, 0.0392778, 8.15278873], [1517126520000, 0.03949997, 0.03949997, 0.0392778, 0.0392778, 9.67590773], [1517126580000, 0.0392778, 0.0392778, 0.0392778, 0.0392778, 0.10751598], [1517126640000, 0.03948996, 0.03948996, 0.03948996, 0.03948996, 0.16459867], [1517126700000, 0.0392778, 0.03948499, 0.0392778, 0.03948499, 0.15105174], [1517126760000, 0.0392778, 0.03946999, 0.0392778, 0.03927781, 2.16353274], [1517126820000, 0.03927782, 0.03927783, 0.03927782, 0.03927783, 1.02806928], [1517126940000, 0.03927785, 0.03927785, 0.03927785, 0.03927785, 0.17732021], [1517127000000, 0.03927785, 0.03927785, 0.03927785, 0.03927785, 0.0198], [1517127180000, 0.03927851, 0.03927851, 0.03927851, 0.03927851, 0.09005141], [1517127300000, 0.039283, 0.039283, 0.039283, 0.039283, 0.10446407], [1517127360000, 0.039283, 0.03946498, 0.03927851, 0.03927851, 2.93571002], [1517127420000, 0.03927851, 0.03931778, 0.03927851, 0.03931778, 1.0631267], [1517127480000, 0.03927851, 0.03927851, 0.03927851, 0.03927851, 1.51706326], [1517127540000, 0.03927851, 0.03927851, 0.03927851, 0.03927851, 0.31824018], [1517127600000, 0.03927851, 0.03927851, 0.0392785, 0.0392785, 1.17053038], [1517127660000, 0.0392785, 0.03927851, 0.0392785, 0.0392785, 10.77041815], [1517127720000, 0.0392785, 0.0392785, 0.03925, 0.03925, 6.84611538], [1517127780000, 0.03925, 0.03925, 0.03925, 0.03925, 23.01751663], [1517127840000, 0.03927781, 0.03927781, 0.03925, 0.03925, 0.20732623], [1517127900000, 0.03927779, 0.03927779, 0.03925, 0.03925, 0.41086947], [1517127960000, 0.03925, 0.03925, 0.03925, 0.03925, 1.83799564], [1517128020000, 0.03925, 0.03925, 0.03925, 0.03925, 1.2071871], [1517128080000, 0.03925, 0.03925, 0.03925, 0.03925, 1.0], [1517128140000, 0.03925, 0.03925, 0.03925, 0.03925, 1.0], [1517128200000, 0.03925, 0.03925, 0.03923, 0.03923, 6.1794656], [1517128260000, 0.03924, 0.03924, 0.03924, 0.03924, 0.05061583], [1517128380000, 0.03924999, 0.03925, 0.03924999, 0.03925, 2.556193], [1517128440000, 0.03925, 0.03925, 0.03917966, 0.03925, 3.20813299], [1517128500000, 0.03925, 0.03925, 0.03917966, 0.03917966, 0.55782303], [1517128560000, 0.03925, 0.0392778, 0.03917966, 0.03917966, 14.57006204], [1517128620000, 0.0392, 0.0392, 0.03917966, 0.03917966, 0.03], [1517128680000, 0.03917967, 0.03917967, 0.03917967, 0.03917967, 1.0], [1517128740000, 0.0392778, 0.0392778, 0.0392778, 0.0392778, 1.029467], [1517128800000, 0.03922873, 0.0392778, 0.03914305, 0.0392778, 1.95439921], [1517128860000, 0.0392778, 0.0392778, 0.03927755, 0.03927755, 0.36242085], [1517128920000, 0.03927755, 0.03927755, 0.03927755, 0.03927755, 0.32512868], [1517128980000, 0.03927755, 0.03927755, 0.03922873, 0.03922873, 0.40558014], [1517129040000, 0.03922873, 0.03922873, 0.03922873, 0.03922873, 1.80249685], [1517129100000, 0.03922873, 0.03925, 0.03922873, 0.03925, 0.17041266], [1517129160000, 0.03925, 0.03925, 0.03913654, 0.03925, 0.33642054], [1517129220000, 0.03925, 0.03927755, 0.03924999, 0.03927755, 3.53136978], [1517129280000, 0.03927755, 0.03927755, 0.03924, 0.03927755, 2.20050536], [1517129340000, 0.03927755, 0.03927755, 0.03927755, 0.03927755, 3.5785755], [1517129400000, 0.03927755, 0.03927851, 0.03927755, 0.03927851, 17.93598534], [1517129460000, 0.03927851, 0.03927851, 0.03919601, 0.03919601, 8.05207233], [1517129520000, 0.03946292, 0.03946292, 0.03917936, 0.03919602, 16.27048915], [1517129580000, 0.03919401, 0.03919401, 0.03919401, 0.03919401, 0.592804], [1517129640000, 0.03919901, 0.03920502, 0.03815, 0.03920502, 623.55979072], [1517129700000, 0.03920502, 0.03920502, 0.03920502, 0.03920502, 0.03849999], [1517129760000, 0.03921806, 0.03921806, 0.03921806, 0.03921806, 0.11301417], [1517129820000, 0.03921806, 0.03921806, 0.03921806, 0.03921806, 2.56471871], [1517129880000, 0.03921807, 0.03945809, 0.03921807, 0.03921808, 1.69447533], [1517129940000, 0.03945, 0.0394581, 0.03921806, 0.03921806, 1.15230838], [1517130000000, 0.03921806, 0.03921806, 0.03921806, 0.03921806, 4.03623547], [1517130060000, 0.0392181, 0.03945805, 0.03921806, 0.03945805, 0.27564332], [1517130120000, 0.03921807, 0.03945806, 0.03921807, 0.03945806, 5.5], [1517130180000, 0.03945801, 0.03945801, 0.03921807, 0.03921807, 14.62327962], [1517130240000, 0.03921807, 0.03921807, 0.03921807, 0.03921807, 0.94939497], [1517130300000, 0.03921807, 0.03937766, 0.03921807, 0.03937766, 5.73946798], [1517130540000, 0.03921806, 0.03921806, 0.03921806, 0.03921806, 2.77713496], [1517130600000, 0.03921806, 0.03921806, 0.03921806, 0.03921806, 0.09395456], [1517130660000, 0.03937766, 0.03937766, 0.03937766, 0.03937766, 0.25018119], [1517130780000, 0.03937763, 0.03937764, 0.03937763, 0.03937764, 70.1], [1517130900000, 0.03921807, 0.03921807, 0.03921807, 0.03921807, 0.14445389], [1517130960000, 0.03921807, 0.039375, 0.03921806, 0.03921806, 31.28690037], [1517131020000, 0.03921807, 0.03921807, 0.03921806, 0.03921806, 0.12629602], [1517131080000, 0.03921806, 0.03936999, 0.03921806, 0.03936999, 0.12279479], [1517131140000, 0.03921806, 0.03921806, 0.03921806, 0.03921806, 6.652332], [1517131200000, 0.03937, 0.03937, 0.039365, 0.039365, 1.82989657], [1517131260000, 0.03921806, 0.03921806, 0.03921806, 0.03921806, 0.0988417], [1517131320000, 0.03921806, 0.03921806, 0.038965, 0.03909992, 36.74782568], [1517131380000, 0.03905, 0.0391, 0.03891046, 0.03891047, 74.6564523], [1517131440000, 0.03891047, 0.03909992, 0.03891046, 0.0389105, 2.34381388], [1517131500000, 0.03909992, 0.0391, 0.03891046, 0.0391, 1.89244162], [1517131560000, 0.0391, 0.0391, 0.03892194, 0.03892194, 5.04253724], [1517131620000, 0.0391, 0.0391, 0.03892194, 0.0391, 69.75342617], [1517131680000, 0.0391, 0.0391, 0.03901097, 0.03909992, 14.63446304], [1517131740000, 0.03901097, 0.0391, 0.03901097, 0.0391, 0.94619939], [1517131800000, 0.0391, 0.0391, 0.0391, 0.0391, 42.60045593], [1517131860000, 0.0391, 0.0391, 0.03901097, 0.03901097, 2.33137901], [1517131920000, 0.0391, 0.0391, 0.0391, 0.0391, 0.1], [1517131980000, 0.03909992, 0.0391, 0.03901099, 0.0391, 0.88930804], [1517132040000, 0.0391, 0.0391, 0.0391, 0.0391, 0.25575447], [1517132160000, 0.03901098, 0.03901098, 0.03901097, 0.03901097, 0.33208061], [1517132220000, 0.0391, 0.0391, 0.03891044, 0.0391, 24.00478816], [1517132280000, 0.03909992, 0.03909992, 0.03893, 0.03893, 2.90395934], [1517132340000, 0.03891043, 0.03891043, 0.03884402, 0.03884403, 4.69257089], [1517132400000, 0.03884402, 0.0391, 0.03884401, 0.03884901, 16.64985404], [1517132460000, 0.03884403, 0.03884403, 0.03884403, 0.03884403, 0.06046491], [1517132700000, 0.03909966, 0.03909998, 0.03909966, 0.03909998, 0.76726929], [1517132760000, 0.03886003, 0.039, 0.03886003, 0.039, 2.6872113], [1517132820000, 0.03899991, 0.039, 0.03899991, 0.039, 1.6645625], [1517132880000, 0.039, 0.039, 0.03899992, 0.03899992, 1.77997476], [1517132940000, 0.0389, 0.039, 0.0389, 0.039, 1.738654], [1517133000000, 0.039, 0.039, 0.03886042, 0.039, 22.43698839], [1517133060000, 0.03889936, 0.039, 0.03886003, 0.039, 15.89475942], [1517133120000, 0.039, 0.039, 0.039, 0.039, 0.32956096], [1517133180000, 0.039, 0.039, 0.03899992, 0.03899992, 14.06725663], [1517133240000, 0.03886011, 0.039, 0.03886004, 0.039, 40.15697529], [1517133300000, 0.039, 0.039, 0.039, 0.039, 0.16410256], [1517133360000, 0.039, 0.039, 0.039, 0.039, 38.87457656], [1517133420000, 0.039, 0.039, 0.039, 0.039, 5.10425339], [1517133480000, 0.03887035, 0.039, 0.03887034, 0.039, 2.24164181], [1517133540000, 0.039, 0.039, 0.039, 0.039, 0.53651546], [1517133600000, 0.03909997, 0.03909998, 0.03900001, 0.03900001, 3.38847702], [1517133660000, 0.03909998, 0.03909998, 0.039, 0.039, 13.49865358], [1517133720000, 0.03909998, 0.03909998, 0.03909998, 0.03909998, 0.04435682], [1517133780000, 0.03909998, 0.0391, 0.03909998, 0.0391, 9.72203183], [1517133840000, 0.0391, 0.0391, 0.0391, 0.0391, 0.11528756], [1517133900000, 0.0391, 0.0391, 0.0391, 0.0391, 0.47989106], [1517134080000, 0.0391, 0.0391, 0.0391, 0.0391, 0.43495618], [1517134140000, 0.03900014, 0.03900014, 0.03900014, 0.03900014, 0.07792427], [1517134200000, 0.03900014, 0.0391077, 0.03900014, 0.0391, 18.41871663], [1517134320000, 0.03910001, 0.03910001, 0.03910001, 0.03910001, 0.21851536], [1517134380000, 0.03910001, 0.03910001, 0.03893201, 0.0391, 4.1515747], [1517134440000, 0.03892214, 0.03892214, 0.03892214, 0.03892214, 0.60454545], [1517134620000, 0.03892214, 0.0391, 0.03891701, 0.03891701, 2.20377734], [1517134680000, 0.03891701, 0.03910001, 0.03891701, 0.03910001, 6.15321576], [1517134740000, 0.03891702, 0.03910001, 0.03891702, 0.03891702, 4.12296618], [1517134800000, 0.03891702, 0.03910001, 0.03891701, 0.03891701, 3.66369849], [1517134860000, 0.03910001, 0.03910001, 0.0390998, 0.0390998, 0.17623095], [1517134920000, 0.038918, 0.03909979, 0.03891701, 0.03891701, 6.94578578], [1517134980000, 0.03909979, 0.03909999, 0.0388912, 0.0388912, 1.02374499], [1517135040000, 0.0388912, 0.03921806, 0.0388912, 0.03919996, 12.68687022], [1517135160000, 0.03910001, 0.03910001, 0.03894144, 0.03910001, 2.8964611], [1517135220000, 0.03910002, 0.03910002, 0.03910002, 0.03910002, 0.13226646], [1517135280000, 0.03918214, 0.03918214, 0.03910002, 0.03910002, 0.14503835], [1517135340000, 0.03910001, 0.03918213, 0.03910001, 0.03918213, 1.02819692], [1517135400000, 0.03919992, 0.03919992, 0.03919992, 0.03919992, 0.06509175], [1517135460000, 0.03910001, 0.03919992, 0.03910001, 0.03910001, 0.40989531], [1517135520000, 0.03910001, 0.03910001, 0.03910001, 0.03910001, 0.26555747], [1517135580000, 0.0391999, 0.0391999, 0.03890607, 0.03890607, 4.68932801], [1517135640000, 0.03900798, 0.0392, 0.038924, 0.0392, 2.01578947], [1517135700000, 0.03892402, 0.03921805, 0.03892402, 0.038954, 6.07913223], [1517135760000, 0.039218, 0.03921805, 0.03921799, 0.03921805, 25.45124624], [1517135820000, 0.03921805, 0.03921805, 0.03921797, 0.03921804, 1.57242916], [1517135880000, 0.03921804, 0.03921806, 0.03921804, 0.03921804, 8.05097892], [1517135940000, 0.03921804, 0.03921804, 0.03921797, 0.03921797, 1.14812232], [1517136000000, 0.03921806, 0.03921806, 0.03921804, 0.03921806, 5.97769878], [1517136060000, 0.03906152, 0.03921806, 0.03900601, 0.03921806, 5.36824824], [1517136120000, 0.03921806, 0.03921806, 0.03921806, 0.03921806, 0.4089843], [1517136180000, 0.03921805, 0.03921806, 0.03921805, 0.03921806, 56.16296789], [1517136240000, 0.03921805, 0.03921806, 0.03921805, 0.03921806, 0.26075181], [1517136300000, 0.03921806, 0.03921806, 0.03921806, 0.03921806, 2.3130691], [1517136360000, 0.03921806, 0.03944799, 0.03907, 0.039443, 146.00320141], [1517136420000, 0.03943799, 0.03971, 0.03909903, 0.03951399, 193.49116658], [1517136480000, 0.039509, 0.03953, 0.03914504, 0.039507, 3.76404067], [1517136540000, 0.03951, 0.03951199, 0.03951, 0.03951198, 2.36175236], [1517136600000, 0.03951999, 0.039711, 0.03951198, 0.039711, 2.134341], [1517136660000, 0.039643, 0.039711, 0.03951198, 0.03951198, 10.5010417], [1517136720000, 0.03951199, 0.039623, 0.03951198, 0.03951198, 5.75174892], [1517136840000, 0.03951198, 0.03951198, 0.03951198, 0.03951198, 5.8828474], [1517136900000, 0.03951198, 0.039623, 0.03951198, 0.039623, 6.08692094], [1517136960000, 0.039623, 0.039691, 0.03951198, 0.03951198, 1.7623712], [1517137080000, 0.03951198, 0.03951198, 0.03951198, 0.03951198, 6.05194602], [1517137140000, 0.03951198, 0.03951198, 0.03951198, 0.03951198, 0.30513632], [1517137200000, 0.03951198, 0.039711, 0.03951198, 0.03951198, 3.61990786], [1517137260000, 0.039711, 0.039711, 0.03951198, 0.03951198, 2.36351211], [1517137320000, 0.03971097, 0.03971098, 0.03951198, 0.03951198, 1.03929289], [1517137380000, 0.03951198, 0.03951198, 0.03951198, 0.03951198, 12.39978704], [1517137440000, 0.03951198, 0.039618, 0.03951198, 0.039618, 2.18873618], [1517137500000, 0.03951198, 0.039629, 0.03951198, 0.03951198, 8.05601381], [1517137560000, 0.03961298, 0.03961298, 0.03951198, 0.03951198, 9.74911492], [1517137620000, 0.03951198, 0.03961294, 0.03951198, 0.03961294, 3.41108181], [1517137680000, 0.03951198, 0.03951198, 0.03951198, 0.03951198, 4.75844877], [1517137740000, 0.03951198, 0.03961291, 0.03951198, 0.039608, 5.57806284], [1517137800000, 0.03951198, 0.039658, 0.03951198, 0.039608, 17.27708176], [1517137860000, 0.039608, 0.03960801, 0.039608, 0.039608, 4.83400738], [1517137920000, 0.039608, 0.039608, 0.03951198, 0.03951198, 4.31584546], [1517137980000, 0.039603, 0.039603, 0.03951198, 0.03951198, 1.13735257], [1517138040000, 0.039603, 0.039603, 0.039603, 0.039603, 1.91447712], [1517138100000, 0.03951198, 0.039608, 0.03951198, 0.03951198, 1.65198739], [1517138160000, 0.03951198, 0.03951198, 0.03926901, 0.03926901, 1.23475368], [1517138340000, 0.03950195, 0.03950195, 0.03950195, 0.03950195, 1.09575286], [1517138400000, 0.03950195, 0.03954591, 0.03936379, 0.03950195, 1.94990458], [1517138520000, 0.03950195, 0.03950195, 0.03931, 0.03931, 10.11951585], [1517138580000, 0.03930999, 0.03931, 0.0393099, 0.03931, 0.2175395], [1517138640000, 0.03950195, 0.03950195, 0.03931, 0.03931002, 1.64516396], [1517138700000, 0.0395, 0.0395, 0.03949996, 0.03949996, 0.22348907], [1517138760000, 0.03949996, 0.03949996, 0.03949996, 0.03949996, 0.01840328], [1517138820000, 0.03949994, 0.03949995, 0.03949994, 0.03949995, 0.09798233], [1517138880000, 0.03949995, 0.03949995, 0.03949995, 0.03949995, 1.22893545], [1517138940000, 0.03949995, 0.03949995, 0.03949995, 0.03949995, 0.17829315], [1517139000000, 0.03949995, 0.03949995, 0.03931999, 0.03932, 0.88974787], [1517139060000, 0.03932, 0.03949995, 0.03932, 0.03949995, 3.06686426], [1517139120000, 0.03949995, 0.03949995, 0.03949995, 0.03949995, 5.23657183], [1517139180000, 0.03949996, 0.03949996, 0.03949995, 0.03949995, 1.62234346], [1517139240000, 0.03949995, 0.03949996, 0.03949995, 0.03949995, 6.00671784], [1517139300000, 0.03949995, 0.03949995, 0.03931, 0.03931, 24.22125057], [1517139360000, 0.03949996, 0.03949996, 0.03949996, 0.03949996, 5.86140417], [1517139420000, 0.03949996, 0.0395, 0.03931, 0.03931, 9.29463555], [1517139480000, 0.03936, 0.0395, 0.03932, 0.03949999, 1.11206721], [1517139540000, 0.03949999, 0.03949999, 0.03949999, 0.03949999, 0.25690856], [1517139600000, 0.03949998, 0.03949999, 0.03935001, 0.03935001, 0.69357462], [1517139660000, 0.03949999, 0.03949999, 0.03934943, 0.03949999, 0.13404334], [1517139720000, 0.03949999, 0.03960325, 0.03933701, 0.03933701, 0.37634021], [1517139780000, 0.039608, 0.039608, 0.039608, 0.039608, 0.02940305], [1517139840000, 0.039605, 0.039605, 0.039605, 0.039605, 0.637233], [1517139900000, 0.039605, 0.039711, 0.03937701, 0.03970599, 4.93879221], [1517139960000, 0.03969396, 0.03969396, 0.03969396, 0.03969396, 0.50377834], [1517140020000, 0.03969395, 0.03969395, 0.03939701, 0.03939701, 0.54086243], [1517140080000, 0.03969394, 0.03969395, 0.039693, 0.03969395, 3.42672581], [1517140140000, 0.039417, 0.03969395, 0.039417, 0.03969395, 1.60426215], [1517140200000, 0.0394186, 0.03969395, 0.0394186, 0.03969395, 0.6849716], [1517140260000, 0.03942704, 0.03969395, 0.03942704, 0.03969395, 0.43398129], [1517140320000, 0.0396, 0.03969396, 0.03944603, 0.03969395, 2.71986978], [1517140380000, 0.03945604, 0.03945604, 0.03945604, 0.03945604, 0.04220025], [1517140440000, 0.03969394, 0.039711, 0.03955798, 0.03955798, 2.08895286], [1517140500000, 0.03951101, 0.039715, 0.03951101, 0.039715, 1.337206], [1517140560000, 0.039715, 0.03976705, 0.039715, 0.039715, 4.55062513], [1517140620000, 0.03976705, 0.03979491, 0.03976705, 0.03979491, 12.02382845], [1517140680000, 0.0398, 0.0399, 0.03976705, 0.0399, 3.20917369], [1517140740000, 0.03976705, 0.03976705, 0.03966477, 0.03966477, 3.0662536], [1517140800000, 0.03966477, 0.0399, 0.03964115, 0.0399, 7.41425826], [1517140860000, 0.0399, 0.0399, 0.03975443, 0.0399, 1.85653], [1517141040000, 0.039651, 0.039651, 0.039651, 0.039651, 1.69257377], [1517141100000, 0.03965603, 0.04, 0.03965603, 0.03971104, 26.98831733], [1517141160000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 0.0925], [1517141220000, 0.03999998, 0.03999999, 0.03973106, 0.03999981, 5.93779575], [1517141280000, 0.0399997, 0.0399997, 0.0399997, 0.0399997, 1.03464692], [1517141340000, 0.03976101, 0.03999959, 0.03976101, 0.03999959, 0.13576824], [1517141400000, 0.03977101, 0.04, 0.03977101, 0.0399999, 101.13534156], [1517141460000, 0.03999989, 0.04, 0.03977102, 0.03999981, 1.96473566], [1517141520000, 0.03999981, 0.03999981, 0.03999981, 0.03999981, 2.05319504], [1517141580000, 0.03999981, 0.03999981, 0.039772, 0.039791, 4.34951099], [1517141640000, 0.03979099, 0.039791, 0.03979099, 0.039791, 0.02772126], [1517141700000, 0.039791, 0.039791, 0.039791, 0.039791, 1.59167136], [1517141760000, 0.039791, 0.03999982, 0.039791, 0.039998, 5.35163422], [1517141820000, 0.039998, 0.039998, 0.03977101, 0.039995, 3.68059637], [1517141880000, 0.039995, 0.039995, 0.03977101, 0.03977101, 0.86873082], [1517141940000, 0.03977101, 0.03977101, 0.03977101, 0.03977101, 1.39486719], [1517142000000, 0.03977101, 0.03999298, 0.03977101, 0.03999298, 6.01563009], [1517142060000, 0.03999298, 0.039998, 0.03999298, 0.03999799, 4.0004875], [1517142120000, 0.03977101, 0.03977101, 0.03977101, 0.03977101, 3.34823103], [1517142180000, 0.03989797, 0.03989799, 0.03989797, 0.03989799, 0.32475706], [1517142240000, 0.03989799, 0.03989799, 0.03977101, 0.03989797, 0.49908172], [1517142300000, 0.03977101, 0.039893, 0.03977101, 0.039893, 8.87851751], [1517142360000, 0.039888, 0.03989799, 0.03977109, 0.03989796, 4.91534602], [1517142420000, 0.03989796, 0.03989799, 0.03977101, 0.03989798, 14.91524093], [1517142480000, 0.03989798, 0.03989798, 0.03977101, 0.03977101, 2.72363469], [1517142540000, 0.03977101, 0.03977101, 0.03977101, 0.03977101, 0.14844405], [1517142600000, 0.03987799, 0.03987799, 0.03977101, 0.03977101, 2.12931032], [1517142660000, 0.03977101, 0.03988299, 0.03977101, 0.03986799, 5.04452748], [1517142720000, 0.03986789, 0.03986789, 0.03977101, 0.03977101, 11.13729476], [1517142780000, 0.03977101, 0.03985, 0.03977101, 0.03985, 65.61944624], [1517142840000, 0.0397715, 0.0397715, 0.03977101, 0.03977101, 0.39628694], [1517142900000, 0.03977101, 0.039904, 0.03961601, 0.039904, 1.47281832], [1517142960000, 0.039973, 0.039973, 0.039973, 0.039973, 2.50132541], [1517143140000, 0.03999299, 0.03999499, 0.03999299, 0.03999499, 0.03226066], [1517143200000, 0.039993, 0.039993, 0.039992, 0.039992, 3.3991821], [1517143320000, 0.03977101, 0.03977101, 0.03977101, 0.03977101, 0.32515974], [1517143380000, 0.0397715, 0.0397715, 0.0397715, 0.0397715, 0.78385617], [1517143440000, 0.0397716, 0.0397716, 0.0397716, 0.0397716, 2.04280655], [1517143500000, 0.03998198, 0.039987, 0.03998198, 0.03998198, 0.64998341], [1517143560000, 0.03966469, 0.03967003, 0.03966469, 0.03967002, 0.94772844], [1517143620000, 0.03968501, 0.03997693, 0.03968501, 0.03997693, 0.32569395], [1517143740000, 0.039972, 0.039979, 0.03962501, 0.03962501, 6.6133554], [1517143800000, 0.03970001, 0.039988, 0.03964501, 0.039988, 8.13258836], [1517143860000, 0.039988, 0.039988, 0.0397832, 0.0397832, 0.28347624], [1517143920000, 0.03968004, 0.03969002, 0.03968004, 0.03969002, 0.60075405], [1517143980000, 0.03999194, 0.03999194, 0.039694, 0.039697, 4.85726166], [1517144040000, 0.03969702, 0.03969702, 0.03969702, 0.03969702, 0.12553673], [1517144160000, 0.03999175, 0.03999175, 0.03999175, 0.03999175, 0.29685588], [1517144220000, 0.03999174, 0.03999175, 0.03999174, 0.03999175, 0.62698092], [1517144280000, 0.039987, 0.039987, 0.03969411, 0.03969411, 0.57576463], [1517144340000, 0.03969412, 0.03969412, 0.03969412, 0.03969412, 0.03], [1517144400000, 0.039695, 0.03998196, 0.039695, 0.03998196, 0.27212089], [1517144460000, 0.03998196, 0.039982, 0.03998196, 0.039982, 0.95670705], [1517144580000, 0.03998195, 0.039982, 0.03998195, 0.039982, 0.265795], [1517144640000, 0.0397001, 0.0397001, 0.0397001, 0.0397001, 0.2288717], [1517144700000, 0.03997699, 0.03997699, 0.03997699, 0.03997699, 0.25014383], [1517144820000, 0.03996899, 0.03996899, 0.03996899, 0.03996899, 0.38383899], [1517144880000, 0.0397, 0.0397, 0.0397, 0.0397, 0.027], [1517145000000, 0.03995199, 0.03996199, 0.0397, 0.03996199, 3.60380713], [1517145060000, 0.03995199, 0.03996199, 0.03995199, 0.03996199, 0.29281679], [1517145300000, 0.0399499, 0.03996, 0.0397, 0.0397, 7.45153878], [1517145360000, 0.0397, 0.039959, 0.0397, 0.039959, 0.33422842], [1517145420000, 0.0397, 0.0399, 0.0397, 0.0397, 0.41570933], [1517145480000, 0.0397, 0.0397, 0.0397, 0.0397, 1.18414954], [1517145540000, 0.0397, 0.0397, 0.039635, 0.039636, 12.48021299], [1517145600000, 0.039641, 0.03994399, 0.03964, 0.039641, 1.08124296], [1517145660000, 0.03965001, 0.03994398, 0.03965001, 0.03994398, 2.42739373], [1517145720000, 0.03994398, 0.03994398, 0.03994398, 0.03994398, 0.67130915], [1517145780000, 0.03994398, 0.03994398, 0.03993229, 0.03993229, 3.52281171], [1517145840000, 0.03993229, 0.03993229, 0.03992017, 0.03992017, 0.76568946], [1517145900000, 0.03992017, 0.03996199, 0.03992017, 0.03993229, 3.13887492], [1517145960000, 0.03993229, 0.03993229, 0.03993229, 0.03993229, 0.86532103], [1517146020000, 0.03993229, 0.03993229, 0.03993229, 0.03993229, 1.34123895], [1517146080000, 0.03993229, 0.03993229, 0.03993229, 0.03993229, 1.07939837], [1517146140000, 0.0398888, 0.0398888, 0.0398888, 0.0398888, 0.17478355], [1517146200000, 0.03966228, 0.03993229, 0.03965101, 0.03993229, 1.82784158], [1517146260000, 0.03993228, 0.03996199, 0.03993228, 0.03996199, 0.58979269], [1517146320000, 0.03986199, 0.03986199, 0.03986199, 0.03986199, 0.2044384], [1517146380000, 0.03985, 0.03986199, 0.039671, 0.039671, 0.74306115], [1517146500000, 0.03986198, 0.03986199, 0.03986198, 0.03986199, 0.75259644], [1517146800000, 0.03967106, 0.03967106, 0.03967106, 0.03967106, 0.05569769], [1517146860000, 0.03967102, 0.03986198, 0.03967102, 0.03986198, 3.41870188], [1517146980000, 0.03986197, 0.03986198, 0.03986197, 0.03986198, 0.90975258], [1517147040000, 0.03986199, 0.03986199, 0.03986199, 0.03986199, 0.67263107], [1517147100000, 0.03986199, 0.03996199, 0.03986199, 0.03986199, 1.71238521], [1517147160000, 0.03986199, 0.03986199, 0.03986199, 0.03986199, 0.05531586], [1517147220000, 0.03986199, 0.03986199, 0.03986199, 0.03986199, 0.10551772], [1517147280000, 0.03986199, 0.03986199, 0.03986199, 0.03986199, 0.6565504], [1517147340000, 0.03993699, 0.03993699, 0.03993699, 0.03993699, 0.5577138], [1517147400000, 0.03996198, 0.039987, 0.03993699, 0.039987, 5.86345432], [1517147460000, 0.039987, 0.03999175, 0.03993699, 0.039987, 2.68096816], [1517147520000, 0.03993699, 0.03993699, 0.03993699, 0.03993699, 0.4078979], [1517147580000, 0.03993699, 0.03993699, 0.03986199, 0.03986199, 1.38492558], [1517147640000, 0.03986199, 0.03993699, 0.03986199, 0.03986199, 0.35158602], [1517147700000, 0.03986199, 0.03999175, 0.03986199, 0.039982, 4.00685809], [1517147760000, 0.03998766, 0.03998766, 0.03998766, 0.03998766, 0.32345824], [1517147820000, 0.03986199, 0.039982, 0.03986199, 0.039982, 1.07151656], [1517147880000, 0.03986199, 0.03986199, 0.03986199, 0.03986199, 0.33630049], [1517147940000, 0.03986199, 0.03998695, 0.03986199, 0.039982, 0.77504925], [1517148000000, 0.039982, 0.039987, 0.039982, 0.039982, 3.56859304], [1517148060000, 0.039982, 0.039982, 0.039982, 0.039982, 1.33969004], [1517148120000, 0.039982, 0.039982, 0.039982, 0.039982, 0.98600088], [1517148180000, 0.039982, 0.039982, 0.039982, 0.039982, 1.70274793], [1517148240000, 0.039982, 0.039982, 0.039982, 0.039982, 0.35457491], [1517148300000, 0.039982, 0.03998499, 0.03988703, 0.03988703, 0.61910495], [1517148360000, 0.03986199, 0.03986199, 0.03986199, 0.03986199, 0.20539983], [1517148420000, 0.03986199, 0.039982, 0.03986199, 0.03986199, 0.51138212], [1517148480000, 0.03986199, 0.03986199, 0.03986199, 0.03986199, 0.05531586], [1517148540000, 0.03986199, 0.03986199, 0.03986199, 0.03986199, 9.45082364], [1517148600000, 0.03986199, 0.039992, 0.03986199, 0.03986199, 0.80553093], [1517148660000, 0.03986199, 0.03986199, 0.03986198, 0.03986198, 0.7443552], [1517148720000, 0.039949, 0.039949, 0.03986198, 0.03986198, 0.89900638], [1517148780000, 0.03965829, 0.03965829, 0.03965829, 0.03965829, 0.03735445], [1517148900000, 0.03965829, 0.039976, 0.03965829, 0.03986197, 0.96142991], [1517149080000, 0.03986197, 0.03986197, 0.03966, 0.03966, 0.27508606], [1517149140000, 0.03966, 0.03966001, 0.03965003, 0.03966001, 0.84298719], [1517149200000, 0.03986196, 0.03986197, 0.03986196, 0.03986197, 0.29948429], [1517149260000, 0.03986197, 0.03986197, 0.03966003, 0.03966003, 0.84821659], [1517149440000, 0.03966004, 0.03966004, 0.03966004, 0.03966004, 0.99522604], [1517149500000, 0.03966005, 0.03966005, 0.03966005, 0.03966005, 0.30765939], [1517149560000, 0.03966005, 0.03966005, 0.03966005, 0.03966005, 0.24257064], [1517149620000, 0.03966005, 0.03966005, 0.03966005, 0.03966005, 0.98123524], [1517149680000, 0.03966005, 0.03966005, 0.03966005, 0.03966005, 0.259], [1517149740000, 0.03966004, 0.03966004, 0.03966004, 0.03966004, 0.44206298], [1517149800000, 0.03966005, 0.03966005, 0.03966004, 0.03966004, 0.53799255], [1517149860000, 0.03966004, 0.03966005, 0.03966001, 0.03966001, 2.87651367], [1517149920000, 0.03966005, 0.03966005, 0.03966005, 0.03966005, 1.47194437], [1517149980000, 0.03966005, 0.03966005, 0.03966005, 0.03966005, 0.76107823], [1517150100000, 0.03995379, 0.03995379, 0.03995379, 0.03995379, 1.57013776], [1517150160000, 0.03995379, 0.0399538, 0.03995379, 0.03995379, 3.35626257], [1517150220000, 0.03995379, 0.03995379, 0.03995379, 0.03995379, 1.31218875], [1517150280000, 0.03995379, 0.03995379, 0.03995379, 0.03995379, 0.94057829], [1517150340000, 0.03995379, 0.03995381, 0.03995379, 0.03995381, 1.12088278], [1517150400000, 0.03995379, 0.03995379, 0.03966002, 0.03966002, 1.05816324], [1517150460000, 0.03966002, 0.03966002, 0.03966002, 0.03966002, 0.02069447], [1517150580000, 0.03966002, 0.03966002, 0.03966002, 0.03966002, 0.1019938], [1517150760000, 0.03966003, 0.03966003, 0.03966002, 0.03966002, 0.27897069], [1517150880000, 0.039665, 0.039665, 0.039665, 0.039665, 1.26386692], [1517150940000, 0.03989996, 0.0399, 0.03966003, 0.03966003, 9.87070607], [1517151000000, 0.0399, 0.0399, 0.039665, 0.039665, 0.16066275], [1517151060000, 0.03989999, 0.0399, 0.03989999, 0.0399, 0.4136685], [1517151120000, 0.0399, 0.0399, 0.03966003, 0.0399, 0.19700461], [1517151180000, 0.03966003, 0.03966003, 0.03966003, 0.03966003, 0.26639888], [1517151240000, 0.03966003, 0.03966003, 0.03966003, 0.03966003, 0.37751881], [1517151300000, 0.03966003, 0.0399, 0.03966003, 0.03966003, 7.57751567], [1517151360000, 0.03966003, 0.03966003, 0.03966003, 0.03966003, 4.34112269], [1517151420000, 0.03966003, 0.03966003, 0.03966002, 0.03966002, 2.12978668], [1517151480000, 0.03988998, 0.03988998, 0.03966002, 0.03966002, 1.22997196], [1517151540000, 0.03966002, 0.03966002, 0.03966002, 0.03966002, 0.85111769], [1517151600000, 0.03966002, 0.03966002, 0.03966002, 0.03966002, 0.05450862], [1517151660000, 0.03966001, 0.03966001, 0.0396, 0.0396, 2.61612621], [1517151720000, 0.03966002, 0.039826, 0.0396, 0.0396, 2.45178809], [1517151780000, 0.03975524, 0.03975524, 0.03975524, 0.03975524, 0.05594634], [1517151840000, 0.0396, 0.0396, 0.0396, 0.0396, 0.07574037], [1517151900000, 0.03987495, 0.03988998, 0.0396, 0.03988998, 2.02099543], [1517151960000, 0.03988699, 0.03988699, 0.0396, 0.0396, 0.29864487], [1517152020000, 0.0396, 0.0396, 0.03958, 0.0396, 1.10650149], [1517152140000, 0.03987254, 0.03988698, 0.03987254, 0.03988698, 2.0], [1517152200000, 0.0396, 0.03988697, 0.0396, 0.03988697, 2.85705529], [1517152320000, 0.03962302, 0.03962302, 0.03962302, 0.03962302, 0.08262204], [1517152380000, 0.0398869, 0.03988699, 0.03962301, 0.03988697, 3.98753922], [1517152440000, 0.03988697, 0.0399, 0.03982224, 0.0399, 7.49894379], [1517152500000, 0.039632, 0.0399, 0.039632, 0.0399, 2.35710799], [1517152560000, 0.03989999, 0.03989999, 0.03989999, 0.03989999, 0.50125312], [1517152620000, 0.03989999, 0.0399, 0.039652, 0.039652, 2.05847108], [1517152680000, 0.03989999, 0.03989999, 0.03965705, 0.03965705, 0.8638044], [1517152740000, 0.03989999, 0.03989999, 0.039652, 0.039652, 0.38748], [1517152800000, 0.039652, 0.03989999, 0.039632, 0.03989999, 3.58497188], [1517152860000, 0.03989999, 0.0399, 0.03962703, 0.03989999, 1.99515123], [1517152920000, 0.03965, 0.03965, 0.03964999, 0.03965, 0.05035833], [1517152980000, 0.03965, 0.03989999, 0.03965, 0.03989999, 0.33], [1517153040000, 0.03965001, 0.03965001, 0.03965, 0.03965, 0.9708461], [1517153100000, 0.03964999, 0.03989999, 0.03964999, 0.03989999, 1.37881852], [1517153220000, 0.03965002, 0.039652, 0.03964701, 0.039652, 4.71454958], [1517153340000, 0.039652, 0.039652, 0.039652, 0.039652, 0.31251685], [1517153400000, 0.039662, 0.039987, 0.039662, 0.039987, 12.33324664], [1517153520000, 0.03968814, 0.03968814, 0.03968814, 0.03968814, 0.0691331], [1517153580000, 0.03968821, 0.03968821, 0.03968821, 0.03968821, 1.03384512], [1517153640000, 0.03989999, 0.03989999, 0.03968824, 0.03968824, 0.09479592], [1517153700000, 0.03989998, 0.03989998, 0.03989998, 0.03989998, 1.75187968], [1517153760000, 0.03968203, 0.03989998, 0.039657, 0.039657, 1.40638336], [1517153820000, 0.039657, 0.03989997, 0.03965698, 0.03965698, 0.51092079], [1517153880000, 0.03965698, 0.03989998, 0.03965201, 0.03965201, 0.6249589], [1517153940000, 0.03965701, 0.03965701, 0.039652, 0.039652, 1.70341945], [1517154000000, 0.03989996, 0.03989996, 0.03989996, 0.03989996, 0.12294362], [1517154060000, 0.03965201, 0.03989995, 0.03965201, 0.03989995, 0.27120046], [1517154120000, 0.03965201, 0.03965201, 0.039652, 0.03965201, 2.51720002], [1517154240000, 0.039672, 0.039672, 0.039672, 0.039672, 0.01904453], [1517154300000, 0.039658, 0.039658, 0.039658, 0.039658, 0.07388219], [1517154360000, 0.03965817, 0.03991604, 0.03965817, 0.03991604, 0.40420769], [1517154480000, 0.03969717, 0.039717, 0.03969717, 0.03969717, 1.15412665], [1517154540000, 0.03969717, 0.03969717, 0.03969717, 0.03969717, 1.39310458], [1517154600000, 0.03991601, 0.03991601, 0.03991601, 0.03991601, 0.2505261], [1517154660000, 0.039916, 0.039916, 0.03969718, 0.03969718, 1.37167745], [1517154720000, 0.03969718, 0.03969718, 0.03969717, 0.03969717, 0.51968374], [1517154780000, 0.03969718, 0.03969718, 0.03969718, 0.03969718, 2.0], [1517154840000, 0.03969718, 0.0397, 0.03969718, 0.0397, 1.46757164], [1517154900000, 0.03970001, 0.03970001, 0.03970001, 0.03970001, 1.04592965], [1517154960000, 0.03989998, 0.03989998, 0.03989998, 0.03989998, 0.33791139], [1517155020000, 0.03971001, 0.03971001, 0.03971001, 0.03971001, 0.81448072], [1517155080000, 0.03972003, 0.03989998, 0.03972003, 0.03989998, 7.3467564], [1517155140000, 0.03989998, 0.03996657, 0.03989998, 0.03996657, 2.05280469], [1517155200000, 0.03998698, 0.03998698, 0.0399, 0.03998698, 1.50738867], [1517155260000, 0.0399, 0.03999798, 0.0399, 0.03999798, 2.2910225], [1517155320000, 0.0399, 0.0399, 0.0399, 0.0399, 0.16762809], [1517155380000, 0.0399, 0.0399, 0.0399, 0.0399, 22.55274559], [1517155440000, 0.0399, 0.0399, 0.0399, 0.0399, 0.60854887], [1517155500000, 0.0399, 0.039999, 0.0399, 0.039999, 13.79884166], [1517155560000, 0.03999798, 0.039999, 0.0399, 0.03999897, 1.28565726], [1517155620000, 0.0399, 0.0399, 0.0399, 0.0399, 0.18009771], [1517155680000, 0.0399, 0.0399, 0.0399, 0.0399, 0.0443172], [1517155800000, 0.03999896, 0.03999897, 0.039996, 0.03999897, 5.32143478], [1517155860000, 0.03991, 0.03999899, 0.03991, 0.03999899, 3.71419262], [1517155920000, 0.03999897, 0.039999, 0.039996, 0.039996, 6.58127703], [1517155980000, 0.039996, 0.039996, 0.039996, 0.039996, 0.0503975], [1517156040000, 0.039996, 0.03999899, 0.039996, 0.03999899, 2.0781651], [1517156100000, 0.03999898, 0.03999898, 0.03999897, 0.03999897, 0.22499172], [1517156160000, 0.03999897, 0.03999898, 0.03999897, 0.03999898, 1.35349596], [1517156220000, 0.03999898, 0.04, 0.03999898, 0.04, 52.19705688], [1517156280000, 0.04000324, 0.04000324, 0.04000001, 0.04000001, 1.42011828], [1517156340000, 0.04000001, 0.04004675, 0.04000001, 0.04000001, 5.69905723], [1517156400000, 0.04000001, 0.04000001, 0.04, 0.04, 3.41376469], [1517156460000, 0.04, 0.04, 0.04, 0.04, 2.3963712], [1517156520000, 0.04, 0.04000001, 0.04, 0.04, 3.16360351], [1517156580000, 0.04, 0.04000001, 0.04, 0.04, 3.59447561], [1517156640000, 0.04000001, 0.04000001, 0.04, 0.04, 0.23701052], [1517156700000, 0.04000001, 0.04000001, 0.04, 0.04, 2.24902248], [1517156760000, 0.04, 0.04, 0.04, 0.04, 6.68979606], [1517156820000, 0.04, 0.04004675, 0.04, 0.04, 2.56518201], [1517156880000, 0.04004675, 0.04004675, 0.04000002, 0.04000002, 1.88204043], [1517156940000, 0.04000002, 0.04000002, 0.04000002, 0.04000002, 2.24011837], [1517157000000, 0.04000002, 0.04000002, 0.04000002, 0.04000002, 1.2848838], [1517157060000, 0.04000002, 0.04000002, 0.04000002, 0.04000002, 0.18474756], [1517157120000, 0.04000002, 0.04000002, 0.04000002, 0.04000002, 0.19446543], [1517157180000, 0.04000002, 0.04000002, 0.04000002, 0.04000002, 1.41803089], [1517157240000, 0.04000002, 0.04000002, 0.04000002, 0.04000002, 0.01983127], [1517157300000, 0.04000002, 0.04004674, 0.04, 0.04004674, 7.63835455], [1517157360000, 0.04004674, 0.04004674, 0.04004674, 0.04004674, 0.00651224], [1517157420000, 0.04004674, 0.04004674, 0.04004674, 0.04004674, 0.01845858], [1517157540000, 0.04004673, 0.04004674, 0.04004673, 0.04004674, 1.94453275], [1517157600000, 0.04004674, 0.04004675, 0.04004674, 0.04004675, 0.29477244], [1517157660000, 0.04004674, 0.04004674, 0.04004674, 0.04004674, 0.01040265], [1517157720000, 0.04004673, 0.04004675, 0.04, 0.04004675, 0.48313956], [1517157780000, 0.04000001, 0.04000001, 0.04000001, 0.04000001, 0.47472961], [1517157840000, 0.04004674, 0.04004675, 0.04000001, 0.04000001, 0.1150022], [1517157900000, 0.04004675, 0.04004675, 0.04004675, 0.04004675, 0.49941568], [1517157960000, 0.04000001, 0.04000001, 0.04000001, 0.04000001, 14.64638887], [1517158020000, 0.04000001, 0.04000001, 0.04000001, 0.04000001, 0.407], [1517158080000, 0.04000001, 0.04000001, 0.04000001, 0.04000001, 3.16478262], [1517158140000, 0.04000001, 0.04000001, 0.04000001, 0.04000001, 3.79473296], [1517158200000, 0.04000001, 0.04004674, 0.04000001, 0.04000001, 2.213334], [1517158260000, 0.04000001, 0.04000001, 0.04000001, 0.04000001, 1.52967457], [1517158320000, 0.04000302, 0.04000302, 0.04000001, 0.04000001, 6.45777782], [1517158380000, 0.04000001, 0.04000001, 0.04000001, 0.04000001, 3.81510043], [1517158440000, 0.04003, 0.04004674, 0.04000001, 0.04003, 2.26731673], [1517158500000, 0.04004673, 0.04004674, 0.04000001, 0.04004674, 1.79095922], [1517158620000, 0.04000001, 0.04000001, 0.04000001, 0.04000001, 0.10502419], [1517158680000, 0.04004674, 0.04004674, 0.04004674, 0.04004674, 0.35010193], [1517158800000, 0.04000002, 0.04004673, 0.04000001, 0.04004673, 1.80111647], [1517158860000, 0.04004673, 0.04004673, 0.04004673, 0.04004673, 1.49825076], [1517158980000, 0.04004672, 0.04004673, 0.04000001, 0.04000001, 0.18772564], [1517159040000, 0.04000001, 0.04000001, 0.04000001, 0.04000001, 0.02894688], [1517159100000, 0.04000001, 0.04004673, 0.04000001, 0.04004673, 1.08050534], [1517159160000, 0.04004673, 0.04004674, 0.04004673, 0.04004673, 1.81463611], [1517159220000, 0.04004674, 0.04004674, 0.04004674, 0.04004674, 2.03231509], [1517159280000, 0.04004674, 0.04004674, 0.04004674, 0.04004674, 0.06080446], [1517159340000, 0.04004674, 0.04004675, 0.04004674, 0.04004675, 0.09984769], [1517159400000, 0.04004674, 0.04004674, 0.04004674, 0.04004674, 0.4189565], [1517159460000, 0.04004675, 0.04004675, 0.04004675, 0.04004675, 0.57147177], [1517159520000, 0.04004674, 0.04004675, 0.04000001, 0.04000001, 2.01636697], [1517159580000, 0.04004675, 0.04004675, 0.04004675, 0.04004675, 0.11018901], [1517159640000, 0.04000002, 0.0400654, 0.04000001, 0.0400654, 4.07349793], [1517159700000, 0.040002, 0.04008, 0.040002, 0.04008, 3.05585646], [1517159880000, 0.0400654, 0.0400654, 0.040002, 0.040002, 0.25021457], [1517160000000, 0.04007999, 0.04008, 0.04000202, 0.04000202, 1.59401961], [1517160060000, 0.04000203, 0.04000203, 0.040002, 0.040002, 1.46900045], [1517160180000, 0.04008485, 0.04008485, 0.04000001, 0.04008485, 4.90458185], [1517160240000, 0.04008485, 0.04008485, 0.04000001, 0.04000001, 2.72953432], [1517160300000, 0.04000001, 0.04008486, 0.04000001, 0.04000001, 1.4449088], [1517160360000, 0.04000001, 0.04000001, 0.04, 0.04, 5.04642486], [1517160420000, 0.04000001, 0.04000001, 0.04, 0.04, 2.23266656], [1517160480000, 0.04, 0.04, 0.04, 0.04, 0.89496744], [1517160540000, 0.04, 0.04, 0.04, 0.04, 0.2549843], [1517160600000, 0.04, 0.04008485, 0.04, 0.04008485, 1.58751533], [1517160660000, 0.04, 0.04, 0.04, 0.04, 0.1022], [1517160720000, 0.04000001, 0.04000001, 0.04000001, 0.04000001, 0.02551503], [1517160780000, 0.04008484, 0.04008485, 0.04008484, 0.04008484, 2.78670168], [1517160840000, 0.04008484, 0.04008485, 0.04008484, 0.04008484, 1.43180222], [1517160900000, 0.04008484, 0.04008485, 0.04008484, 0.04008484, 11.19427465], [1517160960000, 0.04008484, 0.04008486, 0.04008484, 0.04008486, 2.15887696], [1517161020000, 0.04008484, 0.04008484, 0.04008484, 0.04008484, 0.17350012], [1517161080000, 0.04008484, 0.04008486, 0.04008484, 0.04008486, 0.69085066], [1517161140000, 0.04008484, 0.04008486, 0.04008484, 0.04008485, 1.96543837], [1517161200000, 0.04008484, 0.04008486, 0.04008484, 0.04008485, 1.52576228], [1517161260000, 0.04008485, 0.04008485, 0.04008485, 0.04008485, 0.52726731], [1517161320000, 0.04008485, 0.04008486, 0.04008485, 0.04008485, 4.08046814], [1517161380000, 0.04008485, 0.04008486, 0.04008485, 0.04008485, 4.03767185], [1517161440000, 0.04008484, 0.04008484, 0.04000001, 0.04000001, 0.05500832], [1517161500000, 0.04000001, 0.04000001, 0.04, 0.04000001, 2.21064156], [1517161560000, 0.04000001, 0.04000001, 0.04, 0.04, 0.07359252], [1517161620000, 0.04000001, 0.04000001, 0.04, 0.04, 0.0775627], [1517161680000, 0.04, 0.04000001, 0.04, 0.04000001, 1.6172719], [1517161740000, 0.04, 0.04000001, 0.04, 0.04000001, 1.01212025], [1517161800000, 0.04000001, 0.04000001, 0.04000001, 0.04000001, 0.8051254], [1517161860000, 0.04, 0.04000001, 0.04, 0.04, 0.37113665], [1517161920000, 0.04, 0.04, 0.04, 0.04, 0.4275625], [1517161980000, 0.04, 0.04000001, 0.04, 0.04, 0.6737827], [1517162040000, 0.04, 0.04000001, 0.04, 0.04000001, 2.61693707], [1517162100000, 0.04, 0.04000001, 0.04, 0.04, 19.34154418], [1517162160000, 0.03999898, 0.03999898, 0.03999898, 0.03999898, 0.10558196], [1517162220000, 0.03999999, 0.03999999, 0.0399, 0.03991, 2.20644371], [1517162280000, 0.03999999, 0.04, 0.03991, 0.03991, 10.54357502], [1517162340000, 0.04, 0.04, 0.04, 0.04, 0.02762474], [1517162400000, 0.03991, 0.03999999, 0.03991, 0.03999999, 1.06858304], [1517162460000, 0.03991, 0.04, 0.03991, 0.04, 6.62869017], [1517162520000, 0.04, 0.04, 0.03991, 0.04, 4.28484566], [1517162580000, 0.04, 0.04, 0.03991, 0.04, 2.10570054], [1517162640000, 0.04, 0.04094674, 0.04, 0.040559, 410.01398116], [1517162700000, 0.04048, 0.04048, 0.03991035, 0.04041299, 4.25769231], [1517162760000, 0.04038299, 0.04038299, 0.04021, 0.04025021, 1.34736487], [1517162820000, 0.04021001, 0.04021001, 0.03991301, 0.039915, 12.48483841], [1517162880000, 0.04011095, 0.04011095, 0.03991502, 0.03991502, 0.04371623], [1517162940000, 0.039935, 0.04011095, 0.039935, 0.04011095, 0.88376608], [1517163000000, 0.04011095, 0.04022999, 0.03999098, 0.04022492, 4.09924461], [1517163060000, 0.04022492, 0.04022492, 0.040215, 0.04021999, 0.74586727], [1517163180000, 0.04021473, 0.04021474, 0.03999098, 0.03999098, 0.80917932], [1517163240000, 0.03999098, 0.03999098, 0.03999098, 0.03999098, 0.40047688], [1517163300000, 0.04019999, 0.0402, 0.03999098, 0.03999098, 1.27134977], [1517163420000, 0.03999098, 0.03999098, 0.03999098, 0.03999098, 0.13047097], [1517163480000, 0.03999098, 0.0402, 0.03999098, 0.0402, 0.17517495], [1517163600000, 0.04019999, 0.0402, 0.04019999, 0.0402, 1.24378105], [1517163660000, 0.039991, 0.039991, 0.039991, 0.039991, 1.52429747], [1517163720000, 0.039991, 0.039991, 0.03999099, 0.03999099, 1.96732453], [1517163780000, 0.03999099, 0.039991, 0.03999098, 0.039991, 8.86104033], [1517163840000, 0.03999099, 0.039991, 0.03999099, 0.03999099, 12.25173891], [1517163900000, 0.039991, 0.039991, 0.03999098, 0.03999098, 2.91153311], [1517163960000, 0.03999098, 0.03999099, 0.03999098, 0.03999099, 0.18992728], [1517164020000, 0.03999099, 0.03999099, 0.03999099, 0.03999099, 0.10377316], [1517164080000, 0.039991, 0.039991, 0.039991, 0.039991, 6.1787813], [1517164140000, 0.039991, 0.03999101, 0.039991, 0.03999101, 0.0551374], [1517164200000, 0.03999101, 0.0402, 0.03999101, 0.0402, 0.60393747], [1517164260000, 0.03999101, 0.0399961, 0.03999101, 0.03999101, 0.92557765], [1517164320000, 0.03999101, 0.0399961, 0.03999101, 0.0399961, 0.49857892], [1517164380000, 0.03999101, 0.03999101, 0.03999101, 0.03999101, 0.08096235], [1517164440000, 0.03999356, 0.03999356, 0.03999356, 0.03999356, 0.02750268], [1517164500000, 0.03999355, 0.0399961, 0.039991, 0.039991, 18.02591296], [1517164560000, 0.03999355, 0.03999355, 0.039991, 0.03999355, 0.58000789], [1517164620000, 0.03999355, 0.03999355, 0.03999355, 0.03999355, 0.0551339], [1517164680000, 0.03999355, 0.03999356, 0.03999355, 0.03999356, 1.42328332], [1517164740000, 0.0399939, 0.0399939, 0.0399939, 0.0399939, 0.0275667], [1517164800000, 0.0399939, 0.0399961, 0.0399939, 0.0399961, 1.41625374], [1517164860000, 0.0399961, 0.0399961, 0.0399939, 0.0399961, 1.77773729], [1517164980000, 0.0399961, 0.0399961, 0.03999609, 0.03999609, 0.11141214], [1517165040000, 0.0399961, 0.0399961, 0.03999609, 0.03999609, 0.07822864], [1517165100000, 0.03999609, 0.0399961, 0.03999608, 0.0399961, 4.9570865], [1517165160000, 0.0399961, 0.04019999, 0.0399961, 0.04019999, 3.01778631], [1517165220000, 0.04011959, 0.04011959, 0.03999609, 0.04009949, 0.69413065], [1517165280000, 0.04, 0.04009949, 0.04, 0.04009949, 0.49751256], [1517165340000, 0.04009949, 0.04009949, 0.04009949, 0.04009949, 0.65010485], [1517165400000, 0.04009949, 0.0402, 0.03999609, 0.0402, 2.13541087], [1517165460000, 0.03999609, 0.03999609, 0.039996, 0.039996, 0.27565213], [1517165640000, 0.03999603, 0.03999603, 0.03999603, 0.03999603, 0.3372], [1517165700000, 0.04019999, 0.0402, 0.04019999, 0.0402, 0.60287075], [1517165760000, 0.0402, 0.04022491, 0.0401196, 0.0401196, 2.51077984], [1517165820000, 0.0401196, 0.0401196, 0.0401196, 0.0401196, 0.02748033], [1517165880000, 0.0401196, 0.04022491, 0.0401196, 0.0401196, 0.2994098], [1517165940000, 0.039996, 0.039996, 0.039996, 0.039996, 2.34206577], [1517166000000, 0.0401196, 0.04022999, 0.0401196, 0.04022999, 1.80754995], [1517166060000, 0.04022999, 0.04022999, 0.0401196, 0.0401196, 4.99889453], [1517166120000, 0.0401196, 0.04022999, 0.0401196, 0.04022999, 1.0492435], [1517166180000, 0.0401196, 0.0401196, 0.0401196, 0.0401196, 0.6060928], [1517166240000, 0.0401196, 0.0401196, 0.0401196, 0.0401196, 0.05496066], [1517166300000, 0.040197, 0.04022999, 0.0401196, 0.04022999, 2.15308443], [1517166360000, 0.04022999, 0.04022999, 0.0401196, 0.04022999, 4.77780415], [1517166420000, 0.0401196, 0.0401196, 0.0401196, 0.0401196, 0.05496066], [1517166480000, 0.0401196, 0.0401196, 0.0401196, 0.0401196, 0.05496066], [1517166540000, 0.0401196, 0.04022999, 0.0401196, 0.04022999, 0.6048519], [1517166600000, 0.0401196, 0.04022999, 0.0401196, 0.04022999, 2.06082001], [1517166660000, 0.04022999, 0.04022999, 0.0401196, 0.04021829, 2.04359866], [1517166720000, 0.0401196, 0.0401196, 0.040001, 0.040001, 0.49603353], [1517166780000, 0.040001, 0.04021829, 0.04, 0.04021829, 0.97843955], [1517166840000, 0.04021829, 0.04021829, 0.04, 0.04, 0.92465994], [1517166900000, 0.04021825, 0.04021827, 0.04, 0.04, 2.04770795], [1517166960000, 0.04, 0.04, 0.04, 0.04, 0.73886993], [1517167020000, 0.04, 0.04, 0.04, 0.04, 2.075], [1517167080000, 0.04, 0.04, 0.04, 0.04, 0.02539386], [1517167140000, 0.04, 0.04, 0.04, 0.04, 0.73898866], [1517167200000, 0.04, 0.04, 0.04, 0.04, 0.25], [1517167260000, 0.04, 0.04, 0.04, 0.04, 0.02756445], [1517167380000, 0.03999999, 0.04, 0.03999721, 0.04, 1.25493491], [1517167440000, 0.04, 0.04, 0.0399972, 0.0399972, 12.48210824], [1517167500000, 0.0399972, 0.0399972, 0.03999391, 0.03999391, 0.19961815], [1517167560000, 0.03999391, 0.03999391, 0.03999391, 0.03999391, 1.17292275], [1517167620000, 0.03999499, 0.04, 0.03999499, 0.04, 0.41628521], [1517167680000, 0.04, 0.04, 0.03999499, 0.04, 3.01289789], [1517167740000, 0.04, 0.04, 0.04, 0.04, 0.092599], [1517167800000, 0.04, 0.04, 0.039995, 0.04, 4.0356571], [1517167860000, 0.04, 0.04, 0.03999999, 0.04, 0.75970729], [1517167980000, 0.04, 0.04, 0.039995, 0.04, 0.28291188], [1517168040000, 0.04, 0.04, 0.039996, 0.039996, 4.88575212], [1517168100000, 0.04021825, 0.04021829, 0.04021824, 0.04021829, 1.74050426], [1517168160000, 0.0402, 0.0402, 0.0402, 0.0402, 0.04838619], [1517168220000, 0.04, 0.040001, 0.04, 0.040001, 0.46141973], [1517168340000, 0.0402, 0.0402, 0.0402, 0.0402, 0.025974], [1517168400000, 0.0402, 0.0402, 0.040001, 0.040001, 0.89156353], [1517168460000, 0.0401, 0.0401, 0.04000012, 0.04000013, 8.93137827], [1517168520000, 0.04000012, 0.0401, 0.04, 0.04000001, 1.31556507], [1517168580000, 0.04000004, 0.04000004, 0.04000004, 0.04000004, 0.03200675], [1517168640000, 0.04000004, 0.04009352, 0.04000004, 0.04009352, 0.90131479], [1517168700000, 0.04000004, 0.04009352, 0.04000004, 0.04009352, 0.08637778], [1517168760000, 0.04000004, 0.04000004, 0.04000004, 0.04000004, 0.13211168], [1517168820000, 0.04009998, 0.0401, 0.04, 0.0401, 11.05810089], [1517168940000, 0.04000006, 0.04000006, 0.04000006, 0.04000006, 0.09799192], [1517169000000, 0.0401, 0.0401, 0.04009999, 0.0401, 1.84517671], [1517169060000, 0.04000006, 0.0401, 0.04000006, 0.0401, 0.22824256], [1517169120000, 0.0401, 0.0401, 0.0401, 0.0401, 2.5], [1517169240000, 0.04009999, 0.04009999, 0.04009999, 0.04009999, 1.0], [1517169300000, 0.04000999, 0.04009999, 0.04000999, 0.04009999, 0.49987502], [1517169360000, 0.04000006, 0.04000006, 0.04000006, 0.04000006, 0.02756246], [1517169420000, 0.04000006, 0.04000006, 0.03988295, 0.03988295, 42.11206263], [1517169480000, 0.039867, 0.03989501, 0.03967205, 0.039895, 180.97329716], [1517169540000, 0.039895, 0.039895, 0.03974501, 0.039895, 3.53746418], [1517169600000, 0.03989501, 0.03989501, 0.03989501, 0.03989501, 0.87168067], [1517169660000, 0.03989501, 0.03989501, 0.03989501, 0.03989501, 0.81516642], [1517169720000, 0.039895, 0.039895, 0.039895, 0.039895, 0.0239566], [1517169780000, 0.03989501, 0.03989501, 0.039895, 0.039895, 0.21353371], [1517169840000, 0.039895, 0.039895, 0.039895, 0.039895, 1.34703046], [1517169900000, 0.03989501, 0.03989501, 0.039895, 0.03989501, 0.93335978], [1517169960000, 0.039895, 0.03989501, 0.039895, 0.03989501, 7.45650097], [1517170020000, 0.03989501, 0.03989501, 0.03989001, 0.03989001, 7.295875], [1517170080000, 0.039895, 0.039895, 0.039895, 0.039895, 0.35542698], [1517170140000, 0.03989495, 0.03989499, 0.03989495, 0.03989496, 3.34051399], [1517170200000, 0.03989496, 0.03989499, 0.03989496, 0.03989499, 2.78013792], [1517170260000, 0.03989498, 0.03989498, 0.03989498, 0.03989498, 2.6401073], [1517170320000, 0.03989498, 0.03989498, 0.03989498, 0.03989498, 0.68965489], [1517170380000, 0.03989499, 0.03989501, 0.03989001, 0.03989001, 6.14839692], [1517170440000, 0.03989501, 0.03989501, 0.03989001, 0.03989001, 1.27991261], [1517170500000, 0.03989499, 0.03989499, 0.03989001, 0.03989499, 5.05505659], [1517170560000, 0.03989499, 0.039895, 0.03989499, 0.039895, 0.07421615], [1517170620000, 0.03989499, 0.03989499, 0.03989499, 0.03989499, 0.66272806], [1517170680000, 0.03989499, 0.03989499, 0.03989499, 0.03989499, 0.01628067], [1517170740000, 0.03989001, 0.03989499, 0.03989001, 0.03989499, 0.11544001], [1517170800000, 0.03989499, 0.03989499, 0.03989499, 0.03989499, 0.05264165], [1517170860000, 0.03989499, 0.03989499, 0.03989001, 0.03989499, 1.09585702], [1517170920000, 0.03989499, 0.0401, 0.03989499, 0.0401, 2.3363095], [1517170980000, 0.04009991, 0.0401, 0.04009991, 0.0401, 1.44172141], [1517171040000, 0.04009991, 0.04009991, 0.03991897, 0.03995966, 0.1575744], [1517171100000, 0.03991887, 0.03991887, 0.03991887, 0.03991887, 1.21375485], [1517171160000, 0.04009995, 0.04009995, 0.03991889, 0.03991889, 0.16091652], [1517171280000, 0.04009994, 0.0401, 0.03991899, 0.0401, 1.03600144], [1517171340000, 0.0401, 0.0401, 0.0401, 0.0401, 1.56189344], [1517171400000, 0.04009999, 0.04011, 0.04009999, 0.04011, 2.2518465], [1517171460000, 0.0401, 0.0401, 0.0401, 0.0401, 0.36711641], [1517171520000, 0.0401, 0.04011, 0.0401, 0.0401, 0.24830276], [1517171580000, 0.0401, 0.0401, 0.0401, 0.0401, 2.66699705], [1517171700000, 0.04009999, 0.0401, 0.04009999, 0.0401, 0.24937655], [1517171880000, 0.04, 0.0400005, 0.04, 0.0400005, 1.2507], [1517171940000, 0.0400005, 0.0400005, 0.0400005, 0.0400005, 0.53318448], [1517172000000, 0.04, 0.04, 0.04, 0.04, 0.25], [1517172060000, 0.03992, 0.04, 0.03992, 0.04, 0.2928614], [1517172120000, 0.039924, 0.04, 0.039924, 0.04, 0.15080621], [1517172300000, 0.03992, 0.0400005, 0.03992, 0.0400005, 1.96140625], [1517172360000, 0.0400005, 0.0400005, 0.03992, 0.03992, 0.57969336], [1517172420000, 0.04000049, 0.0400005, 0.04000049, 0.0400005, 2.75817836], [1517172480000, 0.04009997, 0.04009997, 0.03992, 0.03992, 0.26354799], [1517172540000, 0.03992, 0.03992, 0.03992, 0.03992, 0.07366826], [1517172600000, 0.04009995, 0.04009999, 0.04009995, 0.04009999, 1.745639], [1517172660000, 0.0401, 0.0401, 0.04009997, 0.04009999, 8.97132333], [1517172720000, 0.04009999, 0.0401, 0.03992001, 0.03992001, 7.42254568], [1517172780000, 0.03992001, 0.04, 0.03992001, 0.04, 4.08251531], [1517172840000, 0.04, 0.04009299, 0.03992, 0.03992, 1.26374227], [1517172900000, 0.04009998, 0.04017347, 0.04009998, 0.04017347, 1.74563585], [1517172960000, 0.04018896, 0.04020998, 0.04018896, 0.04020998, 3.61220422], [1517173020000, 0.04020998, 0.04020998, 0.04020499, 0.04020499, 8.63711166], [1517173080000, 0.03993, 0.03993, 0.03992, 0.03992, 10.0], [1517173140000, 0.03993, 0.03993, 0.03993, 0.03993, 0.18812313], [1517173200000, 0.04009135, 0.04021817, 0.03992558, 0.04021299, 1.4080099], [1517173260000, 0.040213, 0.040224, 0.040213, 0.040224, 3.97920682], [1517173320000, 0.040224, 0.040224, 0.040224, 0.040224, 1.59995414], [1517173380000, 0.03992557, 0.03992578, 0.03992, 0.03992, 4.05636178], [1517173500000, 0.04019763, 0.040219, 0.04019669, 0.04019669, 1.52202268], [1517173560000, 0.04019669, 0.04019669, 0.04019669, 0.04019669, 0.02428799], [1517173620000, 0.04019669, 0.04019669, 0.04019669, 0.04019669, 0.04836932], [1517173680000, 0.03992557, 0.03992557, 0.03992557, 0.03992557, 0.4597105], [1517173740000, 0.03992557, 0.03992557, 0.03992557, 0.03992557, 0.49055208], [1517173800000, 0.03992559, 0.0402065, 0.03992559, 0.04019667, 0.97702167], [1517173860000, 0.04019667, 0.04019667, 0.04019667, 0.04019667, 0.02512323], [1517174040000, 0.0399256, 0.0399256, 0.0399256, 0.0399256, 0.10035486], [1517174100000, 0.04019664, 0.0401967, 0.0399256, 0.0399256, 0.74633175], [1517174160000, 0.0399256, 0.03992561, 0.0399256, 0.03992561, 0.9839024], [1517174220000, 0.03992561, 0.03992561, 0.03992561, 0.03992561, 0.07070745], [1517174280000, 0.04017664, 0.04017664, 0.04017664, 0.04017664, 0.5600484], [1517174340000, 0.03992562, 0.03992562, 0.03992559, 0.03992559, 0.06246457], [1517174400000, 0.03992562, 0.04019499, 0.03992562, 0.04019499, 1.63042448], [1517174460000, 0.04019498, 0.04019498, 0.04019498, 0.04019498, 0.20160299], [1517174520000, 0.03992564, 0.03992564, 0.03992563, 0.03992563, 0.41538453], [1517174580000, 0.04019491, 0.04019494, 0.04019491, 0.04019494, 0.135], [1517174640000, 0.04019492, 0.04019492, 0.04019492, 0.04019492, 1.0], [1517174700000, 0.04019492, 0.04019493, 0.04019492, 0.04019493, 5.48453031], [1517174760000, 0.04019477, 0.04019477, 0.04019477, 0.04019477, 0.32334157], [1517174820000, 0.04019224, 0.04019224, 0.03992565, 0.03992565, 0.74581024], [1517174880000, 0.03992565, 0.03992566, 0.03992565, 0.03992566, 0.35009413], [1517174940000, 0.04018489, 0.04018489, 0.04018489, 0.04018489, 1.82989834], [1517175000000, 0.04018488, 0.0401849, 0.04018488, 0.0401849, 0.24884969], [1517175060000, 0.03992567, 0.03992567, 0.03992567, 0.03992567, 1.25232682], [1517175120000, 0.03992567, 0.03992567, 0.03992567, 0.03992567, 0.28738874], [1517175180000, 0.03992566, 0.03992567, 0.03992566, 0.03992567, 0.82309207], [1517175240000, 0.03992567, 0.03992567, 0.03992566, 0.03992566, 48.872608], [1517175300000, 0.03992567, 0.03992567, 0.03992567, 0.03992567, 2.75528255], [1517175360000, 0.03992567, 0.03992567, 0.03992567, 0.03992567, 1.32010512], [1517175420000, 0.03992567, 0.03992567, 0.03992567, 0.03992567, 2.36739204], [1517175480000, 0.03992566, 0.03992566, 0.03992566, 0.03992566, 6.0], [1517175540000, 0.03992566, 0.03992567, 0.03992566, 0.03992567, 4.92288455], [1517175600000, 0.03992567, 0.03992567, 0.03992566, 0.03992567, 3.83753788], [1517175660000, 0.03992567, 0.03992567, 0.03992566, 0.03992567, 4.75883937], [1517175720000, 0.03992567, 0.03992567, 0.03992566, 0.03992567, 4.0250768], [1517175780000, 0.03992567, 0.03992567, 0.03992566, 0.03992567, 36.36061249], [1517175840000, 0.03992567, 0.03992567, 0.03992567, 0.03992567, 0.47545328], [1517175900000, 0.03992567, 0.03992567, 0.03992567, 0.03992567, 11.46216942], [1517175960000, 0.03992567, 0.03992567, 0.03992566, 0.03992566, 5.30441843], [1517176020000, 0.03992567, 0.03992567, 0.03992566, 0.03992566, 10.79019915], [1517176080000, 0.03992564, 0.03992564, 0.03992564, 0.03992564, 0.47326962], [1517176140000, 0.03992564, 0.03992564, 0.03992564, 0.03992564, 21.455974], [1517176200000, 0.03992564, 0.03992564, 0.03992563, 0.03992563, 7.30049596], [1517176260000, 0.03992564, 0.03992564, 0.03992564, 0.03992564, 0.77901162], [1517176320000, 0.03992563, 0.03992563, 0.03992563, 0.03992563, 0.60629601], [1517176380000, 0.03992564, 0.03992564, 0.03992563, 0.03992564, 0.93036256], [1517176440000, 0.03992564, 0.03992564, 0.03992563, 0.03992564, 22.57886099], [1517176500000, 0.03992564, 0.03992564, 0.03992563, 0.03992564, 5.06851289], [1517176560000, 0.03992564, 0.03992564, 0.03992564, 0.03992564, 25.19629398], [1517176620000, 0.03992564, 0.03992564, 0.03992563, 0.03992563, 9.38165599], [1517176680000, 0.03992563, 0.03992564, 0.03992563, 0.03992564, 0.70571869], [1517176740000, 0.03992563, 0.03992564, 0.03992563, 0.03992563, 1.97261644], [1517176800000, 0.03992564, 0.03992564, 0.03992563, 0.03992564, 12.18272473], [1517176860000, 0.03992564, 0.03992564, 0.03992563, 0.03992564, 0.47437023], [1517176920000, 0.03992564, 0.03992564, 0.03992563, 0.03992564, 0.28636974], [1517176980000, 0.03992564, 0.03992564, 0.03992563, 0.03992563, 3.36449908], [1517177040000, 0.03992564, 0.03992564, 0.03992564, 0.03992564, 0.02761404], [1517177100000, 0.03992564, 0.03992564, 0.03992563, 0.03992564, 9.94825186], [1517177160000, 0.03992566, 0.03992566, 0.03992566, 0.03992566, 0.12996892], [1517177220000, 0.03992565, 0.03992566, 0.03992565, 0.03992566, 0.17322585], [1517177280000, 0.03992566, 0.03992566, 0.03992564, 0.03992564, 10.28456064], [1517177340000, 0.03992566, 0.03992566, 0.03992564, 0.03992566, 0.06912804], [1517177400000, 0.03992566, 0.03992566, 0.03992565, 0.03992565, 0.07173687], [1517177460000, 0.03992566, 0.03992566, 0.03992565, 0.03992566, 11.21120424], [1517177520000, 0.03992566, 0.04, 0.03992566, 0.04, 38.73571085], [1517177580000, 0.0400298, 0.0400298, 0.0400298, 0.0400298, 1.59220239], [1517177640000, 0.0400298, 0.04021318, 0.0400298, 0.04021318, 0.32554595], [1517177700000, 0.04021312, 0.04021325, 0.0402131, 0.04021325, 1.08625356], [1517177760000, 0.04002584, 0.04021199, 0.04002584, 0.04021199, 1.33978291], [1517177820000, 0.04002584, 0.04021325, 0.04000001, 0.04021324, 1.5228841], [1517177880000, 0.04000002, 0.04000002, 0.04000002, 0.04000002, 0.18463358], [1517177940000, 0.04000004, 0.04000004, 0.04000004, 0.04000004, 0.0926703], [1517178000000, 0.0400001, 0.04021324, 0.0400001, 0.04021324, 0.35976057], [1517178180000, 0.04021324, 0.04021324, 0.04021324, 0.04021324, 0.01633079], [1517178240000, 0.04000012, 0.04021324, 0.04000012, 0.04011, 0.22244407], [1517178300000, 0.04020324, 0.04020324, 0.04011, 0.04011, 0.27622332], [1517178360000, 0.04020324, 0.04020324, 0.04000011, 0.04000011, 4.17832295], [1517178420000, 0.04011001, 0.04011001, 0.04011001, 0.04011001, 0.0549738], [1517178480000, 0.04011001, 0.04011001, 0.04011001, 0.04011001, 0.0549738], [1517178540000, 0.04011001, 0.04011001, 0.04000011, 0.04000011, 0.0274869], [1517178600000, 0.04020321, 0.04021325, 0.04020321, 0.04021325, 2.59789281], [1517178660000, 0.04000011, 0.04000011, 0.04000011, 0.04000011, 0.09683365], [1517178720000, 0.04000011, 0.04020325, 0.04000011, 0.04000011, 0.50907221], [1517178900000, 0.04021323, 0.04021325, 0.0400008, 0.04021325, 2.10505242], [1517178960000, 0.04021325, 0.04021325, 0.04021325, 0.04021325, 0.43547291], [1517179020000, 0.04021398, 0.04021399, 0.04021398, 0.04021399, 0.12702], [1517179080000, 0.0400001, 0.0400001, 0.0400001, 0.0400001, 0.25247424], [1517179200000, 0.04021323, 0.040214, 0.04010666, 0.040214, 1.97805496], [1517179260000, 0.040214, 0.040214, 0.040214, 0.040214, 1.19600883], [1517179320000, 0.0400001, 0.0400001, 0.0400001, 0.0400001, 0.25247424], [1517179380000, 0.04000047, 0.04000047, 0.04000047, 0.04000047, 0.0408093], [1517179440000, 0.04000047, 0.04000047, 0.04000047, 0.04000047, 0.10078956], [1517179500000, 0.04020398, 0.04020399, 0.04000047, 0.04020399, 2.3143729], [1517179560000, 0.04020399, 0.04020399, 0.04000047, 0.040001, 4.11683889], [1517179620000, 0.04000047, 0.040001, 0.0400001, 0.0400001, 6.4185387], [1517179680000, 0.04000047, 0.04000047, 0.0400001, 0.0400001, 0.322988], [1517179740000, 0.0400001, 0.0400001, 0.0400001, 0.0400001, 1.5005427], [1517179800000, 0.0400001, 0.040001, 0.0400001, 0.040001, 1.95007974], [1517179860000, 0.04000099, 0.040001, 0.0400001, 0.0400001, 2.08455797], [1517179920000, 0.040001, 0.040001, 0.040001, 0.040001, 0.09339559], [1517179980000, 0.040001, 0.040001, 0.0400001, 0.0400001, 2.35397499], [1517180040000, 0.0400001, 0.040214, 0.0400001, 0.040214, 4.55655597], [1517180100000, 0.0400001, 0.040224, 0.0400001, 0.040224, 15.41910075], [1517180160000, 0.0400001, 0.04011, 0.0400001, 0.04011, 0.86710968], [1517180220000, 0.04011, 0.04011, 0.04011, 0.04011, 0.18847401], [1517180280000, 0.04011, 0.04011, 0.0400001, 0.0400001, 0.05497382], [1517180340000, 0.0400001, 0.04022398, 0.0400001, 0.04022398, 2.6358814], [1517180400000, 0.04022398, 0.04022398, 0.04022398, 0.04022398, 1.0836867], [1517180460000, 0.04022398, 0.04022398, 0.04022398, 0.04022398, 0.16373404], [1517180520000, 0.04022396, 0.04022397, 0.04022396, 0.04022397, 0.11111546], [1517180580000, 0.04022395, 0.04022397, 0.04022395, 0.04022397, 0.8113378], [1517180640000, 0.0400001, 0.0400001, 0.0400001, 0.0400001, 0.05103434], [1517180700000, 0.04022398, 0.04022398, 0.04022398, 0.04022398, 1.49164674], [1517180820000, 0.04022397, 0.04022398, 0.04022397, 0.04022397, 2.7213424], [1517180880000, 0.04022397, 0.04022399, 0.04022397, 0.04022397, 2.49157883], [1517180940000, 0.04022397, 0.04022399, 0.04022397, 0.04022397, 12.0284568], [1517181000000, 0.04022397, 0.04022399, 0.04022397, 0.04022397, 4.67789373], [1517181060000, 0.04022399, 0.04022399, 0.04022397, 0.04022397, 2.82492627], [1517181120000, 0.04022397, 0.04022397, 0.04022397, 0.04022397, 0.76988689], [1517181180000, 0.04022397, 0.0402502, 0.04022397, 0.040224, 9.60711697], [1517181240000, 0.040224, 0.040224, 0.040224, 0.040224, 1.70140946], [1517181300000, 0.040224, 0.0402502, 0.040224, 0.0402502, 2.29118447], [1517181360000, 0.040224, 0.04025021, 0.040224, 0.040224, 28.06810972], [1517181420000, 0.04025021, 0.04025021, 0.0400001, 0.0400001, 2.06535481], [1517181480000, 0.04000011, 0.04025021, 0.04000011, 0.04025021, 0.72436666], [1517181540000, 0.0402502, 0.0402502, 0.0402502, 0.0402502, 0.12422298], [1517181600000, 0.04000011, 0.04025018, 0.04000011, 0.04025018, 1.06897186], [1517181780000, 0.04025017, 0.04025018, 0.04025017, 0.04025018, 2.36070328], [1517181900000, 0.04025016, 0.04025016, 0.040001, 0.040001, 2.5880598], [1517181960000, 0.040005, 0.040005, 0.040005, 0.040005, 0.04305047], [1517182020000, 0.040005, 0.040005, 0.040005, 0.040005, 0.08498075], [1517182080000, 0.040005, 0.040005, 0.040005, 0.040005, 3.03543573], [1517182140000, 0.040006, 0.040006, 0.040006, 0.040006, 0.061], [1517182200000, 0.04000501, 0.04025021, 0.04000501, 0.04025021, 0.31780594], [1517182260000, 0.04025021, 0.04025021, 0.04025016, 0.04025016, 1.36319204], [1517182320000, 0.04025016, 0.04025021, 0.04010939, 0.04025021, 2.4131843], [1517182380000, 0.04000501, 0.04025021, 0.04000501, 0.04000501, 0.75703542], [1517182440000, 0.04000501, 0.04000501, 0.04000501, 0.04000501, 0.02842169], [1517182500000, 0.04000501, 0.04000501, 0.040001, 0.040005, 10.85601565], [1517182560000, 0.040005, 0.04000501, 0.040001, 0.040001, 0.74922853], [1517182620000, 0.04000011, 0.04000501, 0.04000011, 0.04000501, 2.51871822], [1517182680000, 0.04000501, 0.04000501, 0.04000501, 0.04000501, 0.02756249], [1517182740000, 0.04000012, 0.04000012, 0.04000012, 0.04000012, 0.27756174], [1517182800000, 0.04000011, 0.040045, 0.04000011, 0.04000011, 10.84710197], [1517182860000, 0.04000011, 0.04000011, 0.04000011, 0.04000011, 0.02714499], [1517182980000, 0.04014999, 0.04025021, 0.04014999, 0.04025021, 0.1419995], [1517183040000, 0.04014999, 0.04029395, 0.040011, 0.040011, 0.97127342], [1517183100000, 0.040005, 0.04029388, 0.040005, 0.04028997, 0.83778386], [1517183160000, 0.04029222, 0.04029222, 0.04029222, 0.04029222, 0.01736183], [1517183340000, 0.04019221, 0.04019221, 0.04019221, 0.04019221, 0.02648887], [1517183400000, 0.04019221, 0.04029222, 0.04019221, 0.04029221, 2.20291541], [1517183460000, 0.04018977, 0.04018977, 0.040005, 0.040011, 2.01880506], [1517183640000, 0.04015333, 0.04015333, 0.04004435, 0.04015333, 3.88377851], [1517183700000, 0.04029385, 0.04033107, 0.04015333, 0.04015333, 1.57118254], [1517183760000, 0.04004436, 0.04033995, 0.04004435, 0.04033995, 1.35640064], [1517183880000, 0.04033995, 0.040351, 0.04033991, 0.040351, 0.70963456], [1517183940000, 0.04024007, 0.04024007, 0.04024007, 0.04024007, 0.02525252], [1517184000000, 0.04035192, 0.0403909, 0.04024007, 0.04024007, 1.17036504], [1517184060000, 0.04024007, 0.04024007, 0.04004435, 0.04004435, 0.07536991], [1517184120000, 0.04024006, 0.04024007, 0.04024006, 0.04024007, 7.47296435], [1517184180000, 0.04024007, 0.04024007, 0.04004435, 0.04024007, 3.9779633], [1517184240000, 0.04004435, 0.04024007, 0.04004435, 0.04024007, 3.50327674], [1517184300000, 0.04024007, 0.04024007, 0.04024007, 0.04024007, 0.24850832], [1517184420000, 0.04001, 0.04024007, 0.04001, 0.04024007, 0.20275909], [1517184480000, 0.04024, 0.04024, 0.04024, 0.04024, 5.0], [1517184540000, 0.040005, 0.04024, 0.040005, 0.04024, 1.41350087], [1517184600000, 0.04024, 0.04024, 0.04024, 0.04024, 0.24850894], [1517184660000, 0.0401394, 0.04023994, 0.0401394, 0.0401394, 0.21786745], [1517184720000, 0.0401394, 0.0401394, 0.0401394, 0.0401394, 0.14966882], [1517184780000, 0.04001, 0.04001, 0.040005, 0.040005, 0.06308747], [1517184900000, 0.04013938, 0.040238, 0.040002, 0.040002, 4.07214886], [1517184960000, 0.04003412, 0.04055899, 0.04003412, 0.04031899, 109.07563809], [1517185020000, 0.0400792, 0.040238, 0.0400792, 0.040238, 36.05470232], [1517185080000, 0.040238, 0.040555, 0.04000101, 0.04038999, 138.997219], [1517185140000, 0.040375, 0.04037992, 0.040375, 0.04037992, 25.0], [1517185200000, 0.04038998, 0.04042392, 0.040062, 0.04006701, 2.14714659], [1517185260000, 0.04001703, 0.04030197, 0.04001702, 0.040018, 3.93075734], [1517185320000, 0.040025, 0.04036094, 0.040025, 0.04036094, 1.18355202], [1517185380000, 0.04002, 0.04002801, 0.04002, 0.040028, 0.63331315], [1517185440000, 0.04035956, 0.04035956, 0.04035956, 0.04035956, 0.59036553], [1517185500000, 0.04003301, 0.0403588, 0.040011, 0.04035875, 1.70888594], [1517185560000, 0.04036069, 0.04048692, 0.04004107, 0.04044395, 50.48115088], [1517185620000, 0.040176, 0.04044389, 0.040176, 0.04044389, 10.5572984], [1517185680000, 0.0404438, 0.0404438, 0.04044371, 0.04044371, 10.03891847], [1517185740000, 0.04034354, 0.0405, 0.04017601, 0.04017601, 28.56077395], [1517185800000, 0.04024351, 0.04053798, 0.040174, 0.04020519, 32.23277357], [1517185860000, 0.0405, 0.040559, 0.040091, 0.040101, 0.75440162], [1517185920000, 0.04011101, 0.0404864, 0.04011101, 0.0404864, 3.46467738], [1517185980000, 0.0404864, 0.0404864, 0.040121, 0.040121, 1.26043458], [1517186100000, 0.04014606, 0.04046399, 0.04000121, 0.040449, 29.30219742], [1517186160000, 0.040121, 0.04043399, 0.040121, 0.04012102, 19.864303], [1517186220000, 0.04012602, 0.04012602, 0.04012602, 0.04012602, 1.89365943], [1517186280000, 0.04042498, 0.040459, 0.04042498, 0.040459, 0.06565174], [1517186340000, 0.04044462, 0.04044462, 0.04013102, 0.04013102, 1.2142272], [1517186400000, 0.04013601, 0.04013601, 0.04013601, 0.04013601, 0.04111654], [1517186460000, 0.040151, 0.040151, 0.04012602, 0.04012602, 5.0513355], [1517186520000, 0.04014101, 0.04014101, 0.040136, 0.04014101, 0.30091355], [1517186580000, 0.04014101, 0.040429, 0.04014099, 0.040141, 29.10326756], [1517186640000, 0.04013248, 0.040141, 0.040121, 0.040121, 1.58020747], [1517186700000, 0.040121, 0.040121, 0.0400156, 0.0400156, 0.70122663], [1517186760000, 0.0400156, 0.04014099, 0.0400156, 0.04014099, 27.49385645], [1517186820000, 0.04001559, 0.04001559, 0.04001559, 0.04001559, 0.73703522], [1517186880000, 0.04014099, 0.040141, 0.04001559, 0.0400156, 4.23279204], [1517186940000, 0.040141, 0.040141, 0.040141, 0.040141, 4.42817873], [1517187000000, 0.040141, 0.040141, 0.0401409, 0.0401409, 0.88909079], [1517187060000, 0.04014089, 0.0401409, 0.04001562, 0.0401409, 0.31777639], [1517187120000, 0.0401409, 0.0401409, 0.0401409, 0.0401409, 0.76779412], [1517187180000, 0.0401409, 0.0401409, 0.0401409, 0.0401409, 0.07776876], [1517187240000, 0.040001, 0.040001, 0.040001, 0.040001, 4.45461501], [1517187300000, 0.040001, 0.040001, 0.0400001, 0.040001, 9.46024541], [1517187360000, 0.040001, 0.040001, 0.0400001, 0.040001, 24.56320564], [1517187420000, 0.040001, 0.0401409, 0.0400001, 0.0401409, 1.1099625], [1517187480000, 0.0400001, 0.04014098, 0.0400001, 0.0400001, 11.76549198], [1517187540000, 0.04000011, 0.040141, 0.04000011, 0.040141, 0.22780884], [1517187600000, 0.040141, 0.040141, 0.04014009, 0.04014009, 2.10652256], [1517187660000, 0.04014009, 0.04014009, 0.04014009, 0.04014009, 0.07777032], [1517187720000, 0.0400001, 0.04014009, 0.0400001, 0.04014009, 1.29408033], [1517187780000, 0.04014009, 0.04014009, 0.04000011, 0.04000012, 6.61268527], [1517187840000, 0.04000012, 0.04000012, 0.0400001, 0.0400001, 22.55452829], [1517187900000, 0.04000012, 0.04000012, 0.04, 0.04, 1.07606993], [1517187960000, 0.04000001, 0.04000012, 0.04000001, 0.04000012, 0.11974903], [1517188020000, 0.04000001, 0.04000012, 0.04, 0.04000005, 20.13089838], [1517188080000, 0.04000005, 0.04000012, 0.04000005, 0.04000012, 1.16951334], [1517188200000, 0.04000015, 0.04014009, 0.04000015, 0.04014009, 0.89648909], [1517188260000, 0.04000015, 0.04000015, 0.04000015, 0.04000015, 0.67207476], [1517188320000, 0.0400011, 0.0400011, 0.0400011, 0.0400011, 0.22727272], [1517188380000, 0.04014009, 0.04014009, 0.04014009, 0.04014009, 0.1475], [1517188440000, 0.04000961, 0.04010971, 0.04000961, 0.04010971, 0.11476137], [1517188500000, 0.04010971, 0.04014009, 0.04000047, 0.04014009, 3.73222506], [1517188560000, 0.04000058, 0.04014009, 0.03992562, 0.03992565, 7.15268655], [1517188620000, 0.039945, 0.039946, 0.03992567, 0.039946, 0.30128814], [1517188680000, 0.03994601, 0.03994603, 0.03994601, 0.03994603, 0.132736], [1517188740000, 0.04014009, 0.040141, 0.04014009, 0.040141, 7.55788097], [1517188800000, 0.040141, 0.040141, 0.039947, 0.040141, 1.14290245], [1517188860000, 0.04014097, 0.04014099, 0.03994602, 0.03994602, 5.42683177], [1517188920000, 0.03994602, 0.04014096, 0.03994602, 0.04014096, 3.89200299], [1517188980000, 0.04004349, 0.04014096, 0.04004349, 0.04014096, 0.27714766], [1517189100000, 0.04014096, 0.04014098, 0.03994602, 0.04014098, 2.98946208], [1517189160000, 0.03996601, 0.04014097, 0.03996601, 0.04014097, 3.52567597], [1517189220000, 0.04014097, 0.040141, 0.0399851, 0.039987, 70.95228619], [1517189280000, 0.039987, 0.04014099, 0.039987, 0.04014099, 0.706152], [1517189400000, 0.04014099, 0.040141, 0.04, 0.040141, 1.89746189], [1517189460000, 0.040141, 0.040141, 0.040141, 0.040141, 4.2456092], [1517189580000, 0.03994641, 0.04006034, 0.03992562, 0.03992562, 2.30811338], [1517189640000, 0.04013, 0.040141, 0.03992563, 0.04013, 17.49250369], [1517189700000, 0.03992601, 0.04013, 0.03992601, 0.04013, 0.56792815], [1517189880000, 0.0401177, 0.0401177, 0.0401177, 0.0401177, 0.03888302], [1517189940000, 0.04, 0.0401177, 0.04, 0.0401177, 8.45940118], [1517190000000, 0.0401177, 0.040141, 0.0401177, 0.040141, 103.69239832], [1517190060000, 0.040141, 0.040141, 0.03996664, 0.040141, 78.53066551], [1517190120000, 0.040141, 0.040141, 0.040141, 0.040141, 47.31505284], [1517190180000, 0.040141, 0.040141, 0.0399311, 0.040141, 8.54718429], [1517190240000, 0.040141, 0.040141, 0.039926, 0.039926, 0.32068769], [1517190300000, 0.039926, 0.04014074, 0.039926, 0.04014074, 4.28311579], [1517190360000, 0.04014074, 0.04014074, 0.04014074, 0.04014074, 0.03578558], [1517190420000, 0.04014073, 0.04014074, 0.04014073, 0.04014074, 3.3282], [1517190540000, 0.04014073, 0.04014074, 0.04014073, 0.04014074, 4.96217428], [1517190600000, 0.04014074, 0.04014074, 0.04014074, 0.04014074, 0.2491237], [1517190660000, 0.03992563, 0.03992563, 0.03992563, 0.03992563, 0.05], [1517190720000, 0.03992563, 0.03992563, 0.03992563, 0.03992563, 1.51320502], [1517190780000, 0.039932, 0.039932, 0.039932, 0.039932, 0.253], [1517190900000, 0.04014074, 0.04014074, 0.04014074, 0.04014074, 0.4982474], [1517190960000, 0.03993199, 0.03993199, 0.03993199, 0.03993199, 0.25], [1517191200000, 0.04014074, 0.04014074, 0.03993198, 0.03993198, 0.35080206], [1517191260000, 0.039937, 0.04014074, 0.039937, 0.04014074, 8.03354444], [1517191320000, 0.04014074, 0.040141, 0.04014074, 0.040141, 26.0814444], [1517191380000, 0.040141, 0.040424, 0.04001, 0.040424, 11.26240337], [1517191440000, 0.04004, 0.0403741, 0.04004, 0.0403741, 6.87820957], [1517191500000, 0.0403741, 0.04045399, 0.04007502, 0.04012001, 1.99523049], [1517191560000, 0.04041372, 0.04043399, 0.04041372, 0.04043399, 0.4958313], [1517191680000, 0.04043398, 0.04044599, 0.04043398, 0.04044599, 0.49211596], [1517191740000, 0.04012408, 0.04012408, 0.04012408, 0.04012408, 0.03589433], [1517191800000, 0.040376, 0.040464, 0.04012408, 0.04043299, 0.92134676], [1517191860000, 0.040444, 0.040444, 0.040444, 0.040444, 0.34711582], [1517191920000, 0.04012, 0.04012, 0.04012, 0.04012, 0.04876484], [1517192040000, 0.0401241, 0.04038897, 0.0401241, 0.04038897, 1.24019251], [1517192100000, 0.04012001, 0.040434, 0.040062, 0.040062, 5.42696185], [1517192160000, 0.039942, 0.03997201, 0.039942, 0.03997201, 1.38963649], [1517192220000, 0.03996701, 0.04028599, 0.03996201, 0.039972, 3.92718385], [1517192280000, 0.03996704, 0.03996705, 0.03996704, 0.03996705, 1.45], [1517192340000, 0.03996708, 0.03996708, 0.03996708, 0.03996708, 0.16864019], [1517192400000, 0.0402, 0.0402, 0.03996711, 0.03996711, 0.26794621], [1517192460000, 0.0399671, 0.0399671, 0.03996708, 0.03996708, 0.565], [1517192580000, 0.03996708, 0.03996708, 0.03996708, 0.03996708, 0.1001123], [1517192640000, 0.03995697, 0.0402, 0.03995697, 0.0402, 1.66119548], [1517192700000, 0.04007847, 0.04019999, 0.04007847, 0.04019999, 0.28741246], [1517192760000, 0.0402, 0.0402, 0.04005384, 0.0402, 7.82542286], [1517192820000, 0.04007847, 0.04007847, 0.04007847, 0.04007847, 0.10288631], [1517192880000, 0.04018999, 0.04018999, 0.03997706, 0.03997706, 5.62261913], [1517192940000, 0.04019, 0.04019869, 0.04019, 0.04019869, 0.02756456], [1517193000000, 0.0402, 0.0402, 0.040007, 0.040007, 1.19300299], [1517193060000, 0.04019, 0.04019, 0.04019, 0.04019, 0.02756109], [1517193180000, 0.040096, 0.040096, 0.040096, 0.040096, 0.22223852], [1517193240000, 0.040096, 0.040096, 0.040096, 0.040096, 0.02749651], [1517193300000, 0.040096, 0.04019, 0.040096, 0.040096, 1.25722171], [1517193360000, 0.04008995, 0.04008995, 0.04000205, 0.04000205, 3.77146749], [1517193420000, 0.04008995, 0.04008995, 0.04000205, 0.04008995, 3.68105963], [1517193480000, 0.04008995, 0.04008995, 0.04008995, 0.04008995, 0.05122596], [1517193540000, 0.04008995, 0.04008995, 0.04008995, 0.04008995, 0.02053698], [1517193600000, 0.04008995, 0.04008995, 0.04008995, 0.04008995, 0.24943938], [1517193660000, 0.04008995, 0.04008995, 0.04000205, 0.04000205, 0.57484796], [1517193720000, 0.04008955, 0.04008955, 0.04008955, 0.04008955, 0.02756129], [1517193780000, 0.04008995, 0.04008995, 0.04008995, 0.04008995, 0.64314844], [1517193840000, 0.04000205, 0.04000205, 0.04000205, 0.04000205, 8.61316395], [1517193900000, 0.04008954, 0.04008954, 0.04008954, 0.04008954, 0.49888374], [1517193960000, 0.04000205, 0.04008995, 0.04000205, 0.04008995, 0.27313295], [1517194020000, 0.04000205, 0.04000205, 0.04000205, 0.04000205, 0.05074033], [1517194080000, 0.04000205, 0.04008993, 0.04000205, 0.04008993, 0.25566022], [1517194140000, 0.04008993, 0.04008993, 0.04008993, 0.04008993, 1.05545131], [1517194200000, 0.04008992, 0.04008992, 0.04008992, 0.04008992, 0.08250204], [1517194260000, 0.04008992, 0.04008993, 0.04000205, 0.04008993, 0.33624591], [1517194320000, 0.04008992, 0.04008992, 0.04008992, 0.04008992, 0.02755781], [1517194380000, 0.04008992, 0.04008993, 0.04000205, 0.04008993, 1.81636655], [1517194440000, 0.04000205, 0.04008992, 0.04000205, 0.04008992, 0.60400531], [1517194500000, 0.04008995, 0.04008995, 0.04008995, 0.04008995, 0.49887876], [1517194560000, 0.04000702, 0.04008995, 0.04000702, 0.04008995, 0.15775205], [1517194620000, 0.04000206, 0.040007, 0.04000205, 0.040007, 3.36449985], [1517194680000, 0.040007, 0.04008995, 0.040007, 0.04008995, 0.38058903], [1517194740000, 0.0401, 0.0401, 0.04008995, 0.04008995, 0.08745843], [1517194800000, 0.04008995, 0.04008995, 0.04000205, 0.04000205, 0.05500132], [1517194860000, 0.04000205, 0.04000205, 0.04000205, 0.04000205, 1.86553812], [1517194920000, 0.04000205, 0.04000205, 0.04000205, 0.04000205, 0.03359455], [1517194980000, 0.04000205, 0.0401, 0.04000205, 0.0401, 1.52756109], [1517195040000, 0.04009999, 0.04009999, 0.04009999, 0.04009999, 0.05498754], [1517195100000, 0.04009999, 0.0402, 0.04009999, 0.04009999, 0.4321045], [1517195160000, 0.04009999, 0.04009999, 0.04009999, 0.04009999, 0.05498754], [1517195220000, 0.04009999, 0.04009999, 0.04009999, 0.04009999, 0.35305772], [1517195280000, 0.0402, 0.040444, 0.04009999, 0.04009999, 16.97036493], [1517195400000, 0.04032274, 0.04033053, 0.04032274, 0.04033053, 0.49595056], [1517195460000, 0.04033053, 0.04033053, 0.04033053, 0.04033053, 0.61857213], [1517195520000, 0.04033053, 0.04033053, 0.04033053, 0.04033053, 0.35136441], [1517195580000, 0.0403, 0.0403, 0.0403, 0.0403, 0.02436431], [1517195640000, 0.04012001, 0.04012001, 0.04009999, 0.0401, 3.77510053], [1517195700000, 0.04010501, 0.04039999, 0.04010501, 0.04039999, 0.94894538], [1517196000000, 0.0402523, 0.04039999, 0.0402523, 0.04039999, 0.745299], [1517196180000, 0.04010503, 0.04010503, 0.04010502, 0.04010502, 1.12010526], [1517196240000, 0.04039697, 0.04039697, 0.04039697, 0.04039697, 0.43219923], [1517196300000, 0.04039697, 0.04039999, 0.04039697, 0.04039999, 1.64374428], [1517196360000, 0.04011163, 0.04011163, 0.04011163, 0.04011163, 0.0208], [1517196540000, 0.040399, 0.04039999, 0.040399, 0.04039999, 1.00400299], [1517196600000, 0.04039998, 0.04039998, 0.04039998, 0.04039998, 2.11775814], [1517196720000, 0.0402, 0.0402, 0.0402, 0.0402, 0.02742537], [1517196780000, 0.0402, 0.04039997, 0.0402, 0.04039997, 0.19038882], [1517196840000, 0.0402, 0.04039998, 0.0402, 0.04039998, 0.60392963], [1517196900000, 0.04039997, 0.04039998, 0.04039997, 0.04039998, 0.4950495], [1517196960000, 0.04039998, 0.04039999, 0.04039998, 0.04039998, 3.91385332], [1517197020000, 0.04039998, 0.04074662, 0.0401614, 0.0401614, 79.52749721], [1517197080000, 0.04018473, 0.04039993, 0.040145, 0.040145, 33.43630188], [1517197140000, 0.04011001, 0.0402, 0.04011001, 0.0402, 0.36974509], [1517197200000, 0.0402029, 0.04039993, 0.04020288, 0.04020288, 0.64038545], [1517197260000, 0.04020288, 0.04020288, 0.04020288, 0.04020288, 0.78986874], [1517197380000, 0.04020288, 0.04020288, 0.04020288, 0.04020288, 11.19863002], [1517197440000, 0.04039993, 0.04039993, 0.04020288, 0.04020288, 7.93953064], [1517197500000, 0.04031953, 0.04039993, 0.04031953, 0.04039993, 2.82350434], [1517197560000, 0.04044246, 0.04047499, 0.04020288, 0.040438, 20.20470949], [1517197620000, 0.04043799, 0.04043799, 0.04043799, 0.04043799, 0.66632423], [1517197680000, 0.04044859, 0.04044859, 0.04020288, 0.04020288, 2.50729677], [1517197740000, 0.04020288, 0.04020288, 0.04020288, 0.04020288, 0.24772041], [1517197800000, 0.04030142, 0.040447, 0.04030142, 0.040447, 0.3100078], [1517197920000, 0.040441, 0.040441, 0.04020289, 0.04020289, 2.72348127], [1517197980000, 0.04020289, 0.04044858, 0.04020289, 0.04044858, 0.15574827], [1517198040000, 0.04020288, 0.04020288, 0.04020288, 0.04020288, 0.173693], [1517198100000, 0.04020288, 0.040447, 0.04020288, 0.040447, 0.40188041], [1517198220000, 0.04043099, 0.04043099, 0.04043099, 0.04043099, 0.12335834], [1517198280000, 0.04043097, 0.04043097, 0.04043097, 0.04043097, 0.08254374], [1517198340000, 0.04020288, 0.040442, 0.04020288, 0.040442, 4.72117087], [1517198400000, 0.04020288, 0.04044859, 0.04020288, 0.04020288, 10.42112068], [1517198460000, 0.04020288, 0.04020288, 0.04020288, 0.04020288, 2.98353721], [1517198520000, 0.04014246, 0.04020288, 0.04014246, 0.04020288, 1.43555081], [1517198580000, 0.04014246, 0.04020288, 0.04014246, 0.04020288, 0.1964302], [1517198700000, 0.04020288, 0.04020288, 0.04014246, 0.04020288, 0.99495308], [1517198760000, 0.04020288, 0.04020288, 0.04020288, 0.04020288, 1.9], [1517198820000, 0.04020248, 0.04020288, 0.04014246, 0.04020288, 2.03822964], [1517198880000, 0.04020288, 0.04020288, 0.04020288, 0.04020288, 0.12009124], [1517198940000, 0.04020288, 0.04020288, 0.04020288, 0.04020288, 1.53027683], [1517199000000, 0.04014246, 0.04020288, 0.04014246, 0.04020288, 1.14621481], [1517199060000, 0.04014246, 0.04014246, 0.04014246, 0.04014246, 0.0594095], [1517199120000, 0.04020288, 0.04020288, 0.04012851, 0.04012851, 2.22750218], [1517199240000, 0.04012852, 0.04012852, 0.04012852, 0.04012852, 0.05769571], [1517199300000, 0.04012852, 0.04012852, 0.04012852, 0.04012852, 0.0920468], [1517199360000, 0.04012852, 0.04012852, 0.04012852, 0.04012852, 0.10037066], [1517199480000, 0.04012852, 0.04020288, 0.04012852, 0.04020288, 1.10725178], [1517199540000, 0.04012851, 0.04020288, 0.04012851, 0.04020288, 1.77245323], [1517199600000, 0.04010502, 0.04010502, 0.04010502, 0.04010502, 0.01592043], [1517199660000, 0.04010502, 0.04010502, 0.04010502, 0.04010502, 0.33262473], [1517199780000, 0.04010502, 0.04010502, 0.04010502, 0.04010502, 0.65489281], [1517199840000, 0.04015395, 0.04015395, 0.04015395, 0.04015395, 0.080476], [1517199900000, 0.04015395, 0.04020288, 0.04015395, 0.04020288, 0.37155456], [1517199960000, 0.04020288, 0.04020288, 0.04020288, 0.04020288, 0.01488699], [1517200020000, 0.04010502, 0.040109, 0.04010502, 0.040109, 0.47143142], [1517200080000, 0.040109, 0.040109, 0.04010502, 0.04010502, 0.36876162], [1517200140000, 0.04010502, 0.04010502, 0.04010502, 0.04010502, 0.04868837], [1517200200000, 0.040109, 0.04020288, 0.04010502, 0.04020288, 0.73792551], [1517200260000, 0.04010502, 0.04010502, 0.04010502, 0.04010502, 1.01266227], [1517200320000, 0.04010502, 0.04010502, 0.04010502, 0.04010502, 0.1218], [1517200380000, 0.04010502, 0.04010502, 0.04010502, 0.04010502, 0.03957374], [1517200440000, 0.04010502, 0.04010502, 0.04010502, 0.04010502, 0.21643239], [1517200500000, 0.04020288, 0.04020288, 0.04020288, 0.04020288, 0.49747654], [1517200560000, 0.04020288, 0.04020288, 0.04020288, 0.04020288, 1.0], [1517200620000, 0.04010502, 0.04010502, 0.04010501, 0.04010501, 2.57884532], [1517200680000, 0.04010502, 0.04010502, 0.04010502, 0.04010502, 0.2219969], [1517200740000, 0.04010502, 0.04010502, 0.04010501, 0.04010501, 0.07406204], [1517200800000, 0.04010502, 0.04010502, 0.04010502, 0.04010502, 0.32772945], [1517201100000, 0.04010502, 0.04010502, 0.04010501, 0.04010501, 0.77552671], [1517201160000, 0.04010501, 0.04010501, 0.04010501, 0.04010501, 1.9092625], [1517201220000, 0.04010501, 0.04010501, 0.04010501, 0.04010501, 0.06935149], [1517201280000, 0.04010501, 0.04010502, 0.04010501, 0.04010502, 0.35727174], [1517201340000, 0.04010502, 0.04010502, 0.04010501, 0.04010501, 0.24525072], [1517201460000, 0.04010501, 0.04010501, 0.04010501, 0.04010501, 0.1911], [1517201580000, 0.04010501, 0.04010501, 0.04010501, 0.04010501, 0.80254876], [1517201640000, 0.04010501, 0.04010501, 0.04010501, 0.04010501, 7.39903613], [1517201700000, 0.04010502, 0.04010502, 0.04010502, 0.04010502, 0.74803638], [1517201760000, 0.04010502, 0.04010502, 0.04010502, 0.04010502, 0.32], [1517201880000, 0.04010502, 0.040443, 0.04010502, 0.040443, 7.81456368], [1517201940000, 0.04042299, 0.04042299, 0.04042299, 0.04042299, 1.21550006], [1517202000000, 0.04040099, 0.04040099, 0.04040099, 0.04040099, 0.12417119], [1517202060000, 0.04020788, 0.04020788, 0.04020788, 0.04020788, 0.99482986], [1517202180000, 0.04027979, 0.0402952, 0.04020788, 0.0402952, 0.06816], [1517202240000, 0.0402952, 0.0402952, 0.04020788, 0.04020788, 2.99703886], [1517202300000, 0.04020788, 0.0402952, 0.04020788, 0.0402952, 0.27558851], [1517202420000, 0.04020788, 0.04020788, 0.04000205, 0.04000205, 76.61622309], [1517202480000, 0.04000206, 0.04029519, 0.04000206, 0.04029519, 1.36084849], [1517202600000, 0.04029517, 0.04029517, 0.04029517, 0.04029517, 0.0273606], [1517202660000, 0.04029517, 0.04029517, 0.04029517, 0.04029517, 0.05975709], [1517202780000, 0.04029515, 0.04029517, 0.04029515, 0.04029517, 3.91022879], [1517202840000, 0.04029517, 0.04029517, 0.04029517, 0.04029517, 5.86813164], [1517202900000, 0.04029517, 0.04047999, 0.04029517, 0.04029517, 1.17868204], [1517202960000, 0.04029517, 0.04044699, 0.04029517, 0.04029517, 1.42178906], [1517203020000, 0.04029517, 0.04029517, 0.04029517, 0.04029517, 0.0547212], [1517203080000, 0.04029517, 0.04047599, 0.04029517, 0.04029517, 0.22411943], [1517203140000, 0.04047598, 0.04047598, 0.04029517, 0.04029517, 4.9297989], [1517203200000, 0.04029517, 0.04046598, 0.04029517, 0.04029517, 0.57342505], [1517203260000, 0.04045, 0.04045, 0.04029517, 0.04044999, 1.66527939], [1517203320000, 0.04029517, 0.0404, 0.04029517, 0.0404, 0.30188661], [1517203380000, 0.04029517, 0.04039497, 0.04029517, 0.04039497, 0.09510255], [1517203440000, 0.04029517, 0.04029517, 0.04029517, 0.04029517, 0.0784606], [1517203500000, 0.04029517, 0.04039496, 0.04029517, 0.04039496, 0.27491599], [1517203560000, 0.04029517, 0.04029517, 0.04029517, 0.04029517, 0.29522073], [1517203620000, 0.04029517, 0.04039496, 0.04029517, 0.04039496, 0.10786482], [1517203680000, 0.04029518, 0.04053599, 0.04029518, 0.0402952, 0.24914624], [1517203740000, 0.0402952, 0.0402952, 0.0402952, 0.0402952, 0.26663116], [1517203800000, 0.0402952, 0.0402952, 0.0402952, 0.0402952, 0.43992116], [1517203860000, 0.0402952, 0.040466, 0.040107, 0.040466, 6.04615523], [1517203920000, 0.040032, 0.040032, 0.040032, 0.040032, 0.02861], [1517203980000, 0.04037597, 0.04037597, 0.04037597, 0.04037597, 0.02543002], [1517204040000, 0.040037, 0.040037, 0.040007, 0.040007, 7.35459149], [1517204100000, 0.0400122, 0.0400122, 0.0400122, 0.0400122, 0.44282344], [1517204220000, 0.04000216, 0.040007, 0.04000206, 0.040007, 6.47720649], [1517204280000, 0.04000206, 0.04000206, 0.04000206, 0.04000206, 0.2009], [1517204460000, 0.040296, 0.040296, 0.040296, 0.040296, 0.3676999], [1517204520000, 0.040291, 0.040291, 0.040291, 0.040291, 1.1], [1517204580000, 0.04031598, 0.04031599, 0.04029593, 0.04029593, 0.67500099], [1517204700000, 0.04029593, 0.04030597, 0.04029593, 0.04030595, 0.65734584], [1517204820000, 0.0401802, 0.0401802, 0.0401802, 0.0401802, 0.0494964], [1517204880000, 0.04015, 0.040185, 0.04015, 0.040185, 0.78966851], [1517204940000, 0.040296, 0.040296, 0.040296, 0.040296, 0.04304252], [1517205000000, 0.04030099, 0.04030099, 0.040296, 0.040296, 0.26047979], [1517205060000, 0.04029, 0.040301, 0.04029, 0.040301, 0.82468806], [1517205120000, 0.04001843, 0.040301, 0.040007, 0.040007, 4.11281597], [1517205180000, 0.040007, 0.040007, 0.040007, 0.040007, 0.02978355], [1517205240000, 0.040007, 0.040301, 0.04000206, 0.040007, 7.13724873], [1517205300000, 0.04004537, 0.04004537, 0.040007, 0.040007, 0.28231829], [1517205360000, 0.04001842, 0.04001842, 0.04001842, 0.04001842, 0.03350252], [1517205660000, 0.040301, 0.040301, 0.04001402, 0.04001402, 1.63312839], [1517205900000, 0.04005403, 0.04005403, 0.04005403, 0.04005403, 0.10016015], [1517205960000, 0.04005403, 0.04005403, 0.04001901, 0.04001901, 0.50276209], [1517206020000, 0.04001402, 0.04001403, 0.04001402, 0.04001402, 0.05558981], [1517206140000, 0.04001901, 0.04005403, 0.04001901, 0.04005403, 0.15706239], [1517206200000, 0.04005403, 0.04005403, 0.04005403, 0.04005403, 0.70160253], [1517206260000, 0.04005403, 0.04005403, 0.04005403, 0.04005403, 1.50334136], [1517206320000, 0.04005933, 0.04005933, 0.04005933, 0.04005933, 0.26515765], [1517206500000, 0.040301, 0.040316, 0.040301, 0.040316, 2.04970502], [1517206560000, 0.04012, 0.0404, 0.04012, 0.0404, 2.29776829], [1517206620000, 0.04045899, 0.04045899, 0.04045899, 0.04045899, 0.71069093], [1517206680000, 0.04019101, 0.04019101, 0.04019101, 0.04019101, 0.46884348], [1517206800000, 0.04045899, 0.04045899, 0.04019601, 0.04019601, 0.41386379], [1517206860000, 0.04019101, 0.04019101, 0.04019101, 0.04019101, 0.47], [1517206920000, 0.04045899, 0.04063497, 0.04045899, 0.04063497, 61.34514437], [1517206980000, 0.040523, 0.040523, 0.040523, 0.040523, 1.34609944], [1517207040000, 0.040523, 0.040523, 0.04021301, 0.04021301, 3.86149526], [1517207100000, 0.040521, 0.040521, 0.04020201, 0.04020201, 0.37796445], [1517207160000, 0.040516, 0.04062, 0.04021801, 0.04021801, 4.38297756], [1517207280000, 0.04021801, 0.04021801, 0.04021801, 0.04021801, 0.24926644], [1517207340000, 0.04021801, 0.040521, 0.04021801, 0.040521, 0.77148961], [1517207400000, 0.04054096, 0.04059599, 0.04054096, 0.04059599, 0.24681607], [1517207460000, 0.040591, 0.040591, 0.040591, 0.040591, 0.24681607], [1517207520000, 0.04021801, 0.04021801, 0.04005923, 0.04005923, 24.58088969], [1517207580000, 0.040452, 0.04046198, 0.04021801, 0.0404, 17.35250163], [1517207640000, 0.0404, 0.0405, 0.0404, 0.0404, 3.51768918], [1517207700000, 0.0404, 0.0404, 0.0404, 0.0404, 0.1643792], [1517207760000, 0.0404, 0.0405, 0.040179, 0.040179, 9.24152613], [1517207940000, 0.04047454, 0.04047454, 0.04047454, 0.04047454, 0.01346853], [1517208000000, 0.04047454, 0.04047454, 0.04037851, 0.04037851, 0.87417884], [1517208060000, 0.04037851, 0.04037851, 0.04037851, 0.04037851, 0.03219534], [1517208180000, 0.0403785, 0.0403785, 0.0403785, 0.0403785, 2.0], [1517208240000, 0.04033075, 0.0403785, 0.04033075, 0.0403785, 1.090125], [1517208300000, 0.0403785, 0.04037851, 0.0403785, 0.04037851, 0.49984893], [1517208420000, 0.0403785, 0.04037851, 0.0403785, 0.04037851, 0.85677756], [1517208480000, 0.04037851, 0.04037851, 0.04037851, 0.04037851, 1.80640553], [1517208600000, 0.04037851, 0.04047455, 0.04037851, 0.04047455, 0.24765654], [1517208660000, 0.04047454, 0.04047455, 0.0403785, 0.0403785, 3.03801226], [1517208840000, 0.040238, 0.040238, 0.040238, 0.040238, 0.05004629], [1517208900000, 0.04021603, 0.04021603, 0.04021603, 0.04021603, 8.5], [1517208960000, 0.04020102, 0.04020122, 0.04020102, 0.04020122, 0.12116156], [1517209080000, 0.04020132, 0.04020132, 0.04020122, 0.04020122, 0.34191359], [1517209140000, 0.04037079, 0.04037186, 0.04037079, 0.04037186, 1.14180694], [1517209200000, 0.04037699, 0.04037699, 0.04037699, 0.04037699, 0.32786352], [1517209260000, 0.04019121, 0.04019121, 0.04019121, 0.04019121, 0.0371426], [1517209380000, 0.04019121, 0.04037845, 0.04012901, 0.04012901, 0.06614092], [1517209440000, 0.04012406, 0.040129, 0.04012406, 0.040129, 0.14857075], [1517209560000, 0.040129, 0.04012965, 0.040129, 0.04012965, 0.31551325], [1517209680000, 0.04013421, 0.04054, 0.04013421, 0.04054, 28.34408495], [1517209740000, 0.04054, 0.0405402, 0.040104, 0.04014401, 33.19876905], [1517209800000, 0.04046798, 0.04046798, 0.04046399, 0.04046798, 0.98843528], [1517209980000, 0.040205, 0.040205, 0.04020001, 0.04020001, 12.63], [1517210040000, 0.0402, 0.04045077, 0.0402, 0.04020002, 1.19999999], [1517210100000, 0.04045299, 0.04045299, 0.04045299, 0.04045299, 0.24720045], [1517210160000, 0.0402, 0.0402, 0.0402, 0.0402, 10.0], [1517210220000, 0.04042899, 0.04042899, 0.0402, 0.0402, 0.77885725], [1517210400000, 0.0402, 0.04041897, 0.0402, 0.04041897, 0.74626863], [1517210520000, 0.04038359, 0.040384, 0.04038359, 0.040384, 0.2], [1517210640000, 0.04019277, 0.04019277, 0.04019277, 0.04019277, 0.4002583], [1517210700000, 0.04018881, 0.04018881, 0.04018277, 0.04018277, 0.38347527], [1517210760000, 0.04018277, 0.040384, 0.04018277, 0.040384, 1.31029488], [1517210820000, 0.04011417, 0.04042799, 0.04011417, 0.04042799, 0.5720235], [1517210940000, 0.04021425, 0.04041697, 0.04021425, 0.04041697, 12.23006589], [1517211000000, 0.04040999, 0.040423, 0.04040999, 0.04042299, 1.07391744], [1517211060000, 0.040421, 0.040426, 0.040421, 0.04042299, 1.38092679], [1517211120000, 0.04012146, 0.04012146, 0.04012146, 0.04012146, 0.05040289], [1517211240000, 0.04012157, 0.04012157, 0.04012157, 0.04012157, 0.20234], [1517211300000, 0.04012157, 0.0404, 0.04012145, 0.04012145, 1.01524961], [1517211420000, 0.04012665, 0.04012665, 0.04012665, 0.04012665, 0.02747551], [1517211480000, 0.04012665, 0.0404, 0.04012145, 0.04012665, 1.34513041], [1517211540000, 0.04012665, 0.0404, 0.040122, 0.040122, 0.79222532], [1517211600000, 0.04012665, 0.0404, 0.04012601, 0.04012601, 1.60995934], [1517211660000, 0.0404, 0.040416, 0.0404, 0.040416, 4.9361639], [1517211840000, 0.04015606, 0.04015606, 0.04015606, 0.04015606, 0.06205997], [1517211900000, 0.04012901, 0.04041598, 0.04011901, 0.04012901, 2.18758616], [1517211960000, 0.04012901, 0.04012901, 0.04012901, 0.04012901, 0.0274808], [1517212020000, 0.04012901, 0.040416, 0.040126, 0.040126, 0.25722354], [1517212080000, 0.040416, 0.040416, 0.040416, 0.040416, 0.37252116], [1517212200000, 0.04042395, 0.04042395, 0.04011416, 0.04011416, 19.9672305], [1517212260000, 0.04011416, 0.04025, 0.04011416, 0.04025, 0.13752136], [1517212320000, 0.04026, 0.04042399, 0.04026, 0.04026, 1.21898515], [1517212380000, 0.04026, 0.04026, 0.04026, 0.04026, 0.054769], [1517212500000, 0.04041398, 0.04041399, 0.04026, 0.04026, 0.2748235], [1517212560000, 0.04026, 0.04026, 0.04026, 0.04026, 0.02958], [1517212620000, 0.04026, 0.04041399, 0.04026, 0.04041399, 1.04240843], [1517212740000, 0.04041399, 0.04041399, 0.04026, 0.04026, 0.12190196], [1517212800000, 0.04026, 0.04026, 0.04025, 0.04025, 0.11611224], [1517212860000, 0.04026, 0.04026, 0.04026, 0.04026, 0.10218364], [1517213100000, 0.04026, 0.04041392, 0.04025, 0.04025, 1.23245414], [1517213160000, 0.04012804, 0.04012804, 0.04011416, 0.04011417, 2.75123517], [1517213220000, 0.040139, 0.040139, 0.040119, 0.040119, 0.67678944], [1517213340000, 0.040134, 0.040134, 0.040134, 0.040134, 0.5180604], [1517213400000, 0.040134, 0.04025001, 0.040134, 0.04025001, 2.59142461], [1517213460000, 0.04025001, 0.04025001, 0.040134, 0.040134, 0.75099332], [1517213520000, 0.04025001, 0.040405, 0.04014938, 0.04014938, 0.29634011], [1517213580000, 0.04014939, 0.04014939, 0.040134, 0.040134, 0.75789721], [1517213640000, 0.040134, 0.040134, 0.040134, 0.040134, 0.65916984], [1517213700000, 0.040134, 0.0401341, 0.04011416, 0.04011416, 2.8813845], [1517213760000, 0.04011416, 0.04036799, 0.040104, 0.040104, 3.41213353], [1517213820000, 0.040104, 0.040104, 0.040104, 0.040104, 0.22036833], [1517213880000, 0.040104, 0.040104, 0.040104, 0.040104, 0.23838204], [1517213940000, 0.040204, 0.040204, 0.040104, 0.040104, 1.50599023], [1517214000000, 0.040104, 0.04035925, 0.040104, 0.04021803, 0.30267416], [1517214060000, 0.040104, 0.040104, 0.040104, 0.040104, 0.15810213], [1517214120000, 0.040104, 0.04021803, 0.040104, 0.04021803, 0.38741341], [1517214180000, 0.040104, 0.040104, 0.040104, 0.040104, 0.05498204], [1517214240000, 0.040104, 0.040104, 0.04005922, 0.04005922, 0.2772723], [1517214300000, 0.04021803, 0.040329, 0.04005922, 0.04005922, 0.55233326], [1517214360000, 0.04005922, 0.04005922, 0.040009, 0.040009, 1.62551548], [1517214420000, 0.04000902, 0.0403186, 0.040009, 0.0403186, 0.09149651], [1517214480000, 0.04000701, 0.04000701, 0.04000701, 0.04000701, 0.0809313], [1517214540000, 0.04000701, 0.04000701, 0.04000701, 0.04000701, 0.30712739], [1517214600000, 0.04001001, 0.040198, 0.04001001, 0.040011, 0.58822621], [1517214660000, 0.04001501, 0.04001501, 0.040007, 0.040007, 0.874311], [1517214720000, 0.04001501, 0.04001501, 0.040007, 0.040007, 0.86300102], [1517214780000, 0.04001501, 0.04001501, 0.04000205, 0.04000205, 4.58319388], [1517214900000, 0.04030056, 0.04030056, 0.04030056, 0.04030056, 0.24813526], [1517214960000, 0.04030038, 0.04030039, 0.04000217, 0.04000217, 0.47615251], [1517215020000, 0.04000227, 0.04000227, 0.04000221, 0.04000221, 41.90973818], [1517215080000, 0.04000221, 0.040083, 0.04000221, 0.04000225, 15.39373018], [1517215140000, 0.04000225, 0.0400023, 0.04000225, 0.0400023, 48.18351491], [1517215200000, 0.04002202, 0.04002202, 0.04002202, 0.04002202, 0.06093252], [1517215260000, 0.04002202, 0.040042, 0.04002202, 0.040042, 0.46139827], [1517215320000, 0.040062, 0.04014426, 0.040062, 0.04014426, 0.16000365], [1517215500000, 0.04014426, 0.04014426, 0.04014425, 0.04014425, 0.11586027], [1517215560000, 0.04014425, 0.0401844, 0.040072, 0.040072, 0.15999363], [1517215620000, 0.04029579, 0.0402958, 0.04029579, 0.0402958, 2.06258453], [1517215680000, 0.0402958, 0.0402958, 0.0402958, 0.0402958, 0.02722989], [1517215800000, 0.04029555, 0.04029555, 0.04029555, 0.04029555, 2.69959463], [1517215860000, 0.04009201, 0.04009201, 0.04009201, 0.04009201, 0.10174905], [1517215920000, 0.04009201, 0.04009201, 0.040052, 0.040052, 1.28907918], [1517215980000, 0.04009201, 0.04009201, 0.040052, 0.04009201, 4.3049989], [1517216040000, 0.04009201, 0.04009201, 0.04009201, 0.04009201, 0.0549989], [1517216100000, 0.04009201, 0.04009201, 0.040092, 0.040092, 1.88856758], [1517216160000, 0.04007051, 0.04007051, 0.04007051, 0.04007051, 0.2], [1517216220000, 0.040081, 0.040081, 0.040081, 0.040081, 1.5], [1517216340000, 0.0403006, 0.0403006, 0.040081, 0.0403006, 1.54851411], [1517216400000, 0.0403, 0.0403006, 0.040052, 0.04005201, 2.87783901], [1517216580000, 0.04006, 0.04006, 0.04006, 0.04006, 0.5376463], [1517216640000, 0.04006, 0.04006, 0.04006, 0.04006, 0.95648446], [1517216700000, 0.04006, 0.04006, 0.04006, 0.04006, 0.25655166], [1517216760000, 0.04006, 0.04006, 0.04006, 0.04006, 1.71419886], [1517216820000, 0.04011674, 0.04011674, 0.04006, 0.04006, 0.55159327], [1517216880000, 0.04006, 0.04006, 0.04006, 0.04006, 2.70022299], [1517216940000, 0.0400521, 0.04006, 0.0400521, 0.04006, 4.0879097], [1517217000000, 0.0400521, 0.0400521, 0.0400521, 0.0400521, 0.24967495], [1517217060000, 0.0400521, 0.0400521, 0.0400521, 0.0400521, 0.0550537], [1517217120000, 0.040052, 0.04006, 0.040052, 0.04006, 1.09175012], [1517217180000, 0.04006, 0.04006, 0.04006, 0.04006, 0.2227582], [1517217240000, 0.04006, 0.04006, 0.04006, 0.04006, 3.0590919], [1517217300000, 0.04006, 0.04027795, 0.040052, 0.040052, 1.25946569], [1517217360000, 0.040052, 0.04027794, 0.040052, 0.04027794, 4.73630455], [1517217420000, 0.04027795, 0.04027795, 0.04027794, 0.04027794, 1.04765417], [1517217480000, 0.04027794, 0.04027794, 0.04027794, 0.04027794, 0.10158683], [1517217540000, 0.04027794, 0.04027794, 0.04027794, 0.04027794, 0.4035818], [1517217600000, 0.04027794, 0.04027795, 0.04027794, 0.04027795, 0.52425671], [1517217660000, 0.04027795, 0.04027795, 0.04027795, 0.04027795, 0.07429623], [1517217720000, 0.04027795, 0.04027795, 0.04027795, 0.04027795, 0.61026051], [1517217780000, 0.040052, 0.040052, 0.040052, 0.040052, 1.16658391], [1517217840000, 0.040052, 0.040052, 0.040052, 0.040052, 5.89623908], [1517217900000, 0.040052, 0.04027795, 0.04004701, 0.04004701, 25.66228723], [1517217960000, 0.04004702, 0.04004702, 0.04004702, 0.04004702, 0.07804064], [1517218020000, 0.04004701, 0.04004701, 0.04004701, 0.04004701, 0.07906602], [1517218140000, 0.04004701, 0.04004701, 0.04004701, 0.04004701, 0.60236488], [1517218200000, 0.04004701, 0.04027795, 0.04004701, 0.04027795, 2.2432751], [1517218260000, 0.04027795, 0.04033799, 0.04027795, 0.040328, 9.91224725], [1517218320000, 0.04030305, 0.04030305, 0.04028223, 0.04030305, 1.27485513], [1517218380000, 0.04027795, 0.04027795, 0.04027795, 0.04027795, 0.0547446], [1517218440000, 0.04027795, 0.04027795, 0.04027795, 0.04027795, 0.42689978], [1517218500000, 0.04027795, 0.04030305, 0.04027795, 0.04027795, 0.84389299], [1517218560000, 0.04027795, 0.04030305, 0.04027795, 0.04030305, 0.58750023], [1517218620000, 0.04027795, 0.04027795, 0.04027795, 0.04027795, 0.1193628], [1517218680000, 0.04027795, 0.04027795, 0.04014593, 0.04014593, 1.57974582], [1517218740000, 0.04027794, 0.04030304, 0.04027794, 0.04030304, 8.16892638], [1517218800000, 0.04030303, 0.04030303, 0.04004701, 0.04004701, 0.94029989], [1517218860000, 0.04004701, 0.04030303, 0.04004701, 0.04030303, 0.66713418], [1517218920000, 0.04004701, 0.04030305, 0.04004701, 0.040048, 4.07799927], [1517218980000, 0.04017501, 0.04030304, 0.04002504, 0.04029799, 1.78776771], [1517219040000, 0.04001122, 0.04027297, 0.039937, 0.03994001, 9.73174145], [1517219100000, 0.03994002, 0.03994002, 0.03994002, 0.03994002, 0.15204468], [1517219220000, 0.04020299, 0.04020299, 0.04020299, 0.04020299, 0.02736114], [1517219280000, 0.03994001, 0.03995, 0.03994001, 0.03995, 0.14447529], [1517219340000, 0.03995, 0.03995, 0.03995, 0.03995, 0.39803851], [1517219400000, 0.04, 0.040226, 0.04, 0.040226, 1.24853365], [1517219520000, 0.04019593, 0.040207, 0.03994501, 0.03994501, 3.36575848], [1517219580000, 0.03996, 0.04019199, 0.03994501, 0.03994501, 2.04990387], [1517219640000, 0.03994501, 0.04015696, 0.03994501, 0.03994502, 0.20215758], [1517219700000, 0.03994502, 0.03994502, 0.03994501, 0.03994501, 0.1191651], [1517219760000, 0.03994501, 0.03994502, 0.03994501, 0.03994502, 0.75520088], [1517219820000, 0.03994502, 0.03994502, 0.03994502, 0.03994502, 0.79950063], [1517219880000, 0.03994502, 0.03994502, 0.03994502, 0.03994502, 0.05520088], [1517219940000, 0.03994502, 0.03994502, 0.03994502, 0.03994502, 0.44885405], [1517220000000, 0.03994502, 0.03994502, 0.03994001, 0.03994001, 2.73995306], [1517220060000, 0.03994502, 0.03994502, 0.03994001, 0.03994502, 1.34091998], [1517220120000, 0.04016697, 0.04016697, 0.04016697, 0.04016697, 0.0124194], [1517220180000, 0.03994503, 0.03994503, 0.03994502, 0.03994502, 2.01100153], [1517220240000, 0.03994502, 0.03994502, 0.03994502, 0.03994502, 0.03517471], [1517220300000, 0.03994502, 0.04016697, 0.03994027, 0.04016697, 1.03735868], [1517220420000, 0.04016697, 0.04016697, 0.03994002, 0.03996614, 0.32235829], [1517220540000, 0.04, 0.04011111, 0.04, 0.04011111, 0.173094], [1517220600000, 0.04011111, 0.04011111, 0.04011111, 0.04011111, 0.24930754], [1517220660000, 0.04, 0.04, 0.03994001, 0.03994001, 2.0849], [1517220720000, 0.04011111, 0.04011111, 0.03994001, 0.03994001, 1.00440521], [1517220780000, 0.04002655, 0.04011111, 0.04002655, 0.04011111, 0.11904526], [1517220900000, 0.039942, 0.04011109, 0.03994001, 0.03994001, 0.82503688], [1517220960000, 0.03994001, 0.03994001, 0.03994001, 0.03994001, 0.33179158], [1517221020000, 0.03994001, 0.03994001, 0.03994001, 0.03994001, 2.00888911], [1517221080000, 0.03994001, 0.04011111, 0.03992562, 0.03992562, 6.76110904], [1517221140000, 0.04011111, 0.04011111, 0.04011111, 0.04011111, 0.34937073], [1517221200000, 0.04011111, 0.04011111, 0.03997668, 0.03997668, 0.44442495], [1517221260000, 0.04011111, 0.04011111, 0.04011111, 0.04011111, 0.36598711], [1517221320000, 0.04011111, 0.04011112, 0.03997668, 0.03997668, 9.49188668], [1517221380000, 0.03997668, 0.03997668, 0.03997668, 0.03997668, 0.11014463], [1517221440000, 0.03997667, 0.03997668, 0.0399, 0.03991899, 35.3635184], [1517221500000, 0.03990001, 0.03997668, 0.03990001, 0.03997668, 4.69733252], [1517221560000, 0.03990002, 0.03990002, 0.03975511, 0.03975511, 14.1098896], [1517221620000, 0.03997668, 0.03997668, 0.03997668, 0.03997668, 0.3759255], [1517221680000, 0.03997668, 0.03997668, 0.03982156, 0.03982156, 0.84003904], [1517221800000, 0.03997667, 0.03997667, 0.0399, 0.03997667, 0.51152761], [1517221860000, 0.0399, 0.0399, 0.03983504, 0.0399, 29.3843062], [1517221920000, 0.03997667, 0.03997667, 0.03997667, 0.03997667, 0.27387863], [1517221980000, 0.03997667, 0.03997667, 0.03997667, 0.03997667, 1.34200768], [1517222040000, 0.0399, 0.03997667, 0.0399, 0.03997667, 0.36200087], [1517222100000, 0.03997667, 0.03997667, 0.0399, 0.03997667, 0.10528863], [1517222160000, 0.0399, 0.0399, 0.0399, 0.0399, 2.97509697], [1517222220000, 0.03997667, 0.03997667, 0.03997, 0.03997, 1.08525241], [1517222280000, 0.03997, 0.03997, 0.03997, 0.03997, 0.31474359], [1517222340000, 0.03990001, 0.03997667, 0.03990001, 0.03997667, 0.44919481], [1517222400000, 0.03990001, 0.03997667, 0.03990001, 0.03997667, 0.12878125], [1517222460000, 0.03997667, 0.03997668, 0.03997667, 0.03997668, 11.780782], [1517222580000, 0.03997668, 0.03997668, 0.03990001, 0.03990001, 0.13953163], [1517222640000, 0.03997668, 0.03997668, 0.03997668, 0.03997668, 6.70326921], [1517222700000, 0.039966, 0.039966, 0.03990001, 0.03990001, 0.75216512], [1517222760000, 0.03990001, 0.03990001, 0.03990001, 0.03990001, 0.32672613], [1517222820000, 0.03992, 0.03997668, 0.03990001, 0.03997668, 6.7839377], [1517222940000, 0.03997668, 0.040118, 0.03997668, 0.040118, 53.84985063], [1517223000000, 0.03997668, 0.04020197, 0.03997668, 0.04020197, 0.26520534], [1517223120000, 0.04020197, 0.04020197, 0.04020197, 0.04020197, 0.43229432], [1517223240000, 0.04020197, 0.04020197, 0.04020197, 0.04020197, 0.49433072], [1517223300000, 0.04020197, 0.04020197, 0.04020197, 0.04020197, 0.13283818], [1517223360000, 0.04000096, 0.04000096, 0.03999201, 0.04000096, 2.22733155], [1517223420000, 0.03999201, 0.03999201, 0.03999201, 0.03999201, 1.00245743], [1517223540000, 0.04020197, 0.04020197, 0.04020197, 0.04020197, 0.0939765], [1517223600000, 0.04020197, 0.04030305, 0.04020197, 0.04030305, 0.55100606], [1517223660000, 0.04030305, 0.04030305, 0.04020197, 0.04030303, 2.11044149], [1517223720000, 0.04030303, 0.04030303, 0.04030302, 0.04030302, 1.07695542], [1517223780000, 0.04030302, 0.04030302, 0.04030302, 0.04030302, 0.01828073], [1517223840000, 0.04030302, 0.04030302, 0.04030302, 0.04030302, 0.18632165], [1517223900000, 0.04030302, 0.04030303, 0.0402, 0.0402, 1.47282419], [1517223960000, 0.04029656, 0.04030303, 0.04029656, 0.04030303, 0.29220452], [1517224020000, 0.04002302, 0.04004, 0.04002302, 0.04004, 1.5419516], [1517224080000, 0.04030249, 0.04030249, 0.04030249, 0.04030249, 0.6644286], [1517224200000, 0.04030249, 0.0403025, 0.040302, 0.040302, 0.94688421], [1517224320000, 0.040302, 0.040302, 0.040302, 0.040302, 2.6162597], [1517224440000, 0.040302, 0.040302, 0.040302, 0.040302, 0.1063099], [1517224500000, 0.040302, 0.04030201, 0.040302, 0.04030201, 0.49625328], [1517224560000, 0.04020154, 0.04020154, 0.04020154, 0.04020154, 0.20152137], [1517224620000, 0.04020154, 0.04020154, 0.04020154, 0.04020154, 1.92793536], [1517224680000, 0.04020154, 0.04020154, 0.04020154, 0.04020154, 1.3328], [1517224740000, 0.04020154, 0.04020154, 0.04020154, 0.04020154, 0.1653], [1517224800000, 0.04020154, 0.04030195, 0.04020154, 0.04030195, 0.26257821], [1517224860000, 0.04030192, 0.04030193, 0.04020154, 0.04020154, 4.32414698], [1517224920000, 0.04020154, 0.04020154, 0.04020154, 0.04020154, 1.0], [1517224980000, 0.04020154, 0.04020154, 0.04010654, 0.04010654, 5.93765429], [1517225040000, 0.04020154, 0.04020154, 0.04020154, 0.04020154, 0.8795502], [1517225100000, 0.04020154, 0.04020155, 0.04020154, 0.04020154, 1.92180232], [1517225220000, 0.04020155, 0.04020155, 0.04020155, 0.04020155, 0.10423544], [1517225280000, 0.040221, 0.040221, 0.04010001, 0.04010001, 0.71848583], [1517225340000, 0.04030196, 0.04030302, 0.04030196, 0.04030302, 0.82245072], [1517225400000, 0.04030302, 0.04030302, 0.04030302, 0.04030302, 0.24812048], [1517225460000, 0.04010001, 0.04026846, 0.04010001, 0.04026846, 2.00255863], [1517225520000, 0.04015, 0.04015, 0.04015, 0.04015, 0.9088212], [1517225580000, 0.04009801, 0.04015812, 0.04006503, 0.04006503, 3.09283725], [1517225640000, 0.04006503, 0.04006503, 0.04006503, 0.04006503, 0.23363752], [1517225700000, 0.04030301, 0.04030301, 0.04008801, 0.04008801, 1.34982514], [1517225760000, 0.04008801, 0.04008801, 0.04008801, 0.04008801, 0.2662], [1517225820000, 0.040303, 0.04030305, 0.040303, 0.04030305, 6.55677785], [1517225940000, 0.04020305, 0.0403205, 0.04020305, 0.0403205, 5.69028678], [1517226000000, 0.04011406, 0.040115, 0.04011406, 0.040115, 0.57687], [1517226060000, 0.040155, 0.040155, 0.040085, 0.04009001, 8.30048432], [1517226120000, 0.040115, 0.040115, 0.040115, 0.040115, 0.0394], [1517226240000, 0.04008001, 0.04008001, 0.04008001, 0.04008001, 0.17575997], [1517226300000, 0.04035799, 0.04036499, 0.04006504, 0.04006504, 0.96867182], [1517226480000, 0.04011501, 0.040135, 0.04011501, 0.040135, 0.6763884], [1517226600000, 0.04035599, 0.04035599, 0.04035599, 0.04035599, 0.99673016], [1517226660000, 0.04036, 0.04036, 0.04036, 0.04036, 1.54400233], [1517226720000, 0.04036, 0.040362, 0.04036, 0.040362, 6.21938532], [1517226780000, 0.040362, 0.040362, 0.040125, 0.040125, 3.24201383], [1517226840000, 0.040125, 0.040409, 0.040125, 0.04014, 5.16704939], [1517226900000, 0.04014003, 0.04042896, 0.04012701, 0.04014201, 5.79374381], [1517226960000, 0.04042896, 0.04042896, 0.04018201, 0.04018201, 0.44031265], [1517227080000, 0.04018201, 0.04018201, 0.04018201, 0.04018201, 0.59541987], [1517227140000, 0.04018201, 0.040428, 0.04015501, 0.040428, 14.04771887], [1517227200000, 0.04022301, 0.04022301, 0.04022301, 0.04022301, 0.54793183], [1517227380000, 0.04022301, 0.04022301, 0.040223, 0.04022301, 0.30736798], [1517227440000, 0.04042301, 0.04042301, 0.04042301, 0.04042301, 0.69487016], [1517227500000, 0.040422, 0.040422, 0.04023302, 0.04023302, 0.54255549], [1517227560000, 0.04023302, 0.04023302, 0.04022301, 0.04022301, 1.02558805], [1517227620000, 0.040422, 0.04042896, 0.040422, 0.04042896, 21.96428006], [1517227800000, 0.04042199, 0.04042199, 0.04023009, 0.04023009, 14.31741497], [1517227860000, 0.04023008, 0.04023009, 0.04022301, 0.04023009, 20.98210449], [1517227920000, 0.04023009, 0.04023009, 0.04023009, 0.04023009, 0.05481954], [1517227980000, 0.04023009, 0.04023009, 0.04011503, 0.04011503, 0.31040203], [1517228040000, 0.04023008, 0.04023008, 0.04006509, 0.04023008, 4.52678114], [1517228100000, 0.04006528, 0.0402, 0.04006504, 0.0402, 2.49020194], [1517228160000, 0.0400653, 0.04023008, 0.04005441, 0.04005442, 8.59649767], [1517228220000, 0.04005442, 0.04023008, 0.04005442, 0.04023008, 0.14912855], [1517228280000, 0.04005443, 0.04023008, 0.04005443, 0.04023008, 0.24287295], [1517228340000, 0.04023008, 0.04023008, 0.04023008, 0.04023008, 0.06148109], [1517228400000, 0.04023008, 0.04023008, 0.04005501, 0.04023008, 1.60186835], [1517228520000, 0.04023008, 0.04023008, 0.040055, 0.040055, 0.22419567], [1517228580000, 0.040055, 0.040055, 0.040055, 0.040055, 0.02010044], [1517228640000, 0.04023007, 0.04023007, 0.04023007, 0.04023007, 1.22243344], [1517228700000, 0.04023007, 0.04023007, 0.04023007, 0.04023007, 0.5348452], [1517228760000, 0.040099, 0.040099, 0.040099, 0.040099, 0.84060729], [1517228820000, 0.040099, 0.040099, 0.040099, 0.040099, 0.34630842], [1517228880000, 0.04005002, 0.04023007, 0.04005002, 0.04023007, 0.3510789], [1517228940000, 0.04023007, 0.04023007, 0.04023007, 0.04023007, 0.08585486], [1517229000000, 0.04023007, 0.04023008, 0.04023007, 0.04023008, 0.41790338], [1517229060000, 0.04023008, 0.04023008, 0.04023008, 0.04023008, 1.18277864], [1517229120000, 0.04023008, 0.04023008, 0.04023008, 0.04023008, 0.5], [1517229180000, 0.04023008, 0.04023008, 0.04023008, 0.04023008, 2.47948799], [1517229240000, 0.04023007, 0.04023007, 0.039999, 0.039999, 0.72601384], [1517229300000, 0.03999899, 0.04023008, 0.03999899, 0.04023008, 0.15409629], [1517229360000, 0.04004, 0.04004, 0.04004, 0.04004, 0.05506994], [1517229420000, 0.04004, 0.04004, 0.04004, 0.04004, 0.05323178], [1517229480000, 0.04004, 0.04015999, 0.04004, 0.04004, 0.10919507], [1517229540000, 0.04004, 0.04016415, 0.04004, 0.04016415, 0.11806994], [1517229600000, 0.04004, 0.04016415, 0.04004, 0.04016415, 0.27651291], [1517229660000, 0.04004, 0.04004, 0.04004, 0.04004, 0.05506994], [1517229720000, 0.04004, 0.04004, 0.04004, 0.04004, 0.7279533], [1517229780000, 0.04004, 0.04016415, 0.04004, 0.04004, 0.25906566], [1517229840000, 0.04004, 0.04016415, 0.04004, 0.04016415, 0.49432482], [1517229900000, 0.04004, 0.04004, 0.04004, 0.04004, 0.32372266], [1517229960000, 0.04004, 0.040164, 0.04004, 0.04004, 0.15509707], [1517230020000, 0.040164, 0.04023008, 0.04000007, 0.04000007, 14.26485716], [1517230080000, 0.04023008, 0.04023008, 0.04023008, 0.04023008, 0.01239744], [1517230140000, 0.04000007, 0.04000007, 0.04000007, 0.04000007, 0.46097347], [1517230260000, 0.04022499, 0.04022499, 0.04000006, 0.04000007, 2.90794899], [1517230320000, 0.04000007, 0.04005739, 0.04, 0.04, 10.33165773], [1517230380000, 0.03999899, 0.04005739, 0.03997668, 0.03997669, 2.871764], [1517230440000, 0.04005735, 0.04005737, 0.0399, 0.0399, 6.52002247], [1517230500000, 0.03990001, 0.04005738, 0.03990001, 0.04005738, 0.51085521], [1517230560000, 0.03990001, 0.03990001, 0.03990001, 0.03990001, 0.11618203], [1517230620000, 0.03990005, 0.04005738, 0.03990005, 0.03990006, 1.77990325], [1517230680000, 0.03990006, 0.03990006, 0.03990006, 0.03990006, 0.15526308], [1517230740000, 0.03990006, 0.04005725, 0.0399, 0.03990003, 4.49366076], [1517230800000, 0.03990005, 0.04005738, 0.03990005, 0.04005738, 0.09970731], [1517230860000, 0.04005737, 0.04005737, 0.04005736, 0.04005736, 0.76376435], [1517230920000, 0.04005735, 0.04005735, 0.04005735, 0.04005735, 0.33214827], [1517230980000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 0.09575913], [1517231040000, 0.04005736, 0.04005736, 0.03990001, 0.03990001, 0.64235176], [1517231100000, 0.03990001, 0.04005736, 0.0399, 0.0399, 0.35183886], [1517231160000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 0.07427769], [1517231220000, 0.03990004, 0.03990004, 0.03990004, 0.03990004, 0.03497382], [1517231280000, 0.03990002, 0.04, 0.0399, 0.04, 2.24909772], [1517231340000, 0.03990001, 0.03990001, 0.03983499, 0.03983499, 4.32028768], [1517231400000, 0.04, 0.04, 0.04, 0.04, 0.07351739], [1517231460000, 0.039835, 0.04, 0.03983499, 0.04, 0.35767667], [1517231520000, 0.03983499, 0.03999999, 0.03983499, 0.039835, 0.61484353], [1517231580000, 0.039835, 0.03983501, 0.039835, 0.03983501, 0.76258933], [1517231640000, 0.03983501, 0.04, 0.03983501, 0.03983501, 0.31312594], [1517231700000, 0.03983502, 0.03983502, 0.03983499, 0.03983502, 0.56043448], [1517231760000, 0.039835, 0.03983502, 0.039835, 0.039835, 0.97049439], [1517231820000, 0.03983502, 0.04, 0.039835, 0.04, 0.541367], [1517231880000, 0.04, 0.04, 0.039835, 0.039835, 0.87953199], [1517231940000, 0.03999999, 0.03999999, 0.039835, 0.03983501, 0.12585391], [1517232000000, 0.039835, 0.0399, 0.0398343, 0.0399, 2.05850371], [1517232060000, 0.0399, 0.0399, 0.03981614, 0.0399, 2.37326024], [1517232120000, 0.03999999, 0.03999999, 0.0399, 0.03999999, 1.44676689], [1517232180000, 0.0399, 0.03990001, 0.0399, 0.0399, 1.09722682], [1517232240000, 0.0399, 0.03999999, 0.0399, 0.039904, 0.51117618], [1517232300000, 0.03999999, 0.04, 0.03999999, 0.04, 14.43871555], [1517232360000, 0.04, 0.04, 0.04, 0.04, 1.45276547], [1517232420000, 0.03990001, 0.04, 0.0399, 0.0399, 0.49177528], [1517232480000, 0.0399, 0.04, 0.0399, 0.04, 0.16019981], [1517232540000, 0.03990001, 0.04, 0.03981615, 0.04, 3.01389447], [1517232600000, 0.04, 0.04, 0.04, 0.04, 0.01656418], [1517232660000, 0.03981618, 0.03981618, 0.03981618, 0.03981618, 0.0257822], [1517232720000, 0.03981617, 0.039856, 0.03981617, 0.03981618, 0.6661191], [1517232780000, 0.039856, 0.039856, 0.03981619, 0.039856, 0.12537958], [1517232840000, 0.039856, 0.039856, 0.0398162, 0.039856, 1.67433844], [1517232900000, 0.039856, 0.039856, 0.039856, 0.039856, 0.16484317], [1517233020000, 0.0399999, 0.0399999, 0.0399999, 0.0399999, 0.13893378], [1517233080000, 0.03985675, 0.03985675, 0.03985601, 0.03985601, 0.2], [1517233200000, 0.03999, 0.0399999, 0.03999, 0.0399999, 0.82605046], [1517233260000, 0.03985602, 0.03985602, 0.03985601, 0.03985601, 0.127265], [1517233320000, 0.0399999, 0.0399999, 0.0399999, 0.0399999, 0.09607284], [1517233380000, 0.0399999, 0.0399999, 0.03985602, 0.0399999, 1.46125687], [1517233440000, 0.03985601, 0.0399999, 0.03985601, 0.0399999, 2.03310789], [1517233500000, 0.03999989, 0.0399999, 0.03985601, 0.0399999, 1.18861517], [1517233560000, 0.03985601, 0.03985601, 0.03985601, 0.03985601, 2.48926271], [1517233620000, 0.03999989, 0.03999989, 0.03995601, 0.03995601, 0.08515055], [1517233680000, 0.03995601, 0.03995601, 0.03995601, 0.03995601, 0.05532426], [1517233740000, 0.03995601, 0.0399999, 0.03995601, 0.0399999, 1.74290897], [1517233800000, 0.0399999, 0.0399999, 0.03995603, 0.0399999, 1.94808599], [1517233920000, 0.03987601, 0.03987601, 0.03987601, 0.03987601, 0.02312754], [1517233980000, 0.03987601, 0.03987601, 0.03987601, 0.03987601, 0.04856459], [1517234040000, 0.03987601, 0.03987601, 0.03987601, 0.03987601, 0.60196632], [1517234100000, 0.0399999, 0.04, 0.0399999, 0.04, 3.09557001], [1517234160000, 0.03987602, 0.04, 0.039876, 0.04, 0.90293377], [1517234220000, 0.04, 0.04, 0.04, 0.04, 0.08], [1517234280000, 0.03988, 0.03988, 0.03988, 0.03988, 0.05556216], [1517234400000, 0.0399924, 0.0399928, 0.03985601, 0.03988001, 1.74002574], [1517234460000, 0.03988001, 0.03991989, 0.03987999, 0.03987999, 0.6943648], [1517234520000, 0.0399928, 0.0399928, 0.0399928, 0.0399928, 1.05754512], [1517234580000, 0.04, 0.04, 0.0399928, 0.04, 4.25703631], [1517234640000, 0.03999998, 0.03999998, 0.03985601, 0.03985601, 0.1860903], [1517234820000, 0.03999998, 0.04, 0.03999998, 0.04, 0.15880121], [1517235000000, 0.039928, 0.039928, 0.039928, 0.039928, 0.0277772], [1517235060000, 0.039928, 0.04, 0.039928, 0.04, 0.029325], [1517235120000, 0.04, 0.04, 0.04, 0.04, 0.05497531], [1517235180000, 0.04, 0.04, 0.039928, 0.039928, 8.93361401], [1517235300000, 0.03985602, 0.03985602, 0.03985601, 0.03985602, 1.99707995], [1517235360000, 0.03985602, 0.03985602, 0.03985601, 0.03985601, 2.50629463], [1517235420000, 0.03985602, 0.04, 0.03985602, 0.04, 1.24408573], [1517235480000, 0.0399, 0.039996, 0.0399, 0.0399, 5.6957466], [1517235600000, 0.03990001, 0.04, 0.03990001, 0.04, 1.06102349], [1517235720000, 0.03990001, 0.03990001, 0.03990001, 0.03990001, 0.13498898], [1517235780000, 0.03990002, 0.03990002, 0.03990001, 0.03990001, 1.12315233], [1517235900000, 0.03999, 0.03999001, 0.03999, 0.03999001, 0.50012502], [1517235960000, 0.03999001, 0.03999001, 0.03999001, 0.03999001, 0.79330498], [1517236200000, 0.03999001, 0.03999001, 0.03999001, 0.03999001, 1.50012502], [1517236260000, 0.03999001, 0.03999001, 0.03999001, 0.03999001, 0.19722384], [1517236320000, 0.03990003, 0.03999001, 0.03990002, 0.03990002, 0.50412165], [1517236380000, 0.03990001, 0.03999001, 0.03990001, 0.03990001, 25.58007294], [1517236440000, 0.0399, 0.03990001, 0.0399, 0.03990001, 1.61828493], [1517236500000, 0.03990001, 0.03990001, 0.0399, 0.0399, 0.05526336], [1517236560000, 0.0399, 0.03990001, 0.0399, 0.03990001, 0.36841874], [1517236620000, 0.03990001, 0.03990001, 0.0399, 0.0399, 0.28136814], [1517236680000, 0.03990001, 0.03990001, 0.03990001, 0.03990001, 0.26691262], [1517236740000, 0.0399, 0.0399, 0.0399, 0.0399, 0.05047914], [1517236800000, 0.0399, 0.03990001, 0.0399, 0.0399, 8.15251303], [1517236860000, 0.03991, 0.03991, 0.03991, 0.03991, 0.21907063], [1517236920000, 0.03991, 0.03991, 0.03991, 0.03991, 0.05524932], [1517236980000, 0.03999001, 0.03999001, 0.03999001, 0.03999001, 0.1528404], [1517237040000, 0.03999001, 0.03999001, 0.0399, 0.03999001, 1.11405819], [1517237100000, 0.0399, 0.03999001, 0.03985601, 0.03985601, 0.55413775], [1517237160000, 0.03999001, 0.03999001, 0.03985601, 0.03985601, 0.07255329], [1517237220000, 0.03985602, 0.03999001, 0.03985601, 0.03999001, 1.32237073], [1517237280000, 0.03985601, 0.03999001, 0.039831, 0.03999001, 0.29769757], [1517237340000, 0.03999001, 0.04, 0.03999001, 0.03999999, 0.22064486], [1517237400000, 0.03999997, 0.03999998, 0.03982577, 0.03982577, 1.25], [1517237520000, 0.0398998, 0.0398998, 0.0398998, 0.0398998, 0.02768312], [1517237580000, 0.0398998, 0.0398998, 0.0398998, 0.0398998, 0.02235666], [1517237640000, 0.03982578, 0.03982578, 0.03982578, 0.03982578, 0.02996254], [1517237700000, 0.03999998, 0.03999999, 0.03999998, 0.03999999, 0.695888], [1517237760000, 0.03999999, 0.03999999, 0.03999998, 0.03999998, 0.92522946], [1517237940000, 0.03999998, 0.03999998, 0.03999998, 0.03999998, 2.2816109], [1517238000000, 0.03983002, 0.03999998, 0.03982577, 0.03999998, 1.65115465], [1517238060000, 0.03982577, 0.03999998, 0.03982577, 0.03982578, 12.70120591], [1517238120000, 0.03999998, 0.03999998, 0.03982577, 0.03982577, 0.58830094], [1517238180000, 0.03982578, 0.0399855, 0.03976544, 0.03976572, 8.31311836], [1517238240000, 0.03976578, 0.03976583, 0.03976578, 0.03976583, 2.32554754], [1517238360000, 0.03976583, 0.03976583, 0.03976583, 0.03976583, 0.2105948], [1517238420000, 0.0399855, 0.0399855, 0.0399855, 0.0399855, 1.36420495], [1517238480000, 0.03976577, 0.03976577, 0.03976577, 0.03976577, 0.01605418], [1517238600000, 0.0399855, 0.0399855, 0.0399855, 0.0399855, 1.61052201], [1517238660000, 0.0399855, 0.0399855, 0.0399855, 0.0399855, 0.278689], [1517238780000, 0.0399855, 0.0399855, 0.0399855, 0.0399855, 0.4139248], [1517238840000, 0.03982556, 0.03982556, 0.03982556, 0.03982556, 0.3085944], [1517238900000, 0.03982556, 0.03982556, 0.03982556, 0.03982556, 0.04113724], [1517238960000, 0.0399, 0.0399, 0.03980977, 0.0399, 0.07575516], [1517239020000, 0.0399, 0.0399855, 0.0399, 0.0399855, 3.12473132], [1517239080000, 0.0399, 0.0399, 0.0399, 0.0399, 0.05526316], [1517239140000, 0.03990001, 0.03990001, 0.03990001, 0.03990001, 0.05526315], [1517239200000, 0.03990001, 0.04, 0.03990001, 0.03990001, 1.38087371], [1517239260000, 0.03990001, 0.03990001, 0.03990001, 0.03990001, 0.38487765], [1517239320000, 0.03990001, 0.03990001, 0.03990001, 0.03990001, 0.02763157], [1517239380000, 0.03990002, 0.04, 0.03990001, 0.04, 0.22434952], [1517239500000, 0.03990001, 0.03999998, 0.03990001, 0.03999998, 4.17], [1517239620000, 0.03999998, 0.04, 0.03999998, 0.04, 1.0], [1517239800000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 0.53591075], [1517239860000, 0.03990003, 0.03990003, 0.03990002, 0.03990002, 0.10083105], [1517239920000, 0.03990002, 0.03999999, 0.03990002, 0.03999999, 0.30127595], [1517239980000, 0.04, 0.04, 0.03999999, 0.03999999, 0.37654331], [1517240040000, 0.03990002, 0.03999999, 0.03990002, 0.03999999, 0.97220023], [1517240100000, 0.03999998, 0.03999998, 0.03999998, 0.03999998, 0.25], [1517240160000, 0.03999995, 0.03999996, 0.03990002, 0.03990002, 0.52763156], [1517240220000, 0.03999995, 0.03999995, 0.03990002, 0.03990002, 1.07553691], [1517240280000, 0.03990002, 0.03990002, 0.03990002, 0.03990002, 0.05526314], [1517240340000, 0.03990003, 0.03990003, 0.03990002, 0.03990002, 8.59235845], [1517240400000, 0.03990002, 0.03990002, 0.03990002, 0.03990002, 40.32400375], [1517240460000, 0.03984, 0.03990002, 0.03980972, 0.03990002, 0.28860296], [1517240520000, 0.03990002, 0.03990002, 0.03990002, 0.03990002, 26.00172358], [1517240580000, 0.03990001, 0.03999, 0.03990001, 0.03999, 3.23756828], [1517240640000, 0.03999, 0.03999001, 0.03999, 0.03999001, 0.05513878], [1517240700000, 0.03999001, 0.03999001, 0.03999001, 0.03999001, 0.05513878], [1517240760000, 0.03999001, 0.03999001, 0.03999, 0.03999, 2.10513878], [1517240820000, 0.03999, 0.03999, 0.03999, 0.03999, 0.05513878], [1517240880000, 0.03999, 0.03999, 0.03980971, 0.03980971, 3.16622541], [1517240940000, 0.03999974, 0.03999974, 0.03999974, 0.03999974, 0.02], [1517241000000, 0.03999972, 0.03999972, 0.03999972, 0.03999972, 0.50000374], [1517241180000, 0.03999971, 0.03999971, 0.03999971, 0.03999971, 0.14608024], [1517241300000, 0.03999971, 0.03999972, 0.03999971, 0.03999972, 2.5000187], [1517241360000, 0.03999972, 0.03999972, 0.03999971, 0.03999972, 4.05825939], [1517241480000, 0.03985494, 0.03985494, 0.03985494, 0.03985494, 0.94283175], [1517241540000, 0.03985494, 0.03985494, 0.03985494, 0.03985494, 0.42415025], [1517241600000, 0.03999972, 0.03999972, 0.03985493, 0.03999972, 2.20139108], [1517241660000, 0.03999972, 0.03999972, 0.03985493, 0.03999972, 1.18858309], [1517241840000, 0.03985494, 0.03998406, 0.03985494, 0.03998406, 0.46629018], [1517241900000, 0.03998406, 0.03998406, 0.03985493, 0.03985493, 0.8255157], [1517242080000, 0.03998405, 0.03998405, 0.03986, 0.03986, 0.27506688], [1517242200000, 0.03986001, 0.03986001, 0.03986001, 0.03986001, 0.18046044], [1517242260000, 0.03986001, 0.03986001, 0.03986001, 0.03986001, 0.1019093], [1517242320000, 0.03998405, 0.03999972, 0.03998405, 0.03999972, 1.76952587], [1517242380000, 0.03999972, 0.03999972, 0.03999972, 0.03999972, 0.66779658], [1517242440000, 0.03999972, 0.03999973, 0.03999972, 0.03999973, 0.31608688], [1517242500000, 0.0399999, 0.0399999, 0.03999973, 0.03999973, 0.92519889], [1517242560000, 0.03999973, 0.03999974, 0.03999973, 0.03999973, 0.07154555], [1517242620000, 0.03999973, 0.03999973, 0.03999972, 0.03999972, 1.81288313], [1517242680000, 0.03986051, 0.04, 0.03986051, 0.03986051, 1.95421517], [1517242800000, 0.03999971, 0.03999971, 0.03999971, 0.03999971, 0.25000187], [1517242860000, 0.03999971, 0.03999971, 0.03999971, 0.03999971, 0.29123625], [1517242920000, 0.03998406, 0.03998406, 0.03998406, 0.03998406, 0.11135753], [1517242980000, 0.03998406, 0.03998406, 0.03998406, 0.03998406, 0.02757349], [1517243040000, 0.03998506, 0.03998507, 0.03998506, 0.03998506, 5.21737265], [1517243100000, 0.03998506, 0.0399851, 0.03998506, 0.0399851, 0.60757279], [1517243160000, 0.03998506, 0.03999966, 0.03998406, 0.03999966, 3.4062367], [1517243220000, 0.03998506, 0.03998506, 0.03998506, 0.03998506, 2.03000509], [1517243280000, 0.03998506, 0.03998506, 0.03998506, 0.03998506, 3.30432952], [1517243340000, 0.03998506, 0.03999963, 0.03998506, 0.03999963, 0.32757419], [1517243400000, 0.039998, 0.039998, 0.039998, 0.039998, 0.60506696], [1517243460000, 0.03998506, 0.03998506, 0.03998506, 0.03998506, 0.41042442], [1517243520000, 0.03998506, 0.03998506, 0.03998506, 0.03998506, 1.28848247], [1517243580000, 0.03999798, 0.03999798, 0.03999798, 0.03999798, 2.49387594], [1517243640000, 0.03998506, 0.03998506, 0.03998506, 0.03998506, 0.08298404], [1517243700000, 0.03998509, 0.03999799, 0.03998509, 0.03999, 4.39388137], [1517243760000, 0.03999, 0.03999, 0.03999, 0.03999, 0.14786423], [1517243820000, 0.03999, 0.03999911, 0.03999, 0.03999911, 3.13672575], [1517243880000, 0.03999911, 0.03999911, 0.03999911, 0.03999911, 1.0], [1517243940000, 0.03999971, 0.03999971, 0.03999971, 0.03999971, 0.99750723], [1517244000000, 0.03999971, 0.03999971, 0.03999971, 0.03999971, 0.11190908], [1517244060000, 0.03999971, 0.03999971, 0.03999971, 0.03999971, 1.34934], [1517244120000, 0.03999911, 0.03999911, 0.0399985, 0.0399985, 2.07660696], [1517244180000, 0.03999, 0.03999, 0.03999, 0.03999, 0.34329855], [1517244240000, 0.03999, 0.03999, 0.03999, 0.03999, 0.24259305], [1517244300000, 0.03999, 0.04, 0.03999, 0.0399999, 0.62394252], [1517244360000, 0.0399999, 0.04, 0.0399999, 0.0399999, 0.10149243], [1517244420000, 0.04, 0.04, 0.03999, 0.03999, 0.62969624], [1517244480000, 0.0399999, 0.0399999, 0.03999, 0.03999, 1.11523831], [1517244540000, 0.03999, 0.0399999, 0.03999, 0.0399999, 1.14549003], [1517244600000, 0.03999, 0.03999, 0.03999, 0.03999, 0.17666316], [1517244660000, 0.03999, 0.0399999, 0.03999, 0.03999, 1.2150716], [1517244720000, 0.0399999, 0.0399999, 0.03999, 0.03999, 0.3045144], [1517244780000, 0.03999, 0.04, 0.03999, 0.04, 37.89226735], [1517244840000, 0.04, 0.04, 0.04, 0.04, 0.09847363], [1517244900000, 0.04, 0.04005736, 0.04, 0.04, 3.32620527], [1517244960000, 0.04, 0.04, 0.04, 0.04, 2.5306875], [1517245020000, 0.04, 0.04, 0.04, 0.04, 0.0826875], [1517245080000, 0.04, 0.04, 0.04, 0.04, 0.055125], [1517245140000, 0.04, 0.04, 0.04, 0.04, 1.20869466], [1517245200000, 0.04, 0.04005736, 0.04, 0.04, 0.54008978], [1517245260000, 0.04, 0.04005736, 0.04, 0.04005736, 9.31390032], [1517245320000, 0.04, 0.04, 0.04, 0.04, 0.08555387], [1517245380000, 0.04, 0.04, 0.04, 0.04, 0.13494249], [1517245440000, 0.04, 0.04, 0.04, 0.04, 0.855125], [1517245500000, 0.04, 0.04005736, 0.04, 0.04005736, 0.81789051], [1517245560000, 0.04, 0.04016999, 0.04, 0.04016999, 3.65374658], [1517245620000, 0.04005736, 0.04018001, 0.04005736, 0.04018001, 4.73535121], [1517245680000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 0.54025478], [1517245740000, 0.04017998, 0.04017998, 0.04005736, 0.04005736, 2.2100316], [1517245800000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 0.29146651], [1517245860000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 0.60885085], [1517245920000, 0.04006877, 0.04006877, 0.04005736, 0.04005736, 0.79697564], [1517245980000, 0.0401, 0.04017997, 0.0401, 0.04017997, 0.22238943], [1517246040000, 0.0401, 0.0401, 0.04005736, 0.04005736, 2.45034153], [1517246100000, 0.04005736, 0.0401, 0.04005736, 0.04005736, 0.87624197], [1517246160000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 4.37307717], [1517246220000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 1.28256909], [1517246280000, 0.0401, 0.0401, 0.04005736, 0.04005736, 3.33406539], [1517246340000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 0.24348967], [1517246400000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 0.05504606], [1517246460000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 3.56849564], [1517246520000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 0.3069733], [1517246580000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 0.05504606], [1517246640000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 3.30375168], [1517246700000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 0.05504606], [1517246760000, 0.04005736, 0.04017996, 0.04005736, 0.04017996, 0.74241473], [1517246820000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 0.11261438], [1517246880000, 0.04005736, 0.04005736, 0.04005736, 0.04005736, 5.37448774], [1517246940000, 0.04005736, 0.04005736, 0.04, 0.04, 8.917004], [1517247180000, 0.04, 0.04, 0.04, 0.04, 0.0319], [1517247300000, 0.04005736, 0.04005736, 0.03998406, 0.03998406, 3.64474476], [1517247360000, 0.03998406, 0.03998406, 0.03985492, 0.03985492, 2.14187349], [1517247420000, 0.03985492, 0.04, 0.03985492, 0.04, 0.15978149], [1517247540000, 0.04, 0.04, 0.04, 0.04, 0.01247], [1517247600000, 0.04, 0.04, 0.03985494, 0.03985494, 0.75], [1517247660000, 0.03985499, 0.03985499, 0.03985499, 0.03985499, 0.05007992], [1517247720000, 0.04, 0.040175, 0.03986503, 0.03986503, 4.46518593], [1517247780000, 0.03986502, 0.03986502, 0.03986502, 0.03986502, 0.51572035], [1517247840000, 0.03986555, 0.03986555, 0.03986554, 0.03986554, 1.28187865], [1517247900000, 0.03986554, 0.03986554, 0.03986554, 0.03986554, 0.11559837], [1517247960000, 0.03986554, 0.03986554, 0.03986554, 0.03986554, 0.05532584], [1517248020000, 0.03986554, 0.03986554, 0.03985499, 0.03986554, 2.72668882], [1517248080000, 0.03986554, 0.03986554, 0.03986, 0.03986554, 3.1487354], [1517248140000, 0.03986554, 0.03986554, 0.03986, 0.03986, 0.08100919], [1517248200000, 0.03986554, 0.03986554, 0.03986554, 0.03986554, 1.28730143], [1517248440000, 0.03987, 0.03987, 0.03985499, 0.03985499, 3.94635563], [1517248500000, 0.039855, 0.03987, 0.03983, 0.03983, 6.74751433], [1517248560000, 0.039815, 0.039815, 0.039815, 0.039815, 0.50776033], [1517248620000, 0.039865, 0.039865, 0.039865, 0.039865, 0.36171311], [1517248680000, 0.039865, 0.039865, 0.039865, 0.039865, 0.13], [1517248740000, 0.039865, 0.039865, 0.03981502, 0.039865, 0.1565811], [1517248800000, 0.039835, 0.039865, 0.03981501, 0.039865, 4.49447028], [1517248860000, 0.039865, 0.03987, 0.039865, 0.03987, 0.50650621], [1517248920000, 0.03987, 0.03987, 0.03987, 0.03987, 2.61484367], [1517248980000, 0.03987, 0.03987, 0.03983501, 0.03983501, 0.44374341], [1517249040000, 0.03983501, 0.04012499, 0.03983501, 0.04012496, 4.82082228], [1517249100000, 0.04006897, 0.04012495, 0.04006894, 0.04006894, 0.69079924], [1517249160000, 0.04006893, 0.04006893, 0.04006893, 0.04006893, 2.36], [1517249220000, 0.0399, 0.0399, 0.03981001, 0.03981001, 10.69312878], [1517249280000, 0.03981001, 0.03981001, 0.03962702, 0.039786, 14.26197805], [1517249340000, 0.039697, 0.039914, 0.039697, 0.039914, 0.48756552], [1517249400000, 0.039898, 0.039898, 0.039686, 0.03980545, 4.48225683], [1517249460000, 0.03980545, 0.039894, 0.03971, 0.03971, 8.11652707], [1517249520000, 0.03973, 0.03973, 0.03968634, 0.03968634, 5.659657], [1517249580000, 0.039706, 0.03973, 0.039687, 0.039687, 5.73125634], [1517249640000, 0.03973, 0.03973, 0.03960019, 0.03973, 4.67674345], [1517249700000, 0.03972, 0.03972, 0.0396002, 0.039715, 14.84294512], [1517249760000, 0.03969, 0.03971499, 0.03950154, 0.03970499, 5.28880722], [1517249820000, 0.039695, 0.039695, 0.03950154, 0.039521, 11.55270166], [1517249880000, 0.03967499, 0.03967499, 0.03940646, 0.03940646, 6.31296013], [1517249940000, 0.03940646, 0.03965999, 0.03940646, 0.03963999, 10.28590726], [1517250000000, 0.03963998, 0.03963998, 0.03944, 0.03961992, 22.71106699], [1517250060000, 0.03961992, 0.03961992, 0.03946, 0.03960995, 16.37433536], [1517250120000, 0.03960995, 0.03964998, 0.039605, 0.039605, 11.07143955], [1517250180000, 0.039605, 0.03964499, 0.039605, 0.03964494, 9.4038], [1517250300000, 0.03964494, 0.03964494, 0.03964494, 0.03964494, 0.04591975], [1517250360000, 0.03946403, 0.03969999, 0.03946403, 0.03969999, 1.15582792], [1517250420000, 0.03946401, 0.03946402, 0.03945477, 0.03946402, 1.71480395], [1517250480000, 0.03946402, 0.03946402, 0.03944, 0.03946402, 0.30175064], [1517250540000, 0.03946402, 0.03946402, 0.039464, 0.039464, 8.35898887], [1517250600000, 0.03946402, 0.03969999, 0.03946401, 0.03969999, 8.706541], [1517250660000, 0.03972499, 0.03972499, 0.0397, 0.03972499, 0.84608902], [1517250720000, 0.03969999, 0.039725, 0.03969999, 0.039725, 0.66777508], [1517250840000, 0.03950149, 0.03950149, 0.03950149, 0.03950149, 0.01943981], [1517250900000, 0.039725, 0.039725, 0.039725, 0.039725, 1.0101049], [1517251080000, 0.0395015, 0.039725, 0.0395015, 0.0395015, 1.65214827], [1517251140000, 0.03950152, 0.03950153, 0.0395015, 0.0395015, 1.03206465], [1517251200000, 0.03950152, 0.039725, 0.0395015, 0.039725, 8.31771516], [1517251260000, 0.0395015, 0.039506, 0.0395015, 0.039505, 0.73586395], [1517251320000, 0.03951, 0.03951, 0.039507, 0.039507, 0.24916517], [1517251380000, 0.03950702, 0.03950702, 0.03950702, 0.03950702, 0.02790644], [1517251440000, 0.03950701, 0.03954652, 0.039507, 0.03954652, 0.58231483], [1517251500000, 0.03950701, 0.039724, 0.03950701, 0.039724, 5.14269064], [1517251560000, 0.0395465, 0.0395465, 0.0395465, 0.0395465, 0.02364553], [1517251620000, 0.03954651, 0.03954651, 0.03950701, 0.03952676, 0.09589188], [1517251680000, 0.03971842, 0.03971842, 0.03950701, 0.0395268, 0.43806741], [1517251740000, 0.03950701, 0.03950701, 0.03950701, 0.03950701, 0.05581288], [1517251800000, 0.0397184, 0.039725, 0.03950701, 0.03950701, 0.32864835], [1517251860000, 0.03950702, 0.03950702, 0.03950701, 0.03950701, 0.05581286], [1517251920000, 0.03969399, 0.03969399, 0.03969399, 0.03969399, 0.27], [1517251980000, 0.039649, 0.039649, 0.039649, 0.039649, 0.1211208], [1517252040000, 0.039674, 0.039674, 0.03950701, 0.039674, 1.21722416], [1517252100000, 0.039694, 0.039694, 0.039694, 0.039694, 0.3], [1517252160000, 0.039725, 0.039725, 0.03972499, 0.039725, 14.50082155], [1517252220000, 0.03950702, 0.03950702, 0.03950702, 0.03950702, 0.04294243], [1517252280000, 0.03950702, 0.03951201, 0.03950701, 0.03951201, 0.81298159], [1517252340000, 0.03950961, 0.03950962, 0.03950961, 0.03950962, 0.0558092], [1517252400000, 0.03950962, 0.03950962, 0.03950701, 0.03950701, 0.05581103], [1517252460000, 0.039512, 0.03951201, 0.039512, 0.03951201, 0.08371228], [1517252520000, 0.039512, 0.039512, 0.039512, 0.039512, 0.02790291], [1517252580000, 0.03951202, 0.03951202, 0.039512, 0.039512, 1.3], [1517252640000, 0.039512, 0.039512, 0.039512, 0.039512, 0.02790292], [1517252700000, 0.039713, 0.03973399, 0.039512, 0.039512, 1.59036169], [1517252760000, 0.039512, 0.03973397, 0.039512, 0.03973397, 0.39989585], [1517252820000, 0.03952204, 0.03952204, 0.03952204, 0.03952204, 0.11005379], [1517253000000, 0.039799, 0.039799, 0.03954701, 0.03954701, 0.50252518], [1517253120000, 0.03982, 0.03982, 0.03958516, 0.03958516, 0.05033313], [1517253240000, 0.03958375, 0.03958375, 0.03958375, 0.03958375, 0.04119452], [1517253300000, 0.03966973, 0.03966973, 0.03966973, 0.03966973, 2.51343346], [1517253360000, 0.03966973, 0.03981699, 0.03966973, 0.03981699, 0.08182598], [1517253420000, 0.0397, 0.0397, 0.0397, 0.0397, 0.31378271], [1517253480000, 0.0397, 0.0397, 0.0397, 0.0397, 0.05554156], [1517253540000, 0.03970001, 0.03970001, 0.03970001, 0.03970001, 0.09968236], [1517253600000, 0.039817, 0.039817, 0.03970001, 0.03970001, 0.09234097], [1517253660000, 0.03970001, 0.03981701, 0.03970001, 0.03970001, 0.78828678], [1517253720000, 0.03970001, 0.03970001, 0.03970001, 0.03970001, 0.82473388], [1517253780000, 0.03970001, 0.03970001, 0.0397, 0.0397, 0.32247247], [1517253840000, 0.0397, 0.0397, 0.03958376, 0.03958376, 0.24608208], [1517253960000, 0.03959, 0.03959, 0.03959, 0.03959, 0.07001079], [1517254020000, 0.0397, 0.03974107, 0.0397, 0.03974107, 1.50868469], [1517254200000, 0.03970001, 0.039762, 0.03970001, 0.039762, 1.21428061], [1517254260000, 0.03975999, 0.03975999, 0.03975999, 0.03975999, 0.34336472], [1517254560000, 0.03975999, 0.03976997, 0.03975999, 0.03976997, 0.35215344], [1517254680000, 0.03976996, 0.03976996, 0.03976996, 0.03976996, 0.2], [1517254740000, 0.03976996, 0.03976996, 0.03976996, 0.03976996, 0.34783316], [1517254800000, 0.03976997, 0.03991497, 0.03976996, 0.03991497, 1.31373735], [1517254860000, 0.039885, 0.039885, 0.039885, 0.039885, 0.17030703], [1517254920000, 0.0398, 0.0398, 0.0398, 0.0398, 0.02770101], [1517254980000, 0.03980001, 0.03980001, 0.0396, 0.03966171, 2.59681772], [1517255040000, 0.03966171, 0.03966171, 0.03966171, 0.03966171, 0.04016152], [1517255160000, 0.0396, 0.0396, 0.03959001, 0.03959001, 0.64096042], [1517255220000, 0.0396, 0.0396, 0.03959003, 0.03959003, 0.49852706], [1517255280000, 0.0396, 0.0396, 0.039512, 0.039512, 3.34783698], [1517255340000, 0.03959003, 0.0396, 0.03959003, 0.0396, 7.49675157], [1517255400000, 0.03952204, 0.03979055, 0.03952204, 0.03979055, 0.3248254], [1517255460000, 0.03953202, 0.03953202, 0.03953202, 0.03953202, 0.29092996], [1517255520000, 0.03953202, 0.03953202, 0.03953202, 0.03953202, 0.059788], [1517255580000, 0.03979999, 0.03979999, 0.03979999, 0.03979999, 0.02565493], [1517255760000, 0.0398, 0.0398, 0.0398, 0.0398, 0.0365497], [1517255880000, 0.0397, 0.0397, 0.0397, 0.0397, 0.11173375], [1517255940000, 0.0398, 0.0399, 0.0398, 0.0399, 4.67422595], [1517256000000, 0.0399, 0.0399, 0.0399, 0.0399, 0.6622106], [1517256180000, 0.03991497, 0.03999999, 0.03991497, 0.03999999, 1.5180657], [1517256240000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 1.71125073], [1517256300000, 0.03999999, 0.03999999, 0.03999999, 0.03999999, 0.39391223], [1517256360000, 0.03978005, 0.03978005, 0.03978005, 0.03978005, 0.08997188], [1517256480000, 0.03998, 0.03998, 0.03998, 0.03998, 0.31674584], [1517256600000, 0.0397803, 0.0397803, 0.03978006, 0.03978006, 0.66020166], [1517256660000, 0.03978007, 0.039948, 0.039626, 0.039626, 6.19472304], [1517256720000, 0.03962069, 0.03970985, 0.03959901, 0.03959901, 7.30721919], [1517256780000, 0.03959901, 0.03978007, 0.039522, 0.03952203, 9.37509772], [1517256840000, 0.03952702, 0.03952702, 0.03952702, 0.03952702, 0.1084219], [1517256900000, 0.03954703, 0.03978007, 0.03954703, 0.03978007, 5.1447381], [1517256960000, 0.03989483, 0.03989483, 0.039609, 0.039609, 5.01799465], [1517257140000, 0.03960501, 0.03980186, 0.03960501, 0.03980186, 3.96899646], [1517257200000, 0.03981548, 0.03981548, 0.03981548, 0.03981548, 0.17164798], [1517257320000, 0.03981548, 0.03981548, 0.03981548, 0.03981548, 1.34876943], [1517257500000, 0.03981548, 0.03985322, 0.03981548, 0.03985322, 1.5], [1517257560000, 0.039705, 0.039705, 0.039705, 0.039705, 1.2], [1517257620000, 0.039705, 0.039705, 0.039705, 0.039705, 0.25], [1517257680000, 0.03970005, 0.039705, 0.03970002, 0.039705, 0.35848799], [1517257740000, 0.03970002, 0.039885, 0.0395945, 0.0395945, 2.52303889], [1517257800000, 0.03988, 0.03988, 0.03954201, 0.03954201, 8.12409495], [1517257860000, 0.039557, 0.039557, 0.03951701, 0.03951701, 0.9040779], [1517257920000, 0.039537, 0.039552, 0.039537, 0.03954701, 0.81216091], [1517258100000, 0.03984359, 0.03984359, 0.03984359, 0.03984359, 0.25098133], [1517258160000, 0.03956701, 0.03984259, 0.039552, 0.03984259, 1.25010272], [1517258280000, 0.03959203, 0.03959203, 0.03959202, 0.03959202, 1.00155446], [1517258400000, 0.039845, 0.039866, 0.039845, 0.039866, 0.3937675], [1517258460000, 0.039866, 0.039866, 0.039866, 0.039866, 0.0386207], [1517258760000, 0.039846, 0.039846, 0.039846, 0.039846, 0.02516558], [1517258880000, 0.039846, 0.039846, 0.039846, 0.039846, 0.19457487], [1517258940000, 0.039866, 0.039866, 0.039866, 0.039866, 1.08128538], [1517259060000, 0.039846, 0.03985099, 0.039846, 0.03985099, 3.98828463], [1517259120000, 0.039846, 0.039846, 0.039846, 0.039846, 2e-07], [1517259300000, 0.03984598, 0.039846, 0.03984598, 0.039846, 1.3732644], [1517259420000, 0.0397001, 0.0397001, 0.03970009, 0.03970009, 0.02777071], [1517259480000, 0.03970009, 0.03970009, 0.03970006, 0.03970006, 0.05554145], [1517259540000, 0.03983599, 0.03983599, 0.03983598, 0.03983598, 0.27838045], [1517259600000, 0.03983599, 0.03983599, 0.03970006, 0.03970006, 3.02035369], [1517259720000, 0.03970006, 0.03970006, 0.03970006, 0.03970006, 0.46434204], [1517259900000, 0.03970006, 0.03982969, 0.03970006, 0.03982968, 0.50377706], [1517260020000, 0.03959204, 0.03959204, 0.03959202, 0.03959202, 0.21280444], [1517260080000, 0.03981344, 0.03981344, 0.03981344, 0.03981344, 0.12553036], [1517260140000, 0.03959202, 0.0396, 0.03959202, 0.0396, 0.17883157], [1517260200000, 0.03980344, 0.03980344, 0.03980344, 0.03980344, 0.11133299], [1517260260000, 0.03960001, 0.03960001, 0.03959202, 0.03959999, 0.54408416], [1517260380000, 0.039685, 0.039685, 0.03959202, 0.03959202, 1.11223634], [1517260440000, 0.039685, 0.039685, 0.039685, 0.039685, 0.39164739], [1517260560000, 0.039685, 0.039685, 0.0396, 0.0396, 1.05595252], [1517260680000, 0.0396, 0.0396, 0.0396, 0.0396, 0.89141166], [1517260740000, 0.0396, 0.0396, 0.0396, 0.0396, 0.19144216], [1517260800000, 0.03960002, 0.03960002, 0.03960001, 0.03960001, 6.625], [1517260920000, 0.03960003, 0.03960003, 0.03960003, 0.03960003, 0.28158954], [1517261160000, 0.039605, 0.03968501, 0.039605, 0.03968501, 0.39313916], [1517261220000, 0.03968502, 0.03981343, 0.03968502, 0.03981343, 0.86580401], [1517261280000, 0.03986599, 0.039866, 0.03968502, 0.03968502, 1.48386771], [1517261340000, 0.03968502, 0.03968502, 0.03968502, 0.03968502, 0.92357543], [1517261400000, 0.03986598, 0.03986598, 0.03986598, 0.03986598, 0.17238057], [1517261520000, 0.03986598, 0.03986598, 0.03986598, 0.03986598, 0.08018832], [1517261580000, 0.03986598, 0.03986598, 0.03986598, 0.03986598, 1.25631697], [1517261640000, 0.03968503, 0.03985599, 0.03968502, 0.03985599, 0.40191152], [1517261760000, 0.03968502, 0.03968502, 0.03968502, 0.03968502, 0.03021902], [1517261820000, 0.0397, 0.0397, 0.03968502, 0.03968502, 1.35065132], [1517261940000, 0.03981595, 0.03981595, 0.03981595, 0.03981595, 0.13957109], [1517262000000, 0.0398, 0.03984596, 0.0398, 0.03984596, 1.29281548], [1517262060000, 0.0398001, 0.0398001, 0.03968502, 0.03968502, 2.0], [1517262180000, 0.03984596, 0.03984596, 0.03984596, 0.03984596, 2.75648546], [1517262300000, 0.03969, 0.03984596, 0.03969, 0.03984596, 0.46533413], [1517262360000, 0.03974596, 0.039841, 0.03974596, 0.039841, 2.0], [1517262420000, 0.03969001, 0.03974596, 0.03969001, 0.03974596, 0.52662611], [1517262540000, 0.03969, 0.03969, 0.03969, 0.03969, 0.03400574], [1517262600000, 0.03969, 0.03974596, 0.03969, 0.03974596, 1.8618742], [1517262720000, 0.03969002, 0.03969002, 0.03969, 0.03969, 0.53950752], [1517262780000, 0.03969, 0.03969, 0.03969, 0.03969, 0.02107779], [1517262840000, 0.03969, 0.03969, 0.03969, 0.03969, 0.1341103], [1517262900000, 0.0397458, 0.0397459, 0.03969, 0.03969, 0.27937668], [1517262960000, 0.039741, 0.039741, 0.03969, 0.03969, 0.14768419], [1517263020000, 0.03969, 0.03969, 0.039677, 0.039677, 4.82552818], [1517263080000, 0.039677, 0.039677, 0.03943, 0.03947, 8.31080487], [1517263140000, 0.03947, 0.03947, 0.03945103, 0.03945103, 0.91340999], [1517263200000, 0.03945103, 0.03973583, 0.03945103, 0.03973582, 0.78176238], [1517263260000, 0.03945204, 0.039455, 0.03945204, 0.039455, 0.34944862], [1517263320000, 0.03945701, 0.03973578, 0.03945701, 0.03973578, 0.13766265], [1517263380000, 0.03946104, 0.03946104, 0.03946104, 0.03946104, 0.04096535], [1517263500000, 0.03947211, 0.03974054, 0.03947211, 0.03974054, 0.05037323], [1517263560000, 0.039477, 0.03974061, 0.039477, 0.03974061, 1.72775112], [1517263620000, 0.03974061, 0.03974061, 0.039487, 0.039487, 0.85355184], [1517263680000, 0.03948701, 0.039736, 0.03947703, 0.039736, 0.98709625], [1517263800000, 0.0397406, 0.03974061, 0.0397406, 0.03974061, 0.25163183], [1517263920000, 0.039736, 0.039736, 0.039736, 0.039736, 0.10066438], [1517263980000, 0.039736, 0.039736, 0.039736, 0.039736, 0.56290162], [1517264040000, 0.039736, 0.039736, 0.039736, 0.039736, 0.03623918], [1517264100000, 0.03949204, 0.039736, 0.03949204, 0.039736, 1.83341429], [1517264160000, 0.039736, 0.039736, 0.039736, 0.039736, 0.05435902], [1517264220000, 0.039736, 0.039736, 0.039736, 0.039736, 1.50619538], [1517264280000, 0.03953703, 0.03953703, 0.03949783, 0.03949783, 1.30002142], [1517264340000, 0.039518, 0.039736, 0.039518, 0.03952302, 0.07644053], [1517264400000, 0.03952302, 0.03952302, 0.03951301, 0.03952302, 0.60798298], [1517264460000, 0.03951703, 0.03973599, 0.03951703, 0.03973599, 1.89437018], [1517264520000, 0.03950802, 0.03950804, 0.03950802, 0.03950804, 0.34088091], [1517264580000, 0.03951302, 0.03951306, 0.039513, 0.039513, 2.02882303], [1517264640000, 0.03950807, 0.039513, 0.03950807, 0.039513, 0.61115119], [1517264760000, 0.03973599, 0.039736, 0.03973599, 0.039736, 0.61123724], [1517264820000, 0.03973599, 0.03973599, 0.03973599, 0.03973599, 0.26974476], [1517265000000, 0.03973599, 0.039736, 0.03950805, 0.03973599, 3.25528002], [1517265060000, 0.03973599, 0.039736, 0.03973599, 0.039736, 1.11106483], [1517265120000, 0.039736, 0.039736, 0.039736, 0.039736, 0.01761627], [1517265180000, 0.039736, 0.039736, 0.039736, 0.039736, 0.40778699], [1517265240000, 0.03951801, 0.039736, 0.03951801, 0.039736, 0.16732905], [1517265300000, 0.0397406, 0.03974596, 0.03973601, 0.03973601, 1.09903703], [1517265360000, 0.03973601, 0.03973601, 0.03973601, 0.03973601, 3.4041528], [1517265420000, 0.03974596, 0.03974596, 0.03974596, 0.03974596, 0.02774564], [1517265480000, 0.03974596, 0.03974596, 0.03974596, 0.03974596, 0.05549128], [1517265540000, 0.03974596, 0.03974596, 0.03974596, 0.03974596, 0.05549128], [1517265600000, 0.03974596, 0.03985, 0.03974596, 0.03985, 2.79544237], [1517265660000, 0.03985, 0.039861, 0.03985, 0.039861, 3.01117893], [1517265720000, 0.039861, 0.039861, 0.03973603, 0.03973603, 2.52385783], [1517265840000, 0.03973604, 0.03973604, 0.03973603, 0.03973603, 0.121], [1517265900000, 0.039861, 0.039861, 0.039861, 0.039861, 2.37276387], [1517265960000, 0.039861, 0.039861, 0.03973603, 0.039861, 2.84913324], [1517266020000, 0.03975601, 0.03975601, 0.03973603, 0.03973603, 0.69646578], [1517266080000, 0.03973602, 0.03973602, 0.03973601, 0.03973601, 10.95886796], [1517266140000, 0.03973602, 0.03973603, 0.03973602, 0.03973603, 1.04778086], [1517266200000, 0.03973603, 0.03973603, 0.03973603, 0.03973603, 1.76162672], [1517266260000, 0.03973603, 0.03973603, 0.03973603, 0.03973603, 1.4711314], [1517266320000, 0.03973603, 0.03986199, 0.03973603, 0.03986199, 6.57526243], [1517266380000, 0.039862, 0.039862, 0.039862, 0.039862, 0.03691858], [1517266440000, 0.039862, 0.039862, 0.03986199, 0.039862, 9.61172205], [1517266500000, 0.03986198, 0.039862, 0.039736, 0.039736, 67.7295568], [1517266560000, 0.039736, 0.039862, 0.039736, 0.039862, 8.96059974], [1517266680000, 0.0397, 0.0397, 0.0397, 0.0397, 0.02777078], [1517266740000, 0.039862, 0.039862, 0.0397, 0.0397, 0.13336755], [1517266800000, 0.03984848, 0.03984848, 0.03984848, 0.03984848, 0.25126259], [1517266860000, 0.03986198, 0.03986199, 0.0397, 0.0397, 1.8045747], [1517266920000, 0.0397, 0.0397, 0.0397, 0.0397, 0.44844468], [1517266980000, 0.03986199, 0.03986199, 0.039857, 0.039857, 2.04754809], [1517267100000, 0.03970004, 0.039857, 0.03970001, 0.03970001, 0.664343], [1517267220000, 0.03970003, 0.03970003, 0.03970003, 0.03970003, 0.02020097], [1517267280000, 0.039701, 0.039701, 0.03970003, 0.03970003, 0.25945643], [1517267340000, 0.03970099, 0.039847, 0.03970099, 0.039847, 2.82925216], [1517267400000, 0.039845, 0.039845, 0.039844, 0.039844, 1.50583506], [1517267580000, 0.03984699, 0.039859, 0.03984699, 0.03984699, 0.37046139], [1517267640000, 0.03984699, 0.039856, 0.03984699, 0.039856, 0.9099567], [1517267700000, 0.03984699, 0.039859, 0.03984699, 0.03984699, 1.66006937], [1517267760000, 0.03984699, 0.03984699, 0.03984699, 0.03984699, 0.23033668], [1517267820000, 0.03984699, 0.03984699, 0.03972744, 0.0398, 0.18471852], [1517267880000, 0.0398, 0.0398, 0.0398, 0.0398, 0.02770101], [1517267940000, 0.039845, 0.039845, 0.039845, 0.039845, 0.17181944], [1517268000000, 0.03984698, 0.03984699, 0.03970003, 0.03970003, 1.94832951], [1517268180000, 0.03970004, 0.03984695, 0.03970003, 0.03984695, 0.29247321], [1517268240000, 0.03984695, 0.03984695, 0.03984695, 0.03984695, 0.37736228], [1517268300000, 0.03984695, 0.03984695, 0.03984695, 0.03984695, 0.02783744], [1517268360000, 0.039846, 0.039846, 0.039846, 0.039846, 1.46812263], [1517268420000, 0.039846, 0.03984699, 0.039846, 0.03984699, 6.81446228], [1517268540000, 0.03984699, 0.0398568, 0.03984699, 0.0398568, 0.80113086], [1517268600000, 0.0398568, 0.0398568, 0.0398568, 0.0398568, 0.25089821], [1517268780000, 0.03984699, 0.03984699, 0.03984699, 0.03984699, 6.2708054], [1517269020000, 0.03982, 0.03982, 0.03982, 0.03982, 1.5], [1517269080000, 0.03982, 0.03982, 0.03970005, 0.03970005, 0.15253282], [1517269140000, 0.03970005, 0.03970005, 0.03970004, 0.03970004, 0.08560525], [1517269200000, 0.03970004, 0.03970004, 0.03970003, 0.03970003, 0.217887], [1517269260000, 0.03970003, 0.03970003, 0.03970003, 0.03970003, 0.14091999], [1517269320000, 0.03970002, 0.03970002, 0.03970002, 0.03970002, 0.0947271], [1517269380000, 0.03970002, 0.03970002, 0.03970002, 0.03970002, 0.30691957], [1517269440000, 0.03970002, 0.03970003, 0.03970002, 0.03970003, 10.24111279], [1517269500000, 0.03970002, 0.03986199, 0.03970002, 0.03986199, 0.51452075], [1517269560000, 0.03970001, 0.03970001, 0.03957624, 0.03957624, 6.18323178], [1517269680000, 0.03986198, 0.03986198, 0.03986198, 0.03986198, 0.17162185], [1517269740000, 0.03959501, 0.03959501, 0.03957624, 0.03957624, 0.40604006], [1517269800000, 0.03957704, 0.03986192, 0.03957704, 0.03986192, 0.84840665], [1517269920000, 0.03960405, 0.03960405, 0.03960405, 0.03960405, 0.0822], [1517269980000, 0.03960415, 0.03986199, 0.03960415, 0.03986199, 0.72765903], [1517270040000, 0.03960425, 0.03960712, 0.03960425, 0.03960712, 6.09283781], [1517270100000, 0.03960725, 0.03986198, 0.03960725, 0.03960905, 2.92971173], [1517270160000, 0.03961001, 0.03961104, 0.03961001, 0.03961104, 0.13313236], [1517270220000, 0.03961101, 0.03976994, 0.03961004, 0.03976994, 4.82476008], [1517270280000, 0.03976994, 0.03976994, 0.03960748, 0.03960748, 3.20278683], [1517270340000, 0.03976994, 0.03976994, 0.0397699, 0.0397699, 2.544339], [1517270400000, 0.039612, 0.039612, 0.039612, 0.039612, 0.08], [1517270520000, 0.03986194, 0.03986195, 0.039631, 0.03986193, 1.31910486], [1517270580000, 0.03963103, 0.03999999, 0.03963103, 0.03999999, 67.60516502], [1517270640000, 0.03999999, 0.04, 0.03963113, 0.03967401, 33.48071799], [1517270700000, 0.03999999, 0.04, 0.03999999, 0.04, 0.5], [1517270820000, 0.04, 0.04, 0.04, 0.04, 0.02483819], [1517270880000, 0.03963504, 0.03963504, 0.03963504, 0.03963504, 6.03660013], [1517270940000, 0.0396712, 0.03967123, 0.0396712, 0.03967123, 0.38160613], [1517271120000, 0.03970001, 0.03970003, 0.03970001, 0.03970003, 0.09812583], [1517271180000, 0.03970002, 0.03970003, 0.03970002, 0.03970003, 3.55151278], [1517271240000, 0.03994865, 0.03994865, 0.03994865, 0.03994865, 0.07800402], [1517271300000, 0.0399487, 0.0399487, 0.03994865, 0.03994865, 3.34161548], [1517271420000, 0.03970003, 0.03970003, 0.03970003, 0.03970003, 0.12907369], [1517271480000, 0.03970003, 0.03970003, 0.03970003, 0.03970003, 0.1011283], [1517271540000, 0.03994864, 0.03994865, 0.03994864, 0.03994865, 1.49103055], [1517271600000, 0.03970004, 0.03970004, 0.03970003, 0.03970003, 0.10167272], [1517271780000, 0.03970004, 0.03994865, 0.03970004, 0.03994865, 0.42492298], [1517271900000, 0.03970004, 0.03970004, 0.03970004, 0.03970004, 3.91042826], [1517271960000, 0.03970004, 0.03970004, 0.03970004, 0.03970004, 24.23815243], [1517272020000, 0.03970004, 0.03970004, 0.03970004, 0.03970004, 1.88181208], [1517272080000, 0.03998661, 0.03998662, 0.03998661, 0.03998662, 0.55622762], [1517272200000, 0.03981871, 0.04, 0.03981871, 0.04, 0.87179973], [1517272260000, 0.03981871, 0.03981871, 0.03970578, 0.03970578, 0.1915068], [1517272320000, 0.03970003, 0.03970007, 0.03970003, 0.03970007, 0.13980957], [1517272380000, 0.03970007, 0.03970007, 0.03970007, 0.03970007, 0.07297314], [1517272500000, 0.03999992, 0.03999992, 0.03999991, 0.03999991, 1.50000372], [1517272560000, 0.03970034, 0.03999981, 0.03970033, 0.03999981, 2.5659022], [1517272800000, 0.03997932, 0.03997933, 0.03963546, 0.03963546, 18.82229781], [1517272860000, 0.03984921, 0.03984921, 0.03984921, 0.03984921, 13.0], [1517272920000, 0.03983678, 0.03984685, 0.03983678, 0.03984685, 0.76524843], [1517272980000, 0.03961106, 0.03961106, 0.03961106, 0.03961106, 0.02783314], [1517273040000, 0.03961106, 0.03961106, 0.03959986, 0.03959986, 0.2713617], [1517273100000, 0.03959986, 0.03960493, 0.03959985, 0.03960493, 0.74991854], [1517273160000, 0.03960493, 0.03960493, 0.03947239, 0.03959984, 18.89807253], [1517273220000, 0.03947239, 0.03958977, 0.03947239, 0.03958977, 2.66119194], [1517273280000, 0.03955975, 0.03956981, 0.03945701, 0.03945701, 0.54201346], [1517273340000, 0.03945701, 0.039479, 0.03945701, 0.039479, 4.96557073], [1517273400000, 0.03945901, 0.0395798, 0.03945901, 0.03952868, 34.9807179], [1517273460000, 0.03945903, 0.03954869, 0.03945901, 0.03945901, 1.12156083], [1517273520000, 0.03942, 0.03959984, 0.0393209, 0.03950383, 2.1731131], [1517273640000, 0.03932091, 0.03932092, 0.03931177, 0.03932092, 0.61137234], [1517273700000, 0.03959945, 0.03959961, 0.03932094, 0.03959961, 2.4375778], [1517273760000, 0.0395996, 0.03959961, 0.03932091, 0.03932091, 4.80885262], [1517273820000, 0.03932091, 0.03959923, 0.0393, 0.0393, 3.09421225], [1517273880000, 0.0393, 0.03930001, 0.0393, 0.0393, 0.49404867], [1517273940000, 0.03930003, 0.03930003, 0.03930003, 0.03930003, 0.0279], [1517274000000, 0.03957601, 0.03957621, 0.03957601, 0.03957621, 0.50535678], [1517274060000, 0.03957621, 0.03957621, 0.03957619, 0.03957621, 1.76873977], [1517274120000, 0.03957617, 0.03957618, 0.03957617, 0.03957618, 0.13404795], [1517274180000, 0.03956618, 0.03956618, 0.03956618, 0.03956618, 6.90196078], [1517274240000, 0.03930003, 0.03957619, 0.03930002, 0.03957619, 0.85223779], [1517274300000, 0.03937643, 0.03957619, 0.03928381, 0.03928381, 2.40370831], [1517274360000, 0.03927706, 0.03927706, 0.03927706, 0.03927706, 1.35222009], [1517274420000, 0.03956614, 0.03956614, 0.03956614, 0.03956614, 0.03873232], [1517274480000, 0.03932001, 0.03932001, 0.03932001, 0.03932001, 7.0], [1517274540000, 0.03932001, 0.03932001, 0.03932001, 0.03932001, 0.91950074], [1517274600000, 0.03956614, 0.03956614, 0.03956614, 0.03956614, 0.79930543], [1517274660000, 0.03956613, 0.03956614, 0.03956613, 0.03956614, 1.0], [1517274720000, 0.03941855, 0.03941855, 0.03941855, 0.03941855, 0.05972856], [1517274780000, 0.03941855, 0.03941855, 0.03940855, 0.03940855, 0.71989175], [1517274840000, 0.03956614, 0.03956614, 0.03956614, 0.03956614, 1.81299915], [1517274900000, 0.03956614, 0.03972501, 0.03935006, 0.03972501, 27.95894127], [1517274960000, 0.039725, 0.039725, 0.039725, 0.039725, 1.69956389], [1517275020000, 0.0395, 0.0395395, 0.0395, 0.0395395, 1.16206366], [1517275080000, 0.03972501, 0.03987369, 0.03972501, 0.03985099, 1.04084806], [1517275140000, 0.03940894, 0.03984899, 0.03940883, 0.03940883, 2.80601065], [1517275200000, 0.03940883, 0.03983895, 0.03940855, 0.03983693, 7.15434065], [1517275260000, 0.03940856, 0.039817, 0.03940856, 0.03979192, 8.62432153], [1517275320000, 0.03978997, 0.03978997, 0.03940855, 0.03940855, 1.150376], [1517275380000, 0.03940855, 0.03940855, 0.03940855, 0.03940855, 0.22833837], [1517275500000, 0.03973754, 0.03973762, 0.03941855, 0.03973762, 1.72085063], [1517275560000, 0.039705, 0.03973762, 0.0395, 0.0395, 6.43673356], [1517275620000, 0.03956, 0.03956, 0.03955, 0.03956, 3.13845011], [1517275680000, 0.039736, 0.03973762, 0.03957, 0.03957, 1.10215673], [1517275740000, 0.03972, 0.03973776, 0.03955, 0.03955, 2.31906004], [1517275800000, 0.03973776, 0.03987293, 0.03973776, 0.03987293, 1.56350492], [1517275860000, 0.03985093, 0.0398729, 0.0398, 0.03987277, 0.94743503], [1517275920000, 0.03987196, 0.03987196, 0.03987196, 0.03987196, 0.2367], [1517275980000, 0.03955047, 0.03987199, 0.03955047, 0.03955107, 9.31982455], [1517276040000, 0.03955107, 0.039874, 0.03955107, 0.039874, 3.1476514], [1517276100000, 0.03987399, 0.039874, 0.03959001, 0.03959001, 1.86535824], [1517276160000, 0.03959001, 0.03995425, 0.03959001, 0.03995413, 1.55796053], [1517276220000, 0.03959011, 0.03959011, 0.03959011, 0.03959011, 0.09197899], [1517276280000, 0.0399539, 0.0399539, 0.0395901, 0.0395901, 3.1323163], [1517276340000, 0.0395901, 0.0395901, 0.0395901, 0.0395901, 0.05209201], [1517276400000, 0.03975495, 0.03995375, 0.0395901, 0.0395901, 4.65429732], [1517276460000, 0.03995371, 0.03995372, 0.03959024, 0.03959024, 0.60126396], [1517276520000, 0.03959059, 0.03959059, 0.03959059, 0.03959059, 0.02930743], [1517276580000, 0.03995368, 0.03995368, 0.03959069, 0.03959069, 0.27942155], [1517276640000, 0.03995329, 0.03995329, 0.03995329, 0.03995329, 0.13506956], [1517276700000, 0.03977216, 0.03995327, 0.03959097, 0.03995316, 4.7466213], [1517276820000, 0.03975401, 0.03975401, 0.03963101, 0.03963101, 0.55322392], [1517276880000, 0.03963101, 0.03975401, 0.03961115, 0.0396502, 49.03301974], [1517277000000, 0.03965, 0.03992332, 0.03965, 0.03992332, 0.27246328], [1517277060000, 0.03965, 0.03965, 0.03965, 0.03965, 0.13398011], [1517277120000, 0.03965, 0.03965, 0.03959011, 0.03959011, 6.87247545], [1517277180000, 0.03959011, 0.03992186, 0.03959011, 0.03959011, 4.51470918], [1517277240000, 0.03959011, 0.03959011, 0.03959011, 0.03959011, 0.57901933], [1517277300000, 0.03959011, 0.03990998, 0.03959011, 0.03959014, 2.73507454], [1517277360000, 0.0395922, 0.03992379, 0.0395922, 0.03992379, 2.53163695], [1517277420000, 0.03959317, 0.03995281, 0.03959316, 0.03995271, 2.85679146], [1517277480000, 0.03962104, 0.03999999, 0.03962104, 0.03999999, 5.04470141], [1517277540000, 0.0396212, 0.0396213, 0.0396212, 0.0396213, 0.26324853], [1517277600000, 0.03999974, 0.0399999, 0.03999974, 0.0399999, 0.50000374], [1517277660000, 0.0399999, 0.0399999, 0.03962301, 0.0399999, 2.64407256], [1517277720000, 0.03962308, 0.03962308, 0.03962308, 0.03962308, 0.0500801], [1517277840000, 0.03962356, 0.03999983, 0.03962356, 0.03999983, 0.28183918], [1517277900000, 0.03962376, 0.0399998, 0.03962376, 0.0399998, 0.28219694], [1517277960000, 0.03962392, 0.03999979, 0.03962392, 0.03962402, 0.96700179], [1517278080000, 0.03999975, 0.03999975, 0.0396217, 0.0396217, 6.06850652], [1517278140000, 0.0396217, 0.03962429, 0.0395901, 0.0395901, 0.752784], [1517278200000, 0.0395901, 0.0396243, 0.0395901, 0.0395901, 2.13081065], [1517278260000, 0.0395901, 0.03962428, 0.0395901, 0.0395901, 4.59902195], [1517278320000, 0.03962428, 0.03962428, 0.03962428, 0.03962428, 0.0256026], [1517278380000, 0.0395901, 0.0395901, 0.0395901, 0.0395901, 0.33319862], [1517278440000, 0.0395901, 0.0395901, 0.0395901, 0.0395901, 0.1973], [1517278500000, 0.0395901, 0.03962431, 0.0395901, 0.03962431, 5.47118219], [1517278620000, 0.03962426, 0.03962426, 0.039571, 0.039571, 0.41828689], [1517278680000, 0.039571, 0.039571, 0.039571, 0.039571, 0.54065669], [1517278740000, 0.039571, 0.03962426, 0.03929601, 0.03929701, 8.6049343], [1517278800000, 0.03929801, 0.03962411, 0.03929702, 0.03930001, 0.88326321], [1517278860000, 0.03930101, 0.03930103, 0.03930101, 0.03930103, 0.4567845], [1517278920000, 0.03930201, 0.0396237, 0.03930201, 0.0396237, 4.77325466], [1517278980000, 0.03930601, 0.03930601, 0.03929701, 0.039306, 89.23780049], [1517279040000, 0.039306, 0.039306, 0.03929701, 0.039306, 52.02873887], [1517279100000, 0.03930599, 0.039306, 0.03929799, 0.039306, 14.68566932], [1517279160000, 0.03930599, 0.039306, 0.03930598, 0.03930599, 4.26168026], [1517279220000, 0.03929702, 0.039306, 0.03929702, 0.03929703, 0.97926915], [1517279280000, 0.03930599, 0.039306, 0.03930599, 0.039306, 0.5787], [1517279340000, 0.039306, 0.039306, 0.03930599, 0.03930599, 0.3940367], [1517279400000, 0.03930599, 0.039306, 0.03930599, 0.039306, 30.67366591], [1517279460000, 0.03930599, 0.039306, 0.03930599, 0.039306, 0.82222209], [1517279520000, 0.039306, 0.039306, 0.039306, 0.039306, 1.39513735], [1517279580000, 0.039306, 0.039306, 0.03929282, 0.03929282, 3.60641718], [1517279640000, 0.0393015, 0.039306, 0.03927701, 0.03927701, 2.32665153], [1517279700000, 0.0393, 0.039306, 0.0393, 0.039306, 25.92940323], [1517279760000, 0.039306, 0.039306, 0.039306, 0.039306, 0.12879537], [1517279820000, 0.039306, 0.039306, 0.0393, 0.039303, 3.63313595], [1517279880000, 0.039303, 0.039303, 0.0393, 0.039303, 1.73966531], [1517279940000, 0.0393, 0.039303, 0.0393, 0.039303, 15.93603432], [1517280000000, 0.039303, 0.039303, 0.039303, 0.039303, 1.0773772], [1517280060000, 0.039303, 0.039303, 0.039303, 0.039303, 0.97222756], [1517280120000, 0.039303, 0.039303, 0.03930299, 0.039303, 1.21843021], [1517280180000, 0.039303, 0.039303, 0.0393015, 0.0393015, 9.35958875], [1517280240000, 0.0393015, 0.039303, 0.03930001, 0.039303, 1.37526803], [1517280300000, 0.039303, 0.039306, 0.039303, 0.039306, 2.81747615], [1517280360000, 0.039306, 0.039306, 0.039306, 0.039306, 3.24684179], [1517280420000, 0.03930599, 0.039306, 0.03930562, 0.039306, 67.49339259], [1517280480000, 0.039306, 0.039306, 0.0393, 0.0393, 6.45477807], [1517280540000, 0.039306, 0.039306, 0.0393, 0.039306, 4.49415396], [1517280600000, 0.03929, 0.039306, 0.03929, 0.03930599, 20.5505349], [1517280660000, 0.039306, 0.039306, 0.039306, 0.039306, 5.0671057], [1517280720000, 0.039306, 0.039306, 0.039306, 0.039306, 2.31509549], [1517280840000, 0.039306, 0.039306, 0.039306, 0.039306, 0.03795276], [1517281020000, 0.03930599, 0.039306, 0.03930599, 0.039306, 0.026], [1517281080000, 0.03927701, 0.039306, 0.03927701, 0.039306, 30.34349322], [1517281140000, 0.03930599, 0.039306, 0.03927701, 0.039306, 2.76781472], [1517281200000, 0.039306, 0.039306, 0.039306, 0.039306, 0.04870878], [1517281260000, 0.039306, 0.039306, 0.03927701, 0.039306, 13.89329791], [1517281320000, 0.039306, 0.039306, 0.039306, 0.039306, 0.68799661], [1517281380000, 0.03930599, 0.03962431, 0.03927715, 0.03962431, 1.86802098], [1517281440000, 0.03962431, 0.03991892, 0.03962431, 0.03991892, 0.21202781], [1517281560000, 0.0393577, 0.03935802, 0.0393577, 0.03935802, 0.3473], [1517281620000, 0.03936007, 0.03962431, 0.03936007, 0.03962422, 2.33843441], [1517281680000, 0.03940013, 0.03940013, 0.03940013, 0.03940013, 1.08423913], [1517281740000, 0.0396243, 0.0396243, 0.03961, 0.03961, 0.42434367], [1517281800000, 0.03960999, 0.03961, 0.03960999, 0.03961, 0.27172753], [1517281860000, 0.03960989, 0.03961, 0.03960989, 0.03960989, 0.2339421], [1517281980000, 0.0392991, 0.03930002, 0.0392991, 0.03930002, 0.5085074], [1517282100000, 0.03960435, 0.03960436, 0.03960435, 0.03960436, 0.09464829], [1517282160000, 0.0396043, 0.03961, 0.039402, 0.039402, 2.97049066], [1517282220000, 0.039422, 0.039422, 0.039422, 0.039422, 0.18994108], [1517282280000, 0.03960998, 0.03960998, 0.03960998, 0.03960998, 0.07585046], [1517282400000, 0.03959997, 0.03959997, 0.03959997, 0.03959997, 0.09023369], [1517282460000, 0.039442, 0.039442, 0.039442, 0.039442, 3.06], [1517282520000, 0.03940301, 0.03940301, 0.03940301, 0.03940301, 5.10249313], [1517282580000, 0.039402, 0.039402, 0.039402, 0.039402, 0.59240271], [1517282640000, 0.039402, 0.039402, 0.03936202, 0.03936202, 1.85297883], [1517282700000, 0.03960994, 0.03962431, 0.03936242, 0.03936242, 1.89222728], [1517282760000, 0.03960995, 0.03960995, 0.03936282, 0.03936282, 5.20070012], [1517282820000, 0.03936292, 0.03936292, 0.03936292, 0.03936292, 0.02209497], [1517282880000, 0.03960994, 0.03977195, 0.03936203, 0.03936203, 5.14486982], [1517282940000, 0.03936217, 0.03936225, 0.03936217, 0.03936225, 1.27477802], [1517283000000, 0.03971651, 0.03971651, 0.03936225, 0.03969642, 1.85108562], [1517283060000, 0.03966649, 0.03966649, 0.03966622, 0.03966622, 0.1507183], [1517283240000, 0.039646, 0.03967642, 0.039646, 0.03967642, 2.62606189], [1517283480000, 0.03936221, 0.03936221, 0.03936201, 0.03936201, 1.21438765], [1517283540000, 0.03936201, 0.03936202, 0.03936201, 0.03936202, 0.72021361], [1517283600000, 0.03936202, 0.03936202, 0.039362, 0.039362, 12.59566513], [1517283660000, 0.039362, 0.039362, 0.03926401, 0.03926401, 9.01637207], [1517283720000, 0.03926402, 0.03926402, 0.03926402, 0.03926402, 0.07696202], [1517283780000, 0.03926402, 0.03926402, 0.03926401, 0.03926401, 1.61832185], [1517283840000, 0.03955359, 0.03961399, 0.03926403, 0.03926403, 0.53892329], [1517283900000, 0.03926409, 0.03926409, 0.03926409, 0.03926409, 0.10007025], [1517283960000, 0.03961184, 0.03961184, 0.03926401, 0.03941378, 10.44544615], [1517284020000, 0.03941378, 0.03941378, 0.03941378, 0.03941378, 0.18693734], [1517284080000, 0.03954275, 0.03954275, 0.03954275, 0.03954275, 0.08038008], [1517284140000, 0.03954274, 0.03954274, 0.03954274, 0.03954274, 0.34785779], [1517284200000, 0.03926402, 0.03926402, 0.03926402, 0.03926402, 0.1064823], [1517284260000, 0.03954249, 0.03954276, 0.03954249, 0.03954276, 2.61148657], [1517284320000, 0.0392644, 0.0392644, 0.0392644, 0.0392644, 0.09196817], [1517284440000, 0.03926419, 0.03926419, 0.03926419, 0.03926419, 0.1010711], [1517284500000, 0.03960284, 0.03961187, 0.03926436, 0.03926436, 0.77000473], [1517284560000, 0.03961187, 0.03961187, 0.03926445, 0.03926449, 0.79511572], [1517284620000, 0.03926437, 0.03961186, 0.03926437, 0.03926472, 2.00554195], [1517284680000, 0.0392643, 0.03961149, 0.0392643, 0.0392645, 0.8287302], [1517284740000, 0.03926458, 0.03961175, 0.0392643, 0.03961147, 8.07778506], [1517284800000, 0.0392644, 0.03967623, 0.0392644, 0.0392651, 4.31503785], [1517284860000, 0.03926515, 0.03967592, 0.03926515, 0.03967592, 0.98548252], [1517284920000, 0.03926614, 0.03926651, 0.03926614, 0.03926651, 0.15068311], [1517284980000, 0.03967511, 0.03967511, 0.03967511, 0.03967511, 0.67769135], [1517285040000, 0.03926924, 0.03967483, 0.03926922, 0.03967483, 0.79436522], [1517285100000, 0.03926988, 0.03967424, 0.03926988, 0.03967424, 1.94189651], [1517285160000, 0.03927021, 0.03962382, 0.03927019, 0.03962382, 0.9287577], [1517285220000, 0.03927036, 0.03961343, 0.03927034, 0.03927034, 4.62746129], [1517285280000, 0.03927034, 0.03927034, 0.03926429, 0.03927034, 1.83965403], [1517285340000, 0.03927034, 0.03927034, 0.0392643, 0.03927034, 2.98198958], [1517285400000, 0.0392643, 0.03927034, 0.0392643, 0.03927034, 0.70988112], [1517285460000, 0.03927033, 0.03927034, 0.03926429, 0.03926429, 2.05826651], [1517285520000, 0.03926429, 0.03927034, 0.03926429, 0.0392643, 1.22963698], [1517285580000, 0.03926429, 0.03926429, 0.03926429, 0.03926429, 0.35508737], [1517285640000, 0.03927034, 0.03927034, 0.03926429, 0.03926429, 1.97281576], [1517285700000, 0.03927033, 0.03927034, 0.03926429, 0.03927034, 10.38016958], [1517285760000, 0.03926429, 0.03927034, 0.03926429, 0.03927034, 1.283319], [1517285820000, 0.03927034, 0.03927034, 0.03926429, 0.03927034, 30.19514758], [1517285880000, 0.0392643, 0.03927034, 0.03926, 0.03926, 17.87027048], [1517285940000, 0.03927033, 0.03927034, 0.03927033, 0.03927034, 1.49407231], [1517286000000, 0.03926, 0.03952792, 0.03926, 0.03952792, 0.70109386], [1517286060000, 0.03926, 0.039522, 0.03926, 0.03951991, 1.37491897], [1517286120000, 0.03951783, 0.03951783, 0.03951783, 0.03951783, 0.36995618], [1517286180000, 0.03951727, 0.03951727, 0.03912, 0.03912471, 16.87520757], [1517286240000, 0.03949694, 0.03949694, 0.03912471, 0.03912471, 0.29993843], [1517286300000, 0.03948626, 0.03948626, 0.0391, 0.0391, 10.33740089], [1517286360000, 0.03910012, 0.03910015, 0.03910012, 0.03910015, 0.28207249], [1517286420000, 0.03912472, 0.03912473, 0.03912472, 0.03912473, 9.23442534], [1517286480000, 0.03912472, 0.03946393, 0.03912471, 0.03946393, 0.29069413], [1517286540000, 0.03912473, 0.03912473, 0.03912472, 0.03912472, 3.30448196], [1517286600000, 0.03912472, 0.03940305, 0.03912472, 0.03940286, 2.53459704], [1517286780000, 0.03912516, 0.0392881, 0.0390001, 0.0392881, 11.12600309], [1517286840000, 0.0392881, 0.0392881, 0.0392881, 0.0392881, 0.04310856], [1517286900000, 0.03928809, 0.0392881, 0.03928809, 0.03928809, 0.48512109], [1517286960000, 0.03928809, 0.03928809, 0.03908286, 0.03928809, 0.68895416], [1517287020000, 0.03928809, 0.03928809, 0.03928809, 0.03928809, 0.05641802], [1517287080000, 0.03928809, 0.03928809, 0.03928809, 0.03928809, 0.10263958], [1517287140000, 0.03928807, 0.0394026, 0.03908439, 0.0392881, 12.05273986], [1517287200000, 0.03928809, 0.03928809, 0.03928809, 0.03928809, 0.57468121], [1517287260000, 0.03928809, 0.03928809, 0.03928809, 0.03928809, 0.01867383], [1517287320000, 0.03909259, 0.03909259, 0.03909259, 0.03909259, 0.03263], [1517287380000, 0.03909259, 0.03909259, 0.03902404, 0.03902411, 9.03322806], [1517287440000, 0.03902415, 0.03902433, 0.03902404, 0.03902433, 9.03334366], [1517287500000, 0.03919, 0.03919, 0.03919, 0.03919, 0.97248305], [1517287560000, 0.03919, 0.03928791, 0.03919, 0.0392879, 7.08098114], [1517287620000, 0.03919, 0.03919, 0.03919, 0.03919, 0.27578535], [1517287680000, 0.03928785, 0.03928785, 0.03919, 0.03919, 3.80413931], [1517287740000, 0.03928785, 0.03928789, 0.03928785, 0.03928789, 1.9614146]]
\ No newline at end of file

From 096c69dc4f157558f3dd0d8798032722f5f16cb1 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 2 Oct 2019 03:27:17 +0300
Subject: [PATCH 0593/3421] Refactor Freqtradebot

---
 freqtrade/freqtradebot.py | 60 ++++++++++++++++++---------------------
 1 file changed, 27 insertions(+), 33 deletions(-)

diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
index 3f7eab27a..024e09c96 100644
--- a/freqtrade/freqtradebot.py
+++ b/freqtrade/freqtradebot.py
@@ -1,7 +1,6 @@
 """
 Freqtrade is the main module of this bot. It contains the class Freqtrade()
 """
-
 import copy
 import logging
 import traceback
@@ -135,12 +134,11 @@ class FreqtradeBot:
                                   self.strategy.informative_pairs())
 
         # First process current opened trades
-        for trade in trades:
-            self.process_maybe_execute_sell(trade)
+        self.process_maybe_execute_sells(trades)
 
         # Then looking for buy opportunities
         if len(trades) < self.config['max_open_trades']:
-            self.process_maybe_execute_buy()
+            self.process_maybe_execute_buys()
 
         if 'unfilledtimeout' in self.config:
             # Check and handle any timed out open orders
@@ -262,11 +260,10 @@ class FreqtradeBot:
         Checks pairs as long as the open trade count is below `max_open_trades`.
         :return: True if at least one trade has been created.
         """
-        interval = self.strategy.ticker_interval
         whitelist = copy.deepcopy(self.active_pair_whitelist)
 
         if not whitelist:
-            logger.warning("Whitelist is empty.")
+            logger.info("Active pair whitelist is empty.")
             return False
 
         # Remove currently opened and latest pairs from whitelist
@@ -276,7 +273,8 @@ class FreqtradeBot:
                 logger.debug('Ignoring %s in pair whitelist', trade.pair)
 
         if not whitelist:
-            logger.info("No currency pair in whitelist, but checking to sell open trades.")
+            logger.info("No currency pair in active pair whitelist, "
+                        "but checking to sell open trades.")
             return False
 
         buycount = 0
@@ -285,8 +283,10 @@ class FreqtradeBot:
             if self.strategy.is_pair_locked(_pair):
                 logger.info(f"Pair {_pair} is currently locked.")
                 continue
+
             (buy, sell) = self.strategy.get_signal(
-                _pair, interval, self.dataprovider.ohlcv(_pair, self.strategy.ticker_interval))
+                _pair, self.strategy.ticker_interval,
+                self.dataprovider.ohlcv(_pair, self.strategy.ticker_interval))
 
             if buy and not sell and len(Trade.get_open_trades()) < self.config['max_open_trades']:
                 stake_amount = self._get_trade_stake_amount(_pair)
@@ -431,10 +431,9 @@ class FreqtradeBot:
 
         return True
 
-    def process_maybe_execute_buy(self) -> None:
+    def process_maybe_execute_buys(self) -> None:
         """
-        Tries to execute a buy trade in a safe way
-        :return: True if executed
+        Tries to execute buy trades in a safe way
         """
         try:
             # Create entity and execute trade
@@ -443,33 +442,28 @@ class FreqtradeBot:
         except DependencyException as exception:
             logger.warning('Unable to create trade: %s', exception)
 
-    def process_maybe_execute_sell(self, trade: Trade) -> bool:
+    def process_maybe_execute_sells(self, trades: List[Any]) -> None:
         """
-        Tries to execute a sell trade
-        :return: True if executed
+        Tries to execute sell trades in a safe way
         """
-        try:
-            self.update_trade_state(trade)
+        for trade in trades:
+            try:
+                self.update_trade_state(trade)
 
-            if self.strategy.order_types.get('stoploss_on_exchange') and trade.is_open:
-                result = self.handle_stoploss_on_exchange(trade)
-                if result:
-                    self.wallets.update()
-                    return result
+                if trade.is_open:
+                    result = False
+                    if self.strategy.order_types.get('stoploss_on_exchange'):
+                        result = self.handle_stoploss_on_exchange(trade)
+                    elif trade.open_order_id is None:
+                        # Check if we can sell our current pair
+                        result = self.handle_trade(trade)
 
-            if trade.is_open and trade.open_order_id is None:
-                # Check if we can sell our current pair
-                result = self.handle_trade(trade)
+                    # Updating wallets if any trade occured
+                    if result:
+                        self.wallets.update()
 
-                # Updating wallets if any trade occured
-                if result:
-                    self.wallets.update()
-
-                return result
-
-        except DependencyException as exception:
-            logger.warning('Unable to sell trade: %s', exception)
-        return False
+            except DependencyException as exception:
+                logger.warning('Unable to sell trade: %s', exception)
 
     def get_real_amount(self, trade: Trade, order: Dict) -> float:
         """

From 15aae8a58c78b7a70719f0747c7e49d418d2b219 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 2 Oct 2019 03:27:42 +0300
Subject: [PATCH 0594/3421] Tests adjusted

---
 tests/test_freqtradebot.py | 38 ++++++++++++++++++++++----------------
 1 file changed, 22 insertions(+), 16 deletions(-)

diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index ee28f2e58..5fa481604 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -655,7 +655,8 @@ def test_create_trades_no_pairs_let(default_conf, ticker, limit_buy_order, fee,
 
     assert freqtrade.create_trades()
     assert not freqtrade.create_trades()
-    assert log_has("No currency pair in whitelist, but checking to sell open trades.", caplog)
+    assert log_has("No currency pair in active pair whitelist, "
+                   "but checking to sell open trades.", caplog)
 
 
 def test_create_trades_no_pairs_in_whitelist(default_conf, ticker, limit_buy_order, fee,
@@ -674,7 +675,7 @@ def test_create_trades_no_pairs_in_whitelist(default_conf, ticker, limit_buy_ord
     patch_get_signal(freqtrade)
 
     assert not freqtrade.create_trades()
-    assert log_has("Whitelist is empty.", caplog)
+    assert log_has("Active pair whitelist is empty.", caplog)
 
 
 def test_create_trades_no_signal(default_conf, fee, mocker) -> None:
@@ -1057,8 +1058,9 @@ def test_add_stoploss_on_exchange(mocker, default_conf, limit_buy_order) -> None
     trade.open_order_id = None
     trade.stoploss_order_id = None
     trade.is_open = True
+    trades = [trade]
 
-    freqtrade.process_maybe_execute_sell(trade)
+    freqtrade.process_maybe_execute_sells(trades)
     assert trade.stoploss_order_id == '13434334'
     assert stoploss_limit.call_count == 1
     assert trade.is_open is True
@@ -1518,26 +1520,26 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog,
                                                 stop_price=0.00002344 * 0.99)
 
 
-def test_process_maybe_execute_buy(mocker, default_conf, caplog) -> None:
+def test_process_maybe_execute_buys(mocker, default_conf, caplog) -> None:
     freqtrade = get_patched_freqtradebot(mocker, default_conf)
 
     mocker.patch('freqtrade.freqtradebot.FreqtradeBot.create_trades', MagicMock(return_value=False))
-    freqtrade.process_maybe_execute_buy()
+    freqtrade.process_maybe_execute_buys()
     assert log_has('Found no buy signals for whitelisted currencies. Trying again...', caplog)
 
 
-def test_process_maybe_execute_buy_exception(mocker, default_conf, caplog) -> None:
+def test_process_maybe_execute_buys_exception(mocker, default_conf, caplog) -> None:
     freqtrade = get_patched_freqtradebot(mocker, default_conf)
 
     mocker.patch(
         'freqtrade.freqtradebot.FreqtradeBot.create_trades',
         MagicMock(side_effect=DependencyException)
     )
-    freqtrade.process_maybe_execute_buy()
+    freqtrade.process_maybe_execute_buys()
     assert log_has('Unable to create trade: ', caplog)
 
 
-def test_process_maybe_execute_sell(mocker, default_conf, limit_buy_order, caplog) -> None:
+def test_process_maybe_execute_sells(mocker, default_conf, limit_buy_order, caplog) -> None:
     freqtrade = get_patched_freqtradebot(mocker, default_conf)
 
     mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_trade', MagicMock(return_value=True))
@@ -1549,7 +1551,8 @@ def test_process_maybe_execute_sell(mocker, default_conf, limit_buy_order, caplo
     trade = MagicMock()
     trade.open_order_id = '123'
     trade.open_fee = 0.001
-    assert not freqtrade.process_maybe_execute_sell(trade)
+    trades = [trade]
+    assert not freqtrade.process_maybe_execute_sells(trades)
     # Test amount not modified by fee-logic
     assert not log_has(
         'Applying fee to amount for Trade {} from 90.99181073 to 90.81'.format(trade), caplog
@@ -1557,24 +1560,25 @@ def test_process_maybe_execute_sell(mocker, default_conf, limit_buy_order, caplo
 
     mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_real_amount', return_value=90.81)
     # test amount modified by fee-logic
-    assert not freqtrade.process_maybe_execute_sell(trade)
+    assert not freqtrade.process_maybe_execute_sells(trades)
 
 
-def test_process_maybe_execute_sell_exception(mocker, default_conf,
-                                              limit_buy_order, caplog) -> None:
+def test_process_maybe_execute_sells_exception(mocker, default_conf,
+                                               limit_buy_order, caplog) -> None:
     freqtrade = get_patched_freqtradebot(mocker, default_conf)
     mocker.patch('freqtrade.exchange.Exchange.get_order', return_value=limit_buy_order)
 
     trade = MagicMock()
     trade.open_order_id = '123'
     trade.open_fee = 0.001
+    trades = [trade]
 
     # Test raise of DependencyException exception
     mocker.patch(
         'freqtrade.freqtradebot.FreqtradeBot.update_trade_state',
         side_effect=DependencyException()
     )
-    freqtrade.process_maybe_execute_sell(trade)
+    freqtrade.process_maybe_execute_sells(trades)
     assert log_has('Unable to sell trade: ', caplog)
 
 
@@ -2448,8 +2452,9 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf,
 
     trade = Trade.query.first()
     assert trade
+    trades = [trade]
 
-    freqtrade.process_maybe_execute_sell(trade)
+    freqtrade.process_maybe_execute_sells(trades)
 
     # Increase the price and sell it
     mocker.patch.multiple(
@@ -2498,7 +2503,8 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf,
     # Create some test data
     freqtrade.create_trades()
     trade = Trade.query.first()
-    freqtrade.process_maybe_execute_sell(trade)
+    trades = [trade]
+    freqtrade.process_maybe_execute_sells(trades)
     assert trade
     assert trade.stoploss_order_id == '123'
     assert trade.open_order_id is None
@@ -2526,7 +2532,7 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf,
     })
     mocker.patch('freqtrade.exchange.Exchange.get_order', stoploss_limit_executed)
 
-    freqtrade.process_maybe_execute_sell(trade)
+    freqtrade.process_maybe_execute_sells(trades)
     assert trade.stoploss_order_id is None
     assert trade.is_open is False
     assert trade.sell_reason == SellType.STOPLOSS_ON_EXCHANGE.value

From 89729aefe8e148490a595e6f0f5d1d573fcdee08 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 2 Oct 2019 18:38:00 +0300
Subject: [PATCH 0595/3421] Fix and improve process_maybe_execute_sells()

---
 freqtrade/freqtradebot.py | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
index 024e09c96..4fb0ce2d7 100644
--- a/freqtrade/freqtradebot.py
+++ b/freqtrade/freqtradebot.py
@@ -446,25 +446,26 @@ class FreqtradeBot:
         """
         Tries to execute sell trades in a safe way
         """
+        result = False
         for trade in trades:
             try:
                 self.update_trade_state(trade)
 
-                if trade.is_open:
-                    result = False
-                    if self.strategy.order_types.get('stoploss_on_exchange'):
-                        result = self.handle_stoploss_on_exchange(trade)
-                    elif trade.open_order_id is None:
-                        # Check if we can sell our current pair
-                        result = self.handle_trade(trade)
-
-                    # Updating wallets if any trade occured
-                    if result:
-                        self.wallets.update()
+                if (self.strategy.order_types.get('stoploss_on_exchange') and
+                        self.handle_stoploss_on_exchange(trade)):
+                    result = True
+                    continue
+                # Check if we can sell our current pair
+                if trade.open_order_id is None and self.handle_trade(trade):
+                    result = True
 
             except DependencyException as exception:
                 logger.warning('Unable to sell trade: %s', exception)
 
+        # Updating wallets if any trade occured
+        if result:
+            self.wallets.update()
+
     def get_real_amount(self, trade: Trade, order: Dict) -> float:
         """
         Get real amount for the trade
@@ -569,7 +570,7 @@ class FreqtradeBot:
         :return: True if trade has been sold, False otherwise
         """
         if not trade.is_open:
-            raise ValueError(f'Attempt to handle closed trade: {trade}')
+            raise DependencyException(f'Attempt to handle closed trade: {trade}')
 
         logger.debug('Handling %s ...', trade)
 

From 4b29c4cdbf222dc9abd3b63f9a632226fede4a37 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 2 Oct 2019 19:08:49 +0300
Subject: [PATCH 0596/3421] Test for handling closed trade adjusted

---
 tests/test_freqtradebot.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index 5fa481604..eb854e56b 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -1915,7 +1915,7 @@ def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order,
     trade.update(limit_sell_order)
     assert trade.is_open is False
 
-    with pytest.raises(ValueError, match=r'.*closed trade.*'):
+    with pytest.raises(DependencyException, match=r'.*closed trade.*'):
         freqtrade.handle_trade(trade)
 
 

From 3ac5b918996cafbf0dfe63531c8fe361d40d4875 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 3 Oct 2019 02:58:45 +0300
Subject: [PATCH 0597/3421] Add market() method to dataprovider

---
 freqtrade/data/dataprovider.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py
index 7d5e4540b..b564dbec8 100644
--- a/freqtrade/data/dataprovider.py
+++ b/freqtrade/data/dataprovider.py
@@ -85,6 +85,14 @@ class DataProvider:
             logger.warning(f"No data found for ({pair}, {ticker_interval}).")
         return data
 
+    def market(self, pair: str):
+        """
+        Return market data for the pair
+        :param pair: Pair to get the data for
+        :return: Market data dict from ccxt or None if market info is not available for the pair
+        """
+        return self._exchange.markets.get(pair)
+
     def ticker(self, pair: str):
         """
         Return last ticker data

From 9ee7e28ef8d98cbbb3d3b827089d45d80cc6bb64 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 3 Oct 2019 06:23:58 +0200
Subject: [PATCH 0598/3421] Clean up some mocks

---
 tests/test_freqtradebot.py | 28 +++++++++++++---------------
 1 file changed, 13 insertions(+), 15 deletions(-)

diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index eb854e56b..18fd229eb 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -2422,13 +2422,6 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf,
     default_conf['exchange']['name'] = 'binance'
     rpc_mock = patch_RPCManager(mocker)
     patch_exchange(mocker)
-    mocker.patch.multiple(
-        'freqtrade.exchange.Exchange',
-        get_ticker=ticker,
-        get_fee=fee,
-        markets=PropertyMock(return_value=markets)
-    )
-
     stoploss_limit = MagicMock(return_value={
         'id': 123,
         'info': {
@@ -2437,11 +2430,16 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf,
     })
 
     cancel_order = MagicMock(return_value=True)
-
-    mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y)
-    mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y)
-    mocker.patch('freqtrade.exchange.Exchange.stoploss_limit', stoploss_limit)
-    mocker.patch('freqtrade.exchange.Exchange.cancel_order', cancel_order)
+    mocker.patch.multiple(
+        'freqtrade.exchange.Exchange',
+        get_ticker=ticker,
+        get_fee=fee,
+        markets=PropertyMock(return_value=markets),
+        symbol_amount_prec=lambda s, x, y: y,
+        symbol_price_prec=lambda s, x, y: y,
+        stoploss_limit=stoploss_limit,
+        cancel_order=cancel_order,
+    )
 
     freqtrade = FreqtradeBot(default_conf)
     freqtrade.strategy.order_types['stoploss_on_exchange'] = True
@@ -2482,7 +2480,9 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf,
         'freqtrade.exchange.Exchange',
         get_ticker=ticker,
         get_fee=fee,
-        markets=PropertyMock(return_value=markets)
+        markets=PropertyMock(return_value=markets),
+        symbol_amount_prec=lambda s, x, y: y,
+        symbol_price_prec=lambda s, x, y: y,
     )
 
     stoploss_limit = MagicMock(return_value={
@@ -2492,8 +2492,6 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf,
         }
     })
 
-    mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y)
-    mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y)
     mocker.patch('freqtrade.exchange.Binance.stoploss_limit', stoploss_limit)
 
     freqtrade = FreqtradeBot(default_conf)

From 1f4e5b17b74e0aafb6c8179907caa8a25f2f45fb Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 3 Oct 2019 06:37:25 +0200
Subject: [PATCH 0599/3421] Add basic test for execute sells_multiple logic

---
 tests/test_freqtradebot.py | 44 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index 18fd229eb..128411d96 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -2537,6 +2537,50 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf,
     assert rpc_mock.call_count == 2
 
 
+def test_may_execute_sell_stoploss_on_exchange_multi(default_conf,
+                                                     ticker, fee,
+                                                     limit_buy_order,
+                                                     markets, mocker) -> None:
+    default_conf['max_open_trades'] = 3
+    default_conf['exchange']['name'] = 'binance'
+    patch_RPCManager(mocker)
+    patch_exchange(mocker)
+    mocker.patch.multiple(
+        'freqtrade.exchange.Exchange',
+        get_ticker=ticker,
+        get_fee=fee,
+        markets=PropertyMock(return_value=markets),
+        symbol_amount_prec=lambda s, x, y: y,
+        symbol_price_prec=lambda s, x, y: y,
+    )
+    # Sell first trade
+    stoploss_mock = MagicMock(side_effect=[True, False, False])
+
+    # Sell 3rd trade (not called for the first trade)
+    handle_trade_mock = MagicMock(side_effect=[False, True])
+    wallets_mock = MagicMock()
+    mocker.patch.multiple(
+        'freqtrade.freqtradebot.FreqtradeBot',
+        handle_stoploss_on_exchange=stoploss_mock,
+        handle_trade=handle_trade_mock,
+    )
+    mocker.patch("freqtrade.wallets.Wallets.update", wallets_mock)
+
+    freqtrade = FreqtradeBot(default_conf)
+    freqtrade.strategy.order_types['stoploss_on_exchange'] = True
+    patch_get_signal(freqtrade)
+
+    # Create some test data
+    freqtrade.create_trades()
+    wallets_mock.reset_mock()
+
+    trades = Trade.query.all()
+
+    freqtrade.process_maybe_execute_sells(trades)
+    assert stoploss_mock.call_count == 3
+    assert handle_trade_mock.call_count == 2
+    assert wallets_mock.call_count == 1
+
 def test_execute_sell_market_order(default_conf, ticker, fee,
                                    ticker_sell_up, markets, mocker) -> None:
     rpc_mock = patch_RPCManager(mocker)

From 38f184e50de65485a7a058a73cf1fca2d8865719 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 3 Oct 2019 06:54:15 +0200
Subject: [PATCH 0600/3421] Update test to not mock stoploss_on_exchange

---
 tests/test_freqtradebot.py | 54 ++++++++++++++++++++++++++++++++++----
 1 file changed, 49 insertions(+), 5 deletions(-)

diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index 128411d96..d60d19937 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -2545,6 +2545,39 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf,
     default_conf['exchange']['name'] = 'binance'
     patch_RPCManager(mocker)
     patch_exchange(mocker)
+
+    stoploss_limit = {
+        'id': 123,
+        'info': {
+            'foo': 'bar'
+        }
+    }
+    stoploss_order_open = {
+        "id": "123",
+        "timestamp": 1542707426845,
+        "datetime": "2018-11-20T09:50:26.845Z",
+        "lastTradeTimestamp": None,
+        "symbol": "BTC/USDT",
+        "type": "stop_loss_limit",
+        "side": "sell",
+        "price": 1.08801,
+        "amount": 90.99181074,
+        "cost": 0.0,
+        "average": 0.0,
+        "filled": 0.0,
+        "remaining": 0.0,
+        "status": "open",
+        "fee": None,
+        "trades": None
+    }
+    stoploss_order_closed = stoploss_order_open.copy()
+    stoploss_order_closed['status'] = 'closed'
+    # Sell first trade based on stoploss, keep 2nd and 3rd trade open
+    stoploss_order_mock = MagicMock(
+        side_effect=[stoploss_order_closed, stoploss_order_open, stoploss_order_open])
+    create_sl_mock = MagicMock(return_value=True)
+
+    mocker.patch('freqtrade.exchange.Binance.stoploss_limit', stoploss_limit)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
         get_ticker=ticker,
@@ -2552,17 +2585,17 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf,
         markets=PropertyMock(return_value=markets),
         symbol_amount_prec=lambda s, x, y: y,
         symbol_price_prec=lambda s, x, y: y,
+        get_order=stoploss_order_mock,
     )
-    # Sell first trade
-    stoploss_mock = MagicMock(side_effect=[True, False, False])
-
     # Sell 3rd trade (not called for the first trade)
     handle_trade_mock = MagicMock(side_effect=[False, True])
     wallets_mock = MagicMock()
     mocker.patch.multiple(
         'freqtrade.freqtradebot.FreqtradeBot',
-        handle_stoploss_on_exchange=stoploss_mock,
         handle_trade=handle_trade_mock,
+        create_stoploss_order=create_sl_mock,
+        update_trade_state=MagicMock(),
+        _notify_sell=MagicMock(),
     )
     mocker.patch("freqtrade.wallets.Wallets.update", wallets_mock)
 
@@ -2575,12 +2608,23 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf,
     wallets_mock.reset_mock()
 
     trades = Trade.query.all()
+    # Make sure stoploss-order is open and trade is bought (since we mock update_trade_state)
+    for trade in trades:
+        trade.stoploss_order_id = 3
+        trade.open_order_id = None
 
     freqtrade.process_maybe_execute_sells(trades)
-    assert stoploss_mock.call_count == 3
     assert handle_trade_mock.call_count == 2
     assert wallets_mock.call_count == 1
 
+    trade = trades[0]
+    assert trade.sell_reason == SellType.STOPLOSS_ON_EXCHANGE.value
+    assert not trade.is_open
+    trade = trades[1]
+    assert not trade.sell_reason
+    assert trade.is_open
+
+
 def test_execute_sell_market_order(default_conf, ticker, fee,
                                    ticker_sell_up, markets, mocker) -> None:
     rpc_mock = patch_RPCManager(mocker)

From f95b0ccdab3e5c40e795e9f5c4ef64149838238a Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Fri, 4 Oct 2019 02:01:44 +0300
Subject: [PATCH 0601/3421] Tests added

---
 tests/test_utils.py | 74 ++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 73 insertions(+), 1 deletion(-)

diff --git a/tests/test_utils.py b/tests/test_utils.py
index c99044610..6168706a2 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -7,7 +7,8 @@ import pytest
 from freqtrade import OperationalException
 from freqtrade.state import RunMode
 from freqtrade.utils import (setup_utils_configuration, start_create_userdir,
-                             start_download_data, start_list_exchanges)
+                             start_download_data, start_list_exchanges,
+                             start_list_timeframes)
 from tests.conftest import get_args, log_has, patch_exchange
 
 
@@ -48,6 +49,77 @@ def test_list_exchanges(capsys):
     assert re.search(r"^bittrex$", captured.out, re.MULTILINE)
 
 
+def test_list_timeframes(capsys):
+
+    args = [
+        "list-timeframes",
+    ]
+    pargs = get_args(args)
+    pargs['config'] = None
+    with pytest.raises(OperationalException,
+                       match=r"This command requires a configured exchange.*"):
+        start_list_timeframes(pargs)
+
+    # Test with --config config.json.example
+    args = [
+        '--config', 'config.json.example',
+        "list-timeframes",
+    ]
+    start_list_timeframes(get_args(args))
+    captured = capsys.readouterr()
+    assert re.match("Timeframes available for the exchange `bittrex`: "
+                    "1m, 5m, 30m, 1h, 1d",
+                    captured.out)
+
+    # Test with --exchange bittrex
+    args = [
+        "list-timeframes",
+        "--exchange", "bittrex",
+    ]
+    start_list_timeframes(get_args(args))
+    captured = capsys.readouterr()
+    assert re.match("Timeframes available for the exchange `bittrex`: "
+                    "1m, 5m, 30m, 1h, 1d",
+                    captured.out)
+
+    # Test with --exchange binance
+    args = [
+        "list-timeframes",
+        "--exchange", "binance",
+    ]
+    start_list_timeframes(get_args(args))
+    captured = capsys.readouterr()
+    assert re.match("Timeframes available for the exchange `binance`: "
+                    "1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M",
+                    captured.out)
+
+    # Test with --one-column
+    args = [
+        '--config', 'config.json.example',
+        "list-timeframes",
+        "--one-column",
+    ]
+    start_list_timeframes(get_args(args))
+    captured = capsys.readouterr()
+    assert re.search(r"^1m$", captured.out, re.MULTILINE)
+    assert re.search(r"^5m$", captured.out, re.MULTILINE)
+    assert re.search(r"^1h$", captured.out, re.MULTILINE)
+    assert re.search(r"^1d$", captured.out, re.MULTILINE)
+
+    # Test with --exchange binance --one-column
+    args = [
+        "list-timeframes",
+        "--exchange", "binance",
+        "--one-column",
+    ]
+    start_list_timeframes(get_args(args))
+    captured = capsys.readouterr()
+    assert re.search(r"^1m$", captured.out, re.MULTILINE)
+    assert re.search(r"^5m$", captured.out, re.MULTILINE)
+    assert re.search(r"^1h$", captured.out, re.MULTILINE)
+    assert re.search(r"^1d$", captured.out, re.MULTILINE)
+
+
 def test_create_datadir_failed(caplog):
 
     args = [

From 75252b6251ac766a14f6f2e8b591383c09dc8c16 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Fri, 4 Oct 2019 02:32:48 +0300
Subject: [PATCH 0602/3421] Docstrings improved

---
 freqtrade/freqtradebot.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
index 4fb0ce2d7..2776b56c2 100644
--- a/freqtrade/freqtradebot.py
+++ b/freqtrade/freqtradebot.py
@@ -433,7 +433,7 @@ class FreqtradeBot:
 
     def process_maybe_execute_buys(self) -> None:
         """
-        Tries to execute buy trades in a safe way
+        Tries to execute buy orders for trades in a safe way
         """
         try:
             # Create entity and execute trade
@@ -444,7 +444,7 @@ class FreqtradeBot:
 
     def process_maybe_execute_sells(self, trades: List[Any]) -> None:
         """
-        Tries to execute sell trades in a safe way
+        Tries to execute sell orders for trades in a safe way
         """
         result = False
         for trade in trades:

From 95299d94c4c824eed2c3aca6fc370a8b85633901 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 4 Oct 2019 06:39:24 +0200
Subject: [PATCH 0603/3421] Remove unused test line

---
 tests/strategy/test_strategy.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py
index 82db30d47..7445e3ca7 100644
--- a/tests/strategy/test_strategy.py
+++ b/tests/strategy/test_strategy.py
@@ -70,8 +70,7 @@ def test_load_not_found_strategy(default_conf):
     with pytest.raises(OperationalException,
                        match=r"Impossible to load Strategy 'NotFoundStrategy'. "
                              r"This class does not exist or contains Python code errors."):
-        strategy = StrategyResolver(default_conf)
-        strategy._load_strategy(strategy_name='NotFoundStrategy', config=default_conf)
+        StrategyResolver(default_conf)
 
 
 def test_load_strategy_noname(default_conf):

From 78381e9e7be618c89d1681f31f48df8b0918be29 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 4 Oct 2019 14:47:37 +0200
Subject: [PATCH 0604/3421] Improve test to test full sell cycle

---
 tests/test_freqtradebot.py | 41 ++++++++++++++++++++++++++++----------
 1 file changed, 31 insertions(+), 10 deletions(-)

diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index d60d19937..8c6bca653 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -2541,6 +2541,13 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf,
                                                      ticker, fee,
                                                      limit_buy_order,
                                                      markets, mocker) -> None:
+    """
+    Tests workflow of selling stoploss_on_exchange.
+    Sells
+    * first trade as stoploss
+    * 2nd trade is kept
+    * 3rd trade is sold via sell-signal
+    """
     default_conf['max_open_trades'] = 3
     default_conf['exchange']['name'] = 'binance'
     patch_RPCManager(mocker)
@@ -2548,9 +2555,7 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf,
 
     stoploss_limit = {
         'id': 123,
-        'info': {
-            'foo': 'bar'
-        }
+        'info': {}
     }
     stoploss_order_open = {
         "id": "123",
@@ -2575,8 +2580,12 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf,
     # Sell first trade based on stoploss, keep 2nd and 3rd trade open
     stoploss_order_mock = MagicMock(
         side_effect=[stoploss_order_closed, stoploss_order_open, stoploss_order_open])
-    create_sl_mock = MagicMock(return_value=True)
-
+    # Sell 3rd trade (not called for the first trade)
+    should_sell_mock = MagicMock(side_effect=[
+        SellCheckTuple(sell_flag=False, sell_type=SellType.NONE),
+        SellCheckTuple(sell_flag=True, sell_type=SellType.SELL_SIGNAL)]
+    )
+    cancel_order_mock = MagicMock()
     mocker.patch('freqtrade.exchange.Binance.stoploss_limit', stoploss_limit)
     mocker.patch.multiple(
         'freqtrade.exchange.Exchange',
@@ -2586,26 +2595,29 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf,
         symbol_amount_prec=lambda s, x, y: y,
         symbol_price_prec=lambda s, x, y: y,
         get_order=stoploss_order_mock,
+        cancel_order=cancel_order_mock,
     )
-    # Sell 3rd trade (not called for the first trade)
-    handle_trade_mock = MagicMock(side_effect=[False, True])
+
     wallets_mock = MagicMock()
     mocker.patch.multiple(
         'freqtrade.freqtradebot.FreqtradeBot',
-        handle_trade=handle_trade_mock,
-        create_stoploss_order=create_sl_mock,
+        create_stoploss_order=MagicMock(return_value=True),
         update_trade_state=MagicMock(),
         _notify_sell=MagicMock(),
     )
+    mocker.patch("freqtrade.strategy.interface.IStrategy.should_sell", should_sell_mock)
     mocker.patch("freqtrade.wallets.Wallets.update", wallets_mock)
 
     freqtrade = FreqtradeBot(default_conf)
     freqtrade.strategy.order_types['stoploss_on_exchange'] = True
+    # Switch ordertype to market to close trade immediately
+    freqtrade.strategy.order_types['sell'] = 'market'
     patch_get_signal(freqtrade)
 
     # Create some test data
     freqtrade.create_trades()
     wallets_mock.reset_mock()
+    Trade.session = MagicMock()
 
     trades = Trade.query.all()
     # Make sure stoploss-order is open and trade is bought (since we mock update_trade_state)
@@ -2614,16 +2626,25 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf,
         trade.open_order_id = None
 
     freqtrade.process_maybe_execute_sells(trades)
-    assert handle_trade_mock.call_count == 2
+    assert should_sell_mock.call_count == 2
+
+    # Only order for 3rd trade needs to be cancelled
+    assert cancel_order_mock.call_count == 1
+    # Wallets should only be called once per sell cycle
     assert wallets_mock.call_count == 1
 
     trade = trades[0]
     assert trade.sell_reason == SellType.STOPLOSS_ON_EXCHANGE.value
     assert not trade.is_open
+
     trade = trades[1]
     assert not trade.sell_reason
     assert trade.is_open
 
+    trade = trades[2]
+    assert trade.sell_reason == SellType.SELL_SIGNAL.value
+    assert not trade.is_open
+
 
 def test_execute_sell_market_order(default_conf, ticker, fee,
                                    ticker_sell_up, markets, mocker) -> None:

From 73e9cbdea1af3341327970162e4c46af430a3ecd Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 5 Oct 2019 09:56:01 +0200
Subject: [PATCH 0605/3421] Fix #2338

---
 docs/backtesting.md | 2 +-
 docs/plotting.md    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/backtesting.md b/docs/backtesting.md
index 75aba6c73..c5d223c67 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -39,7 +39,7 @@ Assume you downloaded the history data from the Bittrex exchange and kept it in
 You can then use this data for backtesting as follows:
 
 ```bash
-freqtrade backtesting --datadir user_data/data/bittrex-20180101
+freqtrade --datadir user_data/data/bittrex-20180101 backtesting
 ```
 
 #### With a (custom) strategy file
diff --git a/docs/plotting.md b/docs/plotting.md
index 4deb6db12..89404f8b1 100644
--- a/docs/plotting.md
+++ b/docs/plotting.md
@@ -179,5 +179,5 @@ freqtrade plot-profit  -p LTC/BTC --db-url sqlite:///tradesv3.sqlite --trade-sou
 ```
 
 ``` bash
-freqtrade plot-profit --datadir user_data/data/binance_save/ -p LTC/BTC
+freqtrade --datadir user_data/data/binance_save/ plot-profit -p LTC/BTC
 ```

From 00ab6f572a9b249f394ad8a4b887ba56731b72fd Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 5 Oct 2019 10:01:38 +0200
Subject: [PATCH 0606/3421] Cleanup legacy strategy

 it's just a test and does not need the commented elements
---
 tests/strategy/legacy_strategy.py | 158 +-----------------------------
 1 file changed, 4 insertions(+), 154 deletions(-)

diff --git a/tests/strategy/legacy_strategy.py b/tests/strategy/legacy_strategy.py
index af1b617a6..89ce3f8cb 100644
--- a/tests/strategy/legacy_strategy.py
+++ b/tests/strategy/legacy_strategy.py
@@ -6,8 +6,6 @@ from pandas import DataFrame
 
 # Add your lib to import here
 import talib.abstract as ta
-import freqtrade.vendor.qtpylib.indicators as qtpylib
-import numpy  # noqa
 
 
 # This class is a sample. Feel free to customize it.
@@ -17,7 +15,6 @@ class TestStrategyLegacy(IStrategy):
     removed in a future update.
     Please do not use this as a template, but refer to user_data/strategy/sample_strategy.py
     for a uptodate version of this template.
-
     """
 
     # Minimal ROI designed for the strategy.
@@ -51,156 +48,9 @@ class TestStrategyLegacy(IStrategy):
         # ADX
         dataframe['adx'] = ta.ADX(dataframe)
 
-        """
-        # Awesome oscillator
-        dataframe['ao'] = qtpylib.awesome_oscillator(dataframe)
-
-        # Commodity Channel Index: values Oversold:<-100, Overbought:>100
-        dataframe['cci'] = ta.CCI(dataframe)
-
-        # MACD
-        macd = ta.MACD(dataframe)
-        dataframe['macd'] = macd['macd']
-        dataframe['macdsignal'] = macd['macdsignal']
-        dataframe['macdhist'] = macd['macdhist']
-
-        # MFI
-        dataframe['mfi'] = ta.MFI(dataframe)
-
-        # Minus Directional Indicator / Movement
-        dataframe['minus_dm'] = ta.MINUS_DM(dataframe)
-        dataframe['minus_di'] = ta.MINUS_DI(dataframe)
-
-        # Plus Directional Indicator / Movement
-        dataframe['plus_dm'] = ta.PLUS_DM(dataframe)
-        dataframe['plus_di'] = ta.PLUS_DI(dataframe)
-        dataframe['minus_di'] = ta.MINUS_DI(dataframe)
-
-        # ROC
-        dataframe['roc'] = ta.ROC(dataframe)
-
-        # RSI
-        dataframe['rsi'] = ta.RSI(dataframe)
-
-        # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy)
-        rsi = 0.1 * (dataframe['rsi'] - 50)
-        dataframe['fisher_rsi'] = (numpy.exp(2 * rsi) - 1) / (numpy.exp(2 * rsi) + 1)
-
-        # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy)
-        dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1)
-
-        # Stoch
-        stoch = ta.STOCH(dataframe)
-        dataframe['slowd'] = stoch['slowd']
-        dataframe['slowk'] = stoch['slowk']
-
-        # Stoch fast
-        stoch_fast = ta.STOCHF(dataframe)
-        dataframe['fastd'] = stoch_fast['fastd']
-        dataframe['fastk'] = stoch_fast['fastk']
-
-        # Stoch RSI
-        stoch_rsi = ta.STOCHRSI(dataframe)
-        dataframe['fastd_rsi'] = stoch_rsi['fastd']
-        dataframe['fastk_rsi'] = stoch_rsi['fastk']
-        """
-
-        # Overlap Studies
-        # ------------------------------------
-
-        # Bollinger bands
-        bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2)
-        dataframe['bb_lowerband'] = bollinger['lower']
-        dataframe['bb_middleband'] = bollinger['mid']
-        dataframe['bb_upperband'] = bollinger['upper']
-
-        """
-        # EMA - Exponential Moving Average
-        dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3)
-        dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5)
-        dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10)
-        dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50)
-        dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100)
-
-        # SAR Parabol
-        dataframe['sar'] = ta.SAR(dataframe)
-
-        # SMA - Simple Moving Average
-        dataframe['sma'] = ta.SMA(dataframe, timeperiod=40)
-        """
-
         # TEMA - Triple Exponential Moving Average
         dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9)
 
-        # Cycle Indicator
-        # ------------------------------------
-        # Hilbert Transform Indicator - SineWave
-        hilbert = ta.HT_SINE(dataframe)
-        dataframe['htsine'] = hilbert['sine']
-        dataframe['htleadsine'] = hilbert['leadsine']
-
-        # Pattern Recognition - Bullish candlestick patterns
-        # ------------------------------------
-        """
-        # Hammer: values [0, 100]
-        dataframe['CDLHAMMER'] = ta.CDLHAMMER(dataframe)
-        # Inverted Hammer: values [0, 100]
-        dataframe['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(dataframe)
-        # Dragonfly Doji: values [0, 100]
-        dataframe['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(dataframe)
-        # Piercing Line: values [0, 100]
-        dataframe['CDLPIERCING'] = ta.CDLPIERCING(dataframe) # values [0, 100]
-        # Morningstar: values [0, 100]
-        dataframe['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(dataframe) # values [0, 100]
-        # Three White Soldiers: values [0, 100]
-        dataframe['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(dataframe) # values [0, 100]
-        """
-
-        # Pattern Recognition - Bearish candlestick patterns
-        # ------------------------------------
-        """
-        # Hanging Man: values [0, 100]
-        dataframe['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(dataframe)
-        # Shooting Star: values [0, 100]
-        dataframe['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(dataframe)
-        # Gravestone Doji: values [0, 100]
-        dataframe['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(dataframe)
-        # Dark Cloud Cover: values [0, 100]
-        dataframe['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(dataframe)
-        # Evening Doji Star: values [0, 100]
-        dataframe['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(dataframe)
-        # Evening Star: values [0, 100]
-        dataframe['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(dataframe)
-        """
-
-        # Pattern Recognition - Bullish/Bearish candlestick patterns
-        # ------------------------------------
-        """
-        # Three Line Strike: values [0, -100, 100]
-        dataframe['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(dataframe)
-        # Spinning Top: values [0, -100, 100]
-        dataframe['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(dataframe) # values [0, -100, 100]
-        # Engulfing: values [0, -100, 100]
-        dataframe['CDLENGULFING'] = ta.CDLENGULFING(dataframe) # values [0, -100, 100]
-        # Harami: values [0, -100, 100]
-        dataframe['CDLHARAMI'] = ta.CDLHARAMI(dataframe) # values [0, -100, 100]
-        # Three Outside Up/Down: values [0, -100, 100]
-        dataframe['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(dataframe) # values [0, -100, 100]
-        # Three Inside Up/Down: values [0, -100, 100]
-        dataframe['CDL3INSIDE'] = ta.CDL3INSIDE(dataframe) # values [0, -100, 100]
-        """
-
-        # Chart type
-        # ------------------------------------
-        """
-        # Heikinashi stategy
-        heikinashi = qtpylib.heikinashi(dataframe)
-        dataframe['ha_open'] = heikinashi['open']
-        dataframe['ha_close'] = heikinashi['close']
-        dataframe['ha_high'] = heikinashi['high']
-        dataframe['ha_low'] = heikinashi['low']
-        """
-
         return dataframe
 
     def populate_buy_trend(self, dataframe: DataFrame) -> DataFrame:
@@ -212,8 +62,8 @@ class TestStrategyLegacy(IStrategy):
         dataframe.loc[
             (
                 (dataframe['adx'] > 30) &
-                (dataframe['tema'] <= dataframe['bb_middleband']) &
-                (dataframe['tema'] > dataframe['tema'].shift(1))
+                (dataframe['tema'] > dataframe['tema'].shift(1)) &
+                (dataframe['volume'] > 0)
             ),
             'buy'] = 1
 
@@ -228,8 +78,8 @@ class TestStrategyLegacy(IStrategy):
         dataframe.loc[
             (
                 (dataframe['adx'] > 70) &
-                (dataframe['tema'] > dataframe['bb_middleband']) &
-                (dataframe['tema'] < dataframe['tema'].shift(1))
+                (dataframe['tema'] < dataframe['tema'].shift(1)) &
+                (dataframe['volume'] > 0)
             ),
             'sell'] = 1
         return dataframe

From 764a35d0351613e09919fee7b62f6368e7f24143 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 5 Oct 2019 10:32:42 +0200
Subject: [PATCH 0607/3421] Remove scattergl and fix tests

---
 freqtrade/plot/plotting.py |  6 +++---
 tests/test_plotting.py     | 11 +++++------
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py
index d59509d5c..6bd5993b6 100644
--- a/freqtrade/plot/plotting.py
+++ b/freqtrade/plot/plotting.py
@@ -91,7 +91,7 @@ def add_profit(fig, row, data: pd.DataFrame, column: str, name: str) -> make_sub
     :param name: Name to use
     :return: fig with added profit plot
     """
-    profit = go.Scattergl(
+    profit = go.Scatter(
         x=data.index,
         y=data[column],
         name=name,
@@ -241,7 +241,7 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra
         if 'bb_upperband' in indicators1 and 'bb_lowerband' in indicators1:
             indicators1.remove('bb_upperband')
             indicators1.remove('bb_lowerband')
-            
+
     # Add indicators to main plot
     fig = add_indicators(fig=fig, row=1, indicators=indicators1, data=data)
 
@@ -272,7 +272,7 @@ def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame],
     df_comb = create_cum_profit(df_comb, trades, 'cum_profit')
 
     # Plot the pairs average close prices, and total profit growth
-    avgclose = go.Scattergl(
+    avgclose = go.Scatter(
         x=df_comb.index,
         y=df_comb['mean'],
         name='Avg close price',
diff --git a/tests/test_plotting.py b/tests/test_plotting.py
index 9028ab961..4c576a775 100644
--- a/tests/test_plotting.py
+++ b/tests/test_plotting.py
@@ -197,8 +197,7 @@ def test_generate_candlestick_graph_no_trades(default_conf, mocker, testdatadir)
     # All buy-signals should be plotted
     assert int(data.sell.sum()) == len(sell.x)
 
-    assert find_trace_in_fig_data(figure.data, "BB lower")
-    assert find_trace_in_fig_data(figure.data, "BB upper")
+    assert find_trace_in_fig_data(figure.data, "Bollinger Band")
 
     assert row_mock.call_count == 2
     assert trades_mock.call_count == 1
@@ -239,7 +238,7 @@ def test_add_profit(testdatadir):
     fig1 = add_profit(fig, row=2, data=cum_profits, column='cum_profits', name='Profits')
     figure = fig1.layout.figure
     profits = find_trace_in_fig_data(figure.data, "Profits")
-    assert isinstance(profits, go.Scattergl)
+    assert isinstance(profits, go.Scatter)
     assert profits.yaxis == "y2"
 
 
@@ -268,14 +267,14 @@ def test_generate_profit_graph(testdatadir):
     assert len(figure.data) == 4
 
     avgclose = find_trace_in_fig_data(figure.data, "Avg close price")
-    assert isinstance(avgclose, go.Scattergl)
+    assert isinstance(avgclose, go.Scatter)
 
     profit = find_trace_in_fig_data(figure.data, "Profit")
-    assert isinstance(profit, go.Scattergl)
+    assert isinstance(profit, go.Scatter)
 
     for pair in pairs:
         profit_pair = find_trace_in_fig_data(figure.data, f"Profit {pair}")
-        assert isinstance(profit_pair, go.Scattergl)
+        assert isinstance(profit_pair, go.Scatter)
 
 
 def test_start_plot_dataframe(mocker):

From e1b8485b511053791cff090929db4e49748bc365 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Sat, 5 Oct 2019 11:51:27 +0300
Subject: [PATCH 0608/3421] Remove indicator_helpers.py and test

---
 freqtrade/indicator_helpers.py  | 40 ---------------------------------
 tests/test_indicator_helpers.py | 15 -------------
 2 files changed, 55 deletions(-)
 delete mode 100644 freqtrade/indicator_helpers.py
 delete mode 100644 tests/test_indicator_helpers.py

diff --git a/freqtrade/indicator_helpers.py b/freqtrade/indicator_helpers.py
deleted file mode 100644
index f8ea0d939..000000000
--- a/freqtrade/indicator_helpers.py
+++ /dev/null
@@ -1,40 +0,0 @@
-from math import cos, exp, pi, sqrt
-
-import numpy as np
-import talib as ta
-from pandas import Series
-
-
-def went_up(series: Series) -> bool:
-    return series > series.shift(1)
-
-
-def went_down(series: Series) -> bool:
-    return series < series.shift(1)
-
-
-def ehlers_super_smoother(series: Series, smoothing: float = 6) -> Series:
-    magic = pi * sqrt(2) / smoothing
-    a1 = exp(-magic)
-    coeff2 = 2 * a1 * cos(magic)
-    coeff3 = -a1 * a1
-    coeff1 = (1 - coeff2 - coeff3) / 2
-
-    filtered = series.copy()
-
-    for i in range(2, len(series)):
-        filtered.iloc[i] = coeff1 * (series.iloc[i] + series.iloc[i-1]) + \
-            coeff2 * filtered.iloc[i-1] + coeff3 * filtered.iloc[i-2]
-
-    return filtered
-
-
-def fishers_inverse(series: Series, smoothing: float = 0) -> np.ndarray:
-    """ Does a smoothed fishers inverse transformation.
-        Can be used with any oscillator that goes from 0 to 100 like RSI or MFI """
-    v1 = 0.1 * (series - 50)
-    if smoothing > 0:
-        v2 = ta.WMA(v1.values, timeperiod=smoothing)
-    else:
-        v2 = v1
-    return (np.exp(2 * v2)-1) / (np.exp(2 * v2) + 1)
diff --git a/tests/test_indicator_helpers.py b/tests/test_indicator_helpers.py
deleted file mode 100644
index 99d6cd79c..000000000
--- a/tests/test_indicator_helpers.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# pragma pylint: disable=missing-docstring
-
-import pandas as pd
-
-from freqtrade.indicator_helpers import went_down, went_up
-
-
-def test_went_up():
-    series = pd.Series([1, 2, 3, 1])
-    assert went_up(series).equals(pd.Series([False, True, True, False]))
-
-
-def test_went_down():
-    series = pd.Series([1, 2, 3, 1])
-    assert went_down(series).equals(pd.Series([False, False, False, True]))

From 885edc97685509d0f5b5f84cf97c467d2f16c696 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 5 Oct 2019 10:40:59 +0200
Subject: [PATCH 0609/3421] Allow multiple ROI in detail-backtest tests

---
 tests/edge/test_edge.py                | 10 ++++----
 tests/optimize/__init__.py             |  4 +--
 tests/optimize/test_backtest_detail.py | 34 +++++++++++++-------------
 3 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py
index 4fab68591..5e244a97e 100644
--- a/tests/edge/test_edge.py
+++ b/tests/edge/test_edge.py
@@ -79,7 +79,7 @@ tc0 = BTContainer(data=[
     # D  O     H     L     C     V    B  S
     [0, 5000, 5025, 4975, 4987, 6172, 1, 0],
     [1, 5000, 5025, 4975, 4987, 6172, 0, 1]],  # enter trade (signal on last candle)
-    stop_loss=-0.99, roi=float('inf'), profit_perc=0.00,
+    stop_loss=-0.99, roi={"0": float('inf')}, profit_perc=0.00,
     trades=[]
 )
 
@@ -94,7 +94,7 @@ tc1 = BTContainer(data=[
     [5, 5000, 5025, 4975, 4987, 6172, 0, 1],  # no action
     [6, 5000, 5025, 4975, 4987, 6172, 0, 0],  # should sell
 ],
-    stop_loss=-0.99, roi=float('inf'), profit_perc=0.00,
+    stop_loss=-0.99, roi={"0": float('inf')}, profit_perc=0.00,
     trades=[BTrade(sell_reason=SellType.SELL_SIGNAL, open_tick=1, close_tick=2),
             BTrade(sell_reason=SellType.SELL_SIGNAL, open_tick=4, close_tick=6)]
 )
@@ -106,7 +106,7 @@ tc2 = BTContainer(data=[
     [1, 5000, 5025, 4600, 4987, 6172, 0, 0],  # enter trade, stoploss hit
     [2, 5000, 5025, 4975, 4987, 6172, 0, 0],
 ],
-    stop_loss=-0.01, roi=float('inf'), profit_perc=-0.01,
+    stop_loss=-0.01, roi={"0": float('inf')}, profit_perc=-0.01,
     trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=1)]
 )
 
@@ -117,7 +117,7 @@ tc3 = BTContainer(data=[
     [1, 5000, 5025, 4800, 4987, 6172, 0, 0],  # enter trade, stoploss hit
     [2, 5000, 5025, 4975, 4987, 6172, 0, 0],
 ],
-    stop_loss=-0.03, roi=float('inf'), profit_perc=-0.03,
+    stop_loss=-0.03, roi={"0": float('inf')}, profit_perc=-0.03,
     trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=1)]
 )
 
@@ -128,7 +128,7 @@ tc4 = BTContainer(data=[
     [1, 5000, 5025, 4800, 4987, 6172, 0, 1],  # enter trade, stoploss hit, sell signal
     [2, 5000, 5025, 4975, 4987, 6172, 0, 0],
 ],
-    stop_loss=-0.03, roi=float('inf'), profit_perc=-0.03,
+    stop_loss=-0.03, roi={"0": float('inf')}, profit_perc=-0.03,
     trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=1)]
 )
 
diff --git a/tests/optimize/__init__.py b/tests/optimize/__init__.py
index 41500051f..fdbaaa54d 100644
--- a/tests/optimize/__init__.py
+++ b/tests/optimize/__init__.py
@@ -1,4 +1,4 @@
-from typing import NamedTuple, List
+from typing import Dict, List, NamedTuple
 
 import arrow
 from pandas import DataFrame
@@ -25,7 +25,7 @@ class BTContainer(NamedTuple):
     """
     data: List[float]
     stop_loss: float
-    roi: float
+    roi: Dict[str, float]
     trades: List[BTrade]
     profit_perc: float
     trailing_stop: bool = False
diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py
index d8a4190e2..3a117bcb6 100644
--- a/tests/optimize/test_backtest_detail.py
+++ b/tests/optimize/test_backtest_detail.py
@@ -22,7 +22,7 @@ tc0 = BTContainer(data=[
     [3, 5010, 5000, 4980, 5010, 6172, 0, 1],
     [4, 5010, 4987, 4977, 4995, 6172, 0, 0],
     [5, 4995, 4995, 4995, 4950, 6172, 0, 0]],
-    stop_loss=-0.01, roi=1, profit_perc=0.002, use_sell_signal=True,
+    stop_loss=-0.01, roi={"0": 1}, profit_perc=0.002, use_sell_signal=True,
     trades=[BTrade(sell_reason=SellType.SELL_SIGNAL, open_tick=1, close_tick=4)]
 )
 
@@ -36,7 +36,7 @@ tc1 = BTContainer(data=[
     [3, 4975, 5000, 4980, 4977, 6172, 0, 0],
     [4, 4977, 4987, 4977, 4995, 6172, 0, 0],
     [5, 4995, 4995, 4995, 4950, 6172, 0, 0]],
-    stop_loss=-0.01, roi=1, profit_perc=-0.01,
+    stop_loss=-0.01, roi={"0": 1}, profit_perc=-0.01,
     trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=2)]
 )
 
@@ -51,7 +51,7 @@ tc2 = BTContainer(data=[
     [3, 4975, 5000, 4800, 4962, 6172, 0, 0],  # exit with stoploss hit
     [4, 4962, 4987, 4937, 4950, 6172, 0, 0],
     [5, 4950, 4975, 4925, 4950, 6172, 0, 0]],
-    stop_loss=-0.03, roi=1, profit_perc=-0.03,
+    stop_loss=-0.03, roi={"0": 1}, profit_perc=-0.03,
     trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=3)]
 )
 
@@ -71,7 +71,7 @@ tc3 = BTContainer(data=[
     [4, 4975, 5000, 4950, 4962, 6172, 0, 0],  # enter trade 2 (signal on last candle)
     [5, 4962, 4987, 4000, 4000, 6172, 0, 0],  # exit with stoploss hit
     [6, 4950, 4975, 4975, 4950, 6172, 0, 0]],
-    stop_loss=-0.02, roi=1, profit_perc=-0.04,
+    stop_loss=-0.02, roi={"0": 1}, profit_perc=-0.04,
     trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=2),
             BTrade(sell_reason=SellType.STOP_LOSS, open_tick=4, close_tick=5)]
 )
@@ -88,7 +88,7 @@ tc4 = BTContainer(data=[
     [3, 4975, 5000, 4950, 4962, 6172, 0, 0],
     [4, 4962, 4987, 4937, 4950, 6172, 0, 0],
     [5, 4950, 4975, 4925, 4950, 6172, 0, 0]],
-    stop_loss=-0.02, roi=0.06, profit_perc=-0.02,
+    stop_loss=-0.02, roi={"0": 0.06}, profit_perc=-0.02,
     trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=2)]
 )
 
@@ -102,7 +102,7 @@ tc5 = BTContainer(data=[
     [3, 4975, 6000, 4975, 6000, 6172, 0, 0],  # ROI
     [4, 4962, 4987, 4972, 4950, 6172, 0, 0],
     [5, 4950, 4975, 4925, 4950, 6172, 0, 0]],
-    stop_loss=-0.01, roi=0.03, profit_perc=0.03,
+    stop_loss=-0.01, roi={"0": 0.03}, profit_perc=0.03,
     trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=3)]
 )
 
@@ -116,7 +116,7 @@ tc6 = BTContainer(data=[
     [3, 4975, 5000, 4950, 4962, 6172, 0, 0],
     [4, 4962, 4987, 4972, 4950, 6172, 0, 0],
     [5, 4950, 4975, 4925, 4950, 6172, 0, 0]],
-    stop_loss=-0.02, roi=0.05, profit_perc=-0.02,
+    stop_loss=-0.02, roi={"0": 0.05}, profit_perc=-0.02,
     trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=2)]
 )
 
@@ -130,7 +130,7 @@ tc7 = BTContainer(data=[
     [3, 4975, 5000, 4950, 4962, 6172, 0, 0],
     [4, 4962, 4987, 4972, 4950, 6172, 0, 0],
     [5, 4950, 4975, 4925, 4950, 6172, 0, 0]],
-    stop_loss=-0.02, roi=0.03, profit_perc=0.03,
+    stop_loss=-0.02, roi={"0": 0.03}, profit_perc=0.03,
     trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=2)]
 )
 
@@ -144,7 +144,7 @@ tc8 = BTContainer(data=[
     [2, 5000, 5250, 4750, 4850, 6172, 0, 0],
     [3, 4850, 5050, 4650, 4750, 6172, 0, 0],
     [4, 4750, 4950, 4350, 4750, 6172, 0, 0]],
-    stop_loss=-0.10, roi=0.10, profit_perc=-0.055, trailing_stop=True,
+    stop_loss=-0.10, roi={"0": 0.10}, profit_perc=-0.055, trailing_stop=True,
     trades=[BTrade(sell_reason=SellType.TRAILING_STOP_LOSS, open_tick=1, close_tick=3)]
 )
 
@@ -158,7 +158,7 @@ tc9 = BTContainer(data=[
     [2, 5000, 5050, 4950, 5000, 6172, 0, 0],
     [3, 5000, 5200, 4550, 4850, 6172, 0, 0],
     [4, 4750, 4950, 4350, 4750, 6172, 0, 0]],
-    stop_loss=-0.10, roi=0.10, profit_perc=-0.064, trailing_stop=True,
+    stop_loss=-0.10, roi={"0": 0.10}, profit_perc=-0.064, trailing_stop=True,
     trades=[BTrade(sell_reason=SellType.TRAILING_STOP_LOSS, open_tick=1, close_tick=3)]
 )
 
@@ -172,7 +172,7 @@ tc10 = BTContainer(data=[
     [2, 5100, 5251, 5100, 5100, 6172, 0, 0],
     [3, 4850, 5050, 4650, 4750, 6172, 0, 0],
     [4, 4750, 4950, 4350, 4750, 6172, 0, 0]],
-    stop_loss=-0.10, roi=0.10, profit_perc=-0.1, trailing_stop=True,
+    stop_loss=-0.10, roi={"0": 0.10}, profit_perc=-0.1, trailing_stop=True,
     trailing_only_offset_is_reached=True, trailing_stop_positive_offset=0.10,
     trailing_stop_positive=0.03,
     trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=4)]
@@ -188,7 +188,7 @@ tc11 = BTContainer(data=[
     [2, 5100, 5251, 5100, 5100, 6172, 0, 0],
     [3, 4850, 5050, 4650, 4750, 6172, 0, 0],
     [4, 4750, 4950, 4350, 4750, 6172, 0, 0]],
-    stop_loss=-0.10, roi=0.10, profit_perc=0.019, trailing_stop=True,
+    stop_loss=-0.10, roi={"0": 0.10}, profit_perc=0.019, trailing_stop=True,
     trailing_only_offset_is_reached=True, trailing_stop_positive_offset=0.05,
     trailing_stop_positive=0.03,
     trades=[BTrade(sell_reason=SellType.TRAILING_STOP_LOSS, open_tick=1, close_tick=3)]
@@ -204,7 +204,7 @@ tc12 = BTContainer(data=[
     [2, 5100, 5251, 4650, 5100, 6172, 0, 0],
     [3, 4850, 5050, 4650, 4750, 6172, 0, 0],
     [4, 4750, 4950, 4350, 4750, 6172, 0, 0]],
-    stop_loss=-0.10, roi=0.10, profit_perc=0.019, trailing_stop=True,
+    stop_loss=-0.10, roi={"0": 0.10}, profit_perc=0.019, trailing_stop=True,
     trailing_only_offset_is_reached=True, trailing_stop_positive_offset=0.05,
     trailing_stop_positive=0.03,
     trades=[BTrade(sell_reason=SellType.TRAILING_STOP_LOSS, open_tick=1, close_tick=2)]
@@ -219,7 +219,7 @@ tc13 = BTContainer(data=[
     [2, 5100, 5251, 4850, 5100, 6172, 0, 0],
     [3, 4850, 5050, 4850, 4750, 6172, 0, 0],
     [4, 4750, 4950, 4850, 4750, 6172, 0, 0]],
-    stop_loss=-0.10, roi=0.01, profit_perc=0.01,
+    stop_loss=-0.10, roi={"0": 0.01}, profit_perc=0.01,
     trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=1)]
 )
 
@@ -232,7 +232,7 @@ tc14 = BTContainer(data=[
     [2, 5100, 5251, 4850, 5100, 6172, 0, 0],
     [3, 4850, 5050, 4850, 4750, 6172, 0, 0],
     [4, 4750, 4950, 4350, 4750, 6172, 0, 0]],
-    stop_loss=-0.05, roi=0.10, profit_perc=-0.05,
+    stop_loss=-0.05, roi={"0": 0.10}, profit_perc=-0.05,
     trades=[BTrade(sell_reason=SellType.STOP_LOSS, open_tick=1, close_tick=1)]
 )
 
@@ -246,7 +246,7 @@ tc15 = BTContainer(data=[
     [2, 5100, 5251, 4650, 5100, 6172, 0, 0],
     [3, 4850, 5050, 4850, 4750, 6172, 0, 0],
     [4, 4750, 4950, 4350, 4750, 6172, 0, 0]],
-    stop_loss=-0.05, roi=0.01, profit_perc=-0.04,
+    stop_loss=-0.05, roi={"0": 0.01}, profit_perc=-0.04,
     trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=1),
             BTrade(sell_reason=SellType.STOP_LOSS, open_tick=2, close_tick=2)]
 )
@@ -277,7 +277,7 @@ def test_backtest_results(default_conf, fee, mocker, caplog, data) -> None:
     run functional tests
     """
     default_conf["stoploss"] = data.stop_loss
-    default_conf["minimal_roi"] = {"0": data.roi}
+    default_conf["minimal_roi"] = data.roi
     default_conf["ticker_interval"] = tests_ticker_interval
     default_conf["trailing_stop"] = data.trailing_stop
     default_conf["trailing_only_offset_is_reached"] = data.trailing_only_offset_is_reached

From 9b98e608e68a93926e72077b3979e286404f0a7a Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 5 Oct 2019 10:51:17 +0200
Subject: [PATCH 0610/3421] Add testcase for negative ROI after certain period

---
 tests/optimize/test_backtest_detail.py | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py
index 3a117bcb6..802532dd2 100644
--- a/tests/optimize/test_backtest_detail.py
+++ b/tests/optimize/test_backtest_detail.py
@@ -251,6 +251,21 @@ tc15 = BTContainer(data=[
             BTrade(sell_reason=SellType.STOP_LOSS, open_tick=2, close_tick=2)]
 )
 
+# Test 16: Buy, hold for 65 mins, then forcesell using roi=-1
+# Causes negative profit even though sell-reason is ROI.
+# stop-loss: 10%, ROI: 10% (should not apply), -100% after 65 minutes (limits trade duration)
+tc16 = BTContainer(data=[
+    # D  O     H     L     C     V    B  S
+    [0, 5000, 5025, 4975, 4987, 6172, 1, 0],
+    [1, 5000, 5025, 4975, 4987, 6172, 0, 0],
+    [2, 4987, 5300, 4950, 5050, 6172, 0, 0],
+    [3, 4975, 5000, 4940, 4962, 6172, 0, 0],  # ForceSell on ROI (roi=-1)
+    [4, 4962, 4987, 4972, 4950, 6172, 0, 0],
+    [5, 4950, 4975, 4925, 4950, 6172, 0, 0]],
+    stop_loss=-0.10, roi={"0": 0.10, "65": -1}, profit_perc=-0.012,
+    trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=3)]
+)
+
 TESTS = [
     tc0,
     tc1,
@@ -268,6 +283,7 @@ TESTS = [
     tc13,
     tc14,
     tc15,
+    tc16,
 ]
 
 

From 7ea9da96058d80c7b631e1b27257f3a007ebc4b5 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 5 Oct 2019 10:54:28 +0200
Subject: [PATCH 0611/3421] Fix #2277

---
 freqtrade/optimize/backtesting.py | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py
index 89aff86f6..7911f6aa7 100644
--- a/freqtrade/optimize/backtesting.py
+++ b/freqtrade/optimize/backtesting.py
@@ -267,6 +267,11 @@ class Backtesting:
                         # - (Expected abs profit + open_rate + open_fee) / (fee_close -1)
                         closerate = - (trade.open_rate * roi + trade.open_rate *
                                        (1 + trade.fee_open)) / (trade.fee_close - 1)
+
+                        # Use the maximum between closerate and low as we
+                        # cannot sell outside of a candle.
+                        # Applies when using {"xx": -1} as roi to force sells after xx minutes
+                        closerate = max(closerate, sell_row.low)
                     else:
                         # This should not be reached...
                         closerate = sell_row.open

From 9b233764153adcf939e72fc45d8a0c54bd865093 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Sat, 5 Oct 2019 13:29:59 +0300
Subject: [PATCH 0612/3421] Move experimental settings to ask_strategy

---
 config.json.example                      | 10 ++++------
 config_binance.json.example              | 10 ++++------
 config_full.json.example                 | 10 ++++------
 config_kraken.json.example               |  6 +++++-
 docs/configuration.md                    | 12 ++++++------
 freqtrade/constants.py                   |  8 ++++++--
 freqtrade/freqtradebot.py                |  8 +++++---
 freqtrade/optimize/hyperopt.py           |  8 ++++----
 freqtrade/resolvers/strategy_resolver.py | 20 ++++++++++----------
 freqtrade/strategy/interface.py          |  8 ++++----
 tests/config_test_comments.json          |  5 -----
 tests/optimize/test_backtest_detail.py   |  2 +-
 tests/optimize/test_backtesting.py       | 17 +++++++++++------
 tests/strategy/test_strategy.py          | 20 ++++++++++----------
 tests/test_freqtradebot.py               | 19 ++++++++-----------
 15 files changed, 82 insertions(+), 81 deletions(-)

diff --git a/config.json.example b/config.json.example
index 94084434a..419019030 100644
--- a/config.json.example
+++ b/config.json.example
@@ -22,7 +22,10 @@
     "ask_strategy":{
         "use_order_book": false,
         "order_book_min": 1,
-        "order_book_max": 9
+        "order_book_max": 9,
+        "use_sell_signal": true,
+        "sell_profit_only": false,
+        "ignore_roi_if_buy_signal": false
     },
     "exchange": {
         "name": "bittrex",
@@ -49,11 +52,6 @@
             "DOGE/BTC"
         ]
     },
-    "experimental": {
-        "use_sell_signal": false,
-        "sell_profit_only": false,
-        "ignore_roi_if_buy_signal": false
-    },
     "edge": {
         "enabled": false,
         "process_throttle_secs": 3600,
diff --git a/config_binance.json.example b/config_binance.json.example
index 1d492fc3c..58817a78e 100644
--- a/config_binance.json.example
+++ b/config_binance.json.example
@@ -22,7 +22,10 @@
     "ask_strategy":{
         "use_order_book": false,
         "order_book_min": 1,
-        "order_book_max": 9
+        "order_book_max": 9,
+        "use_sell_signal": true,
+        "sell_profit_only": false,
+        "ignore_roi_if_buy_signal": false
     },
     "exchange": {
         "name": "binance",
@@ -51,11 +54,6 @@
             "BNB/BTC"
         ]
     },
-    "experimental": {
-        "use_sell_signal": false,
-        "sell_profit_only": false,
-        "ignore_roi_if_buy_signal": false
-    },
     "edge": {
         "enabled": false,
         "process_throttle_secs": 3600,
diff --git a/config_full.json.example b/config_full.json.example
index 957967042..c6b229ea3 100644
--- a/config_full.json.example
+++ b/config_full.json.example
@@ -33,7 +33,10 @@
     "ask_strategy":{
         "use_order_book": false,
         "order_book_min": 1,
-        "order_book_max": 9
+        "order_book_max": 9,
+        "use_sell_signal": true,
+        "sell_profit_only": false,
+        "ignore_roi_if_buy_signal": false
     },
     "order_types": {
         "buy": "limit",
@@ -100,11 +103,6 @@
         "max_trade_duration_minute": 1440,
         "remove_pumps": false
     },
-    "experimental": {
-        "use_sell_signal": false,
-        "sell_profit_only": false,
-        "ignore_roi_if_buy_signal": false
-    },
     "telegram": {
         "enabled": true,
         "token": "your_telegram_token",
diff --git a/config_kraken.json.example b/config_kraken.json.example
index ea3677b2d..51aa9a8e9 100644
--- a/config_kraken.json.example
+++ b/config_kraken.json.example
@@ -22,7 +22,11 @@
     "ask_strategy":{
         "use_order_book": false,
         "order_book_min": 1,
-        "order_book_max": 9
+        "order_book_max": 9,
+        "use_sell_signal": true,
+        "sell_profit_only": false,
+        "ignore_roi_if_buy_signal": false
+
     },
     "exchange": {
         "name": "kraken",
diff --git a/docs/configuration.md b/docs/configuration.md
index 0d902766a..a31650f78 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -65,6 +65,9 @@ Mandatory parameters are marked as **Required**, which means that they are requi
 | `ask_strategy.use_order_book` | false | Allows selling of open traded pair using the rates in Order Book Asks.
 | `ask_strategy.order_book_min` | 0 | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
 | `ask_strategy.order_book_max` | 0 | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
+| `ask_strategy.use_sell_signal` | true | Use your strategy sell signals in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy).
+| `ask_strategy.sell_profit_only` | false | Wait until you have made a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy).
+| `ask_strategy.ignore_roi_if_buy_signal` | false | Do not sell if the buy-signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy).
 | `order_types` | None | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy).
 | `order_time_in_force` | None | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy).
 | `exchange.name` |  | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename).
@@ -78,9 +81,6 @@ Mandatory parameters are marked as **Required**, which means that they are requi
 | `exchange.ccxt_async_config` | None | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange  and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
 | `exchange.markets_refresh_interval` | 60 | The interval in minutes in which markets are reloaded.
 | `edge` | false | Please refer to [edge configuration document](edge.md) for detailed explanation.
-| `experimental.use_sell_signal` | false | Use your sell strategy in addition of the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy).
-| `experimental.sell_profit_only` | false | Waits until you have made a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy).
-| `experimental.ignore_roi_if_buy_signal` | false | Does not sell if the buy-signal is still active. Takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy).
 | `experimental.block_bad_exchanges` | true | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
 | `pairlist.method` | StaticPairList | Use static or dynamic volume-based pairlist. [More information below](#dynamic-pairlists).
 | `pairlist.config` | None | Additional configuration for dynamic pairlists. [More information below](#dynamic-pairlists).
@@ -116,9 +116,9 @@ Values set in the configuration file always overwrite values set in the strategy
 * `process_only_new_candles`
 * `order_types`
 * `order_time_in_force`
-* `use_sell_signal` (experimental)
-* `sell_profit_only` (experimental)
-* `ignore_roi_if_buy_signal` (experimental)
+* `use_sell_signal` (ask_strategy)
+* `sell_profit_only` (ask_strategy)
+* `ignore_roi_if_buy_signal` (ask_strategy)
 
 ### Understand stake_amount
 
diff --git a/freqtrade/constants.py b/freqtrade/constants.py
index abf43b24d..697bc280f 100644
--- a/freqtrade/constants.py
+++ b/freqtrade/constants.py
@@ -114,7 +114,10 @@ CONF_SCHEMA = {
             'properties': {
                 'use_order_book': {'type': 'boolean'},
                 'order_book_min': {'type': 'number', 'minimum': 1},
-                'order_book_max': {'type': 'number', 'minimum': 1, 'maximum': 50}
+                'order_book_max': {'type': 'number', 'minimum': 1, 'maximum': 50},
+                'use_sell_signal': {'type': 'boolean'},
+                'sell_profit_only': {'type': 'boolean'},
+                'ignore_roi_if_buy_signal': {'type': 'boolean'}
             }
         },
         'order_types': {
@@ -144,7 +147,8 @@ CONF_SCHEMA = {
             'properties': {
                 'use_sell_signal': {'type': 'boolean'},
                 'sell_profit_only': {'type': 'boolean'},
-                'ignore_roi_if_buy_signal_true': {'type': 'boolean'}
+                'ignore_roi_if_buy_signal': {'type': 'boolean'},
+                'block_bad_exchanges': {'type': 'boolean'}
             }
         },
         'pairlist': {
diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
index 3f7eab27a..9a2f2cdc4 100644
--- a/freqtrade/freqtradebot.py
+++ b/freqtrade/freqtradebot.py
@@ -580,13 +580,15 @@ class FreqtradeBot:
         logger.debug('Handling %s ...', trade)
 
         (buy, sell) = (False, False)
-        experimental = self.config.get('experimental', {})
-        if experimental.get('use_sell_signal') or experimental.get('ignore_roi_if_buy_signal'):
+
+        config_ask_strategy = self.config.get('ask_strategy', {})
+
+        if (config_ask_strategy.get('use_sell_signal', True) or
+                config_ask_strategy.get('ignore_roi_if_buy_signal')):
             (buy, sell) = self.strategy.get_signal(
                 trade.pair, self.strategy.ticker_interval,
                 self.dataprovider.ohlcv(trade.pair, self.strategy.ticker_interval))
 
-        config_ask_strategy = self.config.get('ask_strategy', {})
         if config_ask_strategy.get('use_order_book', False):
             logger.info('Using order book for selling...')
             # logger.debug('Order book %s',orderBook)
diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py
index a70ff8142..07258a048 100644
--- a/freqtrade/optimize/hyperopt.py
+++ b/freqtrade/optimize/hyperopt.py
@@ -98,10 +98,10 @@ class Hyperopt:
         self.position_stacking = self.config.get('position_stacking', False)
 
         if self.has_space('sell'):
-            # Make sure experimental is enabled
-            if 'experimental' not in self.config:
-                self.config['experimental'] = {}
-            self.config['experimental']['use_sell_signal'] = True
+            # Make sure use_sell_signal is enabled
+            if 'ask_strategy' not in self.config:
+                self.config['ask_strategy'] = {}
+            self.config['ask_strategy']['use_sell_signal'] = True
 
     @staticmethod
     def get_lock_filename(config) -> str:
diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py
index ca7e1165b..43197e5bc 100644
--- a/freqtrade/resolvers/strategy_resolver.py
+++ b/freqtrade/resolvers/strategy_resolver.py
@@ -38,13 +38,13 @@ class StrategyResolver(IResolver):
                                                        config=config,
                                                        extra_dir=config.get('strategy_path'))
 
-        # make sure experimental dict is available
-        if 'experimental' not in config:
-            config['experimental'] = {}
+        # make sure ask_strategy dict is available
+        if 'ask_strategy' not in config:
+            config['ask_strategy'] = {}
 
         # Set attributes
         # Check if we need to override configuration
-        # (Attribute name,                              default, experimental)
+        #             (Attribute name,                    default,     ask_strategy)
         attributes = [("minimal_roi",                     {"0": 10.0}, False),
                       ("ticker_interval",                 None,        False),
                       ("stoploss",                        None,        False),
@@ -57,20 +57,20 @@ class StrategyResolver(IResolver):
                       ("order_time_in_force",             None,        False),
                       ("stake_currency",                  None,        False),
                       ("stake_amount",                    None,        False),
-                      ("use_sell_signal",                 False,       True),
+                      ("use_sell_signal",                 True,        True),
                       ("sell_profit_only",                False,       True),
                       ("ignore_roi_if_buy_signal",        False,       True),
                       ]
-        for attribute, default, experimental in attributes:
-            if experimental:
-                self._override_attribute_helper(config['experimental'], attribute, default)
+        for attribute, default, ask_strategy in attributes:
+            if ask_strategy:
+                self._override_attribute_helper(config['ask_strategy'], attribute, default)
             else:
                 self._override_attribute_helper(config, attribute, default)
 
         # Loop this list again to have output combined
         for attribute, _, exp in attributes:
-            if exp and attribute in config['experimental']:
-                logger.info("Strategy using %s: %s", attribute, config['experimental'][attribute])
+            if exp and attribute in config['ask_strategy']:
+                logger.info("Strategy using %s: %s", attribute, config['ask_strategy'][attribute])
             elif attribute in config:
                 logger.info("Strategy using %s: %s", attribute, config[attribute])
 
diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py
index 17246ecf7..b35ebabbb 100644
--- a/freqtrade/strategy/interface.py
+++ b/freqtrade/strategy/interface.py
@@ -309,9 +309,9 @@ class IStrategy(ABC):
         # Set current rate to high for backtesting sell
         current_rate = high or rate
         current_profit = trade.calc_profit_percent(current_rate)
-        experimental = self.config.get('experimental', {})
+        config_ask_strategy = self.config.get('ask_strategy', {})
 
-        if buy and experimental.get('ignore_roi_if_buy_signal', False):
+        if buy and config_ask_strategy.get('ignore_roi_if_buy_signal', False):
             # This one is noisy, commented out
             # logger.debug(f"{trade.pair} - Buy signal still active. sell_flag=False")
             return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
@@ -322,7 +322,7 @@ class IStrategy(ABC):
                          f"sell_type=SellType.ROI")
             return SellCheckTuple(sell_flag=True, sell_type=SellType.ROI)
 
-        if experimental.get('sell_profit_only', False):
+        if config_ask_strategy.get('sell_profit_only', False):
             # This one is noisy, commented out
             # logger.debug(f"{trade.pair} - Checking if trade is profitable...")
             if trade.calc_profit(rate=rate) <= 0:
@@ -330,7 +330,7 @@ class IStrategy(ABC):
                 # logger.debug(f"{trade.pair} - Trade is not profitable. sell_flag=False")
                 return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE)
 
-        if sell and not buy and experimental.get('use_sell_signal', False):
+        if sell and not buy and config_ask_strategy.get('use_sell_signal', True):
             logger.debug(f"{trade.pair} - Sell signal received. sell_flag=True, "
                          f"sell_type=SellType.SELL_SIGNAL")
             return SellCheckTuple(sell_flag=True, sell_type=SellType.SELL_SIGNAL)
diff --git a/tests/config_test_comments.json b/tests/config_test_comments.json
index 85becc3e8..8af39d6ba 100644
--- a/tests/config_test_comments.json
+++ b/tests/config_test_comments.json
@@ -103,11 +103,6 @@
         "max_trade_duration_minute": 1440,
         "remove_pumps": false
     },
-    "experimental": {
-        "use_sell_signal": false,
-        "sell_profit_only": false,
-        "ignore_roi_if_buy_signal": false
-    },
     "telegram": {
 // We can now comment out some settings
 //        "enabled": true,
diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py
index d8a4190e2..a85dc99c3 100644
--- a/tests/optimize/test_backtest_detail.py
+++ b/tests/optimize/test_backtest_detail.py
@@ -285,7 +285,7 @@ def test_backtest_results(default_conf, fee, mocker, caplog, data) -> None:
     if data.trailing_stop_positive:
         default_conf["trailing_stop_positive"] = data.trailing_stop_positive
     default_conf["trailing_stop_positive_offset"] = data.trailing_stop_positive_offset
-    default_conf["experimental"] = {"use_sell_signal": data.use_sell_signal}
+    default_conf["ask_strategy"] = {"use_sell_signal": data.use_sell_signal}
 
     mocker.patch("freqtrade.exchange.Exchange.get_fee", MagicMock(return_value=0.0))
     patch_exchange(mocker)
diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py
index fa40809d8..589896c39 100644
--- a/tests/optimize/test_backtesting.py
+++ b/tests/optimize/test_backtesting.py
@@ -507,6 +507,7 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) ->
 
 
 def test_backtest(default_conf, fee, mocker, testdatadir) -> None:
+    default_conf['ask_strategy']['use_sell_signal'] = False
     mocker.patch('freqtrade.exchange.Exchange.get_fee', fee)
     patch_exchange(mocker)
     backtesting = Backtesting(default_conf)
@@ -561,6 +562,7 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None:
 
 
 def test_backtest_1min_ticker_interval(default_conf, fee, mocker, testdatadir) -> None:
+    default_conf['ask_strategy']['use_sell_signal'] = False
     mocker.patch('freqtrade.exchange.Exchange.get_fee', fee)
     patch_exchange(mocker)
     backtesting = Backtesting(default_conf)
@@ -603,8 +605,9 @@ def test_backtest_pricecontours(default_conf, fee, mocker, testdatadir) -> None:
     # TODO: Evaluate usefullness of this, the patterns and buy-signls are unrealistic
     mocker.patch('freqtrade.exchange.Exchange.get_fee', fee)
     tests = [['raise', 19], ['lower', 0], ['sine', 35]]
-    # We need to enable sell-signal - otherwise it sells on ROI!!
-    default_conf['experimental'] = {"use_sell_signal": True}
+    # use_sell_signal is True by default now, it will sell on the sell signal instead of ROI,
+    # which is what we need here
+#    default_conf['ask_strategy'] = {"use_sell_signal": True}
 
     for [contour, numres] in tests:
         simple_backtest(default_conf, contour, numres, mocker, testdatadir)
@@ -645,8 +648,9 @@ def test_backtest_alternate_buy_sell(default_conf, fee, mocker, testdatadir):
     mocker.patch('freqtrade.optimize.backtesting.file_dump_json', MagicMock())
     backtest_conf = _make_backtest_conf(mocker, conf=default_conf,
                                         pair='UNITTEST/BTC', datadir=testdatadir)
-    # We need to enable sell-signal - otherwise it sells on ROI!!
-    default_conf['experimental'] = {"use_sell_signal": True}
+    # use_sell_signal is True by default now, it will sell on the sell signal instead of ROI,
+    # which is what we need here
+#    default_conf['ask_strategy'] = {"use_sell_signal": True}
     default_conf['ticker_interval'] = '1m'
     backtesting = Backtesting(default_conf)
     backtesting.strategy.advise_buy = _trend_alternate  # Override
@@ -687,8 +691,9 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir)
 
     # Remove data for one pair from the beginning of the data
     data[pair] = data[pair][tres:].reset_index()
-    # We need to enable sell-signal - otherwise it sells on ROI!!
-    default_conf['experimental'] = {"use_sell_signal": True}
+    # use_sell_signal is True by default now, it will sell on the sell signal instead of ROI,
+    # which is what we need here
+#    default_conf['ask_strategy'] = {"use_sell_signal": True}
     default_conf['ticker_interval'] = '5m'
 
     backtesting = Backtesting(default_conf)
diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py
index 6992d1aa5..88e29b40e 100644
--- a/tests/strategy/test_strategy.py
+++ b/tests/strategy/test_strategy.py
@@ -256,23 +256,23 @@ def test_strategy_override_use_sell_signal(caplog, default_conf):
         'strategy': 'DefaultStrategy',
     })
     resolver = StrategyResolver(default_conf)
-    assert not resolver.strategy.use_sell_signal
+    assert resolver.strategy.use_sell_signal
     assert isinstance(resolver.strategy.use_sell_signal, bool)
     # must be inserted to configuration
-    assert 'use_sell_signal' in default_conf['experimental']
-    assert not default_conf['experimental']['use_sell_signal']
+    assert 'use_sell_signal' in default_conf['ask_strategy']
+    assert default_conf['ask_strategy']['use_sell_signal']
 
     default_conf.update({
         'strategy': 'DefaultStrategy',
-        'experimental': {
-            'use_sell_signal': True,
+        'ask_strategy': {
+            'use_sell_signal': False,
         },
     })
     resolver = StrategyResolver(default_conf)
 
-    assert resolver.strategy.use_sell_signal
+    assert not resolver.strategy.use_sell_signal
     assert isinstance(resolver.strategy.use_sell_signal, bool)
-    assert log_has("Override strategy 'use_sell_signal' with value in config file: True.", caplog)
+    assert log_has("Override strategy 'use_sell_signal' with value in config file: False.", caplog)
 
 
 def test_strategy_override_use_sell_profit_only(caplog, default_conf):
@@ -284,12 +284,12 @@ def test_strategy_override_use_sell_profit_only(caplog, default_conf):
     assert not resolver.strategy.sell_profit_only
     assert isinstance(resolver.strategy.sell_profit_only, bool)
     # must be inserted to configuration
-    assert 'sell_profit_only' in default_conf['experimental']
-    assert not default_conf['experimental']['sell_profit_only']
+    assert 'sell_profit_only' in default_conf['ask_strategy']
+    assert not default_conf['ask_strategy']['sell_profit_only']
 
     default_conf.update({
         'strategy': 'DefaultStrategy',
-        'experimental': {
+        'ask_strategy': {
             'sell_profit_only': True,
         },
     })
diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
index ee28f2e58..a9c85b4c3 100644
--- a/tests/test_freqtradebot.py
+++ b/tests/test_freqtradebot.py
@@ -1768,8 +1768,6 @@ def test_handle_trade(default_conf, limit_buy_order, limit_sell_order,
 
 def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order,
                                      fee, markets, mocker) -> None:
-    default_conf.update({'experimental': {'use_sell_signal': True}})
-
     patch_RPCManager(mocker)
     patch_exchange(mocker)
     mocker.patch.multiple(
@@ -1824,7 +1822,6 @@ def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order,
 def test_handle_trade_roi(default_conf, ticker, limit_buy_order,
                           fee, mocker, markets, caplog) -> None:
     caplog.set_level(logging.DEBUG)
-    default_conf.update({'experimental': {'use_sell_signal': True}})
 
     patch_RPCManager(mocker)
     patch_exchange(mocker)
@@ -1856,10 +1853,10 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order,
                    caplog)
 
 
-def test_handle_trade_experimental(
+def test_handle_trade_use_sell_signal(
         default_conf, ticker, limit_buy_order, fee, mocker, markets, caplog) -> None:
+    # use_sell_signal is True buy default
     caplog.set_level(logging.DEBUG)
-    default_conf.update({'experimental': {'use_sell_signal': True}})
     patch_RPCManager(mocker)
     patch_exchange(mocker)
     mocker.patch.multiple(
@@ -2600,7 +2597,7 @@ def test_sell_profit_only_enable_profit(default_conf, limit_buy_order,
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
     )
-    default_conf['experimental'] = {
+    default_conf['ask_strategy'] = {
         'use_sell_signal': True,
         'sell_profit_only': True,
     }
@@ -2632,7 +2629,7 @@ def test_sell_profit_only_disable_profit(default_conf, limit_buy_order,
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
     )
-    default_conf['experimental'] = {
+    default_conf['ask_strategy'] = {
         'use_sell_signal': True,
         'sell_profit_only': False,
     }
@@ -2662,7 +2659,7 @@ def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, market
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
     )
-    default_conf['experimental'] = {
+    default_conf['ask_strategy'] = {
         'use_sell_signal': True,
         'sell_profit_only': True,
     }
@@ -2692,7 +2689,7 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, marke
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
     )
-    default_conf['experimental'] = {
+    default_conf['ask_strategy'] = {
         'use_sell_signal': True,
         'sell_profit_only': False,
     }
@@ -2761,7 +2758,7 @@ def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, markets, m
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
     )
-    default_conf['experimental'] = {
+    default_conf['ask_strategy'] = {
         'ignore_roi_if_buy_signal': True
     }
     freqtrade = FreqtradeBot(default_conf)
@@ -3029,7 +3026,7 @@ def test_disable_ignore_roi_if_buy_signal(default_conf, limit_buy_order,
         get_fee=fee,
         markets=PropertyMock(return_value=markets)
     )
-    default_conf['experimental'] = {
+    default_conf['ask_strategy'] = {
         'ignore_roi_if_buy_signal': False
     }
     freqtrade = FreqtradeBot(default_conf)

From 0664a8c0e6e901f807a622469d0f416853b432c6 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 5 Oct 2019 15:29:00 +0200
Subject: [PATCH 0613/3421] add `--fee` to change fees to other values

---
 freqtrade/configuration/arguments.py     | 2 +-
 freqtrade/configuration/cli_options.py   | 6 ++++++
 freqtrade/configuration/configuration.py | 7 ++++++-
 freqtrade/edge/__init__.py               | 6 ++++--
 freqtrade/optimize/backtesting.py        | 7 +++++--
 5 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index da9bef0b0..c2c09eb40 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -15,7 +15,7 @@ ARGS_STRATEGY = ["strategy", "strategy_path"]
 ARGS_MAIN = ARGS_COMMON + ARGS_STRATEGY + ["db_url", "sd_notify"]
 
 ARGS_COMMON_OPTIMIZE = ["ticker_interval", "timerange",
-                        "max_open_trades", "stake_amount"]
+                        "max_open_trades", "stake_amount", "fee"]
 
 ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + ["position_stacking", "use_max_market_positions",
                                         "strategy_list", "export", "exportfilename"]
diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py
index caf34b5e3..9f7f7b82f 100644
--- a/freqtrade/configuration/cli_options.py
+++ b/freqtrade/configuration/cli_options.py
@@ -144,6 +144,12 @@ AVAILABLE_CLI_OPTIONS = {
         default=os.path.join('user_data', 'backtest_results',
                              'backtest-result.json'),
     ),
+    "fee": Arg(
+        '--fee',
+        help='Specify fee %%. Should be in %%, will be applied twice (on trade entry and exit).',
+        type=float,
+        metavar='FLOAT',
+    ),
     # Edge
     "stoploss_range": Arg(
         '--stoplosses',
diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py
index 764593d0f..ccbc41f34 100644
--- a/freqtrade/configuration/configuration.py
+++ b/freqtrade/configuration/configuration.py
@@ -210,6 +210,10 @@ class Configuration:
                              logstring='Parameter --stake_amount detected, '
                              'overriding stake_amount to: {} ...')
 
+        self._args_to_config(config, argname='fee',
+                             logstring='Parameter --fee detected, '
+                             'setting fee to: {} ...')
+
         self._args_to_config(config, argname='timerange',
                              logstring='Parameter --timerange detected: {} ...')
 
@@ -323,7 +327,8 @@ class Configuration:
                         sample: logfun=len (prints the length of the found
                         configuration instead of the content)
         """
-        if argname in self.args and self.args[argname]:
+        if (argname in self.args and self.args[argname] is not None
+            and self.args[argname] is not False):
 
             config.update({argname: self.args[argname]})
             if logfun:
diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py
index 66a777ce5..2655fbc65 100644
--- a/freqtrade/edge/__init__.py
+++ b/freqtrade/edge/__init__.py
@@ -77,8 +77,10 @@ class Edge:
 
         self._timerange: TimeRange = TimeRange.parse_timerange("%s-" % arrow.now().shift(
             days=-1 * self._since_number_of_days).format('YYYYMMDD'))
-
-        self.fee = self.exchange.get_fee()
+        if config.get('fee'):
+            self.fee = config['fee']
+        else:
+            self.fee = self.exchange.get_fee()
 
     def calculate(self) -> bool:
         pairs = self.config['exchange']['pair_whitelist']
diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py
index 89aff86f6..759d7b72d 100644
--- a/freqtrade/optimize/backtesting.py
+++ b/freqtrade/optimize/backtesting.py
@@ -63,9 +63,12 @@ class Backtesting:
         self.config['exchange']['uid'] = ''
         self.config['dry_run'] = True
         self.strategylist: List[IStrategy] = []
-
         self.exchange = ExchangeResolver(self.config['exchange']['name'], self.config).exchange
-        self.fee = self.exchange.get_fee()
+
+        if config.get('fee'):
+            self.fee = config['fee']
+        else:
+            self.fee = self.exchange.get_fee()
 
         if self.config.get('runmode') != RunMode.HYPEROPT:
             self.dataprovider = DataProvider(self.config, self.exchange)

From 82d4051a39545ae8d3425b66649cff56928c6864 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 5 Oct 2019 15:33:44 +0200
Subject: [PATCH 0614/3421] Add --fee to documentation

---
 docs/backtesting.md | 11 +++++++
 docs/bot-usage.md   | 77 ++++++++++++++++++++++++++-------------------
 2 files changed, 55 insertions(+), 33 deletions(-)

diff --git a/docs/backtesting.md b/docs/backtesting.md
index 75aba6c73..cc3f11026 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -72,6 +72,17 @@ The exported trades can be used for [further analysis](#further-backtest-result-
 freqtrade backtesting --export trades --export-filename=backtest_samplestrategy.json
 ```
 
+#### Supplying custom fee value
+
+Sometimes your account has certain fee rabates, which are not visible to ccxt.
+To account for this in backtesting, you can use `--fee 0.001` to supply this value to backtesting.
+This fee must be a percentage, and will be applied twice (once for trade entry, and once for trade exit).
+
+```bash
+freqtrade backtesting --fee 0.001
+```
+
+
 #### Running backtest with smaller testset by using timerange
 
 Use the `--timerange` argument to change how much of the testset you want to use.
diff --git a/docs/bot-usage.md b/docs/bot-usage.md
index f44400e32..e28ac9970 100644
--- a/docs/bot-usage.md
+++ b/docs/bot-usage.md
@@ -168,22 +168,25 @@ Backtesting also uses the config specified via `-c/--config`.
 
 ```
 usage: freqtrade backtesting [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE]
-                           [--max_open_trades MAX_OPEN_TRADES]
-                           [--stake_amount STAKE_AMOUNT] [-r] [--eps] [--dmmp]
-                           [-l]
-                           [--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
-                           [--export EXPORT] [--export-filename PATH]
+                             [--max_open_trades INT]
+                             [--stake_amount STAKE_AMOUNT] [--fee FLOAT]
+                             [--eps] [--dmmp]
+                             [--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
+                             [--export EXPORT] [--export-filename PATH]
 
 optional arguments:
   -h, --help            show this help message and exit
   -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
-                        Specify ticker interval (1m, 5m, 30m, 1h, 1d).
+                        Specify ticker interval (`1m`, `5m`, `30m`, `1h`,
+                        `1d`).
   --timerange TIMERANGE
                         Specify what timerange of data to use.
-  --max_open_trades MAX_OPEN_TRADES
+  --max_open_trades INT
                         Specify max_open_trades to use.
   --stake_amount STAKE_AMOUNT
                         Specify stake_amount.
+  --fee FLOAT           Specify fee %. Should be in %, will be applied twice
+                        (on trade entry and exit).
   --eps, --enable-position-stacking
                         Allow buying the same pair multiple times (position
                         stacking).
@@ -193,19 +196,21 @@ optional arguments:
                         number).
   --strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
                         Provide a space-separated list of strategies to
-                        backtest Please note that ticker-interval needs to be
+                        backtest. Please note that ticker-interval needs to be
                         set either in config or via command line. When using
-                        this together with --export trades, the strategy-name
-                        is injected into the filename (so backtest-data.json
-                        becomes backtest-data-DefaultStrategy.json
-  --export EXPORT       Export backtest results, argument are: trades. Example
-                        --export=trades
+                        this together with `--export trades`, the strategy-
+                        name is injected into the filename (so `backtest-
+                        data.json` becomes `backtest-data-
+                        DefaultStrategy.json`
+  --export EXPORT       Export backtest results, argument are: trades.
+                        Example: `--export=trades`
   --export-filename PATH
-                        Save backtest results to this filename requires
-                        --export to be set as well Example --export-
-                        filename=user_data/backtest_results/backtest_today.json
-                        (default: user_data/backtest_results/backtest-
-                        result.json)
+                        Save backtest results to the file with this filename
+                        (default: `user_data/backtest_results/backtest-
+                        result.json`). Requires `--export` to be set as well.
+                        Example: `--export-filename=user_data/backtest_results
+                        /backtest_today.json`
+
 ```
 
 ### Getting historic data for backtesting
@@ -222,13 +227,13 @@ to find optimal parameter values for your stategy.
 ```
 usage: freqtrade hyperopt [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE]
                           [--max_open_trades INT]
-                          [--stake_amount STAKE_AMOUNT] [-r]
+                          [--stake_amount STAKE_AMOUNT] [--fee FLOAT]
                           [--customhyperopt NAME] [--hyperopt-path PATH]
                           [--eps] [-e INT]
                           [-s {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...]]
-                          [--dmmp] [--print-all] [--no-color] [-j JOBS]
-                          [--random-state INT] [--min-trades INT] [--continue]
-                          [--hyperopt-loss NAME]
+                          [--dmmp] [--print-all] [--no-color] [--print-json]
+                          [-j JOBS] [--random-state INT] [--min-trades INT]
+                          [--continue] [--hyperopt-loss NAME]
 
 optional arguments:
   -h, --help            show this help message and exit
@@ -241,6 +246,8 @@ optional arguments:
                         Specify max_open_trades to use.
   --stake_amount STAKE_AMOUNT
                         Specify stake_amount.
+  --fee FLOAT           Specify fee %. Should be in %, will be applied twice
+                        (on trade entry and exit).
   --customhyperopt NAME
                         Specify hyperopt class name (default:
                         `DefaultHyperOpts`).
@@ -260,6 +267,7 @@ optional arguments:
   --print-all           Print all results, not only the best ones.
   --no-color            Disable colorization of hyperopt results. May be
                         useful if you are redirecting output to a file.
+  --print-json          Print best result detailization in JSON format.
   -j JOBS, --job-workers JOBS
                         The number of concurrently running jobs for
                         hyperoptimization (hyperopt worker processes). If -1
@@ -278,8 +286,8 @@ optional arguments:
                         generate completely different results, since the
                         target for optimization is different. Built-in
                         Hyperopt-loss-functions are: DefaultHyperOptLoss,
-                        OnlyProfitHyperOptLoss, SharpeHyperOptLoss.
-                        (default: `DefaultHyperOptLoss`).
+                        OnlyProfitHyperOptLoss, SharpeHyperOptLoss.(default:
+                        `DefaultHyperOptLoss`).
 ```
 
 ## Edge commands
@@ -288,25 +296,28 @@ To know your trade expectancy and winrate against historical data, you can use E
 
 ```
 usage: freqtrade edge [-h] [-i TICKER_INTERVAL] [--timerange TIMERANGE]
-                    [--max_open_trades MAX_OPEN_TRADES]
-                    [--stake_amount STAKE_AMOUNT] [-r]
-                    [--stoplosses STOPLOSS_RANGE]
+                      [--max_open_trades INT] [--stake_amount STAKE_AMOUNT]
+                      [--fee FLOAT] [--stoplosses STOPLOSS_RANGE]
 
 optional arguments:
   -h, --help            show this help message and exit
   -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL
-                        Specify ticker interval (1m, 5m, 30m, 1h, 1d).
+                        Specify ticker interval (`1m`, `5m`, `30m`, `1h`,
+                        `1d`).
   --timerange TIMERANGE
                         Specify what timerange of data to use.
-  --max_open_trades MAX_OPEN_TRADES
+  --max_open_trades INT
                         Specify max_open_trades to use.
   --stake_amount STAKE_AMOUNT
                         Specify stake_amount.
+  --fee FLOAT           Specify fee %. Should be in %, will be applied twice
+                        (on trade entry and exit).
   --stoplosses STOPLOSS_RANGE
-                        Defines a range of stoploss against which edge will
-                        assess the strategy the format is "min,max,step"
-                        (without any space).example:
-                        --stoplosses=-0.01,-0.1,-0.001
+                        Defines a range of stoploss values against which edge
+                        will assess the strategy. The format is "min,max,step"
+                        (without any space). Example:
+                        `--stoplosses=-0.01,-0.1,-0.001`
+
 ```
 
 To understand edge and how to read the results, please read the [edge documentation](edge.md).

From 22733e44bf282ae558962e2d62339c3a4d4f5921 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 5 Oct 2019 15:34:31 +0200
Subject: [PATCH 0615/3421] Add tests for --fee

---
 freqtrade/configuration/configuration.py |  2 +-
 tests/optimize/test_backtesting.py       | 50 ++++++++++++++----------
 tests/optimize/test_edge_cli.py          | 10 +++++
 tests/test_configuration.py              |  2 +-
 4 files changed, 42 insertions(+), 22 deletions(-)

diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py
index ccbc41f34..df461a5ca 100644
--- a/freqtrade/configuration/configuration.py
+++ b/freqtrade/configuration/configuration.py
@@ -328,7 +328,7 @@ class Configuration:
                         configuration instead of the content)
         """
         if (argname in self.args and self.args[argname] is not None
-            and self.args[argname] is not False):
+           and self.args[argname] is not False):
 
             config.update({argname: self.args[argname]})
             if logfun:
diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py
index fa40809d8..ff3d14541 100644
--- a/tests/optimize/test_backtesting.py
+++ b/tests/optimize/test_backtesting.py
@@ -26,6 +26,21 @@ from tests.conftest import (get_args, log_has, log_has_re, patch_exchange,
                             patched_configuration_load_config_file)
 
 
+ORDER_TYPES = [
+    {
+        'buy': 'limit',
+        'sell': 'limit',
+        'stoploss': 'limit',
+        'stoploss_on_exchange': False
+    },
+    {
+        'buy': 'limit',
+        'sell': 'limit',
+        'stoploss': 'limit',
+        'stoploss_on_exchange': True
+    }]
+
+
 def trim_dictlist(dict_list, num):
     new = {}
     for pair, pair_data in dict_list.items():
@@ -211,7 +226,8 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) ->
         '--disable-max-market-positions',
         '--timerange', ':100',
         '--export', '/bar/foo',
-        '--export-filename', 'foo_bar.json'
+        '--export-filename', 'foo_bar.json',
+        '--fee', '0',
     ]
 
     config = setup_configuration(get_args(args), RunMode.BACKTEST)
@@ -243,6 +259,9 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) ->
     assert 'exportfilename' in config
     assert log_has('Storing backtest results to {} ...'.format(config['exportfilename']), caplog)
 
+    assert 'fee' in config
+    assert log_has('Parameter --fee detected, setting fee to: {} ...'.format(config['fee']), caplog)
+
 
 def test_setup_configuration_unlimited_stake_amount(mocker, default_conf, caplog) -> None:
     default_conf['stake_amount'] = constants.UNLIMITED_STAKE_AMOUNT
@@ -277,21 +296,6 @@ def test_start(mocker, fee, default_conf, caplog) -> None:
     assert start_mock.call_count == 1
 
 
-ORDER_TYPES = [
-    {
-        'buy': 'limit',
-        'sell': 'limit',
-        'stoploss': 'limit',
-        'stoploss_on_exchange': False
-    },
-    {
-        'buy': 'limit',
-        'sell': 'limit',
-        'stoploss': 'limit',
-        'stoploss_on_exchange': True
-    }]
-
-
 @pytest.mark.parametrize("order_types", ORDER_TYPES)
 def test_backtesting_init(mocker, default_conf, order_types) -> None:
     """
@@ -314,10 +318,6 @@ def test_backtesting_init(mocker, default_conf, order_types) -> None:
 
 
 def test_backtesting_init_no_ticker_interval(mocker, default_conf, caplog) -> None:
-    """
-    Check that stoploss_on_exchange is set to False while backtesting
-    since backtesting assumes a perfect stoploss anyway.
-    """
     patch_exchange(mocker)
     del default_conf['ticker_interval']
     default_conf['strategy_list'] = ['DefaultStrategy',
@@ -330,6 +330,16 @@ def test_backtesting_init_no_ticker_interval(mocker, default_conf, caplog) -> No
             "or as cli argument `--ticker-interval 5m`", caplog)
 
 
+def test_tickerdata_with_fee(default_conf, mocker, testdatadir) -> None:
+    patch_exchange(mocker)
+    default_conf['fee'] = 0.1234
+
+    fee_mock = mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.5))
+    backtesting = Backtesting(default_conf)
+    assert backtesting.fee == 0.1234
+    assert fee_mock.call_count == 0
+
+
 def test_tickerdata_to_dataframe_bt(default_conf, mocker, testdatadir) -> None:
     patch_exchange(mocker)
     timerange = TimeRange(None, 'line', 0, -100)
diff --git a/tests/optimize/test_edge_cli.py b/tests/optimize/test_edge_cli.py
index 97103da55..2c45a8d51 100644
--- a/tests/optimize/test_edge_cli.py
+++ b/tests/optimize/test_edge_cli.py
@@ -98,6 +98,16 @@ def test_edge_init(mocker, edge_conf) -> None:
     assert callable(edge_cli.edge.calculate)
 
 
+def test_edge_init_fee(mocker, edge_conf) -> None:
+    patch_exchange(mocker)
+    edge_conf['fee'] = 0.1234
+    edge_conf['stake_amount'] = 20
+    fee_mock = mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.5))
+    edge_cli = EdgeCli(edge_conf)
+    assert edge_cli.edge.fee == 0.1234
+    assert fee_mock.call_count == 0
+
+
 def test_generate_edge_table(edge_conf, mocker):
     patch_exchange(mocker)
     edge_cli = EdgeCli(edge_conf)
diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 0f2d6a50a..6d2c0ed00 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -403,7 +403,7 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non
     assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...',
                    caplog)
 
-    assert 'position_stacking'in config
+    assert 'position_stacking' in config
     assert log_has('Parameter --enable-position-stacking detected ...', caplog)
 
     assert 'use_max_market_positions' in config

From d2589c4415830fd94294b0f90bdb47f26fa22d86 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 6 Oct 2019 10:32:19 +0200
Subject: [PATCH 0616/3421] Make test exchange-independent

---
 tests/test_utils.py | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/tests/test_utils.py b/tests/test_utils.py
index 6168706a2..103a25d6d 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -49,8 +49,16 @@ def test_list_exchanges(capsys):
     assert re.search(r"^bittrex$", captured.out, re.MULTILINE)
 
 
-def test_list_timeframes(capsys):
+def test_list_timeframes(mocker, capsys):
 
+    api_mock = MagicMock()
+    api_mock.timeframes = {'1m': '1m',
+                           '5m': '5m',
+                           '30m': '30m',
+                           '1h': '1h',
+                           '1d': '1d',
+                           }
+    patch_exchange(mocker, api_mock=api_mock)
     args = [
         "list-timeframes",
     ]
@@ -82,6 +90,17 @@ def test_list_timeframes(capsys):
                     "1m, 5m, 30m, 1h, 1d",
                     captured.out)
 
+    api_mock.timeframes = {'1m': '1m',
+                           '5m': '5m',
+                           '15m': '15m',
+                           '30m': '30m',
+                           '1h': '1h',
+                           '6h': '6h',
+                           '12h': '12h',
+                           '1d': '1d',
+                           '3d': '3d',
+                           }
+    patch_exchange(mocker, api_mock=api_mock)
     # Test with --exchange binance
     args = [
         "list-timeframes",
@@ -90,7 +109,7 @@ def test_list_timeframes(capsys):
     start_list_timeframes(get_args(args))
     captured = capsys.readouterr()
     assert re.match("Timeframes available for the exchange `binance`: "
-                    "1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M",
+                    "1m, 5m, 15m, 30m, 1h, 6h, 12h, 1d, 3d",
                     captured.out)
 
     # Test with --one-column

From 33940ae66bc18467047ef5dfea09e0525eddb959 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 6 Oct 2019 14:33:23 +0200
Subject: [PATCH 0617/3421] Use different keys and values

---
 tests/test_utils.py | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/tests/test_utils.py b/tests/test_utils.py
index 103a25d6d..ca8cbcc0c 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -52,11 +52,11 @@ def test_list_exchanges(capsys):
 def test_list_timeframes(mocker, capsys):
 
     api_mock = MagicMock()
-    api_mock.timeframes = {'1m': '1m',
-                           '5m': '5m',
-                           '30m': '30m',
-                           '1h': '1h',
-                           '1d': '1d',
+    api_mock.timeframes = {'1m': 'oneMin',
+                           '5m': 'fiveMin',
+                           '30m': 'thirtyMin',
+                           '1h': 'hour',
+                           '1d': 'day',
                            }
     patch_exchange(mocker, api_mock=api_mock)
     args = [

From 211b9cbe047b9c5aac935929e010031c15146a0b Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Sun, 6 Oct 2019 18:10:40 +0300
Subject: [PATCH 0618/3421] Cleanup in data.history

---
 freqtrade/data/history.py  | 37 +++++++++++++++++++++----------------
 tests/data/test_history.py | 26 +++++++++++++-------------
 2 files changed, 34 insertions(+), 29 deletions(-)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index 865289f38..991a639ca 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -82,10 +82,19 @@ def store_tickerdata_file(datadir: Path, pair: str,
     misc.file_dump_json(filename, data, is_zip=is_zip)
 
 
+def _validate_pairdata(pair, pairdata, timerange: TimeRange):
+    if timerange.starttype == 'date' and pairdata[0][0] > timerange.startts * 1000:
+        logger.warning('Missing data at start for pair %s, data starts at %s',
+                       pair, arrow.get(pairdata[0][0] // 1000).strftime('%Y-%m-%d %H:%M:%S'))
+    if timerange.stoptype == 'date' and pairdata[-1][0] < timerange.stopts * 1000:
+        logger.warning('Missing data at end for pair %s, data ends at %s',
+                       pair, arrow.get(pairdata[-1][0] // 1000).strftime('%Y-%m-%d %H:%M:%S'))
+
+
 def load_pair_history(pair: str,
                       ticker_interval: str,
                       datadir: Path,
-                      timerange: TimeRange = TimeRange(None, None, 0, 0),
+                      timerange: Optional[TimeRange] = None,
                       refresh_pairs: bool = False,
                       exchange: Optional[Exchange] = None,
                       fill_up_missing: bool = True,
@@ -116,13 +125,8 @@ def load_pair_history(pair: str,
     pairdata = load_tickerdata_file(datadir, pair, ticker_interval, timerange=timerange)
 
     if pairdata:
-        if timerange.starttype == 'date' and pairdata[0][0] > timerange.startts * 1000:
-            logger.warning('Missing data at start for pair %s, data starts at %s',
-                           pair, arrow.get(pairdata[0][0] // 1000).strftime('%Y-%m-%d %H:%M:%S'))
-        if timerange.stoptype == 'date' and pairdata[-1][0] < timerange.stopts * 1000:
-            logger.warning('Missing data at end for pair %s, data ends at %s',
-                           pair,
-                           arrow.get(pairdata[-1][0] // 1000).strftime('%Y-%m-%d %H:%M:%S'))
+        if timerange:
+            _validate_pairdata(pair, pairdata, timerange)
         return parse_ticker_dataframe(pairdata, ticker_interval, pair=pair,
                                       fill_missing=fill_up_missing,
                                       drop_incomplete=drop_incomplete)
@@ -139,7 +143,7 @@ def load_data(datadir: Path,
               pairs: List[str],
               refresh_pairs: bool = False,
               exchange: Optional[Exchange] = None,
-              timerange: TimeRange = TimeRange(None, None, 0, 0),
+              timerange: Optional[TimeRange] = None,
               fill_up_missing: bool = True,
               ) -> Dict[str, DataFrame]:
     """
@@ -169,13 +173,14 @@ def pair_data_filename(datadir: Path, pair: str, ticker_interval: str) -> Path:
     return filename
 
 
-def load_cached_data_for_updating(datadir: Path, pair: str, ticker_interval: str,
-                                  timerange: Optional[TimeRange]) -> Tuple[List[Any],
-                                                                           Optional[int]]:
+def _load_cached_data_for_updating(datadir: Path, pair: str, ticker_interval: str,
+                                   timerange: Optional[TimeRange]) -> Tuple[List[Any],
+                                                                            Optional[int]]:
     """
     Load cached data to download more data.
-    If timerange is passed in, checks wether data from an before the stored data will be downloaded.
-    If that's the case than what's available should be completely overwritten.
+    If timerange is passed in, checks whether data from an before the stored data will be
+    downloaded.
+    If that's the case then what's available should be completely overwritten.
     Only used by download_pair_history().
     """
 
@@ -238,7 +243,7 @@ def download_pair_history(datadir: Path,
             f'and store in {datadir}.'
         )
 
-        data, since_ms = load_cached_data_for_updating(datadir, pair, ticker_interval, timerange)
+        data, since_ms = _load_cached_data_for_updating(datadir, pair, ticker_interval, timerange)
 
         logger.debug("Current Start: %s", misc.format_ms_time(data[1][0]) if data else 'None')
         logger.debug("Current End: %s", misc.format_ms_time(data[-1][0]) if data else 'None')
@@ -266,7 +271,7 @@ def download_pair_history(datadir: Path,
 
 
 def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes: List[str],
-                                dl_path: Path, timerange: TimeRange,
+                                dl_path: Path, timerange: Optional[TimeRange] = None,
                                 erase=False) -> List[str]:
     """
     Refresh stored ohlcv data for backtesting and hyperopt operations.
diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index e386c3506..f8b630775 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -15,7 +15,7 @@ from freqtrade import OperationalException
 from freqtrade.configuration import TimeRange
 from freqtrade.data import history
 from freqtrade.data.history import (download_pair_history,
-                                    load_cached_data_for_updating,
+                                    _load_cached_data_for_updating,
                                     load_tickerdata_file,
                                     refresh_backtest_ohlcv_data,
                                     trim_tickerlist)
@@ -151,43 +151,43 @@ def test_load_cached_data_for_updating(mocker) -> None:
     # timeframe starts earlier than the cached data
     # should fully update data
     timerange = TimeRange('date', None, test_data[0][0] / 1000 - 1, 0)
-    data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange)
+    data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange)
     assert data == []
     assert start_ts == test_data[0][0] - 1000
 
     # same with 'line' timeframe
     num_lines = (test_data[-1][0] - test_data[1][0]) / 1000 / 60 + 120
-    data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m',
-                                                   TimeRange(None, 'line', 0, -num_lines))
+    data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m',
+                                                    TimeRange(None, 'line', 0, -num_lines))
     assert data == []
     assert start_ts < test_data[0][0] - 1
 
     # timeframe starts in the center of the cached data
     # should return the chached data w/o the last item
     timerange = TimeRange('date', None, test_data[0][0] / 1000 + 1, 0)
-    data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange)
+    data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange)
     assert data == test_data[:-1]
     assert test_data[-2][0] < start_ts < test_data[-1][0]
 
     # same with 'line' timeframe
     num_lines = (test_data[-1][0] - test_data[1][0]) / 1000 / 60 + 30
     timerange = TimeRange(None, 'line', 0, -num_lines)
-    data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange)
+    data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange)
     assert data == test_data[:-1]
     assert test_data[-2][0] < start_ts < test_data[-1][0]
 
     # timeframe starts after the chached data
     # should return the chached data w/o the last item
     timerange = TimeRange('date', None, test_data[-1][0] / 1000 + 1, 0)
-    data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange)
+    data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange)
     assert data == test_data[:-1]
     assert test_data[-2][0] < start_ts < test_data[-1][0]
 
     # Try loading last 30 lines.
-    # Not supported by load_cached_data_for_updating, we always need to get the full data.
+    # Not supported by _load_cached_data_for_updating, we always need to get the full data.
     num_lines = 30
     timerange = TimeRange(None, 'line', 0, -num_lines)
-    data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange)
+    data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange)
     assert data == test_data[:-1]
     assert test_data[-2][0] < start_ts < test_data[-1][0]
 
@@ -195,27 +195,27 @@ def test_load_cached_data_for_updating(mocker) -> None:
     # should return the chached data w/o the last item
     num_lines = 30
     timerange = TimeRange(None, 'line', 0, -num_lines)
-    data, start_ts = load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange)
+    data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange)
     assert data == test_data[:-1]
     assert test_data[-2][0] < start_ts < test_data[-1][0]
 
     # no datafile exist
     # should return timestamp start time
     timerange = TimeRange('date', None, now_ts - 10000, 0)
-    data, start_ts = load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', timerange)
+    data, start_ts = _load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', timerange)
     assert data == []
     assert start_ts == (now_ts - 10000) * 1000
 
     # same with 'line' timeframe
     num_lines = 30
     timerange = TimeRange(None, 'line', 0, -num_lines)
-    data, start_ts = load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', timerange)
+    data, start_ts = _load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', timerange)
     assert data == []
     assert start_ts == (now_ts - num_lines * 60) * 1000
 
     # no datafile exist, no timeframe is set
     # should return an empty array and None
-    data, start_ts = load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', None)
+    data, start_ts = _load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', None)
     assert data == []
     assert start_ts is None
 

From ad35a3d7ab93aafd8a2921d7d452e4de6f00e22e Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Mon, 7 Oct 2019 07:02:43 +0200
Subject: [PATCH 0619/3421] Small wording improvements

---
 docs/backtesting.md                    |  2 +-
 docs/bot-usage.md                      | 12 ++++++------
 freqtrade/configuration/cli_options.py |  2 +-
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/docs/backtesting.md b/docs/backtesting.md
index cc3f11026..ec31bec01 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -74,7 +74,7 @@ freqtrade backtesting --export trades --export-filename=backtest_samplestrategy.
 
 #### Supplying custom fee value
 
-Sometimes your account has certain fee rabates, which are not visible to ccxt.
+Sometimes your account has certain fee rebates (fee reductions starting with a certain account size or monthly volume), which are not visible to ccxt.
 To account for this in backtesting, you can use `--fee 0.001` to supply this value to backtesting.
 This fee must be a percentage, and will be applied twice (once for trade entry, and once for trade exit).
 
diff --git a/docs/bot-usage.md b/docs/bot-usage.md
index e28ac9970..24c89c018 100644
--- a/docs/bot-usage.md
+++ b/docs/bot-usage.md
@@ -185,8 +185,8 @@ optional arguments:
                         Specify max_open_trades to use.
   --stake_amount STAKE_AMOUNT
                         Specify stake_amount.
-  --fee FLOAT           Specify fee %. Should be in %, will be applied twice
-                        (on trade entry and exit).
+  --fee FLOAT           Specify fee ratio. Will be applied twice (on trade
+                        entry and exit).
   --eps, --enable-position-stacking
                         Allow buying the same pair multiple times (position
                         stacking).
@@ -246,8 +246,8 @@ optional arguments:
                         Specify max_open_trades to use.
   --stake_amount STAKE_AMOUNT
                         Specify stake_amount.
-  --fee FLOAT           Specify fee %. Should be in %, will be applied twice
-                        (on trade entry and exit).
+  --fee FLOAT           Specify fee ratio. Will be applied twice (on trade
+                        entry and exit).
   --customhyperopt NAME
                         Specify hyperopt class name (default:
                         `DefaultHyperOpts`).
@@ -310,8 +310,8 @@ optional arguments:
                         Specify max_open_trades to use.
   --stake_amount STAKE_AMOUNT
                         Specify stake_amount.
-  --fee FLOAT           Specify fee %. Should be in %, will be applied twice
-                        (on trade entry and exit).
+  --fee FLOAT           Specify fee ratio. Will be applied twice (on trade
+                        entry and exit).
   --stoplosses STOPLOSS_RANGE
                         Defines a range of stoploss values against which edge
                         will assess the strategy. The format is "min,max,step"
diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py
index 9f7f7b82f..7c2ba5325 100644
--- a/freqtrade/configuration/cli_options.py
+++ b/freqtrade/configuration/cli_options.py
@@ -146,7 +146,7 @@ AVAILABLE_CLI_OPTIONS = {
     ),
     "fee": Arg(
         '--fee',
-        help='Specify fee %%. Should be in %%, will be applied twice (on trade entry and exit).',
+        help='Specify fee ratio. Will be applied twice (on trade entry and exit).',
         type=float,
         metavar='FLOAT',
     ),

From e272cd485c4c22c788c83aeb543d19c82c79cc08 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 7 Oct 2019 10:22:59 +0000
Subject: [PATCH 0620/3421] Bump joblib from 0.13.2 to 0.14.0

Bumps [joblib](https://github.com/joblib/joblib) from 0.13.2 to 0.14.0.
- [Release notes](https://github.com/joblib/joblib/releases)
- [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst)
- [Commits](https://github.com/joblib/joblib/compare/0.13.2...0.14.0)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-hyperopt.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt
index bb0ad60f0..709c43d92 100644
--- a/requirements-hyperopt.txt
+++ b/requirements-hyperopt.txt
@@ -6,4 +6,4 @@ scipy==1.3.1
 scikit-learn==0.21.3
 scikit-optimize==0.5.2
 filelock==3.0.12
-joblib==0.13.2
+joblib==0.14.0

From be6fd3af9a0d2ced83f7d4ec12cb099f12bd6bbf Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 7 Oct 2019 10:24:06 +0000
Subject: [PATCH 0621/3421] Bump pytest from 5.2.0 to 5.2.1

Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.2.0 to 5.2.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/5.2.0...5.2.1)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-dev.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-dev.txt b/requirements-dev.txt
index 7df459af1..dfeed18d8 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -8,7 +8,7 @@ flake8==3.7.8
 flake8-type-annotations==0.1.0
 flake8-tidy-imports==2.0.0
 mypy==0.730
-pytest==5.2.0
+pytest==5.2.1
 pytest-asyncio==0.10.0
 pytest-cov==2.7.1
 pytest-mock==1.11.0

From 5e9ab3e2615ebaf796352368ade3c6cb59b13a2f Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 7 Oct 2019 10:24:29 +0000
Subject: [PATCH 0622/3421] Bump mkdocs-material from 4.4.2 to 4.4.3

Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.4.2 to 4.4.3.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.4.2...4.4.3)

Signed-off-by: dependabot-preview[bot] 
---
 docs/requirements-docs.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt
index 28ebc5916..0be47081c 100644
--- a/docs/requirements-docs.txt
+++ b/docs/requirements-docs.txt
@@ -1 +1 @@
-mkdocs-material==4.4.2
\ No newline at end of file
+mkdocs-material==4.4.3
\ No newline at end of file

From 652a04ac70dfb31e3f43cee096884f5c4746d544 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 7 Oct 2019 10:24:53 +0000
Subject: [PATCH 0623/3421] Bump ccxt from 1.18.1208 to 1.18.1225

Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1208 to 1.18.1225.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/1.18.1208...1.18.1225)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index 92b9c2597..71d370487 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -1,6 +1,6 @@
 # requirements without requirements installable via conda
 # mainly used for Raspberry pi installs
-ccxt==1.18.1208
+ccxt==1.18.1225
 SQLAlchemy==1.3.8
 python-telegram-bot==12.1.1
 arrow==0.15.2

From 568ecc201a6d3ce70fdf85449842d48e8dc8c4a6 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 7 Oct 2019 13:06:59 +0000
Subject: [PATCH 0624/3421] Bump sqlalchemy from 1.3.8 to 1.3.9

Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.8 to 1.3.9.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-common.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-common.txt b/requirements-common.txt
index 71d370487..872ebec62 100644
--- a/requirements-common.txt
+++ b/requirements-common.txt
@@ -1,7 +1,7 @@
 # requirements without requirements installable via conda
 # mainly used for Raspberry pi installs
 ccxt==1.18.1225
-SQLAlchemy==1.3.8
+SQLAlchemy==1.3.9
 python-telegram-bot==12.1.1
 arrow==0.15.2
 cachetools==3.1.1

From 80d58b7930a2eac053e6afd680cbc538c46f4150 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 7 Oct 2019 13:07:56 +0000
Subject: [PATCH 0625/3421] Bump pytest-mock from 1.11.0 to 1.11.1

Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.11.0 to 1.11.1.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v1.11.0...v1.11.1)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-dev.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-dev.txt b/requirements-dev.txt
index dfeed18d8..ba309a847 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -11,7 +11,7 @@ mypy==0.730
 pytest==5.2.1
 pytest-asyncio==0.10.0
 pytest-cov==2.7.1
-pytest-mock==1.11.0
+pytest-mock==1.11.1
 pytest-random-order==1.0.4
 
 # Convert jupyter notebooks to markdown documents

From c34ce15b1408decad948cb4d1595460132eb9f5b Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 7 Oct 2019 15:16:39 +0000
Subject: [PATCH 0626/3421] Bump pytest-cov from 2.7.1 to 2.8.1

Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 2.7.1 to 2.8.1.
- [Release notes](https://github.com/pytest-dev/pytest-cov/releases)
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v2.7.1...v2.8.1)

Signed-off-by: dependabot-preview[bot] 
---
 requirements-dev.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/requirements-dev.txt b/requirements-dev.txt
index ba309a847..6cf378c03 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -10,7 +10,7 @@ flake8-tidy-imports==2.0.0
 mypy==0.730
 pytest==5.2.1
 pytest-asyncio==0.10.0
-pytest-cov==2.7.1
+pytest-cov==2.8.1
 pytest-mock==1.11.1
 pytest-random-order==1.0.4
 

From 613300c61db36c6673281fcdf84ff0d2942d9083 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 8 Oct 2019 00:38:20 +0300
Subject: [PATCH 0627/3421] Add short description of the market() method into
 docs

---
 docs/strategy-customization.md | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md
index b927e5aad..caa465069 100644
--- a/docs/strategy-customization.md
+++ b/docs/strategy-customization.md
@@ -282,6 +282,8 @@ Please always check the mode of operation to select the correct method to get da
 - `ohlcv(pair, ticker_interval)` - Currently cached ticker data for the pair, returns DataFrame or empty DataFrame.
 - `historic_ohlcv(pair, ticker_interval)` - Returns historical data stored on disk.
 - `get_pair_dataframe(pair, ticker_interval)` - This is a universal method, which returns either historical data (for backtesting) or cached live data (for the Dry-Run and Live-Run modes).
+- `orderbook(pair, maximum)` - Returns latest orderbook data for the pair, a dict with bids/asks with a total of `maximum` entries.
+- `market(pair)` - Returns market data for the pair: fees, limits, precisions, activity flag, etc. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#markets) for more details on Market data structure.
 - `runmode` - Property containing the current runmode.
 
 #### Example: fetch live ohlcv / historic data for the first informative pair
@@ -346,7 +348,7 @@ def informative_pairs(self):
     It is however better to use resampling to longer time-intervals when possible
     to avoid hammering the exchange with too many requests and risk beeing blocked.
 
-### Additional data - Wallets
+### Additional data (Wallets)
 
 The strategy provides access to the `Wallets` object. This contains the current balances on the exchange.
 

From 057ab1b7a6f6429bac88a090973fa82552765263 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 8 Oct 2019 00:50:47 +0300
Subject: [PATCH 0628/3421] Remove unnecessary comments

---
 tests/optimize/test_backtesting.py | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py
index 589896c39..7e538c999 100644
--- a/tests/optimize/test_backtesting.py
+++ b/tests/optimize/test_backtesting.py
@@ -605,9 +605,6 @@ def test_backtest_pricecontours(default_conf, fee, mocker, testdatadir) -> None:
     # TODO: Evaluate usefullness of this, the patterns and buy-signls are unrealistic
     mocker.patch('freqtrade.exchange.Exchange.get_fee', fee)
     tests = [['raise', 19], ['lower', 0], ['sine', 35]]
-    # use_sell_signal is True by default now, it will sell on the sell signal instead of ROI,
-    # which is what we need here
-#    default_conf['ask_strategy'] = {"use_sell_signal": True}
 
     for [contour, numres] in tests:
         simple_backtest(default_conf, contour, numres, mocker, testdatadir)
@@ -648,9 +645,6 @@ def test_backtest_alternate_buy_sell(default_conf, fee, mocker, testdatadir):
     mocker.patch('freqtrade.optimize.backtesting.file_dump_json', MagicMock())
     backtest_conf = _make_backtest_conf(mocker, conf=default_conf,
                                         pair='UNITTEST/BTC', datadir=testdatadir)
-    # use_sell_signal is True by default now, it will sell on the sell signal instead of ROI,
-    # which is what we need here
-#    default_conf['ask_strategy'] = {"use_sell_signal": True}
     default_conf['ticker_interval'] = '1m'
     backtesting = Backtesting(default_conf)
     backtesting.strategy.advise_buy = _trend_alternate  # Override
@@ -691,9 +685,6 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir)
 
     # Remove data for one pair from the beginning of the data
     data[pair] = data[pair][tres:].reset_index()
-    # use_sell_signal is True by default now, it will sell on the sell signal instead of ROI,
-    # which is what we need here
-#    default_conf['ask_strategy'] = {"use_sell_signal": True}
     default_conf['ticker_interval'] = '5m'
 
     backtesting = Backtesting(default_conf)

From e78e42339d9759dbe40bea3769643de05a6edaa1 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 8 Oct 2019 00:58:25 +0300
Subject: [PATCH 0629/3421] Improve docs wordings

---
 docs/configuration.md | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/docs/configuration.md b/docs/configuration.md
index a31650f78..0eff4da88 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -59,15 +59,15 @@ Mandatory parameters are marked as **Required**, which means that they are requi
 | `unfilledtimeout.sell` | 10 | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled.
 | `bid_strategy.ask_last_balance` | 0.0 | **Required.** Set the bidding price. More information [below](#understand-ask_last_balance).
 | `bid_strategy.use_order_book` | false | Allows buying of pair using the rates in Order Book Bids.
-| `bid_strategy.order_book_top` | 0 | Bot will use the top N rate in Order Book Bids. Ie. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids.
+| `bid_strategy.order_book_top` | 0 | Bot will use the top N rate in Order Book Bids. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids.
 | `bid_strategy. check_depth_of_market.enabled` | false | Does not buy if the % difference of buy orders and sell orders is met in Order Book.
 | `bid_strategy. check_depth_of_market.bids_to_ask_delta` | 0 | The % difference of buy orders and sell orders found in Order Book. A value lesser than 1 means sell orders is greater, while value greater than 1 means buy orders is higher.
 | `ask_strategy.use_order_book` | false | Allows selling of open traded pair using the rates in Order Book Asks.
 | `ask_strategy.order_book_min` | 0 | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
 | `ask_strategy.order_book_max` | 0 | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
-| `ask_strategy.use_sell_signal` | true | Use your strategy sell signals in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy).
-| `ask_strategy.sell_profit_only` | false | Wait until you have made a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy).
-| `ask_strategy.ignore_roi_if_buy_signal` | false | Do not sell if the buy-signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy).
+| `ask_strategy.use_sell_signal` | true | Use sell signals produced by the strategy in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy).
+| `ask_strategy.sell_profit_only` | false | Wait until the bot makes a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy).
+| `ask_strategy.ignore_roi_if_buy_signal` | false | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy).
 | `order_types` | None | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy).
 | `order_time_in_force` | None | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy).
 | `exchange.name` |  | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename).

From 4d062d41cb487d5d984eb23bf08dcfbf491e40b6 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Tue, 8 Oct 2019 01:07:22 +0300
Subject: [PATCH 0630/3421] Improve comments in the SampleStrategy; set
 use_sell_signal = True

---
 user_data/strategies/sample_strategy.py | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/user_data/strategies/sample_strategy.py b/user_data/strategies/sample_strategy.py
index 0649c6f94..623addb1e 100644
--- a/user_data/strategies/sample_strategy.py
+++ b/user_data/strategies/sample_strategy.py
@@ -27,12 +27,12 @@ class SampleStrategy(IStrategy):
     - the prototype for the methods: minimal_roi, stoploss, populate_indicators, populate_buy_trend,
     populate_sell_trend, hyperopt_space, buy_strategy_generator
     """
-    # Strategy intervace version - allow new iterations of the strategy interface.
+    # Strategy interface version - allow new iterations of the strategy interface.
     # Check the documentation or the Sample strategy to get the latest version.
     INTERFACE_VERSION = 2
 
     # Minimal ROI designed for the strategy.
-    # This attribute will be overridden if the config file contains "minimal_roi"
+    # This attribute will be overridden if the config file contains "minimal_roi".
     minimal_roi = {
         "40": 0.0,
         "30": 0.01,
@@ -40,27 +40,27 @@ class SampleStrategy(IStrategy):
         "0": 0.04
     }
 
-    # Optimal stoploss designed for the strategy
-    # This attribute will be overridden if the config file contains "stoploss"
+    # Optimal stoploss designed for the strategy.
+    # This attribute will be overridden if the config file contains "stoploss".
     stoploss = -0.10
 
-    # trailing stoploss
+    # Trailing stoploss
     trailing_stop = False
     # trailing_stop_positive = 0.01
     # trailing_stop_positive_offset = 0.0  # Disabled / not configured
 
-    # Optimal ticker interval for the strategy
+    # Optimal ticker interval for the strategy.
     ticker_interval = '5m'
 
-    # run "populate_indicators" only for new candle
+    # Run "populate_indicators()" only for new candle.
     process_only_new_candles = False
 
-    # Experimental settings (configuration will overide these if set)
-    use_sell_signal = False
+    # These values can be overridden in the "ask_strategy" section in the config.
+    use_sell_signal = True
     sell_profit_only = False
     ignore_roi_if_buy_signal = False
 
-    # Optional order type mapping
+    # Optional order type mapping.
     order_types = {
         'buy': 'limit',
         'sell': 'limit',
@@ -68,7 +68,7 @@ class SampleStrategy(IStrategy):
         'stoploss_on_exchange': False
     }
 
-    # Optional order time in force
+    # Optional order time in force.
     order_time_in_force = {
         'buy': 'gtc',
         'sell': 'gtc'

From 86ef32318c473406b99c575e6476cfbfff990ad6 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 6 Oct 2019 19:27:20 +0200
Subject: [PATCH 0631/3421] Add versions to doc theme

---
 docs/partials/header.html     |  4 +++-
 docs/stylesheets/ft.extra.css | 14 ++++++++++++++
 mkdocs.yml                    |  2 ++
 3 files changed, 19 insertions(+), 1 deletion(-)
 create mode 100644 docs/stylesheets/ft.extra.css

diff --git a/docs/partials/header.html b/docs/partials/header.html
index 84c254b5a..32202bccc 100644
--- a/docs/partials/header.html
+++ b/docs/partials/header.html
@@ -49,4 +49,6 @@
     
     
     
-
\ No newline at end of file
+    
+
diff --git a/docs/stylesheets/ft.extra.css b/docs/stylesheets/ft.extra.css
new file mode 100644
index 000000000..6032dbe73
--- /dev/null
+++ b/docs/stylesheets/ft.extra.css
@@ -0,0 +1,14 @@
+.rst-versions  {
+    font-size: .7rem;
+    color: white;
+}
+
+.rst-versions.rst-badge .rst-current-version {
+    font-size: .7rem;
+    color: white;
+}
+
+.rst-versions .rst-other-versions {
+    color: white;
+    text-decoration: underline;
+}
diff --git a/mkdocs.yml b/mkdocs.yml
index 2a50c97e4..197df7dc8 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -32,6 +32,8 @@ theme:
   palette:
     primary: 'blue grey'
     accent: 'tear'
+extra_css:
+  - 'stylesheets/ft.extra.css'
 markdown_extensions:
     - admonition
     - codehilite:

From 2e91ee3849e5a66c6bbe8729fd54f2bf928663bf Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 8 Oct 2019 19:41:18 +0200
Subject: [PATCH 0632/3421] remove underline from docs style

---
 docs/stylesheets/ft.extra.css | 1 -
 1 file changed, 1 deletion(-)

diff --git a/docs/stylesheets/ft.extra.css b/docs/stylesheets/ft.extra.css
index 6032dbe73..3369fa177 100644
--- a/docs/stylesheets/ft.extra.css
+++ b/docs/stylesheets/ft.extra.css
@@ -10,5 +10,4 @@
 
 .rst-versions .rst-other-versions {
     color: white;
-    text-decoration: underline;
 }

From 69c23c00e00ddc20169381d4f872a65df2556db0 Mon Sep 17 00:00:00 2001
From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com>
Date: Tue, 8 Oct 2019 22:07:38 +0300
Subject: [PATCH 0633/3421] Fix minor typos in the docs

---
 docs/strategy-customization.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md
index b927e5aad..c1c4fb6f6 100644
--- a/docs/strategy-customization.md
+++ b/docs/strategy-customization.md
@@ -246,9 +246,9 @@ Instead, have a look at the section [Storing information](#Storing-information)
 
 ### Storing information
 
-Storing information can be accomplished by crating a new dictionary within the strategy class.
+Storing information can be accomplished by creating a new dictionary within the strategy class.
 
-The name of the variable can be choosen at will, but should be prefixed with `cust_` to avoid naming collisions with predefined strategy variables.
+The name of the variable can be chosen at will, but should be prefixed with `cust_` to avoid naming collisions with predefined strategy variables.
 
 ```python
 class Awesomestrategy(IStrategy):
@@ -344,7 +344,7 @@ def informative_pairs(self):
     As these pairs will be refreshed as part of the regular whitelist refresh, it's best to keep this list short.
     All intervals and all pairs can be specified as long as they are available (and active) on the used exchange.
     It is however better to use resampling to longer time-intervals when possible
-    to avoid hammering the exchange with too many requests and risk beeing blocked.
+    to avoid hammering the exchange with too many requests and risk being blocked.
 
 ### Additional data - Wallets
 

From e1c14bc86cfd87af23d9d65e4a94fa3f625b02fe Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 8 Oct 2019 21:10:43 +0200
Subject: [PATCH 0634/3421] Don't use os.path in test_history

---
 tests/data/test_history.py | 74 +++++++++++++++++++-------------------
 1 file changed, 36 insertions(+), 38 deletions(-)

diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index f8b630775..96bc0da56 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -1,7 +1,6 @@
 # pragma pylint: disable=missing-docstring, protected-access, C0103
 
 import json
-import os
 import uuid
 from pathlib import Path
 from shutil import copyfile
@@ -28,35 +27,35 @@ from tests.conftest import get_patched_exchange, log_has, log_has_re, patch_exch
 _BTC_UNITTEST_LENGTH = 13681
 
 
-def _backup_file(file: str, copy_file: bool = False) -> None:
+def _backup_file(file: Path, copy_file: bool = False) -> None:
     """
     Backup existing file to avoid deleting the user file
     :param file: complete path to the file
     :param touch_file: create an empty file in replacement
     :return: None
     """
-    file_swp = file + '.swp'
-    if os.path.isfile(file):
-        os.rename(file, file_swp)
+    file_swp = str(file) + '.swp'
+    if file.is_file():
+        file.rename(file_swp)
 
         if copy_file:
             copyfile(file_swp, file)
 
 
-def _clean_test_file(file: str) -> None:
+def _clean_test_file(file: Path) -> None:
     """
     Backup existing file to avoid deleting the user file
     :param file: complete path to the file
     :return: None
     """
-    file_swp = file + '.swp'
+    file_swp = Path(str(file) + '.swp')
     # 1. Delete file from the test
-    if os.path.isfile(file):
-        os.remove(file)
+    if file.is_file():
+        file.unlink()
 
     # 2. Rollback to the initial file
-    if os.path.isfile(file_swp):
-        os.rename(file_swp, file)
+    if file_swp.is_file():
+        file_swp.rename(file)
 
 
 def test_load_data_30min_ticker(mocker, caplog, default_conf, testdatadir) -> None:
@@ -80,10 +79,10 @@ def test_load_data_7min_ticker(mocker, caplog, default_conf, testdatadir) -> Non
 
 def test_load_data_1min_ticker(ticker_history, mocker, caplog, testdatadir) -> None:
     mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history)
-    file = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'UNITTEST_BTC-1m.json')
+    file = testdatadir / 'UNITTEST_BTC-1m.json'
     _backup_file(file, copy_file=True)
     history.load_data(datadir=testdatadir, ticker_interval='1m', pairs=['UNITTEST/BTC'])
-    assert os.path.isfile(file) is True
+    assert file.is_file()
     assert not log_has(
         'Download history data for pair: "UNITTEST/BTC", interval: 1m '
         'and store in None.', caplog
@@ -98,14 +97,14 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog,
     """
     mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history_list)
     exchange = get_patched_exchange(mocker, default_conf)
-    file = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'MEME_BTC-1m.json')
+    file = testdatadir / 'MEME_BTC-1m.json'
 
     _backup_file(file)
     # do not download a new pair if refresh_pairs isn't set
     history.load_pair_history(datadir=testdatadir,
                               ticker_interval='1m',
                               pair='MEME/BTC')
-    assert os.path.isfile(file) is False
+    assert not file.is_file()
     assert log_has(
         'No history data for pair: "MEME/BTC", interval: 1m. '
         'Use `freqtrade download-data` to download the data', caplog
@@ -117,7 +116,7 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog,
                               refresh_pairs=True,
                               exchange=exchange,
                               pair='MEME/BTC')
-    assert os.path.isfile(file) is True
+    assert file.is_file()
     assert log_has_re(
         'Download history data for pair: "MEME/BTC", interval: 1m '
         'and store in .*', caplog
@@ -223,18 +222,18 @@ def test_load_cached_data_for_updating(mocker) -> None:
 def test_download_pair_history(ticker_history_list, mocker, default_conf, testdatadir) -> None:
     mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history_list)
     exchange = get_patched_exchange(mocker, default_conf)
-    file1_1 = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'MEME_BTC-1m.json')
-    file1_5 = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'MEME_BTC-5m.json')
-    file2_1 = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'CFI_BTC-1m.json')
-    file2_5 = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'CFI_BTC-5m.json')
+    file1_1 = testdatadir / 'MEME_BTC-1m.json'
+    file1_5 = testdatadir / 'MEME_BTC-5m.json'
+    file2_1 = testdatadir / 'CFI_BTC-1m.json'
+    file2_5 = testdatadir / 'CFI_BTC-5m.json'
 
     _backup_file(file1_1)
     _backup_file(file1_5)
     _backup_file(file2_1)
     _backup_file(file2_5)
 
-    assert os.path.isfile(file1_1) is False
-    assert os.path.isfile(file2_1) is False
+    assert not file1_1.is_file()
+    assert not file2_1.is_file()
 
     assert download_pair_history(datadir=testdatadir, exchange=exchange,
                                  pair='MEME/BTC',
@@ -243,15 +242,15 @@ def test_download_pair_history(ticker_history_list, mocker, default_conf, testda
                                  pair='CFI/BTC',
                                  ticker_interval='1m')
     assert not exchange._pairs_last_refresh_time
-    assert os.path.isfile(file1_1) is True
-    assert os.path.isfile(file2_1) is True
+    assert file1_1.is_file()
+    assert file2_1.is_file()
 
     # clean files freshly downloaded
     _clean_test_file(file1_1)
     _clean_test_file(file2_1)
 
-    assert os.path.isfile(file1_5) is False
-    assert os.path.isfile(file2_5) is False
+    assert not file1_5.is_file()
+    assert not file2_5.is_file()
 
     assert download_pair_history(datadir=testdatadir, exchange=exchange,
                                  pair='MEME/BTC',
@@ -260,8 +259,8 @@ def test_download_pair_history(ticker_history_list, mocker, default_conf, testda
                                  pair='CFI/BTC',
                                  ticker_interval='5m')
     assert not exchange._pairs_last_refresh_time
-    assert os.path.isfile(file1_5) is True
-    assert os.path.isfile(file2_5) is True
+    assert file1_5.is_file()
+    assert file2_5.is_file()
 
     # clean files freshly downloaded
     _clean_test_file(file1_5)
@@ -288,8 +287,8 @@ def test_download_backtesting_data_exception(ticker_history, mocker, caplog,
 
     exchange = get_patched_exchange(mocker, default_conf)
 
-    file1_1 = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'MEME_BTC-1m.json')
-    file1_5 = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'MEME_BTC-5m.json')
+    file1_1 = testdatadir / 'MEME_BTC-1m.json'
+    file1_5 = testdatadir / 'MEME_BTC-5m.json'
     _backup_file(file1_1)
     _backup_file(file1_5)
 
@@ -359,8 +358,8 @@ def test_init(default_conf, mocker) -> None:
     )
 
 
-def test_trim_tickerlist() -> None:
-    file = os.path.join(os.path.dirname(__file__), '..', 'testdata', 'UNITTEST_BTC-1m.json')
+def test_trim_tickerlist(testdatadir) -> None:
+    file = testdatadir / 'UNITTEST_BTC-1m.json'
     with open(file) as data_file:
         ticker_list = json.load(data_file)
     ticker_list_len = len(ticker_list)
@@ -449,22 +448,21 @@ def test_trim_tickerlist() -> None:
     assert not ticker
 
 
-def test_file_dump_json_tofile() -> None:
-    file = os.path.join(os.path.dirname(__file__), '..', 'testdata',
-                        'test_{id}.json'.format(id=str(uuid.uuid4())))
+def test_file_dump_json_tofile(testdatadir) -> None:
+    file = testdatadir / 'test_{id}.json'.format(id=str(uuid.uuid4()))
     data = {'bar': 'foo'}
 
     # check the file we will create does not exist
-    assert os.path.isfile(file) is False
+    assert not file.is_file()
 
     # Create the Json file
     file_dump_json(file, data)
 
     # Check the file was create
-    assert os.path.isfile(file) is True
+    assert file.is_file()
 
     # Open the Json file created and test the data is in it
-    with open(file) as data_file:
+    with file.open() as data_file:
         json_from_file = json.load(data_file)
 
     assert 'bar' in json_from_file

From bcd02a871f5caba0c2e1314c77a550c6bb268898 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 8 Oct 2019 21:16:35 +0200
Subject: [PATCH 0635/3421] Fix beeing again ...

---
 CONTRIBUTING.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 72c04e151..a087103c6 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -114,6 +114,6 @@ Contributors may be given commit privileges. Preference will be given to those w
 1. Access to resources for cross-platform development and testing.
 1. Time to devote to the project regularly.
 
-Beeing a Committer does not grant write permission on `develop` or `master` for security reasons (Users trust FreqTrade with their Exchange API keys).
+Being a Committer does not grant write permission on `develop` or `master` for security reasons (Users trust FreqTrade with their Exchange API keys).
 
-After beeing Committer for some time, a Committer may be named Core Committer and given full repository access.
+After being Committer for some time, a Committer may be named Core Committer and given full repository access.

From 434e0234c5a55cf641189e413d9470abcba739cf Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 9 Oct 2019 02:37:29 +0300
Subject: [PATCH 0636/3421] Add handling deprecated settings

---
 freqtrade/configuration/configuration.py      | 11 +++-
 .../configuration/deprecated_settings.py      | 59 +++++++++++++++++++
 2 files changed, 68 insertions(+), 2 deletions(-)
 create mode 100644 freqtrade/configuration/deprecated_settings.py

diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py
index 764593d0f..84d58f754 100644
--- a/freqtrade/configuration/configuration.py
+++ b/freqtrade/configuration/configuration.py
@@ -9,8 +9,9 @@ from typing import Any, Callable, Dict, List, Optional
 
 from freqtrade import OperationalException, constants
 from freqtrade.configuration.check_exchange import check_exchange
-from freqtrade.configuration.config_validation import (
-    validate_config_consistency, validate_config_schema)
+from freqtrade.configuration.config_validation import (validate_config_consistency,
+                                                       validate_config_schema)
+from freqtrade.configuration.deprecated_settings import process_temporary_deprecated_settings
 from freqtrade.configuration.directory_operations import (create_datadir,
                                                           create_userdata_dir)
 from freqtrade.configuration.load_config import load_config_file
@@ -75,6 +76,10 @@ class Configuration:
         # Normalize config
         if 'internals' not in config:
             config['internals'] = {}
+        # TODO: This can be deleted along with removal of deprecated
+        # experimental settings
+        if 'ask_strategy' not in config:
+            config['ask_strategy'] = {}
 
         # validate configuration before returning
         logger.info('Validating configuration ...')
@@ -106,6 +111,8 @@ class Configuration:
 
         self._resolve_pairs_list(config)
 
+        process_temporary_deprecated_settings(config)
+
         validate_config_consistency(config)
 
         return config
diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py
new file mode 100644
index 000000000..927497c56
--- /dev/null
+++ b/freqtrade/configuration/deprecated_settings.py
@@ -0,0 +1,59 @@
+"""
+Functions to handle deprecated warnings
+"""
+
+import logging
+from typing import Any, Dict
+
+from freqtrade import OperationalException
+
+
+logger = logging.getLogger(__name__)
+
+
+def check_conflicting_settings(config: Dict[str, Any],
+                               section1: str, name1: str,
+                               section2: str, name2: str):
+    section1_config = config.get(section1, {})
+    section2_config = config.get(section2, {})
+    if name1 in section1_config and name2 in section2_config:
+        raise OperationalException(
+            f"Conflicting settings `{section1}.{name1}` and `{section2}.{name2}` "
+            "(DEPRECATED) detected in the configuration file. "
+            "This deprecated setting will be removed in the next versions of Freqtrade. "
+            f"Please delete it from your configuration and use the `{section1}.{name1}` "
+            "setting instead."
+        )
+
+
+def process_deprecated_setting(config: Dict[str, Any],
+                               section1: str, name1: str,
+                               section2: str, name2: str):
+    section2_config = config.get(section2, {})
+
+    if name2 in section2_config:
+        logger.warning(
+            "DEPRECATED: "
+            f"The `{section2}.{name2}` setting is deprecated and "
+            "will be removed in the next versions of Freqtrade. "
+            f"Please use the `{section1}.{name1}` setting in your configuration instead."
+        )
+        section1_config = config.get(section1, {})
+        section1_config[name1] = section2_config[name2]
+
+
+def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None:
+
+    check_conflicting_settings(config, 'ask_strategy', 'use_sell_signal',
+                               'experimental', 'use_sell_signal')
+    check_conflicting_settings(config, 'ask_strategy', 'sell_profit_only',
+                               'experimental', 'sell_profit_only')
+    check_conflicting_settings(config, 'ask_strategy', 'ignore_roi_if_buy_signal',
+                               'experimental', 'ignore_roi_if_buy_signal')
+
+    process_deprecated_setting(config, 'ask_strategy', 'use_sell_signal',
+                               'experimental', 'use_sell_signal')
+    process_deprecated_setting(config, 'ask_strategy', 'sell_profit_only',
+                               'experimental', 'sell_profit_only')
+    process_deprecated_setting(config, 'ask_strategy', 'ignore_roi_if_buy_signal',
+                               'experimental', 'ignore_roi_if_buy_signal')

From 2a9c06c40fa62456b15fbae78e4b5ace3d55ee7b Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 9 Oct 2019 02:44:04 +0300
Subject: [PATCH 0637/3421] Test added

---
 tests/test_configuration.py | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 0f2d6a50a..69e6d621c 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -14,6 +14,7 @@ from freqtrade.configuration import (Arguments, Configuration,
                                      validate_config_consistency)
 from freqtrade.configuration.check_exchange import check_exchange
 from freqtrade.configuration.config_validation import validate_config_schema
+from freqtrade.configuration.deprecated_settings import (process_temporary_deprecated_settings)
 from freqtrade.configuration.directory_operations import (create_datadir,
                                                           create_userdata_dir)
 from freqtrade.configuration.load_config import load_config_file
@@ -897,3 +898,27 @@ def test_pairlist_resolving_fallback(mocker):
     assert config['pairs'] == ['ETH/BTC', 'XRP/BTC']
     assert config['exchange']['name'] == 'binance'
     assert config['datadir'] == str(Path.cwd() / "user_data/data/binance")
+
+
+@pytest.mark.parametrize("setting", [
+        ("ask_strategy", "use_sell_signal", True,
+         "experimental", "use_sell_signal", False),
+        ("ask_strategy", "sell_profit_only", False,
+         "experimental", "sell_profit_only", True),
+        ("ask_strategy", "ignore_roi_if_buy_signal", False,
+         "experimental", "ignore_roi_if_buy_signal", True),
+    ])
+def test_deprecated_experimental(mocker, default_conf, setting, caplog):
+    patched_configuration_load_config_file(mocker, default_conf)
+
+    default_conf[setting[3]] = {}
+    default_conf[setting[0]][setting[1]] = setting[2]
+    default_conf[setting[3]][setting[4]] = setting[5]
+
+    with pytest.raises(OperationalException, match=r'DEPRECATED'):
+        process_temporary_deprecated_settings(default_conf)
+
+    del default_conf[setting[0]][setting[1]]
+    process_temporary_deprecated_settings(default_conf)
+    assert log_has_re('DEPRECATED', caplog)
+    assert default_conf[setting[0]][setting[1]] == setting[5]

From cdd1bc425b26e5a7f24952d3cf5415b131dd69b3 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 9 Oct 2019 03:12:30 +0300
Subject: [PATCH 0638/3421] Fix typo

---
 freqtrade/configuration/deprecated_settings.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py
index 927497c56..f00b23894 100644
--- a/freqtrade/configuration/deprecated_settings.py
+++ b/freqtrade/configuration/deprecated_settings.py
@@ -1,5 +1,5 @@
 """
-Functions to handle deprecated warnings
+Functions to handle deprecated settings
 """
 
 import logging

From 23b5c0e833b2702b3649ddeec6d11ebdf11b5700 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Wed, 9 Oct 2019 18:22:54 +0300
Subject: [PATCH 0639/3421] Improve tests for handling deprecated settings

---
 tests/test_configuration.py | 105 +++++++++++++++++++++++++++++++++++-
 1 file changed, 103 insertions(+), 2 deletions(-)

diff --git a/tests/test_configuration.py b/tests/test_configuration.py
index 69e6d621c..c6864a643 100644
--- a/tests/test_configuration.py
+++ b/tests/test_configuration.py
@@ -14,7 +14,9 @@ from freqtrade.configuration import (Arguments, Configuration,
                                      validate_config_consistency)
 from freqtrade.configuration.check_exchange import check_exchange
 from freqtrade.configuration.config_validation import validate_config_schema
-from freqtrade.configuration.deprecated_settings import (process_temporary_deprecated_settings)
+from freqtrade.configuration.deprecated_settings import (check_conflicting_settings,
+                                                         process_deprecated_setting,
+                                                         process_temporary_deprecated_settings)
 from freqtrade.configuration.directory_operations import (create_datadir,
                                                           create_userdata_dir)
 from freqtrade.configuration.load_config import load_config_file
@@ -908,17 +910,116 @@ def test_pairlist_resolving_fallback(mocker):
         ("ask_strategy", "ignore_roi_if_buy_signal", False,
          "experimental", "ignore_roi_if_buy_signal", True),
     ])
-def test_deprecated_experimental(mocker, default_conf, setting, caplog):
+def test_process_temporary_deprecated_settings(mocker, default_conf, setting, caplog):
     patched_configuration_load_config_file(mocker, default_conf)
 
+    # Create sections for new and deprecated settings
+    # (they may not exist in the config)
+    default_conf[setting[0]] = {}
     default_conf[setting[3]] = {}
+    # Assign new setting
     default_conf[setting[0]][setting[1]] = setting[2]
+    # Assign deprecated setting
     default_conf[setting[3]][setting[4]] = setting[5]
 
+    # New and deprecated settings are conflicting ones
     with pytest.raises(OperationalException, match=r'DEPRECATED'):
         process_temporary_deprecated_settings(default_conf)
 
+    caplog.clear()
+
+    # Delete new setting
     del default_conf[setting[0]][setting[1]]
+
     process_temporary_deprecated_settings(default_conf)
     assert log_has_re('DEPRECATED', caplog)
+    # The value of the new setting shall have been set to the
+    # value of the deprecated one
     assert default_conf[setting[0]][setting[1]] == setting[5]
+
+
+def test_check_conflicting_settings(mocker, default_conf, caplog):
+    patched_configuration_load_config_file(mocker, default_conf)
+
+    # Create sections for new and deprecated settings
+    # (they may not exist in the config)
+    default_conf['sectionA'] = {}
+    default_conf['sectionB'] = {}
+    # Assign new setting
+    default_conf['sectionA']['new_setting'] = 'valA'
+    # Assign deprecated setting
+    default_conf['sectionB']['deprecated_setting'] = 'valB'
+
+    # New and deprecated settings are conflicting ones
+    with pytest.raises(OperationalException, match=r'DEPRECATED'):
+        check_conflicting_settings(default_conf,
+                                   'sectionA', 'new_setting',
+                                   'sectionB', 'deprecated_setting')
+
+    caplog.clear()
+
+    # Delete new setting (deprecated exists)
+    del default_conf['sectionA']['new_setting']
+    check_conflicting_settings(default_conf,
+                               'sectionA', 'new_setting',
+                               'sectionB', 'deprecated_setting')
+    assert not log_has_re('DEPRECATED', caplog)
+    assert 'new_setting' not in default_conf['sectionA']
+
+    caplog.clear()
+
+    # Assign new setting
+    default_conf['sectionA']['new_setting'] = 'valA'
+    # Delete deprecated setting
+    del default_conf['sectionB']['deprecated_setting']
+    check_conflicting_settings(default_conf,
+                               'sectionA', 'new_setting',
+                               'sectionB', 'deprecated_setting')
+    assert not log_has_re('DEPRECATED', caplog)
+    assert default_conf['sectionA']['new_setting'] == 'valA'
+
+
+def test_process_deprecated_setting(mocker, default_conf, caplog):
+    patched_configuration_load_config_file(mocker, default_conf)
+
+    # Create sections for new and deprecated settings
+    # (they may not exist in the config)
+    default_conf['sectionA'] = {}
+    default_conf['sectionB'] = {}
+    # Assign new setting
+    default_conf['sectionA']['new_setting'] = 'valA'
+    # Assign deprecated setting
+    default_conf['sectionB']['deprecated_setting'] = 'valB'
+
+    # Both new and deprecated settings exists
+    process_deprecated_setting(default_conf,
+                               'sectionA', 'new_setting',
+                               'sectionB', 'deprecated_setting')
+    assert log_has_re('DEPRECATED', caplog)
+    # The value of the new setting shall have been set to the
+    # value of the deprecated one
+    assert default_conf['sectionA']['new_setting'] == 'valB'
+
+    caplog.clear()
+
+    # Delete new setting (deprecated exists)
+    del default_conf['sectionA']['new_setting']
+    process_deprecated_setting(default_conf,
+                               'sectionA', 'new_setting',
+                               'sectionB', 'deprecated_setting')
+    assert log_has_re('DEPRECATED', caplog)
+    # The value of the new setting shall have been set to the
+    # value of the deprecated one
+    assert default_conf['sectionA']['new_setting'] == 'valB'
+
+    caplog.clear()
+
+    # Assign new setting
+    default_conf['sectionA']['new_setting'] = 'valA'
+    # Delete deprecated setting
+    del default_conf['sectionB']['deprecated_setting']
+    process_deprecated_setting(default_conf,
+                               'sectionA', 'new_setting',
+                               'sectionB', 'deprecated_setting')
+    assert not log_has_re('DEPRECATED', caplog)
+    assert default_conf['sectionA']['new_setting'] == 'valA'

From c4105436ebbad89d37922aad57068bef5c5cca32 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 10 Oct 2019 04:37:32 +0300
Subject: [PATCH 0640/3421] Disable defaulting to DefaultHyperOpts and
 DefaultHyperOptLoss

---
 .travis.yml                              |  2 +-
 docs/bot-usage.md                        |  8 +--
 freqtrade/configuration/cli_options.py   |  7 +-
 freqtrade/constants.py                   |  2 -
 freqtrade/resolvers/hyperopt_resolver.py | 27 +++++---
 tests/optimize/test_hyperopt.py          | 81 +++++++++++++++++++++---
 6 files changed, 96 insertions(+), 31 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index b066e7044..7a75a76c2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -32,7 +32,7 @@ jobs:
       name: backtest
     - script:
       - cp config.json.example config.json
-      - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy DefaultStrategy
+      - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy DefaultStrategy --customhyperopt DefaultHyperOpts --hyperopt-loss DefaultHyperOptLoss
       name: hyperopt
     - script: flake8
       name: flake8
diff --git a/docs/bot-usage.md b/docs/bot-usage.md
index 2b66d3c25..fcf82826a 100644
--- a/docs/bot-usage.md
+++ b/docs/bot-usage.md
@@ -285,8 +285,8 @@ optional arguments:
   --stake_amount STAKE_AMOUNT
                         Specify stake_amount.
   --customhyperopt NAME
-                        Specify hyperopt class name (default:
-                        `DefaultHyperOpts`).
+                        Specify hyperopt class name which will be used by the
+                        bot.
   --hyperopt-path PATH  Specify additional lookup path for Hyperopts and
                         Hyperopt Loss functions.
   --eps, --enable-position-stacking
@@ -322,8 +322,8 @@ optional arguments:
                         generate completely different results, since the
                         target for optimization is different. Built-in
                         Hyperopt-loss-functions are: DefaultHyperOptLoss,
-                        OnlyProfitHyperOptLoss, SharpeHyperOptLoss.(default:
-                        `DefaultHyperOptLoss`).
+                        OnlyProfitHyperOptLoss, SharpeHyperOptLoss.
+
 
 Common arguments:
   -v, --verbose         Verbose mode (-vv for more, -vvv to get all messages).
diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py
index 2ecd4cfc5..6928ddfdb 100644
--- a/freqtrade/configuration/cli_options.py
+++ b/freqtrade/configuration/cli_options.py
@@ -153,9 +153,8 @@ AVAILABLE_CLI_OPTIONS = {
     # Hyperopt
     "hyperopt": Arg(
         '--customhyperopt',
-        help='Specify hyperopt class name (default: `%(default)s`).',
+        help='Specify hyperopt class name which will be used by the bot.',
         metavar='NAME',
-        default=constants.DEFAULT_HYPEROPT,
     ),
     "hyperopt_path": Arg(
         '--hyperopt-path',
@@ -232,10 +231,8 @@ AVAILABLE_CLI_OPTIONS = {
         help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). '
         'Different functions can generate completely different results, '
         'since the target for optimization is different. Built-in Hyperopt-loss-functions are: '
-        'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss.'
-        '(default: `%(default)s`).',
+        'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss.',
         metavar='NAME',
-        default=constants.DEFAULT_HYPEROPT_LOSS,
     ),
     # List exchanges
     "print_one_column": Arg(
diff --git a/freqtrade/constants.py b/freqtrade/constants.py
index 749ae25b5..2f490c900 100644
--- a/freqtrade/constants.py
+++ b/freqtrade/constants.py
@@ -9,8 +9,6 @@ PROCESS_THROTTLE_SECS = 5  # sec
 DEFAULT_TICKER_INTERVAL = 5  # min
 HYPEROPT_EPOCH = 100  # epochs
 RETRY_TIMEOUT = 30  # sec
-DEFAULT_HYPEROPT = 'DefaultHyperOpts'
-DEFAULT_HYPEROPT_LOSS = 'DefaultHyperOptLoss'
 DEFAULT_DB_PROD_URL = 'sqlite:///tradesv3.sqlite'
 DEFAULT_DB_DRYRUN_URL = 'sqlite://'
 UNLIMITED_STAKE_AMOUNT = 'unlimited'
diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py
index e96394d69..45fe2548e 100644
--- a/freqtrade/resolvers/hyperopt_resolver.py
+++ b/freqtrade/resolvers/hyperopt_resolver.py
@@ -8,7 +8,6 @@ from pathlib import Path
 from typing import Optional, Dict
 
 from freqtrade import OperationalException
-from freqtrade.constants import DEFAULT_HYPEROPT, DEFAULT_HYPEROPT_LOSS
 from freqtrade.optimize.hyperopt_interface import IHyperOpt
 from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss
 from freqtrade.resolvers import IResolver
@@ -20,17 +19,21 @@ class HyperOptResolver(IResolver):
     """
     This class contains all the logic to load custom hyperopt class
     """
-
     __slots__ = ['hyperopt']
 
-    def __init__(self, config: Dict) -> None:
+    def __init__(self, config: Dict = None) -> None:
         """
         Load the custom class from config parameter
         :param config: configuration dictionary
         """
+        config = config or {}
+
+        if not config.get('hyperopt'):
+            raise OperationalException("No Hyperopt set. Please use `--customhyperopt` to specify "
+                                       "the Hyperopt class to use.")
+
+        hyperopt_name = config['hyperopt']
 
-        # Verify the hyperopt is in the configuration, otherwise fallback to the default hyperopt
-        hyperopt_name = config.get('hyperopt') or DEFAULT_HYPEROPT
         self.hyperopt = self._load_hyperopt(hyperopt_name, config,
                                             extra_dir=config.get('hyperopt_path'))
 
@@ -75,7 +78,6 @@ class HyperOptLossResolver(IResolver):
     """
     This class contains all the logic to load custom hyperopt loss class
     """
-
     __slots__ = ['hyperoptloss']
 
     def __init__(self, config: Dict = None) -> None:
@@ -85,17 +87,22 @@ class HyperOptLossResolver(IResolver):
         """
         config = config or {}
 
-        # Verify the hyperopt is in the configuration, otherwise fallback to the default hyperopt
-        hyperopt_name = config.get('hyperopt_loss') or DEFAULT_HYPEROPT_LOSS
+        if not config.get('hyperopt_loss'):
+            raise OperationalException("No Hyperopt Loss Function set. Please use "
+                                       "`--hyperopt-loss` to specify "
+                                       "the Hyperopt Loss Function class to use.")
+
+        hyperoptloss_name = config['hyperopt_loss']
+
         self.hyperoptloss = self._load_hyperoptloss(
-            hyperopt_name, config, extra_dir=config.get('hyperopt_path'))
+            hyperoptloss_name, config, extra_dir=config.get('hyperopt_path'))
 
         # Assign ticker_interval to be used in hyperopt
         self.hyperoptloss.__class__.ticker_interval = str(config['ticker_interval'])
 
         if not hasattr(self.hyperoptloss, 'hyperopt_loss_function'):
             raise OperationalException(
-                f"Found hyperopt {hyperopt_name} does not implement `hyperopt_loss_function`.")
+                f"Found hyperopt {hyperoptloss_name} does not implement `hyperopt_loss_function`.")
 
     def _load_hyperoptloss(
             self, hyper_loss_name: str, config: Dict,
diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index 5ff11d5ea..cf211e35b 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -25,7 +25,11 @@ from tests.conftest import (get_args, log_has, log_has_re, patch_exchange,
 
 @pytest.fixture(scope='function')
 def hyperopt(default_conf, mocker):
-    default_conf.update({'spaces': ['all']})
+    default_conf.update({
+        'spaces': ['all'],
+        'hyperopt': 'DefaultHyperOpts',
+        'hyperopt_loss': 'DefaultHyperOptLoss',
+    })
     patch_exchange(mocker)
     return Hyperopt(default_conf)
 
@@ -70,6 +74,8 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca
     args = [
         'hyperopt',
         '--config', 'config.json',
+        '--customhyperopt', 'DefaultHyperOpts',
+        '--hyperopt-loss', 'DefaultHyperOptLoss',
     ]
 
     config = setup_configuration(get_args(args), RunMode.HYPEROPT)
@@ -101,6 +107,8 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo
     args = [
         'hyperopt',
         '--config', 'config.json',
+        '--customhyperopt', 'DefaultHyperOpts',
+        '--hyperopt-loss', 'DefaultHyperOptLoss',
         '--datadir', '/foo/bar',
         '--ticker-interval', '1m',
         '--timerange', ':100',
@@ -155,7 +163,9 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None:
         'freqtrade.resolvers.hyperopt_resolver.HyperOptResolver._load_hyperopt',
         MagicMock(return_value=hyperopts(default_conf))
     )
-    x = HyperOptResolver(default_conf, ).hyperopt
+    default_conf.update({'hyperopt': 'DefaultHyperOpts'})
+    default_conf.update({'hyperopt_loss': 'DefaultHyperOptLoss'})
+    x = HyperOptResolver(default_conf).hyperopt
     assert not hasattr(x, 'populate_buy_trend')
     assert not hasattr(x, 'populate_sell_trend')
     assert log_has("Hyperopt class does not provide populate_sell_trend() method. "
@@ -169,7 +179,15 @@ def test_hyperoptresolver_wrongname(mocker, default_conf, caplog) -> None:
     default_conf.update({'hyperopt': "NonExistingHyperoptClass"})
 
     with pytest.raises(OperationalException, match=r'Impossible to load Hyperopt.*'):
-        HyperOptResolver(default_conf, ).hyperopt
+        HyperOptResolver(default_conf).hyperopt
+
+
+def test_hyperoptresolver_noname(default_conf):
+    default_conf['hyperopt'] = ''
+    with pytest.raises(OperationalException,
+                       match="No Hyperopt set. Please use `--customhyperopt` to specify "
+                             "the Hyperopt class to use."):
+        HyperOptResolver(default_conf)
 
 
 def test_hyperoptlossresolver(mocker, default_conf, caplog) -> None:
@@ -179,7 +197,8 @@ def test_hyperoptlossresolver(mocker, default_conf, caplog) -> None:
         'freqtrade.resolvers.hyperopt_resolver.HyperOptLossResolver._load_hyperoptloss',
         MagicMock(return_value=hl)
     )
-    x = HyperOptLossResolver(default_conf, ).hyperoptloss
+    default_conf.update({'hyperopt_loss': 'DefaultHyperOptLoss'})
+    x = HyperOptLossResolver(default_conf).hyperoptloss
     assert hasattr(x, "hyperopt_loss_function")
 
 
@@ -187,7 +206,17 @@ def test_hyperoptlossresolver_wrongname(mocker, default_conf, caplog) -> None:
     default_conf.update({'hyperopt_loss': "NonExistingLossClass"})
 
     with pytest.raises(OperationalException, match=r'Impossible to load HyperoptLoss.*'):
-        HyperOptLossResolver(default_conf, ).hyperopt
+        HyperOptLossResolver(default_conf).hyperopt
+
+
+def test_hyperoptlossresolver_noname(default_conf):
+    default_conf.update({'hyperopt': 'DefaultHyperOpts'})
+    default_conf['hyperopt_loss'] = ''
+    with pytest.raises(OperationalException,
+                       match="No Hyperopt Loss Function set. Please use "
+                             "`--hyperopt-loss` to specify "
+                             "the Hyperopt Loss Function class to use."):
+        HyperOptLossResolver(default_conf)
 
 
 def test_start_not_installed(mocker, default_conf, caplog, import_fails) -> None:
@@ -200,6 +229,8 @@ def test_start_not_installed(mocker, default_conf, caplog, import_fails) -> None
     args = [
         'hyperopt',
         '--config', 'config.json',
+        '--customhyperopt', 'DefaultHyperOpts',
+        '--hyperopt-loss', 'DefaultHyperOptLoss',
         '--epochs', '5'
     ]
     args = get_args(args)
@@ -217,6 +248,8 @@ def test_start(mocker, default_conf, caplog) -> None:
     args = [
         'hyperopt',
         '--config', 'config.json',
+        '--customhyperopt', 'DefaultHyperOpts',
+        '--hyperopt-loss', 'DefaultHyperOptLoss',
         '--epochs', '5'
     ]
     args = get_args(args)
@@ -239,6 +272,8 @@ def test_start_no_data(mocker, default_conf, caplog) -> None:
     args = [
         'hyperopt',
         '--config', 'config.json',
+        '--customhyperopt', 'DefaultHyperOpts',
+        '--hyperopt-loss', 'DefaultHyperOptLoss',
         '--epochs', '5'
     ]
     args = get_args(args)
@@ -256,6 +291,8 @@ def test_start_filelock(mocker, default_conf, caplog) -> None:
     args = [
         'hyperopt',
         '--config', 'config.json',
+        '--customhyperopt', 'DefaultHyperOpts',
+        '--hyperopt-loss', 'DefaultHyperOptLoss',
         '--epochs', '5'
     ]
     args = get_args(args)
@@ -264,6 +301,7 @@ def test_start_filelock(mocker, default_conf, caplog) -> None:
 
 
 def test_loss_calculation_prefer_correct_trade_count(default_conf, hyperopt_results) -> None:
+    default_conf.update({'hyperopt_loss': 'DefaultHyperOptLoss'})
     hl = HyperOptLossResolver(default_conf).hyperoptloss
     correct = hl.hyperopt_loss_function(hyperopt_results, 600)
     over = hl.hyperopt_loss_function(hyperopt_results, 600 + 100)
@@ -276,6 +314,7 @@ def test_loss_calculation_prefer_shorter_trades(default_conf, hyperopt_results)
     resultsb = hyperopt_results.copy()
     resultsb.loc[1, 'trade_duration'] = 20
 
+    default_conf.update({'hyperopt_loss': 'DefaultHyperOptLoss'})
     hl = HyperOptLossResolver(default_conf).hyperoptloss
     longer = hl.hyperopt_loss_function(hyperopt_results, 100)
     shorter = hl.hyperopt_loss_function(resultsb, 100)
@@ -288,6 +327,7 @@ def test_loss_calculation_has_limited_profit(default_conf, hyperopt_results) ->
     results_under = hyperopt_results.copy()
     results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2
 
+    default_conf.update({'hyperopt_loss': 'DefaultHyperOptLoss'})
     hl = HyperOptLossResolver(default_conf).hyperoptloss
     correct = hl.hyperopt_loss_function(hyperopt_results, 600)
     over = hl.hyperopt_loss_function(results_over, 600)
@@ -407,6 +447,8 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None:
     patch_exchange(mocker)
 
     default_conf.update({'config': 'config.json.example',
+                         'hyperopt': 'DefaultHyperOpts',
+                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'all',
@@ -510,10 +552,13 @@ def test_buy_strategy_generator(hyperopt, testdatadir) -> None:
 
 
 def test_generate_optimizer(mocker, default_conf) -> None:
-    default_conf.update({'config': 'config.json.example'})
-    default_conf.update({'timerange': None})
-    default_conf.update({'spaces': 'all'})
-    default_conf.update({'hyperopt_min_trades': 1})
+    default_conf.update({'config': 'config.json.example',
+                         'hyperopt': 'DefaultHyperOpts',
+                         'hyperopt_loss': 'DefaultHyperOptLoss',
+                         'timerange': None,
+                         'spaces': 'all',
+                         'hyperopt_min_trades': 1,
+                         })
 
     trades = [
         ('POWR/BTC', 0.023117, 0.000233, 100)
@@ -576,6 +621,8 @@ def test_generate_optimizer(mocker, default_conf) -> None:
 def test_clean_hyperopt(mocker, default_conf, caplog):
     patch_exchange(mocker)
     default_conf.update({'config': 'config.json.example',
+                         'hyperopt': 'DefaultHyperOpts',
+                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'all',
@@ -592,6 +639,8 @@ def test_clean_hyperopt(mocker, default_conf, caplog):
 def test_continue_hyperopt(mocker, default_conf, caplog):
     patch_exchange(mocker)
     default_conf.update({'config': 'config.json.example',
+                         'hyperopt': 'DefaultHyperOpts',
+                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'all',
@@ -621,6 +670,8 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None:
     patch_exchange(mocker)
 
     default_conf.update({'config': 'config.json.example',
+                         'hyperopt': 'DefaultHyperOpts',
+                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'all',
@@ -658,6 +709,8 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) ->
     patch_exchange(mocker)
 
     default_conf.update({'config': 'config.json.example',
+                         'hyperopt': 'DefaultHyperOpts',
+                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'roi stoploss',
@@ -696,6 +749,8 @@ def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys)
     patch_exchange(mocker)
 
     default_conf.update({'config': 'config.json.example',
+                         'hyperopt': 'DefaultHyperOpts',
+                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'roi stoploss',
@@ -737,6 +792,8 @@ def test_simplified_interface_all_failed(mocker, default_conf, caplog, capsys) -
     patch_exchange(mocker)
 
     default_conf.update({'config': 'config.json.example',
+                         'hyperopt': 'DefaultHyperOpts',
+                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'all',
@@ -770,6 +827,8 @@ def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None:
     patch_exchange(mocker)
 
     default_conf.update({'config': 'config.json.example',
+                         'hyperopt': 'DefaultHyperOpts',
+                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'buy',
@@ -815,6 +874,8 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None
     patch_exchange(mocker)
 
     default_conf.update({'config': 'config.json.example',
+                         'hyperopt': 'DefaultHyperOpts',
+                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'sell',
@@ -862,6 +923,8 @@ def test_simplified_interface_failed(mocker, default_conf, caplog, capsys, metho
     patch_exchange(mocker)
 
     default_conf.update({'config': 'config.json.example',
+                         'hyperopt': 'DefaultHyperOpts',
+                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': space,

From 0680fe2a1a130dc5463e5783af06bee5fa3c3647 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 10 Oct 2019 19:28:11 +0200
Subject: [PATCH 0641/3421] fix path to tests

---
 scripts/pytest.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/pytest.sh b/scripts/pytest.sh
index e05ff1ad0..d2ad223e7 100755
--- a/scripts/pytest.sh
+++ b/scripts/pytest.sh
@@ -2,4 +2,4 @@
 
 echo "Running Unit tests"
 
-pytest --random-order --cov=freqtrade --cov-config=.coveragerc freqtrade/tests/
+pytest --random-order --cov=freqtrade --cov-config=.coveragerc tests/

From 5e23cc719dd126ab69e22e9a9dbc330672f37092 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 10 Oct 2019 17:03:52 +0200
Subject: [PATCH 0642/3421] Add tests for orderbook and market in dataprovider

---
 freqtrade/data/dataprovider.py  |  8 ++++----
 tests/data/test_dataprovider.py | 32 ++++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py
index b564dbec8..f0787281a 100644
--- a/freqtrade/data/dataprovider.py
+++ b/freqtrade/data/dataprovider.py
@@ -6,7 +6,7 @@ Common Interface for bot and strategy to access data.
 """
 import logging
 from pathlib import Path
-from typing import List, Tuple
+from typing import Any, Dict, List, Optional, Tuple
 
 from pandas import DataFrame
 
@@ -85,7 +85,7 @@ class DataProvider:
             logger.warning(f"No data found for ({pair}, {ticker_interval}).")
         return data
 
-    def market(self, pair: str):
+    def market(self, pair: str) -> Optional[Dict[str, Any]]:
         """
         Return market data for the pair
         :param pair: Pair to get the data for
@@ -100,9 +100,9 @@ class DataProvider:
         # TODO: Implement me
         pass
 
-    def orderbook(self, pair: str, maximum: int):
+    def orderbook(self, pair: str, maximum: int) -> Dict[str, List]:
         """
-        return latest orderbook data
+        fetch latest orderbook data
         :param pair: pair to get the data for
         :param maximum: Maximum number of orderbook entries to query
         :return: dict including bids/asks with a total of `maximum` entries.
diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py
index 39e2f7d2e..9a857750b 100644
--- a/tests/data/test_dataprovider.py
+++ b/tests/data/test_dataprovider.py
@@ -120,3 +120,35 @@ def test_refresh(mocker, default_conf, ticker_history):
     assert len(refresh_mock.call_args[0]) == 1
     assert len(refresh_mock.call_args[0][0]) == len(pairs) + len(pairs_non_trad)
     assert refresh_mock.call_args[0][0] == pairs + pairs_non_trad
+
+
+def test_orderbook(mocker, default_conf, order_book_l2):
+    api_mock = MagicMock()
+    api_mock.fetch_l2_order_book = order_book_l2
+    exchange = get_patched_exchange(mocker, default_conf, api_mock=api_mock)
+
+    dp = DataProvider(default_conf, exchange)
+    res = dp.orderbook('ETH/BTC', 5)
+    assert order_book_l2.call_count == 1
+    assert order_book_l2.call_args_list[0][0][0] == 'ETH/BTC'
+    assert order_book_l2.call_args_list[0][0][1] == 5
+
+    assert type(res) is dict
+    assert 'bids' in res
+    assert 'asks' in res
+
+
+def test_market(mocker, default_conf, markets):
+    api_mock = MagicMock()
+    api_mock.markets = markets
+    exchange = get_patched_exchange(mocker, default_conf, api_mock=api_mock)
+
+    dp = DataProvider(default_conf, exchange)
+    res = dp.market('ETH/BTC')
+
+    assert type(res) is dict
+    assert 'symbol' in res
+    assert res['symbol'] == 'ETH/BTC'
+
+    res = dp.market('UNITTEST/BTC')
+    assert res is None

From c49f4b73dd53517a71118ae5465a7729965e61a3 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Thu, 10 Oct 2019 20:44:24 +0300
Subject: [PATCH 0643/3421] Fix helpstring

---
 docs/utils.md                          | 4 ++--
 freqtrade/configuration/cli_options.py | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/docs/utils.md b/docs/utils.md
index 459960fac..93162aca2 100644
--- a/docs/utils.md
+++ b/docs/utils.md
@@ -11,7 +11,7 @@ usage: freqtrade list-exchanges [-h] [-1] [-a]
 
 optional arguments:
   -h, --help        show this help message and exit
-  -1, --one-column  Print exchanges in one column.
+  -1, --one-column  Print output in one column.
   -a, --all         Print all exchanges known to the ccxt library.
 ```
 
@@ -38,7 +38,7 @@ optional arguments:
   -h, --help           show this help message and exit
   --exchange EXCHANGE  Exchange name (default: `bittrex`). Only valid if no
                        config is provided.
-  -1, --one-column     Print exchanges in one column.
+  -1, --one-column     Print output in one column.
 
 ```
 
diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py
index 7c2ba5325..7e6a956ce 100644
--- a/freqtrade/configuration/cli_options.py
+++ b/freqtrade/configuration/cli_options.py
@@ -247,7 +247,7 @@ AVAILABLE_CLI_OPTIONS = {
     # List exchanges
     "print_one_column": Arg(
         '-1', '--one-column',
-        help='Print exchanges in one column.',
+        help='Print output in one column.',
         action='store_true',
     ),
     "list_exchanges_all": Arg(

From e72b6a440ba6a1c76562cb13e2a44e3b372d68f0 Mon Sep 17 00:00:00 2001
From: "Paul D. Mendes" 
Date: Thu, 10 Oct 2019 20:37:25 +0000
Subject: [PATCH 0644/3421] Updated Rest API Docs

---
 docs/rest-api.md | 1 -
 1 file changed, 1 deletion(-)

diff --git a/docs/rest-api.md b/docs/rest-api.md
index afecc1d80..efcacc8a1 100644
--- a/docs/rest-api.md
+++ b/docs/rest-api.md
@@ -100,7 +100,6 @@ python3 scripts/rest_client.py --config rest_config.json  [optional par
 | `stopbuy` | | Stops the trader from opening new trades. Gracefully closes open trades according to their rules.
 | `reload_conf` | | Reloads the configuration file
 | `status` | | Lists all open trades
-| `status table` | | List all open trades in a table format
 | `count` | | Displays number of trades used and available
 | `profit` | | Display a summary of your profit/loss from close trades and some stats about your performance
 | `forcesell ` | | Instantly sells the given trade  (Ignoring `minimum_roi`).

From 4d1488498cb3b884d21eb8c4d3690810bb5d79bc Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 11 Oct 2019 08:55:31 +0200
Subject: [PATCH 0645/3421] stoploss_reached should not use config

---
 freqtrade/strategy/interface.py | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py
index b35ebabbb..4d18e5232 100644
--- a/freqtrade/strategy/interface.py
+++ b/freqtrade/strategy/interface.py
@@ -79,7 +79,7 @@ class IStrategy(ABC):
     # trailing stoploss
     trailing_stop: bool = False
     trailing_stop_positive: float
-    trailing_stop_positive_offset: float
+    trailing_stop_positive_offset: float = 0.0
     trailing_only_offset_is_reached = False
 
     # associated ticker interval
@@ -347,22 +347,20 @@ class IStrategy(ABC):
         decides to sell or not
         :param current_profit: current profit in percent
         """
-        trailing_stop = self.config.get('trailing_stop', False)
         stop_loss_value = force_stoploss if force_stoploss else self.stoploss
 
         # Initiate stoploss with open_rate. Does nothing if stoploss is already set.
         trade.adjust_stop_loss(trade.open_rate, stop_loss_value, initial=True)
 
-        if trailing_stop:
+        if self.trailing_stop:
             # trailing stoploss handling
-            sl_offset = self.config.get('trailing_stop_positive_offset') or 0.0
-            tsl_only_offset = self.config.get('trailing_only_offset_is_reached', False)
+            sl_offset = self.trailing_stop_positive_offset
 
             # Make sure current_profit is calculated using high for backtesting.
             high_profit = current_profit if not high else trade.calc_profit_percent(high)
 
             # Don't update stoploss if trailing_only_offset_is_reached is true.
-            if not (tsl_only_offset and high_profit < sl_offset):
+            if not (self.trailing_only_offset_is_reached and high_profit < sl_offset):
                 # Specific handling for trailing_stop_positive
                 if 'trailing_stop_positive' in self.config and high_profit > sl_offset:
                     # Ignore mypy error check in configuration that this is a float

From ff7a3cc885ec9ce26d50ca002fd2b228d666fd89 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 11 Oct 2019 09:05:21 +0200
Subject: [PATCH 0646/3421] remove last occurance of config. from
 stop_loss_reached

---
 freqtrade/strategy/interface.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py
index 4d18e5232..9c6936c20 100644
--- a/freqtrade/strategy/interface.py
+++ b/freqtrade/strategy/interface.py
@@ -362,9 +362,9 @@ class IStrategy(ABC):
             # Don't update stoploss if trailing_only_offset_is_reached is true.
             if not (self.trailing_only_offset_is_reached and high_profit < sl_offset):
                 # Specific handling for trailing_stop_positive
-                if 'trailing_stop_positive' in self.config and high_profit > sl_offset:
+                if 'trailing_stop_positive' in self.__dict__ and high_profit > sl_offset:
                     # Ignore mypy error check in configuration that this is a float
-                    stop_loss_value = self.config.get('trailing_stop_positive')  # type: ignore
+                    stop_loss_value = self.trailing_stop_positive
                     logger.debug(f"{trade.pair} - Using positive stoploss: {stop_loss_value} "
                                  f"offset: {sl_offset:.4g} profit: {current_profit:.4f}%")
 

From 4c1705fb1e552d13f854934dc23acac5b8bf73d5 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Fri, 11 Oct 2019 22:59:13 +0300
Subject: [PATCH 0647/3421] No specific handling for trailing_stop_positive

---
 freqtrade/resolvers/strategy_resolver.py | 5 ++++-
 freqtrade/strategy/interface.py          | 5 ++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py
index 43197e5bc..b9c641853 100644
--- a/freqtrade/resolvers/strategy_resolver.py
+++ b/freqtrade/resolvers/strategy_resolver.py
@@ -95,7 +95,10 @@ class StrategyResolver(IResolver):
             logger.info("Override strategy '%s' with value in config file: %s.",
                         attribute, config[attribute])
         elif hasattr(self.strategy, attribute):
-            config[attribute] = getattr(self.strategy, attribute)
+            val = getattr(self.strategy, attribute)
+            # None's cannot exist in the config, so do not copy them
+            if val is not None:
+                config[attribute] = val
         # Explicitly check for None here as other "falsy" values are possible
         elif default is not None:
             setattr(self.strategy, attribute, default)
diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py
index 9c6936c20..e4cfe0088 100644
--- a/freqtrade/strategy/interface.py
+++ b/freqtrade/strategy/interface.py
@@ -78,7 +78,7 @@ class IStrategy(ABC):
 
     # trailing stoploss
     trailing_stop: bool = False
-    trailing_stop_positive: float
+    trailing_stop_positive: Optional[float] = None
     trailing_stop_positive_offset: float = 0.0
     trailing_only_offset_is_reached = False
 
@@ -361,8 +361,7 @@ class IStrategy(ABC):
 
             # Don't update stoploss if trailing_only_offset_is_reached is true.
             if not (self.trailing_only_offset_is_reached and high_profit < sl_offset):
-                # Specific handling for trailing_stop_positive
-                if 'trailing_stop_positive' in self.__dict__ and high_profit > sl_offset:
+                if self.trailing_stop_positive is not None and high_profit > sl_offset:
                     # Ignore mypy error check in configuration that this is a float
                     stop_loss_value = self.trailing_stop_positive
                     logger.debug(f"{trade.pair} - Using positive stoploss: {stop_loss_value} "

From 08e6d8a7809222c217ba7050a9114dbab385d1f2 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Fri, 11 Oct 2019 23:33:22 +0300
Subject: [PATCH 0648/3421] Rollback defaulting to DefaultHyperOptLoss

---
 .travis.yml                              |  2 +-
 docs/bot-usage.md                        |  3 ++-
 freqtrade/configuration/cli_options.py   |  4 ++-
 freqtrade/constants.py                   |  1 +
 freqtrade/resolvers/hyperopt_resolver.py | 10 +++----
 tests/optimize/test_hyperopt.py          | 33 ------------------------
 6 files changed, 11 insertions(+), 42 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 7a75a76c2..a45334dd6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -32,7 +32,7 @@ jobs:
       name: backtest
     - script:
       - cp config.json.example config.json
-      - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy DefaultStrategy --customhyperopt DefaultHyperOpts --hyperopt-loss DefaultHyperOptLoss
+      - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy DefaultStrategy --customhyperopt DefaultHyperOpts
       name: hyperopt
     - script: flake8
       name: flake8
diff --git a/docs/bot-usage.md b/docs/bot-usage.md
index fcf82826a..8f7e0bbcf 100644
--- a/docs/bot-usage.md
+++ b/docs/bot-usage.md
@@ -322,7 +322,8 @@ optional arguments:
                         generate completely different results, since the
                         target for optimization is different. Built-in
                         Hyperopt-loss-functions are: DefaultHyperOptLoss,
-                        OnlyProfitHyperOptLoss, SharpeHyperOptLoss.
+                        OnlyProfitHyperOptLoss, SharpeHyperOptLoss (default:
+                        `DefaultHyperOptLoss`).
 
 
 Common arguments:
diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py
index 6928ddfdb..ee0d94023 100644
--- a/freqtrade/configuration/cli_options.py
+++ b/freqtrade/configuration/cli_options.py
@@ -231,8 +231,10 @@ AVAILABLE_CLI_OPTIONS = {
         help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). '
         'Different functions can generate completely different results, '
         'since the target for optimization is different. Built-in Hyperopt-loss-functions are: '
-        'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss.',
+        'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss '
+        '(default: `%(default)s`).',
         metavar='NAME',
+        default=constants.DEFAULT_HYPEROPT_LOSS,
     ),
     # List exchanges
     "print_one_column": Arg(
diff --git a/freqtrade/constants.py b/freqtrade/constants.py
index 2f490c900..b053519b0 100644
--- a/freqtrade/constants.py
+++ b/freqtrade/constants.py
@@ -9,6 +9,7 @@ PROCESS_THROTTLE_SECS = 5  # sec
 DEFAULT_TICKER_INTERVAL = 5  # min
 HYPEROPT_EPOCH = 100  # epochs
 RETRY_TIMEOUT = 30  # sec
+DEFAULT_HYPEROPT_LOSS = 'DefaultHyperOptLoss'
 DEFAULT_DB_PROD_URL = 'sqlite:///tradesv3.sqlite'
 DEFAULT_DB_DRYRUN_URL = 'sqlite://'
 UNLIMITED_STAKE_AMOUNT = 'unlimited'
diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py
index 45fe2548e..d1bc90e13 100644
--- a/freqtrade/resolvers/hyperopt_resolver.py
+++ b/freqtrade/resolvers/hyperopt_resolver.py
@@ -8,6 +8,7 @@ from pathlib import Path
 from typing import Optional, Dict
 
 from freqtrade import OperationalException
+from freqtrade.constants import DEFAULT_HYPEROPT_LOSS
 from freqtrade.optimize.hyperopt_interface import IHyperOpt
 from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss
 from freqtrade.resolvers import IResolver
@@ -87,12 +88,9 @@ class HyperOptLossResolver(IResolver):
         """
         config = config or {}
 
-        if not config.get('hyperopt_loss'):
-            raise OperationalException("No Hyperopt Loss Function set. Please use "
-                                       "`--hyperopt-loss` to specify "
-                                       "the Hyperopt Loss Function class to use.")
-
-        hyperoptloss_name = config['hyperopt_loss']
+        # Verify the hyperopt_loss is in the configuration, otherwise fallback to the
+        # default hyperopt loss
+        hyperoptloss_name = config.get('hyperopt_loss') or DEFAULT_HYPEROPT_LOSS
 
         self.hyperoptloss = self._load_hyperoptloss(
             hyperoptloss_name, config, extra_dir=config.get('hyperopt_path'))
diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
index cf211e35b..e1ee649c8 100644
--- a/tests/optimize/test_hyperopt.py
+++ b/tests/optimize/test_hyperopt.py
@@ -28,7 +28,6 @@ def hyperopt(default_conf, mocker):
     default_conf.update({
         'spaces': ['all'],
         'hyperopt': 'DefaultHyperOpts',
-        'hyperopt_loss': 'DefaultHyperOptLoss',
     })
     patch_exchange(mocker)
     return Hyperopt(default_conf)
@@ -75,7 +74,6 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca
         'hyperopt',
         '--config', 'config.json',
         '--customhyperopt', 'DefaultHyperOpts',
-        '--hyperopt-loss', 'DefaultHyperOptLoss',
     ]
 
     config = setup_configuration(get_args(args), RunMode.HYPEROPT)
@@ -108,7 +106,6 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo
         'hyperopt',
         '--config', 'config.json',
         '--customhyperopt', 'DefaultHyperOpts',
-        '--hyperopt-loss', 'DefaultHyperOptLoss',
         '--datadir', '/foo/bar',
         '--ticker-interval', '1m',
         '--timerange', ':100',
@@ -164,7 +161,6 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None:
         MagicMock(return_value=hyperopts(default_conf))
     )
     default_conf.update({'hyperopt': 'DefaultHyperOpts'})
-    default_conf.update({'hyperopt_loss': 'DefaultHyperOptLoss'})
     x = HyperOptResolver(default_conf).hyperopt
     assert not hasattr(x, 'populate_buy_trend')
     assert not hasattr(x, 'populate_sell_trend')
@@ -197,7 +193,6 @@ def test_hyperoptlossresolver(mocker, default_conf, caplog) -> None:
         'freqtrade.resolvers.hyperopt_resolver.HyperOptLossResolver._load_hyperoptloss',
         MagicMock(return_value=hl)
     )
-    default_conf.update({'hyperopt_loss': 'DefaultHyperOptLoss'})
     x = HyperOptLossResolver(default_conf).hyperoptloss
     assert hasattr(x, "hyperopt_loss_function")
 
@@ -209,16 +204,6 @@ def test_hyperoptlossresolver_wrongname(mocker, default_conf, caplog) -> None:
         HyperOptLossResolver(default_conf).hyperopt
 
 
-def test_hyperoptlossresolver_noname(default_conf):
-    default_conf.update({'hyperopt': 'DefaultHyperOpts'})
-    default_conf['hyperopt_loss'] = ''
-    with pytest.raises(OperationalException,
-                       match="No Hyperopt Loss Function set. Please use "
-                             "`--hyperopt-loss` to specify "
-                             "the Hyperopt Loss Function class to use."):
-        HyperOptLossResolver(default_conf)
-
-
 def test_start_not_installed(mocker, default_conf, caplog, import_fails) -> None:
     start_mock = MagicMock()
     patched_configuration_load_config_file(mocker, default_conf)
@@ -230,7 +215,6 @@ def test_start_not_installed(mocker, default_conf, caplog, import_fails) -> None
         'hyperopt',
         '--config', 'config.json',
         '--customhyperopt', 'DefaultHyperOpts',
-        '--hyperopt-loss', 'DefaultHyperOptLoss',
         '--epochs', '5'
     ]
     args = get_args(args)
@@ -249,7 +233,6 @@ def test_start(mocker, default_conf, caplog) -> None:
         'hyperopt',
         '--config', 'config.json',
         '--customhyperopt', 'DefaultHyperOpts',
-        '--hyperopt-loss', 'DefaultHyperOptLoss',
         '--epochs', '5'
     ]
     args = get_args(args)
@@ -273,7 +256,6 @@ def test_start_no_data(mocker, default_conf, caplog) -> None:
         'hyperopt',
         '--config', 'config.json',
         '--customhyperopt', 'DefaultHyperOpts',
-        '--hyperopt-loss', 'DefaultHyperOptLoss',
         '--epochs', '5'
     ]
     args = get_args(args)
@@ -292,7 +274,6 @@ def test_start_filelock(mocker, default_conf, caplog) -> None:
         'hyperopt',
         '--config', 'config.json',
         '--customhyperopt', 'DefaultHyperOpts',
-        '--hyperopt-loss', 'DefaultHyperOptLoss',
         '--epochs', '5'
     ]
     args = get_args(args)
@@ -301,7 +282,6 @@ def test_start_filelock(mocker, default_conf, caplog) -> None:
 
 
 def test_loss_calculation_prefer_correct_trade_count(default_conf, hyperopt_results) -> None:
-    default_conf.update({'hyperopt_loss': 'DefaultHyperOptLoss'})
     hl = HyperOptLossResolver(default_conf).hyperoptloss
     correct = hl.hyperopt_loss_function(hyperopt_results, 600)
     over = hl.hyperopt_loss_function(hyperopt_results, 600 + 100)
@@ -314,7 +294,6 @@ def test_loss_calculation_prefer_shorter_trades(default_conf, hyperopt_results)
     resultsb = hyperopt_results.copy()
     resultsb.loc[1, 'trade_duration'] = 20
 
-    default_conf.update({'hyperopt_loss': 'DefaultHyperOptLoss'})
     hl = HyperOptLossResolver(default_conf).hyperoptloss
     longer = hl.hyperopt_loss_function(hyperopt_results, 100)
     shorter = hl.hyperopt_loss_function(resultsb, 100)
@@ -327,7 +306,6 @@ def test_loss_calculation_has_limited_profit(default_conf, hyperopt_results) ->
     results_under = hyperopt_results.copy()
     results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2
 
-    default_conf.update({'hyperopt_loss': 'DefaultHyperOptLoss'})
     hl = HyperOptLossResolver(default_conf).hyperoptloss
     correct = hl.hyperopt_loss_function(hyperopt_results, 600)
     over = hl.hyperopt_loss_function(results_over, 600)
@@ -448,7 +426,6 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None:
 
     default_conf.update({'config': 'config.json.example',
                          'hyperopt': 'DefaultHyperOpts',
-                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'all',
@@ -554,7 +531,6 @@ def test_buy_strategy_generator(hyperopt, testdatadir) -> None:
 def test_generate_optimizer(mocker, default_conf) -> None:
     default_conf.update({'config': 'config.json.example',
                          'hyperopt': 'DefaultHyperOpts',
-                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'timerange': None,
                          'spaces': 'all',
                          'hyperopt_min_trades': 1,
@@ -622,7 +598,6 @@ def test_clean_hyperopt(mocker, default_conf, caplog):
     patch_exchange(mocker)
     default_conf.update({'config': 'config.json.example',
                          'hyperopt': 'DefaultHyperOpts',
-                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'all',
@@ -640,7 +615,6 @@ def test_continue_hyperopt(mocker, default_conf, caplog):
     patch_exchange(mocker)
     default_conf.update({'config': 'config.json.example',
                          'hyperopt': 'DefaultHyperOpts',
-                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'all',
@@ -671,7 +645,6 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None:
 
     default_conf.update({'config': 'config.json.example',
                          'hyperopt': 'DefaultHyperOpts',
-                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'all',
@@ -710,7 +683,6 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) ->
 
     default_conf.update({'config': 'config.json.example',
                          'hyperopt': 'DefaultHyperOpts',
-                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'roi stoploss',
@@ -750,7 +722,6 @@ def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys)
 
     default_conf.update({'config': 'config.json.example',
                          'hyperopt': 'DefaultHyperOpts',
-                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'roi stoploss',
@@ -793,7 +764,6 @@ def test_simplified_interface_all_failed(mocker, default_conf, caplog, capsys) -
 
     default_conf.update({'config': 'config.json.example',
                          'hyperopt': 'DefaultHyperOpts',
-                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'all',
@@ -828,7 +798,6 @@ def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None:
 
     default_conf.update({'config': 'config.json.example',
                          'hyperopt': 'DefaultHyperOpts',
-                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'buy',
@@ -875,7 +844,6 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None
 
     default_conf.update({'config': 'config.json.example',
                          'hyperopt': 'DefaultHyperOpts',
-                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': 'sell',
@@ -924,7 +892,6 @@ def test_simplified_interface_failed(mocker, default_conf, caplog, capsys, metho
 
     default_conf.update({'config': 'config.json.example',
                          'hyperopt': 'DefaultHyperOpts',
-                         'hyperopt_loss': 'DefaultHyperOptLoss',
                          'epochs': 1,
                          'timerange': None,
                          'spaces': space,

From ff1fa17dc3243cc3a9c1469ef92b542c49e86d47 Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Sun, 13 Oct 2019 03:41:25 +0300
Subject: [PATCH 0649/3421] No default value for the config parameter

---
 freqtrade/resolvers/hyperopt_resolver.py | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py
index d1bc90e13..15080cda5 100644
--- a/freqtrade/resolvers/hyperopt_resolver.py
+++ b/freqtrade/resolvers/hyperopt_resolver.py
@@ -22,13 +22,11 @@ class HyperOptResolver(IResolver):
     """
     __slots__ = ['hyperopt']
 
-    def __init__(self, config: Dict = None) -> None:
+    def __init__(self, config: Dict) -> None:
         """
         Load the custom class from config parameter
         :param config: configuration dictionary
         """
-        config = config or {}
-
         if not config.get('hyperopt'):
             raise OperationalException("No Hyperopt set. Please use `--customhyperopt` to specify "
                                        "the Hyperopt class to use.")
@@ -81,12 +79,11 @@ class HyperOptLossResolver(IResolver):
     """
     __slots__ = ['hyperoptloss']
 
-    def __init__(self, config: Dict = None) -> None:
+    def __init__(self, config: Dict) -> None:
         """
         Load the custom class from config parameter
-        :param config: configuration dictionary or None
+        :param config: configuration dictionary
         """
-        config = config or {}
 
         # Verify the hyperopt_loss is in the configuration, otherwise fallback to the
         # default hyperopt loss
@@ -100,7 +97,8 @@ class HyperOptLossResolver(IResolver):
 
         if not hasattr(self.hyperoptloss, 'hyperopt_loss_function'):
             raise OperationalException(
-                f"Found hyperopt {hyperoptloss_name} does not implement `hyperopt_loss_function`.")
+                f"Found HyperoptLoss class {hyperoptloss_name} does not "
+                "implement `hyperopt_loss_function`.")
 
     def _load_hyperoptloss(
             self, hyper_loss_name: str, config: Dict,

From 3c8d27d0985430254d8d7371e790a56f3ddef8bc Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 13 Oct 2019 09:54:03 +0200
Subject: [PATCH 0650/3421] remove correct comment ...

---
 freqtrade/strategy/interface.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py
index e4cfe0088..014ca9968 100644
--- a/freqtrade/strategy/interface.py
+++ b/freqtrade/strategy/interface.py
@@ -361,8 +361,8 @@ class IStrategy(ABC):
 
             # Don't update stoploss if trailing_only_offset_is_reached is true.
             if not (self.trailing_only_offset_is_reached and high_profit < sl_offset):
+                # Specific handling for trailing_stop_positive
                 if self.trailing_stop_positive is not None and high_profit > sl_offset:
-                    # Ignore mypy error check in configuration that this is a float
                     stop_loss_value = self.trailing_stop_positive
                     logger.debug(f"{trade.pair} - Using positive stoploss: {stop_loss_value} "
                                  f"offset: {sl_offset:.4g} profit: {current_profit:.4f}%")

From f3f6e9d365e06f3e82c533da460c7cf2f85540a8 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 13 Oct 2019 10:33:22 +0200
Subject: [PATCH 0651/3421] Allow skipping of exchange validation

---
 freqtrade/exchange/exchange.py           | 16 ++++++++--------
 freqtrade/resolvers/exchange_resolver.py |  7 ++++---
 freqtrade/utils.py                       |  2 +-
 3 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index df7e5e2b4..8edbeaf50 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -155,7 +155,7 @@ class Exchange:
     }
     _ft_has: Dict = {}
 
-    def __init__(self, config: dict) -> None:
+    def __init__(self, config: dict, validate: bool = True) -> None:
         """
         Initializes this module with the given config,
         it does basic validation whether the specified exchange and pairs are valid.
@@ -209,13 +209,13 @@ class Exchange:
         # Converts the interval provided in minutes in config to seconds
         self.markets_refresh_interval: int = exchange_config.get(
             "markets_refresh_interval", 60) * 60
-        # Initial markets load
-        self._load_markets()
-
-        # Check if all pairs are available
-        self.validate_pairs(config['exchange']['pair_whitelist'])
-        self.validate_ordertypes(config.get('order_types', {}))
-        self.validate_order_time_in_force(config.get('order_time_in_force', {}))
+        if validate:
+            # Initial markets load
+            self._load_markets()
+            # Check if all pairs are available
+            self.validate_pairs(config['exchange']['pair_whitelist'])
+            self.validate_ordertypes(config.get('order_types', {}))
+            self.validate_order_time_in_force(config.get('order_time_in_force', {}))
 
     def __del__(self):
         """
diff --git a/freqtrade/resolvers/exchange_resolver.py b/freqtrade/resolvers/exchange_resolver.py
index 6fb12a65f..929ba197a 100644
--- a/freqtrade/resolvers/exchange_resolver.py
+++ b/freqtrade/resolvers/exchange_resolver.py
@@ -17,14 +17,15 @@ class ExchangeResolver(IResolver):
 
     __slots__ = ['exchange']
 
-    def __init__(self, exchange_name: str, config: dict) -> None:
+    def __init__(self, exchange_name: str, config: dict, validate: bool = True) -> None:
         """
         Load the custom class from config parameter
         :param config: configuration dictionary
         """
         exchange_name = exchange_name.title()
         try:
-            self.exchange = self._load_exchange(exchange_name, kwargs={'config': config})
+            self.exchange = self._load_exchange(exchange_name, kwargs={'config': config,
+                                                                       'validate': validate})
         except ImportError:
             logger.info(
                 f"No {exchange_name} specific subclass found. Using the generic class instead.")
@@ -43,7 +44,7 @@ class ExchangeResolver(IResolver):
         try:
             ex_class = getattr(exchanges, exchange_name)
 
-            exchange = ex_class(kwargs['config'])
+            exchange = ex_class(**kwargs)
             if exchange:
                 logger.info(f"Using resolved exchange '{exchange_name}'...")
                 return exchange
diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index b3ff43aca..8f58c3158 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -110,7 +110,7 @@ def start_list_timeframes(args: Dict[str, Any]) -> None:
     config['ticker_interval'] = None
 
     # Init exchange
-    exchange = ExchangeResolver(config['exchange']['name'], config).exchange
+    exchange = ExchangeResolver(config['exchange']['name'], config, validate=False).exchange
 
     if args['print_one_column']:
         print('\n'.join(exchange.timeframes))

From 7cf7982565b2a21dd4f3fb864fbb9a269cf6c64f Mon Sep 17 00:00:00 2001
From: hroff-1902 
Date: Sun, 13 Oct 2019 13:12:20 +0300
Subject: [PATCH 0652/3421] Add list-pairs and list-markets subcommands

---
 freqtrade/configuration/arguments.py   | 25 +++++++++++++--
 freqtrade/configuration/cli_options.py | 20 ++++++++++++
 freqtrade/exchange/exchange.py         | 19 ++++++++++++
 freqtrade/misc.py                      |  4 +++
 freqtrade/utils.py                     | 42 ++++++++++++++++++++++++++
 5 files changed, 108 insertions(+), 2 deletions(-)

diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index 76a2b1cc9..58b5539fe 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -2,6 +2,7 @@
 This module contains the argument manager class
 """
 import argparse
+from functools import partial
 from pathlib import Path
 from typing import Any, Dict, List, Optional
 
@@ -33,6 +34,8 @@ ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"]
 
 ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"]
 
+ARGS_LIST_PAIRS = ["exchange", "print_list", "base_currency", "quote_currency", "active_only"]
+
 ARGS_CREATE_USERDIR = ["user_data_dir"]
 
 ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "exchange", "timeframes", "erase"]
@@ -43,7 +46,8 @@ ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_
 ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url",
                     "trade_source", "ticker_interval"]
 
-NO_CONF_REQURIED = ["download-data", "list-timeframes", "plot-dataframe", "plot-profit"]
+NO_CONF_REQURIED = ["download-data", "list-timeframes", "list-markets", "list-pairs",
+                    "plot-dataframe", "plot-profit"]
 
 NO_CONF_ALLOWED = ["create-userdir", "list-exchanges"]
 
@@ -106,7 +110,8 @@ class Arguments:
         """
         from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge
         from freqtrade.utils import (start_create_userdir, start_download_data,
-                                     start_list_exchanges, start_list_timeframes)
+                                     start_list_exchanges, start_list_timeframes,
+                                     start_list_pairs)
 
         subparsers = self.parser.add_subparsers(dest='subparser')
 
@@ -147,6 +152,22 @@ class Arguments:
         list_timeframes_cmd.set_defaults(func=start_list_timeframes)
         self._build_args(optionlist=ARGS_LIST_TIMEFRAMES, parser=list_timeframes_cmd)
 
+        # Add list-markets subcommand
+        list_markets_cmd = subparsers.add_parser(
+            'list-markets',
+            help='Print markets on exchange.'
+        )
+        list_markets_cmd.set_defaults(func=partial(start_list_pairs, pairs_only=False))
+        self._build_args(optionlist=ARGS_LIST_PAIRS, parser=list_markets_cmd)
+
+        # Add list-pairs subcommand
+        list_pairs_cmd = subparsers.add_parser(
+            'list-pairs',
+            help='Print pairs on exchange.'
+        )
+        list_pairs_cmd.set_defaults(func=partial(start_list_pairs, pairs_only=True))
+        self._build_args(optionlist=ARGS_LIST_PAIRS, parser=list_pairs_cmd)
+
         # Add download-data subcommand
         download_data_cmd = subparsers.add_parser(
             'download-data',
diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py
index 7e6a956ce..d3863481a 100644
--- a/freqtrade/configuration/cli_options.py
+++ b/freqtrade/configuration/cli_options.py
@@ -255,6 +255,26 @@ AVAILABLE_CLI_OPTIONS = {
         help='Print all exchanges known to the ccxt library.',
         action='store_true',
     ),
+    # List pairs / markets
+    "print_list": Arg(
+        '--print-list',
+        help='Print list of pairs or market symbols. By default data is '
+             'printed in the tabular format.',
+        action='store_true',
+    ),
+    "quote_currency": Arg(
+        '--quote-currency',
+        help='Select quote currency.',
+    ),
+    "base_currency": Arg(
+        '--base-currency',
+        help='Select base currency.',
+    ),
+    "active_only": Arg(
+        '--active-only',
+        help='Print only active pairs or markets.',
+        action='store_true',
+    ),
     # Script options
     "pairs": Arg(
         '-p', '--pairs',
diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index df7e5e2b4..a312d6c62 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -280,6 +280,25 @@ class Exchange:
             self._load_markets()
         return self._api.markets
 
+    def get_markets(self, base_currency: str = None, quote_currency: str = None,
+                    pairs_only: bool = False, active_only: bool = False) -> Dict:
+        """
+        Return exchange ccxt markets, filtered out by base currency and quote currency
+        if this was requested in parameters.
+
+        TODO: consider moving it to the Dataprovider
+        """
+        markets = self.markets
+        if base_currency:
+            markets = {k: v for k, v in markets.items() if v['base'] == base_currency}
+        if quote_currency:
+            markets = {k: v for k, v in markets.items() if v['quote'] == quote_currency}
+        if pairs_only:
+            markets = {k: v for k, v in markets.items() if '/' in v['symbol']}
+        if active_only:
+            markets = {k: v for k, v in markets.items() if v['active']}
+        return markets
+
     def klines(self, pair_interval: Tuple[str, str], copy=True) -> DataFrame:
         if pair_interval in self._klines:
             return self._klines[pair_interval].copy() if copy else self._klines[pair_interval]
diff --git a/freqtrade/misc.py b/freqtrade/misc.py
index c9fbda17e..387e8a42f 100644
--- a/freqtrade/misc.py
+++ b/freqtrade/misc.py
@@ -121,3 +121,7 @@ def round_dict(d, n):
     Rounds float values in the dict to n digits after the decimal point.
     """
     return {k: (round(v, n) if isinstance(v, float) else v) for k, v in d.items()}
+
+
+def plural(num, singular: str, plural: str = None) -> str:
+    return singular if (num == 1 or num == -1) else plural or singular + 's'
diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index b3ff43aca..3f25778a4 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -4,12 +4,14 @@ from pathlib import Path
 from typing import Any, Dict, List
 
 import arrow
+from tabulate import tabulate
 
 from freqtrade import OperationalException
 from freqtrade.configuration import Configuration, TimeRange
 from freqtrade.configuration.directory_operations import create_userdata_dir
 from freqtrade.data.history import refresh_backtest_ohlcv_data
 from freqtrade.exchange import available_exchanges, ccxt_exchanges
+from freqtrade.misc import plural
 from freqtrade.resolvers import ExchangeResolver
 from freqtrade.state import RunMode
 
@@ -117,3 +119,43 @@ def start_list_timeframes(args: Dict[str, Any]) -> None:
     else:
         print(f"Timeframes available for the exchange `{config['exchange']['name']}`: "
               f"{', '.join(exchange.timeframes)}")
+
+
+def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None:
+    """
+    Print pairs on the exchange
+    :param args: Cli args from Arguments()
+    :param pairs_only: if True print only pairs, otherwise print all instruments (markets)
+    :return: None
+    """
+    config = setup_utils_configuration(args, RunMode.OTHER)
+
+    # Init exchange
+    exchange = ExchangeResolver(config['exchange']['name'], config).exchange
+
+    active_only = args.get('active_only', False)
+    base_currency = args.get('base_currency', '')
+    quote_currency = args.get('quote_currency', '')
+
+    pairs = exchange.get_markets(base_currency=base_currency,
+                                 quote_currency=quote_currency,
+                                 pairs_only=pairs_only,
+                                 active_only=active_only)
+
+    if args.get('print_list', False):
+        # print data as a list
+        print(f"Exchange {exchange.name} has {len(pairs)} " +
+              (plural(len(pairs), "pair" if pairs_only else "market")) +
+              (f" with {base_currency} as base currency" if base_currency else "") +
+              (" and" if base_currency and quote_currency else "") +
+              (f" with {quote_currency} as quote currency" if quote_currency else "") +
+              (f": {sorted(pairs.keys())}" if len(pairs) else "") + ".")
+    else:
+        # print data as a table
+        tabular_data = []
+        for _, v in pairs.items():
+            tabular_data.append([v['id'], v['symbol'], v['base'], v['quote'],
+                                "Yes" if v['active'] else "No"])
+
+        headers = ['Id', 'Symbol', 'Base', 'Quote', 'Active']
+        print(tabulate(tabular_data, headers=headers, tablefmt='pipe'))

From baad1a51668a82df63d990a03d73dbd866a17904 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 14 Aug 2019 10:45:57 +0200
Subject: [PATCH 0653/3421] Explain _params element

---
 freqtrade/exchange/exchange.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index df7e5e2b4..827a6df7c 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -142,6 +142,8 @@ def retrier(f):
 class Exchange:
 
     _config: Dict = {}
+
+    # Parameters to add directly to buy/sell calls (like agreeing to trading agreement)
     _params: Dict = {}
 
     # Dict to specify which options each exchange implements

From 6697b677dc44c91f939e8aa31eff0d590507cdc7 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 14 Aug 2019 18:56:46 +0200
Subject: [PATCH 0654/3421] Add test for test_data_filename

---
 tests/data/test_history.py | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index 96bc0da56..458c38189 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -15,13 +15,14 @@ from freqtrade.configuration import TimeRange
 from freqtrade.data import history
 from freqtrade.data.history import (download_pair_history,
                                     _load_cached_data_for_updating,
-                                    load_tickerdata_file,
                                     refresh_backtest_ohlcv_data,
+                                    load_tickerdata_file, pair_data_filename,
                                     trim_tickerlist)
 from freqtrade.exchange import timeframe_to_minutes
 from freqtrade.misc import file_dump_json
 from freqtrade.strategy.default_strategy import DefaultStrategy
-from tests.conftest import get_patched_exchange, log_has, log_has_re, patch_exchange
+from tests.conftest import (get_patched_exchange, log_has, log_has_re,
+                            patch_exchange)
 
 # Change this if modifying UNITTEST/BTC testdatafile
 _BTC_UNITTEST_LENGTH = 13681
@@ -134,6 +135,12 @@ def test_testdata_path(testdatadir) -> None:
     assert str(Path('tests') / 'testdata') in str(testdatadir)
 
 
+def test_pair_data_filename():
+    fn = pair_data_filename(Path('freqtrade/hello/world'), 'ETH/BTC', '5m')
+    assert isinstance(fn, Path)
+    assert fn == Path('freqtrade/hello/world/ETH_BTC-5m.json')
+
+
 def test_load_cached_data_for_updating(mocker) -> None:
     datadir = Path(__file__).parent.parent.joinpath('testdata')
 

From 63e87ef85b69a267c412ad445b78c069b6024915 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 14 Aug 2019 18:58:27 +0200
Subject: [PATCH 0655/3421] Add pair_trades_filename

---
 freqtrade/data/history.py  | 6 ++++++
 tests/data/test_history.py | 7 +++++++
 2 files changed, 13 insertions(+)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index 991a639ca..e47ddf6c8 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -173,6 +173,12 @@ def pair_data_filename(datadir: Path, pair: str, ticker_interval: str) -> Path:
     return filename
 
 
+def pair_trades_filename(datadir: Path, pair: str) -> Path:
+    pair_s = pair.replace("/", "_")
+    filename = datadir.joinpath(f'{pair_s}-trades.json')
+    return filename
+
+
 def _load_cached_data_for_updating(datadir: Path, pair: str, ticker_interval: str,
                                    timerange: Optional[TimeRange]) -> Tuple[List[Any],
                                                                             Optional[int]]:
diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index 458c38189..12d8d93da 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -17,6 +17,7 @@ from freqtrade.data.history import (download_pair_history,
                                     _load_cached_data_for_updating,
                                     refresh_backtest_ohlcv_data,
                                     load_tickerdata_file, pair_data_filename,
+                                    pair_trades_filename,
                                     trim_tickerlist)
 from freqtrade.exchange import timeframe_to_minutes
 from freqtrade.misc import file_dump_json
@@ -141,6 +142,12 @@ def test_pair_data_filename():
     assert fn == Path('freqtrade/hello/world/ETH_BTC-5m.json')
 
 
+def test_pair_trades_filename():
+    fn = pair_trades_filename(Path('freqtrade/hello/world'), 'ETH/BTC', '5m')
+    assert isinstance(fn, Path)
+    assert fn == Path('freqtrade/hello/world/ETH_BTC-trades.json')
+
+
 def test_load_cached_data_for_updating(mocker) -> None:
     datadir = Path(__file__).parent.parent.joinpath('testdata')
 

From 27dc9ca799e6b2cbba019668f1cbc6bba06fe81a Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 14 Aug 2019 19:22:52 +0200
Subject: [PATCH 0656/3421] Add trades_pagination attributes

---
 freqtrade/exchange/binance.py  | 2 ++
 freqtrade/exchange/exchange.py | 6 ++++++
 freqtrade/exchange/kraken.py   | 4 ++++
 3 files changed, 12 insertions(+)

diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py
index 14f409659..b5507981f 100644
--- a/freqtrade/exchange/binance.py
+++ b/freqtrade/exchange/binance.py
@@ -16,6 +16,8 @@ class Binance(Exchange):
     _ft_has: Dict = {
         "stoploss_on_exchange": True,
         "order_time_in_force": ['gtc', 'fok', 'ioc'],
+        "trades_pagination": "id",
+        "trades_pagination_arg": "fromId",
     }
 
     def get_order_book(self, pair: str, limit: int = 100) -> dict:
diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 827a6df7c..98e70ca7e 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -154,6 +154,9 @@ class Exchange:
         "order_time_in_force": ["gtc"],
         "ohlcv_candle_limit": 500,
         "ohlcv_partial_candle": True,
+        "trades_pagination": "time",  # Possible are "time" or "id"
+        "trades_pagination_arg": "since",
+
     }
     _ft_has: Dict = {}
 
@@ -197,6 +200,9 @@ class Exchange:
         self._ohlcv_candle_limit = self._ft_has['ohlcv_candle_limit']
         self._ohlcv_partial_candle = self._ft_has['ohlcv_partial_candle']
 
+        self._trades_pagination = self._ft_has['trades_pagination']
+        self._trades_pagination_arg = self._ft_has['trades_pagination_arg']
+
         # Initialize ccxt objects
         self._api = self._init_ccxt(
             exchange_config, ccxt_kwargs=exchange_config.get('ccxt_config'))
diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py
index 6d3e82eca..f548489bc 100644
--- a/freqtrade/exchange/kraken.py
+++ b/freqtrade/exchange/kraken.py
@@ -14,6 +14,10 @@ logger = logging.getLogger(__name__)
 class Kraken(Exchange):
 
     _params: Dict = {"trading_agreement": "agree"}
+    _ft_has: Dict = {
+        "trades_pagination": "id",
+        "trades_pagination_arg": "since",
+    }
 
     @retrier
     def get_balances(self) -> dict:

From 26b3148904860055aaf714ca8373a175721a320f Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 14 Aug 2019 20:30:13 +0200
Subject: [PATCH 0657/3421] Add build_ohlcv wrapper

---
 freqtrade/exchange/exchange.py | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 98e70ca7e..8ce0dec1b 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -839,6 +839,23 @@ class Exchange:
         except ccxt.BaseError as e:
             raise OperationalException(e) from e
 
+    def build_ohlcv(self, trades: List[Dict], timeframe: str, since: int = None,
+                    limit: int = None) -> str:
+        # TODO: fix return value
+        """
+        Build ohlcv data from trade list.
+        trade-list has to be in the ccxt format, which is a list of dicts containing at least:
+            * timestamp
+            * price
+            * amount
+        :param trades: List of Dicts
+        :param timeframe: timeframe to convert to (e.g. "5m")
+        :param since: start at a specific data, as oposed to the trades-list start date
+        :param limit: Limit amount of candles
+        :return: ohlcv data (as returned by ccxt.fetch_ohlcv)
+        """
+        return self._api.build_ohlcv(trades, timeframe, since, limit)
+
 
 def is_exchange_bad(exchange_name: str) -> bool:
     return exchange_name in BAD_EXCHANGES

From 77c367ad1df5d3c04bf456a67314893179317771 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Wed, 14 Aug 2019 20:30:29 +0200
Subject: [PATCH 0658/3421] First draft of async get_trade methods

---
 freqtrade/exchange/exchange.py | 140 +++++++++++++++++++++++++++++++++
 1 file changed, 140 insertions(+)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 8ce0dec1b..5608d233c 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -745,6 +745,146 @@ class Exchange:
         except ccxt.BaseError as e:
             raise OperationalException(f'Could not fetch ticker data. Msg: {e}') from e
 
+    @retrier_async
+    async def _async_fetch_trades(self, pair: str,
+                                  since: Optional[int] = None,
+                                  params: Optional[dict] = None) -> List[Dict]:
+        """
+        Asyncronously gets trade history using fetch_trades.
+        :param pair: Pair to fetch trade data for
+        :param since: Since as integer timestamp in milliseconds
+        returns tuple: (pair, ticker_interval, ohlcv_list)
+        """
+        if not self.exchange_has("fetchTrades"):
+            # TODO: Maybe don't stop the bot ... ?
+            raise OperationalException("This exchange does not suport downloading Trades.")
+        try:
+            # fetch trades asynchronously
+            if params:
+                logger.debug("Fetching trades for pair %s, params: %s ", pair, params)
+                trades = await self._api_async.fetch_trades(pair, params=params, limit=1000)
+            else:
+                logger.debug(
+                    "Fetching trades for pair %s, since %s %s...",
+                    pair,  since,
+                    '(' + arrow.get(since // 1000).isoformat() + ') ' if since is not None else ''
+                )
+                trades = await self._api_async.fetch_trades(pair, since=since, limit=1000)
+            return trades
+        except ccxt.NotSupported as e:
+            raise OperationalException(
+                f'Exchange {self._api.name} does not support fetching historical trade data.'
+                f'Message: {e}') from e
+        except (ccxt.NetworkError, ccxt.ExchangeError) as e:
+            raise TemporaryError(f'Could not load trade history due to {e.__class__.__name__}. '
+                                 f'Message: {e}') from e
+        except ccxt.BaseError as e:
+            raise OperationalException(f'Could not fetch trade data. Msg: {e}') from e
+
+    async def _async_get_trade_history_id(self, pair: str,
+                                          since: Optional[int] = None,
+                                          until: Optional[int] = None) -> Tuple[str, List[Dict]]:
+        """
+        Asyncronously gets trade history using fetch_trades
+        use this when exchange doesn't use time-based pagination (e.g. Kraken)
+        :param pair: Pair to fetch trade data for
+        :param since: Since as integer timestamp in milliseconds
+        :param until: Until as integer timestamp in milliseconds
+        returns tuple: (pair, ticker_interval, ohlcv_list)
+        """
+        try:
+            if self._trades_pagination == 'time':
+                raise OperationalException(f"Wrong method called to get trades for {self.name}")
+            trades: List[Dict] = []
+
+            # Fetch first elements using timebased method to get an ID to paginate on
+            # Depending on the Exchange, this can introduce a drift at the start of the interval
+            # of up to an hour.
+            # Binance returns the "last 1000" candles within a 1h time interval
+            # - so we will miss the first candles.
+            t = await self._async_fetch_trades(pair, since=since)
+            from_id = t[-1]['id']
+            trades.extend(t)
+            while True:
+                t = await self._async_fetch_trades(pair,
+                                                   params={self._trades_pagination_arg: from_id})
+                if len(t):
+                    from_id = t[-1]['id']
+                    # TODO: eliminate duplicates (first trade = last from previous)
+                    trades.extend(t)
+                    # Reached the end of the defined-download period
+                    if until and t[-1]['timestamp'] > until:
+                        print(f"Reached {t[-1]['timestamp']} > {until}")
+                        break
+                else:
+                    break
+
+            return (pair, trades)
+        except ccxt.NotSupported as e:
+            raise OperationalException(
+                f'Exchange {self._api.name} does not support fetching historical trade data.'
+                f'Message: {e}') from e
+        except (ccxt.NetworkError, ccxt.ExchangeError) as e:
+            raise TemporaryError(f'Could not load trade history due to {e.__class__.__name__}. '
+                                 f'Message: {e}') from e
+        except ccxt.BaseError as e:
+            raise OperationalException(f'Could not fetch trade data. Msg: {e}') from e
+
+    async def _async_get_trade_history(self, pair: str,
+                                       since: Optional[int] = None,
+                                       until: Optional[int] = None) -> Tuple[str, List]:
+        """
+        Asyncronously gets trade history using fetch_trades.
+        :param pair: Pair to fetch trade data for
+        :param since: Since as integer timestamp in milliseconds
+        :param until: Until as integer timestamp in milliseconds
+        returns tuple: (pair, ticker_interval, ohlcv_list)
+        """
+        if not self.exchange_has("fetchTrades"):
+            # TODO: Maybe don't completey stop the bot ... ?
+            raise OperationalException("This exchange does not suport downloading Trades.")
+        try:
+            if self._trades_pagination != 'time':
+                return await self._async_get_trade_history_id(pair, since, until)
+
+            trades: List[Dict] = []
+            while True:
+                t = await self._async_fetch_trades(pair, since=since)
+                if len(t):
+                    since = t[-1]['timestamp']
+                    trades.extend(t)
+                    # Reached the end of the defined-download period
+                    if until and t[-1]['timestamp'] > until:
+                        break
+                else:
+                    break
+
+            return (pair, trades)
+        except ccxt.NotSupported as e:
+            raise OperationalException(
+                f'Exchange {self._api.name} does not support fetching historical trade data.'
+                f'Message: {e}') from e
+        except (ccxt.NetworkError, ccxt.ExchangeError) as e:
+            raise TemporaryError(f'Could not load trade history due to {e.__class__.__name__}. '
+                                 f'Message: {e}') from e
+        except ccxt.BaseError as e:
+            raise OperationalException(f'Could not fetch trade data. Msg: {e}') from e
+
+    def get_historic_trades(self, pair: str,
+                            since: Optional[int] = None,
+                            until: Optional[int] = None) -> List:
+        """
+        Gets candle history using asyncio and returns the list of candles.
+        Handles all async doing.
+        Async over one pair, assuming we get `_ohlcv_candle_limit` candles per call.
+        :param pair: Pair to download
+        :param ticker_interval: Interval to get
+        :param since_ms: Timestamp in milliseconds to get history from
+        :returns List of tickers
+        """
+        return asyncio.get_event_loop().run_until_complete(
+            self._async_get_trade_history(pair=pair, since=since, until=until))
+
     @retrier
     def cancel_order(self, order_id: str, pair: str) -> None:
         if self._config['dry_run']:

From 6cc98c1ea92f5975298946cb8db1219349cbf8c4 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 15 Aug 2019 16:49:54 +0200
Subject: [PATCH 0659/3421] Fix tests

---
 tests/data/test_history.py      | 2 +-
 tests/exchange/test_exchange.py | 6 +++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index 12d8d93da..55b8fe1d1 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -143,7 +143,7 @@ def test_pair_data_filename():
 
 
 def test_pair_trades_filename():
-    fn = pair_trades_filename(Path('freqtrade/hello/world'), 'ETH/BTC', '5m')
+    fn = pair_trades_filename(Path('freqtrade/hello/world'), 'ETH/BTC')
     assert isinstance(fn, Path)
     assert fn == Path('freqtrade/hello/world/ETH_BTC-trades.json')
 
diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index bf6025322..9e6356b18 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -1453,13 +1453,17 @@ def test_merge_ft_has_dict(default_conf, mocker):
     assert ex._ft_has == Exchange._ft_has_default
 
     ex = Kraken(default_conf)
-    assert ex._ft_has == Exchange._ft_has_default
+    assert ex._ft_has != Exchange._ft_has_default
+    assert ex._ft_has['trades_pagination'] == 'id'
+    assert ex._ft_has['trades_pagination_arg'] == 'since'
 
     # Binance defines different values
     ex = Binance(default_conf)
     assert ex._ft_has != Exchange._ft_has_default
     assert ex._ft_has['stoploss_on_exchange']
     assert ex._ft_has['order_time_in_force'] == ['gtc', 'fok', 'ioc']
+    assert ex._ft_has['trades_pagination'] == 'id'
+    assert ex._ft_has['trades_pagination_arg'] == 'fromId'
 
     conf = copy.deepcopy(default_conf)
     conf['exchange']['_ft_has_params'] = {"DeadBeef": 20,

From 42b82415411b5d90bf8aa46d5fcf59dc57a317c7 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 16 Aug 2019 10:26:20 +0200
Subject: [PATCH 0660/3421] use gz to save / load trades data

---
 freqtrade/data/history.py  | 2 +-
 tests/data/test_history.py | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index e47ddf6c8..b487ea56e 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -175,7 +175,7 @@ def pair_data_filename(datadir: Path, pair: str, ticker_interval: str) -> Path:
 
 def pair_trades_filename(datadir: Path, pair: str) -> Path:
     pair_s = pair.replace("/", "_")
-    filename = datadir.joinpath(f'{pair_s}-trades.json')
+    filename = datadir.joinpath(f'{pair_s}-trades.json.gz')
     return filename
 
 
diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index 55b8fe1d1..032c1b306 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -145,7 +145,7 @@ def test_pair_data_filename():
 def test_pair_trades_filename():
     fn = pair_trades_filename(Path('freqtrade/hello/world'), 'ETH/BTC')
     assert isinstance(fn, Path)
-    assert fn == Path('freqtrade/hello/world/ETH_BTC-trades.json')
+    assert fn == Path('freqtrade/hello/world/ETH_BTC-trades.json.gz')
 
 
 def test_load_cached_data_for_updating(mocker) -> None:

From d250b67f33feccb937ef61a7c7de18a20e25b2cc Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 16 Aug 2019 10:26:38 +0200
Subject: [PATCH 0661/3421] Add load/store trades data

---
 freqtrade/data/history.py | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index b487ea56e..cbae01152 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -82,6 +82,30 @@ def store_tickerdata_file(datadir: Path, pair: str,
     misc.file_dump_json(filename, data, is_zip=is_zip)
 
 
+def load_trades_file(datadir: Optional[Path], pair: str,
+                     timerange: Optional[TimeRange] = None) -> Optional[list]:
+    """
+    Load a pair from file, either .json.gz or .json
+    :return: tickerlist or None if unsuccesful
+    """
+    filename = pair_trades_filename(datadir, pair)
+    tradesdata = misc.file_load_json(filename)
+    if not tradesdata:
+        return None
+
+    # TODO: trim trades based on timerange... ?
+    return tradesdata
+
+
+def store_trades_file(datadir: Optional[Path], pair: str,
+                      data: list, is_zip: bool = True):
+    """
+    Stores tickerdata to file
+    """
+    filename = pair_trades_filename(datadir, pair)
+    misc.file_dump_json(filename, data, is_zip=is_zip)
+
+
 def _validate_pairdata(pair, pairdata, timerange: TimeRange):
     if timerange.starttype == 'date' and pairdata[0][0] > timerange.startts * 1000:
         logger.warning('Missing data at start for pair %s, data starts at %s',

From ab8f638e44864882c8be15f217f09a5afc9854e0 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 16 Aug 2019 10:34:52 +0200
Subject: [PATCH 0662/3421] Move id/time detection to get_historic_trades
 method

---
 freqtrade/exchange/exchange.py | 37 +++++++++++++++++++++-------------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 5608d233c..945c06966 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -783,7 +783,8 @@ class Exchange:
 
     async def _async_get_trade_history_id(self, pair: str,
                                           since: Optional[int] = None,
-                                          until: Optional[int] = None) -> Tuple[str, List[Dict]]:
+                                          until: Optional[int] = None,
+                                          from_id: Optional[str] = None) -> Tuple[str, List[Dict]]:
         """
         Asyncronously gets trade history using fetch_trades
         use this when exchange doesn't use time-based pagination (e.g. Kraken)
@@ -797,14 +798,15 @@ class Exchange:
                 raise OperationalException(f"Wrong method called to get trades for {self.name}")
             trades: List[Dict] = []
 
-            # Fetch first elements using timebased method to get an ID to paginate on
-            # Depending on the Exchange, this can introduce a drift at the start of the interval
-            # of up to an hour.
-            # Binance returns the "last 1000" candles within a 1h time interval
-            # - so we will miss the first candles.
-            t = await self._async_fetch_trades(pair, since=since)
-            from_id = t[-1]['id']
-            trades.extend(t)
+            if not from_id:
+                # Fetch first elements using timebased method to get an ID to paginate on
+                # Depending on the Exchange, this can introduce a drift at the start of the interval
+                # of up to an hour.
+                # Binance returns the "last 1000" candles within a 1h time interval
+                # - so we will miss the first candles.
+                t = await self._async_fetch_trades(pair, since=since)
+                from_id = t[-1]['id']
+                trades.extend(t)
             while True:
                 t = await self._async_fetch_trades(pair,
                                                    params={self._trades_pagination_arg: from_id})
@@ -844,8 +846,6 @@ class Exchange:
             # TODO: Maybe don't completey stop the bot ... ?
             raise OperationalException("This exchange does not suport downloading Trades.")
         try:
-            if self._trades_pagination != 'time':
-                return await self._async_get_trade_history_id(pair, since, until)
 
             trades: List[Dict] = []
             while True:
@@ -872,7 +872,8 @@ class Exchange:
 
     def get_historic_trades(self, pair: str,
                             since: Optional[int] = None,
-                            until: Optional[int] = None) -> List:
+                            until: Optional[int] = None,
+                            from_id: Optional[str] = None) -> List:
         """
         Gets candle history using asyncio and returns the list of candles.
         Handles all async doing.
@@ -880,10 +881,18 @@ class Exchange:
         :param pair: Pair to download
         :param ticker_interval: Interval to get
         :param since_ms: Timestamp in milliseconds to get history from
+        :param from_id: Download data starting with ID (if id is known)
         :returns List of tickers
         """
-        return asyncio.get_event_loop().run_until_complete(
-            self._async_get_trade_history(pair=pair, since=since, until=until))
+
+        if self._trades_pagination == 'time':
+            return asyncio.get_event_loop().run_until_complete(
+                self._async_get_trade_history(pair=pair, since=since, until=until))
+        elif self._trades_pagination == 'id':
+            # Use id-based trade-downloader
+            return asyncio.get_event_loop().run_until_complete(
+                self._async_get_trade_history_id(pair=pair, since=since,
+                                                 until=until, from_id=from_id))
 
     @retrier
     def cancel_order(self, order_id: str, pair: str) -> None:

From 2c0bb71a6e4d81343fd525a18e8b73023589572e Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 16 Aug 2019 10:51:04 +0200
Subject: [PATCH 0663/3421] Add download_trades_history()

---
 freqtrade/data/history.py      | 47 +++++++++++++++++++++++++++++++---
 freqtrade/exchange/exchange.py |  9 +++++--
 2 files changed, 51 insertions(+), 5 deletions(-)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index cbae01152..46da37f3c 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -83,15 +83,15 @@ def store_tickerdata_file(datadir: Path, pair: str,
 
 
 def load_trades_file(datadir: Optional[Path], pair: str,
-                     timerange: Optional[TimeRange] = None) -> Optional[list]:
+                     timerange: Optional[TimeRange] = None) -> List[Dict]:
     """
     Load a pair from file, either .json.gz or .json
-    :return: tickerlist or None if unsuccesful
+    :return: tickerlist or empty list if unsuccesful
     """
     filename = pair_trades_filename(datadir, pair)
     tradesdata = misc.file_load_json(filename)
     if not tradesdata:
-        return None
+        return []
 
     # TODO: trim trades based on timerange... ?
     return tradesdata
@@ -329,6 +329,47 @@ def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes
     return pairs_not_available
 
 
+def download_trades_history(datadir: Optional[Path],
+                            exchange: Optional[Exchange],
+                            pair: str,
+                            ticker_interval: str = '5m',
+                            timerange: Optional[TimeRange] = None) -> bool:
+
+    if not exchange:
+        raise OperationalException(
+            "Exchange needs to be initialized to download data")
+    try:
+
+        since = timerange.startts * 1000 if timerange and timerange.starttype == 'date' else None
+
+        trades = load_trades_file(datadir, pair)
+
+        from_id = trades[-1]['id'] if trades else None
+
+        logger.debug("Current Start: %s", trades[1]['datetime'] if trades else 'None')
+        logger.debug("Current End: %s", trades[-1]['datetime'] if trades else 'None')
+
+        exchange.get_historic_trades(pair=pair,
+                                     since=since if since else
+                                     int(arrow.utcnow().shift(days=-30).float_timestamp) * 1000,
+                                     #  until=xxx,
+                                     from_id=from_id,
+                                     )
+
+        store_trades_file(datadir, pair, trades)
+
+        logger.debug("New Start: %s", trades[0]['datetime'])
+        logger.debug("New End: %s", trades[-1]['datetime'])
+        logger.info(f"New Amount of trades: {len(trades)}")
+
+    except Exception as e:
+        logger.error(
+            f'Failed to download historic trades for pair: "{pair}". '
+            f'Error: {e}'
+        )
+        return False
+
+
 def get_timeframe(data: Dict[str, DataFrame]) -> Tuple[arrow.Arrow, arrow.Arrow]:
     """
     Get the maximum timeframe for the given backtest data
diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 945c06966..158dfee9e 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -791,6 +791,7 @@ class Exchange:
         :param pair: Pair to fetch trade data for
         :param since: Since as integer timestamp in milliseconds
         :param until: Until as integer timestamp in milliseconds
+        :param from_id: Download data starting with ID (if id is known). Ignores "since" if set.
         returns tuple: (pair, ticker_interval, ohlcv_list)
         """
         try:
@@ -880,14 +881,18 @@ class Exchange:
         Async over one pair, assuming we get `_ohlcv_candle_limit` candles per call.
         :param pair: Pair to download
         :param ticker_interval: Interval to get
-        :param since_ms: Timestamp in milliseconds to get history from
+        :param since: Timestamp in milliseconds to get history from
+        :param until: Timestamp in milliseconds. Defaults to current timestamp if not defined.
         :param from_id: Download data starting with ID (if id is known)
         :returns List of tickers
         """
-
+        if not until:
+            # Current milliseconds
+            until = ccxt.Exchange.milliseconds()
         if self._trades_pagination == 'time':
             return asyncio.get_event_loop().run_until_complete(
                 self._async_get_trade_history(pair=pair, since=since, until=until))
+
         elif self._trades_pagination == 'id':
             # Use id-based trade-downloader
             return asyncio.get_event_loop().run_until_complete(

From 57dee794d157ee12dbdbcf1bae0a033fa47bed6a Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 25 Aug 2019 14:14:13 +0200
Subject: [PATCH 0664/3421] Fix end-reached for id-based trade-download

---
 freqtrade/exchange/exchange.py | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 158dfee9e..aed75df13 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -812,13 +812,15 @@ class Exchange:
                 t = await self._async_fetch_trades(pair,
                                                    params={self._trades_pagination_arg: from_id})
                 if len(t):
-                    from_id = t[-1]['id']
-                    # TODO: eliminate duplicates (first trade = last from previous)
                     trades.extend(t)
-                    # Reached the end of the defined-download period
-                    if until and t[-1]['timestamp'] > until:
+                    if from_id == t[-1]['id'] or (until and t[-1]['timestamp'] > until):
+                        print(f"from_id did not change.")
                         print(f"Reached {t[-1]['timestamp']} > {until}")
                         break
+
+                    # TODO: eliminate duplicates (first trade = last from previous)
+                    # Reached the end of the defined-download period
+                    from_id = t[-1]['id']
                 else:
                     break
 

From 6e952a0aa8fbdbe0c0abaf7ef0e18f5123db134e Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 25 Aug 2019 14:14:31 +0200
Subject: [PATCH 0665/3421] Capture downloaded data

---
 freqtrade/data/history.py | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index 46da37f3c..f2960e627 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -346,16 +346,17 @@ def download_trades_history(datadir: Optional[Path],
 
         from_id = trades[-1]['id'] if trades else None
 
-        logger.debug("Current Start: %s", trades[1]['datetime'] if trades else 'None')
+        logger.debug("Current Start: %s", trades[0]['datetime'] if trades else 'None')
         logger.debug("Current End: %s", trades[-1]['datetime'] if trades else 'None')
 
-        exchange.get_historic_trades(pair=pair,
-                                     since=since if since else
-                                     int(arrow.utcnow().shift(days=-30).float_timestamp) * 1000,
-                                     #  until=xxx,
-                                     from_id=from_id,
-                                     )
-
+        new_trades = exchange.get_historic_trades(pair=pair,
+                                            since=since if since else
+                                            int(arrow.utcnow().shift(
+                                                days=-30).float_timestamp) * 1000,
+                                            #  until=xxx,
+                                            from_id=from_id,
+                                            )
+        trades.extend(new_trades[1])
         store_trades_file(datadir, pair, trades)
 
         logger.debug("New Start: %s", trades[0]['datetime'])

From 06024b0ab0692b0338207d596191cc16f51f43b4 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 25 Aug 2019 14:30:02 +0200
Subject: [PATCH 0666/3421] Fix zipfile handling

---
 freqtrade/misc.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/freqtrade/misc.py b/freqtrade/misc.py
index c9fbda17e..b8e89b040 100644
--- a/freqtrade/misc.py
+++ b/freqtrade/misc.py
@@ -72,8 +72,10 @@ def json_load(datafile: IO):
 
 def file_load_json(file):
 
-    gzipfile = file.with_suffix(file.suffix + '.gz')
-
+    if file.suffix != ".gz":
+        gzipfile = file.with_suffix(file.suffix + '.gz')
+    else:
+        gzipfile = file
     # Try gzip file first, otherwise regular json file.
     if gzipfile.is_file():
         logger.debug('Loading ticker data from file %s', gzipfile)

From 19f3669fbd32f74ca2f82b408ed44b9ae306dcbc Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 25 Aug 2019 14:30:09 +0200
Subject: [PATCH 0667/3421] add docstring

---
 freqtrade/data/history.py | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index f2960e627..f5a1527f8 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -334,7 +334,10 @@ def download_trades_history(datadir: Optional[Path],
                             pair: str,
                             ticker_interval: str = '5m',
                             timerange: Optional[TimeRange] = None) -> bool:
-
+    """
+    Download trade history from the exchange.
+    Appends to previously downloaded trades data.
+    """
     if not exchange:
         raise OperationalException(
             "Exchange needs to be initialized to download data")
@@ -350,12 +353,12 @@ def download_trades_history(datadir: Optional[Path],
         logger.debug("Current End: %s", trades[-1]['datetime'] if trades else 'None')
 
         new_trades = exchange.get_historic_trades(pair=pair,
-                                            since=since if since else
-                                            int(arrow.utcnow().shift(
-                                                days=-30).float_timestamp) * 1000,
-                                            #  until=xxx,
-                                            from_id=from_id,
-                                            )
+                                                  since=since if since else
+                                                  int(arrow.utcnow().shift(
+                                                      days=-30).float_timestamp) * 1000,
+                                                  #  until=xxx,
+                                                  from_id=from_id,
+                                                  )
         trades.extend(new_trades[1])
         store_trades_file(datadir, pair, trades)
 

From 1d8fc9705328a84ccfe30a14c0c478abcab342c8 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 27 Aug 2019 07:12:04 +0200
Subject: [PATCH 0668/3421] Fix duplicate trade error, rename some methods

---
 freqtrade/exchange/exchange.py | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index aed75df13..50fdd33fc 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -797,6 +797,10 @@ class Exchange:
         try:
             if self._trades_pagination == 'time':
                 raise OperationalException(f"Wrong method called to get trades for {self.name}")
+       i    if not self.exchange_has("fetchTrades"):
+                # TODO: Maybe don't completey stop the bot ... ?
+                raise OperationalException("This exchange does not suport downloading Trades.")
+
             trades: List[Dict] = []
 
             if not from_id:
@@ -807,18 +811,18 @@ class Exchange:
                 # - so we will miss the first candles.
                 t = await self._async_fetch_trades(pair, since=since)
                 from_id = t[-1]['id']
-                trades.extend(t)
+                trades.extend(t[:-1])
             while True:
                 t = await self._async_fetch_trades(pair,
                                                    params={self._trades_pagination_arg: from_id})
                 if len(t):
-                    trades.extend(t)
+                    # Skip last id since its the key for the next call
+                    trades.extend(t[:-1])
                     if from_id == t[-1]['id'] or (until and t[-1]['timestamp'] > until):
-                        print(f"from_id did not change.")
-                        print(f"Reached {t[-1]['timestamp']} > {until}")
+                        logger.debug(f"Stopping because from_id did not change. "
+                                     f"Reached {t[-1]['timestamp']} > {until}")
                         break
 
-                    # TODO: eliminate duplicates (first trade = last from previous)
                     # Reached the end of the defined-download period
                     from_id = t[-1]['id']
                 else:
@@ -835,9 +839,9 @@ class Exchange:
         except ccxt.BaseError as e:
             raise OperationalException(f'Could not fetch trade data. Msg: {e}') from e
 
-    async def _async_get_trade_history(self, pair: str,
-                                       since: Optional[int] = None,
-                                       until: Optional[int] = None) -> Tuple[str, List]:
+    async def _async_get_trade_history_time(self, pair: str,
+                                            since: Optional[int] = None,
+                                            until: Optional[int] = None) -> Tuple[str, List]:
         """
         Asyncronously gets trade history using fetch_trades.
         :param pair: Pair to fetch trade data for
@@ -845,6 +849,8 @@ class Exchange:
         :param until: Until as integer timestamp in milliseconds
         returns tuple: (pair, ticker_interval, ohlcv_list)
         """
+        if self._trades_pagination != 'time':
+            raise OperationalException(f"Wrong method called to get trades for {self.name}")
         if not self.exchange_has("fetchTrades"):
             # TODO: Maybe don't completey stop the bot ... ?
             raise OperationalException("This exchange does not suport downloading Trades.")
@@ -893,7 +899,7 @@ class Exchange:
             until = ccxt.Exchange.milliseconds()
         if self._trades_pagination == 'time':
             return asyncio.get_event_loop().run_until_complete(
-                self._async_get_trade_history(pair=pair, since=since, until=until))
+                self._async_get_trade_history_time(pair=pair, since=since, until=until))
 
         elif self._trades_pagination == 'id':
             # Use id-based trade-downloader

From 1f79ca953975a3f54499ef697c80f0e260e1a5c5 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 27 Aug 2019 07:13:32 +0200
Subject: [PATCH 0669/3421] Remove duplicate check

---
 freqtrade/exchange/exchange.py | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 50fdd33fc..4c384e0bd 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -797,9 +797,6 @@ class Exchange:
         try:
             if self._trades_pagination == 'time':
                 raise OperationalException(f"Wrong method called to get trades for {self.name}")
-       i    if not self.exchange_has("fetchTrades"):
-                # TODO: Maybe don't completey stop the bot ... ?
-                raise OperationalException("This exchange does not suport downloading Trades.")
 
             trades: List[Dict] = []
 
@@ -843,7 +840,8 @@ class Exchange:
                                             since: Optional[int] = None,
                                             until: Optional[int] = None) -> Tuple[str, List]:
         """
-        Asyncronously gets trade history using fetch_trades.
+        Asyncronously gets trade history using fetch_trades,
+        when the exchange uses time-based iteration
         :param pair: Pair to fetch trade data for
         :param since: Since as integer timestamp in milliseconds
         :param until: Until as integer timestamp in milliseconds
@@ -851,9 +849,6 @@ class Exchange:
         """
         if self._trades_pagination != 'time':
             raise OperationalException(f"Wrong method called to get trades for {self.name}")
-        if not self.exchange_has("fetchTrades"):
-            # TODO: Maybe don't completey stop the bot ... ?
-            raise OperationalException("This exchange does not suport downloading Trades.")
         try:
 
             trades: List[Dict] = []

From 8069cd66898653b9d9ab98ae44679c19df3fa1b6 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 27 Aug 2019 07:13:50 +0200
Subject: [PATCH 0670/3421] add refresh_trades_ method

---
 freqtrade/data/history.py | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index f5a1527f8..2056ef1c5 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -332,7 +332,6 @@ def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes
 def download_trades_history(datadir: Optional[Path],
                             exchange: Optional[Exchange],
                             pair: str,
-                            ticker_interval: str = '5m',
                             timerange: Optional[TimeRange] = None) -> bool:
     """
     Download trade history from the exchange.
@@ -374,6 +373,35 @@ def download_trades_history(datadir: Optional[Path],
         return False
 
 
+def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], timeframes: List[str],
+                                 dl_path: Path, timerange: TimeRange,
+                                 erase=False) -> List[str]:
+    """
+    Refresh stored trades data .
+    Used by freqtrade download-data
+    :return: Pairs not available
+    """
+    pairs_not_available = []
+    for pair in pairs:
+        if pair not in exchange.markets:
+            pairs_not_available.append(pair)
+            logger.info(f"Skipping pair {pair}...")
+            continue
+        # for ticker_interval in timeframes:
+
+        dl_file = pair_trades_filename(dl_path, pair)
+        if erase and dl_file.exists():
+            logger.info(
+                f'Deleting existing data for pair {pair}.')
+            dl_file.unlink()
+
+        logger.info(f'Downloading trades for pair {pair}.')
+        download_trades_history(datadir=dl_path, exchange=exchange,
+                                pair=pair,
+                                timerange=timerange)
+    return pairs_not_available
+
+
 def get_timeframe(data: Dict[str, DataFrame]) -> Tuple[arrow.Arrow, arrow.Arrow]:
     """
     Get the maximum timeframe for the given backtest data

From c1c49183b5dcfc4566f507701d3804d7e87b6221 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 27 Aug 2019 07:14:37 +0200
Subject: [PATCH 0671/3421] Call new method based on condition

---
 freqtrade/utils.py | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index b3ff43aca..c7950e5a4 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -8,7 +8,8 @@ import arrow
 from freqtrade import OperationalException
 from freqtrade.configuration import Configuration, TimeRange
 from freqtrade.configuration.directory_operations import create_userdata_dir
-from freqtrade.data.history import refresh_backtest_ohlcv_data
+from freqtrade.data.history import (refresh_backtest_ohlcv_data,
+                                    refresh_backtest_trades_data)
 from freqtrade.exchange import available_exchanges, ccxt_exchanges
 from freqtrade.resolvers import ExchangeResolver
 from freqtrade.state import RunMode
@@ -88,9 +89,15 @@ def start_download_data(args: Dict[str, Any]) -> None:
         # Init exchange
         exchange = ExchangeResolver(config['exchange']['name'], config).exchange
 
-        pairs_not_available = refresh_backtest_ohlcv_data(
-            exchange, pairs=config["pairs"], timeframes=config["timeframes"],
-            dl_path=Path(config['datadir']), timerange=timerange, erase=config.get("erase"))
+        # TODO Add correct switch here!
+        if 1 == 2:
+            pairs_not_available = refresh_backtest_ohlcv_data(
+                exchange, pairs=config["pairs"], timeframes=config["timeframes"],
+                dl_path=Path(config['datadir']), timerange=timerange, erase=config.get("erase"))
+        else:
+            pairs_not_available = refresh_backtest_trades_data(
+                exchange, pairs=config["pairs"], timeframes=config["timeframes"],
+                dl_path=Path(config['datadir']), timerange=timerange, erase=config.get("erase"))
 
     except KeyboardInterrupt:
         sys.exit("SIGINT received, aborting ...")

From 9584629f50b791e21674c2164d34c3f71e896ca4 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 29 Aug 2019 11:36:32 +0200
Subject: [PATCH 0672/3421] Rename argument from dl_path to datadir

---
 freqtrade/data/history.py      | 6 +++---
 freqtrade/exchange/exchange.py | 3 +--
 freqtrade/utils.py             | 2 +-
 3 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index 2056ef1c5..60db309d1 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -374,7 +374,7 @@ def download_trades_history(datadir: Optional[Path],
 
 
 def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], timeframes: List[str],
-                                 dl_path: Path, timerange: TimeRange,
+                                 datadir: Path, timerange: TimeRange,
                                  erase=False) -> List[str]:
     """
     Refresh stored trades data .
@@ -389,14 +389,14 @@ def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], timeframe
             continue
         # for ticker_interval in timeframes:
 
-        dl_file = pair_trades_filename(dl_path, pair)
+        dl_file = pair_trades_filename(datadir, pair)
         if erase and dl_file.exists():
             logger.info(
                 f'Deleting existing data for pair {pair}.')
             dl_file.unlink()
 
         logger.info(f'Downloading trades for pair {pair}.')
-        download_trades_history(datadir=dl_path, exchange=exchange,
+        download_trades_history(datadir=datadir, exchange=exchange,
                                 pair=pair,
                                 timerange=timerange)
     return pairs_not_available
diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 4c384e0bd..869037328 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -997,8 +997,7 @@ class Exchange:
             raise OperationalException(e) from e
 
     def build_ohlcv(self, trades: List[Dict], timeframe: str, since: int = None,
-                    limit: int = None) -> str:
-        # TODO: fix return value
+                    limit: int = None) -> List:
         """
         Build ohlcv data from trade list.
         trade-list has to be in the ccxt format, which is a list of dicts containing at least:
diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index c7950e5a4..8d0d8eb03 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -97,7 +97,7 @@ def start_download_data(args: Dict[str, Any]) -> None:
         else:
             pairs_not_available = refresh_backtest_trades_data(
                 exchange, pairs=config["pairs"], timeframes=config["timeframes"],
-                dl_path=Path(config['datadir']), timerange=timerange, erase=config.get("erase"))
+                datadir=Path(config['datadir']), timerange=timerange, erase=config.get("erase"))
 
     except KeyboardInterrupt:
         sys.exit("SIGINT received, aborting ...")

From 476adf872a7a802169986237fef9a815bce33039 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 29 Aug 2019 11:43:14 +0200
Subject: [PATCH 0673/3421] Add conversion from trades to ohlcv at different
 intervals

---
 freqtrade/data/history.py | 27 +++++++++++++++++++++------
 freqtrade/utils.py        |  8 +++++++-
 2 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index 60db309d1..606d7b801 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -86,7 +86,7 @@ def load_trades_file(datadir: Optional[Path], pair: str,
                      timerange: Optional[TimeRange] = None) -> List[Dict]:
     """
     Load a pair from file, either .json.gz or .json
-    :return: tickerlist or empty list if unsuccesful
+    :return: tradelist or empty list if unsuccesful
     """
     filename = pair_trades_filename(datadir, pair)
     tradesdata = misc.file_load_json(filename)
@@ -373,11 +373,10 @@ def download_trades_history(datadir: Optional[Path],
         return False
 
 
-def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], timeframes: List[str],
-                                 datadir: Path, timerange: TimeRange,
-                                 erase=False) -> List[str]:
+def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], datadir: Path,
+                                 timerange: TimeRange, erase=False) -> List[str]:
     """
-    Refresh stored trades data .
+    Refresh stored trades data.
     Used by freqtrade download-data
     :return: Pairs not available
     """
@@ -387,7 +386,6 @@ def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], timeframe
             pairs_not_available.append(pair)
             logger.info(f"Skipping pair {pair}...")
             continue
-        # for ticker_interval in timeframes:
 
         dl_file = pair_trades_filename(datadir, pair)
         if erase and dl_file.exists():
@@ -402,6 +400,23 @@ def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], timeframe
     return pairs_not_available
 
 
+def convert_trades_to_ohlcv(exchange: Exchange, pairs: List[str], timeframes: List[str],
+                            datadir: Path, timerange: TimeRange, erase=False) -> None:
+    """
+    Convert stored trades data to ohlcv data
+    """
+    for pair in pairs:
+        trades = load_trades_file(datadir, pair)
+        for timeframe in timeframes:
+            ohlcv_file = pair_data_filename(datadir, pair, timeframe)
+            if erase and ohlcv_file.exists():
+                logger.info(f'Deleting existing data for pair {pair}, interval {timeframe}.')
+                ohlcv_file.unlink()
+            ohlcv = exchange.build_ohlcv(trades, timeframe)
+            # Store ohlcv
+            store_tickerdata_file(datadir, pair, timeframe, data=ohlcv)
+
+
 def get_timeframe(data: Dict[str, DataFrame]) -> Tuple[arrow.Arrow, arrow.Arrow]:
     """
     Get the maximum timeframe for the given backtest data
diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index 8d0d8eb03..adcb3f6e0 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -8,7 +8,8 @@ import arrow
 from freqtrade import OperationalException
 from freqtrade.configuration import Configuration, TimeRange
 from freqtrade.configuration.directory_operations import create_userdata_dir
-from freqtrade.data.history import (refresh_backtest_ohlcv_data,
+from freqtrade.data.history import (convert_trades_to_ohlcv,
+                                    refresh_backtest_ohlcv_data,
                                     refresh_backtest_trades_data)
 from freqtrade.exchange import available_exchanges, ccxt_exchanges
 from freqtrade.resolvers import ExchangeResolver
@@ -96,6 +97,11 @@ def start_download_data(args: Dict[str, Any]) -> None:
                 dl_path=Path(config['datadir']), timerange=timerange, erase=config.get("erase"))
         else:
             pairs_not_available = refresh_backtest_trades_data(
+                exchange, pairs=config["pairs"], datadir=Path(config['datadir']),
+                timerange=timerange, erase=config.get("erase"))
+
+            # Convert downloaded trade data to different timeframes
+            convert_trades_to_ohlcv(
                 exchange, pairs=config["pairs"], timeframes=config["timeframes"],
                 datadir=Path(config['datadir']), timerange=timerange, erase=config.get("erase"))
 

From 0d592f6c5552896c7b21cc6924e0617eb89445ed Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 29 Aug 2019 12:56:10 +0200
Subject: [PATCH 0674/3421] Refactor trade downloading to handle exceptions
 only once

---
 freqtrade/data/history.py      |   1 +
 freqtrade/exchange/exchange.py | 133 ++++++++++++++++-----------------
 2 files changed, 67 insertions(+), 67 deletions(-)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index 606d7b801..0049f0db5 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -364,6 +364,7 @@ def download_trades_history(datadir: Optional[Path],
         logger.debug("New Start: %s", trades[0]['datetime'])
         logger.debug("New End: %s", trades[-1]['datetime'])
         logger.info(f"New Amount of trades: {len(trades)}")
+        return True
 
     except Exception as e:
         logger.error(
diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 869037328..f48fa0a71 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -751,13 +751,11 @@ class Exchange:
                                   params: Optional[dict] = None) -> List[Dict]:
         """
         Asyncronously gets trade history using fetch_trades.
+        Handles exchange errors, does one call to the exchange.
         :param pair: Pair to fetch trade data for
         :param since: Since as integer timestamp in milliseconds
         returns tuple: (pair, ticker_interval, ohlcv_list)
         """
-        if not self.exchange_has("fetchTrades"):
-            # TODO: Maybe don't stop the bot ... ?
-            raise OperationalException("This exchange does not suport downloading Trades.")
         try:
             # fetch trades asynchronously
             if params:
@@ -787,58 +785,47 @@ class Exchange:
                                           from_id: Optional[str] = None) -> Tuple[str, List[Dict]]:
         """
         Asyncronously gets trade history using fetch_trades
-        use this when exchange doesn't use time-based pagination (e.g. Kraken)
+        use this when exchange uses id-based iteration
         :param pair: Pair to fetch trade data for
         :param since: Since as integer timestamp in milliseconds
         :param until: Until as integer timestamp in milliseconds
         :param from_id: Download data starting with ID (if id is known). Ignores "since" if set.
         returns tuple: (pair, ticker_interval, ohlcv_list)
         """
-        try:
-            if self._trades_pagination == 'time':
-                raise OperationalException(f"Wrong method called to get trades for {self.name}")
+        if self._trades_pagination == 'time':
+            raise OperationalException(f"Wrong method called to get trades for {self.name}")
 
-            trades: List[Dict] = []
+        trades: List[Dict] = []
 
-            if not from_id:
-                # Fetch first elements using timebased method to get an ID to paginate on
-                # Depending on the Exchange, this can introduce a drift at the start of the interval
-                # of up to an hour.
-                # Binance returns the "last 1000" candles within a 1h time interval
-                # - so we will miss the first candles.
-                t = await self._async_fetch_trades(pair, since=since)
-                from_id = t[-1]['id']
+        if not from_id:
+            # Fetch first elements using timebased method to get an ID to paginate on
+            # Depending on the Exchange, this can introduce a drift at the start of the interval
+            # of up to an hour.
+            # Binance returns the "last 1000" candles within a 1h time interval
+            # - so we will miss the first candles.
+            t = await self._async_fetch_trades(pair, since=since)
+            from_id = t[-1]['id']
+            trades.extend(t[:-1])
+        while True:
+            t = await self._async_fetch_trades(pair,
+                                               params={self._trades_pagination_arg: from_id})
+            if len(t):
+                # Skip last id since its the key for the next call
                 trades.extend(t[:-1])
-            while True:
-                t = await self._async_fetch_trades(pair,
-                                                   params={self._trades_pagination_arg: from_id})
-                if len(t):
-                    # Skip last id since its the key for the next call
-                    trades.extend(t[:-1])
-                    if from_id == t[-1]['id'] or (until and t[-1]['timestamp'] > until):
-                        logger.debug(f"Stopping because from_id did not change. "
-                                     f"Reached {t[-1]['timestamp']} > {until}")
-                        break
-
-                    # Reached the end of the defined-download period
-                    from_id = t[-1]['id']
-                else:
+                if from_id == t[-1]['id'] or (until and t[-1]['timestamp'] > until):
+                    logger.debug(f"Stopping because from_id did not change. "
+                                 f"Reached {t[-1]['timestamp']} > {until}")
                     break
 
-            return (pair, trades)
-        except ccxt.NotSupported as e:
-            raise OperationalException(
-                f'Exchange {self._api.name} does not support fetching historical trade data.'
-                f'Message: {e}') from e
-        except (ccxt.NetworkError, ccxt.ExchangeError) as e:
-            raise TemporaryError(f'Could not load trade history due to {e.__class__.__name__}. '
-                                 f'Message: {e}') from e
-        except ccxt.BaseError as e:
-            raise OperationalException(f'Could not fetch trade data. Msg: {e}') from e
+                # Reached the end of the defined-download period
+                from_id = t[-1]['id']
+            else:
+                break
 
-    async def _async_get_trade_history_time(self, pair: str,
-                                            since: Optional[int] = None,
-                                            until: Optional[int] = None) -> Tuple[str, List]:
+        return (pair, trades)
+
+    async def _async_get_trade_history_time(self, pair: str, until: int,
+                                            since: Optional[int] = None) -> Tuple[str, List]:
         """
         Asyncronously gets trade history using fetch_trades,
         when the exchange uses time-based iteration
@@ -849,21 +836,41 @@ class Exchange:
         """
         if self._trades_pagination != 'time':
             raise OperationalException(f"Wrong method called to get trades for {self.name}")
-        try:
 
-            trades: List[Dict] = []
-            while True:
-                t = await self._async_fetch_trades(pair, since=since)
-                if len(t):
-                    since = t[-1]['timestamp']
-                    trades.extend(t)
-                    # Reached the end of the defined-download period
-                    if until and t[-1]['timestamp'] > until:
-                        break
-                else:
+        trades: List[Dict] = []
+        while True:
+            t = await self._async_fetch_trades(pair, since=since)
+            if len(t):
+                since = t[-1]['timestamp']
+                trades.extend(t)
+                # Reached the end of the defined-download period
+                if until and t[-1]['timestamp'] > until:
                     break
+            else:
+                break
+
+        return (pair, trades)
+
+    async def _async_get_trade_history(self, pair: str,
+                                       since: Optional[int] = None,
+                                       until: Optional[int] = None,
+                                       from_id: Optional[str] = None) -> Tuple[str, List[Dict]]:
+        """
+        Async wrapper handling downloading trades using either time or id based methods.
+        """
+        if not self.exchange_has("fetchTrades"):
+            # TODO: Maybe don't stop the bot ... ?
+            raise OperationalException("This exchange does not suport downloading Trades.")
+        try:
+            if not until:
+                # Current milliseconds
+                until = ccxt.Exchange.milliseconds()
+            if self._trades_pagination == 'time':
+                return await self._async_get_trade_history_time(pair=pair, since=since, until=until)
+            elif self._trades_pagination == 'id':
+                return await self._async_get_trade_history_id(pair=pair, since=since,
+                                                              until=until, from_id=from_id)
 
-            return (pair, trades)
         except ccxt.NotSupported as e:
             raise OperationalException(
                 f'Exchange {self._api.name} does not support fetching historical trade data.'
@@ -877,7 +884,7 @@ class Exchange:
     def get_historic_trades(self, pair: str,
                             since: Optional[int] = None,
                             until: Optional[int] = None,
-                            from_id: Optional[str] = None) -> List:
+                            from_id: Optional[str] = None) -> Tuple[str, List]:
         """
         Gets candle history using asyncio and returns the list of candles.
         Handles all async doing.
@@ -889,18 +896,10 @@ class Exchange:
         :param from_id: Download data starting with ID (if id is known)
         :returns List of tickers
         """
-        if not until:
-            # Current milliseconds
-            until = ccxt.Exchange.milliseconds()
-        if self._trades_pagination == 'time':
-            return asyncio.get_event_loop().run_until_complete(
-                self._async_get_trade_history_time(pair=pair, since=since, until=until))
 
-        elif self._trades_pagination == 'id':
-            # Use id-based trade-downloader
-            return asyncio.get_event_loop().run_until_complete(
-                self._async_get_trade_history_id(pair=pair, since=since,
-                                                 until=until, from_id=from_id))
+        return asyncio.get_event_loop().run_until_complete(
+            self._async_get_trade_history(pair=pair, since=since,
+                                          until=until, from_id=from_id))
 
     @retrier
     def cancel_order(self, order_id: str, pair: str) -> None:

From 05e473642b5d645fc38cc9f1b5ad8ea9fd74304a Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 29 Aug 2019 13:01:44 +0200
Subject: [PATCH 0675/3421] Small adjustments to get_trade_history

---
 freqtrade/exchange/exchange.py | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index f48fa0a71..39200c8f7 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -780,8 +780,8 @@ class Exchange:
             raise OperationalException(f'Could not fetch trade data. Msg: {e}') from e
 
     async def _async_get_trade_history_id(self, pair: str,
+                                          until: int,
                                           since: Optional[int] = None,
-                                          until: Optional[int] = None,
                                           from_id: Optional[str] = None) -> Tuple[str, List[Dict]]:
         """
         Asyncronously gets trade history using fetch_trades
@@ -812,12 +812,12 @@ class Exchange:
             if len(t):
                 # Skip last id since its the key for the next call
                 trades.extend(t[:-1])
-                if from_id == t[-1]['id'] or (until and t[-1]['timestamp'] > until):
+                if from_id == t[-1]['id'] or t[-1]['timestamp'] > until:
                     logger.debug(f"Stopping because from_id did not change. "
                                  f"Reached {t[-1]['timestamp']} > {until}")
+                    # Reached the end of the defined-download period
                     break
 
-                # Reached the end of the defined-download period
                 from_id = t[-1]['id']
             else:
                 break
@@ -845,6 +845,8 @@ class Exchange:
                 trades.extend(t)
                 # Reached the end of the defined-download period
                 if until and t[-1]['timestamp'] > until:
+                    logger.debug(
+                        f"Stopping because until was reached. {t[-1]['timestamp']} > {until}")
                     break
             else:
                 break
@@ -862,14 +864,18 @@ class Exchange:
             # TODO: Maybe don't stop the bot ... ?
             raise OperationalException("This exchange does not suport downloading Trades.")
         try:
-            if not until:
-                # Current milliseconds
-                until = ccxt.Exchange.milliseconds()
             if self._trades_pagination == 'time':
-                return await self._async_get_trade_history_time(pair=pair, since=since, until=until)
+                return await self._async_get_trade_history_time(
+                    pair=pair, since=since,
+                    until=until or ccxt.Exchange.milliseconds())
             elif self._trades_pagination == 'id':
-                return await self._async_get_trade_history_id(pair=pair, since=since,
-                                                              until=until, from_id=from_id)
+                return await self._async_get_trade_history_id(
+                    pair=pair, since=since,
+                    until=until or ccxt.Exchange.milliseconds(), from_id=from_id
+                )
+            else:
+                raise OperationalException(f"Exchange {self.name} does use neither time, "
+                                           f"nor id based pagination")
 
         except ccxt.NotSupported as e:
             raise OperationalException(

From 16d6914b1535115cdbc817f0a7fb921018235196 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 29 Aug 2019 13:13:41 +0200
Subject: [PATCH 0676/3421] Add test to cover missing line

---
 freqtrade/exchange/exchange.py  | 4 ++--
 tests/exchange/test_exchange.py | 7 +++++++
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 39200c8f7..4c09b4e46 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -801,8 +801,8 @@ class Exchange:
             # Fetch first elements using timebased method to get an ID to paginate on
             # Depending on the Exchange, this can introduce a drift at the start of the interval
             # of up to an hour.
-            # Binance returns the "last 1000" candles within a 1h time interval
-            # - so we will miss the first candles.
+            # e.g. Binance returns the "last 1000" candles within a 1h time interval
+            # - so we will miss the first trades.
             t = await self._async_fetch_trades(pair, since=since)
             from_id = t[-1]['id']
             trades.extend(t[:-1])
diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index 9e6356b18..018cab3b8 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -1136,6 +1136,13 @@ async def test__async_get_candle_history(default_conf, mocker, caplog, exchange_
         await exchange._async_get_candle_history(pair, "5m",
                                                  (arrow.utcnow().timestamp - 2000) * 1000)
 
+    with pytest.raises(OperationalException, match=r'Exchange.* does not support fetching '
+                                                   r'historical candlestick data\..*'):
+        api_mock.fetch_ohlcv = MagicMock(side_effect=ccxt.NotSupported("Not supported"))
+        exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name)
+        await exchange._async_get_candle_history(pair, "5m",
+                                                 (arrow.utcnow().timestamp - 2000) * 1000)
+
 
 @pytest.mark.asyncio
 async def test__async_get_candle_history_empty(default_conf, mocker, caplog):

From 939a87ed2e652581c98aa3af9038b225884b76f7 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Thu, 29 Aug 2019 16:33:56 +0200
Subject: [PATCH 0677/3421] Add test for fetch_trades

---
 tests/conftest.py               | 64 +++++++++++++++++++++++++++++++++
 tests/exchange/test_exchange.py | 48 +++++++++++++++++++++++++
 2 files changed, 112 insertions(+)

diff --git a/tests/conftest.py b/tests/conftest.py
index 6a0a74b5b..cd0c29efc 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -928,6 +928,70 @@ def trades_for_order():
              'fee': {'cost': 0.008, 'currency': 'LTC'}}]
 
 
+@pytest.fixture(scope="function")
+def trades_history():
+    return [{'info': {'a': 126181329,
+                      'p': '0.01962700',
+                      'q': '0.04000000',
+                      'f': 138604155,
+                      'l': 138604155,
+                      'T': 1565798399463,
+                      'm': False,
+                      'M': True},
+             'timestamp': 1565798399463,
+             'datetime': '2019-08-14T15:59:59.463Z',
+             'symbol': 'ETH/BTC',
+             'id': '126181329',
+             'order': None,
+             'type': None,
+             'takerOrMaker': None,
+             'side': 'buy',
+             'price': 0.019627,
+             'amount': 0.04,
+             'cost': 0.00078508,
+             'fee': None},
+            {'info': {'a': 126181330,
+                      'p': '0.01962700',
+                      'q': '0.24400000',
+                      'f': 138604156,
+                      'l': 138604156,
+                      'T': 1565798399629,
+                      'm': False,
+                      'M': True},
+             'timestamp': 1565798399629,
+             'datetime': '2019-08-14T15:59:59.629Z',
+             'symbol': 'ETH/BTC',
+             'id': '126181330',
+             'order': None,
+             'type': None,
+             'takerOrMaker': None,
+             'side': 'buy',
+             'price': 0.019627,
+             'amount': 0.244,
+             'cost': 0.004788987999999999,
+             'fee': None},
+            {'info': {'a': 126181331,
+                      'p': '0.01962600',
+                      'q': '0.01100000',
+                      'f': 138604157,
+                      'l': 138604157,
+                      'T': 1565798399752,
+                      'm': True,
+                      'M': True},
+             'timestamp': 1565798399752,
+             'datetime': '2019-08-14T15:59:59.752Z',
+             'symbol': 'ETH/BTC',
+             'id': '126181331',
+             'order': None,
+             'type': None,
+             'takerOrMaker': None,
+             'side': 'sell',
+             'price': 0.019626,
+             'amount': 0.011,
+             'cost': 0.00021588599999999999,
+             'fee': None}]
+
+
 @pytest.fixture(scope="function")
 def trades_for_order2():
     return [{'info': {'id': 34567,
diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index 018cab3b8..a621a5d52 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -1314,6 +1314,54 @@ async def test___async_get_candle_history_sort(default_conf, mocker, exchange_na
     assert ticks[9][5] == 2.31452783
 
 
+@pytest.mark.asyncio
+@pytest.mark.parametrize("exchange_name", EXCHANGES)
+async def test__async_fetch_trades(default_conf, mocker, caplog, exchange_name,
+                                   trades_history):
+
+    caplog.set_level(logging.DEBUG)
+    exchange = get_patched_exchange(mocker, default_conf, id=exchange_name)
+    # Monkey-patch async function
+    exchange._api_async.fetch_trades = get_mock_coro(trades_history)
+
+    pair = 'ETH/BTC'
+    res = await exchange._async_fetch_trades(pair, since=None, params=None)
+    assert type(res) is list
+    assert isinstance(res[0], dict)
+    assert isinstance(res[1], dict)
+
+    assert exchange._api_async.fetch_trades.call_count == 1
+    assert exchange._api_async.fetch_trades.call_args[0][0] == pair
+    assert exchange._api_async.fetch_trades.call_args[1]['limit'] == 1000
+
+    assert log_has_re(f"Fetching trades for pair {pair}, since .*", caplog)
+    caplog.clear()
+    exchange._api_async.fetch_trades.reset_mock()
+    res = await exchange._async_fetch_trades(pair, since=None, params={'from': '123'})
+    assert exchange._api_async.fetch_trades.call_count == 1
+    assert exchange._api_async.fetch_trades.call_args[0][0] == pair
+    assert exchange._api_async.fetch_trades.call_args[1]['limit'] == 1000
+    assert exchange._api_async.fetch_trades.call_args[1]['params'] == {'from': '123'}
+    assert log_has_re(f"Fetching trades for pair {pair}, params: .*", caplog)
+
+    exchange = Exchange(default_conf)
+    await async_ccxt_exception(mocker, default_conf, MagicMock(),
+                               "_async_fetch_trades", "fetch_trades",
+                               pair='ABCD/BTC', since=None)
+
+    api_mock = MagicMock()
+    with pytest.raises(OperationalException, match=r'Could not fetch trade data*'):
+        api_mock.fetch_trades = MagicMock(side_effect=ccxt.BaseError("Unknown error"))
+        exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name)
+        await exchange._async_fetch_trades(pair, since=(arrow.utcnow().timestamp - 2000) * 1000)
+
+    with pytest.raises(OperationalException, match=r'Exchange.* does not support fetching '
+                                                   r'historical trade data\..*'):
+        api_mock.fetch_trades = MagicMock(side_effect=ccxt.NotSupported("Not supported"))
+        exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name)
+        await exchange._async_fetch_trades(pair, since=(arrow.utcnow().timestamp - 2000) * 1000)
+
+
 @pytest.mark.parametrize("exchange_name", EXCHANGES)
 def test_cancel_order_dry_run(default_conf, mocker, exchange_name):
     default_conf['dry_run'] = True

From 57bcff19640f54ccc770733aa4ef5fa677d6f6ee Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Fri, 30 Aug 2019 06:51:21 +0200
Subject: [PATCH 0678/3421] Test get_historic_trades

---
 tests/exchange/test_exchange.py | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index a621a5d52..081a36e19 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -1362,6 +1362,30 @@ async def test__async_fetch_trades(default_conf, mocker, caplog, exchange_name,
         await exchange._async_fetch_trades(pair, since=(arrow.utcnow().timestamp - 2000) * 1000)
 
 
+@pytest.mark.parametrize("exchange_name", EXCHANGES)
+def test_get_historic_trades(default_conf, mocker, caplog, exchange_name, trades_history):
+    mocker.patch('freqtrade.exchange.Exchange.exchange_has', return_value=True)
+    exchange = get_patched_exchange(mocker, default_conf, id=exchange_name)
+
+    pair = 'ETH/BTC'
+
+    exchange._async_get_trade_history_id = get_mock_coro((pair, trades_history))
+    exchange._async_get_trade_history_time = get_mock_coro((pair, trades_history))
+    # one_call calculation * 1.8 should do 2 calls
+    since = 5 * 60 * 500 * 1.8
+    print(f"since = {since}")
+    ret = exchange.get_historic_trades(pair, since=trades_history[0]["timestamp"],
+                                       until=trades_history[-1]["timestamp"])
+
+    # Depending on the exchange, one or the other method should be called
+    assert sum([exchange._async_get_trade_history_id.call_count,
+                exchange._async_get_trade_history_time.call_count]) == 1
+
+    assert len(ret) == 2
+    assert ret[0] == pair
+    assert len(ret[1]) == 3
+
+
 @pytest.mark.parametrize("exchange_name", EXCHANGES)
 def test_cancel_order_dry_run(default_conf, mocker, exchange_name):
     default_conf['dry_run'] = True

From b6ac898f8f3c6e3eee4142da45313c629ab49059 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 28 Sep 2019 10:45:16 +0200
Subject: [PATCH 0679/3421] Add test for exception handler

---
 tests/exchange/test_exchange.py | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index 081a36e19..707a815d1 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -1371,9 +1371,6 @@ def test_get_historic_trades(default_conf, mocker, caplog, exchange_name, trades
 
     exchange._async_get_trade_history_id = get_mock_coro((pair, trades_history))
     exchange._async_get_trade_history_time = get_mock_coro((pair, trades_history))
-    # one_call calculation * 1.8 should do 2 calls
-    since = 5 * 60 * 500 * 1.8
-    print(f"since = {since}")
     ret = exchange.get_historic_trades(pair, since=trades_history[0]["timestamp"],
                                        until=trades_history[-1]["timestamp"])
 
@@ -1386,6 +1383,20 @@ def test_get_historic_trades(default_conf, mocker, caplog, exchange_name, trades
     assert len(ret[1]) == 3
 
 
+@pytest.mark.parametrize("exchange_name", EXCHANGES)
+def test_get_historic_trades_notsupported(default_conf, mocker, caplog, exchange_name,
+                                          trades_history):
+    mocker.patch('freqtrade.exchange.Exchange.exchange_has', return_value=False)
+    exchange = get_patched_exchange(mocker, default_conf, id=exchange_name)
+
+    pair = 'ETH/BTC'
+
+    with pytest.raises(OperationalException,
+                       match="This exchange does not suport downloading Trades."):
+        exchange.get_historic_trades(pair, since=trades_history[0]["timestamp"],
+                                     until=trades_history[-1]["timestamp"])
+
+
 @pytest.mark.parametrize("exchange_name", EXCHANGES)
 def test_cancel_order_dry_run(default_conf, mocker, exchange_name):
     default_conf['dry_run'] = True

From fa8c61382b47ffb7531d671ec148057d82fa2a8f Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 28 Sep 2019 10:52:53 +0200
Subject: [PATCH 0680/3421] Remove unneeded exception handlers

---
 freqtrade/exchange/exchange.py | 34 ++++++++++++----------------------
 1 file changed, 12 insertions(+), 22 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 4c09b4e46..27bde9a7d 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -863,29 +863,19 @@ class Exchange:
         if not self.exchange_has("fetchTrades"):
             # TODO: Maybe don't stop the bot ... ?
             raise OperationalException("This exchange does not suport downloading Trades.")
-        try:
-            if self._trades_pagination == 'time':
-                return await self._async_get_trade_history_time(
-                    pair=pair, since=since,
-                    until=until or ccxt.Exchange.milliseconds())
-            elif self._trades_pagination == 'id':
-                return await self._async_get_trade_history_id(
-                    pair=pair, since=since,
-                    until=until or ccxt.Exchange.milliseconds(), from_id=from_id
-                )
-            else:
-                raise OperationalException(f"Exchange {self.name} does use neither time, "
-                                           f"nor id based pagination")
 
-        except ccxt.NotSupported as e:
-            raise OperationalException(
-                f'Exchange {self._api.name} does not support fetching historical trade data.'
-                f'Message: {e}') from e
-        except (ccxt.NetworkError, ccxt.ExchangeError) as e:
-            raise TemporaryError(f'Could not load trade history due to {e.__class__.__name__}. '
-                                 f'Message: {e}') from e
-        except ccxt.BaseError as e:
-            raise OperationalException(f'Could not fetch trade data. Msg: {e}') from e
+        if self._trades_pagination == 'time':
+            return await self._async_get_trade_history_time(
+                pair=pair, since=since,
+                until=until or ccxt.Exchange.milliseconds())
+        elif self._trades_pagination == 'id':
+            return await self._async_get_trade_history_id(
+                pair=pair, since=since,
+                until=until or ccxt.Exchange.milliseconds(), from_id=from_id
+            )
+        else:
+            raise OperationalException(f"Exchange {self.name} does use neither time, "
+                                       f"nor id based pagination")
 
     def get_historic_trades(self, pair: str,
                             since: Optional[int] = None,

From 640d58eb1350c0e7b63cecb3d54341f48e4cea6c Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 28 Sep 2019 10:56:43 +0200
Subject: [PATCH 0681/3421] Remove unneeded checks

---
 freqtrade/exchange/exchange.py | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 27bde9a7d..6b30af43f 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -785,15 +785,13 @@ class Exchange:
                                           from_id: Optional[str] = None) -> Tuple[str, List[Dict]]:
         """
         Asyncronously gets trade history using fetch_trades
-        use this when exchange uses id-based iteration
+        use this when exchange uses id-based iteration (check `self._trades_pagination`)
         :param pair: Pair to fetch trade data for
         :param since: Since as integer timestamp in milliseconds
         :param until: Until as integer timestamp in milliseconds
         :param from_id: Download data starting with ID (if id is known). Ignores "since" if set.
         returns tuple: (pair, ticker_interval, ohlcv_list)
         """
-        if self._trades_pagination == 'time':
-            raise OperationalException(f"Wrong method called to get trades for {self.name}")
 
         trades: List[Dict] = []
 
@@ -828,14 +826,12 @@ class Exchange:
                                             since: Optional[int] = None) -> Tuple[str, List]:
         """
         Asyncronously gets trade history using fetch_trades,
-        when the exchange uses time-based iteration
+        when the exchange uses time-based iteration (check `self._trades_pagination`)
         :param pair: Pair to fetch trade data for
         :param since: Since as integer timestamp in milliseconds
         :param until: Until as integer timestamp in milliseconds
         returns tuple: (pair, ticker_interval, ohlcv_list)
         """
-        if self._trades_pagination != 'time':
-            raise OperationalException(f"Wrong method called to get trades for {self.name}")
 
         trades: List[Dict] = []
         while True:

From 4fdec9d6e587bb5afdefd5adea397ebbf3062f23 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 28 Sep 2019 11:17:02 +0200
Subject: [PATCH 0682/3421] Test id-based pagination

---
 tests/exchange/test_exchange.py | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index 707a815d1..859d814bc 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -1362,6 +1362,31 @@ async def test__async_fetch_trades(default_conf, mocker, caplog, exchange_name,
         await exchange._async_fetch_trades(pair, since=(arrow.utcnow().timestamp - 2000) * 1000)
 
 
+@pytest.mark.asyncio
+@pytest.mark.parametrize("exchange_name", EXCHANGES)
+async def test__async_get_trade_history_id(default_conf, mocker, caplog, exchange_name,
+                                           trades_history):
+
+    exchange = get_patched_exchange(mocker, default_conf, id=exchange_name)
+    # Monkey-patch async function
+    exchange._async_fetch_trades = get_mock_coro(trades_history)
+    pair = 'ETH/BTC'
+    ret = await exchange._async_get_trade_history_id(pair, since=trades_history[0]["timestamp"],
+                                                     until=None)
+    assert type(ret) is tuple
+    assert ret[0] == pair
+    assert type(ret[1]) is list
+    assert exchange._async_fetch_trades.call_count == 2
+    # first call (using since, not fromId)
+    assert exchange._async_fetch_trades.call_args_list[0][0][0] == pair
+    assert exchange._async_fetch_trades.call_args_list[0][1]['since'] == trades_history[0]["timestamp"]
+
+    # 2nd call
+    assert exchange._async_fetch_trades.call_args_list[1][0][0] == pair
+    assert 'params' in exchange._async_fetch_trades.call_args_list[1][1]
+    assert exchange._ft_has['trades_pagination_arg'] in exchange._async_fetch_trades.call_args_list[1][1]['params']
+
+
 @pytest.mark.parametrize("exchange_name", EXCHANGES)
 def test_get_historic_trades(default_conf, mocker, caplog, exchange_name, trades_history):
     mocker.patch('freqtrade.exchange.Exchange.exchange_has', return_value=True)

From 9f8a2acf4604cab29df1c532b251f4b51e61ef9d Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 8 Oct 2019 20:16:02 +0200
Subject: [PATCH 0683/3421] Extend test-cases to 5 trades

---
 tests/conftest.py | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/tests/conftest.py b/tests/conftest.py
index cd0c29efc..36005b961 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -989,6 +989,46 @@ def trades_history():
              'price': 0.019626,
              'amount': 0.011,
              'cost': 0.00021588599999999999,
+             'fee': None},
+            {'info': {'a': 126181332,
+                      'p': '0.01962600',
+                      'q': '0.01100000',
+                      'f': 138604158,
+                      'l': 138604158,
+                      'T': 1565798399862,
+                      'm': True,
+                      'M': True},
+             'timestamp': 1565798399862,
+             'datetime': '2019-08-14T15:59:59.862Z',
+             'symbol': 'ETH/BTC',
+             'id': '126181332',
+             'order': None,
+             'type': None,
+             'takerOrMaker': None,
+             'side': 'sell',
+             'price': 0.019626,
+             'amount': 0.011,
+             'cost': 0.00021588599999999999,
+             'fee': None},
+            {'info': {'a': 126181333,
+                      'p': '0.01952600',
+                      'q': '0.01200000',
+                      'f': 138604158,
+                      'l': 138604158,
+                      'T': 1565798399872,
+                      'm': True,
+                      'M': True},
+             'timestamp': 1565798399872,
+             'datetime': '2019-08-14T15:59:59.872Z',
+             'symbol': 'ETH/BTC',
+             'id': '126181333',
+             'order': None,
+             'type': None,
+             'takerOrMaker': None,
+             'side': 'sell',
+             'price': 0.019626,
+             'amount': 0.011,
+             'cost': 0.00021588599999999999,
              'fee': None}]
 
 

From 762ae3a598d558df8e9775c8bc9fc0ee1043dbef Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sat, 28 Sep 2019 13:35:25 +0200
Subject: [PATCH 0684/3421] Extend tests

---
 freqtrade/exchange/exchange.py  |   3 +-
 tests/exchange/test_exchange.py | 100 +++++++++++++++++++++++++++++---
 2 files changed, 93 insertions(+), 10 deletions(-)

diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
index 6b30af43f..fed903a4a 100644
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -813,7 +813,8 @@ class Exchange:
                 if from_id == t[-1]['id'] or t[-1]['timestamp'] > until:
                     logger.debug(f"Stopping because from_id did not change. "
                                  f"Reached {t[-1]['timestamp']} > {until}")
-                    # Reached the end of the defined-download period
+                    # Reached the end of the defined-download period - add last trade as well.
+                    trades.extend(t[-1:])
                     break
 
                 from_id = t[-1]['id']
diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
index 859d814bc..e0f49e5fa 100644
--- a/tests/exchange/test_exchange.py
+++ b/tests/exchange/test_exchange.py
@@ -1368,23 +1368,105 @@ async def test__async_get_trade_history_id(default_conf, mocker, caplog, exchang
                                            trades_history):
 
     exchange = get_patched_exchange(mocker, default_conf, id=exchange_name)
+    pagination_arg = exchange._trades_pagination_arg
+
+    async def mock_get_trade_hist(pair, *args, **kwargs):
+        if 'since' in kwargs:
+            # Return first 3
+            return trades_history[:-2]
+        elif kwargs.get('params', {}).get(pagination_arg) == trades_history[-3]['id']:
+            # Return 2
+            return trades_history[-3:-1]
+        else:
+            # Return last 2
+            return trades_history[-2:]
     # Monkey-patch async function
-    exchange._async_fetch_trades = get_mock_coro(trades_history)
+    exchange._async_fetch_trades = MagicMock(side_effect=mock_get_trade_hist)
+
     pair = 'ETH/BTC'
     ret = await exchange._async_get_trade_history_id(pair, since=trades_history[0]["timestamp"],
-                                                     until=None)
+                                                     until=trades_history[-1]["timestamp"]-1)
     assert type(ret) is tuple
     assert ret[0] == pair
     assert type(ret[1]) is list
-    assert exchange._async_fetch_trades.call_count == 2
+    assert len(ret[1]) == len(trades_history)
+    assert exchange._async_fetch_trades.call_count == 3
+    fetch_trades_cal = exchange._async_fetch_trades.call_args_list
     # first call (using since, not fromId)
-    assert exchange._async_fetch_trades.call_args_list[0][0][0] == pair
-    assert exchange._async_fetch_trades.call_args_list[0][1]['since'] == trades_history[0]["timestamp"]
+    assert fetch_trades_cal[0][0][0] == pair
+    assert fetch_trades_cal[0][1]['since'] == trades_history[0]["timestamp"]
 
     # 2nd call
-    assert exchange._async_fetch_trades.call_args_list[1][0][0] == pair
-    assert 'params' in exchange._async_fetch_trades.call_args_list[1][1]
-    assert exchange._ft_has['trades_pagination_arg'] in exchange._async_fetch_trades.call_args_list[1][1]['params']
+    assert fetch_trades_cal[1][0][0] == pair
+    assert 'params' in fetch_trades_cal[1][1]
+    assert exchange._ft_has['trades_pagination_arg'] in fetch_trades_cal[1][1]['params']
+
+
+@pytest.mark.asyncio
+@pytest.mark.parametrize("exchange_name", EXCHANGES)
+async def test__async_get_trade_history_time(default_conf, mocker, caplog, exchange_name,
+                                             trades_history):
+
+    caplog.set_level(logging.DEBUG)
+
+    async def mock_get_trade_hist(pair, *args, **kwargs):
+        if kwargs['since'] == trades_history[0]["timestamp"]:
+            return trades_history[:-1]
+        else:
+            return trades_history[-1:]
+
+    caplog.set_level(logging.DEBUG)
+    exchange = get_patched_exchange(mocker, default_conf, id=exchange_name)
+    # Monkey-patch async function
+    exchange._async_fetch_trades = MagicMock(side_effect=mock_get_trade_hist)
+    pair = 'ETH/BTC'
+    ret = await exchange._async_get_trade_history_time(pair, since=trades_history[0]["timestamp"],
+                                                       until=trades_history[-1]["timestamp"]-1)
+    assert type(ret) is tuple
+    assert ret[0] == pair
+    assert type(ret[1]) is list
+    assert len(ret[1]) == len(trades_history)
+    assert exchange._async_fetch_trades.call_count == 2
+    fetch_trades_cal = exchange._async_fetch_trades.call_args_list
+    # first call (using since, not fromId)
+    assert fetch_trades_cal[0][0][0] == pair
+    assert fetch_trades_cal[0][1]['since'] == trades_history[0]["timestamp"]
+
+    # 2nd call
+    assert fetch_trades_cal[1][0][0] == pair
+    assert fetch_trades_cal[0][1]['since'] == trades_history[0]["timestamp"]
+    assert log_has_re(r"Stopping because until was reached.*", caplog)
+
+
+@pytest.mark.asyncio
+@pytest.mark.parametrize("exchange_name", EXCHANGES)
+async def test__async_get_trade_history_time_empty(default_conf, mocker, caplog, exchange_name,
+                                                   trades_history):
+
+    caplog.set_level(logging.DEBUG)
+
+    async def mock_get_trade_hist(pair, *args, **kwargs):
+        if kwargs['since'] == trades_history[0]["timestamp"]:
+            return trades_history[:-1]
+        else:
+            return []
+
+    caplog.set_level(logging.DEBUG)
+    exchange = get_patched_exchange(mocker, default_conf, id=exchange_name)
+    # Monkey-patch async function
+    exchange._async_fetch_trades = MagicMock(side_effect=mock_get_trade_hist)
+    pair = 'ETH/BTC'
+    ret = await exchange._async_get_trade_history_time(pair, since=trades_history[0]["timestamp"],
+                                                       until=trades_history[-1]["timestamp"]-1)
+    assert type(ret) is tuple
+    assert ret[0] == pair
+    assert type(ret[1]) is list
+    assert len(ret[1]) == len(trades_history) - 1
+    assert exchange._async_fetch_trades.call_count == 2
+    fetch_trades_cal = exchange._async_fetch_trades.call_args_list
+    # first call (using since, not fromId)
+    assert fetch_trades_cal[0][0][0] == pair
+    assert fetch_trades_cal[0][1]['since'] == trades_history[0]["timestamp"]
 
 
 @pytest.mark.parametrize("exchange_name", EXCHANGES)
@@ -1405,7 +1487,7 @@ def test_get_historic_trades(default_conf, mocker, caplog, exchange_name, trades
 
     assert len(ret) == 2
     assert ret[0] == pair
-    assert len(ret[1]) == 3
+    assert len(ret[1]) == len(trades_history)
 
 
 @pytest.mark.parametrize("exchange_name", EXCHANGES)

From 37925e7f6cb8f1ceeccdfe23d286f9c1cbde1931 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 8 Oct 2019 20:31:01 +0200
Subject: [PATCH 0685/3421] Add --dl-trades cli flag

---
 config_kraken.json.example               |  3 ++-
 freqtrade/configuration/arguments.py     |  3 ++-
 freqtrade/configuration/cli_options.py   |  5 +++++
 freqtrade/configuration/configuration.py |  2 ++
 freqtrade/utils.py                       | 11 +++++------
 5 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/config_kraken.json.example b/config_kraken.json.example
index 51aa9a8e9..5a36941d8 100644
--- a/config_kraken.json.example
+++ b/config_kraken.json.example
@@ -70,5 +70,6 @@
     "forcebuy_enable": false,
     "internals": {
         "process_throttle_secs": 5
-    }
+    },
+    "download_trades": true
 }
diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py
index 76a2b1cc9..e63249577 100644
--- a/freqtrade/configuration/arguments.py
+++ b/freqtrade/configuration/arguments.py
@@ -35,7 +35,8 @@ ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"]
 
 ARGS_CREATE_USERDIR = ["user_data_dir"]
 
-ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "exchange", "timeframes", "erase"]
+ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange",
+                      "timeframes", "erase"]
 
 ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url",
                        "trade_source", "export", "exportfilename", "timerange", "ticker_interval"]
diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py
index 7e6a956ce..9868ab874 100644
--- a/freqtrade/configuration/cli_options.py
+++ b/freqtrade/configuration/cli_options.py
@@ -273,6 +273,11 @@ AVAILABLE_CLI_OPTIONS = {
         type=check_int_positive,
         metavar='INT',
     ),
+    "download_trades": Arg(
+        '--dl-trades',
+        help='Download trades instead of OHLCV data.',
+        action='store_true',
+    ),
     "exchange": Arg(
         '--exchange',
         help=f'Exchange name (default: `{constants.DEFAULT_EXCHANGE}`). '
diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py
index 665999efb..ec47f7855 100644
--- a/freqtrade/configuration/configuration.py
+++ b/freqtrade/configuration/configuration.py
@@ -312,6 +312,8 @@ class Configuration:
 
         self._args_to_config(config, argname='days',
                              logstring='Detected --days: {}')
+        self._args_to_config(config, argname='download_trades',
+                             logstring='Detected --dl-trades: {}')
 
     def _process_runmode(self, config: Dict[str, Any]) -> None:
 
diff --git a/freqtrade/utils.py b/freqtrade/utils.py
index adcb3f6e0..48734883c 100644
--- a/freqtrade/utils.py
+++ b/freqtrade/utils.py
@@ -90,12 +90,7 @@ def start_download_data(args: Dict[str, Any]) -> None:
         # Init exchange
         exchange = ExchangeResolver(config['exchange']['name'], config).exchange
 
-        # TODO Add correct switch here!
-        if 1 == 2:
-            pairs_not_available = refresh_backtest_ohlcv_data(
-                exchange, pairs=config["pairs"], timeframes=config["timeframes"],
-                dl_path=Path(config['datadir']), timerange=timerange, erase=config.get("erase"))
-        else:
+        if config.get('download_trades'):
             pairs_not_available = refresh_backtest_trades_data(
                 exchange, pairs=config["pairs"], datadir=Path(config['datadir']),
                 timerange=timerange, erase=config.get("erase"))
@@ -104,6 +99,10 @@ def start_download_data(args: Dict[str, Any]) -> None:
             convert_trades_to_ohlcv(
                 exchange, pairs=config["pairs"], timeframes=config["timeframes"],
                 datadir=Path(config['datadir']), timerange=timerange, erase=config.get("erase"))
+        else:
+            pairs_not_available = refresh_backtest_ohlcv_data(
+                exchange, pairs=config["pairs"], timeframes=config["timeframes"],
+                dl_path=Path(config['datadir']), timerange=timerange, erase=config.get("erase"))
 
     except KeyboardInterrupt:
         sys.exit("SIGINT received, aborting ...")

From 1b7a09c18423670861ee0879ccce61f8fd7d31f5 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 8 Oct 2019 20:31:14 +0200
Subject: [PATCH 0686/3421] Add test for utils --dl-trades

---
 tests/test_utils.py | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/tests/test_utils.py b/tests/test_utils.py
index 55672c4c9..586a6891b 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -260,3 +260,25 @@ def test_download_data_no_pairs(mocker, caplog):
     with pytest.raises(OperationalException,
                        match=r"Downloading data requires a list of pairs\..*"):
         start_download_data(pargs)
+
+
+def test_download_data_trades(mocker, caplog):
+    dl_mock = mocker.patch('freqtrade.utils.refresh_backtest_trades_data',
+                           MagicMock(return_value=[]))
+    convert_mock = mocker.patch('freqtrade.utils.convert_trades_to_ohlcv',
+                                MagicMock(return_value=[]))
+    patch_exchange(mocker)
+    mocker.patch(
+        'freqtrade.exchange.Exchange.markets', PropertyMock(return_value={})
+    )
+    args = [
+        "download-data",
+        "--exchange", "kraken",
+        "--pairs", "ETH/BTC", "XRP/BTC",
+        "--days", "20",
+        "--dl-trades"
+    ]
+    start_download_data(get_args(args))
+    assert dl_mock.call_args[1]['timerange'].starttype == "date"
+    assert dl_mock.call_count == 1
+    assert convert_mock.call_count == 1

From 2374cda8d0a987d0ca60e87a44d38db6b12b35fb Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 8 Oct 2019 20:45:35 +0200
Subject: [PATCH 0687/3421] Cleanup and tests for refresh_backtest_trades

---
 freqtrade/data/history.py  | 11 ++++-------
 tests/data/test_history.py | 26 +++++++++++++++++++++++++-
 2 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py
index 0049f0db5..a32a1b9aa 100644
--- a/freqtrade/data/history.py
+++ b/freqtrade/data/history.py
@@ -82,7 +82,7 @@ def store_tickerdata_file(datadir: Path, pair: str,
     misc.file_dump_json(filename, data, is_zip=is_zip)
 
 
-def load_trades_file(datadir: Optional[Path], pair: str,
+def load_trades_file(datadir: Path, pair: str,
                      timerange: Optional[TimeRange] = None) -> List[Dict]:
     """
     Load a pair from file, either .json.gz or .json
@@ -97,7 +97,7 @@ def load_trades_file(datadir: Optional[Path], pair: str,
     return tradesdata
 
 
-def store_trades_file(datadir: Optional[Path], pair: str,
+def store_trades_file(datadir: Path, pair: str,
                       data: list, is_zip: bool = True):
     """
     Stores tickerdata to file
@@ -329,17 +329,14 @@ def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes
     return pairs_not_available
 
 
-def download_trades_history(datadir: Optional[Path],
-                            exchange: Optional[Exchange],
+def download_trades_history(datadir: Path,
+                            exchange: Exchange,
                             pair: str,
                             timerange: Optional[TimeRange] = None) -> bool:
     """
     Download trade history from the exchange.
     Appends to previously downloaded trades data.
     """
-    if not exchange:
-        raise OperationalException(
-            "Exchange needs to be initialized to download data")
     try:
 
         since = timerange.startts * 1000 if timerange and timerange.starttype == 'date' else None
diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index 032c1b306..52e37e735 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -18,7 +18,7 @@ from freqtrade.data.history import (download_pair_history,
                                     refresh_backtest_ohlcv_data,
                                     load_tickerdata_file, pair_data_filename,
                                     pair_trades_filename,
-                                    trim_tickerlist)
+                                    trim_tickerlist, refresh_backtest_trades_data)
 from freqtrade.exchange import timeframe_to_minutes
 from freqtrade.misc import file_dump_json
 from freqtrade.strategy.default_strategy import DefaultStrategy
@@ -583,3 +583,27 @@ def test_download_data_no_markets(mocker, default_conf, caplog, testdatadir):
     assert "ETH/BTC" in unav_pairs
     assert "XRP/BTC" in unav_pairs
     assert log_has("Skipping pair ETH/BTC...", caplog)
+
+
+def test_refresh_backtest_trades_data(mocker, default_conf, markets, caplog, testdatadir):
+    dl_mock = mocker.patch('freqtrade.data.history.download_trades_history', MagicMock())
+    mocker.patch(
+        'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)
+    )
+    mocker.patch.object(Path, "exists", MagicMock(return_value=True))
+    mocker.patch.object(Path, "unlink", MagicMock())
+
+    ex = get_patched_exchange(mocker, default_conf)
+    timerange = TimeRange.parse_timerange("20190101-20190102")
+    unavailable_pairs = refresh_backtest_trades_data(exchange=ex,
+                                                     pairs=["ETH/BTC", "XRP/BTC", "XRP/ETH"],
+                                                     datadir=testdatadir,
+                                                     timerange=timerange, erase=True
+                                                     )
+
+    assert dl_mock.call_count == 2
+    assert dl_mock.call_args[1]['timerange'].starttype == 'date'
+
+    assert log_has("Downloading trades for pair ETH/BTC.", caplog)
+    assert unavailable_pairs == ["XRP/ETH"]
+    assert log_has("Skipping pair XRP/ETH...", caplog)

From ccb41d1ef964002f2e3ec103c7ec34d6ebbf008e Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Tue, 8 Oct 2019 21:18:56 +0200
Subject: [PATCH 0688/3421] Add tests for test_download_trades_history

---
 tests/data/test_history.py | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/tests/data/test_history.py b/tests/data/test_history.py
index 52e37e735..ff1434347 100644
--- a/tests/data/test_history.py
+++ b/tests/data/test_history.py
@@ -18,7 +18,7 @@ from freqtrade.data.history import (download_pair_history,
                                     refresh_backtest_ohlcv_data,
                                     load_tickerdata_file, pair_data_filename,
                                     pair_trades_filename,
-                                    trim_tickerlist, refresh_backtest_trades_data)
+                                    trim_tickerlist, refresh_backtest_trades_data, download_trades_history)
 from freqtrade.exchange import timeframe_to_minutes
 from freqtrade.misc import file_dump_json
 from freqtrade.strategy.default_strategy import DefaultStrategy
@@ -607,3 +607,36 @@ def test_refresh_backtest_trades_data(mocker, default_conf, markets, caplog, tes
     assert log_has("Downloading trades for pair ETH/BTC.", caplog)
     assert unavailable_pairs == ["XRP/ETH"]
     assert log_has("Skipping pair XRP/ETH...", caplog)
+
+
+def test_download_trades_history(trades_history, mocker, default_conf, testdatadir, caplog) -> None:
+
+    ght_mock = MagicMock(side_effect=lambda pair, *args, **kwargs: (pair, trades_history))
+    mocker.patch('freqtrade.exchange.Exchange.get_historic_trades',
+                 ght_mock)
+    exchange = get_patched_exchange(mocker, default_conf)
+    file1 = testdatadir / 'ETH_BTC-trades.json.gz'
+
+    _backup_file(file1)
+
+    assert not file1.is_file()
+
+    assert download_trades_history(datadir=testdatadir, exchange=exchange,
+                                   pair='ETH/BTC')
+    assert log_has("New Amount of trades: 5", caplog)
+    assert file1.is_file()
+
+    # clean files freshly downloaded
+    _clean_test_file(file1)
+
+    mocker.patch('freqtrade.exchange.Exchange.get_historic_trades',
+                 MagicMock(side_effect=ValueError))
+
+    assert not download_trades_history(datadir=testdatadir, exchange=exchange,
+                                       pair='ETH/BTC')
+    assert log_has_re('Failed to download historic trades for pair: "ETH/BTC".*', caplog)
+
+
+def convert_trades_to_ohlcv():
+    # TODO: Write this test
+    pass

From 56de81a1f9705c5f551bcd4cf3afd5ba16d4cd19 Mon Sep 17 00:00:00 2001
From: Matthias 
Date: Sun, 13 Oct 2019 15:57:54 +0200
Subject: [PATCH 0689/3421] Add some test data

---
 tests/testdata/XRP_ETH-1m.json        |   1 +
 tests/testdata/XRP_ETH-5m.json        |   1 +
 tests/testdata/XRP_ETH-trades.json.gz | Bin 0 -> 473687 bytes
 3 files changed, 2 insertions(+)
 create mode 100644 tests/testdata/XRP_ETH-1m.json
 create mode 100644 tests/testdata/XRP_ETH-5m.json
 create mode 100644 tests/testdata/XRP_ETH-trades.json.gz

diff --git a/tests/testdata/XRP_ETH-1m.json b/tests/testdata/XRP_ETH-1m.json
new file mode 100644
index 000000000..4ec7c15ab
--- /dev/null
+++ b/tests/testdata/XRP_ETH-1m.json
@@ -0,0 +1 @@
+[[1570752000000,0.00141342,0.00141557,0.00141266,0.00141418,1482.0],[1570752060000,0.00141597,0.00141658,0.00141597,0.00141658,522.0],[1570752120000,0.00141438,0.0014158,0.00141438,0.0014158,163.0],[1570752180000,0.0014158,0.0014158,0.0014158,0.0014158,0.0],[1570752240000,0.00141266,0.00141266,0.00141192,0.00141192,1311.0],[1570752300000,0.00141331,0.00141469,0.00141192,0.00141192,2392.0],[1570752360000,0.00141192,0.00141192,0.00141192,0.00141192,0.0],[1570752420000,0.00141179,0.00141266,0.00141179,0.00141266,221.0],[1570752480000,0.00141266,0.00141266,0.00141266,0.00141266,0.0],[1570752540000,0.00141162,0.00141162,0.00141159,0.00141161,565.0],[1570752600000,0.00141327,0.00141328,0.00141327,0.00141328,33.0],[1570752660000,0.00141226,0.00141226,0.00141222,0.00141222,32.0],[1570752720000,0.00141284,0.00141284,0.00141222,0.00141222,2823.0],[1570752780000,0.00141428,0.00141428,0.00141428,0.00141428,33.0],[1570752840000,0.00141428,0.00141428,0.00141428,0.00141428,0.0],[1570752900000,0.00141458,0.00141728,0.00141458,0.00141728,380.0],[1570752960000,0.00141792,0.00141794,0.00141782,0.00141794,810.0],[1570753020000,0.00141794,0.00141794,0.00141794,0.00141794,0.0],[1570753080000,0.00141794,0.00141794,0.00141794,0.00141794,0.0],[1570753140000,0.00141536,0.00141536,0.00141478,0.00141478,53.0],[1570753200000,0.00141478,0.00141478,0.00141478,0.00141478,42.0],[1570753260000,0.00141478,0.00141478,0.00141478,0.00141478,0.0],[1570753320000,0.00141665,0.00141683,0.00141661,0.00141662,1126.0],[1570753380000,0.00141733,0.00141733,0.00141565,0.00141675,471.0],[1570753440000,0.00141565,0.00141565,0.00141536,0.00141536,121.0],[1570753500000,0.00141458,0.00141458,0.00141329,0.00141436,56.0],[1570753560000,0.00141433,0.00141433,0.00141312,0.00141312,40.0],[1570753620000,0.00141312,0.00141312,0.00141312,0.00141312,23.0],[1570753680000,0.00141495,0.00141495,0.00141495,0.00141495,22.0],[1570753740000,0.00141485,0.00141612,0.00141485,0.00141612,78.0],[1570753800000,0.00141542,0.00141668,0.00141542,0.00141602,170.0],[1570753860000,0.00141602,0.00141602,0.00141597,0.00141597,293.0],[1570753920000,0.00141733,0.00141746,0.00141733,0.00141746,163.0],[1570753980000,0.00141746,0.00141746,0.00141746,0.00141746,0.0],[1570754040000,0.00141798,0.00141815,0.00141647,0.00141647,123.0],[1570754100000,0.00141817,0.00141817,0.00141817,0.00141817,141.0],[1570754160000,0.00141651,0.00141886,0.0014158,0.00141884,38071.0],[1570754220000,0.00141847,0.00141951,0.00141847,0.00141951,102.0],[1570754280000,0.00141954,0.00141954,0.00141849,0.00141849,1319.0],[1570754340000,0.0014185,0.00141916,0.00141844,0.00141844,3385.0],[1570754400000,0.00141883,0.00141883,0.00141753,0.00141753,420.0],[1570754460000,0.00141909,0.00141909,0.00141907,0.00141907,932.0],[1570754520000,0.00141965,0.00141965,0.00141965,0.00141965,22.0],[1570754580000,0.00141965,0.00141965,0.00141873,0.00141873,1100.0],[1570754640000,0.00141873,0.00141873,0.00141873,0.00141873,0.0],[1570754700000,0.00141792,0.00141792,0.00141792,0.00141792,77.0],[1570754760000,0.00141783,0.00141783,0.00141715,0.00141715,28.0],[1570754820000,0.00141863,0.00141909,0.00141769,0.00141909,1689.0],[1570754880000,0.00141854,0.00141854,0.00141769,0.00141769,208.0],[1570754940000,0.00141741,0.00141741,0.0014161,0.0014161,834.0],[1570755000000,0.0014161,0.0014161,0.0014161,0.0014161,0.0],[1570755060000,0.00141609,0.00141609,0.00141609,0.00141609,983.0],[1570755120000,0.00141511,0.00141511,0.00141511,0.00141511,11.0],[1570755180000,0.00141484,0.00141484,0.00141458,0.00141462,156.0],[1570755240000,0.00141402,0.00141452,0.00141402,0.00141402,192.0],[1570755300000,0.00141402,0.00141402,0.00141402,0.00141402,95.0],[1570755360000,0.00141402,0.00141402,0.00141333,0.00141333,63.0],[1570755420000,0.00141333,0.00141333,0.00141333,0.00141333,53.0],[1570755480000,0.00141333,0.00141333,0.00141333,0.00141333,0.0],[1570755540000,0.00141573,0.00141574,0.00141573,0.00141573,55.0],[1570755600000,0.00141505,0.00141525,0.00141457,0.00141457,2234.0],[1570755660000,0.00141568,0.00141568,0.00141568,0.00141568,68.0],[1570755720000,0.00141458,0.00141458,0.00141458,0.00141458,45.0],[1570755780000,0.00141573,0.00141573,0.00141573,0.00141573,95.0],[1570755840000,0.00141467,0.00141674,0.00141467,0.00141674,372.0],[1570755900000,0.001417,0.001417,0.00141671,0.00141671,35.0],[1570755960000,0.00141794,0.00141794,0.00141794,0.00141794,24.0],[1570756020000,0.00141794,0.00141816,0.00141729,0.00141729,465.0],[1570756080000,0.0014168,0.0014168,0.00141562,0.00141562,614.0],[1570756140000,0.00141562,0.00141562,0.00141562,0.00141562,0.0],[1570756200000,0.0014156,0.0014156,0.00141505,0.00141505,28.0],[1570756260000,0.00141505,0.00141788,0.00141505,0.00141788,143.0],[1570756320000,0.00141739,0.00141804,0.00141632,0.00141632,1634.0],[1570756380000,0.00141599,0.00141836,0.00141599,0.00141655,318.0],[1570756440000,0.00141655,0.00141655,0.00141655,0.00141655,0.0],[1570756500000,0.00141544,0.00141544,0.00141544,0.00141544,112.0],[1570756560000,0.00141582,0.00141582,0.00141504,0.00141504,5325.0],[1570756620000,0.00141466,0.00141466,0.00141459,0.00141459,29.0],[1570756680000,0.00141459,0.00141459,0.00141459,0.00141459,0.0],[1570756740000,0.00141459,0.00141459,0.00141385,0.00141387,565.0],[1570756800000,0.00141389,0.00141389,0.00141389,0.00141389,22.0],[1570756860000,0.00141389,0.00141389,0.00141389,0.00141389,0.0],[1570756920000,0.00141388,0.00141388,0.00141388,0.00141388,24.0],[1570756980000,0.00141388,0.00141388,0.00141388,0.00141388,29.0],[1570757040000,0.00141388,0.00141388,0.00141388,0.00141388,0.0],[1570757100000,0.00141388,0.00141388,0.00141388,0.00141388,0.0],[1570757160000,0.00141468,0.00141472,0.00141441,0.00141441,6912.0],[1570757220000,0.00141383,0.00141638,0.00141383,0.00141448,1086.0],[1570757280000,0.00141448,0.00141448,0.00141448,0.00141448,27.0],[1570757340000,0.00141452,0.00141638,0.00141452,0.00141638,3302.0],[1570757400000,0.00141648,0.00141648,0.00141578,0.00141581,7885.0],[1570757460000,0.00141581,0.00141581,0.00141581,0.00141581,0.0],[1570757520000,0.00141581,0.00141581,0.00141581,0.00141581,0.0],[1570757580000,0.00141692,0.00141692,0.00141692,0.00141692,10.0],[1570757640000,0.00141514,0.00141689,0.00141514,0.00141689,118.0],[1570757700000,0.00141689,0.00141794,0.00141689,0.00141794,1945.0],[1570757760000,0.00141622,0.00141622,0.00141574,0.00141574,54.0],[1570757820000,0.001415,0.001415,0.001415,0.001415,1041.0],[1570757880000,0.001415,0.00141501,0.001415,0.00141501,77.0],[1570757940000,0.00141727,0.00141727,0.00141727,0.00141727,1580.0],[1570758000000,0.00141505,0.00141505,0.00141505,0.00141505,5861.0],[1570758060000,0.00141505,0.00141505,0.00141249,0.00141249,53308.0],[1570758120000,0.00141341,0.00141341,0.00141231,0.00141231,302.0],[1570758180000,0.00141229,0.00141229,0.0014117,0.0014117,28.0],[1570758240000,0.00141233,0.00141401,0.00141233,0.00141233,1784.0],[1570758300000,0.00141164,0.00141176,0.00141164,0.00141176,232.0],[1570758360000,0.00141176,0.00141176,0.00141176,0.00141176,0.0],[1570758420000,0.00141236,0.0014139,0.00141236,0.0014139,35.0],[1570758480000,0.0014139,0.0014139,0.0014139,0.0014139,1588.0],[1570758540000,0.00141313,0.00141409,0.00141313,0.00141319,175.0],[1570758600000,0.00141319,0.00141319,0.00141319,0.00141319,0.0],[1570758660000,0.00141318,0.00141318,0.00141318,0.00141318,1197.0],[1570758720000,0.00141293,0.00141293,0.00141197,0.00141197,2467.0],[1570758780000,0.00141196,0.00141196,0.00141196,0.00141196,32.0],[1570758840000,0.00141193,0.00141193,0.00141193,0.00141193,22.0],[1570758900000,0.00141262,0.00141262,0.00141262,0.00141262,25.0],[1570758960000,0.00141262,0.00141262,0.00141262,0.00141262,22.0],[1570759020000,0.00141262,0.00141262,0.00141262,0.00141262,28.0],[1570759080000,0.00141475,0.00141475,0.00141475,0.00141475,83.0],[1570759140000,0.0014132,0.0014132,0.00141169,0.00141169,1610.0],[1570759200000,0.00141232,0.00141232,0.00141232,0.00141232,28.0],[1570759260000,0.00141254,0.00141475,0.00141254,0.0014139,178.0],[1570759320000,0.00141577,0.00141577,0.00141518,0.00141518,1605.0],[1570759380000,0.00141712,0.00141721,0.00141698,0.00141698,534.0],[1570759440000,0.00141575,0.00141747,0.00141575,0.00141575,97.0],[1570759500000,0.00141717,0.00141717,0.00141717,0.00141717,18.0],[1570759560000,0.00141717,0.00141717,0.00141717,0.00141717,0.0],[1570759620000,0.00141717,0.00141717,0.00141717,0.00141717,0.0],[1570759680000,0.00141642,0.00141642,0.00141642,0.00141642,33.0],[1570759740000,0.0014165,0.0014165,0.0014165,0.0014165,43.0],[1570759800000,0.00141716,0.00141716,0.00141658,0.00141658,53.0],[1570759860000,0.001416,0.001416,0.001416,0.001416,26.0],[1570759920000,0.00141575,0.00141575,0.00141575,0.00141575,54.0],[1570759980000,0.00141575,0.00141575,0.00141575,0.00141575,0.0],[1570760040000,0.00141575,0.00141575,0.00141575,0.00141575,0.0],[1570760100000,0.00141864,0.00141864,0.00141864,0.00141864,399.0],[1570760160000,0.00141864,0.00141864,0.00141762,0.00141762,88.0],[1570760220000,0.00141886,0.00141937,0.00141839,0.00141839,213.0],[1570760280000,0.00141839,0.00141839,0.00141839,0.00141839,0.0],[1570760340000,0.00141839,0.00141839,0.00141839,0.00141839,82.0],[1570760400000,0.00141769,0.00141769,0.00141769,0.00141769,54.0],[1570760460000,0.00141769,0.00141769,0.00141769,0.00141769,0.0],[1570760520000,0.0014183,0.0014183,0.0014183,0.0014183,9.0],[1570760580000,0.00141974,0.00141974,0.00141773,0.00141773,38.0],[1570760640000,0.00141762,0.00141762,0.00141762,0.00141762,116.0],[1570760700000,0.00141762,0.00141762,0.00141762,0.00141762,0.0],[1570760760000,0.00141668,0.00141719,0.00141581,0.00141581,307.0],[1570760820000,0.00141656,0.00141656,0.00141653,0.00141653,54.0],[1570760880000,0.0014171,0.0014171,0.0014171,0.0014171,21.0],[1570760940000,0.0014171,0.0014171,0.0014171,0.0014171,0.0],[1570761000000,0.00141703,0.00141703,0.00141703,0.00141703,28.0],[1570761060000,0.00141703,0.00141703,0.00141703,0.00141703,30.0],[1570761120000,0.00141703,0.00141703,0.00141702,0.00141702,224.0],[1570761180000,0.00141592,0.00141772,0.00141592,0.00141592,76.0],[1570761240000,0.00141772,0.00141772,0.00141709,0.00141709,779.0],[1570761300000,0.00141709,0.00141709,0.00141709,0.00141709,0.0],[1570761360000,0.00141852,0.00141988,0.00141773,0.00141988,31302.0],[1570761420000,0.0014187,0.00141913,0.0014187,0.00141913,62.0],[1570761480000,0.00141913,0.00141913,0.00141913,0.00141913,29.0],[1570761540000,0.00142053,0.00142057,0.00142053,0.00142057,22.0],[1570761600000,0.00141976,0.00142124,0.00141976,0.00142124,330.0],[1570761660000,0.00141924,0.00141924,0.00141924,0.00141924,263.0],[1570761720000,0.00141953,0.00141953,0.00141953,0.00141953,30.0],[1570761780000,0.00141953,0.00141953,0.00141953,0.00141953,46.0],[1570761840000,0.00141953,0.00141982,0.00141953,0.00141982,285.0],[1570761900000,0.00141982,0.00141982,0.00141803,0.00141803,999.0],[1570761960000,0.00141802,0.00141803,0.00141802,0.00141803,586.0],[1570762020000,0.00141803,0.00141803,0.00141803,0.00141803,0.0],[1570762080000,0.00141841,0.00141841,0.00141841,0.00141841,24.0],[1570762140000,0.00141852,0.00141852,0.00141852,0.00141852,28.0],[1570762200000,0.00141852,0.00142003,0.00141852,0.00142003,390.0],[1570762260000,0.00142003,0.00142003,0.00141897,0.00141897,22636.0],[1570762320000,0.00141971,0.00141971,0.0014188,0.0014188,30.0],[1570762380000,0.00141897,0.00141897,0.0014188,0.0014188,2130.0],[1570762440000,0.0014188,0.0014188,0.0014188,0.0014188,22.0],[1570762500000,0.0014188,0.0014188,0.0014188,0.0014188,0.0],[1570762560000,0.0014188,0.0014188,0.0014188,0.0014188,24.0],[1570762620000,0.0014188,0.0014188,0.0014188,0.0014188,28.0],[1570762680000,0.00141991,0.00141991,0.00141991,0.00141991,19.0],[1570762740000,0.00142032,0.00142032,0.00141937,0.00141937,5230.0],[1570762800000,0.00142067,0.00142162,0.00142067,0.00142162,2720.0],[1570762860000,0.00142024,0.00142024,0.00142024,0.00142024,51.0],[1570762920000,0.00142154,0.00142154,0.00142024,0.00142024,317.0],[1570762980000,0.00142192,0.00142192,0.00142029,0.00142029,106.0],[1570763040000,0.00142029,0.00142029,0.00142029,0.00142029,0.0],[1570763100000,0.00142029,0.00142029,0.00142018,0.00142018,203.0],[1570763160000,0.0014188,0.0014188,0.0014187,0.0014187,27.0],[1570763220000,0.00141875,0.00141875,0.00141852,0.00141852,1716.0],[1570763280000,0.00141723,0.00141723,0.00141723,0.00141723,75.0],[1570763340000,0.00141723,0.00141723,0.00141723,0.00141723,23.0],[1570763400000,0.00141723,0.00141818,0.00141723,0.00141818,14592.0],[1570763460000,0.00141818,0.00141818,0.00141748,0.00141748,8854.0],[1570763520000,0.00141723,0.00141723,0.00141709,0.00141709,2196.0],[1570763580000,0.00141709,0.00141709,0.00141709,0.00141709,0.0],[1570763640000,0.00141709,0.00141874,0.00141597,0.00141597,23831.0],[1570763700000,0.00141732,0.00141732,0.0014162,0.0014162,4072.0],[1570763760000,0.00141597,0.00141597,0.00141597,0.00141597,77.0],[1570763820000,0.00141598,0.00141598,0.00141598,0.00141598,24.0],[1570763880000,0.00141597,0.00141597,0.00141597,0.00141597,25.0],[1570763940000,0.00141597,0.00141597,0.00141597,0.00141597,21.0],[1570764000000,0.00141597,0.00141597,0.00141597,0.00141597,29.0],[1570764060000,0.00141597,0.00141597,0.00141597,0.00141597,0.0],[1570764120000,0.00141592,0.00141592,0.00141592,0.00141592,24.0],[1570764180000,0.00141783,0.00141783,0.00141575,0.00141575,15072.0],[1570764240000,0.00141575,0.00141575,0.0014138,0.0014138,7353.0],[1570764300000,0.0014138,0.0014138,0.00141274,0.00141274,5631.0],[1570764360000,0.00141271,0.00141271,0.00141251,0.00141251,4436.0],[1570764420000,0.00141251,0.00141251,0.00141251,0.00141251,1076.0],[1570764480000,0.00141251,0.00141251,0.00141251,0.00141251,0.0],[1570764540000,0.00141251,0.00141251,0.00141251,0.00141251,0.0],[1570764600000,0.00141251,0.00141251,0.00141221,0.00141221,34976.0],[1570764660000,0.00141221,0.00141221,0.00141087,0.00141087,2306.0],[1570764720000,0.00141087,0.00141205,0.00141,0.0014112,8658.0],[1570764780000,0.00141054,0.00141057,0.00141054,0.00141057,106.0],[1570764840000,0.00141111,0.00141207,0.00141111,0.00141207,31.0],[1570764900000,0.00141182,0.00141298,0.00141182,0.00141298,53.0],[1570764960000,0.00141407,0.00141407,0.00141311,0.00141311,1430.0],[1570765020000,0.00141311,0.00141311,0.00141311,0.00141311,0.0],[1570765080000,0.00141311,0.00141311,0.00141311,0.00141311,0.0],[1570765140000,0.00141242,0.00141407,0.00141242,0.00141407,290.0],[1570765200000,0.00141407,0.00141407,0.00141407,0.00141407,0.0],[1570765260000,0.00141301,0.00141403,0.00141301,0.00141301,1846.0],[1570765320000,0.00141301,0.00141301,0.00141252,0.00141252,14274.0],[1570765380000,0.00141252,0.00141252,0.00141252,0.00141252,1104.0],[1570765440000,0.00141114,0.00141114,0.00141114,0.00141114,55.0],[1570765500000,0.00141114,0.00141114,0.00141114,0.00141114,0.0],[1570765560000,0.00141164,0.00141216,0.00141164,0.00141216,60.0],[1570765620000,0.00141216,0.00141216,0.00141216,0.00141216,0.0],[1570765680000,0.00141285,0.00141285,0.00141285,0.00141285,25.0],[1570765740000,0.00141456,0.00141456,0.00141456,0.00141456,19.0],[1570765800000,0.00141056,0.00141056,0.00141055,0.00141055,75.0],[1570765860000,0.00141116,0.00141116,0.00141116,0.00141116,26.0],[1570765920000,0.00141151,0.00141151,0.00141151,0.00141151,21.0],[1570765980000,0.00141151,0.00141151,0.00141151,0.00141151,0.0],[1570766040000,0.00141115,0.00141115,0.00141,0.00141,1173.0],[1570766100000,0.00141,0.00141,0.00140884,0.00140898,10829.0],[1570766160000,0.00140898,0.00140898,0.00140867,0.00140893,55.0],[1570766220000,0.00140893,0.00140893,0.00140722,0.00140736,2738.0],[1570766280000,0.00140893,0.00141151,0.00140893,0.00141151,208.0],[1570766340000,0.0014098,0.0014098,0.00140779,0.00140779,149.0],[1570766400000,0.00140779,0.00140779,0.00140779,0.00140779,0.0],[1570766460000,0.00140721,0.00140721,0.00140721,0.00140721,58.0],[1570766520000,0.00140721,0.00140721,0.00140721,0.00140721,0.0],[1570766580000,0.00140975,0.00141146,0.00140876,0.00141144,8603.0],[1570766640000,0.00141002,0.00141094,0.00141002,0.00141093,2567.0],[1570766700000,0.00140951,0.00140951,0.00140951,0.00140951,60.0],[1570766760000,0.00140954,0.00140954,0.00140953,0.00140953,610.0],[1570766820000,0.00140954,0.00140954,0.0014082,0.00140921,14383.0],[1570766880000,0.00140789,0.00140789,0.00140787,0.00140787,23.0],[1570766940000,0.00140997,0.00141005,0.00140967,0.00140967,461.0],[1570767000000,0.00140958,0.00140958,0.00140879,0.00140879,1344.0],[1570767060000,0.00141058,0.00141058,0.00141058,0.00141058,1576.0],[1570767120000,0.00140972,0.00141082,0.00140972,0.0014103,1982.0],[1570767180000,0.0014103,0.00141082,0.0014103,0.00141082,1371.0],[1570767240000,0.00141082,0.00141082,0.00141082,0.00141082,10.0],[1570767300000,0.0014105,0.00141146,0.0014105,0.00141146,138.0],[1570767360000,0.00141111,0.00141111,0.00141111,0.00141111,55.0],[1570767420000,0.00141285,0.00141327,0.00141285,0.00141327,2250.0],[1570767480000,0.00141285,0.00141368,0.00141285,0.00141368,202.0],[1570767540000,0.00141368,0.00141368,0.00141368,0.00141368,0.0],[1570767600000,0.00141286,0.00141286,0.00141286,0.00141286,33.0],[1570767660000,0.00141286,0.00141286,0.00141286,0.00141286,0.0],[1570767720000,0.00141286,0.00141324,0.00141285,0.00141324,5727.0],[1570767780000,0.00141109,0.00141109,0.00141077,0.00141077,49.0],[1570767840000,0.00141192,0.00141192,0.00141192,0.00141192,54.0],[1570767900000,0.00141192,0.00141215,0.00141133,0.00141191,522.0],[1570767960000,0.00141191,0.00141253,0.00141191,0.00141253,359.0],[1570768020000,0.00141253,0.00141253,0.00141253,0.00141253,201.0],[1570768080000,0.00141253,0.00141417,0.00141253,0.00141417,2495.0],[1570768140000,0.00141312,0.00141611,0.00141312,0.00141611,5824.0],[1570768200000,0.0014153,0.00141618,0.00141336,0.00141506,46069.0],[1570768260000,0.0014163,0.0014163,0.00141575,0.00141575,1446.0],[1570768320000,0.00141575,0.00141575,0.00141575,0.00141575,0.0],[1570768380000,0.0014167,0.00141734,0.00141575,0.00141734,282.0],[1570768440000,0.00141741,0.00141741,0.00141634,0.00141634,165.0],[1570768500000,0.00141742,0.00141802,0.00141634,0.00141634,2725.0],[1570768560000,0.00141519,0.00141519,0.00141461,0.00141461,289.0],[1570768620000,0.001415,0.001415,0.001415,0.001415,159.0],[1570768680000,0.00141568,0.00141568,0.00141568,0.00141568,2.0],[1570768740000,0.0014139,0.00141568,0.0014139,0.00141568,223.0],[1570768800000,0.00141378,0.001414,0.00141378,0.001414,3049.0],[1570768860000,0.00141352,0.00141352,0.00141249,0.00141249,784.0],[1570768920000,0.00141399,0.00141405,0.0014125,0.0014125,5631.0],[1570768980000,0.00141284,0.00141344,0.00141249,0.00141344,4138.0],[1570769040000,0.00141249,0.00141286,0.00140517,0.00140645,43364.0],[1570769100000,0.00140605,0.00141118,0.00140103,0.00140211,23356.0],[1570769160000,0.00140274,0.00140274,0.00139676,0.0013979,96043.0],[1570769220000,0.00139789,0.00140201,0.00139786,0.00140189,5607.0],[1570769280000,0.00139796,0.00140188,0.00139796,0.00139924,1383.0],[1570769340000,0.00140168,0.00140168,0.00139864,0.00140164,355.0],[1570769400000,0.00139706,0.00140504,0.00139706,0.00140504,2625.0],[1570769460000,0.00140369,0.00140539,0.00140277,0.00140277,24975.0],[1570769520000,0.00140576,0.0014065,0.00140576,0.0014065,48.0],[1570769580000,0.00140422,0.00140422,0.001404,0.001404,3162.0],[1570769640000,0.00140275,0.00140275,0.0014027,0.0014027,790.0],[1570769700000,0.00140485,0.00140485,0.00140214,0.00140349,5092.0],[1570769760000,0.00140289,0.00140289,0.00140188,0.00140188,663.0],[1570769820000,0.00140146,0.00140211,0.00140096,0.00140154,2475.0],[1570769880000,0.00140215,0.00140273,0.00139973,0.00140273,718.0],[1570769940000,0.00140151,0.00140366,0.00140151,0.00140366,791.0],[1570770000000,0.00140341,0.00140382,0.00140246,0.00140382,9366.0],[1570770060000,0.00140058,0.00140173,0.00139704,0.00139826,4902.0],[1570770120000,0.00139705,0.00140041,0.00139696,0.00139873,4889.0],[1570770180000,0.00139873,0.00139873,0.00139873,0.00139873,0.0],[1570770240000,0.00140187,0.00140307,0.00140023,0.00140023,203.0],[1570770300000,0.00140172,0.00140497,0.00140172,0.00140496,2913.0],[1570770360000,0.00140459,0.00140663,0.00140343,0.00140663,7252.0],[1570770420000,0.00140742,0.00140836,0.00140742,0.00140808,1833.0],[1570770480000,0.00140605,0.00140605,0.00140604,0.00140604,278.0],[1570770540000,0.00140738,0.00140924,0.00140617,0.00140777,6301.0],[1570770600000,0.00140924,0.00141111,0.00140924,0.00141111,1452.0],[1570770660000,0.00140987,0.00140987,0.00140987,0.00140987,1587.0],[1570770720000,0.00141125,0.00141403,0.00141125,0.00141264,3463.0],[1570770780000,0.00141403,0.00141403,0.0014086,0.00141026,7137.0],[1570770840000,0.00141351,0.0014145,0.00141351,0.0014145,5000.0],[1570770900000,0.00141457,0.00143647,0.00141406,0.00142997,69704.0],[1570770960000,0.00143684,0.00143901,0.00142832,0.00142974,35675.0],[1570771020000,0.0014296,0.00143445,0.00142942,0.00143106,28135.0],[1570771080000,0.00143109,0.0014322,0.00142851,0.00142851,5822.0],[1570771140000,0.00142963,0.00143375,0.00142729,0.00143069,2136.0],[1570771200000,0.00142834,0.00142834,0.00142834,0.00142834,289.0],[1570771260000,0.00143,0.00143,0.00143,0.00143,289.0],[1570771320000,0.00143164,0.00143282,0.00143164,0.00143282,700.0],[1570771380000,0.00142817,0.00142823,0.00142817,0.00142821,13404.0],[1570771440000,0.001431,0.001431,0.00142825,0.00142825,1221.0],[1570771500000,0.00142821,0.001431,0.00142821,0.001431,122.0],[1570771560000,0.001431,0.00143235,0.001431,0.00143116,4362.0],[1570771620000,0.00143262,0.00143313,0.00143013,0.00143014,8555.0],[1570771680000,0.001429,0.001429,0.00142898,0.00142898,10750.0],[1570771740000,0.00142832,0.00143049,0.00142524,0.00142524,6322.0],[1570771800000,0.00142896,0.00143135,0.00142845,0.0014285,878.0],[1570771860000,0.0014284,0.00142899,0.00142683,0.00142683,3998.0],[1570771920000,0.00142688,0.00143037,0.00142673,0.00142673,100.0],[1570771980000,0.00142693,0.00143069,0.00142693,0.00142754,448.0],[1570772040000,0.00142672,0.00142672,0.00142547,0.00142547,2234.0],[1570772100000,0.00142551,0.00142762,0.00142551,0.001427,1055.0],[1570772160000,0.00142762,0.00142762,0.00142551,0.00142551,17585.0],[1570772220000,0.00142551,0.0014274,0.00142551,0.0014274,2111.0],[1570772280000,0.00142759,0.00142762,0.00142583,0.00142759,5174.0],[1570772340000,0.00142551,0.00142583,0.0014248,0.0014248,2914.0],[1570772400000,0.00142481,0.00142762,0.00142481,0.00142762,1963.0],[1570772460000,0.00142761,0.00142765,0.00142567,0.00142573,5148.0],[1570772520000,0.00142574,0.00142576,0.00142574,0.00142576,103.0],[1570772580000,0.00142559,0.00142559,0.00142323,0.00142323,2388.0],[1570772640000,0.00142323,0.00142323,0.00142323,0.00142323,0.0],[1570772700000,0.00142343,0.00142709,0.00142343,0.00142709,156.0],[1570772760000,0.00142709,0.00142805,0.00142709,0.00142805,181.0],[1570772820000,0.00142805,0.00142865,0.00142625,0.00142865,4008.0],[1570772880000,0.00142865,0.00142865,0.00142865,0.00142865,1000.0],[1570772940000,0.00142635,0.00142635,0.00142635,0.00142635,62.0],[1570773000000,0.00142635,0.00142635,0.00142635,0.00142635,5435.0],[1570773060000,0.00142623,0.00142623,0.00142623,0.00142623,41.0],[1570773120000,0.00142622,0.00142622,0.00142622,0.00142622,140.0],[1570773180000,0.00142446,0.00142446,0.00142446,0.00142446,34.0],[1570773240000,0.00142446,0.00142446,0.00142446,0.00142446,241.0],[1570773300000,0.00142446,0.00142719,0.00142446,0.00142446,4388.0],[1570773360000,0.00142326,0.00142326,0.00142326,0.00142326,1291.0],[1570773420000,0.001424,0.0014242,0.001424,0.0014242,48.0],[1570773480000,0.0014242,0.00142559,0.00142325,0.00142425,657.0],[1570773540000,0.0014243,0.0014243,0.0014243,0.0014243,4982.0],[1570773600000,0.00142319,0.00142352,0.00142194,0.00142352,167.0],[1570773660000,0.00142352,0.00142352,0.00142352,0.00142352,351.0],[1570773720000,0.00142193,0.00142435,0.0014213,0.0014213,1236.0],[1570773780000,0.0014213,0.0014213,0.0014213,0.0014213,0.0],[1570773840000,0.00142481,0.00142483,0.00142172,0.00142483,423.0],[1570773900000,0.00142483,0.00142483,0.00142483,0.00142483,0.0],[1570773960000,0.00142206,0.00142932,0.00142126,0.00142932,41859.0],[1570774020000,0.00142932,0.00143999,0.00142791,0.00143505,28020.0],[1570774080000,0.00143502,0.00143986,0.00143282,0.001439,8987.0],[1570774140000,0.001439,0.00144017,0.001439,0.00144012,19409.0],[1570774200000,0.00143657,0.00143657,0.00143529,0.00143529,1953.0],[1570774260000,0.00143516,0.00143516,0.00143516,0.00143516,1000.0],[1570774320000,0.00143909,0.00143909,0.00143516,0.00143516,1523.0],[1570774380000,0.0014389,0.0014389,0.0014389,0.0014389,2.0],[1570774440000,0.0014388,0.0014388,0.0014388,0.0014388,2.0],[1570774500000,0.00143403,0.00143403,0.00143282,0.00143282,1150.0],[1570774560000,0.00143282,0.00143282,0.00143282,0.00143282,11.0],[1570774620000,0.00143282,0.00143282,0.00143282,0.00143282,0.0],[1570774680000,0.00143204,0.00143386,0.00143135,0.00143386,5269.0],[1570774740000,0.00143135,0.00143135,0.00143135,0.00143135,300.0],[1570774800000,0.00143135,0.00143135,0.00143135,0.00143135,0.0],[1570774860000,0.00143358,0.00143366,0.00143358,0.00143366,1488.0],[1570774920000,0.00143179,0.00143186,0.00143166,0.00143166,2593.0],[1570774980000,0.00143166,0.00143166,0.00143166,0.00143166,0.0],[1570775040000,0.00143122,0.00143122,0.00143116,0.00143116,4826.0],[1570775100000,0.00143049,0.00143331,0.00143049,0.00143331,1159.0],[1570775160000,0.00143086,0.00143086,0.00143086,0.00143086,48.0],[1570775220000,0.00143086,0.00143086,0.00143086,0.00143086,0.0],[1570775280000,0.00143085,0.00143085,0.00142847,0.00142847,1078.0],[1570775340000,0.00142905,0.00142907,0.00142905,0.00142907,130.0],[1570775400000,0.00142922,0.00143234,0.00142922,0.00143234,1057.0],[1570775460000,0.0014302,0.00143236,0.0014302,0.00143236,175.0],[1570775520000,0.00143236,0.00143236,0.00143236,0.00143236,0.0],[1570775580000,0.00143275,0.0014328,0.00143036,0.00143036,336.0],[1570775640000,0.00143479,0.00143479,0.0014347,0.0014347,1245.0],[1570775700000,0.0014347,0.00143551,0.0014347,0.00143551,60625.0],[1570775760000,0.00143344,0.00143723,0.00143344,0.00143723,2225.0],[1570775820000,0.00143386,0.00143708,0.00143352,0.00143376,477.0],[1570775880000,0.00143724,0.00143724,0.00143418,0.00143418,112.0],[1570775940000,0.00143389,0.00143389,0.00143389,0.00143389,110.0],[1570776000000,0.0014339,0.00143607,0.00143126,0.00143607,5678.0],[1570776060000,0.00143248,0.00143248,0.00143245,0.00143245,56.0],[1570776120000,0.00143565,0.00143607,0.00143564,0.00143607,2348.0],[1570776180000,0.00143607,0.00143607,0.00143607,0.00143607,0.0],[1570776240000,0.00143607,0.00143607,0.00143607,0.00143607,0.0],[1570776300000,0.00143646,0.00143646,0.00143135,0.00143135,1096.0],[1570776360000,0.00143135,0.00143135,0.00143135,0.00143135,11.0],[1570776420000,0.00143135,0.00143135,0.00143135,0.00143135,0.0],[1570776480000,0.00142981,0.00142981,0.00142981,0.00142981,106.0],[1570776540000,0.00142981,0.00143215,0.001429,0.00143215,507.0],[1570776600000,0.00143215,0.00143215,0.00143215,0.00143215,0.0],[1570776660000,0.00142894,0.00142894,0.00142826,0.00142826,54.0],[1570776720000,0.00142826,0.00142826,0.00142826,0.00142826,0.0],[1570776780000,0.00142827,0.00142827,0.00142827,0.00142827,1770.0],[1570776840000,0.00142775,0.00142775,0.00142775,0.00142775,76.0],[1570776900000,0.00142775,0.00142775,0.00142775,0.00142775,0.0],[1570776960000,0.00142775,0.00142775,0.00142775,0.00142775,0.0],[1570777020000,0.00142793,0.00142793,0.00142775,0.00142775,39.0],[1570777080000,0.00142775,0.00142775,0.00142672,0.00142672,5000.0],[1570777140000,0.00142672,0.00142672,0.00142672,0.00142672,0.0],[1570777200000,0.00142723,0.00143259,0.00142723,0.00143259,95.0],[1570777260000,0.00143259,0.00143408,0.001432,0.00143408,4518.0],[1570777320000,0.00143408,0.00143408,0.00143408,0.00143408,0.0],[1570777380000,0.00143378,0.00143378,0.00143378,0.00143378,139.0],[1570777440000,0.0014343,0.0014343,0.0014343,0.0014343,74.0],[1570777500000,0.00143193,0.00143193,0.00143193,0.00143193,417.0],[1570777560000,0.00143193,0.00143193,0.00143193,0.00143193,0.0],[1570777620000,0.00143413,0.00143428,0.00143413,0.00143428,6972.0],[1570777680000,0.00143071,0.00143071,0.00143071,0.00143071,1395.0],[1570777740000,0.00143099,0.00143099,0.00143099,0.00143099,87.0],[1570777800000,0.00143099,0.00143099,0.00143099,0.00143099,0.0],[1570777860000,0.00143099,0.00143099,0.00143099,0.00143099,0.0],[1570777920000,0.00143099,0.00143099,0.00143099,0.00143099,0.0],[1570777980000,0.00143099,0.00143099,0.00143099,0.00143099,0.0],[1570778040000,0.00143099,0.00143099,0.00143099,0.00143099,629.0],[1570778100000,0.00142852,0.00142852,0.00142852,0.00142852,113.0],[1570778160000,0.00142852,0.00142852,0.00142852,0.00142852,0.0],[1570778220000,0.00142852,0.00142852,0.00142852,0.00142852,0.0],[1570778280000,0.00142852,0.00142852,0.00142852,0.00142852,0.0],[1570778340000,0.00143101,0.00143101,0.00143101,0.00143101,139.0],[1570778400000,0.00143101,0.00143101,0.00143101,0.00143101,0.0],[1570778460000,0.00143099,0.00143228,0.00143099,0.00143228,1837.0],[1570778520000,0.00143227,0.00143227,0.00143227,0.00143227,1000.0],[1570778580000,0.00143228,0.00143228,0.00143228,0.00143228,1000.0],[1570778640000,0.00143228,0.00143228,0.00143228,0.00143228,0.0],[1570778700000,0.00143228,0.00143228,0.00143228,0.00143228,0.0],[1570778760000,0.00143228,0.00143228,0.00143228,0.00143228,0.0],[1570778820000,0.00143228,0.00143228,0.00143228,0.00143228,0.0],[1570778880000,0.00143228,0.00143228,0.00143228,0.00143228,0.0],[1570778940000,0.00142957,0.00142957,0.00142791,0.00142791,1055.0],[1570779000000,0.00142795,0.00143142,0.00142795,0.00143142,173.0],[1570779060000,0.00142934,0.00142934,0.00142934,0.00142934,278.0],[1570779120000,0.00143085,0.00143138,0.00143085,0.00143138,1002.0],[1570779180000,0.00143141,0.00143141,0.00143141,0.00143141,1000.0],[1570779240000,0.00143141,0.00143141,0.00143141,0.00143141,0.0],[1570779300000,0.00143141,0.00143141,0.00143141,0.00143141,0.0],[1570779360000,0.00143141,0.00143141,0.00143141,0.00143141,0.0],[1570779420000,0.00143141,0.00143141,0.00143141,0.00143141,0.0],[1570779480000,0.00143141,0.00143141,0.00143141,0.00143141,0.0],[1570779540000,0.00143135,0.00143135,0.0014268,0.0014268,802.0],[1570779600000,0.00142681,0.00142681,0.0014268,0.0014268,217.0],[1570779660000,0.00142664,0.00142664,0.0014265,0.0014265,6139.0],[1570779720000,0.0014265,0.0014265,0.0014265,0.0014265,1003.0],[1570779780000,0.0014265,0.0014265,0.0014265,0.0014265,0.0],[1570779840000,0.00142668,0.00142668,0.00142668,0.00142668,582.0],[1570779900000,0.00142626,0.00142626,0.00142483,0.00142484,226.0],[1570779960000,0.00142484,0.00142484,0.00142484,0.00142484,0.0],[1570780020000,0.00142484,0.00142484,0.00142484,0.00142484,0.0],[1570780080000,0.0014248,0.0014248,0.00142468,0.00142468,1559.0],[1570780140000,0.00142468,0.00142468,0.0014241,0.0014241,1063.0],[1570780200000,0.00142405,0.00142441,0.00142348,0.00142441,223.0],[1570780260000,0.00142589,0.0014259,0.00142439,0.00142439,2200.0],[1570780320000,0.0014258,0.0014258,0.0014258,0.0014258,61.0],[1570780380000,0.00142589,0.00142589,0.00142589,0.00142589,71.0],[1570780440000,0.00142589,0.00142589,0.00142589,0.00142589,0.0],[1570780500000,0.00142397,0.00142397,0.00142397,0.00142397,80.0],[1570780560000,0.00142589,0.00142589,0.00142589,0.00142589,69.0],[1570780620000,0.00142591,0.00142731,0.00142591,0.00142731,401.0],[1570780680000,0.00142731,0.00142731,0.00142731,0.00142731,18.0],[1570780740000,0.00142731,0.00142731,0.00142731,0.00142731,0.0],[1570780800000,0.00142451,0.00142451,0.00142445,0.00142445,203.0],[1570780860000,0.00142731,0.00142731,0.00142467,0.00142467,1596.0],[1570780920000,0.0014273,0.00142869,0.00142474,0.00142869,26469.0],[1570780980000,0.00142896,0.00143142,0.00142502,0.00142905,62831.0],[1570781040000,0.00142905,0.00142913,0.00142585,0.00142585,31030.0],[1570781100000,0.00142637,0.00142637,0.00142637,0.00142637,12.0],[1570781160000,0.00142975,0.00143135,0.00142975,0.00143135,796.0],[1570781220000,0.00142729,0.0014273,0.00142729,0.0014273,83.0],[1570781280000,0.00143139,0.00143219,0.00143139,0.00143219,66987.0],[1570781340000,0.00143219,0.00143219,0.00143034,0.00143035,1737.0],[1570781400000,0.00143219,0.00143429,0.00143219,0.00143429,8152.0],[1570781460000,0.00143343,0.00143447,0.00143221,0.0014326,4701.0],[1570781520000,0.00143543,0.00143545,0.00143543,0.00143545,14148.0],[1570781580000,0.00143551,0.00143875,0.00143551,0.00143875,16268.0],[1570781640000,0.00143291,0.00143356,0.00143291,0.00143356,988.0],[1570781700000,0.00143236,0.00143236,0.00143236,0.00143236,256.0],[1570781760000,0.001435,0.001435,0.001435,0.001435,1563.0],[1570781820000,0.001435,0.001435,0.001435,0.001435,0.0],[1570781880000,0.0014322,0.0014322,0.0014322,0.0014322,3185.0],[1570781940000,0.00143219,0.00143452,0.00143219,0.00143452,98.0],[1570782000000,0.00143452,0.00143452,0.00143452,0.00143452,0.0],[1570782060000,0.00143136,0.00143136,0.00143135,0.00143135,1587.0],[1570782120000,0.00143135,0.00143135,0.00143135,0.00143135,0.0],[1570782180000,0.00143135,0.00143135,0.00143135,0.00143135,0.0],[1570782240000,0.00143135,0.00143135,0.00143135,0.00143135,0.0],[1570782300000,0.00142981,0.00142981,0.00142981,0.00142981,136.0],[1570782360000,0.00142981,0.00142981,0.00142981,0.00142981,0.0],[1570782420000,0.00142981,0.00142981,0.00142981,0.00142981,0.0],[1570782480000,0.00142981,0.00142981,0.00142981,0.00142981,0.0],[1570782540000,0.0014334,0.00143466,0.0014334,0.00143466,866.0],[1570782600000,0.00143466,0.00143551,0.00143466,0.00143551,189.0],[1570782660000,0.00143551,0.00143551,0.00143551,0.00143551,13.0],[1570782720000,0.00143299,0.00143299,0.00143299,0.00143299,220.0],[1570782780000,0.00143264,0.00143264,0.00143264,0.00143264,417.0],[1570782840000,0.00143049,0.0014305,0.00143049,0.00143049,799.0],[1570782900000,0.00143052,0.00143415,0.00143052,0.00143415,307.0],[1570782960000,0.00143415,0.00143487,0.00143415,0.00143487,262.0],[1570783020000,0.00143487,0.00143487,0.00143487,0.00143487,0.0],[1570783080000,0.00143607,0.00143738,0.00143411,0.00143411,1097.0],[1570783140000,0.00143411,0.00143411,0.00143411,0.00143411,0.0],[1570783200000,0.00143411,0.00143411,0.00143411,0.00143411,0.0],[1570783260000,0.00143439,0.0014346,0.00143439,0.00143458,3188.0],[1570783320000,0.00143458,0.00143458,0.00143458,0.00143458,0.0],[1570783380000,0.00143712,0.00143716,0.00143712,0.00143716,40.0],[1570783440000,0.00143745,0.00143883,0.00143622,0.00143622,7565.0],[1570783500000,0.00143593,0.00143593,0.00143593,0.00143593,13.0],[1570783560000,0.00143593,0.00143593,0.00143593,0.00143593,0.0],[1570783620000,0.00143595,0.00143598,0.00143595,0.00143598,70.0],[1570783680000,0.00143598,0.00143598,0.00143598,0.00143598,0.0],[1570783740000,0.00143598,0.00143598,0.00143598,0.00143598,0.0],[1570783800000,0.00143598,0.00143598,0.00143598,0.00143598,0.0],[1570783860000,0.001436,0.001436,0.001436,0.001436,13.0],[1570783920000,0.00143656,0.00143656,0.00143656,0.00143656,278.0],[1570783980000,0.0014363,0.00143656,0.0014363,0.00143656,30.0],[1570784040000,0.00143658,0.00143658,0.0014363,0.00143633,2050.0],[1570784100000,0.00143633,0.00143633,0.00143633,0.00143633,13.0],[1570784160000,0.00143633,0.00143633,0.00143633,0.00143633,0.0],[1570784220000,0.00143606,0.00143897,0.00143606,0.00143897,5046.0],[1570784280000,0.00143937,0.00143946,0.00143937,0.00143946,118.0],[1570784340000,0.0014389,0.0014389,0.00143765,0.00143765,45.0],[1570784400000,0.00143765,0.00143765,0.00143765,0.00143765,42.0],[1570784460000,0.00143946,0.00144064,0.00143946,0.00144064,1285.0],[1570784520000,0.00144079,0.00144101,0.00143917,0.00143917,13677.0],[1570784580000,0.00144115,0.00144245,0.00144115,0.00144245,4372.0],[1570784640000,0.00144251,0.00144301,0.00144251,0.00144301,214.0],[1570784700000,0.00144301,0.00144301,0.00144301,0.00144301,0.0],[1570784760000,0.00144085,0.00144085,0.00144016,0.00144016,14.0],[1570784820000,0.00144,0.00144,0.00144,0.00144,50.0],[1570784880000,0.00144,0.00144,0.00144,0.00144,0.0],[1570784940000,0.00144,0.00144,0.00144,0.00144,2538.0],[1570785000000,0.00144302,0.00144315,0.00143892,0.00144315,117.0],[1570785060000,0.00144318,0.00144444,0.00144099,0.00144364,6425.0],[1570785120000,0.00144116,0.00144116,0.00144113,0.00144113,229.0],[1570785180000,0.00144113,0.00144113,0.00144113,0.00144113,0.0],[1570785240000,0.00144113,0.00144113,0.00144113,0.00144113,0.0],[1570785300000,0.00144122,0.00144122,0.00144121,0.00144121,327.0],[1570785360000,0.00144146,0.00144146,0.00144146,0.00144146,147.0],[1570785420000,0.00144397,0.00144397,0.00144397,0.00144397,202.0],[1570785480000,0.00144397,0.00144397,0.00144397,0.00144397,0.0],[1570785540000,0.00144189,0.00144476,0.00144189,0.00144476,121.0],[1570785600000,0.00144485,0.00144489,0.00144324,0.00144324,42.0],[1570785660000,0.00144324,0.00144324,0.00144324,0.00144324,0.0],[1570785720000,0.00144325,0.00144325,0.00144214,0.00144214,76.0],[1570785780000,0.00144214,0.00144214,0.00144214,0.00144214,0.0],[1570785840000,0.00144243,0.00144243,0.00144243,0.00144243,380.0],[1570785900000,0.00144272,0.00144272,0.00144046,0.00144046,721.0],[1570785960000,0.00144046,0.00144046,0.00144046,0.00144046,0.0],[1570786020000,0.00144046,0.00144046,0.00144046,0.00144046,0.0],[1570786080000,0.00144243,0.00144243,0.00144243,0.00144243,10.0],[1570786140000,0.00144243,0.00144243,0.00144243,0.00144243,0.0],[1570786200000,0.00144092,0.00144092,0.00144092,0.00144092,5306.0],[1570786260000,0.00144092,0.00144335,0.00143872,0.00144335,717.0],[1570786320000,0.00143883,0.00143883,0.0014383,0.0014383,44865.0],[1570786380000,0.00144305,0.00144305,0.00144305,0.00144305,2.0],[1570786440000,0.00144305,0.00144305,0.00144305,0.00144305,0.0],[1570786500000,0.00143942,0.00144305,0.00143942,0.00144305,146.0],[1570786560000,0.00144305,0.00144305,0.00144305,0.00144305,0.0],[1570786620000,0.00144011,0.00144398,0.00144011,0.00144027,72.0],[1570786680000,0.00144027,0.00144027,0.00144027,0.00144027,0.0],[1570786740000,0.00144027,0.00144027,0.00144027,0.00144027,0.0],[1570786800000,0.001444,0.00144401,0.001444,0.00144401,911.0],[1570786860000,0.00144154,0.00144499,0.00144154,0.00144499,2438.0],[1570786920000,0.001445,0.00144538,0.001445,0.00144511,387.0],[1570786980000,0.00144285,0.00144285,0.00144285,0.00144285,1347.0],[1570787040000,0.00144239,0.00144309,0.00144239,0.00144309,65.0],[1570787100000,0.00144309,0.00144309,0.00144309,0.00144309,0.0],[1570787160000,0.00144355,0.00144355,0.00144355,0.00144355,826.0],[1570787220000,0.00144289,0.00144289,0.00144289,0.00144289,15.0],[1570787280000,0.001445,0.00144641,0.001445,0.00144641,921.0],[1570787340000,0.00144328,0.00144333,0.00144328,0.00144333,30.0],[1570787400000,0.00144349,0.00144641,0.00144349,0.00144641,48.0],[1570787460000,0.00144641,0.00144666,0.00144444,0.00144666,1296.0],[1570787520000,0.00144687,0.00144693,0.00144687,0.00144693,170.0],[1570787580000,0.00144476,0.00144476,0.00144476,0.00144476,14.0],[1570787640000,0.00144476,0.00144476,0.00144476,0.00144476,0.0],[1570787700000,0.00144532,0.00144532,0.00144451,0.00144451,354.0],[1570787760000,0.00144451,0.00144476,0.00144288,0.00144288,755.0],[1570787820000,0.00144707,0.00144707,0.00144707,0.00144707,4.0],[1570787880000,0.00144707,0.00144753,0.00144707,0.00144753,1539.0],[1570787940000,0.00144748,0.00144748,0.00144748,0.00144748,823.0],[1570788000000,0.00144469,0.00144469,0.00144311,0.00144311,154.0],[1570788060000,0.00144311,0.00144311,0.00144311,0.00144311,0.0],[1570788120000,0.00144344,0.00144733,0.00144344,0.00144356,1107.0],[1570788180000,0.00144603,0.00144734,0.00144603,0.00144734,174.0],[1570788240000,0.00144729,0.00144729,0.00144729,0.00144729,124.0],[1570788300000,0.00144729,0.00144729,0.00144729,0.00144729,0.0],[1570788360000,0.00144729,0.00144729,0.00144729,0.00144729,0.0],[1570788420000,0.00144729,0.00144729,0.00144729,0.00144729,0.0],[1570788480000,0.00144729,0.00144729,0.00144729,0.00144729,0.0],[1570788540000,0.00144305,0.00144305,0.00144305,0.00144305,15.0],[1570788600000,0.00144707,0.00144707,0.00144329,0.00144329,1335.0],[1570788660000,0.00144329,0.00144329,0.00144329,0.00144329,0.0],[1570788720000,0.00144329,0.00144329,0.00144329,0.00144329,0.0],[1570788780000,0.00144351,0.00144707,0.00144351,0.00144706,55.0],[1570788840000,0.00144283,0.00144283,0.00144282,0.00144282,31.0],[1570788900000,0.00144282,0.00144282,0.00144282,0.00144282,42.0],[1570788960000,0.00144282,0.00144282,0.00144282,0.00144282,343.0],[1570789020000,0.00144504,0.00144511,0.00144504,0.00144511,27966.0],[1570789080000,0.00144511,0.00144511,0.00144511,0.00144511,0.0],[1570789140000,0.00144486,0.00144495,0.00144486,0.00144494,3490.0],[1570789200000,0.00144494,0.00144494,0.00144494,0.00144494,0.0],[1570789260000,0.00144177,0.00144177,0.00144177,0.00144177,14.0],[1570789320000,0.00144177,0.00144177,0.00144154,0.00144154,17569.0],[1570789380000,0.00144421,0.00144421,0.00144421,0.00144421,98.0],[1570789440000,0.00144421,0.00144421,0.00144421,0.00144421,0.0],[1570789500000,0.00144122,0.00144127,0.00144122,0.00144127,26.0],[1570789560000,0.001444,0.001444,0.001444,0.001444,3288.0],[1570789620000,0.001444,0.001444,0.00144197,0.0014423,9196.0],[1570789680000,0.00144235,0.00144706,0.00144235,0.00144706,16.0],[1570789740000,0.00144706,0.00144706,0.00144706,0.00144706,0.0],[1570789800000,0.0014455,0.0014455,0.0014455,0.0014455,12584.0],[1570789860000,0.0014455,0.0014455,0.0014455,0.0014455,0.0],[1570789920000,0.00144706,0.00144729,0.00144706,0.00144729,407.0],[1570789980000,0.00144753,0.00144825,0.00144753,0.00144825,6735.0],[1570790040000,0.00144826,0.00144861,0.00144637,0.00144861,381.0],[1570790100000,0.00144636,0.00144636,0.00144636,0.00144636,276.0],[1570790160000,0.00144636,0.00144636,0.00144636,0.00144636,0.0],[1570790220000,0.00144636,0.00144636,0.00144636,0.00144636,0.0],[1570790280000,0.00144788,0.00144861,0.00144589,0.00144861,1525.0],[1570790340000,0.00144597,0.00144597,0.00144597,0.00144597,14.0],[1570790400000,0.00144597,0.00144597,0.00144596,0.00144596,60.0],[1570790460000,0.00144596,0.00144596,0.00144596,0.00144596,0.0],[1570790520000,0.00144596,0.00144596,0.0014458,0.0014458,1366.0],[1570790580000,0.00144786,0.00144786,0.00144786,0.00144786,2.0],[1570790640000,0.00144786,0.00144786,0.00144786,0.00144786,0.0],[1570790700000,0.00144504,0.00144504,0.00144504,0.00144504,35.0],[1570790760000,0.00144546,0.00144546,0.00144546,0.00144546,14.0],[1570790820000,0.00144546,0.00144546,0.00144546,0.00144546,0.0],[1570790880000,0.00144546,0.00144546,0.00144546,0.00144546,0.0],[1570790940000,0.00144546,0.00144546,0.00144546,0.00144546,0.0],[1570791000000,0.00144608,0.00144608,0.00144608,0.00144608,16.0],[1570791060000,0.00144608,0.00144608,0.00144608,0.00144608,0.0],[1570791120000,0.00144608,0.00144608,0.00144513,0.00144515,1265.0],[1570791180000,0.00144516,0.00144516,0.00144516,0.00144516,16.0],[1570791240000,0.00144516,0.00144516,0.00144516,0.00144516,0.0],[1570791300000,0.00144516,0.00144516,0.00144516,0.00144516,0.0],[1570791360000,0.00144508,0.00144508,0.00144508,0.00144508,73.0],[1570791420000,0.00144804,0.00144804,0.00144804,0.00144804,600.0],[1570791480000,0.00144584,0.00144584,0.00144584,0.00144584,16.0],[1570791540000,0.00144597,0.00144597,0.00144597,0.00144597,15.0],[1570791600000,0.00144597,0.00144597,0.00144597,0.00144597,0.0],[1570791660000,0.00144597,0.00144597,0.00144597,0.00144597,0.0],[1570791720000,0.00144605,0.00144605,0.00144584,0.00144584,3710.0],[1570791780000,0.00144736,0.00144873,0.00144586,0.00144873,6551.0],[1570791840000,0.00144828,0.00144828,0.00144828,0.00144828,3508.0],[1570791900000,0.00144638,0.00144641,0.00144638,0.00144641,1421.0],[1570791960000,0.00144894,0.00144894,0.00144643,0.00144643,712.0],[1570792020000,0.00144643,0.00144643,0.00144643,0.00144643,0.0],[1570792080000,0.00144637,0.00144637,0.00144587,0.00144587,165.0],[1570792140000,0.00144587,0.00144587,0.00144587,0.00144587,1348.0],[1570792200000,0.00144587,0.00144587,0.00144587,0.00144587,0.0],[1570792260000,0.00144777,0.00144788,0.00144777,0.0014478,1375.0],[1570792320000,0.00144863,0.00144863,0.00144863,0.00144863,2.0],[1570792380000,0.00144863,0.00145117,0.00144863,0.00145117,3795.0],[1570792440000,0.00145117,0.00145117,0.00145117,0.00145117,0.0],[1570792500000,0.00145127,0.0014513,0.00144856,0.00144856,1011.0],[1570792560000,0.00144856,0.00144856,0.00144856,0.00144856,0.0],[1570792620000,0.00144745,0.00144745,0.00144558,0.00144564,903.0],[1570792680000,0.00144585,0.00144585,0.00144585,0.00144585,41.0],[1570792740000,0.00144585,0.00144585,0.00144585,0.00144585,0.0],[1570792800000,0.00144585,0.00144585,0.00144585,0.00144585,0.0],[1570792860000,0.00144585,0.00144585,0.00144552,0.00144552,286.0],[1570792920000,0.00145112,0.00145689,0.00145025,0.00145027,17439.0],[1570792980000,0.00145194,0.00145194,0.00145194,0.00145194,274.0],[1570793040000,0.00145194,0.00145346,0.00144873,0.00145346,1060.0],[1570793100000,0.00145346,0.00145346,0.00145346,0.00145346,0.0],[1570793160000,0.0014531,0.0014531,0.0014531,0.0014531,1269.0],[1570793220000,0.00145346,0.00145493,0.00145051,0.00145051,388.0],[1570793280000,0.00145103,0.00145103,0.00145103,0.00145103,14.0],[1570793340000,0.00145021,0.00145021,0.00145021,0.00145021,16.0],[1570793400000,0.00144895,0.00145494,0.00144895,0.00145494,74.0],[1570793460000,0.00145494,0.00145494,0.00145494,0.00145494,2.0],[1570793520000,0.00145306,0.00145306,0.00145098,0.00145098,465.0],[1570793580000,0.00145098,0.00145098,0.00145098,0.00145098,0.0],[1570793640000,0.00145098,0.00145098,0.00145098,0.00145098,0.0],[1570793700000,0.00145098,0.00145098,0.00145098,0.00145098,0.0],[1570793760000,0.00145216,0.00145216,0.00144974,0.00144974,557.0],[1570793820000,0.00145003,0.00145462,0.00144899,0.00144899,1455.0],[1570793880000,0.00144899,0.00144899,0.00144899,0.00144899,0.0],[1570793940000,0.00144886,0.00144886,0.00144879,0.00144879,870.0],[1570794000000,0.00144879,0.00144879,0.00144879,0.00144879,16.0],[1570794060000,0.00144879,0.00144879,0.00144693,0.00144693,348.0],[1570794120000,0.00144701,0.00144701,0.00144701,0.00144701,29.0],[1570794180000,0.00144703,0.00144704,0.00144703,0.00144704,45.0],[1570794240000,0.00144704,0.00144704,0.00144704,0.00144704,0.0],[1570794300000,0.00144704,0.00144704,0.00144704,0.00144704,0.0],[1570794360000,0.00145258,0.00145258,0.00145258,0.00145258,2.0],[1570794420000,0.00145258,0.00145258,0.00145258,0.00145258,0.0],[1570794480000,0.00145258,0.00145258,0.00145258,0.00145258,0.0],[1570794540000,0.00145047,0.00145047,0.0014482,0.0014482,573.0],[1570794600000,0.00145157,0.00145157,0.00145157,0.00145157,20.0],[1570794660000,0.00145149,0.00145438,0.00145149,0.00145438,1026.0],[1570794720000,0.00145438,0.00145438,0.00145438,0.00145438,0.0],[1570794780000,0.00144906,0.00144906,0.00144906,0.00144906,14.0],[1570794840000,0.00144906,0.00144906,0.00144906,0.00144906,0.0],[1570794900000,0.0014508,0.0014508,0.00144821,0.00144832,483.0],[1570794960000,0.00145256,0.00145256,0.00145256,0.00145256,262.0],[1570795020000,0.00145247,0.00145247,0.00145247,0.00145247,148.0],[1570795080000,0.00145247,0.00145247,0.00145247,0.00145247,0.0],[1570795140000,0.00144868,0.00144868,0.00144868,0.00144868,14.0],[1570795200000,0.00144868,0.00144868,0.00144868,0.00144868,0.0],[1570795260000,0.00144908,0.00145652,0.00144908,0.00145647,7960.0],[1570795320000,0.00145584,0.00145584,0.00145584,0.00145584,10.0],[1570795380000,0.00145584,0.00145584,0.00145584,0.00145584,0.0],[1570795440000,0.00145584,0.00145584,0.00145584,0.00145584,0.0],[1570795500000,0.00145154,0.00145154,0.00145154,0.00145154,16.0],[1570795560000,0.00145154,0.00145154,0.00145154,0.00145154,0.0],[1570795620000,0.00145181,0.00145181,0.00145181,0.00145181,420.0],[1570795680000,0.00145182,0.00145183,0.00145182,0.00145183,44.0],[1570795740000,0.00145183,0.00145183,0.00145183,0.00145183,0.0],[1570795800000,0.00145182,0.00145182,0.00145105,0.00145105,6353.0],[1570795860000,0.00145344,0.00145344,0.00145344,0.00145344,100.0],[1570795920000,0.00145344,0.00145344,0.00145344,0.00145344,0.0],[1570795980000,0.00145343,0.00145434,0.00145343,0.00145432,512.0],[1570796040000,0.00145105,0.00145105,0.00145105,0.00145105,15.0],[1570796100000,0.00145118,0.00145118,0.00145118,0.00145118,188.0],[1570796160000,0.00145118,0.00145118,0.00145118,0.00145118,0.0],[1570796220000,0.00145118,0.00145118,0.00145118,0.00145118,0.0],[1570796280000,0.00145221,0.00145436,0.00145221,0.00145436,31.0],[1570796340000,0.00145436,0.00145436,0.00145436,0.00145436,0.0],[1570796400000,0.00145237,0.00145436,0.00145237,0.00145249,380.0],[1570796460000,0.00145249,0.00145249,0.00145249,0.00145249,0.0],[1570796520000,0.00145249,0.00145249,0.00145249,0.00145249,0.0],[1570796580000,0.00145249,0.00145249,0.00145249,0.00145249,0.0],[1570796640000,0.00145249,0.00145249,0.00145249,0.00145249,0.0],[1570796700000,0.00145292,0.00145292,0.00145292,0.00145292,193.0],[1570796760000,0.00145392,0.00145392,0.00145392,0.00145392,260.0],[1570796820000,0.00145392,0.00145392,0.00145392,0.00145392,0.0],[1570796880000,0.00145392,0.00145392,0.00145173,0.00145173,50.0],[1570796940000,0.00145607,0.00145607,0.00145607,0.00145607,2.0],[1570797000000,0.00145212,0.00145212,0.00145212,0.00145212,15.0],[1570797060000,0.00145224,0.00145224,0.00145224,0.00145224,14.0],[1570797120000,0.0014523,0.0014523,0.0014523,0.0014523,44.0],[1570797180000,0.00145231,0.00145233,0.00145231,0.00145233,44.0],[1570797240000,0.00145234,0.00145234,0.00145234,0.00145234,69.0],[1570797300000,0.00145234,0.00145234,0.00145234,0.00145234,0.0],[1570797360000,0.0014524,0.0014524,0.0014524,0.0014524,1377.0],[1570797420000,0.00145538,0.00145618,0.00145321,0.00145618,539.0],[1570797480000,0.00145654,0.00145654,0.00145654,0.00145654,2.0],[1570797540000,0.00145387,0.00145387,0.00145387,0.00145387,14.0],[1570797600000,0.00145618,0.00145699,0.00145618,0.00145699,165.0],[1570797660000,0.00145692,0.00145692,0.00145692,0.00145692,60.0],[1570797720000,0.00145692,0.00145692,0.00145692,0.00145692,0.0],[1570797780000,0.00145241,0.00145241,0.00145241,0.00145241,15.0],[1570797840000,0.00145241,0.00145241,0.00145241,0.00145241,0.0],[1570797900000,0.00145245,0.00145256,0.00145245,0.00145254,69.0],[1570797960000,0.00145254,0.00145254,0.00145254,0.00145254,0.0],[1570798020000,0.00145569,0.00145571,0.00145569,0.00145571,1394.0],[1570798080000,0.00145571,0.00145571,0.00145571,0.00145571,0.0],[1570798140000,0.00145571,0.00145571,0.00145571,0.00145571,0.0],[1570798200000,0.00145571,0.00145571,0.00145571,0.00145571,0.0],[1570798260000,0.00145244,0.00145244,0.00145242,0.00145242,16.0],[1570798320000,0.00145242,0.00145242,0.00145237,0.00145237,14.0],[1570798380000,0.00145237,0.00145237,0.00145236,0.00145236,99.0],[1570798440000,0.00145473,0.00145474,0.00145473,0.00145474,1600.0],[1570798500000,0.00145238,0.00145539,0.00145237,0.00145539,293.0],[1570798560000,0.00145632,0.00145891,0.00145304,0.00145891,967.0],[1570798620000,0.00145728,0.00145954,0.00145532,0.00145609,4049.0],[1570798680000,0.00145624,0.00145954,0.00145624,0.0014565,86.0],[1570798740000,0.00145954,0.00145983,0.00145954,0.00145983,2513.0],[1570798800000,0.00145983,0.00145983,0.00145983,0.00145983,0.0],[1570798860000,0.0014597,0.0014597,0.00145814,0.00145814,125.0],[1570798920000,0.00145842,0.00145842,0.00145842,0.00145842,1083.0],[1570798980000,0.00145812,0.00145812,0.00145652,0.00145652,14.0],[1570799040000,0.001459,0.001459,0.00145654,0.00145654,53.0],[1570799100000,0.00145795,0.00145795,0.00145795,0.00145795,17.0],[1570799160000,0.00145795,0.00145795,0.00145795,0.00145795,0.0],[1570799220000,0.00145656,0.00145656,0.00145451,0.00145453,2617.0],[1570799280000,0.00145455,0.00145455,0.00145455,0.00145455,15.0],[1570799340000,0.00145455,0.00145656,0.00145454,0.00145656,2620.0],[1570799400000,0.00145452,0.00145461,0.00145391,0.00145391,689.0],[1570799460000,0.00145391,0.00145837,0.00145391,0.00145837,50491.0],[1570799520000,0.00145837,0.00145837,0.00145837,0.00145837,0.0],[1570799580000,0.00145837,0.00145837,0.00145837,0.00145837,0.0],[1570799640000,0.00145377,0.00145377,0.00145376,0.00145376,227.0],[1570799700000,0.001458,0.001458,0.001458,0.001458,100.0],[1570799760000,0.001458,0.001458,0.001458,0.001458,0.0],[1570799820000,0.00145452,0.00145452,0.00145452,0.00145452,14.0],[1570799880000,0.00145743,0.00145743,0.00145743,0.00145743,1635.0],[1570799940000,0.00145743,0.00145743,0.00145743,0.00145743,0.0],[1570800000000,0.00145899,0.00145899,0.00145899,0.00145899,100.0],[1570800060000,0.00145896,0.00145899,0.00145601,0.00145896,1861.0],[1570800120000,0.00145896,0.00145896,0.00145896,0.00145896,0.0],[1570800180000,0.0014556,0.00145888,0.00145559,0.00145887,345.0],[1570800240000,0.00145887,0.00145887,0.00145716,0.00145716,27911.0],[1570800300000,0.00145716,0.00145716,0.00145716,0.00145716,0.0],[1570800360000,0.00145716,0.00145716,0.00145716,0.00145716,0.0],[1570800420000,0.00145716,0.00145716,0.00145716,0.00145716,0.0],[1570800480000,0.001456,0.001456,0.001456,0.001456,1196.0],[1570800540000,0.001456,0.001456,0.001456,0.001456,865.0],[1570800600000,0.00145628,0.00145628,0.00145559,0.00145559,1333.0],[1570800660000,0.00145559,0.00145559,0.00145559,0.00145559,0.0],[1570800720000,0.00145559,0.00145589,0.00145558,0.00145558,2996.0],[1570800780000,0.00145558,0.00145558,0.00145558,0.00145558,16.0],[1570800840000,0.00145558,0.00145558,0.00145558,0.00145558,0.0],[1570800900000,0.00145558,0.0014556,0.00145558,0.00145558,56.0],[1570800960000,0.00145558,0.00145558,0.00145457,0.00145458,29.0],[1570801020000,0.00145458,0.00145458,0.00145458,0.00145458,0.0],[1570801080000,0.00145704,0.00145704,0.00145704,0.00145704,85.0],[1570801140000,0.00145704,0.00145704,0.00145704,0.00145704,0.0],[1570801200000,0.00145712,0.00145719,0.00145712,0.00145719,8527.0],[1570801260000,0.00145725,0.001459,0.00145725,0.001459,5558.0],[1570801320000,0.00145599,0.00146052,0.00145599,0.00146052,802.0],[1570801380000,0.00146052,0.00146374,0.00146052,0.00146374,4018.0],[1570801440000,0.00146374,0.00146387,0.00146076,0.00146387,2636.0],[1570801500000,0.00146398,0.00146435,0.00146109,0.00146109,1012.0],[1570801560000,0.00146086,0.00146086,0.00146086,0.00146086,15.0],[1570801620000,0.00146435,0.00146435,0.00146435,0.00146435,2.0],[1570801680000,0.00146105,0.00146434,0.00146105,0.00146433,2204.0],[1570801740000,0.00146114,0.00146114,0.00146029,0.00146029,401.0],[1570801800000,0.00146029,0.00146029,0.00146029,0.00146029,275.0],[1570801860000,0.00146243,0.00146243,0.00146243,0.00146243,266.0],[1570801920000,0.00146243,0.00146243,0.00146243,0.00146243,0.0],[1570801980000,0.00146243,0.00146243,0.00146243,0.00146243,0.0],[1570802040000,0.00145836,0.001459,0.00145836,0.001459,713.0],[1570802100000,0.001459,0.001459,0.001459,0.001459,0.0],[1570802160000,0.001459,0.001459,0.001459,0.001459,238.0],[1570802220000,0.001459,0.001459,0.001459,0.001459,0.0],[1570802280000,0.00145885,0.00145885,0.00145885,0.00145885,14.0],[1570802340000,0.001459,0.001459,0.00145885,0.00145885,740.0],[1570802400000,0.00146037,0.00146037,0.0014583,0.0014583,962.0],[1570802460000,0.00145717,0.00145717,0.00145717,0.00145717,67.0],[1570802520000,0.00145741,0.00145741,0.0014574,0.0014574,1028.0],[1570802580000,0.00146,0.00146,0.00145767,0.00146,3960.0],[1570802640000,0.00145819,0.00146112,0.00145818,0.00146112,2629.0],[1570802700000,0.00146112,0.00146112,0.00146112,0.00146112,0.0],[1570802760000,0.00145885,0.00145885,0.00145885,0.00145885,15.0],[1570802820000,0.00145914,0.00146243,0.00145914,0.00146243,17.0],[1570802880000,0.00146243,0.00146243,0.00146243,0.00146243,4042.0],[1570802940000,0.00146243,0.00146415,0.00146243,0.00146415,1517.0],[1570803000000,0.00146415,0.00146415,0.00146415,0.00146415,0.0],[1570803060000,0.00146164,0.00146164,0.00146164,0.00146164,14.0],[1570803120000,0.00146164,0.00146592,0.00146156,0.00146156,28872.0],[1570803180000,0.00146156,0.00146156,0.00146156,0.00146156,0.0],[1570803240000,0.00146158,0.00146158,0.00146158,0.00146158,18.0],[1570803300000,0.00146442,0.00146442,0.00146442,0.00146442,631.0],[1570803360000,0.00146442,0.00146442,0.00146442,0.00146442,0.0],[1570803420000,0.00146097,0.00146097,0.00146097,0.00146097,91.0],[1570803480000,0.00146097,0.00146097,0.00146097,0.00146097,0.0],[1570803540000,0.00146097,0.00146097,0.00146097,0.00146097,0.0],[1570803600000,0.00146097,0.00146097,0.00146097,0.00146097,0.0],[1570803660000,0.00146097,0.00146097,0.00146097,0.00146097,0.0],[1570803720000,0.00146113,0.00146113,0.00146111,0.00146111,823.0],[1570803780000,0.00146166,0.00146166,0.00146156,0.00146156,451.0],[1570803840000,0.001464,0.001464,0.001464,0.001464,4173.0],[1570803900000,0.001464,0.001464,0.001464,0.001464,23833.0],[1570803960000,0.001464,0.001464,0.001464,0.001464,0.0],[1570804020000,0.001464,0.001464,0.001464,0.001464,4616.0],[1570804080000,0.001464,0.001464,0.001464,0.001464,3378.0],[1570804140000,0.001464,0.001464,0.001464,0.001464,0.0],[1570804200000,0.00146234,0.0014649,0.00146234,0.0014649,517.0],[1570804260000,0.0014649,0.0014649,0.0014649,0.0014649,0.0],[1570804320000,0.00146496,0.001465,0.00146496,0.001465,156.0],[1570804380000,0.001465,0.00146561,0.001465,0.00146561,89.0],[1570804440000,0.00146592,0.00146639,0.00146592,0.00146639,135.0],[1570804500000,0.00146644,0.00146644,0.00146644,0.00146644,18.0],[1570804560000,0.0014649,0.00146693,0.0014649,0.00146693,342.0],[1570804620000,0.0014649,0.0014649,0.0014649,0.0014649,18.0],[1570804680000,0.00146709,0.00146709,0.00146709,0.00146709,8.0],[1570804740000,0.00146709,0.00146709,0.00146709,0.00146709,0.0],[1570804800000,0.00146674,0.00146674,0.00146318,0.00146318,288.0],[1570804860000,0.00146318,0.00146318,0.00146312,0.00146312,303.0],[1570804920000,0.00146315,0.00146315,0.00146307,0.00146307,46.0],[1570804980000,0.00146321,0.00146321,0.00146321,0.00146321,13.0],[1570805040000,0.00146331,0.00146331,0.00146331,0.00146331,53.0],[1570805100000,0.00146331,0.00146331,0.00146331,0.00146331,0.0],[1570805160000,0.00146346,0.00146346,0.00146346,0.00146346,26.0],[1570805220000,0.00146346,0.00146346,0.00146346,0.00146346,0.0],[1570805280000,0.00146346,0.00146346,0.00146346,0.00146346,0.0],[1570805340000,0.00146431,0.00146431,0.00146431,0.00146431,15.0],[1570805400000,0.00146479,0.00146479,0.00146463,0.00146479,614.0],[1570805460000,0.00146432,0.00146432,0.00146431,0.00146431,319.0],[1570805520000,0.0014625,0.0014625,0.0014608,0.00146085,1440.0],[1570805580000,0.00146085,0.00146085,0.00145965,0.00145971,273.0],[1570805640000,0.00146313,0.00146313,0.00146025,0.00146299,1632.0],[1570805700000,0.00146118,0.00146313,0.00146118,0.00146313,35.0],[1570805760000,0.00146173,0.00146173,0.00146117,0.00146117,559.0],[1570805820000,0.00146117,0.00146117,0.00146117,0.00146117,0.0],[1570805880000,0.00146117,0.00146117,0.00146117,0.00146117,0.0],[1570805940000,0.00146344,0.00146344,0.00146111,0.00146111,279.0],[1570806000000,0.00146111,0.00146416,0.00146111,0.00146416,127.0],[1570806060000,0.00146417,0.00146572,0.00146179,0.00146179,288.0],[1570806120000,0.00146572,0.001466,0.0014627,0.001466,3650.0],[1570806180000,0.001466,0.00146617,0.001466,0.00146617,627.0],[1570806240000,0.0014666,0.00146823,0.0014666,0.00146823,2594.0],[1570806300000,0.00146831,0.00146884,0.00146513,0.00146513,2114.0],[1570806360000,0.00146462,0.00146462,0.00146462,0.00146462,14.0],[1570806420000,0.00146492,0.00146514,0.00146492,0.00146514,47.0],[1570806480000,0.00146506,0.00146506,0.00146506,0.00146506,15.0],[1570806540000,0.00146506,0.00146506,0.00146506,0.00146506,0.0],[1570806600000,0.00146506,0.00146506,0.00146506,0.00146506,0.0],[1570806660000,0.00146447,0.00146447,0.00146447,0.00146447,46.0],[1570806720000,0.001467,0.00146905,0.001467,0.00146905,161.0],[1570806780000,0.00146609,0.0014682,0.00146609,0.00146609,1694.0],[1570806840000,0.00146384,0.00146384,0.00146384,0.00146384,15.0],[1570806900000,0.00146384,0.00146384,0.00146384,0.00146384,0.0],[1570806960000,0.00146384,0.00146384,0.00146384,0.00146384,0.0],[1570807020000,0.00146384,0.00146384,0.00146384,0.00146384,0.0],[1570807080000,0.00146457,0.00146837,0.00146457,0.00146837,307.0],[1570807140000,0.00146495,0.00146495,0.00146495,0.00146495,60.0],[1570807200000,0.00146495,0.00146495,0.00146404,0.00146404,28.0],[1570807260000,0.00146513,0.00146513,0.00146359,0.00146359,150.0],[1570807320000,0.00146359,0.00146359,0.00146359,0.00146359,0.0],[1570807380000,0.00146359,0.00146359,0.00146359,0.00146359,0.0],[1570807440000,0.00146678,0.00146678,0.00146678,0.00146678,4.0],[1570807500000,0.00146678,0.00146678,0.00146678,0.00146678,0.0],[1570807560000,0.00146444,0.00146444,0.00146355,0.00146355,1161.0],[1570807620000,0.00146355,0.00146355,0.00146355,0.00146355,0.0],[1570807680000,0.00146373,0.00146598,0.00146373,0.00146383,329.0],[1570807740000,0.00146383,0.00146383,0.00146383,0.00146383,0.0],[1570807800000,0.00146383,0.00146383,0.00146382,0.00146382,24.0],[1570807860000,0.00146661,0.00146678,0.00146468,0.00146678,999.0],[1570807920000,0.00146475,0.00146741,0.00146475,0.00146493,34896.0],[1570807980000,0.00146493,0.00146573,0.00146492,0.001465,1024.0],[1570808040000,0.001465,0.001465,0.001465,0.001465,0.0],[1570808100000,0.0014675,0.0014675,0.0014675,0.0014675,185.0],[1570808160000,0.0014675,0.0014675,0.0014675,0.0014675,0.0],[1570808220000,0.0014675,0.0014675,0.0014675,0.0014675,0.0],[1570808280000,0.0014675,0.00146866,0.0014675,0.00146866,1700.0],[1570808340000,0.00146545,0.00146545,0.00146545,0.00146545,27.0],[1570808400000,0.00146616,0.00146616,0.00146616,0.00146616,8.0],[1570808460000,0.00146616,0.00146616,0.00146616,0.00146616,0.0],[1570808520000,0.00146629,0.00146629,0.00146616,0.00146616,154.0],[1570808580000,0.0014663,0.0014688,0.00146617,0.0014688,4734.0],[1570808640000,0.00146785,0.00146908,0.00146621,0.00146636,2879.0],[1570808700000,0.0014664,0.00146976,0.0014664,0.00146976,2370.0],[1570808760000,0.00146674,0.00147,0.00146674,0.00147,1335.0],[1570808820000,0.00146996,0.00146996,0.00146996,0.00146996,183.0],[1570808880000,0.00146996,0.00146996,0.00146996,0.00146996,0.0],[1570808940000,0.00146996,0.00146996,0.00146996,0.00146996,0.0],[1570809000000,0.00146996,0.00146996,0.00146996,0.00146996,0.0],[1570809060000,0.00146647,0.00146647,0.00146647,0.00146647,31.0],[1570809120000,0.0014696,0.00146991,0.0014696,0.00146991,2603.0],[1570809180000,0.00146616,0.00146616,0.00146616,0.00146616,69.0],[1570809240000,0.001466,0.001466,0.001466,0.001466,15.0],[1570809300000,0.00146496,0.00146496,0.00146496,0.00146496,84.0],[1570809360000,0.00146496,0.00146496,0.00146496,0.00146496,0.0],[1570809420000,0.001466,0.001466,0.001466,0.001466,58.0],[1570809480000,0.00146612,0.00146612,0.00146612,0.00146612,15.0],[1570809540000,0.0014677,0.0014677,0.0014677,0.0014677,136.0],[1570809600000,0.0014685,0.0014685,0.0014685,0.0014685,15.0],[1570809660000,0.00146675,0.00146677,0.00146671,0.00146671,1923.0],[1570809720000,0.00146671,0.00146671,0.00146671,0.00146671,0.0],[1570809780000,0.00146671,0.00146671,0.00146671,0.00146671,0.0],[1570809840000,0.00146632,0.00146632,0.00146632,0.00146632,14.0],[1570809900000,0.00147,0.00147139,0.00147,0.00147139,2422.0],[1570809960000,0.00146807,0.00147333,0.00146807,0.00147333,3685.0],[1570810020000,0.00147325,0.00148323,0.00147017,0.00148323,75636.0],[1570810080000,0.00148324,0.00149267,0.00148323,0.00148707,54769.0],[1570810140000,0.00148328,0.00148644,0.00148225,0.00148225,2479.0],[1570810200000,0.00148235,0.0014908,0.00148235,0.00148477,6188.0],[1570810260000,0.00148583,0.00148588,0.00148581,0.00148581,5485.0],[1570810320000,0.00148581,0.00148581,0.00148581,0.00148581,0.0],[1570810380000,0.001486,0.001486,0.001486,0.001486,1130.0],[1570810440000,0.00148325,0.00148325,0.00148325,0.00148325,116.0],[1570810500000,0.00148328,0.00148767,0.00148231,0.00148764,10009.0],[1570810560000,0.00148357,0.00148785,0.00148357,0.00148785,16.0],[1570810620000,0.00148329,0.00148329,0.00148172,0.00148172,2618.0],[1570810680000,0.00148441,0.00148547,0.00148135,0.00148537,18244.0],[1570810740000,0.0014812,0.00148141,0.0014812,0.00148141,1036.0],[1570810800000,0.00148615,0.00148615,0.00148157,0.00148158,181.0],[1570810860000,0.00148147,0.00148147,0.00148147,0.00148147,2116.0],[1570810920000,0.00148147,0.001485,0.00148147,0.00148168,2982.0],[1570810980000,0.00148234,0.00148449,0.00148234,0.00148449,89.0],[1570811040000,0.00148449,0.00148449,0.00148449,0.00148449,21389.0],[1570811100000,0.00148449,0.0014845,0.0014829,0.0014845,43444.0],[1570811160000,0.0014845,0.0014845,0.0014845,0.0014845,0.0],[1570811220000,0.00148479,0.00148479,0.00148064,0.00148117,1750.0],[1570811280000,0.00148117,0.00148117,0.00148117,0.00148117,0.0],[1570811340000,0.00148074,0.00148074,0.00148074,0.00148074,16.0],[1570811400000,0.00148077,0.00148077,0.00147927,0.00147927,21758.0],[1570811460000,0.00147935,0.00147935,0.00147935,0.00147935,463.0],[1570811520000,0.00147962,0.00148386,0.0014793,0.0014793,16310.0],[1570811580000,0.001484,0.00148401,0.001481,0.00148106,599.0],[1570811640000,0.00148223,0.00148223,0.00148222,0.00148222,16.0],[1570811700000,0.00148226,0.00148479,0.00148226,0.0014823,264.0],[1570811760000,0.00148283,0.0014848,0.00148283,0.0014848,74.0],[1570811820000,0.0014848,0.0014848,0.0014848,0.0014848,0.0],[1570811880000,0.00148282,0.00148282,0.00148104,0.00148104,24438.0],[1570811940000,0.0014794,0.0014794,0.0014794,0.0014794,8.0],[1570812000000,0.00147935,0.00147935,0.00147851,0.00147851,202.0],[1570812060000,0.00147812,0.00147812,0.0014772,0.0014772,23.0],[1570812120000,0.0014772,0.0014772,0.0014772,0.0014772,0.0],[1570812180000,0.0014772,0.0014772,0.00147692,0.00147692,1613.0],[1570812240000,0.00147692,0.00147692,0.00147692,0.00147692,0.0],[1570812300000,0.00147692,0.00147692,0.00147692,0.00147692,15.0],[1570812360000,0.00148126,0.00148265,0.00148126,0.00148265,541.0],[1570812420000,0.00147782,0.00148092,0.00147782,0.00148092,10182.0],[1570812480000,0.00148092,0.00148092,0.00147851,0.00147852,1068.0],[1570812540000,0.00147857,0.00147857,0.00147855,0.00147855,15.0],[1570812600000,0.00147855,0.00147855,0.00147855,0.00147855,0.0],[1570812660000,0.00148162,0.00148162,0.00147855,0.00147855,59.0],[1570812720000,0.00147854,0.00147854,0.00147797,0.00147797,191.0],[1570812780000,0.00147693,0.00147693,0.00147637,0.00147637,619.0],[1570812840000,0.00147755,0.00147755,0.00147755,0.00147755,15.0],[1570812900000,0.00147755,0.00147755,0.00147676,0.00147676,133.0],[1570812960000,0.00147768,0.00147768,0.00147636,0.00147636,884.0],[1570813020000,0.00147636,0.00147636,0.00147545,0.00147545,1253.0],[1570813080000,0.00147942,0.00147942,0.00147543,0.00147543,535.0],[1570813140000,0.00147542,0.00147542,0.00147542,0.00147542,14.0],[1570813200000,0.00147541,0.00147541,0.00147541,0.00147541,166.0],[1570813260000,0.00147542,0.00147783,0.00147542,0.00147783,2734.0],[1570813320000,0.00147783,0.00147783,0.00147783,0.00147783,0.0],[1570813380000,0.00147774,0.00147774,0.00147774,0.00147774,105.0],[1570813440000,0.00147774,0.00147774,0.00147774,0.00147774,0.0],[1570813500000,0.00147768,0.00147768,0.00147741,0.00147741,1302.0],[1570813560000,0.00147587,0.00147587,0.00147457,0.00147463,1375.0],[1570813620000,0.00147463,0.00147463,0.00147463,0.00147463,0.0],[1570813680000,0.00147765,0.00147768,0.00147765,0.00147768,201.0],[1570813740000,0.00147768,0.00147768,0.00147768,0.00147768,0.0],[1570813800000,0.00147768,0.00147768,0.00147768,0.00147768,0.0],[1570813860000,0.00147514,0.00147764,0.00147514,0.00147764,2038.0],[1570813920000,0.00147525,0.0014778,0.00147525,0.00147552,113.0],[1570813980000,0.0014778,0.0014778,0.0014778,0.0014778,661.0],[1570814040000,0.0014778,0.0014778,0.0014778,0.0014778,0.0],[1570814100000,0.00147881,0.00147881,0.00147881,0.00147881,2.0],[1570814160000,0.00147881,0.00147881,0.00147881,0.00147881,0.0],[1570814220000,0.00147881,0.00147881,0.00147881,0.00147881,0.0],[1570814280000,0.00147881,0.00147881,0.00147881,0.00147881,0.0],[1570814340000,0.00147881,0.00147881,0.00147881,0.00147881,0.0],[1570814400000,0.00147822,0.00147849,0.00147822,0.00147849,5895.0],[1570814460000,0.00147865,0.00147865,0.00147865,0.00147865,349.0],[1570814520000,0.00147863,0.00147865,0.00147863,0.00147865,16747.0],[1570814580000,0.00147865,0.00147865,0.00147627,0.00147627,3953.0],[1570814640000,0.00147878,0.00147882,0.00147648,0.00147648,54.0],[1570814700000,0.00147653,0.00147657,0.00147653,0.00147657,49.0],[1570814760000,0.0014766,0.0014766,0.0014766,0.0014766,200.0],[1570814820000,0.0014766,0.0014766,0.0014766,0.0014766,0.0],[1570814880000,0.00147659,0.00147659,0.00147659,0.00147659,465.0],[1570814940000,0.00147659,0.00147659,0.00147659,0.00147659,0.0],[1570815000000,0.00147899,0.00147899,0.00147899,0.00147899,185.0],[1570815060000,0.00147899,0.00147899,0.00147899,0.00147899,0.0],[1570815120000,0.00147899,0.00147899,0.00147899,0.00147899,0.0],[1570815180000,0.00147899,0.00147899,0.00147899,0.00147899,0.0],[1570815240000,0.00147662,0.00147662,0.00147559,0.00147559,1258.0],[1570815300000,0.00147559,0.00147559,0.00147559,0.00147559,0.0],[1570815360000,0.00147538,0.00147538,0.00147509,0.00147509,457.0],[1570815420000,0.0014745,0.00147451,0.0014745,0.00147451,30.0],[1570815480000,0.00147452,0.00147452,0.00147452,0.00147452,16.0],[1570815540000,0.00147784,0.00147784,0.00147452,0.00147452,33.0],[1570815600000,0.0014755,0.00147608,0.00147452,0.00147608,832.0],[1570815660000,0.00147608,0.00147608,0.00147608,0.00147608,0.0],[1570815720000,0.00147452,0.00147452,0.0014703,0.0014703,1474.0],[1570815780000,0.0014703,0.0014703,0.0014703,0.0014703,0.0],[1570815840000,0.0014754,0.00147543,0.00147099,0.00147539,944.0],[1570815900000,0.00147298,0.00147434,0.00147298,0.00147389,3631.0],[1570815960000,0.00147298,0.00147298,0.00147298,0.00147298,83.0],[1570816020000,0.00147298,0.00147298,0.00147298,0.00147298,0.0],[1570816080000,0.00147298,0.00147298,0.00147127,0.00147127,15.0],[1570816140000,0.001475,0.001475,0.00147195,0.00147195,65.0],[1570816200000,0.00147597,0.00147597,0.00147049,0.00147049,59.0],[1570816260000,0.00147057,0.00147057,0.00147057,0.00147057,164.0],[1570816320000,0.00147079,0.00147079,0.00147079,0.00147079,1622.0],[1570816380000,0.00147279,0.00147279,0.00147279,0.00147279,57.0],[1570816440000,0.00147105,0.0014751,0.00147105,0.0014751,52.0],[1570816500000,0.0014751,0.0014751,0.0014751,0.0014751,2.0],[1570816560000,0.00147088,0.00147088,0.00147088,0.00147088,15.0],[1570816620000,0.00147088,0.00147088,0.00147088,0.00147088,0.0],[1570816680000,0.00147088,0.00147088,0.00147088,0.00147088,0.0],[1570816740000,0.00147088,0.00147088,0.00147088,0.00147088,0.0],[1570816800000,0.00147088,0.00147088,0.00147088,0.00147088,0.0],[1570816860000,0.00147251,0.0014751,0.00147251,0.0014751,123.0],[1570816920000,0.00147487,0.00147553,0.0014723,0.0014723,528.0],[1570816980000,0.00147237,0.00147237,0.00147237,0.00147237,14.0],[1570817040000,0.00147622,0.00147674,0.00147622,0.00147674,12.0],[1570817100000,0.00147674,0.00147674,0.00147674,0.00147674,0.0],[1570817160000,0.00147674,0.00147674,0.00147674,0.00147674,0.0],[1570817220000,0.00147674,0.00147674,0.00147674,0.00147674,5.0],[1570817280000,0.00147733,0.00147782,0.00147733,0.00147782,842.0],[1570817340000,0.00147786,0.00147786,0.00147786,0.00147786,2.0],[1570817400000,0.00147567,0.00147567,0.00147567,0.00147567,277.0],[1570817460000,0.00147786,0.00147786,0.00147786,0.00147786,126.0],[1570817520000,0.00147786,0.00147786,0.00147786,0.00147786,0.0],[1570817580000,0.00147787,0.00147852,0.00147593,0.00147593,1105.0],[1570817640000,0.00147593,0.00147593,0.00147576,0.00147576,1883.0],[1570817700000,0.00147583,0.00147898,0.00147583,0.00147898,1241.0],[1570817760000,0.00147898,0.00147904,0.00147706,0.00147706,1151.0],[1570817820000,0.00147706,0.00147706,0.00147706,0.00147706,0.0],[1570817880000,0.00147706,0.00147706,0.00147706,0.00147706,0.0],[1570817940000,0.00147718,0.00147953,0.00147718,0.00147953,5132.0],[1570818000000,0.00148,0.00148113,0.00148,0.00148113,400.0],[1570818060000,0.00148118,0.00148137,0.00148118,0.00148137,603.0],[1570818120000,0.00148137,0.00148137,0.00148137,0.00148137,7.0],[1570818180000,0.00148137,0.00148441,0.00148137,0.00148376,6100.0],[1570818240000,0.00148121,0.00148121,0.00148121,0.00148121,156.0],[1570818300000,0.0014847,0.0014856,0.0014847,0.0014856,1721.0],[1570818360000,0.0014856,0.00148624,0.00148326,0.00148326,1418.0],[1570818420000,0.00148419,0.001487,0.00148419,0.00148433,1815.0],[1570818480000,0.0014875,0.00148868,0.00148482,0.00148868,255.0],[1570818540000,0.0014857,0.00148904,0.0014857,0.00148904,150.0],[1570818600000,0.00148982,0.00148999,0.0014898,0.00148999,254.0],[1570818660000,0.00148999,0.00148999,0.00148999,0.00148999,0.0],[1570818720000,0.00148991,0.00148991,0.00148666,0.00148666,493.0],[1570818780000,0.00148683,0.00148683,0.00148678,0.00148678,543.0],[1570818840000,0.00148679,0.00148679,0.00148679,0.00148679,123.0],[1570818900000,0.00148679,0.0014921,0.00148678,0.00148701,45942.0],[1570818960000,0.00148701,0.00148701,0.00148701,0.00148701,0.0],[1570819020000,0.00149176,0.00149176,0.00149176,0.00149176,8.0],[1570819080000,0.00148818,0.00148818,0.00148679,0.00148679,285.0],[1570819140000,0.00148679,0.00148679,0.00148678,0.00148678,169.0],[1570819200000,0.00148456,0.00148479,0.00148455,0.00148455,75.0],[1570819260000,0.00148455,0.00148455,0.00148455,0.00148455,0.0],[1570819320000,0.00148455,0.00148455,0.00148455,0.00148455,6425.0],[1570819380000,0.00148455,0.00148455,0.00148323,0.00148455,8204.0],[1570819440000,0.00148455,0.00148455,0.00148455,0.00148455,0.0],[1570819500000,0.00148455,0.00148455,0.00148455,0.00148455,1177.0],[1570819560000,0.00148455,0.00148455,0.00148455,0.00148455,0.0],[1570819620000,0.00148455,0.001487,0.00148455,0.001487,13916.0],[1570819680000,0.001487,0.001487,0.001487,0.001487,1004.0],[1570819740000,0.001487,0.00148795,0.001487,0.00148795,179.0],[1570819800000,0.00148795,0.00149091,0.00148795,0.00149091,19.0],[1570819860000,0.00148629,0.00148629,0.00148629,0.00148629,15.0],[1570819920000,0.00148619,0.00148619,0.00148619,0.00148619,15.0],[1570819980000,0.00148622,0.00148638,0.00148622,0.00148638,28.0],[1570820040000,0.00148645,0.00148802,0.00148642,0.00148802,21347.0],[1570820100000,0.00148802,0.00148802,0.00148802,0.00148802,1747.0],[1570820160000,0.00148802,0.00148802,0.00148802,0.00148802,0.0],[1570820220000,0.00148622,0.00148622,0.00148577,0.001486,289.0],[1570820280000,0.00148582,0.001486,0.00148582,0.001486,214.0],[1570820340000,0.00148589,0.00148589,0.00148589,0.00148589,16.0],[1570820400000,0.00148589,0.00148589,0.00148589,0.00148589,0.0],[1570820460000,0.00148589,0.00148589,0.00148589,0.00148589,0.0],[1570820520000,0.00148589,0.00148589,0.00148589,0.00148589,0.0],[1570820580000,0.0014876,0.0014876,0.0014876,0.0014876,95.0],[1570820640000,0.0014876,0.0014876,0.0014876,0.0014876,0.0],[1570820700000,0.0014876,0.0014876,0.0014876,0.0014876,31.0],[1570820760000,0.00148761,0.00149022,0.00148761,0.00149012,499.0],[1570820820000,0.00148965,0.00149,0.00148965,0.00149,15807.0],[1570820880000,0.00149045,0.001491,0.00149045,0.001491,215.0],[1570820940000,0.001491,0.0014924,0.00148884,0.0014924,948.0],[1570821000000,0.0014924,0.0014924,0.00148904,0.00148947,505.0],[1570821060000,0.00148947,0.00148947,0.00148947,0.00148947,0.0],[1570821120000,0.00148947,0.00148947,0.00148947,0.00148947,0.0],[1570821180000,0.0014924,0.00149255,0.0014924,0.00149255,841.0],[1570821240000,0.00149259,0.0014929,0.00149023,0.00149023,1205.0],[1570821300000,0.00149023,0.00149023,0.00148937,0.00148937,2523.0],[1570821360000,0.0014924,0.00149324,0.0014885,0.0014885,1062.0],[1570821420000,0.00148856,0.001489,0.00148856,0.00148863,347.0],[1570821480000,0.00148863,0.00148869,0.00148863,0.00148869,31.0],[1570821540000,0.00148869,0.00148869,0.00148869,0.00148869,0.0],[1570821600000,0.00148999,0.00149251,0.00148999,0.00149251,124.0],[1570821660000,0.00149251,0.00149251,0.00149251,0.00149251,0.0],[1570821720000,0.00149251,0.00149251,0.00149251,0.00149251,0.0],[1570821780000,0.00149251,0.00149251,0.00149251,0.00149251,0.0],[1570821840000,0.00149251,0.00149251,0.00149251,0.00149251,0.0],[1570821900000,0.00149251,0.00149251,0.00149251,0.00149251,0.0],[1570821960000,0.00149251,0.00149251,0.00149251,0.00149251,0.0],[1570822020000,0.00149251,0.00149251,0.00149251,0.00149251,0.0],[1570822080000,0.00149251,0.00149251,0.00149251,0.00149251,0.0],[1570822140000,0.00149002,0.00149002,0.00149002,0.00149002,65.0],[1570822200000,0.00149,0.00149,0.00148795,0.00148795,126.0],[1570822260000,0.00148795,0.00149116,0.00148795,0.00149116,126.0],[1570822320000,0.0014876,0.00148838,0.0014876,0.00148838,1080.0],[1570822380000,0.00148688,0.00148876,0.00148688,0.00148876,313.0],[1570822440000,0.00148876,0.00148876,0.00148876,0.00148876,0.0],[1570822500000,0.00148518,0.00148518,0.00148518,0.00148518,21.0],[1570822560000,0.00148518,0.00148518,0.00148518,0.00148518,0.0],[1570822620000,0.00148526,0.00148526,0.00148526,0.00148526,70.0],[1570822680000,0.00148798,0.00148798,0.00148798,0.00148798,20.0],[1570822740000,0.00148583,0.00148795,0.00148583,0.00148795,114.0],[1570822800000,0.00148795,0.00148795,0.00148795,0.00148795,0.0],[1570822860000,0.00148583,0.00148583,0.00148583,0.00148583,14.0],[1570822920000,0.00148583,0.00148583,0.00148488,0.00148488,125.0],[1570822980000,0.00148488,0.00148768,0.00148461,0.00148461,248.0],[1570823040000,0.00148461,0.00148461,0.00148461,0.00148461,0.0],[1570823100000,0.00148461,0.00148461,0.00148461,0.00148461,0.0],[1570823160000,0.00148461,0.00148461,0.00148461,0.00148461,0.0],[1570823220000,0.00148746,0.00148746,0.00148746,0.00148746,7.0],[1570823280000,0.00148461,0.00148461,0.00148461,0.00148461,10.0],[1570823340000,0.00148461,0.00148461,0.00148461,0.00148461,0.0],[1570823400000,0.001486,0.001486,0.001486,0.001486,74.0],[1570823460000,0.001486,0.001486,0.00148528,0.00148528,872.0],[1570823520000,0.00148528,0.00148528,0.00148528,0.00148528,456.0],[1570823580000,0.00148695,0.00148696,0.00148525,0.00148525,1993.0],[1570823640000,0.00148461,0.00148461,0.00148461,0.00148461,14.0],[1570823700000,0.00148461,0.00148525,0.00148461,0.00148461,70.0],[1570823760000,0.00148461,0.00148461,0.00148461,0.00148461,14.0],[1570823820000,0.00148461,0.00148461,0.00148461,0.00148461,0.0],[1570823880000,0.00148684,0.00148684,0.00148684,0.00148684,7.0],[1570823940000,0.00148501,0.00148501,0.00148444,0.00148444,3434.0],[1570824000000,0.00148444,0.00148444,0.00148419,0.00148419,906.0],[1570824060000,0.00148656,0.00148656,0.00148407,0.00148407,29.0],[1570824120000,0.00148407,0.00148407,0.00148407,0.00148407,0.0],[1570824180000,0.00148407,0.00148407,0.00148407,0.00148407,0.0],[1570824240000,0.00148407,0.00148407,0.00148407,0.00148407,0.0],[1570824300000,0.00148407,0.00148407,0.00148407,0.00148407,0.0],[1570824360000,0.00148407,0.00148407,0.00148407,0.00148407,0.0],[1570824420000,0.00148421,0.00148421,0.00148421,0.00148421,14.0],[1570824480000,0.00148456,0.00148456,0.00148323,0.00148323,901.0],[1570824540000,0.00148323,0.00148323,0.00148323,0.00148323,0.0],[1570824600000,0.00148323,0.00148323,0.00148323,0.00148323,61.0],[1570824660000,0.00148323,0.00148323,0.00148316,0.00148316,58.0],[1570824720000,0.00148316,0.00148316,0.00148316,0.00148316,0.0],[1570824780000,0.00148292,0.00148292,0.00148207,0.00148207,218.0],[1570824840000,0.00148207,0.00148207,0.00148207,0.00148207,0.0],[1570824900000,0.00148207,0.00148207,0.00148207,0.00148207,0.0],[1570824960000,0.00148203,0.00148203,0.00148203,0.00148203,8.0],[1570825020000,0.00148203,0.00148203,0.00148203,0.00148203,0.0],[1570825080000,0.00148203,0.00148203,0.00148203,0.00148203,0.0],[1570825140000,0.00148203,0.00148203,0.00148203,0.00148203,0.0],[1570825200000,0.00148192,0.00148196,0.00148192,0.00148196,32.0],[1570825260000,0.00148198,0.00148198,0.00148198,0.00148198,16.0],[1570825320000,0.00148472,0.00148473,0.00148472,0.00148473,44.0],[1570825380000,0.00148473,0.00148473,0.00148473,0.00148473,0.0],[1570825440000,0.00148473,0.00148473,0.00148473,0.00148473,0.0],[1570825500000,0.00148473,0.00148473,0.00148473,0.00148473,293.0],[1570825560000,0.00148579,0.00148615,0.00148579,0.00148615,939.0],[1570825620000,0.00148615,0.00148615,0.00148615,0.00148615,0.0],[1570825680000,0.00148615,0.00148615,0.00148615,0.00148615,0.0],[1570825740000,0.00148615,0.00148615,0.00148615,0.00148615,0.0],[1570825800000,0.00148615,0.00148615,0.00148615,0.00148615,0.0],[1570825860000,0.001484,0.001484,0.001484,0.001484,28.0],[1570825920000,0.001484,0.001484,0.00148172,0.00148172,278.0],[1570825980000,0.00148173,0.001486,0.00148173,0.00148179,298.0],[1570826040000,0.00148179,0.00148179,0.00148179,0.00148179,0.0],[1570826100000,0.00148179,0.00148179,0.00148179,0.00148179,0.0],[1570826160000,0.00148179,0.00148179,0.00148179,0.00148179,0.0],[1570826220000,0.00148651,0.00148651,0.00148651,0.00148651,10.0],[1570826280000,0.00148651,0.00148651,0.00148651,0.00148651,0.0],[1570826340000,0.00148651,0.00148651,0.00148651,0.00148651,0.0],[1570826400000,0.00148651,0.00148651,0.00148651,0.00148651,0.0],[1570826460000,0.00148651,0.00148651,0.00148651,0.00148651,0.0],[1570826520000,0.00148651,0.00148651,0.00148651,0.00148651,0.0],[1570826580000,0.00148651,0.00148651,0.00148651,0.00148651,0.0],[1570826640000,0.0014831,0.0014831,0.0014831,0.0014831,10.0],[1570826700000,0.0014831,0.0014831,0.0014831,0.0014831,15.0],[1570826760000,0.00148312,0.00148312,0.0014831,0.0014831,29.0],[1570826820000,0.0014831,0.0014831,0.0014831,0.0014831,0.0],[1570826880000,0.0014831,0.0014831,0.00148182,0.00148182,1429.0],[1570826940000,0.00148182,0.00148182,0.00148182,0.00148182,342.0],[1570827000000,0.00148182,0.00148182,0.00148182,0.00148182,0.0],[1570827060000,0.00148182,0.00148182,0.00148182,0.00148182,0.0],[1570827120000,0.00148242,0.00148261,0.00148242,0.00148261,172.0],[1570827180000,0.00148261,0.00148261,0.00148261,0.00148261,0.0],[1570827240000,0.00148329,0.00148329,0.00148329,0.00148329,88.0],[1570827300000,0.00148331,0.00148331,0.00148331,0.00148331,125.0],[1570827360000,0.00148635,0.00148635,0.00148635,0.00148635,60.0],[1570827420000,0.00148635,0.00148635,0.00148635,0.00148635,0.0],[1570827480000,0.00148331,0.00148331,0.0014827,0.0014827,47.0],[1570827540000,0.0014827,0.0014827,0.0014827,0.0014827,0.0],[1570827600000,0.0014827,0.0014827,0.0014827,0.0014827,0.0],[1570827660000,0.0014827,0.0014827,0.0014827,0.0014827,0.0],[1570827720000,0.0014827,0.0014827,0.0014827,0.0014827,0.0],[1570827780000,0.00148264,0.00148264,0.00148264,0.00148264,105.0],[1570827840000,0.00148207,0.00148207,0.00148183,0.00148183,16.0],[1570827900000,0.00148183,0.00148183,0.00148183,0.00148183,0.0],[1570827960000,0.00148183,0.00148183,0.00148183,0.00148183,0.0],[1570828020000,0.00148183,0.00148183,0.00148183,0.00148183,0.0],[1570828080000,0.00148183,0.00148183,0.00148183,0.00148183,0.0],[1570828140000,0.00148182,0.00148182,0.00148182,0.00148182,697.0],[1570828200000,0.00148182,0.00148182,0.00148181,0.00148181,12592.0],[1570828260000,0.00148181,0.00148181,0.00148181,0.00148181,3085.0],[1570828320000,0.00148172,0.00148172,0.00148002,0.00148002,291.0],[1570828380000,0.00148,0.00148,0.00148,0.00148,21.0],[1570828440000,0.00148244,0.00148244,0.00148244,0.00148244,4000.0],[1570828500000,0.00148057,0.00148057,0.00147953,0.00147953,4088.0],[1570828560000,0.00147953,0.00147953,0.00147953,0.00147953,0.0],[1570828620000,0.00147953,0.00147953,0.00147953,0.00147953,0.0],[1570828680000,0.00148241,0.00148244,0.00148241,0.00148244,675.0],[1570828740000,0.00148244,0.00148244,0.00148244,0.00148244,0.0],[1570828800000,0.00148244,0.00148244,0.00148244,0.00148244,773.0],[1570828860000,0.00147974,0.00147974,0.00147882,0.00147882,1247.0],[1570828920000,0.00147882,0.00147882,0.00147882,0.00147882,0.0],[1570828980000,0.0014789,0.0014789,0.00147852,0.00147852,46.0],[1570829040000,0.00147852,0.00147852,0.00147852,0.00147852,0.0],[1570829100000,0.00147852,0.00147852,0.00147852,0.00147852,0.0],[1570829160000,0.00148,0.00148,0.00148,0.00148,500.0],[1570829220000,0.00148178,0.00148224,0.00148178,0.00148224,22.0],[1570829280000,0.00148236,0.00148241,0.00148236,0.00148241,2113.0],[1570829340000,0.00148236,0.00148236,0.00148028,0.00148028,489.0],[1570829400000,0.00148028,0.00148028,0.00148028,0.00148028,0.0],[1570829460000,0.00148028,0.00148028,0.00148028,0.00148028,0.0],[1570829520000,0.00148241,0.00148244,0.00148241,0.00148244,209.0],[1570829580000,0.00148081,0.0014845,0.00148081,0.0014845,390.0],[1570829640000,0.0014845,0.0014845,0.0014845,0.0014845,0.0],[1570829700000,0.0014845,0.00148591,0.00148169,0.00148219,999.0],[1570829760000,0.00148231,0.00148632,0.00148231,0.00148632,41.0],[1570829820000,0.00148635,0.00148715,0.00148635,0.00148715,968.0],[1570829880000,0.00148642,0.00148642,0.00148632,0.00148632,42.0],[1570829940000,0.00148632,0.00148632,0.00148632,0.00148632,347.0],[1570830000000,0.00148715,0.00148888,0.00148715,0.00148888,1920.0],[1570830060000,0.00148888,0.00148888,0.00148888,0.00148888,0.0],[1570830120000,0.00148501,0.00148501,0.00148273,0.00148273,3150.0],[1570830180000,0.00148273,0.00148273,0.00148273,0.00148273,0.0],[1570830240000,0.00148273,0.00148273,0.00148273,0.00148273,0.0],[1570830300000,0.00148329,0.00148699,0.00148329,0.00148699,414.0],[1570830360000,0.00148699,0.00148795,0.00148699,0.00148795,30.0],[1570830420000,0.00148795,0.00148795,0.00148795,0.00148795,0.0],[1570830480000,0.00148372,0.00148372,0.00148317,0.00148317,31.0],[1570830540000,0.00148317,0.00148317,0.00148317,0.00148317,15.0],[1570830600000,0.00148412,0.00148605,0.00148317,0.00148605,1240.0],[1570830660000,0.00148605,0.00148605,0.00148605,0.00148605,0.0],[1570830720000,0.00148605,0.00148605,0.00148605,0.00148605,0.0],[1570830780000,0.00148318,0.00148318,0.00148318,0.00148318,1000.0],[1570830840000,0.00148315,0.00148315,0.00148135,0.00148135,501.0],[1570830900000,0.00148135,0.00148135,0.00148135,0.00148135,69.0],[1570830960000,0.00148435,0.00148437,0.00148435,0.00148437,693.0],[1570831020000,0.00148158,0.00148158,0.0014796,0.0014796,738.0],[1570831080000,0.0014796,0.0014796,0.0014796,0.0014796,0.0],[1570831140000,0.00147953,0.00147953,0.00147953,0.00147953,14.0],[1570831200000,0.00147953,0.00147953,0.00147889,0.00147953,6166.0],[1570831260000,0.00147889,0.00147953,0.00147852,0.00147953,1429.0],[1570831320000,0.00147953,0.00147953,0.00147953,0.00147953,0.0],[1570831380000,0.00148235,0.00148236,0.00148229,0.0014823,2287.0],[1570831440000,0.00148234,0.00148235,0.00147984,0.00147984,859.0],[1570831500000,0.00148236,0.00148236,0.00147984,0.00147984,1905.0],[1570831560000,0.00147858,0.00147858,0.00147858,0.00147858,16.0],[1570831620000,0.00147858,0.00147858,0.00147858,0.00147858,0.0],[1570831680000,0.00147858,0.00147858,0.00147858,0.00147858,0.0],[1570831740000,0.00147858,0.00147858,0.00147858,0.00147858,0.0],[1570831800000,0.00147852,0.00147852,0.00147851,0.00147851,99.0],[1570831860000,0.00147812,0.00147812,0.00147759,0.00147759,25.0],[1570831920000,0.00148063,0.00148064,0.00148062,0.00148064,9982.0],[1570831980000,0.00147767,0.00147767,0.00147723,0.00147723,30.0],[1570832040000,0.00147724,0.00147724,0.00147724,0.00147724,14.0],[1570832100000,0.00147723,0.00147723,0.00147591,0.00147591,3047.0],[1570832160000,0.00147591,0.00147591,0.00147591,0.00147591,0.0],[1570832220000,0.00147591,0.00147591,0.00147591,0.00147591,0.0],[1570832280000,0.00147641,0.00147641,0.00147641,0.00147641,481.0],[1570832340000,0.00147641,0.00147641,0.00147641,0.00147641,0.0],[1570832400000,0.00147641,0.00147641,0.00147641,0.00147641,10.0],[1570832460000,0.00147965,0.00147965,0.00147965,0.00147965,10.0],[1570832520000,0.00147965,0.00147965,0.00147965,0.00147965,0.0],[1570832580000,0.00147806,0.00147806,0.00147806,0.00147806,459.0],[1570832640000,0.00147806,0.00147806,0.00147806,0.00147806,81.0],[1570832700000,0.00147975,0.00147994,0.00147643,0.00147643,3462.0],[1570832760000,0.00147654,0.00147669,0.00147654,0.00147669,30.0],[1570832820000,0.00147669,0.00147669,0.00147669,0.00147669,0.0],[1570832880000,0.00147669,0.00147669,0.00147669,0.00147669,0.0],[1570832940000,0.00147669,0.00147669,0.00147669,0.00147669,0.0],[1570833000000,0.00147893,0.00147893,0.00147824,0.00147824,810.0],[1570833060000,0.00147824,0.00147824,0.00147824,0.00147824,0.0],[1570833120000,0.00147824,0.00147824,0.00147824,0.00147824,0.0],[1570833180000,0.00147824,0.00147824,0.00147824,0.00147824,0.0],[1570833240000,0.00147824,0.00147824,0.00147824,0.00147824,0.0],[1570833300000,0.00147651,0.00147651,0.00147651,0.00147651,66.0],[1570833360000,0.00147651,0.00147651,0.00147651,0.00147651,0.0],[1570833420000,0.00147651,0.00147651,0.00147651,0.00147651,0.0],[1570833480000,0.00147649,0.00147649,0.00147636,0.00147636,125.0],[1570833540000,0.00147636,0.00147636,0.00147636,0.00147636,14.0],[1570833600000,0.00147636,0.00147636,0.00147636,0.00147636,34.0],[1570833660000,0.00147636,0.00147641,0.00147513,0.00147641,3636.0],[1570833720000,0.00147641,0.00147641,0.00147641,0.00147641,0.0],[1570833780000,0.00147641,0.00147641,0.00147641,0.00147641,70.0],[1570833840000,0.00147641,0.00147641,0.00147641,0.00147641,0.0],[1570833900000,0.00147641,0.00147641,0.00147641,0.00147641,0.0],[1570833960000,0.00147641,0.00147641,0.00147641,0.00147641,0.0],[1570834020000,0.001478,0.001478,0.001478,0.001478,546.0],[1570834080000,0.001478,0.001478,0.001478,0.001478,0.0],[1570834140000,0.0014783,0.00147831,0.0014783,0.00147831,523.0],[1570834200000,0.00147831,0.00147831,0.00147831,0.00147831,0.0],[1570834260000,0.00147665,0.00147665,0.00147502,0.00147502,1501.0],[1570834320000,0.00147502,0.00147502,0.00147502,0.00147502,0.0],[1570834380000,0.00147502,0.00147502,0.00147502,0.00147502,0.0],[1570834440000,0.00147832,0.00147832,0.00147832,0.00147832,2.0],[1570834500000,0.00147832,0.00147861,0.00147832,0.00147861,132.0],[1570834560000,0.00147949,0.00147949,0.00147949,0.00147949,2.0],[1570834620000,0.00147949,0.00147949,0.00147949,0.00147949,0.0],[1570834680000,0.00147949,0.00147949,0.00147949,0.00147949,133.0],[1570834740000,0.0014796,0.00148,0.0014796,0.00148,469.0],[1570834800000,0.00148023,0.00148048,0.00148023,0.00148048,1135.0],[1570834860000,0.00148048,0.00148048,0.00148048,0.00148048,0.0],[1570834920000,0.00148097,0.00148163,0.00148097,0.00148163,714.0],[1570834980000,0.00147892,0.00147892,0.00147892,0.00147892,16.0],[1570835040000,0.00147914,0.00147947,0.00147914,0.00147947,32.0],[1570835100000,0.00147947,0.00147947,0.00147947,0.00147947,0.0],[1570835160000,0.00147947,0.00147947,0.00147947,0.00147947,0.0],[1570835220000,0.00148236,0.0014824,0.00148236,0.0014824,649.0],[1570835280000,0.0014824,0.0014824,0.0014824,0.0014824,0.0],[1570835340000,0.00147984,0.00147984,0.00147984,0.00147984,19.0],[1570835400000,0.00148286,0.00148286,0.00148286,0.00148286,85.0],[1570835460000,0.00148286,0.00148286,0.00148286,0.00148286,0.0],[1570835520000,0.00148286,0.00148286,0.00148286,0.00148286,0.0],[1570835580000,0.00148286,0.00148286,0.00148286,0.00148286,0.0],[1570835640000,0.00148286,0.00148286,0.00148286,0.00148286,0.0],[1570835700000,0.00148286,0.00148286,0.00148286,0.00148286,0.0],[1570835760000,0.00147947,0.00147956,0.00147947,0.00147956,45.0],[1570835820000,0.00147956,0.00147956,0.00147956,0.00147956,0.0],[1570835880000,0.00147956,0.00147956,0.00147956,0.00147956,0.0],[1570835940000,0.00147956,0.00147956,0.00147956,0.00147956,0.0],[1570836000000,0.00147954,0.00147954,0.00147954,0.00147954,7.0],[1570836060000,0.00147954,0.00147954,0.00147954,0.00147954,0.0],[1570836120000,0.00147954,0.00147954,0.00147954,0.00147954,0.0],[1570836180000,0.00147954,0.00147954,0.00147954,0.00147954,0.0],[1570836240000,0.00147954,0.00147954,0.00147954,0.00147954,0.0],[1570836300000,0.00148276,0.00148276,0.00148276,0.00148276,43.0],[1570836360000,0.00148235,0.00148235,0.00148235,0.00148235,339.0],[1570836420000,0.00148182,0.00148182,0.00148182,0.00148182,402.0],[1570836480000,0.00147941,0.00147941,0.00147757,0.00147757,27.0],[1570836540000,0.00147763,0.00147768,0.00147763,0.00147768,31.0],[1570836600000,0.00147768,0.00147768,0.00147768,0.00147768,0.0],[1570836660000,0.00147965,0.00148255,0.00147965,0.00148255,272.0],[1570836720000,0.00148255,0.00148255,0.00148255,0.00148255,0.0],[1570836780000,0.00148255,0.00148255,0.00148255,0.00148255,0.0],[1570836840000,0.00147817,0.00147817,0.00147817,0.00147817,500.0],[1570836900000,0.00148121,0.00148121,0.00148121,0.00148121,2.0],[1570836960000,0.00148121,0.00148121,0.00148121,0.00148121,0.0],[1570837020000,0.00148111,0.00148111,0.00148111,0.00148111,53.0],[1570837080000,0.00148111,0.00148111,0.00148111,0.00148111,0.0],[1570837140000,0.00148111,0.00148111,0.00148111,0.00148111,0.0],[1570837200000,0.00148116,0.00148123,0.00148116,0.00148123,364.0],[1570837260000,0.00148123,0.00148123,0.0014787,0.00147874,51.0],[1570837320000,0.00147874,0.00147874,0.00147874,0.00147874,0.0],[1570837380000,0.00148,0.00148,0.00148,0.00148,672.0],[1570837440000,0.00148,0.00148,0.00148,0.00148,0.0],[1570837500000,0.00148,0.00148,0.00148,0.00148,4228.0],[1570837560000,0.00147773,0.00147773,0.00147772,0.00147772,387.0],[1570837620000,0.00147792,0.00147792,0.00147649,0.00147649,1037.0],[1570837680000,0.00147649,0.00147649,0.00147649,0.00147649,0.0],[1570837740000,0.00148128,0.00148128,0.00148128,0.00148128,283.0],[1570837800000,0.00148128,0.00148128,0.00148128,0.00148128,0.0],[1570837860000,0.00148269,0.0014827,0.00148269,0.0014827,189.0],[1570837920000,0.0014827,0.00148288,0.0014827,0.00148288,599.0],[1570837980000,0.00148026,0.00148026,0.00147986,0.00147986,14.0],[1570838040000,0.00147987,0.00147991,0.00147987,0.00147991,31.0],[1570838100000,0.00147991,0.00147991,0.00147991,0.00147991,0.0],[1570838160000,0.00147991,0.00147991,0.00147991,0.00147991,0.0],[1570838220000,0.00147991,0.00147991,0.00147991,0.00147991,0.0],[1570838280000,0.00147991,0.00147991,0.00147991,0.00147991,0.0],[1570838340000,0.00147991,0.00147991,0.00147991,0.00147991,0.0],[1570838400000,0.00148021,0.00148021,0.00147986,0.00147986,609.0],[1570838460000,0.00147787,0.00147787,0.00147787,0.00147787,230.0],[1570838520000,0.00147787,0.00147787,0.00147787,0.00147787,0.0],[1570838580000,0.00147842,0.00147842,0.00147842,0.00147842,1659.0],[1570838640000,0.00147842,0.00147842,0.00147842,0.00147842,0.0],[1570838700000,0.00147842,0.00147842,0.00147842,0.00147842,0.0],[1570838760000,0.00147842,0.00147842,0.00147842,0.00147842,0.0],[1570838820000,0.00147842,0.00147842,0.00147842,0.00147842,0.0],[1570838880000,0.00147953,0.00147953,0.00147914,0.00147914,415.0],[1570838940000,0.00147914,0.00147914,0.00147914,0.00147914,0.0],[1570839000000,0.00147923,0.00147923,0.00147923,0.00147923,4055.0],[1570839060000,0.00148003,0.00148003,0.00148003,0.00148003,1150.0],[1570839120000,0.00147835,0.0014812,0.0014783,0.0014783,1057.0],[1570839180000,0.0014783,0.00148084,0.0014783,0.00148084,227.0],[1570839240000,0.00148084,0.00148084,0.00148084,0.00148084,0.0],[1570839300000,0.00148084,0.00148084,0.00148084,0.00148084,0.0],[1570839360000,0.00148084,0.00148084,0.00148084,0.00148084,0.0],[1570839420000,0.00147665,0.00147665,0.00147649,0.00147649,57.0],[1570839480000,0.00147649,0.00147649,0.00147649,0.00147649,0.0],[1570839540000,0.00147649,0.00147649,0.00147649,0.00147649,0.0],[1570839600000,0.00147729,0.00147729,0.00147729,0.00147729,540.0],[1570839660000,0.00147729,0.00147729,0.00147729,0.00147729,0.0],[1570839720000,0.00147649,0.00147649,0.00147648,0.00147648,239.0],[1570839780000,0.00147648,0.00147648,0.00147648,0.00147648,0.0],[1570839840000,0.00147648,0.00147648,0.00147648,0.00147648,0.0],[1570839900000,0.00147648,0.00147648,0.00147648,0.00147648,19.0],[1570839960000,0.00147648,0.00147648,0.00147648,0.00147648,0.0],[1570840020000,0.00147948,0.00147948,0.00147948,0.00147948,2.0],[1570840080000,0.00147562,0.00147562,0.00147445,0.00147445,951.0],[1570840140000,0.00147445,0.00147445,0.00147445,0.00147445,0.0],[1570840200000,0.00147445,0.00147445,0.00147445,0.00147445,0.0],[1570840260000,0.00147452,0.00147471,0.00147452,0.00147471,121.0],[1570840320000,0.00147474,0.00147474,0.00147473,0.00147473,500.0],[1570840380000,0.00147476,0.00147534,0.00147476,0.00147534,536.0],[1570840440000,0.00147534,0.00147534,0.00147534,0.00147534,0.0],[1570840500000,0.00147534,0.00147534,0.00147534,0.00147534,20.0],[1570840560000,0.00147534,0.00147534,0.00147534,0.00147534,0.0],[1570840620000,0.00147483,0.00147483,0.00147483,0.00147483,271.0],[1570840680000,0.00147442,0.00147442,0.00147387,0.00147387,809.0],[1570840740000,0.0014738,0.00147617,0.00147347,0.00147617,352.0],[1570840800000,0.00147574,0.00147574,0.00147574,0.00147574,26.0],[1570840860000,0.00147574,0.00147574,0.00147574,0.00147574,0.0],[1570840920000,0.00147317,0.00147317,0.00147307,0.00147307,56.0],[1570840980000,0.00147244,0.00147244,0.00147233,0.00147233,16.0],[1570841040000,0.0014724,0.00147357,0.0014724,0.00147356,716.0],[1570841100000,0.00147246,0.00147568,0.00147246,0.00147568,27.0],[1570841160000,0.00147259,0.00147259,0.00147259,0.00147259,16.0],[1570841220000,0.00147259,0.00147259,0.00147259,0.00147259,0.0],[1570841280000,0.00147564,0.00147564,0.00147564,0.00147564,7.0],[1570841340000,0.00147289,0.00147564,0.00147289,0.00147564,94.0],[1570841400000,0.00147564,0.00147574,0.00147326,0.00147574,556.0],[1570841460000,0.00147574,0.00147574,0.00147574,0.00147574,8.0],[1570841520000,0.00147574,0.00147574,0.00147574,0.00147574,859.0],[1570841580000,0.00147639,0.00147645,0.00147639,0.00147645,256.0],[1570841640000,0.00147645,0.00147645,0.00147645,0.00147645,0.0],[1570841700000,0.00147645,0.00147645,0.00147645,0.00147645,0.0],[1570841760000,0.00147707,0.00147707,0.00147463,0.00147463,37.0],[1570841820000,0.00147738,0.00147738,0.00147738,0.00147738,30.0],[1570841880000,0.00147647,0.00147759,0.00147609,0.00147759,622.0],[1570841940000,0.00147759,0.00147759,0.00147759,0.00147759,0.0],[1570842000000,0.00147852,0.00147852,0.00147852,0.00147852,132.0],[1570842060000,0.00147852,0.00147852,0.00147852,0.00147852,0.0],[1570842120000,0.00147852,0.00147852,0.00147852,0.00147852,0.0],[1570842180000,0.00147852,0.00147852,0.00147852,0.00147852,0.0],[1570842240000,0.00147852,0.00147852,0.00147852,0.00147852,0.0],[1570842300000,0.00147852,0.00147852,0.00147852,0.00147852,0.0],[1570842360000,0.00147852,0.00147852,0.00147852,0.00147852,0.0],[1570842420000,0.00147625,0.00147625,0.00147625,0.00147625,9.0],[1570842480000,0.00147852,0.00147852,0.00147698,0.00147698,306.0],[1570842540000,0.00147852,0.00148027,0.00147852,0.00148027,4370.0],[1570842600000,0.00147677,0.00148035,0.00147677,0.00147694,74.0],[1570842660000,0.00147703,0.00147707,0.00147703,0.00147707,66.0],[1570842720000,0.00148035,0.0014819,0.00148035,0.0014819,2408.0],[1570842780000,0.00148203,0.00148213,0.00148203,0.00148213,143.0],[1570842840000,0.00148287,0.00148323,0.00148287,0.00148323,325.0],[1570842900000,0.00148335,0.00148335,0.00148335,0.00148335,2.0],[1570842960000,0.00148335,0.00148335,0.00148335,0.00148335,0.0],[1570843020000,0.00148335,0.00148335,0.00148335,0.00148335,2.0],[1570843080000,0.00148335,0.00148552,0.00148125,0.00148183,18437.0],[1570843140000,0.0014856,0.0014856,0.0014852,0.0014852,437.0],[1570843200000,0.0014852,0.0014852,0.0014852,0.0014852,0.0],[1570843260000,0.00148158,0.00148158,0.00148158,0.00148158,16.0],[1570843320000,0.00148551,0.0014856,0.00148551,0.0014856,4.0],[1570843380000,0.00148193,0.00148209,0.00148193,0.00148209,120.0],[1570843440000,0.00148209,0.00148209,0.00148209,0.00148209,0.0],[1570843500000,0.0014856,0.00148617,0.0014856,0.00148617,1654.0],[1570843560000,0.00148427,0.00148427,0.00148427,0.00148427,1226.0],[1570843620000,0.00148617,0.00148617,0.00148617,0.00148617,37.0],[1570843680000,0.00148617,0.00148617,0.00148617,0.00148617,0.0],[1570843740000,0.00148617,0.00148617,0.00148617,0.00148617,0.0],[1570843800000,0.00148426,0.00148426,0.00148426,0.00148426,134.0],[1570843860000,0.00148251,0.00148582,0.00148251,0.00148582,648.0],[1570843920000,0.00148617,0.0014875,0.00148617,0.0014875,440.0],[1570843980000,0.00148714,0.00148714,0.00148267,0.00148267,417.0],[1570844040000,0.00148267,0.00148267,0.00148267,0.00148267,0.0],[1570844100000,0.00148303,0.00148303,0.00148303,0.00148303,16.0],[1570844160000,0.00148395,0.0014878,0.00148395,0.0014878,56.0],[1570844220000,0.0014878,0.0014878,0.0014878,0.0014878,0.0],[1570844280000,0.0014878,0.0014878,0.0014878,0.0014878,0.0],[1570844340000,0.0014878,0.0014878,0.0014878,0.0014878,0.0],[1570844400000,0.0014878,0.0014878,0.0014878,0.0014878,0.0],[1570844460000,0.00148528,0.00148763,0.00148528,0.00148763,543.0],[1570844520000,0.00148763,0.00148763,0.00148763,0.00148763,0.0],[1570844580000,0.00148683,0.00148683,0.00148683,0.00148683,3210.0],[1570844640000,0.00148684,0.00148684,0.00148684,0.00148684,134.0],[1570844700000,0.00148684,0.00148684,0.00148684,0.00148684,0.0],[1570844760000,0.00148433,0.00148433,0.00148433,0.00148433,15.0],[1570844820000,0.00148433,0.00148433,0.00148433,0.00148433,0.0],[1570844880000,0.00148391,0.00148391,0.00148186,0.00148186,44.0],[1570844940000,0.00148195,0.00148195,0.00148195,0.00148195,567.0],[1570845000000,0.00148195,0.00148195,0.00148195,0.00148195,0.0],[1570845060000,0.00148195,0.00148195,0.00148195,0.00148195,0.0],[1570845120000,0.00148195,0.00148195,0.00148195,0.00148195,0.0],[1570845180000,0.00148195,0.00148195,0.00148195,0.00148195,0.0],[1570845240000,0.00148195,0.00148195,0.00148195,0.00148195,0.0],[1570845300000,0.00148195,0.00148195,0.00148195,0.00148195,0.0],[1570845360000,0.00148207,0.00148207,0.00148132,0.00148132,34965.0],[1570845420000,0.00148132,0.00148132,0.00148132,0.00148132,0.0],[1570845480000,0.00148492,0.00148492,0.00148492,0.00148492,1013.0],[1570845540000,0.00148254,0.00148317,0.00148254,0.00148254,1342.0],[1570845600000,0.0014841,0.001485,0.00148134,0.001485,286.0],[1570845660000,0.0014817,0.0014817,0.0014817,0.0014817,15.0],[1570845720000,0.0014817,0.0014817,0.0014817,0.0014817,0.0],[1570845780000,0.00148177,0.00148177,0.00148117,0.00148119,1616.0],[1570845840000,0.00148214,0.00148214,0.00148117,0.00148117,988.0],[1570845900000,0.0014837,0.0014837,0.0014837,0.0014837,4.0],[1570845960000,0.0014837,0.0014837,0.0014837,0.0014837,130.0],[1570846020000,0.0014837,0.0014837,0.0014837,0.0014837,0.0],[1570846080000,0.0014837,0.0014837,0.0014837,0.0014837,0.0],[1570846140000,0.0014837,0.0014837,0.0014837,0.0014837,0.0],[1570846200000,0.00148366,0.00148366,0.00148366,0.00148366,543.0],[1570846260000,0.00147986,0.00147986,0.00147986,0.00147986,15.0],[1570846320000,0.00147905,0.00147905,0.00147905,0.00147905,22.0],[1570846380000,0.00147916,0.00147918,0.00147916,0.00147918,36.0],[1570846440000,0.00147918,0.00147918,0.00147918,0.00147918,0.0],[1570846500000,0.00147918,0.00147918,0.00147918,0.00147918,0.0],[1570846560000,0.00147918,0.00147918,0.00147918,0.00147918,0.0],[1570846620000,0.00147918,0.00147918,0.00147918,0.00147918,0.0],[1570846680000,0.00147918,0.00147918,0.00147918,0.00147918,0.0],[1570846740000,0.00147918,0.00147918,0.00147918,0.00147918,0.0],[1570846800000,0.0014837,0.00148496,0.00148364,0.00148496,696.0],[1570846860000,0.00148496,0.001485,0.00148424,0.001485,3822.0],[1570846920000,0.001485,0.001485,0.001485,0.001485,0.0],[1570846980000,0.001485,0.001485,0.001485,0.001485,0.0],[1570847040000,0.00148207,0.001485,0.00148207,0.001485,495.0],[1570847100000,0.00148549,0.00148601,0.001483,0.001483,687.0],[1570847160000,0.00148304,0.00148305,0.00148304,0.00148305,363.0],[1570847220000,0.00148623,0.00148688,0.00148623,0.00148688,4778.0],[1570847280000,0.00148721,0.00148889,0.00148721,0.00148889,4196.0],[1570847340000,0.00148942,0.00148942,0.00148669,0.00148669,245.0],[1570847400000,0.00148982,0.00148982,0.00148623,0.00148978,98.0],[1570847460000,0.00148978,0.00148978,0.00148978,0.00148978,0.0],[1570847520000,0.00148978,0.00148978,0.00148978,0.00148978,11.0],[1570847580000,0.00148982,0.00149097,0.00148982,0.00149097,87.0],[1570847640000,0.00149097,0.00149097,0.00149097,0.00149097,0.0],[1570847700000,0.00149138,0.00149138,0.00148441,0.00148441,2287.0],[1570847760000,0.0014844,0.0014844,0.0014833,0.0014833,925.0],[1570847820000,0.00148323,0.00148323,0.00148093,0.00148093,1219.0],[1570847880000,0.001481,0.001481,0.00148093,0.00148093,32.0],[1570847940000,0.00148093,0.00148093,0.00148093,0.00148093,0.0],[1570848000000,0.00148093,0.00148093,0.00148093,0.00148093,0.0],[1570848060000,0.00148093,0.00148093,0.00148093,0.00148093,0.0],[1570848120000,0.00148093,0.00148093,0.00148093,0.00148093,0.0],[1570848180000,0.0014856,0.0014856,0.0014856,0.0014856,2.0],[1570848240000,0.00148328,0.00148328,0.00148328,0.00148328,21.0],[1570848300000,0.00148328,0.00148328,0.00148328,0.00148328,0.0],[1570848360000,0.00148328,0.00148328,0.00148328,0.00148328,0.0],[1570848420000,0.00148328,0.00148328,0.00148328,0.00148328,0.0],[1570848480000,0.00148328,0.00148328,0.00148328,0.00148328,0.0],[1570848540000,0.00148359,0.00148654,0.00148359,0.00148654,37.0],[1570848600000,0.00148358,0.00148412,0.00148093,0.00148093,934.0],[1570848660000,0.00148093,0.00148093,0.0014787,0.0014787,2484.0],[1570848720000,0.0014787,0.0014787,0.0014787,0.0014787,0.0],[1570848780000,0.0014787,0.0014787,0.0014787,0.0014787,0.0],[1570848840000,0.00148462,0.00148462,0.00148462,0.00148462,2.0],[1570848900000,0.00148462,0.00148462,0.00148462,0.00148462,0.0],[1570848960000,0.00148419,0.00148419,0.00148419,0.00148419,18.0],[1570849020000,0.00148419,0.00148419,0.00148419,0.00148419,0.0],[1570849080000,0.00148419,0.00148419,0.00148419,0.00148419,0.0],[1570849140000,0.00148,0.00148,0.00148,0.00148,36.0],[1570849200000,0.00147853,0.00147853,0.00147852,0.00147852,754.0],[1570849260000,0.00147851,0.00147851,0.00147788,0.00147788,664.0],[1570849320000,0.00147788,0.00147788,0.00147788,0.00147788,0.0],[1570849380000,0.00147788,0.00147788,0.00147788,0.00147788,18.0],[1570849440000,0.00147788,0.00147788,0.00147695,0.00147695,234.0],[1570849500000,0.00148054,0.00148054,0.00148054,0.00148054,7638.0],[1570849560000,0.00148012,0.00148012,0.00148012,0.00148012,1215.0],[1570849620000,0.00148297,0.00148297,0.00148297,0.00148297,2.0],[1570849680000,0.00148297,0.00148297,0.00148297,0.00148297,0.0],[1570849740000,0.00148297,0.00148297,0.00148297,0.00148297,0.0],[1570849800000,0.00148031,0.00148031,0.00148031,0.00148031,257.0],[1570849860000,0.00148031,0.00148031,0.00148031,0.00148031,0.0],[1570849920000,0.00148301,0.00148375,0.00148301,0.00148375,673.0],[1570849980000,0.00148375,0.00148375,0.00148375,0.00148375,0.0],[1570850040000,0.00148375,0.00148559,0.00148112,0.00148558,3339.0],[1570850100000,0.00148172,0.00148172,0.00148172,0.00148172,22.0],[1570850160000,0.00148089,0.0014809,0.00148089,0.0014809,65.0],[1570850220000,0.0014809,0.0014809,0.0014809,0.0014809,0.0],[1570850280000,0.0014809,0.0014809,0.0014809,0.0014809,0.0],[1570850340000,0.0014809,0.0014809,0.0014809,0.0014809,0.0],[1570850400000,0.0014809,0.0014809,0.0014809,0.0014809,0.0],[1570850460000,0.00148271,0.00148271,0.00148155,0.00148155,391.0],[1570850520000,0.00148155,0.00148155,0.00148155,0.00148155,0.0],[1570850580000,0.00148155,0.00148155,0.00148155,0.00148155,0.0],[1570850640000,0.00148155,0.00148155,0.00148155,0.00148155,20.0],[1570850700000,0.00148215,0.00148215,0.00148214,0.00148214,402.0],[1570850760000,0.00148155,0.00148155,0.00148155,0.00148155,18.0],[1570850820000,0.00148155,0.00148155,0.00148155,0.00148155,0.0],[1570850880000,0.00148166,0.00148166,0.00148166,0.00148166,19.0],[1570850940000,0.00148171,0.00148171,0.00148168,0.00148168,16.0],[1570851000000,0.00148371,0.00148371,0.00148371,0.00148371,174.0],[1570851060000,0.00148459,0.00148501,0.00148459,0.00148501,298.0],[1570851120000,0.00148501,0.00148501,0.00148501,0.00148501,0.0],[1570851180000,0.00148501,0.00148501,0.00148501,0.00148501,0.0],[1570851240000,0.00148501,0.00148501,0.00148501,0.00148501,0.0],[1570851300000,0.00148501,0.00148501,0.00148501,0.00148501,0.0],[1570851360000,0.00148501,0.00148501,0.00148501,0.00148501,0.0],[1570851420000,0.00148501,0.00148501,0.00148501,0.00148501,0.0],[1570851480000,0.00148501,0.00148501,0.00148501,0.00148501,0.0],[1570851540000,0.00148498,0.00148624,0.00148257,0.00148624,333.0],[1570851600000,0.00148624,0.00148624,0.00148624,0.00148624,0.0],[1570851660000,0.00148417,0.00148417,0.00148417,0.00148417,36.0],[1570851720000,0.00148417,0.00148417,0.00148417,0.00148417,0.0],[1570851780000,0.00148417,0.00148417,0.00148417,0.00148417,0.0],[1570851840000,0.00148417,0.00148417,0.00148417,0.00148417,0.0],[1570851900000,0.00148417,0.00148417,0.00148417,0.00148417,0.0],[1570851960000,0.00148418,0.00148418,0.00148418,0.00148418,23.0],[1570852020000,0.00148418,0.00148418,0.00148418,0.00148418,0.0],[1570852080000,0.00148418,0.00148418,0.00148418,0.00148418,0.0],[1570852140000,0.00148418,0.00148418,0.00148418,0.00148418,0.0],[1570852200000,0.00148418,0.00148418,0.00148418,0.00148418,0.0],[1570852260000,0.00148425,0.00148425,0.00148425,0.00148425,18.0],[1570852320000,0.00148425,0.00148425,0.00148425,0.00148425,0.0],[1570852380000,0.00148428,0.00148428,0.00148428,0.00148428,17.0],[1570852440000,0.00148436,0.00148445,0.00148426,0.00148426,4227.0],[1570852500000,0.001485,0.00148707,0.00148418,0.00148418,30366.0],[1570852560000,0.00148418,0.00148418,0.00148417,0.00148417,5838.0],[1570852620000,0.00148417,0.00148417,0.00148417,0.00148417,0.0],[1570852680000,0.00148417,0.00148417,0.00148417,0.00148417,0.0],[1570852740000,0.00148299,0.00148303,0.00148299,0.00148303,3204.0],[1570852800000,0.00148369,0.00148369,0.00148369,0.00148369,6252.0],[1570852860000,0.00148377,0.00148712,0.00148361,0.00148712,9719.0],[1570852920000,0.00148672,0.00148674,0.00148348,0.00148348,13299.0],[1570852980000,0.00148348,0.00148348,0.00148348,0.00148348,0.0],[1570853040000,0.00148272,0.00148272,0.00148272,0.00148272,18.0],[1570853100000,0.00148272,0.00148272,0.00148272,0.00148272,0.0],[1570853160000,0.00148279,0.00148279,0.00148157,0.00148157,2421.0],[1570853220000,0.00148155,0.00148155,0.00148155,0.00148155,43.0],[1570853280000,0.00148117,0.00148117,0.00148117,0.00148117,136.0],[1570853340000,0.00148117,0.00148117,0.00148117,0.00148117,0.0],[1570853400000,0.00148317,0.00148317,0.00148317,0.00148317,2.0],[1570853460000,0.00148317,0.00148317,0.00148317,0.00148317,0.0],[1570853520000,0.00148338,0.00148415,0.00148338,0.00148415,801.0],[1570853580000,0.00148415,0.00148415,0.00148415,0.00148415,0.0],[1570853640000,0.00148415,0.00148415,0.00148415,0.00148415,0.0],[1570853700000,0.00148255,0.00148255,0.00148255,0.00148255,30.0],[1570853760000,0.00148258,0.00148258,0.00148255,0.00148255,66.0],[1570853820000,0.00148255,0.00148475,0.0014792,0.00148475,2851.0],[1570853880000,0.00147948,0.00147948,0.0014787,0.0014787,39.0],[1570853940000,0.00147855,0.00148225,0.00147855,0.00147858,88.0],[1570854000000,0.00148215,0.00148215,0.00148215,0.00148215,2.0],[1570854060000,0.00148215,0.00148215,0.00148215,0.00148215,0.0],[1570854120000,0.00148214,0.00148214,0.00148214,0.00148214,101.0],[1570854180000,0.00148214,0.00148214,0.00148214,0.00148214,0.0],[1570854240000,0.00148214,0.00148214,0.00148214,0.00148214,0.0],[1570854300000,0.00148242,0.00148365,0.00147908,0.00148365,205.0],[1570854360000,0.00148365,0.00148365,0.00148365,0.00148365,0.0],[1570854420000,0.00148365,0.00148365,0.00148365,0.00148365,0.0],[1570854480000,0.00148365,0.00148365,0.00148365,0.00148365,0.0],[1570854540000,0.00147947,0.00148331,0.00147947,0.00148331,40.0],[1570854600000,0.00148317,0.00148317,0.00148062,0.00148062,157.0],[1570854660000,0.00147869,0.00148276,0.00147869,0.00147869,713.0],[1570854720000,0.00147869,0.00147869,0.00147869,0.00147869,0.0],[1570854780000,0.00147869,0.00147869,0.00147869,0.00147869,0.0],[1570854840000,0.0014824,0.0014824,0.0014824,0.0014824,186.0],[1570854900000,0.0014824,0.0014824,0.00147989,0.00147989,361.0],[1570854960000,0.00147989,0.00147989,0.00147989,0.00147989,0.0],[1570855020000,0.00147989,0.00147989,0.00147989,0.00147989,0.0],[1570855080000,0.00147989,0.00147989,0.00147989,0.00147989,0.0],[1570855140000,0.0014824,0.0014824,0.0014824,0.0014824,4783.0],[1570855200000,0.00148365,0.00148365,0.00148365,0.00148365,25.0],[1570855260000,0.0014839,0.0014839,0.00148155,0.0014839,337.0],[1570855320000,0.001485,0.00148563,0.0014821,0.00148563,837.0],[1570855380000,0.00148638,0.00148688,0.00148375,0.00148375,155.0],[1570855440000,0.00148375,0.00148377,0.00148375,0.00148377,529.0],[1570855500000,0.00148377,0.00148377,0.00148377,0.00148377,0.0],[1570855560000,0.00148688,0.00148688,0.00148688,0.00148688,134.0],[1570855620000,0.00148688,0.00148688,0.00148688,0.00148688,0.0],[1570855680000,0.00148688,0.00148688,0.00148688,0.00148688,0.0],[1570855740000,0.00148271,0.00148271,0.00148271,0.00148271,23.0],[1570855800000,0.00148271,0.00148271,0.00148271,0.00148271,0.0],[1570855860000,0.00148535,0.00148535,0.00148126,0.00148126,1903.0],[1570855920000,0.00148131,0.00148131,0.00148128,0.00148128,675.0],[1570855980000,0.00148128,0.00148128,0.00148128,0.00148128,0.0],[1570856040000,0.00148242,0.00148242,0.00148242,0.00148242,268.0],[1570856100000,0.00148242,0.00148242,0.00148242,0.00148242,0.0],[1570856160000,0.00148117,0.00148117,0.00148117,0.00148117,34.0],[1570856220000,0.00148117,0.00148117,0.00148117,0.00148117,74.0],[1570856280000,0.00148117,0.00148117,0.00148117,0.00148117,0.0],[1570856340000,0.00148117,0.00148117,0.00148117,0.00148117,0.0],[1570856400000,0.00148117,0.00148117,0.00148117,0.00148117,0.0],[1570856460000,0.00148117,0.00148117,0.00148117,0.00148117,28.0],[1570856520000,0.00148117,0.00148117,0.00148117,0.00148117,0.0],[1570856580000,0.00148452,0.00148452,0.00148452,0.00148452,2.0],[1570856640000,0.00148242,0.00148242,0.00148242,0.00148242,123.0],[1570856700000,0.00148242,0.00148242,0.00148242,0.00148242,0.0],[1570856760000,0.00148242,0.00148242,0.00148242,0.00148242,0.0],[1570856820000,0.00148237,0.00148237,0.00148237,0.00148237,16.0],[1570856880000,0.00147931,0.00147931,0.00147931,0.00147931,17.0],[1570856940000,0.00147931,0.00147931,0.00147931,0.00147931,17.0],[1570857000000,0.00147931,0.00147931,0.00147931,0.00147931,0.0],[1570857060000,0.00147857,0.00147857,0.00147857,0.00147857,43.0],[1570857120000,0.00147857,0.00147857,0.00147857,0.00147857,0.0],[1570857180000,0.00148185,0.00148185,0.00148185,0.00148185,2.0],[1570857240000,0.00148185,0.00148185,0.00148185,0.00148185,0.0],[1570857300000,0.00148185,0.00148185,0.00148185,0.00148185,0.0],[1570857360000,0.00147944,0.00148186,0.00147943,0.00148186,9693.0],[1570857420000,0.00148237,0.00148237,0.00148237,0.00148237,2744.0],[1570857480000,0.00148329,0.00148395,0.00148267,0.00148329,538.0],[1570857540000,0.001483,0.001483,0.001483,0.001483,18.0],[1570857600000,0.00148325,0.00148325,0.001483,0.001483,70.0],[1570857660000,0.001483,0.00148327,0.001483,0.001483,628.0],[1570857720000,0.001483,0.00148485,0.001483,0.00148485,152.0],[1570857780000,0.00148485,0.00148485,0.00148485,0.00148485,0.0],[1570857840000,0.00148485,0.00148485,0.00148485,0.00148485,0.0],[1570857900000,0.00148524,0.00148524,0.00148524,0.00148524,473.0],[1570857960000,0.00148546,0.00148546,0.00148546,0.00148546,266.0],[1570858020000,0.001485,0.001485,0.001485,0.001485,293.0],[1570858080000,0.00148546,0.00148816,0.00148546,0.00148816,2651.0],[1570858140000,0.00148883,0.00149429,0.00148694,0.00149267,7680.0],[1570858200000,0.00149425,0.00149425,0.00149008,0.00149143,316.0],[1570858260000,0.00149128,0.00149128,0.00149128,0.00149128,122.0],[1570858320000,0.00148815,0.00148815,0.00148815,0.00148815,17.0],[1570858380000,0.00148829,0.001491,0.00148795,0.001491,7180.0],[1570858440000,0.00148797,0.00148797,0.00148795,0.00148795,35.0],[1570858500000,0.00148795,0.00148795,0.00148795,0.00148795,13.0],[1570858560000,0.00148795,0.00148795,0.00148795,0.00148795,0.0],[1570858620000,0.00149032,0.001491,0.00149032,0.001491,941.0],[1570858680000,0.00148894,0.00148894,0.00148894,0.00148894,402.0],[1570858740000,0.00149135,0.00149138,0.00148698,0.0014884,8418.0],[1570858800000,0.0014884,0.0014884,0.0014884,0.0014884,0.0],[1570858860000,0.00148688,0.00148688,0.00148688,0.00148688,136.0],[1570858920000,0.00148688,0.00148688,0.00148688,0.00148688,0.0],[1570858980000,0.00148494,0.00148494,0.00148494,0.00148494,39.0],[1570859040000,0.00148543,0.00148543,0.00148543,0.00148543,16.0],[1570859100000,0.00148543,0.00148543,0.00148543,0.00148543,0.0],[1570859160000,0.00148627,0.00148627,0.00148627,0.00148627,18.0],[1570859220000,0.00148627,0.00148627,0.00148627,0.00148627,19.0],[1570859280000,0.00148627,0.00148627,0.00148627,0.00148627,0.0],[1570859340000,0.00148627,0.0014871,0.00148544,0.00148544,2028.0],[1570859400000,0.00148544,0.00148544,0.00148544,0.00148544,0.0],[1570859460000,0.00148544,0.00148544,0.00148544,0.00148544,0.0],[1570859520000,0.00148544,0.00148544,0.00148537,0.00148537,284.0],[1570859580000,0.00148852,0.00148886,0.00148812,0.00148886,4974.0],[1570859640000,0.00148946,0.0014896,0.00148946,0.0014896,1593.0],[1570859700000,0.00149021,0.00149021,0.00149021,0.00149021,804.0],[1570859760000,0.00149021,0.00149021,0.00149021,0.00149021,0.0],[1570859820000,0.00148786,0.00149021,0.00148786,0.00149021,1395.0],[1570859880000,0.00149096,0.00149109,0.00149096,0.00149109,670.0],[1570859940000,0.00148875,0.00148878,0.00148875,0.00148878,36.0],[1570860000000,0.00148878,0.00148878,0.00148878,0.00148878,0.0],[1570860060000,0.00148878,0.00148878,0.00148878,0.00148878,0.0],[1570860120000,0.00148878,0.00148878,0.00148878,0.00148878,0.0],[1570860180000,0.00148878,0.00148878,0.00148878,0.00148878,0.0],[1570860240000,0.00149162,0.00149162,0.00148866,0.00148866,5545.0],[1570860300000,0.00149162,0.00149162,0.00149162,0.00149162,72.0],[1570860360000,0.00149162,0.00149162,0.00149162,0.00149162,0.0],[1570860420000,0.00149162,0.00149162,0.00149162,0.00149162,0.0],[1570860480000,0.00149162,0.00149162,0.00148813,0.00148813,1680.0],[1570860540000,0.00148904,0.00148904,0.00148904,0.00148904,17.0],[1570860600000,0.00149257,0.00149259,0.00149257,0.00149259,300.0],[1570860660000,0.00149259,0.00149341,0.00148945,0.00148945,1497.0],[1570860720000,0.0014941,0.00149411,0.00148976,0.00149411,93.0],[1570860780000,0.00149411,0.00149425,0.00149411,0.00149425,588.0],[1570860840000,0.00149425,0.00149429,0.00149425,0.00149429,751.0],[1570860900000,0.00149436,0.00149607,0.00149436,0.00149607,802.0],[1570860960000,0.00149609,0.0014965,0.00149343,0.0014965,2251.0],[1570861020000,0.00149651,0.00149679,0.00149424,0.0014945,221.0],[1570861080000,0.00149721,0.00149743,0.00149721,0.00149743,188.0],[1570861140000,0.00149751,0.0014978,0.00149751,0.0014978,171.0],[1570861200000,0.00149545,0.00149555,0.00149545,0.00149548,771.0],[1570861260000,0.00149811,0.00150061,0.00149576,0.00150061,47149.0],[1570861320000,0.00149739,0.00150133,0.00149739,0.00149788,1097.0],[1570861380000,0.00150142,0.00150153,0.00150142,0.00150153,221.0],[1570861440000,0.00150156,0.00150162,0.00149864,0.00149873,676.0],[1570861500000,0.00150142,0.00150238,0.00149939,0.00149939,3678.0],[1570861560000,0.00149939,0.00149939,0.00149939,0.00149939,0.0],[1570861620000,0.00149939,0.00149939,0.00149939,0.00149939,0.0],[1570861680000,0.00149939,0.00149939,0.00149939,0.00149939,0.0],[1570861740000,0.00150238,0.00150297,0.00150054,0.00150054,1255.0],[1570861800000,0.00150054,0.00150054,0.00150054,0.00150054,0.0],[1570861860000,0.00150176,0.00150176,0.00150092,0.00150092,167.0],[1570861920000,0.00150296,0.00150351,0.00150296,0.00150351,17942.0],[1570861980000,0.00150347,0.00150431,0.00150113,0.00150431,1443.0],[1570862040000,0.001505,0.0015079,0.00150225,0.0015023,8734.0],[1570862100000,0.00150803,0.00150803,0.00150237,0.00150801,162.0],[1570862160000,0.00150423,0.00150423,0.00150306,0.00150306,1090.0],[1570862220000,0.00150316,0.00150316,0.00150306,0.00150306,2719.0],[1570862280000,0.0015021,0.0015021,0.0015021,0.0015021,40.0],[1570862340000,0.0015021,0.0015021,0.00150019,0.00150019,10985.0],[1570862400000,0.00150019,0.00150019,0.00149785,0.0015,34376.0],[1570862460000,0.00149794,0.00149804,0.00149794,0.00149804,903.0],[1570862520000,0.00149929,0.00149929,0.00149929,0.00149929,399.0],[1570862580000,0.00149929,0.00149929,0.00149929,0.00149929,0.0],[1570862640000,0.00149929,0.00149929,0.00149929,0.00149929,0.0],[1570862700000,0.00149929,0.00149929,0.00149929,0.00149929,0.0],[1570862760000,0.00149929,0.00149929,0.00149929,0.00149929,0.0],[1570862820000,0.00150219,0.00150219,0.00150219,0.00150219,283.0],[1570862880000,0.00150038,0.00150038,0.00150008,0.00150008,665.0],[1570862940000,0.00150008,0.00150008,0.00150008,0.00150008,386.0],[1570863000000,0.00150008,0.00150008,0.00150008,0.00150008,414.0],[1570863060000,0.00149879,0.00149879,0.00149879,0.00149879,1514.0],[1570863120000,0.00149807,0.00149807,0.00149646,0.00149646,1049.0],[1570863180000,0.00149646,0.00149647,0.00149646,0.00149647,600.0],[1570863240000,0.00149844,0.00149844,0.00149844,0.00149844,256.0],[1570863300000,0.00149844,0.00149844,0.00149844,0.00149844,0.0],[1570863360000,0.00150032,0.00150038,0.00150032,0.00150038,1414.0],[1570863420000,0.00150142,0.00150196,0.00149972,0.00149972,3453.0],[1570863480000,0.00149972,0.00149972,0.00149972,0.00149972,0.0],[1570863540000,0.00150037,0.001501,0.00150037,0.001501,10178.0],[1570863600000,0.0015021,0.0015021,0.00150035,0.00150035,1632.0],[1570863660000,0.00150237,0.00150344,0.00150171,0.00150171,765.0],[1570863720000,0.00150346,0.001504,0.00150295,0.00150295,750.0],[1570863780000,0.00150396,0.00150396,0.00150266,0.00150266,180.0],[1570863840000,0.00150401,0.00150482,0.00150401,0.00150482,991.0],[1570863900000,0.00150482,0.00150482,0.00150482,0.00150482,0.0],[1570863960000,0.00150482,0.00150482,0.00150482,0.00150482,0.0],[1570864020000,0.00150482,0.00150482,0.00150482,0.00150482,0.0],[1570864080000,0.00149871,0.00149871,0.00149694,0.00149694,1358.0],[1570864140000,0.00149694,0.00149694,0.0014947,0.0014947,2200.0],[1570864200000,0.0014947,0.00149653,0.00149429,0.00149653,2881.0],[1570864260000,0.00149653,0.00149653,0.00149653,0.00149653,0.0],[1570864320000,0.00149651,0.00149796,0.00149618,0.00149618,4114.0],[1570864380000,0.00149796,0.00149857,0.00149796,0.00149857,190.0],[1570864440000,0.00149873,0.00150052,0.00149873,0.00150052,1079.0],[1570864500000,0.00150052,0.00150052,0.00150052,0.00150052,0.0],[1570864560000,0.00150052,0.00150052,0.00150052,0.00150052,0.0],[1570864620000,0.0014995,0.0014995,0.0014995,0.0014995,2323.0],[1570864680000,0.0014995,0.0014995,0.0014995,0.0014995,0.0],[1570864740000,0.0014995,0.0014995,0.0014995,0.0014995,0.0],[1570864800000,0.0014995,0.0014995,0.0014995,0.0014995,0.0],[1570864860000,0.00149812,0.00149812,0.00149812,0.00149812,1516.0],[1570864920000,0.00149812,0.00149812,0.00149812,0.00149812,0.0],[1570864980000,0.00149644,0.00149756,0.00149636,0.00149756,1058.0],[1570865040000,0.00149756,0.00149756,0.00149756,0.00149756,0.0],[1570865100000,0.00149777,0.00149777,0.00149777,0.00149777,40.0],[1570865160000,0.00149868,0.00149868,0.00149868,0.00149868,159.0],[1570865220000,0.0014972,0.0014972,0.00149612,0.00149612,3049.0],[1570865280000,0.00149613,0.00149838,0.00149611,0.00149838,6885.0],[1570865340000,0.00149838,0.00149838,0.00149838,0.00149838,1317.0],[1570865400000,0.00149838,0.00149838,0.00149838,0.00149838,0.0],[1570865460000,0.00149943,0.00150035,0.00149943,0.00149973,601.0],[1570865520000,0.00149973,0.00149973,0.00149973,0.00149973,0.0],[1570865580000,0.00149973,0.00149973,0.00149973,0.00149973,0.0],[1570865640000,0.00150034,0.00150034,0.00150034,0.00150034,551.0],[1570865700000,0.00150035,0.00150035,0.00150035,0.00150035,1288.0],[1570865760000,0.00149934,0.00149934,0.00149934,0.00149934,60.0],[1570865820000,0.00149986,0.0015006,0.00149986,0.0015006,3119.0],[1570865880000,0.0015006,0.0015006,0.0015006,0.0015006,0.0],[1570865940000,0.0015006,0.0015006,0.0015006,0.0015006,0.0],[1570866000000,0.0015006,0.0015006,0.0015006,0.0015006,0.0],[1570866060000,0.0015006,0.0015006,0.0015006,0.0015006,0.0],[1570866120000,0.0015006,0.0015006,0.0015006,0.0015006,0.0],[1570866180000,0.00149678,0.00149908,0.00149555,0.00149908,3815.0],[1570866240000,0.00149908,0.00149908,0.00149908,0.00149908,0.0],[1570866300000,0.0014986,0.0014986,0.00149675,0.00149761,266.0],[1570866360000,0.00149761,0.00149761,0.00149761,0.00149761,0.0],[1570866420000,0.00149676,0.00149676,0.00149676,0.00149676,92.0],[1570866480000,0.00149947,0.00149947,0.0014974,0.0014974,794.0],[1570866540000,0.00149768,0.00149768,0.0014974,0.0014974,936.0],[1570866600000,0.001498,0.00149926,0.001498,0.00149802,8894.0],[1570866660000,0.00149802,0.00150001,0.00149802,0.00150001,785.0],[1570866720000,0.00149929,0.00149929,0.00149928,0.00149928,133.0],[1570866780000,0.00149868,0.00149868,0.00149733,0.00149733,8060.0],[1570866840000,0.00149733,0.00149733,0.00149733,0.00149733,0.0],[1570866900000,0.00149673,0.00149673,0.00149606,0.00149606,1776.0],[1570866960000,0.001495,0.001495,0.00149477,0.00149477,30.0],[1570867020000,0.00149477,0.00149477,0.00149477,0.00149477,0.0],[1570867080000,0.00149485,0.00149485,0.00149399,0.00149399,1921.0],[1570867140000,0.00149561,0.00149561,0.00149561,0.00149561,2005.0],[1570867200000,0.0014964,0.0014964,0.00149539,0.00149539,1589.0],[1570867260000,0.00149539,0.00149539,0.00149539,0.00149539,0.0],[1570867320000,0.00149539,0.00149539,0.00149539,0.00149539,0.0],[1570867380000,0.00149478,0.00149478,0.00149478,0.00149478,27.0],[1570867440000,0.00149478,0.00149478,0.00149478,0.00149478,0.0],[1570867500000,0.00149478,0.00149478,0.00149478,0.00149478,0.0],[1570867560000,0.00149478,0.00149478,0.00149478,0.00149478,0.0],[1570867620000,0.00149478,0.00149478,0.00149478,0.00149478,0.0],[1570867680000,0.00149491,0.00149491,0.00149478,0.00149478,16648.0],[1570867740000,0.0014958,0.0014958,0.0014958,0.0014958,15.0],[1570867800000,0.00149698,0.00149698,0.00149621,0.00149621,5031.0],[1570867860000,0.00149663,0.00149663,0.00149663,0.00149663,1514.0],[1570867920000,0.00149585,0.00149585,0.00149575,0.00149575,574.0],[1570867980000,0.00149575,0.00149575,0.00149575,0.00149575,0.0],[1570868040000,0.00149397,0.00149397,0.00149389,0.00149389,13.0],[1570868100000,0.00149584,0.00149584,0.00149584,0.00149584,486.0],[1570868160000,0.00149584,0.00149584,0.00149584,0.00149584,0.0],[1570868220000,0.0014937,0.0014937,0.00149365,0.00149365,14.0],[1570868280000,0.00149365,0.00149456,0.00149336,0.00149394,1741.0],[1570868340000,0.00149455,0.00149961,0.00149455,0.00149696,9526.0],[1570868400000,0.00149488,0.00149488,0.00149448,0.00149448,1600.0],[1570868460000,0.00149448,0.00149448,0.00149448,0.00149448,0.0],[1570868520000,0.0014937,0.0014937,0.0014937,0.0014937,14.0],[1570868580000,0.0014937,0.0014937,0.0014937,0.0014937,73.0],[1570868640000,0.0014937,0.0014937,0.0014937,0.0014937,0.0],[1570868700000,0.0014937,0.0014937,0.0014937,0.0014937,0.0],[1570868760000,0.00149305,0.00149305,0.00149305,0.00149305,14.0],[1570868820000,0.00149305,0.00149305,0.00149305,0.00149305,0.0],[1570868880000,0.00149305,0.00149305,0.00149305,0.00149305,0.0],[1570868940000,0.00149305,0.00149305,0.00149305,0.00149305,0.0],[1570869000000,0.00149302,0.00149302,0.00149302,0.00149302,13.0],[1570869060000,0.00149465,0.00149465,0.00149465,0.00149465,1060.0],[1570869120000,0.00149465,0.00149465,0.00149465,0.00149465,0.0],[1570869180000,0.00149465,0.00149465,0.00149374,0.00149374,17421.0],[1570869240000,0.00149374,0.00149374,0.00149374,0.00149374,0.0],[1570869300000,0.00149374,0.00149374,0.00149374,0.00149374,0.0],[1570869360000,0.00149313,0.00149313,0.00149313,0.00149313,14.0],[1570869420000,0.00149304,0.00149304,0.00149304,0.00149304,211.0],[1570869480000,0.00149464,0.00149725,0.00149364,0.0014957,11652.0],[1570869540000,0.00149468,0.00149601,0.00149468,0.00149601,5457.0],[1570869600000,0.001496,0.00149756,0.001496,0.00149678,57172.0],[1570869660000,0.001498,0.001498,0.00149626,0.00149626,373.0],[1570869720000,0.00149473,0.00149601,0.00149468,0.00149468,36.0],[1570869780000,0.00149601,0.00149687,0.00149601,0.00149639,35.0],[1570869840000,0.00149639,0.00149639,0.00149639,0.00149639,0.0],[1570869900000,0.00149639,0.00149639,0.00149639,0.00149639,0.0],[1570869960000,0.00149518,0.00149523,0.00149315,0.00149523,3070.0],[1570870020000,0.00149391,0.00149391,0.00149303,0.00149379,5204.0],[1570870080000,0.00149303,0.00149303,0.00149303,0.00149303,13.0],[1570870140000,0.00149303,0.00149303,0.00149033,0.00149033,1921.0],[1570870200000,0.00149002,0.00149002,0.00148897,0.00148897,309.0],[1570870260000,0.0014902,0.0014902,0.0014902,0.0014902,9561.0],[1570870320000,0.00149,0.00149,0.00148779,0.00148915,3395.0],[1570870380000,0.00148777,0.00149106,0.00148739,0.00149048,3220.0],[1570870440000,0.00148901,0.00148901,0.00148654,0.00148764,4125.0],[1570870500000,0.00148641,0.00148641,0.0014853,0.0014853,1899.0],[1570870560000,0.00148658,0.00148658,0.00148488,0.00148488,80.0],[1570870620000,0.00148502,0.00148502,0.00148502,0.00148502,14.0],[1570870680000,0.00148654,0.00148654,0.00148654,0.00148654,1931.0],[1570870740000,0.00148576,0.00148576,0.00148576,0.00148576,12.0],[1570870800000,0.00148716,0.00148995,0.00148716,0.00148775,9421.0],[1570870860000,0.00148926,0.00148927,0.00148705,0.00148705,259.0],[1570870920000,0.00148615,0.00148803,0.00148615,0.00148803,21.0],[1570870980000,0.00148804,0.00148931,0.00148804,0.00148931,27.0],[1570871040000,0.00148647,0.00148647,0.00148647,0.00148647,15.0],[1570871100000,0.00148648,0.00148648,0.00148648,0.00148648,86.0],[1570871160000,0.00148614,0.00148614,0.00148614,0.00148614,20.0],[1570871220000,0.00148515,0.00148515,0.00148515,0.00148515,26.0],[1570871280000,0.00148515,0.00148515,0.00148515,0.00148515,0.0],[1570871340000,0.00148512,0.00148512,0.00148419,0.00148419,226.0],[1570871400000,0.00148529,0.00148529,0.00148396,0.00148396,1092.0],[1570871460000,0.00148396,0.00148396,0.00148369,0.00148369,1556.0],[1570871520000,0.00148323,0.00148323,0.00148323,0.00148323,15.0],[1570871580000,0.00148323,0.00148323,0.00148323,0.00148323,0.0],[1570871640000,0.00148323,0.00148323,0.00148323,0.00148323,78.0],[1570871700000,0.00148489,0.00148489,0.00148323,0.00148323,44.0],[1570871760000,0.00148323,0.00148323,0.00148317,0.00148317,33.0],[1570871820000,0.00148316,0.00148316,0.00148316,0.00148316,14.0],[1570871880000,0.00148316,0.00148316,0.00147984,0.00148202,8684.0],[1570871940000,0.00148202,0.00148202,0.00148202,0.00148202,0.0],[1570872000000,0.00148325,0.00148325,0.00148325,0.00148325,171.0],[1570872060000,0.00148325,0.00148325,0.00148325,0.00148325,0.0],[1570872120000,0.001482,0.00148551,0.001482,0.00148551,3495.0],[1570872180000,0.001486,0.00148613,0.00148445,0.00148445,2471.0],[1570872240000,0.00148445,0.00148445,0.00148445,0.00148445,439.0],[1570872300000,0.00148559,0.00148559,0.00148559,0.00148559,2426.0],[1570872360000,0.00148447,0.00148447,0.00148445,0.00148445,1817.0],[1570872420000,0.00148445,0.00148445,0.00148445,0.00148445,0.0],[1570872480000,0.00148445,0.00148445,0.00148445,0.00148445,0.0],[1570872540000,0.00148348,0.00148348,0.00148348,0.00148348,15.0],[1570872600000,0.00148347,0.00148347,0.00148347,0.00148347,9990.0],[1570872660000,0.00148295,0.00148473,0.00148295,0.00148473,219.0],[1570872720000,0.00148473,0.00148473,0.00148473,0.00148473,0.0],[1570872780000,0.00148411,0.00148411,0.00148411,0.00148411,14.0],[1570872840000,0.00148589,0.00148589,0.00148589,0.00148589,339.0],[1570872900000,0.00148589,0.00148589,0.00148589,0.00148589,0.0],[1570872960000,0.00148589,0.00148589,0.00148589,0.00148589,0.0],[1570873020000,0.00148398,0.00148398,0.00148398,0.00148398,60.0],[1570873080000,0.0014839,0.0014839,0.0014839,0.0014839,90.0],[1570873140000,0.0014839,0.0014839,0.0014839,0.0014839,0.0],[1570873200000,0.0014839,0.0014839,0.0014839,0.0014839,0.0],[1570873260000,0.0014839,0.0014839,0.0014839,0.0014839,0.0],[1570873320000,0.00148353,0.00148353,0.00148353,0.00148353,248.0],[1570873380000,0.00148353,0.00148353,0.00148353,0.00148353,0.0],[1570873440000,0.00148353,0.00148353,0.00148353,0.00148353,0.0],[1570873500000,0.00148353,0.00148353,0.00148353,0.00148353,0.0],[1570873560000,0.00148284,0.00148284,0.00148193,0.00148193,999.0],[1570873620000,0.00148143,0.00148143,0.00148052,0.00148052,2881.0],[1570873680000,0.00148171,0.00148171,0.00148171,0.00148171,3960.0],[1570873740000,0.00148128,0.00148128,0.00148128,0.00148128,7555.0],[1570873800000,0.00148128,0.00148128,0.00148128,0.00148128,0.0],[1570873860000,0.00148128,0.00148128,0.00148128,0.00148128,0.0],[1570873920000,0.00148333,0.00148333,0.00148333,0.00148333,14.0],[1570873980000,0.00148333,0.00148333,0.00148333,0.00148333,0.0],[1570874040000,0.00148379,0.00148379,0.00148379,0.00148379,367.0],[1570874100000,0.00148379,0.00148379,0.00148379,0.00148379,0.0],[1570874160000,0.00148403,0.00148403,0.00148403,0.00148403,13.0],[1570874220000,0.00148403,0.00148403,0.00148403,0.00148403,0.0],[1570874280000,0.00148403,0.00148403,0.00148403,0.00148403,0.0],[1570874340000,0.00148385,0.00148385,0.00148385,0.00148385,14.0],[1570874400000,0.00148561,0.00148784,0.00148561,0.00148784,318.0],[1570874460000,0.00148795,0.00149002,0.00148795,0.00149002,459.0],[1570874520000,0.0014864,0.0014864,0.0014864,0.0014864,15.0],[1570874580000,0.00148782,0.00148782,0.00148782,0.00148782,365.0],[1570874640000,0.00148782,0.00148782,0.00148782,0.00148782,0.0],[1570874700000,0.00148782,0.00148782,0.00148782,0.00148782,0.0],[1570874760000,0.00148546,0.00148546,0.00148414,0.00148488,3321.0],[1570874820000,0.00148478,0.00148478,0.00148478,0.00148478,392.0],[1570874880000,0.0014841,0.0014841,0.0014841,0.0014841,7.0],[1570874940000,0.0014841,0.0014841,0.0014841,0.0014841,0.0],[1570875000000,0.0014841,0.0014841,0.0014841,0.0014841,0.0],[1570875060000,0.00148668,0.00148668,0.00148668,0.00148668,1315.0],[1570875120000,0.00148821,0.00148821,0.00148728,0.00148728,2324.0],[1570875180000,0.00148703,0.00148787,0.00148703,0.00148787,2027.0],[1570875240000,0.00148583,0.00148583,0.001484,0.00148408,29962.0],[1570875300000,0.00148599,0.00148599,0.00148599,0.00148599,2.0],[1570875360000,0.00148601,0.00148601,0.00148601,0.00148601,2.0],[1570875420000,0.00148475,0.00148475,0.00148473,0.00148473,1302.0],[1570875480000,0.00148532,0.00148655,0.00148532,0.00148655,110.0],[1570875540000,0.00148546,0.00148801,0.00148546,0.00148801,1327.0],[1570875600000,0.00148964,0.00149041,0.00148964,0.00149011,1074.0],[1570875660000,0.00148664,0.00148757,0.00148664,0.00148757,28.0],[1570875720000,0.00148822,0.00148822,0.00148798,0.00148798,360.0],[1570875780000,0.00148803,0.0014899,0.00148803,0.0014899,1703.0],[1570875840000,0.0014899,0.0014899,0.0014899,0.0014899,0.0],[1570875900000,0.0014866,0.0014866,0.0014866,0.0014866,13.0],[1570875960000,0.00148668,0.00148668,0.00148668,0.00148668,14.0],[1570876020000,0.00148668,0.00148668,0.00148668,0.00148668,0.0],[1570876080000,0.00148668,0.00148668,0.00148668,0.00148668,0.0],[1570876140000,0.00148668,0.00148668,0.00148668,0.00148668,0.0],[1570876200000,0.00148668,0.00148668,0.00148668,0.00148668,0.0],[1570876260000,0.00148668,0.00148668,0.00148668,0.00148668,0.0],[1570876320000,0.00148672,0.00148672,0.00148672,0.00148672,45.0],[1570876380000,0.00148672,0.00149104,0.00148672,0.00148857,811.0],[1570876440000,0.00148815,0.00148815,0.00148815,0.00148815,1962.0],[1570876500000,0.00148815,0.00148815,0.00148815,0.00148815,0.0],[1570876560000,0.00148753,0.00148753,0.00148658,0.00148658,1353.0],[1570876620000,0.00148658,0.00148658,0.00148658,0.00148658,0.0],[1570876680000,0.0014885,0.0014885,0.0014885,0.0014885,650.0],[1570876740000,0.0014891,0.0014891,0.0014872,0.0014872,147.0],[1570876800000,0.0014872,0.0014872,0.0014872,0.0014872,0.0],[1570876860000,0.00148837,0.00148837,0.0014872,0.0014872,404.0],[1570876920000,0.00148675,0.00148675,0.00148675,0.00148675,16.0],[1570876980000,0.00148735,0.00148951,0.00148735,0.00148951,233.0],[1570877040000,0.00148778,0.00148956,0.00148778,0.00148956,195.0],[1570877100000,0.00148955,0.00148955,0.00148774,0.00148774,1711.0],[1570877160000,0.00148774,0.00148808,0.00148638,0.00148734,868.0],[1570877220000,0.00148734,0.00148734,0.00148734,0.00148734,15.0],[1570877280000,0.00148885,0.00148885,0.00148885,0.00148885,864.0],[1570877340000,0.00148691,0.00148691,0.00148691,0.00148691,388.0],[1570877400000,0.00148899,0.00148899,0.00148702,0.00148702,91.0],[1570877460000,0.00148702,0.00148702,0.00148702,0.00148702,0.0],[1570877520000,0.00148702,0.00148702,0.00148702,0.00148702,0.0],[1570877580000,0.00148497,0.00148497,0.00148497,0.00148497,13.0],[1570877640000,0.00148497,0.00148497,0.00148497,0.00148497,0.0],[1570877700000,0.00148585,0.00148585,0.00148585,0.00148585,13.0],[1570877760000,0.0014878,0.00148879,0.00148501,0.00148879,13022.0],[1570877820000,0.00148852,0.00148852,0.00148767,0.00148767,546.0],[1570877880000,0.00148711,0.00148711,0.00148711,0.00148711,13.0],[1570877940000,0.00148652,0.00148652,0.00148551,0.00148551,4027.0],[1570878000000,0.00148851,0.00148851,0.00148851,0.00148851,1726.0],[1570878060000,0.00148851,0.00148851,0.00148851,0.00148851,10915.0],[1570878120000,0.00148923,0.00148923,0.00148744,0.00148744,3126.0],[1570878180000,0.0014873,0.0014873,0.0014873,0.0014873,14.0],[1570878240000,0.00148722,0.00148729,0.00148722,0.00148729,28.0],[1570878300000,0.00148729,0.00148729,0.00148662,0.00148729,41423.0],[1570878360000,0.00148661,0.00148661,0.00148661,0.00148661,13.0],[1570878420000,0.00148661,0.00148661,0.00148661,0.00148661,0.0],[1570878480000,0.00148826,0.00148934,0.00148826,0.00148934,2426.0],[1570878540000,0.00148934,0.00148934,0.00148934,0.00148934,644.0],[1570878600000,0.0014889,0.00149088,0.0014889,0.0014898,10964.0],[1570878660000,0.00149106,0.0014921,0.00149106,0.0014921,1133.0],[1570878720000,0.00149196,0.00149196,0.00149196,0.00149196,15.0],[1570878780000,0.00149133,0.00149133,0.00149133,0.00149133,15.0],[1570878840000,0.00149133,0.00149133,0.00149133,0.00149133,0.0],[1570878900000,0.00149133,0.00149133,0.00149133,0.00149133,0.0],[1570878960000,0.00149133,0.00149133,0.00149133,0.00149133,0.0],[1570879020000,0.00149133,0.00149133,0.00149133,0.00149133,0.0],[1570879080000,0.00149208,0.00149255,0.00149208,0.00149255,3704.0],[1570879140000,0.00149255,0.00149267,0.00149255,0.00149267,308.0],[1570879200000,0.0014924,0.00149268,0.00149143,0.00149143,2466.0],[1570879260000,0.00149143,0.00149143,0.00149143,0.00149143,14.0],[1570879320000,0.00149143,0.00149143,0.00149143,0.00149143,997.0],[1570879380000,0.00149037,0.00149129,0.00149037,0.00149129,117.0],[1570879440000,0.00149129,0.00149129,0.00149129,0.00149129,0.0],[1570879500000,0.00149024,0.00149054,0.00149024,0.00149054,44.0],[1570879560000,0.00149054,0.00149056,0.00149054,0.00149056,41.0],[1570879620000,0.00149165,0.00149312,0.00149165,0.00149312,1477.0],[1570879680000,0.00149312,0.00149312,0.00149312,0.00149312,0.0],[1570879740000,0.00149334,0.00149409,0.00149334,0.00149358,530.0],[1570879800000,0.00149358,0.00149358,0.00149358,0.00149358,0.0],[1570879860000,0.00149358,0.00149358,0.00149358,0.00149358,0.0],[1570879920000,0.00149231,0.00149231,0.00149231,0.00149231,15.0],[1570879980000,0.00149231,0.00149231,0.00149231,0.00149231,14.0],[1570880040000,0.00149231,0.00149231,0.00149231,0.00149231,0.0],[1570880100000,0.00149231,0.00149231,0.00149231,0.00149231,0.0],[1570880160000,0.00149231,0.00149231,0.00149231,0.00149231,2694.0],[1570880220000,0.00149376,0.00149376,0.00149054,0.00149054,175.0],[1570880280000,0.00149054,0.00149054,0.00149054,0.00149054,0.0],[1570880340000,0.00149177,0.00149177,0.00149177,0.00149177,13.0],[1570880400000,0.00149239,0.00149239,0.00149239,0.00149239,113.0],[1570880460000,0.00149239,0.00149239,0.00149239,0.00149239,0.0],[1570880520000,0.0014936,0.00149412,0.00149301,0.00149301,1042.0],[1570880580000,0.00149237,0.00149237,0.00149237,0.00149237,13.0],[1570880640000,0.00149237,0.00149237,0.00149237,0.00149237,0.0],[1570880700000,0.00149237,0.00149237,0.00149237,0.00149237,0.0],[1570880760000,0.00149237,0.00149238,0.00149237,0.00149238,42.0],[1570880820000,0.00149237,0.00149237,0.00149237,0.00149237,16.0],[1570880880000,0.00149237,0.00149237,0.00149237,0.00149237,0.0],[1570880940000,0.00149412,0.00149412,0.00149412,0.00149412,467.0],[1570881000000,0.00149412,0.00149436,0.00149412,0.00149429,1915.0],[1570881060000,0.0014938,0.00149486,0.0014938,0.00149486,3000.0],[1570881120000,0.00149288,0.00149288,0.00149288,0.00149288,15.0],[1570881180000,0.00149237,0.00149237,0.00149128,0.00149135,1079.0],[1570881240000,0.00149268,0.00149268,0.00149268,0.00149268,13.0],[1570881300000,0.00149269,0.00149269,0.00149269,0.00149269,15.0],[1570881360000,0.00149269,0.00149269,0.00149269,0.00149269,0.0],[1570881420000,0.00149269,0.00149269,0.00149269,0.00149269,364.0],[1570881480000,0.00149269,0.00149269,0.00149269,0.00149269,2636.0],[1570881540000,0.00149269,0.00149269,0.00149269,0.00149269,0.0],[1570881600000,0.00149016,0.00149016,0.00149016,0.00149016,15.0],[1570881660000,0.00149016,0.00149016,0.00149016,0.00149016,0.0],[1570881720000,0.00149016,0.00149016,0.00149016,0.00149016,0.0],[1570881780000,0.0014888,0.0014888,0.00148819,0.00148819,467.0],[1570881840000,0.00148819,0.00148819,0.00148819,0.00148819,0.0],[1570881900000,0.00149072,0.00149072,0.00148942,0.00148942,263.0],[1570881960000,0.00148945,0.00148945,0.00148945,0.00148945,14.0],[1570882020000,0.00148977,0.00148978,0.00148948,0.00148948,729.0],[1570882080000,0.00149022,0.00149123,0.00149022,0.00149123,162.0],[1570882140000,0.00149186,0.00149197,0.00149186,0.00149197,402.0],[1570882200000,0.00149123,0.00149123,0.00149123,0.00149123,76.0],[1570882260000,0.00149123,0.00149123,0.00149123,0.00149123,0.0],[1570882320000,0.00149022,0.00149022,0.00149022,0.00149022,16.0],[1570882380000,0.00149083,0.00149083,0.00149083,0.00149083,14.0],[1570882440000,0.00149022,0.00149022,0.00149008,0.00149008,638.0],[1570882500000,0.00149008,0.00149008,0.00149008,0.00149008,0.0],[1570882560000,0.00149008,0.00149008,0.00149008,0.00149008,0.0],[1570882620000,0.00149069,0.00149138,0.00149069,0.00149138,24.0],[1570882680000,0.00149069,0.00149069,0.00149063,0.00149063,29.0],[1570882740000,0.00149063,0.00149214,0.00149063,0.00149214,82.0],[1570882800000,0.00149214,0.00149268,0.00149123,0.00149268,155.0],[1570882860000,0.00149268,0.00149283,0.00149268,0.00149283,285.0],[1570882920000,0.00149283,0.00149334,0.00149283,0.00149334,1081.0],[1570882980000,0.00149397,0.00149403,0.00149187,0.00149403,5835.0],[1570883040000,0.00149473,0.00149487,0.00149379,0.00149379,947.0],[1570883100000,0.00149487,0.00149487,0.00149487,0.00149487,60.0],[1570883160000,0.00149487,0.00149487,0.00149487,0.00149487,0.0],[1570883220000,0.00149324,0.00149349,0.00149322,0.00149322,1706.0],[1570883280000,0.00149323,0.00149346,0.00149322,0.00149322,350.0],[1570883340000,0.00149419,0.00149419,0.00149321,0.00149321,300.0],[1570883400000,0.00149321,0.00149321,0.00149294,0.00149294,15.0],[1570883460000,0.00149294,0.00149294,0.00149294,0.00149294,0.0],[1570883520000,0.00149209,0.00149209,0.00149209,0.00149209,15.0],[1570883580000,0.00149293,0.00149293,0.00149194,0.00149194,1208.0],[1570883640000,0.00149351,0.00149354,0.00149351,0.00149354,1120.0],[1570883700000,0.00149354,0.00149354,0.00149354,0.00149354,0.0],[1570883760000,0.00149259,0.00149259,0.00149259,0.00149259,1534.0],[1570883820000,0.00149272,0.00149272,0.00149199,0.00149199,1810.0],[1570883880000,0.00149194,0.00149211,0.00149187,0.0014921,194.0],[1570883940000,0.00149155,0.00149155,0.00149155,0.00149155,14.0],[1570884000000,0.00149188,0.00149328,0.00149188,0.00149188,510.0],[1570884060000,0.00149188,0.00149188,0.00149188,0.00149188,0.0],[1570884120000,0.00149188,0.00149188,0.00149188,0.00149188,0.0],[1570884180000,0.00149188,0.00149188,0.00149188,0.00149188,0.0],[1570884240000,0.00149188,0.00149188,0.00149188,0.00149188,0.0],[1570884300000,0.00149188,0.00149188,0.00149161,0.00149161,13.0],[1570884360000,0.00149161,0.00149161,0.00149161,0.00149161,129.0],[1570884420000,0.00149148,0.00149328,0.00149148,0.00149328,203.0],[1570884480000,0.00149376,0.00149561,0.00149312,0.00149312,1331.0],[1570884540000,0.00149312,0.00149312,0.00149312,0.00149312,290.0],[1570884600000,0.00149363,0.00149363,0.00149312,0.00149335,5109.0],[1570884660000,0.00149353,0.00149679,0.00149351,0.00149679,7484.0],[1570884720000,0.00149709,0.00149709,0.00149709,0.00149709,26.0],[1570884780000,0.00149732,0.00149829,0.00149631,0.00149829,2013.0],[1570884840000,0.00149727,0.00149913,0.00149632,0.00149913,6315.0],[1570884900000,0.00149913,0.00149913,0.00149913,0.00149913,182.0],[1570884960000,0.00149913,0.00149913,0.00149857,0.00149857,676.0],[1570885020000,0.00149857,0.00149857,0.00149857,0.00149857,0.0],[1570885080000,0.0014978,0.0014978,0.0014978,0.0014978,13.0],[1570885140000,0.0014978,0.0014978,0.0014978,0.0014978,37.0],[1570885200000,0.00149687,0.00149687,0.00149631,0.00149631,14.0],[1570885260000,0.00149631,0.00149631,0.00149631,0.00149631,16.0],[1570885320000,0.00149522,0.00149522,0.001494,0.001494,13.0],[1570885380000,0.00149698,0.00149698,0.00149487,0.00149487,215.0],[1570885440000,0.00149376,0.00149387,0.00149333,0.00149387,1531.0],[1570885500000,0.00149313,0.00149498,0.00149313,0.00149498,61.0],[1570885560000,0.00149518,0.00149593,0.00149518,0.00149593,193.0],[1570885620000,0.00149593,0.00149668,0.00149526,0.00149668,288.0],[1570885680000,0.00149668,0.00149742,0.00149668,0.00149742,237.0],[1570885740000,0.00149619,0.00149619,0.00149619,0.00149619,10.0],[1570885800000,0.00149726,0.00149726,0.00149726,0.00149726,10.0],[1570885860000,0.00149625,0.00149625,0.00149625,0.00149625,28.0],[1570885920000,0.00149625,0.00149625,0.00149625,0.00149625,46.0],[1570885980000,0.00149625,0.00149625,0.00149426,0.00149426,2350.0],[1570886040000,0.00149427,0.00149427,0.00149426,0.00149426,214.0],[1570886100000,0.00149426,0.00149426,0.00149426,0.00149426,0.0],[1570886160000,0.00149426,0.00149426,0.00149426,0.00149426,0.0],[1570886220000,0.0014961,0.0014967,0.0014961,0.0014967,40.0],[1570886280000,0.0014967,0.0014967,0.0014967,0.0014967,0.0],[1570886340000,0.0014967,0.0014967,0.0014967,0.0014967,0.0],[1570886400000,0.0014967,0.0014967,0.0014967,0.0014967,0.0],[1570886460000,0.00149521,0.00149521,0.00149521,0.00149521,1549.0],[1570886520000,0.00149427,0.00149427,0.00149337,0.00149337,224.0],[1570886580000,0.00149312,0.0014934,0.00149259,0.0014934,280.0],[1570886640000,0.00149161,0.00149161,0.00149126,0.00149126,189.0],[1570886700000,0.00149127,0.00149424,0.00149125,0.00149424,3531.0],[1570886760000,0.00149424,0.00149424,0.00149424,0.00149424,0.0],[1570886820000,0.0014919,0.0014919,0.00149125,0.00149125,1487.0],[1570886880000,0.00149304,0.00149304,0.00149304,0.00149304,7.0],[1570886940000,0.00149125,0.00149125,0.00149081,0.00149123,932.0],[1570887000000,0.00149123,0.00149123,0.00149123,0.00149123,0.0],[1570887060000,0.00149307,0.00149347,0.00149098,0.00149098,686.0],[1570887120000,0.00149131,0.00149131,0.00149131,0.00149131,13.0],[1570887180000,0.00149137,0.00149137,0.00149137,0.00149137,15.0],[1570887240000,0.00149137,0.00149141,0.00149137,0.00149141,27.0],[1570887300000,0.00149087,0.00149087,0.00149087,0.00149087,15.0],[1570887360000,0.00149087,0.00149087,0.00149087,0.00149087,557.0],[1570887420000,0.00149087,0.00149087,0.00149087,0.00149087,0.0],[1570887480000,0.00149086,0.00149087,0.00149083,0.00149087,30.0],[1570887540000,0.00149087,0.00149087,0.00149087,0.00149087,0.0],[1570887600000,0.00149302,0.00149302,0.00149302,0.00149302,90.0],[1570887660000,0.00149153,0.00149422,0.00149153,0.00149422,547.0],[1570887720000,0.00149422,0.00149422,0.00149422,0.00149422,0.0],[1570887780000,0.00149372,0.00149372,0.00149372,0.00149372,92.0],[1570887840000,0.00149422,0.00149422,0.00149422,0.00149422,207.0],[1570887900000,0.00149496,0.00149496,0.00149496,0.00149496,808.0],[1570887960000,0.00149567,0.00149603,0.00149341,0.00149341,425.0],[1570888020000,0.00149341,0.00149341,0.00149341,0.00149341,0.0],[1570888080000,0.0014936,0.00149442,0.0014936,0.00149442,22.0],[1570888140000,0.00149444,0.00149444,0.00149444,0.00149444,65.0],[1570888200000,0.00149444,0.00149444,0.00149444,0.00149444,0.0],[1570888260000,0.00149441,0.00149631,0.00149441,0.00149631,2828.0],[1570888320000,0.00149631,0.00149631,0.00149631,0.00149631,0.0],[1570888380000,0.00149441,0.00149441,0.00149441,0.00149441,202.0],[1570888440000,0.00149441,0.00149648,0.00149441,0.00149441,136.0],[1570888500000,0.00149441,0.00149441,0.00149441,0.00149441,139.0],[1570888560000,0.00149441,0.00149441,0.00149441,0.00149441,0.0],[1570888620000,0.00149441,0.00149441,0.00149441,0.00149441,0.0],[1570888680000,0.00149441,0.00149441,0.00149441,0.00149441,14.0],[1570888740000,0.00149441,0.00149441,0.00149441,0.00149441,0.0],[1570888800000,0.00149441,0.00149441,0.00149441,0.00149441,0.0],[1570888860000,0.00149441,0.00149441,0.00149441,0.00149441,15.0],[1570888920000,0.00149441,0.00149441,0.00149441,0.00149441,0.0],[1570888980000,0.00149441,0.00149441,0.00149441,0.00149441,0.0],[1570889040000,0.00149529,0.00149529,0.00149441,0.00149441,438.0],[1570889100000,0.00149471,0.00149471,0.00149471,0.00149471,15.0],[1570889160000,0.00149587,0.00149587,0.0014944,0.0014944,13904.0],[1570889220000,0.0014944,0.0014944,0.0014944,0.0014944,0.0],[1570889280000,0.00149401,0.00149401,0.00149401,0.00149401,340.0],[1570889340000,0.00149401,0.00149401,0.00149401,0.00149401,133.0],[1570889400000,0.00149358,0.00149358,0.00149339,0.00149339,281.0],[1570889460000,0.00149597,0.00149623,0.00149504,0.00149504,342.0],[1570889520000,0.00149495,0.00149508,0.00149494,0.00149494,1387.0],[1570889580000,0.00149494,0.00149494,0.00149494,0.00149494,0.0],[1570889640000,0.00149328,0.00149328,0.00149328,0.00149328,14.0],[1570889700000,0.00149367,0.00149367,0.00149367,0.00149367,15.0],[1570889760000,0.00149384,0.00149384,0.00149275,0.00149275,28.0],[1570889820000,0.00149353,0.00149353,0.00149353,0.00149353,14.0],[1570889880000,0.00149365,0.00149365,0.00149365,0.00149365,199.0],[1570889940000,0.00149365,0.00149365,0.00149365,0.00149365,0.0],[1570890000000,0.00149275,0.00149275,0.0014918,0.0014918,15.0],[1570890060000,0.00149191,0.00149191,0.00149191,0.00149191,13.0],[1570890120000,0.00149174,0.00149498,0.00149174,0.00149498,880.0],[1570890180000,0.00149498,0.00149632,0.00149498,0.00149632,91.0],[1570890240000,0.00149632,0.00149632,0.00149632,0.00149632,0.0],[1570890300000,0.00149632,0.00149632,0.00149632,0.00149632,0.0],[1570890360000,0.00149632,0.00149632,0.00149632,0.00149632,0.0],[1570890420000,0.00149632,0.00149632,0.00149632,0.00149632,0.0],[1570890480000,0.00149316,0.00149316,0.00149316,0.00149316,13.0],[1570890540000,0.00149316,0.00149316,0.00149316,0.00149316,0.0],[1570890600000,0.00149316,0.00149316,0.00149316,0.00149316,0.0],[1570890660000,0.00149316,0.00149316,0.00149316,0.00149316,28.0],[1570890720000,0.00149316,0.00149316,0.00149316,0.00149316,0.0],[1570890780000,0.00149316,0.00149316,0.00149316,0.00149316,0.0],[1570890840000,0.00149316,0.00149316,0.00149316,0.00149316,0.0],[1570890900000,0.00149316,0.00149316,0.00149316,0.00149316,13.0],[1570890960000,0.00149316,0.00149316,0.00149316,0.00149316,13.0],[1570891020000,0.00149316,0.00149316,0.00149316,0.00149316,28.0],[1570891080000,0.00149316,0.00149316,0.00149316,0.00149316,0.0],[1570891140000,0.00149316,0.00149316,0.00149316,0.00149316,0.0],[1570891200000,0.00149316,0.00149316,0.00149316,0.00149316,0.0],[1570891260000,0.00149316,0.00149316,0.00149314,0.00149314,378.0],[1570891320000,0.00149373,0.00149373,0.00149373,0.00149373,14.0],[1570891380000,0.00149373,0.00149373,0.00149373,0.00149373,0.0],[1570891440000,0.00149429,0.00149429,0.00149429,0.00149429,15.0],[1570891500000,0.00149429,0.00149429,0.00149429,0.00149429,0.0],[1570891560000,0.00149363,0.00149363,0.00149314,0.00149314,32.0],[1570891620000,0.00149314,0.00149314,0.00149314,0.00149314,0.0],[1570891680000,0.00149467,0.00149518,0.00149366,0.00149518,805.0],[1570891740000,0.00149518,0.00149518,0.00149518,0.00149518,0.0],[1570891800000,0.00149505,0.00149505,0.00149505,0.00149505,145.0],[1570891860000,0.00149314,0.00149314,0.00149153,0.00149153,1751.0],[1570891920000,0.00149256,0.00149444,0.00149256,0.00149444,3503.0],[1570891980000,0.0014932,0.0014932,0.0014932,0.0014932,219.0],[1570892040000,0.00149274,0.00149274,0.00149274,0.00149274,15.0],[1570892100000,0.00149239,0.00149239,0.00149239,0.00149239,619.0],[1570892160000,0.00149254,0.00149254,0.00149219,0.00149254,1651.0],[1570892220000,0.00149254,0.00149254,0.00149063,0.00149063,238.0],[1570892280000,0.00149063,0.00149155,0.00148982,0.00149155,57.0],[1570892340000,0.00148982,0.00148982,0.00148927,0.00148927,15.0],[1570892400000,0.00148994,0.00148994,0.00148777,0.00148795,3243.0],[1570892460000,0.00148907,0.00148907,0.00148859,0.00148859,1071.0],[1570892520000,0.00148751,0.00148751,0.0014875,0.0014875,13.0],[1570892580000,0.00149165,0.00149165,0.00149165,0.00149165,61.0],[1570892640000,0.00149165,0.00149165,0.00149165,0.00149165,0.0],[1570892700000,0.00148988,0.00148988,0.00148988,0.00148988,15.0],[1570892760000,0.00149165,0.00149165,0.00149165,0.00149165,20.0],[1570892820000,0.00149267,0.00149267,0.00149191,0.00149191,207.0],[1570892880000,0.00149068,0.00149068,0.00149068,0.00149068,15.0],[1570892940000,0.00149068,0.00149068,0.00149068,0.00149068,0.0],[1570893000000,0.00149226,0.00149226,0.00149016,0.00149016,1544.0],[1570893060000,0.00149016,0.00149016,0.00149016,0.00149016,0.0],[1570893120000,0.001493,0.001493,0.001493,0.001493,1028.0],[1570893180000,0.001493,0.001493,0.001493,0.001493,0.0],[1570893240000,0.0014893,0.0014893,0.0014893,0.0014893,1235.0],[1570893300000,0.00149081,0.00149081,0.00149081,0.00149081,15.0],[1570893360000,0.00149338,0.00149338,0.00149187,0.00149187,126.0],[1570893420000,0.00149329,0.00149338,0.00149188,0.00149188,5102.0],[1570893480000,0.00149188,0.00149188,0.00149188,0.00149188,0.0],[1570893540000,0.00149143,0.00149143,0.00149143,0.00149143,14.0],[1570893600000,0.00149142,0.00149335,0.00149136,0.00149335,698.0],[1570893660000,0.00149075,0.00149204,0.00149075,0.00149204,1082.0],[1570893720000,0.00148896,0.00148896,0.00148896,0.00148896,14.0],[1570893780000,0.00148896,0.00148896,0.00148896,0.00148896,0.0],[1570893840000,0.00148891,0.00149215,0.00148891,0.00149215,17.0],[1570893900000,0.00149275,0.00149338,0.00149275,0.00149338,2557.0],[1570893960000,0.00149122,0.00149122,0.00149122,0.00149122,441.0],[1570894020000,0.00149131,0.00149131,0.00149023,0.00149023,1545.0],[1570894080000,0.00148909,0.00148909,0.00148909,0.00148909,13.0],[1570894140000,0.00148909,0.00148909,0.00148909,0.00148909,0.0],[1570894200000,0.00149285,0.00149285,0.00149285,0.00149285,2.0],[1570894260000,0.00149285,0.00149285,0.00149285,0.00149285,0.0],[1570894320000,0.00149285,0.00149285,0.00149285,0.00149285,0.0],[1570894380000,0.00149285,0.00149285,0.00149285,0.00149285,0.0],[1570894440000,0.00149285,0.00149285,0.00149285,0.00149285,0.0],[1570894500000,0.00149026,0.00149026,0.00149026,0.00149026,1409.0],[1570894560000,0.00149026,0.00149026,0.00149026,0.00149026,12.0],[1570894620000,0.00148967,0.00148967,0.00148967,0.00148967,15.0],[1570894680000,0.00148982,0.00148982,0.00148982,0.00148982,14.0],[1570894740000,0.00148982,0.00148982,0.00148982,0.00148982,0.0],[1570894800000,0.00148985,0.00148985,0.00148985,0.00148985,16.0],[1570894860000,0.00148964,0.00148964,0.00148964,0.00148964,29.0],[1570894920000,0.00148965,0.00148965,0.00148965,0.00148965,13.0],[1570894980000,0.00148965,0.00148965,0.00148965,0.00148965,25.0],[1570895040000,0.00148965,0.00148965,0.00148965,0.00148965,0.0],[1570895100000,0.00148965,0.00148965,0.00148965,0.00148965,0.0],[1570895160000,0.00149045,0.00149045,0.0014895,0.00148973,20840.0],[1570895220000,0.00148978,0.00148978,0.00148978,0.00148978,165.0],[1570895280000,0.00149025,0.00149203,0.00149025,0.00149203,1748.0],[1570895340000,0.00149219,0.00149219,0.00149026,0.00149214,819.0],[1570895400000,0.00149027,0.00149027,0.00148896,0.00148896,5867.0],[1570895460000,0.00148899,0.00148899,0.00148899,0.00148899,16.0],[1570895520000,0.00149022,0.00149022,0.00148891,0.00148891,2710.0],[1570895580000,0.00148891,0.00148891,0.00148891,0.00148891,232.0],[1570895640000,0.00148795,0.00148795,0.00148688,0.00148688,276.0],[1570895700000,0.00148651,0.00148651,0.00148485,0.00148485,3266.0],[1570895760000,0.0014847,0.00148643,0.0014846,0.00148606,3177.0],[1570895820000,0.00148606,0.00148606,0.00148606,0.00148606,0.0],[1570895880000,0.00148606,0.00148606,0.00148606,0.00148606,0.0],[1570895940000,0.00148477,0.00148477,0.0014846,0.0014846,523.0],[1570896000000,0.0014846,0.0014846,0.0014846,0.0014846,0.0],[1570896060000,0.00148584,0.00148752,0.001485,0.00148752,1760.0],[1570896120000,0.00148557,0.00148557,0.00148493,0.00148493,59.0],[1570896180000,0.00148428,0.00148767,0.00148428,0.00148582,161.0],[1570896240000,0.00148582,0.00148582,0.00148582,0.00148582,0.0],[1570896300000,0.00148864,0.00148864,0.0014868,0.0014868,328.0],[1570896360000,0.0014868,0.0014868,0.0014868,0.0014868,0.0],[1570896420000,0.00148866,0.00148965,0.00148781,0.00148781,3733.0],[1570896480000,0.00148781,0.00148781,0.00148781,0.00148781,0.0],[1570896540000,0.00148748,0.00148748,0.00148748,0.00148748,15.0],[1570896600000,0.001489,0.001489,0.001489,0.001489,9053.0],[1570896660000,0.001489,0.00149048,0.001489,0.00149048,11100.0],[1570896720000,0.00148907,0.00148907,0.0014877,0.0014877,3525.0],[1570896780000,0.0014877,0.0014877,0.0014877,0.0014877,1308.0],[1570896840000,0.0014877,0.0014877,0.0014877,0.0014877,0.0],[1570896900000,0.0014868,0.0014868,0.00148466,0.00148466,40.0],[1570896960000,0.00148466,0.00148466,0.00148466,0.00148466,0.0],[1570897020000,0.00148517,0.00148586,0.00148517,0.00148586,1060.0],[1570897080000,0.00148632,0.00148632,0.00148632,0.00148632,681.0],[1570897140000,0.00148632,0.00148632,0.00148632,0.00148632,0.0],[1570897200000,0.00148632,0.00148632,0.00148632,0.00148632,0.0],[1570897260000,0.00148695,0.00148695,0.00148695,0.00148695,1355.0],[1570897320000,0.00148706,0.00148706,0.00148558,0.00148558,853.0],[1570897380000,0.00148558,0.00148612,0.00148558,0.00148612,65.0],[1570897440000,0.00148695,0.00148831,0.00148695,0.00148831,768.0],[1570897500000,0.00148892,0.00149036,0.00148892,0.00149036,754.0],[1570897560000,0.00149036,0.00149036,0.00149036,0.00149036,0.0],[1570897620000,0.00148793,0.0014902,0.00148793,0.0014902,275.0],[1570897680000,0.0014902,0.0014902,0.0014902,0.0014902,0.0],[1570897740000,0.00148712,0.00148823,0.00148712,0.00148823,28.0],[1570897800000,0.00148701,0.00148701,0.00148701,0.00148701,13.0],[1570897860000,0.00148701,0.00148701,0.00148701,0.00148701,0.0],[1570897920000,0.00148772,0.00148772,0.00148772,0.00148772,47.0],[1570897980000,0.00148772,0.00148772,0.00148772,0.00148772,0.0],[1570898040000,0.00148772,0.00148772,0.00148772,0.00148772,0.0],[1570898100000,0.00148594,0.00148594,0.00148594,0.00148594,13.0],[1570898160000,0.00148594,0.00148594,0.00148594,0.00148594,13.0],[1570898220000,0.00148594,0.00148594,0.00148594,0.00148594,0.0],[1570898280000,0.00148594,0.00148594,0.00148594,0.00148594,0.0],[1570898340000,0.00148718,0.00148854,0.00148718,0.00148854,2763.0],[1570898400000,0.00148697,0.00148697,0.00148695,0.00148695,1493.0],[1570898460000,0.00148695,0.00148695,0.00148695,0.00148695,0.0],[1570898520000,0.00148753,0.00148753,0.00148753,0.00148753,13.0],[1570898580000,0.00148876,0.00148876,0.00148756,0.00148756,35.0],[1570898640000,0.00148755,0.00148755,0.00148755,0.00148755,14.0],[1570898700000,0.00148861,0.00148943,0.00148754,0.00148825,183.0],[1570898760000,0.00149021,0.00149142,0.00148965,0.00149142,798.0],[1570898820000,0.00148997,0.00148997,0.00148997,0.00148997,252.0],[1570898880000,0.00148997,0.00148997,0.00148997,0.00148997,0.0],[1570898940000,0.00149177,0.001492,0.0014905,0.00149121,1844.0],[1570899000000,0.00149241,0.00149259,0.00149161,0.00149207,6255.0],[1570899060000,0.00149259,0.00149338,0.00149259,0.00149338,970.0],[1570899120000,0.00149338,0.00149338,0.00149338,0.00149338,24.0],[1570899180000,0.00149228,0.00149319,0.00149228,0.00149228,1191.0],[1570899240000,0.00149228,0.00149228,0.00149228,0.00149228,0.0],[1570899300000,0.00149051,0.00149271,0.00149051,0.00149271,435.0],[1570899360000,0.00149168,0.00149168,0.00149168,0.00149168,28.0],[1570899420000,0.00149169,0.00149169,0.00149169,0.00149169,15.0],[1570899480000,0.00149169,0.00149169,0.00149169,0.00149169,0.0],[1570899540000,0.00149156,0.00149156,0.00149156,0.00149156,154.0],[1570899600000,0.00149156,0.00149156,0.00149156,0.00149156,0.0],[1570899660000,0.00149156,0.00149156,0.00149156,0.00149156,0.0],[1570899720000,0.0014916,0.0014916,0.0014916,0.0014916,180.0],[1570899780000,0.00149027,0.00149027,0.00149027,0.00149027,13.0],[1570899840000,0.00149091,0.00149091,0.00149091,0.00149091,134.0],[1570899900000,0.00149091,0.00149091,0.00149091,0.00149091,0.0],[1570899960000,0.00149031,0.00149031,0.00149,0.00149,1491.0],[1570900020000,0.00149,0.00149,0.00148999,0.00148999,215.0],[1570900080000,0.00148951,0.00148951,0.00148908,0.00148908,15.0],[1570900140000,0.00148916,0.00148916,0.00148916,0.00148916,28.0],[1570900200000,0.00148916,0.00148916,0.00148916,0.00148916,0.0],[1570900260000,0.00148916,0.00148916,0.00148916,0.00148916,0.0],[1570900320000,0.00148916,0.00148916,0.00148916,0.00148916,0.0],[1570900380000,0.00148916,0.00148916,0.00148916,0.00148916,0.0],[1570900440000,0.00149061,0.00149061,0.00148994,0.00148994,2410.0],[1570900500000,0.00149115,0.00149115,0.00149115,0.00149115,186.0],[1570900560000,0.00149003,0.00149003,0.00149003,0.00149003,14.0],[1570900620000,0.00149029,0.00149029,0.00149029,0.00149029,1033.0],[1570900680000,0.00149042,0.00149115,0.00149029,0.00149115,2017.0],[1570900740000,0.00149079,0.00149079,0.00149079,0.00149079,33.0],[1570900800000,0.00149079,0.00149079,0.00149079,0.00149079,0.0],[1570900860000,0.00149079,0.00149079,0.00149079,0.00149079,0.0],[1570900920000,0.00149079,0.00149079,0.00149079,0.00149079,0.0],[1570900980000,0.00149102,0.00149189,0.00149102,0.00149189,70.0],[1570901040000,0.00149132,0.00149248,0.0014913,0.00149248,441.0],[1570901100000,0.0014916,0.0014916,0.00149088,0.00149088,1229.0],[1570901160000,0.00149088,0.00149088,0.00149088,0.00149088,0.0],[1570901220000,0.00148943,0.00149128,0.00148943,0.00148999,259.0],[1570901280000,0.00149184,0.00149184,0.00148999,0.00148999,932.0],[1570901340000,0.00149184,0.00149184,0.00149184,0.00149184,310.0],[1570901400000,0.00149055,0.00149055,0.00149055,0.00149055,15.0],[1570901460000,0.00149079,0.00149079,0.00149079,0.00149079,14.0],[1570901520000,0.00149079,0.00149079,0.00149079,0.00149079,0.0],[1570901580000,0.00149079,0.00149079,0.00149079,0.00149079,0.0],[1570901640000,0.00149079,0.00149079,0.00149079,0.00149079,0.0],[1570901700000,0.00149079,0.00149079,0.00149079,0.00149079,0.0],[1570901760000,0.00149001,0.00149001,0.00148917,0.00148917,401.0],[1570901820000,0.00148917,0.00148917,0.00148917,0.00148917,0.0],[1570901880000,0.00148917,0.00149162,0.00148917,0.00149162,853.0],[1570901940000,0.00149161,0.00149338,0.00149161,0.00149338,3360.0],[1570902000000,0.00149339,0.00149429,0.00149339,0.00149429,1067.0],[1570902060000,0.00149333,0.00149499,0.00149333,0.00149403,4114.0],[1570902120000,0.00149343,0.00149343,0.00149343,0.00149343,15.0],[1570902180000,0.00149344,0.00149518,0.00149344,0.00149518,54.0],[1570902240000,0.0014952,0.00149571,0.00149464,0.00149571,91.0],[1570902300000,0.00149571,0.00149571,0.00149571,0.00149571,0.0],[1570902360000,0.00149571,0.00149571,0.00149571,0.00149571,0.0],[1570902420000,0.00149571,0.00149612,0.00149571,0.00149612,1018.0],[1570902480000,0.00149459,0.00149462,0.00149459,0.00149462,27.0],[1570902540000,0.00149478,0.00149484,0.00149478,0.00149484,44.0],[1570902600000,0.00149631,0.00149639,0.00149513,0.00149513,228.0],[1570902660000,0.00149559,0.00149559,0.00149559,0.00149559,14.0],[1570902720000,0.00149559,0.00149559,0.00149559,0.00149559,0.0],[1570902780000,0.00149344,0.00149344,0.00149344,0.00149344,13.0],[1570902840000,0.00149344,0.00149344,0.00149344,0.00149344,0.0],[1570902900000,0.00149437,0.00149437,0.00149437,0.00149437,73.0],[1570902960000,0.00149437,0.00149437,0.00149346,0.00149346,201.0],[1570903020000,0.00149346,0.00149346,0.00149346,0.00149346,0.0],[1570903080000,0.00149346,0.00149346,0.00149346,0.00149346,0.0],[1570903140000,0.00149346,0.00149346,0.00149344,0.00149344,714.0],[1570903200000,0.00149344,0.00149344,0.00149344,0.00149344,0.0],[1570903260000,0.00149344,0.00149344,0.00149344,0.00149344,0.0],[1570903320000,0.00149604,0.00149604,0.00149465,0.00149465,219.0],[1570903380000,0.00149384,0.00149384,0.00149384,0.00149384,13.0],[1570903440000,0.0014939,0.00149391,0.0014939,0.00149391,87.0],[1570903500000,0.00149391,0.00149391,0.00149391,0.00149391,0.0],[1570903560000,0.00149391,0.00149391,0.00149391,0.00149391,0.0],[1570903620000,0.00149391,0.00149391,0.00149343,0.00149365,931.0],[1570903680000,0.00149168,0.0014936,0.00149072,0.0014936,8080.0],[1570903740000,0.00149262,0.00149262,0.00149262,0.00149262,16.0],[1570903800000,0.00149412,0.0014967,0.00149412,0.0014967,690.0],[1570903860000,0.00149679,0.00150023,0.00149679,0.00150023,8599.0],[1570903920000,0.00149968,0.00150131,0.00149944,0.00149944,232.0],[1570903980000,0.0015014,0.001504,0.00150041,0.00150041,6317.0],[1570904040000,0.0015025,0.0015025,0.00149829,0.00150043,1785.0],[1570904100000,0.00150046,0.00150046,0.00149572,0.00149572,703.0],[1570904160000,0.00149603,0.00149603,0.00149603,0.00149603,14.0],[1570904220000,0.00149758,0.00149916,0.00149758,0.00149916,71.0],[1570904280000,0.00149739,0.00149739,0.00149739,0.00149739,564.0],[1570904340000,0.001496,0.001496,0.00149555,0.00149555,628.0],[1570904400000,0.00149516,0.00149516,0.00149516,0.00149516,133.0],[1570904460000,0.00149638,0.00149638,0.00149638,0.00149638,570.0],[1570904520000,0.00149855,0.00149916,0.00149855,0.00149916,1708.0],[1570904580000,0.00149838,0.00149916,0.00149838,0.00149839,619.0],[1570904640000,0.00149839,0.00149839,0.00149839,0.00149839,0.0],[1570904700000,0.00149839,0.00149839,0.00149839,0.00149839,0.0],[1570904760000,0.00150019,0.00150019,0.0014981,0.0014981,3194.0],[1570904820000,0.00149808,0.00149922,0.00149808,0.00149922,1723.0],[1570904880000,0.00149922,0.00149922,0.00149922,0.00149922,0.0],[1570904940000,0.00149921,0.00149921,0.00149773,0.00149773,35.0],[1570905000000,0.00149774,0.00149774,0.00149774,0.00149774,13.0],[1570905060000,0.00150048,0.00150048,0.00149888,0.00149888,548.0],[1570905120000,0.00149888,0.00149888,0.00149888,0.00149888,15.0],[1570905180000,0.00149888,0.00149888,0.00149888,0.00149888,0.0],[1570905240000,0.00149888,0.00149888,0.00149888,0.00149888,0.0],[1570905300000,0.00149888,0.00149888,0.00149888,0.00149888,0.0],[1570905360000,0.00150078,0.00150263,0.00150078,0.00150263,717.0],[1570905420000,0.00150078,0.00150078,0.00150078,0.00150078,15.0],[1570905480000,0.00150152,0.00150216,0.00150152,0.00150216,336.0],[1570905540000,0.00150216,0.00150216,0.00150216,0.00150216,512.0],[1570905600000,0.00150216,0.00150216,0.00150216,0.00150216,0.0],[1570905660000,0.00150119,0.00150119,0.00150119,0.00150119,50.0],[1570905720000,0.00150078,0.0015025,0.00150078,0.00150078,404.0],[1570905780000,0.00150123,0.00150123,0.00150078,0.00150078,436.0],[1570905840000,0.00150078,0.00150078,0.00150078,0.00150078,0.0],[1570905900000,0.00150078,0.00150078,0.00150078,0.00150078,0.0],[1570905960000,0.00150078,0.00150078,0.00150078,0.00150078,0.0],[1570906020000,0.00150137,0.001504,0.00150078,0.001504,2300.0],[1570906080000,0.001504,0.001504,0.001504,0.001504,0.0],[1570906140000,0.00150148,0.00150148,0.00150148,0.00150148,133.0],[1570906200000,0.00150148,0.00150148,0.00150145,0.00150145,57.0],[1570906260000,0.00150286,0.00150286,0.00150286,0.00150286,714.0],[1570906320000,0.0015034,0.0015034,0.00150224,0.00150224,465.0],[1570906380000,0.00150224,0.00150224,0.00150224,0.00150224,27.0],[1570906440000,0.00150224,0.00150224,0.00150224,0.00150224,0.0],[1570906500000,0.00150224,0.00150224,0.00150155,0.00150155,46.0],[1570906560000,0.00150323,0.00150323,0.00150323,0.00150323,485.0],[1570906620000,0.00150145,0.00150145,0.00150145,0.00150145,15.0],[1570906680000,0.00150145,0.00150145,0.00150145,0.00150145,0.0],[1570906740000,0.00150321,0.00150441,0.0015023,0.00150241,35462.0],[1570906800000,0.00150542,0.00152371,0.00150542,0.00152154,51186.0],[1570906860000,0.00152379,0.00152557,0.0015166,0.0015166,26157.0],[1570906920000,0.00151658,0.00151739,0.00151377,0.00151739,8919.0],[1570906980000,0.00151536,0.00151536,0.00151536,0.00151536,131.0],[1570907040000,0.0015154,0.00151871,0.0015154,0.0015154,608.0],[1570907100000,0.0015154,0.0015154,0.0015154,0.0015154,0.0],[1570907160000,0.00151711,0.00151711,0.00151682,0.00151711,597.0],[1570907220000,0.00151567,0.00151567,0.00151539,0.00151539,47.0],[1570907280000,0.00151708,0.00151708,0.00151479,0.00151479,136.0],[1570907340000,0.00151479,0.00151479,0.00151479,0.00151479,0.0],[1570907400000,0.00151706,0.00151706,0.00151523,0.00151592,1217.0],[1570907460000,0.00151683,0.00151707,0.00151593,0.00151593,1684.0],[1570907520000,0.00151593,0.00151604,0.0015148,0.00151604,1806.0],[1570907580000,0.00151542,0.00151542,0.00151327,0.00151327,1923.0],[1570907640000,0.0015144,0.0015144,0.00151327,0.00151327,2294.0],[1570907700000,0.00151327,0.001515,0.0015132,0.00151394,8098.0],[1570907760000,0.00151586,0.00151586,0.00151586,0.00151586,47.0],[1570907820000,0.00151333,0.00151333,0.00151166,0.00151166,299.0],[1570907880000,0.00151166,0.00151166,0.00151132,0.00151132,1703.0],[1570907940000,0.00151127,0.00151154,0.00150822,0.00150822,2790.0],[1570908000000,0.00150822,0.00150822,0.00150822,0.00150822,0.0],[1570908060000,0.0015111,0.00151166,0.00150963,0.00150963,893.0],[1570908120000,0.00151007,0.00151007,0.00151007,0.00151007,15.0],[1570908180000,0.00151012,0.00151012,0.00150998,0.00150998,1196.0],[1570908240000,0.00150887,0.00150887,0.00150707,0.00150707,1547.0],[1570908300000,0.00150788,0.00150788,0.00150788,0.00150788,53.0],[1570908360000,0.00150782,0.00150782,0.00150782,0.00150782,1545.0],[1570908420000,0.00150782,0.00150782,0.00150782,0.00150782,0.0],[1570908480000,0.00150707,0.00150707,0.00150686,0.00150686,28.0],[1570908540000,0.00150681,0.00150681,0.00150615,0.00150615,2229.0],[1570908600000,0.001507,0.00150939,0.001507,0.00150939,4538.0],[1570908660000,0.00150867,0.00150867,0.0015086,0.0015086,1095.0],[1570908720000,0.0015086,0.0015086,0.0015086,0.0015086,0.0],[1570908780000,0.0015086,0.0015086,0.0015086,0.0015086,0.0],[1570908840000,0.00150612,0.00150612,0.00150612,0.00150612,13.0],[1570908900000,0.00150692,0.00150692,0.00150622,0.00150622,43.0],[1570908960000,0.00150612,0.00150612,0.00150605,0.00150605,14.0],[1570909020000,0.00150707,0.00150707,0.00150707,0.00150707,13.0],[1570909080000,0.00150707,0.00150707,0.00150707,0.00150707,0.0],[1570909140000,0.00150707,0.00150707,0.00150707,0.00150707,15.0],[1570909200000,0.00150707,0.00150707,0.00150707,0.00150707,0.0],[1570909260000,0.00150707,0.00150707,0.00150707,0.00150707,0.0],[1570909320000,0.00150814,0.00150814,0.00150814,0.00150814,30.0],[1570909380000,0.00150814,0.00150814,0.00150814,0.00150814,0.0],[1570909440000,0.00150648,0.00150648,0.00150621,0.00150621,15.0],[1570909500000,0.00150683,0.00150683,0.00150683,0.00150683,14.0],[1570909560000,0.00150683,0.00150683,0.00150683,0.00150683,0.0],[1570909620000,0.00150876,0.00150876,0.0015075,0.00150876,1553.0],[1570909680000,0.00150814,0.00150814,0.00150814,0.00150814,14.0],[1570909740000,0.00150814,0.00150814,0.00150814,0.00150814,26.0],[1570909800000,0.00150814,0.00150814,0.00150814,0.00150814,0.0],[1570909860000,0.0015075,0.00150754,0.00150579,0.00150754,1548.0],[1570909920000,0.00150754,0.00150754,0.00150754,0.00150754,0.0],[1570909980000,0.00150814,0.00150825,0.00150814,0.00150825,862.0],[1570910040000,0.00150825,0.00150825,0.00150825,0.00150825,0.0],[1570910100000,0.001507,0.00150886,0.001507,0.00150706,3990.0],[1570910160000,0.00150886,0.00150886,0.00150723,0.00150723,540.0],[1570910220000,0.00150728,0.00150728,0.00150666,0.00150666,44.0],[1570910280000,0.00150666,0.00150666,0.00150666,0.00150666,0.0],[1570910340000,0.00150666,0.00150666,0.00150666,0.00150666,0.0],[1570910400000,0.00151019,0.00151019,0.00151019,0.00151019,132.0],[1570910460000,0.0015107,0.0015107,0.00150888,0.00150888,307.0],[1570910520000,0.00150888,0.00150888,0.00150888,0.00150888,0.0],[1570910580000,0.0015113,0.00151153,0.0015113,0.00151153,347.0],[1570910640000,0.00151153,0.00151166,0.00151006,0.00151166,44174.0],[1570910700000,0.00151166,0.00151166,0.00151166,0.00151166,4766.0],[1570910760000,0.00151166,0.00151166,0.00151005,0.00151005,1689.0],[1570910820000,0.00151004,0.00151144,0.00151004,0.00151144,215.0],[1570910880000,0.00151144,0.00151144,0.00151144,0.00151144,36.0],[1570910940000,0.00151007,0.00151144,0.00151007,0.00151144,1443.0],[1570911000000,0.00151166,0.00151166,0.00151166,0.00151166,393.0],[1570911060000,0.00151005,0.00151005,0.00151005,0.00151005,14.0],[1570911120000,0.00151005,0.00151005,0.00151005,0.00151005,0.0],[1570911180000,0.00151166,0.00151166,0.00151166,0.00151166,217.0],[1570911240000,0.00151166,0.00151166,0.00151166,0.00151166,0.0],[1570911300000,0.00151166,0.00151166,0.00151015,0.00151166,2752.0],[1570911360000,0.00151269,0.00151505,0.00151269,0.00151505,11519.0],[1570911420000,0.00151505,0.00151505,0.00151408,0.00151505,757.0],[1570911480000,0.00151411,0.00151411,0.00151261,0.00151261,62.0],[1570911540000,0.00151219,0.00151219,0.00151219,0.00151219,168.0],[1570911600000,0.00151219,0.00151219,0.00151219,0.00151219,0.0],[1570911660000,0.00151512,0.00151512,0.00151512,0.00151512,395.0],[1570911720000,0.00151519,0.00151519,0.00151519,0.00151519,216.0],[1570911780000,0.00151519,0.00151519,0.00151519,0.00151519,23534.0],[1570911840000,0.00151519,0.00151519,0.00151452,0.00151452,5383.0],[1570911900000,0.00151452,0.00151452,0.00151452,0.00151452,0.0],[1570911960000,0.00151319,0.00151319,0.00151319,0.00151319,168.0],[1570912020000,0.00151319,0.00151319,0.00151319,0.00151319,0.0],[1570912080000,0.00151263,0.00151263,0.00151263,0.00151263,15.0],[1570912140000,0.00151263,0.00151263,0.00151263,0.00151263,0.0],[1570912200000,0.00151335,0.00151335,0.00151335,0.00151335,30.0],[1570912260000,0.00151275,0.00151275,0.00151275,0.00151275,13.0],[1570912320000,0.00151275,0.00151275,0.00151275,0.00151275,0.0],[1570912380000,0.00151277,0.00151277,0.00151277,0.00151277,7.0],[1570912440000,0.00151277,0.00151277,0.00151277,0.00151277,0.0],[1570912500000,0.00151223,0.00151223,0.00151223,0.00151223,15.0],[1570912560000,0.00151234,0.00151235,0.00151234,0.00151235,721.0],[1570912620000,0.00151097,0.00151097,0.00151097,0.00151097,721.0],[1570912680000,0.00151037,0.00151037,0.00151037,0.00151037,15.0],[1570912740000,0.00151031,0.00151032,0.00151031,0.00151032,144.0],[1570912800000,0.00151033,0.00151033,0.00151033,0.00151033,15.0],[1570912860000,0.00151034,0.00151034,0.00151034,0.00151034,28.0],[1570912920000,0.00151252,0.00151252,0.00151252,0.00151252,22.0],[1570912980000,0.00151068,0.00151068,0.00151068,0.00151068,660.0],[1570913040000,0.00151068,0.00151068,0.00151005,0.00151005,228.0],[1570913100000,0.001509,0.001509,0.001509,0.001509,14.0],[1570913160000,0.00151226,0.00151372,0.00151226,0.00151372,814.0],[1570913220000,0.00151372,0.00151372,0.00151372,0.00151372,0.0],[1570913280000,0.00151207,0.00151207,0.00151165,0.00151165,2584.0],[1570913340000,0.00151335,0.00151335,0.00151125,0.00151125,1930.0],[1570913400000,0.00151356,0.00151356,0.00151356,0.00151356,52.0],[1570913460000,0.00151207,0.00151207,0.00151207,0.00151207,14.0],[1570913520000,0.00151121,0.00151332,0.00151121,0.00151332,454.0],[1570913580000,0.00151125,0.00151125,0.00151125,0.00151125,231.0],[1570913640000,0.00151326,0.00151326,0.00151199,0.00151326,4988.0],[1570913700000,0.00151326,0.00151432,0.00151326,0.00151369,1176.0],[1570913760000,0.00151369,0.00151369,0.00151369,0.00151369,0.0],[1570913820000,0.00151369,0.00151369,0.00151369,0.00151369,0.0],[1570913880000,0.00151369,0.00151369,0.00151369,0.00151369,15.0],[1570913940000,0.00151369,0.00151369,0.00151369,0.00151369,0.0],[1570914000000,0.00151373,0.00151373,0.00151373,0.00151373,30.0],[1570914060000,0.00151373,0.00151373,0.00151373,0.00151373,15.0],[1570914120000,0.00151369,0.00151369,0.00151369,0.00151369,645.0],[1570914180000,0.00151369,0.00151369,0.00151311,0.00151311,188.0],[1570914240000,0.00151369,0.00151369,0.00151311,0.00151311,190.0],[1570914300000,0.00151314,0.00151314,0.00151314,0.00151314,15.0],[1570914360000,0.00151314,0.00151314,0.00151314,0.00151314,0.0],[1570914420000,0.00151261,0.00151261,0.00151185,0.00151185,67.0],[1570914480000,0.0015132,0.00151382,0.0015132,0.00151382,2677.0],[1570914540000,0.00151382,0.00151382,0.00151382,0.00151382,0.0],[1570914600000,0.00151139,0.00151139,0.00151139,0.00151139,90.0],[1570914660000,0.0015125,0.0015125,0.00151139,0.00151245,1756.0],[1570914720000,0.00151245,0.0015125,0.00151245,0.0015125,1373.0],[1570914780000,0.0015125,0.0015125,0.0015125,0.0015125,0.0],[1570914840000,0.0015125,0.0015125,0.0015125,0.0015125,0.0],[1570914900000,0.00151317,0.00151317,0.00151254,0.00151254,362.0],[1570914960000,0.00151254,0.00151254,0.00151254,0.00151254,0.0],[1570915020000,0.00151254,0.00151254,0.00151254,0.00151254,0.0],[1570915080000,0.0015125,0.0015125,0.00151189,0.00151189,299.0],[1570915140000,0.00151189,0.00151189,0.00151189,0.00151189,0.0],[1570915200000,0.00151189,0.00151189,0.00151189,0.00151189,0.0],[1570915260000,0.00151192,0.00151192,0.00151189,0.00151189,30.0],[1570915320000,0.00151189,0.00151189,0.00151189,0.00151189,529.0],[1570915380000,0.00151189,0.00151189,0.00151189,0.00151189,0.0],[1570915440000,0.00151189,0.00151189,0.00151189,0.00151189,0.0],[1570915500000,0.0015119,0.0015119,0.0015119,0.0015119,13.0],[1570915560000,0.00151189,0.00151189,0.00151189,0.00151189,13.0],[1570915620000,0.00151189,0.00151189,0.00151189,0.00151189,0.0],[1570915680000,0.00151189,0.00151189,0.00151189,0.00151189,0.0],[1570915740000,0.00151189,0.00151189,0.00151189,0.00151189,0.0],[1570915800000,0.00151189,0.00151189,0.00151189,0.00151189,0.0],[1570915860000,0.00151233,0.00151233,0.00151233,0.00151233,1000.0],[1570915920000,0.00151139,0.00151139,0.00151126,0.00151126,15.0],[1570915980000,0.00151126,0.00151126,0.00151126,0.00151126,260.0],[1570916040000,0.00150962,0.00150962,0.00150962,0.00150962,13.0],[1570916100000,0.00150962,0.00150962,0.00150962,0.00150962,0.0],[1570916160000,0.00150962,0.00150962,0.00150962,0.00150962,0.0],[1570916220000,0.00151001,0.00151001,0.00151001,0.00151001,116.0],[1570916280000,0.00151019,0.00151126,0.00150966,0.00151126,2516.0],[1570916340000,0.00151126,0.00151126,0.00151126,0.00151126,0.0],[1570916400000,0.00151176,0.00151182,0.00151176,0.00151182,19608.0],[1570916460000,0.00150971,0.00150971,0.00150971,0.00150971,73.0],[1570916520000,0.00150971,0.00150971,0.00150971,0.00150971,21.0],[1570916580000,0.00150971,0.00150971,0.00150971,0.00150971,29.0],[1570916640000,0.00150971,0.00150971,0.00150967,0.00150967,15.0],[1570916700000,0.00150967,0.00150967,0.00150967,0.00150967,13.0],[1570916760000,0.00151106,0.00151106,0.00151044,0.00151044,3052.0],[1570916820000,0.0015097,0.0015113,0.0015097,0.00150974,3114.0],[1570916880000,0.00150974,0.00150974,0.0015094,0.0015094,979.0],[1570916940000,0.0015104,0.0015104,0.0015104,0.0015104,16.0],[1570917000000,0.00151164,0.00151209,0.00151164,0.00151209,744.0],[1570917060000,0.00151209,0.00151209,0.00151209,0.00151209,0.0],[1570917120000,0.00151037,0.00151037,0.00151037,0.00151037,15.0],[1570917180000,0.00151036,0.00151036,0.00151035,0.00151035,271.0],[1570917240000,0.00151035,0.00151035,0.00151035,0.00151035,0.0],[1570917300000,0.00151194,0.00151194,0.00151194,0.00151194,132.0],[1570917360000,0.00151284,0.00151284,0.00151284,0.00151284,14.0],[1570917420000,0.00151284,0.00151284,0.00151284,0.00151284,0.0],[1570917480000,0.00151284,0.00151284,0.00151284,0.00151284,0.0],[1570917540000,0.0015105,0.00151284,0.00151048,0.00151048,303.0],[1570917600000,0.00151284,0.00151285,0.00151134,0.00151134,1652.0],[1570917660000,0.00151134,0.00151134,0.00151134,0.00151134,0.0],[1570917720000,0.00151273,0.00151273,0.00151221,0.00151221,2114.0],[1570917780000,0.0015094,0.0015094,0.00150888,0.00150888,215.0],[1570917840000,0.00150907,0.00150907,0.00150687,0.00150687,161.0],[1570917900000,0.00150687,0.00150751,0.00150687,0.00150751,30.0],[1570917960000,0.00150751,0.00150751,0.00150751,0.00150751,0.0],[1570918020000,0.00150905,0.00150906,0.00150905,0.00150906,1326.0],[1570918080000,0.00150806,0.00150806,0.00150788,0.00150788,1122.0],[1570918140000,0.00150993,0.00150993,0.00150993,0.00150993,531.0],[1570918200000,0.00150833,0.00150833,0.00150833,0.00150833,199.0],[1570918260000,0.00150788,0.00150982,0.00150764,0.00150982,2873.0],[1570918320000,0.00150794,0.00151022,0.00150794,0.00151022,146.0],[1570918380000,0.00150931,0.00150931,0.00150931,0.00150931,14.0],[1570918440000,0.00151098,0.00151361,0.00150993,0.00151361,345.0],[1570918500000,0.00151193,0.001512,0.00151193,0.001512,1726.0],[1570918560000,0.001512,0.001512,0.001512,0.001512,0.0],[1570918620000,0.00151193,0.00151193,0.00151193,0.00151193,20.0],[1570918680000,0.00151238,0.00151238,0.00151238,0.00151238,20.0],[1570918740000,0.00151064,0.00151064,0.00151064,0.00151064,15.0],[1570918800000,0.00151174,0.00151239,0.00151174,0.00151239,693.0],[1570918860000,0.00151239,0.00151239,0.00151239,0.00151239,0.0],[1570918920000,0.00151111,0.00151111,0.00151004,0.00151004,147.0],[1570918980000,0.00151004,0.00151004,0.00151004,0.00151004,0.0],[1570919040000,0.00151021,0.00151021,0.00151004,0.00151004,2225.0],[1570919100000,0.00150964,0.00150964,0.00150787,0.00150787,29.0],[1570919160000,0.00150813,0.00150813,0.00150778,0.00150778,31.0],[1570919220000,0.00150876,0.00151153,0.00150876,0.00151153,39.0],[1570919280000,0.00151096,0.00151096,0.00151096,0.00151096,10.0],[1570919340000,0.00151137,0.00151137,0.00151137,0.00151137,840.0],[1570919400000,0.00151137,0.00151137,0.00151137,0.00151137,0.0],[1570919460000,0.00151137,0.00151137,0.00151137,0.00151137,0.0],[1570919520000,0.0015095,0.00151096,0.0015095,0.00151096,337.0],[1570919580000,0.00151137,0.00151137,0.00151035,0.00151035,36.0],[1570919640000,0.00151035,0.00151035,0.00151035,0.00151035,0.0],[1570919700000,0.00150838,0.00150838,0.00150838,0.00150838,31.0],[1570919760000,0.00150838,0.00150838,0.00150838,0.00150838,0.0],[1570919820000,0.00150927,0.00150927,0.00150835,0.00150835,29.0],[1570919880000,0.00150835,0.00150835,0.00150835,0.00150835,0.0],[1570919940000,0.00150862,0.00150862,0.00150862,0.00150862,13.0],[1570920000000,0.00150862,0.00150862,0.00150862,0.00150862,14.0],[1570920060000,0.00150862,0.0015099,0.00150862,0.0015099,92.0],[1570920120000,0.0015099,0.0015099,0.0015099,0.0015099,142.0],[1570920180000,0.0015099,0.00151045,0.00150913,0.00150913,7957.0],[1570920240000,0.00151048,0.00151048,0.0015083,0.00150843,201.0],[1570920300000,0.00151041,0.00151072,0.00150862,0.00151072,2141.0],[1570920360000,0.00151039,0.00151099,0.00150826,0.00150826,1571.0],[1570920420000,0.00150892,0.00151262,0.00150892,0.00151058,2655.0],[1570920480000,0.00151058,0.00151058,0.00151058,0.00151058,0.0],[1570920540000,0.00151058,0.00151058,0.00151058,0.00151058,0.0],[1570920600000,0.0015127,0.001513,0.00151267,0.00151267,1844.0],[1570920660000,0.00151361,0.00151361,0.00151361,0.00151361,146.0],[1570920720000,0.00151361,0.00151361,0.0015121,0.0015121,611.0],[1570920780000,0.0015121,0.00151211,0.0015121,0.00151211,525.0],[1570920840000,0.00151361,0.00151386,0.00151361,0.00151386,276.0],[1570920900000,0.00151342,0.00151386,0.00151342,0.00151386,8126.0],[1570920960000,0.00151218,0.00151221,0.00151218,0.00151221,715.0],[1570921020000,0.00151386,0.00151428,0.00151344,0.00151344,845.0],[1570921080000,0.00151505,0.00151529,0.00151346,0.00151529,753.0],[1570921140000,0.00151449,0.00151449,0.00151218,0.00151218,3652.0],[1570921200000,0.00151547,0.00151558,0.00151547,0.00151558,1569.0],[1570921260000,0.00151558,0.00151558,0.00151445,0.00151445,183.0],[1570921320000,0.0015141,0.0015141,0.00151382,0.00151382,528.0],[1570921380000,0.00151382,0.00151382,0.00151382,0.00151382,0.0],[1570921440000,0.00151382,0.00151382,0.00151382,0.00151382,0.0],[1570921500000,0.00151382,0.00151517,0.00151382,0.00151517,306.0],[1570921560000,0.00151382,0.00151455,0.00151314,0.00151331,12270.0],[1570921620000,0.00151327,0.00151327,0.00151327,0.00151327,14.0],[1570921680000,0.00151327,0.00151327,0.00151241,0.00151241,9262.0],[1570921740000,0.00151242,0.00151242,0.00151242,0.00151242,16.0],[1570921800000,0.00151327,0.00151327,0.00151327,0.00151327,17091.0],[1570921860000,0.00151327,0.00151424,0.00151327,0.00151424,1998.0],[1570921920000,0.00151424,0.00151424,0.00151424,0.00151424,0.0],[1570921980000,0.00151279,0.00151442,0.00151279,0.00151442,24.0],[1570922040000,0.00151507,0.00151507,0.00151471,0.00151471,622.0],[1570922100000,0.00151325,0.00151325,0.00151026,0.00151026,1978.0],[1570922160000,0.00151253,0.00151253,0.00151253,0.00151253,438.0],[1570922220000,0.00151228,0.00151228,0.00151228,0.00151228,500.0],[1570922280000,0.00151167,0.00151167,0.00151167,0.00151167,14.0],[1570922340000,0.00151365,0.00151365,0.0015122,0.0015122,34.0],[1570922400000,0.00151378,0.00151378,0.0015122,0.0015122,88.0],[1570922460000,0.00151319,0.00151319,0.00151121,0.00151121,61.0],[1570922520000,0.00151323,0.00151323,0.00151323,0.00151323,10.0],[1570922580000,0.00151378,0.00151378,0.00151378,0.00151378,287.0],[1570922640000,0.00151234,0.00151234,0.00151234,0.00151234,10.0],[1570922700000,0.00151234,0.00151234,0.00151234,0.00151234,0.0],[1570922760000,0.00151187,0.00151187,0.00151157,0.00151157,13.0],[1570922820000,0.00151157,0.00151157,0.00151157,0.00151157,0.0],[1570922880000,0.00151157,0.00151157,0.00151157,0.00151157,0.0],[1570922940000,0.00151211,0.00151211,0.00151161,0.00151161,28.0],[1570923000000,0.00151157,0.00151174,0.00151124,0.00151174,30.0],[1570923060000,0.00151174,0.00151174,0.00151174,0.00151174,0.0],[1570923120000,0.00151285,0.00151357,0.00151285,0.00151357,460.0],[1570923180000,0.00151361,0.00151431,0.00151284,0.00151431,107.0],[1570923240000,0.00151334,0.00151334,0.00151334,0.00151334,71.0],[1570923300000,0.00151334,0.00151334,0.00151334,0.00151334,0.0],[1570923360000,0.00151334,0.00151334,0.00151334,0.00151334,0.0],[1570923420000,0.00151334,0.00151334,0.00151334,0.00151334,0.0],[1570923480000,0.00151541,0.00151541,0.00151541,0.00151541,73.0],[1570923540000,0.00151541,0.00151541,0.00151408,0.00151408,92.0],[1570923600000,0.00151342,0.00151342,0.00151335,0.00151335,14.0],[1570923660000,0.00151335,0.00151335,0.00151335,0.00151335,0.0],[1570923720000,0.00151335,0.00151335,0.00151335,0.00151335,0.0],[1570923780000,0.00151335,0.00151335,0.00151335,0.00151335,0.0],[1570923840000,0.00151335,0.00151335,0.00151335,0.00151335,16.0],[1570923900000,0.00151295,0.00151295,0.00151295,0.00151295,74.0],[1570923960000,0.00151124,0.00151124,0.00151121,0.00151121,30.0],[1570924020000,0.00151295,0.00151295,0.00151147,0.00151147,179.0],[1570924080000,0.00151147,0.00151147,0.00151147,0.00151147,0.0],[1570924140000,0.00151149,0.00151297,0.00151147,0.00151297,3151.0],[1570924200000,0.00151209,0.00151209,0.00151209,0.00151209,15.0],[1570924260000,0.00151209,0.00151209,0.00151146,0.00151146,153.0],[1570924320000,0.00151146,0.00151146,0.00151132,0.00151132,13.0],[1570924380000,0.00151133,0.00151133,0.00151133,0.00151133,14.0],[1570924440000,0.001513,0.001513,0.001513,0.001513,10.0],[1570924500000,0.00151358,0.00151361,0.00151358,0.00151361,30.0],[1570924560000,0.00151276,0.00151276,0.00151276,0.00151276,15.0],[1570924620000,0.00151579,0.00151587,0.00151579,0.00151587,345.0],[1570924680000,0.00151587,0.00151587,0.00151587,0.00151587,0.0],[1570924740000,0.00151451,0.00151451,0.00151451,0.00151451,13.0],[1570924800000,0.00151587,0.00151634,0.00151587,0.00151634,922.0],[1570924860000,0.00151658,0.00151669,0.00151658,0.00151669,141.0],[1570924920000,0.00151693,0.00151693,0.0015151,0.0015151,364.0],[1570924980000,0.00151693,0.00151769,0.00151693,0.00151769,1008.0],[1570925040000,0.00151805,0.00151847,0.00151757,0.00151757,1581.0],[1570925100000,0.00151858,0.00151858,0.00151858,0.00151858,73.0],[1570925160000,0.00151478,0.00151478,0.00151451,0.00151451,238.0],[1570925220000,0.0015167,0.0015167,0.0015167,0.0015167,73.0],[1570925280000,0.0015161,0.0015161,0.0015161,0.0015161,1526.0],[1570925340000,0.0015161,0.0015161,0.0015161,0.0015161,0.0],[1570925400000,0.001515,0.001515,0.00151451,0.00151451,825.0],[1570925460000,0.00151451,0.00151451,0.00151451,0.00151451,22.0],[1570925520000,0.00151451,0.00151451,0.00151451,0.00151451,0.0],[1570925580000,0.001515,0.001515,0.001515,0.001515,4000.0],[1570925640000,0.001515,0.001515,0.001515,0.001515,0.0],[1570925700000,0.001515,0.001515,0.001515,0.001515,35360.0],[1570925760000,0.001515,0.00151611,0.001515,0.00151611,4987.0],[1570925820000,0.00151611,0.00151611,0.00151611,0.00151611,0.0],[1570925880000,0.00151611,0.00151611,0.00151611,0.00151611,0.0],[1570925940000,0.00151518,0.00151518,0.00151518,0.00151518,131.0],[1570926000000,0.00151518,0.00151518,0.00151518,0.00151518,0.0],[1570926060000,0.00151518,0.00151518,0.00151518,0.00151518,0.0],[1570926120000,0.00151518,0.00151518,0.00151518,0.00151518,0.0],[1570926180000,0.00151518,0.00151518,0.00151518,0.00151518,0.0],[1570926240000,0.00151518,0.00151518,0.00151518,0.00151518,0.0],[1570926300000,0.00151434,0.00151434,0.00151342,0.00151342,14.0],[1570926360000,0.00151324,0.00151324,0.00151324,0.00151324,200.0],[1570926420000,0.0015152,0.0015152,0.00151325,0.00151325,251.0],[1570926480000,0.00151325,0.00151325,0.00151325,0.00151325,0.0],[1570926540000,0.00151325,0.00151325,0.00151325,0.00151325,0.0],[1570926600000,0.00151376,0.00151376,0.00151304,0.00151304,554.0],[1570926660000,0.00151304,0.00151304,0.00151304,0.00151304,0.0],[1570926720000,0.00151276,0.00151276,0.00151183,0.00151183,814.0],[1570926780000,0.00151183,0.00151183,0.00151183,0.00151183,0.0],[1570926840000,0.00151175,0.00151175,0.00151175,0.00151175,1446.0],[1570926900000,0.00151153,0.00151153,0.00151003,0.00151003,268.0],[1570926960000,0.00151029,0.00151029,0.00151029,0.00151029,2897.0],[1570927020000,0.0015107,0.0015107,0.0015107,0.0015107,132.0],[1570927080000,0.0015107,0.0015107,0.0015107,0.0015107,0.0],[1570927140000,0.00151037,0.00151044,0.00151,0.00151,2705.0],[1570927200000,0.00151,0.00151,0.00151,0.00151,0.0],[1570927260000,0.00151,0.00151,0.00151,0.00151,4125.0],[1570927320000,0.00151,0.00151,0.00151,0.00151,141.0],[1570927380000,0.00150998,0.00151156,0.00150998,0.00151156,193.0],[1570927440000,0.00150998,0.00150998,0.00150998,0.00150998,16.0],[1570927500000,0.00151052,0.0015121,0.00151052,0.00151052,1154.0],[1570927560000,0.00151052,0.00151052,0.00151028,0.00151028,1958.0],[1570927620000,0.00151211,0.00151211,0.00151093,0.00151116,312.0],[1570927680000,0.00151272,0.00151362,0.0015125,0.00151362,1073.0],[1570927740000,0.00151389,0.0015147,0.00151389,0.0015147,2541.0],[1570927800000,0.00151503,0.00151531,0.00151475,0.00151475,805.0],[1570927860000,0.00151571,0.00151875,0.00151571,0.00151875,1433.0],[1570927920000,0.00151748,0.00151876,0.00151386,0.00151876,3567.0],[1570927980000,0.00151887,0.00151998,0.00151887,0.00151998,1393.0],[1570928040000,0.00151923,0.00151923,0.00151923,0.00151923,8.0],[1570928100000,0.00151923,0.00151923,0.00151923,0.00151923,0.0],[1570928160000,0.00151638,0.00151638,0.00151638,0.00151638,393.0],[1570928220000,0.00151577,0.00151577,0.00151577,0.00151577,17.0],[1570928280000,0.00151577,0.00151577,0.00151577,0.00151577,0.0],[1570928340000,0.00151395,0.00151395,0.00151395,0.00151395,14.0],[1570928400000,0.00151395,0.00151395,0.00151395,0.00151395,0.0],[1570928460000,0.00151539,0.00151539,0.00151539,0.00151539,14.0],[1570928520000,0.00151578,0.00151578,0.00151578,0.00151578,393.0],[1570928580000,0.00151533,0.00151755,0.00151533,0.00151755,352.0],[1570928640000,0.00151689,0.00151689,0.00151689,0.00151689,1517.0],[1570928700000,0.00151769,0.00151883,0.00151769,0.00151883,22.0],[1570928760000,0.00151495,0.00151495,0.00151495,0.00151495,16.0],[1570928820000,0.00151497,0.00151497,0.00151497,0.00151497,15.0],[1570928880000,0.00151885,0.00151885,0.00151885,0.00151885,2.0],[1570928940000,0.00151678,0.00151678,0.00151678,0.00151678,16.0],[1570929000000,0.00151495,0.00151513,0.00151495,0.00151513,33.0],[1570929060000,0.00151513,0.00151513,0.00151513,0.00151513,0.0],[1570929120000,0.00151505,0.00151505,0.00151505,0.00151505,33.0],[1570929180000,0.00151505,0.00151505,0.00151505,0.00151505,0.0],[1570929240000,0.00151507,0.00151507,0.00151507,0.00151507,16.0],[1570929300000,0.00151507,0.00151507,0.00151507,0.00151507,0.0],[1570929360000,0.00151494,0.00151494,0.00151492,0.00151492,20.0],[1570929420000,0.00151492,0.00151492,0.00151492,0.00151492,0.0],[1570929480000,0.00151411,0.00151411,0.00151338,0.00151375,3428.0],[1570929540000,0.00151587,0.00151588,0.00150754,0.00150917,4205.0],[1570929600000,0.00150835,0.00150948,0.00150298,0.00150948,5349.0],[1570929660000,0.00150862,0.00151166,0.00150862,0.00151007,2878.0],[1570929720000,0.00150988,0.00151051,0.00150988,0.00151051,2239.0],[1570929780000,0.00151082,0.00151085,0.00151082,0.00151085,33.0],[1570929840000,0.00151123,0.00151302,0.00151082,0.00151082,2913.0],[1570929900000,0.00151064,0.00151299,0.00151064,0.00151299,1086.0],[1570929960000,0.00151093,0.00151122,0.00150916,0.00151122,679.0],[1570930020000,0.00151122,0.00151223,0.00151122,0.00151149,202.0],[1570930080000,0.00151143,0.00151224,0.00151103,0.00151224,2019.0],[1570930140000,0.00150958,0.0015107,0.00150958,0.0015107,2692.0],[1570930200000,0.00151224,0.00151224,0.00150858,0.00150858,17.0],[1570930260000,0.00150682,0.00150682,0.00150682,0.00150682,17.0],[1570930320000,0.00150682,0.00150682,0.00150682,0.00150682,0.0],[1570930380000,0.00150681,0.00150692,0.00150681,0.00150692,1762.0],[1570930440000,0.00150692,0.00150692,0.00150692,0.00150692,0.0],[1570930500000,0.00150828,0.00150828,0.00150708,0.00150708,221.0],[1570930560000,0.00150761,0.00150761,0.00150761,0.00150761,162.0],[1570930620000,0.00150761,0.00150761,0.00150761,0.00150761,0.0],[1570930680000,0.00150761,0.00150761,0.00150593,0.00150593,1518.0],[1570930740000,0.001507,0.001507,0.001507,0.001507,77.0],[1570930800000,0.00150751,0.00150751,0.001507,0.001507,909.0],[1570930860000,0.001507,0.001507,0.001507,0.001507,0.0],[1570930920000,0.001507,0.001507,0.001507,0.001507,0.0],[1570930980000,0.00150995,0.00150995,0.00150995,0.00150995,132.0],[1570931040000,0.00150878,0.00150878,0.00150869,0.00150869,1761.0],[1570931100000,0.00150965,0.00150966,0.00150965,0.00150966,1003.0],[1570931160000,0.00150691,0.00150691,0.00150512,0.00150512,2068.0],[1570931220000,0.0015064,0.0015064,0.0015064,0.0015064,869.0],[1570931280000,0.00150763,0.00151071,0.00150763,0.00151025,3664.0],[1570931340000,0.00150806,0.00150806,0.00150806,0.00150806,19.0],[1570931400000,0.00150707,0.00150707,0.00150706,0.00150706,32.0],[1570931460000,0.00150675,0.00150855,0.00150675,0.00150855,201.0],[1570931520000,0.00150855,0.0015086,0.00150675,0.00150675,290.0],[1570931580000,0.00150675,0.00150675,0.00150675,0.00150675,116.0],[1570931640000,0.00150675,0.00150675,0.00150675,0.00150675,0.0],[1570931700000,0.00150675,0.00150675,0.00150675,0.00150675,0.0],[1570931760000,0.00150855,0.00150855,0.00150855,0.00150855,58.0],[1570931820000,0.00150676,0.00150676,0.00150676,0.00150676,15.0],[1570931880000,0.00150676,0.00150676,0.00150676,0.00150676,0.0],[1570931940000,0.00150676,0.00150676,0.0015054,0.00150603,1535.0],[1570932000000,0.00150603,0.00150603,0.00150603,0.00150603,0.0],[1570932060000,0.00150603,0.00150603,0.00150603,0.00150603,0.0],[1570932120000,0.00150603,0.00150603,0.00150603,0.00150603,0.0],[1570932180000,0.00150569,0.00150569,0.00150569,0.00150569,15.0],[1570932240000,0.00150569,0.00150631,0.00150512,0.00150512,903.0],[1570932300000,0.00150496,0.00150496,0.00150496,0.00150496,1520.0],[1570932360000,0.00150415,0.00150415,0.00150415,0.00150415,17.0],[1570932420000,0.00150415,0.00150415,0.00150415,0.00150415,0.0],[1570932480000,0.00150415,0.00150415,0.00150415,0.00150415,14.0],[1570932540000,0.00150415,0.00150415,0.00150415,0.00150415,0.0],[1570932600000,0.00150379,0.00150379,0.00150379,0.00150379,97.0],[1570932660000,0.0015035,0.00150432,0.0015035,0.00150432,4180.0],[1570932720000,0.0015053,0.0015053,0.00150409,0.00150409,49.0],[1570932780000,0.0015041,0.00150598,0.0015041,0.00150598,398.0],[1570932840000,0.00150478,0.00150646,0.00150478,0.00150646,223.0],[1570932900000,0.00150731,0.00150747,0.00150731,0.00150747,1165.0],[1570932960000,0.00150803,0.00150803,0.0015059,0.0015059,148.0],[1570933020000,0.00150915,0.00150922,0.00150806,0.00150922,438.0],[1570933080000,0.00150922,0.00150922,0.00150922,0.00150922,0.0],[1570933140000,0.00150922,0.00150923,0.00150919,0.00150919,241.0],[1570933200000,0.0015092,0.00151071,0.0015092,0.00150965,144.0],[1570933260000,0.00150965,0.00150965,0.00150965,0.00150965,0.0],[1570933320000,0.00151127,0.00151153,0.00151024,0.00151153,685.0],[1570933380000,0.00151094,0.00151094,0.0015096,0.0015096,1530.0],[1570933440000,0.00151066,0.00151066,0.00151066,0.00151066,1514.0],[1570933500000,0.00151066,0.00151066,0.00151066,0.00151066,0.0],[1570933560000,0.00151205,0.00151205,0.00151066,0.00151095,778.0],[1570933620000,0.00151224,0.00151224,0.00151224,0.00151224,17.0],[1570933680000,0.00151341,0.00151341,0.00151341,0.00151341,72.0],[1570933740000,0.00151167,0.00151167,0.00151167,0.00151167,16.0],[1570933800000,0.00151167,0.00151167,0.00151167,0.00151167,0.0],[1570933860000,0.00151105,0.00151105,0.00151105,0.00151105,16.0],[1570933920000,0.00151105,0.00151307,0.00151105,0.00151307,432.0],[1570933980000,0.00151307,0.00151307,0.00151184,0.00151307,2720.0],[1570934040000,0.00151184,0.00151241,0.00151184,0.00151241,3694.0],[1570934100000,0.00151184,0.00151184,0.00151184,0.00151184,18.0],[1570934160000,0.00151185,0.00151185,0.00150857,0.00150857,4551.0],[1570934220000,0.00150857,0.00150857,0.00150857,0.00150857,0.0],[1570934280000,0.00150857,0.00150857,0.00150857,0.00150857,0.0],[1570934340000,0.001509,0.001509,0.001509,0.001509,16.0],[1570934400000,0.00150901,0.00150901,0.00150901,0.00150901,1270.0],[1570934460000,0.00150901,0.00150901,0.00150901,0.00150901,0.0],[1570934520000,0.00150801,0.00150801,0.00150801,0.00150801,14.0],[1570934580000,0.0015079,0.0015079,0.0015079,0.0015079,16.0],[1570934640000,0.0015079,0.0015079,0.0015079,0.0015079,421.0],[1570934700000,0.0015079,0.0015079,0.0015079,0.0015079,0.0],[1570934760000,0.00150717,0.00150717,0.00150681,0.00150702,99.0],[1570934820000,0.00150702,0.00150702,0.00150702,0.00150702,0.0],[1570934880000,0.00150858,0.00150985,0.00150858,0.00150985,7094.0],[1570934940000,0.00150985,0.00150985,0.00150985,0.00150985,0.0],[1570935000000,0.00150985,0.00150985,0.00150985,0.00150985,0.0],[1570935060000,0.00150985,0.00150985,0.00150985,0.00150985,0.0],[1570935120000,0.00150985,0.00150985,0.00150985,0.00150985,0.0],[1570935180000,0.00150944,0.00150944,0.00150932,0.00150932,52.0],[1570935240000,0.00150932,0.00150932,0.00150932,0.00150932,0.0],[1570935300000,0.00150882,0.00150932,0.00150882,0.00150932,24.0],[1570935360000,0.00150821,0.00150821,0.00150703,0.00150703,283.0],[1570935420000,0.00150703,0.00150703,0.00150703,0.00150703,19.0],[1570935480000,0.00150703,0.00150703,0.00150703,0.00150703,0.0],[1570935540000,0.00150703,0.00150703,0.00150703,0.00150703,0.0],[1570935600000,0.00150703,0.00150703,0.00150681,0.00150681,14.0],[1570935660000,0.00150822,0.00150822,0.00150822,0.00150822,65.0],[1570935720000,0.00150822,0.00150822,0.00150822,0.00150822,0.0],[1570935780000,0.00150822,0.00150822,0.00150822,0.00150822,0.0],[1570935840000,0.00150696,0.00150696,0.00150696,0.00150696,16.0],[1570935900000,0.00150696,0.00150696,0.00150696,0.00150696,0.0],[1570935960000,0.00150839,0.00150839,0.00150839,0.00150839,1506.0],[1570936020000,0.00150728,0.00150728,0.00150728,0.00150728,25.0],[1570936080000,0.00150728,0.00150728,0.00150728,0.00150728,0.0],[1570936140000,0.00150696,0.00150696,0.00150681,0.00150681,14.0],[1570936200000,0.00150681,0.00150681,0.00150681,0.00150681,0.0],[1570936260000,0.00150681,0.00150681,0.00150681,0.00150681,0.0],[1570936320000,0.00150681,0.00150681,0.00150681,0.00150681,0.0],[1570936380000,0.00150807,0.00150884,0.0015059,0.00150814,2415.0],[1570936440000,0.00150814,0.00150814,0.00150814,0.00150814,0.0],[1570936500000,0.00150764,0.00150764,0.00150745,0.00150745,32.0],[1570936560000,0.00150752,0.00150752,0.00150752,0.00150752,15.0],[1570936620000,0.00150751,0.00150751,0.00150751,0.00150751,16.0],[1570936680000,0.00150751,0.00150751,0.00150751,0.00150751,0.0],[1570936740000,0.00150751,0.00150751,0.00150751,0.00150751,0.0],[1570936800000,0.00150937,0.00150937,0.00150726,0.00150726,351.0],[1570936860000,0.00150726,0.00150726,0.00150726,0.00150726,0.0],[1570936920000,0.00150742,0.00150742,0.00150742,0.00150742,15.0],[1570936980000,0.00150742,0.00150742,0.00150742,0.00150742,0.0],[1570937040000,0.00150744,0.00150744,0.00150744,0.00150744,378.0],[1570937100000,0.00150765,0.00150765,0.00150765,0.00150765,264.0],[1570937160000,0.00150765,0.00150765,0.00150765,0.00150765,0.0],[1570937220000,0.00150674,0.00150674,0.00150674,0.00150674,31.0],[1570937280000,0.00150765,0.00150765,0.00150765,0.00150765,283.0],[1570937340000,0.00150765,0.00150765,0.00150739,0.00150739,1310.0],[1570937400000,0.00150739,0.00150739,0.00150739,0.00150739,0.0],[1570937460000,0.00150739,0.00150739,0.00150739,0.00150739,0.0],[1570937520000,0.00150616,0.00150616,0.00150616,0.00150616,19.0],[1570937580000,0.00150616,0.00150616,0.00150616,0.00150616,0.0],[1570937640000,0.00150675,0.00150675,0.00150675,0.00150675,15.0],[1570937700000,0.00150675,0.00150675,0.00150675,0.00150675,0.0],[1570937760000,0.00150739,0.00150739,0.00150739,0.00150739,32.0],[1570937820000,0.00150739,0.00150739,0.00150739,0.00150739,0.0],[1570937880000,0.00150699,0.00150699,0.00150699,0.00150699,33.0],[1570937940000,0.00150699,0.00150699,0.00150699,0.00150699,35.0],[1570938000000,0.00150699,0.00150699,0.00150699,0.00150699,17.0],[1570938060000,0.00150699,0.00150699,0.00150699,0.00150699,47.0],[1570938120000,0.00150699,0.00150699,0.00150699,0.00150699,0.0],[1570938180000,0.00150699,0.00150699,0.00150699,0.00150699,0.0],[1570938240000,0.00150699,0.00150699,0.00150699,0.00150699,0.0],[1570938300000,0.00150699,0.00150699,0.00150699,0.00150699,0.0],[1570938360000,0.00150699,0.00150699,0.00150699,0.00150699,0.0],[1570938420000,0.00150742,0.00150858,0.00150742,0.00150858,149.0],[1570938480000,0.00150949,0.00150949,0.00150949,0.00150949,18.0],[1570938540000,0.00150688,0.00150688,0.00150686,0.00150686,32.0],[1570938600000,0.00150686,0.00150686,0.00150686,0.00150686,0.0],[1570938660000,0.00150686,0.00150686,0.00150686,0.00150686,0.0],[1570938720000,0.00150686,0.00150686,0.00150686,0.00150686,0.0],[1570938780000,0.00150686,0.00150686,0.00150686,0.00150686,0.0],[1570938840000,0.00150859,0.00150859,0.00150859,0.00150859,59.0],[1570938900000,0.001509,0.001509,0.001509,0.001509,20455.0],[1570938960000,0.001509,0.00150999,0.001509,0.00150999,732.0],[1570939020000,0.001509,0.001509,0.00150883,0.00150883,16.0],[1570939080000,0.00150883,0.00150883,0.00150883,0.00150883,0.0],[1570939140000,0.00150859,0.00150859,0.00150859,0.00150859,15.0],[1570939200000,0.00150876,0.00150876,0.00150876,0.00150876,33.0],[1570939260000,0.00150932,0.00150932,0.00150932,0.00150932,16.0],[1570939320000,0.00150935,0.00150935,0.00150859,0.00150859,59.0],[1570939380000,0.00150859,0.00150859,0.00150859,0.00150859,0.0],[1570939440000,0.00150859,0.00150859,0.00150859,0.00150859,543.0],[1570939500000,0.00150859,0.00150859,0.00150859,0.00150859,0.0],[1570939560000,0.00150905,0.00150905,0.00150905,0.00150905,18.0],[1570939620000,0.00151013,0.00151013,0.00150945,0.00151013,223.0],[1570939680000,0.0015105,0.00151075,0.0015105,0.00151075,160.0],[1570939740000,0.00151131,0.00151253,0.00151131,0.00151253,3262.0],[1570939800000,0.00151305,0.00151427,0.00151305,0.00151427,3028.0],[1570939860000,0.00151442,0.00151497,0.00151442,0.00151444,575.0],[1570939920000,0.00151505,0.00151505,0.00151392,0.00151392,792.0],[1570939980000,0.00151392,0.00151392,0.00151392,0.00151392,0.0],[1570940040000,0.00151519,0.00151519,0.00151373,0.00151373,917.0],[1570940100000,0.00151548,0.00151548,0.00151305,0.00151305,8875.0],[1570940160000,0.00151305,0.00151305,0.00151305,0.00151305,0.0],[1570940220000,0.00151363,0.00151363,0.00151363,0.00151363,2917.0],[1570940280000,0.00151157,0.00151157,0.00151157,0.00151157,8.0],[1570940340000,0.00151165,0.00151165,0.00151165,0.00151165,16.0],[1570940400000,0.00151175,0.00151175,0.00151168,0.00151168,529.0],[1570940460000,0.00151169,0.00151371,0.00151153,0.00151153,624.0],[1570940520000,0.00151153,0.00151153,0.00151153,0.00151153,10512.0],[1570940580000,0.00151072,0.00151227,0.00151072,0.00151227,760.0],[1570940640000,0.00151227,0.00151227,0.00151227,0.00151227,0.0],[1570940700000,0.00151227,0.00151227,0.00151227,0.00151227,132.0],[1570940760000,0.00151228,0.00151228,0.00151228,0.00151228,60.0],[1570940820000,0.00151228,0.00151228,0.00151078,0.00151078,627.0],[1570940880000,0.00151078,0.00151078,0.00151078,0.00151078,15.0],[1570940940000,0.00151078,0.00151078,0.00151078,0.00151078,0.0],[1570941000000,0.00151078,0.00151078,0.00151078,0.00151078,0.0],[1570941060000,0.00151077,0.00151077,0.00151077,0.00151077,50.0],[1570941120000,0.00151077,0.00151077,0.00151077,0.00151077,346.0],[1570941180000,0.00151077,0.00151077,0.00151077,0.00151077,0.0],[1570941240000,0.00151022,0.00151022,0.00150899,0.00150899,1531.0],[1570941300000,0.00151185,0.00151236,0.00151185,0.00151236,1519.0],[1570941360000,0.00151236,0.00151236,0.00151236,0.00151236,140.0],[1570941420000,0.00151236,0.00151236,0.00151236,0.00151236,2135.0],[1570941480000,0.00151236,0.00151236,0.00151236,0.00151236,1501.0],[1570941540000,0.00151236,0.00151236,0.00151236,0.00151236,0.0],[1570941600000,0.00151094,0.00151094,0.00151094,0.00151094,32.0],[1570941660000,0.00151141,0.00151141,0.00151141,0.00151141,15.0],[1570941720000,0.0015109,0.0015109,0.0015109,0.0015109,31.0],[1570941780000,0.0015109,0.0015109,0.0015109,0.0015109,17.0],[1570941840000,0.0015109,0.0015109,0.0015109,0.0015109,0.0],[1570941900000,0.00151151,0.00151151,0.00151151,0.00151151,16.0],[1570941960000,0.00151168,0.00151168,0.00151168,0.00151168,528.0],[1570942020000,0.00151168,0.00151168,0.00151168,0.00151168,0.0],[1570942080000,0.00151161,0.00151625,0.00151161,0.00151625,4026.0],[1570942140000,0.00151625,0.00151625,0.00151625,0.00151625,0.0],[1570942200000,0.00151625,0.00151625,0.00151625,0.00151625,0.0],[1570942260000,0.00151625,0.00151625,0.00151625,0.00151625,0.0],[1570942320000,0.00151586,0.00151586,0.00151586,0.00151586,1053.0],[1570942380000,0.00151591,0.00151684,0.00151591,0.00151684,179.0],[1570942440000,0.00151688,0.00151805,0.00151572,0.00151572,1700.0],[1570942500000,0.00151573,0.00151772,0.00151573,0.00151578,3555.0],[1570942560000,0.00151838,0.00151882,0.00151711,0.00151711,3691.0],[1570942620000,0.00151882,0.00151932,0.00151882,0.00151932,85.0],[1570942680000,0.00151975,0.00151975,0.00151856,0.00151856,335.0],[1570942740000,0.00151861,0.00152,0.00151852,0.00152,21655.0],[1570942800000,0.00152,0.00152,0.00151851,0.00151851,12472.0],[1570942860000,0.00151851,0.00152,0.00151843,0.00152,4270.0],[1570942920000,0.00152,0.00152,0.00152,0.00152,10289.0],[1570942980000,0.00152,0.00152,0.0015191,0.0015191,28081.0],[1570943040000,0.0015191,0.00152,0.0015191,0.0015191,3713.0],[1570943100000,0.00152,0.00152,0.00152,0.00152,901.0],[1570943160000,0.00152,0.00152,0.00151991,0.00152,21697.0],[1570943220000,0.00151759,0.00151759,0.00151759,0.00151759,60.0],[1570943280000,0.00151826,0.00152,0.00151826,0.00152,1049.0],[1570943340000,0.00152,0.00152,0.00152,0.00152,5913.0],[1570943400000,0.00152,0.00152,0.00152,0.00152,10569.0],[1570943460000,0.00152,0.00152,0.00152,0.00152,0.0],[1570943520000,0.00151994,0.00152,0.00151899,0.00152,36479.0],[1570943580000,0.00151746,0.00152,0.00151746,0.00152,34918.0],[1570943640000,0.00151822,0.00152035,0.00151822,0.0015197,13733.0],[1570943700000,0.0015206,0.00152142,0.00151926,0.00152142,5112.0],[1570943760000,0.00152163,0.00152199,0.00152163,0.00152199,311.0],[1570943820000,0.00152106,0.00152278,0.00152106,0.00152278,237.0],[1570943880000,0.00152325,0.00152325,0.00152113,0.00152178,5231.0],[1570943940000,0.00151925,0.00151967,0.00151925,0.00151967,30.0],[1570944000000,0.00151925,0.00151925,0.00151925,0.00151925,134.0],[1570944060000,0.00151925,0.00151925,0.00151711,0.00151711,320.0],[1570944120000,0.00151711,0.00151711,0.00151711,0.00151711,0.0],[1570944180000,0.00151712,0.00151712,0.00151711,0.00151711,106.0],[1570944240000,0.00151625,0.00151625,0.00151573,0.00151573,151.0],[1570944300000,0.00151573,0.00151573,0.00151537,0.00151537,164.0],[1570944360000,0.00151538,0.00151538,0.00151512,0.00151512,1817.0],[1570944420000,0.00151701,0.00151701,0.00151701,0.00151701,182.0],[1570944480000,0.00151649,0.00151701,0.00151649,0.00151701,39.0],[1570944540000,0.00151701,0.00151701,0.00151701,0.00151701,16.0],[1570944600000,0.0015165,0.0015165,0.0015165,0.0015165,26.0],[1570944660000,0.0015165,0.0015165,0.001516,0.001516,681.0],[1570944720000,0.001516,0.001516,0.001516,0.001516,0.0],[1570944780000,0.00151583,0.00151711,0.00151531,0.00151667,2018.0],[1570944840000,0.00151589,0.00151589,0.00151589,0.00151589,1513.0],[1570944900000,0.00151607,0.00151607,0.0015153,0.00151532,165.0],[1570944960000,0.00151532,0.00151532,0.00151532,0.00151532,0.0],[1570945020000,0.00151532,0.00151532,0.00151532,0.00151532,0.0],[1570945080000,0.00151625,0.00151625,0.00151485,0.00151485,544.0],[1570945140000,0.00151485,0.00151485,0.00151485,0.00151485,0.0],[1570945200000,0.00151763,0.00151763,0.00151763,0.00151763,72.0],[1570945260000,0.00151631,0.00151631,0.00151616,0.00151616,83.0],[1570945320000,0.00151616,0.00151616,0.00151616,0.00151616,0.0],[1570945380000,0.00151681,0.00151681,0.00151616,0.00151616,174.0],[1570945440000,0.00151584,0.00151584,0.00151584,0.00151584,16.0],[1570945500000,0.00151584,0.00151584,0.00151579,0.00151579,377.0],[1570945560000,0.00151579,0.00151579,0.00151579,0.00151579,152.0],[1570945620000,0.00151543,0.00151543,0.00151543,0.00151543,17.0],[1570945680000,0.00151543,0.00151543,0.00151484,0.00151484,35.0],[1570945740000,0.00151529,0.00151529,0.00151529,0.00151529,39.0],[1570945800000,0.00151671,0.00151671,0.00151671,0.00151671,10.0],[1570945860000,0.00151671,0.00151678,0.00151671,0.00151678,40.0],[1570945920000,0.00151603,0.0015174,0.00151603,0.0015174,58.0],[1570945980000,0.00151763,0.0015189,0.00151763,0.0015189,973.0],[1570946040000,0.00151804,0.00151804,0.00151657,0.00151723,2670.0],[1570946100000,0.00151726,0.00151918,0.00151726,0.00151918,178.0],[1570946160000,0.00151918,0.00151918,0.00151918,0.00151918,0.0],[1570946220000,0.0015191,0.00151927,0.0015191,0.00151927,876.0],[1570946280000,0.00151927,0.00151927,0.00151927,0.00151927,0.0],[1570946340000,0.00151764,0.00151764,0.00151764,0.00151764,96.0],[1570946400000,0.0015176,0.00151924,0.0015176,0.00151924,2339.0],[1570946460000,0.00151924,0.00151925,0.00151867,0.00151867,4132.0],[1570946520000,0.00151803,0.00151803,0.00151803,0.00151803,818.0],[1570946580000,0.00151803,0.00151803,0.00151802,0.00151802,16.0],[1570946640000,0.00151803,0.00151803,0.00151803,0.00151803,1455.0],[1570946700000,0.00151802,0.00151802,0.00151735,0.00151735,20.0],[1570946760000,0.0015176,0.0015176,0.0015176,0.0015176,1509.0],[1570946820000,0.00151734,0.00151854,0.00151734,0.00151854,1527.0],[1570946880000,0.00151786,0.00151786,0.00151725,0.00151725,761.0],[1570946940000,0.00151725,0.00151725,0.00151725,0.00151725,0.0],[1570947000000,0.00151725,0.00151725,0.00151725,0.00151725,0.0],[1570947060000,0.00151871,0.00151871,0.00151808,0.00151808,3001.0],[1570947120000,0.00151808,0.00151808,0.00151808,0.00151808,0.0],[1570947180000,0.00151802,0.00151802,0.00151802,0.00151802,601.0],[1570947240000,0.00151803,0.00151804,0.00151803,0.00151804,1338.0],[1570947300000,0.00151814,0.00151933,0.00151814,0.00151933,45.0],[1570947360000,0.00151821,0.00151983,0.00151818,0.00151983,1688.0],[1570947420000,0.0015185,0.00151987,0.00151813,0.00151987,2185.0],[1570947480000,0.00152046,0.00152142,0.00151949,0.00152142,3323.0],[1570947540000,0.0015207,0.0015207,0.0015207,0.0015207,1508.0],[1570947600000,0.0015218,0.00152249,0.00151921,0.00151921,5722.0],[1570947660000,0.00151921,0.00151921,0.00151921,0.00151921,0.0],[1570947720000,0.00152248,0.00152325,0.00152103,0.0015223,12881.0],[1570947780000,0.0015223,0.00152351,0.0015223,0.00152351,2435.0],[1570947840000,0.00152351,0.00152351,0.00152351,0.00152351,0.0],[1570947900000,0.00152351,0.00152351,0.00152351,0.00152351,0.0],[1570947960000,0.00152278,0.00152279,0.00152278,0.00152279,106.0],[1570948020000,0.00152283,0.00152359,0.00152204,0.00152204,3365.0],[1570948080000,0.00152144,0.00152144,0.00152144,0.00152144,53.0],[1570948140000,0.00152144,0.00152144,0.00152144,0.00152144,0.0],[1570948200000,0.00152021,0.00152021,0.00152021,0.00152021,14.0],[1570948260000,0.00152021,0.00152022,0.00151836,0.00151836,473.0],[1570948320000,0.00151811,0.00151811,0.0015178,0.00151805,321.0],[1570948380000,0.00151805,0.00151805,0.00151805,0.00151805,0.0],[1570948440000,0.00151805,0.00151805,0.00151805,0.00151805,0.0],[1570948500000,0.0015178,0.0015178,0.00151622,0.00151622,506.0],[1570948560000,0.00151622,0.00151622,0.00151622,0.00151622,0.0],[1570948620000,0.00151598,0.00151598,0.00151569,0.00151569,149.0],[1570948680000,0.00151896,0.00151896,0.00151814,0.00151896,300.0],[1570948740000,0.00151992,0.00152056,0.00151846,0.00151846,4230.0],[1570948800000,0.00151846,0.00151846,0.00151846,0.00151846,0.0],[1570948860000,0.00151846,0.00151846,0.00151846,0.00151846,0.0],[1570948920000,0.00152054,0.00152054,0.00151924,0.00151924,193.0],[1570948980000,0.00151924,0.00151924,0.00151924,0.00151924,0.0],[1570949040000,0.00152054,0.00152056,0.00152054,0.00152056,139.0],[1570949100000,0.00152056,0.00152096,0.00152055,0.00152096,514.0],[1570949160000,0.00152001,0.00152001,0.00152001,0.00152001,1212.0],[1570949220000,0.00151941,0.00151941,0.00151941,0.00151941,585.0],[1570949280000,0.00152096,0.00152233,0.00152005,0.00152005,12195.0],[1570949340000,0.00152005,0.00152005,0.00152005,0.00152005,0.0],[1570949400000,0.00152011,0.00152011,0.00151896,0.00151896,100.0],[1570949460000,0.00151896,0.00151896,0.00151896,0.00151896,0.0],[1570949520000,0.00151896,0.00151896,0.00151896,0.00151896,0.0],[1570949580000,0.00151896,0.00151896,0.00151896,0.00151896,0.0],[1570949640000,0.00151896,0.00151896,0.00151896,0.00151896,0.0],[1570949700000,0.00152065,0.00152065,0.00152065,0.00152065,190.0],[1570949760000,0.00152065,0.00152065,0.00152065,0.00152065,0.0],[1570949820000,0.00152065,0.00152065,0.00152065,0.00152065,0.0],[1570949880000,0.00152065,0.00152065,0.00152065,0.00152065,0.0],[1570949940000,0.00152065,0.00152065,0.00152065,0.00152065,0.0],[1570950000000,0.00152057,0.00152057,0.00152057,0.00152057,897.0],[1570950060000,0.00152057,0.00152057,0.00152057,0.00152057,0.0],[1570950120000,0.00152128,0.00152128,0.00152128,0.00152128,657.0],[1570950180000,0.00152128,0.00152128,0.00152128,0.00152128,0.0],[1570950240000,0.00151913,0.00151913,0.00151913,0.00151913,500.0],[1570950300000,0.00151913,0.00151913,0.00151913,0.00151913,0.0],[1570950360000,0.00151913,0.00151913,0.00151913,0.00151913,0.0],[1570950420000,0.00151913,0.00151913,0.00151913,0.00151913,0.0],[1570950480000,0.00151913,0.00151913,0.00151913,0.00151913,0.0],[1570950540000,0.00151913,0.00151913,0.00151913,0.00151913,0.0],[1570950600000,0.00151913,0.00151913,0.00151913,0.00151913,0.0],[1570950660000,0.00151913,0.00151913,0.00151913,0.00151913,0.0],[1570950720000,0.00152131,0.00152132,0.0015196,0.0015196,316.0],[1570950780000,0.0015196,0.0015196,0.0015196,0.0015196,252.0],[1570950840000,0.0015196,0.0015196,0.0015196,0.0015196,524.0],[1570950900000,0.0015196,0.0015196,0.0015196,0.0015196,0.0],[1570950960000,0.00152048,0.00152048,0.00152048,0.00152048,158.0],[1570951020000,0.0015212,0.00152132,0.0015212,0.00152132,273.0],[1570951080000,0.00152196,0.00152196,0.00152091,0.00152164,3668.0],[1570951140000,0.00152164,0.00152164,0.00152164,0.00152164,0.0],[1570951200000,0.00152164,0.00152164,0.00152164,0.00152164,0.0],[1570951260000,0.00152164,0.00152164,0.00152164,0.00152164,4766.0],[1570951320000,0.00152163,0.00152163,0.00152163,0.00152163,72.0],[1570951380000,0.00152163,0.00152164,0.00152163,0.00152164,3660.0],[1570951440000,0.00152272,0.00152295,0.00152272,0.00152295,448.0],[1570951500000,0.00152295,0.00152351,0.00152273,0.00152273,1537.0],[1570951560000,0.00152273,0.00152273,0.00152273,0.00152273,0.0],[1570951620000,0.00152273,0.00152273,0.00152273,0.00152273,0.0],[1570951680000,0.00152273,0.00152273,0.00152273,0.00152273,0.0],[1570951740000,0.00152273,0.00152273,0.00152273,0.00152273,0.0],[1570951800000,0.00152273,0.00152273,0.00152273,0.00152273,0.0],[1570951860000,0.0015213,0.0015213,0.00152129,0.00152129,699.0],[1570951920000,0.00152129,0.00152129,0.00152129,0.00152129,0.0],[1570951980000,0.00152129,0.00152129,0.00152129,0.00152129,0.0],[1570952040000,0.00152129,0.00152129,0.00152129,0.00152129,0.0],[1570952100000,0.00152129,0.00152129,0.00152129,0.00152129,0.0],[1570952160000,0.00152129,0.00152129,0.00152129,0.00152129,0.0],[1570952220000,0.00152193,0.00152391,0.00152122,0.00152368,3987.0],[1570952280000,0.00152368,0.00152368,0.00152368,0.00152368,0.0],[1570952340000,0.00152323,0.00152437,0.00152249,0.00152437,10831.0],[1570952400000,0.00152436,0.00152436,0.00152436,0.00152436,40.0],[1570952460000,0.00152442,0.00152456,0.00152442,0.00152456,46.0],[1570952520000,0.00152456,0.00152456,0.00152456,0.00152456,0.0],[1570952580000,0.00152456,0.00152456,0.00152456,0.00152456,0.0],[1570952640000,0.00152456,0.00152456,0.00152456,0.00152456,0.0],[1570952700000,0.00152438,0.00152699,0.00152438,0.00152596,10287.0],[1570952760000,0.00152699,0.00152904,0.00152629,0.00152796,4668.0],[1570952820000,0.0015286,0.00152948,0.0015286,0.00152938,1769.0],[1570952880000,0.00152834,0.00153085,0.00152797,0.00152797,12236.0],[1570952940000,0.00153085,0.00153575,0.00153045,0.00153045,19895.0],[1570953000000,0.00153369,0.00153369,0.001527,0.001527,2090.0],[1570953060000,0.00153182,0.00153404,0.00152708,0.00153404,3838.0],[1570953120000,0.00153143,0.00153143,0.00153138,0.00153138,2744.0],[1570953180000,0.00153391,0.00153391,0.00153391,0.00153391,2639.0],[1570953240000,0.00153391,0.00153772,0.00153305,0.00153305,8981.0],[1570953300000,0.00153601,0.00153652,0.00153601,0.00153652,2438.0],[1570953360000,0.00153652,0.00153652,0.00153477,0.00153477,4071.0],[1570953420000,0.00153308,0.00153378,0.00153308,0.00153378,1143.0],[1570953480000,0.00153378,0.00153378,0.00153378,0.00153378,1841.0],[1570953540000,0.00153114,0.00153114,0.00153107,0.00153107,364.0],[1570953600000,0.00153276,0.00153276,0.00153276,0.00153276,10.0],[1570953660000,0.00153315,0.00153315,0.00153315,0.00153315,1484.0],[1570953720000,0.00153294,0.00153356,0.00153293,0.00153293,42847.0],[1570953780000,0.00153293,0.00153293,0.00152847,0.00152847,62154.0],[1570953840000,0.00152841,0.00152841,0.00152776,0.00152776,68.0],[1570953900000,0.00152697,0.00152697,0.00152563,0.00152563,2691.0],[1570953960000,0.00152563,0.00152563,0.00152357,0.00152357,3389.0],[1570954020000,0.00152351,0.00152351,0.00152325,0.00152325,1140.0],[1570954080000,0.00152534,0.0015278,0.00152534,0.0015278,1424.0],[1570954140000,0.0015278,0.00152991,0.0015278,0.00152806,2012.0],[1570954200000,0.00152947,0.00152986,0.00152806,0.00152806,5012.0],[1570954260000,0.00152983,0.00152983,0.0015268,0.0015268,5049.0],[1570954320000,0.00152619,0.00152619,0.00152619,0.00152619,1503.0],[1570954380000,0.00152619,0.00152619,0.00152619,0.00152619,0.0],[1570954440000,0.00152461,0.00152519,0.00152309,0.00152309,4567.0],[1570954500000,0.00152309,0.00152462,0.00152309,0.00152459,256.0],[1570954560000,0.00152461,0.00152461,0.00152361,0.00152361,2129.0],[1570954620000,0.00152372,0.00152372,0.00152358,0.00152358,1062.0],[1570954680000,0.00152358,0.00152358,0.00152358,0.00152358,0.0],[1570954740000,0.00152592,0.00152665,0.00152592,0.00152665,301.0],[1570954800000,0.00152295,0.00152674,0.00152295,0.00152674,469.0],[1570954860000,0.0015281,0.00152826,0.00152624,0.00152624,1915.0],[1570954920000,0.00152736,0.00152736,0.00152736,0.00152736,1502.0],[1570954980000,0.00152736,0.00152736,0.00152736,0.00152736,0.0],[1570955040000,0.00152719,0.00152719,0.00152719,0.00152719,1501.0],[1570955100000,0.00152719,0.00152719,0.00152719,0.00152719,0.0],[1570955160000,0.00152705,0.00152705,0.00152705,0.00152705,39.0],[1570955220000,0.00152502,0.00152502,0.00152482,0.00152482,525.0],[1570955280000,0.00152482,0.00152482,0.00152482,0.00152482,0.0],[1570955340000,0.00152495,0.00152495,0.00152495,0.00152495,30.0],[1570955400000,0.00152495,0.00152495,0.00152495,0.00152495,0.0],[1570955460000,0.00152433,0.00152485,0.00152396,0.00152396,1014.0],[1570955520000,0.00152624,0.00152922,0.00152624,0.00152922,2524.0],[1570955580000,0.00152935,0.00152935,0.00152695,0.00152695,704.0],[1570955640000,0.00152933,0.0015307,0.00152933,0.0015307,1883.0],[1570955700000,0.00153093,0.00153246,0.00153062,0.00153246,1889.0],[1570955760000,0.00153253,0.00153371,0.00153253,0.00153371,1118.0],[1570955820000,0.00153363,0.00153511,0.0015331,0.00153369,5723.0],[1570955880000,0.00153167,0.00153167,0.00153167,0.00153167,1129.0],[1570955940000,0.00153039,0.00153039,0.00153039,0.00153039,132.0],[1570956000000,0.00153144,0.00153144,0.00153003,0.00153003,1487.0],[1570956060000,0.00153141,0.00153141,0.00153141,0.00153141,216.0],[1570956120000,0.00153141,0.00153141,0.00153141,0.00153141,0.0],[1570956180000,0.00153141,0.00153141,0.00153141,0.00153141,0.0],[1570956240000,0.00153141,0.00153141,0.00153141,0.00153141,0.0],[1570956300000,0.00153141,0.00153141,0.00153141,0.00153141,0.0],[1570956360000,0.00152938,0.00152938,0.00152938,0.00152938,1067.0],[1570956420000,0.00152938,0.00152938,0.00152938,0.00152938,0.0],[1570956480000,0.00152986,0.00153211,0.00152986,0.00153211,562.0],[1570956540000,0.0015325,0.00153305,0.0015325,0.00153305,13379.0],[1570956600000,0.00153511,0.00153549,0.00153511,0.00153535,1610.0],[1570956660000,0.00153535,0.00153535,0.00153535,0.00153535,0.0],[1570956720000,0.00153534,0.00153534,0.00153534,0.00153534,1430.0],[1570956780000,0.00153534,0.00153534,0.00153501,0.00153501,1754.0],[1570956840000,0.00153377,0.00153377,0.00153207,0.00153207,15864.0],[1570956900000,0.00153207,0.00153207,0.00153207,0.00153207,0.0],[1570956960000,0.00153272,0.00153272,0.00153272,0.00153272,71.0],[1570957020000,0.001534,0.00153535,0.001534,0.00153535,1001.0],[1570957080000,0.00153589,0.00153652,0.00153589,0.001536,5856.0],[1570957140000,0.001536,0.001536,0.00153462,0.00153462,5263.0],[1570957200000,0.00153474,0.001536,0.00153474,0.001536,7242.0],[1570957260000,0.001536,0.00154107,0.001536,0.00154107,36110.0],[1570957320000,0.00154111,0.00154173,0.00153611,0.00153724,13991.0],[1570957380000,0.00153878,0.00153881,0.00153878,0.00153879,384.0],[1570957440000,0.00153879,0.00154014,0.00153879,0.00154014,378.0],[1570957500000,0.00153825,0.00153825,0.00153757,0.00153757,1917.0],[1570957560000,0.00153721,0.00153907,0.00153721,0.00153907,1020.0],[1570957620000,0.00153817,0.00154,0.00153817,0.00154,38226.0],[1570957680000,0.00154066,0.00154094,0.00154065,0.00154065,1621.0],[1570957740000,0.00154174,0.00154226,0.00154174,0.00154226,56.0],[1570957800000,0.00154262,0.00154262,0.00154262,0.00154262,11.0],[1570957860000,0.00154103,0.00154103,0.00154065,0.00154065,274.0],[1570957920000,0.00154065,0.00154065,0.00154065,0.00154065,0.0],[1570957980000,0.00154065,0.00154065,0.00154065,0.00154065,0.0],[1570958040000,0.00154004,0.00154004,0.00153579,0.00153579,4925.0],[1570958100000,0.00153534,0.00153831,0.00153442,0.00153622,1953.0],[1570958160000,0.00153622,0.00153622,0.00153622,0.00153622,0.0],[1570958220000,0.00153622,0.00153622,0.00153622,0.00153622,0.0],[1570958280000,0.00153663,0.00153663,0.00152675,0.00153477,18242.0],[1570958340000,0.00153275,0.00153275,0.00152996,0.00152996,4426.0],[1570958400000,0.00152996,0.00153146,0.00152785,0.00153146,59.0],[1570958460000,0.00153146,0.00153146,0.00153146,0.00153146,0.0],[1570958520000,0.001528,0.001528,0.00152632,0.00152632,3025.0],[1570958580000,0.00152623,0.0015286,0.0015246,0.00152754,4689.0],[1570958640000,0.00152618,0.00153039,0.00152618,0.00153039,3798.0],[1570958700000,0.00152889,0.00152889,0.00152889,0.00152889,123.0],[1570958760000,0.00152889,0.00152998,0.00152884,0.00152998,465.0],[1570958820000,0.00152889,0.00152889,0.00152889,0.00152889,13.0],[1570958880000,0.00152998,0.00153166,0.00152998,0.00153166,4245.0],[1570958940000,0.00153203,0.00153321,0.00153061,0.00153061,9354.0],[1570959000000,0.00153074,0.00153074,0.00153074,0.00153074,200.0],[1570959060000,0.00152973,0.00152973,0.00152973,0.00152973,50.0],[1570959120000,0.00152973,0.00152973,0.00152973,0.00152973,0.0],[1570959180000,0.00152924,0.00152973,0.00152627,0.00152627,14385.0],[1570959240000,0.00152733,0.00152733,0.00152733,0.00152733,136.0],[1570959300000,0.00152568,0.00152568,0.00152568,0.00152568,142.0],[1570959360000,0.00152568,0.00152568,0.00152568,0.00152568,0.0],[1570959420000,0.00152644,0.00152742,0.00152644,0.00152742,571.0],[1570959480000,0.00152742,0.00152742,0.00152742,0.00152742,20.0],[1570959540000,0.00152742,0.00152742,0.00152742,0.00152742,0.0],[1570959600000,0.00152742,0.00152742,0.00152742,0.00152742,0.0],[1570959660000,0.00152681,0.00152681,0.00152681,0.00152681,130.0],[1570959720000,0.00152681,0.00152681,0.00152681,0.00152681,100.0],[1570959780000,0.00152677,0.00152677,0.00152625,0.00152625,1761.0],[1570959840000,0.00152623,0.00152623,0.00152623,0.00152623,384.0],[1570959900000,0.00152623,0.00152623,0.00152623,0.00152623,1118.0],[1570959960000,0.00152623,0.00152623,0.00152623,0.00152623,0.0],[1570960020000,0.00152623,0.00152623,0.00152623,0.00152623,0.0],[1570960080000,0.00152623,0.00152623,0.00152623,0.00152623,0.0],[1570960140000,0.00152506,0.00152506,0.00152506,0.00152506,65.0],[1570960200000,0.00152506,0.00152506,0.00152506,0.00152506,12.0],[1570960260000,0.00152777,0.00152849,0.00152777,0.00152849,6117.0],[1570960320000,0.00152806,0.00153091,0.00152706,0.00153091,8478.0],[1570960380000,0.00153222,0.00153254,0.00153222,0.00153254,1043.0],[1570960440000,0.00153073,0.00153073,0.00152972,0.00153011,1309.0],[1570960500000,0.00153011,0.00153011,0.00153011,0.00153011,0.0],[1570960560000,0.00153011,0.00153011,0.00153011,0.00153011,0.0],[1570960620000,0.00152685,0.00152685,0.00152685,0.00152685,30.0],[1570960680000,0.00152568,0.00152568,0.00152568,0.00152568,132.0],[1570960740000,0.00152687,0.00152687,0.00152687,0.00152687,55.0],[1570960800000,0.00152627,0.00152627,0.00152627,0.00152627,950.0],[1570960860000,0.00152627,0.00152627,0.00152627,0.00152627,45.0],[1570960920000,0.00152627,0.00152627,0.00152627,0.00152627,0.0],[1570960980000,0.00152627,0.00152627,0.00152627,0.00152627,0.0],[1570961040000,0.00152627,0.00152627,0.00152627,0.00152627,0.0],[1570961100000,0.00152694,0.00152694,0.00152694,0.00152694,1501.0],[1570961160000,0.00152694,0.00152694,0.00152694,0.00152694,0.0],[1570961220000,0.00152585,0.00152585,0.00152585,0.00152585,1696.0],[1570961280000,0.00152578,0.00152578,0.00152578,0.00152578,150.0],[1570961340000,0.00152578,0.00152578,0.00152578,0.00152578,72.0],[1570961400000,0.00152578,0.00152578,0.00152578,0.00152578,0.0],[1570961460000,0.00152746,0.00152746,0.00152746,0.00152746,131.0],[1570961520000,0.00152818,0.00153297,0.00152804,0.00153213,5234.0],[1570961580000,0.00153139,0.00153139,0.00153139,0.00153139,163.0],[1570961640000,0.00153139,0.00153139,0.00153139,0.00153139,0.0],[1570961700000,0.00153081,0.00153139,0.00153081,0.00153139,508.0],[1570961760000,0.0015317,0.00153322,0.0015317,0.00153322,427.0],[1570961820000,0.00153179,0.00153179,0.00153179,0.00153179,36.0],[1570961880000,0.00153179,0.00153179,0.00153179,0.00153179,0.0],[1570961940000,0.00152907,0.00152907,0.00152836,0.00152836,500.0],[1570962000000,0.00152836,0.00152836,0.00152836,0.00152836,0.0],[1570962060000,0.00153025,0.00153025,0.00153025,0.00153025,424.0],[1570962120000,0.00153152,0.00153152,0.00152993,0.00152993,950.0],[1570962180000,0.00152931,0.00153027,0.00152865,0.00152865,568.0],[1570962240000,0.00152865,0.00152865,0.00152865,0.00152865,0.0],[1570962300000,0.00152865,0.00152865,0.00152865,0.00152865,0.0],[1570962360000,0.00152865,0.00152865,0.00152865,0.00152865,0.0],[1570962420000,0.00152865,0.00152865,0.00152865,0.00152865,0.0],[1570962480000,0.00152865,0.00152865,0.00152865,0.00152865,0.0],[1570962540000,0.00152865,0.00152865,0.00152865,0.00152865,0.0],[1570962600000,0.00152865,0.00152965,0.00152685,0.00152965,35002.0],[1570962660000,0.00152792,0.00152896,0.00152792,0.00152835,1139.0],[1570962720000,0.0015276,0.0015276,0.0015276,0.0015276,752.0],[1570962780000,0.00152881,0.00152881,0.00152881,0.00152881,390.0],[1570962840000,0.00152881,0.00152881,0.00152849,0.00152849,17097.0],[1570962900000,0.00152849,0.00152849,0.00152756,0.00152756,1424.0],[1570962960000,0.00152951,0.00152951,0.00152669,0.00152669,16.0],[1570963020000,0.00152669,0.00152669,0.00152568,0.00152576,1347.0],[1570963080000,0.00152576,0.00152721,0.00152576,0.00152721,1037.0],[1570963140000,0.00152568,0.00152568,0.00152558,0.00152558,752.0],[1570963200000,0.00152558,0.00152558,0.00152558,0.00152558,29.0],[1570963260000,0.00152558,0.00152558,0.00152558,0.00152558,750.0],[1570963320000,0.00152558,0.00152558,0.00152558,0.00152558,0.0],[1570963380000,0.00152721,0.00152729,0.00152721,0.00152729,10147.0],[1570963440000,0.00152698,0.00152698,0.00152599,0.00152599,189.0],[1570963500000,0.00152837,0.00152837,0.00152837,0.00152837,12.0],[1570963560000,0.00152727,0.00152881,0.00152727,0.00152881,22.0],[1570963620000,0.00152881,0.00152881,0.0015273,0.00152813,69.0],[1570963680000,0.00152813,0.00152813,0.00152813,0.00152813,0.0],[1570963740000,0.00152881,0.00152881,0.00152881,0.00152881,238.0],[1570963800000,0.00152953,0.00152965,0.00152953,0.00152965,434.0],[1570963860000,0.00153,0.00153,0.00153,0.00153,71.0],[1570963920000,0.00153,0.00153039,0.0015295,0.00153039,4213.0],[1570963980000,0.00153039,0.00153039,0.00153039,0.00153039,0.0],[1570964040000,0.00153039,0.00153039,0.00153039,0.00153039,0.0],[1570964100000,0.0015302,0.0015302,0.0015302,0.0015302,569.0],[1570964160000,0.0015302,0.001531,0.0015302,0.001531,1421.0],[1570964220000,0.001531,0.001531,0.001531,0.001531,0.0],[1570964280000,0.0015302,0.0015302,0.00152949,0.00152949,1928.0],[1570964340000,0.00152949,0.00152949,0.00152949,0.00152949,0.0],[1570964400000,0.00152882,0.00152945,0.00152882,0.00152945,338.0],[1570964460000,0.00152949,0.0015302,0.00152949,0.0015302,13746.0],[1570964520000,0.00152969,0.00152969,0.00152969,0.00152969,181.0],[1570964580000,0.00152903,0.00152903,0.00152903,0.00152903,158.0],[1570964640000,0.00152903,0.00152903,0.00152903,0.00152903,0.0],[1570964700000,0.00152774,0.00152774,0.00152774,0.00152774,251.0],[1570964760000,0.00152774,0.00152774,0.00152716,0.00152716,1017.0],[1570964820000,0.00152716,0.00152716,0.00152716,0.00152716,0.0],[1570964880000,0.00152625,0.00152625,0.00152568,0.00152568,142.0],[1570964940000,0.00152568,0.00152568,0.00152568,0.00152568,0.0],[1570965000000,0.00152568,0.00152568,0.00152568,0.00152568,0.0],[1570965060000,0.00152506,0.00152506,0.00152458,0.00152458,734.0],[1570965120000,0.00152458,0.00152458,0.00152458,0.00152458,0.0],[1570965180000,0.00152449,0.00152449,0.00152449,0.00152449,7.0],[1570965240000,0.00152449,0.00152449,0.00152449,0.00152449,0.0],[1570965300000,0.00152609,0.00152609,0.00152362,0.00152362,7359.0],[1570965360000,0.00152362,0.00152362,0.00152362,0.00152362,0.0],[1570965420000,0.00152362,0.00152362,0.00152362,0.00152362,0.0],[1570965480000,0.0015256,0.00152871,0.0015256,0.00152753,3642.0],[1570965540000,0.00152814,0.00152817,0.00152787,0.00152787,785.0]]
diff --git a/tests/testdata/XRP_ETH-5m.json b/tests/testdata/XRP_ETH-5m.json
new file mode 100644
index 000000000..92da3c17d
--- /dev/null
+++ b/tests/testdata/XRP_ETH-5m.json
@@ -0,0 +1 @@
+[[1570752000000,0.00141342,0.00141658,0.00141192,0.00141192,3478.0],[1570752300000,0.00141331,0.00141469,0.00141159,0.00141161,3178.0],[1570752600000,0.00141327,0.00141428,0.00141222,0.00141428,2921.0],[1570752900000,0.00141458,0.00141794,0.00141458,0.00141478,1243.0],[1570753200000,0.00141478,0.00141733,0.00141478,0.00141536,1760.0],[1570753500000,0.00141458,0.00141612,0.00141312,0.00141612,219.0],[1570753800000,0.00141542,0.00141815,0.00141542,0.00141647,749.0],[1570754100000,0.00141817,0.00141954,0.0014158,0.00141844,43018.0],[1570754400000,0.00141883,0.00141965,0.00141753,0.00141873,2474.0],[1570754700000,0.00141792,0.00141909,0.0014161,0.0014161,2836.0],[1570755000000,0.00141609,0.00141609,0.00141402,0.00141402,1342.0],[1570755300000,0.00141402,0.00141574,0.00141333,0.00141573,266.0],[1570755600000,0.00141505,0.00141674,0.00141457,0.00141674,2814.0],[1570755900000,0.001417,0.00141816,0.00141562,0.00141562,1138.0],[1570756200000,0.0014156,0.00141836,0.00141505,0.00141655,2123.0],[1570756500000,0.00141544,0.00141582,0.00141385,0.00141387,6031.0],[1570756800000,0.00141389,0.00141389,0.00141388,0.00141388,75.0],[1570757100000,0.00141468,0.00141638,0.00141383,0.00141638,11327.0],[1570757400000,0.00141648,0.00141692,0.00141514,0.00141689,8013.0],[1570757700000,0.00141689,0.00141794,0.001415,0.00141727,4697.0],[1570758000000,0.00141505,0.00141505,0.0014117,0.00141233,61283.0],[1570758300000,0.00141164,0.00141409,0.00141164,0.00141319,2030.0],[1570758600000,0.00141318,0.00141318,0.00141193,0.00141193,3718.0],[1570758900000,0.00141262,0.00141475,0.00141169,0.00141169,1768.0],[1570759200000,0.00141232,0.00141747,0.00141232,0.00141575,2442.0],[1570759500000,0.00141717,0.00141717,0.00141642,0.0014165,94.0],[1570759800000,0.00141716,0.00141716,0.00141575,0.00141575,133.0],[1570760100000,0.00141864,0.00141937,0.00141762,0.00141839,782.0],[1570760400000,0.00141769,0.00141974,0.00141762,0.00141762,217.0],[1570760700000,0.00141668,0.00141719,0.00141581,0.0014171,382.0],[1570761000000,0.00141703,0.00141772,0.00141592,0.00141709,1137.0],[1570761300000,0.00141852,0.00142057,0.00141773,0.00142057,31415.0],[1570761600000,0.00141976,0.00142124,0.00141924,0.00141982,954.0],[1570761900000,0.00141982,0.00141982,0.00141802,0.00141852,1637.0],[1570762200000,0.00141852,0.00142003,0.00141852,0.0014188,25208.0],[1570762500000,0.0014188,0.00142032,0.0014188,0.00141937,5301.0],[1570762800000,0.00142067,0.00142192,0.00142024,0.00142029,3194.0],[1570763100000,0.00142029,0.00142029,0.00141723,0.00141723,2044.0],[1570763400000,0.00141723,0.00141874,0.00141597,0.00141597,49473.0],[1570763700000,0.00141732,0.00141732,0.00141597,0.00141597,4219.0],[1570764000000,0.00141597,0.00141783,0.0014138,0.0014138,22478.0],[1570764300000,0.0014138,0.0014138,0.00141251,0.00141251,11143.0],[1570764600000,0.00141251,0.00141251,0.00141,0.00141207,46077.0],[1570764900000,0.00141182,0.00141407,0.00141182,0.00141407,1773.0],[1570765200000,0.00141301,0.00141403,0.00141114,0.00141114,17279.0],[1570765500000,0.00141164,0.00141456,0.00141164,0.00141456,104.0],[1570765800000,0.00141056,0.00141151,0.00141,0.00141,1295.0],[1570766100000,0.00141,0.00141151,0.00140722,0.00140779,13979.0],[1570766400000,0.00140721,0.00141146,0.00140721,0.00141093,11228.0],[1570766700000,0.00140951,0.00141005,0.00140787,0.00140967,15537.0],[1570767000000,0.00140958,0.00141082,0.00140879,0.00141082,6283.0],[1570767300000,0.0014105,0.00141368,0.0014105,0.00141368,2645.0],[1570767600000,0.00141286,0.00141324,0.00141077,0.00141192,5863.0],[1570767900000,0.00141192,0.00141611,0.00141133,0.00141611,9401.0],[1570768200000,0.0014153,0.00141741,0.00141336,0.00141634,47962.0],[1570768500000,0.00141742,0.00141802,0.0014139,0.00141568,3398.0],[1570768800000,0.00141378,0.00141405,0.00140517,0.00140645,56966.0],[1570769100000,0.00140605,0.00141118,0.00139676,0.00140164,126744.0],[1570769400000,0.00139706,0.0014065,0.00139706,0.0014027,31600.0],[1570769700000,0.00140485,0.00140485,0.00139973,0.00140366,9739.0],[1570770000000,0.00140341,0.00140382,0.00139696,0.00140023,19360.0],[1570770300000,0.00140172,0.00140924,0.00140172,0.00140777,18577.0],[1570770600000,0.00140924,0.0014145,0.0014086,0.0014145,18639.0],[1570770900000,0.00141457,0.00143901,0.00141406,0.00143069,141472.0],[1570771200000,0.00142834,0.00143282,0.00142817,0.00142825,15903.0],[1570771500000,0.00142821,0.00143313,0.00142524,0.00142524,30111.0],[1570771800000,0.00142896,0.00143135,0.00142547,0.00142547,7658.0],[1570772100000,0.00142551,0.00142762,0.0014248,0.0014248,28839.0],[1570772400000,0.00142481,0.00142765,0.00142323,0.00142323,9602.0],[1570772700000,0.00142343,0.00142865,0.00142343,0.00142635,5407.0],[1570773000000,0.00142635,0.00142635,0.00142446,0.00142446,5891.0],[1570773300000,0.00142446,0.00142719,0.00142325,0.0014243,11366.0],[1570773600000,0.00142319,0.00142483,0.0014213,0.00142483,2177.0],[1570773900000,0.00142206,0.00144017,0.00142126,0.00144012,98275.0],[1570774200000,0.00143657,0.00143909,0.00143516,0.0014388,4480.0],[1570774500000,0.00143403,0.00143403,0.00143135,0.00143135,6730.0],[1570774800000,0.00143358,0.00143366,0.00143116,0.00143116,8907.0],[1570775100000,0.00143049,0.00143331,0.00142847,0.00142907,2415.0],[1570775400000,0.00142922,0.00143479,0.00142922,0.0014347,2813.0],[1570775700000,0.0014347,0.00143724,0.00143344,0.00143389,63549.0],[1570776000000,0.0014339,0.00143607,0.00143126,0.00143607,8082.0],[1570776300000,0.00143646,0.00143646,0.001429,0.00143215,1720.0],[1570776600000,0.00142894,0.00142894,0.00142775,0.00142775,1900.0],[1570776900000,0.00142793,0.00142793,0.00142672,0.00142672,5039.0],[1570777200000,0.00142723,0.0014343,0.00142723,0.0014343,4826.0],[1570777500000,0.00143193,0.00143428,0.00143071,0.00143099,8871.0],[1570777800000,0.00143099,0.00143099,0.00143099,0.00143099,629.0],[1570778100000,0.00142852,0.00143101,0.00142852,0.00143101,252.0],[1570778400000,0.00143099,0.00143228,0.00143099,0.00143228,3837.0],[1570778700000,0.00142957,0.00142957,0.00142791,0.00142791,1055.0],[1570779000000,0.00142795,0.00143142,0.00142795,0.00143141,2453.0],[1570779300000,0.00143135,0.00143135,0.0014268,0.0014268,802.0],[1570779600000,0.00142681,0.00142681,0.0014265,0.00142668,7941.0],[1570779900000,0.00142626,0.00142626,0.0014241,0.0014241,2848.0],[1570780200000,0.00142405,0.0014259,0.00142348,0.00142589,2555.0],[1570780500000,0.00142397,0.00142731,0.00142397,0.00142731,568.0],[1570780800000,0.00142451,0.00143142,0.00142445,0.00142585,122129.0],[1570781100000,0.00142637,0.00143219,0.00142637,0.00143035,69615.0],[1570781400000,0.00143219,0.00143875,0.00143219,0.00143356,44257.0],[1570781700000,0.00143236,0.001435,0.00143219,0.00143452,5102.0],[1570782000000,0.00143136,0.00143136,0.00143135,0.00143135,1587.0],[1570782300000,0.00142981,0.00143466,0.00142981,0.00143466,1002.0],[1570782600000,0.00143466,0.00143551,0.00143049,0.00143049,1638.0],[1570782900000,0.00143052,0.00143738,0.00143052,0.00143411,1666.0],[1570783200000,0.00143439,0.00143883,0.00143439,0.00143622,10793.0],[1570783500000,0.00143593,0.00143598,0.00143593,0.00143598,83.0],[1570783800000,0.001436,0.00143658,0.001436,0.00143633,2371.0],[1570784100000,0.00143633,0.00143946,0.00143606,0.00143765,5222.0],[1570784400000,0.00143765,0.00144301,0.00143765,0.00144301,19590.0],[1570784700000,0.00144085,0.00144085,0.00144,0.00144,2602.0],[1570785000000,0.00144302,0.00144444,0.00143892,0.00144113,6771.0],[1570785300000,0.00144122,0.00144476,0.00144121,0.00144476,797.0],[1570785600000,0.00144485,0.00144489,0.00144214,0.00144243,498.0],[1570785900000,0.00144272,0.00144272,0.00144046,0.00144243,731.0],[1570786200000,0.00144092,0.00144335,0.0014383,0.00144305,50890.0],[1570786500000,0.00143942,0.00144398,0.00143942,0.00144027,218.0],[1570786800000,0.001444,0.00144538,0.00144154,0.00144309,5148.0],[1570787100000,0.00144355,0.00144641,0.00144289,0.00144333,1792.0],[1570787400000,0.00144349,0.00144693,0.00144349,0.00144476,1528.0],[1570787700000,0.00144532,0.00144753,0.00144288,0.00144748,3475.0],[1570788000000,0.00144469,0.00144734,0.00144311,0.00144729,1559.0],[1570788300000,0.00144305,0.00144305,0.00144305,0.00144305,15.0],[1570788600000,0.00144707,0.00144707,0.00144282,0.00144282,1421.0],[1570788900000,0.00144282,0.00144511,0.00144282,0.00144494,31841.0],[1570789200000,0.00144177,0.00144421,0.00144154,0.00144421,17681.0],[1570789500000,0.00144122,0.00144706,0.00144122,0.00144706,12526.0],[1570789800000,0.0014455,0.00144861,0.0014455,0.00144861,20107.0],[1570790100000,0.00144636,0.00144861,0.00144589,0.00144597,1815.0],[1570790400000,0.00144597,0.00144786,0.0014458,0.00144786,1428.0],[1570790700000,0.00144504,0.00144546,0.00144504,0.00144546,49.0],[1570791000000,0.00144608,0.00144608,0.00144513,0.00144516,1297.0],[1570791300000,0.00144508,0.00144804,0.00144508,0.00144597,704.0],[1570791600000,0.00144605,0.00144873,0.00144584,0.00144828,13769.0],[1570791900000,0.00144638,0.00144894,0.00144587,0.00144587,3646.0],[1570792200000,0.00144777,0.00145117,0.00144777,0.00145117,5172.0],[1570792500000,0.00145127,0.0014513,0.00144558,0.00144585,1955.0],[1570792800000,0.00144585,0.00145689,0.00144552,0.00145346,19059.0],[1570793100000,0.0014531,0.00145493,0.00145021,0.00145021,1687.0],[1570793400000,0.00144895,0.00145494,0.00144895,0.00145098,541.0],[1570793700000,0.00145216,0.00145462,0.00144879,0.00144879,2882.0],[1570794000000,0.00144879,0.00144879,0.00144693,0.00144704,438.0],[1570794300000,0.00145258,0.00145258,0.0014482,0.0014482,575.0],[1570794600000,0.00145157,0.00145438,0.00144906,0.00144906,1060.0],[1570794900000,0.0014508,0.00145256,0.00144821,0.00144868,907.0],[1570795200000,0.00144908,0.00145652,0.00144908,0.00145584,7970.0],[1570795500000,0.00145154,0.00145183,0.00145154,0.00145183,480.0],[1570795800000,0.00145182,0.00145434,0.00145105,0.00145105,6980.0],[1570796100000,0.00145118,0.00145436,0.00145118,0.00145436,219.0],[1570796400000,0.00145237,0.00145436,0.00145237,0.00145249,380.0],[1570796700000,0.00145292,0.00145607,0.00145173,0.00145607,505.0],[1570797000000,0.00145212,0.00145234,0.00145212,0.00145234,186.0],[1570797300000,0.0014524,0.00145654,0.0014524,0.00145387,1932.0],[1570797600000,0.00145618,0.00145699,0.00145241,0.00145241,240.0],[1570797900000,0.00145245,0.00145571,0.00145245,0.00145571,1463.0],[1570798200000,0.00145244,0.00145474,0.00145236,0.00145474,1729.0],[1570798500000,0.00145238,0.00145983,0.00145237,0.00145983,7908.0],[1570798800000,0.0014597,0.0014597,0.00145652,0.00145654,1275.0],[1570799100000,0.00145795,0.00145795,0.00145451,0.00145656,5269.0],[1570799400000,0.00145452,0.00145837,0.00145376,0.00145376,51407.0],[1570799700000,0.001458,0.001458,0.00145452,0.00145743,1749.0],[1570800000000,0.00145899,0.00145899,0.00145559,0.00145716,30217.0],[1570800300000,0.001456,0.001456,0.001456,0.001456,2061.0],[1570800600000,0.00145628,0.00145628,0.00145558,0.00145558,4345.0],[1570800900000,0.00145558,0.00145704,0.00145457,0.00145704,170.0],[1570801200000,0.00145712,0.00146387,0.00145599,0.00146387,21541.0],[1570801500000,0.00146398,0.00146435,0.00146029,0.00146029,3634.0],[1570801800000,0.00146029,0.00146243,0.00145836,0.001459,1254.0],[1570802100000,0.001459,0.001459,0.00145885,0.00145885,992.0],[1570802400000,0.00146037,0.00146112,0.00145717,0.00146112,8646.0],[1570802700000,0.00145885,0.00146415,0.00145885,0.00146415,5591.0],[1570803000000,0.00146164,0.00146592,0.00146156,0.00146158,28904.0],[1570803300000,0.00146442,0.00146442,0.00146097,0.00146097,722.0],[1570803600000,0.00146113,0.001464,0.00146111,0.001464,5447.0],[1570803900000,0.001464,0.001464,0.001464,0.001464,31827.0],[1570804200000,0.00146234,0.00146639,0.00146234,0.00146639,897.0],[1570804500000,0.00146644,0.00146709,0.0014649,0.00146709,386.0],[1570804800000,0.00146674,0.00146674,0.00146307,0.00146331,703.0],[1570805100000,0.00146346,0.00146431,0.00146346,0.00146431,41.0],[1570805400000,0.00146479,0.00146479,0.00145965,0.00146299,4278.0],[1570805700000,0.00146118,0.00146344,0.00146111,0.00146111,873.0],[1570806000000,0.00146111,0.00146823,0.00146111,0.00146823,7286.0],[1570806300000,0.00146831,0.00146884,0.00146462,0.00146506,2190.0],[1570806600000,0.00146447,0.00146905,0.00146384,0.00146384,1916.0],[1570806900000,0.00146457,0.00146837,0.00146457,0.00146495,367.0],[1570807200000,0.00146495,0.00146678,0.00146359,0.00146678,182.0],[1570807500000,0.00146444,0.00146598,0.00146355,0.00146383,1490.0],[1570807800000,0.00146383,0.00146741,0.00146382,0.001465,36943.0],[1570808100000,0.0014675,0.00146866,0.00146545,0.00146545,1912.0],[1570808400000,0.00146616,0.00146908,0.00146616,0.00146636,7775.0],[1570808700000,0.0014664,0.00147,0.0014664,0.00146996,3888.0],[1570809000000,0.00146647,0.00146991,0.001466,0.001466,2718.0],[1570809300000,0.00146496,0.0014677,0.00146496,0.0014677,293.0],[1570809600000,0.0014685,0.0014685,0.00146632,0.00146632,1952.0],[1570809900000,0.00147,0.00149267,0.00146807,0.00148225,138991.0],[1570810200000,0.00148235,0.0014908,0.00148235,0.00148325,12919.0],[1570810500000,0.00148328,0.00148785,0.0014812,0.00148141,31923.0],[1570810800000,0.00148615,0.00148615,0.00148147,0.00148449,26757.0],[1570811100000,0.00148449,0.00148479,0.00148064,0.00148074,45210.0],[1570811400000,0.00148077,0.00148401,0.00147927,0.00148222,39146.0],[1570811700000,0.00148226,0.0014848,0.0014794,0.0014794,24784.0],[1570812000000,0.00147935,0.00147935,0.00147692,0.00147692,1838.0],[1570812300000,0.00147692,0.00148265,0.00147692,0.00147855,11821.0],[1570812600000,0.00148162,0.00148162,0.00147637,0.00147755,884.0],[1570812900000,0.00147755,0.00147942,0.00147542,0.00147542,2819.0],[1570813200000,0.00147541,0.00147783,0.00147541,0.00147774,3005.0],[1570813500000,0.00147768,0.00147768,0.00147457,0.00147768,2878.0],[1570813800000,0.00147514,0.0014778,0.00147514,0.0014778,2812.0],[1570814100000,0.00147881,0.00147881,0.00147881,0.00147881,2.0],[1570814400000,0.00147822,0.00147882,0.00147627,0.00147648,26998.0],[1570814700000,0.00147653,0.0014766,0.00147653,0.00147659,714.0],[1570815000000,0.00147899,0.00147899,0.00147559,0.00147559,1443.0],[1570815300000,0.00147538,0.00147784,0.0014745,0.00147452,536.0],[1570815600000,0.0014755,0.00147608,0.0014703,0.00147539,3250.0],[1570815900000,0.00147298,0.001475,0.00147127,0.00147195,3794.0],[1570816200000,0.00147597,0.00147597,0.00147049,0.0014751,1954.0],[1570816500000,0.0014751,0.0014751,0.00147088,0.00147088,17.0],[1570816800000,0.00147251,0.00147674,0.0014723,0.00147674,677.0],[1570817100000,0.00147674,0.00147786,0.00147674,0.00147786,849.0],[1570817400000,0.00147567,0.00147852,0.00147567,0.00147576,3391.0],[1570817700000,0.00147583,0.00147953,0.00147583,0.00147953,7524.0],[1570818000000,0.00148,0.00148441,0.00148,0.00148121,7266.0],[1570818300000,0.0014847,0.00148904,0.00148326,0.00148904,5359.0],[1570818600000,0.00148982,0.00148999,0.00148666,0.00148679,1413.0],[1570818900000,0.00148679,0.0014921,0.00148678,0.00148678,46404.0],[1570819200000,0.00148456,0.00148479,0.00148323,0.00148455,14704.0],[1570819500000,0.00148455,0.00148795,0.00148455,0.00148795,16276.0],[1570819800000,0.00148795,0.00149091,0.00148619,0.00148802,21424.0],[1570820100000,0.00148802,0.00148802,0.00148577,0.00148589,2266.0],[1570820400000,0.0014876,0.0014876,0.0014876,0.0014876,95.0],[1570820700000,0.0014876,0.0014924,0.0014876,0.0014924,17500.0],[1570821000000,0.0014924,0.0014929,0.00148904,0.00149023,2551.0],[1570821300000,0.00149023,0.00149324,0.0014885,0.00148869,3963.0],[1570821600000,0.00148999,0.00149251,0.00148999,0.00149251,124.0],[1570821900000,0.00149002,0.00149002,0.00149002,0.00149002,65.0],[1570822200000,0.00149,0.00149116,0.00148688,0.00148876,1645.0],[1570822500000,0.00148518,0.00148798,0.00148518,0.00148795,225.0],[1570822800000,0.00148583,0.00148768,0.00148461,0.00148461,387.0],[1570823100000,0.00148746,0.00148746,0.00148461,0.00148461,17.0],[1570823400000,0.001486,0.00148696,0.00148461,0.00148461,3409.0],[1570823700000,0.00148461,0.00148684,0.00148444,0.00148444,3525.0],[1570824000000,0.00148444,0.00148656,0.00148407,0.00148407,935.0],[1570824300000,0.00148421,0.00148456,0.00148323,0.00148323,915.0],[1570824600000,0.00148323,0.00148323,0.00148207,0.00148207,337.0],[1570824900000,0.00148203,0.00148203,0.00148203,0.00148203,8.0],[1570825200000,0.00148192,0.00148473,0.00148192,0.00148473,92.0],[1570825500000,0.00148473,0.00148615,0.00148473,0.00148615,1232.0],[1570825800000,0.001484,0.001486,0.00148172,0.00148179,604.0],[1570826100000,0.00148651,0.00148651,0.00148651,0.00148651,10.0],[1570826400000,0.0014831,0.0014831,0.0014831,0.0014831,10.0],[1570826700000,0.0014831,0.00148312,0.00148182,0.00148182,1815.0],[1570827000000,0.00148242,0.00148329,0.00148242,0.00148329,260.0],[1570827300000,0.00148331,0.00148635,0.0014827,0.0014827,232.0],[1570827600000,0.00148264,0.00148264,0.00148183,0.00148183,121.0],[1570827900000,0.00148182,0.00148182,0.00148182,0.00148182,697.0],[1570828200000,0.00148182,0.00148244,0.00148,0.00148244,19989.0],[1570828500000,0.00148057,0.00148244,0.00147953,0.00148244,4763.0],[1570828800000,0.00148244,0.00148244,0.00147852,0.00147852,2066.0],[1570829100000,0.00148,0.00148241,0.00148,0.00148028,3124.0],[1570829400000,0.00148241,0.0014845,0.00148081,0.0014845,599.0],[1570829700000,0.0014845,0.00148715,0.00148169,0.00148632,2397.0],[1570830000000,0.00148715,0.00148888,0.00148273,0.00148273,5070.0],[1570830300000,0.00148329,0.00148795,0.00148317,0.00148317,490.0],[1570830600000,0.00148412,0.00148605,0.00148135,0.00148135,2741.0],[1570830900000,0.00148135,0.00148437,0.00147953,0.00147953,1514.0],[1570831200000,0.00147953,0.00148236,0.00147852,0.00147984,10741.0],[1570831500000,0.00148236,0.00148236,0.00147858,0.00147858,1921.0],[1570831800000,0.00147852,0.00148064,0.00147723,0.00147724,10150.0],[1570832100000,0.00147723,0.00147723,0.00147591,0.00147641,3528.0],[1570832400000,0.00147641,0.00147965,0.00147641,0.00147806,560.0],[1570832700000,0.00147975,0.00147994,0.00147643,0.00147669,3492.0],[1570833000000,0.00147893,0.00147893,0.00147824,0.00147824,810.0],[1570833300000,0.00147651,0.00147651,0.00147636,0.00147636,205.0],[1570833600000,0.00147636,0.00147641,0.00147513,0.00147641,3740.0],[1570833900000,0.001478,0.00147831,0.001478,0.00147831,1069.0],[1570834200000,0.00147665,0.00147832,0.00147502,0.00147832,1503.0],[1570834500000,0.00147832,0.00148,0.00147832,0.00148,736.0],[1570834800000,0.00148023,0.00148163,0.00147892,0.00147947,1897.0],[1570835100000,0.00148236,0.0014824,0.00147984,0.00147984,668.0],[1570835400000,0.00148286,0.00148286,0.00148286,0.00148286,85.0],[1570835700000,0.00147947,0.00147956,0.00147947,0.00147956,45.0],[1570836000000,0.00147954,0.00147954,0.00147954,0.00147954,7.0],[1570836300000,0.00148276,0.00148276,0.00147757,0.00147768,842.0],[1570836600000,0.00147965,0.00148255,0.00147817,0.00147817,772.0],[1570836900000,0.00148121,0.00148121,0.00148111,0.00148111,55.0],[1570837200000,0.00148116,0.00148123,0.0014787,0.00148,1087.0],[1570837500000,0.00148,0.00148128,0.00147649,0.00148128,5935.0],[1570837800000,0.00148269,0.00148288,0.00147986,0.00147991,833.0],[1570838100000,0.00147991,0.00147991,0.00147991,0.00147991,0.0],[1570838400000,0.00148021,0.00148021,0.00147787,0.00147842,2498.0],[1570838700000,0.00147953,0.00147953,0.00147914,0.00147914,415.0],[1570839000000,0.00147923,0.0014812,0.0014783,0.00148084,6489.0],[1570839300000,0.00147665,0.00147665,0.00147649,0.00147649,57.0],[1570839600000,0.00147729,0.00147729,0.00147648,0.00147648,779.0],[1570839900000,0.00147648,0.00147948,0.00147445,0.00147445,972.0],[1570840200000,0.00147452,0.00147534,0.00147452,0.00147534,1157.0],[1570840500000,0.00147534,0.00147617,0.00147347,0.00147617,1452.0],[1570840800000,0.00147574,0.00147574,0.00147233,0.00147356,814.0],[1570841100000,0.00147246,0.00147568,0.00147246,0.00147564,144.0],[1570841400000,0.00147564,0.00147645,0.00147326,0.00147645,1679.0],[1570841700000,0.00147707,0.00147759,0.00147463,0.00147759,689.0],[1570842000000,0.00147852,0.00147852,0.00147852,0.00147852,132.0],[1570842300000,0.00147625,0.00148027,0.00147625,0.00148027,4685.0],[1570842600000,0.00147677,0.00148323,0.00147677,0.00148323,3016.0],[1570842900000,0.00148335,0.0014856,0.00148125,0.0014852,18878.0],[1570843200000,0.00148158,0.0014856,0.00148158,0.00148209,140.0],[1570843500000,0.0014856,0.00148617,0.00148427,0.00148617,2917.0],[1570843800000,0.00148426,0.0014875,0.00148251,0.00148267,1639.0],[1570844100000,0.00148303,0.0014878,0.00148303,0.0014878,72.0],[1570844400000,0.00148528,0.00148763,0.00148528,0.00148684,3887.0],[1570844700000,0.00148433,0.00148433,0.00148186,0.00148195,626.0],[1570845000000,0.00148195,0.00148195,0.00148195,0.00148195,0.0],[1570845300000,0.00148207,0.00148492,0.00148132,0.00148254,37320.0],[1570845600000,0.0014841,0.001485,0.00148117,0.00148117,2905.0],[1570845900000,0.0014837,0.0014837,0.0014837,0.0014837,134.0],[1570846200000,0.00148366,0.00148366,0.00147905,0.00147918,616.0],[1570846500000,0.00147918,0.00147918,0.00147918,0.00147918,0.0],[1570846800000,0.0014837,0.001485,0.00148207,0.001485,5013.0],[1570847100000,0.00148549,0.00148942,0.001483,0.00148669,10269.0],[1570847400000,0.00148982,0.00149097,0.00148623,0.00149097,196.0],[1570847700000,0.00149138,0.00149138,0.00148093,0.00148093,4463.0],[1570848000000,0.0014856,0.0014856,0.00148328,0.00148328,23.0],[1570848300000,0.00148359,0.00148654,0.00148359,0.00148654,37.0],[1570848600000,0.00148358,0.00148462,0.0014787,0.00148462,3420.0],[1570848900000,0.00148419,0.00148419,0.00148,0.00148,54.0],[1570849200000,0.00147853,0.00147853,0.00147695,0.00147695,1670.0],[1570849500000,0.00148054,0.00148297,0.00148012,0.00148297,8855.0],[1570849800000,0.00148031,0.00148559,0.00148031,0.00148558,4269.0],[1570850100000,0.00148172,0.00148172,0.00148089,0.0014809,87.0],[1570850400000,0.00148271,0.00148271,0.00148155,0.00148155,411.0],[1570850700000,0.00148215,0.00148215,0.00148155,0.00148168,455.0],[1570851000000,0.00148371,0.00148501,0.00148371,0.00148501,472.0],[1570851300000,0.00148498,0.00148624,0.00148257,0.00148624,333.0],[1570851600000,0.00148417,0.00148417,0.00148417,0.00148417,36.0],[1570851900000,0.00148418,0.00148418,0.00148418,0.00148418,23.0],[1570852200000,0.00148425,0.00148445,0.00148425,0.00148426,4262.0],[1570852500000,0.001485,0.00148707,0.00148299,0.00148303,39408.0],[1570852800000,0.00148369,0.00148712,0.00148272,0.00148272,29288.0],[1570853100000,0.00148279,0.00148279,0.00148117,0.00148117,2600.0],[1570853400000,0.00148317,0.00148415,0.00148317,0.00148415,803.0],[1570853700000,0.00148255,0.00148475,0.00147855,0.00147858,3074.0],[1570854000000,0.00148215,0.00148215,0.00148214,0.00148214,103.0],[1570854300000,0.00148242,0.00148365,0.00147908,0.00148331,245.0],[1570854600000,0.00148317,0.00148317,0.00147869,0.0014824,1056.0],[1570854900000,0.0014824,0.0014824,0.00147989,0.0014824,5144.0],[1570855200000,0.00148365,0.00148688,0.00148155,0.00148377,1883.0],[1570855500000,0.00148688,0.00148688,0.00148271,0.00148271,157.0],[1570855800000,0.00148535,0.00148535,0.00148126,0.00148242,2846.0],[1570856100000,0.00148117,0.00148117,0.00148117,0.00148117,108.0],[1570856400000,0.00148117,0.00148452,0.00148117,0.00148242,153.0],[1570856700000,0.00148237,0.00148237,0.00147931,0.00147931,50.0],[1570857000000,0.00147857,0.00148185,0.00147857,0.00148185,45.0],[1570857300000,0.00147944,0.00148395,0.00147943,0.001483,12993.0],[1570857600000,0.00148325,0.00148485,0.001483,0.00148485,850.0],[1570857900000,0.00148524,0.00149429,0.001485,0.00149267,11363.0],[1570858200000,0.00149425,0.00149425,0.00148795,0.00148795,7670.0],[1570858500000,0.00148795,0.00149138,0.00148698,0.0014884,9774.0],[1570858800000,0.00148688,0.00148688,0.00148494,0.00148543,191.0],[1570859100000,0.00148627,0.0014871,0.00148544,0.00148544,2065.0],[1570859400000,0.00148544,0.0014896,0.00148537,0.0014896,6851.0],[1570859700000,0.00149021,0.00149109,0.00148786,0.00148878,2905.0],[1570860000000,0.00149162,0.00149162,0.00148866,0.00148866,5545.0],[1570860300000,0.00149162,0.00149162,0.00148813,0.00148904,1769.0],[1570860600000,0.00149257,0.00149429,0.00148945,0.00149429,3229.0],[1570860900000,0.00149436,0.0014978,0.00149343,0.0014978,3633.0],[1570861200000,0.00149545,0.00150162,0.00149545,0.00149873,49914.0],[1570861500000,0.00150142,0.00150297,0.00149939,0.00150054,4933.0],[1570861800000,0.00150176,0.0015079,0.00150092,0.0015023,28286.0],[1570862100000,0.00150803,0.00150803,0.00150019,0.00150019,14996.0],[1570862400000,0.00150019,0.00150019,0.00149785,0.00149929,35678.0],[1570862700000,0.00150219,0.00150219,0.00150008,0.00150008,1334.0],[1570863000000,0.00150008,0.00150008,0.00149646,0.00149844,3833.0],[1570863300000,0.00150032,0.00150196,0.00149972,0.001501,15045.0],[1570863600000,0.0015021,0.00150482,0.00150035,0.00150482,4318.0],[1570863900000,0.00149871,0.00149871,0.0014947,0.0014947,3558.0],[1570864200000,0.0014947,0.00150052,0.00149429,0.00150052,8264.0],[1570864500000,0.0014995,0.0014995,0.0014995,0.0014995,2323.0],[1570864800000,0.00149812,0.00149812,0.00149636,0.00149756,2574.0],[1570865100000,0.00149777,0.00149868,0.00149611,0.00149838,11450.0],[1570865400000,0.00149943,0.00150035,0.00149943,0.00150034,1152.0],[1570865700000,0.00150035,0.0015006,0.00149934,0.0015006,4467.0],[1570866000000,0.00149678,0.00149908,0.00149555,0.00149908,3815.0],[1570866300000,0.0014986,0.00149947,0.00149675,0.0014974,2088.0],[1570866600000,0.001498,0.00150001,0.00149733,0.00149733,17872.0],[1570866900000,0.00149673,0.00149673,0.00149399,0.00149561,5732.0],[1570867200000,0.0014964,0.0014964,0.00149478,0.00149478,1616.0],[1570867500000,0.00149491,0.0014958,0.00149478,0.0014958,16663.0],[1570867800000,0.00149698,0.00149698,0.00149389,0.00149389,7132.0],[1570868100000,0.00149584,0.00149961,0.00149336,0.00149696,11767.0],[1570868400000,0.00149488,0.00149488,0.0014937,0.0014937,1687.0],[1570868700000,0.00149305,0.00149305,0.00149305,0.00149305,14.0],[1570869000000,0.00149302,0.00149465,0.00149302,0.00149374,18494.0],[1570869300000,0.00149313,0.00149725,0.00149304,0.00149601,17334.0],[1570869600000,0.001496,0.001498,0.00149468,0.00149639,57616.0],[1570869900000,0.00149518,0.00149523,0.00149033,0.00149033,10208.0],[1570870200000,0.00149002,0.00149106,0.00148654,0.00148764,20610.0],[1570870500000,0.00148641,0.00148658,0.00148488,0.00148576,3936.0],[1570870800000,0.00148716,0.00148995,0.00148615,0.00148647,9743.0],[1570871100000,0.00148648,0.00148648,0.00148419,0.00148419,358.0],[1570871400000,0.00148529,0.00148529,0.00148323,0.00148323,2741.0],[1570871700000,0.00148489,0.00148489,0.00147984,0.00148202,8775.0],[1570872000000,0.00148325,0.00148613,0.001482,0.00148445,6576.0],[1570872300000,0.00148559,0.00148559,0.00148348,0.00148348,4258.0],[1570872600000,0.00148347,0.00148589,0.00148295,0.00148589,10562.0],[1570872900000,0.00148398,0.00148398,0.0014839,0.0014839,150.0],[1570873200000,0.00148353,0.00148353,0.00148353,0.00148353,248.0],[1570873500000,0.00148284,0.00148284,0.00148052,0.00148128,15395.0],[1570873800000,0.00148333,0.00148379,0.00148333,0.00148379,381.0],[1570874100000,0.00148403,0.00148403,0.00148385,0.00148385,27.0],[1570874400000,0.00148561,0.00149002,0.00148561,0.00148782,1157.0],[1570874700000,0.00148546,0.00148546,0.0014841,0.0014841,3720.0],[1570875000000,0.00148668,0.00148821,0.001484,0.00148408,35628.0],[1570875300000,0.00148599,0.00148801,0.00148473,0.00148801,2743.0],[1570875600000,0.00148964,0.00149041,0.00148664,0.0014899,3165.0],[1570875900000,0.0014866,0.00148668,0.0014866,0.00148668,27.0],[1570876200000,0.00148672,0.00149104,0.00148672,0.00148815,2818.0],[1570876500000,0.00148753,0.0014891,0.00148658,0.0014872,2150.0],[1570876800000,0.00148837,0.00148956,0.00148675,0.00148956,848.0],[1570877100000,0.00148955,0.00148955,0.00148638,0.00148691,3846.0],[1570877400000,0.00148899,0.00148899,0.00148497,0.00148497,104.0],[1570877700000,0.00148585,0.00148879,0.00148501,0.00148551,17621.0],[1570878000000,0.00148851,0.00148923,0.00148722,0.00148729,15809.0],[1570878300000,0.00148729,0.00148934,0.00148661,0.00148934,44506.0],[1570878600000,0.0014889,0.0014921,0.0014889,0.00149133,12127.0],[1570878900000,0.00149208,0.00149267,0.00149208,0.00149267,4012.0],[1570879200000,0.0014924,0.00149268,0.00149037,0.00149129,3594.0],[1570879500000,0.00149024,0.00149409,0.00149024,0.00149358,2092.0],[1570879800000,0.00149231,0.00149231,0.00149231,0.00149231,29.0],[1570880100000,0.00149231,0.00149376,0.00149054,0.00149177,2882.0],[1570880400000,0.00149239,0.00149412,0.00149237,0.00149237,1168.0],[1570880700000,0.00149237,0.00149412,0.00149237,0.00149412,525.0],[1570881000000,0.00149412,0.00149486,0.00149128,0.00149268,6022.0],[1570881300000,0.00149269,0.00149269,0.00149269,0.00149269,3015.0],[1570881600000,0.00149016,0.00149016,0.00148819,0.00148819,482.0],[1570881900000,0.00149072,0.00149197,0.00148942,0.00149197,1570.0],[1570882200000,0.00149123,0.00149123,0.00149008,0.00149008,744.0],[1570882500000,0.00149069,0.00149214,0.00149063,0.00149214,135.0],[1570882800000,0.00149214,0.00149487,0.00149123,0.00149379,8303.0],[1570883100000,0.00149487,0.00149487,0.00149321,0.00149321,2416.0],[1570883400000,0.00149321,0.00149354,0.00149194,0.00149354,2358.0],[1570883700000,0.00149259,0.00149272,0.00149155,0.00149155,3552.0],[1570884000000,0.00149188,0.00149328,0.00149188,0.00149188,510.0],[1570884300000,0.00149188,0.00149561,0.00149148,0.00149312,1966.0],[1570884600000,0.00149363,0.00149913,0.00149312,0.00149913,20947.0],[1570884900000,0.00149913,0.00149913,0.0014978,0.0014978,908.0],[1570885200000,0.00149687,0.00149698,0.00149333,0.00149387,1789.0],[1570885500000,0.00149313,0.00149742,0.00149313,0.00149619,789.0],[1570885800000,0.00149726,0.00149726,0.00149426,0.00149426,2648.0],[1570886100000,0.0014961,0.0014967,0.0014961,0.0014967,40.0],[1570886400000,0.00149521,0.00149521,0.00149126,0.00149126,2242.0],[1570886700000,0.00149127,0.00149424,0.00149081,0.00149123,5957.0],[1570887000000,0.00149307,0.00149347,0.00149098,0.00149141,741.0],[1570887300000,0.00149087,0.00149087,0.00149083,0.00149087,602.0],[1570887600000,0.00149302,0.00149422,0.00149153,0.00149422,936.0],[1570887900000,0.00149496,0.00149603,0.00149341,0.00149444,1320.0],[1570888200000,0.00149441,0.00149648,0.00149441,0.00149441,3166.0],[1570888500000,0.00149441,0.00149441,0.00149441,0.00149441,153.0],[1570888800000,0.00149441,0.00149529,0.00149441,0.00149441,453.0],[1570889100000,0.00149471,0.00149587,0.00149401,0.00149401,14392.0],[1570889400000,0.00149358,0.00149623,0.00149328,0.00149328,2024.0],[1570889700000,0.00149367,0.00149384,0.00149275,0.00149365,256.0],[1570890000000,0.00149275,0.00149632,0.00149174,0.00149632,999.0],[1570890300000,0.00149316,0.00149316,0.00149316,0.00149316,13.0],[1570890600000,0.00149316,0.00149316,0.00149316,0.00149316,28.0],[1570890900000,0.00149316,0.00149316,0.00149316,0.00149316,54.0],[1570891200000,0.00149316,0.00149429,0.00149314,0.00149429,407.0],[1570891500000,0.00149363,0.00149518,0.00149314,0.00149518,837.0],[1570891800000,0.00149505,0.00149505,0.00149153,0.00149274,5633.0],[1570892100000,0.00149239,0.00149254,0.00148927,0.00148927,2580.0],[1570892400000,0.00148994,0.00149165,0.0014875,0.00149165,4388.0],[1570892700000,0.00148988,0.00149267,0.00148988,0.00149068,257.0],[1570893000000,0.00149226,0.001493,0.0014893,0.0014893,3807.0],[1570893300000,0.00149081,0.00149338,0.00149081,0.00149143,5257.0],[1570893600000,0.00149142,0.00149335,0.00148891,0.00149215,1811.0],[1570893900000,0.00149275,0.00149338,0.00148909,0.00148909,4556.0],[1570894200000,0.00149285,0.00149285,0.00149285,0.00149285,2.0],[1570894500000,0.00149026,0.00149026,0.00148967,0.00148982,1450.0],[1570894800000,0.00148985,0.00148985,0.00148964,0.00148965,83.0],[1570895100000,0.00149045,0.00149219,0.0014895,0.00149214,23572.0],[1570895400000,0.00149027,0.00149027,0.00148688,0.00148688,9101.0],[1570895700000,0.00148651,0.00148651,0.0014846,0.0014846,6966.0],[1570896000000,0.00148584,0.00148767,0.00148428,0.00148582,1980.0],[1570896300000,0.00148864,0.00148965,0.0014868,0.00148748,4076.0],[1570896600000,0.001489,0.00149048,0.0014877,0.0014877,24986.0],[1570896900000,0.0014868,0.0014868,0.00148466,0.00148632,1781.0],[1570897200000,0.00148695,0.00148831,0.00148558,0.00148831,3041.0],[1570897500000,0.00148892,0.00149036,0.00148712,0.00148823,1057.0],[1570897800000,0.00148701,0.00148772,0.00148701,0.00148772,60.0],[1570898100000,0.00148594,0.00148854,0.00148594,0.00148854,2789.0],[1570898400000,0.00148697,0.00148876,0.00148695,0.00148755,1555.0],[1570898700000,0.00148861,0.001492,0.00148754,0.00149121,3077.0],[1570899000000,0.00149241,0.00149338,0.00149161,0.00149228,8440.0],[1570899300000,0.00149051,0.00149271,0.00149051,0.00149156,632.0],[1570899600000,0.0014916,0.0014916,0.00149027,0.00149091,327.0],[1570899900000,0.00149031,0.00149031,0.00148908,0.00148916,1749.0],[1570900200000,0.00149061,0.00149061,0.00148994,0.00148994,2410.0],[1570900500000,0.00149115,0.00149115,0.00149003,0.00149079,3283.0],[1570900800000,0.00149102,0.00149248,0.00149102,0.00149248,511.0],[1570901100000,0.0014916,0.00149184,0.00148943,0.00149184,2730.0],[1570901400000,0.00149055,0.00149079,0.00149055,0.00149079,29.0],[1570901700000,0.00149001,0.00149338,0.00148917,0.00149338,4614.0],[1570902000000,0.00149339,0.00149571,0.00149333,0.00149571,5341.0],[1570902300000,0.00149571,0.00149612,0.00149459,0.00149484,1089.0],[1570902600000,0.00149631,0.00149639,0.00149344,0.00149344,255.0],[1570902900000,0.00149437,0.00149437,0.00149344,0.00149344,988.0],[1570903200000,0.00149604,0.00149604,0.00149384,0.00149391,319.0],[1570903500000,0.00149391,0.00149391,0.00149072,0.00149262,9027.0],[1570903800000,0.00149412,0.001504,0.00149412,0.00150043,17623.0],[1570904100000,0.00150046,0.00150046,0.00149555,0.00149555,1980.0],[1570904400000,0.00149516,0.00149916,0.00149516,0.00149839,3030.0],[1570904700000,0.00150019,0.00150019,0.00149773,0.00149773,4952.0],[1570905000000,0.00149774,0.00150048,0.00149774,0.00149888,576.0],[1570905300000,0.00150078,0.00150263,0.00150078,0.00150216,1580.0],[1570905600000,0.00150119,0.0015025,0.00150078,0.00150078,890.0],[1570905900000,0.00150137,0.001504,0.00150078,0.00150148,2433.0],[1570906200000,0.00150148,0.0015034,0.00150145,0.00150224,1263.0],[1570906500000,0.00150224,0.00150441,0.00150145,0.00150241,36008.0],[1570906800000,0.00150542,0.00152557,0.00150542,0.0015154,87001.0],[1570907100000,0.00151711,0.00151711,0.00151479,0.00151479,780.0],[1570907400000,0.00151706,0.00151707,0.00151327,0.00151327,8924.0],[1570907700000,0.00151327,0.00151586,0.00150822,0.00150822,12937.0],[1570908000000,0.0015111,0.00151166,0.00150707,0.00150707,3651.0],[1570908300000,0.00150788,0.00150788,0.00150615,0.00150615,3855.0],[1570908600000,0.001507,0.00150939,0.00150612,0.00150612,5646.0],[1570908900000,0.00150692,0.00150707,0.00150605,0.00150707,85.0],[1570909200000,0.00150814,0.00150814,0.00150621,0.00150621,45.0],[1570909500000,0.00150683,0.00150876,0.00150683,0.00150814,1607.0],[1570909800000,0.0015075,0.00150825,0.00150579,0.00150825,2410.0],[1570910100000,0.001507,0.00150886,0.00150666,0.00150666,4574.0],[1570910400000,0.00151019,0.00151166,0.00150888,0.00151166,44960.0],[1570910700000,0.00151166,0.00151166,0.00151004,0.00151144,8149.0],[1570911000000,0.00151166,0.00151166,0.00151005,0.00151166,624.0],[1570911300000,0.00151166,0.00151505,0.00151015,0.00151219,15258.0],[1570911600000,0.00151512,0.00151519,0.00151452,0.00151452,29528.0],[1570911900000,0.00151319,0.00151319,0.00151263,0.00151263,183.0],[1570912200000,0.00151335,0.00151335,0.00151275,0.00151277,50.0],[1570912500000,0.00151223,0.00151235,0.00151031,0.00151032,1616.0],[1570912800000,0.00151033,0.00151252,0.00151005,0.00151005,953.0],[1570913100000,0.001509,0.00151372,0.001509,0.00151125,5342.0],[1570913400000,0.00151356,0.00151356,0.00151121,0.00151326,5739.0],[1570913700000,0.00151326,0.00151432,0.00151326,0.00151369,1191.0],[1570914000000,0.00151373,0.00151373,0.00151311,0.00151311,1068.0],[1570914300000,0.00151314,0.00151382,0.00151185,0.00151382,2759.0],[1570914600000,0.00151139,0.0015125,0.00151139,0.0015125,3219.0],[1570914900000,0.00151317,0.00151317,0.00151189,0.00151189,661.0],[1570915200000,0.00151192,0.00151192,0.00151189,0.00151189,559.0],[1570915500000,0.0015119,0.0015119,0.00151189,0.00151189,26.0],[1570915800000,0.00151233,0.00151233,0.00150962,0.00150962,1288.0],[1570916100000,0.00151001,0.00151126,0.00150966,0.00151126,2632.0],[1570916400000,0.00151176,0.00151182,0.00150967,0.00150967,19746.0],[1570916700000,0.00150967,0.0015113,0.0015094,0.0015104,7174.0],[1570917000000,0.00151164,0.00151209,0.00151035,0.00151035,1030.0],[1570917300000,0.00151194,0.00151284,0.00151048,0.00151048,449.0],[1570917600000,0.00151284,0.00151285,0.00150687,0.00150687,4142.0],[1570917900000,0.00150687,0.00150993,0.00150687,0.00150993,3009.0],[1570918200000,0.00150833,0.00151361,0.00150764,0.00151361,3577.0],[1570918500000,0.00151193,0.00151238,0.00151064,0.00151064,1781.0],[1570918800000,0.00151174,0.00151239,0.00151004,0.00151004,3065.0],[1570919100000,0.00150964,0.00151153,0.00150778,0.00151137,949.0],[1570919400000,0.0015095,0.00151137,0.0015095,0.00151035,373.0],[1570919700000,0.00150838,0.00150927,0.00150835,0.00150862,73.0],[1570920000000,0.00150862,0.00151048,0.0015083,0.00150843,8406.0],[1570920300000,0.00151041,0.00151262,0.00150826,0.00151058,6367.0],[1570920600000,0.0015127,0.00151386,0.0015121,0.00151386,3402.0],[1570920900000,0.00151342,0.00151529,0.00151218,0.00151218,14091.0],[1570921200000,0.00151547,0.00151558,0.00151382,0.00151382,2280.0],[1570921500000,0.00151382,0.00151517,0.00151241,0.00151242,21868.0],[1570921800000,0.00151327,0.00151507,0.00151279,0.00151471,19735.0],[1570922100000,0.00151325,0.00151365,0.00151026,0.0015122,2964.0],[1570922400000,0.00151378,0.00151378,0.00151121,0.00151234,456.0],[1570922700000,0.00151187,0.00151211,0.00151157,0.00151161,41.0],[1570923000000,0.00151157,0.00151431,0.00151124,0.00151334,668.0],[1570923300000,0.00151541,0.00151541,0.00151408,0.00151408,165.0],[1570923600000,0.00151342,0.00151342,0.00151335,0.00151335,30.0],[1570923900000,0.00151295,0.00151297,0.00151121,0.00151297,3434.0],[1570924200000,0.00151209,0.001513,0.00151132,0.001513,205.0],[1570924500000,0.00151358,0.00151587,0.00151276,0.00151451,403.0],[1570924800000,0.00151587,0.00151847,0.0015151,0.00151757,4016.0],[1570925100000,0.00151858,0.00151858,0.00151451,0.0015161,1910.0],[1570925400000,0.001515,0.001515,0.00151451,0.001515,4847.0],[1570925700000,0.001515,0.00151611,0.001515,0.00151518,40478.0],[1570926000000,0.00151518,0.00151518,0.00151518,0.00151518,0.0],[1570926300000,0.00151434,0.0015152,0.00151324,0.00151325,465.0],[1570926600000,0.00151376,0.00151376,0.00151175,0.00151175,2814.0],[1570926900000,0.00151153,0.00151153,0.00151,0.00151,6002.0],[1570927200000,0.00151,0.00151156,0.00150998,0.00150998,4475.0],[1570927500000,0.00151052,0.0015147,0.00151028,0.0015147,7038.0],[1570927800000,0.00151503,0.00151998,0.00151386,0.00151923,7206.0],[1570928100000,0.00151638,0.00151638,0.00151395,0.00151395,424.0],[1570928400000,0.00151539,0.00151755,0.00151533,0.00151689,2276.0],[1570928700000,0.00151769,0.00151885,0.00151495,0.00151678,71.0],[1570929000000,0.00151495,0.00151513,0.00151495,0.00151507,82.0],[1570929300000,0.00151494,0.00151588,0.00150754,0.00150917,7653.0],[1570929600000,0.00150835,0.00151302,0.00150298,0.00151082,13412.0],[1570929900000,0.00151064,0.00151299,0.00150916,0.0015107,6678.0],[1570930200000,0.00151224,0.00151224,0.00150681,0.00150692,1796.0],[1570930500000,0.00150828,0.00150828,0.00150593,0.001507,1978.0],[1570930800000,0.00150751,0.00150995,0.001507,0.00150869,2802.0],[1570931100000,0.00150965,0.00151071,0.00150512,0.00150806,7623.0],[1570931400000,0.00150707,0.0015086,0.00150675,0.00150675,639.0],[1570931700000,0.00150855,0.00150855,0.0015054,0.00150603,1608.0],[1570932000000,0.00150569,0.00150631,0.00150512,0.00150512,918.0],[1570932300000,0.00150496,0.00150496,0.00150415,0.00150415,1551.0],[1570932600000,0.00150379,0.00150646,0.0015035,0.00150646,4947.0],[1570932900000,0.00150731,0.00150923,0.0015059,0.00150919,1992.0],[1570933200000,0.0015092,0.00151153,0.0015092,0.00151066,3873.0],[1570933500000,0.00151205,0.00151341,0.00151066,0.00151167,883.0],[1570933800000,0.00151105,0.00151307,0.00151105,0.00151241,6862.0],[1570934100000,0.00151184,0.00151185,0.00150857,0.001509,4585.0],[1570934400000,0.00150901,0.00150901,0.0015079,0.0015079,1721.0],[1570934700000,0.00150717,0.00150985,0.00150681,0.00150985,7193.0],[1570935000000,0.00150944,0.00150944,0.00150932,0.00150932,52.0],[1570935300000,0.00150882,0.00150932,0.00150703,0.00150703,326.0],[1570935600000,0.00150703,0.00150822,0.00150681,0.00150696,95.0],[1570935900000,0.00150839,0.00150839,0.00150681,0.00150681,1545.0],[1570936200000,0.00150807,0.00150884,0.0015059,0.00150814,2415.0],[1570936500000,0.00150764,0.00150764,0.00150745,0.00150751,63.0],[1570936800000,0.00150937,0.00150937,0.00150726,0.00150744,744.0],[1570937100000,0.00150765,0.00150765,0.00150674,0.00150739,1888.0],[1570937400000,0.00150616,0.00150675,0.00150616,0.00150675,34.0],[1570937700000,0.00150739,0.00150739,0.00150699,0.00150699,100.0],[1570938000000,0.00150699,0.00150699,0.00150699,0.00150699,64.0],[1570938300000,0.00150742,0.00150949,0.00150686,0.00150686,199.0],[1570938600000,0.00150859,0.00150859,0.00150859,0.00150859,59.0],[1570938900000,0.001509,0.00150999,0.00150859,0.00150859,21218.0],[1570939200000,0.00150876,0.00150935,0.00150859,0.00150859,651.0],[1570939500000,0.00150905,0.00151253,0.00150905,0.00151253,3663.0],[1570939800000,0.00151305,0.00151519,0.00151305,0.00151373,5312.0],[1570940100000,0.00151548,0.00151548,0.00151157,0.00151165,11816.0],[1570940400000,0.00151175,0.00151371,0.00151072,0.00151227,12425.0],[1570940700000,0.00151227,0.00151228,0.00151078,0.00151078,834.0],[1570941000000,0.00151077,0.00151077,0.00150899,0.00150899,1927.0],[1570941300000,0.00151185,0.00151236,0.00151185,0.00151236,5295.0],[1570941600000,0.00151094,0.00151141,0.0015109,0.0015109,95.0],[1570941900000,0.00151151,0.00151625,0.00151151,0.00151625,4570.0],[1570942200000,0.00151586,0.00151805,0.00151572,0.00151572,2932.0],[1570942500000,0.00151573,0.00152,0.00151573,0.00152,29321.0],[1570942800000,0.00152,0.00152,0.00151843,0.0015191,58825.0],[1570943100000,0.00152,0.00152,0.00151759,0.00152,29620.0],[1570943400000,0.00152,0.00152035,0.00151746,0.0015197,95699.0],[1570943700000,0.0015206,0.00152325,0.00151925,0.00151967,10921.0],[1570944000000,0.00151925,0.00151925,0.00151573,0.00151573,711.0],[1570944300000,0.00151573,0.00151701,0.00151512,0.00151701,2218.0],[1570944600000,0.0015165,0.00151711,0.00151531,0.00151589,4238.0],[1570944900000,0.00151607,0.00151625,0.00151485,0.00151485,709.0],[1570945200000,0.00151763,0.00151763,0.00151584,0.00151584,345.0],[1570945500000,0.00151584,0.00151584,0.00151484,0.00151529,620.0],[1570945800000,0.00151671,0.0015189,0.00151603,0.00151723,3751.0],[1570946100000,0.00151726,0.00151927,0.00151726,0.00151764,1150.0],[1570946400000,0.0015176,0.00151925,0.0015176,0.00151803,8760.0],[1570946700000,0.00151802,0.00151854,0.00151725,0.00151725,3817.0],[1570947000000,0.00151871,0.00151871,0.00151802,0.00151804,4940.0],[1570947300000,0.00151814,0.00152142,0.00151813,0.0015207,8749.0],[1570947600000,0.0015218,0.00152351,0.00151921,0.00152351,21038.0],[1570947900000,0.00152278,0.00152359,0.00152144,0.00152144,3524.0],[1570948200000,0.00152021,0.00152022,0.0015178,0.00151805,808.0],[1570948500000,0.0015178,0.00152056,0.00151569,0.00151846,5185.0],[1570948800000,0.00152054,0.00152056,0.00151924,0.00152056,332.0],[1570949100000,0.00152056,0.00152233,0.00151941,0.00152005,14506.0],[1570949400000,0.00152011,0.00152011,0.00151896,0.00151896,100.0],[1570949700000,0.00152065,0.00152065,0.00152065,0.00152065,190.0],[1570950000000,0.00152057,0.00152128,0.00151913,0.00151913,2054.0],[1570950300000,0.00151913,0.00151913,0.00151913,0.00151913,0.0],[1570950600000,0.00152131,0.00152132,0.0015196,0.0015196,1092.0],[1570950900000,0.00152048,0.00152196,0.00152048,0.00152164,4099.0],[1570951200000,0.00152164,0.00152295,0.00152163,0.00152295,8946.0],[1570951500000,0.00152295,0.00152351,0.00152273,0.00152273,1537.0],[1570951800000,0.0015213,0.0015213,0.00152129,0.00152129,699.0],[1570952100000,0.00152193,0.00152437,0.00152122,0.00152437,14818.0],[1570952400000,0.00152436,0.00152456,0.00152436,0.00152456,86.0],[1570952700000,0.00152438,0.00153575,0.00152438,0.00153045,48855.0],[1570953000000,0.00153369,0.00153772,0.001527,0.00153305,20292.0],[1570953300000,0.00153601,0.00153652,0.00153107,0.00153107,9857.0],[1570953600000,0.00153276,0.00153356,0.00152776,0.00152776,106563.0],[1570953900000,0.00152697,0.00152991,0.00152325,0.00152806,10656.0],[1570954200000,0.00152947,0.00152986,0.00152309,0.00152309,16131.0],[1570954500000,0.00152309,0.00152665,0.00152309,0.00152665,3748.0],[1570954800000,0.00152295,0.00152826,0.00152295,0.00152719,5387.0],[1570955100000,0.00152705,0.00152705,0.00152482,0.00152495,594.0],[1570955400000,0.00152433,0.0015307,0.00152396,0.0015307,6125.0],[1570955700000,0.00153093,0.00153511,0.00153039,0.00153039,9991.0],[1570956000000,0.00153144,0.00153144,0.00153003,0.00153141,1703.0],[1570956300000,0.00152938,0.00153305,0.00152938,0.00153305,15008.0],[1570956600000,0.00153511,0.00153549,0.00153207,0.00153207,20658.0],[1570956900000,0.00153272,0.00153652,0.00153272,0.00153462,12191.0],[1570957200000,0.00153474,0.00154173,0.00153474,0.00154014,58105.0],[1570957500000,0.00153825,0.00154226,0.00153721,0.00154226,42840.0],[1570957800000,0.00154262,0.00154262,0.00153579,0.00153579,5210.0],[1570958100000,0.00153534,0.00153831,0.00152675,0.00152996,24621.0],[1570958400000,0.00152996,0.00153146,0.0015246,0.00153039,11571.0],[1570958700000,0.00152889,0.00153321,0.00152884,0.00153061,14200.0],[1570959000000,0.00153074,0.00153074,0.00152627,0.00152733,14771.0],[1570959300000,0.00152568,0.00152742,0.00152568,0.00152742,733.0],[1570959600000,0.00152681,0.00152681,0.00152623,0.00152623,2375.0],[1570959900000,0.00152623,0.00152623,0.00152506,0.00152506,1183.0],[1570960200000,0.00152506,0.00153254,0.00152506,0.00153011,16959.0],[1570960500000,0.00152685,0.00152687,0.00152568,0.00152687,217.0],[1570960800000,0.00152627,0.00152627,0.00152627,0.00152627,995.0],[1570961100000,0.00152694,0.00152694,0.00152578,0.00152578,3419.0],[1570961400000,0.00152746,0.00153297,0.00152746,0.00153139,5528.0],[1570961700000,0.00153081,0.00153322,0.00152836,0.00152836,1471.0],[1570962000000,0.00153025,0.00153152,0.00152865,0.00152865,1942.0],[1570962300000,0.00152865,0.00152865,0.00152865,0.00152865,0.0],[1570962600000,0.00152865,0.00152965,0.00152685,0.00152849,54380.0],[1570962900000,0.00152849,0.00152951,0.00152558,0.00152558,4576.0],[1570963200000,0.00152558,0.00152729,0.00152558,0.00152599,11115.0],[1570963500000,0.00152837,0.00152881,0.00152727,0.00152881,341.0],[1570963800000,0.00152953,0.00153039,0.0015295,0.00153039,4718.0],[1570964100000,0.0015302,0.001531,0.00152949,0.00152949,3918.0],[1570964400000,0.00152882,0.0015302,0.00152882,0.00152903,14423.0],[1570964700000,0.00152774,0.00152774,0.00152568,0.00152568,1410.0],[1570965000000,0.00152506,0.00152506,0.00152449,0.00152449,741.0],[1570965300000,0.00152609,0.00152871,0.00152362,0.00152787,11786.0]]
diff --git a/tests/testdata/XRP_ETH-trades.json.gz b/tests/testdata/XRP_ETH-trades.json.gz
new file mode 100644
index 0000000000000000000000000000000000000000..69b92cac8a2b1abb62e2be99a200063a247dcf10
GIT binary patch
literal 473687
zcmYIvcRW>p{J*_N*_oA)agB=1LPOc%a$Q_xWtSD#CS@dK@6C0u>spt{HIwX&d#%ju
ztz0wwj?ee^eSH7BkH;ht-Z~4UN8OY1S+Sblf(#g}^
zjie8!g8?adlpI=ae}ShnQ2qYh$LKp;X}#ZCso{j;zGCjweZqB*`)pQc8Jezi^X=!4
zuC@y~pGh3YVv#jto?m|WhPU}%U@p$P9{wA<_@fv6?_?+V-?TuBN13V6p5^(`%EO?u
z1emB@ALV>p%fG#gx?pn6)3-AhP8S2gj(gbGr*S`kvog=-9})%R-$W$cRXgbwxH#&<
z1fQk`Uu*!!;&v`pg8wbW1)qKh{X6pqG2Y&{gmj)l7
zww(70w486WTx_{-4W7DR{2Tjyaq;zH1#|HSI262j;c#(yP82wAzKFUw8EZL1pJ`ki
zTb|EfxIGNIanvgid>D7JzjHyHJwL*W0=Ic_ntM*1tqX?b3Eyy1K0i6$xey3$2oqxx
zyAqgZ-1HvFfjsBeU(!YV%-_;iq9jkIExIC^zfOWQzq7@AZXaB!ZF-u^X?wzyb7#pU
zhE^Kil@|Rd!}Iwy+lYH27fTM)V`YoZhza$6Cb7ta{vx$Aso=xo
ztGxKkvquX#hamI_ApI(hVgK?a_6q$CxarmPv!(X!V*uuL5Zl5{bXB_cgkEbCq7UE;TZ34x<#q$zf>gq
z;^dcR>fRm4}I@I?b++@TF4eS>%ghK=paz#`#!6(
zJza|j9GgZmVum%bu_8z`KAB=8BO6a)e3M(OijTR#g?WC&+<9F7*
zWnI2ACrYT(zg>w^Z{T#U1FM^iy!@UulBx(oIiA%QP>N>;E@R}9sIZnL}&S~pPzM5D$Qy96C
zd$KuW8z=Z6T~+h?w+*Z&IpSW3Q-tw6>nKaJ)Oa|jzSd$h$*K%uQ4i!8cB7XY$q9`=
z*r!|LMzTYn1TiD(XIx|{mPc<=C+kmrfR&oSV0J1#cr`IAJa}l9d>y@xydj;5lxnaQ
z#g-5?@vNg~OmddFMz5CGOJ>QDGxYdhZT7qR&#Q`-G(nCOSlA=%I$d@nnX5mOMt)G3
zgT6EHjbukZ=Y&J~jDDosrB|nnbQ*V48(xzDi(`Ivqdv>NfxxzgY|4oy1Yj*$;fVGq
zTP<+k%LvXSvE-8#SO}4Ye(eWx5pMZJyy{9YYsFibn=F+unx&>{ImJXqSx
zRay?_u32bHMgH>P3~)mcw~x>qcGz3olu
zx|AWMt}V^)ot9KVB8X!RdRb}?r%w__eR`l##&FS^JM^Iv&SNy><$}nA_Tq&oC-yT^
zJP59a?W91o8ycyM8bxNZK^}n$u~3W_89o{X)ibK^lh^i+f$6)-kRq3=uuzL*x;w`0
ztsEhO<#v@2Gy>_>-lP7owI?(-`4Nx!gZJ1YkZNYR)5JOp$^=Y#kRrz=VJwb98j{oo
zJ}NLeT)lzMs_Wz~tFgk>u#l7#GX|7l7e~LmY+?!VY8Uqu)km`-;O*kzppdsQusPtO
zOmro$4(K6+R(@ss4F6PTpwr_HZ_=0Wg;Oq3^M(7u
z%PG6)zmUSj>26=}`|bpmQyx%ebEPtI{4E^-hp0VOvA2xV~@9MNV)v=RQKn?d6n|xgxB
z^5#9Ji=y`%D#z{1r)HOCU59RA*y8#`1}pwmx)n432pSjhrITWHX7W*FolIh&+*Hut
zTWcFaeV^SFhNhjR?J7ma+vOT+jpIt7{8}o_np}XbDmRv9Dh`O}j=WeC#Tu(aqx`M4n6W@6gGeTS+^sc=F
zvz(J`aNt@eUy?yK(2!CL?a78OQ%e*I7QTnvivZ4%%yn&mX$pNjWL5dD)nahLr%AGt
z&Hb@7R_e-^k7!s}6|Z&_CV$c;WuC%YE3QMoewA{RgEa)cfRv5f5H
zM~jh{2TaSi$|Wy(6d)nNs{gyl{;+|c=CbA4=M$koQE=UBuIabErUKSH3TK?-Qz_Ow
z`^Tt{FGYm82TKY*s
zPcyl&@e7f0x8kjFPhk}~IkK*=-=aphS4_CCvV?2=|>S9Mja0#
zl8&F`k28SRqeS0N{fb+qH2hfGFp}*NUDPK@S8V_Dbwcuft?l0cqmpqW@Q-;=ycUxi
zx&Q7*w@ZNV6Gwa+V}AOx{zW>OV}rdyb{>Cn^0)A5{0u{+Aqmd1kZ_xzx69yMhT*9B
z-m?ZPudA(obJRG9+!~vOnM-_uTXfpZ()UyreJWV%3YNi8^+L@X@_iN
zADWu?+3WvfXrD>Kfl4UxiIs}F=r)xY$hGV1`C`kv9J{nRcU*Z~m|RE$FxAzighT(7
zx(-4iyN$x@k9s#Z5LFC55Nxz+_RZGEysn+{VGh2blg3wGb|q{jhl7QH+j0eR`a}WqRIsh0pcwlMaA(uO@lY<6gd5x$k?rL_8V4OKaSyr
zU=-768M(`BvR;F10|
z_}Q5`M=c_S?H!X8yj;Rp=KkHE|9X^H+ql%QoaF2GOd?8dhcjb8&B=^Tma-Vy&RzLy
zqr%0hZ#e(uft6H?H0WtuS+eE&qRDCRz~=(rhi!M8A||)FUxAj*cxX#Uer?_!CZgpw
z%4&RfUU!cTejJUKDxM|ZMlYa3)?Rm?XTNY?FoDdlK2v1$QTCbGD3QPpYh~{vpP3e#
zKsEM1ipe1p+CF)#By%)c5FSR7Ue||hS9>_!l86!e2%Rt1^?gA`tJkkm(51h|*{*fd
z&~u6KwEYgc-Kd1ceT+k@P4huTJw~d2R8!iU<)g<=1EU+o9}2Gb|27?tfod-+w0#W37u*dI8X8S6h;AzCnc$Q~VPVazVn+>l)hzhwNGRf9S~
zpzRT&xJ5eP&238@_$AouE#-nUNXK_9he+`xCCmNGG9{U&(;l)bhL~tZ$+5++vJ`{i
z)~whkXiYeVs`e<>505aKKo^ZCmW?Ntj18ifR}-+*gK2e`{HKc{GyW~fB@OJZgOQy2
ze`(fvJ2qZR*~%C}Ev>
z?p^?hG@3dTJ&S!ZFN5Ih`0Hq4Gj!+9(6xXw*Y6p^jw`m1TqXnA`
zFvpXdvSX~X5<&xS>0!ITz->O_wS2Q<5mIgZ&F%#09Rl9X5Hm%36+qb*jOyno@xTX$
z3KWW++dbVL`^yzvQFiau02gAsFQr1u2HS$A9kT#F9L!hm2JK>%rXJBgz@%!}%O!v=
zDhK9#qu-M2GjUdErDZBIfxx?R`YGp6@g@Dh5wRS@`w=%Ng;mzpuqgxnG2M#0pYO(W
zjyCJePlXA>wb@TUF2tV_rDQcZO@zwE3OR7c1pcr^S|f5-uNgf9I@CL)s0t3|YMgC+`uR^DscI^^(!r~lF&YjD9lg60@CRG~yX-->P_8?(Z
z?5~rpm5I}Z5{6rFRunC@7iRWbBKCuj1M?JSD%v1zTLk{Jeo>g^wkl_C!A9=4w{L%@
zEIDPlsa#9n#xV9=pQzwQmtD><``2R_NWTH-tI?7%iE!}yIXgaeS9r`@htXfAxe8ChbWEA7JLpWgKv)d
z?=(Ix#Y4;$w;YEPR5q<7ZJV_SwW*
zZs~t_%3TwbwUoTLnS@ZK3txvoVc?3e~~XZ!#f^9ZHyEx3#s8
z%CCg-3t@$e{)epV+4s#}^7S<{zg=8%Ew`7doxv5E6)$m@=~z_#6MnYSM3__zi&Kvg
z*m@V3ad7fAxUpA}q2F$Ix;`CMbJsOVI(6>RwxDk`+a>$nH%<^D{51bp>oC48nDT+W
zs70sWgs6mFw+?ImeiKM(mFo1bQBEC#wa%3j4vm`TP~1Jtblcg1)XQ
zMKjrQOrA}Q%6W;#und{LMh#ROQ?BN+CHRcZEj_1{4uP&)RY4U(U`+d&2i&D6pK=VA
zQmKTMMOzJx?lahvbf=Ie$r2L#P8vm;D(Il}hUyrK%B?p;&Y_pR|8%N`cX!e?cYY>2
zS;S39qKS8-;I#qd_TOF;FYZ*c3#Qo3kPI`}dn^}wfzt9G%JO+~{PrM3-kr!%dx6Cf
z)@HZ%O1XqZmz!0$!d}n*lB{kz4PQbIYQy@+-`NZ^AfAE
zU6c*pFZ|#=n4EEP%TW0}vA^v$=%wxQQnGP(cw_7JA*7tY_dzBE{=t}QL&Wzz)+Y{4
zL-+@=m=hZcvpaz5YHqx83U#)$sjkReG{0X}dl3-rR_?!>hCJ82e1}HvTYUTO3l`X7
zRpiD%n*o*f5Vb$UW{!<1E>I+qPq`CndBxEKM1+;wSACYU6ct~rhM`NR#LZukR(Fdv*kbk6Ktqba
z1PhP;1B`Qo*UocUJQ*z^g5c4JQ>04zou?D&Qn#)xclFezu(Ex!@B>8VOmo~=L)ALj
z41?Kx=dtgqp4>>=%Cf#@Y78=bOIAIQv6v-$)l*kC!*HwZZc$+R=rdh!RQUo_c$=cQ
z!c4N~Ik@=APBC%h)=FuVtYFbAwb#u2cl*zBiZ2%l3i(;L<&5+!P6V9%>3-)Od4x;O
z`oDV@%1B=fLi6B76#{RhI^Dy29SUnxZdLM?wsMv2o^X=03Nvr_nr$;|ynKwtW0}TT
zeg-SuO697b&f*s1N%68Hw;W2Mu#r!xnfL%C`Lk5saZaaX0X?i)Dko&cu?dHVzq~fb
zw^>6lPRv3J*MXk3*PHt9a=EY7o3b?YxBuaqiHUZ`G`ttD@NFC$?v$}VlkGlszNw}(
zR^ZCzzsn#s3@q~98GlUiUmI;(Mxqy{Q{#;^BY(4LxQ+)^X7EjdzkA&{2X$iL34u?G
zj()v*IqV*p5(I7Rp%C8xG}^G@KjF)GdqXfJIj7?!5Ia02e0C(>N$imBC2g$)XBMVM05{4b?6Z7QP43Er
zX}7nkB8vqPV`u6FY*Lo9<8LDcWiTL|siUPnX|t;aGKs+vX_}fW{89zP{l{7ycR!Se
ziz?LX*bW7Yo+d3Ru>>7qz
z7!u|rvlhVdUiR0oph`%3#}4dpP81yUW^vjX2L=wga6BD;JnzWJPVGhg6$N=dx2gSt
zPW;J^6(B)P_gzBYn7AQa+G@$M$On@%Qx$?@=4Vg2CyukTY;FNlg$@B`+`S3I*0{e3
z1V-XGJSZzWB)ZY`hXZ434^zHu;w|{@#SXlP
z3lsF!2A`^Gr2II%fOSTc{7ptZ#370rx4$D5Ly%)Sk_5NJtZDn-MNd4r08Nq(%k0Ov
zZ(|h5fIN{*{k$|yasPv+NOpw($`wliFu^u4tJ{9%-HQ*O1${}`$(e+S&f^c*T~`>6_o$C#=ZGYnxWj2>GDn
z!2~SFQGaTtJAIQ>bQPRV*QC+mZ5;&b#H0F{RPRoW3$x*VQY)KSVv?{
z&_CAn870_H-m@T$>5Db8RmZxy{1*vSYe^t0rQcl{6ylVgqk_JXwaYLSH-JodVFKTG
z|GUp%X;fycF7(M55=rg5vD#YA(t7Qo&r4p}VfiplUj?h8p$Fe=d{Gap>Ry0rlTcpV
zchdge!@hL>_haCw>Hzs@f35YZ@_V|eP)kCIheSS`~IGt)sReWMTzhs_0y{r;K
zCq_f*P8>i3hk2?Mh7+E{G5Is2bQwJ-@c5A*P39H(VG(pKlt#LP>8ZhYLxdqBvvk20L9jL>ul{d;OjfCO0x#jZ?~BI`9#Th|W8_QfxP;>`xs%-hdg8AP;>8g#Ci
zIqUckGQ7X8%-^2T+vSov@HymQZS_a}XfM+-1w)v5mOLhDtrW?^(b(mK@KEU2Ob51g
z5nn3Vj!Qv3#s4i?T5Rhx#Oq&J33|v!@}^_Op@qjOQhv>8x0^%)!b$`7l5fV{yC(2E
zGq4~zlUu#DQYpcMZ;N(`Tgt3ybI&98pn6lAH9T+
zEcTa<(iZtNxoJqzN?Op=3!$=aH4@z-O_ms%ian@Z{N7<}=1%9v%#|bVwiN-XwDyoS
z?0Ancr@YAcHbK9DyzA4Ps6k-zk5-w`u6Q^)+4K3-?+eP|JE~ABB@~`)fZ8Y1Cu-IXggH2_cXfzb5gn#X>3Lv&mY?%-d(r0G-8&wGxo4*agB*0-d);
zR#No!K6NVRO4bpJ`1RYs)y}#0Y_dLz1zkp1e;m-E@k(YC;)5kIdtW17lP2rxb0)h~
zCc8KsPs)JLXh%VCQa}OD8%FDwCc8*(C=9fRCo6_I)qoxLCuR2H@;peyKIHu|6erR-
zUC&jtuq{>`LlRb#vxl5p(id2==K~%y=Pg^tIlW=Nkco;YI(np=c%hDq76>ufPLIY&Y7>?Rc-zQ1!24RZ7E|l3ARF4}V;?VX=TJ
zy7oO(P+ip>Z!DXfe&&Blp8t-19NsvJ?4tS8D=o%X_kd1>M16x&R8mC*9zQJdYi#X)
zEcs=CORu;!TwP%;%9O`+2ed)_F|bkPG5Dxp@cpONYokz0**oJFd!h)=bdEU_MrYg*
zK~3wsY8P}w!>1(f%*jdXjyg{pzj6uvj#jGb8`TXP&^1oZs-)CIa!p`7UJI2C{1qgv
zZ?>J(@gLk8H+fDWrb12JXK3CxVLpClo9eow$YKe_>`lJw^>Z>7El^n3^mrV1obo_e
zOAs`9l6GWp5s$boR`J1ZeN8vUH>lK(Pj*7V$#@O3Tfi9sAVX0%@<_pO3*w9tXkj9o
zqjfS)?skM2q*t|`r4f{U!|!z751F-S{s4lF0?Eh
z(}HGE6zu>0`~_fk0&X{QR+KfmwdkJCQ+$LC_V5ZWmq{DTN1aaEr1e!A9qcS
zWQSknyV>a`6{PX1i@<`e=hoWBeHfWa%Sg{(-d^Z~>Y9M^3|eWV70?z2wWS~#$?gET
zaDe*BIo)1r6;p|A)i+ngMxp)&6pgN6HB8p7s+2SyBp=A_WlV|spj@bofZV5IM
z%Hy+5twoG`nCm9q?uWUHCb$~AFKHPzCr!39;=)679vq!YaKpRRCHYF?WQdF-QW?RiDX8Z!J)q{u{BW
zUzK-*o{$k$xcy1lbyKPTb~j|MeVg56&Jq2~oOTD3?qSSH0QSvB3#(n^@&YuF|Irqw41lgepg_MnOW=Uogb_1}
zug*B1*=+&;;_UYAN^l70n^;bnkkp)xQ=Q=CtW<5iL~4{|ow0ahR=s`reozUQmi6K4
z|48SfN>4aVvU@7R8sEWllpxEl5d>&rHddHaOH8)$vf4_{x`U&naemuY>9y?9E*NPJ
zeLYX=rB}UQX3WtI!b+a~15vllMSm4?8by&Mw+EDtPg2G3i{srZOeU3`0Be4ppcW539LI3bbsT>ukzYWZ^@Y0ZD@V$5%
z5@o8R{x$~x9l=P-6e7p%@P4a!dWaUpC#BNp3cbe2n2PUv_FaGlLV9g7+nz|qtA%at
zo|z~y-ja|GZgT9mo=ERFkMiB&dj_#O@J;NwBN~#pFnmlASVySbEVnNEiY!^xt)z}i
zPqBOg0|~e8!#aycXisGS!Ugg|O9x&FR4VrRb+D)_{cKMs@T(L~^4z^1@7RVrG?$*H
zu6sj5k0_l&dwdjJA_b#rvy?V-pA!ii=$9)ACpQL*moT`&fGE5c2x;m5v7!uGw)D%I
z_7s2r{biFdnv(eikk_52g@Sb$*D)4p@TYo+Qg^40iSw_s6klCV<)*TAnef%r2{EBV!vxRmH-E9j1!yMtM&BW6huOuLAor$%5{Nc{Gm~
zP#R@^RZQ(4pxvX^2gKL^thB$Kgngj>6%Kh+;A-tx$J^kp}AyaX$tpWQD^tP+{uPPtTI{M(BYwo^QIc-tE;$W<*cqa&H<
z-;KM90+o`Po91!=COUjDQC%O=?0CIQ7^3aD+7ibU&tz{4iP7q#6|>}s^+p^-A?nxvGU$IN@rcX`sAe;LKT?fQ6%bBY$qN!lGy4lCmyf-k^dvabThw;N
zVBF_T9-GSfC0r!C>>=E>=BoQVh=^q^T$H{nJ~6;gC2
    ;E<^;~MiMH%Nbo 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

    x_M!XPLE%oRD~2wx0)=+L_}4j? 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�AqK$_$Ba?lLDxwM9)T=lF(l{5QtNt#orgE0_-CjWf_EbjQxO< z3L3kT&du&0Gkr+M)>)l^cvs*T2iCW+3a-hwAzBMUBRg|@Nm*c((q#) z&-t|(6l?$Skk>KB| zdB9_hVaiR&iUpYVR4+I{FVQQ2c<-1enmlKF-{ z>r0h1DdDK~(@t&XO|pOFEhpJ!dopBSRi9sZ7fk9!}=UuSC#JBbxUs!(M|zM6~+? zusOJow*vpgQ2C+%bm&8tg-v3-2B{qmxoaO0A<-*02@JcTr@A^^zI%rehtrG;@@*dL ze-WvDJp#0mrpiSaWa%JJQT5$>dj1-Kp6h7%z(0Y`RmtK{yJheNr!$xrC2>Ea+mKZnTp9XRe6D9tkk4Ruy6Uh6S zcxt@36`0mI^omGnx9L@bOed~|huyJ!rCU3>7XPR#27qDg38jKqL`mjO?x*P-8nK~f zC*2?PBJrtA&1ElRw8*pCj1BzIGQkRm@td|$7ixgVTNpA`+o3{B=nv7PU5J(>9nh10 z9iL^oTf0dt&Ggk}$ok<){-gNWtSxA+&{C-`j7KcQ_I-V&1F*iGf zm2=ozMG2R4l1W>BB$ws?LLxxGLR`g9eNbM`3Pm6 z676f)61_^-AuBn`YFvbi-fO&hxArHGCl8D!4#xht!QA@=Os#Bc+qCD_MXkN>-;Be(s4RyjCYtImO(t^?$DO zA@!^1o6Jy0Wa=!4S99DG>LR=JosgSXxZU0lgsL)3&2c~6u1fuw3K#;2iR8-ji|62! z-9D!d)_`%VDPD-F$Hsf0;x9j#dFK)ZX=5!+&h{%5A<($IH=vnErs zrfCKmDCmKW-WRg+MXiREAi*y;xMQ44MyE)3_H)p+W=m#M6;3Z{Z(NtjJJIxEyOWm~ z&W&_EK66ldTq-o(Uf2ilz3(htufg9sAv~`;Jhs8FC`UV(C%38sC;*> zwJ1|8o$ zE+yKdm*rpaQEzVQR<0qq051CkwbQNszjJAH$5!|A72Ixp9*hOLO9f&+BO`JugahY| z?t*YJa{_qBTQRIK`NMHF-P-TdF(SW1U!zBCg1KxSALO2G8sVZA1#wE>H_E2NjjAY= zj_U|x22Q{^#h~D74CuQbH0o=adYzs^!Zq}Ul2`F`IDzFB#ASKw9YDfOu)*_nfySx$ z62~bHW*+@<>k0X;7F1RK=qtA-wv6SRG0ZjR&EPw%-Z>*1P2C!cfRT zwnX5g!dkTzhfu}Ul0Z$f^_#eownsO6T(+I4`5*vLHoU{NaCuNIqXN-{m^jYW^Ik|- zB&n~%X#dLCIIhhZ`?|XNc8?3mZ4LGWl6NqB0 zVc5ttgSMx7uTzRd&A{N#1FqXqD7bpG(kpx=6Epn8voMsLt#e4F?KV+x;&FrLpgoU{E6FoU{R;dfQ#2(S&|)B z9~RKnW+0u++yvX=;(Jg#QN{UPf*K$KBWPB`!=(_^RkwxhI2d4hiOX`~zPY}VMnN-+ z(=Hd>1}*PbdzUjEW&2>CeLwg@!pBU2Z=Z_?TgQE-O961Sw%wyosK+Tt5iTFIaV{EP zccuuwgL@p)4w+LIG%{1QTkdQI+Z3dr4bi7DQj}Jk^BeETzT%f8<yr znj6b|T9I%&ng#OxKQFh|sSKTD+DuD793U=(3;|Q!$u9vwwGxHXb*WwY_nIud$cvPr zWi&!5KX>hPEOX|idsXgjhxZotZ9pR1)PwO$k=GfTl^@JQk(BOBir}psRyk zb8iyJuI`7EJKWdgU8$h&x-}i$XPRvKCFb+1Xp}B?M(eM`_`wIsB>QX&8xAn8x(Nne zSTB7|C2HOGeK0$J6Zwwu#+e8GxCeb@e`8p+bOh50pvmCeD8oAB%Fu#%<1 zhO2J30N!P`<<1DOJ9%t8dD%ztdk%iB&c%K9=-FsLT}8E{3(wlLs+8_cEHgV`*mU8r z>6~W%+($h4xxmfbgw{f@i#E!sn0uAi`3>r8gNWZDFW0=w_r*zDl>cbu1U?b?hoa0_ zM;e7EQ8#uQb#PkNZ;t=e&L66`F|?a9y(KjVOm3!G0D08RTfb-ut?%j2pq80&-DnYh zYyY%d7qR@xZoz%amv1+-fpQ$sYbdfP$aU!drLcELesIkBA=zUTOxC@oUsv1xu7_!t zi^qH|80F?5x|T66W|MAu&E4r;dFu$Q%=}IM0dNI#^{9};ryEO=$Cn1F`Z|KWXPPE! z!S+2kftK{nx~X&`~A!=Z&=>5ycEc~o5*}=R4L)|N<`u%9b=b^?nYM{5MZJ9 zei{^EKm9aUNHo8){WMzB2#uxfD2}#L)K9r3Xps56?I&G&<%BnmI{(j0;AUd)SE07- zn$|!x$@TVPgmt{QgxU|g*m8skVgDiPcz?uaVKX;@6MA_Y>c5v4j=&0KGi;`^Oi+lP zqeD68vO4XAT7)@DOC(>cMbOyFZ{Byt^Aphde5BmO0Ew5&sJdzNsEs|enCj7>+@qg; zXp&@8A7M|Z2QO_h0KUlmTPPis;lv1kyJO|D-M=tJ`)@gIw90>HghmH5<0HF_bj8NB ze1uQ*SWTaCTG~5_3^_Kd)Lr1>UXC+uQvr54L0n?eo0NKZ!o!_EAn@%oQG>A3ir5c) za;1ibjwy^|PXz)pix4f|18sNyzkb`JfFXc#K`6MF6?_7Z*FWC z3k|EZ`?dmD!|V)jw3h5v=r+x5@_KaFouBv`83S*()xK%S7h)_h*CRC<9mR`+?5_n+ zO14DK$w+5EyFQ%3l%c6nbvJOXBYWsoSye;r_#Mh|q)x5=VE(grE)lyB<`0af+t`}D z3L>OGoqD{5FDxh!2<7c$t=szKAZILd`-&zC)!j$tbx-~Q@i5kM&eZAof+KrW+%@LE z>JvKKZ=Dv5fZSlzlymomnHlL&uq6-;Hd~9P7yQNlPC~VCej12fpc?^Q>kPH7cHMEt z1hW}5Vcs-4CE5ncNhn0FkUwu0rh*$RIBG_TIqy4e6$U;_C}t}87Up1J4hNM!m(Igd zsTZ$#E8a}_nA7p-O0mqL1T@>4h2E_6;vR2P2{5w^`Gt=)v0a7)tdjd>ldj(x_2RMS zXBo`tSk34jAoq)~W-*;wcxD?N7rrQ5n(YlJ02@7;#C^Y#S;)3$Tj};_dz`;aHbwFN ziVZvHeBVP;SJs~S<>l5g@OW`+{Z*Yesfa`39pC;ssDG77?oKQn@!nXxjbm{Y@4?n9 zRJ!Z1NavpzTeop+YqHFHkE?6pd+eL;N32g+e017$FnzqTR!(pDYo<|Zuwka+2S5RQ z71{gFwuI`M_Azbm9uLigd91z-ODgjMyUen_4*);Y-2B(=uzk%*yY*jp^Bz*bfBhXqjMTwx)nA(dw}*b`t`f<-c#@LNx!}8qJbpkj3$A8V4Rkpw5u(_e9Ifphs@Swk(IiUunPJ^JIU6V%ygwps~ z7c>8BNEO>3zQ!Bk8xJxjuQ0fh!Q1u(ibT^&lVsIOo5sSQj!9s(hy*O!oT2X+Mxl#?v?n2|UfVTmACHoc^@Q%Kp=VVt6b^arO?b z_S^fO2h5*0Wt3fu0m5MPHgNQiGHyj27X=HEs(WgXI6Y{xy`ys%AJQ;%xWwap-W<{h zbZ9fp5=x_YC}&XlGtr6#(gWuxmh}+UmHoGHE&K1D;ClrmA$iaDKJd2!p|gL6J2nZ@ zThyzkrSRp(ds^x6C-&=}e(F2)1|FjO^35qIubIRiO$UmOSD6VcGQqRBHyR2Qg!|0z zUbuFv%!h#70k`F08g?Cu`>#c| zAHa-ffnYMWt<2SC+nXsFRndnvzcF8nAyGy2oMj_-&?;d4Ko&d#xhAPPfiN9au#a6V6!k0M<6 z)e+rnA=}8O;lB6`Qqp6jgn9t8(gcN$Vib0?tsP_IXX`j1)jQz**(?w3~U9e!#C983Iv81?+oaNMx)fAWxPyI z5swWXxlkF}4~@s=CewU)sZMKf|2X_oISd01MkBP~Lqqb=o$)guMXJF%aFBVu)Bq3s zOMQpNAW6pH_6;DY=>PF_)nQG(-y4ud1d&cbQRxtnloG@Nf@6&C93|b-B```xH*9n> zIs^oyyF)@+kdlty%jdejzyEaaw(H@2pFQWC`@YY8Ak#W~GK1>9@w}l{!IXRtiEE@% zH)UdQ*S{lO;sHgR3AH)KoEVj{P11{Vqb^1OE$B5m<8(j{tbW3Z zIX=0L9>I`^;IdbS6qi`4LnXv~wUGClqov9k(E-kBoG~UUi{(A?Hi1KR`67!0vRa&& zQK3?LY-Q9T>e3+>t|@e=U-^O4lqy+!PRtvjs)LG!DLsL+0(zJ^rYS>>ah7rvnNItn z2n^e7qHY-~wePEcVK?sp|I@us=F%inh@$X+Nlk4CzxaM{w6>N@lJcMQj&0haDfRAm zZmF*fuHSHF0@_qhiXP>NABaY)vxg#d!F%;ngEL>L^HmG|FAKHShd`4Z>~X<;UQO9l zJC7xT`gA5|FcAqd>Vm~K8tftLFAjIJM0%_Rr}&cc4G6=ujcKA+2OBHTcS|$39xr;D zlB=``mc?scxg+h^o{|m5f&yzIDH3X5;hKDEmT2V(@Ie801O_aDz8%m|vc#;NR?f$udv&?stboMx43oPtUx{}nOg5nRu! zP@X0FHGKoOl^g7{!~O1$g5Ca!Q;iMZml+&pZKm=8BC8LplO{LDxyVeHVAn(ImFM)I zm-i0r>2UED&59G&sasI}-xGJGN2yYXp^qbhMT*?r5u|6^-b)TFnSjsiplJ|;8E4GA zP(YjNu@9eUNQ%q@L6tEKJx9JrL5Oj!o+GJrM5QGi*9N-@vVziz5rrvGN{lj}llxAf zrf12A8}u*q@kx}8Bw#w>;q}$Ox6`>$dg`sG(f1mq`B|_@v`cN}@1aD4e$F+?dY5tI z(^lIXY`5g@dW6pCxKHxboXPgv1e>;NO?9dE?WmL##`eQ+(j%vVhJWztd^67HOWy)s z{}r|ttFStdq7L?Z72NznNMGB^M0nr%BdAmlDJIVlKsbNf#axepuu0-sY%fPn*I~|C z*xzNj+YM&!TVMfOci2-%PQ@yvPeMGmg($3k9#h3n$PH@I+2?{}w`N9+%er&7RE^!R z`=)S&Kl7?u-QL2LY)&qVwK_B{;RSFM1Qpav?QS}?*ZDzDX$Ev7pX`n5OLg+SAcAg! zV*{CWq$-|zJhkwU+So?#lBIMq6-rmqsE-4T1>YLl^wra zl@D^aQ@@6S>o>_hmb^b8-4#k+j7>AI2WW6<<=T1u>IkK?NgE2t>W7PWUatcV&3{}j zDsbupgSX#KHaAoQb4@3a-)5hX^uIjzSB#^3y&|(Fnpta(Z8E5N=hSR=%qwyK+^w;& zdg4iYtp|gMh$Hf0OV~+td@hZ(XZmHZ&+@!Wku@%v@Bc~wjx`-A%Lsau+rK)^LR5|Q zRad`Ywnw()n>hA#YqYZvM!F^qM>}D7Y}bGF#k%K)r>h?_hkd(C`_EI3tZ)}Aua^xC z@p1gKSk8|O2e8@f)_$gq&kO?!!&%&r`vINkL@+o+$8W$5<2JUiEQ^+>y(kW(Fx!8^ zAa0zp%kEJB^}|LeAA)gwS6AJOAmEU!Bcz(s z^o8|>fNKkcB;Ri}J7vG=_uV(t)N{uSR6@6W{ZG@<9nMM3MRiqD;l@J7cG;qXB0gXq zIjcImY&8Y}uR-ykx76y2OJ;530~43`4fH%M-pO}Bj^>hS+?6qHWwz}uwK^JX;OKpG z_$E(u?|rR8u*tzQiJVY{^{yy_sef+nlwXJnI zm2eiwNdex2weLf6H_nuSp+3b3?yU5?Vv0^SeunCBPs7@7{za`bW?n?yGCT1S*v0FK z!Y`(Y$|k{qM0Xw(6m&hy;E*S~HQB7xvi-hcugmnZ&3G%hEiw`=NktXvK5!yU!OydeK?`JhE^@$Nj7PjE)}Q+mR{^qJ4x3|V9)Yqo0ml4IY? zdX>bp2E^#6kL~C;kh$1~FaPKYHz2oc5lLe9VpqjLJY9)<^<(SHI~UyOWxFSS;tak? zp98NfLW%kR)lt~k1P*^NWN4!pd6a0_OwExWq`IIQz05pu0z8!hGcE}IMd^<;;fq90 zA#Yf{DVpjTHBUET2{!4Q#b@pcb&$ioSrU6LJz7>A=8uAu;Bg#YMxDY^>UK>&D2Ov@ zK>_$Gu+LYER>HBl7khG)m7v&NoG!jADF2$RKq#8n)lr-V~ zmpyIIaRznRFUYmeMZcM)_tIwe6I0i>a1Ct{=qqFhHcgC!Ajn{4b~$|I{H>lY^kQmi%NK2>GNTM)27PqD7XvUFGg=j0&)=Frhx*g@ z6kXsQ(gkZiy_iWj%zzSG#aa zvv5nh(2;7wvKr%QcY|5I{o0f3J)O3<`8B1i)H?mdPa14(fLjkanwdEOry7pe`Z#=4 z9`>cW2Rjnu#hxiB0`mu)@(DhM{RnozL;@x zbMVdWqL)~`-jQ640m#HTx8NhxVI1;Ab~{`x|9x1W%W<$!1Gb5y)>nsDtDE<4gI;LT zv)X)gb0OHHZk-0o`nrl^7|}v=W6syqV4+5A6Xy?L7qx?0d>|~T8r2aJM9oo@e{qpB z6RvsD0b>$oBL3N8M47%I)z4MwSbVz&cD*lg@&BG)_8ngad`>YtoDPDu_83n`ABJ0u z*(I_Cg;)%&;AMCSlWZ*~OC0-A|E)H;Hfa~AGx>cwI_ci3Jw}O_}!8diB)R|AuTXd?%%I$_i`QJ`4_O>=XvbE@cyl?cU^z|RMv-W1eHN6;2ixnSH?*R+DX@ibWaEeCw zcGp|pOjlN50qHpJQgIX(GGCp?0Dcq-Cf-1J2m4TiFScvOrfk^eu(OI{|8PHQ4h&W3 z2liS_-?xv&^fF@GSUn0ZScca#!a?ualZ!I|XKPhKo1~4Ri*o`hmM-S8S=qB@114RT zmbbULBDY;EgQVZ#C-{skgMzcTcw_E#W0GGq(;QksD=+irB5m&sW5{xt*qA@Yj$QLx zUr{iI2)J}tI>+pA5*i0Wnk7mt4zLRcytL~KR%&6KR0@j8EQ4*#lV(tih?;j{c6mS+ z15;LF7LC~mW#$4d2tpNz!32Nav#)hWFcc2Z@zffu7%2duuCdH2l8b{ive$Q&sa-bj z95|oz&Uy1r=)k2JSpvXGrm_84TpFkp6t;~NQtLFQ^2=VUFB{kgj#ot-)`sCqy06+9TtGEJopRtP(P~R zNXmWoWSMbd=(MQI?@$*oiobYU;5uZ6(|BdCk|Y#ezIx6rr&IRAq(K|!Xa)PP%q77- z%b=0h7#Mhr)0aA3qk4pYC?`$wM#NhJRH9wpV_Wu5nsRD*T+PQOZojM_Ccm9miuu`2 zo&e&+o;0zQlM0H2QRS3baQ=H4!O)og$knzrCGx`R#ueL@=pJC*KV9m0X2`rGf3}Js z4ZA|9-i&5dGsW+kDyCMxFzLP|Iqa~dld0^bT-zAsTQtq~@I-WMvxKFq7vm%zny$0J ze6zOIa5J~wPD6Zu0$8oR-sLGfj7}QTPiY_>)aji$I0(LpYz(kZC$Th{G993KqjZHV z{#@D`_)^I_G7zTU1Vy{p^Acbx==BO~;Epuci!R!k?ATz64)SkAHWM3it#$+1Pvu79 zKqi4*+mA7Q!#%eq6ID&wM{M1&BSQGHXwPeuyRy24_N=KkbFxm?kG%GLHxh#pys$_+MC=xw@x7Gq zQT>rpJ)85gz6$vVISZZcYM0I~)@zJJ#iWk))t?W+^#uEw{w!7f-2`JZ{e)$5r9w8! z-4%$(W{C}DdCN~0UZ&JZ+X{9|3oIp)3*eMqz8-7NLS#Jxfo&i8-H{vfiGYQ2TQkdTf@euAm=o?<8v&SmS!>PX4a{B-CuN8JOhy5G`iF5+#|!-fyut9ieY}gzQT`#t&xdA*>JV7vLpiAjxK!Z zg&x34FUZaJcx%>F<5ANL9qpCSNBT|0+GH;GrC!&N*OnRsK|;fE@hvJBmj)1bn3mFijp3FLeO!%&P9MmtOx!i>spE;1UiJLF7=)< zM#J@S_~q?i@>bOd1v0}k9F35WeK)^qT@AdNY7_pUD7p&0g~r4C4t)T)ph{R3e3mBX ze5SMbSMjSjSL5#qKZfYfN^|pkG@sw2lsax(mH`GTWt;WSEYTRar1KDd1sE!5x3l_v z^H=`wT|K@8E@tnuF`{sV4zHD6Z~SS~T~0}L#mrc3|0dxx%D5Dcj7eZmz2f*?q)X)c zdZsXP5bDHWw|!OAQf38f>Up=#?5?5jvWGg`%t3eUg*`rQ#z-ynPZ`SCvn~+zM_!W_ z)R0?^am|}Q3&S+dpfapRXv>V>sK2a$0AIe&kT~M*YX;gYV?uC};x|7?!%U}P@-x;iSr)U~g{I>a_Ak~fPVlY6TVsjM3jd6`2Kml^&CAdm zcPbX}+!bKnIcc$!?f7v(TBJCcAjEt*e-S%R!((oew)#SMg|l`N5H+=(&y0^roBlqH;P5>)7m%l%UD+*g#4|rDT9w;;%?@K zR&-USoKCl_lfi_F^J0O81Tv=Bhi^;~@)qgU6)gGIwVq78OV4!gdPQPW_rw~96K?wt z`Z8vf%?gLc#w%POnjc8v^JdOLQ+jkR1iV^@9@LyE@Gm{9QhsQyFzI>Ztj zB*TY%H$H*kwApS%Vm+nlGQ~;?%-c+G!96QPEvk!o7HrHj(&uOnM^aY`L#@}q*9^yy zvTRCXGI&1o&0_rNIfnJ;p({N7m`G4pZ#*GBf_#&D z>~%ef8;5lp5Ieb-gl7NsrC8p+qbz)Y5bdFY6-_m*47L@_grL*gDd?YX23|ap8#g`8tOTgwm zAhq-`QxQpB{RXuZqj}IRqCRoqD{$fafzLB_2>@(VmmZ>X^S9F}Rl5C*pcMIC7*$2# zuOhE_94BVm__|}OW^=qg>kVzaRi8zf0j%jHA}8E(!pC2l;mWCbP^yDJ7ITi}C0zu4 zyDomS`t<8YS*klCqy8d*sM#O$2?n^`OaT(~ z(AVE0x)zvo{Lkq6BYneM_7u4!zIpd#{UVcM;~YOFvieP)UMiDZR=M-L&t3dlw#51$ z`8G6Lsdk1?DjsF>weYdJz&7R2xlQI&*xvwMH<5DubL{8}nZ*Hd3aEB*QCN2>#^8H# z$9XPcSjT|phL_OmUv~^p{RM7es}7}PR?4#px2W_*DbZpmmBzrxnQz#erCORWtr|XC zeGsg%%Q3f>EONb=@v;?&ChKHRyf~o1L!M|BJOJ+A1lo$DUG=-;i#Gn{37BiPGhAa6 z#~kH@@F4A--*uEfyGYpM=kN@PcWgvX2gjA7!6~PY9QK!+TRX?rPO540d311B+i0)f zMO#8CbaZv3T7%84udo_FTk1D#j4{)dXHu9;s7ah!-@GlBE-xXvAB^1B+k@!$S~|5wI1yf!3XFFlyvf1p}r!er@%zvj*~@{jU0 z#NhcPPhQi~(O1S5r4=Bg3v0NN?tczy)RCUMNq?a*3(P>GRn7SK^u`8vTSLKRH2Xg` zjPRZf>*I)(r+N6QNBGTzVWq-wvhcQc%Z|w9?7--+rKQ~S=wi2%n8M}}r`e9GxWbID z-)!a$d*?aJ*dPRyRx~6(`#s})gub1~9Ub;f5dgGfKuTR^pToxwngr;F5v9S*SJCWW ziS<(!$hQhFXO$*@g?&i_eer$|MKZN=7lXelUOXx%EOJc$jDtnV;q$Wo=fB3u@hn^`@n(Xipts{&{& zz>6WC!nD|?$ksVl3*R?VKgSiZU=YepBlawdt<8tTYJ?{b#w7qhmTuvDKbGTH6yGl( zn6TdnrAF)%{F|FVqdv(}HP;d~*V1vs4*So7zA6=_#1l7&Y`S|vFHkV4!q^}!ANO_# zG$&pB8*0e*4RKn_N-gt4(+btcz z797~T_9t)qF0s#&?QE%B-n+y@Ot)DncRvLBZW`|Siks5PZk0@YOb1*PSl_9$~Nb_UY8+0Z1n~bi2zPANH;t0lR*9;p^mOyP5 z(y1!yU)cxjm`bUa>nMu3@E!drx%){tT%$8a%^XI8LrZ5S`X7i^ftpBv8;`4(cKr`Z%EDh&ELwi7+*s0X;V!kL3ea_wMF?L@0V6zBfvmRZq89jNaq#g^ zl#F-naqE9??4n~r@7&+%iuDIsR_Wxv?d2aptbVbAb;Tf&%^pSc z=Tc`Op;6w+n{|d0fy(VM$r^e%tq;n=k*;ju2*%itUuF;wpgsG<_^6;ph*cplO-g2& z$u&U!^ZLpJs$}rBW90`<+r7+v)~hJSvEUSYkGL766$c4Qh*cxSth{Q~ZDPyiFQRtf zCpBY-^SU}zAXi>T(Q?5~&s^0cx3<-dYg#Me6u6p+Dafs^vr)9Ja+u=!Ae#W<TH@b8cmbXb7J0K)N6G~ad^pQ{jy@Lc`2i=r!27^8Z>cCadD-ss^w@!^}&tN>>yM%nnQz16tF-kXT)5z>RG3|@-&vQm*8 zIFoNbua#iT2v{{)c5O!%-(0kYq#O&sne=&)j~AArpI5RmNV%OzB2L!pJVm>_QU5`C*M-qiPkdb9%oj1oE2E3 zRy4)|STe$|7XX{r|_^UT_xy zX*9GQgKz!M9$|pI-r@A;KbKa)|0W4#12tB8{wI)Vg6LNs(p3|4{>%SJy*M??rj^#x&LFY3qVB=`v9W(5QUK8*gj-FT>>3BM=MvZT(Dugz6iBcOB;Yc zCG|6K2MU!8K(pwC{0V9#v&0Jx@{9znY$HKc>>ORa|B6n3%t}%h^hzT3o=Etoi0e_p zkbNKr_ZD`6HhtwmZ&&eOHLk4}+7Bxz9*_xpz2pb@Vx_ah>8LM)NMt&P=Q2`|g~Y>4 zQcPLr8-*qtyuY{viJ`;xl(hP;#PdB#atB9aQrUzC8@#Vrybc!D+gFTj76~E3v<+1s zey4DC@RVfivojOh4b?pm98(6-Am}6ACVzE{3yHwk3qn83q4vc9WbuB$$*by3rfSuC z;xUtlQm!~9A+#K7!U=r>7~Wu$I}X+}xUqjt@Yz1j`cP^&cl;$D7|t|Zu$5+D95Er% zw?ilXtS@8DXT3ry;=~v}6mj>#N4AIug3UQbhE*R6@K1RUqOs zl?$=p8`06}j{#SBIB1__)_Rfxx0A4)1aq-wTVwsAj4GN=JN_?z)W(FjZq^Mnx`!0` z)8Pg+QDim;lnP6NSC2AAfMd9k!-X8@*~hz+Le(^m+ccp2-K!W1p1V0RkO6EZ(5W1T z-2x1Rq)yvXdlQ#67iN?`xD$?a6K#{NF{mSfH&&4AjZ6!nfaZ>t4-A+M5@vk7A5 zQCI86K2v!lC18MpXRwQ>Re)>e*Keg?!`JbGfpI$g@bcA91s;W2?Bdjw;I>PL3><;* zqM!ENG6bJw;UxZjirIaJ-5sX@H-iap6kVhSSquhr6Optx9VM{CUWXV@bADKPwT055 z&6X3NGmSWX%*8D6z)s8ay`1=rDeHhi2}0g-w1MfjGqIp`!3DEwqCO;+#?;JW)=q*l zYEu&VSmzpT5nx>+XTn9&-UzWtp7nFBxtTJ#_(z=dt2};USt3(wL{M+S`H)LOVxU+ZvTNLVTZ+H7eJAjG{d4P|Pk; z!uV5`5)}q6Vn3 zXOh@3?Qlql!f}mjFuajn_DuqrOE)c28g!U=6Tj*$$vXUyPM5u`?l=ChSlxtd;k zNmRgF+`OvfY{;j!*&jOVQBIuJU4_0s&||M0kR{@GY1ehb`hF28WFs);!DIhL*T0p@ zPu{r8uZsl8Gi6G_^b8D|^$=qqNongrm}IaDHHMoBGges2uH1A!OX5bTbLJlUbqI6m zsO1(tC;3%QK9WP&_d06~m{;X-;KSM>Ue3Z%*mq%1?DUd&B!%!dv#N#_JL2Xq=|pkA zxMVIqZC0lnrrbPUA~|D#6Ecn6=z!Z#Hi=U0mEgN!D(LiQjfm5S+-z@yVA_2U$;ztF z8oL>!Ziztz>Kp|i&NYa-4qoC!9+=Pk7Sn1#JeXGEnT91YXKvT-27>-^En5VF>LRM` zzI^E{8Vpnfkz_Z4bt&{}Z;w-O@bh8pMuE=amT1f2<+vl+q*XAgQ@Ys2DSZhi4gq1! zKXgE<6+wU;37N$%0*@*dU^16mc-mEIVmUh1&MIiOQycA4`<9^eqdLV1r zS)*#yvC@_v*gq=+HjEL)p1qEvJN`IwjBtF5hLZp4HD}191?sY0=-f{2Zz!eTb&v+V zdsiUUen*qZNQRQpF*5T7_Cf&{{V);t+@D(0dsM=h=>2g3v$T=#F6*1BT~4E(p`6K% zr}?4FdhAWkIAU{F91}qio5KtBk9EXb=_iKjSnE2T1~b{=+-EeuX&AZ{yD0l#eMMf# zQrZ1TSU&hDb+xq5#OUu_I7LRkKwzH|ZD_=S=IwIuHJqw?x+V*RDD9-xEXkOi6=8Yw&B?gm9pLA2ASqV2hO~DY{w6|=krZI+4K+EUVlpNy zH)KUeyNONIaqH8{972(3e=BA6WoDqQn*FypOUmY=bsSyZ8WE-KPhF5F{#Y~l_ErF^ zLs~hQBUkmKNrZJoMb1rQ42GA<$IhrthidogtA_}T0G?pT%(Y)O*3IjoJ-;K#+0+;Euu%6u)J0J^<~Kq>No`8A@- z7@?6htTVl|pM}tX#Z!%34aTgM0s|;z62(?rP%*grFIIDmuApbdvXMgNZtI@ z+9?6Lkix|=cUC4ENQ>gCO${3D5_t*2-E#1;i#xV#TswC;m6{BxY)m!hEYjWGf&g*U zo0fZi1w;Ld-310B#OGDUv(e#SjN>;w`J;0e#y3y7rC?F`SyUfNMi4RKFF{6oBW6H zGRRxxxGYNM!7GRoLZ9jtb|`FW)qZ)!yO!al5(5UtZaY!!1?yEj)))EB6jcQLMKwN$ zRhtDlO)33t?qV3RWAs*5Sy4AX!d*MK;~B98 zxq?NHo~5((JU;&Hsn2ox^owO4`=_drUdd5pz=|0CFBr9K@xpMx;w|^Iw+pI|q!*ISxn7*`r+p=`zL_^ZNiE}Z`3#QYv_{cfZG%AV zpeFA%@4;ypW5A-%6Gy+UtMA|`!`);SR%Q<>ZkO}Zt(^(9vsEA?albEf+%LGB#X>&6*`R#NUtZ(q zTrmYd5tSaP9YR*R$eUgm)!kd707PB!LKh%B!tCdXUrd^6vQgXOnjdn1Y6$F&TyE6oB@(;$X?E`}vfp2Y0Rx>4J^(EI zVe7NO2?Ip}wviJU=JPE>IMAcOyLX{WJ8Y46-d_>>%(FvKGz2ac&{WSz|JHD&>!$~a z=xq+$^2u>+G0!8~yUp;2t2}%cd;hcTPB`igmkyA=U1-tMWzR zyq!w!r=CqYG3mr^0$P~L{=)x?E3edd&-RY1luv>*S5GR%^U7p)^W%C}*@tr+IOGMpe*kz(X1yn|lbyW1s~Egr-ImI@;(B zJB}YH(Psq5B=%K}KDmT!NYSymp4#ZPO-t?J!I>q3w!o|?FQMD!>8vE6)%)3x)-|VP zTB|A5W7#Zjgps-TN9*efc*qUykKsch{*n>XK}vX?IQC!gW2j}b`KE+J!>GP+GlT3N zE*z5y@Dw@fSlOfAV6y9R%xyksVjdCHA9Dw|rbKog0kHs=dGk2U@H+xWyXVyKO+=1s zSoe3J41oBJ+Uv7D_DTFJkUa<|U8~Hcu`0HFctqN)=t51xFnB*I+7>c1%irVJ!fKhn z1>|8_+!RKQ7Ir-cT;0#JbPaE9Uc8x897?BD3oTC2=X)Ep3*Kh+EM64x?%Hz|RH2V> zk|Kzg_a`7`8qGRgU6QnH9%y?t51gNFuZ7)S%~wGJ2;hvPc@nWnQiAM}ov`l|V%E^& zimB!6OliG>4(H<%+pIwTbR%3GQDHR;xYf<%d9vEfuE@tUpvhwBzRAM>iCz1JMF+Ra zZUw8Luu+;GjLFHyd*F^?DA+T?Ep~3WO!zzGN5X;>L-dTCtw|Ide$f_~k|@IfpIL8M z7m6R_Wf%&S+cS=WM_jbY0*28H1A)q*2%$fn6mlP*YP$|coCOZvw%88tk{*Wr@QMqldr2Hjx9=P>Y|iLh-D`Y z@gQuPz)uLc_T%~&pB`K8$%U`sxuG%-8-|&WY}iP9%JDzjgj(QwciQUGyG^9$JCed~ z(BvqWpZ$}`^Z=`lR}BLe?GI3oCaCMH^Q}Hjo+qhswv|i*8yQ_cW!3m~$A3lVwln6{ zz}0HyV|5FMqT`$C6v6{$r9>-sz0^x!e&9wAWSbn~w3#-RLrD7x=j+WAexOSSb)TT1 z*2^5NYF|=-*aZFsVb>I~hp5N|Pt#)5lmy5_kukoS1wajEb+chMEThL(Y^+K^QT4?c z60LDNG?NKci=}N8C)dovp%lR4z`ViwA6H*P&K-?SDJBHvs4%|f)Wn}A$yTWjrs_H)W`HSNXha{Lq;}gkL;UfD5vQzm6R* zltj~8I*Y!wmc;2h)U?Z~qdI=5Y7zjeLJ#!Vs&W_)IlG)6*aTJ!PdRlZKUUpYRvu{} zQ_`l*lc$~dJV?RYJ5-torPDG}BZoC5pHMjQ$= z8cTU9n3DCoZmpIGmO*2ukvD5pujdiD)|A?KKqPV< zuC7?Vpun>bYF}Ro-1HJb^C(2;ct!U{kkhcW#)!7%@skmeW&y`xoG<>rzkC= z(nyl*Mu_Fg_f2sm=lBkXjt2!ni04yl7sNKRf`-1e+#dM!J;}r`FLwNyT0)sHlRRx> zGrL&A>i~#h6okG`ySYl8w8N6rru~A{vKtph`)rboqhB@#Fh78WIlsjWER@y`k&uz= zFD7FQh)-bQ3Vgxb2h)a`6&F6D3SMJF>GDkE$fdgcKkNBC>`=(2{bwq#wC!u)? z>JF>rMlgQ2I3dSH9p+4dJm|dj1VsEm(9@{5^<5Mx$T6IRFc1DUWOez@ub-$94uv8= zL2D#)ot%KG@;-a8Zj1nY=_1fp^>J%8XuXn}fbrInZ$>bfdV$%cV$ah-G2Gs1zE?nT zWO-KAMgv`8>eg3yRyAZn69e8{7!xf%kUi&~)Veh4ZeN*?OILhUIWX=o4;wXYRUHKv z3xKU(BX0g5TTKLU(GF3i{4)EHTZ0`U6cVOwW#o=Oh6F1b8k*pHEQPbeC*oA5&*`(8_KgFDVeElLv=4I7Cc1i?x8>G0ZNf~9_kOQ;7tcm5j(h4B$hv|kpn?8g)nQZB;SmwoaZy>|84U9bS zClHtH(zMBm`wZSo+W~BOkA6iB$Z%By9Q?!CU+m7Ny(ZEp0e+LUQ< zFYjI|4wB%k3bbl~TUD}7r@;11U@ufF{ZocN7^fqP)G4(QXbEbP|Co5lZTYRteJkO# z%%EpXl2&od1N)5H>O3iil5I~fR<4>?0uWYH$w>)!88px~JZ1~|wy3WN3J_MQE*S%9 zg}^9b*>X_J$-8SqT!8mh3Ta!&9|_!e9tdV56#Lw^L7FN6Y!Jj5@fYF2X= zmMLPGY6AdPr0!lKtgb7Z;`5UF*x3sX|D99KPb!MW97~Dllda&M)XlSgAgzJ7T8#bB z!N;ac-s&-YcP0->xguMD0{nMWd&<5t4`d4w?w-I^rd_1R2qU%tBu5{{x<{93V^$HQ zyWG?kQaBY3pAzLE6kQSlK6)s7P}V#Oy3COZ|6)KNM6XyIs~xa*Xq$(i?EMdI5vKhG zy%VngOn4fX+s?6xov+wj!b%kyx{O4+%cGo7BfI6=Ky`I{A>o%1Vu?9q& z3EkO&&uI9*s;_0*X?>ohoW|RHxT|)krZu-+)%4!K7N+|iw#JvNj|w>c)>JXR(Y85l z{I#acWcs`!jzgAS5o@Y}Bhf-C7;&aev#LO5!@9>dF(b8p7~3W4vi`y)7=In_zX3RK z2PwE>_R-eQxjXlciM|r=%MIy#BR`j&z7x^{4t3~MnTMemE?Jk9Rrs#=vkIUyG;*DC zcLH$%sEPVYBYER=Du4f}Wt}fJNpyd0kZ7cpU&+b!>!@E|%z@|aIpwf?>R$jMP_5&Q zss8Peg9EiUqt$sE{!yP*94LcZ5bqhV-#KN?V00Pv7jOMgHztZ-r^@1V%KD?Ai`sKx=~a((8&=y+*jQ}lXzsK^0R(V+^#$ZMh_Iqbe6YmHdh4{9cb0{O)KS^ zUy{lppzK8*jW%X~HNfpG!grTCAA-M`BCsqANMa!{WL}3u6=+KV+Th^E2iY%S zMWAMKc9JxDHTfQCGcyW#n!g2FukT;xP^akrbj;d6;q=Okqv*hzwW&e+Mirp^pPS z@zx4;rJrPy_8JW)ba0QA`J`BQPRfSR0I~gOmjgW#_6#u?8EkoHt;P7D)4G}%HNp1GG?-bXO+Ts7Qify$0gr00Z^_YVu1D#me(7S*x##+u*h)FxD^w zEx58V+)_L_HfIQGl3MB*z?Ai0>er3wf-GU7RW|p2bD@%j!Yz6@u0FEO9u&%}teD*Q zR1fYU8pefKkoIg*lC~%wF)!wnWTwCaA3hy)V@4OBT(1#;If}xL&ug&Ki?PH3A3}Ax zw9uYO?^c%Igh4z8}Aezp4=&_J}>~qqRX7XaFrfDBkwH~E`v(SkZ?tI=M zsF&U-G`0WlOyyxVHA!Fv#8J-;&Z_?08GO@HjF%#|7CmGr1 z`(CBMyyyHXXob57FVqPlMe*t@Yp6#ej&^pJg`QLy4-Wc)h~T5&cTu~bY-BY(p8#n-piQPYIn8|5@hE`#dxO=@ehw|~#e;&p8{mT=XaN+qv0j>StGjA0c= z6~S_;(P}1dfv-qFsy6)UVBr&m79n)68D9D5QB8!bO;AVOiJ>?ss8an`Yq_bBR_59nTHP|6mwrUoI`s1KG{NO`8zij3Lq0c}J3<#zomhKnMGo^Pkw|J$|uj!C6(i70@g{Nj_oMfQ<>_ACJK(rJyFgvo5pSBoiOk;+a_R zERo%0i!QLM2fLD`-+g%a{ZnWQHtTnX<}qvqKEg-O+j3J9z>{lbdutd)^F=n@8$%98 zrh*CN^q;XB127T&|7RWmGX<^zEK9pQL9T1DRJB-lCf(Dc0$hCFSEnFo-E<$&Dq^`EY9 z%RPMq1|6Ljm&3aYgDiM~pEl^|pqPi3Le1t!d{DWxPS|wqU|wl=q4@K})!+coz<~YQ zoUZ=A>5OuSWmd<*#Pm`JgfULxP)35)D?88Y&vd3kW2R%3f(avC?KdGx)KLs1d>mB3 zNAhr9WI(Yfjjn)y_LB?0I%AxY1JG?RFUBsN;acHXsXFfN8Z7h#c)w|QKM2JJZ@uPa z!t1b%%@_xK^&u8&>&&y{Yao<>E{eZ2lUFN`KJ;x)UTF|PW}MO}D32cRZ4QCaes}kR zl=2#3_$k?o$p6?;lr&E8vsIFE%^6GfubYN3yJZx6tV;L*ccZFii;esF0okBg5q880 z{lj{ZM&N)mvr-z)VmD${m!LZUpf(+SvfaN7n?p8aVulx<3$!o|BP-otk@x4>*S_ya z8aD35_HZ``Gl|b!txwGc1l~NRI6o9AKBYi)Ya|`}`0hEIiv_%d0NFQtiL<%RVVZi% zte-`4qjMD|R~fC?im$v&VY>Y%)d*!=;r;Tn7w?=xU+LDBS`!&raRxPDA6!)dTzHPz zF1ZWopxa}d`PvK&kGEvHAUxRSDB_d^)h$_nTQ^RkaJEb^2B^}s_hmf!C^-k)&h}Kl zJJ%K)aB$c%DV2WVUAt;Qh60@^rhPmo;&tS@{Q}!j|4dVS3rtCS5;IdeC8H!{6t3{p z)|fb@YZIh4SMC7Q5BR+%P8YVl!i2}jEG5A7`02uj!kzLjErnM9tq+h6wsPc)3Ky)i zi%elZ_3~nW=jj(*UiZNEr4l^7;s^cphh0EWRevkr{;j6Z*3a$HFIX*DjUzeQU^rV{ zOMsKW>Wz`rLeL$>B>fbKlNN!^Iv6W-$(|mqrDhQ^d0BKwN;#AH!#x{dN(%0Qhyulb z>SNJb-@b5iZr5w4s0N4ZTufB~P{vNtVdIUPsu3F`y><>{Jy;==_s54iKCtCS_z#m$ z0Et=X&~oGEuCZh!M_Y)sL_3XA-D8FRb_hk+HX^%sP65!xBb35p!YIA(WORK$wlJpS zB0x@*1RFigCD@vM_h_e2k<+&O)uq3o_hclu0)_05$U_msP&?%p+}lc(gWD0kQ1iWj62b^N7^v96ekQfL{urZaD_PfUGfPRX4(- zg+7`2u7DN4U%4ajnR ze_@LN{3Qy@rBoX4a&a8fto@Vd^31k+l;-9VXszdcdjxm@3kIJ7vS(Lb+Kx7Plw%E# zozHhtT-Thh{+@Fqv@KKSzfV=Zdj9hmp4BiDCt&w^T)%F@eUZ?@^l!_Qm^(hg04RQ3 z_F5A1q`l~DqTWcBXj>g@{8bv2=GW-7PH*Qc?oS5=+CoxCx-?uiZfb;Luu0&I|W!+Ho6B{0k5%D7TPZ5ZzS3~_tBP1^>&-(xe00g6Q7NqMs_))6Xv?rm1bIa`h{xt5 z*2!e`tLh)Zy@xjsSR78u@0v3G{^4@`^a%%Ol4EZ@Ci-br%in7AbRi}D2ghDEe<5@2 zS_|k|IQjz*HD4mllYsOFRE41x>E6}%wli`av+svNMOpb0S3*D}WfB3qkqmrQp_NZ?iw?_MMxgwrSYPDV2obbc;XF58xJ>KGXKrO4`OI z-CV~|vm;cXsNMNa5nle_Za8Cdm7?hm;}hA|mwil-`#5RM_kNQ_v=LK^bcvDFW+gis zg~j`@wo3k6&5O6F2<*u?9B6w!&z#06E8Xjf_|`{N0|Hc zx~&yB9ji4ib>%H+2VlnDPQEA1M5m*sRHQpZjvtg9LP=1R zW{booPg;Tnov>Z#d_|?S$;~~6!Ak214fg!wa(&hzV9x!l>yh<-akOoD=j^B$Nhl^q zRKv;+{l`b>)o^^uuj^({DL`LZLwnVr0okz&=WzW-wl?q+pq-Nnz{1S2e+t)n^*U0m zvX`$0F2;M~6_^9?p-N>Sp_=cB=xd$~=gR_r$_|IU=9oTLM0C;?Y=XE@l=((Lk`F7z zJ-;3vOsN1D7x#QZg51Uy<&{PJF+{Of7i=nU$(X^z1ZKD4a~ZYFZ8+ug2t^9)7F|jw z-n!wJabzQX1^qQ~gG@1K`W&+Bg?qYw2{lk3R!gFGt|{}jk`-#jV}K${!S!?!>h2anb( zF#;27&U%$27q;zB#J(1*eEagbCE@vd6~aEXgMPtGg(nxJ@|(p(7A~E1AIMJx z{qHK40+D1WgWrGXW5`MpM-vPbi}86+!_yTRV^IKs7fZshA|!NN{SP*@kEY?tdj;*K zGY$fSi$gb|(}6{2lbbbIV7MG#m(=RQ3OIQ6pXY7*V_^Mwe8iNu$o`1F@kWEDB5q>N zVX#ZuQaQ`b5T4y#V4U<9=&YG_a8Y5HqbDh4RC})Gls61OjwV$W)*|xA6~pd5h4!ce zQPj(T>p*SbWYs2tHw=>Bj5}Of@4tT-vsq~!RWhXbCP$&6B5rL2>~Nk=%iq>UL5mfS zozqQ13#;fYofDulKy+PUp;U1b<;{~9x@!&=3-iQ*_gGThvx!8~cn4Q1lnd7p z&L`+rYGlWdBuX^s4p^9c_DKX85BOQ{$ti-o1kf@dwYL~USWI&g^MLu%~BjM45^iU+2EcdeS(^O zC*KN-bGiYcg2ubZJrQ#jt84w^LD6!qm5FOhtq6uf(j|GJ>dxh>Z_qRBWvO z=r$~rV@SB9B)Ou-373A8%(4872#9d~M}zifn|UXbv%8l*50bd(a63syg3VJH>Aj9+ zYo+*)l@BstQn%vZ?(9N}yBh?NARo21e#S=*(&_ecVuIH1J1NgN49#^}I|q-@Dycky z09-m!rk)q+Cu_s<`r&tzO(xQmcn(4z$OAQQ+gQuMBTMi!kjlpQ@jF0-A$;$3{4W!Y z<*o_lZ~SLujQf%}bIVv>o1-~tAhpN`WDq&C9y;hZqaKQ{CeGl|Ey!9KR;tskr@sh7 zI8hi}NUdZJU~6w)1VR*BI*|L*c3vPIsgreUTa-W?cn2=}5W&DzDcE7ODHPAaS_zmA zg|+Dzl@P|@p_`l56wip2i*zo*GZLye3^J&g+GyHBi{*`HuZ!umFk&5Rk zV)55DDW}Je=!=NQ3gzUUmf>_7V8y|OG;F2S-bV>Q7_ku5Y~ZphBQxODE9{Sxr3q>C zy0<}mq&1KA`V?t(0*n#8d;vU2&l%7|T=fayWHEX-VZLoWJEwrp*w!8)%TG1YJE0&caC<0XGaqg3j5C73 z$JbT|MC{6EmVBiX3l@At@A@ibj!F6QNjVxQYX7 zj}OJkBdvfW<{Q3o03Ey%|_dm~!dQr^BU;HI3 zB|#jgDr-dsu|O9Va7dNi>_E?Q4D7YxEYM$oy3Grs)Mf)g?XsB<@VXh>lcT|fMKChx zVITugfrQ%qS$fkX<};Uep9Qse?H)rk7e&9*tFo1kIyV4~9R7bK z&C|0K zT4$2GT`Mqh>l;Rr-1)zl7S@XiBg1c^=Cz(Tj^pl;1wB`Tm=PzdPIQBjr))wq zUU&s!)e^UcG_mgoBflW}fo}?3JjH~9+R>raT#U1#*#UBbILmgZ%zfTG(fbrGsVre! zbd}(d1%d4RK41CRy17rB(}d2m!m-kNU`%$&B_QL<3l~j&l)GUYnLGzERC|C_bi+1@?*5 zGdCuz&1)MqYf~iO6;ib(@+jws<^Bx*hP;atU%*78Jw(o#4lLMZ3IPoC3d4m#|;B@Mh z($rc%*J=NU%YRP06tYG+Fd~NZy+8K?!vrwVRCEun)(l`awtDw(^*>FbrMzw`g)DYx z83o!udevFPJ|=#g2;rn7z2eo2{x-`Z6nx)+yN{>ZJ5}uZ&p_@q+Y{v8`zwy>f4Fw+ zu>L_}j!<1k#Voy=Vw1XSJoRq!KCMc}s#DS~eMOJ{cVZ7#TOTu~;8}!5kwk*FAUE;k zOu4#F>YEpiuAT0*t#06#dKv)Mj?!+XDbfvD>87Tg%&iQF#!o+)m`w-I@??K+ko5$* z8DyETA-K84E$WHTfXI&kt;&{08{XW5;^n_K@hR#4vl<_DEe8H{lC?AqzXGSgLjQ)B zfJq~phaO+O`_=ZjRd~&2Zr#$MAY*(&g5OF;!y~nS_E^9Y`8vlp>8^v&)Pf56? zD&~C;LuCmy#Yls(JD0B5MQ>Zub|V$eqj}FOo>Zxcp2y4Kc)(YoI3gKz%56MP+Zr~0Z9v;rx!-b4j#NF&<35uHtoMI z(2wh{2w5~rKHM#X0#&?!IR+2eJMrVWJj=p3JZCG~24gxWEno{XrJ%XWpJ(t zYnE=Wk1FTkNt!*Y<=yC4&*U>;Y3yoP97KWU;6x{j-*?}A-Zez19PSmWHgKBat1Ga= z&U>`t5eHQEUp^s+*bFU=A#o594_Zu+&!m@u^ezHnGqW=;;_6VqzRl8r3l=0zK`=3B6v?~hF z^fs6<(k4%RJ}=Z3dLj6>@d8cnj{-DMr-YuV8w~2-B_t6suC0k@U%1DIy-oV@)*U8L zYlm*yq{>u>`*Tv}O~QxUmjRU|zs>Iwz~=0ZzuA2BOg8!CLLhE>=-j>tUM?0J?hij7ygeWDHBNpHElIx$xKa@l1IZ%qJ}`E|B?@#SevO1}bD~pFy}NHL$r% zv}dz8S61V>@b_xWa@t4D@+9wD|Guu-v-%_95!{Ut#i8nsT*PX8g;$HAQzQE8xs0gr zM{kcbcE#cRp00=(ndgNlv&hbqKF!*}`z5pv@7qk&@#O%8$sPiHM6vSICym`-r+`#x za#`lXuV2fWS!=fC%og{yv>RU6s*1XHRBN&KE4~K^^NJY)?rAxoyFFM)ag4;Y&3pZs z(UEWi{8hFxG(aRULGANfIF`RI<&QO0%g)?yN_01@4?rMyAgbA4R#~jz*w%EXEujzb z&L~4}`GjCk!BY2Dje;+e=DdFVqMik@aOK>T5utqC7wJ^8Qw^ap^^-mW%ktpo5C0{6 zqdXQ<@4Ig#A9E3fvftL!Y5^*JX`_FI22z?1a^FMj+`c%##a>6)6;%gEWc>a?@O6Bx zBkSiicE}9-VbCq?+v{CbqECf>${cn8qG|$4IrtSQ<=`uj8TNXH^KiEh2dqEStkBti zc)y9ib|u(aCzNLP^2G%71uFbGFp5i+S%=!oPD#_-1IJT+-h^Z7?wgAYI zciI~OV4DKg*DeY3M3U0;0!5u#3wYRN;}N$6n~K<7E;ruktSXc zwVt9xUNRYpSX*TrE?UFrSPpx*~gtnqM_@SOz>QcJ~<$pZIu z_nlDj%_jt8+jlGG!}vT` z6eLq&Xx7Q_eQ|$fwOD=_vn4zp}WVs0BHMv zIM(#V^`_?WbV$_V3@O3bcG}CUlX!Q=%Df7NtAz$&bC-ErjZv35J;vJTOpcaEZg@{D z?co{o7@ls-{~jX+41dmTB>xoy4UZrTinNW5z}yEopS@mMfe4Gyg?tuw_&1GOP1D$mtSF#GgRqz_Y~G>jPenPIb4*Rp`@Y{&s;RV- zz)aA=zErA5E`Y9whXcSHh5`Mz+GfQXst6C(9^=r{^5TJlbIT637mX%G8Vnt*yEJ9M zgrVY3Tmh!PU+y`auT1icptp%er4FK&t9z(IJslk-mH3<9ZOUI9Ag%WB?R7p83&I?j zME$;#4d`4`LGc>{voD&O6diJoy+$9OFrB(mx-c!`@Uq@5uP;_r$gD7 znD>Y$ZJMex!LQv5L16bjU~|{Xr0~j0}?K z3j4qO1V5t%c3D?cVLH!qSJXU_pmLY_tRUHVt~yH&xpQCe^Fv)A7F4UM30?$S3jH0` z4X+BE9r2B8E^W0eJc4KXtZ))gbhNLzZ2|k%43V7+o z%38?YUwBXcA1k6=W>HP@%8s`5mXqE^h9v7^3=D=DB+T2Y=u5f37Zi!Om$@~oFfzV) zX(Gab+=^}L@@n!#LC81zTJDuo=!E5ifS?**DvcxM4gQJ7*V5$JOR$Ex{43Wk!%Lt= zt#7s0C2{XWyj9bhDs^jFRXo1P9%one8?67;8fxRYtpR!D=A^33m*<0x!nk#to#N6L(-7zJL{zqz!z~(gQW+jwJUD7_liU zh3t@9ZMH*+9KFizJ^yi@uA#$6O~Y~*;We^kJ75klpS1jDOLO7Q4)yWJj{@DH8Wt6+ zzH}B9*pJr*C4jMDwaus%yjwGcb&t(EtI+^kC#5@_GCzvB1u4Ax{#%Rrak_-k znS&OT`knX zX|E1~bm5E37(r87>l*O`;21P&LR31wVBu0`nm-ku$xq6Pw~Dp;fOZ(jc`GpYttclR zL1yW3(il*U;MT#&O$7#o&#p%k8XhlT+d?-%TuZ#FUuTpsM-^^v`*?TZ z)=@dgM_#OqZP7~P?Elbo3nnkySCRE|s#i4Vn7g8g{LbpB8HJvXb#i0h zKM*ez&%busI}f?TweaM~1#A$*CWr&|4=tjds+j@GyW}|j3%}N`@O$H}x2E3)g<5{W zxpZ&PY%eF7lpiCM3fXk)^*zb&c6HKZEd=CBQVBdSn(8Qff-BW)ScbZP-qB@RPB?7j zGSKtFe23`-_3`RJB2a+?{xQD{pf>Cvh7uUb)+~Te$&}qiMyUZ+yy?dArWX6Pu zpXl^V$L3YMume1C#_w~Xm>>tno@F1h7HQB~)nLszpcZVXS$NOwi(B#8gmzcRtg32G zeV6@z!->A#?H*}k*o7VTEPoydnX-CRMcVqUbnR|98+(A!`IWSC&B6n2r z*+<>pl1wy8B}oS_XW9^qY7&l?UF?!TD`cd(#U+Jh9jY%J=bmc_#d zm5zYdX`+X!j_s=WQh8J8J4ftC;IYUH0;hv@O}HCiZ2#B z4V#+mypOx3KYBiTOlU9GRwe4LHBkyq0p^`=O5_tiU#e_U7udt2kmZM95{?j)$d8t? zCgydxhQbK<4FGupgOK`oM0a+^fW+dP{+I6nQ%2?E`dPIIMfpgDQr{o_Z(X6(T_MkfBdRd3k5S=KxqL+wr*Hf)1YJ?B(0{^QYs1wH zPN>818&pJjJsk_oqk`@ZOwHQUxa;&?>vNVVzrrbXwyd>`O0c>V!B^6iB{{GnZbRwS zZ2aGpP%x2|S;?@xPB-C{T47jt@*S5Rl~Nc%P~mbv-)*35C*7N2>%1}9n@=qKUgc)`1mK#c zFTS4W%j(sDs04oH(kd;_Z_KIJwa&9-JsokD2c#3Ov3qBUQ!*!C&1sXSojAs%znK7_ zl1D0(gJR*|cG6)qD=O0?E4>~l$=OnmgxmHOit+g$<+;N7!R_NO0~AEfLaNFtFZD|z z*J)+Zwf@jXxlznaojrNwxJBDmM&%7XUBR#%RBcR#-tJxh3TE^|xk=sS60Zc59h`;? zV{Ngnmv}y2KK(tu{c;-zM#E4d72eV*HZ(Q3D@wIr z1!QSO7o%xjYIYrJwe<^n3&SOm1YZSvM8fagY-nhS#oQKiY!2$^WS9riB3rKT)#@x+ z1`e%}4QPxPT))lnsQk%9d5*lS$$)B4Tyu&37xkZRA%UoKnn)TV%Am7`g~rXZ!Wpn3 zLYzSbW2?q$&reaw(>avCB8!$L1hs28sFrS7&v!71c-V)JWBAF9UqgTXD``LZuL7#eleP`y1r0#?`i^QE3&$X`ZF|U7}?+A&Qw~UFgBqY{K*Y&O>Co`!a4WNy--?Yi2e5*tnL32R;KfT`DCXzuKWWGajKH}zcsROai zu4t%i)`gdX_Z#26T0o7S8_f=v<3?<~X|VywsuWI~xKdwJA21ubkSWKATetnG%2Xgr z@OqJ6%B}uc3YjRT^t*kP%>(6A5?d5ZC1&Vf5W5=ly@v9BUL5iwl5XRV*FLzR7~Th> zfIr`90JqXvR~4OrhIsewBEB+P}y>pi08CA z(zsNP`=w?Gm>0HP(EI?_{ysNV933A{{Rae#q&aqu_j|%V*Sb}e2~g<@5%S@9KsuRj z-~ni4eN)aLI&x2<33O6&H>6^ORtZH}EE-MEj0y=q(9M+0#L26=dP+B|w4(pH3p8u2 zeXWZdsIG8*S|RWDh1I#w4e0gTcO{kycq|3*@4CJjKCCdFy!;~4mm8OxCl8xqvBGbsWB4MpirM2>W!a*YnL<@q^dFc}uVpgYLQAh{|%e54d4ck_8Sbmgn52cf?G&V6NebTVwV12;Q2 zx6*S)zf>G*54K5o&CY}!^`P>q@V0S0>1{Pu`^YOV$z4+Is!{n)-*(qs1E z0iF?&O2EbrBM-%Pyd$Up9-Pf;Nars_S=63JJj09OgP}qxbjM?BT|-T>(u6p+vxec$ z|Ez$Gx{m#dG63h{X{8EAeE0WtY=Vyww=G79EvL3@hB{;o2`EhFe_ShS_5trjb@M?c4{8wb11Vea_OXYDFZg{+;8B!mjwaJjcYF6WP7B0I=Mz1?_7{E z`UK`H%QM#t+pgEJ=7YPFBv)+XkEeWCbd(#)3$`d`y}4h0UDJI|H*HRuDux7^^Ktsy z7-V}NJFe%emrX4%4iuJ_&0)>b2|f`_YRjEHUE%V6M<0x>cK!ShxQLyUdy{eAW+`}< zO$aOmT8>?5RF`Zr{tq^%Xa!P-hSM_6#)zc1 zDKUKAQ?Zs?3vbkRM8P4?sEyy>U!KlgSE+N*XK_uB(FU0X-LzoZ5tzrb3vi!biz z8R9pOdC|Bu z&E#@^y2aSx2b`|Ywqh@C1iC`_ZF#3YTlRS^$&kV>l=%mFKJpgd_&<>SlsELz=9;?n z>wzi6s7Ai#>BA6ENNz{&lB)n^T?E}qe`_QzZxgQdR6J6Pm;LeYTsFs@tkjImBn!Lo zN|}Fwhm8b#+2plQal0SeQ$$;jzX%pnO~>_ukBzmNBj0JwEVDvugK14O0{EUF@kIF- zDSc~ANAf=Y^qqgPQ_t^S`UHa-5~J=va=PE7{}>Y4f6uaiF!hn6Uw=vT`4y2moZT1y zF(@DQFCe_pKVNo>Bu8_lQ^x8h&2fQy7`c(SSdwsP$jKc%#=D z>|28dtOJRmCcEO@4K+v}uq@dI@=R$iK~v|C1{EMvO)=Zjd;_MpkA1ub6^6zi@bw53 zfAW|CTOG8t))u?BYc5y2yz&OIZ zt?APb&e>!`iD-Va(pL1VfDl`ms_GwQP%ZV_jgkPAoAR0OjjB!;8WT5~Fl2s)H{&NX z%9p0`mu@QVGF3IaPiV8S8ki8?AmLE&rIJ$}R{SO3KYDk&630Xv&MU3W+V-6LvgZu; zGDJ>hs-Ug$Q%b`rjio4Mje>=c5&CW-yd-E$?}*C^@H37-H97^5V1fZIt;)BcE=ux) z3^n0Eun8%w*_3}RfXD#LMJx~n?-mkZIex_%1DoM+5aX~Gv!GM_ter?zAy#JSPv+D) ziut3;E_s7a$FER&$|JT}5~c!8FHza2#+WL?H{~tRp@fZ?@-qhtaP4e!Ie+P4Xd6zJ zp>A{XCP`o>V!`t7vIY$3H@tD=j80^&VCZx`)vm!hK-{f(;OPe9Zdor_2RJNp^;6=A zKIiF0QyT6NO`)4Cdcpp@?h1Sv8`u0{1DkppHGoha88K#HhU4(Y__`<6ExlZj5FOgN zALQm1Y*83|Q+%;{FAY&HAvst?qai`dmEI;S2bp?hHrLRB9>YBJSoi}w&fM%UhKLUA_iLBHPzBI}*1X38 zvw@9gUA8pLBmO+a$j^js&L?nMzweQ5w!|^MaTym*U}0O%ZX0kt^h2UVyU$d5-mx3_ znQD%7L5hjX;zVMIzWZYJBcDkF-`iy2*_LJ1+# zG$J(fdUB-8|H-gxS0*;)oKzUtA(3H&=# zw#+dwfBbtC50}?K%wG@f!aE$$B-(4Q_*3Z9^(0b0x-7-Cy%BwfO)XV|E<#PdIORq& z7hfZ;?o?U#r_eOnC)vObw5(G}5Utg%dnG*>$(!*veGqMd!Gul z*v@{GlW`FhS=Btsg8+DvFSH~=S&|VHUZB5xD?dL_Es}paS>Di%_Ik-|55hNk_7GGZO4e{nD4EqlUX*~`Lr zW83em<-NXeIP)+)^MnmYGE~v)xQy}V8S_hZiWXViR+$UMu)bcfq99?^Obg+bJ(t-h z%@j$?LO^vI=?F(L>@%UCXL<<{}sQ{uFHSY`qh*~=SfL-PstTTd{>hFGMnUt;R zONG`L0k4WBxFQcZOJ`gK3ikgBkmo$6`u2S_;)Ex-_pZlRIumnA&VJ-prlEP{P$|A{ zregiD>fOoC9oDJm#69(qLx+M>M&`bJPC(Y`Zc8MgMFHNQbYf#3U2qW*YAEtyu+j_X zYb8(z{ZtlU6jLUL53KvWjElfK=`!UgVz^{vlVF%<>a9PjuHEMC2I?h@{ztUB=5KY4 zs1g!`GMbKKK)4$gsj=;hpQCF`=X37E-08Sg%KAXzwFUM%DO^NAqWxX4`FfS0`;dE_ z*CljuQhi!T92}xOKB>t7R1`ceFg>3QlYp;LWO65G9XDC(g-!MGaz5mmDpKZ$2CXSA zcHaTx=Ca>jY;JR=7FCDEAM(+rbsP|VVtp#O;dgB0UyHd)UwOP(W(bJnACab9Q^)or znX#v+)q>oeU_Gr_*z@b{y5~z65zB6sBZJh5L#xhXsW)YV2-T}z+OwHbFJeN-IJec@ z3oiqVat~#;Kw4~?u{~3N$i%FbR^0H=XM^3)Mz@VTfOb%*#CKlg@?1ah63>rfI(n=WMMzG)E=RvJp=x4&ZBqSCiJA zbgFCb0;5l=F>3@V^6N6u3b&P7{n zylz&47c-K@6TBQG>_m>9+{a&xO(uV{7iV!`DElV+or7m*MWa5BU;Zd!qhma?Et6ty z2BVcO5~?)~)|nv;s9Rj%X?Z{$->w6m{!z)eC{x%Xzs(0xBae4W6m;mYzj$BM83YAf zJb!ZmI|xvBP_mk?sOretF3kWRn|KUNW&$RV<&H#^W?t^n!LrGPkQ2@Hub)U=+qdt^ z96_CwdlZO1XI3>uwm1TU8mVI>8tzN!SCMfA5YGPlYO57thIg)BJ#sdDs@e6nqd3~^ z>%73|;@OGgKr3T_-{SDgyZ$8%Zp>F5#TQBuS&!jIu>~78$s4^T;mXlodqbdmDGt^8 z55*sID4VuXeu2kD!sR9S<`d^V4Y@*!1WtW+_+!{RZ31vW?UGDeXsEInkN>&apY!}c zHqls28cf00{_MoXX+}S9;M8aURY>2E15PXYDg&rr*WaDe6s>*QiAD8>PuHRF^?!LP zd=iiUL_QY)UXzUz4?etrf7h(@7h4kAet#s1#PZDk=}w8bved(48mpkB_a0Olc3xlD z0I6E@DHGx*0c6Rzm-=3}g+&{rVm5TEB8pTfP4H3tYrBs2Uy{H0RNQzf z90K$2znq+C^;eiFP#dJUJ#A;?Se(*sSt|uPGHsPdDO`=^{M0dzDpq>$bgC6 zQ2x013Npd#%lQf-A}J7Jn4vXE@V~0Bl^X|0D73UOGwHPRm>=g;EyDdxc;_GrW5`0UNWrp=sf6@|ONKF?j}xRqy};Q3ag zJwKD;h+3=%ph@U&KFfm4%jBVG7eJR1)-C5VB)1A0KETINT`B>)x93u3z^o7c$^^gq z5)oYVsW25Cg|w?1tFKu`y>i1}IopZszCbw-mkqkR!WU=dxr4jJID-fk_~1TMUWUc^Cjxlzo=kM1T^sRS z4_Czd?embvPO)D}Hl|F&Gl+p=9zqTr`6#-M?noCjhR?AP&W#}!lle31%4(Yz(mXx( z@Ln`)jhkamxU=yXiKCtLny<{X3;6eDen2o<_gHz`?&&Ak&d1E=b&ah8;)*dn(b&I} zlWRXPL7@17ss`(r{&qg5#@GF&jp@@@ze~g9>VfS z+x$#VnZc_pGb1rZtE;e*UE1mP=SS5lXPHM9OKxJUG%1r!9HYiD8 zv0*y7N*NdOz|u#J74#MR+HOpDi~}!_C$HDB&3K)Yp25&zx37Mc$sfR>?x81^{qA$m zcH?JN)IF<~H!bQU&Ha3Vh8xyZYomQX1*Yx=Py>v5ya!~Hnbt#jReZCMd1l4_M``H| z7X1JYuQE^^ztlzQ!JRuXcw}0roT{Xxs3e$9{=eiQKZ*sGn46dNCpviUF8`P(T6}Z7 zoNYUMa_H{T<1jvv9C7$XW>~+$^EEdSJk01ghZ3|IVp^YU_|94f@fG{MrAH^6oltqL0nKT z2jD6rLXQI4c2$RjV+kSuq$`|CttF^&s6Enal-~RmQ!8-U?>QU64gm<@HdS@HlTU@K`Lk_csH^G>7VP+dvr{XdG&lvUY6)OK<4hoBlI2f7DldzRSc(x4-xEs%sTO2Xty z@0%87qCTJ-vro38<>JY=#@10@Eb)1~yPOSmb#I_X5tMDR?#(}JT_R)pe zY@+saz^`=2V@^=(TR!z-flSiG0X7XUA9G-ZlsOndfqt#PT9dA9d-jlgc=mNyBj&vA zoM@7rJQBmt-~7Ka2iEz$1nB%n^hOPN@dsF=pbT%Jx)a{OPeqY7jY66{W?*DO}f zdiqbjFcfGF?eCN-AJ*m2TIbF;Kp{eAG~~>Jsk}oZL*32vxvfh9o9f%5KzA`n!a)ZC zv54Z}jbCg!HNeK=k6uZE6PUmJ@Y*{d)xLx%a<=ODj@(GJ^H|&-LfILjZU;CeiWm2t zm4`%^s6@QwXh0(umRO#^X3?msS8~12bAsFjlytlDny^=mY(-2;8EcQaX0$x7EQbQqIfX=`v<|Q0qBsx@@H(m-HOMl ze=0CgJv?rbeZ!mLrF|bKZ?pm9N<`q9M#r1BWD>#WOvVquK$Cv&k3N?bEo5}wFE}{z ze!_x_yh!j~z)k4P=w|SfTjaZkgv6F~a+F=_<#rQSQ)p)I8Gg*sK2|V)WA@ChrKos% z4^S1Q=4b7gJ}wkk9+Hk-Ltq%1(GE=+$)rG`c{Z9;BQ|ffOS!$ z822GS)~+=G+(N_T;mMKFygAkK5@whKW8X_TKGKm8wfo>cS*+!0ciq(_1hm+0GzEJ$ zR49yN!fJ8`@!+VtOjEwlBwlammyx+ zx^F4fY!Ob>&<67>!^5rQs$Z?%MN#TVXD zoc?b(Y^$ z*jB)7LDsFFFqIH>l&o(@Ab#oL8H|S43Z$JX8;4&4DDda5kc)ET5^?JhX0-p4HAX-Vv_Z>zWMGM4=jFgErx#js zcG};ZsEzjnHe>pHItSddj0l0@&<2$WNW}|oe+t5#V2&WPo77R;(-bP#DAYc%g7`g( zzp0BPN4+Jv8Q4jbp4UevG}f!UKhD7qMzv>y=*(gishLG<&q2?tD<*(sFYRNiQgDFr$;1QrEkShG`W0C^{p+|k}}3aiO)|t z6v!<0-y%+E-}S-n6q9ZLjTfYp{=%&Ci=#`tk7yiwNt#ter5(+aZJYgOB1sg%xFX+D zp%0BtWC4=EnCQkytU-#dGndXK01r=axV;^@W2uGVf55{3pvIhaZYSFOZEFLRJbxu(5^}E(;Lqd)eJS z|3R^ruY8OVoM&(B7Y#hXKGjzJXBiM{b)EKOCcdKE=Etj)=GLL@HH_K_L9~NPLoV1$ z!>*B|-vM${2!W#&jWYye=fEVN1bX9GI}Y&G*DO01!RSz3qrqV=Y0QwR9^eQh@^L~` zUuUY)F&g1CYVX4$C)1Rm0GNNAk}igw}t-*_4Bz zQJ`+Z?&wzH@;8FOC-_ziZCU3^w_mf(Pj2+iuYEvcMmrohoOn$flq!d!Lv&H7$SQ-- zb)2}jR&<*^M+Z8QDW`)A8|RIHUTfI{!4En2j|tFlcq2}NgHbgByB}B;AVd zgV*(dW9D=2{Re9&h-Tf|lwff6+|yKG{AW*&C{%Y0Wh=)(a-I?1xeO!%Iu5yMhlQif zniIOCaWC^+-%v({b9TzEEIY!ic_E*P^pk#>H2@9QRb!Hmb`zt)PS>-us=Hzltp{Z9 z*86S>9gED3-*_%NE}kY{6TJ&pGAdeWn63tsQ}Qv5YJdA_&$Dr1Q|vSTGgLz%{usyi z{kIyRs#=0z1HO}5rqIqXd5Dnv+0hpX7@VWDPLS9-n9j;sp;gHN%}1%`O`AGVGj;QS zZJdA|exGqww!b&JF4!N*Vy?JOerTudh3ymJ)zK{er5(5m~xn^_MFP5OV+*sfC*IBWSq4crpFwKC*4VkKBhIVqw#BKC4RI2@B>=+o}r1HKK=~(f7xj4 z(C$28$KUYpTvmy;s6adAAT~&i7MT9kO)1c8gN9y)LuYm%iHi~UcksExKIrpu%>KCc zhi2-6_x!+T73-Tdl>#UgZcdN1W3`l9o0Qc3f?`s*uo(#3Z^%j{CuY%M03b#6)86r7K}M31cbcS zPWNMaeP~uyJi|1YtAFV`VS~F!o~5q{VvYIkJ!?$LfT%lm8YLS$LYCi}AociGs?jhP zDJCVXk*WxQIi?zCbVODfFS(bXxV~l;Oe2OC816s%=7PX1<$dI}CMF8KEx4`0-xL}& z=VOP}lMO6LOD4#g4p%v(uc-B7<`O>F7y7;Lx-omNZl!qSw-#}99tNQUumj%|FdM0* zu1g43we`N0K!XEf7N))3PxQX=_|hJ~)Y#X1EZ#`Geg7%1m;kWJmC)}uC3UIvKTZ!< zyt0OWBCji_zz{adYw8uPeKC#*p)tWc8LfszfjIb}@@ZX@@W1mKhv}UO1;S!=dau|IPRf`2A;~{maQ+o0f0v62om$8ndEYhn&xwKNSOf;ph$HXGNybDp(63b< zzuM&{ZhaQF>VXMxcQDr1sZ%9hkZa9GLf%j6WG{A2zGD^To=vYXRGm@OHWH3_`ms03 zCux$^d_;j$QMv^$u=xRkm1sc_uE3{pD2db;79kMoM^qWL2TZ}_GSncs^SAof(t z*ua(T%h;N(gV;rd^-Yl_b#l=M+82W;X?!+YRNYXcH@MKjrsYmu(l0yYOAP zIk-QIHV+SXd-z0yX|gvqinlm2Rw@2yWH z^nwq*wFn~}{0gGL<@HGUaseWFWn2>>gQ{NU*Mar9F~40=-*tgmm^PT$OZ+0nZ}8L= z^d2sg0J>)qb+3vclkuiVa^gAxaT*RG+Z#Rw^PR)c1wXWyd*wp9phwFY79h&)30ncD z$cagfG*!qrdTKOk`Q{d%xs!LgJa-F)Iq?J;^v)QAkV45&Ue-ebc|Wab`OqR&Dhy|u zqB6H8+?pOvlX6?^33xh7yyQFcP3ip69f_xH*<|=UkSx+9dpU9=!>tJeJD)fw&@Tyr zAflMA;Q@HU04!#=90MQBoO+6GWwMf95xaxvY;m?&D^vP$ePsw#e6DXeG_y#VT>X-- zznRbLqn$u#A4Rb%zKl|^9?Puq!BS3?kV&@Db#10L{-8W3^00M7X(HZA{B>Vaf>auL0v zLDMcK9(I_T4#e zR4jt~cNTS+XD`w7&s_YC6k8}~M3b?+;k!A_i%>Q%0^8`00Y1M0js1{6*ozNgJKmp^ z=DfGCXK+t5Y;%9tH*8v`;gP2)Ki{t&pzCe-X-k~WXZm!56w+lOpC*qEa(Q^vt^8C_byeMXA* zdgI9G?4s4A&d^Ql>ZjKKniwCxCsQZQ_0*d=D!z;o#uzV9$ZN}f-@4y34FFMFWZcEp9p^{H_NvlrWogL8SP70b!@N5 z91^fWPQP?zPC~6uGj*9B=Pcl|Msj9hd2OHZZuoP$?R>gqbmeCzT2w}mSlnxZ(As*f zue1PSyQi+;$-k3P)V+@1bO`gh__8r`-bzF*8dVE9NHG$h>7~1#!*_u3TA_?%>l-k& z$tIBvLzEv+W6yGoF~W>28@hv9_daQCNzCVQlAp407+tzF!Y_lOxl%#j0U&=|M*Z4k z4nEcj7z{713ID>;PeFpxqLazsqu(5;xK8?hiu?LjIM1|P{4?fp9UTb=n=V1Lz>Kg> zyL4d?GcAYev_IX~2U$8iDuaJ7yVNT+$rMtrM=bd?xz#8F)ir@hllZr> zzaOch(E*3`-v_oc@DR}j4DeK#>3G)R4u5gMAPJ)9%Kp7jVP1AcBVn3$nxa5#U~Gp5 zLNH>1&=6oK49&t}Pv`y?vYx`?DI&#p?$TRQ0G5iPmRVh(mJTaakij|D#`mj+nxNWq z{GMd)^t7;Tuo!?K0QI(hblg7`_&|?|$Kk5Mhb9~NJ@MXsh`O!?fJBuHAI~Hyk%X12^Sq05-`O*yfFI-L+JZf@Z@1i5I+;>JjMhV>gX>8QdpiqMLt$_Sx!eN`g%=)1$fvu1t;mg`uY_Vxe$O9^DMiW zXgc5z2Iej^daoUo(xIyMpK{t&nEv4x;jUnWqcF!=VCC^qOPGqPGR;UO{CCc`sR9_a zaj}{YhLDB`oVsS29MBxHszFeqSO08PSut)vvAjANUW#}v z=rmJL`_)#4uGjKaAL@0)(eE(3NML5w`Ng9P>a`E(E+(a|a-%aA>HyVDZG2Y3bDdzG zrGiK?A>eD*?Eg41tuX@!7ebS(Ddz(>Z$=XSPl?8{66VpL^PYA7iF?(Q z9MWsWgZ~%^o@CVk6gyQHmR{J4}`Vso4*=ihw3 zLn$o~P<29s*JG{=Zzu6Oicdf}ebeD9Kk!=3nMvws^neirPfSQ7aK_T467xm(@`J%E*u|WSK;POme$i_Ow zTynFTrFZ}7r$06&V0Z~+yfl}G&08m(+5EC^NDtlT(qX{#iHH&;OdgTBP4POubusqwuO?cbRbyth3b|J+#PnV09SI4HJSS!x; z7<#LgRv}pb9%y~fRolH8?D>dwXw2^?73H;hD9c|}?guZ>A~t=lgBv7HUjwQR44^#0 z##;?@>(42UP86pf;YVbFstS;ERgzcLeMWKqX#-Dq6U2Tu-Mn43wzw+`@WZw)OjtG|ZEzZW+7Gh5BntHy zTcg*vi?4pp*?rr{*pN9P)x7xQRX=84tE!^}CtJwX4fE&j2Y8kGNK6wd2gE%25c~kZ z#d`pm3%4QYmflzqTaAjS3c8I(HWuIUF+KV1rUbmu)byW1GnNLLt~n zj2Zp={@Vtcyr?10h|6p=wjqU*^#qLeUCfzDFh@-gupV%T{h8uPbz(B07`C2g<=MW6 zbIZAUuW2U|+|8zbJ$=gUEj`2K*6JVGQsQq>QC-BfV_2u*2p`85dHq@Ad6(KB;aIK> zS-9riR?X~J2IVFI&NmVyhm0B*KA?dNFw|#_Z1sJ}*CcRCG;AdXHU{M)ds)kE-H5~UtHNBDv-MqxbpOTy0UWLFN`bX~Uy8(p9Q5OYis%t=D9fGw zdmoK*G02_M=ELA`q$3unC#k<#z0%a5xyP8nX6Nk8SUx@wiB(!j(&KYY} zJjNJ@SMUzSvv5sPL>KOmUNgBTwq61FaaSQnvxPxxvzf+)|C zNRIP#f^#v%?@vX8XG4~wMMnBd zOvygBgFXXv!rs5y-%hjeN*m{S^(Hli@EXikf6lN_sWO4f3rIgF73r3n;2%l5WiOu~ zsxjTl+!n12Yr(Cpurx{F8v(eRS^^XXW>f2uz$ldYDP*nYZ5g%6x?}E^aWZA3_N?TW ziqs_wq@}N{qTAR*yekE#=?JVJ|8)5^xP837opiqjmPg+dIaYn5D)qxef%Uo)wwU(6 zA6T0c_{QFvWY!nbex9Tw%w0wINCMgsZ_8d&To8$h_JJj{9n!|N{+C4`x%~$b3D{=1 zev5>)#rq*Z<2CidlQbrew9S@knTrnbNB+yv$GxgE`lIS*j;8icf$Y1d;rE8#c9(p014DnAq zmSBTaIAxdt>da>i+XU9+KZZ2GVlNBenWYZ|laq@`YdS_&w7@B1ds{w*W&o~d|CzN6 z>1V)291_kgDHlVNf&NY4SH~2uT9!#Kpf|$nxY-lS|E6G`5zlFzT7gVdjwclIe~Sxhy^*>`*Z3+izZyIm3g6-(I>QV>I8OGG(qX8?{&JBz^L7ezJLf^ZrRHN%QkMW;3t_ zEUU($;w~pKM@i4JAzwHyG3njmS5(v$O?NIA?=`LiKt>}lLQL@|0Eqf+8afL-LBl!ZPl?XTv}U36>T{M z&ff}jkqr-YD~G(As171J6{pq%NsV3dTJ4>HdB6!QmDIrd>AT0;GSj<${!wiUT=Z;q z8VqYuYJ5EwcDpb2&pGkkPjq8Z0Qv1B#^Sy|>SR(R%f2NNHEyI?3g~sg2sy;n-B`~9 zla8%9flzpy8w~@*@Tq)l{2q)M!^xwItHz3D*^>qSS+I5}p z0}S&L?MP~KWVIB)d@C+SYT6*bP(HGH;SdTLKH0p%)UhTtl$1chIpTPJB@!(6LV_sq zoK1OlVYW~_f1GA6_q{T5XJ%iB`VmdMF8%o-=1}G$v~-w!u>rR_q13+Xp}f&7O+Xmd z(a&5~zSJ+c>JNdyk%3#Fxf%b9zt*%avpwt|H!wB+1HXkzcwGgI8-bXnoWjUAey5KC z(zvCtxI|%q-x{+gvq8u;!VkAA(N^#FW}FPOB$sT8Sg4a5h?fF7mq9xaq*9(B{D;Ns z(>-dCpqBieExe8{X-GddDEI;Se@39mFGips2O-26CDCOBldn~Zef$Z0?sTRHjX}Yc z8Y~|)SUfdsu;i<+`uVp2F%d-;eb?PL-aWY$mroV^h=(V#u=Q$$p-{uM{|Wt7{ph#$ zX54YUCBEIl*NI;-e=L3%@)-r}wNbSx5K zyF9i|B^w;lox3}HJ>vJpsxv3UNepWYaXx9)|?VH(jH{$fZ2au2Pz!g5`Rtj1(& zvf~;@wk{lM0a#0Y-giLt!nT&BkZ7v&gAGfgU#%Hr=kNLQkQ-GQHuV6RsD>WiE@mS@ zfdb^-o%*FsS{>e2QCjo`oQ73R65eF3u0-XdCXjX0!jFapx|KWVYG(zyTpZ?LN`r&Q zuvEuiA9;cXv8Mt1F2S(gCC(AU9SG1ETV3ry{>Y~#1KwRWb6+=!FctYU{1}bC@H8|G zonTLWFZ?|^ZM<9M7m=iZ{7tAVKZ5WD04?#cq$9E-|5C%3p7c}vF8Kdn|425N)G|tn|8JM`>ou+zs=uD@iM2d-e#0O`2ymw`lbm#;SO#6L^@7F*hzU#UNlvSK#BEjrGB}Zvc3#$J z&3bIPt^ItrEfwk>if(#X`e4wt9_JSgsVd^^fY}R=8A{AjM5`&-MtH5 z_eU4NI#=-XjC-2d;rr*FvmB2kaA> zM1c)@SB{N7kA=Bw1r1N0u3vByr7U{3RPg~)xWPA-`CqZv3qA#(lp>iFlp4u33=GeU z1BfnSeC3(E$dR3x}U<)@KUr$ z#x;d0G+^;i`pmY3r4SU)qf;D9NhlfOdX@8qTp)qhdH79$Q$LXPmTR#}$r4(qjEcLk zCn$F;J+wQDQC(|N>7ZFxNUJU1FBVFEtW$mEP0x9xCd&9xP3oeg$e{RXVch9?oiU=Q z@T0n_IrlRfiCKk8*I?=P&y03+MDwg$%bQn4ESu9$u3(#aI4=jYbn#x4J(Vv(`_|U5 zfetsSN2!uV0x-BJ5K?3kt9rH=mRaOk8gjkR6IO@Jq>VYL2mRI|@WLOCnV6+Ob0uEE zeVwu$0!5!%;*8nIRKJf)xTM}hQe9Gd>A{?}T|x3-B0X3lXzw}rUV07fXeungs)f}#Q9GBl&<4y# zO)gm=92S|2$g7VFr1X52v;7!UuuZg{575k1dI2uE3z)<{KmCsp@|ME=Aq>f8iu#WX zHj7(PM3n{#EcxQN3NR%dEKjtpG5yGA{KF|7-^jWo+aq{ahx{wQYK?tCjoU-h|EaNU z4}++{0FlLyDfNIv?{hcLv4I5O#dL%JlkW}vzJ%7>+l22q+><-#$-Pmazy^j&u@K<$>w9l+Yx4_G8+PdA5 ztONXk*E{HIWE*g-VwjB=%-@~;b|Kgp*VI_6%fFXK{>L%htXIuTl|N2*>$~gCAhLMp zTD7HUS+ql;;2fpi&96m2TrHPs3b2S_wnE&PeZxO`GuV_5)?(C;^v`F)IQGl5zsEnb zy~M)FXEz`b9RI!l=Ln~WOB9H=ZMTr1L0-@{a+2F0mr{-vVz{gttl7{m3P`$b)TRC#U6MO6N#>`riqUgtw+q zGC*WO^=-(Pi2l;J@GpZMxK($itACE|2Yu;{(*ZeB1u9Af#@p|vs4_sRm@u(}(}?V# z%O&n{J2LFrIU$PhyNRDd>N}t7w9J((H?3nd$YM0`{orp%MUeDf)|MN-m@5P)_GL&w z-2Ro1@L?t`-&;uNc^bcCe_PJicnz|6jrV>k7M{{dXqHO!DMXPx5E`uv;&FyITfNc% z;mL_RkB_@>GNNX?=QIBp5ZMK|EPJvOn45PfAMnu@asETmzdy^?E5Rb>J?soa|dJS>Xbdc%%>L4~pBXd;fuua+YV!#v+k zXkDG?^$WU2F=A^YSyh-!^Hg5Ph)E`D;3rMMA>@33*qYPUTK73-tIrlKYPX~ui9H}q zhrKV`ky-9KfS))m;I2g`8!M--@Cx2S7wi71c?LoyoNKpVqH+ghwAzBQ@_Xef(+awj zz4ObaCm7jpMq=L@8_YX>O$F-2gVr9r$1!u~-EjzB#co2;BA6MyS4mScZIW<|WLfVh zuSISAXgu|+=vk5!Dl@vi)Cie%Ss9%_BClYMG%5%OfUTHH?hzChmx!K=p{JEief05N zb??Bn6<2|-h2ghYGE8fCb~3R#nxD$bl+T8m#t{JuMksR}g$RqA)$cc`Q0PK2C701V zV}Cu~ZfoHnP8qiHJR*(7@!B@*uFFHQ{Cfp2pHR>X2@Iob9jW{9`!<0UHy>@g<@R4* z5LB4x$cIeo_)|8j{&rBb+-k=pCL`ZFX>z^pY6nkCLA zQj!bADZTAXJxG4HC@#P;qX}?$Z@;YrJ3eU04;13XLhJ(mZkY*Fr@t_uaK(qqDkIBS zuDRVR`uiW^Q%u}HQYq&3c4E|eTQ>TzTUlqTEj(4Kl}fY2x{R2qqpP^Z)ybArDnL%s zD3)0Xv`jYJcx1;7SN`wQEcwZQEoUWoVghJLbm<3-pqd(UJTK1m z&stkjXvl)HmHmR2hZPwyEk{4`{d=dY6-D%q5j?maN%mV~zN7|RR|o0zt@<5;Gh)i@ zKjYoE^87qfmRVhdwvo=@Ge&%Ba3Yp30d_^+cB3pFrSRl+%5 z1bdqtNy!x($vc#8*_1bLISjk-E2sS?)&iDw7$6qYIqJ67AK1%PG8YXg55<`pRfoEd zjr56l}ipZ``&|{8v`l@uB_c@9kZR zC-GF=`UinwOS7bDiNRTVF+0FI)yp1Up?A5&Upg+e=;B?r^ku@4$zc6o;>d$q6$XV| z59Lk8g~~&h+Uha3#o2ko3o)QnyzR=)3kX`o0hhmiz6k7Il%+Up$6}sC^j${IgeKYZ zX*3r;;WAtt1L*QA!xzQdT2#X+)UPvM4a0?cM6!)1M@Ai!#k5dYpzFzD;JE$@>Z7|D_iUUPER~W|?P1j76!+T){|(H2hi~zr6l`3c^Zp)xp>B z9)TiZu?p`y=5DAxGFw$3Ik?xbLNt#N6jj`=YX4dbkU}IUX@*w>AM$$r+?H*7WQX*1BkW3?r#X3kd_r$AqP5KQHGhU{sk5>?73n|C>99pSnUQ zU!WD!R=K?4*((YAg<$<(+~FwJ%&X#G%yD=Lais8hsq*36opaxpI@s0ZzrI!(!PWGx48#V}4x)B-ZO!Xj|W>^fuKzmN!6iWYT?% zlpK&hZ>z1g|BV+t9sTX!)S8?(T!*{NgR`X_?mnYtVd@sqhT_2ek?Z{BQAF9{wT2MNB{QDmK3<0E;cjXA zhJo5laAbLoNyNmjhYr9251ne_^l$SEdU`}Mol})*lG@%B`>F+0S&0f=bzxvB)iODG zF^G7hKL1_{RlPNiSsVO@@!#$#wNH9v>C~S*wqM-ZD)cAVvzjjoO$Ugtp2KT(B^=8D z{u8KA=EIO22$7Ijtb7a!HmQ@u#8)^%k;P=Ikt`E` zFqr^!|Go`~!?j;i+S`MX@>}4OvF81*@qN-Ur!GI0^DU0{*|r!3rY`v$y%IslWM2C> z@A4mEk6W_DNGFTg@!6O4mf+<2<&ha81)KSGAkcV2wQk+fVK6 z?baKIwzknjd@9R!D$dd`+H!IBsD#v`miYyN*82$3>)VDYBvv;cbVPkaQfvMV+ofp! z+@YPL!4G-&Mz@BK48WXs?!Fn_1BY?$q@=qZkKo!KZuJmlVeSLD=>{A1#=rjiNUHVa zbb|y`jt7|ic-u<1V;0QXa>F(=#zXPQcn;VCz@{YbfZj;o@sMK0og>MLaQmF4V*01) z?VU)jJI`p}geM|>r=bx5LTCZ7-@cs*>*94NJ>F?+Pge7CXnchY>caE~a{n_ z;QytdtjsDlx+q&}_J9*6DOdxVpnE*9MluKRf#ag9abflHR(O)0dj>F6hrt%w{&kOr zu-RE=#$=rq^}fsbwa4u(%PaOGUiNFyE1|Y6lo@G3+QO}OpFf{5;k~u7s@i&IXfz^a z`iBvAz!_dn{kNEiCG^P2jm-=ibNUn#G|1!+?-rLW4gpdu@Q#Ekqkpg|EmrQThGoym zWkCn;P`VnW9CGNwIH~~HtQ>&NF8Lry2PVBgny45p{cIML(3X8TS}UlnGj<+Pe_uyo zyj17=V7yMhYlE*C5%?wyS1Gu;TzsN3A3VZMsxLWz*Wn4?2uyLa1&{zmH zsiJ#igXEl)`eViw$%QR(4Gm|jhzz2|5IhP`Ox!T-e>oce-31M!O~Yffjc5QgL3;zw z4!2W$k-Ynlo771%bYrB_*LcV+Gq5_LZr_+KoJp*#NA-QSEfgk+JB0rQOq`3zdY~~g z1+t#ACHZ_55{EJv<)eFM5N<1?0TSx*nq^O~zI7O`)9dj#cvB`{r$uB9C#N(tL|AuV z45yJaoyRj^x@m&>q9Cbfxg<(y=Ztt0zDxIQx#Tgys#sg9j{S#G+N3C3|ImL_vA~XF zq;q6q?ZYdXl+trIGV+uXH;APo)+ z6c6F~bc0|;rs(YR_Dk$%`%CU}ioXVb;YvTIRjS_Llqxr|~+ zUkQ0j!_-EKlJbTEUs}e&ko|dv;i=3(Ra91xx-W7vbe_egc9xOZApj=ijRKqc^=X&A zN(l#b4x-O0gY(Hix7&4$eg{svy^oxCW$tg`1Gd4SOY6Tzak@rK4jrF_W@K2Vtxg2} zgZB(W%q6YFpEGP&ZuJ&s*>9~{|L9-(&=~yRJc^xKK3&c?vIHM|ono;qi8@XMEr?`v zSb8~QUUQ~uHod#%3&|Yf)r9HYhU{zZCsXbxi|q5Q)>9r(;8fkJ)W2GES~2(-)1cug zuiLuCoNn{egE0QUpc3GH!d~?ADV3Tny^un%4dr}U1oy7 zfwtQudu>KQQvncgRIrWVtWIta@xp|wcolt*lL)ke{jwU#_IefiAUYKbZhO4e%uZz>|h*;^cZ;A zU580k@!?aYMUe$L2_S^3Uj#U;w)9l$2>p?O8O{V?hU51sSizak zV|?BMdJrk?t`13gP)`NG$q&6U&hVrBykv`3j-~!4NrZ{FqFl57ls zQYlN4-aUkz{K?kXXa#v$8M@S8wZsESJud$yB^I=c7hs7$U+I(9OHdgAl-pOTc@VSX zm*~g4YK4Y=3hn|5Z`sOy#D$r}pDKE-Z4M{N=r3|d@7P(V0wfB1sk`+yHhTYfLdS!N zwo#0_HYP^eMv|Tmqd35w4sSJh)02ETu7Ku?A1!S$iWNmYNwquwCXng#c)XSPB0};j z@DeJkDQ1eD(kXBnH$i$;+~*XZq4>M@=`no|XH^Ni5m!1*a-yFpDamUKE)@{@ z6m;X~*`Nak|hY5h_gs66n`bQvF z6Wj3!uE9D2>f zSnca_(w^!igL?~Oojf-Qzh!S%!Wk^$Hx0cF#ZP9R9cRM-iU?Bd4PHJ%c{BpXhE*?5 zPL(tDTn;932CYrn7}MX$jr2{ys2QpftlTb)^{C6c=xih8u|$0K24lc!Jh}1Cw67Y@(`j=g{nudF`xQfJAVO{!E;(0`9N^(c^yB- zMVLI2cjls)tkx=X~{c_KW_Hy&v*S%xBJ*SI{ao;ADv$u>Oj* z0R2L%o5T4MZgNr$^W={so<|N1HIcH;doQ=Fa_dD|>5Qio=9$OcXBKZ+S0D9%vd=?u zUkEQ_%6J9JNcl9_K8$EZ&48G~b1PrjtjbE4!PTcZ9DD=DSCS+DJ-u3tZH!!SQ<;ht zdo@UGkyjOhFb)pv?)E1@EFII>n!QitOJwR{NkLD zlstjjc&sp=OD-a0+n#CjJ@p6Gn-+60_D1R&e+j!C)`M7z)j5UyDBY!ZGn`G-2Zjgi z9GhRJ-$zyR1#+yzo0nOKt92xj9QAT1iJTO^kg5L>N_(ILSfy0|(i99d_L#D61CmP| zQCvHQ9#Bd~^XeG&z7R?-RF>QW6zH`PbP2 z#||A!AfY7dLxrCC129wJ4wN@Q=K8kVJszL3ev4`COUs^2F4?+%adxt*Y7WPG`ePEd z9@@JJY(Rw&EYF)1zY{1ghQaT#rdr$x_KVaa-?MGSXvS0rxE=PTuC*cd?cdqw|L$Ft z+pYY`4sL6db1gt}&N8zSqud(j+Y{HYb`2`?TFMwNZU0Bfx-CyLXJs3BP8w2O>Z z=I%uYnj*Ss{;@9s=7!dQFfa+IjD9yQqw-NNT3MQ7#I)v}dl_x-SBki5`RsrcZ!*UY zfu-|Et@m-gYJ;fCKe78^UVgXy1!w~R zmvI-cQ|aJ)yCe9rP~Ik{yxHRqn`{&uH(H_B_2OYN@rj+=NR(;ppNQ z>H?_sz*Fv-!py-pJIBX1M^)Ej)kLEjXWhY4BRs9h@Xz<~Wb*P2_HAGJy!A`MzvH)J;;uG0P zbT%jbSpmF!Sh9b;NeiUr-y>lUlGQO0W`(@gf^bML43&w|x!qPQMCPOEi+X+{X^KrD z9{HdO4&yS~JEf`{)Kj#QMC5vj;P()qQD%8)GV#HC}nli@qTf`gkg6 zHPc7R%4bDC%GCHBXuv<-##8q70!oTc1Q6d5b$X=J6g{;)w%O4qu$l%Fwc{yy<4)kd zcExV}=7M`|P5xSXjz_6qOx=zzbS~JY6b|tGBovmEa|`(NtxpaRw3x+r^NqR1)_K__ z;jDWv|1ofdLbZ^U>rY|!c|dVEaj0LFADE=kY-NW8g3d5#z#ISS6qJyoEU0!(E+vBN zHPgV$b`N7Ok#VGEe#CrXS1RxF0pbm@V!I3a5g%mLBZbDGQRS$-S{BpH^KV+`I^~}k z;kFJ56Ksz&&IoL#Xgp)vhJCX%tXe3zjz}_2BH&xK0F84wTHH>P!)F^Iq|2ot%8>Vg z?D$QA9vZT8BMO+`e?Q4jFp%P}@$U@kG&@ZPX~!*aRG_JHFCa`4N;IKFlX2Du{=7H2 zkH~(d7#nq1=URt6Cls6~Qw{3moiRDFs2+c8r0X zb(MW2;OE8ZF~h7(_})#tPfUiavC`Ddt6zIN7&or({aalDY}9}nq@c!_@EBAOq!W&; zH4#f{Lc#rnzc-0lp&E`ncPoIR;oWsByz%}T-!A!0AL|B3d`0U@FsJur><6W!8lF2CaR7%A-8^_s5Q(CO}1)^twdJ{jF&U0jyPFewH1i zXNQO~7l6|eMtyxu^l+#zD;dFG6)0PJRF!4j$rl(;z)^ZnE) zL$TkJy&1;S;)&LxYwm+{ehZbS?yw3NQs0oVk8pNddz_^s^|2_3Rmhk6*ZWh3)?bT| zjlx%bDAsA^+7R^U6sdv{oQW0-pa7k2rUssw=|&=JQiwL18uxjqdxDQZShAkfj6IIY z5`_uQ7<50_8_6TLs7l?ecPjh4JYy3vTU`$fMRoK(6wkp9E@P2hkd9by7NxE_gv9h) z>OO2YpvLKA+=$&JMfjRpPbi3!56NvG>%i@u zP{_UO5bVAW=UdGkX|e$$$#Z`kWl+%+%9Z@2d=X^vm&WG zipRR-oFFfNBOS?+^0B^Fw31__{F8+!&sbsMd5=;8cV`87=cWS#TQz%m)EeGljL(um zxA=BFu%0Z?#g02y{$c}vkMa`W??hV?4-9tU-5_&hEk7f3R+afxXzNL29y#(D8=}&d zo;+NwATSe(i;e=4Tg=94MB<9|JuJ+Gpp2*frFn*?guOj)X&iCGuQ3}~`PlK3 zZFdgNiZ)y}dzk#F7`uW6Xupdh;wYL(Y4r9^i+IjPLWBu5KZ+D()ebV0t^HKD4+xvx zWoaDad6s`z8y76RPknOq2Hh>y4_E3&_;{+dZ`n*~@-uY2DZ76trdb8t7aaWRQsE5S z;~dWVXcuL--}6#2xuzdwd)*A$ecROJXYEK#&y}V&0kljr3Dj&1;%>W+*TeZvx935( zVczXMlm%DJiz7oE(`t4*%;j!oPpH< zN7*PxiWeX01rr3>*+^D?`o#u&bM+pGtxz-6`7XIKNqaQZNDAdPiXId2lYF!GQ|-f} ze*3L%yM~p3STN=Mev?q2$IZgyUvjU*tp|_WWQSXwnay%^cQdVywJ5hyV#Hn6l#U_d z_Dvi5R2QbXAL_Rz0VVHOslgwwP;Xj%Pk~R0703w2PV;wZw_5X^`g7ZN<8eFL;0xh# zDMH33Eg)E>&hC&N?cR*(u; z6Otz3W`TmNMu_3g1mHaFRfL{$W&}taY%>3JWH#327_tX3L`NdU$`xw#R_C z+-&}R*Px}Ipsj$5!}l@(7#$Ic;6oBD4V1y}K=^hUui)O+(4`2rcD1x(xr$Y>Zr$J- z<n z&01iw@jaG&E>SJW@AX&36I=9b&XHpBUcsYBy0XE{{Lk@{Y58gZDkeJJtgZ;$3e#aD z`fk5;7LOk@Go*-5Ril{|Qg!IJ9uy)u-+khq2R^p+iRA>izX5k_5_J-;5nGD`g;f$H z!IU-ctgqT0Klhft42phi4ox{=@$N~XgPCzuxelZYIbM1Z?eGy<4-yE;*PjzvjC=ue z^E0W#cbjt^ud%BR>*B-3*N}8ACLfG7R3&<~H>l!TZ@*a*%mg_nh)Y}(730l#07KCE z1r1$=K;~tcnT}9Pl%Cty`HqaxJqf5_U?z^TzbIc%4j@xkR-xv7kE?o9KfPz^*7dZH zuEtSuf~Pr)oN2}jx4SCd40@Szh*_H;B1RVi27%7%^$48;r-^JHUna0GDVJn0o>k?` z-ilnxUaXhE5{d=ov$08>T-pD<66snrLGaYXnZ^^My8HG@ z22AMONLS&V1vvHVqr!46pS#A@KjW|97LP#YTf5ho1Nbetgh=+0KlrVZ$P3*BQiW~w_B5;iaM_jpJ8EFv^raEaNr#M zRrWbP6#sHtFt0_K${$$s3Y>~M5k>&ATK<;N zP;^Wo*my(LD1^ja2`7HexRJg}sI6aS3j^eUq8AB{vC%lD5)gAWjY)ZF_t8s^{_)?^7^cw4({2V$kAzxo&`+-tunL%K6Y2IxBqJ! zgUFdSxBLOKp%A`W$r1WH&irDJO6R$^1`Zf7FmQ?2)aB^Gtt)^XZU#8o(|vcrqte9g z)%GujPa`@Z zdn(_0H90hYUFQov(Dg(+7HW)3c}hA1p0?H-k5g4khtB=iBZ9XFVkE7Br-C5>xyggt zo?yL2HLa-)zHNcN*H-#sv_FgKTEoF|ABrBrEr-yx{cth22kc5af49!a1?FzrXMD2z z=?_Dcc+&<`bc5S+oisjIQ5GoY{l^Hgb$1!K#>@d8@+HNQqo-PkHc6l?b$lM)Fnqt? z0(tkI`yFrNh+cQL)SUd-|5`4wupG@GtJHju8n}d$W>az%+t)-dArIEdPl*J+quR3l z#fQIF5F59&te{rY8>6uL?YeV*83!wxLY&puz$*XGGq?1-CN*)EIDY}dkki5ZUWHRh zxrX&m9bdg%A|=u!McTd%G~UC=7}PCOk(kr0c}~4i0Rn+PuvAS!$Bgq0CK!&3NAiAn zI~XMjDnqm!uS7f0F56`|&qR47Q*A0-${Eqak6%Yslr=+Il-!O)v8Va0xfB3W2+*Ft z>}L=pDHpT&%Dv>PZ`)RdSab*Cy`!p7ufRccuyw2y5DlTMs{qHmfbz+Z8B2L$fwOT`5N>|RK@eDt) z4#c#;ivfKahc9{Axad4g^!DQy_64(yi zGhnj=MPaxF*v^U8^=fpFc>mtYN={uP$u4y1R%1}DlS z{}fwtk|}Mg?F$zUQ0pbts@|-5f4aWi8Uf|^BHgh2A?2^Tw!c_VGPWg|eT^@IdCS#` z)n5pxG1r^D7&cWAj-$pxS~cwHNwo^h2?ITAl5&3%>KXQcp}DHtsiAZ3S36L^p17ao z`728iu52h)gE_Johl#ER=PIgV^L{Pv2`{Kh`7ngoeyoyg*B?pmx|r@c2KSR?ywa+c(V@ejd?j6= zZM9xG)~8j{MRow@s=KfMSX>H;wY2sG4?Lhk{blzaevmO1l?2TKx8)!%28pMHHgmO+ z@H2eTId#s-_tI!N>~GhhiTJuuk3Xu(D}@nx&wXs1!?%b3rmyF6b>|f$+iEiVXPK zGQd%RUNH6=Et``tnnJTCnJKQhRb`7QFhz6B@^qcGiutb6pps;6X&weX!fq?ACnBTXvih0rERJGP}DMR z%-0!Xcgxl<;blVAH3qsq(8^Y&m67P@do-KeZX+4`Y)rTlFmnKKyCQVzxRur><=JT% zOjmBB9lc+EN=8L}@LsUg8sKShc#gx|&ouK!N83blJHs%FDV!#ix9byNTKMq7&sAL< zLx@2<_?98qA0V6I?oOn9FP9uTZ-3!QRFqCmL3YZ?@! zE_D&T`%+YwSV~y()PxbSC}!JU=!^??f6tszBzT^0_tPvA=Vkg2vO3Rn;DQJHlB**d zc1o5iXSE{+5`*XjpPqD|Y2BWLKPE6arS7pbE4exJTLTBy)PyLze)xYhU3FNK-`fZ2 zkWfMeL{LP!1ZfcI95K2jWH7pgFD(iJ5~Bp^8XG;j6%`aj7@KrRBOxj2d+>L?|HKv+Ia_qA%jfnT z4sIfRa?dUJZu=R_8r_6Z%#^YASe3ukVwW}7CRm@~=BtN_o`ea_JX4%8NHO-hrzV!`;?uo7P`j}&tcR`!E zl;bk645D!1z4nD$TCuP)>d(PF<$IAFp)G2C|H?iMP&W}^rbrK*Z_=$uji#1M@BSS+ znkhvNT`VytSB)7-od5kjsE2qcA4W~5=W7>&fx&ID!LExy;wQjTa^X*GnZ$G6hAv$6ZUVd3me}E&vuQjkbZI%`!%%m^D z-VF}Dupr8u_Fa8qL_l7o40g-H20uBlt?O$x(VrjJ4UFE6(}jiy?V9U=Pdj2xhsQ@h z7y-{Kj|UHwf|`@e+=3+YQ}x)M8UZh8IE6Z)ghOXBjz0dW4@OOPUam=$2&Aa!wMyX0Hf z(UWh&nXcc7Yl2sHB1Of1`E+ut>m7u-7__-hYhYVa&p1ag;77|g`7Xnf)NJIZMoQmM zN4Sm#HY??fa|{!VoJat6WH%GudPn4}B=p>4t6>}W7*xk*C3}u#7YY#qe*#zcya&72 z6unuDt52IO_;SPkx{~pvxgucymbvLILL;9tgWbV!Is-}kQ4rFRu$I^(TkZa$J8gv< zao8BX;WjprTwZ_IZaQ(V{4k6xseHlzkgP#rEtIAE8&!8j<^7!saykX=>O2!P`zvXM zYyA+|!vg8ZHb{k=m85tIB*#*LY5+t?AZfnrRuE z67nxA{jGY@jBrfw^XZ0!n0NB^yBelFwFWY1MO>0{pA-5DJhp6ZZ|u_PWHPOd>3V*v zvAGo2-17);uCI6Y?~AQ$_%Xdd?Lk!U@z<_Z{@8~$_D|BW-46j8$lZ5KigR@_CQM|a znPeu1LB?a2WkF1a9{v8tC>^WZzW4@(t7WUpCp6$bJ~xCEi@sdzWIWwF(Oe0L{1s!I z{O~`!+K+;#wCv?+@t(s=YnKmvBO#6eTOwNdc`l;lUN(-TZvTxxu0qE$hRr~6o>c`X z4>-8o)QPUeFG&=G`3q1n8s;(n{1d0*Ho+?hM-N|!lX_Go&C!gY1L2d}phjDpkmvjO zol(oSj>|Q+!au!Y5Sj}D8i*n9xv?_AF0`hWUr^<8;p;E^U8j_FaFR1x=Krq z+|-k^sVxckGIH~(y;TmjMH2J3ZtJHH=RddKX-$5x`@veav-`f0_G=GBP}p5zL*YBC zVS{fE*;&VK$<-vz0d1>P4Y7OC$@^mj&km0FM_b#LtTmJmnZso~n60^Acu5bQ9tr=f zQaKlzfxkG`RM(_YhZf8*L1Zk#8I6Z1D>qjt#9K+)quNaOBo+=q&0@ONDUjbPkY7`` ze5_Tu|E{Lohs0K(25V+3Zm>C968$f!W{o5Hd%X8771OayxcUCLyllb5^R8ZgyvYw7 zu~sex&fTATehl0KI}(?-iVm2WqsW8Bo#j>?p_$;fj-4%s*0puTLs^b0>3i2EOkMU} zcF5m_k9{7^pE`PduxR^LovI||3+u0Awhd1@_1t$7t`CZbAmz149_iP||r4xQ_%a`N-^Z1?xUP%k-; zw(=GtXq68k=2d0u2TXqHv+*T**~p1&cm|#})UibQ!kD5xj(GG*WjYOZTJ<6hsbk5g zYsA%w>5Swy;;O^oK!7Y;l!m3q+L>;Rl1B*$rI2ui%8H?vs7f(kvvA=z$~|W_<=)Ep zqz45-`exoy2A@wL!IF~*#;%??LR3URPu$TaQijYhfNL_39fp<4H=yy@9npT9Uc=}|;$UmLQx#6e>& zPe`c8*+t$*l1Ep?s@?D&4920Ib7#(BHIR}I-;gFdbjS~?K*(-rn%!m-)>>-L4;89? zh-c{R4hF8r|N5@6ke^4hZ)cO0mX8^nHeFB#&np@EO}Ojsyi!Gf1W2_>S}ZB*BY=9% z^l0*2)A?1Ri8e5gmakM*6qc+zFuBeCdPccJb6MXQXrVZvSAu6VscgPy(3 z^+lLeN3p2ZX|H|o^-zox1uYnOy~9DQrei!&SSQW$V8P)zK26YXHGL?~Q47z*AAYzk z7A&$ubNl7S>6O zM~=*aENEPla3yryUyFyKgE9~_r0%rQ49%3oB_}X;w-AQL<6HdCVtd=Y)H~WWD-x5< zIo{;b5x9#!%pqv-!^IEM-YI0uw?Wbta<&u83CVD`n>O2Wt0+BUqeV3d0h}I9c(svIQ zL9kEh=nusZJb6>t-rB8loxizZ&s4^9jEfX!fv4af+GmE-g!zt+2;pqrdG6Rp(BNm| ze1Eu&Itn#?B`wv-kb{5gzx=H@x1hE$?ua_ocB%Z1zIMDWG-mV)^*-j$nyW=oe*-H) zDl>HLCw#03ws-Ms_X4d=TNI0x2~@`9o?bT96-dpYsdX~wa!N1J%_G4CtLZv&T+=#?@X7n$)K6vN@>iXb z_FA8jUWlErS>RomnBYp}aeUy0dAo2ne-1|tPfl?CPV-mYrEH{5TMnT$!g9BAjH`yb zz39~RsPil9s-H`qy~~8-c3rAa{|sq`Ppg^M4hnXJh^i<&mcZTUfpj6NC*07gNtepLo-e(;YS z>w5OYaZq;iOE2~GSa1hP__S$mhbcTejJ=<&7o0%$0?)sD##7kFoYtIZel2{B`A_v(zR zCzFc_4O%)rG@1hzFNSO7gsVB`67PHWA7u`}VFYK4{05G_AVn(OR7^bl@R;Pc2gC|h zs|w3M@A2XN{X|P{_6d_`87I|d!BV^Gf63K?ORj!|r*SBByr_=cr-i+tV2N=*qQy&g~^O#QCzyDpkLUOVV>2vmjW6&++CDgR zwU6aX6;3Q|AJJabz0t>+YrwpoYhm0aEyFx`AoWAo_cw^sAl%-%@rpBiDcwASovqI> zyR4MI;*;!@Yo>9tG&{2Zgikdz7N|kB$4P(U6@NYlB47|S<7IF9hU$ls6~zQcpFemsFcN$~JmQ8X5KKYu)c^pnZ*ZMLqtvvvz6ZBq9?)pe z-O}>FmWKAGY~(5Az-FL;BWhEO-wN#?gv3ge;c>2|T|Fbw(1(HurI&HI zyMgMA>~!>KMb~&SKO?T;G!7jurkr@PBowsT!>rGVDCL6G*gAf!6m2dChT|YzdSu*e zEtrb#E%8gOD=#PiR(?-7V4LovTw*tn;eZiTPGM?;Q*(?+S{B#Pj98)Bn!ZxPAuorY z_s*`4$pImMA8|RZjWXt;u!}e~rZ+k)`f#iulT#Z-c3P*5n z)c-XX%uOP#I*XJYa++aQU99_vqI*d518 z?=eB^Pl}k4IpU|PHP&4`Qs#vFW`xvj_ic;M{oYI)&3~<}oc2Z?% z9_U5H#lL~St+nWEzeh^&LO->|B5hs)B_++Iu^+SpTy zEaip9j0sT$>jtB&18?nHLi3Hch)pGuumpr><)7?QGvDAZCpVn@C7_k9NE55gze&0t zKum8G#4bi>R?&b<_;J(e;@M#F6*`56)w3FvpC{=sKa+!2Ev<+e;lRs4OEz;lI?{$e zX7Mj(vVzvt;)uCtr!?Z7FtAE#%viK_i6`4fnP6oMyc(RBjOi!KG!_qUE}trXi*Npf zMWWZSAh1zm{_Y0bv@`D{AEAN6-R8mgKXGdzxxtt|wOoRL&NE}UR6Xl7nV4Gq{YtGmj*IHcxdD6IJ!bG(K;77!(YcCP~_o+uxD@HJR3HHJye=FB>nXNdNRj8=qj z$%*9VSinlseFl$pN?X&`{!GC*?{!}Fl%8KIy8rW5HKWzg+7k0`Z}YeexW9cnJU6w>p{Z9%9z>2p;1;{-c(BakzFG=_HE+YS5L^0?-?rV{gDSE;02ozBq1`b6|NbZ=;6I%zYzcTA;xdwsMqfp@z~;XR@d=~psy?a|^izSDi_0}tZZ9inGS>jx2vC$G!h zd$(t!LA7pxGQN!ssT25CM|&;Xc5G-`tK$W1^va_(tEP{Wt0Abn&EFcfV$73|O;N7f z7}cjN4~I#)xeG|1>c816KKgaPmi>!(?LG5S zr(CALjU*pZ0QitbW7NGt{6+WqH+SKd_4`4+)k52=^2XEW>Y8&0Dg##4LNcU=I#U-r zggyogt2ss`mfQsXqCt(R{dV;FWx1=$^~Bm`(A#Pk*U3fxE_f|5Q`xP1Fl+$t#wMO9$8|c z=gTuDvF31*ed*T@fB%K!115V9c!2VMa-Sati@B>bU~jK$!Wj=6jT7a)0Sod z*H8SFtS+X{8cud{XY5smc>9BJw*8ArNX7ua^IuNEpuWRzUv6~=rP>{|7JX93B4B%{NZP)%mpd7byrTy_YbP$Z*cF!yv*Af{GPe3OmAD6E`h+$@wh);Ze!Tkn$oLUMQczkeow#=fzUvg{-r`Gfm zhM5=%@w1jO?HE9|Xs06wjpE-`Xr8}7Vx^!ItAHBoI3~;Ahm;EYt!=s%ee|>@VB93F z=RW$)1-Xs+0RDKRY&kM4gHWfFg>P_Ef zP;&>7wAtt}0F~7L@DI!k$-#=8R=!A4upiV#_Pu~b5?JIH)5fTmwk8(*nc?kzqOes( z)q0Jar~DVIjs~Q`{eA?-uitaTSbZ)2Dlka^%#CGrzmi6zfoeaLs(VcdT3rP@e}LPF zq;lOznZHN;ramMBP$_LeLyF=XgQ9ioS|j5RovX8!XTt=zQLzlGvQN#JQ_jiaG3P@6 z)e_1U#hR{N0vBJv`$YN28I`hOJf%AS@zH@nyuocI8t0m90;{2H9*(|X8+j1oy~JKj zrn*eCG4kq0+HSe0r0}3w$57;Z$=JEN&*I>E&dI14lO?GyW#6p_&r~FSlsqNtkzVwn+A1XOSAD zLVzY$$XHYBw82O%!^~`*_0pkD9Fs+NswN6WscZmKokIL7*}g_tpbu|e+`^8M_x|K+-0=&2doVh%=xr?c zf#Lk3E2_=Nr3MKXEq5%9=$S^76K=9@W25>L4@YDFD;RvmGmea8{m>KNcB?L!#m};@eNUDcy6~V7sn~V0Wz28&y`}2S<}oKT zBkJMz#1K`6Lq&h0@eHjVlpwPGbJsM3=7ajP0D|8#1n~`4961fksl%Gv#f%3h#@)Bp z9ZI`;9tlCs`yJ3Sq&{R+Qr`q9AFPa$K5ze6JX8{X@ZWgYA6ta^VfxfC(sMXYIQB2yD;;Ct}pF7 zI`G03x+XNZJzoAMPU-ibvOaK~R!#7L>3jkZ~TobI?htPRe5dPN}lgfS130cv|L^5<3;c7UF6iE*x#X`fHy*fr_AX@dq;^nQ*_idupa+jgf#3YNRXJXtOt)<#1cysu0m-_n=;%>7Z zv{ByYWqWlRK#Ib|Po~T&yXvdnrfMe+xfL&z7+=WR%=WO%-rV-Y(%9IAWAt zpjsj%WKKEcNZ<9_Hd%F+a1u;|CE{8Qf4B0L9Gz^Ute?j^!f*eVx@9nqNHOb}F|UWy zJ8oU5FD;to3< zG>#K^WIzy76?4k+W&aE9_!GHoQE5a54$EO-NcK4^hRc*Ig!m|H{T~O!HakNUBX?8b zYQsdbj7>!e5e8kfv3qA@;|;o+XmP~%r82iT>vy)QB^%AZcP`KWjot;tq=WwXt4y~i z(N4U3S2)6HOj|qq8~>v@rKQ<;j`>)Vn7+Z{>ekY0W!i7!Xo3v#;L23&n_(J$-eFux zh0^&*quJTZONhGG8y8@A{yX^m>>!%guiRgi!u0KHREWL##v>U;^d4J2?lX-d@S(6X zevP=o6P{{rpx|DO*X$m5D3>h9dbiB=&C$!+YwEZ>p0lSj<`t+I+B~pi|7tmKb}H1d z9oEqa*SBEKA2U>0`hy4QC?Dc3DKETDq34y`Tue?p@IKW8KI}{Z7d|Nl#+Z&=(X!+k z0$zxVT43Frg@+90gB-K*Vxg4b{#DY3rjUbRh`)v^9FZn#<5ceTFFWy)zhct?KS#15 ztR%W~Tm#Z23MZb+opC*F9givEAik%X~rdc2E`Z;SdW*lqhtCt_rds@Y}u)&6xh9RiKqTQ`E z@$Gl&GHkMIy4zdAL+tFNNEdwZD1^;;ztC6lG0)(g#M}CC%>sZERIx_u|5D6}7oYra zg+$=%tGNcJ+3Fc`yf2#i%f8xb?})hTiTL!}0DHRfJvf03pF|nRx3ixfh!evNkO%#3 zx)BWoe~(MxVwC$HbTb%WL?usa-5}n7UwvL&%cjbV??z5N&SRlO0pp}6V7cR-$kC|^ z>x--(9cVshR0E2ayM2cN&qSr@g;ZeKPd|5sz@M(}wzIq|PIb2m_{88^hWWe0oj+hT zj#CNvdKUQ>@Mu;SU}Ur6Mtt;fdSs1eDLr0K)OKF-dFOc#XzA@;=&1 z`Qcn!j2m$06_Q1T+T<8w87VL#81pv(cobB(NdUi4-SQZ*{NK)p6_YAy)aV0Tc{y15 z)oeyS#s`eD<&7@XuGR6l<=JgcK4u$pdB`XeYc5SIim503!O(rYx~Q3A*zjkGZ7L>v zl=QM=NuRv!fNYx@5+G9NofrA=VP&OCmVaCjr&lJakV}eUN)et0v}gCrs%E2{vWI$BO46z@kGh;n z-7l)jh7Hm`*<_Wnmq5jxkm1i&-kL_qvl!Aa;p<;)Y!Q))o-JNLZKfZK#-;` zcAmKlocxDgkSO$gX}6d0v4&wF0byQn)1S;N{m}!Ni~~FJ`T;_rD|Rh zt@~D%7cS@L`8(OoZ-mf7W6mwU&S0c@B3Lb{Mk)B2GQ3u>50;All{@F#Hui3dBt^QC zQN+*Rl#e*`H@QnF;$9$F0!4-Y@hV`8ri!|0_ru`N8PD9LExH zrKv03NDG=%4VAMC#gnUZ)7DT_)`y&^AY0RsL0rYDqmA0MsCD)_)1?2d_HIm%-ICu_ zI3q0fTQg*;-2CxFDx~U)rcU=u@e?J;c@Y!-VLR)+x6RTrXq)1;eVur3$F_z`*Kr|>&|IH^(#j8EM10kK*>ESQ)j7243h$_E<$4L@&sq{+ zq|j%1a!J=Z1KzE^R~#tt_TpL*l%N#El}yBa-y-Zhv#)gSIb2CHrp8b7O!C}nU~=p; zOB1&}tMX17Uh+ylRn2&+vW1yZH95C6pi|FTkwN+A1CjyMbdiCn(L+F)n~v?fRXNu= z-=A)EvH+{`%B9SUuckyz_-x=t#ZLT#mtU8=IAwrY9oROFFo~%l*940dZWEVdD^Me& z#7ghV2^w4Da;qlp`_jG0>MT6f_BlPdtW8|3#|=I|VXOh*z`hZ0<_s^vTI)<4y1`o_ zc+*6q@W2>^r}CV=$KqV(4$bj6%KLYT{HfWI{EU z382E?HWT;%l1doGOqO5JnG83^N*Von+~EX+hKt?f|H>m9emPlx(oG-uM;oPY<6D$(JFLERTd!6mmhP6wyAdh)mpLrT%I5)=99IJEPH%|{Tuft z1BHcN?}98vSn9@z#*Lvv4S1HY{GG9!!{fs1HO^inKm7?^wM}zG?C9;Oo&Rpn(L)!= zRO`a5P-t7M;IQu(S*V-_Z!e&zUC4O!a*Fd|A6!z@c$>bi7bF)1wi+AI(-bV6-G}I< z#QB|t!>1|YeYmHr*PyO{IdkuXPh+Ei_f#4ffPN;HJ_^x5et zm-$UEyGR8OLlbtoPS(1O_a*j}5^Xj~+hA7kl}Atlo9${`RgI);$Ds*gH3p#XKo((1 zN?}RvZGIN)xOL^nb~SJF;7LLv-H(n%D@{+g2K*J=tqn$JLbA;~3-QcrtYB03laU5@ zeQP3szkvn4eFL^aMEJG9o_1Z_@NGxjptW7)Nr|oVAt(~f8&evu*#ef{x&HlTu;rvl zS8N=xRsQ%2UBB$A9IKcEP@`0Yx*@^v&_}cZhtRi8(nY;C$^)+K7CHqnv&M$gCu$oE zpu@6uM&n96|MuJ&Bq@5j2M$4l2ej0$2R+#5C5q);bc$b<8pcYESr_yj7%F0KhU#>nM5@oz`m+lr`bo zJ{^dU4hh;`H(r5KTD)~>Xak-SVq*d&3yJ}*r_|sw3ardVFR_9c8l%&Db2*w3`o*dR zol$KN5%|FnU-kBX6q6s!0y8>~i;Qev zMv5JQrr)4FhovLqSPzGOxRO`p)mKB){R9PuS{ewS3_p9-O)vK$eiEuiAT)LOZWGFs zKKR3zhOsLe=4i}Fi}3!jwe<3~51aOGJMM~JG2OT7wB{zn{lQ44j@U%E8o6%%+@w8U z-zGNYjM|pmpjiL2JRqIMv;sMa*Y*<_{XPiIKg^CdF-@cW7U3PrV|%UpMx@dK$C&3Y1+nzz+Jv8J|N?Gmy5{qAJXGJ*&!t z7^UXob-N@JxY;wT(@)3p{*?%$j8n9#sQ9(`C2mGbj4#xk#7~!5#y3JnCSr_msM7Z* zw6|0Wcwf6yWG;L5JYU_S)4om$i9Fs~M?mFXU^0BCpWAI}07<63sy0_Jg{SgS^1468 zFsMsRn5c{`LXs`F`y_~MR=!0pIT)R--Qdr#;4>{!^Hfdhq5u}Zm|#qE2P4Udb%T6C zaPY^I2FhV^K(vMj$CQLNKhy7~pK{a`=-{PIWFSeyY@1d==T<7atq-Lm%%4N5H}iUK z$wi6M~mzcJq zv7T2rz9RJHWO+)!!1d`;veILFIR#U;1o)aXNeyZA9RJj@?Kv9^W@lQ794Loo60InN#bQg1#!HN%3+Xl)Av;b{$L;Y#sf;_VM9 zFj$0>_<~$7v88W)>-)WwdUB?c?r^e=iN?QkJE9pvJD|^N7jQ~sHqmV?mxRGTeb`%2 zlohvT+s1W>TkvBS3UJD|{<$^)`qzy+7aRH3EU(jIh4_QMy$={RfKweOrD!-lbvI49_?_lxO${uldf(`o}cVqo@3 zur~0C4!{$`RFFiD(RQku|d3^bv@FhFOPQlp7*b_ ziqzUy&{a_ess)7icBNg|1!2{@=mar6bx%HoEt(LE=6?Qa3P4|r@G&zLIinbDuX2zh zU=*s@tsPx^iP_&C9>G-%_onWRB{z)t8Iu@4lX|O<`f!?abO#IK33$D(nM1iBs2{vpi5~(!M?&ou0MwMROslEH!Wgt^W=AwMeg&xTS6Nwmq$>Mq?d*oz)?{ z$trgaE?`$xdv3mV&zE$I3Q*Ro@$M$wmQq?^LdlShauZ9zRU+r1&v$zaZsu9zTp4ok z4`4hk%MYdleDmDLd4<4v>TafC;^-Ufl75^GBHf189H&)#S`yqdg-e9;7xFpwt}@=e znnfJ&_}nX)@F8-ZkaN+dUlP@bB%y+kYIIA0WMY0PFA3RG??UAwv zHY8W6qQGalxR7O#Mic(lEcKU&s=hvj96DN)2jgNlM_E`+^@>fT-+SVf7cF*3jjnLu zx0nyARV)I=H~Br_zq6%ulCLbn{jTVcKaxK&--S)Zv^||N6H=~x^Z}s|Z(OchB=f)< z4BQ-D7hh9^E~#);?1^yt2IEHhPb)F+iJfCLc&@8%m|Y4E{@~LoRM*Ya@rj)*on78p z!HHt0pZEtQBVc{ud+&>*Tf)I93`h{aZ3dFA-3a;C-k=NF^W5j!PGG!VUM98q05mg1 zl25cXr$&C>iUGUWV}WCiWRA%825pGGDunA>*Tt_GXx0z$2=NcZ4L2DXhfd$xJu?KJ zI7UnC%W7bZWW|FT7_NH7c=P?O@Pa3RgwFzp#VpJhz97NT%SFf2CXn;LXq&ru=2aq{ z%iC_kV8vOo(Zt_y^kay+UcWF6mUB5E^8K>KIY}_nm)6dh?iP?8OQmbuV-QQ$iKqcKqy*gWMJ5Y3MVl=fz@V;OBMN4L z9tuW1KU&4QWpd@#=(?Mr@7|YG`(rpv);h`E@6*L|um;2z!Bh)VNBNWCw z!VS^-6cx|+5ME|UsFIR>9^mGeDL%il=BvhNbElk<`%_v+wZCyDaqk`den8?P8awQJ zuDGZJNk6o8>H98%2$E0H*DXZeE?hrxAG>82Sr5Ax-QKqSF?~&@RZF}ql;#$hW|Tt( z5@`%QZX4^RScw`Z>1wm6HBOjA-O^~TQx-x2x2)nbA$Sr#LQHcfX&U{xLUBhdZu7*w zFIzlP%=MoBn`b7IfDcPKOmopa7Kaj`^DX)@WCc$-vhJk7rjjuwkck21G4TpcUHq;x z+B^}M3ZShX?2_MUXIl3ZuJ6sM$jMyzOh}6|`FZg^qG3~fGmqJ~TPCtiU2CF>08p$e zP%3dmWU>oE@R*#2G}h2wJl@Ey{=b#5ajb9&>!2QJRg7R^P2cGI^)g^Qwea4HY@{Qf zQ4q}ms$@oPlK_95cF;u(mS4PjdBdvW65W|;tiKeM?$*Md+BPsWN5>fyeBE11A9Jm+ z{L)PGS=u(zr`zE}`W#6U_8)p4Fm`L)U}FG}yxLPvqrTVvuz8sV>#t;Kh-vBCV{j<` zU{nO;TX&IfZnL^LRQx;R+l(m;7671M*sDSEMx2q@nfEjN;Boqcf3C{Y?b#f4XdEVv zGFHH36CbNTd3Motvc*^Mgv_$+3eK7?r(@2)fcBPE18AN=UJ3+|PS$*>I4X%k1cw{( zmS#Uy1INDbOTkQ~od}39TLfY5>f3uc}9hS;O}i$Y21?x&%iC9i^eRj=~P>+Yj}n(zeH?AeLbPxQV1!p zV~9I!Ve7F%g2}^fzIvX8Rb}(ko!SMOI(~u2Z#L0?j`3&8skd#~bzyz?F$*I?#^pTO z*v`vT<=f&0+?Gr7ovSGm2G=C)c1dPauid>R!4R+WJ}2oZ(c#1C*A%q@Anr;|vVn)6 z(Ox;~#X?7_qtd>SXy($h;a1&VRMK6^(Vj-niGBvFT5#74rm8R^-gXc?j@qe~&3tBv z@!?nn`6!kLzRhp=7B4;8bJ&&ks;ERs%{Pw+&J`u#G-Nbth1di<{+_i*HhS0iSG+3T z_^}bMNI$56%P`0`gDuive8R%Oq3%r;)K-dCGba0E1=o~%`I2(RC(W-Xw2^!4Y3Zw* zMNLomfVg>~uYs!`h@_kNH$CRP!l=RuJ}?BM1#=6o;v(pBhzi_HHs+%?K#n3pEs@od zvgx2TCsx8O*Gw8}8@xVn;_GI!U5|^R%ORWpSdn%{^8YL^!Oa10w#gM3it_ZqZwjN6 zYsf*{T(bEWE@8x!Pk^iGKPl+BNckC;(R03y*JO{h#VsHCD(mIr)TiI|7_JXUd`mCV` zd8w!OAq8TP*U}Jp;(E?+Vnd}@Oik>7gltjp1#~XuRcVIH_q(s7CB@+>(QG-2ct2Ad zJ#Efi>$})AwogHTtsuJx)&(vI$Oe!u!`tX|gA8JwJ@`{Gy+qD2+->x4KmJ=}!Gz#E zeK6g-x1wEY|EXbs!QCU%wyb|ldLhE+gKI-bSL>f{5z)=fD zja@EtAb*pQEttAU^rr^d*9{H13=FF`+}IcN3enR799ET3*Vj$7rrw@XQ__LTdUM{d zP?N!<@7`d|6YI#oit%l7=-|y64I9<>C@P}MX2H=>Y{2;`eJ1LmSw%McKI#d}-NA}B z&H3zSwaW3_=4K+g!0q&2>mY5m&Bdi0jFTkH6QgkSh|FZjX0z&<4(s zo9kSHiuXl)o2y_4vGG#2fO%t}ePwo+Ey!K^0ZNZaZ@nv(ojmme4Z7;ydbYL0;*dJU zej=zY9T}LBTp5FFdlRh6QMx+s5Z*G&D>HZ;WCKOabPh0;T_yp zq-1lB!9?1_z0PrQEl!NtPvsEg10q|zevL-8rb`~SRu*?3_|G8nIC1h4cmvml3C+4{ zrnILyH|(65%hRjdnw$blnMFDQY-%%}T?C4|?Gf1H+Px0|_UaUeZ;6dgM(}eZ^N>dy zgWcIugz9?8iD{?!LTilaQCQG;@#l zCr>4wO!jKtag~#z4Leia6^B-m*BKH|?i60@==u*xtCUWM5bE|AT+om4gtI`$9_rDk z%3`4cbDp^nHOKllAXVvv`nFO`dKg(%wbqF%M2|7DL^p-sRW@!Y(5P6Rs@q;_L#8ze z`p7wlwWUum$VE<(?Vg#rK~`eNkGy8Le({aKGXe8$eczd)k%nuU&HkH!6WZFcxK2cr zzO`wH;%{}@9O@DfhzyWPqQH&L#s4fo3|#(|Ip?b%Up)+ceCZbkX6{HWGMgVrR~x!} z0^AyV2w--@R%lG^z)kwl2e(r+2S|Qte*oC8{QG_(a|fYMK9(@M!bf-fZ1z~Pu{{g& ze%llyg#U9Z5* zQ#j?y@yvuc2HM=v$rrCQ&#!>&q6naCfB>+4Wn--I8?o-i%#Zlj2ieGJ{rR&4?n009 zYl9UA4r(3nEdZ&7{M}ndB#x@37v?6L;BQ}jHW)KJK6`c_+Tpr5rk6x|ZSRI~A61!M z@TegI=hN*MYT}om|0Ie3Gb6)OYCbB{0Iin) zMxng>eMNV2zQ!hnHrCTNzt_4TwKA2d`c4Di4YqA6$aNz2%;q=!bY108gz@hc_9s|AP;0^5W*N+=ipRB%q0fX_h7C)FV*&!El zgGxp45t_<8g?thtJu+XQz#4YUeSiMSJGalglEc^d2?njC*|Qvf_fH(`xGPOU=u-pp zGI9Ct1RMteNEhi*I<0Nw@jO@VwD@~JP1}wa!$DV}U%&O=6hT$b(c`8>BX0#hCuxC) zO^f_UH!jZ!;&qtckMsLgLsFG`WkVu*2wrY)Au<1SgKg?l_9Xl7o`R>Yn|$fh_5sxF zC<1tF=Aq4Y>L~m=Y5EgyD}}43Z5+Nsk_d*wXeni2Oj1V4GIpu;@c&H0RM|2$O3?5U zHA<@819<<*ReZu|9vW%G95zO^FVTssH%)2Ws+u8gK~+G7(~4_9|LH5(w6mC~lK0&n z?;!{*4|4;w&;s>8|LOLgq9->jf#|@>HA%(2F*D4^Md8W2L`QmlHtr@){M$;5$7AQ& z5p{%;7Yb;SaF>=8s3i%$Cbp8+XN3dbEjP%w zt_<{q{yk0t3@4Dxm)p_%dfA{WzgzKQ?a8`?3@u6DW1DqT%E(QqL z0^D@`krUGMd&S?HxfZRB2Lrz>JuJkSeVqieVeeV3!Iv#Rc2+%idFG55*u8PnFYTIf zw|K0SHA{adpvM1pBRY#pS}X%T!sML;yxi3hw{HxP|B*nhWWbGw_JZBgXt0{Osb8$S zrDZa%rmZs@L062Rca4?+CiFtDUaMfU%JV<#pjv1W{bH`kla1BLp%7)CFOR)zsKFII z5ttlQjHghvLSm4)iWfh}=$5T@BZITov{St~fWyF0Xt5XXHC;l$$}L~wC}2>;)A*Gp zTQxR>&G}Z0^hZms-Sfj-++9V9{zuD)_T$i%*0!Q3W3Eb*VNvWDB0!muw%Q#hTvzvv z-UAZ*)~r@yBS5h3wclA#0m#D27+)(bqr_DJS3(X1%m3Sfo?dT)p4NWJawiYT4)yxc=1-iS z8?xun!?WL+!%zFfX%K>XWvenGav;}id}M6k5nie4nP8gylMi%Hm} zydC?1P<4E^s&VwrH@+7)b+tkJGD_pD_9!Rxy^-jLEMQhvDsaD>0VgVOmqm2>So%Q7 zSlh*N(Os>+=q+cJdZutN6_Bur#H3Hz&M}2&befJko)moymCr;}jEaVY9!?T2tdhQT zl|em#g?SMt1sa4xx-XP6-8XJr*lpYb)+D2W@r6G{5}uL0EMmFSDYg0QnEB z%4Kb+ulsb~W5uc{H=rXz$)3^>TtLObJ@ykFd97Z!^FQd2zK^ ziwn_~%gY^Lmn;AGm5E{b(+n2P<=&)UKXzt`TaC0gdF=lpT5YpLr_tVgD z%SfI*0#+6VZI-`g3hQvkJD%V_y#mMe{Cy?Izt8Jw7upCj=87S@6Y}^G1}~$&{P+F% z*r?-;67PF|*ShQP`*o>58Qt6F;^P49Lcx(iRH)BW%Cxev5+#_2(`usy_p)@yJEXOG z!Q$^>+q(MR{=~+Q!~zji5`>|VYDOY`+2QL3TrnwXPofG!&sR*pP;3-y$NYNfs=2io zdnK(f9-Kv=TJh%?FxjnRa_!PCDUVER2{nxY#9ED|;5xZ+yPmYs*=|bL+KKy&3RAZW zmW)niR*3oD)$G>1OZkPe9S|f8&ko@0y>Z!u^SUAaf(?feZ?L2<=h&aQ5XHZ)Vag`% ziXDHti3MwK5-^f?qC$YOcCwZ*IRnvZY&M=PzWW?CCy~YSKzh8?o6Lh-sOD!BPg^^I zAr$yagJyl&fc=(NH?X~!&I@|1!|7F&&db)0_rN=>kf-L}eLXpq{cP`m8#pXA5_4cf ztd=C&71*msEm^Vk3(`Zi8?_k@W#oqbX3QQQx9Oq*r1J!EcocQ_s+(W!V%X(8lj z?jH=+YWx!MUl{}{AngJBzRQNSKTy)(E-$_otI2Cv&QSZ|`z}6TiHz5Z*#=S@Trm6! z*~>ipR}R<#fyc8KZq#pLgVl~PB&am8^Q3NDe>Q1Pi|&2L%N!{@1{g8C3LxlADFZ27 zQ(x8IFbH&Ixs$dJa`O{eEI!k~XTpRb`bSPl;1~hMau<_mT_P2{rfUJsEsJa4Y#IT4&kwjZNie@45wEVzO(fK|pZ2oTD2OyAGWdZ>{3`YVDoDPngOK({NE`%Kzi(s>7Q6-!3hUN=qq-NQZ#5Nav_+ zjL`^4N=ON!q$r3eFd77;R`lp@hafe&k(Q7aMBc~m@4DW<$HuNbpSbUH&VA0wVvL`f z-Z4!<$UYgMH@$5wR31>fD>fo@cz#v(N(4-i|RWC{zx+BLkIX3psj$8NDI3=%I52{zObjZB!d zz|$T!LZDx&P)+N<9<@Y_bGYS>#6zN2T5Mpu>|LbH3mI}}tc^O(JbbZ~1RAKBsU-PV zRZVdd`Eb+h*O$#HLP1SbejkL;g_v}rHSl6H5(K#1hn5WerQb#B=&u9j=xAvAn} z1SU|Jt_sgTwq1fRXx%4}kGEPcbl%H7D)^ya05zB*K8?RAbI<;tRsKj*yj zLE(nnX<2tN*E6GlI^}2Pv}|0s{de4wg-30`9B^5dEwSVG(6S=xhZf3QtTssi9!p^A z^pACWI+K*`+3GVAIOX&f^{0~Ax+tcUie4hTRyR)vN|JVjla6o#)%*gj*{^LlA8XL?5Zw@uQYm@aJRM1w-kfP zn2$|JcAz`z7$!4t43=1$a9N*~0echrI7)U~+gAsD{;`p|G)^jvfJFSm`H`hxjalZ= z7yWZ$3&~&&VER<&*mfCM*0-&N3#?kZ6L$Qrj-xhpbvEB4`_BoI1T38-9za(d8VoIR zZ`m~f!xd?pR$0!Qp~qzlAnYSblLG^J-9L?2u>d>Xn6A-s;X4y}^(Sb$fXmxY$Zi0q z{t#`mfGEXi^=QK~n+6CpA28#pj-{Y=;Q;{>MqB6ezTN-b|_GE9nZdQcLPUJ&{tZXJ2qR;HFj-wci~J z;6~{qzy=4n2Y#0MDd%m;sf%C%gTl@ug%BrUs!3fEJ%65)TX>s)7CA4_j<-d7dk^`+s71Yep4+vwP4O$U8%YPC&a>xG$h+uHGDRj&+f(& z?{yb5PAKGe%7L+K?Gl_M#!f9af~@&_9mzK^7MbYSej*{K_=O7KBf(B+ zEva`Hx~OwJF2z4x3& z)%c_vaFzu=$6`$YXU7}XVZg>8vQ~_pJGZpOSfpi8K#mUdoSiU)`O@*9c|u(@V)Mi5 zsPizLcJk6>b1AVWh!^a_%kMS|cJU3-CZYmGY~QUGh8c_4zFOT#l_E%v{+FotSye)16J0sT)K;Y^Ph2{r!C?hZl-D*0BJ?s|}qrL&=+H(Y#QTF|Tl zKDHlrNym4(fx?Dpz0sHCfKlC2&zxwzoA`%+%38&gC=x+7u66z4gT1+037unR<@|^#u-vgKV3L{G2H)^dDEIMAS82L>&W>BV-~KnV#^i z*W_ylt6!JmgE(rEa(`+qF_s7UG7I+(ecZNrxGkg;D^Qx%3abOs{>(qPSacM&ICO*P zd1OfB9D^MCni=a} zv2YvPoA6Ub-`&8OAK%~0&>k@>lT5d~07N3mUL@x$$1+3nAYT%pB+~vAN?>p+zcRUm zmL7BBJ}y3jNy3&J+_Q!;DEV>+74FDie(PI6M*Fu!d-zWj`Q(rePKEZ&T|*_&H^Hef5*$`wWJ5QI|X0!=E0MnEM>b->4#k(oU zprYeAj)_2k`;VWitDNmV>OG4~(LVsU`tGO>OzaY01Vvo^WcVP|_KO3S}!pM4`tp8JZqIm=Oc}=Q9aAmc=Z~5>5!86vWvQe;}RNKsTJX zW$}ZaN33~za4MNjyIAi#SqzNHKl4(2u81tFOah$0v{K2GMZvW$NxuVBHOqIVktiet zTL0%pkrTfe8*ldO<0XycH_iqghMMx7Ja?!8oz=p7Dp(T83)K~ee4iA|0vHix{Yo&l zMixoYZ(D#5!Jv1kX20*Zca6yxVRGe#K`KPx85KJb>4lc~^TPO&4N?1q` z*TYN@22$t&$5yi318d_;!{cAuR3l0GiBei_f62t0;Io|7u&$5c0DhpO8VcTrX~RoQUF7 zIBu{F!}4tZ?fh)lU~0;od36yGUR@8635A-XTqX5MP-bCNEF(n5BzEDd`HMD~#xrz? z7_};fnkt55eiaoQ^G0eOQ=>TpYLz98FdvCwf`_P_C6IInt-yLGJJqNr6m393zB^uEOI3#aYyfkD!c&M5iU|D_=U zo1{dzkcEluxJhp{VWv%*!?>(rvF>|Ik^4^h)RetfmAyr$rW&v}ttfga&rrS8K9dW+Ga^ z4qy-S{XdW0LNbi`vYPD8CvVA;T*N^|j(urVT7o8AQ)IfFpT2GWl^AO~1pH8bfECoP z9*%sFb?<3L^r*W2uP(5F0k+Hc)g(vZt(*yf(MuceYtrg2H1PihZcURY62NIXO^UXS zvu9>Mko^%#_Vj-uD6|E=)%6Wi;Kd(o_2;Ad|)`j%pFnxWCJ$^3w7|^!Dna zBKG!B(!uhVAf4dM2xi+{fwmAnPquw-W#U-}lCacR@tRe2huY|a$)czyAO7kYnq0#vF0L*uN4TBEdQBE~lx-xnoqoJ%uUxsz>Y4h%jF=_Io!ZRQIm zVJ7) zelvpt=I|~r!ngH!-B0j-gG3u~AsyyNWJ2V-R5Dm5a~DgSw$mH-kf}0suW=Qt`Tfpe zHIHVSQyxyU%Qfz8c4d21cnIc%9V*4u+#b8nRKf~{J&IT;Oyz#!Y3W6^la%%YMTvkcB zW^k^(Upi(HmEz?a2%F`VGT@+<4k^_9%-;2`ta*O&Rl) zE_yWoeM04+|9Bg!J=QEz)8%TEb1Yo$eWQW>#rH_kBu?g$5t?zq?K2EucQ4BIN;NqV;`D%An~=2E35*yx|EjzA*>U0W8LNdCcmHmk;Y zCHEbtXE}y|KM#X4#2cPuA`l{lWy8ox!n!hOw3X4dK0NpT_5*REZB-;z=bdGp%IVDb zqjwRbKcEVFh#Q^8pL^6xaLU!;Zp8cW68|F&rvleO@`C4|16~RWS2VspQ(Yyy z@P6@AE!6T9dC*Fh;LMmS^w7HGwZ@2oQL#rv4E;$lqMW7XSy(&=M%iy?Ax*u1(ZGq6sy9_@lXA#F(>z*RZ zhxc!JgF|)re^>F08=&voZG?a5^>J-bD2LjL2YD@w-kbx9q(Rs0 zrRLicX6h0kH7D)2HeQ$2Nn>~gPRgI3-7TH=EK4V~d%oV}(A!%13Bfp})y`y_5&}D| z-;$NSVUaS^(q-Mt+&qd0>xa9tTwn5oC#bMC4ZQsC; z$~&ez-4;ZTUZ5#(gQp7SN}gZO?h-4QhtZX1eUnYmy9p6het!X;dA)Imm@sm}mC}F} zqgkATiWtzE@z5B_U`djy+*WbjU)^g}rT6sf93HmK1VE@YO@W!{whSanjdxhK}jS zU3-+#${oVm+hSG3^?$r0g~0EWyur*W6U9LyKL?m_jVQ>2BeP2Vdg-%P?1h#6Aw`B^ z7~LBcKqpVF#(m=$2�Qk$3gocQAho6wcwBsW*0bL|R5~rW)SVwv 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�K?P&2!Ea%;4j$*|IW;x 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

  1. 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 Date: Sun, 13 Oct 2019 16:04:40 +0200 Subject: [PATCH 0690/3421] Add test for trades_ohlcv --- tests/data/test_history.py | 52 +++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index ff1434347..299c79a2c 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -13,14 +13,18 @@ from pandas import DataFrame from freqtrade import OperationalException from freqtrade.configuration import TimeRange from freqtrade.data import history -from freqtrade.data.history import (download_pair_history, - _load_cached_data_for_updating, - refresh_backtest_ohlcv_data, +from freqtrade.data.history import (_load_cached_data_for_updating, + convert_trades_to_ohlcv, + download_pair_history, + download_trades_history, load_tickerdata_file, pair_data_filename, pair_trades_filename, - trim_tickerlist, refresh_backtest_trades_data, download_trades_history) + refresh_backtest_ohlcv_data, + refresh_backtest_trades_data, + trim_tickerlist) from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import file_dump_json +from freqtrade.resolvers.exchange_resolver import ExchangeResolver from freqtrade.strategy.default_strategy import DefaultStrategy from tests.conftest import (get_patched_exchange, log_has, log_has_re, patch_exchange) @@ -637,6 +641,40 @@ def test_download_trades_history(trades_history, mocker, default_conf, testdatad assert log_has_re('Failed to download historic trades for pair: "ETH/BTC".*', caplog) -def convert_trades_to_ohlcv(): - # TODO: Write this test - pass +def test_convert_trades_to_ohlcv(mocker, default_conf, testdatadir, caplog): + pair = 'XRP/ETH' + file1 = testdatadir / 'XRP_ETH-1m.json' + file5 = testdatadir / 'XRP_ETH-5m.json' + # Compare downloaded dataset with converted dataset + dfbak_1m = history.load_pair_history(datadir=testdatadir, + ticker_interval="1m", + pair=pair) + dfbak_5m = history.load_pair_history(datadir=testdatadir, + ticker_interval="5m", + pair=pair) + + _backup_file(file1) + _backup_file(file5) + + exchange = ExchangeResolver('Bittrex', default_conf).exchange + tr = TimeRange.parse_timerange('20191011-20191012') + # mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + # mocker.patch.object(Path, "unlink", MagicMock()) + + convert_trades_to_ohlcv(exchange, [pair], timeframes=['1m', '5m'], + datadir=testdatadir, timerange=tr, erase=True) + + # assert log_has("Deleting existing data for XRP/ETH, interval 1m.", caplog) + # Load new data + df_1m = history.load_pair_history(datadir=testdatadir, + ticker_interval="1m", + pair=pair) + df_5m = history.load_pair_history(datadir=testdatadir, + ticker_interval="5m", + pair=pair) + + assert df_1m.equals(dfbak_1m) + assert df_5m.equals(dfbak_5m) + + _clean_test_file(file1) + _clean_test_file(file5) From 3e4617be37b9df159c0c66d60066110b496bc90b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 13 Oct 2019 19:21:27 +0200 Subject: [PATCH 0691/3421] add pandas-based converter-functions --- freqtrade/data/converter.py | 20 ++++++++++++++++++++ freqtrade/data/history.py | 6 +++--- tests/data/test_history.py | 11 ++++------- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index b530b3bce..63a6c98df 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -114,3 +114,23 @@ def order_book_to_dataframe(bids: list, asks: list) -> DataFrame: keys=['b_sum', 'b_size', 'bids', 'asks', 'a_size', 'a_sum']) # logger.info('order book %s', frame ) return frame + + +def trades_to_ohlcv(trades, timeframe): + """ + Converts trades list to ohlcv list + """ + from freqtrade.exchange import timeframe_to_minutes + ticker_minutes = timeframe_to_minutes(timeframe) + df = pd.DataFrame(trades) + df['datetime'] = pd.to_datetime(df['datetime']) + + df = df.set_index('datetime') + df_new = df['price'].resample(f'{ticker_minutes}min').ohlc() + + df_new['volume'] = df['amount'].resample(f'{ticker_minutes}min').sum() + df_new['date'] = df_new.index.astype("int64") // 10 ** 6 + # Drop 0 volume columns + df_new = df_new.dropna() + columns = ["date", "open", "high", "low", "close", "volume"] + return list(zip(*[df_new[x].values.tolist() for x in columns])) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index a32a1b9aa..e594af430 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -17,7 +17,7 @@ from pandas import DataFrame from freqtrade import OperationalException, misc from freqtrade.configuration import TimeRange -from freqtrade.data.converter import parse_ticker_dataframe +from freqtrade.data.converter import parse_ticker_dataframe, trades_to_ohlcv from freqtrade.exchange import Exchange, timeframe_to_minutes logger = logging.getLogger(__name__) @@ -398,7 +398,7 @@ def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], datadir: return pairs_not_available -def convert_trades_to_ohlcv(exchange: Exchange, pairs: List[str], timeframes: List[str], +def convert_trades_to_ohlcv(pairs: List[str], timeframes: List[str], datadir: Path, timerange: TimeRange, erase=False) -> None: """ Convert stored trades data to ohlcv data @@ -410,7 +410,7 @@ def convert_trades_to_ohlcv(exchange: Exchange, pairs: List[str], timeframes: Li if erase and ohlcv_file.exists(): logger.info(f'Deleting existing data for pair {pair}, interval {timeframe}.') ohlcv_file.unlink() - ohlcv = exchange.build_ohlcv(trades, timeframe) + ohlcv = trades_to_ohlcv(trades, timeframe) # Store ohlcv store_tickerdata_file(datadir, pair, timeframe, data=ohlcv) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 299c79a2c..d653428e9 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -24,7 +24,6 @@ from freqtrade.data.history import (_load_cached_data_for_updating, trim_tickerlist) from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import file_dump_json -from freqtrade.resolvers.exchange_resolver import ExchangeResolver from freqtrade.strategy.default_strategy import DefaultStrategy from tests.conftest import (get_patched_exchange, log_has, log_has_re, patch_exchange) @@ -642,6 +641,7 @@ def test_download_trades_history(trades_history, mocker, default_conf, testdatad def test_convert_trades_to_ohlcv(mocker, default_conf, testdatadir, caplog): + pair = 'XRP/ETH' file1 = testdatadir / 'XRP_ETH-1m.json' file5 = testdatadir / 'XRP_ETH-5m.json' @@ -653,18 +653,15 @@ def test_convert_trades_to_ohlcv(mocker, default_conf, testdatadir, caplog): ticker_interval="5m", pair=pair) - _backup_file(file1) + _backup_file(file1, copy_file=True) _backup_file(file5) - exchange = ExchangeResolver('Bittrex', default_conf).exchange tr = TimeRange.parse_timerange('20191011-20191012') - # mocker.patch.object(Path, "exists", MagicMock(return_value=True)) - # mocker.patch.object(Path, "unlink", MagicMock()) - convert_trades_to_ohlcv(exchange, [pair], timeframes=['1m', '5m'], + convert_trades_to_ohlcv([pair], timeframes=['1m', '5m'], datadir=testdatadir, timerange=tr, erase=True) - # assert log_has("Deleting existing data for XRP/ETH, interval 1m.", caplog) + assert log_has("Deleting existing data for pair XRP/ETH, interval 1m.", caplog) # Load new data df_1m = history.load_pair_history(datadir=testdatadir, ticker_interval="1m", From 023eb19615f55abf1e021518d8af1b24768287e0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 13 Oct 2019 19:35:33 +0200 Subject: [PATCH 0692/3421] Add documentation for --dl-trades --- docs/data-download.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/docs/data-download.md b/docs/data-download.md index 244acb153..b091f0069 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -38,7 +38,7 @@ Mixing different stake-currencies is allowed for this file, since it's only used ] ``` -### start download +### Start download Then run: @@ -57,6 +57,32 @@ This will download ticker data for all the currency pairs you defined in `pairs. - Use `--timeframes` to specify which tickers to download. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute tickers. - To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options. +### Trades (tick) data + +By default, download-data downloads Candles (OHLCV) data. Some exchanges also provide historic trade-data via their API. +This data can be useful if you need many different timeframes, since it is only downloaded once, and then resampled locally to the desired timeframes. + +Since this data is large by default, the files use gzip by default. They are stored in your data-directory with the naming convention of `-trades.json.gz` (`ETH_BTC_trades.json.gz`). Incremental mode is supported, so downloading the data once per week with `--days 8` will create an incremental data-repository. + +To use this mode, simply add `--dl-trades` to your call. This will swap the download-method to trades, and resamples the data locally. + +Example call: + +```bash +freqtrade download-data --exchange binance --pairs XRP/ETH ETH/BTC --days 20 --dl-trades +``` + +!!! Note + While this method uses async calls, it will be slow, since it requires the result of the previous call to generate the next request to the exchange. + +!!! Warning + This datatype is not available during trading. It probably will never be since all exchanges tested don't provide this data in real time, but with a delay of a few 100 candles. + +### Historic Kraken data + +The Kraken API does only provide 720 historic candles, which is sufficient for regular trading operations, but a problem for backtesting. +To download data for the Kraken exchange, using `--dl-trades` is mandatory, otherwise the bot will download the same 720 candles over and over, and you'll not have enough backtest data. + ## Next step Great, you now have backtest data downloaded, so you can now start [backtesting](backtesting.md) your strategy. From 13e80e449cc9d21ac1c179d2176729188d297c36 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 14 Oct 2019 06:19:59 +0200 Subject: [PATCH 0693/3421] cleanup and better docstring --- freqtrade/data/converter.py | 10 ++++++---- freqtrade/data/history.py | 1 - freqtrade/exchange/exchange.py | 16 ---------------- freqtrade/utils.py | 2 +- 4 files changed, 7 insertions(+), 22 deletions(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 63a6c98df..1ef224978 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -116,21 +116,23 @@ def order_book_to_dataframe(bids: list, asks: list) -> DataFrame: return frame -def trades_to_ohlcv(trades, timeframe): +def trades_to_ohlcv(trades: list, timeframe: str) -> list: """ Converts trades list to ohlcv list + :param trades: List of trades, as returned by ccxt.fetch_trades. + :param timeframe: Ticker timeframe to resample data to + :return: ohlcv timeframe as list (as returned by ccxt.fetch_ohlcv) """ from freqtrade.exchange import timeframe_to_minutes ticker_minutes = timeframe_to_minutes(timeframe) df = pd.DataFrame(trades) df['datetime'] = pd.to_datetime(df['datetime']) - df = df.set_index('datetime') - df_new = df['price'].resample(f'{ticker_minutes}min').ohlc() + df_new = df['price'].resample(f'{ticker_minutes}min').ohlc() df_new['volume'] = df['amount'].resample(f'{ticker_minutes}min').sum() df_new['date'] = df_new.index.astype("int64") // 10 ** 6 - # Drop 0 volume columns + # Drop 0 volume rows df_new = df_new.dropna() columns = ["date", "open", "high", "low", "close", "volume"] return list(zip(*[df_new[x].values.tolist() for x in columns])) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index e594af430..fd3aee2a9 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -93,7 +93,6 @@ def load_trades_file(datadir: Path, pair: str, if not tradesdata: return [] - # TODO: trim trades based on timerange... ? return tradesdata diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index fed903a4a..86078ae05 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -988,22 +988,6 @@ class Exchange: except ccxt.BaseError as e: raise OperationalException(e) from e - def build_ohlcv(self, trades: List[Dict], timeframe: str, since: int = None, - limit: int = None) -> List: - """ - Build ohlcv data from trade list. - trade-list has to be in the ccxt format, which is a list of dicts containing at least: - * timestamp - * price - * amount - :param trades: List of Dicts - :param timeframe: timeframe to convert to (e.g. "5m") - :param since: start at a specific data, as oposed to the trades-list start date - :param limit: Limit amount of candles - :return: ohlcv data (as returned by ccxt.fetch_ohlcv) - """ - return self._api.build_ohlcv(trades, timeframe, since, limit) - def is_exchange_bad(exchange_name: str) -> bool: return exchange_name in BAD_EXCHANGES diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 48734883c..e77b76208 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -97,7 +97,7 @@ def start_download_data(args: Dict[str, Any]) -> None: # Convert downloaded trade data to different timeframes convert_trades_to_ohlcv( - exchange, pairs=config["pairs"], timeframes=config["timeframes"], + pairs=config["pairs"], timeframes=config["timeframes"], datadir=Path(config['datadir']), timerange=timerange, erase=config.get("erase")) else: pairs_not_available = refresh_backtest_ohlcv_data( From 76ad5bea0ea9f098dfc68be03a4b60614b58fb1e Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 14 Oct 2019 11:36:42 +0200 Subject: [PATCH 0694/3421] Load correct exchange class closes #2371 --- freqtrade/exchange/__init__.py | 2 +- freqtrade/exchange/exchange.py | 5 +++++ freqtrade/resolvers/exchange_resolver.py | 4 +++- tests/exchange/test_exchange.py | 6 ++++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index 29971c897..1b3e94951 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -1,4 +1,4 @@ -from freqtrade.exchange.exchange import Exchange # noqa: F401 +from freqtrade.exchange.exchange import Exchange, MAP_EXCHANGE_CHILDCLASS # noqa: F401 from freqtrade.exchange.exchange import (get_exchange_bad_reason, # noqa: F401 is_exchange_bad, is_exchange_known_ccxt, diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index df7e5e2b4..859240695 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -102,6 +102,11 @@ BAD_EXCHANGES = { ], "Does not provide timeframes. ccxt fetchOHLCV: emulated"), } +MAP_EXCHANGE_CHILDCLASS = { + 'binanceus': 'binance', + 'binanceje': 'binance', +} + def retrier_async(f): async def wrapper(*args, **kwargs): diff --git a/freqtrade/resolvers/exchange_resolver.py b/freqtrade/resolvers/exchange_resolver.py index 6fb12a65f..8ae40d971 100644 --- a/freqtrade/resolvers/exchange_resolver.py +++ b/freqtrade/resolvers/exchange_resolver.py @@ -3,7 +3,7 @@ This module loads custom exchanges """ import logging -from freqtrade.exchange import Exchange +from freqtrade.exchange import Exchange, MAP_EXCHANGE_CHILDCLASS import freqtrade.exchange as exchanges from freqtrade.resolvers import IResolver @@ -22,6 +22,8 @@ class ExchangeResolver(IResolver): Load the custom class from config parameter :param config: configuration dictionary """ + # Map exchange name to avoid duplicate classes for identical exchanges + exchange_name = MAP_EXCHANGE_CHILDCLASS.get(exchange_name, exchange_name) exchange_name = exchange_name.title() try: self.exchange = self._load_exchange(exchange_name, kwargs={'config': config}) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index bf6025322..72b536afa 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -142,6 +142,12 @@ def test_exchange_resolver(default_conf, mocker, caplog): assert not log_has_re(r"No .* specific subclass found. Using the generic class instead.", caplog) + # Test mapping + exchange = ExchangeResolver('binanceus', default_conf).exchange + assert isinstance(exchange, Exchange) + assert isinstance(exchange, Binance) + assert not isinstance(exchange, Kraken) + def test_validate_order_time_in_force(default_conf, mocker, caplog): caplog.set_level(logging.INFO) From 6e27c47dee53d71149c875b43f37fd2c95cf1788 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 14 Oct 2019 13:32:39 +0300 Subject: [PATCH 0695/3421] Handle properly exchanges with no active flag set for markets --- freqtrade/exchange/__init__.py | 2 ++ freqtrade/exchange/exchange.py | 26 ++++++++++++++++++-- freqtrade/utils.py | 45 +++++++++++++++++++--------------- 3 files changed, 51 insertions(+), 22 deletions(-) diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index 29971c897..470091181 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -10,5 +10,7 @@ from freqtrade.exchange.exchange import (timeframe_to_seconds, # noqa: F401 timeframe_to_msecs, timeframe_to_next_date, timeframe_to_prev_date) +from freqtrade.exchange.exchange import (market_is_active, # noqa: F401 + market_is_pair) from freqtrade.exchange.kraken import Kraken # noqa: F401 from freqtrade.exchange.binance import Binance # noqa: F401 diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index a312d6c62..185c9dc3d 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -289,14 +289,17 @@ class Exchange: TODO: consider moving it to the Dataprovider """ markets = self.markets + if not markets: + raise OperationalException("Markets were not loaded.") + if base_currency: markets = {k: v for k, v in markets.items() if v['base'] == base_currency} if quote_currency: markets = {k: v for k, v in markets.items() if v['quote'] == quote_currency} if pairs_only: - markets = {k: v for k, v in markets.items() if '/' in v['symbol']} + markets = {k: v for k, v in markets.items() if market_is_pair(v)} if active_only: - markets = {k: v for k, v in markets.items() if v['active']} + markets = {k: v for k, v in markets.items() if market_is_active(v)} return markets def klines(self, pair_interval: Tuple[str, str], copy=True) -> DataFrame: @@ -932,3 +935,22 @@ def timeframe_to_next_date(timeframe: str, date: datetime = None) -> datetime: new_timestamp = ccxt.Exchange.round_timeframe(timeframe, date.timestamp() * 1000, ROUND_UP) // 1000 return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) + + +def market_is_pair(market): + """ + Return True if the market is a pair. + Currently pairs are defined as markets containing '/' character in its symbol. + """ + return '/' in market.get('symbol', '') + + +def market_is_active(market): + """ + Return True if the market is active. + """ + # "It's active, if the active flag isn't explicitly set to false. If it's missing or + # true then it's true. If it's undefined, then it's most likely true, but not 100% )" + # See https://github.com/ccxt/ccxt/issues/4874, + # https://github.com/ccxt/ccxt/issues/4075#issuecomment-434760520 + return market.get('active', True) is not False diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 3f25778a4..67a981461 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -10,7 +10,7 @@ from freqtrade import OperationalException from freqtrade.configuration import Configuration, TimeRange from freqtrade.configuration.directory_operations import create_userdata_dir from freqtrade.data.history import refresh_backtest_ohlcv_data -from freqtrade.exchange import available_exchanges, ccxt_exchanges +from freqtrade.exchange import (available_exchanges, ccxt_exchanges, market_is_active) from freqtrade.misc import plural from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode @@ -137,25 +137,30 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: base_currency = args.get('base_currency', '') quote_currency = args.get('quote_currency', '') - pairs = exchange.get_markets(base_currency=base_currency, - quote_currency=quote_currency, - pairs_only=pairs_only, - active_only=active_only) + try: + pairs = exchange.get_markets(base_currency=base_currency, + quote_currency=quote_currency, + pairs_only=pairs_only, + active_only=active_only) + except Exception as e: + raise OperationalException(f"Cannot get markets. Reason: {e}") from e - if args.get('print_list', False): - # print data as a list - print(f"Exchange {exchange.name} has {len(pairs)} " + - (plural(len(pairs), "pair" if pairs_only else "market")) + - (f" with {base_currency} as base currency" if base_currency else "") + - (" and" if base_currency and quote_currency else "") + - (f" with {quote_currency} as quote currency" if quote_currency else "") + - (f": {sorted(pairs.keys())}" if len(pairs) else "") + ".") else: - # print data as a table - tabular_data = [] - for _, v in pairs.items(): - tabular_data.append([v['id'], v['symbol'], v['base'], v['quote'], - "Yes" if v['active'] else "No"]) + if args.get('print_list', False): + # print data as a list + print(f"Exchange {exchange.name} has {len(pairs)} " + + ("active " if active_only else "") + + (plural(len(pairs), "pair" if pairs_only else "market")) + + (f" with {base_currency} as base currency" if base_currency else "") + + (" and" if base_currency and quote_currency else "") + + (f" with {quote_currency} as quote currency" if quote_currency else "") + + (f": {sorted(pairs.keys())}" if len(pairs) else "") + ".") + else: + # print data as a table + tabular_data = [] + for _, v in pairs.items(): + tabular_data.append([v['id'], v['symbol'], v['base'], v['quote'], + "Yes" if market_is_active(v) else "No"]) - headers = ['Id', 'Symbol', 'Base', 'Quote', 'Active'] - print(tabulate(tabular_data, headers=headers, tablefmt='pipe')) + headers = ['Id', 'Symbol', 'Base', 'Quote', 'Active'] + print(tabulate(tabular_data, headers=headers, tablefmt='pipe')) From 411173463799f7aac070cefad42080fe954d0d86 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 14 Oct 2019 13:48:33 +0300 Subject: [PATCH 0696/3421] Add 'Is pair' in the list-markets tabular output --- freqtrade/utils.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 67a981461..6c36627f1 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -10,7 +10,8 @@ from freqtrade import OperationalException from freqtrade.configuration import Configuration, TimeRange from freqtrade.configuration.directory_operations import create_userdata_dir from freqtrade.data.history import refresh_backtest_ohlcv_data -from freqtrade.exchange import (available_exchanges, ccxt_exchanges, market_is_active) +from freqtrade.exchange import (available_exchanges, ccxt_exchanges, market_is_active, + market_is_pair) from freqtrade.misc import plural from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode @@ -157,10 +158,12 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: (f": {sorted(pairs.keys())}" if len(pairs) else "") + ".") else: # print data as a table + headers = ['Id', 'Symbol', 'Base', 'Quote', 'Active'] + if not pairs_only: + headers.append('Is pair') tabular_data = [] for _, v in pairs.items(): tabular_data.append([v['id'], v['symbol'], v['base'], v['quote'], - "Yes" if market_is_active(v) else "No"]) - - headers = ['Id', 'Symbol', 'Base', 'Quote', 'Active'] + "Yes" if market_is_active(v) else "No", + "Yes" if market_is_pair(v) else "No"]) print(tabulate(tabular_data, headers=headers, tablefmt='pipe')) From b2682bcbf52738ac620cc36b27724fb40a4f6213 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2019 14:40:20 +0000 Subject: [PATCH 0697/3421] Bump ccxt from 1.18.1225 to 1.18.1260 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1225 to 1.18.1260. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.18.1225...1.18.1260) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 872ebec62..74a7694f2 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.1225 +ccxt==1.18.1260 SQLAlchemy==1.3.9 python-telegram-bot==12.1.1 arrow==0.15.2 From 4c4134a27290f8c353ebbee4c0367b85437f24ee Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2019 14:41:00 +0000 Subject: [PATCH 0698/3421] Bump jsonschema from 3.0.2 to 3.1.1 Bumps [jsonschema](https://github.com/Julian/jsonschema) from 3.0.2 to 3.1.1. - [Release notes](https://github.com/Julian/jsonschema/releases) - [Changelog](https://github.com/Julian/jsonschema/blob/master/CHANGELOG.rst) - [Commits](https://github.com/Julian/jsonschema/compare/v3.0.2...v3.1.1) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 872ebec62..ae0a6b4ce 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -8,7 +8,7 @@ cachetools==3.1.1 requests==2.22.0 urllib3==1.25.6 wrapt==1.11.2 -jsonschema==3.0.2 +jsonschema==3.1.1 TA-Lib==0.4.17 tabulate==0.8.5 coinmarketcap==5.0.3 From f5d87418327fdbd2f60f16ec19dff4c6dc65a0b3 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2019 15:19:50 +0000 Subject: [PATCH 0699/3421] Bump sqlalchemy from 1.3.9 to 1.3.10 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.9 to 1.3.10. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index f85bf8d7a..c2c5317dc 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.18.1260 -SQLAlchemy==1.3.9 +SQLAlchemy==1.3.10 python-telegram-bot==12.1.1 arrow==0.15.2 cachetools==3.1.1 From 89283ef486ad48a03f0ee694a1784be1b279702b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 14 Oct 2019 19:42:28 +0200 Subject: [PATCH 0700/3421] Rename --custom-hyperopt to --hyperopt --- .travis.yml | 2 +- docs/bot-usage.md | 4 ++-- docs/hyperopt.md | 2 +- freqtrade/configuration/cli_options.py | 2 +- freqtrade/resolvers/hyperopt_resolver.py | 2 +- tests/optimize/test_hyperopt.py | 14 +++++++------- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index a45334dd6..14466d2c4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,7 +32,7 @@ jobs: name: backtest - script: - cp config.json.example config.json - - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy DefaultStrategy --customhyperopt DefaultHyperOpts + - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy DefaultStrategy --hyperopt DefaultHyperOpts name: hyperopt - script: flake8 name: flake8 diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 8f7e0bbcf..cf59bc11f 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -266,7 +266,7 @@ usage: freqtrade hyperopt [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [-i TICKER_INTERVAL] [--timerange TIMERANGE] [--max_open_trades INT] [--stake_amount STAKE_AMOUNT] - [--customhyperopt NAME] [--hyperopt-path PATH] + [--hyperopt NAME] [--hyperopt-path PATH] [--eps] [-e INT] [--spaces {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...]] [--dmmp] [--print-all] [--no-color] [--print-json] @@ -284,7 +284,7 @@ optional arguments: Specify max_open_trades to use. --stake_amount STAKE_AMOUNT Specify stake_amount. - --customhyperopt NAME + --hyperopt NAME Specify hyperopt class name which will be used by the bot. --hyperopt-path PATH Specify additional lookup path for Hyperopts and diff --git a/docs/hyperopt.md b/docs/hyperopt.md index e6f753072..66c250eb7 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -239,7 +239,7 @@ Because hyperopt tries a lot of combinations to find the best parameters it will We strongly recommend to use `screen` or `tmux` to prevent any connection loss. ```bash -freqtrade hyperopt --config config.json --customhyperopt -e 5000 --spaces all +freqtrade hyperopt --config config.json --hyperopt -e 5000 --spaces all ``` Use `` as the name of the custom hyperopt used. diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index ee0d94023..3a4629ada 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -152,7 +152,7 @@ AVAILABLE_CLI_OPTIONS = { ), # Hyperopt "hyperopt": Arg( - '--customhyperopt', + '--hyperopt', help='Specify hyperopt class name which will be used by the bot.', metavar='NAME', ), diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 15080cda5..a51935500 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -28,7 +28,7 @@ class HyperOptResolver(IResolver): :param config: configuration dictionary """ if not config.get('hyperopt'): - raise OperationalException("No Hyperopt set. Please use `--customhyperopt` to specify " + raise OperationalException("No Hyperopt set. Please use `--hyperopt` to specify " "the Hyperopt class to use.") hyperopt_name = config['hyperopt'] diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index e1ee649c8..1c89bb37c 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -73,7 +73,7 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca args = [ 'hyperopt', '--config', 'config.json', - '--customhyperopt', 'DefaultHyperOpts', + '--hyperopt', 'DefaultHyperOpts', ] config = setup_configuration(get_args(args), RunMode.HYPEROPT) @@ -105,7 +105,7 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo args = [ 'hyperopt', '--config', 'config.json', - '--customhyperopt', 'DefaultHyperOpts', + '--hyperopt', 'DefaultHyperOpts', '--datadir', '/foo/bar', '--ticker-interval', '1m', '--timerange', ':100', @@ -181,7 +181,7 @@ def test_hyperoptresolver_wrongname(mocker, default_conf, caplog) -> None: def test_hyperoptresolver_noname(default_conf): default_conf['hyperopt'] = '' with pytest.raises(OperationalException, - match="No Hyperopt set. Please use `--customhyperopt` to specify " + match="No Hyperopt set. Please use `--hyperopt` to specify " "the Hyperopt class to use."): HyperOptResolver(default_conf) @@ -214,7 +214,7 @@ def test_start_not_installed(mocker, default_conf, caplog, import_fails) -> None args = [ 'hyperopt', '--config', 'config.json', - '--customhyperopt', 'DefaultHyperOpts', + '--hyperopt', 'DefaultHyperOpts', '--epochs', '5' ] args = get_args(args) @@ -232,7 +232,7 @@ def test_start(mocker, default_conf, caplog) -> None: args = [ 'hyperopt', '--config', 'config.json', - '--customhyperopt', 'DefaultHyperOpts', + '--hyperopt', 'DefaultHyperOpts', '--epochs', '5' ] args = get_args(args) @@ -255,7 +255,7 @@ def test_start_no_data(mocker, default_conf, caplog) -> None: args = [ 'hyperopt', '--config', 'config.json', - '--customhyperopt', 'DefaultHyperOpts', + '--hyperopt', 'DefaultHyperOpts', '--epochs', '5' ] args = get_args(args) @@ -273,7 +273,7 @@ def test_start_filelock(mocker, default_conf, caplog) -> None: args = [ 'hyperopt', '--config', 'config.json', - '--customhyperopt', 'DefaultHyperOpts', + '--hyperopt', 'DefaultHyperOpts', '--epochs', '5' ] args = get_args(args) From 790e6146f504f6a3f1ae35a0630701ae4afe81b2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 14 Oct 2019 20:13:34 +0200 Subject: [PATCH 0701/3421] Use crossed() in sample strategy --- docs/strategy-customization.md | 17 +++++++++++------ user_data/strategies/sample_strategy.py | 10 +++++----- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index adcdf0208..39a36c469 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -138,15 +138,19 @@ def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ dataframe.loc[ ( - (dataframe['adx'] > 30) & - (dataframe['tema'] <= dataframe['bb_middleband']) & - (dataframe['tema'] > dataframe['tema'].shift(1)) + (qtpylib.crossed_above(dataframe['adx'], 30)) & # Signal: ADX crosses baove 30 + (dataframe['tema'] <= dataframe['bb_middleband']) & # Guard + (dataframe['tema'] > dataframe['tema'].shift(1)) & # Guard + (dataframe['volume'] > 0) # Make sure Volume is not 0 ), 'buy'] = 1 return dataframe ``` +!!! Note + Buying requires sellers to buy from - therefore volume needs to be > 0 (`dataframe['volume'] > 0`) to make sure backtesting does not buy/sell in no-activity periods. + ### Sell signal rules Edit the method `populate_sell_trend()` into your strategy file to update your sell strategy. @@ -168,9 +172,10 @@ def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame """ dataframe.loc[ ( - (dataframe['adx'] > 70) & - (dataframe['tema'] > dataframe['bb_middleband']) & - (dataframe['tema'] < dataframe['tema'].shift(1)) + (qtpylib.crossed_above(dataframe['adx'], 70)) & # Signal: ADX crosses above 30 + (dataframe['tema'] > dataframe['bb_middleband']) & # Guard + (dataframe['tema'] < dataframe['tema'].shift(1)) & #Guard + (dataframe['volume'] > 0) # Make sure Volume is not 0 ), 'sell'] = 1 return dataframe diff --git a/user_data/strategies/sample_strategy.py b/user_data/strategies/sample_strategy.py index 623addb1e..84ff9ec2c 100644 --- a/user_data/strategies/sample_strategy.py +++ b/user_data/strategies/sample_strategy.py @@ -277,9 +277,9 @@ class SampleStrategy(IStrategy): """ dataframe.loc[ ( - (dataframe['adx'] > 30) & - (dataframe['tema'] <= dataframe['bb_middleband']) & - (dataframe['tema'] > dataframe['tema'].shift(1)) & + (qtpylib.crossed_above(dataframe['adx'], 30)) & # Signal: ADX crosses above 30 + (dataframe['tema'] <= dataframe['bb_middleband']) & # Guard: tema below BB middle + (dataframe['tema'] > dataframe['tema'].shift(1)) & # Guard: tema is raising (dataframe['volume'] > 0) # Make sure Volume is not 0 ), 'buy'] = 1 @@ -295,9 +295,9 @@ class SampleStrategy(IStrategy): """ dataframe.loc[ ( - (dataframe['adx'] > 70) & + (qtpylib.crossed_above(dataframe['adx'], 70)) & # Signal: - ADX crosses above 70 (dataframe['tema'] > dataframe['bb_middleband']) & - (dataframe['tema'] < dataframe['tema'].shift(1)) & + (dataframe['tema'] < dataframe['tema'].shift(1)) & # Guard: tema is raising (dataframe['volume'] > 0) # Make sure Volume is not 0 ), 'sell'] = 1 From a320d4ccbae737b7103fa788644d19d395c42fb7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 14 Oct 2019 20:42:08 +0200 Subject: [PATCH 0702/3421] Don't sell with 0 profit in samplestrategy --- user_data/strategies/sample_strategy.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/user_data/strategies/sample_strategy.py b/user_data/strategies/sample_strategy.py index 84ff9ec2c..6d544c667 100644 --- a/user_data/strategies/sample_strategy.py +++ b/user_data/strategies/sample_strategy.py @@ -34,9 +34,8 @@ class SampleStrategy(IStrategy): # Minimal ROI designed for the strategy. # This attribute will be overridden if the config file contains "minimal_roi". minimal_roi = { - "40": 0.0, - "30": 0.01, - "20": 0.02, + "60": 0.01, + "30": 0.02, "0": 0.04 } From a5c83b66df0274e126be59d997d5aae210589159 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 15 Oct 2019 06:51:03 +0200 Subject: [PATCH 0703/3421] Add --dry-run to trade command --- docs/bot-usage.md | 5 +++-- freqtrade/configuration/arguments.py | 2 +- freqtrade/configuration/cli_options.py | 5 +++++ freqtrade/configuration/configuration.py | 4 ++++ tests/test_configuration.py | 17 +++++++++++++++++ 5 files changed, 30 insertions(+), 3 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 8f7e0bbcf..a258ee7f5 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -36,7 +36,7 @@ optional arguments: ``` usage: freqtrade trade [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME] [--strategy-path PATH] - [--db-url PATH] [--sd-notify] + [--db-url PATH] [--sd-notify] [--dry-run] optional arguments: -h, --help show this help message and exit @@ -44,6 +44,8 @@ optional arguments: deployments (default: `sqlite:///tradesv3.sqlite` for Live Run mode, `sqlite://` for Dry Run). --sd-notify Notify systemd service manager. + --dry-run Enforce dry-run for trading, removes API keys and + simulates trades. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). @@ -63,7 +65,6 @@ Strategy arguments: Specify strategy class name which will be used by the bot. --strategy-path PATH Specify additional strategy lookup path. - ``` ### How to specify which configuration file be used? diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index a8d4b48f1..5735599df 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -12,7 +12,7 @@ ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir", "user_dat ARGS_STRATEGY = ["strategy", "strategy_path"] -ARGS_TRADE = ["db_url", "sd_notify"] +ARGS_TRADE = ["db_url", "sd_notify", "dry_run"] ARGS_COMMON_OPTIMIZE = ["ticker_interval", "timerange", "max_open_trades", "stake_amount"] diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index ee0d94023..400d08e37 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -86,6 +86,11 @@ AVAILABLE_CLI_OPTIONS = { help='Notify systemd service manager.', action='store_true', ), + "dry_run": Arg( + '--dry-run', + help='Enforce dry-run for trading, removes API keys and simulates trades.', + action='store_true', + ), # Optimize common "ticker_interval": Arg( '-i', '--ticker-interval', diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index ac27a5c99..7e992d6dd 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -162,6 +162,10 @@ class Configuration: if 'sd_notify' in self.args and self.args["sd_notify"]: config['internals'].update({'sd_notify': True}) + self._args_to_config(config, argname='dry_run', + logstring='Parameter --dry-run detected, ' + 'overriding dry_run to: {} ...') + def _process_datadir_options(self, config: Dict[str, Any]) -> None: """ Extract information for sys.argv and load directory configurations diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 333a8992a..67c97a0bf 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -304,6 +304,23 @@ def test_load_config_with_params(default_conf, mocker) -> None: assert validated_conf.get('db_url') == DEFAULT_DB_DRYRUN_URL +@pytest.mark.parametrize("config_value,expected,arglist", [ + (True, True, ['trade', '--dry-run']), # Leave config untouched + (False, True, ['trade', '--dry-run']), # Override config untouched + (False, False, ['trade']), # Leave config untouched + (True, True, ['trade']), # Leave config untouched +]) +def test_load_dry_run(default_conf, mocker, config_value, expected, arglist) -> None: + + default_conf['dry_run'] = config_value + patched_configuration_load_config_file(mocker, default_conf) + + configuration = Configuration(Arguments(arglist).get_parsed_arg()) + validated_conf = configuration.load_config() + + assert validated_conf.get('dry_run') is expected + + def test_load_custom_strategy(default_conf, mocker) -> None: default_conf.update({ 'strategy': 'CustomStrategy', From 6fb96183c08342343604cb5c93296f812a4849b1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 15 Oct 2019 12:26:06 +0200 Subject: [PATCH 0704/3421] Reword help string --- docs/bot-usage.md | 4 ++-- freqtrade/configuration/cli_options.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index a258ee7f5..9af960858 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -44,8 +44,8 @@ optional arguments: deployments (default: `sqlite:///tradesv3.sqlite` for Live Run mode, `sqlite://` for Dry Run). --sd-notify Notify systemd service manager. - --dry-run Enforce dry-run for trading, removes API keys and - simulates trades. + --dry-run Enforce dry-run for trading (removes Exchange secrets + and simulates trades). Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 400d08e37..b3dcd52c2 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -88,7 +88,7 @@ AVAILABLE_CLI_OPTIONS = { ), "dry_run": Arg( '--dry-run', - help='Enforce dry-run for trading, removes API keys and simulates trades.', + help='Enforce dry-run for trading (removes Exchange secrets and simulates trades).', action='store_true', ), # Optimize common From ace70510f38902dd47f2a62484700fd08542207f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 15 Oct 2019 14:50:51 +0200 Subject: [PATCH 0705/3421] Wording fixes --- docs/strategy-customization.md | 8 ++++---- user_data/strategies/sample_strategy.py | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 39a36c469..40da697e6 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -138,7 +138,7 @@ def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ dataframe.loc[ ( - (qtpylib.crossed_above(dataframe['adx'], 30)) & # Signal: ADX crosses baove 30 + (qtpylib.crossed_above(dataframe['adx'], 30)) & # Signal: ADX crosses above 30 (dataframe['tema'] <= dataframe['bb_middleband']) & # Guard (dataframe['tema'] > dataframe['tema'].shift(1)) & # Guard (dataframe['volume'] > 0) # Make sure Volume is not 0 @@ -149,7 +149,7 @@ def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: ``` !!! Note - Buying requires sellers to buy from - therefore volume needs to be > 0 (`dataframe['volume'] > 0`) to make sure backtesting does not buy/sell in no-activity periods. + Buying requires sellers to buy from - therefore volume needs to be > 0 (`dataframe['volume'] > 0`) to make sure that the does not buy/sell in no-activity periods. ### Sell signal rules @@ -172,9 +172,9 @@ def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame """ dataframe.loc[ ( - (qtpylib.crossed_above(dataframe['adx'], 70)) & # Signal: ADX crosses above 30 + (qtpylib.crossed_above(dataframe['adx'], 70)) & # Signal: ADX crosses above 70 (dataframe['tema'] > dataframe['bb_middleband']) & # Guard - (dataframe['tema'] < dataframe['tema'].shift(1)) & #Guard + (dataframe['tema'] < dataframe['tema'].shift(1)) & # Guard (dataframe['volume'] > 0) # Make sure Volume is not 0 ), 'sell'] = 1 diff --git a/user_data/strategies/sample_strategy.py b/user_data/strategies/sample_strategy.py index 6d544c667..61f4fc15f 100644 --- a/user_data/strategies/sample_strategy.py +++ b/user_data/strategies/sample_strategy.py @@ -294,9 +294,9 @@ class SampleStrategy(IStrategy): """ dataframe.loc[ ( - (qtpylib.crossed_above(dataframe['adx'], 70)) & # Signal: - ADX crosses above 70 - (dataframe['tema'] > dataframe['bb_middleband']) & - (dataframe['tema'] < dataframe['tema'].shift(1)) & # Guard: tema is raising + (qtpylib.crossed_above(dataframe['adx'], 70)) & # Signal: ADX crosses above 70 + (dataframe['tema'] > dataframe['bb_middleband']) & # Guard: tema above BB middle + (dataframe['tema'] < dataframe['tema'].shift(1)) & # Guard: tema is falling (dataframe['volume'] > 0) # Make sure Volume is not 0 ), 'sell'] = 1 From e6e35c25849160774883e0ed4ed2a2ec56c41430 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 15 Oct 2019 19:38:23 +0200 Subject: [PATCH 0706/3421] Switch samplestrategy from ADX to RSI --- docs/strategy-customization.md | 6 +++--- tests/strategy/test_strategy.py | 4 ++-- user_data/strategies/sample_strategy.py | 11 +++++------ 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 40da697e6..ca76071af 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -138,7 +138,7 @@ def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ dataframe.loc[ ( - (qtpylib.crossed_above(dataframe['adx'], 30)) & # Signal: ADX crosses above 30 + (qtpylib.crossed_above(dataframe['rsi'], 30)) & # Signal: RSI crosses above 30 (dataframe['tema'] <= dataframe['bb_middleband']) & # Guard (dataframe['tema'] > dataframe['tema'].shift(1)) & # Guard (dataframe['volume'] > 0) # Make sure Volume is not 0 @@ -149,7 +149,7 @@ def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: ``` !!! Note - Buying requires sellers to buy from - therefore volume needs to be > 0 (`dataframe['volume'] > 0`) to make sure that the does not buy/sell in no-activity periods. + Buying requires sellers to buy from - therefore volume needs to be > 0 (`dataframe['volume'] > 0`) to make sure that the bot does not buy/sell in no-activity periods. ### Sell signal rules @@ -172,7 +172,7 @@ def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame """ dataframe.loc[ ( - (qtpylib.crossed_above(dataframe['adx'], 70)) & # Signal: ADX crosses above 70 + (qtpylib.crossed_above(dataframe['rsi'], 70)) & # Signal: RSI crosses above 70 (dataframe['tema'] > dataframe['bb_middleband']) & # Guard (dataframe['tema'] < dataframe['tema'].shift(1)) & # Guard (dataframe['volume'] > 0) # Make sure Volume is not 0 diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 88e29b40e..52216e0ef 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -39,7 +39,7 @@ def test_search_strategy(): def test_load_strategy(default_conf, result): default_conf.update({'strategy': 'SampleStrategy'}) resolver = StrategyResolver(default_conf) - assert 'adx' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) + assert 'rsi' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) def test_load_strategy_base64(result, caplog, default_conf): @@ -48,7 +48,7 @@ def test_load_strategy_base64(result, caplog, default_conf): default_conf.update({'strategy': 'SampleStrategy:{}'.format(encoded_string)}) resolver = StrategyResolver(default_conf) - assert 'adx' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) + assert 'rsi' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) # Make sure strategy was loaded from base64 (using temp directory)!! assert log_has_re(r"Using resolved strategy SampleStrategy from '" + tempfile.gettempdir() + r"/.*/SampleStrategy\.py'\.\.\.", caplog) diff --git a/user_data/strategies/sample_strategy.py b/user_data/strategies/sample_strategy.py index 61f4fc15f..6870de190 100644 --- a/user_data/strategies/sample_strategy.py +++ b/user_data/strategies/sample_strategy.py @@ -102,8 +102,10 @@ class SampleStrategy(IStrategy): # ------------------------------------ # ADX - dataframe['adx'] = ta.ADX(dataframe) + # dataframe['adx'] = ta.ADX(dataframe) + # RSI + dataframe['rsi'] = ta.RSI(dataframe) """ # Awesome oscillator dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) @@ -132,9 +134,6 @@ class SampleStrategy(IStrategy): # ROC dataframe['roc'] = ta.ROC(dataframe) - # RSI - dataframe['rsi'] = ta.RSI(dataframe) - # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy) rsi = 0.1 * (dataframe['rsi'] - 50) dataframe['fisher_rsi'] = (numpy.exp(2 * rsi) - 1) / (numpy.exp(2 * rsi) + 1) @@ -276,7 +275,7 @@ class SampleStrategy(IStrategy): """ dataframe.loc[ ( - (qtpylib.crossed_above(dataframe['adx'], 30)) & # Signal: ADX crosses above 30 + (qtpylib.crossed_above(dataframe['rsi'], 30)) & # Signal: RSI crosses above 30 (dataframe['tema'] <= dataframe['bb_middleband']) & # Guard: tema below BB middle (dataframe['tema'] > dataframe['tema'].shift(1)) & # Guard: tema is raising (dataframe['volume'] > 0) # Make sure Volume is not 0 @@ -294,7 +293,7 @@ class SampleStrategy(IStrategy): """ dataframe.loc[ ( - (qtpylib.crossed_above(dataframe['adx'], 70)) & # Signal: ADX crosses above 70 + (qtpylib.crossed_above(dataframe['rsi'], 70)) & # Signal: RSI crosses above 70 (dataframe['tema'] > dataframe['bb_middleband']) & # Guard: tema above BB middle (dataframe['tema'] < dataframe['tema'].shift(1)) & # Guard: tema is falling (dataframe['volume'] > 0) # Make sure Volume is not 0 From ad89d199558314c017a9f39de27dbcd563122332 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 15 Oct 2019 21:07:01 +0300 Subject: [PATCH 0707/3421] Print list in the human-readable format --- freqtrade/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 6c36627f1..72476af45 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -119,7 +119,7 @@ def start_list_timeframes(args: Dict[str, Any]) -> None: print('\n'.join(exchange.timeframes)) else: print(f"Timeframes available for the exchange `{config['exchange']['name']}`: " - f"{', '.join(exchange.timeframes)}") + f"{', '.join(exchange.timeframes)}.") def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: @@ -155,7 +155,7 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: (f" with {base_currency} as base currency" if base_currency else "") + (" and" if base_currency and quote_currency else "") + (f" with {quote_currency} as quote currency" if quote_currency else "") + - (f": {sorted(pairs.keys())}" if len(pairs) else "") + ".") + (f": {', '.join(sorted(pairs.keys()))}" if len(pairs) else "") + ".") else: # print data as a table headers = ['Id', 'Symbol', 'Base', 'Quote', 'Active'] From 36d5bb6f9939c91510f4721b358aff3568d921a6 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 15 Oct 2019 21:11:41 +0300 Subject: [PATCH 0708/3421] Adjust ADX placement in the comments --- user_data/strategies/sample_strategy.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/user_data/strategies/sample_strategy.py b/user_data/strategies/sample_strategy.py index 6870de190..35ddbdf68 100644 --- a/user_data/strategies/sample_strategy.py +++ b/user_data/strategies/sample_strategy.py @@ -98,15 +98,16 @@ class SampleStrategy(IStrategy): :return: a Dataframe with all mandatory indicators for the strategies """ - # Momentum Indicator + # Momentum Indicators # ------------------------------------ - # ADX - # dataframe['adx'] = ta.ADX(dataframe) - # RSI dataframe['rsi'] = ta.RSI(dataframe) + """ + # ADX + # dataframe['adx'] = ta.ADX(dataframe) + # Awesome oscillator dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) @@ -253,7 +254,7 @@ class SampleStrategy(IStrategy): dataframe['ha_low'] = heikinashi['low'] """ - # Retrieve best bid and best ask + # Retrieve best bid and best ask from the orderbook # ------------------------------------ """ # first check if dataprovider is available From 89e0c76a3f403c748dde56bdfad1af869d5bc037 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 15 Oct 2019 22:31:23 +0300 Subject: [PATCH 0709/3421] Add --print-json and -1/--one-column options --- freqtrade/configuration/arguments.py | 3 ++- freqtrade/configuration/cli_options.py | 6 ++++++ freqtrade/utils.py | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 58b5539fe..f240fc04a 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -34,7 +34,8 @@ ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"] ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"] -ARGS_LIST_PAIRS = ["exchange", "print_list", "base_currency", "quote_currency", "active_only"] +ARGS_LIST_PAIRS = ["exchange", "print_list", "list_pairs_print_json", "print_one_column", + "base_currency", "quote_currency", "active_only"] ARGS_CREATE_USERDIR = ["user_data_dir"] diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index d3863481a..93bdd9384 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -262,6 +262,12 @@ AVAILABLE_CLI_OPTIONS = { 'printed in the tabular format.', action='store_true', ), + "list_pairs_print_json": Arg( + '--print-json', + help='Print list of pairs or market symbols in JSON format.', + action='store_true', + default=False, + ), "quote_currency": Arg( '--quote-currency', help='Select quote currency.', diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 72476af45..95825ff4e 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -4,6 +4,7 @@ from pathlib import Path from typing import Any, Dict, List import arrow +import rapidjson from tabulate import tabulate from freqtrade import OperationalException @@ -156,6 +157,10 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: (" and" if base_currency and quote_currency else "") + (f" with {quote_currency} as quote currency" if quote_currency else "") + (f": {', '.join(sorted(pairs.keys()))}" if len(pairs) else "") + ".") + elif args.get('print_one_column', False): + print('\n'.join(sorted(pairs.keys()))) + elif args.get('list_pairs_print_json', False): + print(rapidjson.dumps(sorted(pairs.keys()), default=str)) else: # print data as a table headers = ['Id', 'Symbol', 'Base', 'Quote', 'Active'] From a4dfd77d23bca8c2e65bca038d0f0fd069e89892 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 15 Oct 2019 22:35:14 +0300 Subject: [PATCH 0710/3421] Fix double comments for ADX --- user_data/strategies/sample_strategy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_data/strategies/sample_strategy.py b/user_data/strategies/sample_strategy.py index 35ddbdf68..80c30283d 100644 --- a/user_data/strategies/sample_strategy.py +++ b/user_data/strategies/sample_strategy.py @@ -106,7 +106,7 @@ class SampleStrategy(IStrategy): """ # ADX - # dataframe['adx'] = ta.ADX(dataframe) + dataframe['adx'] = ta.ADX(dataframe) # Awesome oscillator dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) From f348956e4c0778a8d06162ab85aa67706ab5fe6a Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 16 Oct 2019 02:22:27 +0300 Subject: [PATCH 0711/3421] --print-csv added --- freqtrade/configuration/arguments.py | 2 +- freqtrade/configuration/cli_options.py | 5 +++ freqtrade/utils.py | 50 +++++++++++++++++--------- 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index f240fc04a..aff2f3bb5 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -35,7 +35,7 @@ ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"] ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"] ARGS_LIST_PAIRS = ["exchange", "print_list", "list_pairs_print_json", "print_one_column", - "base_currency", "quote_currency", "active_only"] + "print_csv", "base_currency", "quote_currency", "active_only"] ARGS_CREATE_USERDIR = ["user_data_dir"] diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 93bdd9384..61acb30ca 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -268,6 +268,11 @@ AVAILABLE_CLI_OPTIONS = { action='store_true', default=False, ), + "print_csv": Arg( + '--print-csv', + help='Print exchange pair or market data in the csv format.', + action='store_true', + ), "quote_currency": Arg( '--quote-currency', help='Select quote currency.', diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 95825ff4e..52680de20 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -4,6 +4,7 @@ from pathlib import Path from typing import Any, Dict, List import arrow +import csv import rapidjson from tabulate import tabulate @@ -148,27 +149,42 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: raise OperationalException(f"Cannot get markets. Reason: {e}") from e else: + summary_str = ((f"Exchange {exchange.name} has {len(pairs)} ") + + ("active " if active_only else "") + + (plural(len(pairs), "pair" if pairs_only else "market")) + + (f" with {base_currency} as base currency" if base_currency else "") + + (" and" if base_currency and quote_currency else "") + + (f" with {quote_currency} as quote currency" if quote_currency else "")) + + headers = ["Id", "Symbol", "Base", "Quote", "Active"] + if not pairs_only: + headers.append('Is pair') + if args.get('print_list', False): - # print data as a list - print(f"Exchange {exchange.name} has {len(pairs)} " + - ("active " if active_only else "") + - (plural(len(pairs), "pair" if pairs_only else "market")) + - (f" with {base_currency} as base currency" if base_currency else "") + - (" and" if base_currency and quote_currency else "") + - (f" with {quote_currency} as quote currency" if quote_currency else "") + + # print data as a list, with human-readable summary + print(summary_str + (f": {', '.join(sorted(pairs.keys()))}" if len(pairs) else "") + ".") elif args.get('print_one_column', False): print('\n'.join(sorted(pairs.keys()))) elif args.get('list_pairs_print_json', False): print(rapidjson.dumps(sorted(pairs.keys()), default=str)) + elif args.get('print_csv', False): + if len(pairs): + writer = csv.DictWriter(sys.stdout, fieldnames=headers, extrasaction='ignore') + writer.writeheader() + for _, v in pairs.items(): + writer.writerow({'Id': v['id'], 'Symbol': v['symbol'], + 'Base': v['base'], 'Quote': v['quote'], + 'Active': market_is_active(v), + 'Is pair': market_is_pair(v)}) else: - # print data as a table - headers = ['Id', 'Symbol', 'Base', 'Quote', 'Active'] - if not pairs_only: - headers.append('Is pair') - tabular_data = [] - for _, v in pairs.items(): - tabular_data.append([v['id'], v['symbol'], v['base'], v['quote'], - "Yes" if market_is_active(v) else "No", - "Yes" if market_is_pair(v) else "No"]) - print(tabulate(tabular_data, headers=headers, tablefmt='pipe')) + print(summary_str + + (":" if len(pairs) else ".")) + if len(pairs): + # print data as a table + tabular_data = [] + for _, v in pairs.items(): + tabular_data.append([v['id'], v['symbol'], v['base'], v['quote'], + "Yes" if market_is_active(v) else "No", + "Yes" if market_is_pair(v) else "No"]) + print(tabulate(tabular_data, headers=headers, tablefmt='pipe')) From 4c8411e8350439a8b24c8ac6ebc0d5ff5063121e Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 16 Oct 2019 03:02:58 +0300 Subject: [PATCH 0712/3421] Cleanup in print tabular and print-csv parts --- freqtrade/utils.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 52680de20..3621787d8 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -156,9 +156,15 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: (" and" if base_currency and quote_currency else "") + (f" with {quote_currency} as quote currency" if quote_currency else "")) - headers = ["Id", "Symbol", "Base", "Quote", "Active"] - if not pairs_only: - headers.append('Is pair') + headers = ["Id", "Symbol", "Base", "Quote", "Active", + *(['Is pair'] if not pairs_only else [])] + + tabular_data = [] + for _, v in pairs.items(): + tabular_data.append({'Id': v['id'], 'Symbol': v['symbol'], + 'Base': v['base'], 'Quote': v['quote'], + 'Active': market_is_active(v), + **({'Is pair': market_is_pair(v)} if not pairs_only else {})}) if args.get('print_list', False): # print data as a list, with human-readable summary @@ -170,21 +176,12 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: print(rapidjson.dumps(sorted(pairs.keys()), default=str)) elif args.get('print_csv', False): if len(pairs): - writer = csv.DictWriter(sys.stdout, fieldnames=headers, extrasaction='ignore') + writer = csv.DictWriter(sys.stdout, fieldnames=headers) writer.writeheader() - for _, v in pairs.items(): - writer.writerow({'Id': v['id'], 'Symbol': v['symbol'], - 'Base': v['base'], 'Quote': v['quote'], - 'Active': market_is_active(v), - 'Is pair': market_is_pair(v)}) + writer.writerows(tabular_data) else: print(summary_str + (":" if len(pairs) else ".")) if len(pairs): # print data as a table - tabular_data = [] - for _, v in pairs.items(): - tabular_data.append([v['id'], v['symbol'], v['base'], v['quote'], - "Yes" if market_is_active(v) else "No", - "Yes" if market_is_pair(v) else "No"]) - print(tabulate(tabular_data, headers=headers, tablefmt='pipe')) + print(tabulate(tabular_data, headers='keys', tablefmt='pipe')) From 7de16310457883e592a799e2a3f462558faa48b8 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 16 Oct 2019 03:55:04 +0300 Subject: [PATCH 0713/3421] Print summary in the log for machine-readable formats --- freqtrade/utils.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 3621787d8..d2ea1f512 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -166,14 +166,21 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: 'Active': market_is_active(v), **({'Is pair': market_is_pair(v)} if not pairs_only else {})}) + if (args.get('print_one_column', False) or + args.get('list_pairs_print_json', False) or + args.get('print_csv', False)): + logger.info(f"{summary_str}.") + if args.get('print_list', False): # print data as a list, with human-readable summary print(summary_str + (f": {', '.join(sorted(pairs.keys()))}" if len(pairs) else "") + ".") elif args.get('print_one_column', False): - print('\n'.join(sorted(pairs.keys()))) + if len(pairs): + print('\n'.join(sorted(pairs.keys()))) elif args.get('list_pairs_print_json', False): - print(rapidjson.dumps(sorted(pairs.keys()), default=str)) + if len(pairs): + print(rapidjson.dumps(sorted(pairs.keys()), default=str)) elif args.get('print_csv', False): if len(pairs): writer = csv.DictWriter(sys.stdout, fieldnames=headers) From 1a765f1a172e20ce3ecc2c02ad5585952c1af763 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 14 Oct 2019 14:41:39 +0200 Subject: [PATCH 0714/3421] Return generator instead of Object from _get_valid_object --- freqtrade/resolvers/iresolver.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 6303d4801..5e82b4359 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -7,7 +7,7 @@ import importlib.util import inspect import logging from pathlib import Path -from typing import Any, List, Optional, Tuple, Type, Union +from typing import Any, List, Optional, Tuple, Type, Union, Generator logger = logging.getLogger(__name__) @@ -19,13 +19,13 @@ class IResolver: @staticmethod def _get_valid_object(object_type, module_path: Path, - object_name: str) -> Optional[Type[Any]]: + object_name: str) -> Generator[Any, None, None]: """ - Returns the first object with matching object_type and object_name in the path given. + Generator returning objects with matching object_type and object_name in the path given. :param object_type: object_type (class) :param module_path: absolute path to the module :param object_name: Class name of the object - :return: class or None + :return: generator containing matching objects """ # Generate spec based on absolute path @@ -42,7 +42,7 @@ class IResolver: obj for name, obj in inspect.getmembers(module, inspect.isclass) if object_name == name and object_type in obj.__bases__ ) - return next(valid_objects_gen, None) + return valid_objects_gen @staticmethod def _search_object(directory: Path, object_type, object_name: str, @@ -59,9 +59,9 @@ class IResolver: logger.debug('Ignoring %s', entry) continue module_path = entry.resolve() - obj = IResolver._get_valid_object( - object_type, module_path, object_name - ) + + obj = next(IResolver._get_valid_object(object_type, module_path, object_name), None) + if obj: return (obj(**kwargs), module_path) return (None, None) From fda71085e05348db3f7374e726ad1bff4669a21a Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 15 Oct 2019 12:11:14 +0200 Subject: [PATCH 0715/3421] Refactor load-path building to parent class --- freqtrade/resolvers/hyperopt_resolver.py | 20 ++++---------------- freqtrade/resolvers/iresolver.py | 16 +++++++++++++++- freqtrade/resolvers/pairlist_resolver.py | 6 ++---- freqtrade/resolvers/strategy_resolver.py | 10 ++-------- 4 files changed, 23 insertions(+), 29 deletions(-) diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index e96394d69..db51c3ca5 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -52,14 +52,8 @@ class HyperOptResolver(IResolver): """ current_path = Path(__file__).parent.parent.joinpath('optimize').resolve() - abs_paths = [ - config['user_data_dir'].joinpath('hyperopts'), - current_path, - ] - - if extra_dir: - # Add extra hyperopt directory on top of search paths - abs_paths.insert(0, Path(extra_dir).resolve()) + abs_paths = self.build_search_paths(config, current_path=current_path, + user_subdir='hyperopts', extra_dir=extra_dir) hyperopt = self._load_object(paths=abs_paths, object_type=IHyperOpt, object_name=hyperopt_name, kwargs={'config': config}) @@ -109,14 +103,8 @@ class HyperOptLossResolver(IResolver): """ current_path = Path(__file__).parent.parent.joinpath('optimize').resolve() - abs_paths = [ - config['user_data_dir'].joinpath('hyperopts'), - current_path, - ] - - if extra_dir: - # Add extra hyperopt directory on top of search paths - abs_paths.insert(0, Path(extra_dir).resolve()) + abs_paths = self.build_search_paths(config, current_path=current_path, + user_subdir='hyperopts', extra_dir=extra_dir) hyperoptloss = self._load_object(paths=abs_paths, object_type=IHyperOptLoss, object_name=hyper_loss_name) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 5e82b4359..51c4f7dba 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -7,7 +7,7 @@ import importlib.util import inspect import logging from pathlib import Path -from typing import Any, List, Optional, Tuple, Type, Union, Generator +from typing import Any, List, Optional, Tuple, Union, Generator logger = logging.getLogger(__name__) @@ -17,6 +17,20 @@ class IResolver: This class contains all the logic to load custom classes """ + def build_search_paths(self, config, current_path: Path, user_subdir: str, + extra_dir: Optional[str] = None) -> List[Path]: + + abs_paths = [ + config['user_data_dir'].joinpath(user_subdir), + current_path, + ] + + if extra_dir: + # Add extra directory to the top of the search paths + abs_paths.insert(0, Path(extra_dir).resolve()) + + return abs_paths + @staticmethod def _get_valid_object(object_type, module_path: Path, object_name: str) -> Generator[Any, None, None]: diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index f38253155..2ddf5de2f 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -39,10 +39,8 @@ class PairListResolver(IResolver): """ current_path = Path(__file__).parent.parent.joinpath('pairlist').resolve() - abs_paths = [ - config['user_data_dir'].joinpath('pairlist'), - current_path, - ] + abs_paths = self.build_search_paths(config, current_path=current_path, + user_subdir='pairlist', extra_dir=None) pairlist = self._load_object(paths=abs_paths, object_type=IPairList, object_name=pairlist_name, kwargs=kwargs) diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index b9c641853..d6fbe9a7a 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -124,14 +124,8 @@ class StrategyResolver(IResolver): """ current_path = Path(__file__).parent.parent.joinpath('strategy').resolve() - abs_paths = [ - config['user_data_dir'].joinpath('strategies'), - current_path, - ] - - if extra_dir: - # Add extra strategy directory on top of search paths - abs_paths.insert(0, Path(extra_dir).resolve()) + abs_paths = self.build_search_paths(config, current_path=current_path, + user_subdir='strategies', extra_dir=extra_dir) if ":" in strategy_name: logger.info("loading base64 encoded strategy") From d72d3887265e9d2076256d961bc2b6ec0ba189ed Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 16 Oct 2019 10:55:09 +0300 Subject: [PATCH 0716/3421] Make flake happy --- freqtrade/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index d2ea1f512..966674f3b 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -124,7 +124,7 @@ def start_list_timeframes(args: Dict[str, Any]) -> None: f"{', '.join(exchange.timeframes)}.") -def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: +def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: # noqa: C901 """ Print pairs on the exchange :param args: Cli args from Arguments() From 92fda0f76c4a2cc2f83513a8e8e07f536ddc7375 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 02:09:19 +0300 Subject: [PATCH 0717/3421] Allow --base and --quote be lists of currencies --- freqtrade/configuration/arguments.py | 2 +- freqtrade/configuration/cli_options.py | 14 ++++++++------ freqtrade/exchange/exchange.py | 10 +++++----- freqtrade/utils.py | 18 +++++++++++------- 4 files changed, 25 insertions(+), 19 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index aff2f3bb5..937fe1a3c 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -35,7 +35,7 @@ ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"] ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"] ARGS_LIST_PAIRS = ["exchange", "print_list", "list_pairs_print_json", "print_one_column", - "print_csv", "base_currency", "quote_currency", "active_only"] + "print_csv", "base_currencies", "quote_currencies", "active_only"] ARGS_CREATE_USERDIR = ["user_data_dir"] diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 61acb30ca..ab3f4f00a 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -273,13 +273,15 @@ AVAILABLE_CLI_OPTIONS = { help='Print exchange pair or market data in the csv format.', action='store_true', ), - "quote_currency": Arg( - '--quote-currency', - help='Select quote currency.', + "quote_currencies": Arg( + '--quote', + help='Specify quote currency(-ies). Space-separated list.', + nargs='+', ), - "base_currency": Arg( - '--base-currency', - help='Select base currency.', + "base_currencies": Arg( + '--base', + help='Specify base currency(-ies). Space-separated list.', + nargs='+', ), "active_only": Arg( '--active-only', diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 185c9dc3d..95602082e 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -280,7 +280,7 @@ class Exchange: self._load_markets() return self._api.markets - def get_markets(self, base_currency: str = None, quote_currency: str = None, + def get_markets(self, base_currencies: List[str] = None, quote_currencies: List[str] = None, pairs_only: bool = False, active_only: bool = False) -> Dict: """ Return exchange ccxt markets, filtered out by base currency and quote currency @@ -292,10 +292,10 @@ class Exchange: if not markets: raise OperationalException("Markets were not loaded.") - if base_currency: - markets = {k: v for k, v in markets.items() if v['base'] == base_currency} - if quote_currency: - markets = {k: v for k, v in markets.items() if v['quote'] == quote_currency} + if base_currencies: + markets = {k: v for k, v in markets.items() if v['base'] in base_currencies} + if quote_currencies: + markets = {k: v for k, v in markets.items() if v['quote'] in quote_currencies} if pairs_only: markets = {k: v for k, v in markets.items() if market_is_pair(v)} if active_only: diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 966674f3b..b927d73bf 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -137,12 +137,12 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: # exchange = ExchangeResolver(config['exchange']['name'], config).exchange active_only = args.get('active_only', False) - base_currency = args.get('base_currency', '') - quote_currency = args.get('quote_currency', '') + base_currencies = args.get('base_currencies', []) + quote_currencies = args.get('quote_currencies', []) try: - pairs = exchange.get_markets(base_currency=base_currency, - quote_currency=quote_currency, + pairs = exchange.get_markets(base_currencies=base_currencies, + quote_currencies=quote_currencies, pairs_only=pairs_only, active_only=active_only) except Exception as e: @@ -152,9 +152,13 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: # summary_str = ((f"Exchange {exchange.name} has {len(pairs)} ") + ("active " if active_only else "") + (plural(len(pairs), "pair" if pairs_only else "market")) + - (f" with {base_currency} as base currency" if base_currency else "") + - (" and" if base_currency and quote_currency else "") + - (f" with {quote_currency} as quote currency" if quote_currency else "")) + (f" with {', '.join(base_currencies)} as base " + f"{plural(len(base_currencies), 'currency', 'currencies')}" + if base_currencies else "") + + (" and" if base_currencies and quote_currencies else "") + + (f" with {', '.join(quote_currencies)} as quote " + f"{plural(len(quote_currencies), 'currency', 'currencies')}" + if quote_currencies else "")) headers = ["Id", "Symbol", "Base", "Quote", "Active", *(['Is pair'] if not pairs_only else [])] From a8ffd29e1872e8dff14ae087a636e9c23120da6d Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 02:42:07 +0300 Subject: [PATCH 0718/3421] Remove --active-only, introduce -a/--all instead --- freqtrade/configuration/arguments.py | 2 +- freqtrade/configuration/cli_options.py | 11 ++++++----- freqtrade/utils.py | 4 +++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 937fe1a3c..646cdb2b7 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -35,7 +35,7 @@ ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"] ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"] ARGS_LIST_PAIRS = ["exchange", "print_list", "list_pairs_print_json", "print_one_column", - "print_csv", "base_currencies", "quote_currencies", "active_only"] + "print_csv", "base_currencies", "quote_currencies", "list_pairs_all"] ARGS_CREATE_USERDIR = ["user_data_dir"] diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index ab3f4f00a..926824cf4 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -256,6 +256,12 @@ AVAILABLE_CLI_OPTIONS = { action='store_true', ), # List pairs / markets + "list_pairs_all": Arg( + '-a', '--all', + help='Print all pairs or market symbols. By default only active ' + 'ones are shown.', + action='store_true', + ), "print_list": Arg( '--print-list', help='Print list of pairs or market symbols. By default data is ' @@ -283,11 +289,6 @@ AVAILABLE_CLI_OPTIONS = { help='Specify base currency(-ies). Space-separated list.', nargs='+', ), - "active_only": Arg( - '--active-only', - help='Print only active pairs or markets.', - action='store_true', - ), # Script options "pairs": Arg( '-p', '--pairs', diff --git a/freqtrade/utils.py b/freqtrade/utils.py index b927d73bf..1e9aca647 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -136,7 +136,9 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: # # Init exchange exchange = ExchangeResolver(config['exchange']['name'], config).exchange - active_only = args.get('active_only', False) + # By default only active pairs/markets are to be shown + active_only = not args.get('list_pairs_all', False) + base_currencies = args.get('base_currencies', []) quote_currencies = args.get('quote_currencies', []) From 837d4d82b4ba326815d948f0a0b3af64cd05d634 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 03:06:51 +0300 Subject: [PATCH 0719/3421] Sort tabular and csv data by symbol as well --- freqtrade/utils.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 1e9aca647..703cff35d 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -1,5 +1,6 @@ import logging import sys +from collections import OrderedDict from pathlib import Path from typing import Any, Dict, List @@ -147,6 +148,8 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: # quote_currencies=quote_currencies, pairs_only=pairs_only, active_only=active_only) + # Sort the pairs/markets by symbol + pairs = OrderedDict(sorted(pairs.items())) except Exception as e: raise OperationalException(f"Cannot get markets. Reason: {e}") from e @@ -180,13 +183,13 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: # if args.get('print_list', False): # print data as a list, with human-readable summary print(summary_str + - (f": {', '.join(sorted(pairs.keys()))}" if len(pairs) else "") + ".") + (f": {', '.join(pairs.keys())}" if len(pairs) else "") + ".") elif args.get('print_one_column', False): if len(pairs): - print('\n'.join(sorted(pairs.keys()))) + print('\n'.join(pairs.keys())) elif args.get('list_pairs_print_json', False): if len(pairs): - print(rapidjson.dumps(sorted(pairs.keys()), default=str)) + print(rapidjson.dumps(pairs.keys(), default=str)) elif args.get('print_csv', False): if len(pairs): writer = csv.DictWriter(sys.stdout, fieldnames=headers) From bf4e9a5dbbfbd01c2d24753415f4ddd431b9cb63 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 04:34:05 +0300 Subject: [PATCH 0720/3421] Code cleanup --- freqtrade/utils.py | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 703cff35d..90140f6ba 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -125,7 +125,7 @@ def start_list_timeframes(args: Dict[str, Any]) -> None: f"{', '.join(exchange.timeframes)}.") -def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: # noqa: C901 +def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: """ Print pairs on the exchange :param args: Cli args from Arguments() @@ -180,24 +180,23 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: # args.get('print_csv', False)): logger.info(f"{summary_str}.") - if args.get('print_list', False): - # print data as a list, with human-readable summary - print(summary_str + - (f": {', '.join(pairs.keys())}" if len(pairs) else "") + ".") - elif args.get('print_one_column', False): - if len(pairs): + if len(pairs): + if args.get('print_list', False): + # print data as a list, with human-readable summary + print(f"{summary_str}: {', '.join(pairs.keys())}.") + elif args.get('print_one_column', False): print('\n'.join(pairs.keys())) - elif args.get('list_pairs_print_json', False): - if len(pairs): - print(rapidjson.dumps(pairs.keys(), default=str)) - elif args.get('print_csv', False): - if len(pairs): + elif args.get('list_pairs_print_json', False): + print(rapidjson.dumps(list(pairs.keys()), default=str)) + elif args.get('print_csv', False): writer = csv.DictWriter(sys.stdout, fieldnames=headers) writer.writeheader() writer.writerows(tabular_data) - else: - print(summary_str + - (":" if len(pairs) else ".")) - if len(pairs): - # print data as a table + else: + # print data as a table, with the human-readable summary + print(f"{summary_str}:") print(tabulate(tabular_data, headers='keys', tablefmt='pipe')) + elif not (args.get('print_one_column', False) or + args.get('list_pairs_print_json', False) or + args.get('print_csv', False)): + print(f"{summary_str}.") From 5b58141f6b840f82bbf09161dcb2d4c70c879a01 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 17 Oct 2019 06:11:10 +0200 Subject: [PATCH 0721/3421] iFix grammar issue --- docs/data-download.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data-download.md b/docs/data-download.md index b091f0069..83f5cd568 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -80,7 +80,7 @@ freqtrade download-data --exchange binance --pairs XRP/ETH ETH/BTC --days 20 --d ### Historic Kraken data -The Kraken API does only provide 720 historic candles, which is sufficient for regular trading operations, but a problem for backtesting. +The Kraken API does only provide 720 historic candles, which is sufficient for regular trading operations, but is a problem for backtesting. To download data for the Kraken exchange, using `--dl-trades` is mandatory, otherwise the bot will download the same 720 candles over and over, and you'll not have enough backtest data. ## Next step From ff6a3465a78a05324be21e50b5bce12b118143db Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 17:18:26 +0300 Subject: [PATCH 0722/3421] Docs added --- docs/utils.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/docs/utils.md b/docs/utils.md index 93162aca2..f662e8d6c 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -54,3 +54,63 @@ Timeframes available for the exchange `binance`: 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4 ``` $ for i in `freqtrade list-exchanges -1`; do freqtrade list-timeframes --exchange $i; done ``` + +## List pairs/list markets + +The `list-pairs` and `list-markets` subcommands allow to see the pairs/markets available on exchange. + +Pairs are markets with the '/' character between the base currency part and the quote currency part. + +These subcommands have same usage and same set of available options: + +``` +usage: freqtrade list-pairs [-h] [--exchange EXCHANGE] [--print-list] + [--print-json] [-1] [--print-csv] + [--base BASE_CURRENCIES [BASE_CURRENCIES ...]] + [--quote QUOTE_CURRENCIES [QUOTE_CURRENCIES ...]] + [-a] + +optional arguments: + -h, --help show this help message and exit + --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no + config is provided. + --print-list Print list of pairs or market symbols. By default data + is printed in the tabular format. + --print-json Print list of pairs or market symbols in JSON format. + -1, --one-column Print output in one column. + --print-csv Print exchange pair or market data in the csv format. + --base BASE_CURRENCY [BASE_CURRENCY ...] + Specify base currency(-ies). Space-separated list. + --quote QUOTE_CURRENCY [QUOTE_CURRENCY ...] + Specify quote currency(-ies). Space-separated list. + -a, --all Print all pairs or market symbols. By default only + active ones are shown. +``` + +By default, only active pairs/markets are shown. Active pairs/markets are those that can currently be traded +on the exchange. The see the list of all pairs/markets (not only the active ones), use the `-a`/`-all` option. + +Pairs/markets are sorted by its symbol string in the printed output. + +### Examples + +* Print the list of active pairs with quote currency USD on exchange, specified in the default +configuration file (i.e. pairs on the "Bittrex" exchange) in JSON format: + +``` +$ freqtrade list-pairs --quote USD --print-json +``` + +* Print the list of all pairs on the exchange, specified in the `config_binance.json` configuration file +(i.e. on the "Binance" exchange) with base currencies BTC or ETH and quote currencies USDT or USD, as the +human-readable list with summary: + +``` +$ freqtrade -c config_binance.json list-pairs --all --base BTC ETH --quote USDT USD --print-list +``` + +* Print all markets on exchange "Kraken", in the tabular format: + +``` +$ freqtrade list-markets --exchange kraken --all +``` From bd08874f1ff1c5396c42d53ad43a9653411eadb0 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 17:31:49 +0300 Subject: [PATCH 0723/3421] Fix options metavars shown in the helpstring --- freqtrade/configuration/cli_options.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 926824cf4..cb6dece5c 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -283,11 +283,13 @@ AVAILABLE_CLI_OPTIONS = { '--quote', help='Specify quote currency(-ies). Space-separated list.', nargs='+', + metavar='QUOTE_CURRENCY', ), "base_currencies": Arg( '--base', help='Specify base currency(-ies). Space-separated list.', nargs='+', + metavar='BASE_CURRENCY', ), # Script options "pairs": Arg( From 1e61263a28b3d7ebb026869ace86f1f32bfb51b5 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 17:49:04 +0300 Subject: [PATCH 0724/3421] More sofisticated market_is_pair(), taken from #1989 --- freqtrade/exchange/exchange.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 95602082e..164f21ac6 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -937,12 +937,17 @@ def timeframe_to_next_date(timeframe: str, date: datetime = None) -> datetime: return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) -def market_is_pair(market): +def market_is_pair(market, base_currency: str = None, quote_currency: str = None): """ - Return True if the market is a pair. - Currently pairs are defined as markets containing '/' character in its symbol. + Check if the market is a pair, i.e. that its symbol consists of the base currency and the + quote currency separated by '/' character. If base_currency and/or quote_currency is passed, + it also checks that the symbol contains appropriate base and/or quote currency part before + and after the separating character correspondingly. """ - return '/' in market.get('symbol', '') + symbol_parts = market['symbol'].split('/') + return (len(symbol_parts) == 2 and + (symbol_parts[0] == base_currency if base_currency else len(symbol_parts[0]) > 0) and + (symbol_parts[1] == quote_currency if quote_currency else len(symbol_parts[1]) > 0)) def market_is_active(market): From 66605a19095122d15de21048581fb07e39ddab00 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 17:52:33 +0300 Subject: [PATCH 0725/3421] Add tests for plural(), taken from #1989 --- tests/test_misc.py | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/tests/test_misc.py b/tests/test_misc.py index 320ed208c..23231e2f0 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -7,7 +7,7 @@ from unittest.mock import MagicMock from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.history import pair_data_filename from freqtrade.misc import (datesarray_to_datetimearray, file_dump_json, - file_load_json, format_ms_time, shorten_date) + file_load_json, format_ms_time, plural, shorten_date) def test_shorten_date() -> None: @@ -69,3 +69,35 @@ def test_format_ms_time() -> None: # Date 2017-12-13 08:02:01 date_in_epoch_ms = 1513152121000 assert format_ms_time(date_in_epoch_ms) == res.astimezone(None).strftime('%Y-%m-%dT%H:%M:%S') + + +def test_plural() -> None: + assert plural(0, "page") == "pages" + assert plural(0.0, "page") == "pages" + assert plural(1, "page") == "page" + assert plural(1.0, "page") == "page" + assert plural(2, "page") == "pages" + assert plural(2.0, "page") == "pages" + assert plural(-1, "page") == "page" + assert plural(-1.0, "page") == "page" + assert plural(-2, "page") == "pages" + assert plural(-2.0, "page") == "pages" + assert plural(0.5, "page") == "pages" + assert plural(1.5, "page") == "pages" + assert plural(-0.5, "page") == "pages" + assert plural(-1.5, "page") == "pages" + + assert plural(0, "ox", "oxen") == "oxen" + assert plural(0.0, "ox", "oxen") == "oxen" + assert plural(1, "ox", "oxen") == "ox" + assert plural(1.0, "ox", "oxen") == "ox" + assert plural(2, "ox", "oxen") == "oxen" + assert plural(2.0, "ox", "oxen") == "oxen" + assert plural(-1, "ox", "oxen") == "ox" + assert plural(-1.0, "ox", "oxen") == "ox" + assert plural(-2, "ox", "oxen") == "oxen" + assert plural(-2.0, "ox", "oxen") == "oxen" + assert plural(0.5, "ox", "oxen") == "oxen" + assert plural(1.5, "ox", "oxen") == "oxen" + assert plural(-0.5, "ox", "oxen") == "oxen" + assert plural(-1.5, "ox", "oxen") == "oxen" From e8eb968a6f2b9fa673c259ce0b52055ca9bd64d8 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 18:19:50 +0300 Subject: [PATCH 0726/3421] Add tests for market_is_pair() --- tests/exchange/test_exchange.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index bf6025322..d61748d1d 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -18,7 +18,8 @@ from freqtrade.exchange.exchange import (API_RETRY_COUNT, timeframe_to_minutes, timeframe_to_msecs, timeframe_to_next_date, timeframe_to_prev_date, - timeframe_to_seconds) + timeframe_to_seconds, + market_is_pair) from freqtrade.resolvers.exchange_resolver import ExchangeResolver from tests.conftest import get_patched_exchange, log_has, log_has_re @@ -1555,3 +1556,24 @@ def test_timeframe_to_next_date(): date = datetime.now(tz=timezone.utc) assert timeframe_to_next_date("5m") > date + + +@pytest.mark.parametrize("market,base_currency,quote_currency,expected_result", [ + ({'symbol': "BTC/USDT"}, None, None, True), + ({'symbol': "USDT/BTC"}, None, None, True), + ({'symbol': "BTCUSDT"}, None, None, False), + ({'symbol': "BTC/USDT"}, None, "USDT", True), + ({'symbol': "USDT/BTC"}, None, "USDT", False), + ({'symbol': "BTCUSDT"}, None, "USDT", False), + ({'symbol': "BTC/USDT"}, "BTC", None, True), + ({'symbol': "USDT/BTC"}, "BTC", None, False), + ({'symbol': "BTCUSDT"}, "BTC", None, False), + ({'symbol': "BTC/USDT"}, "BTC", "USDT", True), + ({'symbol': "BTC/USDT"}, "USDT", "BTC", False), + ({'symbol': "BTC/USDT"}, "BTC", "USD", False), + ({'symbol': "BTCUSDT"}, "BTC", "USDT", False), + ({'symbol': "BTC/"}, None, None, False), + ({'symbol': "/USDT"}, None, None, False), +]) +def test_market_is_pair(market, base_currency, quote_currency, expected_result) -> None: + assert market_is_pair(market, base_currency, quote_currency) == expected_result From b6e26c82eacae6f082c09d990fa2b345737cf035 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 18:44:25 +0300 Subject: [PATCH 0727/3421] Replace market_is_pair() by symbol_is_pair() --- freqtrade/exchange/__init__.py | 2 +- freqtrade/exchange/exchange.py | 8 +++---- freqtrade/utils.py | 5 +++-- tests/exchange/test_exchange.py | 38 ++++++++++++++++----------------- 4 files changed, 27 insertions(+), 26 deletions(-) diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index 470091181..7545bff6a 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -11,6 +11,6 @@ from freqtrade.exchange.exchange import (timeframe_to_seconds, # noqa: F401 timeframe_to_next_date, timeframe_to_prev_date) from freqtrade.exchange.exchange import (market_is_active, # noqa: F401 - market_is_pair) + symbol_is_pair) from freqtrade.exchange.kraken import Kraken # noqa: F401 from freqtrade.exchange.binance import Binance # noqa: F401 diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 164f21ac6..193982b74 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -297,7 +297,7 @@ class Exchange: if quote_currencies: markets = {k: v for k, v in markets.items() if v['quote'] in quote_currencies} if pairs_only: - markets = {k: v for k, v in markets.items() if market_is_pair(v)} + markets = {k: v for k, v in markets.items() if symbol_is_pair(v['symbol'])} if active_only: markets = {k: v for k, v in markets.items() if market_is_active(v)} return markets @@ -937,14 +937,14 @@ def timeframe_to_next_date(timeframe: str, date: datetime = None) -> datetime: return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) -def market_is_pair(market, base_currency: str = None, quote_currency: str = None): +def symbol_is_pair(market_symbol: str, base_currency: str = None, quote_currency: str = None): """ - Check if the market is a pair, i.e. that its symbol consists of the base currency and the + Check if the market symbol is a pair, i.e. that its symbol consists of the base currency and the quote currency separated by '/' character. If base_currency and/or quote_currency is passed, it also checks that the symbol contains appropriate base and/or quote currency part before and after the separating character correspondingly. """ - symbol_parts = market['symbol'].split('/') + symbol_parts = market_symbol.split('/') return (len(symbol_parts) == 2 and (symbol_parts[0] == base_currency if base_currency else len(symbol_parts[0]) > 0) and (symbol_parts[1] == quote_currency if quote_currency else len(symbol_parts[1]) > 0)) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 90140f6ba..e00b0739e 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -14,7 +14,7 @@ from freqtrade.configuration import Configuration, TimeRange from freqtrade.configuration.directory_operations import create_userdata_dir from freqtrade.data.history import refresh_backtest_ohlcv_data from freqtrade.exchange import (available_exchanges, ccxt_exchanges, market_is_active, - market_is_pair) + symbol_is_pair) from freqtrade.misc import plural from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode @@ -173,7 +173,8 @@ def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: tabular_data.append({'Id': v['id'], 'Symbol': v['symbol'], 'Base': v['base'], 'Quote': v['quote'], 'Active': market_is_active(v), - **({'Is pair': market_is_pair(v)} if not pairs_only else {})}) + **({'Is pair': symbol_is_pair(v['symbol'])} + if not pairs_only else {})}) if (args.get('print_one_column', False) or args.get('list_pairs_print_json', False) or diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index d61748d1d..20449bd6b 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -19,7 +19,7 @@ from freqtrade.exchange.exchange import (API_RETRY_COUNT, timeframe_to_minutes, timeframe_to_next_date, timeframe_to_prev_date, timeframe_to_seconds, - market_is_pair) + symbol_is_pair) from freqtrade.resolvers.exchange_resolver import ExchangeResolver from tests.conftest import get_patched_exchange, log_has, log_has_re @@ -1558,22 +1558,22 @@ def test_timeframe_to_next_date(): assert timeframe_to_next_date("5m") > date -@pytest.mark.parametrize("market,base_currency,quote_currency,expected_result", [ - ({'symbol': "BTC/USDT"}, None, None, True), - ({'symbol': "USDT/BTC"}, None, None, True), - ({'symbol': "BTCUSDT"}, None, None, False), - ({'symbol': "BTC/USDT"}, None, "USDT", True), - ({'symbol': "USDT/BTC"}, None, "USDT", False), - ({'symbol': "BTCUSDT"}, None, "USDT", False), - ({'symbol': "BTC/USDT"}, "BTC", None, True), - ({'symbol': "USDT/BTC"}, "BTC", None, False), - ({'symbol': "BTCUSDT"}, "BTC", None, False), - ({'symbol': "BTC/USDT"}, "BTC", "USDT", True), - ({'symbol': "BTC/USDT"}, "USDT", "BTC", False), - ({'symbol': "BTC/USDT"}, "BTC", "USD", False), - ({'symbol': "BTCUSDT"}, "BTC", "USDT", False), - ({'symbol': "BTC/"}, None, None, False), - ({'symbol': "/USDT"}, None, None, False), +@pytest.mark.parametrize("market_symbol,base_currency,quote_currency,expected_result", [ + ("BTC/USDT", None, None, True), + ("USDT/BTC", None, None, True), + ("BTCUSDT", None, None, False), + ("BTC/USDT", None, "USDT", True), + ("USDT/BTC", None, "USDT", False), + ("BTCUSDT", None, "USDT", False), + ("BTC/USDT", "BTC", None, True), + ("USDT/BTC", "BTC", None, False), + ("BTCUSDT", "BTC", None, False), + ("BTC/USDT", "BTC", "USDT", True), + ("BTC/USDT", "USDT", "BTC", False), + ("BTC/USDT", "BTC", "USD", False), + ("BTCUSDT", "BTC", "USDT", False), + ("BTC/", None, None, False), + ("/USDT", None, None, False), ]) -def test_market_is_pair(market, base_currency, quote_currency, expected_result) -> None: - assert market_is_pair(market, base_currency, quote_currency) == expected_result +def test_symbol_is_pair(market_symbol, base_currency, quote_currency, expected_result) -> None: + assert symbol_is_pair(market_symbol, base_currency, quote_currency) == expected_result From 84ba431d10f88c92e0f815115a8e51692463fa84 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 19:05:50 +0300 Subject: [PATCH 0728/3421] Introduce a market with no 'active' field in conftest --- tests/conftest.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 6a0a74b5b..44f99b033 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -318,7 +318,8 @@ def markets(): 'symbol': 'TKN/BTC', 'base': 'TKN', 'quote': 'BTC', - 'active': True, + # According to ccxt, markets without active item set are also active + # 'active': True, 'precision': { 'price': 8, 'amount': 8, From 033742b7083fe673abab179ee52b745936281ce7 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 19:06:58 +0300 Subject: [PATCH 0729/3421] Fix pairlists to use market_is_active() instead of custom check --- freqtrade/pairlist/IPairList.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index a112c63b4..5afb0c4c2 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -8,6 +8,9 @@ import logging from abc import ABC, abstractmethod from typing import List +from freqtrade.exchange import market_is_active + + logger = logging.getLogger(__name__) @@ -77,7 +80,7 @@ class IPairList(ABC): continue # Check if market is active market = markets[pair] - if not market['active']: + if not market_is_active(market): logger.info(f"Ignoring {pair} from whitelist. Market is not active.") continue sanitized_whitelist.add(pair) From 750dc8bf566d891861ec1adf03afbe99a81e46f5 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 19:24:39 +0300 Subject: [PATCH 0730/3421] Add tests for market_is_active() --- tests/exchange/test_exchange.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 20449bd6b..fee9041b9 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -19,7 +19,8 @@ from freqtrade.exchange.exchange import (API_RETRY_COUNT, timeframe_to_minutes, timeframe_to_next_date, timeframe_to_prev_date, timeframe_to_seconds, - symbol_is_pair) + symbol_is_pair, + market_is_active) from freqtrade.resolvers.exchange_resolver import ExchangeResolver from tests.conftest import get_patched_exchange, log_has, log_has_re @@ -1577,3 +1578,12 @@ def test_timeframe_to_next_date(): ]) def test_symbol_is_pair(market_symbol, base_currency, quote_currency, expected_result) -> None: assert symbol_is_pair(market_symbol, base_currency, quote_currency) == expected_result + + +@pytest.mark.parametrize("market,expected_result", [ + ({'symbol': 'ETH/BTC', 'active': True}, True), + ({'symbol': 'ETH/BTC', 'active': False}, False), + ({'symbol': 'ETH/BTC', }, True), +]) +def test_market_is_active(market, expected_result) -> None: + assert market_is_active(market) == expected_result From a39d51d7d02bf685387275357ca9f8aaef08ce11 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 17 Oct 2019 19:33:21 +0200 Subject: [PATCH 0731/3421] Update test to use limit_buy_order --- tests/conftest.py | 6 ------ tests/test_freqtradebot.py | 15 +++++++-------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 6a0a74b5b..b0c68c805 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -896,12 +896,6 @@ def result(testdatadir): return parse_ticker_dataframe(json.load(data_file), '1m', pair="UNITTEST/BTC", fill_missing=True) -# FIX: -# Create an fixture/function -# that inserts a trade of some type and open-status -# return the open-order-id -# See tests in rpc/main that could use this - @pytest.fixture(scope="function") def trades_for_order(): diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 7fb84f078..28ba57c1d 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1678,7 +1678,7 @@ def test_update_trade_state_exception(mocker, default_conf, # Test raise of OperationalException exception mocker.patch( 'freqtrade.freqtradebot.FreqtradeBot.get_real_amount', - side_effect=OperationalException() + side_effect=DependencyException() ) freqtrade.update_trade_state(trade) assert log_has('Could not update trade amount: ', caplog) @@ -2188,7 +2188,7 @@ def test_check_handle_timedout_exception(default_conf, ticker, mocker, caplog) - caplog) -def test_handle_timedout_limit_buy(mocker, default_conf) -> None: +def test_handle_timedout_limit_buy(mocker, default_conf, limit_buy_order) -> None: patch_RPCManager(mocker) patch_exchange(mocker) cancel_order_mock = MagicMock() @@ -2201,12 +2201,11 @@ def test_handle_timedout_limit_buy(mocker, default_conf) -> None: Trade.session = MagicMock() trade = MagicMock() - order = {'remaining': 1, - 'amount': 1} - assert freqtrade.handle_timedout_limit_buy(trade, order) + limit_buy_order['remaining'] = limit_buy_order['amount'] + assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 - order['amount'] = 2 - assert not freqtrade.handle_timedout_limit_buy(trade, order) + limit_buy_order['amount'] = 2 + assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 2 @@ -3361,7 +3360,7 @@ def test_get_real_amount_wrong_amount(default_conf, trades_for_order, buy_order_ patch_get_signal(freqtrade) # Amount does not change - with pytest.raises(OperationalException, match=r"Half bought\? Amounts don't match"): + with pytest.raises(DependencyException, match=r"Half bought\? Amounts don't match"): freqtrade.get_real_amount(trade, limit_buy_order) From 8564affdf031088a0bdc3ba6a0f0b7c102384346 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 22:45:20 +0300 Subject: [PATCH 0732/3421] Add tests for Exchange.get_markets() --- freqtrade/exchange/exchange.py | 1 + tests/conftest.py | 44 ++++++++++++++++++++++ tests/exchange/test_exchange.py | 67 +++++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 193982b74..9e3406428 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -22,6 +22,7 @@ from freqtrade import (DependencyException, InvalidOrderException, from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.misc import deep_merge_dicts + logger = logging.getLogger(__name__) diff --git a/tests/conftest.py b/tests/conftest.py index 44f99b033..f21d61ee3 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -510,6 +510,50 @@ def markets(): } }, 'info': {}, + }, + 'LTC/USD': { + 'id': 'USD-LTC', + 'symbol': 'LTC/USD', + 'base': 'LTC', + 'quote': 'USD', + 'active': True, + 'precision': { + 'amount': 8, + 'price': 8 + }, + 'limits': { + 'amount': { + 'min': 0.06646786, + 'max': None + }, + 'price': { + 'min': 1e-08, + 'max': None + } + }, + 'info': {}, + }, + 'XLTCUSDT': { + 'id': 'xLTCUSDT', + 'symbol': 'XLTCUSDT', + 'base': 'LTC', + 'quote': 'USDT', + 'active': True, + 'precision': { + 'amount': 8, + 'price': 8 + }, + 'limits': { + 'amount': { + 'min': 0.06646786, + 'max': None + }, + 'price': { + 'min': 1e-08, + 'max': None + } + }, + 'info': {}, } } diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index fee9041b9..c5f41a784 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1488,6 +1488,73 @@ def test_get_valid_pair_combination(default_conf, mocker, markets): ex.get_valid_pair_combination("NOPAIR", "ETH") +@pytest.mark.parametrize("base_currencies, quote_currencies, pairs_only, active_only," + "expected_keys", [ +# Testing markets (in conftest.py): +# 'BLK/BTC': 'active': True +# 'BTT/BTC': 'active': True +# 'ETH/BTC': 'active': True +# 'ETH/USDT': 'active': True +# 'LTC/BTC': 'active': False +# 'LTC/USD': 'active': True +# 'LTC/USDT': 'active': True +# 'NEO/BTC': 'active': False +# 'TKN/BTC': 'active' not set +# 'XLTCUSDT': 'active': True, not a pair +# 'XRP/BTC': 'active': False + # all markets + ([], [], False, False, + ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'LTC/USDT', 'NEO/BTC', + 'TKN/BTC', 'XLTCUSDT', 'XRP/BTC']), + # active markets + ([], [], False, True, + ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/USD', 'LTC/USDT', 'TKN/BTC', 'XLTCUSDT']), + # all pairs + ([], [], True, False, + ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'LTC/USDT', 'NEO/BTC', + 'TKN/BTC', 'XRP/BTC']), + # active pairs + ([], [], True, True, + ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/USD', 'LTC/USDT', 'TKN/BTC']), + # all markets, base=ETH, LTC + (['ETH', 'LTC'], [], False, False, + ['ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), + # all markets, base=LTC + (['LTC'], [], False, False, + ['LTC/BTC', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), + # all markets, quote=USDT + ([], ['USDT'], False, False, + ['ETH/USDT', 'LTC/USDT', 'XLTCUSDT']), + # all markets, quote=USDT, USD + ([], ['USDT', 'USD'], False, False, + ['ETH/USDT', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), + # all markets, base=LTC, quote=USDT + (['LTC'], ['USDT'], False, False, + ['LTC/USDT', 'XLTCUSDT']), + # all pairs, base=LTC, quote=USDT + (['LTC'], ['USDT'], True, False, + ['LTC/USDT']), + # all markets, base=LTC, quote=USDT, NONEXISTENT + (['LTC'], ['USDT', 'NONEXISTENT'], False, False, + ['LTC/USDT', 'XLTCUSDT']), + # all markets, base=LTC, quote=NONEXISTENT + (['LTC'], ['NONEXISTENT'], False, False, + []), +]) +def test_get_markets(default_conf, mocker, markets, + base_currencies, quote_currencies, pairs_only, active_only, + expected_keys): + mocker.patch.multiple('freqtrade.exchange.Exchange', + _init_ccxt=MagicMock(return_value=MagicMock()), + _load_async_markets=MagicMock(), + validate_pairs=MagicMock(), + validate_timeframes=MagicMock(), + markets=PropertyMock(return_value=markets)) + ex = Exchange(default_conf) + pairs = ex.get_markets(base_currencies, quote_currencies, pairs_only, active_only) + assert sorted(pairs.keys()) == sorted(expected_keys) + + def test_timeframe_to_minutes(): assert timeframe_to_minutes("5m") == 5 assert timeframe_to_minutes("10m") == 10 From 2ebddcf45c6ad0802e91955de7c3636c33980b7b Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 17 Oct 2019 23:40:29 +0300 Subject: [PATCH 0733/3421] Make flake happy again --- tests/exchange/test_exchange.py | 129 ++++++++++++++++---------------- 1 file changed, 65 insertions(+), 64 deletions(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index c5f41a784..a3135415c 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -925,17 +925,17 @@ def test_get_balances_prod(default_conf, mocker, exchange_name): def test_get_tickers(default_conf, mocker, exchange_name): api_mock = MagicMock() tick = {'ETH/BTC': { - 'symbol': 'ETH/BTC', - 'bid': 0.5, - 'ask': 1, - 'last': 42, - }, 'BCH/BTC': { - 'symbol': 'BCH/BTC', - 'bid': 0.6, - 'ask': 0.5, - 'last': 41, - } - } + 'symbol': 'ETH/BTC', + 'bid': 0.5, + 'ask': 1, + 'last': 42, + }, 'BCH/BTC': { + 'symbol': 'BCH/BTC', + 'bid': 0.6, + 'ask': 0.5, + 'last': 41, + } + } api_mock.fetch_tickers = MagicMock(return_value=tick) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) # retrieve original ticker @@ -1488,59 +1488,60 @@ def test_get_valid_pair_combination(default_conf, mocker, markets): ex.get_valid_pair_combination("NOPAIR", "ETH") -@pytest.mark.parametrize("base_currencies, quote_currencies, pairs_only, active_only," - "expected_keys", [ -# Testing markets (in conftest.py): -# 'BLK/BTC': 'active': True -# 'BTT/BTC': 'active': True -# 'ETH/BTC': 'active': True -# 'ETH/USDT': 'active': True -# 'LTC/BTC': 'active': False -# 'LTC/USD': 'active': True -# 'LTC/USDT': 'active': True -# 'NEO/BTC': 'active': False -# 'TKN/BTC': 'active' not set -# 'XLTCUSDT': 'active': True, not a pair -# 'XRP/BTC': 'active': False - # all markets - ([], [], False, False, - ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'LTC/USDT', 'NEO/BTC', - 'TKN/BTC', 'XLTCUSDT', 'XRP/BTC']), - # active markets - ([], [], False, True, - ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/USD', 'LTC/USDT', 'TKN/BTC', 'XLTCUSDT']), - # all pairs - ([], [], True, False, - ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'LTC/USDT', 'NEO/BTC', - 'TKN/BTC', 'XRP/BTC']), - # active pairs - ([], [], True, True, - ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/USD', 'LTC/USDT', 'TKN/BTC']), - # all markets, base=ETH, LTC - (['ETH', 'LTC'], [], False, False, - ['ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), - # all markets, base=LTC - (['LTC'], [], False, False, - ['LTC/BTC', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), - # all markets, quote=USDT - ([], ['USDT'], False, False, - ['ETH/USDT', 'LTC/USDT', 'XLTCUSDT']), - # all markets, quote=USDT, USD - ([], ['USDT', 'USD'], False, False, - ['ETH/USDT', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), - # all markets, base=LTC, quote=USDT - (['LTC'], ['USDT'], False, False, - ['LTC/USDT', 'XLTCUSDT']), - # all pairs, base=LTC, quote=USDT - (['LTC'], ['USDT'], True, False, - ['LTC/USDT']), - # all markets, base=LTC, quote=USDT, NONEXISTENT - (['LTC'], ['USDT', 'NONEXISTENT'], False, False, - ['LTC/USDT', 'XLTCUSDT']), - # all markets, base=LTC, quote=NONEXISTENT - (['LTC'], ['NONEXISTENT'], False, False, - []), -]) +@pytest.mark.parametrize( + "base_currencies, quote_currencies, pairs_only, active_only, expected_keys", [ + # Testing markets (in conftest.py): + # 'BLK/BTC': 'active': True + # 'BTT/BTC': 'active': True + # 'ETH/BTC': 'active': True + # 'ETH/USDT': 'active': True + # 'LTC/BTC': 'active': False + # 'LTC/USD': 'active': True + # 'LTC/USDT': 'active': True + # 'NEO/BTC': 'active': False + # 'TKN/BTC': 'active' not set + # 'XLTCUSDT': 'active': True, not a pair + # 'XRP/BTC': 'active': False + # all markets + ([], [], False, False, + ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', + 'LTC/USDT', 'NEO/BTC', 'TKN/BTC', 'XLTCUSDT', 'XRP/BTC']), + # active markets + ([], [], False, True, + ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/USD', 'LTC/USDT', + 'TKN/BTC', 'XLTCUSDT']), + # all pairs + ([], [], True, False, + ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', + 'LTC/USDT', 'NEO/BTC', 'TKN/BTC', 'XRP/BTC']), + # active pairs + ([], [], True, True, + ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/USD', 'LTC/USDT', 'TKN/BTC']), + # all markets, base=ETH, LTC + (['ETH', 'LTC'], [], False, False, + ['ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), + # all markets, base=LTC + (['LTC'], [], False, False, + ['LTC/BTC', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), + # all markets, quote=USDT + ([], ['USDT'], False, False, + ['ETH/USDT', 'LTC/USDT', 'XLTCUSDT']), + # all markets, quote=USDT, USD + ([], ['USDT', 'USD'], False, False, + ['ETH/USDT', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), + # all markets, base=LTC, quote=USDT + (['LTC'], ['USDT'], False, False, + ['LTC/USDT', 'XLTCUSDT']), + # all pairs, base=LTC, quote=USDT + (['LTC'], ['USDT'], True, False, + ['LTC/USDT']), + # all markets, base=LTC, quote=USDT, NONEXISTENT + (['LTC'], ['USDT', 'NONEXISTENT'], False, False, + ['LTC/USDT', 'XLTCUSDT']), + # all markets, base=LTC, quote=NONEXISTENT + (['LTC'], ['NONEXISTENT'], False, False, + []), + ]) def test_get_markets(default_conf, mocker, markets, base_currencies, quote_currencies, pairs_only, active_only, expected_keys): From 369335b80c2c6a3720ad036d2c1d1bb9ce85a780 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 18 Oct 2019 00:48:40 +0300 Subject: [PATCH 0734/3421] Add tests for start_list_pairs() --- tests/test_utils.py | 159 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 158 insertions(+), 1 deletion(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index 55672c4c9..bc641af34 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -8,7 +8,7 @@ from freqtrade import OperationalException from freqtrade.state import RunMode from freqtrade.utils import (setup_utils_configuration, start_create_userdir, start_download_data, start_list_exchanges, - start_list_timeframes) + start_list_pairs, start_list_timeframes) from tests.conftest import get_args, log_has, patch_exchange @@ -164,6 +164,163 @@ def test_list_timeframes(mocker, capsys): assert re.search(r"^1d$", captured.out, re.MULTILINE) +def test_list_markets(mocker, markets, capsys): + + api_mock = MagicMock() + api_mock.markets = markets + patch_exchange(mocker, api_mock=api_mock) + + # Test with no --config + args = [ + "list-markets", + ] + with pytest.raises(OperationalException, + match=r"This command requires a configured exchange.*"): + start_list_pairs(get_args(args), False) + + # Test with --config config.json.example + args = [ + '--config', 'config.json.example', + "list-markets", + ] + start_list_pairs(get_args(args), False) + captured = capsys.readouterr() + assert re.match("Exchange Bittrex has 8 active markets:\n", + captured.out) + +# # Test with --exchange +# args = [ +# "list-markets", +# "--exchange", "binance" +# ] +# start_list_pairs(get_args(args), False) +# captured = capsys.readouterr() +# assert re.match("Exchange Binance has 8 active markets:\n", +# captured.out) + + # Test with --all: all markets + args = [ + '--config', 'config.json.example', + "list-markets", "--all" + ] + start_list_pairs(get_args(args), False) + captured = capsys.readouterr() + assert re.match("Exchange Bittrex has 11 markets:\n", + captured.out) + + # Test list-pairs subcommand: active pairs + args = [ + '--config', 'config.json.example', + "list-pairs", + ] + start_list_pairs(get_args(args), True) + captured = capsys.readouterr() + assert re.match("Exchange Bittrex has 7 active pairs:\n", + captured.out) + + # Test list-pairs subcommand with --all: all pairs + args = [ + '--config', 'config.json.example', + "list-pairs", "--all" + ] + start_list_pairs(get_args(args), True) + captured = capsys.readouterr() + assert re.match("Exchange Bittrex has 10 pairs:\n", + captured.out) + + # active markets, base=ETH, LTC + args = [ + '--config', 'config.json.example', + "list-markets", + "--base", "ETH", "LTC" + ] + start_list_pairs(get_args(args), False) + captured = capsys.readouterr() + assert re.match("Exchange Bittrex has 5 active markets with ETH, LTC as base currencies:\n", + captured.out) + + # active markets, base=LTC + args = [ + '--config', 'config.json.example', + "list-markets", + "--base", "LTC" + ] + start_list_pairs(get_args(args), False) + captured = capsys.readouterr() + assert re.match("Exchange Bittrex has 3 active markets with LTC as base currency:\n", + captured.out) + + # active markets, quote=USDT, USD + args = [ + '--config', 'config.json.example', + "list-markets", + "--quote", "USDT", "USD" + ] + start_list_pairs(get_args(args), False) + captured = capsys.readouterr() + assert re.match("Exchange Bittrex has 4 active markets with USDT, USD as quote currencies:\n", + captured.out) + + # active markets, quote=USDT + args = [ + '--config', 'config.json.example', + "list-markets", + "--quote", "USDT" + ] + start_list_pairs(get_args(args), False) + captured = capsys.readouterr() + assert re.match("Exchange Bittrex has 3 active markets with USDT as quote currency:\n", + captured.out) + + # active markets, base=LTC, quote=USDT + args = [ + '--config', 'config.json.example', + "list-markets", + "--base", "LTC", "--quote", "USDT" + ] + start_list_pairs(get_args(args), False) + captured = capsys.readouterr() + assert re.match("Exchange Bittrex has 2 active markets with LTC as base currency and " + "with USDT as quote currency:\n", + captured.out) + + # active pairs, base=LTC, quote=USDT + args = [ + '--config', 'config.json.example', + "list-pairs", + "--base", "LTC", "--quote", "USDT" + ] + start_list_pairs(get_args(args), True) + captured = capsys.readouterr() + assert re.match("Exchange Bittrex has 1 active pair with LTC as base currency and " + "with USDT as quote currency:\n", + captured.out) + + # active markets, base=LTC, quote=USDT, NONEXISTENT + args = [ + '--config', 'config.json.example', + "list-markets", + "--base", "LTC", "--quote", "USDT", "NONEXISTENT" + ] + start_list_pairs(get_args(args), False) + captured = capsys.readouterr() + assert re.match("Exchange Bittrex has 2 active markets with LTC as base currency and " + "with USDT, NONEXISTENT as quote currencies:\n", + captured.out) + + # active markets, base=LTC, quote=NONEXISTENT + args = [ + '--config', 'config.json.example', + "list-markets", + "--base", "LTC", "--quote", "NONEXISTENT" + ] + start_list_pairs(get_args(args), False) + captured = capsys.readouterr() + assert re.match("Exchange Bittrex has 0 active markets with LTC as base currency and " + "with NONEXISTENT as quote currency.\n", + captured.out) + + def test_create_datadir_failed(caplog): args = [ From e957894852db8d817025da071fb06cf4c7a2366a Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 18 Oct 2019 01:26:05 +0300 Subject: [PATCH 0735/3421] Rename start_list_pairs() -> start_list_markets() --- freqtrade/configuration/arguments.py | 6 +++--- freqtrade/utils.py | 4 ++-- tests/test_utils.py | 30 ++++++++++++++-------------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 646cdb2b7..07813b104 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -112,7 +112,7 @@ class Arguments: from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge from freqtrade.utils import (start_create_userdir, start_download_data, start_list_exchanges, start_list_timeframes, - start_list_pairs) + start_list_markets) subparsers = self.parser.add_subparsers(dest='subparser') @@ -158,7 +158,7 @@ class Arguments: 'list-markets', help='Print markets on exchange.' ) - list_markets_cmd.set_defaults(func=partial(start_list_pairs, pairs_only=False)) + list_markets_cmd.set_defaults(func=partial(start_list_markets, pairs_only=False)) self._build_args(optionlist=ARGS_LIST_PAIRS, parser=list_markets_cmd) # Add list-pairs subcommand @@ -166,7 +166,7 @@ class Arguments: 'list-pairs', help='Print pairs on exchange.' ) - list_pairs_cmd.set_defaults(func=partial(start_list_pairs, pairs_only=True)) + list_pairs_cmd.set_defaults(func=partial(start_list_markets, pairs_only=True)) self._build_args(optionlist=ARGS_LIST_PAIRS, parser=list_pairs_cmd) # Add download-data subcommand diff --git a/freqtrade/utils.py b/freqtrade/utils.py index e00b0739e..29b5c92f4 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -125,9 +125,9 @@ def start_list_timeframes(args: Dict[str, Any]) -> None: f"{', '.join(exchange.timeframes)}.") -def start_list_pairs(args: Dict[str, Any], pairs_only: bool = False) -> None: +def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: """ - Print pairs on the exchange + Print pairs/markets on the exchange :param args: Cli args from Arguments() :param pairs_only: if True print only pairs, otherwise print all instruments (markets) :return: None diff --git a/tests/test_utils.py b/tests/test_utils.py index bc641af34..bcb49b7b5 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -8,7 +8,7 @@ from freqtrade import OperationalException from freqtrade.state import RunMode from freqtrade.utils import (setup_utils_configuration, start_create_userdir, start_download_data, start_list_exchanges, - start_list_pairs, start_list_timeframes) + start_list_markets, start_list_timeframes) from tests.conftest import get_args, log_has, patch_exchange @@ -176,14 +176,14 @@ def test_list_markets(mocker, markets, capsys): ] with pytest.raises(OperationalException, match=r"This command requires a configured exchange.*"): - start_list_pairs(get_args(args), False) + start_list_markets(get_args(args), False) # Test with --config config.json.example args = [ '--config', 'config.json.example', "list-markets", ] - start_list_pairs(get_args(args), False) + start_list_markets(get_args(args), False) captured = capsys.readouterr() assert re.match("Exchange Bittrex has 8 active markets:\n", captured.out) @@ -193,7 +193,7 @@ def test_list_markets(mocker, markets, capsys): # "list-markets", # "--exchange", "binance" # ] -# start_list_pairs(get_args(args), False) +# start_list_markets(get_args(args), False) # captured = capsys.readouterr() # assert re.match("Exchange Binance has 8 active markets:\n", # captured.out) @@ -203,7 +203,7 @@ def test_list_markets(mocker, markets, capsys): '--config', 'config.json.example', "list-markets", "--all" ] - start_list_pairs(get_args(args), False) + start_list_markets(get_args(args), False) captured = capsys.readouterr() assert re.match("Exchange Bittrex has 11 markets:\n", captured.out) @@ -213,7 +213,7 @@ def test_list_markets(mocker, markets, capsys): '--config', 'config.json.example', "list-pairs", ] - start_list_pairs(get_args(args), True) + start_list_markets(get_args(args), True) captured = capsys.readouterr() assert re.match("Exchange Bittrex has 7 active pairs:\n", captured.out) @@ -223,7 +223,7 @@ def test_list_markets(mocker, markets, capsys): '--config', 'config.json.example', "list-pairs", "--all" ] - start_list_pairs(get_args(args), True) + start_list_markets(get_args(args), True) captured = capsys.readouterr() assert re.match("Exchange Bittrex has 10 pairs:\n", captured.out) @@ -234,7 +234,7 @@ def test_list_markets(mocker, markets, capsys): "list-markets", "--base", "ETH", "LTC" ] - start_list_pairs(get_args(args), False) + start_list_markets(get_args(args), False) captured = capsys.readouterr() assert re.match("Exchange Bittrex has 5 active markets with ETH, LTC as base currencies:\n", captured.out) @@ -245,7 +245,7 @@ def test_list_markets(mocker, markets, capsys): "list-markets", "--base", "LTC" ] - start_list_pairs(get_args(args), False) + start_list_markets(get_args(args), False) captured = capsys.readouterr() assert re.match("Exchange Bittrex has 3 active markets with LTC as base currency:\n", captured.out) @@ -256,7 +256,7 @@ def test_list_markets(mocker, markets, capsys): "list-markets", "--quote", "USDT", "USD" ] - start_list_pairs(get_args(args), False) + start_list_markets(get_args(args), False) captured = capsys.readouterr() assert re.match("Exchange Bittrex has 4 active markets with USDT, USD as quote currencies:\n", captured.out) @@ -267,7 +267,7 @@ def test_list_markets(mocker, markets, capsys): "list-markets", "--quote", "USDT" ] - start_list_pairs(get_args(args), False) + start_list_markets(get_args(args), False) captured = capsys.readouterr() assert re.match("Exchange Bittrex has 3 active markets with USDT as quote currency:\n", captured.out) @@ -278,7 +278,7 @@ def test_list_markets(mocker, markets, capsys): "list-markets", "--base", "LTC", "--quote", "USDT" ] - start_list_pairs(get_args(args), False) + start_list_markets(get_args(args), False) captured = capsys.readouterr() assert re.match("Exchange Bittrex has 2 active markets with LTC as base currency and " "with USDT as quote currency:\n", @@ -290,7 +290,7 @@ def test_list_markets(mocker, markets, capsys): "list-pairs", "--base", "LTC", "--quote", "USDT" ] - start_list_pairs(get_args(args), True) + start_list_markets(get_args(args), True) captured = capsys.readouterr() assert re.match("Exchange Bittrex has 1 active pair with LTC as base currency and " "with USDT as quote currency:\n", @@ -302,7 +302,7 @@ def test_list_markets(mocker, markets, capsys): "list-markets", "--base", "LTC", "--quote", "USDT", "NONEXISTENT" ] - start_list_pairs(get_args(args), False) + start_list_markets(get_args(args), False) captured = capsys.readouterr() assert re.match("Exchange Bittrex has 2 active markets with LTC as base currency and " "with USDT, NONEXISTENT as quote currencies:\n", @@ -314,7 +314,7 @@ def test_list_markets(mocker, markets, capsys): "list-markets", "--base", "LTC", "--quote", "NONEXISTENT" ] - start_list_pairs(get_args(args), False) + start_list_markets(get_args(args), False) captured = capsys.readouterr() assert re.match("Exchange Bittrex has 0 active markets with LTC as base currency and " "with NONEXISTENT as quote currency.\n", From c735d352656f05619a6134554ee5f8c1bf21ee41 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 17 Oct 2019 19:53:01 +0200 Subject: [PATCH 0736/3421] Extract open_trade generation from freqtradebot --- freqtrade/freqtradebot.py | 6 +- tests/conftest.py | 20 ++++- tests/test_freqtradebot.py | 148 +++++++++---------------------------- 3 files changed, 54 insertions(+), 120 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d62c6a912..46ff09173 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -11,7 +11,7 @@ from typing import Any, Dict, List, Optional, Tuple import arrow from requests.exceptions import RequestException -from freqtrade import (DependencyException, OperationalException, InvalidOrderException, +from freqtrade import (DependencyException, InvalidOrderException, __version__, constants, persistence) from freqtrade.data.converter import order_book_to_dataframe from freqtrade.data.dataprovider import DataProvider @@ -508,7 +508,7 @@ class FreqtradeBot: if not isclose(amount, order_amount, abs_tol=constants.MATH_CLOSE_PREC): logger.warning(f"Amount {amount} does not match amount {trade.amount}") - raise OperationalException("Half bought? Amounts don't match") + raise DependencyException("Half bought? Amounts don't match") real_amount = amount - fee_abs if fee_abs != 0: logger.info(f"Applying fee on amount for {trade} " @@ -536,7 +536,7 @@ class FreqtradeBot: # Fee was applied, so set to 0 trade.fee_open = 0 - except OperationalException as exception: + except DependencyException as exception: logger.warning("Could not update trade amount: %s", exception) trade.update(order) diff --git a/tests/conftest.py b/tests/conftest.py index b0c68c805..8871c01b4 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -9,8 +9,8 @@ from pathlib import Path from unittest.mock import MagicMock, PropertyMock import arrow -import pytest import numpy as np +import pytest from telegram import Chat, Message, Update from freqtrade import constants, persistence @@ -19,10 +19,10 @@ from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.edge import Edge, PairInfo from freqtrade.exchange import Exchange from freqtrade.freqtradebot import FreqtradeBot +from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver from freqtrade.worker import Worker - logging.getLogger('').setLevel(logging.INFO) @@ -1069,3 +1069,19 @@ def import_fails() -> None: # restore previous importfunction builtins.__import__ = realimport + + +@pytest.fixture(scope="function") +def open_trade(): + return Trade( + pair='ETH/BTC', + open_rate=0.00001099, + exchange='bittrex', + open_order_id='123456789', + amount=90.99181073, + fee_open=0.0, + fee_close=0.0, + stake_amount=1, + open_date=arrow.utcnow().shift(minutes=-601).datetime, + is_open=True + ) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 28ba57c1d..3072a4661 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1916,7 +1916,8 @@ def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order, freqtrade.handle_trade(trade) -def test_check_handle_timedout_buy(default_conf, ticker, limit_buy_order_old, fee, mocker) -> None: +def test_check_handle_timedout_buy(default_conf, ticker, limit_buy_order_old, open_trade, + fee, mocker) -> None: rpc_mock = patch_RPCManager(mocker) cancel_order_mock = MagicMock() patch_exchange(mocker) @@ -1929,31 +1930,18 @@ def test_check_handle_timedout_buy(default_conf, ticker, limit_buy_order_old, fe ) freqtrade = FreqtradeBot(default_conf) - trade_buy = Trade( - pair='ETH/BTC', - open_rate=0.00001099, - exchange='bittrex', - open_order_id='123456789', - amount=90.99181073, - fee_open=0.0, - fee_close=0.0, - stake_amount=1, - open_date=arrow.utcnow().shift(minutes=-601).datetime, - is_open=True - ) - - Trade.session.add(trade_buy) + Trade.session.add(open_trade) # check it does cancel buy orders over the time limit freqtrade.check_handle_timedout() assert cancel_order_mock.call_count == 1 assert rpc_mock.call_count == 1 - trades = Trade.query.filter(Trade.open_order_id.is_(trade_buy.open_order_id)).all() + trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() nb_trades = len(trades) assert nb_trades == 0 -def test_check_handle_cancelled_buy(default_conf, ticker, limit_buy_order_old, +def test_check_handle_cancelled_buy(default_conf, ticker, limit_buy_order_old, open_trade, fee, mocker, caplog) -> None: """ Handle Buy order cancelled on exchange""" rpc_mock = patch_RPCManager(mocker) @@ -1969,32 +1957,19 @@ def test_check_handle_cancelled_buy(default_conf, ticker, limit_buy_order_old, ) freqtrade = FreqtradeBot(default_conf) - trade_buy = Trade( - pair='ETH/BTC', - open_rate=0.00001099, - exchange='bittrex', - open_order_id='123456789', - amount=90.99181073, - fee_open=0.0, - fee_close=0.0, - stake_amount=1, - open_date=arrow.utcnow().shift(minutes=-601).datetime, - is_open=True - ) - - Trade.session.add(trade_buy) + Trade.session.add(open_trade) # check it does cancel buy orders over the time limit freqtrade.check_handle_timedout() assert cancel_order_mock.call_count == 0 assert rpc_mock.call_count == 1 - trades = Trade.query.filter(Trade.open_order_id.is_(trade_buy.open_order_id)).all() + trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() nb_trades = len(trades) assert nb_trades == 0 assert log_has_re("Buy order canceled on Exchange for Trade.*", caplog) -def test_check_handle_timedout_buy_exception(default_conf, ticker, limit_buy_order_old, +def test_check_handle_timedout_buy_exception(default_conf, ticker, limit_buy_order_old, open_trade, fee, mocker) -> None: rpc_mock = patch_RPCManager(mocker) cancel_order_mock = MagicMock() @@ -2009,31 +1984,19 @@ def test_check_handle_timedout_buy_exception(default_conf, ticker, limit_buy_ord ) freqtrade = FreqtradeBot(default_conf) - trade_buy = Trade( - pair='ETH/BTC', - open_rate=0.00001099, - exchange='bittrex', - open_order_id='123456789', - amount=90.99181073, - fee_open=0.0, - fee_close=0.0, - stake_amount=1, - open_date=arrow.utcnow().shift(minutes=-601).datetime, - is_open=True - ) - - Trade.session.add(trade_buy) + Trade.session.add(open_trade) # check it does cancel buy orders over the time limit freqtrade.check_handle_timedout() assert cancel_order_mock.call_count == 0 assert rpc_mock.call_count == 0 - trades = Trade.query.filter(Trade.open_order_id.is_(trade_buy.open_order_id)).all() + trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() nb_trades = len(trades) assert nb_trades == 1 -def test_check_handle_timedout_sell(default_conf, ticker, limit_sell_order_old, mocker) -> None: +def test_check_handle_timedout_sell(default_conf, ticker, limit_sell_order_old, mocker, + open_trade) -> None: rpc_mock = patch_RPCManager(mocker) cancel_order_mock = MagicMock() patch_exchange(mocker) @@ -2045,30 +2008,20 @@ def test_check_handle_timedout_sell(default_conf, ticker, limit_sell_order_old, ) freqtrade = FreqtradeBot(default_conf) - trade_sell = Trade( - pair='ETH/BTC', - open_rate=0.00001099, - exchange='bittrex', - open_order_id='123456789', - amount=90.99181073, - fee_open=0.0, - fee_close=0.0, - stake_amount=1, - open_date=arrow.utcnow().shift(hours=-5).datetime, - close_date=arrow.utcnow().shift(minutes=-601).datetime, - is_open=False - ) + open_trade.open_date = arrow.utcnow().shift(hours=-5).datetime + open_trade.close_date = arrow.utcnow().shift(minutes=-601).datetime + open_trade.is_open = False - Trade.session.add(trade_sell) + Trade.session.add(open_trade) # check it does cancel sell orders over the time limit freqtrade.check_handle_timedout() assert cancel_order_mock.call_count == 1 assert rpc_mock.call_count == 1 - assert trade_sell.is_open is True + assert open_trade.is_open is True -def test_check_handle_cancelled_sell(default_conf, ticker, limit_sell_order_old, +def test_check_handle_cancelled_sell(default_conf, ticker, limit_sell_order_old, open_trade, mocker, caplog) -> None: """ Handle sell order cancelled on exchange""" rpc_mock = patch_RPCManager(mocker) @@ -2083,32 +2036,22 @@ def test_check_handle_cancelled_sell(default_conf, ticker, limit_sell_order_old, ) freqtrade = FreqtradeBot(default_conf) - trade_sell = Trade( - pair='ETH/BTC', - open_rate=0.00001099, - exchange='bittrex', - open_order_id='123456789', - amount=90.99181073, - fee_open=0.0, - fee_close=0.0, - stake_amount=1, - open_date=arrow.utcnow().shift(hours=-5).datetime, - close_date=arrow.utcnow().shift(minutes=-601).datetime, - is_open=False - ) + open_trade.open_date = arrow.utcnow().shift(hours=-5).datetime + open_trade.close_date = arrow.utcnow().shift(minutes=-601).datetime + open_trade.is_open = False - Trade.session.add(trade_sell) + Trade.session.add(open_trade) # check it does cancel sell orders over the time limit freqtrade.check_handle_timedout() assert cancel_order_mock.call_count == 0 assert rpc_mock.call_count == 1 - assert trade_sell.is_open is True + assert open_trade.is_open is True assert log_has_re("Sell order canceled on exchange for Trade.*", caplog) def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old_partial, - mocker) -> None: + open_trade, mocker) -> None: rpc_mock = patch_RPCManager(mocker) cancel_order_mock = MagicMock() patch_exchange(mocker) @@ -2120,33 +2063,20 @@ def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old ) freqtrade = FreqtradeBot(default_conf) - trade_buy = Trade( - pair='ETH/BTC', - open_rate=0.00001099, - exchange='bittrex', - open_order_id='123456789', - amount=90.99181073, - fee_open=0.0, - fee_close=0.0, - stake_amount=1, - open_date=arrow.utcnow().shift(minutes=-601).datetime, - is_open=True - ) - - Trade.session.add(trade_buy) + Trade.session.add(open_trade) # check it does cancel buy orders over the time limit # note this is for a partially-complete buy order freqtrade.check_handle_timedout() assert cancel_order_mock.call_count == 1 assert rpc_mock.call_count == 1 - trades = Trade.query.filter(Trade.open_order_id.is_(trade_buy.open_order_id)).all() + trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() assert len(trades) == 1 assert trades[0].amount == 23.0 - assert trades[0].stake_amount == trade_buy.open_rate * trades[0].amount + assert trades[0].stake_amount == open_trade.open_rate * trades[0].amount -def test_check_handle_timedout_exception(default_conf, ticker, mocker, caplog) -> None: +def test_check_handle_timedout_exception(default_conf, ticker, open_trade, mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) cancel_order_mock = MagicMock() @@ -2164,26 +2094,12 @@ def test_check_handle_timedout_exception(default_conf, ticker, mocker, caplog) - ) freqtrade = FreqtradeBot(default_conf) - open_date = arrow.utcnow().shift(minutes=-601) - trade_buy = Trade( - pair='ETH/BTC', - open_rate=0.00001099, - exchange='bittrex', - open_order_id='123456789', - amount=90.99181073, - fee_open=0.0, - fee_close=0.0, - stake_amount=1, - open_date=open_date.datetime, - is_open=True - ) - - Trade.session.add(trade_buy) + Trade.session.add(open_trade) freqtrade.check_handle_timedout() assert log_has_re(r"Cannot query order for Trade\(id=1, pair=ETH/BTC, amount=90.99181073, " r"open_rate=0.00001099, open_since=" - f"{open_date.strftime('%Y-%m-%d %H:%M:%S')}" + f"{open_trade.open_date.strftime('%Y-%m-%d %H:%M:%S')}" r"\) due to Traceback \(most recent call last\):\n*", caplog) @@ -2204,9 +2120,11 @@ def test_handle_timedout_limit_buy(mocker, default_conf, limit_buy_order) -> Non limit_buy_order['remaining'] = limit_buy_order['amount'] assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 + + cancel_order_mock.reset_mock() limit_buy_order['amount'] = 2 assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) - assert cancel_order_mock.call_count == 2 + assert cancel_order_mock.call_count == 1 def test_handle_timedout_limit_sell(mocker, default_conf) -> None: From 0ac46eddca5a5277148cc824c46d05873586b094 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 18 Oct 2019 06:38:07 +0200 Subject: [PATCH 0737/3421] Add tests for new scenario --- tests/conftest.py | 8 ++++++++ tests/test_freqtradebot.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 8871c01b4..7d3f1c7ab 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -608,6 +608,14 @@ def limit_buy_order_old_partial(): } +@pytest.fixture +def limit_buy_order_old_partial_canceled(limit_buy_order_old_partial): + res = deepcopy(limit_buy_order_old_partial) + res['status'] = 'canceled' + res['fee'] = {'cost': 0.0001, 'currency': 'ETH'} + return res + + @pytest.fixture def limit_sell_order(): return { diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 3072a4661..89e4a40da 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2076,6 +2076,42 @@ def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old assert trades[0].stake_amount == open_trade.open_rate * trades[0].amount +def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, caplog, + limit_buy_order_old_partial, trades_for_order, + limit_buy_order_old_partial_canceled, mocker) -> None: + rpc_mock = patch_RPCManager(mocker) + cancel_order_mock = MagicMock(return_value=limit_buy_order_old_partial_canceled) + patch_exchange(mocker) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_ticker=ticker, + get_order=MagicMock(return_value=limit_buy_order_old_partial), + cancel_order=cancel_order_mock, + get_trades_for_order=MagicMock(return_value=trades_for_order), + ) + freqtrade = FreqtradeBot(default_conf) + + assert open_trade.amount == limit_buy_order_old_partial['amount'] + + open_trade.fee_open = 0.0025 + open_trade.fee_close = 0.0025 + Trade.session.add(open_trade) + # cancelling a half-filled order should update the amount to the bought amount + # and apply fees if necessary. + freqtrade.check_handle_timedout() + + assert log_has_re(r"Applying fee on amount for Trade.* Order", caplog) + + assert cancel_order_mock.call_count == 1 + assert rpc_mock.call_count == 1 + trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() + assert len(trades) == 1 + # Verify that tradehas been updated + assert trades[0].amount == limit_buy_order_old_partial['amount'] - 0.0001 + assert trades[0].open_order_id is None + assert trades[0].fee_open == 0 + + def test_check_handle_timedout_exception(default_conf, ticker, open_trade, mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) From c181fac6c706fb334ca6f5e8b9200faf62afce7d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 18 Oct 2019 06:46:48 +0200 Subject: [PATCH 0738/3421] fix #2383 --- freqtrade/freqtradebot.py | 16 +++++++++++++--- tests/test_freqtradebot.py | 4 ++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 46ff09173..9b9fd3531 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -802,16 +802,26 @@ class FreqtradeBot: """Buy timeout - cancel order :return: True if order was fully cancelled """ - self.exchange.cancel_order(trade.open_order_id, trade.pair) - if order['remaining'] == order['amount']: + corder = self.exchange.cancel_order(trade.open_order_id, trade.pair) + if corder['remaining'] == corder['amount']: # if trade is not partially completed, just delete the trade self.handle_buy_order_full_cancel(trade, "cancelled due to timeout") return True # if trade is partially complete, edit the stake details for the trade # and close the order - trade.amount = order['amount'] - order['remaining'] + trade.amount = corder['amount'] - corder['remaining'] trade.stake_amount = trade.amount * trade.open_rate + # verify if fees were taken from amount to avoid problems during selling + try: + new_amount = self.get_real_amount(trade, corder) + if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): + trade.amount = new_amount + # Fee was applied, so set to 0 + trade.fee_open = 0 + except DependencyException as e: + logger.warning("Could not update trade amount: %s", e) + trade.open_order_id = None logger.info('Partial buy order timeout for %s.', trade) self.rpc.send_msg({ diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 89e4a40da..b5d36f994 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2053,7 +2053,7 @@ def test_check_handle_cancelled_sell(default_conf, ticker, limit_sell_order_old, def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old_partial, open_trade, mocker) -> None: rpc_mock = patch_RPCManager(mocker) - cancel_order_mock = MagicMock() + cancel_order_mock = MagicMock(return_value=limit_buy_order_old_partial) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -2143,7 +2143,7 @@ def test_check_handle_timedout_exception(default_conf, ticker, open_trade, mocke def test_handle_timedout_limit_buy(mocker, default_conf, limit_buy_order) -> None: patch_RPCManager(mocker) patch_exchange(mocker) - cancel_order_mock = MagicMock() + cancel_order_mock = MagicMock(return_value=limit_buy_order) mocker.patch.multiple( 'freqtrade.exchange.Exchange', cancel_order=cancel_order_mock From 271846dfb6058afe80f376d1ab6bd36d331aaf9e Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 18 Oct 2019 07:01:05 +0200 Subject: [PATCH 0739/3421] Simplify cancel timedout --- freqtrade/freqtradebot.py | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 9b9fd3531..4b4904d24 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -772,21 +772,19 @@ class FreqtradeBot: self.wallets.update() continue - # Handle cancelled on exchange - if order['status'] == 'canceled': - if order['side'] == 'buy': - self.handle_buy_order_full_cancel(trade, "canceled on Exchange") - elif order['side'] == 'sell': - self.handle_timedout_limit_sell(trade, order) - self.wallets.update() - # Check if order is still actually open - elif order['status'] == 'open': - if order['side'] == 'buy' and ordertime < buy_timeoutthreashold: - self.handle_timedout_limit_buy(trade, order) - self.wallets.update() - elif order['side'] == 'sell' and ordertime < sell_timeoutthreashold: - self.handle_timedout_limit_sell(trade, order) - self.wallets.update() + if (order['side'] == 'buy' + and order['status'] == 'canceled' + or (order['status'] == 'open' + and order['side'] == 'buy' and ordertime < buy_timeoutthreashold)): + + self.handle_timedout_limit_buy(trade, order) + self.wallets.update() + + elif (order['side'] == 'sell' and order['status'] == 'canceled' + or (order['status'] == 'open' + and order['side'] == 'sell' and ordertime < sell_timeoutthreashold)): + self.handle_timedout_limit_sell(trade, order) + self.wallets.update() def handle_buy_order_full_cancel(self, trade: Trade, reason: str) -> None: """Close trade in database and send message""" @@ -802,10 +800,17 @@ class FreqtradeBot: """Buy timeout - cancel order :return: True if order was fully cancelled """ - corder = self.exchange.cancel_order(trade.open_order_id, trade.pair) + reason = "cancelled due to timeout" + if order['status'] != 'canceled': + corder = self.exchange.cancel_order(trade.open_order_id, trade.pair) + else: + # Order was cancelled already, so we can reuse the existing dict + corder = order + reason = "canceled on Exchange" + if corder['remaining'] == corder['amount']: # if trade is not partially completed, just delete the trade - self.handle_buy_order_full_cancel(trade, "cancelled due to timeout") + self.handle_buy_order_full_cancel(trade, reason) return True # if trade is partially complete, edit the stake details for the trade From 2588990f4b1ec521accab7cff7e59fdcb142373f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 18 Oct 2019 07:10:02 +0200 Subject: [PATCH 0740/3421] Require unfilledtimeout - don't require telegram in config --- freqtrade/constants.py | 2 +- freqtrade/rpc/rpc_manager.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 697bc280f..a310b4896 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -266,6 +266,6 @@ CONF_SCHEMA = { 'stake_amount', 'dry_run', 'bid_strategy', - 'telegram' + 'unfilledtimeout', ] } diff --git a/freqtrade/rpc/rpc_manager.py b/freqtrade/rpc/rpc_manager.py index 802550b94..cb9e697e9 100644 --- a/freqtrade/rpc/rpc_manager.py +++ b/freqtrade/rpc/rpc_manager.py @@ -18,7 +18,7 @@ class RPCManager: self.registered_modules: List[RPC] = [] # Enable telegram - if freqtrade.config['telegram'].get('enabled', False): + if freqtrade.config.get('telegram', {}).get('enabled', False): logger.info('Enabling rpc.telegram ...') from freqtrade.rpc.telegram import Telegram self.registered_modules.append(Telegram(freqtrade)) From 9d739f98ac6fd9026b419feeed1d462036c1ef35 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 18 Oct 2019 09:04:05 +0200 Subject: [PATCH 0741/3421] use requested - remaining amount - not the requested amount! --- freqtrade/freqtradebot.py | 7 +++--- tests/test_freqtradebot.py | 49 ++++++++++++++++++++++++++++++++++---- 2 files changed, 49 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4b4904d24..e3e2ed24b 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -466,12 +466,13 @@ class FreqtradeBot: if result: self.wallets.update() - def get_real_amount(self, trade: Trade, order: Dict) -> float: + def get_real_amount(self, trade: Trade, order: Dict, order_amount: float = None) -> float: """ Get real amount for the trade Necessary for exchanges which charge fees in base currency (e.g. binance) """ - order_amount = order['amount'] + if order_amount is None: + order_amount = order['amount'] # Only run for closed orders if trade.fee_open == 0 or order['status'] == 'open': return order_amount @@ -819,7 +820,7 @@ class FreqtradeBot: trade.stake_amount = trade.amount * trade.open_rate # verify if fees were taken from amount to avoid problems during selling try: - new_amount = self.get_real_amount(trade, corder) + new_amount = self.get_real_amount(trade, corder, trade.amount) if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): trade.amount = new_amount # Fee was applied, so set to 0 diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index b5d36f994..503c0e78c 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2076,7 +2076,7 @@ def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old assert trades[0].stake_amount == open_trade.open_rate * trades[0].amount -def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, caplog, +def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, caplog, fee, limit_buy_order_old_partial, trades_for_order, limit_buy_order_old_partial_canceled, mocker) -> None: rpc_mock = patch_RPCManager(mocker) @@ -2093,8 +2093,8 @@ def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, cap assert open_trade.amount == limit_buy_order_old_partial['amount'] - open_trade.fee_open = 0.0025 - open_trade.fee_close = 0.0025 + open_trade.fee_open = fee() + open_trade.fee_close = fee() Trade.session.add(open_trade) # cancelling a half-filled order should update the amount to the bought amount # and apply fees if necessary. @@ -2107,11 +2107,52 @@ def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, cap trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() assert len(trades) == 1 # Verify that tradehas been updated - assert trades[0].amount == limit_buy_order_old_partial['amount'] - 0.0001 + assert trades[0].amount == (limit_buy_order_old_partial['amount'] - + limit_buy_order_old_partial['remaining']) - 0.0001 assert trades[0].open_order_id is None assert trades[0].fee_open == 0 +def test_check_handle_timedout_partial_except(default_conf, ticker, open_trade, caplog, fee, + limit_buy_order_old_partial, trades_for_order, + limit_buy_order_old_partial_canceled, mocker) -> None: + rpc_mock = patch_RPCManager(mocker) + cancel_order_mock = MagicMock(return_value=limit_buy_order_old_partial_canceled) + patch_exchange(mocker) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_ticker=ticker, + get_order=MagicMock(return_value=limit_buy_order_old_partial), + cancel_order=cancel_order_mock, + get_trades_for_order=MagicMock(return_value=trades_for_order), + ) + mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_real_amount', + MagicMock(side_effect=DependencyException)) + freqtrade = FreqtradeBot(default_conf) + + assert open_trade.amount == limit_buy_order_old_partial['amount'] + + open_trade.fee_open = fee() + open_trade.fee_close = fee() + Trade.session.add(open_trade) + # cancelling a half-filled order should update the amount to the bought amount + # and apply fees if necessary. + freqtrade.check_handle_timedout() + + assert log_has_re(r"Could not update trade amount: .*", caplog) + + assert cancel_order_mock.call_count == 1 + assert rpc_mock.call_count == 1 + trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() + assert len(trades) == 1 + # Verify that tradehas been updated + + assert trades[0].amount == (limit_buy_order_old_partial['amount'] - + limit_buy_order_old_partial['remaining']) + assert trades[0].open_order_id is None + assert trades[0].fee_open == fee() + + def test_check_handle_timedout_exception(default_conf, ticker, open_trade, mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) From 00a95945e198919e102113754861ae9b66af0729 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 18 Oct 2019 10:00:43 +0200 Subject: [PATCH 0742/3421] Improve assumptions --- docs/backtesting.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/backtesting.md b/docs/backtesting.md index d8d4cf00d..6db573224 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -195,6 +195,7 @@ Hence, keep in mind that your performance is an integral mix of all different el Since backtesting lacks some detailed information about what happens within a candle, it needs to take a few assumptions: - Buys happen at open-price +- Sell signal sells happen at open-price of the following candle - Low happens before high for stoploss, protecting capital first. - ROI sells are compared to high - but the ROI value is used (e.g. ROI = 2%, high=5% - so the sell will be at 2%) - Stoploss sells happen exactly at stoploss price, even if low was lower @@ -203,6 +204,9 @@ Since backtesting lacks some detailed information about what happens within a ca - Low uses the adjusted stoploss (so sells with large high-low difference are backtested correctly) - Sell-reason does not explain if a trade was positive or negative, just what triggered the sell (this can look odd if negative ROI values are used) +Taking these assumptions, backtesting tries to mirror real trading as closely as possible. However, backtesting will **never** replace running a strategy in dry-run mode. +Also, keep in mind that past results don't guarantee future success. + ### Further backtest-result analysis To further analyze your backtest results, you can [export the trades](#exporting-trades-to-file). From ed8d8057974ef897a32bb40bbb6d57f22d48bb91 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 18 Oct 2019 11:31:43 +0200 Subject: [PATCH 0743/3421] Make paths os independent to have tests pass on windows --- tests/test_configuration.py | 9 +++++---- tests/test_plotting.py | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index b133c3609..2aa805fe6 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -399,7 +399,7 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config assert log_has('Using data directory: {} ...'.format("/foo/bar"), caplog) - assert log_has('Using user-data directory: {} ...'.format("/tmp/freqtrade"), caplog) + assert log_has('Using user-data directory: {} ...'.format(Path("/tmp/freqtrade")), caplog) assert 'user_data_dir' in config assert 'ticker_interval' in config @@ -652,9 +652,9 @@ def test_create_userdata_dir(mocker, default_conf, caplog) -> None: x = create_userdata_dir('/tmp/bar', create_dir=True) assert md.call_count == 7 assert md.call_args[1]['parents'] is False - assert log_has('Created user-data directory: /tmp/bar', caplog) + assert log_has(f'Created user-data directory: {Path("/tmp/bar")}', caplog) assert isinstance(x, Path) - assert str(x) == "/tmp/bar" + assert str(x) == str(Path("/tmp/bar")) def test_create_userdata_dir_exists(mocker, default_conf, caplog) -> None: @@ -669,7 +669,8 @@ def test_create_userdata_dir_exists_exception(mocker, default_conf, caplog) -> N mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) md = mocker.patch.object(Path, 'mkdir', MagicMock()) - with pytest.raises(OperationalException, match=r'Directory `/tmp/bar` does not exist.*'): + with pytest.raises(OperationalException, + match=r'Directory `.{1,2}tmp.{1,2}bar` does not exist.*'): create_userdata_dir('/tmp/bar', create_dir=False) assert md.call_count == 0 diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 86f5610da..a39b2b76e 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -214,11 +214,12 @@ def test_generate_plot_file(mocker, caplog): store_plot_file(fig, filename="freqtrade-plot-UNITTEST_BTC-5m.html", directory=Path("user_data/plots")) + expected_fn = str(Path("user_data/plots/freqtrade-plot-UNITTEST_BTC-5m.html")) assert plot_mock.call_count == 1 assert plot_mock.call_args[0][0] == fig assert (plot_mock.call_args_list[0][1]['filename'] - == "user_data/plots/freqtrade-plot-UNITTEST_BTC-5m.html") - assert log_has("Stored plot as user_data/plots/freqtrade-plot-UNITTEST_BTC-5m.html", + == expected_fn) + assert log_has(f"Stored plot as {expected_fn}", caplog) From e55b2a1a1cfca5b53a0888cea65719ad74a69ca1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 18 Oct 2019 12:21:05 +0200 Subject: [PATCH 0744/3421] Allow test to pass on fast computers by setting the offset to -1 --- tests/test_freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 7fb84f078..d4a1d990a 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1449,8 +1449,8 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, # setting stoploss freqtrade.strategy.stoploss = -0.02 - # setting stoploss_on_exchange_interval to 0 second - freqtrade.strategy.order_types['stoploss_on_exchange_interval'] = 0 + # setting stoploss_on_exchange_interval to -1 second since this test runs fast + freqtrade.strategy.order_types['stoploss_on_exchange_interval'] = -1 patch_get_signal(freqtrade) From 5e731ec2789bc6d11ffe0988222cee47fb2ce6ea Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 18 Oct 2019 14:25:43 +0300 Subject: [PATCH 0745/3421] Add more tests --- tests/test_utils.py | 154 +++++++++++++++++++++++++++++++++----------- 1 file changed, 116 insertions(+), 38 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index bcb49b7b5..880a3762e 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -182,11 +182,13 @@ def test_list_markets(mocker, markets, capsys): args = [ '--config', 'config.json.example', "list-markets", + "--print-list", ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert re.match("Exchange Bittrex has 8 active markets:\n", - captured.out) + assert ("Exchange Bittrex has 8 active markets: " + "BLK/BTC, BTT/BTC, ETH/BTC, ETH/USDT, LTC/USD, LTC/USDT, TKN/BTC, XLTCUSDT.\n" + in captured.out) # # Test with --exchange # args = [ @@ -201,124 +203,200 @@ def test_list_markets(mocker, markets, capsys): # Test with --all: all markets args = [ '--config', 'config.json.example', - "list-markets", "--all" + "list-markets", "--all", + "--print-list", ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert re.match("Exchange Bittrex has 11 markets:\n", - captured.out) + assert ("Exchange Bittrex has 11 markets: " + "BLK/BTC, BTT/BTC, ETH/BTC, ETH/USDT, LTC/BTC, LTC/USD, LTC/USDT, NEO/BTC, " + "TKN/BTC, XLTCUSDT, XRP/BTC.\n" + in captured.out) # Test list-pairs subcommand: active pairs args = [ '--config', 'config.json.example', "list-pairs", + "--print-list", ] start_list_markets(get_args(args), True) captured = capsys.readouterr() - assert re.match("Exchange Bittrex has 7 active pairs:\n", - captured.out) + assert ("Exchange Bittrex has 7 active pairs: " + "BLK/BTC, BTT/BTC, ETH/BTC, ETH/USDT, LTC/USD, LTC/USDT, TKN/BTC.\n" + in captured.out) # Test list-pairs subcommand with --all: all pairs args = [ '--config', 'config.json.example', - "list-pairs", "--all" + "list-pairs", "--all", + "--print-list", ] start_list_markets(get_args(args), True) captured = capsys.readouterr() - assert re.match("Exchange Bittrex has 10 pairs:\n", - captured.out) + assert ("Exchange Bittrex has 10 pairs: " + "BLK/BTC, BTT/BTC, ETH/BTC, ETH/USDT, LTC/BTC, LTC/USD, LTC/USDT, NEO/BTC, " + "TKN/BTC, XRP/BTC.\n" + in captured.out) # active markets, base=ETH, LTC args = [ '--config', 'config.json.example', "list-markets", - "--base", "ETH", "LTC" + "--base", "ETH", "LTC", + "--print-list", ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert re.match("Exchange Bittrex has 5 active markets with ETH, LTC as base currencies:\n", - captured.out) + assert ("Exchange Bittrex has 5 active markets with ETH, LTC as base currencies: " + "ETH/BTC, ETH/USDT, LTC/USD, LTC/USDT, XLTCUSDT.\n" + in captured.out) # active markets, base=LTC args = [ '--config', 'config.json.example', "list-markets", - "--base", "LTC" + "--base", "LTC", + "--print-list", ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert re.match("Exchange Bittrex has 3 active markets with LTC as base currency:\n", - captured.out) + assert ("Exchange Bittrex has 3 active markets with LTC as base currency: " + "LTC/USD, LTC/USDT, XLTCUSDT.\n" + in captured.out) # active markets, quote=USDT, USD args = [ '--config', 'config.json.example', "list-markets", - "--quote", "USDT", "USD" + "--quote", "USDT", "USD", + "--print-list", ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert re.match("Exchange Bittrex has 4 active markets with USDT, USD as quote currencies:\n", - captured.out) + assert ("Exchange Bittrex has 4 active markets with USDT, USD as quote currencies: " + "ETH/USDT, LTC/USD, LTC/USDT, XLTCUSDT.\n" + in captured.out) # active markets, quote=USDT args = [ '--config', 'config.json.example', "list-markets", - "--quote", "USDT" + "--quote", "USDT", + "--print-list", ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert re.match("Exchange Bittrex has 3 active markets with USDT as quote currency:\n", - captured.out) + assert ("Exchange Bittrex has 3 active markets with USDT as quote currency: " + "ETH/USDT, LTC/USDT, XLTCUSDT.\n" + in captured.out) # active markets, base=LTC, quote=USDT args = [ '--config', 'config.json.example', "list-markets", - "--base", "LTC", "--quote", "USDT" + "--base", "LTC", "--quote", "USDT", + "--print-list", ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert re.match("Exchange Bittrex has 2 active markets with LTC as base currency and " - "with USDT as quote currency:\n", - captured.out) + assert ("Exchange Bittrex has 2 active markets with LTC as base currency and " + "with USDT as quote currency: LTC/USDT, XLTCUSDT.\n" + in captured.out) # active pairs, base=LTC, quote=USDT args = [ '--config', 'config.json.example', "list-pairs", - "--base", "LTC", "--quote", "USDT" + "--base", "LTC", "--quote", "USDT", + "--print-list", ] start_list_markets(get_args(args), True) captured = capsys.readouterr() - assert re.match("Exchange Bittrex has 1 active pair with LTC as base currency and " - "with USDT as quote currency:\n", - captured.out) + assert ("Exchange Bittrex has 1 active pair with LTC as base currency and " + "with USDT as quote currency: LTC/USDT.\n" + in captured.out) # active markets, base=LTC, quote=USDT, NONEXISTENT args = [ '--config', 'config.json.example', "list-markets", - "--base", "LTC", "--quote", "USDT", "NONEXISTENT" + "--base", "LTC", "--quote", "USDT", "NONEXISTENT", + "--print-list", ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert re.match("Exchange Bittrex has 2 active markets with LTC as base currency and " - "with USDT, NONEXISTENT as quote currencies:\n", - captured.out) + assert ("Exchange Bittrex has 2 active markets with LTC as base currency and " + "with USDT, NONEXISTENT as quote currencies: LTC/USDT, XLTCUSDT.\n" + in captured.out) # active markets, base=LTC, quote=NONEXISTENT args = [ '--config', 'config.json.example', "list-markets", - "--base", "LTC", "--quote", "NONEXISTENT" + "--base", "LTC", "--quote", "NONEXISTENT", + "--print-list", ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert re.match("Exchange Bittrex has 0 active markets with LTC as base currency and " - "with NONEXISTENT as quote currency.\n", - captured.out) + assert ("Exchange Bittrex has 0 active markets with LTC as base currency and " + "with NONEXISTENT as quote currency.\n" + in captured.out) + + # Test tabular output + args = [ + '--config', 'config.json.example', + "list-markets", + ] + start_list_markets(get_args(args), False) + captured = capsys.readouterr() + assert ("Exchange Bittrex has 8 active markets:\n" + in captured.out) + + # Test tabular output, no markets found + args = [ + '--config', 'config.json.example', + "list-markets", + "--base", "LTC", "--quote", "NONEXISTENT", + ] + start_list_markets(get_args(args), False) + captured = capsys.readouterr() + assert ("Exchange Bittrex has 0 active markets with LTC as base currency and " + "with NONEXISTENT as quote currency.\n" + in captured.out) + + # Test --print-json + args = [ + '--config', 'config.json.example', + "list-markets", + "--print-json" + ] + start_list_markets(get_args(args), False) + captured = capsys.readouterr() + assert ('["BLK/BTC","BTT/BTC","ETH/BTC","ETH/USDT","LTC/USD","LTC/USDT","TKN/BTC","XLTCUSDT"]' + in captured.out) + + # Test --print-csv + args = [ + '--config', 'config.json.example', + "list-markets", + "--print-csv" + ] + start_list_markets(get_args(args), False) + captured = capsys.readouterr() + assert ("Id,Symbol,Base,Quote,Active,Is pair" in captured.out) + assert ("blkbtc,BLK/BTC,BLK,BTC,True,True" in captured.out) + assert ("BTTBTC,BTT/BTC,BTT,BTC,True,True" in captured.out) + + # Test --one-column + args = [ + '--config', 'config.json.example', + "list-markets", + "--one-column" + ] + start_list_markets(get_args(args), False) + captured = capsys.readouterr() + assert re.search(r"^BLK/BTC$", captured.out, re.MULTILINE) + assert re.search(r"^BTT/BTC$", captured.out, re.MULTILINE) def test_create_datadir_failed(caplog): From 3208f30c308a200d5a9c2a37c15efcf17624e567 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 18 Oct 2019 12:48:12 +0200 Subject: [PATCH 0746/3421] Fix base64 test on windows --- tests/strategy/test_strategy.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 52216e0ef..12770f2c7 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -1,6 +1,5 @@ # pragma pylint: disable=missing-docstring, protected-access, C0103 import logging -import tempfile import warnings from base64 import urlsafe_b64encode from os import path @@ -51,7 +50,7 @@ def test_load_strategy_base64(result, caplog, default_conf): assert 'rsi' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) # Make sure strategy was loaded from base64 (using temp directory)!! assert log_has_re(r"Using resolved strategy SampleStrategy from '" - + tempfile.gettempdir() + r"/.*/SampleStrategy\.py'\.\.\.", caplog) + r".*(/|\\).*(/|\\)SampleStrategy\.py'\.\.\.", caplog) def test_load_strategy_invalid_directory(result, caplog, default_conf): From c649f9844e8bbff07b01a831fc80927a368523e0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 18 Oct 2019 19:36:04 +0200 Subject: [PATCH 0747/3421] Compare >= instead of = --- freqtrade/freqtradebot.py | 2 +- tests/test_freqtradebot.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d62c6a912..e2d4454ef 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -705,7 +705,7 @@ class FreqtradeBot: if trade.stop_loss > float(order['info']['stopPrice']): # we check if the update is neccesary update_beat = self.strategy.order_types.get('stoploss_on_exchange_interval', 60) - if (datetime.utcnow() - trade.stoploss_last_update).total_seconds() > update_beat: + if (datetime.utcnow() - trade.stoploss_last_update).total_seconds() >= update_beat: # cancelling the current stoploss on exchange first logger.info('Trailing stoploss: cancelling current stoploss on exchange (id:{%s})' 'in order to add another one ...', order['id']) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index d4a1d990a..b2268acc5 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1449,8 +1449,8 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, # setting stoploss freqtrade.strategy.stoploss = -0.02 - # setting stoploss_on_exchange_interval to -1 second since this test runs fast - freqtrade.strategy.order_types['stoploss_on_exchange_interval'] = -1 + # setting stoploss_on_exchange_interval to 0 seconds + freqtrade.strategy.order_types['stoploss_on_exchange_interval'] = 0 patch_get_signal(freqtrade) From 4ec83a2c24f23d0fe852c01d39289bf22c25600f Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 18 Oct 2019 23:29:19 +0300 Subject: [PATCH 0748/3421] DefaultHyperOpts --> DefaultHyperOpt; hyperopts --> hyperopt where it's not correct --- docs/bot-usage.md | 4 ++-- docs/faq.md | 4 ++-- docs/hyperopt.md | 12 ++++++------ freqtrade/constants.py | 2 +- freqtrade/optimize/default_hyperopt.py | 2 +- freqtrade/resolvers/pairlist_resolver.py | 4 ++-- tests/optimize/test_hyperopt.py | 10 +++++----- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 7da0d029b..a0437976f 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -106,7 +106,7 @@ user_data/ ├── backtest_results ├── data ├── hyperopts -├── hyperopts_results +├── hyperopt_results ├── plot └── strategies ``` @@ -256,7 +256,7 @@ optional arguments: entry and exit). --customhyperopt NAME Specify hyperopt class name (default: - `DefaultHyperOpts`). + `DefaultHyperOpt`). --hyperopt-path PATH Specify additional lookup path for Hyperopts and Hyperopt Loss functions. --eps, --enable-position-stacking diff --git a/docs/faq.md b/docs/faq.md index a441ffacd..dd92d310e 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -38,7 +38,7 @@ like pauses. You can stop your bot, adjust settings and start it again. ### I want to improve the bot with a new strategy -That's great. We have a nice backtesting and hyperoptimizing setup. See +That's great. We have a nice backtesting and hyperoptimization setup. See the tutorial [here|Testing-new-strategies-with-Hyperopt](bot-usage.md#hyperopt-commands). ### Is there a setting to only SELL the coins being held and not perform anymore BUYS? @@ -59,7 +59,7 @@ If you're a US customer, the bot will fail to create orders for these pairs, and ### How many epoch do I need to get a good Hyperopt result? -Per default Hyperopts without `-e` or `--epochs` parameter will only +Per default Hyperopt called without the `-e`/`--epochs` command line option will only run 100 epochs, means 100 evals of your triggers, guards, ... Too few to find a great result (unless if you are very lucky), so you probably have to run it for 10.000 or more. But it will take an eternity to diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 1ca371e3d..99331707f 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -10,12 +10,12 @@ Hyperopt requires historic data to be available, just as backtesting does. To learn how to get data for the pairs and exchange you're interrested in, head over to the [Data Downloading](data-download.md) section of the documentation. !!! Bug - Hyperopt will crash when used with only 1 CPU Core as found out in [Issue #1133](https://github.com/freqtrade/freqtrade/issues/1133) + Hyperopt can crash when used with only 1 CPU Core as found out in [Issue #1133](https://github.com/freqtrade/freqtrade/issues/1133) ## Prepare Hyperopting Before we start digging into Hyperopt, we recommend you to take a look at -an example hyperopt file located into [user_data/hyperopts/](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt.py) +the sample hyperopt file located in [user_data/hyperopts/](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt.py). Configuring hyperopt is similar to writing your own strategy, and many tasks will be similar and a lot of code can be copied across from the strategy. @@ -64,9 +64,9 @@ multiple guards. The constructed strategy will be something like "*buy exactly when close price touches lower bollinger band, BUT only if ADX > 10*". -If you have updated the buy strategy, ie. changed the contents of -`populate_buy_trend()` method you have to update the `guards` and -`triggers` hyperopts must use. +If you have updated the buy strategy, i.e. changed the contents of +`populate_buy_trend()` method, you have to update the `guards` and +`triggers` your hyperopt must use correspondingly. #### Sell optimization @@ -82,7 +82,7 @@ To avoid naming collisions in the search-space, please prefix all sell-spaces wi #### Using ticker-interval as part of the Strategy The Strategy exposes the ticker-interval as `self.ticker_interval`. The same value is available as class-attribute `HyperoptName.ticker_interval`. -In the case of the linked sample-value this would be `SampleHyperOpts.ticker_interval`. +In the case of the linked sample-value this would be `SampleHyperOpt.ticker_interval`. ## Solving a Mystery diff --git a/freqtrade/constants.py b/freqtrade/constants.py index a310b4896..e8f3f5783 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -10,7 +10,7 @@ DEFAULT_TICKER_INTERVAL = 5 # min HYPEROPT_EPOCH = 100 # epochs RETRY_TIMEOUT = 30 # sec DEFAULT_STRATEGY = 'DefaultStrategy' -DEFAULT_HYPEROPT = 'DefaultHyperOpts' +DEFAULT_HYPEROPT = 'DefaultHyperOpt' DEFAULT_HYPEROPT_LOSS = 'DefaultHyperOptLoss' DEFAULT_DB_PROD_URL = 'sqlite:///tradesv3.sqlite' DEFAULT_DB_DRYRUN_URL = 'sqlite://' diff --git a/freqtrade/optimize/default_hyperopt.py b/freqtrade/optimize/default_hyperopt.py index 2554982ad..2e2bca3d0 100644 --- a/freqtrade/optimize/default_hyperopt.py +++ b/freqtrade/optimize/default_hyperopt.py @@ -11,7 +11,7 @@ import freqtrade.vendor.qtpylib.indicators as qtpylib from freqtrade.optimize.hyperopt_interface import IHyperOpt -class DefaultHyperOpts(IHyperOpt): +class DefaultHyperOpt(IHyperOpt): """ Default hyperopt provided by the Freqtrade bot. You can override it with your own Hyperopt diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index 2ddf5de2f..c2782a219 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -1,7 +1,7 @@ # pragma pylint: disable=attribute-defined-outside-init """ -This module load custom hyperopts +This module load custom pairlists """ import logging from pathlib import Path @@ -15,7 +15,7 @@ logger = logging.getLogger(__name__) class PairListResolver(IResolver): """ - This class contains all the logic to load custom hyperopt class + This class contains all the logic to load custom PairList class """ __slots__ = ['pairlist'] diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index c9a112422..052c3ba77 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -12,7 +12,7 @@ from freqtrade import OperationalException from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.history import load_tickerdata_file from freqtrade.optimize import setup_configuration, start_hyperopt -from freqtrade.optimize.default_hyperopt import DefaultHyperOpts +from freqtrade.optimize.default_hyperopt import DefaultHyperOpt from freqtrade.optimize.default_hyperopt_loss import DefaultHyperOptLoss from freqtrade.optimize.hyperopt import Hyperopt from freqtrade.resolvers.hyperopt_resolver import (HyperOptLossResolver, @@ -148,12 +148,12 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo def test_hyperoptresolver(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) - hyperopts = DefaultHyperOpts - delattr(hyperopts, 'populate_buy_trend') - delattr(hyperopts, 'populate_sell_trend') + hyperopt = DefaultHyperOpt + delattr(hyperopt, 'populate_buy_trend') + delattr(hyperopt, 'populate_sell_trend') mocker.patch( 'freqtrade.resolvers.hyperopt_resolver.HyperOptResolver._load_hyperopt', - MagicMock(return_value=hyperopts(default_conf)) + MagicMock(return_value=hyperopt(default_conf)) ) x = HyperOptResolver(default_conf, ).hyperopt assert not hasattr(x, 'populate_buy_trend') From 30eb23e1aaa7b2d9dd365e55bd7d9d40a29277b5 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 18 Oct 2019 23:41:07 +0300 Subject: [PATCH 0749/3421] Minor freqtrade cleanup --- freqtrade/freqtradebot.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 8a282baa1..ed5116b08 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -748,8 +748,8 @@ class FreqtradeBot: """ buy_timeout = self.config['unfilledtimeout']['buy'] sell_timeout = self.config['unfilledtimeout']['sell'] - buy_timeoutthreashold = arrow.utcnow().shift(minutes=-buy_timeout).datetime - sell_timeoutthreashold = arrow.utcnow().shift(minutes=-sell_timeout).datetime + buy_timeout_threshold = arrow.utcnow().shift(minutes=-buy_timeout).datetime + sell_timeout_threshold = arrow.utcnow().shift(minutes=-sell_timeout).datetime for trade in Trade.query.filter(Trade.open_order_id.isnot(None)).all(): try: @@ -773,17 +773,16 @@ class FreqtradeBot: self.wallets.update() continue - if (order['side'] == 'buy' - and order['status'] == 'canceled' + if ((order['side'] == 'buy' and order['status'] == 'canceled') or (order['status'] == 'open' - and order['side'] == 'buy' and ordertime < buy_timeoutthreashold)): + and order['side'] == 'buy' and ordertime < buy_timeout_threshold)): self.handle_timedout_limit_buy(trade, order) self.wallets.update() - elif (order['side'] == 'sell' and order['status'] == 'canceled' + elif ((order['side'] == 'sell' and order['status'] == 'canceled') or (order['status'] == 'open' - and order['side'] == 'sell' and ordertime < sell_timeoutthreashold)): + and order['side'] == 'sell' and ordertime < sell_timeout_threshold)): self.handle_timedout_limit_sell(trade, order) self.wallets.update() From fd22c87295c6f059220bbed5a06271ec2096f4b2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Oct 2019 10:05:30 +0200 Subject: [PATCH 0750/3421] Some minor cleanups to trades download methods and docs --- docs/data-download.md | 10 +++++----- freqtrade/configuration/cli_options.py | 3 ++- freqtrade/exchange/exchange.py | 11 +++++------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/data-download.md b/docs/data-download.md index 83f5cd568..bf4792ea3 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -59,12 +59,12 @@ This will download ticker data for all the currency pairs you defined in `pairs. ### Trades (tick) data -By default, download-data downloads Candles (OHLCV) data. Some exchanges also provide historic trade-data via their API. +By default, `download-data` subcommand downloads Candles (OHLCV) data. Some exchanges also provide historic trade-data via their API. This data can be useful if you need many different timeframes, since it is only downloaded once, and then resampled locally to the desired timeframes. -Since this data is large by default, the files use gzip by default. They are stored in your data-directory with the naming convention of `-trades.json.gz` (`ETH_BTC_trades.json.gz`). Incremental mode is supported, so downloading the data once per week with `--days 8` will create an incremental data-repository. +Since this data is large by default, the files use gzip by default. They are stored in your data-directory with the naming convention of `-trades.json.gz` (`ETH_BTC-trades.json.gz`). Incremental mode is also supported, as for historic OHLCV data, so downloading the data once per week with `--days 8` will create an incremental data-repository. -To use this mode, simply add `--dl-trades` to your call. This will swap the download-method to trades, and resamples the data locally. +To use this mode, simply add `--dl-trades` to your call. This will swap the download method to download trades, and resamples the data locally. Example call: @@ -76,11 +76,11 @@ freqtrade download-data --exchange binance --pairs XRP/ETH ETH/BTC --days 20 --d While this method uses async calls, it will be slow, since it requires the result of the previous call to generate the next request to the exchange. !!! Warning - This datatype is not available during trading. It probably will never be since all exchanges tested don't provide this data in real time, but with a delay of a few 100 candles. + The historic trades are not available during Freqtrade dry-run and live trade modes because all exchanges tested provide this data with a delay of few 100 candles, so it's not suitable for real-time trading. ### Historic Kraken data -The Kraken API does only provide 720 historic candles, which is sufficient for regular trading operations, but is a problem for backtesting. +The Kraken API does only provide 720 historic candles, which is sufficient for FreqTrade dry-run and live trade modes, but is a problem for backtesting. To download data for the Kraken exchange, using `--dl-trades` is mandatory, otherwise the bot will download the same 720 candles over and over, and you'll not have enough backtest data. ## Next step diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 9868ab874..650123127 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -275,7 +275,8 @@ AVAILABLE_CLI_OPTIONS = { ), "download_trades": Arg( '--dl-trades', - help='Download trades instead of OHLCV data.', + help='Download trades instead of OHLCV data. The bot will resample trades to the ' + 'desired timeframe as specified as --timeframes/-t.', action='store_true', ), "exchange": Arg( diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 86078ae05..f8d3d840a 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -754,7 +754,7 @@ class Exchange: Handles exchange errors, does one call to the exchange. :param pair: Pair to fetch trade data for :param since: Since as integer timestamp in milliseconds - returns tuple: (pair, ticker_interval, ohlcv_list) + returns: List of dicts containing trades """ try: # fetch trades asynchronously @@ -790,7 +790,7 @@ class Exchange: :param since: Since as integer timestamp in milliseconds :param until: Until as integer timestamp in milliseconds :param from_id: Download data starting with ID (if id is known). Ignores "since" if set. - returns tuple: (pair, ticker_interval, ohlcv_list) + returns tuple: (pair, trades-list) """ trades: List[Dict] = [] @@ -831,7 +831,7 @@ class Exchange: :param pair: Pair to fetch trade data for :param since: Since as integer timestamp in milliseconds :param until: Until as integer timestamp in milliseconds - returns tuple: (pair, ticker_interval, ohlcv_list) + returns tuple: (pair, trades-list) """ trades: List[Dict] = [] @@ -857,9 +857,6 @@ class Exchange: """ Async wrapper handling downloading trades using either time or id based methods. """ - if not self.exchange_has("fetchTrades"): - # TODO: Maybe don't stop the bot ... ? - raise OperationalException("This exchange does not suport downloading Trades.") if self._trades_pagination == 'time': return await self._async_get_trade_history_time( @@ -889,6 +886,8 @@ class Exchange: :param from_id: Download data starting with ID (if id is known) :returns List of tickers """ + if not self.exchange_has("fetchTrades"): + raise OperationalException("This exchange does not suport downloading Trades.") return asyncio.get_event_loop().run_until_complete( self._async_get_trade_history(pair=pair, since=since, From b152585d9b9ad3e832734f91286bcb6690139b42 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Oct 2019 11:13:10 +0200 Subject: [PATCH 0751/3421] exportfilename should respect configured user_data_dir --- freqtrade/configuration/cli_options.py | 3 --- freqtrade/configuration/configuration.py | 10 +++++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 7e6a956ce..b5f534a12 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -2,7 +2,6 @@ Definition of cli arguments used in arguments.py """ import argparse -import os from freqtrade import __version__, constants @@ -141,8 +140,6 @@ AVAILABLE_CLI_OPTIONS = { 'Requires `--export` to be set as well. ' 'Example: `--export-filename=user_data/backtest_results/backtest_today.json`', metavar='PATH', - default=os.path.join('user_data', 'backtest_results', - 'backtest-result.json'), ), "fee": Arg( '--fee', diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 665999efb..967f8b5b5 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -192,6 +192,13 @@ class Configuration: config.update({'datadir': create_datadir(config, self.args.get("datadir", None))}) logger.info('Using data directory: %s ...', config.get('datadir')) + if self.args.get('exportfilename'): + self._args_to_config(config, argname='exportfilename', + logstring='Storing backtest results to {} ...') + else: + config['exportfilename'] = (config['user_data_dir'] + / 'backtest_results/backtest-result.json') + def _process_optimize_options(self, config: Dict[str, Any]) -> None: # This will override the strategy configuration @@ -235,9 +242,6 @@ class Configuration: self._args_to_config(config, argname='export', logstring='Parameter --export detected: {} ...') - self._args_to_config(config, argname='exportfilename', - logstring='Storing backtest results to {} ...') - # Edge section: if 'stoploss_range' in self.args and self.args["stoploss_range"]: txt_range = eval(self.args["stoploss_range"]) From f41c659cb2a2e97e572b1e4703b11c1e2d9258cb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Oct 2019 13:18:52 +0200 Subject: [PATCH 0752/3421] Plotting trades from database should show correct duration --- freqtrade/data/btanalysis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index b03bdb74d..17abae3b6 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -93,7 +93,7 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: t.close_date.replace(tzinfo=pytz.UTC) if t.close_date else None, t.calc_profit(), t.calc_profit_percent(), t.open_rate, t.close_rate, t.amount, - (t.close_date.timestamp() - t.open_date.timestamp() + (round((t.close_date.timestamp() - t.open_date.timestamp()) / 60, 2) if t.close_date else None), t.sell_reason, t.fee_open, t.fee_close, From 0adcee92334a46935c6a3b6b57278f0babc74a9c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Oct 2019 14:34:55 +0200 Subject: [PATCH 0753/3421] Fix backtesting format since sublist does not render correctly --- docs/backtesting.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 6db573224..7bfc2dab5 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -199,9 +199,8 @@ Since backtesting lacks some detailed information about what happens within a ca - Low happens before high for stoploss, protecting capital first. - ROI sells are compared to high - but the ROI value is used (e.g. ROI = 2%, high=5% - so the sell will be at 2%) - Stoploss sells happen exactly at stoploss price, even if low was lower -- Trailing stoploss - - High happens first - adjusting stoploss - - Low uses the adjusted stoploss (so sells with large high-low difference are backtested correctly) +- Trailing stoploss: High happens first - adjusting stoploss +- Trailing stoploss: Low uses the adjusted stoploss (so sells with large high-low difference are backtested correctly) - Sell-reason does not explain if a trade was positive or negative, just what triggered the sell (this can look odd if negative ROI values are used) Taking these assumptions, backtesting tries to mirror real trading as closely as possible. However, backtesting will **never** replace running a strategy in dry-run mode. From 16e10d99b98f1dee27c0176017a179e108a69fff Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Oct 2019 14:53:56 +0200 Subject: [PATCH 0754/3421] Remove timeframe logic for non-date entries --- docs/backtesting.md | 6 ------ docs/edge.md | 5 +---- freqtrade/configuration/timerange.py | 9 ++++++--- freqtrade/data/history.py | 12 ++---------- tests/data/test_btanalysis.py | 4 ++-- 5 files changed, 11 insertions(+), 25 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 6db573224..837fcfa3b 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -103,12 +103,6 @@ The full timerange specification: - Use tickframes since 2018/01/31 till 2018/03/01 : `--timerange=20180131-20180301` - Use tickframes between POSIX timestamps 1527595200 1527618600: `--timerange=1527595200-1527618600` -- Use last 123 tickframes of data: `--timerange=-123` -- Use first 123 tickframes of data: `--timerange=123-` -- Use tickframes from line 123 through 456: `--timerange=123-456` - -!!! warning - Be carefull when using non-date functions - these do not allow you to specify precise dates, so if you updated the test-data it will probably use a different dataset. ## Understand the backtesting result diff --git a/docs/edge.md b/docs/edge.md index d91522770..6374da9e6 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -249,13 +249,10 @@ freqtrade edge --stoplosses=-0.01,-0.1,-0.001 #min,max,step freqtrade edge --timerange=20181110-20181113 ``` -Doing `--timerange=-200` will get the last 200 timeframes from your inputdata. You can also specify specific dates, or a range span indexed by start and stop. +Doing `--timerange=-20190901` will get all available data until September 1st (excluding September 1st 2019). The full timerange specification: -* Use last 123 tickframes of data: `--timerange=-123` -* Use first 123 tickframes of data: `--timerange=123-` -* Use tickframes from line 123 through 456: `--timerange=123-456` * Use tickframes till 2018/01/31: `--timerange=-20180131` * Use tickframes since 2018/01/31: `--timerange=20180131-` * Use tickframes since 2018/01/31 till 2018/03/01 : `--timerange=20180131-20180301` diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py index ec6eb75e6..2e92c9d85 100644 --- a/freqtrade/configuration/timerange.py +++ b/freqtrade/configuration/timerange.py @@ -42,9 +42,8 @@ class TimeRange: (r'^-(\d{10})$', (None, 'date')), (r'^(\d{10})-$', ('date', None)), (r'^(\d{10})-(\d{10})$', ('date', 'date')), - (r'^(-\d+)$', (None, 'line')), - (r'^(\d+)-$', ('line', None)), - (r'^(\d+)-(\d+)$', ('index', 'index'))] + (r'^(\d{13})-(\d{13})$', ('date', 'date')), + ] for rex, stype in syntax: # Apply the regular expression to text match = re.match(rex, text) @@ -57,6 +56,8 @@ class TimeRange: starts = rvals[index] if stype[0] == 'date' and len(starts) == 8: start = arrow.get(starts, 'YYYYMMDD').timestamp + elif len(starts) == 13: + start = int(starts) // 1000 else: start = int(starts) index += 1 @@ -64,6 +65,8 @@ class TimeRange: stops = rvals[index] if stype[1] == 'date' and len(stops) == 8: stop = arrow.get(stops, 'YYYYMMDD').timestamp + elif len(stops) == 13: + stop = int(stops) // 1000 else: stop = int(stops) return TimeRange(stype[0], stype[1], start, stop) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 991a639ca..3bebcf44f 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -33,20 +33,12 @@ def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]: start_index = 0 stop_index = len(tickerlist) - if timerange.starttype == 'line': - stop_index = timerange.startts - if timerange.starttype == 'index': - start_index = timerange.startts - elif timerange.starttype == 'date': + if timerange.starttype == 'date': while (start_index < len(tickerlist) and tickerlist[start_index][0] < timerange.startts * 1000): start_index += 1 - if timerange.stoptype == 'line': - start_index = max(len(tickerlist) + timerange.stopts, 0) - if timerange.stoptype == 'index': - stop_index = timerange.stopts - elif timerange.stoptype == 'date': + if timerange.stoptype == 'date': while (stop_index > 0 and tickerlist[stop_index-1][0] > timerange.stopts * 1000): stop_index -= 1 diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 27a8ee02e..4068e00e4 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -53,12 +53,12 @@ def test_load_trades_db(default_conf, fee, mocker): def test_extract_trades_of_period(testdatadir): pair = "UNITTEST/BTC" - timerange = TimeRange(None, 'line', 0, -1000) + # 2018-11-14 06:07:00 + timerange = TimeRange('date', None, 1510639620, 0) data = load_pair_history(pair=pair, ticker_interval='1m', datadir=testdatadir, timerange=timerange) - # timerange = 2017-11-14 06:07 - 2017-11-14 22:58:00 trades = DataFrame( {'pair': [pair, pair, pair, pair], 'profit_percent': [0.0, 0.1, -0.2, -0.5], From c48876b19660ff5416dce5915916885ad5dd4780 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Oct 2019 15:21:47 +0200 Subject: [PATCH 0755/3421] Trades should use timestamps or dates, not indexes --- tests/data/test_history.py | 38 ------------------------------ tests/optimize/test_backtesting.py | 19 ++++++++------- tests/strategy/test_interface.py | 2 +- tests/test_timerange.py | 6 +---- 4 files changed, 12 insertions(+), 53 deletions(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 96bc0da56..2d292c7cd 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -364,37 +364,6 @@ def test_trim_tickerlist(testdatadir) -> None: ticker_list = json.load(data_file) ticker_list_len = len(ticker_list) - # Test the pattern ^(-\d+)$ - # This pattern uses the latest N elements - timerange = TimeRange(None, 'line', 0, -5) - ticker = trim_tickerlist(ticker_list, timerange) - ticker_len = len(ticker) - - assert ticker_len == 5 - assert ticker_list[0] is not ticker[0] # The first element should be different - assert ticker_list[-1] is ticker[-1] # The last element must be the same - - # Test the pattern ^(\d+)-$ - # This pattern keep X element from the end - timerange = TimeRange('line', None, 5, 0) - ticker = trim_tickerlist(ticker_list, timerange) - ticker_len = len(ticker) - - assert ticker_len == 5 - assert ticker_list[0] is ticker[0] # The first element must be the same - assert ticker_list[-1] is not ticker[-1] # The last element should be different - - # Test the pattern ^(\d+)-(\d+)$ - # This pattern extract a window - timerange = TimeRange('index', 'index', 5, 10) - ticker = trim_tickerlist(ticker_list, timerange) - ticker_len = len(ticker) - - assert ticker_len == 5 - assert ticker_list[0] is not ticker[0] # The first element should be different - assert ticker_list[5] is ticker[0] # The list starts at the index 5 - assert ticker_list[9] is ticker[-1] # The list ends at the index 9 (5 elements) - # Test the pattern ^(\d{8})-(\d{8})$ # This pattern extract a window between the dates timerange = TimeRange('date', 'date', ticker_list[5][0] / 1000, ticker_list[10][0] / 1000 - 1) @@ -434,13 +403,6 @@ def test_trim_tickerlist(testdatadir) -> None: assert ticker_list_len == ticker_len - # Test invalid timerange (start after stop) - timerange = TimeRange('index', 'index', 10, 5) - with pytest.raises(ValueError, match=r'The timerange .* is incorrect'): - trim_tickerlist(ticker_list, timerange) - - assert ticker_list_len == ticker_len - # passing empty list timerange = TimeRange(None, None, None, 5) ticker = trim_tickerlist([], timerange) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 2b6f63516..998edda8a 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -49,7 +49,7 @@ def trim_dictlist(dict_list, num): def load_data_test(what, testdatadir): - timerange = TimeRange(None, 'line', 0, -101) + timerange = TimeRange.parse_timerange('1510694220-1510700340') pair = history.load_tickerdata_file(testdatadir, ticker_interval='1m', pair='UNITTEST/BTC', timerange=timerange) datalen = len(pair) @@ -342,7 +342,8 @@ def test_tickerdata_with_fee(default_conf, mocker, testdatadir) -> None: def test_tickerdata_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: patch_exchange(mocker) - timerange = TimeRange(None, 'line', 0, -100) + # timerange = TimeRange(None, 'line', 0, -100) + timerange = TimeRange.parse_timerange('1510694220-1510700340') tick = history.load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m', timerange=timerange) tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", fill_missing=True)} @@ -474,7 +475,7 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: default_conf['ticker_interval'] = '1m' default_conf['datadir'] = testdatadir default_conf['export'] = None - default_conf['timerange'] = '-100' + default_conf['timerange'] = '-1510694220' backtesting = Backtesting(default_conf) backtesting.start() @@ -522,7 +523,7 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: patch_exchange(mocker) backtesting = Backtesting(default_conf) pair = 'UNITTEST/BTC' - timerange = TimeRange(None, 'line', 0, -201) + timerange = TimeRange('date', None, 1517227800, 0) data = history.load_data(datadir=testdatadir, ticker_interval='5m', pairs=['UNITTEST/BTC'], timerange=timerange) data_processed = backtesting.strategy.tickerdata_to_dataframe(data) @@ -578,7 +579,7 @@ def test_backtest_1min_ticker_interval(default_conf, fee, mocker, testdatadir) - backtesting = Backtesting(default_conf) # Run a backtesting for an exiting 1min ticker_interval - timerange = TimeRange(None, 'line', 0, -200) + timerange = TimeRange.parse_timerange('1510688220-1510700340') data = history.load_data(datadir=testdatadir, ticker_interval='1m', pairs=['UNITTEST/BTC'], timerange=timerange) processed = backtesting.strategy.tickerdata_to_dataframe(data) @@ -823,7 +824,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): '--datadir', str(testdatadir), 'backtesting', '--ticker-interval', '1m', - '--timerange', '-100', + '--timerange', '1510694220-1510700340', '--enable-position-stacking', '--disable-max-market-positions' ] @@ -833,7 +834,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): exists = [ 'Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', 'Ignoring max_open_trades (--disable-max-market-positions was used) ...', - 'Parameter --timerange detected: -100 ...', + 'Parameter --timerange detected: 1510694220-1510700340 ...', f'Using data directory: {testdatadir} ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', @@ -869,7 +870,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): '--datadir', str(testdatadir), 'backtesting', '--ticker-interval', '1m', - '--timerange', '-100', + '--timerange', '1510694220-1510700340', '--enable-position-stacking', '--disable-max-market-positions', '--strategy-list', @@ -887,7 +888,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): exists = [ 'Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', 'Ignoring max_open_trades (--disable-max-market-positions was used) ...', - 'Parameter --timerange detected: -100 ...', + 'Parameter --timerange detected: 1510694220-1510700340 ...', f'Using data directory: {testdatadir} ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 094cd41a1..5519b1a34 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -106,7 +106,7 @@ def test_get_signal_handles_exceptions(mocker, default_conf): def test_tickerdata_to_dataframe(default_conf, testdatadir) -> None: strategy = DefaultStrategy(default_conf) - timerange = TimeRange(None, 'line', 0, -100) + timerange = TimeRange.parse_timerange('1510694220-1510700340') tick = load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m', timerange=timerange) tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", fill_missing=True)} diff --git a/tests/test_timerange.py b/tests/test_timerange.py index 6599472fb..2f4b00e70 100644 --- a/tests/test_timerange.py +++ b/tests/test_timerange.py @@ -5,9 +5,6 @@ from freqtrade.configuration import TimeRange def test_parse_timerange_incorrect() -> None: - assert TimeRange(None, 'line', 0, -200) == TimeRange.parse_timerange('-200') - assert TimeRange('line', None, 200, 0) == TimeRange.parse_timerange('200-') - assert TimeRange('index', 'index', 200, 500) == TimeRange.parse_timerange('200-500') assert TimeRange('date', None, 1274486400, 0) == TimeRange.parse_timerange('20100522-') assert TimeRange(None, 'date', 0, 1274486400) == TimeRange.parse_timerange('-20100522') @@ -20,9 +17,8 @@ def test_parse_timerange_incorrect() -> None: timerange = TimeRange.parse_timerange('1231006505-1233360000') assert TimeRange('date', 'date', 1231006505, 1233360000) == timerange - # TODO: Find solution for the following case (passing timestamp in ms) timerange = TimeRange.parse_timerange('1231006505000-1233360000000') - assert TimeRange('date', 'date', 1231006505, 1233360000) != timerange + assert TimeRange('date', 'date', 1231006505, 1233360000) == timerange with pytest.raises(Exception, match=r'Incorrect syntax.*'): TimeRange.parse_timerange('-') From d8630ef8472e575f64e600fcf0252c72d5afb91b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Oct 2019 19:38:16 +0200 Subject: [PATCH 0756/3421] Add one-sided ms timerange --- freqtrade/configuration/timerange.py | 2 ++ tests/test_timerange.py | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py index 2e92c9d85..fc759ab6e 100644 --- a/freqtrade/configuration/timerange.py +++ b/freqtrade/configuration/timerange.py @@ -42,6 +42,8 @@ class TimeRange: (r'^-(\d{10})$', (None, 'date')), (r'^(\d{10})-$', ('date', None)), (r'^(\d{10})-(\d{10})$', ('date', 'date')), + (r'^-(\d{13})$', (None, 'date')), + (r'^(\d{13})-$', ('date', None)), (r'^(\d{13})-(\d{13})$', ('date', 'date')), ] for rex, stype in syntax: diff --git a/tests/test_timerange.py b/tests/test_timerange.py index 2f4b00e70..4851cbebd 100644 --- a/tests/test_timerange.py +++ b/tests/test_timerange.py @@ -20,5 +20,11 @@ def test_parse_timerange_incorrect() -> None: timerange = TimeRange.parse_timerange('1231006505000-1233360000000') assert TimeRange('date', 'date', 1231006505, 1233360000) == timerange + timerange = TimeRange.parse_timerange('1231006505000-') + assert TimeRange('date', None, 1231006505, 0) == timerange + + timerange = TimeRange.parse_timerange('-1231006505000') + assert TimeRange(None, 'date', 0, 1231006505) == timerange + with pytest.raises(Exception, match=r'Incorrect syntax.*'): TimeRange.parse_timerange('-') From b805e4e1501e9a52b22768b749cd59e918ab1ba5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Oct 2019 10:34:04 +0200 Subject: [PATCH 0757/3421] Try list extension --- docs/backtesting.md | 5 +++-- mkdocs.yml | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 7bfc2dab5..6db573224 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -199,8 +199,9 @@ Since backtesting lacks some detailed information about what happens within a ca - Low happens before high for stoploss, protecting capital first. - ROI sells are compared to high - but the ROI value is used (e.g. ROI = 2%, high=5% - so the sell will be at 2%) - Stoploss sells happen exactly at stoploss price, even if low was lower -- Trailing stoploss: High happens first - adjusting stoploss -- Trailing stoploss: Low uses the adjusted stoploss (so sells with large high-low difference are backtested correctly) +- Trailing stoploss + - High happens first - adjusting stoploss + - Low uses the adjusted stoploss (so sells with large high-low difference are backtested correctly) - Sell-reason does not explain if a trade was positive or negative, just what triggered the sell (this can look odd if negative ROI values are used) Taking these assumptions, backtesting tries to mirror real trading as closely as possible. However, backtesting will **never** replace running a strategy in dry-run mode. diff --git a/mkdocs.yml b/mkdocs.yml index 197df7dc8..863731873 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -52,3 +52,4 @@ markdown_extensions: - pymdownx.tasklist: custom_checkbox: true - pymdownx.tilde + - mdx_truly_sane_lists From 78cd75dfef16a52eeb9646be34b230ddbae7ed5d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Oct 2019 10:35:36 +0200 Subject: [PATCH 0758/3421] Add requirement --- docs/requirements-docs.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 0be47081c..5e7fe7084 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1 +1,2 @@ -mkdocs-material==4.4.3 \ No newline at end of file +mkdocs-material==4.4.3 +mdx_truly_sane_lists==1.2 From 8a31b4c646e1a4f1a529caa283dce1a98f94775b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Oct 2019 10:47:04 +0200 Subject: [PATCH 0759/3421] Update python base to 3.7.5 and install hyperopt dependencies --- Dockerfile | 6 +++--- requirements-hyperopt.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8677b54de..21432f89f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.7.4-slim-stretch +FROM python:3.7.5-slim-stretch RUN apt-get update \ && apt-get -y install curl build-essential libssl-dev \ @@ -16,9 +16,9 @@ RUN cd /tmp && /tmp/install_ta-lib.sh && rm -r /tmp/*ta-lib* ENV LD_LIBRARY_PATH /usr/local/lib # Install dependencies -COPY requirements.txt requirements-common.txt /freqtrade/ +COPY requirements.txt requirements-common.txt requirements-hyperopt.txt /freqtrade/ RUN pip install numpy --no-cache-dir \ - && pip install -r requirements.txt --no-cache-dir + && pip install -r requirements-hyperopt.txt --no-cache-dir # Install and execute COPY . /freqtrade/ diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 709c43d92..f5dae7332 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -# -r requirements.txt +-r requirements.txt # Required for hyperopt scipy==1.3.1 From 20dd3f2d671235cdcc66eeaf4ace98a6fbe00700 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Oct 2019 16:22:11 +0200 Subject: [PATCH 0760/3421] Clearly highlight potential problems with looking into the future --- docs/backtesting.md | 2 ++ docs/strategy-customization.md | 22 +++++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 837fcfa3b..34c5f1fbe 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -201,6 +201,8 @@ Since backtesting lacks some detailed information about what happens within a ca Taking these assumptions, backtesting tries to mirror real trading as closely as possible. However, backtesting will **never** replace running a strategy in dry-run mode. Also, keep in mind that past results don't guarantee future success. +In addition to the above assumptions, strategy authors should carefully read the [Common Mistakes](strategy-customization.md#common-mistakes-when-developing-strategies) section, to avoid using data in backtesting which is not available in real market conditions. + ### Further backtest-result analysis To further analyze your backtest results, you can [export the trades](#exporting-trades-to-file). diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index ca76071af..7e677d4ce 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -60,8 +60,7 @@ file as reference.** !!! Warning Using future data Since backtesting passes the full time interval to the `populate_*()` methods, the strategy author needs to take care to avoid having the strategy utilize data from the future. - Samples for usage of future data are `dataframe.shift(-1)`, `dataframe.resample("1h")` (this uses the left border of the interval, so moves data from an hour to the start of the hour). - They all use data which is not available during regular operations, so these strategies will perform well during backtesting, but will fail / perform badly in dry-runs. + Some common patterns for this are listed in the [Common Mistakes](#common-mistakes-when-developing-strategies) section of this document. ### Customize Indicators @@ -399,10 +398,10 @@ def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: Printing more than a few rows is also possible (simply use `print(dataframe)` instead of `print(dataframe.tail())`), however not recommended, as that will be very verbose (~500 lines per pair every 5 seconds). -### Where is the default strategy? +### Where can i find a strategy template? -The default buy strategy is located in the file -[freqtrade/default_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/strategy/default_strategy.py). +The strategy template is located in the file +[user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/sample_strategy.py). ### Specify custom strategy location @@ -412,6 +411,19 @@ If you want to use a strategy from a different directory you can pass `--strateg freqtrade --strategy AwesomeStrategy --strategy-path /some/directory ``` +### Common mistakes when developing strategies + +Backtesting analyzes the whole time-range at once for performance reasons. Because of this, strategy authors need to make sure that strategies do not look into the future. +This is a common pain-point, which can cause huge differences between backtesting and dry/live run methods, since they all use data which is not available during dry/live runs, so these strategies will perform well during backtesting, but will fail / perform badly in real conditions. + +The following lists some common patterns which should be avoided to avoid frustration: + +- don't use `shift(-1)`. This uses data from the future, which is not available. +- don't use `.iloc[-1]` or any other absolute position in the dataframe, this will be different between dry-run and backtesting. +- don't use `dataframe['volume'].mean()`. This uses the full DataFrame for backtesting, including data from the future. Use `dataframe['volume'].rolling().mean()` instead +- don't use `.resample('1h')`. This uses the left border of the interval, so moves data from an hour to the start of the hour. Use `.resample('1h', label='right')` instead. + + ### Further strategy ideas To get additional Ideas for strategies, head over to our [strategy repository](https://github.com/freqtrade/freqtrade-strategies). Feel free to use them as they are - but results will depend on the current market situation, pairs used etc. - therefore please backtest the strategy for your exchange/desired pairs first, evaluate carefully, use at your own risk. From 2d34c0f52de724e87f728ca1c749128eb3cfb253 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Oct 2019 19:35:38 +0200 Subject: [PATCH 0761/3421] Update helpstring exports --- docs/bot-usage.md | 47 +++++++++++++------------- freqtrade/configuration/cli_options.py | 2 +- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index d2b9757f5..8c85965a4 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -9,19 +9,21 @@ This page explains the different parameters of the bot and how to run it. ``` usage: freqtrade [-h] [-V] - {trade,backtesting,edge,hyperopt,create-userdir,list-exchanges,download-data,plot-dataframe,plot-profit} + {trade,backtesting,edge,hyperopt,create-userdir,list-exchanges,list-timeframes,download-data,plot-dataframe,plot-profit} ... Free, open source crypto trading bot positional arguments: - {trade,backtesting,edge,hyperopt,create-userdir,list-exchanges,download-data,plot-dataframe,plot-profit} + {trade,backtesting,edge,hyperopt,create-userdir,list-exchanges,list-timeframes,download-data,plot-dataframe,plot-profit} trade Trade module. backtesting Backtesting module. edge Edge module. hyperopt Hyperopt module. create-userdir Create user-data directory. list-exchanges Print available exchanges. + list-timeframes Print available ticker intervals (timeframes) for the + exchange. download-data Download backtesting data. plot-dataframe Plot candles with indicators. plot-profit Generate plot showing profits. @@ -29,6 +31,7 @@ positional arguments: optional arguments: -h, --help show this help message and exit -V, --version show program's version number and exit + ``` ### Bot trading commands @@ -190,7 +193,8 @@ usage: freqtrade backtesting [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME] [--strategy-path PATH] [-i TICKER_INTERVAL] [--timerange TIMERANGE] [--max_open_trades INT] - [--stake_amount STAKE_AMOUNT] [--eps] [--dmmp] + [--stake_amount STAKE_AMOUNT] [--fee FLOAT] + [--eps] [--dmmp] [--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]] [--export EXPORT] [--export-filename PATH] @@ -225,11 +229,10 @@ optional arguments: --export EXPORT Export backtest results, argument are: trades. Example: `--export=trades` --export-filename PATH - Save backtest results to the file with this filename - (default: `user_data/backtest_results/backtest- - result.json`). Requires `--export` to be set as well. - Example: `--export-filename=user_data/backtest_results - /backtest_today.json` + Save backtest results to the file with this filename. + Requires `--export` to be set as well. Example: + `--export-filename=user_data/backtest_results/backtest + _today.json` Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). @@ -246,8 +249,8 @@ Common arguments: Strategy arguments: -s NAME, --strategy NAME - Specify strategy class name (default: - `DefaultStrategy`). + Specify strategy class name which will be used by the + bot. --strategy-path PATH Specify additional strategy lookup path. ``` @@ -268,9 +271,9 @@ usage: freqtrade hyperopt [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME] [--strategy-path PATH] [-i TICKER_INTERVAL] [--timerange TIMERANGE] [--max_open_trades INT] - [--stake_amount STAKE_AMOUNT] - [--hyperopt NAME] [--hyperopt-path PATH] - [--eps] [-e INT] + [--stake_amount STAKE_AMOUNT] [--fee FLOAT] + [--hyperopt NAME] [--hyperopt-path PATH] [--eps] + [-e INT] [--spaces {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...]] [--dmmp] [--print-all] [--no-color] [--print-json] [-j JOBS] [--random-state INT] [--min-trades INT] @@ -287,8 +290,9 @@ optional arguments: Specify max_open_trades to use. --stake_amount STAKE_AMOUNT Specify stake_amount. - --hyperopt NAME - Specify hyperopt class name which will be used by the + --fee FLOAT Specify fee ratio. Will be applied twice (on trade + entry and exit). + --hyperopt NAME Specify hyperopt class name which will be used by the bot. --hyperopt-path PATH Specify additional lookup path for Hyperopts and Hyperopt Loss functions. @@ -328,7 +332,6 @@ optional arguments: OnlyProfitHyperOptLoss, SharpeHyperOptLoss (default: `DefaultHyperOptLoss`). - Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). --logfile FILE Log to the file specified. @@ -344,10 +347,9 @@ Common arguments: Strategy arguments: -s NAME, --strategy NAME - Specify strategy class name (default: - `DefaultStrategy`). + Specify strategy class name which will be used by the + bot. --strategy-path PATH Specify additional strategy lookup path. - ``` ## Edge commands @@ -359,7 +361,7 @@ usage: freqtrade edge [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME] [--strategy-path PATH] [-i TICKER_INTERVAL] [--timerange TIMERANGE] [--max_open_trades INT] [--stake_amount STAKE_AMOUNT] - [--stoplosses STOPLOSS_RANGE] + [--fee FLOAT] [--stoplosses STOPLOSS_RANGE] optional arguments: -h, --help show this help message and exit @@ -395,10 +397,9 @@ Common arguments: Strategy arguments: -s NAME, --strategy NAME - Specify strategy class name (default: - `DefaultStrategy`). + Specify strategy class name which will be used by the + bot. --strategy-path PATH Specify additional strategy lookup path. - ``` To understand edge and how to read the results, please read the [edge documentation](edge.md). diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index a62de10eb..ac72cff0b 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -140,7 +140,7 @@ AVAILABLE_CLI_OPTIONS = { ), "exportfilename": Arg( '--export-filename', - help='Save backtest results to the file with this filename (default: `%(default)s`). ' + help='Save backtest results to the file with this filename. ' 'Requires `--export` to be set as well. ' 'Example: `--export-filename=user_data/backtest_results/backtest_today.json`', metavar='PATH', From d6b6ded8bd51a19b8b87287e43b83d0bfd4f4836 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 20 Oct 2019 22:28:54 +0300 Subject: [PATCH 0762/3421] Print empty line separator in case of human-readable formats (list and tabular) --- freqtrade/utils.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 29b5c92f4..1f7650420 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -179,7 +179,13 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: if (args.get('print_one_column', False) or args.get('list_pairs_print_json', False) or args.get('print_csv', False)): + # Print summary string in the log in case of machine-readable + # regular formats. logger.info(f"{summary_str}.") + else: + # Print empty string separating leading logs and output in case of + # human-readable formats. + print() if len(pairs): if args.get('print_list', False): From 10ca249293fa81c7045a429b6c24561a07bab025 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 20 Oct 2019 22:43:00 +0300 Subject: [PATCH 0763/3421] Fix fluky test --- tests/test_utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index 880a3762e..3993787a6 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -174,9 +174,11 @@ def test_list_markets(mocker, markets, capsys): args = [ "list-markets", ] + pargs = get_args(args) + pargs['config'] = None with pytest.raises(OperationalException, match=r"This command requires a configured exchange.*"): - start_list_markets(get_args(args), False) + start_list_markets(pargs, False) # Test with --config config.json.example args = [ From 45b2d24b7941ec18f56897a84e068ccc838ee034 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 20 Oct 2019 23:00:17 +0300 Subject: [PATCH 0764/3421] Improve docs --- docs/utils.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index f662e8d6c..e6a4501bb 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -59,16 +59,25 @@ $ for i in `freqtrade list-exchanges -1`; do freqtrade list-timeframes --exchang The `list-pairs` and `list-markets` subcommands allow to see the pairs/markets available on exchange. -Pairs are markets with the '/' character between the base currency part and the quote currency part. +Pairs are markets with the '/' character between the base currency part and the quote currency part in the market symbol. + +For example, in the 'ETH/BTC' pair 'ETH' is the base currency, while 'BTC' is the quote currency. + +For pairs traded by Freqtrade the pair quote currency should be equal to the value of the `stake_currency` configuration setting. These subcommands have same usage and same set of available options: ``` +usage: freqtrade list-markets [-h] [--exchange EXCHANGE] [--print-list] + [--print-json] [-1] [--print-csv] + [--base BASE_CURRENCY [BASE_CURRENCY ...]] + [--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] + [-a] + usage: freqtrade list-pairs [-h] [--exchange EXCHANGE] [--print-list] [--print-json] [-1] [--print-csv] - [--base BASE_CURRENCIES [BASE_CURRENCIES ...]] - [--quote QUOTE_CURRENCIES [QUOTE_CURRENCIES ...]] - [-a] + [--base BASE_CURRENCY [BASE_CURRENCY ...]] + [--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] [-a] optional arguments: -h, --help show this help message and exit From 5b680f2ece8b53e6dd09d21fc9516e0c14e891ad Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 20 Oct 2019 23:26:25 +0300 Subject: [PATCH 0765/3421] minor: Condense paragraphs in the docs --- docs/utils.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index e6a4501bb..9d44e7282 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -60,9 +60,7 @@ $ for i in `freqtrade list-exchanges -1`; do freqtrade list-timeframes --exchang The `list-pairs` and `list-markets` subcommands allow to see the pairs/markets available on exchange. Pairs are markets with the '/' character between the base currency part and the quote currency part in the market symbol. - For example, in the 'ETH/BTC' pair 'ETH' is the base currency, while 'BTC' is the quote currency. - For pairs traded by Freqtrade the pair quote currency should be equal to the value of the `stake_currency` configuration setting. These subcommands have same usage and same set of available options: From 8a0d90136c0425c517f0fc65a0d1bea69166c714 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 20 Oct 2019 23:31:44 +0300 Subject: [PATCH 0766/3421] Improve unclear sentence in the docs --- docs/utils.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/utils.md b/docs/utils.md index 9d44e7282..57bb53cc7 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -61,7 +61,8 @@ The `list-pairs` and `list-markets` subcommands allow to see the pairs/markets a Pairs are markets with the '/' character between the base currency part and the quote currency part in the market symbol. For example, in the 'ETH/BTC' pair 'ETH' is the base currency, while 'BTC' is the quote currency. -For pairs traded by Freqtrade the pair quote currency should be equal to the value of the `stake_currency` configuration setting. +For pairs traded by Freqtrade the pair quote currency is defined by the value of the `stake_currency` configuration setting, +but using these commands you can print info about any pair/market, with any quote currency. These subcommands have same usage and same set of available options: From ca4d0067e4b6cbfd302353bc9865fcd0f528797b Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 21 Oct 2019 02:15:37 +0300 Subject: [PATCH 0767/3421] Uncomment tests with --exchange --- tests/test_utils.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index 35e18246c..f12b6670b 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -192,15 +192,17 @@ def test_list_markets(mocker, markets, capsys): "BLK/BTC, BTT/BTC, ETH/BTC, ETH/USDT, LTC/USD, LTC/USDT, TKN/BTC, XLTCUSDT.\n" in captured.out) -# # Test with --exchange -# args = [ -# "list-markets", -# "--exchange", "binance" -# ] -# start_list_markets(get_args(args), False) -# captured = capsys.readouterr() -# assert re.match("Exchange Binance has 8 active markets:\n", -# captured.out) + # Test with --exchange + args = [ + "list-markets", + "--exchange", "binance" + ] + pargs = get_args(args) + pargs['config'] = None + start_list_markets(pargs, False) + captured = capsys.readouterr() + assert re.match("Exchange Binance has 8 active markets:\n", + captured.out) # Test with --all: all markets args = [ From 1c503f39b2226ae19133a7c03131cede6905f03b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Oct 2019 19:54:38 +0200 Subject: [PATCH 0768/3421] Handle some merge aftermaths --- .travis.yml | 2 +- freqtrade/configuration/arguments.py | 39 ++++++++++++++++------------ tests/optimize/test_hyperopt.py | 38 +++++++++++++-------------- tests/strategy/test_strategy.py | 2 +- tests/test_arguments.py | 4 +-- tests/test_utils.py | 4 +-- 6 files changed, 47 insertions(+), 42 deletions(-) diff --git a/.travis.yml b/.travis.yml index 14466d2c4..d5d4ad8c5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,7 +32,7 @@ jobs: name: backtest - script: - cp config.json.example config.json - - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy DefaultStrategy --hyperopt DefaultHyperOpts + - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy DefaultStrategy --hyperopt DefaultHyperOpt name: hyperopt - script: flake8 name: flake8 diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index b093a5015..bc58fc8e8 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -153,41 +153,46 @@ class Arguments: self._build_args(optionlist=ARGS_CREATE_USERDIR, parser=create_userdir_cmd) # Add list-exchanges subcommand - list_exchanges_cmd = subparsers.add_parser('list-exchanges', - help='Print available exchanges.', - parents=[_common_parser], - ) + list_exchanges_cmd = subparsers.add_parser( + 'list-exchanges', + help='Print available exchanges.', + parents=[_common_parser], + ) list_exchanges_cmd.set_defaults(func=start_list_exchanges) self._build_args(optionlist=ARGS_LIST_EXCHANGES, parser=list_exchanges_cmd) # Add list-timeframes subcommand list_timeframes_cmd = subparsers.add_parser( 'list-timeframes', - help='Print available ticker intervals (timeframes) for the exchange.' + help='Print available ticker intervals (timeframes) for the exchange.', + parents=[_common_parser], ) list_timeframes_cmd.set_defaults(func=start_list_timeframes) self._build_args(optionlist=ARGS_LIST_TIMEFRAMES, parser=list_timeframes_cmd) # Add download-data subcommand - download_data_cmd = subparsers.add_parser('download-data', - help='Download backtesting data.', - parents=[_common_parser], - ) + download_data_cmd = subparsers.add_parser( + 'download-data', + help='Download backtesting data.', + parents=[_common_parser], + ) download_data_cmd.set_defaults(func=start_download_data) self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd) # Add Plotting subcommand - plot_dataframe_cmd = subparsers.add_parser('plot-dataframe', - help='Plot candles with indicators.', - parents=[_common_parser, _strategy_parser], - ) + plot_dataframe_cmd = subparsers.add_parser( + 'plot-dataframe', + help='Plot candles with indicators.', + parents=[_common_parser, _strategy_parser], + ) plot_dataframe_cmd.set_defaults(func=start_plot_dataframe) self._build_args(optionlist=ARGS_PLOT_DATAFRAME, parser=plot_dataframe_cmd) # Plot profit - plot_profit_cmd = subparsers.add_parser('plot-profit', - help='Generate plot showing profits.', - parents=[_common_parser], - ) + plot_profit_cmd = subparsers.add_parser( + 'plot-profit', + help='Generate plot showing profits.', + parents=[_common_parser], + ) plot_profit_cmd.set_defaults(func=start_plot_profit) self._build_args(optionlist=ARGS_PLOT_PROFIT, parser=plot_profit_cmd) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index c9ecb63dc..6bed0f8cc 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -27,7 +27,7 @@ from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, def hyperopt(default_conf, mocker): default_conf.update({ 'spaces': ['all'], - 'hyperopt': 'DefaultHyperOpts', + 'hyperopt': 'DefaultHyperOpt', }) patch_exchange(mocker) return Hyperopt(default_conf) @@ -73,7 +73,7 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca args = [ 'hyperopt', '--config', 'config.json', - '--hyperopt', 'DefaultHyperOpts', + '--hyperopt', 'DefaultHyperOpt', ] config = setup_configuration(get_args(args), RunMode.HYPEROPT) @@ -105,7 +105,7 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo args = [ 'hyperopt', '--config', 'config.json', - '--hyperopt', 'DefaultHyperOpts', + '--hyperopt', 'DefaultHyperOpt', '--datadir', '/foo/bar', '--ticker-interval', '1m', '--timerange', ':100', @@ -160,7 +160,7 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None: 'freqtrade.resolvers.hyperopt_resolver.HyperOptResolver._load_hyperopt', MagicMock(return_value=hyperopt(default_conf)) ) - default_conf.update({'hyperopt': 'DefaultHyperOpts'}) + default_conf.update({'hyperopt': 'DefaultHyperOpt'}) x = HyperOptResolver(default_conf).hyperopt assert not hasattr(x, 'populate_buy_trend') assert not hasattr(x, 'populate_sell_trend') @@ -214,7 +214,7 @@ def test_start_not_installed(mocker, default_conf, caplog, import_fails) -> None args = [ 'hyperopt', '--config', 'config.json', - '--hyperopt', 'DefaultHyperOpts', + '--hyperopt', 'DefaultHyperOpt', '--epochs', '5' ] args = get_args(args) @@ -232,7 +232,7 @@ def test_start(mocker, default_conf, caplog) -> None: args = [ 'hyperopt', '--config', 'config.json', - '--hyperopt', 'DefaultHyperOpts', + '--hyperopt', 'DefaultHyperOpt', '--epochs', '5' ] args = get_args(args) @@ -255,7 +255,7 @@ def test_start_no_data(mocker, default_conf, caplog) -> None: args = [ 'hyperopt', '--config', 'config.json', - '--hyperopt', 'DefaultHyperOpts', + '--hyperopt', 'DefaultHyperOpt', '--epochs', '5' ] args = get_args(args) @@ -273,7 +273,7 @@ def test_start_filelock(mocker, default_conf, caplog) -> None: args = [ 'hyperopt', '--config', 'config.json', - '--hyperopt', 'DefaultHyperOpts', + '--hyperopt', 'DefaultHyperOpt', '--epochs', '5' ] args = get_args(args) @@ -425,7 +425,7 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: patch_exchange(mocker) default_conf.update({'config': 'config.json.example', - 'hyperopt': 'DefaultHyperOpts', + 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, 'timerange': None, 'spaces': 'all', @@ -530,7 +530,7 @@ def test_buy_strategy_generator(hyperopt, testdatadir) -> None: def test_generate_optimizer(mocker, default_conf) -> None: default_conf.update({'config': 'config.json.example', - 'hyperopt': 'DefaultHyperOpts', + 'hyperopt': 'DefaultHyperOpt', 'timerange': None, 'spaces': 'all', 'hyperopt_min_trades': 1, @@ -597,7 +597,7 @@ def test_generate_optimizer(mocker, default_conf) -> None: def test_clean_hyperopt(mocker, default_conf, caplog): patch_exchange(mocker) default_conf.update({'config': 'config.json.example', - 'hyperopt': 'DefaultHyperOpts', + 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, 'timerange': None, 'spaces': 'all', @@ -614,7 +614,7 @@ def test_clean_hyperopt(mocker, default_conf, caplog): def test_continue_hyperopt(mocker, default_conf, caplog): patch_exchange(mocker) default_conf.update({'config': 'config.json.example', - 'hyperopt': 'DefaultHyperOpts', + 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, 'timerange': None, 'spaces': 'all', @@ -644,7 +644,7 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: patch_exchange(mocker) default_conf.update({'config': 'config.json.example', - 'hyperopt': 'DefaultHyperOpts', + 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, 'timerange': None, 'spaces': 'all', @@ -682,7 +682,7 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> patch_exchange(mocker) default_conf.update({'config': 'config.json.example', - 'hyperopt': 'DefaultHyperOpts', + 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, 'timerange': None, 'spaces': 'roi stoploss', @@ -721,7 +721,7 @@ def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys) patch_exchange(mocker) default_conf.update({'config': 'config.json.example', - 'hyperopt': 'DefaultHyperOpts', + 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, 'timerange': None, 'spaces': 'roi stoploss', @@ -763,7 +763,7 @@ def test_simplified_interface_all_failed(mocker, default_conf, caplog, capsys) - patch_exchange(mocker) default_conf.update({'config': 'config.json.example', - 'hyperopt': 'DefaultHyperOpts', + 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, 'timerange': None, 'spaces': 'all', @@ -797,7 +797,7 @@ def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None: patch_exchange(mocker) default_conf.update({'config': 'config.json.example', - 'hyperopt': 'DefaultHyperOpts', + 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, 'timerange': None, 'spaces': 'buy', @@ -843,7 +843,7 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None patch_exchange(mocker) default_conf.update({'config': 'config.json.example', - 'hyperopt': 'DefaultHyperOpts', + 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, 'timerange': None, 'spaces': 'sell', @@ -891,7 +891,7 @@ def test_simplified_interface_failed(mocker, default_conf, caplog, capsys, metho patch_exchange(mocker) default_conf.update({'config': 'config.json.example', - 'hyperopt': 'DefaultHyperOpts', + 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, 'timerange': None, 'spaces': space, diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 285ac1bbf..97affc99c 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -61,7 +61,7 @@ def test_load_strategy_invalid_directory(result, caplog, default_conf): assert log_has_re(r'Path .*' + r'some.*path.*' + r'.* does not exist', caplog) - assert 'adx' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) + assert 'rsi' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) def test_load_not_found_strategy(default_conf): diff --git a/tests/test_arguments.py b/tests/test_arguments.py index be711aeda..d8fbace0f 100644 --- a/tests/test_arguments.py +++ b/tests/test_arguments.py @@ -186,7 +186,7 @@ def test_config_notallowed(mocker) -> None: ] pargs = Arguments(args).get_parsed_arg() - assert pargs["config"] is None + assert "config" not in pargs # When file exists: mocker.patch.object(Path, "is_file", MagicMock(return_value=True)) @@ -195,7 +195,7 @@ def test_config_notallowed(mocker) -> None: ] pargs = Arguments(args).get_parsed_arg() # config is not added even if it exists, since create-userdir is in the notallowed list - assert pargs["config"] is None + assert "config" not in pargs def test_config_notrequired(mocker) -> None: diff --git a/tests/test_utils.py b/tests/test_utils.py index f798dcfb8..4e76bb6ca 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -95,8 +95,8 @@ def test_list_timeframes(mocker, capsys): # Test with --config config.json.example args = [ - '--config', 'config.json.example', "list-timeframes", + '--config', 'config.json.example', ] start_list_timeframes(get_args(args)) captured = capsys.readouterr() @@ -139,8 +139,8 @@ def test_list_timeframes(mocker, capsys): # Test with --one-column args = [ - '--config', 'config.json.example', "list-timeframes", + '--config', 'config.json.example', "--one-column", ] start_list_timeframes(get_args(args)) From bedbd964fc12f9115c5942e1e6535770e144545b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 21 Oct 2019 06:51:48 +0200 Subject: [PATCH 0769/3421] slightly rephrase strategy docs --- docs/strategy-customization.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 7e677d4ce..ab7dcfc30 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -413,17 +413,16 @@ freqtrade --strategy AwesomeStrategy --strategy-path /some/directory ### Common mistakes when developing strategies -Backtesting analyzes the whole time-range at once for performance reasons. Because of this, strategy authors need to make sure that strategies do not look into the future. +Backtesting analyzes the whole time-range at once for performance reasons. Because of this, strategy authors need to make sure that strategies do not look-ahead into the future. This is a common pain-point, which can cause huge differences between backtesting and dry/live run methods, since they all use data which is not available during dry/live runs, so these strategies will perform well during backtesting, but will fail / perform badly in real conditions. -The following lists some common patterns which should be avoided to avoid frustration: +The following lists some common patterns which should be avoided to prevent frustration: - don't use `shift(-1)`. This uses data from the future, which is not available. - don't use `.iloc[-1]` or any other absolute position in the dataframe, this will be different between dry-run and backtesting. - don't use `dataframe['volume'].mean()`. This uses the full DataFrame for backtesting, including data from the future. Use `dataframe['volume'].rolling().mean()` instead - don't use `.resample('1h')`. This uses the left border of the interval, so moves data from an hour to the start of the hour. Use `.resample('1h', label='right')` instead. - ### Further strategy ideas To get additional Ideas for strategies, head over to our [strategy repository](https://github.com/freqtrade/freqtrade-strategies). Feel free to use them as they are - but results will depend on the current market situation, pairs used etc. - therefore please backtest the strategy for your exchange/desired pairs first, evaluate carefully, use at your own risk. From b116cc75c4ceaa6435a773469d3ba2918fde2678 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 21 Oct 2019 07:07:25 +0200 Subject: [PATCH 0770/3421] Fix failing test --- tests/test_utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index f12b6670b..0ad6a1369 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -192,6 +192,7 @@ def test_list_markets(mocker, markets, capsys): "BLK/BTC, BTT/BTC, ETH/BTC, ETH/USDT, LTC/USD, LTC/USDT, TKN/BTC, XLTCUSDT.\n" in captured.out) + patch_exchange(mocker, api_mock=api_mock, id="binance") # Test with --exchange args = [ "list-markets", @@ -201,9 +202,10 @@ def test_list_markets(mocker, markets, capsys): pargs['config'] = None start_list_markets(pargs, False) captured = capsys.readouterr() - assert re.match("Exchange Binance has 8 active markets:\n", + assert re.match("\nExchange Binance has 8 active markets:\n", captured.out) + patch_exchange(mocker, api_mock=api_mock, id="bittrex") # Test with --all: all markets args = [ '--config', 'config.json.example', From c2566f2436066b0798727110826fe9063d9fb27b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2019 07:46:32 +0000 Subject: [PATCH 0771/3421] Bump numpy from 1.17.2 to 1.17.3 Bumps [numpy](https://github.com/numpy/numpy) from 1.17.2 to 1.17.3. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.17.2...v1.17.3) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2767180ac..62ede475c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Load common requirements -r requirements-common.txt -numpy==1.17.2 +numpy==1.17.3 pandas==0.25.1 From e350bcc2eff707ad29a2a31b2fe05ee74e6e4c8f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2019 07:47:53 +0000 Subject: [PATCH 0772/3421] Bump ccxt from 1.18.1260 to 1.18.1306 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1260 to 1.18.1306. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.18.1260...1.18.1306) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index c2c5317dc..e84e7caea 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.1260 +ccxt==1.18.1306 SQLAlchemy==1.3.10 python-telegram-bot==12.1.1 arrow==0.15.2 From 657f1b6c451af1023e738d1b5bebf022e6c4ae89 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2019 07:49:35 +0000 Subject: [PATCH 0773/3421] Bump flake8-tidy-imports from 2.0.0 to 3.0.0 Bumps [flake8-tidy-imports](https://github.com/adamchainz/flake8-tidy-imports) from 2.0.0 to 3.0.0. - [Release notes](https://github.com/adamchainz/flake8-tidy-imports/releases) - [Changelog](https://github.com/adamchainz/flake8-tidy-imports/blob/master/HISTORY.rst) - [Commits](https://github.com/adamchainz/flake8-tidy-imports/compare/2.0.0...3.0.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 6cf378c03..0578c03bd 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -6,7 +6,7 @@ coveralls==1.8.2 flake8==3.7.8 flake8-type-annotations==0.1.0 -flake8-tidy-imports==2.0.0 +flake8-tidy-imports==3.0.0 mypy==0.730 pytest==5.2.1 pytest-asyncio==0.10.0 From 364859394b7ecb1f10da19284ac0fce26cb5f164 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2019 07:50:16 +0000 Subject: [PATCH 0774/3421] Bump plotly from 4.1.1 to 4.2.1 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.1.1 to 4.2.1. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.1.1...v4.2.1) Signed-off-by: dependabot-preview[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index 1f1df4ecc..235c71896 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.1.1 +plotly==4.2.1 From e5f06c201fa4489413a861db77807d6662c2d4b6 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2019 08:29:57 +0000 Subject: [PATCH 0775/3421] Bump python-telegram-bot from 12.1.1 to 12.2.0 Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.1.1 to 12.2.0. - [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases) - [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst) - [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.1.1...v12.2.0) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index e84e7caea..1e42d8a04 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -2,7 +2,7 @@ # mainly used for Raspberry pi installs ccxt==1.18.1306 SQLAlchemy==1.3.10 -python-telegram-bot==12.1.1 +python-telegram-bot==12.2.0 arrow==0.15.2 cachetools==3.1.1 requests==2.22.0 From f07b26f2453b7af82a3974331b2133d0de53c8e7 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2019 08:33:48 +0000 Subject: [PATCH 0776/3421] Bump pandas from 0.25.1 to 0.25.2 Bumps [pandas](https://github.com/pandas-dev/pandas) from 0.25.1 to 0.25.2. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v0.25.1...v0.25.2) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 62ede475c..8d9b4953f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ -r requirements-common.txt numpy==1.17.3 -pandas==0.25.1 +pandas==0.25.2 From 8872158a6a53e99a919bd70cf204d64b4c81e3a4 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2019 10:29:50 +0000 Subject: [PATCH 0777/3421] Bump mypy from 0.730 to 0.740 Bumps [mypy](https://github.com/python/mypy) from 0.730 to 0.740. - [Release notes](https://github.com/python/mypy/releases) - [Commits](https://github.com/python/mypy/compare/v0.730...v0.740) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 0578c03bd..f5cde59e8 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ coveralls==1.8.2 flake8==3.7.8 flake8-type-annotations==0.1.0 flake8-tidy-imports==3.0.0 -mypy==0.730 +mypy==0.740 pytest==5.2.1 pytest-asyncio==0.10.0 pytest-cov==2.8.1 From ff5ba64385e97a40b2b78406fd542c2368536fb7 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 21 Oct 2019 14:06:46 +0300 Subject: [PATCH 0778/3421] Improve docs --- docs/utils.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index 57bb53cc7..9f5792660 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -61,8 +61,10 @@ The `list-pairs` and `list-markets` subcommands allow to see the pairs/markets a Pairs are markets with the '/' character between the base currency part and the quote currency part in the market symbol. For example, in the 'ETH/BTC' pair 'ETH' is the base currency, while 'BTC' is the quote currency. -For pairs traded by Freqtrade the pair quote currency is defined by the value of the `stake_currency` configuration setting, -but using these commands you can print info about any pair/market, with any quote currency. + +For pairs traded by Freqtrade the pair quote currency is defined by the value of the `stake_currency` configuration setting. + +You can print info about any pair/market with these subcommands - and you can filter output by quote-currency using `--quote BTC`, or by base-currency using `--base ETH` options correspondingly. These subcommands have same usage and same set of available options: From a43d436f9863543fc9a010c256a8b0659f087713 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 21 Oct 2019 19:43:44 +0200 Subject: [PATCH 0779/3421] Move decorators out of API Class --- freqtrade/rpc/api_server.py | 54 ++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 711202b27..95ee51eaf 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -2,7 +2,7 @@ import logging import threading from datetime import date, datetime from ipaddress import IPv4Address -from typing import Dict +from typing import Dict, Callable, Any from arrow import Arrow from flask import Flask, jsonify, request @@ -34,6 +34,34 @@ class ArrowJSONEncoder(JSONEncoder): return JSONEncoder.default(self, obj) +# Type should really be Callable[[ApiServer, Any], Any], but that will create a circular dependency +def require_login(func: Callable[[Any, Any], Any]): + + def func_wrapper(obj, *args, **kwargs): + + auth = request.authorization + if auth and obj.check_auth(auth.username, auth.password): + return func(obj, *args, **kwargs) + else: + return jsonify({"error": "Unauthorized"}), 401 + + return func_wrapper + + +# Type should really be Callable[[ApiServer], Any], but that will create a circular dependency +def rpc_catch_errors(func: Callable[[Any], Any]): + + def func_wrapper(obj, *args, **kwargs): + + try: + return func(obj, *args, **kwargs) + except RPCException as e: + logger.exception("API Error calling %s: %s", func.__name__, e) + return obj.rest_error(f"Error querying {func.__name__}: {e}") + + return func_wrapper + + class ApiServer(RPC): """ This class runs api server and provides rpc.rpc functionality to it @@ -41,34 +69,10 @@ class ApiServer(RPC): This class starts a none blocking thread the api server runs within """ - def rpc_catch_errors(func): - - def func_wrapper(self, *args, **kwargs): - - try: - return func(self, *args, **kwargs) - except RPCException as e: - logger.exception("API Error calling %s: %s", func.__name__, e) - return self.rest_error(f"Error querying {func.__name__}: {e}") - - return func_wrapper - def check_auth(self, username, password): return (username == self._config['api_server'].get('username') and password == self._config['api_server'].get('password')) - def require_login(func): - - def func_wrapper(self, *args, **kwargs): - - auth = request.authorization - if auth and self.check_auth(auth.username, auth.password): - return func(self, *args, **kwargs) - else: - return jsonify({"error": "Unauthorized"}), 401 - - return func_wrapper - def __init__(self, freqtrade) -> None: """ Init the api server, and init the super class RPC From 73fa5bae968ecbf964e2360a4eb0a91c8d6db90c Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Tue, 22 Oct 2019 00:03:11 +0300 Subject: [PATCH 0780/3421] minor: Fix wording in a docstring --- freqtrade/rpc/api_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 95ee51eaf..67bbfdc78 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -66,7 +66,7 @@ class ApiServer(RPC): """ This class runs api server and provides rpc.rpc functionality to it - This class starts a none blocking thread the api server runs within + This class starts a non-blocking thread the api server runs within """ def check_auth(self, username, password): From 562e4e63de257d6260e9ec905261522fd7eaaea1 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 22 Oct 2019 13:48:54 +0300 Subject: [PATCH 0781/3421] =?UTF-8?q?Set=20validate=3DFalse=20for=20exchan?= =?UTF-8?q?g=C3=91e=20in=20start=5Flist=5Fmarkets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- freqtrade/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 3aadaa893..f4e9c8a3c 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -147,7 +147,7 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: config = setup_utils_configuration(args, RunMode.OTHER) # Init exchange - exchange = ExchangeResolver(config['exchange']['name'], config).exchange + exchange = ExchangeResolver(config['exchange']['name'], config, validate=False).exchange # By default only active pairs/markets are to be shown active_only = not args.get('list_pairs_all', False) From b26faa13bd0b43fff98d428b904f68e3a0d54e60 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 22 Oct 2019 13:51:36 +0300 Subject: [PATCH 0782/3421] Call validate_timeframe only when validate is True --- freqtrade/exchange/exchange.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 8f1aa0c44..71f0737ef 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -217,20 +217,22 @@ class Exchange: logger.info('Using Exchange "%s"', self.name) - # Check if timeframe is available - self.validate_timeframes(config.get('ticker_interval')) - - # Converts the interval provided in minutes in config to seconds - self.markets_refresh_interval: int = exchange_config.get( - "markets_refresh_interval", 60) * 60 if validate: + # Check if timeframe is available + self.validate_timeframes(config.get('ticker_interval')) + # Initial markets load self._load_markets() + # Check if all pairs are available self.validate_pairs(config['exchange']['pair_whitelist']) self.validate_ordertypes(config.get('order_types', {})) self.validate_order_time_in_force(config.get('order_time_in_force', {})) + # Converts the interval provided in minutes in config to seconds + self.markets_refresh_interval: int = exchange_config.get( + "markets_refresh_interval", 60) * 60 + def __del__(self): """ Destructor - clean up async stuff From 336808ec543f4023d3241c22992d79a489fe2418 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 22 Oct 2019 14:02:47 +0200 Subject: [PATCH 0783/3421] Correctly pass validate flag to fallback exchange too --- freqtrade/resolvers/exchange_resolver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/resolvers/exchange_resolver.py b/freqtrade/resolvers/exchange_resolver.py index 8e55d1064..60f37b1c9 100644 --- a/freqtrade/resolvers/exchange_resolver.py +++ b/freqtrade/resolvers/exchange_resolver.py @@ -32,7 +32,7 @@ class ExchangeResolver(IResolver): logger.info( f"No {exchange_name} specific subclass found. Using the generic class instead.") if not hasattr(self, "exchange"): - self.exchange = Exchange(config) + self.exchange = Exchange(config, validate=validate) def _load_exchange( self, exchange_name: str, kwargs: dict) -> Exchange: From 87ff7be5503de08ec6b3fb2e579a9fab30b2632e Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 23 Oct 2019 07:06:02 +0200 Subject: [PATCH 0784/3421] Use exchange.name instead of config['exchange']['name'] --- freqtrade/utils.py | 8 ++++---- tests/test_utils.py | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 0e7134235..b001f0316 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -86,9 +86,9 @@ def start_download_data(args: Dict[str, Any]) -> None: pairs_not_available: List[str] = [] + # Init exchange + exchange = ExchangeResolver(config['exchange']['name'], config).exchange try: - # Init exchange - exchange = ExchangeResolver(config['exchange']['name'], config).exchange if config.get('download_trades'): pairs_not_available = refresh_backtest_trades_data( @@ -110,7 +110,7 @@ def start_download_data(args: Dict[str, Any]) -> None: finally: if pairs_not_available: logger.info(f"Pairs [{','.join(pairs_not_available)}] not available " - f"on exchange {config['exchange']['name']}.") + f"on exchange {exchange.name}.") def start_list_timeframes(args: Dict[str, Any]) -> None: @@ -127,5 +127,5 @@ def start_list_timeframes(args: Dict[str, Any]) -> None: if args['print_one_column']: print('\n'.join(exchange.timeframes)) else: - print(f"Timeframes available for the exchange `{config['exchange']['name']}`: " + print(f"Timeframes available for the exchange `{exchange.name}`: " f"{', '.join(exchange.timeframes)}") diff --git a/tests/test_utils.py b/tests/test_utils.py index 586a6891b..558f5642c 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -100,7 +100,7 @@ def test_list_timeframes(mocker, capsys): ] start_list_timeframes(get_args(args)) captured = capsys.readouterr() - assert re.match("Timeframes available for the exchange `bittrex`: " + assert re.match("Timeframes available for the exchange `Bittrex`: " "1m, 5m, 30m, 1h, 1d", captured.out) @@ -111,7 +111,7 @@ def test_list_timeframes(mocker, capsys): ] start_list_timeframes(get_args(args)) captured = capsys.readouterr() - assert re.match("Timeframes available for the exchange `bittrex`: " + assert re.match("Timeframes available for the exchange `Bittrex`: " "1m, 5m, 30m, 1h, 1d", captured.out) @@ -125,7 +125,7 @@ def test_list_timeframes(mocker, capsys): '1d': '1d', '3d': '3d', } - patch_exchange(mocker, api_mock=api_mock) + patch_exchange(mocker, api_mock=api_mock, id='binance') # Test with --exchange binance args = [ "list-timeframes", @@ -133,7 +133,7 @@ def test_list_timeframes(mocker, capsys): ] start_list_timeframes(get_args(args)) captured = capsys.readouterr() - assert re.match("Timeframes available for the exchange `binance`: " + assert re.match("Timeframes available for the exchange `Binance`: " "1m, 5m, 15m, 30m, 1h, 6h, 12h, 1d, 3d", captured.out) @@ -208,7 +208,7 @@ def test_download_data_keyboardInterrupt(mocker, caplog, markets): def test_download_data_no_markets(mocker, caplog): dl_mock = mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data', MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) - patch_exchange(mocker) + patch_exchange(mocker, id='binance') mocker.patch( 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value={}) ) @@ -220,7 +220,7 @@ def test_download_data_no_markets(mocker, caplog): ] start_download_data(get_args(args)) assert dl_mock.call_args[1]['timerange'].starttype == "date" - assert log_has("Pairs [ETH/BTC,XRP/BTC] not available on exchange binance.", caplog) + assert log_has("Pairs [ETH/BTC,XRP/BTC] not available on exchange Binance.", caplog) def test_download_data_no_exchange(mocker, caplog): From 6640f4a1b296b77e738cf37a083a5478c42187e3 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 23 Oct 2019 23:57:17 +0300 Subject: [PATCH 0785/3421] Make flake happy --- freqtrade/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index f9c4aeed7..25e883c76 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -218,4 +218,4 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: elif not (args.get('print_one_column', False) or args.get('list_pairs_print_json', False) or args.get('print_csv', False)): - print(f"{summary_str}.") \ No newline at end of file + print(f"{summary_str}.") From e1edf363076b9b6397e0f2d78a7323f922fb5989 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 24 Oct 2019 06:22:05 +0200 Subject: [PATCH 0786/3421] Fix test failures --- freqtrade/configuration/arguments.py | 6 +++-- tests/test_utils.py | 34 ++++++++++++++-------------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index e62921af8..29d0d98a2 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -179,7 +179,8 @@ class Arguments: # Add list-markets subcommand list_markets_cmd = subparsers.add_parser( 'list-markets', - help='Print markets on exchange.' + help='Print markets on exchange.', + parents=[_common_parser], ) list_markets_cmd.set_defaults(func=partial(start_list_markets, pairs_only=False)) self._build_args(optionlist=ARGS_LIST_PAIRS, parser=list_markets_cmd) @@ -187,7 +188,8 @@ class Arguments: # Add list-pairs subcommand list_pairs_cmd = subparsers.add_parser( 'list-pairs', - help='Print pairs on exchange.' + help='Print pairs on exchange.', + parents=[_common_parser], ) list_pairs_cmd.set_defaults(func=partial(start_list_markets, pairs_only=True)) self._build_args(optionlist=ARGS_LIST_PAIRS, parser=list_pairs_cmd) diff --git a/tests/test_utils.py b/tests/test_utils.py index c598cfd76..8cd9c3aef 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -182,8 +182,8 @@ def test_list_markets(mocker, markets, capsys): # Test with --config config.json.example args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', "--print-list", ] start_list_markets(get_args(args), False) @@ -208,8 +208,8 @@ def test_list_markets(mocker, markets, capsys): patch_exchange(mocker, api_mock=api_mock, id="bittrex") # Test with --all: all markets args = [ - '--config', 'config.json.example', "list-markets", "--all", + '--config', 'config.json.example', "--print-list", ] start_list_markets(get_args(args), False) @@ -221,8 +221,8 @@ def test_list_markets(mocker, markets, capsys): # Test list-pairs subcommand: active pairs args = [ - '--config', 'config.json.example', "list-pairs", + '--config', 'config.json.example', "--print-list", ] start_list_markets(get_args(args), True) @@ -233,8 +233,8 @@ def test_list_markets(mocker, markets, capsys): # Test list-pairs subcommand with --all: all pairs args = [ - '--config', 'config.json.example', "list-pairs", "--all", + '--config', 'config.json.example', "--print-list", ] start_list_markets(get_args(args), True) @@ -246,8 +246,8 @@ def test_list_markets(mocker, markets, capsys): # active markets, base=ETH, LTC args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', "--base", "ETH", "LTC", "--print-list", ] @@ -259,8 +259,8 @@ def test_list_markets(mocker, markets, capsys): # active markets, base=LTC args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', "--base", "LTC", "--print-list", ] @@ -272,8 +272,8 @@ def test_list_markets(mocker, markets, capsys): # active markets, quote=USDT, USD args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', "--quote", "USDT", "USD", "--print-list", ] @@ -285,8 +285,8 @@ def test_list_markets(mocker, markets, capsys): # active markets, quote=USDT args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', "--quote", "USDT", "--print-list", ] @@ -298,8 +298,8 @@ def test_list_markets(mocker, markets, capsys): # active markets, base=LTC, quote=USDT args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', "--base", "LTC", "--quote", "USDT", "--print-list", ] @@ -311,8 +311,8 @@ def test_list_markets(mocker, markets, capsys): # active pairs, base=LTC, quote=USDT args = [ - '--config', 'config.json.example', "list-pairs", + '--config', 'config.json.example', "--base", "LTC", "--quote", "USDT", "--print-list", ] @@ -324,8 +324,8 @@ def test_list_markets(mocker, markets, capsys): # active markets, base=LTC, quote=USDT, NONEXISTENT args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', "--base", "LTC", "--quote", "USDT", "NONEXISTENT", "--print-list", ] @@ -337,8 +337,8 @@ def test_list_markets(mocker, markets, capsys): # active markets, base=LTC, quote=NONEXISTENT args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', "--base", "LTC", "--quote", "NONEXISTENT", "--print-list", ] @@ -350,8 +350,8 @@ def test_list_markets(mocker, markets, capsys): # Test tabular output args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', ] start_list_markets(get_args(args), False) captured = capsys.readouterr() @@ -360,8 +360,8 @@ def test_list_markets(mocker, markets, capsys): # Test tabular output, no markets found args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', "--base", "LTC", "--quote", "NONEXISTENT", ] start_list_markets(get_args(args), False) @@ -372,8 +372,8 @@ def test_list_markets(mocker, markets, capsys): # Test --print-json args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', "--print-json" ] start_list_markets(get_args(args), False) @@ -383,8 +383,8 @@ def test_list_markets(mocker, markets, capsys): # Test --print-csv args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', "--print-csv" ] start_list_markets(get_args(args), False) @@ -395,8 +395,8 @@ def test_list_markets(mocker, markets, capsys): # Test --one-column args = [ - '--config', 'config.json.example', "list-markets", + '--config', 'config.json.example', "--one-column" ] start_list_markets(get_args(args), False) From 13255b370c270a556f2e5883de0ac88abc801667 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 24 Oct 2019 06:30:07 +0200 Subject: [PATCH 0787/3421] Allow non-config to parse config --- freqtrade/configuration/configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 7bb49dc31..393fd78be 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -93,7 +93,7 @@ class Configuration: :return: Configuration dictionary """ # Load all configs - config: Dict[str, Any] = self.load_from_files(self.args["config"]) + config: Dict[str, Any] = self.load_from_files(self.args.get("config", [])) # Keep a copy of the original configuration file config['original_config'] = deepcopy(config) From 2e1e080022756ff07eecb468e05279d5655397fe Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 24 Oct 2019 22:33:44 +0300 Subject: [PATCH 0788/3421] Fix potential race conditions between RPC and Freqtradebot during initialization --- freqtrade/freqtradebot.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ed5116b08..6a1be16a1 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -55,8 +55,6 @@ class FreqtradeBot: # Check config consistency here since strategies can set certain options validate_config_consistency(config) - self.rpc: RPCManager = RPCManager(self) - self.exchange = ExchangeResolver(self.config['exchange']['name'], self.config).exchange self.wallets = Wallets(self.config, self.exchange) @@ -83,6 +81,13 @@ class FreqtradeBot: initial_state = self.config.get('initial_state') self.state = State[initial_state.upper()] if initial_state else State.STOPPED + # RPC runs in separate threads, can start handling external commands just after + # initialization, even before Freqtradebot has a chance to start its throttling, + # so anything in the Freqtradebot instance should be ready (initialized), including + # the initial state of the bot. + # Keep this at the end of this initialization method. + self.rpc: RPCManager = RPCManager(self) + def cleanup(self) -> None: """ Cleanup pending resources on an already stopped bot From 59e881c59ddbd83e66926bad6ad2d80887ac48e7 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 24 Oct 2019 23:11:07 +0300 Subject: [PATCH 0789/3421] Remove obsolete scripts --- scripts/download_backtest_data.py | 11 ---- scripts/get_market_pairs.py | 103 ------------------------------ scripts/plot_dataframe.py | 11 ---- scripts/plot_profit.py | 11 ---- {scripts => tests}/pytest.sh | 0 5 files changed, 136 deletions(-) delete mode 100755 scripts/download_backtest_data.py delete mode 100644 scripts/get_market_pairs.py delete mode 100755 scripts/plot_dataframe.py delete mode 100755 scripts/plot_profit.py rename {scripts => tests}/pytest.sh (100%) diff --git a/scripts/download_backtest_data.py b/scripts/download_backtest_data.py deleted file mode 100755 index a8f919a10..000000000 --- a/scripts/download_backtest_data.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python3 - -import sys - - -print("This script has been integrated into freqtrade " - "and its functionality is available by calling `freqtrade download-data`.") -print("Please check the documentation on https://www.freqtrade.io/en/latest/backtesting/ " - "for details.") - -sys.exit(1) diff --git a/scripts/get_market_pairs.py b/scripts/get_market_pairs.py deleted file mode 100644 index cd38bf2fa..000000000 --- a/scripts/get_market_pairs.py +++ /dev/null @@ -1,103 +0,0 @@ -""" -This script was adapted from ccxt here: -https://github.com/ccxt/ccxt/blob/master/examples/py/arbitrage-pairs.py -""" -import os -import sys -import traceback - -root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -sys.path.append(root + '/python') - -import ccxt # noqa: E402 - - -def style(s, style): - return style + s + '\033[0m' - - -def green(s): - return style(s, '\033[92m') - - -def blue(s): - return style(s, '\033[94m') - - -def yellow(s): - return style(s, '\033[93m') - - -def red(s): - return style(s, '\033[91m') - - -def pink(s): - return style(s, '\033[95m') - - -def bold(s): - return style(s, '\033[1m') - - -def underline(s): - return style(s, '\033[4m') - - -def dump(*args): - print(' '.join([str(arg) for arg in args])) - - -def print_supported_exchanges(): - dump('Supported exchanges:', green(', '.join(ccxt.exchanges))) - - -try: - - if len(sys.argv) < 2: - dump("Usage: python " + sys.argv[0], green('id')) - print_supported_exchanges() - sys.exit(1) - - id = sys.argv[1] # get exchange id from command line arguments - - # check if the exchange is supported by ccxt - exchange_found = id in ccxt.exchanges - - if exchange_found: - dump('Instantiating', green(id), 'exchange') - - # instantiate the exchange by id - exchange = getattr(ccxt, id)({ - # 'proxy':'https://cors-anywhere.herokuapp.com/', - }) - - # load all markets from the exchange - markets = exchange.load_markets() - - # output a list of all market symbols - dump(green(id), 'has', len(exchange.symbols), 'symbols:', exchange.symbols) - - tuples = list(ccxt.Exchange.keysort(markets).items()) - - # debug - for (k, v) in tuples: - print(v) - - # output a table of all markets - dump(pink('{:<15} {:<15} {:<15} {:<15}'.format('id', 'symbol', 'base', 'quote'))) - - for (k, v) in tuples: - dump('{:<15} {:<15} {:<15} {:<15}'.format(v['id'], v['symbol'], v['base'], v['quote'])) - - else: - - dump('Exchange ' + red(id) + ' not found') - print_supported_exchanges() - -except Exception as e: - dump('[' + type(e).__name__ + ']', str(e)) - dump(traceback.format_exc()) - dump("Usage: python " + sys.argv[0], green('id')) - print_supported_exchanges() - sys.exit(1) diff --git a/scripts/plot_dataframe.py b/scripts/plot_dataframe.py deleted file mode 100755 index 62c4bc39f..000000000 --- a/scripts/plot_dataframe.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python3 - -import sys - - -print("This script has been integrated into freqtrade " - "and its functionality is available by calling `freqtrade plot-dataframe`.") -print("Please check the documentation on https://www.freqtrade.io/en/latest/plotting/ " - "for details.") - -sys.exit(1) diff --git a/scripts/plot_profit.py b/scripts/plot_profit.py deleted file mode 100755 index c9a23c1ee..000000000 --- a/scripts/plot_profit.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python3 - -import sys - - -print("This script has been integrated into freqtrade " - "and its functionality is available by calling `freqtrade plot-profit`.") -print("Please check the documentation on https://www.freqtrade.io/en/latest/plotting/ " - "for details.") - -sys.exit(1) diff --git a/scripts/pytest.sh b/tests/pytest.sh similarity index 100% rename from scripts/pytest.sh rename to tests/pytest.sh From b3e028e853789f64754a8ee054a0b45b0a65c371 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 25 Oct 2019 06:43:52 +0200 Subject: [PATCH 0790/3421] Improve dynamic pairlist documentation --- docs/configuration.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/configuration.md b/docs/configuration.md index 0eff4da88..dd54b6c54 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -417,10 +417,15 @@ section of the configuration. `askVolume`, `bidVolume` and `quoteVolume`, defaults to `quoteVolume`. * There is a possibility to filter low-value coins that would not allow setting a stop loss (set `precision_filter` parameter to `true` for this). + * `VolumePairList` does not consider `pair_whitelist`, but builds this automatically based the pairlist configuration. Example: ```json +"exchange": { + "pair_whitelist": [], + "pair_blacklist": ["BNB/BTC"] +}, "pairlist": { "method": "VolumePairList", "config": { From 45b83cc5441e4bf08fc30ee4379ebe5a71a0a32d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 25 Oct 2019 07:07:01 +0200 Subject: [PATCH 0791/3421] Don't require pair_whitelist for dynamicPairlist usecases --- freqtrade/configuration/config_validation.py | 15 ++++++++++- freqtrade/configuration/configuration.py | 3 +++ freqtrade/constants.py | 2 +- tests/test_configuration.py | 26 +++++++++++++++++++- 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 6a8374e6d..93d93263f 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -5,7 +5,7 @@ from jsonschema import Draft4Validator, validators from jsonschema.exceptions import ValidationError, best_match from freqtrade import constants, OperationalException - +from freqtrade.state import RunMode logger = logging.getLogger(__name__) @@ -64,6 +64,7 @@ def validate_config_consistency(conf: Dict[str, Any]) -> None: # validating trailing stoploss _validate_trailing_stoploss(conf) _validate_edge(conf) + _validate_whitelist(conf) def _validate_trailing_stoploss(conf: Dict[str, Any]) -> None: @@ -111,3 +112,15 @@ def _validate_edge(conf: Dict[str, Any]) -> None: "Edge and VolumePairList are incompatible, " "Edge will override whatever pairs VolumePairlist selects." ) + + +def _validate_whitelist(conf: Dict[str, Any]) -> None: + """ + Dynamic whitelist does not require pair_whitelist to be set - however StaticWhitelist does. + """ + if conf.get('runmode', RunMode.OTHER) in [RunMode.OTHER, RunMode.PLOT]: + return + + if (conf.get('pairlist', {}).get('method', 'StaticPairList') == 'StaticPairList' + and not conf.get('exchange', {}).get('pair_whitelist')): + raise OperationalException("StaticPairList requires pair_whitelist to be set.") diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 034f8d386..be1c7ab4e 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -179,6 +179,9 @@ class Configuration: config['exchange']['name'] = self.args["exchange"] logger.info(f"Using exchange {config['exchange']['name']}") + if 'pair_whitelist' not in config['exchange']: + config['exchange']['pair_whitelist'] = [] + if 'user_data_dir' in self.args and self.args["user_data_dir"]: config.update({'user_data_dir': self.args["user_data_dir"]}) elif 'user_data_dir' not in config: diff --git a/freqtrade/constants.py b/freqtrade/constants.py index e8f3f5783..5fdd45916 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -235,7 +235,7 @@ CONF_SCHEMA = { 'ccxt_config': {'type': 'object'}, 'ccxt_async_config': {'type': 'object'} }, - 'required': ['name', 'pair_whitelist'] + 'required': ['name'] }, 'edge': { 'type': 'object', diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 2aa805fe6..cfb7f9a7f 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -729,6 +729,30 @@ def test_validate_edge(edge_conf): validate_config_consistency(edge_conf) +def test_validate_whitelist(default_conf): + default_conf['runmode'] = RunMode.DRY_RUN + # Test regular case - has whitelist and uses StaticPairlist + validate_config_consistency(default_conf) + conf = deepcopy(default_conf) + del conf['exchange']['pair_whitelist'] + # Test error case + with pytest.raises(OperationalException, + match="StaticPairList requires pair_whitelist to be set."): + + validate_config_consistency(conf) + + conf = deepcopy(default_conf) + + conf.update({"pairlist": { + "method": "VolumePairList", + }}) + # Dynamic whitelist should not care about pair_whitelist + validate_config_consistency(conf) + del conf['exchange']['pair_whitelist'] + + validate_config_consistency(conf) + + def test_load_config_test_comments() -> None: """ Load config with comments @@ -895,7 +919,7 @@ def test_pairlist_resolving_fallback(mocker): # Fix flaky tests if config.json exists args["config"] = None - configuration = Configuration(args) + configuration = Configuration(args, RunMode.OTHER) config = configuration.get_config() assert config['pairs'] == ['ETH/BTC', 'XRP/BTC'] From 8201f70a80dd2f767516044f5e767b50461d6352 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 25 Oct 2019 14:19:02 +0200 Subject: [PATCH 0792/3421] Change loglevel of repeated message to debug --- freqtrade/freqtradebot.py | 2 +- tests/test_freqtradebot.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 6a1be16a1..d28014608 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -443,7 +443,7 @@ class FreqtradeBot: try: # Create entity and execute trade if not self.create_trades(): - logger.info('Found no buy signals for whitelisted currencies. Trying again...') + logger.debug('Found no buy signals for whitelisted currencies. Trying again...') except DependencyException as exception: logger.warning('Unable to create trade: %s', exception) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index f1533d867..607cb8f32 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1521,6 +1521,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, def test_process_maybe_execute_buys(mocker, default_conf, caplog) -> None: + caplog.set_level(logging.DEBUG) freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.create_trades', MagicMock(return_value=False)) From 0773a653336f06e91bba0f0a70276dcfaf151874 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 25 Oct 2019 15:00:16 +0200 Subject: [PATCH 0793/3421] Add I Am Alive Message --- config_full.json.example | 3 ++- docs/configuration.md | 1 + freqtrade/freqtradebot.py | 9 +++++++++ tests/test_freqtradebot.py | 24 ++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/config_full.json.example b/config_full.json.example index c6b229ea3..ebf76eaee 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -119,7 +119,8 @@ "initial_state": "running", "forcebuy_enable": false, "internals": { - "process_throttle_secs": 5 + "process_throttle_secs": 5, + "keep_alive_interval": 60 }, "strategy": "DefaultStrategy", "strategy_path": "user_data/strategies/" diff --git a/docs/configuration.md b/docs/configuration.md index 0eff4da88..c6a12d865 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -98,6 +98,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `strategy` | DefaultStrategy | Defines Strategy class to use. | `strategy_path` | null | Adds an additional strategy lookup path (must be a directory). | `internals.process_throttle_secs` | 5 | **Required.** Set the process throttle. Value in second. +| `internals.keep_alive_interval` | 60 | Print keepalive message every X seconds. Set to 0 to disable keepalive messages. | `internals.sd_notify` | false | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. | `logfile` | | Specify Logfile. Uses a rolling strategy of 10 files, with 1Mb per file. | `user_data_dir` | cwd()/user_data | Directory containing user data. Defaults to `./user_data/`. diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d28014608..6c79d04de 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -50,6 +50,10 @@ class FreqtradeBot: # Init objects self.config = config + self._last_alive_msg = 0 + + self.keep_alive_interval = self.config.get('internals', {}).get('keep_alive_interval', 60) + self.strategy: IStrategy = StrategyResolver(self.config).strategy # Check config consistency here since strategies can set certain options @@ -150,6 +154,11 @@ class FreqtradeBot: self.check_handle_timedout() Trade.session.flush() + if (self.keep_alive_interval + and (arrow.utcnow().timestamp - self._last_alive_msg > self.keep_alive_interval)): + logger.info("I am alive.") + self._last_alive_msg = arrow.utcnow().timestamp + def _extend_whitelist_with_trades(self, whitelist: List[str], trades: List[Any]): """ Extend whitelist with pairs from open trades diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 607cb8f32..b29bd0843 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3648,3 +3648,27 @@ def test_startup_trade_reinit(default_conf, edge_conf, mocker): ftbot = get_patched_freqtradebot(mocker, edge_conf) ftbot.startup() assert reinit_mock.call_count == 0 + + +def test_process_i_am_alive(default_conf, mocker, caplog): + patch_RPCManager(mocker) + patch_exchange(mocker) + mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) + + ftbot = get_patched_freqtradebot(mocker, default_conf) + message = "I am alive." + ftbot.process() + assert log_has(message, caplog) + assert ftbot._last_alive_msg != 0 + + caplog.clear() + # Message is not shown before interval is up + ftbot.process() + assert not log_has(message, caplog) + + caplog.clear() + # Set clock - 70 seconds + ftbot._last_alive_msg -= 70 + + ftbot.process() + assert log_has(message, caplog) From 41f97a73c97fa573c9ae0d61911a246014d032f8 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 25 Oct 2019 09:50:37 +0300 Subject: [PATCH 0794/3421] Add logging to syslog and journald --- freqtrade/loggers.py | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index 90b8905e5..a98da25c2 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -1,9 +1,12 @@ import logging import sys -from logging.handlers import RotatingFileHandler +from logging import Formatter +from logging.handlers import RotatingFileHandler, SysLogHandler from typing import Any, Dict, List +from freqtrade import OperationalException + logger = logging.getLogger(__name__) @@ -36,10 +39,38 @@ def setup_logging(config: Dict[str, Any]) -> None: # Log to stdout, not stderr log_handlers: List[logging.Handler] = [logging.StreamHandler(sys.stdout)] - if config.get('logfile'): - log_handlers.append(RotatingFileHandler(config['logfile'], - maxBytes=1024 * 1024, # 1Mb - backupCount=10)) + logfile = config.get('logfile') + if logfile: + s = logfile.split(':') + if s[0] == 'syslog': + # Address can be either a string (socket filename) for Unix domain socket or + # a tuple (hostname, port) for UDP socket. + # Address can be omitted (i.e. simple 'syslog' used as the value of + # config['logfilename']), which defaults to '/dev/log', applicable for most + # of the systems. + address = (s[1], int(s[2])) if len(s) > 2 else s[1] if len(s) > 1 else '/dev/log' + handler = SysLogHandler(address=address) + # No datetime field for logging into syslog, to allow syslog + # to perform reduction of repeating messages if this is set in the + # syslog config. The messages should be equal for this. + handler.setFormatter(Formatter('%(name)s - %(levelname)s - %(message)s')) + log_handlers.append(handler) + elif s[0] == 'journald': + try: + from systemd.journal import JournaldLogHandler + except ImportError: + raise OperationalException("You need the systemd python package be installed in " + "order to use logging to journald.") + handler = JournaldLogHandler() + # No datetime field for logging into journald, to allow syslog + # to perform reduction of repeating messages if this is set in the + # syslog config. The messages should be equal for this. + handler.setFormatter(Formatter('%(name)s - %(levelname)s - %(message)s')) + log_handlers.append(handler) + else: + log_handlers.append(RotatingFileHandler(logfile, + maxBytes=1024 * 1024, # 1Mb + backupCount=10)) logging.basicConfig( level=logging.INFO if verbosity < 1 else logging.DEBUG, From e63377980e7f0aa6f2937753eb6033518a6aaf53 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 25 Oct 2019 07:12:50 +0200 Subject: [PATCH 0795/3421] Improve pairlist documentation --- docs/configuration.md | 5 +++-- tests/test_configuration.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index dd54b6c54..33c296a6a 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -75,8 +75,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `exchange.key` | '' | API key to use for the exchange. Only required when you are in production mode. ***Keep it in secrete, do not disclose publicly.*** | `exchange.secret` | '' | API secret to use for the exchange. Only required when you are in production mode. ***Keep it in secrete, do not disclose publicly.*** | `exchange.password` | '' | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. ***Keep it in secrete, do not disclose publicly.*** -| `exchange.pair_whitelist` | [] | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Can be overriden by dynamic pairlists (see [below](#dynamic-pairlists)). -| `exchange.pair_blacklist` | [] | List of pairs the bot must absolutely avoid for trading and backtesting. Can be overriden by dynamic pairlists (see [below](#dynamic-pairlists)). +| `exchange.pair_whitelist` | [] | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used when using VolumePairList (see [below](#dynamic-pairlists)). +| `exchange.pair_blacklist` | [] | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)). | `exchange.ccxt_config` | None | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) | `exchange.ccxt_async_config` | None | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) | `exchange.markets_refresh_interval` | 60 | The interval in minutes in which markets are reloaded. @@ -418,6 +418,7 @@ section of the configuration. * There is a possibility to filter low-value coins that would not allow setting a stop loss (set `precision_filter` parameter to `true` for this). * `VolumePairList` does not consider `pair_whitelist`, but builds this automatically based the pairlist configuration. + * Pairs in `pair_blacklist` are not considered for VolumePairList, even if all other filters would match. Example: diff --git a/tests/test_configuration.py b/tests/test_configuration.py index cfb7f9a7f..545dd5df4 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -825,7 +825,7 @@ def test_pairlist_resolving(): args = Arguments(arglist).get_parsed_arg() - configuration = Configuration(args) + configuration = Configuration(args, RunMode.OTHER) config = configuration.get_config() assert config['pairs'] == ['ETH/BTC', 'XRP/BTC'] From 2e896462c14b66e226b2a5e4afb054f99c229fbe Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 25 Oct 2019 19:49:23 +0200 Subject: [PATCH 0796/3421] Fix wrong volumepairlist message --- freqtrade/pairlist/VolumePairList.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index b9b7977ab..5f53cd17b 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -54,7 +54,7 @@ class VolumePairList(IPairList): """ # Generate dynamic whitelist self._whitelist = self._gen_pair_whitelist( - self._config['stake_currency'], self._sort_key)[:self._number_pairs] + self._config['stake_currency'], self._sort_key) @cached(TTLCache(maxsize=1, ttl=1800)) def _gen_pair_whitelist(self, base_currency: str, key: str) -> List[str]: @@ -91,6 +91,6 @@ class VolumePairList(IPairList): valid_tickers.remove(t) pairs = [s['symbol'] for s in valid_tickers] - logger.info(f"Searching pairs: {self._whitelist}") + logger.info(f"Searching pairs: {pairs[:self._number_pairs]}") return pairs From 2f1d9696cd1fd7efca1c619dc4a5b861353777f3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 25 Oct 2019 19:59:04 +0200 Subject: [PATCH 0797/3421] Change keepalive to heartbeat --- config_full.json.example | 2 +- docs/configuration.md | 2 +- freqtrade/freqtradebot.py | 25 +++++++++++++------------ tests/test_freqtradebot.py | 12 ++++++------ 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index ebf76eaee..5789e49ac 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -120,7 +120,7 @@ "forcebuy_enable": false, "internals": { "process_throttle_secs": 5, - "keep_alive_interval": 60 + "heartbeat_interval": 60 }, "strategy": "DefaultStrategy", "strategy_path": "user_data/strategies/" diff --git a/docs/configuration.md b/docs/configuration.md index c6a12d865..e3d16c57b 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -98,7 +98,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `strategy` | DefaultStrategy | Defines Strategy class to use. | `strategy_path` | null | Adds an additional strategy lookup path (must be a directory). | `internals.process_throttle_secs` | 5 | **Required.** Set the process throttle. Value in second. -| `internals.keep_alive_interval` | 60 | Print keepalive message every X seconds. Set to 0 to disable keepalive messages. +| `internals.heartbeat_interval` | 60 | Print heartbeat message every X seconds. Set to 0 to disable heartbeat messages. | `internals.sd_notify` | false | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. | `logfile` | | Specify Logfile. Uses a rolling strategy of 10 files, with 1Mb per file. | `user_data_dir` | cwd()/user_data | Directory containing user data. Defaults to `./user_data/`. diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 6c79d04de..9bc4fb04d 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -6,26 +6,27 @@ import logging import traceback from datetime import datetime from math import isclose +from os import getpid from typing import Any, Dict, List, Optional, Tuple import arrow from requests.exceptions import RequestException -from freqtrade import (DependencyException, InvalidOrderException, - __version__, constants, persistence) +from freqtrade import (DependencyException, InvalidOrderException, __version__, + constants, persistence) +from freqtrade.configuration import validate_config_consistency from freqtrade.data.converter import order_book_to_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.edge import Edge -from freqtrade.configuration import validate_config_consistency from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date from freqtrade.persistence import Trade +from freqtrade.resolvers import (ExchangeResolver, PairListResolver, + StrategyResolver) from freqtrade.rpc import RPCManager, RPCMessageType -from freqtrade.resolvers import ExchangeResolver, StrategyResolver, PairListResolver from freqtrade.state import State -from freqtrade.strategy.interface import SellType, IStrategy +from freqtrade.strategy.interface import IStrategy, SellType from freqtrade.wallets import Wallets - logger = logging.getLogger(__name__) @@ -50,9 +51,9 @@ class FreqtradeBot: # Init objects self.config = config - self._last_alive_msg = 0 + self._heartbeat_msg = 0 - self.keep_alive_interval = self.config.get('internals', {}).get('keep_alive_interval', 60) + self.hearbeat_interval = self.config.get('internals', {}).get('heartbeat_interval', 60) self.strategy: IStrategy = StrategyResolver(self.config).strategy @@ -154,10 +155,10 @@ class FreqtradeBot: self.check_handle_timedout() Trade.session.flush() - if (self.keep_alive_interval - and (arrow.utcnow().timestamp - self._last_alive_msg > self.keep_alive_interval)): - logger.info("I am alive.") - self._last_alive_msg = arrow.utcnow().timestamp + if (self.hearbeat_interval + and (arrow.utcnow().timestamp - self._heartbeat_msg > self.hearbeat_interval)): + logger.info(f"Freqtrade heartbeat. PID={getpid()}") + self._heartbeat_msg = arrow.utcnow().timestamp def _extend_whitelist_with_trades(self, whitelist: List[str], trades: List[Any]): """ diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index b29bd0843..cf67e644f 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3656,19 +3656,19 @@ def test_process_i_am_alive(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) ftbot = get_patched_freqtradebot(mocker, default_conf) - message = "I am alive." + message = r"Freqtrade heartbeat. PID=.*" ftbot.process() - assert log_has(message, caplog) - assert ftbot._last_alive_msg != 0 + assert log_has_re(message, caplog) + assert ftbot._heartbeat_msg != 0 caplog.clear() # Message is not shown before interval is up ftbot.process() - assert not log_has(message, caplog) + assert not log_has_re(message, caplog) caplog.clear() # Set clock - 70 seconds - ftbot._last_alive_msg -= 70 + ftbot._heartbeat_msg -= 70 ftbot.process() - assert log_has(message, caplog) + assert log_has_re(message, caplog) From 3929ad4e1f84fe7dca8a676d4236b47565af0468 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 26 Oct 2019 09:21:51 +0200 Subject: [PATCH 0798/3421] Fix typo --- freqtrade/freqtradebot.py | 8 ++++---- tests/test_freqtradebot.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 9bc4fb04d..7251715a7 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -53,7 +53,7 @@ class FreqtradeBot: self._heartbeat_msg = 0 - self.hearbeat_interval = self.config.get('internals', {}).get('heartbeat_interval', 60) + self.heartbeat_interval = self.config.get('internals', {}).get('heartbeat_interval', 60) self.strategy: IStrategy = StrategyResolver(self.config).strategy @@ -155,9 +155,9 @@ class FreqtradeBot: self.check_handle_timedout() Trade.session.flush() - if (self.hearbeat_interval - and (arrow.utcnow().timestamp - self._heartbeat_msg > self.hearbeat_interval)): - logger.info(f"Freqtrade heartbeat. PID={getpid()}") + if (self.heartbeat_interval + and (arrow.utcnow().timestamp - self._heartbeat_msg > self.heartbeat_interval)): + logger.info(f"Bot heartbeat. PID={getpid()}") self._heartbeat_msg = arrow.utcnow().timestamp def _extend_whitelist_with_trades(self, whitelist: List[str], trades: List[Any]): diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index cf67e644f..8aefaba17 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3656,7 +3656,7 @@ def test_process_i_am_alive(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) ftbot = get_patched_freqtradebot(mocker, default_conf) - message = r"Freqtrade heartbeat. PID=.*" + message = r"Bot heartbeat\. PID=.*" ftbot.process() assert log_has_re(message, caplog) assert ftbot._heartbeat_msg != 0 From ea6b94fd0c57ac5000bd744e6602a421029134af Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 26 Oct 2019 11:54:04 +0300 Subject: [PATCH 0799/3421] docs: add a tip for The Ocean exchange --- docs/configuration.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index e3d16c57b..ff40b1750 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -331,7 +331,7 @@ This configuration enables binance, as well as rate limiting to avoid bans from Optimal settings for rate limiting depend on the exchange and the size of the whitelist, so an ideal parameter will vary on many other settings. We try to provide sensible defaults per exchange where possible, if you encounter bans please make sure that `"enableRateLimit"` is enabled and increase the `"rateLimit"` parameter step by step. -#### Advanced FreqTrade Exchange configuration +#### Advanced Freqtrade Exchange configuration Advanced options can be configured using the `_ft_has_params` setting, which will override Defaults and exchange-specific behaviours. @@ -351,6 +351,13 @@ For example, to test the order type `FOK` with Kraken, and modify candle_limit t !!! Warning Please make sure to fully understand the impacts of these settings before modifying them. +#### Random notes for other exchanges + +* The Ocean (ccxt id: 'theocean') exchange uses Web3 functionality and requires web3 package to be installed: +```shell +$ pip3 install web3 +``` + ### What values can be used for fiat_display_currency? The `fiat_display_currency` configuration parameter sets the base currency to use for the From d0521d33cedd079cff559a75571cb4cf2f9eef1d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 26 Oct 2019 09:38:29 +0200 Subject: [PATCH 0800/3421] Refactor whitelist handling fixes #2413 --- freqtrade/freqtradebot.py | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 6a1be16a1..f6f12f7f8 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -72,7 +72,7 @@ class FreqtradeBot: self.edge = Edge(self.config, self.exchange, self.strategy) if \ self.config.get('edge', {}).get('enabled', False) else None - self.active_pair_whitelist: List[str] = self.config['exchange']['pair_whitelist'] + self.active_pair_whitelist = self._refresh_whitelist() persistence.init(self.config.get('db_url', None), clean_open_orders=self.config.get('dry_run', False)) @@ -118,21 +118,10 @@ class FreqtradeBot: # Check whether markets have to be reloaded self.exchange._reload_markets() - # Refresh whitelist - self.pairlists.refresh_pairlist() - self.active_pair_whitelist = self.pairlists.whitelist - - # Calculating Edge positioning - if self.edge: - self.edge.calculate() - self.active_pair_whitelist = self.edge.adjust(self.active_pair_whitelist) - # Query trades from persistence layer trades = Trade.get_open_trades() - # Extend active-pair whitelist with pairs from open trades - # It ensures that tickers are downloaded for open trades - self._extend_whitelist_with_trades(self.active_pair_whitelist, trades) + self.active_pair_whitelist = self._refresh_whitelist(trades) # Refreshing candles self.dataprovider.refresh(self._create_pair_whitelist(self.active_pair_whitelist), @@ -150,11 +139,24 @@ class FreqtradeBot: self.check_handle_timedout() Trade.session.flush() - def _extend_whitelist_with_trades(self, whitelist: List[str], trades: List[Any]): + def _refresh_whitelist(self, trades: List[Trade] = []) -> List[str]: """ - Extend whitelist with pairs from open trades + Refresh whitelist from pairlist or edge and extend it with trades. """ - whitelist.extend([trade.pair for trade in trades if trade.pair not in whitelist]) + # Refresh whitelist + self.pairlists.refresh_pairlist() + _whitelist = self.pairlists.whitelist + + # Calculating Edge positioning + if self.edge: + self.edge.calculate() + _whitelist = self.edge.adjust(_whitelist) + + if trades: + # Extend active-pair whitelist with pairs from open trades + # It ensures that tickers are downloaded for open trades + _whitelist.extend([trade.pair for trade in trades if trade.pair not in _whitelist]) + return _whitelist def _create_pair_whitelist(self, pairs: List[str]) -> List[Tuple[str, str]]: """ From 3a7553eef63aeffb25ea64d9287dcbb387240fd6 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 26 Oct 2019 12:45:05 +0300 Subject: [PATCH 0801/3421] Adjust option helpstring --- freqtrade/configuration/cli_options.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 697e048db..4c6608c08 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -36,7 +36,8 @@ AVAILABLE_CLI_OPTIONS = { ), "logfile": Arg( '--logfile', - help='Log to the file specified.', + help="Log to the file specified. Special values are: 'syslog', 'journald'. " + "See the documentation for more details.", metavar='FILE', ), "version": Arg( From bfec9d974b5108acec273f894cab5f36ef793e39 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 26 Oct 2019 13:08:36 +0300 Subject: [PATCH 0802/3421] docs: Create Advanced Post-installation Tasks section; move systemd stuff there --- docs/advanced-setup.md | 33 +++++++++++++++++++++++++++++++++ docs/installation.md | 30 +++--------------------------- mkdocs.yml | 1 + 3 files changed, 37 insertions(+), 27 deletions(-) create mode 100644 docs/advanced-setup.md diff --git a/docs/advanced-setup.md b/docs/advanced-setup.md new file mode 100644 index 000000000..e6334d2c1 --- /dev/null +++ b/docs/advanced-setup.md @@ -0,0 +1,33 @@ +# Advanced Post-installation Tasks + +This page explains some advanced tasks and configuration options that can be performed after the bot installation and may be uselful in some environments. + +If you do not know what things mentioned here mean, you probably do not need it. + +## Configure the bot running as a systemd service + +Copy the `freqtrade.service` file to your systemd user directory (usually `~/.config/systemd/user`) and update `WorkingDirectory` and `ExecStart` to match your setup. + +After that you can start the daemon with: + +```bash +systemctl --user start freqtrade +``` + +For this to be persistent (run when user is logged out) you'll need to enable `linger` for your freqtrade user. + +```bash +sudo loginctl enable-linger "$USER" +``` + +If you run the bot as a service, you can use systemd service manager as a software watchdog monitoring freqtrade bot +state and restarting it in the case of failures. If the `internals.sd_notify` parameter is set to true in the +configuration or the `--sd-notify` command line option is used, the bot will send keep-alive ping messages to systemd +using the sd_notify (systemd notifications) protocol and will also tell systemd its current state (Running or Stopped) +when it changes. + +The `freqtrade.service.watchdog` file contains an example of the service unit configuration file which uses systemd +as the watchdog. + +!!! Note + The sd_notify communication between the bot and the systemd service manager will not work if the bot runs in a Docker container. diff --git a/docs/installation.md b/docs/installation.md index 68348d4b0..e1e101efd 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -151,7 +151,7 @@ python3 -m venv .env source .env/bin/activate ``` -#### 3. Install FreqTrade +#### 3. Install Freqtrade Clone the git repository: @@ -192,33 +192,9 @@ freqtrade -c config.json *Note*: If you run the bot on a server, you should consider using [Docker](docker.md) or a terminal multiplexer like `screen` or [`tmux`](https://en.wikipedia.org/wiki/Tmux) to avoid that the bot is stopped on logout. -#### 7. [Optional] Configure `freqtrade` as a `systemd` service +#### 7. (Optional) Post-installation Tasks -From the freqtrade repo... copy `freqtrade.service` to your systemd user directory (usually `~/.config/systemd/user`) and update `WorkingDirectory` and `ExecStart` to match your setup. - -After that you can start the daemon with: - -```bash -systemctl --user start freqtrade -``` - -For this to be persistent (run when user is logged out) you'll need to enable `linger` for your freqtrade user. - -```bash -sudo loginctl enable-linger "$USER" -``` - -If you run the bot as a service, you can use systemd service manager as a software watchdog monitoring freqtrade bot -state and restarting it in the case of failures. If the `internals.sd_notify` parameter is set to true in the -configuration or the `--sd-notify` command line option is used, the bot will send keep-alive ping messages to systemd -using the sd_notify (systemd notifications) protocol and will also tell systemd its current state (Running or Stopped) -when it changes. - -The `freqtrade.service.watchdog` file contains an example of the service unit configuration file which uses systemd -as the watchdog. - -!!! Note - The sd_notify communication between the bot and the systemd service manager will not work if the bot runs in a Docker container. +You can also optionally setup the bot to run as a `systemd` service and configure it to send the log messages to the `syslog`/`rsyslog` or `journald` daemons. See [Advanced Post-installation Tasks](advanced-setup.md) for details. ------ diff --git a/mkdocs.yml b/mkdocs.yml index 863731873..2c3f70191 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -22,6 +22,7 @@ nav: - Strategy analysis: strategy_analysis_example.md - Plotting: plotting.md - SQL Cheatsheet: sql_cheatsheet.md + - Advanced Post-installation Tasks: advanced-setup.md - Sandbox Testing: sandbox-testing.md - Deprecated Features: deprecated.md - Contributors Guide: developer.md From f5351e60e7befbc44672f8f33f6d4076bc3dabf2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 26 Oct 2019 10:08:23 +0200 Subject: [PATCH 0803/3421] Adjust markets mock --- tests/conftest.py | 29 ++++++++--- tests/exchange/test_exchange.py | 31 ++++------- tests/pairlist/test_pairlist.py | 16 +++--- tests/rpc/test_rpc.py | 91 +++++++++++---------------------- tests/test_freqtradebot.py | 49 ++++++++---------- 5 files changed, 93 insertions(+), 123 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 305221d6d..84612175d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -55,13 +55,15 @@ def patched_configuration_load_config_file(mocker, config) -> None: ) -def patch_exchange(mocker, api_mock=None, id='bittrex') -> None: +def patch_exchange(mocker, api_mock=None, id='bittrex', mock_markets=True) -> None: mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={})) mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) mocker.patch('freqtrade.exchange.Exchange.validate_ordertypes', MagicMock()) mocker.patch('freqtrade.exchange.Exchange.id', PropertyMock(return_value=id)) mocker.patch('freqtrade.exchange.Exchange.name', PropertyMock(return_value=id.title())) + if mock_markets: + mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=get_markets())) if api_mock: mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) @@ -69,8 +71,8 @@ def patch_exchange(mocker, api_mock=None, id='bittrex') -> None: mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock()) -def get_patched_exchange(mocker, config, api_mock=None, id='bittrex') -> Exchange: - patch_exchange(mocker, api_mock, id) +def get_patched_exchange(mocker, config, api_mock=None, id='bittrex', mock_markets=True) -> Exchange: + patch_exchange(mocker, api_mock, id, mock_markets) config["exchange"]["name"] = id try: exchange = ExchangeResolver(id, config).exchange @@ -85,6 +87,11 @@ def patch_wallet(mocker, free=999.9) -> None: )) +def patch_whitelist(mocker, conf) -> None: + mocker.patch('freqtrade.freqtradebot.FreqtradeBot._refresh_whitelist', + MagicMock(return_value=conf['exchange']['pair_whitelist'])) + + def patch_edge(mocker) -> None: # "ETH/BTC", # "LTC/BTC", @@ -120,6 +127,8 @@ def patch_freqtradebot(mocker, config) -> None: patch_exchange(mocker) mocker.patch('freqtrade.freqtradebot.RPCManager._init', MagicMock()) mocker.patch('freqtrade.freqtradebot.RPCManager.send_msg', MagicMock()) + mocker.patch('freqtrade.freqtradebot.FreqtradeBot._refresh_whitelist', + MagicMock(return_value=config['exchange']['pair_whitelist'])) def get_patched_freqtradebot(mocker, config) -> FreqtradeBot: @@ -287,6 +296,10 @@ def ticker_sell_down(): @pytest.fixture def markets(): + return get_markets() + + +def get_markets(): return { 'ETH/BTC': { 'id': 'ethbtc', @@ -369,7 +382,7 @@ def markets(): 'symbol': 'LTC/BTC', 'base': 'LTC', 'quote': 'BTC', - 'active': False, + 'active': True, 'precision': { 'price': 8, 'amount': 8, @@ -394,7 +407,7 @@ def markets(): 'symbol': 'XRP/BTC', 'base': 'XRP', 'quote': 'BTC', - 'active': False, + 'active': True, 'precision': { 'price': 8, 'amount': 8, @@ -419,7 +432,7 @@ def markets(): 'symbol': 'NEO/BTC', 'base': 'NEO', 'quote': 'BTC', - 'active': False, + 'active': True, 'precision': { 'price': 8, 'amount': 8, @@ -444,7 +457,7 @@ def markets(): 'symbol': 'BTT/BTC', 'base': 'BTT', 'quote': 'BTC', - 'active': True, + 'active': False, 'precision': { 'base': 8, 'quote': 8, @@ -494,7 +507,7 @@ def markets(): 'symbol': 'LTC/USDT', 'base': 'LTC', 'quote': 'USDT', - 'active': True, + 'active': False, 'precision': { 'amount': 8, 'price': 8 diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 1e0a5fdc3..d3f50c6da 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -177,16 +177,11 @@ def test_symbol_amount_prec(default_conf, mocker): ''' Test rounds down to 4 Decimal places ''' - api_mock = MagicMock() - api_mock.load_markets = MagicMock(return_value={ - 'ETH/BTC': '', 'LTC/BTC': '', 'XRP/BTC': '', 'NEO/BTC': '' - }) - mocker.patch('freqtrade.exchange.Exchange.name', PropertyMock(return_value='binance')) markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'amount': 4}}}) - type(api_mock).markets = markets - exchange = get_patched_exchange(mocker, default_conf, api_mock) + exchange = get_patched_exchange(mocker, default_conf, id="binance") + mocker.patch('freqtrade.exchange.Exchange.markets', markets) amount = 2.34559 pair = 'ETH/BTC' @@ -198,16 +193,10 @@ def test_symbol_price_prec(default_conf, mocker): ''' Test rounds up to 4 decimal places ''' - api_mock = MagicMock() - api_mock.load_markets = MagicMock(return_value={ - 'ETH/BTC': '', 'LTC/BTC': '', 'XRP/BTC': '', 'NEO/BTC': '' - }) - mocker.patch('freqtrade.exchange.Exchange.name', PropertyMock(return_value='binance')) - markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'price': 4}}}) - type(api_mock).markets = markets - exchange = get_patched_exchange(mocker, default_conf, api_mock) + exchange = get_patched_exchange(mocker, default_conf, id="binance") + mocker.patch('freqtrade.exchange.Exchange.markets', markets) price = 2.34559 pair = 'ETH/BTC' @@ -279,7 +268,7 @@ def test__load_markets(default_conf, mocker, caplog): api_mock.load_markets = MagicMock(return_value=expected_return) type(api_mock).markets = expected_return default_conf['exchange']['pair_whitelist'] = ['ETH/BTC'] - ex = get_patched_exchange(mocker, default_conf, api_mock, id="binance") + ex = get_patched_exchange(mocker, default_conf, api_mock, id="binance", mock_markets=False) assert ex.markets == expected_return @@ -294,7 +283,8 @@ def test__reload_markets(default_conf, mocker, caplog): api_mock.load_markets = load_markets type(api_mock).markets = initial_markets default_conf['exchange']['markets_refresh_interval'] = 10 - exchange = get_patched_exchange(mocker, default_conf, api_mock, id="binance") + exchange = get_patched_exchange(mocker, default_conf, api_mock, id="binance", + mock_markets=False) exchange._last_markets_refresh = arrow.utcnow().timestamp updated_markets = {'ETH/BTC': {}, "LTC/BTC": {}} @@ -1715,15 +1705,16 @@ def test_get_valid_pair_combination(default_conf, mocker, markets): 'LTC/USDT', 'NEO/BTC', 'TKN/BTC', 'XLTCUSDT', 'XRP/BTC']), # active markets ([], [], False, True, - ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/USD', 'LTC/USDT', - 'TKN/BTC', 'XLTCUSDT']), + ['BLK/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'NEO/BTC', + 'TKN/BTC', 'XLTCUSDT', 'XRP/BTC']), # all pairs ([], [], True, False, ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'LTC/USDT', 'NEO/BTC', 'TKN/BTC', 'XRP/BTC']), # active pairs ([], [], True, True, - ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/USD', 'LTC/USDT', 'TKN/BTC']), + ['BLK/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'NEO/BTC', + 'TKN/BTC', 'XRP/BTC']), # all markets, base=ETH, LTC (['ETH', 'LTC'], [], False, False, ['ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 411ae60a3..929fc0ba0 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -80,7 +80,7 @@ def test_refresh_pairlist_dynamic(mocker, markets, tickers, whitelist_conf): freqtradebot = get_patched_freqtradebot(mocker, whitelist_conf) # argument: use the whitelist dynamically by exchange-volume - whitelist = ['ETH/BTC', 'TKN/BTC', 'BTT/BTC'] + whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC'] freqtradebot.pairlists.refresh_pairlist() assert whitelist == freqtradebot.pairlists.whitelist @@ -108,12 +108,12 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): @pytest.mark.parametrize("precision_filter,base_currency,key,whitelist_result", [ - (False, "BTC", "quoteVolume", ['ETH/BTC', 'TKN/BTC', 'BTT/BTC']), - (False, "BTC", "bidVolume", ['BTT/BTC', 'TKN/BTC', 'ETH/BTC']), - (False, "USDT", "quoteVolume", ['ETH/USDT', 'LTC/USDT']), + (False, "BTC", "quoteVolume", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC']), + (False, "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC']), + (False, "USDT", "quoteVolume", ['ETH/USDT']), (False, "ETH", "quoteVolume", []), # this replaces tests that were removed from test_exchange - (True, "BTC", "quoteVolume", ["ETH/BTC", "TKN/BTC"]), - (True, "BTC", "bidVolume", ["TKN/BTC", "ETH/BTC"]) + (True, "BTC", "quoteVolume", ["LTC/BTC", "ETH/BTC", "TKN/BTC"]), + (True, "BTC", "bidVolume", ["LTC/BTC", "TKN/BTC", "ETH/BTC"]) ]) def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, markets, tickers, base_currency, key, whitelist_result, precision_filter) -> None: @@ -127,7 +127,7 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, markets, tickers, freqtrade.pairlists._precision_filter = precision_filter freqtrade.config['stake_currency'] = base_currency whitelist = freqtrade.pairlists._gen_pair_whitelist(base_currency=base_currency, key=key) - assert whitelist == whitelist_result + assert sorted(whitelist) == sorted(whitelist_result) def test_gen_pair_whitelist_not_supported(mocker, default_conf, tickers) -> None: @@ -160,7 +160,7 @@ def test_pairlist_class(mocker, whitelist_conf, markets, pairlist): (['ETH/BTC', 'TKN/BTC', 'TRX/ETH'], "is not compatible with exchange"), # TRX/ETH wrong stake (['ETH/BTC', 'TKN/BTC', 'BCH/BTC'], "is not compatible with exchange"), # BCH/BTC not available (['ETH/BTC', 'TKN/BTC', 'BLK/BTC'], "is not compatible with exchange"), # BLK/BTC in blacklist - (['ETH/BTC', 'TKN/BTC', 'LTC/BTC'], "Market is not active") # LTC/BTC is inactive + (['ETH/BTC', 'TKN/BTC', 'BTT/BTC'], "Market is not active") # BTT/BTC is inactive ]) def test_validate_whitelist(mocker, whitelist_conf, markets, pairlist, whitelist, caplog, log_message): diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 66468927f..a5da9b51e 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -14,7 +14,7 @@ from freqtrade.persistence import Trade from freqtrade.rpc import RPC, RPCException from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.state import State -from tests.conftest import patch_exchange, patch_get_signal +from tests.conftest import patch_exchange, patch_get_signal, get_patched_freqtradebot # Functions for recurrent object patching @@ -26,17 +26,15 @@ def prec_satoshi(a, b) -> float: # Unit tests -def test_rpc_trade_status(default_conf, ticker, fee, markets, mocker) -> None: +def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) - patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets) ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) @@ -98,17 +96,15 @@ def test_rpc_trade_status(default_conf, ticker, fee, markets, mocker) -> None: } == results[0] -def test_rpc_status_table(default_conf, ticker, fee, markets, mocker) -> None: - patch_exchange(mocker) +def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets) ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) @@ -134,7 +130,6 @@ def test_rpc_status_table(default_conf, ticker, fee, markets, mocker) -> None: def test_rpc_daily_profit(default_conf, update, ticker, fee, limit_buy_order, limit_sell_order, markets, mocker) -> None: - patch_exchange(mocker) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -143,7 +138,7 @@ def test_rpc_daily_profit(default_conf, update, ticker, fee, markets=PropertyMock(return_value=markets) ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) stake_currency = default_conf['stake_currency'] fiat_display_currency = default_conf['fiat_display_currency'] @@ -181,22 +176,20 @@ def test_rpc_daily_profit(default_conf, update, ticker, fee, def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, - limit_buy_order, limit_sell_order, markets, mocker) -> None: + limit_buy_order, limit_sell_order, mocker) -> None: mocker.patch.multiple( 'freqtrade.rpc.fiat_convert.Market', ticker=MagicMock(return_value={'price_usd': 15000.0}), ) - patch_exchange(mocker) mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets) ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) stake_currency = default_conf['stake_currency'] fiat_display_currency = default_conf['fiat_display_currency'] @@ -267,9 +260,8 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, # Test that rpc_trade_statistics can handle trades that lacks # trade.open_rate (it is set to None) -def test_rpc_trade_statistics_closed(mocker, default_conf, ticker, fee, markets, +def test_rpc_trade_statistics_closed(mocker, default_conf, ticker, fee, ticker_sell_up, limit_buy_order, limit_sell_order): - patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.rpc.fiat_convert.Market', ticker=MagicMock(return_value={'price_usd': 15000.0}), @@ -281,10 +273,9 @@ def test_rpc_trade_statistics_closed(mocker, default_conf, ticker, fee, markets, 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets) ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) stake_currency = default_conf['stake_currency'] fiat_display_currency = default_conf['fiat_display_currency'] @@ -343,7 +334,6 @@ def test_rpc_balance_handle_error(default_conf, mocker): 'freqtrade.rpc.fiat_convert.Market', ticker=MagicMock(return_value={'price_usd': 15000.0}), ) - patch_exchange(mocker) mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( @@ -352,7 +342,7 @@ def test_rpc_balance_handle_error(default_conf, mocker): get_ticker=MagicMock(side_effect=TemporaryError('Could not load ticker due to xxx')) ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) rpc._fiat_converter = CryptoToFiatConverter() @@ -394,7 +384,6 @@ def test_rpc_balance_handle(default_conf, mocker): 'freqtrade.rpc.fiat_convert.Market', ticker=MagicMock(return_value={'price_usd': 15000.0}), ) - patch_exchange(mocker) mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( @@ -406,7 +395,7 @@ def test_rpc_balance_handle(default_conf, mocker): side_effect=lambda a, b: f"{b}/{a}" if a == "PAX" else f"{a}/{b}") ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) rpc._fiat_converter = CryptoToFiatConverter() @@ -438,14 +427,13 @@ def test_rpc_balance_handle(default_conf, mocker): def test_rpc_start(mocker, default_conf) -> None: - patch_exchange(mocker) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=MagicMock() ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) freqtradebot.state = State.STOPPED @@ -460,14 +448,13 @@ def test_rpc_start(mocker, default_conf) -> None: def test_rpc_stop(mocker, default_conf) -> None: - patch_exchange(mocker) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=MagicMock() ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) freqtradebot.state = State.RUNNING @@ -483,14 +470,13 @@ def test_rpc_stop(mocker, default_conf) -> None: def test_rpc_stopbuy(mocker, default_conf) -> None: - patch_exchange(mocker) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=MagicMock() ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) freqtradebot.state = State.RUNNING @@ -501,8 +487,7 @@ def test_rpc_stopbuy(mocker, default_conf) -> None: assert freqtradebot.config['max_open_trades'] == 0 -def test_rpc_forcesell(default_conf, ticker, fee, mocker, markets) -> None: - patch_exchange(mocker) +def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) cancel_order_mock = MagicMock() @@ -518,10 +503,9 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker, markets) -> None: } ), get_fee=fee, - markets=PropertyMock(return_value=markets) ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) @@ -606,18 +590,16 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker, markets) -> None: def test_performance_handle(default_conf, ticker, limit_buy_order, fee, - limit_sell_order, markets, mocker) -> None: - patch_exchange(mocker) + limit_sell_order, mocker) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=ticker), get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets) ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) @@ -641,18 +623,16 @@ def test_performance_handle(default_conf, ticker, limit_buy_order, fee, assert prec_satoshi(res[0]['profit'], 6.2) -def test_rpc_count(mocker, default_conf, ticker, fee, markets) -> None: - patch_exchange(mocker) +def test_rpc_count(mocker, default_conf, ticker, fee) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=ticker), get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets) ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) @@ -665,9 +645,8 @@ def test_rpc_count(mocker, default_conf, ticker, fee, markets) -> None: assert counts["current"] == 1 -def test_rpcforcebuy(mocker, default_conf, ticker, fee, markets, limit_buy_order) -> None: +def test_rpcforcebuy(mocker, default_conf, ticker, fee, limit_buy_order) -> None: default_conf['forcebuy_enable'] = True - patch_exchange(mocker) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) buy_mm = MagicMock(return_value={'id': limit_buy_order['id']}) mocker.patch.multiple( @@ -675,11 +654,10 @@ def test_rpcforcebuy(mocker, default_conf, ticker, fee, markets, limit_buy_order get_balances=MagicMock(return_value=ticker), get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets), buy=buy_mm ) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) pair = 'ETH/BTC' @@ -704,7 +682,7 @@ def test_rpcforcebuy(mocker, default_conf, ticker, fee, markets, limit_buy_order # Test not buying default_conf['stake_amount'] = 0.0000001 - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) pair = 'TKN/BTC' @@ -715,10 +693,9 @@ def test_rpcforcebuy(mocker, default_conf, ticker, fee, markets, limit_buy_order def test_rpcforcebuy_stopped(mocker, default_conf) -> None: default_conf['forcebuy_enable'] = True default_conf['initial_state'] = 'stopped' - patch_exchange(mocker) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) pair = 'ETH/BTC' @@ -727,10 +704,9 @@ def test_rpcforcebuy_stopped(mocker, default_conf) -> None: def test_rpcforcebuy_disabled(mocker, default_conf) -> None: - patch_exchange(mocker) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) pair = 'ETH/BTC' @@ -739,10 +715,9 @@ def test_rpcforcebuy_disabled(mocker, default_conf) -> None: def test_rpc_whitelist(mocker, default_conf) -> None: - patch_exchange(mocker) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) rpc = RPC(freqtradebot) ret = rpc._rpc_whitelist() assert ret['method'] == 'StaticPairList' @@ -750,14 +725,13 @@ def test_rpc_whitelist(mocker, default_conf) -> None: def test_rpc_whitelist_dynamic(mocker, default_conf) -> None: - patch_exchange(mocker) default_conf['pairlist'] = {'method': 'VolumePairList', 'config': {'number_assets': 4} } mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) rpc = RPC(freqtradebot) ret = rpc._rpc_whitelist() assert ret['method'] == 'VolumePairList' @@ -766,10 +740,9 @@ def test_rpc_whitelist_dynamic(mocker, default_conf) -> None: def test_rpc_blacklist(mocker, default_conf) -> None: - patch_exchange(mocker) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) rpc = RPC(freqtradebot) ret = rpc._rpc_blacklist(None) assert ret['method'] == 'StaticPairList' @@ -785,23 +758,21 @@ def test_rpc_blacklist(mocker, default_conf) -> None: def test_rpc_edge_disabled(mocker, default_conf) -> None: - patch_exchange(mocker) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) rpc = RPC(freqtradebot) with pytest.raises(RPCException, match=r'Edge is not enabled.'): rpc._rpc_edge() def test_rpc_edge_enabled(mocker, edge_conf) -> None: - patch_exchange(mocker) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch('freqtrade.edge.Edge._cached_pairs', mocker.PropertyMock( return_value={ 'E/F': PairInfo(-0.02, 0.66, 3.71, 0.50, 1.71, 10, 60), } )) - freqtradebot = FreqtradeBot(edge_conf) + freqtradebot = get_patched_freqtradebot(mocker, edge_conf) rpc = RPC(freqtradebot) ret = rpc._rpc_edge() diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index f1533d867..ff9a34142 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -23,7 +23,7 @@ from freqtrade.strategy.interface import SellCheckTuple, SellType from freqtrade.worker import Worker from tests.conftest import (get_patched_freqtradebot, get_patched_worker, log_has, log_has_re, patch_edge, patch_exchange, - patch_get_signal, patch_wallet) + patch_get_signal, patch_wallet, patch_whitelist) def patch_RPCManager(mocker) -> MagicMock: @@ -1247,11 +1247,10 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, - markets, limit_buy_order, limit_sell_order) -> None: + limit_buy_order, limit_sell_order) -> None: # When trailing stoploss is set stoploss_limit = MagicMock(return_value={'id': 13434334}) patch_RPCManager(mocker) - patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=MagicMock(return_value={ @@ -1262,7 +1261,6 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets), stoploss_limit=stoploss_limit ) @@ -1272,7 +1270,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, # disabling ROI default_conf['minimal_roi']['0'] = 999999999 - freqtrade = FreqtradeBot(default_conf) + freqtrade = get_patched_freqtradebot(mocker, default_conf) # enabling stoploss on exchange freqtrade.strategy.order_types['stoploss_on_exchange'] = True @@ -1824,20 +1822,18 @@ def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order, def test_handle_trade_roi(default_conf, ticker, limit_buy_order, - fee, mocker, markets, caplog) -> None: + fee, mocker, caplog) -> None: caplog.set_level(logging.DEBUG) patch_RPCManager(mocker) - patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) - freqtrade = FreqtradeBot(default_conf) + freqtrade = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtrade, value=(True, False)) freqtrade.strategy.min_roi_reached = MagicMock(return_value=True) @@ -1858,20 +1854,18 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order, def test_handle_trade_use_sell_signal( - default_conf, ticker, limit_buy_order, fee, mocker, markets, caplog) -> None: + default_conf, ticker, limit_buy_order, fee, mocker, caplog) -> None: # use_sell_signal is True buy default caplog.set_level(logging.DEBUG) patch_RPCManager(mocker) - patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) - freqtrade = FreqtradeBot(default_conf) + freqtrade = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) freqtrade.create_trades() @@ -2236,6 +2230,7 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, markets, moc get_fee=fee, markets=PropertyMock(return_value=markets) ) + patch_whitelist(mocker, default_conf) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -2282,6 +2277,7 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, markets, get_fee=fee, markets=PropertyMock(return_value=markets) ) + patch_whitelist(mocker, default_conf) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -2331,6 +2327,7 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe get_fee=fee, markets=PropertyMock(return_value=markets) ) + patch_whitelist(mocker, default_conf) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -2647,6 +2644,7 @@ def test_execute_sell_market_order(default_conf, ticker, fee, get_fee=fee, markets=PropertyMock(return_value=markets) ) + patch_whitelist(mocker, default_conf) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -2814,14 +2812,13 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, marke assert trade.sell_reason == SellType.SELL_SIGNAL.value -def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, markets, mocker, caplog) -> None: +def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets) ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -2851,7 +2848,7 @@ def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, markets, mock assert log_has(f"Pair {trade.pair} is currently locked.", caplog) -def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, markets, mocker) -> None: +def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -2863,7 +2860,6 @@ def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, markets, m }), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) default_conf['ask_strategy'] = { 'ignore_roi_if_buy_signal': True @@ -2885,7 +2881,7 @@ def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, markets, m assert trade.sell_reason == SellType.ROI.value -def test_trailing_stop_loss(default_conf, limit_buy_order, fee, markets, caplog, mocker) -> None: +def test_trailing_stop_loss(default_conf, limit_buy_order, fee, caplog, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -2897,9 +2893,9 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, markets, caplog, }), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets), ) default_conf['trailing_stop'] = True + patch_whitelist(mocker, default_conf) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) @@ -2937,7 +2933,7 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, markets, caplog, assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value -def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, markets, +def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, caplog, mocker) -> None: buy_price = limit_buy_order['price'] patch_RPCManager(mocker) @@ -2951,10 +2947,11 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, markets }), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets), ) default_conf['trailing_stop'] = True default_conf['trailing_stop_positive'] = 0.01 + patch_whitelist(mocker, default_conf) + freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) @@ -2994,7 +2991,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, markets def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, - caplog, mocker, markets) -> None: + caplog, mocker) -> None: buy_price = limit_buy_order['price'] patch_RPCManager(mocker) patch_exchange(mocker) @@ -3007,9 +3004,8 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, }), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets), ) - + patch_whitelist(mocker, default_conf) default_conf['trailing_stop'] = True default_conf['trailing_stop_positive'] = 0.01 default_conf['trailing_stop_positive_offset'] = 0.011 @@ -3054,7 +3050,7 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, - caplog, mocker, markets) -> None: + caplog, mocker) -> None: buy_price = limit_buy_order['price'] # buy_price: 0.00001099 @@ -3069,9 +3065,8 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, }), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets), ) - + patch_whitelist(mocker, default_conf) default_conf['trailing_stop'] = True default_conf['trailing_stop_positive'] = 0.05 default_conf['trailing_stop_positive_offset'] = 0.055 From ef1885c38bd9ab89df7418f6b8110e86e81f6398 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 26 Oct 2019 13:24:26 +0200 Subject: [PATCH 0804/3421] Fix more tests --- tests/data/test_history.py | 11 ++--- tests/rpc/test_rpc_telegram.py | 73 ++++++++++++---------------------- tests/test_utils.py | 42 +++++++++---------- 3 files changed, 53 insertions(+), 73 deletions(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 95382768a..48ef2affd 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -533,21 +533,22 @@ def test_refresh_backtest_ohlcv_data(mocker, default_conf, markets, caplog, test def test_download_data_no_markets(mocker, default_conf, caplog, testdatadir): dl_mock = mocker.patch('freqtrade.data.history.download_pair_history', MagicMock()) + + ex = get_patched_exchange(mocker, default_conf) mocker.patch( 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value={}) ) - ex = get_patched_exchange(mocker, default_conf) timerange = TimeRange.parse_timerange("20190101-20190102") - unav_pairs = refresh_backtest_ohlcv_data(exchange=ex, pairs=["ETH/BTC", "XRP/BTC"], + unav_pairs = refresh_backtest_ohlcv_data(exchange=ex, pairs=["BTT/BTC", "LTC/USDT"], timeframes=["1m", "5m"], dl_path=testdatadir, timerange=timerange, erase=False ) assert dl_mock.call_count == 0 - assert "ETH/BTC" in unav_pairs - assert "XRP/BTC" in unav_pairs - assert log_has("Skipping pair ETH/BTC...", caplog) + assert "BTT/BTC" in unav_pairs + assert "LTC/USDT" in unav_pairs + assert log_has("Skipping pair BTT/BTC...", caplog) def test_refresh_backtest_trades_data(mocker, default_conf, markets, caplog, testdatadir): diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index a776ad5df..766511d2d 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -22,7 +22,7 @@ from freqtrade.rpc.telegram import Telegram, authorized_only from freqtrade.state import State from freqtrade.strategy.interface import SellType from tests.conftest import (get_patched_freqtradebot, log_has, patch_exchange, - patch_get_signal) + patch_get_signal, patch_whitelist) class DummyCls(Telegram): @@ -143,17 +143,15 @@ def test_authorized_only_exception(default_conf, mocker, caplog) -> None: assert log_has('Exception occurred within Telegram module', caplog) -def test_status(default_conf, update, mocker, fee, ticker, markets) -> None: +def test_status(default_conf, update, mocker, fee, ticker,) -> None: update.message.chat.id = 123 default_conf['telegram']['enabled'] = False default_conf['telegram']['chat_id'] = 123 - patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(markets) ) msg_mock = MagicMock() status_table = MagicMock() @@ -184,9 +182,8 @@ def test_status(default_conf, update, mocker, fee, ticker, markets) -> None: _status_table=status_table, _send_msg=msg_mock ) - mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) @@ -204,13 +201,11 @@ def test_status(default_conf, update, mocker, fee, ticker, markets) -> None: assert status_table.call_count == 1 -def test_status_handle(default_conf, update, ticker, fee, markets, mocker) -> None: - patch_exchange(mocker) +def test_status_handle(default_conf, update, ticker, fee, mocker) -> None: mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(markets) ) msg_mock = MagicMock() status_table = MagicMock() @@ -220,9 +215,9 @@ def test_status_handle(default_conf, update, ticker, fee, markets, mocker) -> No _status_table=status_table, _send_msg=msg_mock ) - mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) + patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) @@ -256,14 +251,12 @@ def test_status_handle(default_conf, update, ticker, fee, markets, mocker) -> No assert 'ETH/BTC' in msg_mock.call_args_list[0][0][0] -def test_status_table_handle(default_conf, update, ticker, fee, markets, mocker) -> None: - patch_exchange(mocker) +def test_status_table_handle(default_conf, update, ticker, fee, mocker) -> None: mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, buy=MagicMock(return_value={'id': 'mocked_order_id'}), get_fee=fee, - markets=PropertyMock(markets) ) msg_mock = MagicMock() mocker.patch.multiple( @@ -271,10 +264,9 @@ def test_status_table_handle(default_conf, update, ticker, fee, markets, mocker) _init=MagicMock(), _send_msg=msg_mock ) - mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) default_conf['stake_amount'] = 15.0 - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) @@ -307,8 +299,7 @@ def test_status_table_handle(default_conf, update, ticker, fee, markets, mocker) def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, - limit_sell_order, markets, mocker) -> None: - patch_exchange(mocker) + limit_sell_order, mocker) -> None: default_conf['max_open_trades'] = 1 mocker.patch( 'freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', @@ -318,7 +309,6 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(markets) ) msg_mock = MagicMock() mocker.patch.multiple( @@ -326,9 +316,8 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, _init=MagicMock(), _send_msg=msg_mock ) - mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) @@ -382,7 +371,6 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, def test_daily_wrong_input(default_conf, update, ticker, mocker) -> None: - patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker @@ -393,9 +381,8 @@ def test_daily_wrong_input(default_conf, update, ticker, mocker) -> None: _init=MagicMock(), _send_msg=msg_mock ) - mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) @@ -420,14 +407,12 @@ def test_daily_wrong_input(default_conf, update, ticker, mocker) -> None: def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, - limit_buy_order, limit_sell_order, markets, mocker) -> None: - patch_exchange(mocker) + limit_buy_order, limit_sell_order, mocker) -> None: mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(markets) ) msg_mock = MagicMock() mocker.patch.multiple( @@ -435,9 +420,8 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, _init=MagicMock(), _send_msg=msg_mock ) - mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) @@ -724,16 +708,16 @@ def test_reload_conf_handle(default_conf, update, mocker) -> None: def test_forcesell_handle(default_conf, update, ticker, fee, - ticker_sell_up, markets, mocker) -> None: + ticker_sell_up, mocker) -> None: mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) rpc_mock = mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg', MagicMock()) mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock()) patch_exchange(mocker) + patch_whitelist(mocker, default_conf) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets), ) freqtradebot = FreqtradeBot(default_conf) @@ -775,17 +759,18 @@ def test_forcesell_handle(default_conf, update, ticker, fee, def test_forcesell_down_handle(default_conf, update, ticker, fee, - ticker_sell_down, markets, mocker) -> None: + ticker_sell_down, mocker) -> None: mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter._find_price', return_value=15000.0) rpc_mock = mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg', MagicMock()) mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock()) patch_exchange(mocker) + patch_whitelist(mocker, default_conf) + mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets), ) freqtradebot = FreqtradeBot(default_conf) @@ -830,17 +815,17 @@ def test_forcesell_down_handle(default_conf, update, ticker, fee, } == last_msg -def test_forcesell_all_handle(default_conf, update, ticker, fee, markets, mocker) -> None: +def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None: patch_exchange(mocker) mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter._find_price', return_value=15000.0) rpc_mock = mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg', MagicMock()) mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock()) + patch_whitelist(mocker, default_conf) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets), ) default_conf['max_open_trades'] = 4 freqtradebot = FreqtradeBot(default_conf) @@ -885,9 +870,8 @@ def test_forcesell_handle_invalid(default_conf, update, mocker) -> None: _init=MagicMock(), _send_msg=msg_mock ) - patch_exchange(mocker) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) @@ -980,8 +964,7 @@ def test_forcebuy_handle_exception(default_conf, update, markets, mocker) -> Non def test_performance_handle(default_conf, update, ticker, fee, - limit_buy_order, limit_sell_order, markets, mocker) -> None: - patch_exchange(mocker) + limit_buy_order, limit_sell_order, mocker) -> None: msg_mock = MagicMock() mocker.patch.multiple( 'freqtrade.rpc.telegram.Telegram', @@ -992,10 +975,8 @@ def test_performance_handle(default_conf, update, ticker, fee, 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(markets), ) - mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) @@ -1018,8 +999,7 @@ def test_performance_handle(default_conf, update, ticker, fee, assert 'ETH/BTC\t6.20% (1)' in msg_mock.call_args_list[0][0][0] -def test_count_handle(default_conf, update, ticker, fee, markets, mocker) -> None: - patch_exchange(mocker) +def test_count_handle(default_conf, update, ticker, fee, mocker) -> None: msg_mock = MagicMock() mocker.patch.multiple( 'freqtrade.rpc.telegram.Telegram', @@ -1030,10 +1010,9 @@ def test_count_handle(default_conf, update, ticker, fee, markets, mocker) -> Non 'freqtrade.exchange.Exchange', get_ticker=ticker, buy=MagicMock(return_value={'id': 'mocked_order_id'}), - markets=PropertyMock(markets) + get_fee=fee, ) - mocker.patch('freqtrade.exchange.Exchange.get_fee', fee) - freqtradebot = FreqtradeBot(default_conf) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) diff --git a/tests/test_utils.py b/tests/test_utils.py index f64a6924a..0833375c8 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -188,8 +188,8 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ("Exchange Bittrex has 8 active markets: " - "BLK/BTC, BTT/BTC, ETH/BTC, ETH/USDT, LTC/USD, LTC/USDT, TKN/BTC, XLTCUSDT.\n" + assert ("Exchange Bittrex has 9 active markets: " + "BLK/BTC, ETH/BTC, ETH/USDT, LTC/BTC, LTC/USD, NEO/BTC, TKN/BTC, XLTCUSDT, XRP/BTC.\n" in captured.out) patch_exchange(mocker, api_mock=api_mock, id="binance") @@ -202,7 +202,7 @@ def test_list_markets(mocker, markets, capsys): pargs['config'] = None start_list_markets(pargs, False) captured = capsys.readouterr() - assert re.match("\nExchange Binance has 8 active markets:\n", + assert re.match("\nExchange Binance has 9 active markets:\n", captured.out) patch_exchange(mocker, api_mock=api_mock, id="bittrex") @@ -227,8 +227,8 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), True) captured = capsys.readouterr() - assert ("Exchange Bittrex has 7 active pairs: " - "BLK/BTC, BTT/BTC, ETH/BTC, ETH/USDT, LTC/USD, LTC/USDT, TKN/BTC.\n" + assert ("Exchange Bittrex has 8 active pairs: " + "BLK/BTC, ETH/BTC, ETH/USDT, LTC/BTC, LTC/USD, NEO/BTC, TKN/BTC, XRP/BTC.\n" in captured.out) # Test list-pairs subcommand with --all: all pairs @@ -254,7 +254,7 @@ def test_list_markets(mocker, markets, capsys): start_list_markets(get_args(args), False) captured = capsys.readouterr() assert ("Exchange Bittrex has 5 active markets with ETH, LTC as base currencies: " - "ETH/BTC, ETH/USDT, LTC/USD, LTC/USDT, XLTCUSDT.\n" + "ETH/BTC, ETH/USDT, LTC/BTC, LTC/USD, XLTCUSDT.\n" in captured.out) # active markets, base=LTC @@ -267,7 +267,7 @@ def test_list_markets(mocker, markets, capsys): start_list_markets(get_args(args), False) captured = capsys.readouterr() assert ("Exchange Bittrex has 3 active markets with LTC as base currency: " - "LTC/USD, LTC/USDT, XLTCUSDT.\n" + "LTC/BTC, LTC/USD, XLTCUSDT.\n" in captured.out) # active markets, quote=USDT, USD @@ -279,8 +279,8 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ("Exchange Bittrex has 4 active markets with USDT, USD as quote currencies: " - "ETH/USDT, LTC/USD, LTC/USDT, XLTCUSDT.\n" + assert ("Exchange Bittrex has 3 active markets with USDT, USD as quote currencies: " + "ETH/USDT, LTC/USD, XLTCUSDT.\n" in captured.out) # active markets, quote=USDT @@ -292,8 +292,8 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ("Exchange Bittrex has 3 active markets with USDT as quote currency: " - "ETH/USDT, LTC/USDT, XLTCUSDT.\n" + assert ("Exchange Bittrex has 2 active markets with USDT as quote currency: " + "ETH/USDT, XLTCUSDT.\n" in captured.out) # active markets, base=LTC, quote=USDT @@ -305,21 +305,21 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ("Exchange Bittrex has 2 active markets with LTC as base currency and " - "with USDT as quote currency: LTC/USDT, XLTCUSDT.\n" + assert ("Exchange Bittrex has 1 active market with LTC as base currency and " + "with USDT as quote currency: XLTCUSDT.\n" in captured.out) # active pairs, base=LTC, quote=USDT args = [ '--config', 'config.json.example', "list-pairs", - "--base", "LTC", "--quote", "USDT", + "--base", "LTC", "--quote", "USD", "--print-list", ] start_list_markets(get_args(args), True) captured = capsys.readouterr() assert ("Exchange Bittrex has 1 active pair with LTC as base currency and " - "with USDT as quote currency: LTC/USDT.\n" + "with USD as quote currency: LTC/USD.\n" in captured.out) # active markets, base=LTC, quote=USDT, NONEXISTENT @@ -331,8 +331,8 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ("Exchange Bittrex has 2 active markets with LTC as base currency and " - "with USDT, NONEXISTENT as quote currencies: LTC/USDT, XLTCUSDT.\n" + assert ("Exchange Bittrex has 1 active market with LTC as base currency and " + "with USDT, NONEXISTENT as quote currencies: XLTCUSDT.\n" in captured.out) # active markets, base=LTC, quote=NONEXISTENT @@ -355,7 +355,7 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ("Exchange Bittrex has 8 active markets:\n" + assert ("Exchange Bittrex has 9 active markets:\n" in captured.out) # Test tabular output, no markets found @@ -378,7 +378,7 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ('["BLK/BTC","BTT/BTC","ETH/BTC","ETH/USDT","LTC/USD","LTC/USDT","TKN/BTC","XLTCUSDT"]' + assert ('["BLK/BTC","ETH/BTC","ETH/USDT","LTC/BTC","LTC/USD","NEO/BTC","TKN/BTC","XLTCUSDT","XRP/BTC"]' in captured.out) # Test --print-csv @@ -391,7 +391,7 @@ def test_list_markets(mocker, markets, capsys): captured = capsys.readouterr() assert ("Id,Symbol,Base,Quote,Active,Is pair" in captured.out) assert ("blkbtc,BLK/BTC,BLK,BTC,True,True" in captured.out) - assert ("BTTBTC,BTT/BTC,BTT,BTC,True,True" in captured.out) + assert ("USD-LTC,LTC/USD,LTC,USD,True,True" in captured.out) # Test --one-column args = [ @@ -402,7 +402,7 @@ def test_list_markets(mocker, markets, capsys): start_list_markets(get_args(args), False) captured = capsys.readouterr() assert re.search(r"^BLK/BTC$", captured.out, re.MULTILINE) - assert re.search(r"^BTT/BTC$", captured.out, re.MULTILINE) + assert re.search(r"^LTC/USD$", captured.out, re.MULTILINE) def test_create_datadir_failed(caplog): From 32df73c056763d1305f80dc37ba5edcaf55d0faa Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 26 Oct 2019 13:28:04 +0200 Subject: [PATCH 0805/3421] flake --- tests/conftest.py | 6 ++++-- tests/rpc/test_rpc.py | 3 +-- tests/test_freqtradebot.py | 2 +- tests/test_utils.py | 3 ++- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 84612175d..0d0511751 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -63,7 +63,8 @@ def patch_exchange(mocker, api_mock=None, id='bittrex', mock_markets=True) -> No mocker.patch('freqtrade.exchange.Exchange.id', PropertyMock(return_value=id)) mocker.patch('freqtrade.exchange.Exchange.name', PropertyMock(return_value=id.title())) if mock_markets: - mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=get_markets())) + mocker.patch('freqtrade.exchange.Exchange.markets', + PropertyMock(return_value=get_markets())) if api_mock: mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) @@ -71,7 +72,8 @@ def patch_exchange(mocker, api_mock=None, id='bittrex', mock_markets=True) -> No mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock()) -def get_patched_exchange(mocker, config, api_mock=None, id='bittrex', mock_markets=True) -> Exchange: +def get_patched_exchange(mocker, config, api_mock=None, id='bittrex', + mock_markets=True) -> Exchange: patch_exchange(mocker, api_mock, id, mock_markets) config["exchange"]["name"] = id try: diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index a5da9b51e..df2261c1f 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -9,12 +9,11 @@ from numpy import isnan from freqtrade import DependencyException, TemporaryError from freqtrade.edge import PairInfo -from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import Trade from freqtrade.rpc import RPC, RPCException from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.state import State -from tests.conftest import patch_exchange, patch_get_signal, get_patched_freqtradebot +from tests.conftest import patch_get_signal, get_patched_freqtradebot # Functions for recurrent object patching diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index ff9a34142..a58c12ead 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2951,7 +2951,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, default_conf['trailing_stop'] = True default_conf['trailing_stop_positive'] = 0.01 patch_whitelist(mocker, default_conf) - + freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) diff --git a/tests/test_utils.py b/tests/test_utils.py index 0833375c8..7d6b82809 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -378,7 +378,8 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ('["BLK/BTC","ETH/BTC","ETH/USDT","LTC/BTC","LTC/USD","NEO/BTC","TKN/BTC","XLTCUSDT","XRP/BTC"]' + assert ('["BLK/BTC","ETH/BTC","ETH/USDT","LTC/BTC","LTC/USD","NEO/BTC",' + '"TKN/BTC","XLTCUSDT","XRP/BTC"]' in captured.out) # Test --print-csv From bf20f3b7d8862ad6a57285a0c2c9cce7f00cb901 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 26 Oct 2019 15:41:31 +0300 Subject: [PATCH 0806/3421] Remove part which is related to #2418 --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index e1e101efd..fcbce571e 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -194,7 +194,7 @@ freqtrade -c config.json #### 7. (Optional) Post-installation Tasks -You can also optionally setup the bot to run as a `systemd` service and configure it to send the log messages to the `syslog`/`rsyslog` or `journald` daemons. See [Advanced Post-installation Tasks](advanced-setup.md) for details. +On Linux, as an optional post-installation task, you can setup the bot to run as a `systemd` service. See [Advanced Post-installation Tasks](advanced-setup.md) for details. ------ From 13ae339a2e2c08344d7ec3224d0e0666fe453672 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 26 Oct 2019 16:34:13 +0200 Subject: [PATCH 0807/3421] Improve windows Install documentation with hints --- docs/installation.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/installation.md b/docs/installation.md index fcbce571e..afc635673 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -218,6 +218,12 @@ If that is not available on your system, feel free to try the instructions below ### Install freqtrade manually +!!! Note + Make sure to use 64bit Windows to avoid problems with backtesting or hyperopt due to the memory constraints 32bit applications have under Windows. + +!!! Hint + Using the [Anaconda Distribution](https://www.anaconda.com/distribution/) under windows can greatly help with installation problems. Check out the [Conda section](#using-conda) in this document. + #### Clone the git repository ```bash From 8b4fea4b710e5384d6df3d94454c6ee141016d11 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 27 Oct 2019 02:06:10 +0300 Subject: [PATCH 0808/3421] Update installation.md --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index fcbce571e..d45b47b3e 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -194,7 +194,7 @@ freqtrade -c config.json #### 7. (Optional) Post-installation Tasks -On Linux, as an optional post-installation task, you can setup the bot to run as a `systemd` service. See [Advanced Post-installation Tasks](advanced-setup.md) for details. +On Linux, as an optional post-installation task, you may wish to setup the bot to run as a `systemd` service or configure it to send the log messages to the `syslog`/`rsyslog` or `journald` daemons. See [Advanced Post-installation Tasks](advanced-setup.md) for details. ------ From 48d83715a5cff5f2ea68338fde92bff0b2e07105 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 27 Oct 2019 03:44:49 +0300 Subject: [PATCH 0809/3421] Fix typo in docs (thanks to Escaliert@Slack) --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index ff40b1750..5e936065c 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -135,7 +135,7 @@ To allow the bot to trade all the available `stake_currency` in your account set In this case a trade amount is calclulated as: ```python -currency_balanse / (max_open_trades - current_open_trades) +currency_balance / (max_open_trades - current_open_trades) ``` ### Understand minimal_roi From e5487441ba29c93cc0658bd3e9a8f876482e6b4c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Oct 2019 06:08:55 +0100 Subject: [PATCH 0810/3421] Fix typos --- docs/installation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index afc635673..02870a1c1 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -219,10 +219,10 @@ If that is not available on your system, feel free to try the instructions below ### Install freqtrade manually !!! Note - Make sure to use 64bit Windows to avoid problems with backtesting or hyperopt due to the memory constraints 32bit applications have under Windows. + Make sure to use 64bit Windows and 64bit Python to avoid problems with backtesting or hyperopt due to the memory constraints 32bit applications have under Windows. !!! Hint - Using the [Anaconda Distribution](https://www.anaconda.com/distribution/) under windows can greatly help with installation problems. Check out the [Conda section](#using-conda) in this document. + Using the [Anaconda Distribution](https://www.anaconda.com/distribution/) under Windows can greatly help with installation problems. Check out the [Conda section](#using-conda) in this document. #### Clone the git repository From 141c454187c96bd8d2f0f85b4309a18e2a8b1bfb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Oct 2019 11:17:01 +0200 Subject: [PATCH 0811/3421] Add startup-candles-argument for strategy --- freqtrade/strategy/interface.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 014ca9968..48a70b0ce 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -103,6 +103,9 @@ class IStrategy(ABC): # run "populate_indicators" only for new candle process_only_new_candles: bool = False + # Count of candles the strategy requires before producing valid signals + startup_candle_count: int = 0 + # Class level variables (intentional) containing # the dataprovider (dp) (access to other candles, historic data, ...) # and wallets - access to the current balance. @@ -421,6 +424,7 @@ class IStrategy(ABC): def tickerdata_to_dataframe(self, tickerdata: Dict[str, List]) -> Dict[str, DataFrame]: """ Creates a dataframe and populates indicators for given ticker data + Used by optimize operations only, not during dry / live runs. """ return {pair: self.advise_indicators(pair_data, {'pair': pair}) for pair, pair_data in tickerdata.items()} From 616fe08bcea0dae438906aaff60434749ff4e375 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Oct 2019 11:29:25 +0200 Subject: [PATCH 0812/3421] Add subtract_start to timerange object --- freqtrade/configuration/timerange.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py index fc759ab6e..527402af7 100644 --- a/freqtrade/configuration/timerange.py +++ b/freqtrade/configuration/timerange.py @@ -27,6 +27,10 @@ class TimeRange: return (self.starttype == other.starttype and self.stoptype == other.stoptype and self.startts == other.startts and self.stopts == other.stopts) + def subtract_start(self, seconds) -> None: + if self.startts: + self.startts = self.startts - seconds + @staticmethod def parse_timerange(text: Optional[str]): """ From 9e7e051eb42d45fffed0b8318587a0f8e7e78d99 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Oct 2019 11:30:20 +0200 Subject: [PATCH 0813/3421] add trim-dataframe method --- freqtrade/data/history.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index ed5d80b0e..d385a28ed 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -13,6 +13,7 @@ from pathlib import Path from typing import Any, Dict, List, Optional, Tuple import arrow +import pytz from pandas import DataFrame from freqtrade import OperationalException, misc @@ -49,6 +50,19 @@ def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]: return tickerlist[start_index:stop_index] +def trim_dataframe(df: DataFrame, timerange: TimeRange) -> DataFrame: + """ + Trim dataframe based on given timerange + """ + if timerange.starttype == 'date': + start = datetime.fromtimestamp(timerange.startts, tz=pytz.utc) + df = df.loc[df['date'] >= start, :] + if timerange.stoptype == 'date': + stop = datetime.fromtimestamp(timerange.stopts, tz=pytz.utc) + df = df.loc[df['date'] <= stop, :] + return df + + def load_tickerdata_file(datadir: Path, pair: str, ticker_interval: str, timerange: Optional[TimeRange] = None) -> Optional[list]: """ From 9c7696a8ce2e4833c4995b7e2ff30368b6292913 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Oct 2019 13:56:01 +0200 Subject: [PATCH 0814/3421] Add required_startup to backtesting --- freqtrade/optimize/backtesting.py | 33 ++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index fb8c182ee..aa8a6a882 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -15,7 +15,7 @@ from freqtrade import OperationalException from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.dataprovider import DataProvider -from freqtrade.exchange import timeframe_to_minutes +from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds from freqtrade.misc import file_dump_json from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver @@ -90,6 +90,9 @@ class Backtesting: self.ticker_interval = str(self.config.get('ticker_interval')) self.ticker_interval_mins = timeframe_to_minutes(self.ticker_interval) + # Get maximum required startup period + self.required_startup = max([strat.startup_candle_count for strat in self.strategylist]) + self.required_startup_s = self.required_startup * timeframe_to_seconds(self.ticker_interval) # Load one (first) strategy self._set_strategy(self.strategylist[0]) @@ -418,11 +421,19 @@ class Backtesting: timerange = TimeRange.parse_timerange(None if self.config.get( 'timerange') is None else str(self.config.get('timerange'))) + + logger.info('Using indicator startup period: %s ...', self.required_startup) + + # Timerange_startup is timerange - startup-candles + timerange_startup = deepcopy(timerange) + timerange_startup.subtract_start(self.required_startup_s) + data = history.load_data( datadir=Path(self.config['datadir']), pairs=pairs, ticker_interval=self.ticker_interval, timerange=timerange, + startup_candles=self.required_startup ) if not data: @@ -439,11 +450,14 @@ class Backtesting: min_date, max_date = history.get_timeframe(data) logger.info( - 'Backtesting with data from %s up to %s (%s days)..', - min_date.isoformat(), - max_date.isoformat(), - (max_date - min_date).days + 'Loading backtest data from %s up to %s (%s days)..', + min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days ) + if not timerange_startup.starttype: + # If no startts was defined, we need to move the backtesting start + logger.info("Moving start-date by %s candles.", self.required_startup) + timerange.startts = min_date.timestamp + self.required_startup_s + timerange.starttype = 'date' for strat in self.strategylist: logger.info("Running backtesting for Strategy %s", strat.get_strategy_name()) @@ -452,6 +466,15 @@ class Backtesting: # need to reprocess data every time to populate signals preprocessed = self.strategy.tickerdata_to_dataframe(data) + # Trim startup period from analyzed dataframe + for pair, df in preprocessed.items(): + preprocessed[pair] = history.trim_dataframe(df, timerange) + min_date, max_date = history.get_timeframe(preprocessed) + + logger.info( + 'Backtesting with data from %s up to %s (%s days)..', + min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days + ) # Execute backtest and print results all_results[self.strategy.get_strategy_name()] = self.backtest( { From 704121c197798c2c0ad3829ff464a997d60fa1ff Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Oct 2019 14:02:53 +0200 Subject: [PATCH 0815/3421] Move most logic to history --- freqtrade/data/history.py | 30 ++++++++++++++++++++++++------ freqtrade/optimize/backtesting.py | 12 ++++-------- tests/optimize/test_backtesting.py | 2 +- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index d385a28ed..71ac5c9a7 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -8,6 +8,7 @@ Includes: import logging import operator +from copy import deepcopy from datetime import datetime from pathlib import Path from typing import Any, Dict, List, Optional, Tuple @@ -19,7 +20,7 @@ from pandas import DataFrame from freqtrade import OperationalException, misc from freqtrade.configuration import TimeRange from freqtrade.data.converter import parse_ticker_dataframe, trades_to_ohlcv -from freqtrade.exchange import Exchange, timeframe_to_minutes +from freqtrade.exchange import Exchange, timeframe_to_minutes, timeframe_to_seconds logger = logging.getLogger(__name__) @@ -127,7 +128,8 @@ def load_pair_history(pair: str, refresh_pairs: bool = False, exchange: Optional[Exchange] = None, fill_up_missing: bool = True, - drop_incomplete: bool = True + drop_incomplete: bool = True, + startup_candles: int = 0, ) -> DataFrame: """ Loads cached ticker history for the given pair. @@ -140,9 +142,15 @@ def load_pair_history(pair: str, :param exchange: Exchange object (needed when using "refresh_pairs") :param fill_up_missing: Fill missing values with "No action"-candles :param drop_incomplete: Drop last candle assuming it may be incomplete. + :param startup_candles: Additional candles to load at the start of the period :return: DataFrame with ohlcv data """ + timerange_startup = deepcopy(timerange) + if startup_candles: + logger.info('Using indicator startup period: %s ...', startup_candles) + timerange_startup.subtract_start(timeframe_to_seconds(ticker_interval) * startup_candles) + # The user forced the refresh of pairs if refresh_pairs: download_pair_history(datadir=datadir, @@ -151,11 +159,11 @@ def load_pair_history(pair: str, ticker_interval=ticker_interval, timerange=timerange) - pairdata = load_tickerdata_file(datadir, pair, ticker_interval, timerange=timerange) + pairdata = load_tickerdata_file(datadir, pair, ticker_interval, timerange=timerange_startup) if pairdata: - if timerange: - _validate_pairdata(pair, pairdata, timerange) + if timerange_startup: + _validate_pairdata(pair, pairdata, timerange_startup) return parse_ticker_dataframe(pairdata, ticker_interval, pair=pair, fill_missing=fill_up_missing, drop_incomplete=drop_incomplete) @@ -174,10 +182,20 @@ def load_data(datadir: Path, exchange: Optional[Exchange] = None, timerange: Optional[TimeRange] = None, fill_up_missing: bool = True, + startup_candles: int = 0, ) -> Dict[str, DataFrame]: """ Loads ticker history data for a list of pairs - :return: dict(:) + :param datadir: Path to the data storage location. + :param ticker_interval: Ticker-interval (e.g. "5m") + :param pairs: List of pairs to load + :param refresh_pairs: Refresh pairs from exchange. + (Note: Requires exchange to be passed as well.) + :param exchange: Exchange object (needed when using "refresh_pairs") + :param timerange: Limit data to be loaded to this timerange + :param fill_up_missing: Fill missing values with "No action"-candles + :param startup_candles: Additional candles to load at the start of the period + :return: dict(:) TODO: refresh_pairs is still used by edge to keep the data uptodate. This should be replaced in the future. Instead, writing the current candles to disk from dataprovider should be implemented, as this would avoid loading ohlcv data twice. diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index aa8a6a882..59130dbc0 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -92,7 +92,6 @@ class Backtesting: # Get maximum required startup period self.required_startup = max([strat.startup_candle_count for strat in self.strategylist]) - self.required_startup_s = self.required_startup * timeframe_to_seconds(self.ticker_interval) # Load one (first) strategy self._set_strategy(self.strategylist[0]) @@ -422,11 +421,6 @@ class Backtesting: timerange = TimeRange.parse_timerange(None if self.config.get( 'timerange') is None else str(self.config.get('timerange'))) - logger.info('Using indicator startup period: %s ...', self.required_startup) - - # Timerange_startup is timerange - startup-candles - timerange_startup = deepcopy(timerange) - timerange_startup.subtract_start(self.required_startup_s) data = history.load_data( datadir=Path(self.config['datadir']), @@ -453,10 +447,12 @@ class Backtesting: 'Loading backtest data from %s up to %s (%s days)..', min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days ) - if not timerange_startup.starttype: + if not timerange.starttype: # If no startts was defined, we need to move the backtesting start logger.info("Moving start-date by %s candles.", self.required_startup) - timerange.startts = min_date.timestamp + self.required_startup_s + timerange.startts = (min_date.timestamp + + timeframe_to_seconds(self.ticker_interval) + * self.required_startup) timerange.starttype = 'date' for strat in self.strategylist: diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 998edda8a..3353274ef 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -117,7 +117,7 @@ def simple_backtest(config, contour, num_results, mocker, testdatadir) -> None: def mocked_load_data(datadir, pairs=[], ticker_interval='0m', refresh_pairs=False, - timerange=None, exchange=None, live=False): + timerange=None, exchange=None, live=False, startup_candles=0): tickerdata = history.load_tickerdata_file(datadir, 'UNITTEST/BTC', '1m', timerange=timerange) pairdata = {'UNITTEST/BTC': parse_ticker_dataframe(tickerdata, '1m', pair="UNITTEST/BTC", fill_missing=True)} From 6382a4cd042ed1e84af48493c60e7229986a0e11 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 23 Oct 2019 17:57:38 +0200 Subject: [PATCH 0816/3421] Implement startup-period to default-strategy --- freqtrade/optimize/backtesting.py | 9 +++++---- freqtrade/strategy/default_strategy.py | 6 +++--- tests/optimize/test_backtesting.py | 10 ++++++++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 59130dbc0..6b82dd601 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -421,7 +421,6 @@ class Backtesting: timerange = TimeRange.parse_timerange(None if self.config.get( 'timerange') is None else str(self.config.get('timerange'))) - data = history.load_data( datadir=Path(self.config['datadir']), pairs=pairs, @@ -447,9 +446,11 @@ class Backtesting: 'Loading backtest data from %s up to %s (%s days)..', min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days ) - if not timerange.starttype: - # If no startts was defined, we need to move the backtesting start - logger.info("Moving start-date by %s candles.", self.required_startup) + if (not timerange.starttype or (self.required_startup + and min_date.timestamp == timerange.startts)): + # If no startts was defined, or test-data starts at the defined test-date + logger.warning("Moving start-date by %s candles to account for startup time.", + self.required_startup) timerange.startts = (min_date.timestamp + timeframe_to_seconds(self.ticker_interval) * self.required_startup) diff --git a/freqtrade/strategy/default_strategy.py b/freqtrade/strategy/default_strategy.py index b839a9618..0a241691c 100644 --- a/freqtrade/strategy/default_strategy.py +++ b/freqtrade/strategy/default_strategy.py @@ -39,6 +39,9 @@ class DefaultStrategy(IStrategy): 'stoploss_on_exchange': False } + # Count of candles the strategy requires before producing valid signals + startup_candle_count: int = 20 + # Optional time in force for orders order_time_in_force = { 'buy': 'gtc', @@ -105,9 +108,6 @@ class DefaultStrategy(IStrategy): # EMA - Exponential Moving Average dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10) - # SMA - Simple Moving Average - dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) - return dataframe def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 3353274ef..b14209e2d 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -838,7 +838,10 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): f'Using data directory: {testdatadir} ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', - 'Backtesting with data from 2017-11-14T21:17:00+00:00 ' + 'Backtesting with data from 2017-11-14T21:37:00+00:00 ' + 'up to 2017-11-14T22:58:00+00:00 (0 days)..', + 'Moving start-date by 20 candles to account for startup time.', + 'Loading backtest data from 2017-11-14T21:17:00+00:00 ' 'up to 2017-11-14T22:58:00+00:00 (0 days)..', 'Parameter --enable-position-stacking detected ...' ] @@ -892,7 +895,10 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): f'Using data directory: {testdatadir} ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', - 'Backtesting with data from 2017-11-14T21:17:00+00:00 ' + 'Backtesting with data from 2017-11-14T21:37:00+00:00 ' + 'up to 2017-11-14T22:58:00+00:00 (0 days)..', + 'Moving start-date by 20 candles to account for startup time.', + 'Loading backtest data from 2017-11-14T21:17:00+00:00 ' 'up to 2017-11-14T22:58:00+00:00 (0 days)..', 'Parameter --enable-position-stacking detected ...', 'Running backtesting for Strategy DefaultStrategy', From 5c2682e2c94828f1cbfa32b9ec6534fae103caf1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 23 Oct 2019 17:58:26 +0200 Subject: [PATCH 0817/3421] Add startup_candle_count to sample strategy --- freqtrade/strategy/default_strategy.py | 2 +- user_data/strategies/sample_strategy.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/freqtrade/strategy/default_strategy.py b/freqtrade/strategy/default_strategy.py index 0a241691c..6c343b477 100644 --- a/freqtrade/strategy/default_strategy.py +++ b/freqtrade/strategy/default_strategy.py @@ -39,7 +39,7 @@ class DefaultStrategy(IStrategy): 'stoploss_on_exchange': False } - # Count of candles the strategy requires before producing valid signals + # Number of candles the strategy requires before producing valid signals startup_candle_count: int = 20 # Optional time in force for orders diff --git a/user_data/strategies/sample_strategy.py b/user_data/strategies/sample_strategy.py index 80c30283d..c2fd681d2 100644 --- a/user_data/strategies/sample_strategy.py +++ b/user_data/strategies/sample_strategy.py @@ -59,6 +59,9 @@ class SampleStrategy(IStrategy): sell_profit_only = False ignore_roi_if_buy_signal = False + # Number of candles the strategy requires before producing valid signals + startup_candle_count: int = 20 + # Optional order type mapping. order_types = { 'buy': 'limit', From bd4a23beeb9506b75b4556176ae3eef26924e0ab Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 23 Oct 2019 19:30:01 +0200 Subject: [PATCH 0818/3421] Refactor start-adjust logic to timerange --- freqtrade/configuration/timerange.py | 27 +++++++++++++++++++++++++++ freqtrade/optimize/backtesting.py | 12 +++--------- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py index 527402af7..5731631c5 100644 --- a/freqtrade/configuration/timerange.py +++ b/freqtrade/configuration/timerange.py @@ -1,11 +1,14 @@ """ This module contains the argument manager class """ +import logging import re from typing import Optional import arrow +logger = logging.getLogger(__name__) + class TimeRange: """ @@ -28,9 +31,33 @@ class TimeRange: and self.startts == other.startts and self.stopts == other.stopts) def subtract_start(self, seconds) -> None: + """ + Subtracts from startts if startts is set. + :param seconds: Seconds to subtract from starttime + :return: None (Modifies the object in place) + """ if self.startts: self.startts = self.startts - seconds + def adjust_start_if_necessary(self, ticker_interval_secs: int, startup_candles: int, + min_date: arrow.Arrow) -> None: + """ + Adjust startts by candles. + Applies only if no startup-candles have been available. + :param ticker_interval_secs: Ticker interval in seconds e.g. `timeframe_to_seconds('5m')` + :param startup_candles: Number of candles to move start-date forward + :param min_date: Minimum data date loaded. Key kriterium to decide if start-time + has to be moved + :return: None (Modifies the object in place) + """ + if (not self.starttype or (startup_candles + and min_date.timestamp == self.startts)): + # If no startts was defined, or test-data starts at the defined test-date + logger.warning("Moving start-date by %s candles to account for startup time.", + startup_candles) + self.startts = (min_date.timestamp + ticker_interval_secs * startup_candles) + self.starttype = 'date' + @staticmethod def parse_timerange(text: Optional[str]): """ diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 6b82dd601..1d6b328a8 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -446,15 +446,9 @@ class Backtesting: 'Loading backtest data from %s up to %s (%s days)..', min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days ) - if (not timerange.starttype or (self.required_startup - and min_date.timestamp == timerange.startts)): - # If no startts was defined, or test-data starts at the defined test-date - logger.warning("Moving start-date by %s candles to account for startup time.", - self.required_startup) - timerange.startts = (min_date.timestamp - + timeframe_to_seconds(self.ticker_interval) - * self.required_startup) - timerange.starttype = 'date' + # Adjust startts forward if not enough data is available + timerange.adjust_start_if_necessary(timeframe_to_seconds(self.ticker_interval), + self.required_startup, min_date) for strat in self.strategylist: logger.info("Running backtesting for Strategy %s", strat.get_strategy_name()) From 5cdae17d19b75b07aed188fd676b056a0ec4e7a2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 23 Oct 2019 19:41:10 +0200 Subject: [PATCH 0819/3421] Add tests for timerange modifications --- tests/test_timerange.py | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/tests/test_timerange.py b/tests/test_timerange.py index 4851cbebd..d758092ed 100644 --- a/tests/test_timerange.py +++ b/tests/test_timerange.py @@ -1,10 +1,11 @@ # pragma pylint: disable=missing-docstring, C0103 +import arrow import pytest from freqtrade.configuration import TimeRange -def test_parse_timerange_incorrect() -> None: +def test_parse_timerange_incorrect(): assert TimeRange('date', None, 1274486400, 0) == TimeRange.parse_timerange('20100522-') assert TimeRange(None, 'date', 0, 1274486400) == TimeRange.parse_timerange('-20100522') @@ -28,3 +29,37 @@ def test_parse_timerange_incorrect() -> None: with pytest.raises(Exception, match=r'Incorrect syntax.*'): TimeRange.parse_timerange('-') + + +def test_subtract_start(): + x = TimeRange('date', 'date', 1274486400, 1438214400) + x.subtract_start(300) + assert x.startts == 1274486400 - 300 + + # Do nothing if no startdate exists + x = TimeRange(None, 'date', 0, 1438214400) + x.subtract_start(300) + assert not x.startts + + x = TimeRange('date', None, 1274486400, 0) + x.subtract_start(300) + assert x.startts == 1274486400 - 300 + + +def test_adjust_start_if_necessary(): + min_date = arrow.Arrow(2017, 11, 14, 21, 15, 00) + + x = TimeRange('date', 'date', 1510694100, 1510780500) + # Adjust by 20 candles - min_date == startts + x.adjust_start_if_necessary(300, 20, min_date) + assert x.startts == 1510694100 + (20 * 300) + + x = TimeRange('date', 'date', 1510700100, 1510780500) + # Do nothing, startupe is set and different min_date + x.adjust_start_if_necessary(300, 20, min_date) + assert x.startts == 1510694100 + (20 * 300) + + x = TimeRange(None, 'date', 0, 1510780500) + # Adjust by 20 candles = 20 * 5m + x.adjust_start_if_necessary(300, 20, min_date) + assert x.startts == 1510694100 + (20 * 300) From 86624411c6e5af7c6fa1c1dc9f184f5420ef1172 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 23 Oct 2019 19:54:43 +0200 Subject: [PATCH 0820/3421] Test trim_dataframe --- tests/data/test_history.py | 40 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 95382768a..d7e0562cc 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -427,6 +427,46 @@ def test_trim_tickerlist(testdatadir) -> None: assert not ticker +def test_trim_dataframe(testdatadir) -> None: + data = history.load_data( + datadir=testdatadir, + ticker_interval='1m', + pairs=['UNITTEST/BTC'] + )['UNITTEST/BTC'] + min_date = int(data.iloc[0]['date'].timestamp()) + max_date = int(data.iloc[-1]['date'].timestamp()) + data_modify = data.copy() + + # Remove first 30 minutes (1800 s) + tr = TimeRange('date', None, min_date + 1800, 0) + data_modify = history.trim_dataframe(data_modify, tr) + assert not data_modify.equals(data) + assert len(data_modify) < len(data) + assert len(data_modify) == len(data) - 30 + assert all(data_modify.iloc[-1] == data.iloc[-1]) + assert all(data_modify.iloc[0] == data.iloc[30]) + + data_modify = data.copy() + # Remove last 30 minutes (1800 s) + tr = TimeRange(None, 'date', 0, max_date - 1800) + data_modify = history.trim_dataframe(data_modify, tr) + assert not data_modify.equals(data) + assert len(data_modify) < len(data) + assert len(data_modify) == len(data) - 30 + assert all(data_modify.iloc[0] == data.iloc[0]) + assert all(data_modify.iloc[-1] == data.iloc[-31]) + + data_modify = data.copy() + # Remove first 25 and last 30 minutes (1800 s) + tr = TimeRange('date', 'date', min_date + 1500, max_date - 1800) + data_modify = history.trim_dataframe(data_modify, tr) + assert not data_modify.equals(data) + assert len(data_modify) < len(data) + assert len(data_modify) == len(data) - 55 + # first row matches 25th original row + assert all(data_modify.iloc[0] == data.iloc[25]) + + def test_file_dump_json_tofile(testdatadir) -> None: file = testdatadir / 'test_{id}.json'.format(id=str(uuid.uuid4())) data = {'bar': 'foo'} From 33164ac78ee2d72647931467abcb8d60e2d5e54e Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 23 Oct 2019 20:13:43 +0200 Subject: [PATCH 0821/3421] Refactor loading of bt data to backtesting ... --- freqtrade/data/history.py | 8 ++++- freqtrade/optimize/backtesting.py | 55 ++++++++++++++++--------------- freqtrade/optimize/hyperopt.py | 25 ++++---------- 3 files changed, 42 insertions(+), 46 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 71ac5c9a7..dfd175b1f 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -183,6 +183,7 @@ def load_data(datadir: Path, timerange: Optional[TimeRange] = None, fill_up_missing: bool = True, startup_candles: int = 0, + fail_without_data: bool = False ) -> Dict[str, DataFrame]: """ Loads ticker history data for a list of pairs @@ -195,6 +196,7 @@ def load_data(datadir: Path, :param timerange: Limit data to be loaded to this timerange :param fill_up_missing: Fill missing values with "No action"-candles :param startup_candles: Additional candles to load at the start of the period + :param fail_without_data: Raise OperationalException if no data is found. :return: dict(:) TODO: refresh_pairs is still used by edge to keep the data uptodate. This should be replaced in the future. Instead, writing the current candles to disk @@ -208,9 +210,13 @@ def load_data(datadir: Path, datadir=datadir, timerange=timerange, refresh_pairs=refresh_pairs, exchange=exchange, - fill_up_missing=fill_up_missing) + fill_up_missing=fill_up_missing, + startup_candles=startup_candles) if hist is not None: result[pair] = hist + + if fail_without_data and not result: + raise OperationalException("No data found. Terminating.") return result diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 1d6b328a8..fe31912bc 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -105,6 +105,31 @@ class Backtesting: # And the regular "stoploss" function would not apply to that case self.strategy.order_types['stoploss_on_exchange'] = False + def load_bt_data(self): + timerange = TimeRange.parse_timerange(None if self.config.get( + 'timerange') is None else str(self.config.get('timerange'))) + + data = history.load_data( + datadir=Path(self.config['datadir']), + pairs=self.config['exchange']['pair_whitelist'], + ticker_interval=self.ticker_interval, + timerange=timerange, + startup_candles=self.required_startup, + fail_without_data=True, + ) + + min_date, max_date = history.get_timeframe(data) + + logger.info( + 'Loading data from %s up to %s (%s days)..', + min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days + ) + # Adjust startts forward if not enough data is available + timerange.adjust_start_if_necessary(timeframe_to_seconds(self.ticker_interval), + self.required_startup, min_date) + + return data, timerange + def _generate_text_table(self, data: Dict[str, Dict], results: DataFrame, skip_nan: bool = False) -> str: """ @@ -414,42 +439,18 @@ class Backtesting: :return: None """ data: Dict[str, Any] = {} - pairs = self.config['exchange']['pair_whitelist'] logger.info('Using stake_currency: %s ...', self.config['stake_currency']) logger.info('Using stake_amount: %s ...', self.config['stake_amount']) - - timerange = TimeRange.parse_timerange(None if self.config.get( - 'timerange') is None else str(self.config.get('timerange'))) - - data = history.load_data( - datadir=Path(self.config['datadir']), - pairs=pairs, - ticker_interval=self.ticker_interval, - timerange=timerange, - startup_candles=self.required_startup - ) - - if not data: - logger.critical("No data found. Terminating.") - return # Use max_open_trades in backtesting, except --disable-max-market-positions is set if self.config.get('use_max_market_positions', True): max_open_trades = self.config['max_open_trades'] else: logger.info('Ignoring max_open_trades (--disable-max-market-positions was used) ...') max_open_trades = 0 + + data, timerange = self.load_bt_data() + all_results = {} - - min_date, max_date = history.get_timeframe(data) - - logger.info( - 'Loading backtest data from %s up to %s (%s days)..', - min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days - ) - # Adjust startts forward if not enough data is available - timerange.adjust_start_if_necessary(timeframe_to_seconds(self.ticker_interval), - self.required_startup, min_date) - for strat in self.strategylist: logger.info("Running backtesting for Strategy %s", strat.get_strategy_name()) self._set_strategy(strat) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 07258a048..2264234d4 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -23,7 +23,7 @@ from skopt import Optimizer from skopt.space import Dimension from freqtrade.configuration import TimeRange -from freqtrade.data.history import load_data, get_timeframe +from freqtrade.data.history import load_data, get_timeframe, trim_dataframe from freqtrade.misc import round_dict from freqtrade.optimize.backtesting import Backtesting # Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules @@ -379,30 +379,19 @@ class Hyperopt: ) def start(self) -> None: - timerange = TimeRange.parse_timerange(None if self.config.get( - 'timerange') is None else str(self.config.get('timerange'))) - data = load_data( - datadir=Path(self.config['datadir']), - pairs=self.config['exchange']['pair_whitelist'], - ticker_interval=self.backtesting.ticker_interval, - timerange=timerange - ) + data, timerange = self.backtesting.load_bt_data() - if not data: - logger.critical("No data found. Terminating.") - return + preprocessed = self.backtesting.strategy.tickerdata_to_dataframe(data) + # Trim startup period from analyzed dataframe + for pair, df in preprocessed.items(): + preprocessed[pair] = trim_dataframe(df, timerange) min_date, max_date = get_timeframe(data) logger.info( 'Hyperopting with data from %s up to %s (%s days)..', - min_date.isoformat(), - max_date.isoformat(), - (max_date - min_date).days + min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days ) - - preprocessed = self.backtesting.strategy.tickerdata_to_dataframe(data) - dump(preprocessed, self.tickerdata_pickle) # We don't need exchange instance anymore while running hyperopt From 2ba388074e577278a83a17eb92e3980176f75b56 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 23 Oct 2019 20:27:51 +0200 Subject: [PATCH 0822/3421] Fix small bugs --- freqtrade/configuration/timerange.py | 2 +- tests/optimize/test_backtesting.py | 20 ++++++++------------ tests/optimize/test_hyperopt.py | 7 +++---- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py index 5731631c5..df5c937cf 100644 --- a/freqtrade/configuration/timerange.py +++ b/freqtrade/configuration/timerange.py @@ -51,7 +51,7 @@ class TimeRange: :return: None (Modifies the object in place) """ if (not self.starttype or (startup_candles - and min_date.timestamp == self.startts)): + and min_date.timestamp >= self.startts)): # If no startts was defined, or test-data starts at the defined test-date logger.warning("Moving start-date by %s candles to account for startup time.", startup_candles) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index b14209e2d..ba87848ec 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -117,7 +117,7 @@ def simple_backtest(config, contour, num_results, mocker, testdatadir) -> None: def mocked_load_data(datadir, pairs=[], ticker_interval='0m', refresh_pairs=False, - timerange=None, exchange=None, live=False, startup_candles=0): + timerange=None, exchange=None, live=False, *args, **kwargs): tickerdata = history.load_tickerdata_file(datadir, 'UNITTEST/BTC', '1m', timerange=timerange) pairdata = {'UNITTEST/BTC': parse_ticker_dataframe(tickerdata, '1m', pair="UNITTEST/BTC", fill_missing=True)} @@ -494,7 +494,7 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> def get_timeframe(input1): return Arrow(2017, 11, 14, 21, 17), Arrow(2017, 11, 14, 22, 59) - mocker.patch('freqtrade.data.history.load_data', MagicMock(return_value={})) + mocker.patch('freqtrade.data.history.load_pair_history', MagicMock(return_value=None)) mocker.patch('freqtrade.data.history.get_timeframe', get_timeframe) mocker.patch('freqtrade.exchange.Exchange.refresh_latest_ohlcv', MagicMock()) patch_exchange(mocker) @@ -511,10 +511,8 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> default_conf['timerange'] = '20180101-20180102' backtesting = Backtesting(default_conf) - backtesting.start() - # check the logs, that will contain the backtest result - - assert log_has('No data found. Terminating.', caplog) + with pytest.raises(OperationalException, match='No data found. Terminating.'): + backtesting.start() def test_backtest(default_conf, fee, mocker, testdatadir) -> None: @@ -838,10 +836,9 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): f'Using data directory: {testdatadir} ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', - 'Backtesting with data from 2017-11-14T21:37:00+00:00 ' + 'Loading data from 2017-11-14T20:57:00+00:00 ' 'up to 2017-11-14T22:58:00+00:00 (0 days)..', - 'Moving start-date by 20 candles to account for startup time.', - 'Loading backtest data from 2017-11-14T21:17:00+00:00 ' + 'Backtesting with data from 2017-11-14T21:17:00+00:00 ' 'up to 2017-11-14T22:58:00+00:00 (0 days)..', 'Parameter --enable-position-stacking detected ...' ] @@ -895,10 +892,9 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): f'Using data directory: {testdatadir} ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', - 'Backtesting with data from 2017-11-14T21:37:00+00:00 ' + 'Loading data from 2017-11-14T20:57:00+00:00 ' 'up to 2017-11-14T22:58:00+00:00 (0 days)..', - 'Moving start-date by 20 candles to account for startup time.', - 'Loading backtest data from 2017-11-14T21:17:00+00:00 ' + 'Backtesting with data from 2017-11-14T21:17:00+00:00 ' 'up to 2017-11-14T22:58:00+00:00 (0 days)..', 'Parameter --enable-position-stacking detected ...', 'Running backtesting for Strategy DefaultStrategy', diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 052c3ba77..d1448d367 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -228,7 +228,7 @@ def test_start(mocker, default_conf, caplog) -> None: def test_start_no_data(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) - mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock(return_value={})) + mocker.patch('freqtrade.data.history.load_pair_history', MagicMock(return_value=None)) mocker.patch( 'freqtrade.optimize.hyperopt.get_timeframe', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) @@ -242,9 +242,8 @@ def test_start_no_data(mocker, default_conf, caplog) -> None: '--epochs', '5' ] args = get_args(args) - start_hyperopt(args) - - assert log_has('No data found. Terminating.', caplog) + with pytest.raises(OperationalException, match='No data found. Terminating.'): + start_hyperopt(args) def test_start_filelock(mocker, default_conf, caplog) -> None: From 2bc74882e9940dd6e5c67e94240e7031ed2a9ec1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Oct 2019 10:00:44 +0100 Subject: [PATCH 0823/3421] Add test for startup_candles --- tests/data/test_history.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index d7e0562cc..057524fb3 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -95,6 +95,23 @@ def test_load_data_1min_ticker(ticker_history, mocker, caplog, testdatadir) -> N _clean_test_file(file) +def test_load_data_startup_candles(mocker, caplog, default_conf, testdatadir) -> None: + ltfmock = mocker.patch('freqtrade.data.history.load_tickerdata_file', + MagicMock(return_value=None)) + timerange = TimeRange('date', None, 1510639620, 0) + history.load_pair_history(pair='UNITTEST/BTC', ticker_interval='1m', + datadir=testdatadir, timerange=timerange, + startup_candles=20, + ) + assert log_has( + 'Using indicator startup period: 20 ...', caplog + ) + assert ltfmock.call_count == 1 + assert ltfmock.call_args_list[0][1]['timerange'] != timerange + # startts is 20 minutes earlier + assert ltfmock.call_args_list[0][1]['timerange'].startts == timerange.startts - 20 * 60 + + def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, default_conf, testdatadir) -> None: """ From c4cb098d14cafe4760551974b6de6c309888166e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Oct 2019 10:17:02 +0100 Subject: [PATCH 0824/3421] Update documentation with indicator_startup_period --- docs/backtesting.md | 2 ++ docs/strategy-customization.md | 35 ++++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 34c5f1fbe..6d21fa2bf 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -72,6 +72,8 @@ The exported trades can be used for [further analysis](#further-backtest-result- freqtrade backtesting --export trades --export-filename=backtest_samplestrategy.json ``` +Please also read about the [strategy startup period](strategy-customization.md#strategy-startup-period). + #### Supplying custom fee value Sometimes your account has certain fee rebates (fee reductions starting with a certain account size or monthly volume), which are not visible to ccxt. diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index ab7dcfc30..ae44d32ea 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -117,6 +117,37 @@ def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame Look into the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/sample_strategy.py). Then uncomment indicators you need. +### Strategy startup period + +Most indicators have an "instable period", in which they are either not available, or the calculation is incorrect. This can lead to inconsistencies, since Freqtrade does not know how long this instable period should be. +To account for this, the strategy has an attribute, `startup_candle_count`. +This should be set to the maximum number of candles that the strategy requires to calculate stable indicators. + +In this example strategy, this should be set to 100 (`startup_candle_count = 100`), since the longest needed history is 100 candles. + +``` python + dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100) +``` + +By letting the bot know how much history is needed, backtest trades can start at the specified timerange during backtesting and hyperopt. + +!!! Warning: + `startup_candle_count` should be below `ohlcv_candle_limit` (which is 500 for most exchanges) - since only this amount of candles will be available during trading operations. + +#### Example + +Let's try to backtest 1 month (January 2019) of 5m candles. + +``` bash +freqtrade backtesting --timerange 20190101-20190201 --ticker-interval 5m +``` + +Since backtesting knows it needs 100 candles to generate valid buy-signals, it'll load data from `20190101 - (100 * 5m)` - which is ~2019-12-31 15:30:00. +If this data is available, Indicators will be calculated with this extended timerange. The startup period (Up to 2019-01-01 00:00:00) will then be removed before starting backtesting. + +!!! Note + If data for the startup-period is not available, then the timerange will be adjusted to account for this startup period - so Backtesting would start at 2019-01-01 08:30:00. + ### Buy signal rules Edit the method `populate_buy_trend()` in your strategy file to update your buy strategy. @@ -267,10 +298,10 @@ class Awesomestrategy(IStrategy): ``` !!! Warning - The data is not persisted after a bot-restart (or config-reload). Also, the amount of data should be kept smallish (no DataFrames and such), otherwise the bot will start to consume a lot of memory and eventually run out of memory and crash. + The data is not persisted after a bot-restart (or config-reload). Also, the amount of data should be kept smallish (no DataFrames and such), otherwise the bot will start to consume a lot of memory and eventually run out of memory and crash. !!! Note - If the data is pair-specific, make sure to use pair as one of the keys in the dictionary. + If the data is pair-specific, make sure to use pair as one of the keys in the dictionary. ### Additional data (DataProvider) From 223f0cd4d3780a348f1a743329cf671b38ec914d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Oct 2019 10:18:58 +0100 Subject: [PATCH 0825/3421] Apply startup_period to edge as well --- freqtrade/edge/__init__.py | 3 ++- tests/edge/test_edge.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index 2655fbc65..883bf4a0f 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -100,7 +100,8 @@ class Edge: ticker_interval=self.strategy.ticker_interval, refresh_pairs=self._refresh_pairs, exchange=self.exchange, - timerange=self._timerange + timerange=self._timerange, + startup_candles=self.strategy.startup_candle_count, ) if not data: diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index 5e244a97e..e1af50768 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -256,7 +256,7 @@ def test_edge_heartbeat_calculate(mocker, edge_conf): def mocked_load_data(datadir, pairs=[], ticker_interval='0m', refresh_pairs=False, - timerange=None, exchange=None): + timerange=None, exchange=None, *args, **kwargs): hz = 0.1 base = 0.001 From 73f5bff9c5c9487457f529a007cef99faff6f1f0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Oct 2019 10:38:21 +0100 Subject: [PATCH 0826/3421] Add validation to make sure strategies work on that exchange --- freqtrade/exchange/exchange.py | 10 ++++++++++ freqtrade/resolvers/strategy_resolver.py | 1 + tests/exchange/test_exchange.py | 14 ++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 71f0737ef..3fd7d615c 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -228,6 +228,7 @@ class Exchange: self.validate_pairs(config['exchange']['pair_whitelist']) self.validate_ordertypes(config.get('order_types', {})) self.validate_order_time_in_force(config.get('order_time_in_force', {})) + self.validate_required_startup_candles(config.get('startup_candle_count', 0)) # Converts the interval provided in minutes in config to seconds self.markets_refresh_interval: int = exchange_config.get( @@ -443,6 +444,15 @@ class Exchange: raise OperationalException( f'Time in force policies are not supported for {self.name} yet.') + def validate_required_startup_candles(self, startup_candles) -> None: + """ + Checks if required startup_candles is more than ohlcv_candle_limit. + """ + if startup_candles + 5 > self._ft_has['ohlcv_candle_limit']: + raise OperationalException( + f"This strategy requires {startup_candles} candles to start. " + f"{self.name} only provides {self._ft_has['ohlcv_candle_limit']}.") + def exchange_has(self, endpoint: str) -> bool: """ Checks if exchange implements a specific API endpoint. diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index d6fbe9a7a..5bea74027 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -57,6 +57,7 @@ class StrategyResolver(IResolver): ("order_time_in_force", None, False), ("stake_currency", None, False), ("stake_amount", None, False), + ("startup_candle_count", None, False), ("use_sell_signal", True, True), ("sell_profit_only", False, True), ("ignore_roi_if_buy_signal", False, True), diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 1e0a5fdc3..e0e0cc7b1 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -533,6 +533,20 @@ def test_validate_order_types_not_in_config(default_conf, mocker): Exchange(conf) +def test_validate_required_startup_candles(default_conf, mocker, caplog): + api_mock = MagicMock() + default_conf['startup_candle_count'] = 2000 + mocker.patch('freqtrade.exchange.Exchange.name', PropertyMock(return_value='Binance')) + + mocker.patch('freqtrade.exchange.Exchange._init_ccxt', api_mock) + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) + + with pytest.raises(OperationalException, match=r'This strategy requires 2000.*'): + Exchange(default_conf) + + def test_exchange_has(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf) assert not exchange.exchange_has('ASDFASDF') From 132a4da7cf6ce448877506d28e7fbc9b2b63701d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Oct 2019 10:56:38 +0100 Subject: [PATCH 0827/3421] Small style fixes and adjusted tests --- docs/strategy-customization.md | 2 +- freqtrade/data/history.py | 2 +- freqtrade/exchange/exchange.py | 1 + freqtrade/optimize/hyperopt.py | 3 +-- freqtrade/strategy/interface.py | 2 +- tests/exchange/test_exchange.py | 8 ++++++-- tests/optimize/test_hyperopt.py | 24 ++++++++++++++++-------- 7 files changed, 27 insertions(+), 15 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index ae44d32ea..4d3d9bce5 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -131,7 +131,7 @@ In this example strategy, this should be set to 100 (`startup_candle_count = 100 By letting the bot know how much history is needed, backtest trades can start at the specified timerange during backtesting and hyperopt. -!!! Warning: +!!! Warning `startup_candle_count` should be below `ohlcv_candle_limit` (which is 500 for most exchanges) - since only this amount of candles will be available during trading operations. #### Example diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index dfd175b1f..c07b58da2 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -147,7 +147,7 @@ def load_pair_history(pair: str, """ timerange_startup = deepcopy(timerange) - if startup_candles: + if startup_candles and timerange_startup: logger.info('Using indicator startup period: %s ...', startup_candles) timerange_startup.subtract_start(timeframe_to_seconds(ticker_interval) * startup_candles) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 3fd7d615c..023e16cc5 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -447,6 +447,7 @@ class Exchange: def validate_required_startup_candles(self, startup_candles) -> None: """ Checks if required startup_candles is more than ohlcv_candle_limit. + Requires a grace-period of 5 candles - so a startup-period up to 494 is allowed by default. """ if startup_candles + 5 > self._ft_has['ohlcv_candle_limit']: raise OperationalException( diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 2264234d4..c576ea6f8 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -22,8 +22,7 @@ from pandas import DataFrame from skopt import Optimizer from skopt.space import Dimension -from freqtrade.configuration import TimeRange -from freqtrade.data.history import load_data, get_timeframe, trim_dataframe +from freqtrade.data.history import get_timeframe, trim_dataframe from freqtrade.misc import round_dict from freqtrade.optimize.backtesting import Backtesting # Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 48a70b0ce..d42f8e989 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -424,7 +424,7 @@ class IStrategy(ABC): def tickerdata_to_dataframe(self, tickerdata: Dict[str, List]) -> Dict[str, DataFrame]: """ Creates a dataframe and populates indicators for given ticker data - Used by optimize operations only, not during dry / live runs. + Used by optimize operations only, not during dry / live runs. """ return {pair: self.advise_indicators(pair_data, {'pair': pair}) for pair, pair_data in tickerdata.items()} diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index e0e0cc7b1..6805d8e73 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -535,7 +535,6 @@ def test_validate_order_types_not_in_config(default_conf, mocker): def test_validate_required_startup_candles(default_conf, mocker, caplog): api_mock = MagicMock() - default_conf['startup_candle_count'] = 2000 mocker.patch('freqtrade.exchange.Exchange.name', PropertyMock(return_value='Binance')) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', api_mock) @@ -543,7 +542,12 @@ def test_validate_required_startup_candles(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) - with pytest.raises(OperationalException, match=r'This strategy requires 2000.*'): + default_conf['startup_candle_count'] = 20 + ex = Exchange(default_conf) + assert ex + default_conf['startup_candle_count'] = 600 + + with pytest.raises(OperationalException, match=r'This strategy requires 600.*'): Exchange(default_conf) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index d1448d367..d0c37c40d 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -392,7 +392,8 @@ def test_roi_table_generation(hyperopt) -> None: def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) - mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', + MagicMock(return_value=(MagicMock(), None))) mocker.patch( 'freqtrade.optimize.hyperopt.get_timeframe', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) @@ -607,7 +608,8 @@ def test_continue_hyperopt(mocker, default_conf, caplog): def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) - mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', + MagicMock(return_value=(MagicMock(), None))) mocker.patch( 'freqtrade.optimize.hyperopt.get_timeframe', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) @@ -644,7 +646,8 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) - mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', + MagicMock(return_value=(MagicMock(), None))) mocker.patch( 'freqtrade.optimize.hyperopt.get_timeframe', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) @@ -681,7 +684,8 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) - mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', + MagicMock(return_value=(MagicMock(), None))) mocker.patch( 'freqtrade.optimize.hyperopt.get_timeframe', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) @@ -727,7 +731,8 @@ def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys) def test_simplified_interface_all_failed(mocker, default_conf, caplog, capsys) -> None: mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) - mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', + MagicMock(return_value=(MagicMock(), None))) mocker.patch( 'freqtrade.optimize.hyperopt.get_timeframe', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) @@ -756,7 +761,8 @@ def test_simplified_interface_all_failed(mocker, default_conf, caplog, capsys) - def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) - mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', + MagicMock(return_value=(MagicMock(), None))) mocker.patch( 'freqtrade.optimize.hyperopt.get_timeframe', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) @@ -801,7 +807,8 @@ def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None: def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) - mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', + MagicMock(return_value=(MagicMock(), None))) mocker.patch( 'freqtrade.optimize.hyperopt.get_timeframe', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) @@ -852,7 +859,8 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None ]) def test_simplified_interface_failed(mocker, default_conf, caplog, capsys, method, space) -> None: mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) - mocker.patch('freqtrade.optimize.hyperopt.load_data', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', + MagicMock(return_value=(MagicMock(), None))) mocker.patch( 'freqtrade.optimize.hyperopt.get_timeframe', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) From 2af3ce3ecc5b3af96401ab36014a137a75c6691b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Oct 2019 19:36:00 +0100 Subject: [PATCH 0828/3421] Improve stoploss documentation - split out offset_is_reached --- docs/stoploss.md | 74 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 49 insertions(+), 25 deletions(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index f5e2f8df6..3ea8beb72 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -3,74 +3,98 @@ The `stoploss` configuration parameter is loss in percentage that should trigger a sale. For example, value `-0.10` will cause immediate sell if the profit dips below -10% for a given trade. This parameter is optional. -Most of the strategy files already include the optimal `stoploss` -value. This parameter is optional. If you use it in the configuration file, it will take over the -`stoploss` value from the strategy file. +Most of the strategy files already include the optimal `stoploss` value. +Stoploss parameters need to be set in either strategy or configuration file. +Parameters in the configuration will overwrite settings within the strategy. -## Stop Loss support +## Stop Loss Types At this stage the bot contains the following stoploss support modes: 1. static stop loss, defined in either the strategy or configuration. 2. trailing stop loss, defined in the configuration. 3. trailing stop loss, custom positive loss, defined in configuration. +4. trailing stop loss only once the trade has reached a certain offset, !!! Note All stoploss properties can be configured in either Strategy or configuration. Configuration values override strategy values. -Those stoploss modes can be *on exchange* or *off exchange*. If the stoploss is *on exchange* it means a stoploss limit order is placed on the exchange immediately after buy order happens successfuly. This will protect you against sudden crashes in market as the order will be in the queue immediately and if market goes down then the order has more chance of being fulfilled. +Those stoploss modes can be *on exchange* or *off exchange*. If the stoploss is *on exchange* it means a stoploss limit order is placed on the exchange immediately after buy order happens successfully. This will protect you against sudden crashes in market as the order will be in the queue immediately and if market goes down then the order has more chance of being fulfilled. -In case of stoploss on exchange there is another parameter called `stoploss_on_exchange_interval`. This configures the interval in seconds at which the bot will check the stoploss and update it if necessary. As an example in case of trailing stoploss if the order is on the exchange and the market is going up then the bot automatically cancels the previous stoploss order and put a new one with a stop value higher than previous one. It is clear that the bot cannot do it every 5 seconds otherwise it gets banned. So this parameter will tell the bot how often it should update the stoploss order. The default value is 60 (1 minute). +In case of stoploss on exchange there is another parameter called `stoploss_on_exchange_interval`. This configures the interval in seconds at which the bot will check the stoploss and update it if necessary. + +For example, assuming the stoploss is on exchange, and trailing stoploss is enabled, and the market is going up, then the bot automatically cancels the previous stoploss order and puts a new one with a stop value higher than the previous stoploss order. +The bot cannot do this every 5 seconds, otherwise it would get banned by the exchange. +So this parameter will tell the bot how often it should update the stoploss order. The default value is 60 (1 minute). +This same logic will reapply a stoploss order on the exchange should you cancel it accidentally. !!! Note Stoploss on exchange is only supported for Binance as of now. ## Static Stop Loss -This is very simple, basically you define a stop loss of x in your strategy file or alternative in the configuration, which -will overwrite the strategy definition. This will basically try to sell your asset, the second the loss exceeds the defined loss. +This is very simple, you define a stop loss of x. This will try to sell the asset once the loss exceeds the defined loss. ## Trailing Stop Loss -The initial value for this stop loss, is defined in your strategy or configuration. Just as you would define your Stop Loss normally. +The initial value for this is `stoploss`, set either in the strategy or in the configuration file. Just as you would define your Stop loss normally. To enable this Feauture all you have to do is to define the configuration element: ``` json "trailing_stop" : True ``` -This will now activate an algorithm, which automatically moves your stop loss up every time the price of your asset increases. +This will now activate an algorithm, which automatically moves the stop loss up every time the price of your asset increases. -For example, simplified math, +For example, simplified math: -* you buy an asset at a price of 100$ -* your stop loss is defined at 2% -* which means your stop loss, gets triggered once your asset dropped below 98$ -* assuming your asset now increases to 102$ -* your stop loss, will now be 2% of 102$ or 99.96$ -* now your asset drops in value to 101$, your stop loss, will still be 99.96$ +* the bot buys an asset at a price of 100$ +* the stop loss is defined at 2% +* the stop loss would get triggered once the asset dropps below 98$ +* assuming the asset now increases to 102$ +* the stop loss will now be 2% of 102$ or 99.96$ +* now the asset drops in value to 101$, the stop loss, will still be 99.96$, and would trigger at 99.96$. -basically what this means is that your stop loss will be adjusted to be always be 2% of the highest observed price +In summary: The stoploss will be adjusted to be always be 2% of the highest observed price. -### Custom positive loss +### Custom positive stoploss -Due to demand, it is possible to have a default stop loss, when you are in the red with your buy, but once your profit surpasses a certain percentage, -the system will utilize a new stop loss, which can be a different value. For example your default stop loss is 5%, but once you have 1.1% profit, -it will be changed to be only a 1% stop loss, which trails the green candles until it goes below them. +It is also possible to have a default stop loss, when you are in the red with your buy, but once your profit surpasses a certain percentage, the system will utilize a new stop loss, which can have a different value. +For example your default stop loss is 5%, but once you have 1.1% profit, it will be changed to be only a 1% stop loss, which trails the green candles until it goes below them. -Both values can be configured in the main configuration file and requires `"trailing_stop": true` to be set to true. +Both values can be configured in the strategy or configuration file and requires `"trailing_stop": true` to be set to true. ``` json "trailing_stop_positive": 0.01, "trailing_stop_positive_offset": 0.011, - "trailing_only_offset_is_reached": false ``` The 0.01 would translate to a 1% stop loss, once you hit 1.1% profit. You should also make sure to have this value (`trailing_stop_positive_offset`) lower than your minimal ROI, otherwise minimal ROI will apply first and sell your trade. -If `"trailing_only_offset_is_reached": true` then the trailing stoploss is only activated once the offset is reached. Until then, the stoploss remains at the configured`stoploss`. +### Trailing only once offset is reached + +It is also possible to use a static stoploss until the offset is reached, and then trail the trade to take profits once the market goes down again. + +If `"trailing_only_offset_is_reached": true` then the trailing stoploss is only activated once the offset is reached. Until then, the stoploss remains at the configured `stoploss`. +This option can be used with or without `trailing_stop_positive`, but uses `trailing_stop_positive_offset` as offset. + +``` json + "trailing_only_offset_is_reached": true, +``` + +Simplified example: + +```python + stoploss = 0.05 + trailing_stop_positive_offset = 0.03 + trailing_only_offset_is_reached = True +``` + +* the bot buys an asset at a price of 100$ +* the stop loss is defined at 5% +* the stop loss will remain at 95% until profit reaches +3% ## Changing stoploss on open trades From 70ad909b16e15bd7c436a6704f825f2f7c64e3a4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Oct 2019 19:46:05 +0100 Subject: [PATCH 0829/3421] change samples to python code, and simplify a few things --- docs/stoploss.md | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 3ea8beb72..7cf885590 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -4,20 +4,18 @@ The `stoploss` configuration parameter is loss in percentage that should trigger For example, value `-0.10` will cause immediate sell if the profit dips below -10% for a given trade. This parameter is optional. Most of the strategy files already include the optimal `stoploss` value. -Stoploss parameters need to be set in either strategy or configuration file. -Parameters in the configuration will overwrite settings within the strategy. + +!!! Info + All stoploss properties mentioned in this file can be set in the Strategy, or in the configuration. Configuration values will override the strategy values. ## Stop Loss Types At this stage the bot contains the following stoploss support modes: -1. static stop loss, defined in either the strategy or configuration. -2. trailing stop loss, defined in the configuration. -3. trailing stop loss, custom positive loss, defined in configuration. -4. trailing stop loss only once the trade has reached a certain offset, - -!!! Note - All stoploss properties can be configured in either Strategy or configuration. Configuration values override strategy values. +1. Static stop loss. +2. Trailing stop loss. +3. Trailing stop loss, custom positive loss. +4. Trailing stop loss only once the trade has reached a certain offset, Those stoploss modes can be *on exchange* or *off exchange*. If the stoploss is *on exchange* it means a stoploss limit order is placed on the exchange immediately after buy order happens successfully. This will protect you against sudden crashes in market as the order will be in the queue immediately and if market goes down then the order has more chance of being fulfilled. @@ -37,11 +35,11 @@ This is very simple, you define a stop loss of x. This will try to sell the asse ## Trailing Stop Loss -The initial value for this is `stoploss`, set either in the strategy or in the configuration file. Just as you would define your Stop loss normally. -To enable this Feauture all you have to do is to define the configuration element: +The initial value for this is `stoploss`, just as you would define your static Stop loss. +To enable trailing stoploss: -``` json -"trailing_stop" : True +``` python +trailing_stop = True ``` This will now activate an algorithm, which automatically moves the stop loss up every time the price of your asset increases. @@ -62,31 +60,36 @@ In summary: The stoploss will be adjusted to be always be 2% of the highest obse It is also possible to have a default stop loss, when you are in the red with your buy, but once your profit surpasses a certain percentage, the system will utilize a new stop loss, which can have a different value. For example your default stop loss is 5%, but once you have 1.1% profit, it will be changed to be only a 1% stop loss, which trails the green candles until it goes below them. -Both values can be configured in the strategy or configuration file and requires `"trailing_stop": true` to be set to true. +Both values require `trailing_stop` to be set to true. -``` json - "trailing_stop_positive": 0.01, - "trailing_stop_positive_offset": 0.011, +``` python + trailing_stop_positive = 0.01 + trailing_stop_positive_offset = 0.011 ``` The 0.01 would translate to a 1% stop loss, once you hit 1.1% profit. +Before this, `stoploss` is used for the trailing stoploss. -You should also make sure to have this value (`trailing_stop_positive_offset`) lower than your minimal ROI, otherwise minimal ROI will apply first and sell your trade. +Read the [next section](#trailing-only-once-offset-is-reached) to keep stoploss at 5% of the entry point. + +!!! Tip + Make sure to have this value (`trailing_stop_positive_offset`) lower than minimal ROI, otherwise minimal ROI will apply first and sell the trade. ### Trailing only once offset is reached -It is also possible to use a static stoploss until the offset is reached, and then trail the trade to take profits once the market goes down again. +It is also possible to use a static stoploss until the offset is reached, and then trail the trade to take profits once the market turns. If `"trailing_only_offset_is_reached": true` then the trailing stoploss is only activated once the offset is reached. Until then, the stoploss remains at the configured `stoploss`. This option can be used with or without `trailing_stop_positive`, but uses `trailing_stop_positive_offset` as offset. -``` json - "trailing_only_offset_is_reached": true, +``` python + trailing_stop_positive_offset = 0.011 + trailing_only_offset_is_reached = true ``` Simplified example: -```python +``` python stoploss = 0.05 trailing_stop_positive_offset = 0.03 trailing_only_offset_is_reached = True From 46b975a49158f5c7caaf827312c85e712222059d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2019 07:40:15 +0000 Subject: [PATCH 0830/3421] Bump pytest-mock from 1.11.1 to 1.11.2 Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.11.1 to 1.11.2. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v1.11.1...v1.11.2) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index f5cde59e8..ada602360 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,7 +11,7 @@ mypy==0.740 pytest==5.2.1 pytest-asyncio==0.10.0 pytest-cov==2.8.1 -pytest-mock==1.11.1 +pytest-mock==1.11.2 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents From 60b99469b938c2dae88faf2f2b30129d51a163d5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2019 07:40:57 +0000 Subject: [PATCH 0831/3421] Bump nbconvert from 5.6.0 to 5.6.1 Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 5.6.0 to 5.6.1. - [Release notes](https://github.com/jupyter/nbconvert/releases) - [Commits](https://github.com/jupyter/nbconvert/compare/5.6.0...5.6.1) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index f5cde59e8..d9c7467a9 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -15,4 +15,4 @@ pytest-mock==1.11.1 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents -nbconvert==5.6.0 +nbconvert==5.6.1 From 44d0a6f2b89b69ecc2a4bddfdf35ce9093b0521b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2019 07:42:58 +0000 Subject: [PATCH 0832/3421] Bump ccxt from 1.18.1306 to 1.18.1346 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1306 to 1.18.1346. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.18.1306...1.18.1346) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 1e42d8a04..64a43ee62 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.1306 +ccxt==1.18.1346 SQLAlchemy==1.3.10 python-telegram-bot==12.2.0 arrow==0.15.2 From 596a269dfd23b1e687201b1390580da6977d3793 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2019 11:41:44 +0000 Subject: [PATCH 0833/3421] Bump pytest from 5.2.1 to 5.2.2 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.2.1 to 5.2.2. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.2.1...5.2.2) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 7e4736372..589ca7c54 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.7.8 flake8-type-annotations==0.1.0 flake8-tidy-imports==3.0.0 mypy==0.740 -pytest==5.2.1 +pytest==5.2.2 pytest-asyncio==0.10.0 pytest-cov==2.8.1 pytest-mock==1.11.2 From 3a6020dcd76ce4b661b8ca7e79e7a64c49391c14 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Oct 2019 12:43:35 +0100 Subject: [PATCH 0834/3421] small improvements to stoploss doc --- docs/stoploss.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 7cf885590..105488296 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -15,14 +15,14 @@ At this stage the bot contains the following stoploss support modes: 1. Static stop loss. 2. Trailing stop loss. 3. Trailing stop loss, custom positive loss. -4. Trailing stop loss only once the trade has reached a certain offset, +4. Trailing stop loss only once the trade has reached a certain offset. Those stoploss modes can be *on exchange* or *off exchange*. If the stoploss is *on exchange* it means a stoploss limit order is placed on the exchange immediately after buy order happens successfully. This will protect you against sudden crashes in market as the order will be in the queue immediately and if market goes down then the order has more chance of being fulfilled. In case of stoploss on exchange there is another parameter called `stoploss_on_exchange_interval`. This configures the interval in seconds at which the bot will check the stoploss and update it if necessary. For example, assuming the stoploss is on exchange, and trailing stoploss is enabled, and the market is going up, then the bot automatically cancels the previous stoploss order and puts a new one with a stop value higher than the previous stoploss order. -The bot cannot do this every 5 seconds, otherwise it would get banned by the exchange. +The bot cannot do this every 5 seconds (at each iteration), otherwise it would get banned by the exchange. So this parameter will tell the bot how often it should update the stoploss order. The default value is 60 (1 minute). This same logic will reapply a stoploss order on the exchange should you cancel it accidentally. @@ -31,7 +31,7 @@ This same logic will reapply a stoploss order on the exchange should you cancel ## Static Stop Loss -This is very simple, you define a stop loss of x. This will try to sell the asset once the loss exceeds the defined loss. +This is very simple, you define a stop loss of x (as a ratio of price, i.e. x * 100% of price). This will try to sell the asset once the loss exceeds the defined loss. ## Trailing Stop Loss @@ -51,7 +51,7 @@ For example, simplified math: * the stop loss would get triggered once the asset dropps below 98$ * assuming the asset now increases to 102$ * the stop loss will now be 2% of 102$ or 99.96$ -* now the asset drops in value to 101$, the stop loss, will still be 99.96$, and would trigger at 99.96$. +* now the asset drops in value to 101$, the stop loss will still be 99.96$ and would trigger at 99.96$. In summary: The stoploss will be adjusted to be always be 2% of the highest observed price. From 73343b338732da04056f372a47a40e8dec254ed5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Oct 2019 12:53:12 +0100 Subject: [PATCH 0835/3421] Address feedback --- docs/configuration.md | 2 +- tests/conftest.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 90f2687d0..bfe900d3e 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -75,7 +75,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `exchange.key` | '' | API key to use for the exchange. Only required when you are in production mode. ***Keep it in secrete, do not disclose publicly.*** | `exchange.secret` | '' | API secret to use for the exchange. Only required when you are in production mode. ***Keep it in secrete, do not disclose publicly.*** | `exchange.password` | '' | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. ***Keep it in secrete, do not disclose publicly.*** -| `exchange.pair_whitelist` | [] | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used when using VolumePairList (see [below](#dynamic-pairlists)). +| `exchange.pair_whitelist` | [] | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)). | `exchange.pair_blacklist` | [] | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)). | `exchange.ccxt_config` | None | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) | `exchange.ccxt_async_config` | None | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) diff --git a/tests/conftest.py b/tests/conftest.py index 0d0511751..4feae6a60 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -129,8 +129,7 @@ def patch_freqtradebot(mocker, config) -> None: patch_exchange(mocker) mocker.patch('freqtrade.freqtradebot.RPCManager._init', MagicMock()) mocker.patch('freqtrade.freqtradebot.RPCManager.send_msg', MagicMock()) - mocker.patch('freqtrade.freqtradebot.FreqtradeBot._refresh_whitelist', - MagicMock(return_value=config['exchange']['pair_whitelist'])) + patch_whitelist(mocker, config) def get_patched_freqtradebot(mocker, config) -> FreqtradeBot: From 61c037f2cf0bb6a43026bc43ad3e2ed4312d0d2b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Oct 2019 13:05:54 +0100 Subject: [PATCH 0836/3421] Fix some typos and comment mistakes --- docs/strategy-customization.md | 14 +++++++------- freqtrade/configuration/timerange.py | 2 +- freqtrade/data/history.py | 2 +- tests/test_timerange.py | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 4d3d9bce5..cef362ffd 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -119,8 +119,8 @@ def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame ### Strategy startup period -Most indicators have an "instable period", in which they are either not available, or the calculation is incorrect. This can lead to inconsistencies, since Freqtrade does not know how long this instable period should be. -To account for this, the strategy has an attribute, `startup_candle_count`. +Most indicators have an instable startup period, in which they are either not available, or the calculation is incorrect. This can lead to inconsistencies, since Freqtrade does not know how long this instable period should be. +To account for this, the strategy can be assigned the `startup_candle_count` attribute. This should be set to the maximum number of candles that the strategy requires to calculate stable indicators. In this example strategy, this should be set to 100 (`startup_candle_count = 100`), since the longest needed history is 100 candles. @@ -132,21 +132,21 @@ In this example strategy, this should be set to 100 (`startup_candle_count = 100 By letting the bot know how much history is needed, backtest trades can start at the specified timerange during backtesting and hyperopt. !!! Warning - `startup_candle_count` should be below `ohlcv_candle_limit` (which is 500 for most exchanges) - since only this amount of candles will be available during trading operations. + `startup_candle_count` should be below `ohlcv_candle_limit` (which is 500 for most exchanges) - since only this amount of candles will be available during Dry-Run/Live Trade operations. #### Example -Let's try to backtest 1 month (January 2019) of 5m candles. +Let's try to backtest 1 month (January 2019) of 5m candles using the an example strategy with EMA100, as above. ``` bash freqtrade backtesting --timerange 20190101-20190201 --ticker-interval 5m ``` -Since backtesting knows it needs 100 candles to generate valid buy-signals, it'll load data from `20190101 - (100 * 5m)` - which is ~2019-12-31 15:30:00. -If this data is available, Indicators will be calculated with this extended timerange. The startup period (Up to 2019-01-01 00:00:00) will then be removed before starting backtesting. +Assuming `startup_candle_count` is set to 100, backtesting knows it needs 100 candles to generate valid buy signals. It will load data from `20190101 - (100 * 5m)` - which is ~2019-12-31 15:30:00. +If this data is available, indicators will be calculated with this extended timerange. The instable startup period (up to 2019-01-01 00:00:00) will then be removed before starting backtesting. !!! Note - If data for the startup-period is not available, then the timerange will be adjusted to account for this startup period - so Backtesting would start at 2019-01-01 08:30:00. + If data for the startup period is not available, then the timerange will be adjusted to account for this startup period - so Backtesting would start at 2019-01-01 08:30:00. ### Buy signal rules diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py index df5c937cf..156f0e1e2 100644 --- a/freqtrade/configuration/timerange.py +++ b/freqtrade/configuration/timerange.py @@ -52,7 +52,7 @@ class TimeRange: """ if (not self.starttype or (startup_candles and min_date.timestamp >= self.startts)): - # If no startts was defined, or test-data starts at the defined test-date + # If no startts was defined, or backtest-data starts at the defined backtest-date logger.warning("Moving start-date by %s candles to account for startup time.", startup_candles) self.startts = (min_date.timestamp + ticker_interval_secs * startup_candles) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index c07b58da2..412b086c0 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -147,7 +147,7 @@ def load_pair_history(pair: str, """ timerange_startup = deepcopy(timerange) - if startup_candles and timerange_startup: + if startup_candles > 0 and timerange_startup: logger.info('Using indicator startup period: %s ...', startup_candles) timerange_startup.subtract_start(timeframe_to_seconds(ticker_interval) * startup_candles) diff --git a/tests/test_timerange.py b/tests/test_timerange.py index d758092ed..5c35535f0 100644 --- a/tests/test_timerange.py +++ b/tests/test_timerange.py @@ -55,7 +55,7 @@ def test_adjust_start_if_necessary(): assert x.startts == 1510694100 + (20 * 300) x = TimeRange('date', 'date', 1510700100, 1510780500) - # Do nothing, startupe is set and different min_date + # Do nothing, startup is set and different min_date x.adjust_start_if_necessary(300, 20, min_date) assert x.startts == 1510694100 + (20 * 300) From e82460bde67475968c2b934b29ab8d9844fc8e82 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Oct 2019 14:24:12 +0100 Subject: [PATCH 0837/3421] Fix create_cum_profit to work with trades that don't open on candle opens --- freqtrade/data/btanalysis.py | 12 +++++++++--- freqtrade/plot/plotting.py | 10 +++++----- tests/data/test_btanalysis.py | 2 +- tests/test_plotting.py | 4 ++-- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 17abae3b6..0f5d395ff 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -150,15 +150,21 @@ def combine_tickers_with_mean(tickers: Dict[str, pd.DataFrame], column: str = "c return df_comb -def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str) -> pd.DataFrame: +def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str, + timeframe: str) -> pd.DataFrame: """ Adds a column `col_name` with the cumulative profit for the given trades array. :param df: DataFrame with date index :param trades: DataFrame containing trades (requires columns close_time and profitperc) + :param col_name: Column name that will be assigned the results + :param timeframe: Timeframe used during the operations :return: Returns df with one additional column, col_name, containing the cumulative profit. """ - # Use groupby/sum().cumsum() to avoid errors when multiple trades sold at the same candle. - df[col_name] = trades.groupby('close_time')['profitperc'].sum().cumsum() + from freqtrade.exchange import timeframe_to_minutes + ticker_minutes = timeframe_to_minutes(timeframe) + # Resample to ticker_interval to make sure trades match candles + _trades_sum = trades.resample(f'{ticker_minutes}min', on='close_time')[['profitperc']].sum() + df.loc[:, col_name] = _trades_sum.cumsum() # Set first value to 0 df.loc[df.iloc[0].name, col_name] = 0 # FFill to get continuous diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 6bd5993b6..bbdb52ca1 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -264,12 +264,12 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame], - trades: pd.DataFrame) -> go.Figure: + trades: pd.DataFrame, timeframe: str) -> go.Figure: # Combine close-values for all pairs, rename columns to "pair" df_comb = combine_tickers_with_mean(tickers, "close") # Add combined cumulative profit - df_comb = create_cum_profit(df_comb, trades, 'cum_profit') + df_comb = create_cum_profit(df_comb, trades, 'cum_profit', timeframe) # Plot the pairs average close prices, and total profit growth avgclose = go.Scatter( @@ -293,7 +293,7 @@ def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame], for pair in pairs: profit_col = f'cum_profit_{pair}' - df_comb = create_cum_profit(df_comb, trades[trades['pair'] == pair], profit_col) + df_comb = create_cum_profit(df_comb, trades[trades['pair'] == pair], profit_col, timeframe) fig = add_profit(fig, 3, df_comb, profit_col, f"Profit {pair}") @@ -382,9 +382,9 @@ def plot_profit(config: Dict[str, Any]) -> None: ) # Filter trades to relevant pairs trades = trades[trades['pair'].isin(plot_elements["pairs"])] - # Create an average close price of all the pairs that were involved. # this could be useful to gauge the overall market trend - fig = generate_profit_graph(plot_elements["pairs"], plot_elements["tickers"], trades) + fig = generate_profit_graph(plot_elements["pairs"], plot_elements["tickers"], + trades, config.get('ticker_interval', '5m')) store_plot_file(fig, filename='freqtrade-profit-plot.html', directory=config['user_data_dir'] / "plot", auto_open=True) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 4068e00e4..a7d646823 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -130,7 +130,7 @@ def test_create_cum_profit(testdatadir): cum_profits = create_cum_profit(df.set_index('date'), bt_data[bt_data["pair"] == 'POWR/BTC'], - "cum_profits") + "cum_profits", timeframe="5m") assert "cum_profits" in cum_profits.columns assert cum_profits.iloc[0]['cum_profits'] == 0 assert cum_profits.iloc[-1]['cum_profits'] == 0.0798005 diff --git a/tests/test_plotting.py b/tests/test_plotting.py index a39b2b76e..1c7d1b392 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -234,7 +234,7 @@ def test_add_profit(testdatadir): cum_profits = create_cum_profit(df.set_index('date'), bt_data[bt_data["pair"] == 'POWR/BTC'], - "cum_profits") + "cum_profits", timeframe="5m") fig1 = add_profit(fig, row=2, data=cum_profits, column='cum_profits', name='Profits') figure = fig1.layout.figure @@ -256,7 +256,7 @@ def test_generate_profit_graph(testdatadir): ) trades = trades[trades['pair'].isin(pairs)] - fig = generate_profit_graph(pairs, tickers, trades) + fig = generate_profit_graph(pairs, tickers, trades, timeframe="5m") assert isinstance(fig, go.Figure) assert fig.layout.title.text == "Freqtrade Profit plot" From 069da224bc28ce199a76908748120c84db2b54a7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Oct 2019 14:30:01 +0100 Subject: [PATCH 0838/3421] Add test to verify this is correct --- tests/data/test_btanalysis.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index a7d646823..a04a2c529 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -2,7 +2,7 @@ from unittest.mock import MagicMock import pytest from arrow import Arrow -from pandas import DataFrame, to_datetime +from pandas import DataFrame, DateOffset, to_datetime from freqtrade.configuration import TimeRange from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, @@ -134,3 +134,21 @@ def test_create_cum_profit(testdatadir): assert "cum_profits" in cum_profits.columns assert cum_profits.iloc[0]['cum_profits'] == 0 assert cum_profits.iloc[-1]['cum_profits'] == 0.0798005 + + +def test_create_cum_profit1(testdatadir): + filename = testdatadir / "backtest-result_test.json" + bt_data = load_backtest_data(filename) + # Move close-time to "off" the candle, to make sure the logic still works + bt_data.loc[:, 'close_time'] = bt_data.loc[:, 'close_time'] + DateOffset(seconds=20) + timerange = TimeRange.parse_timerange("20180110-20180112") + + df = load_pair_history(pair="POWR/BTC", ticker_interval='5m', + datadir=testdatadir, timerange=timerange) + + cum_profits = create_cum_profit(df.set_index('date'), + bt_data[bt_data["pair"] == 'POWR/BTC'], + "cum_profits", timeframe="5m") + assert "cum_profits" in cum_profits.columns + assert cum_profits.iloc[0]['cum_profits'] == 0 + assert cum_profits.iloc[-1]['cum_profits'] == 0.0798005 From 466a3b87fcda0001ea4325ba0aef2c0457d59679 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Oct 2019 16:13:31 +0100 Subject: [PATCH 0839/3421] Enhance tests to cover precision_filter correctly --- tests/conftest.py | 60 +++++++++++++++++++++++++++++++++ tests/pairlist/test_pairlist.py | 33 +++++++++++------- 2 files changed, 81 insertions(+), 12 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 4feae6a60..a291a6676 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -572,6 +572,44 @@ def get_markets(): } +@pytest.fixture +def shitcoinmarkets(markets): + """ + Fixture with shitcoin markets - used to test filters in pairlists + """ + shitmarkets = deepcopy(markets) + shitmarkets.update({'HOT/BTC': { + 'id': 'HOTBTC', + 'symbol': 'HOT/BTC', + 'base': 'HOT', + 'quote': 'BTC', + 'active': True, + 'precision': { + 'base': 8, + 'quote': 8, + 'amount': 0, + 'price': 8 + }, + 'limits': { + 'amount': { + 'min': 1.0, + 'max': 90000000.0 + }, + 'price': { + 'min': None, + 'max': None + }, + 'cost': { + 'min': 0.001, + 'max': None + } + }, + 'info': {}, + }, + }) + return shitmarkets + + @pytest.fixture def markets_empty(): return MagicMock(return_value=[]) @@ -866,6 +904,28 @@ def tickers(): 'quoteVolume': 1215.14489611, 'info': {} }, + 'HOT/BTC': { + 'symbol': 'HOT/BTC', + 'timestamp': 1572273518661, + 'datetime': '2019-10-28T14:38:38.661Z', + 'high': 0.00000011, + 'low': 0.00000009, + 'bid': 0.0000001, + 'bidVolume': 1476027288.0, + 'ask': 0.00000011, + 'askVolume': 820153831.0, + 'vwap': 0.0000001, + 'open': 0.00000009, + 'close': 0.00000011, + 'last': 0.00000011, + 'previousClose': 0.00000009, + 'change': 0.00000002, + 'percentage': 22.222, + 'average': None, + 'baseVolume': 1442290324.0, + 'quoteVolume': 143.78311994, + 'info': {} + }, 'ETH/USDT': { 'symbol': 'ETH/USDT', 'timestamp': 1522014804118, diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 929fc0ba0..6f050a77d 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -2,11 +2,12 @@ from unittest.mock import MagicMock, PropertyMock +import pytest + from freqtrade import OperationalException from freqtrade.constants import AVAILABLE_PAIRLISTS from freqtrade.resolvers import PairListResolver -from tests.conftest import get_patched_freqtradebot -import pytest +from tests.conftest import get_patched_freqtradebot, log_has_re # whitelist, blacklist @@ -67,20 +68,25 @@ def test_refresh_pairlists(mocker, markets, whitelist_conf): assert whitelist_conf['exchange']['pair_blacklist'] == freqtradebot.pairlists.blacklist -def test_refresh_pairlist_dynamic(mocker, markets, tickers, whitelist_conf): +def test_refresh_pairlist_dynamic(mocker, shitcoinmarkets, tickers, whitelist_conf): whitelist_conf['pairlist'] = {'method': 'VolumePairList', - 'config': {'number_assets': 5} + 'config': {'number_assets': 5, + 'precision_filter': False} } + mocker.patch.multiple( 'freqtrade.exchange.Exchange', - markets=PropertyMock(return_value=markets), get_tickers=tickers, exchange_has=MagicMock(return_value=True) ) freqtradebot = get_patched_freqtradebot(mocker, whitelist_conf) - + # Remock markets with shitcoinmarkets since get_patched_freqtradebot uses the markets fixture + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=shitcoinmarkets), + ) # argument: use the whitelist dynamically by exchange-volume - whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC'] + whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC'] freqtradebot.pairlists.refresh_pairlist() assert whitelist == freqtradebot.pairlists.whitelist @@ -108,19 +114,20 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): @pytest.mark.parametrize("precision_filter,base_currency,key,whitelist_result", [ - (False, "BTC", "quoteVolume", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC']), - (False, "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC']), + (False, "BTC", "quoteVolume", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC']), + (False, "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'HOT/BTC']), (False, "USDT", "quoteVolume", ['ETH/USDT']), (False, "ETH", "quoteVolume", []), # this replaces tests that were removed from test_exchange (True, "BTC", "quoteVolume", ["LTC/BTC", "ETH/BTC", "TKN/BTC"]), (True, "BTC", "bidVolume", ["LTC/BTC", "TKN/BTC", "ETH/BTC"]) ]) -def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, markets, tickers, base_currency, key, - whitelist_result, precision_filter) -> None: +def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, + precision_filter, base_currency, key, whitelist_result, + caplog) -> None: whitelist_conf['pairlist']['method'] = 'VolumePairList' mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) - mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) + mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=shitcoinmarkets)) mocker.patch('freqtrade.exchange.Exchange.get_tickers', tickers) mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, p, r: round(r, 8)) @@ -128,6 +135,8 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, markets, tickers, freqtrade.config['stake_currency'] = base_currency whitelist = freqtrade.pairlists._gen_pair_whitelist(base_currency=base_currency, key=key) assert sorted(whitelist) == sorted(whitelist_result) + if precision_filter: + assert log_has_re(r'^Removed .* from whitelist, because stop price .* would be <= stop limit.*', caplog) def test_gen_pair_whitelist_not_supported(mocker, default_conf, tickers) -> None: From 4ff035537b01cf454a3cb34b60f232ad48972a2f Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Oct 2019 16:21:00 +0100 Subject: [PATCH 0840/3421] Simplify precision_filter code --- config_full.json.example | 2 +- docs/configuration.md | 5 ++--- freqtrade/pairlist/VolumePairList.py | 21 +++++++++++---------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index 5789e49ac..a5af0f7a6 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -55,7 +55,7 @@ "config": { "number_assets": 20, "sort_key": "quoteVolume", - "precision_filter": false + "precision_filter": true } }, "exchange": { diff --git a/docs/configuration.md b/docs/configuration.md index 1ad13c87a..03f15e07d 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -423,8 +423,7 @@ section of the configuration. * `VolumePairList` * It selects `number_assets` top pairs based on `sort_key`, which can be one of `askVolume`, `bidVolume` and `quoteVolume`, defaults to `quoteVolume`. - * There is a possibility to filter low-value coins that would not allow setting a stop loss -(set `precision_filter` parameter to `true` for this). + * By default, low-value coins that would not allow setting a stop loss are filtered out. (set `precision_filter` parameter to `false` to disable this behaviour). * `VolumePairList` does not consider `pair_whitelist`, but builds this automatically based the pairlist configuration. * Pairs in `pair_blacklist` are not considered for VolumePairList, even if all other filters would match. @@ -440,7 +439,7 @@ Example: "config": { "number_assets": 20, "sort_key": "quoteVolume", - "precision_filter": false + "precision_filter": true } }, ``` diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 5f53cd17b..5e20f0fb1 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -26,7 +26,7 @@ class VolumePairList(IPairList): 'for "pairlist.config.number_assets"') self._number_pairs = self._whitelistconf['number_assets'] self._sort_key = self._whitelistconf.get('sort_key', 'quoteVolume') - self._precision_filter = self._whitelistconf.get('precision_filter', False) + self._precision_filter = self._whitelistconf.get('precision_filter', True) if not self._freqtrade.exchange.exchange_has('fetchTickers'): raise OperationalException( @@ -76,18 +76,19 @@ class VolumePairList(IPairList): valid_tickers = [t for t in sorted_tickers if t["symbol"] in valid_pairs] if self._freqtrade.strategy.stoploss is not None and self._precision_filter: + # Precalculate correct stoploss value + stoploss = 1 - abs(self._freqtrade.strategy.stoploss) - stop_prices = [self._freqtrade.get_target_bid(t["symbol"], t) - * (1 - abs(self._freqtrade.strategy.stoploss)) for t in valid_tickers] - rates = [sp * 0.99 for sp in stop_prices] - logger.debug("\n".join([f"{sp} : {r}" for sp, r in zip(stop_prices[:10], rates[:10])])) for i, t in enumerate(valid_tickers): - sp = self._freqtrade.exchange.symbol_price_prec(t["symbol"], stop_prices[i]) - r = self._freqtrade.exchange.symbol_price_prec(t["symbol"], rates[i]) - logger.debug(f"{t['symbol']} - {sp} : {r}") - if sp <= r: + stop_price = (self._freqtrade.get_target_bid(t["symbol"], t) * stoploss) + # Adjust stop-prices to precision + sp = self._freqtrade.exchange.symbol_price_prec(t["symbol"], stop_price) + stop_gap_price = self._freqtrade.exchange.symbol_price_prec(t["symbol"], + stop_price * 0.99) + logger.debug(f"{t['symbol']} - {sp} : {stop_gap_price}") + if sp <= stop_gap_price: logger.info(f"Removed {t['symbol']} from whitelist, " - f"because stop price {sp} would be <= stop limit {r}") + f"because stop price {sp} would be <= stop limit {stop_gap_price}") valid_tickers.remove(t) pairs = [s['symbol'] for s in valid_tickers] From d706571e6f9d29b6f843377bb7a2c0a62e778e6c Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Oct 2019 16:25:01 +0100 Subject: [PATCH 0841/3421] Extract precision_filter to seperate function --- freqtrade/pairlist/VolumePairList.py | 42 +++++++++++++++++++--------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 5e20f0fb1..44dbd0ecf 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -56,6 +56,27 @@ class VolumePairList(IPairList): self._whitelist = self._gen_pair_whitelist( self._config['stake_currency'], self._sort_key) + def _validate_precision_filter(self, ticker: dict, stoploss: float) -> bool: + """ + Check if pair has enough room to add a stoploss to avoid "unsellable" buys of very + low value pairs. + :param ticker: ticker dict as returned from ccxt.load_markets() + :param stoploss: stoploss value as set in the configuration + (already cleaned to be guaranteed negative) + :return: True if the pair can stay, false if it should be removed + """ + stop_price = (self._freqtrade.get_target_bid(ticker["symbol"], ticker) * stoploss) + # Adjust stop-prices to precision + sp = self._freqtrade.exchange.symbol_price_prec(ticker["symbol"], stop_price) + stop_gap_price = self._freqtrade.exchange.symbol_price_prec(ticker["symbol"], + stop_price * 0.99) + logger.debug(f"{ticker['symbol']} - {sp} : {stop_gap_price}") + if sp <= stop_gap_price: + logger.info(f"Removed {ticker['symbol']} from whitelist, " + f"because stop price {sp} would be <= stop limit {stop_gap_price}") + return False + return True + @cached(TTLCache(maxsize=1, ttl=1800)) def _gen_pair_whitelist(self, base_currency: str, key: str) -> List[str]: """ @@ -75,21 +96,16 @@ class VolumePairList(IPairList): valid_pairs = self._validate_whitelist([s['symbol'] for s in sorted_tickers]) valid_tickers = [t for t in sorted_tickers if t["symbol"] in valid_pairs] - if self._freqtrade.strategy.stoploss is not None and self._precision_filter: - # Precalculate correct stoploss value + stoploss = None + if self._freqtrade.strategy.stoploss is not None: + # Precalculate sanitized stoploss value to avoid recalculation for every pair stoploss = 1 - abs(self._freqtrade.strategy.stoploss) - for i, t in enumerate(valid_tickers): - stop_price = (self._freqtrade.get_target_bid(t["symbol"], t) * stoploss) - # Adjust stop-prices to precision - sp = self._freqtrade.exchange.symbol_price_prec(t["symbol"], stop_price) - stop_gap_price = self._freqtrade.exchange.symbol_price_prec(t["symbol"], - stop_price * 0.99) - logger.debug(f"{t['symbol']} - {sp} : {stop_gap_price}") - if sp <= stop_gap_price: - logger.info(f"Removed {t['symbol']} from whitelist, " - f"because stop price {sp} would be <= stop limit {stop_gap_price}") - valid_tickers.remove(t) + for t in valid_tickers: + # Filter out assets which would not allow setting a stoploss + if (stoploss and self._precision_filter + and not self._validate_precision_filter(t, stoploss)): + valid_tickers.remove(t) pairs = [s['symbol'] for s in valid_tickers] logger.info(f"Searching pairs: {pairs[:self._number_pairs]}") From d803d86f4d846ba8e67c2bde84b0de5efaea1ee6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 29 Oct 2019 06:53:26 +0100 Subject: [PATCH 0842/3421] Add low_price_percent_filter --- config_full.json.example | 3 ++- docs/configuration.md | 5 ++++- freqtrade/pairlist/VolumePairList.py | 23 +++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index a5af0f7a6..5ae8021d5 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -55,7 +55,8 @@ "config": { "number_assets": 20, "sort_key": "quoteVolume", - "precision_filter": true + "precision_filter": true, + "low_price_percent_filter": null } }, "exchange": { diff --git a/docs/configuration.md b/docs/configuration.md index 03f15e07d..c7e0dac31 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -426,6 +426,8 @@ section of the configuration. * By default, low-value coins that would not allow setting a stop loss are filtered out. (set `precision_filter` parameter to `false` to disable this behaviour). * `VolumePairList` does not consider `pair_whitelist`, but builds this automatically based the pairlist configuration. * Pairs in `pair_blacklist` are not considered for VolumePairList, even if all other filters would match. + * `low_price_percent_filter` allows filtering of pairs where a raise of 1 price unit is below the `low_price_percent_filter` ratio. + Calculation example: Min price precision is 8 decimals. If price is 0.00000011 - one step would be 0.00000012 - which is almost 10% higher than the previous value. Example: @@ -439,7 +441,8 @@ Example: "config": { "number_assets": 20, "sort_key": "quoteVolume", - "precision_filter": true + "precision_filter": true, + "low_price_percent_filter": 0.03 } }, ``` diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 44dbd0ecf..4a6768efa 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -27,6 +27,8 @@ class VolumePairList(IPairList): self._number_pairs = self._whitelistconf['number_assets'] self._sort_key = self._whitelistconf.get('sort_key', 'quoteVolume') self._precision_filter = self._whitelistconf.get('precision_filter', True) + self._low_price_percent_filter = self._whitelistconf.get('low_price_percent_filter', None) + print(self._whitelistconf) if not self._freqtrade.exchange.exchange_has('fetchTickers'): raise OperationalException( @@ -77,6 +79,23 @@ class VolumePairList(IPairList): return False return True + def _validate_precision_filter_lowprice(self, ticker) -> bool: + """ + Check if if one price-step is > than a certain barrier. + :param ticker: ticker dict as returned from ccxt.load_markets() + :param precision: Precision + :return: True if the pair can stay, false if it should be removed + """ + precision = self._freqtrade.exchange.markets[ticker['symbol']]['precision']['price'] + + compare = ticker['last'] + 1 / pow(10, precision) + changeperc = (compare - ticker['last']) / ticker['last'] + if changeperc > self._low_price_percent_filter: + logger.info(f"Removed {ticker['symbol']} from whitelist, " + f"because 1 unit is {changeperc * 100:.3f}%") + return False + return True + @cached(TTLCache(maxsize=1, ttl=1800)) def _gen_pair_whitelist(self, base_currency: str, key: str) -> List[str]: """ @@ -106,6 +125,10 @@ class VolumePairList(IPairList): if (stoploss and self._precision_filter and not self._validate_precision_filter(t, stoploss)): valid_tickers.remove(t) + continue + if self._low_price_percent_filter and not self._validate_precision_filter_lowprice(t,): + valid_tickers.remove(t) + continue pairs = [s['symbol'] for s in valid_tickers] logger.info(f"Searching pairs: {pairs[:self._number_pairs]}") From de2cc58b0cf0024256bd0c2c924d080838b5b86f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 29 Oct 2019 10:39:27 +0100 Subject: [PATCH 0843/3421] Final cleanups and added tests --- config_full.json.example | 2 +- docs/configuration.md | 4 ++- freqtrade/pairlist/VolumePairList.py | 15 +++++---- tests/conftest.py | 50 ++++++++++++++++++++++++++++ tests/pairlist/test_pairlist.py | 36 ++++++++++++-------- 5 files changed, 85 insertions(+), 22 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index 5ae8021d5..5935de392 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -56,7 +56,7 @@ "number_assets": 20, "sort_key": "quoteVolume", "precision_filter": true, - "low_price_percent_filter": null + "low_price_percent_filter": 0 } }, "exchange": { diff --git a/docs/configuration.md b/docs/configuration.md index c7e0dac31..7ccb6840a 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -427,7 +427,9 @@ section of the configuration. * `VolumePairList` does not consider `pair_whitelist`, but builds this automatically based the pairlist configuration. * Pairs in `pair_blacklist` are not considered for VolumePairList, even if all other filters would match. * `low_price_percent_filter` allows filtering of pairs where a raise of 1 price unit is below the `low_price_percent_filter` ratio. + This option is disabled by default, and will only apply if set to <> 0. Calculation example: Min price precision is 8 decimals. If price is 0.00000011 - one step would be 0.00000012 - which is almost 10% higher than the previous value. + Example: @@ -442,7 +444,7 @@ Example: "number_assets": 20, "sort_key": "quoteVolume", "precision_filter": true, - "low_price_percent_filter": 0.03 + "low_price_percent_filter": 0.05 } }, ``` diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 4a6768efa..7c17c6d57 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -5,11 +5,14 @@ Provides lists as configured in config.json """ import logging +from copy import deepcopy from typing import List + from cachetools import TTLCache, cached -from freqtrade.pairlist.IPairList import IPairList from freqtrade import OperationalException +from freqtrade.pairlist.IPairList import IPairList + logger = logging.getLogger(__name__) SORT_VALUES = ['askVolume', 'bidVolume', 'quoteVolume'] @@ -28,7 +31,6 @@ class VolumePairList(IPairList): self._sort_key = self._whitelistconf.get('sort_key', 'quoteVolume') self._precision_filter = self._whitelistconf.get('precision_filter', True) self._low_price_percent_filter = self._whitelistconf.get('low_price_percent_filter', None) - print(self._whitelistconf) if not self._freqtrade.exchange.exchange_has('fetchTickers'): raise OperationalException( @@ -64,10 +66,10 @@ class VolumePairList(IPairList): low value pairs. :param ticker: ticker dict as returned from ccxt.load_markets() :param stoploss: stoploss value as set in the configuration - (already cleaned to be guaranteed negative) + (already cleaned to be 1 - stoploss) :return: True if the pair can stay, false if it should be removed """ - stop_price = (self._freqtrade.get_target_bid(ticker["symbol"], ticker) * stoploss) + stop_price = self._freqtrade.get_target_bid(ticker["symbol"], ticker) * stoploss # Adjust stop-prices to precision sp = self._freqtrade.exchange.symbol_price_prec(ticker["symbol"], stop_price) stop_gap_price = self._freqtrade.exchange.symbol_price_prec(ticker["symbol"], @@ -120,10 +122,11 @@ class VolumePairList(IPairList): # Precalculate sanitized stoploss value to avoid recalculation for every pair stoploss = 1 - abs(self._freqtrade.strategy.stoploss) - for t in valid_tickers: + # Copy list since we're modifying this list + for t in deepcopy(valid_tickers): # Filter out assets which would not allow setting a stoploss if (stoploss and self._precision_filter - and not self._validate_precision_filter(t, stoploss)): + and not self._validate_precision_filter(t, stoploss)): valid_tickers.remove(t) continue if self._low_price_percent_filter and not self._validate_precision_filter_lowprice(t,): diff --git a/tests/conftest.py b/tests/conftest.py index a291a6676..d551596f0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -606,6 +606,34 @@ def shitcoinmarkets(markets): }, 'info': {}, }, + 'FUEL/BTC': { + 'id': 'FUELBTC', + 'symbol': 'FUEL/BTC', + 'base': 'FUEL', + 'quote': 'BTC', + 'active': True, + 'precision': { + 'base': 8, + 'quote': 8, + 'amount': 0, + 'price': 8 + }, + 'limits': { + 'amount': { + 'min': 1.0, + 'max': 90000000.0 + }, + 'price': { + 'min': 1e-08, + 'max': 1000.0 + }, + 'cost': { + 'min': 0.001, + 'max': None + } + }, + 'info': {}, + }, }) return shitmarkets @@ -926,6 +954,28 @@ def tickers(): 'quoteVolume': 143.78311994, 'info': {} }, + 'FUEL/BTC': { + 'symbol': 'FUEL/BTC', + 'timestamp': 1572340250771, + 'datetime': '2019-10-29T09:10:50.771Z', + 'high': 0.00000040, + 'low': 0.00000035, + 'bid': 0.00000036, + 'bidVolume': 8932318.0, + 'ask': 0.00000037, + 'askVolume': 10140774.0, + 'vwap': 0.00000037, + 'open': 0.00000039, + 'close': 0.00000037, + 'last': 0.00000037, + 'previousClose': 0.00000038, + 'change': -0.00000002, + 'percentage': -5.128, + 'average': None, + 'baseVolume': 168927742.0, + 'quoteVolume': 62.68220262, + 'info': {} + }, 'ETH/USDT': { 'symbol': 'ETH/USDT', 'timestamp': 1522014804118, diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 6f050a77d..ac27d1c8e 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -26,7 +26,7 @@ def whitelist_conf(default_conf): 'BLK/BTC' ] default_conf['pairlist'] = {'method': 'StaticPairList', - 'config': {'number_assets': 3} + 'config': {'number_assets': 5} } return default_conf @@ -86,7 +86,7 @@ def test_refresh_pairlist_dynamic(mocker, shitcoinmarkets, tickers, whitelist_co markets=PropertyMock(return_value=shitcoinmarkets), ) # argument: use the whitelist dynamically by exchange-volume - whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC'] + whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC', 'FUEL/BTC'] freqtradebot.pairlists.refresh_pairlist() assert whitelist == freqtradebot.pairlists.whitelist @@ -113,30 +113,38 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): assert set(whitelist) == set(pairslist) -@pytest.mark.parametrize("precision_filter,base_currency,key,whitelist_result", [ - (False, "BTC", "quoteVolume", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC']), - (False, "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'HOT/BTC']), - (False, "USDT", "quoteVolume", ['ETH/USDT']), - (False, "ETH", "quoteVolume", []), # this replaces tests that were removed from test_exchange - (True, "BTC", "quoteVolume", ["LTC/BTC", "ETH/BTC", "TKN/BTC"]), - (True, "BTC", "bidVolume", ["LTC/BTC", "TKN/BTC", "ETH/BTC"]) +@pytest.mark.parametrize("precision_filter,low_price_filter,base_currency,key,whitelist_result", [ + (False, 0, "BTC", "quoteVolume", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC', 'FUEL/BTC']), + (False, 0, "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'HOT/BTC', 'FUEL/BTC']), + (False, 0, "USDT", "quoteVolume", ['ETH/USDT']), + (False, 0, "ETH", "quoteVolume", []), + (True, 0, "BTC", "quoteVolume", ["LTC/BTC", "ETH/BTC", "TKN/BTC", 'FUEL/BTC']), + (True, 0, "BTC", "bidVolume", ["LTC/BTC", "TKN/BTC", "ETH/BTC", 'FUEL/BTC']), + (False, 0.03, "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'FUEL/BTC']), + # Hot is removed by precision_filter, Fuel by low_price_filter. + (True, 0.02, "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC']), ]) def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, - precision_filter, base_currency, key, whitelist_result, - caplog) -> None: + precision_filter, low_price_filter, base_currency, key, + whitelist_result, caplog) -> None: whitelist_conf['pairlist']['method'] = 'VolumePairList' + whitelist_conf['pairlist']['config']['precision_filter'] = precision_filter + whitelist_conf['pairlist']['config']['low_price_percent_filter'] = low_price_filter + mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=shitcoinmarkets)) mocker.patch('freqtrade.exchange.Exchange.get_tickers', tickers) - mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, p, r: round(r, 8)) - freqtrade.pairlists._precision_filter = precision_filter freqtrade.config['stake_currency'] = base_currency whitelist = freqtrade.pairlists._gen_pair_whitelist(base_currency=base_currency, key=key) assert sorted(whitelist) == sorted(whitelist_result) if precision_filter: - assert log_has_re(r'^Removed .* from whitelist, because stop price .* would be <= stop limit.*', caplog) + assert log_has_re(r'^Removed .* from whitelist, because stop price .* ' + r'would be <= stop limit.*', caplog) + + if low_price_filter: + assert log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) def test_gen_pair_whitelist_not_supported(mocker, default_conf, tickers) -> None: From 9c180e587bb96bc9d70dc257ca4390ac513aa5cc Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 30 Oct 2019 04:04:28 +0300 Subject: [PATCH 0844/3421] Log to stderr --- freqtrade/loggers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index 90b8905e5..e00f4fc11 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -33,8 +33,8 @@ def setup_logging(config: Dict[str, Any]) -> None: # Log level verbosity = config['verbosity'] - # Log to stdout, not stderr - log_handlers: List[logging.Handler] = [logging.StreamHandler(sys.stdout)] + # Log to stderr + log_handlers: List[logging.Handler] = [logging.StreamHandler(sys.stderr)] if config.get('logfile'): log_handlers.append(RotatingFileHandler(config['logfile'], From 6fe7b13e37bb4b198c4f01a3a59bdd33534991de Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 09:20:56 +0100 Subject: [PATCH 0845/3421] Replace coins in whitelist with existing ones --- config.json.example | 2 +- config_full.json.example | 2 +- tests/config_test_comments.json | 2 +- tests/data/test_btanalysis.py | 8 ++++---- tests/optimize/test_hyperopt.py | 2 +- tests/test_plotting.py | 10 +++++----- tests/testdata/{POWR_BTC-5m.json => TRX_BTC-5m.json} | 0 tests/testdata/backtest-result_test.json | 2 +- tests/testdata/pairs.json | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) rename tests/testdata/{POWR_BTC-5m.json => TRX_BTC-5m.json} (100%) diff --git a/config.json.example b/config.json.example index 419019030..9a6dafd04 100644 --- a/config.json.example +++ b/config.json.example @@ -44,7 +44,7 @@ "ZEC/BTC", "XLM/BTC", "NXT/BTC", - "POWR/BTC", + "TRX/BTC", "ADA/BTC", "XMR/BTC" ], diff --git a/config_full.json.example b/config_full.json.example index 5789e49ac..5edc19419 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -78,7 +78,7 @@ "ZEC/BTC", "XLM/BTC", "NXT/BTC", - "POWR/BTC", + "TRX/BTC", "ADA/BTC", "XMR/BTC" ], diff --git a/tests/config_test_comments.json b/tests/config_test_comments.json index 8af39d6ba..8f41b08fa 100644 --- a/tests/config_test_comments.json +++ b/tests/config_test_comments.json @@ -78,7 +78,7 @@ "ZEC/BTC", "XLM/BTC", "NXT/BTC", - "POWR/BTC", + "TRX/BTC", "ADA/BTC", "XMR/BTC" ], diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index a04a2c529..78781cffd 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -125,11 +125,11 @@ def test_create_cum_profit(testdatadir): bt_data = load_backtest_data(filename) timerange = TimeRange.parse_timerange("20180110-20180112") - df = load_pair_history(pair="POWR/BTC", ticker_interval='5m', + df = load_pair_history(pair="TRX/BTC", ticker_interval='5m', datadir=testdatadir, timerange=timerange) cum_profits = create_cum_profit(df.set_index('date'), - bt_data[bt_data["pair"] == 'POWR/BTC'], + bt_data[bt_data["pair"] == 'TRX/BTC'], "cum_profits", timeframe="5m") assert "cum_profits" in cum_profits.columns assert cum_profits.iloc[0]['cum_profits'] == 0 @@ -143,11 +143,11 @@ def test_create_cum_profit1(testdatadir): bt_data.loc[:, 'close_time'] = bt_data.loc[:, 'close_time'] + DateOffset(seconds=20) timerange = TimeRange.parse_timerange("20180110-20180112") - df = load_pair_history(pair="POWR/BTC", ticker_interval='5m', + df = load_pair_history(pair="TRX/BTC", ticker_interval='5m', datadir=testdatadir, timerange=timerange) cum_profits = create_cum_profit(df.set_index('date'), - bt_data[bt_data["pair"] == 'POWR/BTC'], + bt_data[bt_data["pair"] == 'TRX/BTC'], "cum_profits", timeframe="5m") assert "cum_profits" in cum_profits.columns assert cum_profits.iloc[0]['cum_profits'] == 0 diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index d0c37c40d..675bbd62e 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -516,7 +516,7 @@ def test_generate_optimizer(mocker, default_conf) -> None: default_conf.update({'hyperopt_min_trades': 1}) trades = [ - ('POWR/BTC', 0.023117, 0.000233, 100) + ('TRX/BTC', 0.023117, 0.000233, 100) ] labels = ['currency', 'profit_percent', 'profit_abs', 'trade_duration'] backtest_result = pd.DataFrame.from_records(trades, columns=labels) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 1c7d1b392..4a6efcd8e 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -53,10 +53,10 @@ def test_init_plotscript(default_conf, mocker, testdatadir): assert "trades" in ret assert "pairs" in ret - default_conf['pairs'] = ["POWR/BTC", "ADA/BTC"] + default_conf['pairs'] = ["TRX/BTC", "ADA/BTC"] ret = init_plotscript(default_conf) assert "tickers" in ret - assert "POWR/BTC" in ret["tickers"] + assert "TRX/BTC" in ret["tickers"] assert "ADA/BTC" in ret["tickers"] @@ -228,12 +228,12 @@ def test_add_profit(testdatadir): bt_data = load_backtest_data(filename) timerange = TimeRange.parse_timerange("20180110-20180112") - df = history.load_pair_history(pair="POWR/BTC", ticker_interval='5m', + df = history.load_pair_history(pair="TRX/BTC", ticker_interval='5m', datadir=testdatadir, timerange=timerange) fig = generate_empty_figure() cum_profits = create_cum_profit(df.set_index('date'), - bt_data[bt_data["pair"] == 'POWR/BTC'], + bt_data[bt_data["pair"] == 'TRX/BTC'], "cum_profits", timeframe="5m") fig1 = add_profit(fig, row=2, data=cum_profits, column='cum_profits', name='Profits') @@ -247,7 +247,7 @@ def test_generate_profit_graph(testdatadir): filename = testdatadir / "backtest-result_test.json" trades = load_backtest_data(filename) timerange = TimeRange.parse_timerange("20180110-20180112") - pairs = ["POWR/BTC", "ADA/BTC"] + pairs = ["TRX/BTC", "ADA/BTC"] tickers = history.load_data(datadir=testdatadir, pairs=pairs, diff --git a/tests/testdata/POWR_BTC-5m.json b/tests/testdata/TRX_BTC-5m.json similarity index 100% rename from tests/testdata/POWR_BTC-5m.json rename to tests/testdata/TRX_BTC-5m.json diff --git a/tests/testdata/backtest-result_test.json b/tests/testdata/backtest-result_test.json index 8701451dc..dce22acaf 100644 --- a/tests/testdata/backtest-result_test.json +++ b/tests/testdata/backtest-result_test.json @@ -1 +1 @@ -[["POWR/BTC",0.03990025,1515568500.0,1515568800.0,27,5,9.64e-05,0.00010074887218045112,false,"roi"],["ADA/BTC",0.03990025,1515568500.0,1515569400.0,27,15,4.756e-05,4.9705563909774425e-05,false,"roi"],["XLM/BTC",0.03990025,1515569100.0,1515569700.0,29,10,3.339e-05,3.489631578947368e-05,false,"roi"],["POWR/BTC",0.03990025,1515569100.0,1515570000.0,29,15,9.696e-05,0.00010133413533834584,false,"roi"],["ETH/BTC",-0.0,1515569700.0,1515573300.0,31,60,0.0943,0.09477268170426063,false,"roi"],["XMR/BTC",0.00997506,1515570000.0,1515571800.0,32,30,0.02719607,0.02760503345864661,false,"roi"],["ZEC/BTC",0.0,1515572100.0,1515578100.0,39,100,0.04634952,0.046581848421052625,false,"roi"],["NXT/BTC",-0.0,1515595500.0,1515599400.0,117,65,3.066e-05,3.081368421052631e-05,false,"roi"],["LTC/BTC",0.0,1515602100.0,1515604500.0,139,40,0.0168999,0.016984611278195488,false,"roi"],["ETH/BTC",-0.0,1515602400.0,1515604800.0,140,40,0.09132568,0.0917834528320802,false,"roi"],["ETH/BTC",-0.0,1515610200.0,1515613500.0,166,55,0.08898003,0.08942604518796991,false,"roi"],["ETH/BTC",0.0,1515622500.0,1515625200.0,207,45,0.08560008,0.08602915308270676,false,"roi"],["ETC/BTC",0.00997506,1515624600.0,1515626400.0,214,30,0.00249083,0.0025282860902255634,false,"roi"],["NXT/BTC",-0.0,1515626100.0,1515629700.0,219,60,3.022e-05,3.037147869674185e-05,false,"roi"],["ETC/BTC",0.01995012,1515627600.0,1515629100.0,224,25,0.002437,0.0024980776942355883,false,"roi"],["ZEC/BTC",0.00997506,1515628800.0,1515630900.0,228,35,0.04771803,0.04843559436090225,false,"roi"],["XLM/BTC",-0.10448878,1515642000.0,1515644700.0,272,45,3.651e-05,3.2859000000000005e-05,false,"stop_loss"],["ETH/BTC",0.00997506,1515642900.0,1515644700.0,275,30,0.08824105,0.08956798308270676,false,"roi"],["ETC/BTC",-0.0,1515643200.0,1515646200.0,276,50,0.00243,0.002442180451127819,false,"roi"],["ZEC/BTC",0.01995012,1515645000.0,1515646500.0,282,25,0.04545064,0.046589753784461146,false,"roi"],["XLM/BTC",0.01995012,1515645000.0,1515646200.0,282,20,3.372e-05,3.456511278195488e-05,false,"roi"],["XMR/BTC",0.01995012,1515646500.0,1515647700.0,287,20,0.02644,0.02710265664160401,false,"roi"],["ETH/BTC",-0.0,1515669600.0,1515672000.0,364,40,0.08812,0.08856170426065162,false,"roi"],["XMR/BTC",-0.0,1515670500.0,1515672900.0,367,40,0.02683577,0.026970285137844607,false,"roi"],["ADA/BTC",0.01995012,1515679200.0,1515680700.0,396,25,4.919e-05,5.04228320802005e-05,false,"roi"],["ETH/BTC",-0.0,1515698700.0,1515702900.0,461,70,0.08784896,0.08828930566416039,false,"roi"],["ADA/BTC",-0.0,1515710100.0,1515713400.0,499,55,5.105e-05,5.130588972431077e-05,false,"roi"],["XLM/BTC",0.00997506,1515711300.0,1515713100.0,503,30,3.96e-05,4.019548872180451e-05,false,"roi"],["NXT/BTC",-0.0,1515711300.0,1515713700.0,503,40,2.885e-05,2.899461152882205e-05,false,"roi"],["XMR/BTC",0.00997506,1515713400.0,1515715500.0,510,35,0.02645,0.026847744360902256,false,"roi"],["ZEC/BTC",-0.0,1515714900.0,1515719700.0,515,80,0.048,0.04824060150375939,false,"roi"],["XLM/BTC",0.01995012,1515791700.0,1515793200.0,771,25,4.692e-05,4.809593984962405e-05,false,"roi"],["ETC/BTC",-0.0,1515804900.0,1515824400.0,815,325,0.00256966,0.0025825405012531327,false,"roi"],["ADA/BTC",0.0,1515840900.0,1515843300.0,935,40,6.262e-05,6.293388471177944e-05,false,"roi"],["XLM/BTC",0.0,1515848700.0,1516025400.0,961,2945,4.73e-05,4.753709273182957e-05,false,"roi"],["ADA/BTC",-0.0,1515850200.0,1515854700.0,966,75,6.063e-05,6.0933909774436085e-05,false,"roi"],["POWR/BTC",-0.0,1515850800.0,1515886200.0,968,590,0.00011082,0.00011137548872180449,false,"roi"],["ADA/BTC",-0.0,1515856500.0,1515858900.0,987,40,5.93e-05,5.9597243107769415e-05,false,"roi"],["ZEC/BTC",-0.0,1515861000.0,1515863400.0,1002,40,0.04850003,0.04874313791979949,false,"roi"],["ETH/BTC",-0.0,1515881100.0,1515911100.0,1069,500,0.09825019,0.09874267215538847,false,"roi"],["ADA/BTC",0.0,1515889200.0,1515970500.0,1096,1355,6.018e-05,6.048165413533834e-05,false,"roi"],["ETH/BTC",-0.0,1515933900.0,1515936300.0,1245,40,0.09758999,0.0980791628822055,false,"roi"],["ETC/BTC",0.00997506,1515943800.0,1515945600.0,1278,30,0.00311,0.0031567669172932328,false,"roi"],["ETC/BTC",-0.0,1515962700.0,1515968100.0,1341,90,0.00312401,0.003139669197994987,false,"roi"],["LTC/BTC",0.0,1515972900.0,1515976200.0,1375,55,0.0174679,0.017555458395989976,false,"roi"],["DASH/BTC",-0.0,1515973500.0,1515975900.0,1377,40,0.07346846,0.07383672295739348,false,"roi"],["ETH/BTC",-0.0,1515983100.0,1515985500.0,1409,40,0.097994,0.09848519799498745,false,"roi"],["ETH/BTC",-0.0,1516000800.0,1516003200.0,1468,40,0.09659,0.09707416040100249,false,"roi"],["POWR/BTC",0.00997506,1516004400.0,1516006500.0,1480,35,9.987e-05,0.00010137180451127818,false,"roi"],["ETH/BTC",0.0,1516018200.0,1516071000.0,1526,880,0.0948969,0.09537257368421052,false,"roi"],["DASH/BTC",-0.0,1516025400.0,1516038000.0,1550,210,0.071,0.07135588972431077,false,"roi"],["ZEC/BTC",-0.0,1516026600.0,1516029000.0,1554,40,0.04600501,0.046235611553884705,false,"roi"],["POWR/BTC",-0.0,1516039800.0,1516044300.0,1598,75,9.438e-05,9.485308270676691e-05,false,"roi"],["XMR/BTC",-0.0,1516041300.0,1516043700.0,1603,40,0.03040001,0.030552391002506264,false,"roi"],["ADA/BTC",-0.10448878,1516047900.0,1516091100.0,1625,720,5.837e-05,5.2533e-05,false,"stop_loss"],["ZEC/BTC",-0.0,1516048800.0,1516053600.0,1628,80,0.046036,0.04626675689223057,false,"roi"],["ETC/BTC",-0.0,1516062600.0,1516065000.0,1674,40,0.0028685,0.0028828784461152877,false,"roi"],["DASH/BTC",0.0,1516065300.0,1516070100.0,1683,80,0.06731755,0.0676549813283208,false,"roi"],["ETH/BTC",0.0,1516088700.0,1516092000.0,1761,55,0.09217614,0.09263817578947368,false,"roi"],["LTC/BTC",0.01995012,1516091700.0,1516092900.0,1771,20,0.0165,0.016913533834586467,false,"roi"],["POWR/BTC",0.03990025,1516091700.0,1516092000.0,1771,5,7.953e-05,8.311781954887218e-05,false,"roi"],["ZEC/BTC",-0.0,1516092300.0,1516096200.0,1773,65,0.045202,0.04542857644110275,false,"roi"],["ADA/BTC",0.00997506,1516094100.0,1516095900.0,1779,30,5.248e-05,5.326917293233082e-05,false,"roi"],["XMR/BTC",0.0,1516094100.0,1516096500.0,1779,40,0.02892318,0.02906815834586466,false,"roi"],["ADA/BTC",0.01995012,1516096200.0,1516097400.0,1786,20,5.158e-05,5.287273182957392e-05,false,"roi"],["ZEC/BTC",0.00997506,1516097100.0,1516099200.0,1789,35,0.04357584,0.044231115789473675,false,"roi"],["XMR/BTC",0.00997506,1516097100.0,1516098900.0,1789,30,0.02828232,0.02870761804511278,false,"roi"],["ADA/BTC",0.00997506,1516110300.0,1516112400.0,1833,35,5.362e-05,5.4426315789473676e-05,false,"roi"],["ADA/BTC",-0.0,1516123800.0,1516127100.0,1878,55,5.302e-05,5.328576441102756e-05,false,"roi"],["ETH/BTC",0.00997506,1516126500.0,1516128300.0,1887,30,0.09129999,0.09267292218045112,false,"roi"],["XLM/BTC",0.01995012,1516126500.0,1516127700.0,1887,20,3.808e-05,3.903438596491228e-05,false,"roi"],["XMR/BTC",0.00997506,1516129200.0,1516131000.0,1896,30,0.02811012,0.028532828571428567,false,"roi"],["ETC/BTC",-0.10448878,1516137900.0,1516141500.0,1925,60,0.00258379,0.002325411,false,"stop_loss"],["NXT/BTC",-0.10448878,1516137900.0,1516142700.0,1925,80,2.559e-05,2.3031e-05,false,"stop_loss"],["POWR/BTC",-0.10448878,1516138500.0,1516141500.0,1927,50,7.62e-05,6.858e-05,false,"stop_loss"],["LTC/BTC",0.03990025,1516141800.0,1516142400.0,1938,10,0.0151,0.015781203007518795,false,"roi"],["ETC/BTC",0.03990025,1516141800.0,1516142100.0,1938,5,0.00229844,0.002402129022556391,false,"roi"],["ETC/BTC",0.03990025,1516142400.0,1516142700.0,1940,5,0.00235676,0.00246308,false,"roi"],["DASH/BTC",0.01995012,1516142700.0,1516143900.0,1941,20,0.0630692,0.06464988170426066,false,"roi"],["NXT/BTC",0.03990025,1516143000.0,1516143300.0,1942,5,2.2e-05,2.2992481203007514e-05,false,"roi"],["ADA/BTC",0.00997506,1516159800.0,1516161600.0,1998,30,4.974e-05,5.048796992481203e-05,false,"roi"],["POWR/BTC",0.01995012,1516161300.0,1516162500.0,2003,20,7.108e-05,7.28614536340852e-05,false,"roi"],["ZEC/BTC",-0.0,1516181700.0,1516184100.0,2071,40,0.04327,0.04348689223057644,false,"roi"],["ADA/BTC",-0.0,1516184400.0,1516208400.0,2080,400,4.997e-05,5.022047619047618e-05,false,"roi"],["DASH/BTC",-0.0,1516185000.0,1516188300.0,2082,55,0.06836818,0.06871087764411027,false,"roi"],["XLM/BTC",-0.0,1516185000.0,1516187400.0,2082,40,3.63e-05,3.648195488721804e-05,false,"roi"],["XMR/BTC",-0.0,1516192200.0,1516226700.0,2106,575,0.0281,0.02824085213032581,false,"roi"],["ETH/BTC",-0.0,1516192500.0,1516208100.0,2107,260,0.08651001,0.08694364413533832,false,"roi"],["ADA/BTC",-0.0,1516251600.0,1516254900.0,2304,55,5.633e-05,5.6612355889724306e-05,false,"roi"],["DASH/BTC",0.00997506,1516252800.0,1516254900.0,2308,35,0.06988494,0.07093584135338346,false,"roi"],["ADA/BTC",-0.0,1516260900.0,1516263300.0,2335,40,5.545e-05,5.572794486215538e-05,false,"roi"],["LTC/BTC",-0.0,1516266000.0,1516268400.0,2352,40,0.01633527,0.016417151052631574,false,"roi"],["ETC/BTC",-0.0,1516293600.0,1516296000.0,2444,40,0.00269734,0.0027108605012531326,false,"roi"],["XLM/BTC",0.01995012,1516298700.0,1516300200.0,2461,25,4.475e-05,4.587155388471177e-05,false,"roi"],["NXT/BTC",0.00997506,1516299900.0,1516301700.0,2465,30,2.79e-05,2.8319548872180444e-05,false,"roi"],["ZEC/BTC",0.0,1516306200.0,1516308600.0,2486,40,0.04439326,0.04461578260651629,false,"roi"],["XLM/BTC",0.0,1516311000.0,1516322100.0,2502,185,4.49e-05,4.51250626566416e-05,false,"roi"],["XMR/BTC",-0.0,1516312500.0,1516338300.0,2507,430,0.02855,0.028693107769423555,false,"roi"],["ADA/BTC",0.0,1516313400.0,1516315800.0,2510,40,5.796e-05,5.8250526315789473e-05,false,"roi"],["ZEC/BTC",0.0,1516319400.0,1516321800.0,2530,40,0.04340323,0.04362079005012531,false,"roi"],["ZEC/BTC",0.0,1516380300.0,1516383300.0,2733,50,0.04454455,0.04476783095238095,false,"roi"],["ADA/BTC",-0.0,1516382100.0,1516391700.0,2739,160,5.62e-05,5.648170426065162e-05,false,"roi"],["XLM/BTC",-0.0,1516382400.0,1516392900.0,2740,175,4.339e-05,4.360749373433584e-05,false,"roi"],["POWR/BTC",0.0,1516423500.0,1516469700.0,2877,770,0.0001009,0.00010140576441102757,false,"roi"],["ETC/BTC",-0.0,1516423800.0,1516461300.0,2878,625,0.00270505,0.002718609147869674,false,"roi"],["XMR/BTC",-0.0,1516423800.0,1516431600.0,2878,130,0.03000002,0.030150396040100245,false,"roi"],["ADA/BTC",-0.0,1516438800.0,1516441200.0,2928,40,5.46e-05,5.4873684210526304e-05,false,"roi"],["XMR/BTC",-0.10448878,1516472700.0,1516852200.0,3041,6325,0.03082222,0.027739998000000002,false,"stop_loss"],["ETH/BTC",-0.0,1516487100.0,1516490100.0,3089,50,0.08969999,0.09014961401002504,false,"roi"],["LTC/BTC",0.0,1516503000.0,1516545000.0,3142,700,0.01632501,0.01640683962406015,false,"roi"],["DASH/BTC",-0.0,1516530000.0,1516532400.0,3232,40,0.070538,0.07089157393483708,false,"roi"],["ADA/BTC",-0.0,1516549800.0,1516560300.0,3298,175,5.301e-05,5.3275714285714276e-05,false,"roi"],["XLM/BTC",0.0,1516551600.0,1516554000.0,3304,40,3.955e-05,3.9748245614035085e-05,false,"roi"],["ETC/BTC",0.00997506,1516569300.0,1516571100.0,3363,30,0.00258505,0.002623922932330827,false,"roi"],["XLM/BTC",-0.0,1516569300.0,1516571700.0,3363,40,3.903e-05,3.922563909774435e-05,false,"roi"],["ADA/BTC",-0.0,1516581300.0,1516617300.0,3403,600,5.236e-05,5.262245614035087e-05,false,"roi"],["POWR/BTC",0.0,1516584600.0,1516587000.0,3414,40,9.028e-05,9.073253132832079e-05,false,"roi"],["ETC/BTC",-0.0,1516623900.0,1516631700.0,3545,130,0.002687,0.002700468671679198,false,"roi"],["XLM/BTC",-0.0,1516626900.0,1516629300.0,3555,40,4.168e-05,4.1888922305764405e-05,false,"roi"],["POWR/BTC",0.00997506,1516629600.0,1516631400.0,3564,30,8.821e-05,8.953646616541353e-05,false,"roi"],["ADA/BTC",-0.0,1516636500.0,1516639200.0,3587,45,5.172e-05,5.1979248120300745e-05,false,"roi"],["NXT/BTC",0.01995012,1516637100.0,1516638300.0,3589,20,3.026e-05,3.101839598997494e-05,false,"roi"],["DASH/BTC",0.0,1516650600.0,1516666200.0,3634,260,0.07064,0.07099408521303258,false,"roi"],["LTC/BTC",0.0,1516656300.0,1516658700.0,3653,40,0.01644483,0.01652726022556391,false,"roi"],["XLM/BTC",0.00997506,1516665900.0,1516667700.0,3685,30,4.331e-05,4.3961278195488714e-05,false,"roi"],["NXT/BTC",0.01995012,1516672200.0,1516673700.0,3706,25,3.2e-05,3.2802005012531326e-05,false,"roi"],["ETH/BTC",0.0,1516681500.0,1516684500.0,3737,50,0.09167706,0.09213659413533835,false,"roi"],["DASH/BTC",0.0,1516692900.0,1516698000.0,3775,85,0.0692498,0.06959691679197995,false,"roi"],["NXT/BTC",0.0,1516704600.0,1516712700.0,3814,135,3.182e-05,3.197949874686716e-05,false,"roi"],["ZEC/BTC",-0.0,1516705500.0,1516723500.0,3817,300,0.04088,0.04108491228070175,false,"roi"],["ADA/BTC",-0.0,1516719300.0,1516721700.0,3863,40,5.15e-05,5.175814536340851e-05,false,"roi"],["ETH/BTC",0.0,1516725300.0,1516752300.0,3883,450,0.09071698,0.09117170170426064,false,"roi"],["NXT/BTC",-0.0,1516728300.0,1516733100.0,3893,80,3.128e-05,3.1436791979949865e-05,false,"roi"],["POWR/BTC",-0.0,1516738500.0,1516744800.0,3927,105,9.555e-05,9.602894736842104e-05,false,"roi"],["ZEC/BTC",-0.0,1516746600.0,1516749000.0,3954,40,0.04080001,0.041004521328320796,false,"roi"],["ADA/BTC",-0.0,1516751400.0,1516764900.0,3970,225,5.163e-05,5.1888796992481196e-05,false,"roi"],["ZEC/BTC",0.0,1516753200.0,1516758600.0,3976,90,0.04040781,0.04061035541353383,false,"roi"],["ADA/BTC",-0.0,1516776300.0,1516778700.0,4053,40,5.132e-05,5.157724310776942e-05,false,"roi"],["ADA/BTC",0.03990025,1516803300.0,1516803900.0,4143,10,5.198e-05,5.432496240601503e-05,false,"roi"],["NXT/BTC",-0.0,1516805400.0,1516811700.0,4150,105,3.054e-05,3.069308270676692e-05,false,"roi"],["POWR/BTC",0.0,1516806600.0,1516810500.0,4154,65,9.263e-05,9.309431077694235e-05,false,"roi"],["ADA/BTC",-0.0,1516833600.0,1516836300.0,4244,45,5.514e-05,5.5416390977443596e-05,false,"roi"],["XLM/BTC",0.0,1516841400.0,1516843800.0,4270,40,4.921e-05,4.9456666666666664e-05,false,"roi"],["ETC/BTC",0.0,1516868100.0,1516882500.0,4359,240,0.0026,0.002613032581453634,false,"roi"],["XMR/BTC",-0.0,1516875900.0,1516896900.0,4385,350,0.02799871,0.028139054411027563,false,"roi"],["ZEC/BTC",-0.0,1516878000.0,1516880700.0,4392,45,0.04078902,0.0409934762406015,false,"roi"],["NXT/BTC",-0.0,1516885500.0,1516887900.0,4417,40,2.89e-05,2.904486215538847e-05,false,"roi"],["ZEC/BTC",-0.0,1516886400.0,1516889100.0,4420,45,0.041103,0.041309030075187964,false,"roi"],["XLM/BTC",0.00997506,1516895100.0,1516896900.0,4449,30,5.428e-05,5.5096240601503756e-05,false,"roi"],["XLM/BTC",-0.0,1516902300.0,1516922100.0,4473,330,5.414e-05,5.441137844611528e-05,false,"roi"],["ZEC/BTC",-0.0,1516914900.0,1516917300.0,4515,40,0.04140777,0.0416153277443609,false,"roi"],["ETC/BTC",0.0,1516932300.0,1516934700.0,4573,40,0.00254309,0.002555837318295739,false,"roi"],["ADA/BTC",-0.0,1516935300.0,1516979400.0,4583,735,5.607e-05,5.6351052631578935e-05,false,"roi"],["ETC/BTC",0.0,1516947000.0,1516958700.0,4622,195,0.00253806,0.0025507821052631577,false,"roi"],["ZEC/BTC",-0.0,1516951500.0,1516960500.0,4637,150,0.0415,0.04170802005012531,false,"roi"],["XLM/BTC",0.00997506,1516960500.0,1516962300.0,4667,30,5.321e-05,5.401015037593984e-05,false,"roi"],["XMR/BTC",-0.0,1516982700.0,1516985100.0,4741,40,0.02772046,0.02785940967418546,false,"roi"],["ETH/BTC",0.0,1517009700.0,1517012100.0,4831,40,0.09461341,0.09508766268170425,false,"roi"],["XLM/BTC",-0.0,1517013300.0,1517016600.0,4843,55,5.615e-05,5.643145363408521e-05,false,"roi"],["ADA/BTC",-0.07877175,1517013900.0,1517287500.0,4845,4560,5.556e-05,5.144e-05,true,"force_sell"],["DASH/BTC",-0.0,1517020200.0,1517052300.0,4866,535,0.06900001,0.06934587471177944,false,"roi"],["ETH/BTC",-0.0,1517034300.0,1517036700.0,4913,40,0.09449985,0.09497353345864659,false,"roi"],["ZEC/BTC",-0.04815133,1517046000.0,1517287200.0,4952,4020,0.0410697,0.03928809,true,"force_sell"],["XMR/BTC",-0.0,1517053500.0,1517056200.0,4977,45,0.0285,0.02864285714285714,false,"roi"],["XMR/BTC",-0.0,1517056500.0,1517066700.0,4987,170,0.02866372,0.02880739779448621,false,"roi"],["ETH/BTC",-0.0,1517068200.0,1517071800.0,5026,60,0.095381,0.09585910025062655,false,"roi"],["DASH/BTC",-0.0,1517072700.0,1517075100.0,5041,40,0.06759092,0.06792972160401002,false,"roi"],["ETC/BTC",-0.0,1517096400.0,1517101500.0,5120,85,0.00258501,0.002597967443609022,false,"roi"],["DASH/BTC",-0.0,1517106300.0,1517127000.0,5153,345,0.06698502,0.0673207845112782,false,"roi"],["DASH/BTC",-0.0,1517135100.0,1517157000.0,5249,365,0.0677177,0.06805713709273183,false,"roi"],["XLM/BTC",0.0,1517171700.0,1517175300.0,5371,60,5.215e-05,5.2411403508771925e-05,false,"roi"],["ETC/BTC",0.00997506,1517176800.0,1517178600.0,5388,30,0.00273809,0.002779264285714285,false,"roi"],["ETC/BTC",0.00997506,1517184000.0,1517185800.0,5412,30,0.00274632,0.002787618045112782,false,"roi"],["LTC/BTC",0.0,1517192100.0,1517194800.0,5439,45,0.01622478,0.016306107218045113,false,"roi"],["DASH/BTC",-0.0,1517195100.0,1517197500.0,5449,40,0.069,0.06934586466165413,false,"roi"],["POWR/BTC",-0.0,1517203200.0,1517208900.0,5476,95,8.755e-05,8.798884711779448e-05,false,"roi"],["DASH/BTC",-0.0,1517209200.0,1517253900.0,5496,745,0.06825763,0.06859977350877192,false,"roi"],["DASH/BTC",-0.0,1517255100.0,1517257500.0,5649,40,0.06713892,0.06747545593984962,false,"roi"],["POWR/BTC",-0.0199116,1517268600.0,1517287500.0,5694,315,8.934e-05,8.8e-05,true,"force_sell"]] \ No newline at end of file +[["TRX/BTC",0.03990025,1515568500.0,1515568800.0,27,5,9.64e-05,0.00010074887218045112,false,"roi"],["ADA/BTC",0.03990025,1515568500.0,1515569400.0,27,15,4.756e-05,4.9705563909774425e-05,false,"roi"],["XLM/BTC",0.03990025,1515569100.0,1515569700.0,29,10,3.339e-05,3.489631578947368e-05,false,"roi"],["TRX/BTC",0.03990025,1515569100.0,1515570000.0,29,15,9.696e-05,0.00010133413533834584,false,"roi"],["ETH/BTC",-0.0,1515569700.0,1515573300.0,31,60,0.0943,0.09477268170426063,false,"roi"],["XMR/BTC",0.00997506,1515570000.0,1515571800.0,32,30,0.02719607,0.02760503345864661,false,"roi"],["ZEC/BTC",0.0,1515572100.0,1515578100.0,39,100,0.04634952,0.046581848421052625,false,"roi"],["NXT/BTC",-0.0,1515595500.0,1515599400.0,117,65,3.066e-05,3.081368421052631e-05,false,"roi"],["LTC/BTC",0.0,1515602100.0,1515604500.0,139,40,0.0168999,0.016984611278195488,false,"roi"],["ETH/BTC",-0.0,1515602400.0,1515604800.0,140,40,0.09132568,0.0917834528320802,false,"roi"],["ETH/BTC",-0.0,1515610200.0,1515613500.0,166,55,0.08898003,0.08942604518796991,false,"roi"],["ETH/BTC",0.0,1515622500.0,1515625200.0,207,45,0.08560008,0.08602915308270676,false,"roi"],["ETC/BTC",0.00997506,1515624600.0,1515626400.0,214,30,0.00249083,0.0025282860902255634,false,"roi"],["NXT/BTC",-0.0,1515626100.0,1515629700.0,219,60,3.022e-05,3.037147869674185e-05,false,"roi"],["ETC/BTC",0.01995012,1515627600.0,1515629100.0,224,25,0.002437,0.0024980776942355883,false,"roi"],["ZEC/BTC",0.00997506,1515628800.0,1515630900.0,228,35,0.04771803,0.04843559436090225,false,"roi"],["XLM/BTC",-0.10448878,1515642000.0,1515644700.0,272,45,3.651e-05,3.2859000000000005e-05,false,"stop_loss"],["ETH/BTC",0.00997506,1515642900.0,1515644700.0,275,30,0.08824105,0.08956798308270676,false,"roi"],["ETC/BTC",-0.0,1515643200.0,1515646200.0,276,50,0.00243,0.002442180451127819,false,"roi"],["ZEC/BTC",0.01995012,1515645000.0,1515646500.0,282,25,0.04545064,0.046589753784461146,false,"roi"],["XLM/BTC",0.01995012,1515645000.0,1515646200.0,282,20,3.372e-05,3.456511278195488e-05,false,"roi"],["XMR/BTC",0.01995012,1515646500.0,1515647700.0,287,20,0.02644,0.02710265664160401,false,"roi"],["ETH/BTC",-0.0,1515669600.0,1515672000.0,364,40,0.08812,0.08856170426065162,false,"roi"],["XMR/BTC",-0.0,1515670500.0,1515672900.0,367,40,0.02683577,0.026970285137844607,false,"roi"],["ADA/BTC",0.01995012,1515679200.0,1515680700.0,396,25,4.919e-05,5.04228320802005e-05,false,"roi"],["ETH/BTC",-0.0,1515698700.0,1515702900.0,461,70,0.08784896,0.08828930566416039,false,"roi"],["ADA/BTC",-0.0,1515710100.0,1515713400.0,499,55,5.105e-05,5.130588972431077e-05,false,"roi"],["XLM/BTC",0.00997506,1515711300.0,1515713100.0,503,30,3.96e-05,4.019548872180451e-05,false,"roi"],["NXT/BTC",-0.0,1515711300.0,1515713700.0,503,40,2.885e-05,2.899461152882205e-05,false,"roi"],["XMR/BTC",0.00997506,1515713400.0,1515715500.0,510,35,0.02645,0.026847744360902256,false,"roi"],["ZEC/BTC",-0.0,1515714900.0,1515719700.0,515,80,0.048,0.04824060150375939,false,"roi"],["XLM/BTC",0.01995012,1515791700.0,1515793200.0,771,25,4.692e-05,4.809593984962405e-05,false,"roi"],["ETC/BTC",-0.0,1515804900.0,1515824400.0,815,325,0.00256966,0.0025825405012531327,false,"roi"],["ADA/BTC",0.0,1515840900.0,1515843300.0,935,40,6.262e-05,6.293388471177944e-05,false,"roi"],["XLM/BTC",0.0,1515848700.0,1516025400.0,961,2945,4.73e-05,4.753709273182957e-05,false,"roi"],["ADA/BTC",-0.0,1515850200.0,1515854700.0,966,75,6.063e-05,6.0933909774436085e-05,false,"roi"],["TRX/BTC",-0.0,1515850800.0,1515886200.0,968,590,0.00011082,0.00011137548872180449,false,"roi"],["ADA/BTC",-0.0,1515856500.0,1515858900.0,987,40,5.93e-05,5.9597243107769415e-05,false,"roi"],["ZEC/BTC",-0.0,1515861000.0,1515863400.0,1002,40,0.04850003,0.04874313791979949,false,"roi"],["ETH/BTC",-0.0,1515881100.0,1515911100.0,1069,500,0.09825019,0.09874267215538847,false,"roi"],["ADA/BTC",0.0,1515889200.0,1515970500.0,1096,1355,6.018e-05,6.048165413533834e-05,false,"roi"],["ETH/BTC",-0.0,1515933900.0,1515936300.0,1245,40,0.09758999,0.0980791628822055,false,"roi"],["ETC/BTC",0.00997506,1515943800.0,1515945600.0,1278,30,0.00311,0.0031567669172932328,false,"roi"],["ETC/BTC",-0.0,1515962700.0,1515968100.0,1341,90,0.00312401,0.003139669197994987,false,"roi"],["LTC/BTC",0.0,1515972900.0,1515976200.0,1375,55,0.0174679,0.017555458395989976,false,"roi"],["DASH/BTC",-0.0,1515973500.0,1515975900.0,1377,40,0.07346846,0.07383672295739348,false,"roi"],["ETH/BTC",-0.0,1515983100.0,1515985500.0,1409,40,0.097994,0.09848519799498745,false,"roi"],["ETH/BTC",-0.0,1516000800.0,1516003200.0,1468,40,0.09659,0.09707416040100249,false,"roi"],["TRX/BTC",0.00997506,1516004400.0,1516006500.0,1480,35,9.987e-05,0.00010137180451127818,false,"roi"],["ETH/BTC",0.0,1516018200.0,1516071000.0,1526,880,0.0948969,0.09537257368421052,false,"roi"],["DASH/BTC",-0.0,1516025400.0,1516038000.0,1550,210,0.071,0.07135588972431077,false,"roi"],["ZEC/BTC",-0.0,1516026600.0,1516029000.0,1554,40,0.04600501,0.046235611553884705,false,"roi"],["TRX/BTC",-0.0,1516039800.0,1516044300.0,1598,75,9.438e-05,9.485308270676691e-05,false,"roi"],["XMR/BTC",-0.0,1516041300.0,1516043700.0,1603,40,0.03040001,0.030552391002506264,false,"roi"],["ADA/BTC",-0.10448878,1516047900.0,1516091100.0,1625,720,5.837e-05,5.2533e-05,false,"stop_loss"],["ZEC/BTC",-0.0,1516048800.0,1516053600.0,1628,80,0.046036,0.04626675689223057,false,"roi"],["ETC/BTC",-0.0,1516062600.0,1516065000.0,1674,40,0.0028685,0.0028828784461152877,false,"roi"],["DASH/BTC",0.0,1516065300.0,1516070100.0,1683,80,0.06731755,0.0676549813283208,false,"roi"],["ETH/BTC",0.0,1516088700.0,1516092000.0,1761,55,0.09217614,0.09263817578947368,false,"roi"],["LTC/BTC",0.01995012,1516091700.0,1516092900.0,1771,20,0.0165,0.016913533834586467,false,"roi"],["TRX/BTC",0.03990025,1516091700.0,1516092000.0,1771,5,7.953e-05,8.311781954887218e-05,false,"roi"],["ZEC/BTC",-0.0,1516092300.0,1516096200.0,1773,65,0.045202,0.04542857644110275,false,"roi"],["ADA/BTC",0.00997506,1516094100.0,1516095900.0,1779,30,5.248e-05,5.326917293233082e-05,false,"roi"],["XMR/BTC",0.0,1516094100.0,1516096500.0,1779,40,0.02892318,0.02906815834586466,false,"roi"],["ADA/BTC",0.01995012,1516096200.0,1516097400.0,1786,20,5.158e-05,5.287273182957392e-05,false,"roi"],["ZEC/BTC",0.00997506,1516097100.0,1516099200.0,1789,35,0.04357584,0.044231115789473675,false,"roi"],["XMR/BTC",0.00997506,1516097100.0,1516098900.0,1789,30,0.02828232,0.02870761804511278,false,"roi"],["ADA/BTC",0.00997506,1516110300.0,1516112400.0,1833,35,5.362e-05,5.4426315789473676e-05,false,"roi"],["ADA/BTC",-0.0,1516123800.0,1516127100.0,1878,55,5.302e-05,5.328576441102756e-05,false,"roi"],["ETH/BTC",0.00997506,1516126500.0,1516128300.0,1887,30,0.09129999,0.09267292218045112,false,"roi"],["XLM/BTC",0.01995012,1516126500.0,1516127700.0,1887,20,3.808e-05,3.903438596491228e-05,false,"roi"],["XMR/BTC",0.00997506,1516129200.0,1516131000.0,1896,30,0.02811012,0.028532828571428567,false,"roi"],["ETC/BTC",-0.10448878,1516137900.0,1516141500.0,1925,60,0.00258379,0.002325411,false,"stop_loss"],["NXT/BTC",-0.10448878,1516137900.0,1516142700.0,1925,80,2.559e-05,2.3031e-05,false,"stop_loss"],["TRX/BTC",-0.10448878,1516138500.0,1516141500.0,1927,50,7.62e-05,6.858e-05,false,"stop_loss"],["LTC/BTC",0.03990025,1516141800.0,1516142400.0,1938,10,0.0151,0.015781203007518795,false,"roi"],["ETC/BTC",0.03990025,1516141800.0,1516142100.0,1938,5,0.00229844,0.002402129022556391,false,"roi"],["ETC/BTC",0.03990025,1516142400.0,1516142700.0,1940,5,0.00235676,0.00246308,false,"roi"],["DASH/BTC",0.01995012,1516142700.0,1516143900.0,1941,20,0.0630692,0.06464988170426066,false,"roi"],["NXT/BTC",0.03990025,1516143000.0,1516143300.0,1942,5,2.2e-05,2.2992481203007514e-05,false,"roi"],["ADA/BTC",0.00997506,1516159800.0,1516161600.0,1998,30,4.974e-05,5.048796992481203e-05,false,"roi"],["TRX/BTC",0.01995012,1516161300.0,1516162500.0,2003,20,7.108e-05,7.28614536340852e-05,false,"roi"],["ZEC/BTC",-0.0,1516181700.0,1516184100.0,2071,40,0.04327,0.04348689223057644,false,"roi"],["ADA/BTC",-0.0,1516184400.0,1516208400.0,2080,400,4.997e-05,5.022047619047618e-05,false,"roi"],["DASH/BTC",-0.0,1516185000.0,1516188300.0,2082,55,0.06836818,0.06871087764411027,false,"roi"],["XLM/BTC",-0.0,1516185000.0,1516187400.0,2082,40,3.63e-05,3.648195488721804e-05,false,"roi"],["XMR/BTC",-0.0,1516192200.0,1516226700.0,2106,575,0.0281,0.02824085213032581,false,"roi"],["ETH/BTC",-0.0,1516192500.0,1516208100.0,2107,260,0.08651001,0.08694364413533832,false,"roi"],["ADA/BTC",-0.0,1516251600.0,1516254900.0,2304,55,5.633e-05,5.6612355889724306e-05,false,"roi"],["DASH/BTC",0.00997506,1516252800.0,1516254900.0,2308,35,0.06988494,0.07093584135338346,false,"roi"],["ADA/BTC",-0.0,1516260900.0,1516263300.0,2335,40,5.545e-05,5.572794486215538e-05,false,"roi"],["LTC/BTC",-0.0,1516266000.0,1516268400.0,2352,40,0.01633527,0.016417151052631574,false,"roi"],["ETC/BTC",-0.0,1516293600.0,1516296000.0,2444,40,0.00269734,0.0027108605012531326,false,"roi"],["XLM/BTC",0.01995012,1516298700.0,1516300200.0,2461,25,4.475e-05,4.587155388471177e-05,false,"roi"],["NXT/BTC",0.00997506,1516299900.0,1516301700.0,2465,30,2.79e-05,2.8319548872180444e-05,false,"roi"],["ZEC/BTC",0.0,1516306200.0,1516308600.0,2486,40,0.04439326,0.04461578260651629,false,"roi"],["XLM/BTC",0.0,1516311000.0,1516322100.0,2502,185,4.49e-05,4.51250626566416e-05,false,"roi"],["XMR/BTC",-0.0,1516312500.0,1516338300.0,2507,430,0.02855,0.028693107769423555,false,"roi"],["ADA/BTC",0.0,1516313400.0,1516315800.0,2510,40,5.796e-05,5.8250526315789473e-05,false,"roi"],["ZEC/BTC",0.0,1516319400.0,1516321800.0,2530,40,0.04340323,0.04362079005012531,false,"roi"],["ZEC/BTC",0.0,1516380300.0,1516383300.0,2733,50,0.04454455,0.04476783095238095,false,"roi"],["ADA/BTC",-0.0,1516382100.0,1516391700.0,2739,160,5.62e-05,5.648170426065162e-05,false,"roi"],["XLM/BTC",-0.0,1516382400.0,1516392900.0,2740,175,4.339e-05,4.360749373433584e-05,false,"roi"],["TRX/BTC",0.0,1516423500.0,1516469700.0,2877,770,0.0001009,0.00010140576441102757,false,"roi"],["ETC/BTC",-0.0,1516423800.0,1516461300.0,2878,625,0.00270505,0.002718609147869674,false,"roi"],["XMR/BTC",-0.0,1516423800.0,1516431600.0,2878,130,0.03000002,0.030150396040100245,false,"roi"],["ADA/BTC",-0.0,1516438800.0,1516441200.0,2928,40,5.46e-05,5.4873684210526304e-05,false,"roi"],["XMR/BTC",-0.10448878,1516472700.0,1516852200.0,3041,6325,0.03082222,0.027739998000000002,false,"stop_loss"],["ETH/BTC",-0.0,1516487100.0,1516490100.0,3089,50,0.08969999,0.09014961401002504,false,"roi"],["LTC/BTC",0.0,1516503000.0,1516545000.0,3142,700,0.01632501,0.01640683962406015,false,"roi"],["DASH/BTC",-0.0,1516530000.0,1516532400.0,3232,40,0.070538,0.07089157393483708,false,"roi"],["ADA/BTC",-0.0,1516549800.0,1516560300.0,3298,175,5.301e-05,5.3275714285714276e-05,false,"roi"],["XLM/BTC",0.0,1516551600.0,1516554000.0,3304,40,3.955e-05,3.9748245614035085e-05,false,"roi"],["ETC/BTC",0.00997506,1516569300.0,1516571100.0,3363,30,0.00258505,0.002623922932330827,false,"roi"],["XLM/BTC",-0.0,1516569300.0,1516571700.0,3363,40,3.903e-05,3.922563909774435e-05,false,"roi"],["ADA/BTC",-0.0,1516581300.0,1516617300.0,3403,600,5.236e-05,5.262245614035087e-05,false,"roi"],["TRX/BTC",0.0,1516584600.0,1516587000.0,3414,40,9.028e-05,9.073253132832079e-05,false,"roi"],["ETC/BTC",-0.0,1516623900.0,1516631700.0,3545,130,0.002687,0.002700468671679198,false,"roi"],["XLM/BTC",-0.0,1516626900.0,1516629300.0,3555,40,4.168e-05,4.1888922305764405e-05,false,"roi"],["TRX/BTC",0.00997506,1516629600.0,1516631400.0,3564,30,8.821e-05,8.953646616541353e-05,false,"roi"],["ADA/BTC",-0.0,1516636500.0,1516639200.0,3587,45,5.172e-05,5.1979248120300745e-05,false,"roi"],["NXT/BTC",0.01995012,1516637100.0,1516638300.0,3589,20,3.026e-05,3.101839598997494e-05,false,"roi"],["DASH/BTC",0.0,1516650600.0,1516666200.0,3634,260,0.07064,0.07099408521303258,false,"roi"],["LTC/BTC",0.0,1516656300.0,1516658700.0,3653,40,0.01644483,0.01652726022556391,false,"roi"],["XLM/BTC",0.00997506,1516665900.0,1516667700.0,3685,30,4.331e-05,4.3961278195488714e-05,false,"roi"],["NXT/BTC",0.01995012,1516672200.0,1516673700.0,3706,25,3.2e-05,3.2802005012531326e-05,false,"roi"],["ETH/BTC",0.0,1516681500.0,1516684500.0,3737,50,0.09167706,0.09213659413533835,false,"roi"],["DASH/BTC",0.0,1516692900.0,1516698000.0,3775,85,0.0692498,0.06959691679197995,false,"roi"],["NXT/BTC",0.0,1516704600.0,1516712700.0,3814,135,3.182e-05,3.197949874686716e-05,false,"roi"],["ZEC/BTC",-0.0,1516705500.0,1516723500.0,3817,300,0.04088,0.04108491228070175,false,"roi"],["ADA/BTC",-0.0,1516719300.0,1516721700.0,3863,40,5.15e-05,5.175814536340851e-05,false,"roi"],["ETH/BTC",0.0,1516725300.0,1516752300.0,3883,450,0.09071698,0.09117170170426064,false,"roi"],["NXT/BTC",-0.0,1516728300.0,1516733100.0,3893,80,3.128e-05,3.1436791979949865e-05,false,"roi"],["TRX/BTC",-0.0,1516738500.0,1516744800.0,3927,105,9.555e-05,9.602894736842104e-05,false,"roi"],["ZEC/BTC",-0.0,1516746600.0,1516749000.0,3954,40,0.04080001,0.041004521328320796,false,"roi"],["ADA/BTC",-0.0,1516751400.0,1516764900.0,3970,225,5.163e-05,5.1888796992481196e-05,false,"roi"],["ZEC/BTC",0.0,1516753200.0,1516758600.0,3976,90,0.04040781,0.04061035541353383,false,"roi"],["ADA/BTC",-0.0,1516776300.0,1516778700.0,4053,40,5.132e-05,5.157724310776942e-05,false,"roi"],["ADA/BTC",0.03990025,1516803300.0,1516803900.0,4143,10,5.198e-05,5.432496240601503e-05,false,"roi"],["NXT/BTC",-0.0,1516805400.0,1516811700.0,4150,105,3.054e-05,3.069308270676692e-05,false,"roi"],["TRX/BTC",0.0,1516806600.0,1516810500.0,4154,65,9.263e-05,9.309431077694235e-05,false,"roi"],["ADA/BTC",-0.0,1516833600.0,1516836300.0,4244,45,5.514e-05,5.5416390977443596e-05,false,"roi"],["XLM/BTC",0.0,1516841400.0,1516843800.0,4270,40,4.921e-05,4.9456666666666664e-05,false,"roi"],["ETC/BTC",0.0,1516868100.0,1516882500.0,4359,240,0.0026,0.002613032581453634,false,"roi"],["XMR/BTC",-0.0,1516875900.0,1516896900.0,4385,350,0.02799871,0.028139054411027563,false,"roi"],["ZEC/BTC",-0.0,1516878000.0,1516880700.0,4392,45,0.04078902,0.0409934762406015,false,"roi"],["NXT/BTC",-0.0,1516885500.0,1516887900.0,4417,40,2.89e-05,2.904486215538847e-05,false,"roi"],["ZEC/BTC",-0.0,1516886400.0,1516889100.0,4420,45,0.041103,0.041309030075187964,false,"roi"],["XLM/BTC",0.00997506,1516895100.0,1516896900.0,4449,30,5.428e-05,5.5096240601503756e-05,false,"roi"],["XLM/BTC",-0.0,1516902300.0,1516922100.0,4473,330,5.414e-05,5.441137844611528e-05,false,"roi"],["ZEC/BTC",-0.0,1516914900.0,1516917300.0,4515,40,0.04140777,0.0416153277443609,false,"roi"],["ETC/BTC",0.0,1516932300.0,1516934700.0,4573,40,0.00254309,0.002555837318295739,false,"roi"],["ADA/BTC",-0.0,1516935300.0,1516979400.0,4583,735,5.607e-05,5.6351052631578935e-05,false,"roi"],["ETC/BTC",0.0,1516947000.0,1516958700.0,4622,195,0.00253806,0.0025507821052631577,false,"roi"],["ZEC/BTC",-0.0,1516951500.0,1516960500.0,4637,150,0.0415,0.04170802005012531,false,"roi"],["XLM/BTC",0.00997506,1516960500.0,1516962300.0,4667,30,5.321e-05,5.401015037593984e-05,false,"roi"],["XMR/BTC",-0.0,1516982700.0,1516985100.0,4741,40,0.02772046,0.02785940967418546,false,"roi"],["ETH/BTC",0.0,1517009700.0,1517012100.0,4831,40,0.09461341,0.09508766268170425,false,"roi"],["XLM/BTC",-0.0,1517013300.0,1517016600.0,4843,55,5.615e-05,5.643145363408521e-05,false,"roi"],["ADA/BTC",-0.07877175,1517013900.0,1517287500.0,4845,4560,5.556e-05,5.144e-05,true,"force_sell"],["DASH/BTC",-0.0,1517020200.0,1517052300.0,4866,535,0.06900001,0.06934587471177944,false,"roi"],["ETH/BTC",-0.0,1517034300.0,1517036700.0,4913,40,0.09449985,0.09497353345864659,false,"roi"],["ZEC/BTC",-0.04815133,1517046000.0,1517287200.0,4952,4020,0.0410697,0.03928809,true,"force_sell"],["XMR/BTC",-0.0,1517053500.0,1517056200.0,4977,45,0.0285,0.02864285714285714,false,"roi"],["XMR/BTC",-0.0,1517056500.0,1517066700.0,4987,170,0.02866372,0.02880739779448621,false,"roi"],["ETH/BTC",-0.0,1517068200.0,1517071800.0,5026,60,0.095381,0.09585910025062655,false,"roi"],["DASH/BTC",-0.0,1517072700.0,1517075100.0,5041,40,0.06759092,0.06792972160401002,false,"roi"],["ETC/BTC",-0.0,1517096400.0,1517101500.0,5120,85,0.00258501,0.002597967443609022,false,"roi"],["DASH/BTC",-0.0,1517106300.0,1517127000.0,5153,345,0.06698502,0.0673207845112782,false,"roi"],["DASH/BTC",-0.0,1517135100.0,1517157000.0,5249,365,0.0677177,0.06805713709273183,false,"roi"],["XLM/BTC",0.0,1517171700.0,1517175300.0,5371,60,5.215e-05,5.2411403508771925e-05,false,"roi"],["ETC/BTC",0.00997506,1517176800.0,1517178600.0,5388,30,0.00273809,0.002779264285714285,false,"roi"],["ETC/BTC",0.00997506,1517184000.0,1517185800.0,5412,30,0.00274632,0.002787618045112782,false,"roi"],["LTC/BTC",0.0,1517192100.0,1517194800.0,5439,45,0.01622478,0.016306107218045113,false,"roi"],["DASH/BTC",-0.0,1517195100.0,1517197500.0,5449,40,0.069,0.06934586466165413,false,"roi"],["TRX/BTC",-0.0,1517203200.0,1517208900.0,5476,95,8.755e-05,8.798884711779448e-05,false,"roi"],["DASH/BTC",-0.0,1517209200.0,1517253900.0,5496,745,0.06825763,0.06859977350877192,false,"roi"],["DASH/BTC",-0.0,1517255100.0,1517257500.0,5649,40,0.06713892,0.06747545593984962,false,"roi"],["TRX/BTC",-0.0199116,1517268600.0,1517287500.0,5694,315,8.934e-05,8.8e-05,true,"force_sell"]] diff --git a/tests/testdata/pairs.json b/tests/testdata/pairs.json index f4bab6dc5..15aae2643 100644 --- a/tests/testdata/pairs.json +++ b/tests/testdata/pairs.json @@ -9,7 +9,7 @@ "LTC/BTC", "NEO/BTC", "NXT/BTC", - "POWR/BTC", + "TRX/BTC", "STORJ/BTC", "QTUM/BTC", "WAVES/BTC", From f20f5cebbe24f53660c0161b8556249d4ce0ba19 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 29 Oct 2019 11:09:41 +0100 Subject: [PATCH 0846/3421] Move performance-calculation to persistence --- freqtrade/persistence.py | 23 ++++++++++++++++++++--- freqtrade/rpc/rpc.py | 13 +------------ tests/test_persistence.py | 24 ++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 1850aafd9..6bd4b0a30 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -8,17 +8,15 @@ from typing import Any, Dict, List, Optional import arrow from sqlalchemy import (Boolean, Column, DateTime, Float, Integer, String, - create_engine, inspect) + create_engine, desc, func, inspect) from sqlalchemy.exc import NoSuchModuleError from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm.scoping import scoped_session from sqlalchemy.orm.session import sessionmaker -from sqlalchemy import func from sqlalchemy.pool import StaticPool from freqtrade import OperationalException - logger = logging.getLogger(__name__) @@ -404,6 +402,25 @@ class Trade(_DECL_BASE): .scalar() return total_open_stake_amount or 0 + @staticmethod + def get_overall_performance() -> Dict: + pair_rates = Trade.session.query( + Trade.pair, + func.sum(Trade.close_profit).label('profit_sum'), + func.count(Trade.pair).label('count') + ).filter(Trade.is_open.is_(False))\ + .group_by(Trade.pair) \ + .order_by(desc('profit_sum')) \ + .all() + return [ + { + 'pair': pair, + 'profit': round(rate * 100, 2), + 'count': count + } + for pair, rate, count in pair_rates + ] + @staticmethod def get_open_trades() -> List[Any]: """ diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index f994ac006..c50a7937e 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -442,18 +442,7 @@ class RPC: Handler for performance. Shows a performance statistic from finished trades """ - - pair_rates = Trade.session.query(Trade.pair, - sql.func.sum(Trade.close_profit).label('profit_sum'), - sql.func.count(Trade.pair).label('count')) \ - .filter(Trade.is_open.is_(False)) \ - .group_by(Trade.pair) \ - .order_by(sql.text('profit_sum DESC')) \ - .all() - return [ - {'pair': pair, 'profit': round(rate * 100, 2), 'count': count} - for pair, rate, count in pair_rates - ] + return Trade.get_overall_performance() def _rpc_count(self) -> Dict[str, float]: """ Returns the number of trades running """ diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 6bd223a9b..8cf5f1756 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -35,6 +35,8 @@ def create_mock_trades(fee): fee_open=fee.return_value, fee_close=fee.return_value, open_rate=0.123, + close_rate=0.128, + close_profit=0.005, exchange='bittrex', is_open=False, open_order_id='dry_run_sell_12345' @@ -835,3 +837,25 @@ def test_stoploss_reinitialization(default_conf, fee): assert trade_adj.stop_loss_pct == -0.04 assert trade_adj.initial_stop_loss == 0.96 assert trade_adj.initial_stop_loss_pct == -0.04 + + +@pytest.mark.usefixtures("init_persistence") +def test_total_open_trades_stakes(fee): + + res = Trade.total_open_trades_stakes() + assert res == 0 + create_mock_trades(fee) + res = Trade.total_open_trades_stakes() + assert res == 0.002 + + +@pytest.mark.usefixtures("init_persistence") +def test_get_overall_performance(fee): + + create_mock_trades(fee) + res = Trade.get_overall_performance() + + assert len(res) == 1 + assert 'pair' in res[0] + assert 'profit' in res[0] + assert 'count' in res[0] From ab117527c9a89d68056023982ff0129c8fe71605 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 29 Oct 2019 11:15:33 +0100 Subject: [PATCH 0847/3421] Refactor get_best_pair to persistence --- freqtrade/persistence.py | 9 +++++++++ freqtrade/rpc/rpc.py | 6 +----- tests/test_persistence.py | 13 +++++++++++++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 6bd4b0a30..fe0b64bcc 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -421,6 +421,15 @@ class Trade(_DECL_BASE): for pair, rate, count in pair_rates ] + @staticmethod + def get_best_pair(): + best_pair = Trade.session.query( + Trade.pair, func.sum(Trade.close_profit).label('profit_sum') + ).filter(Trade.is_open.is_(False)) \ + .group_by(Trade.pair) \ + .order_by(desc('profit_sum')).first() + return best_pair + @staticmethod def get_open_trades() -> List[Any]: """ diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index c50a7937e..dc25c3743 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -225,11 +225,7 @@ class RPC: ) profit_all_perc.append(profit_percent) - best_pair = Trade.session.query( - Trade.pair, sql.func.sum(Trade.close_profit).label('profit_sum') - ).filter(Trade.is_open.is_(False)) \ - .group_by(Trade.pair) \ - .order_by(sql.text('profit_sum DESC')).first() + best_pair = Trade.get_best_pair() if not best_pair: raise RPCException('no closed trade') diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 8cf5f1756..4aa69423e 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -859,3 +859,16 @@ def test_get_overall_performance(fee): assert 'pair' in res[0] assert 'profit' in res[0] assert 'count' in res[0] + + +@pytest.mark.usefixtures("init_persistence") +def test_get_best_pair(fee): + + res = Trade.get_best_pair() + assert res is None + + create_mock_trades(fee) + res = Trade.get_best_pair() + assert len(res) == 2 + assert res[0] == 'ETC/BTC' + assert res[1] == 0.005 From 01efebc42f27ae0250955d84bc99868ed0877a2f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 29 Oct 2019 13:32:07 +0100 Subject: [PATCH 0848/3421] Extract query to it's own function --- freqtrade/freqtradebot.py | 2 +- freqtrade/persistence.py | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a8fc6bc7e..ef9a85154 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -768,7 +768,7 @@ class FreqtradeBot: buy_timeout_threshold = arrow.utcnow().shift(minutes=-buy_timeout).datetime sell_timeout_threshold = arrow.utcnow().shift(minutes=-sell_timeout).datetime - for trade in Trade.query.filter(Trade.open_order_id.isnot(None)).all(): + for trade in Trade.get_open_order_trades(): try: # FIXME: Somehow the query above returns results # where the open_order_id is in fact None. diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index fe0b64bcc..e527cde16 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -391,6 +391,13 @@ class Trade(_DECL_BASE): profit_percent = (close_trade_price / open_trade_price) - 1 return float(f"{profit_percent:.8f}") + @staticmethod + def get_open_order_trades(): + """ + Returns all open trades + """ + return Trade.query.filter(Trade.open_order_id.isnot(None)).all() + @staticmethod def total_open_trades_stakes() -> float: """ @@ -403,7 +410,10 @@ class Trade(_DECL_BASE): return total_open_stake_amount or 0 @staticmethod - def get_overall_performance() -> Dict: + def get_overall_performance() -> List[Dict]: + """ + Returns List of dicts containing all Trades, including profit and trade count + """ pair_rates = Trade.session.query( Trade.pair, func.sum(Trade.close_profit).label('profit_sum'), @@ -423,6 +433,9 @@ class Trade(_DECL_BASE): @staticmethod def get_best_pair(): + """ + Get best pair with closed trade. + """ best_pair = Trade.session.query( Trade.pair, func.sum(Trade.close_profit).label('profit_sum') ).filter(Trade.is_open.is_(False)) \ From 26a5800a7f9afbd8236e2d89d6c26c29556f1268 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 29 Oct 2019 15:01:10 +0100 Subject: [PATCH 0849/3421] Extract get_trades function --- freqtrade/data/btanalysis.py | 2 +- freqtrade/persistence.py | 31 +++++++++++++++++++++++-------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 0f5d395ff..462547d9e 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -106,7 +106,7 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: t.stop_loss, t.initial_stop_loss, t.strategy, t.ticker_interval ) - for t in Trade.query.all()], + for t in Trade.get_trades().all()], columns=columns) return trades diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index e527cde16..808e42c9a 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -11,6 +11,7 @@ from sqlalchemy import (Boolean, Column, DateTime, Float, Integer, String, create_engine, desc, func, inspect) from sqlalchemy.exc import NoSuchModuleError from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import Query from sqlalchemy.orm.scoping import scoped_session from sqlalchemy.orm.session import sessionmaker from sqlalchemy.pool import StaticPool @@ -391,12 +392,33 @@ class Trade(_DECL_BASE): profit_percent = (close_trade_price / open_trade_price) - 1 return float(f"{profit_percent:.8f}") + @staticmethod + def get_trades(trade_filter=None) -> Query: + """ + Helper function to query Trades using filter. + :param trade_filter: Filter to apply to trades + :return: Query object + """ + if trade_filter is not None: + if not isinstance(trade_filter, list): + trade_filter = [trade_filter] + return Trade.query.filter(*trade_filter) + else: + return Trade.query + + @staticmethod + def get_open_trades() -> List[Any]: + """ + Query trades from persistence layer + """ + return Trade.get_trades(Trade.is_open.is_(True)).all() + @staticmethod def get_open_order_trades(): """ Returns all open trades """ - return Trade.query.filter(Trade.open_order_id.isnot(None)).all() + return Trade.get_trades(Trade.open_order_id.isnot(None)).all() @staticmethod def total_open_trades_stakes() -> float: @@ -443,13 +465,6 @@ class Trade(_DECL_BASE): .order_by(desc('profit_sum')).first() return best_pair - @staticmethod - def get_open_trades() -> List[Any]: - """ - Query trades from persistence layer - """ - return Trade.query.filter(Trade.is_open.is_(True)).all() - @staticmethod def stoploss_reinitialization(desired_stoploss): """ From b37c5e4878c1900f8cb34d68438a59cf2c5c987d Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 29 Oct 2019 15:09:01 +0100 Subject: [PATCH 0850/3421] use get_trades in rpc modules --- freqtrade/persistence.py | 9 ++++++--- freqtrade/rpc/rpc.py | 25 ++++++++++--------------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 808e42c9a..a15db87c7 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -395,9 +395,12 @@ class Trade(_DECL_BASE): @staticmethod def get_trades(trade_filter=None) -> Query: """ - Helper function to query Trades using filter. - :param trade_filter: Filter to apply to trades - :return: Query object + Helper function to query Trades using filters. + :param trade_filter: Optional filter to apply to trades + Can be either a Filter object, or a List of filters + e.g. `(trade_filter=[Trade.id == trade_id, Trade.is_open.is_(True),])` + e.g. `(trade_filter=Trade.id == trade_id)` + :return: unsorted query object """ if trade_filter is not None: if not isinstance(trade_filter, list): diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index dc25c3743..8eecb04f9 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -9,7 +9,6 @@ from enum import Enum from typing import Dict, Any, List, Optional import arrow -import sqlalchemy as sql from numpy import mean, NAN from pandas import DataFrame @@ -154,12 +153,11 @@ class RPC: for day in range(0, timescale): profitday = today - timedelta(days=day) - trades = Trade.query \ - .filter(Trade.is_open.is_(False)) \ - .filter(Trade.close_date >= profitday)\ - .filter(Trade.close_date < (profitday + timedelta(days=1)))\ - .order_by(Trade.close_date)\ - .all() + trades = Trade.get_trades(trade_filter=[ + Trade.is_open.is_(False), + Trade.close_date >= profitday, + Trade.close_date < (profitday + timedelta(days=1)) + ]).order_by(Trade.close_date).all() curdayprofit = sum(trade.calc_profit() for trade in trades) profit_days[profitday] = { 'amount': f'{curdayprofit:.8f}', @@ -192,7 +190,7 @@ class RPC: def _rpc_trade_statistics( self, stake_currency: str, fiat_display_currency: str) -> Dict[str, Any]: """ Returns cumulative profit statistics """ - trades = Trade.query.order_by(Trade.id).all() + trades = Trade.get_trades().order_by(Trade.id).all() profit_all_coin = [] profit_all_perc = [] @@ -385,11 +383,8 @@ class RPC: return {'result': 'Created sell orders for all open trades.'} # Query for trade - trade = Trade.query.filter( - sql.and_( - Trade.id == trade_id, - Trade.is_open.is_(True) - ) + trade = Trade.get_trades( + trade_filter=[Trade.id == trade_id, Trade.is_open.is_(True), ] ).first() if not trade: logger.warning('forcesell: Invalid argument received') @@ -419,7 +414,7 @@ class RPC: # check if valid pair # check if pair already has an open pair - trade = Trade.query.filter(Trade.is_open.is_(True)).filter(Trade.pair.is_(pair)).first() + trade = Trade.get_trades([Trade.is_open.is_(True), Trade.pair.is_(pair)]).first() if trade: raise RPCException(f'position for {pair} already open - id: {trade.id}') @@ -428,7 +423,7 @@ class RPC: # execute buy if self._freqtrade.execute_buy(pair, stakeamount, price): - trade = Trade.query.filter(Trade.is_open.is_(True)).filter(Trade.pair.is_(pair)).first() + trade = Trade.get_trades([Trade.is_open.is_(True), Trade.pair.is_(pair)]).first() return trade else: return None From c2076d86a4f32901784f905f251d3b94bd1cc1a3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 29 Oct 2019 14:26:03 +0100 Subject: [PATCH 0851/3421] Use scoped_session as intended --- freqtrade/persistence.py | 8 +++++--- tests/test_persistence.py | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index a15db87c7..27a283378 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -51,9 +51,11 @@ def init(db_url: str, clean_open_orders: bool = False) -> None: raise OperationalException(f"Given value for db_url: '{db_url}' " f"is no valid database URL! (See {_SQL_DOCS_URL})") - session = scoped_session(sessionmaker(bind=engine, autoflush=True, autocommit=True)) - Trade.session = session() - Trade.query = session.query_property() + # https://docs.sqlalchemy.org/en/13/orm/contextual.html#thread-local-scope + # Scoped sessions proxy requests to the appropriate thread-local session. + # We should use the scoped_session object - not a seperately initialized version + Trade.session = scoped_session(sessionmaker(bind=engine, autoflush=True, autocommit=True)) + Trade.query = Trade.session.query_property() _DECL_BASE.metadata.create_all(engine) check_migrate(engine) diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 4aa69423e..231a1d2e2 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -61,7 +61,7 @@ def test_init_create_session(default_conf): # Check if init create a session init(default_conf['db_url'], default_conf['dry_run']) assert hasattr(Trade, 'session') - assert 'Session' in type(Trade.session).__name__ + assert 'scoped_session' in type(Trade.session).__name__ def test_init_custom_db_url(default_conf, mocker): From 5ed777114837cd549b17193df6a37b3e64c41792 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 29 Oct 2019 15:39:36 +0100 Subject: [PATCH 0852/3421] Update documentation to include get_trades fixes #1753 --- docs/strategy-customization.md | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index cef362ffd..71d6f3e8f 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -405,6 +405,52 @@ if self.wallets: - `get_used(asset)` - currently tied up balance (open orders) - `get_total(asset)` - total available balance - sum of the 2 above +### Additional data (Trades) + +A history of Trades can be retrieved in the strategy by querying the database. + +At the top of the file, import Trade. + +```python +from freqtrade.persistence import Trade +``` + +The following example queries for the current pair and trades from today, however other filters easily be added. + +``` python +if self.config['runmode'] in ('live', 'dry_run'): + trades = Trade.get_trades([Trade.pair == metadata['pair'], + Trade.open_date > datetime.utcnow() - timedelta(days=1), + Trade.is_open == False, + ]).order_by(Trade.close_date).all() + # Summarize profit for this pair. + curdayprofit = sum(trade.close_profit for trade in trades) +``` + +Get amount of stake_currency currently invested in Trades: + +``` python +if self.config['runmode'] in ('live', 'dry_run'): + total_stakes = Trade.total_open_trades_stakes() +``` + +Retrieve performance per pair. +Returns a List of dicts per pair. + +``` python +if self.config['runmode'] in ('live', 'dry_run'): + performance = Trade.get_overall_performance() +``` + +Sample return value: ETH/BTC had 5 trades, with a total profit of 1.5%. + +``` json +{'pair': "ETH/BTC", 'profit': 1.5, 'count': 5} +``` + +!!! Warning + Trade history is not available during backtesting or hyperopt. + ### Print created dataframe To inspect the created dataframe, you can issue a print-statement in either `populate_buy_trend()` or `populate_sell_trend()`. From b7b1e66c6ee3c6dc4342aef73dc5c4e7c8056701 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 09:59:54 +0100 Subject: [PATCH 0853/3421] Convert to % as part of RPC to allow users to use unrounded ratio --- docs/strategy-customization.md | 6 +++--- freqtrade/persistence.py | 4 ++-- freqtrade/rpc/rpc.py | 7 +++++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 71d6f3e8f..b3b6e3548 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -415,7 +415,7 @@ At the top of the file, import Trade. from freqtrade.persistence import Trade ``` -The following example queries for the current pair and trades from today, however other filters easily be added. +The following example queries for the current pair and trades from today, however other filters can easily be added. ``` python if self.config['runmode'] in ('live', 'dry_run'): @@ -442,10 +442,10 @@ if self.config['runmode'] in ('live', 'dry_run'): performance = Trade.get_overall_performance() ``` -Sample return value: ETH/BTC had 5 trades, with a total profit of 1.5%. +Sample return value: ETH/BTC had 5 trades, with a total profit of 1.5% (ratio of 0.015). ``` json -{'pair': "ETH/BTC", 'profit': 1.5, 'count': 5} +{'pair': "ETH/BTC", 'profit': 0.015, 'count': 5} ``` !!! Warning diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 27a283378..735c740c3 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -437,7 +437,7 @@ class Trade(_DECL_BASE): return total_open_stake_amount or 0 @staticmethod - def get_overall_performance() -> List[Dict]: + def get_overall_performance() -> List[Dict[str, Any]]: """ Returns List of dicts containing all Trades, including profit and trade count """ @@ -452,7 +452,7 @@ class Trade(_DECL_BASE): return [ { 'pair': pair, - 'profit': round(rate * 100, 2), + 'profit': rate, 'count': count } for pair, rate, count in pair_rates diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 8eecb04f9..4aed48f74 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -428,12 +428,15 @@ class RPC: else: return None - def _rpc_performance(self) -> List[Dict]: + def _rpc_performance(self) -> List[Dict[str, Any]]: """ Handler for performance. Shows a performance statistic from finished trades """ - return Trade.get_overall_performance() + pair_rates = Trade.get_overall_performance() + # Round and convert to % + [x.update({'profit': round(x['profit'] * 100, 2)}) for x in pair_rates] + return pair_rates def _rpc_count(self) -> Dict[str, float]: """ Returns the number of trades running """ From 7a96d3c9ae8992d2962640e668be1d6bebbb5a72 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 13:27:04 +0100 Subject: [PATCH 0854/3421] Update raspbian install documentation Fix "box" titles ... they need to be in quotes! --- docs/configuration.md | 2 +- docs/data-download.md | 2 +- docs/docker.md | 2 +- docs/installation.md | 25 +++++++++++-------------- docs/plotting.md | 2 +- docs/rest-api.md | 8 ++++---- docs/strategy-customization.md | 8 ++++---- docs/telegram-usage.md | 2 +- 8 files changed, 24 insertions(+), 27 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 1ad13c87a..6ba0447b5 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -254,7 +254,7 @@ Configuration: !!! Note If `stoploss_on_exchange` is enabled and the stoploss is cancelled manually on the exchange, then the bot will create a new order. -!!! Warning stoploss_on_exchange failures +!!! Warning "Warning: stoploss_on_exchange failures" If stoploss on exchange creation fails for some reason, then an "emergency sell" is initiated. By default, this will sell the asset using a market order. The order-type for the emergency-sell can be changed by setting the `emergencysell` value in the `order_types` dictionary - however this is not advised. ### Understand order_time_in_force diff --git a/docs/data-download.md b/docs/data-download.md index bf4792ea3..f105e7a56 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -8,7 +8,7 @@ If no additional parameter is specified, freqtrade will download data for `"1m"` Exchange and pairs will come from `config.json` (if specified using `-c/--config`). Otherwise `--exchange` becomes mandatory. -!!! Tip Updating existing data +!!! Tip "Tip: Updating existing data" If you already have backtesting data available in your data-directory and would like to refresh this data up to today, use `--days xx` with a number slightly higher than the missing number of days. Freqtrade will keep the available data and only download the missing data. Be carefull though: If the number is too small (which would result in a few missing days), the whole dataset will be removed and only xx days will be downloaded. diff --git a/docs/docker.md b/docs/docker.md index 923dec1e2..8a254b749 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -26,7 +26,7 @@ To update the image, simply run the above commands again and restart your runnin Should you require additional libraries, please [build the image yourself](#build-your-own-docker-image). -!!! Note Docker image update frequency +!!! Note "Docker image update frequency" The official docker images with tags `master`, `develop` and `latest` are automatically rebuild once a week to keep the base image uptodate. In addition to that, every merge to `develop` will trigger a rebuild for `develop` and `latest`. diff --git a/docs/installation.md b/docs/installation.md index 02870a1c1..50f24d3e8 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -97,27 +97,24 @@ sudo apt-get install build-essential git #### Raspberry Pi / Raspbian -Before installing FreqTrade on a Raspberry Pi running the official Raspbian Image, make sure you have at least Python 3.6 installed. The default image only provides Python 3.5. Probably the easiest way to get a recent version of python is [miniconda](https://repo.continuum.io/miniconda/). +The following assumes the latest [Raspbian Buster lite image](https://www.raspberrypi.org/downloads/raspbian/) from at least September 2019. +This image comes with python3.7 preinstalled, making it easy to get freqtrade up and running. -The following assumes that miniconda3 is installed and available in your environment. Since the last miniconda3 installation file uses python 3.4, we will update to python 3.6 on this installation. -It's recommended to use (mini)conda for this as installation/compilation of `numpy` and `pandas` takes a long time. - -Additional package to install on your Raspbian, `libffi-dev` required by cryptography (from python-telegram-bot). +Tested using a Raspberry Pi 3 with the Raspbian Buster lite image, all updates applied. ``` bash -conda config --add channels rpi -conda install python=3.6 -conda create -n freqtrade python=3.6 -conda activate freqtrade -conda install pandas numpy +sudo apt-get install python3-venv libatlas-base-dev +git clone https://github.com/freqtrade/freqtrade.git +cd freqtrade -sudo apt install libffi-dev -python3 -m pip install -r requirements-common.txt -python3 -m pip install -e . +bash setup.sh -i ``` +!!! Note "Installation duration" + Depending on your internet speed and the Raspberry Pi version, installation can take multiple hours to complete. + !!! Note - This does not install hyperopt dependencies. To install these, please use `python3 -m pip install -e .[hyperopt]`. + The above does not install hyperopt dependencies. To install these, please use `python3 -m pip install -e .[hyperopt]`. We do not advise to run hyperopt on a Raspberry Pi, since this is a very resource-heavy operation, which should be done on powerful machine. ### Common diff --git a/docs/plotting.md b/docs/plotting.md index 89404f8b1..ca56bdaba 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -79,7 +79,7 @@ The `-p/--pairs` argument can be used to specify pairs you would like to plot. Specify custom indicators. Use `--indicators1` for the main plot and `--indicators2` for the subplot below (if values are in a different range than prices). -!!! tip +!!! Tip You will almost certainly want to specify a custom strategy! This can be done by adding `-s Classname` / `--strategy ClassName` to the command. ``` bash diff --git a/docs/rest-api.md b/docs/rest-api.md index efcacc8a1..4d5bc5730 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -16,11 +16,11 @@ Sample configuration: }, ``` -!!! Danger Security warning - By default, the configuration listens on localhost only (so it's not reachable from other systems). We strongly recommend to not expose this API to the internet and choose a strong, unique password, since others will potentially be able to control your bot. +!!! Danger "Security warning" + By default, the configuration listens on localhost only (so it's not reachable from other systems). We strongly recommend to not expose this API to the internet and choose a strong, unique password, since others will potentially be able to control your bot. -!!! Danger Password selection - Please make sure to select a very strong, unique password to protect your bot from unauthorized access. +!!! Danger "Password selection" + Please make sure to select a very strong, unique password to protect your bot from unauthorized access. You can then access the API by going to `http://127.0.0.1:8080/api/v1/version` to check if the API is running correctly. diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index cef362ffd..8836f4f88 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -51,13 +51,13 @@ freqtrade --strategy AwesomeStrategy **For the following section we will use the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/sample_strategy.py) file as reference.** -!!! Note Strategies and Backtesting +!!! Note "Strategies and Backtesting" To avoid problems and unexpected differences between Backtesting and dry/live modes, please be aware that during backtesting the full time-interval is passed to the `populate_*()` methods at once. It is therefore best to use vectorized operations (across the whole dataframe, not loops) and avoid index referencing (`df.iloc[-1]`), but instead use `df.shift()` to get to the previous candle. -!!! Warning Using future data +!!! Warning "Warning: Using future data" Since backtesting passes the full time interval to the `populate_*()` methods, the strategy author needs to take care to avoid having the strategy utilize data from the future. Some common patterns for this are listed in the [Common Mistakes](#common-mistakes-when-developing-strategies) section of this document. @@ -330,12 +330,12 @@ if self.dp: ticker_interval=inf_timeframe) ``` -!!! Warning Warning about backtesting +!!! Warning "Warning about backtesting" Be carefull when using dataprovider in backtesting. `historic_ohlcv()` (and `get_pair_dataframe()` for the backtesting runmode) provides the full time-range in one go, so please be aware of it and make sure to not "look into the future" to avoid surprises when running in dry/live mode). -!!! Warning Warning in hyperopt +!!! Warning "Warning in hyperopt" This option cannot currently be used during hyperopt. #### Orderbook diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md index e06d4fdfc..424b55faf 100644 --- a/docs/telegram-usage.md +++ b/docs/telegram-usage.md @@ -93,7 +93,7 @@ Once all positions are sold, run `/stop` to completely stop the bot. `/reload_conf` resets "max_open_trades" to the value set in the configuration and resets this command. -!!! warning +!!! Warning The stop-buy signal is ONLY active while the bot is running, and is not persisted anyway, so restarting the bot will cause this to reset. ### /status From 78fe5a46c1c8d18836740eddc77f478fc3dadad2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 13:27:36 +0100 Subject: [PATCH 0855/3421] Update travis to verify for correct title usage --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 405228ab8..eb171521d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -39,7 +39,8 @@ jobs: - script: # Test Documentation boxes - # !!! : is not allowed! - - grep -Er '^!{3}\s\S+:' docs/*; test $? -ne 0 + # !!! "title" - Title needs to be quoted! + - grep -Er '^!{3}\s\S+:|^!{3}\s\S+\s[^"]' docs/*; test $? -ne 0 name: doc syntax - script: mypy freqtrade scripts name: mypy From dac88c6aedf8582ea608df7471720cc83e015727 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 13:35:55 +0100 Subject: [PATCH 0856/3421] extract Find parallel trades per interval --- freqtrade/data/btanalysis.py | 32 ++++++++++++++++++++++-------- tests/optimize/test_backtesting.py | 6 +++--- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 0f5d395ff..9dbd69e3e 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -52,16 +52,17 @@ def load_backtest_data(filename) -> pd.DataFrame: return df -def evaluate_result_multi(results: pd.DataFrame, freq: str, max_open_trades: int) -> pd.DataFrame: +def parallel_trade_analysis(results: pd.DataFrame, timeframe: str) -> pd.DataFrame: """ Find overlapping trades by expanding each trade once per period it was open - and then counting overlaps + and then counting overlaps. :param results: Results Dataframe - can be loaded - :param freq: Frequency used for the backtest - :param max_open_trades: parameter max_open_trades used during backtest run - :return: dataframe with open-counts per time-period in freq + :param timeframe: Timeframe used for backtest + :return: dataframe with open-counts per time-period in timeframe """ - dates = [pd.Series(pd.date_range(row[1].open_time, row[1].close_time, freq=freq)) + from freqtrade.exchange import timeframe_to_minutes + timeframe_min = timeframe_to_minutes(timeframe) + dates = [pd.Series(pd.date_range(row[1].open_time, row[1].close_time, freq=f"{timeframe_min}min")) for row in results[['open_time', 'close_time']].iterrows()] deltas = [len(x) for x in dates] dates = pd.Series(pd.concat(dates).values, name='date') @@ -69,8 +70,23 @@ def evaluate_result_multi(results: pd.DataFrame, freq: str, max_open_trades: int df2 = pd.concat([dates, df2], axis=1) df2 = df2.set_index('date') - df_final = df2.resample(freq)[['pair']].count() - return df_final[df_final['pair'] > max_open_trades] + df_final = df2.resample(f"{timeframe_min}min")[['pair']].count() + df_final = df_final.rename({'pair': 'open_trades'}, axis=1) + return df_final + + +def evaluate_result_multi(results: pd.DataFrame, timeframe: str, + max_open_trades: int) -> pd.DataFrame: + """ + Find overlapping trades by expanding each trade once per period it was open + and then counting overlaps + :param results: Results Dataframe - can be loaded + :param timeframe: Frequency used for the backtest + :param max_open_trades: parameter max_open_trades used during backtest run + :return: dataframe with open-counts per time-period in freq + """ + df_final = parallel_trade_analysis(results, timeframe) + return df_final[df_final['open_trades'] > max_open_trades] def load_trades_from_db(db_url: str) -> pd.DataFrame: diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index ba87848ec..5912c5489 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -714,9 +714,9 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) results = backtesting.backtest(backtest_conf) # Make sure we have parallel trades - assert len(evaluate_result_multi(results, '5min', 2)) > 0 + assert len(evaluate_result_multi(results, '5m', 2)) > 0 # make sure we don't have trades with more than configured max_open_trades - assert len(evaluate_result_multi(results, '5min', 3)) == 0 + assert len(evaluate_result_multi(results, '5m', 3)) == 0 backtest_conf = { 'stake_amount': default_conf['stake_amount'], @@ -727,7 +727,7 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) 'end_date': max_date, } results = backtesting.backtest(backtest_conf) - assert len(evaluate_result_multi(results, '5min', 1)) == 0 + assert len(evaluate_result_multi(results, '5m', 1)) == 0 def test_backtest_record(default_conf, fee, mocker): From dd408aa5d63df6e02884616910da9b9fc7eb1378 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 14:07:23 +0100 Subject: [PATCH 0857/3421] Add analyze_trade_parallelism analysis function --- freqtrade/data/btanalysis.py | 7 ++++--- tests/data/test_btanalysis.py | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 9dbd69e3e..b9625e745 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -52,7 +52,7 @@ def load_backtest_data(filename) -> pd.DataFrame: return df -def parallel_trade_analysis(results: pd.DataFrame, timeframe: str) -> pd.DataFrame: +def analyze_trade_parallelism(results: pd.DataFrame, timeframe: str) -> pd.DataFrame: """ Find overlapping trades by expanding each trade once per period it was open and then counting overlaps. @@ -62,7 +62,8 @@ def parallel_trade_analysis(results: pd.DataFrame, timeframe: str) -> pd.DataFra """ from freqtrade.exchange import timeframe_to_minutes timeframe_min = timeframe_to_minutes(timeframe) - dates = [pd.Series(pd.date_range(row[1].open_time, row[1].close_time, freq=f"{timeframe_min}min")) + dates = [pd.Series(pd.date_range(row[1].open_time, row[1].close_time, + freq=f"{timeframe_min}min")) for row in results[['open_time', 'close_time']].iterrows()] deltas = [len(x) for x in dates] dates = pd.Series(pd.concat(dates).values, name='date') @@ -85,7 +86,7 @@ def evaluate_result_multi(results: pd.DataFrame, timeframe: str, :param max_open_trades: parameter max_open_trades used during backtest run :return: dataframe with open-counts per time-period in freq """ - df_final = parallel_trade_analysis(results, timeframe) + df_final = analyze_trade_parallelism(results, timeframe) return df_final[df_final['open_trades'] > max_open_trades] diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 78781cffd..b49344bbd 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -10,7 +10,7 @@ from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, create_cum_profit, extract_trades_of_period, load_backtest_data, load_trades, - load_trades_from_db) + load_trades_from_db, analyze_trade_parallelism) from freqtrade.data.history import load_data, load_pair_history from tests.test_persistence import create_mock_trades @@ -32,7 +32,7 @@ def test_load_backtest_data(testdatadir): @pytest.mark.usefixtures("init_persistence") -def test_load_trades_db(default_conf, fee, mocker): +def test_load_trades_from_db(default_conf, fee, mocker): create_mock_trades(fee) # remove init so it does not init again @@ -84,6 +84,17 @@ def test_extract_trades_of_period(testdatadir): assert trades1.iloc[-1].close_time == Arrow(2017, 11, 14, 15, 25, 0).datetime +def test_analyze_trade_parallelism(default_conf, mocker, testdatadir): + filename = testdatadir / "backtest-result_test.json" + bt_data = load_backtest_data(filename) + + res = analyze_trade_parallelism(bt_data, "5m") + assert isinstance(res, DataFrame) + assert 'open_trades' in res.columns + assert res['open_trades'].max() == 3 + assert res['open_trades'].min() == 0 + + def test_load_trades(default_conf, mocker): db_mock = mocker.patch("freqtrade.data.btanalysis.load_trades_from_db", MagicMock()) bt_mock = mocker.patch("freqtrade.data.btanalysis.load_backtest_data", MagicMock()) From 6928c685a8ee8894b5494974f90ae079dcae9fc1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 14:12:41 +0100 Subject: [PATCH 0858/3421] Add documentation sample for parallel_trade_analysis --- docs/strategy_analysis_example.md | 16 ++++++++++ .../notebooks/strategy_analysis_example.ipynb | 29 +++++++++++++++++-- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index 49800bbb3..55f1bd908 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -107,6 +107,22 @@ trades = load_trades_from_db("sqlite:///tradesv3.sqlite") trades.groupby("pair")["sell_reason"].value_counts() ``` +## Analyze the loaded trades for trade parallelism +This can be useful to find the best `max_open_trades` parameter, when used with backtesting in conjunction with `--disable-max-market-positions`. + +`parallel_trade_analysis()` returns a timeseries dataframe with an "open_trades" column, specifying the number of open trades for each candle. + + +```python +from freqtrade.data.btanalysis import parallel_trade_analysis + +# Analyze the above +parallel_trades = parallel_trade_analysis(trades, '5m') + + +parallel_trades.plot() +``` + ## Plot results Freqtrade offers interactive plotting capabilities based on plotly. diff --git a/user_data/notebooks/strategy_analysis_example.ipynb b/user_data/notebooks/strategy_analysis_example.ipynb index b9576e0bb..edb05a7ca 100644 --- a/user_data/notebooks/strategy_analysis_example.ipynb +++ b/user_data/notebooks/strategy_analysis_example.ipynb @@ -68,9 +68,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "scrolled": true - }, + "metadata": {}, "outputs": [], "source": [ "# Load strategy using values set above\n", @@ -169,6 +167,31 @@ "trades.groupby(\"pair\")[\"sell_reason\"].value_counts()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analyze the loaded trades for trade parallelism\n", + "This can be useful to find the best `max_open_trades` parameter, when used with backtesting in conjunction with `--disable-max-market-positions`.\n", + "\n", + "`parallel_trade_analysis()` returns a timeseries dataframe with an \"open_trades\" column, specifying the number of open trades for each candle." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from freqtrade.data.btanalysis import parallel_trade_analysis\n", + "\n", + "# Analyze the above\n", + "parallel_trades = parallel_trade_analysis(trades, '5m')\n", + "\n", + "\n", + "parallel_trades.plot()" + ] + }, { "cell_type": "markdown", "metadata": {}, From 44289e4c586324e1026ad0de03e1ef3c746128bd Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 15:55:35 +0100 Subject: [PATCH 0859/3421] Allow not using files from user_dir --- freqtrade/resolvers/iresolver.py | 10 +++++----- freqtrade/resolvers/pairlist_resolver.py | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 51c4f7dba..3bad42fd9 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -17,13 +17,13 @@ class IResolver: This class contains all the logic to load custom classes """ - def build_search_paths(self, config, current_path: Path, user_subdir: str, + def build_search_paths(self, config, current_path: Path, user_subdir: Optional[str] = None, extra_dir: Optional[str] = None) -> List[Path]: - abs_paths = [ - config['user_data_dir'].joinpath(user_subdir), - current_path, - ] + abs_paths: List[Path] = [current_path] + + if user_subdir: + abs_paths.insert(0, config['user_data_dir'].joinpath(user_subdir)) if extra_dir: # Add extra directory to the top of the search paths diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index c2782a219..0f23bb3fd 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -40,7 +40,7 @@ class PairListResolver(IResolver): current_path = Path(__file__).parent.parent.joinpath('pairlist').resolve() abs_paths = self.build_search_paths(config, current_path=current_path, - user_subdir='pairlist', extra_dir=None) + user_subdir=None, extra_dir=None) pairlist = self._load_object(paths=abs_paths, object_type=IPairList, object_name=pairlist_name, kwargs=kwargs) From fd9c02603cfea41876dd562e224e15025c0637a9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 15:59:52 +0100 Subject: [PATCH 0860/3421] Introduce chainable PairlistFilters --- freqtrade/pairlist/IPairList.py | 36 +++++++++-- freqtrade/pairlist/IPairListFilter.py | 18 ++++++ freqtrade/pairlist/LowPriceFilter.py | 48 ++++++++++++++ freqtrade/pairlist/PrecisionFilter.py | 51 +++++++++++++++ freqtrade/pairlist/StaticPairList.py | 2 +- freqtrade/pairlist/VolumePairList.py | 62 +------------------ .../resolvers/pairlistfilter_resolver.py | 53 ++++++++++++++++ 7 files changed, 203 insertions(+), 67 deletions(-) create mode 100644 freqtrade/pairlist/IPairListFilter.py create mode 100644 freqtrade/pairlist/LowPriceFilter.py create mode 100644 freqtrade/pairlist/PrecisionFilter.py create mode 100644 freqtrade/resolvers/pairlistfilter_resolver.py diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index 5afb0c4c2..eb6af9d52 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -6,10 +6,11 @@ Provides lists as configured in config.json """ import logging from abc import ABC, abstractmethod -from typing import List +from typing import Dict, List from freqtrade.exchange import market_is_active - +from freqtrade.pairlist.IPairListFilter import IPairListFilter +from freqtrade.resolvers.pairlistfilter_resolver import PairListFilterResolver logger = logging.getLogger(__name__) @@ -21,6 +22,12 @@ class IPairList(ABC): self._config = config self._whitelist = self._config['exchange']['pair_whitelist'] self._blacklist = self._config['exchange'].get('pair_blacklist', []) + self._filters = self._config.get('pairlist', {}).get('filters', {}) + self._pairlistfilters: List[IPairListFilter] = [] + for pl_filter in self._filters.keys(): + self._pairlistfilters.append( + PairListFilterResolver(pl_filter, freqtrade, self._config).pairlistfilter + ) @property def name(self) -> str: @@ -60,7 +67,23 @@ class IPairList(ABC): -> Please overwrite in subclasses """ - def _validate_whitelist(self, whitelist: List[str]) -> List[str]: + def validate_whitelist(self, pairlist: List[str], + tickers: List[Dict] = []) -> List[str]: + """ + Validate pairlist against active markets and blacklist. + Run PairlistFilters if these are configured. + """ + pairlist = self._whitelist_for_active_markets(pairlist) + + if not tickers: + # Refresh tickers if they are not used by the parent Pairlist + tickers = self._freqtrade.exchange.get_tickers() + + for pl_filter in self._pairlistfilters: + pairlist = pl_filter.filter_pairlist(pairlist, tickers) + return pairlist + + def _whitelist_for_active_markets(self, whitelist: List[str]) -> List[str]: """ Check available markets and remove pair from whitelist if necessary :param whitelist: the sorted list of pairs the user might want to trade @@ -69,7 +92,7 @@ class IPairList(ABC): """ markets = self._freqtrade.exchange.markets - sanitized_whitelist = set() + sanitized_whitelist: List[str] = [] for pair in whitelist: # pair is not in the generated dynamic market, or in the blacklist ... ignore it if (pair in self.blacklist or pair not in markets @@ -83,7 +106,8 @@ class IPairList(ABC): if not market_is_active(market): logger.info(f"Ignoring {pair} from whitelist. Market is not active.") continue - sanitized_whitelist.add(pair) + if pair not in sanitized_whitelist: + sanitized_whitelist.append(pair) # We need to remove pairs that are unknown - return list(sanitized_whitelist) + return sanitized_whitelist diff --git a/freqtrade/pairlist/IPairListFilter.py b/freqtrade/pairlist/IPairListFilter.py new file mode 100644 index 000000000..4b43f0e9f --- /dev/null +++ b/freqtrade/pairlist/IPairListFilter.py @@ -0,0 +1,18 @@ +import logging +from abc import ABC, abstractmethod +from typing import Dict, List + +logger = logging.getLogger(__name__) + + +class IPairListFilter(ABC): + + def __init__(self, freqtrade, config: dict) -> None: + self._freqtrade = freqtrade + self._config = config + + @abstractmethod + def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: + """ + Method doing the filtering + """ diff --git a/freqtrade/pairlist/LowPriceFilter.py b/freqtrade/pairlist/LowPriceFilter.py new file mode 100644 index 000000000..499dd0c15 --- /dev/null +++ b/freqtrade/pairlist/LowPriceFilter.py @@ -0,0 +1,48 @@ +import logging +from copy import deepcopy +from typing import Dict, List + +from freqtrade.pairlist.IPairListFilter import IPairListFilter + +logger = logging.getLogger(__name__) + + +class LowPriceFilter(IPairListFilter): + + def __init__(self, freqtrade, config: dict) -> None: + super().__init__(freqtrade, config) + + self._low_price_percent = config['pairlist']['filters']['LowPriceFilter'].get( + 'low_price_percent', 0) + + def _validate_precision_filter_lowprice(self, ticker) -> bool: + """ + Check if if one price-step is > than a certain barrier. + :param ticker: ticker dict as returned from ccxt.load_markets() + :param precision: Precision + :return: True if the pair can stay, false if it should be removed + """ + precision = self._freqtrade.exchange.markets[ticker['symbol']]['precision']['price'] + + compare = ticker['last'] + 1 / pow(10, precision) + changeperc = (compare - ticker['last']) / ticker['last'] + if changeperc > self._low_price_percent: + logger.info(f"Removed {ticker['symbol']} from whitelist, " + f"because 1 unit is {changeperc * 100:.3f}%") + return False + return True + + def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: + """ + Method doing the filtering + """ + + # Copy list since we're modifying this list + for p in deepcopy(pairlist): + ticker = [t for t in tickers if t['symbol'] == p][0] + + # Filter out assets which would not allow setting a stoploss + if self._low_price_percent and not self._validate_precision_filter_lowprice(ticker): + pairlist.remove(p) + + return pairlist diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py new file mode 100644 index 000000000..c720b8e61 --- /dev/null +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -0,0 +1,51 @@ +import logging +from copy import deepcopy +from typing import Dict, List + +from freqtrade.pairlist.IPairListFilter import IPairListFilter + +logger = logging.getLogger(__name__) + + +class PrecisionFilter(IPairListFilter): + + def __init__(self, freqtrade, config: dict) -> None: + super().__init__(freqtrade, config) + + def _validate_precision_filter(self, ticker: dict, stoploss: float) -> bool: + """ + Check if pair has enough room to add a stoploss to avoid "unsellable" buys of very + low value pairs. + :param ticker: ticker dict as returned from ccxt.load_markets() + :param stoploss: stoploss value as set in the configuration + (already cleaned to be 1 - stoploss) + :return: True if the pair can stay, false if it should be removed + """ + stop_price = self._freqtrade.get_target_bid(ticker["symbol"], ticker) * stoploss + # Adjust stop-prices to precision + sp = self._freqtrade.exchange.symbol_price_prec(ticker["symbol"], stop_price) + stop_gap_price = self._freqtrade.exchange.symbol_price_prec(ticker["symbol"], + stop_price * 0.99) + logger.debug(f"{ticker['symbol']} - {sp} : {stop_gap_price}") + if sp <= stop_gap_price: + logger.info(f"Removed {ticker['symbol']} from whitelist, " + f"because stop price {sp} would be <= stop limit {stop_gap_price}") + return False + return True + + def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: + """ + Method doing the filtering + """ + if self._freqtrade.strategy.stoploss is not None: + # Precalculate sanitized stoploss value to avoid recalculation for every pair + stoploss = 1 - abs(self._freqtrade.strategy.stoploss) + # Copy list since we're modifying this list + for p in deepcopy(pairlist): + ticker = [t for t in tickers if t['symbol'] == p][0] + # Filter out assets which would not allow setting a stoploss + if (stoploss and not self._validate_precision_filter(ticker, stoploss)): + pairlist.remove(p) + continue + + return pairlist diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index 5896e814a..074652b25 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -27,4 +27,4 @@ class StaticPairList(IPairList): """ Refreshes pairlists and assigns them to self._whitelist and self._blacklist respectively """ - self._whitelist = self._validate_whitelist(self._config['exchange']['pair_whitelist']) + self._whitelist = self.validate_whitelist(self._config['exchange']['pair_whitelist']) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 7c17c6d57..911bb3bda 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -5,7 +5,6 @@ Provides lists as configured in config.json """ import logging -from copy import deepcopy from typing import List from cachetools import TTLCache, cached @@ -30,7 +29,6 @@ class VolumePairList(IPairList): self._number_pairs = self._whitelistconf['number_assets'] self._sort_key = self._whitelistconf.get('sort_key', 'quoteVolume') self._precision_filter = self._whitelistconf.get('precision_filter', True) - self._low_price_percent_filter = self._whitelistconf.get('low_price_percent_filter', None) if not self._freqtrade.exchange.exchange_has('fetchTickers'): raise OperationalException( @@ -60,44 +58,6 @@ class VolumePairList(IPairList): self._whitelist = self._gen_pair_whitelist( self._config['stake_currency'], self._sort_key) - def _validate_precision_filter(self, ticker: dict, stoploss: float) -> bool: - """ - Check if pair has enough room to add a stoploss to avoid "unsellable" buys of very - low value pairs. - :param ticker: ticker dict as returned from ccxt.load_markets() - :param stoploss: stoploss value as set in the configuration - (already cleaned to be 1 - stoploss) - :return: True if the pair can stay, false if it should be removed - """ - stop_price = self._freqtrade.get_target_bid(ticker["symbol"], ticker) * stoploss - # Adjust stop-prices to precision - sp = self._freqtrade.exchange.symbol_price_prec(ticker["symbol"], stop_price) - stop_gap_price = self._freqtrade.exchange.symbol_price_prec(ticker["symbol"], - stop_price * 0.99) - logger.debug(f"{ticker['symbol']} - {sp} : {stop_gap_price}") - if sp <= stop_gap_price: - logger.info(f"Removed {ticker['symbol']} from whitelist, " - f"because stop price {sp} would be <= stop limit {stop_gap_price}") - return False - return True - - def _validate_precision_filter_lowprice(self, ticker) -> bool: - """ - Check if if one price-step is > than a certain barrier. - :param ticker: ticker dict as returned from ccxt.load_markets() - :param precision: Precision - :return: True if the pair can stay, false if it should be removed - """ - precision = self._freqtrade.exchange.markets[ticker['symbol']]['precision']['price'] - - compare = ticker['last'] + 1 / pow(10, precision) - changeperc = (compare - ticker['last']) / ticker['last'] - if changeperc > self._low_price_percent_filter: - logger.info(f"Removed {ticker['symbol']} from whitelist, " - f"because 1 unit is {changeperc * 100:.3f}%") - return False - return True - @cached(TTLCache(maxsize=1, ttl=1800)) def _gen_pair_whitelist(self, base_currency: str, key: str) -> List[str]: """ @@ -114,26 +74,8 @@ class VolumePairList(IPairList): and v[key] is not None)] sorted_tickers = sorted(tickers, reverse=True, key=lambda t: t[key]) # Validate whitelist to only have active market pairs - valid_pairs = self._validate_whitelist([s['symbol'] for s in sorted_tickers]) - valid_tickers = [t for t in sorted_tickers if t["symbol"] in valid_pairs] + pairs = self.validate_whitelist([s['symbol'] for s in sorted_tickers], tickers) - stoploss = None - if self._freqtrade.strategy.stoploss is not None: - # Precalculate sanitized stoploss value to avoid recalculation for every pair - stoploss = 1 - abs(self._freqtrade.strategy.stoploss) - - # Copy list since we're modifying this list - for t in deepcopy(valid_tickers): - # Filter out assets which would not allow setting a stoploss - if (stoploss and self._precision_filter - and not self._validate_precision_filter(t, stoploss)): - valid_tickers.remove(t) - continue - if self._low_price_percent_filter and not self._validate_precision_filter_lowprice(t,): - valid_tickers.remove(t) - continue - - pairs = [s['symbol'] for s in valid_tickers] - logger.info(f"Searching pairs: {pairs[:self._number_pairs]}") + logger.info(f"Searching {self._number_pairs} pairs: {pairs[:self._number_pairs]}") return pairs diff --git a/freqtrade/resolvers/pairlistfilter_resolver.py b/freqtrade/resolvers/pairlistfilter_resolver.py new file mode 100644 index 000000000..bf86d1c6c --- /dev/null +++ b/freqtrade/resolvers/pairlistfilter_resolver.py @@ -0,0 +1,53 @@ +# pragma pylint: disable=attribute-defined-outside-init + +""" +This module load custom pairlists +""" +import logging +from pathlib import Path + +from freqtrade import OperationalException +from freqtrade.pairlist.IPairListFilter import IPairListFilter +from freqtrade.resolvers import IResolver + +logger = logging.getLogger(__name__) + + +class PairListFilterResolver(IResolver): + """ + This class contains all the logic to load custom PairList class + """ + + __slots__ = ['pairlistfilter'] + + def __init__(self, pairlist_name: str, freqtrade, config: dict) -> None: + """ + Load the custom class from config parameter + :param config: configuration dictionary or None + """ + self.pairlistfilter = self._load_pairlist(pairlist_name, config, + kwargs={'freqtrade': freqtrade, + 'config': config}) + + def _load_pairlist( + self, pairlistfilter_name: str, config: dict, kwargs: dict) -> IPairListFilter: + """ + Search and loads the specified pairlist. + :param pairlistfilter_name: name of the module to import + :param config: configuration dictionary + :param extra_dir: additional directory to search for the given pairlist + :return: PairList instance or None + """ + current_path = Path(__file__).parent.parent.joinpath('pairlist').resolve() + + abs_paths = self.build_search_paths(config, current_path=current_path, + user_subdir=None, extra_dir=None) + + pairlist = self._load_object(paths=abs_paths, object_type=IPairListFilter, + object_name=pairlistfilter_name, kwargs=kwargs) + if pairlist: + return pairlist + raise OperationalException( + f"Impossible to load PairlistFilter '{pairlistfilter_name}'. This class does not exist " + "or contains Python code errors." + ) From 640423c362195224aa62a7287e35f6bfee1a6508 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 16:00:16 +0100 Subject: [PATCH 0861/3421] Add config samples for chainable pairlist filters --- config_full.json.example | 6 +++-- tests/pairlist/test_pairlist.py | 40 +++++++++++++++++---------------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index 5935de392..366b075fa 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -55,8 +55,10 @@ "config": { "number_assets": 20, "sort_key": "quoteVolume", - "precision_filter": true, - "low_price_percent_filter": 0 + }, + "filters":{ + "PrecisionFilter": {}, + "LowPriceFilter": {"low_price_percent": 0.01} } }, "exchange": { diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index ac27d1c8e..23c48545e 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -26,7 +26,8 @@ def whitelist_conf(default_conf): 'BLK/BTC' ] default_conf['pairlist'] = {'method': 'StaticPairList', - 'config': {'number_assets': 5} + 'config': {'number_assets': 5}, + 'filters': {}, } return default_conf @@ -113,23 +114,24 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): assert set(whitelist) == set(pairslist) -@pytest.mark.parametrize("precision_filter,low_price_filter,base_currency,key,whitelist_result", [ - (False, 0, "BTC", "quoteVolume", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC', 'FUEL/BTC']), - (False, 0, "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'HOT/BTC', 'FUEL/BTC']), - (False, 0, "USDT", "quoteVolume", ['ETH/USDT']), - (False, 0, "ETH", "quoteVolume", []), - (True, 0, "BTC", "quoteVolume", ["LTC/BTC", "ETH/BTC", "TKN/BTC", 'FUEL/BTC']), - (True, 0, "BTC", "bidVolume", ["LTC/BTC", "TKN/BTC", "ETH/BTC", 'FUEL/BTC']), - (False, 0.03, "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'FUEL/BTC']), +@pytest.mark.parametrize("filters,base_currency,key,whitelist_result", [ + ({}, "BTC", "quoteVolume", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC', 'FUEL/BTC']), + ({}, "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'HOT/BTC', 'FUEL/BTC']), + ({}, "USDT", "quoteVolume", ['ETH/USDT']), + ({}, "ETH", "quoteVolume", []), + ({"PrecisionFilter": {}}, "BTC", "quoteVolume", ["LTC/BTC", "ETH/BTC", "TKN/BTC", 'FUEL/BTC']), + ({"PrecisionFilter": {}}, "BTC", "bidVolume", ["LTC/BTC", "TKN/BTC", "ETH/BTC", 'FUEL/BTC']), + ({"LowPriceFilter": {"low_price_percent": 0.03}}, "BTC", + "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'FUEL/BTC']), # Hot is removed by precision_filter, Fuel by low_price_filter. - (True, 0.02, "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC']), + ({"PrecisionFilter": {}, "LowPriceFilter": {"low_price_percent": 0.02}}, + "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC']), ]) def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, - precision_filter, low_price_filter, base_currency, key, - whitelist_result, caplog) -> None: + filters, base_currency, key, whitelist_result, + caplog) -> None: whitelist_conf['pairlist']['method'] = 'VolumePairList' - whitelist_conf['pairlist']['config']['precision_filter'] = precision_filter - whitelist_conf['pairlist']['config']['low_price_percent_filter'] = low_price_filter + whitelist_conf['pairlist']['filters'] = filters mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) @@ -139,11 +141,11 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t freqtrade.config['stake_currency'] = base_currency whitelist = freqtrade.pairlists._gen_pair_whitelist(base_currency=base_currency, key=key) assert sorted(whitelist) == sorted(whitelist_result) - if precision_filter: + if 'PrecisionFilter' in filters: assert log_has_re(r'^Removed .* from whitelist, because stop price .* ' r'would be <= stop limit.*', caplog) - if low_price_filter: + if 'LowPriceFilter' in filters: assert log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) @@ -179,15 +181,15 @@ def test_pairlist_class(mocker, whitelist_conf, markets, pairlist): (['ETH/BTC', 'TKN/BTC', 'BLK/BTC'], "is not compatible with exchange"), # BLK/BTC in blacklist (['ETH/BTC', 'TKN/BTC', 'BTT/BTC'], "Market is not active") # BTT/BTC is inactive ]) -def test_validate_whitelist(mocker, whitelist_conf, markets, pairlist, whitelist, caplog, - log_message): +def test__whitelist_for_active_markets(mocker, whitelist_conf, markets, pairlist, whitelist, caplog, + log_message): whitelist_conf['pairlist']['method'] = pairlist mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) caplog.clear() - new_whitelist = freqtrade.pairlists._validate_whitelist(whitelist) + new_whitelist = freqtrade.pairlists._whitelist_for_active_markets(whitelist) assert set(new_whitelist) == set(['ETH/BTC', 'TKN/BTC']) assert log_message in caplog.text From d89a7d523502ed680e50387316cccca28ae5004d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 16:30:47 +0100 Subject: [PATCH 0862/3421] Document new method to configure filters --- docs/configuration.md | 126 ++++++++++++++++++++++++++---------------- 1 file changed, 79 insertions(+), 47 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 7ccb6840a..39fb4b8ac 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -377,6 +377,82 @@ The valid values are: "BTC", "ETH", "XRP", "LTC", "BCH", "USDT" ``` +## Pairlists + +Pairlists define the list of pairs that the bot should trade. +There are [`StaticPairList`](#static-pair-list) and dynamic Whitelists available. + +In addition to pairlists, [pairlist filters](#available-pairlist-filters) can be configured, which remove certain assets. +These Filters work with all Pairlist providers and are applied in the sequence they occur. + +### Available Pairlists + +* [`StaticPairList`](#static-pair-list) (default, if not configured differently) +* [`VolumePairList`](#volume-pair-list) + +#### Static Pair List + +By default, the `StaticPairList` method is used, which uses a statically defined pair whitelist from the configuration. Inactive markets and blacklisted pairs are removed from the pair_whitelist. + +It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklist`. + +#### Volume Pair List + +`VolumePairList` selects `number_assets` top pairs based on `sort_key`, which can be one of `askVolume`, `bidVolume` and `quoteVolume` and defaults to `quoteVolume`. + +`VolumePairList` does not consider `pair_whitelist`, but selects the top assets from all available markets (with matching stake-currency) on the exchange. +Pairs in `pair_blacklist` are not considered for `VolumePairList`, even if all other filters would match. + +```json +"pairlist": { + "method": "VolumePairList", + "config": { + "number_assets": 20, + "sort_key": "quoteVolume", + }, +``` + +### Available Pairlist Filters + +* [`PrecisionFilter`](#precision-filter) +* [`LowPriceFilter`](#low-price-pair-filter) + +#### Precision Filter + +Filters low-value coins which would not allow setting a stoploss. + +#### Low Price Pair Filter + +The `LowPriceFilter` allows filtering of pairs where a raise of 1 price unit is below the `low_price_percent` ratio. +This option is disabled by default, and will only apply if set to <> 0. + +Calculation example: +Min price precision is 8 decimals. If price is 0.00000011 - one step would be 0.00000012 - which is almost 10% higher than the previous value. + +These pairs are dangerous since it may be impossible to place the desired stoploss - and often result in high losses. + +### Full Pairlist example + +The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, sorting by `quoteVolume` and applies both [`PrecisionFilter`](#precision-filter) and [`LowPriceFilter`](#low-price-pair-filter), filtering all assets where 1 priceunit is > 1%. + +```json +"exchange": { + "pair_whitelist": [], + "pair_blacklist": ["BNB/BTC"] +}, +"pairlist": { + "method": "VolumePairList", + "config": { + "number_assets": 20, + "sort_key": "quoteVolume", + }, + "filters":{ + "PrecisionFilter": {}, + "LowPriceFilter": {"low_price_percent": 0.01} + } + }, +``` + ## Switch to Dry-run mode We recommend starting the bot in the Dry-run mode to see how your bot will @@ -406,49 +482,6 @@ creating trades on the exchange. Once you will be happy with your bot performance running in the Dry-run mode, you can switch it to production mode. -### Dynamic Pairlists - -Dynamic pairlists select pairs for you based on the logic configured. -The bot runs against all pairs (with that stake) on the exchange, and a number of assets -(`number_assets`) is selected based on the selected criteria. - -By default, the `StaticPairList` method is used. -The Pairlist method is configured as `pair_whitelist` parameter under the `exchange` -section of the configuration. - -**Available Pairlist methods:** - -* `StaticPairList` - * It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklist`. -* `VolumePairList` - * It selects `number_assets` top pairs based on `sort_key`, which can be one of -`askVolume`, `bidVolume` and `quoteVolume`, defaults to `quoteVolume`. - * By default, low-value coins that would not allow setting a stop loss are filtered out. (set `precision_filter` parameter to `false` to disable this behaviour). - * `VolumePairList` does not consider `pair_whitelist`, but builds this automatically based the pairlist configuration. - * Pairs in `pair_blacklist` are not considered for VolumePairList, even if all other filters would match. - * `low_price_percent_filter` allows filtering of pairs where a raise of 1 price unit is below the `low_price_percent_filter` ratio. - This option is disabled by default, and will only apply if set to <> 0. - Calculation example: Min price precision is 8 decimals. If price is 0.00000011 - one step would be 0.00000012 - which is almost 10% higher than the previous value. - - -Example: - -```json -"exchange": { - "pair_whitelist": [], - "pair_blacklist": ["BNB/BTC"] -}, -"pairlist": { - "method": "VolumePairList", - "config": { - "number_assets": 20, - "sort_key": "quoteVolume", - "precision_filter": true, - "low_price_percent_filter": 0.05 - } - }, -``` - ## Switch to production mode In production mode, the bot will engage your money. Be careful, since a wrong @@ -479,7 +512,7 @@ you run it in production mode. !!! Note If you have an exchange API key yet, [see our tutorial](/pre-requisite). -### Using proxy with FreqTrade +## Using proxy with FreqTrade To use a proxy with freqtrade, add the kwarg `"aiohttp_trust_env"=true` to the `"ccxt_async_kwargs"` dict in the exchange section of the configuration. @@ -499,14 +532,13 @@ export HTTPS_PROXY="http://addr:port" freqtrade ``` - -### Embedding Strategies +## Embedding Strategies FreqTrade provides you with with an easy way to embed the strategy into your configuration file. This is done by utilizing BASE64 encoding and providing this string at the strategy configuration field, in your chosen config file. -#### Encoding a string as BASE64 +### Encoding a string as BASE64 This is a quick example, how to generate the BASE64 string in python From 14758dbe107d4a460444719c78b7f9fd5477b5b1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 16:32:22 +0100 Subject: [PATCH 0863/3421] Some small cleanups --- freqtrade/configuration/deprecated_settings.py | 7 +++++++ freqtrade/pairlist/LowPriceFilter.py | 4 ++-- tests/test_configuration.py | 10 ++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index f00b23894..8471028aa 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -57,3 +57,10 @@ def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None: 'experimental', 'sell_profit_only') process_deprecated_setting(config, 'ask_strategy', 'ignore_roi_if_buy_signal', 'experimental', 'ignore_roi_if_buy_signal') + + if config.get('pairlist', {}).get('config', {}).get('precision_filter'): + logger.warning( + "DEPRECATED: " + f"Using precision_filter setting is deprecated and has been replaced by" + "PrecisionFilter. Please refer to the docs on configuration details") + config['pairlist'].update({'filters': {'PrecisionFilter': {}}}) diff --git a/freqtrade/pairlist/LowPriceFilter.py b/freqtrade/pairlist/LowPriceFilter.py index 499dd0c15..778c9b4e0 100644 --- a/freqtrade/pairlist/LowPriceFilter.py +++ b/freqtrade/pairlist/LowPriceFilter.py @@ -15,7 +15,7 @@ class LowPriceFilter(IPairListFilter): self._low_price_percent = config['pairlist']['filters']['LowPriceFilter'].get( 'low_price_percent', 0) - def _validate_precision_filter_lowprice(self, ticker) -> bool: + def _validate_ticker_lowprice(self, ticker) -> bool: """ Check if if one price-step is > than a certain barrier. :param ticker: ticker dict as returned from ccxt.load_markets() @@ -42,7 +42,7 @@ class LowPriceFilter(IPairListFilter): ticker = [t for t in tickers if t['symbol'] == p][0] # Filter out assets which would not allow setting a stoploss - if self._low_price_percent and not self._validate_precision_filter_lowprice(ticker): + if self._low_price_percent and not self._validate_ticker_lowprice(ticker): pairlist.remove(p) return pairlist diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 545dd5df4..258088925 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -963,6 +963,16 @@ def test_process_temporary_deprecated_settings(mocker, default_conf, setting, ca assert default_conf[setting[0]][setting[1]] == setting[5] +def test_process_deprecated_setting_precision_filter(mocker, default_conf, caplog): + patched_configuration_load_config_file(mocker, default_conf) + default_conf.update({'pairlist': { + 'config': {'precision_filter': True} + }}) + + process_temporary_deprecated_settings(default_conf) + assert log_has_re(r'DEPRECATED.*precision_filter.*', caplog) + + def test_check_conflicting_settings(mocker, default_conf, caplog): patched_configuration_load_config_file(mocker, default_conf) From ad98d61939f9808b0adffb0b06099fdef241eee2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 16:39:45 +0100 Subject: [PATCH 0864/3421] Update developer docs --- docs/developer.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/developer.md b/docs/developer.md index 391493b09..346578c2e 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -127,7 +127,7 @@ This is called with each iteration of the bot - so consider implementing caching Assign the resulting whiteslist to `self._whitelist` and `self._blacklist` respectively. These will then be used to run the bot in this iteration. Pairs with open trades will be added to the whitelist to have the sell-methods run correctly. -Please also run `self._validate_whitelist(pairs)` and to check and remove pairs with inactive markets. This function is available in the Parent class (`StaticPairList`) and should ideally not be overwritten. +Please also run `self.validate_whitelist(pairs, tickers)` (tickers is optional, but should be passed when you're using tickers anyway) and to check and remove pairs with inactive markets. This function is available in the Parent class (`StaticPairList`) and should ideally not be overwritten. ##### sample @@ -136,7 +136,7 @@ Please also run `self._validate_whitelist(pairs)` and to check and remove pairs # Generate dynamic whitelist pairs = self._gen_pair_whitelist(self._config['stake_currency'], self._sort_key) # Validate whitelist to only have active market pairs - self._whitelist = self._validate_whitelist(pairs)[:self._number_pairs] + self._whitelist = self.validate_whitelist(pairs)[:self._number_pairs] ``` #### _gen_pair_whitelist From bba8e614094605c254bed875f0a846026305a437 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 19:30:35 +0100 Subject: [PATCH 0865/3421] Rename function in samples --- docs/strategy_analysis_example.md | 6 +++--- user_data/notebooks/strategy_analysis_example.ipynb | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index 55f1bd908..aa4578ca7 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -110,14 +110,14 @@ trades.groupby("pair")["sell_reason"].value_counts() ## Analyze the loaded trades for trade parallelism This can be useful to find the best `max_open_trades` parameter, when used with backtesting in conjunction with `--disable-max-market-positions`. -`parallel_trade_analysis()` returns a timeseries dataframe with an "open_trades" column, specifying the number of open trades for each candle. +`analyze_trade_parallelism()` returns a timeseries dataframe with an "open_trades" column, specifying the number of open trades for each candle. ```python -from freqtrade.data.btanalysis import parallel_trade_analysis +from freqtrade.data.btanalysis import analyze_trade_parallelism # Analyze the above -parallel_trades = parallel_trade_analysis(trades, '5m') +parallel_trades = analyze_trade_parallelism(trades, '5m') parallel_trades.plot() diff --git a/user_data/notebooks/strategy_analysis_example.ipynb b/user_data/notebooks/strategy_analysis_example.ipynb index edb05a7ca..03dc83b4e 100644 --- a/user_data/notebooks/strategy_analysis_example.ipynb +++ b/user_data/notebooks/strategy_analysis_example.ipynb @@ -174,7 +174,7 @@ "## Analyze the loaded trades for trade parallelism\n", "This can be useful to find the best `max_open_trades` parameter, when used with backtesting in conjunction with `--disable-max-market-positions`.\n", "\n", - "`parallel_trade_analysis()` returns a timeseries dataframe with an \"open_trades\" column, specifying the number of open trades for each candle." + "`analyze_trade_parallelism()` returns a timeseries dataframe with an \"open_trades\" column, specifying the number of open trades for each candle." ] }, { @@ -183,10 +183,10 @@ "metadata": {}, "outputs": [], "source": [ - "from freqtrade.data.btanalysis import parallel_trade_analysis\n", + "from freqtrade.data.btanalysis import analyze_trade_parallelism\n", "\n", "# Analyze the above\n", - "parallel_trades = parallel_trade_analysis(trades, '5m')\n", + "parallel_trades = analyze_trade_parallelism(trades, '5m')\n", "\n", "\n", "parallel_trades.plot()" From 9e988783de6218a441f3a1bbd52dea59a9b61d6e Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 30 Oct 2019 20:06:49 +0100 Subject: [PATCH 0866/3421] Allow configuration of stoploss on exchange limit fixes #1717 --- docs/configuration.md | 8 +++++++- freqtrade/freqtradebot.py | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 1ad13c87a..217e9f37b 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -215,6 +215,11 @@ If this is configured, the following 4 values (`buy`, `sell`, `stoploss` and `emergencysell` is an optional value, which defaults to `market` and is used when creating stoploss on exchange orders fails. The below is the default which is used if this is not configured in either strategy or configuration file. +Since `stoploss_on_exchange` uses limit orders, the exchange needs 2 prices, the stoploss_price and the Limit price. +`stoploss` defines the stop-price - and limit should be slightly below this. This defaults to 0.99 / 1%. +Calculation example: we bought the asset at 100$. +Stop-price is 95$, then limit would be `95 * 0.99 = 94.05$` - so the stoploss will happen between 95$ and 94.05$. + Syntax for Strategy: ```python @@ -224,7 +229,8 @@ order_types = { "emergencysell": "market", "stoploss": "market", "stoploss_on_exchange": False, - "stoploss_on_exchange_interval": 60 + "stoploss_on_exchange_interval": 60, + "stoploss_on_exchange_limit_ratio": 0.99, } ``` diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a8fc6bc7e..4a494696d 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -634,8 +634,8 @@ class FreqtradeBot: Force-sells the pair (using EmergencySell reason) in case of Problems creating the order. :return: True if the order succeeded, and False in case of problems. """ - # Limit price threshold: As limit price should always be below price - LIMIT_PRICE_PCT = 0.99 + # Limit price threshold: As limit price should always be below stop-price + LIMIT_PRICE_PCT = self.strategy.order_types.get('stoploss_on_exchange_limit_ratio', 0.99) try: stoploss_order = self.exchange.stoploss_limit(pair=trade.pair, amount=trade.amount, From 365a408df53b2a646bfe1f622544dac63c376119 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 31 Oct 2019 06:43:42 +0100 Subject: [PATCH 0867/3421] Update release-documentation to fit new release style --- docs/developer.md | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/docs/developer.md b/docs/developer.md index 391493b09..67c0912a7 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -204,14 +204,15 @@ This part of the documentation is aimed at maintainers, and shows how to create ### Create release branch -``` bash -# make sure you're in develop branch -git checkout develop +First, pick a commit that's about one week old (to not include latest additions to releases). +``` bash # create new branch -git checkout -b new_release +git checkout -b new_release ``` +Determine if crucial bugfixes have been made between this commit and the current state, and eventually cherry-pick these. + * Edit `freqtrade/__init__.py` and add the version matching the current date (for example `2019.7` for July 2019). Minor versions can be `2019.7-1` should we need to do a second release that month. * Commit this part * push that branch to the remote and create a PR against the master branch @@ -219,23 +220,18 @@ git checkout -b new_release ### Create changelog from git commits !!! Note - Make sure that both master and develop are up-todate!. + Make sure that the master branch is uptodate! ``` bash # Needs to be done before merging / pulling that branch. -git log --oneline --no-decorate --no-merges master..develop +git log --oneline --no-decorate --no-merges master..new_release ``` ### Create github release / tag Once the PR against master is merged (best right after merging): -* Use the button "Draft a new release" in the Github UI (subsection releases) +* Use the button "Draft a new release" in the Github UI (subsection releases). * Use the version-number specified as tag. * Use "master" as reference (this step comes after the above PR is merged). -* Use the above changelog as release comment (as codeblock) - -### After-release - -* Update version in develop by postfixing that with `-dev` (`2019.6 -> 2019.6-dev`). -* Create a PR against develop to update that branch. +* Use the above changelog as release comment (as codeblock). From 5dcf28cafb0e29d06a4830a5c31cecdec377f110 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 31 Oct 2019 06:51:36 +0100 Subject: [PATCH 0868/3421] Reduce frequency of "startup-period" message --- freqtrade/data/history.py | 3 ++- tests/data/test_history.py | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 412b086c0..b1e4313ca 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -148,7 +148,6 @@ def load_pair_history(pair: str, timerange_startup = deepcopy(timerange) if startup_candles > 0 and timerange_startup: - logger.info('Using indicator startup period: %s ...', startup_candles) timerange_startup.subtract_start(timeframe_to_seconds(ticker_interval) * startup_candles) # The user forced the refresh of pairs @@ -204,6 +203,8 @@ def load_data(datadir: Path, exchange and refresh_pairs are then not needed here nor in load_pair_history. """ result: Dict[str, DataFrame] = {} + if startup_candles > 0 and timerange: + logger.info(f'Using indicator startup period: {startup_candles} ...') for pair in pairs: hist = load_pair_history(pair=pair, ticker_interval=ticker_interval, diff --git a/tests/data/test_history.py b/tests/data/test_history.py index d9627a0e4..89120b4f5 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -103,9 +103,7 @@ def test_load_data_startup_candles(mocker, caplog, default_conf, testdatadir) -> datadir=testdatadir, timerange=timerange, startup_candles=20, ) - assert log_has( - 'Using indicator startup period: 20 ...', caplog - ) + assert ltfmock.call_count == 1 assert ltfmock.call_args_list[0][1]['timerange'] != timerange # startts is 20 minutes earlier @@ -354,8 +352,12 @@ def test_load_partial_missing(testdatadir, caplog) -> None: start = arrow.get('2018-01-01T00:00:00') end = arrow.get('2018-01-11T00:00:00') tickerdata = history.load_data(testdatadir, '5m', ['UNITTEST/BTC'], + startup_candles=20, timerange=TimeRange('date', 'date', start.timestamp, end.timestamp)) + assert log_has( + 'Using indicator startup period: 20 ...', caplog + ) # timedifference in 5 minutes td = ((end - start).total_seconds() // 60 // 5) + 1 assert td != len(tickerdata['UNITTEST/BTC']) From dc5f1b28785c366de20ffe07cb1296067e1f5405 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 31 Oct 2019 07:08:02 +0100 Subject: [PATCH 0869/3421] Extract integration tests into sepearte file --- tests/test_freqtradebot.py | 108 ---------------------------------- tests/test_integration.py | 117 +++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+), 108 deletions(-) create mode 100644 tests/test_integration.py diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 30f9ba0a4..8538c7f41 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2526,114 +2526,6 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, assert rpc_mock.call_count == 2 -def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, - ticker, fee, - limit_buy_order, - markets, mocker) -> None: - """ - Tests workflow of selling stoploss_on_exchange. - Sells - * first trade as stoploss - * 2nd trade is kept - * 3rd trade is sold via sell-signal - """ - default_conf['max_open_trades'] = 3 - default_conf['exchange']['name'] = 'binance' - patch_RPCManager(mocker) - patch_exchange(mocker) - - stoploss_limit = { - 'id': 123, - 'info': {} - } - stoploss_order_open = { - "id": "123", - "timestamp": 1542707426845, - "datetime": "2018-11-20T09:50:26.845Z", - "lastTradeTimestamp": None, - "symbol": "BTC/USDT", - "type": "stop_loss_limit", - "side": "sell", - "price": 1.08801, - "amount": 90.99181074, - "cost": 0.0, - "average": 0.0, - "filled": 0.0, - "remaining": 0.0, - "status": "open", - "fee": None, - "trades": None - } - stoploss_order_closed = stoploss_order_open.copy() - stoploss_order_closed['status'] = 'closed' - # Sell first trade based on stoploss, keep 2nd and 3rd trade open - stoploss_order_mock = MagicMock( - side_effect=[stoploss_order_closed, stoploss_order_open, stoploss_order_open]) - # Sell 3rd trade (not called for the first trade) - should_sell_mock = MagicMock(side_effect=[ - SellCheckTuple(sell_flag=False, sell_type=SellType.NONE), - SellCheckTuple(sell_flag=True, sell_type=SellType.SELL_SIGNAL)] - ) - cancel_order_mock = MagicMock() - mocker.patch('freqtrade.exchange.Binance.stoploss_limit', stoploss_limit) - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - get_ticker=ticker, - get_fee=fee, - markets=PropertyMock(return_value=markets), - symbol_amount_prec=lambda s, x, y: y, - symbol_price_prec=lambda s, x, y: y, - get_order=stoploss_order_mock, - cancel_order=cancel_order_mock, - ) - - wallets_mock = MagicMock() - mocker.patch.multiple( - 'freqtrade.freqtradebot.FreqtradeBot', - create_stoploss_order=MagicMock(return_value=True), - update_trade_state=MagicMock(), - _notify_sell=MagicMock(), - ) - mocker.patch("freqtrade.strategy.interface.IStrategy.should_sell", should_sell_mock) - mocker.patch("freqtrade.wallets.Wallets.update", wallets_mock) - - freqtrade = FreqtradeBot(default_conf) - freqtrade.strategy.order_types['stoploss_on_exchange'] = True - # Switch ordertype to market to close trade immediately - freqtrade.strategy.order_types['sell'] = 'market' - patch_get_signal(freqtrade) - - # Create some test data - freqtrade.create_trades() - wallets_mock.reset_mock() - Trade.session = MagicMock() - - trades = Trade.query.all() - # Make sure stoploss-order is open and trade is bought (since we mock update_trade_state) - for trade in trades: - trade.stoploss_order_id = 3 - trade.open_order_id = None - - freqtrade.process_maybe_execute_sells(trades) - assert should_sell_mock.call_count == 2 - - # Only order for 3rd trade needs to be cancelled - assert cancel_order_mock.call_count == 1 - # Wallets should only be called once per sell cycle - assert wallets_mock.call_count == 1 - - trade = trades[0] - assert trade.sell_reason == SellType.STOPLOSS_ON_EXCHANGE.value - assert not trade.is_open - - trade = trades[1] - assert not trade.sell_reason - assert trade.is_open - - trade = trades[2] - assert trade.sell_reason == SellType.SELL_SIGNAL.value - assert not trade.is_open - def test_execute_sell_market_order(default_conf, ticker, fee, ticker_sell_up, markets, mocker) -> None: diff --git a/tests/test_integration.py b/tests/test_integration.py new file mode 100644 index 000000000..857e0a2e3 --- /dev/null +++ b/tests/test_integration.py @@ -0,0 +1,117 @@ + +from unittest.mock import MagicMock, PropertyMock + + +from freqtrade.freqtradebot import FreqtradeBot +from freqtrade.persistence import Trade +from freqtrade.strategy.interface import SellCheckTuple, SellType +from tests.conftest import (patch_exchange, + patch_get_signal) + + +def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, + ticker, fee, + limit_buy_order, + markets, mocker) -> None: + """ + Tests workflow of selling stoploss_on_exchange. + Sells + * first trade as stoploss + * 2nd trade is kept + * 3rd trade is sold via sell-signal + """ + default_conf['max_open_trades'] = 3 + default_conf['exchange']['name'] = 'binance' + patch_exchange(mocker) + + stoploss_limit = { + 'id': 123, + 'info': {} + } + stoploss_order_open = { + "id": "123", + "timestamp": 1542707426845, + "datetime": "2018-11-20T09:50:26.845Z", + "lastTradeTimestamp": None, + "symbol": "BTC/USDT", + "type": "stop_loss_limit", + "side": "sell", + "price": 1.08801, + "amount": 90.99181074, + "cost": 0.0, + "average": 0.0, + "filled": 0.0, + "remaining": 0.0, + "status": "open", + "fee": None, + "trades": None + } + stoploss_order_closed = stoploss_order_open.copy() + stoploss_order_closed['status'] = 'closed' + # Sell first trade based on stoploss, keep 2nd and 3rd trade open + stoploss_order_mock = MagicMock( + side_effect=[stoploss_order_closed, stoploss_order_open, stoploss_order_open]) + # Sell 3rd trade (not called for the first trade) + should_sell_mock = MagicMock(side_effect=[ + SellCheckTuple(sell_flag=False, sell_type=SellType.NONE), + SellCheckTuple(sell_flag=True, sell_type=SellType.SELL_SIGNAL)] + ) + cancel_order_mock = MagicMock() + mocker.patch('freqtrade.exchange.Binance.stoploss_limit', stoploss_limit) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_ticker=ticker, + get_fee=fee, + markets=PropertyMock(return_value=markets), + symbol_amount_prec=lambda s, x, y: y, + symbol_price_prec=lambda s, x, y: y, + get_order=stoploss_order_mock, + cancel_order=cancel_order_mock, + ) + + wallets_mock = MagicMock() + mocker.patch.multiple( + 'freqtrade.freqtradebot.FreqtradeBot', + create_stoploss_order=MagicMock(return_value=True), + update_trade_state=MagicMock(), + _notify_sell=MagicMock(), + ) + mocker.patch("freqtrade.strategy.interface.IStrategy.should_sell", should_sell_mock) + mocker.patch("freqtrade.wallets.Wallets.update", wallets_mock) + + freqtrade = FreqtradeBot(default_conf) + freqtrade.strategy.order_types['stoploss_on_exchange'] = True + # Switch ordertype to market to close trade immediately + freqtrade.strategy.order_types['sell'] = 'market' + patch_get_signal(freqtrade) + + # Create some test data + freqtrade.create_trades() + wallets_mock.reset_mock() + Trade.session = MagicMock() + + trades = Trade.query.all() + # Make sure stoploss-order is open and trade is bought (since we mock update_trade_state) + for trade in trades: + trade.stoploss_order_id = 3 + trade.open_order_id = None + + freqtrade.process_maybe_execute_sells(trades) + assert should_sell_mock.call_count == 2 + + # Only order for 3rd trade needs to be cancelled + assert cancel_order_mock.call_count == 1 + # Wallets should only be called once per sell cycle + assert wallets_mock.call_count == 1 + + trade = trades[0] + assert trade.sell_reason == SellType.STOPLOSS_ON_EXCHANGE.value + assert not trade.is_open + + trade = trades[1] + assert not trade.sell_reason + assert trade.is_open + + trade = trades[2] + assert trade.sell_reason == SellType.SELL_SIGNAL.value + assert not trade.is_open From ce6b869f84d8d0dc0ef5d0b5c28b4bec792c36d1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 31 Oct 2019 07:11:57 +0100 Subject: [PATCH 0870/3421] Cleanup test --- tests/test_integration.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/tests/test_integration.py b/tests/test_integration.py index 857e0a2e3..c3a3ada07 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -2,10 +2,9 @@ from unittest.mock import MagicMock, PropertyMock -from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import Trade from freqtrade.strategy.interface import SellCheckTuple, SellType -from tests.conftest import (patch_exchange, +from tests.conftest import (patch_exchange, get_patched_freqtradebot, patch_get_signal) @@ -22,7 +21,6 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, """ default_conf['max_open_trades'] = 3 default_conf['exchange']['name'] = 'binance' - patch_exchange(mocker) stoploss_limit = { 'id': 123, @@ -62,14 +60,12 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets), symbol_amount_prec=lambda s, x, y: y, symbol_price_prec=lambda s, x, y: y, get_order=stoploss_order_mock, cancel_order=cancel_order_mock, ) - wallets_mock = MagicMock() mocker.patch.multiple( 'freqtrade.freqtradebot.FreqtradeBot', create_stoploss_order=MagicMock(return_value=True), @@ -77,9 +73,9 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, _notify_sell=MagicMock(), ) mocker.patch("freqtrade.strategy.interface.IStrategy.should_sell", should_sell_mock) - mocker.patch("freqtrade.wallets.Wallets.update", wallets_mock) + wallets_mock = mocker.patch("freqtrade.wallets.Wallets.update", MagicMock()) - freqtrade = FreqtradeBot(default_conf) + freqtrade = get_patched_freqtradebot(mocker, default_conf) freqtrade.strategy.order_types['stoploss_on_exchange'] = True # Switch ordertype to market to close trade immediately freqtrade.strategy.order_types['sell'] = 'market' From 734a9d5d87717bf4ed1be8c6d8b718aeaa2b81da Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 31 Oct 2019 07:15:45 +0100 Subject: [PATCH 0871/3421] Seperate tests related to worker from test_freqtradebot --- tests/test_freqtradebot.py | 75 ----------------------------------- tests/test_integration.py | 6 +-- tests/test_worker.py | 81 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 79 deletions(-) create mode 100644 tests/test_worker.py diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 8538c7f41..1f761b55f 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -14,7 +14,6 @@ import requests from freqtrade import (DependencyException, InvalidOrderException, OperationalException, TemporaryError, constants) from freqtrade.constants import MATH_CLOSE_PREC -from freqtrade.data.dataprovider import DataProvider from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import Trade from freqtrade.rpc import RPCMessageType @@ -49,16 +48,6 @@ def test_freqtradebot_state(mocker, default_conf, markets) -> None: assert freqtrade.state is State.STOPPED -def test_worker_state(mocker, default_conf, markets) -> None: - mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) - worker = get_patched_worker(mocker, default_conf) - assert worker.state is State.RUNNING - - default_conf.pop('initial_state') - worker = Worker(args=None, config=default_conf) - assert worker.state is State.STOPPED - - def test_cleanup(mocker, default_conf, caplog) -> None: mock_cleanup = MagicMock() mocker.patch('freqtrade.persistence.cleanup', mock_cleanup) @@ -68,69 +57,6 @@ def test_cleanup(mocker, default_conf, caplog) -> None: assert mock_cleanup.call_count == 1 -def test_worker_running(mocker, default_conf, caplog) -> None: - mock_throttle = MagicMock() - mocker.patch('freqtrade.worker.Worker._throttle', mock_throttle) - mocker.patch('freqtrade.persistence.Trade.stoploss_reinitialization', MagicMock()) - - worker = get_patched_worker(mocker, default_conf) - - state = worker._worker(old_state=None) - assert state is State.RUNNING - assert log_has('Changing state to: RUNNING', caplog) - assert mock_throttle.call_count == 1 - # Check strategy is loaded, and received a dataprovider object - assert worker.freqtrade.strategy - assert worker.freqtrade.strategy.dp - assert isinstance(worker.freqtrade.strategy.dp, DataProvider) - - -def test_worker_stopped(mocker, default_conf, caplog) -> None: - mock_throttle = MagicMock() - mocker.patch('freqtrade.worker.Worker._throttle', mock_throttle) - mock_sleep = mocker.patch('time.sleep', return_value=None) - - worker = get_patched_worker(mocker, default_conf) - worker.state = State.STOPPED - state = worker._worker(old_state=State.RUNNING) - assert state is State.STOPPED - assert log_has('Changing state to: STOPPED', caplog) - assert mock_throttle.call_count == 0 - assert mock_sleep.call_count == 1 - - -def test_throttle(mocker, default_conf, caplog) -> None: - def throttled_func(): - return 42 - - caplog.set_level(logging.DEBUG) - worker = get_patched_worker(mocker, default_conf) - - start = time.time() - result = worker._throttle(throttled_func, min_secs=0.1) - end = time.time() - - assert result == 42 - assert end - start > 0.1 - assert log_has('Throttling throttled_func for 0.10 seconds', caplog) - - result = worker._throttle(throttled_func, min_secs=-1) - assert result == 42 - - -def test_throttle_with_assets(mocker, default_conf) -> None: - def throttled_func(nb_assets=-1): - return nb_assets - - worker = get_patched_worker(mocker, default_conf) - - result = worker._throttle(throttled_func, min_secs=0.1, nb_assets=666) - assert result == 666 - - result = worker._throttle(throttled_func, min_secs=0.1) - assert result == -1 - - def test_order_dict_dry_run(default_conf, mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) @@ -2526,7 +2452,6 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, assert rpc_mock.call_count == 2 - def test_execute_sell_market_order(default_conf, ticker, fee, ticker_sell_up, markets, mocker) -> None: rpc_mock = patch_RPCManager(mocker) diff --git a/tests/test_integration.py b/tests/test_integration.py index c3a3ada07..37ee24d6c 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -1,11 +1,9 @@ -from unittest.mock import MagicMock, PropertyMock - +from unittest.mock import MagicMock from freqtrade.persistence import Trade from freqtrade.strategy.interface import SellCheckTuple, SellType -from tests.conftest import (patch_exchange, get_patched_freqtradebot, - patch_get_signal) +from tests.conftest import get_patched_freqtradebot, patch_get_signal def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, diff --git a/tests/test_worker.py b/tests/test_worker.py new file mode 100644 index 000000000..72e215210 --- /dev/null +++ b/tests/test_worker.py @@ -0,0 +1,81 @@ +import logging +import time +from unittest.mock import MagicMock, PropertyMock + +from freqtrade.data.dataprovider import DataProvider +from freqtrade.state import State +from freqtrade.worker import Worker +from tests.conftest import get_patched_worker, log_has + + +def test_worker_state(mocker, default_conf, markets) -> None: + mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) + worker = get_patched_worker(mocker, default_conf) + assert worker.state is State.RUNNING + + default_conf.pop('initial_state') + worker = Worker(args=None, config=default_conf) + assert worker.state is State.STOPPED + + +def test_worker_running(mocker, default_conf, caplog) -> None: + mock_throttle = MagicMock() + mocker.patch('freqtrade.worker.Worker._throttle', mock_throttle) + mocker.patch('freqtrade.persistence.Trade.stoploss_reinitialization', MagicMock()) + + worker = get_patched_worker(mocker, default_conf) + + state = worker._worker(old_state=None) + assert state is State.RUNNING + assert log_has('Changing state to: RUNNING', caplog) + assert mock_throttle.call_count == 1 + # Check strategy is loaded, and received a dataprovider object + assert worker.freqtrade.strategy + assert worker.freqtrade.strategy.dp + assert isinstance(worker.freqtrade.strategy.dp, DataProvider) + + +def test_worker_stopped(mocker, default_conf, caplog) -> None: + mock_throttle = MagicMock() + mocker.patch('freqtrade.worker.Worker._throttle', mock_throttle) + mock_sleep = mocker.patch('time.sleep', return_value=None) + + worker = get_patched_worker(mocker, default_conf) + worker.state = State.STOPPED + state = worker._worker(old_state=State.RUNNING) + assert state is State.STOPPED + assert log_has('Changing state to: STOPPED', caplog) + assert mock_throttle.call_count == 0 + assert mock_sleep.call_count == 1 + + +def test_throttle(mocker, default_conf, caplog) -> None: + def throttled_func(): + return 42 + + caplog.set_level(logging.DEBUG) + worker = get_patched_worker(mocker, default_conf) + + start = time.time() + result = worker._throttle(throttled_func, min_secs=0.1) + end = time.time() + + assert result == 42 + assert end - start > 0.1 + assert log_has('Throttling throttled_func for 0.10 seconds', caplog) + + result = worker._throttle(throttled_func, min_secs=-1) + assert result == 42 + + +def test_throttle_with_assets(mocker, default_conf) -> None: + def throttled_func(nb_assets=-1): + return nb_assets + + worker = get_patched_worker(mocker, default_conf) + + result = worker._throttle(throttled_func, min_secs=0.1, nb_assets=666) + assert result == 666 + + result = worker._throttle(throttled_func, min_secs=0.1) + assert result == -1 From 7be378aaa919befbdbc6fa27dd942638f4a306bb Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 31 Oct 2019 07:26:48 +0100 Subject: [PATCH 0872/3421] Remove markets mock where it's not needed --- tests/test_freqtradebot.py | 157 ++++++++++++------------------------- tests/test_integration.py | 6 +- 2 files changed, 51 insertions(+), 112 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 1f761b55f..0ed8e8a77 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -150,18 +150,13 @@ def test_get_trade_stake_amount_no_stake_amount(default_conf, mocker) -> None: freqtrade._get_trade_stake_amount('ETH/BTC') -def test_get_trade_stake_amount_unlimited_amount(default_conf, - ticker, - limit_buy_order, - fee, - markets, - mocker) -> None: +def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, + limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) patch_wallet(mocker, free=default_conf['stake_amount']) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - markets=PropertyMock(return_value=markets), get_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee @@ -222,7 +217,7 @@ def test_edge_overrides_stake_amount(mocker, edge_conf) -> None: assert freqtrade._get_trade_stake_amount('LTC/BTC') == (999.9 * 0.5 * 0.01) / 0.21 -def test_edge_overrides_stoploss(limit_buy_order, fee, markets, caplog, mocker, edge_conf) -> None: +def test_edge_overrides_stoploss(limit_buy_order, fee, caplog, mocker, edge_conf) -> None: patch_RPCManager(mocker) patch_exchange(mocker) @@ -243,7 +238,6 @@ def test_edge_overrides_stoploss(limit_buy_order, fee, markets, caplog, mocker, }), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) ############################################# @@ -263,7 +257,7 @@ def test_edge_overrides_stoploss(limit_buy_order, fee, markets, caplog, mocker, assert trade.sell_reason == SellType.STOP_LOSS.value -def test_edge_should_ignore_strategy_stoploss(limit_buy_order, fee, markets, +def test_edge_should_ignore_strategy_stoploss(limit_buy_order, fee, mocker, edge_conf) -> None: patch_RPCManager(mocker) patch_exchange(mocker) @@ -284,7 +278,6 @@ def test_edge_should_ignore_strategy_stoploss(limit_buy_order, fee, markets, }), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets), ) ############################################# @@ -303,7 +296,7 @@ def test_edge_should_ignore_strategy_stoploss(limit_buy_order, fee, markets, def test_total_open_trades_stakes(mocker, default_conf, ticker, - limit_buy_order, fee, markets) -> None: + limit_buy_order, fee) -> None: patch_RPCManager(mocker) patch_exchange(mocker) default_conf['stake_amount'] = 0.0000098751 @@ -313,7 +306,6 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, get_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -448,7 +440,7 @@ def test_get_min_pair_stake_amount(mocker, default_conf) -> None: assert result == min(8, 2 * 2) / 0.9 -def test_create_trades(default_conf, ticker, limit_buy_order, fee, markets, mocker) -> None: +def test_create_trades(default_conf, ticker, limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -456,7 +448,6 @@ def test_create_trades(default_conf, ticker, limit_buy_order, fee, markets, mock get_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) # Save state of current whitelist @@ -482,7 +473,7 @@ def test_create_trades(default_conf, ticker, limit_buy_order, fee, markets, mock def test_create_trades_no_stake_amount(default_conf, ticker, limit_buy_order, - fee, markets, mocker) -> None: + fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) patch_wallet(mocker, free=default_conf['stake_amount'] * 0.5) @@ -491,7 +482,6 @@ def test_create_trades_no_stake_amount(default_conf, ticker, limit_buy_order, get_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -501,7 +491,7 @@ def test_create_trades_no_stake_amount(default_conf, ticker, limit_buy_order, def test_create_trades_minimal_amount(default_conf, ticker, limit_buy_order, - fee, markets, mocker) -> None: + fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) buy_mock = MagicMock(return_value={'id': limit_buy_order['id']}) @@ -510,7 +500,6 @@ def test_create_trades_minimal_amount(default_conf, ticker, limit_buy_order, get_ticker=ticker, buy=buy_mock, get_fee=fee, - markets=PropertyMock(return_value=markets) ) default_conf['stake_amount'] = 0.0005 freqtrade = FreqtradeBot(default_conf) @@ -522,7 +511,7 @@ def test_create_trades_minimal_amount(default_conf, ticker, limit_buy_order, def test_create_trades_too_small_stake_amount(default_conf, ticker, limit_buy_order, - fee, markets, mocker) -> None: + fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) buy_mock = MagicMock(return_value={'id': limit_buy_order['id']}) @@ -531,7 +520,6 @@ def test_create_trades_too_small_stake_amount(default_conf, ticker, limit_buy_or get_ticker=ticker, buy=buy_mock, get_fee=fee, - markets=PropertyMock(return_value=markets) ) default_conf['stake_amount'] = 0.000000005 @@ -551,7 +539,6 @@ def test_create_trades_limit_reached(default_conf, ticker, limit_buy_order, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_balance=MagicMock(return_value=default_conf['stake_amount']), get_fee=fee, - markets=PropertyMock(return_value=markets) ) default_conf['max_open_trades'] = 0 default_conf['stake_amount'] = constants.UNLIMITED_STAKE_AMOUNT @@ -564,7 +551,7 @@ def test_create_trades_limit_reached(default_conf, ticker, limit_buy_order, def test_create_trades_no_pairs_let(default_conf, ticker, limit_buy_order, fee, - markets, mocker, caplog) -> None: + mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -572,7 +559,6 @@ def test_create_trades_no_pairs_let(default_conf, ticker, limit_buy_order, fee, get_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) default_conf['exchange']['pair_whitelist'] = ["ETH/BTC"] @@ -586,7 +572,7 @@ def test_create_trades_no_pairs_let(default_conf, ticker, limit_buy_order, fee, def test_create_trades_no_pairs_in_whitelist(default_conf, ticker, limit_buy_order, fee, - markets, mocker, caplog) -> None: + mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -594,7 +580,6 @@ def test_create_trades_no_pairs_in_whitelist(default_conf, ticker, limit_buy_ord get_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) default_conf['exchange']['pair_whitelist'] = [] freqtrade = FreqtradeBot(default_conf) @@ -625,7 +610,7 @@ def test_create_trades_no_signal(default_conf, fee, mocker) -> None: @pytest.mark.parametrize("max_open", range(0, 5)) def test_create_trades_multiple_trades(default_conf, ticker, - fee, markets, mocker, max_open) -> None: + fee, mocker, max_open) -> None: patch_RPCManager(mocker) patch_exchange(mocker) default_conf['max_open_trades'] = max_open @@ -634,7 +619,6 @@ def test_create_trades_multiple_trades(default_conf, ticker, get_ticker=ticker, buy=MagicMock(return_value={'id': "12355555"}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -645,7 +629,7 @@ def test_create_trades_multiple_trades(default_conf, ticker, assert len(trades) == max_open -def test_create_trades_preopen(default_conf, ticker, fee, markets, mocker) -> None: +def test_create_trades_preopen(default_conf, ticker, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) default_conf['max_open_trades'] = 4 @@ -654,7 +638,6 @@ def test_create_trades_preopen(default_conf, ticker, fee, markets, mocker) -> No get_ticker=ticker, buy=MagicMock(return_value={'id': "12355555"}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -673,13 +656,12 @@ def test_create_trades_preopen(default_conf, ticker, fee, markets, mocker) -> No def test_process_trade_creation(default_conf, ticker, limit_buy_order, - markets, fee, mocker, caplog) -> None: + fee, mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, - markets=PropertyMock(return_value=markets), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_order=MagicMock(return_value=limit_buy_order), get_fee=fee, @@ -708,13 +690,12 @@ def test_process_trade_creation(default_conf, ticker, limit_buy_order, ) -def test_process_exchange_failures(default_conf, ticker, markets, mocker) -> None: +def test_process_exchange_failures(default_conf, ticker, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, - markets=PropertyMock(return_value=markets), buy=MagicMock(side_effect=TemporaryError) ) sleep_mock = mocker.patch('time.sleep', side_effect=lambda _: None) @@ -726,13 +707,12 @@ def test_process_exchange_failures(default_conf, ticker, markets, mocker) -> Non assert sleep_mock.has_calls() -def test_process_operational_exception(default_conf, ticker, markets, mocker) -> None: +def test_process_operational_exception(default_conf, ticker, mocker) -> None: msg_mock = patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, - markets=PropertyMock(return_value=markets), buy=MagicMock(side_effect=OperationalException) ) worker = Worker(args=None, config=default_conf) @@ -745,14 +725,12 @@ def test_process_operational_exception(default_conf, ticker, markets, mocker) -> assert 'OperationalException' in msg_mock.call_args_list[-1][0][0]['status'] -def test_process_trade_handling( - default_conf, ticker, limit_buy_order, markets, fee, mocker) -> None: +def test_process_trade_handling(default_conf, ticker, limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, - markets=PropertyMock(return_value=markets), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_order=MagicMock(return_value=limit_buy_order), get_fee=fee, @@ -772,15 +750,14 @@ def test_process_trade_handling( assert len(trades) == 1 -def test_process_trade_no_whitelist_pair( - default_conf, ticker, limit_buy_order, markets, fee, mocker) -> None: +def test_process_trade_no_whitelist_pair(default_conf, ticker, limit_buy_order, + fee, mocker) -> None: """ Test process with trade not in pair list """ patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, - markets=PropertyMock(return_value=markets), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_order=MagicMock(return_value=limit_buy_order), get_fee=fee, @@ -817,7 +794,7 @@ def test_process_trade_no_whitelist_pair( assert len(freqtrade.active_pair_whitelist) == len(set(freqtrade.active_pair_whitelist)) -def test_process_informative_pairs_added(default_conf, ticker, markets, mocker) -> None: +def test_process_informative_pairs_added(default_conf, ticker, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) @@ -828,7 +805,6 @@ def test_process_informative_pairs_added(default_conf, ticker, markets, mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, - markets=PropertyMock(return_value=markets), buy=MagicMock(side_effect=TemporaryError), refresh_latest_ohlcv=refresh_mock, ) @@ -874,7 +850,7 @@ def test_balance_bigger_last_ask(mocker, default_conf) -> None: assert freqtrade.get_target_bid('ETH/BTC') == 5 -def test_execute_buy(mocker, default_conf, fee, markets, limit_buy_order) -> None: +def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: patch_RPCManager(mocker) patch_exchange(mocker) freqtrade = FreqtradeBot(default_conf) @@ -896,7 +872,6 @@ def test_execute_buy(mocker, default_conf, fee, markets, limit_buy_order) -> Non }), buy=buy_mm, get_fee=fee, - markets=PropertyMock(return_value=markets) ) pair = 'ETH/BTC' @@ -993,7 +968,7 @@ def test_add_stoploss_on_exchange(mocker, default_conf, limit_buy_order) -> None def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, - markets, limit_buy_order, limit_sell_order) -> None: + limit_buy_order, limit_sell_order) -> None: stoploss_limit = MagicMock(return_value={'id': 13434334}) patch_RPCManager(mocker) patch_exchange(mocker) @@ -1007,7 +982,6 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets), stoploss_limit=stoploss_limit ) freqtrade = FreqtradeBot(default_conf) @@ -1094,7 +1068,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, - markets, limit_buy_order, limit_sell_order) -> None: + limit_buy_order, limit_sell_order) -> None: # Sixth case: stoploss order was cancelled but couldn't create new one patch_RPCManager(mocker) patch_exchange(mocker) @@ -1108,7 +1082,6 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets), get_order=MagicMock(return_value={'status': 'canceled'}), stoploss_limit=MagicMock(side_effect=DependencyException()), ) @@ -1129,7 +1102,7 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, - markets, limit_buy_order, limit_sell_order): + limit_buy_order, limit_sell_order): rpc_mock = patch_RPCManager(mocker) patch_exchange(mocker) sell_mock = MagicMock(return_value={'id': limit_sell_order['id']}) @@ -1143,7 +1116,6 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=sell_mock, get_fee=fee, - markets=PropertyMock(return_value=markets), get_order=MagicMock(return_value={'status': 'canceled'}), stoploss_limit=MagicMock(side_effect=InvalidOrderException()), ) @@ -1266,8 +1238,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, caplog, - markets, limit_buy_order, - limit_sell_order) -> None: + limit_buy_order, limit_sell_order) -> None: # When trailing stoploss is set stoploss_limit = MagicMock(return_value={'id': 13434334}) patch_exchange(mocker) @@ -1282,7 +1253,6 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets), stoploss_limit=stoploss_limit ) @@ -1335,7 +1305,7 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, - markets, limit_buy_order, limit_sell_order) -> None: + limit_buy_order, limit_sell_order) -> None: # When trailing stoploss is set stoploss_limit = MagicMock(return_value={'id': 13434334}) @@ -1353,7 +1323,6 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets), stoploss_limit=stoploss_limit ) @@ -1654,8 +1623,7 @@ def test_update_trade_state_sell(default_conf, trades_for_order, limit_sell_orde assert not trade.is_open -def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, - fee, markets, mocker) -> None: +def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -1668,7 +1636,6 @@ def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -1695,8 +1662,7 @@ def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, assert trade.close_date is not None -def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order, - fee, markets, mocker) -> None: +def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -1704,7 +1670,6 @@ def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order, get_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) freqtrade = FreqtradeBot(default_conf) @@ -1810,7 +1775,7 @@ def test_handle_trade_use_sell_signal( def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order, - fee, markets, mocker) -> None: + fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -1818,7 +1783,6 @@ def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order, get_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -2148,14 +2112,13 @@ def test_handle_timedout_limit_sell(mocker, default_conf) -> None: assert cancel_order_mock.call_count == 1 -def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, markets, mocker) -> None: +def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, mocker) -> None: rpc_mock = patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets) ) patch_whitelist(mocker, default_conf) freqtrade = FreqtradeBot(default_conf) @@ -2195,14 +2158,13 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, markets, moc } == last_msg -def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, markets, mocker) -> None: +def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, mocker) -> None: rpc_mock = patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets) ) patch_whitelist(mocker, default_conf) freqtrade = FreqtradeBot(default_conf) @@ -2244,15 +2206,13 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, markets, def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fee, - ticker_sell_down, - markets, mocker) -> None: + ticker_sell_down, mocker) -> None: rpc_mock = patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets) ) patch_whitelist(mocker, default_conf) freqtrade = FreqtradeBot(default_conf) @@ -2300,8 +2260,7 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe } == last_msg -def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee, - markets, caplog) -> None: +def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.exchange.Exchange.cancel_order', side_effect=InvalidOrderException()) sellmock = MagicMock() @@ -2310,7 +2269,6 @@ def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee, 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets), sell=sellmock ) @@ -2330,9 +2288,8 @@ def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee, assert log_has('Could not cancel stoploss order abcd', caplog) -def test_execute_sell_with_stoploss_on_exchange(default_conf, - ticker, fee, ticker_sell_up, - markets, mocker) -> None: +def test_execute_sell_with_stoploss_on_exchange(default_conf, ticker, fee, ticker_sell_up, + mocker) -> None: default_conf['exchange']['name'] = 'binance' rpc_mock = patch_RPCManager(mocker) @@ -2349,7 +2306,6 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets), symbol_amount_prec=lambda s, x, y: y, symbol_price_prec=lambda s, x, y: y, stoploss_limit=stoploss_limit, @@ -2384,10 +2340,8 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, assert rpc_mock.call_count == 2 -def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, - ticker, fee, - limit_buy_order, - markets, mocker) -> None: +def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, fee, + limit_buy_order, mocker) -> None: default_conf['exchange']['name'] = 'binance' rpc_mock = patch_RPCManager(mocker) patch_exchange(mocker) @@ -2395,7 +2349,6 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets), symbol_amount_prec=lambda s, x, y: y, symbol_price_prec=lambda s, x, y: y, ) @@ -2453,14 +2406,13 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, def test_execute_sell_market_order(default_conf, ticker, fee, - ticker_sell_up, markets, mocker) -> None: + ticker_sell_up, mocker) -> None: rpc_mock = patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, get_fee=fee, - markets=PropertyMock(return_value=markets) ) patch_whitelist(mocker, default_conf) freqtrade = FreqtradeBot(default_conf) @@ -2506,7 +2458,7 @@ def test_execute_sell_market_order(default_conf, ticker, fee, def test_sell_profit_only_enable_profit(default_conf, limit_buy_order, - fee, markets, mocker) -> None: + fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -2518,7 +2470,6 @@ def test_sell_profit_only_enable_profit(default_conf, limit_buy_order, }), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) default_conf['ask_strategy'] = { 'use_sell_signal': True, @@ -2538,7 +2489,7 @@ def test_sell_profit_only_enable_profit(default_conf, limit_buy_order, def test_sell_profit_only_disable_profit(default_conf, limit_buy_order, - fee, markets, mocker) -> None: + fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -2550,7 +2501,6 @@ def test_sell_profit_only_disable_profit(default_conf, limit_buy_order, }), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) default_conf['ask_strategy'] = { 'use_sell_signal': True, @@ -2568,7 +2518,7 @@ def test_sell_profit_only_disable_profit(default_conf, limit_buy_order, assert trade.sell_reason == SellType.SELL_SIGNAL.value -def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, markets, mocker) -> None: +def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -2580,7 +2530,6 @@ def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, market }), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) default_conf['ask_strategy'] = { 'use_sell_signal': True, @@ -2598,7 +2547,7 @@ def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, market assert freqtrade.handle_trade(trade) is False -def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, markets, mocker) -> None: +def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -2610,7 +2559,6 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, marke }), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) default_conf['ask_strategy'] = { 'use_sell_signal': True, @@ -2932,7 +2880,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, def test_disable_ignore_roi_if_buy_signal(default_conf, limit_buy_order, - fee, markets, mocker) -> None: + fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -2944,7 +2892,6 @@ def test_disable_ignore_roi_if_buy_signal(default_conf, limit_buy_order, }), buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) default_conf['ask_strategy'] = { 'ignore_roi_if_buy_signal': False @@ -3239,7 +3186,7 @@ def test_get_real_amount_open_trade(default_conf, mocker): assert freqtrade.get_real_amount(trade, order) == amount -def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee, markets, mocker, +def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee, mocker, order_book_l2): default_conf['bid_strategy']['check_depth_of_market']['enabled'] = True default_conf['bid_strategy']['check_depth_of_market']['bids_to_ask_delta'] = 0.1 @@ -3251,7 +3198,6 @@ def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee, get_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) # Save state of current whitelist @@ -3275,7 +3221,7 @@ def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee, def test_order_book_depth_of_market_high_delta(default_conf, ticker, limit_buy_order, - fee, markets, mocker, order_book_l2): + fee, mocker, order_book_l2): default_conf['bid_strategy']['check_depth_of_market']['enabled'] = True # delta is 100 which is impossible to reach. hence check_depth_of_market will return false default_conf['bid_strategy']['check_depth_of_market']['bids_to_ask_delta'] = 100 @@ -3287,7 +3233,6 @@ def test_order_book_depth_of_market_high_delta(default_conf, ticker, limit_buy_o get_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) # Save state of current whitelist freqtrade = FreqtradeBot(default_conf) @@ -3298,7 +3243,7 @@ def test_order_book_depth_of_market_high_delta(default_conf, ticker, limit_buy_o assert trade is None -def test_order_book_bid_strategy1(mocker, default_conf, order_book_l2, markets) -> None: +def test_order_book_bid_strategy1(mocker, default_conf, order_book_l2) -> None: """ test if function get_target_bid will return the order book price instead of the ask rate @@ -3307,7 +3252,6 @@ def test_order_book_bid_strategy1(mocker, default_conf, order_book_l2, markets) ticker_mock = MagicMock(return_value={'ask': 0.045, 'last': 0.046}) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - markets=PropertyMock(return_value=markets), get_order_book=order_book_l2, get_ticker=ticker_mock, @@ -3323,7 +3267,7 @@ def test_order_book_bid_strategy1(mocker, default_conf, order_book_l2, markets) assert ticker_mock.call_count == 0 -def test_order_book_bid_strategy2(mocker, default_conf, order_book_l2, markets) -> None: +def test_order_book_bid_strategy2(mocker, default_conf, order_book_l2) -> None: """ test if function get_target_bid will return the ask rate (since its value is lower) instead of the order book rate (even if enabled) @@ -3332,7 +3276,6 @@ def test_order_book_bid_strategy2(mocker, default_conf, order_book_l2, markets) ticker_mock = MagicMock(return_value={'ask': 0.042, 'last': 0.046}) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - markets=PropertyMock(return_value=markets), get_order_book=order_book_l2, get_ticker=ticker_mock, @@ -3349,14 +3292,13 @@ def test_order_book_bid_strategy2(mocker, default_conf, order_book_l2, markets) assert ticker_mock.call_count == 0 -def test_check_depth_of_market_buy(default_conf, mocker, order_book_l2, markets) -> None: +def test_check_depth_of_market_buy(default_conf, mocker, order_book_l2) -> None: """ test check depth of market """ patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - markets=PropertyMock(return_value=markets), get_order_book=order_book_l2 ) default_conf['telegram']['enabled'] = False @@ -3371,7 +3313,7 @@ def test_check_depth_of_market_buy(default_conf, mocker, order_book_l2, markets) def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order, - fee, markets, mocker, order_book_l2) -> None: + fee, mocker, order_book_l2) -> None: """ test order book ask strategy """ @@ -3393,7 +3335,6 @@ def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - markets=PropertyMock(return_value=markets) ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) diff --git a/tests/test_integration.py b/tests/test_integration.py index 37ee24d6c..c83b2de6d 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -6,10 +6,8 @@ from freqtrade.strategy.interface import SellCheckTuple, SellType from tests.conftest import get_patched_freqtradebot, patch_get_signal -def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, - ticker, fee, - limit_buy_order, - markets, mocker) -> None: +def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, + limit_buy_order, mocker) -> None: """ Tests workflow of selling stoploss_on_exchange. Sells From b6616d7a13e727adf6a43f61d321fdaff88e4cfa Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 31 Oct 2019 10:04:28 +0100 Subject: [PATCH 0873/3421] Add test helping debug #1985 --- tests/test_integration.py | 50 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/tests/test_integration.py b/tests/test_integration.py index c83b2de6d..228ed8468 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -4,6 +4,7 @@ from unittest.mock import MagicMock from freqtrade.persistence import Trade from freqtrade.strategy.interface import SellCheckTuple, SellType from tests.conftest import get_patched_freqtradebot, patch_get_signal +from freqtrade.rpc.rpc import RPC def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, @@ -107,3 +108,52 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, trade = trades[2] assert trade.sell_reason == SellType.SELL_SIGNAL.value assert not trade.is_open + + +def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, mocker) -> None: + """ + Tests workflow + """ + default_conf['max_open_trades'] = 5 + default_conf['forcebuy_enable'] = True + default_conf['stake_amount'] = 'unlimited' + default_conf['exchange']['name'] = 'binance' + default_conf['telegram']['enabled'] = True + mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) + mocker.patch('freqtrade.wallets.Wallets.get_free', MagicMock( + side_effect=[1000, 800, 600, 400, 200] + )) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_ticker=ticker, + get_fee=fee, + symbol_amount_prec=lambda s, x, y: y, + symbol_price_prec=lambda s, x, y: y, + ) + + mocker.patch.multiple( + 'freqtrade.freqtradebot.FreqtradeBot', + create_stoploss_order=MagicMock(return_value=True), + update_trade_state=MagicMock(), + _notify_sell=MagicMock(), + ) + + freqtrade = get_patched_freqtradebot(mocker, default_conf) + rpc = RPC(freqtrade) + freqtrade.strategy.order_types['stoploss_on_exchange'] = True + # Switch ordertype to market to close trade immediately + freqtrade.strategy.order_types['sell'] = 'market' + patch_get_signal(freqtrade) + + # Create 4 trades + freqtrade.create_trades() + + trades = Trade.query.all() + assert len(trades) == 4 + rpc._rpc_forcebuy('TKN/BTC', None) + + trades = Trade.query.all() + assert len(trades) == 5 + + for trade in trades: + assert trade.stake_amount == 200 From 9a42afe0bec5442b4f0805ba190211829efde22d Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 31 Oct 2019 10:39:24 +0100 Subject: [PATCH 0874/3421] Move exchange-constants and retriers to exchange.common --- freqtrade/exchange/__init__.py | 3 +- freqtrade/exchange/common.py | 124 ++++++++++++++++++++++++++++++++ freqtrade/exchange/exchange.py | 123 +------------------------------ tests/exchange/test_exchange.py | 8 +-- 4 files changed, 132 insertions(+), 126 deletions(-) create mode 100644 freqtrade/exchange/common.py diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index 0948692f1..c107f7abc 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -1,4 +1,5 @@ -from freqtrade.exchange.exchange import Exchange, MAP_EXCHANGE_CHILDCLASS # noqa: F401 +from freqtrade.exchange.common import MAP_EXCHANGE_CHILDCLASS # noqa: F401 +from freqtrade.exchange.exchange import Exchange # noqa: F401 from freqtrade.exchange.exchange import (get_exchange_bad_reason, # noqa: F401 is_exchange_bad, is_exchange_known_ccxt, diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py new file mode 100644 index 000000000..ed30b95c7 --- /dev/null +++ b/freqtrade/exchange/common.py @@ -0,0 +1,124 @@ +import logging + +from freqtrade import DependencyException, TemporaryError + +logger = logging.getLogger(__name__) + + +API_RETRY_COUNT = 4 +BAD_EXCHANGES = { + "bitmex": "Various reasons.", + "bitstamp": "Does not provide history. " + "Details in https://github.com/freqtrade/freqtrade/issues/1983", + "hitbtc": "This API cannot be used with Freqtrade. " + "Use `hitbtc2` exchange id to access this exchange.", + **dict.fromkeys([ + 'adara', + 'anxpro', + 'bigone', + 'coinbase', + 'coinexchange', + 'coinmarketcap', + 'lykke', + 'xbtce', + ], "Does not provide timeframes. ccxt fetchOHLCV: False"), + **dict.fromkeys([ + 'bcex', + 'bit2c', + 'bitbay', + 'bitflyer', + 'bitforex', + 'bithumb', + 'bitso', + 'bitstamp1', + 'bl3p', + 'braziliex', + 'btcbox', + 'btcchina', + 'btctradeim', + 'btctradeua', + 'bxinth', + 'chilebit', + 'coincheck', + 'coinegg', + 'coinfalcon', + 'coinfloor', + 'coingi', + 'coinmate', + 'coinone', + 'coinspot', + 'coolcoin', + 'crypton', + 'deribit', + 'exmo', + 'exx', + 'flowbtc', + 'foxbit', + 'fybse', + # 'hitbtc', + 'ice3x', + 'independentreserve', + 'indodax', + 'itbit', + 'lakebtc', + 'latoken', + 'liquid', + 'livecoin', + 'luno', + 'mixcoins', + 'negociecoins', + 'nova', + 'paymium', + 'southxchange', + 'stronghold', + 'surbitcoin', + 'therock', + 'tidex', + 'vaultoro', + 'vbtc', + 'virwox', + 'yobit', + 'zaif', + ], "Does not provide timeframes. ccxt fetchOHLCV: emulated"), +} + +MAP_EXCHANGE_CHILDCLASS = { + 'binanceus': 'binance', + 'binanceje': 'binance', +} + + +def retrier_async(f): + async def wrapper(*args, **kwargs): + count = kwargs.pop('count', API_RETRY_COUNT) + try: + return await f(*args, **kwargs) + except (TemporaryError, DependencyException) as ex: + logger.warning('%s() returned exception: "%s"', f.__name__, ex) + if count > 0: + count -= 1 + kwargs.update({'count': count}) + logger.warning('retrying %s() still for %s times', f.__name__, count) + return await wrapper(*args, **kwargs) + else: + logger.warning('Giving up retrying: %s()', f.__name__) + raise ex + return wrapper + + +def retrier(f): + def wrapper(*args, **kwargs): + count = kwargs.pop('count', API_RETRY_COUNT) + try: + return f(*args, **kwargs) + except (TemporaryError, DependencyException) as ex: + logger.warning('%s() returned exception: "%s"', f.__name__, ex) + if count > 0: + count -= 1 + kwargs.update({'count': count}) + logger.warning('retrying %s() still for %s times', f.__name__, count) + return wrapper(*args, **kwargs) + else: + logger.warning('Giving up retrying: %s()', f.__name__) + raise ex + return wrapper diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 023e16cc5..430a2ff54 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -14,137 +14,18 @@ from typing import Any, Dict, List, Optional, Tuple import arrow import ccxt import ccxt.async_support as ccxt_async -from ccxt.base.decimal_to_precision import ROUND_UP, ROUND_DOWN +from ccxt.base.decimal_to_precision import ROUND_DOWN, ROUND_UP from pandas import DataFrame from freqtrade import (DependencyException, InvalidOrderException, OperationalException, TemporaryError, constants) from freqtrade.data.converter import parse_ticker_dataframe +from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async from freqtrade.misc import deep_merge_dicts - logger = logging.getLogger(__name__) -API_RETRY_COUNT = 4 -BAD_EXCHANGES = { - "bitmex": "Various reasons.", - "bitstamp": "Does not provide history. " - "Details in https://github.com/freqtrade/freqtrade/issues/1983", - "hitbtc": "This API cannot be used with Freqtrade. " - "Use `hitbtc2` exchange id to access this exchange.", - **dict.fromkeys([ - 'adara', - 'anxpro', - 'bigone', - 'coinbase', - 'coinexchange', - 'coinmarketcap', - 'lykke', - 'xbtce', - ], "Does not provide timeframes. ccxt fetchOHLCV: False"), - **dict.fromkeys([ - 'bcex', - 'bit2c', - 'bitbay', - 'bitflyer', - 'bitforex', - 'bithumb', - 'bitso', - 'bitstamp1', - 'bl3p', - 'braziliex', - 'btcbox', - 'btcchina', - 'btctradeim', - 'btctradeua', - 'bxinth', - 'chilebit', - 'coincheck', - 'coinegg', - 'coinfalcon', - 'coinfloor', - 'coingi', - 'coinmate', - 'coinone', - 'coinspot', - 'coolcoin', - 'crypton', - 'deribit', - 'exmo', - 'exx', - 'flowbtc', - 'foxbit', - 'fybse', - # 'hitbtc', - 'ice3x', - 'independentreserve', - 'indodax', - 'itbit', - 'lakebtc', - 'latoken', - 'liquid', - 'livecoin', - 'luno', - 'mixcoins', - 'negociecoins', - 'nova', - 'paymium', - 'southxchange', - 'stronghold', - 'surbitcoin', - 'therock', - 'tidex', - 'vaultoro', - 'vbtc', - 'virwox', - 'yobit', - 'zaif', - ], "Does not provide timeframes. ccxt fetchOHLCV: emulated"), - } - -MAP_EXCHANGE_CHILDCLASS = { - 'binanceus': 'binance', - 'binanceje': 'binance', -} - - -def retrier_async(f): - async def wrapper(*args, **kwargs): - count = kwargs.pop('count', API_RETRY_COUNT) - try: - return await f(*args, **kwargs) - except (TemporaryError, DependencyException) as ex: - logger.warning('%s() returned exception: "%s"', f.__name__, ex) - if count > 0: - count -= 1 - kwargs.update({'count': count}) - logger.warning('retrying %s() still for %s times', f.__name__, count) - return await wrapper(*args, **kwargs) - else: - logger.warning('Giving up retrying: %s()', f.__name__) - raise ex - return wrapper - - -def retrier(f): - def wrapper(*args, **kwargs): - count = kwargs.pop('count', API_RETRY_COUNT) - try: - return f(*args, **kwargs) - except (TemporaryError, DependencyException) as ex: - logger.warning('%s() returned exception: "%s"', f.__name__, ex) - if count > 0: - count -= 1 - kwargs.update({'count': count}) - logger.warning('retrying %s() still for %s times', f.__name__, count) - return wrapper(*args, **kwargs) - else: - logger.warning('Giving up retrying: %s()', f.__name__) - raise ex - return wrapper - - class Exchange: _config: Dict = {} diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 4eb0df1a3..8a4121d80 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -14,13 +14,13 @@ from pandas import DataFrame from freqtrade import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange import Binance, Exchange, Kraken -from freqtrade.exchange.exchange import (API_RETRY_COUNT, timeframe_to_minutes, +from freqtrade.exchange.common import API_RETRY_COUNT +from freqtrade.exchange.exchange import (market_is_active, symbol_is_pair, + timeframe_to_minutes, timeframe_to_msecs, timeframe_to_next_date, timeframe_to_prev_date, - timeframe_to_seconds, - symbol_is_pair, - market_is_active) + timeframe_to_seconds) from freqtrade.resolvers.exchange_resolver import ExchangeResolver from tests.conftest import get_patched_exchange, log_has, log_has_re From a80e49bd8174d7a335c1393f0880e5e36543e1c8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 31 Oct 2019 12:49:41 +0100 Subject: [PATCH 0875/3421] Change level of rpi header --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 50f24d3e8..9180beb40 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -95,7 +95,7 @@ sudo apt-get update sudo apt-get install build-essential git ``` -#### Raspberry Pi / Raspbian +### Raspberry Pi / Raspbian The following assumes the latest [Raspbian Buster lite image](https://www.raspberrypi.org/downloads/raspbian/) from at least September 2019. This image comes with python3.7 preinstalled, making it easy to get freqtrade up and running. From 241d94756466c1a65b966ba8d3e8db81d5812e2e Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 15:39:25 +0100 Subject: [PATCH 0876/3421] Add new runmodes --- freqtrade/configuration/check_exchange.py | 3 ++- freqtrade/configuration/config_validation.py | 3 ++- freqtrade/state.py | 4 +++- freqtrade/utils.py | 6 +++--- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/freqtrade/configuration/check_exchange.py b/freqtrade/configuration/check_exchange.py index 5e811fb81..5d963db47 100644 --- a/freqtrade/configuration/check_exchange.py +++ b/freqtrade/configuration/check_exchange.py @@ -21,7 +21,8 @@ def check_exchange(config: Dict[str, Any], check_for_bad: bool = True) -> bool: and thus is not known for the Freqtrade at all. """ - if config['runmode'] in [RunMode.PLOT] and not config.get('exchange', {}).get('name'): + if (config['runmode'] in [RunMode.PLOT, RunMode.UTIL_NO_EXCHANGE] + and not config.get('exchange', {}).get('name')): # Skip checking exchange in plot mode, since it requires no exchange return True logger.info("Checking exchange...") diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 93d93263f..8083264e2 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -118,7 +118,8 @@ def _validate_whitelist(conf: Dict[str, Any]) -> None: """ Dynamic whitelist does not require pair_whitelist to be set - however StaticWhitelist does. """ - if conf.get('runmode', RunMode.OTHER) in [RunMode.OTHER, RunMode.PLOT]: + if conf.get('runmode', RunMode.OTHER) in [RunMode.OTHER, RunMode.PLOT, + RunMode.UTIL_NO_EXCHANGE, RunMode.UTIL_EXCHANGE]: return if (conf.get('pairlist', {}).get('method', 'StaticPairList') == 'StaticPairList' diff --git a/freqtrade/state.py b/freqtrade/state.py index d4a2adba0..ed8c75def 100644 --- a/freqtrade/state.py +++ b/freqtrade/state.py @@ -25,5 +25,7 @@ class RunMode(Enum): BACKTEST = "backtest" EDGE = "edge" HYPEROPT = "hyperopt" + UTIL_EXCHANGE = "util_exchange" + UTIL_NO_EXCHANGE = "util_no_exchange" PLOT = "plot" - OTHER = "other" # Used for plotting scripts and test + OTHER = "other" diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 25e883c76..630de0f5a 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -74,7 +74,7 @@ def start_download_data(args: Dict[str, Any]) -> None: """ Download data (former download_backtest_data.py script) """ - config = setup_utils_configuration(args, RunMode.OTHER) + config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) timerange = TimeRange() if 'days' in config: @@ -123,7 +123,7 @@ def start_list_timeframes(args: Dict[str, Any]) -> None: """ Print ticker intervals (timeframes) available on Exchange """ - config = setup_utils_configuration(args, RunMode.OTHER) + config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) # Do not use ticker_interval set in the config config['ticker_interval'] = None @@ -144,7 +144,7 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: :param pairs_only: if True print only pairs, otherwise print all instruments (markets) :return: None """ - config = setup_utils_configuration(args, RunMode.OTHER) + config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) # Init exchange exchange = ExchangeResolver(config['exchange']['name'], config, validate=False).exchange From 691cec7956e17256af27506216954b2cd6f043cf Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 16:42:57 +0100 Subject: [PATCH 0877/3421] Be more selective which startup-messages are shown --- freqtrade/configuration/configuration.py | 46 +++++++++++++----------- freqtrade/state.py | 5 +++ 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index be1c7ab4e..4637e3e5d 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -17,7 +17,7 @@ from freqtrade.configuration.directory_operations import (create_datadir, from freqtrade.configuration.load_config import load_config_file from freqtrade.loggers import setup_logging from freqtrade.misc import deep_merge_dicts, json_load -from freqtrade.state import RunMode +from freqtrade.state import RunMode, TRADING_MODES, NON_UTIL_MODES logger = logging.getLogger(__name__) @@ -98,14 +98,16 @@ class Configuration: # Keep a copy of the original configuration file config['original_config'] = deepcopy(config) + self._process_runmode(config) + self._process_common_options(config) + self._process_trading_options(config) + self._process_optimize_options(config) self._process_plot_options(config) - self._process_runmode(config) - # Check if the exchange set by the user is supported check_exchange(config, config.get('experimental', {}).get('block_bad_exchanges', True)) @@ -130,6 +132,22 @@ class Configuration: setup_logging(config) + def _process_trading_options(self, config: Dict[str, Any]) -> None: + if config['runmode'] not in TRADING_MODES: + return + + if config.get('dry_run', False): + logger.info('Dry run is enabled') + if config.get('db_url') in [None, constants.DEFAULT_DB_PROD_URL]: + # Default to in-memory db for dry_run if not specified + config['db_url'] = constants.DEFAULT_DB_DRYRUN_URL + else: + if not config.get('db_url', None): + config['db_url'] = constants.DEFAULT_DB_PROD_URL + logger.info('Dry run is disabled') + + logger.info(f'Using DB: "{config["db_url"]}"') + def _process_common_options(self, config: Dict[str, Any]) -> None: self._process_logging_options(config) @@ -146,25 +164,9 @@ class Configuration: config.update({'db_url': self.args["db_url"]}) logger.info('Parameter --db-url detected ...') - if config.get('dry_run', False): - logger.info('Dry run is enabled') - if config.get('db_url') in [None, constants.DEFAULT_DB_PROD_URL]: - # Default to in-memory db for dry_run if not specified - config['db_url'] = constants.DEFAULT_DB_DRYRUN_URL - else: - if not config.get('db_url', None): - config['db_url'] = constants.DEFAULT_DB_PROD_URL - logger.info('Dry run is disabled') - - logger.info(f'Using DB: "{config["db_url"]}"') - if config.get('forcebuy_enable', False): logger.warning('`forcebuy` RPC message enabled.') - # Setting max_open_trades to infinite if -1 - if config.get('max_open_trades') == -1: - config['max_open_trades'] = float('inf') - # Support for sd_notify if 'sd_notify' in self.args and self.args["sd_notify"]: config['internals'].update({'sd_notify': True}) @@ -212,6 +214,10 @@ class Configuration: self._args_to_config(config, argname='position_stacking', logstring='Parameter --enable-position-stacking detected ...') + # Setting max_open_trades to infinite if -1 + if config.get('max_open_trades') == -1: + config['max_open_trades'] = float('inf') + if 'use_max_market_positions' in self.args and not self.args["use_max_market_positions"]: config.update({'use_max_market_positions': False}) logger.info('Parameter --disable-max-market-positions detected ...') @@ -220,7 +226,7 @@ class Configuration: config.update({'max_open_trades': self.args["max_open_trades"]}) logger.info('Parameter --max_open_trades detected, ' 'overriding max_open_trades to: %s ...', config.get('max_open_trades')) - else: + elif config['runmode'] in NON_UTIL_MODES: logger.info('Using max_open_trades: %s ...', config.get('max_open_trades')) self._args_to_config(config, argname='stake_amount', diff --git a/freqtrade/state.py b/freqtrade/state.py index ed8c75def..415f6f5f2 100644 --- a/freqtrade/state.py +++ b/freqtrade/state.py @@ -29,3 +29,8 @@ class RunMode(Enum): UTIL_NO_EXCHANGE = "util_no_exchange" PLOT = "plot" OTHER = "other" + + +TRADING_MODES = [RunMode.LIVE, RunMode.DRY_RUN] +OPTIMIZE_MODES = [RunMode.BACKTEST, RunMode.EDGE, RunMode.HYPEROPT] +NON_UTIL_MODES = TRADING_MODES + OPTIMIZE_MODES From 2124661cee43affc660cb08f07af26d68004c35d Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 2 Nov 2019 02:22:58 +0300 Subject: [PATCH 0878/3421] Update faq with examples of grepping the log --- docs/faq.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/docs/faq.md b/docs/faq.md index dd92d310e..7652ec278 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -55,6 +55,44 @@ If you have restricted pairs in your whitelist, you'll get a warning message in If you're an "International" Customer on the Bittrex exchange, then this warning will probably not impact you. If you're a US customer, the bot will fail to create orders for these pairs, and you should remove them from your Whitelist. +### How do I search the bot logs for something? + +By default, the bot writes its log into stderr stream. This is implemented this way so that you can easily separate the bot's diagnostics messages from Backtesting, Edge and Hyperopt results, output from other various Freqtrade utility subcommands, as well as from the output of your custom `print()`'s you may have inserted into your strategy. So if you need to search the log messages with the grep utility, you need to redirect stderr to stdout and disregard stdout. + +* In unix shells, this normally can be done as simple as: +```shell +freqtrade --some-options 2>&1 >/dev/null | grep 'something' +``` +(note, `2>&1` and `>/dev/null` should be written in this order) + +* Bash interpreter also supports so called process substitution syntax, you can grep the log for a string with it as: +```shell +$ freqtrade --some-options 2> >(grep 'something') >/dev/null +``` +or +```shell +$ freqtrade --some-options 2> >(grep -v 'something' 1>&2) +``` + +* You can also write the copy of Freqtrade log messages to a file with the `--logfile` option: +```shell +$ freqtrade --logfile /path/to/mylogfile.log --some-options +``` +and then grep it as: +```shell +$ cat /path/to/mylogfile.log | grep 'something' +``` +or even on the fly, as the bot works and the logfile grows: +```shell +$ tail -f /path/to/mylogfile.log | grep 'something' +``` +from a separate terminal window. + +On Windows, the `--logfilename` option is also supported by Freqtrade and you can use the `findstr` command to search the log for the string of interest: +``` +> type \path\to\mylogfile.log | findstr "something" +``` + ## Hyperopt module ### How many epoch do I need to get a good Hyperopt result? From e9af6b393f5ff7aa34e2e0d63879ced22741343e Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 2 Nov 2019 02:32:57 +0300 Subject: [PATCH 0879/3421] Fix typo --- docs/faq.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/faq.md b/docs/faq.md index 7652ec278..7fdd54958 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -61,7 +61,7 @@ By default, the bot writes its log into stderr stream. This is implemented this * In unix shells, this normally can be done as simple as: ```shell -freqtrade --some-options 2>&1 >/dev/null | grep 'something' +$ freqtrade --some-options 2>&1 >/dev/null | grep 'something' ``` (note, `2>&1` and `>/dev/null` should be written in this order) From 861f10dca65b64a76a3fd83459161b95e2a737ef Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 Nov 2019 11:10:33 +0100 Subject: [PATCH 0880/3421] Allow populate-indicators to come from strategy --- freqtrade/optimize/hyperopt_interface.py | 12 +----------- freqtrade/resolvers/hyperopt_resolver.py | 3 +++ 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 4208b29d3..142f305df 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -5,10 +5,9 @@ This module defines the interface to apply for hyperopts import logging import math -from abc import ABC, abstractmethod +from abc import ABC from typing import Dict, Any, Callable, List -from pandas import DataFrame from skopt.space import Dimension, Integer, Real from freqtrade import OperationalException @@ -42,15 +41,6 @@ class IHyperOpt(ABC): # Assign ticker_interval to be used in hyperopt IHyperOpt.ticker_interval = str(config['ticker_interval']) - @staticmethod - @abstractmethod - def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame: - """ - Populate indicators that will be used in the Buy and Sell strategy. - :param dataframe: Raw data from the exchange and parsed by parse_ticker_dataframe(). - :return: A Dataframe with all mandatory indicators for the strategies. - """ - @staticmethod def buy_strategy_generator(params: Dict[str, Any]) -> Callable: """ diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index db51c3ca5..1ad53fe33 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -34,6 +34,9 @@ class HyperOptResolver(IResolver): self.hyperopt = self._load_hyperopt(hyperopt_name, config, extra_dir=config.get('hyperopt_path')) + if not hasattr(self.hyperopt, 'populate_indicators'): + logger.warning("Hyperopt class does not provide populate_indicators() method. " + "Using populate_indicators from the strategy.") if not hasattr(self.hyperopt, 'populate_buy_trend'): logger.warning("Hyperopt class does not provide populate_buy_trend() method. " "Using populate_buy_trend from the strategy.") From 97d0f93d3ce0d4ab3decaa75f7b0432fc320efd4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 Nov 2019 11:11:13 +0100 Subject: [PATCH 0881/3421] Align samples (hyperopt and strategy) to work together --- user_data/hyperopts/sample_hyperopt.py | 33 ++----------------------- user_data/strategies/sample_strategy.py | 15 +++++------ 2 files changed, 10 insertions(+), 38 deletions(-) diff --git a/user_data/hyperopts/sample_hyperopt.py b/user_data/hyperopts/sample_hyperopt.py index fabfdb23e..2721ab405 100644 --- a/user_data/hyperopts/sample_hyperopt.py +++ b/user_data/hyperopts/sample_hyperopt.py @@ -2,12 +2,11 @@ from functools import reduce from typing import Any, Callable, Dict, List -from datetime import datetime -import numpy as np +import numpy as np # noqa import talib.abstract as ta from pandas import DataFrame -from skopt.space import Categorical, Dimension, Integer, Real +from skopt.space import Categorical, Dimension, Integer, Real # noqa import freqtrade.vendor.qtpylib.indicators as qtpylib from freqtrade.optimize.hyperopt_interface import IHyperOpt @@ -34,34 +33,6 @@ class SampleHyperOpts(IHyperOpt): Sample implementation of these methods can be found in https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py """ - @staticmethod - def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame: - """ - Add several indicators needed for buy and sell strategies defined below. - """ - # ADX - dataframe['adx'] = ta.ADX(dataframe) - # MACD - macd = ta.MACD(dataframe) - dataframe['macd'] = macd['macd'] - dataframe['macdsignal'] = macd['macdsignal'] - # MFI - dataframe['mfi'] = ta.MFI(dataframe) - # RSI - dataframe['rsi'] = ta.RSI(dataframe) - # Stochastic Fast - stoch_fast = ta.STOCHF(dataframe) - dataframe['fastd'] = stoch_fast['fastd'] - # Minus-DI - dataframe['minus_di'] = ta.MINUS_DI(dataframe) - # Bollinger bands - bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2) - dataframe['bb_lowerband'] = bollinger['lower'] - dataframe['bb_upperband'] = bollinger['upper'] - # SAR - dataframe['sar'] = ta.SAR(dataframe) - - return dataframe @staticmethod def buy_strategy_generator(params: Dict[str, Any]) -> Callable: diff --git a/user_data/strategies/sample_strategy.py b/user_data/strategies/sample_strategy.py index c2fd681d2..36dea65c9 100644 --- a/user_data/strategies/sample_strategy.py +++ b/user_data/strategies/sample_strategy.py @@ -107,16 +107,16 @@ class SampleStrategy(IStrategy): # RSI dataframe['rsi'] = ta.RSI(dataframe) - """ + # ADX dataframe['adx'] = ta.ADX(dataframe) - + """ # Awesome oscillator dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) # Commodity Channel Index: values Oversold:<-100, Overbought:>100 dataframe['cci'] = ta.CCI(dataframe) - + """ # MACD macd = ta.MACD(dataframe) dataframe['macd'] = macd['macd'] @@ -126,6 +126,7 @@ class SampleStrategy(IStrategy): # MFI dataframe['mfi'] = ta.MFI(dataframe) + """ # Minus Directional Indicator / Movement dataframe['minus_dm'] = ta.MINUS_DM(dataframe) dataframe['minus_di'] = ta.MINUS_DI(dataframe) @@ -149,12 +150,13 @@ class SampleStrategy(IStrategy): stoch = ta.STOCH(dataframe) dataframe['slowd'] = stoch['slowd'] dataframe['slowk'] = stoch['slowk'] - + """ # Stoch fast stoch_fast = ta.STOCHF(dataframe) dataframe['fastd'] = stoch_fast['fastd'] dataframe['fastk'] = stoch_fast['fastk'] + """ # Stoch RSI stoch_rsi = ta.STOCHRSI(dataframe) dataframe['fastd_rsi'] = stoch_rsi['fastd'] @@ -178,12 +180,11 @@ class SampleStrategy(IStrategy): dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50) dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100) - # SAR Parabol - dataframe['sar'] = ta.SAR(dataframe) - # SMA - Simple Moving Average dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) """ + # SAR Parabol + dataframe['sar'] = ta.SAR(dataframe) # TEMA - Triple Exponential Moving Average dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9) From 12e86ee4bd48300cf5057ebecc11f7b8b257089c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 Nov 2019 11:12:08 +0100 Subject: [PATCH 0882/3421] Make travis test-hyperopt the sample strategy --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index eb171521d..1cc22dfbd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,7 +32,7 @@ jobs: name: backtest - script: - cp config.json.example config.json - - freqtrade --datadir tests/testdata hyperopt -e 5 + - freqtrade --datadir tests/testdata --strategy SampleStrategy hyperopt --customhyperopt SampleHyperOpts -e 5 name: hyperopt - script: flake8 name: flake8 From 3287cdd47ad5fa042f7f82f85c66a47666aa1530 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 Nov 2019 13:01:36 +0100 Subject: [PATCH 0883/3421] Improve documentation regarding loading methods from hyperopt --- docs/hyperopt.md | 23 +++++++++++++++---- .../hyperopts/sample_hyperopt_advanced.py | 13 +++++++---- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 99331707f..3c42a0428 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -23,17 +23,23 @@ Configuring hyperopt is similar to writing your own strategy, and many tasks wil Depending on the space you want to optimize, only some of the below are required: -* fill `populate_indicators` - probably a copy from your strategy * fill `buy_strategy_generator` - for buy signal optimization * fill `indicator_space` - for buy signal optimzation * fill `sell_strategy_generator` - for sell signal optimization * fill `sell_indicator_space` - for sell signal optimzation -Optional, but recommended: +!!! Note + `populate_indicators` needs to create all indicators any of thee spaces may use, otherwise hyperopt will not work. +Optional - can also be loaded from a strategy: + +* copy `populate_indicators` from your strategy - otherwise default-strategy will be used * copy `populate_buy_trend` from your strategy - otherwise default-strategy will be used * copy `populate_sell_trend` from your strategy - otherwise default-strategy will be used +!!! Note + Assuming the optional methods are not in your hyperopt file, please use `--strategy AweSomeStrategy` which contains these methods so hyperopt can use these methods instead. + Rarely you may also need to override: * `roi_space` - for custom ROI optimization (if you need the ranges for the ROI parameters in the optimization hyperspace that differ from default) @@ -156,7 +162,7 @@ that minimizes the value of the [loss function](#loss-functions). The above setup expects to find ADX, RSI and Bollinger Bands in the populated indicators. When you want to test an indicator that isn't used by the bot currently, remember to -add it to the `populate_indicators()` method in `hyperopt.py`. +add it to the `populate_indicators()` method in your custom hyperopt file. ## Loss-functions @@ -270,6 +276,14 @@ For example, to use one month of data, pass the following parameter to the hyper freqtrade hyperopt --timerange 20180401-20180501 ``` +### Running Hyperopt using methods from a strategy + +Hyperopt can reuse `populate_indicators`, `populate_buy_trend`, `populate_sell_trend` from your strategy, assuming these methods are **not** in your custom hyperopt file, and a strategy is provided. + +```bash +freqtrade --strategy SampleStrategy hyperopt --customhyperopt SampleHyperopt +``` + ### Running Hyperopt with Smaller Search Space Use the `--spaces` argument to limit the search space used by hyperopt. @@ -341,8 +355,7 @@ So for example you had `rsi-value: 29.0` so we would look at `rsi`-block, that t (dataframe['rsi'] < 29.0) ``` -Translating your whole hyperopt result as the new buy-signal -would then look like: +Translating your whole hyperopt result as the new buy-signal would then look like: ```python def populate_buy_trend(self, dataframe: DataFrame) -> DataFrame: diff --git a/user_data/hyperopts/sample_hyperopt_advanced.py b/user_data/hyperopts/sample_hyperopt_advanced.py index 00062a58d..6986854ee 100644 --- a/user_data/hyperopts/sample_hyperopt_advanced.py +++ b/user_data/hyperopts/sample_hyperopt_advanced.py @@ -37,6 +37,9 @@ class AdvancedSampleHyperOpts(IHyperOpt): """ @staticmethod def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + This method can also be loaded from the strategy, if it doesn't exist in the hyperopt class. + """ dataframe['adx'] = ta.ADX(dataframe) macd = ta.MACD(dataframe) dataframe['macd'] = macd['macd'] @@ -229,8 +232,9 @@ class AdvancedSampleHyperOpts(IHyperOpt): def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Based on TA indicators. Should be a copy of from strategy - must align to populate_indicators in this file + Based on TA indicators. + Can be a copy of from the strategy, or will be loaded from the strategy. + must align to populate_indicators used (either from this File, or from the strategy) Only used when --spaces does not include buy """ dataframe.loc[ @@ -246,8 +250,9 @@ class AdvancedSampleHyperOpts(IHyperOpt): def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Based on TA indicators. Should be a copy of from strategy - must align to populate_indicators in this file + Based on TA indicators. + Can be a copy of from the strategy, or will be loaded from the strategy. + must align to populate_indicators used (either from this File, or from the strategy) Only used when --spaces does not include sell """ dataframe.loc[ From 80ad37ad93761b8ab69df1a2f10a3a14b4e6ad85 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 Nov 2019 14:17:15 +0100 Subject: [PATCH 0884/3421] Updated plot_indicators test --- tests/optimize/test_hyperopt.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 675bbd62e..36902dcfc 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -149,6 +149,7 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) hyperopt = DefaultHyperOpt + delattr(hyperopt, 'populate_indicators') delattr(hyperopt, 'populate_buy_trend') delattr(hyperopt, 'populate_sell_trend') mocker.patch( @@ -156,8 +157,11 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None: MagicMock(return_value=hyperopt(default_conf)) ) x = HyperOptResolver(default_conf, ).hyperopt + assert not hasattr(x, 'populate_indicators') assert not hasattr(x, 'populate_buy_trend') assert not hasattr(x, 'populate_sell_trend') + assert log_has("Hyperopt class does not provide populate_indicators() method. " + "Using populate_indicators from the strategy.", caplog) assert log_has("Hyperopt class does not provide populate_sell_trend() method. " "Using populate_sell_trend from the strategy.", caplog) assert log_has("Hyperopt class does not provide populate_buy_trend() method. " From 6550e1fa992bef966fcffe1703ede0a20851da04 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 3 Nov 2019 09:55:38 +0100 Subject: [PATCH 0885/3421] Change docstring in sampleHyperopt --- user_data/hyperopts/sample_hyperopt_advanced.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/user_data/hyperopts/sample_hyperopt_advanced.py b/user_data/hyperopts/sample_hyperopt_advanced.py index 6986854ee..c5d28878c 100644 --- a/user_data/hyperopts/sample_hyperopt_advanced.py +++ b/user_data/hyperopts/sample_hyperopt_advanced.py @@ -233,8 +233,9 @@ class AdvancedSampleHyperOpts(IHyperOpt): def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Based on TA indicators. - Can be a copy of from the strategy, or will be loaded from the strategy. - must align to populate_indicators used (either from this File, or from the strategy) + Can be a copy of the corresponding method from the strategy, + or will be loaded from the strategy. + Must align to populate_indicators used (either from this File, or from the strategy) Only used when --spaces does not include buy """ dataframe.loc[ @@ -251,8 +252,9 @@ class AdvancedSampleHyperOpts(IHyperOpt): def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Based on TA indicators. - Can be a copy of from the strategy, or will be loaded from the strategy. - must align to populate_indicators used (either from this File, or from the strategy) + Can be a copy of the corresponding method from the strategy, + or will be loaded from the strategy. + Must align to populate_indicators used (either from this File, or from the strategy) Only used when --spaces does not include sell """ dataframe.loc[ From 3eca80217c741f226a2dafa2c7db69cac2561de9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 3 Nov 2019 10:18:46 +0100 Subject: [PATCH 0886/3421] Don't check exchange for Utils commands --- freqtrade/configuration/check_exchange.py | 2 +- tests/test_configuration.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/configuration/check_exchange.py b/freqtrade/configuration/check_exchange.py index 5d963db47..9e7ce70a9 100644 --- a/freqtrade/configuration/check_exchange.py +++ b/freqtrade/configuration/check_exchange.py @@ -21,7 +21,7 @@ def check_exchange(config: Dict[str, Any], check_for_bad: bool = True) -> bool: and thus is not known for the Freqtrade at all. """ - if (config['runmode'] in [RunMode.PLOT, RunMode.UTIL_NO_EXCHANGE] + if (config['runmode'] in [RunMode.PLOT, RunMode.UTIL_NO_EXCHANGE, RunMode.OTHER] and not config.get('exchange', {}).get('name')): # Skip checking exchange in plot mode, since it requires no exchange return True diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 545dd5df4..6cb6ca758 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -545,7 +545,7 @@ def test_check_exchange(default_conf, caplog) -> None: # Test no exchange... default_conf.get('exchange').update({'name': ''}) - default_conf['runmode'] = RunMode.OTHER + default_conf['runmode'] = RunMode.UTIL_EXCHANGE with pytest.raises(OperationalException, match=r'This command requires a configured exchange.*'): check_exchange(default_conf) From 1e44f93c31a5adbc0617f3767574b2a06b9ec56d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 3 Nov 2019 10:38:21 +0100 Subject: [PATCH 0887/3421] Fix pandas access warning --- freqtrade/optimize/backtesting.py | 3 ++- tests/optimize/test_backtest_detail.py | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index fe31912bc..076857e62 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -245,7 +245,8 @@ class Backtesting: ticker: Dict = {} # Create ticker dict for pair, pair_data in processed.items(): - pair_data['buy'], pair_data['sell'] = 0, 0 # cleanup from previous run + pair_data.loc[:, 'buy'] = 0 # cleanup from previous run + pair_data.loc[:, 'sell'] = 0 # cleanup from previous run ticker_data = self.strategy.advise_sell( self.strategy.advise_buy(pair_data, {'pair': pair}), {'pair': pair})[headers].copy() diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py index 345e423cd..54f4c8796 100644 --- a/tests/optimize/test_backtest_detail.py +++ b/tests/optimize/test_backtest_detail.py @@ -3,7 +3,6 @@ import logging from unittest.mock import MagicMock import pytest -from pandas import DataFrame from freqtrade.data.history import get_timeframe from freqtrade.optimize.backtesting import Backtesting @@ -313,7 +312,7 @@ def test_backtest_results(default_conf, fee, mocker, caplog, data) -> None: pair = "UNITTEST/BTC" # Dummy data as we mock the analyze functions - data_processed = {pair: DataFrame()} + data_processed = {pair: frame.copy()} min_date, max_date = get_timeframe({pair: frame}) results = backtesting.backtest( { From 871019c8b9f8e50f98f8f45128690672e44b681d Mon Sep 17 00:00:00 2001 From: Gautier Pialat Date: Tue, 5 Nov 2019 12:08:57 +0100 Subject: [PATCH 0888/3421] docker doc update about restart policy --- docs/docker.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/docker.md b/docs/docker.md index 8a254b749..7b9fce85f 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -170,6 +170,9 @@ docker run -d \ !!! Note All available bot command line parameters can be added to the end of the `docker run` command. +!!! Note + you can define a [restart policy](https://docs.docker.com/config/containers/start-containers-automatically/) in docker. It can be useful in some cases to use the `--restart unless-stopped` flag (crash of freqtrade or reboot of your system). + ### Monitor your Docker instance You can use the following commands to monitor and manage your container: From f6a66cd3de7a1e1dafc6e85788c37dce5435eaed Mon Sep 17 00:00:00 2001 From: Gautier Pialat Date: Tue, 5 Nov 2019 12:14:39 +0100 Subject: [PATCH 0889/3421] Fix typo --- docs/docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docker.md b/docs/docker.md index 7b9fce85f..a06d82bdc 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -171,7 +171,7 @@ docker run -d \ All available bot command line parameters can be added to the end of the `docker run` command. !!! Note - you can define a [restart policy](https://docs.docker.com/config/containers/start-containers-automatically/) in docker. It can be useful in some cases to use the `--restart unless-stopped` flag (crash of freqtrade or reboot of your system). + You can define a [restart policy](https://docs.docker.com/config/containers/start-containers-automatically/) in docker. It can be useful in some cases to use the `--restart unless-stopped` flag (crash of freqtrade or reboot of your system). ### Monitor your Docker instance From eb0b0350e031bdd1dca7fc9d7d8ef9eaa41fdfe7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 Nov 2019 12:39:19 +0100 Subject: [PATCH 0890/3421] Introduce remove_credentials to remove code duplication --- freqtrade/configuration/__init__.py | 1 + freqtrade/configuration/check_exchange.py | 13 +++++++++++++ freqtrade/optimize/backtesting.py | 10 +++------- freqtrade/optimize/edge_cli.py | 17 +++++++---------- freqtrade/utils.py | 6 ++---- tests/test_configuration.py | 22 +++++++++++++++++----- tests/test_utils.py | 2 +- 7 files changed, 44 insertions(+), 27 deletions(-) diff --git a/freqtrade/configuration/__init__.py b/freqtrade/configuration/__init__.py index ac59421a7..63c38d8c5 100644 --- a/freqtrade/configuration/__init__.py +++ b/freqtrade/configuration/__init__.py @@ -1,4 +1,5 @@ from freqtrade.configuration.arguments import Arguments # noqa: F401 +from freqtrade.configuration.check_exchange import check_exchange, remove_credentials # noqa: F401 from freqtrade.configuration.timerange import TimeRange # noqa: F401 from freqtrade.configuration.configuration import Configuration # noqa: F401 from freqtrade.configuration.config_validation import validate_config_consistency # noqa: F401 diff --git a/freqtrade/configuration/check_exchange.py b/freqtrade/configuration/check_exchange.py index 9e7ce70a9..c739de692 100644 --- a/freqtrade/configuration/check_exchange.py +++ b/freqtrade/configuration/check_exchange.py @@ -10,6 +10,19 @@ from freqtrade.state import RunMode logger = logging.getLogger(__name__) +def remove_credentials(config: Dict[str, Any]): + """ + Removes exchange keys from the configuration and specifies dry-run + Used for backtesting / hyperopt / edge and utils. + Modifies the input dict! + """ + config['exchange']['key'] = '' + config['exchange']['secret'] = '' + config['exchange']['password'] = '' + config['exchange']['uid'] = '' + config['dry_run'] = True + + def check_exchange(config: Dict[str, Any], check_for_bad: bool = True) -> bool: """ Check if the exchange name in the config file is supported by Freqtrade diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 076857e62..ee3a135d2 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -10,9 +10,10 @@ from pathlib import Path from typing import Any, Dict, List, NamedTuple, Optional from pandas import DataFrame +from tabulate import tabulate from freqtrade import OperationalException -from freqtrade.configuration import TimeRange +from freqtrade.configuration import TimeRange, remove_credentials from freqtrade.data import history from freqtrade.data.dataprovider import DataProvider from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds @@ -21,7 +22,6 @@ from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.state import RunMode from freqtrade.strategy.interface import IStrategy, SellType -from tabulate import tabulate logger = logging.getLogger(__name__) @@ -57,11 +57,7 @@ class Backtesting: self.config = config # Reset keys for backtesting - self.config['exchange']['key'] = '' - self.config['exchange']['secret'] = '' - self.config['exchange']['password'] = '' - self.config['exchange']['uid'] = '' - self.config['dry_run'] = True + remove_credentials(self.config) self.strategylist: List[IStrategy] = [] self.exchange = ExchangeResolver(self.config['exchange']['name'], self.config).exchange diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py index 1ba6bcc65..5a4543884 100644 --- a/freqtrade/optimize/edge_cli.py +++ b/freqtrade/optimize/edge_cli.py @@ -4,12 +4,13 @@ This module contains the edge backtesting interface """ import logging -from typing import Dict, Any -from tabulate import tabulate -from freqtrade import constants -from freqtrade.edge import Edge +from typing import Any, Dict -from freqtrade.configuration import TimeRange +from tabulate import tabulate + +from freqtrade import constants +from freqtrade.configuration import TimeRange, remove_credentials +from freqtrade.edge import Edge from freqtrade.exchange import Exchange from freqtrade.resolvers import StrategyResolver @@ -29,12 +30,8 @@ class EdgeCli: self.config = config # Reset keys for edge - self.config['exchange']['key'] = '' - self.config['exchange']['secret'] = '' - self.config['exchange']['password'] = '' - self.config['exchange']['uid'] = '' + remove_credentials(self.config) self.config['stake_amount'] = constants.UNLIMITED_STAKE_AMOUNT - self.config['dry_run'] = True self.exchange = Exchange(self.config) self.strategy = StrategyResolver(self.config).strategy diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 630de0f5a..03cf7dabf 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -10,7 +10,7 @@ import rapidjson from tabulate import tabulate from freqtrade import OperationalException -from freqtrade.configuration import Configuration, TimeRange +from freqtrade.configuration import Configuration, TimeRange, remove_credentials from freqtrade.configuration.directory_operations import create_userdata_dir from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data, @@ -33,10 +33,8 @@ def setup_utils_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str configuration = Configuration(args, method) config = configuration.get_config() - config['exchange']['dry_run'] = True # Ensure we do not use Exchange credentials - config['exchange']['key'] = '' - config['exchange']['secret'] = '' + remove_credentials(config) return config diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 6cb6ca758..d27cd92f4 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -10,13 +10,13 @@ import pytest from jsonschema import Draft4Validator, ValidationError, validate from freqtrade import OperationalException, constants -from freqtrade.configuration import (Arguments, Configuration, +from freqtrade.configuration import (Arguments, Configuration, check_exchange, + remove_credentials, validate_config_consistency) -from freqtrade.configuration.check_exchange import check_exchange from freqtrade.configuration.config_validation import validate_config_schema -from freqtrade.configuration.deprecated_settings import (check_conflicting_settings, - process_deprecated_setting, - process_temporary_deprecated_settings) +from freqtrade.configuration.deprecated_settings import ( + check_conflicting_settings, process_deprecated_setting, + process_temporary_deprecated_settings) from freqtrade.configuration.directory_operations import (create_datadir, create_userdata_dir) from freqtrade.configuration.load_config import load_config_file @@ -551,6 +551,18 @@ def test_check_exchange(default_conf, caplog) -> None: check_exchange(default_conf) +def test_remove_credentials(default_conf, caplog) -> None: + conf = deepcopy(default_conf) + conf['dry_run'] = False + remove_credentials(conf) + + assert conf['dry_run'] is True + assert conf['exchange']['key'] == '' + assert conf['exchange']['secret'] == '' + assert conf['exchange']['password'] == '' + assert conf['exchange']['uid'] == '' + + def test_cli_verbose_with_params(default_conf, mocker, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) diff --git a/tests/test_utils.py b/tests/test_utils.py index 7d6b82809..474a842d0 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -19,7 +19,7 @@ def test_setup_utils_configuration(): config = setup_utils_configuration(get_args(args), RunMode.OTHER) assert "exchange" in config - assert config['exchange']['dry_run'] is True + assert config['dry_run'] is True assert config['exchange']['key'] == '' assert config['exchange']['secret'] == '' From c8638ce82fae82e9558a292e6c9dc2a9dcbb7d70 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 Nov 2019 21:03:06 +0100 Subject: [PATCH 0891/3421] Fix bug where bids_to_ask_delta causes doublebuys The continue must happen irrespective of the outcome of this - otherwise the below BUY will happen anyway. --- freqtrade/freqtradebot.py | 3 +-- tests/test_freqtradebot.py | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 7206e555f..7e9706803 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -319,8 +319,7 @@ class FreqtradeBot: (bidstrat_check_depth_of_market.get('bids_to_ask_delta', 0) > 0): if self._check_depth_of_market_buy(_pair, bidstrat_check_depth_of_market): buycount += self.execute_buy(_pair, stake_amount) - else: - continue + continue buycount += self.execute_buy(_pair, stake_amount) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 0ed8e8a77..f3baff7ce 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3213,6 +3213,8 @@ def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee, assert trade.open_date is not None assert trade.exchange == 'bittrex' + assert len(Trade.query.all()) == 1 + # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) From b8a6c55b105592bde1095ca90c9cfc283e5ce5cc Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2019 07:21:09 +0000 Subject: [PATCH 0892/3421] Bump arrow from 0.15.2 to 0.15.4 Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.15.2 to 0.15.4. - [Release notes](https://github.com/crsmithdev/arrow/releases) - [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.rst) - [Commits](https://github.com/crsmithdev/arrow/compare/0.15.2...0.15.4) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 64a43ee62..08838c3d4 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -3,7 +3,7 @@ ccxt==1.18.1346 SQLAlchemy==1.3.10 python-telegram-bot==12.2.0 -arrow==0.15.2 +arrow==0.15.4 cachetools==3.1.1 requests==2.22.0 urllib3==1.25.6 From bc78316aa52d49f0df194e9dc11813b796368db5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2019 07:21:39 +0000 Subject: [PATCH 0893/3421] Bump flake8 from 3.7.8 to 3.7.9 Bumps [flake8](https://gitlab.com/pycqa/flake8) from 3.7.8 to 3.7.9. - [Release notes](https://gitlab.com/pycqa/flake8/tags) - [Commits](https://gitlab.com/pycqa/flake8/compare/3.7.8...3.7.9) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 589ca7c54..f346439af 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -4,7 +4,7 @@ -r requirements-hyperopt.txt coveralls==1.8.2 -flake8==3.7.8 +flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==3.0.0 mypy==0.740 From 28f0c00281c3e3fedcef268f1475e329574be461 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2019 07:21:55 +0000 Subject: [PATCH 0894/3421] Bump pandas from 0.25.2 to 0.25.3 Bumps [pandas](https://github.com/pandas-dev/pandas) from 0.25.2 to 0.25.3. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v0.25.2...v0.25.3) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8d9b4953f..331e3dc67 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ -r requirements-common.txt numpy==1.17.3 -pandas==0.25.2 +pandas==0.25.3 From 60109aaa1f83923ed424ab1ad1b088bfe13cec21 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2019 08:37:38 +0000 Subject: [PATCH 0895/3421] Bump ccxt from 1.18.1346 to 1.19.14 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.18.1346 to 1.19.14. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.18.1346...1.19.14) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 08838c3d4..c11179fbb 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.18.1346 +ccxt==1.19.14 SQLAlchemy==1.3.10 python-telegram-bot==12.2.0 arrow==0.15.4 From ca77dbe8dab200367c90654e411a7510d224a9cb Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 6 Nov 2019 19:33:15 +0100 Subject: [PATCH 0896/3421] Fix UnicodeError in hyperopt output --- freqtrade/optimize/hyperopt.py | 18 ++++++++++-------- tests/optimize/test_hyperopt.py | 6 ++++-- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index c576ea6f8..6ea2f5133 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -4,9 +4,9 @@ This module contains the hyperopt logic """ +import locale import logging import sys - from collections import OrderedDict from operator import itemgetter from pathlib import Path @@ -14,10 +14,10 @@ from pprint import pprint from typing import Any, Dict, List, Optional import rapidjson - -from colorama import init as colorama_init from colorama import Fore, Style -from joblib import Parallel, delayed, dump, load, wrap_non_picklable_objects, cpu_count +from colorama import init as colorama_init +from joblib import (Parallel, cpu_count, delayed, dump, load, + wrap_non_picklable_objects) from pandas import DataFrame from skopt import Optimizer from skopt.space import Dimension @@ -28,8 +28,8 @@ from freqtrade.optimize.backtesting import Backtesting # Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules from freqtrade.optimize.hyperopt_interface import IHyperOpt # noqa: F4 from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss # noqa: F4 -from freqtrade.resolvers.hyperopt_resolver import HyperOptResolver, HyperOptLossResolver - +from freqtrade.resolvers.hyperopt_resolver import (HyperOptLossResolver, + HyperOptResolver) logger = logging.getLogger(__name__) @@ -216,7 +216,7 @@ class Hyperopt: if print_all: print(log_str) else: - print('\n' + log_str) + print(f'\n{log_str}') else: print('.', end='') sys.stdout.flush() @@ -335,7 +335,9 @@ class Hyperopt: return (f'{trades:6d} trades. Avg profit {avg_profit: 5.2f}%. ' f'Total profit {total_profit: 11.8f} {stake_cur} ' - f'({profit: 7.2f}Σ%). Avg duration {duration:5.1f} mins.') + f'({profit: 7.2f}\N{GREEK CAPITAL LETTER SIGMA}%). ' + f'Avg duration {duration:5.1f} mins.' + ).encode(locale.getpreferredencoding(), 'replace').decode('utf-8') def get_optimizer(self, dimensions, cpu_count) -> Optimizer: return Optimizer( diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 36902dcfc..23d8a887c 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -1,4 +1,5 @@ # pragma pylint: disable=missing-docstring,W0212,C0103 +import locale from datetime import datetime from pathlib import Path from unittest.mock import MagicMock, PropertyMock @@ -565,8 +566,9 @@ def test_generate_optimizer(mocker, default_conf) -> None: } response_expected = { 'loss': 1.9840569076926293, - 'results_explanation': ' 1 trades. Avg profit 2.31%. Total profit 0.00023300 BTC ' - '( 2.31Σ%). Avg duration 100.0 mins.', + 'results_explanation': (' 1 trades. Avg profit 2.31%. Total profit 0.00023300 BTC ' + '( 2.31\N{GREEK CAPITAL LETTER SIGMA}%). Avg duration 100.0 mins.' + ).encode(locale.getpreferredencoding(), 'replace').decode('utf-8'), 'params': optimizer_param, 'total_profit': 0.00023300 } From f90676cfc5a249bf957b62a509ee07f6c6731e11 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 8 Nov 2019 01:55:14 +0300 Subject: [PATCH 0897/3421] Add trailing stoploss hyperspace --- freqtrade/configuration/cli_options.py | 9 ++-- freqtrade/optimize/hyperopt.py | 67 +++++++++++++++++++----- freqtrade/optimize/hyperopt_interface.py | 16 +++++- tests/optimize/test_hyperopt.py | 52 +++++++++++++----- 4 files changed, 110 insertions(+), 34 deletions(-) diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 697e048db..e2b786ac7 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -174,12 +174,11 @@ AVAILABLE_CLI_OPTIONS = { default=constants.HYPEROPT_EPOCH, ), "spaces": Arg( - '-s', '--spaces', - help='Specify which parameters to hyperopt. Space-separated list. ' - 'Default: `%(default)s`.', - choices=['all', 'buy', 'sell', 'roi', 'stoploss'], + '--spaces', + help='Specify which parameters to hyperopt. Space-separated list.', + choices=['all', 'buy', 'sell', 'roi', 'stoploss', 'trailing', 'default'], nargs='+', - default='all', + default='default', ), "print_all": Arg( '--print-all', diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 6ea2f5133..c5a003bd6 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -149,7 +149,7 @@ class Hyperopt: self.trials_file.unlink() return trials - def log_trials_result(self) -> None: + def log_trials_result(self) -> None: # noqa: C901 """ Display Best hyperopt result """ @@ -161,14 +161,16 @@ class Hyperopt: if self.config.get('print_json'): result_dict: Dict = {} + if self.has_space('buy') or self.has_space('sell'): result_dict['params'] = {} + if self.has_space('buy'): - result_dict['params'].update({p.name: params.get(p.name) - for p in self.hyperopt_space('buy')}) + result_dict['params'].update(self.space_params(params, 'buy')) + if self.has_space('sell'): - result_dict['params'].update({p.name: params.get(p.name) - for p in self.hyperopt_space('sell')}) + result_dict['params'].update(self.space_params(params, 'sell')) + if self.has_space('roi'): # Convert keys in min_roi dict to strings because # rapidjson cannot dump dicts with integer keys... @@ -177,25 +179,35 @@ class Hyperopt: result_dict['minimal_roi'] = OrderedDict( (str(k), v) for k, v in self.custom_hyperopt.generate_roi_table(params).items() ) + if self.has_space('stoploss'): - result_dict['stoploss'] = params.get('stoploss') + result_dict.update(self.space_params(params, 'stoploss')) + + if self.has_space('trailing'): + result_dict.update(self.space_params(params, 'trailing')) + print(rapidjson.dumps(result_dict, default=str, number_mode=rapidjson.NM_NATIVE)) else: if self.has_space('buy'): print('Buy hyperspace params:') - pprint({p.name: params.get(p.name) for p in self.hyperopt_space('buy')}, - indent=4) + pprint(self.space_params(params, 'buy', 5), indent=4) + if self.has_space('sell'): print('Sell hyperspace params:') - pprint({p.name: params.get(p.name) for p in self.hyperopt_space('sell')}, - indent=4) + pprint(self.space_params(params, 'sell', 5), indent=4) + if self.has_space('roi'): print("ROI table:") # Round printed values to 5 digits after the decimal point pprint(round_dict(self.custom_hyperopt.generate_roi_table(params), 5), indent=4) + if self.has_space('stoploss'): - # Also round to 5 digits after the decimal point - print(f"Stoploss: {round(params.get('stoploss'), 5)}") + print(f"Stoploss:") + pprint(self.space_params(params, 'stoploss', 5), indent=4) + + if self.has_space('trailing'): + print('Trailing stop:') + pprint(self.space_params(params, 'trailing', 5), indent=4) def log_results(self, results) -> None: """ @@ -233,9 +245,13 @@ class Hyperopt: def has_space(self, space: str) -> bool: """ - Tell if a space value is contained in the configuration + Tell if the space value is contained in the configuration """ - return any(s in self.config['spaces'] for s in [space, 'all']) + # The 'trailing' space is not included in the 'default' set of spaces + if space == 'trailing': + return any(s in self.config['spaces'] for s in [space, 'all']) + else: + return any(s in self.config['spaces'] for s in [space, 'all', 'default']) def hyperopt_space(self, space: Optional[str] = None) -> List[Dimension]: """ @@ -245,20 +261,34 @@ class Hyperopt: for all hyperspaces used. """ spaces: List[Dimension] = [] + if space == 'buy' or (space is None and self.has_space('buy')): logger.debug("Hyperopt has 'buy' space") spaces += self.custom_hyperopt.indicator_space() + if space == 'sell' or (space is None and self.has_space('sell')): logger.debug("Hyperopt has 'sell' space") spaces += self.custom_hyperopt.sell_indicator_space() + if space == 'roi' or (space is None and self.has_space('roi')): logger.debug("Hyperopt has 'roi' space") spaces += self.custom_hyperopt.roi_space() + if space == 'stoploss' or (space is None and self.has_space('stoploss')): logger.debug("Hyperopt has 'stoploss' space") spaces += self.custom_hyperopt.stoploss_space() + + if space == 'trailing' or (space is None and self.has_space('trailing')): + logger.debug("Hyperopt has 'trailing' space") + spaces += self.custom_hyperopt.trailing_space() + return spaces + def space_params(self, params, space: str, r: int = None) -> Dict: + d = {p.name: params.get(p.name) for p in self.hyperopt_space(space)} + # Round floats to `r` digits after the decimal point if requested + return round_dict(d, r) if r else d + def generate_optimizer(self, _params: Dict, iteration=None) -> Dict: """ Used Optimize function. Called once per epoch to optimize whatever is configured. @@ -281,6 +311,15 @@ class Hyperopt: if self.has_space('stoploss'): self.backtesting.strategy.stoploss = params['stoploss'] + if self.has_space('trailing'): + self.backtesting.strategy.trailing_stop = params['trailing_stop'] + self.backtesting.strategy.trailing_stop_positive = \ + params['trailing_stop_positive'] + self.backtesting.strategy.trailing_stop_positive_offset = \ + params['trailing_stop_positive_offset'] + self.backtesting.strategy.trailing_only_offset_is_reached = \ + params['trailing_only_offset_is_reached'] + processed = load(self.tickerdata_pickle) min_date, max_date = get_timeframe(processed) diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 142f305df..e8f16d572 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -8,7 +8,7 @@ import math from abc import ABC from typing import Dict, Any, Callable, List -from skopt.space import Dimension, Integer, Real +from skopt.space import Categorical, Dimension, Integer, Real from freqtrade import OperationalException from freqtrade.exchange import timeframe_to_minutes @@ -174,6 +174,20 @@ class IHyperOpt(ABC): Real(-0.35, -0.02, name='stoploss'), ] + @staticmethod + def trailing_space() -> List[Dimension]: + """ + Create a trailing stoploss space. + + You may override it in your custom Hyperopt class. + """ + return [ + Categorical([True, False], name='trailing_stop'), + Real(-0.35, -0.02, name='trailing_stop_positive'), + Real(0.01, 0.1, name='trailing_stop_positive_offset'), + Categorical([True, False], name='trailing_only_offset_is_reached'), + ] + # This is needed for proper unpickling the class attribute ticker_interval # which is set to the actual value by the resolver. # Why do I still need such shamanic mantras in modern python? diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 23d8a887c..e247d0134 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -26,7 +26,7 @@ from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, @pytest.fixture(scope='function') def hyperopt(default_conf, mocker): - default_conf.update({'spaces': ['all']}) + default_conf.update({'spaces': ['default']}) patch_exchange(mocker) return Hyperopt(default_conf) @@ -108,7 +108,7 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo '--enable-position-stacking', '--disable-max-market-positions', '--epochs', '1000', - '--spaces', 'all', + '--spaces', 'default', '--print-all' ] @@ -414,7 +414,7 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: default_conf.update({'config': 'config.json.example', 'epochs': 1, 'timerange': None, - 'spaces': 'all', + 'spaces': 'default', 'hyperopt_jobs': 1, }) hyperopt = Hyperopt(default_conf) @@ -463,14 +463,38 @@ def test_format_results(hyperopt): assert result.find('Total profit 1.00000000 EUR') -def test_has_space(hyperopt): - hyperopt.config.update({'spaces': ['buy', 'roi']}) - assert hyperopt.has_space('roi') - assert hyperopt.has_space('buy') - assert not hyperopt.has_space('stoploss') - - hyperopt.config.update({'spaces': ['all']}) - assert hyperopt.has_space('buy') +@pytest.mark.parametrize("spaces, expected_results", [ + (['buy'], + {'buy': True, 'sell': False, 'roi': False, 'stoploss': False, 'trailing': False}), + (['sell'], + {'buy': False, 'sell': True, 'roi': False, 'stoploss': False, 'trailing': False}), + (['roi'], + {'buy': False, 'sell': False, 'roi': True, 'stoploss': False, 'trailing': False}), + (['stoploss'], + {'buy': False, 'sell': False, 'roi': False, 'stoploss': True, 'trailing': False}), + (['trailing'], + {'buy': False, 'sell': False, 'roi': False, 'stoploss': False, 'trailing': True}), + (['buy', 'sell', 'roi', 'stoploss'], + {'buy': True, 'sell': True, 'roi': True, 'stoploss': True, 'trailing': False}), + (['buy', 'sell', 'roi', 'stoploss', 'trailing'], + {'buy': True, 'sell': True, 'roi': True, 'stoploss': True, 'trailing': True}), + (['buy', 'roi'], + {'buy': True, 'sell': False, 'roi': True, 'stoploss': False, 'trailing': False}), + (['all'], + {'buy': True, 'sell': True, 'roi': True, 'stoploss': True, 'trailing': True}), + (['default'], + {'buy': True, 'sell': True, 'roi': True, 'stoploss': True, 'trailing': False}), + (['default', 'trailing'], + {'buy': True, 'sell': True, 'roi': True, 'stoploss': True, 'trailing': True}), + (['all', 'buy'], + {'buy': True, 'sell': True, 'roi': True, 'stoploss': True, 'trailing': True}), + (['default', 'buy'], + {'buy': True, 'sell': True, 'roi': True, 'stoploss': True, 'trailing': False}), +]) +def test_has_space(hyperopt, spaces, expected_results): + for s in ['buy', 'sell', 'roi', 'stoploss', 'trailing']: + hyperopt.config.update({'spaces': spaces}) + assert hyperopt.has_space(s) == expected_results[s] def test_populate_indicators(hyperopt, testdatadir) -> None: @@ -517,7 +541,7 @@ def test_buy_strategy_generator(hyperopt, testdatadir) -> None: def test_generate_optimizer(mocker, default_conf) -> None: default_conf.update({'config': 'config.json.example'}) default_conf.update({'timerange': None}) - default_conf.update({'spaces': 'all'}) + default_conf.update({'spaces': 'default'}) default_conf.update({'hyperopt_min_trades': 1}) trades = [ @@ -584,7 +608,7 @@ def test_clean_hyperopt(mocker, default_conf, caplog): default_conf.update({'config': 'config.json.example', 'epochs': 1, 'timerange': None, - 'spaces': 'all', + 'spaces': 'default', 'hyperopt_jobs': 1, }) mocker.patch("freqtrade.optimize.hyperopt.Path.is_file", MagicMock(return_value=True)) @@ -600,7 +624,7 @@ def test_continue_hyperopt(mocker, default_conf, caplog): default_conf.update({'config': 'config.json.example', 'epochs': 1, 'timerange': None, - 'spaces': 'all', + 'spaces': 'default', 'hyperopt_jobs': 1, 'hyperopt_continue': True }) From d3a3765819f60d486e3c9e73d01dd41d7c6c3ffe Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 8 Nov 2019 03:48:08 +0300 Subject: [PATCH 0898/3421] Fix test --- tests/optimize/test_hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index e247d0134..aaaeb8795 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -668,7 +668,7 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: parallel.assert_called_once() out, err = capsys.readouterr() - assert '{"params":{"mfi-value":null,"fastd-value":null,"adx-value":null,"rsi-value":null,"mfi-enabled":null,"fastd-enabled":null,"adx-enabled":null,"rsi-enabled":null,"trigger":null,"sell-mfi-value":null,"sell-fastd-value":null,"sell-adx-value":null,"sell-rsi-value":null,"sell-mfi-enabled":null,"sell-fastd-enabled":null,"sell-adx-enabled":null,"sell-rsi-enabled":null,"sell-trigger":null},"minimal_roi":{},"stoploss":null}' in out # noqa: E501 + assert '{"params":{"mfi-value":null,"fastd-value":null,"adx-value":null,"rsi-value":null,"mfi-enabled":null,"fastd-enabled":null,"adx-enabled":null,"rsi-enabled":null,"trigger":null,"sell-mfi-value":null,"sell-fastd-value":null,"sell-adx-value":null,"sell-rsi-value":null,"sell-mfi-enabled":null,"sell-fastd-enabled":null,"sell-adx-enabled":null,"sell-rsi-enabled":null,"sell-trigger":null},"minimal_roi":{},"stoploss":null,"trailing_stop":null,"trailing_stop_positive":null,"trailing_stop_positive_offset":null,"trailing_only_offset_is_reached":null}' in out # noqa: E501 assert dumper.called # Should be called twice, once for tickerdata, once to save evaluations assert dumper.call_count == 2 From da57396d071131102c366d9821e13566cf594998 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 8 Nov 2019 06:55:07 +0100 Subject: [PATCH 0899/3421] Fix UTC handling of timestamp() conversation in fetch_my_trades --- freqtrade/data/btanalysis.py | 6 +++--- freqtrade/data/history.py | 7 +++---- freqtrade/exchange/exchange.py | 19 ++++++++++++++++++- tests/exchange/test_exchange.py | 17 +++++++++++++++-- 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 388deb4b3..2f7a234ce 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -7,7 +7,7 @@ from typing import Dict import numpy as np import pandas as pd -import pytz +from datetime import timezone from freqtrade import persistence from freqtrade.misc import json_load @@ -106,8 +106,8 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: "stop_loss", "initial_stop_loss", "strategy", "ticker_interval"] trades = pd.DataFrame([(t.pair, - t.open_date.replace(tzinfo=pytz.UTC), - t.close_date.replace(tzinfo=pytz.UTC) if t.close_date else None, + t.open_date.replace(tzinfo=timezone.utc), + t.close_date.replace(tzinfo=timezone.utc) if t.close_date else None, t.calc_profit(), t.calc_profit_percent(), t.open_rate, t.close_rate, t.amount, (round((t.close_date.timestamp() - t.open_date.timestamp()) / 60, 2) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index b1e4313ca..3dd40d2b4 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -9,12 +9,11 @@ Includes: import logging import operator from copy import deepcopy -from datetime import datetime +from datetime import datetime, timezone from pathlib import Path from typing import Any, Dict, List, Optional, Tuple import arrow -import pytz from pandas import DataFrame from freqtrade import OperationalException, misc @@ -56,10 +55,10 @@ def trim_dataframe(df: DataFrame, timerange: TimeRange) -> DataFrame: Trim dataframe based on given timerange """ if timerange.starttype == 'date': - start = datetime.fromtimestamp(timerange.startts, tz=pytz.utc) + start = datetime.fromtimestamp(timerange.startts, tz=timezone.utc) df = df.loc[df['date'] >= start, :] if timerange.stoptype == 'date': - stop = datetime.fromtimestamp(timerange.stopts, tz=pytz.utc) + stop = datetime.fromtimestamp(timerange.stopts, tz=timezone.utc) df = df.loc[df['date'] <= stop, :] return df diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 430a2ff54..a198e8cdb 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -875,6 +875,22 @@ class Exchange: @retrier def get_trades_for_order(self, order_id: str, pair: str, since: datetime) -> List: + """ + Fetch Orders using the "fetch_my_trades" endpoint and filter them by order-id. + The "since" argument passed in is coming from the database and is in UTC, + as timezone-native datetime object. + From the python documentation: + > Naive datetime instances are assumed to represent local time + Therefore, calling "since.timestamp()" will get the UTC timestamp, after applying the + transformation from local timezone to UTC. + This works for timezones UTC+ since then the result will contain trades from a few hours + instead of from the last 5 seconds, however fails for UTC- timezones, + since we're then asking for trades with a "since" argument in the future. + + :param order_id order_id: Order-id as given when creating the order + :param pair: Pair the order is for + :param since: datetime object of the order creation time. Assumes object is in UTC. + """ if self._config['dry_run']: return [] if not self.exchange_has('fetchMyTrades'): @@ -882,7 +898,8 @@ class Exchange: try: # Allow 5s offset to catch slight time offsets (discovered in #1185) # since needs to be int in milliseconds - my_trades = self._api.fetch_my_trades(pair, int((since.timestamp() - 5) * 1000)) + my_trades = self._api.fetch_my_trades( + pair, int((since.replace(tzinfo=timezone.utc).timestamp() - 5) * 1000)) matched_trades = [trade for trade in my_trades if trade['order'] == order_id] return matched_trades diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 8a4121d80..1bb643e24 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1586,8 +1586,20 @@ def test_name(default_conf, mocker, exchange_name): @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_get_trades_for_order(default_conf, mocker, exchange_name): + """ + Crucial part in this test is the "since" calculation. + The "since" argument passed in is coming from the database and is in UTC, + as timezone-native datetime object. + From the python documentation: + > Naive datetime instances are assumed to represent local time + Therefore, calling "since.timestamp()" will get the UTC timestamp, after applying the + transformation from local timezone to UTC. + This works for timezones UTC+ since then the result will contain trades from a few hours + instead of from the last 5 seconds, however fails for UTC- timezones, + since we're then asking for trades with a "since" argument in the future. + """ order_id = 'ABCD-ABCD' - since = datetime(2018, 5, 5, tzinfo=timezone.utc) + since = datetime(2018, 5, 5, 0, 0, 0) default_conf["dry_run"] = False mocker.patch('freqtrade.exchange.Exchange.exchange_has', return_value=True) api_mock = MagicMock() @@ -1623,7 +1635,8 @@ def test_get_trades_for_order(default_conf, mocker, exchange_name): assert api_mock.fetch_my_trades.call_args[0][0] == 'LTC/BTC' # Same test twice, hardcoded number and doing the same calculation assert api_mock.fetch_my_trades.call_args[0][1] == 1525478395000 - assert api_mock.fetch_my_trades.call_args[0][1] == int(since.timestamp() - 5) * 1000 + assert api_mock.fetch_my_trades.call_args[0][1] == int(since.replace( + tzinfo=timezone.utc).timestamp() - 5) * 1000 ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, 'get_trades_for_order', 'fetch_my_trades', From dd47bd04cd905c8822f5c27a285db8d37d72847f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 8 Nov 2019 01:32:08 -0500 Subject: [PATCH 0900/3421] Move description to correct place --- tests/exchange/test_exchange.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 1bb643e24..925a53c95 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1586,18 +1586,7 @@ def test_name(default_conf, mocker, exchange_name): @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_get_trades_for_order(default_conf, mocker, exchange_name): - """ - Crucial part in this test is the "since" calculation. - The "since" argument passed in is coming from the database and is in UTC, - as timezone-native datetime object. - From the python documentation: - > Naive datetime instances are assumed to represent local time - Therefore, calling "since.timestamp()" will get the UTC timestamp, after applying the - transformation from local timezone to UTC. - This works for timezones UTC+ since then the result will contain trades from a few hours - instead of from the last 5 seconds, however fails for UTC- timezones, - since we're then asking for trades with a "since" argument in the future. - """ + order_id = 'ABCD-ABCD' since = datetime(2018, 5, 5, 0, 0, 0) default_conf["dry_run"] = False From b0150d548a741153791fd1baf9e40394f75a38a1 Mon Sep 17 00:00:00 2001 From: Gautier Pialat Date: Fri, 8 Nov 2019 09:37:54 +0100 Subject: [PATCH 0901/3421] remove not use statement --- docs/installation.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 9180beb40..6edb28481 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -34,7 +34,6 @@ Freqtrade provides a Linux/MacOS script to install all dependencies and help you ```bash git clone git@github.com:freqtrade/freqtrade.git cd freqtrade -git checkout develop ./setup.sh --install ``` From 076ef0407b2057b6c8ad42c63e2ae9760d5ceb73 Mon Sep 17 00:00:00 2001 From: Gautier Pialat Date: Fri, 8 Nov 2019 09:39:06 +0100 Subject: [PATCH 0902/3421] git branch note explanation --- docs/installation.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/installation.md b/docs/installation.md index 6edb28481..d373c95d0 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -37,6 +37,7 @@ cd freqtrade ./setup.sh --install ``` + When cloning the repository the default working branch is name `develop`. This branch contains the last features (can be considered as relatively stable thanks to automated tests). The `master` branch contains the code of the last release (done once per month with a one week old snapshot of the `develop` branch to prevent packaging bugs so potentially more stable). !!! Note Windows installation is explained [here](#windows). From bc5c91f6815b20ae64f6b8e8a5e29abac1ab51f2 Mon Sep 17 00:00:00 2001 From: Gautier Pialat Date: Fri, 8 Nov 2019 10:29:00 +0100 Subject: [PATCH 0903/3421] add missing note block --- docs/installation.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/installation.md b/docs/installation.md index d373c95d0..ce35572c4 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -37,7 +37,9 @@ cd freqtrade ./setup.sh --install ``` +!!! Note "Version considerations" When cloning the repository the default working branch is name `develop`. This branch contains the last features (can be considered as relatively stable thanks to automated tests). The `master` branch contains the code of the last release (done once per month with a one week old snapshot of the `develop` branch to prevent packaging bugs so potentially more stable). + !!! Note Windows installation is explained [here](#windows). From 31ab32f0b965f112c796112f830d0c3e550ddc7d Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 8 Nov 2019 12:47:28 +0300 Subject: [PATCH 0904/3421] Always set trailing_stop=True with 'trailing' hyperspace --- freqtrade/optimize/hyperopt.py | 3 +-- freqtrade/optimize/hyperopt_interface.py | 9 ++++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index c5a003bd6..e5e027d46 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -313,8 +313,7 @@ class Hyperopt: if self.has_space('trailing'): self.backtesting.strategy.trailing_stop = params['trailing_stop'] - self.backtesting.strategy.trailing_stop_positive = \ - params['trailing_stop_positive'] + self.backtesting.strategy.trailing_stop_positive = params['trailing_stop_positive'] self.backtesting.strategy.trailing_stop_positive_offset = \ params['trailing_stop_positive_offset'] self.backtesting.strategy.trailing_only_offset_is_reached = \ diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index e8f16d572..b4cfdcaf3 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -182,7 +182,14 @@ class IHyperOpt(ABC): You may override it in your custom Hyperopt class. """ return [ - Categorical([True, False], name='trailing_stop'), + # It was decided to always set trailing_stop is to True if the 'trailing' hyperspace + # is used. Otherwise hyperopt will vary other parameters that won't have effect if + # trailing_stop is set False. + # This parameter is included into the hyperspace dimensions rather than assigning + # it explicitly in the code in order to have it printed in the results along with + # other 'trailing' hyperspace parameters. + Categorical([True], name='trailing_stop'), + Real(-0.35, -0.02, name='trailing_stop_positive'), Real(0.01, 0.1, name='trailing_stop_positive_offset'), Categorical([True, False], name='trailing_only_offset_is_reached'), From 54b63e89f8a687ee9bd488fd010a57dd243ce355 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 8 Nov 2019 17:32:18 +0300 Subject: [PATCH 0905/3421] Wordings on top of #2495 --- docs/installation.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index ce35572c4..61ce6c7b2 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -29,16 +29,18 @@ You will need to create API Keys (Usually you get `key` and `secret`) from the E Freqtrade provides a Linux/MacOS script to install all dependencies and help you to configure the bot. !!! Note - Python3.6 or higher and the corresponding pip are assumed to be available. The install-script will warn and stop if that's not the case. + Python3.6 or higher and the corresponding `pip` are assumed to be available. The install-script will warn and stop if that's not the case. ```bash git clone git@github.com:freqtrade/freqtrade.git cd freqtrade +git checkout master # Optional, see (1) ./setup.sh --install ``` +(1) This command switches the cloned repository to the use of the `master` branch. This command is not needed if you wish to stay on the `develop` branch. You may later switch between branches at any time with the `git checkout master`/`git checkout develop` commands. !!! Note "Version considerations" - When cloning the repository the default working branch is name `develop`. This branch contains the last features (can be considered as relatively stable thanks to automated tests). The `master` branch contains the code of the last release (done once per month with a one week old snapshot of the `develop` branch to prevent packaging bugs so potentially more stable). + When cloning the repository the default working branch has the name `develop`. This branch contains all last features (can be considered as relatively stable, thanks to automated tests). The `master` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable). !!! Note Windows installation is explained [here](#windows). From 1f042f5e32a92cf93ee721ecece6a5830408d35a Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 8 Nov 2019 19:38:32 +0300 Subject: [PATCH 0906/3421] Quick start and easy installation sections reworked --- docs/installation.md | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 61ce6c7b2..1330e0994 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -26,10 +26,20 @@ You will need to create API Keys (Usually you get `key` and `secret`) from the E ## Quick start -Freqtrade provides a Linux/MacOS script to install all dependencies and help you to configure the bot. +Freqtrade provides the Linux/MacOS Easy Installation script to install all dependencies and help you configure the bot. !!! Note - Python3.6 or higher and the corresponding `pip` are assumed to be available. The install-script will warn and stop if that's not the case. + Windows installation is explained [here](#windows). + +The easiest way to install and run Freqtrade is to clone the bot GitHub repository and then run the Easy Installation script, if it's available for your platform. + +!!! Note "Version considerations" + When cloning the repository the default working branch has the name `develop`. This branch contains all last features (can be considered as relatively stable, thanks to automated tests). The `master` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable). + +!!! Note + Python3.6 or higher and the corresponding `pip` are assumed to be available. The install-script will warn you and stop if that's not the case. `git` is also needed to clone the Freqtrade repository. + +This can be achieved with the following commands: ```bash git clone git@github.com:freqtrade/freqtrade.git @@ -37,17 +47,11 @@ cd freqtrade git checkout master # Optional, see (1) ./setup.sh --install ``` -(1) This command switches the cloned repository to the use of the `master` branch. This command is not needed if you wish to stay on the `develop` branch. You may later switch between branches at any time with the `git checkout master`/`git checkout develop` commands. +(1) This command switches the cloned repository to the use of the `master` branch. It's not needed if you wish to stay on the `develop` branch. You may later switch between branches at any time with the `git checkout master`/`git checkout develop` commands. -!!! Note "Version considerations" - When cloning the repository the default working branch has the name `develop`. This branch contains all last features (can be considered as relatively stable, thanks to automated tests). The `master` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable). +## Easy Installation Script (Linux/MacOS) -!!! Note - Windows installation is explained [here](#windows). - -## Easy Installation - Linux Script - -If you are on Debian, Ubuntu or MacOS freqtrade provides a script to Install, Update, Configure, and Reset your bot. +If you are on Debian, Ubuntu or MacOS Freqtrade provides the script to install, update, configure and reset the codebase of your bot. ```bash $ ./setup.sh @@ -60,25 +64,25 @@ usage: ** --install ** -This script will install everything you need to run the bot: +With this option, the script will install everything you need to run the bot: * Mandatory software as: `ta-lib` * Setup your virtualenv * Configure your `config.json` file -This script is a combination of `install script` `--reset`, `--config` +This option is a combination of installation tasks, `--reset` and `--config`. ** --update ** -Update parameter will pull the last version of your current branch and update your virtualenv. +This option will pull the last version of your current branch and update your virtualenv. Run the script with this option periodically to update your bot. ** --reset ** -Reset parameter will hard reset your branch (only if you are on `master` or `develop`) and recreate your virtualenv. +This option will hard reset your branch (only if you are on either `master` or `develop`) and recreate your virtualenv. ** --config ** -Config parameter is a `config.json` configurator. This script will ask you questions to setup your bot and create your `config.json`. +Use this option to configure the `config.json` configuration file. The script will interactively ask you questions to setup your bot and create your `config.json`. ------ From e632720c02bf982f2a4627d2ce8ce002b460ab97 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 06:55:16 +0100 Subject: [PATCH 0907/3421] Allow chaining of pairlists --- freqtrade/freqtradebot.py | 7 +- freqtrade/pairlist/IPairList.py | 65 ++++-------------- freqtrade/pairlist/IPairListFilter.py | 18 ----- freqtrade/pairlist/LowPriceFilter.py | 29 +++++--- freqtrade/pairlist/PrecisionFilter.py | 13 ++-- freqtrade/pairlist/StaticPairList.py | 15 ++-- freqtrade/pairlist/VolumePairList.py | 32 +++++---- freqtrade/pairlist/pairlistmanager.py | 68 +++++++++++++++++++ freqtrade/resolvers/pairlist_resolver.py | 8 ++- .../resolvers/pairlistfilter_resolver.py | 53 --------------- 10 files changed, 143 insertions(+), 165 deletions(-) delete mode 100644 freqtrade/pairlist/IPairListFilter.py create mode 100644 freqtrade/pairlist/pairlistmanager.py delete mode 100644 freqtrade/resolvers/pairlistfilter_resolver.py diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a8fc6bc7e..9871ffb89 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -20,9 +20,9 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.edge import Edge from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date from freqtrade.persistence import Trade -from freqtrade.resolvers import (ExchangeResolver, PairListResolver, - StrategyResolver) +from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.rpc import RPCManager, RPCMessageType +from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.state import State from freqtrade.strategy.interface import IStrategy, SellType from freqtrade.wallets import Wallets @@ -70,8 +70,7 @@ class FreqtradeBot: # Attach Wallets to Strategy baseclass IStrategy.wallets = self.wallets - pairlistname = self.config.get('pairlist', {}).get('method', 'StaticPairList') - self.pairlists = PairListResolver(pairlistname, self, self.config).pairlist + self.pairlists = PairListManager(self.exchange, self.config) # Initializing Edge only if enabled self.edge = Edge(self.config, self.exchange, self.strategy) if \ diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index eb6af9d52..845c5d01f 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -9,25 +9,16 @@ from abc import ABC, abstractmethod from typing import Dict, List from freqtrade.exchange import market_is_active -from freqtrade.pairlist.IPairListFilter import IPairListFilter -from freqtrade.resolvers.pairlistfilter_resolver import PairListFilterResolver logger = logging.getLogger(__name__) class IPairList(ABC): - def __init__(self, freqtrade, config: dict) -> None: - self._freqtrade = freqtrade + def __init__(self, exchange, config, pairlistconfig: dict) -> None: + self._exchange = exchange self._config = config - self._whitelist = self._config['exchange']['pair_whitelist'] - self._blacklist = self._config['exchange'].get('pair_blacklist', []) - self._filters = self._config.get('pairlist', {}).get('filters', {}) - self._pairlistfilters: List[IPairListFilter] = [] - for pl_filter in self._filters.keys(): - self._pairlistfilters.append( - PairListFilterResolver(pl_filter, freqtrade, self._config).pairlistfilter - ) + self._pairlistconfig = pairlistconfig @property def name(self) -> str: @@ -37,22 +28,6 @@ class IPairList(ABC): """ return self.__class__.__name__ - @property - def whitelist(self) -> List[str]: - """ - Has the current whitelist - -> no need to overwrite in subclasses - """ - return self._whitelist - - @property - def blacklist(self) -> List[str]: - """ - Has the current blacklist - -> no need to overwrite in subclasses - """ - return self._blacklist - @abstractmethod def short_desc(self) -> str: """ @@ -61,28 +36,16 @@ class IPairList(ABC): """ @abstractmethod - def refresh_pairlist(self) -> None: + def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: """ - Refreshes pairlists and assigns them to self._whitelist and self._blacklist respectively + Filters and sorts pairlist and returns the whitelist again. + Called on each bot iteration - please use internal caching if necessary -> Please overwrite in subclasses + :param pairlist: pairlist to filter or sort + :param tickers: Tickers (from exchange.get_tickers()). May be cached. + :return: new whitelist """ - def validate_whitelist(self, pairlist: List[str], - tickers: List[Dict] = []) -> List[str]: - """ - Validate pairlist against active markets and blacklist. - Run PairlistFilters if these are configured. - """ - pairlist = self._whitelist_for_active_markets(pairlist) - - if not tickers: - # Refresh tickers if they are not used by the parent Pairlist - tickers = self._freqtrade.exchange.get_tickers() - - for pl_filter in self._pairlistfilters: - pairlist = pl_filter.filter_pairlist(pairlist, tickers) - return pairlist - def _whitelist_for_active_markets(self, whitelist: List[str]) -> List[str]: """ Check available markets and remove pair from whitelist if necessary @@ -90,16 +53,14 @@ class IPairList(ABC): :return: the list of pairs the user wants to trade without those unavailable or black_listed """ - markets = self._freqtrade.exchange.markets + markets = self._exchange.markets sanitized_whitelist: List[str] = [] for pair in whitelist: - # pair is not in the generated dynamic market, or in the blacklist ... ignore it - if (pair in self.blacklist or pair not in markets - or not pair.endswith(self._config['stake_currency'])): + # pair is not in the generated dynamic market or has the wrong stake currency + if (pair not in markets or not pair.endswith(self._config['stake_currency'])): logger.warning(f"Pair {pair} is not compatible with exchange " - f"{self._freqtrade.exchange.name} or contained in " - f"your blacklist. Removing it from whitelist..") + f"{self._exchange.name}. Removing it from whitelist..") continue # Check if market is active market = markets[pair] diff --git a/freqtrade/pairlist/IPairListFilter.py b/freqtrade/pairlist/IPairListFilter.py deleted file mode 100644 index 4b43f0e9f..000000000 --- a/freqtrade/pairlist/IPairListFilter.py +++ /dev/null @@ -1,18 +0,0 @@ -import logging -from abc import ABC, abstractmethod -from typing import Dict, List - -logger = logging.getLogger(__name__) - - -class IPairListFilter(ABC): - - def __init__(self, freqtrade, config: dict) -> None: - self._freqtrade = freqtrade - self._config = config - - @abstractmethod - def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: - """ - Method doing the filtering - """ diff --git a/freqtrade/pairlist/LowPriceFilter.py b/freqtrade/pairlist/LowPriceFilter.py index 778c9b4e0..2f4a3be75 100644 --- a/freqtrade/pairlist/LowPriceFilter.py +++ b/freqtrade/pairlist/LowPriceFilter.py @@ -2,18 +2,23 @@ import logging from copy import deepcopy from typing import Dict, List -from freqtrade.pairlist.IPairListFilter import IPairListFilter +from freqtrade.pairlist.IPairList import IPairList logger = logging.getLogger(__name__) -class LowPriceFilter(IPairListFilter): +class LowPriceFilter(IPairList): - def __init__(self, freqtrade, config: dict) -> None: - super().__init__(freqtrade, config) + def __init__(self, exchange, config, pairlistconfig: dict) -> None: + super().__init__(exchange, config, pairlistconfig) - self._low_price_percent = config['pairlist']['filters']['LowPriceFilter'].get( - 'low_price_percent', 0) + self._low_price_percent = pairlistconfig.get('low_price_percent', 0) + + def short_desc(self) -> str: + """ + Short whitelist method description - used for startup-messages + """ + return f"{self.name} - Filtering pairs priced below {self._low_price_percent * 100}%." def _validate_ticker_lowprice(self, ticker) -> bool: """ @@ -22,7 +27,7 @@ class LowPriceFilter(IPairListFilter): :param precision: Precision :return: True if the pair can stay, false if it should be removed """ - precision = self._freqtrade.exchange.markets[ticker['symbol']]['precision']['price'] + precision = self._exchange.markets[ticker['symbol']]['precision']['price'] compare = ticker['last'] + 1 / pow(10, precision) changeperc = (compare - ticker['last']) / ticker['last'] @@ -33,10 +38,14 @@ class LowPriceFilter(IPairListFilter): return True def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: - """ - Method doing the filtering - """ + """ + Filters and sorts pairlist and returns the whitelist again. + Called on each bot iteration - please use internal caching if necessary + :param pairlist: pairlist to filter or sort + :param tickers: Tickers (from exchange.get_tickers()). May be cached. + :return: new whitelist + """ # Copy list since we're modifying this list for p in deepcopy(pairlist): ticker = [t for t in tickers if t['symbol'] == p][0] diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index c720b8e61..0a590bec6 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -2,15 +2,18 @@ import logging from copy import deepcopy from typing import Dict, List -from freqtrade.pairlist.IPairListFilter import IPairListFilter +from freqtrade.pairlist.IPairList import IPairList logger = logging.getLogger(__name__) -class PrecisionFilter(IPairListFilter): +class PrecisionFilter(IPairList): - def __init__(self, freqtrade, config: dict) -> None: - super().__init__(freqtrade, config) + def short_desc(self) -> str: + """ + Short whitelist method description - used for startup-messages + """ + return f"{self.name} - Filtering untradable pairs." def _validate_precision_filter(self, ticker: dict, stoploss: float) -> bool: """ @@ -35,7 +38,7 @@ class PrecisionFilter(IPairListFilter): def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: """ - Method doing the filtering + Filters and sorts pairlists and assigns and returns them again. """ if self._freqtrade.strategy.stoploss is not None: # Precalculate sanitized stoploss value to avoid recalculation for every pair diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index 074652b25..c10dde5a6 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -5,6 +5,7 @@ Provides lists as configured in config.json """ import logging +from typing import List, Dict from freqtrade.pairlist.IPairList import IPairList @@ -13,8 +14,8 @@ logger = logging.getLogger(__name__) class StaticPairList(IPairList): - def __init__(self, freqtrade, config: dict) -> None: - super().__init__(freqtrade, config) + def __init__(self, exchange, config, pairlistconfig: dict) -> None: + super().__init__(exchange, config, pairlistconfig) def short_desc(self) -> str: """ @@ -23,8 +24,12 @@ class StaticPairList(IPairList): """ return f"{self.name}: {self.whitelist}" - def refresh_pairlist(self) -> None: + def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: """ - Refreshes pairlists and assigns them to self._whitelist and self._blacklist respectively + Filters and sorts pairlist and returns the whitelist again. + Called on each bot iteration - please use internal caching if necessary + :param pairlist: pairlist to filter or sort + :param tickers: Tickers (from exchange.get_tickers()). May be cached. + :return: new whitelist """ - self._whitelist = self.validate_whitelist(self._config['exchange']['pair_whitelist']) + return self.validate_whitelist(self._config['exchange']['pair_whitelist']) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 911bb3bda..ff601bc44 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -5,7 +5,7 @@ Provides lists as configured in config.json """ import logging -from typing import List +from typing import List, Dict from cachetools import TTLCache, cached @@ -19,18 +19,17 @@ SORT_VALUES = ['askVolume', 'bidVolume', 'quoteVolume'] class VolumePairList(IPairList): - def __init__(self, freqtrade, config: dict) -> None: - super().__init__(freqtrade, config) - self._whitelistconf = self._config.get('pairlist', {}).get('config') - if 'number_assets' not in self._whitelistconf: + def __init__(self, exchange, config, pairlistconfig: dict) -> None: + super().__init__(exchange, config, pairlistconfig) + + if 'number_assets' not in self._pairlistconfig: raise OperationalException( f'`number_assets` not specified. Please check your configuration ' 'for "pairlist.config.number_assets"') - self._number_pairs = self._whitelistconf['number_assets'] - self._sort_key = self._whitelistconf.get('sort_key', 'quoteVolume') - self._precision_filter = self._whitelistconf.get('precision_filter', True) + self._number_pairs = self._pairlistconfig['number_assets'] + self._sort_key = self._pairlistconfig.get('sort_key', 'quoteVolume') - if not self._freqtrade.exchange.exchange_has('fetchTickers'): + if not self._exchange.exchange_has('fetchTickers'): raise OperationalException( 'Exchange does not support dynamic whitelist.' 'Please edit your config and restart the bot' @@ -45,14 +44,16 @@ class VolumePairList(IPairList): def short_desc(self) -> str: """ Short whitelist method description - used for startup-messages - -> Please overwrite in subclasses """ return f"{self.name} - top {self._whitelistconf['number_assets']} volume pairs." - def refresh_pairlist(self) -> None: + def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: """ - Refreshes pairlists and assigns them to self._whitelist and self._blacklist respectively - -> Please overwrite in subclasses + Filters and sorts pairlist and returns the whitelist again. + Called on each bot iteration - please use internal caching if necessary + :param pairlist: pairlist to filter or sort + :param tickers: Tickers (from exchange.get_tickers()). May be cached. + :return: new whitelist """ # Generate dynamic whitelist self._whitelist = self._gen_pair_whitelist( @@ -64,17 +65,18 @@ class VolumePairList(IPairList): Updates the whitelist with with a dynamically generated list :param base_currency: base currency as str :param key: sort key (defaults to 'quoteVolume') + :param tickers: Tickers (from exchange.get_tickers()). :return: List of pairs """ - tickers = self._freqtrade.exchange.get_tickers() + tickers = self._exchange.get_tickers() # check length so that we make sure that '/' is actually in the string tickers = [v for k, v in tickers.items() if (len(k.split('/')) == 2 and k.split('/')[1] == base_currency and v[key] is not None)] sorted_tickers = sorted(tickers, reverse=True, key=lambda t: t[key]) # Validate whitelist to only have active market pairs - pairs = self.validate_whitelist([s['symbol'] for s in sorted_tickers], tickers) + pairs = self._whitelist_for_active_markets([s['symbol'] for s in sorted_tickers]) logger.info(f"Searching {self._number_pairs} pairs: {pairs[:self._number_pairs]}") diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py new file mode 100644 index 000000000..9e92fdb6a --- /dev/null +++ b/freqtrade/pairlist/pairlistmanager.py @@ -0,0 +1,68 @@ +""" +Static List provider + +Provides lists as configured in config.json + + """ +import logging +from copy import deepcopy +from typing import List + +from freqtrade.pairlist.IPairList import IPairList +from freqtrade.resolvers import PairListResolver + +logger = logging.getLogger(__name__) + + +class PairListManager(): + + def __init__(self, exchange, config: dict) -> None: + self._exchange = exchange + self._config = config + self._whitelist = self._config['exchange'].get('pair_whitelist') + self._blacklist = self._config['exchange'].get('pair_blacklist', []) + self._pairlists: List[IPairList] = [] + + for pl in self._config.get('pairlists', [{'method': "StaticPairList"}]): + pairl = PairListResolver(pl.get('method'), + exchange, config, + pl.get('config')).pairlist + self._pairlists.append(pairl) + + @property + def whitelist(self) -> List[str]: + """ + Has the current whitelist + """ + return self._whitelist + + @property + def blacklist(self) -> List[str]: + """ + Has the current blacklist + -> no need to overwrite in subclasses + """ + return self._blacklist + + def refresh_pairlist(self) -> None: + """ + Run pairlist through all pairlists. + """ + + pairlist = self._whitelist.copy() + + # tickers should be cached to avoid calling the exchange on each call. + tickers = self._exchange.get_tickers() + for pl in self._pairlists: + pl.filter_pairlist(pairlist, tickers) + + pairlist = self._verify_blacklist(pairlist) + self._whitelist = pairlist + + def _verify_blacklist(self, pairlist: List[str]) -> List[str]: + + for pair in deepcopy(pairlist): + if pair in self.blacklist: + logger.warning(f"Pair {pair} in your blacklist. Removing it from whitelist...") + pairlist.remove(pair) + return pairlist diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index 0f23bb3fd..db00f6515 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -20,13 +20,15 @@ class PairListResolver(IResolver): __slots__ = ['pairlist'] - def __init__(self, pairlist_name: str, freqtrade, config: dict) -> None: + def __init__(self, pairlist_name: str, exchange, config: dict, pairlistconfig) -> None: """ Load the custom class from config parameter :param config: configuration dictionary or None """ - self.pairlist = self._load_pairlist(pairlist_name, config, kwargs={'freqtrade': freqtrade, - 'config': config}) + self.pairlist = self._load_pairlist(pairlist_name, config, + kwargs={'exchange': exchange, + 'config': config, + 'pairlistconfig': pairlistconfig}) def _load_pairlist( self, pairlist_name: str, config: dict, kwargs: dict) -> IPairList: diff --git a/freqtrade/resolvers/pairlistfilter_resolver.py b/freqtrade/resolvers/pairlistfilter_resolver.py deleted file mode 100644 index bf86d1c6c..000000000 --- a/freqtrade/resolvers/pairlistfilter_resolver.py +++ /dev/null @@ -1,53 +0,0 @@ -# pragma pylint: disable=attribute-defined-outside-init - -""" -This module load custom pairlists -""" -import logging -from pathlib import Path - -from freqtrade import OperationalException -from freqtrade.pairlist.IPairListFilter import IPairListFilter -from freqtrade.resolvers import IResolver - -logger = logging.getLogger(__name__) - - -class PairListFilterResolver(IResolver): - """ - This class contains all the logic to load custom PairList class - """ - - __slots__ = ['pairlistfilter'] - - def __init__(self, pairlist_name: str, freqtrade, config: dict) -> None: - """ - Load the custom class from config parameter - :param config: configuration dictionary or None - """ - self.pairlistfilter = self._load_pairlist(pairlist_name, config, - kwargs={'freqtrade': freqtrade, - 'config': config}) - - def _load_pairlist( - self, pairlistfilter_name: str, config: dict, kwargs: dict) -> IPairListFilter: - """ - Search and loads the specified pairlist. - :param pairlistfilter_name: name of the module to import - :param config: configuration dictionary - :param extra_dir: additional directory to search for the given pairlist - :return: PairList instance or None - """ - current_path = Path(__file__).parent.parent.joinpath('pairlist').resolve() - - abs_paths = self.build_search_paths(config, current_path=current_path, - user_subdir=None, extra_dir=None) - - pairlist = self._load_object(paths=abs_paths, object_type=IPairListFilter, - object_name=pairlistfilter_name, kwargs=kwargs) - if pairlist: - return pairlist - raise OperationalException( - f"Impossible to load PairlistFilter '{pairlistfilter_name}'. This class does not exist " - "or contains Python code errors." - ) From b610e8c7e6b9a2d5f6c007fd446541f773fc688b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 07:05:17 +0100 Subject: [PATCH 0908/3421] Don't refresh tickers if they are not needed --- freqtrade/pairlist/IPairList.py | 10 +++++++++- freqtrade/pairlist/LowPriceFilter.py | 9 +++++++++ freqtrade/pairlist/PrecisionFilter.py | 9 +++++++++ freqtrade/pairlist/StaticPairList.py | 11 ++++++++++- freqtrade/pairlist/VolumePairList.py | 9 +++++++++ freqtrade/pairlist/pairlistmanager.py | 16 +++++++++++----- 6 files changed, 57 insertions(+), 7 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index 845c5d01f..366a49bae 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -5,7 +5,7 @@ Provides lists as configured in config.json """ import logging -from abc import ABC, abstractmethod +from abc import ABC, abstractmethod, abstractproperty from typing import Dict, List from freqtrade.exchange import market_is_active @@ -28,6 +28,14 @@ class IPairList(ABC): """ return self.__class__.__name__ + @abstractproperty + def needstickers(self) -> bool: + """ + Boolean property defining if tickers are necessary. + If no Pairlist requries tickers, an empty List is passed + as tickers argument to filter_pairlist + """ + @abstractmethod def short_desc(self) -> str: """ diff --git a/freqtrade/pairlist/LowPriceFilter.py b/freqtrade/pairlist/LowPriceFilter.py index 2f4a3be75..4d4a92676 100644 --- a/freqtrade/pairlist/LowPriceFilter.py +++ b/freqtrade/pairlist/LowPriceFilter.py @@ -14,6 +14,15 @@ class LowPriceFilter(IPairList): self._low_price_percent = pairlistconfig.get('low_price_percent', 0) + @property + def needstickers(self) -> bool: + """ + Boolean property defining if tickers are necessary. + If no Pairlist requries tickers, an empty List is passed + as tickers argument to filter_pairlist + """ + return True + def short_desc(self) -> str: """ Short whitelist method description - used for startup-messages diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 0a590bec6..3e68ec607 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -9,6 +9,15 @@ logger = logging.getLogger(__name__) class PrecisionFilter(IPairList): + @property + def needstickers(self) -> bool: + """ + Boolean property defining if tickers are necessary. + If no Pairlist requries tickers, an empty List is passed + as tickers argument to filter_pairlist + """ + return True + def short_desc(self) -> str: """ Short whitelist method description - used for startup-messages diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index c10dde5a6..54cd21d13 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -17,6 +17,15 @@ class StaticPairList(IPairList): def __init__(self, exchange, config, pairlistconfig: dict) -> None: super().__init__(exchange, config, pairlistconfig) + @property + def needstickers(self) -> bool: + """ + Boolean property defining if tickers are necessary. + If no Pairlist requries tickers, an empty List is passed + as tickers argument to filter_pairlist + """ + return False + def short_desc(self) -> str: """ Short whitelist method description - used for startup-messages @@ -32,4 +41,4 @@ class StaticPairList(IPairList): :param tickers: Tickers (from exchange.get_tickers()). May be cached. :return: new whitelist """ - return self.validate_whitelist(self._config['exchange']['pair_whitelist']) + return self._config['exchange']['pair_whitelist'] diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index ff601bc44..27b99ade8 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -38,6 +38,15 @@ class VolumePairList(IPairList): raise OperationalException( f'key {self._sort_key} not in {SORT_VALUES}') + @property + def needstickers(self) -> bool: + """ + Boolean property defining if tickers are necessary. + If no Pairlist requries tickers, an empty List is passed + as tickers argument to filter_pairlist + """ + return True + def _validate_keys(self, key): return key in SORT_VALUES diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 9e92fdb6a..d3532ee54 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -22,11 +22,12 @@ class PairListManager(): self._whitelist = self._config['exchange'].get('pair_whitelist') self._blacklist = self._config['exchange'].get('pair_blacklist', []) self._pairlists: List[IPairList] = [] - + self._tickers_needed = False for pl in self._config.get('pairlists', [{'method': "StaticPairList"}]): pairl = PairListResolver(pl.get('method'), exchange, config, pl.get('config')).pairlist + self._tickers_needed = pairl.needstickers or self._tickers_needed self._pairlists.append(pairl) @property @@ -52,17 +53,22 @@ class PairListManager(): pairlist = self._whitelist.copy() # tickers should be cached to avoid calling the exchange on each call. - tickers = self._exchange.get_tickers() + tickers = [] + if self._tickers_needed: + tickers = self._exchange.get_tickers() + for pl in self._pairlists: pl.filter_pairlist(pairlist, tickers) - pairlist = self._verify_blacklist(pairlist) + # Validation against blacklist happens after the pairlists to ensure blacklist is respected. + pairlist = self.verify_blacklist(pairlist, self.blacklist) self._whitelist = pairlist - def _verify_blacklist(self, pairlist: List[str]) -> List[str]: + @staticmethod + def verify_blacklist(pairlist: List[str], blacklist: List[str]) -> List[str]: for pair in deepcopy(pairlist): - if pair in self.blacklist: + if pair in blacklist: logger.warning(f"Pair {pair} in your blacklist. Removing it from whitelist...") pairlist.remove(pair) return pairlist From 10595862268288e7cafca1c6ed85996f906b2588 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 07:07:33 +0100 Subject: [PATCH 0909/3421] Small adjustments --- freqtrade/pairlist/StaticPairList.py | 4 ++-- freqtrade/pairlist/VolumePairList.py | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index 54cd21d13..e70bd671c 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -5,7 +5,7 @@ Provides lists as configured in config.json """ import logging -from typing import List, Dict +from typing import Dict, List from freqtrade.pairlist.IPairList import IPairList @@ -31,7 +31,7 @@ class StaticPairList(IPairList): Short whitelist method description - used for startup-messages -> Please overwrite in subclasses """ - return f"{self.name}: {self.whitelist}" + return f"{self.name}" def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: """ diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 27b99ade8..ba32c8681 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -5,7 +5,7 @@ Provides lists as configured in config.json """ import logging -from typing import List, Dict +from typing import Dict, List from cachetools import TTLCache, cached @@ -54,7 +54,7 @@ class VolumePairList(IPairList): """ Short whitelist method description - used for startup-messages """ - return f"{self.name} - top {self._whitelistconf['number_assets']} volume pairs." + return f"{self.name} - top {self._pairlistconfig['number_assets']} volume pairs." def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: """ @@ -65,8 +65,7 @@ class VolumePairList(IPairList): :return: new whitelist """ # Generate dynamic whitelist - self._whitelist = self._gen_pair_whitelist( - self._config['stake_currency'], self._sort_key) + return self._gen_pair_whitelist(self._config['stake_currency'], self._sort_key) @cached(TTLCache(maxsize=1, ttl=1800)) def _gen_pair_whitelist(self, base_currency: str, key: str) -> List[str]: From eaf3fd80c591889d30f882ed110cd2a032b13bef Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 07:19:46 +0100 Subject: [PATCH 0910/3421] Allow blacklist-verification from all pairlists --- freqtrade/pairlist/IPairList.py | 13 ++++++++++++- freqtrade/pairlist/VolumePairList.py | 6 ++++-- freqtrade/pairlist/pairlistmanager.py | 15 +++------------ freqtrade/resolvers/pairlist_resolver.py | 3 ++- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index 366a49bae..b666b12f2 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -6,6 +6,7 @@ Provides lists as configured in config.json """ import logging from abc import ABC, abstractmethod, abstractproperty +from copy import deepcopy from typing import Dict, List from freqtrade.exchange import market_is_active @@ -15,8 +16,9 @@ logger = logging.getLogger(__name__) class IPairList(ABC): - def __init__(self, exchange, config, pairlistconfig: dict) -> None: + def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict) -> None: self._exchange = exchange + self._pairlistmanager = pairlistmanager self._config = config self._pairlistconfig = pairlistconfig @@ -54,6 +56,15 @@ class IPairList(ABC): :return: new whitelist """ + @staticmethod + def _verify_blacklist(self, pairlist: List[str]) -> List[str]: + + for pair in deepcopy(pairlist): + if pair in self._pairlistmanager.blacklist: + logger.warning(f"Pair {pair} in your blacklist. Removing it from whitelist...") + pairlist.remove(pair) + return pairlist + def _whitelist_for_active_markets(self, whitelist: List[str]) -> List[str]: """ Check available markets and remove pair from whitelist if necessary diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index ba32c8681..77bdf472d 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -85,7 +85,9 @@ class VolumePairList(IPairList): sorted_tickers = sorted(tickers, reverse=True, key=lambda t: t[key]) # Validate whitelist to only have active market pairs pairs = self._whitelist_for_active_markets([s['symbol'] for s in sorted_tickers]) - - logger.info(f"Searching {self._number_pairs} pairs: {pairs[:self._number_pairs]}") + pairs = self._verify_blacklist(pairs) + # Limit to X number of pairs + pairs = pairs[:self._number_pairs] + logger.info(f"Searching {self._number_pairs} pairs: {pairs}") return pairs diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index d3532ee54..b1681afef 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -5,7 +5,6 @@ Provides lists as configured in config.json """ import logging -from copy import deepcopy from typing import List from freqtrade.pairlist.IPairList import IPairList @@ -25,7 +24,7 @@ class PairListManager(): self._tickers_needed = False for pl in self._config.get('pairlists', [{'method': "StaticPairList"}]): pairl = PairListResolver(pl.get('method'), - exchange, config, + exchange, self, config, pl.get('config')).pairlist self._tickers_needed = pairl.needstickers or self._tickers_needed self._pairlists.append(pairl) @@ -57,18 +56,10 @@ class PairListManager(): if self._tickers_needed: tickers = self._exchange.get_tickers() + # Process all pairlists in chain for pl in self._pairlists: - pl.filter_pairlist(pairlist, tickers) + pairlist = pl.filter_pairlist(pairlist, tickers) # Validation against blacklist happens after the pairlists to ensure blacklist is respected. pairlist = self.verify_blacklist(pairlist, self.blacklist) self._whitelist = pairlist - - @staticmethod - def verify_blacklist(pairlist: List[str], blacklist: List[str]) -> List[str]: - - for pair in deepcopy(pairlist): - if pair in blacklist: - logger.warning(f"Pair {pair} in your blacklist. Removing it from whitelist...") - pairlist.remove(pair) - return pairlist diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index db00f6515..a37d7dc05 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -20,13 +20,14 @@ class PairListResolver(IResolver): __slots__ = ['pairlist'] - def __init__(self, pairlist_name: str, exchange, config: dict, pairlistconfig) -> None: + def __init__(self, pairlist_name: str, exchange, pairlistmanager, config: dict, pairlistconfig) -> None: """ Load the custom class from config parameter :param config: configuration dictionary or None """ self.pairlist = self._load_pairlist(pairlist_name, config, kwargs={'exchange': exchange, + 'pairlistmanager': pairlistmanager, 'config': config, 'pairlistconfig': pairlistconfig}) From 31c7189b8b3c2cac88670e7a2204e9771bb24117 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 07:23:34 +0100 Subject: [PATCH 0911/3421] Verify blacklist correctly --- freqtrade/pairlist/IPairList.py | 14 +++++++++++--- freqtrade/pairlist/pairlistmanager.py | 3 ++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index b666b12f2..e14ae4187 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -57,14 +57,22 @@ class IPairList(ABC): """ @staticmethod - def _verify_blacklist(self, pairlist: List[str]) -> List[str]: - + def verify_blacklist(self, pairlist: List[str], blacklist: List[str]) -> List[str]: + """ + Verify and remove items from pairlist - returning a filtered pairlist. + """ for pair in deepcopy(pairlist): - if pair in self._pairlistmanager.blacklist: + if pair in blacklist: logger.warning(f"Pair {pair} in your blacklist. Removing it from whitelist...") pairlist.remove(pair) return pairlist + def _verify_blacklist(self, pairlist: List[str]) -> List[str]: + """ + Proxy method to verify_blacklist for easy access for child classes. + """ + return IPairList.verify_blacklist(pairlist, self._pairlistmanager.blacklist) + def _whitelist_for_active_markets(self, whitelist: List[str]) -> List[str]: """ Check available markets and remove pair from whitelist if necessary diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index b1681afef..ee6b3e37b 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -61,5 +61,6 @@ class PairListManager(): pairlist = pl.filter_pairlist(pairlist, tickers) # Validation against blacklist happens after the pairlists to ensure blacklist is respected. - pairlist = self.verify_blacklist(pairlist, self.blacklist) + pairlist = IPairList.verify_blacklist(pairlist, self.blacklist) + self._whitelist = pairlist From bf69b055ebc8b648095e0dfdbf3b461d80577ae7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 09:07:46 +0100 Subject: [PATCH 0912/3421] Add name getting --- freqtrade/pairlist/IPairList.py | 2 +- freqtrade/pairlist/LowPriceFilter.py | 4 ++-- freqtrade/pairlist/PrecisionFilter.py | 11 +++++------ freqtrade/pairlist/StaticPairList.py | 4 ++-- freqtrade/pairlist/VolumePairList.py | 4 ++-- freqtrade/pairlist/pairlistmanager.py | 16 ++++++++++++++-- freqtrade/resolvers/pairlist_resolver.py | 3 ++- 7 files changed, 28 insertions(+), 16 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index e14ae4187..ef9ea1d04 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -57,7 +57,7 @@ class IPairList(ABC): """ @staticmethod - def verify_blacklist(self, pairlist: List[str], blacklist: List[str]) -> List[str]: + def verify_blacklist(pairlist: List[str], blacklist: List[str]) -> List[str]: """ Verify and remove items from pairlist - returning a filtered pairlist. """ diff --git a/freqtrade/pairlist/LowPriceFilter.py b/freqtrade/pairlist/LowPriceFilter.py index 4d4a92676..9552b56b8 100644 --- a/freqtrade/pairlist/LowPriceFilter.py +++ b/freqtrade/pairlist/LowPriceFilter.py @@ -9,8 +9,8 @@ logger = logging.getLogger(__name__) class LowPriceFilter(IPairList): - def __init__(self, exchange, config, pairlistconfig: dict) -> None: - super().__init__(exchange, config, pairlistconfig) + def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict) -> None: + super().__init__(exchange, pairlistmanager, config, pairlistconfig) self._low_price_percent = pairlistconfig.get('low_price_percent', 0) diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 3e68ec607..b18237b00 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -33,11 +33,10 @@ class PrecisionFilter(IPairList): (already cleaned to be 1 - stoploss) :return: True if the pair can stay, false if it should be removed """ - stop_price = self._freqtrade.get_target_bid(ticker["symbol"], ticker) * stoploss + stop_price = ticker['ask'] * stoploss # Adjust stop-prices to precision - sp = self._freqtrade.exchange.symbol_price_prec(ticker["symbol"], stop_price) - stop_gap_price = self._freqtrade.exchange.symbol_price_prec(ticker["symbol"], - stop_price * 0.99) + sp = self._exchange.symbol_price_prec(ticker["symbol"], stop_price) + stop_gap_price = self._exchange.symbol_price_prec(ticker["symbol"], stop_price * 0.99) logger.debug(f"{ticker['symbol']} - {sp} : {stop_gap_price}") if sp <= stop_gap_price: logger.info(f"Removed {ticker['symbol']} from whitelist, " @@ -49,9 +48,9 @@ class PrecisionFilter(IPairList): """ Filters and sorts pairlists and assigns and returns them again. """ - if self._freqtrade.strategy.stoploss is not None: + if self._config.get('stoploss') is not None: # Precalculate sanitized stoploss value to avoid recalculation for every pair - stoploss = 1 - abs(self._freqtrade.strategy.stoploss) + stoploss = 1 - abs(self._config.get('stoploss')) # Copy list since we're modifying this list for p in deepcopy(pairlist): ticker = [t for t in tickers if t['symbol'] == p][0] diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index e70bd671c..f663f8b02 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -14,8 +14,8 @@ logger = logging.getLogger(__name__) class StaticPairList(IPairList): - def __init__(self, exchange, config, pairlistconfig: dict) -> None: - super().__init__(exchange, config, pairlistconfig) + def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict) -> None: + super().__init__(exchange, pairlistmanager, config, pairlistconfig) @property def needstickers(self) -> bool: diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 77bdf472d..610986a72 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -19,8 +19,8 @@ SORT_VALUES = ['askVolume', 'bidVolume', 'quoteVolume'] class VolumePairList(IPairList): - def __init__(self, exchange, config, pairlistconfig: dict) -> None: - super().__init__(exchange, config, pairlistconfig) + def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict) -> None: + super().__init__(exchange, pairlistmanager, config, pairlistconfig) if 'number_assets' not in self._pairlistconfig: raise OperationalException( diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index ee6b3e37b..e6b2b6103 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -5,7 +5,7 @@ Provides lists as configured in config.json """ import logging -from typing import List +from typing import Dict, List from freqtrade.pairlist.IPairList import IPairList from freqtrade.resolvers import PairListResolver @@ -44,6 +44,18 @@ class PairListManager(): """ return self._blacklist + @property + def name(self) -> str: + """ + """ + return str([p.name for p in self._pairlists]) + + def short_desc(self) -> List[Dict]: + """ + List of short_desc for each pairlist + """ + return [{p.name: p.short_desc()} for p in self._pairlists] + def refresh_pairlist(self) -> None: """ Run pairlist through all pairlists. @@ -52,7 +64,7 @@ class PairListManager(): pairlist = self._whitelist.copy() # tickers should be cached to avoid calling the exchange on each call. - tickers = [] + tickers: List[Dict] = [] if self._tickers_needed: tickers = self._exchange.get_tickers() diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index a37d7dc05..9e051fa8f 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -20,7 +20,8 @@ class PairListResolver(IResolver): __slots__ = ['pairlist'] - def __init__(self, pairlist_name: str, exchange, pairlistmanager, config: dict, pairlistconfig) -> None: + def __init__(self, pairlist_name: str, exchange, pairlistmanager, + config: dict, pairlistconfig) -> None: """ Load the custom class from config parameter :param config: configuration dictionary or None From 85beb3b6a98dc83c5d6cd405c6e260b7743cd20d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 09:31:17 +0100 Subject: [PATCH 0913/3421] Fix test --- tests/pairlist/test_pairlist.py | 69 ++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 26 deletions(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 23c48545e..5c718dfdf 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -7,6 +7,7 @@ import pytest from freqtrade import OperationalException from freqtrade.constants import AVAILABLE_PAIRLISTS from freqtrade.resolvers import PairListResolver +from freqtrade.pairlist.pairlistmanager import PairListManager from tests.conftest import get_patched_freqtradebot, log_has_re # whitelist, blacklist @@ -25,26 +26,41 @@ def whitelist_conf(default_conf): default_conf['exchange']['pair_blacklist'] = [ 'BLK/BTC' ] - default_conf['pairlist'] = {'method': 'StaticPairList', - 'config': {'number_assets': 5}, - 'filters': {}, - } + default_conf['pairlists'] = [ + { + "method": "VolumePairList", + "config": { + "number_assets": 5, + "sort_key": "quoteVolume", + } + }, + ] + return default_conf + +@pytest.fixture(scope="function") +def static_pl_conf(default_conf): + default_conf['pairlists'] = [ + { + "method": "StaticPairList", + }, + ] return default_conf def test_load_pairlist_noexist(mocker, markets, default_conf): - freqtradebot = get_patched_freqtradebot(mocker, default_conf) + bot = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) + plm = PairListManager(bot.exchange, default_conf) with pytest.raises(OperationalException, match=r"Impossible to load Pairlist 'NonexistingPairList'. " r"This class does not exist or contains Python code errors."): - PairListResolver('NonexistingPairList', freqtradebot, default_conf).pairlist + PairListResolver('NonexistingPairList', bot.exchange, plm, default_conf, {}) -def test_refresh_market_pair_not_in_whitelist(mocker, markets, whitelist_conf): +def test_refresh_market_pair_not_in_whitelist(mocker, markets, static_pl_conf): - freqtradebot = get_patched_freqtradebot(mocker, whitelist_conf) + freqtradebot = get_patched_freqtradebot(mocker, static_pl_conf) mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) freqtradebot.pairlists.refresh_pairlist() @@ -53,34 +69,33 @@ def test_refresh_market_pair_not_in_whitelist(mocker, markets, whitelist_conf): # Ensure all except those in whitelist are removed assert set(whitelist) == set(freqtradebot.pairlists.whitelist) # Ensure config dict hasn't been changed - assert (whitelist_conf['exchange']['pair_whitelist'] == + assert (static_pl_conf['exchange']['pair_whitelist'] == freqtradebot.config['exchange']['pair_whitelist']) -def test_refresh_pairlists(mocker, markets, whitelist_conf): - freqtradebot = get_patched_freqtradebot(mocker, whitelist_conf) - - mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) +def test_refresh_pairlists(mocker, markets, static_pl_conf): + freqtradebot = get_patched_freqtradebot(mocker, static_pl_conf) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + exchange_has=MagicMock(return_value=True), + markets=PropertyMock(return_value=markets), + ) freqtradebot.pairlists.refresh_pairlist() # List ordered by BaseVolume whitelist = ['ETH/BTC', 'TKN/BTC'] # Ensure all except those in whitelist are removed assert set(whitelist) == set(freqtradebot.pairlists.whitelist) - assert whitelist_conf['exchange']['pair_blacklist'] == freqtradebot.pairlists.blacklist + assert static_pl_conf['exchange']['pair_blacklist'] == freqtradebot.pairlists.blacklist def test_refresh_pairlist_dynamic(mocker, shitcoinmarkets, tickers, whitelist_conf): - whitelist_conf['pairlist'] = {'method': 'VolumePairList', - 'config': {'number_assets': 5, - 'precision_filter': False} - } mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_tickers=tickers, - exchange_has=MagicMock(return_value=True) + exchange_has=MagicMock(return_value=True), ) - freqtradebot = get_patched_freqtradebot(mocker, whitelist_conf) + bot = get_patched_freqtradebot(mocker, whitelist_conf) # Remock markets with shitcoinmarkets since get_patched_freqtradebot uses the markets fixture mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -88,17 +103,19 @@ def test_refresh_pairlist_dynamic(mocker, shitcoinmarkets, tickers, whitelist_co ) # argument: use the whitelist dynamically by exchange-volume whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC', 'FUEL/BTC'] - freqtradebot.pairlists.refresh_pairlist() + bot.pairlists.refresh_pairlist() - assert whitelist == freqtradebot.pairlists.whitelist + assert whitelist == bot.pairlists.whitelist + + whitelist_conf['pairlists'] = [{'method': 'VolumePairList', + 'config': {} + } + ] - whitelist_conf['pairlist'] = {'method': 'VolumePairList', - 'config': {} - } with pytest.raises(OperationalException, match=r'`number_assets` not specified. Please check your configuration ' r'for "pairlist.config.number_assets"'): - PairListResolver('VolumePairList', freqtradebot, whitelist_conf).pairlist + PairListManager(bot.exchange, whitelist_conf) def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): From 870966dcd0fc8e1e67b2d7b60e22e765ba8c9898 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 09:42:34 +0100 Subject: [PATCH 0914/3421] Fix more tests --- freqtrade/pairlist/StaticPairList.py | 2 +- tests/pairlist/test_pairlist.py | 25 ++++++++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index f663f8b02..83450c4bc 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -41,4 +41,4 @@ class StaticPairList(IPairList): :param tickers: Tickers (from exchange.get_tickers()). May be cached. :return: new whitelist """ - return self._config['exchange']['pair_whitelist'] + return self._whitelist_for_active_markets(self._config['exchange']['pair_whitelist']) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 5c718dfdf..ffebaf60f 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -16,6 +16,7 @@ from tests.conftest import get_patched_freqtradebot, log_has_re @pytest.fixture(scope="function") def whitelist_conf(default_conf): default_conf['stake_currency'] = 'BTC' + default_conf['exchange']['name'] = 'binance' default_conf['exchange']['pair_whitelist'] = [ 'ETH/BTC', 'TKN/BTC', @@ -39,13 +40,13 @@ def whitelist_conf(default_conf): @pytest.fixture(scope="function") -def static_pl_conf(default_conf): - default_conf['pairlists'] = [ +def static_pl_conf(whitelist_conf): + whitelist_conf['pairlists'] = [ { "method": "StaticPairList", }, ] - return default_conf + return whitelist_conf def test_load_pairlist_noexist(mocker, markets, default_conf): @@ -73,7 +74,7 @@ def test_refresh_market_pair_not_in_whitelist(mocker, markets, static_pl_conf): freqtradebot.config['exchange']['pair_whitelist']) -def test_refresh_pairlists(mocker, markets, static_pl_conf): +def test_refresh_static_pairlist(mocker, markets, static_pl_conf): freqtradebot = get_patched_freqtradebot(mocker, static_pl_conf) mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -119,6 +120,10 @@ def test_refresh_pairlist_dynamic(mocker, shitcoinmarkets, tickers, whitelist_co def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + exchange_has=MagicMock(return_value=True), + ) freqtradebot = get_patched_freqtradebot(mocker, whitelist_conf) mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets_empty)) @@ -179,13 +184,15 @@ def test_gen_pair_whitelist_not_supported(mocker, default_conf, tickers) -> None @pytest.mark.parametrize("pairlist", AVAILABLE_PAIRLISTS) def test_pairlist_class(mocker, whitelist_conf, markets, pairlist): - whitelist_conf['pairlist']['method'] = pairlist - mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) - mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) + whitelist_conf['pairlists'][0]['method'] = pairlist + mocker.patch.multiple('freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=markets), + exchange_has=MagicMock(return_value=True) + ) freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) - assert freqtrade.pairlists.name == pairlist - assert pairlist in freqtrade.pairlists.short_desc() + assert freqtrade.pairlists.name == str([pairlist]) + assert pairlist in str(freqtrade.pairlists.short_desc()) assert isinstance(freqtrade.pairlists.whitelist, list) assert isinstance(freqtrade.pairlists.blacklist, list) From d7262c0b4e7e1b2b02605da117ccd56c0bcc9da3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 13:40:36 +0100 Subject: [PATCH 0915/3421] Fix correct ticker type --- freqtrade/pairlist/IPairList.py | 3 +- freqtrade/pairlist/LowPriceFilter.py | 6 ++- freqtrade/pairlist/PrecisionFilter.py | 6 +-- freqtrade/pairlist/StaticPairList.py | 2 +- freqtrade/pairlist/VolumePairList.py | 21 ++++++--- freqtrade/pairlist/pairlistmanager.py | 2 +- tests/pairlist/test_pairlist.py | 68 ++++++++++++++++----------- 7 files changed, 65 insertions(+), 43 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index ef9ea1d04..4a83bc939 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -46,7 +46,7 @@ class IPairList(ABC): """ @abstractmethod - def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: """ Filters and sorts pairlist and returns the whitelist again. Called on each bot iteration - please use internal caching if necessary @@ -97,5 +97,6 @@ class IPairList(ABC): if pair not in sanitized_whitelist: sanitized_whitelist.append(pair) + sanitized_whitelist = self._verify_blacklist(sanitized_whitelist) # We need to remove pairs that are unknown return sanitized_whitelist diff --git a/freqtrade/pairlist/LowPriceFilter.py b/freqtrade/pairlist/LowPriceFilter.py index 9552b56b8..4e1ba52c8 100644 --- a/freqtrade/pairlist/LowPriceFilter.py +++ b/freqtrade/pairlist/LowPriceFilter.py @@ -46,7 +46,7 @@ class LowPriceFilter(IPairList): return False return True - def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: """ Filters and sorts pairlist and returns the whitelist again. @@ -57,7 +57,9 @@ class LowPriceFilter(IPairList): """ # Copy list since we're modifying this list for p in deepcopy(pairlist): - ticker = [t for t in tickers if t['symbol'] == p][0] + ticker = tickers.get(p) + if not ticker: + pairlist.remove(p) # Filter out assets which would not allow setting a stoploss if self._low_price_percent and not self._validate_ticker_lowprice(ticker): diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index b18237b00..d7b2c96ae 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -44,7 +44,7 @@ class PrecisionFilter(IPairList): return False return True - def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: """ Filters and sorts pairlists and assigns and returns them again. """ @@ -53,9 +53,9 @@ class PrecisionFilter(IPairList): stoploss = 1 - abs(self._config.get('stoploss')) # Copy list since we're modifying this list for p in deepcopy(pairlist): - ticker = [t for t in tickers if t['symbol'] == p][0] + ticker = tickers.get(p) # Filter out assets which would not allow setting a stoploss - if (stoploss and not self._validate_precision_filter(ticker, stoploss)): + if not ticker or (stoploss and not self._validate_precision_filter(ticker, stoploss)): pairlist.remove(p) continue diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index 83450c4bc..a7b71875c 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -33,7 +33,7 @@ class StaticPairList(IPairList): """ return f"{self.name}" - def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: """ Filters and sorts pairlist and returns the whitelist again. Called on each bot iteration - please use internal caching if necessary diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 610986a72..e6ff69daf 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -5,10 +5,9 @@ Provides lists as configured in config.json """ import logging +from datetime import datetime from typing import Dict, List -from cachetools import TTLCache, cached - from freqtrade import OperationalException from freqtrade.pairlist.IPairList import IPairList @@ -28,6 +27,7 @@ class VolumePairList(IPairList): 'for "pairlist.config.number_assets"') self._number_pairs = self._pairlistconfig['number_assets'] self._sort_key = self._pairlistconfig.get('sort_key', 'quoteVolume') + self._ttl = self._pairlistconfig.get('ttl', 1800) if not self._exchange.exchange_has('fetchTickers'): raise OperationalException( @@ -37,6 +37,7 @@ class VolumePairList(IPairList): if not self._validate_keys(self._sort_key): raise OperationalException( f'key {self._sort_key} not in {SORT_VALUES}') + self._last_refresh = 0 @property def needstickers(self) -> bool: @@ -56,7 +57,7 @@ class VolumePairList(IPairList): """ return f"{self.name} - top {self._pairlistconfig['number_assets']} volume pairs." - def filter_pairlist(self, pairlist: List[str], tickers: List[Dict]) -> List[str]: + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: """ Filters and sorts pairlist and returns the whitelist again. Called on each bot iteration - please use internal caching if necessary @@ -65,10 +66,17 @@ class VolumePairList(IPairList): :return: new whitelist """ # Generate dynamic whitelist - return self._gen_pair_whitelist(self._config['stake_currency'], self._sort_key) + if self._last_refresh + self._ttl < datetime.now().timestamp(): + self._last_refresh = datetime.now().timestamp() + return self._gen_pair_whitelist(pairlist, + tickers, + self._config['stake_currency'], + self._sort_key, + ) + else: + return pairlist - @cached(TTLCache(maxsize=1, ttl=1800)) - def _gen_pair_whitelist(self, base_currency: str, key: str) -> List[str]: + def _gen_pair_whitelist(self, pairlist, tickers, base_currency: str, key: str) -> List[str]: """ Updates the whitelist with with a dynamically generated list :param base_currency: base currency as str @@ -77,7 +85,6 @@ class VolumePairList(IPairList): :return: List of pairs """ - tickers = self._exchange.get_tickers() # check length so that we make sure that '/' is actually in the string tickers = [v for k, v in tickers.items() if (len(k.split('/')) == 2 and k.split('/')[1] == base_currency diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index e6b2b6103..03451e725 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -64,7 +64,7 @@ class PairListManager(): pairlist = self._whitelist.copy() # tickers should be cached to avoid calling the exchange on each call. - tickers: List[Dict] = [] + tickers: Dict = {} if self._tickers_needed: tickers = self._exchange.get_tickers() diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index ffebaf60f..5ad7fdf5a 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -16,7 +16,6 @@ from tests.conftest import get_patched_freqtradebot, log_has_re @pytest.fixture(scope="function") def whitelist_conf(default_conf): default_conf['stake_currency'] = 'BTC' - default_conf['exchange']['name'] = 'binance' default_conf['exchange']['pair_whitelist'] = [ 'ETH/BTC', 'TKN/BTC', @@ -137,31 +136,37 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): @pytest.mark.parametrize("filters,base_currency,key,whitelist_result", [ - ({}, "BTC", "quoteVolume", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC', 'FUEL/BTC']), - ({}, "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'HOT/BTC', 'FUEL/BTC']), - ({}, "USDT", "quoteVolume", ['ETH/USDT']), - ({}, "ETH", "quoteVolume", []), - ({"PrecisionFilter": {}}, "BTC", "quoteVolume", ["LTC/BTC", "ETH/BTC", "TKN/BTC", 'FUEL/BTC']), - ({"PrecisionFilter": {}}, "BTC", "bidVolume", ["LTC/BTC", "TKN/BTC", "ETH/BTC", 'FUEL/BTC']), - ({"LowPriceFilter": {"low_price_percent": 0.03}}, "BTC", - "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'FUEL/BTC']), + ([], "BTC", "quoteVolume", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC', 'FUEL/BTC']), + ([], "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'HOT/BTC', 'FUEL/BTC']), + ([], "USDT", "quoteVolume", ['ETH/USDT']), + ([], "ETH", "quoteVolume", []), + ([{"method": "PrecisionFilter"}], "BTC", + "quoteVolume", ["LTC/BTC", "ETH/BTC", "TKN/BTC", 'FUEL/BTC']), + ([{"method": "PrecisionFilter"}], + "BTC", "bidVolume", ["LTC/BTC", "TKN/BTC", "ETH/BTC", 'FUEL/BTC']), + ([{"method": "LowPriceFilter", "config": {"low_price_percent": 0.03}}], + "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'FUEL/BTC']), # Hot is removed by precision_filter, Fuel by low_price_filter. - ({"PrecisionFilter": {}, "LowPriceFilter": {"low_price_percent": 0.02}}, - "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC']), -]) + ([{"method": "PrecisionFilter"}, + {"method": "LowPriceFilter", "config": {"low_price_percent": 0.02}} + ], "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC'])]) def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, filters, base_currency, key, whitelist_result, caplog) -> None: - whitelist_conf['pairlist']['method'] = 'VolumePairList' - whitelist_conf['pairlist']['filters'] = filters + whitelist_conf['pairlists'].extend(filters) mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) - mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=shitcoinmarkets)) - mocker.patch('freqtrade.exchange.Exchange.get_tickers', tickers) + + mocker.patch.multiple('freqtrade.exchange.Exchange', + get_tickers=tickers, + markets=PropertyMock(return_value=shitcoinmarkets), + ) freqtrade.config['stake_currency'] = base_currency - whitelist = freqtrade.pairlists._gen_pair_whitelist(base_currency=base_currency, key=key) + freqtrade.pairlists.refresh_pairlist() + whitelist = freqtrade.pairlists.whitelist + assert sorted(whitelist) == sorted(whitelist_result) if 'PrecisionFilter' in filters: assert log_has_re(r'^Removed .* from whitelist, because stop price .* ' @@ -172,11 +177,14 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t def test_gen_pair_whitelist_not_supported(mocker, default_conf, tickers) -> None: - default_conf['pairlist'] = {'method': 'VolumePairList', - 'config': {'number_assets': 10} - } - mocker.patch('freqtrade.exchange.Exchange.get_tickers', tickers) - mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=False)) + default_conf['pairlists'] = [{'method': 'VolumePairList', + 'config': {'number_assets': 10} + }] + + mocker.patch.multiple('freqtrade.exchange.Exchange', + get_tickers=tickers, + exchange_has=MagicMock(return_value=False), + ) with pytest.raises(OperationalException): get_patched_freqtradebot(mocker, default_conf) @@ -202,18 +210,22 @@ def test_pairlist_class(mocker, whitelist_conf, markets, pairlist): (['ETH/BTC', 'TKN/BTC'], ""), (['ETH/BTC', 'TKN/BTC', 'TRX/ETH'], "is not compatible with exchange"), # TRX/ETH wrong stake (['ETH/BTC', 'TKN/BTC', 'BCH/BTC'], "is not compatible with exchange"), # BCH/BTC not available - (['ETH/BTC', 'TKN/BTC', 'BLK/BTC'], "is not compatible with exchange"), # BLK/BTC in blacklist + (['ETH/BTC', 'TKN/BTC', 'BLK/BTC'], "in your blacklist. Removing "), # BLK/BTC in blacklist (['ETH/BTC', 'TKN/BTC', 'BTT/BTC'], "Market is not active") # BTT/BTC is inactive ]) def test__whitelist_for_active_markets(mocker, whitelist_conf, markets, pairlist, whitelist, caplog, - log_message): - whitelist_conf['pairlist']['method'] = pairlist - mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) - mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) + log_message, tickers): + whitelist_conf['pairlists'][0]['method'] = pairlist + mocker.patch.multiple('freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=markets), + exchange_has=MagicMock(return_value=True), + get_tickers=tickers + ) freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) caplog.clear() - new_whitelist = freqtrade.pairlists._whitelist_for_active_markets(whitelist) + # Assign starting whitelist + new_whitelist = freqtrade.pairlists._pairlists[0]._whitelist_for_active_markets(whitelist) assert set(new_whitelist) == set(['ETH/BTC', 'TKN/BTC']) assert log_message in caplog.text From c3b4a4dde1e2421bbd3db783b463ab6b1e9fbee9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 13:59:19 +0100 Subject: [PATCH 0916/3421] Update sample configurations --- config.json.example | 5 ++++- config_binance.json.example | 5 +++++ config_full.json.example | 23 ++++++++++++++--------- config_kraken.json.example | 5 +++++ 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/config.json.example b/config.json.example index 9a6dafd04..a2add358f 100644 --- a/config.json.example +++ b/config.json.example @@ -52,6 +52,9 @@ "DOGE/BTC" ] }, + "pairlists": [ + {"method": "StaticPairList"} + ], "edge": { "enabled": false, "process_throttle_secs": 3600, @@ -68,7 +71,7 @@ "remove_pumps": false }, "telegram": { - "enabled": true, + "enabled": false, "token": "your_telegram_token", "chat_id": "your_telegram_chat_id" }, diff --git a/config_binance.json.example b/config_binance.json.example index 58817a78e..aa36ed035 100644 --- a/config_binance.json.example +++ b/config_binance.json.example @@ -54,6 +54,11 @@ "BNB/BTC" ] }, + "pairlists": [ + { + "method": "StaticPairList" + } + ], "edge": { "enabled": false, "process_throttle_secs": 3600, diff --git a/config_full.json.example b/config_full.json.example index 9cec8fcb8..2bc2cde9e 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -50,17 +50,22 @@ "buy": "gtc", "sell": "gtc" }, - "pairlist": { - "method": "VolumePairList", - "config": { - "number_assets": 20, - "sort_key": "quoteVolume", + "pairlists": [ + {"method": "StaticPairList"}, + { + "method": "VolumePairList", + "config": { + "number_assets": 20, + "sort_key": "quoteVolume" + } }, - "filters":{ - "PrecisionFilter": {}, - "LowPriceFilter": {"low_price_percent": 0.01} + {"method": "PrecisionFilter"}, + {"method": "LowPriceFilter", + "config": { + "low_price_percent": 0.01 + } } - }, + ], "exchange": { "name": "bittrex", "sandbox": false, diff --git a/config_kraken.json.example b/config_kraken.json.example index 5a36941d8..9ca2ca065 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -46,6 +46,11 @@ ] }, + "pairlists": [ + { + "method": "StaticPairList" + } + ], "edge": { "enabled": false, "process_throttle_secs": 3600, From 37985310d5a748302ec0e4d974f66b7efbaddab6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 13:59:35 +0100 Subject: [PATCH 0917/3421] remove cachetools dependency --- requirements-common.txt | 1 - setup.py | 1 - 2 files changed, 2 deletions(-) diff --git a/requirements-common.txt b/requirements-common.txt index 64a43ee62..4793d25f6 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -4,7 +4,6 @@ ccxt==1.18.1346 SQLAlchemy==1.3.10 python-telegram-bot==12.2.0 arrow==0.15.2 -cachetools==3.1.1 requests==2.22.0 urllib3==1.25.6 wrapt==1.11.2 diff --git a/setup.py b/setup.py index 50b8eee9c..781a5d138 100644 --- a/setup.py +++ b/setup.py @@ -66,7 +66,6 @@ setup(name='freqtrade', 'SQLAlchemy', 'python-telegram-bot', 'arrow', - 'cachetools', 'requests', 'urllib3', 'wrapt', From c74d76627546fd2ea84149abc629bde8161e7414 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 14:00:32 +0100 Subject: [PATCH 0918/3421] move from name to name_list --- freqtrade/pairlist/VolumePairList.py | 2 +- freqtrade/pairlist/pairlistmanager.py | 13 ++++++++++--- freqtrade/rpc/rpc.py | 4 ++-- tests/pairlist/test_pairlist.py | 2 +- tests/rpc/test_rpc.py | 17 ++++++++++------- tests/rpc/test_rpc_apiserver.py | 6 +++--- 6 files changed, 27 insertions(+), 17 deletions(-) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index e6ff69daf..902f7abd4 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -67,7 +67,7 @@ class VolumePairList(IPairList): """ # Generate dynamic whitelist if self._last_refresh + self._ttl < datetime.now().timestamp(): - self._last_refresh = datetime.now().timestamp() + self._last_refresh = int(datetime.now().timestamp()) return self._gen_pair_whitelist(pairlist, tickers, self._config['stake_currency'], diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 03451e725..09e024497 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -7,6 +7,7 @@ Provides lists as configured in config.json import logging from typing import Dict, List +from freqtrade import OperationalException from freqtrade.pairlist.IPairList import IPairList from freqtrade.resolvers import PairListResolver @@ -22,12 +23,17 @@ class PairListManager(): self._blacklist = self._config['exchange'].get('pair_blacklist', []) self._pairlists: List[IPairList] = [] self._tickers_needed = False - for pl in self._config.get('pairlists', [{'method': "StaticPairList"}]): + pairlists = self._config.get('pairlists', None) + if not pairlists: + pairlists = [{'method': "StaticPairList"}] + for pl in pairlists: pairl = PairListResolver(pl.get('method'), exchange, self, config, pl.get('config')).pairlist self._tickers_needed = pairl.needstickers or self._tickers_needed self._pairlists.append(pairl) + if not self._pairlists: + raise OperationalException("No Pairlist defined!!") @property def whitelist(self) -> List[str]: @@ -45,10 +51,11 @@ class PairListManager(): return self._blacklist @property - def name(self) -> str: + def name_list(self) -> List[str]: """ + Get list of loaded pairlists names """ - return str([p.name for p in self._pairlists]) + return [p.name for p in self._pairlists] def short_desc(self) -> List[Dict]: """ diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index f994ac006..2de73ac25 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -469,7 +469,7 @@ class RPC: def _rpc_whitelist(self) -> Dict: """ Returns the currently active whitelist""" - res = {'method': self._freqtrade.pairlists.name, + res = {'method': self._freqtrade.pairlists.name_list, 'length': len(self._freqtrade.active_pair_whitelist), 'whitelist': self._freqtrade.active_pair_whitelist } @@ -484,7 +484,7 @@ class RPC: and pair not in self._freqtrade.pairlists.blacklist): self._freqtrade.pairlists.blacklist.append(pair) - res = {'method': self._freqtrade.pairlists.name, + res = {'method': self._freqtrade.pairlists.name_list, 'length': len(self._freqtrade.pairlists.blacklist), 'blacklist': self._freqtrade.pairlists.blacklist, } diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 5ad7fdf5a..bca3f4aea 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -199,7 +199,7 @@ def test_pairlist_class(mocker, whitelist_conf, markets, pairlist): ) freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) - assert freqtrade.pairlists.name == str([pairlist]) + assert freqtrade.pairlists.name_list == [pairlist] assert pairlist in str(freqtrade.pairlists.short_desc()) assert isinstance(freqtrade.pairlists.whitelist, list) assert isinstance(freqtrade.pairlists.blacklist, list) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index df2261c1f..8747fe6ff 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -719,21 +719,23 @@ def test_rpc_whitelist(mocker, default_conf) -> None: freqtradebot = get_patched_freqtradebot(mocker, default_conf) rpc = RPC(freqtradebot) ret = rpc._rpc_whitelist() - assert ret['method'] == 'StaticPairList' + assert len(ret['method']) == 1 + assert 'StaticPairList' in ret['method'] assert ret['whitelist'] == default_conf['exchange']['pair_whitelist'] def test_rpc_whitelist_dynamic(mocker, default_conf) -> None: - default_conf['pairlist'] = {'method': 'VolumePairList', - 'config': {'number_assets': 4} - } + default_conf['pairlists'] = [{'method': 'VolumePairList', + 'config': {'number_assets': 4} + }] mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) freqtradebot = get_patched_freqtradebot(mocker, default_conf) rpc = RPC(freqtradebot) ret = rpc._rpc_whitelist() - assert ret['method'] == 'VolumePairList' + assert len(ret['method']) == 1 + assert 'VolumePairList' in ret['method'] assert ret['length'] == 4 assert ret['whitelist'] == default_conf['exchange']['pair_whitelist'] @@ -744,13 +746,14 @@ def test_rpc_blacklist(mocker, default_conf) -> None: freqtradebot = get_patched_freqtradebot(mocker, default_conf) rpc = RPC(freqtradebot) ret = rpc._rpc_blacklist(None) - assert ret['method'] == 'StaticPairList' + assert len(ret['method']) == 1 + assert 'StaticPairList' in ret['method'] assert len(ret['blacklist']) == 2 assert ret['blacklist'] == default_conf['exchange']['pair_blacklist'] assert ret['blacklist'] == ['DOGE/BTC', 'HOT/BTC'] ret = rpc._rpc_blacklist(["ETH/BTC"]) - assert ret['method'] == 'StaticPairList' + assert 'StaticPairList' in ret['method'] assert len(ret['blacklist']) == 3 assert ret['blacklist'] == default_conf['exchange']['pair_blacklist'] assert ret['blacklist'] == ['DOGE/BTC', 'HOT/BTC', 'ETH/BTC'] diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index b572a0514..aa5054314 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -456,7 +456,7 @@ def test_api_blacklist(botclient, mocker): assert_response(rc) assert rc.json == {"blacklist": ["DOGE/BTC", "HOT/BTC"], "length": 2, - "method": "StaticPairList"} + "method": ["StaticPairList"]} # Add ETH/BTC to blacklist rc = client_post(client, f"{BASE_URI}/blacklist", @@ -464,7 +464,7 @@ def test_api_blacklist(botclient, mocker): assert_response(rc) assert rc.json == {"blacklist": ["DOGE/BTC", "HOT/BTC", "ETH/BTC"], "length": 3, - "method": "StaticPairList"} + "method": ["StaticPairList"]} def test_api_whitelist(botclient): @@ -474,7 +474,7 @@ def test_api_whitelist(botclient): assert_response(rc) assert rc.json == {"whitelist": ['ETH/BTC', 'LTC/BTC', 'XRP/BTC', 'NEO/BTC'], "length": 4, - "method": "StaticPairList"} + "method": ["StaticPairList"]} def test_api_forcebuy(botclient, mocker, fee): From 25cb935eeedce1e19afc2383953301b6fe79ab6e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 14:15:47 +0100 Subject: [PATCH 0919/3421] Some more adjustments for new pairlist --- freqtrade/configuration/config_validation.py | 7 ++++--- freqtrade/configuration/configuration.py | 3 +++ freqtrade/configuration/deprecated_settings.py | 11 ++++++++++- tests/conftest.py | 3 +++ tests/rpc/test_rpc_telegram.py | 14 +++++++------- tests/test_configuration.py | 8 +++++--- 6 files changed, 32 insertions(+), 14 deletions(-) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 93d93263f..21086c913 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -121,6 +121,7 @@ def _validate_whitelist(conf: Dict[str, Any]) -> None: if conf.get('runmode', RunMode.OTHER) in [RunMode.OTHER, RunMode.PLOT]: return - if (conf.get('pairlist', {}).get('method', 'StaticPairList') == 'StaticPairList' - and not conf.get('exchange', {}).get('pair_whitelist')): - raise OperationalException("StaticPairList requires pair_whitelist to be set.") + for pl in conf.get('pairlists', [{'method': 'StaticPairList'}]): + if (pl.get('method') == 'StaticPairList' + and not conf.get('exchange', {}).get('pair_whitelist')): + raise OperationalException("StaticPairList requires pair_whitelist to be set.") diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index be1c7ab4e..b8995edf9 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -81,6 +81,9 @@ class Configuration: if 'ask_strategy' not in config: config['ask_strategy'] = {} + if 'pairlists' not in config: + config['pairlists'] = [] + # validate configuration before returning logger.info('Validating configuration ...') validate_config_schema(config) diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index 8471028aa..3aec85ae2 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -58,9 +58,18 @@ def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None: process_deprecated_setting(config, 'ask_strategy', 'ignore_roi_if_buy_signal', 'experimental', 'ignore_roi_if_buy_signal') + if config.get('pairlist', {}).get("method") == 'VolumePairList': + logger.warning( + "DEPRECATED: " + f"Using VolumePairList in pairlist is deprecated and must be moved to pairlists. " + "Please refer to the docs on configuration details") + config['pairlists'].append({'method': 'VolumePairList', + 'config': config.get('pairlist', {}).get('config') + }) + if config.get('pairlist', {}).get('config', {}).get('precision_filter'): logger.warning( "DEPRECATED: " f"Using precision_filter setting is deprecated and has been replaced by" "PrecisionFilter. Please refer to the docs on configuration details") - config['pairlist'].update({'filters': {'PrecisionFilter': {}}}) + config['pairlists'].append({'method': 'PrecisionFilter'}) diff --git a/tests/conftest.py b/tests/conftest.py index d551596f0..b2c76baec 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -242,6 +242,9 @@ def default_conf(testdatadir): "HOT/BTC", ] }, + "pairlists": [ + {"method": "StaticPairList"} + ], "telegram": { "enabled": True, "token": "token", diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 766511d2d..bb9d88658 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1050,8 +1050,8 @@ def test_whitelist_static(default_conf, update, mocker) -> None: telegram._whitelist(update=update, context=MagicMock()) assert msg_mock.call_count == 1 - assert ('Using whitelist `StaticPairList` with 4 pairs\n`ETH/BTC, LTC/BTC, XRP/BTC, NEO/BTC`' - in msg_mock.call_args_list[0][0][0]) + assert ("Using whitelist `['StaticPairList']` with 4 pairs\n" + "`ETH/BTC, LTC/BTC, XRP/BTC, NEO/BTC`" in msg_mock.call_args_list[0][0][0]) def test_whitelist_dynamic(default_conf, update, mocker) -> None: @@ -1062,17 +1062,17 @@ def test_whitelist_dynamic(default_conf, update, mocker) -> None: _send_msg=msg_mock ) mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) - default_conf['pairlist'] = {'method': 'VolumePairList', - 'config': {'number_assets': 4} - } + default_conf['pairlists'] = [{'method': 'VolumePairList', + 'config': {'number_assets': 4} + }] freqtradebot = get_patched_freqtradebot(mocker, default_conf) telegram = Telegram(freqtradebot) telegram._whitelist(update=update, context=MagicMock()) assert msg_mock.call_count == 1 - assert ('Using whitelist `VolumePairList` with 4 pairs\n`ETH/BTC, LTC/BTC, XRP/BTC, NEO/BTC`' - in msg_mock.call_args_list[0][0][0]) + assert ("Using whitelist `['VolumePairList']` with 4 pairs\n" + "`ETH/BTC, LTC/BTC, XRP/BTC, NEO/BTC`" in msg_mock.call_args_list[0][0][0]) def test_blacklist_static(default_conf, update, mocker) -> None: diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 258088925..6cfae01c6 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -743,9 +743,9 @@ def test_validate_whitelist(default_conf): conf = deepcopy(default_conf) - conf.update({"pairlist": { + conf.update({"pairlists": [{ "method": "VolumePairList", - }}) + }]}) # Dynamic whitelist should not care about pair_whitelist validate_config_consistency(conf) del conf['exchange']['pair_whitelist'] @@ -963,14 +963,16 @@ def test_process_temporary_deprecated_settings(mocker, default_conf, setting, ca assert default_conf[setting[0]][setting[1]] == setting[5] -def test_process_deprecated_setting_precision_filter(mocker, default_conf, caplog): +def test_process_deprecated_setting_pairlists(mocker, default_conf, caplog): patched_configuration_load_config_file(mocker, default_conf) default_conf.update({'pairlist': { + 'method': 'VolumePairList', 'config': {'precision_filter': True} }}) process_temporary_deprecated_settings(default_conf) assert log_has_re(r'DEPRECATED.*precision_filter.*', caplog) + assert log_has_re(r'DEPRECATED.*in pairlist is deprecated and must be moved*', caplog) def test_check_conflicting_settings(mocker, default_conf, caplog): From ed0c7a6aaf80c4c92df7480577bcbe6d10a66d02 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 14:16:11 +0100 Subject: [PATCH 0920/3421] Update configschema to fit new pairlists approach --- freqtrade/constants.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 5fdd45916..c98c32d4c 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -20,7 +20,7 @@ REQUIRED_ORDERTIF = ['buy', 'sell'] REQUIRED_ORDERTYPES = ['buy', 'sell', 'stoploss', 'stoploss_on_exchange'] ORDERTYPE_POSSIBILITIES = ['limit', 'market'] ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc'] -AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList'] +AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'PrecisionFilter', 'LowPriceFilter'] DRY_RUN_WALLET = 999.9 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons @@ -151,13 +151,16 @@ CONF_SCHEMA = { 'block_bad_exchanges': {'type': 'boolean'} } }, - 'pairlist': { - 'type': 'object', - 'properties': { - 'method': {'type': 'string', 'enum': AVAILABLE_PAIRLISTS}, - 'config': {'type': 'object'} - }, - 'required': ['method'] + 'pairlists': { + 'type': 'array', + 'items': { + 'type': 'object', + 'properties': { + 'method': {'type': 'string', 'enum': AVAILABLE_PAIRLISTS}, + 'config': {'type': 'object'} + }, + 'required': ['method'], + } }, 'telegram': { 'type': 'object', From 02b9da8aba530bc0f9115401f634108d2bdb947f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 14:39:28 +0100 Subject: [PATCH 0921/3421] Update documentation --- config_full.json.example | 3 ++- docs/configuration.md | 46 ++++++++++++++++++++++++---------------- docs/developer.md | 29 ++++++++++++++----------- 3 files changed, 47 insertions(+), 31 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index 2bc2cde9e..ba53f47d6 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -56,7 +56,8 @@ "method": "VolumePairList", "config": { "number_assets": 20, - "sort_key": "quoteVolume" + "sort_key": "quoteVolume", + "ttl": 1800 } }, {"method": "PrecisionFilter"}, diff --git a/docs/configuration.md b/docs/configuration.md index 39fb4b8ac..8f62708d1 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -82,8 +82,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `exchange.markets_refresh_interval` | 60 | The interval in minutes in which markets are reloaded. | `edge` | false | Please refer to [edge configuration document](edge.md) for detailed explanation. | `experimental.block_bad_exchanges` | true | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now. -| `pairlist.method` | StaticPairList | Use static or dynamic volume-based pairlist. [More information below](#dynamic-pairlists). -| `pairlist.config` | None | Additional configuration for dynamic pairlists. [More information below](#dynamic-pairlists). +| `pairlists` | StaticPairList | Define one or more pairlists to be used. [More information below](#dynamic-pairlists). | `telegram.enabled` | true | **Required.** Enable or not the usage of Telegram. | `telegram.token` | token | Your Telegram bot token. Only required if `telegram.enabled` is `true`. ***Keep it in secrete, do not disclose publicly.*** | `telegram.chat_id` | chat_id | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. ***Keep it in secrete, do not disclose publicly.*** @@ -382,41 +381,50 @@ The valid values are: Pairlists define the list of pairs that the bot should trade. There are [`StaticPairList`](#static-pair-list) and dynamic Whitelists available. -In addition to pairlists, [pairlist filters](#available-pairlist-filters) can be configured, which remove certain assets. -These Filters work with all Pairlist providers and are applied in the sequence they occur. +[`PrecisionFilter`](#precision-filter) and [`LowPriceFilter`](#low-price-pair-filter) act as filters, removing low-value pairs. + +All pairlists can be chained, and a combination of all pairlists will become your new whitelist. + +Inactive markets and blacklisted pairs are always removed from the resulting `pair_whitelist`. ### Available Pairlists * [`StaticPairList`](#static-pair-list) (default, if not configured differently) * [`VolumePairList`](#volume-pair-list) +* [`PrecisionFilter`](#precision-filter) +* [`LowPriceFilter`](#low-price-pair-filter) #### Static Pair List -By default, the `StaticPairList` method is used, which uses a statically defined pair whitelist from the configuration. Inactive markets and blacklisted pairs are removed from the pair_whitelist. +By default, the `StaticPairList` method is used, which uses a statically defined pair whitelist from the configuration. It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklist`. +```json +"pairlists": [ + {"method": "StaticPairList"} + ], +``` + #### Volume Pair List `VolumePairList` selects `number_assets` top pairs based on `sort_key`, which can be one of `askVolume`, `bidVolume` and `quoteVolume` and defaults to `quoteVolume`. `VolumePairList` does not consider `pair_whitelist`, but selects the top assets from all available markets (with matching stake-currency) on the exchange. -Pairs in `pair_blacklist` are not considered for `VolumePairList`, even if all other filters would match. + +`ttl` allows setting the period (in seconds), at which the pairlist will be refreshed. Defaults to 1800s (30 minutes). ```json -"pairlist": { +"pairlists": [{ "method": "VolumePairList", "config": { "number_assets": 20, "sort_key": "quoteVolume", - }, + "ttl": 1800, + } +], ``` -### Available Pairlist Filters - -* [`PrecisionFilter`](#precision-filter) -* [`LowPriceFilter`](#low-price-pair-filter) - #### Precision Filter Filters low-value coins which would not allow setting a stoploss. @@ -440,17 +448,19 @@ The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, "pair_whitelist": [], "pair_blacklist": ["BNB/BTC"] }, -"pairlist": { +"pairlists": [ + { "method": "VolumePairList", "config": { "number_assets": 20, "sort_key": "quoteVolume", }, - "filters":{ - "PrecisionFilter": {}, - "LowPriceFilter": {"low_price_percent": 0.01} - } }, + {"method": "PrecisionFilter"}, + {"method": "LowPriceFilter", + "config": {"low_price_percent": 0.01} + } + }], ``` ## Switch to Dry-run mode diff --git a/docs/developer.md b/docs/developer.md index 346578c2e..e63d970e2 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -46,15 +46,18 @@ def test_method_to_test(caplog): The fastest and easiest way to start up is to use docker-compose.develop which gives developers the ability to start the bot up with all the required dependencies, *without* needing to install any freqtrade specific dependencies on your local machine. #### Install + * [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) * [docker](https://docs.docker.com/install/) * [docker-compose](https://docs.docker.com/compose/install/) #### Starting the bot ##### Use the develop dockerfile + ``` bash rm docker-compose.yml && mv docker-compose.develop.yml docker-compose.yml ``` + #### Docker Compose ##### Starting @@ -62,9 +65,11 @@ rm docker-compose.yml && mv docker-compose.develop.yml docker-compose.yml ``` bash docker-compose up ``` + ![Docker compose up](https://user-images.githubusercontent.com/419355/65456322-47f63a80-de06-11e9-90c6-3c74d1bad0b8.png) ##### Rebuilding + ``` bash docker-compose build ``` @@ -77,8 +82,8 @@ that can be effected by `docker-compose up` or `docker-compose run freqtrade_dev ``` bash docker-compose exec freqtrade_develop /bin/bash ``` -![image](https://user-images.githubusercontent.com/419355/65456522-ba671a80-de06-11e9-9598-df9ca0d8dcac.png) +![image](https://user-images.githubusercontent.com/419355/65456522-ba671a80-de06-11e9-9598-df9ca0d8dcac.png) ## Modules @@ -95,7 +100,7 @@ This is a simple provider, which however serves as a good example on how to star Next, modify the classname of the provider (ideally align this with the Filename). -The base-class provides the an instance of the bot (`self._freqtrade`), as well as the configuration (`self._config`), and initiates both `_blacklist` and `_whitelist`. +The base-class provides an instance of the exchange (`self._exchange`) the pairlist manager (`self._pairlistmanager`), as well as the main configuration (`self._config`) and the pairlist dedicated configuration (`self._pairlistconfig`). ```python self._freqtrade = freqtrade @@ -104,10 +109,9 @@ The base-class provides the an instance of the bot (`self._freqtrade`), as well self._blacklist = self._config['exchange'].get('pair_blacklist', []) ``` - Now, let's step through the methods which require actions: -#### configuration +#### Pairlist configuration Configuration for PairListProvider is done in the bot configuration file in the element `"pairlist"`. This Pairlist-object may contain a `"config"` dict with additional configurations for the configured pairlist. @@ -120,29 +124,30 @@ Additional elements can be configured as needed. `VolumePairList` uses `"sort_ke Returns a description used for Telegram messages. This should contain the name of the Provider, as well as a short description containing the number of assets. Please follow the format `"PairlistName - top/bottom X pairs"`. -#### refresh_pairlist +#### filter_pairlist Override this method and run all calculations needed in this method. This is called with each iteration of the bot - so consider implementing caching for compute/network heavy calculations. -Assign the resulting whiteslist to `self._whitelist` and `self._blacklist` respectively. These will then be used to run the bot in this iteration. Pairs with open trades will be added to the whitelist to have the sell-methods run correctly. +It get's passed a pairlist (which can be the result of previous pairlists) as well as `tickers`, a pre-fetched version of `get_tickers()`. -Please also run `self.validate_whitelist(pairs, tickers)` (tickers is optional, but should be passed when you're using tickers anyway) and to check and remove pairs with inactive markets. This function is available in the Parent class (`StaticPairList`) and should ideally not be overwritten. +It must return the resulting pairlist (which may then be passed into the next pairlist filter). + +Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filters. Use this if you limit your result to a certain number of pairs - so the endresult is not shorter than expected. ##### sample ``` python - def refresh_pairlist(self) -> None: + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: # Generate dynamic whitelist - pairs = self._gen_pair_whitelist(self._config['stake_currency'], self._sort_key) - # Validate whitelist to only have active market pairs - self._whitelist = self.validate_whitelist(pairs)[:self._number_pairs] + pairs = self._calculate_pairlist(pairlist, tickers) + return pairs ``` #### _gen_pair_whitelist This is a simple method used by `VolumePairList` - however serves as a good example. -It implements caching (`@cached(TTLCache(maxsize=1, ttl=1800))`) as well as a configuration option to allow different (but similar) strategies to work with the same PairListProvider. +In VolumePairList, this implements different methods of sorting, does early validation so only the expected number of pairs is returned. ## Implement a new Exchange (WIP) From a01b34a004baa585cf3a9045d8aeb0374e076a83 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 14:44:39 +0100 Subject: [PATCH 0922/3421] tests --- freqtrade/pairlist/IPairList.py | 4 ++-- tests/pairlist/test_pairlist.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index 4a83bc939..fc4187856 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -73,7 +73,7 @@ class IPairList(ABC): """ return IPairList.verify_blacklist(pairlist, self._pairlistmanager.blacklist) - def _whitelist_for_active_markets(self, whitelist: List[str]) -> List[str]: + def _whitelist_for_active_markets(self, pairlist: List[str]) -> List[str]: """ Check available markets and remove pair from whitelist if necessary :param whitelist: the sorted list of pairs the user might want to trade @@ -83,7 +83,7 @@ class IPairList(ABC): markets = self._exchange.markets sanitized_whitelist: List[str] = [] - for pair in whitelist: + for pair in pairlist: # pair is not in the generated dynamic market or has the wrong stake currency if (pair not in markets or not pair.endswith(self._config['stake_currency'])): logger.warning(f"Pair {pair} is not compatible with exchange " diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index bca3f4aea..d19c18715 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -229,3 +229,31 @@ def test__whitelist_for_active_markets(mocker, whitelist_conf, markets, pairlist assert set(new_whitelist) == set(['ETH/BTC', 'TKN/BTC']) assert log_message in caplog.text + + +def test_volumepairlist_invalid_sortvalue(mocker, markets, whitelist_conf): + whitelist_conf['pairlists'][0]['config'].update({"sort_key": "asdf"}) + + mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) + with pytest.raises(OperationalException, + match=r"key asdf not in .*"): + get_patched_freqtradebot(mocker, whitelist_conf) + + +def test_volumepairlist_caching(mocker, markets, whitelist_conf, tickers): + + mocker.patch.multiple('freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=markets), + exchange_has=MagicMock(return_value=True), + get_tickers=tickers + ) + bot = get_patched_freqtradebot(mocker, whitelist_conf) + assert bot.pairlists._pairlists[0]._last_refresh == 0 + + bot.pairlists.refresh_pairlist() + + assert bot.pairlists._pairlists[0]._last_refresh != 0 + lrf = bot.pairlists._pairlists[0]._last_refresh + bot.pairlists.refresh_pairlist() + # Time should not be updated. + assert bot.pairlists._pairlists[0]._last_refresh == lrf From ae356493665270b557e93099970e78377a8b185d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 14:49:25 +0100 Subject: [PATCH 0923/3421] improve pairlistmanager errorhandling --- freqtrade/pairlist/pairlistmanager.py | 12 +++++++----- tests/pairlist/test_pairlist.py | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 09e024497..f29f89abf 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -23,17 +23,19 @@ class PairListManager(): self._blacklist = self._config['exchange'].get('pair_blacklist', []) self._pairlists: List[IPairList] = [] self._tickers_needed = False - pairlists = self._config.get('pairlists', None) - if not pairlists: - pairlists = [{'method': "StaticPairList"}] - for pl in pairlists: + + for pl in self._config.get('pairlists', None): + if 'method' not in pl: + logger.warning(f"No method in {pl}") + continue pairl = PairListResolver(pl.get('method'), exchange, self, config, pl.get('config')).pairlist self._tickers_needed = pairl.needstickers or self._tickers_needed self._pairlists.append(pairl) + if not self._pairlists: - raise OperationalException("No Pairlist defined!!") + raise OperationalException("No Pairlist defined!") @property def whitelist(self) -> List[str]: diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index d19c18715..017f78561 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -257,3 +257,19 @@ def test_volumepairlist_caching(mocker, markets, whitelist_conf, tickers): bot.pairlists.refresh_pairlist() # Time should not be updated. assert bot.pairlists._pairlists[0]._last_refresh == lrf + + +def test_pairlistmanager_no_pairlist(mocker, markets, whitelist_conf, caplog): + del whitelist_conf['pairlists'][0]['method'] + mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) + with pytest.raises(OperationalException, + match=r"No Pairlist defined!"): + get_patched_freqtradebot(mocker, whitelist_conf) + assert log_has_re("No method in .*", caplog) + + whitelist_conf['pairlists'] = [] + + with pytest.raises(OperationalException, + match=r"No Pairlist defined!"): + get_patched_freqtradebot(mocker, whitelist_conf) + From 7ff61f12e99ac67fa61f33e87e06d76e6d303008 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 15:04:04 +0100 Subject: [PATCH 0924/3421] pass pairlist position into the pairlists --- freqtrade/pairlist/IPairList.py | 11 ++++++++++- freqtrade/pairlist/LowPriceFilter.py | 5 +++-- freqtrade/pairlist/StaticPairList.py | 3 --- freqtrade/pairlist/VolumePairList.py | 22 +++++++++++++++------- freqtrade/pairlist/pairlistmanager.py | 11 +++++++---- freqtrade/resolvers/pairlist_resolver.py | 5 +++-- tests/pairlist/test_pairlist.py | 2 +- 7 files changed, 39 insertions(+), 20 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index fc4187856..231755cb0 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -16,11 +16,20 @@ logger = logging.getLogger(__name__) class IPairList(ABC): - def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict) -> None: + def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict, + pairlist_pos: int) -> None: + """ + :param exchange: Exchange instance + :param pairlistmanager: Instanciating Pairlist manager + :param config: Global bot configuration + :param pairlistconfig: Configuration for this pairlist - can be empty. + :param pairlist_pos: Position of the filter in the pairlist-filter-list + """ self._exchange = exchange self._pairlistmanager = pairlistmanager self._config = config self._pairlistconfig = pairlistconfig + self._pairlist_pos = pairlist_pos @property def name(self) -> str: diff --git a/freqtrade/pairlist/LowPriceFilter.py b/freqtrade/pairlist/LowPriceFilter.py index 4e1ba52c8..83b6a85e6 100644 --- a/freqtrade/pairlist/LowPriceFilter.py +++ b/freqtrade/pairlist/LowPriceFilter.py @@ -9,8 +9,9 @@ logger = logging.getLogger(__name__) class LowPriceFilter(IPairList): - def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict) -> None: - super().__init__(exchange, pairlistmanager, config, pairlistconfig) + def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict, + pairlist_pos: int) -> None: + super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) self._low_price_percent = pairlistconfig.get('low_price_percent', 0) diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index a7b71875c..0050fbd5c 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -14,9 +14,6 @@ logger = logging.getLogger(__name__) class StaticPairList(IPairList): - def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict) -> None: - super().__init__(exchange, pairlistmanager, config, pairlistconfig) - @property def needstickers(self) -> bool: """ diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 902f7abd4..708c8d7c2 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -18,8 +18,9 @@ SORT_VALUES = ['askVolume', 'bidVolume', 'quoteVolume'] class VolumePairList(IPairList): - def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict) -> None: - super().__init__(exchange, pairlistmanager, config, pairlistconfig) + def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict, + pairlist_pos: int) -> None: + super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) if 'number_assets' not in self._pairlistconfig: raise OperationalException( @@ -85,11 +86,18 @@ class VolumePairList(IPairList): :return: List of pairs """ - # check length so that we make sure that '/' is actually in the string - tickers = [v for k, v in tickers.items() - if (len(k.split('/')) == 2 and k.split('/')[1] == base_currency - and v[key] is not None)] - sorted_tickers = sorted(tickers, reverse=True, key=lambda t: t[key]) + if self._pairlist_pos == 0: + # If VolumePairList is the first in the list, use fresh pairlist + # check length so that we make sure that '/' is actually in the string + filtered_tickers = [v for k, v in tickers.items() + if (len(k.split('/')) == 2 and k.split('/')[1] == base_currency + and v[key] is not None)] + else: + # If other pairlist is in front, use the incomming pairlist. + filtered_tickers = [v for k, v in tickers.items() if k in pairlist] + + sorted_tickers = sorted(filtered_tickers, reverse=True, key=lambda t: t[key]) + # Validate whitelist to only have active market pairs pairs = self._whitelist_for_active_markets([s['symbol'] for s in sorted_tickers]) pairs = self._verify_blacklist(pairs) diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index f29f89abf..309ada094 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -23,14 +23,17 @@ class PairListManager(): self._blacklist = self._config['exchange'].get('pair_blacklist', []) self._pairlists: List[IPairList] = [] self._tickers_needed = False - for pl in self._config.get('pairlists', None): if 'method' not in pl: logger.warning(f"No method in {pl}") continue pairl = PairListResolver(pl.get('method'), - exchange, self, config, - pl.get('config')).pairlist + exchange=exchange, + pairlistmanager=self, + config=config, + pairlistconfig=pl.get('config'), + pairlist_pos=len(self._pairlists) + ).pairlist self._tickers_needed = pairl.needstickers or self._tickers_needed self._pairlists.append(pairl) @@ -67,7 +70,7 @@ class PairListManager(): def refresh_pairlist(self) -> None: """ - Run pairlist through all pairlists. + Run pairlist through all configured pairlists. """ pairlist = self._whitelist.copy() diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index 9e051fa8f..d849f4ffb 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -21,7 +21,7 @@ class PairListResolver(IResolver): __slots__ = ['pairlist'] def __init__(self, pairlist_name: str, exchange, pairlistmanager, - config: dict, pairlistconfig) -> None: + config: dict, pairlistconfig: dict, pairlist_pos: int) -> None: """ Load the custom class from config parameter :param config: configuration dictionary or None @@ -30,7 +30,8 @@ class PairListResolver(IResolver): kwargs={'exchange': exchange, 'pairlistmanager': pairlistmanager, 'config': config, - 'pairlistconfig': pairlistconfig}) + 'pairlistconfig': pairlistconfig, + 'pairlist_pos': pairlist_pos}) def _load_pairlist( self, pairlist_name: str, config: dict, kwargs: dict) -> IPairList: diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 017f78561..c322dd8c4 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -55,7 +55,7 @@ def test_load_pairlist_noexist(mocker, markets, default_conf): with pytest.raises(OperationalException, match=r"Impossible to load Pairlist 'NonexistingPairList'. " r"This class does not exist or contains Python code errors."): - PairListResolver('NonexistingPairList', bot.exchange, plm, default_conf, {}) + PairListResolver('NonexistingPairList', bot.exchange, plm, default_conf, {}, 1) def test_refresh_market_pair_not_in_whitelist(mocker, markets, static_pl_conf): From 5caeca75096d2e2fd963bcb1645475c818864f96 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 15:23:36 +0100 Subject: [PATCH 0925/3421] Improve tests for pairlist-sequence behaviour --- docs/developer.md | 9 ++--- tests/pairlist/test_pairlist.py | 63 +++++++++++++++++++++------------ 2 files changed, 46 insertions(+), 26 deletions(-) diff --git a/docs/developer.md b/docs/developer.md index e63d970e2..c65f429e9 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -100,13 +100,14 @@ This is a simple provider, which however serves as a good example on how to star Next, modify the classname of the provider (ideally align this with the Filename). -The base-class provides an instance of the exchange (`self._exchange`) the pairlist manager (`self._pairlistmanager`), as well as the main configuration (`self._config`) and the pairlist dedicated configuration (`self._pairlistconfig`). +The base-class provides an instance of the exchange (`self._exchange`) the pairlist manager (`self._pairlistmanager`), as well as the main configuration (`self._config`), the pairlist dedicated configuration (`self._pairlistconfig`) and the absolute position within the list of pairlists. ```python - self._freqtrade = freqtrade + self._exchange = exchange + self._pairlistmanager = pairlistmanager self._config = config - self._whitelist = self._config['exchange']['pair_whitelist'] - self._blacklist = self._config['exchange'].get('pair_blacklist', []) + self._pairlistconfig = pairlistconfig + self._pairlist_pos = pairlist_pos ``` Now, let's step through the methods which require actions: diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index c322dd8c4..c40187cc9 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -135,25 +135,44 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): assert set(whitelist) == set(pairslist) -@pytest.mark.parametrize("filters,base_currency,key,whitelist_result", [ - ([], "BTC", "quoteVolume", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC', 'FUEL/BTC']), - ([], "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'HOT/BTC', 'FUEL/BTC']), - ([], "USDT", "quoteVolume", ['ETH/USDT']), - ([], "ETH", "quoteVolume", []), - ([{"method": "PrecisionFilter"}], "BTC", - "quoteVolume", ["LTC/BTC", "ETH/BTC", "TKN/BTC", 'FUEL/BTC']), - ([{"method": "PrecisionFilter"}], - "BTC", "bidVolume", ["LTC/BTC", "TKN/BTC", "ETH/BTC", 'FUEL/BTC']), - ([{"method": "LowPriceFilter", "config": {"low_price_percent": 0.03}}], - "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC', 'FUEL/BTC']), +@pytest.mark.parametrize("pairlists,base_currency,whitelist_result", [ + ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "quoteVolume"}}], + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC', 'FUEL/BTC']), + # Different sorting depending on quote or bid volume + ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "bidVolume"}}], + "BTC", ['HOT/BTC', 'FUEL/BTC', 'LTC/BTC', 'TKN/BTC', 'ETH/BTC']), + ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "quoteVolume"}}], + "USDT", ['ETH/USDT']), + # No pair for ETH ... + ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "quoteVolume"}}], + "ETH", []), + # Precisionfilter and quote volume + ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "quoteVolume"}}, + {"method": "PrecisionFilter"}], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'FUEL/BTC']), + # Precisionfilter bid + ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "bidVolume"}}, + {"method": "PrecisionFilter"}], "BTC", ['FUEL/BTC', 'LTC/BTC', 'TKN/BTC', 'ETH/BTC']), + # Lowpricefilter and VolumePairList + ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "quoteVolume"}}, + {"method": "LowPriceFilter", "config": {"low_price_percent": 0.03}}], + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'FUEL/BTC']), # Hot is removed by precision_filter, Fuel by low_price_filter. - ([{"method": "PrecisionFilter"}, + ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "quoteVolume"}}, + {"method": "PrecisionFilter"}, {"method": "LowPriceFilter", "config": {"low_price_percent": 0.02}} - ], "BTC", "bidVolume", ['LTC/BTC', 'TKN/BTC', 'ETH/BTC'])]) + ], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC']), + # StaticPairlist Only + ([{"method": "StaticPairList"}, + ], "BTC", ['ETH/BTC', 'TKN/BTC']), + # Static Pairlist before VolumePairList - sorting changes + ([{"method": "StaticPairList"}, + {"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "bidVolume"}}, + ], "BTC", ['TKN/BTC', 'ETH/BTC']), +]) def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, - filters, base_currency, key, whitelist_result, + pairlists, base_currency, whitelist_result, caplog) -> None: - whitelist_conf['pairlists'].extend(filters) + whitelist_conf['pairlists'] = pairlists mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) @@ -167,13 +186,13 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t freqtrade.pairlists.refresh_pairlist() whitelist = freqtrade.pairlists.whitelist - assert sorted(whitelist) == sorted(whitelist_result) - if 'PrecisionFilter' in filters: - assert log_has_re(r'^Removed .* from whitelist, because stop price .* ' - r'would be <= stop limit.*', caplog) - - if 'LowPriceFilter' in filters: - assert log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) + assert whitelist == whitelist_result + for pairlist in pairlists: + if pairlist['method'] == 'PrecisionFilter': + assert log_has_re(r'^Removed .* from whitelist, because stop price .* ' + r'would be <= stop limit.*', caplog) + if pairlist['method'] == 'LowPriceFilter': + assert log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) def test_gen_pair_whitelist_not_supported(mocker, default_conf, tickers) -> None: From 0b4800835c9bfa7f08d2eac5fa228e35bdc06d9e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 15:26:30 +0100 Subject: [PATCH 0926/3421] update documentation --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 8f62708d1..a8bfae6f9 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -410,7 +410,7 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis `VolumePairList` selects `number_assets` top pairs based on `sort_key`, which can be one of `askVolume`, `bidVolume` and `quoteVolume` and defaults to `quoteVolume`. -`VolumePairList` does not consider `pair_whitelist`, but selects the top assets from all available markets (with matching stake-currency) on the exchange. +`VolumePairList` considers outputs of previous pairlists unless it's the first configured pairlist, it does not consider `pair_whitelist`, but selects the top assets from all available markets (with matching stake-currency) on the exchange. `ttl` allows setting the period (in seconds), at which the pairlist will be refreshed. Defaults to 1800s (30 minutes). From 86a5dfa62e3d72b4d37cf4589dcae68f88a5e1b2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 15:28:36 +0100 Subject: [PATCH 0927/3421] Update documentation --- docs/configuration.md | 2 +- freqtrade/configuration/config_validation.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index a8bfae6f9..86acab8d6 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -383,7 +383,7 @@ There are [`StaticPairList`](#static-pair-list) and dynamic Whitelists available [`PrecisionFilter`](#precision-filter) and [`LowPriceFilter`](#low-price-pair-filter) act as filters, removing low-value pairs. -All pairlists can be chained, and a combination of all pairlists will become your new whitelist. +All pairlists can be chained, and a combination of all pairlists will become your new whitelist. Pairlists are executed in the sequence they are configured. You should always configure either `StaticPairList` or `DynamicPairList` as starting pairlists. Inactive markets and blacklisted pairs are always removed from the resulting `pair_whitelist`. diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 21086c913..83d58c9e4 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -123,5 +123,5 @@ def _validate_whitelist(conf: Dict[str, Any]) -> None: for pl in conf.get('pairlists', [{'method': 'StaticPairList'}]): if (pl.get('method') == 'StaticPairList' - and not conf.get('exchange', {}).get('pair_whitelist')): + and not conf.get('exchange', {}).get('pair_whitelist')): raise OperationalException("StaticPairList requires pair_whitelist to be set.") From 4b15873ee151bc5a651bce0a0d39d3920f6aeb29 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 15:36:11 +0100 Subject: [PATCH 0928/3421] Simplify examples --- config_binance.json.example | 4 +--- config_kraken.json.example | 4 +--- tests/pairlist/test_pairlist.py | 1 - 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/config_binance.json.example b/config_binance.json.example index aa36ed035..7d616fe91 100644 --- a/config_binance.json.example +++ b/config_binance.json.example @@ -55,9 +55,7 @@ ] }, "pairlists": [ - { - "method": "StaticPairList" - } + {"method": "StaticPairList"} ], "edge": { "enabled": false, diff --git a/config_kraken.json.example b/config_kraken.json.example index 9ca2ca065..854aeef71 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -47,9 +47,7 @@ ] }, "pairlists": [ - { - "method": "StaticPairList" - } + {"method": "StaticPairList"} ], "edge": { "enabled": false, diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index c40187cc9..0ec6766c2 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -291,4 +291,3 @@ def test_pairlistmanager_no_pairlist(mocker, markets, whitelist_conf, caplog): with pytest.raises(OperationalException, match=r"No Pairlist defined!"): get_patched_freqtradebot(mocker, whitelist_conf) - From 12654cb810789031232fa58f25634cf000f4cb5b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 16:14:18 +0100 Subject: [PATCH 0929/3421] Add seperate exchange section in docs --- README.md | 8 +------- docs/configuration.md | 13 ++++--------- docs/data-download.md | 6 ++---- docs/exchanges.md | 35 +++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 5 files changed, 43 insertions(+), 20 deletions(-) create mode 100644 docs/exchanges.md diff --git a/README.md b/README.md index 6d57dcd89..a1feeab67 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,6 @@ git checkout develop For any other type of installation please refer to [Installation doc](https://www.freqtrade.io/en/latest/installation/). - ## Basic Usage ### Bot commands @@ -106,7 +105,7 @@ optional arguments: ### Telegram RPC commands -Telegram is not mandatory. However, this is a great way to control your bot. More details on our [documentation](https://www.freqtrade.io/en/latest/telegram-usage/) +Telegram is not mandatory. However, this is a great way to control your bot. More details and the full command list on our [documentation](https://www.freqtrade.io/en/latest/telegram-usage/) - `/start`: Starts the trader - `/stop`: Stops the trader @@ -129,11 +128,6 @@ The project is currently setup in two main branches: - `master` - This branch contains the latest stable release. The bot 'should' be stable on this branch, and is generally well tested. - `feat/*` - These are feature branches, which are being worked on heavily. Please don't use these unless you want to test a specific feature. -## A note on Binance - -For Binance, please add `"BNB/"` to your blacklist to avoid issues. -Accounts having BNB accounts use this to pay for fees - if your first trade happens to be on `BNB`, further trades will consume this position and make the initial BNB order unsellable as the expected amount is not there anymore. - ## Support ### Help / Slack diff --git a/docs/configuration.md b/docs/configuration.md index e250a81ec..6439c9258 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -357,19 +357,12 @@ For example, to test the order type `FOK` with Kraken, and modify candle_limit t !!! Warning Please make sure to fully understand the impacts of these settings before modifying them. -#### Random notes for other exchanges - -* The Ocean (ccxt id: 'theocean') exchange uses Web3 functionality and requires web3 package to be installed: -```shell -$ pip3 install web3 -``` - ### What values can be used for fiat_display_currency? The `fiat_display_currency` configuration parameter sets the base currency to use for the conversion from coin to fiat in the bot Telegram reports. -The valid values are: +The valid values are:p ```json "AUD", "BRL", "CAD", "CHF", "CLP", "CNY", "CZK", "DKK", "EUR", "GBP", "HKD", "HUF", "IDR", "ILS", "INR", "JPY", "KRW", "MXN", "MYR", "NOK", "NZD", "PHP", "PKR", "PLN", "RUB", "SEK", "SGD", "THB", "TRY", "TWD", "ZAR", "USD" @@ -476,11 +469,13 @@ you run it in production mode. "secret": "08a9dc6db3d7b53e1acebd9275677f4b0a04f1a5", ... } - ``` + !!! Note If you have an exchange API key yet, [see our tutorial](/pre-requisite). +You should also make sure to read the [Exchanges](exchanges.md) section of the documentation to be aware of potential configuration details specific to your exchange. + ### Using proxy with FreqTrade To use a proxy with freqtrade, add the kwarg `"aiohttp_trust_env"=true` to the `"ccxt_async_kwargs"` dict in the exchange section of the configuration. diff --git a/docs/data-download.md b/docs/data-download.md index f105e7a56..1f03b124a 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -78,10 +78,8 @@ freqtrade download-data --exchange binance --pairs XRP/ETH ETH/BTC --days 20 --d !!! Warning The historic trades are not available during Freqtrade dry-run and live trade modes because all exchanges tested provide this data with a delay of few 100 candles, so it's not suitable for real-time trading. -### Historic Kraken data - -The Kraken API does only provide 720 historic candles, which is sufficient for FreqTrade dry-run and live trade modes, but is a problem for backtesting. -To download data for the Kraken exchange, using `--dl-trades` is mandatory, otherwise the bot will download the same 720 candles over and over, and you'll not have enough backtest data. +!!! Note "Kraken user" + Kraken users should read [this](exchanges.md#historic-kraken-data) before starting to download data. ## Next step diff --git a/docs/exchanges.md b/docs/exchanges.md new file mode 100644 index 000000000..8df76c1ba --- /dev/null +++ b/docs/exchanges.md @@ -0,0 +1,35 @@ +# Exchange-specific Notes + +This page combines common gotchas and informations which are exchange-specific and most likely don't apply to other exchanges. + +## Binance + +!!! Tip "Stoploss on Exchange" + Binance is currently the only exchange supporting `stoploss_on_exchange`. It provides great advantages, so we recommend to benefit from it. + +### Blacklists + +For Binance, please add `"BNB/"` to your blacklist to avoid issues. +Accounts having BNB accounts use this to pay for fees - if your first trade happens to be on `BNB`, further trades will consume this position and make the initial BNB order unsellable as the expected amount is not there anymore. + +### Binance sites + +Binance has been split into 3, and users must use the correct ccxt exchange ID for their exchange, otherwise API keys are not recognized. + +* [binance.com](https://www.binance.com/) - International users - ccxt id: `binance` +* [binance.us](https://www.binance.us/) US based users- ccxt id: `binanceus` +* [binance.je](https://www.binance.je/) Trading FIAT currencies - ccxt id: `binanceje` + +### Kraken + +### Historic Kraken data + +The Kraken API does only provide 720 historic candles, which is sufficient for FreqTrade dry-run and live trade modes, but is a problem for backtesting. +To download data for the Kraken exchange, using `--dl-trades` is mandatory, otherwise the bot will download the same 720 candles over and over, and you'll not have enough backtest data. + +#### Random notes for other exchanges + +* The Ocean (ccxt id: 'theocean') exchange uses Web3 functionality and requires web3 package to be installed: +```shell +$ pip3 install web3 +``` diff --git a/mkdocs.yml b/mkdocs.yml index 2c3f70191..0fd8070f5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -16,6 +16,7 @@ nav: - Hyperopt: hyperopt.md - Edge Positioning: edge.md - Utility Subcommands: utils.md + - Exchanges: exchanges.md - FAQ: faq.md - Data Analysis: - Jupyter Notebooks: data-analysis.md From de2d04f06b2221559a6703cfe3c77a3c74ab5257 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 16:24:24 +0100 Subject: [PATCH 0930/3421] Add note about systemd load location closes #2461 --- docs/advanced-setup.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/advanced-setup.md b/docs/advanced-setup.md index e6334d2c1..97d52850c 100644 --- a/docs/advanced-setup.md +++ b/docs/advanced-setup.md @@ -8,6 +8,9 @@ If you do not know what things mentioned here mean, you probably do not need it. Copy the `freqtrade.service` file to your systemd user directory (usually `~/.config/systemd/user`) and update `WorkingDirectory` and `ExecStart` to match your setup. +!!! Note + Certain systems (like Raspbian) don't load service unit files from the user directory. In this case, copy `freqtrade.service` into `/etc/systemd/user/` (requires superuser permissions). + After that you can start the daemon with: ```bash From 085aa3084ebc07a4bc5dac098577e38dbb415217 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 Nov 2019 19:45:09 +0100 Subject: [PATCH 0931/3421] Implement ticker caching --- freqtrade/pairlist/pairlistmanager.py | 7 ++++++- requirements-common.txt | 1 + setup.py | 1 + tests/pairlist/test_pairlist.py | 4 +++- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 309ada094..0734d7f8f 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -4,6 +4,7 @@ Static List provider Provides lists as configured in config.json """ +from cachetools import TTLCache, cached import logging from typing import Dict, List @@ -68,6 +69,10 @@ class PairListManager(): """ return [{p.name: p.short_desc()} for p in self._pairlists] + @cached(TTLCache(maxsize=1, ttl=1800)) + def _get_cached_tickers(self): + return self._exchange.get_tickers() + def refresh_pairlist(self) -> None: """ Run pairlist through all configured pairlists. @@ -78,7 +83,7 @@ class PairListManager(): # tickers should be cached to avoid calling the exchange on each call. tickers: Dict = {} if self._tickers_needed: - tickers = self._exchange.get_tickers() + tickers = self._get_cached_tickers() # Process all pairlists in chain for pl in self._pairlists: diff --git a/requirements-common.txt b/requirements-common.txt index 52b80d501..c11179fbb 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -4,6 +4,7 @@ ccxt==1.19.14 SQLAlchemy==1.3.10 python-telegram-bot==12.2.0 arrow==0.15.4 +cachetools==3.1.1 requests==2.22.0 urllib3==1.25.6 wrapt==1.11.2 diff --git a/setup.py b/setup.py index 781a5d138..50b8eee9c 100644 --- a/setup.py +++ b/setup.py @@ -66,6 +66,7 @@ setup(name='freqtrade', 'SQLAlchemy', 'python-telegram-bot', 'arrow', + 'cachetools', 'requests', 'urllib3', 'wrapt', diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 0ec6766c2..94b2147f5 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -268,12 +268,14 @@ def test_volumepairlist_caching(mocker, markets, whitelist_conf, tickers): ) bot = get_patched_freqtradebot(mocker, whitelist_conf) assert bot.pairlists._pairlists[0]._last_refresh == 0 - + assert tickers.call_count == 0 bot.pairlists.refresh_pairlist() + assert tickers.call_count == 1 assert bot.pairlists._pairlists[0]._last_refresh != 0 lrf = bot.pairlists._pairlists[0]._last_refresh bot.pairlists.refresh_pairlist() + assert tickers.call_count == 1 # Time should not be updated. assert bot.pairlists._pairlists[0]._last_refresh == lrf From eba55c27832240febb5f9ec10651931b04cc686e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 Nov 2019 19:31:13 +0100 Subject: [PATCH 0932/3421] Change link --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 0fd8070f5..43d6acc1d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -16,7 +16,7 @@ nav: - Hyperopt: hyperopt.md - Edge Positioning: edge.md - Utility Subcommands: utils.md - - Exchanges: exchanges.md + - Exchange-specific Notes: exchanges.md - FAQ: faq.md - Data Analysis: - Jupyter Notebooks: data-analysis.md From 692d6afbd9ec1953e713e2947270f4b2080ee755 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 11 Nov 2019 02:17:41 +0300 Subject: [PATCH 0933/3421] Minor exchange notes typographical cosmetics --- docs/exchanges.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/exchanges.md b/docs/exchanges.md index 8df76c1ba..2cf4ed355 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -16,9 +16,9 @@ Accounts having BNB accounts use this to pay for fees - if your first trade happ Binance has been split into 3, and users must use the correct ccxt exchange ID for their exchange, otherwise API keys are not recognized. -* [binance.com](https://www.binance.com/) - International users - ccxt id: `binance` -* [binance.us](https://www.binance.us/) US based users- ccxt id: `binanceus` -* [binance.je](https://www.binance.je/) Trading FIAT currencies - ccxt id: `binanceje` +* [binance.com](https://www.binance.com/) - International users, ccxt id: `binance`. +* [binance.us](https://www.binance.us/) - US based users, ccxt id: `binanceus`. +* [binance.je](https://www.binance.je/) - Binance Jersey, trading fiat currencies. Use ccxt id: `binanceje`. ### Kraken From e810597eec91727b53ac3fe910887972a59850cd Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 11 Nov 2019 07:16:35 +0100 Subject: [PATCH 0934/3421] Add restricted markets snippet to documentation --- docs/exchanges.md | 24 +++++++++++++++++++++++- docs/faq.md | 6 +----- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/docs/exchanges.md b/docs/exchanges.md index 8df76c1ba..bb30e3f6d 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -20,7 +20,7 @@ Binance has been split into 3, and users must use the correct ccxt exchange ID f * [binance.us](https://www.binance.us/) US based users- ccxt id: `binanceus` * [binance.je](https://www.binance.je/) Trading FIAT currencies - ccxt id: `binanceje` -### Kraken +## Kraken ### Historic Kraken data @@ -33,3 +33,25 @@ To download data for the Kraken exchange, using `--dl-trades` is mandatory, othe ```shell $ pip3 install web3 ``` + +## Bittrex + +### Restricted markets + +Bittrex split its exchange into US and International versions. +The International version has more pairs available, however the API always returns all pairs, so there is currently no automated way to detect if you're affected by the restriction. + +If you have restricted pairs in your whitelist, you'll get a warning message in the log on FreqTrade startup for each restricted pair. +If you're an "International" Customer on the Bittrex exchange, then this warning will probably not impact you. +If you're a US customer, the bot will fail to create orders for these pairs, and you should remove them from your Whitelist. + +You can get a list of restricted markets by using the following snipptet: + +``` python +import ccxt +ct = ccxt.bittrex() +_ = ct.load_markets() +res = [ f"{x['MarketCurrency']}/{x['BaseCurrency']}" for x in ct.publicGetMarkets()['result'] if x['IsRestricted']] +print(res) + +``` diff --git a/docs/faq.md b/docs/faq.md index 7fdd54958..3ff668bae 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -48,12 +48,8 @@ You can use the `/forcesell all` command from Telegram. ### I get the message "RESTRICTED_MARKET" Currently known to happen for US Bittrex users. -Bittrex split its exchange into US and International versions. -The International version has more pairs available, however the API always returns all pairs, so there is currently no automated way to detect if you're affected by the restriction. -If you have restricted pairs in your whitelist, you'll get a warning message in the log on FreqTrade startup for each restricted pair. -If you're an "International" Customer on the Bittrex exchange, then this warning will probably not impact you. -If you're a US customer, the bot will fail to create orders for these pairs, and you should remove them from your Whitelist. +Read [the Bittrex section about restricted markets](exchanges.md#Restricted markets) for more information. ### How do I search the bot logs for something? From 04b51a982e4aa6c5d88e699b4b0eab45af5183e5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 11 Nov 2019 08:55:37 +0100 Subject: [PATCH 0935/3421] Include warning-message to bittrex explanation --- docs/exchanges.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/exchanges.md b/docs/exchanges.md index bb30e3f6d..0006dfa34 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -42,6 +42,13 @@ Bittrex split its exchange into US and International versions. The International version has more pairs available, however the API always returns all pairs, so there is currently no automated way to detect if you're affected by the restriction. If you have restricted pairs in your whitelist, you'll get a warning message in the log on FreqTrade startup for each restricted pair. + +The warning message will look similar to the following: + +``` output +[...] Message: bittrex {"success":false,"message":"RESTRICTED_MARKET","result":null,"explanation":null}" +``` + If you're an "International" Customer on the Bittrex exchange, then this warning will probably not impact you. If you're a US customer, the bot will fail to create orders for these pairs, and you should remove them from your Whitelist. From 83067c1edc4ac138c2d87b8b8cfc555f0ab384ff Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 11 Nov 2019 11:18:43 +0300 Subject: [PATCH 0936/3421] minor: Fix link in the Faq docs --- docs/faq.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/faq.md b/docs/faq.md index 3ff668bae..b9c662085 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -49,7 +49,7 @@ You can use the `/forcesell all` command from Telegram. Currently known to happen for US Bittrex users. -Read [the Bittrex section about restricted markets](exchanges.md#Restricted markets) for more information. +Read [the Bittrex section about restricted markets](exchanges.md#restricted-markets) for more information. ### How do I search the bot logs for something? From 661c8251c55ab01de6519be576214b867ca033a9 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 11 Nov 2019 11:23:29 +0300 Subject: [PATCH 0937/3421] minor: Exchange notes docs * Formatting (structure of sections) * Cosmetic changes This was not noticed in terms of #2505 --- docs/exchanges.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/exchanges.md b/docs/exchanges.md index 0006dfa34..ac742a350 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -27,13 +27,6 @@ Binance has been split into 3, and users must use the correct ccxt exchange ID f The Kraken API does only provide 720 historic candles, which is sufficient for FreqTrade dry-run and live trade modes, but is a problem for backtesting. To download data for the Kraken exchange, using `--dl-trades` is mandatory, otherwise the bot will download the same 720 candles over and over, and you'll not have enough backtest data. -#### Random notes for other exchanges - -* The Ocean (ccxt id: 'theocean') exchange uses Web3 functionality and requires web3 package to be installed: -```shell -$ pip3 install web3 -``` - ## Bittrex ### Restricted markets @@ -41,7 +34,7 @@ $ pip3 install web3 Bittrex split its exchange into US and International versions. The International version has more pairs available, however the API always returns all pairs, so there is currently no automated way to detect if you're affected by the restriction. -If you have restricted pairs in your whitelist, you'll get a warning message in the log on FreqTrade startup for each restricted pair. +If you have restricted pairs in your whitelist, you'll get a warning message in the log on Freqtrade startup for each restricted pair. The warning message will look similar to the following: @@ -49,8 +42,8 @@ The warning message will look similar to the following: [...] Message: bittrex {"success":false,"message":"RESTRICTED_MARKET","result":null,"explanation":null}" ``` -If you're an "International" Customer on the Bittrex exchange, then this warning will probably not impact you. -If you're a US customer, the bot will fail to create orders for these pairs, and you should remove them from your Whitelist. +If you're an "International" customer on the Bittrex exchange, then this warning will probably not impact you. +If you're a US customer, the bot will fail to create orders for these pairs, and you should remove them from your whitelist. You can get a list of restricted markets by using the following snipptet: @@ -62,3 +55,10 @@ res = [ f"{x['MarketCurrency']}/{x['BaseCurrency']}" for x in ct.publicGetMarket print(res) ``` + +## Random notes for other exchanges + +* The Ocean (ccxt id: 'theocean') exchange uses Web3 functionality and requires web3 package to be installed: +```shell +$ pip3 install web3 +``` From 95492958f9fc74c113a02fbfbc51347f8e0d5e56 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 11 Nov 2019 11:37:57 +0300 Subject: [PATCH 0938/3421] wordings --- docs/exchanges.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/exchanges.md b/docs/exchanges.md index 2cf4ed355..6e4ddf9a8 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -16,9 +16,9 @@ Accounts having BNB accounts use this to pay for fees - if your first trade happ Binance has been split into 3, and users must use the correct ccxt exchange ID for their exchange, otherwise API keys are not recognized. -* [binance.com](https://www.binance.com/) - International users, ccxt id: `binance`. -* [binance.us](https://www.binance.us/) - US based users, ccxt id: `binanceus`. -* [binance.je](https://www.binance.je/) - Binance Jersey, trading fiat currencies. Use ccxt id: `binanceje`. +* [binance.com](https://www.binance.com/) - International users. Use exchange id: `binance`. +* [binance.us](https://www.binance.us/) - US based users. Use exchange id: `binanceus`. +* [binance.je](https://www.binance.je/) - Binance Jersey, trading fiat currencies. Use exchange id: `binanceje`. ### Kraken From 27d81bb68c6cabadfc929c49e3f1f5b1c537af57 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 11 Nov 2019 12:23:24 +0300 Subject: [PATCH 0939/3421] minor: More cosmetics on Exchange Notes --- docs/exchanges.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/exchanges.md b/docs/exchanges.md index 090d70e1f..5bd283a69 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -24,7 +24,7 @@ Binance has been split into 3, and users must use the correct ccxt exchange ID f ### Historic Kraken data -The Kraken API does only provide 720 historic candles, which is sufficient for FreqTrade dry-run and live trade modes, but is a problem for backtesting. +The Kraken API does only provide 720 historic candles, which is sufficient for Freqtrade dry-run and live trade modes, but is a problem for backtesting. To download data for the Kraken exchange, using `--dl-trades` is mandatory, otherwise the bot will download the same 720 candles over and over, and you'll not have enough backtest data. ## Bittrex @@ -45,7 +45,7 @@ The warning message will look similar to the following: If you're an "International" customer on the Bittrex exchange, then this warning will probably not impact you. If you're a US customer, the bot will fail to create orders for these pairs, and you should remove them from your whitelist. -You can get a list of restricted markets by using the following snipptet: +You can get a list of restricted markets by using the following snippet: ``` python import ccxt @@ -53,12 +53,11 @@ ct = ccxt.bittrex() _ = ct.load_markets() res = [ f"{x['MarketCurrency']}/{x['BaseCurrency']}" for x in ct.publicGetMarkets()['result'] if x['IsRestricted']] print(res) - ``` ## Random notes for other exchanges -* The Ocean (ccxt id: 'theocean') exchange uses Web3 functionality and requires web3 package to be installed: +* The Ocean (exchange id: `theocean`) exchange uses Web3 functionality and requires `web3` python package to be installed: ```shell $ pip3 install web3 ``` From 0a13f7e1c780d1ebc643f235eb0f0f523d2eeb45 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2019 10:18:58 +0000 Subject: [PATCH 0940/3421] Bump ccxt from 1.19.14 to 1.19.25 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.19.14 to 1.19.25. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.19.14...1.19.25) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index c11179fbb..33a5d0776 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.19.14 +ccxt==1.19.25 SQLAlchemy==1.3.10 python-telegram-bot==12.2.0 arrow==0.15.4 From c65d217d1eae52a20a5a4834ec6031c621ebc256 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2019 10:19:36 +0000 Subject: [PATCH 0941/3421] Bump scipy from 1.3.1 to 1.3.2 Bumps [scipy](https://github.com/scipy/scipy) from 1.3.1 to 1.3.2. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.3.1...v1.3.2) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index f5dae7332..ff8de9cb2 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -2,7 +2,7 @@ -r requirements.txt # Required for hyperopt -scipy==1.3.1 +scipy==1.3.2 scikit-learn==0.21.3 scikit-optimize==0.5.2 filelock==3.0.12 From 031157f2153e581496c048e1151a2c3b4916a53a Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2019 10:20:30 +0000 Subject: [PATCH 0942/3421] Bump numpy from 1.17.3 to 1.17.4 Bumps [numpy](https://github.com/numpy/numpy) from 1.17.3 to 1.17.4. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.17.3...v1.17.4) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 331e3dc67..ebf27abd4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Load common requirements -r requirements-common.txt -numpy==1.17.3 +numpy==1.17.4 pandas==0.25.3 From ff1d36434d7f66e53f81c01bbb5fa5be359f0761 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 Nov 2019 15:33:48 +0100 Subject: [PATCH 0943/3421] Add github actions action --- .github/workflows/ci.yml | 167 ++++++++++++++++++++++++++++++ build_helpers/install_windows.ps1 | 6 ++ build_helpers/publish_docker.sh | 20 ++-- tests/test_docs.sh | 12 +++ 4 files changed, 195 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 build_helpers/install_windows.ps1 create mode 100755 tests/test_docs.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..9af0e0c64 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,167 @@ +name: Freqtrade CI + +on: + push: + branches: + - master + - develop + tags: + pull_request: + +jobs: + build: + + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ ubuntu-18.04] + python-version: [3.7] + + steps: + - uses: actions/checkout@v1 + + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + + - name: Cache_dependencies + uses: actions/cache@v1 + id: cache + with: + path: ~/dependencies/ + key: ${{ runner.os }}-dependencies + + - name: pip cache (linux) + uses: actions/cache@preview + if: startsWith(matrix.os, 'ubuntu') + with: + path: ~/.cache/pip + key: test-${{ matrix.os }}-${{ matrix.python-version }}-pip + + - name: pip cache (macOS) + uses: actions/cache@preview + if: startsWith(matrix.os, 'macOS') + with: + path: ~/Library/Caches/pip + key: test-${{ matrix.os }}-${{ matrix.python-version }}-pip + + - name: TA binary *nix + if: steps.cache.outputs.cache-hit != 'true' + run: | + cd build_helpers && ./install_ta-lib.sh ${HOME}/dependencies/; cd .. + + - name: Installation - *nix + run: | + python -m pip install --upgrade pip + export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH + export TA_LIBRARY_PATH=${HOME}/dependencies/lib + export TA_INCLUDE_PATH=${HOME}/dependencies/include + pip install -r requirements-dev.txt + pip install -e . + + - name: Tests + run: | + pytest --random-order --cov=freqtrade --cov-config=.coveragerc + # Allow failure for coveralls + coveralls || true + + - name: Backtesting + run: | + cp config.json.example config.json + freqtrade --datadir tests/testdata backtesting + + - name: Hyperopt + run: | + cp config.json.example config.json + freqtrade --datadir tests/testdata --strategy SampleStrategy hyperopt --customhyperopt SampleHyperOpts -e 5 + + - name: Flake8 + run: | + flake8 + + - name: Mypy + run: | + mypy freqtrade scripts + + - name: Documentation syntax + run: | + ./tests/test_docs.sh + + build_windows: + + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ windows-latest ] + python-version: [3.7] + + steps: + - uses: actions/checkout@v1 + + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python-version }} + + - name: Pip cache (Windows) + uses: actions/cache@preview + if: startsWith(runner.os, 'Windows') + with: + path: ~\AppData\Local\pip\Cache + key: ${{ runner.os }}-pip + restore-keys: ${{ runner.os }}-pip + + - name: Installation + run: | + ./build_helpers/install_windows.ps1 + + - name: Tests + run: | + pytest --random-order --cov=freqtrade --cov-config=.coveragerc + + - name: Backtesting + run: | + cp config.json.example config.json + freqtrade --datadir tests/testdata backtesting + + - name: Hyperopt + run: | + cp config.json.example config.json + freqtrade --datadir tests/testdata --strategy SampleStrategy hyperopt --customhyperopt SampleHyperOpts -e 5 + + - name: Flake8 + run: | + flake8 + + - name: Mypy + run: | + mypy freqtrade scripts + + deploy: + needs: [ build, build_windows ] + runs-on: ubuntu-18.04 + if: github.event_name == 'push' || 1 == 1 + steps: + - uses: actions/checkout@v1 + + - name: Build and test and push docker image + env: + IMAGE_NAME: freqtradeorg/freqtradetests + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + # original filter + # branch in (master, develop, feat/improve_travis) AND (type in (push, cron)) + run: | + build_helpers/publish_docker.sh + + - name: Build raspberry image + uses: elgohr/Publish-Docker-Github-Action@2.7 + with: + name: freqtradeorg/freqtradetests:test_pi + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + dockerfile: Dockerfile.pi + cache: ${{ github.event_name != 'cron' }} + tag_names: true + diff --git a/build_helpers/install_windows.ps1 b/build_helpers/install_windows.ps1 new file mode 100644 index 000000000..e897cb88c --- /dev/null +++ b/build_helpers/install_windows.ps1 @@ -0,0 +1,6 @@ +Invoke-WebRequest -Uri "https://download.lfd.uci.edu/pythonlibs/g5apjq5m/TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl" -OutFile "TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl" + +pip install TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl + +pip install -r requirements-dev.txt +pip install -e . diff --git a/build_helpers/publish_docker.sh b/build_helpers/publish_docker.sh index 839ca0876..cac2a4c04 100755 --- a/build_helpers/publish_docker.sh +++ b/build_helpers/publish_docker.sh @@ -1,17 +1,17 @@ #!/bin/sh -# - export TAG=`if [ "$TRAVIS_BRANCH" == "develop" ]; then echo "latest"; else echo $TRAVIS_BRANCH ; fi` -# Replace / with _ to create a valid tag -TAG=$(echo "${TRAVIS_BRANCH}" | sed -e "s/\//_/") +# Replace / with _ to create a valid tag +TAG=$(echo "${GITHUB_REF}" | sed -e "s/\//_/g") +echo "Running for ${TAG}" # Add commit and commit_message to docker container -echo "${TRAVIS_COMMIT} ${TRAVIS_COMMIT_MESSAGE}" > freqtrade_commit +echo "${GITHUB_SHA}" > freqtrade_commit -if [ "${TRAVIS_EVENT_TYPE}" = "cron" ]; then - echo "event ${TRAVIS_EVENT_TYPE}: full rebuild - skipping cache" +if [ "${GITHUB_EVENT_NAME}" = "cron" ]; then + echo "event ${GITHUB_EVENT_NAME}: full rebuild - skipping cache" docker build -t freqtrade:${TAG} . else - echo "event ${TRAVIS_EVENT_TYPE}: building with cache" + echo "event ${GITHUB_EVENT_NAME}: building with cache" # Pull last build to avoid rebuilding the whole image docker pull ${IMAGE_NAME}:${TAG} docker build --cache-from ${IMAGE_NAME}:${TAG} -t freqtrade:${TAG} . @@ -23,7 +23,7 @@ if [ $? -ne 0 ]; then fi # Run backtest -docker run --rm -it -v $(pwd)/config.json.example:/freqtrade/config.json:ro -v $(pwd)/tests:/tests freqtrade:${TAG} --datadir /tests/testdata backtesting +docker run --rm -v $(pwd)/config.json.example:/freqtrade/config.json:ro -v $(pwd)/tests:/tests freqtrade:${TAG} --datadir /tests/testdata backtesting if [ $? -ne 0 ]; then echo "failed running backtest" @@ -38,12 +38,12 @@ if [ $? -ne 0 ]; then fi # Tag as latest for develop builds -if [ "${TRAVIS_BRANCH}" = "develop" ]; then +if [ "${GITHUB_REF}" = "develop" ]; then docker tag freqtrade:$TAG ${IMAGE_NAME}:latest fi # Login -echo "$DOCKER_PASS" | docker login -u $DOCKER_USER --password-stdin +docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD if [ $? -ne 0 ]; then echo "failed login" diff --git a/tests/test_docs.sh b/tests/test_docs.sh new file mode 100755 index 000000000..09e142b99 --- /dev/null +++ b/tests/test_docs.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# Test Documentation boxes - +# !!! : is not allowed! +# !!! "title" - Title needs to be quoted! +grep -Er '^!{3}\s\S+:|^!{3}\s\S+\s[^"]' docs/* + +if [ $? -ne 0 ]; then + echo "Docs test success." + exit 0 +fi +echo "Docs test failed." +exit 1 From e51a7201934db8873244110b1d5d408169ac5d10 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 Nov 2019 10:02:26 +0100 Subject: [PATCH 0944/3421] Apply cache to pi image --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9af0e0c64..aa2d09750 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -162,6 +162,7 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} dockerfile: Dockerfile.pi + # cache: true cache: ${{ github.event_name != 'cron' }} tag_names: true From d1729a624d99b8d509813cea2d2421eff11457ef Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 11 Nov 2019 10:36:38 +0100 Subject: [PATCH 0945/3421] fix windows build --- .github/workflows/ci.yml | 15 +++++++++++---- .../TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl | Bin 0 -> 684920 bytes build_helpers/install_windows.ps1 | 6 ++++-- build_helpers/publish_docker.sh | 2 +- 4 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 build_helpers/TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aa2d09750..4edd357bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,6 +5,7 @@ on: branches: - master - develop + - github_actions_2 tags: pull_request: @@ -14,7 +15,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ ubuntu-18.04] + os: [ ubuntu-18.04 ] python-version: [3.7] steps: @@ -141,24 +142,30 @@ jobs: deploy: needs: [ build, build_windows ] runs-on: ubuntu-18.04 - if: github.event_name == 'push' || 1 == 1 + if: github.event_name == 'push' || github.event_name == 'cron' steps: - uses: actions/checkout@v1 + - name: Extract branch name + shell: bash + run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" + id: extract_branch + - name: Build and test and push docker image env: IMAGE_NAME: freqtradeorg/freqtradetests DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }} # original filter # branch in (master, develop, feat/improve_travis) AND (type in (push, cron)) run: | build_helpers/publish_docker.sh - - name: Build raspberry image + - name: Build raspberry image for ${{ steps.extract_branch.outputs.branch }}_pi uses: elgohr/Publish-Docker-Github-Action@2.7 with: - name: freqtradeorg/freqtradetests:test_pi + name: freqtradeorg/freqtradetests:${{ steps.extract_branch.outputs.branch }}_pi username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} dockerfile: Dockerfile.pi diff --git a/build_helpers/TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl b/build_helpers/TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl new file mode 100644 index 0000000000000000000000000000000000000000..87469a199037a6ce79f4ee4ec347f0c411b8bb49 GIT binary patch literal 684920 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≪c7F=`hCoL#u}a7*VA+qt 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

      e}jSYxSKLA#+4<_BX0`|L| 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

      I_c5
      z31L-VVfv*k(h74*JXJUIv`n5Crl?eisvbdg7E!4PDs=*Lhj3M(u=
      z)Jht9(n_nchJ)9K>jC+3oPm#vqT?cP+_`pqTm%`HEdliaE1aqAX{rZ|h*PhVpn4Ig
      z9F!^jj(F7Gtum+w_)LBa!mYmw|J55au~9o{(hjwQkYS)5WG4g+BS#VKKm*zV80MfI
      zga?(P{t%Skp^~GOr*Iq9159TXQ@H<|@q;6$%*77|sDzL}yA!{N$7U0N%biFke()tE
      ztu#KjQe%uC)Z4?Pak1B#j2~qE;fVPzkr+Ry_1T`s53C|h;|CK$l;Q{1j!W@_q`6Gm
      zlsra+Z;jXK#SiWe6-?~J6WqkE^cr{FyBoOcE;WbUYeyLDS}-GZ*HjQcSW88rC7F()
      z+6cw?LA{@j^7z5J<0uacMY0*5Ji+Cm=O8J5U~?Sh;h7;ad1x6a%0s`SC=dPV1S{YK
      z`?aAHj8j)26Ri7M7C&(PoBa)`{G0HGGB>#hbfzNEfFdxENWym@3B5t51xfhTR1%Im
      z!3EEjqEztIJs=Z2W3SWrcL2t}37d+<<#b7PR8@&*kp$r9d-f^{p89mSGY;=84R973XDg$`7$axXKt2>&Wcy@?Km{W`>$JSRV#44
      z4usbniZ>%VF+a1-QJLI)bp`R9_6Iy!37(aR=k#BWs1u({JxTz*fgIjs`zCESvuha@EM^Z
      zDvf;|(XaR&!j4drBKtp<2NiPDpu%&%@E#f-RAATfct3)mLL&Sv73FOdjVxGerb6t?
      zFQQu3#UE2W^po~%>|?9)wK@f%g>F88iHHq%g4~*hO}$f@ANULN11D0k;{A$-8~Q&=
      z$l|B({|HlEiyo$dg|MGlHB-x@?{&tW(@5ZA>J!3p&ZIaRGg)^Xz}Ube9zv*XVT=tl
      z!!xhjWFut0PC8(8`M=_TB`Dx&M**;d0GP-De^68Wun1U10Q|xMuT#LDS^+Sd0GP@F
      zH&ei&76Rbo{YF4*4mgnlzEKN+d-qFWiN^$1!(rRdu!K!NSye*ss?c4f`E^(XiL=ml^hvdbwc_
      zzoP&?w~y!+e;M$E#a+M?w$T?X<~`)I#;G3@o--6J=Al$g=uXfZ?1Mo~@X`C{26J>}
      z3u=yH9B9Ic*(OG)pT36%c2hzNpNNJ;x}=bOR4SDiwGq|YEWrIb<+-?DGqYF86kbVj
      zi=u{`{ZdlHy>EdUL_UXseGa?W`vzz?Mrek2xMf2O8-
      zyF!J_7YaQJp_3T&3<>%rKp!U1UKkij1?VCMzkWP|k~>w`g#p{fCIIjp0!;J{y}vbu
      zb?(Q5D7sXgE8j!0NdViE!1_;q9#R~fL|^)HC66G@E+PF4fOP>WkB7|sMD;Z(HTm;C
      z)Yk?~XJ1{npX+OLdr7IuZTHa{sopYut;KXvUt78t^|fW^aHouI1U&tKAKfEy>aod=
      zDoc-p1nb7V;GYDxA33P|6;ki
      z)!&2Ze>>#*-&v~vHAMZdiB{Ev>VKadRU2NhiX+tjwkYd=bhtAP?<@^>Cc`(waQig+
      z-#$K}sCG>M+b-At&QSf&8}&beu@}|<$Ucb!j0d>>r#zvpboeYBexWfRK8p-L2gAo?
      zQ2)zjR{x^}Djt!@b&7mDLzrE#HToTow1>b~!hw7N(M
      zsttkirZT4`;!#)i{7<#ITG;v8ZpiPT)qQ1cK1nN~NAX?3%iR(G0dbw?Dn
      zx`lGBP9fjY8SYqQsUpLprGN=BRQs?S7Jc+5(Q}gahQ(m`++=+X(7RAM?G1|qabu^w
      zVNvo44905~(Yq4Dyer*yv&4{-fI2^-tBXIo(sU50YmZ+~eJDTPIU0Q^h8>c_g(iBO
      z6%sw@RCM=$3Iq1;kUL!{q&J1kXCt_0B1Fgl4w;`qrhE}_b{8R~yA|J4M^3$NX&pJ;
      z>VQhsk2-ROu4Rs#X22I{u@`h0+>Xl~=#bz{gDJ~cFhw(IIuENz&Yd3?fDW{;(g{TS
      z%0jiTF3%+GtJFlJ_I02uYF~CcWZGA*iE`}=ey8=j(M0GKK?
      z>-yt(Sf^rt!jsUe0R2dMvTHnIe5rzXHW2!s^^ig;ezZa1_XHCcQn&4>lH8lXUd6;6
      zTqRL;kz7b8qfsT96DU(j4o?tOl5E>hCCN_bmQWAoR+`N%PMz@9Q8k>*-t|a=)=Pf@
      zG9}QHbkh+3MYuokexnqkkajE{?5poUc1~ZSvOI$u1da9^)JxHx!;oYuD3k*2
      zA*6VKhyJ~3dVlL3Trh_@@MfYCBKw_gyHZ
      z_jf)D>HP@1<0Yo|SFMW)eM1{y|4ZoIjp_Z5@g)oC{jC~6B4s`T5Pw2tR?3qP4N|^-
      z2`c4%Os`hrejN8S4Q)|79cY6|3C={HATrxxu_UwYJYu|H(yw1C=lHv)>YiNQA(1=hC;3sjrU?vQe-|!
      zCT#9e5i++!S`nf-t1({BTV**DA;n==C#$Fk382^W&R4O9Af`e2A-L4uVo*NexuX=6
      zFY-W=9qvg^Aen-xy`IAVG`mh(f;a8D;5FQ&SWH{1EFdMH$
      zakJ4C29`cdjM%1+!!6xW(U*r<_u@75;Y_hO1s)capv5t4rR`{*NV(J7x0FrFUY34$e8nn
      z6-vw*;aULPdXe{k+sx6QE>F?NtP#=Yfnft+*g%HfM-e^34FpgcA!!PlXkVWoyVpjF?7lF}^Yja4b{~+c`?N`9
      z_s#%){RJMDQL(riJ5-GZKePSDOM$UHR?B0~a>pPMi8Fr$QShh`enwy`#
      zg^eHVHr>{z^eBy$?!VlKM``8=e*fhrew22$#y8)J0FBsyN2zxk`Tdt8WcOdL!=rR?
      zA5MOGHN5|_mR4nnM`<}>VZ~m6GWGwMJL|BjmamT^iVXsaUc0-yyTHV5#cst;>_Y60
      zD
      z)cu|ja{dqJ{u312{)8DHRfO)*Zub+z$4ApI8sp;&cnWx;j*sWwbbQp@tc;I#r(t}c
      zZQv6eAAdE#E;I4ICe3OBy&nj7s6Qjv3!^e7xVnj*oxgIbS`|
      z93MBl*zxfbtiL|N@i90EyI6B_)ZyYLP`P%GaeTP+k;cd2LI3~pvFU-%`1t5S)<5Ua
      z^-nKl{j;|+J_dT=_^|53uYbq2_*wF7J~z6LG2CzZ($9<^80i_z}yRNegGKu_wvy!<757U%v36g!>DD8aW~gY_V9-{p{|F|god(7?S
      zXw=zRn#Ye%&1`?qk6z6Fo&s)ke~(=%b`LXuvi@5W*MFsm8fpdWGXLC#bs6|G+y~WN
      z>L>mB3itO6PtjSNiE+Vr*@`~lQ&$=|-^a&UB&i^z<4fp2qt@
      zJVo2{k1?LQSI1EEqz;6d!zr5aG#U;D4zNj%5pqi*$+3yynKW4bj~_9o(945
      z8l`H+(*e$GJUtE8`N@E}=ZpO@tQuDGS8b?d3=VD6W?iIlQnS||98b3#(2A$6l9&)#
      zb${mZG}{Bl_{Y9X;;EmtemtGLp4l&Hwo#6!Z69Ybp5D5S@$};)jHh`oEAjODB;9yw
      zV=aoO?)#K@8Zk+ZR-gAs@wDIL%;M?MZcIE4-%sOdkH^?O!f-vx#H9*^t9w$=+Jo`b
      zJqhCJ9yy+NmimcFPhmVYyQvdT=j_9H`kFrB&iyo=7PMC4>FvE3Pmgux;_0vdcshGO4S3($lYm!mI~(xU!=Rh}h>53Bn?wN*
      z?dCtyji*+M`+qEn`|I0S_Zy(tjz>&99W8W^c6%Nf9#3b#(1@p-z|+Y`YCJ8skH*sp
      z%awTQa2Vn#+MarZ@w5*)193-n2sMLmYR1!9)ghiXy=hQ99bO>I@igFXT-*Ne6ys^d
      zm25oS4$u4gk!C#2wU>>jJHYzeBOEXreXu`HtB93^^Tr&l=G?$|TCIaLPVRO6gX3wN
      zJzDYf^;ITBChyEVo}Nf%jF0ZjB%TJf6P#ajj+vi^t(D_x?MGRRr)v^0o_dZY_dmxf
      z@pR=_y?EMAc>nWGC7#-krT0H?m*Q#rN15LL+?l=qc^8eRElBs6=8fH>XL-E;S&FK&
      zF`o9h2Jv(@iKo}v!u`)S;`^Vk=)}{CJ29R*(i^kLFcIy4lJIH>fw*39iW4ZgE
      zw_!Yu_reGCEr<6%S0)b_XW|RL|D*pho>tgJ171`K`TpmPY`_}_gKpGACZ5i86a_rA
      z8~0E*p2qB??yu*P?|@89y0N?pwKA=R*
      z>F~UFA8OzKyq%4w_F$d%klg?5f&H;m8FK$~MZEv=3dYlRt>FIWPJeJbeY;I7o;qJ<
      zLZsuC%;V|E8;tSLEt$mAq!#+|)X9s9r_)x*@wDW_EXLDD7cidovm^IEM=J5OzMXD7
      zo!CNn|MM0lo|dtr_djov;%VK7ncn~0j=leRD~+esNcSjp5WB~(l6e2K6jg08o@S4S
      zcxp@H>HFqz|8ocN{m&P5;_1!J7*Bi9C;YgD#?x6X)%%|}V>}IR&fouR$KC&o3tlD;
      zZuo%1@d5uXM;HXu!*xj|9AJ>)3$T4hEg=116r9TO|s3XxI0F
      zZakf%xWAN}xUbK-?*PT@A29JWdZoxc+Rc7ocs#xFKqH=Z0#92WsPS~gW*Se=&sE~-
      zJr{_lXuItJ#?ye}7-~M0flw22Q8S)iF9Y#(??r>+X;_Xd$J6ZhFrMbWf$?-^9k#ZeV@u0S=f~&Sd{BjJWDF->8=6jIEc={|F?S{8oQawAfE6G7miro&^T3;6Ood;Io(HZIQkOf?m>2gKiFvJ8vN5j|
      zjJsC%rH*k)j(Jy>h+-bvwF5hMHl&tQ+}Ei}+&^5wx-SF8hC{I_vU_`>d$bz`b{z~m
      z2Yh*oMo29Oo|b^8Z{)je?e+8=@HsP-bHLZ{gOG~0%kE=HwJVI##;rI+oAEI;q$cWy
      z)MezL*Fp7R=W=VwF3nf!t?9v;f5WwtPXZTwxgAKq+|CWa#nX8gF_<=)#Rk*L_-XIH
      z==^WnUshAr<)`O=R{_Iw_sRL+d$Av`u_EVx7sKgbJ^y)~a{hAz<@@cPH8`G3>hb4458%#!UWMc7-X604TL{m8
      zE^29%7speW6rBp*=f2;jX0pEl2TkUi9Qv+P?v2b#db8y+wm1JMBsK2nd(0+>gNsDH
      z8STd3)7|9oaV>T4UX-{GSjxKp3B^|4V>UUo7rIBgwf79)KHn;hP(X6GF_!8-jOj+Z&Ru%Gp}#LDe10+kyUiQ}bQZ8-nD
      zNme#FXpR@>FrD#YvI@t`lD_o(yVc71cXgHVGGQf-myNaf^Y8j{=ie>I@p25;zDzb*
      zz<9YV#kI6TFkUuASQs_AXV`dw_e(!z|1|EPgtOzweG}GBADNM(VeyYvw0MwId>#~c
      z*F7$7^(tjQw|pdPd;Wn|5szchqr2qs4tg9bdE5>jd&v(JI#2jO9ZB&@SbU69ypmLW
      zHx#!tEYa%JbFKz7C(A6u^rQwWl%Wf*Vz!|xFLd=p3Q14U
      zm6zno7-HHsd`xrln7^z(EhjT`IVWl@mNuP$rM;BW6Qt5P?lFhOJzt)m9u~Juv1%t-
      zlu}x}8
      z73p}Fi!TA+e`9<(wTuqubFdL#8qTxlbHh0h*QiW(<%j3GAw|EF_*}crSQst4!^D?Y
      zvxLKWE-5|$i|l}gW@@q;<3{2>v6~M_|pH1R(x4S1jeF(yA;MwllUhIMBGv1%c~_czSJK_
      zV!#
      zV;9r-l3GQHFNYRleCbz_i!TSevhn35E+Cn_+CbKSa%29pR2OG#lY}4(quzH6i!X-F
      z_s1-z0~m6YU;vk!%}&U-z(o6C3NzpLpDvn^qn%fZ?tI@waX&;3Skbds_uHUYR0=cS
      z?;~`NcCjgj&-ce%(wOh>08fuo)cL;UB0Aq6I7*rCPj!O%KH5G>!TEmsTsS3Ol^>?W
      zT~2Av_ebZ4`F_mUl=KH?>y8Hj$?or
      zAMY7S)TnAXB+`C-+`b4sj-
      zV%M=zLtp{?fI
      z=PD;##zv~}&q{%r@n=&h}A?
      z^jmc5AuQWVOVjN9(HjQG9v;cbGU49Kx8tx*(L6DsEBgb!M_Hi
      zA9bULx>VDOUbL`AkQaEG(wt#6LGym}wNfLZIOluAL=Jfjd#2H)Cb|scr9oG11i(@kV5KjB|
      z3@Le!BV7ID5I((dhNQ2*LL^j&UA)~F7{=Y_1|#70*~aZS%bgnBorgUmS2~#4eO9qDuuakasQ=DHmv$
      z*R-kEqPl}&f6CV(g5k;$O$Vt@uKJ{Ln);z`>D
      z2+s6?y&y;
      z>*{tucR>OAmgN9YQ{g8kdwFetdCXF;_)wXq4ko5eCDym=$Ono%w=lO8s-8y(ov_hym&s?9
      zlY`uP`X~%u+0>)dytXi9lJb^bTcvKl*%C66eO+Qu!EU&R9gdlwoApexo(RBn^-f@J
      zNE1;Ou<(EI<@!{zv3vZV@6XA;U3@Gf=t;VG4GwP=Ir(q_7LYymFGSh!Hre{w8UV?S
      z>g}T7x33M+ug|fKey#9r(=|z#F2cp5wmYDR9@Rx0DwJ={SrUeyuN6_JA3UfZ
      z1?-qHBQk>_zvmDh@5S{@Clhv82pwZ2^z8JG?07_L
      zl`eKIv#m*5*-afihP|_94A6H^h2qD0mhtnJ7eYB<5zFE^0%P{=c&*(}vA=T4uGq7h
      zdWe{t-U$3r+Ifx~vN-7=5Fy-#7s#PAepYJCqVGMC*`&F;bI+O{KAG?Qjn61Jh|#-K
      zS~h@OFU(5RO5u`5Z;7)U(i?8}Ps!uzpXRr1qOqaBiQexS&&oZLF`W^c;6-Wt<;
      zD?#x|GqPY2;9!GLP_A_hdM_P|`QdrzimdbntaSlT?$r6HpSnPlO_DpBble1|H
      zFY&@s+)Ibr^o-yN>77*H{FPbp$dZftP`MUq_2$Y@Iah8cm35OMTW*!le&#r(a*ZNO
      z&LjoYG)s~zNBldZJSmd9UnW&0rR&bmr&FbPQFwbA$6AO)<@byg)DKH<&x3)(ud@M|
      z#3D4eeHRWJOCwuBn^ta!jajK!NaKgxyXA1CG6X<$9pK!
      zu%#Bq4gLJ}`5h9yrj`~`?>ogIO&Qe+j)Zxlz+c%u&FY9QTG-FEQeS+9@M2L_+Sybj
      zFVV!@2?Vo;75-Bu6>%u8vFz5Ie92kh
      z8d?(7*l}u}ZYv1s42A@;IYj+>O&H=itDeI5ZsNZq6IcIWtaTfJTIy>glS_yiGA#u{8xM
      zyZ*Sojk;u~c8P08(`yH=g3z2vCn|o|=-&jSp5uS5?MnY3I}YOkBPzinZ6dHi;u6YQ
      zBafv$j6tBtdGisl(yWIPTSOU#4{3y3)Sndm(}Ba<^nJhY-u&J$d^Tl@$6YX;{_iMt9n$IujjDCCaIr_Vf8~HRl;-TrQ?^=2Mku
      z$fiM$O-EV>mCeu?J4D#SI+-a(qkrv!?C<^2+B3hG8>ZofqL?UH_`p@BamjP%n8XS$phEo8L~ojPL1
      za_pp_dhkaMnQ^TvwUPcg(%sqGeBwNunsU?`p`52j2CiN~6^}a6e)pHQ4s^AVGK952RE4Lrn(_=e`7=jPXcU^imVf
      zbgm}m_%~bZNyD0v8}(#g1iSvzq%IZd)|5?SYwtKqJ>C}C3E8s94!PC&Ctg5H{U
      z1cDHiv!-NyL0oO@nfdbJk){?K|Eb@9>A4xIEe}f+lYK4+wWcu-H)sY=)x7RLG0A+$
      zuB+jmxoV}BJ9y^vOM~UKRm*H8EzR$Uyxldr_w#Rhm{Y#mLhlqGY~rs(bk8aLwsZAg
      zcI6jSP5HQpi)YLS)-_sr!m;ZRKL(+J5^L(ZgEc${!|@JYbL}km9Bbf4OP`~Ez|j^1
      zC^_KqKpybcPjLE@|2Q!IG7IaZ0-Y>89woZ=
      zyhIU&Y1ZkrN2&h9n&IO2;dL2~X2WcjqWQ;X!igh{Ee%cR>wMTIcph;IXUDv8_Y$f)g>PwHL1j~}zdaib6Rh%wl>VcSxIo&x
      zx`LX2yml7oUoD;y9}OEB1E&1+(@`r>v)38N9!h=xZCA?blo|#4R?hvm`VVg{m<8ra
      zR^_fk-Y10p>oujBxx}n`N
      zbP}7lbZpNRPT|+yVc}2@)~yK4msfdhb%@s_6wQxJvoDFX*wqnK+ZI++i?#;3o&_gK
      z-}D>o7pYZ+TZeEWSt3CBt6Iz2+0{Lv%axX-WYqe3N5pv{KI&QYBW>PADOwf2IpOxW
      zBA;Fb3UNjFgMp{Zg)Loni%^m>1u5olU3MDP;pgPE2k0w;n2BeE?lTFAg;2EYW$mjS
      zkqWzEjh_fRc0UH>fW1|XxMyp8dfNpFfAeT8uIrSSGSTD5_4Osu@yzB<*pBiMB(wOu
      zAc+6GpexMe2;z_2hn^*~LGI{yo)@>#j=MTy4mUhT?U`mspVc5%h^qYp*_CO49}X
      zqPjq{Zg!{3H?V)>lU%P;a||Z@O6P0W$d+9puZZX0@z}UezO*6lY3hPzDgZ_)=mB#O
      z8yf|O$BwbCm2ig=Y8xRnlR-Yg6s{Es@a#UI|N2FTGl_bO9;cE-T}XcD^ZOnL9jN=H
      z0_%)E`NQCjK5?c?{Ej;ExW|EIZCEQ|2Rl70UOyR_$YbZ&?vZ;;gG8R$qxv85K(R?n
      z(LC3@I(N^G%JNUEA$Aa@sn}7c4u?Ua0
      z@@*UslN;O4HB^x}{%o?PEnWKh%%;L(#-cIqtskWOHAx$lU%7zqE^ipg!f=ap^oua-
      z3^~?VzZ9
      zS@ig7l}41$BN!TcMG5M+vA&{PCICS#n$-!6)kJQaE=VirEKsj5F!hKM^yd$3*=-7`
      z10C+K-Nt{A$t~t~DyiitDZ^f(UuubS^}0s1pffqJPiZ?96+RMm9c(rxkP)@bGRa&tR1eU@tm)97XlPt(r^rmvUQ=!Wb?hY>C#m+rq0CtEm>AS%e!4IJ8aGlDTmrdOjb>eNt+p
      zI^86K*bbEQ&!SSQJ01`JjBc^e8A)uV$!g1;u1cox?!2p(Xh6XB&O|D2fz)}f^tNz%
      zVqTv}x3N&EaAsae_^?AF*`{!2q6^Q1k9SDE*%jERFi*gaU~YBxDd(7@KUeC?C$Eo(
      zne(Yl)`YdgJS@>l378N*nEwzL>4I7bGgMOW=ViN*uzgeZ1@jy7-y&7V?%e&}DK9kG
      zFOoNR1ul&)?c=;o)|}Ew#{CM_U{c}L*GF7iU8bIw{w(c`9!vG2XD>-jFT2CaggqWA
      z=vnw}h6vEuuegcR`0>niU~P*V@}b@ANOIBV$FEw8n;|Ff&oT))Ln-a@lICOTJ`V&E|
      zN{k*1$8d
      zf@YpbLUQ?iQ=@hv@zci^qci5q2X0z;juGc8RRQkn2dd`F!;2}H@iMQXDOAF6n6n<9
      zW8n65@15L~CqN&wG~?e}E(E!&-zWmZUYaW`r3aO|F4BvS=0Ch
      zmopgblmi<*jHePpk$n7bdU1fc1x4A0PChVe$=o-Py$*PJxmqMC8P{=oU2A)h`=udN
      ztcfM5;5-1k-_R<{4w;=yJB&Zj9X#v5{rW-;>wwh1dL$G2bg-{0DRTe0YT(hDOsI{H
      zZsT>m@>Y-@t&!QrPNZ0H!HrV83|(kr#ma~kwMoV?uQzW4a3&*L^n
      zfs(*`44svm%KXoE3U^h>vk1s%&qwDg$VzuuNvv0Ax8>=%KYLT0d=GR}Cj~j-)vMOR
      zTFhT;eX3*D|4A0ZzJFg-ho-JYjqtA*L0gfX>s`?dBF?IK!k;w?G~e>_X6YdFHXe}R
      zUlxg%dqF*eBzNbvQpilCKPAE{>D|>NSxGh6`-A4(>$v1962G;GeSty(MEz?=r}sVf
      zzEOcQQW_rZ7}HJBY)gHR3;h6U|MH8@m7i=oGDby1$fSow8$|HlK(^K{+2Gc85-rga
      zE9WYoeu653&4?WOW;e{vH&4pO(!@}IA0o{SMz}QYEf$
      zEK{LubXAx1TTv^(+
      zeC~|A%33zrePW`l7^$yos2Hgs-Y1G1LS(N?G+tSsQs`_smNp_21Z%?OV!(Ec)b0N9_2$Z{hp*_X8c?u{6;MW}jUeDcJCU6#jv2
      zs%}|wilkhMxC7<4!NN7Ii~UP@@I6tM6O_&R+E(2)H^b?-TbnJ$Pr7o=HFmyvnPy0^
      z;Gg~;d|8L&`Ko>GqLFW>l|5L$RrX331BVbM^Q+`8Y4>;@r^0=R4o|JSwSdrk{&s
      zt@k~W;Ekm}h`E>#b2wf6T4*OyX}2H$lvDjRCv`0S{$qoyJtaNG9b1zn0_?${%@fXk
      zr4F^Y-Nyz&Qd7b<@hQ_w^bTb&WRi!+X8i8+_}8%xTnb%Qa6c)Zjo&hSM6Oy0ykMRu
      z?^7tDnn3Uev!@kxeyv&+zRN+6@?O01S>L4Z%0mjzl#0wA;#;V<1nNa*$M!-k*pYi?
      zi2CA8!8zFV?~ZoCfK1b>R{Do)mDROd8U{JpJ4U;EZo(k;v8vc$Q2$GUIpQ
      zB-)#3Q<6Dxb+x`5y7lTOzwoT`XH+GDWj_eL?|ZKg+N>S_ImT~y?O#B3J?EZeE(us@
      zoD8L++;BhvAEhBH%)2&yR;hN^8Y
      zW6AZ;C~7d3%=jLv=^2pY7C#)Efio-;$&3_uH?Gs5M8rxx0UIo!Dghvos&7!PBF4xc
      z!`$x5%!b%t5pZJ{E~)0i#2AgBai?%(sBxJucwO}`tVz%kS%el_1@}Q0b>jZU_-%}l
      z!*Fkl>n_O*nS1#tqEo2HCBPYmDy47z^vBpnpx0wFXfgRWFMX7;2rgq@c!z*e07YVg
      zh@H>X5@E@~Vyb9cs2Ho$jJnD@up>PIm{Hzh9f67e72o+IPw)WsoxgFEc);DHg<{?j
      zir)NdZ3h#q_y**nnhBx@@N8bziLl{~unfn?KUVIPl2gDBXL2QTAbf#L6{azynwx?we&}ASuYWjML`q=zH=(@U);_Dl%dCLBa2xz5}z)WB!uw
      z{r5|lJ7yfxEF2zcxX_p5&Fsv5j=o8cL+y8soFZcz-ukzWfzmT_r(&N6xDj|ZH2^~r
      z%ucmqMGc;TV}5TNUU?FL8XnqM9-9PIORgbg0@_sqLG$6r8c!Kc%PAzzv37jMuAxp&AV9e765*{2n7lU)oITtP6>S@cg{0B}8sr9X%{tw}T|W?Ve%io{5RgbH<^@_?$_8G`{4g%jc6+J?MS-BKZY8
      zpjw>;+x8uVPq{RC7c#gWaXdNeO#%NR!W%ePY>kl(0ku85
      zkQFYLct`D-^b;U>#1pFo(d)iP<_8SnD&If(Z@cw7b1xL~>D68q_X#so2_ChQ
      z(nz_yUg#d9LH7cflShYtV``YK-O&PJ+}K;2Aw~gbA+L(@n}-50hjack*@EzmD2*uNbrJU6;a5?3O1q7wTd+iaC0M_i_xr~)KDv_5(7}a$?eSEHk@eIaMuz^
      zdon8?wSs6MQu9@7;}9bNNf^_Mx5xCBMO3TsEif<*@1gD%5zM8>JkCOX(wjyj#L*R6
      z)kDz!_~#%tm!|+6KlZ=y$+u!J@s{?;vZmgFH*9^?d=GXEqlZ-+hGip%qO?WMy4D&-
      zpo9JNNwQDp+?u)P9U0J@kNU;ICbLg}J331XnG8U^=@X5lWv{a*D+nECkm6uQcm7{W
      zZMp~*P=kSF&48_KtyvwbaUpKSEDEVX^7!YN^wBZiY*{Dki&X;?9wh|LKz@!ye>HOl
      z4IgIqLLYY@DQ@z+f98Z6Q!0Z5)=3pUY1`t&E=z62-G|EnFy0foHUhC3epdpuJ&si_
      z`KR&`eB?q8Wio$~iquPl;*J<;4^T_{2@^P#?7b}i4~p>g<`*zGUA=6iV?F@f?Drq^
      zt>p0Fra!Smyy=l23~>d2#N!&uzVl9wRf0{DWwsWRHxL#H4HeJ-RJZ3h*r45dWz&(b
      znbe#fu?K*H(mu*
      z@B084;hgmR_Y{^5@Iv*kJrsIKDN8^|WXtPlz-
      zDOd4EA&9_qG)1#;@B
      zH0h34y>B}?XiH53Y%*zPq}k|tR|qY3N4==yqO3`_{0)cpoQ4G0k1yxRt?e@nfEbUX
      zT=r0^Z(eeI!DprNVG&gvio@V24T%ylxn;iC30WVJks1+;HQZT4!v`d&ccR0@W?CHH
      z!k%jL@06>41S<8Zag=p5j6PH#46~kezb{;9Qd+
      z>Bt(4*axH>CG@AWfv_%!Z3d30%F#(h@>9MzhOE;bnC15*Or+*!@0q!Cgn-zr6IT%W
      zGC3b$xHqMb;0j~0!Osdw$Du6EMjHF_?-KBP8Nwx5*-sKy87lE8y;Z@_V&l-Uga+a7
      zvwjLr$+8cfYLfZk=5$WptOwxfc+aEXYnz(*zYvve?=&kx|;fax0ccO!nxoM9@JpJ+&!~246nOe%nDelB9RKNj!w0B
      z+`(Pa)0Ydo@{|Wo-aLsy1`_ca8KDSe?c1fpuJ(m8=!l(=2k=U!2XJ4`p%rNdtY?Ll
      z20tCc;GS7ZSMh~EmC@Coe!kt-L4JrNu?U~LgUB41G4nQd-r#iOk-<-0erEQ;J(N<|
      zd!#n)>ETz|Q_kFrCutmG5=4R4lLQ0W0uV3k2|O;CYCXHIIyOmx*6i_4ZB#
      zfX^X0)Q#2Ja5QH?*wQ%jJ1KUY50T-bBFea!L6*XRV8zoA@1u5XEKZ^5Qr~w&Q1*ri
      z4Ik|iK(D%U0fej2Fd^5J=5+PRiv5}xPRGd%lHXGXK$%1P0F5x!FeFB
      z&!~%nr>!d9`mu3RtRr@sZl?TW08F_YhD{Bq-u51XI{U~Flz5wZCyYIo>c+L2d*@oi
      zm-#VbmNKZHpWk?&g^Z{NPKX?hi^GX@^ws7@f&^R|0t#lO4&IjQ!~%kK22w1g+ICK(
      z0@^Bf4z|^lB=cgmF*vd$?1S#?sQvmscn2m
      zSy4IMpa#g5CLZ;D{8Jb&{A-k-)H|f!;meK0Yte}SU2&~<#9eT%F3=2zOAZ(=qMcK)lu9?
      zRZ-3wfhv!{IjOCkP0|fElgOCInd0(5E*;M_M
      z23LCm5Sx1Y>zdDal+TZ~m#dx$`AB#4eu3z{b@GBX(bwzm})OSzoOYqpRvz@@>*ST6YS{PU6K4@}28N-+4j|QJr|ALa}GV+{c
      zS5`ImylTR4n6g~4#LNA2@D_R6ENA*DxH`C69_xJ4QnwffC0diC@^TdHPy+bK)!-d29d$j
      zIlc7SWLvsqS`2xmjZ)5)!O04_1?ABjK>S87!!-UO8|^lIW1x}hq(02lnafskv_8Tjaei-E+4
      zn;^f|?3N|(iCo$WB1+{}V-UwH61eYHMLL97ab)Z>_-OmKd!Lj)P)H`9&I<0CQI*BP
      zv0ARbb(-QX_o}ewK{5`5pc}-*>^+G(4jJkx|J260>asfI6Gk^nK9q
      zl(Ik=Mec}v72XUDX{6~Y{|U%eBBzFK=*sm^Ig3$FU!MWHEg5=&9e0K*MPBooZ#$-9ce^W4jUZ6<;8jRV~9K|@fU6h3&-#99M$
      z-Z(SV=PHPF>DrpkX+}%nJ(v+e3rIZOzZ`Fj&p>d}1snEp{@jI``l9pRoVzo?H;zr?%8$(apk2@84m!}&JQX)m
      z+##a35@x987}_&ST_l5F=0xGG$vp7|k>;mOyvtTc#r@E!*e1=o>cvAMEP}j^9yG6p
      zsXzE?jU2QNBKFEGH>oTrQu
      z?Uvu}p@93g@Bs9fXIZBR91J9^0bb`9DH9Gh*mD!@gKqk(6F4)mxRJnF9#7pc*>Qw1
      z=s>q*5>0LT2QYL%gn&(=S3betlmcNL2^qMl9oH%BVS?p#an702Y6VDQUIG)mAS#Yd
      zG&&+(g&B0v&PA)#_UZvpk2*uYT!`&W@Tp-DTH`KkApM)laryxuS!c&x7~%)PCcC#R
      z)denIvGnel8N~r~D=h%bNXAdlgXi-%-EAOHFGR231*$4QS-%DzlM9xrO$InzW}n1+BhB%ADE3s{hu3aCHUcs0V)C2z!@>9vk{I$W8*J}nA}Fet%j`^
      z4sZMx18P1X|91Cun-pjR;PWBM4eOL21~(m(x;KmoJjtQ_Hr!-R1Zx#`Vg?1}KYS(8
      zxaFxa0HtI|7BpuR|>)S(V7ZK0t%5z~5Rh2{jow{mJiE=}tp&Cfvo|y|U
      z6l&n{d(52*gf1z0(zw}}&jcUW7{1*=tapwai`{vd2HepE@r#=8yb3^Q
      z1O-y(nKPmTaED?5dSCct1U{X~CX#8OG6`^__GEmdNS
      zYPRc11AF3G^Az7lDUYu`-II}H*2FYQGq(rnMO7YZ1d*3CuXjU3;_R=oWKR`=;*op-
      zV8v7Vi4`&L;Aa9zs5tBI7HWwLreEi<7eLs)-eTZq^=Fb@>ETSG!zCed-^dWP!wf`J
      zK=Zy#>Es63=f{N!9Y&7NfNRr@v6=n`0sOTWINmC&JLy%1fK)YkH{c=5KP;_r>K|s#
      ztV`tx!+j{}g+7nHSjo-3fazVSiNj?7FIF%84chKbDSBt(&7Nz%M}~eXT$p>GyO7CM
      zZ6%-P`e0D^LEfiLK&$pYQYmMVNxUJ&5uf$25$N-sUzs?v05a2U;`5Zm)O-cZI$so0
      zr6$Iv-Z?WEsLb$u1d2kj-S4-myNP&D_JK+;@*RQm@gY#{IoetSToY_Y1k~$)sq%>7
      zvCjZaRPn@s5mr6KZqe_gR~k27gD`&jAN)%M;6mlx|I9h}mHgKR;u}4`-LG7d>UBb(
      zg50|wg{%hVl;$6}3#u~Iy_r*x^jUx)cXpF~_7mozoGwF
      zpt?7N*L(vQ(^Da8bbT{t2a-212ljbyHXm^RTxqe0FZSA3%*=<1i4y_WfL4vy?860i
      za090<9+3o$_!8`)WOU9#+%otAtgm5A@Wu6mW=X}FAK
      za^ePJC85FbyE%t~({Rsh{d0ae_R$!t<66K-gr}c3zua);M)fTjOPF>y^vd+-)@`nI
      zWUqDBF7*4F7Lzp`zQzqd*I$Wgzb1+FKM~EcxRxL4{Ud`n^9dc{-~z9U$O3P+9(n^3
      z_-Go9%veda2=Psx=zdJ&coNA?)BKzQZZ5-XC8R1y2xvE@;?Z2kH@KeEOFgMm@;MLN81UwsI
      zq?jaa$mctol8V%IlhqsqdF$=$o07!%tiCKjq3%55J!d#i&ct<^35QWE>3`w@7@d)O
      zgyXh+eCipv=?Tq%R2qpS_NHnaO{IWa$I!3C!>t!nqxMjJDK`XBa;^n9VEvOWdx@$4
      z4@ht}5on%HzlvEt)(8jYSY8&BGWn5YFu%!I5hnZ`!urJdiU(4Daw
      z0csk2*6Cd|!cz7nsDW9a1SZVn)3uA`2MN
      zp5V1fcea9~@yJ3q?fZSulJ~66{t$x!D9_k)%C1LhP`PrTZVV*{ZtM)p&Brb&E=EtG
      zvwP=Ru`GDh0v&J{NHXNhMxjfHSHSQzrwBe;YXGXQ$pwG^FC65(#2hq&45x)pnV)Fl
      z&87wbFDJC08E|#u#ho$CUk0IVg3N8n6F{G1Id1WqS!f;c={-w{%0%`a%0fN_G#nba
      zg3t~ZhpQ7g|*XMm%%8X0D^V;9yhxe-$H5^}Od4V(P
      zbbXr=W#X4UZQ-onVQ@ZghoA?s68e9it|PDs4RPORtrVO<=n;rgHxwH)lb>Qb1pUea
      z4~apN1%iSikz2Q9ID;0t(bn^fpQfLe-F*!Qn_OqgV&F8ODu5m5WoO=iyf5s>4p8$?
      z)FNZ&UrLI?qgbx`3)VFTZ&AR73Tg}t%b#H0m9E_5X`KDx)qD14uRbo229L5TzHqFn
      zZWkaMLTNiZBVYy%m+{*sDPa-qUN{qz*?Z{+&j5Nnk|n@yR|eChb)D6=OyvC+g`C!X
      z4y%?=rVi-YH*?Ypb!CQm{=d<|S$t_9U)=#o!JAFEkii$JHCxL1zRfKy^$w-0w$P?5
      zSpRZ~v+2`2_#*G~@lnW=a==EjIlKls9hMJ)2FI5tHuV9KEf-=ih%dNj57n94dm&cW
      zAX@~OWi&>GUoIGrWk<1aq|S
      zbiuX&sUbj+v>l^lu4nfjy&DebOUBaOtmnGpaTng7{R)^e_0|@)HL
      zs2O#}`OhtQQskN_FnHu%Lm8wGx{tg8UGtD_HEK|H!l?k?=+u7CzxA3aC!oK
      zLAfp#eQ}eHczbQJh`&W?NJpSy4?V&D;3zpL9%jyqwgBkymy>sv_3n-^2H~(6j+E1q
      z8h}Qg>4=<_Oacz;rW1YA=F_x?V<9lXM2!O26)_tH`@k$+P!d5(yKgoQ@
      zLFhI!sBK38NRn;6w^Tp^RnA~$ElJRc_bJq%$>zU4=p+Ev8D6w>fj=ZAx0Y8|?ja~>
      zeGK@{0nM}RmE%$W
      zCW!$y45nZWq5KUHr7Uw>Rrp6RV@^DPNZxg^f`x>M&)rX9IAxI#(7a8`Ajdpb=m6Ec
      z_7U8~dH3}DF3UJnugX}1WrCc=VfK}^#y;f-X6&SAI+B&vsU&|NJRRqGG|HGaHRCNs
      zo780UF*4#qlr+j*!Pp1r1vkF^tkW2v`G|*IR)UYvb>ZM?Th<*iR$XxEAk-To
      z=I2iBf;TJiNU)wzeE||U%M&|8=aIrGoomOT0zyEnwCJxR0y}|L}s}3w9f9t-*)o7Sk58O-F)b8(fC<=fFa@WoZgW}NTW}V-+OHl}V3W7|X1TDDq74KH=C&KpRc|6nyh}i7|7y`X&c}oN
      zKR81$0hl-}BWf$Y=~-63#P>I#oRcTfNZO9Oly2*T&U@2rjwjL2%XU@(Pj8@;jKLVM
      zqK8__SbHaaV5XOaxn=X?rh44cPpchCPv0o^Vy}G4WE+LdKQ>H*2Nrvo+swKOS6xiA
      zA1s50Z5jgv2kEfxl^0GTyf77h)KumQf;5C4RHcQPw_br&i}OHkV|jqF)TCHJ
      z$Z?E52FgVwk_)gjj)B8DWNbH*?JW2qIXGioxeB(NW;C(o0q8Msh8$o+l_=bVvw*)*
      z0dkt3AYV6DNmK7W4OtT~h8kVG8FTgjeHRpT3UAQ>Iw;JcMp#71P9r5pjVZ9qz>YH`
      zY@{#GWIrc?w&dsr=$_k#QOKoTS|I)BO&W%PTx&@Z-1G_SJqff7ex3s^uH}0IXMaqE
      zGI;%R$%+ebRllmN+QK7p@Shnf`A1F0oEE+{)Qrt
      zS1R5juY60$QZ4D;O9TP(f!8H8VFghG)Q|!`BX%IRBcNLfiYSpo8i9s4Gy;03P=lv;N%3YlIpFRSihw595#x7$19!MXy;YkXfO;W6?H*D89z{YsPaLmjR=c8GUNrw
      zJGh@YaW<0_ZtZd(RSV0J9f$4^XCoi6Phb#+=L4s^nJ`ceSj!P`uC2~SBWD7P!7s)1p&Nw
      zq(azqoDN+;fscB%Zhrq=s?7s4Z}sj^WHcwO*?_!?_@qbymj&F*v0mg|katK;4^$6b@(Df!
      zRqz8U$t3QZN^%>tz2ZZUy3hQ%8F
      z2w0Qse=J>fTvS~XmXHROUSg3(x^o4k8v!W^!KI{>be9km=~zNK1!)8q1SM2@i3J3u
      zB&0#QQ{X%M{=R>?dxv{>&zzZg=9%XV90K-EA!y^%pMktpB@eXRrFYPM8X${ra%TQ5
      zk1HiVVR*@5rkZ6>-Znow`mK(0_V9D?we=d}o^(j@3@qAY&?}vMPQ?3>nM`p9fVx@0
      zq)`xvlpF?tGbbW@x>UGlj-~n?c}o8uuCw`^9QaZ{_8i{Qa0GAk%|HK@0y8r1buBzT|u3!J}U(l28&m5Ayc7uB}b!eM^z
      z$o9tDl77HPt-GK!=KAyK&zo18P@TtDfZKNB2%2Dq{Gsa7%u>k8E7q>64Rt-Jz`qdm
      zdEYvR3w
      zht!3#Y(_{oDbMBL)D^T|Y^`6%g!Wx0-j<166@HWy`#@Lj60%ZgVZ-sd$1mpAi
      z&4dsPRN>tiz7qgwB~%a7b6_*c?2S;NR(K0LOQPcdWAh){urgo0J8vdA0e}GA$B>|k
      zG*PLe)p2t$N1BRuIA&MtLpfE-&}~lw?9P}DM{5KqwkLXT2;d!1a;N_WI&Z#7a?m1)$yp@Nw4MX
      z9T6TJ@f)-?-P(PW&?InC`tJQtu5FAyjS-=Ie;W1spP+=t^n%Pa^-t6{d#7byk%<@q
      z++M9@asbFsJJh&9X>tew_4qrK_R(M3mB(lie3I?
      zF#2W9l2$oKobO1^2mn&ROrq&-9SriQHXFCjvzkE&5Uk|*?Y<9;?nZ~G$Z3
      z`kM`4#tPHpg5CEt!2UU{Cqf+(v60&FqlBz9CPkk#;)=c~8&F4@tUJ^3266HYc|iWl
      zUB7|?t6megfd702oVjL>ohsU=?HW3`h-TiAHHU@(Xh&en{U+*z-ta8?{_K17=UzDF
      z*s!{lq#n+7if4e;QP-!eI=v6hx2b`bD_QzW!0J8U;a;%|0k+;5rt%+`+@~2w-em3X
      z7R8^1W6H^a0z%5?R@mrXDiLbp6{p#=6pXm3F|mOGj+PdBo=Wcki#z}svBuKf9;&>~u+qO>ckMz!5R48Ud%LN`E`ZV7liVK**p
      zpiM(W#{x64D$xDRUQkNf)~fu5rG8TGXCs)@UsUt>Mt~GF5L-kuT+hb@lD0#QhqUL#
      zn$$t(gVO5+bQzAw006(v6RO^-BZU-{&P7i)K1{}pS~(mm3DW`Qt!u1dL=gaY4miLL
      zINP^leg)_NMF^KY^QNM1-k&HyxT!1Y*F)9)v01x*txVLXooosYQAq}rHVeCWDfv+yAxxe_j*
      z<#xx-1{cV7(&wT$y?W>=W;plSf1QPdg&DFgqKBMBaXrYQMLwb8+&LJ1;G+mkFJS3x
      zZn78N&ngmazoLKQaWIfPho%{!~-(y`9r_4=P}>qqL0fr0PXN|Jv95aH9f0?RJUX764N}F#zY7)_f5J6{sSS
      zOtIreN`s5nS*IY-EIxqgENuapwWjYs_A1MBK>i+mB2Srn_Yqj(oD9dHxtHAeDY~vV
      zf&XPDsFGe`%wGUNN*5TN`^E%}>O4}to;%8kuONr#&3A&$nL|h8hyZgQB&fPC?_1%i
      zvz#Rny>JowVd+Whe|g6~}{*CEyyWm<)Ff6#?2Fr>}`nbk})*-hBw&x4OqH)~=7U3ISHdzF+T^%igoi
      zl@IM>YadL7f)0a%8qULm14s~+O$7-eyiYp=vz71gA%6pC@dBi*eF|agqgX>#xF60U+BCxuQoH^IrVLfcB}TY;gka(BdPNKu(=Hav
      z=z{&HS)DxsMp{4r3ysaW6sWj7!T($_R~bs4UGh)3x<^DQ21jD8K#Idst%1MQ!9dqT
      zXNb>TbV?CjYTb#E(5x=mfNb)dIB;$&UG|cn8FE8pzH;GyE~Zy}fF-iF
      z&3`~XL<0T-52ZFyI40x44>IFIe;*F$VBOH+$;-?|bhAQy_n3ev;_>NIVZ9G}MK>=;
      zDG(cHVpui_6)3ZyoVKg^&~s>oziI@g9{A(ZQ-Q+PU5IFV9#_;uUnfMR+nuoJTs_`n
      z+Ld|PIXmW5nsPk?5xP-0~`~LhYk2TiqNR0_JEXCq(tBk
      z2HT@^w1W^1*7ZM1$f=@0NiqKi?tHBRw5azaU#7Vvt~2Y;;?q+2I3NU(Z*k${wKe4&
      z`m-GlG+8LF=!FmbT$Mc0Qo>bINmc;Dj3~YX<9SBIEEA6lkV@7N=((g3ZmD;9oWVvd
      zZhb6QeaS_GD#0hza1BrswZA1UHs
      z5memMdjn<^_n?+Pv%m|rwiDMO1)ZC532TX_8B&1_5Yr;=9HhsvAHx@LmA_{
      z(58WxY_7i^FQbL4GGV436nk2OIWUyTvwU&w6EoxV!qlgLGIv*9D|WcYWC@*BIFzxg
      zpNrWVGs~gm8K@c?^G&79uJZ)=4yz~qm(UgThuB)w;~x`DAfwgL9>{C}lO)hx`6pm|
      z{s2Ku^ejmI*q0@PQF(UWk_)6F+8*7ub=kZfwzJR;-?YXNb;hOs4h_R%7zf}1H&%Dj
      zZz-0Iygn0WdJ7?t_(#j&U6=@#w!4&BY3UW;;v2QcvV!OjgI;Zl3OhBSxb{b;Vd=k$
      z+{z6prrvQa2lWO(^j9_cra+ytztj794c+VTpn(xbnrn#sC(i#Evcx8r#T@77fN(Rw
      z3&VupI`z`e{&!7(#+?u`Ap)qZVkL>CIiW6W5H)0_3;2Z1np;*CuYF|3%6Z0tyuC7B3FStROx>
      zZk%iKi;BgP5Z;&vi(|F|T%7<^)~#tg6$Ezc4UWnx>T8O`x^d+Y9oLzHg<2Zo4azf-
      zqG-843H&om-8ctQ9{_P+{XYobaR4Md_9YuCO=^V8&+#quZG)Y{F}gTQW~@j2vEYnX39Dzcu<8GPC?MDA`%LJ
      zwf~Qnevtr_#jm)6k73j8CW`y?zy1gD06*#jRG)d*NCUTdK;;0bNcsi~1Gftp^&HDsIq3FAX6%J^un?$L^$0k?Tj6HVR@k9kApY}Vds3!Oyhf(K=>Xexz`
      z1~M+8msoM&*4q5*p^2yb>MM8tiZ@kBk#3g3i^)56Fw|ysM<83@J@pAA
      ztu({7Gws-#MbL6&jjGLXMMBqGWdr`<=hT7j2SIkfQvTj}+RN3-`A4~!8Zlg)G@$d%
      zF}da>af1Z0ft#a@>xHMYX?#cBLP7nZ)rW~N52X-JaXT2%v+obnAAQ%Bkg3stl8=X<
      z!uO8FdJHp7Y}%26gY>M>THM%VHD6(C>ZNG=Hb>OP-Ig8m`VBI=&LcJblav8ZWmUCQ
      zn!O`D5jk9p3|fon{aNN^_fUVz#pBa9XehbH(JgtXA~~z4qKs#TnfL#c0^VGf#^N8-
      zgryh9p|8Kbe|>&K6qY(^K8HS04Uvzuz{&|MhscSA-?~Ys#!bR_jr27sp=uHromc^UKyE!U1iQ
      zu4C>wiIdAr=%!+tQ$n7UXaYDZUqZ5y1n;R=OMQIXnb;2#Zahv9y)%NJj-Xy?1ay~c
      zA>97u9WVywml-J$6~xz4%%XdOhuP(`c~mxjq*SmGU~bKRvFIuyXMJ-B&)?@%iG_o4
      zOKRJr6vC;OTAtqBCHBm=1ih5Nw?ZyJHvJyn~8&Y33>QSG0k`m+>k#n&mBR4!P?JgKs
      zt+d(#?;3G?11M^ryO^%aeJFKaGEI*eYL!yqM2gxREHV-mzhR(
      zZ)q4a3L*e;5=o4`VEu9?<{UsIzSai`CX;yZ;+1{+B4DImvPp7Q2a*TeP7|a3{q1$E
      zG2oVerUS3B#oA-eb?0%0rRu}+-Vg}1+^*O6qi(pAvIEB9fx<~|v#lS@(ud|d^lVbF
      zLjt32B?nn#$SaI(7}g_
      z>+Y_oSo-t##^cEk%Dy5^daRhbN~pxE>IU&25s>+P)5@TXCr4Lv+qiz$IE%365ubE1
      z-8GDIx!pT#VYz_a{qNy%AUR3V{YI;|qU;3|=@q{lMY%i1=R#@xPxi4vHIU)a>fm
      zq|41Yk2Vjz6+CrTUPgy8h~o6-u}|{QX4z}|3nPdHH%D@fQof*hVoG*r_qP|y7CbI{
      zcbEz%Vwd@ctd#Z2DPAO+VFI+3E23hb2k}~&To#AK3~fH^mA6EMZ!`71@C$e^;i#JF
      z)wGE)RX2ugkM_S+v`*WhVR@dcpL@U@8|VZD(*K`5C*zHDlc`RzoO9I*!%hM}=Itoh
      zTRQYLRhwQT@hJq#jS{D&-WS|at2G`PprWP|dWGP9GMbuxO1Mur9wOG)80}au@5tHe
      zrkGB5+i_dIz~a<4_Zpjdnd4l?Mx2RXt(UDdIriFzTloD&Qd~kAQm)+B5A@fAv%^Xsd@^urf@4x2@@
      zaHE}tfiIUubp~S!=MaSKEHlfF!OPG8ZXdQb_maQZe?%$swf`CIutfg(i@uk8HO`+e
      zT6CMS2fl5TcncJ4dA)}91=lqd3@tW0l8?rtcmjF1
      z80-`bBYX;k|EjWYsNN`|345=f{Yw8Adw@NUno<#``g_h+wbcuQB2Mqe0;~{a`8_+r
      zv0F}6oI1asXr#`w#l{v6Dr<-f55=qMH_5C|_7psphP$X;)2{RRpYz{0JXt75(v2&$QMD-IYr3qvO|pIbb=Ncc*M|px
      zo!%TQ2wzYnykvQwcST>Fx^eFYyY*YLc>i(%o`PNK~&92EDgk0EC}<%g1#Hd3t-7mlUP{xz(fZ~nMG(7iXb10mX3
      zEAsP+OpZ@x*MBxZg}x@MpVPYIQq)zzUf|IMj8YomQ{{5vQ8tA9$)D?jP*g+RxCCbj
      zrbmI*wK`f#o4OV!oK>cusRMS7Qt}aejiT+>Y;t~^p60d$*hhZNM5_o=#6Jd4<3Fh`
      zsrqY4^XJmYnRZA?Aj67-aaG6-rc`Y>LQ0o0q_O6y|E`Nm4N>)@S6VTWDQ1(O!Eut7
      zDf%4IkBT5I71NV^gBQY_aLI)(bC$eO9XP^QUuB5Va3zIjcBG_U(yrSw>0<$@S!=}L
      zT9H`uZ{75e#&pTA$Pr2qr##@l`IEaMojG$Nao083g5Be
      zH_a~9_MfJ8#L2uNborYRlHq1on^}@d
      zJTUWG4o)$Pv)=W68ytJz#@Z-sX{7wbEGy%8vwvAwTgAw|$v74+az70lseVys
      z9~fJ!dnw}FHmnDG(^of|e;4guWtxElO`2T}Hk|fcCg`s?ZQ``-^PlS*3)xtUWh7pg
      z9+@Ap^Ng(wFlMhligc13$#U5*$MC7A*Ou{AOUu7&uP`RJENyl%QCS{|DZ5HEGiGw#
      zTkGfPc5|G8Rp&|@mWf`<8qN78Z#*==S2O*R!(?fM_DMY^W@Ut=3!9nF{Wtw$T2s7F
      z(*#*ZAjZ7Zx$nZ+<<>4H=~@C`CUy)kz9OieagQZ^woi(Xl3-gJNyhM1+w_&RSFGGc
      z+5jHJ_3yePd1eYyhKP|9yrmI3J-%v1?an^zp759ZozU0oI*+d9V=m$J>IT>lv$?!s
      z;*X)f1}oDHWNoa24dzCUUrr!=uf@;oJyC?jcFDZ6Jy^XQY$wdNmXuD98wz
      zyv?}89u)ZeroWltmUZ|pK`?pYaoMA0|At$B1q_=Vn66JW_g#21ll65KdVSl%*HxWW
      zHdGlehk6jAejFEkn;o`gG;Bt}9Tj&qHR2aj6y^(k7ALHWIGNo(a?%T1X_ziKDC~X1
      z^IIgi?CE7(^OlJH@HXBmRq=w&7~BMr9#0(o#Cd~hDE`Z|38Ieauja2y4=2>EXx!dO|>@tn%k6MYTLB!2*7*|+`^aP08Wk8>{A7t(Gn2Uq
      zaMR7);=T$9<d*{?srPUNiw2NHb<4VK~E;cY-Pl3hS)nKcBnyKp-X3$
      zQ3l*tlA;P%wVwCEtFC`QZQ8AK;VmUSNA}4|4qP+0!(SWKAImaZ(fu_$;%e&?*w|ZP
      zy>4iu$FGj0Q{ydJ@U%5$ZZ1YmQ(|7F&qXp@9+4xZf|Pd3&!3+urUwnP&z)F@B1him
      zwpHA*9}q9E@%E$fKX#XIuZX8p^A2y!E>pI#erR@@dyM3Qlcaev|4!9+KpgsBHzZo?
      zEh0mXnD(ruYl(j|n_J_1=ic`)+>GW8q|`O}?D5jb=YXAEvxu9EBgdWQHbK`;x5|Du
      zKPswktFXvF?5fu?o8|4&
      zgsbBnwyOQ#CLs^ke_eG~yeN0sbIDojb{n`r+6bLb=)P+U_T!)%J#$NqBRkirpL}d!
      zf;`lhlB``F++S-jD4%eC;C*ds`AP;tgza4JDO1Wl*jJ0hYZsqY4-}sXzLd&jR
      znK384IWqEQwW&+JiGY5yheHP$_wOlf64dZs3P;5pY^MvNmi`M>8^Z}BO4cdN8IK+M1J=P@n(m=40+-3
      z&zBt)e@#Aeb~a@K+O+Yo+n+rLDqnqR)GpznUf+krBg*7u
      zZC!u(c=DYsYw()o8^u}Yn}X~kr5(oE^@%W9J-R{5@8*H8Zh6#r1Qn-Hf7Ddm%@ye<
      z>bR#;NL#GkJz}x5{NIa*y|x8u|{%Q})Sv_gm2Ru@%}i@NBC1b>s9iEWMf}dVZ~Pc7cZ*W^@KJ4rL`Nl@3-mKl-d#t9X9#5{Y$asZ6Z2
      z$U80PqJ9VtTJZn(Pu1ZQcSXXG4XkItxkyK|^dWA&SgB$M#&-|CWQw_}U@wQo6s)bp
      z1=1=nu=RI$jeCnGForEF3}IcU^>J;$HVVFcT0@T
      z>wZ+XGw=S5g=*1nn0u;^Voicv;eJptgI&XBlA-CnWreTn5_ef^Mw}c|@5QeEQ|*dm
      z;NHE+3lfa|%_DJ`5gOlIXp)qoecPDAqDL(3kS6s`bM&hi0pDArPVxzh#;B#md%9Je
      zbx+fhR(3loua}@O20p##=m4U
      z9;=-d`Q46L=DbwvIq9V~msB%LR4a4}T8^r_@(OZ{qxMPuAoI$t21SO>subEVaHVF1
      zlAr2*>M8J0c`b}$70@Rb)#Je%vbtyKjNpGYhknv_?N^T8j|j{f;^~fgzz!l8fMthI
      z4j8T2iSH5>t~$KNgQc3pQh9cmig$EgpJ4aH#}q^XWHvo2JhCw+7yq|6
      zo^`(6f@(NsfZ^u#{3>LDBJ9Y%lnCWZfKrSCY;ZyCm7V3|7kexPrOyiRVD%qM_rCIo
      zYg5$QMvSwvv{OT%0V$6`{8!^y+cUT1p51#$oe)aCN=muH3t9+V0A?vr{fcmliXcK=
      zkn#l3m_Tbk7bMHBGlNLIX&@PbA$oLYunEcm7jzhiAHri{;}(b2_db+V|8-XfNJxxv
      zNWQa>)f(Sr&iX<8D3eDFHfjRW^gl@l%VJJ104IW6eIyBR=N`Y=Gaszpwuh=1#&I>v
      zA6L9FTUjQb^_ec>&8-Se1rt~fq&wzCxnPRdlF$9XGlFs%&6%nlv`i-MWa#*xlLiB&
      zC{v!cOw%6?T%<^>UQg+_T>G~x;#T>a<6Pkw=|vicd|^p2vLW|2c56Yi>(BM^*w!C@
      ze&Dw0Fi5G6!C3>WUX1D)W2W3~6ziEw?@l^1AyjjC8GRf^3-u;;=ds}T<-d(eu?~Sb
      zW>N_hJHN0J+hov!(fhBaEuw8}0qeApVK^B>)qwtUWn0w)KhA+n%X{lVEn$&EYFRNz
      zL4Q$BFR3d$RDTvw3{Y_civ-KQpYHma2Sq8Zp{V8Dzn^|gnPS+BRZ;hBNX#)TPS=W^
      zPs-m*=N5DQnYn@l6JmvW1De}uBy&;A6Os)0FK_FeftQnS6#
      zz6RkMFn>jrVdo`~8F(e*oGe@i$!gh2FU+(`;tJU7QTt-gpu44G4HyBOQGfPPEZeVk
      z9g4yifP*xBvYtcBT^GG{RuNV_WRt#3z4OItQ`ZV8>6qhTJv3_BvJ9d7Q&l_WLevb3
      zSuquDou_tFqIW!C7LvI|oq3Q0MG0#=7#PN6M0T)a#F=p$g;h2I=8fIq2?Ax;-
      z80q-i7)sHwaK&8;R2>6R{(zDV8+84TK`4f7w)W*NKPqFn#Cv>!E=Pry8^hcJ|1O|n
      zHER%#;NewJ^=@{BfN_r5XSf>NtXUZ4E^3my@-|Q4XbGQ8xxEjVT)Ih=zmznSoJ{PyaKz_#47WmJ}UeI0C`@Qb>kum!!lt2XmFlIAcI>62ab^9=)Rs-8T_`O`j0^+e%%|
      zIlu$l6&y_MkiRwj78fcX|G9?h1U#~dW?N(>hoZG2kVS*V(m^W-e+Sxg8i>4xrKY}y
      z(I-&|IMxVNrR$YZqrQ%x>FkZSZ(o0D2t8N$oC|aO8F6tLk(~)!{t-Hq(hnp8)chqH
      zQF0xyqeQx#zFh)ntv2>OWlHS@B8?v
      zpB_y=Y^3b~{4Fi)=-2|%jSOyzN)KC4|3FZ?2-FFgXe2)S!%!3Aj=a=Au<95r9d>@6
      z5au^YV%@(EsO~Uh-)3!=ZAZr!f`suE^E))BmUhhur96C%^~_=Je};Io=rN%X%U*F5*OW0_Gg*4PM=5Af3|0DHKEX&EI!5w=QplVfLLC4<H
      z-Rpno^;83Nj~rE!#_W50sM6io>n0e122mG3x14?^>z&h4+RIan?$#-$Iw9~=!v^R+
      zT5?I0`LZ$v50T6#zYouv2OQ#0+H+zO)Q>-qG32GiY)9={JK$(@>NPUCNwwz?Luga8
      z(Hy$rkLZ>+j6r6Bmifgwd53lK%d)JVf(Ex&F^&N&f|)n8{_9Ot6a%L;ZHe@#K^gV%
      z1RUIL>e)&;`}S3rq8%ReI7ZsyR|;xq2~9T)OTLzD$JLTdK7NDJvJ(tT?WTZS)*XH@
      zCl<5C1oOKIBkC%J)mxrjB*C9=o#Q<7z8KNY_}nv}$U2@Rc71;g)vlcIF
      zZ=27H>56Q`L*qlwS0wag1>pOF!gJK0D54w?m5ri!z6ynu|L)Xxv|S@
      zoPk-JDTaj?OrR0I9;s~A1KfqPKGyw224nG_%1~EUVpu9heOWA-?`a`heXlLl@+fM+
      z;>T@qCusG!Toct-1t^$EI4>!XQ?Yie1S~rN2z+tOe`#LaLwS-H4OCP}Bpw`d02#W^
      zio>xFHIl@(xwAl(OAq$Y%6d@(UwTia)AP|14isx;D6IZOx(|MQ`{Vs=X_R%~Gi~IC
      zqO)ak+*BJOveK4oZ@iGiT#RjPA-ar_b2q&&`f(B_+vcJiX3D&5!3MRQ3Ik3lQw(%;
      zN+}C)@S-)NdT^f!$tcVT9$Cl;@Qtyqw0ZGoNpP+XzcJ3P%zES{KuasOJ%&5xl
      zeb7wcFKoV{qW(1KwnAYn0*rh(e(Hrkdt7MI5Dh~GO;%@i-mD!vugyxiURyW>=#kux
      zD*`*P`gkz`H7xyldQQNd4Aw~c9dnU+`FF2-;RFy&RR{WW{DSK9W`?-D?%giLE|if-
      zV_go2tEO_ID9Z?7^+4WAu7_`Zmihv;L;Kxej&XPEbSFg$@2|@|Z@YRp*|zEl#>>}-
      z>G;V4!?K_Azg-~AyAb4c3&s;>E(1Z5{(IY^xa8>%S7#djIwW=fjyb2)X`ha+-*WPw
      zO?a{;+{<_k_+*M!;F+S_H_on=1SZ8eM}*rtEDY0?c#=ME6?l{3`?1`YjZ!rbB;7i7
      zuvPbJQCdOluu)`g8~l6XmwZwyD@EZdhA!Xa`P@XcpK=VsnJzT8LlkkhW7G|x0#c`d
      zV1ce)<+0RzS@ig)#s&{F(Rnf)3`}cmM*)94j2T`+Q){<;NaUK`Q<1*S!bAi_-j?rx
      zEHIrf2qE~(wBjWN%m~QMRU9TkLoY;z;G)sP1)x9JCGz)XjA|nLx4tJ4vJjSIRiF*`
      zx5_!PRN-b(ADrRwj}RlTkpW5J+eAz=u}=_{1)|q{Ulbn9p_f0@tzlZ)oojmGsNA1&
      zmEMU1?9pEO(jk}`ScwWnVqTW@RS2%CG|j;RXTr?jnIN?&Z1x4FjY)<^%=nnme8l(^(sPm$bgJyJgSd)vomT=TtphUE{$${aCPJUUL#|@&Q!rE00XeD@~jaLn@bO^5s{;{$_lN=MfocO$=X?3pL-3!;Qxx7ZE+hK=qfw!vfW
      zD`dJYzRR17v|Xl+gpJCOm|}lue|b_Imx2)V9uVn)gR>yZVba_0a$%ymV#R!sOz0`rg#M|_`&-2Ji
      zK{&kuHhML^j-XZ~nGjaL4Q*5uDFEUjdgTj(^9WmGKaAN6E{u`kNmSqwRAi<^y>;lf
      zZsVH(FliX_XTTx=A$UsK}o
      zwl-_J5LPdwHHY5i+Iq$&>;W|8w&^=I-@YtM=`NT!qG#yWeQYk7hTl^#l#H2IxpaUA
      zc%^yNtScnx`JGDnCD(;r++hbp#Kmc3<3e(UjO<5g60apTKEQU5Wgt!>@WPq8E|4-hXi-
      z(N6lhyL^Z8H~Yw?s*frg@h^lpK?WRb18T+wHBd7ObK6!6kd6mrP=cbdodW{KkU$g4
      z{=E%s+0YDZ7rM(DKqUYfqyOZ4yY>ZR@;pfz<=#-dldj-AmQ=Ji
      ze`jy}>5WBnVeZE#!gQTyxz7P6g5U-m(#KEO%6$9<&?u>@>VgR$vrL>@1-}h
      zr(JiLfGnY6s0%;EKR|B$@K7V1RRnqup{|{>%e>RB`3tg)ESsD=G;*`IY?>|SEFl=Jv>lgj
      zxVsSgCE&=pm$_QR%pa_vKPgWjup|L4kmiT#1nYgz+rIBLg&BS)3CARH(D8eHiOfzA
      zeY5Zes$-#_j)Ynj8v$01USnj>pS13t7?JzT3}t#(;KP-_7F`)c8))+a?MSoS;(9vE
      zVx&<^+`I22zlnGK;dirJWC64Lu_R%bY^{G4&#sRnG=yJX%018EZgSo=-?)w)(5p4G
      zdJi*|Ql3LQt%y|(*?N4kh?)4}&uFF+&3unuZ$!{avbgG_vph0Mt&kTL#CjyMZ+;cy
      zlg#>$cfvj<@5z6Kqr)39SpC0JT;YfowT7Mtz9KqsQ^T*%u_y4l-%boP&V1=XLFSpR
      z2wOJN!o|creL&CuOn$&P6_5rTha))(RE~xYk=u>Q>^8EkRAOwhqZ!>h>F2iqb(znAQ}SUN9m~bb-xPIr#{Bg%m)RIn@J>
      zGmulL63AVsy65Q^xr`X|;%J92QIP|ZkBn1+Fe=Un-)+h1bj=Iz`n$P$U~;qnCZLFT
      zi~$H|;|UT+V`+eaQM&G0A8J56U&Gw<@dcnz>hsk2p#~vH;k1}vtlCb!gKRteiiH~7
      zDQxg11mnU_idjp1gVC6HQ}Cn43S5N0AuX+-t&%}?rr~ytLg_h>_A00#1>LfYl)_(l
      zwC%331Ta?*v=g=bmG7W17}E(SK?-`3?4*Z6g7P$!o)-Rr*omToV0tSX4^_mSEaQRW
      z{7|?8GMe&G+ELWphpgvdff$RI%kV&gy&$7M{9M4leL+Qnds9xUZn$qs>~CMKuKjkv
      z>iIOyIIuHL2=LeX@Td+rXc2-F7Z8u|SkI-N^Ad*&9r
      zi|FDDyH1~8lmL%yLI>QH_c94qztLUY3#ZXv>w$0giaXnTStVnlX`OsN$AdAdFr$rq
      z6s7}K|3Q*7(|>~)R^M?y4Rh(=y)!;O)4Eygv;lOg`R;N+*8T?j#C^q!gKPJ!=^{E2|9~D*Okg
      z$M>FGn7;%smSmW^M0kP3cE~cLPHhc@*aqGX-QH!)-f7ZgzXR6p661#lL+?1dNoD-K
      zvp+iV^pO@vv~tV%0@`X5XF4p2hoN;53!_&zZfAtXkQpU4B`(eddJzlDi4j;mDFq&R
      zJ@JI$saN2dq4T)0i>weBhz-0?hRTtR-Lnk0!`T?`#3|7vhVImOtCOUb4V!(RB)
      zS7a#4+n$EOUWJ?OokFsNp0!1f*L-T6hpT1_NIgT;YU|i6B>nfscV1nIqga)cWhNK{
      zYI?dhmew%uzdgHB%$-BeH{l3peNy0?Z%(;pc}i%Of~y((bZrrCllnNyR<8j7RmEdm
      za7?xeQhrpNk}j&1c$5$D!D@1Buc7o5bt4%0(z<=e+rdW`evpE&I?i6nMlk)6v=L@%
      zLHg1AHs0~&@){<8ZV_C(4mfNKGWXe_F}1_E_*g^(Hpk5SE22JixcIn419D$Kh)<-=
      z*Pff+UMjHb@g=-~H`r`#u0+(hPve8!7+`1msDIhs{%;yARmng(fc`dup!+o^p8@47
      zSOB6K&vg|rPZyA&|D@Ig7a_?am|Ea}ZVZd5r}Dz5>SAz&yW)2M{B{42w&nn4l9%~N
      zohlOFytHcLcAk&{^U4^@F!0SV-z=9w1zlK!9Vu2>8A!!?hU|^^(cz4Ch0l+i?#ngH
      zKVHWxS=ac}Kj-7VbbC>Z6Je3J#I6+zOC1G(jw>Mq3(qB9&F-(|@is;B{zq1Wfbr~9
      zAskci10~&FIy%YI^jqxqpH|>plMCRvF7ALx=vbP7S>7&z{Lx8@ePz|L-pbs=Jw99s5?|=x&mx6qaa<)a00i#xDU0wB(6;V@Yu6+
      zD!Gc?ViXTVNxI3?ioNmuyZ(FW=i3xa*SAL((OTCTtp}$wVWX|DgDyQkgEIr@?Nu9I
      zT!mn;3ZyeHloF6O=G;mQ`K?+{crWh8;a}+Y_^$hUU`2q5(Uvn=!
      z%kSO9rW2sH#+&s=)6`P#PV{?hCSX%hW=JUbHE9fkRTa?-J4w9n3DS7{Gvh~Ns$2lReV><6RvU0jf2^5}ZKj6(>dXum@J8u90
      zon`%`XB|B~$$s~XVcecm_wwLAjtWeyAUYG)wbFU=
      z)u^2Ye2{swY{#6O`ui*u1|Ik2!!_!bfrn|_EyjlP^BKs$dJfC>sJ`
      z#*Yl8m4+|K2GqJn2b{01hfqAqthV!3%0Fd0B)JL^a
      z(&K!R3?51T>YlkhWOQ@)ZO7q{ljL7``Y&t%GlcVu;sLUKwXbq*a+
      zf!hQWL`~VC=TC6{1C_y)!|DT>bJ`jH;+DDxN-6{+?NO*=rTCU&=ou?m#PK`}K!NBE
      z3&$F^>+jxpo^}g{hb#X!LjoaX1vrJl?NS@JdAP*?jKS0|;zC;Tz`{eQ_oOzjXD19~
      zn5xzoNDG|vGygGWQM)M9wc!jXaWDggjw(8wUtEu;*-6hx64m||hjgO^|4%3x13DcB
      zpnm+jaIlP?L*j~D=L-N6YP-FINjq2JHjlW4owbdeS7s|7?sGoV$8@<>h4P?rQ37oB
      z3uIuR^$F5v6S+kD<4gV8(`ih^oH$gEg6+sRJrGa=hpN79NSAik6FaH
      z)py3zSf_CpjBQT980B6=A#Xt?QetansD|<|P(^GP{O-q+R1KbP=h<3%{gaXR3080j
      zv}xq=yMoS&M4C~_d0F-#{612Y>Fd5}46fB7T-mj_C3!l{V!80G*xau$*6V8U1K
      zzfk7d+6YTEBV`o+1BZP{0RJ$Y?KK2i3pyQJI>4y(M$CUkX(@qV>WQ{|gzz1lCq_pw
      zw!rC3`GXk}ZUlV3nqR~0R5_3U9pHW33Uy^G=!2h|{Rp}5wPei5@PmeliVPsQ`2ZU7
      zVE5lOUm9Fy0?ck|dH@cbF8NUFaN%g(WH-b@Fdl+t2;HiY?AnkDw)V+Xb_&!;wg4`Q
      zuieB$#Tipy3aU_NdXfg^FAV`%*ZBThU^m&akDP%W4QhDDfi&2kwg8A@i1)%vXh3e=
      z>`n99Y^7pyXRW!GJ-Z4u)A{r8yjU69G(n4S+qKTXz+82hgI-+%71tF9pMlHE9IVC6
      zDe$R-szt_djFA)g+IL3#8QD?Omf8|)X&`AW@&*}g{VBM*MlJ!W%h&`=+uK;~y~m@E
      zJRza)+^@s{w4BKeo;jy4Jufg=km-A{+mw(uIDtqD7$#JY1^an^r^^MSGfmImXPfju
      z8!EFKE_P_wiTx5MuxtyD!o;3|to2Cj!fXj`90R&wRBVs|uQPC3z|>>$#>QZvqf_)b
      zc3@FN43*IgSAD_o4}5VCe=ec-{$kI!{^+G3E0sU;pr&m?0-wB$UqNGDV$Wga?1fVY
      zeFJ>o`_mXZ<;|DSPdnWHSma`s#T`-Q1s2iq6Ei+Nm57hM@SI4C7I48|+;Jh&f|ykz
      zSoHj^c?-OHxzIJEmLC;#Y{F`G6C?9&g0=4zyxsPnYU)fR!}fOFob$AD;~O&-XrC_u
      zqLOJ29R(8Btk6r?vX2lmYO^)>k@Rlz(Cjk4?A&0phsQ5LAfu2wO~=nK&L;QH&m^8k
      z@SnNN_P{gdkO_OV5idC#fiV^%`w4q|9l=xpDtTf2A^x-
      zqGPO2>@&RuHf%)reo?p(SibA~V9KIMGqAdy1!dv68!GxOZv(ibwbl_Ho7`l8;u1Q-
      z59Hpt5uOYJ-i6j{?Ok6p2|NwnKX%cnafVj4t9gIo5zGuc{14OdoA?L19bSsl_6%>i
      zvo=y7;8)x*(7}g*`Eq{T(u}@m4V_HXCm=hzjn`^*PuMyA7AOd#z-q_fAI^!bGcds%
      zDWEs-O`r;LC}?Of$_UhF2ckc&L7OB|RGxvH;vIj>fKk~;gkX&Qj+(hr_}~cP-#zmL
      z>YE}tJM8)F47OyH>)@iFs0A+lB)SiJ9d%AjFw<)=e?ri>l1KxT-S@cAV{;$0PkuG{
      zL`noC$!$pG0557vy$>d%^l??6hgE_wYQzlx^%BEab2hGsYX1ZjUfbT_m1fbrXFwGx
      zj({VzZEJ)ym(WMvt6W{`xLE%Cmi;x9Z(d<#vb24y~u&b(!Ey9+X~i%j)ZrD4^LIbL%ko
      zhyd#P(CB&a2AE6QG89K0-Th(lm>2VW3aAQC)|
      zhg7?;BWCz$O#0HWSOvM`SMcXadAj~B)yk5Oenh_{LVvTi^6rosX20kiIo)SiMB^+dh(pI-vQTRIu
      z*U)!dK+BIC_c>IFGaaN8@dg^-v403OGy~j$NWfd=nf8J2M|XdvEWIhzn)SME><0?T
      zWm?@Ty<`#HFzF~G=Bs-kqbu*Zu300NmmQ(A^{U4jS4K*4?7BvD@5VDee&E7*6BN>O
      zqhzQ~-sE%mq%1UssjVwdpD+zx5((n(}oke`xb$vS06T)b#|FQL+QB8fp`mlh&52Yxm
      z^ne0_^w3LaA|Sm=2Zhk2BP|i>2uKS^moA`mj3^xhDWNx|D!q!K3rPR(W4oYP$LB4~URfkee;<
      zjsrz6H>d3hg>A0I%3b4Lo9E%G#Hz`1pA#-_LJrJgB3w4@%Fa4iSC?v?5_kU
      z4)op|U&fNEip)LHrT)P626B^%XFy7g3lJ!Rf&QqnAAJ9q$HX(R$&((ge%N<_f=l>0
      z0E=90BmI}l+J3tfjx*E%$V+gAZO{x*1Fr{zg$VMSfz~KmI}cIKFAqWl-HS_&
      zQd?=!Myrz@^IlD-|7BMQq=0vwE!2WcjO#)eevbb%Ecet!5c4SO{%V=7m5@Ev9VlY8
      zFb7*(!3ugp93()U?n&dWEY%S_!kvHd?k5X+(7R^^z?(5}$vOTtTww((1SODuh@g3_
      zXdd(}Tar_AnA12jn)e*&1sBSL;Dm7Yvcp~)vJ6c&H-gusZ%gw<SVS$YTOb
      zIh>|(D*%9Mv>~>z3@N~M94Ot+LCgXW6|R!3>zHvnAMepOz%_V>Ls^xnaM$<}-0VX#
      zkZFmT942%SQ^SEKo{ktjFfagK1-@i#(b*T9_GkqDo5JpTJ}3sTqplB_1>p<@>8QsI
      z55#KxG@Mg{pW$Urmz(hRg8!ngglXz){`uYn+$J7(4F8IB0aV99KR{UT`c>^1OC5aw
      zn3f+y;`eqgjOEVDGP;g!<7tvBH=CltfUC@$#V}e*UQUtNOQ|H^!PJiAhr0+;$vUFD
      zjH)h%ae(Pi_vb+Ks#2~b64foq%o|@+YeR04BY_UMMd7;&ZGy$~CA#2DuBZfsTmQwl
      z)xTcE9v(P1@^y+QT6{v4Np)K~2-y2(JwW3h%DlwAi?6+*@A@gRu2z`l_GaxLbqmc~
      z{RzKn9a3mRloD-~ZpCIJ#NM}m0qR6|l2_Z8Jhu-#{y9a%W&og)K^a~}SS3HEUym@Q
      zn|HpQI83ok8C;TK;)8M<;m7`{zO_aYj8aHMJ^4e
      z_*;Tlxv914UJe1aZ~dDA(-By^YnhI)q5K^?5AwC0JRl=^Lii8CSTF5GzDy1((e7f(
      zrUVyr^Iow)I_d;P!h0ZT3>k3PHolT(07O{I79L2wn#qPtu;c_Jjh{J3;98|hcXyr&
      zLN?fRN(W=4WrgCt&>T>-6E++caP#4Pi1IT%J_3&YK1dqn<(k06lcyB03^L{J03atp
      zQHU_~DT3~^H~{5ckqxTj2<_bK`I~99$CgvGNv!S^A_cBh&O+pZ{FuPV!HOyG
      z4MzBM+%VJ_6ElaW+@i+p7oDi@8m|t2;l?D>zvskg4%!Skm_**ixXAXceZ4P&=G~S!
      zIYmaM;WD)Z-;&&xtCu@y3feqD+yV)-6(Blr{($JP{BO6r4^x>r;t^weOCGjvK_Cr3RJ6FopXTxnQ-J}>oNkE(UM2u#%$y8t
      zfJU?2U3y!Wl43aw-;elM94|;3hqG)&if9NqPgOGdVmJQ+#j`K3?<;NQC(tMdEPrS(
      z6z(PKC2F<34Z*5^hSQw262(as8Ci<^Em*>F+@;;xA%aK0Y59)=IK}EH?;7RvPa*7-
      z7HFiqcVY$4mz6#9{bYf_a(NLb-J;$SO^rUBTNoz}>b)|l6pgbZwmR4n0kR4`NKI}q
      zT8uCL#UP{H6czJitr*?7c~pb;EzLv+bCHf%tKmOz4v6~~KG^`=zg7OPyFZpiCc8?H
      z0OI~Z&YK1BDL!rx_;JpZ*NZ$#4q_X8*piR{OiF}FGGrdk2>=}BSOBWN5P~>xHY*^7
      zTo}3rpYRTXwqwC{;JT7orP`;7yA+ns|AW%Tnm91DX-FLkL9^HZkI5EKQrrE${2_nt
      zRgp#!u%j90?l{UpK2}i~
      zfU0|^zvyy$+*&+gAgG;p=}iDOvHy=D=>fFkXC3Ni-DEjUz-2kqy#Rj@`}Okoau{G8
      z`zI?Q)=>p8nPc8JmazrRz`SSb=wBJFn#`lTVJFk(Q(Z{I#b3|WU2kIwS4m)=k2SY2
      zP03=%i#LIka-y!+0Cz8j)duAO*`feoP(8h9q1cp>5CZoJg8N5Q3cz>
      zvf*Ff_68dmlEslfeD(FtbRq~Qs{8%vVCvWGazXR$;4(ILe8>MVdh8Bn`4)R~5C9hK<%M+(FU>2iiGf9Gs_QZ2L=C#0i)c
      zAO?sI?u{p20ug}dIGYAUM_W6>XUR?Zlluf_6Vo)bjQ!d`5Bq_TU%~!l18M-Rf=h||
      zo+y~vaAuv{0U1bYFIwW@g*o#HCLBny1K#K8}~XPnN<6&C3FJ
      zl89KvhQy>Z!h7?PW0(47$Z5AHp1XN9!OfPjUozl_xX8s$yGdp@Kef0Nz&oP-nJgPG
      z&K>xf%fAE&itYA1mNKc}>bky(_uT}9tZ)*;in>-ln9T%qDjkcSlGZ%qxSq(Ft-~Z)q-#T7J%;w^DncU_XX(dvh--cwuYJ(x|ZZyC5gF(s>^TzJP$A&KCkDRtBFjC2=?}zw`vWa)p>1%}H
      z=n(*Mwn71j)1pbvpai9Wze?$*bAv(Y>W4VMapZzR+cNtHU#LzAFprwcdy#?JV7KUL
      zr{muEIqe$f1$S|lQ=?%#x@NXX95wN}ypHzvNht%=`635EXl3q_h+lHc-bA-)i3y{1
      z^%p~*s?;-%s^>F+A-iiAO^t$GMfRQ7y|N3Ivb)+^7G48NG_H?t0s?K+j){c^cSS0$
      zsbzS8Q7$3y?_5X20gZ$yRVx2HMk5HfJ_sUonk6jg>lpiVA6Vp{7-yhUNRk_n=cx_cv1c447WV
      z4EXHwqeKh<+f&7BmlQ=OZLVsF6#@@=&@9(^GKAuZk;}4kwb=rByp8@#9RA^p9e4g_
      zHrkx;wC2`OQ4XWx$Jy`kRrZqlFdn;-?TP&Wy3`z&jY0-zbIBN63=t(ABIn%Z2>bI(MD^xnNZJlLglJi;G*A21hlQD5g=kE7i80odYqU_E$|HgLT)~1!E86K?Q8aN-=0KND5M5QI$90pA!)=
      zU+vzWkdlT>NDRH+fu!$+mR$M-mL$;fqW1j+CAVHSABNcG;rne5QQGI40ULCP~zBf@@2<^1^9!pDb)~u
      z_5J77$^j(c9_ubFBrN<2=YC1;=f&ghvk+puA0~hySR7CDA3t>z#K?FVY+|}G3;e$z
      zoMkH<4Z^>oQs@!LS^||S1EKZVyI)eP%{w(67*{*CCnov-rIXJ=>{})kC(gdu$pT`Q
      zPZqzxwTDnP`TT5Y_2%!zGc3(jkWJM9?3r~tGgS;@GFb|KOp|Jg8kO%7wuCkwS27)b
      z^P2>jQOpmbSGbYAv)6zNg)r5GCg31X)agWyC-gz8SRh>gO-2-rA9@TNq)Z2*+W9tH
      z)Y?)03DVvh47#KU$GxjbM)w640e}bp>cvO9JA+89Er>_$6LjzQ+Sw3_6@c)KXB2}3{i%#8X<(v-Q;FdLw_Z9SH=AOgaEFAlS
      z0)jm{oNl{EN!((y96PQn@9(RhGIRnndlhZN$2rm~${=k#kNUr~kr#ds+X9NxO7Q&GF+XqW9b@Hr3zy|x1*PoEg=>8l+4gcWsAbMrPd_je9nS*
      z0tn1cQ-qvfP{v#^sYBfyJ1l7%YE^rOxrkeu3qiPZRu8gtb8}99{yN6?4pk5RuD7pz
      zT9p>PDQ@+TnEk69A2U21|~$XwAdXl#f3z0-M^2lx{=Pm_bC0?^lad+<;F$f#zmH5Ia<<
      zD(eNr{K^32t33^X8|5m<;kLIcE@S;Hez6-?R)Q6|zC;j!c~?Bl$a_b1V~<>bOLZ?>
      z1yM@0A++NsQU9TMEmi66(+BYM0LSS$PU$I!Vm}5!u@N8$AOv@V0Q~JKNTg;$u?wlHri|NX
      z&zDZcUYeTOe}cj*dqT&}M?}Ex$tLOC88-Y|0*+}NM8MaKpA?BR27#3Qb&}+^dh^?K!-fIJ7%Cd>n>(e
      z1C+=)bFN^mi(}R_f3QrmNEh`YeLDdV04m|J$*y2XKndTjYWk&YoGh)~CWcvF8LcZJ
      zouA~&2Jg`m2inlrtAx)Hm~y+mscThVy!y0$sM%fp2?Wp;`|g~fVT|o*XH_iyOkRC=
      zTAZshg20@q@u_pr%Of0zd4+Uk#yy{_?WK@Q_>A9Ka0y_D8-scsucFJ`x&ALi4LWq&
      zUx5#LfEcxk;;q8!S0RQ*hpU{Y%QStl2MwS`dhO+XrQ|8_^G_tTKJfQF3o&wX_b3D&
      z(UZ0N{gv+S;52g;N6!{8=9zRbc`3Pi>3l+#AMJ5l>_~~HERa#4!C`Mg$?RW~V@)vB
      z;VxVl{}=DJCpO2H&gnphBk|<_
      zb~wWBM6VzP%tef}zP`QpJnkRu-`)WR*gJm8%W&RNvPty+9tLrZ#Rq^?yUzewqETQZ
      z=x?klB=8$g2y)=hdkewg}Ly)+8!JVpQ}N@?E}>pz3VY
      z6#ZpE67)C5LVG+D9ySlpAc6LHKMW9qx@s+EM^6g??@#Mc>kUZ5)!&d!)p$mN4o7wc
      zsOXL#u#L`kJW>(jJof+rQ7_bf31&8-23DmMYHy7N9|=a(=Y#=(>c3FMaI$-?@q4g-enl44;ZL$yF;(tu1DQ5$7sz
      zzDc&7xQ}EiiGmP0*LU0;Fs>#46Qx#wFX#(h>1DUf?sX5Yehe=C&@lrkw-lQ=7#^o1
      zRNuS!w?P)1n=a}=YjVsYEm+E_Cg(JuL*=jkP{u+6j`9&$l=VYah8U*F?JYPys!1oi
      zetU5o;;L_B((PKJ?lDC2ygT!Fg}a{vXvSMV=YUJx)C3W#q6ayHMKuunKe-;`niYE&
      z!S+w}KWo*GN0JX*5jQrSB&Tn_Waq
      zRYp^>KzbGxOWarkWd`FTMcCED
      zwqy9wd74d<_g3CH!Ut_526Fc5C{dKn?a)bYv2*<{!7J&bo)bPs^087e$RSA
      z+sI=>$G_fyj8ApF2jEZH&eY$%9q(7{7TrdPQ%hyrfhER`;_yBqCmuvS$m|+0%|mH{
      zTFl+!QLThr4CCDnf41n(DjEJa{C-x$8nO?d*mP`R4WOu1j9h~}u0Z8&mH})vyfzF-
      z8OoIKLQrB&G(SdEpKxXNHUUd1l+p>v?Zbu2}uqNX)eh*9Hbv2-DF%KdZw|cH!on}`==mV`dz$=D=6Ukf`f`e{_dZC>a
      zEnebW6D~dG&t(gT)e5^x2s!TTx
      zjgCy4O2Qr7(uIt$pS4kn#p$KdYO?g4SJU)W?QyCDP^0QewLRe_@I27D@Y8T$ovk27
      zv{-Ys%ts`>>M$AN6{okr+mGhv{Ff?*f>{8~xB4BblWYpyL6K^8>l0`e0HFI(U>3lO
      zVj&^>;x|N`XQ}$h{1M-(?X?2o22)o`i7tCx$IbEyx<4{L;F_9^~L`X`FB5;`HGp^VMLaChh5i^RXKOGlSx-!}agH$O4n7
      zQ25V0V_>Kvgxm0*IDss2wRIBZ%m?@kZgR@!@g~Gtf8lx${b|E-&VxKazgXy52+lf=
      zCT59@Epw>wPVJ|B;1jEEcRS7W{!eS;(>bsiJ0&?JE2!^&v1sSeem;2D-mvAk=JrQm
      zj4s7tJKheb9X&&Ws*V$o^rqG-mZ=?AO?U*fYsAOFDb<<8(=5(ddGPc+L
      zCM?73`eNVF@Bj+eIn7VyF<$Vvgu+B5m2v*1*^k2TXsi(6mizFNOxj
      z2l7Bw|5@3=^m%M^2jmw{dQDPsh6Z{Atz`e()p+3p-air!#X|?uzuS6>b*pS;(bfVY#sSx!b$%%C?!>y
      zB>Wq^jAI^2TKL4#`pv1*ys)hO^t?BpsCTQ?N|L9;p_@#aWMX2pJWb;
      z0J9yZ->|v-X&V5wsl7cTl750Yed#K2@Q0s|y8s$`D-b}b!4)`pP|#*1)S1anUsoHG
      zG2}A=XlFej!m~%u1w>BAMA{try3>r3ARyI)2#n?A1BAyy3#h%p3oKzh{1b4uGQcyq
      zR_l=qni_e_!J0l)Cfv8Y<8iQo`!K&xgob?)&9&Ct6^W?6*G(E=%AOa|mE&-US?|1jgIHOh~Ph+$L!ZQzhIJX-%E~#~q+HE*>I0PUP?(BnL3&*qBS1%0t#s>hF=*Z-XuiqaJz?@b%Y6VsPS8%qq&i
      zVVZ-WPkU;?T`-qU$^eQe%Z^n|M9DCt+-jKC^V!)E&~|b2xBVrID8E{Sv6CGAg0v^J
      z-_1f7?dVhQF8|wi7IIA1OrXcH91KubA$;dS03RA6Cd4lXMFBgidmXecw}M@PLB@Ig
      ziU}1NMuz+T>W2Yw&~p4{V(=2oPd|(jYs5>xa6Ah^IOZgA0Ydzr;gGba>rHxV&J>(p
      z(xpKn_FPV=S`{NNuOK;>@(MCF&WA0b7cI!G>3>kp?Jz!eM0M9|t%XGaFKXRCwK<>}
      ztW)nOyFSY%rmY`ZoA*1*7{tczLCCF9fm|Hih(85~PYSE%QN16)Z$tDg1jgWm?
      z)y~AbuOf?Or$&{!P!+4ifAssyG3KCBm5+n|t|SWfyVxf4jfzlTT@3Ni!6lo_*Jx);
      z7<8CYCdMee-c7DkdhoKGJZ(OY;hi~YuZ=OAfsZ-K=g`W&t9CeHT8
      zvx;)G|HwVOYSH(Z#u6KT3M4v!etgQFpqzkMdbXgC1ov`coVxP!EZbQdKTW!eDDUC6
      zTjz={V@Hyl%>%#s?zIC0g^#Ca^pnK@Cx6P!($zI~?VtMTo6r0)cT*hr
      z^X@(hZ|Evrl;N;aCRLW0AU8_>a&OMs>m=jjfT8sb99_y5{-DK=!tx%<7s2x%6({w~
      z%Qneh)Bzzxt|Q%v0ig+7eQdIG7h(ZfkE5QB+|EI>pL(ktI}@8CVs2lam?D4WfKt!C
      z^!vQ+=V6pGx8sqv4>!ZzNmr_HpnZB!f9Z`$%@W!6rs!xHDcldu*I+^~$VhBQ964!i
      z?Nd#x9aJ1Mx!CPct%JkI6x)a~{r{++`mncJI#Py3KB#SrZ2z9{zv`!F-4BWMv^=}W
      zW^))jR(vAn&o20uW?Jm~jvESTE)OPzu=sZF3zYlU&rA-sv=PkC1qJRlEbA3htvs@<
      z%@}uFtDgSORbVfFxRr9WY&-0F@~0V<4(E$y{Jtns+x!B5`I@d}{S0Mt#e-_I2JVn)!dar%5bU
      z@Bi3P`ly*Bt#A|0his!VFsgP({{`VhW=ESl0NX>JZ_dK#3?n`0MOMa4Z
      z7ShnxaA&2tL}jJ1ba-1IKdPn?-?QR$O>Wo1XAoow>PcZM^XrE1uRUP?sA8x0M_=mW
      zSkljn0_N^MZRy>Jsf4cuY-8TFacLgR9_-A&6s1NkOH+$P_!PYQo}l#q)jciNka`{P
      za<_6MA=K;x+cbx644DtRH}!ZzB#*O-)=EcQ=2y8p^p%<~;}98|(jN^?DWk2jQeIk4
      zbl7=Cf9}OI`B_ehpYa&nzEQuu?EAB)FqUJC|Ei9NWL7TMsmEyJ6+E*Q=@S+L_Rrqc
      z8&t;Y*{CyL&wPzv_BDU1OpZzVEZYGJXo-n3VV^=MPD-RNO3Z`!M0iId=0{x~17Sg)A1W-C{azz;qt$c6Z!tZki<(?_
      znNSLF0;Td}x|Y&J&9!S(6l{w4_)yR%>+ZGHw!QvR0CbfPlw$ZR4GjsodqkrSV`>Ry
      z9VCjW+DZw)A>Q$4IKpW0*kRj|cH8);%JS&Dqcx^*+4r82Zwvi_{+Z9w+O_$n2Eq2s
      zpVu~8b_`g;jS}UeflyPGzZcNbvn(9&WFt$vIO8*GA*IMUv_gHZ01#m1$y!G#GqWh_
      zGiO?wbaCUc7*$rg-QXJg+oIe=g2rPR%x=?l;VwE~e_n-spI!3WSwJeW|zC
      znKL3!Y{UOuP)U|)KKG8C@Cemb_`{P3-dYS^Q5k
      zI`pU;)9!lNWn=kX(*?qM!AA?DAsH86=0>$2?_Ri}y?aH!mdcczYgo!;Eds4g%?*04
      zPbaQ#TT9RIbU^EwX4|nlI|hFuPIJAIVc%NB=#_F;sbMVr{PSy3Xm86%%F1J^Qy_>L
      zLn~Ct?|F)8oH{6db*u93eX506-_aGcD84}LrCVsimG_x_S}&!)q|v$LtQPG$npv;t
      zXRMBr#7x>)+m#~4sQX5k9$ESy-t6xgUqSD;lC7NIf%|#hX)uu#RQEWgYLrT5=asrW
      zH#$U3UGk{w(P$k3mu=SN5L3(FnOrQ(c81&mPMs`<{1$Bc0^LhE7V%AX5#2$gwK
      zdBRqBG}#dul5dFEwrF_iT#hdr=`Hquv0~9j=K8MEJlqnB(a%U@WcK*JFuEo%@hbBZ
      zO>gsvmVu%4&XTatg44B&vsv6E5KYc1QkT;GPkLAps3{lIs4#=43<)UXmg9_hnA00H
      zesx_Nxt{vbTqUzEj`t{%*(56Pqfq$qPx8f>d!N{bN8VqgEn-ljYr;ND9q>A~;>Qju
      zys7sZpD)w+EP1nzCwSr};*#z%-&2&b4g;c!UhNOpyF64B(fdBHWgDdm8|!q7{s`Yc
      z_DBsNc_>G@eBsw(y1+^9dW|H^Z9(g@a)zAqDp$Ts>;5`I_99!sl{F_a>sXq)jD29LkjhI%zg|ZuR=f;9-*;O+%{#@sL1ai$sX=EGitUTUTaExpVh`5VUfDwX4iE&DeH)~Om^
      zvs(?Vd&zCp@3ApfCHH*aJbBGhb?WYAkE~s_s6r&i(sx?KB*<==8trczrcD@bbN%P?
      z80S9NaGri=uch`7KC)^t`{D`gGl>pnUjT*qIy6=fJ8X0kEhg<;E;)3{@$JvNn&bPq
      zG%BcmLyW3OX-7;`#$Volm!Fa7yY=6gtNlzHnorNH>@R<>^bkaTtY3&JmUwf?u_pQA
      zFo+vH^Z87DZ}ty*+);3#6R}m#7k_bn_}lsUV1s2vPY0jw0{dXYK-oaYzR|*n?AFv5
      z651Q(m%C>NCx^Gu<0;E^$8BPVH(MGR%1;`dzB{oOB@|9RCyvpCI9Hvz^ciCs6~O$<(BjLeD~%l4h#xzYifjQ&#_m~+>sR3^&hN2(!y
      z{^}hc5!2m9C*DU{&XqD-Q_1=-ly92Rb7>KEBsn11IBi>^eaBnl<0~0mZFeQEBDSWg
      zcoADyF39&I9&jCv#19|sV-yo(nD0miCDsK_eQ_ajZ|)=3Tb
      zxCg5`@7`WCmXdy+{a}Qxj5v@~Z4)2V_t%G`0fg
      zEf}?kJ=Y_OVPvocgP3-PL0?=hTtICRTOwf0fY`mG9tw9*Fpxs={w4nXc2a&yNjNV$
      zLVic*1`a8_)l(nop^{Gy8rD4Rh8j3TjnCu7B?u{4lsyoJx{g5}-MXFI#;BXjFzG7{
      z>AxMoOm=!k#o4RQ>Arski#pHh
      zkKv+XpR$n7uAZP^H|)peQGNHPRAMsBRK6lL4I-p^Jd=qpM??=jGh>d!jm^B4d}4l|
      zIUntec~6P4Aj#|X7J>av`-*a2H0eard3~m|%<}bbE!{hviMOcqXu%)%T)Kzhpu7ay
      zMsv4~n{V0V16v$
      zE@Lu=#_qjYgqs0#OpZ<2HNHBEEZlwg{Cex6*e8m(6_oQCMLKEcOO*>#*zf&cqT3UN
      zyIsh*Re(p5hEKoUN0-eYlX07hc-H!O?W4>0LX?I<2O{(HuQ9)j$nE=f1Hy2d14n#l
      z{M7VpGHy&x=rxW>=4dNW4%DZ~i}UlZ5?R26OS?J>f2QskUt#fDJJ$w+lCT4w&8BWjt1Gc!PSMIev
      z5hq<1{qknYn&-={g@-z)?{DFdb|d`OnW_c1F{AnvcoJPA>DDJABD{3nI}^KmLPTK7
      zmq<9yNBZ~ngz-=jb@7gI#1Ch3aV9%tq{1V%Z>`8C*DC(zEUkvMfb=bE1Xp$35(?iU
      zX+jIH@CR#7mXMsB=!JTwqC#H{xf`(KkbDIsbmIIYT(I9}S`oOrpFRfgn8C=97{+f9qe={HDkWX?|6alg%0){M|!NXaUguw?|RZ**JNHGj`%gS
      zYYVOs7f{k2ij6qHc#I4qaCRZ_wl1+a*Pl-ihJRQW;p87HVvSaX20`^&KC{jE(cTju
      z=I8?s5JZ
      zV5z$MD6!Yi8>I*R`XZ|Pojeg@_t%3x${p3w_@CY@!!@+~X}l=juxgLbk}#e-`z^Hz
      zp9A?YF5Qt-?#)~g2(dlZL8N+%`y&@H>axCMcS0|6`u_W!WI`8m+^j7|b>O9N
      zX9e3lwu|fw2j->uUkh|u*CRH-!qT6g%%%c%$IOG@b%FyZ4e7s*c5+u8KvHDZ=3Yq+
      z_=-e3GVD$e8@UGZ3Ids=In#Q?N&wkWL3(-@a;8^QIsImE%tAeaFJGidp049dN+%M-
      z|28caTop)tYQ1TIZ~gemT2i6RkuMf!r;lxWcL&2a->&sCe?o%@tGN2gc-fR1R;u-=
      z;f*80Fj~J+;pQ2|4Zk4kP*aq$4?2c+%M=@Ls_pD#J3<1=<+bLpVoA8MYk5oMNPw`8
      zraVRUF<`#C{uCmnFc(k=zxY1YQ((duhf5*XFD~jQUJ8?1aN^DoSd_Htm((%oG$;U%
      zi%`l8zUo4orzt-24h=r5<~T4on7`K~xO0S)d%4OoTqmMGyoyD959rB>Y9gKbg8eA;
      z6f%@Y9^4r3cL$a^{pgeGkh9LJ+>eI3!(cG#>aaBJ-i&wfPMUpY4^nO*Z@NY&uO=sT
      z*JpIN;tDppFtKy*w$_`|eyfr1Zkn9231C>@Ij~19+KD^Tmc^Ak{vnTT{Ga$sT_4yn
      z{(61#PPB*pR|<5Wx#;$v_awNuJ(AJf`6~A~9K%Bj!OcgtfEg}Nqr@Bqhoi$f!351J
      zk=jwM6cS{-(gP_}-!H`Pg)4>87|f2vAJUF1*O@T;lDxm~bUum`T*4N3t~aX)I|`}^
      z{udTL46aS8QV3QAgn<@@>LN-E&=srvFBVskV~ce75*mA(WdGGeQj83ubfArEs-sZl
      zh(CP3!uB!_xfx+&(O%1OJsj*-(d{xNiqp%X|2fohhAd(|NehWzT&t1$$_4Y&1EVn=
      zgS*PXns%91p(rFHu*Q0t1WK5hSNQ&p673Z3uIdYxeD@z8@8XaGlwH6YC!N$#eJb84
      zBaGAw={pA73hKBwOqdRJX2A+CP2d+5te9cZ1bHoQ7%(rh>=0t!Jir>SRDh~(bj{8>
      zqUg5G_+pinPg7HR67H5bXwys7oX2LK+vLg7r@F#=ecr^HIOZo&Hl9uLOU1
      z|Dd;%e34`{X?J2*pBwX1ACnTIf^?8>0N1vt3q@aC6aVrq33qCMNiHl>S-+hZPBpbz
      z1P(JB;50WXj-tP$#)k~@Y~Bk&*j0m#dFu(P=AA4CovDN7y=9&At$1Vu=+`u_cOmok
      ztvbICh6vjk(0oO{QVdXs{XqZq1=3Eq*d=(?*VDr<7|;lVbmiaFe9e!M8NkV1q_MAJ
      zkwtW|LG=N4~=EQypmmyBxnJ#jlY#hbQbF;Lo{RXVJ`xV7IYdaF_oAPC5
      zwP83hW`$AdoIcQ)D6X%Me|WQ|PoordaZNXqALrYP-e@J3@H?9jwDolWp
      zIzT(3!`Y7LYwiuk@p$@w2
      z>Ssn%r8O7nR@ZL?A5NlAi#&f7nE2CkQY`nByt?xyteH8S?
      z=*TIzaNO2+P~Pz8Ec8|Tjbr6kFPcBmA}Jw}OqO2H4pHD1;iV+O`*Y%a9)hbCHbw9)
      z>ADQ{$^dew(H3>|YeCk}-=lfN$m
      z9RsXuTVQ45KMG??zJ(GU%4=^WH%&wC_|0~YxBwC)vf-BF-{wSL(lmvKN{%1k3Pq3r
      zKub{5R=YNch9BRLeLkxy!`KAq5-i*0))`;x=Rp+K6OMq;4%rPW3XY@?+bRHXpL>yQ#$eJM8t)FWOMQc6S(7MmjvjtbK3BhG`6c4
      z-1B|K79H?3Djswq=?#nbk+q&Q;YRj*o+$4C80F;txLZoRMQY6J-865YJ8nx2L`uKh
      zF(>JC7xZNsd-X9_f4l^b
      z%W?jNqnq+8=*T#zQ!!I=M*2s5M{klRpIvysP4j0>Bg=%Hjj}{W*QgX9=>?
      z3rz{LKU;7lB?br1xcehAnpAi=Lybx6D{`b`Q7JmG9cLFVjohrq?u0TGO50@)hZlYb
      z;RS!rN#9eG6v)xV8h;sU~=0qK*&B8mH)PH7tN8miPhW8Y<{5fqs
      z-K`ACMh>%#&D`OGKI>n$3YMhR`L
      z{g$*zBh9O|@A?Us-p73_>cZVDc9^gIWZ?BoI`8fBlgh@e0?M1we%#c#a-2S6#2t=|
      zkrc#OCDwP1TkSDX$${L|bMLV~_hJlqtAf*{Bl`)kIZazOlayW)Qifn3-9v&G8eaS1
      zFsqNnX}dX*{@%*h6D=QCwocsrn7~=pv8?qIEy^0JE$LsiiA`He^8Z=dNipGwxp}Y6
      zUYxYPmT!*~AJcm=t7?UBnl8g$!5d6>
      zKe6|9+NWS?t7gM9x!-zXKW7Z{p>*q@bz+hX$JGj5y0)szB~#D-EqRMibD%}ww*PE*
      z<_7AT7@pN<^9kvE9&@|gk8M`M_Rzl);d1{yets?B4{OxCf`}2-TRO?eD)(#Pfnnc~
      z3b~U1xG@Z{!>8u>>ynJP1Z}I$!20I8`2p;p{zwJ(q|lD%w0^+4st??OkU|f
      z0uKZJgX`iWkx5+^^TSt$;CE-cb`b6GbH;SF4W9-}d?WJ6Bejkt)zg=`=JbqpRdM8`
      zIk9HGvvJGjp)^mT>yozqE@${@vFiEd>XTXU_9i!Y$;kM?(fmGePqmA`rCm?q=lOh)
      z=tuU;i#^2jn=IKAo#ci*$t;VPLuG~p*&~0*^>K=})JC!*52!5qy-?mP4xgw-4yfGR
      zY}4jG1X&T1c$2G!j)1^r9(+R!Q
      zI(JRv=Z*Fa7E4nOzPZp^7llqdi|k-oTd9it;*0p|KndTgjBO2j6Li)?9l2iH>mT{b
      zqP4FM^LL(i`0mhg1wiZ0RwRLS^+L%Hsho;P_#DB%LR!fjj9Jru$YpYao4wPjyunh@
      zSI}1aUcO!0_=j9sLpsGmW1aIgco(MxbK{hARsCRQ&H;AFv>D^hb}#RdU`=4H>&r3>
      z-8jGT$H2e-iS>bN%FI6H*SY`ZE_Xd~y%5v@a1}B%c1F(mwQhuwK*-R?CoUI5FK8A=
      zr#$H@t%stXXpk~6w>UjdE{UfMYnK1HW~SIv+V6C!QmR=8C0ck{mHO@{wZrpyY^-zN
      zt$U49cA|22M)Pa@q@E`c=oHA$SCFb7Qkj*)0_*iK3n4gfhZ8vXML!!gOxs939)}j5
      zM9>>xzE6Ee&T>PJeuZ-WfXYc#MvyWwQ-+_V84qArn41fHG0io{_Ic9
      zl_KBUVo7#!6|ep)a*JZiwW}l)zPlxy2`31+tg~o+0cL@G44equ->MHZ{_VzgNQJSP
      ztKO|BADxzaaoV95{iD{<_rkrym*4fL>CyRoEsMEM>1Vk~IlSq2_lxamuZrf1K|*3d
      zH`4V@md=X8t&7@wBS>5@Lw?go6=f$`LB4!VQ%#*;&vUB-9aK6>W^eq$3UZ2NM@=$B
      z9tBTy$h%x@uQA*>aaSzBc@l|WsSWU5L7%L*j9Pp32{}$8WQx|`GESY(>u6ySkMOp+
      zwKr}&CSIVga~HR4j4%ujdx60ucMAzm$T97-zy9!3sOK5|E1li^cb!`-mVOTRHd&4r
      z5~enoa-Tfd`}~0|IVbJKe@h2cgQNPsJ9ZVy?~ETmcoKDw2=%VEnc9F~*3h8fBtpe7
      z-&1tu6h-mLL}Tg&Ir#YRrvt>rRhYF*Gk4dx0gCjf^K+|fpSAIo6E#XFZwuz%%e!7|
      zJI2%p);_s8H7m!VGhKGxc-C|?_u1n0N5enl5ZEhCXX%GkqcPJ{xT2GYf$tTTR(UmA
      zAr@4hem}s=epCGh+mcETHw;k~9?Q^T0B^y+7;QY~tyJcBV(FiaAOz1cf{+~Tym!UUT?4+xPuH&4CIv3p#xp!IZ@QF^;vG~`m&9mZ
      zPRJ%;z%W}5kPN@L17h)Y=6Fh&bXDd)_7&&GVmt8*miIvmrDDO=aAA%drpu8^*Zj`Y$W@q9Y1))^ZmnsK1
      ztHCG&0i&)8n$0IZX9aJQa07;yVHs$Zc`OOK>;8qdMm?yrNk5+Hl$Wy0S=m8~F~$uD
      z#V=yvRW=|u77NycHT-#hjIcLc--(!m(@sf|K0_FqgWPx%T>4${ypLN;#{4qoXsFtb
      z6^A^rQ*-*u%Fn$`D>s-f4!E?7o6oJ{Vud?p<9wk<*Gs_~ci0a*aC2>kjy6^>WFr
      zTvx{KjH8@y-2CBX3W|&}Cyp|?#J<>!s4FWeNx-jdJA++HFMHW{{!dB8yD
      zNS$ZXQ=NOpUCAPdY68sn3Ils$iUIy0@<0Uq-s<2^+T$WMCA+-@nk!2;Bw7oE2g&k0
      z6*_W?AEL{sy)9=|J>nGXoklt*a~81$*GAD_5nh%qd=i+=cIlifB5qtIH-uC9!=@U9
      zPI&h6<_$)MI>1Ngt|jAmi<*qywjfO|pG-NhyaOmzn)v?Ai0+Q7NY2j0=O^IN4=6Q+
      z8s2xa_g&i993*MTSW@vWOkA0IEb){&^U25yeibM$t{&I`c`?)89DZMGLUY&KBa{Zl+}YGv_}+U
      z>AIoRA;EGYyoOne*m4>uk6kqerTNn7Z`+W;xw=jDok*gU4{(hbBtWXpM*&jBw)%lT
      zfa0x1nQZcw^?#eDhN~$2>17D1a`IM$@l-I>-W&9s$+&Z4TcPdmIuph_mEpFfp`^S;wVG_U-ASAp}eJvD;i{tq!x3D}7uFhyp^hiLo^`HC((&AzdSZqa;b
      zb-t53VgdCFv|?#RPNQyA&6@0{|1r$E!$fR#|WQgs$|@gr>YNg^*f$R?oLn(
      zFJa#w2qI;3TIuz_CTtt;<<7pwF=!lHp!=4o08rI|q>S~^0%IrGYU*l>^#Nk_$DhCA
      z?1m)fb6^Yck@gW8#>7@^3A=k%dt9G3e+4u82PkH(>jQHgErD-3g4{8{+`(g9;N<>|0i#hPgAr&FynfcL^JtIZ+?ORsB^S
      zzwiKsj>-wcy)9ZFdJv0y;}IoZWc?|4!Cl9BCBl9wo&&YxYWSbtZ{m(J4W@XUY4&B9
      zXD*`p)qfl;6;?o`5|I*)!vh{?MMQt7#rKNM-^bd!aL5T3asCaAfzmA*N1}i7G~+VtH_yZthBVm%R~!YylxIcGQ1+d)vv(qI
      zgBDT~y#`)ux2h{Xx(>8j_^Dx4nvef+YW^Y=d^$Dx4N8h{KKqM7I}fpoQVnR(np6&-
      z-Z_aa*dSXid4}+Lk>;GxQLFxl0$mp57(buP!C=nF0qt?|N0Kln0pQ1|9)b3kS~Dp`
      z$`uC5Qh>xG5(-=c2W8nqF*%u!+N7Gxy9+q_OOsq*jhT|xz2x|~h
      z=&vd-Y9()F6&7(ej$Oo316Ih%w4V-E`b<9p*C&sZ7mdYbcUHl@Ho7~ng_1l{C&e^j
      z>@769R2yoaUY_l6u5~g2-&0aF6*bPQwff0~=wmld(+|EbeO{c#+wnJNWX
      zW0^k(;#QuNxz0?X1HZ(CeDB9*CQN^#)RWB8%3(zH<{L`PGGU(k<5(O+ED|(iF#@2f
      zZ`+|`o6DG6hulv8fHMHJ0yoz5J3<`x{;EQ?gnWX=?(=X1%~d1p`<&dyQS+r
      z^ZEY%dH>;g;4+7M4`<(f&RT1)4V-u?><+eIEqJBdHGv#;@;&UU2;2)F}NSmnRb%nBF0G-cgDgyDV-5oZEud8s9DYIIOCRV~~{*Mv(Bv;Q|YVmKUPs
      z+8e!xYIFdNVm*mHQnLgUj;+a`cPJ|M?9vuiX_`?UfWL%yeyag-TcB#fwB8~(Qrp{u
      z!HMp*Asa7Y#5@|SoNhrLvN`W&Sym7+3LjJrrw56RQVUKy}O+p~?<(KGALz6G&Ax61NKc>xy7Vv08
      z%JP@UE{^c)ozoG%qtm`xtkIkjsJaRlc?RKU%9N;>wEei=T|u<|ZsXb&p55J=
      zPYM5RuaYXHXu>yC6aKee|50wCKFE>0%y_%M6K_uS2TO#^s&ko;hVuPP@CMS5Q-ye}
      zQ-$X)ZhYnJnJ6yj-j=Yi(%~tj)7ipAAQl<$p{}ILS6j4YuUW5T=Dp`=hyCzQN=USE
      z(L=eU0$%%J(r!aSyE`OkOccRds`zH(dEKw{526_MQNJG}4Rsn&_=bsM$9Lq?Cv?8-
      zQ^waEljyjzpB9~WG!)EkNZVrz3~=BLBALJ;N9;vbNT(roU@6bJJ_QQ$Y0b~_L#p5!
      zX~TYp=_fZz+>kPy=C&SAA|WU&Y5OA>)mPb1`td>HV~oIz#d0RF*1_&_wvP$a`RnF5
      zIPW|%waEW@sMbbffkRTI0`MtQ*;tUx3TObVwr?h(UI=hCj1azjYglDo9YArG_LMnS
      z5OVn~0<_7q3z{f+Y5`nS(FEvJ-lwo7L}iY>^UkxNX9q*heO4S4?NYx-FF7AEtwiHN
      zn7PzEbQHULzMc>OIBjSF@Ui`KsK+PS0YrzeUqTyfHE+Pjx6Q?LswZ%n(=HFav*MUD
      z3Hdm6bP*9s%`+^$j37iOgRffT0my356k0Dxk^q#kUZrA=sUAYc6A)r0&@~T8ee1)8
      zi_gPY{w?-{sI)FFqx5U|E9EGdiVp8R5IojMGfg6H+GUS^r9?2S21N3S3c5*S)Sc5OKfD8hE;b7-9uT76*&g
      zr*vfH*$61~s^rn`(uHRZFfX~`$-$Fb!)j_DnuO&EEOIWC0xHMl^crNy{PajrANwFs
      z%FcEBXfni4OY3aD7B)^7>~)K%N>G;DZ>lPknSOhYPfDw^Y+Zx!HPU4N)`5kM8x{YLjpHNG5_ojxeBLuv17C8xFN_DrlkI5&`0&wmwF=V4<
      z=fS>*HD5_lPT{hC>4gs=DDRX{n4wbs#ZANr58n&!&wKT3ov0z>z1{FyDIe0%g=alk
      zc;h$(|KWP?D`yio`~Cste=aQ86>!5-+M(NdSJ`N0Fy^01;2?xmQ7j@`QcOR|zKOwf
      z{ESE#61wj*pO|AKSPJ*HHiY^kNJZmavzbdxdQ
      z_~^3ZHh!0YBtQEcY9WbT+qJgO02amN$~vG1l6X;JgMGlWg7_*tx^I;JOJJ!V4@4D@
      z#bWoNTF@xkvW6RZo8ce)4N#HQ$)NxYirh+g_-lQDIhyzj7}#5ap6K%`kD1x3NWc=e
      z38zOIT58CGu-f~oAPJe7PbGUMD2Xho(&Hc?hn%fA_bG$8$q@!=*Z1lKd}28-r_&Hw
      zhu|zPDn>1Fy8!@0cUTpMw#g21ri{zyLff=u*&~o46;UYA76Se++j-=lo#l~(?>T}3
      z16CWrS#LoJ+>Q-I2W(hlJzPP(rV>(i8KI~>MV%Ief}nGYRDsCBRy7vcI3gldPK3JC
      z?<7dWDuZlPFs=i#-8R1sOZJjm*!%?uirxzyN;qzepx&$jJ0NqGbWrf~^ltWHf)h!n
      zVcS+d_*D4>upc;-JlL8IM%(7EyH~(jr<3@FaT&pQa4J!kFa})f>tu*8=T1R9vZqcZ
      z)TI1u>Ny<;b4xjgdLUm76ehp-J3aH6MH=)yXJa2q-P`!(cBO*I#a-bVV>1HwF|2xRb+YPH|_
      zp#Ct&UBRP-36liQ7G|5ye{}1rM**!MAb(rk)E!L@;z=D%B84f*jm$yE$eJn}o3rVy
      zqsi6O>tnd(Dy)**2Rmv0lpdzCpHBm~bX;y6sQl^EY6xWp;agtWMSo=+3gaD+G>lWrlS-Rdp-_-;apB?QIxmBYL1mXA89ygB
      z(>I4|LZJ|v2@Ey3YUE~!IMR@%tTLd-=E2)tB_>8wj%?P?=RexpTcd$9a*Z;R;4ry>
      z{vYxXKEt_mD5=Q&s-wyraqdZ?B^s
      zyIdc}iv)JkzebCuXhS_Me5%YVK59+^KA;59ZSfu38TR@*w*F~*$
      zY$mc}Vec}{e_$ya(mOLQppy=VWVZyiqH@plCq^n5Zza+8lI*HYYjY*lsZ
      z1)$y}JC88Hbt|wl-rmw5Jwx;5-30HFx3C0o)8~V}xIdkOP%jfg;o%m;JXU2ZaM)8o
      z2V6=Ot9YabKK0Kc)ND99ziq@U5p!V3&|)LU!c!bPdd^?6e-9Q4Dn`U-KjCLKVIFw+
      zfjfTGfGG*?*gTmV;zpPSe6ae%F?CX#9NG$w|Ez!47EKMDa!9LEf^fTF!yG?@-exp8
      z-4eRvymJfarVAyX@}8$Uu^aQI>#sBzTyvXzY`Sw
      zMezs%p35N%LQ0~cektrt`zIj~>9RE>cVLQRIpd9a1!*o|K;>MA-0LQAo#3h@g~gh4
      zNxebuM+(k0{iktc8RC7pEmu&gCYee9EnASun8Ne4KW>i+O;0FO#Nu_I!g>>r?;rzV
      z=aA+J*SqEYdlqLI3+O?x8)mROF5*-$m-51IHb*}jz6lDjcI<7$95f{&S$o^|asi#;
      zoP;E98m(>E6TkU06^Wf+=i4UC@9X$%)*t;WT)}d24O|e6*n{+c`$Qv
      zdcNS#pouJWqbD|={*Vo8rMOS#DLKNA5)hwAJJ-b==BR9*bGreI|`mz<;!XZH^GeLfQ33`c~}m2s)z#e)|LbtbA8$x)m{B=Ik>!w6pXkz9l!b
      z=m?F(_DE6fu5{l2NS(EfyZJM;$KxLt+B~D^XeP{$WV%Rfwcn~Kr_G4&JYkZR;Mf~D
      z3b+caGZ)XO-T3rmQ@=ACQ@-b#FMVXgrlSH6ulV4}*5kS~CYjFr|FF53y
      zGu&23S_)LR^8s1*x{jaQcmF5WOJQ|p>#M*Bno>3ct%%29T#rwFZI6#tpW$#xNaj2S
      zB+{au**$1`>~Fn3pcgh0tWP3KKPkxAg+{=Q4V}l6foS8K%3I80dAPB5N&zf{l&If{
      z6Pv-YxOo>kj~@kqVpmm;Sy7f^@-W$77++icQ8g14_p7}4<-qN7Gm%z!@oy_o>Ab>>
      z3@0kTY4aAec(U981jvJHk2n90X*i7T-}{`&C(q(9qOmmMN>qK*_RyzP#9(&!anwy4
      ziQ?ATc1&I)uX66+Hj@)3@GSF6m|<6nEgLs&LD_=!U(h8kn7>>FE_~tEIXV7ZA0qyc
      z*+B3Kap=Uq(kdFNgQTG9p;Mn2)fZ5-;I+Xi
      z`)u2WzNrGrpzJ{x0H~fbzdOU<&WC^sa7d-Ew2tXa-t#K2^PDEsvA6b9%pSBcSQ)&>
      z_)gTIETaeFGgw45H*H^(@WYao4kz}YDwE+S4yh(I8CJ(D_bQ&u|H{k7&sF%6@2x><
      zK)9)l_!{9|>&kb3Yk~p@kUN*d@|@v7fEs5QHd5WIFOemlaIWl{<_n=bWhR(cj
      z2sROl_rizh_FqedvV4yl3h;lT9Kuq(3r$kuJQIH|tYK@=k*h|B&dK)#n-%qjPnOgLY%2fsCQw~y{G$ox03PIMCNa`sB=?D-+cOaitqF=)9K-w#|wXiCi)l5tH5u0sj-tY^}gCH)34|pK{q!u
      zZ@wJ42DY}WO((zqNS)rf3-}p6y?^e4$wvt9BLD_tBqve?H0$0KzLaIe-?;CyUc5&9K>gbkA0kL}Xr*qvbufwbM8;+W80(@@w0||40&&U>2Aym~
      z8%K^mX2m^SymBUgW;rVWDf@o6euv-}1m@w+`h
      z=%j55!W<#~KWAS-wl@XJrb6-p?d;+{0J6L676e@ZnYJu?B?x1B|;7sl{
      z#Ezx+c#@UFeXnT1@Z=g8km4fJH#3AU1}^!|oYEQ{VHwrU
      zL<3#WSBFa;>-<^c-@0hs8Nn(2w%JgY5pMJnsE)saRz?Gj|ED?@!G4HK;6dF66_dNQ
      zUv=)=&3pF-+OT;xrGlMuAc#4DrK6Lf}Kg+Pp%KBoL5xb1}$JARp
      zF9gq?rVt8?)BZ^R3AW$bKVc%#i#7T_^94VuKN9*g|t=|MYosS*Ynf>NujxvifqSw^;f#_Hoh>p{L{wF%N
      z-b0Cw>!+T(X}bu2mT>Wm+{NFHj^#!g{$N9CjxADgT`bbRlw3Y~WlBwo;~&7*PYKWF
      zm&HD(E~+mB%^C@cfm^e9W?WgPp_dzi=iEaPs2o37u7mZB$9{5Uab`wxReh`-hTh=`
      zKA9*}7i8m?0wC$MFN0V2UX>8y1W2|`fh(-+^e7d?ML$5Q_G|=UyaYUs{N}Lnmgw+B
      z3^x?B`Zom+vb~zO2e-`7ws%^t&==#~>FQ
      zNRE3^BF9(SFJX>7egdP_uThd?#=%lQa1A9np6KWRl4CxpK;$o^SK!=y$>;?(EQS^Q3h9T9~5_PmpPqb0V|Z5L(9!8#llLlH;7LWaOH%Qu=y|0PSRzE&8V6-}}W2$xy%Kr1e6n(o^$k(sdnZczXm6#eGARD9HFd*hUgb|*`et4m##A0hDr&tS
      z=6d(hq?I9fl?URs;%mUm`WoVv_@yYsD9Zp}>CZ^e>H~zoEjj$pFN473P*|lup(Y1@
      zhcS5&6%!`A0wet*DB!6uw+lypu?aEH``P4Ufd8Rh8E>GA&C~g?r~*@II~bGYy+I^$
      z%lK#S--Xq&
      zj+HW~wFz1Ee`O?YMD`KPs+@^^r9uCURtC@5RY@%w<_6G%2
      z;a8*|Ng~d~uK1`}-dn|j(e;QSQ^B*(o7p6X9*AQ%U$xi(sR
      z3K$y)YNSCt3>;^B>hGs|OtyqGa(mcnPth`ez?tZsZz
      zuNNFRZZ9~_`2AfQ{`K3`$>{?|IIBDw#C!y_t~4L%lJGi`s&!$}WaKrLjP=NV>E_vI
      z@ONWAe$}~9M|>(le|Ei838J}|wWkTmg0Mb>Uk>uBg7q;^^nLt5Tx;G|33B{VIHd3=
      zB=3zsIq25@gA!>N4PYwOnpyUFC`A~oGDqkrL0vu#ndGg%Y$%f
      z=`uX~MGgOE6+re;l-Q&%m&zYWP<#^ys~ovSX^v^bfads?l6;jJ$cQ86YO47<>|J(j
      z*l#b82DT8P@nmcbl^uH6xJ4AGv|hM4yR<7OB*;Is$$OwJ6G!;P{Hh_-`ZanXcjng0_U@3@#@
      z!7Z6W@|}M2KxWRQKC;LYRn^NBI5#~~ENAcodgCLYH?D#xZSQM>V=2&ESUiTQgdI)J
      zV6AXzFO?p`;)-p^A)#$ADz1*C#Qi!t{!<)V^jgE>j>CZBcsG)8?fny=IHmxKW0HHZ
      z|G(n+J*Efh*+xbvUlnB_4_aqI||bg!ERP#nJ*
      z6lrSG^ICoNRrlF0HUpC@%viobx>2RR_n8r_@-n8!P&-#U+_|MFRj(@V$>hx&&(T@?
      z;X=nY8E#K1xuneG4OBE@e7%CZ?EDhe{LE+hBXnoB9>6&@axZZlmYfUi*-+3%xHTxq
      z@c{)n!lTU}InFU~Ndy36*{6bnsJsNpKws6mEfjDpLLZK#BhoiJc*BiiaZZH*V`)sH
      zubon!;>bydVqDDKO9_#Na7%z9ooj_h12t1F#?qwaK!)u_vG
      z|1qbZzDHh*ln}s|$Q{{1MN~R~xLxD9LXcYy^-L%APcP`2dGW5RsHs!WQQI~(23a_953U`d
      z53m`48#CpM{4u=2&V^M*MkEIQ1~VkBTFHYnl!*g~{cJ5G>nf+v*z#YNEt?i8fZtUv
      zW&=u_5eOQ(hLs>Q3A!G4SzL9sk0BR7EOUmzhUGuBxkz&pv|sl;7xsSm=R5N9GXRyF
      ztzFGLAexD)DBQRs+a`aO6*Px80KHIJZ4)@9Gi^HE)g+z!PF8^MDBHqI6(aiwuL-4)o{R0MX9(OKCI;z!gC!iyhb*Z1>4?IFE3qzoY`
      zl1I#NL|Xq*XAVjc5@vA2z?!LCK^wNTm326|sKs!~E4G3d!LPaDWO6*v*Ff;`zAh{W
      z)agy`hS
      z)vNUOw@|d~`Hft&;i|dejT&98sFZ({3FWIaWapS%n_;o#Q`~7$<-z7@Jg)2I$T&KE
      zc>wv(6e}rau-ZyQ(%h#%7g-U|cbES_)(t9h#sdYLTr>Cw`W{+7mr1s!k3g21_S0Jq
      zy3FadTy&w&Pm!mVaT9q!u0H#n&Lwz2%0*RshhMe^FC$RZZ*M+aL1G_VQMY*JzshZA
      z2I0v2-Lk_CtRp@%{~~i$%odK6s0lQFI%^ldVnv(E^*s#13nl_0o-_$w&-9;;65{
      zDr;#-c({58PLZ{MRc*Nz;DICuPdxyZb+ka8Zy6578}A~2o`j`5
      zuc`{-@pST8YBHw@x4ryJOR2cO&V|KmTHgfY2~wG{`fWB~-gz6xYMNiX&Y}!NJ8{S_
      zBLgzufzyQxa1?ao%Df>5@XZzNya@WV*KsC@##0t<*D8bgHRCX3rzL2yL|0KT^ri%x
      zc;}bVgF38sE1p!IW!vSfO%7bTKl$qa2^`+9ft_mQjIxKk+*Ca2!Hux4D8}|kfdNpn
      z(oc}ffQ-|?4A7QvW%R0Fqtxko98btKh}NAgPD~Q-bxsijO)fzuivMiOuI@C{<|^ZH
      z?&U^R$7vpdSZwOsIzyWtWK+2e+&7?P7-#Q4oQzaJp{>hH0iYMrD>acIa;?iw3Y@@z
      zn-G9qXn?({UkC*_h;IEy)b1>i!(;o~J4%avKSEXW+&;BMek%svNoPi-#P&_R>grdU`qKINtqguq55z=In)NwNU
      zV56Ey3D}xqu3UiNOJ7y*VJ{$MGSsGhmO0b$0nD0G=I4*3%g0N^_z=j^qW`!Y$KkK@
      zPN!QUdgquuM-o!!HELJz0TVMExt7QQsXOyOB*k#BZ7w+GHm?^W)>`d~BSkfC%uU
      zHfaAiR}ZkyRt?*Sa0h;vGPw96x7+|ws-Zvn
      zO(K~3JqD*@%cr!%K;>}nr}ZY0AIG(8zQ-Y%^~c-z8As*5C@e=+zi7tYznB6}3CjxQcwMfrL-mG9@GG)FJCJUC?zA#dv$;U4P0jwa{frtvQuMLtUt
      ze2ss)drKp_r6Xw8__;&I&f}$AQvLFO8B+c|PZV-1D)g&RGvfT&yU!0=b{KtWqqnWj
      ztF4@{+_XPU72Mkl-#4ku5M-(v@Ty-T8Qm%&wk)TAv7eoF5}npftQ0!DQnXz
      zc7|oHBg5&*v-m^$*;k_)RHB3xe($e_@b)~qoj4vmJ0_tG(T%mQTKlMu$yvk!jHKQA
      z9K=1lrRmanq%LkFsi7Eu>NBQbZ*D(@$U&C#CA0?QM2(6HeFXc6?mfm8ZwX&&t;Dyu
      zzOCu*#P=hY{Qfl{okJCBc}*Z%f(N+>b+qonZuE;h?_*}5W9Y8WF83ql!&st@m0r4k
      zL7abGkk@my@Zf^MeTgXPmD0)teeVjV6>WR$K-Xd1SXa}t4^I-dGn(-1-uU&2e|Jf{
      zhl#jy;|e-yaT5Cd0aw)*k0g7+t0!zCJliJWP?+@Ff|u=&EWKA-Xn0)G*qBoHSi@-V
      zF*2{zW4Mbc38&%frN9=-Y`zGEM~vi{T=S0w8eV$esM?-!Dtun{x6!5UPsv2Lu0Dzo
      zcwnD}$NeBMU~m|Z?QlJ&ufc!x-ty5Rxv4Mo2dBqqztW$DnjK-hJE#6g_ghc$Tcldw
      zLNtdL92y)yW^?{6)fDsU+^)MSP;X4Jo4Ri)XLhCRoK9~KojEA@&lR|w{h`-gZoY4{tHJc0{o7lH7AQVx}RlUT>n@-Y@pogRdVjzHstsQ
      zH(25#hrK)(t{-3F-_68_CSP*BZ%q67YbpBr{Q53Ct~lCVT&Cl$S-@(2zyFPjTQH?G
      zTmGaSZK?44X+uMtXvf|Ftzn(3qNs9Y>+?}Dx#_3L^cwc;t+bOZ%dO%)tq$xfEW~eg
      z4Q!9f+2~5=-C|$!63Tv_5v32d@EE*}7&Tw~;4fQ}IO!+M;CT2jxAPh!MLezca`(ADU9!3&X`
      zQ#^$V^XzLLPb}fx!!V1)$J4)V(P@||SobUABDvK2Z$IiO!YQ1vWJEcTAE0=$N?>O0J
      z60Mo$+p{3I`Xe~5qQLBUX?-IFEx~<9?kD
      zEpf#kW_DTP(>r1fBs(hgH@YR|7tNHfEFqG+abr(+0prlQ
      z8!vyGg8q!orXBA@IO7o!4#jxyld&kZqb`QIoK}iwl`Jo$b|SJM&g>rd^w~DE
      zx5H&zp&w}#_L3I2-G!avr$%D8+f@jAI$`=}e`DQew;N2c$ZCowPJ6ni%$?3#EB%$!
      zhgdJ^6w&e$S~0Bus`Gl2{(I$BVt@apAq0i9`eak(9
      zWdHYrrIc5(%_-2D-GMK}XH
      zKZDMW%%xZFw0hlbrtRIf_Z?lIrSEm0(O;_mZMw7Hr@taJ@ul7W=xp2%KI-c$XotPI
      zr|^2N?dn9*vi&AlilV~p^u#w({yE>T1{2X0Jn?Ud-^y>WJ~FLY8M5stsM#9m`hEDH
      zlhk|0tX+kj>QDo?ZO9ej6`%DLp|ZtHK)C__S3<<$x6cb+Kl7vQY!|$io-OD7kIb#E
      zd~$O;q6vFi=h(6@dQ#5glJvCcPWe&B8sklZqw*8?J2O|o#=98N-LrHc<5Kzh!S=Sx
      z?R%{WJskzM4frGUUlzP-{m>5BK3w09U_j6!7VgJNJ|rT#08g1whHcmAPBJY=W64Xj
      zbV~1wGLUjf*s!4Em;PzT@bRMiEIs!o;3ULDxO_l{+={K;XM6~2`Yhcl)1xzN=`4Nx
      z_;lUMwB#j%Up+f?oY>_7t5r%U8UOSw#Pu}!~L+@~H~$PO0r
      z^4NV?S%16AS;W?U6RjASKd&!X*_}vNL9Zq#l_KIhLiAxn=lk6JY0>00@B1$b^u_#g
      z(bN8ED_$dAF<*E%X-Xn_v-2q_7Zhc`2+bN(%?<@S4sLQSv~24Mkyx02=zlwJBR?)4
      zruoR`;oqXm4@TF0pDs>&MsAR7hev!r)bI1Sy{)ioJc8&gQTJ=i~HW%EnSvc8AM?%NS
      zuFv-mx0+0H?r?;$gGCd+OzaDWedIbsN0*Ip?0CSoHKoVJ%rqnR+#!liX-zeDhgGY)
      zN5ru8&EK&-Q+c+%7NS>fbs;t{VyYF{3+aZ;{pL>ZYx%ub-Jnu9){B~2sx5jjGx*X{
      z>{HuIOZ`{XP~k^WpjW^ZoKa?)(DvS2PH}9?C*xBwnLJPphlkwpvg#e~rv2|&-7fb0
      zrg}qS-Z`V_fHnE;;9inhf1tc6!~AZ=aDU*QwtnDzuPmZ
      z_{*WVuKis)L
      zHBL2i=Yr_vsKn6;aYZsOlno+GkW>GmCSTLa!kTCF5?1Vr#cHDZlttn9
      zU)JLfz4fC%)r(qiU7yxpoi521@bm`&&LD%rJE
      zxM;Nnic>wC+6VlaYD~YSB7Q_qTs^K+TmQHx>@I+dJSJnaqm|jOPt)6fT<*V6d#{^p
      zJSu`Vk(ipwEi%1thVGx0i7kBD8rP|tn!~bwvkEzRZOp99cNU?%D{yleK^n+z{w(~a7k;AL^;3wHF`_|39gV_33-(Vp(}=1_-0AbZJN
      zEqV<8M7Xe{gm_5_&FS4W)%4<>Ss;mcEdwv|ZWwo>vaZLK3OB=fSDi$n>SU7c9n9SP*1(%ek$#;W0cCfO4IwXIK{aa^VS?~ez%2Z$A-C&w$nKw+QOnH
      zJ6p!KXlVaqx_Ts`FneM0a_v)l%XR-V+SE#h%^|DWD}~z#r>>={L1wvYT|AT68{0Tf
      z|L<~!lQh*yq_Dps6Umnnot%g{0^8ktmbOMy`k(R_n1;u+a$+95^zI9S@Z4=&2hV9d
      zC+nKREAU@|4rw6J9
      zk%os%vcoBn%-y2dDZlt)=#uObB}J>b`Pu$H?tLr5Q04s>Z-6Pu?DeGWVT;Me^TdY{
      z!4L7WeG-ptecn_z)3a~{U<9aJ`#=@UeTvnn8@SC$wwfQNDcvs%l#C)g2<|Y>5Qs2(
      zBZ3UBmQX1%(PWkL-So(f?ye$?eP%+S6+(Cr*Y;O|BZ1L*0ef#SrVaKi056{6Iwx^U
      zG+g;MPZipyDj2!Ijoww)IwMr3mh>`VxZ#v4@3W`cH|V#sdKMm&y4_!X%zv%iD2BtS
      zzVoWTp`=Dm#=ic(v&ye+w%N4oTetMGTf4Fip|OO(%e^kkdrAql!K`czrNit*q|kZg
      zYoo8Kmb_ED|1MB22IrfMZ(|y^M*C-D(!MH)J_qqJef1m{+;6aeM41_NtAso^NC3kcFh-#Y>yV3VFNzgqnG>Ed}$YM_R%
      zyQb+{O#BRfQ#3;~vbxme&O`LtPCWJI;56e&is}r0;Bl0dw8%nVGTZmg(g>@EVRfww=u9+L2nJy!6|4$=&!F0a+0+aImyYKt=|NL58J#8bA0sAAV
      zd9MZh1w}Cv(RvC7i@t*0z$$^3&i&%|7S|l6cJuZ-flfj#f@))dj)ND}3oU8RWvFo*
      zor=M@PXCRYl3y=v#N@Sx#=bz2H;@lN*0b<>shz;HKgDIxd6Jh$>m#RavXmz1
      zlQu6X#Bi7r*r~1-*^uh^COoQ*ca`b;i)bGTBjGdn(0b`{$uR65lM<-s8tDi-$?FsP
      z$CrK?+P&_xp3XFRBApd~OjbOrHATQo&`@(fPp^b}t~1Qwvm<+?Z=G1#rjV$I`(uf8(k-xy
      zgnR2UhnGPdi`g=lip6*P<CjpBU&-0M_>*FR&`?EH<+VQ|0WN;22ni}eL
      zd*N0X&gmKAlQZNJDaxN+Cm#Wk0x9{L>(Q-k4?y**<>l3)qOt>nqS4jjAN~$)WzK0a8-9kgen0x9@7T`Ic?%wr
      zo%x!|MkiH6=Z^v(-t$d*_9%ex$4Xm6I9Oj7ec9?2VjWPP;=Njet2
      z8gwzoYPnc`Ha|szs?@&qbe8$jRqzG11-!uEK#HF%Cl&`hF#F^iGvUi2^R
      zXQ@0=dx0b&7iX>wcf}eFo52F!RCviHf@mps@ByL(>y+uhArzcW~
      zs={^XN)5A#$>Pfk`;zAjaRYzGwpiz0Zc}%^U9+sO$K)x9PA(WL
      zpaJlOYt3DQN--iEPt(O$VgNPlX@kY}^Z2sEwv73j5ygUd*6UxI63or$p%6L>Rm!VcTWYzkUCT9=k!KVfK{|Fj4llAK!XE`=@hL
      zyzuBYnpNUGD`m711k6#VtJ!zs&&Sdn$jlWw9l`&;;z6Z@l+F-^}2*M=WL;e`_gUwX3prz*F{w{N<7I_746X%;&P
      zQKa8}y^?8||5r?`v9e+*nm3WG+00>9TodiKxfu27-LS}@e3j1EyXc*O6IYwe!(U!!
      zmI*1(n7xB7t~bhQ9fhjCzpkuHRVkj>mT_!zZ8%cy^9iBqhZ}stZ5Q-WlNNfheWDZ5
      z>e|4Zsn#&>d;O(h{zg%vVLlZ(HRjszM)Sh8fjv2R73wH8vCV4MJGN~()d{Ij&*&YAEo+=12fuXQSWo@%~bwHr|u!4~LQDc;RKaZS|8>7Ev{=y-6{!a(ao*@Sx}
      z=Jk^g8Bs8CMO?7fAFOE|cD6!T+U>9C&YS4MoqO$^nfn&p&R6mE(>_4>!=riacB{)>
      z)C!Y$F_qTOnI)!onEBxg513vM5jD6r=!{-E4v}^6rt=RtcUrbx0{!sedpW|kg3!z@y}
      zsmeduR_r;`9nZs;6C)%0MOV|+mG%pMKuiCd%biOiSQE#lgszR7j3He&*6a5yQ{5#A
      zdpgxeLeue2kzeV-5`P_p-9ru2N9e3$h2AC_DX58MlN!_4Onz&b$yp&zN==agwf4sJ
      zSr-SA>hEJFXI{o#^PG6tyh$cRW7a5BC9Y=t`fBUG&WlN(sGTfbw9oXPWW;(L3FmUy
      z|0a>*Y`cak%^s6P{yPkPTW>LpWOrX4P*kb~1wrv@N5rZYXAiGKQVAot`Q&Cx1MuIx
      z{x!WiT`2NQJkFdVh)rsJZq|=~A48?BfA=)7AJ;3m_k>i)R@iwuNeh4U!5fdI?=OiD
      z!@ILh+G!??XNP5t$z|L#O9R?0%7kvhba(>)SUnwFEe29^CiI0>QrUX20
      z=xHJgc33$B<@(o~cE?|53F^O9h0C3(e2ZR#+FH7$->ZCZ)>y)^DeuX{wJSxL@6Pe^
      zR^q76t4kgI&L9DL-Fq>lN0{8~q`|!JrP-$N7un9G-^A+VS*XR9+)U~;$-8@T=yI`p1;8=HB(AIFPkpXf6-HG05!u;W-&GK0>0U7N6Ip+bvG6gXZwpF*}Wa
      zu1gz1QzUK*+MeZ~YMou@>Vk#eIuH&My`}_Tv_glkhKdiaOA>q2p~Zjs8|*gIp!*ZY
      z>qzq;yq<6CNblDv2I2X7>uXoy>jvqI7mEgx{qSYP-Q7BJq1&txh)ZszB5_<;N(LrQFA4oo0CB(l2LQ4fBQh
      z2wss!ztaJlj+909rC*QiXYfij@cuflUsH4H{W9Z9(E`yDo!$v(vq9|O5OJ{$x6@+o>52Cb%9F|aMfSk=G?r#_+)1vyrFIqY87<@mH^N_e
      zf3^7R={7#WW$p>4N7|mE2-lVZ<}O7512O+}f0>
      zD9K@OWL!*T%y9he*!HAqtZ(xGCTf3CC||pducIBGG61#D875=LS5?{R7Cj)E`5o?h
      z`*+X@_`UV-gD+%7+6a#>boxuKd;8zcv1deCa@}sJkA;lyY~$`R^^*M_JI4G?)(fin
      z$S+t`96S^6dH17?TS-wQlf=PR|;g>BIj6g+O}0
      zEmfeOnko06FLe?qgdr9t#7_Zn1|b#(#9fHERoNHnr!UYGat(=RYan?cmHaGp$Gu2C
      zT)SOlNch^Z2&-F0eV$4>TSh3`dS7UzkbYBLVyhf)`~wNy2yR#KAFJlj;1#
      z!BjPOGst}nb8mZ7xE|Y5QmgItYF=$GYq4tkZHZI0z1l*eU8#{Tsz9@vFo7yL3)GJxS_p9(AkHO3
      z3m|@gi1(HKl~wa~1**cxB_eOGl1o5d3CTCOYqqVN+ELxQTA3y3Y+a#jCpQ!LrfLZO
      z04j7ofp5Ah2~7~Z6${g2*B-zIx*^emMC7Ks=t7Mx*AU!T@@9Rqlc1wdcGBpRk7g+PWOTrr^~noMNZ}JtIO~%~`aAT=
      zD|nnE$#|}RZhg{oF=%&90^X!gj$-iB`aA2Befz8W|pZsho*C#&@pyASa0}Yo3l~A8-ei8M_c$ndakv=($>61Yqj%`)6u0FZ$
      zTrPdG5S7k2y}zQ|g)HUD-OpxKpB%oJl)IZbPRiZj{!Z~v3rV^AZ9NINq#`JH{R4FM
      z$rX!_pa;05Rc=fBo-xKh6HnD2nrpIb?VpX#Uhzh-OUF_buY5t1b-@FR8MDc>^8*Yn-{
      zxz-Fx-=B*cvdPJaRGgeF4eBiB{@ih2s{Y(rYtf%ed3PGfpBr1AT%JEx!M;7{9QWrw
      z%I(jcS_PdfEg(bs*}VO^5%O_dpN9o7Z>~w>$aRinP<~Vv=c%eY#1XWq#k2_1=-WUJCFurWz
      z-d^0S?ut>vGX>|91#g7xvvtDV3H3;!5W|w
      zkuVsW5fb;w>~prGA2WF9|6*Z^}@qzM}OKICj;s|7hD_K#g@fM&tN=FH`B8C9Y`A?KeMn!asElk`6OY^
      z99p49@aiZvkFQWm8mT7BS)b8;I=
      z6R(;!RS%x>b&%d3uX^v6p7Q}X;h}-#ILQ&Ox@ZoMx4b@v$6HdS;nKf|S6w}a7qD+8
      zTjaY<*A}oAA}*CQ@v4u%(kme4TPfv^SB+HRS5;Nc|2V;agk-xUO}y%CU3kj3S9*KA
      z>bjeHMn7<>iwIXFN4#pM*}VQ%jOO)6nXXCyB3`w}Y+k^EW>&zmvbKOYMJDI-*Tk#-
      zGDWX|l+VXMcf6{o!tW1d@cXA};Ts^?2mYFP)z-T3l&_NiJI1T_z9H$ytD?P>+{E7z
      zuWFpd<5gou@px6rWb&u^t>?Eifix*aYQk6LP)&$Bo@cyjuX3m%RXP5z<5jPG!|N$T
      zIdi($s;wtH>XJOtUlXrdIZ>~kDBoCrop{wTDu*Ky<516u1Fp)+3;Z?lsz(y^I8eSN
      z{+f7IYrg+zylUB%6#e3Hn)JO|qqX{;37PNle^b0_p_$rvRWlO&!P;`+3Tn&IC8#Zb
      zD}!x0=@_YeGcsX`N^kVP8?XAp`hPWE_2i6qj8~oUrzUE&sgr
      zckYwx<5EoS5YznAK*zh}=ZIH5uu~^qbut5sV_@SL*bEo2omK!l>-UcFstsc(UbTD-
      zk5_GrxGY|^W{gw3YPFq?c-4o~wDGEDWck|fo#Ry>)z`$UdQRt#m25v6l^*2Z5^n{f
      zidGipStDtXwiMJLjjXnJ--F@V>=WI1)z$}d#j7SyBONj%M$sYvlraEv4&Zr6nt0Xb
      zb=7#)fN506@%Nk*N}m|5LfK|2qO{;By78)EjPs683g@oGxfsxRN}71pQ+3pM)p=Ip
      zd}*x{=b4?fod5g^QO+Dj%9hUiH7IFK?Nq>dW_-zBlws?J|aU@FYL>(df(W
      zx4vvt;b#Z3
      z`b(Rrh0j5q04fRyjBZ*G10>{qJ2aht)BFE>{?)KhLT
      z$?wELLdtf28hv@8E(glj$xov%cSLXWe@jLqUk)JGwcnfc<(mmw
      zeYpSaj8}#KbZ@B8qT{>#sW7|7a(U({GGI$)Kl;SA5`f>o{Y;CD3GcUE##Js}tv+#v;mU1tl+idCqv^EpgskCUAYZW))Rmem0KS9k}Mi
      z?okUZyHH|R8`$k<4ODX`i+}N>_?H5#f!?Yw`x)P^FKgrJ99Piop+WF3ub>++LDe%9
      zzi{Od+SP3f>R%stLn}N`?uh$ssNU*E`6^+)L)t6o{8jkNB^dl4!?p0gB3Tn8`&xnT
      ztP4;1nqj`)Z@z*q{zM*X^mat(g$VDnE9lCN=W1Y|o?H#2OtF~hU9X_4I$k|r9>5Bi
      z5w9&Ej=1En5pjcJhKw1aS3t@)8}m)kUO{(a9Eaahfx%CAg5QN?8v1*F<{--3%2z;Ua^#IKksxp2>mvfy|)5Umm0fPx(q-~+cCTXZQXbUQl^hF)4N_lw{8qC;i6ltgnfr;OLznkzd*#Q
      zilOz-K)n)DzMhy5-z9WhL1$6%AEz^XA18dgj4XK)(j8X}kwv=rlrItUefJJm&}}#>
      z>0d#29AQ=>Ocxg0*m*QJM85rk8zPixRel!#J&nbG=cD-Vt#s1iurI%Yu2$|V=+^t9
      zAuKPUh%{1qw~ddy*&c$@>Hd?*A={5IIvGZraWqWM$!GZLcXy27t2(IFLwmTKuyx6n0Kx2W
      z&<=!+!T`<2P6b9@S8h|jpxmaM3g%akMIMcpY#+8*$L+}|Lf>TNn>T%u$L*mo$w|Xm
      zwbPB>=!XlJr*GX(td86Nf?jCar;UG%!={MbW1%n}Lqa~)D9V3GlkMIx%66DXQ`%IU
      z=&m-~L6$9*@)T5|a<*ymtYmpuv}JuaM~KV&G;0_a?$%_E8|JOvzy&
      zU7SplQnDR`PoKlow1_Of-#4J;w}@GOZBN7O6!ZaEet6Gn6h&McKU|l~=$ku)%pd!n)BA
      zZgK7@sal+gj9c<-CvFp*xE&dQ-1bA0K4l$a4>^Rym9Md5Tytj~11!!Ulp_l7;fqQ&
      z%jaRms1D0!1$Kyj?IW~4qcYL>{5l^qKFO4vbO2WoZ7}ZD4FN(b{QDjL{R;m!z`yU|
      z-!k}@e`A199sae4e`Da^a`<<6qvPImHGY@Qmz!M9mycA=mxrmE?dic>8!=sD8r95L
      z?WtUhe@~9ihett_gWo|t^iJhczBZUIN_(z+m15GdIh9>yD*=mJy#y0!cQu$od4;ig`bXO7m@57+ft$Xd0gQs
      z-xbWa!R@W*%IE!_$GP$ui1GqaVrhe-cEmt_u6$Zs2yfH6p){RgC{f;^)eL
      zf%(*G9Qh-jD{n|5YtEI=g+$pH1BvNn-4xfrThEmT4CGbRjNQYo2%469;|8n0$RFaQvXZOFg
      z(<;exkwa@Q{rKs@cH^P`+LPq-XwQ$$IhJu$k5yk_<%O;x4LLT4HV0ZAgEeSLX?~KN
      z{J?sL$Va*!A~&gVm1_KS050Z%-0vT)=(FVFzpFXc!)^qi$6RWWK2VDJ^gpKGJ3$kT
      zW=DDOa1VL#N3)|m>^nQkgW5Xt;9uzn^DqWw6QVci7L_tA=r3EPahwnDqq^*$tG6DT
      z?I$pfOPjAnAE!e+ajhUvRARPaMk%HMo;c#_WA7xX8sJIWXEBP8-H=b&Npc9Bev!UP
      z=00>@X80oK<2awza~#KMcZA&HP3z@8juYP-lpNoDc)hSmjt|Jl2imziT`!y!OQ=DJ
      zs$4HDXb^)L;?ugh5z8TBiG0*qN{^w=B0R$ds^Ke17(kkf=l7_&3}Bi|#$o6+y-Jei
      zLW(&x5T4N?4W|F9T<2%fNG_wLp0b=~_2J9ukRs~&nU7*=IbG{~IJ$a0?Q%N07ljIs
      z8BH>F&X$DjW%Fsz&y3|PyE2v+>nbcKsw{Ji#PU_-?e(c~!BJ%9Zld9S2B
      z#9;ZW
      z@PS^u-h5i9_0}@EC1#0x2j?&rEwz_=FG~(9+KetvMf)^)IO0VpzS|((qJ4@*8;$u&
      zaMv(`4^zR16jk&;XYe-3^E?%YFM{vys0ZE#!53k^-A<0-{w|K;OI!6E!&q_cl7B^j
      z@ysnO_v96K%A!_WyX5Vj>N%A+JB6`q^Lz5LJ@sT|Yx|i~**Yd)Lp)!lYCRokh+a=czxIqZ%d^f-=rPH5q*|{ygsr;hF^KLVLcYXY4&fhl9KuVt=sAS3
      z_C8B4jUZvn9URqzyMt#p=kDOokW(3vR-mQiMH0tnqPjADIjJi6HR_PikdXWk-d^Cv~S#BU{SwunX5W_>}p*yJ7Jn_eP$_J!8r+XtmQ$oj`P
      za`}i|9$^3Izm)pN!Yoo}|Jeckwev{EPNIk^Z>Apv@ZI`QBp4LTkweg{r
      zidx>$!#%I}NPhW@6zFR+oZln)t*S$b{$v*^(VME~exu`R3@FiUJyegD)RTeDn&IR0
      z9?3ur*o~b8*4+i{8w6{KV9I+Wfeb8ihO@y?Mgx|}z>2tlMIe~jL+3q`eVqyQVUpuL
      zl9N>&h{G7-fhxHXA9n)8z8*9j9}J}7c=9e93=&M*RmosTTZjfjRc0`J3_!Np1>XHV
      zl8WiI1iSwq8i1HIh$@@K$`7y*k
      zfV1D$83~5~;ZP4v;7x`6su%QrC+34qc4B|0vX*@fVqaN7$?H9m;*9s4%H03knHy0%
      zyj3^oc*bt=cqeuvo!IT`fb4ccqYh)8W=DVOG>dH5X)fGnohI-1NdDBmN0Rg?>n-n*
      zy!rlETsw<)=4)rmRJL}WZ>?SkfNN*zy@#12$=0W(-gN+_aa9_R`S8jXx@`c#
      zcgAq=X2%%#XlL*;$%~Mvp91cu3tk4nm$@r*mFBL2^@9Fg10~n$-8BIGnwCpWMx2*e
      zVWAC#?pFqRO-XHn
      zO}0j3$=_IcF4b{dBejle10Rv`$-aerY5^aN3P};OXG=mE>>^3h+O1G$C#vGKPHdc7
      zL&jC#mAS&dSGZwdYL?;e)3z>SNQT}^NQTUCCmANik_aXV*3)Bb~9t!0okTic_+5SZ~iFa
      z7t6YHerJA*dJ{jH_#J^saRKp@f!|ohZ_j4n*Zp7c8$o07Fl*;U!-@Ik)x>;ym=p7o
      zjJZECw*d2*#M~d4H)YI=BlEv2>oYgGG_<3CeLIZ!_G6V?*qQHly@>C;8_4&}9ZC3#
      z_|E%A61*7SF~0!cf$z-MG5@zgSF|PAyR|mzg2iJ-hTO8qk0a$*7Hf~-!T6_ZqR=n0DFLl%=a+5@JJXX2bnq`MkOvf~
      z4Hf9%Oj!1E+=TSc3y>n6vs
      zRta(pM|7O+#U8}qTbRV!5`!MVU;;A82@nM3O0j@Xy#*GAfj7wwSM%0|ypu5RB3~3H
      zED%k#!6s{6;1CBjZ^DZoTY_RH_QG%0aPJ*%1h~5uvQOpG*m`hj&Rs`o3Im6B#Npi6
      zk}w-N#0JnV&Ws-rrwy##xRclnp~uiqZXrkP#@JS@{t$DHiuomB?tvMuJz;(cnBO91
      zVZxLO&O)=`oN{Ycb-Qt;qqvCFOhu|oNW%fC11mouZ9t@>2CVw?xD1wv@D^|*A1W$J
      z&1is(n=oStW~9~G49lLGS&y>#tfe<=I%5M^8NomfXz|*OBXhj(s*uFc!i#
      zCY(9~?vqs}uSJ+4aa|6o#9V^(rSLUHoB?xbS89i7=u5Tj&<=5a_%&Wlr~?T#F=3$>
      ze(kIznB~hUVsS{TglV4;Q5d9s#?$OFG$^K(^Aot-Aan`nx3yZZd0j4O`}t*-9phkN
      zzKHVH88$nEFR;Dc?c@zQiGGFUP^;J(%8@@Xqil+p@)zq)#CQrY&cq(|lP@y97UdXP
      z-Me}VQSv?LudOa)fBhQhx=|@x0g)M{z3$7FLG)Ka+t|XgQNU41{k}?Fh^Siub$6mJ
      z1k`Pj`dgrm3q$|&5{ddvb=$*F9E0-a=N#eGB}6a)LJvYXHBAyeM})4vin<&s8bR{7
      z5%A%U=I~)4l-`_j2uG^j*sZzKIFwb~QG~khjWgR5uw_cD}Dpni^ikZ3+W2U%Rk=Kzm9#%CLkH;&KcBHKe?
      zPZMP2IY2vqPgv$pEOZK93ZQ-88!_a1OBuri<
      zEGp#>3N%X-MRS2*hf{daw=#3hC4$Z0}H$19g|6gGy6|MLuMf@7d0k!CD_V
      zfq9n9=&s
      zMDQdk`hX(
      z3D+SZ6B9fsK~xh`AmJV+;5J8!c<&NV*Z>K4F+rk)G$nx~o&{+(OxrAC+BR+4a7g16fr*}?1zMm
      z*c7pbmLfAj5`II90z_fdrk#Pb9hmmilj`hGN$ADXwnN%ROuI;FSCq6AaXBQcg9ONB
      z#wl8y(vhr*5xBRL2vfxlWo|PhZuHc;VA59*(rhi4PXTN-av4TxBeZEBLE5*N*4`6)
      zd}$M{r-p=SudyE*dpA)R^IKW8nETp|k0ZT>^ggdq#i;xzUt$33?qo@rg;>6X)wqdc
      zZBFUH*RZW;a1G14C<*gJMgpV+9ArD2%J%c7r2T*m*@~aFlQ_4P^BY}~jbQmEt!+rTk
      z&C*)R6ne^#Cb?EBE-H9KD&S;Pq13<0Jd8UZs7)$>6T*2u?erpm<0k7CGDt1*
      z1HEO|_~=Vq2%cC%@5TkPg#d_btxK_m;2eC9s|XU_og@*O9e}D{nS|$GA#p2t9s||8uwUD39Uq4TJu;62}FPOkbi~t5UlOimuQzjLl-f
      zPy{ztgvTebUaAA~a4P5H@sh9=%9)X{gDF+d?Z$zPu|}B~yju6QCi2Zh{s<UF+GRZy}?Wru%cW
      z>(98S9AKu_#5vkbtr>;VnVEEEkj~7c!(!*w>CEy0exk||B=7-LCm=kuSFk
      zZ)=)#&&DPSOMPYYJs}uR51Xwq-XYm$Yd@PwK5Dj(xgIWGh_ZIS5FtN^vJOj?bE2$c
      z4oAq@5poXhqj!)W*eYej0W|12Q+Kq=AVt=}hMz#nOaz=5xaTx2F
      z@Lj%|QHbJ?>OZkVCQulo5^oXvmW+KEu^$iY8x#95VE+-Z&(Ab%u*l5bcH{LhRf{i=
      z^Ey#W?nE7?Qo93nU8Me+sKrWPznGIO81;+&uO28R)#wCETyP-9$|jVdm9leifEiaV
      z5A)LZm
      zW##qUi=10x`#(_Bxu>|O?Z-%h1x3B(jl1LL
      zwi{bEL~8~oJDKbO@d0^k9sujh$B=a~U>!lMFOQalp~!l+H*U0vXP{W|<4tnw0J&L!
      zym#{Tqy|`)_@QpEca434;=Ks;?25y$m%5H?i_%_^ZU5UxVP!AMvS&#@|mRUL%>h4926
      zkQRsjuac%h{r!lfwJ}yV$7Qukw6kLEQEn}lrK@qM=U%VJrWaGA)&a_7q&z@&6PR5#r%q=#HmJ)N9)ikg
      z#-Z*VLa0gr)r_F-K@(g+s8J+@aSP3v2kGE&W*u})jWVQ&halIV)S8q_ngOPW&0J9(
      zwNT^dVIFEukP9L6O)8hW5)dPs0&tD78$YV2u2ev>S|#ZPB)5^|1oJJ;gK=(4uYhw(
      zrjmJtnzGK#9HtHCdc#{sG!XN&b?t4^pK23Sw1IF!Wb}}u~BtO=iOsh#MUJBM;ur}H@h<;a}
      zbLd3J)99s+&dN(29cnXuff4gVXl7{sDI+v5Vmzv;#?3OPelo3T_>$B|!!-Gh)Z}rq
      zpp#hmt56R~Hxv_Qx`w*0G5XO~FTI>`DOd@0z5fb&d>axT1f?U>Fhu^SNl~9Kx;w{`
      zo^^Lbe!9)1$j_thxsQrHukI}*rz0#~@P=K6#vRMWyn(CM;yE(>#UPR>3qj9zE#^0;s_=&G<;SbTk$c3qEBI&s=LTK6X
      z47rq1mA_?{QHmyWtCAfmG@nV1sgMEvw`6|AO}vCpYZM9bR-V>)3X)`$A^X>M{brVO
      zA3%iNm{pTysh6A$SzvVDXiTFsZ8uIf1rAEW$L<*WdVV0rzT#&X6h)xawt9bO*+ceZ
      z_(otTS(>fWBc~%`cr;A&Oa*o>7QdnmUrFj8d=YHgJru(N)JHAWaofV>XYij1;j%qa
      zei$h~iza#sT
      zFw0dY_TLPUgdxb@PWzluy_vOIv!;`^+MS4{Hbgv2C2j-6!;p9%5sPC##BSLFrhus3
      zWUH2Q$7yFEtn~K{3G6^g7qC<#1=PcFend-E@jQ{G8o8Sps?BQPI(krJs1A5$N^1Me
      zWF2Rx`(rDqXNR$H`@^YlTXvy*kN0u;w)B^TuTZ|SzG$N6(hQ@(5YV$xaT{*8)x7m$rt8p9kD`ulM3r8>aGmL*B-ot@+6&C*jyw@Y|?S7;gREHA9k8!n8W1(m%
      zX1vLC+(}&vwQY)yfvR|d6U#Fde}5P&|4u6ZUbX!FBw;3%-$yl2t5;`-c$Jp55~Vbn
      zD7UMWqk(chQrhxk<;QXZm12R8LCu+EyG^R#)Cdik5Y-53fC^O&pq3)k()`R%U`U)x
      zj%cQ1OkwsZZkJYlU)_#O?8fZVyPpu|rQZ;1uOv)FOmlw46Mn)r$j8Y(-Si1>
      znPo(Lc@J-yWk9?EiA(uv?bC<-b?wvVRn_`J*p8pz)`A^in-XlI3fmN5HzDj+Z(aNJ
      z^U6qh4Fi}Ai8n~g>cZ^Pv-D+r07g04Juq%a-#(Rso$S*S4Y?>glTnm^c5_j7LWlhw
      zMX97C3d)dMHG%I~R~SMtZX2>~qMSkO{n!u?R>5vOT~(bAdI0OzD(i4!Jpou(CD!4<
      z`XsX6=tU8CwgrV%p{Jt%Tcz|O%1BjcFQD9ul=0+q5bIRpyRY~0Z4sD!DR@N+rzfLq
      zsrgt0*!C)XI;2Y3(SYOsumkaL!<6+Q;r|dT36~JxNchJ2-vVmr<9L`a#o6dt#J!l>
      zR``@L-o&=Kwp4^M8)1=~K-26oEi{GfGgaP)8pnhZ)J5bLfiN27lk(nY7tA;56=P$TMP`0()PbMa>~CaK{9c4Og+)Ym|Lj4uK9pCURG
      zCq+!}EeTg%DjUVQz4lnosi$H6%v2(7HrMC1uyQ-yf3l0$!b-rojyQ&Vu3kG(Tl)g_
      zt_t2PP{{uR`$mZU-`0!P-Fs+jP*edBotK=|d6GxIq%bw49
      zHb`osSt)}mc`KHsx>9<jehjLDn^umux%xS-(n1_GkVovKR36)UH=N|u!
      zmD0GXJIZH5^KV!b>$631Lp>_$@~v3ZE6Kd5%X`2lEUM(8E{eq~s-75J6yu0e>PeKVRLY(}
      z`7u(ax#wCG&p=Hpi{kSjr~0nQgeXQ(9aN}d02PK%Q*nT!scA_3kyb@!Zl*8f%i=Lx
      zky4IjF`g}pX>|$pz!pSxS5Xf@^_N4`n(nTXgh?LPTQ*pudb4)X%$bRGajComfWrvz
      zXP7x_5#TTYj7GpL=6H(f#@p9!9PvI4yMifV6y*9;X;^yJ(=|TmQ#4g~6>(aj{Z+QF
      zHY3}Qfo*MK`wG}}Mz&*#ZA*+hE>A6lgIlTDljM^S_YiH)c22toXuBZohfG7Wm16@=
      z9c`UxfQ<>HSdS>jXrr5T-ZI!We}IE6TODlBKi`AS_@2euvosF2jM7exUxkTSl0=MA
      zMJx#-4n+}V!8LRZN~q&{&>d}U`#Fuazss@Fwv9&H_Aev>@7zlfZ){_eAPBVhBNAx(
      zFOo|mVN0Mg^2AM04uIcvdYB;n67z7yevrqIg}S%{Ll&yyq5hD)^M)at&HDAr+9cn-
      zpUMBZjaS&cu97eYE36ZYY-PyCzKo6?^LMX05uh%&f+-LnIhBM(EvV!W42o{$C$0k%2t}e
      z1`uou6*d51`yuRj%;qw3;wP}B?&sdr)^?*%mWG{Qig@mGNmzgubVZ9Sei6*0kNy@`L!0Zu4I<6Pn>jMkMm}=-g&YA5B{jbW%Ke!
      zW%tndnZ5|h(;xMHS53ZpL2vL!6&~m6kE-yAufreJyrANbs{B&VA5}ky+(vy`Is2m`
      zGx?+7N#ZwS$#wK`rcW-{QEVx1A-ViZeSg%=(gYmP%Hfa7eCPlj%Rp~G%ne!yLF>MJ
      zgFng~r23;iEcFI|RG%{c&L1_ZwCazV62$#cAuk>NsOVD~e^mD%?vJYVl19;|HE1w5
      zUXMd)5=^IM$sg6UGy0>-GJn+fV|)bLk7-W+sA>1#W_}(pt_&m$w4)~I+bbAI*R{;X{s=b|BI1?
      zJ1?M#4(h~HjP64Ys?g;c2i5SBJmN`pP?am4JDy@vaojh04hvUQA`7gtS0nbBYmxnj
      zz`h8v&+H@#kCFWWC7z-y^H9w!?c|}_OVrXYM4h>bQ~v_gPmp>Fi>LUrIL1@7q;QH3
      zqz+V}aEcKunxZtBTc4}J6xDbv#Ys&pMF*w}{7~v$Vks`ZN9E*oT#Oacm&7!yV)}xZ
      z-v5A@*ZyrRMF*{;DtG|y3*NCCJxb<^rTF$kzFR-@CuDtMqa?h?_P?Mne2A=Puvm(z
      zrT*iw6wkG>6oDU74df>=nr`GZkRQY-fMQ&6#8M=dbc&_8T9umk54iDNfoZ736?wEJZ^GT8%&lsG!vV)D1yB
      zcr3+9+x}-+T20uqDsP>~YbgG018<$j?ZKQz;!LMlipHIEeN~p?+6oibS0RCx5$5If
      z9CI09)=O~J5
      zEQsQyMZOd7h5Kbp5%z0Kahi5x^WwTO6y4DOU77j6e<1%i%yEIt|J@EO92BCP5

      4KAyl4*k~NpN!Ldiw;6v2L$E>;;NP-&rt@{&aZIF zgG+%P?0Y5T?uLUU`Qz<%k^UCJx@ak~GF5!xx?ot;i4Pvk4WGxlc!(NZ@qB&VFvXS5#H+wq zd{9ax1AN^$AhKJ3fi<}QxzoiYDgl)lS*Gt5>sAM&mnN=->@w(Z;`k7^@jN|@+AgFy zo_l@?j@oWHMB=QLPdE`lcrgGXlbn*_dtut)UV?rleD@0(aIoTwqD)MTN-p||NkK(o zn_f%&GUGkSK^x02DCZ+wn^ouyG%x@BAXNgQw=#HxF0ZJ7Fs+nwG9JP=Cj`M$Y>At8Ds?iCf+~@nCnr zo-COHbmZG{gEeGpaFz?K+;wDu9h_rgel7=UqM&qTcw7fu#2IB|$c>IFFnf&>O}sT^ z&s@$MWMQ&cP<`VSz)xUL|F2$IEq*OBT!$^PcvL5xorP}&Q=WN(aJq%o--xs|QQAiO zWOz8cCx6R}#WNcEBQ=UK-LaAPMsf>%WdVDL^FPJk{c4E0x`}xvv{#zfzhZlVJ=t22 zZBQX|TgaLHvaLN=vA4jU=|#A683ndePz$b1jl@oK?7#alBIQ{boc@*6>e-R0o$4Yk zm3-dvEbjI&xczqUsKDM#?AkA?N{q{}joeA2xrVH(KKTq$11sM|?7CVJSr6=y%9oB< zvw(Vrh`GhWQJW#1DlL{3_h3B~=*EE9+$q9&pNx-9;+*6xSNU!z%<@5DC*=xt_fHqE zyp{On$xO!WBM&TkN{B9%m99oSQ%UfId60OCNJNs8Cm>QO=zB!u*{ipSY7C1+q0pv8 z!5Y6+`kwdBJ@m;NvfUj>;SX{@=e&PQtrd=&uEr}^XeE$aBy2T~f>0qB7PZ8#&Cpr# z-~M*gBwJiU|Fe1YsUvn>1hE6zovGNLHR}Y9egEc{Q3CU7V%JPBN;wv!Fgs1{1d0hD zlwZskTVR$z-2GJ`(Wd+P1`4xQ(gnuksRI3Al)P}*M0`kdCiFnM zu6D1$pHrEV1V-0_Hku1y%3;vK$QeMYc%jHw)B&xNsK=QQIr`kcKJOL6=`Oh1k^eG&tkSt|Pl4A`~%5zdPPR)-w zO3gO@3*cOjCud@cIj=va-RCtwjH;MHW3*i1G{;m>&p?QbgnIM#IU-YguS z_tO&JHe2d}j@$qGK6n^cK9O?UnEu0+~=BB<_+orqVHE-yEs zRo5Ar`_bUHvAa)0NqKew)77vfx>!a4`o-D!^!CV$o^g2(_iqbt2rnT;QPE(0OU#+ez_ z#Q)RbwQ6OdwBdi5`$0J-7=XGO>Dyyl2*zIB2qU3YinY6x(aOVGLVG!A$4M6NfZRg{ zy&}*0irtmFDow5NW9kUTuOLPa@T+l%YH<@4d1O?j{DIePPS}?p=FiFWEDb#+C|kH-4nL*lg^Wx zVxi5c*$-#L@S_Uu5w@gn21{@8qryEfApc2t+Aoq8)Ptim*ov}wibrNRmB%Tz$87sm zht^7X6(7?kkSl{9)-h>vPFK#Wnr)}Y8JbbSON%7gK6J)j9`~AQClNJhPn2ecqH0m~ z|I|f+>`-%%xMR4d`IcjW0EEiYp}p|49(y5npW{My700e<$s{UZ#KnmepVD$-bt%>G z*CsM~y1I$;JKJYpcsVzMHNlCe4DLd{jpxJj@%?PU3?vF1mimv)-;1ubRUOO5%Xq`O zHXAWu@bwZ{5B;ofn^bd*IT$i)RS(V>|aT0 zw?sUkEjR~PD7(*u)}lX6X#e-uZ{d&<9JWo?B%+gPt-0CVm=pnQsBifnKD1WVL775S zfMvB3t9jX(a3XNn_l6&(`Xt>*UjHofgy#FhsDi~-J|-MTO$G5xr(fdHD$&5{yE0-) zjXR;h7cH2D{y8@!>6@!#ddPU+IyziCm{`VXNtpf@*m>n}s zd#W;nUvKWWg_FTc5#s_)3yfgLYv!I^FO%>f{?~xG$32@GWtHNAs6MyG(Fj~q%l(Y0 z$Gv@IM%HZ$j%sY5F4`(=V!|qbzV2nxocnDi;+(s~i#e3{^b%_D-1PE_`)z!*n6uNm zr2MZ=&)Xk*9mF|}X`073vT}Ewq_k=G7}8 z$UtsKS1v31UZ)NBz~kGyi#zgyAFj>XA$gLVmpkKQGrh`{ARt-F0psISQWf^}>qpF# z_?y|whCO*mm@xxWvSASeA*{970ma=!=I?KOE@ei1Xp%A_wn3rO(_HqCMS7)gob(cp zKX&Rf?6ri8yW>IY&JK9T$N8b-Ap?e_+cq5YS2*o%70=JkY;x60lxRho2g1NVUq3yC z8nUM&Q+Ts*ZBmhPD!_!0vt{{qsdn#Iu0p3FgmgZ&LA1#@nlLA_#lK(v5)ylDrg=Wl zaNq|X6$edo{JIU0b=?-gDI&?@e-8W0BuH3+WJ46pZITyy4-iJAXG$5sDQ>sMk&3qmZXINIpX)DI9Nr_2b=o! zYJ?_XPN=3Hqr|`&A4{KI0-|Blyf$jZxxc-nL4YREF%MiFIRioSQo62v*fvw*8IC8c zSM4{Nj-W_ob+QP8nQDg*cEy*RXE$ICMF@Hulf>oW*Z#|fE~HaSlH|=QD;uZK^)MSc zLQcno>C1+lGT&|62;+d+abD;&A=A$nUGq{QA%oSD!0Bss=@)DM#5{un7XN8eKPJgLxUk}HDt*U8h~utj;DK6t0Yg~2-_Ey&V2tGILT{TODB1v*A6Q1?L6vFVmxy!{A&IDpJkHscAgOrdu4Adu0q$jud3Fj2t7Hu{8Fe5C)?K*??&Nc2fF4>e$XgL{ulku!e5L{Ag_ICJ=ZYvoBiP&0T; z@o}~_+yjtR?PETsMDuogHauZ*K<%x8k1M{Z$S(0UU`%oR2#=8Xux!V~Rx7&uh78QC zFGu_J&70Q%`okX(;NzB3S?$J%d26+*CitPuEcy|CAjr^=xW8=a0t@iRCih0{pzp7- z^^*8lt4F!Dy2QHJarQXb;gwqJ<#}|z`>c`p%(ztWF2PvxtA+t;b-T zS(HyHg5xCK6PFn%uU5aIJFmzJ~%=z-!Tqj1u?-O~%HC2!7I%(Zxw zH5Ax=Schu>Lo6TK0%(!Ty9VI~q!F)`s>~8*gAUF5f>CmXmD$Ci$a@-3)WRov*&%WK zKhDl9l9~2i9-qyF4U)(W501-Ly=zgiZ(iBZytVj!Pon`wRjLa2mEb$eOm{iBWhJld z@6&C}LipLKS@%TwD=T$m;d=gl&{FA=bxbOliVW29!?=8e8r(b11o=|1#YrJ$p7njz9@2Q#2K)jX7Q0b}RN5}EjikTqs zuHuh*!Ndmv582iGY8L&V9yv0SZmec>VF7=j*qlQ%uY zZp`l6BL`~y+Xo$AOq0pkaKEu}2&mu^DiCu|8*D$oK*8zS&gxJu6#Qj#wiH^Iq~wh`gt?S{`f_w>P;+c)Nh=otg8gv=X~``l^wAMVoSiLHs&fk_DO&qD zU(_B@b}puTEk6~NCYFh?ajlKDl^V#Ud5$g#7Gu)_9|gh5wb8G9_w=9ha?A6s+l@;} zT^Q+>joDPggrZkXPw$T$4nAlD@)xXMw5$J8Gk`pxk;iNX7J_ z4<0%4X7>DG3LZHy&)_4=KUJqn|4Gff`{Y{yeZV@ujxiSI8yVBpFg3x?EWl|C>M1sV zhFg|uDzI~^*JK|(Vwk9U@v})LdC-}uHdy|Al1t}$osGHnnZKioSc*ThxKb!SX03_kbX!-jt|zdm=dqcCOBWyld*p}; zpP@~wY>s@l6`UO2!>uTJrM-nAW*jc|XQqW6#iS%F;-AYf6caE~D@0Sy*X=iayA5qo zX?+{2)HYkzRPu6it=wlJC7RU)Z5IFHCU?6^yk|(lWI>zb3dv%}u;lcGg$|2g#o+KF z$O49$qog*n7&cQi4oUv#LhA;Lt=BaDoIjv~x77zMu=${eE>8X( z1{4PBYM7By8^YkXp>!C6Itf=4ZHvm0Qm%w^5mFb?Vl+;Bf}MQP;#wJWpttqG5Yv)> zy}HyDB1?RY5v8$`;a~a2&qKxxGTiN8r@4c*IT$haITyC4GE249G#K<^f{lQAe?mP) zu>v`&+<$rna)XUM!J{LB%c%s=)tpN%G; z+bEPPqHT2~%PYz-N*DF z)wu+|E*o0@3pn1GAC$0D=5UEI2-9{s2%3?`0%jT*B*icksn>*|iKyx2_QqK~6PszB zS#61_qS+7^+ymD5D_5EgTR}LQDd>Zz(jcxZodHivYYwB3D=tbz;^(1Jf38s->(V^ZdivIUY`g!>13*i9D&4PS|1o zjuqxBRse`j5x~_R2i{B>25GNY-J%q&bO@lgjWCEk@4Wb2D@gZt8pMr}#7Q#8`hp_F zlAvN7lSG)H$J%}}Qb^rliDl1YEg@s+jQFV{W_J#G`lW|6=IV})Uz6B@)b@S3sKSS&8GUjPQJri}$1*wG_gxIto@7@gPb% zV1wt>4Q3%q=FehNfY#o2BXExu@6{qz6GIn@Fu3@|OyOnz-v&-(2MV^u2KZgef%rni zDgpff8Z@$>%Q4n7%VHHf}U+cMoJmMBLmIZQo0r*L3kCNk=B|H3Qk%qwI$`7k}`0$PdCCClxdFr3Fdxum_=+ z&=Q+J7mrb?n0hS17mZ421?DoKt8vYWtX{F?Gf>lv%O))rjJa2(4C@nqH=Wg1RUa17 zVxbv_8+$6%l&fddqB2o4fjtjkGS#RTYWQt<=ZzPwC~O}PZ(>g|-P((ZE!7ZK#EIXUSXY6u7p&uz<$-%B@j=3)C7d?Ibu49vvtyLB^5Ph>{ox4MsW3vHy3(ZKg7jOwpTaio900vq$s%uzr zetJdGM}Cbjd_l#mBC^eI4zn77YzF4Hw(E`II$$emi#N7;DH7g_7eN-3!y8~NX5I&* z999gsE2dzaL}=#ikXC_dPKw}!Xl4VK8! z-95%1LP*S@y)HM_LAMjJ)U>hW#v2a800LXW)qXAf;r&V-M2-}OHkg?3u@F*&;%VpV zvokK?6(!OaN+UM%$=lRQp8;5%aqyi(Jygrdu- zbNr3t-b=%(py_3Ku#WTA`$fn*VvG;JU1ifb|zSg0)8KC?ho3CZ;Fk7t6+{ zCV^L=Re}94B%fv~CkJnI`3Y*wE(JGeQTvkkFX4`u0&gGVX9trgRHV7KC8=LOPqv30 zo^nZAs$#6s{d&C!R$K6?D2#~Uo@t3M22Sq&h@c+6^Kd4fPYy|}gwgdv21L)4XF2;xe$ccdV?tzm~kZZ541?zEKxyF%Yo;B+W`FL0{E&{y3Z&KSN+diW{N|tPA(tTP#tE6lv7Kpcgoo{PLjPPOyZ;(Fl zKiYl5&7{Fn8_{KjQi@vu@df=^p2%hW|8f2~Q^U{utlIIZ`K&6LeQUuq0_yCzoNaT3 zKHB+F-93sg;rA7Ym&Vo@EJgQ%K&rS^J`u%_c8lh~bpbt~4kysFYt?=5twrR&6aBBH zsNXr4A_DnAR>`P$_u-W6I2Gq%Q z7Jh=T{H5_a&K2l~sfj_h1ZdLOK!I|cC53vli+`&uDSI1YdnCG9`9!JvocxdXi4ftZ z8E~D6{N?bwwrwEHquplFTgwpwz&6PD_U^6d1#>QIdQ6(@G@9`7DZ>phb{T+~_h{GQ zZ4XEjjubHQRs33#EBBda`M~4(CV8bW`4ph2{q>~V$9&HHyM4bP>3mxs!uv9O>NilQ zPhr*WDBf3RYVx1*S4~i;k)GiWKD1}aXH^w=c+=47iAc%*8R)g25R@1$F=c;TC`;7I z(C2+JPWzYxv_yPCT`>siijwOEKo!RMHeXs#O+#Mr%cEPouYrp;+lM7;Jm{9!#?Q&P zC4k)WB7pa7Uqi7JBtoqR%pkAvIhVevkO>`qR~nuH}D<@)mj4T2yjqG$TxmQJ+qWHsDAyas_?m&`l#1os_}73Tm-y=s{3sG zyo7aT!9V|<`PN5frKUKdQ0WsOXm(od$FBZOqm!Mx#N$cX$-SfshD{5U*Ys3MeM$z4 z`fB?ZtchYZ*hm&u|BMvB!z1&ZBC&O%Y!{-y5p>MtpEH~PzH*zzp4;#t*Z>w`yjT5$ zVP<|SC`<#6rf)0k(TRk9r*Q4n!i(|$1ODW(!C;>ug^SPI2wG(E%(UI}RC6 zVp0TTIWQbsmY9&@tOuBb?)T(sJcM3kIP}CiUUA&_#zP zfnrmBWapqsyueb@Ttw$!o0i)NPa>4zR}T8Zg7-siqmT9;ssrX>ys(c!Sjn$E!05{( z9P;)v`U{0M?BN@s^`cQEauV`Yxi@zNuGS9 zqZ5s;TBRt^eJ~Fe5e9`l$QcoG!$~Bs^|_Ncn(7maECF}`mB(Lmu~o-PrA{>8WoQ4` z(rz$=Q?J$#mhg`Xl}2fw4D6~Gq8sF)-_Io1GLpl|Oz54bg?jM&5@N}nRZ?BBV6GTu zb9DGw*H;;3qp8tmuPsaPg~6$7+!Io@&0TD~o=3RB`WF>>(KK87Stmd2n%wIdaHN0t zzuBL5Mi%-cVE3C{B!%K=!nqLl6CTBBnF_j(VT`p-?z#A*{p-)&Xq+1diA?PGxU#g zqzlQ6PPKSWUUf_5qWE$MV;#eU?W2)&0bOP5xp1zuFs?Mm6ppkaVpZs5Z)r2r`Zw5D z0u{I(+d--|`0TX=d!a5#56-evol>-qZ~A!aVGfkEizo7t0@#if6Qk1^_ibtlqtg&~ z_sedtLI{4y5ZJa5E{;k9uv5$gX&DkR6LJ(BsW>HIw-22gD$R$`7Y$85HagxXP&)4l zZ*_#@Tm+{I*?H1F^=%^pd!w4hzn=UqaU<=UtjY%j6ss9VCNUJIH&@atV%B9BpFwGP zA!9iGhxu3@uQwAH3UpOsE6Df-U1F83sn_YqH(ub(PocDxX-Xn226?l}xsIJ_Fjl1Y zoPQ-@_tmw{sY#RXj3r)YrFE2I=ES61b4S)lN>!HkrM1D%aBS$BSo!oW2_a2Q3T8*1 z0xjvIB>(O35s*Wk+2Kq>E51dem1^1vom4ix^Tw9BwA^dF>^NdX>l7E!9>2Ju{ zIvr|T3Q9R2NsuSQOv{Ejx#q9a^@u!2=mgG?E>LLN^ED(8M6{Yrz1hGR6UY9yw!_s` zth9F*R^jF*FhQ)Rq6zo1vu_tRo5PHWC>y00Spi2BSs`>MggO!hNdc!9Nx^(KOq8`* zkC(dqpQO=lia@es*8=R`=k}4Mw>S9an=ef7p8ka{WQ6&ypWNi)hi>3`JqhmQ)4Ey~ zJxt63?7cWf>5Vv^5`2y&j?((J+=_uf6H$S=nMZ;`k~;hel9I0;x{SSH;IZ_m%Y5Psn(YbD8&=%S z2rVRE>;z=~CcxDn2}jnK!YCPf+c7Xw2k*&b+h z&`!H^1$jo7+m-b+XC`EAT&whkHV3*!@yBOX z-FcOyz=fKW*t1jc|7*0{t`@C1tJ5DW14Ol`3kLCySXlWCFA0ej$VtO_+1aD@MRX({ z_{vE@_!kFyF5isO5l7_mf8``46hFg#V<1hs$4NPwa}&&=t@U=o3>#u#$z={8HS7bo zpFgKZMNIU7ceH7M5je^Yu6Q;Di#ud{blR!Q>>4rtk@ofrguR_YI@t31!t$kxh`dR4 z%PoR4Ulnah?{++n)vsU+amH|j$}1mZ6=DQ*DoL3M^n@Cft=-I-d-R-eTa!hZPTrq|PV{zn4-9T)*&{%DwaQp{<3dOBL>nV|-U7+<#EI zd1fH%bu@If`KJ?tT6|1dEtWJ}8;0p|#xTxTmO(kn=S0Ip{(2TrS@9U~G>V;&rVR;W@#pg6}lAGwy$x(Z+ z*OhUAnPtg<7}}~dK)_LOK;iq#yjJ2vX6;E`-@xg049HMF|2wG}j*=n8Vj&r+cb$S> zH3*EOt<=$m5Z4p<9_*4Zb)Uk!0|B^+CczT5jtU7VWOoRR2tV`Q4>EKT#OP!CE1$E4 zPrmnour3I0Bhj7TN}?&#qRL3YJVPX{-0|R5CIv?F$bHU4CCK~dod5i1ST_G*I>`M3 zKM&pfXVe+UJ~ZkvsQ64Wk2kcK#=q62Z`C-CnI2~!g$ZcQH51yrR+{iiRO=~(o;7`> zeQL*r<_RU2h1D@S77c7_{VPMyE%CzfOM0KJpyym)%I}BY97lyJ5sm`bL0qYn zD-vk-JY=Z`5?>;y58hg~{N4mxn14IRE1(^~g4$XWU0}M`7MJi=8x}BuYKX0iXvk&l z=w6D}JoclY-M^b7Qa3#i&`N9@03CVC?r&Sf4dK;4k`Zrum2q*5blMK~?fjCrzg5}zi0$06nV7Vz~m?=`Qc=z`$vK8Z7MH1OwmgQ_wG8qw>}w+k1fR- zR~Qsf6*+ygkKL-lTmHO0VK^C@6zIY@!S<#u@5vfyIA6w*qw_Rx8FGnu#xNe4=&D$< zkrAf;hl=EJ=&s>+71p`xC7mWm>f(jKRL=DE~|hvKIb z*&y1Y`@(k*BgKn-MxCRSbtdqahlrB&b82dM;n=NY3UB00sak733mxiA#7_@WwZh^b z9zP39;&qJ%1OXXl#`s)WJT|XhPO|mLC`<7CIU`Q!FDy69Sl_3XFccxM@+UI-px2`! zN95UUsnPRuM*Y{!Fry(u@(r|f7GGH~vIP_GQV9PATEM9X`y0 z3KUpG4)Kt*-J6}y+*aZAqg{wZaJDM!%*o4D>fh!GdxLudnpvCe5$MjD*)t|gkL8sntMX%fa!xBiZn_a%ylvu{Vr3=ERry+=+w>aTJe$TIQB#h=r1)5v5 z69?wd3Gkq*v)lc7TSZ;sDHJAJDVJwQkZ;$+Zdi2rH3Yj^ zu*S8`S3pu4>A1Nk#VH5oOqkK?3q-^&$j) zg^sageUZ%mVGX|>02;7q02Jj7i%#w7skGVZ?KeDsMb&82wlgQ%(fYvLz^h1rN?>*r zA#i!?s?pYVJbTf%E7P_}+_G03P^CV7p?k`@^4;v^D}o@5qsrYiAKI|Ct`@V$nf)vi zF`&xM+Tt=;&jvS6`-DZK^t|Wu`mzLdY;vm+Q=(2<1eFMbRg6wk)oYy-9L50VBmd+l zM|%vFZ1$HNo~SCN&lYp4=k7!YttNo1Q>wuP9rkddKhl99-IK5woob6@zYtCp$>CQ; zIS@0I4!J~~%l9$N)P1DUO}G6buN}@!v}9F|eql_DW9`pgtQf{{2j(Zr-;`iEG%+GY zyQt0$m}5HiyQNj5Y8Cus(5DjFv|Of#at=Ot^1l~hkd9Gc=r#Q3>cHBV$VaY6@xk-% zda}ynd4uv@*`BAsfMH=8k!6EN@{3;{mK#(lacZ+wOW&!uBoef=>5~h8IqB6+7|Obp za~zMe;%W~=^Mb9CIhJ!&I}3kIaKiA=vg`TKiq2KhvTvhqK6G8|-InwtT)x1aMb;8% zIs5JFgfm$E9S7C7?E##Rka@g0)aQA0;`_|7x=rnDmitq9|A#N&vcRE0x;GHv>)$7*1lP#8ICgK_Z_ygbb1Pfhv64MB;e@5~vF=#81@a%5}r0=nkUX5o}}_e>== z{^2yT7AuW}hQ;EkKK214Ab7mRqF$h_IZ9$bQPS+QT#Y5^0@fnzAUZX~Dhvfl*OwaVC+ha>2p1Ba_TngEPyS2P?r8(@ zpsN^mO6c_bYH&8Hb*5fu67l>r)1*`QFrld9CODlFk?lxn-;p|ZO83!Na;QW(Ad*i} z_ov(zz%NK)HL)T~D)ilk_xYMU&R-lT{zK(9L7ehC65GO8*9EmYeFS7hFx@83A43Ml zEQY{e@If^eyCjG1`=m;~;*T|28n|xW{W^U}JYc7{SH@JQPX1H$)sml&1KMiDWfd}4 zKqzGGNbPvXnJ%1W+c`~Em)5RK7V;wu?GP)c#ZYwT*eM8~F&(OG9SWYtOHZZS{9}+x ziP@6jF~_n|)>Sg-@FF`$p4Iao&#RFaCqKq1ofYg?IXP4-_%Vg6@qfOp^&Ri0#Bags zy`0Oobvs>Xs_3$hG|>2zv{WRH$G|fD(QmPv%*;PtFG=K)P-fUqRx8P_KvPZ(iYib@ ziHzh+i!p8qC}FJab}MBhE>5OkSiOws`y_W>#e}(4_-=+azg~7&i&qBVd?+8%`untyLH-i zwTJEp64@pVYSBpUgzfQr^6p85?Rkz1R|`FBD?=BeH;<;obR9pQY8P4CNgl`2R&IN@ zB05-PziG}?CObWTvf>Lp?M(o36rIzanmOWq-$J z-w7G*bHql9rxTXAQN=Z{@~UK3V5WTN`-_*%r3yBeJbP%*%P&d8#&4vcb~z zL>_gaOz7=GmU@FN@waL=Iw(qJ1xcP*xN}_wi5#(T5F;;S>ZuuR=flzjIQm0y(iUGO z%$blzUcO5`KPXcP)qpE&PH{DPW^IEoQ}G-&(DRy>SJnlGQT2i?q<009vPHB%5xk~B z>{z05B3#>XIBtDXuw6TNwd7I^w~=B+iky&imF;%ci$ePunU&gT8w@>IjU6~<6w-E- zMo%o=`wTrXGI4$lYo;VF)a(EoxU$I*%&OPNM?mt* z)-(gZVxdp{HIheJ$1YGi`bsS`xWb8YWJmkVCU#G#?{fCg_&O+c4P#g1MiJ%vQkWs> z<(pSBZ_t7kUZ8lQqIi~gEwKb?=%7sfAw4HMc`nEy8L#A#+){0PUigtwrsPx>9F!oOT7kG25bAAWjA#Ie{K z-3c3JE3FobDw9sq)Z3(>Ki!nCkq$(D?ejLMKAmYQMH2rf(4lsjUoR~m<@!9kp0x~0 zH?vT_M+n{@e$zgtO^x;tgAbM40^ec1yg%GxY>*y(Lgd1zP|91O>b)Qeen>|_X+2NDG75K--`Fd$W z+!+{va}53mSM?dJp?p8sfvjsd@CLatAC{g0xM)~L2%|&DV8db6L z$w^VfA0otCF4HfE4EyBgA02)A4a9#QGAwf~V<)#w4{t%4mA|i(ok5w?pIWb$RyB4Y zipwc;1#5#E#}bG?O~mi@7?5I1T$TsHBIJ3}T@&Ns5Yrn!fUClk^uF^3Eg z4iK;bds6ylcnhL93mkzcik5BDAH_=^K@`(JlJ4W90hb`+hYZ%bZ?$J##nz5JO#coZ zi!_Ai02_!WrN4%-aplux0X>B7q&?u;QkKt2^-Uy`(j%6Bz?=SiWH)@(&NKtJEh*6+ znVX7S;EAHqsA^}))3@;w#}GwA?kgy>@H#|s53u)~6anGL0VXSY!>7?~V7qR_V4yO4 z(ji0kE2Pp&&F*v3p;!JPLrVYtt2&%XX=7w8?N8TR*-Azy^Iu{&pp`C&V#%uq_RZ@V zX#@x1&MebLFQfP|w4gxeDnQPuucW|n?~p-~==#`Rqpu`_l1K+&h@631f`L*#ACvM= zUQfc=n+7X!nKQq`=91yr>RwnB0SId-1{CM7UV8}c-pKRmu7LynuyeM?yyEbjNspxy z{6*mYe;g)i#J}yd@43X#I!qo}xEQoG)kF+&u);ZW3!yJ3Sfs=IF) z+FxCdy5eswew&QhPCG9I1p}^2TmawBFaAL@CymgdTrbe7H--fQc?{lcEz)HXh>OvA zvD(8d1$GR2=iicj6^Iq`G$s+Bz3ccTOzy*# zCH-tJ05m>=*=<4(mi67PPLrHJNJGbyU%f&*vBgMpzw?^X- zY*3sr-t9%FuPUk;(J1ce|HRqWG`p&^ZB$S~+TQ$RPo&>1pE3D_ zI_pQl86-=%6+yVOC`aiV9VZ6m%8K1JXj;SrONjRj$^IJqZ1LH&D+iYqnn8lEu-caX zI`A$U6YA!a$`Ac2dQh^pICd5Zp!iMEeTt125TH2w==oq$#uO;J?EzIsE=Z=V zI80n*uX*~PD3B8b6lV6aIqgO=d|8dDdaI9PF_frnK2w8@{}P2ta;t5nIqS+nXTF5T zZyOxOm%ajzK&*+tBdv^qEv$@zkojL%<$A$Vf$Q$NJ=Kc`B!T-%7DrQR_z!cC^qy+I zXLM-Y-@Qluab#L>I|^?Jg*z%eErm%r0b^i?6W*g|(2jxdOm<--kYmTd)<6;(C8!Af z+U5T^6})Tku*nLo6IO(BU9$C7|H4N0bUgTxESW+4D2y(vHPY*?#yJMvzh~j?MQU6p zm6EqX$Em4YC}TK}aLZNP$2+7-+u+2WM$_UTpRjUABfCDxs5p>J;=ZOM2;h#4YNySr zOQ(mfOijEDtVHEGArOOpwdGw$Tq9SyJl0#2|Iiis@6s-^X+}<@!No|c2TY6HWY1Yt*Y;vaIHq2};~_qXi0IdWj@j`Kz-B8X zg7_o!71a1zxL8EPpE*#_k9TL$obqv=p!m9c2@3-n)pxw4QDR9yFfy0;o)}Cp8B$8Q ziA=gELGpVi@1YS_vf2@W!11rIHxPO6egIOasdpAD1$ST!)s%tw_8?@6 zh<4@%f;j&1Z*vr~89qpO@uti*oG|6TLO1~_*jl^aZZ)$VVfkN*$hb&g>^IFz#8B91 z>5K<*BY}~6Bw*qW70jj!Et^HTKs+Lo4pQf*!3epqN3vmm!vVEcgk^aspxfRE1uV6Y zwuvC-+gVJlzPkIfc+f|n0SbQrjuq3z=xVZG0zW+iNdqOdTy@1V^#v=R7+Ag zksClfWgz4!c$xZ9_4-YyfU2#0N9;a$19?qT0jL7k@4E_8>YAXkP-+Zj&19yNGKf8f&^9@EIcFUgcA?EvtliP&`&u4Ys^9oFwEem4N`&Q<)yz7ujvjU z)w2?ayPU1XN-wrsKqhinO1SaBRSgA@>IwmbAn`3gw^IL{2#h(80{x04u^Xrl0Uh-x zfTE{|U<<#JWx5?nyw^N+&_yw1y=X{OF!c>|(cTDtN{76Ce9J)e=;GD?|4F0Q^lAOu zL(*0BVl4ELzRnHQOqbmhwK5&SC+|^;#sJhZsk5qj>wyg{4&~)o#NBI*-10nOHUN0N z(U+Dj?xY{^+NyOama0bP_GRL^)*gE2gM{EM+UWGFh(!qte0=6ngV6>f|eD`PoZtGGOL+L`E|W_vq|hG|M6a8UF+ za1C~(cNlykmR4lDuvW!!DN3+n&%IRA*%y;4`@E;uZ>(SBDE1H!yS%rBnZV^GXjQ?HxwiQ~ zYJ!EK4Y4&5caFb){g7#y6MFJDTxY$D_)zNSp8iyEWhlh(nea3K8Q+)I%l_TpP*|A% z3(!GERi0s;eu2Qb8D@8vb0U^26^|;4+sHyr#d|#959BGTQ z<^T=xH^l7@iiaHC*IBWKW#pXF>SHe@cs|8R& z)Y^gY^w(C*d1m$j z95JYz@7t_H8E~*5^V_K7ECEa90CoQ)WR3RPFXDZvDNKsoFNZ}Jh);it5)XNQ2l+3^ zhdrVE9(GDcYZhY&I?c7FwDZ-doUEi+drDSPvbMF)opK?{u(p|dIwD}mD*Uo2PMbTi z|JZPuBdz4@w*(K?9AEt8fS9z*W-UWe%$A5SpPNKaJu;bzdAX*3xjq%jnql8VA{p$u z{6ea|F!gA{UFvaW@o`I=gZ<^W^+ITwfbVRGEu*x8l>r)a2|?z`5~u?FaEMNRI(IfUSN^>yyri?e)7$ z|DZ+gjR&n|OX}|r8DoHMG+I>hWO~LI_Y{}@GW8JD=o$y(d6{}6CRu?@J_{{k$C&ji zExK`ZX<8PtQ1%9Xzuw;Uj~KU4WrDvKpTq3o4{s(+(ERqc|0s}duZpQ9xA$8 z81%)xe}K`kqWyGBYQH;oc2|b=Sd?w(6bDjCG!B^5fN}q`?P6a3Ti&enj9J@i&o1lz{qCE*-gLto3!B*G&Tb;kE`=!50B^Ek z=UHP|V744W`Y7SB_6MDCAO-?uC)U` z{J84>q;T$>W`c9y6!@kFoLLI%c%nZ%pJJp&&_!Ku{;~raq=Y_R?f_F@l6q<&gj6Ba zTlf$h&jJ@W83Z!q!eV)t4#92K& zYNjhU+}lJTvHNPH(ijKs{fN&>`qNE_=MHwMOW5)>B+m_J*WIL{f3vA`1-|7fQxqLc zJ-!9gmC@98eV2_cE}B4eUdu!wvMu4>(Wx~yvNr~O2>Pqz=GE+e1bpTeO!)T|^m3(b z3UOb49|HGA$9r^A%|>K<0FcL6!yhDRUC?1lZ@}I1MixQ5aEiEV@RumK_qj_9f^7UZ z!t9US0PHeVd>YYM5gLBBAv&E98>~%!C3FsCXf3wLjoV&|n5s4KkG13@3C1jQN5=ho zXbWhSL?cmto*UA~Kw*x;NdyTe;yLyf>`#Kotl9G;Pw2b2UwVxVQYUOzxVgX2>I`u=9wP9FbI7 zjURu0^=cQ0{Qkf2p7a<%aM9FCd&;V|mk=RTlXrlwV{p@(P*$Ud#U;?n&j7LT$GS&A za1PA%mgH=5(8ub#@EcezY`QDR-v|2|+@=G)WT}_#HmCeqvbhyU(ab?{H{FlGw18IU zx$1`s$lZ{deYuFsay??1mU#fe2^lbpv>#JGhmdhY3`-hgkdYJSzmwLO3K|gJ_Zw5(Ur_ ziW`P6VJbTCq)p@fOGtbcXxk+dh)?nTXfYu`UVz}>%KX;%WuvWO`!83SmJjq#jfZOh z)9(e#dazgNeyTnd#Ss?%ILLL<(n^0^FPXwc{RWE0(@8J3>i$gLBv};qes#7R4Hpp@ zdoJn|tvPsL>>(BoSg4mglt5p7U-wP{DkcuiJs&1S3p~iHm(+B2Th+azte50->4H$f zOSGVuoXhm!&MSQK$#OgYlLw5|BvI!92TlIVnAIF1VD5Rk35w%n?{3|W6s5JO=4|8P zk}t+8X}o1qfo1g_`k;9})=G}kcZ;=qFFXI>8=}?s?kCdU0~JC{pP=kNZb0~12-CF3 zNgq0dvdnY6P!n=&60Skz$p{u*IB6&}f^t1AECI1s`)S?zI(`W>z6hb%HjW4+?%0t> zb4~H!urYG)h6hNLTQO=m>AQb_-eoFvKG&Q#8J%PAvW&>Uy|=AJzUYWANPNGy^%rHn zKg6_anKiWqim|#p*FO=}OaC1ItQ@?@S0jB#`smSKrBSkbiy`?uTO4Kq>=es|wdmes zolja)x)|bS!;bx9S3%iW=`gCb7npdzf)Mc>aPOqE$?=>kx~id4J0QV5`ZHvuKyV@gMi> z3#m&W+9bIBv-=S8er;L|wG}*+Hei9jHy#A?=E1aAMSB}99M*k!jwn2`)Z5Sy)ipe_xa~s*I}2;%$VeczNI)r!LT_Lb zN9Taf(!_JXMHA6Oux|>q8#d~1u?G_DfnZUzNOHA+K)@j8O*!!J3~=|w-{T5#M6P%a z(4rs!F6%9UU^Ky;l(xHfKT)LEVynGrIf7vE=l^^{!!+-Jcuz=+&)z1Kd*>+Af zKuA5<2j2a;5h&U%S#Zek=NN)D{SO-Ad@uvSQoVcNi)Zi9LXJXK15h-OQyQ`5K(4PA z)i!)f_`3g=aN-s=O1OqR#M?#G@uByYu+^}t-hjqm?K06L@xEn__&Ek91j>DRV}?3iG9)XI{j!OW`O#fEcQNmfXRIKDsND& zhp^s|S(f{ixyEF z1c_<%(`2vFcCyOPcC;_wzK0(bcQM5O-ip^A0?XF2mjk1dPBt5_V@WvXf?uzNpra?; zItFpBkAyZ1*P(54XpiK=D<@N2@*Alw{)QvhU=Y^TT`mzKw%nPFBeHKdB zd z_;$l+^0MOr{YzurcuzQz?2@I>eJ^N-@ zl>Z2cQ;>ltvf*3q3w(yN(AGjd2x?8>99qE$>tQkvF? zm}G>@?Z*g95^zzPu}64Hx)-^R3%zU=PLliKqH!KpsGEjYa28q8Ehd*p7Qm7}V#D`Z zhDT{bGDChluFTvK&IQl~CGRr@DKQ4P|HOlo@?V#|2L@O9N(DMg(&TK#lE~ zP-Xx6Q>+lEGGT-eoeMyIF)R_Rx8X}(a3eg7H&A*=^1bPE23Nx2kHw~=c$+4IwO&{B z!)7si`K`N!`j6(9?k^jBTzLrf{=Me0Yms(d4r^=&vV9XpG2vCpY3T(JH3ZZ$G@2$! z@FU(fWVn=$Uqy{7pt^f0IVkoNYgQ@*{aH(fAIvJ4}hrSY9Qtt`RmA%`?{`%-tFZRI9 z?pCJ7gZO7iJ-?u=vAjq_xIG`vOw403JKLwPWibR@z94vSdUZ-zHL3pgqtEsilmt1# z8xw!Sp$&Q$tb)vY+;xOYXoxRt#{tnRmFT#KBXLn4RHX4 zw=zt*c*C@~lTpG8h5oc_ZqfkxR92L!QXx<39Q86`?o|Cebwy$4BfI>iq*n(Dq_d6Y z@W2Ya=h|$*>5Oh`R3~Vjch6I5YokqtM&Eek%HKz!@nB}mt4AK7#!xt~mkMYl*S`>b z7z=*R|1}3{C^;cKC!SC1qU4lFO)7o(Pg8bZmRB_Cs1tA68{lUnywjQ7<6=*$;ezzS zi}xMY?ix$QbIjp|9%V=2T;OI)kF+u;dd_Y!h4ULIRkXb$*gPX*fbaTwJVtm&_wr$# zrx5>B$=<_yei*>j_7IwxF&((kQf zU&yxU`ZmR(K44&GVaCSv=uNB^mbJW1Nm^C#7Od)!x-Ci)ut3;vO{R8vs5pJ4&3}vGuu#0d|%)Fohj+8miX~>!Te%)((owRi#=9nvpj0< zL51w+Q>(W$p>r|-^eG)n6`#2%d1EGRlFF&Ap)fse$VK`WZx@8{n|!zl1?B-(cv~uc z@87FAsp9R~pmQ8_;d&Y(Q(G06>g;|_(KWn-9jN%5-@i5Km0VWaS(lFHK;fDlKbmfa zIQes<7Hf3^Rmc7~`19SE0IAjY_sFXvg6+z{pV3wLaz=c)Yes3IUj_M-PkvONvzRvM zTqJGg2{Pel28Lz(GROtplx# zn1dJZRbIVHdk}f~;_D1=5b#MSVYSg9KbJDfQQk^|smnOoZD7L|Pt?-6-8$KIAcTg> z)&c+Cn;ExehJbyu3*ad9fq8ar@fUid;?UB>&sTxl@Ot)=#DhxEkexZ3#%myd55qKu$jODz#nAi&!)2T?#B$)VlT;YbZNu zf=!>&nXqsJ&}heE+-gQc3E8sGLTFY-p2wecvwgc| zBYn7G6US0XTS?1Tp9o<2Ru@?@oYOFjvQmhdaVDFQRpA6%iP8dzc!q{gXsdi8Ja_eW z{P1hne@jZqEOPfHe9KNHpgr-CV*_;WK7m*rt%M|LoI%0oubU;fUly%beSlxjv$49! zwg^`}K@^3RVJ-$@i{=BKmh$vJc9{5!IYIh_tUoK5&4p1R@@48$N+3ztX*lFW7a7UKpW>1jVNQ ze1u?NR(*wL-y(!KP>vL`;)FfK4zjzBBR%pC5iQ8m7fOnN@2U75CjFohH}U=6RHM@7 zK3`e05KX-vaMuMIS)UUEQpli`CjRy`lZ*tynJi>bzlv&1`d+EA=N6$bdyBYGh74X5 z+}*}c>LlO9Ply*n3m)tO;hRFi-~CP1a}bN_5{OG-`i7+ol}SXeR&uKjngpV{_V39D zS>z5X6gFt~zjoncjhS|t{aZwi;c+&i2`%rUsadUL zTiAG?o*#-;PP{)^Jpf1M5CriU%`cxHoT@${m92m99XR}b4|6Tpmv-EIKpdDfZo6^PHU>)AU zvnpcVkuiA11%89~h%PwgOt2l?VW#MfD8b!8q&pP(AZ+E@5lP4iyFhT?p*>vQ^}+lB zIm{xJW{knJ_LN0Ur`{I`(^3=-hHGnvB1?n|(O_V;PzR!(33+_z*1y!LIhM;HAQV0s z@yYK2=%n!MVJiYgxZ^fyri&jTTlsPKkK5Pp4$Wuq$yhtkoX61Qw`~}xFGisNsq4C= zk}|#zYC*V1H(YjSt|M9$1c)rR)&~TM&L-jeDwr?!CxoV&q?cLl79dM7P`Uh__SMoZ zW-#pfzocYN{25!|2Pve9Wmh&@UM?HPS(m;Fx~NZw)qZ`c>ISW@l?Dha-z)Yadr)Kx zR1kP|Hrd_qsvU7VOSl3OeY6k-DY>>wNoQ#bRc1PGY1jDFeEkVkIQXbNA z9p60t5Vmy4^PsLUOoD&HeqKJtZz6m(C*cyN5%(pxM1hDyOebJ|fX4%{O78jnY0em2 zfckYC!X1AFbp7ly1S|h9l&=~g9+wPWd;~@@{F?03>V~Z!F*ifWvR;}? z{ALt(d}qkiigp_9fVI$Z2VJ#WhzX<_O^Yth$8O)>zZ)`^8k@mON##h#NjAZE!|mf9 zFjR(3HR^Rlt9{q?IeRNX-ZeMK_ur};l&wlV=2o~7XZ|!qC$NTre`!Z<*)8T2=A?;4 zR)2C;U}-$MS~^rt87~D$e0A#j6Qw5B}%pNX;=DBv>kuXILatS45?-l z`{#*pI^R#zXN;bHbaGDfzvnoaEbqJrx#hmen|*Et)u}B4>PGEv8*V(HL0?^nM81|g z(TTG}bggV^e^)Q_RMq8_>SqDN(LwW!6wr4guDA|-0dmw>G8;P~&%Bu>ZC;YSjUye( zIDxQ4INm^%lR3&Gmqw%T&;A>Bc@b%_64FUMrgiVY-vuy+n0p7q#J&D(u{bHBa1hVwOr>< z@2lZq)co>D)I0WYT0t~RCDHVG@;>_d;{ax>Z%K2)m|XzYHQS_PU*@{5eETsr+Sy!} z)jP|H0E}jSXB3y&u%6g?-mDA*jkoM&;=jjSD#C|jBVQny zW^>p{Vy-}9Pe?r!SN6tosL*pn=|<3SBPeKGl)9$nZ;ZUR#8OoT;Y*#vZHbc8;I%62 zy19t+W)3!Cc>4Lja1ZzKK5!V;0B=EeLdBKm)+a)?tmp%kn+pLv%ylD_=WlN*J$UUG z)X4E}P~KGcu(^DAv`EsN4jrDd{=H)OTq5y#rX0-M!G9&J=8Shy4caiQ7l`I6CKjln z1s5n$TaLV1AZ4#0)dmEWRZlV8cNAI&!)5RLGN2b+alFdJ#&DF> zOgyZUYpS8Kl6|FFUyj4$#mrNzH;^{A$>*zozSZk9qZ7&T-E4qah3+)3!>2y`2~2RM zUAWfp+N!TA>hH*pfOl2Tw00luXFP8_1)O4uSw((PGOOe?x1LK>o$dp?FR?O(Fm5puZkz?iY(o3Y9g)3p|3O`0zmGS(bkMknzJ zEjCjn)ljK5!UXnDiEyVSt>roUMA_G4j# zyq~V((4a?VQD`#9Lrq+ul#RE50jLN1NA}&F=r(_S>jx>edZZafcTpW6#fEs#9Lg(f z$Ej_Q7BAY8Oq%Gh``g5*jQ2Nu4J^P=A5iK+Kq?+zIcwSxFa~X{3mAi>4`ESD2yO#1 zMh26E5-%&uM+dWzRwtP%jsw8OU}9QsZkjD_)qeFp3!*NLc?S^uMXETG`Rd2>;=9y% z<18~)Pw2`~24WN~WTvy@Ordb$7$g6D1%zpJ`X$#*?o70u>tsO?HyC(?Jf;3l1K zn9HZRk63@%7xRTj-0;7rpc)+%Xyz_79N~ML9nas!`VyG#{F3&-gC$B{u(km6;1WSZ=95&i3AvYcow8%6QQ%2ysW^#8F2R$1T7FNh(c z0@MaE*20}Ua)lbY@Q97zuj%4Sbxa~7oU-ymxj76v8UrO>ExZ{We0wQs)A|QaAhA%^ zNJQxPUv%@zf(AgMVU(G3%uf$z7j$NA%t|scNduNS zJxEkH1+HCV4g;cg19 z5gq1%svRqoPFZwH?Z`zRMopxd{%?xeq7v!)c2fUD>f<1U(8EkF0F4}R=I{T0$@kse zv*u;$oZH^-Tq{v6C-EUsL!9mDi(h`~+Mf_yy3$ni;<)i0wYewAJ|nZ(;OH&xS=!^2s=5;M#ANG7xsWe#l^B&4*2MqrwX`!aUiM$Iez?| z)rso=vGk0KT0G=`knlIHO7BIL78y_CKO!%=I;T`N*=Hf#pXkSIiNgp&rf_0>XNM`QWum}D}B&~AI#0=_oHhd1j$;*nVr zq;HtK1MvlW2f7vT4<6m)gXmYzNp%ruM&!TU0Lr5OavvFqD#}8a`_}J2Qa3i|fgm0I zk)j&4>&b~@tg41UowS?`@$5U7WP3gu;jO95w&n^@DPjG)8RZ%U!&btm?ET2)gNI3H zf*bwHT2D(nMSl$Fq4{3*`bVh>ZE4rb=fxKalyX#`+xkTu@o#$qdo=6<4O zj&U)O^cmHw*Rxxrz==isIjKNvNCRn7Tgoln*(v^AeYHSFar+UoB#Am8XjVD4kuK+y zmz?g@ScZorH!y-GMvDMwT8^`aBDJgo~$SjC3V zUp;5&MIEEJN4t54E19yBW-w!uU3=BW?@w`BdGd=Gd2iX~=tmWNO0TIhaC`%n-V)5R zC8bo&`ScKxM_gklEE<}Bm7oXy#ion5kJ|S)BxiX)9*pN)J{tT_BE~2I)zOHY1$Q!- zJ9;EP${wwiVK!NXs;olLAoVAgJ4v#2{)h?{$2W`-38eX|?CeQIuXuxba&qlbBd79J}G@jC$Rna7cpXqN?@^6QieqX}R zh;O1mn*%t{a1{?5xcQOer)1U!CEk(w7IYAt|S2X@1-%*U0=!kk1czyDAlW5ExpEwZw(=cl*m&YEJ|M16*=vwzQq{>w|#~%zxiX#A;kFyVPRv z`MCY9-(v9Ab3ol+5P$PHn2CgF;=Hms1dJMAg|o*a&w4$Gs)A%_X5C8fGJt8i#m^@{ z-Cch6gI~9QMOIrWk($RX@(==dCBk#k6wC&i+MqwgKYJX)`Ekz6!)bGo{9BZB?rCXr z3pBWSNrwV#w_9k7VR7~O@?ZSJvgL8qvhTlm5PB5c)tS=c>t7GZpyCs<9nob!fNQZ& zgMtkrj{V#gowN_Rz%#{o@AKxQsk7ra1mV+QM-RLb?%MnL7+Fykspv2*A-n!pG{O@8OV-oc};I$cC<*nuy47L=>9V_7@?`Sy6UyOu*nuZKM_h>Ko zdb%MV|72<`3zRv;XLidC$r{`@+y znkl_|epw~POzK}e);V(7Gu*}dlgcX_jFxOlOLdq{N>{~5{#`v9FcrM)-f}fcQXtnS zhVB-yvhsO;`2A~BXhr?s>O^R8Dk&0>7zMx1dF#+Z;tVksk$9gZQQsW3#UMQUH!HTW z-L1UB+TCb$W690Es=pa%nj{1+!2Y&DkvXYMZ>l4I6|b3+0Nu3@se$zGT8(QuycPnw zGTMo@g?!~dU_kJ{T&)^d?Iat3?GmuEAeuQGFV5Z>xkIeSJ$nzJ%I>QFqv^{7q5A&! zD@hU(vb)&}+4p6p2-%XdWZ#FfHIya8WQnp($iAjTku^(_HO4a5WXWzU*$raGHoxQj z`TqXGJ@=eBbDZbCp4aod?!8O7k6ykLd&VXGP)5CbDOWomz3Os=UVt#P_zXT6eIa^D zA2sl zY<$>&rY?{X9#3(v(1-FaBXb|NF%PJ={EPa7 zd-*Q7BRdPwhdwz^v(wt#`PZ$ln(LYTG2#oM-H#AKqk8G(W&fKBO6%MHAmAWszdw@3gVq~mUnz> zT%xf%*IkND!9u{FnX+H+{AMJziBaW0LRZYY-1tT2%-SyD2Rokm-+RlOc~6O0WqNSU zcyO!rm5vfw;c8g#T&)jyMDDfnfnEZ}B7Cz6Lsp~m{PlqIki*5zLZAsAyZ%we@9mhG zb`v~kD7$)7OUm8Oo4)L&@8;Y~oe;F8DPTX}jX>*=&W($>+bpj%hnlJUw){cY`hMe2 zly3u!m$C_%l7INj9nX##Ae@ z|HBmS-bR;oseMCRR)6eqzGxN;bC^%thdC@>ot5@@I!MCO2jrAn(##(dw%L`Oz7>=o z$nGT0pLHtadUi}u`z-1cJPx#l&v;dp^8xu0{D6ZDKeKzwpq2EvkD9|M+v+ z>)^I~eSYl>-Ikbl#2-~Cif4YmUX>|lK!b8npOxj>Z2D4x#`9`SnmwP;@JcWaV}Ll<++75p(0_U90{TtrG6IqXU_`J8Yv zE>H3twD-Pyk1knu>cP;V=fuq}#K+bYbRGYtv7VN(W4>1h*h+8hV?y=%h$Vihd;w;} znC=?Z{hP15wO``_rMlH}NQrI#SF{0(zS5CHdaw9#$syk3R)#kxNl#IWaF^GRo$_pf zJtf#K{noFqy|bLZuz!q1X#ZH@`g~l_u$sZ;hkG9~4OO2=f0N7r=X=K!uh5*7?E5Bt zBrJ(S5wkuXvhBjOY%>F36B3NdNx0h=Y`t-f?&%qqEYn+?n9#sPP*@Qq{PzHhe!94< z>-Zk!lcIOT@8{+VKDO#)-~$oV6kP0E*DJINrHtj5oNWyLJHa0}mH~h+VANiKMpdTI zK@IN{6tD)I^D_4izJMtuKhBrYdD}IYvjNd34T=Zq{WeYblzke*{Or;pp3xoLm}aRR z0RV|ULi~hhQ3|sw{5`~9w<3wQecv{_&BGD_I7hxu;w~Khp3i;q7Uz;>-}o;uU(fw( zF--IO3amsdv%t|%>XH{~zM``OLZ zjK1hz{tNC;i6DmOoq`d+-~s{{M8@jqVkVw|8O6CX$(MwVyHin;i71vyHJ&R$eVyhH z&lvJj9;&7`CL<5g*kIyH0KUOQNh*S zNZH*0neFQzzGW{8u8owwu%!@v_2#d<>)NQaYtJa37PpOh zJseeBxAAP_VA55ZYS*(j!z{u)>hitheB#~={%C^u0mE&dz&-EKh!u}ygzW}}*`&KR zNXMWKS(uXZ!aA{rR*DcyA(q6dF*?GX^Yh*~g@UTqPgjVlF4_5;7!=SV;>ks}PJ)p} z1hy!5DJNc|>b}6{@h$hB9$gkB5Z)%8fyIi@q3W=dBn6~|*jNke!xB?nB*D^#4>GXf zcdtkvJE9_ubP4?cuUES(xK%cFH{^4L^4~3FQtuj2OY(Z2)v5p_#>TZC`B zF1v`NBut6_XGCS{D4T(L#n~nC)frc7VF=@dNOyij@)MSfO6#3OJ2+NRdSK|&W+FlxyA>YvIlfGEpJ7+<7Vs5Lk5-iu2t64ds!IYsQ$h4VO%c%Mh$LSObxc{ z(1GOk^12zo`s+SBJS0 zu*~4i7A`>Y4g}-42fqi?=M zj5oGs{QfwHProDfy;#>A_DR1{q#aAlYt-R#YeO5hGLV?nvM*k>DB*fnUMFiax%3Cs zj00ISH|FxPQUL1~A;D)H<^xsOOhx|*XeyQD4#RYvUo(_%;(G@3s56VeL%e;T_5t_zROK+r@^ z3pTOI{zZN#mcnA&_+k;xltCj@1177W&Ne>~xkU zDnoXMN1qd8hG$Iw3KK+7|N_H z45JAC2p{SCs~v0gt|k&}>1@{?l0t?2q63pLBH%^Q1d{#@Yw#;m$;*Bl*`u|nRVHc_ z%F}0m4xjSKkF0RuHHTMZz7Fk$BB? z723!=cQl1N4n?{Bx(Wc>A_xH6Yaa5Mf_(`f_kM2S?>otuAEuYBiZ$(FJ(ZEKCS?!L zK=LWPe)aoTX7GB(PB6K>zInVnZ5+#X%jn z!<9de&;03jR(j0E(dS3K<8E1LCzdN^6o)j2t!v{rQ&TZ@)btXSfYVM;fsc+$`h5_a&@-qQ0(p4xgm;V*tkYJ7AC4VVs>}8 zWo}@ARUVwyJ9)ihY{g*3W4k z>%s?BR&%voFf95%X=_|8n@2Sqcp;k~dnJUj0E+s>6yEF(Et7nXJX_}_@fjK4W^BFj zZ4QCKqg9V~tn;$SM(}9kYX0NZl9p21^)O5Y&6;6#tLihD7&`!heB;d5@10oRWkTT7 z$;&5jtyl+eef7LksdH~8`RFDMEyW@W=oV#kg*mcT!B-uYl{3xFt*h%j_8Jio$f5?#U(084s#;>cU78BcF1-an2M=il(5Fcrw~olVY%EMgp4G4 z7OEY+w;MkKjfLlr4EG9hs8Qq3kqKR47i`I>IZM z9L9F0MGW&48Syk@;YODLUTeKxo<*q`XtVmi5s>NUuM3a6ae)C=Z(&U&D*gS#ba@jg zDPT9wo^;9LwcyW|cDtA7Aq=Bnj)&vBjTUT>Ea`)D#@lRifny`K@&Y4la)6RFG767D zxluEX6oP%7?)n54G}8ovY~Tev_p~w1I7OJ1=1=c>x;kHUofsq(ehPxPvSB1Y6X(NY z!m46BmLlpNtmA)#weKx>hC4pf;PT4|j z9F4&^hfGbQ;6N{>n3>%wlo z9zBPUn`n2FPhs{lCDmM(UQq^zD_@zZA{N{ohp2E{wKPN`Qs8MNN5K{{qjLFStRk#Z z?kVnctn4^p*z%(w(LY9+zTm-ZWX$Mk=V^TP`(VsWLms`y*1e_BvGv3y)VRxs(-76H z9@h^yMR$_cQw?USBawoY(0S zb`DvaLxo{_nHY>;*DjGRl18-4&_Zz5fC`05GG+LeZY^RBrjPp>$98HXmeKj|Cc&*# zAO_3w!42LZS8283?5NE}=*$9M0uW|JB zbhyw1gK5v}s+Sfo!NIJ{+Eb^%U{* zw?i*=t!3=kqAlaHH<4O)XO@TN$S~CEgK&fW;hSTEQ9w9 z_6sU9rr)wPM3F0)X48{5k-=jZ@-$g)d3>MHZ*h*39v(7u`Ae2-${XSzg zrh^dZjtgHDKph68#H*wT?EMzp`^8W7eEP_9J+~LD8)aLkih)m4Qbg!dXw3RcUSX%l{fPTyw5Yh2bj5hoN`WrGMPGA3$MRcnr|YVl!mw#VD8CYxsE;xLTv;uZI| z_k4SQzro~-?5ZwG9GJ5ooRJXiNCb3F9?;oiAN@>BHl}|DA2K~X`*DjPWl)a^dJ_Yn zJGY#44rV>`X~#F-=Epb>bYqYr!}S{jEEdTOV(xQ~aFnHSS;WSp7f0B-!TR$TSC%x1 zepLWxffE3`v_VQJOD4{bwVzPq1ED1jH%;neucfW;R-(pxLQTz_g$oC6J#eBfomc?9 z9K;M03&xfZ?bz2ZzXcMwa6vZQk8Li5Q-Y5x7Wt|*AuG>Ftm$&$f{9UF>76iwRo%du zmN{LikG%GL3Cyx5*GLH#ZOr~Q-2^->mCK6}wm!!TklXVuhUgc-v)-Uq&q?+8@CRYY z#iJS9(Zh=#G{(7~ffiZw0PEi5e&mseF}N}(l6qYlK)15%$erkCddnJB5mQ9u@i>95 z8v=ABD^Nq$R1>S?XJ8&5`D?nJs8eOBf7{J1jDr||f$?6oZ1oF_P0e=L6OzfQiD}wB zM$N1)ePT_y#OY_rUT6pq3c*0n%)>)1F$$P4A#=o{25Q119MIB}O&}+fO9_x~7 z7@3X)G1@4%B!Fv??Nd-S0<~(&p8Vy&=V1v?CX!&Xir83u%;#QF^75F9$RcKu{bOZcS;9(hR!V%NE?J6^wYyqwgALM=E5CSs}`6G?vI zg<_Dnm%6n|zfl)f#HIi@QZFF&o=l^TP|4D@Z@XSB3=KOV_|hJeY7`{{ex2!FW=*A~ zsvv;lLf>-DWX$c2Pm&ivyj2Nr#bP@Nx>k0!B9EpYn>J&ISeRh-%OQl!NS9ghp992I z)@(DMemtIu1;^c5F=43)iNi}ak@8on%WDOTLj^rT8Gn9>4=QjS(WtnDsTIX~21hMS zXRqc;#$h5>buuv=Jsv>j{@K2%=zI{HuQgilVDD3FRy)mqBrD@97@Z+d=u#1;B;u^D zxn4X%-eIiheP7maw&j8nqvm9sh9gGFU~!NQyz*En8pX!BtWX%O()n^Dj~*SHus3k+ z^J2z1&0TN9dT6iW@Gx8T#typzy^mltO0J^d-XKYdL#n*OzQOGHGx3J`INk~S}d&zGOg^n^!qF8^G^=Su{jV~*TecPCRNyn^1TF2j`48`~52mn6It9xBupM02jS zo0bvbC}zXC)%bIovB^*EcTyZ^w z8f!en!s1$rG>!{a=Izh$HLSmHX^*p&?9gzUGgc(&!0yh7yw1HYHWePXxL~yZr2`uo zQ|`iT8&P_brMZ2^q?u~uR&}pNW4pCZ^V%cP88bvT->QVv&zBNgtRS>{)ShQ0g-{s0 ziif09K54%Sjw67N<9bP55U{uv$f_72wbVG{Ho#MLE*ho8VmC*tZ+)6?V=Ylr^O!0! zAYRvL&RkJ}kGv&$7vadHG2a~6=;k|475y+YrP`NIVyXsF8(rtZC*c)=SW1YKmks~j zwQmvNIHz}gAuLY%4BsMB_I2Eb8JGh~%y!OE$Z>9n^2zAu;_!cu2boxUJt?HTqLc)BzaP7Ir*s7&O%=fX>cC6hG7cyQH#M_bAyYQaeF6_bg{$s4!PgGr<@)|m0UKeHg zD+MDj$N)QL+vB|qZFqt3&tUe3W%$^(k4)sA!KW3G399M{O9v52eD+;ohy{W8g6`Ww zYTNIAJhy^&a~!&WlT-eLLJ3KynH}fMz_6EAx3N> z4jCSY=jP}jd|+HbXHdZlX_6?GEfa(K*SwmKv9u?IIT+)5lZy|QICV(an9%EOID-W<7Zi$P9PJfr<;ymKRo3fAN>B3_0c|X1r1gW1naa|m(iM5Bm zXOBAfjnGHfb#tBP5NG=HzPM6-*{$x&dpZux*@$;^!W_P(hWik9TU90!#Wm2_mg)9( z&%48S&{C>T?WocJ6NMcfeteSLCenqwW!QJG!Rc&wBX9*r4_SR0gG-To09dgKA9~t; zDE%!Z_&upv%PBAWQ8_?Xhy}@QGgp053|FG?gQTt_3>+ILj6P#gkr5UXkpJrQ?M#ik z>T;8wt!v3UNmJ;;vh0g3TZ{Z|ZaiPLtlnh^mLk`8mE2UAMISF1jVfGA0IMSla@*fM zspsVC<6oOTe;$2!xGiM9bnyxIn}pIb*YbkR;Vm_ziqss? z@wF|jiMo?9U6i@xvM8@uczG(Jq7rwUG%h zPmI9pNUe#Mj5BgQpZRf#4bD$Uo@o-0=EpgHw{f$S7qz{Llx~Ollm<1EF#;F+_=zod z%T5A6e}iJ+vr1Qo0ANm}&z;dNI(*Vqb&uPl6Yk@>=_2Oukw)TE6K{N)$GiO$rIMDG zmlB~s@F*I=U_|*ejl{k!!Y7f>qc(YcZe(Wliu{gvvwL)gWQT>?oU==4Jx+NkEKD;t zs*#{UH$+z82(pgoK0P?fb5!n%L8+8WZ6X6wF}kj>Jji%QoLFzghK_gK0YrYciL}0w9IrJ-e#kgXgRi}V+!)dLbpZt1LR?4` zVpYYbKjjbEZwBz=UmqynfEAYab*<0i5O5~yj`YWFBHLa2HL0Ijtz9J5%Uy2 z??`RxuYGmXs6Rj_Ei%njGxVM8d4t&qG8!twjFTTaWJBSqReY#b0f4cuU`)&JKvtLp*kFuHrI zU0s046_)LV+3BxRL-0VJaxE*G07fEl;~YpsDX)aC8p9@cgG=lWDF8iYx6eKYn>-FS zRjLm?JoM)L@>M}Wyi5p{acF6DeK~2AgMfU{3XeFvTKA=`fq(K!r4Xu4?JuS_bXRbb zkhKpuJo^UbPa$fYFRo-R=>Q1GObC$J)@bmG!+Pz(O1PS%{Lgp2&D!A@b2X?LYwe3@ETh1r5=!IDT57!6!FP@ZII;qU_8~q+j&4)6Zfm z06V4&zzR+H+bPwAR4k8`cYJ@2;4@?=hfkF)}5?dQ(jQ{AFZ z=%-a*{)1<|KEmiO?fvg3$Z5syQ&068e-vFoqcB@Y*K5xm>3;1)S~NrjU%F|0TQnvU zha80&fPf@mM#i%hH9WZW7hOk!w_{_hfe_V`Z0o@eQ4QuDVQf~m2*;1Vg0E=>+bskT zZMd?H#F~QxE8;*!KkWc3-foZFfycfjjSSpP#&p$dTCZjqbYYD#g}53SxRk>ZJ{&i) zmiIH7ZPf@C`}`$BaqAI@_)qe8(FN%MFI=Cfa!Q`#1Ck$`v~sd(7k1_K=n=~0imjv1 z?n}pASb70j(wi$Oc?T{So1E%k#fN2>{_BX{htT2Kkxo(6BjktsPJ5#a2M`M-ES#JK ztBKkIVEqUD9utHA1=mrmqmjrF`>U02$uVXg%FWmn(`#@4YzTN+d_w^YVy{)Z2hfS7 z*8r>%boHw69S1f|tTvDIxWTDekGHy5Qc%JrRb+x;nk9QelvlF&4je%^)|w|qvS#1= z*(O@THG_vIiJ(-%T1)O!eIOjk623b$%^QqrRFerbxSoy*Ox+yH(*IjCHan~0S8M^aBUmvhx@4|*n5dI`O?}9-1)G;e zm^Bqo1S^`;Iu%+fWkwB=nRtY`pD~wTAQB(T7}W5f4IPRFXHG}EB_?i`r31XKfhNB< z@qJ~L;0l&-iJC9M8HhL6EZ@GU?Kf+nhc+;?3D&aeLC5&|)6j5-Cb7mwa)?}`#!e!t zG7Sr*1CQ1Kc(mV}fqZ;aUUrP#K+;dkWc-8gf}KhFcK{vOk@2Xd1dK9M>j5_L$3rr{ z@GU0c-Cx;JJpf&cMl5alX{Z5t8+I2J)wTPC74X}xeF&ooJN|WgAEG)0_UuZ~^LczP zMsLoc;Q~OVx)qG>+AZ)c2j?BKrA`h=LZ)K6-~e!YhTA=GSo!mAuTxIIp54&JJyfaa#4d8@jB+U7fNaJ-rO`SfoPF5S1jZ9^ zDpG|gm84Yns$W|KBm1PpR1#aN`1r8ql%9CA5x|=*mP62j?U|)y z`fhN4FK%pq?9l@bg<*EX!D#k`$ZCct)MVKR7KRIuf~wWCPUI<6&M8HYRFilW_IPtBU(1g(a~m zEmL^QUjH?nQXL9NXlnjttqj<&Q#mi`D4khco3XT^z?l`RuKdrLZCU9!!pQE{OBBV+ z&frH}c>@NGEAD1uq_6y%!81(vHJQ)j8_(CrzRo8C$vEL3h^saXbvo51US#||^Ldxj z%*Xn~5zB`H%LsFhtul;#w#D(f{oR-&R@SP?v`xatLNKCxm0U0e^Be$Gp;W=?%NC*W zNquCn5J@=qZ}c;EA|Tyf=wZ{KW0KOBr@RXAYC#l=7zxPmk1DxYyl5mjBNmWhwE{9f ztFx;*5fmFj&qm$!rtu6KKq|lRkg3v;q(J7Xk3YJ*nRwd}nGSI3QGEre3PkV1izyd^8 z8>UUdd5dX0b2O$UYqmV|Z!kC;pt-&so7@eypg8#!tm<2mHHm0f0OVsl0BFSDtuh(qoSWd=d#JiNrm3Scyh_Qo3wS2+;TY*C!T z`Zo|eJ0*Y7ZVn@4B73g+`%05V9 z`l}|Ib*~zz!`)(OVN`zox1R!PqdKDD06uP#ynOI&+Pi0$%e1p15c|XXX@w&dnwAeo z%|{Ot_#^smJ@^|BUv^FBT6)LSvjc61Y_4#DbVkh{VIaE-Z4a`I@?q%slwX7vzU*w5 zFWLO@bp=+RtZC>GB_rWA!fgGwD{>3Gwdm2iyVI7~5DBk$34r_#H#WbC!(Q7(Gdt}v z%j}9t6jf8&&3Oym-Yr=1j8o!+Klx?nX!<0@F%VFLuY^Zinw0gDDJn2<{k83;QjsfRarvOkgT>zN44=3+ z5Ms~R5(dHDw*K8^u+lA7hd<%+CPc6{&=5)1tPX9KI zrIP+&plK~dyTL<7ghr2hvN+AP-P`%DCn)JvseVS&I+L39o1DX(YW0&*ld6z^e;$WN zu`Gl}*R6c{`n!rNJ&Vn3kWBOgah1^-#8pq{KV;%tV91UDSt%bFvK_&@aM<+)JjUqh z_8bdwM7n8!cw{L8!fJnjBkXw8G8v<8z$+ec_D?`Nr(&c}i>>&=sRD+zt%(>4y zaO)hUdfQk77FMN&Q`o$PA~Nz?kO@8wun0Lh1mtB;#y5P)>y58LrH7mn?qHn%_YKdn!v7`fN*!106!!(s_}{)cOf5>MXAJo%ysiibjf z1K0+&GV9kR3W9=X`8cbm2T;Xo;P(7#kB|ZsL4W@Mf?8@m)5{>c7Jk)WwXUvb?WkK} z#nM)Q)Z|}7y$ko~5MzIE0979igHmyorag|}y!m77!II$83!_#$UFqhw8+)(hveS)xJ3EZIDY>D}axSNSazkyhPN}2+{M_ri z_SiP*oE!`l&GP46Imooc&Ho~wa6i@@88Lr&ZCNvgtsLpxdK_PIlCz>Ohj+{Kxz)+u z1BR>y;!_1-NfZpp&gql($!#^@Z3+H32Gl(~(}-Dd8s$3`s4TAzk2RxpUq|V~Q5= z;I|^`>?1Wq2J1&_DqGvV0WNu_jo%RGn%nTckpQ?87d72b^AdZWqR?+#KhY)>30^oX z=fk}JzS!U#<48@>7dnoJ7p-qE3Ug?2&x$OSWdW_}qZ3iijT7~X#ir@OI=aqcds8WF zt>fm1LNDD+%Sz5z_N~S?^|xUhQs1up;ty+T@4E4UkPNW;3g&A^e7#hfivWiqgJa!zw(ci$PQITjuwj|j)O9bN!sLYEsOSX|X;30e-wFXb?8q>ez90#k=;y88eqz8aWHl*-$bfA)wUF}N!sqZ_tuCx@Sd!K`bt+JMqUPp7jDn??AV02lzO7(%SVx99@mFh>YD`p)>XAl4VMf9gFjs+ra<{$Gp zJO^-YhdWUKu||In0Ag+a&xl2Qj(!~cJ-Fta4iAf6;@e~F1PF@X-;CA52cKBXF?G6Y z`2Od^o&;JJy|{!Ql8VQ9m7@Zz?|0zqpLgMij*_oGM+_1;YrxY6y-xr;`I4}!a(wgZ zMNTo=iy^@}WPC9Qk(sPhD=C7FV7J$GzZgC?P^ZRG! zBpp&K4_bEe>0fOFg^J9-OUcL^|A|aBlP4yuFF{o+{?Kx>c4|rUlk%Z}=utJ>61vV1 zB(7HeeSpG??BX3~KjoEeP`8*jOXQIW=Kx&)gosrhW3!7|QR5t(sHWgO_+-akKYb7$ zB(5>1`b|&%rumoLfSs_Tx$zZJ5T|kmJ)axCE3lwdawj{q9=}Z=C;LfPk{QCeLhN+N z4kzMp@X4U$hfyTIs|sPEU$jPT+sP| zJbdP4Oodi+9M+*})}VCy2vbc+#C?4QFzfT;uLbz8wM9+!s{zd3I>GEj#L2QfKEZ6j zS*7>KSe@qV-#}|h3)7a^f>=N8z^@4Ah_whw10Cc`=N`st{$Oh5Q8N>3DwU@25e9%( zvyYQeBqeaAlj28m=>ldxrANbRk>($Blmv1qqH~VAkvYph(_{1}? zAd#bt$6S^_i6a}Q#4Pr_0Ed*^B1G!6W92>WjIFwIkwZ~+&#VA!JJR*%@VA#j-vgW$ zbYbsO-`;Zx6@wyv@YSkw`~>v?sth+qL6Px#&_oJmvfuXS4cmA8*6;w z0Mcz(Wd}um>{jV@+ z|ABUU_Deq|48wQj)uEv;@jW%_aN#8#w1^G(02#xqtK&-?cVz10uhni7#x@BdiFL$m z_VU^E8$&8Jbaq1>VVI3x7FZ2kt!T#?nAki14~|aM;#VGVTSdfa#8X2CmjrW){mNfp z#7m~BSLSIPs|4Sjk9JGZBPt{VDM~*9=uOJk6V`bfvZfc*C}2MNJg8N93KH?A8<3l* zt`$Fy?8N>{@`hz8zucCL46+S);co%tCR0{$isAH+Y>(wFB=`j{CJ)kB-$tQd6}zY~ zl$&zQ7SjFN^QV#8C{9JwM)1&>7nni`*e;18`HLpc!xDu28w@sp2TBKTIvG{wAcNY8 z-DXfbF+rg>hcA5?^0_SP8A*Y_(4T2u1g;40UwM%1B_VN)V6I_QLnGGJfNh%)vo&{2 z=#_SYRq32quTgOlTB(!3#hT$Tot2`%y?BX%Y4-$P2>EM?5G9^GCYFS(;cs)Z1r+v1Z^(Q;Ex}B zA(O`S(pTSU@3zhbkI&P9aEZEOpcr(qEjjMof&njz^MTbGdKE+P9CDdOZ)oEg7ec$D z3UNRmE`uYg=SQ#8C_U&Dz4+93mvFpcvQvH?Fl?{>r#P)X z5{Afj?btX_`jMHu0cFIA4@}6QdPeK<6S`Gq%TnncNj}<%oX4chor)z9>8&od-0sWE z3oq8GI@@KL4jPW_cFDNh-S2iIS6Gv@tFnbamMhn%N|fUBd_8D4_hb4AH>ZiDrpHR} z-hfEk<`0=jv5Vov|p$?XC+{!Tv7JT84P z=9$DsDzPazy2Xmvoxf&@YJFrd9Mkkf~fKUsdJzw8!l{2t;z1 z$Xpe-xHBSNkeEfe_+Yy3CgNfKClH){>7E|RMjyUk&Q2f&xE%Jj)M!Z*zg=xWN47)H z409^V!Q$9_&u?jGY2sDSbwnmfZvC_&>11(tfNXf->T+Ihdz?} zG)LRm{?9gnl)PgTPpDUuM4a#P(dfZuWWU;2*%z3lspH(Dw2lo?I|vRiZR?8lRuK2) z?(t{SfCn|I-Wq1E5h~aSt2>P1*qT!8>6*Xj|1Fzi(+jD6X+?C~>lK5zjZ923#~I%2 zw+w7EiuYeGKECC-TCSV!K$O%7N=@5fy;l+7fm(jv?EYaPo$s0~JYrxt@Y4Nl4T{H; za)vj%V_>Ib;XaM6T@9Qpy=@F8-6YZb-d3g`7Mc$}bnlIPj!qNjl^tVdqvTX7>l^ua zdGv0R(^y!TtJ2MqUlcBPhr&<&&^zCUW~KPr-0SXIsUDtnaQ_dkNp!7Flle?Wv6Oz> z(sRk1zvkEFGA3l>rJsHHIp{s5qhhu3VF%u=_U02Px%b}}(*16;i@42C>f0tQ{_%ER zt(uy18R|P6bbd7WN{7}N6YF^G{svv>@^c>j#n|2{Bm2aU73lcgaP_&)Tbwh@h( z^2v^mQsxc!-}pOSi~Hvwb)5s=E!}p#T+HsaNoa@KJ%=wYk0%A$c-#TujyO96$zU^#vgR9Es02)1W5%2G?}c?1=(w9 zZM7x@g-A25A^2y=V_r&};>N|E?(*JO4qE4&A>{~$=j~7VhtRu^sE>>|63sm+c`L15 z9qxQV8zdIULO*>S5x-K+reQbUVR#V^siQ`G6;`%MG`MmJX-~vZKz34}>g!YvX%SDy zAsQTK%cN&tvSK>rl(*+o>6?=sme^akUJRbdVIvBj-;nOW(i4 zi!!z=j(O{?u}_xG2x>di>eDTzMlSr3PXlzZL%hhvaCO`BM*ebF|-B_?6Bw?nAk zJngna%I!yWRny7$bk}Y_E`QDWSis;zgj5`rK;mn+j1b0DDI4jy-(UXT&eCsweOs*g zwPoiy#lD22@DjnR zD9gCiCOD9#|3UDsV?0In9sNhV`ZG#5PF1+b?Wz6x)~&|g{o^G%EvodvnJB-SJ9$yN zdM)3&?WYSGCsMhX8?$|g>5C#qO~DO(PaN+Rx_%LR;?~#OKw{UbNE>K~AAr*@*;p@S zC+ut-WC+P*e;&ua$=>dgiuDj3Yl7Lit0)>gl-2oKc6*}DuVp)|=KA>Y_>`M-or7ql zCw@nbE?5_+gNGu~eVU!-GFjWlTSR};+Z%ine5 z>WzK((&x1E%2}_hKA#W3m~_&XP%$6|N>y*9H4c@PwAFK56p6pt!#Ih#H2S{SPi=XT zdNkx&599L}>Mdvgsm%Q4ua9LrAOLd`A6BAjpdkC&RB<%+#;haU+{v?)D+_d84KvR5 zcp5U}uO{9aWX1E1oZeP1e$gTYG@XfvS~c9W2%%o2W+_?D5Za-NnxJ0x51BGRF=KXT z3SZ^^pnjxaz#P->I9PxM~aEYWc zLwJm$@hfZCRI$?(f1Wi>p9ej69q?DnZwlECv-Y&}g+*lwh2ff8l^stP`q+tQ3Ds3J zZHE6+zw+CovHp4vVC^y&!Nf;kv%9& zqO1zc;BU;I?Xda!`%jYne)TfiYhGKVPT$_%4in@f`Kx{RJ3KwqMj_l~kJub5*b-AP z_x(Os@chkc zVX$O0b#1KlcE3=Z9>G&noEqzWI4_M`&!9}7pzN~oF;D*&Ijn5JiWMY$Oj3D0&qw6X z_^my@-Krh^>n?B6mCV~ga<47jF0&yo%O+|&z7_0OKGt2NCe$m$oksEQcHUlCG!`5P z*Z&z5kKpZ=VKh@>5}Jk63Q4Uq>dn1S%x+g$`ZXnV(&cFMHm_?ZBgsi2`<0XRyb6yC z>)p8)(eB$lLmwDB+63)e1uv87^*(%%it}6Y`pZGCT%>-Nst2wR6~Fp%Hv970`-?(H z9KuH{)epS0a_XTY@|+&eX!6D{-t6+gKTXimf|NkSS5pPz{e8uYaqk-Jp#Fu+&$Mot zVzRCm8LhH(Zs;u+l#!{zCxY!p9S=q(fkQb#VYQRo%OsUGsQ7?*kxqNM^mXR-vvd#k zZAedcZyIjt9>3W)&A7hG)E>5zD!4#V z@V|40Tf-UGFS32EBMXNZn-yg*SU|+97e_QZ`_LcqH!Yx?bo$!R9X+0OdmELcQJW>* zHEDdPgoN8?wixEylBQqYRJK*`bc=yJhZ0`=zQU2 z_@<5)lcOmf4@)ZvoKBFKt}{X$GpL5y9Gse<>ZARYaXo_zcO-qTEHUFFp*I-w|F}By zKq&j~{U?=V3)z=R*2unxk!+Pj$(Ah?%2Go@hEYh?q3ml&DrJf6`!=#h$-a)QtTT$4 zY`-(l=lj?1ucyatZkp~h=e*CkuGeX8%f-}3@@-6H+@nw!0+BKQYYO*+Djjs&%_ zJ%0Pp`J~;~T6YjgygU5j*#5fn365igS%VH5C3*kvvo@zcN{5)n^_}9ai3B0yp>Ojt zDke(>Li7>#v_}|sr1Y!RA2}5(PS$*{^6Av5zO5;Z z`1aCJInu-H=}*dKZXeRL8XkO^CHdM#m)GNx57u$L!4G>ItvqsTG^udvjeq$=3zly0 z^v`ECvLt=ct)jb_kzi*!-CN&Fk3JC7Q0RSA8fuhr)R~TT_IAGQ%M8gV?#RfYzkDA@ zUq@GlbWKN!Zhl^~6?300s@(VKWxuLsm;8MbgS2xoj?9owSKpEB<9M=V@SS||o4{eh zw*PX5bnUR=ogK;_+zui;*#EF+N|V+_Q?=^;_HhK->4tpqU(S?n?NL5&=W8C6E?xEj zHA}s=tdx<-w$aT{*;Y4U`84}G#okDvrihlGd6oz zf7>oGOPbV!U!<$*;?9s(k@}e_ee?NrzqFyIUGkuTs@*&1zCI4yKeLN;+IF){8?yWs zmbNj$Qo9CD~@m$L%r4IgPxLYrgM&>SH4f z9j1|QEAx> zWezVgRIwvH8t*@6`)~WgKMs+-8j(FUjP*usvoc1r@j3q$yHzjZUKZn{;41!0JJn^f zCX-Ajr}WC2bS5Of-J4`G)-PH23#DkCAB5P`%0x9FZfAo9Xk9C*bBC&YbwJg8n4WRO zu_u0;`q5G^+0ihd7a`_(sDG#)@!G`4_Fdhs@pA+JTT6&(>!a!99jbj7N%2$OgIf81 znisApdrVzImaEKZuU0e_U!&aobsXG$;sWL7PgZ}x%^4Z-|J{7p2fw^zLOD;1JX(VeimRjpt6O^KhR_e0!iWy&823 zX@}|@)M_<{s((x}#rlW!RyEre`yOT|?od6e-Y_jIDnPT+=v+VjZ*-g5`d7{$riLEz zjPGWfhP)4ZiQ`uTG=p3XW|UDEoSDwA?ob_**k{Jb9^`Nz1j`hvMB&$IRK_ooOnJX0 z9J9H1o4E337a508 z;(C2qg+UP8Lb;0V(V=~(#!$V!5g61O)4AQ{QF3|R_3lRCp#u)5xjnxLyC$yYflv3) znvL#a9?B}6>oj8HaajWNAHMdTG%njd>Ty1dzA+=%=+xnjfyLtOm1>>sy+eV0GxXV` zFaMAO4=sBXKe2S(d!A3z=i2{0*x&e1B!@^HV)_ni)32tN9K}oxDbz_lJNnk;Xe0Z& zE9ctVmQO|I)9AmwWc7z!e$cc{P4ALmJH=$&f@|HTUYWX5{{izpdTocQ`6uhdKc#AT z(}u4;!jHa~Vv_NoWB%g48M;kfmV9S7@X)3Zalbb3@15xbTBVp-_^L;+j+)=|#052u zn4NvU;xI!=4<1FZePf4kYv*eQDp>=|PXvT7-Bm+i%doU5j|F(E9^bP!r`XIo7D$>z)@Y zTzqAB?@&InVPR_Epo&dyGC7>PJ#F?Hm-M@%mFXGMHOHrziW}JeQ&4}hk7`g@Q08oz zV)}N$u($c87U3UL2OndtAd-eNkHpV3;+hjUVxwlzX3q}TSQ_tN+c?bSzt#X-tVsFiH*5hoA z%dNl7k#9SxD_z==6cz_O5QLS#4S)A*?|q8j&ardwk4cSQ(tFRmE4;gNb_O3?O~G+= z=loAgy{u4*`4Ky+{M5cG_c(%yV>DL^a}%`G&KZmdW$Li|*ToU$_hHKQN}L#=5b;4j z?-s(j!p8wM+>_)%Hy`kg==iZqaqE-)aJN`9&i11J zkDeGXQn?ll&fv?Zi&d}8<4Fr>zPdW_2`_EG1E27APr`PWrnBkVry}wK&9H6c8MJkN z`9>PzHC?pa9R5&S;Gn6~l$qlc^YglxGw9v2L=b2`$N`a7gZc6X%DK3M9duviPG~lK z*QTjXT)-pHefi7J?>#1#{AhfVS`--M)#d`8Ld8(Ky+byGE`msp4zFl|4eU01J zJ8(?`jz7!1U^iU11iN8fqr=s*PMk(6F=6~h3=Fy2bum0hkN$WLj6^(J))y(sdPInO zvh^a}8<0vF4N1&;whrCi!t{h2;?cL+dg+wX!}>w*!;kcj1sePqAKoSF_OQjZ>30eMkw++QL+D-KtX~GdoDb?**mC7SoDtEuE)lO~Wq$I6%U^H0*8d{yG7bI|_cK zO+}eFEVbFmn-jNy5WOvZrux0NH+fh(XzBbD;Ve;~@EV8*3eWF%7{k`*)#t zaV9oMDJu@Yk{uVAfAqYU!!HVSMCEyL%Q;qzvdDWp`9MV7A_dZJmqsN_2fL^g3_cb_=Y0VB{o7Ro9!pKcK`hyF?jfQLR z%Fxl-C&-b}l~xlFR^!>OteW#wxzFEbsQCNv^?3OwkxI8&An7o^i~jmp-4DaZiI<30 zCC6`+PU;H@S#8Bk@j(RX-TJgc-qMzN_EiL(DXPz5mnK^$%Pl zfEsLXcNmBt3PxdAcLM(}#{{hFexo^Y@gle(%6<_lX7D#OH)iP$nj$c!ne15%%^pY* z^sdQ0utU^r0tLpr;B4RZj;V_&1(%D%;@0_Dk&gkvA@!>y2upL8_KQ^U5oyDVjGQT( zv@>|^yb!x{hcdceLGyU8jG=Jl-!)I)FBpUtwc0sDOb7F%ql?wwe<#WN?Sov-}pd3ZaQPjJAG3Ksg9nmxnFhuCtA9Zu6>(La%%?8Ff;|kP&l^MV=75n&t{| z*u4don;ABMzM_81YSVWDh&`Kh{icPd7x0~>FT|Wf0nah&(T=Y55t(shGD^Wd(1EF2 z%!!Uj#eet6!#yu+?do}88$q6cyqUD9tmDHsAhGVu9Z9Q)e{3hMN$DxJo?Z*iRN?r9 zZYkXl|7on(3g+?eTiuS!Z_3M!9dU9#a}>SOYi;$%lw5fVwbIQ?$E8|+43{5A^7~|m z&@9TkM*W*UE^s8&8K5@Gyd=(jo=ItGuC`rv$Mc9j{`-wM!u;@dmLzFAOX3jfDEU^J z2382I{x|O8`@dZR6&b&BX3A69>eVN?@I_3eO8#7zNxo)pnsGfAyXoAiq+_Y1(7dL* zg%qp~tHoALl;>8bXFAqPR~)_jn%-(rFSSyQ>t4EA`+VZ8ZAqkv8bq!LzJNv|!;#|e z-~Bxc6Y4Kr1PvTwb2zi*Bj<#eB+U<(fUJ#@hA@}hkn>qP&(XVYJ`OB8BTMb<;zx@@ z>;>0Yky3(X`WaJuKgg8?1wN!L17qY`0XqHW^Yz?<#aWn9OICq5=$cduUG$VF=3pX{ zy_zu{J1&YIFD{1GV@BnJ4x9wr&Wu2JeQtXoHGPdgKq%Y_@RBs;^id~ZX%c4(IG0)>Z1?!zJjK!^-N-CTM2w03 zzAQ08+q=ns5{X=q0*gN#f|Gz^Z^P_rEFk8z_NeX0V`xIKYP5UTD|VjJqSYNgk6cv`}RF8%O|(UR5SR(qZBwt?{0Pw)+gRL zGxxYNZLk6@js2baFwj~PDRd5-rZBMo=LlU*z+?@(urRiCa5K>&q&Z-I-P;0DOVvhx zQ`Er}S|JHgoe@D=gmd)<%hZ9AY&4pezAYj8CYfX{JHPh;-s|f(GgqlTn>nsy)Pi1^ z6F4^}HTNKDe{pUQ>H@Hkj?u)|2Fi?eI zg{!Uk0feO(^J0>1|1cuU1*{Q9Zw#xOaVgdy;(TP3gq=F2XWKnw+l4#3F3INfv7a|Z zcE2u;}P@?Lm^%c7)o;fI4HHVhMtGLD&L~A4v5zGTeO_g%AQX2g*4yVDnSDM)t`?JXYWY z0^x(Jq%~DQ(M%2epZeO{p2P5>U#-iT!!tRkkv=JIRx;^#HYOT7K?kZZthQSp^DjN+ zD_^FiXN+b-umKsmfYmW%P@cofAFbMROThvSYq_y_5U%}4!$PV94eR`kFzoWvmXe1F z*!4<@bGX(CZ;VJd@m8mM@9Wxm>iz735E~vkwqabe0$-g&HJjE6# zvxz7?$V>Jfk4lx^XQ1 zJ%)zUNAwx!PO>$Bujzt4>QfjH_C$*>MS#8a9K!DFzZ8mvq4->EUM$E6dlQGnT|n8a zzem@qDlg(W79ebY?D4Nr*|Om@E({}H`1Yzj-CnBz4pl2(BTj!TAN+^2&-%>$$)^!a zWpB{x%n`Ov`h<{$_e7`hsoOzVeOctB9etAf>Uy!Q8u}sOOu0O=P}se+)Mkf?h;r)% zb&04a82cx+kAG0|1Tsffy^eV!n3Xb)ot)4Yl|^9Q4lRvi$*%v8muus+VmM3NP zSScF5Ztma|z~e%$WS6z->8_3L{ug9f_z)_C$2#UU$HWmh-S;tGDfsVV+Bn{63t?W( zqLhf~MMV$6*Vn>7{dBVJz&)^{M)-fF2sq2=d0Etbfom76z23y8 z!c*;vhVI@$1v=2CM%NSf@q*LtydQPhY%udlepd1|tay0&9%@+y9TiG6KPM3?Q(K&H@69 z3g5~0y;aix3ZCCNtkQpg=?i0xOCd;0=4bvs>=$zXk2G29I0k8!i;tWs=yV1USlt(u zuas;J*fncJkwFqCi?lW)p8|^lx zABMGis@*M_fMq(r5%4E}ZitBF*6n)$$6F>fvGv85$~}(q-!I~uRQ)+;99`|R-+9sh z4}x`!%h&VX%2Z>qoP7wk!U^DYg%>S;qtVq#jEDy6Ff)6A*DXvhR~`sLef))X2dGFH z!RCHW3#cWqyf|6x_t|`sn)fbw>hO~wV;F2I$D8V`Y+130N@{XuumhLT1?tTq z9H=+ZU*!NedCQ8GJp7(V%T$`;6y6f3rvFJnasUGBQ!AQxGW^AsWk5LA-~>q}Vq6o6 z-C+*Lj!l9ZOv4NaSQ6j}?r=}wvWnMnqOS!t7}GgnCpSNXd3=4h+jU_{1e35+pTTR( z2ZE)cw||ln;q=x0(H6eWaoR~fCFNC|rHxF1zd<7|Umo~Zy1>6`xruA*Cb%VM<9X=5 zmaI$e*6P(j%=*&4zV?&tr_<2tQ|yBuRR41f*9qk&pU}U$=vZ{?7`x)+bO9xN0SHN9{d7D~sTU%9VJ~ksE|{ z|Ae`wbAEm(Lr+aZ&)2H|gXz@%V8O5Y?LNIK^RQCkVTUB7sx2sfI}hWx?+mqS*68B9 zZlh%>___&;t(R7yyuO-_Wm>&X@@0us!@mvZDF|1~V4jV+qWL3xC1)fW6r2+5O}bvr z(4~T-t)Ik!A~MkJy*h__@~Z03z0Fj&c=l#Sa=UjkE-!EDd^;rCiF)8perMak5(D~x zfz>9nvI11HVGuo!BZFyjPlk|l(0Fb8la&)~j+Lh=ONyvFn^i)_CA zx1mzhi}$lbu#U(VCva#qo>+Yfk)O zGAFbs47}=NsQMt)y4+X-yr`O&?Oi^y{V^KD1lOj=USc!&=lKPWVzI39o;$>` zx$P+tlbydZE7owa8d9yz3B{+_nldPnqi-{_eIS;&>(xg{I#S$-mM+{RmB<_S9LakF zT8MjjR*kA-49&QVN#IV}#PH~$Yc+yB4~C5b50cssm^jUe$7b+zK0v`rsIvzOmJ76{ z#u{_T3_!t31?}~z7EpFcK0xyzC-1gL7M&Dtp|l%uJ@H4p z$nVp-Q$sFrR;|G;6DS?%YJq7yN0xjiZPi?E&L@ORGe4&v<>z(6#f&;a0BP7N<6+vts0FnZk060lY?LQ z_)~36{_d?> zeC(R->v5+Ye(Q6Uk?^pw%KC8{J#LWFrtM6k)Eoe=q;386 z8NA0ikJwND@vvH~URVk587GxSItjoLHztdbqo>L8e>|++e?s^q&gbZX{`h=feE9)A$xKGX!6C-M zqW5TZvwvqx1O5>FDcso9p@Bvmerofg0n^=3vnRTApJ;pc;HCAPl*V#!AtcH)2TTBC zDHG=Ms%uNJT_I2(PlG6Q+!a^?Wz_({;NT5xcuPe6@uIX;l$pVc_d{!HTf3MUaqxkp zId!_>zyLqR((X+UJOpN8qQ1@0ZFtBHCHasZ4D9%4AjD2;G?)9w2pBuV``mW#YYs4V2djONqD$@Bk>D;bz-8ij3)U>c+YM1E>zBUSg9_UQmrz zKf~^a`c#mJ73IB=g0fJ$qc^4fyt{HCr8UZ`@B`X9IpxdaK?(!QsjK@0cgmN;rQYVI z$a>abr^Lcr6hxKcSUOuzGb4AZWza}O0W{*p5m0n>B5{F9q$W5 zu!z04#=jGtJKQrZ701ihPJ;~l`ZTdDcI6Bx&z+OUpNWdLHzr@W*Zm8=d8goOnK(hQ{2c&huhfWSQaz2sHj(588s*Jt5x8@ZQS}wtD*|1$@GvsMvt~Z)ihR}$ zQM<0^_}D5lgBZ0*s1!bdFn30^-B3U!D4@Q}c;uY&NwiUD0c7mw?_!lMiP8VHrN&qC z;cTm{j`xpA)CT_z(=WYWaT(B0mVlNqI)oCmELy;b)GyIgxU`1(Sb{m+!hMt(X)6W@ zoYL1n$i8V6fMtH#5_CENtERIV@F%r^60urZP={XYul;s`Jo&tf`j!j5iu4JX%;;A_ zQ|jmu2(BxqD(qBVjv%UyR!L<^;@rkFSMx3!=Ef2Qpc+lkw{j^+y}+<<`X zc@2aI{k+aLNs9#KwSIAYqmnTElIv=aako`FVzJwr^IPubU)LK3heaD@D!M|jk}wMH z@)&O`)O0#2l!7-IhKEnsyvZEoE=qq1Ffl{Eaf z9Q^-#z9TQNG!pw^Gyv)tAc;0rawP$@9d=FUdi=c0N>VBN$cPXPZhH&&H1g{~#*5Wg`y8zMcozn$4JkGk!mj#~Lda zKDx%ZHl};^syYuTzCN6j^E#PT>!|LLtH~#++Kxv=h#hw59kJ<7_OfVslK&y!`F`)O zr-DPvpSPJXS#|4Hd+Ihlyh{&^vc!EB9?o)m%TU9R0*>LBZ0h!a^N`4=$Hr&McY~sS zs=Nt}^D}~p#7<5J75+r#t}1#L`P69CAoI^!!7+5YFPyB4SfOF~@dlLOr>mm!ZvtVX zk?ebwchQl)vwQ0h-gcJ%^^gVdvDCLTrQQHvi}K(2^I%OpM&_Kf0w$beJeE#-pvNc$ z@B+0#*sM%=`+LBtOJ`l4;|NYWEpSybl6^07FJV@oF^%sxH<3Un*WW#Z2(tv6sIahKe zCblz5V*fJs@5^WODX4#@;aq)f1!%Y4)(>~V4k@kkk)PGTS;&m7^;&BIx^|m8VxsR2 ztdg+0Sz={({hV85_HdoVON*+TQ#Eho?W<)Sz~#Z-qCXtY|3_8>)hiz z?WVoBfW`L!GMRWK%3ZU|U1RT}eBrZy6Mt$USd?wonN~1vJ^U1l@|aK`&fR+S4oTDD z4k;br0vm;HQ~lHDCeBqg>J{prv!8nLlHs{wlyH># zH8Cv8#Nn0m9Qm#{rysMJZ`+3`Yy62R12tV@ox(9c+}ofySDTq|vt66|1D{lp-&CD6 zjRr#>-ub-S9XPQb|+dq+F10YB;#?FVzj!}7u#tokr)|IyzliyPIH0Y*tjHdBGQw# zSc==vj`OEDTxyn$Q*ZwgDgQK1GZAnA38!VxT)R6L6p3cbT3al5p_My(qp{;Dhu>R9 z&$q>P#_~4Qod&bV1skxecOy_;vr(K?(K!zU&83RJE$y^aep8|F1p=bR*qjdwK9G3d z(y^>Hdo{hYgIa1M!5YzI&Jx_)w#TXGfq5!Ab+ex16(MBdFc6|t^*BeA&3vEo&30pH zIm!KgYqyuXd6f`D*7jj>ZCGZ#Ldi#sl>@jVQMDIP@6KYJbMx8-j_WCD=y8&7L_x&f z;@?q?LhtitJ*uj98{j7#i%OTslpz+|Sme51B%G2X3S27GtL^N#*Nf8gs7sQUJ2vRB z6I5P-LKwTBc9;yYZ$x{SF3EW+i!o)0ViJFR?T~!z5M5Zr6&L5YeO(WE;__H)T5Cr^ z&e5oJX?{-f1tsh9blOU{teuu8ce|q^&0WRhh|kOi%*LKPzVCGB`T?Hw1G*1JY0&3t z1N;YTHJaBf2z>U?rDoIxq9v;Xa&1QfV)qO!a(`ny8EfE_yN6}!M7y!WlHkE>r==Ma z_m8;#gEbu~D5BRLy@G`2-6~?X4(-yi;)p5D7zfp=>%x^15f;iPj7%SAQG{Y;y@>;>u=o69GNx9tV}2! ztzx3YZhy2sa?JyV3YmnG0-^Xy=YKwbG_O4vKHzjt#kCpfDHgC^u*OQtCC^6+qia1r zgRPan>eD}Yh6)Bk?l}7?8gZT~2war6Phl`osl6ir77hD28&PP)I8@#tmNR=Sqof$$L8){My^4%!co!o`{s^RgZ- zadRWX=NlM#hK_`4>)%xB#YC-V(}WT=6pryBUmjMH@{JOG@-ZFI0w)d27{x^S1>Dr{ zH;7%2@_*7A8@&y~1nj(fcCKDMKYiCp!(o+NV}AT+9nrpaVdAf16t%G!$EVMP5sUg5 zzY2nP>+2K!Q(f&z4t|MV6ey11y~Jp(a#sa={7dGXbFzibWdb~EV#K`joqr!F5)JK# zNiNOp`rF}ivK}|eXx-5ASVkUY8rnXWglHQ_l6WQqXxO#7a!eZA*JRbd|CRe!rgll* z{b(n1e@JxEIvYf6T)&>1_4R&?jdtOIchK*OCi7glmJ#xgbK4p2SgTOM$WuWbZqzT% zqpaF#?ina!cbWbl%bw$KW#{$GU7{B7h4xarmT#L8#OxgxAI{8szbHK~ej9JnKRy$J zzWwVhYU!|`8n3XM^`)gClugWuVc)3PlhT-hPFLRQrj8PQTAp<}R@K|-6a85&?e_Yl zH#{9ie_M}JD|wvK9#&bug~p7lIiDEu6%tZb(YuS^2~*`cC=V@_J;o5-q;Vl{vy!G` zEc~zL8rbU_ZvEc+-ybaAUQzO34f|Uq=X4j?LSj7F&^G~&K-sFbYHaUu2#OAqR|>?i zC#@DSf*V2O{(P1Z;yY5ThAYAzrCr_L~8~S>)?3TwNew zEty`BD?OAT`Cec_yOEQC=5yZ=+~KdtqzXakgl!%oI^dmw*gjV%hkvOV$5mRxBj=cV zJe;eGAFRkunh|w@ALjAjJw8|{imbTaN2ojN%@jBRqgUwD(hY%a*H&T-kUDjFz@rdw3J> zngXdGg-1r&5?5}04ill__fEmw58cD66^Bu{vl-Cf@?dY;=9Q;`Fz^|O9{6JSrXfTt zE(EJl9-(xFvqEwJaFc6zV$tYV_y%J#kIag%&n5L1tBf1Mw9b{cQw@0WwH0(4ZxcOBLXszb0{#Qma9xPx`Q_H%UYjW~qldh*Ww zx%I~4-(klQnkU%5I$E!4f89il(gSOc=~OiW&OQDrcDQX<(s>8tKJBS4oPRSLGVuZ4 z=y;wb^2o?NcwIiLQ#eYV2?}^=-Tlc+Rr{ax_L=FeykBe(+D}80B_rgZNp1lxGuBv@ zhnMCZmu2cB#>_WOTVHo*!*5w)-?_KAK-^n&SNOj88hvmQgd37MS7q1w1q6WrztoqQ zwS~8Ozi+_l%&$wT%rZvc<@8b-aa#-L(YxG2SM=Ybt=*Wwa#BFL;$S@T4$*=e+1i-% zF9*(Gn2S_Vu;sc~Gme@%G-*hn5ECDStyo)NO!)+*ICmIU#?$lE48AWdbZAJx<33y* zlVBV=4<`mi#;n_O5%9wLi!@PITz|bt!~PsukHT2sgWxtbl0P7M1GOS_y7u{(?|HG< zQmUiX{LmwJ5?#c12c~0XJN9JOs6Ok#Zj}H*APXD?vcTIeoSzlg)1BYH!cvQ#K{PzM z8@`7%zk%#!xQx(n1N5xnVI;o~CrO14kM9aYjW8;mcYk1a>+h3^d@$^n%n5KOkHt2slRbqwWRqk~_ehq|WQqIB5gQM48U0=O>{G_>Y zPTol6rDmM=&IkA?iyIqtt@<>q(CPlu>cU->|Anjb+sycs#yAIjuO;Bi^a$*wT$7GmbTiAhl|@iIkbcFP#p>(m^~c61{E@*Bo!g zsfG|aw|#VoXzQ6*dCAztrx!E##1VEA&D;GAPe3PmY4VkGJzJrKm=F;HFbHXFFN&&$fApC`sM@_q+R~)m!2K zE}7i|Frfrg+N?W<(|A+Fxi)kyy%7HzEY+ECs*m80B#S$I%iV*JWlZyXJ2+?XJ4GSo zNwDV@bqIEES0}~6dW{-ZAt?kc)37BhV?Jg7L(262J~V@W0+n$As__VNZENyIH!kpW z|9ns<&WQ>wY$Z7>5w11CxXXzQED0AqD0~lA^e+pu=aYMo7f6-aMH{o{TYEH5PvdnX zv={0rK%`*JC~Hj627v)FGwA(-P6e(_ouZlAg}5~RVXqOT?isXElKYJc@4&Rni+nuX zA*xYPk3MirphEcb38AfB`H3jxFC&8pk_zw3F)!nJydjSYLK8KQj?$W;K{0K(aja2E zncMGST>(6$31`m$h84`N^Y1x4y;mGIQd1XM{x~0vKJ+pW^{s3lHwhb6RF9);cQ~xe zi!&9}#Sra20gQ@4u1m#xFX_fR08Gz?D$%{+uGZ)>~$ z3n;BG4!Y%=A_Ha3OwnE^+18^KZ+6p07zl1`-e-=;8scCpJ}5CgR@x5};6f?{)(Ook zKr6hp@{bRW-k@Q54Ch%Q{?1Lc8t!FH0}&*12sW)8&W%MEJ(e-XE$&Wuv5GI7)Cug? z02WAA4U0+0@Xz*od@t$&hzlyqp-xR$+Fc52_uGd#=ueI*j9tQiX_jU6Q{`TQsmwPM z?j;T_Ql+64kUmPc>AnqH-CwE63GlZBw1Dj9q=w$sT0_Jp;foTaVa>9!21Cb1`RAh( z1ge^}0VZ!@f0y2w>q&k(sw)`l@c*K=5W3K)QB!nZe|{=FU|bVo31JN(PBX9_?;Nvx zyo^);Xe%CAe4YQ^(JFsa@BrMH?AJ)7K?jJigcC-YSa}U-?p}HQO~`s4Ul)i*?Dd_a zWLc*f2!`XDnM)%g@c88^T$eEB=etHy36{AY#lr!EDZpbzVXSh{RMBWf&IOihB;T$x za8F6fJ+bNoGkEUT#lqI}j%s%GG4}FgNU{$}+eCtpT^`b$y6T`rwCA%@M<$afns-$S zVpb{)V%Ao-{vkVLS(=0*x)$3oRwTa^#O(GAfSt>9_>hH6EUMek=xhor%9)_AkKl~= ze*hAR9Hzb>iZ$p1KiZx$X0f3u1JdwU!}zo9ij%IbI8pP50Xx4v_oSl(S<#BsupCD# z8`;h<>3SGp?ho}v&j#Nw*v`XROTLnr(hG;#^zD64BohA#{Xm&QC@NVXo={T~L^CTn~FJLmaVf z#s!2ja&F&W@0-Efc9GxsqE&hZ=Gzy zrtGnakud)t6CM=PNwcWGno`kw*uEtqVSWIL-K!9=SSQj1UVkwTJEm%aA?Gw2(1AMxW5NKfmiBd;POs-zN)K zqpg?O!wpISY&j(wTj?6vhDNU{(T>)s&?47(#VhRs!nQOs&u*eFB}*aJt)ps5LjoY8 zLcEc~C&1`;jD|}NpS8v!f9&~t^ezpn)sstII3=C#@bEnkp#@rp<4Lf~I9-^WSaBK-<1kZ~|TUxOoM|hJrG-_Ri}SYq|`(cB@oA23Xuxl{pGwoZo*Q`%UG6Puup? zf2Y_rm#mDjFzIJc@p(^W?O`$JAbbSWWCxV8aqomtzY8!eJ1{hZWenZ5b;mj;|8k&^ zlji2|zbiRIE-PnL7V#KqZleNTe9GDKFns@jHk< zU`2ab<~4*gte!!;DVmgBZ>|)tp(p#soLMKmMA?``?;hp+83_AHz2tR>oI`%*MD#A{ zIU~aEaHwp}P2?5|zq6#dN=9-Ax36BILhMu#bmVLAhHs^4v(}yHw5bs;4Dh82!H$62gp+JnO??v9 zznXaN!5hHZx_;iJyVJ0C23^}^886(PH{#xbTeped#{HWAS5f+I*PYYsj`9qi9m;o! z`mrNO{)dKP*!5>REfeAhXU~~};kKBfGshGsGhkC#&YfGupCMvJdj3#}VTWPi(3HaU zx17#(V=u7U?4EmNMDJs+(Sc{8(i+k>2>I{N1VnjFP_`e{erUmAwa(nG08%p@>B_BP zVnXZd#tF^mSZxlm?E(onNjOsqAvlODR+LV)P}?% zd{~jTXQBNhU2_z@d#8S2>TD9k`gw0(2EomB0kpL_9CSmsA;}izUHvz!R(|e51_Oyi z;BUqWmY3|~lAvRpc;RUZJlOk=nF9yD=O`Ux;JaHT;rScYXkd>B#|}dO7ZGJ)yMp0O zI8UzZp_{{dImclohK-TEhc8#q%R{)H0?E=8H98%dGr=5EW78`Tt|x&q%Rh$~U50S| zbqm6EayI=I*|*&dw0V2N&pvQD!#ry8yU^Mey$!M+9n-p+Ca{1HSiBrN6eUFRZNCMK zyujEWMU0%%n}mc67(72ZMx4!Fy@j+LvAnC-^`#?G8F7r2-nt ztju(`f*pFIVJF7$`wVdeCOyU>4=$)MFfVtsPWs55k~r#sQUkVS%I_3V9B8Y(kNBH1 zt0&mD`CX{3H3K#c{%!1Ybzxt@oZI_6mc$0|XPW=XHSPg{|gHX#YmGtS2>~$7A*JHaP zgsz=dhRo?z_}<$i54DvXvEER1g#~`4y{?$gdlA0?F3(N!gf+GF4e$4``Pl)zq1-!_ zF+Y$rqt1z@&@ndBUJoCy`SvL90Ckj-f_X}H9EbEBD<)}y5T^OVd?lOEnk(g%e{~o( zOZZdh?&-_0W>Byf-6xy(0-h0;2{F~?WADsC;jn@SIb_r_$Ndgmg9MT5L8+u6Dth-O z=fcS=u)QVY5d1G26(ofF+I#1&;!?_Zn z?M?RDXf^W+;L}SS*CP3TfU381?c@d_{Ogsey0jH4RKE(TsbfJ6v_2=#-?m=n(+tCI ziofd3(62wRhYj3*k6Dn9mwI7e&D&V4wm{V_%A@}4HT)7CWX|B<#Tp`ybI3g$+7NH9A=kdI$_5^&aFbQO-|ocK2;8g50Hh_q@HGCg+Ec9d=h@GHQ^UG` zsxScdE(X1F=PBCS^F7RX&9-31E2RWSSQ;a64N2ozZU)@R@4~GMULLns1I)YH#aZ-f zD|&^;@R`V{a1$=uAPP)kh-Tbo*jIGA(#<67>MATbDg;LR4-s*BGs|b)E<>%cTtmZ` zx=DRX30MR95|8CFv~|i0KD#If;po=tXTvymIBtE>mEH6PN5X^!8xO8kN?GZY0h2>f zML3*c2aPcx4?5XKdlgj}H`|MP=}>44YX!TT`<7o8C4Qr9V^BUt_O(2|K`?H|^$2CR z`Uq1(m7N;7_DsHqb;?3dQBCdR!MT)E$AP6^Qw+)VSk-EgF1N?#gR51m1Pl0tJ4cDt zvDaSCYrB)|5J`?Fp0gnN-=8<;@tdmYQKbIU#Rh>vKoYqo3(!P+shK`HEETP%Q3 zHlOoKcOu?XAPU$|b0TbwfD`1Pk4%>SF5ygIqfryXfa9kujWN1GvhNlOV>} zMM7~Mwth()M2M=leqqK#i-eBtu@W6g!;ck=0$=W~eHk$BnfI0{sDPB>*o%0k{NK4n87#fMDoh? z1};M-ye&w6Gr>CY#)nA>)^m>?M^t#W?+i*bn{?pn1gf&fU=*tXE0@N@p%UJ!XV^Z3 z7s10UmPek_b}y|??&dN{tmCPbHSf3DM3K- z4gR;HxFU^l59@`|htndY*5;Ij5eMPiTS?iJ)OwHkDv9*a4EnXVeYNz`4;Q<%;Y6(P_AV%Cetz&`Us!qPUH(nQM{Du%{{}jN{%j-l%AKF4ePeaIMSV_;%H=?Y~mE!GG%kfw0na#pW#6<$Cxd+diA4Ti?y>IR{(x5b;ABN;x;xwk+^7Y z(Q~00Hy=vmG*_1KLwb~(hGC_jUF^G%0G}Jv%N7Mk?eyt?^O5S%yB>%7KG&h2dYUt( z&a=g4@LwWT`fiFDo!G|SbsZOFG#{^xc4+4vYwjdZUr<*-hkI2=q*}U_T6qGG>9{H2y+dc4RWQA zzgyeVl-64vM-;7z)z&his4I?>NS1bM54DgTv}+%#>KO(3;I4(zj~Z1LCBdO%!uvB+ zHmsaG3@0<-1M8|?`E(dLE1q;gymke||FiBJc~e&nU6SO}&A7X6u~<oPMJ}LlRWNMf#1n(4@R;NDs%Sf2+3KwUEfk z5F+ZyG=BIr$R8Urg0Sv@hHSXgbhk^5C24hx&!Xs~0gCWj_zVJDl2ksT#0Apj@p6Ov zumxGeaL#f4!m|%n)o|xz&G58ASOdzZ^s=&kq7^;v!%F+1UlN9}P7?3>2E)(?m8Ntl z*d4c@^Z5G{u^cpgvP&52i+9_(${}27wVil>=sL9Xr-4>#imlDFw;xn)vmY$9L>^aE zQf9ErWtQ`f2oZMqvDXK(%wvu%{}4Rke5>cezl@ywjp@GW?)+*WN15rA%iJiVY3olT zY@VO>*{yxNPiO2L_ovH4A8O)SPKvSbpW4WU1INvEP=h#u)e802&pM*(ozo!0vZnNB zh0+OFb~2&a2f4>4cC2$0QX)tGIQtK%O}*gwikDhSk5&uwZrjHVaMnPWbbaVGQp?@U zM8Q&|ws)m$=gp_ZFT<{*E&jGUJEJZKof89YyH3rxr*>IqDK+v+AbcbD4j&%?HYr`= zO8NiBur*?EkqI-}-j5EmvyuS;chrFR!rw`b~iwpn5Ep zf_{@o$f|0@mu#Lq!p7o3=dotoSXv~Eb$lFy1rYfra|iXkb4(R)iLAGW!x*3&1(Vpd z&F6FE;U}LM5k`kY(LAQe-YLsp80*OOT-kSx?GO!3y`BD~jC1`3pImZGE>wNhYsTfK zhO@L)vhy&IeKDeWlOL^9+pi0*A8C2+CWKDE4(HbvWsyFd@K2b*C>SSKU7yF7QmR)) zNVDHoqG76&be?!l6n#6g@}qE%=dlit5eV8lCJ?k0-nk$L7b6M`C8HUlch7OMH^gla z`b8jW)xPwDS*_|y7o-k5+8-$%u+qjB-;FMDCswJPn)Tycr z>dZ+CNVM}4cUp05YSFaDHv1%vEw#x+Clv=M@l^&S42s1+Hw65 z;1zd}a2Q@q`+qE5cOcaN|F483l#%U1*%{gEBr-BfRzx;g+3PrEMK}_&l@XCGWY3eC zy@@l*cEX)=cfXhK=l4(JUiW_8`+fI*zMrqx^Z6JLpo`ajMvxc5V6AbZATfY6yF=Lq znz1dQ85=}#qx{6@cQcpQ5y04xLkahIeb5KU1HHUyi=)W%8}COWKnK^0(#L0YXJ6`A-NV5|F~oZuyKVK_!vT4!=3OH zkf8DFAkz+YEP+<6)Z@+kzLPgo6Q9r#FH9)l9Z19Tq}ZbblH$gvPUOS;pVC@EE0$Fd zkLW*d?bPn;U4+12mX6B?blw!T)~^#R*r z>8GcVRKOBa4wxzkMIfbC(>S7S(u|5U#lKzaqnZMy;1#q0J)twj49K_-;l;4KtNv79 z-6P7?z}PPDII{lJmNt-0@B>TZ$UTiI(26a64bJj5Ku@Gs?jrX+zLP0n*HTT;U%on@ zw_^XufmUqEmGg>Ina?HY;xkKZc6;Eus2WP2TrJyF9fR?*TR!r6+gPF7hTLI@`ik~R zjb(`n6h(J~BhP!WLDjn(`;~r*(7%RgW?RHdG8oKXvDq^C`jv7k*C~3mhl9rMP+&5` zW>Wx7@-@UkqytOg`z1Vc(^Em_{k=l^byoI_@VZRGl|38;Om-g}+ ziX*{$nF=h7%lLkyJ|49p*_j}gZejhtfA~tLiYY)QR6u(ix`B}W30B48Mq1xsXU2Ew zu=S~e$`d1!faGf>1=f7P+|zmR3+NyL@I>1s+JD~zpDZcux(py0S$+|acDB&P?*P_p zX{>G`bQ%Tp?7dfU$ShzW;T<`Eah8l`4x9W6Yl@D}f`Cu@_?CU|e^HrLA`tCrUV`?3 z@JPAWry!zeE0sQ)h;Uan-1=_+?HoAq?Ox_N%!%%!bs%^5%Upj)P#o^B=^A$a-We*# zZgY2V^cG~JiUg|LiK#c`{R2PyxLuw~wZ{76?F(qAs z&-I??*s_@8=k@rgm*)j1raJJ>qE>p~2D4ov`UN%-<=Ik3@JiRs~mo1hDuCvFMs+8|M0&Q8!w)WAfdv_w0lE`j249x z#L;3uG9rg%=lr}AmN=J$^rW?-#I@j5g21X<3f>#5@Vy4OZhIJVmT}sxsu(t$6)UAR zRjWZ+B7MTGZdSpJ&TBjo^-4+htM{tCnPkc6dtP@4^z<@*!&v-y5z>;{bIa_?*Hj5^ zOG(?+ej|mEIOG}*zUKHDd4GoW!@J&C^RFL3QR*h;P|6asyTSSzjuubPEMuE%C1P-<1(vIrbBugD% zVXbNflB%Wq$6v2i!jrFqP48c$P7(UP-U)haSDZG%j#&Us9mx=36<>9x4bDC}yuR$G zXw|ScyIRWy+BoGEMlbVjqhzeWkBxJ9lny7~?Ep31+?-9RAV4QB>miuU!#N6N} zwoK~#7Du;ouVCz6)w>l@)0T@1&rk^$xRu&_tM9d2@C!6`PiCo!t#`|&)TTXL2$*sYcjd1GCOtN{0T=rU?_$573JCiaZJuuA<@MAP4| zSXDfH&1KD+&Wxe`gBVNqXV%R~BV%z5O)DBqC877ZK>6O|Z$gsfe_me%A|$dA6!*{<`|h4ebY0GoBjf zn$dS|>kJxG6*ZVynRJ$>?IffJt$rRqBYooDY@{)WyjIlk;KoJCR&$c^GbwT5Z1{6? zg;d3gmx7TfT8_B;FNemoXJPQB_986P6R+={bgxyuB&UxmbIqmIyRas{(jj+*D~7Jy zx?cGOeGp15LFO2d6C|+{eQoFX>A7Zfb#ji$)mL(#!(+$p(!DM$S#m_(6MZf2^QLRu z&HZ+^8}l8!94qjIUnKUsnm;wGOIkwvrxZv$XOaEE zK-km3EV+0&ET2n8H~c3VeVRn~VplV=!BndgQDyg(ocUW0f3LaYC5j;ZtDU#q&m@L@ zo_4s&B~+*gZ433->RW&2N&1*9v@Xz7ny?(S822}?piPiOGgtBQqx~$3SBnL9Z`h{j zcg>{>&lbe4?q+cq?Bi@#-Zb3{$$3uEc;l=~_Ysgi#9!WM9+o=cCMacm5#*m4cTMJ; zYl_%rOj0>kFN^)v_~C)I&u;OZe}(R2g5xY>SBh)L=Khh5%Y6%1{Z{#6DK)yl#@a}+ zHk@!ACm@Gft(1u9h-B5uM#Y-&mbABa_STI{Ofd`m!qE>yr#a7r9wlV! z1V-ko^WeM0{I7{W_59P$Mo5SxY3HuoleUr4$tNORO7iX`kyDL@6|Ih4gsrQ7LH>4O zM<^3ZIM6P?#f`SjvPWK=ncNE*y_p05JF_tiM57g0{?S~R{_7ra{K%`uGAG(`ocl9{2m5w(&{O%AgcujUKspZsly645JTtI)-YMqpJh+Hz+ZyhDCNRk-t z`eeMXovZTfOl(Ss6YsOzt9wC>+Lrgim`rT8@N3c8Q=P!?fQ0JF#2$3hswRW}Y3=0_ zodtc8yw;yeBxHF>G3^fH^JIw3fgty&nY&A!_KXgTK@|lv{mJO1u6Va*aYvq!6rGh` z=K$KgWK9KyJZ-Lg8C~lDlDov#!X$rFdftO8h?;@nsE*rJf=Mz;y`$R<+8tMcQp=t3 zhw_O8{c02cTTMwP6Xj{hgmd!qE9YK$Y#z4tn{S28rrGJD@Fz_?rsqMIV4U3%1O z*9@UI)S-#9E?je#Kk5E{(_S5Q%G7Y+?=1(it!4~^s!bLn(Pvme-PK2unHu9#AA6M= zF{+>Qk;_yHU%IVsvM;R2)%z&SP43VVoP>cL%V=wO)YCx6yt#TG?eM%eN6Xtq7YH?- zOA7LTX{gWGUvq~Ql4MYa+JxQU_|m#A`R+ZzHHko~L7dbeHWk2?HWZe^_= z<|%*00Y`G)8Z_qyMa1D-sT8KEA>_V7yHR2e?_RT@)2e!B#SQ4H!tx6@fC4bZ-G*ns zn$g`*u)4-KaPoMVZv7@|-edl~7dhG8f12$99cR`GBV@WlBR8>5pQUoyHi0&>@H#Ch zsW!r{0bO7LbkOQyI1XFX#C}a41qOL2!2a=#9(se~ohwj}-d0|YKm=z0%H^{}&fGjt zG0DRx*}M{W`>KWHGwiT;MFu@-d)H6y0HI#bn5wS&j+V#`3crvw^y4z^MN4ia=E#Wy zFlYp7NzT8WI|3fCvSuA#R!{hYDgpAxA|1w+uVpPCUfbNr02;}NhyI0DW~PN!0gi=Z z_XAQyWc3`ARlt64@K91tZ~yT>b<91y1q=SKs9P2o^G|r5kMPKV>B#6|97=}*IuBx`3d(S5rqp4*SJ|%$uKR^@sQ#`nM^#)`Gdcld1)%O~Jh!)z$@@W{ zCrdO@M~?GLd%zpnC3)s--hVG+Hz<}T`4#j`sG?I$i?exago?(Ax}C#xqD5?T;lf|r zHsR#Au0@e|T8uY**$sH(Cz{E7?N3_zFkQ-Sx4`fIAE;}Ro2ita$-BDc z_$pgek@wA3l>9xgu<35Eef8nNuR5<=^(|Ah|KjB7&9xlVU*VGnM@Av`Q%|y=XEqc_ z%*8?jHz?p6ZJN`En)LcSl`9GNqA$A8#?Na08`bVmV%6=ayRB<|{OqIZxEeHiCQE4W z9`?3R_6sBr`pF3M!BdM?=7xM`?{_K~m+z=*6$Z8k zB+3U1GkMQWwV>78qpk3&b@3n(e2_3c=oTJFakS*g=hK`wLnzf$`%ye_H7LB@VwFIc z`S)4pP7i+9&L7^I&qZ`>GAG_8NggKawD(WM;ZR`fDUB4w;&5du-b1vWp&idejtC)H z+mG;dG{d&*ZMi-c{PnGtBJz6wJ~j>G9X06&srryjy?A`YUjPK2*A(f*;iRkhk46?& zPu*FtO`<|0@8*|8L;#}bi^b2SC3h*44Ixe?K3kKr#U(iQ-4o)DBG`fU)tm+G?X}__ zHnb|Kl@aYfVZW1GgqrH^?n&zjo_#0pnlN|shcB5WD*Y8%B2EB{5lYeipLl$b(>X%J ztAXO=r1jdktQOx@T2yMu$w^q1z|qno8Wemf`VC&em2L|Tj~fy~8fzQYw>bPs>}4BT zi9fY5J~VI5s^|X@LdYK~eW^7k>f~8oEpHRzJvqSxBtK)rd^ip#PyQ$K&WHAl3;h!~ zoJtiRn0Ft*A2Ryk19<$9sXtnB%{|RlM=z=Tg1u=IIH!rF?C3y-`{usx?RdOHT7$|@ zDo=c!_xLBS*wQ~byL(fNaxXHI>wXhjGFC*NLXDhDJc_Py%ljwca8raEvMGGkNkiflw~^2aiYl!{MH-^ovXG@r-YcicU@j#rcnxEEJQ5X+(?o=e&J| zdN*4Gs!!boD+y*=`2YUy9}j>l!DX9Tfuvdq@mP*ZR@RY3Q@%{}8)1$SMb7)V>*{or zv=uLT0AXEJNrA)B(o2?ccw^DM z!_JOU!W`heb9^v*V5|jhE&|@WlwhWFcTlM{H>TlUWh3LYZqHB?7BJKTC^*Gd`oy@m zhSvWh;EZWl=cGn&wu%|fvE&n29}9KSn=$dvhFM#QoHfPwc7m(7#!CZr)kbY_9Tf9R zQRhzgepi+8b+5+u_S~HuO^A2dONhS8J#r=g{E5w#1*Q}to^berZ!N*>*>UsMgV|Ge zMm`j2niXEUjH`^8k}?4Y6r8^mgbazoe8z@WOCz6(@VUx zc#UA%b2H)&+keI1#?kFh#p&-R;AU@*mYSvk2L~^m11|^X*0NFmL!*osIbnq1utI!z z7+ylYjM~{#1y~5PZD4ftmmd46wf|^|P>5a@73vM!_b>)qIM+jsY{a+5&HV$YzRWIA zT_Q+;NLD?E8YXc7sNowY|Ie>GL8L;QK9k?a#(_B>yFUbROilwJ;_f|bIAL3KJPTHX zDWxAEM%2KRYlqs|2rX{_U*yv-+AT&OnEp+=H3bjqow^bBGB890V);JbRye`kUI=%; zI+kqaVs!`(g5DWfS_H{|)1m`bf9+{Yw zN()^)d9WJlVUS8-gHq!Lc(Ynk&51jM;&&l+&($z8?)FB+Z^2iw7>e5tK!qHI%NgB2 zb@!8j*!-Hdt0yn|kOqG0w$0WC8+_ff)1#$%5V(WmKamje6&-xbHxqna;|GN0gHhJh zG$Z0pS|~zZ7*tyZ!uyY*+$BUQnyuD}7vQJ_gpxzpsXHgYEeR8Oo(rs@+##bMdyv#S zPWU=MC-1FR$uCDst1^%Ab(1xO3^s?S#BWsJh&<#J*lDSfT!NX{Gvdyt0c5QLFaYJ1 z5xVDY-UD8}wu}-2u^G!LE)|&6BlI~v3Y2}_A8-3Ofe%wR6yxQ&89c7PJ>jfb`WXzJ z6L3cVN5C0K`xurut#(}y#rc)k^He^S=VdV zn;Nvtf&t?%i9%(Xf{*>}Hx4gxF(K~gu#^&gpQ_bv?}gUKo0+Ej`~x*#=d5Q$9Tv{D z>t)>llgwY&&~hoc!Tg~)F;2GiZAw=2QpZQ((T}L}cYVoIh5^i%W+nPT%4j-EiYPrlH4RFB(*29n>)ng0(yAkHZ zLCbH%jKUzzJ$3B5UO*mEgKj|K@br@ z7m8$AWSIl_D{;`A2kP7gK=Arm3gSeuTHm)g46yB@+wTE*=bU@fxSkETH_o87s-nD{ z1>iss%Y$I=JZHdkSBA_3G(?WYfoip0;#RBT=V)s3HA_YyHsxgrD!$1kz$8$R0s9rK zY0Fu#H$+QExH^!CT|jOtoB6zom2ov-hjNf!4ZB$kYr@|FOffib- z2agR}rxcs}zU|<^zu~6VnR8q!(A|PwnuPwBYm>c*Fslskaf|-Opo-l74rm^e!~t~G z&D$$rN*DZ_@|EL$7=svJ$m6RR|82_bzoQ%=vZ5pmg7iZg0Dr!V9iR+Pd=qa#93KCh zlJ7lQ;?T!Oiwfhc0dN82+0>v)3Yg21Miheme#c87#oC>Hn9Sx84d4)lW@k1SnK`d) zn2vk{VJWmqQm(s^^W^76?A)7Jd@@j%XmwZ3sXH8e7k#w9ZD@LssY=UL?4E6V#8msEr9v)9Cx=iadXsny;?R@|IyB{~ zpx$dt0z&Y$FhqVl7koW`&>r99Y6x>AVi3k6t*zDty*CJFxQ;^?a^mFIsk^Zqlw-3D z$QbW&i`*P^&?mYg`eLJQZ-<_`2LTlSR1mE=wYM?WpN>vGXDXM#dV}>p>P@3y^pP)M zU(nEHq#E}lRnB4j|1ocV{CEe_>V!amCSLk8W?fvMQ2I$JSK75S9HBJm~<2KdDFdMcq1XsZM## zLkuu)z_W6sg|d$LiiT`AflRIeVAI!%&%@O(`{j23%WY&Hp6S0}ZK>Bf&JIKz9xQQy zx#S(CmkWB__Jm)i-rQ-?P#Q1Z{uFR@6Oz8=YeF1+4GO-KaIdo|OnsMP%Z4L&>sO6> zW$8!j`>CQFc+R|8Fmvohj`%g4)oN;oq^K>@My54fhYoRqmFz!Zz-f!vlmk*` z^f3*fop(gNq)rUXJa4In1MM!%DSNhKs<6=GoGpnFq1^e&h<%TS{?DpnWqI#_=Az-M z_;+ixk0iRatztwt9Dx!!C!%I*p<%EuUx7&|IVmG!GD6Yq(5DF&Th2|^&;SFxo7TbV zfr)gx89dA2J;vT$Z%!EOa#&Vm8CJg4Y}|Y^nJ@Q@#BVTHr1_|N8e-C0O^M0Is6)= z6_doPq^}#YWtR@45H(u`hb;$yNZt4=a89}DWW}a>2F0oHGc`;AOjDc}7kTX5G8kH- zkGfm^u`^F={L{5qg|$bR>Bj&JykQQfhRDyaB<)r_Z6SL61oqEAMoy49`yoCpk3gWF zCYXQ7=tE|>c|t>I2LZw`zJ8hG_l&_ji8)8a+tgt)|2-q7)adj-Yga2bHBsWA1_C{zV6;M=Ho1iB8sd*>G{)M$x+Fl$e&!T^XN zLb%Wf3iTdTg_apc=f0d1`~jOUk%$%y0lvD2DZCzV%bVclllZf;2Jpb`;x>R`C)wPG zq>29t+iuZMMGRZ2S)ADyuc25k3W%=-ld0h~Z1-Xe#nbCrVNnY=iczef3i;rke*%_{hIFXIu1< zj^0?LYq;bgSBQn>8Fi6?Q%%84b!;2b-Sg7_{56tbS+ElbE-^dB5S?0;#@JyJ0xY{GDu++x!1`Hv>Hp z;HI?~9NJ|ZX{ebDAnpA@{1n-<1Fv7?PRxbr; z*|-;1?!_GM*fA(V%Z8i$+&?tqELUJK*OU&VvvBV7qd6A&oVfAbA=!#Xe!M=(w2Bus zV5D%!fOlJRy?gmhjc%9^3U1QjHo9j?Pyf)i3$_BW2_Sl8V z=qOg##+(^p-S+Rt!T7G>s3H#n?T1&uX3>~*<$bY({o_YbiGHCEg7g!%(so+fPDXRM zFcvIfau0r;Oo~%B=58;s^q&xQf2sO~p;h(Qj|N65>ALIruYW0am^4cy%4PoC80n2_ z7ZqXZ*-CSbVfbm2Nz--5U|6UsoSJ)&G-4t5)|5DFPRvV_^!QaDaoF}94hn= z4w|GG#*Yb|gl*qVSUVb^?tTj@Wpn291JL3DyQ$;!8r< zKzoB2&?n(c;JZZYsaSn)10xW>&~JPrEarcwEa(^S5cq??pZ=KgWuf~01_r*vKznNS zhk!&U|8{IrT;4ZjOWpUy>7nGQy4Cy@CgfJy8UyITNOs*Z9xnA1V^@nOjmF;MoDy#g zh%C2_e%11xspk5dko$_&bPoRL?zJs0VUKjm?HAt}2f%4v8tI_izV3Hn<=R$SoDo|G zxmZ*cOH`65S|E1yXrKderMyCAUgxcNse^s7jCbZwHf!tRPA4Yp4K;M2z2Z4Fhjb<6 zfnv4W7i>P=x9R+9`dO>n)MUt~n~mIecu z!?N$TDYmzp)$?BY^RD;g)pfKb*+QUwWmstHf_VOVpuOL=6;-uG@0)RR?${?@T=^D( zpEQpK?meU^!v4FIyB;1}?=SAYvJ$sTQX(}&oB9fMKY#rZ#ppV2^B+;~XyD9x6z{&3 zcC^^FndS;XbA#(s(si0$4YZ$nm+;wYcxCj@xHv8|D!jW&R9Uf_gj8et*-d+s;epm$ z(P@3w;o#~AHC{+xp$9*Iz&o_`qmsKcpYu%uvR$2DUa~TWTDe>wU6>D~k zSXSh(cjfxUlIuKAoYxp4$K~$7kDI=746eDck}oCe-Ouol5iJWzPhOwg=iXG{3Sw-Ek2 zby^j>&+5!9PshYLC|+5dRG4i#MDa+mdeWZkXyAMIt=N>K6sv#ULQx~sbRVu-$XZ`l z6P*9m=4kJJHBT{bS^VW<^kAj0-^Yb~sEe=1dTqf>cD8e&!EmWUM%U>Y`u40q(%Wid zp5+jF-pZpNDa2G~4DpIC7YC^D`}u}xHf;~`R*J_J%rJipcT*H6=E)>pf^j_-gK@=; zN9Wtn9mo`<^%{%FB~H3<=}fEkp;Xlb==eo+R)w@x>#|LuQa5Ns2zYlpuAm;lqk+uN z9$X?rFL~}g7EkQ$lu6vzlDR=F6HQbKI*7(-Avzlxmdu7-e3c9~(-ikohlP|+{hpmN z3gX{=AVeJDn2!d0Io5F1a`#$h*mE=bb}Q8RB;Pf;OV0_;KD9P)Fpb=sYZOFRvxs8Z zSg_fmrQJg4mf+|0fRQje@Q4r`q$-?M9ln?=3QIX{34SW!5bvs-DJ$yORZ8FFUKhU} z%~8@rd$%r!XO`vz;~>}G+({$=VaW`i&nqs7CJnJeAKZ8va^c#X9Qf3|^Zd?U{T{yL zmSeCXWObb{Grge2UBp+lf!G)U77bZxN6mY4T99Q^wSLR^`bLDkEWPd0FqoHj`+PT^ zW6#{;j!+y}YhFFs@d9g+&Wfh$pSa_B@W2t2nF~MJVekTlud|D^we}@@bLHv>hC(-c z!SiNwK(`%tobkBtq?olz8-F~it^OMQduBB_C}QCpLwPczwm0{M|I{y16d%YE?92pu zRsl;Puv85QYJEUzIT)AaBIiJ1qint7aunQ%yIrZ%V|YSgq2_>DqdY&rewF9K#`Pw%-yA&qw2L zVo##;daSr&2gIV9+=ux50^W~6#UN+Y8-F{;O-L@h!xaL>T610^r6XKn4=?MyV zjL7zfD5~2l$YN@uv)P0q^H~Qa{|4h`^xJ>7cgj}K*QS$UlX^r7fyCMI}#mJZ@+X38Mu_3)|z$So};QQA&pTh z^rnYr;c1H^4V`mJQ32L6din`ZO20-a|J&}Nr%QDZN|j1Knpz3CTZ@2EdUW@YG<{H` z8ST4te*Y!6;iprNzMci+u6>@);@6dUVonoN=diLdfny4>aHzR(Uycu7Rf5=?+i0px zfQ}t8n;9pB)9#sN5L)oFT9iAuV;-3?1>AbSiS%u@#osqSXmbqR-kTf7mo*(7FNVeX zt=C5$D6AXwG`3Ja6>do}4BwlxImz|1**&{;tp}rJL+kMVWT)A1qhlZ-cT%>zC*X?Q z2}f**gkBCH8}tWey|00lk|Q+;QYi z5`1Z~r$8r?$gLJR+yK+7y9@vz(~qRJa_+3e{n^%L!rJGa<31L$sF)jKxLSWCm=k%! z``{5)--p5zv(D@1?Xm%C$GYX6y-WA4qO1FW0McP|&DNuH#E0Gny{Ko&g2D(1iRtIR zlF^0Tsjt9c%~J0G+>&G{GWP5hV=CO}!%z3Ch3LNrRGH#dtLf*}fxnpw+KZf4x{zCTi$K9n{?Ex@{uisw z^8STzBm1$n0FdAuphw-*leS)k#)Ra<{v{jd<hQ+0RXhgWx4FWM zw%$a0FeU5lcs*n0fNfvEwYUn_65gJt2&+}XTmX7&)u#K>YYFTbhB{ErYV|IwDp)(s zT)W6kWdAxZ?=;NTA?@7q}ZMgrj?S?pQAc1Q1E)r#NujWe6XdunAdsZI7@V>4}79ab0n zWw~wi4ZqX;VU5Ox+8-q(Zb*==JL5D`6Qd-_)Pzs?eC~M`3-$Jj?cEJc6bUj=D5toFqwYO!_M^_w$JmfYvM=UJlG+iRTfYWaEW_xM0BKzXtzJj2#M zssO}>TfvU>PZt=A`jM4;nwbu{!jNI2>WUgU(3||{Ks(MQN&$5XZu^Mv!rPPqtrMj* zgp%Ia8p{54@4N3)KnOM@rZ3h5m&lxUna9UjAiVSh&`PY+WMxA9t{3s-XBz&p+ub#K{6+idchiZb`Cx z>P&m3>qv8!cEg(o)|40ZpqTn%>>L-^C`hMynsuq^&kTZ%0^9Y_p@$7#+xAT21}sVa zY5N|o6WD$p@1ajVA$#|;GIG5X%RUby?b4cC!(5hFcE&VFyyWSii*wJHZ5-_3u#BFN zsvg2Vnf?qssuk$i(@(pz0v_}o*USBS%@@UY3(YT_9PJS_Yw~3Lum|M~5 zdB25SNvMzEVY%Gr$4%9Z& zrTg73mnJIuM{>n3nH8_gZJ4E7;+dY#{tcSJ5XiFE+zU)oSdB)7{6byGc{_S0jL$a( z!n%AM6L_p}gEuZn=Nv>TFJPV8tPqV;fgh zr>6~z5FS&R+AmN?}%*EV~#R@eI>+RvT%uk3bSN6mg7Q39e zQ8}Pa4`o?xeuX;KlRGlS1clyfY47R8jPW`DeMOrWIZ2;!9 zk*gN%@!gOIeQ?Hj*)TX5cqRPijAq>fQgYnc3H9Gwtf6kW50{hCI&Tn%5ln|3UW^^c z+Id^3Fbc%^9hfP83-t_2aIFD4k#7>2-^EGU_UH=UwijA1LLc0L&}#*m1KXSUC*5Dg zDk<}>b&rOcSg9u?81Gdo9z25{-?skpM&G3+aoWvYQ>Z*I6j35J(S9HRk>-h!{%B3b z-EEa?GIv9%y!p-k;cWf2-1zE${XV;k0E-+b@VFG~zbt3ybzKOPn4h$xUz2KG%U$UPajO6)m4mbL%adc;K5~wJ zRErNs92O5rH;-VCZ^j+2C5|^R$uX`9oWfjwZaaA5svP0CHxZ^b>K#bvU3w@-?{?PY z%k3cN?Wus*eUD7f722Cdd;k?@wmGq3dh6*DV2Jcf5N!2rJX`&SBY%YKH@mRBBB2=5Hgq6)#3 z2Ui}pJT&65e8jy3iTw8J7OW}gHP{Ro$pPCE-aXKhyPt3c2yjh1Fs30%AsaBqofv zrNj6ivx71}HElN!5G1YrP@W&g4Hne`VpxEg9w|`3nu$z{_1|SY=M!#80kPP60JPY; zKIL2$il7PfjG}UyM(a+B4we3Kft;Ya1 zVGtUylP=Ie|B}hhMb< zZjz)Je>oJ2-1*ha5PjFF`#~=Or2Ehf=#ae5I;t!Q^t-+ZmcW}W`;lq5 z;(>bKJNNQTl~n9YoAj-F;**|27g2Al{kUpiY%|6T&OKeeN0Ri7%@UIkxCQg+0@KR-A(q&j?Qn6ILKDM6kaZ?+;7c0LMNw-zf{^2v{J0TYD)=9>h z&zH~fF!OsiG4*mN8zoIX4-1ts?6lZyD1z=L*Vm&R!MyY|!RyAVu@N&xn!tQ!>Iq-% z%LY;wHEJu-|JjoqVx8-WyPYzJUj{;zAZGSaQfJ zxTu<04lXAE%5n#tq>f7Ab7r6MR!+G`w>yvqF9l%p2{Y1%zow@qr-#$Y1q{y1avYsa zdq*kF3pYKXLna2xsIkKlx6LPU3zduG!o0I~iQ7FDQ9M*YbxvuBibkj54QPBNBHS6U zpq4)Spk;&am~zgmDH9aa-SgufcFi1wBOG+kX~4TH{wmOxiu*HB6ISSK7ObD>_L_eO zvKu7b6JHn*vf7KGhQKdGY#$3ic!xG{fBK}(TVJv}p!J2=5X4u+RH%}C8BY z1L>1_E<2|ZqyqSJtCXuR(5{kb%NHh=U}%c%Ay|a}f(AfCf;FQM#EYcrLCFaG#(@t^ zGzDyob!v$g&_xM7>|#NzPpkZx&{*4dmuAIfl(d1WskM1%Gbg0($?8VR`@L4@)v@*p z?&EMoGtk>&bOvOHD04t1@=B<;DMx#>HUI}Bgu}PQ$xSCzYi!P+)Iv@UfUuAOa$45uv%OxWepe{;rBv#gU8HDaMDJapu+0)=H zf@KC%TmH0|JSP^S!U3^x$^LM)`dP&)jhvHkSyF{795lGKDZm7eA!+ror; zk#=5yxR3tVSv9#d6U3)X#9-Ea$rovt%; zkKMMUnV$x}VgUD<^-$Do-w^k&hK~|G&Omfo(2jn?(BKy~`CZRU<6R%!S8XRtLADIR z(D;lu$2#?R6?LY1U6y(ncq`P79xB|iz2oq5`_O4S>T@vsJn7Df@8!AL?uh|QBS^9l z#(&P%XfG(fN4SEjHb{|TJNuE+Q}^Rv^S-Dk<63q9iqk2@KP)vX8Dc%ND)i==S z+Q}qeP*kUN+&Bax#3Vg2Qd&$Wu9=+NQM!*8>+&7YC<%0ll?f+nN3SLFEod?q>7ZjX zPd-v}my<@EN(pd7vIb5@)5s2+CCDUeG%s=^b=RZgB~$l^Goz|gVdz)jz=jBbG2vrX zQR67?rBN8p{ZgYA!hJ2nS%oP8Q44b9&Dq<-yKFQm7v z2QdevkPLhFNT=A@u%@rwOi;8_VZshL0(PO_P)|al79ZLd&BYU&hX(!iG%71wc>r5! zt`d8l$k_8o6m68y`?BPo=Qm9l!xyUGfXFc8V$jy>!*ifb;#RF~)tYPngZ+c^46RzW z(jySP6V;N|t0i;|gdpsrusSt3Z|s(x7E?nkXoj86q__3P#cztD-4b3^7&2r3UT%3m zae4^QVf^2fA`{)UfB*cF2>*hOA2EMHUVY!JqjydHsz`;3`P*-yiR=tfL+H9NXJ|At~$ zRJ@t7y3c^ASptw|F5o)AAx%{h5`&KNVqwhhhr}0etCh)^gFU=&Tkn?xy-(Ovz#DM0 z6v{tBQ}uMe)9D0c)#tM>;R1>2%s^*;O6`jgl)4tAfPOa4qGx`kAmhf|@{sKTH2#OT zqk|;W29OBHUn63g`;|KqpeI%v-=x%{pudh9M0o=*Bc|1E#*!Ks>~l+BEToW2Tx~+y zwr3;nj{Ur-?ixx{+XXLh7ox{&9ir{>CUIKsx|t$)*;Bi81H5c}$C@h5gqgdN9${vH*l=sAqT<$8S;UQ1tO8{YiZ1@Fva)0~Y3a5#e$V36-K5z>CRGeE)#0 z2U(t#PvhGEx$w|qK?ismxesnCO>G?IATM~xYVstat^gn5a{W!*NGT*GDRRzY5?C6! z(-)2Z2B}xLGjnP(Da-6rb(+LFkn2V+W9c`X20%Y-Mj6E>NxK9m?**&nrT~dqM%1y# zr0A;@3DK8q%P2W4J(M7Kb!RJXY8qaowUhBVIQTqt;Wmq`TYZZ=-((@k4MU8-SarW$ zd8JuVrM%LmZC&7K)VcjhHdg)ly7J!gC(W|~4&WQ;e^mE{Xs;v$B6n%)^xaOrO5|wV z6EBRGNzbhIPSnJUTwt%@!Ej4=jK(>dYw6%>(q2)bJ4NTScF{$et;q`jG+rB4Z+mLh zyj0SO{HAPmnXeaL0ld+1e~?+{tbR4+Unj?%SD6aNjqw?GkUEz;E zGu2&Nk-%3x6GSIxiwAhc!N{3zg0_`X=^9v%&yjlk{MR{q6G+@--Cw?TJ~LVD>Q;RV z9RPgFkt;7v&^Z6m$Szp3O0gShm*_9Mg}Y%Jpj7%R1V}dTQg%6=S``?s(v1Rs>-a5! zCHBZQh)v;f=O!1Ze0N+=HCHNqY$XSqr@Orw8a_`WxOb%`hD7ch@)>xY9-W1+KqEkV z`@MT)8>nB^(D2cag0ps3wLHh7kas!Ztak8WTg1a;d@h^BDgMR05EBw-WqRdE%#EY# z&J@kol%gC=;ll07*I@FkRnQNUl|RRQQeFQ?a%!~$DTBeK)9>ub-1mCTJ|G;*ycd;R ziP*m+-}U^pOlOEmFhf+&!2oAYj}=oajD#Cp)?jnQd3cj_F&}rH?#ug`c&Es2|J7rU z?CdqS85|EWxeMB2sWhN1rc`R*m;Y@wjG~$#0I^Xj#fdUJRuYOL^GTO48% zpHM`){dhIR1bz)w$~K=;eUHrUMbMjX$MwAXA@TKoYg83Wn-ez!@f98U7wQzo@M36CI&&1dUQNPn-*`~(ADq+vHO@Rj>(9~b zC8?!7m;Aw#O7md?W2nxFWJ_`Mqa4BZ8m3rde3 zE0yvp-xi9Epg6UPaN)MnGWlqwB!tkX6_4yT$3r$-NQAzkf`UjHS+B5E`c-mWvL=13 zuYdpg<;(Px-4>54PfR@SOcse%`q4F3mNwT-$2GsuG*_k9+U}Fy7#L{w^4sG&O*_M{ z1!#z72MlL6_^r3>4WuzECF3fL2z*RZWGY9vioSmm4K!N>;Eku4=pE5dIKwh1kz z6s^q}w^`F;YYrTDJCRj9H90j#2HqvZ8ka*(+hVcn`*HSXx zWO+%D_1|VXWxvp~+nIj9T}tn2lJt0``weIsPuf2!TCik+6F^Qi^r?XMI>*2E`M={M^Bt?^Z_P1bZZXmlEwk1~uk zvR0EciavdE=lj}w0kI}YBkRyAS`vojX~yW}>DLC&X7AAC(()tx@1$J+c5q$5>KIz; z^sSOB!2h9C%`!tVr}1h4y-~hn>1VFLhTSpa1q>da82BR@qCW^ciG6yTN}!6?(h&R* zo+B}_Wql`bEe2CJaOM+PMz+mWTxjMcmS5jw1939&l`q#YMJNtWd%uq5gz?)CfQ8a`O z4DzR+Vn1Z@Sa_{wBL{B}3{s`1k=O`kapZiM%N*MDwYp-lrL^H$uH%WB1M2A5IFXGY zBK7J`G#w*=fOxTNPk?}+F`#m{#jKXC)~5OlfjiA)F1yCbD8vvm2Z9ap^5uc zQAghM9pM=hcaa|*1F#PHP{)~v7Vb);F?FA7dEFmMT-`#GZtWnS9cVaM79{Fkq24<4kPL+!1qOURT6ZVatI*%-ZNpp7Od>$~CVm z&o>WcFG~ohM?2KX*wTEe)4wp>M1EH7Q#EsR9CGr4`jZ8^u3>S}Lwa{6TZz$uhTseS zV7v8aa-phrv87+#?zrtU>#KwJ-p9H2LQ-bY8NVzHzq~*_obR3qOWwJnljDL_`o6e$ z_qW+|cX#^CLGa~hg%|9hUfWO2i44+h-y~0e?w-?pf1b!*)UpV*{q%yK<70PVqgPE| zu*qNq?B5Vo+HburTi<3yiG*yp;)CM#JgvU;fMC|~0nR&dl83z)xSm72-%rie(wDAZ zDM%j{2_@AR)uIzMzR)^fY zs+t!=U`-=|jg*t)AwCp5TMsT-kxGkrSdW;RxGxb;Z&)5>Uk_y|*K&^NVSWB!+@JUC z!rCv@$j?6(TO=8^LIescIsU|vs1_=nQeHGN&(T)y?mIlt4qy=U_$M;FQp z%nbZ07A?|$Y<==Je!477y-<5+w-u?(X;K=WZa*c&cZK zT;qhKvedA=hf6b^db>U-GdFHH@N44jnk{yR(l|kl{a`(PjQk?knKqx4tnRO#V8i8+ z-Kcs!XVg!nw2>aAOC9MlrmRzk8*G93lpDVs|C!A*I@8r2Q2l0}4}BKjJN~;x*m6X@u;e%^-jeWV)f2<`{4Ui{S7se9|8i4d zHu+D{=eV)p{Gc($$26@{`Yv}u-}}g4ot;*hAejyDemc@4_fuuteLSqSqmze^dFJu2 z9^ixd9@;k*; z&tQp%YpmMq4>DvCoa9AbWNQn#?{be6)YB(=ZZImdrm|sOU!rWNL>U#Om}?Ix)E~1F zFDfIpKHPO}Dgw3zzMGe4G1o&%Y9dtr5{3O;q{TmG$4a4#U+K1c{L?3pBwu21t%?&z9$QXt9^V}n`sb0hUU*s$ zcjbgM7mJS}BTxgIsPycAXIqPpg14=>Gf&t<(?`1hkEN>&YqM#(xE6N}#VKB-xD+p5 zic2W2rMMG{TcAjR;_h0kXprLW?(Xi8ym`Ls`~5bPU*kPpTCHhD zMI6j7&=l2|{r1w_o}z*hwbk13jSfO*#kPgNSV|DhS>a57G-}N%6hm+s<>aR*VqKKh zWIveAF5Bdf1THE5G;3ZQrkSKv1$FpqgDdt)br*}&5o2Q4H;kk0nzuP|;XM8-fo~wz z7C=BXtxZAPX-(0c(ws_JvsciTkI=%WZDN*#?cUOaPp2o+x3!RuO}%>2Esm=GQu=+G zUv4iQ@NOK2#hn}xED05VQ#uDpRB`wQ?5N$=W_Mq&Kgy1C9W+xa@K(n~Yury?@!q>n zzD`T)Q0@y!1FGLEKK&(g2h8hjc0_l-_W1-}vCHrl$ALT))}_?yDB`tkNz;^=|7 zy3|8mdqrGyi!1GF2lf7>ja&08*}?YKnb-ttBi=()Ie7^g9ms+EV7p4q?nhpx9J;xG zTV01+*6$y?karu>&{twJ)ll`NJW|rvs0QIV2!%GL-wJ4kVmLB*}+1$Mg*0b~D(S)Mo8xeNu zXi)t9D$@)KY&>g&BPFW1Hi513mw-9^OPL%ad30$2o_4Q7D;dq7+&F6$p8Pl&#BMJ6 zxqcIOFJ(2>UPD4KRv-M5x)Y;t^lHm#jzcxG3xbUb=a`&0g)iFJw5Mr(B?sGD4b9=T zd?o0a-7>^UG0_A!&Y0SGHuJ*ra)A4vVvMzy1!dhbRIHEw@NS-8G*?v+Jc!JoRQ_!Z z$+Z${72gWtddyM%#cC+CtVxB>uy36K7~iBS;LF}+`)Q#TWxn5rpOsWNFcA;FE$~@m zOO6(;UAHVw-`{AT=V1H39ir-gqDx{h-Us16+7@7v^UuJLu8tc`mY_9Ok^?C821%SL z-Chp&xxw~nZK`if7QA}#awTZ@lx#erAyD*N=h>t6GKn#_!6FG-A+?`nN&;|)TTJ=1TFQX_fHupmWLV~Mc0WFiMhDK6=Px1Vs((H2DDGDqYFk}uId+fU0c05d&< zW)9`hT3t%wR$GE4xD;+LEs!i8F4gXCoj;Q?_-AO+6dE+)CD)^Q2uL|+9#|Dd+QHW> z?>ytLrFxMg!Tu+#)xF;C{1!(S0V#_9|J+#W=yA|@&%2Q*3G=O`K@-`HGuPrZAojpp zK|FMy;aqOq<3O1EKR*Tv=RKpGbzs18clOhCQF~4ti}9};XMA_ysOo0N@9x)|vcNoZ z*1elco}=ep(Y@#WBO?G=>$}5k!`X?|)-)_n-L=TGq5Rf_f5!a&wpbfqQtnPYyljt7 zbGcOoZ=Ii@aAySZLMWevcWDfDG}kUWf)ta_@aJ;Y=jA5`w1!IJnd(Jn`t%sqJ(8{- z<}@E3u^xOiI10fz@tI%Xh#ZivZogC1Gh(v?L4Y6NX}?1@E0p5FJG0wxq`}9>3wQtM#CR^$@NxB55!&0Q&VgSfMrN z0B$r+25wX#aDvldZUCaad-^aE+r&V58v!)}x7EIj`_uD<(lXn{EJ+=~L%u#Io=>?< zF4CheA1vTff&z3x4{g%wlngaX&qD>bDU#5hHp*MeFgO7msOBl6DT-LcJ%-!JbA^+lxD%c-ax z_wRG%l{xW-WV)&*=&c=&+Wc2XpH_N)*Ure0g`(pqChar^$p>hw2>8>S6g6p24vaG5 zg)7uu1Bhuka(0&BjZjTETst~EuiNZUkQ6=|35tazy`LJ$U&5q(?9`YU_=en}!9ez7 zgR~)0;3@#UD&AG!6&xe4yz~}tK#R(|vkr&#dZjUF&v&}3LZ0g{3IEkE-1Q=P6G0S# zKh{n&14It8U?akyjyWzv%4SCb60le!jm^%-FAUk9Jyy%jv`fccz7B0Eh8hgqZuDPT zmkOQq8Ojf~#R@yL{ry^v;Oprhf^?Y&ySWYk?}TZ=JB7DA?)Zk}B)g0wk+h?2Uy_g)yK*EIz`X=ogO1r+8{=T$YH?};A*2ehT zOBXB;3BA&|c}!DhVuw=9h316sn_sB(0ScNmmtCLyso4W<+4Mp%7laV(m*Fo$Lya%{ zruu+otcdY)dNVbme`$e2c{q2opSTuu9YM&YM6wdl{)U`5NHm(iA2qr*l{n)2H$vI| z{wthAihyj+(9feV-b6c!LTTqpTk}GSW%-HzS{9~X2BpMDjkww*EtMzcnoaK9h^#ci zQDqXbIa%WceB;QIb=YitRp6XBK*moom=2+Mv96|1ax4&OAV+-Eq z8Sqz75S3Ebr6Y>}%56wNTxQ9$H3{(0pC2B3@9ky!c7nv3 z7SbxsmzHIyqMP-Pv$e!X{dX&5e{MX?e$o%89D}esv zo(zo7_DPcNYu-t!K`yHKD2^vpa92juT%733H6FFuWh0nJGDmsLNVw5Z4&1Mk18It4HNeO3VHfbpa!mIN24`b?U&>n~g8 za=@NnUG1AhOzSv}P)-{J$*InlTxR-MB8T{QB%e6#&H0{$X7>zd`+c#kv;gym9E#c? z(Yhz0ymnLFu`xLEQnM_y*J{uAJIUrpH|ig34-ghTd6lNr1iX0S7RBw$rq1^7J03pH zn|$*3du^%3&Y?Ik1TrZMJpH9b zJ>G#w)@w+5a#%Y3C>0EWsxcaq{hrqhWtAxvaoH;g1d#lQdnXD8Qj~w%1Pj2*p|2qS zD{MuYVkVumj*__S59t0YDM#D(y^8&g?mW*=3+wBO0H@BhCEfPXf+c-J4Wq=!M0bK9 ziMutX(l6yNH?-SkSgS?NoJWla_EMLdtYuGsac|q8q}S9xvQ8C$-@+f2XwkY7>qQga z*YwHyu6*Ms2&e*~^AKM@d8OmDcy69??}rCXD|O-gXLXtF(46YX1gN+vk<#t2?6#hf zn>yW3J9D3$KH}*XP!(5w#N^-BNx6EMbhfufyt+DyefI5VcuRZ-|Ni$f2F0m`|fV#!ZjP*i_1u% zsFcm0OlWO=?*x&6KN%dc1~}pU#4dv2vGx4B60tkUvutxO(I3(D-#aw>_b)=CW~29{du*s@l`zxc*08 zXR^Ov(!ekO$t%|q4#}H}(q%fMUv&WUn4~8zJ3Qraz%VQiU4f&g2fI|$dbz|OG6*vnPaz3w^7~v< z;O7gUlAO5m7v{t58@z*#Y@JPLm+fRbdyA(9JjQm$Jo25h-CGWRfWP+os}m$>l~zO9 zR&jLxieBKZoYLdnqWRkjZhcAd$ig*AW1l|w50f**j$sb34_vnR$xct$yHwF8QH+Q0 z4&VBmn@Ur)ifJ(@+3Zs}RDk?49H1e>7#a*D-HGtW34-`w%#iYB~C&Ft}fT<+lu>mDh+jX3~L!ON)< za2!_}n<*SK(D1*${UbQ`9NT0zU<@bAGw*h=>uVc`4;w5f4s>%L%6#kNh0SDNPh9Wp4`+F^EtYas3E z3c)oI%yUQ?T<|i7NW#08xocACDibs~zr_#{;Wu2;yVj7S+JA%U=%CtgDaG#4h`TQ1 zd+XBMm;QmEp_W1Oci41!hoz%~JfJ$@s`6-Clbe5Wx}Q58^RvJ>A6VGmXhFHA_4=MLXSp$O)&|6zT-_PTqwQP;W>D zMQ|iQh}#xYYqbJDk11$|^pC_{q3P=o`>iuJ;>n^RioF@q99idC!_V8x<2NYfdT=i7 zieW1GxhCZ~ri&Wk#0s0lzbzy$i;d-Y`}W!5UoEloZ_KU7ew0gdxZHQ}xA)VhlwGoXC4rWdK`o~ZfcOPvJ%1k$oxEN=(xG&$fivN;6fyMAF>nUmC=(1|8r+r*;VTk%d>q8sjlRL9Bue>aN+yrvb6tT?X|G`b+SG08Rte(lArYy7o z_mtV~x7#}LL9%m&pMPIiHkiNfk*Hy)q}9hUo!3tq0u((!V&cHol1} zDQm)+KvvKyj!B}mR=q;;T=e5Fc_|A&p(jY+ps`qTGUAJx<~l9M983mStAuC@|&2~|J2 zP2wLTN`|`G&6Sjj-J{8eX|I=kgW8Al$V+Zi5Dia2QLvFyd2gJ@B{`&EwG3{_X=lH_QA$|D9)aMB z8VxO)+_a+zNdM#}%U9_6+v=<$fpl0ayM39(#FyD0NgVVL0xVq0?)l67Tm_M$JzP(g zsUgb3U%|8cisg>@s`v=#nzq00-=^ri-TzzvG2e7Z_~SYf(TvX<6z~R+K%l$xtC4{= zPqNNrkCeeL29MHa;;AD{ZCx^HV_t1b1#J@Nt;McS*DHASv-p6*&*|;xcf^{iu_y^^n5s$=o?wH-?B=|$Fj-XXSpK0=r0TdNM#T<8a46cyov^yYWi46Z!{Da6K?Z8VM_g!$+*5a)(bZ7&+wY`PAMPNz4sY(HvANM z@qrm^wKe<=U?NxZ22I&4DP4Yyqg9h&R$}yv?CKIT$NN4LGx{S_R~(3kE}(hmg7?FLk#0`RdvV{{X3UX4vhC?>Wt7f09%Q}qjOCp55qpeVVW&P!_IElo#s&4KclW>BIF_mvV!cb|^c8>Ag1^{Af>$3a z=I^iO_!+E@5WDXKdB9cYj*y#b?ZyQ*_J<%_BqCQ_|V-;eMM033*jLd&_!;E+#Ilb&(=w1!B==Tk&LSAZA< zFkV+y+&ukz%j%@S|LOjD<+dG>O>Ah7(>Cdw?mt#4WQVsPy!=~`CI+0d zL|wpwZrhKVybIFN{#=8&BjcZtuP{JdpEh6Cum8*Ik=I1)RGhy$M{oDL7d#}AJdEb9 z__6B#*d)`1Ck1*<@6X`I1?*Gx*RhczRuO75hq{x}+nCsC_WlcXULj*oYroUQ9&!*J zp!@LrUh>8Xrcn7me&nrUxCz=! zQjadqa95m@c*qev4QUeQW;b=r(*&{OMVyvk(10?dClb;BV#qO|KV3@x3Io6@jWu-J zk1$*8Jil^%T#b=CD9ob!2zrZFD)*j&LOyQ*F)J9j1x@DnxRtPKF8 z-SOI?@`^;VlKxY}sC1G?Zl2qcj6>Vo%-mV#C3B*0hd=V_r)j!vaI`vBwIv!}=CRk0 zp4PhA^^diLVGS**FrPuiY^=v>Tr=n~6NCS|9f%I;H4v6`TS^bpPAW1?jX!$I+Qreb zZMkWw>G0fPO)QE_|2+LVSz(0TA{B@T5M2S;7T&P$KAAWn zjzs-Gy?GuDdC|q%voADSXJ-j?Zw)gIRqgacIMLyQk0?6gNtS&F!j(wCt@Tf4Smg>h zPV{fYYC#JIrSd)cEi?jRT8~R${m4y>Kwyv%HF55gz-1_U$ae*F1YZMdi|)LWuV3aR zrS05V)anD^^SF0`9-|UFFnxQ6VmS0(4tnf80@`IgdaRzgp0N~zk%(I_=-XDj{Ck<_ zb%C^?6gdj$l8({@RQO)<6W$ z{-wi~PN$E3C6odz8QOXx<+Ef3{!}mf{~WX+PS~vlPMI35Ue6YGBLR$8eXI3WeSLl; z#&9{Z4(fqETgY>BNZURppx35oF3T&-rV=b=BDM+(qe_d(1T|e->`T7e0Di26=bw5u zv|>w`!+)$2)gX_ih0+CRt;Ns<;9xwa5r(8B2~~@YN4h@Ys%1=G5cVs4qwN=t>Tv!~MCDzwplX8|n)> zD=BVo)cc2KI4L4S^`IclqocLpi1?7q#}L7X_?7^FPTy42L#Th*`OyPj4#1BeCV=DgCTc~HPej3?3f#ZJJ^cdx3)zc*Y3kW*?Q~D>!G}1$=<22B)x^`d!vK&U%0lPHFaL}zT;tUwlefy{S?_%{-3_=5e-)2?1NmfEcg|5g+PPFO z$PhPJ;fG&yMR}p09wVXlChzHX*2+pq zV#?(&p=RI zy)31?{dwalURm{hh;NfwhDg|qdna$CRw8$whA6PfEmaEZ?TUzE%2u)OUgh&fwdkiq z0m5Tp;qRRMwU}3iEb;2<-Nh2bWLpEC#j5(q=Vql&=a! z{xfW>PIS;t>3|RqX(XC7!JwP4JOjEvAPxF-kD%IpslF)Sw!#td2-zO-32xTUg=>;} zs^OEq;$`SW1lQWgAUAQUb5IrjPVm}~wkQg+0!DpMR}y0r2$#`Y=;w~)n`lqo1Tk_6 zW=gjoINiajg|3-`iE4Bk=RZ%GFDBn!TihM^A}(%+c*lqve82k}YI@)s92~k3CqLy* z7X6QF!Ss|aE~&e9JlOr03U&$L=k(Uj_*&yN9?^~NJ|_ZLs3bx@oO5DA@PM36m$EE$ zmX2F?QRTUB;}U&~cN7)y9@Md;DQDX8SflW}W!~X;?;a!2>i0o(CjCCn3Gre41lyWE zqGjpA*e6#S=F-L1uxnNw9;k>8&(AO4pE)A_IME$CZMd*{QhYR~ zg+(^2{4|oFjo=#OYh3huW32YM#ppTl;A)n@?YA?Iu?d)t3v`3(phlfWF;(~}?kgzZ&o!TpsMVW>-v(%W3r^!Dftd!^UHGEF&)T6cXF^A;sGx##wBzPSB(Z z_)E2}26x2_2Rd@e$3!1h+s@}%U<)B8qdj7+vSZ&eC8>~&N>S~}wP|fkk129OB><`aQ(y}3 z(5aV{3o^2)TkpAdw1qvgH!||z`eT=Ul60{E9>OcUl1)^o2NTxcX{~}O*!Ep&CTo#Y z(XHeoRJ9{9Y%`dLrFhm;v4^sX%yxmv21%4Wxb>Y4`HiV+Q9JBwsb=J*B@Y*7A8klc z{A3wx)iiTbuXcVxm9`Dmc>d|Tdd?~I4haQ~F`Mo0Rw~%X7D{)O0t*X7^atM8EMH$i z_yrdWI*Xz8!;M3v84qt}Ui(r{-V4gKq84Xp4;s-O-beHE+xOvG$!v0`Z*j1`?2-6bnJ`UOBXve`I_Y;abd-<{2STLVX_jNtdT%rz(1|6YtkvuyCY^Gaf@= z$By$&{!8^dyF|k$@(n}aD*8v5A9o@MRU9K>kF7soW=T!#W1VIOnb^P#cv-K}RTG@O z3mqZuW;{k^27Ad_7x-mQG;6P;??5aEK~Bg{7%G(Cg*mNrzI9se1UTYt5tn73MF4Cw zq6S{mwjixt5Xb&aYLtl)XZAs-(&EDqyC>huk(H{GV3q^l-+bMm1!C5b?^Ss!PL+x{ zx~KV!Ok^{WRIzzsG}jnm`6xZ;D?CAz&?n6j=@8S05UMF-#XI{GR9P0Q)DQTIMd$3_ z(t}+_>=a~UDcpYZMEDukQ%Z{9J%{IRGRyNGcPq%pX?dYU3W!5Ro=Co8B}G zg^VT#Q1u5WQ%CsKvUq0+BV-M*ovzLsfK8NLgQFyv&chuyct28~t2FE^N-xob{}5iH ze!JG#qk%rfxd?qzOLuaKVkvSnuIN>9_fw4$*?lz5oyLH>T(?J^%#A7;Fhrqqvzzh9 ztLPPX&Z_YVeill>*EjL0l5~LPrCy)?38`B7od$`v^o6yMw$Mm-zwt}WfwlHVz zo0a*U)}!V+UEI+LdgK$nQ}f5V33Q^BdWlAD3BqF*YP%AQ*_4msgZ1k%8WbpH9!OFo zlo~wK9XufD)AvA^KutO%<}oMc3+jSEmFJlDnX>o}cOq&Z+Kk@ZeFwTX;!SI|m_#G0 zeJ{d_vHKb>FR^WeVIr^b)YXWg#jS%Swf9t_Y<59+s)a`8?as;eu!pjSh zzRtcf5Y6SNY?SvJXmoz0+-}(AW zL)FGJKSR|J!1YU3yi-|$4i|)1o;Sxc@JzIV3G<`q93eCz$^iyrCV+fM8b0ORIj`63 zRS>m5ci1_<8MbEzu^`fwc?~~`THdxXiE{tP183VHYS7rqEOg-HFEo%{KDi&gkp1?5 zJq^p@b)F6PI)m%_t--$J!*f4?B znL+P0_+-?}XeYk?xCbRd_7H)0e`Y0OuD&4h4hnAfQxo&#`B|)@0 zD7fg}4F4E%U!m7*9t)g^6CBfls-+9Oi{j7a)#w=f5}zd=1a8XbtzVifHn8a?8`X%1 zHb>WVy<3GAUwK|RJm_3|eshw({0)8{cZt5wcAQEbUZ*G_IF~f{fX~U@CF(w#S2Xc? zyngG|no3~r+Oy?AHHA5ApP(^WkJG%R)}5j5QFL68Ugx(j>Cp3d-#|Gbp2tR+Y#;e{ zM)Fia@u8tW!nJ3zR?W31XVQH(rs=v?O(C=C{#;L*1%oh%B`OFEDL3MdB({j|9QXdO<;@k{^3^SGcHRJlbbaYAumJ<^eT9n^>@x0Z1_bQ{MT zbsOg%I2E5?vJR3L&!!kXmy{XjDo|Pf&!2)lu3oK=Ctc+V_et_e?z1aVlfvW3Kas*e zDcrwZc`e7$_|Cw#P#ymhGTo5r2cvKYw8(9C{OR@wx~&K2rnbXko;rl0;6L{x`tXC} z?(_IuZtKH3$ysCE=M_-ce?=xs+3+G0=ax^tm56Jgxm0)wcROt4e)>@qXzkRojHbqW zC8Qa3=~g%pebvR{WQLroU@c-l@>#$n#6zU!`0d#!xxmTTN8>Y8r?MEwR&9`->TZ`IF8(lrO@**MRD6%{vaY{1?Yi za!cvJQG^9j6>9;#Jh-0Sj?nsPYwe|!(65ya3s4Zq9YS=JRj@$BEb)y?2VO$<(bSXw zxc!k^(q^{d`&X&&h#{A5PS8IMZ3KX^EpUXqK-a+Ndu+~%KOaE72DCQ8UX(WdyJk7P z2+aa?hP6^aj?ZvCd+En2r?NEehr|tqnr4bhqz)8fDx_YW_cYh}a4{QXcU-BuoG8>iWe8LnkNQN+*&{Azz34cNZqw(j@0O^Lir=}{4n$+pb_ zkd?ueYipi>{PsuC>yUVcMV+8>N)+uo(?7IHHWjq~sf*G-&fb_l%#RN?xjhB9Z zOW98GB@5Zv-jg4fvLT+O@^me|otAZIi)+~s$gdhn7`-q5nol*_f~Pt(*55Oly=KSS z;;*k2;*^~)mLmH@=FIL0#IaQOWkhS;m1Wy9P8Zi7eIveH=Nr>UGv@J^ znr+-bei}oi)fis7LG*V4b-2H(pN-@7#B+Zd`y5OnnpU)z!Y|aD?$?U)XqNFy(4n** zP)FPfySI+FHG&`bQ7USCZy#ezon6_-KkIO-+X#Hpo$0K$vc2qD6F%P*q?T)%mYRN1(p1Z6$8IRo< z$LzdB5+uJ0nB&QLvnR&qNXGfg{*-Y=|ES&w+r*+tQn=bY%zhLSyFD8XV|fns^GaK! z23QM?z()Hw5AQ9bHreW%gv4I2_`+VcecpH%FueKHIxtbcjuciIKVP2~dB!6aZ!jl% zP~B>p`WPGY=>k2`ZxIH$++RgH%xL;puW*uDDHQr9%W?au`(ayB=9c(|kQOvIw!b}o?d zoP~`&B#Hs2emS5OJjTgykC(&k65YJ%&!#*C3PBx$1EX7px5ul14-e+Nv0%ww=gw96 zXVbBUhmS?N@qO8L0yzLHBOMx$gI(u?>*m!ySW+F!5BlKRMVV4ZY1DtYe}B34P=}rO z#(mu9ko*oi{&bS5r1p>P-_h;zeL;ux3RQG4Ukb(QM5hXVt zuK!X|fdVr6`?Jr}l(xrzH48zB^$N&AW1d9)*$J*Z7SBN5ow#47FSb%>YqmmAzZb3Y zL7-&%_W1k~Xwj4QoJwwG;WeD^Uv3_|*zT5l=xd5^;%pdJJ-hL|7t9h~y~H0ZDQX;Y zj@!F(jP=ZI4zGKz`nsxq4xvu4vm!pi#Be+sdgf+_{Zq&_$$!kCplqmoMt$ZkhyFu0 z){jMdGEF150Z7pr>MnqUZKB|%86Rq^E}_Fju7%gJ{KNqXNFCh7h6eCf{V)HeV&`6O zpvtRc{zmF*$9*2sprS%khXh<04JzW z+&a~|=GMJDI-*Hw$}V&mOX*#9I`8dxx1Z~0@HZ`>iJEBtSIhUuYNq+I7|bq^$c)MC~6-oiZm znzFl}Ha321;>dOm;rNg|I!;rWcncj~nI@>YL$s9WN+I z)-T~l>r7u@$zf`|C&UG*+|{Oqn6-hiL?4SMO~#qqw}ax2pu>ijs%Br5us6=%eey8=!{mSlt2379fC$_($ z2pPjP!rdvTKEs_7CPydyC*~d*#__ukqDCQb(DdFa;i1wkP`Vz(sd#Kjt}Y?Qe~dUtQ|Dp$e_SrYQ>POqqtR%WpEvkucKjYiDh) zRAbVHYzKmVWQ65Ro|_U|Jt~P5>nVTZ`-Sckql!d=v?~L zU#7efUEmm=!tB@Hn4S%HQ5_{76G*??HzER;O*)0Ia|@}pkcK)bri3sb-{=j{UI4FE>Mq1^PDGZg7`g2Q@I$g5wVML!5 zHwmp|=~L^{`~U1kB`UpykCy z*!q&+hG&N2-6XjIa&F_!>vROQD*JGW$S8lgH(zDlQNWKrkHFr&Z7x{9-kQ*G9 zoaH89pck>HMRSBb^&{J&+IV)MeDHHa8~y6q4zg7kWRCV8=W;$zN&k92DH>_?#XU$L z+Hw$O`oW{S_|bj`Ggs;$q~h_olC9{)U7fvh1Za-V2Q_HXnR}UaLPEk_DB7vMWw3xQ zxxlshB7(jb0cYw0pV^@(NKvf9LsMna%dG)>BqTYt`|%i9sq%1KS@{WShe&Hb`+gXB z>y8Tbu|wLgR%@u4rcMjav^w>iu=SutfIg8?#9h&WMr9t4jq(6E>&@j?^9j!}565~j zV^Du~dFB+g4U0b+>HmN*T7`3_Iks_#eW4KS8;4E}Qe}=n>4wL>LD|b}Y>Ubkmoa0? zvE8Sa21$2eub^&A?$BY!_55L+y2)L2)JWwxgHGT$S*~hAL1rs(5Eu?K?*=A*@{<6C z^2wSShr}-wRG~TBGKO-2jdGP4tlQn4OzR4(V=op${QIyO=lhiJbHs9GUC%J$84G&E zhWFBTa9(2x3f{@gC?YL6BDeB8|FB3!0mahfX#){qC{f0NW`++>=caJXZGGdR^$(SB z*?EV;W`%g3 zxzUPHeO`s|?ISvw3Ut7wtKd{F(&qJ|=q&C+}pX4p1y14dRERNcQe4klLYH8&Cz${e6O85l{vmF>Y!MYiQ@+Lj&^#`Ax_ z4ITwKAAP-$42*Q#SEt*JIAi-9n<3PDlzcn%sr|>hFL^A2qrOZ0$5y7(osZf-Vd25s zL92iN5UQi$2WvZu%rc!}Po0`21??4Bws&+32mS5nZhRuo{DAm^@TX_!;~3?z9{YQv zF}>?)cWVm!fR-NVo%HgA+T@?XbH%&?Eyk*Rb3bd!EGh)Jh9xFnc^pUCRgV?)yKJvk zDUdCz@T(Dwkv7FH*K2RYFt6^@W=Iwo@2+nRS||uRb`s_7yn-kTF<369)$4j~v`@mb z@v&rMX9m1216C3UEqq^5yQY-t-)tr`mF(I~PJOOVa+%HA63Ln~t7l7L1*B^Q;{{2P zpAeC!L{tolQooM?lYaxW*8jN?ig8an|mEL9W>FHBGLqchLHIlA30{0r-sghIUFn4`3qFu$Y81nv~To`>|7o^21K zbvOB&PI4^ECD_OkTU-bG4`uA>!rZi+ z4)cdiSp@hki@-Opc4pz%8BsJj}`x&_EP@@>!{)_+K}0vtwYb1#?!Z=_$`EE zVtK?EFn`yL9u$Pd^~4jr*&5aKVYEhpd`VQZi=c^(G2OYxlE^zcQ|p5r(0Qaf zf;}thpj__xMbtT5hY!n)^CVyN5ZOCMq7#{m;$8dLKi=#cyR6h%nCN>8#wK^gi+Q<3 z-4X?H(5krN=zHVr7m;UWu9%;D>Cjw$(qj6OMtJ7#E0a>s<33D9ESp#=KYuK{ z6|xh)DK^wO#Xr<3D<_E2Dd9nSm$Gt@pN50vF`fawPZ3hSKweloxPj7(orq2EdlKBG z#Av`#Gl(mD4fy`K;CFKc5HU9_x()Krn%wE%pmQ6+DOxH9r+DTW&j zok9!7v$EB#&VO5EjAQOo#K_;Ry848691lN7UQp#M(2;!wDLKL`XQ}oQz^_cwEF&k} zizxW6Mmw)e=V2FNH?g}ok@AwwehsfocwrY0`w+9sdy?&SENE;i+_K&M=V-vGT64(> zHwCx%f?vFkP2L5BsnE?j)}6OG1cxH+Q79T29jFhi%5$4Kb_xl=@-h zg4XW6@nzr?tMT*sIkzwm0TD;aHwDT7UipGeYr3uCD*bcr#RcQguyI#Z%7CP)iy@-g z+7piWu%;0lM;!~IsS98j;d`F4BN+T&`3-aZ2$~>|{IlD78`|&R%@w!(%J}rn1-AXR z>zlKrZP@q@w7(~472m2j0Jg2u_5N=*rM305^3fZ?-4g~p>=cK89u^s^gNrB71YTwB zyA&^hqI=0ZnGP=t{B~Gv?ci%1CR`@i;5g?lZTMmd8gzB?ftdqQj+MJ4e9~877^a08 zbXBx(J*g<6*%sH|RQXm5ace;Dtyyf!GtOLQ!Q7@tW0e)t+xqNr4 zwC1(vVbf-$fW4FK@hV0s1} zuy`M6bM+NeA#@+%=A=hsWDTb1Uwyj;pXIMJ5C_vbYyo}s@r}kB?4a;3td?vI_K>ba zBny~`HbjWV7Z=8Om z_jXpvxSPNJVfxWS)~3Gs%(lVX;H~E_4bg)iRzJa!q&{_EVun8+;R&XGKeGz#&5yV65Om4eOy% z<0JrX^dwd*SV2_gR{c0d*>~iC>;dJ_Rb=qV(#UBog2mucUY3Eqn0tbo$VYi!+PLt? zlN%{A7}bJ>MH*rh^WT0mqs*9FWlKybvgpo9wHm!x22CEG3*pT$0^F7C50h|S6WW$z z0uE8|+cPX)wz*@ft23}zQ|^cS=|ozI|i+0s=+^0o(8SPs_7r3 z=$E4omuCK%;0|pq+2K~fzZu?AECO#gM(}mg#!h#b;(xi&cehGhZvs>r488 zKB-?Gy-E9&eu2AO=o#3nn23?iz)r!AknJbNKQp6n;sx2>%|6ErDXL48Eo+Jld@QyF9tG)H5)5 zsj6o_0>S}6I7*MdhJHyIWTODiAkpX$7=>kh{Ph(|6=hxcE{+FUz=q}jwh;q`lm7K- zfb7SPzxIz%3l#01fL+;Kf~5IHg5PwTwqqLwyd@ONS5-q#&Bpz|t<>Pr&KB(UXMOy& zF-IJkLpEDy9VdmsC@76XOb zMfBl-tYLxXPz@CAqQLHocmj5~1iyr>4;ECw=Y?X4P;4<%o=d{j;L&a{*bVu_3E27# zW+aU@K+FP&I#ghHjo}Tst{HDgG@1=Y2R?lQc8b`L-D9M4?U@L!5+z1z3&^_xc^lJ) z+r!i%MZ5iAH&t;0c3ufT<`Km|7AfLGqK^J1l#68eQL6Z8cL(g8b7p-4cEWnC`U%+I z0mKJ@ctpiv=?=UlJ2vGliAI@VG}yxI3D_x29P$&eW7rAU$0TJ)Pmi|gz=QA4CNNG$ zh{3~Y#(L*!#914rjH5%utg@!1k9s%sE9pf;>c^!mkZxm117giBR4>gb3BA+;wGg!2Ye zUvOq@lKs^=T65|3&(cAvZlA-`>*Kj{e&WZn&p@)O>eVynv_@xS$567FOv9uqLcGw4 zAZ7?+HHC`RdhEt1kh6GbHk_W#kJ45go(&IMJUn~(ZA`;IG7H6QGhb26)`m9u#W8C! z>kzCWW_=w&%+h;ywDWpkbB=ug?KpilHtL>7C}x|rCp`F>4HvV6LC2a;tEW2lH&nW6 zQg)HX%(>ZI;~JlvJy)Z4ZZ?oN`P^)?`S!X;gy@aNKBV0n&M$4s@DmQwPN6E-cOP8U zbQXR~L7}@Dy6f1FR<;xOSis|O8dd8-rnhd~?^Dhd)%aT;&LjmJdl57PkU{d_6m~n$ z6?Qw%St6&)2I_{wrA>r4j@Xx082_YWf69%&=|=3sH2mqUQSH(jq96s+TQ}wRRp{ze z<{h|Sc)5@+Um+46m+!tn+DXS*Ng}t{YQgM%1ezV=+4=@aERE*E#h;o@AQ@dRAW=xL!JX7-W}fO%>eqi7FB|q!LP8?+8>Sf48yFY^TY2_7Rmt zNir#%z*+$8Y>L)oqKf*qplHuqA=+61Ew=*A9nf+kaiwVgOb|{A=V)6hBHD6_Hd#Q^ zR}|46g+b~NpuNSBi@rzf#BaF2Dre#loGIx+_a#siyr{|}gZK#~XgjPlRF@Giwn6(L ze(;fO)2Je*9fBMWnIOw?yH=tc?+!I+L~4*WOsyO6S6}Q7e!8F(ArDcLi|<@0lxhDR zdk^yH-2k()?j5lsUx4 z{#_Whp9WDn?h)qLz+Ucq~6O$ zDZGEEAbM|x-n|)0T2JEoipdN@P3rpB3e0tAIG;f{tC409ehfu#4?`8+rYgK$4FPW# z$RqWmFUB#PKGJSXffwV+U-ZRr+m}`r>JbFzga@7V*Ig!G3>W+mWA^#=Cor23lmU|o z3sdQ20)FGi9D=WixY^_M$)cKlyv8EEHN|p0E36VDj+HOWuyd>hX3&qgj(SlKm5?h^Qht<@e+nc9le}D6g z5MG_L>}iDf$(pApkm|t7Fgue2jz0Ux5V{sG1jt zw2Gr@W=Ut#;6CAL>u6E1{WAuZPr7Eg z$=AT7Xe#UUK0b9db z2w#!a_|$lXQ?KG5ZH@;Z*2`ha?YHNP3wPTD;Ih-v;>O!=|M7!lnu>58jh}9SU78h9 zOBQ$?O@E5I2vFH|G@}K?7>YQ+1aT=K{#FrRuQ_e;^%{Kz2*aM6TFoM4lH(=CM|_SjXqlSjQWewVLglDvJAMhjW)H{^+tbcd3zFj-)O_VZDO7oD`&R>8Wrz zk-8jBU3LSPn=8UD*?tqqhh^VU?YtYbjneW3>JIwpE*qR)0efo8PKM%_VUf-gf(tRK z`(yuw`$&oGx7idR-J{87`V$&UpPT%?$<1Q)F6Ci!7h5l}XsGtFiGgve7TA5qmtz3D zl?0x~HsO9JfcqqS#py$!&@Hw`vD{M)JPyFa!EUSKF47*xglNxCYJ`aRY1UDn0ObeL zrI_C2p(Yjwhg)3mlLA%gsP6|Rg+JpSQV6l1zw~`vO+$3?R)p9^{}bT8}K<|7XZJ~jDv4IK*47#!4vf5p-?OXuc8W`0N|CtuD)XBrKicti`N{rl^1Be ze)`4$@S5i2Wi;ijSEq*5dj0f1U^4eJ?j3~~Uo_=0HfCF1HZ@elI6&V6a7Qr3;p46r z;{c>nVAo1oa{=_(68a%_SW~zXeUM%UrOGh$zw4`>nh5Aq!S0pv&e8tHD=r^@R9kU@ z7967g6#%wUIkV1}x8RHFQVR~zuLYC;&-+Fp?1jEkKIh*w>~@}tut(@`f~zV_emtqC z7WN1T`wrM?gtZpHZzSQ{AEx*p8Yu8b=|4cZV~pQVRmC3#_&FRP8O~^><+cyU4`TXk zegjcKjDeD+pk!y}!AaEv+LZ&lhHRxJTJ5e;+cI8XX?>-VRPpdNwBq+YWUYbsjXr_u z@cTypo{L)J=uGXG-8Tx?F6!-og0cHXTQ%WY=@-N*t8mhpd3>w)jrQ>ZplsYXT4RbJ zYTkHC;>Y;D(Z^E-yK|nB_%Xh3^z<~rZZ)$rzHju-7{O>9Gm7$4xo`Ac15+6l=4C0T z0?u}3GU`S-jk)_qzxPC}^}Ut%jp}S<(KEIIik{In#&>Y8^C0j4m2%RIuuW|W7T4QC zao=b|0W7}gl zJzQ^jRO?L&{!>m!M0{;XGdrTcC9ME5z+{kuUF#oT?PY3}H|Bln%J0T;bV z)Ez7%w4m-vDBbxf+|8&5?xqlTFX>A&CJ4^V- z_hkU*f@@AFwMe=^sYQ~TLgrT2cP$I@g)yQM&T5RPI(!g&g55fP7!-i_mcSb@@ak>~ zLRUjS2?`Bi;CpJQf!6@=DPY%9JPL}=`x_qvbz!nOsq3O&1sLpT$g%F6DjzRLsj_}e zS(ugea!JM1i_f_yqXHp(Qa+9O!=F01^X6E~R9&f>GL35qG_Dl9=pA#=+cL^bMH;7> z{3W+#K=U@#Hw3)ml*CP|&q>^+vh2VouX4ac8d4r|#UEeP{fD*uz^9KVfRY?agae;w zqX;DK4jiy#zmoiA>P0qTjFUB4@7*}KPW#z+Wz=nm*())Vk%}dim#A1i5@Qqn;Br}? z=hU^j3Ii*Lk$cd{Z~0;5M-L(Q%8gN{KWq5^=8WYG9hP(IE*dlx3O#AUrPdJQGZ;73%Nw>5rx|4<)L-0W^9EuNe zUs>rvy6f|mh3CN!1K1QsMJTs#7-lpb-Jrt^wDX z8v2(e?JL)}rdZ!UYpd3G8RgH?9v9(uM-(B;K+*l-nj?lBBNek zyEM2zikRD0$si+O?eljunxVx95H35IVG!XI4@3DbKyk6Ha?3||P^Kj0!!TcwjH3~g5UPXKh@pY76Q2NTk2$TTB#lu^| zu#)T|4l6kP{DBn;bnr8z+~flbv5c23o3H_B39}3_RJubfGuRMR-$fdNnzA8i7~Q6& z)3$O_4ng_xFGxL{rEw_WCLf0~oXw6yM|2lp|4Ba_heAf;I8?5uGjCjDj73eG;4N1AsaoYef0q zPOWBp5ojBt$u7Z{V^9%^wEGgfMbz#muq##u&%Y(Sv!w>lzwJ)yKzjSQ-Kba`$w;@E z&MvdrsMKZbFBDT$a30bv{&qCVwD)CItp&V|xOAc}EA50AxFhp+R9lI7D@keqE0Ubq zr8PC?dL)8Y#SEFcW104URYTkXo}{_1!j0ZZHs|$#X-6=_5c7ODt;V$s93QC7+)Kab z&K88|?jir*;B*H+TO>#kq=d^X(>p3m~?%IA}e(^c9DJD@EO?cvX7 zLf33QpWlnn=i^&dem?aP)21e3ChXzQr)F2_`E=NW&u5wwJfG6!{~MBTXYculd#4DUDgO7_nr*~CNp3^Evqvw>XisCtqZh(z3WIJj9U8RNRxBY}^rIFo6g{2zLT;sWd+KF1zr#M>)cC zuSEX8;m4cmBkufa67zEb=2s7?gvncB_Wi)q0q|U1^5q*!Gja&!dnRP$IOAhE3g@Xi zhyzY>25*I{}b;TEBtZN!+V>$>xMN_X+ZWCS^Va7x$xlOxQ zG81WC6`4rrD+{9(nb8$t{-!kLHY1VSWLhK+hI3deA*v&wvSaS^35azmqQ(TV1|ZHy zouDmPAK$oqzr*X|59bIYx3TRA+{T}B8!G~2=zAUCk>Zrtw4uZ%P=`zOZCWf>9*Z z7Df@g<{Cs z{ii} z@l}%j7n_CbU%Qs}e@c4u+(rIPRKw}z-=LM-SMRMy?)M6QkT2eO4wn6@Eu!pK4pIa3 zpc*R`4(p8u)h~>ABDJ-8vERBSPJ_d4{BmSeg{_BLz zi;m*v7p50KU;tnzK@9yShJA=(4`Dc*=VogZ-As1fkLR0~69Ts)@Pz_+9Rjxy@TH;> zWdw$mc>A@km3W8AF2b_X#PaLwb73E0IhC7P1gymN4yweDs1noDi=SVuD)GXXRV6-x z7$St>(OfsHtmrFf&P{mdb4v*F43mY8i~`QA0T z@GxN+&vI>vg{^u^d~=1W#M6VS67NO~A0rG8XSue-$IwEXc%w*fiT5Dz#RAxmz@I1J zP?p{jE3bB~#HUy4Em3J=$wMq(BrMBaihz}PZlB%~Q_EE)vdl^xLxO{Z;b$J#miPr( zYHusjTjJaQnG0_d!0$rf#|ii$kKPi!H@H^fH!Jj(c!!C_hgiNrSoXLS0V{FS9=#|Mw+TiAxc~bBN(&gOdj}M|b4YCho-NSSuar#eyk5A|-iUCgqq(L#eFf5Z^*m9rlb<2;Vm+2_y{P(0l$!Y~X|2n* z{&D&T3;n@mWdA?MYgHu~OI7t;TzaR|fBHH>zc(!Czm#L6pOo|u3i_Y@f}(%Wh5i{t z|C#U4NdE`R-09Df^d}F<`rGNhdakVhr$zmd{#sf8-6)VN1pT#-(?4`x*HWtg%=GJL zp#QFG1^tAiFYgt#>M!XZ6!bs)c}4%A3;jP7Q~jTvx&BLC=~o|p#)ouo%9e9ymtjsi zgawJd_9-H|1&QVfqOS#Ud|N?BI!b~&ipd72cN2{k+5aM z7MRc2Y58=2`@QAU?OGyyx>tVh^y!un(oRHra-+jNqqUdEM%1j}&gsQ}SOWYB{7ph# z=RPNBXPJLYzFW`lzoMYxTv&;`*ZhUL^8R zeQS@_6kFRBE?+3hdA2O)>Q7J!uOCoiy&6k=3)Q?<&a=`-BdRC-JL0~>cnhqt`H!1l*!)`M(O3OP|9;mGJC|S~ z?q0-tKKEAq@1-)N^Yw+o^SyO#8Tutl^g;73)RYCHkUO!Eub|F->3g}f$tU;e2n~{C zLTosii*mGcp=tk`FbfgpzX^s8f<~Cjf(qvEUm=)%D!~j$m|Lz=FiRgHm{FPt|CCoeaDVXnf5zJ>ym`6;Q6vDhlFk@K)<{#IX ze0!2$QYOr8Cd_t(`5VD}Qo=NwJox4V1hd_QsWD;ZAPgC_FC`?*@_Gdm9Uz!FCd^_J z=BIVJ@OOgQCSiVUw&_3n2A`;;LnA51Xks=dcU462CysU zo7A^FoqPP_3h)60Tp)*(TLkLd^he}o!p_~=3SdpmG+H%3^1r(aReTp(1PMAG=8-V* z>I3u4$+1fi%@&DfgDBxaB(zEp+JJ=C5g|0qZxDrSvI=?9@8aY9PB82zwCS=q&-8SN z#PfzA@ytWw{1=nNGrMx3M38tbeVwq~_gJ?3$tyFh`R`3kXVXSQJ89H^A5$m~Bgzeu zJ=aO1yOAh54G(-wI1OjaC8uFG=9)P66m9&)(ZPLpp`4%>8~OvnQ)u?x;I>`hS^v?i zy;Zay)@M{5eX9ETDgR|-zIh)V_FrSyYcnCJEwUa;@-ti(2I8qXXyvii@k-? zAI7%SoiLi|T!+Y_a|N;o6|zeRS;e$%K_&Mg!f{DOej06sqR&Y3-3nsXT;R3WS+=!T zfnsQSdYVfn_Zu%Z=E&?cpN%el=X@O^_tG13fv0?nu8@SbD?$$!N%K-iI_0a@}-qAAJ%#Rft)Bi5fI@u}tv|6$*=OaX_FidcKerO-JPS z@3UP9_4ekGe(IzPrP~R0Az9w%VC=mT!}|)^#{4RROGt}}wzVSRkJKLZp(FcD&C%y4 zuwL>$O66FTHC7!hu0Hy6-yOf3@*n-K?={HrAALT((1%V=ZEGOsZ)5)K=c`*s{AWF1 z)B3F|k1q1k2gXOM^NE+QReG}LrRU81Du#EAPx`Y*{F{-?cdvcvqK}`Po?b^Y<tWhfBz`{{z?4(v-tZL@%OLd@887Vzl*>B5P$zE{!WX(o_zY7E&k?;zq9h4-GP7m z_s?5>C(v(t{Pgc@H^1=e^t$g*zpA<8d!Cc8;@_;3ui)S8lP}`moRj1DH}~YvC17vO zQS<`GXWcdYYA14H(b};8XwKTN({}ssuiuvaYWghy(I>ZgUQI9eAAM?D)~o4-wHVKN zH9e;mf|Z#BI7t+L&+hrj%uTCq@m{Y!z* zot%EwOrD4goSc47?N<42i}?;^{N?JSo}*r|r(1qmSM+2*ZJfS~+?=DkyQ+`YCMNFt z%*p9q+ID&Uw+K)GZT{{%x8iU(jEdvvlb8UaJ=7GHuUddsY!?$yI4~GwN_&E-r;_!zYp5X9x4hv>8 zKR7Jma2tnp9ELeO#9=RopXBf{4xi)jMGjx%Fu#E1kHbwImUDOwhix3*%HexB?B{Th z!)G`g<8Xq*DGm$gaJ@LZn8Rug+c>E^ zkoAMXVJU}Y90obu$KfFk@8|IGJQ;qP!v{F*;_wCz>p0xX;n^G(a`;9r%MXVm96rY3 z!yNW-c!YJIP`P4g~L@G zdR2esdY#}f!0mc7&GW@^w>)*3V;49m^%7(Wi)Rl-Nqwz4uQ|V+R)X`j9 zQ&&@0S=9voXe>hM@y;}6Z4QUhAxK8j5Nd6Wv`3PmbTl5r7wz%b0cejOR`3;-{#swK zy53)ju#HF{l0sX}2hf}jH6Mti>pRnl&U7G@40S}(kz`G5e;j4LaR z@9c;e(UcL3r;TvDb6c+8Sw2i6(81A=(tw*4IKX84bk_bhd|*Ms561 zGW*L!%4d0f zz?6Sq6Y{;jLbPv9WuT#^q6+`7Bf6NOU5Ma5y+zh@zz2ciw#I<^D zs%WU+OIx~u3V5NYS1cUDdL2Ru#6BAB=%KN78NaShUqRoD2yq5W+T$g^eJxv-}*)u@4D` zT2a7bDDL}1t&xpJ4T-zJLy564wn;i}q@o>(_UQg2MrVqoH5v;?4@JYBp>~PO*w5{f zGWH!Yuy^81$`=xdI%CoOQN&|XG4{ukMoKc{g4TE}os74)OS~i(BqZmn_a^2SSC198O^cOdJNHPDNAclo8*L+-PYDqrPcr!I;3+(h}?JNF2cgDMdyJ zmWr}TN!VD4D0UFJmX`JB8}V2~<`adFgj(AOE2^Q``2t&8^g!GB1}gRQ4bh`S`J_JG zD4PToh_Nq1^)e1e(``n&O+;*xT(Vvu!z#AL!yApgZBe9iFmeRBCo+_z*5f}BYz9h6 zNrt72!)=im;+IS$yf&s0ZDuk;$rhwclCaQ9hSI1T3oIFGZ4aeV2C77&V|7tc_>iOF z4MHR898XXj%W?#xEJ#)bjrhJBBduv6XHrg(xF|7}E`FGbhB~t&lsuxz6mnc3QX;{% zc9(!lWeqmqPp5oA(6>Qh++d0kq1+IUwd>Rfa)ZQ?**Jh_Jy$SHn)l?I|!R1&LKhw~BT-6b-Qe?2n&s69c5>>}M<)IDl=mIJ<$ly#e{(nT+ZE)XqR66BnbX zC1XMzk$#e5j?zm~9*Lzolfrlr%_zh?)P9&`1~ptX%m|a6F*|#&UvHcxWIvVBT1rB& zg!Hm~|3)qf<5JA3VP5?k?PjBCYy8s_#qqhep6#2)wsZ=JRL9%VbTWcR5)mFN_h3J)Y!3Jue6`JFLRK|22d@s$r%bkSoZbt&p)pul zS+xhmLXh=7*r3KpSwpfvo2V>kG1WI#D4Pz)95UwQ_$qPYK-$>I_HZNOBP#?8oW|0| zjFM|NY$`3?xN!rTZPy!@8|9HuGMYj~c`c=E+$a)vaI-hMSv|po$tG9Dt3`&C+sI-&xt`v;vtg? z_M&*Swv*)+jWyG79oZK`6O?Qe3qRRIN<&-XC``N*+DGI^P-=50N_ulNoRatnHP)k2 zx2s61O$=;bOFISS63r68(FhulALa3|u)k5?*ThVp2klC;>;X#KA4;XeQts+2s^z=- za+E)`Wnp*hU@U$(W>h7UsHRAsch~KztKVDKT-DI9-sIB`e|^2+jqEom*bz^nHZ$rGlmk^{R~kM1Bhr^d6NBGXHYqzC8*rb*L!yb)qqS%Svh<=lV#^>sVR?L)b*s`17Z?07p$r9`8O*gU6i%cY$tM|06VgfNpz1%0+oYIqG|I_shmOxn=RM9JQOzS zg&`t@uH09NGI?cH1>Go@lK$c5`rSdY^3gvOamxu)vfdg-BPk8%8zvv>NPtl3P#kH(30}W`TCP)Sq%ZSh1ebHa3 z5d#*ciII!itr;EN2#%Ez#ON_)3cHP*76H>XPCMxODaedek1D-$FS-lti ze*m){)*Ox;E34h)vj&}@1CgYpLvmK`$6B+XJM_6|A6a|y{|*xv$e~2mucjk`N=j%? z5w|8~(5LiQ!QKkLbjIik5`e2ayAnP%6PJt|(b*W1Yl06Mh%qwK^m`X;3ZkN>7N*VUo@4T>7>93TmUtG=; zk>94tOCu_WU5&oF%DpvGB&pm@)LGFxHwSl*9GhexWZF2?iFA$6V!Uf+{aUj}misi* zH&7_)1*;o&V?m@oa7-KN|M+`_L4sQ)4|VEh!ULmumFa2M}F(RnVu(O=Ghu{JLCOo`^E}^zsS& zXNLSdqs4qjeVmjNNzHQpu{kWKlA2R$E{T3}-bBs-O3x`A-M=5Z4)Sc5uhuMYbMsA| zp>`^g7wEp6HJO z9L9W&&5czJHK@giu3V`BM|)K^_;%LU?eJeMmKv<}5$UB^^Zjmzp48eo`M3>q*kQ0Ik0oC327!nuZ*Ca@nyL;eS#jT?c8xdv(CH zN0i)#x@ZMP{={5-=JFFL@t8qPDn6Oxx9j4RELY}02c|s_PL)lI8TE+5lyiOkfqZLi z+*bBd$-0!;FV(z*HpHlM*o|J%NA?8F`Uw4J>02=;;ldZSI3Vc+eT}E( zTD-t+8jf^{4vG#}bN!BHu^iG&fYeuUBwjCk0HJG4ebH{Jd~T;YYtUwXxvI^scg@8tTYFkM)vE7iDli&%jaZ9na1>8lCl*r)U^C#X_h=sms(p?1N}TpOnxa>ums_)6I%829U!@IWTEk?B>=0|NR1>m< zg$=R;l|NZ;q(5~#!(307%g)xg%#-YD60U0J&Zq(mVRS(sg0Ao_|YsHSd(jWE|h*@ef`Vg zgV|GTewduv05QSLKTB)G!e_47>O}OH(w#u&exjd%pC+#E4uTpj` ztqbsb+mJ-w1$8dhO(TM@Q8AOFEMT^$XKW~G@1xzsZR6Xs(=4yAQtA?$Jh5rfN=v}z zOdQf7MX!`jv(N{^EeXw0x zzs;D|(ebFIENrhvpWzFK667AZsA_$l+G)dE{bzSw%~iXrHaFDlQ3FIX@dF#h|`6IYtFlU;A7h{hSjg((asD@zW+ZnwN?1-;ZU8$C44`c`9Q0HI>Mn9a!TkyF6;+ zjF_G<`zLQo68p$3F;;$d25V?^Fx@<0eOb3t%wO`jU*1sV+vVHqyPEqAnl)G-o-EV+ ztBg7IDw-;>_oJDbhx%1#N6ea^@JVwDXtFmML+insWe^TYozG7b4fSdq)Qs(~+?EUvt3gOkhJrn$;FOsE(%6Vv9zGyxGLpOy}jdOn=KU zZ)(|#QZmGVg1VUdlW7xW*o7e0dChUsxsI(2B{>ga&6F`-wREPfuj}uvflr&Swb@!3 z^TC!M>6{XG;Nks>we|YGJ!|dCr>(h{Urn=M!D=lZZvim(Hz-$u*CkEU&!XoeH=71? z8c_fpxXOwEietUauTxw6cs`2eJo=AIYS}7n^wx8H@s6pSH_;#$0><(Rh>TLP zzN;w))z4@hU&klPZ@CqkpD*fQu1{F=#noa&*ZJz4OR>veraK^Yw#>J#Bpgklia#Qn zaDB=sSyv+V53EnEckKVsr-RIN+8@E~XKfHN+o4ev->z?GT9B1^YztDRpF}E|_Nw!Y zsbQ@<%Pv*zYpmk-AahIXkt#RmWiys6XIda4f10;TtGHT@cJS5JeZuxkqfuwgQ=2v9 zCRYA_Q^1DLCbM=r_Gwa49=2(tG%<$ZzQ_U7@HF)>Z4LmlKg#79P4KAy>Mo2L*8}xd zy|ry8ykAG|t*4)j=|FRn&0=?x@(UCm+x(Nu0-I*v>cgd?m$?s0)5)qH`V=hLKWZimC z3*~^@*I^RzR8+3RNL`b$?$oF}N?99-_lKhGYIku& zn9E|lLf=lH>wiCwQ)15++gIT1Xx8@|acptJRE^H%*=AXA-WdjOzQ2sNr_+K;2hCd8 z)>H(%z8S=v+{2%)jWvGFv|M5BUn}Rhn76WKjLh{DZi1lC^4TqUv0OUm0Bgy=eVkSE zhHBzc;<3i`W~w=Md*auP@u*YI&8ZpZ#G5()&Kz-dynyE$Pd9&Wr&q2f=xmdgl0T;U zq`7UCPdU?S-qDW+P3E3jKO(aB($Y`tLkq`1Id~n>6z!&OR<^Ra4@ld?!Re+?rIp)U znz#0=+TM%t!RPm*D)$A+Z3GLS>$}YFzYO6U^5zvqP<4GE<{XfZ=naRH zp>$_b>+Y8RcMODWV)j49zoD6btVr29{sJ-`Ji@l)c9 zA^wI*e79)r6Yw?LwhCBww9UN+p7=C9UNJAvzBWkyx*C@D{#gT}BLpqKxiX$kEB45Ch{a3wGpCA? zGFC12ZB@o^j4FE4Dr=1=BO5!ggGc!TK51#D3W{eMXQk4@Ml^$ zQ2bL{XOul5y?C23flNlGvL3C*VaXpqEcQ@0S^GctD!bV^k)_R33$4X;ZF5~LSLQr~ z&OhY~CTYz;d?l^7o3(ezvWabS>2wFp?>dz5IX5mi7gK~zNb!7EyV6SbbrD?#ZTmR2 zIr06W)^t2+u6LSqqck65Dofybez8@F=lOX?r^4+cAh7Ryw7z{a*t|n~>ZZN!)^JCgNO;Atv_d8Puf=v42~1)s))B z2*MC_>I3J76Hs$+HaRi(G&z>rrCg~G88p7Dy%VM$$&fqCT`-*;>%BQQqzF5|XSesG z%sF_~&T1^PO;(6{@QM!Yk3|!?wyIIos6zkP2E=|<+oxuk{=IEm0$4VrTq)vnAI!1B zwjW8`Ii=<_UE0OAfk>z8vaJR(j4?3rC;9svtVw2-}@rCdd=b$79kNgHvoe4E7BVUvT*IoU?~eBNbY+S+$h?cl4e`N96d zE6R=fa-U}`)WD$Z2r);hHc8v?+P2L?_%eBJ%5|5>aNAZH`Z@jvhwYcjFv#I2Io~l3 zALD#?^7}%L-_P%lzm3y5-p=7GoG-}bIL7ezsPb_91jC=N=yP~0!yRXQUOu;F@-i8A zpCiMrOJz7-B}1cHhShJEVb8@f9J@`1C7j;J`Mj6NaCox}6Z4o3hZE<@u$19O12Sx> z<8o}5;m}UT!*B-2n;0y8cQjmG)OSRbL`#U?5+1!1j5c+Qj$Vu=ETb(Z60xXl%#duOR#zu*$Za^FT_cEoSjriB2P!hAsWjUBu5U!3N` z(M~q9i;eHyYk6;Hv)w3g2S$u^NKg~iz%`t`2JTb7>gAg*%HE7elS`jNvQR-#)`~h4 z7}AOdUasZl&jk*}#ExrC#U_ikKgb9=6yCrr`Zj57_zme7|2ZGPY82C)hqAg_%be*J%jIv1Em%`c z1~sy}W?m?MbPsNV5TE%Sv@Xn7#;rSjBAB#qdVuTA%x9eg-10W6Q)Sd9Zk>2tEGtmL zs>~l`LJ6XGY#~HV5VRj)?K?_WbdfunStfobC`QgaeiidR8hz_Th4wioOjQ7XbA1;!ifd-d?d zUw7F}C$;AH8#Qll1VwIF#v;h22lvMMt``Sy><&2>AXIYa0~eZ2ti?@`l;Mn(v%%}W zt6lfPgvJ;gh4{j=Awu~teA5N(h8In&4W4p!Vr&QS{lG@;6R!;?AWpLDL@JZLeH1cu z&9-uSB;FpnN}o~tH{VJvQ%CX){?;{yuXx_`Z_d)wNypX8b%}O1*ACZxAUX;1Zt%uA zVV)opYFR9|HGv|6OkuR&Scxt?O_p9tZo<)ILbbCiU!9o!V_!O0N>-yAI#U^jdK8f~ zXWQQqg!Lvr^Ta|C7yS7uBI9cPKOCp~UrOnob-oqIOwn4xj?)50(KSi@c0TjKPOCBl zn{ae)zP)*1k*p44}Fhpxki+!f4|G@{8Cww8HtMTsXvyzs=|*qi5m zu!QQHiM~DK;>#x)tv}X3EQl!{*MieT&EuI$WGn|Si_Rc1ifCVv4R`$kvgx36HoxYI z4g5Vpb_K1~KohvHQ)BrkmC*OKCJ#JSS33BxWuC>ME}$DAn9E@OH0^q~1ey z4C5<+#=qz~(jPe{l-Mk?Opm8_?Ep){B%tq2I>>>`q3AOL;pzV-nXNB{oYl$YcH^G^ zLp8HfY=GF&*du>x|4LTZ>2{@TU1eGNTb^(=D3z^0EFjC4KD7BIr}(Rl7~1sSoh>kg{%ag;r#C>LF9(l=Lc<+ zW)+4@TpNP=SRtKF6CvhMaYJCS^wLfR@_QxGn+`J@0?dQ4O?>MC8~APv1jtZTM0g zHqG8Xx#Pmwzl0E_3%fx|qszH`BsrubZ6)6D%0q!9faOT`GNNnUdDSzWU!nB)kTvT# zlI=rC@FxWf=A0pBNo3$!$f^cT;fa4p86*=D4u_n^cM(iiE=ib&qU|5$;&fq);e|Ny zJ}FONN2p3}2!lKn8~kkr@D7L;IK{bZ%H%d#=(3|MH~LF9(=GbZ^plKpJx7gU>zLXs z^aIt#bkC4wPaW~>u5~xYF~m|h;GGV>Cr<=N)iSUz~K{?94A}R8@3HA z;LxP#G|2s#R~v^nLGd))`$)#J+dmozD#;jGXT7S)Nlsy*TEGA@&c%YvyQF27=Rbz( zf@NykU&Dx-+ALU-yqXDzOYpkY3TKY3U|J~RCUo8<0Zqf=+geu}YIhwxjPyv)u-z~? z1DT*8eM_V9=5twtsPc_}O)P~8ZlPF$3{I@69E^JdloXxZeGksngb!Z8(_fsVu%>$BlnM{ z1LQ|zNbi296KNoR%e7` zyuey3H(+k)R$F0%P}%fdW(Hot{Ruoc;iMO_>;4b|99($}uXk@dMw6d;1YNxY=Ki85 zwR%{|?Ck;gy=$&o0^OrimmzLmfM>gzq(xx8z3^{I7Jl;c#1MYU%|$J5Cm{utxAOJ(+7s%YLWQ2gY++q&6Cn~Kh9AUKqZ#$!F727I@0FL zJ#GJCDmTC>EC;LSrJ6Fo%DJ1scg{1zK^vNq49L5UgPYReJHN@<4U3W2OwVEaE+W|p zm-hUVnxy#PcUtcd%kcMSVJU|b+Qd_KhBnhn1flR|EMDoLi3fF;MQgL}1* zL&x{CJ8qp$J-Hc#JJ(Ns`#48y0tRJBpaJK@B#vfds$ZM0Z`Yq8V~5ALCwq4=g`Ze+ z;L4O&rYJ2>QhTk&Z|gmXb$$$>1G;vWat-@|%J2jXp1eH~vhh-AH3cLuGj=5k-a%b>gXtyHrw^E|IODszF zAZ@dRp0~8$sQ(RGYJ9Bc3CD_)SfwhMU;b=|8UnXA+_J5v*7{49d7@bZ2WcUyS$@Rl z!s>yQ0@n>Sc%H=*<X2zm8Zvb=l`Vg9qEoABgZ)$gTZ8>e z|828V?*lQ$gAS|c36YC&Uv#E|)m@$#`}S_;um3&+6)3NRQJ!cdtv%u0(Z0w9Q-9O?&F6W=Fsp&G;)F`y?{56s=I+LjPi zX|3}J%q@hqQ?}h87PigwrTm92EDDn?!e7EJjUvmK)`yD>4UT(-G#_d0Y z#;eN*M$@Nl1!Z$zEAe{&&9c2=NZc9~b;-OrTXS=X2FITM)*T!5dOk-mM^Yxa+`$u) zb)+zQ0Fv7Vt}Y{I3|!CioNb8}UDuBdS?Fs58r35?t?N~KzfSo|OCF)mU|y3F2e;dk zEc?SXh3t1jcCO)mjeqEG*?@E-cV*sg;&zZ%MSm_b1uKk`3N33=wc#x3vyNr!N0mY; zE9buM*A;Rfr=_Ymj@=sobRI;9P!GVrZf1N)k-MF- zQ;M3}+S+;&HDu~0I`78Q){9!c)$5Q&7=waV0km(_=L@$u_c>qDOy&%E5Cvg=Y{oPi zd9ijDk)RioOC0A9 zAyyV}2o+r0Lmo@(C+CvAb>abgLOJvoKO%yYAGPxh8k*_#&vK1FB4cpM_c>2pH^(a>toNGz$UN?OSX>H)!+O${(HXmb6Rq>YFd3^>qPEI2BC^+E5wx?8!ns5}pcT->-@T*f^@8u{s0T4&^~kK6upE$p6E6EqQY|PKmAqTAXy-A{g5IxtQ}%_6P1HYS$@ z{v^*^fx$vM;0){jl8Bhw6odxi(kK*{h&`WyW2K@nn)~j-*>2fz>QP{qf1CVhJ^9>9 zAOQ6g!@N=zH%TLr>h*2Q+3;jV6go*k4_MV5a&2I)u$6l`LPazSX_E8;bNvX4#1Ueg z3=UaD+7q`HKSB{KcS0@u4k1Sa+KYbdWxEF5L^EYU$up21BJcoI*E%?c)wM3{qRR#t z!%03pbmep$EcKMK^im>+&EC&_VRLjXo|goDV3>cI8;ecs;G{_!bmUcZ&$O0JA(!q4 zAIlD!_8nX`DH3YA-61%MI;+N2_Q@R(Ko9H@R_K|2c;)&J&*JMLLoRG}HoxbtJxrws zwrToA>*okOx>K4Rj3JHRLF>nF)#a{(a55K+IGH=8MtFvGx+XcrZlZqNn*I>GHE8h| z>eDam$#~5~Z|UI7-|qg$!)B|-MbU6K))WXmjaQvpCwQhe z&JWB%0{ph!7fN4Gj07DSKXFBUh?k>mAZ_5{d{Wq^@HcSmVWa6!&jK9y*+XL*O;z|4 zJHOTNH~6HSmvHA0U2lD>NRM za>-kK_|mP<+$ELJBR9Fx&Ks%TRvtGy36jMaFXN)9Y$nGu3WDYf9AD0|C4Kffc?f-7 z`|T-g7*2nPDNIg9i#;to8iR4(U())D=9RdN^CD1Han7vW8=E0G?{ z2O72W{d!*npb{6-ReMRI5~HGCcO5vPMbi7O4$(_;QJ?<-13MqdVS-+y-Hd2qq~7&Z z^FQ}66R+-akQbyJr}bYGc%!q|`;IIb4Wo=JNzwU3T6B>|N+9wL%&*ban(JlA_{NsR zG1)IV@sVu4)*q^NYPVzhZ8$dqsK`#w{qLiOAF!sEqf$Zd~ zGkc_T$_usam|>$B*}EnHb`XW{9u+>4NrW}*J!RJ%|4T01uVRt;LL+qSb?Q&_G$l9Y zy0plEuU$hMfaS)qy^@{&0JkhFeQP6!NL?-90tLFf~YAis5QgEj`$qQ!`WNmD18PpTDWzQ0W|T)sjM!-&5UIkRB1&e2J|Y z%B-`PZtrKW1LSj({9XgHdhVFPvz)AxDRupokfeuT+EM5`SB*zs`kH)5kyNUy3n%f!iXwl97B$~x^B3xnxzdJc?NPU)CN_SKHK0ri zY|WVQa>6&ZDt!8wizn;uHqN+(TEkmf#6M?Llkp}dtC=b-iCgJ`ba zg^b3}VebkKx`Lch`iZ%e6c+Ru`B{@>L9v{}3){C;>Spu*S-hdw@R`G zj>bW~;G$(`j3rOuuR0&iw0@D4Vb590-?OaoOOdYg9}A!JCjf>;Qly3=vnanW2=m4N2NT!(+K|i)@?|&O$fR;{evWb9$04M} z4Q%~EMR@6=L`gtPTp z@7klR=Ewq#EiyB{cF-ky{+4jZzYjnL-t%F$u#3dEENthA{r4qyGPq~+;pfQ~!b=%T z@d43ECOJLR*su>kqxe4afS$&x*NNX|6ggo~f8p&GxA=t2gPp7C#AFObFp!7fiM#f*bZ8fN#p&ahxCKsizIc_LB0FdI# z(YM->SQ}4C?f5O=k}GhXzR4h0V9^)#LwLr!Iuw!lj}j7KS?NI1;nTJ1D(kPsw&CPm z++&~nAIo!}wt&(bCHc7CcW1Ggo?U=QbBFWmsg+JQ3U(|lGYOpa>F*#5)Gog0y=*pJ znVj(6-ryy4qpGglH4cAPdwlVUSZ zxJ^0gp6cT^Nq%}ZySrC6YHc4k8A?d(GvQ#u8t~6@R4|$-j@^&ic%cccd1{JzF5#n_ zVZx-q5$^C&-UV8?kbJtI#K{`xj>QeM!D@0b5dYB*3i zn3($&!)C)J)Bik`uX$@k3Sw9yV0Q8V6PE8r1ofE{LQhgx-L;N?f4{GC0?F>13*1&q z?i`4Y^XsoIHV9ABB8u1Hq)=kGA||f%WZZa?oG4i)G~1n1fV5SwzgxXO84MUB*$@ks_MH#ip0-sp@Y?Bh?mX*V zQ?hlBg|np7j!Xr^KC(V-x#%irl9-`Mpii~_$J>{$AD@xNo;7HuD7TUnyfnY(FtIQ{ z=Xz6VL0(Uv)8J6b>627lq1?O0?xS?3b@paAO`B)^TPDqz@MJHFvgMIFv+RznoL(|b z<=Hqj$4MKRSi}oKsgKLEKM!B1jZr-`i_P}`=3!@`C85XSFZE+@oK8Dh*D7~JgCeu zd}UT79l(U)0_N2Bs=73oAOXGk<|XQoQUU7=R^jug;O`$EWy2HicTDgC)|5}}MnY@X zI*kNf} zOl@v_*MWc;_U?TOD9C$n#j5R=A`-}XxGP$hDQC&U(E^Ur8D64yQ@;_Yv~^sI(;GAz%wvfYA2wO`9$DgoiT~! zw9s|9AWQ&HX`zT;JfiWdqcgnL*Ko_R^5p8(5RG8tRFjpGk!3|Kh_+(2)%(E`DNC{_ z@n2hK)N_}tmk>h>M{gX*%UNsopTAz`IoVq5O{&Rcsf5Y;LyEyJ;!v3o#YvgdM1aM;`$=fKh-vA1qxh8P<- zODM09bCPDUCF-B^kCMEf6s>|If_)0wTn9S|4Kcqy{e6&a+FH>wfun4@1EBRtlwTwz ze|Gj)ch?ubC9*1ed+Ox+3Z>3cPUiv^hsH3&>$Hzq^+$7*F}uyZA$pT^pVEGV0E=QFoNX$WM*71!~`) z(C9xrZ8Ai$j$S_UXGC=c+_@D_!4$TJdtYYm@%dUa%xTs4Pk*5vD%o5l2mrscbmU^n zVB+Fh{hUii4JdnP5O5PsHVqZnk8p`?3~w15CjezR#VS9Wv3_3V{*Z;BcyT#go%dDL zO98?zNnQYd0&{kl$XcSUFvADh2W$k$vLA7#Jsi*gvkUUTaUS|-!R4N;--HWaA!R;` z+n)=Uz7Vm%MQvFWC8NjQX*bK_dh6j>So5UXNo;!CU{$2q%x9mvU2pV<=~)Y+!m= zIHpq9b*>mjLJcLMX!mQqguM>-3odDt4;jgcxK==AG>V8Yp~mKcJqI1G5De&65$xS6 zt8OcqZ*gL$a~H%AqNr_?JW z$BmBQ(*gbm$L@=tEYjjmn9WCTS3SukmTdZluqyCvIr#c`JFN;x9$WVb>Ua?p^GK%I zjEZL)+8W)>VXH*fd6=9&aW*U-Gmjv=m4@_rP9IPYj;5oi-a!@Me)!wUK?%4UNOep% zrr^Oxk*LJ2*T#V^F`Fu3MVc!y48QB@OP!GB4Nv!9OzJ&n)XW#8LceVRI_{}Hh&dsQ zI7&@#*as?|2?^4o&~9Z8q!li|AH$t~C}`Jdcc&Y19{J2pzJj@$y;oY>sV<2Fw>P|y zK`elDX)Z2*wORGl{cI!r{2}7QtG?+aFm7ZexLf7&A)I@%+{p=i-wGzQ#}tPAQ$l19 zvo-rZ46>d(m!)#vU2QE{G9jLRn;V;86@v}xTr1Dy$?mMP70@2NxbezbA~t)){6Qqf z5I0;Guc~M#b8MMS!JK7&kZU-0EIeE*!iDkfGwzzPW6*Vv#{V1R7|edtP$5K%%Mr?) z0u^O>Wt3b6Y^-<7BgOmKN1X9L8`ZC=~XpLQtdGO1?;yD=JbJub-3vVqZ4@jdr(;1F7 z>wEM}Mx2C_{ArhDuvdP?5LrguNK7KnRM+Q2nJQkB`xjJ?O#G3v z3bs`s5qI;~hS04+O^EwsLxa!%gM7XKwm(u-NTXo? z-X9j!=eg4GRURP!g3OhvKgJ#9+|*EVkEvy&a|%6VqY_Az&1m_MEaFcU*hHO2xEp0e zYQPY3rIyP0rck6f`y#gTz4?(3*Dw>(x;#&^5Q zVzMB?JS40B)5jTJT;gpKn#27=IQgEEe5n6D?7dZjVX9cN$9>W9bIe0zqeuGC@zvZm z!T$MF!|egAl8#KjzlxEqwkzElu~$BM5WfC=?UvkzPbiyn)#BXWa4vn80|HcZ3gLDH zprsgOg^2F9B#Epaeayb>qfu&w01w&+=if3t_Q&FbB2Z zYO<4F+ENkWm%$!V+hvBOwR8oLXYD65BlmQd?XLB=hGY(%dNOt&_#6GBaSThLqti_e zs;Pa}%Jt{nX|g$kdiIcO7j`$}H}nacy6jfFLBNb|%?gKBD;@Mugv%9V9)t78>2Ys_ z`3;#LE*S%a9g5?v52cQcQIv->B8ImDPq8~#nZCOZ7NqGW*r@HgKeL)!BvbXbmVizx zFox>@*#+@nBk!QG-}e3M)A2I%D!ntD525|5FbLUbt-MuAd#UOI&u7U}m+f zgXn;?409)@Gx`T$nn`f28T;E=FGU^2HJw$LEx0A}y3#D-aE zUIs1|fsoOvW)(^|9%4_mM;W0C@&aG!m45tTa8W;g80j3<*mZbCuzdh;5u*%ZxeAj& z!sC}$;)o9M)lp*-HKeYL@5!sfxE^oI5r!-DR{bVJEKB`0K#0TupAAE?%`wX#L0!AQ zE;#TAs%Oxw+*|}YhsY91ovDyS_gD0dTj)^0CrNV3d)H)8>37Z9j^nD2Rf8&N_u8M$ z1sNB#8^@h4*gGIyUIn=l%|YTPK4g?d1_8+qmBCX{8K>jn40f!BroJu51!9 z3jcYby<*5{yfQOxO1Y=L2s`}gkv$7Pdvc7$ZrPik0tP8J2thDHOMs{kSM2 zrCdxyVG@5teXyd*j6ssP34wO9t-&%b-eY6EpOyo%G5v*BOEXzSAw)_L=dK`NH_XBx~L zW_`CVW-{nImunq9tw?AzoeG935Sl*T9Eu*yWofDspr2~Y$16(G)3K|!dkx3$y(dTJ zMFg-ww^95S;c9I(^!1f=8OPI|Wj6M;m5*VOXX=1xbjmYxD#0)kwU5dNdWtM;nH18e zv`St`meO7RNEa7X_m#M`s>^eJlc#EOfkU&0|Ez3)-Jo}AgdX8EJOj~m^bK!i=F|up z602^LIVcY*J!bGiJI*x<*;}eIdaqhOXeyeAI?7@B@HssP2|Mn&-R8XVH0Aj5>=i-h z7)j6uJd3AhIpL6n_YobbnI|<4j{r1a4rU+#<;#0}Bw#AWgD$!=!CZ>?#%!{91yJ{b z#`7@v-=%QG%1J+(x=gwgiDk6$56a$t!(72~q1bRwQA(0*U5b6(S8A8>JE0_Dl-`u_ zgFitVtNw~q2rUs7JZq;Mb^w@vsTmdvJmN?y=lM@TAsGY_9zH7z4Ij83Z?h5RN!$W( zGl!^IJ%Cow%$@IO=?aGRyrWx)Mc+sQmJaShTrudIdH1%C$A~LxmV@|l%yINUv>7E) zWr22_F0ktx{u%HABJfSnwaDgscSe_sevt`>z>T%eZ0*05UYgTif+1kaq}JN}r+YaM z6fw7!v)x1-czbYz{#-bViTmf>aObb5X5jlB8Rt13%q;&{9Ya%yHzv^qx{Jo5I@#v9 zhL`@#Nrv=!79Jl1=>(|?k+iQ+pW^BJtPp{CLIfUF>$0d8n9~QW`y<9~t=QjBa@w>h zKr|+o=zCdrlI&9uo)tF|S z_IM4vB=2WOrZikuN6n0C=1Jd;#O(paS}#>USQ7h26qoNj1N=fL6x>|Z$U}8=Wx9z% z1AIOaWT#n127VAb0ueo>3$T8u*c+k;S$nw_N63?=l3csbtJ?HHQD@OcbJ`nmCAueZ z{^0hRhb-C`JW>2&g9CWzF_+rlJyN{eQ%8lC=mF$-u#O&I@R*7SKv6qkZ^1`Ak2e~) z0MYi!B&W@EyI#}QP%>NSe01=>?XDYh74)-ASXDO7dABFkUBZqW&rEtZq&f7;0t2Qp zcaJ6+g}R^b$||hZ)6v__DNapqQYCTjYYWI9Mm=nJo9)Q_$Oit4#UxJteS#-|-u|xc zidb+4y-*AnP!J7CQ=bbDM@{I|6=ghCdN_DwDrKrR+kG~@VsP~Be|~U4U8~GKMSAlGjT!#SY~b&fA0hd{hZ2#&o~)

      SDtZ;i8C_#Z`^9CH+x{5WRg57UIK} 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 z zN)Si81&Q*q)PF>&b!vV~82;yOqs$XlnyC?*A6}wch!r%k_iIjf)Kk-r#k@ zDHx5%Gk(xxbf55X$W@=IZC&K{rYmB^nq8%az87;(cR0@vDdEU4lP(>qCk| z8EMPO4mVS1xiONacP`_uTz(#a*wr4`CT3c^fUJFUdqxrE*H<`09p-m$fBb3e?%2(g z-mk&RSY?=i4b+D`=88__W$|C<>e-pbU8~!*i0ro1Lv=^h8Gl)jZ_4M+rrL+H9V+zf z3|DvlN2pRcNC>|;Yz-rAds01kWH%w7`w2#zYYFJSc@*>4OONssNm0@@!;459-SU;Z z73-QB1ri|C=7=y@ZcY9UQP^E@?~^1RyX7D>mq9MCo)v9gu)ftE7-sW|*m=W$Gaa<6 zKBs%O-F~w}kGyH-IMjTy?U7SjOGvFk-6MSz7rs{3ZLJ^gv${8?5vx?T5v$h5n~RPo zoew#41jhA<3mqG)`*WI$PA18~flE(4@WvCX_8ftTCI0nlGCwxVL}R&?x3F=#Lr@RG z^>Z}}EmT4yYZC~-lXMaWI=Jw&r&vLG52e|CmiKIt$T}4Cojzb=3Xcy5WJmfbU>#dOb2|VvK4D8GoF*}tv6xeC>c(#u7B2|hDxEx2XEl{i}t6_ zx#B)|3Y@(_OTkJ$#^YAsWOU~(<+5(%*}H#8&uu$$^b2o6v+1#Ak7G+nVPqHv#(D1A z(0K`!o_^>e04CJp+mG+PB^LsrS( zb`#Fk1mz_tNl^*j_#@r=4)pA8=O-nXeYY@Ul&Q5aZ$mqN0Bw5TS<7_xil5z)+4We0 zl?F$K()aLy&B2d~a&dvnXb)VTWthAMLWrCnYFr?ixbAQ-id=ZW@OFPI8zp(3XySLE z|6LO=>|o1dD!(m#U)DC$n<;S$_*Hi)<`$GTrD*Sp5~??wga~@UWWxZF2L)}`b?lM! z=sQs6=l}hC877Dtxvg^3Vmisc7{eBtsNu8e-ka#vy9D;#*H64M`EH(!e7hYtyS+3% znVmWN^Lg<0HO>xagpacAk$H>M_%2v$K~PKkd;Cu!bqe-gGhQ@zKq z?xpfaGMnD$t(D9BH9N4t3o8lZN~sAbW{KYDe*`06RnDK`57D(5q!& z7v^s&*s;7H>JzR`G6)meIM6U?SnGifRbl6YsSUOHyf`HePg z#O#FH03o&yLae*q%`}eEt!vjuk+}&YSCKw~aO*@N*WFbDg%j@YpSP&xIDic}2(ML9 zupwh>e|qbOGY(M961y!@X}Oex5I`Sc>j>g%p?LjZrNIbq@MguakHNK^2(<^vBay5B z8BcD&iVFzB3;Xl9<*;y~9e0VoJV*6*Sx*z934dSXNfrl&>`~%V!OG6azq5n&$ucb} z%gILOdZ?&P@~|@XiYSD%b$yR?C+)gb$bLi9ut zOw3`z(}VeM0WC1Y?u6FiLemqjJn+5lIs?M@U@!MHpDU|s!74U~QRpmp zf0sFHEe=J`p5E>FGZZ6zjwn3VR5;^*4L1`~Mz;I!NX%aR>bBFcf3d%SJ39QbwnOkm z+$>WEr5&dULLZzT5hhgsqn-AOWoeVeR6fQ!Yc!Ok?$Ieg!Pd+f2t}*J-sW9h0$-Rk zh*|DNWbu@TDIweeT4_GaV3v*vAevYq{mrmeQjiME z0OlKE?Ak>T24w`?CSxnpGRqMh=zUBsbO|;?p31-~TxkNVe7qdCD@vnjL6y(l)SSME zblJp#Aw`BYWqLYRPHU=O3_5R>O|V@h0)@Hk>E=dv=`p!pPD zk#`rS^NJ{!-x1*TwpcQZ9-GsbkT^*&;ZlaR6~8R%N_MbXjpQAeUI5Hgfif+zKC4Cl zz0@g~V8IY^NMb#r!6RChGERv`j&K3HWn|%}-)2Lu(vVPA=F+GXNU9nk9fBF8PoR-ra1PniirD2}{@w-E?&AR3zug8S}R&0iypyFd2QMp@y zXlu6Q#fJUxNlZIJH6A}^h~i1T{=dR{J^*)AP3+Ve)-|Y4-If9Xe|wl$%Q(SVM~2k} zHlCtPug|fb1H|OQK7+H^pL9~sHn^o+5nDP5OYaakf)Ug_iZrK82EcQ(eGI*q%w!(Z zgy=DWQQs~YZAn2kk!4_jb_V?L$06`awb4@z`yeo$+CVHyTZ>YAu^g#K0Sez#D$BibAOc0w?&wdl^X#S2O4ktiWg3 z!#)`qd1Jzk)JI87LpRQ-zG&esoCM6jtV*G!TWmz7EQqaRU2Gs8EB6n~ULiwg@^a9O ztO$9nL8?{MdVo4X^S&F_b}mNFq0eza~ey)5B%-NyFbEEu~QFKD=HOStUOQcD2hijB!F!BQDAO|(0H%}E1CiHpE!TIcso>Ekbtfz zKxFAdWZmyFub$mLmUM)YeB>Rhy78o>AhhV6f_xC})=1w7T@YJp;U&ZT8*)~xTv!HB zHofh0dTBbQIWeeYH49VlsQ`9m9O{6aC>$h)BO$6#`SdA^@AuJq0_j z_R)BJjR;h(8-#qzu!VDtrER%|M`7k1iQ&=B{Iu3I|!eef_+Ufr-qo$O4K|GqI-iRIMd;c%8vj7yEjV6Y- zmAzN?%3kM;upDv_F!R#($LpKzv|(}#;6tv38A=P=3>*Uk%W*Ci7F)XI!e;S}m-3?` zKI(4Wh#wLGOT@vFzrd2`U&|s7EhqcMGw6k}agk3yDf=jYI@BAG{u zxJUDnq(^p(W6STZM^y?$Rov-XPN-@U&1ij!t={VeTtYA7Bx?pDYIqBmzHEG<uv&J~KB!h(hK zP|ZtWq*@Dzr<^mYKMPMdV6j~`EQ$5CH<_bAQhx)3OC{+ucVK;Rji(Tt=YUqR(4QdI zD`>#>ps?~`elu_?M7Xp3%DOluwBQ2vxBSSd||I_kx;es zp0BGfe|jeK`Q_ik+?mYxkl+L_+*a&E4%663o8*)zQ2J8M=__0Z%3hk0c$3MW=o@jcWn z(sSyylKR!<(De!GpD*7Nh1Z@|ec^?*kk%ui!zjS1}u`nOI2<*YR;^ssAG0oN)oo7Qc<8?`2Nb;5bzeWLqcNwPc-_=g9fnEMEz z$7O3!OD8=0q98CE0$~#)P<~_hD7s5|r1C6BeSHV~gCrh(Qx%oF4bCT?(hGvR6QLt$ z^hJBg_{RbjekK|qcI^B}OKV!!%eB^Bn!0DwC*4nw$!o+F0aNN@`Er#lfDmZpidk+-ML zEcNxMTu~TIlnKl9d2hWYeLr%y=R`>M>^7z`^23+2C9@-R2NR>KE5;&!f&#y$7F5!B zEuVaMn7=#sRcWW-eLK8q$}QJqB`7)ctsD<$z|dH`tvgbyRhV)3Eh5FvMi&sGP@4f5 z!8}{EG-4KFr~4pS4p;7V=NW7_yL#Rsc1(py0i{@~wb6YZC82rX>g9wUV5+X}(nP}m zrzBgqT_A+^yu1G2CyTt8qKpTSs!rYTtWCC#Hsf=b{K6H$Z!6!w;lY&~YVH^RS)*Cs z5lU%XSV9hmYr~e@=cOKWuxJf(8$r0d1PZJRl(DU)HxJ^`;l>PjI_WB*5se?*JwW`=a!nC=#Lx5+qi+r1?pmLDC=@6)c`Ys^67 zYs7Z``fWzud5&1lkt=82($!3B{UDa28*^BY_!m2zA z(nrQl-W~czKX^V!`=;sJUA$b=MuV#>m0RIPHv-&eMIC8`q9vyK8Z==kc+^F-DW4m) znmgAjX4?9ybzbJ;Ac5uk#x`s6OdqnRaTognl?pp`TmuOH^A&-nA*%Y>S@sNMJAyQ}ptQME?*<>vSu8P)Bvc*9|%3U?!F zSGxxeIaX6W0{E_hTM@ZxR{s1y^^&r#jb&w(aGbACht?e}R7QwdTTZ>ijn^a`W#HFS_Wk+jpR)0+ zVrxS**8aPHK)o&9$FchEzYIoyljcA?f^@eg#cJf_DQ)G3<^_e)*O@_Gi>Lms_qLj1s(Efi0w zpW9LL;_`UgcvfuT7DVn|Gyi})bPoHUKN>~gkW6k-`XKq^Y>c(U0^ z8tp$W4xRiSfN=It4HrrIAf=H=?M^kU3_F)>B8^B-MOH32zfzQ`=cIJeroXGS7)ke1 zs9vc7jsr6y^V<+SEzPNmSi67tm}=pvzH@k-`rkD|t8=*_ha*mHMx!Gi!hs!XhJ!Hf zO=gZXr_m2pE99IADMqqH*=)D9a?E*0C9ST?46T_(B^L1J(`?{dIPXUcmoypYVdj{yC>z$j*We_TA;o#q0)0>oX%0FamTr?)#hjb#o zl0@Jxzy4srW;-*LiQ#q^?5x{rTi>5lH9>7Sq z<UE>oAjNuuS*z+vYrd+s?^ zhM5xU8THpCT2#?B=7E)!{^Il7WIm?ZbDT%NOdr9CmXFY&C|m=<*=rgDK2)%<#teF?6QNcF^QidsAGD61TI=+sVx zLt2QV_q!M`3Uzod#hJez>i7S+Si=oj#G-Rff2>@?(5;+3bya2~vPU)}>}4(abbr3mPPyxc zwbfVw{L`;CrPRydY=@cZIw#*GnbNXOZ9=S}?cX&pcF8js>+Zwtg{qJdlch4_mBR^N z(Vx}8SbX;{JN7+*Kcnq`v@*=>_9(jo&K+wPGRl@HbW(YaTax%Cu1qnrmPVv`2w?3$ zmbtLx&);$`sMKBf#wF0+pKot1hj2*UsvON*+#MyR9HXMv9}s{fG8jgll{pbe)?1?q zPG!%rz%V&-*XImOPW1fFpj>z1_RP>+_o}OQN#bmFann`DWu;3Ix#Wb4NhT{V3_WF) zW5&}yRfee%>liD48hS$UyyfA~-+k}BeZ+agqO@<*k^}adzsE;628tkza?ZII1@KRv zt7t2$PCCqVs?2}e`0oeKwC1ZlP{rlYIe(pZe>2KH-3bLni--|T|N1rK4~&SzT_v>h zam@fe(=O@22wSmmjLZyNeP-y{yRw++WH>f`PoeAPx>H3Fna$P6CLXPt$-C za>U5YALi7I%7asfc^8#cDgFWOkx7tUip|w4$y}d8-`cs?l{l}!(rM%B+y6E)9%;l- z^}S|n0{EYUuG$gC$!yzRAiolD@_3@@rQwsixHF2-0nV$yzosGq*{N>TfRk+m7RW`$HDk1+a|Z5mJ( z|1E$o4LKs#lzq5cymUdeJM&AM6}#rHspG&YaQQbJ2N;I|By7+r%=7tOj*6#7wuEKV z+3bNYj{4{!l3Mp|D)O5uddODu`qAk-MG8R|x;NJzOCDvX-xemjhcEAiYo-7DOg9P2 zRwvYla*ajg%4&?lj48ws&&ejMfswTrK8hR*Fp%5ijDat{yO<Re9L$)%k z?+Lu1MB~fw^}{&3m@r9nQfKS*cJFh5Lzk#jmxV(mQV2h-cm4qxm6Z$In@8BLdI^Y; z&zg%=rN5j`tuYu^^=6!y0zvIq?b?^J>Ks54yUsW&`ZimBq2;w`a(IsV zdL()}R;PN`GgkVE5tR$-dbg;hsgadccXczBl)89ZpX#QhT2}6B=D_b_5#R-08q+u3 z!%Z$FQ!h8)5&Nybe68iWi>KuM`pbZf)oJt*c0@?vus`4JULE6*^`4aaa=*X50k#S} zwjs3D!Sx-b0mI6{hoja@ZF5DyQJL@K7upk=6)+MqX|F364&EMhTWwV+M%Xut6f@QNaJq&$MePy$6ypl&$+-h6AY36x0PWu5L=U@jq!1LmRtM~S0sXT4~z(eUB%-bwdSQN3|jrr^f8Bx;#BQ0mZo znvOPiC+d^ASolKMGK@if?d4&_sR-ki?t+wfqq~ymA-lOzH+DF@R;)?aQAs_hX8fYv zJyS=_NsG$Ne{_wOvrE?^7JI9HyS!3H@H9VFPSpGdWpg8&&E5fLC=aaJu#`U^Y40_i zk>V+*KU?OHduBRv5o>RrM#hj^U6H_U-Pby3jJ9*gPIrzaCWxzZoi9kGh z+wR?XqCD|O9YY^DfrCiNT_{eKblIUNmGs@Qw_c!Y~4xCX? z`NA{76I!p~2@j`r296yWWzT9PQ_E5UjzSeGRJnfmyvHuYJm8t~UaM(L_0L!FV;R^z zLpJ}^@-D8bKdWaTb>Vcan()8?!GHG9HW-{@dvYv->i?8TqH2vOzmkEI7_=--|%*aR1tK^zIQ5JJlFh{wasm( zR3uW;4x`b1wh@htt{Ui%*b3)nE8WBQiH`tjj-$G0!LH8N;)SK@?bUIRK7V?Mp~)e) zylzsbAnb=VO&m#azzFP{S~!bUw@5Yb>7y#sBv&o*QTBU}Eof{Y4tlm?IP%p|@}eQS zh6-4s_6m{m;kNGLjvNZJc^4Xe<7NnzI`&6jvl>%i^GXRkx*I$S{f$qdy#0r6@`u?8 zcNtx5>R@FUIv_xILA_6Wy?FQs$O7a~H7vK64cJ}1}P+DiTJi1(jh(GaDH_rByjvN~}j);aH-93Q-2^!oX z!5J*b;I6@g41>Gd1Q}dT=e_s7_k8F47@q2;YpQGS+N;)HJzZ7k%5@qi!w?;fY>7`i z_*=s$o6aNGlQlj8$$5vJTR@wG8{zx>gr?l>)EU29#^>~H9Vsy`kdKLeSa5ZVuym~% zSceaU{f(0_u*3lZH5iC=MqsE}A2#P=44%mVG}L3IAF*am39KcAO$Q{%Vm9Z9LyL7Y zfYw(7w0>s-7{qSQv`?|oBl6DxM}nUY^s4B+fcR*3PtcFsU3UY(H(KX(*LBk9H{iz% zOJepahGW2zM}Q?QDF92(vT_sL&P5YvOb>AxiRPu3P>fg|Hc=VfznuCSJywW8OaR1( zlO_2{&jKQP6i4)h?ki$qSc0Sxmgx}ijeJ`#fY2Cpt;rb;Sg2W23iTz*^%;9h;BR1) zNSuLfi49P*{3epc0pMCyAdh_Q=H^BX5Fn|oH@T5%L7yAS{~6N`Fy?56Co6&JhCc)4 z$TNVq4Fb7nHXXqKN$fIauB0X(J3j=>4)%!Ag-81&VX?OWINap>2^eOtxc|k)tz4Yd zn8e@Fzi-+KVlSgwT_wJ)Z4g+Bv0IA(oe4}h8t50wF~Vh^O$hpb*w4ze(!cNPwL~K} zr3Xb)js!*kk>2cc+UDj)3e?4%iUAPZ8$j^3tjmh{@IeJKV&Y{fkuI5}f2geN{u&sQ zq((++_PK7XjS2pu&rAb8UB+ag6K50wNocN;c@xP!ux?U}h2JY6?NOnN1yBayKS@#( zdx0FsPm!XGL99kHOrC781ivN{@zHR~u<3N8q-9HGIvz@rrYx<0}v4H>} z#X@2ia5&?;HS?%+YLV1Cc_d=ogl%6clS>y-a#1vww*Vi`aqQ`jBLyG;7oV6ouWwe$#a@&~f4< z6m}B@?@c$s_8+r_u3B0SsflhzqG=R8{cDK^TE4S2ZC^(N#%q?O0qsEq$W@jLF?`I9 zsXfGe@v7b~0&GEH&D__o(rysIP9~sF0OeFY1EP(hx9)G-)oiAa+%?cElz72Z7%-!e z+#vzrB{KAHVsdI~ia+Y~ zY?E(HMfaEtWG6ztQXhbNDuAQ=Bms$gj+#3#K9T_erZPm|0Z2CgA=2Ft7FEP1S1wEq z(W>GwrUXQ{%c7ox&YJnUeeNsv+*{ZZ0f3r-XT>%*b?AYk^rW~f1i7KD;5OV;Ry?D1B@l>y>2c6 zjJW019gp>m&hJYv=)OY1h|}K4fnc==g8$ zBu(t<567L!+?t>msgoxoe#$=TrFGpvG6hm_M(QnL*GU>4VBU@tEg+^G@sLMm=Lgbc z652ykPgXrGFc;-5NCD03dAY^&prK=g_MnS0d7j%aX<`oZcqW}NVrA99{f2y zPb4)<6(?QT=so}dC_A98KERnVYOyDJN5Idm(W$}&0Dy7S(DrBi8pYU%Zu5 z)ko*0@Vg;ic5%s_`<|N7++HA1qk(B`90NcgJvsh$b7VV!E#_XKE0>ECsV2T=e~hto zbz4z90ni3eC$N%8gQ%_*xU1Ln1{Cnrx>8>@Nw_yf0xh=!EeEh~Jg#k60P=(cEjxQ| zTf|*hG>*_$^mR(=%@#M}6}4hFx0q4C`5G)ES=ZAbpj{K`w@ue}_yBFMX5V%A-b+dM z%`nm1=w2ZPsLJTFMdo@M4|LZ^25jQS%0d536pg%kLwv)m=`%2U9s*>kx`q8CKsaFX zM|8YNOj7odr}1~ieQ zVz#06#m;fqz0zQ9CLkQ+E)CW7^?L!h9-Inf0M)=`>Zw4U`+4=A;YtOE8o-%7DiiJ@NMkCQ$egc6!JGcKUX;{X;)YGSl_61i7kfTB8iSj^vTpv_Ift5C$c50l(iRhY$Fbc4F1z?C#nrBE+_r)o39j2DjhRs( z2Vg%rp!Mg}{+|!KJ^sD}(&&k#*X*((<8xo51-}0WXg1i}*64H7#2N2VGtPxQ#yD&v zEmsb2SEfGcUvR^|p|8uuxdAB;OXokumQz38X1%D|EeDXs+%pencJD!5qYr!`jeyh` z7#48dGX9!tmTFfRvAfQwYT!7q#d&_&Z;e0E9p7eABNQRG)@v#IL>+8-V$QP*yAQeM z%!u4wtM!Xk!3N}qhp_%))ey85MPOW3g-5Fp0MbFlU~e>0R;49R?x$7yML@Y+=(h$m z9L2<@IW^6urZ>Ol0AXfuNYdz@CGiOo44*Uipq+%bt8|qN`BnypteShE4(D@M- zBr-xGSGJxygW|YU^hO_O&mjUgF)ZS9?#DZ82;E@kLnzEi-)|sb94F^hoBK#f^`a*t zb)rIaa|%K&UVa+0HtR&*=(x~y)54}(CAxX8>nyezR<7zd7!_;SXySKFm?c5IMc_E! zau(Bhvy^(?7~FC*>>%JQcDPV3@z8wOVB!O9s1pxbhU~g5`5({2I(K8%AmoikLC_S# z#>(>h#f!4>Qwidy(~ymZht7L7*BVv9Ojk86wL->)q?4hG^grf{IK?e5m#3GDOTZ;9 zjDHFw`sR=ij2{Vm)wmgi{_wBi6ryt@7a-4nKK;DZ)%QO5qx}y~PO*<@j-V5t=o*Nkv7g*~|+CKi3D=|GHWV3R93fQ^nynVm0D0MlMDyuV1)Y3yO$}XOriWjN__d ztKnuPfD;Z9y5wDfchCj#sqDzU#YoF#%5BiH(SA#qP1yP>l1Mca6BB1CHz3C#dq%58 z8=kQL>O>~6=36^z3)Hy_y9MF=+sQL)=_|RHg>xOb4}o)emgk}oOr^EJd6v@0QATr8o0U)vQixwRtIZ8fRV?8yo7Cp#%N;H{D=X8c z;mhG(1}%R+`REhmQ`%Z1vIN|`_h3s_>*g}sa^>>SNrQ8v$a2p9xOcqIZVO|}`LY%v z8~Yr=f!)!mp|yuvTS*b) zLG*>poq5n$5L?i7e3HaA%9eoarj{fy)u@ zl>kES&f;P0;q)=}Q97iyvvT!V?aJm>?r!kTEEEMzubTafF zWEJFu&wKA3--!R={!U^`sm@Vx6qX|PtM&OEc{&?w)F6N=|m4lA!2O18Qu1K)rratoda7)1~l<<1&i*R_goXj}APx%ZNUg zeT)Nin%hqcA#HQWGmq2#R6j2BI4(bdACZnFq(|bD7lQLUAv2e9cXdS#rh9qpkcZpP z>Sf1+Xqie*Pa(XA+T%hgJgVD)T0)C6y7jjtl`DBpZOsfKyk?7SKieIGF?2`SFc$n8 zW_rkvvG5D58t3_Qio~WPl4j28x0x4HrAG1G7OJfyuqt5=t)TjaH+7N(PC9J-3QCkV zM-x6MQ3XMTg5!*KH3)Bt_&FjynU@ufl^nn-hD;5=-W-E7PIU^Lisw?n0S7D#8Ws7J z5Kw)Ak&Fl!Y%8}On$aNR5EopmFZ~h zIn+DR54v69bxMtbC|I{h-l`3JFE(h;I6pbQF)O6GW31XlO z?<~fLp>a;z!|s_O^_y_5~wn}BW`W^4;Iro|*@O8W2;oa`REq07WL%NW~$_Ab5#1T3BU5^A(;yL+&Q zasEpp_xik4BG=ZF36|eIHTT0if#NdnS6LMgTMNA?TM*(g2xgRD{rk?}bD8Y0J;7u% zu+316el@G;*g+KPy91rhm?|xPrLw8-`YVuag{f$veOwu{-v*4yX;Set3^lFdF_%NG zet!N0yv&E<5u+OvJDzEG?>9hAd0*3=Wp;mKb$R5zv9vKkWwqiwiRWWh$0(lW0`%p zwB~SW(_nFprj0yl>D>8KcWM3kV8eD*5A3YmG)^(oUR`==Q3WG-5SFTJQ9tt8PFRF{ zftv{$GD|Dy&y2xkhFU9HQ#^lnlshXUoD2~T;-Em2_T7oV7VBz*XkwVWv)jtq0bgZM zTLP=VQMHwF;kYy;=4Xf>tY9VO_-qiNllxOZ(Z&gS2y1J}ADE)36#ivD*Q!NEKrW|T zp=yZYUBRU5+`XYVSe<;&SFAg4Tl|OhC+UZ}FnesVcMt6}{?+!55JnIYm|0unP?%S$ zG(rda=dC2D4vYrEYO!cBZ81E6wWxuyXV4&+Aif`p?}L=oOguVI@@CUA$+fo+SfpQ3%Bb~rfTr%nM;!KpfJ zq^v{b5wC1{r7c@YZbg*#u?cP6fE0uZLIL_Q9rL-R04xFx)poLHE9O$?E4~dL)p@3{ zxCw=M!9b{`aoVODYNRE3rD?XsFxF~e4X5|#{<%WNbNTg7fyhA;Vmu@afD1Z-Z* zBRO>_MJAz5Qzoog`BPYmFv6ZDmVwL%=$COxvo0cTN9H)%R&^$@)GKG!6U?g3Q=b3F zw`5Y)K@jwcEQvSImVHt=e;KQChS$U4a%Ls`l8x8KzG23wOhb5BwCq6NBi5R1j0c>; z#|VC|;Z-rL2deQV*M8{`F*64~&^=GsFR!I7_r|Y}n7UO6K+k+uZ$0JwSx3p>on1;{ z`!i4%jp4Jwqlz_Mj!f+O=Tpk%(2iMA19)lZpZj8FS)OX^7nQq=B-`~-FxC=MRl+#1 z$?^BHSx`>77#FA!9Kh>g>*Z`zjcb=XyH^#Z4k=r?a}z9a{+{C1_v5B1L{52RRBp;`^8!`GYHJ0C&J24^7B@!Tmzc3V5QSuX0HV)K2U}_82DwbFdG_ztF#HLb1_1~gZ#2I~@mmEWI?EB{ir=rGM>tUZ-LLQm>;u1+OGeDu$y0-Nrw zHONDiMok`%k8f__Ol>)4(GcX}QBZrIa?Yjj}N3=Wqrk4&#`G|Xo0aQjMl6>7+`qO9Ao zeYVQ(;9VNnyM4S9AfmC-QN7?glb08!q@4923^jiU(uXLzpx54md|l*ey|*q`@9Cmi z;rkmVhJGb%>VekU68(*ADezZGMLrQLhPWZS%I(@b+9O{v*tithGi}oZm)vj8h>>Q2Q%#DE_cZF6Jeb zzZ39lnXI*T55x*nslkL!n+sxad9_3=!({D4mQ~9# zjaTLl;o`dUH7wfxQ7d;}Ni6hkj)OgaoW*{T<*G#QCEPW=pJryL={u>hKSKCt3e5Vu zptm<7r7*r%K0W^Sw6j3o3|53!_P&Fc|Mh+tfg{TWv;{q$*+uH*tv2*@p0YQdsZ_yA zidn`vwZ*-j*iMcbsctp`;?MlPyx-6M93m{ovV8qjft|}@p|zOoYJ9Fx$>rz$yp~H> z8{=_2*P}=PqVCKv!P-!xF;%rFW?@(uo)fy!Y&UQ^5qQlg-bS?@JMPck*}Qqu&c>d{ zb+$s1szy>a!NzqL1;_8{_mH~vzku4FT| zQW1y!8zQUq$4@C9@dK{a3(T;0r^yG2*_Dd-Tw~SrGagD!@XHq0yjnH!`yaBQQSWnoj#;BP@8RIItjr)s01+_dwF%WIzv zfr;T9-^)s96(z6umNlq&d)B?@_h=GRp5es=ZRUs5g}s-tRaKSuvYhklvBS=%*&5r6 z&JS!WIaf9qA`7o4iu`P*W<1(?__i+#hX+FBj+U#>^oih0g+Bb<0p%?-ThVasup*%q z2`@cy+C3;E!uatWJ=DnL?oY+vtP<(A`AT=I_3C%^Nk3BT5fvWpTzC9Ufjf*^+3(sk zHS zLw9-m_C24vr4H&= zo>O+I@3b)$C2fD5@#7FXV(?p3Qp`4i@rq*qVVU#kl3IthzAwZwDX0^kcV8yTSaGl- zL0fSnV$OmG_jKJ>$eSXKSkvSQcK35;&BJhh*Pu|XGr2OT?bd*qtmB-ZUt-l(^RViW z@tCpdDFe}EY8X8u&D7iPlQcZNj|u5$3~UiF5*6__AGrXVz(uPKibHfJ%hPB0+vnZ$ zH!AWwy-(G?(&999 zX*GZFMuT!!V$;UqscLZl^M=mUGadGo>>Q>_Dmf>SOIY0J4THlzNNgwdPoXN&i8Qsr zfVwt;K^w)*RqdMRm*a)kC2LvHCHU?3=K^Y*saHJOLuGspmBI#Yp(;+zfeXuvYPM{- zIuwvy!f3|X4@xT5IwF_gnc<{k`@ziy%7ESJP(qvOVG$(f(>C1>-<^h9{&Syi22mxj zY46A`)1N656=@C%o%A*~IiS2;FN5}4b7yv)-0c>RwvED;5PlX-VQQ#>aE^%q>Ypm5 zJHGzY2KS=03<&LdWjdKnY=cP_JM8Op`*y04-&xyIFx30po2t^WPNiQfF?bs^uhTA8 zaONyGqcgJ7!s?`^c6&#W!cseoc%N?$cWg7C0jV4uQ}!vYc56JIV7pZD_XqJkEj2YV z+t=-~4j$j71=hssObGLsh`a1}43!?{)j2Z9wWKhzw$C2q5yPlvGc$gxqjuYQg#)0)A>&g|<1xPdKGuacK`yevvpzN` z)ulgO+rJLym%;`o2AM8fb~X`$uC9cP@)`*V=>?Ku4vR8vQ<;+W zGbAKxWF(|lz*$c-M>}&4Gjk75cQXr5c2~bxO=E{1&euT`)lHsXpg_5L>3GrA5sfDcjZgN&Vy2x&Kx+Qp&U;MW! z)YgBzms5m1eFoHDw5a|&(Zu3iz169qA+oPtB6q*pvhwq{X_Pt9hv5{F0~+$IaV+sE z>#xbXUyD0D;wapk;)!oX% z%+tyeaEq4C3%8gnFRU_Fd64`V%NX0vnO6+%rPquG(o~hYFoj}k7s`jVm^W%nBa5$w z|AupYh#_<&jKV*k(&A&~YexE?4Mz7iXMX}3Y5_jD|7{Q$16F2EKx0lSt(ZOU@s6%o zQs2LMc8ZJ={RWdr=%odHt>YFu#gf$J?32L9ud&mkU2TDZRvOwk!AptUV=+dq32St6 zM%Yg(1lW{0&O4mh91+Se>S}4Ewb~y6C5-fOL_xRIOV7sBKTruJ7q?f(qMx|c4uhvy zgoHvawJtfLezr_7jtO^osa2?;@ughce;oAtEv@HGA3#_gEClFKGP zUdNp--dq^nd)LjvcMC{Df@4G~HFi;B<^i0~!%}SxA#`B6ZR5t@A@J`rVaZGq{QC_; zbT~rUgM;zeq{2g(!zjZe6>~JB8YVHRF~I&q*)ga^@8rG_oyxrk=G^`AP3Wes?;Y+K zO}C;sHmhV0m6_mrp#foxZ0K>-jExmnzMbORgg=F;MFg?M|aV{KM3 zwJaBCm2OleD1;(4#X`c=A(0=EUX4zD`K2QOjWSo?ni2yKpr|H=$C(CISfyD}2}PWS zzKk#n65%8I673g*>O32Id~-9uC0e2JJ6gyZ3*IC<$(1{exjt$8I*DFW@#R-64~akD zK?{fS2jw85LwAEOj`s}k-v@3MZGAmsHvG<9M>-xmq}#>Q$3 zEbkF&xrXleV@5`t_?H7+ZrI0jA+&b<`qRzGNa_&hv57XXT7v*J8tw?q+cF;fqAqdx zyHD61Sd%he$1hy0zNbEKLr3Pj-^}Yu+=_*}Nftne`SnmN*v49=5d^tgMr)#PJBTm> zN>M*IgXH4&jr8KKI@D(AYMG&@L$F_?HOGXR=~yc!6dr7-oI#sDs1~Sq>+~80=uMtu z-y%i-*&(oI5r54|E75Bld?1@AzCi2VK#w( zi@EGEH}m~6X1f~edt!$YzZ&T}QwOk77A!H?$0M^J*-D;;JZoW)FM3M(f!RR=3*R!`E&;BQ!|jz*%in7i}SVGR;TYY7cydPw;6&Q_@WcOXkUyI<&WD zcMaBHa6uX_o}Cl+npd6wKc_3ofx549(VXY62E?5oI2w0K2u@} zV46!5cJZKp`9NbWX!`1@N1PG-)ALqacgcHd2JY=2PASRe{3c~f$$+-#ddPQU<&Br+ zibM~Neox9b3InAaMNn=SFZkxn@g=d|<&V%`%*W>J8$xuA#x!Yr&KtqPPe@Pkt1D`G ztxNZoQS3!?nCuOirIV=sv&|qGW36_cS;YtNX~7hf=#77GJpN_w$(+`}UhX zjFwBu{6Jl&NU04o{hcNUQOcbR_hpeC`C!mqLOLXqq3}}S3#!!;uf-?iseyn(iF201 z9?Y_}A=|`u1~8eIg(@R#z(c7V%5;OdhMk`72TwGj>iI*1hx<}b9OQjyYaM&37>%Lc zI*BgoIHIdh5`5_C%Hu-EzWl2GIWh8c!l5lT5sHnvO$rEVuH+5Cw*!Wc=~Xgf_gOa z{DThG-PdV+b_`ieS;1^Fuiu3zib<@maJ;P*u!O)GoLy$}LIIU;=s7=HO7xB)Il5q# zbLwB2oai;hwHgvf;cu67fpIT(Dn2nM&= zR`5^gO;Ms?Xo{b{k$Nvt#ny0AcbkMWE@Pgz()59NQMI8W zR@im##TC`b?QqQ9;CQ#0%?GX4OAiUQ%jQWlNl+56m2Sjx`k@MMW2L>v;qjtJ4cNEp zPc<*2tTq_yICfaEUZAuLMqbsm7YCPM;_f>I8z!NC4og_AV70c_kV`7c3$prYiU!IZ+-+6d!UA6kaS9Ix~Q6{1)E^KX7Sl5BHVXNNbft+@iG=Je*2rtI@ zAs3ONm6G71%HwQp`>ZO2gA+2r8R_#e3^u=)^0mY7%JJ;Tkm&_?^NrZOeAbR_zg=gh z+F{{+=s~xBg^~<`_3M3a$wE@%8k?aGao^c{ha+p>l1rbh^qi&hvx}>(On?s`&K|?0 zbI?WlI{|jvb(r195S|@xcO+9=q%#oXGo)7udIZ`@G=Jq^ z#8#gi40jzgUh*0a+7ye))K+)acoY9d6xP}QNkT6265BWOds9>16sz-Vq4&gfnudSe z^yg5uCJstaD=SjN%^5G&NL~z+WO*SuEb$fCE#AFqaDn z*X6*T#AWaf!v&s`R-7a5_QMa2_>Aq!pYB^fUf}*ulJoJ8Q=l+Fr^+OdknsN}Z?H7; zGy`}}zoCkYu~6Ldu5OzO4F;Ysokkw&Og`}gv9;EV=RP;h=3O<*4O-Cf?)$5so^ifK z#6B*J(MAfo`M&Z|uWzbWm&GN5MS^bJ?;a3$=Qks1)60z|gS)Wl>GS2@@;LGPOaH6u zzbBND)EyxKw}+k&?*6|1SI(?KzJWrf?c(AqoufrC4vyVj7{_i%aA(I8Zvbw58g2E& z>V)Fv>CKLkt9W2@bFf%vcCf~v52vnU zMZCMVt+Zq-DEmsR`0wg(z$qS*VmvTJN9dawelJ}yBbTyydLPKaDOp(!C~*GgZ1AvD z53?JWr}D-YSYt>C702JrM6%b449=nwt0G52zjiqFsy7wNcVi&Al`rC`#!axmod z|38S}34eE5Ur^_fwmca%t2jG6%RFn~HyrUU>!fy{oqXI;ux_8-rDdeJ6)3Hb{=erV zV;QB4m3{g>b+L@OJo{Pe98>lGQ~ES-&!!s(9b@i zEQ2V^u7-3RIJB#A+O5jqaEhn{4%0L3YBGon=X^6eW?IWcoKPLULGmGq5Te|A*v@rd z8C$`AY;hw(%V&X^h2BNfuYlAsh%-0z^mR<}h7psB*gj~}7WF^QCv>RXYx`M89@R)5 z)sPQ~DgL>5!rT(5IEcPE#5s@Mzlbek2sI!tvWs6ip%=5)W6@_ZbeO^_*WIso6xAEC zC2LuWM?ei&)Vlx7SN`Yffp0(STB9(#^Tb1poU{F5_j!`H51Z3B>kkumW7BsmC0Y9g zBSzG3H#IhVXI5T%43l8#=FUz&A<}|lymJF^S&nYacVKT=>vV@mR5Z z1-`bhM4~QRA$;r#7)U7Ja@+TsP*$h~q`#%he2>i|wOHzgs?UllCW<1Bj9&BeQ|3ob zXsm(iA;s{(t7M!8H?)hV$rHSV@A~AkbGHMsRoLwl`rOvxTpNQ=V!ZWc3r^{>hiKNc z&i8Nu|KOv^o6=sBddfl8Kh7h*f&&jfUZXjkvWPvi*`E^`2;0Pp@v>{R+L@y{z8LvQ;6sU!`wN`OtHWiu>FU>x*B?U#d8h~l$@Td&VKJb3kYJ&cb{oGR`dA{HPcnK_xtB%K|J#sj{ldgVAjYsMHHS=!JY0!8 zb}~)#%e3x!*lQfD^!Ja8pG1It$%98Jqq;U$dwg@~z@uHp*&KGKF zk(=a`FR=_gOJZV(YbZQO%y?);3TzC}Nog1%f;qp5f(~WTa0EY(UQ8Z^4`I{9ZHs6o zu2VRRTA-jA7kI#bT7F6Amc@LoJJ$n$A@Yv$S!y>w>l0&@$aB8Xzb|lTsxEqb;e+Jx z)ISFCpZ4(FiOH}&rzbVKX2g5Fh<-<Tuw9Gw0~;tN4&dywGK3 zZ;BeO@kqkgo9+zc0kzs0^xM6XhJRuV|CoPdA!76EoXeIl;m*l@_FPOd{@d%Mb47b) z=d0);<(H&wze3Aab8*qoC`ZsU(5q$`wCwr^Y=?}}jsj#ifc-hvV)cVk3CG$nW(Ya^ ziSDvtc)OCZJW; zPsv7)XDGb5!Y~ZwK2PRtToe>J!R6_9@^co~GNpsa16v8;uYoLSC+mOzE+l?uC%Qo^ zi&ti;0LoZn*DRNM;gv2$Is1ocUlm!wg|f_uez1v=Q(VryZNOb9(Oi0M4_CTLpDsk& zKpN^*JR|V8feqTQh;o9Y9MqWqTnQ^!m&IbW!c^U>HSuO{1~aV8k2b>Ky-b4$il%Jq zR=;-q{hZDyMNp&3;5(-}E`yYcbXUUs=0A-ss$RS4~r9V8GUW@VsW^yf693$NGaL;SntwdY}D=$ zGisg%Ig_@OZJ4V!CLna89Nmm_)oRr04a1!>%;s19`wqL{fFbVl3I`XyucWj3^t;;! z`FlsW;SRVSzF1j#ED@B>17nN7jsQFHv8BlsIWtC}$L~^gd^Yn^%8!rYbU7bYXjC@S z$$Ho^C-Gb~d?gAQTkrDeWly8V-^9eBwa$=& z3>hhug$5LYFQq+wUMk4b_`Y~Lua1Ua#gKX)TJ?-zdaQhK(eD9^B$|GKvX=!FSJ0j z=A^zO3l^HAhl-mw{i>CYyLpDE+7n=&c(Rw%`+`q$1BW&)N`Z~sPRdzN^HihMn?!<} zCs~4I!!2AqFBmX9O;OuvH?8Cs0)?drSn};+J3~ZQLY^+AkmAakW?Q}}ve1OD3>T#) z`m;dDj7iz-pjS0kBGpM}dT$^C^@I+ykb)F?oBDiD?sibyON)x81#`V2nRo1F!35h@ z^_oL^8Rk#fE)~i(pXjN>)D#9Bwgt9gjp8F$%*mS4;c+M!N{Bo$#Go+4<_SJIkX_<7vGx-Gz;LSgRz7w3X9*t#b9(z zLO&`!17eM?`>pr7V{!)1(I^T3mY4bz)}YujZRt1^F}$?9-YMoQ-3}XhLpl13uDSwF zl-TcK)g=PWiz3!Z4O9_)UZrE(7=_q+~1_8z1#L&b$`z z8fCDAfqxYbBByrno7?9Sv0DR=4M}WYa>F=?S?)=QS-Z(w!Kj~-=k(ipA14*)%&Q-} z=_`%c$Wvbvrmk)k^J22LqDd+_&C+LwGxs)$P;-HP>lVG|t@7{8@mCOjK14UMoW#5^ zeUjvRAS9cep-!jeBGaz0xHT)06*kuLh`RA36=C#ST0+e+M?{_}CHFmjQx57Xs_s5V zQGQVt7H%bPC$weUWqCp(8ww~spZ#s-`*NIY6JFOmzRcsFx%#%5n!oDYqf`) z>^b*W?n)1b(zcR0-i6Ro^nR0?Ayfz+rDb(QB7R(qKl*R(nPigs+FQ@e`YohU%$4Iv z$qCcqaN8{JCAp8pahkFE7>wr5zxIA`-D$pLwzHKtrgUny#9(ddryo|w4FS_|^_yr}lVy$%F`PXr=Dxs?KO#caSRuz9+#RK=I8%ZIA)Y#zd z-W$B&sdAj4e6nu!iw&8XF}0s)pUJc%E)H6FL%o(ORH(_;5!!TRPLG-`bi1!gbBlL> zM-HHNr?)Km&6Nw2UZ3IHw~Chjk5f!*J}%>a0f{J2)>(kzakDMm*e^rTb{v z_0%x;j(Mr^Id|o(Jaq(Ixd(UDNi?scHm&a#6KQ;lkryX$mnD^;J6yX?!0*rGR}}bI z_p@|aecYC`XfssNf$|GWbe6mnS#S#YdKS$7&Q|JY?6d=A;7n+@;C1Qs)(7e^&S2yj zAF<=|<7?$I>$ah=_{_gdr3#FkT^G$b176nsp{MMZR0{nGkB6y*SXe!FZ^_~5Yyn@f zI%fqWnz>U{F`Am2h{;o)Ig=iI#@eorBfG!ykKnc`N*WjAlG2fq|K8}#6HNHS0JY`& zJb7MItf`}N7|u})n?@gu?OP`P&c{_x`^MAFFLQE0B*ir|uzZZ`4Bw}-+{^Gg%TCMa zlqHHpPgJPjinpw?rY&;+l!924 z_Wf35;eK!mGS^jptMOGX&fXvo%V|owrD9-Oi(kt-d?HLw%u@K9A3$Z{aB zq36Ep=Uhz&cg7%Q?U?qLKfasKrw??$p{J)-s|9j$6T>6%|#EZ-tDsGrv;amcD$s z`qClc8>B+RrPGyUhlzOvUavJsu=Q6)BV>bd)qHd34tIXDm(itv5Tjr!gFjec_PWTR z?uw}Mna6!f-`LIUqvzHBNE2n-8m_NI_7lSM@fZoO%1zR zohWII1TxyY#&h6B>3M4p^CuslMHdPm4qO;6^+43N@l)gd=fCJ#r2!BAS2vq-S$-WM zLY>VxMmRlT{T)ZENVT1c!2~mRS8%nbN}s~TV5Lj~RT!>7(D?o#f_iuQ5O%)5eY@EF zWOgAjK2b8bIQ?*QyK}OBmBbx1m2xG(k;jyOcQ+`J(k1aIyu7r$lAAYyTV1kvH+Tq3 zD{o%)Js1vVxkH@qVFPa`JcX4qYU#q%)OI7uHE(eacod(Y~+x z&V+0+vss>)nDP5s-v<7?FnWJK7f%)Ttbk-}8s^36uUB#JX=~|g90B>=_GMpd`CXXW z>PZ-+mf=v*c=)}$_k-7($D5SxP62Z!<40sp%xoWX+ia&{S_yyR)nje~f15re@sK{U zc=KOOI<^b5r(*~NsGE#hr$ozQ05^H3?~Pe~d136GvjiO+X^3h0h9k^{Qkx(9F)fUF zcZ5MvGo;}~vBPh%w(zP7+!>VT@REliW~2lE6rV z^iS`Qk+~>7yzgnJl_S@d9|k8l)c?-ZO~QK!C8@y7eG{jI`{JxB^aF;w`8TQ1TAJ%4 z4t~kRi4T9*e*Ddn`8d#}hNtBtPgQI|}-@CoN%!e(66X8dt7rXQG*9RN?KKs_#lppJ{cF$2Avx&>oe*B)wuvD^j zjf##P|H+a$7PdR)-)9z=J|H?3JN`n+wAzLt+BB}DQ%Z@ACSX$ww}MR+iXn+!lJLGD zAx^dT{p5`F>q^!*l}HKD=X-tgPo5~<#fK<^yA^^WUJDnuM&UD74ekZg zJ873~3iti2GKS4tP!hB-N;;ObddXt6)KXTLdu8CzHaMgRZ@+F+KMZkTo^|1FSWOLj zd1cMi{Bp6@#mwKy7*xF2S5x`WTe`*gGU}@UqbdQS@O_t^gKm= zex2XF=bkhFykF-t_xruy@B4nw`=0L?YMC}_j#$<@ck?=r8_G$(dN;oEP#4wa!t}#v8Y7Js!oqZ+Yo;}`MwS%QdoxX?o6*O#BiduPrSYbq<;CF_XY!NK-|U%Muvq;H zyiWJal(;LbE3_gXqT6v;=8ltC)&`yLX?^MeHCsF zO}BUA29~c*m~A%ou4ji3Y zY?vlwmi$9@A2H`+O-n+um;U)D=kq-@;be}nGI!k@l;H!IaR4*6cx0feVg*OD8WF~^6CypDj_j}#>n>WgF){$ zYwbdSM@kl+qYtm;tP1zJiwvipz|jT4=Rs`cKE{!as{xf0lx5mnrB1hIU~E^6u7t>i zd?@f!>~tbme+sXb?72!4Qk4>x;>>1D2SfHy`l_BUXd<^jN|rZ>bpb!7j?A6f^14ts zw0i3E6`%JWq0hVEnPe-$q~Y?o5P1dTk7q-RPtwm&3;`M6#GSY@takNpD0>a+?PO89 z!&!?rw1QdzY7DTAhbkYf&b(vRCJ<(cqBRE^dt1*~-MQl1~& zN(PX9AZ^Y;Z`aq1&S7Ia`7R)7h2#P^!V7`btrCm|aVdwk4xw<`rk^ac0(;j(JC7`7w zA3K;kaii50K6Lc4RWDP_0v5=-b$#{Sa4-L*$>kRP(O~^e`u(1;7cLSDL0MZ6d%|(z z1bwI{{0#g&kJGga25>bl`9*9zjt+gh>Dk%PGt{Hs$8_nQeyO|(Ioddu_v-=Y2-#R#DSt3 z-hzT)Qz7Pw3a68b!5Iq+jG+#@v}Y8kwWXUE$%b@35#rBLP*YF_E!0L|(Hq}wN9?zW zPt09N?x)thL=y=W@gk<0NZ=|62+BeNASov){fDF#%GFH*g|T*&a&vS-*dslV_L6R1 zZepOeX2>|%fhgA=s{Yl>Y-=I{O}u!1gSxH-1VZRLw4j7P8Nm{w?QI=p`hafP(McCw z0$4&@yjiMLUrW1LTrymW`ka0zpi`Er#csuga&j8?$%kW(DxM=}%1YSqT=tnM_PiCB zP@&wL=Y%-9Qs#p07!R$qRd2o>WS3<#l{A$+RNy-1Vy|9eeALc;%>0-->-inZOwCCRq%nVQUqbLE+4OUDqaYOC65rW+3x_3J#+-6+dS9cM=!cO@S7uAixD z^>w2$=$Q`h<)+Z9W9>Dh$-H_IOgAn9XXI)869>}U+z<=?Mq0gQ}%W`N2fj@{+U&nOLfFj=KjeoXb^#l${) z9@B6ku=0hMs+OV&!(jpqC8NFx2Iob`FH26jWlJgPshwmHxb+#m7u6)Ce|K#1?U=&bxT95|E!kq537W>68F4>M^Y4Rm;VWj^v481%S zzxhIr0KJS@k=F_S93;=s5m7B(CUpv78Jx7D^e<3SRf9*lqr+HZyIpKWfPPe#xaqs^-jvOS+o7 zDP)m1BX(u8>b9H|{4px@^DZkT?vd@oAbJr^T)v6nw2{sIW@&(@#3N-Uzhwc)atiPs zsKDiHVr=e2hn;kbo)nuJAg|@GlwA$U3M)EcyKR{UQq!%7Gd#2-#TMje4ufE>ameAzA|I9OUY?ekEv#z~Jk%v|;bYag5^>HPepCqXhd!_*3sw z=ndDgP@M~OJby;0Sb4?lysYq-u{CJTzTVc=x{4jYaWa*wN`&I0VEf(oH1e-@+7m9i zSKNX#oGtG7woQEbB_(73K9|yvK#5+f#NQv9P8`msiLbwVnd%=$Md04Af1DQrfx@8N z5D22}Iw;>8!5w$9)D$k#k&uY={pXJkBa*4i?@D? z4+nn_GWPz#;n>eULmK*{fbWcdLqG@hdpGd#V#dBc#q1aTze^hj^+!4HeZ8dhFZ!Q8 z{2<{d$F@(nVEYT<$oqJdzt|_Vq3HfUw{ftjqkP6bk`w*Ek>6d%Vbozqu#c+z4eEzK nI7~Y{$?Vh0?EiOR|4cc0V9GrUM#4lqTZmsoBsmfvLz4dhT!f~+ literal 0 HcmV?d00001 diff --git a/build_helpers/install_windows.ps1 b/build_helpers/install_windows.ps1 index e897cb88c..30427c3cc 100644 --- a/build_helpers/install_windows.ps1 +++ b/build_helpers/install_windows.ps1 @@ -1,6 +1,8 @@ -Invoke-WebRequest -Uri "https://download.lfd.uci.edu/pythonlibs/g5apjq5m/TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl" -OutFile "TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl" +# Downloads don't work automatically, since the URL is regenerated via javascript. +# Downloaded from https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib +# Invoke-WebRequest -Uri "https://download.lfd.uci.edu/pythonlibs/xxxxxxx/TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl" -OutFile "TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl" -pip install TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl +pip install build_helpers\TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl pip install -r requirements-dev.txt pip install -e . diff --git a/build_helpers/publish_docker.sh b/build_helpers/publish_docker.sh index cac2a4c04..e87047fb0 100755 --- a/build_helpers/publish_docker.sh +++ b/build_helpers/publish_docker.sh @@ -1,7 +1,7 @@ #!/bin/sh # Replace / with _ to create a valid tag -TAG=$(echo "${GITHUB_REF}" | sed -e "s/\//_/g") +TAG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g") echo "Running for ${TAG}" # Add commit and commit_message to docker container From a241c2af0d4a8f73084896217f3e69a247429cae Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 11 Nov 2019 19:42:05 +0100 Subject: [PATCH 0946/3421] Build macos - ... --- .github/workflows/ci.yml | 10 +++++----- build_helpers/publish_docker.sh | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4edd357bf..28ff5fa8a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,6 +8,8 @@ on: - github_actions_2 tags: pull_request: + schedule: + - cron: '0 5 * * 4' jobs: build: @@ -15,7 +17,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ ubuntu-18.04 ] + os: [ ubuntu-18.04, macos-latest ] python-version: [3.7] steps: @@ -142,7 +144,7 @@ jobs: deploy: needs: [ build, build_windows ] runs-on: ubuntu-18.04 - if: github.event_name == 'push' || github.event_name == 'cron' + if: github.event_name == 'push' || github.event_name == 'schedule' steps: - uses: actions/checkout@v1 @@ -157,8 +159,6 @@ jobs: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }} - # original filter - # branch in (master, develop, feat/improve_travis) AND (type in (push, cron)) run: | build_helpers/publish_docker.sh @@ -170,6 +170,6 @@ jobs: password: ${{ secrets.DOCKER_PASSWORD }} dockerfile: Dockerfile.pi # cache: true - cache: ${{ github.event_name != 'cron' }} + cache: ${{ github.event_name != 'schedule' }} tag_names: true diff --git a/build_helpers/publish_docker.sh b/build_helpers/publish_docker.sh index e87047fb0..c536e8798 100755 --- a/build_helpers/publish_docker.sh +++ b/build_helpers/publish_docker.sh @@ -7,7 +7,7 @@ echo "Running for ${TAG}" # Add commit and commit_message to docker container echo "${GITHUB_SHA}" > freqtrade_commit -if [ "${GITHUB_EVENT_NAME}" = "cron" ]; then +if [ "${GITHUB_EVENT_NAME}" = "schedule" ]; then echo "event ${GITHUB_EVENT_NAME}: full rebuild - skipping cache" docker build -t freqtrade:${TAG} . else From 75d5ff69ef78c30f63c061d0012f1ae9c822703c Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 11 Nov 2019 20:09:58 +0100 Subject: [PATCH 0947/3421] Add ping endpoing --- docs/rest-api.md | 9 ++++++++- freqtrade/rpc/api_server.py | 9 +++++++++ tests/rpc/test_rpc_apiserver.py | 4 ++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index 4d5bc5730..85435e0db 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -22,7 +22,14 @@ Sample configuration: !!! Danger "Password selection" Please make sure to select a very strong, unique password to protect your bot from unauthorized access. -You can then access the API by going to `http://127.0.0.1:8080/api/v1/version` to check if the API is running correctly. +You can then access the API by going to `http://127.0.0.1:8080/api/v1/ping` to check if the API is running correctly. +This should return the response: + +``` output +{"status":"pong"} +``` + +All other endpoints will require authentication, so are not available through a webrowser. To generate a secure password, either use a password manager, or use the below code snipped. diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 67bbfdc78..5167823fd 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -169,6 +169,8 @@ class ApiServer(RPC): view_func=self._status, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/version', 'version', view_func=self._version, methods=['GET']) + self.app.add_url_rule(f'{BASE_URI}/ping', 'ping', + view_func=self._ping, methods=['GET']) # Combined actions and infos self.app.add_url_rule(f'{BASE_URI}/blacklist', 'blacklist', view_func=self._blacklist, @@ -224,6 +226,13 @@ class ApiServer(RPC): msg = self._rpc_stopbuy() return self.rest_dump(msg) + @rpc_catch_errors + def _ping(self): + """ + simple poing version + """ + return self.rest_dump({"status": "pong"}) + @require_login @rpc_catch_errors def _version(self): diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index b572a0514..6e65cf934 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -64,6 +64,10 @@ def test_api_not_found(botclient): def test_api_unauthorized(botclient): ftbot, client = botclient + rc = client.get(f"{BASE_URI}/ping") + assert_response(rc) + assert rc.json == {'status': 'pong'} + # Don't send user/pass information rc = client.get(f"{BASE_URI}/version") assert_response(rc, 401) From 800997437a521cf7ab2923f03b354ce0ca5c5152 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 11 Nov 2019 20:25:44 +0100 Subject: [PATCH 0948/3421] Update documentation --- docs/rest-api.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index 85435e0db..00c2d8e39 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -22,14 +22,14 @@ Sample configuration: !!! Danger "Password selection" Please make sure to select a very strong, unique password to protect your bot from unauthorized access. -You can then access the API by going to `http://127.0.0.1:8080/api/v1/ping` to check if the API is running correctly. +You can then access the API by going to `http://127.0.0.1:8080/api/v1/ping` in a browser to check if the API is running correctly. This should return the response: ``` output {"status":"pong"} ``` -All other endpoints will require authentication, so are not available through a webrowser. +All other endpoints return sensitive info and require authentication, so are not available through a webrowser. To generate a secure password, either use a password manager, or use the below code snipped. From 025350ebff08351f29c1171b4057ed4a391658f4 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Tue, 12 Nov 2019 00:07:27 +0300 Subject: [PATCH 0949/3421] Fix typo in the rest-api docs --- docs/rest-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index 00c2d8e39..d0e4c8247 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -29,7 +29,7 @@ This should return the response: {"status":"pong"} ``` -All other endpoints return sensitive info and require authentication, so are not available through a webrowser. +All other endpoints return sensitive info and require authentication, so are not available through a web browser. To generate a secure password, either use a password manager, or use the below code snipped. From 52e24c3a257c5ddd53c255516d578205a5b1277a Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 Nov 2019 09:27:53 +0100 Subject: [PATCH 0950/3421] Split error-messsage between incompatible and wrong stake amount --- freqtrade/pairlist/IPairList.py | 7 ++++++- tests/pairlist/test_pairlist.py | 14 ++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index 231755cb0..d722e70f5 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -94,10 +94,15 @@ class IPairList(ABC): sanitized_whitelist: List[str] = [] for pair in pairlist: # pair is not in the generated dynamic market or has the wrong stake currency - if (pair not in markets or not pair.endswith(self._config['stake_currency'])): + if pair not in markets: logger.warning(f"Pair {pair} is not compatible with exchange " f"{self._exchange.name}. Removing it from whitelist..") continue + if not pair.endswith(self._config['stake_currency']): + logger.warning(f"Pair {pair} is not compatible with your stake currency " + f"{self._config['stake_currency']}. Removing it from whitelist..") + continue + # Check if market is active market = markets[pair] if not market_is_active(market): diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 94b2147f5..13f868c7a 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -227,10 +227,16 @@ def test_pairlist_class(mocker, whitelist_conf, markets, pairlist): @pytest.mark.parametrize("pairlist", AVAILABLE_PAIRLISTS) @pytest.mark.parametrize("whitelist,log_message", [ (['ETH/BTC', 'TKN/BTC'], ""), - (['ETH/BTC', 'TKN/BTC', 'TRX/ETH'], "is not compatible with exchange"), # TRX/ETH wrong stake - (['ETH/BTC', 'TKN/BTC', 'BCH/BTC'], "is not compatible with exchange"), # BCH/BTC not available - (['ETH/BTC', 'TKN/BTC', 'BLK/BTC'], "in your blacklist. Removing "), # BLK/BTC in blacklist - (['ETH/BTC', 'TKN/BTC', 'BTT/BTC'], "Market is not active") # BTT/BTC is inactive + # TRX/ETH not in markets + (['ETH/BTC', 'TKN/BTC', 'TRX/ETH'], "is not compatible with exchange"), + # wrong stake + (['ETH/BTC', 'TKN/BTC', 'ETH/USDT'], "is not compatible with your stake currency"), + # BCH/BTC not available + (['ETH/BTC', 'TKN/BTC', 'BCH/BTC'], "is not compatible with exchange"), + # BLK/BTC in blacklist + (['ETH/BTC', 'TKN/BTC', 'BLK/BTC'], "in your blacklist. Removing "), + # BTT/BTC is inactive + (['ETH/BTC', 'TKN/BTC', 'BTT/BTC'], "Market is not active") ]) def test__whitelist_for_active_markets(mocker, whitelist_conf, markets, pairlist, whitelist, caplog, log_message, tickers): From 37ef5c38f0309bca902f0a18e312395b94bc2edd Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 Nov 2019 09:39:30 +0100 Subject: [PATCH 0951/3421] integrate Slack notification --- .github/workflows/ci.yml | 33 +++++++++++++++++++++++++++++++++ .travis.yml | 10 +++++----- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 28ff5fa8a..015585af1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -91,6 +91,17 @@ jobs: run: | ./tests/test_docs.sh + - name: Slack Notification + uses: homoluctus/slatify@v1.8.0 + if: always() + with: + type: ${{ job.status }} + job_name: '*Freqtrade CI ${{ matrix.os }}*' + mention: 'here' + mention_if: 'failure' + channel: '#notifications' + url: ${{ secrets.SLACK_WEBHOOK }} + build_windows: runs-on: ${{ matrix.os }} @@ -141,6 +152,17 @@ jobs: run: | mypy freqtrade scripts + - name: Slack Notification + uses: homoluctus/slatify@v1.8.0 + if: always() + with: + type: ${{ job.status }} + job_name: '*Freqtrade CI windows*' + mention: 'here' + mention_if: 'failure' + channel: '#notifications' + url: ${{ secrets.SLACK_WEBHOOK }} + deploy: needs: [ build, build_windows ] runs-on: ubuntu-18.04 @@ -173,3 +195,14 @@ jobs: cache: ${{ github.event_name != 'schedule' }} tag_names: true + - name: Slack Notification + uses: homoluctus/slatify@v1.8.0 + if: always() + with: + type: ${{ job.status }} + job_name: '*Freqtrade CI Deploy*' + mention: 'here' + mention_if: 'failure' + channel: '#notifications' + url: ${{ secrets.SLACK_WEBHOOK }} + diff --git a/.travis.yml b/.travis.yml index 1cc22dfbd..ca35ef4ec 100644 --- a/.travis.yml +++ b/.travis.yml @@ -45,11 +45,11 @@ jobs: - script: mypy freqtrade scripts name: mypy - - stage: docker - if: branch in (master, develop, feat/improve_travis) AND (type in (push, cron)) - script: - - build_helpers/publish_docker.sh - name: "Build and test and push docker image" + # - stage: docker + # if: branch in (master, develop, feat/improve_travis) AND (type in (push, cron)) + # script: + # - build_helpers/publish_docker.sh + # name: "Build and test and push docker image" notifications: slack: From 96f550c6aab6081666eacda17c100d114c11bdad Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 Nov 2019 10:35:36 +0100 Subject: [PATCH 0952/3421] Disable tests --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 015585af1..f7da23156 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,7 @@ on: branches: - master - develop - - github_actions_2 + - github_actions_tests tags: pull_request: schedule: From 8c76f45030d74ff856f089561a121ec91d03ad46 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 Nov 2019 10:53:48 +0100 Subject: [PATCH 0953/3421] Use correct dockerhub image name --- .github/workflows/ci.yml | 4 ++-- docs/developer.md | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f7da23156..67862282a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -177,7 +177,7 @@ jobs: - name: Build and test and push docker image env: - IMAGE_NAME: freqtradeorg/freqtradetests + IMAGE_NAME: freqtradeorg/freqtrade DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }} @@ -187,7 +187,7 @@ jobs: - name: Build raspberry image for ${{ steps.extract_branch.outputs.branch }}_pi uses: elgohr/Publish-Docker-Github-Action@2.7 with: - name: freqtradeorg/freqtradetests:${{ steps.extract_branch.outputs.branch }}_pi + name: freqtradeorg/freqtrade:${{ steps.extract_branch.outputs.branch }}_pi username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} dockerfile: Dockerfile.pi diff --git a/docs/developer.md b/docs/developer.md index 67c0912a7..41c66ce37 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -198,6 +198,19 @@ jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace user_data/not jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to markdown user_data/notebooks/strategy_analysis_example.ipynb --stdout > docs/strategy_analysis_example.md ``` +## Continuous integration + +This documents some decisions taken for the CI Pipeline. + +* CI runs on all OS variants, Linux (ubuntu), macOS and Windows. +* Docker images are build for the branches `master` and `develop`. +* Raspberry PI Docker images are postfixed with `_pi` - so tags will be `:master_pi` and `develop_pi`. +* Docker images contain a file, `/freqtrade/freqtrade_commit` containing the commit this image is based of. +* Full docker image rebuilds are run once a week via schedule. +* Deployments run on ubuntu. +* ta-lib binaries are contained in the build_helpers directory to avoid fails related to external unavailability. +* All tests must pass for a PR to be merged to `master` or `develop`. + ## Creating a release This part of the documentation is aimed at maintainers, and shows how to create a release. From e8a8f416f3b1a076bc668b724339143fcb373521 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Aug 2019 20:08:49 +0200 Subject: [PATCH 0954/3421] Update dockerhub description from github readme.md --- .github/workflows/docker_update_readme.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/docker_update_readme.yml diff --git a/.github/workflows/docker_update_readme.yml b/.github/workflows/docker_update_readme.yml new file mode 100644 index 000000000..bc063617a --- /dev/null +++ b/.github/workflows/docker_update_readme.yml @@ -0,0 +1,18 @@ +name: Update Docker Hub Description +on: + push: + branches: + - master + +jobs: + dockerHubDescription: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Docker Hub Description + uses: peter-evans/dockerhub-description@v2.0.0 + env: + DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + DOCKERHUB_REPOSITORY: freqtradeorg/freqtrade + From 136ef077b2c96179981c1980dc7827a555cca981 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 Nov 2019 13:14:43 +0100 Subject: [PATCH 0955/3421] Add sleep to allow thread to start --- tests/rpc/test_rpc_manager.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/rpc/test_rpc_manager.py b/tests/rpc/test_rpc_manager.py index 7278f0671..c9fbf8c3b 100644 --- a/tests/rpc/test_rpc_manager.py +++ b/tests/rpc/test_rpc_manager.py @@ -1,5 +1,5 @@ # pragma pylint: disable=missing-docstring, C0103 - +import time import logging from unittest.mock import MagicMock @@ -176,6 +176,8 @@ def test_init_apiserver_enabled(mocker, default_conf, caplog) -> None: "listen_port": "8080"} rpc_manager = RPCManager(get_patched_freqtradebot(mocker, default_conf)) + # Sleep to allow the thread to start + time.sleep(0.5) assert log_has('Enabling rpc.api_server', caplog) assert len(rpc_manager.registered_modules) == 1 assert 'apiserver' in [mod.name for mod in rpc_manager.registered_modules] From ab9506df480e53316b65cd43d72c757e3dc18ab4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 Nov 2019 13:54:26 +0100 Subject: [PATCH 0956/3421] simplify status_table command --- freqtrade/rpc/api_server.py | 2 +- freqtrade/rpc/rpc.py | 16 +++++++--------- freqtrade/rpc/telegram.py | 4 ++-- tests/rpc/test_rpc.py | 12 +++++++----- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 5167823fd..3b59c9592 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -274,7 +274,7 @@ class ApiServer(RPC): stats = self._rpc_daily_profit(timescale, self._config['stake_currency'], - self._config['fiat_display_currency'] + self._config.get('fiat_display_currency', '') ) return self.rest_dump(stats) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 4aed48f74..84e681992 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -3,16 +3,15 @@ This module contains class to define a RPC communications """ import logging from abc import abstractmethod -from datetime import timedelta, datetime, date +from datetime import date, datetime, timedelta from decimal import Decimal from enum import Enum -from typing import Dict, Any, List, Optional +from typing import Any, Dict, List, Optional, Tuple import arrow -from numpy import mean, NAN -from pandas import DataFrame +from numpy import NAN, mean -from freqtrade import TemporaryError, DependencyException +from freqtrade import DependencyException, TemporaryError from freqtrade.misc import shorten_date from freqtrade.persistence import Trade from freqtrade.rpc.fiat_convert import CryptoToFiatConverter @@ -117,7 +116,7 @@ class RPC: results.append(trade_dict) return results - def _rpc_status_table(self) -> DataFrame: + def _rpc_status_table(self, fiat_display_currency: str) -> Tuple[List, List]: trades = Trade.get_open_trades() if not trades: raise RPCException('no active order') @@ -135,12 +134,11 @@ class RPC: trade.pair, shorten_date(arrow.get(trade.open_date).humanize(only_distance=True)), f'{trade_perc:.2f}%' + ]) columns = ['ID', 'Pair', 'Since', 'Profit'] - df_statuses = DataFrame.from_records(trades_list, columns=columns) - df_statuses = df_statuses.set_index(columns[0]) - return df_statuses + return trades_list, columns def _rpc_daily_profit( self, timescale: int, diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 80582a0ce..25422973d 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -234,8 +234,8 @@ class Telegram(RPC): :return: None """ try: - df_statuses = self._rpc_status_table() - message = tabulate(df_statuses, headers='keys', tablefmt='simple') + statlist, head = self._rpc_status_table(self._config.get('fiat_display_currency', '')) + message = tabulate(statlist, headers=head, tablefmt='simple') self._send_msg(f"

      {message}
      ", parse_mode=ParseMode.HTML) except RPCException as e: self._send_msg(str(e)) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index df2261c1f..06203a3d7 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -109,13 +109,15 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: freqtradebot.state = State.RUNNING with pytest.raises(RPCException, match=r'.*no active order*'): - rpc._rpc_status_table() + rpc._rpc_status_table('USD') freqtradebot.create_trades() - result = rpc._rpc_status_table() - assert 'instantly' in result['Since'].all() - assert 'ETH/BTC' in result['Pair'].all() - assert '-0.59%' in result['Profit'].all() + result, headers = rpc._rpc_status_table('USD') + assert "Since" in headers + assert "Pair" in headers + assert 'instantly' in result[0][2] + assert 'ETH/BTC' in result[0][1] + assert '-0.59%' in result[0][3] mocker.patch('freqtrade.exchange.Exchange.get_ticker', MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) From df9bfb6c2e02b476955d137d45c637105ae2ed16 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 Nov 2019 14:58:41 +0100 Subject: [PATCH 0957/3421] Add FIAT currency to status-table --- freqtrade/rpc/rpc.py | 21 +++++++++++++++++---- freqtrade/rpc/telegram.py | 3 ++- tests/rpc/test_rpc.py | 33 ++++++++++++++++++++++++--------- 3 files changed, 43 insertions(+), 14 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 84e681992..f15bf3cd0 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -6,6 +6,7 @@ from abc import abstractmethod from datetime import date, datetime, timedelta from decimal import Decimal from enum import Enum +from math import isnan from typing import Any, Dict, List, Optional, Tuple import arrow @@ -116,7 +117,7 @@ class RPC: results.append(trade_dict) return results - def _rpc_status_table(self, fiat_display_currency: str) -> Tuple[List, List]: + def _rpc_status_table(self, stake_currency, fiat_display_currency: str) -> Tuple[List, List]: trades = Trade.get_open_trades() if not trades: raise RPCException('no active order') @@ -129,15 +130,27 @@ class RPC: except DependencyException: current_rate = NAN trade_perc = (100 * trade.calc_profit_percent(current_rate)) + trade_profit = trade.calc_profit(current_rate) + profit_str = f'{trade_perc:.2f}%' + if self._fiat_converter: + fiat_profit = self._fiat_converter.convert_amount( + trade_profit, + stake_currency, + fiat_display_currency + ) + if fiat_profit and not isnan(fiat_profit): + profit_str += f" ({fiat_profit:.2f})" trades_list.append([ trade.id, trade.pair, shorten_date(arrow.get(trade.open_date).humanize(only_distance=True)), - f'{trade_perc:.2f}%' - + profit_str ]) + profitcol = "Profit" + if self._fiat_converter: + profitcol += " (" + fiat_display_currency + ")" - columns = ['ID', 'Pair', 'Since', 'Profit'] + columns = ['ID', 'Pair', 'Since', profitcol] return trades_list, columns def _rpc_daily_profit( diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 25422973d..8a81848ac 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -234,7 +234,8 @@ class Telegram(RPC): :return: None """ try: - statlist, head = self._rpc_status_table(self._config.get('fiat_display_currency', '')) + statlist, head = self._rpc_status_table(self._config['stake_currency'], + self._config.get('fiat_display_currency', '')) message = tabulate(statlist, headers=head, tablefmt='simple') self._send_msg(f"
      {message}
      ", parse_mode=ParseMode.HTML) except RPCException as e: diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 06203a3d7..e7f41f6e7 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -96,6 +96,11 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: + mocker.patch.multiple( + 'freqtrade.rpc.fiat_convert.Market', + ticker=MagicMock(return_value={'price_usd': 15000.0}), + ) + mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -109,24 +114,34 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: freqtradebot.state = State.RUNNING with pytest.raises(RPCException, match=r'.*no active order*'): - rpc._rpc_status_table('USD') + rpc._rpc_status_table(default_conf['stake_currency'], 'USD') freqtradebot.create_trades() - result, headers = rpc._rpc_status_table('USD') + + result, headers = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') assert "Since" in headers assert "Pair" in headers - assert 'instantly' in result[0][2] - assert 'ETH/BTC' in result[0][1] - assert '-0.59%' in result[0][3] + assert 'instantly' == result[0][2] + assert 'ETH/BTC' == result[0][1] + assert '-0.59%' == result[0][3] + # Test with fiatconvert + + rpc._fiat_converter = CryptoToFiatConverter() + result, headers = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') + assert "Since" in headers + assert "Pair" in headers + assert 'instantly' == result[0][2] + assert 'ETH/BTC' == result[0][1] + assert '-0.59% (-0.09)' == result[0][3] mocker.patch('freqtrade.exchange.Exchange.get_ticker', MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) # invalidate ticker cache rpc._freqtrade.exchange._cached_ticker = {} - result = rpc._rpc_status_table() - assert 'instantly' in result['Since'].all() - assert 'ETH/BTC' in result['Pair'].all() - assert 'nan%' in result['Profit'].all() + result, headers = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') + assert 'instantly' == result[0][2] + assert 'ETH/BTC' == result[0][1] + assert 'nan%' == result[0][3] def test_rpc_daily_profit(default_conf, update, ticker, fee, From 11f7ab61b9cf7958f44f2480c11cc787c1c21fb8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 Nov 2019 15:11:31 +0100 Subject: [PATCH 0958/3421] Remove decimal import from rpc --- freqtrade/rpc/rpc.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index f15bf3cd0..5ab92cf33 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -4,7 +4,6 @@ This module contains class to define a RPC communications import logging from abc import abstractmethod from datetime import date, datetime, timedelta -from decimal import Decimal from enum import Enum from math import isnan from typing import Any, Dict, List, Optional, Tuple @@ -230,7 +229,7 @@ class RPC: profit_percent = trade.calc_profit_percent(rate=current_rate) profit_all_coin.append( - trade.calc_profit(rate=Decimal(trade.close_rate or current_rate)) + trade.calc_profit(rate=trade.close_rate or current_rate) ) profit_all_perc.append(profit_percent) From e4bdb92521d38c062a0b266345727cfbe893899a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 Nov 2019 20:19:13 +0100 Subject: [PATCH 0959/3421] Replace some occurances of ticker_interval with timeframe --- freqtrade/data/converter.py | 10 ++--- freqtrade/data/dataprovider.py | 16 +++---- freqtrade/data/history.py | 72 +++++++++++++++--------------- freqtrade/edge/__init__.py | 2 +- freqtrade/optimize/backtesting.py | 2 +- freqtrade/plot/plotting.py | 13 +++--- tests/data/test_btanalysis.py | 8 ++-- tests/data/test_converter.py | 2 +- tests/data/test_dataprovider.py | 2 +- tests/data/test_history.py | 58 ++++++++++++------------ tests/edge/test_edge.py | 2 +- tests/optimize/test_backtesting.py | 16 +++---- tests/test_plotting.py | 10 ++--- 13 files changed, 107 insertions(+), 106 deletions(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 1ef224978..e45dd451e 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -10,13 +10,13 @@ from pandas import DataFrame, to_datetime logger = logging.getLogger(__name__) -def parse_ticker_dataframe(ticker: list, ticker_interval: str, pair: str, *, +def parse_ticker_dataframe(ticker: list, timeframe: str, pair: str, *, fill_missing: bool = True, drop_incomplete: bool = True) -> DataFrame: """ Converts a ticker-list (format ccxt.fetch_ohlcv) to a Dataframe :param ticker: ticker list, as returned by exchange.async_get_candle_history - :param ticker_interval: ticker_interval (e.g. 5m). Used to fill up eventual missing data + :param timeframe: timeframe (e.g. 5m). Used to fill up eventual missing data :param pair: Pair this data is for (used to warn if fillup was necessary) :param fill_missing: fill up missing candles with 0 candles (see ohlcv_fill_up_missing_data for details) @@ -52,12 +52,12 @@ def parse_ticker_dataframe(ticker: list, ticker_interval: str, pair: str, *, logger.debug('Dropping last candle') if fill_missing: - return ohlcv_fill_up_missing_data(frame, ticker_interval, pair) + return ohlcv_fill_up_missing_data(frame, timeframe, pair) else: return frame -def ohlcv_fill_up_missing_data(dataframe: DataFrame, ticker_interval: str, pair: str) -> DataFrame: +def ohlcv_fill_up_missing_data(dataframe: DataFrame, timeframe: str, pair: str) -> DataFrame: """ Fills up missing data with 0 volume rows, using the previous close as price for "open", "high" "low" and "close", volume is set to 0 @@ -72,7 +72,7 @@ def ohlcv_fill_up_missing_data(dataframe: DataFrame, ticker_interval: str, pair: 'close': 'last', 'volume': 'sum' } - ticker_minutes = timeframe_to_minutes(ticker_interval) + ticker_minutes = timeframe_to_minutes(timeframe) # Resample to create "NAN" values df = dataframe.resample(f'{ticker_minutes}min', on='date').agg(ohlc_dict) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index f0787281a..ce4554cbb 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -42,29 +42,29 @@ class DataProvider: """ return list(self._exchange._klines.keys()) - def ohlcv(self, pair: str, ticker_interval: str = None, copy: bool = True) -> DataFrame: + def ohlcv(self, pair: str, timeframe: str = None, copy: bool = True) -> DataFrame: """ Get ohlcv data for the given pair as DataFrame Please use the `available_pairs` method to verify which pairs are currently cached. :param pair: pair to get the data for - :param ticker_interval: ticker interval to get data for + :param timeframe: Ticker timeframe to get data for :param copy: copy dataframe before returning if True. Use False only for read-only operations (where the dataframe is not modified) """ if self.runmode in (RunMode.DRY_RUN, RunMode.LIVE): - return self._exchange.klines((pair, ticker_interval or self._config['ticker_interval']), + return self._exchange.klines((pair, timeframe or self._config['ticker_interval']), copy=copy) else: return DataFrame() - def historic_ohlcv(self, pair: str, ticker_interval: str = None) -> DataFrame: + def historic_ohlcv(self, pair: str, timeframe: str = None) -> DataFrame: """ Get stored historic ohlcv data :param pair: pair to get the data for - :param ticker_interval: ticker interval to get data for + :param timeframe: ticker interval to get data for """ return load_pair_history(pair=pair, - ticker_interval=ticker_interval or self._config['ticker_interval'], + timeframe=timeframe or self._config['ticker_interval'], datadir=Path(self._config['datadir']) ) @@ -77,10 +77,10 @@ class DataProvider: """ if self.runmode in (RunMode.DRY_RUN, RunMode.LIVE): # Get live ohlcv data. - data = self.ohlcv(pair=pair, ticker_interval=ticker_interval) + data = self.ohlcv(pair=pair, timeframe=ticker_interval) else: # Get historic ohlcv data (cached on disk). - data = self.historic_ohlcv(pair=pair, ticker_interval=ticker_interval) + data = self.historic_ohlcv(pair=pair, timeframe=ticker_interval) if len(data) == 0: logger.warning(f"No data found for ({pair}, {ticker_interval}).") return data diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 3dd40d2b4..8e4bc8ced 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -63,13 +63,13 @@ def trim_dataframe(df: DataFrame, timerange: TimeRange) -> DataFrame: return df -def load_tickerdata_file(datadir: Path, pair: str, ticker_interval: str, +def load_tickerdata_file(datadir: Path, pair: str, timeframe: str, timerange: Optional[TimeRange] = None) -> Optional[list]: """ Load a pair from file, either .json.gz or .json :return: tickerlist or None if unsuccessful """ - filename = pair_data_filename(datadir, pair, ticker_interval) + filename = pair_data_filename(datadir, pair, timeframe) pairdata = misc.file_load_json(filename) if not pairdata: return [] @@ -80,11 +80,11 @@ def load_tickerdata_file(datadir: Path, pair: str, ticker_interval: str, def store_tickerdata_file(datadir: Path, pair: str, - ticker_interval: str, data: list, is_zip: bool = False): + timeframe: str, data: list, is_zip: bool = False): """ Stores tickerdata to file """ - filename = pair_data_filename(datadir, pair, ticker_interval) + filename = pair_data_filename(datadir, pair, timeframe) misc.file_dump_json(filename, data, is_zip=is_zip) @@ -121,7 +121,7 @@ def _validate_pairdata(pair, pairdata, timerange: TimeRange): def load_pair_history(pair: str, - ticker_interval: str, + timeframe: str, datadir: Path, timerange: Optional[TimeRange] = None, refresh_pairs: bool = False, @@ -133,7 +133,7 @@ def load_pair_history(pair: str, """ Loads cached ticker history for the given pair. :param pair: Pair to load data for - :param ticker_interval: Ticker-interval (e.g. "5m") + :param timeframe: Ticker timeframe (e.g. "5m") :param datadir: Path to the data storage location. :param timerange: Limit data to be loaded to this timerange :param refresh_pairs: Refresh pairs from exchange. @@ -147,34 +147,34 @@ def load_pair_history(pair: str, timerange_startup = deepcopy(timerange) if startup_candles > 0 and timerange_startup: - timerange_startup.subtract_start(timeframe_to_seconds(ticker_interval) * startup_candles) + timerange_startup.subtract_start(timeframe_to_seconds(timeframe) * startup_candles) # The user forced the refresh of pairs if refresh_pairs: download_pair_history(datadir=datadir, exchange=exchange, pair=pair, - ticker_interval=ticker_interval, + timeframe=timeframe, timerange=timerange) - pairdata = load_tickerdata_file(datadir, pair, ticker_interval, timerange=timerange_startup) + pairdata = load_tickerdata_file(datadir, pair, timeframe, timerange=timerange_startup) if pairdata: if timerange_startup: _validate_pairdata(pair, pairdata, timerange_startup) - return parse_ticker_dataframe(pairdata, ticker_interval, pair=pair, + return parse_ticker_dataframe(pairdata, timeframe, pair=pair, fill_missing=fill_up_missing, drop_incomplete=drop_incomplete) else: logger.warning( - f'No history data for pair: "{pair}", interval: {ticker_interval}. ' + f'No history data for pair: "{pair}", timeframe: {timeframe}. ' 'Use `freqtrade download-data` to download the data' ) return None def load_data(datadir: Path, - ticker_interval: str, + timeframe: str, pairs: List[str], refresh_pairs: bool = False, exchange: Optional[Exchange] = None, @@ -186,7 +186,7 @@ def load_data(datadir: Path, """ Loads ticker history data for a list of pairs :param datadir: Path to the data storage location. - :param ticker_interval: Ticker-interval (e.g. "5m") + :param timeframe: Ticker Timeframe (e.g. "5m") :param pairs: List of pairs to load :param refresh_pairs: Refresh pairs from exchange. (Note: Requires exchange to be passed as well.) @@ -206,7 +206,7 @@ def load_data(datadir: Path, logger.info(f'Using indicator startup period: {startup_candles} ...') for pair in pairs: - hist = load_pair_history(pair=pair, ticker_interval=ticker_interval, + hist = load_pair_history(pair=pair, timeframe=timeframe, datadir=datadir, timerange=timerange, refresh_pairs=refresh_pairs, exchange=exchange, @@ -220,9 +220,9 @@ def load_data(datadir: Path, return result -def pair_data_filename(datadir: Path, pair: str, ticker_interval: str) -> Path: +def pair_data_filename(datadir: Path, pair: str, timeframe: str) -> Path: pair_s = pair.replace("/", "_") - filename = datadir.joinpath(f'{pair_s}-{ticker_interval}.json') + filename = datadir.joinpath(f'{pair_s}-{timeframe}.json') return filename @@ -232,7 +232,7 @@ def pair_trades_filename(datadir: Path, pair: str) -> Path: return filename -def _load_cached_data_for_updating(datadir: Path, pair: str, ticker_interval: str, +def _load_cached_data_for_updating(datadir: Path, pair: str, timeframe: str, timerange: Optional[TimeRange]) -> Tuple[List[Any], Optional[int]]: """ @@ -250,12 +250,12 @@ def _load_cached_data_for_updating(datadir: Path, pair: str, ticker_interval: st if timerange.starttype == 'date': since_ms = timerange.startts * 1000 elif timerange.stoptype == 'line': - num_minutes = timerange.stopts * timeframe_to_minutes(ticker_interval) + num_minutes = timerange.stopts * timeframe_to_minutes(timeframe) since_ms = arrow.utcnow().shift(minutes=num_minutes).timestamp * 1000 # read the cached file # Intentionally don't pass timerange in - since we need to load the full dataset. - data = load_tickerdata_file(datadir, pair, ticker_interval) + data = load_tickerdata_file(datadir, pair, timeframe) # remove the last item, could be incomplete candle if data: data.pop() @@ -276,18 +276,18 @@ def _load_cached_data_for_updating(datadir: Path, pair: str, ticker_interval: st def download_pair_history(datadir: Path, exchange: Optional[Exchange], pair: str, - ticker_interval: str = '5m', + timeframe: str = '5m', timerange: Optional[TimeRange] = None) -> bool: """ Download the latest ticker intervals from the exchange for the pair passed in parameters - The data is downloaded starting from the last correct ticker interval data that + The data is downloaded starting from the last correct data that exists in a cache. If timerange starts earlier than the data in the cache, the full data will be redownloaded Based on @Rybolov work: https://github.com/rybolov/freqtrade-data :param pair: pair to download - :param ticker_interval: ticker interval + :param timeframe: Ticker Timeframe (e.g 5m) :param timerange: range of time to download :return: bool with success state """ @@ -298,17 +298,17 @@ def download_pair_history(datadir: Path, try: logger.info( - f'Download history data for pair: "{pair}", interval: {ticker_interval} ' + f'Download history data for pair: "{pair}", timeframe: {timeframe} ' f'and store in {datadir}.' ) - data, since_ms = _load_cached_data_for_updating(datadir, pair, ticker_interval, timerange) + data, since_ms = _load_cached_data_for_updating(datadir, pair, timeframe, timerange) logger.debug("Current Start: %s", misc.format_ms_time(data[1][0]) if data else 'None') logger.debug("Current End: %s", misc.format_ms_time(data[-1][0]) if data else 'None') # Default since_ms to 30 days if nothing is given - new_data = exchange.get_historic_ohlcv(pair=pair, ticker_interval=ticker_interval, + new_data = exchange.get_historic_ohlcv(pair=pair, ticker_interval=timeframe, since_ms=since_ms if since_ms else int(arrow.utcnow().shift( @@ -318,12 +318,12 @@ def download_pair_history(datadir: Path, logger.debug("New Start: %s", misc.format_ms_time(data[0][0])) logger.debug("New End: %s", misc.format_ms_time(data[-1][0])) - store_tickerdata_file(datadir, pair, ticker_interval, data=data) + store_tickerdata_file(datadir, pair, timeframe, data=data) return True except Exception as e: logger.error( - f'Failed to download history data for pair: "{pair}", interval: {ticker_interval}. ' + f'Failed to download history data for pair: "{pair}", timeframe: {timeframe}. ' f'Error: {e}' ) return False @@ -343,17 +343,17 @@ def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes pairs_not_available.append(pair) logger.info(f"Skipping pair {pair}...") continue - for ticker_interval in timeframes: + for timeframe in timeframes: - dl_file = pair_data_filename(dl_path, pair, ticker_interval) + dl_file = pair_data_filename(dl_path, pair, timeframe) if erase and dl_file.exists(): logger.info( - f'Deleting existing data for pair {pair}, interval {ticker_interval}.') + f'Deleting existing data for pair {pair}, interval {timeframe}.') dl_file.unlink() - logger.info(f'Downloading pair {pair}, interval {ticker_interval}.') + logger.info(f'Downloading pair {pair}, interval {timeframe}.') download_pair_history(datadir=dl_path, exchange=exchange, - pair=pair, ticker_interval=str(ticker_interval), + pair=pair, timeframe=str(timeframe), timerange=timerange) return pairs_not_available @@ -459,7 +459,7 @@ def get_timeframe(data: Dict[str, DataFrame]) -> Tuple[arrow.Arrow, arrow.Arrow] def validate_backtest_data(data: DataFrame, pair: str, min_date: datetime, - max_date: datetime, ticker_interval_mins: int) -> bool: + max_date: datetime, timeframe_mins: int) -> bool: """ Validates preprocessed backtesting data for missing values and shows warnings about it that. @@ -467,10 +467,10 @@ def validate_backtest_data(data: DataFrame, pair: str, min_date: datetime, :param pair: pair used for log output. :param min_date: start-date of the data :param max_date: end-date of the data - :param ticker_interval_mins: ticker interval in minutes + :param timeframe_mins: ticker Timeframe in minutes """ - # total difference in minutes / interval-minutes - expected_frames = int((max_date - min_date).total_seconds() // 60 // ticker_interval_mins) + # total difference in minutes / timeframe-minutes + expected_frames = int((max_date - min_date).total_seconds() // 60 // timeframe_mins) found_missing = False dflen = len(data) if dflen < expected_frames: diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index 883bf4a0f..afd20cf61 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -97,7 +97,7 @@ class Edge: data = history.load_data( datadir=Path(self.config['datadir']), pairs=pairs, - ticker_interval=self.strategy.ticker_interval, + timeframe=self.strategy.ticker_interval, refresh_pairs=self._refresh_pairs, exchange=self.exchange, timerange=self._timerange, diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index ee3a135d2..58fd1f772 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -108,7 +108,7 @@ class Backtesting: data = history.load_data( datadir=Path(self.config['datadir']), pairs=self.config['exchange']['pair_whitelist'], - ticker_interval=self.ticker_interval, + timeframe=self.ticker_interval, timerange=timerange, startup_candles=self.required_startup, fail_without_data=True, diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index bbdb52ca1..01396aea9 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -39,7 +39,7 @@ def init_plotscript(config): tickers = history.load_data( datadir=Path(str(config.get("datadir"))), pairs=pairs, - ticker_interval=config.get('ticker_interval', '5m'), + timeframe=config.get('ticker_interval', '5m'), timerange=timerange, ) @@ -300,12 +300,12 @@ def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame], return fig -def generate_plot_filename(pair, ticker_interval) -> str: +def generate_plot_filename(pair, timeframe) -> str: """ - Generate filenames per pair/ticker_interval to be used for storing plots + Generate filenames per pair/timeframe to be used for storing plots """ pair_name = pair.replace("/", "_") - file_name = 'freqtrade-plot-' + pair_name + '-' + ticker_interval + '.html' + file_name = 'freqtrade-plot-' + pair_name + '-' + timeframe + '.html' logger.info('Generate plot file for %s', pair) @@ -316,8 +316,9 @@ def store_plot_file(fig, filename: str, directory: Path, auto_open: bool = False """ Generate a plot html file from pre populated fig plotly object :param fig: Plotly Figure to plot - :param pair: Pair to plot (used as filename and Plot title) - :param ticker_interval: Used as part of the filename + :param filename: Name to store the file as + :param directory: Directory to store the file in + :param auto_open: Automatically open files saved :return: None """ directory.mkdir(parents=True, exist_ok=True) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index b49344bbd..13711c63e 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -56,7 +56,7 @@ def test_extract_trades_of_period(testdatadir): # 2018-11-14 06:07:00 timerange = TimeRange('date', None, 1510639620, 0) - data = load_pair_history(pair=pair, ticker_interval='1m', + data = load_pair_history(pair=pair, timeframe='1m', datadir=testdatadir, timerange=timerange) trades = DataFrame( @@ -122,7 +122,7 @@ def test_combine_tickers_with_mean(testdatadir): pairs = ["ETH/BTC", "ADA/BTC"] tickers = load_data(datadir=testdatadir, pairs=pairs, - ticker_interval='5m' + timeframe='5m' ) df = combine_tickers_with_mean(tickers) assert isinstance(df, DataFrame) @@ -136,7 +136,7 @@ def test_create_cum_profit(testdatadir): bt_data = load_backtest_data(filename) timerange = TimeRange.parse_timerange("20180110-20180112") - df = load_pair_history(pair="TRX/BTC", ticker_interval='5m', + df = load_pair_history(pair="TRX/BTC", timeframe='5m', datadir=testdatadir, timerange=timerange) cum_profits = create_cum_profit(df.set_index('date'), @@ -154,7 +154,7 @@ def test_create_cum_profit1(testdatadir): bt_data.loc[:, 'close_time'] = bt_data.loc[:, 'close_time'] + DateOffset(seconds=20) timerange = TimeRange.parse_timerange("20180110-20180112") - df = load_pair_history(pair="TRX/BTC", ticker_interval='5m', + df = load_pair_history(pair="TRX/BTC", timeframe='5m', datadir=testdatadir, timerange=timerange) cum_profits = create_cum_profit(df.set_index('date'), diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index e773a970e..92494ff1e 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -23,7 +23,7 @@ def test_parse_ticker_dataframe(ticker_history_list, caplog): def test_ohlcv_fill_up_missing_data(testdatadir, caplog): data = load_pair_history(datadir=testdatadir, - ticker_interval='1m', + timeframe='1m', pair='UNITTEST/BTC', fill_up_missing=False) caplog.set_level(logging.DEBUG) diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index 9a857750b..0318e5a82 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -45,7 +45,7 @@ def test_historic_ohlcv(mocker, default_conf, ticker_history): data = dp.historic_ohlcv("UNITTEST/BTC", "5m") assert isinstance(data, DataFrame) assert historymock.call_count == 1 - assert historymock.call_args_list[0][1]["ticker_interval"] == "5m" + assert historymock.call_args_list[0][1]["timeframe"] == "5m" def test_get_pair_dataframe(mocker, default_conf, ticker_history): diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 89120b4f5..65feaf03e 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -64,20 +64,20 @@ def _clean_test_file(file: Path) -> None: def test_load_data_30min_ticker(mocker, caplog, default_conf, testdatadir) -> None: - ld = history.load_pair_history(pair='UNITTEST/BTC', ticker_interval='30m', datadir=testdatadir) + ld = history.load_pair_history(pair='UNITTEST/BTC', timeframe='30m', datadir=testdatadir) assert isinstance(ld, DataFrame) assert not log_has( - 'Download history data for pair: "UNITTEST/BTC", interval: 30m ' + 'Download history data for pair: "UNITTEST/BTC", timeframe: 30m ' 'and store in None.', caplog ) def test_load_data_7min_ticker(mocker, caplog, default_conf, testdatadir) -> None: - ld = history.load_pair_history(pair='UNITTEST/BTC', ticker_interval='7m', datadir=testdatadir) + ld = history.load_pair_history(pair='UNITTEST/BTC', timeframe='7m', datadir=testdatadir) assert not isinstance(ld, DataFrame) assert ld is None assert log_has( - 'No history data for pair: "UNITTEST/BTC", interval: 7m. ' + 'No history data for pair: "UNITTEST/BTC", timeframe: 7m. ' 'Use `freqtrade download-data` to download the data', caplog ) @@ -86,7 +86,7 @@ def test_load_data_1min_ticker(ticker_history, mocker, caplog, testdatadir) -> N mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history) file = testdatadir / 'UNITTEST_BTC-1m.json' _backup_file(file, copy_file=True) - history.load_data(datadir=testdatadir, ticker_interval='1m', pairs=['UNITTEST/BTC']) + history.load_data(datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC']) assert file.is_file() assert not log_has( 'Download history data for pair: "UNITTEST/BTC", interval: 1m ' @@ -99,7 +99,7 @@ def test_load_data_startup_candles(mocker, caplog, default_conf, testdatadir) -> ltfmock = mocker.patch('freqtrade.data.history.load_tickerdata_file', MagicMock(return_value=None)) timerange = TimeRange('date', None, 1510639620, 0) - history.load_pair_history(pair='UNITTEST/BTC', ticker_interval='1m', + history.load_pair_history(pair='UNITTEST/BTC', timeframe='1m', datadir=testdatadir, timerange=timerange, startup_candles=20, ) @@ -122,28 +122,28 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, _backup_file(file) # do not download a new pair if refresh_pairs isn't set history.load_pair_history(datadir=testdatadir, - ticker_interval='1m', + timeframe='1m', pair='MEME/BTC') assert not file.is_file() assert log_has( - 'No history data for pair: "MEME/BTC", interval: 1m. ' + 'No history data for pair: "MEME/BTC", timeframe: 1m. ' 'Use `freqtrade download-data` to download the data', caplog ) # download a new pair if refresh_pairs is set history.load_pair_history(datadir=testdatadir, - ticker_interval='1m', + timeframe='1m', refresh_pairs=True, exchange=exchange, pair='MEME/BTC') assert file.is_file() assert log_has_re( - 'Download history data for pair: "MEME/BTC", interval: 1m ' + 'Download history data for pair: "MEME/BTC", timeframe: 1m ' 'and store in .*', caplog ) with pytest.raises(OperationalException, match=r'Exchange needs to be initialized when.*'): history.load_pair_history(datadir=testdatadir, - ticker_interval='1m', + timeframe='1m', refresh_pairs=True, exchange=None, pair='MEME/BTC') @@ -269,10 +269,10 @@ def test_download_pair_history(ticker_history_list, mocker, default_conf, testda assert download_pair_history(datadir=testdatadir, exchange=exchange, pair='MEME/BTC', - ticker_interval='1m') + timeframe='1m') assert download_pair_history(datadir=testdatadir, exchange=exchange, pair='CFI/BTC', - ticker_interval='1m') + timeframe='1m') assert not exchange._pairs_last_refresh_time assert file1_1.is_file() assert file2_1.is_file() @@ -286,10 +286,10 @@ def test_download_pair_history(ticker_history_list, mocker, default_conf, testda assert download_pair_history(datadir=testdatadir, exchange=exchange, pair='MEME/BTC', - ticker_interval='5m') + timeframe='5m') assert download_pair_history(datadir=testdatadir, exchange=exchange, pair='CFI/BTC', - ticker_interval='5m') + timeframe='5m') assert not exchange._pairs_last_refresh_time assert file1_5.is_file() assert file2_5.is_file() @@ -307,8 +307,8 @@ def test_download_pair_history2(mocker, default_conf, testdatadir) -> None: json_dump_mock = mocker.patch('freqtrade.misc.file_dump_json', return_value=None) mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=tick) exchange = get_patched_exchange(mocker, default_conf) - download_pair_history(testdatadir, exchange, pair="UNITTEST/BTC", ticker_interval='1m') - download_pair_history(testdatadir, exchange, pair="UNITTEST/BTC", ticker_interval='3m') + download_pair_history(testdatadir, exchange, pair="UNITTEST/BTC", timeframe='1m') + download_pair_history(testdatadir, exchange, pair="UNITTEST/BTC", timeframe='3m') assert json_dump_mock.call_count == 2 @@ -326,12 +326,12 @@ def test_download_backtesting_data_exception(ticker_history, mocker, caplog, assert not download_pair_history(datadir=testdatadir, exchange=exchange, pair='MEME/BTC', - ticker_interval='1m') + timeframe='1m') # clean files freshly downloaded _clean_test_file(file1_1) _clean_test_file(file1_5) assert log_has( - 'Failed to download history data for pair: "MEME/BTC", interval: 1m. ' + 'Failed to download history data for pair: "MEME/BTC", timeframe: 1m. ' 'Error: File Error', caplog ) @@ -369,7 +369,7 @@ def test_load_partial_missing(testdatadir, caplog) -> None: caplog.clear() start = arrow.get('2018-01-10T00:00:00') end = arrow.get('2018-02-20T00:00:00') - tickerdata = history.load_data(datadir=testdatadir, ticker_interval='5m', + tickerdata = history.load_data(datadir=testdatadir, timeframe='5m', pairs=['UNITTEST/BTC'], timerange=TimeRange('date', 'date', start.timestamp, end.timestamp)) @@ -390,7 +390,7 @@ def test_init(default_conf, mocker) -> None: exchange=exchange, pairs=[], refresh_pairs=True, - ticker_interval=default_conf['ticker_interval'] + timeframe=default_conf['ticker_interval'] ) @@ -449,7 +449,7 @@ def test_trim_tickerlist(testdatadir) -> None: def test_trim_dataframe(testdatadir) -> None: data = history.load_data( datadir=testdatadir, - ticker_interval='1m', + timeframe='1m', pairs=['UNITTEST/BTC'] )['UNITTEST/BTC'] min_date = int(data.iloc[0]['date'].timestamp()) @@ -517,7 +517,7 @@ def test_get_timeframe(default_conf, mocker, testdatadir) -> None: data = strategy.tickerdata_to_dataframe( history.load_data( datadir=testdatadir, - ticker_interval='1m', + timeframe='1m', pairs=['UNITTEST/BTC'] ) ) @@ -533,7 +533,7 @@ def test_validate_backtest_data_warn(default_conf, mocker, caplog, testdatadir) data = strategy.tickerdata_to_dataframe( history.load_data( datadir=testdatadir, - ticker_interval='1m', + timeframe='1m', pairs=['UNITTEST/BTC'], fill_up_missing=False ) @@ -556,7 +556,7 @@ def test_validate_backtest_data(default_conf, mocker, caplog, testdatadir) -> No data = strategy.tickerdata_to_dataframe( history.load_data( datadir=testdatadir, - ticker_interval='5m', + timeframe='5m', pairs=['UNITTEST/BTC'], timerange=timerange ) @@ -669,10 +669,10 @@ def test_convert_trades_to_ohlcv(mocker, default_conf, testdatadir, caplog): file5 = testdatadir / 'XRP_ETH-5m.json' # Compare downloaded dataset with converted dataset dfbak_1m = history.load_pair_history(datadir=testdatadir, - ticker_interval="1m", + timeframe="1m", pair=pair) dfbak_5m = history.load_pair_history(datadir=testdatadir, - ticker_interval="5m", + timeframe="5m", pair=pair) _backup_file(file1, copy_file=True) @@ -686,10 +686,10 @@ def test_convert_trades_to_ohlcv(mocker, default_conf, testdatadir, caplog): assert log_has("Deleting existing data for pair XRP/ETH, interval 1m.", caplog) # Load new data df_1m = history.load_pair_history(datadir=testdatadir, - ticker_interval="1m", + timeframe="1m", pair=pair) df_5m = history.load_pair_history(datadir=testdatadir, - ticker_interval="5m", + timeframe="5m", pair=pair) assert df_1m.equals(dfbak_1m) diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index e1af50768..001dc9591 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -255,7 +255,7 @@ def test_edge_heartbeat_calculate(mocker, edge_conf): assert edge.calculate() is False -def mocked_load_data(datadir, pairs=[], ticker_interval='0m', refresh_pairs=False, +def mocked_load_data(datadir, pairs=[], timeframe='0m', refresh_pairs=False, timerange=None, exchange=None, *args, **kwargs): hz = 0.1 base = 0.001 diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 5912c5489..a5ab6d84c 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -50,7 +50,7 @@ def trim_dictlist(dict_list, num): def load_data_test(what, testdatadir): timerange = TimeRange.parse_timerange('1510694220-1510700340') - pair = history.load_tickerdata_file(testdatadir, ticker_interval='1m', + pair = history.load_tickerdata_file(testdatadir, timeframe='1m', pair='UNITTEST/BTC', timerange=timerange) datalen = len(pair) @@ -116,7 +116,7 @@ def simple_backtest(config, contour, num_results, mocker, testdatadir) -> None: assert len(results) == num_results -def mocked_load_data(datadir, pairs=[], ticker_interval='0m', refresh_pairs=False, +def mocked_load_data(datadir, pairs=[], timeframe='0m', refresh_pairs=False, timerange=None, exchange=None, live=False, *args, **kwargs): tickerdata = history.load_tickerdata_file(datadir, 'UNITTEST/BTC', '1m', timerange=timerange) pairdata = {'UNITTEST/BTC': parse_ticker_dataframe(tickerdata, '1m', pair="UNITTEST/BTC", @@ -126,14 +126,14 @@ def mocked_load_data(datadir, pairs=[], ticker_interval='0m', refresh_pairs=Fals # use for mock ccxt.fetch_ohlvc' def _load_pair_as_ticks(pair, tickfreq): - ticks = history.load_tickerdata_file(None, ticker_interval=tickfreq, pair=pair) + ticks = history.load_tickerdata_file(None, timeframe=tickfreq, pair=pair) ticks = ticks[-201:] return ticks # FIX: fixturize this? def _make_backtest_conf(mocker, datadir, conf=None, pair='UNITTEST/BTC', record=None): - data = history.load_data(datadir=datadir, ticker_interval='1m', pairs=[pair]) + data = history.load_data(datadir=datadir, timeframe='1m', pairs=[pair]) data = trim_dictlist(data, -201) patch_exchange(mocker) backtesting = Backtesting(conf) @@ -522,7 +522,7 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: backtesting = Backtesting(default_conf) pair = 'UNITTEST/BTC' timerange = TimeRange('date', None, 1517227800, 0) - data = history.load_data(datadir=testdatadir, ticker_interval='5m', pairs=['UNITTEST/BTC'], + data = history.load_data(datadir=testdatadir, timeframe='5m', pairs=['UNITTEST/BTC'], timerange=timerange) data_processed = backtesting.strategy.tickerdata_to_dataframe(data) min_date, max_date = get_timeframe(data_processed) @@ -576,9 +576,9 @@ def test_backtest_1min_ticker_interval(default_conf, fee, mocker, testdatadir) - patch_exchange(mocker) backtesting = Backtesting(default_conf) - # Run a backtesting for an exiting 1min ticker_interval + # Run a backtesting for an exiting 1min timeframe timerange = TimeRange.parse_timerange('1510688220-1510700340') - data = history.load_data(datadir=testdatadir, ticker_interval='1m', pairs=['UNITTEST/BTC'], + data = history.load_data(datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC'], timerange=timerange) processed = backtesting.strategy.tickerdata_to_dataframe(data) min_date, max_date = get_timeframe(processed) @@ -688,7 +688,7 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) patch_exchange(mocker) pairs = ['ADA/BTC', 'DASH/BTC', 'ETH/BTC', 'LTC/BTC', 'NXT/BTC'] - data = history.load_data(datadir=testdatadir, ticker_interval='5m', pairs=pairs) + data = history.load_data(datadir=testdatadir, timeframe='5m', pairs=pairs) # Only use 500 lines to increase performance data = trim_dictlist(data, -500) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 4a6efcd8e..f0d9578ac 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -64,7 +64,7 @@ def test_add_indicators(default_conf, testdatadir, caplog): pair = "UNITTEST/BTC" timerange = TimeRange(None, 'line', 0, -1000) - data = history.load_pair_history(pair=pair, ticker_interval='1m', + data = history.load_pair_history(pair=pair, timeframe='1m', datadir=testdatadir, timerange=timerange) indicators1 = ["ema10"] indicators2 = ["macd"] @@ -129,7 +129,7 @@ def test_generate_candlestick_graph_no_signals_no_trades(default_conf, mocker, t pair = "UNITTEST/BTC" timerange = TimeRange(None, 'line', 0, -1000) - data = history.load_pair_history(pair=pair, ticker_interval='1m', + data = history.load_pair_history(pair=pair, timeframe='1m', datadir=testdatadir, timerange=timerange) data['buy'] = 0 data['sell'] = 0 @@ -164,7 +164,7 @@ def test_generate_candlestick_graph_no_trades(default_conf, mocker, testdatadir) MagicMock(side_effect=fig_generating_mock)) pair = 'UNITTEST/BTC' timerange = TimeRange(None, 'line', 0, -1000) - data = history.load_pair_history(pair=pair, ticker_interval='1m', + data = history.load_pair_history(pair=pair, timeframe='1m', datadir=testdatadir, timerange=timerange) # Generate buy/sell signals and indicators @@ -228,7 +228,7 @@ def test_add_profit(testdatadir): bt_data = load_backtest_data(filename) timerange = TimeRange.parse_timerange("20180110-20180112") - df = history.load_pair_history(pair="TRX/BTC", ticker_interval='5m', + df = history.load_pair_history(pair="TRX/BTC", timeframe='5m', datadir=testdatadir, timerange=timerange) fig = generate_empty_figure() @@ -251,7 +251,7 @@ def test_generate_profit_graph(testdatadir): tickers = history.load_data(datadir=testdatadir, pairs=pairs, - ticker_interval='5m', + timeframe='5m', timerange=timerange ) trades = trades[trades['pair'].isin(pairs)] From 08aedc18e1eb2bf7ff0ead368ec043c5585c17f2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 Nov 2019 20:25:18 +0100 Subject: [PATCH 0960/3421] Exchange ticker_interval with timeframe in some more places --- freqtrade/data/dataprovider.py | 13 ++++--- freqtrade/data/history.py | 2 +- freqtrade/exchange/exchange.py | 67 ++++++++++++++++----------------- tests/exchange/test_exchange.py | 4 +- 4 files changed, 43 insertions(+), 43 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index ce4554cbb..db71ff029 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -37,7 +37,7 @@ class DataProvider: @property def available_pairs(self) -> List[Tuple[str, str]]: """ - Return a list of tuples containing pair, ticker_interval for which data is currently cached. + Return a list of tuples containing (pair, timeframe) for which data is currently cached. Should be whitelist + open trades. """ return list(self._exchange._klines.keys()) @@ -68,21 +68,22 @@ class DataProvider: datadir=Path(self._config['datadir']) ) - def get_pair_dataframe(self, pair: str, ticker_interval: str = None) -> DataFrame: + def get_pair_dataframe(self, pair: str, timeframe: str = None) -> DataFrame: """ Return pair ohlcv data, either live or cached historical -- depending on the runmode. :param pair: pair to get the data for - :param ticker_interval: ticker interval to get data for + :param timeframe: ticker interval to get data for + :return: Dataframe for this pair """ if self.runmode in (RunMode.DRY_RUN, RunMode.LIVE): # Get live ohlcv data. - data = self.ohlcv(pair=pair, timeframe=ticker_interval) + data = self.ohlcv(pair=pair, timeframe=timeframe) else: # Get historic ohlcv data (cached on disk). - data = self.historic_ohlcv(pair=pair, timeframe=ticker_interval) + data = self.historic_ohlcv(pair=pair, timeframe=timeframe) if len(data) == 0: - logger.warning(f"No data found for ({pair}, {ticker_interval}).") + logger.warning(f"No data found for ({pair}, {timeframe}).") return data def market(self, pair: str) -> Optional[Dict[str, Any]]: diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 8e4bc8ced..3dea41c55 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -308,7 +308,7 @@ def download_pair_history(datadir: Path, logger.debug("Current End: %s", misc.format_ms_time(data[-1][0]) if data else 'None') # Default since_ms to 30 days if nothing is given - new_data = exchange.get_historic_ohlcv(pair=pair, ticker_interval=timeframe, + new_data = exchange.get_historic_ohlcv(pair=pair, timeframe=timeframe, since_ms=since_ms if since_ms else int(arrow.utcnow().shift( diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index a198e8cdb..05db45c9b 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -536,40 +536,40 @@ class Exchange: logger.info("returning cached ticker-data for %s", pair) return self._cached_ticker[pair] - def get_historic_ohlcv(self, pair: str, ticker_interval: str, + def get_historic_ohlcv(self, pair: str, timeframe: str, since_ms: int) -> List: """ Gets candle history using asyncio and returns the list of candles. Handles all async doing. Async over one pair, assuming we get `_ohlcv_candle_limit` candles per call. :param pair: Pair to download - :param ticker_interval: Interval to get + :param timeframe: Ticker Timeframe to get :param since_ms: Timestamp in milliseconds to get history from :returns List of tickers """ return asyncio.get_event_loop().run_until_complete( - self._async_get_historic_ohlcv(pair=pair, ticker_interval=ticker_interval, + self._async_get_historic_ohlcv(pair=pair, timeframe=timeframe, since_ms=since_ms)) async def _async_get_historic_ohlcv(self, pair: str, - ticker_interval: str, + timeframe: str, since_ms: int) -> List: - one_call = timeframe_to_msecs(ticker_interval) * self._ohlcv_candle_limit + one_call = timeframe_to_msecs(timeframe) * self._ohlcv_candle_limit logger.debug( "one_call: %s msecs (%s)", one_call, arrow.utcnow().shift(seconds=one_call // 1000).humanize(only_distance=True) ) input_coroutines = [self._async_get_candle_history( - pair, ticker_interval, since) for since in + pair, timeframe, since) for since in range(since_ms, arrow.utcnow().timestamp * 1000, one_call)] tickers = await asyncio.gather(*input_coroutines, return_exceptions=True) # Combine tickers data: List = [] - for p, ticker_interval, ticker in tickers: + for p, timeframe, ticker in tickers: if p == pair: data.extend(ticker) # Sort data again after extending the result - above calls return in "async order" @@ -589,14 +589,14 @@ class Exchange: input_coroutines = [] # Gather coroutines to run - for pair, ticker_interval in set(pair_list): - if (not ((pair, ticker_interval) in self._klines) - or self._now_is_time_to_refresh(pair, ticker_interval)): - input_coroutines.append(self._async_get_candle_history(pair, ticker_interval)) + for pair, timeframe in set(pair_list): + if (not ((pair, timeframe) in self._klines) + or self._now_is_time_to_refresh(pair, timeframe)): + input_coroutines.append(self._async_get_candle_history(pair, timeframe)) else: logger.debug( - "Using cached ohlcv data for pair %s, interval %s ...", - pair, ticker_interval + "Using cached ohlcv data for pair %s, timeframe %s ...", + pair, timeframe ) tickers = asyncio.get_event_loop().run_until_complete( @@ -608,40 +608,40 @@ class Exchange: logger.warning("Async code raised an exception: %s", res.__class__.__name__) continue pair = res[0] - ticker_interval = res[1] + timeframe = res[1] ticks = res[2] # keeping last candle time as last refreshed time of the pair if ticks: - self._pairs_last_refresh_time[(pair, ticker_interval)] = ticks[-1][0] // 1000 + self._pairs_last_refresh_time[(pair, timeframe)] = ticks[-1][0] // 1000 # keeping parsed dataframe in cache - self._klines[(pair, ticker_interval)] = parse_ticker_dataframe( - ticks, ticker_interval, pair=pair, fill_missing=True, + self._klines[(pair, timeframe)] = parse_ticker_dataframe( + ticks, timeframe, pair=pair, fill_missing=True, drop_incomplete=self._ohlcv_partial_candle) return tickers - def _now_is_time_to_refresh(self, pair: str, ticker_interval: str) -> bool: + def _now_is_time_to_refresh(self, pair: str, timeframe: str) -> bool: # Calculating ticker interval in seconds - interval_in_sec = timeframe_to_seconds(ticker_interval) + interval_in_sec = timeframe_to_seconds(timeframe) - return not ((self._pairs_last_refresh_time.get((pair, ticker_interval), 0) + return not ((self._pairs_last_refresh_time.get((pair, timeframe), 0) + interval_in_sec) >= arrow.utcnow().timestamp) @retrier_async - async def _async_get_candle_history(self, pair: str, ticker_interval: str, + async def _async_get_candle_history(self, pair: str, timeframe: str, since_ms: Optional[int] = None) -> Tuple[str, str, List]: """ Asynchronously gets candle histories using fetch_ohlcv - returns tuple: (pair, ticker_interval, ohlcv_list) + returns tuple: (pair, timeframe, ohlcv_list) """ try: # fetch ohlcv asynchronously s = '(' + arrow.get(since_ms // 1000).isoformat() + ') ' if since_ms is not None else '' logger.debug( "Fetching pair %s, interval %s, since %s %s...", - pair, ticker_interval, since_ms, s + pair, timeframe, since_ms, s ) - data = await self._api_async.fetch_ohlcv(pair, timeframe=ticker_interval, + data = await self._api_async.fetch_ohlcv(pair, timeframe=timeframe, since=since_ms) # Because some exchange sort Tickers ASC and other DESC. @@ -653,9 +653,9 @@ class Exchange: data = sorted(data, key=lambda x: x[0]) except IndexError: logger.exception("Error loading %s. Result was %s.", pair, data) - return pair, ticker_interval, [] - logger.debug("Done fetching pair %s, interval %s ...", pair, ticker_interval) - return pair, ticker_interval, data + return pair, timeframe, [] + logger.debug("Done fetching pair %s, interval %s ...", pair, timeframe) + return pair, timeframe, data except ccxt.NotSupported as e: raise OperationalException( @@ -802,7 +802,6 @@ class Exchange: Handles all async doing. Async over one pair, assuming we get `_ohlcv_candle_limit` candles per call. :param pair: Pair to download - :param ticker_interval: Interval to get :param since: Timestamp in milliseconds to get history from :param until: Timestamp in milliseconds. Defaults to current timestamp if not defined. :param from_id: Download data starting with ID (if id is known) @@ -958,27 +957,27 @@ def available_exchanges(ccxt_module=None) -> List[str]: return [x for x in exchanges if not is_exchange_bad(x)] -def timeframe_to_seconds(ticker_interval: str) -> int: +def timeframe_to_seconds(timeframe: str) -> int: """ Translates the timeframe interval value written in the human readable form ('1m', '5m', '1h', '1d', '1w', etc.) to the number of seconds for one timeframe interval. """ - return ccxt.Exchange.parse_timeframe(ticker_interval) + return ccxt.Exchange.parse_timeframe(timeframe) -def timeframe_to_minutes(ticker_interval: str) -> int: +def timeframe_to_minutes(timeframe: str) -> int: """ Same as timeframe_to_seconds, but returns minutes. """ - return ccxt.Exchange.parse_timeframe(ticker_interval) // 60 + return ccxt.Exchange.parse_timeframe(timeframe) // 60 -def timeframe_to_msecs(ticker_interval: str) -> int: +def timeframe_to_msecs(timeframe: str) -> int: """ Same as timeframe_to_seconds, but returns milliseconds. """ - return ccxt.Exchange.parse_timeframe(ticker_interval) * 1000 + return ccxt.Exchange.parse_timeframe(timeframe) * 1000 def timeframe_to_prev_date(timeframe: str, date: datetime = None) -> datetime: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 925a53c95..68fac8632 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1107,7 +1107,7 @@ def test_refresh_latest_ohlcv(mocker, default_conf, caplog) -> None: exchange.refresh_latest_ohlcv([('IOTA/ETH', '5m'), ('XRP/ETH', '5m')]) assert exchange._api_async.fetch_ohlcv.call_count == 2 - assert log_has(f"Using cached ohlcv data for pair {pairs[0][0]}, interval {pairs[0][1]} ...", + assert log_has(f"Using cached ohlcv data for pair {pairs[0][0]}, timeframe {pairs[0][1]} ...", caplog) @@ -1143,7 +1143,7 @@ async def test__async_get_candle_history(default_conf, mocker, caplog, exchange_ # exchange = Exchange(default_conf) await async_ccxt_exception(mocker, default_conf, MagicMock(), "_async_get_candle_history", "fetch_ohlcv", - pair='ABCD/BTC', ticker_interval=default_conf['ticker_interval']) + pair='ABCD/BTC', timeframe=default_conf['ticker_interval']) api_mock = MagicMock() with pytest.raises(OperationalException, match=r'Could not fetch ticker data*'): From d801dec6aa45fb1eb8271ad8166e9b44a9608e53 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 Nov 2019 20:26:26 +0100 Subject: [PATCH 0961/3421] Some more places with ticker_interval gone --- freqtrade/optimize/backtesting.py | 10 +++++----- tests/data/test_converter.py | 12 ++++++------ tests/data/test_dataprovider.py | 24 ++++++++++++------------ tests/exchange/test_exchange.py | 4 ++-- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 58fd1f772..79478076b 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -83,8 +83,8 @@ class Backtesting: if "ticker_interval" not in self.config: raise OperationalException("Ticker-interval needs to be set in either configuration " "or as cli argument `--ticker-interval 5m`") - self.ticker_interval = str(self.config.get('ticker_interval')) - self.ticker_interval_mins = timeframe_to_minutes(self.ticker_interval) + self.timeframe = str(self.config.get('ticker_interval')) + self.timeframe_mins = timeframe_to_minutes(self.timeframe) # Get maximum required startup period self.required_startup = max([strat.startup_candle_count for strat in self.strategylist]) @@ -108,7 +108,7 @@ class Backtesting: data = history.load_data( datadir=Path(self.config['datadir']), pairs=self.config['exchange']['pair_whitelist'], - timeframe=self.ticker_interval, + timeframe=self.timeframe, timerange=timerange, startup_candles=self.required_startup, fail_without_data=True, @@ -375,7 +375,7 @@ class Backtesting: lock_pair_until: Dict = {} # Indexes per pair, so some pairs are allowed to have a missing start. indexes: Dict = {} - tmp = start_date + timedelta(minutes=self.ticker_interval_mins) + tmp = start_date + timedelta(minutes=self.timeframe_mins) # Loop timerange and get candle for each pair at that point in time while tmp < end_date: @@ -427,7 +427,7 @@ class Backtesting: lock_pair_until[pair] = end_date.datetime # Move time one configured time_interval ahead. - tmp += timedelta(minutes=self.ticker_interval_mins) + tmp += timedelta(minutes=self.timeframe_mins) return DataFrame.from_records(trades, columns=BacktestResult._fields) def start(self) -> None: diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index 92494ff1e..8184167b3 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -42,7 +42,7 @@ def test_ohlcv_fill_up_missing_data(testdatadir, caplog): def test_ohlcv_fill_up_missing_data2(caplog): - ticker_interval = '5m' + timeframe = '5m' ticks = [[ 1511686200000, # 8:50:00 8.794e-05, # open @@ -78,10 +78,10 @@ def test_ohlcv_fill_up_missing_data2(caplog): ] # Generate test-data without filling missing - data = parse_ticker_dataframe(ticks, ticker_interval, pair="UNITTEST/BTC", fill_missing=False) + data = parse_ticker_dataframe(ticks, timeframe, pair="UNITTEST/BTC", fill_missing=False) assert len(data) == 3 caplog.set_level(logging.DEBUG) - data2 = ohlcv_fill_up_missing_data(data, ticker_interval, "UNITTEST/BTC") + data2 = ohlcv_fill_up_missing_data(data, timeframe, "UNITTEST/BTC") assert len(data2) == 4 # 3rd candle has been filled row = data2.loc[2, :] @@ -99,7 +99,7 @@ def test_ohlcv_fill_up_missing_data2(caplog): def test_ohlcv_drop_incomplete(caplog): - ticker_interval = '1d' + timeframe = '1d' ticks = [[ 1559750400000, # 2019-06-04 8.794e-05, # open @@ -134,13 +134,13 @@ def test_ohlcv_drop_incomplete(caplog): ] ] caplog.set_level(logging.DEBUG) - data = parse_ticker_dataframe(ticks, ticker_interval, pair="UNITTEST/BTC", + data = parse_ticker_dataframe(ticks, timeframe, pair="UNITTEST/BTC", fill_missing=False, drop_incomplete=False) assert len(data) == 4 assert not log_has("Dropping last candle", caplog) # Drop last candle - data = parse_ticker_dataframe(ticks, ticker_interval, pair="UNITTEST/BTC", + data = parse_ticker_dataframe(ticks, timeframe, pair="UNITTEST/BTC", fill_missing=False, drop_incomplete=True) assert len(data) == 3 diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index 0318e5a82..1dbe20936 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -9,32 +9,32 @@ from tests.conftest import get_patched_exchange def test_ohlcv(mocker, default_conf, ticker_history): default_conf["runmode"] = RunMode.DRY_RUN - ticker_interval = default_conf["ticker_interval"] + timeframe = default_conf["ticker_interval"] exchange = get_patched_exchange(mocker, default_conf) - exchange._klines[("XRP/BTC", ticker_interval)] = ticker_history - exchange._klines[("UNITTEST/BTC", ticker_interval)] = ticker_history + exchange._klines[("XRP/BTC", timeframe)] = ticker_history + exchange._klines[("UNITTEST/BTC", timeframe)] = ticker_history dp = DataProvider(default_conf, exchange) assert dp.runmode == RunMode.DRY_RUN - assert ticker_history.equals(dp.ohlcv("UNITTEST/BTC", ticker_interval)) - assert isinstance(dp.ohlcv("UNITTEST/BTC", ticker_interval), DataFrame) - assert dp.ohlcv("UNITTEST/BTC", ticker_interval) is not ticker_history - assert dp.ohlcv("UNITTEST/BTC", ticker_interval, copy=False) is ticker_history - assert not dp.ohlcv("UNITTEST/BTC", ticker_interval).empty - assert dp.ohlcv("NONESENSE/AAA", ticker_interval).empty + assert ticker_history.equals(dp.ohlcv("UNITTEST/BTC", timeframe)) + assert isinstance(dp.ohlcv("UNITTEST/BTC", timeframe), DataFrame) + assert dp.ohlcv("UNITTEST/BTC", timeframe) is not ticker_history + assert dp.ohlcv("UNITTEST/BTC", timeframe, copy=False) is ticker_history + assert not dp.ohlcv("UNITTEST/BTC", timeframe).empty + assert dp.ohlcv("NONESENSE/AAA", timeframe).empty # Test with and without parameter - assert dp.ohlcv("UNITTEST/BTC", ticker_interval).equals(dp.ohlcv("UNITTEST/BTC")) + assert dp.ohlcv("UNITTEST/BTC", timeframe).equals(dp.ohlcv("UNITTEST/BTC")) default_conf["runmode"] = RunMode.LIVE dp = DataProvider(default_conf, exchange) assert dp.runmode == RunMode.LIVE - assert isinstance(dp.ohlcv("UNITTEST/BTC", ticker_interval), DataFrame) + assert isinstance(dp.ohlcv("UNITTEST/BTC", timeframe), DataFrame) default_conf["runmode"] = RunMode.BACKTEST dp = DataProvider(default_conf, exchange) assert dp.runmode == RunMode.BACKTEST - assert dp.ohlcv("UNITTEST/BTC", ticker_interval).empty + assert dp.ohlcv("UNITTEST/BTC", timeframe).empty def test_historic_ohlcv(mocker, default_conf, ticker_history): diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 68fac8632..a21a5f3ac 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1047,8 +1047,8 @@ def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name): ] pair = 'ETH/BTC' - async def mock_candle_hist(pair, ticker_interval, since_ms): - return pair, ticker_interval, tick + async def mock_candle_hist(pair, timeframe, since_ms): + return pair, timeframe, tick exchange._async_get_candle_history = Mock(wraps=mock_candle_hist) # one_call calculation * 1.8 should do 2 calls From 334ac8b10ccbedd2910cf054b26c18f30e668d96 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 Nov 2019 20:34:06 +0100 Subject: [PATCH 0962/3421] Adapt documentation for timeframe --- docs/strategy-customization.md | 8 ++++---- docs/strategy_analysis_example.md | 4 ++-- user_data/notebooks/strategy_analysis_example.ipynb | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 72938f9af..34f86f2ce 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -314,9 +314,9 @@ Please always check the mode of operation to select the correct method to get da #### Possible options for DataProvider - `available_pairs` - Property with tuples listing cached pairs with their intervals (pair, interval). -- `ohlcv(pair, ticker_interval)` - Currently cached ticker data for the pair, returns DataFrame or empty DataFrame. -- `historic_ohlcv(pair, ticker_interval)` - Returns historical data stored on disk. -- `get_pair_dataframe(pair, ticker_interval)` - This is a universal method, which returns either historical data (for backtesting) or cached live data (for the Dry-Run and Live-Run modes). +- `ohlcv(pair, timeframe)` - Currently cached ticker data for the pair, returns DataFrame or empty DataFrame. +- `historic_ohlcv(pair, timeframe)` - Returns historical data stored on disk. +- `get_pair_dataframe(pair, timeframe)` - This is a universal method, which returns either historical data (for backtesting) or cached live data (for the Dry-Run and Live-Run modes). - `orderbook(pair, maximum)` - Returns latest orderbook data for the pair, a dict with bids/asks with a total of `maximum` entries. - `market(pair)` - Returns market data for the pair: fees, limits, precisions, activity flag, etc. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#markets) for more details on Market data structure. - `runmode` - Property containing the current runmode. @@ -327,7 +327,7 @@ Please always check the mode of operation to select the correct method to get da if self.dp: inf_pair, inf_timeframe = self.informative_pairs()[0] informative = self.dp.get_pair_dataframe(pair=inf_pair, - ticker_interval=inf_timeframe) + timeframe=inf_timeframe) ``` !!! Warning "Warning about backtesting" diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index aa4578ca7..9e61bda65 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -10,7 +10,7 @@ from pathlib import Path # Customize these according to your needs. # Define some constants -ticker_interval = "5m" +timeframe = "5m" # Name of the strategy class strategy_name = 'SampleStrategy' # Path to user data @@ -29,7 +29,7 @@ pair = "BTC_USDT" from freqtrade.data.history import load_pair_history candles = load_pair_history(datadir=data_location, - ticker_interval=ticker_interval, + timeframe=timeframe, pair=pair) # Confirm success diff --git a/user_data/notebooks/strategy_analysis_example.ipynb b/user_data/notebooks/strategy_analysis_example.ipynb index 03dc83b4e..2876ea938 100644 --- a/user_data/notebooks/strategy_analysis_example.ipynb +++ b/user_data/notebooks/strategy_analysis_example.ipynb @@ -26,7 +26,7 @@ "# Customize these according to your needs.\n", "\n", "# Define some constants\n", - "ticker_interval = \"5m\"\n", + "timeframe = \"5m\"\n", "# Name of the strategy class\n", "strategy_name = 'SampleStrategy'\n", "# Path to user data\n", @@ -49,7 +49,7 @@ "from freqtrade.data.history import load_pair_history\n", "\n", "candles = load_pair_history(datadir=data_location,\n", - " ticker_interval=ticker_interval,\n", + " timeframe=timeframe,\n", " pair=pair)\n", "\n", "# Confirm success\n", From 1c57a4ac35435914b1a7330129185ee6dec55be1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 Nov 2019 20:34:39 +0100 Subject: [PATCH 0963/3421] more replacements of ticker_interval --- freqtrade/constants.py | 4 ++-- freqtrade/data/btanalysis.py | 6 +++--- freqtrade/optimize/backtesting.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 5fdd45916..f34232bb1 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -24,7 +24,7 @@ AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList'] DRY_RUN_WALLET = 999.9 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons -TICKER_INTERVALS = [ +TIMEFRAMES = [ '1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', '6h', '8h', '12h', '1d', '3d', '1w', @@ -57,7 +57,7 @@ CONF_SCHEMA = { 'type': 'object', 'properties': { 'max_open_trades': {'type': 'integer', 'minimum': -1}, - 'ticker_interval': {'type': 'string', 'enum': TICKER_INTERVALS}, + 'ticker_interval': {'type': 'string', 'enum': TIMEFRAMES}, 'stake_currency': {'type': 'string', 'enum': ['BTC', 'XBT', 'ETH', 'USDT', 'EUR', 'USD']}, 'stake_amount': { "type": ["number", "string"], diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 2f7a234ce..379c80060 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -178,9 +178,9 @@ def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str, :return: Returns df with one additional column, col_name, containing the cumulative profit. """ from freqtrade.exchange import timeframe_to_minutes - ticker_minutes = timeframe_to_minutes(timeframe) - # Resample to ticker_interval to make sure trades match candles - _trades_sum = trades.resample(f'{ticker_minutes}min', on='close_time')[['profitperc']].sum() + timeframe_minutes = timeframe_to_minutes(timeframe) + # Resample to timeframe to make sure trades match candles + _trades_sum = trades.resample(f'{timeframe_minutes}min', on='close_time')[['profitperc']].sum() df.loc[:, col_name] = _trades_sum.cumsum() # Set first value to 0 df.loc[df.iloc[0].name, col_name] = 0 diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 79478076b..2c2d116a4 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -121,7 +121,7 @@ class Backtesting: min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days ) # Adjust startts forward if not enough data is available - timerange.adjust_start_if_necessary(timeframe_to_seconds(self.ticker_interval), + timerange.adjust_start_if_necessary(timeframe_to_seconds(self.timeframe), self.required_startup, min_date) return data, timerange From c449e3928057213d14d2de2ab6c9f46ac51da5d5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 3 Nov 2019 10:01:05 +0100 Subject: [PATCH 0964/3421] Replace more occurances of ticker_interval --- freqtrade/configuration/timerange.py | 6 +++--- freqtrade/optimize/hyperopt_interface.py | 8 ++++---- tests/optimize/__init__.py | 4 ++-- tests/optimize/test_backtest_detail.py | 4 ++-- tests/optimize/test_backtesting.py | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py index 156f0e1e2..a8be873df 100644 --- a/freqtrade/configuration/timerange.py +++ b/freqtrade/configuration/timerange.py @@ -39,12 +39,12 @@ class TimeRange: if self.startts: self.startts = self.startts - seconds - def adjust_start_if_necessary(self, ticker_interval_secs: int, startup_candles: int, + def adjust_start_if_necessary(self, timeframe_secs: int, startup_candles: int, min_date: arrow.Arrow) -> None: """ Adjust startts by candles. Applies only if no startup-candles have been available. - :param ticker_interval_secs: Ticker interval in seconds e.g. `timeframe_to_seconds('5m')` + :param timeframe_secs: Ticker timeframe in seconds e.g. `timeframe_to_seconds('5m')` :param startup_candles: Number of candles to move start-date forward :param min_date: Minimum data date loaded. Key kriterium to decide if start-time has to be moved @@ -55,7 +55,7 @@ class TimeRange: # If no startts was defined, or backtest-data starts at the defined backtest-date logger.warning("Moving start-date by %s candles to account for startup time.", startup_candles) - self.startts = (min_date.timestamp + ticker_interval_secs * startup_candles) + self.startts = (min_date.timestamp + timeframe_secs * startup_candles) self.starttype = 'date' @staticmethod diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 142f305df..ac41ba92f 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -106,10 +106,10 @@ class IHyperOpt(ABC): roi_t_alpha = 1.0 roi_p_alpha = 1.0 - ticker_interval_mins = timeframe_to_minutes(IHyperOpt.ticker_interval) + timeframe_mins = timeframe_to_minutes(IHyperOpt.ticker_interval) # We define here limits for the ROI space parameters automagically adapted to the - # ticker_interval used by the bot: + # timeframe used by the bot: # # * 'roi_t' (limits for the time intervals in the ROI tables) components # are scaled linearly. @@ -117,8 +117,8 @@ class IHyperOpt(ABC): # # The scaling is designed so that it maps exactly to the legacy Freqtrade roi_space() # method for the 5m ticker interval. - roi_t_scale = ticker_interval_mins / 5 - roi_p_scale = math.log1p(ticker_interval_mins) / math.log1p(5) + roi_t_scale = timeframe_mins / 5 + roi_p_scale = math.log1p(timeframe_mins) / math.log1p(5) roi_limits = { 'roi_t1_min': int(10 * roi_t_scale * roi_t_alpha), 'roi_t1_max': int(120 * roi_t_scale * roi_t_alpha), diff --git a/tests/optimize/__init__.py b/tests/optimize/__init__.py index fdbaaa54d..8756143a0 100644 --- a/tests/optimize/__init__.py +++ b/tests/optimize/__init__.py @@ -7,7 +7,7 @@ from freqtrade.exchange import timeframe_to_minutes from freqtrade.strategy.interface import SellType ticker_start_time = arrow.get(2018, 10, 3) -tests_ticker_interval = '1h' +tests_timeframe = '1h' class BTrade(NamedTuple): @@ -36,7 +36,7 @@ class BTContainer(NamedTuple): def _get_frame_time_from_offset(offset): - return ticker_start_time.shift(minutes=(offset * timeframe_to_minutes(tests_ticker_interval)) + return ticker_start_time.shift(minutes=(offset * timeframe_to_minutes(tests_timeframe)) ).datetime diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py index 54f4c8796..3f6cc8c9a 100644 --- a/tests/optimize/test_backtest_detail.py +++ b/tests/optimize/test_backtest_detail.py @@ -9,7 +9,7 @@ from freqtrade.optimize.backtesting import Backtesting from freqtrade.strategy.interface import SellType from tests.conftest import patch_exchange from tests.optimize import (BTContainer, BTrade, _build_backtest_dataframe, - _get_frame_time_from_offset, tests_ticker_interval) + _get_frame_time_from_offset, tests_timeframe) # Test 0: Sell with signal sell in candle 3 # Test with Stop-loss at 1% @@ -293,7 +293,7 @@ def test_backtest_results(default_conf, fee, mocker, caplog, data) -> None: """ default_conf["stoploss"] = data.stop_loss default_conf["minimal_roi"] = data.roi - default_conf["ticker_interval"] = tests_ticker_interval + default_conf["ticker_interval"] = tests_timeframe default_conf["trailing_stop"] = data.trailing_stop default_conf["trailing_only_offset_is_reached"] = data.trailing_only_offset_is_reached # Only add this to configuration If it's necessary diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index a5ab6d84c..508c12e89 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -307,7 +307,7 @@ def test_backtesting_init(mocker, default_conf, order_types) -> None: get_fee = mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.5)) backtesting = Backtesting(default_conf) assert backtesting.config == default_conf - assert backtesting.ticker_interval == '5m' + assert backtesting.timeframe == '5m' assert callable(backtesting.strategy.tickerdata_to_dataframe) assert callable(backtesting.strategy.advise_buy) assert callable(backtesting.strategy.advise_sell) From 2eb651325108c9602601c7cd37538ab4886074d5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 Nov 2019 15:43:10 +0100 Subject: [PATCH 0965/3421] Improve timedout handling --- freqtrade/freqtradebot.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 7e9706803..512fc4061 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -139,10 +139,9 @@ class FreqtradeBot: if len(trades) < self.config['max_open_trades']: self.process_maybe_execute_buys() - if 'unfilledtimeout' in self.config: - # Check and handle any timed out open orders - self.check_handle_timedout() - Trade.session.flush() + # Check and handle any timed out open orders + self.check_handle_timedout() + Trade.session.flush() if (self.heartbeat_interval and (arrow.utcnow().timestamp - self._heartbeat_msg > self.heartbeat_interval)): @@ -756,23 +755,28 @@ class FreqtradeBot: return True return False + def _check_timed_out(self, side: str, order: dict) -> bool: + """ + Check if timeout is active, and if the order is still open and timed out + """ + timeout = self.config.get('unfilledtimeout', {}).get(side) + ordertime = arrow.get(order['datetime']).datetime + if timeout: + timeout_threshold = arrow.utcnow().shift(minutes=-timeout).datetime + + return (order['status'] == 'open' and order['side'] == side + and ordertime < timeout_threshold) + return False + def check_handle_timedout(self) -> None: """ Check if any orders are timed out and cancel if neccessary :param timeoutvalue: Number of minutes until order is considered timed out :return: None """ - buy_timeout = self.config['unfilledtimeout']['buy'] - sell_timeout = self.config['unfilledtimeout']['sell'] - buy_timeout_threshold = arrow.utcnow().shift(minutes=-buy_timeout).datetime - sell_timeout_threshold = arrow.utcnow().shift(minutes=-sell_timeout).datetime for trade in Trade.get_open_order_trades(): try: - # FIXME: Somehow the query above returns results - # where the open_order_id is in fact None. - # This is probably because the record got - # updated via /forcesell in a different thread. if not trade.open_order_id: continue order = self.exchange.get_order(trade.open_order_id, trade.pair) @@ -782,7 +786,6 @@ class FreqtradeBot: trade, traceback.format_exc()) continue - ordertime = arrow.get(order['datetime']).datetime # Check if trade is still actually open if float(order['remaining']) == 0.0: @@ -790,15 +793,13 @@ class FreqtradeBot: continue if ((order['side'] == 'buy' and order['status'] == 'canceled') - or (order['status'] == 'open' - and order['side'] == 'buy' and ordertime < buy_timeout_threshold)): + or (self._check_timed_out('buy', order))): self.handle_timedout_limit_buy(trade, order) self.wallets.update() elif ((order['side'] == 'sell' and order['status'] == 'canceled') - or (order['status'] == 'open' - and order['side'] == 'sell' and ordertime < sell_timeout_threshold)): + or (self._check_timed_out('sell', order))): self.handle_timedout_limit_sell(trade, order) self.wallets.update() From 5b62ad876e0792cdd98909ef6904d9ef5bcd6376 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 13 Nov 2019 09:38:06 +0100 Subject: [PATCH 0966/3421] Remove hyperopts occurances --- .travis.yml | 2 +- docs/bot-usage.md | 4 ++-- freqtrade/configuration/cli_options.py | 4 ++-- freqtrade/optimize/__init__.py | 2 +- freqtrade/optimize/hyperopt_interface.py | 6 +++--- freqtrade/optimize/hyperopt_loss_interface.py | 4 ++-- freqtrade/resolvers/hyperopt_resolver.py | 2 +- freqtrade/utils.py | 2 +- user_data/hyperopts/sample_hyperopt.py | 2 +- user_data/hyperopts/sample_hyperopt_advanced.py | 2 +- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.travis.yml b/.travis.yml index a5a8093ec..8aaff553f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,7 +32,7 @@ jobs: name: backtest - script: - cp config.json.example config.json - - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpts + - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt name: hyperopt - script: flake8 name: flake8 diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 8c85965a4..b88e33bd5 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -131,7 +131,7 @@ You can add the entry "user_data_dir" setting to your configuration, to always p Alternatively, pass in `--userdir` to every command. The bot will fail to start if the directory does not exist, but will create necessary subdirectories. -This directory should contain your custom strategies, custom hyperopts and hyperopt loss functions, backtesting historical data (downloaded using either backtesting command or the download script) and plot outputs. +This directory should contain your custom strategies, custom hyperopt and hyperopt loss functions, backtesting historical data (downloaded using either backtesting command or the download script) and plot outputs. It is recommended to use version control to keep track of changes to your strategies. @@ -294,7 +294,7 @@ optional arguments: entry and exit). --hyperopt NAME Specify hyperopt class name which will be used by the bot. - --hyperopt-path PATH Specify additional lookup path for Hyperopts and + --hyperopt-path PATH Specify additional lookup path for Hyperopt and Hyperopt Loss functions. --eps, --enable-position-stacking Allow buying the same pair multiple times (position diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index ff2178108..6dc5ef026 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -166,7 +166,7 @@ AVAILABLE_CLI_OPTIONS = { ), "hyperopt_path": Arg( '--hyperopt-path', - help='Specify additional lookup path for Hyperopts and Hyperopt Loss functions.', + help='Specify additional lookup path for Hyperopt and Hyperopt Loss functions.', metavar='PATH', ), "epochs": Arg( @@ -239,7 +239,7 @@ AVAILABLE_CLI_OPTIONS = { help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). ' 'Different functions can generate completely different results, ' 'since the target for optimization is different. Built-in Hyperopt-loss-functions are: ' - 'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss ' + 'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss.' '(default: `%(default)s`).', metavar='NAME', default=constants.DEFAULT_HYPEROPT_LOSS, diff --git a/freqtrade/optimize/__init__.py b/freqtrade/optimize/__init__.py index 3adf5eb43..1f2f588ef 100644 --- a/freqtrade/optimize/__init__.py +++ b/freqtrade/optimize/__init__.py @@ -78,7 +78,7 @@ def start_hyperopt(args: Dict[str, Any]) -> None: except Timeout: logger.info("Another running instance of freqtrade Hyperopt detected.") logger.info("Simultaneous execution of multiple Hyperopt commands is not supported. " - "Hyperopt module is resource hungry. Please run your Hyperopts sequentially " + "Hyperopt module is resource hungry. Please run your Hyperopt sequentially " "or on separate machines.") logger.info("Quitting now.") # TODO: return False here in order to help freqtrade to exit diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 142f305df..5cfd98632 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -1,6 +1,6 @@ """ IHyperOpt interface -This module defines the interface to apply for hyperopts +This module defines the interface to apply for hyperopt """ import logging import math @@ -27,8 +27,8 @@ def _format_exception_message(method: str, space: str) -> str: class IHyperOpt(ABC): """ - Interface for freqtrade hyperopts - Defines the mandatory structure must follow any custom hyperopts + Interface for freqtrade hyperopt + Defines the mandatory structure must follow any custom hyperopt Class attributes you can use: ticker_interval -> int: value of the ticker interval to use for the strategy diff --git a/freqtrade/optimize/hyperopt_loss_interface.py b/freqtrade/optimize/hyperopt_loss_interface.py index b11b6e661..879a9f0e9 100644 --- a/freqtrade/optimize/hyperopt_loss_interface.py +++ b/freqtrade/optimize/hyperopt_loss_interface.py @@ -1,6 +1,6 @@ """ IHyperOptLoss interface -This module defines the interface for the loss-function for hyperopts +This module defines the interface for the loss-function for hyperopt """ from abc import ABC, abstractmethod @@ -11,7 +11,7 @@ from pandas import DataFrame class IHyperOptLoss(ABC): """ - Interface for freqtrade hyperopts Loss functions. + Interface for freqtrade hyperopt Loss functions. Defines the custom loss function (`hyperopt_loss_function()` which is evaluated every epoch.) """ ticker_interval: str diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 72816a9ce..df1ff182c 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -1,7 +1,7 @@ # pragma pylint: disable=attribute-defined-outside-init """ -This module load custom hyperopts +This module load custom hyperopt """ import logging from pathlib import Path diff --git a/freqtrade/utils.py b/freqtrade/utils.py index ce1f8a7c5..ee7e3296f 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -70,7 +70,7 @@ def start_list_exchanges(args: Dict[str, Any]) -> None: def start_create_userdir(args: Dict[str, Any]) -> None: """ - Create "user_data" directory to contain user data strategies, hyperopts, ...) + Create "user_data" directory to contain user data strategies, hyperopt, ...) :param args: Cli args from Arguments() :return: None """ diff --git a/user_data/hyperopts/sample_hyperopt.py b/user_data/hyperopts/sample_hyperopt.py index 2721ab405..3be05f121 100644 --- a/user_data/hyperopts/sample_hyperopt.py +++ b/user_data/hyperopts/sample_hyperopt.py @@ -12,7 +12,7 @@ import freqtrade.vendor.qtpylib.indicators as qtpylib from freqtrade.optimize.hyperopt_interface import IHyperOpt -class SampleHyperOpts(IHyperOpt): +class SampleHyperOpt(IHyperOpt): """ This is a sample Hyperopt to inspire you. Feel free to customize it. diff --git a/user_data/hyperopts/sample_hyperopt_advanced.py b/user_data/hyperopts/sample_hyperopt_advanced.py index c5d28878c..66182edcf 100644 --- a/user_data/hyperopts/sample_hyperopt_advanced.py +++ b/user_data/hyperopts/sample_hyperopt_advanced.py @@ -14,7 +14,7 @@ import freqtrade.vendor.qtpylib.indicators as qtpylib from freqtrade.optimize.hyperopt_interface import IHyperOpt -class AdvancedSampleHyperOpts(IHyperOpt): +class AdvancedSampleHyperOpt(IHyperOpt): """ This is a sample hyperopt to inspire you. Feel free to customize it. From c42c5a1f85fb38eeefa72a2b0df2da0b18fd25a3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 13 Nov 2019 10:03:59 +0100 Subject: [PATCH 0967/3421] Adjust "requires subcommand" message --- freqtrade/main.py | 9 ++++++--- tests/test_main.py | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/freqtrade/main.py b/freqtrade/main.py index d984ff487..0a2adf71a 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -38,9 +38,12 @@ def main(sysargv: List[str] = None) -> None: else: # No subcommand was issued. raise OperationalException( - "Usage of freqtrade requires a subcommand.\n" - "To use the previous behaviour, run freqtrade with `freqtrade trade [...]`.\n" - "To see a full list of options, please use `freqtrade --help`" + "Usage of Freqtrade requires a subcommand to be specified.\n" + "To have the previous behavior (bot executing trades in live/dry-run modes, " + "depending on the value of the `dry_run` setting in the config), run freqtrade " + "as `freqtrade trade [options...]`.\n" + "To see the full list of options available, please use " + "`freqtrade --help` or `freqtrade --help`." ) except SystemExit as e: diff --git a/tests/test_main.py b/tests/test_main.py index dac960886..4e97c375d 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -18,7 +18,7 @@ from tests.conftest import (log_has, log_has_re, patch_exchange, def test_parse_args_None(caplog) -> None: with pytest.raises(SystemExit): main([]) - assert log_has_re(r"Usage of freqtrade requires a subcommand\.", caplog) + assert log_has_re(r"Usage of Freqtrade requires a subcommand.*", caplog) def test_parse_args_backtesting(mocker) -> None: From 66619204bacefeb3f42d52a6d8f1fbd50cea5a8a Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 13 Nov 2019 11:13:48 +0100 Subject: [PATCH 0968/3421] re-add hyperopts multiple ... --- docs/bot-usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index b88e33bd5..4665878d4 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -131,7 +131,7 @@ You can add the entry "user_data_dir" setting to your configuration, to always p Alternatively, pass in `--userdir` to every command. The bot will fail to start if the directory does not exist, but will create necessary subdirectories. -This directory should contain your custom strategies, custom hyperopt and hyperopt loss functions, backtesting historical data (downloaded using either backtesting command or the download script) and plot outputs. +This directory should contain your custom strategies, custom hyperopts and hyperopt loss functions, backtesting historical data (downloaded using either backtesting command or the download script) and plot outputs. It is recommended to use version control to keep track of changes to your strategies. From 6ac73f7cde81ac04044a956138a1a627991fd1e2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 13 Nov 2019 11:28:26 +0100 Subject: [PATCH 0969/3421] Update missed strings --- freqtrade/data/dataprovider.py | 4 ++-- freqtrade/data/history.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index db71ff029..7b7159145 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -61,7 +61,7 @@ class DataProvider: """ Get stored historic ohlcv data :param pair: pair to get the data for - :param timeframe: ticker interval to get data for + :param timeframe: timeframe to get data for """ return load_pair_history(pair=pair, timeframe=timeframe or self._config['ticker_interval'], @@ -73,7 +73,7 @@ class DataProvider: Return pair ohlcv data, either live or cached historical -- depending on the runmode. :param pair: pair to get the data for - :param timeframe: ticker interval to get data for + :param timeframe: timeframe to get data for :return: Dataframe for this pair """ if self.runmode in (RunMode.DRY_RUN, RunMode.LIVE): diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 3dea41c55..d45b1c890 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -279,7 +279,7 @@ def download_pair_history(datadir: Path, timeframe: str = '5m', timerange: Optional[TimeRange] = None) -> bool: """ - Download the latest ticker intervals from the exchange for the pair passed in parameters + Download latest candles from the exchange for the pair and timeframe passed in parameters The data is downloaded starting from the last correct data that exists in a cache. If timerange starts earlier than the data in the cache, the full data will be redownloaded From 62c1ff776e6faeda8aa6e1acc4acecaf60c84428 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 13 Nov 2019 13:59:38 +0100 Subject: [PATCH 0970/3421] update action to 2.1.0 --- .github/workflows/docker_update_readme.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker_update_readme.yml b/.github/workflows/docker_update_readme.yml index bc063617a..634517dc9 100644 --- a/.github/workflows/docker_update_readme.yml +++ b/.github/workflows/docker_update_readme.yml @@ -10,7 +10,7 @@ jobs: steps: - uses: actions/checkout@master - name: Docker Hub Description - uses: peter-evans/dockerhub-description@v2.0.0 + uses: peter-evans/dockerhub-description@v2.1.0 env: DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} From e26bbc7de8e7d7d876a434f16c91d4e60ead393e Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 13 Nov 2019 19:50:54 +0300 Subject: [PATCH 0971/3421] Add fix for bibox exchange --- freqtrade/exchange/__init__.py | 1 + freqtrade/exchange/bibox.py | 21 +++++++++++++++++++++ freqtrade/exchange/exchange.py | 7 +++++++ 3 files changed, 29 insertions(+) create mode 100644 freqtrade/exchange/bibox.py diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index c107f7abc..df18bca02 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -15,3 +15,4 @@ from freqtrade.exchange.exchange import (market_is_active, # noqa: F401 symbol_is_pair) from freqtrade.exchange.kraken import Kraken # noqa: F401 from freqtrade.exchange.binance import Binance # noqa: F401 +from freqtrade.exchange.bibox import Bibox # noqa: F401 diff --git a/freqtrade/exchange/bibox.py b/freqtrade/exchange/bibox.py new file mode 100644 index 000000000..1f042c221 --- /dev/null +++ b/freqtrade/exchange/bibox.py @@ -0,0 +1,21 @@ +""" Bibox exchange subclass """ +import logging +from typing import Dict + +from freqtrade.exchange import Exchange + +logger = logging.getLogger(__name__) + + +class Bibox(Exchange): + """ + Bibox exchange class. Contains adjustments needed for Freqtrade to work + with this exchange. + + Please note that this exchange is not included in the list of exchanges + officially supported by the Freqtrade development team. So some features + may still not work as expected. + """ + + # Adjust ccxt exchange API metadata info + _ccxt_has: Dict = {"fetchCurrencies": False} diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 05db45c9b..0dd8c4ff2 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -30,6 +30,9 @@ class Exchange: _config: Dict = {} + # Adjustments to ccxt exchange API metadata info (ccxt exchange `has` options) + _ccxt_has: Dict = {} + # Parameters to add directly to buy/sell calls (like agreeing to trading agreement) _params: Dict = {} @@ -152,6 +155,10 @@ class Exchange: except ccxt.BaseError as e: raise OperationalException(f"Initialization of ccxt failed. Reason: {e}") from e + # Adjust ccxt API metadata info (`has` options) for the exchange + for k, v in self._ccxt_has.items(): + api.has[k] = v + self.set_sandbox(api, exchange_config, name) return api From 6174a5dd55aed41764de24e345e9848312879c56 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 13 Nov 2019 20:22:23 +0300 Subject: [PATCH 0972/3421] Reimplement adjustment of ccxt 'has' with more generic ccxt_config class attribute --- freqtrade/exchange/bibox.py | 5 +++-- freqtrade/exchange/exchange.py | 19 +++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/freqtrade/exchange/bibox.py b/freqtrade/exchange/bibox.py index 1f042c221..229abe766 100644 --- a/freqtrade/exchange/bibox.py +++ b/freqtrade/exchange/bibox.py @@ -17,5 +17,6 @@ class Bibox(Exchange): may still not work as expected. """ - # Adjust ccxt exchange API metadata info - _ccxt_has: Dict = {"fetchCurrencies": False} + # fetchCurrencies API point requires authentication for Bibox, + # so switch it off for Freqtrade load_markets() + _ccxt_config: Dict = {"has": {"fetchCurrencies": False}} diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 0dd8c4ff2..30868df07 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -30,8 +30,8 @@ class Exchange: _config: Dict = {} - # Adjustments to ccxt exchange API metadata info (ccxt exchange `has` options) - _ccxt_has: Dict = {} + # Parameters to add directly to ccxt sync/async initialization. + _ccxt_config: Dict = {} # Parameters to add directly to buy/sell calls (like agreeing to trading agreement) _params: Dict = {} @@ -94,10 +94,17 @@ class Exchange: self._trades_pagination_arg = self._ft_has['trades_pagination_arg'] # Initialize ccxt objects + ccxt_config = self._ccxt_config.copy() + ccxt_config = deep_merge_dicts(exchange_config.get('ccxt_config', {}), + ccxt_config) self._api = self._init_ccxt( - exchange_config, ccxt_kwargs=exchange_config.get('ccxt_config')) + exchange_config, ccxt_kwargs=ccxt_config) + + ccxt_async_config = self._ccxt_config.copy() + ccxt_async_config = deep_merge_dicts(exchange_config.get('ccxt_async_config', {}), + ccxt_async_config) self._api_async = self._init_ccxt( - exchange_config, ccxt_async, ccxt_kwargs=exchange_config.get('ccxt_async_config')) + exchange_config, ccxt_async, ccxt_kwargs=ccxt_async_config) logger.info('Using Exchange "%s"', self.name) @@ -155,10 +162,6 @@ class Exchange: except ccxt.BaseError as e: raise OperationalException(f"Initialization of ccxt failed. Reason: {e}") from e - # Adjust ccxt API metadata info (`has` options) for the exchange - for k, v in self._ccxt_has.items(): - api.has[k] = v - self.set_sandbox(api, exchange_config, name) return api From 68904296e7db5a006b8915bd273fc09d509c0c27 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 13 Nov 2019 19:38:38 +0100 Subject: [PATCH 0973/3421] Allow timeout of 0 --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 512fc4061..f7cec080b 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -761,7 +761,7 @@ class FreqtradeBot: """ timeout = self.config.get('unfilledtimeout', {}).get(side) ordertime = arrow.get(order['datetime']).datetime - if timeout: + if timeout is not None: timeout_threshold = arrow.utcnow().shift(minutes=-timeout).datetime return (order['status'] == 'open' and order['side'] == side From c8c48156dd7114b88780a0a119e46a443e356222 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 13 Nov 2019 20:44:55 +0100 Subject: [PATCH 0974/3421] Don't load trades twice ... --- freqtrade/data/history.py | 10 +++++++--- freqtrade/plot/plotting.py | 7 ++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index d45b1c890..ec95be874 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -50,16 +50,20 @@ def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]: return tickerlist[start_index:stop_index] -def trim_dataframe(df: DataFrame, timerange: TimeRange) -> DataFrame: +def trim_dataframe(df: DataFrame, timerange: TimeRange, df_date_col: str = 'date') -> DataFrame: """ Trim dataframe based on given timerange + :param df: Dataframe to trim + :param timerange: timerange (use start and end date if available) + :param: df_date_col: Column in the dataframe to use as Date column + :return: trimmed dataframe """ if timerange.starttype == 'date': start = datetime.fromtimestamp(timerange.startts, tz=timezone.utc) - df = df.loc[df['date'] >= start, :] + df = df.loc[df[df_date_col] >= start, :] if timerange.stoptype == 'date': stop = datetime.fromtimestamp(timerange.stopts, tz=timezone.utc) - df = df.loc[df['date'] <= stop, :] + df = df.loc[df[df_date_col] <= stop, :] return df diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 01396aea9..6f78802ba 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -47,7 +47,7 @@ def init_plotscript(config): db_url=config.get('db_url'), exportfilename=config.get('exportfilename'), ) - + trades = history.trim_dataframe(trades, timerange, 'open_time') return {"tickers": tickers, "trades": trades, "pairs": pairs, @@ -377,10 +377,7 @@ def plot_profit(config: Dict[str, Any]) -> None: in helping out to find a good algorithm. """ plot_elements = init_plotscript(config) - trades = load_trades(config['trade_source'], - db_url=str(config.get('db_url')), - exportfilename=str(config.get('exportfilename')), - ) + trades = plot_elements['trades'] # Filter trades to relevant pairs trades = trades[trades['pair'].isin(plot_elements["pairs"])] # Create an average close price of all the pairs that were involved. From 38243c52fd2133f83299efc7bf94c2703b978209 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 13 Nov 2019 20:45:16 +0100 Subject: [PATCH 0975/3421] Filter open trades - they are not added to the profit calc --- freqtrade/plot/plotting.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 6f78802ba..57a02dd6b 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -379,7 +379,12 @@ def plot_profit(config: Dict[str, Any]) -> None: plot_elements = init_plotscript(config) trades = plot_elements['trades'] # Filter trades to relevant pairs - trades = trades[trades['pair'].isin(plot_elements["pairs"])] + # Remove open pairs - we don't know the profit yet so can't calculate profit for these. + # Also, If only one open pair is left, then the profit-generation would fail. + trades = trades[(trades['pair'].isin(plot_elements["pairs"])) + & (~trades['close_time'].isnull()) + ] + # Create an average close price of all the pairs that were involved. # this could be useful to gauge the overall market trend fig = generate_profit_graph(plot_elements["pairs"], plot_elements["tickers"], From ab194c7d7572a045399d39603a68f2f683e5ebfc Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 13 Nov 2019 23:09:05 +0300 Subject: [PATCH 0976/3421] Add test --- tests/optimize/test_hyperopt.py | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index aaaeb8795..123fbf995 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -674,6 +674,44 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: assert dumper.call_count == 2 +def test_print_json_spaces_default(mocker, default_conf, caplog, capsys) -> None: + dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', + MagicMock(return_value=(MagicMock(), None))) + mocker.patch( + 'freqtrade.optimize.hyperopt.get_timeframe', + MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) + ) + + parallel = mocker.patch( + 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', + MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}]) + ) + patch_exchange(mocker) + + default_conf.update({'config': 'config.json.example', + 'epochs': 1, + 'timerange': None, + 'spaces': 'default', + 'hyperopt_jobs': 1, + 'print_json': True, + }) + + hyperopt = Hyperopt(default_conf) + hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) + + hyperopt.start() + + parallel.assert_called_once() + + out, err = capsys.readouterr() + assert '{"params":{"mfi-value":null,"fastd-value":null,"adx-value":null,"rsi-value":null,"mfi-enabled":null,"fastd-enabled":null,"adx-enabled":null,"rsi-enabled":null,"trigger":null,"sell-mfi-value":null,"sell-fastd-value":null,"sell-adx-value":null,"sell-rsi-value":null,"sell-mfi-enabled":null,"sell-fastd-enabled":null,"sell-adx-enabled":null,"sell-rsi-enabled":null,"sell-trigger":null},"minimal_roi":{},"stoploss":null}' in out # noqa: E501 + assert dumper.called + # Should be called twice, once for tickerdata, once to save evaluations + assert dumper.call_count == 2 + + def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', From f9a92c28797f90fb1fc9b51d863bb2135341a0e3 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 13 Nov 2019 23:32:37 +0300 Subject: [PATCH 0977/3421] Adjust test --- tests/optimize/test_hyperopt.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 123fbf995..9a168d3e2 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -541,7 +541,7 @@ def test_buy_strategy_generator(hyperopt, testdatadir) -> None: def test_generate_optimizer(mocker, default_conf) -> None: default_conf.update({'config': 'config.json.example'}) default_conf.update({'timerange': None}) - default_conf.update({'spaces': 'default'}) + default_conf.update({'spaces': 'all'}) default_conf.update({'hyperopt_min_trades': 1}) trades = [ @@ -587,6 +587,10 @@ def test_generate_optimizer(mocker, default_conf) -> None: 'roi_p2': 0.01, 'roi_p3': 0.1, 'stoploss': -0.4, + 'trailing_stop': True, + 'trailing_stop_positive': 0.02, + 'trailing_stop_positive_offset': 0.1, + 'trailing_only_offset_is_reached': False, } response_expected = { 'loss': 1.9840569076926293, From 569a547b3f6dac3122d884bee03065371e127b1f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 14 Nov 2019 06:49:21 +0100 Subject: [PATCH 0978/3421] Update Actions CI to new subcommands --- .github/workflows/ci.yml | 8 ++++---- Dockerfile.pi | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 67862282a..c1112636a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,12 +72,12 @@ jobs: - name: Backtesting run: | cp config.json.example config.json - freqtrade --datadir tests/testdata backtesting + freqtrade backtesting --datadir tests/testdata --strategy DefaultStrategy - name: Hyperopt run: | cp config.json.example config.json - freqtrade --datadir tests/testdata --strategy SampleStrategy hyperopt --customhyperopt SampleHyperOpts -e 5 + freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpts - name: Flake8 run: | @@ -137,12 +137,12 @@ jobs: - name: Backtesting run: | cp config.json.example config.json - freqtrade --datadir tests/testdata backtesting + freqtrade backtesting --datadir tests/testdata --strategy DefaultStrategy - name: Hyperopt run: | cp config.json.example config.json - freqtrade --datadir tests/testdata --strategy SampleStrategy hyperopt --customhyperopt SampleHyperOpts -e 5 + freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --customhyperopt SampleHyperOpts - name: Flake8 run: | diff --git a/Dockerfile.pi b/Dockerfile.pi index 85ba5892f..279f85a04 100644 --- a/Dockerfile.pi +++ b/Dockerfile.pi @@ -38,3 +38,4 @@ RUN ~/berryconda3/bin/pip install -e . --no-cache-dir RUN [ "cross-build-end" ] ENTRYPOINT ["/root/berryconda3/bin/python","./freqtrade/main.py"] +CMD [ "trade" ] From f94d46316e68c94036567d8fd55cecb961f3f45d Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 14 Nov 2019 06:51:02 +0100 Subject: [PATCH 0979/3421] update checkout action to pinned version --- .github/workflows/docker_update_readme.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker_update_readme.yml b/.github/workflows/docker_update_readme.yml index 634517dc9..57a7e591e 100644 --- a/.github/workflows/docker_update_readme.yml +++ b/.github/workflows/docker_update_readme.yml @@ -8,7 +8,7 @@ jobs: dockerHubDescription: runs-on: ubuntu-latest steps: - - uses: actions/checkout@master + - uses: actions/checkout@v1 - name: Docker Hub Description uses: peter-evans/dockerhub-description@v2.1.0 env: From 3b9899dfd424f8f7741e8cf468a69af3c5ae8899 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 14 Nov 2019 07:06:00 +0100 Subject: [PATCH 0980/3421] hyperopts ... --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c1112636a..22931eeaa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -77,7 +77,7 @@ jobs: - name: Hyperopt run: | cp config.json.example config.json - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpts + freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt - name: Flake8 run: | @@ -142,7 +142,7 @@ jobs: - name: Hyperopt run: | cp config.json.example config.json - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --customhyperopt SampleHyperOpts + freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --customhyperopt SampleHyperOpt - name: Flake8 run: | From b167fb071a68f5d3df6b9d9258cc667a7cc8da25 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 14 Nov 2019 08:44:10 +0100 Subject: [PATCH 0981/3421] fix windows test --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 22931eeaa..04e52c0fd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -142,7 +142,7 @@ jobs: - name: Hyperopt run: | cp config.json.example config.json - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --customhyperopt SampleHyperOpt + freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt - name: Flake8 run: | From edc0d7f2c74d564b0468f27e9eb53e438284dd6a Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 15 Nov 2019 20:10:17 +0100 Subject: [PATCH 0982/3421] Fix non-terminating bot --- freqtrade/main.py | 3 --- freqtrade/utils.py | 11 +++++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/freqtrade/main.py b/freqtrade/main.py index 0a2adf71a..7afaeb1a2 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -27,7 +27,6 @@ def main(sysargv: List[str] = None) -> None: """ return_code: Any = 1 - worker = None try: arguments = Arguments(sysargv) args = arguments.get_parsed_arg() @@ -57,8 +56,6 @@ def main(sysargv: List[str] = None) -> None: except Exception: logger.exception('Fatal exception!') finally: - if worker: - worker.exit() sys.exit(return_code) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 5ad134ef9..ff54790a5 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -45,8 +45,15 @@ def start_trading(args: Dict[str, Any]) -> int: """ from freqtrade.worker import Worker # Load and run worker - worker = Worker(args) - worker.run() + try: + worker = Worker(args) + worker.run() + except KeyboardInterrupt: + logger.info('SIGINT received, aborting ...') + finally: + if worker: + logger.info("worker found ... calling exit") + worker.exit() return 0 From 6e0655b3b70adf5be4af47e8a508a8bde74b3002 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 16 Nov 2019 09:47:35 +0100 Subject: [PATCH 0983/3421] add empty worker variable --- freqtrade/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index ff54790a5..b8ab7504e 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -45,6 +45,7 @@ def start_trading(args: Dict[str, Any]) -> int: """ from freqtrade.worker import Worker # Load and run worker + worker = None try: worker = Worker(args) worker.run() From 91047830fd282baa72a21f0425f7e904e92ddd33 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 16 Nov 2019 09:56:16 +0100 Subject: [PATCH 0984/3421] Add tst for worker termination --- tests/test_utils.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index 3dba7df1b..bbb4fc648 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -8,7 +8,8 @@ from freqtrade import OperationalException from freqtrade.state import RunMode from freqtrade.utils import (setup_utils_configuration, start_create_userdir, start_download_data, start_list_exchanges, - start_list_markets, start_list_timeframes) + start_list_markets, start_list_timeframes, + start_trading) from tests.conftest import get_args, log_has, patch_exchange @@ -24,6 +25,29 @@ def test_setup_utils_configuration(): assert config['exchange']['secret'] == '' +def test_start_trading_fail(mocker): + + mocker.patch("freqtrade.worker.Worker.run", MagicMock(side_effect=OperationalException)) + + mocker.patch("freqtrade.worker.Worker.__init__", MagicMock(return_value=None)) + + exitmock = mocker.patch("freqtrade.worker.Worker.exit", MagicMock()) + args = [ + 'trade', + '-c', 'config.json.example' + ] + with pytest.raises(OperationalException): + start_trading(get_args(args)) + assert exitmock.call_count == 1 + + exitmock.reset_mock() + + mocker.patch("freqtrade.worker.Worker.__init__", MagicMock(side_effect=OperationalException)) + with pytest.raises(OperationalException): + start_trading(get_args(args)) + assert exitmock.call_count == 0 + + def test_list_exchanges(capsys): args = [ From be53c0885df7ad29a6202502c47894c8ae3117c8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 16 Nov 2019 10:49:32 +0100 Subject: [PATCH 0985/3421] Try moving coveralls to github actions --- .github/workflows/ci.yml | 6 ++++++ .travis.yml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 04e52c0fd..12aff89f8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,9 +64,15 @@ jobs: pip install -e . - name: Tests + env: + COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} + COVERALLS_SERVICE_NAME: travis-ci + TRAVIS: "true" run: | pytest --random-order --cov=freqtrade --cov-config=.coveragerc # Allow failure for coveralls + # Fake travis environment to get coveralls working correctly + export TRAVIS_PULL_REQUEST="https://github.com/${GITHUB_REPOSITORY}/pull/$(cat $GITHUB_EVENT_PATH | jq -r .number)" coveralls || true - name: Backtesting diff --git a/.travis.yml b/.travis.yml index 80e4080d3..6073e1cce 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ jobs: script: - pytest --random-order --cov=freqtrade --cov-config=.coveragerc # Allow failure for coveralls - - coveralls || true + # - coveralls || true name: pytest - script: - cp config.json.example config.json From b6a12044bafa2e1fc9adc75b3fb8173313bf8091 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 Nov 2019 10:36:32 +0100 Subject: [PATCH 0986/3421] seperate docs job --- .github/workflows/ci.yml | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 12aff89f8..f8932cf07 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -93,10 +93,6 @@ jobs: run: | mypy freqtrade scripts - - name: Documentation syntax - run: | - ./tests/test_docs.sh - - name: Slack Notification uses: homoluctus/slatify@v1.8.0 if: always() @@ -169,8 +165,26 @@ jobs: channel: '#notifications' url: ${{ secrets.SLACK_WEBHOOK }} + docs_check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + + - name: Documentation syntax + run: | + ./tests/test_docs.sh + + - name: Slack Notification + uses: homoluctus/slatify@v1.8.0 + if: failure() + with: + type: ${{ job.status }} + job_name: '*Freqtrade Docs*' + channel: '#notifications' + url: ${{ secrets.SLACK_WEBHOOK }} + deploy: - needs: [ build, build_windows ] + needs: [ build, build_windows, docs_check ] runs-on: ubuntu-18.04 if: github.event_name == 'push' || github.event_name == 'schedule' steps: From 3aee8d2b2a347d2366088119e13c65c7b656f1ff Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 Nov 2019 14:40:59 +0100 Subject: [PATCH 0987/3421] Improve rest api client / status response --- freqtrade/rpc/api_server.py | 7 +++++-- scripts/rest_client.py | 20 ++++++++++++++------ tests/rpc/test_rpc_apiserver.py | 4 ++-- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 3b59c9592..851806ec2 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -330,8 +330,11 @@ class ApiServer(RPC): Returns the current status of the trades in json format """ - results = self._rpc_trade_status() - return self.rest_dump(results) + try: + results = self._rpc_trade_status() + return self.rest_dump(results) + except RPCException: + return self.rest_dump([]) @require_login @rpc_catch_errors diff --git a/scripts/rest_client.py b/scripts/rest_client.py index a46b3ebfb..096286013 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -8,12 +8,14 @@ so it can be used as a standalone script. """ import argparse +import inspect import json import logging -import inspect -from urllib.parse import urlencode, urlparse, urlunparse +import sys from pathlib import Path +from urllib.parse import urlencode, urlparse, urlunparse +import rapidjson import requests from requests.exceptions import ConnectionError @@ -190,7 +192,9 @@ class FtRestClient(): def add_arguments(): parser = argparse.ArgumentParser() parser.add_argument("command", - help="Positional argument defining the command to execute.") + help="Positional argument defining the command to execute.", + nargs="?" + ) parser.add_argument('--show', help='Show possible methods with this client', @@ -221,9 +225,12 @@ def load_config(configfile): file = Path(configfile) if file.is_file(): with file.open("r") as f: - config = json.load(f) + config = rapidjson.load(f, parse_mode=rapidjson.PM_COMMENTS | + rapidjson.PM_TRAILING_COMMAS) return config - return {} + else: + logger.warning(f"Could not load config file {file}.") + sys.exit(1) def print_commands(): @@ -237,8 +244,9 @@ def print_commands(): def main(args): - if args.get("help"): + if args.get("show"): print_commands() + sys.exit() config = load_config(args["config"]) url = config.get("api_server", {}).get("server_url", "127.0.0.1") diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 6e65cf934..cbca7e3d5 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -417,8 +417,8 @@ def test_api_status(botclient, mocker, ticker, fee, markets): ) rc = client_get(client, f"{BASE_URI}/status") - assert_response(rc, 502) - assert rc.json == {'error': 'Error querying _status: no active trade'} + assert_response(rc, 200) + assert rc.json == [] ftbot.create_trades() rc = client_get(client, f"{BASE_URI}/status") From 2c976bdd24b00ee448463d3399cc95d9e183d115 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 Nov 2019 14:56:08 +0100 Subject: [PATCH 0988/3421] Add show_config endpoint --- freqtrade/rpc/api_server.py | 10 ++++++++++ freqtrade/rpc/rpc.py | 20 ++++++++++++++++++++ scripts/rest_client.py | 7 +++++++ tests/rpc/test_rpc_apiserver.py | 12 ++++++++++++ 4 files changed, 49 insertions(+) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 3b59c9592..0426eb598 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -169,6 +169,8 @@ class ApiServer(RPC): view_func=self._status, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/version', 'version', view_func=self._version, methods=['GET']) + self.app.add_url_rule(f'{BASE_URI}/show_config', 'show_config', + view_func=self._show_config, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/ping', 'ping', view_func=self._ping, methods=['GET']) @@ -241,6 +243,14 @@ class ApiServer(RPC): """ return self.rest_dump({"version": __version__}) + @require_login + @rpc_catch_errors + def _show_config(self): + """ + Prints the bot's version + """ + return self.rest_dump(self._rpc_show_config()) + @require_login @rpc_catch_errors def _reload_conf(self): diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 5ab92cf33..c78951a6d 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -80,6 +80,26 @@ class RPC: def send_msg(self, msg: Dict[str, str]) -> None: """ Sends a message to all registered rpc modules """ + def _rpc_show_config(self) -> Dict: + """ + Return a dict of config options. + Explicitly does NOT return the full config to avoid leakage of sensitive + information via rpc. + """ + config = self._freqtrade.config + val = { + 'dry_run': config.get('dry_run', False), + 'stake_currency': config['stake_currency'], + 'stake_amount': config['stake_amount'], + 'minimal_roi': config['minimal_roi'].copy(), + 'stoploss': config['stoploss'], + 'trailing_stop': config['trailing_stop'], + 'ticker_interval': config['ticker_interval'], + 'exchange': config['exchange']['name'], + 'strategy': config['strategy'], + } + return val + def _rpc_trade_status(self) -> List[Dict[str, Any]]: """ Below follows the RPC backend it is prefixed with rpc_ to raise awareness that it is diff --git a/scripts/rest_client.py b/scripts/rest_client.py index a46b3ebfb..7408acab8 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -147,6 +147,13 @@ class FtRestClient(): """ return self._get("version") + def show_config(self): + """ + Returns part of the configuration, relevant for trading operations. + :return: json object containing the version + """ + return self._get("show_config") + def whitelist(self): """ Show the current whitelist diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 6e65cf934..d1ebe961b 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -284,6 +284,18 @@ def test_api_count(botclient, mocker, ticker, fee, markets): assert rc.json["max"] == 1.0 +def test_api_show_config(botclient, mocker): + ftbot, client = botclient + patch_get_signal(ftbot, (True, False)) + + rc = client_get(client, f"{BASE_URI}/show_config") + assert_response(rc) + assert 'dry_run' in rc.json + assert rc.json['exchange'] == 'bittrex' + assert rc.json['ticker_interval'] == '5m' + assert not rc.json['trailing_stop'] + + def test_api_daily(botclient, mocker, ticker, fee, markets): ftbot, client = botclient patch_get_signal(ftbot, (True, False)) From acab56793f1253dc46252a3bf6afafd6081c453a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 Nov 2019 15:03:45 +0100 Subject: [PATCH 0989/3421] Add /show_config to telegram --- freqtrade/rpc/telegram.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 8a81848ac..ba475e39e 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -101,6 +101,7 @@ class Telegram(RPC): CommandHandler('edge', self._edge), CommandHandler('help', self._help), CommandHandler('version', self._version), + CommandHandler('show_config', self._show_config), ] for handle in handles: self._updater.dispatcher.add_handler(handle) @@ -550,6 +551,7 @@ class Telegram(RPC): "*/balance:* `Show account balance per currency`\n" \ "*/stopbuy:* `Stops buying, but handles open trades gracefully` \n" \ "*/reload_conf:* `Reload configuration file` \n" \ + "*/show_config:* `Show running configuration` \n" \ "*/whitelist:* `Show current whitelist` \n" \ "*/blacklist [pair]:* `Show current blacklist, or adds one or more pairs " \ "to the blacklist.` \n" \ @@ -570,6 +572,26 @@ class Telegram(RPC): """ self._send_msg('*Version:* `{}`'.format(__version__)) + @authorized_only + def _show_config(self, update: Update, context: CallbackContext) -> None: + """ + Handler for /show_config. + Show config information information + :param bot: telegram bot + :param update: message update + :return: None + """ + val = self._rpc_show_config() + self._send_msg( + f"*Mode:* `{'Dry-run' if val['dry_run'] else 'Live'}`\n" + f"*Exchange:* `{val['exchange']}`\n" + f"*Stake per trade:* `{val['stake_amount']} {val['stake_currency']}`\n" + f"*Minimum ROI:* `{val['minimal_roi']}`\n" + f"*{'Trailing ' if val['trailing_stop'] else ''}Stoploss:* `{val['stoploss']}`\n" + f"*Ticker Interval:* `{val['ticker_interval']}`\n" + f"*Strategy:* `{val['strategy']}`'" + ) + def _send_msg(self, msg: str, parse_mode: ParseMode = ParseMode.MARKDOWN) -> None: """ Send given markdown message From 2b190e5638d8f65b92d3b3ef75bb34324bc8db35 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 Nov 2019 15:05:56 +0100 Subject: [PATCH 0990/3421] Add documentation --- docs/rest-api.md | 5 +++++ docs/telegram-usage.md | 1 + 2 files changed, 6 insertions(+) diff --git a/docs/rest-api.md b/docs/rest-api.md index 70e090569..187a71c97 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -106,6 +106,7 @@ python3 scripts/rest_client.py --config rest_config.json [optional par | `stop` | | Stops the trader | `stopbuy` | | Stops the trader from opening new trades. Gracefully closes open trades according to their rules. | `reload_conf` | | Reloads the configuration file +| `show_config` | | Shows part of the current configuration with relevant settings to operation | `status` | | Lists all open trades | `count` | | Displays number of trades used and available | `profit` | | Display a summary of your profit/loss from close trades and some stats about your performance @@ -172,6 +173,10 @@ reload_conf Reload configuration :returns: json object +show_config + Returns part of the configuration, relevant for trading operations. + :return: json object containing the version + start Start the bot if it's in stopped state. :returns: json object diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md index 424b55faf..ed0c21a6e 100644 --- a/docs/telegram-usage.md +++ b/docs/telegram-usage.md @@ -53,6 +53,7 @@ official commands. You can ask at any moment for help with `/help`. | `/stop` | | Stops the trader | `/stopbuy` | | Stops the trader from opening new trades. Gracefully closes open trades according to their rules. | `/reload_conf` | | Reloads the configuration file +| `/show_config` | | Shows part of the current configuration with relevant settings to operation | `/status` | | Lists all open trades | `/status table` | | List all open trades in a table format | `/count` | | Displays number of trades used and available From e4e8a611be888e657ebdd5f7c5b61ac71846d388 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 Nov 2019 15:12:53 +0100 Subject: [PATCH 0991/3421] Add tests for telegram --- freqtrade/rpc/rpc.py | 5 ++++- tests/rpc/test_rpc_telegram.py | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index c78951a6d..8b557df96 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -80,7 +80,7 @@ class RPC: def send_msg(self, msg: Dict[str, str]) -> None: """ Sends a message to all registered rpc modules """ - def _rpc_show_config(self) -> Dict: + def _rpc_show_config(self) -> Dict[str, Any]: """ Return a dict of config options. Explicitly does NOT return the full config to avoid leakage of sensitive @@ -94,6 +94,9 @@ class RPC: 'minimal_roi': config['minimal_roi'].copy(), 'stoploss': config['stoploss'], 'trailing_stop': config['trailing_stop'], + 'trailing_stop_positive': config.get('trailing_stop_positive'), + 'trailing_stop_positive_offset': config.get('trailing_stop_positive_offset'), + 'trailing_only_offset_is_reached': config.get('trailing_only_offset_is_reached'), 'ticker_interval': config['ticker_interval'], 'exchange': config['exchange']['name'], 'strategy': config['strategy'], diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 766511d2d..73b38b808 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1174,6 +1174,23 @@ def test_version_handle(default_conf, update, mocker) -> None: assert '*Version:* `{}`'.format(__version__) in msg_mock.call_args_list[0][0][0] +def test_show_config_handle(default_conf, update, mocker) -> None: + msg_mock = MagicMock() + mocker.patch.multiple( + 'freqtrade.rpc.telegram.Telegram', + _init=MagicMock(), + _send_msg=msg_mock + ) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) + telegram = Telegram(freqtradebot) + + telegram._show_config(update=update, context=MagicMock()) + assert msg_mock.call_count == 1 + assert '*Mode:* `{}`'.format('Dry-run') in msg_mock.call_args_list[0][0][0] + assert '*Exchange:* `bittrex`' in msg_mock.call_args_list[0][0][0] + assert '*Strategy:* `DefaultStrategy`' in msg_mock.call_args_list[0][0][0] + + def test_send_msg_buy_notification(default_conf, mocker) -> None: msg_mock = MagicMock() mocker.patch.multiple( From 547d65b06511515952dfa49156c4ab3ccbd75267 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 Nov 2019 15:22:14 +0100 Subject: [PATCH 0992/3421] Fix broken test --- freqtrade/rpc/telegram.py | 2 +- tests/rpc/test_rpc_telegram.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index ba475e39e..0547af7b0 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -95,13 +95,13 @@ class Telegram(RPC): CommandHandler('daily', self._daily), CommandHandler('count', self._count), CommandHandler('reload_conf', self._reload_conf), + CommandHandler('show_config', self._show_config), CommandHandler('stopbuy', self._stopbuy), CommandHandler('whitelist', self._whitelist), CommandHandler('blacklist', self._blacklist), CommandHandler('edge', self._edge), CommandHandler('help', self._help), CommandHandler('version', self._version), - CommandHandler('show_config', self._show_config), ] for handle in handles: self._updater.dispatcher.add_handler(handle) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 73b38b808..c6a8094ab 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -73,7 +73,7 @@ def test_init(default_conf, mocker, caplog) -> None: message_str = "rpc.telegram is listening for following commands: [['status'], ['profit'], " \ "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], " \ - "['performance'], ['daily'], ['count'], ['reload_conf'], " \ + "['performance'], ['daily'], ['count'], ['reload_conf'], ['show_config'], " \ "['stopbuy'], ['whitelist'], ['blacklist'], ['edge'], ['help'], ['version']]" assert log_has(message_str, caplog) From 599e18b9209adf9ea16cbb9ecd144fb6b4122bb9 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2019 07:20:02 +0000 Subject: [PATCH 0993/3421] Bump urllib3 from 1.25.6 to 1.25.7 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.6 to 1.25.7. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.25.6...1.25.7) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 33a5d0776..a4521af71 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -6,7 +6,7 @@ python-telegram-bot==12.2.0 arrow==0.15.4 cachetools==3.1.1 requests==2.22.0 -urllib3==1.25.6 +urllib3==1.25.7 wrapt==1.11.2 jsonschema==3.1.1 TA-Lib==0.4.17 From 933564591dfc99ddd0473aebbd2634e742abe8c8 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2019 07:20:30 +0000 Subject: [PATCH 0994/3421] Bump sqlalchemy from 1.3.10 to 1.3.11 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.10 to 1.3.11. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 33a5d0776..cbfcd8035 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.19.25 -SQLAlchemy==1.3.10 +SQLAlchemy==1.3.11 python-telegram-bot==12.2.0 arrow==0.15.4 cachetools==3.1.1 From 42474b714422141612d76cc21432d871bc85c1e6 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2019 07:20:50 +0000 Subject: [PATCH 0995/3421] Bump flake8-tidy-imports from 3.0.0 to 3.1.0 Bumps [flake8-tidy-imports](https://github.com/adamchainz/flake8-tidy-imports) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/adamchainz/flake8-tidy-imports/releases) - [Changelog](https://github.com/adamchainz/flake8-tidy-imports/blob/master/HISTORY.rst) - [Commits](https://github.com/adamchainz/flake8-tidy-imports/compare/3.0.0...3.1.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index f346439af..ca51a98d4 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -6,7 +6,7 @@ coveralls==1.8.2 flake8==3.7.9 flake8-type-annotations==0.1.0 -flake8-tidy-imports==3.0.0 +flake8-tidy-imports==3.1.0 mypy==0.740 pytest==5.2.2 pytest-asyncio==0.10.0 From a33d4087809e8ecacc145b702568a371ccbd6e2a Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2019 07:21:25 +0000 Subject: [PATCH 0996/3421] Bump plotly from 4.2.1 to 4.3.0 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.2.1 to 4.3.0. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.2.1...v4.3.0) Signed-off-by: dependabot-preview[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index 235c71896..87d5553b6 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.2.1 +plotly==4.3.0 From e7157faddd24ac74264998999be8ddecb95a1505 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2019 07:22:18 +0000 Subject: [PATCH 0997/3421] Bump python-rapidjson from 0.8.0 to 0.9.1 Bumps [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) from 0.8.0 to 0.9.1. - [Release notes](https://github.com/python-rapidjson/python-rapidjson/releases) - [Changelog](https://github.com/python-rapidjson/python-rapidjson/blob/master/CHANGES.rst) - [Commits](https://github.com/python-rapidjson/python-rapidjson/compare/v0.8.0...v0.9.1) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 33a5d0776..635b3aafe 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -17,7 +17,7 @@ coinmarketcap==5.0.3 py_find_1st==1.1.4 # Load ticker files 30% faster -python-rapidjson==0.8.0 +python-rapidjson==0.9.1 # Notify systemd sdnotify==0.3.2 From cb6b3e17a936c1496e61dfc6f1bbc4185b51d954 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2019 07:22:41 +0000 Subject: [PATCH 0998/3421] Bump tabulate from 0.8.5 to 0.8.6 Bumps [tabulate](https://github.com/astanin/python-tabulate) from 0.8.5 to 0.8.6. - [Release notes](https://github.com/astanin/python-tabulate/releases) - [Changelog](https://github.com/astanin/python-tabulate/blob/master/CHANGELOG) - [Commits](https://github.com/astanin/python-tabulate/compare/v0.8.5...v0.8.6) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 33a5d0776..1215521a9 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -10,7 +10,7 @@ urllib3==1.25.6 wrapt==1.11.2 jsonschema==3.1.1 TA-Lib==0.4.17 -tabulate==0.8.5 +tabulate==0.8.6 coinmarketcap==5.0.3 # find first, C search in arrays From 0bc71403ff87a2918a912c992d3e263422f0a85c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2019 07:24:39 +0000 Subject: [PATCH 0999/3421] Bump mkdocs-material from 4.4.3 to 4.5.0 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.4.3 to 4.5.0. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.4.3...4.5.0) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 5e7fe7084..bfa5c0d1e 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==4.4.3 +mkdocs-material==4.5.0 mdx_truly_sane_lists==1.2 From dddccf8f1af791cd8a7a6d6e3a36c33e08f4f987 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2019 07:39:12 +0000 Subject: [PATCH 1000/3421] Bump ccxt from 1.19.25 to 1.19.54 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.19.25 to 1.19.54. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.19.25...1.19.54) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 7997506ce..a0e9b2a0c 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.19.25 +ccxt==1.19.54 SQLAlchemy==1.3.11 python-telegram-bot==12.2.0 arrow==0.15.4 From cd6d2761197659b02463ca91497816c8ec4d963f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2019 07:42:57 +0000 Subject: [PATCH 1001/3421] Bump pytest from 5.2.2 to 5.2.4 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.2.2 to 5.2.4. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.2.2...5.2.4) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index ca51a98d4..297b95623 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==3.1.0 mypy==0.740 -pytest==5.2.2 +pytest==5.2.4 pytest-asyncio==0.10.0 pytest-cov==2.8.1 pytest-mock==1.11.2 From c22b00b30303ba44f3dcf140b4fd8b70fb2e2f80 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 19 Nov 2019 06:34:54 +0100 Subject: [PATCH 1002/3421] move pairlist filters out of config[] --- config_full.json.example | 5 +---- docs/configuration.md | 22 +++++++------------- freqtrade/pairlist/LowPriceFilter.py | 8 +++---- freqtrade/pairlist/pairlistmanager.py | 2 +- tests/pairlist/test_pairlist.py | 30 +++++++++++++-------------- tests/rpc/test_rpc.py | 2 +- tests/rpc/test_rpc_telegram.py | 2 +- 7 files changed, 30 insertions(+), 41 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index ba53f47d6..270938237 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -61,10 +61,7 @@ } }, {"method": "PrecisionFilter"}, - {"method": "LowPriceFilter", - "config": { - "low_price_percent": 0.01 - } + {"method": "LowPriceFilter", "low_price_ratio": 0.01 } ], "exchange": { diff --git a/docs/configuration.md b/docs/configuration.md index 8a2b74ed5..120842cdb 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -416,11 +416,9 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis ```json "pairlists": [{ "method": "VolumePairList", - "config": { - "number_assets": 20, - "sort_key": "quoteVolume", - "ttl": 1800, - } + "number_assets": 20, + "sort_key": "quoteVolume", + "ttl": 1800, ], ``` @@ -430,7 +428,7 @@ Filters low-value coins which would not allow setting a stoploss. #### Low Price Pair Filter -The `LowPriceFilter` allows filtering of pairs where a raise of 1 price unit is below the `low_price_percent` ratio. +The `LowPriceFilter` allows filtering of pairs where a raise of 1 price unit is below the `low_price_ratio` ratio. This option is disabled by default, and will only apply if set to <> 0. Calculation example: @@ -450,16 +448,12 @@ The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, "pairlists": [ { "method": "VolumePairList", - "config": { - "number_assets": 20, - "sort_key": "quoteVolume", - }, + "number_assets": 20, + "sort_key": "quoteVolume", }, {"method": "PrecisionFilter"}, - {"method": "LowPriceFilter", - "config": {"low_price_percent": 0.01} - } - }], + {"method": "LowPriceFilter", "low_price_ratio": 0.01} + ], ``` ## Switch to Dry-run mode diff --git a/freqtrade/pairlist/LowPriceFilter.py b/freqtrade/pairlist/LowPriceFilter.py index 83b6a85e6..ff18b97c8 100644 --- a/freqtrade/pairlist/LowPriceFilter.py +++ b/freqtrade/pairlist/LowPriceFilter.py @@ -13,7 +13,7 @@ class LowPriceFilter(IPairList): pairlist_pos: int) -> None: super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) - self._low_price_percent = pairlistconfig.get('low_price_percent', 0) + self._low_price_ratio = pairlistconfig.get('low_price_ratio', 0) @property def needstickers(self) -> bool: @@ -28,7 +28,7 @@ class LowPriceFilter(IPairList): """ Short whitelist method description - used for startup-messages """ - return f"{self.name} - Filtering pairs priced below {self._low_price_percent * 100}%." + return f"{self.name} - Filtering pairs priced below {self._low_price_ratio * 100}%." def _validate_ticker_lowprice(self, ticker) -> bool: """ @@ -41,7 +41,7 @@ class LowPriceFilter(IPairList): compare = ticker['last'] + 1 / pow(10, precision) changeperc = (compare - ticker['last']) / ticker['last'] - if changeperc > self._low_price_percent: + if changeperc > self._low_price_ratio: logger.info(f"Removed {ticker['symbol']} from whitelist, " f"because 1 unit is {changeperc * 100:.3f}%") return False @@ -63,7 +63,7 @@ class LowPriceFilter(IPairList): pairlist.remove(p) # Filter out assets which would not allow setting a stoploss - if self._low_price_percent and not self._validate_ticker_lowprice(ticker): + if self._low_price_ratio and not self._validate_ticker_lowprice(ticker): pairlist.remove(p) return pairlist diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 0734d7f8f..fa5382c37 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -32,7 +32,7 @@ class PairListManager(): exchange=exchange, pairlistmanager=self, config=config, - pairlistconfig=pl.get('config'), + pairlistconfig=pl, pairlist_pos=len(self._pairlists) ).pairlist self._tickers_needed = pairl.needstickers or self._tickers_needed diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 13f868c7a..9daaa5353 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -29,10 +29,8 @@ def whitelist_conf(default_conf): default_conf['pairlists'] = [ { "method": "VolumePairList", - "config": { - "number_assets": 5, - "sort_key": "quoteVolume", - } + "number_assets": 5, + "sort_key": "quoteVolume", }, ] return default_conf @@ -136,37 +134,37 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): @pytest.mark.parametrize("pairlists,base_currency,whitelist_result", [ - ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "quoteVolume"}}], + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC', 'FUEL/BTC']), # Different sorting depending on quote or bid volume - ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "bidVolume"}}], + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], "BTC", ['HOT/BTC', 'FUEL/BTC', 'LTC/BTC', 'TKN/BTC', 'ETH/BTC']), - ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "quoteVolume"}}], + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], "USDT", ['ETH/USDT']), # No pair for ETH ... - ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "quoteVolume"}}], + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], "ETH", []), # Precisionfilter and quote volume - ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "quoteVolume"}}, + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'FUEL/BTC']), # Precisionfilter bid - ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "bidVolume"}}, + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}, {"method": "PrecisionFilter"}], "BTC", ['FUEL/BTC', 'LTC/BTC', 'TKN/BTC', 'ETH/BTC']), # Lowpricefilter and VolumePairList - ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "quoteVolume"}}, - {"method": "LowPriceFilter", "config": {"low_price_percent": 0.03}}], + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, + {"method": "LowPriceFilter", "low_price_ratio": 0.03}], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'FUEL/BTC']), # Hot is removed by precision_filter, Fuel by low_price_filter. - ([{"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "quoteVolume"}}, + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}, - {"method": "LowPriceFilter", "config": {"low_price_percent": 0.02}} + {"method": "LowPriceFilter", "low_price_ratio": 0.02} ], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC']), # StaticPairlist Only ([{"method": "StaticPairList"}, ], "BTC", ['ETH/BTC', 'TKN/BTC']), # Static Pairlist before VolumePairList - sorting changes ([{"method": "StaticPairList"}, - {"method": "VolumePairList", "config": {"number_assets": 5, "sort_key": "bidVolume"}}, + {"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}, ], "BTC", ['TKN/BTC', 'ETH/BTC']), ]) def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, @@ -257,7 +255,7 @@ def test__whitelist_for_active_markets(mocker, whitelist_conf, markets, pairlist def test_volumepairlist_invalid_sortvalue(mocker, markets, whitelist_conf): - whitelist_conf['pairlists'][0]['config'].update({"sort_key": "asdf"}) + whitelist_conf['pairlists'][0].update({"sort_key": "asdf"}) mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) with pytest.raises(OperationalException, diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 8747fe6ff..edc0fdb8a 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -726,7 +726,7 @@ def test_rpc_whitelist(mocker, default_conf) -> None: def test_rpc_whitelist_dynamic(mocker, default_conf) -> None: default_conf['pairlists'] = [{'method': 'VolumePairList', - 'config': {'number_assets': 4} + 'number_assets': 4, }] mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index bb9d88658..52d58e887 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1063,7 +1063,7 @@ def test_whitelist_dynamic(default_conf, update, mocker) -> None: ) mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) default_conf['pairlists'] = [{'method': 'VolumePairList', - 'config': {'number_assets': 4} + 'number_assets': 4 }] freqtradebot = get_patched_freqtradebot(mocker, default_conf) From a8855bf7955eed07a107e31ca53b0a418426c373 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 19 Nov 2019 06:41:05 +0100 Subject: [PATCH 1003/3421] rename LowPriceFilter to PrieFilter --- config_full.json.example | 2 +- docs/configuration.md | 13 +++++++------ freqtrade/constants.py | 2 +- .../pairlist/{LowPriceFilter.py => PriceFilter.py} | 4 ++-- tests/pairlist/test_pairlist.py | 8 ++++---- 5 files changed, 15 insertions(+), 14 deletions(-) rename freqtrade/pairlist/{LowPriceFilter.py => PriceFilter.py} (96%) diff --git a/config_full.json.example b/config_full.json.example index 270938237..5ceeaff09 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -61,7 +61,7 @@ } }, {"method": "PrecisionFilter"}, - {"method": "LowPriceFilter", "low_price_ratio": 0.01 + {"method": "PriceFilter", "low_price_ratio": 0.01 } ], "exchange": { diff --git a/docs/configuration.md b/docs/configuration.md index 120842cdb..ed50b521e 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -380,7 +380,7 @@ The valid values are: Pairlists define the list of pairs that the bot should trade. There are [`StaticPairList`](#static-pair-list) and dynamic Whitelists available. -[`PrecisionFilter`](#precision-filter) and [`LowPriceFilter`](#low-price-pair-filter) act as filters, removing low-value pairs. +[`PrecisionFilter`](#precision-filter) and [`PriceFilter`](#price-pair-filter) act as filters, removing low-value pairs. All pairlists can be chained, and a combination of all pairlists will become your new whitelist. Pairlists are executed in the sequence they are configured. You should always configure either `StaticPairList` or `DynamicPairList` as starting pairlists. @@ -391,7 +391,7 @@ Inactive markets and blacklisted pairs are always removed from the resulting `pa * [`StaticPairList`](#static-pair-list) (default, if not configured differently) * [`VolumePairList`](#volume-pair-list) * [`PrecisionFilter`](#precision-filter) -* [`LowPriceFilter`](#low-price-pair-filter) +* [`PriceFilter`](#price-pair-filter) #### Static Pair List @@ -426,9 +426,10 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis Filters low-value coins which would not allow setting a stoploss. -#### Low Price Pair Filter +#### Price Pair Filter -The `LowPriceFilter` allows filtering of pairs where a raise of 1 price unit is below the `low_price_ratio` ratio. +The `PriceFilter` allows filtering of pairs by price. +Currently, only `low_price_ratio` is implemented, where a raise of 1 price unit (pip) is below the `low_price_ratio` ratio. This option is disabled by default, and will only apply if set to <> 0. Calculation example: @@ -438,7 +439,7 @@ These pairs are dangerous since it may be impossible to place the desired stoplo ### Full Pairlist example -The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, sorting by `quoteVolume` and applies both [`PrecisionFilter`](#precision-filter) and [`LowPriceFilter`](#low-price-pair-filter), filtering all assets where 1 priceunit is > 1%. +The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, sorting by `quoteVolume` and applies both [`PrecisionFilter`](#precision-filter) and [`PriceFilter`](#price-pair-filter), filtering all assets where 1 priceunit is > 1%. ```json "exchange": { @@ -452,7 +453,7 @@ The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, "sort_key": "quoteVolume", }, {"method": "PrecisionFilter"}, - {"method": "LowPriceFilter", "low_price_ratio": 0.01} + {"method": "PriceFilter", "low_price_ratio": 0.01} ], ``` diff --git a/freqtrade/constants.py b/freqtrade/constants.py index c98c32d4c..24e3589fd 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -20,7 +20,7 @@ REQUIRED_ORDERTIF = ['buy', 'sell'] REQUIRED_ORDERTYPES = ['buy', 'sell', 'stoploss', 'stoploss_on_exchange'] ORDERTYPE_POSSIBILITIES = ['limit', 'market'] ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc'] -AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'PrecisionFilter', 'LowPriceFilter'] +AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'PrecisionFilter', 'PriceFilter'] DRY_RUN_WALLET = 999.9 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons diff --git a/freqtrade/pairlist/LowPriceFilter.py b/freqtrade/pairlist/PriceFilter.py similarity index 96% rename from freqtrade/pairlist/LowPriceFilter.py rename to freqtrade/pairlist/PriceFilter.py index ff18b97c8..b3546ebd9 100644 --- a/freqtrade/pairlist/LowPriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -7,7 +7,7 @@ from freqtrade.pairlist.IPairList import IPairList logger = logging.getLogger(__name__) -class LowPriceFilter(IPairList): +class PriceFilter(IPairList): def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict, pairlist_pos: int) -> None: @@ -32,7 +32,7 @@ class LowPriceFilter(IPairList): def _validate_ticker_lowprice(self, ticker) -> bool: """ - Check if if one price-step is > than a certain barrier. + Check if if one price-step (pip) is > than a certain barrier. :param ticker: ticker dict as returned from ccxt.load_markets() :param precision: Precision :return: True if the pair can stay, false if it should be removed diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 9daaa5353..76537880c 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -150,14 +150,14 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): # Precisionfilter bid ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}, {"method": "PrecisionFilter"}], "BTC", ['FUEL/BTC', 'LTC/BTC', 'TKN/BTC', 'ETH/BTC']), - # Lowpricefilter and VolumePairList + # PriceFilter and VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, - {"method": "LowPriceFilter", "low_price_ratio": 0.03}], + {"method": "PriceFilter", "low_price_ratio": 0.03}], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'FUEL/BTC']), # Hot is removed by precision_filter, Fuel by low_price_filter. ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}, - {"method": "LowPriceFilter", "low_price_ratio": 0.02} + {"method": "PriceFilter", "low_price_ratio": 0.02} ], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC']), # StaticPairlist Only ([{"method": "StaticPairList"}, @@ -189,7 +189,7 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t if pairlist['method'] == 'PrecisionFilter': assert log_has_re(r'^Removed .* from whitelist, because stop price .* ' r'would be <= stop limit.*', caplog) - if pairlist['method'] == 'LowPriceFilter': + if pairlist['method'] == 'PriceFilter': assert log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) From 5f62a9e4d8eed5d3c7a15eca92c041c84bf12b57 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 19 Nov 2019 06:48:56 +0100 Subject: [PATCH 1004/3421] rename ttl to refresh_period --- config_full.json.example | 8 +++----- docs/configuration.md | 4 ++-- docs/developer.md | 2 +- freqtrade/pairlist/VolumePairList.py | 4 ++-- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index 5ceeaff09..b9631f63d 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -54,11 +54,9 @@ {"method": "StaticPairList"}, { "method": "VolumePairList", - "config": { - "number_assets": 20, - "sort_key": "quoteVolume", - "ttl": 1800 - } + "number_assets": 20, + "sort_key": "quoteVolume", + "refresh_period": 1800 }, {"method": "PrecisionFilter"}, {"method": "PriceFilter", "low_price_ratio": 0.01 diff --git a/docs/configuration.md b/docs/configuration.md index ed50b521e..946ee3bf7 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -411,14 +411,14 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis `VolumePairList` considers outputs of previous pairlists unless it's the first configured pairlist, it does not consider `pair_whitelist`, but selects the top assets from all available markets (with matching stake-currency) on the exchange. -`ttl` allows setting the period (in seconds), at which the pairlist will be refreshed. Defaults to 1800s (30 minutes). +`refresh_period` allows setting the period (in seconds), at which the pairlist will be refreshed. Defaults to 1800s (30 minutes). ```json "pairlists": [{ "method": "VolumePairList", "number_assets": 20, "sort_key": "quoteVolume", - "ttl": 1800, + "refresh_period": 1800, ], ``` diff --git a/docs/developer.md b/docs/developer.md index 0eba6fd59..2d39893bc 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -115,7 +115,7 @@ Now, let's step through the methods which require actions: #### Pairlist configuration Configuration for PairListProvider is done in the bot configuration file in the element `"pairlist"`. -This Pairlist-object may contain a `"config"` dict with additional configurations for the configured pairlist. +This Pairlist-object may contain configurations with additional configurations for the configured pairlist. By convention, `"number_assets"` is used to specify the maximum number of pairs to keep in the whitelist. Please follow this to ensure a consistent user experience. Additional elements can be configured as needed. `VolumePairList` uses `"sort_key"` to specify the sorting value - however feel free to specify whatever is necessary for your great algorithm to be successfull and dynamic. diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 708c8d7c2..2df9ba691 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -28,7 +28,7 @@ class VolumePairList(IPairList): 'for "pairlist.config.number_assets"') self._number_pairs = self._pairlistconfig['number_assets'] self._sort_key = self._pairlistconfig.get('sort_key', 'quoteVolume') - self._ttl = self._pairlistconfig.get('ttl', 1800) + self.refresh_period = self._pairlistconfig.get('refresh_period', 1800) if not self._exchange.exchange_has('fetchTickers'): raise OperationalException( @@ -67,7 +67,7 @@ class VolumePairList(IPairList): :return: new whitelist """ # Generate dynamic whitelist - if self._last_refresh + self._ttl < datetime.now().timestamp(): + if self._last_refresh + self.refresh_period < datetime.now().timestamp(): self._last_refresh = int(datetime.now().timestamp()) return self._gen_pair_whitelist(pairlist, tickers, From 751157b4ea3ac291e904a01ed5319bec3d680d44 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 18 Nov 2019 19:32:35 +0100 Subject: [PATCH 1005/3421] Don't notify on builds from forks they don't have secrets available ATM --- .github/workflows/ci.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f8932cf07..c74b1720e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,6 +73,8 @@ jobs: # Allow failure for coveralls # Fake travis environment to get coveralls working correctly export TRAVIS_PULL_REQUEST="https://github.com/${GITHUB_REPOSITORY}/pull/$(cat $GITHUB_EVENT_PATH | jq -r .number)" + export CI_BRANCH=${GITHUB_REF#"ref/heads"} + echo "${CI_BRANCH}" coveralls || true - name: Backtesting @@ -95,7 +97,7 @@ jobs: - name: Slack Notification uses: homoluctus/slatify@v1.8.0 - if: always() + if: always() && github.repository.fork == true with: type: ${{ job.status }} job_name: '*Freqtrade CI ${{ matrix.os }}*' @@ -156,7 +158,7 @@ jobs: - name: Slack Notification uses: homoluctus/slatify@v1.8.0 - if: always() + if: always() && github.repository.fork == true with: type: ${{ job.status }} job_name: '*Freqtrade CI windows*' @@ -176,7 +178,7 @@ jobs: - name: Slack Notification uses: homoluctus/slatify@v1.8.0 - if: failure() + if: failure() && github.repository.fork == true with: type: ${{ job.status }} job_name: '*Freqtrade Docs*' @@ -186,7 +188,7 @@ jobs: deploy: needs: [ build, build_windows, docs_check ] runs-on: ubuntu-18.04 - if: github.event_name == 'push' || github.event_name == 'schedule' + if: (github.event_name == 'push' || github.event_name == 'schedule') && github.repository == 'freqtrade/freqtrade' steps: - uses: actions/checkout@v1 @@ -217,7 +219,7 @@ jobs: - name: Slack Notification uses: homoluctus/slatify@v1.8.0 - if: always() + if: always() && github.repository.fork == true with: type: ${{ job.status }} job_name: '*Freqtrade CI Deploy*' From c92f233c1565174b4b8aa6f0ef2bbd57e1b1db2e Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 19 Nov 2019 19:33:04 +0100 Subject: [PATCH 1006/3421] Move settings to correct location --- freqtrade/configuration/deprecated_settings.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index 3aec85ae2..8f3dbd675 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -63,9 +63,9 @@ def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None: "DEPRECATED: " f"Using VolumePairList in pairlist is deprecated and must be moved to pairlists. " "Please refer to the docs on configuration details") - config['pairlists'].append({'method': 'VolumePairList', - 'config': config.get('pairlist', {}).get('config') - }) + pl = {'method': 'VolumePairList'} + pl.update(config.get('pairlist', {}).get('config')) + config['pairlists'].append(pl) if config.get('pairlist', {}).get('config', {}).get('precision_filter'): logger.warning( From 633996216a2640a19454aa8bbdd40c86021bbbac Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 20 Nov 2019 15:20:39 +0300 Subject: [PATCH 1007/3421] Improve commands help list --- scripts/rest_client.py | 69 +++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/scripts/rest_client.py b/scripts/rest_client.py index 096286013..03e4fc76b 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -65,100 +65,99 @@ class FtRestClient(): return self._call("POST", apipath, params=params, data=data) def start(self): - """ - Start the bot if it's in stopped state. + """Start the bot if it's in the stopped state. + :return: json object """ return self._post("start") def stop(self): - """ - Stop the bot. Use start to restart + """Stop the bot. Use `start` to restart. + :return: json object """ return self._post("stop") def stopbuy(self): - """ - Stop buying (but handle sells gracefully). - use reload_conf to reset + """Stop buying (but handle sells gracefully). Use `reload_conf` to reset. + :return: json object """ return self._post("stopbuy") def reload_conf(self): - """ - Reload configuration + """Reload configuration. + :return: json object """ return self._post("reload_conf") def balance(self): - """ - Get the account balance + """Get the account balance. + :return: json object """ return self._get("balance") def count(self): - """ - Returns the amount of open trades + """Return the amount of open trades. + :return: json object """ return self._get("count") def daily(self, days=None): - """ - Returns the amount of open trades + """Return the amount of open trades. + :return: json object """ return self._get("daily", params={"timescale": days} if days else None) def edge(self): - """ - Returns information about edge + """Return information about edge. + :return: json object """ return self._get("edge") def profit(self): - """ - Returns the profit summary + """Return the profit summary. + :return: json object """ return self._get("profit") def performance(self): - """ - Returns the performance of the different coins + """Return the performance of the different coins. + :return: json object """ return self._get("performance") def status(self): - """ - Get the status of open trades + """Get the status of open trades. + :return: json object """ return self._get("status") def version(self): - """ - Returns the version of the bot + """Return the version of the bot. + :return: json object containing the version """ return self._get("version") def whitelist(self): - """ - Show the current whitelist + """Show the current whitelist. + :return: json object """ return self._get("whitelist") def blacklist(self, *args): - """ - Show the current blacklist + """Show the current blacklist. + :param add: List of coins to add (example: "BNB/BTC") :return: json object """ @@ -168,8 +167,8 @@ class FtRestClient(): return self._post("blacklist", data={"blacklist": args}) def forcebuy(self, pair, price=None): - """ - Buy an asset + """Buy an asset. + :param pair: Pair to buy (ETH/BTC) :param price: Optional - price to buy :return: json object of the trade @@ -180,8 +179,8 @@ class FtRestClient(): return self._post("forcebuy", data=data) def forcesell(self, tradeid): - """ - Force-sell a trade + """Force-sell a trade. + :param tradeid: Id of the trade (can be received via status command) :return: json object """ @@ -236,10 +235,10 @@ def load_config(configfile): def print_commands(): # Print dynamic help for the different commands using the commands doc-strings client = FtRestClient(None) - print("Possible commands:") + print("Possible commands:\n") for x, y in inspect.getmembers(client): if not x.startswith('_'): - print(f"{x} {getattr(client, x).__doc__}") + print(f"{x}""\n "f"{getattr(client, x).__doc__.splitlines()[0]}""\n") def main(args): From 5f88c4aad98d92b722709c4ce2978170d32494f5 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Wed, 20 Nov 2019 19:31:30 +0300 Subject: [PATCH 1008/3421] Add example of usage for Aroon, Aroon Oscillator --- user_data/strategies/sample_strategy.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/user_data/strategies/sample_strategy.py b/user_data/strategies/sample_strategy.py index 36dea65c9..77a2d261a 100644 --- a/user_data/strategies/sample_strategy.py +++ b/user_data/strategies/sample_strategy.py @@ -107,10 +107,16 @@ class SampleStrategy(IStrategy): # RSI dataframe['rsi'] = ta.RSI(dataframe) - # ADX dataframe['adx'] = ta.ADX(dataframe) + """ + # Aroon, Aroon Oscillator + aroon = ta.AROON(dataframe) + dataframe['aroonup'] = aroon['aroonup'] + dataframe['aroondown'] = aroon['aroondown'] + dataframe['aroonosc'] = ta.AROONOSC(dataframe) + # Awesome oscillator dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) From 8b639b5026a2b7cd745de08cf764f7ddefcea9fa Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 20 Nov 2019 19:54:00 +0100 Subject: [PATCH 1009/3421] Remove only :return: --- scripts/rest_client.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/rest_client.py b/scripts/rest_client.py index 03e4fc76b..9e52de2bb 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -10,6 +10,7 @@ so it can be used as a standalone script. import argparse import inspect import json +import re import logging import sys from pathlib import Path @@ -238,7 +239,8 @@ def print_commands(): print("Possible commands:\n") for x, y in inspect.getmembers(client): if not x.startswith('_'): - print(f"{x}""\n "f"{getattr(client, x).__doc__.splitlines()[0]}""\n") + doc = re.sub(':return:.*', '', getattr(client, x).__doc__, flags=re.MULTILINE).rstrip() + print(f"{x}\n\t{doc}\n") def main(args): From 9aac080414c5d7b96870b1aebf8f15cbe5c232f3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 20 Nov 2019 20:08:12 +0100 Subject: [PATCH 1010/3421] Fix 'remaining' bug when handling buy timeout --- freqtrade/freqtradebot.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 58f676aef..702e8483f 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -787,7 +787,7 @@ class FreqtradeBot: continue # Check if trade is still actually open - if float(order['remaining']) == 0.0: + if float(order.get('remaining', 0.0)) == 0.0: self.wallets.update() continue @@ -813,7 +813,8 @@ class FreqtradeBot: }) def handle_timedout_limit_buy(self, trade: Trade, order: Dict) -> bool: - """Buy timeout - cancel order + """ + Buy timeout - cancel order :return: True if order was fully cancelled """ reason = "cancelled due to timeout" @@ -824,18 +825,21 @@ class FreqtradeBot: corder = order reason = "canceled on Exchange" - if corder['remaining'] == corder['amount']: + if corder.get('remaining', order['remaining']) == order['amount']: # if trade is not partially completed, just delete the trade self.handle_buy_order_full_cancel(trade, reason) return True # if trade is partially complete, edit the stake details for the trade # and close the order - trade.amount = corder['amount'] - corder['remaining'] + # cancel_order may not contain the full order dict, so we need to fallback + # to the order dict aquired before cancelling. + # we need to fall back to the values from order if corder does not contain these keys. + trade.amount = order['amount'] - corder.get('remaining', order['remaining']) trade.stake_amount = trade.amount * trade.open_rate # verify if fees were taken from amount to avoid problems during selling try: - new_amount = self.get_real_amount(trade, corder, trade.amount) + new_amount = self.get_real_amount(trade, order, trade.amount) if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): trade.amount = new_amount # Fee was applied, so set to 0 From a5bd4e329a9da98191e20b46e15fc496d55ec2c9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 20 Nov 2019 20:33:05 +0100 Subject: [PATCH 1011/3421] improve cancel_order handling --- freqtrade/freqtradebot.py | 3 ++- tests/test_freqtradebot.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 702e8483f..358c63f90 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -839,7 +839,8 @@ class FreqtradeBot: trade.stake_amount = trade.amount * trade.open_rate # verify if fees were taken from amount to avoid problems during selling try: - new_amount = self.get_real_amount(trade, order, trade.amount) + new_amount = self.get_real_amount(trade, corder if 'fee' in corder else order, + trade.amount) if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): trade.amount = new_amount # Fee was applied, so set to 0 diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index f3baff7ce..c195ce39b 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1804,7 +1804,7 @@ def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order, def test_check_handle_timedout_buy(default_conf, ticker, limit_buy_order_old, open_trade, fee, mocker) -> None: rpc_mock = patch_RPCManager(mocker) - cancel_order_mock = MagicMock() + cancel_order_mock = MagicMock(return_value=limit_buy_order_old) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', From eac01960a79e2031630e90169e23259194275fa2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 20 Nov 2019 20:37:46 +0100 Subject: [PATCH 1012/3421] Add testcase for empty-order case --- tests/test_freqtradebot.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index c195ce39b..b01c8e247 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2089,6 +2089,29 @@ def test_handle_timedout_limit_buy(mocker, default_conf, limit_buy_order) -> Non assert cancel_order_mock.call_count == 1 +def test_handle_timedout_limit_buy_corder_empty(mocker, default_conf, limit_buy_order) -> None: + patch_RPCManager(mocker) + patch_exchange(mocker) + cancel_order_mock = MagicMock(return_value={}) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + cancel_order=cancel_order_mock + ) + + freqtrade = FreqtradeBot(default_conf) + + Trade.session = MagicMock() + trade = MagicMock() + limit_buy_order['remaining'] = limit_buy_order['amount'] + assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) + assert cancel_order_mock.call_count == 1 + + cancel_order_mock.reset_mock() + limit_buy_order['amount'] = 2 + assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) + assert cancel_order_mock.call_count == 1 + + def test_handle_timedout_limit_sell(mocker, default_conf) -> None: patch_RPCManager(mocker) patch_exchange(mocker) From b8aa727edf27f7b2d00d0fe2b7e4eeeb44b87943 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 21 Nov 2019 04:59:38 +0300 Subject: [PATCH 1013/3421] Fix second part of freqtrade-strategies #51 --- freqtrade/strategy/interface.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index d42f8e989..e208138e7 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -109,8 +109,8 @@ class IStrategy(ABC): # Class level variables (intentional) containing # the dataprovider (dp) (access to other candles, historic data, ...) # and wallets - access to the current balance. - dp: DataProvider - wallets: Wallets + dp: Optional[DataProvider] = None + wallets: Optional[Wallets] = None def __init__(self, config: dict) -> None: self.config = config From 258d4bd6ae7ed19b4f682029c86d66974e2032f4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 12:57:38 +0100 Subject: [PATCH 1014/3421] move sample-files from user_data to templates folder --- {user_data/hyperopts => freqtrade/templates}/sample_hyperopt.py | 0 .../hyperopts => freqtrade/templates}/sample_hyperopt_advanced.py | 0 .../hyperopts => freqtrade/templates}/sample_hyperopt_loss.py | 0 {user_data/strategies => freqtrade/templates}/sample_strategy.py | 0 user_data/hyperopts/__init__.py | 0 user_data/strategies/__init__.py | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename {user_data/hyperopts => freqtrade/templates}/sample_hyperopt.py (100%) rename {user_data/hyperopts => freqtrade/templates}/sample_hyperopt_advanced.py (100%) rename {user_data/hyperopts => freqtrade/templates}/sample_hyperopt_loss.py (100%) rename {user_data/strategies => freqtrade/templates}/sample_strategy.py (100%) delete mode 100644 user_data/hyperopts/__init__.py delete mode 100644 user_data/strategies/__init__.py diff --git a/user_data/hyperopts/sample_hyperopt.py b/freqtrade/templates/sample_hyperopt.py similarity index 100% rename from user_data/hyperopts/sample_hyperopt.py rename to freqtrade/templates/sample_hyperopt.py diff --git a/user_data/hyperopts/sample_hyperopt_advanced.py b/freqtrade/templates/sample_hyperopt_advanced.py similarity index 100% rename from user_data/hyperopts/sample_hyperopt_advanced.py rename to freqtrade/templates/sample_hyperopt_advanced.py diff --git a/user_data/hyperopts/sample_hyperopt_loss.py b/freqtrade/templates/sample_hyperopt_loss.py similarity index 100% rename from user_data/hyperopts/sample_hyperopt_loss.py rename to freqtrade/templates/sample_hyperopt_loss.py diff --git a/user_data/strategies/sample_strategy.py b/freqtrade/templates/sample_strategy.py similarity index 100% rename from user_data/strategies/sample_strategy.py rename to freqtrade/templates/sample_strategy.py diff --git a/user_data/hyperopts/__init__.py b/user_data/hyperopts/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/user_data/strategies/__init__.py b/user_data/strategies/__init__.py deleted file mode 100644 index e69de29bb..000000000 From fd45ebd0e9d8ef49f00f2ccf3f8145debbdd2db8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 13:28:35 +0100 Subject: [PATCH 1015/3421] Copy templates when creating userdir --- .../configuration/directory_operations.py | 23 ++++++++++++- freqtrade/constants.py | 8 +++++ freqtrade/utils.py | 5 +-- tests/test_configuration.py | 34 ++++++++++++++++++- 4 files changed, 66 insertions(+), 4 deletions(-) diff --git a/freqtrade/configuration/directory_operations.py b/freqtrade/configuration/directory_operations.py index 395accd90..e39c485f3 100644 --- a/freqtrade/configuration/directory_operations.py +++ b/freqtrade/configuration/directory_operations.py @@ -1,8 +1,10 @@ import logging -from typing import Any, Dict, Optional +import shutil from pathlib import Path +from typing import Any, Dict, Optional from freqtrade import OperationalException +from freqtrade.constants import USER_DATA_FILES logger = logging.getLogger(__name__) @@ -48,3 +50,22 @@ def create_userdata_dir(directory: str, create_dir=False) -> Path: if not subfolder.is_dir(): subfolder.mkdir(parents=False) return folder + + +def copy_sample_files(directory: Path) -> None: + """ + Copy files from templates to User data directory. + :param directory: Directory to copy data to + """ + if not directory.is_dir(): + raise OperationalException(f"Directory `{directory}` does not exist.") + sourcedir = Path(__file__).parents[1] / "templates" + for source, target in USER_DATA_FILES.items(): + targetdir = directory / target + if not targetdir.is_dir(): + raise OperationalException(f"Directory `{targetdir}` does not exist.") + targetfile = targetdir / source + if targetfile.exists(): + logger.warning(f"File `{targetfile}` exists already, not deploying sample file.") + continue + shutil.copy(str(sourcedir / source), str(targetfile)) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index a92371bc3..e28016eea 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -22,6 +22,14 @@ AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'PrecisionFilter', 'P DRY_RUN_WALLET = 999.9 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons +# Soure files with destination directories +USER_DATA_FILES = { + 'sample_strategy.py': 'strategies', + 'sample_hyperopt_advanced.py': 'hyperopts', + 'sample_hyperopt_loss.py': 'hyperopts', + 'sample_hyperopt.py': 'hyperopts', +} + TIMEFRAMES = [ '1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', '6h', '8h', '12h', diff --git a/freqtrade/utils.py b/freqtrade/utils.py index b8ab7504e..c6422d04c 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -11,7 +11,7 @@ from tabulate import tabulate from freqtrade import OperationalException from freqtrade.configuration import Configuration, TimeRange, remove_credentials -from freqtrade.configuration.directory_operations import create_userdata_dir +from freqtrade.configuration.directory_operations import create_userdata_dir, copy_sample_files from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data, refresh_backtest_trades_data) @@ -81,7 +81,8 @@ def start_create_userdir(args: Dict[str, Any]) -> None: :return: None """ if "user_data_dir" in args and args["user_data_dir"]: - create_userdata_dir(args["user_data_dir"], create_dir=True) + userdir = create_userdata_dir(args["user_data_dir"], create_dir=True) + copy_sample_files(userdir) else: logger.warning("`create-userdir` requires --userdir to be set.") sys.exit(1) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 240b7c784..d74d64c95 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -18,7 +18,7 @@ from freqtrade.configuration.deprecated_settings import ( check_conflicting_settings, process_deprecated_setting, process_temporary_deprecated_settings) from freqtrade.configuration.directory_operations import (create_datadir, - create_userdata_dir) + create_userdata_dir, copy_sample_files) from freqtrade.configuration.load_config import load_config_file from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL from freqtrade.loggers import _set_loggers @@ -709,6 +709,38 @@ def test_create_userdata_dir_exists_exception(mocker, default_conf, caplog) -> N assert md.call_count == 0 +def test_copy_sample_files(mocker, default_conf, caplog) -> None: + mocker.patch.object(Path, "is_dir", MagicMock(return_value=True)) + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + copymock = mocker.patch('shutil.copy', MagicMock()) + + copy_sample_files(Path('/tmp/bar')) + assert copymock.call_count == 4 + assert copymock.call_args_list[0][0][1] == '/tmp/bar/strategies/sample_strategy.py' + assert copymock.call_args_list[1][0][1] == '/tmp/bar/hyperopts/sample_hyperopt_advanced.py' + assert copymock.call_args_list[2][0][1] == '/tmp/bar/hyperopts/sample_hyperopt_loss.py' + assert copymock.call_args_list[3][0][1] == '/tmp/bar/hyperopts/sample_hyperopt.py' + + +def test_copy_sample_files_errors(mocker, default_conf, caplog) -> None: + mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + mocker.patch('shutil.copy', MagicMock()) + with pytest.raises(OperationalException, + match=r"Directory `.{1,2}tmp.{1,2}bar` does not exist\."): + copy_sample_files(Path('/tmp/bar')) + + mocker.patch.object(Path, "is_dir", MagicMock(side_effect=[True, False])) + + with pytest.raises(OperationalException, + match=r"Directory `.{1,2}tmp.{1,2}bar.{1,2}strategies` does not exist\."): + copy_sample_files(Path('/tmp/bar')) + mocker.patch.object(Path, "is_dir", MagicMock(return_value=True)) + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + copy_sample_files(Path('/tmp/bar')) + assert log_has_re(r"File `.*` exists already, not deploying sample.*", caplog) + + def test_validate_tsl(default_conf): default_conf['stoploss'] = 0.0 with pytest.raises(OperationalException, match='The config stoploss needs to be different ' From 1d2ef5c2ce8d1fd0ce9310aaa38dbaeba0ca6258 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 13:30:26 +0100 Subject: [PATCH 1016/3421] Extract directory_operation tests to it's own test file --- tests/test_configuration.py | 73 -------------------------- tests/test_directory_operations.py | 82 ++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 73 deletions(-) create mode 100644 tests/test_directory_operations.py diff --git a/tests/test_configuration.py b/tests/test_configuration.py index d74d64c95..e971d15ab 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -17,8 +17,6 @@ from freqtrade.configuration.config_validation import validate_config_schema from freqtrade.configuration.deprecated_settings import ( check_conflicting_settings, process_deprecated_setting, process_temporary_deprecated_settings) -from freqtrade.configuration.directory_operations import (create_datadir, - create_userdata_dir, copy_sample_files) from freqtrade.configuration.load_config import load_config_file from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL from freqtrade.loggers import _set_loggers @@ -670,77 +668,6 @@ def test_validate_default_conf(default_conf) -> None: validate(default_conf, constants.CONF_SCHEMA, Draft4Validator) -def test_create_datadir(mocker, default_conf, caplog) -> None: - mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) - md = mocker.patch.object(Path, 'mkdir', MagicMock()) - - create_datadir(default_conf, '/foo/bar') - assert md.call_args[1]['parents'] is True - assert log_has('Created data directory: /foo/bar', caplog) - - -def test_create_userdata_dir(mocker, default_conf, caplog) -> None: - mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) - md = mocker.patch.object(Path, 'mkdir', MagicMock()) - - x = create_userdata_dir('/tmp/bar', create_dir=True) - assert md.call_count == 7 - assert md.call_args[1]['parents'] is False - assert log_has(f'Created user-data directory: {Path("/tmp/bar")}', caplog) - assert isinstance(x, Path) - assert str(x) == str(Path("/tmp/bar")) - - -def test_create_userdata_dir_exists(mocker, default_conf, caplog) -> None: - mocker.patch.object(Path, "is_dir", MagicMock(return_value=True)) - md = mocker.patch.object(Path, 'mkdir', MagicMock()) - - create_userdata_dir('/tmp/bar') - assert md.call_count == 0 - - -def test_create_userdata_dir_exists_exception(mocker, default_conf, caplog) -> None: - mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) - md = mocker.patch.object(Path, 'mkdir', MagicMock()) - - with pytest.raises(OperationalException, - match=r'Directory `.{1,2}tmp.{1,2}bar` does not exist.*'): - create_userdata_dir('/tmp/bar', create_dir=False) - assert md.call_count == 0 - - -def test_copy_sample_files(mocker, default_conf, caplog) -> None: - mocker.patch.object(Path, "is_dir", MagicMock(return_value=True)) - mocker.patch.object(Path, "exists", MagicMock(return_value=False)) - copymock = mocker.patch('shutil.copy', MagicMock()) - - copy_sample_files(Path('/tmp/bar')) - assert copymock.call_count == 4 - assert copymock.call_args_list[0][0][1] == '/tmp/bar/strategies/sample_strategy.py' - assert copymock.call_args_list[1][0][1] == '/tmp/bar/hyperopts/sample_hyperopt_advanced.py' - assert copymock.call_args_list[2][0][1] == '/tmp/bar/hyperopts/sample_hyperopt_loss.py' - assert copymock.call_args_list[3][0][1] == '/tmp/bar/hyperopts/sample_hyperopt.py' - - -def test_copy_sample_files_errors(mocker, default_conf, caplog) -> None: - mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) - mocker.patch.object(Path, "exists", MagicMock(return_value=False)) - mocker.patch('shutil.copy', MagicMock()) - with pytest.raises(OperationalException, - match=r"Directory `.{1,2}tmp.{1,2}bar` does not exist\."): - copy_sample_files(Path('/tmp/bar')) - - mocker.patch.object(Path, "is_dir", MagicMock(side_effect=[True, False])) - - with pytest.raises(OperationalException, - match=r"Directory `.{1,2}tmp.{1,2}bar.{1,2}strategies` does not exist\."): - copy_sample_files(Path('/tmp/bar')) - mocker.patch.object(Path, "is_dir", MagicMock(return_value=True)) - mocker.patch.object(Path, "exists", MagicMock(return_value=True)) - copy_sample_files(Path('/tmp/bar')) - assert log_has_re(r"File `.*` exists already, not deploying sample.*", caplog) - - def test_validate_tsl(default_conf): default_conf['stoploss'] = 0.0 with pytest.raises(OperationalException, match='The config stoploss needs to be different ' diff --git a/tests/test_directory_operations.py b/tests/test_directory_operations.py new file mode 100644 index 000000000..a7d98795b --- /dev/null +++ b/tests/test_directory_operations.py @@ -0,0 +1,82 @@ +# pragma pylint: disable=missing-docstring, protected-access, invalid-name +from pathlib import Path +from unittest.mock import MagicMock + +import pytest + +from freqtrade import OperationalException +from freqtrade.configuration.directory_operations import (copy_sample_files, + create_datadir, + create_userdata_dir) +from tests.conftest import log_has, log_has_re + + +def test_create_datadir(mocker, default_conf, caplog) -> None: + mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) + md = mocker.patch.object(Path, 'mkdir', MagicMock()) + + create_datadir(default_conf, '/foo/bar') + assert md.call_args[1]['parents'] is True + assert log_has('Created data directory: /foo/bar', caplog) + + +def test_create_userdata_dir(mocker, default_conf, caplog) -> None: + mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) + md = mocker.patch.object(Path, 'mkdir', MagicMock()) + + x = create_userdata_dir('/tmp/bar', create_dir=True) + assert md.call_count == 7 + assert md.call_args[1]['parents'] is False + assert log_has(f'Created user-data directory: {Path("/tmp/bar")}', caplog) + assert isinstance(x, Path) + assert str(x) == str(Path("/tmp/bar")) + + +def test_create_userdata_dir_exists(mocker, default_conf, caplog) -> None: + mocker.patch.object(Path, "is_dir", MagicMock(return_value=True)) + md = mocker.patch.object(Path, 'mkdir', MagicMock()) + + create_userdata_dir('/tmp/bar') + assert md.call_count == 0 + + +def test_create_userdata_dir_exists_exception(mocker, default_conf, caplog) -> None: + mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) + md = mocker.patch.object(Path, 'mkdir', MagicMock()) + + with pytest.raises(OperationalException, + match=r'Directory `.{1,2}tmp.{1,2}bar` does not exist.*'): + create_userdata_dir('/tmp/bar', create_dir=False) + assert md.call_count == 0 + + +def test_copy_sample_files(mocker, default_conf, caplog) -> None: + mocker.patch.object(Path, "is_dir", MagicMock(return_value=True)) + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + copymock = mocker.patch('shutil.copy', MagicMock()) + + copy_sample_files(Path('/tmp/bar')) + assert copymock.call_count == 4 + assert copymock.call_args_list[0][0][1] == '/tmp/bar/strategies/sample_strategy.py' + assert copymock.call_args_list[1][0][1] == '/tmp/bar/hyperopts/sample_hyperopt_advanced.py' + assert copymock.call_args_list[2][0][1] == '/tmp/bar/hyperopts/sample_hyperopt_loss.py' + assert copymock.call_args_list[3][0][1] == '/tmp/bar/hyperopts/sample_hyperopt.py' + + +def test_copy_sample_files_errors(mocker, default_conf, caplog) -> None: + mocker.patch.object(Path, "is_dir", MagicMock(return_value=False)) + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + mocker.patch('shutil.copy', MagicMock()) + with pytest.raises(OperationalException, + match=r"Directory `.{1,2}tmp.{1,2}bar` does not exist\."): + copy_sample_files(Path('/tmp/bar')) + + mocker.patch.object(Path, "is_dir", MagicMock(side_effect=[True, False])) + + with pytest.raises(OperationalException, + match=r"Directory `.{1,2}tmp.{1,2}bar.{1,2}strategies` does not exist\."): + copy_sample_files(Path('/tmp/bar')) + mocker.patch.object(Path, "is_dir", MagicMock(return_value=True)) + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + copy_sample_files(Path('/tmp/bar')) + assert log_has_re(r"File `.*` exists already, not deploying sample.*", caplog) From 084efc98d74cb4ab144b48d86be7f72423762fd8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 13:41:25 +0100 Subject: [PATCH 1017/3421] Address test-failures due to file moves --- tests/optimize/test_backtesting.py | 1 + tests/strategy/test_strategy.py | 8 +++++--- tests/test_utils.py | 2 ++ user_data/hyperopts/.gitkeep | 0 user_data/strategies/.gitkeep | 0 5 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 user_data/hyperopts/.gitkeep create mode 100644 user_data/strategies/.gitkeep diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index b722dd3f8..e74ead33d 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -869,6 +869,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): 'backtesting', '--config', 'config.json', '--datadir', str(testdatadir), + '--strategy-path', str(Path(__file__).parents[2] / 'freqtrade/templates'), '--ticker-interval', '1m', '--timerange', '1510694220-1510700340', '--enable-position-stacking', diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 97affc99c..2b84bc6ee 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -36,13 +36,15 @@ def test_search_strategy(): def test_load_strategy(default_conf, result): - default_conf.update({'strategy': 'SampleStrategy'}) + default_conf.update({'strategy': 'SampleStrategy', + 'strategy_path': str(Path(__file__).parents[2] / 'freqtrade/templates') + }) resolver = StrategyResolver(default_conf) assert 'rsi' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) def test_load_strategy_base64(result, caplog, default_conf): - with open("user_data/strategies/sample_strategy.py", "rb") as file: + with (Path(__file__).parents[2] / 'freqtrade/templates/sample_strategy.py').open("rb") as file: encoded_string = urlsafe_b64encode(file.read()).decode("utf-8") default_conf.update({'strategy': 'SampleStrategy:{}'.format(encoded_string)}) @@ -57,7 +59,7 @@ def test_load_strategy_invalid_directory(result, caplog, default_conf): default_conf['strategy'] = 'SampleStrategy' resolver = StrategyResolver(default_conf) extra_dir = Path.cwd() / 'some/path' - resolver._load_strategy('SampleStrategy', config=default_conf, extra_dir=extra_dir) + resolver._load_strategy('DefaultStrategy', config=default_conf, extra_dir=extra_dir) assert log_has_re(r'Path .*' + r'some.*path.*' + r'.* does not exist', caplog) diff --git a/tests/test_utils.py b/tests/test_utils.py index bbb4fc648..88c9af35d 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -442,6 +442,7 @@ def test_create_datadir_failed(caplog): def test_create_datadir(caplog, mocker): cud = mocker.patch("freqtrade.utils.create_userdata_dir", MagicMock()) + csf = mocker.patch("freqtrade.utils.copy_sample_files", MagicMock()) args = [ "create-userdir", "--userdir", @@ -450,6 +451,7 @@ def test_create_datadir(caplog, mocker): start_create_userdir(get_args(args)) assert cud.call_count == 1 + assert csf.call_count == 1 assert len(caplog.record_tuples) == 0 diff --git a/user_data/hyperopts/.gitkeep b/user_data/hyperopts/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/user_data/strategies/.gitkeep b/user_data/strategies/.gitkeep new file mode 100644 index 000000000..e69de29bb From 471bd4d889fa2343bdc028755356ce0f212e2da7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 13:52:59 +0100 Subject: [PATCH 1018/3421] Small stylistic fixes --- freqtrade/constants.py | 1 + freqtrade/templates/sample_hyperopt_advanced.py | 4 +--- .../templates}/strategy_analysis_example.ipynb | 0 tests/test_directory_operations.py | 3 ++- 4 files changed, 4 insertions(+), 4 deletions(-) rename {user_data/notebooks => freqtrade/templates}/strategy_analysis_example.ipynb (100%) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index e28016eea..96109bc94 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -28,6 +28,7 @@ USER_DATA_FILES = { 'sample_hyperopt_advanced.py': 'hyperopts', 'sample_hyperopt_loss.py': 'hyperopts', 'sample_hyperopt.py': 'hyperopts', + 'strategy_analysis_example.ipynb': 'notebooks', } TIMEFRAMES = [ diff --git a/freqtrade/templates/sample_hyperopt_advanced.py b/freqtrade/templates/sample_hyperopt_advanced.py index 66182edcf..7ababc16c 100644 --- a/freqtrade/templates/sample_hyperopt_advanced.py +++ b/freqtrade/templates/sample_hyperopt_advanced.py @@ -1,11 +1,9 @@ # pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement from functools import reduce -from math import exp from typing import Any, Callable, Dict, List -from datetime import datetime -import numpy as np# noqa F401 +import numpy as np # noqa F401 import talib.abstract as ta from pandas import DataFrame from skopt.space import Categorical, Dimension, Integer, Real diff --git a/user_data/notebooks/strategy_analysis_example.ipynb b/freqtrade/templates/strategy_analysis_example.ipynb similarity index 100% rename from user_data/notebooks/strategy_analysis_example.ipynb rename to freqtrade/templates/strategy_analysis_example.ipynb diff --git a/tests/test_directory_operations.py b/tests/test_directory_operations.py index a7d98795b..5c2485fc3 100644 --- a/tests/test_directory_operations.py +++ b/tests/test_directory_operations.py @@ -56,11 +56,12 @@ def test_copy_sample_files(mocker, default_conf, caplog) -> None: copymock = mocker.patch('shutil.copy', MagicMock()) copy_sample_files(Path('/tmp/bar')) - assert copymock.call_count == 4 + assert copymock.call_count == 5 assert copymock.call_args_list[0][0][1] == '/tmp/bar/strategies/sample_strategy.py' assert copymock.call_args_list[1][0][1] == '/tmp/bar/hyperopts/sample_hyperopt_advanced.py' assert copymock.call_args_list[2][0][1] == '/tmp/bar/hyperopts/sample_hyperopt_loss.py' assert copymock.call_args_list[3][0][1] == '/tmp/bar/hyperopts/sample_hyperopt.py' + assert copymock.call_args_list[4][0][1] == '/tmp/bar/notebooks/strategy_analysis_example.ipynb' def test_copy_sample_files_errors(mocker, default_conf, caplog) -> None: From 19b1a6c6381c9541ca0db2f11b06b90916c70f93 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 13:55:26 +0100 Subject: [PATCH 1019/3421] create-userdir should create the notebooks folder, too --- freqtrade/configuration/directory_operations.py | 3 ++- tests/test_directory_operations.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/configuration/directory_operations.py b/freqtrade/configuration/directory_operations.py index e39c485f3..8837c3572 100644 --- a/freqtrade/configuration/directory_operations.py +++ b/freqtrade/configuration/directory_operations.py @@ -33,7 +33,8 @@ def create_userdata_dir(directory: str, create_dir=False) -> Path: :param create_dir: Create directory if it does not exist. :return: Path object containing the directory """ - sub_dirs = ["backtest_results", "data", "hyperopts", "hyperopt_results", "plot", "strategies", ] + sub_dirs = ["backtest_results", "data", "hyperopts", "hyperopt_results", "notebooks", + "plot", "strategies", ] folder = Path(directory) if not folder.is_dir(): if create_dir: diff --git a/tests/test_directory_operations.py b/tests/test_directory_operations.py index 5c2485fc3..064b5b6a3 100644 --- a/tests/test_directory_operations.py +++ b/tests/test_directory_operations.py @@ -25,7 +25,7 @@ def test_create_userdata_dir(mocker, default_conf, caplog) -> None: md = mocker.patch.object(Path, 'mkdir', MagicMock()) x = create_userdata_dir('/tmp/bar', create_dir=True) - assert md.call_count == 7 + assert md.call_count == 8 assert md.call_args[1]['parents'] is False assert log_has(f'Created user-data directory: {Path("/tmp/bar")}', caplog) assert isinstance(x, Path) From 41494f28da2a678c8b685f5a462ffebcb180457f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 14:08:55 +0100 Subject: [PATCH 1020/3421] Allow resetting of the directory --- freqtrade/configuration/arguments.py | 2 +- freqtrade/configuration/cli_options.py | 5 +++++ freqtrade/configuration/directory_operations.py | 10 +++++++--- freqtrade/utils.py | 3 ++- tests/test_directory_operations.py | 5 ++++- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 29d0d98a2..149e28d2b 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -37,7 +37,7 @@ ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"] ARGS_LIST_PAIRS = ["exchange", "print_list", "list_pairs_print_json", "print_one_column", "print_csv", "base_currencies", "quote_currencies", "list_pairs_all"] -ARGS_CREATE_USERDIR = ["user_data_dir"] +ARGS_CREATE_USERDIR = ["user_data_dir", "reset"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", "timeframes", "erase"] diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 6dc5ef026..d7a496aa7 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -62,6 +62,11 @@ AVAILABLE_CLI_OPTIONS = { help='Path to userdata directory.', metavar='PATH', ), + "reset": Arg( + '--reset', + help='Reset sample files to their original state.', + action='store_true', + ), # Main options "strategy": Arg( '-s', '--strategy', diff --git a/freqtrade/configuration/directory_operations.py b/freqtrade/configuration/directory_operations.py index 8837c3572..3dd76a025 100644 --- a/freqtrade/configuration/directory_operations.py +++ b/freqtrade/configuration/directory_operations.py @@ -53,10 +53,11 @@ def create_userdata_dir(directory: str, create_dir=False) -> Path: return folder -def copy_sample_files(directory: Path) -> None: +def copy_sample_files(directory: Path, overwrite: bool = False) -> None: """ Copy files from templates to User data directory. :param directory: Directory to copy data to + :param overwrite: Overwrite existing sample files """ if not directory.is_dir(): raise OperationalException(f"Directory `{directory}` does not exist.") @@ -67,6 +68,9 @@ def copy_sample_files(directory: Path) -> None: raise OperationalException(f"Directory `{targetdir}` does not exist.") targetfile = targetdir / source if targetfile.exists(): - logger.warning(f"File `{targetfile}` exists already, not deploying sample file.") - continue + if not overwrite: + logger.warning(f"File `{targetfile}` exists already, not deploying sample file.") + continue + else: + logger.warning(f"File `{targetfile}` exists already, overwriting.") shutil.copy(str(sourcedir / source), str(targetfile)) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index c6422d04c..b9730da10 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -1,3 +1,4 @@ +from freqtrade.loggers import setup_logging import logging import sys from collections import OrderedDict @@ -82,7 +83,7 @@ def start_create_userdir(args: Dict[str, Any]) -> None: """ if "user_data_dir" in args and args["user_data_dir"]: userdir = create_userdata_dir(args["user_data_dir"], create_dir=True) - copy_sample_files(userdir) + copy_sample_files(userdir, overwrite=args["reset"]) else: logger.warning("`create-userdir` requires --userdir to be set.") sys.exit(1) diff --git a/tests/test_directory_operations.py b/tests/test_directory_operations.py index 064b5b6a3..c354b40b0 100644 --- a/tests/test_directory_operations.py +++ b/tests/test_directory_operations.py @@ -80,4 +80,7 @@ def test_copy_sample_files_errors(mocker, default_conf, caplog) -> None: mocker.patch.object(Path, "is_dir", MagicMock(return_value=True)) mocker.patch.object(Path, "exists", MagicMock(return_value=True)) copy_sample_files(Path('/tmp/bar')) - assert log_has_re(r"File `.*` exists already, not deploying sample.*", caplog) + assert log_has_re(r"File `.*` exists already, not deploying sample file\.", caplog) + caplog.clear() + copy_sample_files(Path('/tmp/bar'), overwrite=True) + assert log_has_re(r"File `.*` exists already, overwriting\.", caplog) From ed1d4500996dd86516d29b7bf4e840610a71b5b7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 15:02:42 +0100 Subject: [PATCH 1021/3421] Update documentation for create-userdir util --- .coveragerc | 1 + docs/utils.md | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/.coveragerc b/.coveragerc index 96ad6b09b..74dccbfe1 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,6 +1,7 @@ [run] omit = scripts/* + freqtrade/templates/* freqtrade/vendor/* freqtrade/__main__.py tests/* diff --git a/docs/utils.md b/docs/utils.md index 9f5792660..d9baee32c 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -2,6 +2,41 @@ Besides the Live-Trade and Dry-Run run modes, the `backtesting`, `edge` and `hyperopt` optimization subcommands, and the `download-data` subcommand which prepares historical data, the bot contains a number of utility subcommands. They are described in this section. +## Create userdir + +Creates the directory structure to hold your files for freqtrade. +Will also create strategy and hyperopt examples for you to get started. +Can be used multiple times - using `--reset` will reset the sample strategy and hyperopt files to their default state. + +``` +usage: freqtrade create-userdir [-h] [--userdir PATH] [--reset] + +optional arguments: + -h, --help show this help message and exit + --userdir PATH, --user-data-dir PATH + Path to userdata directory. + --reset Reset sample files to their original state. +``` + +!!! Warning + Using `--reset` may result in loss of data, since this will overwrite all sample files without asking again. + +``` +├── backtest_results +├── data +├── hyperopt_results +├── hyperopts +│   ├── sample_hyperopt_advanced.py +│   ├── sample_hyperopt_loss.py +│   └── sample_hyperopt.py +├── notebooks +│   └── strategy_analysis_example.ipynb +├── plot +└── strategies + └── sample_strategy.py +``` + + ## List Exchanges Use the `list-exchanges` subcommand to see the exchanges available for the bot. From 8cf8ab089e8b962a4d2a68e293bc01c5c769f163 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 15:07:36 +0100 Subject: [PATCH 1022/3421] Add note about create-datadir to install instruction --- docs/developer.md | 4 ++-- docs/hyperopt.md | 6 +++--- docs/installation.md | 26 ++++++++++++++------------ docs/strategy-customization.md | 6 +++--- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/docs/developer.md b/docs/developer.md index ab647726c..d731f1768 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -200,8 +200,8 @@ If the day shows the same day, then the last candle can be assumed as incomplete To keep the jupyter notebooks aligned with the documentation, the following should be ran after updating a example notebook. ``` bash -jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace user_data/notebooks/strategy_analysis_example.ipynb -jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to markdown user_data/notebooks/strategy_analysis_example.ipynb --stdout > docs/strategy_analysis_example.md +jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace freqtrade/templates/strategy_analysis_example.ipynb +jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to markdown freqtrade/templates/strategy_analysis_example.ipynb --stdout > docs/strategy_analysis_example.md ``` ## Continuous integration diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 6c1505e75..8a750ef43 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -15,7 +15,7 @@ To learn how to get data for the pairs and exchange you're interrested in, head ## Prepare Hyperopting Before we start digging into Hyperopt, we recommend you to take a look at -the sample hyperopt file located in [user_data/hyperopts/](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt.py). +the sample hyperopt file located in [user_data/hyperopts/](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt.py). Configuring hyperopt is similar to writing your own strategy, and many tasks will be similar and a lot of code can be copied across from the strategy. @@ -423,7 +423,7 @@ These ranges should be sufficient in most cases. The minutes in the steps (ROI d If you have the `generate_roi_table()` and `roi_space()` methods in your custom hyperopt file, remove them in order to utilize these adaptive ROI tables and the ROI hyperoptimization space generated by Freqtrade by default. -Override the `roi_space()` method if you need components of the ROI tables to vary in other ranges. Override the `generate_roi_table()` and `roi_space()` methods and implement your own custom approach for generation of the ROI tables during hyperoptimization if you need a different structure of the ROI tables or other amount of rows (steps). A sample for these methods can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py). +Override the `roi_space()` method if you need components of the ROI tables to vary in other ranges. Override the `generate_roi_table()` and `roi_space()` methods and implement your own custom approach for generation of the ROI tables during hyperoptimization if you need a different structure of the ROI tables or other amount of rows (steps). A sample for these methods can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_advanced.py). ### Understand Hyperopt Stoploss results @@ -458,7 +458,7 @@ If you are optimizing stoploss values, Freqtrade creates the 'stoploss' optimiza If you have the `stoploss_space()` method in your custom hyperopt file, remove it in order to utilize Stoploss hyperoptimization space generated by Freqtrade by default. -Override the `stoploss_space()` method and define the desired range in it if you need stoploss values to vary in other range during hyperoptimization. A sample for this method can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py). +Override the `stoploss_space()` method and define the desired range in it if you need stoploss values to vary in other range during hyperoptimization. A sample for this method can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_advanced.py). ### Validate backtesting results diff --git a/docs/installation.md b/docs/installation.md index 593da2acf..411441aa2 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -162,7 +162,7 @@ Clone the git repository: ```bash git clone https://github.com/freqtrade/freqtrade.git - +cd freqtrade ``` Optionally checkout the master branch to get the latest stable release: @@ -171,22 +171,24 @@ Optionally checkout the master branch to get the latest stable release: git checkout master ``` -#### 4. Initialize the configuration - -```bash -cd freqtrade -cp config.json.example config.json -``` - -> *To edit the config please refer to [Bot Configuration](configuration.md).* - -#### 5. Install python dependencies +#### 4. Install python dependencies ``` bash python3 -m pip install --upgrade pip python3 -m pip install -e . ``` +#### 5. Initialize the configuration + +```bash +# Initialize the user_directory +freqtrade create-userdir --userdir user_data/ + +cp config.json.example config.json +``` + +> *To edit the config please refer to [Bot Configuration](configuration.md).* + #### 6. Run the Bot If this is the first time you run the bot, ensure you are running it in Dry-run `"dry_run": true,` otherwise it will start to buy and sell coins. @@ -227,7 +229,7 @@ If that is not available on your system, feel free to try the instructions below Make sure to use 64bit Windows and 64bit Python to avoid problems with backtesting or hyperopt due to the memory constraints 32bit applications have under Windows. !!! Hint - Using the [Anaconda Distribution](https://www.anaconda.com/distribution/) under Windows can greatly help with installation problems. Check out the [Conda section](#using-conda) in this document. + Using the [Anaconda Distribution](https://www.anaconda.com/distribution/) under Windows can greatly help with installation problems. Check out the [Conda section](#using-conda) in this document for more information. #### Clone the git repository diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 03aecd6ba..d0276579e 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -48,7 +48,7 @@ Future versions will require this to be set. freqtrade trade --strategy AwesomeStrategy ``` -**For the following section we will use the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/sample_strategy.py) +**For the following section we will use the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_strategy.py) file as reference.** !!! Note "Strategies and Backtesting" @@ -114,7 +114,7 @@ def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame ``` !!! Note "Want more indicator examples?" - Look into the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/sample_strategy.py). + Look into the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_strategy.py). Then uncomment indicators you need. ### Strategy startup period @@ -478,7 +478,7 @@ Printing more than a few rows is also possible (simply use `print(dataframe)` i ### Where can i find a strategy template? The strategy template is located in the file -[user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/strategies/sample_strategy.py). +[user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_strategy.py). ### Specify custom strategy location From e3cf6188a1d761963ad59cca4aa8f9c84833c68a Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 16:04:44 +0100 Subject: [PATCH 1023/3421] Add first version of new-strategy generation from template --- freqtrade/configuration/arguments.py | 11 +- freqtrade/misc.py | 13 + freqtrade/templates/base_strategy.py.j2 | 306 ++++++++++++++++++++++++ freqtrade/utils.py | 23 +- 4 files changed, 351 insertions(+), 2 deletions(-) create mode 100644 freqtrade/templates/base_strategy.py.j2 diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 149e28d2b..f48121032 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -39,6 +39,8 @@ ARGS_LIST_PAIRS = ["exchange", "print_list", "list_pairs_print_json", "print_one ARGS_CREATE_USERDIR = ["user_data_dir", "reset"] +ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy"] + ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", "timeframes", "erase"] @@ -52,7 +54,7 @@ ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", NO_CONF_REQURIED = ["download-data", "list-timeframes", "list-markets", "list-pairs", "plot-dataframe", "plot-profit"] -NO_CONF_ALLOWED = ["create-userdir", "list-exchanges"] +NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-strategy"] class Arguments: @@ -117,6 +119,7 @@ class Arguments: from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge from freqtrade.utils import (start_create_userdir, start_download_data, start_list_exchanges, start_list_markets, + start_new_strategy, start_list_timeframes, start_trading) from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit @@ -158,6 +161,12 @@ class Arguments: create_userdir_cmd.set_defaults(func=start_create_userdir) self._build_args(optionlist=ARGS_CREATE_USERDIR, parser=create_userdir_cmd) + # add new-strategy subcommand + build_strategy_cmd = subparsers.add_parser('new-strategy', + help="Create new strategy") + build_strategy_cmd.set_defaults(func=start_new_strategy) + self._build_args(optionlist=ARGS_BUILD_STRATEGY, parser=build_strategy_cmd) + # Add list-exchanges subcommand list_exchanges_cmd = subparsers.add_parser( 'list-exchanges', diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 7682b5285..1745921d6 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -127,3 +127,16 @@ def round_dict(d, n): def plural(num, singular: str, plural: str = None) -> str: return singular if (num == 1 or num == -1) else plural or singular + 's' + + +def render_template(template: str, arguments: dict): + + from jinja2 import Environment, PackageLoader, select_autoescape + + env = Environment( + loader=PackageLoader('freqtrade', 'templates'), + autoescape=select_autoescape(['html', 'xml']) + ) + template = env.get_template(template) + + return template.render(**arguments) diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 new file mode 100644 index 000000000..3fbd26997 --- /dev/null +++ b/freqtrade/templates/base_strategy.py.j2 @@ -0,0 +1,306 @@ + +# --- Do not remove these libs --- +from freqtrade.strategy.interface import IStrategy +from pandas import DataFrame +# -------------------------------- + +# Add your lib to import here +import talib.abstract as ta +import freqtrade.vendor.qtpylib.indicators as qtpylib +import numpy # noqa + + +# This class is a sample. Feel free to customize it. +class {{ strategy }}(IStrategy): + """ + This is a strategy template to get you started.. + More information in https://github.com/freqtrade/freqtrade/blob/develop/docs/bot-optimization.md + + You can: + :return: a Dataframe with all mandatory indicators for the strategies + - Rename the class name (Do not forget to update class_name) + - Add any methods you want to build your strategy + - Add any lib you need to build your strategy + + You must keep: + - the lib in the section "Do not remove these libs" + - the prototype for the methods: minimal_roi, stoploss, populate_indicators, populate_buy_trend, + populate_sell_trend, hyperopt_space, buy_strategy_generator + """ + # Strategy interface version - allow new iterations of the strategy interface. + # Check the documentation or the Sample strategy to get the latest version. + INTERFACE_VERSION = 2 + + # Minimal ROI designed for the strategy. + # This attribute will be overridden if the config file contains "minimal_roi". + minimal_roi = { + "60": 0.01, + "30": 0.02, + "0": 0.04 + } + + # Optimal stoploss designed for the strategy. + # This attribute will be overridden if the config file contains "stoploss". + stoploss = -0.10 + + # Trailing stoploss + trailing_stop = False + # trailing_stop_positive = 0.01 + # trailing_stop_positive_offset = 0.0 # Disabled / not configured + + # Optimal ticker interval for the strategy. + ticker_interval = '5m' + + # Run "populate_indicators()" only for new candle. + process_only_new_candles = False + + # These values can be overridden in the "ask_strategy" section in the config. + use_sell_signal = True + sell_profit_only = False + ignore_roi_if_buy_signal = False + + # Number of candles the strategy requires before producing valid signals + startup_candle_count: int = 20 + + # Optional order type mapping. + order_types = { + 'buy': 'limit', + 'sell': 'limit', + 'stoploss': 'market', + 'stoploss_on_exchange': False + } + + # Optional order time in force. + order_time_in_force = { + 'buy': 'gtc', + 'sell': 'gtc' + } + + def informative_pairs(self): + """ + Define additional, informative pair/interval combinations to be cached from the exchange. + These pair/interval combinations are non-tradeable, unless they are part + of the whitelist as well. + For more information, please consult the documentation + :return: List of tuples in the format (pair, interval) + Sample: return [("ETH/USDT", "5m"), + ("BTC/USDT", "15m"), + ] + """ + return [] + + def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + Adds several different TA indicators to the given DataFrame + + Performance Note: For the best performance be frugal on the number of indicators + you are using. Let uncomment only the indicator you are using in your strategies + or your hyperopt configuration, otherwise you will waste your memory and CPU usage. + :param dataframe: Raw data from the exchange and parsed by parse_ticker_dataframe() + :param metadata: Additional information, like the currently traded pair + :return: a Dataframe with all mandatory indicators for the strategies + """ + + # Momentum Indicators + # ------------------------------------ + + # RSI + dataframe['rsi'] = ta.RSI(dataframe) + + """ + # ADX + dataframe['adx'] = ta.ADX(dataframe) + + # Awesome oscillator + dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) + + # Commodity Channel Index: values Oversold:<-100, Overbought:>100 + dataframe['cci'] = ta.CCI(dataframe) + + # MACD + macd = ta.MACD(dataframe) + dataframe['macd'] = macd['macd'] + dataframe['macdsignal'] = macd['macdsignal'] + dataframe['macdhist'] = macd['macdhist'] + + # MFI + dataframe['mfi'] = ta.MFI(dataframe) + + # Minus Directional Indicator / Movement + dataframe['minus_dm'] = ta.MINUS_DM(dataframe) + dataframe['minus_di'] = ta.MINUS_DI(dataframe) + + # Plus Directional Indicator / Movement + dataframe['plus_dm'] = ta.PLUS_DM(dataframe) + dataframe['plus_di'] = ta.PLUS_DI(dataframe) + dataframe['minus_di'] = ta.MINUS_DI(dataframe) + + # ROC + dataframe['roc'] = ta.ROC(dataframe) + + # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy) + rsi = 0.1 * (dataframe['rsi'] - 50) + dataframe['fisher_rsi'] = (numpy.exp(2 * rsi) - 1) / (numpy.exp(2 * rsi) + 1) + + # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy) + dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) + + # Stoch + stoch = ta.STOCH(dataframe) + dataframe['slowd'] = stoch['slowd'] + dataframe['slowk'] = stoch['slowk'] + + # Stoch fast + stoch_fast = ta.STOCHF(dataframe) + dataframe['fastd'] = stoch_fast['fastd'] + dataframe['fastk'] = stoch_fast['fastk'] + + # Stoch RSI + stoch_rsi = ta.STOCHRSI(dataframe) + dataframe['fastd_rsi'] = stoch_rsi['fastd'] + dataframe['fastk_rsi'] = stoch_rsi['fastk'] + """ + + # Overlap Studies + # ------------------------------------ + + # Bollinger bands + bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2) + dataframe['bb_lowerband'] = bollinger['lower'] + dataframe['bb_middleband'] = bollinger['mid'] + dataframe['bb_upperband'] = bollinger['upper'] + + """ + # EMA - Exponential Moving Average + dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3) + dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5) + dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10) + dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50) + dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100) + + # SAR Parabol + dataframe['sar'] = ta.SAR(dataframe) + + # SMA - Simple Moving Average + dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) + """ + + # TEMA - Triple Exponential Moving Average + dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9) + + # Cycle Indicator + # ------------------------------------ + # Hilbert Transform Indicator - SineWave + hilbert = ta.HT_SINE(dataframe) + dataframe['htsine'] = hilbert['sine'] + dataframe['htleadsine'] = hilbert['leadsine'] + + # Pattern Recognition - Bullish candlestick patterns + # ------------------------------------ + """ + # Hammer: values [0, 100] + dataframe['CDLHAMMER'] = ta.CDLHAMMER(dataframe) + # Inverted Hammer: values [0, 100] + dataframe['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(dataframe) + # Dragonfly Doji: values [0, 100] + dataframe['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(dataframe) + # Piercing Line: values [0, 100] + dataframe['CDLPIERCING'] = ta.CDLPIERCING(dataframe) # values [0, 100] + # Morningstar: values [0, 100] + dataframe['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(dataframe) # values [0, 100] + # Three White Soldiers: values [0, 100] + dataframe['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(dataframe) # values [0, 100] + """ + + # Pattern Recognition - Bearish candlestick patterns + # ------------------------------------ + """ + # Hanging Man: values [0, 100] + dataframe['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(dataframe) + # Shooting Star: values [0, 100] + dataframe['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(dataframe) + # Gravestone Doji: values [0, 100] + dataframe['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(dataframe) + # Dark Cloud Cover: values [0, 100] + dataframe['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(dataframe) + # Evening Doji Star: values [0, 100] + dataframe['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(dataframe) + # Evening Star: values [0, 100] + dataframe['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(dataframe) + """ + + # Pattern Recognition - Bullish/Bearish candlestick patterns + # ------------------------------------ + """ + # Three Line Strike: values [0, -100, 100] + dataframe['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(dataframe) + # Spinning Top: values [0, -100, 100] + dataframe['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(dataframe) # values [0, -100, 100] + # Engulfing: values [0, -100, 100] + dataframe['CDLENGULFING'] = ta.CDLENGULFING(dataframe) # values [0, -100, 100] + # Harami: values [0, -100, 100] + dataframe['CDLHARAMI'] = ta.CDLHARAMI(dataframe) # values [0, -100, 100] + # Three Outside Up/Down: values [0, -100, 100] + dataframe['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(dataframe) # values [0, -100, 100] + # Three Inside Up/Down: values [0, -100, 100] + dataframe['CDL3INSIDE'] = ta.CDL3INSIDE(dataframe) # values [0, -100, 100] + """ + + # Chart type + # ------------------------------------ + """ + # Heikinashi stategy + heikinashi = qtpylib.heikinashi(dataframe) + dataframe['ha_open'] = heikinashi['open'] + dataframe['ha_close'] = heikinashi['close'] + dataframe['ha_high'] = heikinashi['high'] + dataframe['ha_low'] = heikinashi['low'] + """ + + # Retrieve best bid and best ask from the orderbook + # ------------------------------------ + """ + # first check if dataprovider is available + if self.dp: + if self.dp.runmode in ('live', 'dry_run'): + ob = self.dp.orderbook(metadata['pair'], 1) + dataframe['best_bid'] = ob['bids'][0][0] + dataframe['best_ask'] = ob['asks'][0][0] + """ + + return dataframe + + def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + Based on TA indicators, populates the buy signal for the given dataframe + :param dataframe: DataFrame populated with indicators + :param metadata: Additional information, like the currently traded pair + :return: DataFrame with buy column + """ + dataframe.loc[ + ( + (qtpylib.crossed_above(dataframe['rsi'], 30)) & # Signal: RSI crosses above 30 + (dataframe['tema'] <= dataframe['bb_middleband']) & # Guard: tema below BB middle + (dataframe['tema'] > dataframe['tema'].shift(1)) & # Guard: tema is raising + (dataframe['volume'] > 0) # Make sure Volume is not 0 + ), + 'buy'] = 1 + + return dataframe + + def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + Based on TA indicators, populates the sell signal for the given dataframe + :param dataframe: DataFrame populated with indicators + :param metadata: Additional information, like the currently traded pair + :return: DataFrame with buy column + """ + dataframe.loc[ + ( + (qtpylib.crossed_above(dataframe['rsi'], 70)) & # Signal: RSI crosses above 70 + (dataframe['tema'] > dataframe['bb_middleband']) & # Guard: tema above BB middle + (dataframe['tema'] < dataframe['tema'].shift(1)) & # Guard: tema is falling + (dataframe['volume'] > 0) # Make sure Volume is not 0 + ), + 'sell'] = 1 + return dataframe diff --git a/freqtrade/utils.py b/freqtrade/utils.py index b9730da10..974d5a2c3 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -18,7 +18,7 @@ from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_trades_data) from freqtrade.exchange import (available_exchanges, ccxt_exchanges, market_is_active, symbol_is_pair) -from freqtrade.misc import plural +from freqtrade.misc import plural, render_template from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode @@ -89,6 +89,27 @@ def start_create_userdir(args: Dict[str, Any]) -> None: sys.exit(1) +def start_new_strategy(args: Dict[str, Any]) -> None: + + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + + if "strategy" in args and args["strategy"]: + new_path = config['user_data_dir'] / "strategies" / (args["strategy"] + ".py") + + if new_path.exists(): + raise OperationalException(f"`{new_path}` already exists. " + "Please choose another Strategy Name.") + + strategy_text = render_template(template='base_strategy.py.j2', + arguments={"strategy": args["strategy"]}) + + logger.info(f"Writing strategy to `{new_path}`.") + new_path.write_text(strategy_text) + else: + logger.warning("`new-strategy` requires --strategy to be set.") + sys.exit(1) + + def start_download_data(args: Dict[str, Any]) -> None: """ Download data (former download_backtest_data.py script) From 98baae9456c7e895e39c7fe794d2ceeabd5aecb9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 16:09:30 +0100 Subject: [PATCH 1024/3421] Add jinja2 to requirements --- requirements-common.txt | 1 + setup.py | 1 + 2 files changed, 2 insertions(+) diff --git a/requirements-common.txt b/requirements-common.txt index 63cf48eee..2c176e9c3 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -12,6 +12,7 @@ jsonschema==3.1.1 TA-Lib==0.4.17 tabulate==0.8.6 coinmarketcap==5.0.3 +jinja2==2.10.3 # find first, C search in arrays py_find_1st==1.1.4 diff --git a/setup.py b/setup.py index 50b8eee9c..3710bcdc0 100644 --- a/setup.py +++ b/setup.py @@ -78,6 +78,7 @@ setup(name='freqtrade', 'python-rapidjson', 'sdnotify', 'colorama', + 'jinja2', # from requirements.txt 'numpy', 'pandas', From e492d47621fe68bb2d1aae5e9dcc1f5e541c605b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 Nov 2019 19:50:42 +0100 Subject: [PATCH 1025/3421] Disallow usage of DefaultStrategy --- freqtrade/utils.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 974d5a2c3..2a6b0182c 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -1,4 +1,4 @@ -from freqtrade.loggers import setup_logging +import csv import logging import sys from collections import OrderedDict @@ -6,18 +6,20 @@ from pathlib import Path from typing import Any, Dict, List import arrow -import csv import rapidjson from tabulate import tabulate from freqtrade import OperationalException -from freqtrade.configuration import Configuration, TimeRange, remove_credentials -from freqtrade.configuration.directory_operations import create_userdata_dir, copy_sample_files +from freqtrade.configuration import (Configuration, TimeRange, + remove_credentials) +from freqtrade.configuration.directory_operations import (copy_sample_files, + create_userdata_dir) +from freqtrade.constants import DEFAULT_STRATEGY from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data, refresh_backtest_trades_data) -from freqtrade.exchange import (available_exchanges, ccxt_exchanges, market_is_active, - symbol_is_pair) +from freqtrade.exchange import (available_exchanges, ccxt_exchanges, + market_is_active, symbol_is_pair) from freqtrade.misc import plural, render_template from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode @@ -94,6 +96,9 @@ def start_new_strategy(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) if "strategy" in args and args["strategy"]: + if args["strategy"] == DEFAULT_STRATEGY: + raise OperationalException("DefaultStrategy is not allowed as name.") + new_path = config['user_data_dir'] / "strategies" / (args["strategy"] + ".py") if new_path.exists(): From 8c2ff2f46e3d38a118bcfe57363cf3569c5618a6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 Nov 2019 10:42:17 +0100 Subject: [PATCH 1026/3421] Add template for new-hyperopt command --- freqtrade/configuration/arguments.py | 12 +- freqtrade/templates/base_hyperopt.py.j2 | 154 ++++++++++++++++++++++++ freqtrade/utils.py | 26 +++- 3 files changed, 189 insertions(+), 3 deletions(-) create mode 100644 freqtrade/templates/base_hyperopt.py.j2 diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index f48121032..4ba2d04c4 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -41,6 +41,8 @@ ARGS_CREATE_USERDIR = ["user_data_dir", "reset"] ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy"] +ARGS_BUILD_HYPEROPT = ["user_data_dir", "hyperopt"] + ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", "timeframes", "erase"] @@ -54,7 +56,7 @@ ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", NO_CONF_REQURIED = ["download-data", "list-timeframes", "list-markets", "list-pairs", "plot-dataframe", "plot-profit"] -NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-strategy"] +NO_CONF_ALLOWED = ["create-userdir", "list-exchanges","new-hyperopt", "new-strategy"] class Arguments: @@ -119,7 +121,7 @@ class Arguments: from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge from freqtrade.utils import (start_create_userdir, start_download_data, start_list_exchanges, start_list_markets, - start_new_strategy, + start_new_hyperopt, start_new_strategy, start_list_timeframes, start_trading) from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit @@ -167,6 +169,12 @@ class Arguments: build_strategy_cmd.set_defaults(func=start_new_strategy) self._build_args(optionlist=ARGS_BUILD_STRATEGY, parser=build_strategy_cmd) + # add new-hyperopt subcommand + build_hyperopt_cmd = subparsers.add_parser('new-hyperopt', + help="Create new hyperopt") + build_hyperopt_cmd.set_defaults(func=start_new_hyperopt) + self._build_args(optionlist=ARGS_BUILD_HYPEROPT, parser=build_hyperopt_cmd) + # Add list-exchanges subcommand list_exchanges_cmd = subparsers.add_parser( 'list-exchanges', diff --git a/freqtrade/templates/base_hyperopt.py.j2 b/freqtrade/templates/base_hyperopt.py.j2 new file mode 100644 index 000000000..ad30cfe55 --- /dev/null +++ b/freqtrade/templates/base_hyperopt.py.j2 @@ -0,0 +1,154 @@ +# pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement + +from functools import reduce +from typing import Any, Callable, Dict, List + +import numpy as np # noqa +import talib.abstract as ta +from pandas import DataFrame +from skopt.space import Categorical, Dimension, Integer, Real # noqa + +import freqtrade.vendor.qtpylib.indicators as qtpylib +from freqtrade.optimize.hyperopt_interface import IHyperOpt + + +class {{ hyperopt }}(IHyperOpt): + """ + This is a Hyperopt template to get you started. + + More information in https://github.com/freqtrade/freqtrade/blob/develop/docs/hyperopt.md + + You should: + - Add any lib you need to build your hyperopt. + + You must keep: + - The prototypes for the methods: populate_indicators, indicator_space, buy_strategy_generator. + + The roi_space, generate_roi_table, stoploss_space methods are no longer required to be + copied in every custom hyperopt. However, you may override them if you need the + 'roi' and the 'stoploss' spaces that differ from the defaults offered by Freqtrade. + Sample implementation of these methods can be found in + https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py + """ + + @staticmethod + def buy_strategy_generator(params: Dict[str, Any]) -> Callable: + """ + Define the buy strategy parameters to be used by Hyperopt. + """ + def populate_buy_trend(dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + Buy strategy Hyperopt will build and use. + """ + conditions = [] + + # GUARDS AND TRENDS + if 'mfi-enabled' in params and params['mfi-enabled']: + conditions.append(dataframe['mfi'] < params['mfi-value']) + if 'fastd-enabled' in params and params['fastd-enabled']: + conditions.append(dataframe['fastd'] < params['fastd-value']) + if 'adx-enabled' in params and params['adx-enabled']: + conditions.append(dataframe['adx'] > params['adx-value']) + if 'rsi-enabled' in params and params['rsi-enabled']: + conditions.append(dataframe['rsi'] < params['rsi-value']) + + # TRIGGERS + if 'trigger' in params: + if params['trigger'] == 'bb_lower': + conditions.append(dataframe['close'] < dataframe['bb_lowerband']) + if params['trigger'] == 'macd_cross_signal': + conditions.append(qtpylib.crossed_above( + dataframe['macd'], dataframe['macdsignal'] + )) + if params['trigger'] == 'sar_reversal': + conditions.append(qtpylib.crossed_above( + dataframe['close'], dataframe['sar'] + )) + + if conditions: + dataframe.loc[ + reduce(lambda x, y: x & y, conditions), + 'buy'] = 1 + + return dataframe + + return populate_buy_trend + + @staticmethod + def indicator_space() -> List[Dimension]: + """ + Define your Hyperopt space for searching buy strategy parameters. + """ + return [ + Integer(10, 25, name='mfi-value'), + Integer(15, 45, name='fastd-value'), + Integer(20, 50, name='adx-value'), + Integer(20, 40, name='rsi-value'), + Categorical([True, False], name='mfi-enabled'), + Categorical([True, False], name='fastd-enabled'), + Categorical([True, False], name='adx-enabled'), + Categorical([True, False], name='rsi-enabled'), + Categorical(['bb_lower', 'macd_cross_signal', 'sar_reversal'], name='trigger') + ] + + @staticmethod + def sell_strategy_generator(params: Dict[str, Any]) -> Callable: + """ + Define the sell strategy parameters to be used by Hyperopt. + """ + def populate_sell_trend(dataframe: DataFrame, metadata: dict) -> DataFrame: + """ + Sell strategy Hyperopt will build and use. + """ + conditions = [] + + # GUARDS AND TRENDS + if 'sell-mfi-enabled' in params and params['sell-mfi-enabled']: + conditions.append(dataframe['mfi'] > params['sell-mfi-value']) + if 'sell-fastd-enabled' in params and params['sell-fastd-enabled']: + conditions.append(dataframe['fastd'] > params['sell-fastd-value']) + if 'sell-adx-enabled' in params and params['sell-adx-enabled']: + conditions.append(dataframe['adx'] < params['sell-adx-value']) + if 'sell-rsi-enabled' in params and params['sell-rsi-enabled']: + conditions.append(dataframe['rsi'] > params['sell-rsi-value']) + + # TRIGGERS + if 'sell-trigger' in params: + if params['sell-trigger'] == 'sell-bb_upper': + conditions.append(dataframe['close'] > dataframe['bb_upperband']) + if params['sell-trigger'] == 'sell-macd_cross_signal': + conditions.append(qtpylib.crossed_above( + dataframe['macdsignal'], dataframe['macd'] + )) + if params['sell-trigger'] == 'sell-sar_reversal': + conditions.append(qtpylib.crossed_above( + dataframe['sar'], dataframe['close'] + )) + + if conditions: + dataframe.loc[ + reduce(lambda x, y: x & y, conditions), + 'sell'] = 1 + + return dataframe + + return populate_sell_trend + + @staticmethod + def sell_indicator_space() -> List[Dimension]: + """ + Define your Hyperopt space for searching sell strategy parameters. + """ + return [ + Integer(75, 100, name='sell-mfi-value'), + Integer(50, 100, name='sell-fastd-value'), + Integer(50, 100, name='sell-adx-value'), + Integer(60, 100, name='sell-rsi-value'), + Categorical([True, False], name='sell-mfi-enabled'), + Categorical([True, False], name='sell-fastd-enabled'), + Categorical([True, False], name='sell-adx-enabled'), + Categorical([True, False], name='sell-rsi-enabled'), + Categorical(['sell-bb_upper', + 'sell-macd_cross_signal', + 'sell-sar_reversal'], name='sell-trigger') + ] diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 2a6b0182c..dd61cfcab 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -14,7 +14,7 @@ from freqtrade.configuration import (Configuration, TimeRange, remove_credentials) from freqtrade.configuration.directory_operations import (copy_sample_files, create_userdata_dir) -from freqtrade.constants import DEFAULT_STRATEGY +from freqtrade.constants import DEFAULT_HYPEROPT, DEFAULT_STRATEGY from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data, refresh_backtest_trades_data) @@ -115,6 +115,30 @@ def start_new_strategy(args: Dict[str, Any]) -> None: sys.exit(1) +def start_new_hyperopt(args: Dict[str, Any]) -> None: + + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + + if "hyperopt" in args and args["hyperopt"]: + if args["hyperopt"] == DEFAULT_HYPEROPT: + raise OperationalException("DefaultHyperOpt is not allowed as name.") + + new_path = config['user_data_dir'] / "hyperopts" / (args["hyperopt"] + ".py") + + if new_path.exists(): + raise OperationalException(f"`{new_path}` already exists. " + "Please choose another Strategy Name.") + + strategy_text = render_template(template='base_hyperopt.py.j2', + arguments={"hyperopt": args["hyperopt"]}) + + logger.info(f"Writing hyperopt to `{new_path}`.") + new_path.write_text(strategy_text) + else: + logger.warning("`new-hyperopt` requires --hyperopt to be set.") + sys.exit(1) + + def start_download_data(args: Dict[str, Any]) -> None: """ Download data (former download_backtest_data.py script) From 8a1d02e185119ff11fd5b5031ced8f331acab9b6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 Nov 2019 15:34:09 +0100 Subject: [PATCH 1027/3421] Update numpy imports in sample strategies --- freqtrade/templates/base_strategy.py.j2 | 6 +++--- freqtrade/templates/sample_strategy.py | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index 3fbd26997..312aa0f27 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -2,15 +2,15 @@ # --- Do not remove these libs --- from freqtrade.strategy.interface import IStrategy from pandas import DataFrame +import pandas as pd # -------------------------------- # Add your lib to import here import talib.abstract as ta import freqtrade.vendor.qtpylib.indicators as qtpylib -import numpy # noqa +import numpy as np # noqa -# This class is a sample. Feel free to customize it. class {{ strategy }}(IStrategy): """ This is a strategy template to get you started.. @@ -140,7 +140,7 @@ class {{ strategy }}(IStrategy): # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy) rsi = 0.1 * (dataframe['rsi'] - 50) - dataframe['fisher_rsi'] = (numpy.exp(2 * rsi) - 1) / (numpy.exp(2 * rsi) + 1) + dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy) dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index 77a2d261a..d62e6120c 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -7,7 +7,8 @@ from pandas import DataFrame # Add your lib to import here import talib.abstract as ta import freqtrade.vendor.qtpylib.indicators as qtpylib -import numpy # noqa +import pandas as pd # noqa +import numpy as np # noqa # This class is a sample. Feel free to customize it. @@ -147,7 +148,7 @@ class SampleStrategy(IStrategy): # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy) rsi = 0.1 * (dataframe['rsi'] - 50) - dataframe['fisher_rsi'] = (numpy.exp(2 * rsi) - 1) / (numpy.exp(2 * rsi) + 1) + dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy) dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) From b36a1d3260d66ee21032fe19ec9aaf1e1ff27e14 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 Nov 2019 13:31:07 +0100 Subject: [PATCH 1028/3421] test new_stratgy --- tests/test_utils.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index 88c9af35d..902d56082 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -9,8 +9,8 @@ from freqtrade.state import RunMode from freqtrade.utils import (setup_utils_configuration, start_create_userdir, start_download_data, start_list_exchanges, start_list_markets, start_list_timeframes, - start_trading) -from tests.conftest import get_args, log_has, patch_exchange + start_new_strategy, start_trading) +from tests.conftest import get_args, log_has, log_has_re, patch_exchange def test_setup_utils_configuration(): @@ -455,6 +455,32 @@ def test_create_datadir(caplog, mocker): assert len(caplog.record_tuples) == 0 +def test_start_new_strategy(mocker, caplog): + wt_mock = mocker.patch.object(Path, "write_text", MagicMock()) + args = [ + "new-strategy", + "--strategy", + "CoolNewStrategy" + ] + start_new_strategy(get_args(args)) + + assert wt_mock.call_count == 1 + assert "CoolNewStrategy" in wt_mock.call_args_list[0][0][0] + assert log_has_re("Writing strategy to .*", caplog) + + + +def test_start_new_strategy_DefaultStrat(mocker, caplog): + args = [ + "new-strategy", + "--strategy", + "DefaultStrategy" + ] + with pytest.raises(OperationalException, + match=r"DefaultStrategy is not allowed as name\."): + start_new_strategy(get_args(args)) + + def test_download_data_keyboardInterrupt(mocker, caplog, markets): dl_mock = mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data', MagicMock(side_effect=KeyboardInterrupt)) From 65489c894d9cd2dc9383b8cff57e75a2ecf8a2de Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 Nov 2019 13:33:37 +0100 Subject: [PATCH 1029/3421] Add no-arg test --- freqtrade/configuration/arguments.py | 2 +- freqtrade/utils.py | 6 ++---- tests/test_utils.py | 10 +++++++++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 4ba2d04c4..5cc56a8bc 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -56,7 +56,7 @@ ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", NO_CONF_REQURIED = ["download-data", "list-timeframes", "list-markets", "list-pairs", "plot-dataframe", "plot-profit"] -NO_CONF_ALLOWED = ["create-userdir", "list-exchanges","new-hyperopt", "new-strategy"] +NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-hyperopt", "new-strategy"] class Arguments: diff --git a/freqtrade/utils.py b/freqtrade/utils.py index dd61cfcab..314ec4f36 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -111,8 +111,7 @@ def start_new_strategy(args: Dict[str, Any]) -> None: logger.info(f"Writing strategy to `{new_path}`.") new_path.write_text(strategy_text) else: - logger.warning("`new-strategy` requires --strategy to be set.") - sys.exit(1) + raise OperationalException("`new-strategy` requires --strategy to be set.") def start_new_hyperopt(args: Dict[str, Any]) -> None: @@ -135,8 +134,7 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: logger.info(f"Writing hyperopt to `{new_path}`.") new_path.write_text(strategy_text) else: - logger.warning("`new-hyperopt` requires --hyperopt to be set.") - sys.exit(1) + raise OperationalException("`new-hyperopt` requires --hyperopt to be set.") def start_download_data(args: Dict[str, Any]) -> None: diff --git a/tests/test_utils.py b/tests/test_utils.py index 902d56082..c64050f38 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -469,7 +469,6 @@ def test_start_new_strategy(mocker, caplog): assert log_has_re("Writing strategy to .*", caplog) - def test_start_new_strategy_DefaultStrat(mocker, caplog): args = [ "new-strategy", @@ -481,6 +480,15 @@ def test_start_new_strategy_DefaultStrat(mocker, caplog): start_new_strategy(get_args(args)) +def test_start_new_strategy_no_arg(mocker, caplog): + args = [ + "new-strategy", + ] + with pytest.raises(OperationalException, + match="`new-strategy` requires --strategy to be set."): + start_new_strategy(get_args(args)) + + def test_download_data_keyboardInterrupt(mocker, caplog, markets): dl_mock = mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data', MagicMock(side_effect=KeyboardInterrupt)) From 79891671e99eec20dbcd172ddaa242edd92be72b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 15 Nov 2019 06:49:58 +0100 Subject: [PATCH 1030/3421] Adapt after rebase --- freqtrade/utils.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 314ec4f36..cdbbc8163 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -14,7 +14,6 @@ from freqtrade.configuration import (Configuration, TimeRange, remove_credentials) from freqtrade.configuration.directory_operations import (copy_sample_files, create_userdata_dir) -from freqtrade.constants import DEFAULT_HYPEROPT, DEFAULT_STRATEGY from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data, refresh_backtest_trades_data) @@ -96,7 +95,7 @@ def start_new_strategy(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) if "strategy" in args and args["strategy"]: - if args["strategy"] == DEFAULT_STRATEGY: + if args["strategy"] == "DefaultStrategy": raise OperationalException("DefaultStrategy is not allowed as name.") new_path = config['user_data_dir'] / "strategies" / (args["strategy"] + ".py") @@ -119,7 +118,7 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) if "hyperopt" in args and args["hyperopt"]: - if args["hyperopt"] == DEFAULT_HYPEROPT: + if args["hyperopt"] == "DefaultHyperopt": raise OperationalException("DefaultHyperOpt is not allowed as name.") new_path = config['user_data_dir'] / "hyperopts" / (args["hyperopt"] + ".py") From 37f813943228d557aae04481a12d41a593d928b3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 16 Nov 2019 14:47:44 +0100 Subject: [PATCH 1031/3421] Small stylistic fixes --- freqtrade/templates/base_hyperopt.py.j2 | 10 +++++++--- freqtrade/templates/base_strategy.py.j2 | 20 ++++++++++---------- tests/strategy/test_strategy.py | 2 +- tests/test_utils.py | 2 ++ 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/freqtrade/templates/base_hyperopt.py.j2 b/freqtrade/templates/base_hyperopt.py.j2 index ad30cfe55..75aedbf86 100644 --- a/freqtrade/templates/base_hyperopt.py.j2 +++ b/freqtrade/templates/base_hyperopt.py.j2 @@ -3,14 +3,18 @@ from functools import reduce from typing import Any, Callable, Dict, List -import numpy as np # noqa -import talib.abstract as ta from pandas import DataFrame +import pandas as pd # noqa +import numpy as np # noqa from skopt.space import Categorical, Dimension, Integer, Real # noqa -import freqtrade.vendor.qtpylib.indicators as qtpylib from freqtrade.optimize.hyperopt_interface import IHyperOpt +# -------------------------------- +# Add your lib to import here +import talib.abstract as ta +import freqtrade.vendor.qtpylib.indicators as qtpylib + class {{ hyperopt }}(IHyperOpt): """ diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index 312aa0f27..46c118383 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -2,18 +2,18 @@ # --- Do not remove these libs --- from freqtrade.strategy.interface import IStrategy from pandas import DataFrame -import pandas as pd +import pandas as pd # noqa +import numpy as np # noqa # -------------------------------- # Add your lib to import here import talib.abstract as ta import freqtrade.vendor.qtpylib.indicators as qtpylib -import numpy as np # noqa class {{ strategy }}(IStrategy): """ - This is a strategy template to get you started.. + This is a strategy template to get you started. More information in https://github.com/freqtrade/freqtrade/blob/develop/docs/bot-optimization.md You can: @@ -107,16 +107,15 @@ class {{ strategy }}(IStrategy): # RSI dataframe['rsi'] = ta.RSI(dataframe) - """ # ADX dataframe['adx'] = ta.ADX(dataframe) - + """ # Awesome oscillator dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) # Commodity Channel Index: values Oversold:<-100, Overbought:>100 dataframe['cci'] = ta.CCI(dataframe) - + """ # MACD macd = ta.MACD(dataframe) dataframe['macd'] = macd['macd'] @@ -126,6 +125,7 @@ class {{ strategy }}(IStrategy): # MFI dataframe['mfi'] = ta.MFI(dataframe) + """ # Minus Directional Indicator / Movement dataframe['minus_dm'] = ta.MINUS_DM(dataframe) dataframe['minus_di'] = ta.MINUS_DI(dataframe) @@ -149,12 +149,13 @@ class {{ strategy }}(IStrategy): stoch = ta.STOCH(dataframe) dataframe['slowd'] = stoch['slowd'] dataframe['slowk'] = stoch['slowk'] - + """ # Stoch fast stoch_fast = ta.STOCHF(dataframe) dataframe['fastd'] = stoch_fast['fastd'] dataframe['fastk'] = stoch_fast['fastk'] + """ # Stoch RSI stoch_rsi = ta.STOCHRSI(dataframe) dataframe['fastd_rsi'] = stoch_rsi['fastd'] @@ -178,12 +179,11 @@ class {{ strategy }}(IStrategy): dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50) dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100) - # SAR Parabol - dataframe['sar'] = ta.SAR(dataframe) - # SMA - Simple Moving Average dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) """ + # SAR Parabol + dataframe['sar'] = ta.SAR(dataframe) # TEMA - Triple Exponential Moving Average dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9) diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 2b84bc6ee..963d36c76 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -56,7 +56,7 @@ def test_load_strategy_base64(result, caplog, default_conf): def test_load_strategy_invalid_directory(result, caplog, default_conf): - default_conf['strategy'] = 'SampleStrategy' + default_conf['strategy'] = 'DefaultStrategy' resolver = StrategyResolver(default_conf) extra_dir = Path.cwd() / 'some/path' resolver._load_strategy('DefaultStrategy', config=default_conf, extra_dir=extra_dir) diff --git a/tests/test_utils.py b/tests/test_utils.py index c64050f38..ce93c328d 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -457,6 +457,8 @@ def test_create_datadir(caplog, mocker): def test_start_new_strategy(mocker, caplog): wt_mock = mocker.patch.object(Path, "write_text", MagicMock()) + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + args = [ "new-strategy", "--strategy", From 03cdfe8cae6812485073ce2d3ceff97d52593ef9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 16 Nov 2019 15:52:32 +0100 Subject: [PATCH 1032/3421] Add tests for new-hyperopt --- freqtrade/utils.py | 2 +- tests/test_utils.py | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index cdbbc8163..7d3bd69ed 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -119,7 +119,7 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: if "hyperopt" in args and args["hyperopt"]: if args["hyperopt"] == "DefaultHyperopt": - raise OperationalException("DefaultHyperOpt is not allowed as name.") + raise OperationalException("DefaultHyperopt is not allowed as name.") new_path = config['user_data_dir'] / "hyperopts" / (args["hyperopt"] + ".py") diff --git a/tests/test_utils.py b/tests/test_utils.py index ce93c328d..1258c939c 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -9,7 +9,8 @@ from freqtrade.state import RunMode from freqtrade.utils import (setup_utils_configuration, start_create_userdir, start_download_data, start_list_exchanges, start_list_markets, start_list_timeframes, - start_new_strategy, start_trading) + start_new_hyperopt, start_new_strategy, + start_trading) from tests.conftest import get_args, log_has, log_has_re, patch_exchange @@ -491,6 +492,42 @@ def test_start_new_strategy_no_arg(mocker, caplog): start_new_strategy(get_args(args)) +def test_start_new_hyperopt(mocker, caplog): + wt_mock = mocker.patch.object(Path, "write_text", MagicMock()) + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + + args = [ + "new-hyperopt", + "--hyperopt", + "CoolNewhyperopt" + ] + start_new_hyperopt(get_args(args)) + + assert wt_mock.call_count == 1 + assert "CoolNewhyperopt" in wt_mock.call_args_list[0][0][0] + assert log_has_re("Writing hyperopt to .*", caplog) + + +def test_start_new_hyperopt_DefaultHyperopt(mocker, caplog): + args = [ + "new-hyperopt", + "--hyperopt", + "DefaultHyperopt" + ] + with pytest.raises(OperationalException, + match=r"DefaultHyperopt is not allowed as name\."): + start_new_hyperopt(get_args(args)) + + +def test_start_new_hyperopt_no_arg(mocker, caplog): + args = [ + "new-hyperopt", + ] + with pytest.raises(OperationalException, + match="`new-hyperopt` requires --hyperopt to be set."): + start_new_hyperopt(get_args(args)) + + def test_download_data_keyboardInterrupt(mocker, caplog, markets): dl_mock = mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data', MagicMock(side_effect=KeyboardInterrupt)) From cbb187e9b989a001f844d4fecf795f7084ce8e19 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 16 Nov 2019 22:00:50 +0100 Subject: [PATCH 1033/3421] Use constant for Strategy and hyperopt userdirpaths --- freqtrade/constants.py | 13 ++++++++----- freqtrade/misc.py | 4 ++-- freqtrade/resolvers/hyperopt_resolver.py | 6 +++--- freqtrade/resolvers/strategy_resolver.py | 3 ++- freqtrade/templates/sample_hyperopt.py | 2 +- freqtrade/utils.py | 9 +++++---- 6 files changed, 21 insertions(+), 16 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 96109bc94..bf5d822c6 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -22,12 +22,15 @@ AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'PrecisionFilter', 'P DRY_RUN_WALLET = 999.9 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons -# Soure files with destination directories +USERPATH_HYPEROPTS = 'hyperopts' +USERPATH_STRATEGY = 'strategies' + +# Soure files with destination directories within user-directory USER_DATA_FILES = { - 'sample_strategy.py': 'strategies', - 'sample_hyperopt_advanced.py': 'hyperopts', - 'sample_hyperopt_loss.py': 'hyperopts', - 'sample_hyperopt.py': 'hyperopts', + 'sample_strategy.py': USERPATH_STRATEGY, + 'sample_hyperopt_advanced.py': USERPATH_HYPEROPTS, + 'sample_hyperopt_loss.py': USERPATH_HYPEROPTS, + 'sample_hyperopt.py': USERPATH_HYPEROPTS, 'strategy_analysis_example.ipynb': 'notebooks', } diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 1745921d6..6497a4727 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -129,7 +129,7 @@ def plural(num, singular: str, plural: str = None) -> str: return singular if (num == 1 or num == -1) else plural or singular + 's' -def render_template(template: str, arguments: dict): +def render_template(templatefile: str, arguments: dict): from jinja2 import Environment, PackageLoader, select_autoescape @@ -137,6 +137,6 @@ def render_template(template: str, arguments: dict): loader=PackageLoader('freqtrade', 'templates'), autoescape=select_autoescape(['html', 'xml']) ) - template = env.get_template(template) + template = env.get_template(templatefile) return template.render(**arguments) diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index df1ff182c..05efa1164 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -8,7 +8,7 @@ from pathlib import Path from typing import Optional, Dict from freqtrade import OperationalException -from freqtrade.constants import DEFAULT_HYPEROPT_LOSS +from freqtrade.constants import DEFAULT_HYPEROPT_LOSS, USERPATH_HYPEROPTS from freqtrade.optimize.hyperopt_interface import IHyperOpt from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss from freqtrade.resolvers import IResolver @@ -58,7 +58,7 @@ class HyperOptResolver(IResolver): current_path = Path(__file__).parent.parent.joinpath('optimize').resolve() abs_paths = self.build_search_paths(config, current_path=current_path, - user_subdir='hyperopts', extra_dir=extra_dir) + user_subdir=USERPATH_HYPEROPTS, extra_dir=extra_dir) hyperopt = self._load_object(paths=abs_paths, object_type=IHyperOpt, object_name=hyperopt_name, kwargs={'config': config}) @@ -110,7 +110,7 @@ class HyperOptLossResolver(IResolver): current_path = Path(__file__).parent.parent.joinpath('optimize').resolve() abs_paths = self.build_search_paths(config, current_path=current_path, - user_subdir='hyperopts', extra_dir=extra_dir) + user_subdir=USERPATH_HYPEROPTS, extra_dir=extra_dir) hyperoptloss = self._load_object(paths=abs_paths, object_type=IHyperOptLoss, object_name=hyper_loss_name) diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 102816981..9a76b9b74 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -129,7 +129,8 @@ class StrategyResolver(IResolver): current_path = Path(__file__).parent.parent.joinpath('strategy').resolve() abs_paths = self.build_search_paths(config, current_path=current_path, - user_subdir='strategies', extra_dir=extra_dir) + user_subdir=constants.USERPATH_STRATEGY, + extra_dir=extra_dir) if ":" in strategy_name: logger.info("loading base64 encoded strategy") diff --git a/freqtrade/templates/sample_hyperopt.py b/freqtrade/templates/sample_hyperopt.py index 3be05f121..77afb2b98 100644 --- a/freqtrade/templates/sample_hyperopt.py +++ b/freqtrade/templates/sample_hyperopt.py @@ -4,7 +4,7 @@ from functools import reduce from typing import Any, Callable, Dict, List import numpy as np # noqa -import talib.abstract as ta +import talib.abstract as ta # noqa from pandas import DataFrame from skopt.space import Categorical, Dimension, Integer, Real # noqa diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 7d3bd69ed..3b37c6895 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -14,6 +14,7 @@ from freqtrade.configuration import (Configuration, TimeRange, remove_credentials) from freqtrade.configuration.directory_operations import (copy_sample_files, create_userdata_dir) +from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGY from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data, refresh_backtest_trades_data) @@ -98,13 +99,13 @@ def start_new_strategy(args: Dict[str, Any]) -> None: if args["strategy"] == "DefaultStrategy": raise OperationalException("DefaultStrategy is not allowed as name.") - new_path = config['user_data_dir'] / "strategies" / (args["strategy"] + ".py") + new_path = config['user_data_dir'] / USERPATH_STRATEGY / (args["strategy"] + ".py") if new_path.exists(): raise OperationalException(f"`{new_path}` already exists. " "Please choose another Strategy Name.") - strategy_text = render_template(template='base_strategy.py.j2', + strategy_text = render_template(templatefile='base_strategy.py.j2', arguments={"strategy": args["strategy"]}) logger.info(f"Writing strategy to `{new_path}`.") @@ -121,13 +122,13 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: if args["hyperopt"] == "DefaultHyperopt": raise OperationalException("DefaultHyperopt is not allowed as name.") - new_path = config['user_data_dir'] / "hyperopts" / (args["hyperopt"] + ".py") + new_path = config['user_data_dir'] / USERPATH_HYPEROPTS / (args["hyperopt"] + ".py") if new_path.exists(): raise OperationalException(f"`{new_path}` already exists. " "Please choose another Strategy Name.") - strategy_text = render_template(template='base_hyperopt.py.j2', + strategy_text = render_template(templatefile='base_hyperopt.py.j2', arguments={"hyperopt": args["hyperopt"]}) logger.info(f"Writing hyperopt to `{new_path}`.") From ed04f7f39d2d41f19a40f9b378d8b5350c70b053 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 Nov 2019 09:57:06 +0100 Subject: [PATCH 1034/3421] Create userdir and backtest SampleStrategy --- .github/workflows/ci.yml | 8 ++++++-- .travis.yml | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f8932cf07..2e4ca87f9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -78,11 +78,13 @@ jobs: - name: Backtesting run: | cp config.json.example config.json - freqtrade backtesting --datadir tests/testdata --strategy DefaultStrategy + freqtrade create-userdir --userdir user_data + freqtrade backtesting --datadir tests/testdata --strategy SampleStrategy - name: Hyperopt run: | cp config.json.example config.json + freqtrade create-userdir --userdir user_data freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt - name: Flake8 @@ -139,11 +141,13 @@ jobs: - name: Backtesting run: | cp config.json.example config.json - freqtrade backtesting --datadir tests/testdata --strategy DefaultStrategy + freqtrade create-userdir --userdir user_data + freqtrade backtesting --datadir tests/testdata --strategy SampleStrategy - name: Hyperopt run: | cp config.json.example config.json + freqtrade create-userdir --userdir user_data freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt - name: Flake8 diff --git a/.travis.yml b/.travis.yml index 6073e1cce..39e914fa4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,10 +28,12 @@ jobs: name: pytest - script: - cp config.json.example config.json - - freqtrade backtesting --datadir tests/testdata --strategy DefaultStrategy + freqtrade create-userdir --userdir user_data + - freqtrade backtesting --datadir tests/testdata --strategy SampleStrategy name: backtest - script: - cp config.json.example config.json + - freqtrade create-userdir --userdir user_data - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt name: hyperopt - script: flake8 From 671b98ecad17ed952c038dbc2d6b43de6d8f2514 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 Nov 2019 10:11:58 +0100 Subject: [PATCH 1035/3421] Fix windows test --- tests/test_directory_operations.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tests/test_directory_operations.py b/tests/test_directory_operations.py index c354b40b0..db41e2da2 100644 --- a/tests/test_directory_operations.py +++ b/tests/test_directory_operations.py @@ -57,11 +57,16 @@ def test_copy_sample_files(mocker, default_conf, caplog) -> None: copy_sample_files(Path('/tmp/bar')) assert copymock.call_count == 5 - assert copymock.call_args_list[0][0][1] == '/tmp/bar/strategies/sample_strategy.py' - assert copymock.call_args_list[1][0][1] == '/tmp/bar/hyperopts/sample_hyperopt_advanced.py' - assert copymock.call_args_list[2][0][1] == '/tmp/bar/hyperopts/sample_hyperopt_loss.py' - assert copymock.call_args_list[3][0][1] == '/tmp/bar/hyperopts/sample_hyperopt.py' - assert copymock.call_args_list[4][0][1] == '/tmp/bar/notebooks/strategy_analysis_example.ipynb' + assert copymock.call_args_list[0][0][1] == str( + Path('/tmp/bar') / 'strategies/sample_strategy.py') + assert copymock.call_args_list[1][0][1] == str( + Path('/tmp/bar') / 'hyperopts/sample_hyperopt_advanced.py') + assert copymock.call_args_list[2][0][1] == str( + Path('/tmp/bar') / 'hyperopts/sample_hyperopt_loss.py') + assert copymock.call_args_list[3][0][1] == str( + Path('/tmp/bar') / 'hyperopts/sample_hyperopt.py') + assert copymock.call_args_list[4][0][1] == str( + Path('/tmp/bar') / 'notebooks/strategy_analysis_example.ipynb') def test_copy_sample_files_errors(mocker, default_conf, caplog) -> None: From f7322358cf045621ee5cdde2b712af0248606503 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 Nov 2019 10:31:21 +0100 Subject: [PATCH 1036/3421] Update documentation --- .travis.yml | 2 +- docs/hyperopt.md | 3 ++ docs/strategy-customization.md | 22 +++++++----- docs/utils.md | 64 ++++++++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 39e914fa4..ec688a1f4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,7 @@ jobs: name: pytest - script: - cp config.json.example config.json - freqtrade create-userdir --userdir user_data + - freqtrade create-userdir --userdir user_data - freqtrade backtesting --datadir tests/testdata --strategy SampleStrategy name: backtest - script: diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 8a750ef43..5a3ae7e3a 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -19,6 +19,9 @@ the sample hyperopt file located in [user_data/hyperopts/](https://github.com/fr Configuring hyperopt is similar to writing your own strategy, and many tasks will be similar and a lot of code can be copied across from the strategy. +The simplest way to get started is to use `freqtrade new-hyperopt --hyperopt AwesomeHyperopt`. +This will create a new hyperopt file from a template, which will be located under `user_data/hyperopts/AwesomeHyperopt.py`. + ### Checklist on all tasks / possibilities in hyperopt Depending on the space you want to optimize, only some of the below are required: diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index d0276579e..352389d5e 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -7,24 +7,28 @@ indicators. This is very simple. Copy paste your strategy file into the directory `user_data/strategies`. -Let assume you have a class called `AwesomeStrategy` in the file `awesome-strategy.py`: +Let assume you have a class called `AwesomeStrategy` in the file `AwesomeStrategy.py`: -1. Move your file into `user_data/strategies` (you should have `user_data/strategies/awesome-strategy.py` +1. Move your file into `user_data/strategies` (you should have `user_data/strategies/AwesomeStrategy.py` 2. Start the bot with the param `--strategy AwesomeStrategy` (the parameter is the class name) ```bash freqtrade trade --strategy AwesomeStrategy ``` -## Change your strategy +## Develop your own strategy -The bot includes a default strategy file. However, we recommend you to -use your own file to not have to lose your parameters every time the default -strategy file will be updated on Github. Put your custom strategy file -into the directory `user_data/strategies`. +The bot includes a default strategy file. +Also, several other strategies are available in the [strategy repository](https://github.com/freqtrade/freqtrade-strategies). -Best copy the test-strategy and modify this copy to avoid having bot-updates override your changes. -`cp user_data/strategies/sample_strategy.py user_data/strategies/awesome-strategy.py` +You will however most likely have your own idea for a strategy. +This Document intends to help you develop one for yourself. + +To get started, use `freqtrade new-strategy --strategy AwesomeStrategy`. +This will create a new strategy file from a template, which will be located under `user_data/strategies/AwesomeStrategy.py`. + +!!! Note + This is just a template file, which will most likely not be profitable out of the box. ### Anatomy of a strategy diff --git a/docs/utils.md b/docs/utils.md index d9baee32c..26d354206 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -36,6 +36,70 @@ optional arguments: └── sample_strategy.py ``` +## Create new strategy + +Creates a new strategy from a template similar to SampleStrategy. +The file will be named inline with your class name, and will not overwrite existing files. + +Results will be located in `user_data/strategies/.py`. + +### Sample usage of new-strategy + +```bash +freqtrade new-strategy --strategy AwesomeStrategy +``` + +With custom user directory + +```bash +freqtrade new-strategy --userdir ~/.freqtrade/ --strategy AwesomeStrategy +``` + +### new-strategy complete options + +``` output +usage: freqtrade new-strategy [-h] [--userdir PATH] [-s NAME] + +optional arguments: + -h, --help show this help message and exit + --userdir PATH, --user-data-dir PATH + Path to userdata directory. + -s NAME, --strategy NAME + Specify strategy class name which will be used by the + bot. +``` + +## Create new hyperopt + +Creates a new hyperopt from a template similar to SampleHyperopt. +The file will be named inline with your class name, and will not overwrite existing files. + +Results will be located in `user_data/hyperopts/.py`. + +### Sample usage of new-hyperopt + +```bash +freqtrade new-hyperopt --hyperopt AwesomeHyperopt +``` + +With custom user directory + +```bash +freqtrade new-hyperopt --userdir ~/.freqtrade/ --hyperopt AwesomeHyperopt +``` + +### new-hyperopt complete options + +``` output +usage: freqtrade new-hyperopt [-h] [--userdir PATH] [--hyperopt NAME] + +optional arguments: + -h, --help show this help message and exit + --userdir PATH, --user-data-dir PATH + Path to userdata directory. + --hyperopt NAME Specify hyperopt class name which will be used by the + bot. +``` ## List Exchanges From be4a4180ae9fcaca3d95db72d561c98d0bcd954d Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 21 Nov 2019 06:40:30 +0100 Subject: [PATCH 1037/3421] Use single line comments for samples --- freqtrade/templates/base_strategy.py.j2 | 186 +++++++++++------------ freqtrade/templates/sample_strategy.py | 189 +++++++++++------------- 2 files changed, 178 insertions(+), 197 deletions(-) diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index 46c118383..174c801ee 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -109,58 +109,61 @@ class {{ strategy }}(IStrategy): # ADX dataframe['adx'] = ta.ADX(dataframe) - """ - # Awesome oscillator - dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) - # Commodity Channel Index: values Oversold:<-100, Overbought:>100 - dataframe['cci'] = ta.CCI(dataframe) - """ + # # Aroon, Aroon Oscillator + # aroon = ta.AROON(dataframe) + # dataframe['aroonup'] = aroon['aroonup'] + # dataframe['aroondown'] = aroon['aroondown'] + # dataframe['aroonosc'] = ta.AROONOSC(dataframe) + + # # Awesome oscillator + # dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) + + # # Commodity Channel Index: values Oversold:<-100, Overbought:>100 + # dataframe['cci'] = ta.CCI(dataframe) + # MACD macd = ta.MACD(dataframe) dataframe['macd'] = macd['macd'] dataframe['macdsignal'] = macd['macdsignal'] dataframe['macdhist'] = macd['macdhist'] - # MFI - dataframe['mfi'] = ta.MFI(dataframe) + # # MFI + # dataframe['mfi'] = ta.MFI(dataframe) - """ - # Minus Directional Indicator / Movement - dataframe['minus_dm'] = ta.MINUS_DM(dataframe) - dataframe['minus_di'] = ta.MINUS_DI(dataframe) + # # Minus Directional Indicator / Movement + # dataframe['minus_dm'] = ta.MINUS_DM(dataframe) + # dataframe['minus_di'] = ta.MINUS_DI(dataframe) - # Plus Directional Indicator / Movement - dataframe['plus_dm'] = ta.PLUS_DM(dataframe) - dataframe['plus_di'] = ta.PLUS_DI(dataframe) - dataframe['minus_di'] = ta.MINUS_DI(dataframe) + # # Plus Directional Indicator / Movement + # dataframe['plus_dm'] = ta.PLUS_DM(dataframe) + # dataframe['plus_di'] = ta.PLUS_DI(dataframe) + # dataframe['minus_di'] = ta.MINUS_DI(dataframe) - # ROC - dataframe['roc'] = ta.ROC(dataframe) + # # ROC + # dataframe['roc'] = ta.ROC(dataframe) - # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy) - rsi = 0.1 * (dataframe['rsi'] - 50) - dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) + # # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy) + # rsi = 0.1 * (dataframe['rsi'] - 50) + # dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) - # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy) - dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) + # # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy) + # dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) + + # # Stoch + # stoch = ta.STOCH(dataframe) + # dataframe['slowd'] = stoch['slowd'] + # dataframe['slowk'] = stoch['slowk'] - # Stoch - stoch = ta.STOCH(dataframe) - dataframe['slowd'] = stoch['slowd'] - dataframe['slowk'] = stoch['slowk'] - """ # Stoch fast stoch_fast = ta.STOCHF(dataframe) dataframe['fastd'] = stoch_fast['fastd'] dataframe['fastk'] = stoch_fast['fastk'] - """ - # Stoch RSI - stoch_rsi = ta.STOCHRSI(dataframe) - dataframe['fastd_rsi'] = stoch_rsi['fastd'] - dataframe['fastk_rsi'] = stoch_rsi['fastk'] - """ + # # Stoch RSI + # stoch_rsi = ta.STOCHRSI(dataframe) + # dataframe['fastd_rsi'] = stoch_rsi['fastd'] + # dataframe['fastk_rsi'] = stoch_rsi['fastk'] # Overlap Studies # ------------------------------------ @@ -171,17 +174,16 @@ class {{ strategy }}(IStrategy): dataframe['bb_middleband'] = bollinger['mid'] dataframe['bb_upperband'] = bollinger['upper'] - """ - # EMA - Exponential Moving Average - dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3) - dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5) - dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10) - dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50) - dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100) + # # EMA - Exponential Moving Average + # dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3) + # dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5) + # dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10) + # dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50) + # dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100) + + # # SMA - Simple Moving Average + # dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) - # SMA - Simple Moving Average - dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) - """ # SAR Parabol dataframe['sar'] = ta.SAR(dataframe) @@ -197,65 +199,57 @@ class {{ strategy }}(IStrategy): # Pattern Recognition - Bullish candlestick patterns # ------------------------------------ - """ - # Hammer: values [0, 100] - dataframe['CDLHAMMER'] = ta.CDLHAMMER(dataframe) - # Inverted Hammer: values [0, 100] - dataframe['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(dataframe) - # Dragonfly Doji: values [0, 100] - dataframe['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(dataframe) - # Piercing Line: values [0, 100] - dataframe['CDLPIERCING'] = ta.CDLPIERCING(dataframe) # values [0, 100] - # Morningstar: values [0, 100] - dataframe['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(dataframe) # values [0, 100] - # Three White Soldiers: values [0, 100] - dataframe['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(dataframe) # values [0, 100] - """ + # # Hammer: values [0, 100] + # dataframe['CDLHAMMER'] = ta.CDLHAMMER(dataframe) + # # Inverted Hammer: values [0, 100] + # dataframe['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(dataframe) + # # Dragonfly Doji: values [0, 100] + # dataframe['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(dataframe) + # # Piercing Line: values [0, 100] + # dataframe['CDLPIERCING'] = ta.CDLPIERCING(dataframe) # values [0, 100] + # # Morningstar: values [0, 100] + # dataframe['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(dataframe) # values [0, 100] + # # Three White Soldiers: values [0, 100] + # dataframe['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(dataframe) # values [0, 100] # Pattern Recognition - Bearish candlestick patterns # ------------------------------------ - """ - # Hanging Man: values [0, 100] - dataframe['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(dataframe) - # Shooting Star: values [0, 100] - dataframe['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(dataframe) - # Gravestone Doji: values [0, 100] - dataframe['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(dataframe) - # Dark Cloud Cover: values [0, 100] - dataframe['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(dataframe) - # Evening Doji Star: values [0, 100] - dataframe['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(dataframe) - # Evening Star: values [0, 100] - dataframe['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(dataframe) - """ + # # Hanging Man: values [0, 100] + # dataframe['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(dataframe) + # # Shooting Star: values [0, 100] + # dataframe['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(dataframe) + # # Gravestone Doji: values [0, 100] + # dataframe['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(dataframe) + # # Dark Cloud Cover: values [0, 100] + # dataframe['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(dataframe) + # # Evening Doji Star: values [0, 100] + # dataframe['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(dataframe) + # # Evening Star: values [0, 100] + # dataframe['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(dataframe) # Pattern Recognition - Bullish/Bearish candlestick patterns # ------------------------------------ - """ - # Three Line Strike: values [0, -100, 100] - dataframe['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(dataframe) - # Spinning Top: values [0, -100, 100] - dataframe['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(dataframe) # values [0, -100, 100] - # Engulfing: values [0, -100, 100] - dataframe['CDLENGULFING'] = ta.CDLENGULFING(dataframe) # values [0, -100, 100] - # Harami: values [0, -100, 100] - dataframe['CDLHARAMI'] = ta.CDLHARAMI(dataframe) # values [0, -100, 100] - # Three Outside Up/Down: values [0, -100, 100] - dataframe['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(dataframe) # values [0, -100, 100] - # Three Inside Up/Down: values [0, -100, 100] - dataframe['CDL3INSIDE'] = ta.CDL3INSIDE(dataframe) # values [0, -100, 100] - """ + # # Three Line Strike: values [0, -100, 100] + # dataframe['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(dataframe) + # # Spinning Top: values [0, -100, 100] + # dataframe['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(dataframe) # values [0, -100, 100] + # # Engulfing: values [0, -100, 100] + # dataframe['CDLENGULFING'] = ta.CDLENGULFING(dataframe) # values [0, -100, 100] + # # Harami: values [0, -100, 100] + # dataframe['CDLHARAMI'] = ta.CDLHARAMI(dataframe) # values [0, -100, 100] + # # Three Outside Up/Down: values [0, -100, 100] + # dataframe['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(dataframe) # values [0, -100, 100] + # # Three Inside Up/Down: values [0, -100, 100] + # dataframe['CDL3INSIDE'] = ta.CDL3INSIDE(dataframe) # values [0, -100, 100] - # Chart type - # ------------------------------------ - """ - # Heikinashi stategy - heikinashi = qtpylib.heikinashi(dataframe) - dataframe['ha_open'] = heikinashi['open'] - dataframe['ha_close'] = heikinashi['close'] - dataframe['ha_high'] = heikinashi['high'] - dataframe['ha_low'] = heikinashi['low'] - """ + # # Chart type + # # ------------------------------------ + # # Heikinashi stategy + # heikinashi = qtpylib.heikinashi(dataframe) + # dataframe['ha_open'] = heikinashi['open'] + # dataframe['ha_close'] = heikinashi['close'] + # dataframe['ha_high'] = heikinashi['high'] + # dataframe['ha_low'] = heikinashi['low'] # Retrieve best bid and best ask from the orderbook # ------------------------------------ diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index d62e6120c..724e52156 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -111,64 +111,60 @@ class SampleStrategy(IStrategy): # ADX dataframe['adx'] = ta.ADX(dataframe) - """ - # Aroon, Aroon Oscillator - aroon = ta.AROON(dataframe) - dataframe['aroonup'] = aroon['aroonup'] - dataframe['aroondown'] = aroon['aroondown'] - dataframe['aroonosc'] = ta.AROONOSC(dataframe) + # # Aroon, Aroon Oscillator + # aroon = ta.AROON(dataframe) + # dataframe['aroonup'] = aroon['aroonup'] + # dataframe['aroondown'] = aroon['aroondown'] + # dataframe['aroonosc'] = ta.AROONOSC(dataframe) - # Awesome oscillator - dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) + # # Awesome oscillator + # dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) + + # # Commodity Channel Index: values Oversold:<-100, Overbought:>100 + # dataframe['cci'] = ta.CCI(dataframe) - # Commodity Channel Index: values Oversold:<-100, Overbought:>100 - dataframe['cci'] = ta.CCI(dataframe) - """ # MACD macd = ta.MACD(dataframe) dataframe['macd'] = macd['macd'] dataframe['macdsignal'] = macd['macdsignal'] dataframe['macdhist'] = macd['macdhist'] - # MFI - dataframe['mfi'] = ta.MFI(dataframe) + # # MFI + # dataframe['mfi'] = ta.MFI(dataframe) - """ - # Minus Directional Indicator / Movement - dataframe['minus_dm'] = ta.MINUS_DM(dataframe) - dataframe['minus_di'] = ta.MINUS_DI(dataframe) + # # Minus Directional Indicator / Movement + # dataframe['minus_dm'] = ta.MINUS_DM(dataframe) + # dataframe['minus_di'] = ta.MINUS_DI(dataframe) - # Plus Directional Indicator / Movement - dataframe['plus_dm'] = ta.PLUS_DM(dataframe) - dataframe['plus_di'] = ta.PLUS_DI(dataframe) - dataframe['minus_di'] = ta.MINUS_DI(dataframe) + # # Plus Directional Indicator / Movement + # dataframe['plus_dm'] = ta.PLUS_DM(dataframe) + # dataframe['plus_di'] = ta.PLUS_DI(dataframe) + # dataframe['minus_di'] = ta.MINUS_DI(dataframe) - # ROC - dataframe['roc'] = ta.ROC(dataframe) + # # ROC + # dataframe['roc'] = ta.ROC(dataframe) - # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy) - rsi = 0.1 * (dataframe['rsi'] - 50) - dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) + # # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy) + # rsi = 0.1 * (dataframe['rsi'] - 50) + # dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) - # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy) - dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) + # # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy) + # dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) + + # # Stoch + # stoch = ta.STOCH(dataframe) + # dataframe['slowd'] = stoch['slowd'] + # dataframe['slowk'] = stoch['slowk'] - # Stoch - stoch = ta.STOCH(dataframe) - dataframe['slowd'] = stoch['slowd'] - dataframe['slowk'] = stoch['slowk'] - """ # Stoch fast stoch_fast = ta.STOCHF(dataframe) dataframe['fastd'] = stoch_fast['fastd'] dataframe['fastk'] = stoch_fast['fastk'] - """ - # Stoch RSI - stoch_rsi = ta.STOCHRSI(dataframe) - dataframe['fastd_rsi'] = stoch_rsi['fastd'] - dataframe['fastk_rsi'] = stoch_rsi['fastk'] - """ + # # Stoch RSI + # stoch_rsi = ta.STOCHRSI(dataframe) + # dataframe['fastd_rsi'] = stoch_rsi['fastd'] + # dataframe['fastk_rsi'] = stoch_rsi['fastk'] # Overlap Studies # ------------------------------------ @@ -179,17 +175,16 @@ class SampleStrategy(IStrategy): dataframe['bb_middleband'] = bollinger['mid'] dataframe['bb_upperband'] = bollinger['upper'] - """ - # EMA - Exponential Moving Average - dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3) - dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5) - dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10) - dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50) - dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100) + # # EMA - Exponential Moving Average + # dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3) + # dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5) + # dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10) + # dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50) + # dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100) + + # # SMA - Simple Moving Average + # dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) - # SMA - Simple Moving Average - dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) - """ # SAR Parabol dataframe['sar'] = ta.SAR(dataframe) @@ -205,65 +200,57 @@ class SampleStrategy(IStrategy): # Pattern Recognition - Bullish candlestick patterns # ------------------------------------ - """ - # Hammer: values [0, 100] - dataframe['CDLHAMMER'] = ta.CDLHAMMER(dataframe) - # Inverted Hammer: values [0, 100] - dataframe['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(dataframe) - # Dragonfly Doji: values [0, 100] - dataframe['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(dataframe) - # Piercing Line: values [0, 100] - dataframe['CDLPIERCING'] = ta.CDLPIERCING(dataframe) # values [0, 100] - # Morningstar: values [0, 100] - dataframe['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(dataframe) # values [0, 100] - # Three White Soldiers: values [0, 100] - dataframe['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(dataframe) # values [0, 100] - """ + # # Hammer: values [0, 100] + # dataframe['CDLHAMMER'] = ta.CDLHAMMER(dataframe) + # # Inverted Hammer: values [0, 100] + # dataframe['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(dataframe) + # # Dragonfly Doji: values [0, 100] + # dataframe['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(dataframe) + # # Piercing Line: values [0, 100] + # dataframe['CDLPIERCING'] = ta.CDLPIERCING(dataframe) # values [0, 100] + # # Morningstar: values [0, 100] + # dataframe['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(dataframe) # values [0, 100] + # # Three White Soldiers: values [0, 100] + # dataframe['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(dataframe) # values [0, 100] # Pattern Recognition - Bearish candlestick patterns # ------------------------------------ - """ - # Hanging Man: values [0, 100] - dataframe['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(dataframe) - # Shooting Star: values [0, 100] - dataframe['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(dataframe) - # Gravestone Doji: values [0, 100] - dataframe['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(dataframe) - # Dark Cloud Cover: values [0, 100] - dataframe['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(dataframe) - # Evening Doji Star: values [0, 100] - dataframe['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(dataframe) - # Evening Star: values [0, 100] - dataframe['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(dataframe) - """ + # # Hanging Man: values [0, 100] + # dataframe['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(dataframe) + # # Shooting Star: values [0, 100] + # dataframe['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(dataframe) + # # Gravestone Doji: values [0, 100] + # dataframe['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(dataframe) + # # Dark Cloud Cover: values [0, 100] + # dataframe['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(dataframe) + # # Evening Doji Star: values [0, 100] + # dataframe['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(dataframe) + # # Evening Star: values [0, 100] + # dataframe['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(dataframe) # Pattern Recognition - Bullish/Bearish candlestick patterns # ------------------------------------ - """ - # Three Line Strike: values [0, -100, 100] - dataframe['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(dataframe) - # Spinning Top: values [0, -100, 100] - dataframe['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(dataframe) # values [0, -100, 100] - # Engulfing: values [0, -100, 100] - dataframe['CDLENGULFING'] = ta.CDLENGULFING(dataframe) # values [0, -100, 100] - # Harami: values [0, -100, 100] - dataframe['CDLHARAMI'] = ta.CDLHARAMI(dataframe) # values [0, -100, 100] - # Three Outside Up/Down: values [0, -100, 100] - dataframe['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(dataframe) # values [0, -100, 100] - # Three Inside Up/Down: values [0, -100, 100] - dataframe['CDL3INSIDE'] = ta.CDL3INSIDE(dataframe) # values [0, -100, 100] - """ + # # Three Line Strike: values [0, -100, 100] + # dataframe['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(dataframe) + # # Spinning Top: values [0, -100, 100] + # dataframe['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(dataframe) # values [0, -100, 100] + # # Engulfing: values [0, -100, 100] + # dataframe['CDLENGULFING'] = ta.CDLENGULFING(dataframe) # values [0, -100, 100] + # # Harami: values [0, -100, 100] + # dataframe['CDLHARAMI'] = ta.CDLHARAMI(dataframe) # values [0, -100, 100] + # # Three Outside Up/Down: values [0, -100, 100] + # dataframe['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(dataframe) # values [0, -100, 100] + # # Three Inside Up/Down: values [0, -100, 100] + # dataframe['CDL3INSIDE'] = ta.CDL3INSIDE(dataframe) # values [0, -100, 100] - # Chart type - # ------------------------------------ - """ - # Heikinashi stategy - heikinashi = qtpylib.heikinashi(dataframe) - dataframe['ha_open'] = heikinashi['open'] - dataframe['ha_close'] = heikinashi['close'] - dataframe['ha_high'] = heikinashi['high'] - dataframe['ha_low'] = heikinashi['low'] - """ + # # Chart type + # # ------------------------------------ + # # Heikinashi stategy + # heikinashi = qtpylib.heikinashi(dataframe) + # dataframe['ha_open'] = heikinashi['open'] + # dataframe['ha_close'] = heikinashi['close'] + # dataframe['ha_high'] = heikinashi['high'] + # dataframe['ha_low'] = heikinashi['low'] # Retrieve best bid and best ask from the orderbook # ------------------------------------ From 5e5ef21f61f33a50c54b151cdf9081983394bc1b Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 21 Nov 2019 06:49:16 +0100 Subject: [PATCH 1038/3421] Align example imports --- freqtrade/templates/base_hyperopt.py.j2 | 7 ++++--- freqtrade/templates/base_strategy.py.j2 | 10 ++++++---- freqtrade/templates/sample_hyperopt.py | 9 +++++++-- freqtrade/templates/sample_hyperopt_advanced.py | 13 +++++++++---- freqtrade/templates/sample_strategy.py | 10 ++++++---- 5 files changed, 32 insertions(+), 17 deletions(-) diff --git a/freqtrade/templates/base_hyperopt.py.j2 b/freqtrade/templates/base_hyperopt.py.j2 index 75aedbf86..c0f4e3292 100644 --- a/freqtrade/templates/base_hyperopt.py.j2 +++ b/freqtrade/templates/base_hyperopt.py.j2 @@ -1,18 +1,19 @@ # pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement +# --- Do not remove these libs --- from functools import reduce from typing import Any, Callable, Dict, List -from pandas import DataFrame -import pandas as pd # noqa import numpy as np # noqa +import pandas as pd # noqa +from pandas import DataFrame from skopt.space import Categorical, Dimension, Integer, Real # noqa from freqtrade.optimize.hyperopt_interface import IHyperOpt # -------------------------------- # Add your lib to import here -import talib.abstract as ta +import talib.abstract as ta # noqa import freqtrade.vendor.qtpylib.indicators as qtpylib diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index 174c801ee..ccb8949e9 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -1,11 +1,13 @@ +# pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement # --- Do not remove these libs --- -from freqtrade.strategy.interface import IStrategy -from pandas import DataFrame -import pandas as pd # noqa import numpy as np # noqa -# -------------------------------- +import pandas as pd # noqa +from pandas import DataFrame +from freqtrade.strategy.interface import IStrategy + +# -------------------------------- # Add your lib to import here import talib.abstract as ta import freqtrade.vendor.qtpylib.indicators as qtpylib diff --git a/freqtrade/templates/sample_hyperopt.py b/freqtrade/templates/sample_hyperopt.py index 77afb2b98..f1dcb404a 100644 --- a/freqtrade/templates/sample_hyperopt.py +++ b/freqtrade/templates/sample_hyperopt.py @@ -1,16 +1,21 @@ # pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement +# --- Do not remove these libs --- from functools import reduce from typing import Any, Callable, Dict, List import numpy as np # noqa -import talib.abstract as ta # noqa +import pandas as pd # noqa from pandas import DataFrame from skopt.space import Categorical, Dimension, Integer, Real # noqa -import freqtrade.vendor.qtpylib.indicators as qtpylib from freqtrade.optimize.hyperopt_interface import IHyperOpt +# -------------------------------- +# Add your lib to import here +import talib.abstract as ta # noqa +import freqtrade.vendor.qtpylib.indicators as qtpylib + class SampleHyperOpt(IHyperOpt): """ diff --git a/freqtrade/templates/sample_hyperopt_advanced.py b/freqtrade/templates/sample_hyperopt_advanced.py index 7ababc16c..5634c21ea 100644 --- a/freqtrade/templates/sample_hyperopt_advanced.py +++ b/freqtrade/templates/sample_hyperopt_advanced.py @@ -1,16 +1,21 @@ # pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement +# --- Do not remove these libs --- from functools import reduce from typing import Any, Callable, Dict, List -import numpy as np # noqa F401 -import talib.abstract as ta +import numpy as np # noqa +import pandas as pd # noqa from pandas import DataFrame -from skopt.space import Categorical, Dimension, Integer, Real +from skopt.space import Categorical, Dimension, Integer, Real # noqa -import freqtrade.vendor.qtpylib.indicators as qtpylib from freqtrade.optimize.hyperopt_interface import IHyperOpt +# -------------------------------- +# Add your lib to import here +import talib.abstract as ta # noqa +import freqtrade.vendor.qtpylib.indicators as qtpylib + class AdvancedSampleHyperOpt(IHyperOpt): """ diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index 724e52156..38a45c1f2 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -1,14 +1,16 @@ +# pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement # --- Do not remove these libs --- -from freqtrade.strategy.interface import IStrategy +import numpy as np # noqa +import pandas as pd # noqa from pandas import DataFrame -# -------------------------------- +from freqtrade.strategy.interface import IStrategy + +# -------------------------------- # Add your lib to import here import talib.abstract as ta import freqtrade.vendor.qtpylib.indicators as qtpylib -import pandas as pd # noqa -import numpy as np # noqa # This class is a sample. Feel free to customize it. From b3dbb818388da57ee1bc6611e0b25dfdbec36367 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 21 Nov 2019 07:13:56 +0100 Subject: [PATCH 1039/3421] Add subtemplates --- freqtrade/templates/base_strategy.py.j2 | 170 +----------------- .../templates/subtemplates/buy_trend_full.j2 | 3 + .../templates/subtemplates/indicators_full.j2 | 161 +++++++++++++++++ .../templates/subtemplates/sell_trend_full.j2 | 3 + freqtrade/utils.py | 3 +- 5 files changed, 172 insertions(+), 168 deletions(-) create mode 100644 freqtrade/templates/subtemplates/buy_trend_full.j2 create mode 100644 freqtrade/templates/subtemplates/indicators_full.j2 create mode 100644 freqtrade/templates/subtemplates/sell_trend_full.j2 diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index ccb8949e9..4c5fe9a0b 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -102,167 +102,7 @@ class {{ strategy }}(IStrategy): :param metadata: Additional information, like the currently traded pair :return: a Dataframe with all mandatory indicators for the strategies """ - - # Momentum Indicators - # ------------------------------------ - - # RSI - dataframe['rsi'] = ta.RSI(dataframe) - - # ADX - dataframe['adx'] = ta.ADX(dataframe) - - # # Aroon, Aroon Oscillator - # aroon = ta.AROON(dataframe) - # dataframe['aroonup'] = aroon['aroonup'] - # dataframe['aroondown'] = aroon['aroondown'] - # dataframe['aroonosc'] = ta.AROONOSC(dataframe) - - # # Awesome oscillator - # dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) - - # # Commodity Channel Index: values Oversold:<-100, Overbought:>100 - # dataframe['cci'] = ta.CCI(dataframe) - - # MACD - macd = ta.MACD(dataframe) - dataframe['macd'] = macd['macd'] - dataframe['macdsignal'] = macd['macdsignal'] - dataframe['macdhist'] = macd['macdhist'] - - # # MFI - # dataframe['mfi'] = ta.MFI(dataframe) - - # # Minus Directional Indicator / Movement - # dataframe['minus_dm'] = ta.MINUS_DM(dataframe) - # dataframe['minus_di'] = ta.MINUS_DI(dataframe) - - # # Plus Directional Indicator / Movement - # dataframe['plus_dm'] = ta.PLUS_DM(dataframe) - # dataframe['plus_di'] = ta.PLUS_DI(dataframe) - # dataframe['minus_di'] = ta.MINUS_DI(dataframe) - - # # ROC - # dataframe['roc'] = ta.ROC(dataframe) - - # # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy) - # rsi = 0.1 * (dataframe['rsi'] - 50) - # dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) - - # # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy) - # dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) - - # # Stoch - # stoch = ta.STOCH(dataframe) - # dataframe['slowd'] = stoch['slowd'] - # dataframe['slowk'] = stoch['slowk'] - - # Stoch fast - stoch_fast = ta.STOCHF(dataframe) - dataframe['fastd'] = stoch_fast['fastd'] - dataframe['fastk'] = stoch_fast['fastk'] - - # # Stoch RSI - # stoch_rsi = ta.STOCHRSI(dataframe) - # dataframe['fastd_rsi'] = stoch_rsi['fastd'] - # dataframe['fastk_rsi'] = stoch_rsi['fastk'] - - # Overlap Studies - # ------------------------------------ - - # Bollinger bands - bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2) - dataframe['bb_lowerband'] = bollinger['lower'] - dataframe['bb_middleband'] = bollinger['mid'] - dataframe['bb_upperband'] = bollinger['upper'] - - # # EMA - Exponential Moving Average - # dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3) - # dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5) - # dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10) - # dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50) - # dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100) - - # # SMA - Simple Moving Average - # dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) - - # SAR Parabol - dataframe['sar'] = ta.SAR(dataframe) - - # TEMA - Triple Exponential Moving Average - dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9) - - # Cycle Indicator - # ------------------------------------ - # Hilbert Transform Indicator - SineWave - hilbert = ta.HT_SINE(dataframe) - dataframe['htsine'] = hilbert['sine'] - dataframe['htleadsine'] = hilbert['leadsine'] - - # Pattern Recognition - Bullish candlestick patterns - # ------------------------------------ - # # Hammer: values [0, 100] - # dataframe['CDLHAMMER'] = ta.CDLHAMMER(dataframe) - # # Inverted Hammer: values [0, 100] - # dataframe['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(dataframe) - # # Dragonfly Doji: values [0, 100] - # dataframe['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(dataframe) - # # Piercing Line: values [0, 100] - # dataframe['CDLPIERCING'] = ta.CDLPIERCING(dataframe) # values [0, 100] - # # Morningstar: values [0, 100] - # dataframe['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(dataframe) # values [0, 100] - # # Three White Soldiers: values [0, 100] - # dataframe['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(dataframe) # values [0, 100] - - # Pattern Recognition - Bearish candlestick patterns - # ------------------------------------ - # # Hanging Man: values [0, 100] - # dataframe['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(dataframe) - # # Shooting Star: values [0, 100] - # dataframe['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(dataframe) - # # Gravestone Doji: values [0, 100] - # dataframe['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(dataframe) - # # Dark Cloud Cover: values [0, 100] - # dataframe['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(dataframe) - # # Evening Doji Star: values [0, 100] - # dataframe['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(dataframe) - # # Evening Star: values [0, 100] - # dataframe['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(dataframe) - - # Pattern Recognition - Bullish/Bearish candlestick patterns - # ------------------------------------ - # # Three Line Strike: values [0, -100, 100] - # dataframe['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(dataframe) - # # Spinning Top: values [0, -100, 100] - # dataframe['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(dataframe) # values [0, -100, 100] - # # Engulfing: values [0, -100, 100] - # dataframe['CDLENGULFING'] = ta.CDLENGULFING(dataframe) # values [0, -100, 100] - # # Harami: values [0, -100, 100] - # dataframe['CDLHARAMI'] = ta.CDLHARAMI(dataframe) # values [0, -100, 100] - # # Three Outside Up/Down: values [0, -100, 100] - # dataframe['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(dataframe) # values [0, -100, 100] - # # Three Inside Up/Down: values [0, -100, 100] - # dataframe['CDL3INSIDE'] = ta.CDL3INSIDE(dataframe) # values [0, -100, 100] - - # # Chart type - # # ------------------------------------ - # # Heikinashi stategy - # heikinashi = qtpylib.heikinashi(dataframe) - # dataframe['ha_open'] = heikinashi['open'] - # dataframe['ha_close'] = heikinashi['close'] - # dataframe['ha_high'] = heikinashi['high'] - # dataframe['ha_low'] = heikinashi['low'] - - # Retrieve best bid and best ask from the orderbook - # ------------------------------------ - """ - # first check if dataprovider is available - if self.dp: - if self.dp.runmode in ('live', 'dry_run'): - ob = self.dp.orderbook(metadata['pair'], 1) - dataframe['best_bid'] = ob['bids'][0][0] - dataframe['best_ask'] = ob['asks'][0][0] - """ + {% filter indent(8) %}{% include 'subtemplates/indicators_' + subtemplates + '.j2' %}{% endfilter %} return dataframe @@ -275,9 +115,7 @@ class {{ strategy }}(IStrategy): """ dataframe.loc[ ( - (qtpylib.crossed_above(dataframe['rsi'], 30)) & # Signal: RSI crosses above 30 - (dataframe['tema'] <= dataframe['bb_middleband']) & # Guard: tema below BB middle - (dataframe['tema'] > dataframe['tema'].shift(1)) & # Guard: tema is raising + {% filter indent(16) %}{% include 'subtemplates/buy_trend_' + subtemplates + '.j2' %}{% endfilter %} (dataframe['volume'] > 0) # Make sure Volume is not 0 ), 'buy'] = 1 @@ -293,9 +131,7 @@ class {{ strategy }}(IStrategy): """ dataframe.loc[ ( - (qtpylib.crossed_above(dataframe['rsi'], 70)) & # Signal: RSI crosses above 70 - (dataframe['tema'] > dataframe['bb_middleband']) & # Guard: tema above BB middle - (dataframe['tema'] < dataframe['tema'].shift(1)) & # Guard: tema is falling + {% filter indent(16) %}{% include 'subtemplates/sell_trend_' + subtemplates + '.j2' %}{% endfilter %} (dataframe['volume'] > 0) # Make sure Volume is not 0 ), 'sell'] = 1 diff --git a/freqtrade/templates/subtemplates/buy_trend_full.j2 b/freqtrade/templates/subtemplates/buy_trend_full.j2 new file mode 100644 index 000000000..1a0d326b3 --- /dev/null +++ b/freqtrade/templates/subtemplates/buy_trend_full.j2 @@ -0,0 +1,3 @@ +(qtpylib.crossed_above(dataframe['rsi'], 30)) & # Signal: RSI crosses above 30 +(dataframe['tema'] <= dataframe['bb_middleband']) & # Guard: tema below BB middle +(dataframe['tema'] > dataframe['tema'].shift(1)) & # Guard: tema is raising diff --git a/freqtrade/templates/subtemplates/indicators_full.j2 b/freqtrade/templates/subtemplates/indicators_full.j2 new file mode 100644 index 000000000..395808776 --- /dev/null +++ b/freqtrade/templates/subtemplates/indicators_full.j2 @@ -0,0 +1,161 @@ + +# Momentum Indicators +# ------------------------------------ + +# RSI +dataframe['rsi'] = ta.RSI(dataframe) + +# ADX +dataframe['adx'] = ta.ADX(dataframe) + +# # Aroon, Aroon Oscillator +# aroon = ta.AROON(dataframe) +# dataframe['aroonup'] = aroon['aroonup'] +# dataframe['aroondown'] = aroon['aroondown'] +# dataframe['aroonosc'] = ta.AROONOSC(dataframe) + +# # Awesome oscillator +# dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) + +# # Commodity Channel Index: values Oversold:<-100, Overbought:>100 +# dataframe['cci'] = ta.CCI(dataframe) + +# MACD +macd = ta.MACD(dataframe) +dataframe['macd'] = macd['macd'] +dataframe['macdsignal'] = macd['macdsignal'] +dataframe['macdhist'] = macd['macdhist'] + +# # MFI +# dataframe['mfi'] = ta.MFI(dataframe) + +# # Minus Directional Indicator / Movement +# dataframe['minus_dm'] = ta.MINUS_DM(dataframe) +# dataframe['minus_di'] = ta.MINUS_DI(dataframe) + +# # Plus Directional Indicator / Movement +# dataframe['plus_dm'] = ta.PLUS_DM(dataframe) +# dataframe['plus_di'] = ta.PLUS_DI(dataframe) +# dataframe['minus_di'] = ta.MINUS_DI(dataframe) + +# # ROC +# dataframe['roc'] = ta.ROC(dataframe) + +# # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy) +# rsi = 0.1 * (dataframe['rsi'] - 50) +# dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) + +# # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy) +# dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) + +# # Stoch +# stoch = ta.STOCH(dataframe) +# dataframe['slowd'] = stoch['slowd'] +# dataframe['slowk'] = stoch['slowk'] + +# Stoch fast +stoch_fast = ta.STOCHF(dataframe) +dataframe['fastd'] = stoch_fast['fastd'] +dataframe['fastk'] = stoch_fast['fastk'] + +# # Stoch RSI +# stoch_rsi = ta.STOCHRSI(dataframe) +# dataframe['fastd_rsi'] = stoch_rsi['fastd'] +# dataframe['fastk_rsi'] = stoch_rsi['fastk'] + +# Overlap Studies +# ------------------------------------ + +# Bollinger bands +bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2) +dataframe['bb_lowerband'] = bollinger['lower'] +dataframe['bb_middleband'] = bollinger['mid'] +dataframe['bb_upperband'] = bollinger['upper'] + +# # EMA - Exponential Moving Average +# dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3) +# dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5) +# dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10) +# dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50) +# dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100) + +# # SMA - Simple Moving Average +# dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) + +# SAR Parabol +dataframe['sar'] = ta.SAR(dataframe) + +# TEMA - Triple Exponential Moving Average +dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9) + +# Cycle Indicator +# ------------------------------------ +# Hilbert Transform Indicator - SineWave +hilbert = ta.HT_SINE(dataframe) +dataframe['htsine'] = hilbert['sine'] +dataframe['htleadsine'] = hilbert['leadsine'] + +# Pattern Recognition - Bullish candlestick patterns +# ------------------------------------ +# # Hammer: values [0, 100] +# dataframe['CDLHAMMER'] = ta.CDLHAMMER(dataframe) +# # Inverted Hammer: values [0, 100] +# dataframe['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(dataframe) +# # Dragonfly Doji: values [0, 100] +# dataframe['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(dataframe) +# # Piercing Line: values [0, 100] +# dataframe['CDLPIERCING'] = ta.CDLPIERCING(dataframe) # values [0, 100] +# # Morningstar: values [0, 100] +# dataframe['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(dataframe) # values [0, 100] +# # Three White Soldiers: values [0, 100] +# dataframe['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(dataframe) # values [0, 100] + +# Pattern Recognition - Bearish candlestick patterns +# ------------------------------------ +# # Hanging Man: values [0, 100] +# dataframe['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(dataframe) +# # Shooting Star: values [0, 100] +# dataframe['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(dataframe) +# # Gravestone Doji: values [0, 100] +# dataframe['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(dataframe) +# # Dark Cloud Cover: values [0, 100] +# dataframe['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(dataframe) +# # Evening Doji Star: values [0, 100] +# dataframe['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(dataframe) +# # Evening Star: values [0, 100] +# dataframe['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(dataframe) + +# Pattern Recognition - Bullish/Bearish candlestick patterns +# ------------------------------------ +# # Three Line Strike: values [0, -100, 100] +# dataframe['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(dataframe) +# # Spinning Top: values [0, -100, 100] +# dataframe['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(dataframe) # values [0, -100, 100] +# # Engulfing: values [0, -100, 100] +# dataframe['CDLENGULFING'] = ta.CDLENGULFING(dataframe) # values [0, -100, 100] +# # Harami: values [0, -100, 100] +# dataframe['CDLHARAMI'] = ta.CDLHARAMI(dataframe) # values [0, -100, 100] +# # Three Outside Up/Down: values [0, -100, 100] +# dataframe['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(dataframe) # values [0, -100, 100] +# # Three Inside Up/Down: values [0, -100, 100] +# dataframe['CDL3INSIDE'] = ta.CDL3INSIDE(dataframe) # values [0, -100, 100] + +# # Chart type +# # ------------------------------------ +# # Heikinashi stategy +# heikinashi = qtpylib.heikinashi(dataframe) +# dataframe['ha_open'] = heikinashi['open'] +# dataframe['ha_close'] = heikinashi['close'] +# dataframe['ha_high'] = heikinashi['high'] +# dataframe['ha_low'] = heikinashi['low'] + +# Retrieve best bid and best ask from the orderbook +# ------------------------------------ +""" +# first check if dataprovider is available +if self.dp: +if self.dp.runmode in ('live', 'dry_run'): + ob = self.dp.orderbook(metadata['pair'], 1) + dataframe['best_bid'] = ob['bids'][0][0] + dataframe['best_ask'] = ob['asks'][0][0] +""" diff --git a/freqtrade/templates/subtemplates/sell_trend_full.j2 b/freqtrade/templates/subtemplates/sell_trend_full.j2 new file mode 100644 index 000000000..36c08c947 --- /dev/null +++ b/freqtrade/templates/subtemplates/sell_trend_full.j2 @@ -0,0 +1,3 @@ +(qtpylib.crossed_above(dataframe['rsi'], 70)) & # Signal: RSI crosses above 70 +(dataframe['tema'] > dataframe['bb_middleband']) & # Guard: tema above BB middle +(dataframe['tema'] < dataframe['tema'].shift(1)) & # Guard: tema is falling diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 3b37c6895..47bb5e3f6 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -106,7 +106,8 @@ def start_new_strategy(args: Dict[str, Any]) -> None: "Please choose another Strategy Name.") strategy_text = render_template(templatefile='base_strategy.py.j2', - arguments={"strategy": args["strategy"]}) + arguments={"strategy": args["strategy"], + "subtemplates": 'full'}) logger.info(f"Writing strategy to `{new_path}`.") new_path.write_text(strategy_text) From f26c40082dc806cd876debd9ccbfec0179f41ae2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 21 Nov 2019 07:21:19 +0100 Subject: [PATCH 1040/3421] Allow selection of templates for strategy --- freqtrade/configuration/arguments.py | 4 ++-- freqtrade/configuration/cli_options.py | 8 ++++++++ .../templates/subtemplates/buy_trend_minimal.j2 | 1 + .../templates/subtemplates/indicators_full.j2 | 8 ++++---- .../subtemplates/indicators_minimal.j2 | 17 +++++++++++++++++ .../subtemplates/sell_trend_minimal.j2 | 1 + freqtrade/utils.py | 6 ++++-- 7 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 freqtrade/templates/subtemplates/buy_trend_minimal.j2 create mode 100644 freqtrade/templates/subtemplates/indicators_minimal.j2 create mode 100644 freqtrade/templates/subtemplates/sell_trend_minimal.j2 diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 5cc56a8bc..b23366d7a 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -39,9 +39,9 @@ ARGS_LIST_PAIRS = ["exchange", "print_list", "list_pairs_print_json", "print_one ARGS_CREATE_USERDIR = ["user_data_dir", "reset"] -ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy"] +ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "template"] -ARGS_BUILD_HYPEROPT = ["user_data_dir", "hyperopt"] +ARGS_BUILD_HYPEROPT = ["user_data_dir", "hyperopt", "template"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", "timeframes", "erase"] diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index d7a496aa7..be9397975 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -339,6 +339,14 @@ AVAILABLE_CLI_OPTIONS = { help='Clean all existing data for the selected exchange/pairs/timeframes.', action='store_true', ), + # Templating options + "template": Arg( + '--template', + help='Use a template which is either `minimal` or ' + '`full` (containing multiple sample indicators).', + choices=['full', 'minimal'], + default='full', + ), # Plot dataframe "indicators1": Arg( '--indicators1', diff --git a/freqtrade/templates/subtemplates/buy_trend_minimal.j2 b/freqtrade/templates/subtemplates/buy_trend_minimal.j2 new file mode 100644 index 000000000..6a4079cf3 --- /dev/null +++ b/freqtrade/templates/subtemplates/buy_trend_minimal.j2 @@ -0,0 +1 @@ +(qtpylib.crossed_above(dataframe['rsi'], 30)) & # Signal: RSI crosses above 30 diff --git a/freqtrade/templates/subtemplates/indicators_full.j2 b/freqtrade/templates/subtemplates/indicators_full.j2 index 395808776..33dd85311 100644 --- a/freqtrade/templates/subtemplates/indicators_full.j2 +++ b/freqtrade/templates/subtemplates/indicators_full.j2 @@ -154,8 +154,8 @@ dataframe['htleadsine'] = hilbert['leadsine'] """ # first check if dataprovider is available if self.dp: -if self.dp.runmode in ('live', 'dry_run'): - ob = self.dp.orderbook(metadata['pair'], 1) - dataframe['best_bid'] = ob['bids'][0][0] - dataframe['best_ask'] = ob['asks'][0][0] + if self.dp.runmode in ('live', 'dry_run'): + ob = self.dp.orderbook(metadata['pair'], 1) + dataframe['best_bid'] = ob['bids'][0][0] + dataframe['best_ask'] = ob['asks'][0][0] """ diff --git a/freqtrade/templates/subtemplates/indicators_minimal.j2 b/freqtrade/templates/subtemplates/indicators_minimal.j2 new file mode 100644 index 000000000..7d75b4610 --- /dev/null +++ b/freqtrade/templates/subtemplates/indicators_minimal.j2 @@ -0,0 +1,17 @@ + +# Momentum Indicators +# ------------------------------------ + +# RSI +dataframe['rsi'] = ta.RSI(dataframe) + +# Retrieve best bid and best ask from the orderbook +# ------------------------------------ +""" +# first check if dataprovider is available +if self.dp: + if self.dp.runmode in ('live', 'dry_run'): + ob = self.dp.orderbook(metadata['pair'], 1) + dataframe['best_bid'] = ob['bids'][0][0] + dataframe['best_ask'] = ob['asks'][0][0] +""" diff --git a/freqtrade/templates/subtemplates/sell_trend_minimal.j2 b/freqtrade/templates/subtemplates/sell_trend_minimal.j2 new file mode 100644 index 000000000..42a7b81a2 --- /dev/null +++ b/freqtrade/templates/subtemplates/sell_trend_minimal.j2 @@ -0,0 +1 @@ +(qtpylib.crossed_above(dataframe['rsi'], 70)) & # Signal: RSI crosses above 70 diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 47bb5e3f6..4657e58fc 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -107,7 +107,7 @@ def start_new_strategy(args: Dict[str, Any]) -> None: strategy_text = render_template(templatefile='base_strategy.py.j2', arguments={"strategy": args["strategy"], - "subtemplates": 'full'}) + "subtemplates": args['template']}) logger.info(f"Writing strategy to `{new_path}`.") new_path.write_text(strategy_text) @@ -130,7 +130,9 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: "Please choose another Strategy Name.") strategy_text = render_template(templatefile='base_hyperopt.py.j2', - arguments={"hyperopt": args["hyperopt"]}) + arguments={"hyperopt": args["hyperopt"], + "subtemplates": args['template'] + }) logger.info(f"Writing hyperopt to `{new_path}`.") new_path.write_text(strategy_text) From f23f659ac590618ec8a4b232d49db079b61796d1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 21 Nov 2019 19:28:53 +0100 Subject: [PATCH 1041/3421] Use strings instead of subtemplates --- freqtrade/misc.py | 2 +- freqtrade/templates/base_strategy.py.j2 | 6 +++--- freqtrade/utils.py | 9 ++++++++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 6497a4727..bcba78cf0 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -129,7 +129,7 @@ def plural(num, singular: str, plural: str = None) -> str: return singular if (num == 1 or num == -1) else plural or singular + 's' -def render_template(templatefile: str, arguments: dict): +def render_template(templatefile: str, arguments: dict = {}): from jinja2 import Environment, PackageLoader, select_autoescape diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index 4c5fe9a0b..73a4c7a5a 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -102,7 +102,7 @@ class {{ strategy }}(IStrategy): :param metadata: Additional information, like the currently traded pair :return: a Dataframe with all mandatory indicators for the strategies """ - {% filter indent(8) %}{% include 'subtemplates/indicators_' + subtemplates + '.j2' %}{% endfilter %} + {{ indicators | indent(8) }} return dataframe @@ -115,7 +115,7 @@ class {{ strategy }}(IStrategy): """ dataframe.loc[ ( - {% filter indent(16) %}{% include 'subtemplates/buy_trend_' + subtemplates + '.j2' %}{% endfilter %} + {{ buy_trend | indent(16) }} (dataframe['volume'] > 0) # Make sure Volume is not 0 ), 'buy'] = 1 @@ -131,7 +131,7 @@ class {{ strategy }}(IStrategy): """ dataframe.loc[ ( - {% filter indent(16) %}{% include 'subtemplates/sell_trend_' + subtemplates + '.j2' %}{% endfilter %} + {{ sell_trend | indent(16) }} (dataframe['volume'] > 0) # Make sure Volume is not 0 ), 'sell'] = 1 diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 4657e58fc..e94de4f3e 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -105,9 +105,16 @@ def start_new_strategy(args: Dict[str, Any]) -> None: raise OperationalException(f"`{new_path}` already exists. " "Please choose another Strategy Name.") + indicators = render_template(templatefile=f"subtemplates/indicators_{args['template']}.j2",) + buy_trend = render_template(templatefile=f"subtemplates/buy_trend_{args['template']}.j2",) + sell_trend = render_template(templatefile=f"subtemplates/sell_trend_{args['template']}.j2",) + strategy_text = render_template(templatefile='base_strategy.py.j2', arguments={"strategy": args["strategy"], - "subtemplates": args['template']}) + "indicators": indicators, + "buy_trend": buy_trend, + "sell_trend": sell_trend, + }) logger.info(f"Writing strategy to `{new_path}`.") new_path.write_text(strategy_text) From 5f8fcebb8860831c4794e05318cecb36189cf5b7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 21 Nov 2019 19:41:57 +0100 Subject: [PATCH 1042/3421] Parametrize hyperopt file --- freqtrade/templates/base_hyperopt.py.j2 | 40 ++----------------- .../subtemplates/hyperopt_buy_guards_full.j2 | 8 ++++ .../hyperopt_buy_guards_minimal.j2 | 2 + .../subtemplates/hyperopt_buy_space_full.j2 | 9 +++++ .../hyperopt_buy_space_minimal.j2 | 3 ++ .../subtemplates/hyperopt_sell_guards_full.j2 | 8 ++++ .../hyperopt_sell_guards_minimal.j2 | 2 + .../subtemplates/hyperopt_sell_space_full.j2 | 11 +++++ .../hyperopt_sell_space_minimal.j2 | 5 +++ freqtrade/utils.py | 14 ++++++- 10 files changed, 65 insertions(+), 37 deletions(-) create mode 100644 freqtrade/templates/subtemplates/hyperopt_buy_guards_full.j2 create mode 100644 freqtrade/templates/subtemplates/hyperopt_buy_guards_minimal.j2 create mode 100644 freqtrade/templates/subtemplates/hyperopt_buy_space_full.j2 create mode 100644 freqtrade/templates/subtemplates/hyperopt_buy_space_minimal.j2 create mode 100644 freqtrade/templates/subtemplates/hyperopt_sell_guards_full.j2 create mode 100644 freqtrade/templates/subtemplates/hyperopt_sell_guards_minimal.j2 create mode 100644 freqtrade/templates/subtemplates/hyperopt_sell_space_full.j2 create mode 100644 freqtrade/templates/subtemplates/hyperopt_sell_space_minimal.j2 diff --git a/freqtrade/templates/base_hyperopt.py.j2 b/freqtrade/templates/base_hyperopt.py.j2 index c0f4e3292..05ba08b81 100644 --- a/freqtrade/templates/base_hyperopt.py.j2 +++ b/freqtrade/templates/base_hyperopt.py.j2 @@ -48,14 +48,7 @@ class {{ hyperopt }}(IHyperOpt): conditions = [] # GUARDS AND TRENDS - if 'mfi-enabled' in params and params['mfi-enabled']: - conditions.append(dataframe['mfi'] < params['mfi-value']) - if 'fastd-enabled' in params and params['fastd-enabled']: - conditions.append(dataframe['fastd'] < params['fastd-value']) - if 'adx-enabled' in params and params['adx-enabled']: - conditions.append(dataframe['adx'] > params['adx-value']) - if 'rsi-enabled' in params and params['rsi-enabled']: - conditions.append(dataframe['rsi'] < params['rsi-value']) + {{ buy_guards | indent(12) }} # TRIGGERS if 'trigger' in params: @@ -85,15 +78,7 @@ class {{ hyperopt }}(IHyperOpt): Define your Hyperopt space for searching buy strategy parameters. """ return [ - Integer(10, 25, name='mfi-value'), - Integer(15, 45, name='fastd-value'), - Integer(20, 50, name='adx-value'), - Integer(20, 40, name='rsi-value'), - Categorical([True, False], name='mfi-enabled'), - Categorical([True, False], name='fastd-enabled'), - Categorical([True, False], name='adx-enabled'), - Categorical([True, False], name='rsi-enabled'), - Categorical(['bb_lower', 'macd_cross_signal', 'sar_reversal'], name='trigger') + {{ buy_space | indent(12) }} ] @staticmethod @@ -108,14 +93,7 @@ class {{ hyperopt }}(IHyperOpt): conditions = [] # GUARDS AND TRENDS - if 'sell-mfi-enabled' in params and params['sell-mfi-enabled']: - conditions.append(dataframe['mfi'] > params['sell-mfi-value']) - if 'sell-fastd-enabled' in params and params['sell-fastd-enabled']: - conditions.append(dataframe['fastd'] > params['sell-fastd-value']) - if 'sell-adx-enabled' in params and params['sell-adx-enabled']: - conditions.append(dataframe['adx'] < params['sell-adx-value']) - if 'sell-rsi-enabled' in params and params['sell-rsi-enabled']: - conditions.append(dataframe['rsi'] > params['sell-rsi-value']) + {{ sell_guards | indent(12) }} # TRIGGERS if 'sell-trigger' in params: @@ -145,15 +123,5 @@ class {{ hyperopt }}(IHyperOpt): Define your Hyperopt space for searching sell strategy parameters. """ return [ - Integer(75, 100, name='sell-mfi-value'), - Integer(50, 100, name='sell-fastd-value'), - Integer(50, 100, name='sell-adx-value'), - Integer(60, 100, name='sell-rsi-value'), - Categorical([True, False], name='sell-mfi-enabled'), - Categorical([True, False], name='sell-fastd-enabled'), - Categorical([True, False], name='sell-adx-enabled'), - Categorical([True, False], name='sell-rsi-enabled'), - Categorical(['sell-bb_upper', - 'sell-macd_cross_signal', - 'sell-sar_reversal'], name='sell-trigger') + {{ sell_space | indent(12) }} ] diff --git a/freqtrade/templates/subtemplates/hyperopt_buy_guards_full.j2 b/freqtrade/templates/subtemplates/hyperopt_buy_guards_full.j2 new file mode 100644 index 000000000..5b967f4ed --- /dev/null +++ b/freqtrade/templates/subtemplates/hyperopt_buy_guards_full.j2 @@ -0,0 +1,8 @@ +if params.get('mfi-enabled'): + conditions.append(dataframe['mfi'] < params['mfi-value']) +if params.get('fastd-enabled'): + conditions.append(dataframe['fastd'] < params['fastd-value']) +if params.get('adx-enabled'): + conditions.append(dataframe['adx'] > params['adx-value']) +if params.get('rsi-enabled'): + conditions.append(dataframe['rsi'] < params['rsi-value']) diff --git a/freqtrade/templates/subtemplates/hyperopt_buy_guards_minimal.j2 b/freqtrade/templates/subtemplates/hyperopt_buy_guards_minimal.j2 new file mode 100644 index 000000000..5e1022f59 --- /dev/null +++ b/freqtrade/templates/subtemplates/hyperopt_buy_guards_minimal.j2 @@ -0,0 +1,2 @@ +if params.get('rsi-enabled'): + conditions.append(dataframe['rsi'] < params['rsi-value']) diff --git a/freqtrade/templates/subtemplates/hyperopt_buy_space_full.j2 b/freqtrade/templates/subtemplates/hyperopt_buy_space_full.j2 new file mode 100644 index 000000000..29bafbd93 --- /dev/null +++ b/freqtrade/templates/subtemplates/hyperopt_buy_space_full.j2 @@ -0,0 +1,9 @@ +Integer(10, 25, name='mfi-value'), +Integer(15, 45, name='fastd-value'), +Integer(20, 50, name='adx-value'), +Integer(20, 40, name='rsi-value'), +Categorical([True, False], name='mfi-enabled'), +Categorical([True, False], name='fastd-enabled'), +Categorical([True, False], name='adx-enabled'), +Categorical([True, False], name='rsi-enabled'), +Categorical(['bb_lower', 'macd_cross_signal', 'sar_reversal'], name='trigger') diff --git a/freqtrade/templates/subtemplates/hyperopt_buy_space_minimal.j2 b/freqtrade/templates/subtemplates/hyperopt_buy_space_minimal.j2 new file mode 100644 index 000000000..5ddf537fb --- /dev/null +++ b/freqtrade/templates/subtemplates/hyperopt_buy_space_minimal.j2 @@ -0,0 +1,3 @@ +Integer(20, 40, name='rsi-value'), +Categorical([True, False], name='rsi-enabled'), +Categorical(['bb_lower', 'macd_cross_signal', 'sar_reversal'], name='trigger') diff --git a/freqtrade/templates/subtemplates/hyperopt_sell_guards_full.j2 b/freqtrade/templates/subtemplates/hyperopt_sell_guards_full.j2 new file mode 100644 index 000000000..bd7b499f4 --- /dev/null +++ b/freqtrade/templates/subtemplates/hyperopt_sell_guards_full.j2 @@ -0,0 +1,8 @@ +if params.get('sell-mfi-enabled'): + conditions.append(dataframe['mfi'] > params['sell-mfi-value']) +if params.get('sell-fastd-enabled'): + conditions.append(dataframe['fastd'] > params['sell-fastd-value']) +if params.get('sell-adx-enabled'): + conditions.append(dataframe['adx'] < params['sell-adx-value']) +if params.get('sell-rsi-enabled'): + conditions.append(dataframe['rsi'] > params['sell-rsi-value']) diff --git a/freqtrade/templates/subtemplates/hyperopt_sell_guards_minimal.j2 b/freqtrade/templates/subtemplates/hyperopt_sell_guards_minimal.j2 new file mode 100644 index 000000000..8b4adebf6 --- /dev/null +++ b/freqtrade/templates/subtemplates/hyperopt_sell_guards_minimal.j2 @@ -0,0 +1,2 @@ +if params.get('sell-rsi-enabled'): + conditions.append(dataframe['rsi'] > params['sell-rsi-value']) diff --git a/freqtrade/templates/subtemplates/hyperopt_sell_space_full.j2 b/freqtrade/templates/subtemplates/hyperopt_sell_space_full.j2 new file mode 100644 index 000000000..46469d532 --- /dev/null +++ b/freqtrade/templates/subtemplates/hyperopt_sell_space_full.j2 @@ -0,0 +1,11 @@ +Integer(75, 100, name='sell-mfi-value'), +Integer(50, 100, name='sell-fastd-value'), +Integer(50, 100, name='sell-adx-value'), +Integer(60, 100, name='sell-rsi-value'), +Categorical([True, False], name='sell-mfi-enabled'), +Categorical([True, False], name='sell-fastd-enabled'), +Categorical([True, False], name='sell-adx-enabled'), +Categorical([True, False], name='sell-rsi-enabled'), +Categorical(['sell-bb_upper', + 'sell-macd_cross_signal', + 'sell-sar_reversal'], name='sell-trigger') diff --git a/freqtrade/templates/subtemplates/hyperopt_sell_space_minimal.j2 b/freqtrade/templates/subtemplates/hyperopt_sell_space_minimal.j2 new file mode 100644 index 000000000..dfb110543 --- /dev/null +++ b/freqtrade/templates/subtemplates/hyperopt_sell_space_minimal.j2 @@ -0,0 +1,5 @@ +Integer(60, 100, name='sell-rsi-value'), +Categorical([True, False], name='sell-rsi-enabled'), +Categorical(['sell-bb_upper', + 'sell-macd_cross_signal', + 'sell-sar_reversal'], name='sell-trigger') diff --git a/freqtrade/utils.py b/freqtrade/utils.py index e94de4f3e..e7b6eff4a 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -136,9 +136,21 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: raise OperationalException(f"`{new_path}` already exists. " "Please choose another Strategy Name.") + buy_guards = render_template( + templatefile=f"subtemplates/hyperopt_buy_guards_{args['template']}.j2",) + sell_guards = render_template( + templatefile=f"subtemplates/hyperopt_sell_guards_{args['template']}.j2",) + buy_space = render_template( + templatefile=f"subtemplates/hyperopt_buy_space_{args['template']}.j2",) + sell_space = render_template( + templatefile=f"subtemplates/hyperopt_sell_space_{args['template']}.j2",) + strategy_text = render_template(templatefile='base_hyperopt.py.j2', arguments={"hyperopt": args["hyperopt"], - "subtemplates": args['template'] + "buy_guards": buy_guards, + "sell_guards": sell_guards, + "buy_space": buy_space, + "sell_space": sell_space, }) logger.info(f"Writing hyperopt to `{new_path}`.") From 210d468a9b1cff8c0d5373de185f60102d8e92e9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 21 Nov 2019 20:01:08 +0100 Subject: [PATCH 1043/3421] Reinstate mfi ... --- freqtrade/templates/sample_strategy.py | 4 +- .../templates/subtemplates/indicators_full.j2 | 4 +- freqtrade/utils.py | 78 +++++++++++-------- 3 files changed, 50 insertions(+), 36 deletions(-) diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index 38a45c1f2..02bf24e7e 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -131,8 +131,8 @@ class SampleStrategy(IStrategy): dataframe['macdsignal'] = macd['macdsignal'] dataframe['macdhist'] = macd['macdhist'] - # # MFI - # dataframe['mfi'] = ta.MFI(dataframe) + # MFI + dataframe['mfi'] = ta.MFI(dataframe) # # Minus Directional Indicator / Movement # dataframe['minus_dm'] = ta.MINUS_DM(dataframe) diff --git a/freqtrade/templates/subtemplates/indicators_full.j2 b/freqtrade/templates/subtemplates/indicators_full.j2 index 33dd85311..879a2daa0 100644 --- a/freqtrade/templates/subtemplates/indicators_full.j2 +++ b/freqtrade/templates/subtemplates/indicators_full.j2 @@ -26,8 +26,8 @@ dataframe['macd'] = macd['macd'] dataframe['macdsignal'] = macd['macdsignal'] dataframe['macdhist'] = macd['macdhist'] -# # MFI -# dataframe['mfi'] = ta.MFI(dataframe) +# MFI +dataframe['mfi'] = ta.MFI(dataframe) # # Minus Directional Indicator / Movement # dataframe['minus_dm'] = ta.MINUS_DM(dataframe) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index e7b6eff4a..c71080d5a 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -91,6 +91,25 @@ def start_create_userdir(args: Dict[str, Any]) -> None: sys.exit(1) +def deploy_new_strategy(strategy_name, strategy_path: Path, subtemplate: str): + """ + Deploy new strategy from template to strategy_path + """ + indicators = render_template(templatefile=f"subtemplates/indicators_{subtemplate}.j2",) + buy_trend = render_template(templatefile=f"subtemplates/buy_trend_{subtemplate}.j2",) + sell_trend = render_template(templatefile=f"subtemplates/sell_trend_{subtemplate}.j2",) + + strategy_text = render_template(templatefile='base_strategy.py.j2', + arguments={"strategy": strategy_name, + "indicators": indicators, + "buy_trend": buy_trend, + "sell_trend": sell_trend, + }) + + logger.info(f"Writing strategy to `{strategy_path}`.") + strategy_path.write_text(strategy_text) + + def start_new_strategy(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) @@ -105,23 +124,37 @@ def start_new_strategy(args: Dict[str, Any]) -> None: raise OperationalException(f"`{new_path}` already exists. " "Please choose another Strategy Name.") - indicators = render_template(templatefile=f"subtemplates/indicators_{args['template']}.j2",) - buy_trend = render_template(templatefile=f"subtemplates/buy_trend_{args['template']}.j2",) - sell_trend = render_template(templatefile=f"subtemplates/sell_trend_{args['template']}.j2",) + deploy_new_strategy(args['strategy'], new_path, args['template']) - strategy_text = render_template(templatefile='base_strategy.py.j2', - arguments={"strategy": args["strategy"], - "indicators": indicators, - "buy_trend": buy_trend, - "sell_trend": sell_trend, - }) - - logger.info(f"Writing strategy to `{new_path}`.") - new_path.write_text(strategy_text) else: raise OperationalException("`new-strategy` requires --strategy to be set.") +def deploy_new_hyperopt(hyperopt_name, hyperopt_path: Path, subtemplate: str): + """ + Deploys a new hyperopt template to hyperopt_path + """ + buy_guards = render_template( + templatefile=f"subtemplates/hyperopt_buy_guards_{subtemplate}.j2",) + sell_guards = render_template( + templatefile=f"subtemplates/hyperopt_sell_guards_{subtemplate}.j2",) + buy_space = render_template( + templatefile=f"subtemplates/hyperopt_buy_space_{subtemplate}.j2",) + sell_space = render_template( + templatefile=f"subtemplates/hyperopt_sell_space_{subtemplate}.j2",) + + strategy_text = render_template(templatefile='base_hyperopt.py.j2', + arguments={"hyperopt": hyperopt_name, + "buy_guards": buy_guards, + "sell_guards": sell_guards, + "buy_space": buy_space, + "sell_space": sell_space, + }) + + logger.info(f"Writing hyperopt to `{hyperopt_path}`.") + hyperopt_path.write_text(strategy_text) + + def start_new_hyperopt(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) @@ -135,26 +168,7 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: if new_path.exists(): raise OperationalException(f"`{new_path}` already exists. " "Please choose another Strategy Name.") - - buy_guards = render_template( - templatefile=f"subtemplates/hyperopt_buy_guards_{args['template']}.j2",) - sell_guards = render_template( - templatefile=f"subtemplates/hyperopt_sell_guards_{args['template']}.j2",) - buy_space = render_template( - templatefile=f"subtemplates/hyperopt_buy_space_{args['template']}.j2",) - sell_space = render_template( - templatefile=f"subtemplates/hyperopt_sell_space_{args['template']}.j2",) - - strategy_text = render_template(templatefile='base_hyperopt.py.j2', - arguments={"hyperopt": args["hyperopt"], - "buy_guards": buy_guards, - "sell_guards": sell_guards, - "buy_space": buy_space, - "sell_space": sell_space, - }) - - logger.info(f"Writing hyperopt to `{new_path}`.") - new_path.write_text(strategy_text) + deploy_new_hyperopt(args['hyperopt'], new_path, args['template']) else: raise OperationalException("`new-hyperopt` requires --hyperopt to be set.") From a6bb7595e850c1c1d0e4cb5bc8401ab250c63138 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 22 Nov 2019 13:44:50 +0100 Subject: [PATCH 1044/3421] Update utils doc --- docs/utils.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/utils.md b/docs/utils.md index 26d354206..b07008b91 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -59,6 +59,7 @@ freqtrade new-strategy --userdir ~/.freqtrade/ --strategy AwesomeStrategy ``` output usage: freqtrade new-strategy [-h] [--userdir PATH] [-s NAME] + [--template {full,minimal}] optional arguments: -h, --help show this help message and exit @@ -67,6 +68,9 @@ optional arguments: -s NAME, --strategy NAME Specify strategy class name which will be used by the bot. + --template {full,minimal} + Use a template which is either `minimal` or `full` + (containing multiple sample indicators). ``` ## Create new hyperopt @@ -92,6 +96,7 @@ freqtrade new-hyperopt --userdir ~/.freqtrade/ --hyperopt AwesomeHyperopt ``` output usage: freqtrade new-hyperopt [-h] [--userdir PATH] [--hyperopt NAME] + [--template {full,minimal}] optional arguments: -h, --help show this help message and exit @@ -99,6 +104,9 @@ optional arguments: Path to userdata directory. --hyperopt NAME Specify hyperopt class name which will be used by the bot. + --template {full,minimal} + Use a template which is either `minimal` or `full` + (containing multiple sample indicators). ``` ## List Exchanges From a183162d8b7248fde6b8dd91e4c652dd224b8916 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 23 Nov 2019 03:37:29 +0300 Subject: [PATCH 1045/3421] Add description into Advanced Setup section --- docs/advanced-setup.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/docs/advanced-setup.md b/docs/advanced-setup.md index e6334d2c1..c50527c8b 100644 --- a/docs/advanced-setup.md +++ b/docs/advanced-setup.md @@ -31,3 +31,40 @@ as the watchdog. !!! Note The sd_notify communication between the bot and the systemd service manager will not work if the bot runs in a Docker container. + +## Logging to syslog or journald + +On many systems the bot can be configured to send its log messages to `syslog` or `journald`. The special values for the `--logfilename` option can be used for this: + +* `--logfilename journald` -- send log messages to `journald`. This needs the `systemd` python package installed as the dependency. Not available on Windows. + +* `--logfilename syslog:` -- send log messages to `syslog` server using the `` as syslog address. + +The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the ':' character. + +So, the following are the examples of possible usages: + +* `--logfilename syslog:/dev/log` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems. +* `--logfilename syslog` -- same as above, the shortcut for `/dev/log`. +* `--logfilename syslog:/var/run/syslog` -- log to syslog (rsyslog) using the `/var/run/syslog` socket. Use this on MacOS. +* `--logfilename syslog:localhost:514` -- log to local syslog using UDP socket, if it listens on port 514. +* `--logfilename syslog::514` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to external syslog server. + +Log messages are send to `journald` and `syslog` with the `user` facility. So you can see them with the following commands: + +* `tail -f /var/log/user`, or install a comprehansive graphical viewer (for instance, 'Log File Viewer' for Ubuntu) for the `syslog` case; +* `journalctl -f` when logging to `journald`. + +On many systems rsyslog (syslog) fetches data from journald, so both `--logfilename syslog` or `--logfilename journald` can be used and the messages be viewed with both journalctl and the syslog viewer utility. + +For rsyslog the messages from the bot can be redirected into a separate dedicated log file. To achieve this, add +``` +if $programname startswith "freqtrade" then -/var/log/freqtrade.log +``` +to one of the rsyslog configuration files, for example at the end of the `/etc/rsyslog.d/50-default.conf`. + +For syslog (rsyslog), the reduction mode can be switched on. This will reduce the number of repeating messages. For instance, multiple bot Heartbeat messages will be reduced to the single message when nothing else happens with the bot. To achieve this, set in `/etc/rsyslog.conf`: +``` +# Filter duplicated messages +$RepeatedMsgReduction on +``` From 175591e524313e3fba2b89eb111cd89e4833581b Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 23 Nov 2019 04:03:47 +0300 Subject: [PATCH 1046/3421] Fix test --- tests/optimize/test_hyperopt.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 6b0f5eafa..6ff7968c5 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -718,6 +718,7 @@ def test_print_json_spaces_default(mocker, default_conf, caplog, capsys) -> None patch_exchange(mocker) default_conf.update({'config': 'config.json.example', + 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, 'timerange': None, 'spaces': 'default', From 097cdcb57ab358dad716b78cf02e481a48e5df35 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 23 Nov 2019 11:32:33 +0300 Subject: [PATCH 1047/3421] Save epochs at intermediate points --- freqtrade/optimize/hyperopt.py | 46 ++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 6ea2f5133..ecfaba209 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -77,6 +77,8 @@ class Hyperopt: # Previous evaluations self.trials: List = [] + self.num_trials_saved = 0 + # Populate functions here (hasattr is slow so should not be run during "regular" operations) if hasattr(self.custom_hyperopt, 'populate_indicators'): self.backtesting.strategy.advise_indicators = \ @@ -132,13 +134,17 @@ class Hyperopt: arg_dict = {dim.name: value for dim, value in zip(dimensions, params)} return arg_dict - def save_trials(self) -> None: + def save_trials(self, final: bool = False) -> None: """ Save hyperopt trials to file """ - if self.trials: - logger.info("Saving %d evaluations to '%s'", len(self.trials), self.trials_file) + num_trials = len(self.trials) + if num_trials > self.num_trials_saved: + logger.info(f"Saving {num_trials} epochs.") dump(self.trials, self.trials_file) + self.num_trials_saved = num_trials + if final: + logger.info(f"{num_trials} epochs were saved to '{self.trials_file}'.") def read_trials(self) -> List: """ @@ -153,6 +159,12 @@ class Hyperopt: """ Display Best hyperopt result """ + # This is printed when Ctrl+C is pressed quickly, before first epochs have + # a chance to be evaluated. + if not self.trials: + print("No epochs evaluated yet, no best result.") + return + results = sorted(self.trials, key=itemgetter('loss')) best_result = results[0] params = best_result['params'] @@ -197,12 +209,20 @@ class Hyperopt: # Also round to 5 digits after the decimal point print(f"Stoploss: {round(params.get('stoploss'), 5)}") + def is_best(self, results) -> bool: + return results['loss'] < self.current_best_loss + def log_results(self, results) -> None: """ Log results if it is better than any previous evaluation """ print_all = self.config.get('print_all', False) - is_best_loss = results['loss'] < self.current_best_loss + is_best_loss = self.is_best(results) + + if not print_all: + print('.', end='' if results['current_epoch'] % 100 != 0 else None) + sys.stdout.flush() + if print_all or is_best_loss: if is_best_loss: self.current_best_loss = results['loss'] @@ -217,13 +237,9 @@ class Hyperopt: print(log_str) else: print(f'\n{log_str}') - else: - print('.', end='') - sys.stdout.flush() def format_results_logstring(self, results) -> str: - # Output human-friendly index here (starting from 1) - current = results['current_epoch'] + 1 + current = results['current_epoch'] total = self.total_epochs res = results['results_explanation'] loss = results['loss'] @@ -422,15 +438,19 @@ class Hyperopt: self.opt.tell(asked, [v['loss'] for v in f_val]) self.fix_optimizer_models_list() for j in range(jobs): - current = i * jobs + j + # Use human-friendly index here (starting from 1) + current = i * jobs + j + 1 val = f_val[j] val['current_epoch'] = current - val['is_initial_point'] = current < INITIAL_POINTS + val['is_initial_point'] = current <= INITIAL_POINTS + logger.debug(f"Optimizer epoch evaluated: {val}") + is_best = self.is_best(val) self.log_results(val) self.trials.append(val) - logger.debug(f"Optimizer epoch evaluated: {val}") + if is_best or current % 100 == 0: + self.save_trials() except KeyboardInterrupt: print('User interrupted..') - self.save_trials() + self.save_trials(final=True) self.log_trials_result() From 737c07c5b68bb31a22aaa5cc3e3af0de72c45c04 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 23 Nov 2019 11:51:52 +0300 Subject: [PATCH 1048/3421] Make mypy happy --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index ecfaba209..e536960c4 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -220,7 +220,7 @@ class Hyperopt: is_best_loss = self.is_best(results) if not print_all: - print('.', end='' if results['current_epoch'] % 100 != 0 else None) + print('.', end='' if results['current_epoch'] % 100 != 0 else None) # type: ignore sys.stdout.flush() if print_all or is_best_loss: From 99db53417ccadfc45409eef6bb8301d049ab1f74 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 23 Nov 2019 12:00:43 +0300 Subject: [PATCH 1049/3421] Tests adjusted --- tests/optimize/test_hyperopt.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index e19835e58..00477f790 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -360,7 +360,7 @@ def test_log_results_if_loss_improves(hyperopt, capsys) -> None: hyperopt.log_results( { 'loss': 1, - 'current_epoch': 1, + 'current_epoch': 2, # This starts from 1 (in a human-friendly manner) 'results_explanation': 'foo.', 'is_initial_point': False } @@ -374,6 +374,7 @@ def test_no_log_if_loss_does_not_improve(hyperopt, caplog) -> None: hyperopt.log_results( { 'loss': 3, + 'current_epoch': 1, } ) assert caplog.record_tuples == [] @@ -386,7 +387,7 @@ def test_save_trials_saves_trials(mocker, hyperopt, testdatadir, caplog) -> None hyperopt.save_trials() trials_file = testdatadir / 'optimize' / 'ut_trials.pickle' - assert log_has(f"Saving 1 evaluations to '{trials_file}'", caplog) + assert log_has("Saving 1 epochs.", caplog) mock_dump.assert_called_once() From 067267f4cfc7a0442c4ae400c05be8a47d693333 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 23 Nov 2019 12:20:41 +0300 Subject: [PATCH 1050/3421] Log messages improved (plural/singular) --- freqtrade/optimize/hyperopt.py | 7 ++++--- tests/optimize/test_hyperopt.py | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index e536960c4..836309a62 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -23,7 +23,7 @@ from skopt import Optimizer from skopt.space import Dimension from freqtrade.data.history import get_timeframe, trim_dataframe -from freqtrade.misc import round_dict +from freqtrade.misc import plural, round_dict from freqtrade.optimize.backtesting import Backtesting # Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules from freqtrade.optimize.hyperopt_interface import IHyperOpt # noqa: F4 @@ -140,11 +140,12 @@ class Hyperopt: """ num_trials = len(self.trials) if num_trials > self.num_trials_saved: - logger.info(f"Saving {num_trials} epochs.") + logger.info(f"Saving {num_trials} {plural(num_trials, 'epoch')}.") dump(self.trials, self.trials_file) self.num_trials_saved = num_trials if final: - logger.info(f"{num_trials} epochs were saved to '{self.trials_file}'.") + logger.info(f"{num_trials} {plural(num_trials, 'epoch')} " + f"saved to '{self.trials_file}'.") def read_trials(self) -> List: """ diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 00477f790..2ec9f5664 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -384,10 +384,11 @@ def test_save_trials_saves_trials(mocker, hyperopt, testdatadir, caplog) -> None trials = create_trials(mocker, hyperopt, testdatadir) mock_dump = mocker.patch('freqtrade.optimize.hyperopt.dump', return_value=None) hyperopt.trials = trials - hyperopt.save_trials() + hyperopt.save_trials(final=True) trials_file = testdatadir / 'optimize' / 'ut_trials.pickle' - assert log_has("Saving 1 epochs.", caplog) + assert log_has("Saving 1 epoch.", caplog) + assert log_has(f"1 epoch saved to '{trials_file}'.", caplog) mock_dump.assert_called_once() From 6cb48305343a478105ec7762ce3a5abb8b810a55 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 23 Nov 2019 12:30:49 +0300 Subject: [PATCH 1051/3421] Testcase added --- tests/optimize/test_hyperopt.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 2ec9f5664..d3d544502 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -383,14 +383,19 @@ def test_no_log_if_loss_does_not_improve(hyperopt, caplog) -> None: def test_save_trials_saves_trials(mocker, hyperopt, testdatadir, caplog) -> None: trials = create_trials(mocker, hyperopt, testdatadir) mock_dump = mocker.patch('freqtrade.optimize.hyperopt.dump', return_value=None) + trials_file = testdatadir / 'optimize' / 'ut_trials.pickle' + hyperopt.trials = trials hyperopt.save_trials(final=True) - - trials_file = testdatadir / 'optimize' / 'ut_trials.pickle' assert log_has("Saving 1 epoch.", caplog) assert log_has(f"1 epoch saved to '{trials_file}'.", caplog) mock_dump.assert_called_once() + hyperopt.trials = trials + trials + hyperopt.save_trials(final=True) + assert log_has("Saving 2 epochs.", caplog) + assert log_has(f"2 epochs saved to '{trials_file}'.", caplog) + def test_read_trials_returns_trials_file(mocker, hyperopt, testdatadir, caplog) -> None: trials = create_trials(mocker, hyperopt, testdatadir) From 31c598f88aac05cc373b755ebe10f2b78125b79a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 23 Nov 2019 14:09:42 +0100 Subject: [PATCH 1052/3421] Add tests for advanced logging setup --- tests/conftest.py | 2 +- tests/test_configuration.py | 50 ++++++++++++++++++++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 305221d6d..8e2b4e976 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1215,7 +1215,7 @@ def import_fails() -> None: realimport = builtins.__import__ def mockedimport(name, *args, **kwargs): - if name in ["filelock"]: + if name in ["filelock", 'systemd.journal']: raise ImportError(f"No module named '{name}'") return realimport(name, *args, **kwargs) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 2aa805fe6..041cb95aa 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -21,7 +21,7 @@ from freqtrade.configuration.directory_operations import (create_datadir, create_userdata_dir) from freqtrade.configuration.load_config import load_config_file from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL -from freqtrade.loggers import _set_loggers +from freqtrade.loggers import _set_loggers, setup_logging from freqtrade.state import RunMode from tests.conftest import (log_has, log_has_re, patched_configuration_load_config_file) @@ -604,6 +604,54 @@ def test_set_loggers() -> None: assert logging.getLogger('telegram').level is logging.INFO +def test_set_loggers_syslog(mocker): + logger = logging.getLogger() + orig_handlers = logger.handlers + logger.handlers = [] + + config = {'verbosity': 2, + 'logfile': 'syslog:/dev/log', + } + + setup_logging(config) + assert len(logger.handlers) == 2 + assert [x for x in logger.handlers if type(x) == logging.handlers.SysLogHandler] + assert [x for x in logger.handlers if type(x) == logging.StreamHandler] + # reset handlers to not break pytest + logger.handlers = orig_handlers + + +def test_set_loggers_journald(mocker): + logger = logging.getLogger() + orig_handlers = logger.handlers + logger.handlers = [] + + config = {'verbosity': 2, + 'logfile': 'journald', + } + + setup_logging(config) + assert len(logger.handlers) == 2 + assert [x for x in logger.handlers if type(x).__name__ == "JournaldLogHandler"] + assert [x for x in logger.handlers if type(x) == logging.StreamHandler] + # reset handlers to not break pytest + logger.handlers = orig_handlers + + +def test_set_loggers_journald_importerror(mocker, import_fails): + logger = logging.getLogger() + orig_handlers = logger.handlers + logger.handlers = [] + + config = {'verbosity': 2, + 'logfile': 'journald', + } + with pytest.raises(OperationalException, + match=r'You need the systemd python package.*'): + setup_logging(config) + logger.handlers = orig_handlers + + def test_set_logfile(default_conf, mocker): patched_configuration_load_config_file(mocker, default_conf) From 1242263d255e8d8da09a99e18262b86d01245864 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 23 Nov 2019 14:20:41 +0100 Subject: [PATCH 1053/3421] Make test OS dependent --- requirements-dev.txt | 1 + tests/test_configuration.py | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index f5cde59e8..f7a68b664 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -13,6 +13,7 @@ pytest-asyncio==0.10.0 pytest-cov==2.8.1 pytest-mock==1.11.1 pytest-random-order==1.0.4 +systemd==0.16.1; sys_platform != 'win32' # Convert jupyter notebooks to markdown documents nbconvert==5.6.0 diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 041cb95aa..9601a5b50 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -1,6 +1,7 @@ # pragma pylint: disable=missing-docstring, protected-access, invalid-name import json import logging +import sys import warnings from copy import deepcopy from pathlib import Path @@ -14,9 +15,9 @@ from freqtrade.configuration import (Arguments, Configuration, validate_config_consistency) from freqtrade.configuration.check_exchange import check_exchange from freqtrade.configuration.config_validation import validate_config_schema -from freqtrade.configuration.deprecated_settings import (check_conflicting_settings, - process_deprecated_setting, - process_temporary_deprecated_settings) +from freqtrade.configuration.deprecated_settings import ( + check_conflicting_settings, process_deprecated_setting, + process_temporary_deprecated_settings) from freqtrade.configuration.directory_operations import (create_datadir, create_userdata_dir) from freqtrade.configuration.load_config import load_config_file @@ -621,6 +622,7 @@ def test_set_loggers_syslog(mocker): logger.handlers = orig_handlers +@pytest.mark.skipif(sys.platform == "win32", reason="does not run on windows") def test_set_loggers_journald(mocker): logger = logging.getLogger() orig_handlers = logger.handlers From c7c7a1c2aaa204b390f464657be0e195ede48a36 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 23 Nov 2019 14:25:32 +0100 Subject: [PATCH 1054/3421] skip test due to no journald installed --- requirements-dev.txt | 1 - tests/test_configuration.py | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index f7a68b664..f5cde59e8 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -13,7 +13,6 @@ pytest-asyncio==0.10.0 pytest-cov==2.8.1 pytest-mock==1.11.1 pytest-random-order==1.0.4 -systemd==0.16.1; sys_platform != 'win32' # Convert jupyter notebooks to markdown documents nbconvert==5.6.0 diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 9601a5b50..5d05a1e68 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -605,6 +605,7 @@ def test_set_loggers() -> None: assert logging.getLogger('telegram').level is logging.INFO +@pytest.mark.skipif(sys.platform == "win32", reason="does not run on windows") def test_set_loggers_syslog(mocker): logger = logging.getLogger() orig_handlers = logger.handlers @@ -622,7 +623,7 @@ def test_set_loggers_syslog(mocker): logger.handlers = orig_handlers -@pytest.mark.skipif(sys.platform == "win32", reason="does not run on windows") +@pytest.mark.skip(reason="systemd is not installed on every system, so we're not testing this.") def test_set_loggers_journald(mocker): logger = logging.getLogger() orig_handlers = logger.handlers From 5fb14e769b69e790a3a0f24820b24c690415c7bf Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 23 Nov 2019 14:52:44 +0100 Subject: [PATCH 1055/3421] Adjust folder to match user_data folder - otherwise running tests creates this folder --- tests/test_plotting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index ec4df9125..31502cafc 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -212,9 +212,9 @@ def test_generate_plot_file(mocker, caplog): fig = generate_empty_figure() plot_mock = mocker.patch("freqtrade.plot.plotting.plot", MagicMock()) store_plot_file(fig, filename="freqtrade-plot-UNITTEST_BTC-5m.html", - directory=Path("user_data/plots")) + directory=Path("user_data/plot")) - expected_fn = str(Path("user_data/plots/freqtrade-plot-UNITTEST_BTC-5m.html")) + expected_fn = str(Path("user_data/plot/freqtrade-plot-UNITTEST_BTC-5m.html")) assert plot_mock.call_count == 1 assert plot_mock.call_args[0][0] == fig assert (plot_mock.call_args_list[0][1]['filename'] From 63ad95a474b54eeab12b4f874c5dfbb5771657e6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 23 Nov 2019 20:13:20 +0100 Subject: [PATCH 1056/3421] reenable slack --- .github/workflows/ci.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c74b1720e..99f3b3eec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -74,6 +74,7 @@ jobs: # Fake travis environment to get coveralls working correctly export TRAVIS_PULL_REQUEST="https://github.com/${GITHUB_REPOSITORY}/pull/$(cat $GITHUB_EVENT_PATH | jq -r .number)" export CI_BRANCH=${GITHUB_REF#"ref/heads"} + export CI_BRANCH=${HEAD_REF} echo "${CI_BRANCH}" coveralls || true @@ -97,7 +98,7 @@ jobs: - name: Slack Notification uses: homoluctus/slatify@v1.8.0 - if: always() && github.repository.fork == true + if: always() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) with: type: ${{ job.status }} job_name: '*Freqtrade CI ${{ matrix.os }}*' @@ -158,7 +159,7 @@ jobs: - name: Slack Notification uses: homoluctus/slatify@v1.8.0 - if: always() && github.repository.fork == true + if: always() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) with: type: ${{ job.status }} job_name: '*Freqtrade CI windows*' @@ -178,7 +179,7 @@ jobs: - name: Slack Notification uses: homoluctus/slatify@v1.8.0 - if: failure() && github.repository.fork == true + if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) with: type: ${{ job.status }} job_name: '*Freqtrade Docs*' @@ -219,7 +220,7 @@ jobs: - name: Slack Notification uses: homoluctus/slatify@v1.8.0 - if: always() && github.repository.fork == true + if: always() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) with: type: ${{ job.status }} job_name: '*Freqtrade CI Deploy*' From f05818a86e64f7194a24dc74451cb9b1641e3de6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 23 Nov 2019 19:48:15 +0100 Subject: [PATCH 1057/3421] Allow transition from "no-config"-pairlist to pairlists --- freqtrade/configuration/deprecated_settings.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index 8f3dbd675..b1e3535a3 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -58,6 +58,13 @@ def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None: process_deprecated_setting(config, 'ask_strategy', 'ignore_roi_if_buy_signal', 'experimental', 'ignore_roi_if_buy_signal') + if not config.get('pairlists') and not config.get('pairlists'): + config['pairlists'] = [{'method': 'StaticPairList'}] + logger.warning( + "DEPRECATED: " + "Pairlists must be defined explicitly in the future." + "Defaulting to StaticPairList for now.") + if config.get('pairlist', {}).get("method") == 'VolumePairList': logger.warning( "DEPRECATED: " From cbf710a4f86f6d54ff56deb1f3f83fabbc592425 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 23 Nov 2019 19:48:33 +0100 Subject: [PATCH 1058/3421] Fix coveralls (?) --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 99f3b3eec..ea5f9c395 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,9 +73,9 @@ jobs: # Allow failure for coveralls # Fake travis environment to get coveralls working correctly export TRAVIS_PULL_REQUEST="https://github.com/${GITHUB_REPOSITORY}/pull/$(cat $GITHUB_EVENT_PATH | jq -r .number)" - export CI_BRANCH=${GITHUB_REF#"ref/heads"} - export CI_BRANCH=${HEAD_REF} - echo "${CI_BRANCH}" + export TRAVIS_BRANCH=${GITHUB_REF#"ref/heads"} + export TRAVIS_BRANCH=${HEAD_REF} + echo "${TRAVIS_BRANCH}" coveralls || true - name: Backtesting From a374df76225cdb7f4a3bc93462336708ad650e8f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 24 Nov 2019 09:55:34 +0100 Subject: [PATCH 1059/3421] some minor fixes from feedback --- docs/strategy-customization.md | 2 +- docs/utils.md | 7 +++++-- freqtrade/configuration/cli_options.py | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 352389d5e..c43d8e3f6 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -22,7 +22,7 @@ The bot includes a default strategy file. Also, several other strategies are available in the [strategy repository](https://github.com/freqtrade/freqtrade-strategies). You will however most likely have your own idea for a strategy. -This Document intends to help you develop one for yourself. +This document intends to help you develop one for yourself. To get started, use `freqtrade new-strategy --strategy AwesomeStrategy`. This will create a new strategy file from a template, which will be located under `user_data/strategies/AwesomeStrategy.py`. diff --git a/docs/utils.md b/docs/utils.md index b07008b91..ca4b645a5 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -70,7 +70,9 @@ optional arguments: bot. --template {full,minimal} Use a template which is either `minimal` or `full` - (containing multiple sample indicators). + (containing multiple sample indicators). Default: + `full`. + ``` ## Create new hyperopt @@ -106,7 +108,8 @@ optional arguments: bot. --template {full,minimal} Use a template which is either `minimal` or `full` - (containing multiple sample indicators). + (containing multiple sample indicators). Default: + `full`. ``` ## List Exchanges diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index be9397975..2061534e7 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -343,7 +343,7 @@ AVAILABLE_CLI_OPTIONS = { "template": Arg( '--template', help='Use a template which is either `minimal` or ' - '`full` (containing multiple sample indicators).', + '`full` (containing multiple sample indicators). Default: `%(default)s`.', choices=['full', 'minimal'], default='full', ), From 8c64be3cfd618ba3e69dc30c1cb4096d4a56b693 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 14 Nov 2019 07:01:23 +0100 Subject: [PATCH 1060/3421] get tickers only once to show balance --- freqtrade/rpc/rpc.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 8898f3068..f2851e0e1 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -301,6 +301,7 @@ class RPC: """ Returns current account balance per crypto """ output = [] total = 0.0 + tickers = self._freqtrade.exchange.get_tickers() for coin, balance in self._freqtrade.exchange.get_balances().items(): if not balance['total']: continue @@ -310,10 +311,11 @@ class RPC: else: try: pair = self._freqtrade.exchange.get_valid_pair_combination(coin, "BTC") + if pair.startswith("BTC"): - rate = 1.0 / self._freqtrade.get_sell_rate(pair, False) + rate = 1.0 / tickers.get(pair, {}).get('bid', 1) else: - rate = self._freqtrade.get_sell_rate(pair, False) + rate = tickers.get(pair, {}).get('bid', 1) except (TemporaryError, DependencyException): logger.warning(f" Could not get rate for pair {coin}.") continue From 62d50f512d82c9988897425b5013f718ae039f34 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 14 Nov 2019 20:12:41 +0100 Subject: [PATCH 1061/3421] add tests for balance from get-tickers --- freqtrade/rpc/rpc.py | 6 +++- tests/conftest.py | 50 +++++++++++++++++++++++++++++++-- tests/pairlist/test_pairlist.py | 16 +++++------ tests/rpc/test_rpc.py | 38 +++++++++---------------- tests/rpc/test_rpc_telegram.py | 23 ++------------- 5 files changed, 75 insertions(+), 58 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index f2851e0e1..e338cd6dd 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -301,7 +301,11 @@ class RPC: """ Returns current account balance per crypto """ output = [] total = 0.0 - tickers = self._freqtrade.exchange.get_tickers() + try: + tickers = self._freqtrade.exchange.get_tickers() + except (TemporaryError, DependencyException): + raise RPCException('Error getting current tickers.') + for coin, balance in self._freqtrade.exchange.get_balances().items(): if not balance['total']: continue diff --git a/tests/conftest.py b/tests/conftest.py index fbd23a0dc..bc6599e4d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -980,6 +980,28 @@ def tickers(): 'quoteVolume': 62.68220262, 'info': {} }, + 'BTC/USDT': { + 'symbol': 'BTC/USDT', + 'timestamp': 1573758371399, + 'datetime': '2019-11-14T19:06:11.399Z', + 'high': 8800.0, + 'low': 8582.6, + 'bid': 8648.16, + 'bidVolume': 0.238771, + 'ask': 8648.72, + 'askVolume': 0.016253, + 'vwap': 8683.13647806, + 'open': 8759.7, + 'close': 8648.72, + 'last': 8648.72, + 'previousClose': 8759.67, + 'change': -110.98, + 'percentage': -1.267, + 'average': None, + 'baseVolume': 35025.943355, + 'quoteVolume': 304135046.4242901, + 'info': {} + }, 'ETH/USDT': { 'symbol': 'ETH/USDT', 'timestamp': 1522014804118, @@ -1067,7 +1089,29 @@ def tickers(): 'baseVolume': 59698.79897, 'quoteVolume': 29132399.743954, 'info': {} - } + }, + 'XRP/BTC': { + 'symbol': 'XRP/BTC', + 'timestamp': 1573758257534, + 'datetime': '2019-11-14T19:04:17.534Z', + 'high': 3.126e-05, + 'low': 3.061e-05, + 'bid': 3.093e-05, + 'bidVolume': 27901.0, + 'ask': 3.095e-05, + 'askVolume': 10551.0, + 'vwap': 3.091e-05, + 'open': 3.119e-05, + 'close': 3.094e-05, + 'last': 3.094e-05, + 'previousClose': 3.117e-05, + 'change': -2.5e-07, + 'percentage': -0.802, + 'average': None, + 'baseVolume': 37334921.0, + 'quoteVolume': 1154.19266394, + 'info': {} + }, }) @@ -1317,8 +1361,8 @@ def rpc_balance(): 'used': 0.0 }, 'XRP': { - 'total': 1.0, - 'free': 1.0, + 'total': 0.1, + 'free': 0.01, 'used': 0.0 }, 'EUR': { diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 76537880c..460f2ddcf 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -100,7 +100,7 @@ def test_refresh_pairlist_dynamic(mocker, shitcoinmarkets, tickers, whitelist_co markets=PropertyMock(return_value=shitcoinmarkets), ) # argument: use the whitelist dynamically by exchange-volume - whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC', 'FUEL/BTC'] + whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC'] bot.pairlists.refresh_pairlist() assert whitelist == bot.pairlists.whitelist @@ -135,10 +135,10 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): @pytest.mark.parametrize("pairlists,base_currency,whitelist_result", [ ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'HOT/BTC', 'FUEL/BTC']), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC']), # Different sorting depending on quote or bid volume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], - "BTC", ['HOT/BTC', 'FUEL/BTC', 'LTC/BTC', 'TKN/BTC', 'ETH/BTC']), + "BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], "USDT", ['ETH/USDT']), # No pair for ETH ... @@ -146,19 +146,19 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): "ETH", []), # Precisionfilter and quote volume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, - {"method": "PrecisionFilter"}], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'FUEL/BTC']), + {"method": "PrecisionFilter"}], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), # Precisionfilter bid ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}, - {"method": "PrecisionFilter"}], "BTC", ['FUEL/BTC', 'LTC/BTC', 'TKN/BTC', 'ETH/BTC']), + {"method": "PrecisionFilter"}], "BTC", ['FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), # PriceFilter and VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PriceFilter", "low_price_ratio": 0.03}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'FUEL/BTC']), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), # Hot is removed by precision_filter, Fuel by low_price_filter. - ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, + ([{"method": "VolumePairList", "number_assets": 6, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}, {"method": "PriceFilter", "low_price_ratio": 0.02} - ], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC']), + ], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), # StaticPairlist Only ([{"method": "StaticPairList"}, ], "BTC", ['ETH/BTC', 'TKN/BTC']), diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index fb7a5276a..d745212ac 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -355,29 +355,18 @@ def test_rpc_balance_handle_error(default_conf, mocker): mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=mock_balance), - get_ticker=MagicMock(side_effect=TemporaryError('Could not load ticker due to xxx')) + get_tickers=MagicMock(side_effect=TemporaryError('Could not load ticker due to xxx')) ) freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) rpc._fiat_converter = CryptoToFiatConverter() - - result = rpc._rpc_balance(default_conf['fiat_display_currency']) - assert prec_satoshi(result['total'], 12) - assert prec_satoshi(result['value'], 180000) - assert 'USD' == result['symbol'] - assert result['currencies'] == [{ - 'currency': 'BTC', - 'free': 10.0, - 'balance': 12.0, - 'used': 2.0, - 'est_btc': 12.0, - }] - assert result['total'] == 12.0 + with pytest.raises(RPCException, match="Error getting current tickers."): + rpc._rpc_balance(default_conf['fiat_display_currency']) -def test_rpc_balance_handle(default_conf, mocker): +def test_rpc_balance_handle(default_conf, mocker, tickers): mock_balance = { 'BTC': { 'free': 10.0, @@ -389,7 +378,7 @@ def test_rpc_balance_handle(default_conf, mocker): 'total': 5.0, 'used': 4.0, }, - 'PAX': { + 'USDT': { 'free': 5.0, 'total': 10.0, 'used': 5.0, @@ -405,10 +394,9 @@ def test_rpc_balance_handle(default_conf, mocker): mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=mock_balance), - get_ticker=MagicMock( - side_effect=lambda p, r: {'bid': 100} if p == "BTC/PAX" else {'bid': 0.01}), + get_tickers=tickers, get_valid_pair_combination=MagicMock( - side_effect=lambda a, b: f"{b}/{a}" if a == "PAX" else f"{a}/{b}") + side_effect=lambda a, b: f"{b}/{a}" if a == "USDT" else f"{a}/{b}") ) freqtradebot = get_patched_freqtradebot(mocker, default_conf) @@ -417,8 +405,8 @@ def test_rpc_balance_handle(default_conf, mocker): rpc._fiat_converter = CryptoToFiatConverter() result = rpc._rpc_balance(default_conf['fiat_display_currency']) - assert prec_satoshi(result['total'], 12.15) - assert prec_satoshi(result['value'], 182250) + assert prec_satoshi(result['total'], 12.309096315) + assert prec_satoshi(result['value'], 184636.44472997) assert 'USD' == result['symbol'] assert result['currencies'] == [ {'currency': 'BTC', @@ -430,16 +418,16 @@ def test_rpc_balance_handle(default_conf, mocker): {'free': 1.0, 'balance': 5.0, 'currency': 'ETH', - 'est_btc': 0.05, + 'est_btc': 0.30794, 'used': 4.0 }, {'free': 5.0, 'balance': 10.0, - 'currency': 'PAX', - 'est_btc': 0.1, + 'currency': 'USDT', + 'est_btc': 0.0011563153318162476, 'used': 5.0} ] - assert result['total'] == 12.15 + assert result['total'] == 12.309096315331816 def test_rpc_start(mocker, default_conf) -> None: diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index a33ab8675..89fd90b0b 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -461,29 +461,10 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, assert '*Best Performing:* `ETH/BTC: 6.20%`' in msg_mock.call_args_list[-1][0][0] -def test_telegram_balance_handle(default_conf, update, mocker, rpc_balance) -> None: - - def mock_ticker(symbol, refresh): - if symbol == 'BTC/USDT': - return { - 'bid': 10000.00, - 'ask': 10000.00, - 'last': 10000.00, - } - elif symbol == 'XRP/BTC': - return { - 'bid': 0.00001, - 'ask': 0.00001, - 'last': 0.00001, - } - return { - 'bid': 0.1, - 'ask': 0.1, - 'last': 0.1, - } +def test_telegram_balance_handle(default_conf, update, mocker, rpc_balance, tickers) -> None: mocker.patch('freqtrade.exchange.Exchange.get_balances', return_value=rpc_balance) - mocker.patch('freqtrade.exchange.Exchange.get_ticker', side_effect=mock_ticker) + mocker.patch('freqtrade.exchange.Exchange.get_tickers', tickers) mocker.patch('freqtrade.exchange.Exchange.get_valid_pair_combination', side_effect=lambda a, b: f"{a}/{b}") From 1bf8d8cff320da2b8e05fd64102faaf33e786e2f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 15 Nov 2019 06:33:07 +0100 Subject: [PATCH 1062/3421] show /balance in stake currency --- freqtrade/rpc/api_server.py | 3 ++- freqtrade/rpc/rpc.py | 24 +++++++++++++----------- freqtrade/rpc/telegram.py | 7 ++++--- tests/rpc/test_rpc.py | 25 +++++++++++++++---------- tests/rpc/test_rpc_apiserver.py | 3 ++- tests/rpc/test_rpc_telegram.py | 3 ++- 6 files changed, 38 insertions(+), 27 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index f87165253..4baca7f22 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -354,7 +354,8 @@ class ApiServer(RPC): Returns the current status of the trades in json format """ - results = self._rpc_balance(self._config.get('fiat_display_currency', '')) + results = self._rpc_balance(self._config['stake_currency'], + self._config.get('fiat_display_currency', '')) return self.rest_dump(results) @require_login diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index e338cd6dd..137e72ea6 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -297,7 +297,7 @@ class RPC: 'best_rate': round(bp_rate * 100, 2), } - def _rpc_balance(self, fiat_display_currency: str) -> Dict: + def _rpc_balance(self, stake_currency: str, fiat_display_currency: str) -> Dict: """ Returns current account balance per crypto """ output = [] total = 0.0 @@ -310,27 +310,29 @@ class RPC: if not balance['total']: continue - if coin == 'BTC': + est_stake: float = 0 + if coin == stake_currency: rate = 1.0 + est_stake = balance['total'] else: try: - pair = self._freqtrade.exchange.get_valid_pair_combination(coin, "BTC") - - if pair.startswith("BTC"): - rate = 1.0 / tickers.get(pair, {}).get('bid', 1) - else: - rate = tickers.get(pair, {}).get('bid', 1) + pair = self._freqtrade.exchange.get_valid_pair_combination(coin, stake_currency) + rate = tickers.get(pair, {}).get('bid', None) + if rate: + if pair.startswith(stake_currency): + rate = 1.0 / rate + est_stake = rate * balance['total'] except (TemporaryError, DependencyException): logger.warning(f" Could not get rate for pair {coin}.") continue - est_btc: float = rate * balance['total'] - total = total + est_btc + total = total + (est_stake or 0) output.append({ 'currency': coin, 'free': balance['free'] if balance['free'] is not None else 0, 'balance': balance['total'] if balance['total'] is not None else 0, 'used': balance['used'] if balance['used'] is not None else 0, - 'est_btc': est_btc, + 'est_stake': est_stake or 0, + 'stake': stake_currency, }) if total == 0.0: if self._freqtrade.config.get('dry_run', False): diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 0547af7b0..2ae22f472 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -325,15 +325,16 @@ class Telegram(RPC): def _balance(self, update: Update, context: CallbackContext) -> None: """ Handler for /balance """ try: - result = self._rpc_balance(self._config.get('fiat_display_currency', '')) + result = self._rpc_balance(self._config['stake_currency'], + self._config.get('fiat_display_currency', '')) output = '' for currency in result['currencies']: - if currency['est_btc'] > 0.0001: + if currency['est_stake'] > 0.0001: curr_output = "*{currency}:*\n" \ "\t`Available: {free: .8f}`\n" \ "\t`Balance: {balance: .8f}`\n" \ "\t`Pending: {used: .8f}`\n" \ - "\t`Est. BTC: {est_btc: .8f}`\n".format(**currency) + "\t`Est. {stake}: {est_stake: .8f}`\n".format(**currency) else: curr_output = "*{currency}:* not showing <1$ amount \n".format(**currency) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index d745212ac..2c7228274 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -363,7 +363,7 @@ def test_rpc_balance_handle_error(default_conf, mocker): rpc = RPC(freqtradebot) rpc._fiat_converter = CryptoToFiatConverter() with pytest.raises(RPCException, match="Error getting current tickers."): - rpc._rpc_balance(default_conf['fiat_display_currency']) + rpc._rpc_balance(default_conf['stake_currency'], default_conf['fiat_display_currency']) def test_rpc_balance_handle(default_conf, mocker, tickers): @@ -404,28 +404,33 @@ def test_rpc_balance_handle(default_conf, mocker, tickers): rpc = RPC(freqtradebot) rpc._fiat_converter = CryptoToFiatConverter() - result = rpc._rpc_balance(default_conf['fiat_display_currency']) + result = rpc._rpc_balance(default_conf['stake_currency'], default_conf['fiat_display_currency']) assert prec_satoshi(result['total'], 12.309096315) assert prec_satoshi(result['value'], 184636.44472997) assert 'USD' == result['symbol'] assert result['currencies'] == [ {'currency': 'BTC', - 'free': 10.0, - 'balance': 12.0, - 'used': 2.0, - 'est_btc': 12.0, + 'free': 10.0, + 'balance': 12.0, + 'used': 2.0, + 'est_stake': 12.0, + 'stake': 'BTC', }, {'free': 1.0, 'balance': 5.0, 'currency': 'ETH', - 'est_btc': 0.30794, - 'used': 4.0 + 'est_stake': 0.30794, + 'used': 4.0, + 'stake': 'BTC', + }, {'free': 5.0, 'balance': 10.0, 'currency': 'USDT', - 'est_btc': 0.0011563153318162476, - 'used': 5.0} + 'est_stake': 0.0011563153318162476, + 'used': 5.0, + 'stake': 'BTC', + } ] assert result['total'] == 12.309096315331816 diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 8eff37023..4dc3fd265 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -256,7 +256,8 @@ def test_api_balance(botclient, mocker, rpc_balance): 'free': 12.0, 'balance': 12.0, 'used': 0.0, - 'est_btc': 12.0, + 'est_stake': 12.0, + 'stake': 'BTC', } diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 89fd90b0b..c848a3efd 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -545,7 +545,8 @@ def test_balance_handle_too_large_response(default_conf, update, mocker) -> None 'free': 1.0, 'used': 0.5, 'balance': i, - 'est_btc': 1 + 'est_stake': 1, + 'stake': 'BTC', }) mocker.patch('freqtrade.rpc.rpc.RPC._rpc_balance', return_value={ 'currencies': balances, From 50350a09cd494c802a1586cfaec9bf78ef876c4f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 24 Nov 2019 19:41:51 +0100 Subject: [PATCH 1063/3421] use wallets instead of doing a direct call to /balance --- freqtrade/rpc/rpc.py | 14 +++++++------- freqtrade/wallets.py | 5 ++++- tests/rpc/test_rpc_apiserver.py | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 137e72ea6..4cebe646e 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -306,14 +306,14 @@ class RPC: except (TemporaryError, DependencyException): raise RPCException('Error getting current tickers.') - for coin, balance in self._freqtrade.exchange.get_balances().items(): - if not balance['total']: + for coin, balance in self._freqtrade.wallets.get_all_balances().items(): + if not balance.total: continue est_stake: float = 0 if coin == stake_currency: rate = 1.0 - est_stake = balance['total'] + est_stake = balance.total else: try: pair = self._freqtrade.exchange.get_valid_pair_combination(coin, stake_currency) @@ -321,16 +321,16 @@ class RPC: if rate: if pair.startswith(stake_currency): rate = 1.0 / rate - est_stake = rate * balance['total'] + est_stake = rate * balance.total except (TemporaryError, DependencyException): logger.warning(f" Could not get rate for pair {coin}.") continue total = total + (est_stake or 0) output.append({ 'currency': coin, - 'free': balance['free'] if balance['free'] is not None else 0, - 'balance': balance['total'] if balance['total'] is not None else 0, - 'used': balance['used'] if balance['used'] is not None else 0, + 'free': balance.free if balance.free is not None else 0, + 'balance': balance.total if balance.total is not None else 0, + 'used': balance.used if balance.used is not None else 0, 'est_stake': est_stake or 0, 'stake': stake_currency, }) diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index 90b68c49d..c674b5286 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -2,7 +2,7 @@ """ Wallet """ import logging -from typing import Dict, NamedTuple +from typing import Dict, NamedTuple, Any from freqtrade.exchange import Exchange from freqtrade import constants @@ -72,3 +72,6 @@ class Wallets: ) logger.info('Wallets synced.') + + def get_all_balances(self) -> Dict[str, Any]: + return self._wallets diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 4dc3fd265..7b3e787f4 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -243,9 +243,9 @@ def test_api_balance(botclient, mocker, rpc_balance): 'last': 0.1, } mocker.patch('freqtrade.exchange.Exchange.get_balances', return_value=rpc_balance) - mocker.patch('freqtrade.exchange.Exchange.get_ticker', side_effect=mock_ticker) mocker.patch('freqtrade.exchange.Exchange.get_valid_pair_combination', side_effect=lambda a, b: f"{a}/{b}") + ftbot.wallets.update() rc = client_get(client, f"{BASE_URI}/balance") assert_response(rc) From 1b337fe5e1c1cc67752aa8af6b0bf7f612038d96 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 24 Nov 2019 19:47:20 +0100 Subject: [PATCH 1064/3421] Remove unnecessary code piece --- tests/rpc/test_rpc_apiserver.py | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 7b3e787f4..8d5b4a6b8 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -224,24 +224,6 @@ def test_api_stopbuy(botclient): def test_api_balance(botclient, mocker, rpc_balance): ftbot, client = botclient - def mock_ticker(symbol, refresh): - if symbol == 'BTC/USDT': - return { - 'bid': 10000.00, - 'ask': 10000.00, - 'last': 10000.00, - } - elif symbol == 'XRP/BTC': - return { - 'bid': 0.00001, - 'ask': 0.00001, - 'last': 0.00001, - } - return { - 'bid': 0.1, - 'ask': 0.1, - 'last': 0.1, - } mocker.patch('freqtrade.exchange.Exchange.get_balances', return_value=rpc_balance) mocker.patch('freqtrade.exchange.Exchange.get_valid_pair_combination', side_effect=lambda a, b: f"{a}/{b}") From a3415e52c0311e901be1267925ac26f23601ad0c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 23 Nov 2019 15:20:53 +0100 Subject: [PATCH 1065/3421] Fix some test-types --- tests/rpc/test_rpc.py | 2 +- tests/rpc/test_rpc_apiserver.py | 18 ++++++++++++------ tests/rpc/test_rpc_manager.py | 5 ++++- tests/rpc/test_rpc_telegram.py | 4 ++-- tests/rpc/test_rpc_webhook.py | 2 +- tests/test_freqtradebot.py | 11 ++++++----- 6 files changed, 26 insertions(+), 16 deletions(-) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index fb7a5276a..0e8588aea 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -697,8 +697,8 @@ def test_rpcforcebuy(mocker, default_conf, ticker, fee, limit_buy_order) -> None pair = 'XRP/BTC' # Test not buying - default_conf['stake_amount'] = 0.0000001 freqtradebot = get_patched_freqtradebot(mocker, default_conf) + freqtradebot.config['stake_amount'] = 0.0000001 patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) pair = 'TKN/BTC' diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 8eff37023..a59fd1942 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -23,7 +23,7 @@ _TEST_PASS = "SuperSecurePassword1!" def botclient(default_conf, mocker): default_conf.update({"api_server": {"enabled": True, "listen_ip_address": "127.0.0.1", - "listen_port": "8080", + "listen_port": 8080, "username": _TEST_USER, "password": _TEST_PASS, }}) @@ -133,7 +133,10 @@ def test_api__init__(default_conf, mocker): def test_api_run(default_conf, mocker, caplog): default_conf.update({"api_server": {"enabled": True, "listen_ip_address": "127.0.0.1", - "listen_port": "8080"}}) + "listen_port": 8080, + "username": "TestUser", + "password": "testPass", + }}) mocker.patch('freqtrade.rpc.telegram.Updater', MagicMock()) mocker.patch('freqtrade.rpc.api_server.threading.Thread', MagicMock()) @@ -146,7 +149,7 @@ def test_api_run(default_conf, mocker, caplog): apiserver.run() assert server_mock.call_count == 1 assert server_mock.call_args_list[0][0][0] == "127.0.0.1" - assert server_mock.call_args_list[0][0][1] == "8080" + assert server_mock.call_args_list[0][0][1] == 8080 assert isinstance(server_mock.call_args_list[0][0][2], Flask) assert hasattr(apiserver, "srv") @@ -158,14 +161,14 @@ def test_api_run(default_conf, mocker, caplog): server_mock.reset_mock() apiserver._config.update({"api_server": {"enabled": True, "listen_ip_address": "0.0.0.0", - "listen_port": "8089", + "listen_port": 8089, "password": "", }}) apiserver.run() assert server_mock.call_count == 1 assert server_mock.call_args_list[0][0][0] == "0.0.0.0" - assert server_mock.call_args_list[0][0][1] == "8089" + assert server_mock.call_args_list[0][0][1] == 8089 assert isinstance(server_mock.call_args_list[0][0][2], Flask) assert log_has("Starting HTTP Server at 0.0.0.0:8089", caplog) assert log_has("Starting Local Rest Server.", caplog) @@ -186,7 +189,10 @@ def test_api_run(default_conf, mocker, caplog): def test_api_cleanup(default_conf, mocker, caplog): default_conf.update({"api_server": {"enabled": True, "listen_ip_address": "127.0.0.1", - "listen_port": "8080"}}) + "listen_port": 8080, + "username": "TestUser", + "password": "testPass", + }}) mocker.patch('freqtrade.rpc.telegram.Updater', MagicMock()) mocker.patch('freqtrade.rpc.api_server.threading.Thread', MagicMock()) mocker.patch('freqtrade.rpc.api_server.make_server', MagicMock()) diff --git a/tests/rpc/test_rpc_manager.py b/tests/rpc/test_rpc_manager.py index c9fbf8c3b..edf6bae4d 100644 --- a/tests/rpc/test_rpc_manager.py +++ b/tests/rpc/test_rpc_manager.py @@ -173,7 +173,10 @@ def test_init_apiserver_enabled(mocker, default_conf, caplog) -> None: default_conf["telegram"]["enabled"] = False default_conf["api_server"] = {"enabled": True, "listen_ip_address": "127.0.0.1", - "listen_port": "8080"} + "listen_port": 8080, + "username": "TestUser", + "password": "TestPass", + } rpc_manager = RPCManager(get_patched_freqtradebot(mocker, default_conf)) # Sleep to allow the thread to start diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index a33ab8675..f69c2ac38 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -144,9 +144,9 @@ def test_authorized_only_exception(default_conf, mocker, caplog) -> None: def test_status(default_conf, update, mocker, fee, ticker,) -> None: - update.message.chat.id = 123 + update.message.chat.id = "123" default_conf['telegram']['enabled'] = False - default_conf['telegram']['chat_id'] = 123 + default_conf['telegram']['chat_id'] = "123" mocker.patch.multiple( 'freqtrade.exchange.Exchange', diff --git a/tests/rpc/test_rpc_webhook.py b/tests/rpc/test_rpc_webhook.py index dbbc4cefb..c066aa8e7 100644 --- a/tests/rpc/test_rpc_webhook.py +++ b/tests/rpc/test_rpc_webhook.py @@ -113,7 +113,7 @@ def test_send_msg(default_conf, mocker): def test_exception_send_msg(default_conf, mocker, caplog): default_conf["webhook"] = get_webhook_dict() - default_conf["webhook"]["webhookbuy"] = None + del default_conf["webhook"]["webhookbuy"] webhook = Webhook(get_patched_freqtradebot(mocker, default_conf)) webhook.send_msg({'type': RPCMessageType.BUY_NOTIFICATION}) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index b01c8e247..76a50f0f4 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -299,7 +299,7 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, limit_buy_order, fee) -> None: patch_RPCManager(mocker) patch_exchange(mocker) - default_conf['stake_amount'] = 0.0000098751 + default_conf['stake_amount'] = 0.0098751 default_conf['max_open_trades'] = 2 mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -313,7 +313,7 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, trade = Trade.query.first() assert trade is not None - assert trade.stake_amount == 0.0000098751 + assert trade.stake_amount == 0.0098751 assert trade.is_open assert trade.open_date is not None @@ -321,11 +321,11 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, trade = Trade.query.order_by(Trade.id.desc()).first() assert trade is not None - assert trade.stake_amount == 0.0000098751 + assert trade.stake_amount == 0.0098751 assert trade.is_open assert trade.open_date is not None - assert Trade.total_open_trades_stakes() == 1.97502e-05 + assert Trade.total_open_trades_stakes() == 1.97502e-02 def test_get_min_pair_stake_amount(mocker, default_conf) -> None: @@ -522,8 +522,9 @@ def test_create_trades_too_small_stake_amount(default_conf, ticker, limit_buy_or get_fee=fee, ) - default_conf['stake_amount'] = 0.000000005 freqtrade = FreqtradeBot(default_conf) + freqtrade.config['stake_amount'] = 0.000000005 + patch_get_signal(freqtrade) assert not freqtrade.create_trades() From 4dc0631a4b8aa8e65ca7d85690f3e5b6dd560211 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 23 Nov 2019 15:41:09 +0100 Subject: [PATCH 1066/3421] Lower minimum tradeable value --- freqtrade/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index bf5d822c6..c16850c38 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -71,7 +71,7 @@ CONF_SCHEMA = { 'stake_currency': {'type': 'string', 'enum': ['BTC', 'XBT', 'ETH', 'USDT', 'EUR', 'USD']}, 'stake_amount': { "type": ["number", "string"], - "minimum": 0.0005, + "minimum": 0.0001, "pattern": UNLIMITED_STAKE_AMOUNT }, 'fiat_display_currency': {'type': 'string', 'enum': SUPPORTED_FIAT}, From af3eea38055acdcf533f9810d282205bc315399e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 23 Nov 2019 15:49:46 +0100 Subject: [PATCH 1067/3421] Move config json validation to after strategy loading Otherwise attributes are mandatory in configuration while they could be set in the strategy --- freqtrade/configuration/config_validation.py | 5 +++++ freqtrade/configuration/configuration.py | 8 -------- freqtrade/optimize/backtesting.py | 5 ++++- freqtrade/optimize/edge_cli.py | 5 ++++- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 8a7641a08..bfba59385 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -61,6 +61,11 @@ def validate_config_consistency(conf: Dict[str, Any]) -> None: :param conf: Config in JSON format :return: Returns None if everything is ok, otherwise throw an OperationalException """ + + # validate configuration before returning + logger.info('Validating configuration ...') + validate_config_schema(conf) + # validating trailing stoploss _validate_trailing_stoploss(conf) _validate_edge(conf) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 93eee3912..277bf8da9 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -9,8 +9,6 @@ from typing import Any, Callable, Dict, List, Optional from freqtrade import OperationalException, constants from freqtrade.configuration.check_exchange import check_exchange -from freqtrade.configuration.config_validation import (validate_config_consistency, - validate_config_schema) from freqtrade.configuration.deprecated_settings import process_temporary_deprecated_settings from freqtrade.configuration.directory_operations import (create_datadir, create_userdata_dir) @@ -84,10 +82,6 @@ class Configuration: if 'pairlists' not in config: config['pairlists'] = [] - # validate configuration before returning - logger.info('Validating configuration ...') - validate_config_schema(config) - return config def load_config(self) -> Dict[str, Any]: @@ -118,8 +112,6 @@ class Configuration: process_temporary_deprecated_settings(config) - validate_config_consistency(config) - return config def _process_logging_options(self, config: Dict[str, Any]) -> None: diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 2c2d116a4..d9fb1f2d1 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -13,7 +13,8 @@ from pandas import DataFrame from tabulate import tabulate from freqtrade import OperationalException -from freqtrade.configuration import TimeRange, remove_credentials +from freqtrade.configuration import (TimeRange, remove_credentials, + validate_config_consistency) from freqtrade.data import history from freqtrade.data.dataprovider import DataProvider from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds @@ -75,10 +76,12 @@ class Backtesting: stratconf = deepcopy(self.config) stratconf['strategy'] = strat self.strategylist.append(StrategyResolver(stratconf).strategy) + validate_config_consistency(stratconf) else: # No strategy list specified, only one strategy self.strategylist.append(StrategyResolver(self.config).strategy) + validate_config_consistency(self.config) if "ticker_interval" not in self.config: raise OperationalException("Ticker-interval needs to be set in either configuration " diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py index 5a4543884..a667ebb92 100644 --- a/freqtrade/optimize/edge_cli.py +++ b/freqtrade/optimize/edge_cli.py @@ -9,7 +9,8 @@ from typing import Any, Dict from tabulate import tabulate from freqtrade import constants -from freqtrade.configuration import TimeRange, remove_credentials +from freqtrade.configuration import (TimeRange, remove_credentials, + validate_config_consistency) from freqtrade.edge import Edge from freqtrade.exchange import Exchange from freqtrade.resolvers import StrategyResolver @@ -35,6 +36,8 @@ class EdgeCli: self.exchange = Exchange(self.config) self.strategy = StrategyResolver(self.config).strategy + validate_config_consistency(self.config) + self.edge = Edge(config, self.exchange, self.strategy) # Set refresh_pairs to false for edge-cli (it must be true for edge) self.edge._refresh_pairs = False From 8d002a8f28cadf73df6f496bf3b2f0e29cfa3870 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 23 Nov 2019 15:50:23 +0100 Subject: [PATCH 1068/3421] Fix some more tests --- tests/pairlist/test_pairlist.py | 5 ----- tests/test_configuration.py | 4 ---- 2 files changed, 9 deletions(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 76537880c..32d66d3e8 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -285,12 +285,7 @@ def test_volumepairlist_caching(mocker, markets, whitelist_conf, tickers): def test_pairlistmanager_no_pairlist(mocker, markets, whitelist_conf, caplog): - del whitelist_conf['pairlists'][0]['method'] mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) - with pytest.raises(OperationalException, - match=r"No Pairlist defined!"): - get_patched_freqtradebot(mocker, whitelist_conf) - assert log_has_re("No method in .*", caplog) whitelist_conf['pairlists'] = [] diff --git a/tests/test_configuration.py b/tests/test_configuration.py index e971d15ab..e50ba99ee 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -100,7 +100,6 @@ def test_load_config_max_open_trades_zero(default_conf, mocker, caplog) -> None: assert validated_conf['max_open_trades'] == 0 assert 'internals' in validated_conf - assert log_has('Validating configuration ...', caplog) def test_load_config_combine_dicts(default_conf, mocker, caplog) -> None: @@ -132,7 +131,6 @@ def test_load_config_combine_dicts(default_conf, mocker, caplog) -> None: assert validated_conf['exchange']['pair_whitelist'] == conf2['exchange']['pair_whitelist'] assert 'internals' in validated_conf - assert log_has('Validating configuration ...', caplog) def test_from_config(default_conf, mocker, caplog) -> None: @@ -159,7 +157,6 @@ def test_from_config(default_conf, mocker, caplog) -> None: assert validated_conf['exchange']['pair_whitelist'] == conf2['exchange']['pair_whitelist'] assert validated_conf['fiat_display_currency'] == "EUR" assert 'internals' in validated_conf - assert log_has('Validating configuration ...', caplog) assert isinstance(validated_conf['user_data_dir'], Path) @@ -191,7 +188,6 @@ def test_load_config_max_open_trades_minus_one(default_conf, mocker, caplog) -> assert validated_conf['max_open_trades'] > 999999999 assert validated_conf['max_open_trades'] == float('inf') - assert log_has('Validating configuration ...', caplog) assert "runmode" in validated_conf assert validated_conf['runmode'] == RunMode.DRY_RUN From e7be742c58c9d4e1e3b15e7e4dc8f6979b96836a Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 25 Nov 2019 07:05:18 +0100 Subject: [PATCH 1069/3421] Run validation after custom validations --- freqtrade/configuration/config_validation.py | 8 ++++---- freqtrade/constants.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index bfba59385..4bfd24677 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -62,15 +62,15 @@ def validate_config_consistency(conf: Dict[str, Any]) -> None: :return: Returns None if everything is ok, otherwise throw an OperationalException """ - # validate configuration before returning - logger.info('Validating configuration ...') - validate_config_schema(conf) - # validating trailing stoploss _validate_trailing_stoploss(conf) _validate_edge(conf) _validate_whitelist(conf) + # validate configuration before returning + logger.info('Validating configuration ...') + validate_config_schema(conf) + def _validate_trailing_stoploss(conf: Dict[str, Any]) -> None: diff --git a/freqtrade/constants.py b/freqtrade/constants.py index c16850c38..22dcc9755 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -66,7 +66,7 @@ MINIMAL_CONFIG = { CONF_SCHEMA = { 'type': 'object', 'properties': { - 'max_open_trades': {'type': 'integer', 'minimum': -1}, + 'max_open_trades': {'type': ['integer', 'number'], 'minimum': -1}, 'ticker_interval': {'type': 'string', 'enum': TIMEFRAMES}, 'stake_currency': {'type': 'string', 'enum': ['BTC', 'XBT', 'ETH', 'USDT', 'EUR', 'USD']}, 'stake_amount': { From 646a9d12b20604a5536800af2a34ed667147f56f Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 25 Nov 2019 07:06:55 +0100 Subject: [PATCH 1070/3421] Align quoting of json schema --- freqtrade/constants.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 22dcc9755..58eb304a9 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -70,9 +70,9 @@ CONF_SCHEMA = { 'ticker_interval': {'type': 'string', 'enum': TIMEFRAMES}, 'stake_currency': {'type': 'string', 'enum': ['BTC', 'XBT', 'ETH', 'USDT', 'EUR', 'USD']}, 'stake_amount': { - "type": ["number", "string"], - "minimum": 0.0001, - "pattern": UNLIMITED_STAKE_AMOUNT + 'type': ['number', 'string'], + 'minimum': 0.0001, + 'pattern': UNLIMITED_STAKE_AMOUNT }, 'fiat_display_currency': {'type': 'string', 'enum': SUPPORTED_FIAT}, 'dry_run': {'type': 'boolean'}, @@ -197,8 +197,8 @@ CONF_SCHEMA = { 'listen_ip_address': {'format': 'ipv4'}, 'listen_port': { 'type': 'integer', - "minimum": 1024, - "maximum": 65535 + 'minimum': 1024, + 'maximum': 65535 }, 'username': {'type': 'string'}, 'password': {'type': 'string'}, @@ -253,19 +253,19 @@ CONF_SCHEMA = { 'edge': { 'type': 'object', 'properties': { - "enabled": {'type': 'boolean'}, - "process_throttle_secs": {'type': 'integer', 'minimum': 600}, - "calculate_since_number_of_days": {'type': 'integer'}, - "allowed_risk": {'type': 'number'}, - "capital_available_percentage": {'type': 'number'}, - "stoploss_range_min": {'type': 'number'}, - "stoploss_range_max": {'type': 'number'}, - "stoploss_range_step": {'type': 'number'}, - "minimum_winrate": {'type': 'number'}, - "minimum_expectancy": {'type': 'number'}, - "min_trade_number": {'type': 'number'}, - "max_trade_duration_minute": {'type': 'integer'}, - "remove_pumps": {'type': 'boolean'} + 'enabled': {'type': 'boolean'}, + 'process_throttle_secs': {'type': 'integer', 'minimum': 600}, + 'calculate_since_number_of_days': {'type': 'integer'}, + 'allowed_risk': {'type': 'number'}, + 'capital_available_percentage': {'type': 'number'}, + 'stoploss_range_min': {'type': 'number'}, + 'stoploss_range_max': {'type': 'number'}, + 'stoploss_range_step': {'type': 'number'}, + 'minimum_winrate': {'type': 'number'}, + 'minimum_expectancy': {'type': 'number'}, + 'min_trade_number': {'type': 'number'}, + 'max_trade_duration_minute': {'type': 'integer'}, + 'remove_pumps': {'type': 'boolean'} }, 'required': ['process_throttle_secs', 'allowed_risk', 'capital_available_percentage'] } From 0775ac081a05a32446bcab3d30420b2874da1b63 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 25 Nov 2019 07:12:30 +0100 Subject: [PATCH 1071/3421] Cleanup constants and required --- freqtrade/constants.py | 2 +- freqtrade/rpc/api_server.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 58eb304a9..b485ba0d8 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -6,7 +6,6 @@ bot constants DEFAULT_CONFIG = 'config.json' DEFAULT_EXCHANGE = 'bittrex' PROCESS_THROTTLE_SECS = 5 # sec -DEFAULT_TICKER_INTERVAL = 5 # min HYPEROPT_EPOCH = 100 # epochs RETRY_TIMEOUT = 30 # sec DEFAULT_HYPEROPT_LOSS = 'DefaultHyperOptLoss' @@ -280,5 +279,6 @@ CONF_SCHEMA = { 'dry_run', 'bid_strategy', 'unfilledtimeout', + 'stoploss', ] } diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index f87165253..1ec8cc305 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -312,7 +312,7 @@ class ApiServer(RPC): logger.info("LocalRPC - Profit Command Called") stats = self._rpc_trade_statistics(self._config['stake_currency'], - self._config['fiat_display_currency'] + self._config.get('fiat_display_currency') ) return self.rest_dump(stats) From d1511a108577629b8df45e36d185ffabeb5e29b1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 25 Nov 2019 07:12:39 +0100 Subject: [PATCH 1072/3421] Update some config documentation --- docs/configuration.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index f913d7dbb..bf7c07268 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -40,12 +40,12 @@ Mandatory parameters are marked as **Required**, which means that they are requi | Command | Default | Description | |----------|---------|-------------| -| `max_open_trades` | 3 | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades) -| `stake_currency` | BTC | **Required.** Crypto-currency used for trading. -| `stake_amount` | 0.05 | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance. +| `max_open_trades` | | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades) +| `stake_currency` | | **Required.** Crypto-currency used for trading. +| `stake_amount` | | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance. | `amount_reserve_percent` | 0.05 | Reserve some amount in min pair stake amount. Default is 5%. The bot will reserve `amount_reserve_percent` + stop-loss value when calculating min pair stake amount in order to avoid possible trade refusals. -| `ticker_interval` | [1m, 5m, 15m, 30m, 1h, 1d, ...] | The ticker interval to use (1min, 5 min, 15 min, 30 min, 1 hour or 1 day). Default is 5 minutes. [Strategy Override](#parameters-in-the-strategy). -| `fiat_display_currency` | USD | **Required.** Fiat currency used to show your profits. More information below. +| `ticker_interval` | 5m | The ticker interval to use (1min, 5 min, 15 min, 30 min, 1 hour or 1 day). Default is 5 minutes. [Strategy Override](#parameters-in-the-strategy). +| `fiat_display_currency` | | Fiat currency used to show your profits. More information below. | `dry_run` | true | **Required.** Define if the bot must be in Dry-run or production mode. | `dry_run_wallet` | 999.9 | Overrides the default amount of 999.9 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason. | `process_only_new_candles` | false | If set to true indicators are processed only once a new candle arrives. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy). @@ -94,8 +94,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `db_url` | `sqlite:///tradesv3.sqlite`| Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `True`. | `initial_state` | running | Defines the initial application state. More information below. | `forcebuy_enable` | false | Enables the RPC Commands to force a buy. More information below. -| `strategy` | None | **Required** Defines Strategy class to use. Recommended to set via `--strategy NAME`. -| `strategy_path` | null | Adds an additional strategy lookup path (must be a directory). +| `strategy` | | **Required** Defines Strategy class to use. Recommended to set via `--strategy NAME`. +| `strategy_path` | | Adds an additional strategy lookup path (must be a directory). | `internals.process_throttle_secs` | 5 | **Required.** Set the process throttle. Value in second. | `internals.heartbeat_interval` | 60 | Print heartbeat message every X seconds. Set to 0 to disable heartbeat messages. | `internals.sd_notify` | false | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. From 6ab7f93ce766ac708ea8b29919633dc5a156631d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2019 07:20:40 +0000 Subject: [PATCH 1073/3421] Bump scipy from 1.3.2 to 1.3.3 Bumps [scipy](https://github.com/scipy/scipy) from 1.3.2 to 1.3.3. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.3.2...v1.3.3) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index ff8de9cb2..96a22b42e 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -2,7 +2,7 @@ -r requirements.txt # Required for hyperopt -scipy==1.3.2 +scipy==1.3.3 scikit-learn==0.21.3 scikit-optimize==0.5.2 filelock==3.0.12 From 28f73ecb3d02802f586cc27f15cbaed30769c886 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2019 07:21:16 +0000 Subject: [PATCH 1074/3421] Bump ccxt from 1.19.54 to 1.19.86 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.19.54 to 1.19.86. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.19.54...1.19.86) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 2c176e9c3..ec6224c50 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.19.54 +ccxt==1.19.86 SQLAlchemy==1.3.11 python-telegram-bot==12.2.0 arrow==0.15.4 From 0a7a1290e3ba062deeacba3205141fc763a04cf1 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2019 07:21:32 +0000 Subject: [PATCH 1075/3421] Bump pytest-mock from 1.11.2 to 1.12.1 Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.11.2 to 1.12.1. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v1.11.2...v1.12.1) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 297b95623..34b52c963 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,7 +11,7 @@ mypy==0.740 pytest==5.2.4 pytest-asyncio==0.10.0 pytest-cov==2.8.1 -pytest-mock==1.11.2 +pytest-mock==1.12.1 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents From 03f02294d1b351b415431cac82deed633b0cda60 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2019 07:21:52 +0000 Subject: [PATCH 1076/3421] Bump pytest from 5.2.4 to 5.3.0 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.2.4 to 5.3.0. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.2.4...5.3.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 297b95623..2dc8c88d9 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==3.1.0 mypy==0.740 -pytest==5.2.4 +pytest==5.3.0 pytest-asyncio==0.10.0 pytest-cov==2.8.1 pytest-mock==1.11.2 From 418ca0030521d5d1d827c12c348820aefd545e83 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2019 07:22:09 +0000 Subject: [PATCH 1077/3421] Bump jsonschema from 3.1.1 to 3.2.0 Bumps [jsonschema](https://github.com/Julian/jsonschema) from 3.1.1 to 3.2.0. - [Release notes](https://github.com/Julian/jsonschema/releases) - [Changelog](https://github.com/Julian/jsonschema/blob/master/CHANGELOG.rst) - [Commits](https://github.com/Julian/jsonschema/compare/v3.1.1...v3.2.0) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 2c176e9c3..8f6c7e3d6 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -8,7 +8,7 @@ cachetools==3.1.1 requests==2.22.0 urllib3==1.25.7 wrapt==1.11.2 -jsonschema==3.1.1 +jsonschema==3.2.0 TA-Lib==0.4.17 tabulate==0.8.6 coinmarketcap==5.0.3 From e7c17df844d08656de128d0baf2e83276f5a71e6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 25 Nov 2019 12:56:05 +0100 Subject: [PATCH 1078/3421] validate defaults in documentation --- docs/configuration.md | 58 +++++++++++++++++++++--------------------- freqtrade/constants.py | 4 +-- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index bf7c07268..68ecd4629 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -40,67 +40,67 @@ Mandatory parameters are marked as **Required**, which means that they are requi | Command | Default | Description | |----------|---------|-------------| -| `max_open_trades` | | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades) +| `max_open_trades` | | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades) | `stake_currency` | | **Required.** Crypto-currency used for trading. | `stake_amount` | | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance. | `amount_reserve_percent` | 0.05 | Reserve some amount in min pair stake amount. Default is 5%. The bot will reserve `amount_reserve_percent` + stop-loss value when calculating min pair stake amount in order to avoid possible trade refusals. -| `ticker_interval` | 5m | The ticker interval to use (1min, 5 min, 15 min, 30 min, 1 hour or 1 day). Default is 5 minutes. [Strategy Override](#parameters-in-the-strategy). +| `ticker_interval` | | The ticker interval to use (1min, 5 min, 15 min, 30 min, 1 hour or 1 day). Default is 5 minutes. [Strategy Override](#parameters-in-the-strategy). | `fiat_display_currency` | | Fiat currency used to show your profits. More information below. | `dry_run` | true | **Required.** Define if the bot must be in Dry-run or production mode. -| `dry_run_wallet` | 999.9 | Overrides the default amount of 999.9 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason. +| `dry_run_wallet` | | Overrides the default amount of 999.9 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason. | `process_only_new_candles` | false | If set to true indicators are processed only once a new candle arrives. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy). -| `minimal_roi` | See below | Set the threshold in percent the bot will use to sell a trade. More information below. [Strategy Override](#parameters-in-the-strategy). -| `stoploss` | -0.10 | Value of the stoploss in percent used by the bot. More information below. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `minimal_roi` | | **Required.** Set the threshold in percent the bot will use to sell a trade. More information below. [Strategy Override](#parameters-in-the-strategy). +| `stoploss` | | **Required.** Value of the stoploss in percent used by the bot. More information below. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). | `trailing_stop` | false | Enables trailing stop-loss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). | `trailing_stop_positive` | 0 | Changes stop-loss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). | `trailing_stop_positive_offset` | 0 | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). | `trailing_only_offset_is_reached` | false | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `unfilledtimeout.buy` | 10 | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. -| `unfilledtimeout.sell` | 10 | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. -| `bid_strategy.ask_last_balance` | 0.0 | **Required.** Set the bidding price. More information [below](#understand-ask_last_balance). +| `unfilledtimeout.buy` | | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. +| `unfilledtimeout.sell` | | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. +| `bid_strategy.ask_last_balance` | | **Required.** Set the bidding price. More information [below](#understand-ask_last_balance). | `bid_strategy.use_order_book` | false | Allows buying of pair using the rates in Order Book Bids. -| `bid_strategy.order_book_top` | 0 | Bot will use the top N rate in Order Book Bids. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids. +| `bid_strategy.order_book_top` | 1 | Bot will use the top N rate in Order Book Bids. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids. | `bid_strategy. check_depth_of_market.enabled` | false | Does not buy if the % difference of buy orders and sell orders is met in Order Book. | `bid_strategy. check_depth_of_market.bids_to_ask_delta` | 0 | The % difference of buy orders and sell orders found in Order Book. A value lesser than 1 means sell orders is greater, while value greater than 1 means buy orders is higher. | `ask_strategy.use_order_book` | false | Allows selling of open traded pair using the rates in Order Book Asks. -| `ask_strategy.order_book_min` | 0 | Bot will scan from the top min to max Order Book Asks searching for a profitable rate. -| `ask_strategy.order_book_max` | 0 | Bot will scan from the top min to max Order Book Asks searching for a profitable rate. +| `ask_strategy.order_book_min` | 1 | Bot will scan from the top min to max Order Book Asks searching for a profitable rate. +| `ask_strategy.order_book_max` | 1 | Bot will scan from the top min to max Order Book Asks searching for a profitable rate. | `ask_strategy.use_sell_signal` | true | Use sell signals produced by the strategy in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy). | `ask_strategy.sell_profit_only` | false | Wait until the bot makes a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy). | `ask_strategy.ignore_roi_if_buy_signal` | false | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy). -| `order_types` | None | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy). -| `order_time_in_force` | None | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy). -| `exchange.name` | | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename). +| `order_types` | | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy). +| `order_time_in_force` | | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy). +| `exchange.name` | | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename). | `exchange.sandbox` | false | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details. -| `exchange.key` | '' | API key to use for the exchange. Only required when you are in production mode. ***Keep it in secrete, do not disclose publicly.*** -| `exchange.secret` | '' | API secret to use for the exchange. Only required when you are in production mode. ***Keep it in secrete, do not disclose publicly.*** -| `exchange.password` | '' | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. ***Keep it in secrete, do not disclose publicly.*** +| `exchange.key` | | API key to use for the exchange. Only required when you are in production mode. ***Keep it in secrete, do not disclose publicly.*** +| `exchange.secret` | | API secret to use for the exchange. Only required when you are in production mode. ***Keep it in secrete, do not disclose publicly.*** +| `exchange.password` | | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. ***Keep it in secrete, do not disclose publicly.*** | `exchange.pair_whitelist` | [] | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)). | `exchange.pair_blacklist` | [] | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)). -| `exchange.ccxt_config` | None | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) -| `exchange.ccxt_async_config` | None | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) +| `exchange.ccxt_config` | | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) +| `exchange.ccxt_async_config` | | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) | `exchange.markets_refresh_interval` | 60 | The interval in minutes in which markets are reloaded. -| `edge` | false | Please refer to [edge configuration document](edge.md) for detailed explanation. +| `edge.*` | | Please refer to [edge configuration document](edge.md) for detailed explanation. | `experimental.block_bad_exchanges` | true | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now. | `pairlists` | StaticPairList | Define one or more pairlists to be used. [More information below](#dynamic-pairlists). -| `telegram.enabled` | true | **Required.** Enable or not the usage of Telegram. -| `telegram.token` | token | Your Telegram bot token. Only required if `telegram.enabled` is `true`. ***Keep it in secrete, do not disclose publicly.*** -| `telegram.chat_id` | chat_id | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. ***Keep it in secrete, do not disclose publicly.*** +| `telegram.enabled` | | Enable the usage of Telegram. +| `telegram.token` | | Your Telegram bot token. Only required if `telegram.enabled` is `true`. ***Keep it in secrete, do not disclose publicly.*** +| `telegram.chat_id` | | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. ***Keep it in secrete, do not disclose publicly.*** | `webhook.enabled` | false | Enable usage of Webhook notifications -| `webhook.url` | false | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. -| `webhook.webhookbuy` | false | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. -| `webhook.webhooksell` | false | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. -| `webhook.webhookstatus` | false | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. +| `webhook.url` | | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. +| `webhook.webhookbuy` | | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. +| `webhook.webhooksell` | | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. +| `webhook.webhookstatus` | | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. | `db_url` | `sqlite:///tradesv3.sqlite`| Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `True`. | `initial_state` | running | Defines the initial application state. More information below. | `forcebuy_enable` | false | Enables the RPC Commands to force a buy. More information below. | `strategy` | | **Required** Defines Strategy class to use. Recommended to set via `--strategy NAME`. | `strategy_path` | | Adds an additional strategy lookup path (must be a directory). -| `internals.process_throttle_secs` | 5 | **Required.** Set the process throttle. Value in second. +| `internals.process_throttle_secs` | 5 | Set the process throttle. Value in second. | `internals.heartbeat_interval` | 60 | Print heartbeat message every X seconds. Set to 0 to disable heartbeat messages. | `internals.sd_notify` | false | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. | `logfile` | | Specify Logfile. Uses a rolling strategy of 10 files, with 1Mb per file. -| `user_data_dir` | cwd()/user_data | Directory containing user data. Defaults to `./user_data/`. +| `user_data_dir` | | Directory containing user data. Defaults to `./user_data/`. ### Parameters in the strategy diff --git a/freqtrade/constants.py b/freqtrade/constants.py index b485ba0d8..f6e08bc36 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -93,8 +93,8 @@ CONF_SCHEMA = { 'unfilledtimeout': { 'type': 'object', 'properties': { - 'buy': {'type': 'number', 'minimum': 3}, - 'sell': {'type': 'number', 'minimum': 10} + 'buy': {'type': 'number', 'minimum': 1}, + 'sell': {'type': 'number', 'minimum': 1} } }, 'bid_strategy': { From 37f698d9c1269d5b817a2a52b01d25b4f32450e2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 25 Nov 2019 14:20:41 +0100 Subject: [PATCH 1079/3421] move default values to Description field --- docs/configuration.md | 72 +++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 68ecd4629..5241eaab9 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -43,62 +43,62 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `max_open_trades` | | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades) | `stake_currency` | | **Required.** Crypto-currency used for trading. | `stake_amount` | | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance. -| `amount_reserve_percent` | 0.05 | Reserve some amount in min pair stake amount. Default is 5%. The bot will reserve `amount_reserve_percent` + stop-loss value when calculating min pair stake amount in order to avoid possible trade refusals. +| `amount_reserve_percent` | | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stop-loss value when calculating min pair stake amount in order to avoid possible trade refusals. *Defaults to `0.05` (5%).* | `ticker_interval` | | The ticker interval to use (1min, 5 min, 15 min, 30 min, 1 hour or 1 day). Default is 5 minutes. [Strategy Override](#parameters-in-the-strategy). | `fiat_display_currency` | | Fiat currency used to show your profits. More information below. -| `dry_run` | true | **Required.** Define if the bot must be in Dry-run or production mode. +| `dry_run` | | **Required.** Define if the bot must be in Dry-run or production mode. *Defaults to `true`.* | `dry_run_wallet` | | Overrides the default amount of 999.9 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason. -| `process_only_new_candles` | false | If set to true indicators are processed only once a new candle arrives. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy). +| `process_only_new_candles` | | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. *Defaults to `false`.* [Strategy Override](#parameters-in-the-strategy). | `minimal_roi` | | **Required.** Set the threshold in percent the bot will use to sell a trade. More information below. [Strategy Override](#parameters-in-the-strategy). | `stoploss` | | **Required.** Value of the stoploss in percent used by the bot. More information below. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_stop` | false | Enables trailing stop-loss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_stop_positive` | 0 | Changes stop-loss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_stop_positive_offset` | 0 | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_only_offset_is_reached` | false | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `trailing_stop` | | Enables trailing stop-loss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `trailing_stop_positive` | | Changes stop-loss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `trailing_stop_positive_offset` | | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. *Defaults to `0.0` (no offset).* More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `trailing_only_offset_is_reached` | | Only apply trailing stoploss when the offset is reached. *Defaults to `false`.* [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). | `unfilledtimeout.buy` | | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. | `unfilledtimeout.sell` | | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. | `bid_strategy.ask_last_balance` | | **Required.** Set the bidding price. More information [below](#understand-ask_last_balance). -| `bid_strategy.use_order_book` | false | Allows buying of pair using the rates in Order Book Bids. -| `bid_strategy.order_book_top` | 1 | Bot will use the top N rate in Order Book Bids. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids. -| `bid_strategy. check_depth_of_market.enabled` | false | Does not buy if the % difference of buy orders and sell orders is met in Order Book. -| `bid_strategy. check_depth_of_market.bids_to_ask_delta` | 0 | The % difference of buy orders and sell orders found in Order Book. A value lesser than 1 means sell orders is greater, while value greater than 1 means buy orders is higher. -| `ask_strategy.use_order_book` | false | Allows selling of open traded pair using the rates in Order Book Asks. -| `ask_strategy.order_book_min` | 1 | Bot will scan from the top min to max Order Book Asks searching for a profitable rate. -| `ask_strategy.order_book_max` | 1 | Bot will scan from the top min to max Order Book Asks searching for a profitable rate. -| `ask_strategy.use_sell_signal` | true | Use sell signals produced by the strategy in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy). -| `ask_strategy.sell_profit_only` | false | Wait until the bot makes a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy). -| `ask_strategy.ignore_roi_if_buy_signal` | false | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy). +| `bid_strategy.use_order_book` | | Enable buying using the rates in Order Book Bids. +| `bid_strategy.order_book_top` | | Bot will use the top N rate in Order Book Bids. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids. *Defaults to `1`.* +| `bid_strategy. check_depth_of_market.enabled` | | Does not buy if the difference of buy orders and sell orders is met in Order Book. *Defaults to `false`.* +| `bid_strategy. check_depth_of_market.bids_to_ask_delta` | | The % difference of buy orders and sell orders found in Order Book. A value lesser than 1 means sell orders is greater, while value greater than 1 means buy orders is higher. *Defaults to `0`.* +| `ask_strategy.use_order_book` | | Enable selling of open trades using Order Book Asks. +| `ask_strategy.order_book_min` | | Bot will scan from the top min to max Order Book Asks searching for a profitable rate. *Defaults to `1`.* +| `ask_strategy.order_book_max` | | Bot will scan from the top min to max Order Book Asks searching for a profitable rate. *Defaults to `1`.* +| `ask_strategy.use_sell_signal` | | Use sell signals produced by the strategy in addition to the `minimal_roi`. *Defaults to `true`.* [Strategy Override](#parameters-in-the-strategy). +| `ask_strategy.sell_profit_only` | | Wait until the bot makes a positive profit before taking a sell decision. *Defaults to `false`.* [Strategy Override](#parameters-in-the-strategy). +| `ask_strategy.ignore_roi_if_buy_signal` | | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. *Defaults to `false`.* [Strategy Override](#parameters-in-the-strategy). | `order_types` | | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy). | `order_time_in_force` | | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy). | `exchange.name` | | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename). -| `exchange.sandbox` | false | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details. -| `exchange.key` | | API key to use for the exchange. Only required when you are in production mode. ***Keep it in secrete, do not disclose publicly.*** -| `exchange.secret` | | API secret to use for the exchange. Only required when you are in production mode. ***Keep it in secrete, do not disclose publicly.*** -| `exchange.password` | | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. ***Keep it in secrete, do not disclose publicly.*** -| `exchange.pair_whitelist` | [] | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)). -| `exchange.pair_blacklist` | [] | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)). +| `exchange.sandbox` | | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details. +| `exchange.key` | | API key to use for the exchange. Only required when you are in production mode. **Keep it in secrete, do not disclose publicly.** +| `exchange.secret` | | API secret to use for the exchange. Only required when you are in production mode. **Keep it in secrete, do not disclose publicly.** +| `exchange.password` | | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. **Keep it in secrete, do not disclose publicly.** +| `exchange.pair_whitelist` | | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)). +| `exchange.pair_blacklist` | | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)). | `exchange.ccxt_config` | | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) | `exchange.ccxt_async_config` | | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) -| `exchange.markets_refresh_interval` | 60 | The interval in minutes in which markets are reloaded. +| `exchange.markets_refresh_interval` | | The interval in minutes in which markets are reloaded. *Defaults to `60` minutes.* | `edge.*` | | Please refer to [edge configuration document](edge.md) for detailed explanation. -| `experimental.block_bad_exchanges` | true | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now. -| `pairlists` | StaticPairList | Define one or more pairlists to be used. [More information below](#dynamic-pairlists). +| `experimental.block_bad_exchanges` | | Block exchanges known to not work with freqtrade. *Defaults to `true`.* Leave on default unless you want to test if that exchange works now. +| `pairlists` | | Define one or more pairlists to be used. *Defaults to `StaticPairList`.* [More information below](#dynamic-pairlists). | `telegram.enabled` | | Enable the usage of Telegram. -| `telegram.token` | | Your Telegram bot token. Only required if `telegram.enabled` is `true`. ***Keep it in secrete, do not disclose publicly.*** -| `telegram.chat_id` | | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. ***Keep it in secrete, do not disclose publicly.*** -| `webhook.enabled` | false | Enable usage of Webhook notifications +| `telegram.token` | | Your Telegram bot token. Only required if `telegram.enabled` is `true`. **Keep it in secrete, do not disclose publicly.** +| `telegram.chat_id` | | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. **Keep it in secrete, do not disclose publicly.** +| `webhook.enabled` | | Enable usage of Webhook notifications | `webhook.url` | | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. | `webhook.webhookbuy` | | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. -| `webhook.webhooksell` | | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. +| `webhook.webhooksell` | | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. | `webhook.webhookstatus` | | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. -| `db_url` | `sqlite:///tradesv3.sqlite`| Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `True`. -| `initial_state` | running | Defines the initial application state. More information below. -| `forcebuy_enable` | false | Enables the RPC Commands to force a buy. More information below. +| `db_url` | | Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `True`, and to `sqlite:///tradesv3.sqlite` for production instances. +| `initial_state` | | Defines the initial application state. More information below. *Defaults to `stopped`.* +| `forcebuy_enable` | | Enables the RPC Commands to force a buy. More information below. | `strategy` | | **Required** Defines Strategy class to use. Recommended to set via `--strategy NAME`. | `strategy_path` | | Adds an additional strategy lookup path (must be a directory). -| `internals.process_throttle_secs` | 5 | Set the process throttle. Value in second. -| `internals.heartbeat_interval` | 60 | Print heartbeat message every X seconds. Set to 0 to disable heartbeat messages. -| `internals.sd_notify` | false | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. +| `internals.process_throttle_secs` | | Set the process throttle. Value in second. *Defaults to `5` seconds.* +| `internals.heartbeat_interval` | | Print heartbeat message every X seconds. Set to 0 to disable heartbeat messages. *Defaults to `60` seconds.* +| `internals.sd_notify` | | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. | `logfile` | | Specify Logfile. Uses a rolling strategy of 10 files, with 1Mb per file. | `user_data_dir` | | Directory containing user data. Defaults to `./user_data/`. From 12b9257c6d321e3ef34a3a32acd27b1f7cafb8d3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 25 Nov 2019 14:25:02 +0100 Subject: [PATCH 1080/3421] new-lines before defaults in documentation --- docs/configuration.md | 126 +++++++++++++++++++++--------------------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 5241eaab9..a29621585 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -38,69 +38,69 @@ The prevelance for all Options is as follows: Mandatory parameters are marked as **Required**, which means that they are required to be set in one of the possible ways. -| Command | Default | Description | -|----------|---------|-------------| -| `max_open_trades` | | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades) -| `stake_currency` | | **Required.** Crypto-currency used for trading. -| `stake_amount` | | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance. -| `amount_reserve_percent` | | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stop-loss value when calculating min pair stake amount in order to avoid possible trade refusals. *Defaults to `0.05` (5%).* -| `ticker_interval` | | The ticker interval to use (1min, 5 min, 15 min, 30 min, 1 hour or 1 day). Default is 5 minutes. [Strategy Override](#parameters-in-the-strategy). -| `fiat_display_currency` | | Fiat currency used to show your profits. More information below. -| `dry_run` | | **Required.** Define if the bot must be in Dry-run or production mode. *Defaults to `true`.* -| `dry_run_wallet` | | Overrides the default amount of 999.9 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason. -| `process_only_new_candles` | | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. *Defaults to `false`.* [Strategy Override](#parameters-in-the-strategy). -| `minimal_roi` | | **Required.** Set the threshold in percent the bot will use to sell a trade. More information below. [Strategy Override](#parameters-in-the-strategy). -| `stoploss` | | **Required.** Value of the stoploss in percent used by the bot. More information below. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_stop` | | Enables trailing stop-loss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_stop_positive` | | Changes stop-loss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_stop_positive_offset` | | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. *Defaults to `0.0` (no offset).* More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_only_offset_is_reached` | | Only apply trailing stoploss when the offset is reached. *Defaults to `false`.* [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `unfilledtimeout.buy` | | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. -| `unfilledtimeout.sell` | | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. -| `bid_strategy.ask_last_balance` | | **Required.** Set the bidding price. More information [below](#understand-ask_last_balance). -| `bid_strategy.use_order_book` | | Enable buying using the rates in Order Book Bids. -| `bid_strategy.order_book_top` | | Bot will use the top N rate in Order Book Bids. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids. *Defaults to `1`.* -| `bid_strategy. check_depth_of_market.enabled` | | Does not buy if the difference of buy orders and sell orders is met in Order Book. *Defaults to `false`.* -| `bid_strategy. check_depth_of_market.bids_to_ask_delta` | | The % difference of buy orders and sell orders found in Order Book. A value lesser than 1 means sell orders is greater, while value greater than 1 means buy orders is higher. *Defaults to `0`.* -| `ask_strategy.use_order_book` | | Enable selling of open trades using Order Book Asks. -| `ask_strategy.order_book_min` | | Bot will scan from the top min to max Order Book Asks searching for a profitable rate. *Defaults to `1`.* -| `ask_strategy.order_book_max` | | Bot will scan from the top min to max Order Book Asks searching for a profitable rate. *Defaults to `1`.* -| `ask_strategy.use_sell_signal` | | Use sell signals produced by the strategy in addition to the `minimal_roi`. *Defaults to `true`.* [Strategy Override](#parameters-in-the-strategy). -| `ask_strategy.sell_profit_only` | | Wait until the bot makes a positive profit before taking a sell decision. *Defaults to `false`.* [Strategy Override](#parameters-in-the-strategy). -| `ask_strategy.ignore_roi_if_buy_signal` | | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. *Defaults to `false`.* [Strategy Override](#parameters-in-the-strategy). -| `order_types` | | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy). -| `order_time_in_force` | | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy). -| `exchange.name` | | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename). -| `exchange.sandbox` | | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details. -| `exchange.key` | | API key to use for the exchange. Only required when you are in production mode. **Keep it in secrete, do not disclose publicly.** -| `exchange.secret` | | API secret to use for the exchange. Only required when you are in production mode. **Keep it in secrete, do not disclose publicly.** -| `exchange.password` | | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. **Keep it in secrete, do not disclose publicly.** -| `exchange.pair_whitelist` | | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)). -| `exchange.pair_blacklist` | | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)). -| `exchange.ccxt_config` | | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) -| `exchange.ccxt_async_config` | | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) -| `exchange.markets_refresh_interval` | | The interval in minutes in which markets are reloaded. *Defaults to `60` minutes.* -| `edge.*` | | Please refer to [edge configuration document](edge.md) for detailed explanation. -| `experimental.block_bad_exchanges` | | Block exchanges known to not work with freqtrade. *Defaults to `true`.* Leave on default unless you want to test if that exchange works now. -| `pairlists` | | Define one or more pairlists to be used. *Defaults to `StaticPairList`.* [More information below](#dynamic-pairlists). -| `telegram.enabled` | | Enable the usage of Telegram. -| `telegram.token` | | Your Telegram bot token. Only required if `telegram.enabled` is `true`. **Keep it in secrete, do not disclose publicly.** -| `telegram.chat_id` | | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. **Keep it in secrete, do not disclose publicly.** -| `webhook.enabled` | | Enable usage of Webhook notifications -| `webhook.url` | | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. -| `webhook.webhookbuy` | | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. -| `webhook.webhooksell` | | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. -| `webhook.webhookstatus` | | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. -| `db_url` | | Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `True`, and to `sqlite:///tradesv3.sqlite` for production instances. -| `initial_state` | | Defines the initial application state. More information below. *Defaults to `stopped`.* -| `forcebuy_enable` | | Enables the RPC Commands to force a buy. More information below. -| `strategy` | | **Required** Defines Strategy class to use. Recommended to set via `--strategy NAME`. -| `strategy_path` | | Adds an additional strategy lookup path (must be a directory). -| `internals.process_throttle_secs` | | Set the process throttle. Value in second. *Defaults to `5` seconds.* -| `internals.heartbeat_interval` | | Print heartbeat message every X seconds. Set to 0 to disable heartbeat messages. *Defaults to `60` seconds.* -| `internals.sd_notify` | | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. -| `logfile` | | Specify Logfile. Uses a rolling strategy of 10 files, with 1Mb per file. -| `user_data_dir` | | Directory containing user data. Defaults to `./user_data/`. +| Command | Description | +|----------|-------------| +| `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades) +| `stake_currency` | **Required.** Crypto-currency used for trading. +| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance. +| `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stop-loss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).* +| `ticker_interval` | The ticker interval to use (1min, 5 min, 15 min, 30 min, 1 hour or 1 day). Default is 5 minutes. [Strategy Override](#parameters-in-the-strategy). +| `fiat_display_currency` | Fiat currency used to show your profits. More information below. +| `dry_run` | **Required.** Define if the bot must be in Dry-run or production mode.
      *Defaults to `true`.* +| `dry_run_wallet` | Overrides the default amount of 999.9 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason. +| `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle.
      *Defaults to `false`.* [Strategy Override](#parameters-in-the-strategy). +| `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. More information below. [Strategy Override](#parameters-in-the-strategy). +| `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More information below. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `trailing_stop` | Enables trailing stop-loss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `trailing_stop_positive` | Changes stop-loss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive.
      *Defaults to `0.0` (no offset).* More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.* +| `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. +| `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. +| `bid_strategy.ask_last_balance` | **Required.** Set the bidding price. More information [below](#understand-ask_last_balance). +| `bid_strategy.use_order_book` | Enable buying using the rates in Order Book Bids. +| `bid_strategy.order_book_top` | Bot will use the top N rate in Order Book Bids. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids. *Defaults to `1`.* +| `bid_strategy. check_depth_of_market.enabled` | Does not buy if the difference of buy orders and sell orders is met in Order Book.
      *Defaults to `false`.* +| `bid_strategy. check_depth_of_market.bids_to_ask_delta` | The % difference of buy orders and sell orders found in Order Book. A value lesser than 1 means sell orders is greater, while value greater than 1 means buy orders is higher. *Defaults to `0`.* +| `ask_strategy.use_order_book` | Enable selling of open trades using Order Book Asks. +| `ask_strategy.order_book_min` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.* +| `ask_strategy.order_book_max` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.* +| `ask_strategy.use_sell_signal` | Use sell signals produced by the strategy in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `true`.* +| `ask_strategy.sell_profit_only` | Wait until the bot makes a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.* +| `ask_strategy.ignore_roi_if_buy_signal` | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.* +| `order_types` | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy). +| `order_time_in_force` | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy). +| `exchange.name` | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename). +| `exchange.sandbox` | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details. +| `exchange.key` | API key to use for the exchange. Only required when you are in production mode. **Keep it in secrete, do not disclose publicly.** +| `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode. **Keep it in secrete, do not disclose publicly.** +| `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. **Keep it in secrete, do not disclose publicly.** +| `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)). +| `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)). +| `exchange.ccxt_config` | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) +| `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) +| `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded.
      *Defaults to `60` minutes.* +| `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation. +| `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
      *Defaults to `true`.* +| `pairlists` | Define one or more pairlists to be used. [More information below](#dynamic-pairlists).
      *Defaults to `StaticPairList`.* +| `telegram.enabled` | Enable the usage of Telegram. +| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`. **Keep it in secrete, do not disclose publicly.** +| `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. **Keep it in secrete, do not disclose publicly.** +| `webhook.enabled` | Enable usage of Webhook notifications +| `webhook.url` | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. +| `webhook.webhookbuy` | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. +| `webhook.webhooksell` | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. +| `webhook.webhookstatus` | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. +| `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `True`, and to `sqlite:///tradesv3.sqlite` for production instances. +| `initial_state` | Defines the initial application state. More information below.
      *Defaults to `stopped`.* +| `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below. +| `strategy` | **Required** Defines Strategy class to use. Recommended to set via `--strategy NAME`. +| `strategy_path` | Adds an additional strategy lookup path (must be a directory). +| `internals.process_throttle_secs` | Set the process throttle. Value in second.
      *Defaults to `5` seconds.* +| `internals.heartbeat_interval` | Print heartbeat message every X seconds. Set to 0 to disable heartbeat messages.
      *Defaults to `60` seconds.* +| `internals.sd_notify` | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. +| `logfile` | Specify Logfile. Uses a rolling strategy of 10 files, with 1Mb per file. +| `user_data_dir` | Directory containing user data.
      *Defaults to `./user_data/`*. ### Parameters in the strategy From 9e7d367b5c30989729848b37b0f5ba8f5eb45208 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 25 Nov 2019 15:43:09 +0100 Subject: [PATCH 1081/3421] Realign strategy_override paramters --- docs/configuration.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index a29621585..296c19d36 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -41,19 +41,19 @@ Mandatory parameters are marked as **Required**, which means that they are requi | Command | Description | |----------|-------------| | `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades) -| `stake_currency` | **Required.** Crypto-currency used for trading. -| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance. +| `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy). +| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance. [Strategy Override](#parameters-in-the-strategy). | `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stop-loss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).* | `ticker_interval` | The ticker interval to use (1min, 5 min, 15 min, 30 min, 1 hour or 1 day). Default is 5 minutes. [Strategy Override](#parameters-in-the-strategy). | `fiat_display_currency` | Fiat currency used to show your profits. More information below. | `dry_run` | **Required.** Define if the bot must be in Dry-run or production mode.
      *Defaults to `true`.* | `dry_run_wallet` | Overrides the default amount of 999.9 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason. -| `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle.
      *Defaults to `false`.* [Strategy Override](#parameters-in-the-strategy). +| `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.* | `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. More information below. [Strategy Override](#parameters-in-the-strategy). | `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More information below. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). | `trailing_stop` | Enables trailing stop-loss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). | `trailing_stop_positive` | Changes stop-loss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive.
      *Defaults to `0.0` (no offset).* More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `0.0` (no offset).* | `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.* | `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. | `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. @@ -107,15 +107,18 @@ Mandatory parameters are marked as **Required**, which means that they are requi The following parameters can be set in either configuration file or strategy. Values set in the configuration file always overwrite values set in the strategy. -* `ticker_interval` * `minimal_roi` +* `ticker_interval` * `stoploss` * `trailing_stop` * `trailing_stop_positive` * `trailing_stop_positive_offset` +* `trailing_only_offset_is_reached` * `process_only_new_candles` * `order_types` * `order_time_in_force` +* `stake_currency` +* `stake_amount` * `use_sell_signal` (ask_strategy) * `sell_profit_only` (ask_strategy) * `ignore_roi_if_buy_signal` (ask_strategy) From 8204107315fdda493c254b592c86adb448c2b157 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 26 Nov 2019 11:57:02 +0300 Subject: [PATCH 1082/3421] Add test for get_min_pair_stake_amount() with real data --- tests/test_freqtradebot.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index b01c8e247..937723073 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -334,6 +334,7 @@ def test_get_min_pair_stake_amount(mocker, default_conf) -> None: freqtrade = FreqtradeBot(default_conf) freqtrade.strategy.stoploss = -0.05 markets = {'ETH/BTC': {'symbol': 'ETH/BTC'}} + # no pair found mocker.patch( 'freqtrade.exchange.Exchange.markets', @@ -440,6 +441,25 @@ def test_get_min_pair_stake_amount(mocker, default_conf) -> None: assert result == min(8, 2 * 2) / 0.9 +def test_get_min_pair_stake_amount_real_data(mocker, default_conf) -> None: + patch_RPCManager(mocker) + patch_exchange(mocker) + freqtrade = FreqtradeBot(default_conf) + freqtrade.strategy.stoploss = -0.05 + markets = {'ETH/BTC': {'symbol': 'ETH/BTC'}} + + # Real Binance data + markets["ETH/BTC"]["limits"] = { + 'cost': {'min': 0.0001}, + 'amount': {'min': 0.001} + } + mocker.patch( + 'freqtrade.exchange.Exchange.markets', + PropertyMock(return_value=markets) + ) + result = freqtrade._get_min_pair_stake_amount('ETH/BTC', 0.020405) + assert round(result, 8) == round(max(0.0001, 0.001 * 0.020405) / 0.9, 8) + def test_create_trades(default_conf, ticker, limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) From 17269c88bef96618cf91bbe6ceabbefa3ae37c39 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 26 Nov 2019 11:57:58 +0300 Subject: [PATCH 1083/3421] Fix _get_min_pair_stake_amount() --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 358c63f90..b5d157635 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -266,7 +266,7 @@ class FreqtradeBot: amount_reserve_percent += self.strategy.stoploss # it should not be more than 50% amount_reserve_percent = max(amount_reserve_percent, 0.5) - return min(min_stake_amounts) / amount_reserve_percent + return max(min_stake_amounts) / amount_reserve_percent def create_trades(self) -> bool: """ From 0ac592ad40a473a8a7adfc4ab7319d14c2a00632 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 26 Nov 2019 12:00:20 +0300 Subject: [PATCH 1084/3421] Fix markets in conftest --- tests/conftest.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index fbd23a0dc..bf245a840 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -325,7 +325,7 @@ def get_markets(): }, 'price': 500000, 'cost': { - 'min': 1, + 'min': 0.0001, 'max': 500000, }, }, @@ -351,7 +351,7 @@ def get_markets(): }, 'price': 500000, 'cost': { - 'min': 1, + 'min': 0.0001, 'max': 500000, }, }, @@ -376,7 +376,7 @@ def get_markets(): }, 'price': 500000, 'cost': { - 'min': 1, + 'min': 0.0001, 'max': 500000, }, }, @@ -401,7 +401,7 @@ def get_markets(): }, 'price': 500000, 'cost': { - 'min': 1, + 'min': 0.0001, 'max': 500000, }, }, @@ -426,7 +426,7 @@ def get_markets(): }, 'price': 500000, 'cost': { - 'min': 1, + 'min': 0.0001, 'max': 500000, }, }, @@ -451,7 +451,7 @@ def get_markets(): }, 'price': 500000, 'cost': { - 'min': 1, + 'min': 0.0001, 'max': 500000, }, }, @@ -479,7 +479,7 @@ def get_markets(): 'max': None }, 'cost': { - 'min': 0.001, + 'min': 0.0001, 'max': None } }, From 8e1e20bf0d536e8b4b46c8ea26757a180419e080 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 26 Nov 2019 12:07:43 +0300 Subject: [PATCH 1085/3421] Fix some tests --- tests/test_freqtradebot.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 937723073..746a05cc6 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -299,7 +299,7 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, limit_buy_order, fee) -> None: patch_RPCManager(mocker) patch_exchange(mocker) - default_conf['stake_amount'] = 0.0000098751 + default_conf['stake_amount'] = 0.00098751 default_conf['max_open_trades'] = 2 mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -313,7 +313,7 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, trade = Trade.query.first() assert trade is not None - assert trade.stake_amount == 0.0000098751 + assert trade.stake_amount == 0.00098751 assert trade.is_open assert trade.open_date is not None @@ -321,11 +321,11 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, trade = Trade.query.order_by(Trade.id.desc()).first() assert trade is not None - assert trade.stake_amount == 0.0000098751 + assert trade.stake_amount == 0.00098751 assert trade.is_open assert trade.open_date is not None - assert Trade.total_open_trades_stakes() == 1.97502e-05 + assert Trade.total_open_trades_stakes() == 1.97502e-03 def test_get_min_pair_stake_amount(mocker, default_conf) -> None: From 066f32406058b22b0d3c227745cd205ec6ab3418 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 26 Nov 2019 12:28:04 +0300 Subject: [PATCH 1086/3421] Make flake happy --- tests/test_freqtradebot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 746a05cc6..31e9f8750 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -460,6 +460,7 @@ def test_get_min_pair_stake_amount_real_data(mocker, default_conf) -> None: result = freqtrade._get_min_pair_stake_amount('ETH/BTC', 0.020405) assert round(result, 8) == round(max(0.0001, 0.001 * 0.020405) / 0.9, 8) + def test_create_trades(default_conf, ticker, limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) From 585b8332ad61098fe95bce3e674c559363377dc3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 26 Nov 2019 11:48:01 +0100 Subject: [PATCH 1087/3421] Improve tests and unify required attribute --- freqtrade/constants.py | 4 +--- tests/test_configuration.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index f6e08bc36..0d52bf405 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -269,10 +269,8 @@ CONF_SCHEMA = { 'required': ['process_throttle_secs', 'allowed_risk', 'capital_available_percentage'] } }, - 'anyOf': [ - {'required': ['exchange']} - ], 'required': [ + 'exchange', 'max_open_trades', 'stake_currency', 'stake_amount', diff --git a/tests/test_configuration.py b/tests/test_configuration.py index e50ba99ee..60bd6d7df 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -40,10 +40,16 @@ def test_load_config_invalid_pair(default_conf) -> None: def test_load_config_missing_attributes(default_conf) -> None: - default_conf.pop('exchange') + conf = deepcopy(default_conf) + conf.pop('exchange') with pytest.raises(ValidationError, match=r".*'exchange' is a required property.*"): - validate_config_schema(default_conf) + validate_config_schema(conf) + + conf = deepcopy(default_conf) + conf.pop('stake_currency') + with pytest.raises(ValidationError, match=r".*'stake_currency' is a required property.*"): + validate_config_schema(conf) def test_load_config_incorrect_stake_amount(default_conf) -> None: From cceb00c4065c1a66ff7995f7a59304365e75b046 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 26 Nov 2019 12:12:41 +0100 Subject: [PATCH 1088/3421] Try coveralls --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 047a34dd6..f6a111944 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -74,7 +74,7 @@ jobs: # Fake travis environment to get coveralls working correctly export TRAVIS_PULL_REQUEST="https://github.com/${GITHUB_REPOSITORY}/pull/$(cat $GITHUB_EVENT_PATH | jq -r .number)" export TRAVIS_BRANCH=${GITHUB_REF#"ref/heads"} - export TRAVIS_BRANCH=${HEAD_REF} + export CI_BRANCH=${GITHUB_REF#"ref/heads"} echo "${TRAVIS_BRANCH}" coveralls || true From 8e7512161ad3ecfa82a06197b0e5a0241737e753 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 26 Nov 2019 15:01:42 +0300 Subject: [PATCH 1089/3421] Add hyperopt-list and hyperopt-show commands --- freqtrade/configuration/arguments.py | 27 +- freqtrade/configuration/cli_options.py | 39 +++ freqtrade/configuration/configuration.py | 15 ++ freqtrade/optimize/hyperopt.py | 304 +++++++++++++---------- freqtrade/utils.py | 99 ++++++++ 5 files changed, 353 insertions(+), 131 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 29d0d98a2..fa1d77407 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -49,8 +49,14 @@ ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source", "ticker_interval"] +ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "print_colorized", + "print_json", "hyperopt_list_no_details"] + +ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_show_index", + "print_json", "hyperopt_show_no_header"] + NO_CONF_REQURIED = ["download-data", "list-timeframes", "list-markets", "list-pairs", - "plot-dataframe", "plot-profit"] + "hyperopt_list", "hyperopt_show", "plot-dataframe", "plot-profit"] NO_CONF_ALLOWED = ["create-userdir", "list-exchanges"] @@ -116,6 +122,7 @@ class Arguments: from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge from freqtrade.utils import (start_create_userdir, start_download_data, + start_hyperopt_list, start_hyperopt_show, start_list_exchanges, start_list_markets, start_list_timeframes, start_trading) from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit @@ -220,3 +227,21 @@ class Arguments: ) plot_profit_cmd.set_defaults(func=start_plot_profit) self._build_args(optionlist=ARGS_PLOT_PROFIT, parser=plot_profit_cmd) + + # Add hyperopt-list subcommand + hyperopt_list_cmd = subparsers.add_parser( + 'hyperopt-list', + help='List Hyperopt results', + parents=[_common_parser], + ) + hyperopt_list_cmd.set_defaults(func=start_hyperopt_list) + self._build_args(optionlist=ARGS_HYPEROPT_LIST, parser=hyperopt_list_cmd) + + # Add hyperopt-show subcommand + hyperopt_show_cmd = subparsers.add_parser( + 'hyperopt-show', + help='Show details of Hyperopt results', + parents=[_common_parser], + ) + hyperopt_show_cmd.set_defaults(func=start_hyperopt_show) + self._build_args(optionlist=ARGS_HYPEROPT_SHOW, parser=hyperopt_show_cmd) diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 6dc5ef026..beed2b835 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -18,6 +18,18 @@ def check_int_positive(value: str) -> int: return uint +def check_int_nonzero(value: str) -> int: + try: + uint = int(value) + if uint == 0: + raise ValueError + except ValueError: + raise argparse.ArgumentTypeError( + f"{value} is invalid for this parameter, should be a non-zero integer value" + ) + return uint + + class Arg: # Optional CLI arguments def __init__(self, *args, **kwargs): @@ -364,4 +376,31 @@ AVAILABLE_CLI_OPTIONS = { choices=["DB", "file"], default="file", ), + # hyperopt-list, hyperopt-show + "hyperopt_list_profitable": Arg( + '--profitable', + help='Select only profitable epochs.', + action='store_true', + ), + "hyperopt_list_best": Arg( + '--best', + help='Select only best epochs.', + action='store_true', + ), + "hyperopt_list_no_details": Arg( + '--no-details', + help='Do not print best epoch details.', + action='store_true', + ), + "hyperopt_show_index": Arg( + '-n', '--index', + help='Specify the index of the epoch to print details for.', + type=check_int_nonzero, + metavar='INT', + ), + "hyperopt_show_no_header": Arg( + '--no-header', + help='Do not print epoch details header.', + action='store_true', + ), } diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 93eee3912..6552078c8 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -308,6 +308,21 @@ class Configuration: self._args_to_config(config, argname='hyperopt_loss', logstring='Using Hyperopt loss class name: {}') + self._args_to_config(config, argname='hyperopt_show_index', + logstring='Parameter -n/--index detected: {}') + + self._args_to_config(config, argname='hyperopt_list_best', + logstring='Parameter --best detected: {}') + + self._args_to_config(config, argname='hyperopt_list_profitable', + logstring='Parameter --profitable detected: {}') + + self._args_to_config(config, argname='hyperopt_list_no_details', + logstring='Parameter --no-details detected: {}') + + self._args_to_config(config, argname='hyperopt_show_no_header', + logstring='Parameter --no-header detected: {}') + def _process_plot_options(self, config: Dict[str, Any]) -> None: self._args_to_config(config, argname='pairs', diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 836309a62..2ef8ddc2f 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -74,11 +74,11 @@ class Hyperopt: else: logger.info("Continuing on previous hyperopt results.") + self.num_trials_saved = 0 + # Previous evaluations self.trials: List = [] - self.num_trials_saved = 0 - # Populate functions here (hasattr is slow so should not be run during "regular" operations) if hasattr(self.custom_hyperopt, 'populate_indicators'): self.backtesting.strategy.advise_indicators = \ @@ -104,6 +104,10 @@ class Hyperopt: self.config['ask_strategy'] = {} self.config['ask_strategy']['use_sell_signal'] = True + self.print_all = self.config.get('print_all', False) + self.print_colorized = self.config.get('print_colorized', False) + self.print_json = self.config.get('print_json', False) + @staticmethod def get_lock_filename(config) -> str: @@ -119,20 +123,18 @@ class Hyperopt: logger.info(f"Removing `{p}`.") p.unlink() - def get_args(self, params): + def _get_params_dict(self, raw_params: List[Any]) -> Dict: - dimensions = self.dimensions + dimensions: List[Dimension] = self.dimensions # Ensure the number of dimensions match - # the number of parameters in the list x. - if len(params) != len(dimensions): - raise ValueError('Mismatch in number of search-space dimensions. ' - f'len(dimensions)=={len(dimensions)} and len(x)=={len(params)}') + # the number of parameters in the list. + if len(raw_params) != len(dimensions): + raise ValueError('Mismatch in number of search-space dimensions.') - # Create a dict where the keys are the names of the dimensions - # and the values are taken from the list of parameters x. - arg_dict = {dim.name: value for dim, value in zip(dimensions, params)} - return arg_dict + # Return a dict where the keys are the names of the dimensions + # and the values are taken from the list of parameters. + return {d.name: v for d, v in zip(dimensions, raw_params)} def save_trials(self, final: bool = False) -> None: """ @@ -147,106 +149,126 @@ class Hyperopt: logger.info(f"{num_trials} {plural(num_trials, 'epoch')} " f"saved to '{self.trials_file}'.") - def read_trials(self) -> List: + @staticmethod + def _read_trials(trials_file) -> List: """ Read hyperopt trials file """ - logger.info("Reading Trials from '%s'", self.trials_file) - trials = load(self.trials_file) - self.trials_file.unlink() + logger.info("Reading Trials from '%s'", trials_file) + trials = load(trials_file) return trials - def log_trials_result(self) -> None: + def _get_params_details(self, params: Dict) -> Dict: """ - Display Best hyperopt result + Return the params for each space """ - # This is printed when Ctrl+C is pressed quickly, before first epochs have - # a chance to be evaluated. - if not self.trials: - print("No epochs evaluated yet, no best result.") - return + result: Dict = {} - results = sorted(self.trials, key=itemgetter('loss')) - best_result = results[0] - params = best_result['params'] - log_str = self.format_results_logstring(best_result) - print(f"\nBest result:\n\n{log_str}\n") + if self.has_space('buy'): + result['buy'] = {p.name: params.get(p.name) for p in self.hyperopt_space('buy')} + if self.has_space('sell'): + result['sell'] = {p.name: params.get(p.name) for p in self.hyperopt_space('sell')} + if self.has_space('roi'): + result['roi'] = self.custom_hyperopt.generate_roi_table(params) + if self.has_space('stoploss'): + result['stoploss'] = params.get('stoploss') - if self.config.get('print_json'): + return result + + @staticmethod # noqa: C901 + def print_epoch_details(results, total_epochs, print_json: bool, + no_header: bool = False, header_str: str = None) -> None: + """ + Display details of the hyperopt result + """ + params = results['params_details'] + + # Default header string + if header_str is None: + header_str = "Best result" + + if not no_header: + explanation_str = Hyperopt._format_explanation_string(results, total_epochs) + print(f"\n{header_str}:\n\n{explanation_str}\n") + + if print_json: result_dict: Dict = {} - if self.has_space('buy') or self.has_space('sell'): - result_dict['params'] = {} - if self.has_space('buy'): - result_dict['params'].update({p.name: params.get(p.name) - for p in self.hyperopt_space('buy')}) - if self.has_space('sell'): - result_dict['params'].update({p.name: params.get(p.name) - for p in self.hyperopt_space('sell')}) - if self.has_space('roi'): + result_params_dict: Dict = {} + if 'buy' in params: + result_params_dict.update(params['buy']) + if 'sell' in params: + result_params_dict.update(params['sell']) + if result_params_dict: + result_dict['params'] = result_params_dict + if 'roi' in params: # Convert keys in min_roi dict to strings because # rapidjson cannot dump dicts with integer keys... # OrderedDict is used to keep the numeric order of the items # in the dict. result_dict['minimal_roi'] = OrderedDict( - (str(k), v) for k, v in self.custom_hyperopt.generate_roi_table(params).items() + (str(k), v) for k, v in params['roi'].items() ) - if self.has_space('stoploss'): - result_dict['stoploss'] = params.get('stoploss') + if 'stoploss' in params: + result_dict['stoploss'] = params['stoploss'] print(rapidjson.dumps(result_dict, default=str, number_mode=rapidjson.NM_NATIVE)) else: - if self.has_space('buy'): + if 'buy' in params: print('Buy hyperspace params:') - pprint({p.name: params.get(p.name) for p in self.hyperopt_space('buy')}, - indent=4) - if self.has_space('sell'): + pprint(params['buy'], indent=4) + if 'sell' in params: print('Sell hyperspace params:') - pprint({p.name: params.get(p.name) for p in self.hyperopt_space('sell')}, - indent=4) - if self.has_space('roi'): + pprint(params['sell'], indent=4) + if 'roi' in params: print("ROI table:") # Round printed values to 5 digits after the decimal point - pprint(round_dict(self.custom_hyperopt.generate_roi_table(params), 5), indent=4) - if self.has_space('stoploss'): + pprint(round_dict(params['roi'], 5), indent=4) + if 'stoploss' in params: # Also round to 5 digits after the decimal point - print(f"Stoploss: {round(params.get('stoploss'), 5)}") + print(f"Stoploss: {round(params['stoploss'], 5)}") - def is_best(self, results) -> bool: - return results['loss'] < self.current_best_loss + @staticmethod + def is_best_loss(results, current_best_loss) -> bool: + return results['loss'] < current_best_loss - def log_results(self, results) -> None: + def print_results(self, results) -> None: """ Log results if it is better than any previous evaluation """ - print_all = self.config.get('print_all', False) - is_best_loss = self.is_best(results) - - if not print_all: + is_best = results['is_best'] + if not self.print_all: + # Print '\n' after each 100th epoch to separate dots from the log messages. + # Otherwise output is messy on a terminal. print('.', end='' if results['current_epoch'] % 100 != 0 else None) # type: ignore sys.stdout.flush() - if print_all or is_best_loss: - if is_best_loss: - self.current_best_loss = results['loss'] - log_str = self.format_results_logstring(results) - # Colorize output - if self.config.get('print_colorized', False): - if results['total_profit'] > 0: - log_str = Fore.GREEN + log_str - if print_all and is_best_loss: - log_str = Style.BRIGHT + log_str - if print_all: - print(log_str) - else: - print(f'\n{log_str}') + if self.print_all or is_best: + if not self.print_all: + # Separate the results explanation string from dots + print("\n") + self.print_results_explanation(results, self.total_epochs, self.print_all, + self.print_colorized) - def format_results_logstring(self, results) -> str: - current = results['current_epoch'] - total = self.total_epochs - res = results['results_explanation'] - loss = results['loss'] - log_str = f'{current:5d}/{total}: {res} Objective: {loss:.5f}' - log_str = f'*{log_str}' if results['is_initial_point'] else f' {log_str}' - return log_str + @staticmethod + def print_results_explanation(results, total_epochs, highlight_best: bool, + print_colorized: bool) -> None: + """ + Log results explanation string + """ + explanation_str = Hyperopt._format_explanation_string(results, total_epochs) + # Colorize output + if print_colorized: + if results['total_profit'] > 0: + explanation_str = Fore.GREEN + explanation_str + if highlight_best and results['is_best']: + explanation_str = Style.BRIGHT + explanation_str + print(explanation_str) + + @staticmethod + def _format_explanation_string(results, total_epochs) -> str: + return (("*" if results['is_initial_point'] else " ") + + f"{results['current_epoch']:5d}/{total_epochs}: " + + f"{results['results_explanation']} " + + f"Objective: {results['loss']:.5f}") def has_space(self, space: str) -> bool: """ @@ -276,33 +298,34 @@ class Hyperopt: spaces += self.custom_hyperopt.stoploss_space() return spaces - def generate_optimizer(self, _params: Dict, iteration=None) -> Dict: + def generate_optimizer(self, raw_params: List[Any], iteration=None) -> Dict: """ Used Optimize function. Called once per epoch to optimize whatever is configured. Keep this function as optimized as possible! """ - params = self.get_args(_params) + params_dict = self._get_params_dict(raw_params) + params_details = self._get_params_details(params_dict) if self.has_space('roi'): self.backtesting.strategy.minimal_roi = \ - self.custom_hyperopt.generate_roi_table(params) + self.custom_hyperopt.generate_roi_table(params_dict) if self.has_space('buy'): self.backtesting.strategy.advise_buy = \ - self.custom_hyperopt.buy_strategy_generator(params) + self.custom_hyperopt.buy_strategy_generator(params_dict) if self.has_space('sell'): self.backtesting.strategy.advise_sell = \ - self.custom_hyperopt.sell_strategy_generator(params) + self.custom_hyperopt.sell_strategy_generator(params_dict) if self.has_space('stoploss'): - self.backtesting.strategy.stoploss = params['stoploss'] + self.backtesting.strategy.stoploss = params_dict['stoploss'] processed = load(self.tickerdata_pickle) min_date, max_date = get_timeframe(processed) - results = self.backtesting.backtest( + backtesting_results = self.backtesting.backtest( { 'stake_amount': self.config['stake_amount'], 'processed': processed, @@ -312,58 +335,58 @@ class Hyperopt: 'end_date': max_date, } ) - results_explanation = self.format_results(results) + results_metrics = self._calculate_results_metrics(backtesting_results) + results_explanation = self._format_results_explanation_string(results_metrics) - trade_count = len(results.index) - total_profit = results.profit_abs.sum() + trade_count = results_metrics['trade_count'] + total_profit = results_metrics['total_profit'] # If this evaluation contains too short amount of trades to be # interesting -- consider it as 'bad' (assigned max. loss value) # in order to cast this hyperspace point away from optimization # path. We do not want to optimize 'hodl' strategies. - if trade_count < self.config['hyperopt_min_trades']: - return { - 'loss': MAX_LOSS, - 'params': params, - 'results_explanation': results_explanation, - 'total_profit': total_profit, - } - - loss = self.calculate_loss(results=results, trade_count=trade_count, - min_date=min_date.datetime, max_date=max_date.datetime) - + loss: float = MAX_LOSS + if trade_count >= self.config['hyperopt_min_trades']: + loss = self.calculate_loss(results=backtesting_results, trade_count=trade_count, + min_date=min_date.datetime, max_date=max_date.datetime) return { 'loss': loss, - 'params': params, + 'params_dict': params_dict, + 'params_details': params_details, + 'results_metrics': results_metrics, 'results_explanation': results_explanation, 'total_profit': total_profit, } - def format_results(self, results: DataFrame) -> str: + def _calculate_results_metrics(self, backtesting_results: DataFrame) -> Dict: + return { + 'trade_count': len(backtesting_results.index), + 'avg_profit': backtesting_results.profit_percent.mean() * 100.0, + 'total_profit': backtesting_results.profit_abs.sum(), + 'profit': backtesting_results.profit_percent.sum() * 100.0, + 'duration': backtesting_results.trade_duration.mean(), + } + + def _format_results_explanation_string(self, results_metrics: Dict) -> str: """ Return the formatted results explanation in a string """ - trades = len(results.index) - avg_profit = results.profit_percent.mean() * 100.0 - total_profit = results.profit_abs.sum() stake_cur = self.config['stake_currency'] - profit = results.profit_percent.sum() * 100.0 - duration = results.trade_duration.mean() - - return (f'{trades:6d} trades. Avg profit {avg_profit: 5.2f}%. ' - f'Total profit {total_profit: 11.8f} {stake_cur} ' - f'({profit: 7.2f}\N{GREEK CAPITAL LETTER SIGMA}%). ' - f'Avg duration {duration:5.1f} mins.' + return (f"{results_metrics['trade_count']:6d} trades. " + f"Avg profit {results_metrics['avg_profit']: 6.2f}%. " + f"Total profit {results_metrics['total_profit']: 11.8f} {stake_cur} " + f"({results_metrics['profit']: 7.2f}\N{GREEK CAPITAL LETTER SIGMA}%). " + f"Avg duration {results_metrics['duration']:5.1f} mins." ).encode(locale.getpreferredencoding(), 'replace').decode('utf-8') - def get_optimizer(self, dimensions, cpu_count) -> Optimizer: + def get_optimizer(self, dimensions: List[Dimension], cpu_count) -> Optimizer: return Optimizer( dimensions, base_estimator="ET", acq_optimizer="auto", n_initial_points=INITIAL_POINTS, acq_optimizer_kwargs={'n_jobs': cpu_count}, - random_state=self.config.get('hyperopt_random_state', None) + random_state=self.config.get('hyperopt_random_state', None), ) def fix_optimizer_models_list(self): @@ -387,14 +410,16 @@ class Hyperopt: return parallel(delayed( wrap_non_picklable_objects(self.generate_optimizer))(v, i) for v in asked) - def load_previous_results(self): - """ read trials file if we have one """ - if self.trials_file.is_file() and self.trials_file.stat().st_size > 0: - self.trials = self.read_trials() - logger.info( - 'Loaded %d previous evaluations from disk.', - len(self.trials) - ) + @staticmethod + def load_previous_results(trials_file) -> List: + """ + Load data for epochs from the file if we have one + """ + trials: List = [] + if trials_file.is_file() and trials_file.stat().st_size > 0: + trials = Hyperopt._read_trials(trials_file) + logger.info(f"Loaded {len(trials)} previous evaluations from disk.") + return trials def start(self) -> None: data, timerange = self.backtesting.load_bt_data() @@ -415,17 +440,17 @@ class Hyperopt: # We don't need exchange instance anymore while running hyperopt self.backtesting.exchange = None # type: ignore - self.load_previous_results() + self.trials = self.load_previous_results(self.trials_file) cpus = cpu_count() logger.info(f"Found {cpus} CPU cores. Let's make them scream!") config_jobs = self.config.get('hyperopt_jobs', -1) logger.info(f'Number of parallel jobs set as: {config_jobs}') - self.dimensions = self.hyperopt_space() + self.dimensions: List[Dimension] = self.hyperopt_space() self.opt = self.get_optimizer(self.dimensions, config_jobs) - if self.config.get('print_colorized', False): + if self.print_colorized: colorama_init(autoreset=True) try: @@ -439,19 +464,38 @@ class Hyperopt: self.opt.tell(asked, [v['loss'] for v in f_val]) self.fix_optimizer_models_list() for j in range(jobs): - # Use human-friendly index here (starting from 1) + # Use human-friendly indexes here (starting from 1) current = i * jobs + j + 1 val = f_val[j] val['current_epoch'] = current val['is_initial_point'] = current <= INITIAL_POINTS logger.debug(f"Optimizer epoch evaluated: {val}") - is_best = self.is_best(val) - self.log_results(val) + + is_best = self.is_best_loss(val, self.current_best_loss) + # This value is assigned here and not in the optimization method + # to keep proper order in the list of results. That's because + # evaluations can take different time. Here they are aligned in the + # order they will be shown to the user. + val['is_best'] = is_best + + self.print_results(val) + + if is_best: + self.current_best_loss = val['loss'] self.trials.append(val) + # Save results after each best epoch and every 100 epochs if is_best or current % 100 == 0: self.save_trials() except KeyboardInterrupt: print('User interrupted..') self.save_trials(final=True) - self.log_trials_result() + + if self.trials: + sorted_trials = sorted(self.trials, key=itemgetter('loss')) + results = sorted_trials[0] + self.print_epoch_details(results, self.total_epochs, self.print_json) + else: + # This is printed when Ctrl+C is pressed quickly, before first epochs have + # a chance to be evaluated. + print("No epochs evaluated yet, no best result.") diff --git a/freqtrade/utils.py b/freqtrade/utils.py index b8ab7504e..0139006d6 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -1,12 +1,14 @@ import logging import sys from collections import OrderedDict +from operator import itemgetter from pathlib import Path from typing import Any, Dict, List import arrow import csv import rapidjson +from colorama import init as colorama_init from tabulate import tabulate from freqtrade import OperationalException @@ -18,6 +20,7 @@ from freqtrade.data.history import (convert_trades_to_ohlcv, from freqtrade.exchange import (available_exchanges, ccxt_exchanges, market_is_active, symbol_is_pair) from freqtrade.misc import plural +from freqtrade.optimize.hyperopt import Hyperopt from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode @@ -236,3 +239,99 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: args.get('list_pairs_print_json', False) or args.get('print_csv', False)): print(f"{summary_str}.") + + +def start_hyperopt_list(args: Dict[str, Any]) -> None: + """ + """ + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + + only_best = config.get('hyperopt_list_best', False) + only_profitable = config.get('hyperopt_list_profitable', False) + print_colorized = config.get('print_colorized', False) + print_json = config.get('print_json', False) + no_details = config.get('hyperopt_list_no_details', False) + no_header = False + + trials_file = (config['user_data_dir'] / + 'hyperopt_results' / 'hyperopt_results.pickle') + + # Previous evaluations + trials = Hyperopt.load_previous_results(trials_file) + total_epochs = len(trials) + + trials = _hyperopt_filter_trials(trials, only_best, only_profitable) + + # TODO: fetch the interval for epochs to print from the cli option + epoch_start, epoch_stop = 0, None + + if print_colorized: + colorama_init(autoreset=True) + + try: + # Human-friendly indexes used here (starting from 1) + for val in trials[epoch_start:epoch_stop]: + Hyperopt.print_results_explanation(val, total_epochs, not only_best, print_colorized) + + except KeyboardInterrupt: + print('User interrupted..') + + if trials and not no_details: + sorted_trials = sorted(trials, key=itemgetter('loss')) + results = sorted_trials[0] + Hyperopt.print_epoch_details(results, total_epochs, print_json, no_header) + + +def start_hyperopt_show(args: Dict[str, Any]) -> None: + """ + """ + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + + only_best = config.get('hyperopt_list_best', False) + only_profitable = config.get('hyperopt_list_profitable', False) + no_header = config.get('hyperopt_show_no_header', False) + + trials_file = (config['user_data_dir'] / + 'hyperopt_results' / 'hyperopt_results.pickle') + + # Previous evaluations + trials = Hyperopt.load_previous_results(trials_file) + total_epochs = len(trials) + + trials = _hyperopt_filter_trials(trials, only_best, only_profitable) + + n = config.get('hyperopt_show_index', -1) + if n > total_epochs: + raise OperationalException( + f"The index of the epoch to show should be less than {total_epochs + 1}.") + if n < -total_epochs: + raise OperationalException( + f"The index of the epoch to showshould be greater than {-total_epochs - 1}.") + + # Translate epoch index from human-readable format to pythonic + if n > 0: + n -= 1 + + print_json = config.get('print_json', False) + + if trials: + val = trials[n] + Hyperopt.print_epoch_details(val, total_epochs, print_json, no_header, + header_str="Epoch details") + + +def _hyperopt_filter_trials(trials: List, only_best: bool, only_profitable: bool) -> List: + """ + Filter our items from the list of hyperopt results + """ + if only_best: + trials = [x for x in trials if x['is_best']] + if only_profitable: + trials = [x for x in trials if x['results_metrics']['profit'] > 0] + + logger.info(f"{len(trials)} " + + ("best " if only_best else "") + + ("profitable " if only_profitable else "") + + "epochs found.") + + return trials From f2cd4fdafe989bd6d8713d19126d1dfdf8a646ba Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 27 Nov 2019 05:12:54 +0300 Subject: [PATCH 1090/3421] Fix the rest of tests --- tests/test_freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 31e9f8750..841bf8a6a 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -426,7 +426,7 @@ def test_get_min_pair_stake_amount(mocker, default_conf) -> None: PropertyMock(return_value=markets) ) result = freqtrade._get_min_pair_stake_amount('ETH/BTC', 2) - assert result == min(2, 2 * 2) / 0.9 + assert result == max(2, 2 * 2) / 0.9 # min amount and cost are set (amount is minial) markets["ETH/BTC"]["limits"] = { @@ -438,7 +438,7 @@ def test_get_min_pair_stake_amount(mocker, default_conf) -> None: PropertyMock(return_value=markets) ) result = freqtrade._get_min_pair_stake_amount('ETH/BTC', 2) - assert result == min(8, 2 * 2) / 0.9 + assert result == max(8, 2 * 2) / 0.9 def test_get_min_pair_stake_amount_real_data(mocker, default_conf) -> None: From a373e48939f74c73091d7d010988861c64cf2ee4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 27 Nov 2019 14:53:01 +0300 Subject: [PATCH 1091/3421] Comment added --- freqtrade/freqtradebot.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index b5d157635..ec341ff0a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -266,6 +266,10 @@ class FreqtradeBot: amount_reserve_percent += self.strategy.stoploss # it should not be more than 50% amount_reserve_percent = max(amount_reserve_percent, 0.5) + + # The value returned should satisfy both limits: for amount (base currency) and + # for cost (quote, stake currency), so max() is used here. + # See also #2575 at github. return max(min_stake_amounts) / amount_reserve_percent def create_trades(self) -> bool: From f0e6a9e0e3973452e18c562cd2188e202210e2ac Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 27 Nov 2019 14:18:40 +0100 Subject: [PATCH 1092/3421] Address feedback --- docs/bot-usage.md | 6 +++--- docs/configuration.md | 40 ++++++++++++++++++++-------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 4665878d4..25818aea6 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -89,9 +89,9 @@ The bot allows you to use multiple configuration files by specifying multiple defined in the latter configuration files override parameters with the same name defined in the previous configuration files specified in the command line earlier. -For example, you can make a separate configuration file with your key and secrete +For example, you can make a separate configuration file with your key and secret for the Exchange you use for trading, specify default configuration file with -empty key and secrete values while running in the Dry Mode (which does not actually +empty key and secret values while running in the Dry Mode (which does not actually require them): ```bash @@ -104,7 +104,7 @@ and specify both configuration files when running in the normal Live Trade Mode: freqtrade trade -c ./config.json -c path/to/secrets/keys.config.json ``` -This could help you hide your private Exchange key and Exchange secrete on you local machine +This could help you hide your private Exchange key and Exchange secret on you local machine by setting appropriate file permissions for the file which contains actual secrets and, additionally, prevent unintended disclosure of sensitive private data when you publish examples of your configuration in the project issues or in the Internet. diff --git a/docs/configuration.md b/docs/configuration.md index 296c19d36..76bfe8339 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -43,16 +43,16 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades) | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy). | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance. [Strategy Override](#parameters-in-the-strategy). -| `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stop-loss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).* -| `ticker_interval` | The ticker interval to use (1min, 5 min, 15 min, 30 min, 1 hour or 1 day). Default is 5 minutes. [Strategy Override](#parameters-in-the-strategy). -| `fiat_display_currency` | Fiat currency used to show your profits. More information below. -| `dry_run` | **Required.** Define if the bot must be in Dry-run or production mode.
      *Defaults to `true`.* +| `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).* +| `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy). +| `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency). +| `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
      *Defaults to `true`.* | `dry_run_wallet` | Overrides the default amount of 999.9 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason. | `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.* -| `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. More information below. [Strategy Override](#parameters-in-the-strategy). -| `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More information below. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_stop` | Enables trailing stop-loss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_stop_positive` | Changes stop-loss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy). +| `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `trailing_stop` | Enables trailing stoploss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). +| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). | `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `0.0` (no offset).* | `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.* | `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. @@ -60,7 +60,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `bid_strategy.ask_last_balance` | **Required.** Set the bidding price. More information [below](#understand-ask_last_balance). | `bid_strategy.use_order_book` | Enable buying using the rates in Order Book Bids. | `bid_strategy.order_book_top` | Bot will use the top N rate in Order Book Bids. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids. *Defaults to `1`.* -| `bid_strategy. check_depth_of_market.enabled` | Does not buy if the difference of buy orders and sell orders is met in Order Book.
      *Defaults to `false`.* +| `bid_strategy. check_depth_of_market.enabled` | Do not buy if the difference of buy orders and sell orders is met in Order Book.
      *Defaults to `false`.* | `bid_strategy. check_depth_of_market.bids_to_ask_delta` | The % difference of buy orders and sell orders found in Order Book. A value lesser than 1 means sell orders is greater, while value greater than 1 means buy orders is higher. *Defaults to `0`.* | `ask_strategy.use_order_book` | Enable selling of open trades using Order Book Asks. | `ask_strategy.order_book_min` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.* @@ -72,9 +72,9 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `order_time_in_force` | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy). | `exchange.name` | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename). | `exchange.sandbox` | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details. -| `exchange.key` | API key to use for the exchange. Only required when you are in production mode. **Keep it in secrete, do not disclose publicly.** -| `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode. **Keep it in secrete, do not disclose publicly.** -| `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. **Keep it in secrete, do not disclose publicly.** +| `exchange.key` | API key to use for the exchange. Only required when you are in production mode. **Keep it in secret, do not disclose publicly.** +| `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode. **Keep it in secret, do not disclose publicly.** +| `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. **Keep it in secret, do not disclose publicly.** | `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)). | `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)). | `exchange.ccxt_config` | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) @@ -84,22 +84,22 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
      *Defaults to `true`.* | `pairlists` | Define one or more pairlists to be used. [More information below](#dynamic-pairlists).
      *Defaults to `StaticPairList`.* | `telegram.enabled` | Enable the usage of Telegram. -| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`. **Keep it in secrete, do not disclose publicly.** -| `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. **Keep it in secrete, do not disclose publicly.** +| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`. **Keep it in secret, do not disclose publicly.** +| `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. **Keep it in secret, do not disclose publicly.** | `webhook.enabled` | Enable usage of Webhook notifications | `webhook.url` | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. | `webhook.webhookbuy` | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. | `webhook.webhooksell` | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. | `webhook.webhookstatus` | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. -| `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `True`, and to `sqlite:///tradesv3.sqlite` for production instances. +| `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances. | `initial_state` | Defines the initial application state. More information below.
      *Defaults to `stopped`.* -| `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below. -| `strategy` | **Required** Defines Strategy class to use. Recommended to set via `--strategy NAME`. +| `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below. +| `strategy` | **Required** Defines Strategy class to use. Recommended to be set via `--strategy NAME`. | `strategy_path` | Adds an additional strategy lookup path (must be a directory). | `internals.process_throttle_secs` | Set the process throttle. Value in second.
      *Defaults to `5` seconds.* -| `internals.heartbeat_interval` | Print heartbeat message every X seconds. Set to 0 to disable heartbeat messages.
      *Defaults to `60` seconds.* +| `internals.heartbeat_interval` | Print heartbeat message every N seconds. Set to 0 to disable heartbeat messages.
      *Defaults to `60` seconds.* | `internals.sd_notify` | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. -| `logfile` | Specify Logfile. Uses a rolling strategy of 10 files, with 1Mb per file. +| `logfile` | Specifies logfile name. Uses a rolling strategy for log file rotation for 10 files with the 1MB limit per file. | `user_data_dir` | Directory containing user data.
      *Defaults to `./user_data/`*. ### Parameters in the strategy @@ -475,7 +475,7 @@ creating trades on the exchange. "db_url": "sqlite:///tradesv3.dryrun.sqlite", ``` -3. Remove your Exchange API key and secrete (change them by empty values or fake credentials): +3. Remove your Exchange API key and secret (change them by empty values or fake credentials): ```json "exchange": { From 64da8771617802d77b1d73e8fa90e7d8cc08a500 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 27 Nov 2019 14:24:14 +0100 Subject: [PATCH 1093/3421] Update stake_amount description --- docs/configuration.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 76bfe8339..a327ae343 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -42,7 +42,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi |----------|-------------| | `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades) | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy). -| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Per default, the bot will use (0.05 BTC x 3) = 0.15 BTC in total will be always engaged. Set it to `"unlimited"` to allow the bot to use all available balance. [Strategy Override](#parameters-in-the-strategy). +| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#understand-stake_amount). [Strategy Override](#parameters-in-the-strategy). | `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).* | `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy). | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency). @@ -126,15 +126,19 @@ Values set in the configuration file always overwrite values set in the strategy ### Understand stake_amount The `stake_amount` configuration parameter is an amount of crypto-currency your bot will use for each trade. -The minimal value is 0.0005. If there is not enough crypto-currency in -the account an exception is generated. + +The minimal configuration value is 0.0001. Please check your exchange's trading minimums to avoid problems. + +This setting works in combination with `max_open_trades`. The maximum capital engaged in trades is `stake_amount * max_open_trades`. +For example, the bot will at most use (0.05 BTC x 3) = 0.15 BTC, assuming a configuration of `max_open_trades=3` and `stake_amount=0.05`. + To allow the bot to trade all the available `stake_currency` in your account set ```json "stake_amount" : "unlimited", ``` -In this case a trade amount is calclulated as: +In this case a trade amount is calculated as: ```python currency_balance / (max_open_trades - current_open_trades) From 111f018c85e98f777f27cad3eb80b3d322155114 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 27 Nov 2019 14:46:09 +0100 Subject: [PATCH 1094/3421] Add datatype to configuration documentation --- docs/configuration.md | 125 +++++++++++++++++++++-------------------- freqtrade/constants.py | 9 +-- 2 files changed, 70 insertions(+), 64 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index a327ae343..2d0764f0c 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -40,67 +40,72 @@ Mandatory parameters are marked as **Required**, which means that they are requi | Command | Description | |----------|-------------| -| `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades) -| `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy). -| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#understand-stake_amount). [Strategy Override](#parameters-in-the-strategy). -| `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).* -| `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy). -| `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency). -| `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
      *Defaults to `true`.* -| `dry_run_wallet` | Overrides the default amount of 999.9 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason. -| `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.* -| `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy). -| `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_stop` | Enables trailing stoploss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). -| `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `0.0` (no offset).* -| `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.* -| `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. -| `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. -| `bid_strategy.ask_last_balance` | **Required.** Set the bidding price. More information [below](#understand-ask_last_balance). -| `bid_strategy.use_order_book` | Enable buying using the rates in Order Book Bids. -| `bid_strategy.order_book_top` | Bot will use the top N rate in Order Book Bids. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids. *Defaults to `1`.* -| `bid_strategy. check_depth_of_market.enabled` | Do not buy if the difference of buy orders and sell orders is met in Order Book.
      *Defaults to `false`.* -| `bid_strategy. check_depth_of_market.bids_to_ask_delta` | The % difference of buy orders and sell orders found in Order Book. A value lesser than 1 means sell orders is greater, while value greater than 1 means buy orders is higher. *Defaults to `0`.* -| `ask_strategy.use_order_book` | Enable selling of open trades using Order Book Asks. -| `ask_strategy.order_book_min` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.* -| `ask_strategy.order_book_max` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.* -| `ask_strategy.use_sell_signal` | Use sell signals produced by the strategy in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `true`.* -| `ask_strategy.sell_profit_only` | Wait until the bot makes a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.* -| `ask_strategy.ignore_roi_if_buy_signal` | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.* -| `order_types` | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy). -| `order_time_in_force` | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy). -| `exchange.name` | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename). -| `exchange.sandbox` | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details. -| `exchange.key` | API key to use for the exchange. Only required when you are in production mode. **Keep it in secret, do not disclose publicly.** -| `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode. **Keep it in secret, do not disclose publicly.** -| `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. **Keep it in secret, do not disclose publicly.** -| `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)). -| `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)). -| `exchange.ccxt_config` | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) -| `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) -| `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded.
      *Defaults to `60` minutes.* +| `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades).
      ***Datatype:*** *Positive integer (-1 to use `"unlimited"` trades).* +| `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* +| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#understand-stake_amount). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive number or `"unlimited"`.* +| `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      ***Datatype:*** *Positive number as ratio.* +| `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* +| `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* +| `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
      *Defaults to `true`.*
      ***Datatype:*** *Boolean* +| `dry_run_wallet` | Overrides the default amount of 999.9 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason.
      ***Datatype:*** *Float* +| `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* +| `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Dict* +| `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Float (as ratio)* +| `trailing_stop` | Enables trailing stoploss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Boolean* +| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Float* +| `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `0.0` (no offset).*
      ***Datatype:*** *Float* +| `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* +| `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled.
      ***Datatype:*** *Integer* +| `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled.
      ***Datatype:*** *Integer* +| `bid_strategy.ask_last_balance` | **Required.** Set the bidding price. More information [below](#understand-ask_last_balance). +| `bid_strategy.use_order_book` | Enable buying using the rates in Order Book Bids.
      ***Datatype:*** *Boolean* +| `bid_strategy.order_book_top` | Bot will use the top N rate in Order Book Bids. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids. *Defaults to `1`.*
      ***Datatype:*** *Positive Integer* +| `bid_strategy. check_depth_of_market.enabled` | Do not buy if the difference of buy orders and sell orders is met in Order Book.
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* +| `bid_strategy. check_depth_of_market.bids_to_ask_delta` | The % difference of buy orders and sell orders found in Order Book. A value lesser than 1 means sell orders is greater, while value greater than 1 means buy orders is higher. *Defaults to `0`.*
      ***Datatype:*** *Float (as ratio)* +| `ask_strategy.use_order_book` | Enable selling of open trades using Order Book Asks.
      ***Datatype:*** *Boolean* +| `ask_strategy.order_book_min` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.*
      ***Datatype:*** *Positive Integer* +| `ask_strategy.order_book_max` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.*
      ***Datatype:*** *Positive Integer* +| `ask_strategy.use_sell_signal` | Use sell signals produced by the strategy in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `true`.*
      ***Datatype:*** *Boolean* +| `ask_strategy.sell_profit_only` | Wait until the bot makes a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* +| `ask_strategy.ignore_roi_if_buy_signal` | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* +| `order_types` | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Dict* +| `order_time_in_force` | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Dict* +| `exchange.name` | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename).
      ***Datatype:*** *String* +| `exchange.sandbox` | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details.
      ***Datatype:*** *Boolean* +| `exchange.key` | API key to use for the exchange. Only required when you are in production mode. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)).
      ***Datatype:*** *List* +| `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)).
      ***Datatype:*** *List* +| `exchange.ccxt_config` | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
      ***Datatype:*** *Dict* +| `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
      ***Datatype:*** *Dict* +| `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded.
      *Defaults to `60` minutes.*
      ***Datatype:*** *Integer* | `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation. -| `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
      *Defaults to `true`.* -| `pairlists` | Define one or more pairlists to be used. [More information below](#dynamic-pairlists).
      *Defaults to `StaticPairList`.* -| `telegram.enabled` | Enable the usage of Telegram. -| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`. **Keep it in secret, do not disclose publicly.** -| `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. **Keep it in secret, do not disclose publicly.** -| `webhook.enabled` | Enable usage of Webhook notifications -| `webhook.url` | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details. -| `webhook.webhookbuy` | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. -| `webhook.webhooksell` | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. -| `webhook.webhookstatus` | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details. -| `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances. -| `initial_state` | Defines the initial application state. More information below.
      *Defaults to `stopped`.* -| `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below. -| `strategy` | **Required** Defines Strategy class to use. Recommended to be set via `--strategy NAME`. -| `strategy_path` | Adds an additional strategy lookup path (must be a directory). -| `internals.process_throttle_secs` | Set the process throttle. Value in second.
      *Defaults to `5` seconds.* -| `internals.heartbeat_interval` | Print heartbeat message every N seconds. Set to 0 to disable heartbeat messages.
      *Defaults to `60` seconds.* -| `internals.sd_notify` | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details. -| `logfile` | Specifies logfile name. Uses a rolling strategy for log file rotation for 10 files with the 1MB limit per file. -| `user_data_dir` | Directory containing user data.
      *Defaults to `./user_data/`*. +| `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
      *Defaults to `true`.*
      ***Datatype:*** *Boolean* +| `pairlists` | Define one or more pairlists to be used. [More information below](#dynamic-pairlists).
      *Defaults to `StaticPairList`.*
      ***Datatype:*** *List of Dicts* +| `telegram.enabled` | Enable the usage of Telegram.
      ***Datatype:*** *Boolean* +| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `webhook.enabled` | Enable usage of Webhook notifications
      ***Datatype:*** *Boolean* +| `webhook.url` | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *Boolean* +| `webhook.webhookbuy` | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
      ***Datatype:*** *String* +| `webhook.webhooksell` | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
      ***Datatype:*** *String* +| `webhook.webhookstatus` | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
      ***Datatype:*** *String* +| `api_server.enabled` | Enable usage of API Server. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *Boolean* +| `api_server.listen_ip_address` | Bind IP address. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *IPv4* +| `api_server.listen_port` | Bind Port. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *Integer between 1024 and 65535* +| `api_server.username` | Username for API server. See the [API Server documentation](rest-api.md) for more details. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `api_server.password` | Password for API server. See the [API Server documentation](rest-api.md) for more details. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances.
      ***Datatype:*** *String, SQLAlchemy connect string* +| `initial_state` | Defines the initial application state. More information below.
      *Defaults to `stopped`.*
      ***Datatype:*** *Enum, either `stopped` or `running`* +| `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below.
      ***Datatype:*** *Boolean* +| `strategy` | **Required** Defines Strategy class to use. Recommended to be set via `--strategy NAME`.
      ***Datatype:*** *ClassName* +| `strategy_path` | Adds an additional strategy lookup path (must be a directory).
      ***Datatype:*** *String* +| `internals.process_throttle_secs` | Set the process throttle. Value in second.
      *Defaults to `5` seconds.*
      ***Datatype:*** *Integer* +| `internals.heartbeat_interval` | Print heartbeat message every N seconds. Set to 0 to disable heartbeat messages.
      *Defaults to `60` seconds.*
      ***Datatype:*** *Integer* +| `internals.sd_notify` | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details.
      ***Datatype:*** *Boolean* +| `logfile` | Specifies logfile name. Uses a rolling strategy for log file rotation for 10 files with the 1MB limit per file.
      ***Datatype:*** *String* +| `user_data_dir` | Directory containing user data.
      *Defaults to `./user_data/`*.
      ***Datatype:*** *String* ### Parameters in the strategy diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 0d52bf405..f5e5969eb 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -106,7 +106,7 @@ CONF_SCHEMA = { 'maximum': 1, 'exclusiveMaximum': False, 'use_order_book': {'type': 'boolean'}, - 'order_book_top': {'type': 'number', 'maximum': 20, 'minimum': 1}, + 'order_book_top': {'type': 'integer', 'maximum': 20, 'minimum': 1}, 'check_depth_of_market': { 'type': 'object', 'properties': { @@ -122,8 +122,8 @@ CONF_SCHEMA = { 'type': 'object', 'properties': { 'use_order_book': {'type': 'boolean'}, - 'order_book_min': {'type': 'number', 'minimum': 1}, - 'order_book_max': {'type': 'number', 'minimum': 1, 'maximum': 50}, + 'order_book_min': {'type': 'integer', 'minimum': 1}, + 'order_book_max': {'type': 'integer', 'minimum': 1, 'maximum': 50}, 'use_sell_signal': {'type': 'boolean'}, 'sell_profit_only': {'type': 'boolean'}, 'ignore_roi_if_buy_signal': {'type': 'boolean'} @@ -210,7 +210,7 @@ CONF_SCHEMA = { 'internals': { 'type': 'object', 'properties': { - 'process_throttle_secs': {'type': 'number'}, + 'process_throttle_secs': {'type': 'integer'}, 'interval': {'type': 'integer'}, 'sd_notify': {'type': 'boolean'}, } @@ -278,5 +278,6 @@ CONF_SCHEMA = { 'bid_strategy', 'unfilledtimeout', 'stoploss', + 'minimal_roi', ] } From 997c4262283e1a413fc9139e0e6a71650145224b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 27 Nov 2019 16:51:03 +0100 Subject: [PATCH 1095/3421] fix some datatypes --- docs/configuration.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 2d0764f0c..024760fb9 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -40,10 +40,10 @@ Mandatory parameters are marked as **Required**, which means that they are requi | Command | Description | |----------|-------------| -| `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades).
      ***Datatype:*** *Positive integer (-1 to use `"unlimited"` trades).* +| `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades).
      ***Datatype:*** *Positive integer or -1.* | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* -| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#understand-stake_amount). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive number or `"unlimited"`.* -| `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      ***Datatype:*** *Positive number as ratio.* +| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#understand-stake_amount). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* +| `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      ***Datatype:*** *Positive Float as ratio.* | `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* | `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
      *Defaults to `true`.*
      ***Datatype:*** *Boolean* @@ -79,7 +79,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)).
      ***Datatype:*** *List* | `exchange.ccxt_config` | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
      ***Datatype:*** *Dict* | `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
      ***Datatype:*** *Dict* -| `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded.
      *Defaults to `60` minutes.*
      ***Datatype:*** *Integer* +| `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded.
      *Defaults to `60` minutes.*
      ***Datatype:*** *Positive Integer* | `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation. | `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
      *Defaults to `true`.*
      ***Datatype:*** *Boolean* | `pairlists` | Define one or more pairlists to be used. [More information below](#dynamic-pairlists).
      *Defaults to `StaticPairList`.*
      ***Datatype:*** *List of Dicts* @@ -87,7 +87,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* | `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* | `webhook.enabled` | Enable usage of Webhook notifications
      ***Datatype:*** *Boolean* -| `webhook.url` | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *Boolean* +| `webhook.url` | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* | `webhook.webhookbuy` | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
      ***Datatype:*** *String* | `webhook.webhooksell` | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
      ***Datatype:*** *String* | `webhook.webhookstatus` | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
      ***Datatype:*** *String* @@ -101,8 +101,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below.
      ***Datatype:*** *Boolean* | `strategy` | **Required** Defines Strategy class to use. Recommended to be set via `--strategy NAME`.
      ***Datatype:*** *ClassName* | `strategy_path` | Adds an additional strategy lookup path (must be a directory).
      ***Datatype:*** *String* -| `internals.process_throttle_secs` | Set the process throttle. Value in second.
      *Defaults to `5` seconds.*
      ***Datatype:*** *Integer* -| `internals.heartbeat_interval` | Print heartbeat message every N seconds. Set to 0 to disable heartbeat messages.
      *Defaults to `60` seconds.*
      ***Datatype:*** *Integer* +| `internals.process_throttle_secs` | Set the process throttle. Value in second.
      *Defaults to `5` seconds.*
      ***Datatype:*** *Positive Integer* +| `internals.heartbeat_interval` | Print heartbeat message every N seconds. Set to 0 to disable heartbeat messages.
      *Defaults to `60` seconds.*
      ***Datatype:*** *Positive Integer or 0* | `internals.sd_notify` | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details.
      ***Datatype:*** *Boolean* | `logfile` | Specifies logfile name. Uses a rolling strategy for log file rotation for 10 files with the 1MB limit per file.
      ***Datatype:*** *String* | `user_data_dir` | Directory containing user data.
      *Defaults to `./user_data/`*.
      ***Datatype:*** *String* From c3d7411668f306c77a5c256b5131a49156f7891e Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 27 Nov 2019 19:35:22 +0300 Subject: [PATCH 1096/3421] Fix imports --- freqtrade/utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 99e8c3918..3fc0c245c 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -23,7 +23,6 @@ from freqtrade.data.history import (convert_trades_to_ohlcv, from freqtrade.exchange import (available_exchanges, ccxt_exchanges, market_is_active, symbol_is_pair) from freqtrade.misc import plural, render_template -from freqtrade.optimize.hyperopt import Hyperopt from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode @@ -330,6 +329,8 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: def start_hyperopt_list(args: Dict[str, Any]) -> None: """ """ + from freqtrade.optimize.hyperopt import Hyperopt + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) only_best = config.get('hyperopt_list_best', False) @@ -371,6 +372,8 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: def start_hyperopt_show(args: Dict[str, Any]) -> None: """ """ + from freqtrade.optimize.hyperopt import Hyperopt + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) only_best = config.get('hyperopt_list_best', False) From 8f9b5095b5a467d1b0f328de5cae92ffb659daf4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 27 Nov 2019 22:52:43 +0300 Subject: [PATCH 1097/3421] Fix some tests --- freqtrade/optimize/hyperopt.py | 7 ++++- tests/optimize/test_hyperopt.py | 50 +++++++++++++++++++++++++++------ 2 files changed, 47 insertions(+), 10 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 2ef8ddc2f..d2404beb5 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -181,7 +181,7 @@ class Hyperopt: """ Display details of the hyperopt result """ - params = results['params_details'] + params = results.get('params_details', {}) # Default header string if header_str is None: @@ -335,6 +335,11 @@ class Hyperopt: 'end_date': max_date, } ) + return self._get_results_dict(backtesting_results, min_date, max_date, + params_dict, params_details) + + def _get_results_dict(self, backtesting_results, min_date, max_date, + params_dict, params_details): results_metrics = self._calculate_results_metrics(backtesting_results) results_explanation = self._format_results_explanation_string(results_metrics) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index d3d544502..d18263ea2 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -357,8 +357,9 @@ def test_onlyprofit_loss_prefers_higher_profits(default_conf, hyperopt_results) def test_log_results_if_loss_improves(hyperopt, capsys) -> None: hyperopt.current_best_loss = 2 hyperopt.total_epochs = 2 - hyperopt.log_results( + hyperopt.print_results( { + 'is_best': False, 'loss': 1, 'current_epoch': 2, # This starts from 1 (in a human-friendly manner) 'results_explanation': 'foo.', @@ -371,8 +372,9 @@ def test_log_results_if_loss_improves(hyperopt, capsys) -> None: def test_no_log_if_loss_does_not_improve(hyperopt, caplog) -> None: hyperopt.current_best_loss = 2 - hyperopt.log_results( + hyperopt.print_results( { + 'is_best': False, 'loss': 3, 'current_epoch': 1, } @@ -400,8 +402,8 @@ def test_save_trials_saves_trials(mocker, hyperopt, testdatadir, caplog) -> None def test_read_trials_returns_trials_file(mocker, hyperopt, testdatadir, caplog) -> None: trials = create_trials(mocker, hyperopt, testdatadir) mock_load = mocker.patch('freqtrade.optimize.hyperopt.load', return_value=trials) - hyperopt_trial = hyperopt.read_trials() trials_file = testdatadir / 'optimize' / 'ut_trials.pickle' + hyperopt_trial = hyperopt._read_trials(trials_file) assert log_has(f"Reading Trials from '{trials_file}'", caplog) assert hyperopt_trial == trials mock_load.assert_called_once() @@ -472,8 +474,8 @@ def test_format_results(hyperopt): ] labels = ['currency', 'profit_percent', 'profit_abs', 'trade_duration'] df = pd.DataFrame.from_records(trades, columns=labels) - - result = hyperopt.format_results(df) + results_metrics = hyperopt._calculate_results_metrics(df) + result = hyperopt._format_explanation_string(results_metrics, 1) assert result.find(' 66.67%') assert result.find('Total profit 1.00000000 BTC') assert result.find('2.0000Σ %') @@ -485,7 +487,8 @@ def test_format_results(hyperopt): ('XPR/EUR', -1, -2, -246) ] df = pd.DataFrame.from_records(trades, columns=labels) - result = hyperopt.format_results(df) + results_metrics = hyperopt._calculate_results_metrics(df) + result = hyperopt._format_explanation_string(results_metrics, 1) assert result.find('Total profit 1.00000000 EUR') @@ -594,10 +597,38 @@ def test_generate_optimizer(mocker, default_conf) -> None: } response_expected = { 'loss': 1.9840569076926293, - 'results_explanation': (' 1 trades. Avg profit 2.31%. Total profit 0.00023300 BTC ' + 'results_explanation': (' 1 trades. Avg profit 2.31%. Total profit 0.00023300 BTC ' '( 2.31\N{GREEK CAPITAL LETTER SIGMA}%). Avg duration 100.0 mins.' ).encode(locale.getpreferredencoding(), 'replace').decode('utf-8'), - 'params': optimizer_param, + 'params_details': {'buy': {'adx-enabled': False, + 'adx-value': 0, + 'fastd-enabled': True, + 'fastd-value': 35, + 'mfi-enabled': False, + 'mfi-value': 0, + 'rsi-enabled': False, + 'rsi-value': 0, + 'trigger': 'macd_cross_signal'}, + 'roi': {0: 0.12000000000000001, + 20.0: 0.02, + 50.0: 0.01, + 110.0: 0}, + 'sell': {'sell-adx-enabled': False, + 'sell-adx-value': 0, + 'sell-fastd-enabled': True, + 'sell-fastd-value': 75, + 'sell-mfi-enabled': False, + 'sell-mfi-value': 0, + 'sell-rsi-enabled': False, + 'sell-rsi-value': 0, + 'sell-trigger': 'macd_cross_signal'}, + 'stoploss': -0.4}, + 'params_dict': optimizer_param, + 'results_metrics': {'avg_profit': 2.3117, + 'duration': 100.0, + 'profit': 2.3117, + 'total_profit': 0.000233, + 'trade_count': 1}, 'total_profit': 0.00023300 } @@ -692,7 +723,8 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', - MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}]) + MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}, + 'params_details': {'roi': {}, 'stoploss': None}}]) ) patch_exchange(mocker) From 9199fd5964e72f6ee35f973eb405731b5ebbae9b Mon Sep 17 00:00:00 2001 From: gaugau3000 Date: Thu, 28 Nov 2019 21:21:43 +0100 Subject: [PATCH 1098/3421] change doc into --- docs/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 206d635c6..6d9951a67 100644 --- a/docs/index.md +++ b/docs/index.md @@ -12,8 +12,7 @@
      Follow @freqtrade ## Introduction -Freqtrade is a cryptocurrency trading bot written in Python. - +Freqtrade is a crypto-currency algorithmic trading software develop in python (3.6+) supported on windows, macOs and Linux. !!! Danger "DISCLAIMER" This software is for educational purposes only. Do not risk money which you are afraid to lose. USE THE SOFTWARE AT YOUR OWN RISK. THE AUTHORS AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR TRADING RESULTS. From 0e9e6b34438105ebc1f8dafa657c32fed815525b Mon Sep 17 00:00:00 2001 From: gaugau3000 Date: Thu, 28 Nov 2019 21:22:40 +0100 Subject: [PATCH 1099/3421] refactor feature details doc --- docs/index.md | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/docs/index.md b/docs/index.md index 6d9951a67..d5eb271d9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -22,18 +22,13 @@ Freqtrade is a crypto-currency algorithmic trading software develop in python (3 ## Features - - Based on Python 3.6+: For botting on any operating system — Windows, macOS and Linux. - - Persistence: Persistence is achieved through sqlite database. - - Dry-run mode: Run the bot without playing money. - - Backtesting: Run a simulation of your buy/sell strategy with historical data. - - Strategy Optimization by machine learning: Use machine learning to optimize your buy/sell strategy parameters with real exchange data. - - Edge position sizing: Calculate your win rate, risk reward ratio, the best stoploss and adjust your position size before taking a position for each specific market. - - Whitelist crypto-currencies: Select which crypto-currency you want to trade or use dynamic whitelists based on market (pair) trade volume. - - Blacklist crypto-currencies: Select which crypto-currency you want to avoid. - - Manageable via Telegram or REST APi: Manage the bot with Telegram or via the builtin REST API. - - Display profit/loss in fiat: Display your profit/loss in any of 33 fiat currencies supported. - - Daily summary of profit/loss: Receive the daily summary of your profit/loss. - - Performance status report: Receive the performance status of your current trades. + 1. Download markets datas : download historical datas of the exchange and the markets your may want to trade with. + 2. Select markets : create your list or use an automatic one based on top traded volume (not available during backtesting). You can blacklist markets you don't want to trade. + 3. Backtest : Test your strategy on past datas (based on [ohcl](https://en.wikipedia.org/wiki/Open-high-low-close_chart) candles). + 4. Optimize : Find the best parameters for your strategy (use machine leaning) + 5. Run : Run the bot on exchange without playing money (dry-run) or with money (live). + 6. Run using edge (optionnal module) : the concept is to find the best historical [trade expectancy](https://www.freqtrade.io/en/latest/edge/#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade (the sizing of the trade is based on a risk of a percentage of your capital) + 7. Control/Monitor/Analyse : use Telegram or a REST API (start/stop the bot, profit/loss, daily summary, current open trades results...). Futher analysis can be done as trades are saved (SQLite database) ## Requirements From 58d70b2079638244b51d84fd297c0e5dd8a77213 Mon Sep 17 00:00:00 2001 From: gaugau3000 Date: Fri, 29 Nov 2019 09:35:13 +0100 Subject: [PATCH 1100/3421] doc explicit optimization feature --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index d5eb271d9..5871479d9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -25,7 +25,7 @@ Freqtrade is a crypto-currency algorithmic trading software develop in python (3 1. Download markets datas : download historical datas of the exchange and the markets your may want to trade with. 2. Select markets : create your list or use an automatic one based on top traded volume (not available during backtesting). You can blacklist markets you don't want to trade. 3. Backtest : Test your strategy on past datas (based on [ohcl](https://en.wikipedia.org/wiki/Open-high-low-close_chart) candles). - 4. Optimize : Find the best parameters for your strategy (use machine leaning) + 4. Optimize : Find the best parameters for your strategy (use machining learning). You can optimize buy, sell, take profit and stop-loss. 5. Run : Run the bot on exchange without playing money (dry-run) or with money (live). 6. Run using edge (optionnal module) : the concept is to find the best historical [trade expectancy](https://www.freqtrade.io/en/latest/edge/#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade (the sizing of the trade is based on a risk of a percentage of your capital) 7. Control/Monitor/Analyse : use Telegram or a REST API (start/stop the bot, profit/loss, daily summary, current open trades results...). Futher analysis can be done as trades are saved (SQLite database) From 153434561dc598d8857cf3e31ef09a16f5e6a05e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 Nov 2019 19:53:22 +0100 Subject: [PATCH 1101/3421] Add test_pairlist method --- freqtrade/configuration/arguments.py | 13 ++++++++++++- freqtrade/pairlist/PrecisionFilter.py | 1 + freqtrade/utils.py | 20 ++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index b23366d7a..3add8e04a 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -37,6 +37,8 @@ ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"] ARGS_LIST_PAIRS = ["exchange", "print_list", "list_pairs_print_json", "print_one_column", "print_csv", "base_currencies", "quote_currencies", "list_pairs_all"] +ARGS_TEST_PAIRLIST = ["config", "quote_currencies"] + ARGS_CREATE_USERDIR = ["user_data_dir", "reset"] ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "template"] @@ -63,6 +65,7 @@ class Arguments: """ Arguments Class. Manage the arguments received by the cli """ + def __init__(self, args: Optional[List[str]]) -> None: self.args = args self._parsed_arg: Optional[argparse.Namespace] = None @@ -122,7 +125,7 @@ class Arguments: from freqtrade.utils import (start_create_userdir, start_download_data, start_list_exchanges, start_list_markets, start_new_hyperopt, start_new_strategy, - start_list_timeframes, start_trading) + start_list_timeframes, start_test_pairlist, start_trading) from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit subparsers = self.parser.add_subparsers(dest='command', @@ -211,6 +214,14 @@ class Arguments: list_pairs_cmd.set_defaults(func=partial(start_list_markets, pairs_only=True)) self._build_args(optionlist=ARGS_LIST_PAIRS, parser=list_pairs_cmd) + # Add test-pairlist subcommand + test_pairlist_cmd = subparsers.add_parser( + 'test-pairlist', + help='Test your pairlist configuration.', + ) + test_pairlist_cmd.set_defaults(func=start_test_pairlist) + self._build_args(optionlist=ARGS_TEST_PAIRLIST, parser=test_pairlist_cmd) + # Add download-data subcommand download_data_cmd = subparsers.add_parser( 'download-data', diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index d7b2c96ae..aedcc5a88 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -48,6 +48,7 @@ class PrecisionFilter(IPairList): """ Filters and sorts pairlists and assigns and returns them again. """ + stoploss = None if self._config.get('stoploss') is not None: # Precalculate sanitized stoploss value to avoid recalculation for every pair stoploss = 1 - abs(self._config.get('stoploss')) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index c71080d5a..f43bdaed2 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -322,3 +322,23 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: args.get('list_pairs_print_json', False) or args.get('print_csv', False)): print(f"{summary_str}.") + + +def start_test_pairlist(args: Dict[str, Any]) -> None: + """ + Test Pairlists + """ + from freqtrade.pairlist.pairlistmanager import PairListManager + config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) + + exchange = ExchangeResolver(config['exchange']['name'], config, validate=False).exchange + + quote_currencies = args.get('quote_currencies', [config.get('stake_currency')]) + + for curr in quote_currencies: + config['stake_currency'] = curr + # Do not use ticker_interval set in the config + pairlists = PairListManager(exchange, config) + pairlists.refresh_pairlist() + print(f"Pairs for {curr}: ") + print(pairlists.whitelist) From b040cbffdd45b6b412bb50268857da3740edede2 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 30 Nov 2019 22:28:48 +0300 Subject: [PATCH 1102/3421] syslog and journald cases splitted --- docs/advanced-setup.md | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/docs/advanced-setup.md b/docs/advanced-setup.md index 5890ae6ab..df331a508 100644 --- a/docs/advanced-setup.md +++ b/docs/advanced-setup.md @@ -35,15 +35,17 @@ as the watchdog. !!! Note The sd_notify communication between the bot and the systemd service manager will not work if the bot runs in a Docker container. -## Logging to syslog or journald +## Advanced Logging -On many systems the bot can be configured to send its log messages to `syslog` or `journald`. The special values for the `--logfilename` option can be used for this: +On many Linux systems the bot can be configured to send its log messages to `syslog` or `journald` system services. Logging to a remote `syslog` server is also available on Windows. The special values for the `--logfilename` command line option can be used for this. -* `--logfilename journald` -- send log messages to `journald`. This needs the `systemd` python package installed as the dependency. Not available on Windows. +### Logging to syslog -* `--logfilename syslog:` -- send log messages to `syslog` server using the `` as syslog address. +To send Freqtrade log messages to a local or remote `syslog` service use the `--logfilename` command line option with the value in the following format: -The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the ':' character. +* `--logfilename syslog:` -- send log messages to `syslog` service using the `` as the syslog address. + +The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the `:` character. So, the following are the examples of possible usages: @@ -51,23 +53,37 @@ So, the following are the examples of possible usages: * `--logfilename syslog` -- same as above, the shortcut for `/dev/log`. * `--logfilename syslog:/var/run/syslog` -- log to syslog (rsyslog) using the `/var/run/syslog` socket. Use this on MacOS. * `--logfilename syslog:localhost:514` -- log to local syslog using UDP socket, if it listens on port 514. -* `--logfilename syslog::514` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to external syslog server. +* `--logfilename syslog::514` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server. -Log messages are send to `journald` and `syslog` with the `user` facility. So you can see them with the following commands: +Log messages are send to `syslog` with the `user` facility. So you can see them with the following commands: -* `tail -f /var/log/user`, or install a comprehansive graphical viewer (for instance, 'Log File Viewer' for Ubuntu) for the `syslog` case; -* `journalctl -f` when logging to `journald`. +* `tail -f /var/log/user`, or +* install a comprehensive graphical viewer (for instance, 'Log File Viewer' for Ubuntu). -On many systems rsyslog (syslog) fetches data from journald, so both `--logfilename syslog` or `--logfilename journald` can be used and the messages be viewed with both journalctl and the syslog viewer utility. +On many systems `syslog` (`rsyslog`) fetches data from `journald` (and vice versa), so both `--logfilename syslog` or `--logfilename journald` can be used and the messages be viewed with both `journalctl` and a syslog viewer utility. You can combine this in any way which suites you better. -For rsyslog the messages from the bot can be redirected into a separate dedicated log file. To achieve this, add +For `rsyslog` the messages from the bot can be redirected into a separate dedicated log file. To achieve this, add ``` if $programname startswith "freqtrade" then -/var/log/freqtrade.log ``` to one of the rsyslog configuration files, for example at the end of the `/etc/rsyslog.d/50-default.conf`. -For syslog (rsyslog), the reduction mode can be switched on. This will reduce the number of repeating messages. For instance, multiple bot Heartbeat messages will be reduced to the single message when nothing else happens with the bot. To achieve this, set in `/etc/rsyslog.conf`: +For `syslog` (`rsyslog`), the reduction mode can be switched on. This will reduce the number of repeating messages. For instance, multiple bot Heartbeat messages will be reduced to a single message when nothing else happens with the bot. To achieve this, set in `/etc/rsyslog.conf`: ``` # Filter duplicated messages $RepeatedMsgReduction on ``` + +## Logging to journald + +This needs the `systemd` python package installed as the dependency, which is not available on Windows. Hence, the whole journald logging functionality is not available for a bot running on Windows. + +To send Freqtrade log messages to `journald` system service use the `--logfilename` command line option with the value in the following format: + +* `--logfilename journald` -- send log messages to `journald`. + +Log messages are send to `journald` with the `user` facility. So you can see them with the following commands: + +* `journalctl -f` -- shows Freqtrade log messages sent to `journald` along with other log messages fetched by `journald`. There are many options to filter the messages, see manual pages for the `journalctl` utility. + +On many systems `syslog` (`rsyslog`) fetches data from `journald` (and vice versa), so both `--logfilename syslog` or `--logfilename journald` can be used and the messages be viewed with both `journalctl` and a syslog viewer utility. You can combine this in any way which suites you better. From eafccb445cc424918ff42e0ebb6d20c7ebc4d6d3 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 30 Nov 2019 22:32:12 +0300 Subject: [PATCH 1103/3421] Add command sample for journalctl with -u --- docs/advanced-setup.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/advanced-setup.md b/docs/advanced-setup.md index df331a508..b1a3a66ae 100644 --- a/docs/advanced-setup.md +++ b/docs/advanced-setup.md @@ -84,6 +84,9 @@ To send Freqtrade log messages to `journald` system service use the `--logfilena Log messages are send to `journald` with the `user` facility. So you can see them with the following commands: -* `journalctl -f` -- shows Freqtrade log messages sent to `journald` along with other log messages fetched by `journald`. There are many options to filter the messages, see manual pages for the `journalctl` utility. +* `journalctl -f` -- shows Freqtrade log messages sent to `journald` along with other log messages fetched by `journald`. +* `journalctl -f -u freqtrade.service` -- this command can be used when the bot is run as a `systemd` service. + +There are many other options in the `journalctl` utility to filter the messages, see manual pages for this utility. On many systems `syslog` (`rsyslog`) fetches data from `journald` (and vice versa), so both `--logfilename syslog` or `--logfilename journald` can be used and the messages be viewed with both `journalctl` and a syslog viewer utility. You can combine this in any way which suites you better. From 7a3c3c4ddf32ccc3d4cc0b4f7294f31b09939e04 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 30 Nov 2019 22:35:13 +0300 Subject: [PATCH 1104/3421] Add directlink to the section --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 15094232d..27b7a94c5 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -201,7 +201,7 @@ freqtrade trade -c config.json #### 7. (Optional) Post-installation Tasks -On Linux, as an optional post-installation task, you may wish to setup the bot to run as a `systemd` service or configure it to send the log messages to the `syslog`/`rsyslog` or `journald` daemons. See [Advanced Post-installation Tasks](advanced-setup.md) for details. +On Linux, as an optional post-installation task, you may wish to setup the bot to run as a `systemd` service or configure it to send the log messages to the `syslog`/`rsyslog` or `journald` daemons. See [Advanced Logging](advanced-setup.md#advanced-logging) for details. ------ From fffd47e3d86cba530cf18bf1db758df8ea0bcb91 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 1 Dec 2019 01:28:26 +0300 Subject: [PATCH 1105/3421] Add description of trailing space into docs --- docs/hyperopt.md | 44 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 6c1505e75..15ef26c99 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -381,12 +381,6 @@ Best result: 44/100: 135 trades. Avg profit 0.57%. Total profit 0.03871918 BTC (0.7722Σ%). Avg duration 180.4 mins. Objective: 1.94367 -Buy hyperspace params: -{ 'adx-value': 44, - 'rsi-value': 29, - 'adx-enabled': False, - 'rsi-enabled': True, - 'trigger': 'bb_lower'} ROI table: { 0: 0.10674, 21: 0.09158, @@ -410,7 +404,7 @@ As stated in the comment, you can also use it as the value of the `minimal_roi` #### Default ROI Search Space -If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the ticker_interval used. By default the values can vary in the following ranges (for some of the most used ticker intervals, values are rounded to 5 digits after the decimal point): +If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the ticker_interval used. By default the values vary in the following ranges (for some of the most used ticker intervals, values are rounded to 5 digits after the decimal point): | # step | 1m | | 5m | | 1h | | 1d | | |---|---|---|---|---|---|---|---|---| @@ -454,12 +448,46 @@ As stated in the comment, you can also use it as the value of the `stoploss` set #### Default Stoploss Search Space -If you are optimizing stoploss values, Freqtrade creates the 'stoploss' optimization hyperspace for you. By default, the stoploss values in that hyperspace can vary in the range -0.35...-0.02, which is sufficient in most cases. +If you are optimizing stoploss values, Freqtrade creates the 'stoploss' optimization hyperspace for you. By default, the stoploss values in that hyperspace vary in the range -0.35...-0.02, which is sufficient in most cases. If you have the `stoploss_space()` method in your custom hyperopt file, remove it in order to utilize Stoploss hyperoptimization space generated by Freqtrade by default. Override the `stoploss_space()` method and define the desired range in it if you need stoploss values to vary in other range during hyperoptimization. A sample for this method can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py). +### Understand Hyperopt Trailing Stop results + +If you are optimizing trailing stop values (i.e. if optimization search-space contains 'all' or 'trailing'), your result will look as follows and include trailing stop parameters: + +``` +Best result: + + 45/100: 606 trades. Avg profit 1.04%. Total profit 0.31555614 BTC ( 630.48Σ%). Avg duration 150.3 mins. Objective: -1.10161 + +Trailing stop: +{ 'trailing_only_offset_is_reached': True, + 'trailing_stop': True, + 'trailing_stop_positive': -0.02005, + 'trailing_stop_positive_offset': 0.05726} +``` + +In order to use these best trailing stop parameters found by Hyperopt in backtesting and for live trades/dry-run, copy-paste them as the values of the corresponding attributes of your custom strategy: + +``` + # Trailing stop + # These attributes will be overridden if the config file contains corresponding values. + trailing_stop = True + trailing_stop_positive = -0.02005 + trailing_stop_positive_offset = 0.05726 + trailing_only_offset_is_reached = True +``` +As stated in the comment, you can also use it as the values of the corresponding settings in the configuration file. + +#### Default Trailing Stop Search Space + +If you are optimizing trailing stop values, Freqtrade creates the 'trailing' optimization hyperspace for you. By default, the `trailing_stop` parameter is always set to True in that hyperspace, the value of the `trailing_only_offset_is_reached` vary between True and False, the values of the `trailing_stop_positive` and `trailing_stop_positive_offset` parameters vary in the ranges -0.35...-0.02 and 0.01...0.1 correspondingly, which is sufficient in most cases. + +Override the `trailing_space()` method and define the desired range in it if you need values of the trailing stop parameters to vary in other ranges during hyperoptimization. A sample for this method can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py). + ### Validate backtesting results Once the optimized strategy has been implemented into your strategy, you should backtest this strategy to make sure everything is working as expected. From a88bfa8ded672deda3d68e7cc45ceb0e69289d44 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 1 Dec 2019 02:27:17 +0300 Subject: [PATCH 1106/3421] Fix: trailing_stop_positive should be positive --- docs/hyperopt.md | 10 +++++----- freqtrade/optimize/hyperopt_interface.py | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 15ef26c99..d9aa3c7a0 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -466,8 +466,8 @@ Best result: Trailing stop: { 'trailing_only_offset_is_reached': True, 'trailing_stop': True, - 'trailing_stop_positive': -0.02005, - 'trailing_stop_positive_offset': 0.05726} + 'trailing_stop_positive': 0.02001, + 'trailing_stop_positive_offset': 0.06038} ``` In order to use these best trailing stop parameters found by Hyperopt in backtesting and for live trades/dry-run, copy-paste them as the values of the corresponding attributes of your custom strategy: @@ -476,15 +476,15 @@ In order to use these best trailing stop parameters found by Hyperopt in backtes # Trailing stop # These attributes will be overridden if the config file contains corresponding values. trailing_stop = True - trailing_stop_positive = -0.02005 - trailing_stop_positive_offset = 0.05726 + trailing_stop_positive = 0.02001 + trailing_stop_positive_offset = 0.06038 trailing_only_offset_is_reached = True ``` As stated in the comment, you can also use it as the values of the corresponding settings in the configuration file. #### Default Trailing Stop Search Space -If you are optimizing trailing stop values, Freqtrade creates the 'trailing' optimization hyperspace for you. By default, the `trailing_stop` parameter is always set to True in that hyperspace, the value of the `trailing_only_offset_is_reached` vary between True and False, the values of the `trailing_stop_positive` and `trailing_stop_positive_offset` parameters vary in the ranges -0.35...-0.02 and 0.01...0.1 correspondingly, which is sufficient in most cases. +If you are optimizing trailing stop values, Freqtrade creates the 'trailing' optimization hyperspace for you. By default, the `trailing_stop` parameter is always set to True in that hyperspace, the value of the `trailing_only_offset_is_reached` vary between True and False, the values of the `trailing_stop_positive` and `trailing_stop_positive_offset` parameters vary in the ranges 0.02...0.35 and 0.01...0.1 correspondingly, which is sufficient in most cases. Override the `trailing_space()` method and define the desired range in it if you need values of the trailing stop parameters to vary in other ranges during hyperoptimization. A sample for this method can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py). diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 0400a8470..958fb8d66 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -190,7 +190,7 @@ class IHyperOpt(ABC): # other 'trailing' hyperspace parameters. Categorical([True], name='trailing_stop'), - Real(-0.35, -0.02, name='trailing_stop_positive'), + Real(0.02, 0.35, name='trailing_stop_positive'), Real(0.01, 0.1, name='trailing_stop_positive_offset'), Categorical([True, False], name='trailing_only_offset_is_reached'), ] From f862b4d0f0c7ed1640e0429718e267e2aa5149e2 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 1 Dec 2019 02:50:44 +0300 Subject: [PATCH 1107/3421] Add description for 'default' space --- docs/hyperopt.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index d9aa3c7a0..ba38b9308 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -43,8 +43,9 @@ Optional - can also be loaded from a strategy: Rarely you may also need to override: * `roi_space` - for custom ROI optimization (if you need the ranges for the ROI parameters in the optimization hyperspace that differ from default) -* `generate_roi_table` - for custom ROI optimization (if you need more than 4 entries in the ROI table) +* `generate_roi_table` - for custom ROI optimization (if you need more than 4 entries in the ROI table or the ranges of the values in the ROI table that differ from default) * `stoploss_space` - for custom stoploss optimization (if you need the range for the stoploss parameter in the optimization hyperspace that differs from default) +* `trailing_space` - for custom trailing stop optimization (if you need the ranges for the trailing stopl parameters in the optimization hyperspace that differ from default) ### 1. Install a Custom Hyperopt File @@ -250,10 +251,10 @@ freqtrade hyperopt --config config.json --hyperopt -e 5000 --spac Use `` as the name of the custom hyperopt used. -The `-e` flag will set how many evaluations hyperopt will do. We recommend +The `-e` option will set how many evaluations hyperopt will do. We recommend running at least several thousand evaluations. -The `--spaces all` flag determines that all possible parameters should be optimized. Possibilities are listed below. +The `--spaces all` option determines that all possible parameters should be optimized. Possibilities are listed below. !!! Note By default, hyperopt will erase previous results and start from scratch. Continuation can be archived by using `--continue`. @@ -286,7 +287,7 @@ freqtrade hyperopt --strategy SampleStrategy --customhyperopt SampleHyperopt ### Running Hyperopt with Smaller Search Space -Use the `--spaces` argument to limit the search space used by hyperopt. +Use the `--spaces` option to limit the search space used by hyperopt. Letting Hyperopt optimize everything is a huuuuge search space. Often it might make more sense to start by just searching for initial buy algorithm. Or maybe you just want to optimize your stoploss or roi table for that awesome @@ -299,8 +300,12 @@ Legal values are: * `sell`: just search for a new sell strategy * `roi`: just optimize the minimal profit table for your strategy * `stoploss`: search for the best stoploss value +* `trailing`: search for the best trailing stop values +* `default`: `all` except `trailing` * space-separated list of any of the above values for example `--spaces roi stoploss` +The default Hyperopt Search Space, used when no `--space` command line option is specified, does not include the `trailing` hyperspace. We recommend you to run optimization for the `trailing` hyperspace separately, when the best parameters for other hyperspaces were found, validated and pasted into your custom strategy. + ### Position stacking and disabling max market positions In some situations, you may need to run Hyperopt (and Backtesting) with the @@ -374,7 +379,7 @@ You can use the `--print-all` command line option if you would like to see all r ### Understand Hyperopt ROI results -If you are optimizing ROI (i.e. if optimization search-space contains 'all' or 'roi'), your result will look as follows and include a ROI table: +If you are optimizing ROI (i.e. if optimization search-space contains 'all', 'default' or 'roi'), your result will look as follows and include a ROI table: ``` Best result: @@ -421,7 +426,7 @@ Override the `roi_space()` method if you need components of the ROI tables to va ### Understand Hyperopt Stoploss results -If you are optimizing stoploss values (i.e. if optimization search-space contains 'all' or 'stoploss'), your result will look as follows and include stoploss: +If you are optimizing stoploss values (i.e. if optimization search-space contains 'all', 'default' or 'stoploss'), your result will look as follows and include stoploss: ``` Best result: From 26a7af85eaae69bce974c6ac97837bb248384a05 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 1 Dec 2019 03:31:03 +0300 Subject: [PATCH 1108/3421] Add trailing_space() into AdvancedSampleHyperOpt --- .../templates/sample_hyperopt_advanced.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/freqtrade/templates/sample_hyperopt_advanced.py b/freqtrade/templates/sample_hyperopt_advanced.py index 5634c21ea..b4bbee3fb 100644 --- a/freqtrade/templates/sample_hyperopt_advanced.py +++ b/freqtrade/templates/sample_hyperopt_advanced.py @@ -233,6 +233,27 @@ class AdvancedSampleHyperOpt(IHyperOpt): Real(-0.5, -0.02, name='stoploss'), ] + @staticmethod + def trailing_space() -> List[Dimension]: + """ + Create a trailing stoploss space. + + You may override it in your custom Hyperopt class. + """ + return [ + # It was decided to always set trailing_stop is to True if the 'trailing' hyperspace + # is used. Otherwise hyperopt will vary other parameters that won't have effect if + # trailing_stop is set False. + # This parameter is included into the hyperspace dimensions rather than assigning + # it explicitly in the code in order to have it printed in the results along with + # other 'trailing' hyperspace parameters. + Categorical([True], name='trailing_stop'), + + Real(0.02, 0.35, name='trailing_stop_positive'), + Real(0.01, 0.1, name='trailing_stop_positive_offset'), + Categorical([True, False], name='trailing_only_offset_is_reached'), + ] + def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Based on TA indicators. From f42ce8fc2a27e6118cd5a8be2aff3e67ee5fa635 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 1 Dec 2019 13:07:17 +0300 Subject: [PATCH 1109/3421] Fix typo in the docs --- docs/hyperopt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 640ea6b74..3a5589d40 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -48,7 +48,7 @@ Rarely you may also need to override: * `roi_space` - for custom ROI optimization (if you need the ranges for the ROI parameters in the optimization hyperspace that differ from default) * `generate_roi_table` - for custom ROI optimization (if you need more than 4 entries in the ROI table or the ranges of the values in the ROI table that differ from default) * `stoploss_space` - for custom stoploss optimization (if you need the range for the stoploss parameter in the optimization hyperspace that differs from default) -* `trailing_space` - for custom trailing stop optimization (if you need the ranges for the trailing stopl parameters in the optimization hyperspace that differ from default) +* `trailing_space` - for custom trailing stop optimization (if you need the ranges for the trailing stop parameters in the optimization hyperspace that differ from default) ### 1. Install a Custom Hyperopt File From 32c9b5f415b7c471bfb3d7ba2e746dcc097a1902 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 1 Dec 2019 13:13:41 +0300 Subject: [PATCH 1110/3421] Description for generate_roi_table reformulated slightly --- docs/hyperopt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 3a5589d40..c4db6da87 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -46,7 +46,7 @@ Optional - can also be loaded from a strategy: Rarely you may also need to override: * `roi_space` - for custom ROI optimization (if you need the ranges for the ROI parameters in the optimization hyperspace that differ from default) -* `generate_roi_table` - for custom ROI optimization (if you need more than 4 entries in the ROI table or the ranges of the values in the ROI table that differ from default) +* `generate_roi_table` - for custom ROI optimization (if you need the ranges for the values in the ROI table that differ from default or the number of entries (steps) in the ROI table which differs from the default 4 steps) * `stoploss_space` - for custom stoploss optimization (if you need the range for the stoploss parameter in the optimization hyperspace that differs from default) * `trailing_space` - for custom trailing stop optimization (if you need the ranges for the trailing stop parameters in the optimization hyperspace that differ from default) From 668d42447fa404835e874e6113f846ca51b72436 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 1 Dec 2019 16:15:00 +0300 Subject: [PATCH 1111/3421] Refactor log_trials_result() --- freqtrade/optimize/hyperopt.py | 69 ++++++++++++++-------------------- 1 file changed, 29 insertions(+), 40 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index d79e1336e..9c585ed72 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -156,7 +156,7 @@ class Hyperopt: self.trials_file.unlink() return trials - def log_trials_result(self) -> None: # noqa: C901 + def log_trials_result(self) -> None: """ Display Best hyperopt result """ @@ -170,57 +170,43 @@ class Hyperopt: best_result = results[0] params = best_result['params'] log_str = self.format_results_logstring(best_result) + print(f"\nBest result:\n\n{log_str}\n") if self.config.get('print_json'): result_dict: Dict = {} + for s in ['buy', 'sell', 'roi', 'stoploss', 'trailing']: + self._params_update_for_json(result_dict, params, s) + print(rapidjson.dumps(result_dict, default=str, number_mode=rapidjson.NM_NATIVE)) - if self.has_space('buy') or self.has_space('sell'): - result_dict['params'] = {} + else: + self._params_pretty_print(params, 'buy', "Buy hyperspace params:") + self._params_pretty_print(params, 'sell', "Sell hyperspace params:") + self._params_pretty_print(params, 'roi', "ROI table:") + self._params_pretty_print(params, 'stoploss', "Stoploss:") + self._params_pretty_print(params, 'trailing', "Trailing stop:") - if self.has_space('buy'): - result_dict['params'].update(self.space_params(params, 'buy')) - - if self.has_space('sell'): - result_dict['params'].update(self.space_params(params, 'sell')) - - if self.has_space('roi'): + def _params_update_for_json(self, result_dict, params, space: str): + if self.has_space(space): + space_params = self.space_params(params, space) + if space in ['buy', 'sell']: + result_dict.setdefault('params', {}).update(space_params) + elif space == 'roi': # Convert keys in min_roi dict to strings because # rapidjson cannot dump dicts with integer keys... # OrderedDict is used to keep the numeric order of the items # in the dict. result_dict['minimal_roi'] = OrderedDict( - (str(k), v) for k, v in self.custom_hyperopt.generate_roi_table(params).items() + (str(k), v) for k, v in space_params.items() ) + else: # 'stoploss', 'trailing' + result_dict.update(space_params) - if self.has_space('stoploss'): - result_dict.update(self.space_params(params, 'stoploss')) - - if self.has_space('trailing'): - result_dict.update(self.space_params(params, 'trailing')) - - print(rapidjson.dumps(result_dict, default=str, number_mode=rapidjson.NM_NATIVE)) - else: - if self.has_space('buy'): - print('Buy hyperspace params:') - pprint(self.space_params(params, 'buy', 5), indent=4) - - if self.has_space('sell'): - print('Sell hyperspace params:') - pprint(self.space_params(params, 'sell', 5), indent=4) - - if self.has_space('roi'): - print("ROI table:") - # Round printed values to 5 digits after the decimal point - pprint(round_dict(self.custom_hyperopt.generate_roi_table(params), 5), indent=4) - - if self.has_space('stoploss'): - print(f"Stoploss:") - pprint(self.space_params(params, 'stoploss', 5), indent=4) - - if self.has_space('trailing'): - print('Trailing stop:') - pprint(self.space_params(params, 'trailing', 5), indent=4) + def _params_pretty_print(self, params, space: str, header: str): + if self.has_space(space): + space_params = self.space_params(params, space, 5) + print(header) + pprint(space_params, indent=4) def is_best(self, results) -> bool: return results['loss'] < self.current_best_loss @@ -302,7 +288,10 @@ class Hyperopt: return spaces def space_params(self, params, space: str, r: int = None) -> Dict: - d = {p.name: params.get(p.name) for p in self.hyperopt_space(space)} + if space == 'roi': + d = self.custom_hyperopt.generate_roi_table(params) + else: + d = {p.name: params.get(p.name) for p in self.hyperopt_space(space)} # Round floats to `r` digits after the decimal point if requested return round_dict(d, r) if r else d From d6b587678eec22d9d6ff135a3a6ce9d3cec1de04 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 1 Dec 2019 17:44:14 +0300 Subject: [PATCH 1112/3421] Adjust test --- tests/optimize/test_hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index d18263ea2..08bef11a1 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -359,7 +359,7 @@ def test_log_results_if_loss_improves(hyperopt, capsys) -> None: hyperopt.total_epochs = 2 hyperopt.print_results( { - 'is_best': False, + 'is_best': True, 'loss': 1, 'current_epoch': 2, # This starts from 1 (in a human-friendly manner) 'results_explanation': 'foo.', From 05967442c3d03a450440d77b1df344e54f100bee Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 1 Dec 2019 18:01:59 +0300 Subject: [PATCH 1113/3421] Adjust test --- tests/optimize/test_hyperopt.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 08bef11a1..ff485d423 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -475,7 +475,21 @@ def test_format_results(hyperopt): labels = ['currency', 'profit_percent', 'profit_abs', 'trade_duration'] df = pd.DataFrame.from_records(trades, columns=labels) results_metrics = hyperopt._calculate_results_metrics(df) - result = hyperopt._format_explanation_string(results_metrics, 1) + results_explanation = hyperopt._format_results_explanation_string(results_metrics) + total_profit = results_metrics['total_profit'] + + results = { + 'loss': 0.0, + 'params_dict': None, + 'params_details': None, + 'results_metrics': results_metrics, + 'results_explanation': results_explanation, + 'total_profit': total_profit, + 'current_epoch': 1, + 'is_initial_point': True, + } + + result = hyperopt._format_explanation_string(results, 1) assert result.find(' 66.67%') assert result.find('Total profit 1.00000000 BTC') assert result.find('2.0000Σ %') @@ -488,7 +502,8 @@ def test_format_results(hyperopt): ] df = pd.DataFrame.from_records(trades, columns=labels) results_metrics = hyperopt._calculate_results_metrics(df) - result = hyperopt._format_explanation_string(results_metrics, 1) + results['total_profit'] = results_metrics['total_profit'] + result = hyperopt._format_explanation_string(results, 1) assert result.find('Total profit 1.00000000 EUR') From 86342efa7abd62d406e369211b317d418af02655 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 1 Dec 2019 18:34:25 +0300 Subject: [PATCH 1114/3421] Adjust test --- tests/optimize/test_hyperopt.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index ff485d423..6a2d3f251 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -699,7 +699,10 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', - MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}]) + MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}, + 'params_details': {'buy': {'mfi-value': None}, + 'sell': {'sell-mfi-value': None}, + 'roi': {}, 'stoploss': None}}]) ) patch_exchange(mocker) @@ -721,7 +724,7 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: parallel.assert_called_once() out, err = capsys.readouterr() - assert '{"params":{"mfi-value":null,"fastd-value":null,"adx-value":null,"rsi-value":null,"mfi-enabled":null,"fastd-enabled":null,"adx-enabled":null,"rsi-enabled":null,"trigger":null,"sell-mfi-value":null,"sell-fastd-value":null,"sell-adx-value":null,"sell-rsi-value":null,"sell-mfi-enabled":null,"sell-fastd-enabled":null,"sell-adx-enabled":null,"sell-rsi-enabled":null,"sell-trigger":null},"minimal_roi":{},"stoploss":null}' in out # noqa: E501 + assert '{"params":{"mfi-value":null,"sell-mfi-value":null},"minimal_roi":{},"stoploss":null}' in out # noqa: E501 assert dumper.called # Should be called twice, once for tickerdata, once to save evaluations assert dumper.call_count == 2 From ee733210ca18d073f1cf735728754bebf33a2bb3 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 1 Dec 2019 19:10:30 +0300 Subject: [PATCH 1115/3421] minor: Fix formatting typo in docs --- docs/advanced-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/advanced-setup.md b/docs/advanced-setup.md index b1a3a66ae..2d3fe36f5 100644 --- a/docs/advanced-setup.md +++ b/docs/advanced-setup.md @@ -74,7 +74,7 @@ For `syslog` (`rsyslog`), the reduction mode can be switched on. This will reduc $RepeatedMsgReduction on ``` -## Logging to journald +### Logging to journald This needs the `systemd` python package installed as the dependency, which is not available on Windows. Hence, the whole journald logging functionality is not available for a bot running on Windows. From 150a497cb4b0c4f530103c820458ec2eb69fbb11 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 2 Dec 2019 06:56:19 +0100 Subject: [PATCH 1116/3421] output pairlist after fetching all --- freqtrade/utils.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index f43bdaed2..099c1142e 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -334,11 +334,14 @@ def start_test_pairlist(args: Dict[str, Any]) -> None: exchange = ExchangeResolver(config['exchange']['name'], config, validate=False).exchange quote_currencies = args.get('quote_currencies', [config.get('stake_currency')]) - + results = {} for curr in quote_currencies: config['stake_currency'] = curr # Do not use ticker_interval set in the config pairlists = PairListManager(exchange, config) pairlists.refresh_pairlist() + results[curr] = pairlists.whitelist + + for curr, pairlist in results.items(): print(f"Pairs for {curr}: ") - print(pairlists.whitelist) + print(pairlist) From 0b03c6c786ffb972cfc71ac408f961ca93ad2a64 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 2 Dec 2019 07:00:38 +0100 Subject: [PATCH 1117/3421] Implement to json --- freqtrade/configuration/arguments.py | 2 +- freqtrade/utils.py | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 3add8e04a..25e4386a8 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -37,7 +37,7 @@ ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"] ARGS_LIST_PAIRS = ["exchange", "print_list", "list_pairs_print_json", "print_one_column", "print_csv", "base_currencies", "quote_currencies", "list_pairs_all"] -ARGS_TEST_PAIRLIST = ["config", "quote_currencies"] +ARGS_TEST_PAIRLIST = ["config", "quote_currencies", "print_one_column", "list_pairs_print_json"] ARGS_CREATE_USERDIR = ["user_data_dir", "reset"] diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 099c1142e..b7873876a 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -344,4 +344,13 @@ def start_test_pairlist(args: Dict[str, Any]) -> None: for curr, pairlist in results.items(): print(f"Pairs for {curr}: ") - print(pairlist) + summary_str = "" + if args.get('print_list', False): + # print data as a list, with human-readable summary + print(f"{summary_str}: {', '.join(pairlist)}.") + elif args.get('print_one_column', False): + print('\n'.join(pairlist)) + elif args.get('list_pairs_print_json', False): + print(rapidjson.dumps(list(pairlist), default=str)) + else: + print(pairlist) From f0428be91e32ac2a17dcd0f1bc75a49b6faa844b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2019 07:19:06 +0000 Subject: [PATCH 1118/3421] Bump pytest from 5.3.0 to 5.3.1 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.3.0 to 5.3.1. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/5.3.1/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.3.0...5.3.1) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index a60bbf0eb..99fd3fc6f 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==3.1.0 mypy==0.740 -pytest==5.3.0 +pytest==5.3.1 pytest-asyncio==0.10.0 pytest-cov==2.8.1 pytest-mock==1.12.1 From 110fbd3f069baf6277d486b322fbf4a5e3559453 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2019 07:19:49 +0000 Subject: [PATCH 1119/3421] Bump ccxt from 1.19.86 to 1.20.22 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.19.86 to 1.20.22. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.19.86...1.20.22) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index e5c66590a..8c38cf546 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.19.86 +ccxt==1.20.22 SQLAlchemy==1.3.11 python-telegram-bot==12.2.0 arrow==0.15.4 From fc7b9846ae06070b007c382fef75e8d19699c6e1 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2019 07:46:57 +0000 Subject: [PATCH 1120/3421] Bump mypy from 0.740 to 0.750 Bumps [mypy](https://github.com/python/mypy) from 0.740 to 0.750. - [Release notes](https://github.com/python/mypy/releases) - [Commits](https://github.com/python/mypy/compare/v0.740...v0.750) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 99fd3fc6f..a2ffa1a06 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ coveralls==1.8.2 flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==3.1.0 -mypy==0.740 +mypy==0.750 pytest==5.3.1 pytest-asyncio==0.10.0 pytest-cov==2.8.1 From 683406b57d9daf0c3c609a011b1ff99d0f8ae6a7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Dec 2019 06:36:43 +0100 Subject: [PATCH 1121/3421] correct fallback to stake_currency --- freqtrade/utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index b7873876a..da0ef1fff 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -333,7 +333,9 @@ def start_test_pairlist(args: Dict[str, Any]) -> None: exchange = ExchangeResolver(config['exchange']['name'], config, validate=False).exchange - quote_currencies = args.get('quote_currencies', [config.get('stake_currency')]) + quote_currencies = args.get('quote_currencies') + if not quote_currencies: + quote_currencies = [config.get('stake_currency')] results = {} for curr in quote_currencies: config['stake_currency'] = curr From ebf6dad3f6badf202ab432844e4b60daa4ed605f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Dec 2019 06:37:10 +0100 Subject: [PATCH 1122/3421] Update binance pairlist default config --- config_binance.json.example | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/config_binance.json.example b/config_binance.json.example index 7d616fe91..8dc6f5c3a 100644 --- a/config_binance.json.example +++ b/config_binance.json.example @@ -37,18 +37,21 @@ "rateLimit": 200 }, "pair_whitelist": [ - "AST/BTC", - "ETC/BTC", - "ETH/BTC", + "ALGO/BTC", + "ATOM/BTC", + "BAT/BTC", + "BCH/BTC", + "BRD/BTC", "EOS/BTC", + "ETH/BTC", "IOTA/BTC", + "LINK/BTC", "LTC/BTC", - "MTH/BTC", - "NCASH/BTC", - "TNT/BTC", + "NEO/BTC", + "NXS/BTC", "XMR/BTC", - "XLM/BTC", - "XRP/BTC" + "XRP/BTC", + "XTZ/BTC" ], "pair_blacklist": [ "BNB/BTC" From cd20d5b5c574cd245aa515fc1b27f0ba08139edc Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Dec 2019 06:41:59 +0100 Subject: [PATCH 1123/3421] Update kraken pairlist --- config_kraken.json.example | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/config_kraken.json.example b/config_kraken.json.example index 854aeef71..401ee7c9f 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -38,9 +38,26 @@ "rateLimit": 1000 }, "pair_whitelist": [ - "ETH/EUR", + "ADA/EUR", + "ATOM/EUR", + "BAT/EUR", + "BCH/EUR", "BTC/EUR", - "BCH/EUR" + "DAI/EUR", + "DASH/EUR", + "EOS/EUR", + "ETC/EUR", + "ETH/EUR", + "LINK/EUR", + "LTC/EUR", + "QTUM/EUR", + "REP/EUR", + "WAVES/EUR", + "XLM/EUR", + "XMR/EUR", + "XRP/EUR", + "XTZ/EUR", + "ZEC/EUR" ], "pair_blacklist": [ From 17e03559dc837301f4044ba89cfe16f2058a2d0b Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Tue, 3 Dec 2019 12:51:52 +0300 Subject: [PATCH 1124/3421] minor: fix typo in docs --- docs/strategy-customization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index c43d8e3f6..4efca7d2f 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -1,4 +1,4 @@ -# Optimization +# Strategy Customization This page explains where to customize your strategies, and add new indicators. From 298e8b23320d4ac035ddf14b327a72e0d5b11b2b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Dec 2019 15:10:27 +0100 Subject: [PATCH 1125/3421] Add testcase for test_pairlist --- freqtrade/utils.py | 2 +- tests/test_utils.py | 40 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index da0ef1fff..817d642a0 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -326,7 +326,7 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: def start_test_pairlist(args: Dict[str, Any]) -> None: """ - Test Pairlists + Test Pairlist configuration """ from freqtrade.pairlist.pairlistmanager import PairListManager config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) diff --git a/tests/test_utils.py b/tests/test_utils.py index 1258c939c..67ec8409b 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -10,8 +10,9 @@ from freqtrade.utils import (setup_utils_configuration, start_create_userdir, start_download_data, start_list_exchanges, start_list_markets, start_list_timeframes, start_new_hyperopt, start_new_strategy, - start_trading) -from tests.conftest import get_args, log_has, log_has_re, patch_exchange + start_test_pairlist, start_trading) +from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, + patched_configuration_load_config_file) def test_setup_utils_configuration(): @@ -573,7 +574,7 @@ def test_download_data_no_exchange(mocker, caplog): ) args = [ "download-data", - ] + ] pargs = get_args(args) pargs['config'] = None with pytest.raises(OperationalException, @@ -623,3 +624,36 @@ def test_download_data_trades(mocker, caplog): assert dl_mock.call_args[1]['timerange'].starttype == "date" assert dl_mock.call_count == 1 assert convert_mock.call_count == 1 + + +def test_start_test_pairlist(mocker, caplog, markets, tickers, default_conf, capsys): + mocker.patch.multiple('freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=markets), + exchange_has=MagicMock(return_value=True), + get_tickers=tickers + ) + + default_conf['pairlists'] = [ + { + "method": "VolumePairList", + "number_assets": 5, + "sort_key": "quoteVolume", + }, + {"method": "PrecisionFilter"}, + {"method": "PriceFilter", "low_price_ratio": 0.02}, + ] + + patched_configuration_load_config_file(mocker, default_conf) + args = [ + 'test-pairlist', + '-c', 'config.json.example' + ] + + start_test_pairlist(get_args(args)) + + assert log_has_re(r"^Using resolved pairlist VolumePairList.*", caplog) + assert log_has_re(r"^Using resolved pairlist PrecisionFilter.*", caplog) + assert log_has_re(r"^Using resolved pairlist PriceFilter.*", caplog) + captured = capsys.readouterr() + assert re.match(r"Pairs for .*", captured.out) + assert re.match("['ETH/BTC', 'TKN/BTC', 'BLK/BTC', 'LTC/BTC', 'XRP/BTC']", captured.out) From b33e47a49ee164b916dd5441299d1fb0019c0888 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Dec 2019 16:15:10 +0100 Subject: [PATCH 1126/3421] Update documentation with test-pairlist --- docs/backtesting.md | 9 +++++---- docs/configuration.md | 3 +++ docs/utils.md | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 19814303b..68782bb9c 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -11,14 +11,15 @@ Now you have good Buy and Sell strategies and some historic data, you want to te real data. This is what we call [backtesting](https://en.wikipedia.org/wiki/Backtesting). -Backtesting will use the crypto-currencies (pairs) from your config file -and load ticker data from `user_data/data/` by default. -If no data is available for the exchange / pair / ticker interval combination, backtesting will -ask you to download them first using `freqtrade download-data`. +Backtesting will use the crypto-currencies (pairs) from your config file and load ticker data from `user_data/data/` by default. +If no data is available for the exchange / pair / ticker interval combination, backtesting will ask you to download them first using `freqtrade download-data`. For details on downloading, please refer to the [Data Downloading](data-download.md) section in the documentation. The result of backtesting will confirm if your bot has better odds of making a profit than a loss. +!!! Tip "Using dynamic pairlists for backtesting" + While using dynamic pairlists during backtesting is not possible, a dynamic pairlist using current data can be generated via the [`test-pairlist`](utils.md#test-pairlist) command, and needs to be specified as `"pair_whitelist"` attribute in the configuration. + ### Run a backtesting against the currencies listed in your config file #### With 5 min tickers (Per default) diff --git a/docs/configuration.md b/docs/configuration.md index 024760fb9..5ad1a886e 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -405,6 +405,9 @@ Inactive markets and blacklisted pairs are always removed from the resulting `pa * [`PrecisionFilter`](#precision-filter) * [`PriceFilter`](#price-pair-filter) +!!! Tip "Testing pairlists" + Pairlist configurations can be quite tricky to get right. Best use the [`test-pairlist`](utils.md#test-pairlist) subcommand to test your configuration quickly. + #### Static Pair List By default, the `StaticPairList` method is used, which uses a statically defined pair whitelist from the configuration. diff --git a/docs/utils.md b/docs/utils.md index ca4b645a5..19368059a 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -234,3 +234,35 @@ $ freqtrade -c config_binance.json list-pairs --all --base BTC ETH --quote USDT ``` $ freqtrade list-markets --exchange kraken --all ``` + +## Test pairlist + +Use the `test-pairlist` subcommand to test the configuration of [dynamic pairlists](configuration.md#pairlists). + +Requires a configuration with specified `pairlists` attribute. +Can be used to generate static pairlists to be used during backtesting / hyperopt. + +### Examples + +Show whitelist when using a [dynamic pairlist](configuration.md#pairlists). + +``` +freqtrade test-pairlist --config config.json --quote USDT BTC +``` + +``` +usage: freqtrade test-pairlist [-h] [-c PATH] + [--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] + [-1] [--print-json] + +optional arguments: + -h, --help show this help message and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). + Multiple --config options may be used. Can be set to + `-` to read config from stdin. + --quote QUOTE_CURRENCY [QUOTE_CURRENCY ...] + Specify quote currency(-ies). Space-separated list. + -1, --one-column Print output in one column. + --print-json Print list of pairs or market symbols in JSON format. +``` From ba29a2ffe4b723ed2025568e0b31df490e316bf4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 3 Dec 2019 21:30:50 +0300 Subject: [PATCH 1127/3421] Move docs on loss function creation to a separate doc file --- docs/advanced-hyperopt.md | 63 +++++++++++++++++++++++++++++++++++++++ docs/hyperopt.md | 58 +---------------------------------- 2 files changed, 64 insertions(+), 57 deletions(-) create mode 100644 docs/advanced-hyperopt.md diff --git a/docs/advanced-hyperopt.md b/docs/advanced-hyperopt.md new file mode 100644 index 000000000..b69b671d2 --- /dev/null +++ b/docs/advanced-hyperopt.md @@ -0,0 +1,63 @@ +# Advanced Hyperopt + +This page explains some advanced Hyperopt issues that may require higher +coding skills and Python knowledge than creation of an ordinal hyperoptimization +class. + +## Creating and using a custom loss function + +To use a custom loss function class, make sure that the function `hyperopt_loss_function` is defined in your custom hyperopt loss class. +For the sample below, you then need to add the command line parameter `--hyperopt-loss SuperDuperHyperOptLoss` to your hyperopt call so this fuction is being used. + +A sample of this can be found below, which is identical to the Default Hyperopt loss implementation. A full sample can be found [user_data/hyperopts/](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_loss.py) + +``` python +from freqtrade.optimize.hyperopt import IHyperOptLoss + +TARGET_TRADES = 600 +EXPECTED_MAX_PROFIT = 3.0 +MAX_ACCEPTED_TRADE_DURATION = 300 + +class SuperDuperHyperOptLoss(IHyperOptLoss): + """ + Defines the default loss function for hyperopt + """ + + @staticmethod + def hyperopt_loss_function(results: DataFrame, trade_count: int, + min_date: datetime, max_date: datetime, + *args, **kwargs) -> float: + """ + Objective function, returns smaller number for better results + This is the legacy algorithm (used until now in freqtrade). + Weights are distributed as follows: + * 0.4 to trade duration + * 0.25: Avoiding trade loss + * 1.0 to total profit, compared to the expected value (`EXPECTED_MAX_PROFIT`) defined above + """ + total_profit = results.profit_percent.sum() + trade_duration = results.trade_duration.mean() + + trade_loss = 1 - 0.25 * exp(-(trade_count - TARGET_TRADES) ** 2 / 10 ** 5.8) + profit_loss = max(0, 1 - total_profit / EXPECTED_MAX_PROFIT) + duration_loss = 0.4 * min(trade_duration / MAX_ACCEPTED_TRADE_DURATION, 1) + result = trade_loss + profit_loss + duration_loss + return result +``` + +Currently, the arguments are: + +* `results`: DataFrame containing the result + The following columns are available in results (corresponds to the output-file of backtesting when used with `--export trades`): + `pair, profit_percent, profit_abs, open_time, close_time, open_index, close_index, trade_duration, open_at_end, open_rate, close_rate, sell_reason` +* `trade_count`: Amount of trades (identical to `len(results)`) +* `min_date`: Start date of the hyperopting TimeFrame +* `min_date`: End date of the hyperopting TimeFrame + +This function needs to return a floating point number (`float`). Smaller numbers will be interpreted as better results. The parameters and balancing for this is up to you. + +!!! Note + This function is called once per iteration - so please make sure to have this as optimized as possible to not slow hyperopt down unnecessarily. + +!!! Note + Please keep the arguments `*args` and `**kwargs` in the interface to allow us to extend this interface later. diff --git a/docs/hyperopt.md b/docs/hyperopt.md index c4db6da87..0661896a0 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -183,63 +183,7 @@ Currently, the following loss functions are builtin: * `OnlyProfitHyperOptLoss` (which takes only amount of profit into consideration) * `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on the trade returns) -### Creating and using a custom loss function - -To use a custom loss function class, make sure that the function `hyperopt_loss_function` is defined in your custom hyperopt loss class. -For the sample below, you then need to add the command line parameter `--hyperopt-loss SuperDuperHyperOptLoss` to your hyperopt call so this fuction is being used. - -A sample of this can be found below, which is identical to the Default Hyperopt loss implementation. A full sample can be found [user_data/hyperopts/](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_loss.py) - -``` python -from freqtrade.optimize.hyperopt import IHyperOptLoss - -TARGET_TRADES = 600 -EXPECTED_MAX_PROFIT = 3.0 -MAX_ACCEPTED_TRADE_DURATION = 300 - -class SuperDuperHyperOptLoss(IHyperOptLoss): - """ - Defines the default loss function for hyperopt - """ - - @staticmethod - def hyperopt_loss_function(results: DataFrame, trade_count: int, - min_date: datetime, max_date: datetime, - *args, **kwargs) -> float: - """ - Objective function, returns smaller number for better results - This is the legacy algorithm (used until now in freqtrade). - Weights are distributed as follows: - * 0.4 to trade duration - * 0.25: Avoiding trade loss - * 1.0 to total profit, compared to the expected value (`EXPECTED_MAX_PROFIT`) defined above - """ - total_profit = results.profit_percent.sum() - trade_duration = results.trade_duration.mean() - - trade_loss = 1 - 0.25 * exp(-(trade_count - TARGET_TRADES) ** 2 / 10 ** 5.8) - profit_loss = max(0, 1 - total_profit / EXPECTED_MAX_PROFIT) - duration_loss = 0.4 * min(trade_duration / MAX_ACCEPTED_TRADE_DURATION, 1) - result = trade_loss + profit_loss + duration_loss - return result -``` - -Currently, the arguments are: - -* `results`: DataFrame containing the result - The following columns are available in results (corresponds to the output-file of backtesting when used with `--export trades`): - `pair, profit_percent, profit_abs, open_time, close_time, open_index, close_index, trade_duration, open_at_end, open_rate, close_rate, sell_reason` -* `trade_count`: Amount of trades (identical to `len(results)`) -* `min_date`: Start date of the hyperopting TimeFrame -* `min_date`: End date of the hyperopting TimeFrame - -This function needs to return a floating point number (`float`). Smaller numbers will be interpreted as better results. The parameters and balancing for this is up to you. - -!!! Note - This function is called once per iteration - so please make sure to have this as optimized as possible to not slow hyperopt down unnecessarily. - -!!! Note - Please keep the arguments `*args` and `**kwargs` in the interface to allow us to extend this interface later. +Creation of a custom loss function is covered in the [Advanced Hyperopt](advanced-hyperopt.md) part of the documentation. ## Execute Hyperopt From ddf86d6342f642db900b3400c3010d7add477a01 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 3 Dec 2019 21:36:25 +0300 Subject: [PATCH 1128/3421] Adjust docs index --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index 43d6acc1d..d53687c64 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -24,6 +24,7 @@ nav: - Plotting: plotting.md - SQL Cheatsheet: sql_cheatsheet.md - Advanced Post-installation Tasks: advanced-setup.md + - Advanced Hyperopt: advanced-hyperopt.md - Sandbox Testing: sandbox-testing.md - Deprecated Features: deprecated.md - Contributors Guide: developer.md From ac3e061508083d7f5854c51a70aebbca19c4aa13 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 3 Dec 2019 23:20:00 +0300 Subject: [PATCH 1129/3421] Resolve issues stated in the review --- docs/advanced-hyperopt.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/advanced-hyperopt.md b/docs/advanced-hyperopt.md index b69b671d2..4c0f91c77 100644 --- a/docs/advanced-hyperopt.md +++ b/docs/advanced-hyperopt.md @@ -1,15 +1,15 @@ # Advanced Hyperopt -This page explains some advanced Hyperopt issues that may require higher +This page explains some advanced Hyperopt topics that may require higher coding skills and Python knowledge than creation of an ordinal hyperoptimization class. ## Creating and using a custom loss function To use a custom loss function class, make sure that the function `hyperopt_loss_function` is defined in your custom hyperopt loss class. -For the sample below, you then need to add the command line parameter `--hyperopt-loss SuperDuperHyperOptLoss` to your hyperopt call so this fuction is being used. +For the sample below, you then need to add the command line parameter `--hyperopt-loss SuperDuperHyperOptLoss` to your hyperopt call so this function is being used. -A sample of this can be found below, which is identical to the Default Hyperopt loss implementation. A full sample can be found [user_data/hyperopts/](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_loss.py) +A sample of this can be found below, which is identical to the Default Hyperopt loss implementation. A full sample can be found in [freqtrade/templates/](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_loss.py) ``` python from freqtrade.optimize.hyperopt import IHyperOptLoss From 054484ad73363dbfab6810fbbe44fe1cc699393d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 4 Dec 2019 06:57:44 +0100 Subject: [PATCH 1130/3421] load_pair_history should not return None, but an empty dataframe if no data is found --- freqtrade/data/history.py | 6 +++--- tests/data/test_history.py | 4 ++-- tests/optimize/test_backtesting.py | 2 +- tests/optimize/test_hyperopt.py | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index ec95be874..865893a66 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -146,7 +146,7 @@ def load_pair_history(pair: str, :param fill_up_missing: Fill missing values with "No action"-candles :param drop_incomplete: Drop last candle assuming it may be incomplete. :param startup_candles: Additional candles to load at the start of the period - :return: DataFrame with ohlcv data + :return: DataFrame with ohlcv data, or empty DataFrame """ timerange_startup = deepcopy(timerange) @@ -174,7 +174,7 @@ def load_pair_history(pair: str, f'No history data for pair: "{pair}", timeframe: {timeframe}. ' 'Use `freqtrade download-data` to download the data' ) - return None + return DataFrame() def load_data(datadir: Path, @@ -216,7 +216,7 @@ def load_data(datadir: Path, exchange=exchange, fill_up_missing=fill_up_missing, startup_candles=startup_candles) - if hist is not None: + if not hist.empty: result[pair] = hist if fail_without_data and not result: diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 65feaf03e..6d89ab7c5 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -74,8 +74,8 @@ def test_load_data_30min_ticker(mocker, caplog, default_conf, testdatadir) -> No def test_load_data_7min_ticker(mocker, caplog, default_conf, testdatadir) -> None: ld = history.load_pair_history(pair='UNITTEST/BTC', timeframe='7m', datadir=testdatadir) - assert not isinstance(ld, DataFrame) - assert ld is None + assert isinstance(ld, DataFrame) + assert ld.empty assert log_has( 'No history data for pair: "UNITTEST/BTC", timeframe: 7m. ' 'Use `freqtrade download-data` to download the data', caplog diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index e74ead33d..5086891a6 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -494,7 +494,7 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> def get_timeframe(input1): return Arrow(2017, 11, 14, 21, 17), Arrow(2017, 11, 14, 22, 59) - mocker.patch('freqtrade.data.history.load_pair_history', MagicMock(return_value=None)) + mocker.patch('freqtrade.data.history.load_pair_history', MagicMock(return_value=pd.DataFrame())) mocker.patch('freqtrade.data.history.get_timeframe', get_timeframe) mocker.patch('freqtrade.exchange.Exchange.refresh_latest_ohlcv', MagicMock()) patch_exchange(mocker) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index cd96d0ed6..c9ae6ba1d 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -249,7 +249,7 @@ def test_start(mocker, default_conf, caplog) -> None: def test_start_no_data(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) - mocker.patch('freqtrade.data.history.load_pair_history', MagicMock(return_value=None)) + mocker.patch('freqtrade.data.history.load_pair_history', MagicMock(return_value=pd.DataFrame)) mocker.patch( 'freqtrade.optimize.hyperopt.get_timeframe', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) From 8a7fe3f1d69ddd82465f9b58ccec8104160c963a Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 4 Dec 2019 07:01:09 +0100 Subject: [PATCH 1131/3421] The file will (for users) be in user_data - just in the repo it's in templates --- docs/advanced-hyperopt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/advanced-hyperopt.md b/docs/advanced-hyperopt.md index 4c0f91c77..20af0aaab 100644 --- a/docs/advanced-hyperopt.md +++ b/docs/advanced-hyperopt.md @@ -9,7 +9,7 @@ class. To use a custom loss function class, make sure that the function `hyperopt_loss_function` is defined in your custom hyperopt loss class. For the sample below, you then need to add the command line parameter `--hyperopt-loss SuperDuperHyperOptLoss` to your hyperopt call so this function is being used. -A sample of this can be found below, which is identical to the Default Hyperopt loss implementation. A full sample can be found in [freqtrade/templates/](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_loss.py) +A sample of this can be found below, which is identical to the Default Hyperopt loss implementation. A full sample can be found in [userdata/hyperopts](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_loss.py). ``` python from freqtrade.optimize.hyperopt import IHyperOptLoss From 0ba804d051d8b94f1e99cba45adc696f66e12f21 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 4 Dec 2019 12:14:37 +0100 Subject: [PATCH 1132/3421] Address first part of feedback --- freqtrade/utils.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 817d642a0..c174f189e 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -346,11 +346,8 @@ def start_test_pairlist(args: Dict[str, Any]) -> None: for curr, pairlist in results.items(): print(f"Pairs for {curr}: ") - summary_str = "" - if args.get('print_list', False): - # print data as a list, with human-readable summary - print(f"{summary_str}: {', '.join(pairlist)}.") - elif args.get('print_one_column', False): + + if args.get('print_one_column', False): print('\n'.join(pairlist)) elif args.get('list_pairs_print_json', False): print(rapidjson.dumps(list(pairlist), default=str)) From 51f074ba4bce67985a3af587e46981e5b15e73e4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 4 Dec 2019 12:25:57 +0100 Subject: [PATCH 1133/3421] Don't print quote-currency for -1 --- freqtrade/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index c174f189e..9a00f1f26 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -345,7 +345,8 @@ def start_test_pairlist(args: Dict[str, Any]) -> None: results[curr] = pairlists.whitelist for curr, pairlist in results.items(): - print(f"Pairs for {curr}: ") + if not args.get('print_one_column', False): + print(f"Pairs for {curr}: ") if args.get('print_one_column', False): print('\n'.join(pairlist)) From 16a50fbe4e76ac304a3adbc3040bd538ca7456e4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 4 Dec 2019 14:30:53 +0100 Subject: [PATCH 1134/3421] Resort documentation --- docs/utils.md | 68 ++++++++++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index 19368059a..4ad32055a 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -43,20 +43,6 @@ The file will be named inline with your class name, and will not overwrite exist Results will be located in `user_data/strategies/.py`. -### Sample usage of new-strategy - -```bash -freqtrade new-strategy --strategy AwesomeStrategy -``` - -With custom user directory - -```bash -freqtrade new-strategy --userdir ~/.freqtrade/ --strategy AwesomeStrategy -``` - -### new-strategy complete options - ``` output usage: freqtrade new-strategy [-h] [--userdir PATH] [-s NAME] [--template {full,minimal}] @@ -75,6 +61,18 @@ optional arguments: ``` +### Sample usage of new-strategy + +```bash +freqtrade new-strategy --strategy AwesomeStrategy +``` + +With custom user directory + +```bash +freqtrade new-strategy --userdir ~/.freqtrade/ --strategy AwesomeStrategy +``` + ## Create new hyperopt Creates a new hyperopt from a template similar to SampleHyperopt. @@ -82,20 +80,6 @@ The file will be named inline with your class name, and will not overwrite exist Results will be located in `user_data/hyperopts/.py`. -### Sample usage of new-hyperopt - -```bash -freqtrade new-hyperopt --hyperopt AwesomeHyperopt -``` - -With custom user directory - -```bash -freqtrade new-hyperopt --userdir ~/.freqtrade/ --hyperopt AwesomeHyperopt -``` - -### new-hyperopt complete options - ``` output usage: freqtrade new-hyperopt [-h] [--userdir PATH] [--hyperopt NAME] [--template {full,minimal}] @@ -112,6 +96,18 @@ optional arguments: `full`. ``` +### Sample usage of new-hyperopt + +```bash +freqtrade new-hyperopt --hyperopt AwesomeHyperopt +``` + +With custom user directory + +```bash +freqtrade new-hyperopt --userdir ~/.freqtrade/ --hyperopt AwesomeHyperopt +``` + ## List Exchanges Use the `list-exchanges` subcommand to see the exchanges available for the bot. @@ -242,14 +238,6 @@ Use the `test-pairlist` subcommand to test the configuration of [dynamic pairlis Requires a configuration with specified `pairlists` attribute. Can be used to generate static pairlists to be used during backtesting / hyperopt. -### Examples - -Show whitelist when using a [dynamic pairlist](configuration.md#pairlists). - -``` -freqtrade test-pairlist --config config.json --quote USDT BTC -``` - ``` usage: freqtrade test-pairlist [-h] [-c PATH] [--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] @@ -266,3 +254,11 @@ optional arguments: -1, --one-column Print output in one column. --print-json Print list of pairs or market symbols in JSON format. ``` + +### Examples + +Show whitelist when using a [dynamic pairlist](configuration.md#pairlists). + +``` +freqtrade test-pairlist --config config.json --quote USDT BTC +``` From 54694dd3a4e8db83e6ad6d9354c89be0dc7bd81b Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 4 Dec 2019 23:14:47 +0300 Subject: [PATCH 1135/3421] Manual merge of some conflicts in hyperopt --- freqtrade/optimize/hyperopt.py | 71 ++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 29 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index d2404beb5..f932393aa 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -165,13 +165,16 @@ class Hyperopt: result: Dict = {} if self.has_space('buy'): - result['buy'] = {p.name: params.get(p.name) for p in self.hyperopt_space('buy')} + result['buy'] = {p.name: params.get(p.name) + for p in self.hyperopt_space('buy')} if self.has_space('sell'): - result['sell'] = {p.name: params.get(p.name) for p in self.hyperopt_space('sell')} + result['sell'] = {p.name: params.get(p.name) + for p in self.hyperopt_space('sell')} if self.has_space('roi'): result['roi'] = self.custom_hyperopt.generate_roi_table(params) if self.has_space('stoploss'): - result['stoploss'] = params.get('stoploss') + result['stoploss'] = {p.name: params.get(p.name) + for p in self.hyperopt_space('stoploss')} return result @@ -193,38 +196,48 @@ class Hyperopt: if print_json: result_dict: Dict = {} - result_params_dict: Dict = {} - if 'buy' in params: - result_params_dict.update(params['buy']) - if 'sell' in params: - result_params_dict.update(params['sell']) - if result_params_dict: - result_dict['params'] = result_params_dict - if 'roi' in params: + for s in ['buy', 'sell', 'roi', 'stoploss']: + Hyperopt._params_update_for_json(result_dict, params, s) + print(rapidjson.dumps(result_dict, default=str, number_mode=rapidjson.NM_NATIVE)) + + else: + Hyperopt._params_pretty_print(params, 'buy', "Buy hyperspace params:") + Hyperopt._params_pretty_print(params, 'sell', "Sell hyperspace params:") + Hyperopt._params_pretty_print(params, 'roi', "ROI table:") + Hyperopt._params_pretty_print(params, 'stoploss', "Stoploss:") + + @staticmethod + def _params_update_for_json(result_dict, params, space: str): + if space in params: + space_params = Hyperopt._space_params(params, space) + if space in ['buy', 'sell']: + result_dict.setdefault('params', {}).update(space_params) + elif space == 'roi': # Convert keys in min_roi dict to strings because # rapidjson cannot dump dicts with integer keys... # OrderedDict is used to keep the numeric order of the items # in the dict. result_dict['minimal_roi'] = OrderedDict( - (str(k), v) for k, v in params['roi'].items() + (str(k), v) for k, v in space_params.items() ) - if 'stoploss' in params: - result_dict['stoploss'] = params['stoploss'] - print(rapidjson.dumps(result_dict, default=str, number_mode=rapidjson.NM_NATIVE)) - else: - if 'buy' in params: - print('Buy hyperspace params:') - pprint(params['buy'], indent=4) - if 'sell' in params: - print('Sell hyperspace params:') - pprint(params['sell'], indent=4) - if 'roi' in params: - print("ROI table:") - # Round printed values to 5 digits after the decimal point - pprint(round_dict(params['roi'], 5), indent=4) - if 'stoploss' in params: - # Also round to 5 digits after the decimal point - print(f"Stoploss: {round(params['stoploss'], 5)}") + else: # 'stoploss' + result_dict.update(space_params) + + @staticmethod + def _params_pretty_print(params, space: str, header: str): + if space in params: + space_params = Hyperopt._space_params(params, space, 5) + if space == 'stoploss': + print(header, space_params.get('stoploss')) + else: + print(header) + pprint(space_params, indent=4) + + @staticmethod + def _space_params(params, space: str, r: int = None) -> Dict: + d = params[space] + # Round floats to `r` digits after the decimal point if requested + return round_dict(d, r) if r else d @staticmethod def is_best_loss(results, current_best_loss) -> bool: From b20bea8492cebaea3fb3fee50b96087b9d8263be Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 4 Dec 2019 23:15:19 +0300 Subject: [PATCH 1136/3421] Adjust tests --- tests/optimize/test_hyperopt.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 6a2d3f251..5617ee4db 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -637,7 +637,7 @@ def test_generate_optimizer(mocker, default_conf) -> None: 'sell-rsi-enabled': False, 'sell-rsi-value': 0, 'sell-trigger': 'macd_cross_signal'}, - 'stoploss': -0.4}, + 'stoploss': {'stoploss': -0.4}}, 'params_dict': optimizer_param, 'results_metrics': {'avg_profit': 2.3117, 'duration': 100.0, @@ -702,7 +702,7 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}, 'params_details': {'buy': {'mfi-value': None}, 'sell': {'sell-mfi-value': None}, - 'roi': {}, 'stoploss': None}}]) + 'roi': {}, 'stoploss': {'stoploss': None}}}]) ) patch_exchange(mocker) @@ -742,7 +742,7 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}, - 'params_details': {'roi': {}, 'stoploss': None}}]) + 'params_details': {'roi': {}, 'stoploss': {'stoploss': None}}}]) ) patch_exchange(mocker) From b61f43835d20a5b3b18120bcc944fcbf244de8de Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 5 Dec 2019 01:11:06 +0300 Subject: [PATCH 1137/3421] Make flake happy --- freqtrade/optimize/hyperopt.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 97810d75a..eb3546756 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -354,11 +354,11 @@ class Hyperopt: if self.has_space('trailing'): self.backtesting.strategy.trailing_stop = params_dict['trailing_stop'] self.backtesting.strategy.trailing_stop_positive = \ - params_dict['trailing_stop_positive'] + params_dict['trailing_stop_positive'] self.backtesting.strategy.trailing_stop_positive_offset = \ - params_dict['trailing_stop_positive_offset'] + params_dict['trailing_stop_positive_offset'] self.backtesting.strategy.trailing_only_offset_is_reached = \ - params_dict['trailing_only_offset_is_reached'] + params_dict['trailing_only_offset_is_reached'] processed = load(self.tickerdata_pickle) From 4efd8b96e54120dccb84bf8580284343d0f06c56 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Thu, 5 Dec 2019 14:16:18 +0300 Subject: [PATCH 1138/3421] Add description for hyperopt-list and hyperopt-show to the docs --- docs/utils.md | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/docs/utils.md b/docs/utils.md index 4ad32055a..e5359af83 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -262,3 +262,68 @@ Show whitelist when using a [dynamic pairlist](configuration.md#pairlists). ``` freqtrade test-pairlist --config config.json --quote USDT BTC ``` + +## List Hyperopt results + +You can list the hyperoptimization epochs the Hyperopt module evaluated previously with the `hyperopt-list` subcommand. + +``` +usage: freqtrade hyperopt-list [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] [--best] + [--profitable] [--no-color] [--print-json] + [--no-details] + +optional arguments: + -h, --help show this help message and exit + --best Select only best epochs. + --profitable Select only profitable epochs. + --no-color Disable colorization of hyperopt results. May be + useful if you are redirecting output to a file. + --print-json Print best result detailization in JSON format. + --no-details Do not print best epoch details. + ``` + +### Examples + +List all results, print details of the best result at the end: +``` +freqtrade hyperopt-list +``` + +List only epochs with positive profit. Do not print the details of the best epoch, so that the list can be iterated in a script: +``` +freqtrade hyperopt-list --profitable --no-details +``` + +## Show details of Hyperopt results + +You can show the details of any hyperoptimization epoch previously evaluated by the Hyperopt module with the `hyperopt-show` subcommand. + +``` +usage: freqtrade hyperopt-show [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] [--best] + [--profitable] [-n INT] [--print-json] + [--no-header] + +optional arguments: + -h, --help show this help message and exit + --best Select only best epochs. + --profitable Select only profitable epochs. + -n INT, --index INT Specify the index of the epoch to print details for. + --print-json Print best result detailization in JSON format. + --no-header Do not print epoch details header. +``` + +### Examples + +Print details for the epoch 168 (the number of the epoch is shown by the `hyperopt-list` subcommand or by Hyperopt itself during hyperoptimization run): + +``` +freqtrade hyperopt-show -n 168 +``` + +Prints JSON data with details for the last best epoch (i.e., the best of all epochs): + +``` +freqtrade hyperopt-show --best -n -1 --print-json --no-header +``` From 216094a7616cd3a5c68a2db46a22f099bb8bda9b Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Thu, 5 Dec 2019 14:30:55 +0300 Subject: [PATCH 1139/3421] Add reference to hyperopt-list and hyperopt-show to the Hyperopt doc --- docs/hyperopt.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 0661896a0..29a526bd0 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -440,7 +440,11 @@ If you are optimizing trailing stop values, Freqtrade creates the 'trailing' opt Override the `trailing_space()` method and define the desired range in it if you need values of the trailing stop parameters to vary in other ranges during hyperoptimization. A sample for this method can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py). -### Validate backtesting results +## Show details of Hyperopt results + +After you run Hyperopt for the desired amount of epochs, you can later list all results for analysis, select only best or profitable once, and show the details for any of the epochs previously evaluated. This can be done with the `hyperopt-list` and `hyperopt-show` subcommands. The usage of these subcommands is described in the [Utils](utils.md#list-hyperopt-results) chapter. + +## Validate backtesting results Once the optimized strategy has been implemented into your strategy, you should backtest this strategy to make sure everything is working as expected. From 4b0a4c936a18ca900fc0b9b76f7030cda1f9fd88 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 5 Dec 2019 20:31:02 +0100 Subject: [PATCH 1140/3421] Fix hyperopt with ticker_interval from strategy --- freqtrade/optimize/hyperopt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 9c585ed72..a7b0e2bf6 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -54,10 +54,10 @@ class Hyperopt: def __init__(self, config: Dict[str, Any]) -> None: self.config = config - self.custom_hyperopt = HyperOptResolver(self.config).hyperopt - self.backtesting = Backtesting(self.config) + self.custom_hyperopt = HyperOptResolver(self.config).hyperopt + self.custom_hyperoptloss = HyperOptLossResolver(self.config).hyperoptloss self.calculate_loss = self.custom_hyperoptloss.hyperopt_loss_function From 703458f3656496c4cf8feee1bda08d69f3a89f66 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 5 Dec 2019 20:35:54 +0100 Subject: [PATCH 1141/3421] Add test for loading ticker-interval from strategy --- tests/optimize/test_hyperopt.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index c9ae6ba1d..1f1706ee1 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -435,7 +435,8 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: 'params': {'buy': {}, 'sell': {}, 'roi': {}, 'stoploss': 0.0}}]) ) patch_exchange(mocker) - + # Co-test loading ticker-interval from strategy + del default_conf['ticker_interval'] default_conf.update({'config': 'config.json.example', 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, From 1da008b3aff2d498044e92bf0b50e612a18eb416 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 5 Dec 2019 20:44:12 +0100 Subject: [PATCH 1142/3421] Document "quick" hyperopt of roi/stoploss and trailing stoploss --- docs/hyperopt.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 0661896a0..befd448bb 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -50,6 +50,16 @@ Rarely you may also need to override: * `stoploss_space` - for custom stoploss optimization (if you need the range for the stoploss parameter in the optimization hyperspace that differs from default) * `trailing_space` - for custom trailing stop optimization (if you need the ranges for the trailing stop parameters in the optimization hyperspace that differ from default) +!!! Tip "Quickly optimize ROI, stoploss and trailing stoploss" + You can quickly optimize the spaces `roi`, `stoploss` and `trailing_stoploss` without changing anything from the default hyperopt template by relying on your strategy to do most of the calculations. + + ``` python + # Have a working strategy at hand. + freqtrade new-hyperopt --hyperopt EmptyHyperopt + + freqtrade hyperopt --hyperopt EmptyHyperopt --spaces roi stoploss trailing --strategy MyWorkingStrategy --config config.json -e 100 + ``` + ### 1. Install a Custom Hyperopt File Put your hyperopt file into the directory `user_data/hyperopts`. From d21ae4edd35e48be9278c510325a256a66ea9eee Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 5 Dec 2019 23:29:31 +0300 Subject: [PATCH 1143/3421] Add fixes for comments in the review --- freqtrade/optimize/hyperopt.py | 7 ++++++- freqtrade/utils.py | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index eb3546756..277aee2fa 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -22,6 +22,7 @@ from pandas import DataFrame from skopt import Optimizer from skopt.space import Dimension +from freqtrade import OperationalException from freqtrade.data.history import get_timeframe, trim_dataframe from freqtrade.misc import plural, round_dict from freqtrade.optimize.backtesting import Backtesting @@ -181,7 +182,7 @@ class Hyperopt: return result - @staticmethod # noqa: C901 + @staticmethod def print_epoch_details(results, total_epochs, print_json: bool, no_header: bool = False, header_str: str = None) -> None: """ @@ -462,6 +463,10 @@ class Hyperopt: trials: List = [] if trials_file.is_file() and trials_file.stat().st_size > 0: trials = Hyperopt._read_trials(trials_file) + if trials[0].get('is_best') is None: + raise OperationalException( + "The file with Hyperopt results is incompatible with this version " + "of Freqtrade and cannot be loaded.") logger.info(f"Loaded {len(trials)} previous evaluations from disk.") return trials diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 4d170985c..91758737e 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -360,6 +360,7 @@ def start_test_pairlist(args: Dict[str, Any]) -> None: def start_hyperopt_list(args: Dict[str, Any]) -> None: """ + List hyperopt epochs previously evaluated """ from freqtrade.optimize.hyperopt import Hyperopt @@ -403,6 +404,7 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: def start_hyperopt_show(args: Dict[str, Any]) -> None: """ + Show details of a hyperopt epoch previously evaluated """ from freqtrade.optimize.hyperopt import Hyperopt From 2bd4008cb2739f6c2cf47698e21e1529c4c77c73 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 6 Dec 2019 06:06:41 +0100 Subject: [PATCH 1144/3421] fix space name ... --- docs/hyperopt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index befd448bb..e0adfb890 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -51,7 +51,7 @@ Rarely you may also need to override: * `trailing_space` - for custom trailing stop optimization (if you need the ranges for the trailing stop parameters in the optimization hyperspace that differ from default) !!! Tip "Quickly optimize ROI, stoploss and trailing stoploss" - You can quickly optimize the spaces `roi`, `stoploss` and `trailing_stoploss` without changing anything from the default hyperopt template by relying on your strategy to do most of the calculations. + You can quickly optimize the spaces `roi`, `stoploss` and `trailing` without changing anything (i.e. without creation of a "complete" Hyperopt class with dimensions, parameters, triggers and guards, as described in this document) from the default hyperopt template by relying on your strategy to do most of the calculations. ``` python # Have a working strategy at hand. From 309186911590630cb01bdd503da840c9eca8518c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Dec 2019 14:30:14 +0100 Subject: [PATCH 1145/3421] refactor get_close_rate out of get_sell_trade-entry --- freqtrade/optimize/backtesting.py | 44 +++++++++++++++++-------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index d9fb1f2d1..c7d25cb7b 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -261,6 +261,29 @@ class Backtesting: ticker[pair] = [x for x in ticker_data.itertuples()] return ticker + def _get_close_rate(self, sell_row, trade: Trade, sell, trade_dur) -> float: + # Special handling if high or low hit STOP_LOSS or ROI + if sell.sell_type in (SellType.STOP_LOSS, SellType.TRAILING_STOP_LOSS): + # Set close_rate to stoploss + closerate = trade.stop_loss + elif sell.sell_type == (SellType.ROI): + roi = self.strategy.min_roi_reached_entry(trade_dur) + if roi is not None: + # - (Expected abs profit + open_rate + open_fee) / (fee_close -1) + closerate = - (trade.open_rate * roi + trade.open_rate * + (1 + trade.fee_open)) / (trade.fee_close - 1) + + # Use the maximum between closerate and low as we + # cannot sell outside of a candle. + # Applies when using {"xx": -1} as roi to force sells after xx minutes + closerate = max(closerate, sell_row.low) + else: + # This should not be reached... + closerate = sell_row.open + else: + closerate = sell_row.open + return closerate + def _get_sell_trade_entry( self, pair: str, buy_row: DataFrame, partial_ticker: List, trade_count_lock: Dict, @@ -287,26 +310,7 @@ class Backtesting: sell_row.sell, low=sell_row.low, high=sell_row.high) if sell.sell_flag: trade_dur = int((sell_row.date - buy_row.date).total_seconds() // 60) - # Special handling if high or low hit STOP_LOSS or ROI - if sell.sell_type in (SellType.STOP_LOSS, SellType.TRAILING_STOP_LOSS): - # Set close_rate to stoploss - closerate = trade.stop_loss - elif sell.sell_type == (SellType.ROI): - roi = self.strategy.min_roi_reached_entry(trade_dur) - if roi is not None: - # - (Expected abs profit + open_rate + open_fee) / (fee_close -1) - closerate = - (trade.open_rate * roi + trade.open_rate * - (1 + trade.fee_open)) / (trade.fee_close - 1) - - # Use the maximum between closerate and low as we - # cannot sell outside of a candle. - # Applies when using {"xx": -1} as roi to force sells after xx minutes - closerate = max(closerate, sell_row.low) - else: - # This should not be reached... - closerate = sell_row.open - else: - closerate = sell_row.open + closerate = self._get_close_rate(sell_row, trade, sell, trade_dur) return BacktestResult(pair=pair, profit_percent=trade.calc_profit_percent(rate=closerate), From 1e6f9f9fe20cab92711b06f929e5641991c8ea60 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Dec 2019 15:13:49 +0100 Subject: [PATCH 1146/3421] Add testcase for negative ROI sell using open --- tests/optimize/test_backtest_detail.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py index 3f6cc8c9a..e269009b1 100644 --- a/tests/optimize/test_backtest_detail.py +++ b/tests/optimize/test_backtest_detail.py @@ -265,6 +265,22 @@ tc16 = BTContainer(data=[ trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=3)] ) +# Test 17: Buy, hold for 120 mins, then forcesell using roi=-1 +# Causes negative profit even though sell-reason is ROI. +# stop-loss: 10%, ROI: 10% (should not apply), -100% after 100 minutes (limits trade duration) +# Uses open as sell-rate (special case) - since the roi-time is a multiple of the ticker interval. +tc17 = BTContainer(data=[ + # D O H L C V B S + [0, 5000, 5025, 4975, 4987, 6172, 1, 0], + [1, 5000, 5025, 4975, 4987, 6172, 0, 0], + [2, 4987, 5300, 4950, 5050, 6172, 0, 0], + [3, 4980, 5000, 4940, 4962, 6172, 0, 0], # ForceSell on ROI (roi=-1) + [4, 4962, 4987, 4972, 4950, 6172, 0, 0], + [5, 4950, 4975, 4925, 4950, 6172, 0, 0]], + stop_loss=-0.10, roi={"0": 0.10, "120": -1}, profit_perc=-0.004, + trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=3)] +) + TESTS = [ tc0, tc1, @@ -283,6 +299,7 @@ TESTS = [ tc14, tc15, tc16, + tc17, ] From 3163cbdf8a56f2eafefa5736945087327752ed10 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Dec 2019 15:18:12 +0100 Subject: [PATCH 1147/3421] Apply special case for negative ROI --- freqtrade/optimize/backtesting.py | 10 ++++++++-- freqtrade/strategy/interface.py | 8 ++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index c7d25cb7b..6e7d36368 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -267,7 +267,7 @@ class Backtesting: # Set close_rate to stoploss closerate = trade.stop_loss elif sell.sell_type == (SellType.ROI): - roi = self.strategy.min_roi_reached_entry(trade_dur) + roi_entry, roi = self.strategy.min_roi_reached_entry(trade_dur) if roi is not None: # - (Expected abs profit + open_rate + open_fee) / (fee_close -1) closerate = - (trade.open_rate * roi + trade.open_rate * @@ -275,8 +275,14 @@ class Backtesting: # Use the maximum between closerate and low as we # cannot sell outside of a candle. - # Applies when using {"xx": -1} as roi to force sells after xx minutes + # Applies when a new ROI setting comes in place and the whole candle is above that. closerate = max(closerate, sell_row.low) + if roi == -1 and roi_entry % self.timeframe_mins == 0: + # When forceselling with ROI=-1, the roi-entry will always be "on the entry". + # If that entry is a multiple of the timeframe (so on open) + # - we'll use open instead of close + closerate = max(closerate, sell_row.open) + else: # This should not be reached... closerate = sell_row.open diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index e208138e7..2b3a6194f 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -394,7 +394,7 @@ class IStrategy(ABC): return SellCheckTuple(sell_flag=False, sell_type=SellType.NONE) - def min_roi_reached_entry(self, trade_dur: int) -> Optional[float]: + def min_roi_reached_entry(self, trade_dur: int) -> Tuple[Optional[int], Optional[float]]: """ Based on trade duration defines the ROI entry that may have been reached. :param trade_dur: trade duration in minutes @@ -403,9 +403,9 @@ class IStrategy(ABC): # Get highest entry in ROI dict where key <= trade-duration roi_list = list(filter(lambda x: x <= trade_dur, self.minimal_roi.keys())) if not roi_list: - return None + return None, None roi_entry = max(roi_list) - return self.minimal_roi[roi_entry] + return roi_entry, self.minimal_roi[roi_entry] def min_roi_reached(self, trade: Trade, current_profit: float, current_time: datetime) -> bool: """ @@ -415,7 +415,7 @@ class IStrategy(ABC): """ # Check if time matches and current rate is above threshold trade_dur = int((current_time.timestamp() - trade.open_date.timestamp()) // 60) - roi = self.min_roi_reached_entry(trade_dur) + _, roi = self.min_roi_reached_entry(trade_dur) if roi is None: return False else: From 189835b9635e54ce10c88ae02ba0ce4936c7749d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Dec 2019 15:26:10 +0100 Subject: [PATCH 1148/3421] Add documentation for ROI-1 case --- docs/backtesting.md | 5 ++++- docs/configuration.md | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 68782bb9c..017289905 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -194,7 +194,10 @@ Since backtesting lacks some detailed information about what happens within a ca - Buys happen at open-price - Sell signal sells happen at open-price of the following candle - Low happens before high for stoploss, protecting capital first. -- ROI sells are compared to high - but the ROI value is used (e.g. ROI = 2%, high=5% - so the sell will be at 2%) +- ROI + - sells are compared to high - but the ROI value is used (e.g. ROI = 2%, high=5% - so the sell will be at 2%) + - sells are never "below the candle", so a ROI of 2% may result in a sell at 2.4% if low was at 2.4% profit + - Forcesells caused by `=-1` ROI entries use low as sell value, unless N falls on the candle open (e.g. `120: -1` for 1h candles) - Stoploss sells happen exactly at stoploss price, even if low was lower - Trailing stoploss - High happens first - adjusting stoploss diff --git a/docs/configuration.md b/docs/configuration.md index 5ad1a886e..5bebbcfcd 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -169,6 +169,9 @@ This parameter can be set in either Strategy or Configuration file. If you use i `minimal_roi` value from the strategy file. If it is not set in either Strategy or Configuration, a default of 1000% `{"0": 10}` is used, and minimal roi is disabled unless your trade generates 1000% profit. +!!! Note "Special case to forcesell after a specific time" + A special case presents using `"": -1` as ROI. This forces the bot to sell a trade after N Minutes, no matter if it's positive or negative, so represents a time-limited force-sell. + ### Understand stoploss Go to the [stoploss documentation](stoploss.md) for more details. From 45d12dbc83fd6a24f1d7b28bcf6bf5022053d454 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Dec 2019 15:28:56 +0100 Subject: [PATCH 1149/3421] Avoid a few calculations during backtesting --- freqtrade/optimize/backtesting.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 6e7d36368..7b5bd34b4 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -262,13 +262,22 @@ class Backtesting: return ticker def _get_close_rate(self, sell_row, trade: Trade, sell, trade_dur) -> float: + """ + Get close rate for backtesting result + """ # Special handling if high or low hit STOP_LOSS or ROI if sell.sell_type in (SellType.STOP_LOSS, SellType.TRAILING_STOP_LOSS): # Set close_rate to stoploss - closerate = trade.stop_loss + return trade.stop_loss elif sell.sell_type == (SellType.ROI): roi_entry, roi = self.strategy.min_roi_reached_entry(trade_dur) if roi is not None: + if roi == -1 and roi_entry % self.timeframe_mins == 0: + # When forceselling with ROI=-1, the roi-entry will always be "on the entry". + # If that entry is a multiple of the timeframe (so on open) + # - we'll use open instead of close + return sell_row.open + # - (Expected abs profit + open_rate + open_fee) / (fee_close -1) closerate = - (trade.open_rate * roi + trade.open_rate * (1 + trade.fee_open)) / (trade.fee_close - 1) @@ -276,19 +285,13 @@ class Backtesting: # Use the maximum between closerate and low as we # cannot sell outside of a candle. # Applies when a new ROI setting comes in place and the whole candle is above that. - closerate = max(closerate, sell_row.low) - if roi == -1 and roi_entry % self.timeframe_mins == 0: - # When forceselling with ROI=-1, the roi-entry will always be "on the entry". - # If that entry is a multiple of the timeframe (so on open) - # - we'll use open instead of close - closerate = max(closerate, sell_row.open) + return max(closerate, sell_row.low) else: # This should not be reached... - closerate = sell_row.open + return sell_row.open else: - closerate = sell_row.open - return closerate + return sell_row.open def _get_sell_trade_entry( self, pair: str, buy_row: DataFrame, From bb9235c7155dbd562c001e3935a7791629d3f846 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Dec 2019 15:42:47 +0100 Subject: [PATCH 1150/3421] Validate stake-currency against pairlist - making sure only correct pairs are in the whitelist --- freqtrade/configuration/config_validation.py | 7 +++++++ tests/test_configuration.py | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 4bfd24677..ca0e01ba0 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -131,3 +131,10 @@ def _validate_whitelist(conf: Dict[str, Any]) -> None: if (pl.get('method') == 'StaticPairList' and not conf.get('exchange', {}).get('pair_whitelist')): raise OperationalException("StaticPairList requires pair_whitelist to be set.") + + if pl.get('method') == 'StaticPairList': + stake = conf['stake_currency'] + pairlist = conf['exchange'].get('pair_whitelist') + if not all([p.endswith(f'/{stake}') for p in pairlist]): + raise OperationalException( + f"Stake-currency {stake} not compatible with pair-whitelist.") diff --git a/tests/test_configuration.py b/tests/test_configuration.py index ae85c7493..7f708934b 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -798,6 +798,12 @@ def test_validate_whitelist(default_conf): validate_config_consistency(conf) + conf = deepcopy(default_conf) + conf['stake_currency'] = 'USDT' + with pytest.raises(OperationalException, + match="Stake-currency USDT not compatible with pair-whitelist."): + validate_config_consistency(conf) + def test_load_config_test_comments() -> None: """ From ed7207d4c8a8f16499f32de7c34dce82a76061c3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Dec 2019 19:31:15 +0100 Subject: [PATCH 1151/3421] Show pairs which are wrong ... --- freqtrade/configuration/config_validation.py | 11 ++++++++--- tests/test_configuration.py | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index ca0e01ba0..068364884 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -134,7 +134,12 @@ def _validate_whitelist(conf: Dict[str, Any]) -> None: if pl.get('method') == 'StaticPairList': stake = conf['stake_currency'] - pairlist = conf['exchange'].get('pair_whitelist') - if not all([p.endswith(f'/{stake}') for p in pairlist]): + invalid_pairs = [] + for pair in conf['exchange'].get('pair_whitelist'): + if not pair.endswith(f'/{stake}'): + invalid_pairs.append(pair) + + if invalid_pairs: raise OperationalException( - f"Stake-currency {stake} not compatible with pair-whitelist.") + f"Stake-currency '{stake}' not compatible with pair-whitelist. " + f"Please remove the following pairs: {invalid_pairs}") diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 7f708934b..89ca74afa 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -801,7 +801,7 @@ def test_validate_whitelist(default_conf): conf = deepcopy(default_conf) conf['stake_currency'] = 'USDT' with pytest.raises(OperationalException, - match="Stake-currency USDT not compatible with pair-whitelist."): + match=r"Stake-currency 'USDT' not compatible with pair-whitelist.*"): validate_config_consistency(conf) From 21c685570548f4b1fd250546be2df3addae1411e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Dec 2019 20:21:25 +0100 Subject: [PATCH 1152/3421] Build latest along with develop image --- build_helpers/publish_docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_helpers/publish_docker.sh b/build_helpers/publish_docker.sh index 7fe4b17eb..17d5230c9 100755 --- a/build_helpers/publish_docker.sh +++ b/build_helpers/publish_docker.sh @@ -38,7 +38,7 @@ if [ $? -ne 0 ]; then fi # Tag as latest for develop builds -if [ "${GITHUB_REF}" = "develop" ]; then +if [ "${TAG}" = "develop" ]; then docker tag freqtrade:$TAG ${IMAGE_NAME}:latest fi From e4655c9b07ab82d214d1166fd2c7a656756c482a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 8 Dec 2019 14:07:46 +0100 Subject: [PATCH 1153/3421] include trade-duration with sell-notification --- freqtrade/freqtradebot.py | 4 +++- freqtrade/rpc/telegram.py | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ec341ff0a..0595e0d35 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -962,7 +962,9 @@ class FreqtradeBot: 'current_rate': current_rate, 'profit_amount': profit_trade, 'profit_percent': profit_percent, - 'sell_reason': trade.sell_reason + 'sell_reason': trade.sell_reason, + 'open_date': trade.open_date, + 'close_date': trade.close_date or datetime.utcnow() } # For regular case, when the configuration exists diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 2ae22f472..859700019 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -9,7 +9,7 @@ from typing import Any, Callable, Dict from tabulate import tabulate from telegram import ParseMode, ReplyKeyboardMarkup, Update from telegram.error import NetworkError, TelegramError -from telegram.ext import CommandHandler, Updater, CallbackContext +from telegram.ext import CallbackContext, CommandHandler, Updater from freqtrade.__init__ import __version__ from freqtrade.rpc import RPC, RPCException, RPCMessageType @@ -144,6 +144,8 @@ class Telegram(RPC): elif msg['type'] == RPCMessageType.SELL_NOTIFICATION: msg['amount'] = round(msg['amount'], 8) msg['profit_percent'] = round(msg['profit_percent'] * 100, 2) + msg['duration'] = msg['close_date'].replace( + microsecond=0) - msg['open_date'].replace(microsecond=0) message = ("*{exchange}:* Selling {pair}\n" "*Rate:* `{limit:.8f}`\n" @@ -151,6 +153,7 @@ class Telegram(RPC): "*Open Rate:* `{open_rate:.8f}`\n" "*Current Rate:* `{current_rate:.8f}`\n" "*Sell Reason:* `{sell_reason}`\n" + "*Duration:* `{duration}`\n" "*Profit:* `{profit_percent:.2f}%`").format(**msg) # Check if all sell properties are available. From 88a24da272c032851058e6812d69008d441c56ac Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 8 Dec 2019 14:10:04 +0100 Subject: [PATCH 1154/3421] Adapt tests to sending open / close date --- tests/rpc/test_rpc_telegram.py | 29 ++++++++++++++++++++++------- tests/test_freqtradebot.py | 18 +++++++++++++----- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 367eb8366..32f8ad036 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -6,7 +6,7 @@ import re from datetime import datetime from random import choice, randint from string import ascii_uppercase -from unittest.mock import MagicMock, PropertyMock +from unittest.mock import ANY, MagicMock, PropertyMock import arrow import pytest @@ -736,7 +736,9 @@ def test_forcesell_handle(default_conf, update, ticker, fee, 'profit_percent': 0.0611052, 'stake_currency': 'BTC', 'fiat_currency': 'USD', - 'sell_reason': SellType.FORCE_SELL.value + 'sell_reason': SellType.FORCE_SELL.value, + 'open_date': ANY, + 'close_date': ANY, } == last_msg @@ -793,7 +795,9 @@ def test_forcesell_down_handle(default_conf, update, ticker, fee, 'profit_percent': -0.05478342, 'stake_currency': 'BTC', 'fiat_currency': 'USD', - 'sell_reason': SellType.FORCE_SELL.value + 'sell_reason': SellType.FORCE_SELL.value, + 'open_date': ANY, + 'close_date': ANY, } == last_msg @@ -839,7 +843,9 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None 'profit_percent': -0.00589291, 'stake_currency': 'BTC', 'fiat_currency': 'USD', - 'sell_reason': SellType.FORCE_SELL.value + 'sell_reason': SellType.FORCE_SELL.value, + 'open_date': ANY, + 'close_date': ANY, } == msg @@ -1224,7 +1230,9 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: 'profit_percent': -0.57405275, 'stake_currency': 'ETH', 'fiat_currency': 'USD', - 'sell_reason': SellType.STOP_LOSS.value + 'sell_reason': SellType.STOP_LOSS.value, + 'open_date': arrow.utcnow().shift(hours=-1), + 'close_date': arrow.utcnow(), }) assert msg_mock.call_args[0][0] \ == ('*Binance:* Selling KEY/ETH\n' @@ -1233,6 +1241,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' '*Sell Reason:* `stop_loss`\n' + '*Duration:* `1:00:00`\n' '*Profit:* `-57.41%`` (loss: -0.05746268 ETH`` / -24.812 USD)`') msg_mock.reset_mock() @@ -1249,7 +1258,9 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: 'profit_amount': -0.05746268, 'profit_percent': -0.57405275, 'stake_currency': 'ETH', - 'sell_reason': SellType.STOP_LOSS.value + 'sell_reason': SellType.STOP_LOSS.value, + 'open_date': arrow.utcnow().shift(hours=-2, minutes=-30), + 'close_date': arrow.utcnow(), }) assert msg_mock.call_args[0][0] \ == ('*Binance:* Selling KEY/ETH\n' @@ -1258,6 +1269,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' '*Sell Reason:* `stop_loss`\n' + '*Duration:* `2:30:00`\n' '*Profit:* `-57.41%`') # Reset singleton function to avoid random breaks telegram._fiat_converter.convert_amount = old_convamount @@ -1377,7 +1389,9 @@ def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None: 'profit_percent': -0.57405275, 'stake_currency': 'ETH', 'fiat_currency': 'USD', - 'sell_reason': SellType.STOP_LOSS.value + 'sell_reason': SellType.STOP_LOSS.value, + 'open_date': arrow.utcnow().shift(hours=-2, minutes=-35, seconds=-3), + 'close_date': arrow.utcnow(), }) assert msg_mock.call_args[0][0] \ == '*Binance:* Selling KEY/ETH\n' \ @@ -1386,6 +1400,7 @@ def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None: '*Open Rate:* `0.00007500`\n' \ '*Current Rate:* `0.00003201`\n' \ '*Sell Reason:* `stop_loss`\n' \ + '*Duration:* `2:35:03`\n' \ '*Profit:* `-57.41%`' diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index fe58ccf37..efab64a6a 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -5,7 +5,7 @@ import logging import time from copy import deepcopy from math import isclose -from unittest.mock import MagicMock, PropertyMock +from unittest.mock import ANY, MagicMock, PropertyMock import arrow import pytest @@ -2199,7 +2199,9 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, mocker) -> N 'profit_percent': 0.0611052, 'stake_currency': 'BTC', 'fiat_currency': 'USD', - 'sell_reason': SellType.ROI.value + 'sell_reason': SellType.ROI.value, + 'open_date': ANY, + 'close_date': ANY, } == last_msg @@ -2246,7 +2248,9 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, mocker) 'profit_percent': -0.05478342, 'stake_currency': 'BTC', 'fiat_currency': 'USD', - 'sell_reason': SellType.STOP_LOSS.value + 'sell_reason': SellType.STOP_LOSS.value, + 'open_date': ANY, + 'close_date': ANY, } == last_msg @@ -2300,7 +2304,9 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe 'profit_percent': -0.01493766, 'stake_currency': 'BTC', 'fiat_currency': 'USD', - 'sell_reason': SellType.STOP_LOSS.value + 'sell_reason': SellType.STOP_LOSS.value, + 'open_date': ANY, + 'close_date': ANY, } == last_msg @@ -2497,7 +2503,9 @@ def test_execute_sell_market_order(default_conf, ticker, fee, 'profit_percent': 0.0611052, 'stake_currency': 'BTC', 'fiat_currency': 'USD', - 'sell_reason': SellType.ROI.value + 'sell_reason': SellType.ROI.value, + 'open_date': ANY, + 'close_date': ANY, } == last_msg From dc9fed4a5f0fabc775332522f5a45b1ed1a90f84 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 8 Dec 2019 14:10:26 +0100 Subject: [PATCH 1155/3421] Adjust documentation --- docs/webhook-config.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/webhook-config.md b/docs/webhook-config.md index 112f8a77e..9e0a34eae 100644 --- a/docs/webhook-config.md +++ b/docs/webhook-config.md @@ -63,6 +63,8 @@ Possible parameters are: * `fiat_currency` * `sell_reason` * `order_type` +* `open_date` +* `close_date` ### Webhookstatus From 4b560880fd198c55809369bee208f0a0a3294728 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 9 Dec 2019 04:37:58 +0300 Subject: [PATCH 1156/3421] Add tests for hyperopt-list, hyperopt-show --- tests/conftest.py | 5 +++ tests/test_utils.py | 93 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 97 insertions(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 6c567dda8..020c29eb1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1414,3 +1414,8 @@ def open_trade(): open_date=arrow.utcnow().shift(minutes=-601).datetime, is_open=True ) + + +@pytest.fixture +def hyperopt_results(): + return [{'loss': 0.4366182531161519, 'params_dict': {'mfi-value': 15, 'fastd-value': 20, 'adx-value': 25, 'rsi-value': 28, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 88, 'sell-fastd-value': 97, 'sell-adx-value': 51, 'sell-rsi-value': 67, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1190, 'roi_t2': 541, 'roi_t3': 408, 'roi_p1': 0.026035863879169705, 'roi_p2': 0.12508730043628782, 'roi_p3': 0.27766427921605896, 'stoploss': -0.2562930402099556}, 'params_details': {'buy': {'mfi-value': 15, 'fastd-value': 20, 'adx-value': 25, 'rsi-value': 28, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 88, 'sell-fastd-value': 97, 'sell-adx-value': 51, 'sell-rsi-value': 67, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.4287874435315165, 408: 0.15112316431545753, 949: 0.026035863879169705, 2139: 0}, 'stoploss': {'stoploss': -0.2562930402099556}}, 'results_metrics': {'trade_count': 2, 'avg_profit': -1.254995, 'total_profit': -0.00125625, 'profit': -2.50999, 'duration': 3930.0}, 'results_explanation': ' 2 trades. Avg profit -1.25%. Total profit -0.00125625 BTC ( -2.51Σ%). Avg duration 3930.0 mins.', 'total_profit': -0.00125625, 'current_epoch': 1, 'is_initial_point': True, 'is_best': True}, {'loss': 20.0, 'params_dict': {'mfi-value': 17, 'fastd-value': 38, 'adx-value': 48, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 96, 'sell-fastd-value': 68, 'sell-adx-value': 63, 'sell-rsi-value': 81, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal', 'roi_t1': 334, 'roi_t2': 683, 'roi_t3': 140, 'roi_p1': 0.06403981740598495, 'roi_p2': 0.055519840060645045, 'roi_p3': 0.3253712811342459, 'stoploss': -0.338070047333259}, 'params_details': {'buy': {'mfi-value': 17, 'fastd-value': 38, 'adx-value': 48, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 96, 'sell-fastd-value': 68, 'sell-adx-value': 63, 'sell-rsi-value': 81, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal'}, 'roi': {0: 0.4449309386008759, 140: 0.11955965746663, 823: 0.06403981740598495, 1157: 0}, 'stoploss': {'stoploss': -0.338070047333259}}, 'results_metrics': {'trade_count': 1, 'avg_profit': 0.12357, 'total_profit': 6.185e-05, 'profit': 0.12357, 'duration': 1200.0}, 'results_explanation': ' 1 trades. Avg profit 0.12%. Total profit 0.00006185 BTC ( 0.12Σ%). Avg duration 1200.0 mins.', 'total_profit': 6.185e-05, 'current_epoch': 2, 'is_initial_point': True, 'is_best': False}, {'loss': 14.241196856510731, 'params_dict': {'mfi-value': 25, 'fastd-value': 16, 'adx-value': 29, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 98, 'sell-fastd-value': 72, 'sell-adx-value': 51, 'sell-rsi-value': 82, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 889, 'roi_t2': 533, 'roi_t3': 263, 'roi_p1': 0.04759065393663096, 'roi_p2': 0.1488819964638463, 'roi_p3': 0.4102801822104605, 'stoploss': -0.05394588767607611}, 'params_details': {'buy': {'mfi-value': 25, 'fastd-value': 16, 'adx-value': 29, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 98, 'sell-fastd-value': 72, 'sell-adx-value': 51, 'sell-rsi-value': 82, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.6067528326109377, 263: 0.19647265040047726, 796: 0.04759065393663096, 1685: 0}, 'stoploss': {'stoploss': -0.05394588767607611}}, 'results_metrics': {'trade_count': 621, 'avg_profit': -0.43883302093397747, 'total_profit': -0.13639474, 'profit': -272.515306, 'duration': 1691.207729468599}, 'results_explanation': ' 621 trades. Avg profit -0.44%. Total profit -0.13639474 BTC (-272.52Σ%). Avg duration 1691.2 mins.', 'total_profit': -0.13639474, 'current_epoch': 3, 'is_initial_point': True, 'is_best': False}, {'loss': 100000, 'params_dict': {'mfi-value': 13, 'fastd-value': 35, 'adx-value': 39, 'rsi-value': 29, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 87, 'sell-fastd-value': 54, 'sell-adx-value': 63, 'sell-rsi-value': 93, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1402, 'roi_t2': 676, 'roi_t3': 215, 'roi_p1': 0.06264755784937427, 'roi_p2': 0.14258587851894644, 'roi_p3': 0.20671291201040828, 'stoploss': -0.11818343570194478}, 'params_details': {'buy': {'mfi-value': 13, 'fastd-value': 35, 'adx-value': 39, 'rsi-value': 29, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 87, 'sell-fastd-value': 54, 'sell-adx-value': 63, 'sell-rsi-value': 93, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.411946348378729, 215: 0.2052334363683207, 891: 0.06264755784937427, 2293: 0}, 'stoploss': {'stoploss': -0.11818343570194478}}, 'results_metrics': {'trade_count': 0, 'avg_profit': None, 'total_profit': 0, 'profit': 0.0, 'duration': None}, 'results_explanation': ' 0 trades. Avg profit nan%. Total profit 0.00000000 BTC ( 0.00Σ%). Avg duration nan mins.', 'total_profit': 0, 'current_epoch': 4, 'is_initial_point': True, 'is_best': False}, {'loss': 0.22195522184191518, 'params_dict': {'mfi-value': 17, 'fastd-value': 21, 'adx-value': 38, 'rsi-value': 33, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': False, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 87, 'sell-fastd-value': 82, 'sell-adx-value': 78, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 1269, 'roi_t2': 601, 'roi_t3': 444, 'roi_p1': 0.07280999507931168, 'roi_p2': 0.08946698095898986, 'roi_p3': 0.1454876733325284, 'stoploss': -0.18181041180901014}, 'params_details': {'buy': {'mfi-value': 17, 'fastd-value': 21, 'adx-value': 38, 'rsi-value': 33, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': False, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 87, 'sell-fastd-value': 82, 'sell-adx-value': 78, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.3077646493708299, 444: 0.16227697603830155, 1045: 0.07280999507931168, 2314: 0}, 'stoploss': {'stoploss': -0.18181041180901014}}, 'results_metrics': {'trade_count': 14, 'avg_profit': -0.3539515, 'total_profit': -0.002480140000000001, 'profit': -4.955321, 'duration': 3402.8571428571427}, 'results_explanation': ' 14 trades. Avg profit -0.35%. Total profit -0.00248014 BTC ( -4.96Σ%). Avg duration 3402.9 mins.', 'total_profit': -0.002480140000000001, 'current_epoch': 5, 'is_initial_point': True, 'is_best': True}, {'loss': 0.545315889154162, 'params_dict': {'mfi-value': 22, 'fastd-value': 43, 'adx-value': 46, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'bb_lower', 'sell-mfi-value': 87, 'sell-fastd-value': 65, 'sell-adx-value': 94, 'sell-rsi-value': 63, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 319, 'roi_t2': 556, 'roi_t3': 216, 'roi_p1': 0.06251955472249589, 'roi_p2': 0.11659519602202795, 'roi_p3': 0.0953744132197762, 'stoploss': -0.024551752215582423}, 'params_details': {'buy': {'mfi-value': 22, 'fastd-value': 43, 'adx-value': 46, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'bb_lower'}, 'sell': {'sell-mfi-value': 87, 'sell-fastd-value': 65, 'sell-adx-value': 94, 'sell-rsi-value': 63, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.2744891639643, 216: 0.17911475074452382, 772: 0.06251955472249589, 1091: 0}, 'stoploss': {'stoploss': -0.024551752215582423}}, 'results_metrics': {'trade_count': 39, 'avg_profit': -0.21400679487179478, 'total_profit': -0.0041773, 'profit': -8.346264999999997, 'duration': 636.9230769230769}, 'results_explanation': ' 39 trades. Avg profit -0.21%. Total profit -0.00417730 BTC ( -8.35Σ%). Avg duration 636.9 mins.', 'total_profit': -0.0041773, 'current_epoch': 6, 'is_initial_point': True, 'is_best': False}, {'loss': 4.713497421432944, 'params_dict': {'mfi-value': 13, 'fastd-value': 41, 'adx-value': 21, 'rsi-value': 29, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower', 'sell-mfi-value': 99, 'sell-fastd-value': 60, 'sell-adx-value': 81, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 771, 'roi_t2': 620, 'roi_t3': 145, 'roi_p1': 0.0586919200378493, 'roi_p2': 0.04984118697312542, 'roi_p3': 0.37521058680247044, 'stoploss': -0.14613268022709905}, 'params_details': {'buy': {'mfi-value': 13, 'fastd-value': 41, 'adx-value': 21, 'rsi-value': 29, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower'}, 'sell': {'sell-mfi-value': 99, 'sell-fastd-value': 60, 'sell-adx-value': 81, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.4837436938134452, 145: 0.10853310701097472, 765: 0.0586919200378493, 1536: 0}, 'stoploss': {'stoploss': -0.14613268022709905}}, 'results_metrics': {'trade_count': 318, 'avg_profit': -0.39833954716981146, 'total_profit': -0.06339929, 'profit': -126.67197600000004, 'duration': 3140.377358490566}, 'results_explanation': ' 318 trades. Avg profit -0.40%. Total profit -0.06339929 BTC (-126.67Σ%). Avg duration 3140.4 mins.', 'total_profit': -0.06339929, 'current_epoch': 7, 'is_initial_point': True, 'is_best': False}, {'loss': 20.0, 'params_dict': {'mfi-value': 24, 'fastd-value': 43, 'adx-value': 33, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'sar_reversal', 'sell-mfi-value': 89, 'sell-fastd-value': 74, 'sell-adx-value': 70, 'sell-rsi-value': 70, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': False, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal', 'roi_t1': 1149, 'roi_t2': 375, 'roi_t3': 289, 'roi_p1': 0.05571820757172588, 'roi_p2': 0.0606240398618907, 'roi_p3': 0.1729012220156157, 'stoploss': -0.1588514289110401}, 'params_details': {'buy': {'mfi-value': 24, 'fastd-value': 43, 'adx-value': 33, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'sar_reversal'}, 'sell': {'sell-mfi-value': 89, 'sell-fastd-value': 74, 'sell-adx-value': 70, 'sell-rsi-value': 70, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': False, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal'}, 'roi': {0: 0.2892434694492323, 289: 0.11634224743361658, 664: 0.05571820757172588, 1813: 0}, 'stoploss': {'stoploss': -0.1588514289110401}}, 'results_metrics': {'trade_count': 1, 'avg_profit': 0.0, 'total_profit': 0.0, 'profit': 0.0, 'duration': 5340.0}, 'results_explanation': ' 1 trades. Avg profit 0.00%. Total profit 0.00000000 BTC ( 0.00Σ%). Avg duration 5340.0 mins.', 'total_profit': 0.0, 'current_epoch': 8, 'is_initial_point': True, 'is_best': False}, {'loss': 2.4731817780991223, 'params_dict': {'mfi-value': 22, 'fastd-value': 20, 'adx-value': 29, 'rsi-value': 40, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'sar_reversal', 'sell-mfi-value': 97, 'sell-fastd-value': 65, 'sell-adx-value': 81, 'sell-rsi-value': 64, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1012, 'roi_t2': 584, 'roi_t3': 422, 'roi_p1': 0.036764323603472565, 'roi_p2': 0.10335480573205287, 'roi_p3': 0.10322347377503042, 'stoploss': -0.2780610808108503}, 'params_details': {'buy': {'mfi-value': 22, 'fastd-value': 20, 'adx-value': 29, 'rsi-value': 40, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'sar_reversal'}, 'sell': {'sell-mfi-value': 97, 'sell-fastd-value': 65, 'sell-adx-value': 81, 'sell-rsi-value': 64, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.2433426031105559, 422: 0.14011912933552545, 1006: 0.036764323603472565, 2018: 0}, 'stoploss': {'stoploss': -0.2780610808108503}}, 'results_metrics': {'trade_count': 229, 'avg_profit': -0.38433433624454144, 'total_profit': -0.044050070000000004, 'profit': -88.01256299999999, 'duration': 6505.676855895196}, 'results_explanation': ' 229 trades. Avg profit -0.38%. Total profit -0.04405007 BTC ( -88.01Σ%). Avg duration 6505.7 mins.', 'total_profit': -0.044050070000000004, 'current_epoch': 9, 'is_initial_point': True, 'is_best': False}, {'loss': -0.2604606005845212, 'params_dict': {'mfi-value': 23, 'fastd-value': 24, 'adx-value': 22, 'rsi-value': 24, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 97, 'sell-fastd-value': 70, 'sell-adx-value': 64, 'sell-rsi-value': 80, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal', 'roi_t1': 792, 'roi_t2': 464, 'roi_t3': 215, 'roi_p1': 0.04594053535385903, 'roi_p2': 0.09623192684243963, 'roi_p3': 0.04428219070850663, 'stoploss': -0.16992287161634415}, 'params_details': {'buy': {'mfi-value': 23, 'fastd-value': 24, 'adx-value': 22, 'rsi-value': 24, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 97, 'sell-fastd-value': 70, 'sell-adx-value': 64, 'sell-rsi-value': 80, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal'}, 'roi': {0: 0.18645465290480528, 215: 0.14217246219629864, 679: 0.04594053535385903, 1471: 0}, 'stoploss': {'stoploss': -0.16992287161634415}}, 'results_metrics': {'trade_count': 4, 'avg_profit': 0.1080385, 'total_profit': 0.00021629, 'profit': 0.432154, 'duration': 2850.0}, 'results_explanation': ' 4 trades. Avg profit 0.11%. Total profit 0.00021629 BTC ( 0.43Σ%). Avg duration 2850.0 mins.', 'total_profit': 0.00021629, 'current_epoch': 10, 'is_initial_point': True, 'is_best': True}, {'loss': 4.876465945994304, 'params_dict': {'mfi-value': 20, 'fastd-value': 32, 'adx-value': 49, 'rsi-value': 23, 'mfi-enabled': True, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower', 'sell-mfi-value': 75, 'sell-fastd-value': 56, 'sell-adx-value': 61, 'sell-rsi-value': 62, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 579, 'roi_t2': 614, 'roi_t3': 273, 'roi_p1': 0.05307643172744114, 'roi_p2': 0.1352282078262871, 'roi_p3': 0.1913307406325751, 'stoploss': -0.25728526022513887}, 'params_details': {'buy': {'mfi-value': 20, 'fastd-value': 32, 'adx-value': 49, 'rsi-value': 23, 'mfi-enabled': True, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower'}, 'sell': {'sell-mfi-value': 75, 'sell-fastd-value': 56, 'sell-adx-value': 61, 'sell-rsi-value': 62, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.3796353801863034, 273: 0.18830463955372825, 887: 0.05307643172744114, 1466: 0}, 'stoploss': {'stoploss': -0.25728526022513887}}, 'results_metrics': {'trade_count': 117, 'avg_profit': -1.2698609145299145, 'total_profit': -0.07436117, 'profit': -148.573727, 'duration': 4282.5641025641025}, 'results_explanation': ' 117 trades. Avg profit -1.27%. Total profit -0.07436117 BTC (-148.57Σ%). Avg duration 4282.6 mins.', 'total_profit': -0.07436117, 'current_epoch': 11, 'is_initial_point': True, 'is_best': False}, {'loss': 100000, 'params_dict': {'mfi-value': 10, 'fastd-value': 36, 'adx-value': 31, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': False, 'trigger': 'sar_reversal', 'sell-mfi-value': 80, 'sell-fastd-value': 71, 'sell-adx-value': 60, 'sell-rsi-value': 85, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1156, 'roi_t2': 581, 'roi_t3': 408, 'roi_p1': 0.06860454019988212, 'roi_p2': 0.12473718444931989, 'roi_p3': 0.2896360635226823, 'stoploss': -0.30889015124682806}, 'params_details': {'buy': {'mfi-value': 10, 'fastd-value': 36, 'adx-value': 31, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': False, 'trigger': 'sar_reversal'}, 'sell': {'sell-mfi-value': 80, 'sell-fastd-value': 71, 'sell-adx-value': 60, 'sell-rsi-value': 85, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.4829777881718843, 408: 0.19334172464920202, 989: 0.06860454019988212, 2145: 0}, 'stoploss': {'stoploss': -0.30889015124682806}}, 'results_metrics': {'trade_count': 0, 'avg_profit': None, 'total_profit': 0, 'profit': 0.0, 'duration': None}, 'results_explanation': ' 0 trades. Avg profit nan%. Total profit 0.00000000 BTC ( 0.00Σ%). Avg duration nan mins.', 'total_profit': 0, 'current_epoch': 12, 'is_initial_point': True, 'is_best': False}] # noqa: E501 diff --git a/tests/test_utils.py b/tests/test_utils.py index 67ec8409b..3fc92e14b 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -10,7 +10,8 @@ from freqtrade.utils import (setup_utils_configuration, start_create_userdir, start_download_data, start_list_exchanges, start_list_markets, start_list_timeframes, start_new_hyperopt, start_new_strategy, - start_test_pairlist, start_trading) + start_test_pairlist, start_trading, + start_hyperopt_list, start_hyperopt_show) from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, patched_configuration_load_config_file) @@ -657,3 +658,93 @@ def test_start_test_pairlist(mocker, caplog, markets, tickers, default_conf, cap captured = capsys.readouterr() assert re.match(r"Pairs for .*", captured.out) assert re.match("['ETH/BTC', 'TKN/BTC', 'BLK/BTC', 'LTC/BTC', 'XRP/BTC']", captured.out) + + +def test_hyperopt_list(mocker, capsys, hyperopt_results): + mocker.patch( + 'freqtrade.optimize.hyperopt.Hyperopt.load_previous_results', + MagicMock(return_value=hyperopt_results) + ) + + args = [ + "hyperopt-list", + "--no-details" + ] + start_hyperopt_list(get_args(args)) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 1/12", " 2/12", " 3/12", " 4/12", " 5/12", + " 6/12", " 7/12", " 8/12", " 9/12", " 10/12", + " 11/12", " 12/12"]) + args = [ + "hyperopt-list", + "--best", + "--no-details" + ] + start_hyperopt_list(get_args(args)) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 1/12", " 5/12", " 10/12"]) + assert all(x not in captured.out + for x in [" 2/12", " 3/12", " 4/12", " 6/12", " 7/12", " 8/12", " 9/12", + " 11/12", " 12/12"]) + args = [ + "hyperopt-list", + "--profitable", + "--no-details" + ] + start_hyperopt_list(get_args(args)) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 2/12", " 10/12"]) + assert all(x not in captured.out + for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", + " 11/12", " 12/12"]) + + +def test_hyperopt_show(mocker, capsys, hyperopt_results): + mocker.patch( + 'freqtrade.optimize.hyperopt.Hyperopt.load_previous_results', + MagicMock(return_value=hyperopt_results) + ) + + args = [ + "hyperopt-show", + ] + start_hyperopt_show(get_args(args)) + captured = capsys.readouterr() + assert " 12/12" in captured.out + + args = [ + "hyperopt-show", + "--best" + ] + start_hyperopt_show(get_args(args)) + captured = capsys.readouterr() + assert " 10/12" in captured.out + + args = [ + "hyperopt-show", + "-n", "1" + ] + start_hyperopt_show(get_args(args)) + captured = capsys.readouterr() + assert " 1/12" in captured.out + + args = [ + "hyperopt-show", + "--best", + "-n", "2" + ] + start_hyperopt_show(get_args(args)) + captured = capsys.readouterr() + assert " 5/12" in captured.out + + args = [ + "hyperopt-show", + "--best", + "-n", "-1" + ] + start_hyperopt_show(get_args(args)) + captured = capsys.readouterr() + assert " 10/12" in captured.out From 0f4dcaa403ca97bc49863943e9e8242c6c684b0c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2019 07:25:03 +0000 Subject: [PATCH 1157/3421] Bump pytest-mock from 1.12.1 to 1.13.0 Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.12.1 to 1.13.0. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v1.12.1...v1.13.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index a2ffa1a06..aecfa6f28 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,7 +11,7 @@ mypy==0.750 pytest==5.3.1 pytest-asyncio==0.10.0 pytest-cov==2.8.1 -pytest-mock==1.12.1 +pytest-mock==1.13.0 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents From 4934456751a975352dbee8f32c0b942d011fa65f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2019 07:25:28 +0000 Subject: [PATCH 1158/3421] Bump mkdocs-material from 4.5.0 to 4.5.1 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.5.0 to 4.5.1. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.5.0...4.5.1) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index bfa5c0d1e..ae77c0b06 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==4.5.0 +mkdocs-material==4.5.1 mdx_truly_sane_lists==1.2 From 25447329a01bc2e354aee0f7d5b00ee7d65aacc9 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2019 07:25:44 +0000 Subject: [PATCH 1159/3421] Bump scikit-learn from 0.21.3 to 0.22 Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.21.3 to 0.22. - [Release notes](https://github.com/scikit-learn/scikit-learn/releases) - [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.21.3...0.22) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 96a22b42e..2317cdf3e 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -3,7 +3,7 @@ # Required for hyperopt scipy==1.3.3 -scikit-learn==0.21.3 +scikit-learn==0.22 scikit-optimize==0.5.2 filelock==3.0.12 joblib==0.14.0 From 0ca3157a8ba00bd8a5fc3a84ea531aa69d3227b2 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2019 07:26:06 +0000 Subject: [PATCH 1160/3421] Bump coveralls from 1.8.2 to 1.9.2 Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 1.8.2 to 1.9.2. - [Release notes](https://github.com/coveralls-clients/coveralls-python/releases) - [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/coveralls-clients/coveralls-python/compare/1.8.2...1.9.2) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index a2ffa1a06..7ac588452 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -3,7 +3,7 @@ -r requirements-plot.txt -r requirements-hyperopt.txt -coveralls==1.8.2 +coveralls==1.9.2 flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==3.1.0 From ed053d240e6a14d816785ea8014e0117f5eaca25 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2019 07:26:42 +0000 Subject: [PATCH 1161/3421] Bump ccxt from 1.20.22 to 1.20.46 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.20.22 to 1.20.46. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.20.22...1.20.46) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 8c38cf546..95a2c4ad2 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.20.22 +ccxt==1.20.46 SQLAlchemy==1.3.11 python-telegram-bot==12.2.0 arrow==0.15.4 From 081b21fe826e8791f8291c27b8a6462a9999f492 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2019 07:26:53 +0000 Subject: [PATCH 1162/3421] Bump colorama from 0.4.1 to 0.4.3 Bumps [colorama](https://github.com/tartley/colorama) from 0.4.1 to 0.4.3. - [Release notes](https://github.com/tartley/colorama/releases) - [Changelog](https://github.com/tartley/colorama/blob/master/CHANGELOG.rst) - [Commits](https://github.com/tartley/colorama/compare/0.4.1...0.4.3) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 8c38cf546..99b27856b 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -27,4 +27,4 @@ sdnotify==0.3.2 flask==1.1.1 # Support for colorized terminal output -colorama==0.4.1 +colorama==0.4.3 From a9f7e9fb7ab3dd9fcc286846b159575ee8b43ba7 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 9 Dec 2019 12:49:04 +0300 Subject: [PATCH 1163/3421] Fix NO_CONF; fix tests --- freqtrade/configuration/arguments.py | 2 +- tests/test_utils.py | 32 +++++++++++++++++++++------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 799cd7d20..41c5c3957 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -62,7 +62,7 @@ ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperop "print_json", "hyperopt_show_no_header"] NO_CONF_REQURIED = ["download-data", "list-timeframes", "list-markets", "list-pairs", - "hyperopt_list", "hyperopt_show", "plot-dataframe", "plot-profit"] + "hyperopt-list", "hyperopt-show", "plot-dataframe", "plot-profit"] NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-hyperopt", "new-strategy"] diff --git a/tests/test_utils.py b/tests/test_utils.py index 3fc92e14b..f7bb12799 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -670,7 +670,9 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): "hyperopt-list", "--no-details" ] - start_hyperopt_list(get_args(args)) + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) captured = capsys.readouterr() assert all(x in captured.out for x in [" 1/12", " 2/12", " 3/12", " 4/12", " 5/12", @@ -681,7 +683,9 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): "--best", "--no-details" ] - start_hyperopt_list(get_args(args)) + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) captured = capsys.readouterr() assert all(x in captured.out for x in [" 1/12", " 5/12", " 10/12"]) @@ -693,7 +697,9 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): "--profitable", "--no-details" ] - start_hyperopt_list(get_args(args)) + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) captured = capsys.readouterr() assert all(x in captured.out for x in [" 2/12", " 10/12"]) @@ -711,7 +717,9 @@ def test_hyperopt_show(mocker, capsys, hyperopt_results): args = [ "hyperopt-show", ] - start_hyperopt_show(get_args(args)) + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_show(pargs) captured = capsys.readouterr() assert " 12/12" in captured.out @@ -719,7 +727,9 @@ def test_hyperopt_show(mocker, capsys, hyperopt_results): "hyperopt-show", "--best" ] - start_hyperopt_show(get_args(args)) + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_show(pargs) captured = capsys.readouterr() assert " 10/12" in captured.out @@ -727,7 +737,9 @@ def test_hyperopt_show(mocker, capsys, hyperopt_results): "hyperopt-show", "-n", "1" ] - start_hyperopt_show(get_args(args)) + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_show(pargs) captured = capsys.readouterr() assert " 1/12" in captured.out @@ -736,7 +748,9 @@ def test_hyperopt_show(mocker, capsys, hyperopt_results): "--best", "-n", "2" ] - start_hyperopt_show(get_args(args)) + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_show(pargs) captured = capsys.readouterr() assert " 5/12" in captured.out @@ -745,6 +759,8 @@ def test_hyperopt_show(mocker, capsys, hyperopt_results): "--best", "-n", "-1" ] - start_hyperopt_show(get_args(args)) + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_show(pargs) captured = capsys.readouterr() assert " 10/12" in captured.out From de33ec425086e1aacc093b6cea0694ca549db5cc Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 9 Dec 2019 16:52:12 +0100 Subject: [PATCH 1164/3421] use sell_row.open also when the active ROI value just changed --- freqtrade/optimize/backtesting.py | 19 ++++++---- tests/optimize/test_backtest_detail.py | 50 ++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 7b5bd34b4..4e86acdc6 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -273,19 +273,26 @@ class Backtesting: roi_entry, roi = self.strategy.min_roi_reached_entry(trade_dur) if roi is not None: if roi == -1 and roi_entry % self.timeframe_mins == 0: - # When forceselling with ROI=-1, the roi-entry will always be "on the entry". - # If that entry is a multiple of the timeframe (so on open) + # When forceselling with ROI=-1, the roi time will always be equal to trade_dur. + # If that entry is a multiple of the timeframe (so on candle open) # - we'll use open instead of close return sell_row.open # - (Expected abs profit + open_rate + open_fee) / (fee_close -1) - closerate = - (trade.open_rate * roi + trade.open_rate * - (1 + trade.fee_open)) / (trade.fee_close - 1) + close_rate = - (trade.open_rate * roi + trade.open_rate * + (1 + trade.fee_open)) / (trade.fee_close - 1) - # Use the maximum between closerate and low as we + if (trade_dur > 0 and trade_dur == roi_entry + and roi_entry % self.timeframe_mins == 0 + and sell_row.open > close_rate): + # new ROI entry came into effect. + # use Open rate if open_rate > calculated sell rate + return sell_row.open + + # Use the maximum between close_rate and low as we # cannot sell outside of a candle. # Applies when a new ROI setting comes in place and the whole candle is above that. - return max(closerate, sell_row.low) + return max(close_rate, sell_row.low) else: # This should not be reached... diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py index e269009b1..eff236a5e 100644 --- a/tests/optimize/test_backtest_detail.py +++ b/tests/optimize/test_backtest_detail.py @@ -281,6 +281,53 @@ tc17 = BTContainer(data=[ trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=3)] ) + +# Test 18: Buy, hold for 120 mins, then drop ROI to 1%, causing a sell in candle 3. +# stop-loss: 10%, ROI: 10% (should not apply), -100% after 100 minutes (limits trade duration) +# uses open_rate as sell-price +tc18 = BTContainer(data=[ + # D O H L C V B S + [0, 5000, 5025, 4975, 4987, 6172, 1, 0], + [1, 5000, 5025, 4975, 4987, 6172, 0, 0], + [2, 4987, 5300, 4950, 5200, 6172, 0, 0], + [3, 5200, 5220, 4940, 4962, 6172, 0, 0], # Sell on ROI (sells on open) + [4, 4962, 4987, 4972, 4950, 6172, 0, 0], + [5, 4950, 4975, 4925, 4950, 6172, 0, 0]], + stop_loss=-0.10, roi={"0": 0.10, "120": 0.01}, profit_perc=0.04, + trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=3)] +) + +# Test 19: Buy, hold for 119 mins, then drop ROI to 1%, causing a sell in candle 3. +# stop-loss: 10%, ROI: 10% (should not apply), -100% after 100 minutes (limits trade duration) +# uses calculated ROI (1%) as sell rate, otherwise identical to tc18 +tc19 = BTContainer(data=[ + # D O H L C V B S + [0, 5000, 5025, 4975, 4987, 6172, 1, 0], + [1, 5000, 5025, 4975, 4987, 6172, 0, 0], + [2, 4987, 5300, 4950, 5200, 6172, 0, 0], + [3, 5000, 5300, 4940, 4962, 6172, 0, 0], # Sell on ROI + [4, 4962, 4987, 4972, 4950, 6172, 0, 0], + [5, 4550, 4975, 4925, 4950, 6172, 0, 0]], + stop_loss=-0.10, roi={"0": 0.10, "120": 0.01}, profit_perc=0.01, + trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=3)] +) + +# Test 20: Buy, hold for 119 mins, then drop ROI to 1%, causing a sell in candle 3. +# stop-loss: 10%, ROI: 10% (should not apply), -100% after 100 minutes (limits trade duration) +# uses calculated ROI (1%) as sell rate, otherwise identical to tc18 +tc20 = BTContainer(data=[ + # D O H L C V B S + [0, 5000, 5025, 4975, 4987, 6172, 1, 0], + [1, 5000, 5025, 4975, 4987, 6172, 0, 0], + [2, 4987, 5300, 4950, 5200, 6172, 0, 0], + [3, 5200, 5300, 4940, 4962, 6172, 0, 0], # Sell on ROI + [4, 4962, 4987, 4972, 4950, 6172, 0, 0], + [5, 4550, 4975, 4925, 4950, 6172, 0, 0]], + stop_loss=-0.10, roi={"0": 0.10, "119": 0.01}, profit_perc=0.01, + trades=[BTrade(sell_reason=SellType.ROI, open_tick=1, close_tick=3)] +) + + TESTS = [ tc0, tc1, @@ -300,6 +347,9 @@ TESTS = [ tc15, tc16, tc17, + tc18, + tc19, + tc20, ] From 5fc357ee10cdd98e932270fc2e64ac4d83fa57f6 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 9 Dec 2019 23:43:50 +0300 Subject: [PATCH 1165/3421] Fix typo --- freqtrade/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 91758737e..0ff71e45b 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -429,7 +429,7 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: f"The index of the epoch to show should be less than {total_epochs + 1}.") if n < -total_epochs: raise OperationalException( - f"The index of the epoch to showshould be greater than {-total_epochs - 1}.") + f"The index of the epoch to show should be greater than {-total_epochs - 1}.") # Translate epoch index from human-readable format to pythonic if n > 0: From 8431b54b216396f757e680c195cb49bbf116a156 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 9 Dec 2019 23:50:40 +0300 Subject: [PATCH 1166/3421] Fix index limits handling --- freqtrade/utils.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 0ff71e45b..230fcf268 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -422,14 +422,15 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: total_epochs = len(trials) trials = _hyperopt_filter_trials(trials, only_best, only_profitable) + trials_epochs = len(trials) n = config.get('hyperopt_show_index', -1) - if n > total_epochs: + if n > trials_epochs: raise OperationalException( - f"The index of the epoch to show should be less than {total_epochs + 1}.") - if n < -total_epochs: + f"The index of the epoch to show should be less than {trials_epochs + 1}.") + if n < -trials_epochs: raise OperationalException( - f"The index of the epoch to show should be greater than {-total_epochs - 1}.") + f"The index of the epoch to show should be greater than {-trials_epochs - 1}.") # Translate epoch index from human-readable format to pythonic if n > 0: From 18c73ceb907e7d9ce2c9252a48e2a13bbb36e0f3 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 10 Dec 2019 00:22:11 +0300 Subject: [PATCH 1167/3421] Add tests for the last commit --- tests/test_utils.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/test_utils.py b/tests/test_utils.py index f7bb12799..feba1ed59 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -764,3 +764,25 @@ def test_hyperopt_show(mocker, capsys, hyperopt_results): start_hyperopt_show(pargs) captured = capsys.readouterr() assert " 10/12" in captured.out + + args = [ + "hyperopt-show", + "--best", + "-n", "-4" + ] + pargs = get_args(args) + pargs['config'] = None + with pytest.raises(OperationalException, + match="The index of the epoch to show should be greater than -4."): + start_hyperopt_show(pargs) + + args = [ + "hyperopt-show", + "--best", + "-n", "4" + ] + pargs = get_args(args) + pargs['config'] = None + with pytest.raises(OperationalException, + match="The index of the epoch to show should be less than 4."): + start_hyperopt_show(pargs) From 2f76eaf358223cee88e8ac604ed0db99a67e361a Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 10 Dec 2019 00:33:57 +0300 Subject: [PATCH 1168/3421] minor: Fix documentation formatting --- docs/utils.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/utils.md b/docs/utils.md index e5359af83..a9fbfc7d5 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -281,7 +281,7 @@ optional arguments: useful if you are redirecting output to a file. --print-json Print best result detailization in JSON format. --no-details Do not print best epoch details. - ``` +``` ### Examples From 641e3fdf7a51e846dafd862bc52b071d0000f55c Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 10 Dec 2019 03:13:45 +0300 Subject: [PATCH 1169/3421] Fix generation of hyperopt trailing params --- freqtrade/optimize/hyperopt.py | 13 ++++++------- freqtrade/optimize/hyperopt_interface.py | 24 ++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index e7b30198f..fb2de779c 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -177,8 +177,7 @@ class Hyperopt: result['stoploss'] = {p.name: params.get(p.name) for p in self.hyperopt_space('stoploss')} if self.has_space('trailing'): - result['trailing'] = {p.name: params.get(p.name) - for p in self.hyperopt_space('trailing')} + result['trailing'] = self.custom_hyperopt.generate_trailing_params(params) return result @@ -353,13 +352,13 @@ class Hyperopt: self.backtesting.strategy.stoploss = params_dict['stoploss'] if self.has_space('trailing'): - self.backtesting.strategy.trailing_stop = params_dict['trailing_stop'] - self.backtesting.strategy.trailing_stop_positive = \ - params_dict['trailing_stop_positive'] + d = self.custom_hyperopt.generate_trailing_params(params_dict) + self.backtesting.strategy.trailing_stop = d['trailing_stop'] + self.backtesting.strategy.trailing_stop_positive = d['trailing_stop_positive'] self.backtesting.strategy.trailing_stop_positive_offset = \ - params_dict['trailing_stop_positive_offset'] + d['trailing_stop_positive_offset'] self.backtesting.strategy.trailing_only_offset_is_reached = \ - params_dict['trailing_only_offset_is_reached'] + d['trailing_only_offset_is_reached'] processed = load(self.tickerdata_pickle) diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 958fb8d66..dbbdb8b91 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -174,6 +174,19 @@ class IHyperOpt(ABC): Real(-0.35, -0.02, name='stoploss'), ] + @staticmethod + def generate_trailing_params(params: Dict) -> Dict: + """ + Create dict with trailing stop parameters. + """ + return { + 'trailing_stop': params['trailing_stop'], + 'trailing_stop_positive': params['trailing_stop_positive'], + 'trailing_stop_positive_offset': (params['trailing_stop_positive'] + + params['trailing_stop_positive_offset_p1']), + 'trailing_only_offset_is_reached': params['trailing_only_offset_is_reached'], + } + @staticmethod def trailing_space() -> List[Dimension]: """ @@ -190,8 +203,15 @@ class IHyperOpt(ABC): # other 'trailing' hyperspace parameters. Categorical([True], name='trailing_stop'), - Real(0.02, 0.35, name='trailing_stop_positive'), - Real(0.01, 0.1, name='trailing_stop_positive_offset'), + Real(0.01, 0.35, name='trailing_stop_positive'), + + # 'trailing_stop_positive_offset' should be greater than 'trailing_stop_positive', + # so this intermediate parameter is used as the value of the difference between + # them. The value of the 'trailing_stop_positive_offset' is constructed in the + # generate_trailing_params() method. + # # This is similar to the hyperspace dimensions used for constructing the ROI tables. + Real(0.001, 0.1, name='trailing_stop_positive_offset_p1'), + Categorical([True, False], name='trailing_only_offset_is_reached'), ] From 3252654ed3c4016a2c8ecc6520d9c6a35ef19c25 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 10 Dec 2019 14:06:17 +0300 Subject: [PATCH 1170/3421] Test adjusted --- tests/optimize/test_hyperopt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 6a8daab8b..60b445323 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -636,7 +636,7 @@ def test_generate_optimizer(mocker, default_conf) -> None: 'stoploss': -0.4, 'trailing_stop': True, 'trailing_stop_positive': 0.02, - 'trailing_stop_positive_offset': 0.1, + 'trailing_stop_positive_offset_p1': 0.05, 'trailing_only_offset_is_reached': False, } response_expected = { @@ -670,7 +670,7 @@ def test_generate_optimizer(mocker, default_conf) -> None: 'trailing': {'trailing_only_offset_is_reached': False, 'trailing_stop': True, 'trailing_stop_positive': 0.02, - 'trailing_stop_positive_offset': 0.1}}, + 'trailing_stop_positive_offset': 0.07}}, 'params_dict': optimizer_param, 'results_metrics': {'avg_profit': 2.3117, 'duration': 100.0, From 3448f86263363c26ba8cbc5c3ac9fcf3fff80bea Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 10 Dec 2019 15:45:10 +0300 Subject: [PATCH 1171/3421] Suppress scikit-learn FutureWarnings from skopt imports --- freqtrade/optimize/hyperopt.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index a7b0e2bf6..c84240934 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -7,6 +7,7 @@ This module contains the hyperopt logic import locale import logging import sys +import warnings from collections import OrderedDict from operator import itemgetter from pathlib import Path @@ -19,8 +20,12 @@ from colorama import init as colorama_init from joblib import (Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects) from pandas import DataFrame -from skopt import Optimizer -from skopt.space import Dimension + +# Suppress scikit-learn FutureWarnings from skopt +with warnings.catch_warnings(): + warnings.filterwarnings("ignore", category=FutureWarning) + from skopt import Optimizer + from skopt.space import Dimension from freqtrade.data.history import get_timeframe, trim_dataframe from freqtrade.misc import plural, round_dict From 390db9503f5f354ca836a2e88fc0b85e6def700e Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 10 Dec 2019 15:12:36 +0100 Subject: [PATCH 1172/3421] Show humanized and minutes version of duration --- freqtrade/rpc/telegram.py | 5 ++++- tests/rpc/test_rpc_telegram.py | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 859700019..b8d80ceb1 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -12,6 +12,7 @@ from telegram.error import NetworkError, TelegramError from telegram.ext import CallbackContext, CommandHandler, Updater from freqtrade.__init__ import __version__ +from freqtrade.misc import plural from freqtrade.rpc import RPC, RPCException, RPCMessageType from freqtrade.rpc.fiat_convert import CryptoToFiatConverter @@ -146,6 +147,8 @@ class Telegram(RPC): msg['profit_percent'] = round(msg['profit_percent'] * 100, 2) msg['duration'] = msg['close_date'].replace( microsecond=0) - msg['open_date'].replace(microsecond=0) + duration_tmp = msg['duration'].total_seconds() // 60 + msg['duration_mins'] = f"{duration_tmp:.0f} {plural(duration_tmp, 'min')}" message = ("*{exchange}:* Selling {pair}\n" "*Rate:* `{limit:.8f}`\n" @@ -153,7 +156,7 @@ class Telegram(RPC): "*Open Rate:* `{open_rate:.8f}`\n" "*Current Rate:* `{current_rate:.8f}`\n" "*Sell Reason:* `{sell_reason}`\n" - "*Duration:* `{duration}`\n" + "*Duration:* `{duration} ({duration_mins})`\n" "*Profit:* `{profit_percent:.2f}%`").format(**msg) # Check if all sell properties are available. diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 32f8ad036..7c1dd7983 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1241,7 +1241,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' '*Sell Reason:* `stop_loss`\n' - '*Duration:* `1:00:00`\n' + '*Duration:* `1:00:00 (60 mins)`\n' '*Profit:* `-57.41%`` (loss: -0.05746268 ETH`` / -24.812 USD)`') msg_mock.reset_mock() @@ -1259,7 +1259,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: 'profit_percent': -0.57405275, 'stake_currency': 'ETH', 'sell_reason': SellType.STOP_LOSS.value, - 'open_date': arrow.utcnow().shift(hours=-2, minutes=-30), + 'open_date': arrow.utcnow().shift(days=-1, hours=-2, minutes=-30), 'close_date': arrow.utcnow(), }) assert msg_mock.call_args[0][0] \ @@ -1269,7 +1269,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' '*Sell Reason:* `stop_loss`\n' - '*Duration:* `2:30:00`\n' + '*Duration:* `1 day, 2:30:00 (1590 mins)`\n' '*Profit:* `-57.41%`') # Reset singleton function to avoid random breaks telegram._fiat_converter.convert_amount = old_convamount @@ -1400,7 +1400,7 @@ def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None: '*Open Rate:* `0.00007500`\n' \ '*Current Rate:* `0.00003201`\n' \ '*Sell Reason:* `stop_loss`\n' \ - '*Duration:* `2:35:03`\n' \ + '*Duration:* `2:35:03 (155 mins)`\n' \ '*Profit:* `-57.41%`' From 3f9f29ba4ef752ce87e74960116e0f0b9d1d63d0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 10 Dec 2019 16:10:51 +0100 Subject: [PATCH 1173/3421] Fix Flake8 import error --- freqtrade/optimize/hyperopt.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index c84240934..a5be478bf 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -21,12 +21,6 @@ from joblib import (Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects) from pandas import DataFrame -# Suppress scikit-learn FutureWarnings from skopt -with warnings.catch_warnings(): - warnings.filterwarnings("ignore", category=FutureWarning) - from skopt import Optimizer - from skopt.space import Dimension - from freqtrade.data.history import get_timeframe, trim_dataframe from freqtrade.misc import plural, round_dict from freqtrade.optimize.backtesting import Backtesting @@ -36,6 +30,13 @@ from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss # noqa: F4 from freqtrade.resolvers.hyperopt_resolver import (HyperOptLossResolver, HyperOptResolver) +# Suppress scikit-learn FutureWarnings from skopt +with warnings.catch_warnings(): + warnings.filterwarnings("ignore", category=FutureWarning) + from skopt import Optimizer + from skopt.space import Dimension + + logger = logging.getLogger(__name__) From 1058e5fb723d68cd6fc2a8b388b1307993991de1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 11 Dec 2019 06:48:40 +0100 Subject: [PATCH 1174/3421] No plural for min --- freqtrade/rpc/telegram.py | 6 ++---- tests/rpc/test_rpc_telegram.py | 6 +++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index b8d80ceb1..51736968b 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -12,7 +12,6 @@ from telegram.error import NetworkError, TelegramError from telegram.ext import CallbackContext, CommandHandler, Updater from freqtrade.__init__ import __version__ -from freqtrade.misc import plural from freqtrade.rpc import RPC, RPCException, RPCMessageType from freqtrade.rpc.fiat_convert import CryptoToFiatConverter @@ -147,8 +146,7 @@ class Telegram(RPC): msg['profit_percent'] = round(msg['profit_percent'] * 100, 2) msg['duration'] = msg['close_date'].replace( microsecond=0) - msg['open_date'].replace(microsecond=0) - duration_tmp = msg['duration'].total_seconds() // 60 - msg['duration_mins'] = f"{duration_tmp:.0f} {plural(duration_tmp, 'min')}" + msg['duration_min'] = msg['duration'].total_seconds() / 60 message = ("*{exchange}:* Selling {pair}\n" "*Rate:* `{limit:.8f}`\n" @@ -156,7 +154,7 @@ class Telegram(RPC): "*Open Rate:* `{open_rate:.8f}`\n" "*Current Rate:* `{current_rate:.8f}`\n" "*Sell Reason:* `{sell_reason}`\n" - "*Duration:* `{duration} ({duration_mins})`\n" + "*Duration:* `{duration} ({duration_min:.1f} min)`\n" "*Profit:* `{profit_percent:.2f}%`").format(**msg) # Check if all sell properties are available. diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 7c1dd7983..7c4a8f0d6 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1241,7 +1241,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' '*Sell Reason:* `stop_loss`\n' - '*Duration:* `1:00:00 (60 mins)`\n' + '*Duration:* `1:00:00 (60.0 min)`\n' '*Profit:* `-57.41%`` (loss: -0.05746268 ETH`` / -24.812 USD)`') msg_mock.reset_mock() @@ -1269,7 +1269,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' '*Sell Reason:* `stop_loss`\n' - '*Duration:* `1 day, 2:30:00 (1590 mins)`\n' + '*Duration:* `1 day, 2:30:00 (1590.0 min)`\n' '*Profit:* `-57.41%`') # Reset singleton function to avoid random breaks telegram._fiat_converter.convert_amount = old_convamount @@ -1400,7 +1400,7 @@ def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None: '*Open Rate:* `0.00007500`\n' \ '*Current Rate:* `0.00003201`\n' \ '*Sell Reason:* `stop_loss`\n' \ - '*Duration:* `2:35:03 (155 mins)`\n' \ + '*Duration:* `2:35:03 (155.1 min)`\n' \ '*Profit:* `-57.41%`' From 7c7ca1cb90f6f5468cf286920462b117a3b63f99 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 11 Dec 2019 07:12:37 +0100 Subject: [PATCH 1175/3421] Remove min (plural) from codebase --- freqtrade/data/history.py | 6 +- freqtrade/optimize/backtesting.py | 6 +- freqtrade/optimize/hyperopt.py | 2 +- freqtrade/optimize/hyperopt_interface.py | 6 +- tests/conftest.py | 127 ++++++++++++++++++++++- tests/optimize/test_backtest_detail.py | 2 +- tests/optimize/test_hyperopt.py | 2 +- 7 files changed, 138 insertions(+), 13 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 865893a66..ddcae89ab 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -463,7 +463,7 @@ def get_timeframe(data: Dict[str, DataFrame]) -> Tuple[arrow.Arrow, arrow.Arrow] def validate_backtest_data(data: DataFrame, pair: str, min_date: datetime, - max_date: datetime, timeframe_mins: int) -> bool: + max_date: datetime, timeframe_min: int) -> bool: """ Validates preprocessed backtesting data for missing values and shows warnings about it that. @@ -471,10 +471,10 @@ def validate_backtest_data(data: DataFrame, pair: str, min_date: datetime, :param pair: pair used for log output. :param min_date: start-date of the data :param max_date: end-date of the data - :param timeframe_mins: ticker Timeframe in minutes + :param timeframe_min: ticker Timeframe in minutes """ # total difference in minutes / timeframe-minutes - expected_frames = int((max_date - min_date).total_seconds() // 60 // timeframe_mins) + expected_frames = int((max_date - min_date).total_seconds() // 60 // timeframe_min) found_missing = False dflen = len(data) if dflen < expected_frames: diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index d9fb1f2d1..637115dfd 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -87,7 +87,7 @@ class Backtesting: raise OperationalException("Ticker-interval needs to be set in either configuration " "or as cli argument `--ticker-interval 5m`") self.timeframe = str(self.config.get('ticker_interval')) - self.timeframe_mins = timeframe_to_minutes(self.timeframe) + self.timeframe_min = timeframe_to_minutes(self.timeframe) # Get maximum required startup period self.required_startup = max([strat.startup_candle_count for strat in self.strategylist]) @@ -378,7 +378,7 @@ class Backtesting: lock_pair_until: Dict = {} # Indexes per pair, so some pairs are allowed to have a missing start. indexes: Dict = {} - tmp = start_date + timedelta(minutes=self.timeframe_mins) + tmp = start_date + timedelta(minutes=self.timeframe_min) # Loop timerange and get candle for each pair at that point in time while tmp < end_date: @@ -430,7 +430,7 @@ class Backtesting: lock_pair_until[pair] = end_date.datetime # Move time one configured time_interval ahead. - tmp += timedelta(minutes=self.timeframe_mins) + tmp += timedelta(minutes=self.timeframe_min) return DataFrame.from_records(trades, columns=BacktestResult._fields) def start(self) -> None: diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index e52cb8faf..597fd7f22 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -427,7 +427,7 @@ class Hyperopt: f"Avg profit {results_metrics['avg_profit']: 6.2f}%. " f"Total profit {results_metrics['total_profit']: 11.8f} {stake_cur} " f"({results_metrics['profit']: 7.2f}\N{GREEK CAPITAL LETTER SIGMA}%). " - f"Avg duration {results_metrics['duration']:5.1f} mins." + f"Avg duration {results_metrics['duration']:5.1f} min." ).encode(locale.getpreferredencoding(), 'replace').decode('utf-8') def get_optimizer(self, dimensions: List[Dimension], cpu_count) -> Optimizer: diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 958fb8d66..2a88462e9 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -106,7 +106,7 @@ class IHyperOpt(ABC): roi_t_alpha = 1.0 roi_p_alpha = 1.0 - timeframe_mins = timeframe_to_minutes(IHyperOpt.ticker_interval) + timeframe_min = timeframe_to_minutes(IHyperOpt.ticker_interval) # We define here limits for the ROI space parameters automagically adapted to the # timeframe used by the bot: @@ -117,8 +117,8 @@ class IHyperOpt(ABC): # # The scaling is designed so that it maps exactly to the legacy Freqtrade roi_space() # method for the 5m ticker interval. - roi_t_scale = timeframe_mins / 5 - roi_p_scale = math.log1p(timeframe_mins) / math.log1p(5) + roi_t_scale = timeframe_min / 5 + roi_p_scale = math.log1p(timeframe_min) / math.log1p(5) roi_limits = { 'roi_t1_min': int(10 * roi_t_scale * roi_t_alpha), 'roi_t1_max': int(120 * roi_t_scale * roi_t_alpha), diff --git a/tests/conftest.py b/tests/conftest.py index 020c29eb1..82111528e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1418,4 +1418,129 @@ def open_trade(): @pytest.fixture def hyperopt_results(): - return [{'loss': 0.4366182531161519, 'params_dict': {'mfi-value': 15, 'fastd-value': 20, 'adx-value': 25, 'rsi-value': 28, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 88, 'sell-fastd-value': 97, 'sell-adx-value': 51, 'sell-rsi-value': 67, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1190, 'roi_t2': 541, 'roi_t3': 408, 'roi_p1': 0.026035863879169705, 'roi_p2': 0.12508730043628782, 'roi_p3': 0.27766427921605896, 'stoploss': -0.2562930402099556}, 'params_details': {'buy': {'mfi-value': 15, 'fastd-value': 20, 'adx-value': 25, 'rsi-value': 28, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 88, 'sell-fastd-value': 97, 'sell-adx-value': 51, 'sell-rsi-value': 67, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.4287874435315165, 408: 0.15112316431545753, 949: 0.026035863879169705, 2139: 0}, 'stoploss': {'stoploss': -0.2562930402099556}}, 'results_metrics': {'trade_count': 2, 'avg_profit': -1.254995, 'total_profit': -0.00125625, 'profit': -2.50999, 'duration': 3930.0}, 'results_explanation': ' 2 trades. Avg profit -1.25%. Total profit -0.00125625 BTC ( -2.51Σ%). Avg duration 3930.0 mins.', 'total_profit': -0.00125625, 'current_epoch': 1, 'is_initial_point': True, 'is_best': True}, {'loss': 20.0, 'params_dict': {'mfi-value': 17, 'fastd-value': 38, 'adx-value': 48, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 96, 'sell-fastd-value': 68, 'sell-adx-value': 63, 'sell-rsi-value': 81, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal', 'roi_t1': 334, 'roi_t2': 683, 'roi_t3': 140, 'roi_p1': 0.06403981740598495, 'roi_p2': 0.055519840060645045, 'roi_p3': 0.3253712811342459, 'stoploss': -0.338070047333259}, 'params_details': {'buy': {'mfi-value': 17, 'fastd-value': 38, 'adx-value': 48, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 96, 'sell-fastd-value': 68, 'sell-adx-value': 63, 'sell-rsi-value': 81, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal'}, 'roi': {0: 0.4449309386008759, 140: 0.11955965746663, 823: 0.06403981740598495, 1157: 0}, 'stoploss': {'stoploss': -0.338070047333259}}, 'results_metrics': {'trade_count': 1, 'avg_profit': 0.12357, 'total_profit': 6.185e-05, 'profit': 0.12357, 'duration': 1200.0}, 'results_explanation': ' 1 trades. Avg profit 0.12%. Total profit 0.00006185 BTC ( 0.12Σ%). Avg duration 1200.0 mins.', 'total_profit': 6.185e-05, 'current_epoch': 2, 'is_initial_point': True, 'is_best': False}, {'loss': 14.241196856510731, 'params_dict': {'mfi-value': 25, 'fastd-value': 16, 'adx-value': 29, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 98, 'sell-fastd-value': 72, 'sell-adx-value': 51, 'sell-rsi-value': 82, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 889, 'roi_t2': 533, 'roi_t3': 263, 'roi_p1': 0.04759065393663096, 'roi_p2': 0.1488819964638463, 'roi_p3': 0.4102801822104605, 'stoploss': -0.05394588767607611}, 'params_details': {'buy': {'mfi-value': 25, 'fastd-value': 16, 'adx-value': 29, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 98, 'sell-fastd-value': 72, 'sell-adx-value': 51, 'sell-rsi-value': 82, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.6067528326109377, 263: 0.19647265040047726, 796: 0.04759065393663096, 1685: 0}, 'stoploss': {'stoploss': -0.05394588767607611}}, 'results_metrics': {'trade_count': 621, 'avg_profit': -0.43883302093397747, 'total_profit': -0.13639474, 'profit': -272.515306, 'duration': 1691.207729468599}, 'results_explanation': ' 621 trades. Avg profit -0.44%. Total profit -0.13639474 BTC (-272.52Σ%). Avg duration 1691.2 mins.', 'total_profit': -0.13639474, 'current_epoch': 3, 'is_initial_point': True, 'is_best': False}, {'loss': 100000, 'params_dict': {'mfi-value': 13, 'fastd-value': 35, 'adx-value': 39, 'rsi-value': 29, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 87, 'sell-fastd-value': 54, 'sell-adx-value': 63, 'sell-rsi-value': 93, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1402, 'roi_t2': 676, 'roi_t3': 215, 'roi_p1': 0.06264755784937427, 'roi_p2': 0.14258587851894644, 'roi_p3': 0.20671291201040828, 'stoploss': -0.11818343570194478}, 'params_details': {'buy': {'mfi-value': 13, 'fastd-value': 35, 'adx-value': 39, 'rsi-value': 29, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 87, 'sell-fastd-value': 54, 'sell-adx-value': 63, 'sell-rsi-value': 93, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.411946348378729, 215: 0.2052334363683207, 891: 0.06264755784937427, 2293: 0}, 'stoploss': {'stoploss': -0.11818343570194478}}, 'results_metrics': {'trade_count': 0, 'avg_profit': None, 'total_profit': 0, 'profit': 0.0, 'duration': None}, 'results_explanation': ' 0 trades. Avg profit nan%. Total profit 0.00000000 BTC ( 0.00Σ%). Avg duration nan mins.', 'total_profit': 0, 'current_epoch': 4, 'is_initial_point': True, 'is_best': False}, {'loss': 0.22195522184191518, 'params_dict': {'mfi-value': 17, 'fastd-value': 21, 'adx-value': 38, 'rsi-value': 33, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': False, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 87, 'sell-fastd-value': 82, 'sell-adx-value': 78, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 1269, 'roi_t2': 601, 'roi_t3': 444, 'roi_p1': 0.07280999507931168, 'roi_p2': 0.08946698095898986, 'roi_p3': 0.1454876733325284, 'stoploss': -0.18181041180901014}, 'params_details': {'buy': {'mfi-value': 17, 'fastd-value': 21, 'adx-value': 38, 'rsi-value': 33, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': False, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 87, 'sell-fastd-value': 82, 'sell-adx-value': 78, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.3077646493708299, 444: 0.16227697603830155, 1045: 0.07280999507931168, 2314: 0}, 'stoploss': {'stoploss': -0.18181041180901014}}, 'results_metrics': {'trade_count': 14, 'avg_profit': -0.3539515, 'total_profit': -0.002480140000000001, 'profit': -4.955321, 'duration': 3402.8571428571427}, 'results_explanation': ' 14 trades. Avg profit -0.35%. Total profit -0.00248014 BTC ( -4.96Σ%). Avg duration 3402.9 mins.', 'total_profit': -0.002480140000000001, 'current_epoch': 5, 'is_initial_point': True, 'is_best': True}, {'loss': 0.545315889154162, 'params_dict': {'mfi-value': 22, 'fastd-value': 43, 'adx-value': 46, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'bb_lower', 'sell-mfi-value': 87, 'sell-fastd-value': 65, 'sell-adx-value': 94, 'sell-rsi-value': 63, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 319, 'roi_t2': 556, 'roi_t3': 216, 'roi_p1': 0.06251955472249589, 'roi_p2': 0.11659519602202795, 'roi_p3': 0.0953744132197762, 'stoploss': -0.024551752215582423}, 'params_details': {'buy': {'mfi-value': 22, 'fastd-value': 43, 'adx-value': 46, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'bb_lower'}, 'sell': {'sell-mfi-value': 87, 'sell-fastd-value': 65, 'sell-adx-value': 94, 'sell-rsi-value': 63, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.2744891639643, 216: 0.17911475074452382, 772: 0.06251955472249589, 1091: 0}, 'stoploss': {'stoploss': -0.024551752215582423}}, 'results_metrics': {'trade_count': 39, 'avg_profit': -0.21400679487179478, 'total_profit': -0.0041773, 'profit': -8.346264999999997, 'duration': 636.9230769230769}, 'results_explanation': ' 39 trades. Avg profit -0.21%. Total profit -0.00417730 BTC ( -8.35Σ%). Avg duration 636.9 mins.', 'total_profit': -0.0041773, 'current_epoch': 6, 'is_initial_point': True, 'is_best': False}, {'loss': 4.713497421432944, 'params_dict': {'mfi-value': 13, 'fastd-value': 41, 'adx-value': 21, 'rsi-value': 29, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower', 'sell-mfi-value': 99, 'sell-fastd-value': 60, 'sell-adx-value': 81, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 771, 'roi_t2': 620, 'roi_t3': 145, 'roi_p1': 0.0586919200378493, 'roi_p2': 0.04984118697312542, 'roi_p3': 0.37521058680247044, 'stoploss': -0.14613268022709905}, 'params_details': {'buy': {'mfi-value': 13, 'fastd-value': 41, 'adx-value': 21, 'rsi-value': 29, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower'}, 'sell': {'sell-mfi-value': 99, 'sell-fastd-value': 60, 'sell-adx-value': 81, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.4837436938134452, 145: 0.10853310701097472, 765: 0.0586919200378493, 1536: 0}, 'stoploss': {'stoploss': -0.14613268022709905}}, 'results_metrics': {'trade_count': 318, 'avg_profit': -0.39833954716981146, 'total_profit': -0.06339929, 'profit': -126.67197600000004, 'duration': 3140.377358490566}, 'results_explanation': ' 318 trades. Avg profit -0.40%. Total profit -0.06339929 BTC (-126.67Σ%). Avg duration 3140.4 mins.', 'total_profit': -0.06339929, 'current_epoch': 7, 'is_initial_point': True, 'is_best': False}, {'loss': 20.0, 'params_dict': {'mfi-value': 24, 'fastd-value': 43, 'adx-value': 33, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'sar_reversal', 'sell-mfi-value': 89, 'sell-fastd-value': 74, 'sell-adx-value': 70, 'sell-rsi-value': 70, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': False, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal', 'roi_t1': 1149, 'roi_t2': 375, 'roi_t3': 289, 'roi_p1': 0.05571820757172588, 'roi_p2': 0.0606240398618907, 'roi_p3': 0.1729012220156157, 'stoploss': -0.1588514289110401}, 'params_details': {'buy': {'mfi-value': 24, 'fastd-value': 43, 'adx-value': 33, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'sar_reversal'}, 'sell': {'sell-mfi-value': 89, 'sell-fastd-value': 74, 'sell-adx-value': 70, 'sell-rsi-value': 70, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': False, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal'}, 'roi': {0: 0.2892434694492323, 289: 0.11634224743361658, 664: 0.05571820757172588, 1813: 0}, 'stoploss': {'stoploss': -0.1588514289110401}}, 'results_metrics': {'trade_count': 1, 'avg_profit': 0.0, 'total_profit': 0.0, 'profit': 0.0, 'duration': 5340.0}, 'results_explanation': ' 1 trades. Avg profit 0.00%. Total profit 0.00000000 BTC ( 0.00Σ%). Avg duration 5340.0 mins.', 'total_profit': 0.0, 'current_epoch': 8, 'is_initial_point': True, 'is_best': False}, {'loss': 2.4731817780991223, 'params_dict': {'mfi-value': 22, 'fastd-value': 20, 'adx-value': 29, 'rsi-value': 40, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'sar_reversal', 'sell-mfi-value': 97, 'sell-fastd-value': 65, 'sell-adx-value': 81, 'sell-rsi-value': 64, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1012, 'roi_t2': 584, 'roi_t3': 422, 'roi_p1': 0.036764323603472565, 'roi_p2': 0.10335480573205287, 'roi_p3': 0.10322347377503042, 'stoploss': -0.2780610808108503}, 'params_details': {'buy': {'mfi-value': 22, 'fastd-value': 20, 'adx-value': 29, 'rsi-value': 40, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'sar_reversal'}, 'sell': {'sell-mfi-value': 97, 'sell-fastd-value': 65, 'sell-adx-value': 81, 'sell-rsi-value': 64, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.2433426031105559, 422: 0.14011912933552545, 1006: 0.036764323603472565, 2018: 0}, 'stoploss': {'stoploss': -0.2780610808108503}}, 'results_metrics': {'trade_count': 229, 'avg_profit': -0.38433433624454144, 'total_profit': -0.044050070000000004, 'profit': -88.01256299999999, 'duration': 6505.676855895196}, 'results_explanation': ' 229 trades. Avg profit -0.38%. Total profit -0.04405007 BTC ( -88.01Σ%). Avg duration 6505.7 mins.', 'total_profit': -0.044050070000000004, 'current_epoch': 9, 'is_initial_point': True, 'is_best': False}, {'loss': -0.2604606005845212, 'params_dict': {'mfi-value': 23, 'fastd-value': 24, 'adx-value': 22, 'rsi-value': 24, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 97, 'sell-fastd-value': 70, 'sell-adx-value': 64, 'sell-rsi-value': 80, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal', 'roi_t1': 792, 'roi_t2': 464, 'roi_t3': 215, 'roi_p1': 0.04594053535385903, 'roi_p2': 0.09623192684243963, 'roi_p3': 0.04428219070850663, 'stoploss': -0.16992287161634415}, 'params_details': {'buy': {'mfi-value': 23, 'fastd-value': 24, 'adx-value': 22, 'rsi-value': 24, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 97, 'sell-fastd-value': 70, 'sell-adx-value': 64, 'sell-rsi-value': 80, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal'}, 'roi': {0: 0.18645465290480528, 215: 0.14217246219629864, 679: 0.04594053535385903, 1471: 0}, 'stoploss': {'stoploss': -0.16992287161634415}}, 'results_metrics': {'trade_count': 4, 'avg_profit': 0.1080385, 'total_profit': 0.00021629, 'profit': 0.432154, 'duration': 2850.0}, 'results_explanation': ' 4 trades. Avg profit 0.11%. Total profit 0.00021629 BTC ( 0.43Σ%). Avg duration 2850.0 mins.', 'total_profit': 0.00021629, 'current_epoch': 10, 'is_initial_point': True, 'is_best': True}, {'loss': 4.876465945994304, 'params_dict': {'mfi-value': 20, 'fastd-value': 32, 'adx-value': 49, 'rsi-value': 23, 'mfi-enabled': True, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower', 'sell-mfi-value': 75, 'sell-fastd-value': 56, 'sell-adx-value': 61, 'sell-rsi-value': 62, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 579, 'roi_t2': 614, 'roi_t3': 273, 'roi_p1': 0.05307643172744114, 'roi_p2': 0.1352282078262871, 'roi_p3': 0.1913307406325751, 'stoploss': -0.25728526022513887}, 'params_details': {'buy': {'mfi-value': 20, 'fastd-value': 32, 'adx-value': 49, 'rsi-value': 23, 'mfi-enabled': True, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower'}, 'sell': {'sell-mfi-value': 75, 'sell-fastd-value': 56, 'sell-adx-value': 61, 'sell-rsi-value': 62, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.3796353801863034, 273: 0.18830463955372825, 887: 0.05307643172744114, 1466: 0}, 'stoploss': {'stoploss': -0.25728526022513887}}, 'results_metrics': {'trade_count': 117, 'avg_profit': -1.2698609145299145, 'total_profit': -0.07436117, 'profit': -148.573727, 'duration': 4282.5641025641025}, 'results_explanation': ' 117 trades. Avg profit -1.27%. Total profit -0.07436117 BTC (-148.57Σ%). Avg duration 4282.6 mins.', 'total_profit': -0.07436117, 'current_epoch': 11, 'is_initial_point': True, 'is_best': False}, {'loss': 100000, 'params_dict': {'mfi-value': 10, 'fastd-value': 36, 'adx-value': 31, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': False, 'trigger': 'sar_reversal', 'sell-mfi-value': 80, 'sell-fastd-value': 71, 'sell-adx-value': 60, 'sell-rsi-value': 85, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1156, 'roi_t2': 581, 'roi_t3': 408, 'roi_p1': 0.06860454019988212, 'roi_p2': 0.12473718444931989, 'roi_p3': 0.2896360635226823, 'stoploss': -0.30889015124682806}, 'params_details': {'buy': {'mfi-value': 10, 'fastd-value': 36, 'adx-value': 31, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': False, 'trigger': 'sar_reversal'}, 'sell': {'sell-mfi-value': 80, 'sell-fastd-value': 71, 'sell-adx-value': 60, 'sell-rsi-value': 85, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.4829777881718843, 408: 0.19334172464920202, 989: 0.06860454019988212, 2145: 0}, 'stoploss': {'stoploss': -0.30889015124682806}}, 'results_metrics': {'trade_count': 0, 'avg_profit': None, 'total_profit': 0, 'profit': 0.0, 'duration': None}, 'results_explanation': ' 0 trades. Avg profit nan%. Total profit 0.00000000 BTC ( 0.00Σ%). Avg duration nan mins.', 'total_profit': 0, 'current_epoch': 12, 'is_initial_point': True, 'is_best': False}] # noqa: E501 + return [ + { + 'loss': 0.4366182531161519, + 'params_dict': { + 'mfi-value': 15, 'fastd-value': 20, 'adx-value': 25, 'rsi-value': 28, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 88, 'sell-fastd-value': 97, 'sell-adx-value': 51, 'sell-rsi-value': 67, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1190, 'roi_t2': 541, 'roi_t3': 408, 'roi_p1': 0.026035863879169705, 'roi_p2': 0.12508730043628782, 'roi_p3': 0.27766427921605896, 'stoploss': -0.2562930402099556}, # noqa: E501 + 'params_details': {'buy': {'mfi-value': 15, 'fastd-value': 20, 'adx-value': 25, 'rsi-value': 28, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 88, 'sell-fastd-value': 97, 'sell-adx-value': 51, 'sell-rsi-value': 67, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.4287874435315165, 408: 0.15112316431545753, 949: 0.026035863879169705, 2139: 0}, 'stoploss': {'stoploss': -0.2562930402099556}}, # noqa: E501 + 'results_metrics': {'trade_count': 2, 'avg_profit': -1.254995, 'total_profit': -0.00125625, 'profit': -2.50999, 'duration': 3930.0}, # noqa: E501 + 'results_explanation': ' 2 trades. Avg profit -1.25%. Total profit -0.00125625 BTC ( -2.51Σ%). Avg duration 3930.0 min.', # noqa: E501 + 'total_profit': -0.00125625, + 'current_epoch': 1, + 'is_initial_point': True, + 'is_best': True + }, { + 'loss': 20.0, + 'params_dict': { + 'mfi-value': 17, 'fastd-value': 38, 'adx-value': 48, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 96, 'sell-fastd-value': 68, 'sell-adx-value': 63, 'sell-rsi-value': 81, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal', 'roi_t1': 334, 'roi_t2': 683, 'roi_t3': 140, 'roi_p1': 0.06403981740598495, 'roi_p2': 0.055519840060645045, 'roi_p3': 0.3253712811342459, 'stoploss': -0.338070047333259}, # noqa: E501 + 'params_details': {'buy': {'mfi-value': 17, 'fastd-value': 38, 'adx-value': 48, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, # noqa: E501 + 'sell': {'sell-mfi-value': 96, 'sell-fastd-value': 68, 'sell-adx-value': 63, 'sell-rsi-value': 81, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal'}, # noqa: E501 + 'roi': {0: 0.4449309386008759, 140: 0.11955965746663, 823: 0.06403981740598495, 1157: 0}, # noqa: E501 + 'stoploss': {'stoploss': -0.338070047333259}}, + 'results_metrics': {'trade_count': 1, 'avg_profit': 0.12357, 'total_profit': 6.185e-05, 'profit': 0.12357, 'duration': 1200.0}, # noqa: E501 + 'results_explanation': ' 1 trades. Avg profit 0.12%. Total profit 0.00006185 BTC ( 0.12Σ%). Avg duration 1200.0 min.', # noqa: E501 + 'total_profit': 6.185e-05, + 'current_epoch': 2, + 'is_initial_point': True, + 'is_best': False + }, { + 'loss': 14.241196856510731, + 'params_dict': {'mfi-value': 25, 'fastd-value': 16, 'adx-value': 29, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 98, 'sell-fastd-value': 72, 'sell-adx-value': 51, 'sell-rsi-value': 82, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 889, 'roi_t2': 533, 'roi_t3': 263, 'roi_p1': 0.04759065393663096, 'roi_p2': 0.1488819964638463, 'roi_p3': 0.4102801822104605, 'stoploss': -0.05394588767607611}, # noqa: E501 + 'params_details': {'buy': {'mfi-value': 25, 'fastd-value': 16, 'adx-value': 29, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 98, 'sell-fastd-value': 72, 'sell-adx-value': 51, 'sell-rsi-value': 82, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.6067528326109377, 263: 0.19647265040047726, 796: 0.04759065393663096, 1685: 0}, 'stoploss': {'stoploss': -0.05394588767607611}}, # noqa: E501 + 'results_metrics': {'trade_count': 621, 'avg_profit': -0.43883302093397747, 'total_profit': -0.13639474, 'profit': -272.515306, 'duration': 1691.207729468599}, # noqa: E501 + 'results_explanation': ' 621 trades. Avg profit -0.44%. Total profit -0.13639474 BTC (-272.52Σ%). Avg duration 1691.2 min.', # noqa: E501 + 'total_profit': -0.13639474, + 'current_epoch': 3, + 'is_initial_point': True, + 'is_best': False + }, { + 'loss': 100000, + 'params_dict': {'mfi-value': 13, 'fastd-value': 35, 'adx-value': 39, 'rsi-value': 29, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 87, 'sell-fastd-value': 54, 'sell-adx-value': 63, 'sell-rsi-value': 93, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1402, 'roi_t2': 676, 'roi_t3': 215, 'roi_p1': 0.06264755784937427, 'roi_p2': 0.14258587851894644, 'roi_p3': 0.20671291201040828, 'stoploss': -0.11818343570194478}, # noqa: E501 + 'params_details': {'buy': {'mfi-value': 13, 'fastd-value': 35, 'adx-value': 39, 'rsi-value': 29, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 87, 'sell-fastd-value': 54, 'sell-adx-value': 63, 'sell-rsi-value': 93, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.411946348378729, 215: 0.2052334363683207, 891: 0.06264755784937427, 2293: 0}, 'stoploss': {'stoploss': -0.11818343570194478}}, # noqa: E501 + 'results_metrics': {'trade_count': 0, 'avg_profit': None, 'total_profit': 0, 'profit': 0.0, 'duration': None}, # noqa: E501 + 'results_explanation': ' 0 trades. Avg profit nan%. Total profit 0.00000000 BTC ( 0.00Σ%). Avg duration nan min.', # noqa: E501 + 'total_profit': 0, 'current_epoch': 4, 'is_initial_point': True, 'is_best': False + }, { + 'loss': 0.22195522184191518, + 'params_dict': {'mfi-value': 17, 'fastd-value': 21, 'adx-value': 38, 'rsi-value': 33, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': False, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 87, 'sell-fastd-value': 82, 'sell-adx-value': 78, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 1269, 'roi_t2': 601, 'roi_t3': 444, 'roi_p1': 0.07280999507931168, 'roi_p2': 0.08946698095898986, 'roi_p3': 0.1454876733325284, 'stoploss': -0.18181041180901014}, # noqa: E501 + 'params_details': {'buy': {'mfi-value': 17, 'fastd-value': 21, 'adx-value': 38, 'rsi-value': 33, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': False, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 87, 'sell-fastd-value': 82, 'sell-adx-value': 78, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.3077646493708299, 444: 0.16227697603830155, 1045: 0.07280999507931168, 2314: 0}, 'stoploss': {'stoploss': -0.18181041180901014}}, # noqa: E501 + 'results_metrics': {'trade_count': 14, 'avg_profit': -0.3539515, 'total_profit': -0.002480140000000001, 'profit': -4.955321, 'duration': 3402.8571428571427}, # noqa: E501 + 'results_explanation': ' 14 trades. Avg profit -0.35%. Total profit -0.00248014 BTC ( -4.96Σ%). Avg duration 3402.9 min.', # noqa: E501 + 'total_profit': -0.002480140000000001, + 'current_epoch': 5, + 'is_initial_point': True, + 'is_best': True + }, { + 'loss': 0.545315889154162, + 'params_dict': {'mfi-value': 22, 'fastd-value': 43, 'adx-value': 46, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'bb_lower', 'sell-mfi-value': 87, 'sell-fastd-value': 65, 'sell-adx-value': 94, 'sell-rsi-value': 63, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 319, 'roi_t2': 556, 'roi_t3': 216, 'roi_p1': 0.06251955472249589, 'roi_p2': 0.11659519602202795, 'roi_p3': 0.0953744132197762, 'stoploss': -0.024551752215582423}, # noqa: E501 + 'params_details': {'buy': {'mfi-value': 22, 'fastd-value': 43, 'adx-value': 46, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'bb_lower'}, 'sell': {'sell-mfi-value': 87, 'sell-fastd-value': 65, 'sell-adx-value': 94, 'sell-rsi-value': 63, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.2744891639643, 216: 0.17911475074452382, 772: 0.06251955472249589, 1091: 0}, 'stoploss': {'stoploss': -0.024551752215582423}}, # noqa: E501 + 'results_metrics': {'trade_count': 39, 'avg_profit': -0.21400679487179478, 'total_profit': -0.0041773, 'profit': -8.346264999999997, 'duration': 636.9230769230769}, # noqa: E501 + 'results_explanation': ' 39 trades. Avg profit -0.21%. Total profit -0.00417730 BTC ( -8.35Σ%). Avg duration 636.9 min.', # noqa: E501 + 'total_profit': -0.0041773, + 'current_epoch': 6, + 'is_initial_point': True, + 'is_best': False + }, { + 'loss': 4.713497421432944, + 'params_dict': {'mfi-value': 13, 'fastd-value': 41, 'adx-value': 21, 'rsi-value': 29, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower', 'sell-mfi-value': 99, 'sell-fastd-value': 60, 'sell-adx-value': 81, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 771, 'roi_t2': 620, 'roi_t3': 145, 'roi_p1': 0.0586919200378493, 'roi_p2': 0.04984118697312542, 'roi_p3': 0.37521058680247044, 'stoploss': -0.14613268022709905}, # noqa: E501 + 'params_details': {'buy': {'mfi-value': 13, 'fastd-value': 41, 'adx-value': 21, 'rsi-value': 29, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower'}, 'sell': {'sell-mfi-value': 99, 'sell-fastd-value': 60, 'sell-adx-value': 81, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.4837436938134452, 145: 0.10853310701097472, 765: 0.0586919200378493, 1536: 0}, # noqa: E501 + 'stoploss': {'stoploss': -0.14613268022709905}}, # noqa: E501 + 'results_metrics': {'trade_count': 318, 'avg_profit': -0.39833954716981146, 'total_profit': -0.06339929, 'profit': -126.67197600000004, 'duration': 3140.377358490566}, # noqa: E501 + 'results_explanation': ' 318 trades. Avg profit -0.40%. Total profit -0.06339929 BTC (-126.67Σ%). Avg duration 3140.4 min.', # noqa: E501 + 'total_profit': -0.06339929, + 'current_epoch': 7, + 'is_initial_point': True, + 'is_best': False + }, { + 'loss': 20.0, # noqa: E501 + 'params_dict': {'mfi-value': 24, 'fastd-value': 43, 'adx-value': 33, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'sar_reversal', 'sell-mfi-value': 89, 'sell-fastd-value': 74, 'sell-adx-value': 70, 'sell-rsi-value': 70, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': False, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal', 'roi_t1': 1149, 'roi_t2': 375, 'roi_t3': 289, 'roi_p1': 0.05571820757172588, 'roi_p2': 0.0606240398618907, 'roi_p3': 0.1729012220156157, 'stoploss': -0.1588514289110401}, # noqa: E501 + 'params_details': {'buy': {'mfi-value': 24, 'fastd-value': 43, 'adx-value': 33, 'rsi-value': 20, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'sar_reversal'}, 'sell': {'sell-mfi-value': 89, 'sell-fastd-value': 74, 'sell-adx-value': 70, 'sell-rsi-value': 70, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': False, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal'}, 'roi': {0: 0.2892434694492323, 289: 0.11634224743361658, 664: 0.05571820757172588, 1813: 0}, 'stoploss': {'stoploss': -0.1588514289110401}}, # noqa: E501 + 'results_metrics': {'trade_count': 1, 'avg_profit': 0.0, 'total_profit': 0.0, 'profit': 0.0, 'duration': 5340.0}, # noqa: E501 + 'results_explanation': ' 1 trades. Avg profit 0.00%. Total profit 0.00000000 BTC ( 0.00Σ%). Avg duration 5340.0 min.', # noqa: E501 + 'total_profit': 0.0, + 'current_epoch': 8, + 'is_initial_point': True, + 'is_best': False + }, { + 'loss': 2.4731817780991223, + 'params_dict': {'mfi-value': 22, 'fastd-value': 20, 'adx-value': 29, 'rsi-value': 40, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'sar_reversal', 'sell-mfi-value': 97, 'sell-fastd-value': 65, 'sell-adx-value': 81, 'sell-rsi-value': 64, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1012, 'roi_t2': 584, 'roi_t3': 422, 'roi_p1': 0.036764323603472565, 'roi_p2': 0.10335480573205287, 'roi_p3': 0.10322347377503042, 'stoploss': -0.2780610808108503}, # noqa: E501 + 'params_details': {'buy': {'mfi-value': 22, 'fastd-value': 20, 'adx-value': 29, 'rsi-value': 40, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'sar_reversal'}, 'sell': {'sell-mfi-value': 97, 'sell-fastd-value': 65, 'sell-adx-value': 81, 'sell-rsi-value': 64, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.2433426031105559, 422: 0.14011912933552545, 1006: 0.036764323603472565, 2018: 0}, 'stoploss': {'stoploss': -0.2780610808108503}}, # noqa: E501 + 'results_metrics': {'trade_count': 229, 'avg_profit': -0.38433433624454144, 'total_profit': -0.044050070000000004, 'profit': -88.01256299999999, 'duration': 6505.676855895196}, # noqa: E501 + 'results_explanation': ' 229 trades. Avg profit -0.38%. Total profit -0.04405007 BTC ( -88.01Σ%). Avg duration 6505.7 min.', # noqa: E501 + 'total_profit': -0.044050070000000004, # noqa: E501 + 'current_epoch': 9, + 'is_initial_point': True, + 'is_best': False + }, { + 'loss': -0.2604606005845212, # noqa: E501 + 'params_dict': {'mfi-value': 23, 'fastd-value': 24, 'adx-value': 22, 'rsi-value': 24, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 97, 'sell-fastd-value': 70, 'sell-adx-value': 64, 'sell-rsi-value': 80, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal', 'roi_t1': 792, 'roi_t2': 464, 'roi_t3': 215, 'roi_p1': 0.04594053535385903, 'roi_p2': 0.09623192684243963, 'roi_p3': 0.04428219070850663, 'stoploss': -0.16992287161634415}, # noqa: E501 + 'params_details': {'buy': {'mfi-value': 23, 'fastd-value': 24, 'adx-value': 22, 'rsi-value': 24, 'mfi-enabled': False, 'fastd-enabled': False, 'adx-enabled': False, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 97, 'sell-fastd-value': 70, 'sell-adx-value': 64, 'sell-rsi-value': 80, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal'}, 'roi': {0: 0.18645465290480528, 215: 0.14217246219629864, 679: 0.04594053535385903, 1471: 0}, 'stoploss': {'stoploss': -0.16992287161634415}}, # noqa: E501 + 'results_metrics': {'trade_count': 4, 'avg_profit': 0.1080385, 'total_profit': 0.00021629, 'profit': 0.432154, 'duration': 2850.0}, # noqa: E501 + 'results_explanation': ' 4 trades. Avg profit 0.11%. Total profit 0.00021629 BTC ( 0.43Σ%). Avg duration 2850.0 min.', # noqa: E501 + 'total_profit': 0.00021629, + 'current_epoch': 10, + 'is_initial_point': True, + 'is_best': True + }, { + 'loss': 4.876465945994304, # noqa: E501 + 'params_dict': {'mfi-value': 20, 'fastd-value': 32, 'adx-value': 49, 'rsi-value': 23, 'mfi-enabled': True, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower', 'sell-mfi-value': 75, 'sell-fastd-value': 56, 'sell-adx-value': 61, 'sell-rsi-value': 62, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 579, 'roi_t2': 614, 'roi_t3': 273, 'roi_p1': 0.05307643172744114, 'roi_p2': 0.1352282078262871, 'roi_p3': 0.1913307406325751, 'stoploss': -0.25728526022513887}, # noqa: E501 + 'params_details': {'buy': {'mfi-value': 20, 'fastd-value': 32, 'adx-value': 49, 'rsi-value': 23, 'mfi-enabled': True, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower'}, 'sell': {'sell-mfi-value': 75, 'sell-fastd-value': 56, 'sell-adx-value': 61, 'sell-rsi-value': 62, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.3796353801863034, 273: 0.18830463955372825, 887: 0.05307643172744114, 1466: 0}, 'stoploss': {'stoploss': -0.25728526022513887}}, # noqa: E501 + 'results_metrics': {'trade_count': 117, 'avg_profit': -1.2698609145299145, 'total_profit': -0.07436117, 'profit': -148.573727, 'duration': 4282.5641025641025}, # noqa: E501 + 'results_explanation': ' 117 trades. Avg profit -1.27%. Total profit -0.07436117 BTC (-148.57Σ%). Avg duration 4282.6 min.', # noqa: E501 + 'total_profit': -0.07436117, + 'current_epoch': 11, + 'is_initial_point': True, + 'is_best': False + }, { + 'loss': 100000, + 'params_dict': {'mfi-value': 10, 'fastd-value': 36, 'adx-value': 31, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': False, 'trigger': 'sar_reversal', 'sell-mfi-value': 80, 'sell-fastd-value': 71, 'sell-adx-value': 60, 'sell-rsi-value': 85, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1156, 'roi_t2': 581, 'roi_t3': 408, 'roi_p1': 0.06860454019988212, 'roi_p2': 0.12473718444931989, 'roi_p3': 0.2896360635226823, 'stoploss': -0.30889015124682806}, # noqa: E501 + 'params_details': {'buy': {'mfi-value': 10, 'fastd-value': 36, 'adx-value': 31, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': False, 'trigger': 'sar_reversal'}, 'sell': {'sell-mfi-value': 80, 'sell-fastd-value': 71, 'sell-adx-value': 60, 'sell-rsi-value': 85, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.4829777881718843, 408: 0.19334172464920202, 989: 0.06860454019988212, 2145: 0}, 'stoploss': {'stoploss': -0.30889015124682806}}, # noqa: E501 + 'results_metrics': {'trade_count': 0, 'avg_profit': None, 'total_profit': 0, 'profit': 0.0, 'duration': None}, # noqa: E501 + 'results_explanation': ' 0 trades. Avg profit nan%. Total profit 0.00000000 BTC ( 0.00Σ%). Avg duration nan min.', # noqa: E501 + 'total_profit': 0, + 'current_epoch': 12, + 'is_initial_point': True, + 'is_best': False + } + ] diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py index 3f6cc8c9a..ad90a86dd 100644 --- a/tests/optimize/test_backtest_detail.py +++ b/tests/optimize/test_backtest_detail.py @@ -250,7 +250,7 @@ tc15 = BTContainer(data=[ BTrade(sell_reason=SellType.STOP_LOSS, open_tick=2, close_tick=2)] ) -# Test 16: Buy, hold for 65 mins, then forcesell using roi=-1 +# Test 16: Buy, hold for 65 min, then forcesell using roi=-1 # Causes negative profit even though sell-reason is ROI. # stop-loss: 10%, ROI: 10% (should not apply), -100% after 65 minutes (limits trade duration) tc16 = BTContainer(data=[ diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 6a8daab8b..89099ff91 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -642,7 +642,7 @@ def test_generate_optimizer(mocker, default_conf) -> None: response_expected = { 'loss': 1.9840569076926293, 'results_explanation': (' 1 trades. Avg profit 2.31%. Total profit 0.00023300 BTC ' - '( 2.31\N{GREEK CAPITAL LETTER SIGMA}%). Avg duration 100.0 mins.' + '( 2.31\N{GREEK CAPITAL LETTER SIGMA}%). Avg duration 100.0 min.' ).encode(locale.getpreferredencoding(), 'replace').decode('utf-8'), 'params_details': {'buy': {'adx-enabled': False, 'adx-value': 0, From 6e778ad710746c22c4ef96888b18946382e92010 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 12 Dec 2019 03:12:28 +0300 Subject: [PATCH 1176/3421] Seed hyperopt random_state if not passed --- freqtrade/optimize/hyperopt.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index ceed704c2..b4eecce2a 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -6,6 +6,7 @@ This module contains the hyperopt logic import locale import logging +import random import sys import warnings from collections import OrderedDict @@ -436,7 +437,7 @@ class Hyperopt: acq_optimizer="auto", n_initial_points=INITIAL_POINTS, acq_optimizer_kwargs={'n_jobs': cpu_count}, - random_state=self.config.get('hyperopt_random_state', None), + random_state=self.random_state, ) def fix_optimizer_models_list(self): @@ -475,7 +476,13 @@ class Hyperopt: logger.info(f"Loaded {len(trials)} previous evaluations from disk.") return trials + def _set_random_state(self, random_state: Optional[int]) -> int: + return random_state or random.randint(1, 2**32 - 1) + def start(self) -> None: + self.random_state = self._set_random_state(self.config.get('hyperopt_random_state', None)) + logger.info(f"Using optimizer random state: {self.random_state}") + data, timerange = self.backtesting.load_bt_data() preprocessed = self.backtesting.strategy.tickerdata_to_dataframe(data) From 330b8cf8a143d684b7b8f65ca74d9e13178693a2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 12 Dec 2019 14:08:44 +0100 Subject: [PATCH 1177/3421] space before unit ... --- freqtrade/plot/plotting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 57a02dd6b..85089af9c 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -121,7 +121,7 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: ) # Create description for sell summarizing the trade desc = trades.apply(lambda row: f"{round(row['profitperc'], 3)}%, {row['sell_reason']}, " - f"{row['duration']}min", + f"{row['duration']} min", axis=1) trade_sells = go.Scatter( x=trades["close_time"], From 5db883906af22eeb086174d1fcfae149f6978ed4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 13 Dec 2019 06:52:33 +0100 Subject: [PATCH 1178/3421] Try to verify available amount on the exchange --- freqtrade/freqtradebot.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 0595e0d35..ac73f6d65 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -889,6 +889,27 @@ class FreqtradeBot: # TODO: figure out how to handle partially complete sell orders return False + def _safe_sell_amount(self, pair: str, amount: float) -> float: + """ + Get sellable amount. + Should be trade.amount - but will fall back to the available amount if necessary. + This should cover cases where get_real_amount() was not able to update the amount + for whatever reason. + :param pair: pair - used for logging + :param amount: amount we expect to be available + :return: amount to sell + :raise: DependencyException: if available balance is not within 2% of the available amount. + """ + wallet_amount = self.wallets.get_free(pair) + logger.info(f"Amounts: {wallet_amount} - {amount}") + if wallet_amount > amount: + return amount + elif wallet_amount > amount * 0.98: + logger.info(f"{pair} - Falling back to wallet-amount.") + return wallet_amount + else: + raise DependencyException("Not enough amount to sell.") + def execute_sell(self, trade: Trade, limit: float, sell_reason: SellType) -> None: """ Executes a limit sell for the given trade and limit @@ -919,10 +940,12 @@ class FreqtradeBot: # Emergencysells (default to market!) ordertype = self.strategy.order_types.get("emergencysell", "market") + amount = self._safe_sell_amount(trade.pair, trade.amount) + # Execute sell and update trade record order = self.exchange.sell(pair=str(trade.pair), ordertype=ordertype, - amount=trade.amount, rate=limit, + amount=amount, rate=limit, time_in_force=self.strategy.order_time_in_force['sell'] ) From b69f5afaaf5f0401f63e4b4a3b2fe5c353251211 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 13 Dec 2019 06:59:10 +0100 Subject: [PATCH 1179/3421] Round amount to precision also for dry-runs --- freqtrade/exchange/exchange.py | 7 ++++--- tests/test_freqtradebot.py | 5 ++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 30868df07..fbe7cd29a 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -379,15 +379,16 @@ class Exchange: def dry_run_order(self, pair: str, ordertype: str, side: str, amount: float, rate: float, params: Dict = {}) -> Dict[str, Any]: order_id = f'dry_run_{side}_{randint(0, 10**6)}' + _amount = self.symbol_amount_prec(pair, amount) dry_order = { "id": order_id, 'pair': pair, 'price': rate, - 'amount': amount, - "cost": amount * rate, + 'amount': _amount, + "cost": _amount * rate, 'type': ordertype, 'side': side, - 'remaining': amount, + 'remaining': _amount, 'datetime': arrow.utcnow().isoformat(), 'status': "closed" if ordertype == "market" else "open", 'fee': None, diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index efab64a6a..5e197da71 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -786,7 +786,10 @@ def test_process_trade_no_whitelist_pair(default_conf, ticker, limit_buy_order, ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - pair = 'NOCLUE/BTC' + pair = 'BLK/BTC' + # Ensure the pair is not in the whitelist! + assert pair not in default_conf['exchange']['pair_whitelist'] + # create open trade not in whitelist Trade.session.add(Trade( pair=pair, From 04257d8ecc357dea23face544f8e979834a20e19 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 13 Dec 2019 07:06:54 +0100 Subject: [PATCH 1180/3421] Add tests for safe_sell_amount --- freqtrade/freqtradebot.py | 2 +- tests/test_freqtradebot.py | 76 +++++++++++++++++++++++++++++++++++++- 2 files changed, 75 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ac73f6d65..3ebe89a71 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -901,7 +901,7 @@ class FreqtradeBot: :raise: DependencyException: if available balance is not within 2% of the available amount. """ wallet_amount = self.wallets.get_free(pair) - logger.info(f"Amounts: {wallet_amount} - {amount}") + logger.debug(f"{pair} - Wallet: {wallet_amount} - Trade-amount: {amount}") if wallet_amount > amount: return amount elif wallet_amount > amount * 0.98: diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index efab64a6a..9c2fd9ddc 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -883,7 +883,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: 'freqtrade.freqtradebot.FreqtradeBot', get_target_bid=get_bid, _get_min_pair_stake_amount=MagicMock(return_value=1) - ) + ) buy_mm = MagicMock(return_value={'id': limit_buy_order['id']}) mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -2314,6 +2314,7 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.exchange.Exchange.cancel_order', side_effect=InvalidOrderException()) + mocker.patch('freqtrade.wallets.Wallets.get_free', MagicMock(return_value=300)) sellmock = MagicMock() patch_exchange(mocker) mocker.patch.multiple( @@ -2591,7 +2592,7 @@ def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, mocker freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.stop_loss_reached = MagicMock(return_value=SellCheckTuple( - sell_flag=False, sell_type=SellType.NONE)) + sell_flag=False, sell_type=SellType.NONE)) freqtrade.create_trades() trade = Trade.query.first() @@ -2631,6 +2632,77 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, mocke assert trade.sell_reason == SellType.SELL_SIGNAL.value +def test_sell_not_enough_balance(default_conf, limit_buy_order, + fee, mocker, caplog) -> None: + patch_RPCManager(mocker) + patch_exchange(mocker) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_ticker=MagicMock(return_value={ + 'bid': 0.00002172, + 'ask': 0.00002173, + 'last': 0.00002172 + }), + buy=MagicMock(return_value={'id': limit_buy_order['id']}), + get_fee=fee, + ) + + freqtrade = FreqtradeBot(default_conf) + patch_get_signal(freqtrade) + freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) + + freqtrade.create_trades() + + trade = Trade.query.first() + amnt = trade.amount + trade.update(limit_buy_order) + patch_get_signal(freqtrade, value=(False, True)) + mocker.patch('freqtrade.wallets.Wallets.get_free', MagicMock(return_value=trade.amount * 0.985)) + + assert freqtrade.handle_trade(trade) is True + assert log_has_re(r'.*Falling back to wallet-amount.', caplog) + assert trade.amount != amnt + + +def test__safe_sell_amount(default_conf, caplog, mocker): + patch_RPCManager(mocker) + patch_exchange(mocker) + amount = 95.33 + amount_wallet = 95.29 + mocker.patch('freqtrade.wallets.Wallets.get_free', MagicMock(return_value=amount_wallet)) + trade = Trade( + pair='LTC/ETH', + amount=amount, + exchange='binance', + open_rate=0.245441, + open_order_id="123456" + ) + freqtrade = FreqtradeBot(default_conf) + patch_get_signal(freqtrade) + + assert freqtrade._safe_sell_amount(trade.pair, trade.amount) == amount_wallet + assert log_has_re(r'.*Falling back to wallet-amount.', caplog) + + +def test__safe_sell_amount_error(default_conf, caplog, mocker): + patch_RPCManager(mocker) + patch_exchange(mocker) + amount = 95.33 + amount_wallet = 91.29 + mocker.patch('freqtrade.wallets.Wallets.get_free', MagicMock(return_value=amount_wallet)) + trade = Trade( + pair='LTC/ETH', + amount=amount, + exchange='binance', + open_rate=0.245441, + open_order_id="123456" + ) + freqtrade = FreqtradeBot(default_conf) + patch_get_signal(freqtrade) + with pytest.raises(DependencyException, match=r"Not enough amount to sell."): + assert freqtrade._safe_sell_amount(trade.pair, trade.amount) + + def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) From 3bd873f3c6e6b954711cc63d95bb2dfe70a808dc Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 13 Dec 2019 13:59:18 +0300 Subject: [PATCH 1181/3421] Add notes on random-state to the docs --- docs/hyperopt.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 9c9e9fdef..16bd4130b 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -6,8 +6,12 @@ algorithms included in the `scikit-optimize` package to accomplish this. The search will burn all your CPU cores, make your laptop sound like a fighter jet and still take a long time. +In general, the search for best parameters starts with a few random combinations and then uses Bayesian search with a +ML regressor algorithm (currently ExtraTreesRegressor) to quickly find a combination of parameters in the search hyperspace +that minimizes the value of the [loss function](#loss-functions). + Hyperopt requires historic data to be available, just as backtesting does. -To learn how to get data for the pairs and exchange you're interrested in, head over to the [Data Downloading](data-download.md) section of the documentation. +To learn how to get data for the pairs and exchange you're interested in, head over to the [Data Downloading](data-download.md) section of the documentation. !!! Bug Hyperopt can crash when used with only 1 CPU Core as found out in [Issue #1133](https://github.com/freqtrade/freqtrade/issues/1133) @@ -170,10 +174,6 @@ with different value combinations. It will then use the given historical data an buys based on the buy signals generated with the above function and based on the results it will end with telling you which paramter combination produced the best profits. -The search for best parameters starts with a few random combinations and then uses a -regressor algorithm (currently ExtraTreesRegressor) to quickly find a parameter combination -that minimizes the value of the [loss function](#loss-functions). - The above setup expects to find ADX, RSI and Bollinger Bands in the populated indicators. When you want to test an indicator that isn't used by the bot currently, remember to add it to the `populate_indicators()` method in your custom hyperopt file. @@ -284,6 +284,16 @@ number). You can also enable position stacking in the configuration file by explicitly setting `"position_stacking"=true`. +### Reproducible results + +The search for optimal parameters starts with a few (currently 30) random combinations in the hyperspace of parameters, random Hyperopt epochs. These random epochs are marked with a leading asterisk sign at the Hyperop output. + +The initial state for generation of these random values (random state) is controlled by the value of the `--random-state` command line option. You can set it to some arbitrary value of your choice to obtain reproducible results. + +If you have not set this value explicitly in the command line options, Hyperopt seeds the random state with some random value for you. The random state value for each Hyperopt run is shown in the log, so you can copy and paste it into the `--random-state` command line option to repeat the set of the initial random epochs used. + +If you have not changed anything in the command line options, configuration, timerange, Strategy and Hyperopt classes, historical data and the Loss Function -- you should obtain same hyperoptimization results with same random state value used. + ## Understand the Hyperopt Result Once Hyperopt is completed you can use the result to create a new strategy. From 014c18ead2d7a2847a74fa1880a5ba9fac405c40 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 13 Dec 2019 20:27:06 +0100 Subject: [PATCH 1182/3421] Improve output from show_config when trailing_stop is active --- freqtrade/rpc/telegram.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 51736968b..2e736f11a 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -587,12 +587,23 @@ class Telegram(RPC): :return: None """ val = self._rpc_show_config() + if val['trailing_stop']: + sl_info = ( + f"*Initial Stoploss:* `{val['stoploss']}`\n" + f"*Trailing stop positive:* `{val['trailing_stop_positive']}`\n" + f"*Trailing stop offset:* `{val['trailing_stop_positive_offset']}`\n" + f"*Only trail above offset:* `{val['trailing_only_offset_is_reached']}`\n" + ) + + else: + sl_info = f"*Stoploss:* `{val['stoploss']}`\n" + self._send_msg( f"*Mode:* `{'Dry-run' if val['dry_run'] else 'Live'}`\n" f"*Exchange:* `{val['exchange']}`\n" f"*Stake per trade:* `{val['stake_amount']} {val['stake_currency']}`\n" f"*Minimum ROI:* `{val['minimal_roi']}`\n" - f"*{'Trailing ' if val['trailing_stop'] else ''}Stoploss:* `{val['stoploss']}`\n" + f"{sl_info}" f"*Ticker Interval:* `{val['ticker_interval']}`\n" f"*Strategy:* `{val['strategy']}`'" ) From e4cc5c479fe73888a01b77fd4da310b36482ca2b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 13 Dec 2019 20:27:39 +0100 Subject: [PATCH 1183/3421] Test new show_config branch --- tests/rpc/test_rpc_telegram.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 7c4a8f0d6..2ba1ccf4b 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1177,6 +1177,16 @@ def test_show_config_handle(default_conf, update, mocker) -> None: assert '*Mode:* `{}`'.format('Dry-run') in msg_mock.call_args_list[0][0][0] assert '*Exchange:* `bittrex`' in msg_mock.call_args_list[0][0][0] assert '*Strategy:* `DefaultStrategy`' in msg_mock.call_args_list[0][0][0] + assert '*Stoploss:* `-0.1`' in msg_mock.call_args_list[0][0][0] + + msg_mock.reset_mock() + freqtradebot.config['trailing_stop'] = True + telegram._show_config(update=update, context=MagicMock()) + assert msg_mock.call_count == 1 + assert '*Mode:* `{}`'.format('Dry-run') in msg_mock.call_args_list[0][0][0] + assert '*Exchange:* `bittrex`' in msg_mock.call_args_list[0][0][0] + assert '*Strategy:* `DefaultStrategy`' in msg_mock.call_args_list[0][0][0] + assert '*Initial Stoploss:* `-0.1`' in msg_mock.call_args_list[0][0][0] def test_send_msg_buy_notification(default_conf, mocker) -> None: From a48c0ad8680a591f48ddb582a740fa3d3acfdcb8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 14 Dec 2019 12:52:33 +0100 Subject: [PATCH 1184/3421] Use first pair of pairlist to get fee Use this instead of hardcoded ETH/BTC - so backtesting works with exchanges without ETH/BTC pair --- freqtrade/edge/__init__.py | 2 +- freqtrade/optimize/backtesting.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index afd20cf61..4bc3023a4 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -80,7 +80,7 @@ class Edge: if config.get('fee'): self.fee = config['fee'] else: - self.fee = self.exchange.get_fee() + self.fee = self.exchange.get_fee(symbol=self.config['exchange']['pair_whitelist'][0]) def calculate(self) -> bool: pairs = self.config['exchange']['pair_whitelist'] diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 637115dfd..7ef38331e 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -65,7 +65,7 @@ class Backtesting: if config.get('fee'): self.fee = config['fee'] else: - self.fee = self.exchange.get_fee() + self.fee = self.exchange.get_fee(symbol=self.config['exchange']['pair_whitelist'][0]) if self.config.get('runmode') != RunMode.HYPEROPT: self.dataprovider = DataProvider(self.config, self.exchange) From 82ff878e3868c8f08666a8fa08b4b12474184718 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 14 Dec 2019 15:15:20 +0300 Subject: [PATCH 1185/3421] Fix typo in the docs --- docs/hyperopt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 16bd4130b..f399fe816 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -286,7 +286,7 @@ You can also enable position stacking in the configuration file by explicitly se ### Reproducible results -The search for optimal parameters starts with a few (currently 30) random combinations in the hyperspace of parameters, random Hyperopt epochs. These random epochs are marked with a leading asterisk sign at the Hyperop output. +The search for optimal parameters starts with a few (currently 30) random combinations in the hyperspace of parameters, random Hyperopt epochs. These random epochs are marked with a leading asterisk sign at the Hyperopt output. The initial state for generation of these random values (random state) is controlled by the value of the `--random-state` command line option. You can set it to some arbitrary value of your choice to obtain reproducible results. From f2266ea9f42184e39597c63d3a64b3cd3b0a97f2 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 14 Dec 2019 15:17:45 +0300 Subject: [PATCH 1186/3421] Use shorter range for seeded random-state --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index b4eecce2a..1d524acf8 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -477,7 +477,7 @@ class Hyperopt: return trials def _set_random_state(self, random_state: Optional[int]) -> int: - return random_state or random.randint(1, 2**32 - 1) + return random_state or random.randint(1, 2**16 - 1) def start(self) -> None: self.random_state = self._set_random_state(self.config.get('hyperopt_random_state', None)) From 2275a1539ee989c9b5e2b2666e805472a5c5e8bc Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 14 Dec 2019 13:22:42 +0100 Subject: [PATCH 1187/3421] Remove default symbol from get_fee() --- freqtrade/exchange/exchange.py | 2 +- tests/edge/test_edge.py | 2 +- tests/exchange/test_exchange.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index fbe7cd29a..860f59fba 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -921,7 +921,7 @@ class Exchange: raise OperationalException(e) from e @retrier - def get_fee(self, symbol='ETH/BTC', type='', side='', amount=1, + def get_fee(self, symbol, type='', side='', amount=1, price=1, taker_or_maker='maker') -> float: try: # validate that markets are loaded before trying to get fee diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index 001dc9591..bdb986d6d 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -334,7 +334,7 @@ def test_process_expectancy(mocker, edge_conf): edge_conf['edge']['min_trade_number'] = 2 freqtrade = get_patched_freqtradebot(mocker, edge_conf) - def get_fee(): + def get_fee(*args, **kwargs): return 0.001 freqtrade.exchange.get_fee = get_fee diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index a21a5f3ac..82b62d5b8 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1646,10 +1646,10 @@ def test_get_fee(default_conf, mocker, exchange_name): }) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) - assert exchange.get_fee() == 0.025 + assert exchange.get_fee('ETH/BTC') == 0.025 ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, - 'get_fee', 'calculate_fee') + 'get_fee', 'calculate_fee', symbol="ETH/BTC") def test_stoploss_limit_order_unsupported_exchange(default_conf, mocker): From f81c49ce6d9734852b3354964543e5793c4adb10 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 14 Dec 2019 19:53:20 +0100 Subject: [PATCH 1188/3421] Fix typo causing a trailing "tic" in /show_config output --- freqtrade/rpc/telegram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 2e736f11a..a3f88003a 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -605,7 +605,7 @@ class Telegram(RPC): f"*Minimum ROI:* `{val['minimal_roi']}`\n" f"{sl_info}" f"*Ticker Interval:* `{val['ticker_interval']}`\n" - f"*Strategy:* `{val['strategy']}`'" + f"*Strategy:* `{val['strategy']}`" ) def _send_msg(self, msg: str, parse_mode: ParseMode = ParseMode.MARKDOWN) -> None: From 26ab1088903d4088881803ba9605b05d58f80b9c Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 15 Dec 2019 01:10:09 +0300 Subject: [PATCH 1189/3421] Fix mypy errors in develop --- freqtrade/optimize/backtesting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 4b0288881..064a2f6ba 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -272,7 +272,7 @@ class Backtesting: elif sell.sell_type == (SellType.ROI): roi_entry, roi = self.strategy.min_roi_reached_entry(trade_dur) if roi is not None: - if roi == -1 and roi_entry % self.timeframe_mins == 0: + if roi == -1 and roi_entry % self.timeframe_min == 0: # When forceselling with ROI=-1, the roi time will always be equal to trade_dur. # If that entry is a multiple of the timeframe (so on candle open) # - we'll use open instead of close @@ -283,7 +283,7 @@ class Backtesting: (1 + trade.fee_open)) / (trade.fee_close - 1) if (trade_dur > 0 and trade_dur == roi_entry - and roi_entry % self.timeframe_mins == 0 + and roi_entry % self.timeframe_min == 0 and sell_row.open > close_rate): # new ROI entry came into effect. # use Open rate if open_rate > calculated sell rate From 931d24b5a8c028b879518921c0c67f79865b9dcf Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Dec 2019 09:22:15 +0100 Subject: [PATCH 1190/3421] Have dry_run_wallet default to 1000 --- docs/configuration.md | 2 +- freqtrade/constants.py | 5 +++-- freqtrade/exchange/exchange.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 5ad1a886e..927432a46 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -47,7 +47,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* | `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
      *Defaults to `true`.*
      ***Datatype:*** *Boolean* -| `dry_run_wallet` | Overrides the default amount of 999.9 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason.
      ***Datatype:*** *Float* +| `dry_run_wallet` | Overrides the default amount of 1000 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason.
      ***Datatype:*** *Float* | `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* | `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Dict* | `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Float (as ratio)* diff --git a/freqtrade/constants.py b/freqtrade/constants.py index f5e5969eb..5c7190b41 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -18,7 +18,7 @@ REQUIRED_ORDERTYPES = ['buy', 'sell', 'stoploss', 'stoploss_on_exchange'] ORDERTYPE_POSSIBILITIES = ['limit', 'market'] ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc'] AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'PrecisionFilter', 'PriceFilter'] -DRY_RUN_WALLET = 999.9 +DRY_RUN_WALLET = 1000 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons USERPATH_HYPEROPTS = 'hyperopts' @@ -75,7 +75,7 @@ CONF_SCHEMA = { }, 'fiat_display_currency': {'type': 'string', 'enum': SUPPORTED_FIAT}, 'dry_run': {'type': 'boolean'}, - 'dry_run_wallet': {'type': 'number'}, + 'dry_run_wallet': {'type': 'number', 'default': DRY_RUN_WALLET}, 'process_only_new_candles': {'type': 'boolean'}, 'minimal_roi': { 'type': 'object', @@ -275,6 +275,7 @@ CONF_SCHEMA = { 'stake_currency', 'stake_amount', 'dry_run', + 'dry_run_wallet', 'bid_strategy', 'unfilledtimeout', 'stoploss', diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index fbe7cd29a..a148f9dae 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -479,7 +479,7 @@ class Exchange: @retrier def get_balance(self, currency: str) -> float: if self._config['dry_run']: - return constants.DRY_RUN_WALLET + return self._config['dry_run_wallet'] # ccxt exception is already handled by get_balances balances = self.get_balances() From 52b212db64ae6d679f76f6e9c0af382f54b13751 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Dec 2019 09:37:08 +0100 Subject: [PATCH 1191/3421] Fix tests after changing dry_run_wallet amount --- tests/exchange/test_exchange.py | 1 + tests/test_configuration.py | 7 ++++--- tests/test_freqtradebot.py | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index a21a5f3ac..774ad8cf2 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -876,6 +876,7 @@ def test_sell_considers_time_in_force(default_conf, mocker, exchange_name): def test_get_balance_dry_run(default_conf, mocker): default_conf['dry_run'] = True + default_conf['dry_run_wallet'] = 999.9 exchange = get_patched_exchange(mocker, default_conf) assert exchange.get_balance(currency='BTC') == 999.9 diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 89ca74afa..292d53315 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -8,9 +8,9 @@ from pathlib import Path from unittest.mock import MagicMock import pytest -from jsonschema import Draft4Validator, ValidationError, validate +from jsonschema import ValidationError -from freqtrade import OperationalException, constants +from freqtrade import OperationalException from freqtrade.configuration import (Arguments, Configuration, check_exchange, remove_credentials, validate_config_consistency) @@ -718,7 +718,8 @@ def test_load_config_warn_forcebuy(default_conf, mocker, caplog) -> None: def test_validate_default_conf(default_conf) -> None: - validate(default_conf, constants.CONF_SCHEMA, Draft4Validator) + # Validate via our validator - we allow setting defaults! + validate_config_schema(default_conf) def test_validate_tsl(default_conf): diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5e197da71..a73fd6c61 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -211,6 +211,7 @@ def test_edge_overrides_stake_amount(mocker, edge_conf) -> None: patch_RPCManager(mocker) patch_exchange(mocker) patch_edge(mocker) + edge_conf['dry_run_wallet'] = 999.9 freqtrade = FreqtradeBot(edge_conf) assert freqtrade._get_trade_stake_amount('NEO/BTC') == (999.9 * 0.5 * 0.01) / 0.20 @@ -1338,6 +1339,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, patch_exchange(mocker) patch_edge(mocker) edge_conf['max_open_trades'] = float('inf') + edge_conf['dry_run_wallet'] = 999.9 mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=MagicMock(return_value={ From fda8f7e30599810a834e2442a484d714e2ba3463 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Dec 2019 09:38:18 +0100 Subject: [PATCH 1192/3421] Introuce WalletDry - supporting dry-run wallets --- freqtrade/freqtradebot.py | 13 ++++++++----- freqtrade/rpc/telegram.py | 6 ++++++ freqtrade/wallets.py | 41 ++++++++++++++++++++++++++++++--------- 3 files changed, 46 insertions(+), 14 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 0595e0d35..df9fd0b17 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -25,7 +25,7 @@ from freqtrade.rpc import RPCManager, RPCMessageType from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.state import State from freqtrade.strategy.interface import IStrategy, SellType -from freqtrade.wallets import Wallets +from freqtrade.wallets import Wallets, WalletsDry logger = logging.getLogger(__name__) @@ -62,7 +62,13 @@ class FreqtradeBot: self.exchange = ExchangeResolver(self.config['exchange']['name'], self.config).exchange - self.wallets = Wallets(self.config, self.exchange) + persistence.init(self.config.get('db_url', None), + clean_open_orders=self.config.get('dry_run', False)) + + if self.config['dry_run']: + self.wallets = WalletsDry(self.config, self.exchange) + else: + self.wallets = Wallets(self.config, self.exchange) self.dataprovider = DataProvider(self.config, self.exchange) # Attach Dataprovider to Strategy baseclass @@ -78,9 +84,6 @@ class FreqtradeBot: self.active_pair_whitelist = self._refresh_whitelist() - persistence.init(self.config.get('db_url', None), - clean_open_orders=self.config.get('dry_run', False)) - # Set initial bot state from config initial_state = self.config.get('initial_state') self.state = State[initial_state.upper()] if initial_state else State.STOPPED diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 2e736f11a..4d7857f44 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -331,7 +331,13 @@ class Telegram(RPC): try: result = self._rpc_balance(self._config['stake_currency'], self._config.get('fiat_display_currency', '')) + output = '' + if self._config['dry_run']: + output += ( + f"Simulated balances - starting capital: " + f"`{self._config['dry_run_wallet']}` {self._config['stake_currency']}.\n" + ) for currency in result['currencies']: if currency['est_stake'] > 0.0001: curr_output = "*{currency}:*\n" \ diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index c674b5286..eb2603776 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -28,9 +28,6 @@ class Wallets: def get_free(self, currency) -> float: - if self._config['dry_run']: - return self._config.get('dry_run_wallet', constants.DRY_RUN_WALLET) - balance = self._wallets.get(currency) if balance and balance.free: return balance.free @@ -39,9 +36,6 @@ class Wallets: def get_used(self, currency) -> float: - if self._config['dry_run']: - return self._config.get('dry_run_wallet', constants.DRY_RUN_WALLET) - balance = self._wallets.get(currency) if balance and balance.used: return balance.used @@ -50,9 +44,6 @@ class Wallets: def get_total(self, currency) -> float: - if self._config['dry_run']: - return self._config.get('dry_run_wallet', constants.DRY_RUN_WALLET) - balance = self._wallets.get(currency) if balance and balance.total: return balance.total @@ -75,3 +66,35 @@ class Wallets: def get_all_balances(self) -> Dict[str, Any]: return self._wallets + + +class WalletsDry(Wallets): + + def __init__(self, config: dict, exchange: Exchange) -> None: + self.start_cap = config['dry_run_wallet'] + super().__init__(config, exchange) + + def update(self) -> None: + """ Update does not do anything in dry-mode...""" + from freqtrade.persistence import Trade + closed_trades = Trade.get_trades(Trade.is_open.is_(False)).all() + print(len(closed_trades)) + tot_profit = sum([trade.calc_profit() for trade in closed_trades]) + current_stake = self.start_cap + tot_profit + self._wallets[self._config['stake_currency']] = Wallet( + self._config['stake_currency'], + current_stake, + 0, + current_stake + ) + open_trades = Trade.get_trades(Trade.is_open.is_(True)).all() + + for trade in open_trades: + curr = trade.pair.split('/')[0] + trade.amount + self._wallets[curr] = Wallet( + curr, + trade.amount, + 0, + trade.amount + ) From f0bbc75038134d7debb9aed56d85eb2c2702c6b5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Dec 2019 09:48:35 +0100 Subject: [PATCH 1193/3421] Combine dry_run wallet into original Wallets class --- freqtrade/freqtradebot.py | 8 ++--- freqtrade/rpc/telegram.py | 2 +- freqtrade/wallets.py | 64 +++++++++++++++++++++------------------ 3 files changed, 39 insertions(+), 35 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index df9fd0b17..a242c11ae 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -25,7 +25,7 @@ from freqtrade.rpc import RPCManager, RPCMessageType from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.state import State from freqtrade.strategy.interface import IStrategy, SellType -from freqtrade.wallets import Wallets, WalletsDry +from freqtrade.wallets import Wallets logger = logging.getLogger(__name__) @@ -65,10 +65,8 @@ class FreqtradeBot: persistence.init(self.config.get('db_url', None), clean_open_orders=self.config.get('dry_run', False)) - if self.config['dry_run']: - self.wallets = WalletsDry(self.config, self.exchange) - else: - self.wallets = Wallets(self.config, self.exchange) + self.wallets = Wallets(self.config, self.exchange) + self.dataprovider = DataProvider(self.config, self.exchange) # Attach Dataprovider to Strategy baseclass diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 4d7857f44..e36b46ba7 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -335,7 +335,7 @@ class Telegram(RPC): output = '' if self._config['dry_run']: output += ( - f"Simulated balances - starting capital: " + f"*Warning:*Simulated balances in Dry Mode.\nStarting capital: " f"`{self._config['dry_run_wallet']}` {self._config['stake_currency']}.\n" ) for currency in result['currencies']: diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index eb2603776..f8dd0ee2f 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -4,7 +4,7 @@ import logging from typing import Dict, NamedTuple, Any from freqtrade.exchange import Exchange -from freqtrade import constants +from freqtrade.persistence import Trade logger = logging.getLogger(__name__) @@ -23,6 +23,7 @@ class Wallets: self._config = config self._exchange = exchange self._wallets: Dict[str, Wallet] = {} + self.start_cap = config['dry_run_wallet'] self.update() @@ -50,36 +51,12 @@ class Wallets: else: return 0 - def update(self) -> None: - - balances = self._exchange.get_balances() - - for currency in balances: - self._wallets[currency] = Wallet( - currency, - balances[currency].get('free', None), - balances[currency].get('used', None), - balances[currency].get('total', None) - ) - - logger.info('Wallets synced.') - - def get_all_balances(self) -> Dict[str, Any]: - return self._wallets - - -class WalletsDry(Wallets): - - def __init__(self, config: dict, exchange: Exchange) -> None: - self.start_cap = config['dry_run_wallet'] - super().__init__(config, exchange) - - def update(self) -> None: - """ Update does not do anything in dry-mode...""" - from freqtrade.persistence import Trade + def _update_dry(self) -> None: + """ Update from database in dry-run mode""" closed_trades = Trade.get_trades(Trade.is_open.is_(False)).all() - print(len(closed_trades)) + tot_profit = sum([trade.calc_profit() for trade in closed_trades]) + current_stake = self.start_cap + tot_profit self._wallets[self._config['stake_currency']] = Wallet( self._config['stake_currency'], @@ -98,3 +75,32 @@ class WalletsDry(Wallets): 0, trade.amount ) + + def _update_live(self) -> None: + + balances = self._exchange.get_balances() + + for currency in balances: + self._wallets[currency] = Wallet( + currency, + balances[currency].get('free', None), + balances[currency].get('used', None), + balances[currency].get('total', None) + ) + + def update(self) -> None: + if self._config['dry_run']: + self._update_dry() + else: + self._update_live() + logger.info('Wallets synced.') + + def get_all_balances(self) -> Dict[str, Any]: + return self._wallets + + +class WalletsDry(Wallets): + + def __init__(self, config: dict, exchange: Exchange) -> None: + + super().__init__(config, exchange) From 4463d58470aff647fe3769e52c2c90c12588ca98 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Dec 2019 09:49:56 +0100 Subject: [PATCH 1194/3421] Add release section about collapsible section --- docs/developer.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/developer.md b/docs/developer.md index d731f1768..fe37c140e 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -246,6 +246,17 @@ Determine if crucial bugfixes have been made between this commit and the current git log --oneline --no-decorate --no-merges master..new_release ``` +To keep the release-log short, best wrap the full git changelog into a collapsible details secction. + +```markdown +
      +Expand full changelog + +... Full git changelog + +
      +``` + ### Create github release / tag Once the PR against master is merged (best right after merging): From 5a5741878cecbadae067c8ee0c29b211161a3aeb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Dec 2019 10:26:56 +0100 Subject: [PATCH 1195/3421] Improve dry-run calculations --- freqtrade/freqtradebot.py | 4 ++-- freqtrade/wallets.py | 7 +++---- tests/test_freqtradebot.py | 30 ++++++++++++++++++++++++++++++ tests/test_integration.py | 1 + 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a242c11ae..5c3ef64b1 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -232,8 +232,8 @@ class FreqtradeBot: # Check if stake_amount is fulfilled if available_amount < stake_amount: raise DependencyException( - f"Available balance({available_amount} {self.config['stake_currency']}) is " - f"lower than stake amount({stake_amount} {self.config['stake_currency']})" + f"Available balance ({available_amount} {self.config['stake_currency']}) is " + f"lower than stake amount ({stake_amount} {self.config['stake_currency']})" ) return stake_amount diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index f8dd0ee2f..9ee305aab 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -54,21 +54,20 @@ class Wallets: def _update_dry(self) -> None: """ Update from database in dry-run mode""" closed_trades = Trade.get_trades(Trade.is_open.is_(False)).all() - + open_trades = Trade.get_trades(Trade.is_open.is_(True)).all() tot_profit = sum([trade.calc_profit() for trade in closed_trades]) + tot_in_trades = sum([trade.stake_amount for trade in open_trades]) - current_stake = self.start_cap + tot_profit + current_stake = self.start_cap + tot_profit - tot_in_trades self._wallets[self._config['stake_currency']] = Wallet( self._config['stake_currency'], current_stake, 0, current_stake ) - open_trades = Trade.get_trades(Trade.is_open.is_(True)).all() for trade in open_trades: curr = trade.pair.split('/')[0] - trade.amount self._wallets[curr] = Wallet( curr, trade.amount, diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index a73fd6c61..a60ea8c7c 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3485,3 +3485,33 @@ def test_process_i_am_alive(default_conf, mocker, caplog): ftbot.process() assert log_has_re(message, caplog) + + +@pytest.mark.usefixtures("init_persistence") +def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order): + default_conf['dry_run'] = True + # Initialize to 2 times stake amount + default_conf['dry_run_wallet'] = 0.002 + default_conf['max_open_trades'] = 2 + patch_exchange(mocker) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_ticker=ticker, + buy=MagicMock(return_value={'id': limit_buy_order['id']}), + get_fee=fee, + ) + + bot = get_patched_freqtradebot(mocker, default_conf) + patch_get_signal(bot) + assert bot.wallets.get_free('BTC') == 0.002 + + bot.create_trades() + trades = Trade.query.all() + assert len(trades) == 2 + + bot.config['max_open_trades'] = 3 + with pytest.raises( + DependencyException, + match=r"Available balance \(0 BTC\) is lower than stake amount \(0.001 BTC\)"): + bot.create_trades() + diff --git a/tests/test_integration.py b/tests/test_integration.py index 228ed8468..728e96d55 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -71,6 +71,7 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, ) mocker.patch("freqtrade.strategy.interface.IStrategy.should_sell", should_sell_mock) wallets_mock = mocker.patch("freqtrade.wallets.Wallets.update", MagicMock()) + mocker.patch("freqtrade.wallets.Wallets.get_free", MagicMock(return_value=1)) freqtrade = get_patched_freqtradebot(mocker, default_conf) freqtrade.strategy.order_types['stoploss_on_exchange'] = True From c741b67c3c1be52872ec12273504af0a68c1975f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Dec 2019 10:39:52 +0100 Subject: [PATCH 1196/3421] Adjust tests for dry_run wallet simulation --- freqtrade/exchange/exchange.py | 2 +- tests/rpc/test_rpc.py | 2 +- tests/rpc/test_rpc_apiserver.py | 1 + tests/rpc/test_rpc_telegram.py | 6 ++++-- tests/test_freqtradebot.py | 1 - tests/test_wallets.py | 3 ++- 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index a148f9dae..2401c59b6 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -18,7 +18,7 @@ from ccxt.base.decimal_to_precision import ROUND_DOWN, ROUND_UP from pandas import DataFrame from freqtrade import (DependencyException, InvalidOrderException, - OperationalException, TemporaryError, constants) + OperationalException, TemporaryError) from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async from freqtrade.misc import deep_merge_dicts diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 699f2d962..0a8c1cabd 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -398,7 +398,7 @@ def test_rpc_balance_handle(default_conf, mocker, tickers): get_valid_pair_combination=MagicMock( side_effect=lambda a, b: f"{b}/{a}" if a == "USDT" else f"{a}/{b}") ) - + default_conf['dry_run'] = False freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) rpc = RPC(freqtradebot) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 555fcdc81..ebb70bdf8 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -230,6 +230,7 @@ def test_api_stopbuy(botclient): def test_api_balance(botclient, mocker, rpc_balance): ftbot, client = botclient + ftbot.config['dry_run'] = False mocker.patch('freqtrade.exchange.Exchange.get_balances', return_value=rpc_balance) mocker.patch('freqtrade.exchange.Exchange.get_valid_pair_combination', side_effect=lambda a, b: f"{a}/{b}") diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 2ba1ccf4b..b02f11394 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -462,7 +462,7 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, def test_telegram_balance_handle(default_conf, update, mocker, rpc_balance, tickers) -> None: - + default_conf['dry_run'] = False mocker.patch('freqtrade.exchange.Exchange.get_balances', return_value=rpc_balance) mocker.patch('freqtrade.exchange.Exchange.get_tickers', tickers) mocker.patch('freqtrade.exchange.Exchange.get_valid_pair_combination', @@ -494,6 +494,7 @@ def test_telegram_balance_handle(default_conf, update, mocker, rpc_balance, tick def test_balance_handle_empty_response(default_conf, update, mocker) -> None: + default_conf['dry_run'] = False mocker.patch('freqtrade.exchange.Exchange.get_balances', return_value={}) msg_mock = MagicMock() @@ -533,7 +534,8 @@ def test_balance_handle_empty_response_dry(default_conf, update, mocker) -> None telegram._balance(update=update, context=MagicMock()) result = msg_mock.call_args_list[0][0][0] assert msg_mock.call_count == 1 - assert "Running in Dry Run, balances are not available." in result + assert "*Warning:*Simulated balances in Dry Mode." in result + assert "Starting capital: `1000` BTC" in result def test_balance_handle_too_large_response(default_conf, update, mocker) -> None: diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index a60ea8c7c..18f5a461a 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3514,4 +3514,3 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order) DependencyException, match=r"Available balance \(0 BTC\) is lower than stake amount \(0.001 BTC\)"): bot.create_trades() - diff --git a/tests/test_wallets.py b/tests/test_wallets.py index ae2810a2d..3177edc05 100644 --- a/tests/test_wallets.py +++ b/tests/test_wallets.py @@ -1,7 +1,8 @@ # pragma pylint: disable=missing-docstring -from tests.conftest import get_patched_freqtradebot from unittest.mock import MagicMock +from tests.conftest import get_patched_freqtradebot + def test_sync_wallet_at_boot(mocker, default_conf): default_conf['dry_run'] = False From 23d467eb0d827f6abd6641b786fe1e2a72da2e9c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Dec 2019 10:41:57 +0100 Subject: [PATCH 1197/3421] Show simulation note also in restserver --- freqtrade/rpc/rpc.py | 1 + freqtrade/rpc/telegram.py | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 4cebe646e..84b72fe18 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -348,6 +348,7 @@ class RPC: 'total': total, 'symbol': symbol, 'value': value, + 'note': 'Simulated balances' if self._freqtrade.config.get('dry_run', False) else '' } def _rpc_start(self) -> Dict[str, str]: diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index e36b46ba7..c1572bb39 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -335,7 +335,9 @@ class Telegram(RPC): output = '' if self._config['dry_run']: output += ( - f"*Warning:*Simulated balances in Dry Mode.\nStarting capital: " + f"*Warning:*Simulated balances in Dry Mode.\n" + "This mode is still experimental!\n" + "Starting capital: " f"`{self._config['dry_run_wallet']}` {self._config['stake_currency']}.\n" ) for currency in result['currencies']: From 56e13c8919319997e99835ba645c7c3c175779ad Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Dec 2019 10:55:15 +0100 Subject: [PATCH 1198/3421] Enhance documentation for dry-run wallet --- docs/configuration.md | 10 ++++++---- freqtrade/wallets.py | 7 ------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 927432a46..f0724abc4 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -47,7 +47,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* | `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
      *Defaults to `true`.*
      ***Datatype:*** *Boolean* -| `dry_run_wallet` | Overrides the default amount of 1000 stake currency units in the wallet used by the bot running in the Dry Run mode if you need it for any reason.
      ***Datatype:*** *Float* +| `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in the Dry Run mode.
      *Defaults to `1000`.*
      ***Datatype:*** *Float* | `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* | `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Dict* | `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Float (as ratio)* @@ -498,8 +498,10 @@ creating trades on the exchange. } ``` -Once you will be happy with your bot performance running in the Dry-run mode, -you can switch it to production mode. +Once you will be happy with your bot performance running in the Dry-run mode, you can switch it to production mode. + +!!! Note + A simulated wallet is available during dry-run mode, and will assume a starting capital of `dry_run_wallet` (defaults to 1000). ## Switch to production mode @@ -529,7 +531,7 @@ you run it in production mode. ``` !!! Note - If you have an exchange API key yet, [see our tutorial](/pre-requisite). + If you have an exchange API key yet, [see our tutorial](installation.md#setup-your-exchange-account). You should also make sure to read the [Exchanges](exchanges.md) section of the documentation to be aware of potential configuration details specific to your exchange. diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index 9ee305aab..4c3a0f657 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -96,10 +96,3 @@ class Wallets: def get_all_balances(self) -> Dict[str, Any]: return self._wallets - - -class WalletsDry(Wallets): - - def __init__(self, config: dict, exchange: Exchange) -> None: - - super().__init__(config, exchange) From b5b6458f128a13920e5b0d7bf3f1fe1b084ead22 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Dec 2019 10:57:27 +0100 Subject: [PATCH 1199/3421] Add note about unlimited stake amount --- docs/configuration.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/configuration.md b/docs/configuration.md index f0724abc4..9490927df 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -149,6 +149,9 @@ In this case a trade amount is calculated as: currency_balance / (max_open_trades - current_open_trades) ``` +!!! Note "When using Dry-Run Mode" + When using `"stake_amount" : "unlimited",` in combination with Dry-Run, the balance will be simulated starting with a stake of `dry_run_wallet` which will evolve over time. It is therefore important to set `dry_run_wallet` to a sensible value, otherwise it may simulate trades with 100 BTC (or more) at once - which may not correspond to your real available balance. + ### Understand minimal_roi The `minimal_roi` configuration parameter is a JSON object where the key is a duration From ce845ab092e38448cf5f04443d36c004d4feb2c5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Dec 2019 11:03:40 +0100 Subject: [PATCH 1200/3421] Improve docstring for dry-run wallet method --- freqtrade/wallets.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index 4c3a0f657..dd706438f 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -52,7 +52,12 @@ class Wallets: return 0 def _update_dry(self) -> None: - """ Update from database in dry-run mode""" + """ + Update from database in dry-run mode + - Apply apply profits of closed trades on top of stake amount + - Subtract currently tied up stake_amount in open trades + - update balances for currencies currently in trades + """ closed_trades = Trade.get_trades(Trade.is_open.is_(False)).all() open_trades = Trade.get_trades(Trade.is_open.is_(True)).all() tot_profit = sum([trade.calc_profit() for trade in closed_trades]) From 655672c9575132ef5d143afd4ee38679e9d8b352 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 16 Dec 2019 06:22:54 +0100 Subject: [PATCH 1201/3421] Enhance documentation Note --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 9490927df..2c8f7cea7 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -150,7 +150,7 @@ currency_balance / (max_open_trades - current_open_trades) ``` !!! Note "When using Dry-Run Mode" - When using `"stake_amount" : "unlimited",` in combination with Dry-Run, the balance will be simulated starting with a stake of `dry_run_wallet` which will evolve over time. It is therefore important to set `dry_run_wallet` to a sensible value, otherwise it may simulate trades with 100 BTC (or more) at once - which may not correspond to your real available balance. + When using `"stake_amount" : "unlimited",` in combination with Dry-Run, the balance will be simulated starting with a stake of `dry_run_wallet` which will evolve over time. It is therefore important to set `dry_run_wallet` to a sensible value (like 0.05 or 0.01 for BTC and 1000 or 100 for USDT, for example), otherwise it may simulate trades with 100 BTC (or more) or 0.05 USDT (or less) at once - which may not correspond to your real available balance or is less than the exchange minimal limit for the order amount for the stake currency. ### Understand minimal_roi From e398c37526e3817ea3d452db15098240c7f70e80 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2019 07:29:42 +0000 Subject: [PATCH 1202/3421] Bump pytest from 5.3.1 to 5.3.2 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.3.1 to 5.3.2. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.3.1...5.3.2) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index f073ece6e..fe5b4e369 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==3.1.0 mypy==0.750 -pytest==5.3.1 +pytest==5.3.2 pytest-asyncio==0.10.0 pytest-cov==2.8.1 pytest-mock==1.13.0 From 33db37a915ab2f2194483256194963f2021ec56d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2019 07:30:04 +0000 Subject: [PATCH 1203/3421] Bump joblib from 0.14.0 to 0.14.1 Bumps [joblib](https://github.com/joblib/joblib) from 0.14.0 to 0.14.1. - [Release notes](https://github.com/joblib/joblib/releases) - [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst) - [Commits](https://github.com/joblib/joblib/compare/0.14.0...0.14.1) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 2317cdf3e..b2428e37d 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -6,4 +6,4 @@ scipy==1.3.3 scikit-learn==0.22 scikit-optimize==0.5.2 filelock==3.0.12 -joblib==0.14.0 +joblib==0.14.1 From c05af1b63c57d5eb2014a2d800a6a6e72e48d506 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2019 07:30:27 +0000 Subject: [PATCH 1204/3421] Bump plotly from 4.3.0 to 4.4.1 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.3.0 to 4.4.1. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.3.0...v4.4.1) Signed-off-by: dependabot-preview[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index 87d5553b6..415d4b888 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.3.0 +plotly==4.4.1 From cc41cdbf2277f8fd793317ba9af690ba9f957b9e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2019 07:30:46 +0000 Subject: [PATCH 1205/3421] Bump mkdocs-material from 4.5.1 to 4.6.0 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.5.1 to 4.6.0. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.5.1...4.6.0) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index ae77c0b06..3e53c15e3 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==4.5.1 +mkdocs-material==4.6.0 mdx_truly_sane_lists==1.2 From 05de60a7febdfe846baa6c0f8714a18dd9ab81cf Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2019 07:31:38 +0000 Subject: [PATCH 1206/3421] Bump cachetools from 3.1.1 to 4.0.0 Bumps [cachetools](https://github.com/tkem/cachetools) from 3.1.1 to 4.0.0. - [Release notes](https://github.com/tkem/cachetools/releases) - [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst) - [Commits](https://github.com/tkem/cachetools/compare/v3.1.1...v4.0.0) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index f00425e5b..3371537b7 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -4,7 +4,7 @@ ccxt==1.20.46 SQLAlchemy==1.3.11 python-telegram-bot==12.2.0 arrow==0.15.4 -cachetools==3.1.1 +cachetools==4.0.0 requests==2.22.0 urllib3==1.25.7 wrapt==1.11.2 From 75e6acd6ed54624c25479a386ccb5ce559354d5e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2019 09:46:17 +0000 Subject: [PATCH 1207/3421] Bump ccxt from 1.20.46 to 1.20.84 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.20.46 to 1.20.84. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.20.46...1.20.84) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 3371537b7..a6d9a6f5e 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.20.46 +ccxt==1.20.84 SQLAlchemy==1.3.11 python-telegram-bot==12.2.0 arrow==0.15.4 From 2af9ffa7f2cf3f7bdfce4a4b582df667d5bd6cc5 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 16 Dec 2019 21:43:33 +0300 Subject: [PATCH 1208/3421] Align refresh_backtest_ to each other --- freqtrade/data/history.py | 16 ++++++++-------- freqtrade/utils.py | 2 +- tests/data/test_history.py | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index ddcae89ab..03aaeb0cc 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -334,12 +334,12 @@ def download_pair_history(datadir: Path, def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes: List[str], - dl_path: Path, timerange: Optional[TimeRange] = None, + datadir: Path, timerange: Optional[TimeRange] = None, erase=False) -> List[str]: """ Refresh stored ohlcv data for backtesting and hyperopt operations. - Used by freqtrade download-data - :return: Pairs not available + Used by freqtrade download-data subcommand. + :return: List of pairs that are not available. """ pairs_not_available = [] for pair in pairs: @@ -349,14 +349,14 @@ def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes continue for timeframe in timeframes: - dl_file = pair_data_filename(dl_path, pair, timeframe) + dl_file = pair_data_filename(datadir, pair, timeframe) if erase and dl_file.exists(): logger.info( f'Deleting existing data for pair {pair}, interval {timeframe}.') dl_file.unlink() logger.info(f'Downloading pair {pair}, interval {timeframe}.') - download_pair_history(datadir=dl_path, exchange=exchange, + download_pair_history(datadir=datadir, exchange=exchange, pair=pair, timeframe=str(timeframe), timerange=timerange) return pairs_not_available @@ -407,9 +407,9 @@ def download_trades_history(datadir: Path, def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], datadir: Path, timerange: TimeRange, erase=False) -> List[str]: """ - Refresh stored trades data. - Used by freqtrade download-data - :return: Pairs not available + Refresh stored trades data for backtesting and hyperopt operations. + Used by freqtrade download-data subcommand. + :return: List of pairs that are not available. """ pairs_not_available = [] for pair in pairs: diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 230fcf268..9e01c7ea6 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -213,7 +213,7 @@ def start_download_data(args: Dict[str, Any]) -> None: else: pairs_not_available = refresh_backtest_ohlcv_data( exchange, pairs=config["pairs"], timeframes=config["timeframes"], - dl_path=Path(config['datadir']), timerange=timerange, erase=config.get("erase")) + datadir=Path(config['datadir']), timerange=timerange, erase=config.get("erase")) except KeyboardInterrupt: sys.exit("SIGINT received, aborting ...") diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 6d89ab7c5..586492703 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -580,7 +580,7 @@ def test_refresh_backtest_ohlcv_data(mocker, default_conf, markets, caplog, test ex = get_patched_exchange(mocker, default_conf) timerange = TimeRange.parse_timerange("20190101-20190102") refresh_backtest_ohlcv_data(exchange=ex, pairs=["ETH/BTC", "XRP/BTC"], - timeframes=["1m", "5m"], dl_path=testdatadir, + timeframes=["1m", "5m"], datadir=testdatadir, timerange=timerange, erase=True ) @@ -600,7 +600,7 @@ def test_download_data_no_markets(mocker, default_conf, caplog, testdatadir): timerange = TimeRange.parse_timerange("20190101-20190102") unav_pairs = refresh_backtest_ohlcv_data(exchange=ex, pairs=["BTT/BTC", "LTC/USDT"], timeframes=["1m", "5m"], - dl_path=testdatadir, + datadir=testdatadir, timerange=timerange, erase=False ) From 4cd45b6535d4ed613718c7c5656701a81891c1ee Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 16 Dec 2019 21:57:03 +0300 Subject: [PATCH 1209/3421] Rename download_*_history as non-public --- freqtrade/data/history.py | 40 ++++++++++++++--------------- tests/data/test_history.py | 52 +++++++++++++++++++------------------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 03aaeb0cc..15c5ed451 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -155,11 +155,11 @@ def load_pair_history(pair: str, # The user forced the refresh of pairs if refresh_pairs: - download_pair_history(datadir=datadir, - exchange=exchange, - pair=pair, - timeframe=timeframe, - timerange=timerange) + _download_pair_history(datadir=datadir, + exchange=exchange, + pair=pair, + timeframe=timeframe, + timerange=timerange) pairdata = load_tickerdata_file(datadir, pair, timeframe, timerange=timerange_startup) @@ -277,11 +277,11 @@ def _load_cached_data_for_updating(datadir: Path, pair: str, timeframe: str, return (data, since_ms) -def download_pair_history(datadir: Path, - exchange: Optional[Exchange], - pair: str, - timeframe: str = '5m', - timerange: Optional[TimeRange] = None) -> bool: +def _download_pair_history(datadir: Path, + exchange: Optional[Exchange], + pair: str, + timeframe: str = '5m', + timerange: Optional[TimeRange] = None) -> bool: """ Download latest candles from the exchange for the pair and timeframe passed in parameters The data is downloaded starting from the last correct data that @@ -356,16 +356,16 @@ def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes dl_file.unlink() logger.info(f'Downloading pair {pair}, interval {timeframe}.') - download_pair_history(datadir=datadir, exchange=exchange, - pair=pair, timeframe=str(timeframe), - timerange=timerange) + _download_pair_history(datadir=datadir, exchange=exchange, + pair=pair, timeframe=str(timeframe), + timerange=timerange) return pairs_not_available -def download_trades_history(datadir: Path, - exchange: Exchange, - pair: str, - timerange: Optional[TimeRange] = None) -> bool: +def _download_trades_history(datadir: Path, + exchange: Exchange, + pair: str, + timerange: Optional[TimeRange] = None) -> bool: """ Download trade history from the exchange. Appends to previously downloaded trades data. @@ -425,9 +425,9 @@ def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], datadir: dl_file.unlink() logger.info(f'Downloading trades for pair {pair}.') - download_trades_history(datadir=datadir, exchange=exchange, - pair=pair, - timerange=timerange) + _download_trades_history(datadir=datadir, exchange=exchange, + pair=pair, + timerange=timerange) return pairs_not_available diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 586492703..c304aa97d 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -14,9 +14,9 @@ from freqtrade import OperationalException from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.history import (_load_cached_data_for_updating, + _download_pair_history, + _download_trades_history, convert_trades_to_ohlcv, - download_pair_history, - download_trades_history, load_tickerdata_file, pair_data_filename, pair_trades_filename, refresh_backtest_ohlcv_data, @@ -267,12 +267,12 @@ def test_download_pair_history(ticker_history_list, mocker, default_conf, testda assert not file1_1.is_file() assert not file2_1.is_file() - assert download_pair_history(datadir=testdatadir, exchange=exchange, - pair='MEME/BTC', - timeframe='1m') - assert download_pair_history(datadir=testdatadir, exchange=exchange, - pair='CFI/BTC', - timeframe='1m') + assert _download_pair_history(datadir=testdatadir, exchange=exchange, + pair='MEME/BTC', + timeframe='1m') + assert _download_pair_history(datadir=testdatadir, exchange=exchange, + pair='CFI/BTC', + timeframe='1m') assert not exchange._pairs_last_refresh_time assert file1_1.is_file() assert file2_1.is_file() @@ -284,12 +284,12 @@ def test_download_pair_history(ticker_history_list, mocker, default_conf, testda assert not file1_5.is_file() assert not file2_5.is_file() - assert download_pair_history(datadir=testdatadir, exchange=exchange, - pair='MEME/BTC', - timeframe='5m') - assert download_pair_history(datadir=testdatadir, exchange=exchange, - pair='CFI/BTC', - timeframe='5m') + assert _download_pair_history(datadir=testdatadir, exchange=exchange, + pair='MEME/BTC', + timeframe='5m') + assert _download_pair_history(datadir=testdatadir, exchange=exchange, + pair='CFI/BTC', + timeframe='5m') assert not exchange._pairs_last_refresh_time assert file1_5.is_file() assert file2_5.is_file() @@ -307,8 +307,8 @@ def test_download_pair_history2(mocker, default_conf, testdatadir) -> None: json_dump_mock = mocker.patch('freqtrade.misc.file_dump_json', return_value=None) mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=tick) exchange = get_patched_exchange(mocker, default_conf) - download_pair_history(testdatadir, exchange, pair="UNITTEST/BTC", timeframe='1m') - download_pair_history(testdatadir, exchange, pair="UNITTEST/BTC", timeframe='3m') + _download_pair_history(testdatadir, exchange, pair="UNITTEST/BTC", timeframe='1m') + _download_pair_history(testdatadir, exchange, pair="UNITTEST/BTC", timeframe='3m') assert json_dump_mock.call_count == 2 @@ -324,9 +324,9 @@ def test_download_backtesting_data_exception(ticker_history, mocker, caplog, _backup_file(file1_1) _backup_file(file1_5) - assert not download_pair_history(datadir=testdatadir, exchange=exchange, - pair='MEME/BTC', - timeframe='1m') + assert not _download_pair_history(datadir=testdatadir, exchange=exchange, + pair='MEME/BTC', + timeframe='1m') # clean files freshly downloaded _clean_test_file(file1_1) _clean_test_file(file1_5) @@ -570,7 +570,7 @@ def test_validate_backtest_data(default_conf, mocker, caplog, testdatadir) -> No def test_refresh_backtest_ohlcv_data(mocker, default_conf, markets, caplog, testdatadir): - dl_mock = mocker.patch('freqtrade.data.history.download_pair_history', MagicMock()) + dl_mock = mocker.patch('freqtrade.data.history._download_pair_history', MagicMock()) mocker.patch( 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets) ) @@ -591,7 +591,7 @@ def test_refresh_backtest_ohlcv_data(mocker, default_conf, markets, caplog, test def test_download_data_no_markets(mocker, default_conf, caplog, testdatadir): - dl_mock = mocker.patch('freqtrade.data.history.download_pair_history', MagicMock()) + dl_mock = mocker.patch('freqtrade.data.history._download_pair_history', MagicMock()) ex = get_patched_exchange(mocker, default_conf) mocker.patch( @@ -611,7 +611,7 @@ def test_download_data_no_markets(mocker, default_conf, caplog, testdatadir): def test_refresh_backtest_trades_data(mocker, default_conf, markets, caplog, testdatadir): - dl_mock = mocker.patch('freqtrade.data.history.download_trades_history', MagicMock()) + dl_mock = mocker.patch('freqtrade.data.history._download_trades_history', MagicMock()) mocker.patch( 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets) ) @@ -646,8 +646,8 @@ def test_download_trades_history(trades_history, mocker, default_conf, testdatad assert not file1.is_file() - assert download_trades_history(datadir=testdatadir, exchange=exchange, - pair='ETH/BTC') + assert _download_trades_history(datadir=testdatadir, exchange=exchange, + pair='ETH/BTC') assert log_has("New Amount of trades: 5", caplog) assert file1.is_file() @@ -657,8 +657,8 @@ def test_download_trades_history(trades_history, mocker, default_conf, testdatad mocker.patch('freqtrade.exchange.Exchange.get_historic_trades', MagicMock(side_effect=ValueError)) - assert not download_trades_history(datadir=testdatadir, exchange=exchange, - pair='ETH/BTC') + assert not _download_trades_history(datadir=testdatadir, exchange=exchange, + pair='ETH/BTC') assert log_has_re('Failed to download historic trades for pair: "ETH/BTC".*', caplog) From fa968996ed980df63aa139180af0ec5799b74b26 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 16 Dec 2019 22:01:26 +0300 Subject: [PATCH 1210/3421] Remove useless check --- freqtrade/data/history.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 15c5ed451..5176a9b19 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -295,11 +295,6 @@ def _download_pair_history(datadir: Path, :param timerange: range of time to download :return: bool with success state """ - if not exchange: - raise OperationalException( - "Exchange needs to be initialized when downloading pair history data" - ) - try: logger.info( f'Download history data for pair: "{pair}", timeframe: {timeframe} ' From a6fc743d854e33ddd44fb11cea277ab1a6482f86 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 16 Dec 2019 22:12:26 +0300 Subject: [PATCH 1211/3421] Align code in _download_*_history() --- freqtrade/data/history.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 5176a9b19..79500c512 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -307,11 +307,12 @@ def _download_pair_history(datadir: Path, logger.debug("Current End: %s", misc.format_ms_time(data[-1][0]) if data else 'None') # Default since_ms to 30 days if nothing is given - new_data = exchange.get_historic_ohlcv(pair=pair, timeframe=timeframe, - since_ms=since_ms if since_ms - else + new_data = exchange.get_historic_ohlcv(pair=pair, + timeframe=timeframe, + since_ms=since_ms if since_ms else int(arrow.utcnow().shift( - days=-30).float_timestamp) * 1000) + days=-30).float_timestamp) * 1000 + ) data.extend(new_data) logger.debug("New Start: %s", misc.format_ms_time(data[0][0])) @@ -376,11 +377,11 @@ def _download_trades_history(datadir: Path, logger.debug("Current Start: %s", trades[0]['datetime'] if trades else 'None') logger.debug("Current End: %s", trades[-1]['datetime'] if trades else 'None') + # Default since_ms to 30 days if nothing is given new_trades = exchange.get_historic_trades(pair=pair, since=since if since else int(arrow.utcnow().shift( days=-30).float_timestamp) * 1000, - # until=xxx, from_id=from_id, ) trades.extend(new_trades[1]) From 9cea5cd4427cbabd877860d34bb3a8cad32a2149 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 16 Dec 2019 20:38:36 +0100 Subject: [PATCH 1212/3421] Add documentation about ohlcv_partial_candle --- docs/developer.md | 6 ++++-- docs/exchanges.md | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/docs/developer.md b/docs/developer.md index fe37c140e..5b07aff03 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -183,17 +183,19 @@ raw = ct.fetch_ohlcv(pair, timeframe=timeframe) # convert to dataframe df1 = parse_ticker_dataframe(raw, timeframe, pair=pair, drop_incomplete=False) -print(df1["date"].tail(1)) +print(df1.tail(1)) print(datetime.utcnow()) ``` ``` output -19 2019-06-08 00:00:00+00:00 + date open high low close volume +499 2019-06-08 00:00:00+00:00 0.000007 0.000007 0.000007 0.000007 26264344.0 2019-06-09 12:30:27.873327 ``` The output will show the last entry from the Exchange as well as the current UTC date. If the day shows the same day, then the last candle can be assumed as incomplete and should be dropped (leave the setting `"ohlcv_partial_candle"` from the exchange-class untouched / True). Otherwise, set `"ohlcv_partial_candle"` to `False` to not drop Candles (shown in the example above). +Another way is to run this command multiple times in a row and observe if the volume is changing (while the date remains the same). ## Updating example notebooks diff --git a/docs/exchanges.md b/docs/exchanges.md index 5bd283a69..d836b4c32 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -61,3 +61,24 @@ print(res) ```shell $ pip3 install web3 ``` + +### Send incomplete candles to the strategy + +Most exchanges return incomplete candles via their ohlcv / klines interface. +By default, Freqtrade assumes that incomplete candles are returned and removes the last candle assuming it's an incomplete candle. + +Wether your exchange returns incomplete candles or not can be checked using [the helper script](developer.md#Incomplete-candles) from the Contributor documentation. + +If the exchange does return incomplete candles and you would like to have incomplete candles in your strategy, you can set the following parameter in the configuration file. + +``` json +{ + + "exchange": { + "_ft_has_params": {"ohlcv_partial_candle": false} + } +} +``` + +!!! Warning "Danger of repainting" + Changing this parameter makes the strategy responsible to avoid repainting and handle this accordingly. Doing this is therefore not recommended, and should only be performed by experienced users who are fully aware of the impact this setting has. From 0277cd82ea66cd019138f0f45caaeed3b0afc187 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 16 Dec 2019 23:25:57 +0300 Subject: [PATCH 1213/3421] Make mypy happy --- freqtrade/data/history.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 79500c512..2c01f9f48 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -295,6 +295,11 @@ def _download_pair_history(datadir: Path, :param timerange: range of time to download :return: bool with success state """ + if not exchange: + raise OperationalException( + "Exchange needs to be initialized when downloading pair history data" + ) + try: logger.info( f'Download history data for pair: "{pair}", timeframe: {timeframe} ' From 707c5668a52f1956a458cf2255b26ce89aea1a7e Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 06:11:44 +0100 Subject: [PATCH 1214/3421] Fix typo --- docs/exchanges.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/exchanges.md b/docs/exchanges.md index d836b4c32..76fa81f4a 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -67,7 +67,7 @@ $ pip3 install web3 Most exchanges return incomplete candles via their ohlcv / klines interface. By default, Freqtrade assumes that incomplete candles are returned and removes the last candle assuming it's an incomplete candle. -Wether your exchange returns incomplete candles or not can be checked using [the helper script](developer.md#Incomplete-candles) from the Contributor documentation. +Whether your exchange returns incomplete candles or not can be checked using [the helper script](developer.md#Incomplete-candles) from the Contributor documentation. If the exchange does return incomplete candles and you would like to have incomplete candles in your strategy, you can set the following parameter in the configuration file. From 0b5354f13db399a21b06275aeb0d6edc3097ee2f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 06:58:10 +0100 Subject: [PATCH 1215/3421] Add required arguments to Trade method --- tests/strategy/test_interface.py | 3 ++ tests/test_freqtradebot.py | 73 +++++++++++++++++++++++--------- tests/test_persistence.py | 33 ++++++++++++--- 3 files changed, 82 insertions(+), 27 deletions(-) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 5519b1a34..605622b8f 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -125,6 +125,7 @@ def test_min_roi_reached(default_conf, fee) -> None: trade = Trade( pair='ETH/BTC', stake_amount=0.001, + amount=5, open_date=arrow.utcnow().shift(hours=-1).datetime, fee_open=fee.return_value, fee_close=fee.return_value, @@ -162,6 +163,7 @@ def test_min_roi_reached2(default_conf, fee) -> None: trade = Trade( pair='ETH/BTC', stake_amount=0.001, + amount=5, open_date=arrow.utcnow().shift(hours=-1).datetime, fee_open=fee.return_value, fee_close=fee.return_value, @@ -195,6 +197,7 @@ def test_min_roi_reached3(default_conf, fee) -> None: trade = Trade( pair='ETH/BTC', stake_amount=0.001, + amount=5, open_date=arrow.utcnow().shift(hours=-1).datetime, fee_open=fee.return_value, fee_close=fee.return_value, diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 18f5a461a..9dff73322 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1512,13 +1512,15 @@ def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> No mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_real_amount', return_value=limit_buy_order['amount']) - trade = Trade() - # Mock session away - Trade.session = MagicMock() - trade.open_order_id = '123' - trade.open_fee = 0.001 + trade = Trade( + open_order_id=123, + fee_open=0.001, + fee_close=0.001, + open_rate=0.01, + open_date=arrow.utcnow().datetime, + amount=11, + ) # Add datetime explicitly since sqlalchemy defaults apply only once written to database - trade.open_date = arrow.utcnow().datetime freqtrade.update_trade_state(trade) # Test amount not modified by fee-logic assert not log_has_re(r'Applying fee to .*', caplog) @@ -1541,7 +1543,7 @@ def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> No assert log_has_re('Found open order for.*', caplog) -def test_update_trade_state_withorderdict(default_conf, trades_for_order, limit_buy_order, mocker): +def test_update_trade_state_withorderdict(default_conf, trades_for_order, limit_buy_order, fee, mocker): mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) # get_order should not be called!! mocker.patch('freqtrade.exchange.Exchange.get_order', MagicMock(side_effect=ValueError)) @@ -1554,6 +1556,8 @@ def test_update_trade_state_withorderdict(default_conf, trades_for_order, limit_ amount=amount, exchange='binance', open_rate=0.245441, + fee_open=fee.return_value, + fee_close=fee.return_value, open_order_id="123456", is_open=True, ) @@ -1562,7 +1566,7 @@ def test_update_trade_state_withorderdict(default_conf, trades_for_order, limit_ assert trade.amount == limit_buy_order['amount'] -def test_update_trade_state_withorderdict_rounding_fee(default_conf, trades_for_order, +def test_update_trade_state_withorderdict_rounding_fee(default_conf, trades_for_order, fee, limit_buy_order, mocker, caplog): trades_for_order[0]['amount'] = limit_buy_order['amount'] + 1e-14 mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) @@ -1577,6 +1581,8 @@ def test_update_trade_state_withorderdict_rounding_fee(default_conf, trades_for_ amount=amount, exchange='binance', open_rate=0.245441, + fee_open=fee.return_value, + fee_close=fee.return_value, open_order_id="123456", is_open=True, open_date=arrow.utcnow().datetime, @@ -2972,7 +2978,7 @@ def test_disable_ignore_roi_if_buy_signal(default_conf, limit_buy_order, assert trade.sell_reason == SellType.STOP_LOSS.value -def test_get_real_amount_quote(default_conf, trades_for_order, buy_order_fee, caplog, mocker): +def test_get_real_amount_quote(default_conf, trades_for_order, buy_order_fee, fee, caplog, mocker): mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) patch_RPCManager(mocker) patch_exchange(mocker) @@ -2982,6 +2988,8 @@ def test_get_real_amount_quote(default_conf, trades_for_order, buy_order_fee, ca amount=amount, exchange='binance', open_rate=0.245441, + fee_open=fee.return_value, + fee_close=fee.return_value, open_order_id="123456" ) freqtrade = FreqtradeBot(default_conf) @@ -2994,7 +3002,7 @@ def test_get_real_amount_quote(default_conf, trades_for_order, buy_order_fee, ca caplog) -def test_get_real_amount_no_trade(default_conf, buy_order_fee, caplog, mocker): +def test_get_real_amount_no_trade(default_conf, buy_order_fee, caplog, mocker, fee): mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=[]) patch_RPCManager(mocker) @@ -3005,6 +3013,8 @@ def test_get_real_amount_no_trade(default_conf, buy_order_fee, caplog, mocker): amount=amount, exchange='binance', open_rate=0.245441, + fee_open=fee.return_value, + fee_close=fee.return_value, open_order_id="123456" ) freqtrade = FreqtradeBot(default_conf) @@ -3017,7 +3027,7 @@ def test_get_real_amount_no_trade(default_conf, buy_order_fee, caplog, mocker): caplog) -def test_get_real_amount_stake(default_conf, trades_for_order, buy_order_fee, mocker): +def test_get_real_amount_stake(default_conf, trades_for_order, buy_order_fee, fee, mocker): trades_for_order[0]['fee']['currency'] = 'ETH' patch_RPCManager(mocker) @@ -3028,6 +3038,8 @@ def test_get_real_amount_stake(default_conf, trades_for_order, buy_order_fee, mo pair='LTC/ETH', amount=amount, exchange='binance', + fee_open=fee.return_value, + fee_close=fee.return_value, open_rate=0.245441, open_order_id="123456" ) @@ -3038,7 +3050,8 @@ def test_get_real_amount_stake(default_conf, trades_for_order, buy_order_fee, mo assert freqtrade.get_real_amount(trade, buy_order_fee) == amount -def test_get_real_amount_no_currency_in_fee(default_conf, trades_for_order, buy_order_fee, mocker): +def test_get_real_amount_no_currency_in_fee(default_conf, trades_for_order, buy_order_fee, + fee, mocker): limit_buy_order = deepcopy(buy_order_fee) limit_buy_order['fee'] = {'cost': 0.004, 'currency': None} @@ -3052,6 +3065,8 @@ def test_get_real_amount_no_currency_in_fee(default_conf, trades_for_order, buy_ pair='LTC/ETH', amount=amount, exchange='binance', + fee_open=fee.return_value, + fee_close=fee.return_value, open_rate=0.245441, open_order_id="123456" ) @@ -3062,7 +3077,7 @@ def test_get_real_amount_no_currency_in_fee(default_conf, trades_for_order, buy_ assert freqtrade.get_real_amount(trade, limit_buy_order) == amount -def test_get_real_amount_BNB(default_conf, trades_for_order, buy_order_fee, mocker): +def test_get_real_amount_BNB(default_conf, trades_for_order, buy_order_fee, fee, mocker): trades_for_order[0]['fee']['currency'] = 'BNB' trades_for_order[0]['fee']['cost'] = 0.00094518 @@ -3074,6 +3089,8 @@ def test_get_real_amount_BNB(default_conf, trades_for_order, buy_order_fee, mock pair='LTC/ETH', amount=amount, exchange='binance', + fee_open=fee.return_value, + fee_close=fee.return_value, open_rate=0.245441, open_order_id="123456" ) @@ -3084,7 +3101,7 @@ def test_get_real_amount_BNB(default_conf, trades_for_order, buy_order_fee, mock assert freqtrade.get_real_amount(trade, buy_order_fee) == amount -def test_get_real_amount_multi(default_conf, trades_for_order2, buy_order_fee, caplog, mocker): +def test_get_real_amount_multi(default_conf, trades_for_order2, buy_order_fee, caplog, fee, mocker): patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order2) @@ -3093,6 +3110,8 @@ def test_get_real_amount_multi(default_conf, trades_for_order2, buy_order_fee, c pair='LTC/ETH', amount=amount, exchange='binance', + fee_open=fee.return_value, + fee_close=fee.return_value, open_rate=0.245441, open_order_id="123456" ) @@ -3106,7 +3125,8 @@ def test_get_real_amount_multi(default_conf, trades_for_order2, buy_order_fee, c caplog) -def test_get_real_amount_fromorder(default_conf, trades_for_order, buy_order_fee, caplog, mocker): +def test_get_real_amount_fromorder(default_conf, trades_for_order, buy_order_fee, fee, + caplog, mocker): limit_buy_order = deepcopy(buy_order_fee) limit_buy_order['fee'] = {'cost': 0.004, 'currency': 'LTC'} @@ -3119,6 +3139,8 @@ def test_get_real_amount_fromorder(default_conf, trades_for_order, buy_order_fee pair='LTC/ETH', amount=amount, exchange='binance', + fee_open=fee.return_value, + fee_close=fee.return_value, open_rate=0.245441, open_order_id="123456" ) @@ -3132,7 +3154,7 @@ def test_get_real_amount_fromorder(default_conf, trades_for_order, buy_order_fee caplog) -def test_get_real_amount_invalid_order(default_conf, trades_for_order, buy_order_fee, mocker): +def test_get_real_amount_invalid_order(default_conf, trades_for_order, buy_order_fee, fee, mocker): limit_buy_order = deepcopy(buy_order_fee) limit_buy_order['fee'] = {'cost': 0.004} @@ -3144,6 +3166,8 @@ def test_get_real_amount_invalid_order(default_conf, trades_for_order, buy_order pair='LTC/ETH', amount=amount, exchange='binance', + fee_open=fee.return_value, + fee_close=fee.return_value, open_rate=0.245441, open_order_id="123456" ) @@ -3154,7 +3178,7 @@ def test_get_real_amount_invalid_order(default_conf, trades_for_order, buy_order assert freqtrade.get_real_amount(trade, limit_buy_order) == amount -def test_get_real_amount_wrong_amount(default_conf, trades_for_order, buy_order_fee, mocker): +def test_get_real_amount_wrong_amount(default_conf, trades_for_order, buy_order_fee, fee, mocker): limit_buy_order = deepcopy(buy_order_fee) limit_buy_order['amount'] = limit_buy_order['amount'] - 0.001 @@ -3167,6 +3191,8 @@ def test_get_real_amount_wrong_amount(default_conf, trades_for_order, buy_order_ amount=amount, exchange='binance', open_rate=0.245441, + fee_open=fee.return_value, + fee_close=fee.return_value, open_order_id="123456" ) freqtrade = FreqtradeBot(default_conf) @@ -3177,7 +3203,7 @@ def test_get_real_amount_wrong_amount(default_conf, trades_for_order, buy_order_ freqtrade.get_real_amount(trade, limit_buy_order) -def test_get_real_amount_wrong_amount_rounding(default_conf, trades_for_order, buy_order_fee, +def test_get_real_amount_wrong_amount_rounding(default_conf, trades_for_order, buy_order_fee, fee, mocker): # Floats should not be compared directly. limit_buy_order = deepcopy(buy_order_fee) @@ -3191,6 +3217,8 @@ def test_get_real_amount_wrong_amount_rounding(default_conf, trades_for_order, b pair='LTC/ETH', amount=amount, exchange='binance', + fee_open=fee.return_value, + fee_close=fee.return_value, open_rate=0.245441, open_order_id="123456" ) @@ -3202,7 +3230,7 @@ def test_get_real_amount_wrong_amount_rounding(default_conf, trades_for_order, b abs_tol=MATH_CLOSE_PREC,) -def test_get_real_amount_invalid(default_conf, trades_for_order, buy_order_fee, mocker): +def test_get_real_amount_invalid(default_conf, trades_for_order, buy_order_fee, fee, mocker): # Remove "Currency" from fee dict trades_for_order[0]['fee'] = {'cost': 0.008} @@ -3215,6 +3243,9 @@ def test_get_real_amount_invalid(default_conf, trades_for_order, buy_order_fee, amount=amount, exchange='binance', open_rate=0.245441, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_order_id="123456" ) freqtrade = FreqtradeBot(default_conf) @@ -3223,7 +3254,7 @@ def test_get_real_amount_invalid(default_conf, trades_for_order, buy_order_fee, assert freqtrade.get_real_amount(trade, buy_order_fee) == amount -def test_get_real_amount_open_trade(default_conf, mocker): +def test_get_real_amount_open_trade(default_conf, fee, mocker): patch_RPCManager(mocker) patch_exchange(mocker) amount = 12345 @@ -3232,6 +3263,8 @@ def test_get_real_amount_open_trade(default_conf, mocker): amount=amount, exchange='binance', open_rate=0.245441, + fee_open=fee.return_value, + fee_close=fee.return_value, open_order_id="123456" ) order = { diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 231a1d2e2..67c61172c 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -136,12 +136,13 @@ def test_update_with_bittrex(limit_buy_order, limit_sell_order, fee, caplog): id=2, pair='ETH/BTC', stake_amount=0.001, + open_rate=0.01, + amount=5, fee_open=fee.return_value, fee_close=fee.return_value, exchange='bittrex', ) assert trade.open_order_id is None - assert trade.open_rate is None assert trade.close_profit is None assert trade.close_date is None @@ -173,6 +174,8 @@ def test_update_market_order(market_buy_order, market_sell_order, fee, caplog): id=1, pair='ETH/BTC', stake_amount=0.001, + amount=5, + open_rate=0.01, fee_open=fee.return_value, fee_close=fee.return_value, exchange='bittrex', @@ -205,6 +208,8 @@ def test_calc_open_close_trade_price(limit_buy_order, limit_sell_order, fee): trade = Trade( pair='ETH/BTC', stake_amount=0.001, + open_rate=0.01, + amount=5, fee_open=fee.return_value, fee_close=fee.return_value, exchange='bittrex', @@ -212,7 +217,7 @@ def test_calc_open_close_trade_price(limit_buy_order, limit_sell_order, fee): trade.open_order_id = 'something' trade.update(limit_buy_order) - assert trade.calc_open_trade_price() == 0.0010024999999225068 + assert trade._calc_open_trade_price() == 0.0010024999999225068 trade.update(limit_sell_order) assert trade.calc_close_trade_price() == 0.0010646656050132426 @@ -229,6 +234,8 @@ def test_calc_close_trade_price_exception(limit_buy_order, fee): trade = Trade( pair='ETH/BTC', stake_amount=0.001, + open_rate=0.1, + amount=5, fee_open=fee.return_value, fee_close=fee.return_value, exchange='bittrex', @@ -244,13 +251,14 @@ def test_update_open_order(limit_buy_order): trade = Trade( pair='ETH/BTC', stake_amount=1.00, + open_rate=0.01, + amount=5, fee_open=0.1, fee_close=0.1, exchange='bittrex', ) assert trade.open_order_id is None - assert trade.open_rate is None assert trade.close_profit is None assert trade.close_date is None @@ -258,7 +266,6 @@ def test_update_open_order(limit_buy_order): trade.update(limit_buy_order) assert trade.open_order_id is None - assert trade.open_rate is None assert trade.close_profit is None assert trade.close_date is None @@ -268,6 +275,8 @@ def test_update_invalid_order(limit_buy_order): trade = Trade( pair='ETH/BTC', stake_amount=1.00, + amount=5, + open_rate=0.001, fee_open=0.1, fee_close=0.1, exchange='bittrex', @@ -282,6 +291,8 @@ def test_calc_open_trade_price(limit_buy_order, fee): trade = Trade( pair='ETH/BTC', stake_amount=0.001, + amount=5, + open_rate=0.00001099, fee_open=fee.return_value, fee_close=fee.return_value, exchange='bittrex', @@ -290,10 +301,10 @@ def test_calc_open_trade_price(limit_buy_order, fee): trade.update(limit_buy_order) # Buy @ 0.00001099 # Get the open rate price with the standard fee rate - assert trade.calc_open_trade_price() == 0.0010024999999225068 - + assert trade._calc_open_trade_price() == 0.0010024999999225068 + trade.fee_open = 0.003 # Get the open rate price with a custom fee rate - assert trade.calc_open_trade_price(fee=0.003) == 0.001002999999922468 + assert trade._calc_open_trade_price() == 0.001002999999922468 @pytest.mark.usefixtures("init_persistence") @@ -301,6 +312,8 @@ def test_calc_close_trade_price(limit_buy_order, limit_sell_order, fee): trade = Trade( pair='ETH/BTC', stake_amount=0.001, + amount=5, + open_rate=0.00001099, fee_open=fee.return_value, fee_close=fee.return_value, exchange='bittrex', @@ -324,6 +337,8 @@ def test_calc_profit(limit_buy_order, limit_sell_order, fee): trade = Trade( pair='ETH/BTC', stake_amount=0.001, + amount=5, + open_rate=0.00001099, fee_open=fee.return_value, fee_close=fee.return_value, exchange='bittrex', @@ -356,6 +371,8 @@ def test_calc_profit_percent(limit_buy_order, limit_sell_order, fee): trade = Trade( pair='ETH/BTC', stake_amount=0.001, + amount=5, + open_rate=0.00001099, fee_open=fee.return_value, fee_close=fee.return_value, exchange='bittrex', @@ -630,6 +647,7 @@ def test_adjust_stop_loss(fee): trade = Trade( pair='ETH/BTC', stake_amount=0.001, + amount=5, fee_open=fee.return_value, fee_close=fee.return_value, exchange='bittrex', @@ -681,6 +699,7 @@ def test_adjust_min_max_rates(fee): trade = Trade( pair='ETH/BTC', stake_amount=0.001, + amount=5, fee_open=fee.return_value, fee_close=fee.return_value, exchange='bittrex', From 307ade6251a7ec3a5e0a914204c9cf7da07c6866 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 07:02:02 +0100 Subject: [PATCH 1216/3421] Cache open_trade_price --- freqtrade/persistence.py | 23 ++++++++++++++++------- tests/test_persistence.py | 2 ++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 735c740c3..e1a3ad713 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -86,7 +86,7 @@ def check_migrate(engine) -> None: logger.debug(f'trying {table_back_name}') # Check for latest column - if not has_column(cols, 'stop_loss_pct'): + if not has_column(cols, 'open_trade_price'): logger.info(f'Running database migration - backup available as {table_back_name}') fee_open = get_column_def(cols, 'fee_open', 'fee') @@ -104,6 +104,8 @@ def check_migrate(engine) -> None: sell_reason = get_column_def(cols, 'sell_reason', 'null') strategy = get_column_def(cols, 'strategy', 'null') ticker_interval = get_column_def(cols, 'ticker_interval', 'null') + open_trade_price = get_column_def(cols, 'open_trade_price', + f'amount * open_rate * (1 + {fee_open})') # Schema migration necessary engine.execute(f"alter table trades rename to {table_back_name}") @@ -121,7 +123,7 @@ def check_migrate(engine) -> None: stop_loss, stop_loss_pct, initial_stop_loss, initial_stop_loss_pct, stoploss_order_id, stoploss_last_update, max_rate, min_rate, sell_reason, strategy, - ticker_interval + ticker_interval, open_trade_price ) select id, lower(exchange), case @@ -140,7 +142,8 @@ def check_migrate(engine) -> None: {initial_stop_loss_pct} initial_stop_loss_pct, {stoploss_order_id} stoploss_order_id, {stoploss_last_update} stoploss_last_update, {max_rate} max_rate, {min_rate} min_rate, {sell_reason} sell_reason, - {strategy} strategy, {ticker_interval} ticker_interval + {strategy} strategy, {ticker_interval} ticker_interval, + {open_trade_price} open_trade_price from {table_back_name} """) @@ -182,6 +185,7 @@ class Trade(_DECL_BASE): fee_close = Column(Float, nullable=False, default=0.0) open_rate = Column(Float) open_rate_requested = Column(Float) + open_trade_price = Column(Float) close_rate = Column(Float) close_rate_requested = Column(Float) close_profit = Column(Float) @@ -210,6 +214,10 @@ class Trade(_DECL_BASE): strategy = Column(String, nullable=True) ticker_interval = Column(Integer, nullable=True) + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.open_trade_price = self._calc_open_trade_price() + def __repr__(self): open_since = self.open_date.strftime('%Y-%m-%d %H:%M:%S') if self.is_open else 'closed' @@ -302,6 +310,7 @@ class Trade(_DECL_BASE): # Update open rate and actual amount self.open_rate = Decimal(order['price']) self.amount = Decimal(order['amount']) + self.open_trade_price = self._calc_open_trade_price() logger.info('%s_BUY has been fulfilled for %s.', order_type.upper(), self) self.open_order_id = None elif order_type in ('market', 'limit') and order['side'] == 'sell': @@ -331,7 +340,7 @@ class Trade(_DECL_BASE): self ) - def calc_open_trade_price(self, fee: Optional[float] = None) -> float: + def _calc_open_trade_price(self) -> float: """ Calculate the open_rate including fee. :param fee: fee to use on the open rate (optional). @@ -339,7 +348,7 @@ class Trade(_DECL_BASE): :return: Price in of the open trade incl. Fees """ buy_trade = (Decimal(self.amount) * Decimal(self.open_rate)) - fees = buy_trade * Decimal(fee or self.fee_open) + fees = buy_trade * Decimal(self.fee_open) return float(buy_trade + fees) def calc_close_trade_price(self, rate: Optional[float] = None, @@ -369,7 +378,7 @@ class Trade(_DECL_BASE): If rate is not set self.close_rate will be used :return: profit in stake currency as float """ - open_trade_price = self.calc_open_trade_price() + open_trade_price = self._calc_open_trade_price() close_trade_price = self.calc_close_trade_price( rate=(rate or self.close_rate), fee=(fee or self.fee_close) @@ -386,7 +395,7 @@ class Trade(_DECL_BASE): :param fee: fee to use on the close rate (optional). :return: profit in percentage as float """ - open_trade_price = self.calc_open_trade_price() + open_trade_price = self._calc_open_trade_price() close_trade_price = self.calc_close_trade_price( rate=(rate or self.close_rate), fee=(fee or self.fee_close) diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 67c61172c..2cb79de98 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -498,6 +498,7 @@ def test_migrate_old(mocker, default_conf, fee): assert trade.max_rate == 0.0 assert trade.stop_loss == 0.0 assert trade.initial_stop_loss == 0.0 + assert trade.open_trade_price == 0.26758131848350003 def test_migrate_new(mocker, default_conf, fee, caplog): @@ -580,6 +581,7 @@ def test_migrate_new(mocker, default_conf, fee, caplog): assert log_has("trying trades_bak1", caplog) assert log_has("trying trades_bak2", caplog) assert log_has("Running database migration - backup available as trades_bak2", caplog) + assert trade.open_trade_price == 0.26758131848350003 def test_migrate_mid_state(mocker, default_conf, fee, caplog): From 861a7834fc32556b7d59be02c872c66f7a49efb3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 07:08:36 +0100 Subject: [PATCH 1217/3421] Call calc_open_price() whenever necessary --- freqtrade/freqtradebot.py | 2 ++ freqtrade/persistence.py | 17 +++++++++++------ tests/test_persistence.py | 4 ++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5c3ef64b1..a7ca67dcf 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -555,6 +555,7 @@ class FreqtradeBot: order['amount'] = new_amount # Fee was applied, so set to 0 trade.fee_open = 0 + trade.recalc_open_trade_price() except DependencyException as exception: logger.warning("Could not update trade amount: %s", exception) @@ -850,6 +851,7 @@ class FreqtradeBot: trade.amount = new_amount # Fee was applied, so set to 0 trade.fee_open = 0 + trade.recalc_open_trade_price() except DependencyException as e: logger.warning("Could not update trade amount: %s", e) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index e1a3ad713..354f713bc 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -216,7 +216,7 @@ class Trade(_DECL_BASE): def __init__(self, **kwargs): super().__init__(**kwargs) - self.open_trade_price = self._calc_open_trade_price() + self.recalc_open_trade_price() def __repr__(self): open_since = self.open_date.strftime('%Y-%m-%d %H:%M:%S') if self.is_open else 'closed' @@ -310,7 +310,7 @@ class Trade(_DECL_BASE): # Update open rate and actual amount self.open_rate = Decimal(order['price']) self.amount = Decimal(order['amount']) - self.open_trade_price = self._calc_open_trade_price() + self.recalc_open_trade_price() logger.info('%s_BUY has been fulfilled for %s.', order_type.upper(), self) self.open_order_id = None elif order_type in ('market', 'limit') and order['side'] == 'sell': @@ -351,6 +351,13 @@ class Trade(_DECL_BASE): fees = buy_trade * Decimal(self.fee_open) return float(buy_trade + fees) + def recalc_open_trade_price(self) -> None: + """ + Recalculate open_trade_price. + Must be called whenever open_rate or fee_open is changed. + """ + self.open_trade_price - self._calc_open_trade_price() + def calc_close_trade_price(self, rate: Optional[float] = None, fee: Optional[float] = None) -> float: """ @@ -378,12 +385,11 @@ class Trade(_DECL_BASE): If rate is not set self.close_rate will be used :return: profit in stake currency as float """ - open_trade_price = self._calc_open_trade_price() close_trade_price = self.calc_close_trade_price( rate=(rate or self.close_rate), fee=(fee or self.fee_close) ) - profit = close_trade_price - open_trade_price + profit = close_trade_price - self.open_trade_price return float(f"{profit:.8f}") def calc_profit_percent(self, rate: Optional[float] = None, @@ -395,12 +401,11 @@ class Trade(_DECL_BASE): :param fee: fee to use on the close rate (optional). :return: profit in percentage as float """ - open_trade_price = self._calc_open_trade_price() close_trade_price = self.calc_close_trade_price( rate=(rate or self.close_rate), fee=(fee or self.fee_close) ) - profit_percent = (close_trade_price / open_trade_price) - 1 + profit_percent = (close_trade_price / self.open_trade_price) - 1 return float(f"{profit_percent:.8f}") @staticmethod diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 2cb79de98..06df73cf9 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -498,7 +498,7 @@ def test_migrate_old(mocker, default_conf, fee): assert trade.max_rate == 0.0 assert trade.stop_loss == 0.0 assert trade.initial_stop_loss == 0.0 - assert trade.open_trade_price == 0.26758131848350003 + assert trade.open_trade_price == trade._calc_open_trade_price() def test_migrate_new(mocker, default_conf, fee, caplog): @@ -581,7 +581,7 @@ def test_migrate_new(mocker, default_conf, fee, caplog): assert log_has("trying trades_bak1", caplog) assert log_has("trying trades_bak2", caplog) assert log_has("Running database migration - backup available as trades_bak2", caplog) - assert trade.open_trade_price == 0.26758131848350003 + assert trade.open_trade_price == trade._calc_open_trade_price() def test_migrate_mid_state(mocker, default_conf, fee, caplog): From 362a40db6f89be6bd0fafb77f5f51b6f55345c45 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 07:09:56 +0100 Subject: [PATCH 1218/3421] Update docstring --- freqtrade/persistence.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 354f713bc..21e1b82ce 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -342,9 +342,7 @@ class Trade(_DECL_BASE): def _calc_open_trade_price(self) -> float: """ - Calculate the open_rate including fee. - :param fee: fee to use on the open rate (optional). - If rate is not set self.fee will be used + Calculate the open_rate including open_fee. :return: Price in of the open trade incl. Fees """ buy_trade = (Decimal(self.amount) * Decimal(self.open_rate)) From cbd10309f514862c7bb87eab81be845b7214c134 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 07:13:08 +0100 Subject: [PATCH 1219/3421] Add mid-state test --- tests/test_persistence.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 06df73cf9..0bde2f673 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -641,6 +641,7 @@ def test_migrate_mid_state(mocker, default_conf, fee, caplog): assert trade.max_rate == 0.0 assert trade.stop_loss == 0.0 assert trade.initial_stop_loss == 0.0 + assert trade.open_trade_price == trade._calc_open_trade_price() assert log_has("trying trades_bak0", caplog) assert log_has("Running database migration - backup available as trades_bak0", caplog) From 539b5627fdd67f0e245cce67a9b4428f94d8253f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 08:31:44 +0100 Subject: [PATCH 1220/3421] Fix typo --- freqtrade/persistence.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 21e1b82ce..61dee0414 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -354,7 +354,7 @@ class Trade(_DECL_BASE): Recalculate open_trade_price. Must be called whenever open_rate or fee_open is changed. """ - self.open_trade_price - self._calc_open_trade_price() + self.open_trade_price = self._calc_open_trade_price() def calc_close_trade_price(self, rate: Optional[float] = None, fee: Optional[float] = None) -> float: From a2964afd42c4ccf84ff315e140e0064efd62d6a7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 08:53:30 +0100 Subject: [PATCH 1221/3421] Rename profit_percent to profit_ratio to be consistent --- freqtrade/data/btanalysis.py | 2 +- freqtrade/freqtradebot.py | 2 +- freqtrade/optimize/backtesting.py | 4 ++-- freqtrade/persistence.py | 21 +++++++++++---------- freqtrade/rpc/rpc.py | 8 ++++---- freqtrade/strategy/interface.py | 6 +++--- tests/rpc/test_rpc_apiserver.py | 4 ++-- tests/test_freqtradebot.py | 3 ++- tests/test_persistence.py | 12 ++++++------ 9 files changed, 32 insertions(+), 30 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 379c80060..2fc931a9b 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -108,7 +108,7 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: trades = pd.DataFrame([(t.pair, t.open_date.replace(tzinfo=timezone.utc), t.close_date.replace(tzinfo=timezone.utc) if t.close_date else None, - t.calc_profit(), t.calc_profit_percent(), + t.calc_profit(), t.calc_profit_ratio(), t.open_rate, t.close_rate, t.amount, (round((t.close_date.timestamp() - t.open_date.timestamp()) / 60, 2) if t.close_date else None), diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a7ca67dcf..8ae027fa2 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -950,7 +950,7 @@ class FreqtradeBot: profit_trade = trade.calc_profit(rate=profit_rate) # Use cached ticker here - it was updated seconds ago. current_rate = self.get_sell_rate(trade.pair, False) - profit_percent = trade.calc_profit_percent(profit_rate) + profit_percent = trade.calc_profit_ratio(profit_rate) gain = "profit" if profit_percent > 0 else "loss" msg = { diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 064a2f6ba..fc60bd310 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -329,7 +329,7 @@ class Backtesting: closerate = self._get_close_rate(sell_row, trade, sell, trade_dur) return BacktestResult(pair=pair, - profit_percent=trade.calc_profit_percent(rate=closerate), + profit_percent=trade.calc_profit_ratio(rate=closerate), profit_abs=trade.calc_profit(rate=closerate), open_time=buy_row.date, close_time=sell_row.date, @@ -345,7 +345,7 @@ class Backtesting: # no sell condition found - trade stil open at end of backtest period sell_row = partial_ticker[-1] bt_res = BacktestResult(pair=pair, - profit_percent=trade.calc_profit_percent(rate=sell_row.open), + profit_percent=trade.calc_profit_ratio(rate=sell_row.open), profit_abs=trade.calc_profit(rate=sell_row.open), open_time=buy_row.date, close_time=sell_row.date, diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 61dee0414..10896baaa 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -185,6 +185,7 @@ class Trade(_DECL_BASE): fee_close = Column(Float, nullable=False, default=0.0) open_rate = Column(Float) open_rate_requested = Column(Float) + # open_trade_price - calcuated via _calc_open_trade_price open_trade_price = Column(Float) close_rate = Column(Float) close_rate_requested = Column(Float) @@ -331,7 +332,7 @@ class Trade(_DECL_BASE): and marks trade as closed """ self.close_rate = Decimal(rate) - self.close_profit = self.calc_profit_percent() + self.close_profit = self.calc_profit_ratio() self.close_date = datetime.utcnow() self.is_open = False self.open_order_id = None @@ -361,9 +362,9 @@ class Trade(_DECL_BASE): """ Calculate the close_rate including fee :param fee: fee to use on the close rate (optional). - If rate is not set self.fee will be used + If rate is not set self.fee will be used :param rate: rate to compare with (optional). - If rate is not set self.close_rate will be used + If rate is not set self.close_rate will be used :return: Price in BTC of the open trade """ if rate is None and not self.close_rate: @@ -378,9 +379,9 @@ class Trade(_DECL_BASE): """ Calculate the absolute profit in stake currency between Close and Open trade :param fee: fee to use on the close rate (optional). - If rate is not set self.fee will be used + If rate is not set self.fee will be used :param rate: close rate to compare with (optional). - If rate is not set self.close_rate will be used + If rate is not set self.close_rate will be used :return: profit in stake currency as float """ close_trade_price = self.calc_close_trade_price( @@ -390,14 +391,14 @@ class Trade(_DECL_BASE): profit = close_trade_price - self.open_trade_price return float(f"{profit:.8f}") - def calc_profit_percent(self, rate: Optional[float] = None, - fee: Optional[float] = None) -> float: + def calc_profit_ratio(self, rate: Optional[float] = None, + fee: Optional[float] = None) -> float: """ - Calculates the profit in percentage (including fee). + Calculates the profit as ratio (including fee). :param rate: rate to compare with (optional). - If rate is not set self.close_rate will be used + If rate is not set self.close_rate will be used :param fee: fee to use on the close rate (optional). - :return: profit in percentage as float + :return: profit ratio as float """ close_trade_price = self.calc_close_trade_price( rate=(rate or self.close_rate), diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 84b72fe18..3b4b7570a 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -123,7 +123,7 @@ class RPC: current_rate = self._freqtrade.get_sell_rate(trade.pair, False) except DependencyException: current_rate = NAN - current_profit = trade.calc_profit_percent(current_rate) + current_profit = trade.calc_profit_ratio(current_rate) fmt_close_profit = (f'{round(trade.close_profit * 100, 2):.2f}%' if trade.close_profit else None) trade_dict = trade.to_json() @@ -151,7 +151,7 @@ class RPC: current_rate = self._freqtrade.get_sell_rate(trade.pair, False) except DependencyException: current_rate = NAN - trade_perc = (100 * trade.calc_profit_percent(current_rate)) + trade_perc = (100 * trade.calc_profit_ratio(current_rate)) trade_profit = trade.calc_profit(current_rate) profit_str = f'{trade_perc:.2f}%' if self._fiat_converter: @@ -240,7 +240,7 @@ class RPC: durations.append((trade.close_date - trade.open_date).total_seconds()) if not trade.is_open: - profit_percent = trade.calc_profit_percent() + profit_percent = trade.calc_profit_ratio() profit_closed_coin.append(trade.calc_profit()) profit_closed_perc.append(profit_percent) else: @@ -249,7 +249,7 @@ class RPC: current_rate = self._freqtrade.get_sell_rate(trade.pair, False) except DependencyException: current_rate = NAN - profit_percent = trade.calc_profit_percent(rate=current_rate) + profit_percent = trade.calc_profit_ratio(rate=current_rate) profit_all_coin.append( trade.calc_profit(rate=trade.close_rate or current_rate) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 2b3a6194f..985ff37de 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -296,7 +296,7 @@ class IStrategy(ABC): """ # Set current rate to low for backtesting sell current_rate = low or rate - current_profit = trade.calc_profit_percent(current_rate) + current_profit = trade.calc_profit_ratio(current_rate) trade.adjust_min_max_rates(high or current_rate) @@ -311,7 +311,7 @@ class IStrategy(ABC): # Set current rate to high for backtesting sell current_rate = high or rate - current_profit = trade.calc_profit_percent(current_rate) + current_profit = trade.calc_profit_ratio(current_rate) config_ask_strategy = self.config.get('ask_strategy', {}) if buy and config_ask_strategy.get('ignore_roi_if_buy_signal', False): @@ -360,7 +360,7 @@ class IStrategy(ABC): sl_offset = self.trailing_stop_positive_offset # Make sure current_profit is calculated using high for backtesting. - high_profit = current_profit if not high else trade.calc_profit_percent(high) + high_profit = current_profit if not high else trade.calc_profit_ratio(high) # Don't update stoploss if trailing_only_offset_is_reached is true. if not (self.trailing_only_offset_is_reached and high_profit < sl_offset): diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index ebb70bdf8..f1e3421c5 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -381,7 +381,7 @@ def test_api_performance(botclient, mocker, ticker, fee): close_rate=0.265441, ) - trade.close_profit = trade.calc_profit_percent() + trade.close_profit = trade.calc_profit_ratio() Trade.session.add(trade) trade = Trade( @@ -396,7 +396,7 @@ def test_api_performance(botclient, mocker, ticker, fee): fee_open=fee.return_value, close_rate=0.391 ) - trade.close_profit = trade.calc_profit_percent() + trade.close_profit = trade.calc_profit_ratio() Trade.session.add(trade) Trade.session.flush() diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 9dff73322..341bc021f 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1543,7 +1543,8 @@ def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> No assert log_has_re('Found open order for.*', caplog) -def test_update_trade_state_withorderdict(default_conf, trades_for_order, limit_buy_order, fee, mocker): +def test_update_trade_state_withorderdict(default_conf, trades_for_order, limit_buy_order, fee, + mocker): mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) # get_order should not be called!! mocker.patch('freqtrade.exchange.Exchange.get_order', MagicMock(side_effect=ValueError)) diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 0bde2f673..25ad8b6a7 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -226,7 +226,7 @@ def test_calc_open_close_trade_price(limit_buy_order, limit_sell_order, fee): assert trade.calc_profit() == 0.00006217 # Profit in percent - assert trade.calc_profit_percent() == 0.06201058 + assert trade.calc_profit_ratio() == 0.06201058 @pytest.mark.usefixtures("init_persistence") @@ -367,7 +367,7 @@ def test_calc_profit(limit_buy_order, limit_sell_order, fee): @pytest.mark.usefixtures("init_persistence") -def test_calc_profit_percent(limit_buy_order, limit_sell_order, fee): +def test_calc_profit_ratio(limit_buy_order, limit_sell_order, fee): trade = Trade( pair='ETH/BTC', stake_amount=0.001, @@ -381,17 +381,17 @@ def test_calc_profit_percent(limit_buy_order, limit_sell_order, fee): trade.update(limit_buy_order) # Buy @ 0.00001099 # Get percent of profit with a custom rate (Higher than open rate) - assert trade.calc_profit_percent(rate=0.00001234) == 0.11723875 + assert trade.calc_profit_ratio(rate=0.00001234) == 0.11723875 # Get percent of profit with a custom rate (Lower than open rate) - assert trade.calc_profit_percent(rate=0.00000123) == -0.88863828 + assert trade.calc_profit_ratio(rate=0.00000123) == -0.88863828 # Test when we apply a Sell order. Sell higher than open rate @ 0.00001173 trade.update(limit_sell_order) - assert trade.calc_profit_percent() == 0.06201058 + assert trade.calc_profit_ratio() == 0.06201058 # Test with a custom fee rate on the close trade - assert trade.calc_profit_percent(fee=0.003) == 0.06147824 + assert trade.calc_profit_ratio(fee=0.003) == 0.06147824 @pytest.mark.usefixtures("init_persistence") From 86de88ed480bfd16ec8c875b79c3d4298b0be849 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 09:36:26 +0100 Subject: [PATCH 1222/3421] Align usage of history import in test --- tests/data/test_history.py | 100 +++++++++++++++---------------------- 1 file changed, 40 insertions(+), 60 deletions(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index c304aa97d..708702ab2 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -12,16 +12,17 @@ from pandas import DataFrame from freqtrade import OperationalException from freqtrade.configuration import TimeRange -from freqtrade.data import history -from freqtrade.data.history import (_load_cached_data_for_updating, - _download_pair_history, +from freqtrade.data.history import (_download_pair_history, _download_trades_history, - convert_trades_to_ohlcv, + _load_cached_data_for_updating, + convert_trades_to_ohlcv, get_timeframe, + load_data, load_pair_history, load_tickerdata_file, pair_data_filename, pair_trades_filename, refresh_backtest_ohlcv_data, refresh_backtest_trades_data, - trim_tickerlist) + trim_dataframe, trim_tickerlist, + validate_backtest_data) from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import file_dump_json from freqtrade.strategy.default_strategy import DefaultStrategy @@ -64,7 +65,7 @@ def _clean_test_file(file: Path) -> None: def test_load_data_30min_ticker(mocker, caplog, default_conf, testdatadir) -> None: - ld = history.load_pair_history(pair='UNITTEST/BTC', timeframe='30m', datadir=testdatadir) + ld = load_pair_history(pair='UNITTEST/BTC', timeframe='30m', datadir=testdatadir) assert isinstance(ld, DataFrame) assert not log_has( 'Download history data for pair: "UNITTEST/BTC", timeframe: 30m ' @@ -73,7 +74,7 @@ def test_load_data_30min_ticker(mocker, caplog, default_conf, testdatadir) -> No def test_load_data_7min_ticker(mocker, caplog, default_conf, testdatadir) -> None: - ld = history.load_pair_history(pair='UNITTEST/BTC', timeframe='7m', datadir=testdatadir) + ld = load_pair_history(pair='UNITTEST/BTC', timeframe='7m', datadir=testdatadir) assert isinstance(ld, DataFrame) assert ld.empty assert log_has( @@ -86,7 +87,7 @@ def test_load_data_1min_ticker(ticker_history, mocker, caplog, testdatadir) -> N mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history) file = testdatadir / 'UNITTEST_BTC-1m.json' _backup_file(file, copy_file=True) - history.load_data(datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC']) + load_data(datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC']) assert file.is_file() assert not log_has( 'Download history data for pair: "UNITTEST/BTC", interval: 1m ' @@ -99,10 +100,9 @@ def test_load_data_startup_candles(mocker, caplog, default_conf, testdatadir) -> ltfmock = mocker.patch('freqtrade.data.history.load_tickerdata_file', MagicMock(return_value=None)) timerange = TimeRange('date', None, 1510639620, 0) - history.load_pair_history(pair='UNITTEST/BTC', timeframe='1m', - datadir=testdatadir, timerange=timerange, - startup_candles=20, - ) + load_pair_history(pair='UNITTEST/BTC', timeframe='1m', + datadir=testdatadir, timerange=timerange, + startup_candles=20,) assert ltfmock.call_count == 1 assert ltfmock.call_args_list[0][1]['timerange'] != timerange @@ -121,9 +121,7 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, _backup_file(file) # do not download a new pair if refresh_pairs isn't set - history.load_pair_history(datadir=testdatadir, - timeframe='1m', - pair='MEME/BTC') + load_pair_history(datadir=testdatadir, timeframe='1m', pair='MEME/BTC') assert not file.is_file() assert log_has( 'No history data for pair: "MEME/BTC", timeframe: 1m. ' @@ -131,22 +129,16 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, ) # download a new pair if refresh_pairs is set - history.load_pair_history(datadir=testdatadir, - timeframe='1m', - refresh_pairs=True, - exchange=exchange, - pair='MEME/BTC') + load_pair_history(datadir=testdatadir, timeframe='1m', + refresh_pairs=True, exchange=exchange, pair='MEME/BTC') assert file.is_file() assert log_has_re( 'Download history data for pair: "MEME/BTC", timeframe: 1m ' 'and store in .*', caplog ) with pytest.raises(OperationalException, match=r'Exchange needs to be initialized when.*'): - history.load_pair_history(datadir=testdatadir, - timeframe='1m', - refresh_pairs=True, - exchange=None, - pair='MEME/BTC') + load_pair_history(datadir=testdatadir, timeframe='1m', + refresh_pairs=True, exchange=None, pair='MEME/BTC') _clean_test_file(file) @@ -351,10 +343,8 @@ def test_load_partial_missing(testdatadir, caplog) -> None: # Make sure we start fresh - test missing data at start start = arrow.get('2018-01-01T00:00:00') end = arrow.get('2018-01-11T00:00:00') - tickerdata = history.load_data(testdatadir, '5m', ['UNITTEST/BTC'], - startup_candles=20, - timerange=TimeRange('date', 'date', - start.timestamp, end.timestamp)) + tickerdata = load_data(testdatadir, '5m', ['UNITTEST/BTC'], startup_candles=20, + timerange=TimeRange('date', 'date', start.timestamp, end.timestamp)) assert log_has( 'Using indicator startup period: 20 ...', caplog ) @@ -369,10 +359,8 @@ def test_load_partial_missing(testdatadir, caplog) -> None: caplog.clear() start = arrow.get('2018-01-10T00:00:00') end = arrow.get('2018-02-20T00:00:00') - tickerdata = history.load_data(datadir=testdatadir, timeframe='5m', - pairs=['UNITTEST/BTC'], - timerange=TimeRange('date', 'date', - start.timestamp, end.timestamp)) + tickerdata = load_data(datadir=testdatadir, timeframe='5m', pairs=['UNITTEST/BTC'], + timerange=TimeRange('date', 'date', start.timestamp, end.timestamp)) # timedifference in 5 minutes td = ((end - start).total_seconds() // 60 // 5) + 1 assert td != len(tickerdata['UNITTEST/BTC']) @@ -385,7 +373,7 @@ def test_load_partial_missing(testdatadir, caplog) -> None: def test_init(default_conf, mocker) -> None: exchange = get_patched_exchange(mocker, default_conf) - assert {} == history.load_data( + assert {} == load_data( datadir='', exchange=exchange, pairs=[], @@ -447,7 +435,7 @@ def test_trim_tickerlist(testdatadir) -> None: def test_trim_dataframe(testdatadir) -> None: - data = history.load_data( + data = load_data( datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC'] @@ -458,7 +446,7 @@ def test_trim_dataframe(testdatadir) -> None: # Remove first 30 minutes (1800 s) tr = TimeRange('date', None, min_date + 1800, 0) - data_modify = history.trim_dataframe(data_modify, tr) + data_modify = trim_dataframe(data_modify, tr) assert not data_modify.equals(data) assert len(data_modify) < len(data) assert len(data_modify) == len(data) - 30 @@ -468,7 +456,7 @@ def test_trim_dataframe(testdatadir) -> None: data_modify = data.copy() # Remove last 30 minutes (1800 s) tr = TimeRange(None, 'date', 0, max_date - 1800) - data_modify = history.trim_dataframe(data_modify, tr) + data_modify = trim_dataframe(data_modify, tr) assert not data_modify.equals(data) assert len(data_modify) < len(data) assert len(data_modify) == len(data) - 30 @@ -478,7 +466,7 @@ def test_trim_dataframe(testdatadir) -> None: data_modify = data.copy() # Remove first 25 and last 30 minutes (1800 s) tr = TimeRange('date', 'date', min_date + 1500, max_date - 1800) - data_modify = history.trim_dataframe(data_modify, tr) + data_modify = trim_dataframe(data_modify, tr) assert not data_modify.equals(data) assert len(data_modify) < len(data) assert len(data_modify) == len(data) - 55 @@ -515,13 +503,13 @@ def test_get_timeframe(default_conf, mocker, testdatadir) -> None: strategy = DefaultStrategy(default_conf) data = strategy.tickerdata_to_dataframe( - history.load_data( + load_data( datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC'] ) ) - min_date, max_date = history.get_timeframe(data) + min_date, max_date = get_timeframe(data) assert min_date.isoformat() == '2017-11-04T23:02:00+00:00' assert max_date.isoformat() == '2017-11-14T22:58:00+00:00' @@ -531,17 +519,17 @@ def test_validate_backtest_data_warn(default_conf, mocker, caplog, testdatadir) strategy = DefaultStrategy(default_conf) data = strategy.tickerdata_to_dataframe( - history.load_data( + load_data( datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC'], fill_up_missing=False ) ) - min_date, max_date = history.get_timeframe(data) + min_date, max_date = get_timeframe(data) caplog.clear() - assert history.validate_backtest_data(data['UNITTEST/BTC'], 'UNITTEST/BTC', - min_date, max_date, timeframe_to_minutes('1m')) + assert validate_backtest_data(data['UNITTEST/BTC'], 'UNITTEST/BTC', + min_date, max_date, timeframe_to_minutes('1m')) assert len(caplog.record_tuples) == 1 assert log_has( "UNITTEST/BTC has missing frames: expected 14396, got 13680, that's 716 missing values", @@ -554,7 +542,7 @@ def test_validate_backtest_data(default_conf, mocker, caplog, testdatadir) -> No timerange = TimeRange('index', 'index', 200, 250) data = strategy.tickerdata_to_dataframe( - history.load_data( + load_data( datadir=testdatadir, timeframe='5m', pairs=['UNITTEST/BTC'], @@ -562,10 +550,10 @@ def test_validate_backtest_data(default_conf, mocker, caplog, testdatadir) -> No ) ) - min_date, max_date = history.get_timeframe(data) + min_date, max_date = get_timeframe(data) caplog.clear() - assert not history.validate_backtest_data(data['UNITTEST/BTC'], 'UNITTEST/BTC', - min_date, max_date, timeframe_to_minutes('5m')) + assert not validate_backtest_data(data['UNITTEST/BTC'], 'UNITTEST/BTC', + min_date, max_date, timeframe_to_minutes('5m')) assert len(caplog.record_tuples) == 0 @@ -668,12 +656,8 @@ def test_convert_trades_to_ohlcv(mocker, default_conf, testdatadir, caplog): file1 = testdatadir / 'XRP_ETH-1m.json' file5 = testdatadir / 'XRP_ETH-5m.json' # Compare downloaded dataset with converted dataset - dfbak_1m = history.load_pair_history(datadir=testdatadir, - timeframe="1m", - pair=pair) - dfbak_5m = history.load_pair_history(datadir=testdatadir, - timeframe="5m", - pair=pair) + dfbak_1m = load_pair_history(datadir=testdatadir, timeframe="1m", pair=pair) + dfbak_5m = load_pair_history(datadir=testdatadir, timeframe="5m", pair=pair) _backup_file(file1, copy_file=True) _backup_file(file5) @@ -685,12 +669,8 @@ def test_convert_trades_to_ohlcv(mocker, default_conf, testdatadir, caplog): assert log_has("Deleting existing data for pair XRP/ETH, interval 1m.", caplog) # Load new data - df_1m = history.load_pair_history(datadir=testdatadir, - timeframe="1m", - pair=pair) - df_5m = history.load_pair_history(datadir=testdatadir, - timeframe="5m", - pair=pair) + df_1m = load_pair_history(datadir=testdatadir, timeframe="1m", pair=pair) + df_5m = load_pair_history(datadir=testdatadir, timeframe="5m", pair=pair) assert df_1m.equals(dfbak_1m) assert df_5m.equals(dfbak_5m) From e1c0c6af7dcf94fe7dc6a982059b6f1a6ccbd2de Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 10:51:49 +0100 Subject: [PATCH 1223/3421] fix random-seed to failing one --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f6a111944..40a6fd075 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -69,7 +69,7 @@ jobs: COVERALLS_SERVICE_NAME: travis-ci TRAVIS: "true" run: | - pytest --random-order --cov=freqtrade --cov-config=.coveragerc + pytest --random-order --cov=freqtrade --cov-config=.coveragerc --random-order-seed=834267 # Allow failure for coveralls # Fake travis environment to get coveralls working correctly export TRAVIS_PULL_REQUEST="https://github.com/${GITHUB_REPOSITORY}/pull/$(cat $GITHUB_EVENT_PATH | jq -r .number)" From 2e2f084f662e02eebc6cb083deb1dbeac145e840 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 11:07:59 +0100 Subject: [PATCH 1224/3421] Try to clear caplog ... --- .github/workflows/ci.yml | 2 +- tests/test_utils.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 40a6fd075..f6a111944 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -69,7 +69,7 @@ jobs: COVERALLS_SERVICE_NAME: travis-ci TRAVIS: "true" run: | - pytest --random-order --cov=freqtrade --cov-config=.coveragerc --random-order-seed=834267 + pytest --random-order --cov=freqtrade --cov-config=.coveragerc # Allow failure for coveralls # Fake travis environment to get coveralls working correctly export TRAVIS_PULL_REQUEST="https://github.com/${GITHUB_REPOSITORY}/pull/$(cat $GITHUB_EVENT_PATH | jq -r .number)" diff --git a/tests/test_utils.py b/tests/test_utils.py index feba1ed59..40ca9ac02 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -444,6 +444,9 @@ def test_create_datadir_failed(caplog): def test_create_datadir(caplog, mocker): + # Ensure that caplog is empty before starting ... + # Should prevent random failures. + caplog.clear() cud = mocker.patch("freqtrade.utils.create_userdata_dir", MagicMock()) csf = mocker.patch("freqtrade.utils.copy_sample_files", MagicMock()) args = [ From 8513a5e2d68721e896e4d3337f8be162847d8c86 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 11:35:39 +0100 Subject: [PATCH 1225/3421] Fix failures in test_main --- .github/workflows/ci.yml | 2 +- tests/test_main.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f6a111944..628f169c2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -139,7 +139,7 @@ jobs: - name: Tests run: | - pytest --random-order --cov=freqtrade --cov-config=.coveragerc + pytest --random-order --cov=freqtrade --cov-config=.coveragerc --random-order-seed=781055 - name: Backtesting run: | diff --git a/tests/test_main.py b/tests/test_main.py index 4e97c375d..03e6a7ce9 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -79,6 +79,7 @@ def test_main_keyboard_interrupt(mocker, default_conf, caplog) -> None: mocker.patch('freqtrade.worker.Worker._worker', MagicMock(side_effect=KeyboardInterrupt)) patched_configuration_load_config_file(mocker, default_conf) mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) + mocker.patch('freqtrade.wallets.Wallets.update', MagicMock()) mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock()) args = ['trade', '-c', 'config.json.example'] @@ -98,6 +99,7 @@ def test_main_operational_exception(mocker, default_conf, caplog) -> None: MagicMock(side_effect=OperationalException('Oh snap!')) ) patched_configuration_load_config_file(mocker, default_conf) + mocker.patch('freqtrade.wallets.Wallets.update', MagicMock()) mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock()) @@ -120,6 +122,7 @@ def test_main_reload_conf(mocker, default_conf, caplog) -> None: OperationalException("Oh snap!")]) mocker.patch('freqtrade.worker.Worker._worker', worker_mock) patched_configuration_load_config_file(mocker, default_conf) + mocker.patch('freqtrade.wallets.Wallets.update', MagicMock()) reconfigure_mock = mocker.patch('freqtrade.worker.Worker._reconfigure', MagicMock()) mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) @@ -143,6 +146,7 @@ def test_reconfigure(mocker, default_conf) -> None: 'freqtrade.worker.Worker._worker', MagicMock(side_effect=OperationalException('Oh snap!')) ) + mocker.patch('freqtrade.wallets.Wallets.update', MagicMock()) patched_configuration_load_config_file(mocker, default_conf) mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock()) From 60f89c8c019f6806b28b044e642f8cdab8c60cc9 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 17 Dec 2019 13:43:42 +0300 Subject: [PATCH 1226/3421] Split refresh from load_data/load_pair_history --- freqtrade/data/history.py | 86 ++++++++++++++++++++---------- freqtrade/edge/__init__.py | 12 ++++- tests/data/test_history.py | 28 +++++++--- tests/edge/test_edge.py | 7 ++- tests/optimize/test_backtesting.py | 4 +- 5 files changed, 97 insertions(+), 40 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 2c01f9f48..62195a005 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -128,39 +128,26 @@ def load_pair_history(pair: str, timeframe: str, datadir: Path, timerange: Optional[TimeRange] = None, - refresh_pairs: bool = False, - exchange: Optional[Exchange] = None, fill_up_missing: bool = True, drop_incomplete: bool = True, startup_candles: int = 0, ) -> DataFrame: """ - Loads cached ticker history for the given pair. + Load cached ticker history for the given pair. + :param pair: Pair to load data for :param timeframe: Ticker timeframe (e.g. "5m") :param datadir: Path to the data storage location. :param timerange: Limit data to be loaded to this timerange - :param refresh_pairs: Refresh pairs from exchange. - (Note: Requires exchange to be passed as well.) - :param exchange: Exchange object (needed when using "refresh_pairs") :param fill_up_missing: Fill missing values with "No action"-candles :param drop_incomplete: Drop last candle assuming it may be incomplete. :param startup_candles: Additional candles to load at the start of the period :return: DataFrame with ohlcv data, or empty DataFrame """ - timerange_startup = deepcopy(timerange) if startup_candles > 0 and timerange_startup: timerange_startup.subtract_start(timeframe_to_seconds(timeframe) * startup_candles) - # The user forced the refresh of pairs - if refresh_pairs: - _download_pair_history(datadir=datadir, - exchange=exchange, - pair=pair, - timeframe=timeframe, - timerange=timerange) - pairdata = load_tickerdata_file(datadir, pair, timeframe, timerange=timerange_startup) if pairdata: @@ -177,33 +164,53 @@ def load_pair_history(pair: str, return DataFrame() +def refresh_pair_history(pair: str, + timeframe: str, + datadir: Path, + exchange: Exchange, + timerange: Optional[TimeRange] = None, + startup_candles: int = 0, + ) -> None: + """ + Refresh cached ticker history for the given pair. + + :param pair: Pair to load data for + :param timeframe: Ticker timeframe (e.g. "5m") + :param datadir: Path to the data storage location. + :param timerange: Limit data to be loaded to this timerange + :param exchange: Exchange object + :param startup_candles: Additional candles to load at the start of the period + """ + timerange_startup = deepcopy(timerange) + if startup_candles > 0 and timerange_startup: + timerange_startup.subtract_start(timeframe_to_seconds(timeframe) * startup_candles) + + _download_pair_history(datadir=datadir, + exchange=exchange, + pair=pair, + timeframe=timeframe, + timerange=timerange) + + def load_data(datadir: Path, timeframe: str, pairs: List[str], - refresh_pairs: bool = False, - exchange: Optional[Exchange] = None, timerange: Optional[TimeRange] = None, fill_up_missing: bool = True, startup_candles: int = 0, fail_without_data: bool = False ) -> Dict[str, DataFrame]: """ - Loads ticker history data for a list of pairs + Load ticker history data for a list of pairs. + :param datadir: Path to the data storage location. :param timeframe: Ticker Timeframe (e.g. "5m") :param pairs: List of pairs to load - :param refresh_pairs: Refresh pairs from exchange. - (Note: Requires exchange to be passed as well.) - :param exchange: Exchange object (needed when using "refresh_pairs") :param timerange: Limit data to be loaded to this timerange :param fill_up_missing: Fill missing values with "No action"-candles :param startup_candles: Additional candles to load at the start of the period :param fail_without_data: Raise OperationalException if no data is found. :return: dict(:) - TODO: refresh_pairs is still used by edge to keep the data uptodate. - This should be replaced in the future. Instead, writing the current candles to disk - from dataprovider should be implemented, as this would avoid loading ohlcv data twice. - exchange and refresh_pairs are then not needed here nor in load_pair_history. """ result: Dict[str, DataFrame] = {} if startup_candles > 0 and timerange: @@ -212,8 +219,6 @@ def load_data(datadir: Path, for pair in pairs: hist = load_pair_history(pair=pair, timeframe=timeframe, datadir=datadir, timerange=timerange, - refresh_pairs=refresh_pairs, - exchange=exchange, fill_up_missing=fill_up_missing, startup_candles=startup_candles) if not hist.empty: @@ -224,6 +229,33 @@ def load_data(datadir: Path, return result +def refresh_data(datadir: Path, + timeframe: str, + pairs: List[str], + exchange: Exchange, + timerange: Optional[TimeRange] = None, + startup_candles: int = 0, + ) -> None: + """ + Refresh ticker history data for a list of pairs. + + :param datadir: Path to the data storage location. + :param timeframe: Ticker Timeframe (e.g. "5m") + :param pairs: List of pairs to load + :param exchange: Exchange object + :param timerange: Limit data to be loaded to this timerange + :param startup_candles: Additional candles to load at the start of the period + """ + if startup_candles > 0 and timerange: + logger.info(f'Using indicator startup period: {startup_candles} ...') + + for pair in pairs: + refresh_pair_history(pair=pair, timeframe=timeframe, + datadir=datadir, timerange=timerange, + exchange=exchange, + startup_candles=startup_candles) + + def pair_data_filename(datadir: Path, pair: str, timeframe: str) -> Path: pair_s = pair.replace("/", "_") filename = datadir.joinpath(f'{pair_s}-{timeframe}.json') diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index 4bc3023a4..b52b2ffdc 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -94,12 +94,20 @@ class Edge: logger.info('Using stake_currency: %s ...', self.config['stake_currency']) logger.info('Using local backtesting data (using whitelist in given config) ...') + if self._refresh_pairs: + history.refresh_data( + datadir=Path(self.config['datadir']), + pairs=pairs, + exchange=self.exchange, + timeframe=self.strategy.ticker_interval, + timerange=self._timerange, + startup_candles=self.strategy.startup_candle_count, + ) + data = history.load_data( datadir=Path(self.config['datadir']), pairs=pairs, timeframe=self.strategy.ticker_interval, - refresh_pairs=self._refresh_pairs, - exchange=self.exchange, timerange=self._timerange, startup_candles=self.strategy.startup_candle_count, ) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 708702ab2..1b7c2c4a4 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -21,6 +21,7 @@ from freqtrade.data.history import (_download_pair_history, pair_trades_filename, refresh_backtest_ohlcv_data, refresh_backtest_trades_data, + refresh_data, refresh_pair_history, trim_dataframe, trim_tickerlist, validate_backtest_data) from freqtrade.exchange import timeframe_to_minutes @@ -129,16 +130,17 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, ) # download a new pair if refresh_pairs is set - load_pair_history(datadir=testdatadir, timeframe='1m', - refresh_pairs=True, exchange=exchange, pair='MEME/BTC') + refresh_pair_history(datadir=testdatadir, timeframe='1m', pair='MEME/BTC', + exchange=exchange) + load_pair_history(datadir=testdatadir, timeframe='1m', pair='MEME/BTC') assert file.is_file() assert log_has_re( 'Download history data for pair: "MEME/BTC", timeframe: 1m ' 'and store in .*', caplog ) with pytest.raises(OperationalException, match=r'Exchange needs to be initialized when.*'): - load_pair_history(datadir=testdatadir, timeframe='1m', - refresh_pairs=True, exchange=None, pair='MEME/BTC') + refresh_pair_history(datadir=testdatadir, timeframe='1m', pair='MEME/BTC', + exchange=None) _clean_test_file(file) @@ -372,12 +374,24 @@ def test_load_partial_missing(testdatadir, caplog) -> None: def test_init(default_conf, mocker) -> None: - exchange = get_patched_exchange(mocker, default_conf) assert {} == load_data( datadir='', - exchange=exchange, pairs=[], - refresh_pairs=True, + timeframe=default_conf['ticker_interval'] + ) + + +def test_init_with_refresh(default_conf, mocker) -> None: + exchange = get_patched_exchange(mocker, default_conf) + refresh_data( + datadir='', + pairs=[], + timeframe=default_conf['ticker_interval'], + exchange=exchange + ) + assert {} == load_data( + datadir='', + pairs=[], timeframe=default_conf['ticker_interval'] ) diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index bdb986d6d..3a866c0a8 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -255,8 +255,8 @@ def test_edge_heartbeat_calculate(mocker, edge_conf): assert edge.calculate() is False -def mocked_load_data(datadir, pairs=[], timeframe='0m', refresh_pairs=False, - timerange=None, exchange=None, *args, **kwargs): +def mocked_load_data(datadir, pairs=[], timeframe='0m', + timerange=None, *args, **kwargs): hz = 0.1 base = 0.001 @@ -290,6 +290,7 @@ def mocked_load_data(datadir, pairs=[], timeframe='0m', refresh_pairs=False, def test_edge_process_downloaded_data(mocker, edge_conf): freqtrade = get_patched_freqtradebot(mocker, edge_conf) mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.001)) + mocker.patch('freqtrade.data.history.refresh_data', MagicMock()) mocker.patch('freqtrade.data.history.load_data', mocked_load_data) edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) @@ -301,6 +302,7 @@ def test_edge_process_downloaded_data(mocker, edge_conf): def test_edge_process_no_data(mocker, edge_conf, caplog): freqtrade = get_patched_freqtradebot(mocker, edge_conf) mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.001)) + mocker.patch('freqtrade.data.history.refresh_data', MagicMock()) mocker.patch('freqtrade.data.history.load_data', MagicMock(return_value={})) edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) @@ -313,6 +315,7 @@ def test_edge_process_no_data(mocker, edge_conf, caplog): def test_edge_process_no_trades(mocker, edge_conf, caplog): freqtrade = get_patched_freqtradebot(mocker, edge_conf) mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.001)) + mocker.patch('freqtrade.data.history.refresh_data', MagicMock()) mocker.patch('freqtrade.data.history.load_data', mocked_load_data) # Return empty mocker.patch('freqtrade.edge.Edge._find_trades_for_stoploss_range', MagicMock(return_value=[])) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 5086891a6..38a95be7a 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -116,8 +116,8 @@ def simple_backtest(config, contour, num_results, mocker, testdatadir) -> None: assert len(results) == num_results -def mocked_load_data(datadir, pairs=[], timeframe='0m', refresh_pairs=False, - timerange=None, exchange=None, live=False, *args, **kwargs): +def mocked_load_data(datadir, pairs=[], timeframe='0m', + timerange=None, *args, **kwargs): tickerdata = history.load_tickerdata_file(datadir, 'UNITTEST/BTC', '1m', timerange=timerange) pairdata = {'UNITTEST/BTC': parse_ticker_dataframe(tickerdata, '1m', pair="UNITTEST/BTC", fill_missing=True)} From bbb05b52862dbd04d169a6df010683207545b92b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 11:51:50 +0100 Subject: [PATCH 1227/3421] Remove fixed random order --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 628f169c2..f6a111944 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -139,7 +139,7 @@ jobs: - name: Tests run: | - pytest --random-order --cov=freqtrade --cov-config=.coveragerc --random-order-seed=781055 + pytest --random-order --cov=freqtrade --cov-config=.coveragerc - name: Backtesting run: | From b2796f99b6c9be25af7a86cf67a2740641879cdd Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 17 Dec 2019 14:06:21 +0300 Subject: [PATCH 1228/3421] Remove redundant refresh_pair_history --- freqtrade/data/history.py | 35 +++-------------------------------- tests/data/test_history.py | 10 +++++----- 2 files changed, 8 insertions(+), 37 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 62195a005..3b16e41a9 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -164,34 +164,6 @@ def load_pair_history(pair: str, return DataFrame() -def refresh_pair_history(pair: str, - timeframe: str, - datadir: Path, - exchange: Exchange, - timerange: Optional[TimeRange] = None, - startup_candles: int = 0, - ) -> None: - """ - Refresh cached ticker history for the given pair. - - :param pair: Pair to load data for - :param timeframe: Ticker timeframe (e.g. "5m") - :param datadir: Path to the data storage location. - :param timerange: Limit data to be loaded to this timerange - :param exchange: Exchange object - :param startup_candles: Additional candles to load at the start of the period - """ - timerange_startup = deepcopy(timerange) - if startup_candles > 0 and timerange_startup: - timerange_startup.subtract_start(timeframe_to_seconds(timeframe) * startup_candles) - - _download_pair_history(datadir=datadir, - exchange=exchange, - pair=pair, - timeframe=timeframe, - timerange=timerange) - - def load_data(datadir: Path, timeframe: str, pairs: List[str], @@ -250,10 +222,9 @@ def refresh_data(datadir: Path, logger.info(f'Using indicator startup period: {startup_candles} ...') for pair in pairs: - refresh_pair_history(pair=pair, timeframe=timeframe, - datadir=datadir, timerange=timerange, - exchange=exchange, - startup_candles=startup_candles) + _download_pair_history(pair=pair, timeframe=timeframe, + datadir=datadir, timerange=timerange, + exchange=exchange) def pair_data_filename(datadir: Path, pair: str, timeframe: str) -> Path: diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 1b7c2c4a4..c9b198b39 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -21,7 +21,7 @@ from freqtrade.data.history import (_download_pair_history, pair_trades_filename, refresh_backtest_ohlcv_data, refresh_backtest_trades_data, - refresh_data, refresh_pair_history, + refresh_data, trim_dataframe, trim_tickerlist, validate_backtest_data) from freqtrade.exchange import timeframe_to_minutes @@ -130,8 +130,8 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, ) # download a new pair if refresh_pairs is set - refresh_pair_history(datadir=testdatadir, timeframe='1m', pair='MEME/BTC', - exchange=exchange) + refresh_data(datadir=testdatadir, timeframe='1m', pairs=['MEME/BTC'], + exchange=exchange) load_pair_history(datadir=testdatadir, timeframe='1m', pair='MEME/BTC') assert file.is_file() assert log_has_re( @@ -139,8 +139,8 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, 'and store in .*', caplog ) with pytest.raises(OperationalException, match=r'Exchange needs to be initialized when.*'): - refresh_pair_history(datadir=testdatadir, timeframe='1m', pair='MEME/BTC', - exchange=None) + refresh_data(datadir=testdatadir, timeframe='1m', pairs=['MEME/BTC'], + exchange=None) _clean_test_file(file) From 153738961773fbe307aa557fa2ea257c9fe6ad10 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 17 Dec 2019 18:23:31 +0300 Subject: [PATCH 1229/3421] Remove startup_candles argument in refresh_data --- freqtrade/data/history.py | 5 ----- freqtrade/edge/__init__.py | 1 - 2 files changed, 6 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 3b16e41a9..64f530b53 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -206,7 +206,6 @@ def refresh_data(datadir: Path, pairs: List[str], exchange: Exchange, timerange: Optional[TimeRange] = None, - startup_candles: int = 0, ) -> None: """ Refresh ticker history data for a list of pairs. @@ -216,11 +215,7 @@ def refresh_data(datadir: Path, :param pairs: List of pairs to load :param exchange: Exchange object :param timerange: Limit data to be loaded to this timerange - :param startup_candles: Additional candles to load at the start of the period """ - if startup_candles > 0 and timerange: - logger.info(f'Using indicator startup period: {startup_candles} ...') - for pair in pairs: _download_pair_history(pair=pair, timeframe=timeframe, datadir=datadir, timerange=timerange, diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index b52b2ffdc..85029905b 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -101,7 +101,6 @@ class Edge: exchange=self.exchange, timeframe=self.strategy.ticker_interval, timerange=self._timerange, - startup_candles=self.strategy.startup_candle_count, ) data = history.load_data( From c5e6a34f25081498908ef0f44fc7366cf59374f8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Dec 2019 19:30:04 +0100 Subject: [PATCH 1230/3421] Remove unnecessary parenteses --- freqtrade/persistence.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 10896baaa..993b68bc7 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -346,7 +346,7 @@ class Trade(_DECL_BASE): Calculate the open_rate including open_fee. :return: Price in of the open trade incl. Fees """ - buy_trade = (Decimal(self.amount) * Decimal(self.open_rate)) + buy_trade = Decimal(self.amount) * Decimal(self.open_rate) fees = buy_trade * Decimal(self.fee_open) return float(buy_trade + fees) @@ -370,7 +370,7 @@ class Trade(_DECL_BASE): if rate is None and not self.close_rate: return 0.0 - sell_trade = (Decimal(self.amount) * Decimal(rate or self.close_rate)) + sell_trade = Decimal(self.amount) * Decimal(rate or self.close_rate) fees = sell_trade * Decimal(fee or self.fee_close) return float(sell_trade - fees) From cf4c3642ce1ea09c758b16a8774cabcea0674ec0 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 18 Dec 2019 01:06:03 +0300 Subject: [PATCH 1231/3421] Minor improvements in data.history --- freqtrade/data/history.py | 20 ++++++++------------ freqtrade/edge/__init__.py | 2 +- freqtrade/optimize/backtesting.py | 4 ++-- freqtrade/optimize/hyperopt.py | 6 +++--- tests/data/test_converter.py | 4 ++-- tests/data/test_history.py | 15 +++++---------- tests/optimize/test_backtest_detail.py | 4 ++-- tests/optimize/test_backtesting.py | 20 ++++++++++---------- tests/optimize/test_hyperopt.py | 22 +++++++++++----------- 9 files changed, 44 insertions(+), 53 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 64f530b53..4c5c0521f 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -68,7 +68,7 @@ def trim_dataframe(df: DataFrame, timerange: TimeRange, df_date_col: str = 'date def load_tickerdata_file(datadir: Path, pair: str, timeframe: str, - timerange: Optional[TimeRange] = None) -> Optional[list]: + timerange: Optional[TimeRange] = None) -> List[Dict]: """ Load a pair from file, either .json.gz or .json :return: tickerlist or None if unsuccessful @@ -276,7 +276,7 @@ def _load_cached_data_for_updating(datadir: Path, pair: str, timeframe: str, def _download_pair_history(datadir: Path, - exchange: Optional[Exchange], + exchange: Exchange, pair: str, timeframe: str = '5m', timerange: Optional[TimeRange] = None) -> bool: @@ -293,11 +293,6 @@ def _download_pair_history(datadir: Path, :param timerange: range of time to download :return: bool with success state """ - if not exchange: - raise OperationalException( - "Exchange needs to be initialized when downloading pair history data" - ) - try: logger.info( f'Download history data for pair: "{pair}", timeframe: {timeframe} ' @@ -447,18 +442,19 @@ def convert_trades_to_ohlcv(pairs: List[str], timeframes: List[str], store_tickerdata_file(datadir, pair, timeframe, data=ohlcv) -def get_timeframe(data: Dict[str, DataFrame]) -> Tuple[arrow.Arrow, arrow.Arrow]: +def get_timerange(data: Dict[str, DataFrame]) -> Tuple[arrow.Arrow, arrow.Arrow]: """ - Get the maximum timeframe for the given backtest data + Get the maximum common timerange for the given backtest data. + :param data: dictionary with preprocessed backtesting data :return: tuple containing min_date, max_date """ - timeframe = [ + timeranges = [ (arrow.get(frame['date'].min()), arrow.get(frame['date'].max())) for frame in data.values() ] - return min(timeframe, key=operator.itemgetter(0))[0], \ - max(timeframe, key=operator.itemgetter(1))[1] + return (min(timeranges, key=operator.itemgetter(0))[0], + max(timeranges, key=operator.itemgetter(1))[1]) def validate_backtest_data(data: DataFrame, pair: str, min_date: datetime, diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index 85029905b..e56071a98 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -120,7 +120,7 @@ class Edge: preprocessed = self.strategy.tickerdata_to_dataframe(data) # Print timeframe - min_date, max_date = history.get_timeframe(preprocessed) + min_date, max_date = history.get_timerange(preprocessed) logger.info( 'Measuring data from %s up to %s (%s days) ...', min_date.isoformat(), diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index fc60bd310..726257cdd 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -117,7 +117,7 @@ class Backtesting: fail_without_data=True, ) - min_date, max_date = history.get_timeframe(data) + min_date, max_date = history.get_timerange(data) logger.info( 'Loading data from %s up to %s (%s days)..', @@ -481,7 +481,7 @@ class Backtesting: # Trim startup period from analyzed dataframe for pair, df in preprocessed.items(): preprocessed[pair] = history.trim_dataframe(df, timerange) - min_date, max_date = history.get_timeframe(preprocessed) + min_date, max_date = history.get_timerange(preprocessed) logger.info( 'Backtesting with data from %s up to %s (%s days)..', diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index cdde2b722..521a4d790 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -23,7 +23,7 @@ from joblib import (Parallel, cpu_count, delayed, dump, load, from pandas import DataFrame from freqtrade import OperationalException -from freqtrade.data.history import get_timeframe, trim_dataframe +from freqtrade.data.history import get_timerange, trim_dataframe from freqtrade.misc import plural, round_dict from freqtrade.optimize.backtesting import Backtesting # Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules @@ -369,7 +369,7 @@ class Hyperopt: processed = load(self.tickerdata_pickle) - min_date, max_date = get_timeframe(processed) + min_date, max_date = get_timerange(processed) backtesting_results = self.backtesting.backtest( { @@ -490,7 +490,7 @@ class Hyperopt: # Trim startup period from analyzed dataframe for pair, df in preprocessed.items(): preprocessed[pair] = trim_dataframe(df, timerange) - min_date, max_date = get_timeframe(data) + min_date, max_date = get_timerange(data) logger.info( 'Hyperopting with data from %s up to %s (%s days)..', diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index 8184167b3..414551c95 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -2,7 +2,7 @@ import logging from freqtrade.data.converter import parse_ticker_dataframe, ohlcv_fill_up_missing_data -from freqtrade.data.history import load_pair_history, validate_backtest_data, get_timeframe +from freqtrade.data.history import load_pair_history, validate_backtest_data, get_timerange from tests.conftest import log_has @@ -36,7 +36,7 @@ def test_ohlcv_fill_up_missing_data(testdatadir, caplog): f"{len(data)} - after: {len(data2)}", caplog) # Test fillup actually fixes invalid backtest data - min_date, max_date = get_timeframe({'UNITTEST/BTC': data}) + min_date, max_date = get_timerange({'UNITTEST/BTC': data}) assert validate_backtest_data(data, 'UNITTEST/BTC', min_date, max_date, 1) assert not validate_backtest_data(data2, 'UNITTEST/BTC', min_date, max_date, 1) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index c9b198b39..7b3143db9 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -7,15 +7,13 @@ from shutil import copyfile from unittest.mock import MagicMock, PropertyMock import arrow -import pytest from pandas import DataFrame -from freqtrade import OperationalException from freqtrade.configuration import TimeRange from freqtrade.data.history import (_download_pair_history, _download_trades_history, _load_cached_data_for_updating, - convert_trades_to_ohlcv, get_timeframe, + convert_trades_to_ohlcv, get_timerange, load_data, load_pair_history, load_tickerdata_file, pair_data_filename, pair_trades_filename, @@ -138,9 +136,6 @@ def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, 'Download history data for pair: "MEME/BTC", timeframe: 1m ' 'and store in .*', caplog ) - with pytest.raises(OperationalException, match=r'Exchange needs to be initialized when.*'): - refresh_data(datadir=testdatadir, timeframe='1m', pairs=['MEME/BTC'], - exchange=None) _clean_test_file(file) @@ -512,7 +507,7 @@ def test_file_dump_json_tofile(testdatadir) -> None: _clean_test_file(file) -def test_get_timeframe(default_conf, mocker, testdatadir) -> None: +def test_get_timerange(default_conf, mocker, testdatadir) -> None: patch_exchange(mocker) strategy = DefaultStrategy(default_conf) @@ -523,7 +518,7 @@ def test_get_timeframe(default_conf, mocker, testdatadir) -> None: pairs=['UNITTEST/BTC'] ) ) - min_date, max_date = get_timeframe(data) + min_date, max_date = get_timerange(data) assert min_date.isoformat() == '2017-11-04T23:02:00+00:00' assert max_date.isoformat() == '2017-11-14T22:58:00+00:00' @@ -540,7 +535,7 @@ def test_validate_backtest_data_warn(default_conf, mocker, caplog, testdatadir) fill_up_missing=False ) ) - min_date, max_date = get_timeframe(data) + min_date, max_date = get_timerange(data) caplog.clear() assert validate_backtest_data(data['UNITTEST/BTC'], 'UNITTEST/BTC', min_date, max_date, timeframe_to_minutes('1m')) @@ -564,7 +559,7 @@ def test_validate_backtest_data(default_conf, mocker, caplog, testdatadir) -> No ) ) - min_date, max_date = get_timeframe(data) + min_date, max_date = get_timerange(data) caplog.clear() assert not validate_backtest_data(data['UNITTEST/BTC'], 'UNITTEST/BTC', min_date, max_date, timeframe_to_minutes('5m')) diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py index b36c1b9c5..47cb9f353 100644 --- a/tests/optimize/test_backtest_detail.py +++ b/tests/optimize/test_backtest_detail.py @@ -4,7 +4,7 @@ from unittest.mock import MagicMock import pytest -from freqtrade.data.history import get_timeframe +from freqtrade.data.history import get_timerange from freqtrade.optimize.backtesting import Backtesting from freqtrade.strategy.interface import SellType from tests.conftest import patch_exchange @@ -380,7 +380,7 @@ def test_backtest_results(default_conf, fee, mocker, caplog, data) -> None: pair = "UNITTEST/BTC" # Dummy data as we mock the analyze functions data_processed = {pair: frame.copy()} - min_date, max_date = get_timeframe({pair: frame}) + min_date, max_date = get_timerange({pair: frame}) results = backtesting.backtest( { 'stake_amount': default_conf['stake_amount'], diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 38a95be7a..0ea35e41f 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -16,7 +16,7 @@ from freqtrade.data import history from freqtrade.data.btanalysis import evaluate_result_multi from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.dataprovider import DataProvider -from freqtrade.data.history import get_timeframe +from freqtrade.data.history import get_timerange from freqtrade.optimize import setup_configuration, start_backtesting from freqtrade.optimize.backtesting import Backtesting from freqtrade.state import RunMode @@ -100,7 +100,7 @@ def simple_backtest(config, contour, num_results, mocker, testdatadir) -> None: data = load_data_test(contour, testdatadir) processed = backtesting.strategy.tickerdata_to_dataframe(data) - min_date, max_date = get_timeframe(processed) + min_date, max_date = get_timerange(processed) assert isinstance(processed, dict) results = backtesting.backtest( { @@ -138,7 +138,7 @@ def _make_backtest_conf(mocker, datadir, conf=None, pair='UNITTEST/BTC', record= patch_exchange(mocker) backtesting = Backtesting(conf) processed = backtesting.strategy.tickerdata_to_dataframe(data) - min_date, max_date = get_timeframe(processed) + min_date, max_date = get_timerange(processed) return { 'stake_amount': conf['stake_amount'], 'processed': processed, @@ -458,11 +458,11 @@ def test_generate_text_table_strategyn(default_conf, mocker): def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: - def get_timeframe(input1): + def get_timerange(input1): return Arrow(2017, 11, 14, 21, 17), Arrow(2017, 11, 14, 22, 59) mocker.patch('freqtrade.data.history.load_data', mocked_load_data) - mocker.patch('freqtrade.data.history.get_timeframe', get_timeframe) + mocker.patch('freqtrade.data.history.get_timerange', get_timerange) mocker.patch('freqtrade.exchange.Exchange.refresh_latest_ohlcv', MagicMock()) patch_exchange(mocker) mocker.patch.multiple( @@ -491,11 +491,11 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> None: - def get_timeframe(input1): + def get_timerange(input1): return Arrow(2017, 11, 14, 21, 17), Arrow(2017, 11, 14, 22, 59) mocker.patch('freqtrade.data.history.load_pair_history', MagicMock(return_value=pd.DataFrame())) - mocker.patch('freqtrade.data.history.get_timeframe', get_timeframe) + mocker.patch('freqtrade.data.history.get_timerange', get_timerange) mocker.patch('freqtrade.exchange.Exchange.refresh_latest_ohlcv', MagicMock()) patch_exchange(mocker) mocker.patch.multiple( @@ -525,7 +525,7 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: data = history.load_data(datadir=testdatadir, timeframe='5m', pairs=['UNITTEST/BTC'], timerange=timerange) data_processed = backtesting.strategy.tickerdata_to_dataframe(data) - min_date, max_date = get_timeframe(data_processed) + min_date, max_date = get_timerange(data_processed) results = backtesting.backtest( { 'stake_amount': default_conf['stake_amount'], @@ -581,7 +581,7 @@ def test_backtest_1min_ticker_interval(default_conf, fee, mocker, testdatadir) - data = history.load_data(datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC'], timerange=timerange) processed = backtesting.strategy.tickerdata_to_dataframe(data) - min_date, max_date = get_timeframe(processed) + min_date, max_date = get_timerange(processed) results = backtesting.backtest( { 'stake_amount': default_conf['stake_amount'], @@ -701,7 +701,7 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) backtesting.strategy.advise_sell = _trend_alternate_hold # Override data_processed = backtesting.strategy.tickerdata_to_dataframe(data) - min_date, max_date = get_timeframe(data_processed) + min_date, max_date = get_timerange(data_processed) backtest_conf = { 'stake_amount': default_conf['stake_amount'], 'processed': data_processed, diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index c3afa4911..29b8b5b16 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -251,7 +251,7 @@ def test_start_no_data(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) mocker.patch('freqtrade.data.history.load_pair_history', MagicMock(return_value=pd.DataFrame)) mocker.patch( - 'freqtrade.optimize.hyperopt.get_timeframe', + 'freqtrade.optimize.hyperopt.get_timerange', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) ) @@ -427,7 +427,7 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( - 'freqtrade.optimize.hyperopt.get_timeframe', + 'freqtrade.optimize.hyperopt.get_timerange', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) ) @@ -602,7 +602,7 @@ def test_generate_optimizer(mocker, default_conf) -> None: MagicMock(return_value=backtest_result) ) mocker.patch( - 'freqtrade.optimize.hyperopt.get_timeframe', + 'freqtrade.optimize.hyperopt.get_timerange', MagicMock(return_value=(Arrow(2017, 12, 10), Arrow(2017, 12, 13))) ) patch_exchange(mocker) @@ -726,7 +726,7 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( - 'freqtrade.optimize.hyperopt.get_timeframe', + 'freqtrade.optimize.hyperopt.get_timerange', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) ) @@ -769,7 +769,7 @@ def test_print_json_spaces_default(mocker, default_conf, caplog, capsys) -> None mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( - 'freqtrade.optimize.hyperopt.get_timeframe', + 'freqtrade.optimize.hyperopt.get_timerange', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) ) @@ -811,7 +811,7 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( - 'freqtrade.optimize.hyperopt.get_timeframe', + 'freqtrade.optimize.hyperopt.get_timerange', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) ) @@ -851,7 +851,7 @@ def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys) mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( - 'freqtrade.optimize.hyperopt.get_timeframe', + 'freqtrade.optimize.hyperopt.get_timerange', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) ) @@ -899,7 +899,7 @@ def test_simplified_interface_all_failed(mocker, default_conf, caplog, capsys) - mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( - 'freqtrade.optimize.hyperopt.get_timeframe', + 'freqtrade.optimize.hyperopt.get_timerange', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) ) @@ -930,7 +930,7 @@ def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None: mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( - 'freqtrade.optimize.hyperopt.get_timeframe', + 'freqtrade.optimize.hyperopt.get_timerange', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) ) @@ -977,7 +977,7 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( - 'freqtrade.optimize.hyperopt.get_timeframe', + 'freqtrade.optimize.hyperopt.get_timerange', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) ) @@ -1030,7 +1030,7 @@ def test_simplified_interface_failed(mocker, default_conf, caplog, capsys, metho mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( - 'freqtrade.optimize.hyperopt.get_timeframe', + 'freqtrade.optimize.hyperopt.get_timerange', MagicMock(return_value=(datetime(2017, 12, 10), datetime(2017, 12, 13))) ) From 21622ac3138713555784e1ee58cfe61e127fcb40 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 18 Dec 2019 16:34:30 +0100 Subject: [PATCH 1232/3421] Rename get_ticker to fetch_ticker --- freqtrade/exchange/exchange.py | 2 +- freqtrade/freqtradebot.py | 6 +- tests/exchange/test_exchange.py | 14 +-- tests/rpc/test_rpc.py | 36 +++---- tests/rpc/test_rpc_apiserver.py | 12 +-- tests/rpc/test_rpc_telegram.py | 28 +++--- tests/test_freqtradebot.py | 170 ++++++++++++++++---------------- tests/test_integration.py | 4 +- 8 files changed, 136 insertions(+), 136 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index e4e7aacce..384ec1fb7 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -524,7 +524,7 @@ class Exchange: raise OperationalException(e) from e @retrier - def get_ticker(self, pair: str, refresh: Optional[bool] = True) -> dict: + def fetch_ticker(self, pair: str, refresh: Optional[bool] = True) -> dict: if refresh or pair not in self._cached_ticker.keys(): try: if pair not in self._api.markets or not self._api.markets[pair].get('active'): diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 8ae027fa2..ea9b892d7 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -192,7 +192,7 @@ class FreqtradeBot: else: if not tick: logger.info('Using Last Ask / Last Price') - ticker = self.exchange.get_ticker(pair) + ticker = self.exchange.fetch_ticker(pair) else: ticker = tick if ticker['ask'] < ticker['last']: @@ -570,7 +570,7 @@ class FreqtradeBot: """ Get sell rate - either using get-ticker bid or first bid based on orderbook The orderbook portion is only used for rpc messaging, which would otherwise fail - for BitMex (has no bid/ask in get_ticker) + for BitMex (has no bid/ask in fetch_ticker) or remain static in any other case since it's not updating. :return: Bid rate """ @@ -582,7 +582,7 @@ class FreqtradeBot: rate = order_book['bids'][0][0] else: - rate = self.exchange.get_ticker(pair, refresh)['bid'] + rate = self.exchange.fetch_ticker(pair, refresh)['bid'] return rate def handle_trade(self, trade: Trade) -> bool: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 629f99aa2..7c273da9f 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -977,7 +977,7 @@ def test_get_tickers(default_conf, mocker, exchange_name): @pytest.mark.parametrize("exchange_name", EXCHANGES) -def test_get_ticker(default_conf, mocker, exchange_name): +def test_fetch_ticker(default_conf, mocker, exchange_name): api_mock = MagicMock() tick = { 'symbol': 'ETH/BTC', @@ -989,7 +989,7 @@ def test_get_ticker(default_conf, mocker, exchange_name): api_mock.markets = {'ETH/BTC': {'active': True}} exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) # retrieve original ticker - ticker = exchange.get_ticker(pair='ETH/BTC') + ticker = exchange.fetch_ticker(pair='ETH/BTC') assert ticker['bid'] == 0.00001098 assert ticker['ask'] == 0.00001099 @@ -1006,7 +1006,7 @@ def test_get_ticker(default_conf, mocker, exchange_name): # if not caching the result we should get the same ticker # if not fetching a new result we should get the cached ticker - ticker = exchange.get_ticker(pair='ETH/BTC') + ticker = exchange.fetch_ticker(pair='ETH/BTC') assert api_mock.fetch_ticker.call_count == 1 assert ticker['bid'] == 0.5 @@ -1018,19 +1018,19 @@ def test_get_ticker(default_conf, mocker, exchange_name): # Test caching api_mock.fetch_ticker = MagicMock() - exchange.get_ticker(pair='ETH/BTC', refresh=False) + exchange.fetch_ticker(pair='ETH/BTC', refresh=False) assert api_mock.fetch_ticker.call_count == 0 ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, - "get_ticker", "fetch_ticker", + "fetch_ticker", "fetch_ticker", pair='ETH/BTC', refresh=True) api_mock.fetch_ticker = MagicMock(return_value={}) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) - exchange.get_ticker(pair='ETH/BTC', refresh=True) + exchange.fetch_ticker(pair='ETH/BTC', refresh=True) with pytest.raises(DependencyException, match=r'Pair XRP/ETH not available'): - exchange.get_ticker(pair='XRP/ETH', refresh=True) + exchange.fetch_ticker(pair='XRP/ETH', refresh=True) @pytest.mark.parametrize("exchange_name", EXCHANGES) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 0a8c1cabd..3b897572c 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -29,7 +29,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) @@ -65,7 +65,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_order': '(limit buy rem=0.00000000)' } == results[0] - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) # invalidate ticker cache rpc._freqtrade.exchange._cached_ticker = {} @@ -104,7 +104,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) @@ -134,7 +134,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: assert 'ETH/BTC' == result[0][1] assert '-0.59% (-0.09)' == result[0][3] - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) # invalidate ticker cache rpc._freqtrade.exchange._cached_ticker = {} @@ -149,7 +149,7 @@ def test_rpc_daily_profit(default_conf, update, ticker, fee, mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, markets=PropertyMock(return_value=markets) ) @@ -201,7 +201,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) @@ -225,7 +225,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, # Update the ticker with a market going up mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_up + fetch_ticker=ticker_sell_up ) trade.update(limit_sell_order) trade.close_date = datetime.utcnow() @@ -239,7 +239,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, # Update the ticker with a market going up mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_up + fetch_ticker=ticker_sell_up ) trade.update(limit_sell_order) trade.close_date = datetime.utcnow() @@ -260,7 +260,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, assert prec_satoshi(stats['best_rate'], 6.2) # Test non-available pair - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) # invalidate ticker cache rpc._freqtrade.exchange._cached_ticker = {} @@ -287,7 +287,7 @@ def test_rpc_trade_statistics_closed(mocker, default_conf, ticker, fee, mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) @@ -306,7 +306,7 @@ def test_rpc_trade_statistics_closed(mocker, default_conf, ticker, fee, # Update the ticker with a market going up mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_up, + fetch_ticker=ticker_sell_up, get_fee=fee ) trade.update(limit_sell_order) @@ -439,7 +439,7 @@ def test_rpc_start(mocker, default_conf) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock() + fetch_ticker=MagicMock() ) freqtradebot = get_patched_freqtradebot(mocker, default_conf) @@ -460,7 +460,7 @@ def test_rpc_stop(mocker, default_conf) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock() + fetch_ticker=MagicMock() ) freqtradebot = get_patched_freqtradebot(mocker, default_conf) @@ -482,7 +482,7 @@ def test_rpc_stopbuy(mocker, default_conf) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock() + fetch_ticker=MagicMock() ) freqtradebot = get_patched_freqtradebot(mocker, default_conf) @@ -502,7 +502,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: cancel_order_mock = MagicMock() mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, cancel_order=cancel_order_mock, get_order=MagicMock( return_value={ @@ -604,7 +604,7 @@ def test_performance_handle(default_conf, ticker, limit_buy_order, fee, mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=ticker), - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) @@ -637,7 +637,7 @@ def test_rpc_count(mocker, default_conf, ticker, fee) -> None: mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=ticker), - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) @@ -661,7 +661,7 @@ def test_rpcforcebuy(mocker, default_conf, ticker, fee, limit_buy_order) -> None mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=ticker), - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, buy=buy_mm ) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index f1e3421c5..36bb81e41 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -256,7 +256,7 @@ def test_api_count(botclient, mocker, ticker, fee, markets): mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=ticker), - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, markets=PropertyMock(return_value=markets) ) @@ -292,7 +292,7 @@ def test_api_daily(botclient, mocker, ticker, fee, markets): mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=ticker), - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, markets=PropertyMock(return_value=markets) ) @@ -308,7 +308,7 @@ def test_api_edge_disabled(botclient, mocker, ticker, fee, markets): mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=ticker), - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, markets=PropertyMock(return_value=markets) ) @@ -323,7 +323,7 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=ticker), - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, markets=PropertyMock(return_value=markets) ) @@ -413,7 +413,7 @@ def test_api_status(botclient, mocker, ticker, fee, markets): mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=ticker), - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, markets=PropertyMock(return_value=markets) ) @@ -541,7 +541,7 @@ def test_api_forcesell(botclient, mocker, ticker, fee, markets): mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value=ticker), - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, markets=PropertyMock(return_value=markets) ) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index b02f11394..ed2aad37e 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -150,7 +150,7 @@ def test_status(default_conf, update, mocker, fee, ticker,) -> None: mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) msg_mock = MagicMock() @@ -204,7 +204,7 @@ def test_status(default_conf, update, mocker, fee, ticker,) -> None: def test_status_handle(default_conf, update, ticker, fee, mocker) -> None: mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) msg_mock = MagicMock() @@ -254,7 +254,7 @@ def test_status_handle(default_conf, update, ticker, fee, mocker) -> None: def test_status_table_handle(default_conf, update, ticker, fee, mocker) -> None: mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': 'mocked_order_id'}), get_fee=fee, ) @@ -307,7 +307,7 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, ) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) msg_mock = MagicMock() @@ -373,7 +373,7 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, def test_daily_wrong_input(default_conf, update, ticker, mocker) -> None: mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker + fetch_ticker=ticker ) msg_mock = MagicMock() mocker.patch.multiple( @@ -411,7 +411,7 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) msg_mock = MagicMock() @@ -443,7 +443,7 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, msg_mock.reset_mock() # Update the ticker with a market going up - mocker.patch('freqtrade.exchange.Exchange.get_ticker', ticker_sell_up) + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', ticker_sell_up) trade.update(limit_sell_order) trade.close_date = datetime.utcnow() @@ -700,7 +700,7 @@ def test_forcesell_handle(default_conf, update, ticker, fee, patch_whitelist(mocker, default_conf) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) @@ -715,7 +715,7 @@ def test_forcesell_handle(default_conf, update, ticker, fee, assert trade # Increase the price and sell it - mocker.patch('freqtrade.exchange.Exchange.get_ticker', ticker_sell_up) + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', ticker_sell_up) # /forcesell 1 context = MagicMock() @@ -755,7 +755,7 @@ def test_forcesell_down_handle(default_conf, update, ticker, fee, mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) @@ -769,7 +769,7 @@ def test_forcesell_down_handle(default_conf, update, ticker, fee, # Decrease the price and sell it mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_down + fetch_ticker=ticker_sell_down ) trade = Trade.query.first() @@ -812,7 +812,7 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None patch_whitelist(mocker, default_conf) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) default_conf['max_open_trades'] = 4 @@ -963,7 +963,7 @@ def test_performance_handle(default_conf, update, ticker, fee, ) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) freqtradebot = get_patched_freqtradebot(mocker, default_conf) @@ -998,7 +998,7 @@ def test_count_handle(default_conf, update, ticker, fee, mocker) -> None: ) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': 'mocked_order_id'}), get_fee=fee, ) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 341bc021f..13f1277b9 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -157,7 +157,7 @@ def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, patch_wallet(mocker, free=default_conf['stake_amount']) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee ) @@ -232,7 +232,7 @@ def test_edge_overrides_stoploss(limit_buy_order, fee, caplog, mocker, edge_conf buy_price = limit_buy_order['price'] mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': buy_price * 0.79, 'ask': buy_price * 0.79, 'last': buy_price * 0.79 @@ -272,7 +272,7 @@ def test_edge_should_ignore_strategy_stoploss(limit_buy_order, fee, buy_price = limit_buy_order['price'] mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': buy_price * 0.85, 'ask': buy_price * 0.85, 'last': buy_price * 0.85 @@ -304,7 +304,7 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, default_conf['max_open_trades'] = 2 mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, ) @@ -467,7 +467,7 @@ def test_create_trades(default_conf, ticker, limit_buy_order, fee, mocker) -> No patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, ) @@ -501,7 +501,7 @@ def test_create_trades_no_stake_amount(default_conf, ticker, limit_buy_order, patch_wallet(mocker, free=default_conf['stake_amount'] * 0.5) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, ) @@ -519,7 +519,7 @@ def test_create_trades_minimal_amount(default_conf, ticker, limit_buy_order, buy_mock = MagicMock(return_value={'id': limit_buy_order['id']}) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=buy_mock, get_fee=fee, ) @@ -539,7 +539,7 @@ def test_create_trades_too_small_stake_amount(default_conf, ticker, limit_buy_or buy_mock = MagicMock(return_value={'id': limit_buy_order['id']}) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=buy_mock, get_fee=fee, ) @@ -558,7 +558,7 @@ def test_create_trades_limit_reached(default_conf, ticker, limit_buy_order, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_balance=MagicMock(return_value=default_conf['stake_amount']), get_fee=fee, @@ -579,7 +579,7 @@ def test_create_trades_no_pairs_let(default_conf, ticker, limit_buy_order, fee, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, ) @@ -600,7 +600,7 @@ def test_create_trades_no_pairs_in_whitelist(default_conf, ticker, limit_buy_ord patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, ) @@ -639,7 +639,7 @@ def test_create_trades_multiple_trades(default_conf, ticker, default_conf['max_open_trades'] = max_open mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': "12355555"}), get_fee=fee, ) @@ -658,7 +658,7 @@ def test_create_trades_preopen(default_conf, ticker, fee, mocker) -> None: default_conf['max_open_trades'] = 4 mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': "12355555"}), get_fee=fee, ) @@ -684,7 +684,7 @@ def test_process_trade_creation(default_conf, ticker, limit_buy_order, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_order=MagicMock(return_value=limit_buy_order), get_fee=fee, @@ -718,7 +718,7 @@ def test_process_exchange_failures(default_conf, ticker, mocker) -> None: patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(side_effect=TemporaryError) ) sleep_mock = mocker.patch('time.sleep', side_effect=lambda _: None) @@ -735,7 +735,7 @@ def test_process_operational_exception(default_conf, ticker, mocker) -> None: patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(side_effect=OperationalException) ) worker = Worker(args=None, config=default_conf) @@ -753,7 +753,7 @@ def test_process_trade_handling(default_conf, ticker, limit_buy_order, fee, mock patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_order=MagicMock(return_value=limit_buy_order), get_fee=fee, @@ -780,7 +780,7 @@ def test_process_trade_no_whitelist_pair(default_conf, ticker, limit_buy_order, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_order=MagicMock(return_value=limit_buy_order), get_fee=fee, @@ -830,7 +830,7 @@ def test_process_informative_pairs_added(default_conf, ticker, mocker) -> None: refresh_mock = MagicMock() mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(side_effect=TemporaryError), refresh_latest_ohlcv=refresh_mock, ) @@ -853,7 +853,7 @@ def test_process_informative_pairs_added(default_conf, ticker, mocker) -> None: def test_balance_fully_ask_side(mocker, default_conf) -> None: default_conf['bid_strategy']['ask_last_balance'] = 0.0 freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={'ask': 20, 'last': 10})) assert freqtrade.get_target_bid('ETH/BTC') == 20 @@ -862,7 +862,7 @@ def test_balance_fully_ask_side(mocker, default_conf) -> None: def test_balance_fully_last_side(mocker, default_conf) -> None: default_conf['bid_strategy']['ask_last_balance'] = 1.0 freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={'ask': 20, 'last': 10})) assert freqtrade.get_target_bid('ETH/BTC') == 10 @@ -871,7 +871,7 @@ def test_balance_fully_last_side(mocker, default_conf) -> None: def test_balance_bigger_last_ask(mocker, default_conf) -> None: default_conf['bid_strategy']['ask_last_balance'] = 1.0 freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={'ask': 5, 'last': 10})) assert freqtrade.get_target_bid('ETH/BTC') == 5 @@ -891,7 +891,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: buy_mm = MagicMock(return_value={'id': limit_buy_order['id']}) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00001172, 'ask': 0.00001173, 'last': 0.00001172 @@ -1000,7 +1000,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00001172, 'ask': 0.00001173, 'last': 0.00001172 @@ -1100,7 +1100,7 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00001172, 'ask': 0.00001173, 'last': 0.00001172 @@ -1134,7 +1134,7 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, sell_mock = MagicMock(return_value={'id': limit_sell_order['id']}) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00001172, 'ask': 0.00001173, 'last': 0.00001172 @@ -1177,7 +1177,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, patch_RPCManager(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00001172, 'ask': 0.00001173, 'last': 0.00001172 @@ -1231,7 +1231,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, assert freqtrade.handle_stoploss_on_exchange(trade) is False # price jumped 2x - mocker.patch('freqtrade.exchange.Exchange.get_ticker', MagicMock(return_value={ + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ 'bid': 0.00002344, 'ask': 0.00002346, 'last': 0.00002344 @@ -1271,7 +1271,7 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00001172, 'ask': 0.00001173, 'last': 0.00001172 @@ -1342,7 +1342,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, edge_conf['dry_run_wallet'] = 999.9 mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00001172, 'ask': 0.00001173, 'last': 0.00001172 @@ -1406,7 +1406,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, mocker.patch('freqtrade.exchange.Exchange.stoploss_limit', stoploss_order_mock) # price goes down 5% - mocker.patch('freqtrade.exchange.Exchange.get_ticker', MagicMock(return_value={ + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ 'bid': 0.00001172 * 0.95, 'ask': 0.00001173 * 0.95, 'last': 0.00001172 * 0.95 @@ -1422,7 +1422,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, cancel_order_mock.assert_not_called() # price jumped 2x - mocker.patch('freqtrade.exchange.Exchange.get_ticker', MagicMock(return_value={ + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ 'bid': 0.00002344, 'ask': 0.00002346, 'last': 0.00002344 @@ -1662,7 +1662,7 @@ def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, fee, mock patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00001172, 'ask': 0.00001173, 'last': 0.00001172 @@ -1701,7 +1701,7 @@ def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order, fee, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, ) @@ -1754,7 +1754,7 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order, patch_RPCManager(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, ) @@ -1786,7 +1786,7 @@ def test_handle_trade_use_sell_signal( patch_RPCManager(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, ) @@ -1814,7 +1814,7 @@ def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, ) @@ -1842,7 +1842,7 @@ def test_check_handle_timedout_buy(default_conf, ticker, limit_buy_order_old, op patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_order=MagicMock(return_value=limit_buy_order_old), cancel_order=cancel_order_mock, get_fee=fee @@ -1869,7 +1869,7 @@ def test_check_handle_cancelled_buy(default_conf, ticker, limit_buy_order_old, o limit_buy_order_old.update({"status": "canceled"}) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_order=MagicMock(return_value=limit_buy_order_old), cancel_order=cancel_order_mock, get_fee=fee @@ -1896,7 +1896,7 @@ def test_check_handle_timedout_buy_exception(default_conf, ticker, limit_buy_ord mocker.patch.multiple( 'freqtrade.exchange.Exchange', validate_pairs=MagicMock(), - get_ticker=ticker, + fetch_ticker=ticker, get_order=MagicMock(side_effect=DependencyException), cancel_order=cancel_order_mock, get_fee=fee @@ -1921,7 +1921,7 @@ def test_check_handle_timedout_sell(default_conf, ticker, limit_sell_order_old, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_order=MagicMock(return_value=limit_sell_order_old), cancel_order=cancel_order_mock ) @@ -1949,7 +1949,7 @@ def test_check_handle_cancelled_sell(default_conf, ticker, limit_sell_order_old, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_order=MagicMock(return_value=limit_sell_order_old), cancel_order=cancel_order_mock ) @@ -1976,7 +1976,7 @@ def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_order=MagicMock(return_value=limit_buy_order_old_partial), cancel_order=cancel_order_mock ) @@ -2003,7 +2003,7 @@ def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, cap patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_order=MagicMock(return_value=limit_buy_order_old_partial), cancel_order=cancel_order_mock, get_trades_for_order=MagicMock(return_value=trades_for_order), @@ -2040,7 +2040,7 @@ def test_check_handle_timedout_partial_except(default_conf, ticker, open_trade, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_order=MagicMock(return_value=limit_buy_order_old_partial), cancel_order=cancel_order_mock, get_trades_for_order=MagicMock(return_value=trades_for_order), @@ -2084,7 +2084,7 @@ def test_check_handle_timedout_exception(default_conf, ticker, open_trade, mocke ) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_order=MagicMock(side_effect=requests.exceptions.RequestException('Oh snap')), cancel_order=cancel_order_mock ) @@ -2174,7 +2174,7 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, mocker) -> N patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) patch_whitelist(mocker, default_conf) @@ -2190,7 +2190,7 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, mocker) -> N # Increase the price and sell it mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_up + fetch_ticker=ticker_sell_up ) freqtrade.execute_sell(trade=trade, limit=ticker_sell_up()['bid'], sell_reason=SellType.ROI) @@ -2222,7 +2222,7 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, mocker) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) patch_whitelist(mocker, default_conf) @@ -2238,7 +2238,7 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, mocker) # Decrease the price and sell it mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_down + fetch_ticker=ticker_sell_down ) freqtrade.execute_sell(trade=trade, limit=ticker_sell_down()['bid'], @@ -2272,7 +2272,7 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) patch_whitelist(mocker, default_conf) @@ -2288,7 +2288,7 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe # Decrease the price and sell it mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_down + fetch_ticker=ticker_sell_down ) default_conf['dry_run'] = True @@ -2330,7 +2330,7 @@ def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee, c patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, sell=sellmock ) @@ -2367,7 +2367,7 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, ticker, fee, ticke cancel_order = MagicMock(return_value=True) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, symbol_amount_prec=lambda s, x, y: y, symbol_price_prec=lambda s, x, y: y, @@ -2391,7 +2391,7 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, ticker, fee, ticke # Increase the price and sell it mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_up + fetch_ticker=ticker_sell_up ) freqtrade.execute_sell(trade=trade, limit=ticker_sell_up()['bid'], @@ -2410,7 +2410,7 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, f patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, symbol_amount_prec=lambda s, x, y: y, symbol_price_prec=lambda s, x, y: y, @@ -2474,7 +2474,7 @@ def test_execute_sell_market_order(default_conf, ticker, fee, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) patch_whitelist(mocker, default_conf) @@ -2490,7 +2490,7 @@ def test_execute_sell_market_order(default_conf, ticker, fee, # Increase the price and sell it mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_up + fetch_ticker=ticker_sell_up ) freqtrade.config['order_types']['sell'] = 'market' @@ -2528,7 +2528,7 @@ def test_sell_profit_only_enable_profit(default_conf, limit_buy_order, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00002172, 'ask': 0.00002173, 'last': 0.00002172 @@ -2559,7 +2559,7 @@ def test_sell_profit_only_disable_profit(default_conf, limit_buy_order, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00002172, 'ask': 0.00002173, 'last': 0.00002172 @@ -2588,7 +2588,7 @@ def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, mocker patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00000172, 'ask': 0.00000173, 'last': 0.00000172 @@ -2617,7 +2617,7 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, mocke patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.0000172, 'ask': 0.0000173, 'last': 0.0000172 @@ -2648,7 +2648,7 @@ def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, mocker, caplo patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, ) freqtrade = FreqtradeBot(default_conf) @@ -2663,7 +2663,7 @@ def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, mocker, caplo # Decrease the price and sell it mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker_sell_down + fetch_ticker=ticker_sell_down ) freqtrade.execute_sell(trade=trade, limit=ticker_sell_down()['bid'], @@ -2684,7 +2684,7 @@ def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, mocker) -> patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.0000172, 'ask': 0.0000173, 'last': 0.0000172 @@ -2717,7 +2717,7 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, caplog, mocker) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00001099, 'ask': 0.00001099, 'last': 0.00001099 @@ -2736,7 +2736,7 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, caplog, mocker) assert freqtrade.handle_trade(trade) is False # Raise ticker above buy price - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ 'bid': 0.00001099 * 1.5, 'ask': 0.00001099 * 1.5, @@ -2747,7 +2747,7 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, caplog, mocker) assert freqtrade.handle_trade(trade) is False # Price fell - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ 'bid': 0.00001099 * 1.1, 'ask': 0.00001099 * 1.1, @@ -2771,7 +2771,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': buy_price - 0.000001, 'ask': buy_price - 0.000001, 'last': buy_price - 0.000001 @@ -2795,7 +2795,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, assert freqtrade.handle_trade(trade) is False # Raise ticker above buy price - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ 'bid': buy_price + 0.000003, 'ask': buy_price + 0.000003, @@ -2807,7 +2807,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, assert log_has(f"ETH/BTC - Adjusting stoploss...", caplog) assert trade.stop_loss == 0.0000138501 - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ 'bid': buy_price + 0.000002, 'ask': buy_price + 0.000002, @@ -2828,7 +2828,7 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': buy_price - 0.000001, 'ask': buy_price - 0.000001, 'last': buy_price - 0.000001 @@ -2852,7 +2852,7 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, assert freqtrade.handle_trade(trade) is False # Raise ticker above buy price - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ 'bid': buy_price + 0.000003, 'ask': buy_price + 0.000003, @@ -2865,7 +2865,7 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, assert log_has(f"ETH/BTC - Adjusting stoploss...", caplog) assert trade.stop_loss == 0.0000138501 - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ 'bid': buy_price + 0.000002, 'ask': buy_price + 0.000002, @@ -2889,7 +2889,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': buy_price, 'ask': buy_price, 'last': buy_price @@ -2916,7 +2916,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, assert trade.stop_loss == 0.0000098910 # Raise ticker above buy price - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ 'bid': buy_price + 0.0000004, 'ask': buy_price + 0.0000004, @@ -2930,7 +2930,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, assert trade.stop_loss == 0.0000098910 # price rises above the offset (rises 12% when the offset is 5.5%) - mocker.patch('freqtrade.exchange.Exchange.get_ticker', + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ 'bid': buy_price + 0.0000014, 'ask': buy_price + 0.0000014, @@ -2950,7 +2950,7 @@ def test_disable_ignore_roi_if_buy_signal(default_conf, limit_buy_order, patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00000172, 'ask': 0.00000173, 'last': 0.00000172 @@ -3287,7 +3287,7 @@ def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee, mocker.patch('freqtrade.exchange.Exchange.get_order_book', order_book_l2) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, ) @@ -3324,7 +3324,7 @@ def test_order_book_depth_of_market_high_delta(default_conf, ticker, limit_buy_o mocker.patch('freqtrade.exchange.Exchange.get_order_book', order_book_l2) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, ) @@ -3347,7 +3347,7 @@ def test_order_book_bid_strategy1(mocker, default_conf, order_book_l2) -> None: mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_order_book=order_book_l2, - get_ticker=ticker_mock, + fetch_ticker=ticker_mock, ) default_conf['exchange']['name'] = 'binance' @@ -3371,7 +3371,7 @@ def test_order_book_bid_strategy2(mocker, default_conf, order_book_l2) -> None: mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_order_book=order_book_l2, - get_ticker=ticker_mock, + fetch_ticker=ticker_mock, ) default_conf['exchange']['name'] = 'binance' @@ -3421,7 +3421,7 @@ def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=MagicMock(return_value={ + fetch_ticker=MagicMock(return_value={ 'bid': 0.00001172, 'ask': 0.00001173, 'last': 0.00001172 @@ -3451,7 +3451,7 @@ def test_get_sell_rate(default_conf, mocker, ticker, order_book_l2) -> None: mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_order_book=order_book_l2, - get_ticker=ticker, + fetch_ticker=ticker, ) pair = "ETH/BTC" @@ -3530,7 +3530,7 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), get_fee=fee, ) diff --git a/tests/test_integration.py b/tests/test_integration.py index 728e96d55..a80600cdc 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -55,7 +55,7 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, mocker.patch('freqtrade.exchange.Binance.stoploss_limit', stoploss_limit) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, symbol_amount_prec=lambda s, x, y: y, symbol_price_prec=lambda s, x, y: y, @@ -126,7 +126,7 @@ def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, moc )) mocker.patch.multiple( 'freqtrade.exchange.Exchange', - get_ticker=ticker, + fetch_ticker=ticker, get_fee=fee, symbol_amount_prec=lambda s, x, y: y, symbol_price_prec=lambda s, x, y: y, From dc07037edfc2bebed2d3815c986a999d281c5b0e Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 18 Dec 2019 16:38:57 +0100 Subject: [PATCH 1233/3421] Add documentation for price finding --- docs/configuration.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/docs/configuration.md b/docs/configuration.md index 73534b6f1..bfa29529d 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -393,6 +393,41 @@ The valid values are: "BTC", "ETH", "XRP", "LTC", "BCH", "USDT" ``` +## Prices used for orders + +Prices for regular orders can be controlled via the parameter structures `bid_strategy` for Buying, and `ask_strategy` for selling. +Prices are always retrieved right before an order is placed, either by querying the `fetch_ticker()` endpoint of the exchange (usually `/ticker`), or by using the orderbook. + +### Buy price with Orderbook enabled + +When buying with the orderbook enabled (`bid_strategy.use_order_book=True`) - Freqtrade will fetch the `bid_strategy.order_book_top` entries in the orderbook, and will then use the entry specified as `bid_strategy.order_book_top` on the `bids` side of the orderbook. 1 specifies the topmost entry in the Orderbook - while 2 would use the 2nd entry in the Orderbook. + +### Buy price without Orderbook + +When not using orderbook (`bid_strategy.use_order_book=False`), then Freqtrade will use the best `ask` price based on a call to `fetch_ticker()` if it's below the `last` traded price. +Otherwise, it'll use the following formula to calculate the rate: + +``` python +ticker['ask'] + ask_last_balance * (ticker['last'] - ticker['ask']) +``` + +This means - it uses the difference between last and ask (which must be negative, since ask was checked to be higher than last) and multiplies this with `bid_strategy.ask_last_balance` - lowering the price by `balance * (difference between last and ask). + +### Sell price with Orderbook enabled + +When selling with the Orderbook enabled (`ask_strategy.use_order_book=True`) - Freqtrade will fetch the `ask_strategy.order_book_max` entries in the orderbook. Freqtrade will then validate each of the orderbook steps between `ask_strategy.order_book_min` and `ask_strategy.order_book_max` on the `ask` side for a profitable sell-possibility and will place a sell order at the first profitable spot. + +The idea here is to place the sell-order early, to be ahead in the queue. +A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting `ask_strategy.order_book_min` and `ask_strategy.order_book_max` to the same number. + +!!! Warning "Orderbook and stoploss_on_exchange" + Using `ask_strategy.order_book_max` higher than 1 may increase the risk, since an eventual [stoploss on exchange](#understand-order_types) will be need to be cancelled as soon as the order is placed. + + +### Sell price without orderbook + +When not using orderbook (`ask_strategy.use_order_book=False`), then the best `bid` will be used as sell rate based on a call to `fetch_ticker()`. + ## Pairlists Pairlists define the list of pairs that the bot should trade. From d73ba71ec63d08d9ddc98c983f10aa7509cd9b0b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 18 Dec 2019 16:41:54 +0100 Subject: [PATCH 1234/3421] Improve formatting of orderbook doc --- docs/configuration.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index bfa29529d..e4d29825e 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -398,11 +398,13 @@ The valid values are: Prices for regular orders can be controlled via the parameter structures `bid_strategy` for Buying, and `ask_strategy` for selling. Prices are always retrieved right before an order is placed, either by querying the `fetch_ticker()` endpoint of the exchange (usually `/ticker`), or by using the orderbook. -### Buy price with Orderbook enabled +### Buy price + +#### Buy price with Orderbook enabled When buying with the orderbook enabled (`bid_strategy.use_order_book=True`) - Freqtrade will fetch the `bid_strategy.order_book_top` entries in the orderbook, and will then use the entry specified as `bid_strategy.order_book_top` on the `bids` side of the orderbook. 1 specifies the topmost entry in the Orderbook - while 2 would use the 2nd entry in the Orderbook. -### Buy price without Orderbook +#### Buy price without Orderbook When not using orderbook (`bid_strategy.use_order_book=False`), then Freqtrade will use the best `ask` price based on a call to `fetch_ticker()` if it's below the `last` traded price. Otherwise, it'll use the following formula to calculate the rate: @@ -413,7 +415,9 @@ ticker['ask'] + ask_last_balance * (ticker['last'] - ticker['ask']) This means - it uses the difference between last and ask (which must be negative, since ask was checked to be higher than last) and multiplies this with `bid_strategy.ask_last_balance` - lowering the price by `balance * (difference between last and ask). -### Sell price with Orderbook enabled +### Sell price + +#### Sell price with Orderbook enabled When selling with the Orderbook enabled (`ask_strategy.use_order_book=True`) - Freqtrade will fetch the `ask_strategy.order_book_max` entries in the orderbook. Freqtrade will then validate each of the orderbook steps between `ask_strategy.order_book_min` and `ask_strategy.order_book_max` on the `ask` side for a profitable sell-possibility and will place a sell order at the first profitable spot. @@ -424,7 +428,7 @@ A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting Using `ask_strategy.order_book_max` higher than 1 may increase the risk, since an eventual [stoploss on exchange](#understand-order_types) will be need to be cancelled as soon as the order is placed. -### Sell price without orderbook +#### Sell price without orderbook When not using orderbook (`ask_strategy.use_order_book=False`), then the best `bid` will be used as sell rate based on a call to `fetch_ticker()`. From 1c19856d26c8ea9ed48c293519f8f63a12cbb568 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 18 Dec 2019 16:49:56 +0100 Subject: [PATCH 1235/3421] add section about depth_of_market --- docs/configuration.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index e4d29825e..5c748b0cb 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -400,6 +400,12 @@ Prices are always retrieved right before an order is placed, either by querying ### Buy price +#### Check depth of market + +When enabling `bid_strategy.check_depth_of_market=True`, then buy signals will be filtered based on the orderbook size. + +#TODO: Finish this section + #### Buy price with Orderbook enabled When buying with the orderbook enabled (`bid_strategy.use_order_book=True`) - Freqtrade will fetch the `bid_strategy.order_book_top` entries in the orderbook, and will then use the entry specified as `bid_strategy.order_book_top` on the `bids` side of the orderbook. 1 specifies the topmost entry in the Orderbook - while 2 would use the 2nd entry in the Orderbook. @@ -419,7 +425,7 @@ This means - it uses the difference between last and ask (which must be negative #### Sell price with Orderbook enabled -When selling with the Orderbook enabled (`ask_strategy.use_order_book=True`) - Freqtrade will fetch the `ask_strategy.order_book_max` entries in the orderbook. Freqtrade will then validate each of the orderbook steps between `ask_strategy.order_book_min` and `ask_strategy.order_book_max` on the `ask` side for a profitable sell-possibility and will place a sell order at the first profitable spot. +When selling with the Orderbook enabled (`ask_strategy.use_order_book=True`) - Freqtrade will fetch the `ask_strategy.order_book_max` entries in the orderbook. Freqtrade will then validate each of the orderbook steps between `ask_strategy.order_book_min` and `ask_strategy.order_book_max` on the `ask` side for a profitable sell-possibility based on the strategy configuration and will place a sell order at the first profitable spot. The idea here is to place the sell-order early, to be ahead in the queue. A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting `ask_strategy.order_book_min` and `ask_strategy.order_book_max` to the same number. From 11e787c8846027f14e6bc0872743dd5529cf57f1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 18 Dec 2019 19:27:54 +0100 Subject: [PATCH 1236/3421] Finish depth_of_market documentation piece --- docs/configuration.md | 45 ++++++++++++++++++------------------------- 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 5c748b0cb..ba592d436 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -57,12 +57,12 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* | `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled.
      ***Datatype:*** *Integer* | `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled.
      ***Datatype:*** *Integer* -| `bid_strategy.ask_last_balance` | **Required.** Set the bidding price. More information [below](#understand-ask_last_balance). -| `bid_strategy.use_order_book` | Enable buying using the rates in Order Book Bids.
      ***Datatype:*** *Boolean* -| `bid_strategy.order_book_top` | Bot will use the top N rate in Order Book Bids. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids. *Defaults to `1`.*
      ***Datatype:*** *Positive Integer* -| `bid_strategy. check_depth_of_market.enabled` | Do not buy if the difference of buy orders and sell orders is met in Order Book.
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* -| `bid_strategy. check_depth_of_market.bids_to_ask_delta` | The % difference of buy orders and sell orders found in Order Book. A value lesser than 1 means sell orders is greater, while value greater than 1 means buy orders is higher. *Defaults to `0`.*
      ***Datatype:*** *Float (as ratio)* -| `ask_strategy.use_order_book` | Enable selling of open trades using Order Book Asks.
      ***Datatype:*** *Boolean* +| `bid_strategy.ask_last_balance` | **Required.** Set the bidding price. More information [below](#buy-price-without-orderbook). +| `bid_strategy.use_order_book` | Enable buying using the rates in [Order Book Bids](#buy-price-with-orderbook-enabled).
      ***Datatype:*** *Boolean* +| `bid_strategy.order_book_top` | Bot will use the top N rate in Order Book Bids to buy. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in [Order Book Bids](#buy-price-with-orderbook-enabled).
      *Defaults to `1`.*
      ***Datatype:*** *Positive Integer* +| `bid_strategy. check_depth_of_market.enabled` | Do not buy if the difference of buy orders and sell orders is met in Order Book. [Check market depth](#check-depth-of-market).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* +| `bid_strategy. check_depth_of_market.bids_to_ask_delta` | The difference ratio of buy orders and sell orders found in Order Book. A value below 1 means sell order size is greater, while value greater than 1 means buy order size is higher. [Check market depth](#check-depth-of-market)
      *Defaults to `0`.*
      ***Datatype:*** *Float (as ratio)* +| `ask_strategy.use_order_book` | Enable selling of open trades using [Order Book Asks](#sell-price-with-orderbook-enabled).
      ***Datatype:*** *Boolean* | `ask_strategy.order_book_min` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.*
      ***Datatype:*** *Positive Integer* | `ask_strategy.order_book_max` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.*
      ***Datatype:*** *Positive Integer* | `ask_strategy.use_sell_signal` | Use sell signals produced by the strategy in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `true`.*
      ***Datatype:*** *Boolean* @@ -88,9 +88,9 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* | `webhook.enabled` | Enable usage of Webhook notifications
      ***Datatype:*** *Boolean* | `webhook.url` | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* -| `webhook.webhookbuy` | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
      ***Datatype:*** *String* -| `webhook.webhooksell` | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
      ***Datatype:*** *String* -| `webhook.webhookstatus` | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
      ***Datatype:*** *String* +| `webhook.webhookbuy` | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* +| `webhook.webhooksell` | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* +| `webhook.webhookstatus` | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* | `api_server.enabled` | Enable usage of API Server. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *Boolean* | `api_server.listen_ip_address` | Bind IP address. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *IPv4* | `api_server.listen_port` | Bind Port. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *Integer between 1024 and 65535* @@ -207,13 +207,6 @@ before asking the strategy if we should buy or a sell an asset. After each wait every opened trade wether or not we should sell, and for all the remaining pairs (either the dynamic list of pairs or the static list of pairs) if we should buy. -### Understand ask_last_balance - -The `ask_last_balance` configuration parameter sets the bidding price. Value `0.0` will use `ask` price, `1.0` will -use the `last` price and values between those interpolate between ask and last -price. Using `ask` price will guarantee quick success in bid, but bot will also -end up paying more then would probably have been necessary. - ### Understand order_types The `order_types` configuration parameter maps actions (`buy`, `sell`, `stoploss`) to order-types (`market`, `limit`, ...) as well as configures stoploss to be on the exchange and defines stoploss on exchange update interval in seconds. @@ -398,13 +391,15 @@ The valid values are: Prices for regular orders can be controlled via the parameter structures `bid_strategy` for Buying, and `ask_strategy` for selling. Prices are always retrieved right before an order is placed, either by querying the `fetch_ticker()` endpoint of the exchange (usually `/ticker`), or by using the orderbook. -### Buy price +### Buy price #### Check depth of market -When enabling `bid_strategy.check_depth_of_market=True`, then buy signals will be filtered based on the orderbook size. +When enabling `bid_strategy.check_depth_of_market.enabled=True`, then buy signals will be filtered based on the orderbook size for each size (sum of all amounts). +Orderbook bid size is then divided by Orderbook ask size - and the resulting delta is compared to `bid_strategy.check_depth_of_market.bids_to_ask_delta`, and a buy is only executed if the orderbook delta is bigger or equal to the configured delta. -#TODO: Finish this section +!!! Note: + A calculated delta below 1 means that sell order size is greater, while value greater than 1 means buy order size is higher #### Buy price with Orderbook enabled @@ -413,15 +408,13 @@ When buying with the orderbook enabled (`bid_strategy.use_order_book=True`) - Fr #### Buy price without Orderbook When not using orderbook (`bid_strategy.use_order_book=False`), then Freqtrade will use the best `ask` price based on a call to `fetch_ticker()` if it's below the `last` traded price. -Otherwise, it'll use the following formula to calculate the rate: +Otherwise, it'll calculate a rate between `ask` and `last` price. -``` python -ticker['ask'] + ask_last_balance * (ticker['last'] - ticker['ask']) -``` +The `bid_strategy.ask_last_balance` configuration parameter controls this. A value of `0.0` will use `ask` price, `1.0` will use the `last` price and values between those interpolate between ask and last +price. +Using `ask` price will guarantee quick success in bid, but bot will also end up paying more than what would have been necessary. -This means - it uses the difference between last and ask (which must be negative, since ask was checked to be higher than last) and multiplies this with `bid_strategy.ask_last_balance` - lowering the price by `balance * (difference between last and ask). - -### Sell price +### Sell price #### Sell price with Orderbook enabled From 1af962899d3f443b639d6953f406f145f1cab344 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 18 Dec 2019 19:43:37 +0100 Subject: [PATCH 1237/3421] Fix note-box syntax error --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index ba592d436..8ae824277 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -398,7 +398,7 @@ Prices are always retrieved right before an order is placed, either by querying When enabling `bid_strategy.check_depth_of_market.enabled=True`, then buy signals will be filtered based on the orderbook size for each size (sum of all amounts). Orderbook bid size is then divided by Orderbook ask size - and the resulting delta is compared to `bid_strategy.check_depth_of_market.bids_to_ask_delta`, and a buy is only executed if the orderbook delta is bigger or equal to the configured delta. -!!! Note: +!!! Note A calculated delta below 1 means that sell order size is greater, while value greater than 1 means buy order size is higher #### Buy price with Orderbook enabled From e72c6a0d94d810b2976c4a6729291fe51602db9d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 18 Dec 2019 20:02:15 +0100 Subject: [PATCH 1238/3421] use only first part of the currency to get wallet-amount (!!) --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4a48bba04..5656268c8 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -903,7 +903,7 @@ class FreqtradeBot: :return: amount to sell :raise: DependencyException: if available balance is not within 2% of the available amount. """ - wallet_amount = self.wallets.get_free(pair) + wallet_amount = self.wallets.get_free(pair.split('/')[0]) logger.debug(f"{pair} - Wallet: {wallet_amount} - Trade-amount: {amount}") if wallet_amount > amount: return amount From 6507a26cc160fdfe99a58fbd92a8e0a197f4edef Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 18 Dec 2019 20:16:53 +0100 Subject: [PATCH 1239/3421] Fix some tests after merge --- freqtrade/freqtradebot.py | 2 +- tests/test_freqtradebot.py | 18 ++++++++++++++---- tests/test_integration.py | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5656268c8..a51ab0dbf 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -898,7 +898,7 @@ class FreqtradeBot: Should be trade.amount - but will fall back to the available amount if necessary. This should cover cases where get_real_amount() was not able to update the amount for whatever reason. - :param pair: pair - used for logging + :param pair: Pair we're trying to sell :param amount: amount we expect to be available :return: amount to sell :raise: DependencyException: if available balance is not within 2% of the available amount. diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 300d0ad32..cd5c92199 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1682,6 +1682,7 @@ def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, fee, mock time.sleep(0.01) # Race condition fix trade.update(limit_buy_order) assert trade.is_open is True + freqtrade.wallets.update() patch_get_signal(freqtrade, value=(False, True)) assert freqtrade.handle_trade(trade) is True @@ -2549,6 +2550,7 @@ def test_sell_profit_only_enable_profit(default_conf, limit_buy_order, trade = Trade.query.first() trade.update(limit_buy_order) + freqtrade.wallets.update() patch_get_signal(freqtrade, value=(False, True)) assert freqtrade.handle_trade(trade) is True assert trade.sell_reason == SellType.SELL_SIGNAL.value @@ -2579,6 +2581,7 @@ def test_sell_profit_only_disable_profit(default_conf, limit_buy_order, trade = Trade.query.first() trade.update(limit_buy_order) + freqtrade.wallets.update() patch_get_signal(freqtrade, value=(False, True)) assert freqtrade.handle_trade(trade) is True assert trade.sell_reason == SellType.SELL_SIGNAL.value @@ -2639,6 +2642,7 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, mocke trade = Trade.query.first() trade.update(limit_buy_order) + freqtrade.wallets.update() patch_get_signal(freqtrade, value=(False, True)) assert freqtrade.handle_trade(trade) is True assert trade.sell_reason == SellType.SELL_SIGNAL.value @@ -2676,7 +2680,7 @@ def test_sell_not_enough_balance(default_conf, limit_buy_order, assert trade.amount != amnt -def test__safe_sell_amount(default_conf, caplog, mocker): +def test__safe_sell_amount(default_conf, fee, caplog, mocker): patch_RPCManager(mocker) patch_exchange(mocker) amount = 95.33 @@ -2687,7 +2691,9 @@ def test__safe_sell_amount(default_conf, caplog, mocker): amount=amount, exchange='binance', open_rate=0.245441, - open_order_id="123456" + open_order_id="123456", + fee_open=fee.return_value, + fee_close=fee.return_value, ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -2696,7 +2702,7 @@ def test__safe_sell_amount(default_conf, caplog, mocker): assert log_has_re(r'.*Falling back to wallet-amount.', caplog) -def test__safe_sell_amount_error(default_conf, caplog, mocker): +def test__safe_sell_amount_error(default_conf, fee, caplog, mocker): patch_RPCManager(mocker) patch_exchange(mocker) amount = 95.33 @@ -2707,7 +2713,9 @@ def test__safe_sell_amount_error(default_conf, caplog, mocker): amount=amount, exchange='binance', open_rate=0.245441, - open_order_id="123456" + open_order_id="123456", + fee_open=fee.return_value, + fee_close=fee.return_value, ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -2775,6 +2783,7 @@ def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, mocker) -> trade = Trade.query.first() trade.update(limit_buy_order) + freqtrade.wallets.update() patch_get_signal(freqtrade, value=(True, True)) assert freqtrade.handle_trade(trade) is False @@ -3512,6 +3521,7 @@ def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order time.sleep(0.01) # Race condition fix trade.update(limit_buy_order) + freqtrade.wallets.update() assert trade.is_open is True patch_get_signal(freqtrade, value=(False, True)) diff --git a/tests/test_integration.py b/tests/test_integration.py index 728e96d55..2daf13db6 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -71,7 +71,7 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, ) mocker.patch("freqtrade.strategy.interface.IStrategy.should_sell", should_sell_mock) wallets_mock = mocker.patch("freqtrade.wallets.Wallets.update", MagicMock()) - mocker.patch("freqtrade.wallets.Wallets.get_free", MagicMock(return_value=1)) + mocker.patch("freqtrade.wallets.Wallets.get_free", MagicMock(return_value=1000)) freqtrade = get_patched_freqtradebot(mocker, default_conf) freqtrade.strategy.order_types['stoploss_on_exchange'] = True From 0c6b5e01fb4a617d86e1aa9105e1aba960fdd254 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 18 Dec 2019 20:28:36 +0100 Subject: [PATCH 1240/3421] Try with github-token --- .github/workflows/ci.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f6a111944..0e86abc9b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,19 +64,16 @@ jobs: pip install -e . - name: Tests - env: - COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} - COVERALLS_SERVICE_NAME: travis-ci - TRAVIS: "true" run: | pytest --random-order --cov=freqtrade --cov-config=.coveragerc + + - name: Coveralls + if: startsWith(matrix.os, 'ubuntu') + env: + COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | # Allow failure for coveralls - # Fake travis environment to get coveralls working correctly - export TRAVIS_PULL_REQUEST="https://github.com/${GITHUB_REPOSITORY}/pull/$(cat $GITHUB_EVENT_PATH | jq -r .number)" - export TRAVIS_BRANCH=${GITHUB_REF#"ref/heads"} - export CI_BRANCH=${GITHUB_REF#"ref/heads"} - echo "${TRAVIS_BRANCH}" - coveralls || true + coveralls -v || true - name: Backtesting run: | From 342f3f450b1a201b155994f61ce182cc31721db3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 18 Dec 2019 20:38:21 +0100 Subject: [PATCH 1241/3421] try with coveralls token in yml ... --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0e86abc9b..53b2e5440 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,7 +70,8 @@ jobs: - name: Coveralls if: startsWith(matrix.os, 'ubuntu') env: - COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # Coveralls token. Not used as secret due to github not providing secrets to forked repositories + COVERALLS_REPO_TOKEN: 6D1m0xupS3FgutfuGao8keFf9Hc0FpIXu run: | # Allow failure for coveralls coveralls -v || true From fc5764f9df7c4341c9dd14560822ac4eec7fb6cc Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 19 Dec 2019 19:55:21 +0100 Subject: [PATCH 1242/3421] Edge small cleanup --- freqtrade/optimize/edge_cli.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py index a667ebb92..3848623db 100644 --- a/freqtrade/optimize/edge_cli.py +++ b/freqtrade/optimize/edge_cli.py @@ -42,11 +42,9 @@ class EdgeCli: # Set refresh_pairs to false for edge-cli (it must be true for edge) self.edge._refresh_pairs = False - self.timerange = TimeRange.parse_timerange(None if self.config.get( + self.edge._timerange = TimeRange.parse_timerange(None if self.config.get( 'timerange') is None else str(self.config.get('timerange'))) - self.edge._timerange = self.timerange - def _generate_edge_table(self, results: dict) -> str: floatfmt = ('s', '.10g', '.2f', '.2f', '.2f', '.2f', 'd', '.d') From 95bd9e8e0b5785031e70bedd0295cc763b54d541 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 22 Dec 2019 00:17:51 +0300 Subject: [PATCH 1243/3421] No underscores in cli options --- docs/bot-usage.md | 40 ++++++++++++++---------- freqtrade/configuration/cli_options.py | 8 ++--- freqtrade/configuration/configuration.py | 4 +-- 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 25818aea6..86a990946 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -192,8 +192,8 @@ Backtesting also uses the config specified via `-c/--config`. usage: freqtrade backtesting [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME] [--strategy-path PATH] [-i TICKER_INTERVAL] - [--timerange TIMERANGE] [--max_open_trades INT] - [--stake_amount STAKE_AMOUNT] [--fee FLOAT] + [--timerange TIMERANGE] [--max-open-trades INT] + [--stake-amount STAKE_AMOUNT] [--fee FLOAT] [--eps] [--dmmp] [--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]] [--export EXPORT] [--export-filename PATH] @@ -205,10 +205,12 @@ optional arguments: `1d`). --timerange TIMERANGE Specify what timerange of data to use. - --max_open_trades INT - Specify max_open_trades to use. - --stake_amount STAKE_AMOUNT - Specify stake_amount. + --max-open-trades INT + Override the value of the `max_open_trades` + configuration setting. + --stake-amount STAKE_AMOUNT + Override the value of the `stake_amount` configuration + setting. --fee FLOAT Specify fee ratio. Will be applied twice (on trade entry and exit). --eps, --enable-position-stacking @@ -270,8 +272,8 @@ to find optimal parameter values for your stategy. usage: freqtrade hyperopt [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME] [--strategy-path PATH] [-i TICKER_INTERVAL] [--timerange TIMERANGE] - [--max_open_trades INT] - [--stake_amount STAKE_AMOUNT] [--fee FLOAT] + [--max-open-trades INT] + [--stake-amount STAKE_AMOUNT] [--fee FLOAT] [--hyperopt NAME] [--hyperopt-path PATH] [--eps] [-e INT] [--spaces {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...]] @@ -286,10 +288,12 @@ optional arguments: `1d`). --timerange TIMERANGE Specify what timerange of data to use. - --max_open_trades INT - Specify max_open_trades to use. - --stake_amount STAKE_AMOUNT - Specify stake_amount. + --max-open-trades INT + Override the value of the `max_open_trades` + configuration setting. + --stake-amount STAKE_AMOUNT + Override the value of the `stake_amount` configuration + setting. --fee FLOAT Specify fee ratio. Will be applied twice (on trade entry and exit). --hyperopt NAME Specify hyperopt class name which will be used by the @@ -360,7 +364,7 @@ To know your trade expectancy and winrate against historical data, you can use E usage: freqtrade edge [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME] [--strategy-path PATH] [-i TICKER_INTERVAL] [--timerange TIMERANGE] - [--max_open_trades INT] [--stake_amount STAKE_AMOUNT] + [--max-open-trades INT] [--stake-amount STAKE_AMOUNT] [--fee FLOAT] [--stoplosses STOPLOSS_RANGE] optional arguments: @@ -370,10 +374,12 @@ optional arguments: `1d`). --timerange TIMERANGE Specify what timerange of data to use. - --max_open_trades INT - Specify max_open_trades to use. - --stake_amount STAKE_AMOUNT - Specify stake_amount. + --max-open-trades INT + Override the value of the `max_open_trades` + configuration setting. + --stake-amount STAKE_AMOUNT + Override the value of the `stake_amount` configuration + setting. --fee FLOAT Specify fee ratio. Will be applied twice (on trade entry and exit). --stoplosses STOPLOSS_RANGE diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 30902dfe9..4b6429f20 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -118,14 +118,14 @@ AVAILABLE_CLI_OPTIONS = { help='Specify what timerange of data to use.', ), "max_open_trades": Arg( - '--max_open_trades', - help='Specify max_open_trades to use.', + '--max-open-trades', + help='Override the value of the `max_open_trades` configuration setting.', type=int, metavar='INT', ), "stake_amount": Arg( - '--stake_amount', - help='Specify stake_amount.', + '--stake-amount', + help='Override the value of the `stake_amount` configuration setting.', type=float, ), # Backtesting diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index e517a0558..001e89303 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -223,13 +223,13 @@ class Configuration: logger.info('max_open_trades set to unlimited ...') elif 'max_open_trades' in self.args and self.args["max_open_trades"]: config.update({'max_open_trades': self.args["max_open_trades"]}) - logger.info('Parameter --max_open_trades detected, ' + logger.info('Parameter --max-open-trades detected, ' 'overriding max_open_trades to: %s ...', config.get('max_open_trades')) elif config['runmode'] in NON_UTIL_MODES: logger.info('Using max_open_trades: %s ...', config.get('max_open_trades')) self._args_to_config(config, argname='stake_amount', - logstring='Parameter --stake_amount detected, ' + logstring='Parameter --stake-amount detected, ' 'overriding stake_amount to: {} ...') self._args_to_config(config, argname='fee', From 9ec4368c6f9cee11cbc72ca5f518fcff57859b02 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Dec 2019 09:20:42 +0100 Subject: [PATCH 1244/3421] Add release documentation --- docs/developer.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/docs/developer.md b/docs/developer.md index 5b07aff03..c679b8a49 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -266,4 +266,29 @@ Once the PR against master is merged (best right after merging): * Use the button "Draft a new release" in the Github UI (subsection releases). * Use the version-number specified as tag. * Use "master" as reference (this step comes after the above PR is merged). -* Use the above changelog as release comment (as codeblock). +* Use the above changelog as release comment (as codeblock) + +### After-release + +* Update version in develop by postfixing that with `-dev` (`2019.6 -> 2019.6-dev`). +* Create a PR against develop to update that branch. + +## Releases + +### pypi + +To create a pypi release, please run the following commands: + +Additional requirement: `wheel`, `twine` (for uploading), account on pypi with proper permissions. + +``` bash +python setup.py sdist bdist_wheel + +# For pypi test (to check if some change to the installation did work) +twine upload --repository-url https://test.pypi.org/legacy/ dist/* + +# For production: +twine upload dist/* +``` + +Please don't push non-releases to the productive / real pypi instance. From c417877eb8d6ad8cc63f9b7585846837f872b701 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 5 Oct 2019 13:41:54 +0200 Subject: [PATCH 1245/3421] sort pytest dependencies --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 3710bcdc0..29f9db10c 100644 --- a/setup.py +++ b/setup.py @@ -59,7 +59,7 @@ setup(name='freqtrade', license='GPLv3', packages=['freqtrade'], setup_requires=['pytest-runner', 'numpy'], - tests_require=['pytest', 'pytest-mock', 'pytest-cov'], + tests_require=['pytest', 'pytest-asyncio', 'pytest-cov', 'pytest-mock', ], install_requires=[ # from requirements-common.txt 'ccxt>=1.18.1080', From 1a73159200278edc3de3f484811c0ecde6dbaaa9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 23 Oct 2019 06:43:22 +0200 Subject: [PATCH 1246/3421] Modify classifiers --- setup.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index 29f9db10c..7d8d7b68d 100644 --- a/setup.py +++ b/setup.py @@ -99,8 +99,12 @@ setup(name='freqtrade', ], }, classifiers=[ - 'Programming Language :: Python :: 3.6', - 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', - 'Topic :: Office/Business :: Financial :: Investment', + 'Environment :: Console', 'Intended Audience :: Science/Research', + 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Operating System :: MacOS', + 'Operating System :: Unix', + 'Topic :: Office/Business :: Financial :: Investment', ]) From 1ff0d0f1fa05137560475d7c209768fb30d3aefc Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Dec 2019 09:35:06 +0100 Subject: [PATCH 1247/3421] Add unfilledtimeout to strategy overrides --- docs/configuration.md | 5 +++-- freqtrade/resolvers/strategy_resolver.py | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 73534b6f1..846c4510d 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -55,8 +55,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Float* | `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `0.0` (no offset).*
      ***Datatype:*** *Float* | `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* -| `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled.
      ***Datatype:*** *Integer* -| `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled.
      ***Datatype:*** *Integer* +| `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Integer* +| `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Integer* | `bid_strategy.ask_last_balance` | **Required.** Set the bidding price. More information [below](#understand-ask_last_balance). | `bid_strategy.use_order_book` | Enable buying using the rates in Order Book Bids.
      ***Datatype:*** *Boolean* | `bid_strategy.order_book_top` | Bot will use the top N rate in Order Book Bids. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in Order Book Bids. *Defaults to `1`.*
      ***Datatype:*** *Positive Integer* @@ -124,6 +124,7 @@ Values set in the configuration file always overwrite values set in the strategy * `order_time_in_force` * `stake_currency` * `stake_amount` +* `unfilledtimeout` * `use_sell_signal` (ask_strategy) * `sell_profit_only` (ask_strategy) * `ignore_roi_if_buy_signal` (ask_strategy) diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 9a76b9b74..a2d14fbf3 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -61,6 +61,7 @@ class StrategyResolver(IResolver): ("stake_currency", None, False), ("stake_amount", None, False), ("startup_candle_count", None, False), + ("unfilledtimeout", None, False), ("use_sell_signal", True, True), ("sell_profit_only", False, True), ("ignore_roi_if_buy_signal", False, True), From 9835312033a300dce9bae1e92381b5bcffbdfa48 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Dec 2019 09:46:00 +0100 Subject: [PATCH 1248/3421] Improve pair_lock handling --- freqtrade/strategy/interface.py | 15 ++++++++++++++- tests/strategy/test_interface.py | 13 +++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 985ff37de..4f2e990d2 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -168,11 +168,24 @@ class IStrategy(ABC): """ Locks pair until a given timestamp happens. Locked pairs are not analyzed, and are prevented from opening new trades. + Locks can only count up (allowing users to lock pairs for a longer period of time). + To remove a lock from a pair, use `unlock_pair()` :param pair: Pair to lock :param until: datetime in UTC until the pair should be blocked from opening new trades. Needs to be timezone aware `datetime.now(timezone.utc)` """ - self._pair_locked_until[pair] = until + if pair not in self._pair_locked_until or self._pair_locked_until[pair] < until: + self._pair_locked_until[pair] = until + + def unlock_pair(self, pair) -> None: + """ + Unlocks a pair previously locked using lock_pair. + Not used by freqtrade itself, but intended to be used if users lock pairs + manually from within the strategy, to allow an easy way to unlock pairs. + :param pair: Unlock pair to allow trading again + """ + if pair in self._pair_locked_until: + del self._pair_locked_until[pair] def is_pair_locked(self, pair: str) -> bool: """ diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 605622b8f..89c38bda1 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -302,6 +302,19 @@ def test_is_pair_locked(default_conf): # ETH/BTC locked for 4 minutes assert strategy.is_pair_locked(pair) + # Test lock does not change + lock = strategy._pair_locked_until[pair] + strategy.lock_pair(pair, arrow.utcnow().shift(minutes=2).datetime) + assert lock == strategy._pair_locked_until[pair] + # XRP/BTC should not be locked now pair = 'XRP/BTC' assert not strategy.is_pair_locked(pair) + + # Unlocking a pair that's not locked should not raise an error + strategy.unlock_pair(pair) + + # Unlock original pair + pair = 'ETH/BTC' + strategy.unlock_pair(pair) + assert not strategy.is_pair_locked(pair) From 89b4f45fe353773cafe09fb9a18a941a7b1cfb9b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Dec 2019 09:47:37 +0100 Subject: [PATCH 1249/3421] Remove section about strategy template - use new-strategy intead --- docs/strategy-customization.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 4efca7d2f..c4a477f80 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -479,11 +479,6 @@ def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: Printing more than a few rows is also possible (simply use `print(dataframe)` instead of `print(dataframe.tail())`), however not recommended, as that will be very verbose (~500 lines per pair every 5 seconds). -### Where can i find a strategy template? - -The strategy template is located in the file -[user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_strategy.py). - ### Specify custom strategy location If you want to use a strategy from a different directory you can pass `--strategy-path` From a71deeda94f4c55ae1a8f30d10d034ffb0acbcd4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Dec 2019 09:55:40 +0100 Subject: [PATCH 1250/3421] Document lock-pair implementation --- docs/strategy-customization.md | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index c4a477f80..011f64d70 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -455,6 +455,49 @@ Sample return value: ETH/BTC had 5 trades, with a total profit of 1.5% (ratio of !!! Warning Trade history is not available during backtesting or hyperopt. +### Prevent trades from happening for a specific pair + +Freqtrade locks pairs automatically for the current candle (until that candle is over) when a pair is sold, preventing an immediate re-buy of that pair. + +Locked pairs will show the message `Pair is currently locked.`. + +#### Locking pairs from within the strategy + +Sometimes it may be desired to lock a pair after certain events happen (e.g. multiple losing trades in a row). + +Freqtrade has an easy method to do this from within the strategy, by calling `self.lock_pair(pair, until)`. +Until should be a time in the future, after which trading will be reenabled for that pair. + +Locks can also be lifted manually, by calling `self.unlock_pair(pair)`. + +!!! Note + Locked pairs are not persisted, so a restart of the bot, or calling `/reload_conf` will reset locked pairs. + +!!! Warning + Locking pairs is not functional during backtesting. + +##### Pair locking example + +``` python +from freqtrade.persistence import Trade +from datetime import timedelta, datetime, timezone +# Put the above lines a the top of the strategy file, next to all the other imports +# -------- + +# Within populate indicators (or populate_buy): +if self.config['runmode'] in ('live', 'dry_run'): + # fetch closed trades for the last 2 days + trades = Trade.get_trades([Trade.pair == metadata['pair'], + Trade.open_date > datetime.utcnow() - timedelta(days=2), + Trade.is_open == False, + ]).all() + # Analyze the conditions you'd like to lock the pair .... will probably be different for every strategy + sumprofit = sum(trade.close_profit for trade in trades) + if sumprofit < 0: + # Lock pair for 2 days + self.lock_pair(metadata['pair'], until=datetime.now(timezone.utc) + timedelta(days=2)) +``` + ### Print created dataframe To inspect the created dataframe, you can issue a print-statement in either `populate_buy_trend()` or `populate_sell_trend()`. From 43c25c8a328edf307dc979be0ae88a3cd3d508f8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Dec 2019 09:59:25 +0100 Subject: [PATCH 1251/3421] add documentation for is_pair_locked --- docs/strategy-customization.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 011f64d70..129939b25 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -466,10 +466,12 @@ Locked pairs will show the message `Pair is currently locked.`. Sometimes it may be desired to lock a pair after certain events happen (e.g. multiple losing trades in a row). Freqtrade has an easy method to do this from within the strategy, by calling `self.lock_pair(pair, until)`. -Until should be a time in the future, after which trading will be reenabled for that pair. +`until` must be a datetime object in the future, after which trading will be reenabled for that pair. Locks can also be lifted manually, by calling `self.unlock_pair(pair)`. +To verify if a pair is currently locked, use `self.is_pair_locked(pair)`. + !!! Note Locked pairs are not persisted, so a restart of the bot, or calling `/reload_conf` will reset locked pairs. From ffd7034c005ead82a79e4a60e20e23e225953141 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Dec 2019 10:16:16 +0100 Subject: [PATCH 1252/3421] Persist dry-run trade per default --- freqtrade/constants.py | 2 +- tests/test_persistence.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 5c7190b41..d7c6249d5 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -10,7 +10,7 @@ HYPEROPT_EPOCH = 100 # epochs RETRY_TIMEOUT = 30 # sec DEFAULT_HYPEROPT_LOSS = 'DefaultHyperOptLoss' DEFAULT_DB_PROD_URL = 'sqlite:///tradesv3.sqlite' -DEFAULT_DB_DRYRUN_URL = 'sqlite://' +DEFAULT_DB_DRYRUN_URL = 'sqlite:///tradesv3.dryrun.sqlite' UNLIMITED_STAKE_AMOUNT = 'unlimited' DEFAULT_AMOUNT_RESERVE_PERCENT = 0.05 REQUIRED_ORDERTIF = ['buy', 'sell'] diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 25ad8b6a7..b9a636e1a 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -100,7 +100,7 @@ def test_init_dryrun_db(default_conf, mocker): init(default_conf['db_url'], default_conf['dry_run']) assert create_engine_mock.call_count == 1 - assert create_engine_mock.mock_calls[0][1][0] == 'sqlite://' + assert create_engine_mock.mock_calls[0][1][0] == 'sqlite:///tradesv3.dryrun.sqlite' @pytest.mark.usefixtures("init_persistence") From dc567f99d67e5a82026fd3a5ff3002323ac51b24 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Dec 2019 10:16:49 +0100 Subject: [PATCH 1253/3421] Update documentation to new handling of dry-mode database --- docs/bot-usage.md | 8 +++-- docs/configuration.md | 2 +- docs/docker.md | 3 +- docs/plotting.md | 72 +++++++++++++++++-------------------------- 4 files changed, 37 insertions(+), 48 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 86a990946..e856755d2 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -45,14 +45,17 @@ optional arguments: -h, --help show this help message and exit --db-url PATH Override trades database URL, this is useful in custom deployments (default: `sqlite:///tradesv3.sqlite` for - Live Run mode, `sqlite://` for Dry Run). + Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for + Dry Run). --sd-notify Notify systemd service manager. --dry-run Enforce dry-run for trading (removes Exchange secrets and simulates trades). Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified. + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. -V, --version show program's version number and exit -c PATH, --config PATH Specify configuration file (default: `config.json`). @@ -68,6 +71,7 @@ Strategy arguments: Specify strategy class name which will be used by the bot. --strategy-path PATH Specify additional strategy lookup path. + ``` ### How to specify which configuration file be used? diff --git a/docs/configuration.md b/docs/configuration.md index 73534b6f1..fbd4c9815 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -96,7 +96,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `api_server.listen_port` | Bind Port. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *Integer between 1024 and 65535* | `api_server.username` | Username for API server. See the [API Server documentation](rest-api.md) for more details. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* | `api_server.password` | Password for API server. See the [API Server documentation](rest-api.md) for more details. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* -| `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite://` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances.
      ***Datatype:*** *String, SQLAlchemy connect string* +| `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite:///tradesv3.dryrun.sqlite` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances.
      ***Datatype:*** *String, SQLAlchemy connect string* | `initial_state` | Defines the initial application state. More information below.
      *Defaults to `stopped`.*
      ***Datatype:*** *Enum, either `stopped` or `running`* | `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below.
      ***Datatype:*** *Boolean* | `strategy` | **Required** Defines Strategy class to use. Recommended to be set via `--strategy NAME`.
      ***Datatype:*** *ClassName* diff --git a/docs/docker.md b/docs/docker.md index ff5bf7f25..d1684abc5 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -164,8 +164,7 @@ docker run -d \ ``` !!! Note - db-url defaults to `sqlite:///tradesv3.sqlite` but it defaults to `sqlite://` if `dry_run=True` is being used. - To override this behaviour use a custom db-url value: i.e.: `--db-url sqlite:///tradesv3.dryrun.sqlite` + When using docker, it's best to specify `--db-url` explicitly to ensure that the database URL and the mounted database file match. !!! Note All available bot command line parameters can be added to the end of the `docker run` command. diff --git a/docs/plotting.md b/docs/plotting.md index 982a5cd65..ba737562f 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -23,58 +23,43 @@ The `freqtrade plot-dataframe` subcommand shows an interactive graph with three Possible arguments: ``` -usage: freqtrade plot-dataframe [-h] [-v] [--logfile FILE] [-V] [-c PATH] - [-d PATH] [--userdir PATH] [-s NAME] - [--strategy-path PATH] [-p PAIRS [PAIRS ...]] - [--indicators1 INDICATORS1 [INDICATORS1 ...]] - [--indicators2 INDICATORS2 [INDICATORS2 ...]] - [--plot-limit INT] [--db-url PATH] - [--trade-source {DB,file}] [--export EXPORT] - [--export-filename PATH] - [--timerange TIMERANGE] [-i TICKER_INTERVAL] +usage: freqtrade plot-dataframe [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME] + [--strategy-path PATH] [-p PAIRS [PAIRS ...]] [--indicators1 INDICATORS1 [INDICATORS1 ...]] + [--indicators2 INDICATORS2 [INDICATORS2 ...]] [--plot-limit INT] [--db-url PATH] + [--trade-source {DB,file}] [--export EXPORT] [--export-filename PATH] [--timerange TIMERANGE] + [-i TICKER_INTERVAL] optional arguments: -h, --help show this help message and exit -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] - Show profits for only these pairs. Pairs are space- - separated. + Show profits for only these pairs. Pairs are space-separated. --indicators1 INDICATORS1 [INDICATORS1 ...] - Set indicators from your strategy you want in the - first row of the graph. Space-separated list. Example: + Set indicators from your strategy you want in the first row of the graph. Space-separated list. Example: `ema3 ema5`. Default: `['sma', 'ema3', 'ema5']`. --indicators2 INDICATORS2 [INDICATORS2 ...] - Set indicators from your strategy you want in the - third row of the graph. Space-separated list. Example: + Set indicators from your strategy you want in the third row of the graph. Space-separated list. Example: `fastd fastk`. Default: `['macd', 'macdsignal']`. - --plot-limit INT Specify tick limit for plotting. Notice: too high - values cause huge files. Default: 750. - --db-url PATH Override trades database URL, this is useful in custom - deployments (default: `sqlite:///tradesv3.sqlite` for - Live Run mode, `sqlite://` for Dry Run). + --plot-limit INT Specify tick limit for plotting. Notice: too high values cause huge files. Default: 750. + --db-url PATH Override trades database URL, this is useful in custom deployments (default: `sqlite:///tradesv3.sqlite` + for Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for Dry Run). --trade-source {DB,file} - Specify the source for trades (Can be DB or file - (backtest file)) Default: file - --export EXPORT Export backtest results, argument are: trades. - Example: `--export=trades` + Specify the source for trades (Can be DB or file (backtest file)) Default: file + --export EXPORT Export backtest results, argument are: trades. Example: `--export=trades` --export-filename PATH - Save backtest results to the file with this filename - (default: `user_data/backtest_results/backtest- - result.json`). Requires `--export` to be set as well. - Example: `--export-filename=user_data/backtest_results - /backtest_today.json` + Save backtest results to the file with this filename. Requires `--export` to be set as well. Example: + `--export-filename=user_data/backtest_results/backtest_today.json` --timerange TIMERANGE Specify what timerange of data to use. -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL - Specify ticker interval (`1m`, `5m`, `30m`, `1h`, - `1d`). + Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`). Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified. + --logfile FILE Log to the file specified. Special values are: 'syslog', 'journald'. See the documentation for more + details. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: `config.json`). - Multiple --config options may be used. Can be set to + Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-` to read config from stdin. -d PATH, --datadir PATH Path to directory with historical backtesting data. @@ -83,8 +68,7 @@ Common arguments: Strategy arguments: -s NAME, --strategy NAME - Specify strategy class name (default: - `DefaultStrategy`). + Specify strategy class name which will be used by the bot. --strategy-path PATH Specify additional strategy lookup path. ``` @@ -173,14 +157,14 @@ optional arguments: --export EXPORT Export backtest results, argument are: trades. Example: `--export=trades` --export-filename PATH - Save backtest results to the file with this filename - (default: `user_data/backtest_results/backtest- - result.json`). Requires `--export` to be set as well. - Example: `--export-filename=user_data/backtest_results - /backtest_today.json` + Save backtest results to the file with this filename. + Requires `--export` to be set as well. Example: + `--export-filename=user_data/backtest_results/backtest + _today.json` --db-url PATH Override trades database URL, this is useful in custom deployments (default: `sqlite:///tradesv3.sqlite` for - Live Run mode, `sqlite://` for Dry Run). + Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for + Dry Run). --trade-source {DB,file} Specify the source for trades (Can be DB or file (backtest file)) Default: file @@ -190,7 +174,9 @@ optional arguments: Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified. + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. -V, --version show program's version number and exit -c PATH, --config PATH Specify configuration file (default: `config.json`). From 2195ae59d6227de123a85a1a547be0d956b49656 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Dec 2019 12:49:01 +0100 Subject: [PATCH 1254/3421] Use different time offsets to avoid confusion --- docs/strategy-customization.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 129939b25..d59b097d7 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -476,7 +476,7 @@ To verify if a pair is currently locked, use `self.is_pair_locked(pair)`. Locked pairs are not persisted, so a restart of the bot, or calling `/reload_conf` will reset locked pairs. !!! Warning - Locking pairs is not functional during backtesting. + Locking pairs is not functioning during backtesting. ##### Pair locking example @@ -496,8 +496,8 @@ if self.config['runmode'] in ('live', 'dry_run'): # Analyze the conditions you'd like to lock the pair .... will probably be different for every strategy sumprofit = sum(trade.close_profit for trade in trades) if sumprofit < 0: - # Lock pair for 2 days - self.lock_pair(metadata['pair'], until=datetime.now(timezone.utc) + timedelta(days=2)) + # Lock pair for 12 hours + self.lock_pair(metadata['pair'], until=datetime.now(timezone.utc) + timedelta(hours=12)) ``` ### Print created dataframe From 76a93fabc7027f80b5a45b6365b36891d127d1aa Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 06:26:13 +0000 Subject: [PATCH 1255/3421] Bump python from 3.7.5-slim-stretch to 3.7.6-slim-stretch Bumps python from 3.7.5-slim-stretch to 3.7.6-slim-stretch. Signed-off-by: dependabot-preview[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index dc9b04403..f631d891d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.7.5-slim-stretch +FROM python:3.7.6-slim-stretch RUN apt-get update \ && apt-get -y install curl build-essential libssl-dev \ From 8f17b81329ea59ab7ad45a89501b9f42f79b32f4 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 07:37:04 +0000 Subject: [PATCH 1256/3421] Bump ccxt from 1.20.84 to 1.21.12 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.20.84 to 1.21.12. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.20.84...1.21.12) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index a6d9a6f5e..ed6d68742 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.20.84 +ccxt==1.21.12 SQLAlchemy==1.3.11 python-telegram-bot==12.2.0 arrow==0.15.4 From 20ad8a379d51f29d3e00a1f7c3a8cdfbf33ed64b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 07:38:05 +0000 Subject: [PATCH 1257/3421] Bump numpy from 1.17.4 to 1.18.0 Bumps [numpy](https://github.com/numpy/numpy) from 1.17.4 to 1.18.0. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.17.4...v1.18.0) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ebf27abd4..e0e2942b1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Load common requirements -r requirements-common.txt -numpy==1.17.4 +numpy==1.18.0 pandas==0.25.3 From 31a7e9feedb72675845f8e1e1cf2fb29e91d8bc7 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 07:38:10 +0000 Subject: [PATCH 1258/3421] Bump mypy from 0.750 to 0.761 Bumps [mypy](https://github.com/python/mypy) from 0.750 to 0.761. - [Release notes](https://github.com/python/mypy/releases) - [Commits](https://github.com/python/mypy/compare/v0.750...v0.761) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index fe5b4e369..1357bba00 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ coveralls==1.9.2 flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==3.1.0 -mypy==0.750 +mypy==0.761 pytest==5.3.2 pytest-asyncio==0.10.0 pytest-cov==2.8.1 From 9cfbe98a237549bef2c3d3e87e2d6a933911b8b0 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 07:39:25 +0000 Subject: [PATCH 1259/3421] Bump scipy from 1.3.3 to 1.4.1 Bumps [scipy](https://github.com/scipy/scipy) from 1.3.3 to 1.4.1. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.3.3...v1.4.1) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index b2428e37d..9b408dbed 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -2,7 +2,7 @@ -r requirements.txt # Required for hyperopt -scipy==1.3.3 +scipy==1.4.1 scikit-learn==0.22 scikit-optimize==0.5.2 filelock==3.0.12 From 779278ed507d1f7f9070ee50f8349b720b499869 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2019 08:28:05 +0000 Subject: [PATCH 1260/3421] Bump sqlalchemy from 1.3.11 to 1.3.12 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.11 to 1.3.12. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index ed6d68742..9d0fd4756 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.21.12 -SQLAlchemy==1.3.11 +SQLAlchemy==1.3.12 python-telegram-bot==12.2.0 arrow==0.15.4 cachetools==4.0.0 From 1c5f8070e547d3c1766779697e553efa47742d42 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 09:53:55 +0100 Subject: [PATCH 1261/3421] Refactor build_paths to staticmethod --- freqtrade/resolvers/iresolver.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 3bad42fd9..0b986debb 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -17,7 +17,8 @@ class IResolver: This class contains all the logic to load custom classes """ - def build_search_paths(self, config, current_path: Path, user_subdir: Optional[str] = None, + @staticmethod + def build_search_paths(config, current_path: Path, user_subdir: Optional[str] = None, extra_dir: Optional[str] = None) -> List[Path]: abs_paths: List[Path] = [current_path] From 5fefa9e97c01b83accd9ddd8c44bad83f331304d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 09:56:12 +0100 Subject: [PATCH 1262/3421] Convert PairlistResolver to static loader --- freqtrade/pairlist/pairlistmanager.py | 14 ++++---- freqtrade/resolvers/pairlist_resolver.py | 43 ++++++++++++++---------- tests/pairlist/test_pairlist.py | 2 +- 3 files changed, 34 insertions(+), 25 deletions(-) diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index fa5382c37..1530710d2 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -28,13 +28,13 @@ class PairListManager(): if 'method' not in pl: logger.warning(f"No method in {pl}") continue - pairl = PairListResolver(pl.get('method'), - exchange=exchange, - pairlistmanager=self, - config=config, - pairlistconfig=pl, - pairlist_pos=len(self._pairlists) - ).pairlist + pairl = PairListResolver.load_pairlist(pl.get('method'), + exchange=exchange, + pairlistmanager=self, + config=config, + pairlistconfig=pl, + pairlist_pos=len(self._pairlists) + ) self._tickers_needed = pairl.needstickers or self._tickers_needed self._pairlists.append(pairl) diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index d849f4ffb..5b5bcee3a 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -18,23 +18,32 @@ class PairListResolver(IResolver): This class contains all the logic to load custom PairList class """ - __slots__ = ['pairlist'] + __slots__ = [] - def __init__(self, pairlist_name: str, exchange, pairlistmanager, - config: dict, pairlistconfig: dict, pairlist_pos: int) -> None: + @staticmethod + def load_pairlist(pairlist_name: str, exchange, pairlistmanager, + config: dict, pairlistconfig: dict, pairlist_pos: int) -> IPairList: """ - Load the custom class from config parameter - :param config: configuration dictionary or None + Load the pairlist with pairlist_name + :param pairlist_name: Classname of the pairlist + :param exchange: Initialized exchange class + :param pairlistmanager: Initialized pairlist manager + :param config: configuration dictionary + :param pairlistconfig: Configuration dedicated to this pairlist + :param pairlist_pos: Position of the pairlist in the list of pairlists + :return: initialized Pairlist class """ - self.pairlist = self._load_pairlist(pairlist_name, config, - kwargs={'exchange': exchange, - 'pairlistmanager': pairlistmanager, - 'config': config, - 'pairlistconfig': pairlistconfig, - 'pairlist_pos': pairlist_pos}) - def _load_pairlist( - self, pairlist_name: str, config: dict, kwargs: dict) -> IPairList: + return PairListResolver._load_pairlist(pairlist_name, config, + kwargs={'exchange': exchange, + 'pairlistmanager': pairlistmanager, + 'config': config, + 'pairlistconfig': pairlistconfig, + 'pairlist_pos': pairlist_pos}) + + + @staticmethod + def _load_pairlist(pairlist_name: str, config: dict, kwargs: dict) -> IPairList: """ Search and loads the specified pairlist. :param pairlist_name: name of the module to import @@ -44,11 +53,11 @@ class PairListResolver(IResolver): """ current_path = Path(__file__).parent.parent.joinpath('pairlist').resolve() - abs_paths = self.build_search_paths(config, current_path=current_path, - user_subdir=None, extra_dir=None) + abs_paths = IResolver.build_search_paths(config, current_path=current_path, + user_subdir=None, extra_dir=None) - pairlist = self._load_object(paths=abs_paths, object_type=IPairList, - object_name=pairlist_name, kwargs=kwargs) + pairlist = IResolver._load_object(paths=abs_paths, object_type=IPairList, + object_name=pairlist_name, kwargs=kwargs) if pairlist: return pairlist raise OperationalException( diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 43285cdb1..e7f098777 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -53,7 +53,7 @@ def test_load_pairlist_noexist(mocker, markets, default_conf): with pytest.raises(OperationalException, match=r"Impossible to load Pairlist 'NonexistingPairList'. " r"This class does not exist or contains Python code errors."): - PairListResolver('NonexistingPairList', bot.exchange, plm, default_conf, {}, 1) + PairListResolver.load_pairlist('NonexistingPairList', bot.exchange, plm, default_conf, {}, 1) def test_refresh_market_pair_not_in_whitelist(mocker, markets, static_pl_conf): From 560acb7cea6fa34bcf1eb0473cc373970fb97fd0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 10:03:18 +0100 Subject: [PATCH 1263/3421] Convert ExchangeResolver to static loader class --- freqtrade/freqtradebot.py | 2 +- freqtrade/optimize/backtesting.py | 2 +- freqtrade/resolvers/exchange_resolver.py | 20 +++++++++++--------- freqtrade/resolvers/pairlist_resolver.py | 3 --- freqtrade/utils.py | 8 ++++---- tests/conftest.py | 2 +- tests/exchange/test_exchange.py | 8 ++++---- tests/pairlist/test_pairlist.py | 3 ++- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 8ae027fa2..001b7f02d 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -60,7 +60,7 @@ class FreqtradeBot: # Check config consistency here since strategies can set certain options validate_config_consistency(config) - self.exchange = ExchangeResolver(self.config['exchange']['name'], self.config).exchange + self.exchange = ExchangeResolver.load_exchange(self.config['exchange']['name'], self.config) persistence.init(self.config.get('db_url', None), clean_open_orders=self.config.get('dry_run', False)) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 726257cdd..bab997cb1 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -60,7 +60,7 @@ class Backtesting: # Reset keys for backtesting remove_credentials(self.config) self.strategylist: List[IStrategy] = [] - self.exchange = ExchangeResolver(self.config['exchange']['name'], self.config).exchange + self.exchange = ExchangeResolver.load_exchange(self.config['exchange']['name'], self.config) if config.get('fee'): self.fee = config['fee'] diff --git a/freqtrade/resolvers/exchange_resolver.py b/freqtrade/resolvers/exchange_resolver.py index 60f37b1c9..e28a5cf80 100644 --- a/freqtrade/resolvers/exchange_resolver.py +++ b/freqtrade/resolvers/exchange_resolver.py @@ -15,9 +15,8 @@ class ExchangeResolver(IResolver): This class contains all the logic to load a custom exchange class """ - __slots__ = ['exchange'] - - def __init__(self, exchange_name: str, config: dict, validate: bool = True) -> None: + @staticmethod + def load_exchange(exchange_name: str, config: dict, validate: bool = True) -> Exchange: """ Load the custom class from config parameter :param config: configuration dictionary @@ -25,17 +24,20 @@ class ExchangeResolver(IResolver): # Map exchange name to avoid duplicate classes for identical exchanges exchange_name = MAP_EXCHANGE_CHILDCLASS.get(exchange_name, exchange_name) exchange_name = exchange_name.title() + exchange = None try: - self.exchange = self._load_exchange(exchange_name, kwargs={'config': config, - 'validate': validate}) + exchange = ExchangeResolver._load_exchange(exchange_name, + kwargs={'config': config, + 'validate': validate}) except ImportError: logger.info( f"No {exchange_name} specific subclass found. Using the generic class instead.") - if not hasattr(self, "exchange"): - self.exchange = Exchange(config, validate=validate) + if not exchange: + exchange = Exchange(config, validate=validate) + return exchange - def _load_exchange( - self, exchange_name: str, kwargs: dict) -> Exchange: + @staticmethod + def _load_exchange(exchange_name: str, kwargs: dict) -> Exchange: """ Loads the specified exchange. Only checks for exchanges exported in freqtrade.exchanges diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index 5b5bcee3a..611660ff4 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -18,8 +18,6 @@ class PairListResolver(IResolver): This class contains all the logic to load custom PairList class """ - __slots__ = [] - @staticmethod def load_pairlist(pairlist_name: str, exchange, pairlistmanager, config: dict, pairlistconfig: dict, pairlist_pos: int) -> IPairList: @@ -41,7 +39,6 @@ class PairListResolver(IResolver): 'pairlistconfig': pairlistconfig, 'pairlist_pos': pairlist_pos}) - @staticmethod def _load_pairlist(pairlist_name: str, config: dict, kwargs: dict) -> IPairList: """ diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 9e01c7ea6..18966c574 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -198,7 +198,7 @@ def start_download_data(args: Dict[str, Any]) -> None: pairs_not_available: List[str] = [] # Init exchange - exchange = ExchangeResolver(config['exchange']['name'], config).exchange + exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config) try: if config.get('download_trades'): @@ -233,7 +233,7 @@ def start_list_timeframes(args: Dict[str, Any]) -> None: config['ticker_interval'] = None # Init exchange - exchange = ExchangeResolver(config['exchange']['name'], config, validate=False).exchange + exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) if args['print_one_column']: print('\n'.join(exchange.timeframes)) @@ -252,7 +252,7 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) # Init exchange - exchange = ExchangeResolver(config['exchange']['name'], config, validate=False).exchange + exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) # By default only active pairs/markets are to be shown active_only = not args.get('list_pairs_all', False) @@ -333,7 +333,7 @@ def start_test_pairlist(args: Dict[str, Any]) -> None: from freqtrade.pairlist.pairlistmanager import PairListManager config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) - exchange = ExchangeResolver(config['exchange']['name'], config, validate=False).exchange + exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) quote_currencies = args.get('quote_currencies') if not quote_currencies: diff --git a/tests/conftest.py b/tests/conftest.py index 82111528e..501f89fff 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -77,7 +77,7 @@ def get_patched_exchange(mocker, config, api_mock=None, id='bittrex', patch_exchange(mocker, api_mock, id, mock_markets) config["exchange"]["name"] = id try: - exchange = ExchangeResolver(id, config).exchange + exchange = ExchangeResolver.load_exchange(id, config) except ImportError: exchange = Exchange(config) return exchange diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 629f99aa2..dccf7d74f 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -124,19 +124,19 @@ def test_exchange_resolver(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) - exchange = ExchangeResolver('Bittrex', default_conf).exchange + exchange = ExchangeResolver.load_exchange('Bittrex', default_conf) assert isinstance(exchange, Exchange) assert log_has_re(r"No .* specific subclass found. Using the generic class instead.", caplog) caplog.clear() - exchange = ExchangeResolver('kraken', default_conf).exchange + exchange = ExchangeResolver.load_exchange('kraken', default_conf) assert isinstance(exchange, Exchange) assert isinstance(exchange, Kraken) assert not isinstance(exchange, Binance) assert not log_has_re(r"No .* specific subclass found. Using the generic class instead.", caplog) - exchange = ExchangeResolver('binance', default_conf).exchange + exchange = ExchangeResolver.load_exchange('binance', default_conf) assert isinstance(exchange, Exchange) assert isinstance(exchange, Binance) assert not isinstance(exchange, Kraken) @@ -145,7 +145,7 @@ def test_exchange_resolver(default_conf, mocker, caplog): caplog) # Test mapping - exchange = ExchangeResolver('binanceus', default_conf).exchange + exchange = ExchangeResolver.load_exchange('binanceus', default_conf) assert isinstance(exchange, Exchange) assert isinstance(exchange, Binance) assert not isinstance(exchange, Kraken) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index e7f098777..21929de2b 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -53,7 +53,8 @@ def test_load_pairlist_noexist(mocker, markets, default_conf): with pytest.raises(OperationalException, match=r"Impossible to load Pairlist 'NonexistingPairList'. " r"This class does not exist or contains Python code errors."): - PairListResolver.load_pairlist('NonexistingPairList', bot.exchange, plm, default_conf, {}, 1) + PairListResolver.load_pairlist('NonexistingPairList', bot.exchange, plm, + default_conf, {}, 1) def test_refresh_market_pair_not_in_whitelist(mocker, markets, static_pl_conf): From 248ef5a0eac41a82febd07ef8b1e4f421f7cce38 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 10:06:19 +0100 Subject: [PATCH 1264/3421] Convert HyperoptResolver to static loader --- freqtrade/optimize/hyperopt.py | 2 +- freqtrade/resolvers/hyperopt_resolver.py | 29 +++++++++++++----------- tests/optimize/test_hyperopt.py | 6 ++--- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 521a4d790..a4a8f79d1 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -64,7 +64,7 @@ class Hyperopt: self.backtesting = Backtesting(self.config) - self.custom_hyperopt = HyperOptResolver(self.config).hyperopt + self.custom_hyperopt = HyperOptResolver.load_hyperopt(self.config) self.custom_hyperoptloss = HyperOptLossResolver(self.config).hyperoptloss self.calculate_loss = self.custom_hyperoptloss.hyperopt_loss_function diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 05efa1164..a7f922c7b 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -20,11 +20,11 @@ class HyperOptResolver(IResolver): """ This class contains all the logic to load custom hyperopt class """ - __slots__ = ['hyperopt'] - def __init__(self, config: Dict) -> None: + @staticmethod + def load_hyperopt(config: Dict) -> IHyperOpt: """ - Load the custom class from config parameter + Load the custom hyperopt class from config parameter :param config: configuration dictionary """ if not config.get('hyperopt'): @@ -33,21 +33,23 @@ class HyperOptResolver(IResolver): hyperopt_name = config['hyperopt'] - self.hyperopt = self._load_hyperopt(hyperopt_name, config, - extra_dir=config.get('hyperopt_path')) + hyperopt = HyperOptResolver._load_hyperopt(hyperopt_name, config, + extra_dir=config.get('hyperopt_path')) - if not hasattr(self.hyperopt, 'populate_indicators'): + if not hasattr(hyperopt, 'populate_indicators'): logger.warning("Hyperopt class does not provide populate_indicators() method. " "Using populate_indicators from the strategy.") - if not hasattr(self.hyperopt, 'populate_buy_trend'): + if not hasattr(hyperopt, 'populate_buy_trend'): logger.warning("Hyperopt class does not provide populate_buy_trend() method. " "Using populate_buy_trend from the strategy.") - if not hasattr(self.hyperopt, 'populate_sell_trend'): + if not hasattr(hyperopt, 'populate_sell_trend'): logger.warning("Hyperopt class does not provide populate_sell_trend() method. " "Using populate_sell_trend from the strategy.") + return hyperopt + @staticmethod def _load_hyperopt( - self, hyperopt_name: str, config: Dict, extra_dir: Optional[str] = None) -> IHyperOpt: + hyperopt_name: str, config: Dict, extra_dir: Optional[str] = None) -> IHyperOpt: """ Search and loads the specified hyperopt. :param hyperopt_name: name of the module to import @@ -57,11 +59,12 @@ class HyperOptResolver(IResolver): """ current_path = Path(__file__).parent.parent.joinpath('optimize').resolve() - abs_paths = self.build_search_paths(config, current_path=current_path, - user_subdir=USERPATH_HYPEROPTS, extra_dir=extra_dir) + abs_paths = IResolver.build_search_paths(config, current_path=current_path, + user_subdir=USERPATH_HYPEROPTS, + extra_dir=extra_dir) - hyperopt = self._load_object(paths=abs_paths, object_type=IHyperOpt, - object_name=hyperopt_name, kwargs={'config': config}) + hyperopt = IResolver._load_object(paths=abs_paths, object_type=IHyperOpt, + object_name=hyperopt_name, kwargs={'config': config}) if hyperopt: return hyperopt raise OperationalException( diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 29b8b5b16..37de32ab0 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -163,7 +163,7 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None: MagicMock(return_value=hyperopt(default_conf)) ) default_conf.update({'hyperopt': 'DefaultHyperOpt'}) - x = HyperOptResolver(default_conf).hyperopt + x = HyperOptResolver.load_hyperopt(default_conf) assert not hasattr(x, 'populate_indicators') assert not hasattr(x, 'populate_buy_trend') assert not hasattr(x, 'populate_sell_trend') @@ -180,7 +180,7 @@ def test_hyperoptresolver_wrongname(mocker, default_conf, caplog) -> None: default_conf.update({'hyperopt': "NonExistingHyperoptClass"}) with pytest.raises(OperationalException, match=r'Impossible to load Hyperopt.*'): - HyperOptResolver(default_conf).hyperopt + HyperOptResolver.load_hyperopt(default_conf) def test_hyperoptresolver_noname(default_conf): @@ -188,7 +188,7 @@ def test_hyperoptresolver_noname(default_conf): with pytest.raises(OperationalException, match="No Hyperopt set. Please use `--hyperopt` to specify " "the Hyperopt class to use."): - HyperOptResolver(default_conf) + HyperOptResolver.load_hyperopt(default_conf) def test_hyperoptlossresolver(mocker, default_conf, caplog) -> None: From 6d5aca4f323dd06cac94cbf598173be6fb3ed645 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 10:09:08 +0100 Subject: [PATCH 1265/3421] Convert hyperoptloss resolver to static loader --- freqtrade/optimize/hyperopt.py | 2 +- freqtrade/resolvers/hyperopt_resolver.py | 26 +++++++++++++----------- tests/optimize/test_hyperopt.py | 14 ++++++------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index a4a8f79d1..48f883ac5 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -66,7 +66,7 @@ class Hyperopt: self.custom_hyperopt = HyperOptResolver.load_hyperopt(self.config) - self.custom_hyperoptloss = HyperOptLossResolver(self.config).hyperoptloss + self.custom_hyperoptloss = HyperOptLossResolver.load_hyperoptloss(self.config) self.calculate_loss = self.custom_hyperoptloss.hyperopt_loss_function self.trials_file = (self.config['user_data_dir'] / diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index a7f922c7b..0726b0627 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -77,9 +77,9 @@ class HyperOptLossResolver(IResolver): """ This class contains all the logic to load custom hyperopt loss class """ - __slots__ = ['hyperoptloss'] - def __init__(self, config: Dict) -> None: + @staticmethod + def load_hyperoptloss(config: Dict) -> IHyperOptLoss: """ Load the custom class from config parameter :param config: configuration dictionary @@ -89,20 +89,21 @@ class HyperOptLossResolver(IResolver): # default hyperopt loss hyperoptloss_name = config.get('hyperopt_loss') or DEFAULT_HYPEROPT_LOSS - self.hyperoptloss = self._load_hyperoptloss( + hyperoptloss = HyperOptLossResolver._load_hyperoptloss( hyperoptloss_name, config, extra_dir=config.get('hyperopt_path')) # Assign ticker_interval to be used in hyperopt - self.hyperoptloss.__class__.ticker_interval = str(config['ticker_interval']) + hyperoptloss.__class__.ticker_interval = str(config['ticker_interval']) - if not hasattr(self.hyperoptloss, 'hyperopt_loss_function'): + if not hasattr(hyperoptloss, 'hyperopt_loss_function'): raise OperationalException( f"Found HyperoptLoss class {hyperoptloss_name} does not " "implement `hyperopt_loss_function`.") + return hyperoptloss - def _load_hyperoptloss( - self, hyper_loss_name: str, config: Dict, - extra_dir: Optional[str] = None) -> IHyperOptLoss: + @staticmethod + def _load_hyperoptloss(hyper_loss_name: str, config: Dict, + extra_dir: Optional[str] = None) -> IHyperOptLoss: """ Search and loads the specified hyperopt loss class. :param hyper_loss_name: name of the module to import @@ -112,11 +113,12 @@ class HyperOptLossResolver(IResolver): """ current_path = Path(__file__).parent.parent.joinpath('optimize').resolve() - abs_paths = self.build_search_paths(config, current_path=current_path, - user_subdir=USERPATH_HYPEROPTS, extra_dir=extra_dir) + abs_paths = IResolver.build_search_paths(config, current_path=current_path, + user_subdir=USERPATH_HYPEROPTS, + extra_dir=extra_dir) - hyperoptloss = self._load_object(paths=abs_paths, object_type=IHyperOptLoss, - object_name=hyper_loss_name) + hyperoptloss = IResolver._load_object(paths=abs_paths, object_type=IHyperOptLoss, + object_name=hyper_loss_name) if hyperoptloss: return hyperoptloss diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 37de32ab0..9c6e73c53 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -198,7 +198,7 @@ def test_hyperoptlossresolver(mocker, default_conf, caplog) -> None: 'freqtrade.resolvers.hyperopt_resolver.HyperOptLossResolver._load_hyperoptloss', MagicMock(return_value=hl) ) - x = HyperOptLossResolver(default_conf).hyperoptloss + x = HyperOptLossResolver.load_hyperoptloss(default_conf) assert hasattr(x, "hyperopt_loss_function") @@ -206,7 +206,7 @@ def test_hyperoptlossresolver_wrongname(mocker, default_conf, caplog) -> None: default_conf.update({'hyperopt_loss': "NonExistingLossClass"}) with pytest.raises(OperationalException, match=r'Impossible to load HyperoptLoss.*'): - HyperOptLossResolver(default_conf).hyperopt + HyperOptLossResolver.load_hyperoptloss(default_conf) def test_start_not_installed(mocker, default_conf, caplog, import_fails) -> None: @@ -286,7 +286,7 @@ def test_start_filelock(mocker, default_conf, caplog) -> None: def test_loss_calculation_prefer_correct_trade_count(default_conf, hyperopt_results) -> None: - hl = HyperOptLossResolver(default_conf).hyperoptloss + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) correct = hl.hyperopt_loss_function(hyperopt_results, 600) over = hl.hyperopt_loss_function(hyperopt_results, 600 + 100) under = hl.hyperopt_loss_function(hyperopt_results, 600 - 100) @@ -298,7 +298,7 @@ def test_loss_calculation_prefer_shorter_trades(default_conf, hyperopt_results) resultsb = hyperopt_results.copy() resultsb.loc[1, 'trade_duration'] = 20 - hl = HyperOptLossResolver(default_conf).hyperoptloss + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) longer = hl.hyperopt_loss_function(hyperopt_results, 100) shorter = hl.hyperopt_loss_function(resultsb, 100) assert shorter < longer @@ -310,7 +310,7 @@ def test_loss_calculation_has_limited_profit(default_conf, hyperopt_results) -> results_under = hyperopt_results.copy() results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 - hl = HyperOptLossResolver(default_conf).hyperoptloss + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) correct = hl.hyperopt_loss_function(hyperopt_results, 600) over = hl.hyperopt_loss_function(results_over, 600) under = hl.hyperopt_loss_function(results_under, 600) @@ -325,7 +325,7 @@ def test_sharpe_loss_prefers_higher_profits(default_conf, hyperopt_results) -> N results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 default_conf.update({'hyperopt_loss': 'SharpeHyperOptLoss'}) - hl = HyperOptLossResolver(default_conf).hyperoptloss + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), datetime(2019, 1, 1), datetime(2019, 5, 1)) over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), @@ -343,7 +343,7 @@ def test_onlyprofit_loss_prefers_higher_profits(default_conf, hyperopt_results) results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 default_conf.update({'hyperopt_loss': 'OnlyProfitHyperOptLoss'}) - hl = HyperOptLossResolver(default_conf).hyperoptloss + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), datetime(2019, 1, 1), datetime(2019, 5, 1)) over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), From c6d22339788e9686552d171bf19cb00d41f7cb0a Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 10:23:48 +0100 Subject: [PATCH 1266/3421] Convert StrategyLoader to static loader --- docs/strategy_analysis_example.md | 6 +- freqtrade/freqtradebot.py | 2 +- freqtrade/optimize/backtesting.py | 4 +- freqtrade/optimize/edge_cli.py | 2 +- freqtrade/plot/plotting.py | 2 +- freqtrade/resolvers/strategy_resolver.py | 65 ++++---- .../templates/strategy_analysis_example.ipynb | 6 +- tests/strategy/test_strategy.py | 141 +++++++++--------- 8 files changed, 116 insertions(+), 112 deletions(-) diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index 9e61bda65..cc6b9805f 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -44,9 +44,9 @@ candles.head() ```python # Load strategy using values set above from freqtrade.resolvers import StrategyResolver -strategy = StrategyResolver({'strategy': strategy_name, - 'user_data_dir': user_data_dir, - 'strategy_path': strategy_location}).strategy +strategy = StrategyResolver.load_strategy({'strategy': strategy_name, + 'user_data_dir': user_data_dir, + 'strategy_path': strategy_location}) # Generate buy/sell signals using strategy df = strategy.analyze_ticker(candles, {'pair': pair}) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 001b7f02d..1b89cc75b 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -55,7 +55,7 @@ class FreqtradeBot: self.heartbeat_interval = self.config.get('internals', {}).get('heartbeat_interval', 60) - self.strategy: IStrategy = StrategyResolver(self.config).strategy + self.strategy: IStrategy = StrategyResolver.load_strategy(self.config) # Check config consistency here since strategies can set certain options validate_config_consistency(config) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index bab997cb1..ffa112bd5 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -75,12 +75,12 @@ class Backtesting: for strat in list(self.config['strategy_list']): stratconf = deepcopy(self.config) stratconf['strategy'] = strat - self.strategylist.append(StrategyResolver(stratconf).strategy) + self.strategylist.append(StrategyResolver.load_strategy(stratconf)) validate_config_consistency(stratconf) else: # No strategy list specified, only one strategy - self.strategylist.append(StrategyResolver(self.config).strategy) + self.strategylist.append(StrategyResolver.load_strategy(self.config)) validate_config_consistency(self.config) if "ticker_interval" not in self.config: diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py index 3848623db..ea5cc663d 100644 --- a/freqtrade/optimize/edge_cli.py +++ b/freqtrade/optimize/edge_cli.py @@ -34,7 +34,7 @@ class EdgeCli: remove_credentials(self.config) self.config['stake_amount'] = constants.UNLIMITED_STAKE_AMOUNT self.exchange = Exchange(self.config) - self.strategy = StrategyResolver(self.config).strategy + self.strategy = StrategyResolver.load_strategy(self.config) validate_config_consistency(self.config) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 85089af9c..7cd4ab854 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -340,7 +340,7 @@ def load_and_plot_trades(config: Dict[str, Any]): - Generate plot files :return: None """ - strategy = StrategyResolver(config).strategy + strategy = StrategyResolver.load_strategy(config) plot_elements = init_plotscript(config) trades = plot_elements['trades'] diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index a2d14fbf3..6d3fe5ff9 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -20,12 +20,11 @@ logger = logging.getLogger(__name__) class StrategyResolver(IResolver): """ - This class contains all the logic to load custom strategy class + This class contains the logic to load custom strategy class """ - __slots__ = ['strategy'] - - def __init__(self, config: Optional[Dict] = None) -> None: + @staticmethod + def load_strategy(config: Optional[Dict] = None) -> IStrategy: """ Load the custom class from config parameter :param config: configuration dictionary or None @@ -37,9 +36,9 @@ class StrategyResolver(IResolver): "the strategy class to use.") strategy_name = config['strategy'] - self.strategy: IStrategy = self._load_strategy(strategy_name, - config=config, - extra_dir=config.get('strategy_path')) + strategy: IStrategy = StrategyResolver._load_strategy( + strategy_name, config=config, + extra_dir=config.get('strategy_path')) # make sure ask_strategy dict is available if 'ask_strategy' not in config: @@ -68,9 +67,11 @@ class StrategyResolver(IResolver): ] for attribute, default, ask_strategy in attributes: if ask_strategy: - self._override_attribute_helper(config['ask_strategy'], attribute, default) + StrategyResolver._override_attribute_helper(strategy, config['ask_strategy'], + attribute, default) else: - self._override_attribute_helper(config, attribute, default) + StrategyResolver._override_attribute_helper(strategy, config, + attribute, default) # Loop this list again to have output combined for attribute, _, exp in attributes: @@ -80,14 +81,16 @@ class StrategyResolver(IResolver): logger.info("Strategy using %s: %s", attribute, config[attribute]) # Sort and apply type conversions - self.strategy.minimal_roi = OrderedDict(sorted( - {int(key): value for (key, value) in self.strategy.minimal_roi.items()}.items(), + strategy.minimal_roi = OrderedDict(sorted( + {int(key): value for (key, value) in strategy.minimal_roi.items()}.items(), key=lambda t: t[0])) - self.strategy.stoploss = float(self.strategy.stoploss) + strategy.stoploss = float(strategy.stoploss) - self._strategy_sanity_validations() + StrategyResolver._strategy_sanity_validations(strategy) + return strategy - def _override_attribute_helper(self, config, attribute: str, default): + @staticmethod + def _override_attribute_helper(strategy, config, attribute: str, default): """ Override attributes in the strategy. Prevalence: @@ -96,30 +99,32 @@ class StrategyResolver(IResolver): - default (if not None) """ if attribute in config: - setattr(self.strategy, attribute, config[attribute]) + setattr(strategy, attribute, config[attribute]) logger.info("Override strategy '%s' with value in config file: %s.", attribute, config[attribute]) - elif hasattr(self.strategy, attribute): - val = getattr(self.strategy, attribute) + elif hasattr(strategy, attribute): + val = getattr(strategy, attribute) # None's cannot exist in the config, so do not copy them if val is not None: config[attribute] = val # Explicitly check for None here as other "falsy" values are possible elif default is not None: - setattr(self.strategy, attribute, default) + setattr(strategy, attribute, default) config[attribute] = default - def _strategy_sanity_validations(self): - if not all(k in self.strategy.order_types for k in constants.REQUIRED_ORDERTYPES): - raise ImportError(f"Impossible to load Strategy '{self.strategy.__class__.__name__}'. " + @staticmethod + def _strategy_sanity_validations(strategy): + if not all(k in strategy.order_types for k in constants.REQUIRED_ORDERTYPES): + raise ImportError(f"Impossible to load Strategy '{strategy.__class__.__name__}'. " f"Order-types mapping is incomplete.") - if not all(k in self.strategy.order_time_in_force for k in constants.REQUIRED_ORDERTIF): - raise ImportError(f"Impossible to load Strategy '{self.strategy.__class__.__name__}'. " + if not all(k in strategy.order_time_in_force for k in constants.REQUIRED_ORDERTIF): + raise ImportError(f"Impossible to load Strategy '{strategy.__class__.__name__}'. " f"Order-time-in-force mapping is incomplete.") - def _load_strategy( - self, strategy_name: str, config: dict, extra_dir: Optional[str] = None) -> IStrategy: + @staticmethod + def _load_strategy(strategy_name: str, + config: dict, extra_dir: Optional[str] = None) -> IStrategy: """ Search and loads the specified strategy. :param strategy_name: name of the module to import @@ -129,9 +134,9 @@ class StrategyResolver(IResolver): """ current_path = Path(__file__).parent.parent.joinpath('strategy').resolve() - abs_paths = self.build_search_paths(config, current_path=current_path, - user_subdir=constants.USERPATH_STRATEGY, - extra_dir=extra_dir) + abs_paths = IResolver.build_search_paths(config, current_path=current_path, + user_subdir=constants.USERPATH_STRATEGY, + extra_dir=extra_dir) if ":" in strategy_name: logger.info("loading base64 encoded strategy") @@ -149,8 +154,8 @@ class StrategyResolver(IResolver): # register temp path with the bot abs_paths.insert(0, temp.resolve()) - strategy = self._load_object(paths=abs_paths, object_type=IStrategy, - object_name=strategy_name, kwargs={'config': config}) + strategy = IResolver._load_object(paths=abs_paths, object_type=IStrategy, + object_name=strategy_name, kwargs={'config': config}) if strategy: strategy._populate_fun_len = len(getfullargspec(strategy.populate_indicators).args) strategy._buy_fun_len = len(getfullargspec(strategy.populate_buy_trend).args) diff --git a/freqtrade/templates/strategy_analysis_example.ipynb b/freqtrade/templates/strategy_analysis_example.ipynb index 2876ea938..eea8fb85f 100644 --- a/freqtrade/templates/strategy_analysis_example.ipynb +++ b/freqtrade/templates/strategy_analysis_example.ipynb @@ -73,9 +73,9 @@ "source": [ "# Load strategy using values set above\n", "from freqtrade.resolvers import StrategyResolver\n", - "strategy = StrategyResolver({'strategy': strategy_name,\n", - " 'user_data_dir': user_data_dir,\n", - " 'strategy_path': strategy_location}).strategy\n", + "strategy = StrategyResolver.load_strategy({'strategy': strategy_name,\n", + " 'user_data_dir': user_data_dir,\n", + " 'strategy_path': strategy_location})\n", "\n", "# Generate buy/sell signals using strategy\n", "df = strategy.analyze_ticker(candles, {'pair': pair})\n", diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 963d36c76..116eec56b 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -39,8 +39,8 @@ def test_load_strategy(default_conf, result): default_conf.update({'strategy': 'SampleStrategy', 'strategy_path': str(Path(__file__).parents[2] / 'freqtrade/templates') }) - resolver = StrategyResolver(default_conf) - assert 'rsi' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) + strategy = StrategyResolver.load_strategy(default_conf) + assert 'rsi' in strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) def test_load_strategy_base64(result, caplog, default_conf): @@ -48,8 +48,8 @@ def test_load_strategy_base64(result, caplog, default_conf): encoded_string = urlsafe_b64encode(file.read()).decode("utf-8") default_conf.update({'strategy': 'SampleStrategy:{}'.format(encoded_string)}) - resolver = StrategyResolver(default_conf) - assert 'rsi' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) + strategy = StrategyResolver.load_strategy(default_conf) + assert 'rsi' in strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) # Make sure strategy was loaded from base64 (using temp directory)!! assert log_has_re(r"Using resolved strategy SampleStrategy from '" r".*(/|\\).*(/|\\)SampleStrategy\.py'\.\.\.", caplog) @@ -57,13 +57,12 @@ def test_load_strategy_base64(result, caplog, default_conf): def test_load_strategy_invalid_directory(result, caplog, default_conf): default_conf['strategy'] = 'DefaultStrategy' - resolver = StrategyResolver(default_conf) extra_dir = Path.cwd() / 'some/path' - resolver._load_strategy('DefaultStrategy', config=default_conf, extra_dir=extra_dir) + strategy = StrategyResolver._load_strategy('DefaultStrategy', config=default_conf, extra_dir=extra_dir) assert log_has_re(r'Path .*' + r'some.*path.*' + r'.* does not exist', caplog) - assert 'rsi' in resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) + assert 'rsi' in strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) def test_load_not_found_strategy(default_conf): @@ -71,7 +70,7 @@ def test_load_not_found_strategy(default_conf): with pytest.raises(OperationalException, match=r"Impossible to load Strategy 'NotFoundStrategy'. " r"This class does not exist or contains Python code errors."): - StrategyResolver(default_conf) + StrategyResolver.load_strategy(default_conf) def test_load_strategy_noname(default_conf): @@ -79,30 +78,30 @@ def test_load_strategy_noname(default_conf): with pytest.raises(OperationalException, match="No strategy set. Please use `--strategy` to specify " "the strategy class to use."): - StrategyResolver(default_conf) + StrategyResolver.load_strategy(default_conf) def test_strategy(result, default_conf): default_conf.update({'strategy': 'DefaultStrategy'}) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) metadata = {'pair': 'ETH/BTC'} - assert resolver.strategy.minimal_roi[0] == 0.04 + assert strategy.minimal_roi[0] == 0.04 assert default_conf["minimal_roi"]['0'] == 0.04 - assert resolver.strategy.stoploss == -0.10 + assert strategy.stoploss == -0.10 assert default_conf['stoploss'] == -0.10 - assert resolver.strategy.ticker_interval == '5m' + assert strategy.ticker_interval == '5m' assert default_conf['ticker_interval'] == '5m' - df_indicators = resolver.strategy.advise_indicators(result, metadata=metadata) + df_indicators = strategy.advise_indicators(result, metadata=metadata) assert 'adx' in df_indicators - dataframe = resolver.strategy.advise_buy(df_indicators, metadata=metadata) + dataframe = strategy.advise_buy(df_indicators, metadata=metadata) assert 'buy' in dataframe.columns - dataframe = resolver.strategy.advise_sell(df_indicators, metadata=metadata) + dataframe = strategy.advise_sell(df_indicators, metadata=metadata) assert 'sell' in dataframe.columns @@ -114,9 +113,9 @@ def test_strategy_override_minimal_roi(caplog, default_conf): "0": 0.5 } }) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) - assert resolver.strategy.minimal_roi[0] == 0.5 + assert strategy.minimal_roi[0] == 0.5 assert log_has("Override strategy 'minimal_roi' with value in config file: {'0': 0.5}.", caplog) @@ -126,9 +125,9 @@ def test_strategy_override_stoploss(caplog, default_conf): 'strategy': 'DefaultStrategy', 'stoploss': -0.5 }) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) - assert resolver.strategy.stoploss == -0.5 + assert strategy.stoploss == -0.5 assert log_has("Override strategy 'stoploss' with value in config file: -0.5.", caplog) @@ -138,10 +137,10 @@ def test_strategy_override_trailing_stop(caplog, default_conf): 'strategy': 'DefaultStrategy', 'trailing_stop': True }) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) - assert resolver.strategy.trailing_stop - assert isinstance(resolver.strategy.trailing_stop, bool) + assert strategy.trailing_stop + assert isinstance(strategy.trailing_stop, bool) assert log_has("Override strategy 'trailing_stop' with value in config file: True.", caplog) @@ -153,13 +152,13 @@ def test_strategy_override_trailing_stop_positive(caplog, default_conf): 'trailing_stop_positive_offset': -0.2 }) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) - assert resolver.strategy.trailing_stop_positive == -0.1 + assert strategy.trailing_stop_positive == -0.1 assert log_has("Override strategy 'trailing_stop_positive' with value in config file: -0.1.", caplog) - assert resolver.strategy.trailing_stop_positive_offset == -0.2 + assert strategy.trailing_stop_positive_offset == -0.2 assert log_has("Override strategy 'trailing_stop_positive' with value in config file: -0.1.", caplog) @@ -172,10 +171,10 @@ def test_strategy_override_ticker_interval(caplog, default_conf): 'ticker_interval': 60, 'stake_currency': 'ETH' }) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) - assert resolver.strategy.ticker_interval == 60 - assert resolver.strategy.stake_currency == 'ETH' + assert strategy.ticker_interval == 60 + assert strategy.stake_currency == 'ETH' assert log_has("Override strategy 'ticker_interval' with value in config file: 60.", caplog) @@ -187,9 +186,9 @@ def test_strategy_override_process_only_new_candles(caplog, default_conf): 'strategy': 'DefaultStrategy', 'process_only_new_candles': True }) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) - assert resolver.strategy.process_only_new_candles + assert strategy.process_only_new_candles assert log_has("Override strategy 'process_only_new_candles' with value in config file: True.", caplog) @@ -207,11 +206,11 @@ def test_strategy_override_order_types(caplog, default_conf): 'strategy': 'DefaultStrategy', 'order_types': order_types }) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) - assert resolver.strategy.order_types + assert strategy.order_types for method in ['buy', 'sell', 'stoploss', 'stoploss_on_exchange']: - assert resolver.strategy.order_types[method] == order_types[method] + assert strategy.order_types[method] == order_types[method] assert log_has("Override strategy 'order_types' with value in config file:" " {'buy': 'market', 'sell': 'limit', 'stoploss': 'limit'," @@ -225,7 +224,7 @@ def test_strategy_override_order_types(caplog, default_conf): with pytest.raises(ImportError, match=r"Impossible to load Strategy 'DefaultStrategy'. " r"Order-types mapping is incomplete."): - StrategyResolver(default_conf) + StrategyResolver.load_strategy(default_conf) def test_strategy_override_order_tif(caplog, default_conf): @@ -240,11 +239,11 @@ def test_strategy_override_order_tif(caplog, default_conf): 'strategy': 'DefaultStrategy', 'order_time_in_force': order_time_in_force }) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) - assert resolver.strategy.order_time_in_force + assert strategy.order_time_in_force for method in ['buy', 'sell']: - assert resolver.strategy.order_time_in_force[method] == order_time_in_force[method] + assert strategy.order_time_in_force[method] == order_time_in_force[method] assert log_has("Override strategy 'order_time_in_force' with value in config file:" " {'buy': 'fok', 'sell': 'gtc'}.", caplog) @@ -257,7 +256,7 @@ def test_strategy_override_order_tif(caplog, default_conf): with pytest.raises(ImportError, match=r"Impossible to load Strategy 'DefaultStrategy'. " r"Order-time-in-force mapping is incomplete."): - StrategyResolver(default_conf) + StrategyResolver.load_strategy(default_conf) def test_strategy_override_use_sell_signal(caplog, default_conf): @@ -265,9 +264,9 @@ def test_strategy_override_use_sell_signal(caplog, default_conf): default_conf.update({ 'strategy': 'DefaultStrategy', }) - resolver = StrategyResolver(default_conf) - assert resolver.strategy.use_sell_signal - assert isinstance(resolver.strategy.use_sell_signal, bool) + strategy = StrategyResolver.load_strategy(default_conf) + assert strategy.use_sell_signal + assert isinstance(strategy.use_sell_signal, bool) # must be inserted to configuration assert 'use_sell_signal' in default_conf['ask_strategy'] assert default_conf['ask_strategy']['use_sell_signal'] @@ -278,10 +277,10 @@ def test_strategy_override_use_sell_signal(caplog, default_conf): 'use_sell_signal': False, }, }) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) - assert not resolver.strategy.use_sell_signal - assert isinstance(resolver.strategy.use_sell_signal, bool) + assert not strategy.use_sell_signal + assert isinstance(strategy.use_sell_signal, bool) assert log_has("Override strategy 'use_sell_signal' with value in config file: False.", caplog) @@ -290,9 +289,9 @@ def test_strategy_override_use_sell_profit_only(caplog, default_conf): default_conf.update({ 'strategy': 'DefaultStrategy', }) - resolver = StrategyResolver(default_conf) - assert not resolver.strategy.sell_profit_only - assert isinstance(resolver.strategy.sell_profit_only, bool) + strategy = StrategyResolver.load_strategy(default_conf) + assert not strategy.sell_profit_only + assert isinstance(strategy.sell_profit_only, bool) # must be inserted to configuration assert 'sell_profit_only' in default_conf['ask_strategy'] assert not default_conf['ask_strategy']['sell_profit_only'] @@ -303,10 +302,10 @@ def test_strategy_override_use_sell_profit_only(caplog, default_conf): 'sell_profit_only': True, }, }) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) - assert resolver.strategy.sell_profit_only - assert isinstance(resolver.strategy.sell_profit_only, bool) + assert strategy.sell_profit_only + assert isinstance(strategy.sell_profit_only, bool) assert log_has("Override strategy 'sell_profit_only' with value in config file: True.", caplog) @@ -315,11 +314,11 @@ def test_deprecate_populate_indicators(result, default_conf): default_location = path.join(path.dirname(path.realpath(__file__))) default_conf.update({'strategy': 'TestStrategyLegacy', 'strategy_path': default_location}) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) with warnings.catch_warnings(record=True) as w: # Cause all warnings to always be triggered. warnings.simplefilter("always") - indicators = resolver.strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) + indicators = strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) assert len(w) == 1 assert issubclass(w[-1].category, DeprecationWarning) assert "deprecated - check out the Sample strategy to see the current function headers!" \ @@ -328,7 +327,7 @@ def test_deprecate_populate_indicators(result, default_conf): with warnings.catch_warnings(record=True) as w: # Cause all warnings to always be triggered. warnings.simplefilter("always") - resolver.strategy.advise_buy(indicators, {'pair': 'ETH/BTC'}) + strategy.advise_buy(indicators, {'pair': 'ETH/BTC'}) assert len(w) == 1 assert issubclass(w[-1].category, DeprecationWarning) assert "deprecated - check out the Sample strategy to see the current function headers!" \ @@ -337,7 +336,7 @@ def test_deprecate_populate_indicators(result, default_conf): with warnings.catch_warnings(record=True) as w: # Cause all warnings to always be triggered. warnings.simplefilter("always") - resolver.strategy.advise_sell(indicators, {'pair': 'ETH_BTC'}) + strategy.advise_sell(indicators, {'pair': 'ETH_BTC'}) assert len(w) == 1 assert issubclass(w[-1].category, DeprecationWarning) assert "deprecated - check out the Sample strategy to see the current function headers!" \ @@ -349,47 +348,47 @@ def test_call_deprecated_function(result, monkeypatch, default_conf): default_location = path.join(path.dirname(path.realpath(__file__))) default_conf.update({'strategy': 'TestStrategyLegacy', 'strategy_path': default_location}) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) metadata = {'pair': 'ETH/BTC'} # Make sure we are using a legacy function - assert resolver.strategy._populate_fun_len == 2 - assert resolver.strategy._buy_fun_len == 2 - assert resolver.strategy._sell_fun_len == 2 - assert resolver.strategy.INTERFACE_VERSION == 1 + assert strategy._populate_fun_len == 2 + assert strategy._buy_fun_len == 2 + assert strategy._sell_fun_len == 2 + assert strategy.INTERFACE_VERSION == 1 - indicator_df = resolver.strategy.advise_indicators(result, metadata=metadata) + indicator_df = strategy.advise_indicators(result, metadata=metadata) assert isinstance(indicator_df, DataFrame) assert 'adx' in indicator_df.columns - buydf = resolver.strategy.advise_buy(result, metadata=metadata) + buydf = strategy.advise_buy(result, metadata=metadata) assert isinstance(buydf, DataFrame) assert 'buy' in buydf.columns - selldf = resolver.strategy.advise_sell(result, metadata=metadata) + selldf = strategy.advise_sell(result, metadata=metadata) assert isinstance(selldf, DataFrame) assert 'sell' in selldf def test_strategy_interface_versioning(result, monkeypatch, default_conf): default_conf.update({'strategy': 'DefaultStrategy'}) - resolver = StrategyResolver(default_conf) + strategy = StrategyResolver.load_strategy(default_conf) metadata = {'pair': 'ETH/BTC'} # Make sure we are using a legacy function - assert resolver.strategy._populate_fun_len == 3 - assert resolver.strategy._buy_fun_len == 3 - assert resolver.strategy._sell_fun_len == 3 - assert resolver.strategy.INTERFACE_VERSION == 2 + assert strategy._populate_fun_len == 3 + assert strategy._buy_fun_len == 3 + assert strategy._sell_fun_len == 3 + assert strategy.INTERFACE_VERSION == 2 - indicator_df = resolver.strategy.advise_indicators(result, metadata=metadata) + indicator_df = strategy.advise_indicators(result, metadata=metadata) assert isinstance(indicator_df, DataFrame) assert 'adx' in indicator_df.columns - buydf = resolver.strategy.advise_buy(result, metadata=metadata) + buydf = strategy.advise_buy(result, metadata=metadata) assert isinstance(buydf, DataFrame) assert 'buy' in buydf.columns - selldf = resolver.strategy.advise_sell(result, metadata=metadata) + selldf = strategy.advise_sell(result, metadata=metadata) assert isinstance(selldf, DataFrame) assert 'sell' in selldf From 90cabd7c21306f6f7fda068e40936e7f005ca825 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 10:46:35 +0100 Subject: [PATCH 1267/3421] Wrap line --- tests/strategy/test_strategy.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 116eec56b..ce7ac1741 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -58,7 +58,8 @@ def test_load_strategy_base64(result, caplog, default_conf): def test_load_strategy_invalid_directory(result, caplog, default_conf): default_conf['strategy'] = 'DefaultStrategy' extra_dir = Path.cwd() / 'some/path' - strategy = StrategyResolver._load_strategy('DefaultStrategy', config=default_conf, extra_dir=extra_dir) + strategy = StrategyResolver._load_strategy('DefaultStrategy', config=default_conf, + extra_dir=extra_dir) assert log_has_re(r'Path .*' + r'some.*path.*' + r'.* does not exist', caplog) From bb8acc61db3685f09e34169c0e4f8bb17fac8588 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 15:09:17 +0100 Subject: [PATCH 1268/3421] Convert datadir within config to Path (it's used as Path all the time!) --- freqtrade/configuration/configuration.py | 2 +- freqtrade/configuration/directory_operations.py | 4 ++-- freqtrade/data/dataprovider.py | 3 +-- freqtrade/utils.py | 9 ++++----- tests/test_configuration.py | 2 +- 5 files changed, 9 insertions(+), 11 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 001e89303..f73b52c10 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -403,7 +403,7 @@ class Configuration: config['pairs'] = config.get('exchange', {}).get('pair_whitelist') else: # Fall back to /dl_path/pairs.json - pairs_file = Path(config['datadir']) / "pairs.json" + pairs_file = config['datadir'] / "pairs.json" if pairs_file.exists(): with pairs_file.open('r') as f: config['pairs'] = json_load(f) diff --git a/freqtrade/configuration/directory_operations.py b/freqtrade/configuration/directory_operations.py index 3dd76a025..556f27742 100644 --- a/freqtrade/configuration/directory_operations.py +++ b/freqtrade/configuration/directory_operations.py @@ -9,7 +9,7 @@ from freqtrade.constants import USER_DATA_FILES logger = logging.getLogger(__name__) -def create_datadir(config: Dict[str, Any], datadir: Optional[str] = None) -> str: +def create_datadir(config: Dict[str, Any], datadir: Optional[str] = None) -> Path: folder = Path(datadir) if datadir else Path(f"{config['user_data_dir']}/data") if not datadir: @@ -20,7 +20,7 @@ def create_datadir(config: Dict[str, Any], datadir: Optional[str] = None) -> str if not folder.is_dir(): folder.mkdir(parents=True) logger.info(f'Created data directory: {datadir}') - return str(folder) + return folder def create_userdata_dir(directory: str, create_dir=False) -> Path: diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 7b7159145..2964d1cb7 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -5,7 +5,6 @@ including Klines, tickers, historic data Common Interface for bot and strategy to access data. """ import logging -from pathlib import Path from typing import Any, Dict, List, Optional, Tuple from pandas import DataFrame @@ -65,7 +64,7 @@ class DataProvider: """ return load_pair_history(pair=pair, timeframe=timeframe or self._config['ticker_interval'], - datadir=Path(self._config['datadir']) + datadir=self._config['datadir'] ) def get_pair_dataframe(self, pair: str, timeframe: str = None) -> DataFrame: diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 9e01c7ea6..2ae9e1ecb 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -191,9 +191,8 @@ def start_download_data(args: Dict[str, Any]) -> None: "Downloading data requires a list of pairs. " "Please check the documentation on how to configure this.") - dl_path = Path(config['datadir']) logger.info(f'About to download pairs: {config["pairs"]}, ' - f'intervals: {config["timeframes"]} to {dl_path}') + f'intervals: {config["timeframes"]} to {config["datadir"]}') pairs_not_available: List[str] = [] @@ -203,17 +202,17 @@ def start_download_data(args: Dict[str, Any]) -> None: if config.get('download_trades'): pairs_not_available = refresh_backtest_trades_data( - exchange, pairs=config["pairs"], datadir=Path(config['datadir']), + exchange, pairs=config["pairs"], datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) # Convert downloaded trade data to different timeframes convert_trades_to_ohlcv( pairs=config["pairs"], timeframes=config["timeframes"], - datadir=Path(config['datadir']), timerange=timerange, erase=config.get("erase")) + datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) else: pairs_not_available = refresh_backtest_ohlcv_data( exchange, pairs=config["pairs"], timeframes=config["timeframes"], - datadir=Path(config['datadir']), timerange=timerange, erase=config.get("erase")) + datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) except KeyboardInterrupt: sys.exit("SIGINT received, aborting ...") diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 292d53315..6564417b3 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -977,7 +977,7 @@ def test_pairlist_resolving_fallback(mocker): assert config['pairs'] == ['ETH/BTC', 'XRP/BTC'] assert config['exchange']['name'] == 'binance' - assert config['datadir'] == str(Path.cwd() / "user_data/data/binance") + assert config['datadir'] == Path.cwd() / "user_data/data/binance" @pytest.mark.parametrize("setting", [ From ecbb77c17fa3130e2d3dbef2044a7c2d8447685b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 15:13:55 +0100 Subject: [PATCH 1269/3421] Add forgotten option --- freqtrade/plot/plotting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 85089af9c..62081194f 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -37,7 +37,7 @@ def init_plotscript(config): timerange = TimeRange.parse_timerange(config.get("timerange")) tickers = history.load_data( - datadir=Path(str(config.get("datadir"))), + datadir=config.get("datadir"), pairs=pairs, timeframe=config.get('ticker_interval', '5m'), timerange=timerange, From c6b9c8eca0722305f6d450cf7d9cada9cae216ea Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 19:32:31 +0100 Subject: [PATCH 1270/3421] Forgot to save --- freqtrade/edge/__init__.py | 4 ++-- freqtrade/optimize/backtesting.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index e56071a98..e1dfe8e25 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -96,7 +96,7 @@ class Edge: if self._refresh_pairs: history.refresh_data( - datadir=Path(self.config['datadir']), + datadir=self.config['datadir'], pairs=pairs, exchange=self.exchange, timeframe=self.strategy.ticker_interval, @@ -104,7 +104,7 @@ class Edge: ) data = history.load_data( - datadir=Path(self.config['datadir']), + datadir=self.config['datadir'], pairs=pairs, timeframe=self.strategy.ticker_interval, timerange=self._timerange, diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 726257cdd..630cd106f 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -109,7 +109,7 @@ class Backtesting: 'timerange') is None else str(self.config.get('timerange'))) data = history.load_data( - datadir=Path(self.config['datadir']), + datadir=self.config['datadir'], pairs=self.config['exchange']['pair_whitelist'], timeframe=self.timeframe, timerange=timerange, From 0ac5e5035c499e07569f63dca45ac11938a601c3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 20:43:31 +0100 Subject: [PATCH 1271/3421] Remove unused import --- freqtrade/edge/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index e1dfe8e25..9ad2485ef 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -1,7 +1,6 @@ # pragma pylint: disable=W0603 """ Edge positioning package """ import logging -from pathlib import Path from typing import Any, Dict, NamedTuple import arrow From 690eb2a52b1883e3faff22a29a2f68dcaad4aa2f Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Tue, 24 Dec 2019 07:19:35 +0300 Subject: [PATCH 1272/3421] configuration.md reviewed --- docs/configuration.md | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 8ae824277..b3292ee74 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -388,48 +388,51 @@ The valid values are: ## Prices used for orders -Prices for regular orders can be controlled via the parameter structures `bid_strategy` for Buying, and `ask_strategy` for selling. -Prices are always retrieved right before an order is placed, either by querying the `fetch_ticker()` endpoint of the exchange (usually `/ticker`), or by using the orderbook. +Prices for regular orders can be controlled via the parameter structures `bid_strategy` for buying and `ask_strategy` for selling. +Prices are always retrieved right before an order is placed, either by querying the exchange tickers or by using the orderbook data. + +!!! Note + Orderbook data used by Freqtrade are the data retrieved from exchange by the ccxt's function `fetch_order_book()`, i.e. are usually data from the L2-aggregated orderbook, while the ticker data are the structures returned by the ccxt's `fetch_ticker()`/`fetch_tickers()` functions. Refer to the ccxt library [documentation](https://github.com/ccxt/ccxt/wiki/Manual#market-data) for more details. ### Buy price #### Check depth of market -When enabling `bid_strategy.check_depth_of_market.enabled=True`, then buy signals will be filtered based on the orderbook size for each size (sum of all amounts). -Orderbook bid size is then divided by Orderbook ask size - and the resulting delta is compared to `bid_strategy.check_depth_of_market.bids_to_ask_delta`, and a buy is only executed if the orderbook delta is bigger or equal to the configured delta. +When check depth of market is enabled (i.e. `bid_strategy.check_depth_of_market.enabled=True`), the buy signals are filtered based on the orderbook depth (sum of all amounts) for each orderbook side. + +Orderbook `bid` (buy) side depth is then divided by the orderbook `ask` (sell) side depth and the resulting delta is compared to the value of the `bid_strategy.check_depth_of_market.bids_to_ask_delta` parameter. The buy order is only executed if the orderbook delta is greater than or equal to the configured delta value. !!! Note - A calculated delta below 1 means that sell order size is greater, while value greater than 1 means buy order size is higher + A delta value below 1 means that `ask` (sell) orderbook side depth is greater than the depth of the `bid` (buy) orderbook side, while a value greater than 1 means opposite (depth of the buy side is higher than the depth of the sell side). #### Buy price with Orderbook enabled -When buying with the orderbook enabled (`bid_strategy.use_order_book=True`) - Freqtrade will fetch the `bid_strategy.order_book_top` entries in the orderbook, and will then use the entry specified as `bid_strategy.order_book_top` on the `bids` side of the orderbook. 1 specifies the topmost entry in the Orderbook - while 2 would use the 2nd entry in the Orderbook. +When buying with the orderbook enabled (`bid_strategy.use_order_book=True`), Freqtrade fetches the `bid_strategy.order_book_top` entries from the orderbook and then uses the entry specified as `bid_strategy.order_book_top` on the `bid` (buy) side of the orderbook. 1 specifies the topmost entry in the orderbook, while 2 would use the 2nd entry in the orderbook, and so on. -#### Buy price without Orderbook +#### Buy price without Orderbook enabled -When not using orderbook (`bid_strategy.use_order_book=False`), then Freqtrade will use the best `ask` price based on a call to `fetch_ticker()` if it's below the `last` traded price. -Otherwise, it'll calculate a rate between `ask` and `last` price. +When not using orderbook (`bid_strategy.use_order_book=False`), Freqtrade uses the best `ask` (sell) price from the ticker if it's below the `last` traded price from the ticker. Otherwise (when the `ask` price is not below the `last` price), it calculates a rate between `ask` and `last` price. -The `bid_strategy.ask_last_balance` configuration parameter controls this. A value of `0.0` will use `ask` price, `1.0` will use the `last` price and values between those interpolate between ask and last -price. -Using `ask` price will guarantee quick success in bid, but bot will also end up paying more than what would have been necessary. +The `bid_strategy.ask_last_balance` configuration parameter controls this. A value of `0.0` will use `ask` price, while `1.0` will use the `last` price and values between those interpolate between ask and last price. + +Using `ask` price often guarantees quicker success in the bid, but the bot can also end up paying more than what would have been necessary. ### Sell price #### Sell price with Orderbook enabled -When selling with the Orderbook enabled (`ask_strategy.use_order_book=True`) - Freqtrade will fetch the `ask_strategy.order_book_max` entries in the orderbook. Freqtrade will then validate each of the orderbook steps between `ask_strategy.order_book_min` and `ask_strategy.order_book_max` on the `ask` side for a profitable sell-possibility based on the strategy configuration and will place a sell order at the first profitable spot. +When selling with the orderbook enabled (`ask_strategy.use_order_book=True`), Freqtrade fetches the `ask_strategy.order_book_max` entries in the orderbook. Then each of the orderbook steps between `ask_strategy.order_book_min` and `ask_strategy.order_book_max` on the `ask` orderbook side are validated for a profitable sell-possibility based on the strategy configuration and the sell order is placed at the first profitable spot. + +The idea here is to place the sell order early, to be ahead in the queue. -The idea here is to place the sell-order early, to be ahead in the queue. A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting `ask_strategy.order_book_min` and `ask_strategy.order_book_max` to the same number. !!! Warning "Orderbook and stoploss_on_exchange" - Using `ask_strategy.order_book_max` higher than 1 may increase the risk, since an eventual [stoploss on exchange](#understand-order_types) will be need to be cancelled as soon as the order is placed. + Using `ask_strategy.order_book_max` higher than 1 may increase the risk, since an eventual [stoploss on exchange](#understand-order_types) will be needed to be cancelled as soon as the order is placed. +#### Sell price without Orderbook enabled -#### Sell price without orderbook - -When not using orderbook (`ask_strategy.use_order_book=False`), then the best `bid` will be used as sell rate based on a call to `fetch_ticker()`. +When not using orderbook (`ask_strategy.use_order_book=False`), the `bid` price from the ticker will be used as the sell price. ## Pairlists From f487dac047bfb1d61a93c5f45d9a08ddfcdab5bc Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 06:27:11 +0100 Subject: [PATCH 1273/3421] FIx bug in dry-run wallets causing balances to stay there after trades are sold --- freqtrade/wallets.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index dd706438f..54c3f9138 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -58,13 +58,15 @@ class Wallets: - Subtract currently tied up stake_amount in open trades - update balances for currencies currently in trades """ + # Recreate _wallets to reset closed trade balances + _wallets = {} closed_trades = Trade.get_trades(Trade.is_open.is_(False)).all() open_trades = Trade.get_trades(Trade.is_open.is_(True)).all() tot_profit = sum([trade.calc_profit() for trade in closed_trades]) tot_in_trades = sum([trade.stake_amount for trade in open_trades]) current_stake = self.start_cap + tot_profit - tot_in_trades - self._wallets[self._config['stake_currency']] = Wallet( + _wallets[self._config['stake_currency']] = Wallet( self._config['stake_currency'], current_stake, 0, @@ -73,12 +75,13 @@ class Wallets: for trade in open_trades: curr = trade.pair.split('/')[0] - self._wallets[curr] = Wallet( + _wallets[curr] = Wallet( curr, trade.amount, 0, trade.amount ) + self._wallets = _wallets def _update_live(self) -> None: From 33cfeaf9b01a51fc16d3dd9a437a6ffc5c670955 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 06:31:05 +0100 Subject: [PATCH 1274/3421] Remove i.e. where it doesn't fit --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index b3292ee74..b1b03c721 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -398,7 +398,7 @@ Prices are always retrieved right before an order is placed, either by querying #### Check depth of market -When check depth of market is enabled (i.e. `bid_strategy.check_depth_of_market.enabled=True`), the buy signals are filtered based on the orderbook depth (sum of all amounts) for each orderbook side. +When check depth of market is enabled (`bid_strategy.check_depth_of_market.enabled=True`), the buy signals are filtered based on the orderbook depth (sum of all amounts) for each orderbook side. Orderbook `bid` (buy) side depth is then divided by the orderbook `ask` (sell) side depth and the resulting delta is compared to the value of the `bid_strategy.check_depth_of_market.bids_to_ask_delta` parameter. The buy order is only executed if the orderbook delta is greater than or equal to the configured delta value. From b8442d536a41e4b93872618f38239fadcaa20f28 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 06:47:25 +0100 Subject: [PATCH 1275/3421] Update integration test to also test dry-run-wallets --- tests/test_integration.py | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/tests/test_integration.py b/tests/test_integration.py index 728e96d55..c5d08ec22 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -118,12 +118,10 @@ def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, moc default_conf['max_open_trades'] = 5 default_conf['forcebuy_enable'] = True default_conf['stake_amount'] = 'unlimited' + default_conf['dry_run_wallet'] = 1000 default_conf['exchange']['name'] = 'binance' default_conf['telegram']['enabled'] = True mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) - mocker.patch('freqtrade.wallets.Wallets.get_free', MagicMock( - side_effect=[1000, 800, 600, 400, 200] - )) mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_ticker=ticker, @@ -138,6 +136,14 @@ def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, moc update_trade_state=MagicMock(), _notify_sell=MagicMock(), ) + should_sell_mock = MagicMock(side_effect=[ + SellCheckTuple(sell_flag=False, sell_type=SellType.NONE), + SellCheckTuple(sell_flag=True, sell_type=SellType.SELL_SIGNAL), + SellCheckTuple(sell_flag=False, sell_type=SellType.NONE), + SellCheckTuple(sell_flag=False, sell_type=SellType.NONE), + SellCheckTuple(sell_flag=None, sell_type=SellType.NONE)] + ) + mocker.patch("freqtrade.strategy.interface.IStrategy.should_sell", should_sell_mock) freqtrade = get_patched_freqtradebot(mocker, default_conf) rpc = RPC(freqtrade) @@ -158,3 +164,20 @@ def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, moc for trade in trades: assert trade.stake_amount == 200 + # Reset trade open order id's + trade.open_order_id = None + trades = Trade.get_open_trades() + assert len(trades) == 5 + bals = freqtrade.wallets.get_all_balances() + + freqtrade.process_maybe_execute_sells(trades) + trades = Trade.get_open_trades() + # One trade sold + assert len(trades) == 4 + # Validate that balance of sold trade is not in dry-run balances anymore. + bals2 = freqtrade.wallets.get_all_balances() + assert bals != bals2 + assert len(bals) == 6 + assert len(bals2) == 5 + assert 'LTC' in bals + assert 'LTC' not in bals2 From a105e5664a3d166a2c641a0da8ce10fea5f55d7b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 06:58:30 +0100 Subject: [PATCH 1276/3421] Align /balance output to show everything in stake currency the conversation to BTC does not make sense --- freqtrade/rpc/rpc.py | 3 ++- freqtrade/rpc/telegram.py | 4 ++-- tests/rpc/test_rpc_telegram.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 3b4b7570a..d6d442df5 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -341,13 +341,14 @@ class RPC: raise RPCException('All balances are zero.') symbol = fiat_display_currency - value = self._fiat_converter.convert_amount(total, 'BTC', + value = self._fiat_converter.convert_amount(total, stake_currency, symbol) if self._fiat_converter else 0 return { 'currencies': output, 'total': total, 'symbol': symbol, 'value': value, + 'stake': stake_currency, 'note': 'Simulated balances' if self._freqtrade.config.get('dry_run', False) else '' } diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index e0e2afd7b..e9ecdcff6 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -335,7 +335,7 @@ class Telegram(RPC): output = '' if self._config['dry_run']: output += ( - f"*Warning:*Simulated balances in Dry Mode.\n" + f"*Warning:* Simulated balances in Dry Mode.\n" "This mode is still experimental!\n" "Starting capital: " f"`{self._config['dry_run_wallet']}` {self._config['stake_currency']}.\n" @@ -358,7 +358,7 @@ class Telegram(RPC): output += curr_output output += "\n*Estimated Value*:\n" \ - "\t`BTC: {total: .8f}`\n" \ + "\t`{stake}: {total: .8f}`\n" \ "\t`{symbol}: {value: .2f}`\n".format(**result) self._send_msg(output) except RPCException as e: diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index b02f11394..8126ab64c 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -534,7 +534,7 @@ def test_balance_handle_empty_response_dry(default_conf, update, mocker) -> None telegram._balance(update=update, context=MagicMock()) result = msg_mock.call_args_list[0][0][0] assert msg_mock.call_count == 1 - assert "*Warning:*Simulated balances in Dry Mode." in result + assert "*Warning:* Simulated balances in Dry Mode." in result assert "Starting capital: `1000` BTC" in result From 83ed0b38c1d2fdd4305ad0c7d332ef944b24ebea Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 07:10:57 +0100 Subject: [PATCH 1277/3421] Wordwrap before keep it secret --- docs/configuration.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 43964e882..2f61343db 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -38,8 +38,8 @@ The prevelance for all Options is as follows: Mandatory parameters are marked as **Required**, which means that they are required to be set in one of the possible ways. -| Command | Description | -|----------|-------------| +| Parameter | Description | +|------------|-------------| | `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades).
      ***Datatype:*** *Positive integer or -1.* | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#understand-stake_amount). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* @@ -72,9 +72,9 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `order_time_in_force` | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Dict* | `exchange.name` | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename).
      ***Datatype:*** *String* | `exchange.sandbox` | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details.
      ***Datatype:*** *Boolean* -| `exchange.key` | API key to use for the exchange. Only required when you are in production mode. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* -| `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* -| `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `exchange.key` | API key to use for the exchange. Only required when you are in production mode.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* | `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)).
      ***Datatype:*** *List* | `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)).
      ***Datatype:*** *List* | `exchange.ccxt_config` | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
      ***Datatype:*** *Dict* @@ -84,8 +84,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
      *Defaults to `true`.*
      ***Datatype:*** *Boolean* | `pairlists` | Define one or more pairlists to be used. [More information below](#dynamic-pairlists).
      *Defaults to `StaticPairList`.*
      ***Datatype:*** *List of Dicts* | `telegram.enabled` | Enable the usage of Telegram.
      ***Datatype:*** *Boolean* -| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* -| `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* | `webhook.enabled` | Enable usage of Webhook notifications
      ***Datatype:*** *Boolean* | `webhook.url` | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* | `webhook.webhookbuy` | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
      ***Datatype:*** *String* @@ -93,9 +93,9 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `webhook.webhookstatus` | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentationV](webhook-config.md) for more details.
      ***Datatype:*** *String* | `api_server.enabled` | Enable usage of API Server. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *Boolean* | `api_server.listen_ip_address` | Bind IP address. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *IPv4* -| `api_server.listen_port` | Bind Port. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *Integer between 1024 and 65535* -| `api_server.username` | Username for API server. See the [API Server documentation](rest-api.md) for more details. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* -| `api_server.password` | Password for API server. See the [API Server documentation](rest-api.md) for more details. **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `api_server.listen_port` | Bind Port. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *Integer between 1024 and 65535* +| `api_server.username` | Username for API server. See the [API Server documentation](rest-api.md) for more details.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* +| `api_server.password` | Password for API server. See the [API Server documentation](rest-api.md) for more details.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* | `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite:///tradesv3.dryrun.sqlite` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances.
      ***Datatype:*** *String, SQLAlchemy connect string* | `initial_state` | Defines the initial application state. More information below.
      *Defaults to `stopped`.*
      ***Datatype:*** *Enum, either `stopped` or `running`* | `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below.
      ***Datatype:*** *Boolean* From 48935d2932ca5b3317463bf78f3dda397eaf5126 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 07:25:18 +0100 Subject: [PATCH 1278/3421] Align edge documentation to configuration page --- docs/edge.md | 153 ++++++++++++++++++--------------------------------- 1 file changed, 54 insertions(+), 99 deletions(-) diff --git a/docs/edge.md b/docs/edge.md index c7b088476..769e48927 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -1,4 +1,4 @@ -# Edge positioning +# Edge positioning This page explains how to use Edge Positioning module in your bot in order to enter into a trade only if the trade has a reasonable win rate and risk reward ratio, and consequently adjust your position size and stoploss. @@ -9,6 +9,7 @@ This page explains how to use Edge Positioning module in your bot in order to en Edge does not consider anything else than buy/sell/stoploss signals. So trailing stoploss, ROI, and everything else are ignored in its calculation. ## Introduction + Trading is all about probability. No one can claim that he has a strategy working all the time. You have to assume that sometimes you lose. But it doesn't mean there is no rule, it only means rules should work "most of the time". Let's play a game: we toss a coin, heads: I give you 10$, tails: you give me 10$. Is it an interesting game? No, it's quite boring, isn't it? @@ -22,43 +23,61 @@ Let's complicate it more: you win 80% of the time but only 2$, I win 20% of the The question is: How do you calculate that? How do you know if you wanna play? The answer comes to two factors: + - Win Rate - Risk Reward Ratio ### Win Rate + Win Rate (*W*) is is the mean over some amount of trades (*N*) what is the percentage of winning trades to total number of trades (note that we don't consider how much you gained but only if you won or not). - W = (Number of winning trades) / (Total number of trades) = (Number of winning trades) / N +``` +W = (Number of winning trades) / (Total number of trades) = (Number of winning trades) / N +``` Complementary Loss Rate (*L*) is defined as - L = (Number of losing trades) / (Total number of trades) = (Number of losing trades) / N +``` +L = (Number of losing trades) / (Total number of trades) = (Number of losing trades) / N +``` or, which is the same, as - L = 1 – W +``` +L = 1 – W +``` ### Risk Reward Ratio + Risk Reward Ratio (*R*) is a formula used to measure the expected gains of a given investment against the risk of loss. It is basically what you potentially win divided by what you potentially lose: - R = Profit / Loss +``` +R = Profit / Loss +``` Over time, on many trades, you can calculate your risk reward by dividing your average profit on winning trades by your average loss on losing trades: - Average profit = (Sum of profits) / (Number of winning trades) +``` +Average profit = (Sum of profits) / (Number of winning trades) - Average loss = (Sum of losses) / (Number of losing trades) +Average loss = (Sum of losses) / (Number of losing trades) - R = (Average profit) / (Average loss) +R = (Average profit) / (Average loss) +``` ### Expectancy + At this point we can combine *W* and *R* to create an expectancy ratio. This is a simple process of multiplying the risk reward ratio by the percentage of winning trades and subtracting the percentage of losing trades, which is calculated as follows: - Expectancy Ratio = (Risk Reward Ratio X Win Rate) – Loss Rate = (R X W) – L +``` +Expectancy Ratio = (Risk Reward Ratio X Win Rate) – Loss Rate = (R X W) – L +``` So lets say your Win rate is 28% and your Risk Reward Ratio is 5: - Expectancy = (5 X 0.28) – 0.72 = 0.68 +``` +Expectancy = (5 X 0.28) – 0.72 = 0.68 +``` Superficially, this means that on average you expect this strategy’s trades to return .68 times the size of your loses. This is important for two reasons: First, it may seem obvious, but you know right away that you have a positive return. Second, you now have a number you can compare to other candidate systems to make decisions about which ones you employ. @@ -69,6 +88,7 @@ You can also use this value to evaluate the effectiveness of modifications to th **NOTICE:** It's important to keep in mind that Edge is testing your expectancy using historical data, there's no guarantee that you will have a similar edge in the future. It's still vital to do this testing in order to build confidence in your methodology, but be wary of "curve-fitting" your approach to the historical data as things are unlikely to play out the exact same way for future trades. ## How does it work? + If enabled in config, Edge will go through historical data with a range of stoplosses in order to find buy and sell/stoploss signals. It then calculates win rate and expectancy over *N* trades for each stoploss. Here is an example: | Pair | Stoploss | Win Rate | Risk Reward Ratio | Expectancy | @@ -83,6 +103,7 @@ The goal here is to find the best stoploss for the strategy in order to have the Edge module then forces stoploss value it evaluated to your strategy dynamically. ### Position size + Edge also dictates the stake amount for each trade to the bot according to the following factors: - Allowed capital at risk @@ -90,13 +111,17 @@ Edge also dictates the stake amount for each trade to the bot according to the f Allowed capital at risk is calculated as follows: - Allowed capital at risk = (Capital available_percentage) X (Allowed risk per trade) +``` +Allowed capital at risk = (Capital available_percentage) X (Allowed risk per trade) +``` Stoploss is calculated as described above against historical data. Your position size then will be: - Position size = (Allowed capital at risk) / Stoploss +``` +Position size = (Allowed capital at risk) / Stoploss +``` Example: @@ -115,100 +140,30 @@ Available capital doesn’t change before a position is sold. Let’s assume tha So the Bot receives another buy signal for trade 4 with a stoploss at 2% then your position size would be **0.055 / 0.02 = 2.75 ETH**. ## Configurations + Edge module has following configuration options: -#### enabled -If true, then Edge will run periodically. - -(defaults to false) - -#### process_throttle_secs -How often should Edge run in seconds? - -(defaults to 3600 so one hour) - -#### calculate_since_number_of_days -Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy -Note that it downloads historical data so increasing this number would lead to slowing down the bot. - -(defaults to 7) - -#### capital_available_percentage -This is the percentage of the total capital on exchange in stake currency. - -As an example if you have 10 ETH available in your wallet on the exchange and this value is 0.5 (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers it as available capital. - -(defaults to 0.5) - -#### allowed_risk -Percentage of allowed risk per trade. - -(defaults to 0.01 so 1%) - -#### stoploss_range_min - -Minimum stoploss. - -(defaults to -0.01) - -#### stoploss_range_max - -Maximum stoploss. - -(defaults to -0.10) - -#### stoploss_range_step - -As an example if this is set to -0.01 then Edge will test the strategy for \[-0.01, -0,02, -0,03 ..., -0.09, -0.10\] ranges. -Note than having a smaller step means having a bigger range which could lead to slow calculation. - -If you set this parameter to -0.001, you then slow down the Edge calculation by a factor of 10. - -(defaults to -0.01) - -#### minimum_winrate - -It filters out pairs which don't have at least minimum_winrate. - -This comes handy if you want to be conservative and don't comprise win rate in favour of risk reward ratio. - -(defaults to 0.60) - -#### minimum_expectancy - -It filters out pairs which have the expectancy lower than this number. - -Having an expectancy of 0.20 means if you put 10$ on a trade you expect a 12$ return. - -(defaults to 0.20) - -#### min_trade_number - -When calculating *W*, *R* and *E* (expectancy) against historical data, you always want to have a minimum number of trades. The more this number is the more Edge is reliable. - -Having a win rate of 100% on a single trade doesn't mean anything at all. But having a win rate of 70% over past 100 trades means clearly something. - -(defaults to 10, it is highly recommended not to decrease this number) - -#### max_trade_duration_minute - -Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign. - -**NOTICE:** While configuring this value, you should take into consideration your ticker interval. As an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. Default value is set assuming your strategy interval is relatively small (1m or 5m, etc.). - -(defaults to 1 day, i.e. to 60 * 24 = 1440 minutes) - -#### remove_pumps - -Edge will remove sudden pumps in a given market while going through historical data. However, given that pumps happen very often in crypto markets, we recommend you keep this off. - -(defaults to false) +| Parameter | Description | +|------------|-------------| +| `enabled` | If true, then Edge will run periodically.
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* +| `process_throttle_secs` | How often should Edge run in seconds.
      *Defaults to `3600` (once per hour).*
      ***Datatype:*** *Integer* +| `calculate_since_number_of_days` | Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy.
      **Note** that it downloads historical data so increasing this number would lead to slowing down the bot.
      *Defaults to `7` (once per hour).*
      ***Datatype:*** *Integer* +| `capital_available_percentage` | This is the percentage of the total capital on exchange in stake currency.
      As an example if you have 10 ETH available in your wallet on the exchange and this value is 0.5 (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers it as available capital.
      *Defaults to `0.5` (once per hour).*
      ***Datatype:*** *Float* +| `allowed_risk` | Ratio of allowed risk per trade.
      *Defaults to `0.01` (1%)).*
      ***Datatype:*** *Float* +| `stoploss_range_min` | Minimum stoploss.
      *Defaults to `-0.01`.*
      ***Datatype:*** *Float* +| `stoploss_range_max` | Maximum stoploss.
      *Defaults to `-0.10`.*
      ***Datatype:*** *Float* +| `stoploss_range_step` | As an example if this is set to -0.01 then Edge will test the strategy for `[-0.01, -0,02, -0,03 ..., -0.09, -0.10]` ranges.
      **Note** than having a smaller step means having a bigger range which could lead to slow calculation.
      If you set this parameter to -0.001, you then slow down the Edge calculation by a factor of 10.
      *Defaults to `-0.001`.*
      ***Datatype:*** *Float* +| `minimum_winrate` | It filters out pairs which don't have at least minimum_winrate.
      This comes handy if you want to be conservative and don't comprise win rate in favour of risk reward ratio.
      *Defaults to `0.60`.*
      ***Datatype:*** *Float* +| `minimum_expectancy` | It filters out pairs which have the expectancy lower than this number.
      Having an expectancy of 0.20 means if you put 10$ on a trade you expect a 12$ return.
      *Defaults to `0.20`.*
      ***Datatype:*** *Float* +| `min_trade_number` | When calculating *W*, *R* and *E* (expectancy) against historical data, you always want to have a minimum number of trades. The more this number is the more Edge is reliable.
      Having a win rate of 100% on a single trade doesn't mean anything at all. But having a win rate of 70% over past 100 trades means clearly something.
      *Defaults to `10` (it is highly recommended not to decrease this number).*
      ***Datatype:*** *Integer* +| `max_trade_duration_minute` | Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign.
      **NOTICE:** While configuring this value, you should take into consideration your ticker interval. As an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. Default value is set assuming your strategy interval is relatively small (1m or 5m, etc.).
      *Defaults to `1440` (one day).*
      ***Datatype:*** *Integer* +| `remove_pumps` | Edge will remove sudden pumps in a given market while going through historical data. However, given that pumps happen very often in crypto markets, we recommend you keep this off.
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* ## Running Edge independently You can run Edge independently in order to see in details the result. Here is an example: -```bash +``` bash freqtrade edge ``` From a68445692bfdde1d9407a8d3bc1f82d785cd3def Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Dec 2019 16:08:33 +0100 Subject: [PATCH 1279/3421] Add first steps for list-strategies --- freqtrade/configuration/arguments.py | 19 ++++++++++++++++--- freqtrade/utils.py | 8 ++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 41c5c3957..5f7bc74f1 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -30,6 +30,8 @@ ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + ["hyperopt", "hyperopt_path", ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"] +ARGS_LIST_STRATEGIES = ["strategy_path"] + ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"] ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"] @@ -62,7 +64,8 @@ ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperop "print_json", "hyperopt_show_no_header"] NO_CONF_REQURIED = ["download-data", "list-timeframes", "list-markets", "list-pairs", - "hyperopt-list", "hyperopt-show", "plot-dataframe", "plot-profit"] + "list-strategies", "hyperopt-list", "hyperopt-show", "plot-dataframe", + "plot-profit"] NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-hyperopt", "new-strategy"] @@ -131,8 +134,9 @@ class Arguments: from freqtrade.utils import (start_create_userdir, start_download_data, start_hyperopt_list, start_hyperopt_show, start_list_exchanges, start_list_markets, - start_new_hyperopt, start_new_strategy, - start_list_timeframes, start_test_pairlist, start_trading) + start_list_strategies, start_new_hyperopt, + start_new_strategy, start_list_timeframes, + start_test_pairlist, start_trading) from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit subparsers = self.parser.add_subparsers(dest='command', @@ -185,6 +189,15 @@ class Arguments: build_hyperopt_cmd.set_defaults(func=start_new_hyperopt) self._build_args(optionlist=ARGS_BUILD_HYPEROPT, parser=build_hyperopt_cmd) + # Add list-strategies subcommand + list_strategies_cmd = subparsers.add_parser( + 'list-strategies', + help='Print available strategies.', + parents=[_common_parser], + ) + list_strategies_cmd.set_defaults(func=start_list_strategies) + self._build_args(optionlist=ARGS_LIST_STRATEGIES, parser=list_strategies_cmd) + # Add list-exchanges subcommand list_exchanges_cmd = subparsers.add_parser( 'list-exchanges', diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 18966c574..c5fc47a74 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -224,6 +224,14 @@ def start_download_data(args: Dict[str, Any]) -> None: f"on exchange {exchange.name}.") +def start_list_strategies(args: Dict[str, Any]) -> None: + """ + Print Strategies available in a folder + """ + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + print(config) + + def start_list_timeframes(args: Dict[str, Any]) -> None: """ Print ticker intervals (timeframes) available on Exchange From eb1040ddb7445a49168792871ab417360bdfa4a1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 13:34:37 +0100 Subject: [PATCH 1280/3421] Convert resolvers to classmethods --- freqtrade/resolvers/exchange_resolver.py | 1 + freqtrade/resolvers/hyperopt_resolver.py | 23 +++++++++------- freqtrade/resolvers/iresolver.py | 34 +++++++++++++----------- freqtrade/resolvers/pairlist_resolver.py | 6 +++-- freqtrade/resolvers/strategy_resolver.py | 12 +++++---- tests/strategy/test_strategy.py | 2 -- 6 files changed, 43 insertions(+), 35 deletions(-) diff --git a/freqtrade/resolvers/exchange_resolver.py b/freqtrade/resolvers/exchange_resolver.py index e28a5cf80..2b6a731a9 100644 --- a/freqtrade/resolvers/exchange_resolver.py +++ b/freqtrade/resolvers/exchange_resolver.py @@ -14,6 +14,7 @@ class ExchangeResolver(IResolver): """ This class contains all the logic to load a custom exchange class """ + object_type = Exchange @staticmethod def load_exchange(exchange_name: str, config: dict, validate: bool = True) -> Exchange: diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 0726b0627..b9c750251 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -20,6 +20,7 @@ class HyperOptResolver(IResolver): """ This class contains all the logic to load custom hyperopt class """ + object_type = IHyperOpt @staticmethod def load_hyperopt(config: Dict) -> IHyperOpt: @@ -59,12 +60,13 @@ class HyperOptResolver(IResolver): """ current_path = Path(__file__).parent.parent.joinpath('optimize').resolve() - abs_paths = IResolver.build_search_paths(config, current_path=current_path, - user_subdir=USERPATH_HYPEROPTS, - extra_dir=extra_dir) + abs_paths = HyperOptResolver.build_search_paths(config, current_path=current_path, + user_subdir=USERPATH_HYPEROPTS, + extra_dir=extra_dir) - hyperopt = IResolver._load_object(paths=abs_paths, object_type=IHyperOpt, - object_name=hyperopt_name, kwargs={'config': config}) + hyperopt = HyperOptResolver._load_object(paths=abs_paths, + object_name=hyperopt_name, + kwargs={'config': config}) if hyperopt: return hyperopt raise OperationalException( @@ -77,6 +79,7 @@ class HyperOptLossResolver(IResolver): """ This class contains all the logic to load custom hyperopt loss class """ + object_type = IHyperOptLoss @staticmethod def load_hyperoptloss(config: Dict) -> IHyperOptLoss: @@ -113,12 +116,12 @@ class HyperOptLossResolver(IResolver): """ current_path = Path(__file__).parent.parent.joinpath('optimize').resolve() - abs_paths = IResolver.build_search_paths(config, current_path=current_path, - user_subdir=USERPATH_HYPEROPTS, - extra_dir=extra_dir) + abs_paths = HyperOptLossResolver.build_search_paths(config, current_path=current_path, + user_subdir=USERPATH_HYPEROPTS, + extra_dir=extra_dir) - hyperoptloss = IResolver._load_object(paths=abs_paths, object_type=IHyperOptLoss, - object_name=hyper_loss_name) + hyperoptloss = HyperOptLossResolver._load_object(paths=abs_paths, + object_name=hyper_loss_name) if hyperoptloss: return hyperoptloss diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 0b986debb..11937c1da 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -7,7 +7,7 @@ import importlib.util import inspect import logging from pathlib import Path -from typing import Any, List, Optional, Tuple, Union, Generator +from typing import Any, Generator, List, Optional, Tuple, Type, Union logger = logging.getLogger(__name__) @@ -16,6 +16,8 @@ class IResolver: """ This class contains all the logic to load custom classes """ + # Childclasses need to override this + object_type: Type[Any] @staticmethod def build_search_paths(config, current_path: Path, user_subdir: Optional[str] = None, @@ -32,12 +34,11 @@ class IResolver: return abs_paths - @staticmethod - def _get_valid_object(object_type, module_path: Path, + @classmethod + def _get_valid_object(cls, module_path: Path, object_name: str) -> Generator[Any, None, None]: """ Generator returning objects with matching object_type and object_name in the path given. - :param object_type: object_type (class) :param module_path: absolute path to the module :param object_name: Class name of the object :return: generator containing matching objects @@ -55,19 +56,21 @@ class IResolver: valid_objects_gen = ( obj for name, obj in inspect.getmembers(module, inspect.isclass) - if object_name == name and object_type in obj.__bases__ + if object_name == name and cls.object_type in obj.__bases__ ) return valid_objects_gen - @staticmethod - def _search_object(directory: Path, object_type, object_name: str, + @classmethod + def _search_object(cls, directory: Path, object_name: str, kwargs: dict = {}) -> Union[Tuple[Any, Path], Tuple[None, None]]: """ Search for the objectname in the given directory :param directory: relative or absolute directory path + :param object_name: ClassName of the object to load :return: object instance """ - logger.debug("Searching for %s %s in '%s'", object_type.__name__, object_name, directory) + logger.debug("Searching for %s %s in '%s'", + cls.object_type.__name__, object_name, directory) for entry in directory.iterdir(): # Only consider python files if not str(entry).endswith('.py'): @@ -75,14 +78,14 @@ class IResolver: continue module_path = entry.resolve() - obj = next(IResolver._get_valid_object(object_type, module_path, object_name), None) + obj = next(cls._get_valid_object(module_path, object_name), None) if obj: return (obj(**kwargs), module_path) return (None, None) - @staticmethod - def _load_object(paths: List[Path], object_type, object_name: str, + @classmethod + def _load_object(cls, paths: List[Path], object_name: str, kwargs: dict = {}) -> Optional[Any]: """ Try to load object from path list. @@ -90,13 +93,12 @@ class IResolver: for _path in paths: try: - (module, module_path) = IResolver._search_object(directory=_path, - object_type=object_type, - object_name=object_name, - kwargs=kwargs) + (module, module_path) = cls._search_object(directory=_path, + object_name=object_name, + kwargs=kwargs) if module: logger.info( - f"Using resolved {object_type.__name__.lower()[1:]} {object_name} " + f"Using resolved {cls.object_type.__name__.lower()[1:]} {object_name} " f"from '{module_path}'...") return module except FileNotFoundError: diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index 611660ff4..00ebc03aa 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -17,6 +17,7 @@ class PairListResolver(IResolver): """ This class contains all the logic to load custom PairList class """ + object_type = IPairList @staticmethod def load_pairlist(pairlist_name: str, exchange, pairlistmanager, @@ -53,8 +54,9 @@ class PairListResolver(IResolver): abs_paths = IResolver.build_search_paths(config, current_path=current_path, user_subdir=None, extra_dir=None) - pairlist = IResolver._load_object(paths=abs_paths, object_type=IPairList, - object_name=pairlist_name, kwargs=kwargs) + pairlist = PairListResolver._load_object(paths=abs_paths, + object_name=pairlist_name, + kwargs=kwargs) if pairlist: return pairlist raise OperationalException( diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 6d3fe5ff9..654103377 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -22,6 +22,7 @@ class StrategyResolver(IResolver): """ This class contains the logic to load custom strategy class """ + object_type = IStrategy @staticmethod def load_strategy(config: Optional[Dict] = None) -> IStrategy: @@ -134,9 +135,9 @@ class StrategyResolver(IResolver): """ current_path = Path(__file__).parent.parent.joinpath('strategy').resolve() - abs_paths = IResolver.build_search_paths(config, current_path=current_path, - user_subdir=constants.USERPATH_STRATEGY, - extra_dir=extra_dir) + abs_paths = StrategyResolver.build_search_paths(config, current_path=current_path, + user_subdir=constants.USERPATH_STRATEGY, + extra_dir=extra_dir) if ":" in strategy_name: logger.info("loading base64 encoded strategy") @@ -154,8 +155,9 @@ class StrategyResolver(IResolver): # register temp path with the bot abs_paths.insert(0, temp.resolve()) - strategy = IResolver._load_object(paths=abs_paths, object_type=IStrategy, - object_name=strategy_name, kwargs={'config': config}) + strategy = StrategyResolver._load_object(paths=abs_paths, + object_name=strategy_name, + kwargs={'config': config}) if strategy: strategy._populate_fun_len = len(getfullargspec(strategy.populate_indicators).args) strategy._buy_fun_len = len(getfullargspec(strategy.populate_buy_trend).args) diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index ce7ac1741..dba816621 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -20,7 +20,6 @@ def test_search_strategy(): s, _ = StrategyResolver._search_object( directory=default_location, - object_type=IStrategy, kwargs={'config': default_config}, object_name='DefaultStrategy' ) @@ -28,7 +27,6 @@ def test_search_strategy(): s, _ = StrategyResolver._search_object( directory=default_location, - object_type=IStrategy, kwargs={'config': default_config}, object_name='NotFoundStrategy' ) From 25e6d6a7bfdea9bd74b6f06375c4e11df2f903b1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 13:54:46 +0100 Subject: [PATCH 1281/3421] Combine load_object methods into one --- freqtrade/resolvers/hyperopt_resolver.py | 70 +++++------------------- freqtrade/resolvers/iresolver.py | 36 +++++++++++- freqtrade/resolvers/pairlist_resolver.py | 42 ++++---------- freqtrade/resolvers/strategy_resolver.py | 16 ++++-- tests/optimize/test_hyperopt.py | 4 +- 5 files changed, 68 insertions(+), 100 deletions(-) diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index b9c750251..c26fd09f2 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -5,7 +5,7 @@ This module load custom hyperopt """ import logging from pathlib import Path -from typing import Optional, Dict +from typing import Dict from freqtrade import OperationalException from freqtrade.constants import DEFAULT_HYPEROPT_LOSS, USERPATH_HYPEROPTS @@ -21,6 +21,9 @@ class HyperOptResolver(IResolver): This class contains all the logic to load custom hyperopt class """ object_type = IHyperOpt + object_type_str = "Hyperopt" + user_subdir = USERPATH_HYPEROPTS + initial_search_path = Path(__file__).parent.parent.joinpath('optimize').resolve() @staticmethod def load_hyperopt(config: Dict) -> IHyperOpt: @@ -34,8 +37,9 @@ class HyperOptResolver(IResolver): hyperopt_name = config['hyperopt'] - hyperopt = HyperOptResolver._load_hyperopt(hyperopt_name, config, - extra_dir=config.get('hyperopt_path')) + hyperopt = HyperOptResolver.load_object(hyperopt_name, config, + kwargs={'config': config}, + extra_dir=config.get('hyperopt_path')) if not hasattr(hyperopt, 'populate_indicators'): logger.warning("Hyperopt class does not provide populate_indicators() method. " @@ -48,38 +52,15 @@ class HyperOptResolver(IResolver): "Using populate_sell_trend from the strategy.") return hyperopt - @staticmethod - def _load_hyperopt( - hyperopt_name: str, config: Dict, extra_dir: Optional[str] = None) -> IHyperOpt: - """ - Search and loads the specified hyperopt. - :param hyperopt_name: name of the module to import - :param config: configuration dictionary - :param extra_dir: additional directory to search for the given hyperopt - :return: HyperOpt instance or None - """ - current_path = Path(__file__).parent.parent.joinpath('optimize').resolve() - - abs_paths = HyperOptResolver.build_search_paths(config, current_path=current_path, - user_subdir=USERPATH_HYPEROPTS, - extra_dir=extra_dir) - - hyperopt = HyperOptResolver._load_object(paths=abs_paths, - object_name=hyperopt_name, - kwargs={'config': config}) - if hyperopt: - return hyperopt - raise OperationalException( - f"Impossible to load Hyperopt '{hyperopt_name}'. This class does not exist " - "or contains Python code errors." - ) - class HyperOptLossResolver(IResolver): """ This class contains all the logic to load custom hyperopt loss class """ object_type = IHyperOptLoss + object_type_str = "HyperoptLoss" + user_subdir = USERPATH_HYPEROPTS + initial_search_path = Path(__file__).parent.parent.joinpath('optimize').resolve() @staticmethod def load_hyperoptloss(config: Dict) -> IHyperOptLoss: @@ -92,8 +73,9 @@ class HyperOptLossResolver(IResolver): # default hyperopt loss hyperoptloss_name = config.get('hyperopt_loss') or DEFAULT_HYPEROPT_LOSS - hyperoptloss = HyperOptLossResolver._load_hyperoptloss( - hyperoptloss_name, config, extra_dir=config.get('hyperopt_path')) + hyperoptloss = HyperOptLossResolver.load_object(hyperoptloss_name, + config, kwargs={}, + extra_dir=config.get('hyperopt_path')) # Assign ticker_interval to be used in hyperopt hyperoptloss.__class__.ticker_interval = str(config['ticker_interval']) @@ -103,29 +85,3 @@ class HyperOptLossResolver(IResolver): f"Found HyperoptLoss class {hyperoptloss_name} does not " "implement `hyperopt_loss_function`.") return hyperoptloss - - @staticmethod - def _load_hyperoptloss(hyper_loss_name: str, config: Dict, - extra_dir: Optional[str] = None) -> IHyperOptLoss: - """ - Search and loads the specified hyperopt loss class. - :param hyper_loss_name: name of the module to import - :param config: configuration dictionary - :param extra_dir: additional directory to search for the given hyperopt - :return: HyperOptLoss instance or None - """ - current_path = Path(__file__).parent.parent.joinpath('optimize').resolve() - - abs_paths = HyperOptLossResolver.build_search_paths(config, current_path=current_path, - user_subdir=USERPATH_HYPEROPTS, - extra_dir=extra_dir) - - hyperoptloss = HyperOptLossResolver._load_object(paths=abs_paths, - object_name=hyper_loss_name) - if hyperoptloss: - return hyperoptloss - - raise OperationalException( - f"Impossible to load HyperoptLoss '{hyper_loss_name}'. This class does not exist " - "or contains Python code errors." - ) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 11937c1da..0101e37a3 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -9,6 +9,8 @@ import logging from pathlib import Path from typing import Any, Generator, List, Optional, Tuple, Type, Union +from freqtrade import OperationalException + logger = logging.getLogger(__name__) @@ -18,12 +20,15 @@ class IResolver: """ # Childclasses need to override this object_type: Type[Any] + object_type_str: str + user_subdir: Optional[str] = None + initial_search_path: Path - @staticmethod - def build_search_paths(config, current_path: Path, user_subdir: Optional[str] = None, + @classmethod + def build_search_paths(cls, config, user_subdir: Optional[str] = None, extra_dir: Optional[str] = None) -> List[Path]: - abs_paths: List[Path] = [current_path] + abs_paths: List[Path] = [cls.initial_search_path] if user_subdir: abs_paths.insert(0, config['user_data_dir'].joinpath(user_subdir)) @@ -105,3 +110,28 @@ class IResolver: logger.warning('Path "%s" does not exist.', _path.resolve()) return None + + @classmethod + def load_object(cls, object_name: str, config: dict, kwargs: dict, + extra_dir: Optional[str] = None) -> Any: + """ + Search and loads the specified object as configured in hte child class. + :param objectname: name of the module to import + :param config: configuration dictionary + :param extra_dir: additional directory to search for the given pairlist + :raises: OperationalException if the class is invalid or does not exist. + :return: Object instance or None + """ + + abs_paths = cls.build_search_paths(config, + user_subdir=cls.user_subdir, + extra_dir=extra_dir) + + pairlist = cls._load_object(paths=abs_paths, object_name=object_name, + kwargs=kwargs) + if pairlist: + return pairlist + raise OperationalException( + f"Impossible to load {cls.object_type_str} '{object_name}'. This class does not exist " + "or contains Python code errors." + ) diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index 00ebc03aa..77db74084 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -6,7 +6,6 @@ This module load custom pairlists import logging from pathlib import Path -from freqtrade import OperationalException from freqtrade.pairlist.IPairList import IPairList from freqtrade.resolvers import IResolver @@ -18,6 +17,9 @@ class PairListResolver(IResolver): This class contains all the logic to load custom PairList class """ object_type = IPairList + object_type_str = "Pairlist" + user_subdir = None + initial_search_path = Path(__file__).parent.parent.joinpath('pairlist').resolve() @staticmethod def load_pairlist(pairlist_name: str, exchange, pairlistmanager, @@ -32,34 +34,10 @@ class PairListResolver(IResolver): :param pairlist_pos: Position of the pairlist in the list of pairlists :return: initialized Pairlist class """ - - return PairListResolver._load_pairlist(pairlist_name, config, - kwargs={'exchange': exchange, - 'pairlistmanager': pairlistmanager, - 'config': config, - 'pairlistconfig': pairlistconfig, - 'pairlist_pos': pairlist_pos}) - - @staticmethod - def _load_pairlist(pairlist_name: str, config: dict, kwargs: dict) -> IPairList: - """ - Search and loads the specified pairlist. - :param pairlist_name: name of the module to import - :param config: configuration dictionary - :param extra_dir: additional directory to search for the given pairlist - :return: PairList instance or None - """ - current_path = Path(__file__).parent.parent.joinpath('pairlist').resolve() - - abs_paths = IResolver.build_search_paths(config, current_path=current_path, - user_subdir=None, extra_dir=None) - - pairlist = PairListResolver._load_object(paths=abs_paths, - object_name=pairlist_name, - kwargs=kwargs) - if pairlist: - return pairlist - raise OperationalException( - f"Impossible to load Pairlist '{pairlist_name}'. This class does not exist " - "or contains Python code errors." - ) + return PairListResolver.load_object(pairlist_name, config, + kwargs={'exchange': exchange, + 'pairlistmanager': pairlistmanager, + 'config': config, + 'pairlistconfig': pairlistconfig, + 'pairlist_pos': pairlist_pos}, + ) diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 654103377..4fd5c586a 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -11,7 +11,9 @@ from inspect import getfullargspec from pathlib import Path from typing import Dict, Optional -from freqtrade import constants, OperationalException +from freqtrade import OperationalException +from freqtrade.constants import (REQUIRED_ORDERTIF, REQUIRED_ORDERTYPES, + USERPATH_STRATEGY) from freqtrade.resolvers import IResolver from freqtrade.strategy.interface import IStrategy @@ -23,6 +25,9 @@ class StrategyResolver(IResolver): This class contains the logic to load custom strategy class """ object_type = IStrategy + object_type_str = "Strategy" + user_subdir = USERPATH_STRATEGY + initial_search_path = Path(__file__).parent.parent.joinpath('strategy').resolve() @staticmethod def load_strategy(config: Optional[Dict] = None) -> IStrategy: @@ -115,11 +120,11 @@ class StrategyResolver(IResolver): @staticmethod def _strategy_sanity_validations(strategy): - if not all(k in strategy.order_types for k in constants.REQUIRED_ORDERTYPES): + if not all(k in strategy.order_types for k in REQUIRED_ORDERTYPES): raise ImportError(f"Impossible to load Strategy '{strategy.__class__.__name__}'. " f"Order-types mapping is incomplete.") - if not all(k in strategy.order_time_in_force for k in constants.REQUIRED_ORDERTIF): + if not all(k in strategy.order_time_in_force for k in REQUIRED_ORDERTIF): raise ImportError(f"Impossible to load Strategy '{strategy.__class__.__name__}'. " f"Order-time-in-force mapping is incomplete.") @@ -133,10 +138,9 @@ class StrategyResolver(IResolver): :param extra_dir: additional directory to search for the given strategy :return: Strategy instance or None """ - current_path = Path(__file__).parent.parent.joinpath('strategy').resolve() - abs_paths = StrategyResolver.build_search_paths(config, current_path=current_path, - user_subdir=constants.USERPATH_STRATEGY, + abs_paths = StrategyResolver.build_search_paths(config, + user_subdir=USERPATH_STRATEGY, extra_dir=extra_dir) if ":" in strategy_name: diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 9c6e73c53..fb492be35 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -159,7 +159,7 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None: delattr(hyperopt, 'populate_buy_trend') delattr(hyperopt, 'populate_sell_trend') mocker.patch( - 'freqtrade.resolvers.hyperopt_resolver.HyperOptResolver._load_hyperopt', + 'freqtrade.resolvers.hyperopt_resolver.HyperOptResolver.load_object', MagicMock(return_value=hyperopt(default_conf)) ) default_conf.update({'hyperopt': 'DefaultHyperOpt'}) @@ -195,7 +195,7 @@ def test_hyperoptlossresolver(mocker, default_conf, caplog) -> None: hl = DefaultHyperOptLoss mocker.patch( - 'freqtrade.resolvers.hyperopt_resolver.HyperOptLossResolver._load_hyperoptloss', + 'freqtrade.resolvers.hyperopt_resolver.HyperOptLossResolver.load_object', MagicMock(return_value=hl) ) x = HyperOptLossResolver.load_hyperoptloss(default_conf) From 5a11ca86bb69b1619cbba78cce05a205f669a67d Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 14:01:28 +0100 Subject: [PATCH 1282/3421] Move instanciation out of search_object --- freqtrade/resolvers/iresolver.py | 13 ++++++------- tests/strategy/test_strategy.py | 5 +---- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 0101e37a3..bbdc8ca91 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -66,13 +66,13 @@ class IResolver: return valid_objects_gen @classmethod - def _search_object(cls, directory: Path, object_name: str, - kwargs: dict = {}) -> Union[Tuple[Any, Path], Tuple[None, None]]: + def _search_object(cls, directory: Path, object_name: str + ) -> Union[Tuple[Any, Path], Tuple[None, None]]: """ Search for the objectname in the given directory :param directory: relative or absolute directory path :param object_name: ClassName of the object to load - :return: object instance + :return: object class """ logger.debug("Searching for %s %s in '%s'", cls.object_type.__name__, object_name, directory) @@ -86,7 +86,7 @@ class IResolver: obj = next(cls._get_valid_object(module_path, object_name), None) if obj: - return (obj(**kwargs), module_path) + return (obj, module_path) return (None, None) @classmethod @@ -99,13 +99,12 @@ class IResolver: for _path in paths: try: (module, module_path) = cls._search_object(directory=_path, - object_name=object_name, - kwargs=kwargs) + object_name=object_name) if module: logger.info( f"Using resolved {cls.object_type.__name__.lower()[1:]} {object_name} " f"from '{module_path}'...") - return module + return module(**kwargs) except FileNotFoundError: logger.warning('Path "%s" does not exist.', _path.resolve()) diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index dba816621..7085223c5 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -15,19 +15,16 @@ from tests.conftest import log_has, log_has_re def test_search_strategy(): - default_config = {} default_location = Path(__file__).parent.parent.joinpath('strategy').resolve() s, _ = StrategyResolver._search_object( directory=default_location, - kwargs={'config': default_config}, object_name='DefaultStrategy' ) - assert isinstance(s, IStrategy) + assert issubclass(s, IStrategy) s, _ = StrategyResolver._search_object( directory=default_location, - kwargs={'config': default_config}, object_name='NotFoundStrategy' ) assert s is None From 2ab989e274c5bfb278e8b6397380b1714d806a80 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 15:28:35 +0100 Subject: [PATCH 1283/3421] Cleanup some code and add option --- freqtrade/configuration/arguments.py | 2 +- freqtrade/resolvers/iresolver.py | 35 +++++++++++++++++++++++----- freqtrade/utils.py | 14 +++++++++-- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 5f7bc74f1..b2197619d 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -30,7 +30,7 @@ ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + ["hyperopt", "hyperopt_path", ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"] -ARGS_LIST_STRATEGIES = ["strategy_path"] +ARGS_LIST_STRATEGIES = ["strategy_path", "print_one_column"] ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"] diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index bbdc8ca91..01ecbcb84 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -7,7 +7,7 @@ import importlib.util import inspect import logging from pathlib import Path -from typing import Any, Generator, List, Optional, Tuple, Type, Union +from typing import Any, Dict, Generator, List, Optional, Tuple, Type, Union from freqtrade import OperationalException @@ -41,7 +41,7 @@ class IResolver: @classmethod def _get_valid_object(cls, module_path: Path, - object_name: str) -> Generator[Any, None, None]: + object_name: Optional[str]) -> Generator[Any, None, None]: """ Generator returning objects with matching object_type and object_name in the path given. :param module_path: absolute path to the module @@ -51,7 +51,7 @@ class IResolver: # Generate spec based on absolute path # Pass object_name as first argument to have logging print a reasonable name. - spec = importlib.util.spec_from_file_location(object_name, str(module_path)) + spec = importlib.util.spec_from_file_location(object_name or "", str(module_path)) module = importlib.util.module_from_spec(spec) try: spec.loader.exec_module(module) # type: ignore # importlib does not use typehints @@ -61,7 +61,7 @@ class IResolver: valid_objects_gen = ( obj for name, obj in inspect.getmembers(module, inspect.isclass) - if object_name == name and cls.object_type in obj.__bases__ + if (object_name is None or object_name == name) and cls.object_type in obj.__bases__ ) return valid_objects_gen @@ -74,8 +74,7 @@ class IResolver: :param object_name: ClassName of the object to load :return: object class """ - logger.debug("Searching for %s %s in '%s'", - cls.object_type.__name__, object_name, directory) + logger.debug(f"Searching for {cls.object_type.__name__} {object_name} in '{directory}'") for entry in directory.iterdir(): # Only consider python files if not str(entry).endswith('.py'): @@ -134,3 +133,27 @@ class IResolver: f"Impossible to load {cls.object_type_str} '{object_name}'. This class does not exist " "or contains Python code errors." ) + + @classmethod + def search_all_objects(cls, directory: Path) -> List[Dict[str, Any]]: + """ + Searches a directory for valid objects + :param directory: Path to search + :return: List of dicts containing 'name', 'class' and 'location' entires + """ + logger.debug(f"Searching for {cls.object_type.__name__} '{directory}'") + objects = [] + for entry in directory.iterdir(): + # Only consider python files + if not str(entry).endswith('.py'): + logger.debug('Ignoring %s', entry) + continue + module_path = entry.resolve() + logger.info(f"Path {module_path}") + for obj in cls._get_valid_object(module_path, object_name=None): + objects.append( + {'name': obj.__name__, + 'class': obj, + 'location': entry, + }) + return objects diff --git a/freqtrade/utils.py b/freqtrade/utils.py index c5fc47a74..06a62172a 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -23,7 +23,7 @@ from freqtrade.data.history import (convert_trades_to_ohlcv, from freqtrade.exchange import (available_exchanges, ccxt_exchanges, market_is_active, symbol_is_pair) from freqtrade.misc import plural, render_template -from freqtrade.resolvers import ExchangeResolver +from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.state import RunMode logger = logging.getLogger(__name__) @@ -229,7 +229,17 @@ def start_list_strategies(args: Dict[str, Any]) -> None: Print Strategies available in a folder """ config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - print(config) + + directory = Path(config.get('strategy_path', config['user_data_dir'] / USERPATH_STRATEGY)) + strategies = StrategyResolver.search_all_objects(directory) + # Sort alphabetically + strategies = sorted(strategies, key=lambda x: x['name']) + strats_to_print = [{'name': s['name'], 'location': s['location']} for s in strategies] + + if args['print_one_column']: + print('\n'.join([s['name'] for s in strategies])) + else: + print(tabulate(strats_to_print, headers='keys', tablefmt='pipe')) def start_list_timeframes(args: Dict[str, Any]) -> None: From 27b86170778c70dd4a83d2c02d06a12452fb1783 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 15:35:38 +0100 Subject: [PATCH 1284/3421] Add tests --- tests/strategy/test_strategy.py | 8 +++++++ tests/test_utils.py | 42 +++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 7085223c5..10b9f3466 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -30,6 +30,14 @@ def test_search_strategy(): assert s is None +def test_search_all_strategies(): + directory = Path(__file__).parent + strategies = StrategyResolver.search_all_objects(directory) + assert isinstance(strategies, list) + assert len(strategies) == 3 + assert isinstance(strategies[0], dict) + + def test_load_strategy(default_conf, result): default_conf.update({'strategy': 'SampleStrategy', 'strategy_path': str(Path(__file__).parents[2] / 'freqtrade/templates') diff --git a/tests/test_utils.py b/tests/test_utils.py index 40ca9ac02..b8be1ae61 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -7,11 +7,12 @@ import pytest from freqtrade import OperationalException from freqtrade.state import RunMode from freqtrade.utils import (setup_utils_configuration, start_create_userdir, - start_download_data, start_list_exchanges, - start_list_markets, start_list_timeframes, - start_new_hyperopt, start_new_strategy, - start_test_pairlist, start_trading, - start_hyperopt_list, start_hyperopt_show) + start_download_data, start_hyperopt_list, + start_hyperopt_show, start_list_exchanges, + start_list_markets, start_list_strategies, + start_list_timeframes, start_new_hyperopt, + start_new_strategy, start_test_pairlist, + start_trading) from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, patched_configuration_load_config_file) @@ -630,6 +631,37 @@ def test_download_data_trades(mocker, caplog): assert convert_mock.call_count == 1 +def test_start_list_strategies(mocker, caplog, capsys): + + args = [ + "list-strategies", + "--strategy-path", + str(Path(__file__).parent / "strategy"), + "-1" + ] + pargs = get_args(args) + # pargs['config'] = None + start_list_strategies(pargs) + captured = capsys.readouterr() + assert "TestStrategyLegacy" in captured.out + assert "strategy/legacy_strategy.py" not in captured.out + assert "DefaultStrategy" in captured.out + + # Test regular output + args = [ + "list-strategies", + "--strategy-path", + str(Path(__file__).parent / "strategy"), + ] + pargs = get_args(args) + # pargs['config'] = None + start_list_strategies(pargs) + captured = capsys.readouterr() + assert "TestStrategyLegacy" in captured.out + assert "strategy/legacy_strategy.py" in captured.out + assert "DefaultStrategy" in captured.out + + def test_start_test_pairlist(mocker, caplog, markets, tickers, default_conf, capsys): mocker.patch.multiple('freqtrade.exchange.Exchange', markets=PropertyMock(return_value=markets), From 66f9ece0619554f072fbc20c251b35dd6bbc6f33 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 15:35:53 +0100 Subject: [PATCH 1285/3421] Add documentation for strategy-list --- docs/utils.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/docs/utils.md b/docs/utils.md index a9fbfc7d5..6eb37a386 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -108,6 +108,44 @@ With custom user directory freqtrade new-hyperopt --userdir ~/.freqtrade/ --hyperopt AwesomeHyperopt ``` +## List Strategies + +Use the `list-strategies` subcommand to see all strategies in one particular folder. + +``` +freqtrade list-strategies --help +usage: freqtrade list-strategies [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--strategy-path PATH] [-1] + +optional arguments: + -h, --help show this help message and exit + --strategy-path PATH Specify additional strategy lookup path. + -1, --one-column Print output in one column. + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: 'syslog', 'journald'. See the documentation for more details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-` + to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. + +``` +Example: search default strategy folder within userdir + +``` bash +freqtrade list-strategies --user-data ~/.freqtrade/ +``` + +Example: search dedicated strategy path + +``` bash +freqtrade list-strategies --strategy-path ~/.freqtrade/strategies/ +``` + ## List Exchanges Use the `list-exchanges` subcommand to see the exchanges available for the bot. From 402c761a231edffe017ba93fdf821637e5ddab40 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 15:40:49 +0100 Subject: [PATCH 1286/3421] Change loglevel of Path output to debug --- docs/utils.md | 5 ++++- freqtrade/resolvers/iresolver.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index 6eb37a386..f7501ae9d 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -132,8 +132,11 @@ Common arguments: Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH Path to userdata directory. - ``` + +!!! Warning + Using this command will try to load all python files from a folder. This can be a security risk if untrusted files reside in this folder, since all module-level code is executed. + Example: search default strategy folder within userdir ``` bash diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 01ecbcb84..e3c0d1ad0 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -149,7 +149,7 @@ class IResolver: logger.debug('Ignoring %s', entry) continue module_path = entry.resolve() - logger.info(f"Path {module_path}") + logger.debug(f"Path {module_path}") for obj in cls._get_valid_object(module_path, object_name=None): objects.append( {'name': obj.__name__, From ad75048678796a23e4dcf4a82464628a2860d6b4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Dec 2019 15:53:40 +0100 Subject: [PATCH 1287/3421] Fix testing with path in windows --- tests/test_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index b8be1ae61..185425efc 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -644,7 +644,7 @@ def test_start_list_strategies(mocker, caplog, capsys): start_list_strategies(pargs) captured = capsys.readouterr() assert "TestStrategyLegacy" in captured.out - assert "strategy/legacy_strategy.py" not in captured.out + assert str(Path("strategy/legacy_strategy.py")) not in captured.out assert "DefaultStrategy" in captured.out # Test regular output @@ -658,7 +658,7 @@ def test_start_list_strategies(mocker, caplog, capsys): start_list_strategies(pargs) captured = capsys.readouterr() assert "TestStrategyLegacy" in captured.out - assert "strategy/legacy_strategy.py" in captured.out + assert str(Path("strategy/legacy_strategy.py")) in captured.out assert "DefaultStrategy" in captured.out From e5aed098b568900f34e7f3cbe85b8b8d21d76254 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 09:39:29 +0100 Subject: [PATCH 1288/3421] Enhance backtest results with sell reason profit / loss table --- freqtrade/optimize/backtesting.py | 6 ++++-- tests/optimize/test_backtesting.py | 12 ++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index ffa112bd5..21fb24b17 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -183,9 +183,11 @@ class Backtesting: Generate small table outlining Backtest results """ tabular_data = [] - headers = ['Sell Reason', 'Count'] + headers = ['Sell Reason', 'Count', 'Profit', 'Loss'] for reason, count in results['sell_reason'].value_counts().iteritems(): - tabular_data.append([reason.value, count]) + profit = len(results[(results['sell_reason'] == reason) & (results['profit_abs'] >= 0)]) + loss = len(results[(results['sell_reason'] == reason) & (results['profit_abs'] < 0)]) + tabular_data.append([reason.value, count, profit, loss]) return tabulate(tabular_data, headers=headers, tablefmt="pipe") def _generate_text_table_strategy(self, all_results: dict) -> str: diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 0ea35e41f..8a27c591f 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -394,8 +394,8 @@ def test_generate_text_table_sell_reason(default_conf, mocker): results = pd.DataFrame( { 'pair': ['ETH/BTC', 'ETH/BTC', 'ETH/BTC'], - 'profit_percent': [0.1, 0.2, 0.3], - 'profit_abs': [0.2, 0.4, 0.5], + 'profit_percent': [0.1, 0.2, -0.3], + 'profit_abs': [0.2, 0.4, -0.5], 'trade_duration': [10, 30, 10], 'profit': [2, 0, 0], 'loss': [0, 0, 1], @@ -404,10 +404,10 @@ def test_generate_text_table_sell_reason(default_conf, mocker): ) result_str = ( - '| Sell Reason | Count |\n' - '|:--------------|--------:|\n' - '| roi | 2 |\n' - '| stop_loss | 1 |' + '| Sell Reason | Count | Profit | Loss |\n' + '|:--------------|--------:|---------:|-------:|\n' + '| roi | 2 | 2 | 0 |\n' + '| stop_loss | 1 | 0 | 1 |' ) assert backtesting._generate_text_table_sell_reason( data={'ETH/BTC': {}}, results=results) == result_str From 63f41cf1c692d69da8899fec520916d6e59699b1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 09:39:44 +0100 Subject: [PATCH 1289/3421] Update documentation with new result --- docs/backtesting.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 017289905..ac7c8e11a 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -137,12 +137,12 @@ A backtesting result will look like that: | ZEC/BTC | 22 | -0.46 | -10.18 | -0.00050971 | -5.09 | 2:22:00 | 7 | 15 | | TOTAL | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 | 243 | ========================================================= SELL REASON STATS ========================================================= -| Sell Reason | Count | -|:-------------------|--------:| -| trailing_stop_loss | 205 | -| stop_loss | 166 | -| sell_signal | 56 | -| force_sell | 2 | +| Sell Reason | Count | Profit | Loss | +|:-------------------|--------:|---------:|-------:| +| trailing_stop_loss | 205 | 150 | 55 | +| stop_loss | 166 | 0 | 166 | +| sell_signal | 56 | 36 | 20 | +| force_sell | 2 | 0 | 2 | ====================================================== LEFT OPEN TRADES REPORT ====================================================== | pair | buy count | avg profit % | cum profit % | tot profit BTC | tot profit % | avg duration | profit | loss | |:---------|------------:|---------------:|---------------:|-----------------:|---------------:|:---------------|---------:|-------:| @@ -154,6 +154,7 @@ A backtesting result will look like that: The 1st table contains all trades the bot made, including "left open trades". The 2nd table contains a recap of sell reasons. +This table can tell you which area needs some additional work (i.e. all `sell_signal` trades are losses, so we should disable the sell-signal or work on improving that). The 3rd table contains all trades the bot had to `forcesell` at the end of the backtest period to present a full picture. This is necessary to simulate realistic behaviour, since the backtest period has to end at some point, while realistically, you could leave the bot running forever. From 98647b490c6aa311e1b1735ebb5e1cab96020ef1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 19:27:08 +0100 Subject: [PATCH 1290/3421] Remove wrong "once per hour" listings --- docs/edge.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/edge.md b/docs/edge.md index 769e48927..e7909594e 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -147,8 +147,8 @@ Edge module has following configuration options: |------------|-------------| | `enabled` | If true, then Edge will run periodically.
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* | `process_throttle_secs` | How often should Edge run in seconds.
      *Defaults to `3600` (once per hour).*
      ***Datatype:*** *Integer* -| `calculate_since_number_of_days` | Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy.
      **Note** that it downloads historical data so increasing this number would lead to slowing down the bot.
      *Defaults to `7` (once per hour).*
      ***Datatype:*** *Integer* -| `capital_available_percentage` | This is the percentage of the total capital on exchange in stake currency.
      As an example if you have 10 ETH available in your wallet on the exchange and this value is 0.5 (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers it as available capital.
      *Defaults to `0.5` (once per hour).*
      ***Datatype:*** *Float* +| `calculate_since_number_of_days` | Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy.
      **Note** that it downloads historical data so increasing this number would lead to slowing down the bot.
      *Defaults to `7`.*
      ***Datatype:*** *Integer* +| `capital_available_percentage` | This is the percentage of the total capital on exchange in stake currency.
      As an example if you have 10 ETH available in your wallet on the exchange and this value is 0.5 (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers it as available capital.
      *Defaults to `0.5`.*
      ***Datatype:*** *Float* | `allowed_risk` | Ratio of allowed risk per trade.
      *Defaults to `0.01` (1%)).*
      ***Datatype:*** *Float* | `stoploss_range_min` | Minimum stoploss.
      *Defaults to `-0.01`.*
      ***Datatype:*** *Float* | `stoploss_range_max` | Maximum stoploss.
      *Defaults to `-0.10`.*
      ***Datatype:*** *Float* From cadde3ab6d32a207e805f7043598e2c8e0eef3fb Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 16:15:44 +0100 Subject: [PATCH 1291/3421] Check if markets.info is a dict before using it --- freqtrade/exchange/exchange.py | 10 +++++++++- tests/exchange/test_exchange.py | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 384ec1fb7..01e84c06e 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -278,7 +278,15 @@ class Exchange: raise OperationalException( f'Pair {pair} is not available on {self.name}. ' f'Please remove {pair} from your whitelist.') - elif self.markets[pair].get('info', {}).get('IsRestricted', False): + + # From ccxt Documentation: + # markets.info: An associative array of non-common market properties, + # including fees, rates, limits and other general market information. + # The internal info array is different for each particular market, + # its contents depend on the exchange. + # It can also be a string or similar ... so we need to verify that first. + elif (isinstance(self.markets[pair].get('info', None), dict) + and self.markets[pair].get('info', {}).get('IsRestricted', False)): # Warn users about restricted pairs in whitelist. # We cannot determine reliably if Users are affected. logger.warning(f"Pair {pair} is restricted for some users on this exchange." diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 8f335c16b..4190869ad 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -364,7 +364,8 @@ def test_validate_pairs_restricted(default_conf, mocker, caplog): api_mock = MagicMock() type(api_mock).markets = PropertyMock(return_value={ 'ETH/BTC': {}, 'LTC/BTC': {}, 'NEO/BTC': {}, - 'XRP/BTC': {'info': {'IsRestricted': True}} + 'XRP/BTC': {'info': {'IsRestricted': True}}, + 'NEO/BTC': {'info': 'TestString'}, # info can also be a string ... }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) From e51ac2c97356b5d5d11ed55426a83967ca674ca5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 16:22:41 +0100 Subject: [PATCH 1292/3421] Remove unavailable pair ... --- tests/exchange/test_exchange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 4190869ad..2f95e4e01 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -363,7 +363,7 @@ def test_validate_pairs_exception(default_conf, mocker, caplog): def test_validate_pairs_restricted(default_conf, mocker, caplog): api_mock = MagicMock() type(api_mock).markets = PropertyMock(return_value={ - 'ETH/BTC': {}, 'LTC/BTC': {}, 'NEO/BTC': {}, + 'ETH/BTC': {}, 'LTC/BTC': {}, 'XRP/BTC': {'info': {'IsRestricted': True}}, 'NEO/BTC': {'info': 'TestString'}, # info can also be a string ... }) From 039dfc302ca2c8497aea27282f3ab20f5a0c4343 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 28 Dec 2019 01:34:31 +0300 Subject: [PATCH 1293/3421] No need to convert pair name --- freqtrade/freqtradebot.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e21d89cd3..a9ce14bef 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -351,7 +351,6 @@ class FreqtradeBot: :param pair: pair for which we want to create a LIMIT_BUY :return: None """ - pair_s = pair.replace('_', '/') stake_currency = self.config['stake_currency'] fiat_currency = self.config.get('fiat_display_currency', None) time_in_force = self.strategy.order_time_in_force['buy'] @@ -362,10 +361,10 @@ class FreqtradeBot: # Calculate amount buy_limit_requested = self.get_target_bid(pair) - min_stake_amount = self._get_min_pair_stake_amount(pair_s, buy_limit_requested) + min_stake_amount = self._get_min_pair_stake_amount(pair, buy_limit_requested) if min_stake_amount is not None and min_stake_amount > stake_amount: logger.warning( - f"Can't open a new trade for {pair_s}: stake amount " + f"Can't open a new trade for {pair}: stake amount " f"is too small ({stake_amount} < {min_stake_amount})" ) return False @@ -388,7 +387,7 @@ class FreqtradeBot: if float(order['filled']) == 0: logger.warning('Buy %s order with time in force %s for %s is %s by %s.' ' zero amount is fulfilled.', - order_tif, order_type, pair_s, order_status, self.exchange.name) + order_tif, order_type, pair, order_status, self.exchange.name) return False else: # the order is partially fulfilled @@ -396,7 +395,7 @@ class FreqtradeBot: # if the order is fulfilled fully or partially logger.warning('Buy %s order with time in force %s for %s is %s by %s.' ' %s amount fulfilled out of %s (%s remaining which is canceled).', - order_tif, order_type, pair_s, order_status, self.exchange.name, + order_tif, order_type, pair, order_status, self.exchange.name, order['filled'], order['amount'], order['remaining'] ) stake_amount = order['cost'] @@ -413,7 +412,7 @@ class FreqtradeBot: self.rpc.send_msg({ 'type': RPCMessageType.BUY_NOTIFICATION, 'exchange': self.exchange.name.capitalize(), - 'pair': pair_s, + 'pair': pair, 'limit': buy_limit_filled_price, 'order_type': order_type, 'stake_amount': stake_amount, From b6d1c5b17aca2e21d6cde9fd41513a5daf3aa0a2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 28 Dec 2019 01:44:51 +0300 Subject: [PATCH 1294/3421] _get_trade_stake_amount() is not private --- freqtrade/freqtradebot.py | 4 ++-- freqtrade/rpc/rpc.py | 2 +- tests/test_freqtradebot.py | 18 +++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a9ce14bef..9bd7e94fc 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -204,7 +204,7 @@ class FreqtradeBot: return used_rate - def _get_trade_stake_amount(self, pair) -> Optional[float]: + def get_trade_stake_amount(self, pair) -> Optional[float]: """ Check if stake amount can be fulfilled with the available balance for the stake currency @@ -309,7 +309,7 @@ class FreqtradeBot: self.dataprovider.ohlcv(_pair, self.strategy.ticker_interval)) if buy and not sell and len(Trade.get_open_trades()) < self.config['max_open_trades']: - stake_amount = self._get_trade_stake_amount(_pair) + stake_amount = self.get_trade_stake_amount(_pair) if not stake_amount: continue diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index d6d442df5..35c312743 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -462,7 +462,7 @@ class RPC: raise RPCException(f'position for {pair} already open - id: {trade.id}') # gen stake amount - stakeamount = self._freqtrade._get_trade_stake_amount(pair) + stakeamount = self._freqtrade.get_trade_stake_amount(pair) # execute buy if self._freqtrade.execute_buy(pair, stakeamount, price): diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 13f1277b9..1d6cce7fa 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -136,7 +136,7 @@ def test_get_trade_stake_amount(default_conf, ticker, mocker) -> None: freqtrade = FreqtradeBot(default_conf) - result = freqtrade._get_trade_stake_amount('ETH/BTC') + result = freqtrade.get_trade_stake_amount('ETH/BTC') assert result == default_conf['stake_amount'] @@ -147,7 +147,7 @@ def test_get_trade_stake_amount_no_stake_amount(default_conf, mocker) -> None: freqtrade = FreqtradeBot(default_conf) with pytest.raises(DependencyException, match=r'.*stake amount.*'): - freqtrade._get_trade_stake_amount('ETH/BTC') + freqtrade.get_trade_stake_amount('ETH/BTC') def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, @@ -170,25 +170,25 @@ def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, patch_get_signal(freqtrade) # no open trades, order amount should be 'balance / max_open_trades' - result = freqtrade._get_trade_stake_amount('ETH/BTC') + result = freqtrade.get_trade_stake_amount('ETH/BTC') assert result == default_conf['stake_amount'] / conf['max_open_trades'] # create one trade, order amount should be 'balance / (max_open_trades - num_open_trades)' freqtrade.execute_buy('ETH/BTC', result) - result = freqtrade._get_trade_stake_amount('LTC/BTC') + result = freqtrade.get_trade_stake_amount('LTC/BTC') assert result == default_conf['stake_amount'] / (conf['max_open_trades'] - 1) # create 2 trades, order amount should be None freqtrade.execute_buy('LTC/BTC', result) - result = freqtrade._get_trade_stake_amount('XRP/BTC') + result = freqtrade.get_trade_stake_amount('XRP/BTC') assert result is None # set max_open_trades = None, so do not trade conf['max_open_trades'] = 0 freqtrade = FreqtradeBot(conf) - result = freqtrade._get_trade_stake_amount('NEO/BTC') + result = freqtrade.get_trade_stake_amount('NEO/BTC') assert result is None @@ -214,8 +214,8 @@ def test_edge_overrides_stake_amount(mocker, edge_conf) -> None: edge_conf['dry_run_wallet'] = 999.9 freqtrade = FreqtradeBot(edge_conf) - assert freqtrade._get_trade_stake_amount('NEO/BTC') == (999.9 * 0.5 * 0.01) / 0.20 - assert freqtrade._get_trade_stake_amount('LTC/BTC') == (999.9 * 0.5 * 0.01) / 0.21 + assert freqtrade.get_trade_stake_amount('NEO/BTC') == (999.9 * 0.5 * 0.01) / 0.20 + assert freqtrade.get_trade_stake_amount('LTC/BTC') == (999.9 * 0.5 * 0.01) / 0.21 def test_edge_overrides_stoploss(limit_buy_order, fee, caplog, mocker, edge_conf) -> None: @@ -570,7 +570,7 @@ def test_create_trades_limit_reached(default_conf, ticker, limit_buy_order, patch_get_signal(freqtrade) assert not freqtrade.create_trades() - assert freqtrade._get_trade_stake_amount('ETH/BTC') is None + assert freqtrade.get_trade_stake_amount('ETH/BTC') is None def test_create_trades_no_pairs_let(default_conf, ticker, limit_buy_order, fee, From 86f269304099489279934f5622205bdad159d01e Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 28 Dec 2019 01:54:12 +0300 Subject: [PATCH 1295/3421] cosmetics --- freqtrade/freqtradebot.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 9bd7e94fc..7827f29af 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -299,17 +299,17 @@ class FreqtradeBot: buycount = 0 # running get_signal on historical data fetched - for _pair in whitelist: - if self.strategy.is_pair_locked(_pair): - logger.info(f"Pair {_pair} is currently locked.") + for pair in whitelist: + if self.strategy.is_pair_locked(pair): + logger.info(f"Pair {pair} is currently locked.") continue (buy, sell) = self.strategy.get_signal( - _pair, self.strategy.ticker_interval, - self.dataprovider.ohlcv(_pair, self.strategy.ticker_interval)) + pair, self.strategy.ticker_interval, + self.dataprovider.ohlcv(pair, self.strategy.ticker_interval)) if buy and not sell and len(Trade.get_open_trades()) < self.config['max_open_trades']: - stake_amount = self.get_trade_stake_amount(_pair) + stake_amount = self.get_trade_stake_amount(pair) if not stake_amount: continue @@ -320,11 +320,11 @@ class FreqtradeBot: get('check_depth_of_market', {}) if (bidstrat_check_depth_of_market.get('enabled', False)) and\ (bidstrat_check_depth_of_market.get('bids_to_ask_delta', 0) > 0): - if self._check_depth_of_market_buy(_pair, bidstrat_check_depth_of_market): - buycount += self.execute_buy(_pair, stake_amount) + if self._check_depth_of_market_buy(pair, bidstrat_check_depth_of_market): + buycount += self.execute_buy(pair, stake_amount) continue - buycount += self.execute_buy(_pair, stake_amount) + buycount += self.execute_buy(pair, stake_amount) return buycount > 0 From 243bcb23680f5989dce55c268240b074de9448fd Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 28 Dec 2019 02:25:43 +0300 Subject: [PATCH 1296/3421] Make _check_available_stake_amount() a separate method --- freqtrade/freqtradebot.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 7827f29af..24d250ffe 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -206,9 +206,8 @@ class FreqtradeBot: def get_trade_stake_amount(self, pair) -> Optional[float]: """ - Check if stake amount can be fulfilled with the available balance - for the stake currency - :return: float: Stake Amount + Calculate stake amount for the trade + :return: float: Stake amount """ if self.edge: return self.edge.stake_amount( @@ -220,16 +219,24 @@ class FreqtradeBot: else: stake_amount = self.config['stake_amount'] - available_amount = self.wallets.get_free(self.config['stake_currency']) - if stake_amount == constants.UNLIMITED_STAKE_AMOUNT: open_trades = len(Trade.get_open_trades()) if open_trades >= self.config['max_open_trades']: logger.warning("Can't open a new trade: max number of trades is reached") return None + available_amount = self.wallets.get_free(self.config['stake_currency']) return available_amount / (self.config['max_open_trades'] - open_trades) - # Check if stake_amount is fulfilled + return self._check_available_stake_amount(stake_amount) + + def _check_available_stake_amount(self, stake_amount) -> float: + """ + Check if stake amount can be fulfilled with the available balance + for the stake currency + :return: float: Stake amount + """ + available_amount = self.wallets.get_free(self.config['stake_currency']) + if available_amount < stake_amount: raise DependencyException( f"Available balance ({available_amount} {self.config['stake_currency']}) is " From abaeab89aadee4f8a6ee3a29d381fa58261fe0b1 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 28 Dec 2019 02:36:32 +0300 Subject: [PATCH 1297/3421] Make _calculate_unlimited_stake_amount() a separate method --- freqtrade/freqtradebot.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 24d250ffe..7b111e2d4 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -220,15 +220,22 @@ class FreqtradeBot: stake_amount = self.config['stake_amount'] if stake_amount == constants.UNLIMITED_STAKE_AMOUNT: - open_trades = len(Trade.get_open_trades()) - if open_trades >= self.config['max_open_trades']: - logger.warning("Can't open a new trade: max number of trades is reached") - return None - available_amount = self.wallets.get_free(self.config['stake_currency']) - return available_amount / (self.config['max_open_trades'] - open_trades) + return self._calculate_unlimited_stake_amount() return self._check_available_stake_amount(stake_amount) + def _calculate_unlimited_stake_amount(self) -> Optional[float]: + """ + Calculate stake amount for "unlimited" stake amount + :return: None if max number of trades reached + """ + open_trades = len(Trade.get_open_trades()) + if open_trades >= self.config['max_open_trades']: + logger.warning("Can't open a new trade: max number of trades is reached") + return None + available_amount = self.wallets.get_free(self.config['stake_currency']) + return available_amount / (self.config['max_open_trades'] - open_trades) + def _check_available_stake_amount(self, stake_amount) -> float: """ Check if stake amount can be fulfilled with the available balance From ef92fd775c0863530caae52e9b0b170c3fcc7b77 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 28 Dec 2019 02:53:41 +0300 Subject: [PATCH 1298/3421] Align behavior: check for available in all cases: edge, unlimited and fixed --- freqtrade/freqtradebot.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 7b111e2d4..2f4803cc5 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -210,7 +210,7 @@ class FreqtradeBot: :return: float: Stake amount """ if self.edge: - return self.edge.stake_amount( + stake_amount = self.edge.stake_amount( pair, self.wallets.get_free(self.config['stake_currency']), self.wallets.get_total(self.config['stake_currency']), @@ -218,9 +218,8 @@ class FreqtradeBot: ) else: stake_amount = self.config['stake_amount'] - - if stake_amount == constants.UNLIMITED_STAKE_AMOUNT: - return self._calculate_unlimited_stake_amount() + if stake_amount == constants.UNLIMITED_STAKE_AMOUNT: + stake_amount = self._calculate_unlimited_stake_amount() return self._check_available_stake_amount(stake_amount) @@ -236,7 +235,7 @@ class FreqtradeBot: available_amount = self.wallets.get_free(self.config['stake_currency']) return available_amount / (self.config['max_open_trades'] - open_trades) - def _check_available_stake_amount(self, stake_amount) -> float: + def _check_available_stake_amount(self, stake_amount: Optional[float]) -> Optional[float]: """ Check if stake amount can be fulfilled with the available balance for the stake currency @@ -244,7 +243,7 @@ class FreqtradeBot: """ available_amount = self.wallets.get_free(self.config['stake_currency']) - if available_amount < stake_amount: + if stake_amount is not None and available_amount < stake_amount: raise DependencyException( f"Available balance ({available_amount} {self.config['stake_currency']}) is " f"lower than stake amount ({stake_amount} {self.config['stake_currency']})" From ed9cb4219df4305e5c3aa1133b45ca0637b9b6d4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 28 Dec 2019 02:58:23 +0300 Subject: [PATCH 1299/3421] Make mypy happy --- freqtrade/freqtradebot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 2f4803cc5..4ec01cb60 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -209,6 +209,7 @@ class FreqtradeBot: Calculate stake amount for the trade :return: float: Stake amount """ + stake_amount: Optional[float] if self.edge: stake_amount = self.edge.stake_amount( pair, From 8eeabd2372b26987975a4dd772157e14de7a0044 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 28 Dec 2019 03:22:50 +0300 Subject: [PATCH 1300/3421] Move warning to create_trades() --- freqtrade/freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4ec01cb60..44a83db1a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -231,7 +231,6 @@ class FreqtradeBot: """ open_trades = len(Trade.get_open_trades()) if open_trades >= self.config['max_open_trades']: - logger.warning("Can't open a new trade: max number of trades is reached") return None available_amount = self.wallets.get_free(self.config['stake_currency']) return available_amount / (self.config['max_open_trades'] - open_trades) @@ -324,7 +323,8 @@ class FreqtradeBot: if buy and not sell and len(Trade.get_open_trades()) < self.config['max_open_trades']: stake_amount = self.get_trade_stake_amount(pair) - if not stake_amount: + if stake_amount is None: + logger.warning("Can't open a new trade: max number of trades is reached") continue logger.info(f"Buy signal found: about create a new trade with stake_amount: " From 3dbd83e35a7529215ef609e3090aa9d78475ecb4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 28 Dec 2019 03:46:42 +0300 Subject: [PATCH 1301/3421] Introduce get_free_open_trades() method --- freqtrade/freqtradebot.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 44a83db1a..14d67b942 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -136,7 +136,7 @@ class FreqtradeBot: self.process_maybe_execute_sells(trades) # Then looking for buy opportunities - if len(trades) < self.config['max_open_trades']: + if self.get_free_open_trades(): self.process_maybe_execute_buys() # Check and handle any timed out open orders @@ -173,6 +173,14 @@ class FreqtradeBot: """ return [(pair, self.config['ticker_interval']) for pair in pairs] + def get_free_open_trades(self): + """ + Return the number of free open trades slots or 0 if + max number of open trades reached + """ + open_trades = len(Trade.get_open_trades()) + return max(0, self.config['max_open_trades'] - open_trades) + def get_target_bid(self, pair: str, tick: Dict = None) -> float: """ Calculates bid target between current ask price and last price @@ -229,11 +237,11 @@ class FreqtradeBot: Calculate stake amount for "unlimited" stake amount :return: None if max number of trades reached """ - open_trades = len(Trade.get_open_trades()) - if open_trades >= self.config['max_open_trades']: + free_open_trades = self.get_free_open_trades() + if not free_open_trades: return None available_amount = self.wallets.get_free(self.config['stake_currency']) - return available_amount / (self.config['max_open_trades'] - open_trades) + return available_amount / free_open_trades def _check_available_stake_amount(self, stake_amount: Optional[float]) -> Optional[float]: """ @@ -321,12 +329,12 @@ class FreqtradeBot: pair, self.strategy.ticker_interval, self.dataprovider.ohlcv(pair, self.strategy.ticker_interval)) - if buy and not sell and len(Trade.get_open_trades()) < self.config['max_open_trades']: - stake_amount = self.get_trade_stake_amount(pair) - if stake_amount is None: + if buy and not sell: + if not self.get_free_open_trades(): logger.warning("Can't open a new trade: max number of trades is reached") continue + stake_amount = self.get_trade_stake_amount(pair) logger.info(f"Buy signal found: about create a new trade with stake_amount: " f"{stake_amount} ...") From d6ca562b0378a289b160372d1a4a7df0d2da2d67 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 28 Dec 2019 04:05:03 +0300 Subject: [PATCH 1302/3421] Make mypy happy and handle hypothetical case when stake_amount == 0 --- freqtrade/freqtradebot.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 14d67b942..9c18d2d95 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -335,6 +335,10 @@ class FreqtradeBot: continue stake_amount = self.get_trade_stake_amount(pair) + if not stake_amount: + logger.warning("Stake amount is 0, ignoring trade") + continue + logger.info(f"Buy signal found: about create a new trade with stake_amount: " f"{stake_amount} ...") From fc98cf00372b8b5f0d8e9cdd6ea8dc3b182f3f4a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 06:25:45 +0100 Subject: [PATCH 1303/3421] Address PR feedback - change output to show Filename only --- docs/utils.md | 8 ++++---- freqtrade/utils.py | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index f7501ae9d..18deeac54 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -110,7 +110,7 @@ freqtrade new-hyperopt --userdir ~/.freqtrade/ --hyperopt AwesomeHyperopt ## List Strategies -Use the `list-strategies` subcommand to see all strategies in one particular folder. +Use the `list-strategies` subcommand to see all strategies in one particular directory. ``` freqtrade list-strategies --help @@ -135,12 +135,12 @@ Common arguments: ``` !!! Warning - Using this command will try to load all python files from a folder. This can be a security risk if untrusted files reside in this folder, since all module-level code is executed. + Using this command will try to load all python files from a directory. This can be a security risk if untrusted files reside in this directory, since all module-level code is executed. -Example: search default strategy folder within userdir +Example: search default strategy directory within userdir ``` bash -freqtrade list-strategies --user-data ~/.freqtrade/ +freqtrade list-strategies --userdir ~/.freqtrade/ ``` Example: search dedicated strategy path diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 06a62172a..f6e251154 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -226,7 +226,7 @@ def start_download_data(args: Dict[str, Any]) -> None: def start_list_strategies(args: Dict[str, Any]) -> None: """ - Print Strategies available in a folder + Print Strategies available in a directory """ config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) @@ -234,7 +234,7 @@ def start_list_strategies(args: Dict[str, Any]) -> None: strategies = StrategyResolver.search_all_objects(directory) # Sort alphabetically strategies = sorted(strategies, key=lambda x: x['name']) - strats_to_print = [{'name': s['name'], 'location': s['location']} for s in strategies] + strats_to_print = [{'name': s['name'], 'location': s['location'].name} for s in strategies] if args['print_one_column']: print('\n'.join([s['name'] for s in strategies])) From b2fb28453f460f89bfaef57a2ac5edae90749585 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 06:39:25 +0100 Subject: [PATCH 1304/3421] Fix tests after changing output --- tests/test_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index 185425efc..4cf7b5f23 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -644,7 +644,7 @@ def test_start_list_strategies(mocker, caplog, capsys): start_list_strategies(pargs) captured = capsys.readouterr() assert "TestStrategyLegacy" in captured.out - assert str(Path("strategy/legacy_strategy.py")) not in captured.out + assert "legacy_strategy.py" not in captured.out assert "DefaultStrategy" in captured.out # Test regular output @@ -658,7 +658,7 @@ def test_start_list_strategies(mocker, caplog, capsys): start_list_strategies(pargs) captured = capsys.readouterr() assert "TestStrategyLegacy" in captured.out - assert str(Path("strategy/legacy_strategy.py")) in captured.out + assert "legacy_strategy.py" in captured.out assert "DefaultStrategy" in captured.out From 2496aa8e3f027cfb95a6628204442ca464739121 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 10:59:26 +0100 Subject: [PATCH 1305/3421] Add convert-data template subcommands --- freqtrade/configuration/arguments.py | 13 ++++++++++++- freqtrade/utils.py | 8 ++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index b2197619d..396b55ef5 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -47,6 +47,8 @@ ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "template"] ARGS_BUILD_HYPEROPT = ["user_data_dir", "hyperopt", "template"] +ARGS_CONVERT_DATA = [] + ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", "timeframes", "erase"] @@ -131,7 +133,7 @@ class Arguments: self._build_args(optionlist=['version'], parser=self.parser) from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge - from freqtrade.utils import (start_create_userdir, start_download_data, + from freqtrade.utils import (start_create_userdir, start_convert_data, start_download_data, start_hyperopt_list, start_hyperopt_show, start_list_exchanges, start_list_markets, start_list_strategies, start_new_hyperopt, @@ -251,6 +253,15 @@ class Arguments: download_data_cmd.set_defaults(func=start_download_data) self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd) + # Add convert-data subcommand + convert_data_cmd = subparsers.add_parser( + 'convert-data', + help='Convert data from one format to another.', + parents=[_common_parser], + ) + convert_data_cmd.set_defaults(func=start_convert_data) + self._build_args(optionlist=ARGS_CONVERT_DATA, parser=convert_data_cmd) + # Add Plotting subcommand plot_dataframe_cmd = subparsers.add_parser( 'plot-dataframe', diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 5a5662e4b..59a8dcbb3 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -241,6 +241,14 @@ def start_list_strategies(args: Dict[str, Any]) -> None: print(tabulate(strats_to_print, headers='keys', tablefmt='pipe')) +def start_convert_data(args: Dict[str, Any]) -> None: + """ + Convert data from one format to another + """ + config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) + print(config) + + def start_list_timeframes(args: Dict[str, Any]) -> None: """ Print ticker intervals (timeframes) available on Exchange From e5a61667ddf60061a5e5477fa3b97da9a6563a9a Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 14:56:48 +0100 Subject: [PATCH 1306/3421] Implement first version of jsondatahandler --- freqtrade/configuration/arguments.py | 6 +- freqtrade/data/datahandlers/__init__.py | 20 ++++ freqtrade/data/datahandlers/idatahandler.py | 97 ++++++++++++++++ .../data/datahandlers/jsondatahandler.py | 105 ++++++++++++++++++ 4 files changed, 225 insertions(+), 3 deletions(-) create mode 100644 freqtrade/data/datahandlers/__init__.py create mode 100644 freqtrade/data/datahandlers/idatahandler.py create mode 100644 freqtrade/data/datahandlers/jsondatahandler.py diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 396b55ef5..44bc71038 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -65,9 +65,9 @@ ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "print_c ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_show_index", "print_json", "hyperopt_show_no_header"] -NO_CONF_REQURIED = ["download-data", "list-timeframes", "list-markets", "list-pairs", - "list-strategies", "hyperopt-list", "hyperopt-show", "plot-dataframe", - "plot-profit"] +NO_CONF_REQURIED = ["convert-data", "download-data", "list-timeframes", "list-markets", + "list-pairs", "list-strategies", "hyperopt-list", "hyperopt-show", + "plot-dataframe", "plot-profit"] NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-hyperopt", "new-strategy"] diff --git a/freqtrade/data/datahandlers/__init__.py b/freqtrade/data/datahandlers/__init__.py new file mode 100644 index 000000000..b3aa2e3a4 --- /dev/null +++ b/freqtrade/data/datahandlers/__init__.py @@ -0,0 +1,20 @@ +from .idatahandler import IDataHandler + + +def get_datahandlerclass(datatype: str) -> IDataHandler: + """ + Get datahandler class. + Could be done using Resolvers, but since this may be called often and resolvers + are rather expensive, doing this directly should improve performance. + :param datatype: datatype to use. + :return: Datahandler class + """ + + if datatype == 'json': + from .jsondatahandler import JsonDataHandler + return JsonDataHandler + elif datatype == 'jsongz': + from .jsondatahandler import JsonGzDataHandler + return JsonGzDataHandler + else: + raise ValueError(f"No datahandler for datatype {datatype} available.") diff --git a/freqtrade/data/datahandlers/idatahandler.py b/freqtrade/data/datahandlers/idatahandler.py new file mode 100644 index 000000000..ffe50b14e --- /dev/null +++ b/freqtrade/data/datahandlers/idatahandler.py @@ -0,0 +1,97 @@ +""" +Abstract datahandler interface. +It's subclasses handle and storing data from disk. + +""" + +from abc import ABC, abstractmethod, abstractclassmethod +from pathlib import Path +from typing import Dict, List, Optional + +from pandas import DataFrame + +from freqtrade.configuration import TimeRange + + +class IDataHandler(ABC): + + def __init__(self, datadir: Path, pair: str) -> None: + self._datadir = datadir + self._pair = pair + + @abstractclassmethod + def ohlcv_get_pairs(cls, datadir: Path, timeframe: str) -> List[str]: + """ + Returns a list of all pairs available in this datadir + """ + + @abstractmethod + def ohlcv_store(self, timeframe: str, data: DataFrame): + """ + Store data + """ + + @abstractmethod + def ohlcv_append(self, timeframe: str, data: DataFrame): + """ + Append data to existing files + """ + + @abstractmethod + def ohlcv_load(self, timeframe: str, timerange: Optional[TimeRange] = None) -> DataFrame: + """ + Load data for one pair + :return: Dataframe + """ + + @abstractclassmethod + def trades_get_pairs(cls, datadir: Path) -> List[str]: + """ + Returns a list of all pairs available in this datadir + """ + + @abstractmethod + def trades_store(self, data: DataFrame): + """ + Store data + """ + + @abstractmethod + def trades_append(self, data: DataFrame): + """ + Append data to existing files + """ + + @abstractmethod + def trades_load(self, timerange: Optional[TimeRange] = None): + """ + Load data for one pair + :return: Dataframe + """ + + @staticmethod + def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]: + """ + TODO: investigate if this is needed ... we can probably cover this in a dataframe + Trim tickerlist based on given timerange + """ + if not tickerlist: + return tickerlist + + start_index = 0 + stop_index = len(tickerlist) + + if timerange.starttype == 'date': + while (start_index < len(tickerlist) and + tickerlist[start_index][0] < timerange.startts * 1000): + start_index += 1 + + if timerange.stoptype == 'date': + while (stop_index > 0 and + tickerlist[stop_index-1][0] > timerange.stopts * 1000): + stop_index -= 1 + + if start_index > stop_index: + raise ValueError(f'The timerange [{timerange.startts},{timerange.stopts}] is incorrect') + + return tickerlist[start_index:stop_index] diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py new file mode 100644 index 000000000..214958251 --- /dev/null +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -0,0 +1,105 @@ +import re +from pathlib import Path +from typing import Dict, List, Optional + +from pandas import DataFrame + +from freqtrade import misc +from freqtrade.configuration import TimeRange + +from .idatahandler import IDataHandler + + +class JsonDataHandler(IDataHandler): + + _use_zip = False + + @classmethod + def ohlcv_get_pairs(cls, datadir: Path, timeframe: str) -> List[str]: + """ + Returns a list of all pairs available in this datadir + """ + return [re.search(r'^(\S+)(?=\-' + timeframe + '.json)', p.name)[0].replace('_', ' /') + for p in datadir.glob(f"*{timeframe}.{cls._get_file_extension()}")] + + def ohlcv_store(self, timeframe: str, data: DataFrame): + """ + Store data + """ + raise NotImplementedError() + + def ohlcv_append(self, timeframe: str, data: DataFrame): + """ + Append data to existing files + """ + raise NotImplementedError() + + def ohlcv_load(self, timeframe: str, timerange: Optional[TimeRange] = None) -> DataFrame: + """ + Load data for one pair + :return: Dataframe + """ + filename = JsonDataHandler._pair_data_filename(self.datadir, self._pair, + self._pair, timeframe) + pairdata = misc.file_load_json(filename) + if not pairdata: + return [] + + if timerange: + pairdata = IDataHandler.trim_tickerlist(pairdata, timerange) + return pairdata + + @classmethod + def trades_get_pairs(cls, datadir: Path) -> List[str]: + """ + Returns a list of all pairs available in this datadir + """ + return [re.search(r'^(\S+)(?=\-trades.json)', p.name)[0].replace('_', '/') + for p in datadir.glob(f"*trades.{cls._get_file_extension()}")] + + def trades_store(self, data: List[Dict]): + """ + Store data + """ + filename = self._pair_trades_filename(self._datadir, self._pair) + misc.file_dump_json(filename, data, is_zip=self._use_zip) + + def trades_append(self, data: DataFrame): + """ + Append data to existing files + """ + raise NotImplementedError() + + def trades_load(self, timerange: Optional[TimeRange] = None) -> List[Dict]: + """ + Load a pair from file, either .json.gz or .json + # TODO: validate timerange ... + :return: List of trades + """ + filename = self._pair_trades_filename(self._datadir, self._pair) + tradesdata = misc.file_load_json(filename) + if not tradesdata: + return [] + + return tradesdata + + @classmethod + def _pair_data_filename(cls, datadir: Path, pair: str, timeframe: str) -> Path: + pair_s = pair.replace("/", "_") + filename = datadir.joinpath(f'{pair_s}-{timeframe}.{cls._get_file_extension()}') + return filename + + @classmethod + def _get_file_extension(cls): + return "json.gz" if cls._use_zip else "json" + + @classmethod + def _pair_trades_filename(cls, datadir: Path, pair: str) -> Path: + pair_s = pair.replace("/", "_") + filename = datadir.joinpath(f'{pair_s}-trades.{cls._get_file_extension()}') + return filename + + +class JsonGzDataHandler(JsonDataHandler): + + _use_zip = True From cd4466a62655dbec5c0e811af87fd530b3ea0b28 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 15:04:45 +0100 Subject: [PATCH 1307/3421] Add convert_* methods --- freqtrade/utils.py | 50 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 59a8dcbb3..82d781fe5 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -17,6 +17,7 @@ from freqtrade.configuration import (Configuration, TimeRange, from freqtrade.configuration.directory_operations import (copy_sample_files, create_userdata_dir) from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGY +from freqtrade.data.datahandlers import get_datahandlerclass from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data, refresh_backtest_trades_data) @@ -241,12 +242,53 @@ def start_list_strategies(args: Dict[str, Any]) -> None: print(tabulate(strats_to_print, headers='keys', tablefmt='pipe')) +def convert_trades_format(config: Dict[str, Any], convert_from: str, convert_to: str): + """ + TODO: move this to converter.py (?) + """ + SrcClass = get_datahandlerclass(convert_from) + TrgClass = get_datahandlerclass(convert_to) + + if 'pairs' not in config: + config['pairs'] = SrcClass.trades_get_pairs(config['datadir']) + logger.info(f"Converting trades for {config['pairs']}") + + for pair in config['pairs']: + src = SrcClass(config['datadir'], pair) + trg = TrgClass(config['datadir'], pair) + data = src.trades_load() + logger.info(f"Converting {len(data)} trades for {pair}") + trg.trades_store(data) + + +def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: str): + """ + TODO: move this to converter.py (?) + """ + SrcClass = get_datahandlerclass(convert_from) + TrgClass = get_datahandlerclass(convert_to) + + if 'pairs' not in config: + config['pairs'] = SrcClass.ohclv_get_pairs(config['datadir'], config['ticker_interval']) + logger.info(f"Converting OHLCV for {config['pairs']}") + + for pair in config['pairs']: + src = SrcClass(config['datadir'], pair) + trg = TrgClass(config['datadir'], pair) + data = src.ohlcv_load() + logger.info(f"Converting {len(data)} candles for {pair}") + trg.ohlcv_store(data) + + def start_convert_data(args: Dict[str, Any]) -> None: """ Convert data from one format to another """ - config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) - print(config) + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + from pprint import pprint + pprint(config) + + # convert_trades_format(config, 'json', 'jsongz') def start_list_timeframes(args: Dict[str, Any]) -> None: @@ -452,10 +494,10 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: n = config.get('hyperopt_show_index', -1) if n > trials_epochs: raise OperationalException( - f"The index of the epoch to show should be less than {trials_epochs + 1}.") + f"The index of the epoch to show should be less than {trials_epochs + 1}.") if n < -trials_epochs: raise OperationalException( - f"The index of the epoch to show should be greater than {-trials_epochs - 1}.") + f"The index of the epoch to show should be greater than {-trials_epochs - 1}.") # Translate epoch index from human-readable format to pythonic if n > 0: From c3064dfd2b56e8d74ef8c07219b0e119cd0626c6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Dec 2019 15:06:33 +0100 Subject: [PATCH 1308/3421] Enhance validation constants --- freqtrade/constants.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index d7c6249d5..2f60bef2d 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -18,6 +18,7 @@ REQUIRED_ORDERTYPES = ['buy', 'sell', 'stoploss', 'stoploss_on_exchange'] ORDERTYPE_POSSIBILITIES = ['limit', 'market'] ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc'] AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'PrecisionFilter', 'PriceFilter'] +AVAILABLE_DATAHANDLERS = ['json', 'jsongz'] DRY_RUN_WALLET = 1000 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons @@ -213,6 +214,16 @@ CONF_SCHEMA = { 'process_throttle_secs': {'type': 'integer'}, 'interval': {'type': 'integer'}, 'sd_notify': {'type': 'boolean'}, + 'dataformat_ohlcv': { + 'type': 'string', + 'enum': AVAILABLE_DATAHANDLERS, + 'default': 'json' + }, + 'dataformat_trades': { + 'type': 'string', + 'enum': AVAILABLE_DATAHANDLERS, + 'default': 'jsongz' + } } } }, @@ -280,5 +291,6 @@ CONF_SCHEMA = { 'unfilledtimeout', 'stoploss', 'minimal_roi', + 'internals', ] } From 2a6b542b098f4ada5fd75149437e9dcb14474450 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 09:59:01 +0100 Subject: [PATCH 1309/3421] Add second subcommand to allow conversation of ohlcv and trades data seprately --- freqtrade/configuration/arguments.py | 20 +++++++++++++++----- freqtrade/configuration/cli_options.py | 12 ++++++++++++ freqtrade/utils.py | 10 +++++++--- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 44bc71038..a20ecaa43 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -47,7 +47,7 @@ ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "template"] ARGS_BUILD_HYPEROPT = ["user_data_dir", "hyperopt", "template"] -ARGS_CONVERT_DATA = [] +ARGS_CONVERT_DATA = ["format_from", "format_to"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", "timeframes", "erase"] @@ -65,8 +65,9 @@ ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "print_c ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_show_index", "print_json", "hyperopt_show_no_header"] -NO_CONF_REQURIED = ["convert-data", "download-data", "list-timeframes", "list-markets", - "list-pairs", "list-strategies", "hyperopt-list", "hyperopt-show", +NO_CONF_REQURIED = ["convert-data", "convert-trade-data", "download-data", + "list-timeframes", "list-markets", "list-pairs", + "list-strategies", "hyperopt-list", "hyperopt-show", "plot-dataframe", "plot-profit"] NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-hyperopt", "new-strategy"] @@ -256,10 +257,19 @@ class Arguments: # Add convert-data subcommand convert_data_cmd = subparsers.add_parser( 'convert-data', - help='Convert data from one format to another.', + help='Convert OHLCV data from one format to another.', parents=[_common_parser], ) - convert_data_cmd.set_defaults(func=start_convert_data) + convert_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=True)) + self._build_args(optionlist=ARGS_CONVERT_DATA, parser=convert_data_cmd) + + # Add convert-data subcommand + convert_data_cmd = subparsers.add_parser( + 'convert-trade-data', + help='Convert trade-data from one format to another.', + parents=[_common_parser], + ) + convert_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=False)) self._build_args(optionlist=ARGS_CONVERT_DATA, parser=convert_data_cmd) # Add Plotting subcommand diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 4b6429f20..ffaf9ea66 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -332,6 +332,18 @@ AVAILABLE_CLI_OPTIONS = { 'desired timeframe as specified as --timeframes/-t.', action='store_true', ), + "format_from": Arg( + '--format-from', + help='Source format for data conversation.', + choices=constants.AVAILABLE_DATAHANDLERS, + required=True, + ), + "format_to": Arg( + '--format-to', + help='Destination format for data conversation.', + choices=constants.AVAILABLE_DATAHANDLERS, + required=True, + ), "exchange": Arg( '--exchange', help=f'Exchange name (default: `{constants.DEFAULT_EXCHANGE}`). ' diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 82d781fe5..d02c80f7f 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -280,15 +280,19 @@ def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: trg.ohlcv_store(data) -def start_convert_data(args: Dict[str, Any]) -> None: +def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None: """ Convert data from one format to another """ config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) from pprint import pprint pprint(config) - - # convert_trades_format(config, 'json', 'jsongz') + if ohlcv: + convert_ohlcv_format(config, + convert_from=args['format_from'], convert_to=args['format_to']) + else: + convert_trades_format(config, + convert_from=args['format_from'], convert_to=args['format_to']) def start_list_timeframes(args: Dict[str, Any]) -> None: From f8b8b9ac631dfe36083a3f0f7c1ccc086a81dad0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 10:01:39 +0100 Subject: [PATCH 1310/3421] Convert to Path temporarily --- freqtrade/utils.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index d02c80f7f..4661e84b2 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -245,17 +245,18 @@ def start_list_strategies(args: Dict[str, Any]) -> None: def convert_trades_format(config: Dict[str, Any], convert_from: str, convert_to: str): """ TODO: move this to converter.py (?) + TODO: remove Path conversation once PR is merged and this is rebased """ SrcClass = get_datahandlerclass(convert_from) TrgClass = get_datahandlerclass(convert_to) if 'pairs' not in config: - config['pairs'] = SrcClass.trades_get_pairs(config['datadir']) + config['pairs'] = SrcClass.trades_get_pairs(Path(config['datadir'])) logger.info(f"Converting trades for {config['pairs']}") for pair in config['pairs']: - src = SrcClass(config['datadir'], pair) - trg = TrgClass(config['datadir'], pair) + src = SrcClass(Path(config['datadir'], pair)) + trg = TrgClass(Path(config['datadir'], pair)) data = src.trades_load() logger.info(f"Converting {len(data)} trades for {pair}") trg.trades_store(data) @@ -264,17 +265,18 @@ def convert_trades_format(config: Dict[str, Any], convert_from: str, convert_to: def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: str): """ TODO: move this to converter.py (?) + TODO: remove Path conversation once PR is merged and this is rebased """ SrcClass = get_datahandlerclass(convert_from) TrgClass = get_datahandlerclass(convert_to) if 'pairs' not in config: - config['pairs'] = SrcClass.ohclv_get_pairs(config['datadir'], config['ticker_interval']) + config['pairs'] = SrcClass.ohclv_get_pairs(Path(config['datadir']), config['ticker_interval']) logger.info(f"Converting OHLCV for {config['pairs']}") for pair in config['pairs']: - src = SrcClass(config['datadir'], pair) - trg = TrgClass(config['datadir'], pair) + src = SrcClass(Path(config['datadir']), pair) + trg = TrgClass(Path(config['datadir']), pair) data = src.ohlcv_load() logger.info(f"Converting {len(data)} candles for {pair}") trg.ohlcv_store(data) From ef0fcb0e0f5b82548b53380a0968d1750c64da69 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 10:21:30 +0100 Subject: [PATCH 1311/3421] Make data-finding safe --- freqtrade/data/datahandlers/jsondatahandler.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index 214958251..fe01176ad 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -19,8 +19,11 @@ class JsonDataHandler(IDataHandler): """ Returns a list of all pairs available in this datadir """ - return [re.search(r'^(\S+)(?=\-' + timeframe + '.json)', p.name)[0].replace('_', ' /') + + _tmp = [re.search(r'^(\S+)(?=\-' + timeframe + '.json)', p.name) for p in datadir.glob(f"*{timeframe}.{cls._get_file_extension()}")] + # Check if regex found something and only return these results + return [match[0].replace('_', ' /') for match in _tmp if match] def ohlcv_store(self, timeframe: str, data: DataFrame): """ @@ -54,8 +57,10 @@ class JsonDataHandler(IDataHandler): """ Returns a list of all pairs available in this datadir """ - return [re.search(r'^(\S+)(?=\-trades.json)', p.name)[0].replace('_', '/') + _tmp = [re.search(r'^(\S+)(?=\-trades.json)', p.name) for p in datadir.glob(f"*trades.{cls._get_file_extension()}")] + # Check if regex found something and only return these results to avoid exceptions. + return [match[0].replace('_', ' /') for match in _tmp if match] def trades_store(self, data: List[Dict]): """ From 3d4f62081e1cc9306a7eceb33fc575c9fd354c5d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 10:21:47 +0100 Subject: [PATCH 1312/3421] Allow timeframes for convert-data --- freqtrade/configuration/arguments.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index a20ecaa43..888da4296 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -48,6 +48,7 @@ ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "template"] ARGS_BUILD_HYPEROPT = ["user_data_dir", "hyperopt", "template"] ARGS_CONVERT_DATA = ["format_from", "format_to"] +ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", "timeframes", "erase"] @@ -261,7 +262,7 @@ class Arguments: parents=[_common_parser], ) convert_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=True)) - self._build_args(optionlist=ARGS_CONVERT_DATA, parser=convert_data_cmd) + self._build_args(optionlist=ARGS_CONVERT_DATA_OHLCV, parser=convert_data_cmd) # Add convert-data subcommand convert_data_cmd = subparsers.add_parser( From 2a728ee68f669b0df51c70bf8e1f1a4cc52dcfc1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 10:25:30 +0100 Subject: [PATCH 1313/3421] fix bug in find-files --- freqtrade/data/datahandlers/jsondatahandler.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index fe01176ad..a6caf137d 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -23,7 +23,7 @@ class JsonDataHandler(IDataHandler): _tmp = [re.search(r'^(\S+)(?=\-' + timeframe + '.json)', p.name) for p in datadir.glob(f"*{timeframe}.{cls._get_file_extension()}")] # Check if regex found something and only return these results - return [match[0].replace('_', ' /') for match in _tmp if match] + return [match[0].replace('_', '/') for match in _tmp if match] def ohlcv_store(self, timeframe: str, data: DataFrame): """ @@ -42,8 +42,7 @@ class JsonDataHandler(IDataHandler): Load data for one pair :return: Dataframe """ - filename = JsonDataHandler._pair_data_filename(self.datadir, self._pair, - self._pair, timeframe) + filename = JsonDataHandler._pair_data_filename(self._datadir, self._pair, timeframe) pairdata = misc.file_load_json(filename) if not pairdata: return [] @@ -60,7 +59,7 @@ class JsonDataHandler(IDataHandler): _tmp = [re.search(r'^(\S+)(?=\-trades.json)', p.name) for p in datadir.glob(f"*trades.{cls._get_file_extension()}")] # Check if regex found something and only return these results to avoid exceptions. - return [match[0].replace('_', ' /') for match in _tmp if match] + return [match[0].replace('_', '/') for match in _tmp if match] def trades_store(self, data: List[Dict]): """ From 018e2703368459d06d0aab0b8e320321a12c6e2c Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 10:28:11 +0100 Subject: [PATCH 1314/3421] Allow --pairs for convert arguments --- freqtrade/configuration/arguments.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 888da4296..cefa86927 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -47,7 +47,7 @@ ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "template"] ARGS_BUILD_HYPEROPT = ["user_data_dir", "hyperopt", "template"] -ARGS_CONVERT_DATA = ["format_from", "format_to"] +ARGS_CONVERT_DATA = ["pairs", "format_from", "format_to"] ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", From d804372d74ad0a38a66ca6588abc2b01af04b341 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 10:28:25 +0100 Subject: [PATCH 1315/3421] Enhance ohlcv_convert method --- freqtrade/utils.py | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 4661e84b2..0805f0011 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -252,11 +252,12 @@ def convert_trades_format(config: Dict[str, Any], convert_from: str, convert_to: if 'pairs' not in config: config['pairs'] = SrcClass.trades_get_pairs(Path(config['datadir'])) - logger.info(f"Converting trades for {config['pairs']}") + logger.info(f"Converting trades for {config['pairs']}") for pair in config['pairs']: - src = SrcClass(Path(config['datadir'], pair)) - trg = TrgClass(Path(config['datadir'], pair)) + print(pair) + src = SrcClass(Path(config['datadir']), pair) + trg = TrgClass(Path(config['datadir']), pair) data = src.trades_load() logger.info(f"Converting {len(data)} trades for {pair}") trg.trades_store(data) @@ -269,17 +270,25 @@ def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: """ SrcClass = get_datahandlerclass(convert_from) TrgClass = get_datahandlerclass(convert_to) + timeframes = config.get('timeframes', [config.get('ticker_interval')]) + logger.info(f"Converting OHLCV for timeframe {timeframes}") if 'pairs' not in config: - config['pairs'] = SrcClass.ohclv_get_pairs(Path(config['datadir']), config['ticker_interval']) - logger.info(f"Converting OHLCV for {config['pairs']}") + config['pairs'] = [] + # Check timeframes or fall back to ticker_interval. + for timeframe in timeframes: + config['pairs'].extend(SrcClass.ohlcv_get_pairs(Path(config['datadir']), + timeframe)) + logger.info(f"Converting OHLCV for {config['pairs']}") - for pair in config['pairs']: - src = SrcClass(Path(config['datadir']), pair) - trg = TrgClass(Path(config['datadir']), pair) - data = src.ohlcv_load() - logger.info(f"Converting {len(data)} candles for {pair}") - trg.ohlcv_store(data) + for timeframe in timeframes: + + for pair in config['pairs']: + src = SrcClass(Path(config['datadir']), pair) + trg = TrgClass(Path(config['datadir']), pair) + data = src.ohlcv_load(timeframe) + logger.info(f"Converting {len(data)} candles for {pair}") + # trg.ohlcv_store(data) def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None: From abc6b9459a8133c4c66f3a2c9f7afc407af35a9c Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 10:30:35 +0100 Subject: [PATCH 1316/3421] Add ohlcv_store call to convert_ohlcv --- freqtrade/data/datahandlers/jsondatahandler.py | 4 ++-- freqtrade/utils.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index a6caf137d..747d80c54 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -25,13 +25,13 @@ class JsonDataHandler(IDataHandler): # Check if regex found something and only return these results return [match[0].replace('_', '/') for match in _tmp if match] - def ohlcv_store(self, timeframe: str, data: DataFrame): + def ohlcv_store(self, timeframe: str, data: DataFrame) -> None: """ Store data """ raise NotImplementedError() - def ohlcv_append(self, timeframe: str, data: DataFrame): + def ohlcv_append(self, timeframe: str, data: DataFrame) -> None: """ Append data to existing files """ diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 0805f0011..72b2afc8e 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -286,9 +286,9 @@ def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: for pair in config['pairs']: src = SrcClass(Path(config['datadir']), pair) trg = TrgClass(Path(config['datadir']), pair) - data = src.ohlcv_load(timeframe) + data = src.ohlcv_load(timeframe=timeframe) logger.info(f"Converting {len(data)} candles for {pair}") - # trg.ohlcv_store(data) + trg.ohlcv_store(timeframe=timeframe, data=data) def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None: From 8f214aec891a862dab943de5f3561025852ac1fd Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 10:35:23 +0100 Subject: [PATCH 1317/3421] Fix "dumping" message to work correctly for .gz files --- freqtrade/misc.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index bcba78cf0..ed37ace3a 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -47,14 +47,16 @@ def file_dump_json(filename: Path, data, is_zip=False) -> None: :param data: JSON Data to save :return: """ - logger.info(f'dumping json to "{filename}"') if is_zip: if filename.suffix != '.gz': filename = filename.with_suffix('.gz') + logger.info(f'dumping json to "{filename}"') + with gzip.open(filename, 'w') as fp: rapidjson.dump(data, fp, default=str, number_mode=rapidjson.NM_NATIVE) else: + logger.info(f'dumping json to "{filename}"') with open(filename, 'w') as fp: rapidjson.dump(data, fp, default=str, number_mode=rapidjson.NM_NATIVE) From c6d6dbfdb1646279fb439197e40716780bd99867 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 10:37:31 +0100 Subject: [PATCH 1318/3421] Implement jsondatahandler file store --- freqtrade/data/datahandlers/jsondatahandler.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index 747d80c54..ec4e41ae8 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -29,7 +29,8 @@ class JsonDataHandler(IDataHandler): """ Store data """ - raise NotImplementedError() + filename = JsonDataHandler._pair_data_filename(self._datadir, self._pair, timeframe) + misc.file_dump_json(filename, data, is_zip=self._use_zip) def ohlcv_append(self, timeframe: str, data: DataFrame) -> None: """ From eff5cc0568b5a3464eb1326afccb3b0eac3a84fc Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 10:41:04 +0100 Subject: [PATCH 1319/3421] Add default to internals --- freqtrade/constants.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 2f60bef2d..9c7e3db63 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -210,6 +210,7 @@ CONF_SCHEMA = { 'forcebuy_enable': {'type': 'boolean'}, 'internals': { 'type': 'object', + 'default': {}, 'properties': { 'process_throttle_secs': {'type': 'integer'}, 'interval': {'type': 'integer'}, From e529a4c261e0762056bb2c685170a3a9e3f5b653 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 11:08:11 +0100 Subject: [PATCH 1320/3421] Fix typehint for get_datahandlerclass --- freqtrade/data/datahandlers/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/datahandlers/__init__.py b/freqtrade/data/datahandlers/__init__.py index b3aa2e3a4..b22b61417 100644 --- a/freqtrade/data/datahandlers/__init__.py +++ b/freqtrade/data/datahandlers/__init__.py @@ -1,7 +1,9 @@ +from typing import Type + from .idatahandler import IDataHandler -def get_datahandlerclass(datatype: str) -> IDataHandler: +def get_datahandlerclass(datatype: str) -> Type[IDataHandler]: """ Get datahandler class. Could be done using Resolvers, but since this may be called often and resolvers From 48728e2d666d3cddafc654b87a0b1e21cc1ea58c Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 11:08:49 +0100 Subject: [PATCH 1321/3421] Change DataProvider interface to accept pair per method --- .../data/datahandlers/jsondatahandler.py | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index ec4e41ae8..ca6f94c5e 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -6,6 +6,7 @@ from pandas import DataFrame from freqtrade import misc from freqtrade.configuration import TimeRange +from freqtrade.data.converter import parse_ticker_dataframe from .idatahandler import IDataHandler @@ -25,31 +26,40 @@ class JsonDataHandler(IDataHandler): # Check if regex found something and only return these results return [match[0].replace('_', '/') for match in _tmp if match] - def ohlcv_store(self, timeframe: str, data: DataFrame) -> None: + def ohlcv_store(self, pair: str, timeframe: str, data: DataFrame) -> None: """ Store data """ - filename = JsonDataHandler._pair_data_filename(self._datadir, self._pair, timeframe) + filename = JsonDataHandler._pair_data_filename(self._datadir, pair, timeframe) misc.file_dump_json(filename, data, is_zip=self._use_zip) - def ohlcv_append(self, timeframe: str, data: DataFrame) -> None: + def ohlcv_append(self, pair: str, timeframe: str, data: DataFrame) -> None: """ Append data to existing files """ raise NotImplementedError() - def ohlcv_load(self, timeframe: str, timerange: Optional[TimeRange] = None) -> DataFrame: + def _ohlcv_load(self, pair: str, timeframe: str, + timerange: Optional[TimeRange] = None, + fill_up_missing: bool = True, + drop_incomplete: bool = True, + ) -> DataFrame: """ - Load data for one pair + Load data for one pair from disk. + Implements the loading and conversation to a Pandas dataframe. :return: Dataframe """ - filename = JsonDataHandler._pair_data_filename(self._datadir, self._pair, timeframe) + filename = JsonDataHandler._pair_data_filename(self._datadir, pair, timeframe) pairdata = misc.file_load_json(filename) if not pairdata: - return [] + return DataFrame() if timerange: pairdata = IDataHandler.trim_tickerlist(pairdata, timerange) + return parse_ticker_dataframe(pairdata, timeframe, + pair=self._pair, + fill_missing=fill_up_missing, + drop_incomplete=drop_incomplete) return pairdata @classmethod @@ -62,26 +72,26 @@ class JsonDataHandler(IDataHandler): # Check if regex found something and only return these results to avoid exceptions. return [match[0].replace('_', '/') for match in _tmp if match] - def trades_store(self, data: List[Dict]): + def trades_store(self, pair: str, data: List[Dict]): """ Store data """ - filename = self._pair_trades_filename(self._datadir, self._pair) + filename = self._pair_trades_filename(self._datadir, pair) misc.file_dump_json(filename, data, is_zip=self._use_zip) - def trades_append(self, data: DataFrame): + def trades_append(self, pair: str, data: DataFrame): """ Append data to existing files """ raise NotImplementedError() - def trades_load(self, timerange: Optional[TimeRange] = None) -> List[Dict]: + def trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> List[Dict]: """ Load a pair from file, either .json.gz or .json # TODO: validate timerange ... :return: List of trades """ - filename = self._pair_trades_filename(self._datadir, self._pair) + filename = self._pair_trades_filename(self._datadir, pair) tradesdata = misc.file_load_json(filename) if not tradesdata: return [] From d923bab8288f65a4c97bf3340883f1cb11f60523 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 11:09:29 +0100 Subject: [PATCH 1322/3421] Remove abstract interface for now --- freqtrade/data/datahandlers/idatahandler.py | 106 +++++++++++--------- 1 file changed, 56 insertions(+), 50 deletions(-) diff --git a/freqtrade/data/datahandlers/idatahandler.py b/freqtrade/data/datahandlers/idatahandler.py index ffe50b14e..b82898353 100644 --- a/freqtrade/data/datahandlers/idatahandler.py +++ b/freqtrade/data/datahandlers/idatahandler.py @@ -3,71 +3,77 @@ Abstract datahandler interface. It's subclasses handle and storing data from disk. """ - +import logging from abc import ABC, abstractmethod, abstractclassmethod from pathlib import Path from typing import Dict, List, Optional - +from copy import deepcopy from pandas import DataFrame from freqtrade.configuration import TimeRange +from freqtrade.exchange import timeframe_to_seconds +from freqtrade.data.converter import parse_ticker_dataframe + +logger = logging.getLogger(__name__) class IDataHandler(ABC): - def __init__(self, datadir: Path, pair: str) -> None: + def __init__(self, datadir: Path) -> None: self._datadir = datadir - self._pair = pair - @abstractclassmethod - def ohlcv_get_pairs(cls, datadir: Path, timeframe: str) -> List[str]: + # TODO: create abstract interface + + def ohlcv_load(self, pair, timeframe: str, + timerange: Optional[TimeRange] = None, + fill_up_missing: bool = True, + drop_incomplete: bool = True, + startup_candles: int = 0, + ) -> DataFrame: """ - Returns a list of all pairs available in this datadir + Load cached ticker history for the given pair. + + :param pair: Pair to load data for + :param timeframe: Ticker timeframe (e.g. "5m") + :param timerange: Limit data to be loaded to this timerange + :param fill_up_missing: Fill missing values with "No action"-candles + :param drop_incomplete: Drop last candle assuming it may be incomplete. + :param startup_candles: Additional candles to load at the start of the period + :return: DataFrame with ohlcv data, or empty DataFrame + """ + # Fix startup period + timerange_startup = deepcopy(timerange) + if startup_candles > 0 and timerange_startup: + timerange_startup.subtract_start(timeframe_to_seconds(timeframe) * startup_candles) + + pairdf = self._ohlcv_load(pair, timeframe, + timerange=timerange_startup, + fill_missing=fill_up_missing, + drop_incomplete=drop_incomplete) + if pairdf.empty(): + logger.warning( + f'No history data for pair: "{pair}", timeframe: {timeframe}. ' + 'Use `freqtrade download-data` to download the data' + ) + return pairdf + else: + if timerange_startup: + self._validate_pairdata(pair, pairdf, timerange_startup) + return pairdf + + def _validate_pairdata(pair, pairdata: DataFrame, timerange: TimeRange): + """ + Validates pairdata for missing data at start end end and logs warnings. + :param pairdata: Dataframe to validate + :param timerange: Timerange specified for start and end dates """ - @abstractmethod - def ohlcv_store(self, timeframe: str, data: DataFrame): - """ - Store data - """ - - @abstractmethod - def ohlcv_append(self, timeframe: str, data: DataFrame): - """ - Append data to existing files - """ - - @abstractmethod - def ohlcv_load(self, timeframe: str, timerange: Optional[TimeRange] = None) -> DataFrame: - """ - Load data for one pair - :return: Dataframe - """ - - @abstractclassmethod - def trades_get_pairs(cls, datadir: Path) -> List[str]: - """ - Returns a list of all pairs available in this datadir - """ - - @abstractmethod - def trades_store(self, data: DataFrame): - """ - Store data - """ - - @abstractmethod - def trades_append(self, data: DataFrame): - """ - Append data to existing files - """ - - @abstractmethod - def trades_load(self, timerange: Optional[TimeRange] = None): - """ - Load data for one pair - :return: Dataframe - """ + if timerange.starttype == 'date' and pairdata[0][0] > timerange.startts * 1000: + logger.warning('Missing data at start for pair %s, data starts at %s', + pair, arrow.get(pairdata[0][0] // 1000).strftime('%Y-%m-%d %H:%M:%S')) + if timerange.stoptype == 'date' and pairdata[-1][0] < timerange.stopts * 1000: + logger.warning('Missing data at end for pair %s, data ends at %s', + pair, arrow.get(pairdata[-1][0] // 1000).strftime('%Y-%m-%d %H:%M:%S')) @staticmethod def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]: From 1b90ec58b9bf621b9a6b2941597d5d8efbb118ee Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 11:09:59 +0100 Subject: [PATCH 1323/3421] Use changed pair-handling for providers --- freqtrade/data/datahandlers/idatahandler.py | 15 ++++++++------- freqtrade/utils.py | 20 +++++++++----------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/freqtrade/data/datahandlers/idatahandler.py b/freqtrade/data/datahandlers/idatahandler.py index b82898353..a1413fe98 100644 --- a/freqtrade/data/datahandlers/idatahandler.py +++ b/freqtrade/data/datahandlers/idatahandler.py @@ -4,15 +4,16 @@ It's subclasses handle and storing data from disk. """ import logging -from abc import ABC, abstractmethod, abstractclassmethod +from abc import ABC, abstractclassmethod, abstractmethod +from copy import deepcopy from pathlib import Path from typing import Dict, List, Optional -from copy import deepcopy + +import arrow from pandas import DataFrame from freqtrade.configuration import TimeRange from freqtrade.exchange import timeframe_to_seconds -from freqtrade.data.converter import parse_ticker_dataframe logger = logging.getLogger(__name__) @@ -26,7 +27,7 @@ class IDataHandler(ABC): def ohlcv_load(self, pair, timeframe: str, timerange: Optional[TimeRange] = None, - fill_up_missing: bool = True, + fill_missing: bool = True, drop_incomplete: bool = True, startup_candles: int = 0, ) -> DataFrame: @@ -48,9 +49,9 @@ class IDataHandler(ABC): pairdf = self._ohlcv_load(pair, timeframe, timerange=timerange_startup, - fill_missing=fill_up_missing, + fill_missing=fill_missing, drop_incomplete=drop_incomplete) - if pairdf.empty(): + if pairdf.empty: logger.warning( f'No history data for pair: "{pair}", timeframe: {timeframe}. ' 'Use `freqtrade download-data` to download the data' @@ -61,7 +62,7 @@ class IDataHandler(ABC): self._validate_pairdata(pair, pairdf, timerange_startup) return pairdf - def _validate_pairdata(pair, pairdata: DataFrame, timerange: TimeRange): + def _validate_pairdata(self, pair, pairdata: DataFrame, timerange: TimeRange): """ Validates pairdata for missing data at start end end and logs warnings. :param pairdata: Dataframe to validate diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 72b2afc8e..25f10f71a 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -253,14 +253,12 @@ def convert_trades_format(config: Dict[str, Any], convert_from: str, convert_to: if 'pairs' not in config: config['pairs'] = SrcClass.trades_get_pairs(Path(config['datadir'])) logger.info(f"Converting trades for {config['pairs']}") - + src = SrcClass(Path(config['datadir'])) + trg = TrgClass(Path(config['datadir'])) for pair in config['pairs']: - print(pair) - src = SrcClass(Path(config['datadir']), pair) - trg = TrgClass(Path(config['datadir']), pair) - data = src.trades_load() + data = src.trades_load(pair=pair) logger.info(f"Converting {len(data)} trades for {pair}") - trg.trades_store(data) + trg.trades_store(pair, data) def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: str): @@ -281,14 +279,14 @@ def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: timeframe)) logger.info(f"Converting OHLCV for {config['pairs']}") - for timeframe in timeframes: + src = SrcClass(Path(config['datadir'])) + trg = TrgClass(Path(config['datadir'])) + for timeframe in timeframes: for pair in config['pairs']: - src = SrcClass(Path(config['datadir']), pair) - trg = TrgClass(Path(config['datadir']), pair) - data = src.ohlcv_load(timeframe=timeframe) + data = src.ohlcv_load(pair=pair, timeframe=timeframe) logger.info(f"Converting {len(data)} candles for {pair}") - trg.ohlcv_store(timeframe=timeframe, data=data) + trg.ohlcv_store(pair=pair, timeframe=timeframe, data=data) def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None: From d9e7d64f33149d26f8517ba594f044a9cc07ca5b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 13:24:09 +0100 Subject: [PATCH 1324/3421] Split parse_ticker_dataframe some logic to clean_ohlcv_dataframe. --- freqtrade/data/converter.py | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index e45dd451e..6b44a6b20 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -37,9 +37,29 @@ def parse_ticker_dataframe(ticker: list, timeframe: str, pair: str, *, # and fail with exception... frame = frame.astype(dtype={'open': 'float', 'high': 'float', 'low': 'float', 'close': 'float', 'volume': 'float'}) + return clean_ohlcv_dataframe(frame, timeframe, pair, + fill_missing=fill_missing, + drop_incomplete=drop_incomplete) + +def clean_ohlcv_dataframe(data: DataFrame, timeframe: str, pair: str, *, + fill_missing: bool = True, + drop_incomplete: bool = True) -> DataFrame: + """ + Clense a ohlcv dataframe by + * Grouping it by date (removes duplicate tics) + * dropping last candles if requested + * Filling up missing data (if requested) + :param data: DataFrame containing ohlcv data. + :param timeframe: timeframe (e.g. 5m). Used to fill up eventual missing data + :param pair: Pair this data is for (used to warn if fillup was necessary) + :param fill_missing: fill up missing candles with 0 candles + (see ohlcv_fill_up_missing_data for details) + :param drop_incomplete: Drop the last candle of the dataframe, assuming it's incomplete + :return: DataFrame + """ # group by index and aggregate results to eliminate duplicate ticks - frame = frame.groupby(by='date', as_index=False, sort=True).agg({ + data = data.groupby(by='date', as_index=False, sort=True).agg({ 'open': 'first', 'high': 'max', 'low': 'min', @@ -48,13 +68,13 @@ def parse_ticker_dataframe(ticker: list, timeframe: str, pair: str, *, }) # eliminate partial candle if drop_incomplete: - frame.drop(frame.tail(1).index, inplace=True) + data.drop(data.tail(1).index, inplace=True) logger.debug('Dropping last candle') if fill_missing: - return ohlcv_fill_up_missing_data(frame, timeframe, pair) + return ohlcv_fill_up_missing_data(data, timeframe, pair) else: - return frame + return data def ohlcv_fill_up_missing_data(dataframe: DataFrame, timeframe: str, pair: str) -> DataFrame: From 377d59abe70fb93b1d644a39412d859853b97cf0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 15:04:45 +0100 Subject: [PATCH 1325/3421] Be selective how to load ohclv data for conversation --- freqtrade/utils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 25f10f71a..877e4825c 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -284,7 +284,10 @@ def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: for timeframe in timeframes: for pair in config['pairs']: - data = src.ohlcv_load(pair=pair, timeframe=timeframe) + data = src.ohlcv_load(pair=pair, timeframe=timeframe, + fill_missing=False, + drop_incomplete=False, + startup_candles=0) logger.info(f"Converting {len(data)} candles for {pair}") trg.ohlcv_store(pair=pair, timeframe=timeframe, data=data) @@ -294,8 +297,6 @@ def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None: Convert data from one format to another """ config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - from pprint import pprint - pprint(config) if ohlcv: convert_ohlcv_format(config, convert_from=args['format_from'], convert_to=args['format_to']) From 866908d2ca3a2a5caa2792c23f720b4097acced8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 15:05:01 +0100 Subject: [PATCH 1326/3421] Load and save using pandas internal function --- .../data/datahandlers/jsondatahandler.py | 62 +++++++++++++------ 1 file changed, 42 insertions(+), 20 deletions(-) diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index ca6f94c5e..3e64885a7 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -2,11 +2,12 @@ import re from pathlib import Path from typing import Dict, List, Optional -from pandas import DataFrame +import numpy as np +from pandas import DataFrame, read_json, to_datetime from freqtrade import misc from freqtrade.configuration import TimeRange -from freqtrade.data.converter import parse_ticker_dataframe +from freqtrade.data.converter import clean_ohlcv_dataframe from .idatahandler import IDataHandler @@ -14,6 +15,7 @@ from .idatahandler import IDataHandler class JsonDataHandler(IDataHandler): _use_zip = False + _columns = ['date', 'open', 'high', 'low', 'close', 'volume'] @classmethod def ohlcv_get_pairs(cls, datadir: Path, timeframe: str) -> List[str]: @@ -28,20 +30,27 @@ class JsonDataHandler(IDataHandler): def ohlcv_store(self, pair: str, timeframe: str, data: DataFrame) -> None: """ - Store data + Store data in json format "values". + format looks as follows: + [[,,,,]] + :param pair: Pair - used to generate filename + :timeframe: Timeframe - used to generate filename + :data: Dataframe containing OHLCV data + :return: None """ - filename = JsonDataHandler._pair_data_filename(self._datadir, pair, timeframe) - misc.file_dump_json(filename, data, is_zip=self._use_zip) + filename = self._pair_data_filename(self._datadir, pair, timeframe) + _data = data.copy() + # Convert date to int + _data['date'] = _data['date'].astype(np.int64) // 1000 // 1000 - def ohlcv_append(self, pair: str, timeframe: str, data: DataFrame) -> None: - """ - Append data to existing files - """ - raise NotImplementedError() + # Reset index, select only appropriate columns and save as json + _data.reset_index(drop=True).loc[:, self._columns].to_json( + filename, orient="values", + compression='gzip' if self._use_zip else None) def _ohlcv_load(self, pair: str, timeframe: str, timerange: Optional[TimeRange] = None, - fill_up_missing: bool = True, + fill_missing: bool = True, drop_incomplete: bool = True, ) -> DataFrame: """ @@ -49,18 +58,31 @@ class JsonDataHandler(IDataHandler): Implements the loading and conversation to a Pandas dataframe. :return: Dataframe """ - filename = JsonDataHandler._pair_data_filename(self._datadir, pair, timeframe) - pairdata = misc.file_load_json(filename) - if not pairdata: - return DataFrame() + filename = self._pair_data_filename(self._datadir, pair, timeframe) + pairdata = read_json(filename, orient='values') + pairdata.columns = self._columns + pairdata['date'] = to_datetime(pairdata['date'], + unit='ms', + utc=True, + infer_datetime_format=True) if timerange: pairdata = IDataHandler.trim_tickerlist(pairdata, timerange) - return parse_ticker_dataframe(pairdata, timeframe, - pair=self._pair, - fill_missing=fill_up_missing, - drop_incomplete=drop_incomplete) - return pairdata + + return clean_ohlcv_dataframe(pairdata, timeframe, + pair=pair, + fill_missing=fill_missing, + drop_incomplete=drop_incomplete) + + def ohlcv_append(self, pair: str, timeframe: str, data: DataFrame) -> None: + """ + Append data to existing data structures + :param pair: Pair + :param timeframe: Timeframe this ohlcv data is for + :param data: Data to append. + + """ + raise NotImplementedError() @classmethod def trades_get_pairs(cls, datadir: Path) -> List[str]: From db520a09ee1f3ef44d29e98dad7225be17112ec5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 15:07:49 +0100 Subject: [PATCH 1327/3421] Trim dataframe, not tickerlist --- freqtrade/data/datahandlers/idatahandler.py | 29 +------------------ .../data/datahandlers/jsondatahandler.py | 13 +++++++-- freqtrade/utils.py | 1 + 3 files changed, 12 insertions(+), 31 deletions(-) diff --git a/freqtrade/data/datahandlers/idatahandler.py b/freqtrade/data/datahandlers/idatahandler.py index a1413fe98..b9d11f243 100644 --- a/freqtrade/data/datahandlers/idatahandler.py +++ b/freqtrade/data/datahandlers/idatahandler.py @@ -37,7 +37,7 @@ class IDataHandler(ABC): :param pair: Pair to load data for :param timeframe: Ticker timeframe (e.g. "5m") :param timerange: Limit data to be loaded to this timerange - :param fill_up_missing: Fill missing values with "No action"-candles + :param fill_missing: Fill missing values with "No action"-candles :param drop_incomplete: Drop last candle assuming it may be incomplete. :param startup_candles: Additional candles to load at the start of the period :return: DataFrame with ohlcv data, or empty DataFrame @@ -75,30 +75,3 @@ class IDataHandler(ABC): if timerange.stoptype == 'date' and pairdata[-1][0] < timerange.stopts * 1000: logger.warning('Missing data at end for pair %s, data ends at %s', pair, arrow.get(pairdata[-1][0] // 1000).strftime('%Y-%m-%d %H:%M:%S')) - - @staticmethod - def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]: - """ - TODO: investigate if this is needed ... we can probably cover this in a dataframe - Trim tickerlist based on given timerange - """ - if not tickerlist: - return tickerlist - - start_index = 0 - stop_index = len(tickerlist) - - if timerange.starttype == 'date': - while (start_index < len(tickerlist) and - tickerlist[start_index][0] < timerange.startts * 1000): - start_index += 1 - - if timerange.stoptype == 'date': - while (stop_index > 0 and - tickerlist[stop_index-1][0] > timerange.stopts * 1000): - stop_index -= 1 - - if start_index > stop_index: - raise ValueError(f'The timerange [{timerange.startts},{timerange.stopts}] is incorrect') - - return tickerlist[start_index:stop_index] diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index 3e64885a7..215aa003a 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -8,6 +8,7 @@ from pandas import DataFrame, read_json, to_datetime from freqtrade import misc from freqtrade.configuration import TimeRange from freqtrade.data.converter import clean_ohlcv_dataframe +from freqtrade.data.history import trim_dataframe from .idatahandler import IDataHandler @@ -54,9 +55,15 @@ class JsonDataHandler(IDataHandler): drop_incomplete: bool = True, ) -> DataFrame: """ - Load data for one pair from disk. + Internal method used to load data for one pair from disk. Implements the loading and conversation to a Pandas dataframe. - :return: Dataframe + :param pair: Pair to load data for + :param timeframe: Ticker timeframe (e.g. "5m") + :param timerange: Limit data to be loaded to this timerange + :param fill_missing: Fill missing values with "No action"-candles + :param drop_incomplete: Drop last candle assuming it may be incomplete. + :param startup_candles: Additional candles to load at the start of the period + :return: DataFrame with ohlcv data, or empty DataFrame """ filename = self._pair_data_filename(self._datadir, pair, timeframe) pairdata = read_json(filename, orient='values') @@ -67,7 +74,7 @@ class JsonDataHandler(IDataHandler): infer_datetime_format=True) if timerange: - pairdata = IDataHandler.trim_tickerlist(pairdata, timerange) + pairdata = trim_dataframe(pairdata, timerange) return clean_ohlcv_dataframe(pairdata, timeframe, pair=pair, diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 877e4825c..5f646cc7a 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -285,6 +285,7 @@ def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: for timeframe in timeframes: for pair in config['pairs']: data = src.ohlcv_load(pair=pair, timeframe=timeframe, + timerange=None, fill_missing=False, drop_incomplete=False, startup_candles=0) From 873f5dbe6bbe73e6c155dd451d6fa553894276fc Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 15:13:17 +0100 Subject: [PATCH 1328/3421] Revrite validate_pairdata to work with pandas --- freqtrade/data/datahandlers/idatahandler.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/freqtrade/data/datahandlers/idatahandler.py b/freqtrade/data/datahandlers/idatahandler.py index b9d11f243..9508e022e 100644 --- a/freqtrade/data/datahandlers/idatahandler.py +++ b/freqtrade/data/datahandlers/idatahandler.py @@ -8,8 +8,7 @@ from abc import ABC, abstractclassmethod, abstractmethod from copy import deepcopy from pathlib import Path from typing import Dict, List, Optional - -import arrow +from datetime import datetime, timezone from pandas import DataFrame from freqtrade.configuration import TimeRange @@ -70,8 +69,12 @@ class IDataHandler(ABC): """ if timerange.starttype == 'date' and pairdata[0][0] > timerange.startts * 1000: - logger.warning('Missing data at start for pair %s, data starts at %s', - pair, arrow.get(pairdata[0][0] // 1000).strftime('%Y-%m-%d %H:%M:%S')) + start = datetime.fromtimestamp(timerange.startts, tz=timezone.utc) + if pairdata.iloc[0]['date'] > start: + logger.warning(f"Missing data at start for pair {pair}, " + f"data starts at {pairdata.iloc[0]['date']}") if timerange.stoptype == 'date' and pairdata[-1][0] < timerange.stopts * 1000: - logger.warning('Missing data at end for pair %s, data ends at %s', - pair, arrow.get(pairdata[-1][0] // 1000).strftime('%Y-%m-%d %H:%M:%S')) + stop = datetime.fromtimestamp(timerange.stopts, tz=timezone.utc) + if pairdata.iloc[-1]['date'] < stop: + logger.warning(f"Missing data at end for pair {pair}," + f"data ends at {pairdata.iloc[-1]['date']}") From 53ee636fa02880d12ef3c32430e62d1af3f7a92f Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 15:24:53 +0100 Subject: [PATCH 1329/3421] Check if file exists before loading --- freqtrade/data/datahandlers/jsondatahandler.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index 215aa003a..2893393b1 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -66,6 +66,8 @@ class JsonDataHandler(IDataHandler): :return: DataFrame with ohlcv data, or empty DataFrame """ filename = self._pair_data_filename(self._datadir, pair, timeframe) + if not filename.is_file(): + return DataFrame(columns=self._columns) pairdata = read_json(filename, orient='values') pairdata.columns = self._columns pairdata['date'] = to_datetime(pairdata['date'], From 88fa7fc24cd0688b0d0d58d6fa572e2f0f45b869 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 15:35:59 +0100 Subject: [PATCH 1330/3421] Simplify validate dataframe method --- freqtrade/data/datahandlers/idatahandler.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/datahandlers/idatahandler.py b/freqtrade/data/datahandlers/idatahandler.py index 9508e022e..c28d03930 100644 --- a/freqtrade/data/datahandlers/idatahandler.py +++ b/freqtrade/data/datahandlers/idatahandler.py @@ -68,13 +68,13 @@ class IDataHandler(ABC): :param timerange: Timerange specified for start and end dates """ - if timerange.starttype == 'date' and pairdata[0][0] > timerange.startts * 1000: + if timerange.starttype == 'date': start = datetime.fromtimestamp(timerange.startts, tz=timezone.utc) if pairdata.iloc[0]['date'] > start: logger.warning(f"Missing data at start for pair {pair}, " - f"data starts at {pairdata.iloc[0]['date']}") - if timerange.stoptype == 'date' and pairdata[-1][0] < timerange.stopts * 1000: + f"data starts at {pairdata.iloc[0]['date']:%Y-%m-%d %H:%M:%S}") + if timerange.stoptype == 'date': stop = datetime.fromtimestamp(timerange.stopts, tz=timezone.utc) if pairdata.iloc[-1]['date'] < stop: - logger.warning(f"Missing data at end for pair {pair}," - f"data ends at {pairdata.iloc[-1]['date']}") + logger.warning(f"Missing data at end for pair {pair}, " + f"data ends at {pairdata.iloc[-1]['date']:%Y-%m-%d %H:%M:%S}") From 9d8ea2f13be579e44a03b93c35b307a09f7fc98e Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 15:40:42 +0100 Subject: [PATCH 1331/3421] Replace calls to load_tickerdata_file with DataHandler calls --- freqtrade/data/history.py | 37 +++++++++++++++---------------------- tests/data/test_history.py | 9 +++++---- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 4c5c0521f..f09fe3d6a 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -8,7 +8,6 @@ Includes: import logging import operator -from copy import deepcopy from datetime import datetime, timezone from pathlib import Path from typing import Any, Dict, List, Optional, Tuple @@ -18,8 +17,9 @@ from pandas import DataFrame from freqtrade import OperationalException, misc from freqtrade.configuration import TimeRange -from freqtrade.data.converter import parse_ticker_dataframe, trades_to_ohlcv -from freqtrade.exchange import Exchange, timeframe_to_minutes, timeframe_to_seconds +from freqtrade.data.converter import trades_to_ohlcv +from freqtrade.exchange import Exchange, timeframe_to_minutes +from .datahandlers import get_datahandlerclass logger = logging.getLogger(__name__) @@ -126,11 +126,12 @@ def _validate_pairdata(pair, pairdata, timerange: TimeRange): def load_pair_history(pair: str, timeframe: str, - datadir: Path, + datadir: Path, *, timerange: Optional[TimeRange] = None, fill_up_missing: bool = True, drop_incomplete: bool = True, startup_candles: int = 0, + data_format: str = 'json' ) -> DataFrame: """ Load cached ticker history for the given pair. @@ -142,26 +143,18 @@ def load_pair_history(pair: str, :param fill_up_missing: Fill missing values with "No action"-candles :param drop_incomplete: Drop last candle assuming it may be incomplete. :param startup_candles: Additional candles to load at the start of the period + :param data_format: Format of the data :return: DataFrame with ohlcv data, or empty DataFrame """ - timerange_startup = deepcopy(timerange) - if startup_candles > 0 and timerange_startup: - timerange_startup.subtract_start(timeframe_to_seconds(timeframe) * startup_candles) - - pairdata = load_tickerdata_file(datadir, pair, timeframe, timerange=timerange_startup) - - if pairdata: - if timerange_startup: - _validate_pairdata(pair, pairdata, timerange_startup) - return parse_ticker_dataframe(pairdata, timeframe, pair=pair, - fill_missing=fill_up_missing, - drop_incomplete=drop_incomplete) - else: - logger.warning( - f'No history data for pair: "{pair}", timeframe: {timeframe}. ' - 'Use `freqtrade download-data` to download the data' - ) - return DataFrame() + HandlerClass = get_datahandlerclass(data_format) + loader = HandlerClass(datadir) + return loader.ohlcv_load(pair=pair, + timeframe=timeframe, + timerange=timerange, + fill_missing=fill_up_missing, + drop_incomplete=drop_incomplete, + startup_candles=startup_candles, + ) def load_data(datadir: Path, diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 7b3143db9..f13e386f8 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -96,8 +96,9 @@ def test_load_data_1min_ticker(ticker_history, mocker, caplog, testdatadir) -> N def test_load_data_startup_candles(mocker, caplog, default_conf, testdatadir) -> None: - ltfmock = mocker.patch('freqtrade.data.history.load_tickerdata_file', - MagicMock(return_value=None)) + ltfmock = mocker.patch( + 'freqtrade.data.datahandlers.jsondatahandler.JsonDataHandler._ohlcv_load', + MagicMock(return_value=DataFrame())) timerange = TimeRange('date', None, 1510639620, 0) load_pair_history(pair='UNITTEST/BTC', timeframe='1m', datadir=testdatadir, timerange=timerange, @@ -361,8 +362,8 @@ def test_load_partial_missing(testdatadir, caplog) -> None: # timedifference in 5 minutes td = ((end - start).total_seconds() // 60 // 5) + 1 assert td != len(tickerdata['UNITTEST/BTC']) - # Shift endtime with +5 - as last candle is dropped (partial candle) - end_real = arrow.get(tickerdata['UNITTEST/BTC'].iloc[-1, 0]).shift(minutes=5) + # This validation happens now after parsing to pandas. + end_real = arrow.get(tickerdata['UNITTEST/BTC'].iloc[-1, 0]) assert log_has(f'Missing data at end for pair ' f'UNITTEST/BTC, data ends at {end_real.strftime("%Y-%m-%d %H:%M:%S")}', caplog) From 416517b0c901f3438dcdc1af54fe5b32a77e38ba Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 15:47:04 +0100 Subject: [PATCH 1332/3421] Move trim_dataframe from history to converter --- freqtrade/data/converter.py | 19 ++++++++ .../data/datahandlers/jsondatahandler.py | 3 +- freqtrade/data/history.py | 26 ---------- freqtrade/optimize/backtesting.py | 3 +- freqtrade/optimize/hyperopt.py | 3 +- freqtrade/plot/plotting.py | 3 +- tests/data/test_converter.py | 47 ++++++++++++++++++- tests/data/test_history.py | 46 +----------------- 8 files changed, 73 insertions(+), 77 deletions(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 6b44a6b20..52ce3c593 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -2,10 +2,12 @@ Functions to convert data from one format to another """ import logging +from datetime import datetime, timezone import pandas as pd from pandas import DataFrame, to_datetime +from freqtrade.configuration.timerange import TimeRange logger = logging.getLogger(__name__) @@ -112,6 +114,23 @@ def ohlcv_fill_up_missing_data(dataframe: DataFrame, timeframe: str, pair: str) return df +def trim_dataframe(df: DataFrame, timerange: TimeRange, df_date_col: str = 'date') -> DataFrame: + """ + Trim dataframe based on given timerange + :param df: Dataframe to trim + :param timerange: timerange (use start and end date if available) + :param: df_date_col: Column in the dataframe to use as Date column + :return: trimmed dataframe + """ + if timerange.starttype == 'date': + start = datetime.fromtimestamp(timerange.startts, tz=timezone.utc) + df = df.loc[df[df_date_col] >= start, :] + if timerange.stoptype == 'date': + stop = datetime.fromtimestamp(timerange.stopts, tz=timezone.utc) + df = df.loc[df[df_date_col] <= stop, :] + return df + + def order_book_to_dataframe(bids: list, asks: list) -> DataFrame: """ Gets order book list, returns dataframe with below format per suggested by creslin diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index 2893393b1..c799784d0 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -7,8 +7,7 @@ from pandas import DataFrame, read_json, to_datetime from freqtrade import misc from freqtrade.configuration import TimeRange -from freqtrade.data.converter import clean_ohlcv_dataframe -from freqtrade.data.history import trim_dataframe +from freqtrade.data.converter import clean_ohlcv_dataframe, trim_dataframe from .idatahandler import IDataHandler diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index f09fe3d6a..cc82217a0 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -50,23 +50,6 @@ def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]: return tickerlist[start_index:stop_index] -def trim_dataframe(df: DataFrame, timerange: TimeRange, df_date_col: str = 'date') -> DataFrame: - """ - Trim dataframe based on given timerange - :param df: Dataframe to trim - :param timerange: timerange (use start and end date if available) - :param: df_date_col: Column in the dataframe to use as Date column - :return: trimmed dataframe - """ - if timerange.starttype == 'date': - start = datetime.fromtimestamp(timerange.startts, tz=timezone.utc) - df = df.loc[df[df_date_col] >= start, :] - if timerange.stoptype == 'date': - stop = datetime.fromtimestamp(timerange.stopts, tz=timezone.utc) - df = df.loc[df[df_date_col] <= stop, :] - return df - - def load_tickerdata_file(datadir: Path, pair: str, timeframe: str, timerange: Optional[TimeRange] = None) -> List[Dict]: """ @@ -115,15 +98,6 @@ def store_trades_file(datadir: Path, pair: str, misc.file_dump_json(filename, data, is_zip=is_zip) -def _validate_pairdata(pair, pairdata, timerange: TimeRange): - if timerange.starttype == 'date' and pairdata[0][0] > timerange.startts * 1000: - logger.warning('Missing data at start for pair %s, data starts at %s', - pair, arrow.get(pairdata[0][0] // 1000).strftime('%Y-%m-%d %H:%M:%S')) - if timerange.stoptype == 'date' and pairdata[-1][0] < timerange.stopts * 1000: - logger.warning('Missing data at end for pair %s, data ends at %s', - pair, arrow.get(pairdata[-1][0] // 1000).strftime('%Y-%m-%d %H:%M:%S')) - - def load_pair_history(pair: str, timeframe: str, datadir: Path, *, diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index a8fe90a06..98ee71a60 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -16,6 +16,7 @@ from freqtrade import OperationalException from freqtrade.configuration import (TimeRange, remove_credentials, validate_config_consistency) from freqtrade.data import history +from freqtrade.data.converter import trim_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds from freqtrade.misc import file_dump_json @@ -482,7 +483,7 @@ class Backtesting: # Trim startup period from analyzed dataframe for pair, df in preprocessed.items(): - preprocessed[pair] = history.trim_dataframe(df, timerange) + preprocessed[pair] = trim_dataframe(df, timerange) min_date, max_date = history.get_timerange(preprocessed) logger.info( diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 48f883ac5..d29508b49 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -23,7 +23,8 @@ from joblib import (Parallel, cpu_count, delayed, dump, load, from pandas import DataFrame from freqtrade import OperationalException -from freqtrade.data.history import get_timerange, trim_dataframe +from freqtrade.data.history import get_timerange +from freqtrade.data.converter import trim_dataframe from freqtrade.misc import plural, round_dict from freqtrade.optimize.backtesting import Backtesting # Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index db4637ee5..0ef71ed82 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -5,6 +5,7 @@ from typing import Any, Dict, List import pandas as pd from freqtrade.configuration import TimeRange from freqtrade.data import history +from freqtrade.data.converter import trim_dataframe from freqtrade.data.btanalysis import (combine_tickers_with_mean, create_cum_profit, extract_trades_of_period, load_trades) @@ -47,7 +48,7 @@ def init_plotscript(config): db_url=config.get('db_url'), exportfilename=config.get('exportfilename'), ) - trades = history.trim_dataframe(trades, timerange, 'open_time') + trades = trim_dataframe(trades, timerange, 'open_time') return {"tickers": tickers, "trades": trades, "pairs": pairs, diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index 414551c95..eb8a8e513 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -1,8 +1,11 @@ # pragma pylint: disable=missing-docstring, C0103 import logging -from freqtrade.data.converter import parse_ticker_dataframe, ohlcv_fill_up_missing_data -from freqtrade.data.history import load_pair_history, validate_backtest_data, get_timerange +from freqtrade.configuration.timerange import TimeRange +from freqtrade.data.converter import (ohlcv_fill_up_missing_data, + parse_ticker_dataframe, trim_dataframe) +from freqtrade.data.history import (get_timerange, load_data, + load_pair_history, validate_backtest_data) from tests.conftest import log_has @@ -145,3 +148,43 @@ def test_ohlcv_drop_incomplete(caplog): assert len(data) == 3 assert log_has("Dropping last candle", caplog) + + +def test_trim_dataframe(testdatadir) -> None: + data = load_data( + datadir=testdatadir, + timeframe='1m', + pairs=['UNITTEST/BTC'] + )['UNITTEST/BTC'] + min_date = int(data.iloc[0]['date'].timestamp()) + max_date = int(data.iloc[-1]['date'].timestamp()) + data_modify = data.copy() + + # Remove first 30 minutes (1800 s) + tr = TimeRange('date', None, min_date + 1800, 0) + data_modify = trim_dataframe(data_modify, tr) + assert not data_modify.equals(data) + assert len(data_modify) < len(data) + assert len(data_modify) == len(data) - 30 + assert all(data_modify.iloc[-1] == data.iloc[-1]) + assert all(data_modify.iloc[0] == data.iloc[30]) + + data_modify = data.copy() + # Remove last 30 minutes (1800 s) + tr = TimeRange(None, 'date', 0, max_date - 1800) + data_modify = trim_dataframe(data_modify, tr) + assert not data_modify.equals(data) + assert len(data_modify) < len(data) + assert len(data_modify) == len(data) - 30 + assert all(data_modify.iloc[0] == data.iloc[0]) + assert all(data_modify.iloc[-1] == data.iloc[-31]) + + data_modify = data.copy() + # Remove first 25 and last 30 minutes (1800 s) + tr = TimeRange('date', 'date', min_date + 1500, max_date - 1800) + data_modify = trim_dataframe(data_modify, tr) + assert not data_modify.equals(data) + assert len(data_modify) < len(data) + assert len(data_modify) == len(data) - 55 + # first row matches 25th original row + assert all(data_modify.iloc[0] == data.iloc[25]) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index f13e386f8..5f7d0f5a2 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -18,10 +18,8 @@ from freqtrade.data.history import (_download_pair_history, load_tickerdata_file, pair_data_filename, pair_trades_filename, refresh_backtest_ohlcv_data, - refresh_backtest_trades_data, - refresh_data, - trim_dataframe, trim_tickerlist, - validate_backtest_data) + refresh_backtest_trades_data, refresh_data, + trim_tickerlist, validate_backtest_data) from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import file_dump_json from freqtrade.strategy.default_strategy import DefaultStrategy @@ -444,46 +442,6 @@ def test_trim_tickerlist(testdatadir) -> None: assert not ticker -def test_trim_dataframe(testdatadir) -> None: - data = load_data( - datadir=testdatadir, - timeframe='1m', - pairs=['UNITTEST/BTC'] - )['UNITTEST/BTC'] - min_date = int(data.iloc[0]['date'].timestamp()) - max_date = int(data.iloc[-1]['date'].timestamp()) - data_modify = data.copy() - - # Remove first 30 minutes (1800 s) - tr = TimeRange('date', None, min_date + 1800, 0) - data_modify = trim_dataframe(data_modify, tr) - assert not data_modify.equals(data) - assert len(data_modify) < len(data) - assert len(data_modify) == len(data) - 30 - assert all(data_modify.iloc[-1] == data.iloc[-1]) - assert all(data_modify.iloc[0] == data.iloc[30]) - - data_modify = data.copy() - # Remove last 30 minutes (1800 s) - tr = TimeRange(None, 'date', 0, max_date - 1800) - data_modify = trim_dataframe(data_modify, tr) - assert not data_modify.equals(data) - assert len(data_modify) < len(data) - assert len(data_modify) == len(data) - 30 - assert all(data_modify.iloc[0] == data.iloc[0]) - assert all(data_modify.iloc[-1] == data.iloc[-31]) - - data_modify = data.copy() - # Remove first 25 and last 30 minutes (1800 s) - tr = TimeRange('date', 'date', min_date + 1500, max_date - 1800) - data_modify = trim_dataframe(data_modify, tr) - assert not data_modify.equals(data) - assert len(data_modify) < len(data) - assert len(data_modify) == len(data) - 55 - # first row matches 25th original row - assert all(data_modify.iloc[0] == data.iloc[25]) - - def test_file_dump_json_tofile(testdatadir) -> None: file = testdatadir / 'test_{id}.json'.format(id=str(uuid.uuid4())) data = {'bar': 'foo'} From 5fca17d7e1fc89f30e90156d2fc88f954d9faf82 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 15:55:28 +0100 Subject: [PATCH 1333/3421] Allow initializing handler-class just once --- freqtrade/data/history.py | 40 +++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index cc82217a0..7c5cf482d 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -8,7 +8,7 @@ Includes: import logging import operator -from datetime import datetime, timezone +from datetime import datetime from pathlib import Path from typing import Any, Dict, List, Optional, Tuple @@ -18,6 +18,7 @@ from pandas import DataFrame from freqtrade import OperationalException, misc from freqtrade.configuration import TimeRange from freqtrade.data.converter import trades_to_ohlcv +from freqtrade.data.datahandlers.idatahandler import IDataHandler from freqtrade.exchange import Exchange, timeframe_to_minutes from .datahandlers import get_datahandlerclass @@ -105,7 +106,8 @@ def load_pair_history(pair: str, fill_up_missing: bool = True, drop_incomplete: bool = True, startup_candles: int = 0, - data_format: str = 'json' + data_format: str = 'json', + data_handler: IDataHandler, ) -> DataFrame: """ Load cached ticker history for the given pair. @@ -117,18 +119,21 @@ def load_pair_history(pair: str, :param fill_up_missing: Fill missing values with "No action"-candles :param drop_incomplete: Drop last candle assuming it may be incomplete. :param startup_candles: Additional candles to load at the start of the period - :param data_format: Format of the data + :param data_format: Format of the data. Ignored if data_handler is set. + :param data_handler: Initialized data-handler to use. + Will be initialized from data_format if not set :return: DataFrame with ohlcv data, or empty DataFrame """ - HandlerClass = get_datahandlerclass(data_format) - loader = HandlerClass(datadir) - return loader.ohlcv_load(pair=pair, - timeframe=timeframe, - timerange=timerange, - fill_missing=fill_up_missing, - drop_incomplete=drop_incomplete, - startup_candles=startup_candles, - ) + if not data_handler: + HandlerClass = get_datahandlerclass(data_format) + data_handler = HandlerClass(datadir) + return data_handler.ohlcv_load(pair=pair, + timeframe=timeframe, + timerange=timerange, + fill_missing=fill_up_missing, + drop_incomplete=drop_incomplete, + startup_candles=startup_candles, + ) def load_data(datadir: Path, @@ -137,7 +142,8 @@ def load_data(datadir: Path, timerange: Optional[TimeRange] = None, fill_up_missing: bool = True, startup_candles: int = 0, - fail_without_data: bool = False + fail_without_data: bool = False, + data_format: str = 'json', ) -> Dict[str, DataFrame]: """ Load ticker history data for a list of pairs. @@ -149,17 +155,23 @@ def load_data(datadir: Path, :param fill_up_missing: Fill missing values with "No action"-candles :param startup_candles: Additional candles to load at the start of the period :param fail_without_data: Raise OperationalException if no data is found. + :param data_handler: Initialized data-handler to use. :return: dict(:) """ result: Dict[str, DataFrame] = {} if startup_candles > 0 and timerange: logger.info(f'Using indicator startup period: {startup_candles} ...') + HandlerClass = get_datahandlerclass(data_format) + data_handler = HandlerClass(datadir) + for pair in pairs: hist = load_pair_history(pair=pair, timeframe=timeframe, datadir=datadir, timerange=timerange, fill_up_missing=fill_up_missing, - startup_candles=startup_candles) + startup_candles=startup_candles, + data_handler=data_handler + ) if not hist.empty: result[pair] = hist From 9547d47ae2f58bc416454bb0b5212c79da8845e5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 16:12:20 +0100 Subject: [PATCH 1334/3421] Initialize datahandlers --- freqtrade/data/datahandlers/__init__.py | 16 +++++++++++- freqtrade/data/history.py | 34 ++++++++++++++----------- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/freqtrade/data/datahandlers/__init__.py b/freqtrade/data/datahandlers/__init__.py index b22b61417..a21dd832d 100644 --- a/freqtrade/data/datahandlers/__init__.py +++ b/freqtrade/data/datahandlers/__init__.py @@ -1,5 +1,5 @@ from typing import Type - +from pathlib import Path from .idatahandler import IDataHandler @@ -20,3 +20,17 @@ def get_datahandlerclass(datatype: str) -> Type[IDataHandler]: return JsonGzDataHandler else: raise ValueError(f"No datahandler for datatype {datatype} available.") + + +def get_datahandler(datadir: Path, data_format: str = None, + data_handler: IDataHandler = None) -> IDataHandler: + """ + :param datadir: Folder to save data + :data_format: dataformat to use + :data_handler: returns this datahandler if it exists or initializes a new one + """ + + if not data_handler: + HandlerClass = get_datahandlerclass(data_format or 'json') + data_handler = HandlerClass(datadir) + return data_handler diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 7c5cf482d..4f31ebd60 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -18,9 +18,9 @@ from pandas import DataFrame from freqtrade import OperationalException, misc from freqtrade.configuration import TimeRange from freqtrade.data.converter import trades_to_ohlcv +from freqtrade.data.datahandlers import get_datahandler, get_datahandlerclass from freqtrade.data.datahandlers.idatahandler import IDataHandler from freqtrade.exchange import Exchange, timeframe_to_minutes -from .datahandlers import get_datahandlerclass logger = logging.getLogger(__name__) @@ -106,8 +106,8 @@ def load_pair_history(pair: str, fill_up_missing: bool = True, drop_incomplete: bool = True, startup_candles: int = 0, - data_format: str = 'json', - data_handler: IDataHandler, + data_format: str = None, + data_handler: IDataHandler = None, ) -> DataFrame: """ Load cached ticker history for the given pair. @@ -115,18 +115,17 @@ def load_pair_history(pair: str, :param pair: Pair to load data for :param timeframe: Ticker timeframe (e.g. "5m") :param datadir: Path to the data storage location. + :param data_format: Format of the data. Ignored if data_handler is set. :param timerange: Limit data to be loaded to this timerange :param fill_up_missing: Fill missing values with "No action"-candles :param drop_incomplete: Drop last candle assuming it may be incomplete. :param startup_candles: Additional candles to load at the start of the period - :param data_format: Format of the data. Ignored if data_handler is set. :param data_handler: Initialized data-handler to use. Will be initialized from data_format if not set :return: DataFrame with ohlcv data, or empty DataFrame """ - if not data_handler: - HandlerClass = get_datahandlerclass(data_format) - data_handler = HandlerClass(datadir) + data_handler = get_datahandler(datadir, data_format, data_handler) + return data_handler.ohlcv_load(pair=pair, timeframe=timeframe, timerange=timerange, @@ -138,7 +137,7 @@ def load_pair_history(pair: str, def load_data(datadir: Path, timeframe: str, - pairs: List[str], + pairs: List[str], *, timerange: Optional[TimeRange] = None, fill_up_missing: bool = True, startup_candles: int = 0, @@ -162,8 +161,7 @@ def load_data(datadir: Path, if startup_candles > 0 and timerange: logger.info(f'Using indicator startup period: {startup_candles} ...') - HandlerClass = get_datahandlerclass(data_format) - data_handler = HandlerClass(datadir) + data_handler = get_datahandler(datadir, data_format) for pair in pairs: hist = load_pair_history(pair=pair, timeframe=timeframe, @@ -184,6 +182,7 @@ def refresh_data(datadir: Path, timeframe: str, pairs: List[str], exchange: Exchange, + data_format: str = None, timerange: Optional[TimeRange] = None, ) -> None: """ @@ -195,10 +194,11 @@ def refresh_data(datadir: Path, :param exchange: Exchange object :param timerange: Limit data to be loaded to this timerange """ + data_handler = get_datahandler(datadir, data_format) for pair in pairs: _download_pair_history(pair=pair, timeframe=timeframe, datadir=datadir, timerange=timerange, - exchange=exchange) + exchange=exchange, data_handler=data_handler) def pair_data_filename(datadir: Path, pair: str, timeframe: str) -> Path: @@ -256,9 +256,10 @@ def _load_cached_data_for_updating(datadir: Path, pair: str, timeframe: str, def _download_pair_history(datadir: Path, exchange: Exchange, - pair: str, + pair: str, *, timeframe: str = '5m', - timerange: Optional[TimeRange] = None) -> bool: + timerange: Optional[TimeRange] = None, + data_handler: IDataHandler = None) -> bool: """ Download latest candles from the exchange for the pair and timeframe passed in parameters The data is downloaded starting from the last correct data that @@ -272,6 +273,8 @@ def _download_pair_history(datadir: Path, :param timerange: range of time to download :return: bool with success state """ + data_handler = get_datahandler(datadir) + try: logger.info( f'Download history data for pair: "{pair}", timeframe: {timeframe} ' @@ -308,13 +311,14 @@ def _download_pair_history(datadir: Path, def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes: List[str], datadir: Path, timerange: Optional[TimeRange] = None, - erase=False) -> List[str]: + erase=False, data_format: str = None) -> List[str]: """ Refresh stored ohlcv data for backtesting and hyperopt operations. Used by freqtrade download-data subcommand. :return: List of pairs that are not available. """ pairs_not_available = [] + data_handler = get_datahandler(datadir, data_format) for pair in pairs: if pair not in exchange.markets: pairs_not_available.append(pair) @@ -331,7 +335,7 @@ def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes logger.info(f'Downloading pair {pair}, interval {timeframe}.') _download_pair_history(datadir=datadir, exchange=exchange, pair=pair, timeframe=str(timeframe), - timerange=timerange) + timerange=timerange, data_handler=data_handler) return pairs_not_available From 9876d126ca0add61c853a99a0a8a531445046dae Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 16:34:27 +0100 Subject: [PATCH 1335/3421] Use handler for trades --- freqtrade/data/converter.py | 9 ++++----- freqtrade/data/history.py | 38 ++++++++++++++++++------------------- tests/data/test_history.py | 7 ++++--- 3 files changed, 26 insertions(+), 28 deletions(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 52ce3c593..09f7e3278 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -155,12 +155,12 @@ def order_book_to_dataframe(bids: list, asks: list) -> DataFrame: return frame -def trades_to_ohlcv(trades: list, timeframe: str) -> list: +def trades_to_ohlcv(trades: list, timeframe: str) -> DataFrame: """ Converts trades list to ohlcv list :param trades: List of trades, as returned by ccxt.fetch_trades. :param timeframe: Ticker timeframe to resample data to - :return: ohlcv timeframe as list (as returned by ccxt.fetch_ohlcv) + :return: ohlcv Dataframe. """ from freqtrade.exchange import timeframe_to_minutes ticker_minutes = timeframe_to_minutes(timeframe) @@ -170,8 +170,7 @@ def trades_to_ohlcv(trades: list, timeframe: str) -> list: df_new = df['price'].resample(f'{ticker_minutes}min').ohlc() df_new['volume'] = df['amount'].resample(f'{ticker_minutes}min').sum() - df_new['date'] = df_new.index.astype("int64") // 10 ** 6 + df_new['date'] = df_new.index # Drop 0 volume rows df_new = df_new.dropna() - columns = ["date", "open", "high", "low", "close", "volume"] - return list(zip(*[df_new[x].values.tolist() for x in columns])) + return df_new[['date', 'open', 'high', 'low', 'close', 'volume']] diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 4f31ebd60..1970f05d5 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -18,7 +18,7 @@ from pandas import DataFrame from freqtrade import OperationalException, misc from freqtrade.configuration import TimeRange from freqtrade.data.converter import trades_to_ohlcv -from freqtrade.data.datahandlers import get_datahandler, get_datahandlerclass +from freqtrade.data.datahandlers import get_datahandler from freqtrade.data.datahandlers.idatahandler import IDataHandler from freqtrade.exchange import Exchange, timeframe_to_minutes @@ -90,15 +90,6 @@ def load_trades_file(datadir: Path, pair: str, return tradesdata -def store_trades_file(datadir: Path, pair: str, - data: list, is_zip: bool = True): - """ - Stores tickerdata to file - """ - filename = pair_trades_filename(datadir, pair) - misc.file_dump_json(filename, data, is_zip=is_zip) - - def load_pair_history(pair: str, timeframe: str, datadir: Path, *, @@ -339,10 +330,11 @@ def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes return pairs_not_available -def _download_trades_history(datadir: Path, - exchange: Exchange, - pair: str, - timerange: Optional[TimeRange] = None) -> bool: +def _download_trades_history(exchange: Exchange, + pair: str, *, + timerange: Optional[TimeRange] = None, + data_handler: IDataHandler + ) -> bool: """ Download trade history from the exchange. Appends to previously downloaded trades data. @@ -351,7 +343,7 @@ def _download_trades_history(datadir: Path, since = timerange.startts * 1000 if timerange and timerange.starttype == 'date' else None - trades = load_trades_file(datadir, pair) + trades = data_handler.trades_load(pair) from_id = trades[-1]['id'] if trades else None @@ -366,7 +358,7 @@ def _download_trades_history(datadir: Path, from_id=from_id, ) trades.extend(new_trades[1]) - store_trades_file(datadir, pair, trades) + data_handler.trades_store(pair, data=trades) logger.debug("New Start: %s", trades[0]['datetime']) logger.debug("New End: %s", trades[-1]['datetime']) @@ -382,13 +374,15 @@ def _download_trades_history(datadir: Path, def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], datadir: Path, - timerange: TimeRange, erase=False) -> List[str]: + timerange: TimeRange, erase=False, + data_format: str = 'jsongz') -> List[str]: """ Refresh stored trades data for backtesting and hyperopt operations. Used by freqtrade download-data subcommand. :return: List of pairs that are not available. """ pairs_not_available = [] + data_handler = get_datahandler(datadir, data_format=data_format) for pair in pairs: if pair not in exchange.markets: pairs_not_available.append(pair) @@ -404,7 +398,8 @@ def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], datadir: logger.info(f'Downloading trades for pair {pair}.') _download_trades_history(datadir=datadir, exchange=exchange, pair=pair, - timerange=timerange) + timerange=timerange, + data_handler=data_handler) return pairs_not_available @@ -413,8 +408,11 @@ def convert_trades_to_ohlcv(pairs: List[str], timeframes: List[str], """ Convert stored trades data to ohlcv data """ + data_handler_trades = get_datahandler(datadir, data_format='jsongz') + data_handler_ohlcv = get_datahandler(datadir, data_format='json') + for pair in pairs: - trades = load_trades_file(datadir, pair) + trades = data_handler_trades.trades_load(pair) for timeframe in timeframes: ohlcv_file = pair_data_filename(datadir, pair, timeframe) if erase and ohlcv_file.exists(): @@ -422,7 +420,7 @@ def convert_trades_to_ohlcv(pairs: List[str], timeframes: List[str], ohlcv_file.unlink() ohlcv = trades_to_ohlcv(trades, timeframe) # Store ohlcv - store_tickerdata_file(datadir, pair, timeframe, data=ohlcv) + data_handler_ohlcv.ohlcv_store(pair, timeframe, data=ohlcv) def get_timerange(data: Dict[str, DataFrame]) -> Tuple[arrow.Arrow, arrow.Arrow]: diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 5f7d0f5a2..77cb6a565 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -10,6 +10,7 @@ import arrow from pandas import DataFrame from freqtrade.configuration import TimeRange +from freqtrade.data.datahandlers import get_datahandler from freqtrade.data.history import (_download_pair_history, _download_trades_history, _load_cached_data_for_updating, @@ -597,12 +598,12 @@ def test_download_trades_history(trades_history, mocker, default_conf, testdatad ght_mock) exchange = get_patched_exchange(mocker, default_conf) file1 = testdatadir / 'ETH_BTC-trades.json.gz' - + data_handler = get_datahandler(testdatadir, data_format='jsongz') _backup_file(file1) assert not file1.is_file() - assert _download_trades_history(datadir=testdatadir, exchange=exchange, + assert _download_trades_history(data_handler=data_handler, exchange=exchange, pair='ETH/BTC') assert log_has("New Amount of trades: 5", caplog) assert file1.is_file() @@ -613,7 +614,7 @@ def test_download_trades_history(trades_history, mocker, default_conf, testdatad mocker.patch('freqtrade.exchange.Exchange.get_historic_trades', MagicMock(side_effect=ValueError)) - assert not _download_trades_history(datadir=testdatadir, exchange=exchange, + assert not _download_trades_history(data_handler=data_handler, exchange=exchange, pair='ETH/BTC') assert log_has_re('Failed to download historic trades for pair: "ETH/BTC".*', caplog) From b7c1d5549179ecd39f4e2c5b269b90df1e6a1be9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 16:41:52 +0100 Subject: [PATCH 1336/3421] Modify tests to point to datahandlers --- freqtrade/data/history.py | 20 -------------------- tests/data/test_history.py | 20 ++++++++++++++------ 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 1970f05d5..c83e91bac 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -76,20 +76,6 @@ def store_tickerdata_file(datadir: Path, pair: str, misc.file_dump_json(filename, data, is_zip=is_zip) -def load_trades_file(datadir: Path, pair: str, - timerange: Optional[TimeRange] = None) -> List[Dict]: - """ - Load a pair from file, either .json.gz or .json - :return: tradelist or empty list if unsuccesful - """ - filename = pair_trades_filename(datadir, pair) - tradesdata = misc.file_load_json(filename) - if not tradesdata: - return [] - - return tradesdata - - def load_pair_history(pair: str, timeframe: str, datadir: Path, *, @@ -198,12 +184,6 @@ def pair_data_filename(datadir: Path, pair: str, timeframe: str) -> Path: return filename -def pair_trades_filename(datadir: Path, pair: str) -> Path: - pair_s = pair.replace("/", "_") - filename = datadir.joinpath(f'{pair_s}-trades.json.gz') - return filename - - def _load_cached_data_for_updating(datadir: Path, pair: str, timeframe: str, timerange: Optional[TimeRange]) -> Tuple[List[Any], Optional[int]]: diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 77cb6a565..fef7a3149 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -11,13 +11,14 @@ from pandas import DataFrame from freqtrade.configuration import TimeRange from freqtrade.data.datahandlers import get_datahandler +from freqtrade.data.datahandlers.jsondatahandler import (JsonDataHandler, + JsonGzDataHandler) from freqtrade.data.history import (_download_pair_history, _download_trades_history, _load_cached_data_for_updating, convert_trades_to_ohlcv, get_timerange, load_data, load_pair_history, - load_tickerdata_file, pair_data_filename, - pair_trades_filename, + load_tickerdata_file, refresh_backtest_ohlcv_data, refresh_backtest_trades_data, refresh_data, trim_tickerlist, validate_backtest_data) @@ -143,14 +144,21 @@ def test_testdata_path(testdatadir) -> None: assert str(Path('tests') / 'testdata') in str(testdatadir) -def test_pair_data_filename(): - fn = pair_data_filename(Path('freqtrade/hello/world'), 'ETH/BTC', '5m') +def test_json_pair_data_filename(): + fn = JsonDataHandler._pair_data_filename(Path('freqtrade/hello/world'), 'ETH/BTC', '5m') assert isinstance(fn, Path) assert fn == Path('freqtrade/hello/world/ETH_BTC-5m.json') + fn = JsonGzDataHandler._pair_data_filename(Path('freqtrade/hello/world'), 'ETH/BTC', '5m') + assert isinstance(fn, Path) + assert fn == Path('freqtrade/hello/world/ETH_BTC-5m.json.gz') -def test_pair_trades_filename(): - fn = pair_trades_filename(Path('freqtrade/hello/world'), 'ETH/BTC') +def test_json_pair_trades_filename(): + fn = JsonDataHandler._pair_trades_filename(Path('freqtrade/hello/world'), 'ETH/BTC') + assert isinstance(fn, Path) + assert fn == Path('freqtrade/hello/world/ETH_BTC-trades.json') + + fn = JsonGzDataHandler._pair_trades_filename(Path('freqtrade/hello/world'), 'ETH/BTC') assert isinstance(fn, Path) assert fn == Path('freqtrade/hello/world/ETH_BTC-trades.json.gz') From 552c93abf08239108b5b64baec0d37618152a3a1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Dec 2019 19:53:52 +0100 Subject: [PATCH 1337/3421] Improve some docstrings --- .../data/datahandlers/jsondatahandler.py | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index c799784d0..0b6327017 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -20,7 +20,11 @@ class JsonDataHandler(IDataHandler): @classmethod def ohlcv_get_pairs(cls, datadir: Path, timeframe: str) -> List[str]: """ - Returns a list of all pairs available in this datadir + Returns a list of all pairs with ohlcv data available in this datadir + for the specified timeframe + :param datadir: Directory to search for ohlcv files + :param timeframe: Timeframe to search pairs for + :return: List of Pairs """ _tmp = [re.search(r'^(\S+)(?=\-' + timeframe + '.json)', p.name) @@ -56,7 +60,7 @@ class JsonDataHandler(IDataHandler): """ Internal method used to load data for one pair from disk. Implements the loading and conversation to a Pandas dataframe. - :param pair: Pair to load data for + :param pair: Pair to load data :param timeframe: Ticker timeframe (e.g. "5m") :param timerange: Limit data to be loaded to this timerange :param fill_missing: Fill missing values with "No action"-candles @@ -95,16 +99,20 @@ class JsonDataHandler(IDataHandler): @classmethod def trades_get_pairs(cls, datadir: Path) -> List[str]: """ - Returns a list of all pairs available in this datadir + Returns a list of all pairs for which trade data is available in this + :param datadir: Directory to search for ohlcv files + :return: List of Pairs """ _tmp = [re.search(r'^(\S+)(?=\-trades.json)', p.name) for p in datadir.glob(f"*trades.{cls._get_file_extension()}")] # Check if regex found something and only return these results to avoid exceptions. return [match[0].replace('_', '/') for match in _tmp if match] - def trades_store(self, pair: str, data: List[Dict]): + def trades_store(self, pair: str, data: List[Dict]) -> None: """ - Store data + Store trades data (list of Dicts) to file + :param pair: Pair - used for filename + :param data: List of Dicts containing trade data """ filename = self._pair_trades_filename(self._datadir, pair) misc.file_dump_json(filename, data, is_zip=self._use_zip) @@ -112,13 +120,17 @@ class JsonDataHandler(IDataHandler): def trades_append(self, pair: str, data: DataFrame): """ Append data to existing files + :param pair: Pair - used for filename + :param data: List of Dicts containing trade data """ raise NotImplementedError() def trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> List[Dict]: """ Load a pair from file, either .json.gz or .json - # TODO: validate timerange ... + # TODO: respect timerange ... + :param pair: Load trades for this pair + :param timerange: Timerange to load trades for - currently not implemented :return: List of trades """ filename = self._pair_trades_filename(self._datadir, pair) From e861f05b75fd333d21ab63b57cbd189e405ff27f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 26 Dec 2019 09:51:03 +0100 Subject: [PATCH 1338/3421] Move dataframe trim to within jsondatahandler --- freqtrade/data/datahandlers/idatahandler.py | 6 +----- .../data/datahandlers/jsondatahandler.py | 19 ++++++++++++++++++- freqtrade/data/history.py | 8 +++----- tests/data/test_history.py | 5 +++-- 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/freqtrade/data/datahandlers/idatahandler.py b/freqtrade/data/datahandlers/idatahandler.py index c28d03930..8e61829b6 100644 --- a/freqtrade/data/datahandlers/idatahandler.py +++ b/freqtrade/data/datahandlers/idatahandler.py @@ -55,11 +55,7 @@ class IDataHandler(ABC): f'No history data for pair: "{pair}", timeframe: {timeframe}. ' 'Use `freqtrade download-data` to download the data' ) - return pairdf - else: - if timerange_startup: - self._validate_pairdata(pair, pairdf, timerange_startup) - return pairdf + return pairdf def _validate_pairdata(self, pair, pairdata: DataFrame, timerange: TimeRange): """ diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index 0b6327017..42fbaf51b 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -78,13 +78,18 @@ class JsonDataHandler(IDataHandler): utc=True, infer_datetime_format=True) + enddate = pairdata.iloc[-1]['date'] + if timerange: + self._validate_pairdata(pair, pairdata, timerange) pairdata = trim_dataframe(pairdata, timerange) + # incomplete candles should only be dropped if we didn't trim the end beforehand. return clean_ohlcv_dataframe(pairdata, timeframe, pair=pair, fill_missing=fill_missing, - drop_incomplete=drop_incomplete) + drop_incomplete=(drop_incomplete and + enddate == pairdata.iloc[-1]['date'])) def ohlcv_append(self, pair: str, timeframe: str, data: DataFrame) -> None: """ @@ -140,6 +145,18 @@ class JsonDataHandler(IDataHandler): return tradesdata + def trades_purge(self, pair: str) -> bool: + """ + Remove data for this pair + :param pair: Delete data for this pair. + :return: True when deleted, false if file did not exist. + """ + filename = self._pair_trades_filename(self._datadir, pair) + if filename.is_file(): + filename.unlink() + return True + return False + @classmethod def _pair_data_filename(cls, datadir: Path, pair: str, timeframe: str) -> Path: pair_s = pair.replace("/", "_") diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index c83e91bac..e71d9f36c 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -369,11 +369,9 @@ def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], datadir: logger.info(f"Skipping pair {pair}...") continue - dl_file = pair_trades_filename(datadir, pair) - if erase and dl_file.exists(): - logger.info( - f'Deleting existing data for pair {pair}.') - dl_file.unlink() + if erase: + if data_handler.trades_purge(pair): + logger.info(f'Deleting existing data for pair {pair}.') logger.info(f'Downloading trades for pair {pair}.') _download_trades_history(datadir=datadir, exchange=exchange, diff --git a/tests/data/test_history.py b/tests/data/test_history.py index fef7a3149..973c83a46 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -369,8 +369,9 @@ def test_load_partial_missing(testdatadir, caplog) -> None: # timedifference in 5 minutes td = ((end - start).total_seconds() // 60 // 5) + 1 assert td != len(tickerdata['UNITTEST/BTC']) - # This validation happens now after parsing to pandas. - end_real = arrow.get(tickerdata['UNITTEST/BTC'].iloc[-1, 0]) + + # Shift endtime with +5 - as last candle is dropped (partial candle) + end_real = arrow.get(tickerdata['UNITTEST/BTC'].iloc[-1, 0]).shift(minutes=5) assert log_has(f'Missing data at end for pair ' f'UNITTEST/BTC, data ends at {end_real.strftime("%Y-%m-%d %H:%M:%S")}', caplog) From 37c5b689877958fbf80478e792e50b77d0183148 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 26 Dec 2019 09:56:42 +0100 Subject: [PATCH 1339/3421] Move dataframe validation to abstract class --- freqtrade/data/datahandlers/idatahandler.py | 20 ++++++++++++---- .../data/datahandlers/jsondatahandler.py | 23 +++---------------- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/freqtrade/data/datahandlers/idatahandler.py b/freqtrade/data/datahandlers/idatahandler.py index 8e61829b6..ebf399358 100644 --- a/freqtrade/data/datahandlers/idatahandler.py +++ b/freqtrade/data/datahandlers/idatahandler.py @@ -10,6 +10,7 @@ from pathlib import Path from typing import Dict, List, Optional from datetime import datetime, timezone from pandas import DataFrame +from freqtrade.data.converter import clean_ohlcv_dataframe, trim_dataframe from freqtrade.configuration import TimeRange from freqtrade.exchange import timeframe_to_seconds @@ -47,15 +48,26 @@ class IDataHandler(ABC): timerange_startup.subtract_start(timeframe_to_seconds(timeframe) * startup_candles) pairdf = self._ohlcv_load(pair, timeframe, - timerange=timerange_startup, - fill_missing=fill_missing, - drop_incomplete=drop_incomplete) + timerange=timerange_startup) if pairdf.empty: logger.warning( f'No history data for pair: "{pair}", timeframe: {timeframe}. ' 'Use `freqtrade download-data` to download the data' ) - return pairdf + return pairdf + else: + enddate = pairdf.iloc[-1]['date'] + + if timerange_startup: + self._validate_pairdata(pair, pairdf, timerange_startup) + pairdf = trim_dataframe(pairdf, timerange_startup) + + # incomplete candles should only be dropped if we didn't trim the end beforehand. + return clean_ohlcv_dataframe(pairdf, timeframe, + pair=pair, + fill_missing=fill_missing, + drop_incomplete=(drop_incomplete and + enddate == pairdf.iloc[-1]['date'])) def _validate_pairdata(self, pair, pairdata: DataFrame, timerange: TimeRange): """ diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index 42fbaf51b..7d780a48d 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -7,7 +7,6 @@ from pandas import DataFrame, read_json, to_datetime from freqtrade import misc from freqtrade.configuration import TimeRange -from freqtrade.data.converter import clean_ohlcv_dataframe, trim_dataframe from .idatahandler import IDataHandler @@ -54,18 +53,14 @@ class JsonDataHandler(IDataHandler): def _ohlcv_load(self, pair: str, timeframe: str, timerange: Optional[TimeRange] = None, - fill_missing: bool = True, - drop_incomplete: bool = True, ) -> DataFrame: """ Internal method used to load data for one pair from disk. Implements the loading and conversation to a Pandas dataframe. + Timerange trimming and dataframe validation happens outside of this method. :param pair: Pair to load data :param timeframe: Ticker timeframe (e.g. "5m") - :param timerange: Limit data to be loaded to this timerange - :param fill_missing: Fill missing values with "No action"-candles - :param drop_incomplete: Drop last candle assuming it may be incomplete. - :param startup_candles: Additional candles to load at the start of the period + :param timerange: Limit data to be loaded to this timerange. :return: DataFrame with ohlcv data, or empty DataFrame """ filename = self._pair_data_filename(self._datadir, pair, timeframe) @@ -77,19 +72,7 @@ class JsonDataHandler(IDataHandler): unit='ms', utc=True, infer_datetime_format=True) - - enddate = pairdata.iloc[-1]['date'] - - if timerange: - self._validate_pairdata(pair, pairdata, timerange) - pairdata = trim_dataframe(pairdata, timerange) - - # incomplete candles should only be dropped if we didn't trim the end beforehand. - return clean_ohlcv_dataframe(pairdata, timeframe, - pair=pair, - fill_missing=fill_missing, - drop_incomplete=(drop_incomplete and - enddate == pairdata.iloc[-1]['date'])) + return pairdata def ohlcv_append(self, pair: str, timeframe: str, data: DataFrame) -> None: """ From 91c70a0e9c3d4299973fca60a3a922bf6f275307 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 26 Dec 2019 10:22:38 +0100 Subject: [PATCH 1340/3421] Change to use ohlcv_purge --- freqtrade/data/datahandlers/jsondatahandler.py | 13 +++++++++++++ freqtrade/data/history.py | 9 ++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index 7d780a48d..e76fee2b9 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -74,6 +74,19 @@ class JsonDataHandler(IDataHandler): infer_datetime_format=True) return pairdata + def ohlcv_purge(self, pair: str, timeframe: str) -> bool: + """ + Remove data for this pair + :param pair: Delete data for this pair. + :param timeframe: Ticker timeframe (e.g. "5m") + :return: True when deleted, false if file did not exist. + """ + filename = self._pair_data_filename(self._datadir, pair, timeframe) + if filename.is_file(): + filename.unlink() + return True + return False + def ohlcv_append(self, pair: str, timeframe: str, data: DataFrame) -> None: """ Append data to existing data structures diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index e71d9f36c..9347e7ee5 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -374,7 +374,7 @@ def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], datadir: logger.info(f'Deleting existing data for pair {pair}.') logger.info(f'Downloading trades for pair {pair}.') - _download_trades_history(datadir=datadir, exchange=exchange, + _download_trades_history(exchange=exchange, pair=pair, timerange=timerange, data_handler=data_handler) @@ -392,10 +392,9 @@ def convert_trades_to_ohlcv(pairs: List[str], timeframes: List[str], for pair in pairs: trades = data_handler_trades.trades_load(pair) for timeframe in timeframes: - ohlcv_file = pair_data_filename(datadir, pair, timeframe) - if erase and ohlcv_file.exists(): - logger.info(f'Deleting existing data for pair {pair}, interval {timeframe}.') - ohlcv_file.unlink() + if erase: + if data_handler_ohlcv.ohlcv_purge(pair, timeframe): + logger.info(f'Deleting existing data for pair {pair}, interval {timeframe}.') ohlcv = trades_to_ohlcv(trades, timeframe) # Store ohlcv data_handler_ohlcv.ohlcv_store(pair, timeframe, data=ohlcv) From dbe8f727cb1e58b3c5139e18e5df05cfe397d760 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 26 Dec 2019 10:26:19 +0100 Subject: [PATCH 1341/3421] Fix typehint --- freqtrade/strategy/interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 4f2e990d2..74097286a 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -434,7 +434,7 @@ class IStrategy(ABC): else: return current_profit > roi - def tickerdata_to_dataframe(self, tickerdata: Dict[str, List]) -> Dict[str, DataFrame]: + def tickerdata_to_dataframe(self, tickerdata: Dict[str, DataFrame]) -> Dict[str, DataFrame]: """ Creates a dataframe and populates indicators for given ticker data Used by optimize operations only, not during dry / live runs. From b83487a70d32d71b3fea8998f619bfd984383887 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 26 Dec 2019 19:52:08 +0100 Subject: [PATCH 1342/3421] Extract default dataframe columns to constant --- freqtrade/constants.py | 1 + freqtrade/data/converter.py | 5 +++-- freqtrade/data/datahandlers/jsondatahandler.py | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 9c7e3db63..8d9cde98b 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -21,6 +21,7 @@ AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'PrecisionFilter', 'P AVAILABLE_DATAHANDLERS = ['json', 'jsongz'] DRY_RUN_WALLET = 1000 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons +DEFAULT_DATAFRAME_COLUMNS = ['date', 'open', 'high', 'low', 'close', 'volume'] USERPATH_HYPEROPTS = 'hyperopts' USERPATH_STRATEGY = 'strategies' diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 09f7e3278..41a843e36 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -8,6 +8,7 @@ import pandas as pd from pandas import DataFrame, to_datetime from freqtrade.configuration.timerange import TimeRange +from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS logger = logging.getLogger(__name__) @@ -26,7 +27,7 @@ def parse_ticker_dataframe(ticker: list, timeframe: str, pair: str, *, :return: DataFrame """ logger.debug("Parsing tickerlist to dataframe") - cols = ['date', 'open', 'high', 'low', 'close', 'volume'] + cols = DEFAULT_DATAFRAME_COLUMNS frame = DataFrame(ticker, columns=cols) frame['date'] = to_datetime(frame['date'], @@ -173,4 +174,4 @@ def trades_to_ohlcv(trades: list, timeframe: str) -> DataFrame: df_new['date'] = df_new.index # Drop 0 volume rows df_new = df_new.dropna() - return df_new[['date', 'open', 'high', 'low', 'close', 'volume']] + return df_new[DEFAULT_DATAFRAME_COLUMNS] diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index e76fee2b9..1a26671b9 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -7,6 +7,7 @@ from pandas import DataFrame, read_json, to_datetime from freqtrade import misc from freqtrade.configuration import TimeRange +from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS from .idatahandler import IDataHandler @@ -14,7 +15,7 @@ from .idatahandler import IDataHandler class JsonDataHandler(IDataHandler): _use_zip = False - _columns = ['date', 'open', 'high', 'low', 'close', 'volume'] + _columns = DEFAULT_DATAFRAME_COLUMNS @classmethod def ohlcv_get_pairs(cls, datadir: Path, timeframe: str) -> List[str]: From ec8fb5f30894ef55fc388e7c6767e17d3c24d57b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 06:58:29 +0100 Subject: [PATCH 1343/3421] Make no-data warning optional --- freqtrade/data/datahandlers/idatahandler.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/freqtrade/data/datahandlers/idatahandler.py b/freqtrade/data/datahandlers/idatahandler.py index ebf399358..b80b8cfcc 100644 --- a/freqtrade/data/datahandlers/idatahandler.py +++ b/freqtrade/data/datahandlers/idatahandler.py @@ -30,6 +30,7 @@ class IDataHandler(ABC): fill_missing: bool = True, drop_incomplete: bool = True, startup_candles: int = 0, + warn_no_data: bool = True ) -> DataFrame: """ Load cached ticker history for the given pair. @@ -40,6 +41,7 @@ class IDataHandler(ABC): :param fill_missing: Fill missing values with "No action"-candles :param drop_incomplete: Drop last candle assuming it may be incomplete. :param startup_candles: Additional candles to load at the start of the period + :param warn_no_data: Log a warning message when no data is found :return: DataFrame with ohlcv data, or empty DataFrame """ # Fix startup period @@ -50,10 +52,11 @@ class IDataHandler(ABC): pairdf = self._ohlcv_load(pair, timeframe, timerange=timerange_startup) if pairdf.empty: - logger.warning( - f'No history data for pair: "{pair}", timeframe: {timeframe}. ' - 'Use `freqtrade download-data` to download the data' - ) + if warn_no_data: + logger.warning( + f'No history data for pair: "{pair}", timeframe: {timeframe}. ' + 'Use `freqtrade download-data` to download the data' + ) return pairdf else: enddate = pairdf.iloc[-1]['date'] From c648d973c18015270d9196c3d9abc73eed09b13b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 06:58:50 +0100 Subject: [PATCH 1344/3421] Implement new "load_data_for_updating" method based on dataframes --- freqtrade/data/history.py | 58 +++++++++++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 9347e7ee5..80a846e87 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -8,7 +8,7 @@ Includes: import logging import operator -from datetime import datetime +from datetime import datetime, timezone from pathlib import Path from typing import Any, Dict, List, Optional, Tuple @@ -17,7 +17,8 @@ from pandas import DataFrame from freqtrade import OperationalException, misc from freqtrade.configuration import TimeRange -from freqtrade.data.converter import trades_to_ohlcv +from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS +from freqtrade.data.converter import parse_ticker_dataframe, trades_to_ohlcv from freqtrade.data.datahandlers import get_datahandler from freqtrade.data.datahandlers.idatahandler import IDataHandler from freqtrade.exchange import Exchange, timeframe_to_minutes @@ -184,9 +185,9 @@ def pair_data_filename(datadir: Path, pair: str, timeframe: str) -> Path: return filename -def _load_cached_data_for_updating(datadir: Path, pair: str, timeframe: str, - timerange: Optional[TimeRange]) -> Tuple[List[Any], - Optional[int]]: +def _load_cached_data_for_updating_old(datadir: Path, pair: str, timeframe: str, + timerange: Optional[TimeRange]) -> Tuple[List[Any], + Optional[int]]: """ Load cached data to download more data. If timerange is passed in, checks whether data from an before the stored data will be @@ -225,6 +226,27 @@ def _load_cached_data_for_updating(datadir: Path, pair: str, timeframe: str, return (data, since_ms) +def _load_cached_data_for_updating(pair: str, timeframe: str, timerange: Optional[TimeRange], + data_handler: IDataHandler) -> Tuple[DataFrame, Optional[int]]: + start = None + if timerange: + if timerange.starttype == 'date': + # TODO: convert to date for conversation + start = datetime.fromtimestamp(timerange.startts, tz=timezone.utc) + + # Intentionally don't pass timerange in - since we need to load the full dataset. + data = data_handler.ohlcv_load(pair, timeframe=timeframe, + timerange=None, fill_missing=False, + drop_incomplete=True, warn_no_data=False) + if not data.empty: + if start < data.iloc[0]['date']: + # Earlier data than existing data requested, redownload all + return DataFrame(columns=DEFAULT_DATAFRAME_COLUMNS), None + start = data.iloc[-1]['date'] + start_ms = int(start.timestamp() * 1000) if start else None + return data, start_ms + + def _download_pair_history(datadir: Path, exchange: Exchange, pair: str, *, @@ -252,10 +274,14 @@ def _download_pair_history(datadir: Path, f'and store in {datadir}.' ) - data, since_ms = _load_cached_data_for_updating(datadir, pair, timeframe, timerange) + # data, since_ms = _load_cached_data_for_updating_old(datadir, pair, timeframe, timerange) + data, since_ms = _load_cached_data_for_updating(pair, timeframe, timerange, + data_handler=data_handler) - logger.debug("Current Start: %s", misc.format_ms_time(data[1][0]) if data else 'None') - logger.debug("Current End: %s", misc.format_ms_time(data[-1][0]) if data else 'None') + logger.debug("Current Start: %s", + f"{data.iloc[0]['date']:%Y-%m-%d %H:%M:%S}" if not data.empty else 'None') + logger.debug("Current End: %s", + f"{data.iloc[-1]['date']:%Y-%m-%d %H:%M:%S}" if not data.empty else 'None') # Default since_ms to 30 days if nothing is given new_data = exchange.get_historic_ohlcv(pair=pair, @@ -264,12 +290,20 @@ def _download_pair_history(datadir: Path, int(arrow.utcnow().shift( days=-30).float_timestamp) * 1000 ) - data.extend(new_data) + # TODO: Maybe move parsing to exchange class (?) + new_dataframe = parse_ticker_dataframe(new_data, timeframe, pair, + fill_missing=False, drop_incomplete=True) + if data.empty: + data = new_dataframe + else: + data = data.append(new_dataframe) - logger.debug("New Start: %s", misc.format_ms_time(data[0][0])) - logger.debug("New End: %s", misc.format_ms_time(data[-1][0])) + logger.debug("New Start: %s", + f"{data.iloc[0]['date']:%Y-%m-%d %H:%M:%S}" if not data.empty else 'None') + logger.debug("New End: %s", + f"{data.iloc[-1]['date']:%Y-%m-%d %H:%M:%S}" if not data.empty else 'None') - store_tickerdata_file(datadir, pair, timeframe, data=data) + data_handler.ohlcv_store(pair, timeframe, data=data) return True except Exception as e: From df085a6f1560d00f90dcbc69e16ff4ce9e021473 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 07:07:27 +0100 Subject: [PATCH 1345/3421] Fix small bug and test --- freqtrade/data/history.py | 4 +++- tests/data/test_history.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 80a846e87..189f51594 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -239,10 +239,12 @@ def _load_cached_data_for_updating(pair: str, timeframe: str, timerange: Optiona timerange=None, fill_missing=False, drop_incomplete=True, warn_no_data=False) if not data.empty: - if start < data.iloc[0]['date']: + if start and start < data.iloc[0]['date']: # Earlier data than existing data requested, redownload all return DataFrame(columns=DEFAULT_DATAFRAME_COLUMNS), None + start = data.iloc[-1]['date'] + start_ms = int(start.timestamp() * 1000) if start else None return data, start_ms diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 973c83a46..c626e27e8 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -301,7 +301,9 @@ def test_download_pair_history2(mocker, default_conf, testdatadir) -> None: [1509836520000, 0.00162008, 0.00162008, 0.00162008, 0.00162008, 108.14853839], [1509836580000, 0.00161, 0.00161, 0.00161, 0.00161, 82.390199] ] - json_dump_mock = mocker.patch('freqtrade.misc.file_dump_json', return_value=None) + json_dump_mock = mocker.patch( + 'freqtrade.data.datahandlers.jsondatahandler.JsonDataHandler.ohlcv_store', + return_value=None) mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=tick) exchange = get_patched_exchange(mocker, default_conf) _download_pair_history(testdatadir, exchange, pair="UNITTEST/BTC", timeframe='1m') From e4f185f3579fe60e497c3efc5a416f45c2ad0d67 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 07:08:50 +0100 Subject: [PATCH 1346/3421] Remove 'line' from load_cached_data tests Users are unable to use line anyway, it's only there for tests --- tests/data/test_history.py | 38 ------------------------------ tests/optimize/test_backtesting.py | 1 - 2 files changed, 39 deletions(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index c626e27e8..4281eee8c 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -171,7 +171,6 @@ def test_load_cached_data_for_updating(mocker) -> None: with open(test_filename, "rt") as file: test_data = json.load(file) - # change now time to test 'line' cases # now = last cached item + 1 hour now_ts = test_data[-1][0] / 1000 + 60 * 60 mocker.patch('arrow.utcnow', return_value=arrow.get(now_ts)) @@ -183,13 +182,6 @@ def test_load_cached_data_for_updating(mocker) -> None: assert data == [] assert start_ts == test_data[0][0] - 1000 - # same with 'line' timeframe - num_lines = (test_data[-1][0] - test_data[1][0]) / 1000 / 60 + 120 - data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', - TimeRange(None, 'line', 0, -num_lines)) - assert data == [] - assert start_ts < test_data[0][0] - 1 - # timeframe starts in the center of the cached data # should return the chached data w/o the last item timerange = TimeRange('date', None, test_data[0][0] / 1000 + 1, 0) @@ -197,13 +189,6 @@ def test_load_cached_data_for_updating(mocker) -> None: assert data == test_data[:-1] assert test_data[-2][0] < start_ts < test_data[-1][0] - # same with 'line' timeframe - num_lines = (test_data[-1][0] - test_data[1][0]) / 1000 / 60 + 30 - timerange = TimeRange(None, 'line', 0, -num_lines) - data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) - assert data == test_data[:-1] - assert test_data[-2][0] < start_ts < test_data[-1][0] - # timeframe starts after the chached data # should return the chached data w/o the last item timerange = TimeRange('date', None, test_data[-1][0] / 1000 + 1, 0) @@ -211,22 +196,6 @@ def test_load_cached_data_for_updating(mocker) -> None: assert data == test_data[:-1] assert test_data[-2][0] < start_ts < test_data[-1][0] - # Try loading last 30 lines. - # Not supported by _load_cached_data_for_updating, we always need to get the full data. - num_lines = 30 - timerange = TimeRange(None, 'line', 0, -num_lines) - data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) - assert data == test_data[:-1] - assert test_data[-2][0] < start_ts < test_data[-1][0] - - # no timeframe is set - # should return the chached data w/o the last item - num_lines = 30 - timerange = TimeRange(None, 'line', 0, -num_lines) - data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) - assert data == test_data[:-1] - assert test_data[-2][0] < start_ts < test_data[-1][0] - # no datafile exist # should return timestamp start time timerange = TimeRange('date', None, now_ts - 10000, 0) @@ -234,13 +203,6 @@ def test_load_cached_data_for_updating(mocker) -> None: assert data == [] assert start_ts == (now_ts - 10000) * 1000 - # same with 'line' timeframe - num_lines = 30 - timerange = TimeRange(None, 'line', 0, -num_lines) - data, start_ts = _load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', timerange) - assert data == [] - assert start_ts == (now_ts - num_lines * 60) * 1000 - # no datafile exist, no timeframe is set # should return an empty array and None data, start_ts = _load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', None) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 8a27c591f..c4670a331 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -342,7 +342,6 @@ def test_tickerdata_with_fee(default_conf, mocker, testdatadir) -> None: def test_tickerdata_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: patch_exchange(mocker) - # timerange = TimeRange(None, 'line', 0, -100) timerange = TimeRange.parse_timerange('1510694220-1510700340') tick = history.load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m', timerange=timerange) tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", From 7a6476c9ba979efb37d73ec2856e15e01b9e7535 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 10:11:49 +0100 Subject: [PATCH 1347/3421] Update tests --- freqtrade/data/history.py | 6 +++--- tests/data/test_history.py | 38 ++++++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 189f51594..99dde67c1 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -241,9 +241,9 @@ def _load_cached_data_for_updating(pair: str, timeframe: str, timerange: Optiona if not data.empty: if start and start < data.iloc[0]['date']: # Earlier data than existing data requested, redownload all - return DataFrame(columns=DEFAULT_DATAFRAME_COLUMNS), None - - start = data.iloc[-1]['date'] + data = DataFrame(columns=DEFAULT_DATAFRAME_COLUMNS) + else: + start = data.iloc[-1]['date'] start_ms = int(start.timestamp() * 1000) if start else None return data, start_ms diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 4281eee8c..12c6d3630 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -8,8 +8,10 @@ from unittest.mock import MagicMock, PropertyMock import arrow from pandas import DataFrame +from pandas.testing import assert_frame_equal from freqtrade.configuration import TimeRange +from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.datahandlers import get_datahandler from freqtrade.data.datahandlers.jsondatahandler import (JsonDataHandler, JsonGzDataHandler) @@ -163,14 +165,17 @@ def test_json_pair_trades_filename(): assert fn == Path('freqtrade/hello/world/ETH_BTC-trades.json.gz') -def test_load_cached_data_for_updating(mocker) -> None: - datadir = Path(__file__).parent.parent.joinpath('testdata') +def test_load_cached_data_for_updating(mocker, testdatadir) -> None: + + data_handler = get_datahandler(testdatadir, 'json') test_data = None - test_filename = datadir.joinpath('UNITTEST_BTC-1m.json') + test_filename = testdatadir.joinpath('UNITTEST_BTC-1m.json') with open(test_filename, "rt") as file: test_data = json.load(file) + test_data_df = parse_ticker_dataframe(test_data, '1m', 'UNITTEST/BTC', + fill_missing=False, drop_incomplete=False) # now = last cached item + 1 hour now_ts = test_data[-1][0] / 1000 + 60 * 60 mocker.patch('arrow.utcnow', return_value=arrow.get(now_ts)) @@ -178,35 +183,36 @@ def test_load_cached_data_for_updating(mocker) -> None: # timeframe starts earlier than the cached data # should fully update data timerange = TimeRange('date', None, test_data[0][0] / 1000 - 1, 0) - data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) - assert data == [] + data, start_ts = _load_cached_data_for_updating('UNITTEST/BTC', '1m', timerange, data_handler) + assert data.empty assert start_ts == test_data[0][0] - 1000 # timeframe starts in the center of the cached data # should return the chached data w/o the last item timerange = TimeRange('date', None, test_data[0][0] / 1000 + 1, 0) - data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) - assert data == test_data[:-1] - assert test_data[-2][0] < start_ts < test_data[-1][0] + data, start_ts = _load_cached_data_for_updating('UNITTEST/BTC', '1m', timerange, data_handler) + + assert_frame_equal(data, test_data_df.iloc[:-1]) + assert test_data[-2][0] <= start_ts < test_data[-1][0] # timeframe starts after the chached data # should return the chached data w/o the last item - timerange = TimeRange('date', None, test_data[-1][0] / 1000 + 1, 0) - data, start_ts = _load_cached_data_for_updating(datadir, 'UNITTEST/BTC', '1m', timerange) - assert data == test_data[:-1] - assert test_data[-2][0] < start_ts < test_data[-1][0] + timerange = TimeRange('date', None, test_data[-1][0] / 1000 + 100, 0) + data, start_ts = _load_cached_data_for_updating('UNITTEST/BTC', '1m', timerange, data_handler) + assert_frame_equal(data, test_data_df.iloc[:-1]) + assert test_data[-2][0] <= start_ts < test_data[-1][0] # no datafile exist # should return timestamp start time timerange = TimeRange('date', None, now_ts - 10000, 0) - data, start_ts = _load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', timerange) - assert data == [] + data, start_ts = _load_cached_data_for_updating('NONEXIST/BTC', '1m', timerange, data_handler) + assert data.empty assert start_ts == (now_ts - 10000) * 1000 # no datafile exist, no timeframe is set # should return an empty array and None - data, start_ts = _load_cached_data_for_updating(datadir, 'NONEXIST/BTC', '1m', None) - assert data == [] + data, start_ts = _load_cached_data_for_updating('NONEXIST/BTC', '1m', None, data_handler) + assert data.empty assert start_ts is None From d06777b8ce4021d0e378765f0bb484ecff567b87 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 10:12:56 +0100 Subject: [PATCH 1348/3421] Remove old "load_cached_data" method --- freqtrade/data/history.py | 41 ++++----------------------------------- 1 file changed, 4 insertions(+), 37 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 99dde67c1..93fe635a2 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -185,49 +185,16 @@ def pair_data_filename(datadir: Path, pair: str, timeframe: str) -> Path: return filename -def _load_cached_data_for_updating_old(datadir: Path, pair: str, timeframe: str, - timerange: Optional[TimeRange]) -> Tuple[List[Any], - Optional[int]]: +def _load_cached_data_for_updating(pair: str, timeframe: str, timerange: Optional[TimeRange], + data_handler: IDataHandler) -> Tuple[DataFrame, Optional[int]]: """ Load cached data to download more data. If timerange is passed in, checks whether data from an before the stored data will be downloaded. If that's the case then what's available should be completely overwritten. - Only used by download_pair_history(). + Otherwise downloads always start at the end of the available data to avoid data gaps. + Note: Only used by download_pair_history(). """ - - since_ms = None - - # user sets timerange, so find the start time - if timerange: - if timerange.starttype == 'date': - since_ms = timerange.startts * 1000 - elif timerange.stoptype == 'line': - num_minutes = timerange.stopts * timeframe_to_minutes(timeframe) - since_ms = arrow.utcnow().shift(minutes=num_minutes).timestamp * 1000 - - # read the cached file - # Intentionally don't pass timerange in - since we need to load the full dataset. - data = load_tickerdata_file(datadir, pair, timeframe) - # remove the last item, could be incomplete candle - if data: - data.pop() - else: - data = [] - - if data: - if since_ms and since_ms < data[0][0]: - # Earlier data than existing data requested, redownload all - data = [] - else: - # a part of the data was already downloaded, so download unexist data only - since_ms = data[-1][0] + 1 - - return (data, since_ms) - - -def _load_cached_data_for_updating(pair: str, timeframe: str, timerange: Optional[TimeRange], - data_handler: IDataHandler) -> Tuple[DataFrame, Optional[int]]: start = None if timerange: if timerange.starttype == 'date': From d1b52809ac79370023a47db66ee6474ee3b5ca9d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 10:25:17 +0100 Subject: [PATCH 1349/3421] Cleanup history --- freqtrade/data/history.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 93fe635a2..59695da2e 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -10,7 +10,7 @@ import logging import operator from datetime import datetime, timezone from pathlib import Path -from typing import Any, Dict, List, Optional, Tuple +from typing import Dict, List, Optional, Tuple import arrow from pandas import DataFrame @@ -21,7 +21,7 @@ from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS from freqtrade.data.converter import parse_ticker_dataframe, trades_to_ohlcv from freqtrade.data.datahandlers import get_datahandler from freqtrade.data.datahandlers.idatahandler import IDataHandler -from freqtrade.exchange import Exchange, timeframe_to_minutes +from freqtrade.exchange import Exchange logger = logging.getLogger(__name__) @@ -68,15 +68,6 @@ def load_tickerdata_file(datadir: Path, pair: str, timeframe: str, return pairdata -def store_tickerdata_file(datadir: Path, pair: str, - timeframe: str, data: list, is_zip: bool = False): - """ - Stores tickerdata to file - """ - filename = pair_data_filename(datadir, pair, timeframe) - misc.file_dump_json(filename, data, is_zip=is_zip) - - def load_pair_history(pair: str, timeframe: str, datadir: Path, *, From a2567bea645c2d124423c2a7d4ff71f6c21a4abf Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 10:25:27 +0100 Subject: [PATCH 1350/3421] Remove unnecessary mock --- tests/optimize/test_backtesting.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index c4670a331..3b7b18f52 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -116,14 +116,6 @@ def simple_backtest(config, contour, num_results, mocker, testdatadir) -> None: assert len(results) == num_results -def mocked_load_data(datadir, pairs=[], timeframe='0m', - timerange=None, *args, **kwargs): - tickerdata = history.load_tickerdata_file(datadir, 'UNITTEST/BTC', '1m', timerange=timerange) - pairdata = {'UNITTEST/BTC': parse_ticker_dataframe(tickerdata, '1m', pair="UNITTEST/BTC", - fill_missing=True)} - return pairdata - - # use for mock ccxt.fetch_ohlvc' def _load_pair_as_ticks(pair, tickfreq): ticks = history.load_tickerdata_file(None, timeframe=tickfreq, pair=pair) @@ -460,7 +452,6 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: def get_timerange(input1): return Arrow(2017, 11, 14, 21, 17), Arrow(2017, 11, 14, 22, 59) - mocker.patch('freqtrade.data.history.load_data', mocked_load_data) mocker.patch('freqtrade.data.history.get_timerange', get_timerange) mocker.patch('freqtrade.exchange.Exchange.refresh_latest_ohlcv', MagicMock()) patch_exchange(mocker) From aa39f2160bf095b1edecabc3243b72eed952cb69 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 10:25:38 +0100 Subject: [PATCH 1351/3421] Use load_data instead of a sequence of calls in tests which don't test this --- tests/optimize/test_hyperopt.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index fb492be35..ddafabe71 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -10,8 +10,7 @@ from arrow import Arrow from filelock import Timeout from freqtrade import OperationalException -from freqtrade.data.converter import parse_ticker_dataframe -from freqtrade.data.history import load_tickerdata_file +from freqtrade.data.history import load_data from freqtrade.optimize import setup_configuration, start_hyperopt from freqtrade.optimize.default_hyperopt import DefaultHyperOpt from freqtrade.optimize.default_hyperopt_loss import DefaultHyperOptLoss @@ -543,9 +542,7 @@ def test_has_space(hyperopt, spaces, expected_results): def test_populate_indicators(hyperopt, testdatadir) -> None: - tick = load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m') - tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", - fill_missing=True)} + tickerlist = load_data(testdatadir, '1m', ['UNITTEST/BTC'], fill_up_missing=True) dataframes = hyperopt.backtesting.strategy.tickerdata_to_dataframe(tickerlist) dataframe = hyperopt.custom_hyperopt.populate_indicators(dataframes['UNITTEST/BTC'], {'pair': 'UNITTEST/BTC'}) @@ -557,9 +554,7 @@ def test_populate_indicators(hyperopt, testdatadir) -> None: def test_buy_strategy_generator(hyperopt, testdatadir) -> None: - tick = load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m') - tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", - fill_missing=True)} + tickerlist = load_data(testdatadir, '1m', ['UNITTEST/BTC'], fill_up_missing=True) dataframes = hyperopt.backtesting.strategy.tickerdata_to_dataframe(tickerlist) dataframe = hyperopt.custom_hyperopt.populate_indicators(dataframes['UNITTEST/BTC'], {'pair': 'UNITTEST/BTC'}) From 80dbba12801fbf7f030600de18d88d30c70a3014 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 10:29:06 +0100 Subject: [PATCH 1352/3421] Remove unnecessary mocks --- tests/optimize/test_backtesting.py | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 3b7b18f52..a10ce5254 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -116,13 +116,6 @@ def simple_backtest(config, contour, num_results, mocker, testdatadir) -> None: assert len(results) == num_results -# use for mock ccxt.fetch_ohlvc' -def _load_pair_as_ticks(pair, tickfreq): - ticks = history.load_tickerdata_file(None, timeframe=tickfreq, pair=pair) - ticks = ticks[-201:] - return ticks - - # FIX: fixturize this? def _make_backtest_conf(mocker, datadir, conf=None, pair='UNITTEST/BTC', record=None): data = history.load_data(datadir=datadir, timeframe='1m', pairs=[pair]) @@ -795,13 +788,7 @@ def test_backtest_record(default_conf, fee, mocker): def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] - async def load_pairs(pair, timeframe, since): - return _load_pair_as_ticks(pair, timeframe) - - api_mock = MagicMock() - api_mock.fetch_ohlcv = load_pairs - - patch_exchange(mocker, api_mock) + patch_exchange(mocker) mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', MagicMock()) mocker.patch('freqtrade.optimize.backtesting.Backtesting._generate_text_table', MagicMock()) patched_configuration_load_config_file(mocker, default_conf) @@ -840,12 +827,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] - async def load_pairs(pair, timeframe, since): - return _load_pair_as_ticks(pair, timeframe) - api_mock = MagicMock() - api_mock.fetch_ohlcv = load_pairs - - patch_exchange(mocker, api_mock) + patch_exchange(mocker) backtestmock = MagicMock() mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', backtestmock) gen_table_mock = MagicMock() From 5479c6717833ffff66a165b835ff20863f44ad48 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 10:40:14 +0100 Subject: [PATCH 1353/3421] Clean up some codes which use list-based tests --- tests/optimize/test_backtesting.py | 65 +++++++++++------------------- 1 file changed, 24 insertions(+), 41 deletions(-) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index a10ce5254..447f0052b 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -1,6 +1,5 @@ # pragma pylint: disable=missing-docstring, W0212, line-too-long, C0103, unused-argument -import math import random from pathlib import Path from unittest.mock import MagicMock @@ -14,7 +13,7 @@ from freqtrade import DependencyException, OperationalException, constants from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import evaluate_result_multi -from freqtrade.data.converter import parse_ticker_dataframe +from freqtrade.data.converter import clean_ohlcv_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import get_timerange from freqtrade.optimize import setup_configuration, start_backtesting @@ -50,47 +49,33 @@ def trim_dictlist(dict_list, num): def load_data_test(what, testdatadir): timerange = TimeRange.parse_timerange('1510694220-1510700340') - pair = history.load_tickerdata_file(testdatadir, timeframe='1m', - pair='UNITTEST/BTC', timerange=timerange) - datalen = len(pair) + data = history.load_pair_history(pair='UNITTEST/BTC', datadir=testdatadir, + timeframe='1m', timerange=timerange, + drop_incomplete=False, + fill_up_missing=False) base = 0.001 if what == 'raise': - data = [ - [ - pair[x][0], # Keep old dates - x * base, # But replace O,H,L,C - x * base + 0.0001, - x * base - 0.0001, - x * base, - pair[x][5], # Keep old volume - ] for x in range(0, datalen) - ] + data.loc[:, 'open'] = data.index * base + data.loc[:, 'high'] = data.index * base + 0.0001 + data.loc[:, 'low'] = data.index * base - 0.0001 + data.loc[:, 'close'] = data.index * base + if what == 'lower': - data = [ - [ - pair[x][0], # Keep old dates - 1 - x * base, # But replace O,H,L,C - 1 - x * base + 0.0001, - 1 - x * base - 0.0001, - 1 - x * base, - pair[x][5] # Keep old volume - ] for x in range(0, datalen) - ] + data.loc[:, 'open'] = 1 - data.index * base + data.loc[:, 'high'] = 1 - data.index * base + 0.0001 + data.loc[:, 'low'] = 1 - data.index * base - 0.0001 + data.loc[:, 'close'] = 1 - data.index * base + if what == 'sine': hz = 0.1 # frequency - data = [ - [ - pair[x][0], # Keep old dates - math.sin(x * hz) / 1000 + base, # But replace O,H,L,C - math.sin(x * hz) / 1000 + base + 0.0001, - math.sin(x * hz) / 1000 + base - 0.0001, - math.sin(x * hz) / 1000 + base, - pair[x][5] # Keep old volume - ] for x in range(0, datalen) - ] - return {'UNITTEST/BTC': parse_ticker_dataframe(data, '1m', pair="UNITTEST/BTC", - fill_missing=True)} + data.loc[:, 'open'] = np.sin(data.index * hz) / 1000 + base + data.loc[:, 'high'] = np.sin(data.index * hz) / 1000 + base + 0.0001 + data.loc[:, 'low'] = np.sin(data.index * hz) / 1000 + base - 0.0001 + data.loc[:, 'close'] = np.sin(data.index * hz) / 1000 + base + + return {'UNITTEST/BTC': clean_ohlcv_dataframe(data, timeframe='1m', pair='UNITTEST/BTC', + fill_missing=True)} def simple_backtest(config, contour, num_results, mocker, testdatadir) -> None: @@ -328,10 +313,8 @@ def test_tickerdata_with_fee(default_conf, mocker, testdatadir) -> None: def test_tickerdata_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: patch_exchange(mocker) timerange = TimeRange.parse_timerange('1510694220-1510700340') - tick = history.load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m', timerange=timerange) - tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", - fill_missing=True)} - + tickerlist = history.load_data(testdatadir, '1m', ['UNITTEST/BTC'], timerange=timerange, + fill_up_missing=True) backtesting = Backtesting(default_conf) data = backtesting.strategy.tickerdata_to_dataframe(tickerlist) assert len(data['UNITTEST/BTC']) == 102 From 4b277afc52c3ffbcfd668deac649e39515f3b428 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 10:41:19 +0100 Subject: [PATCH 1354/3421] Remove test for load_tickerdata --- tests/data/test_history.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 12c6d3630..969e58223 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -20,7 +20,6 @@ from freqtrade.data.history import (_download_pair_history, _load_cached_data_for_updating, convert_trades_to_ohlcv, get_timerange, load_data, load_pair_history, - load_tickerdata_file, refresh_backtest_ohlcv_data, refresh_backtest_trades_data, refresh_data, trim_tickerlist, validate_backtest_data) @@ -303,17 +302,6 @@ def test_download_backtesting_data_exception(ticker_history, mocker, caplog, ) -def test_load_tickerdata_file(testdatadir) -> None: - # 7 does not exist in either format. - assert not load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '7m') - # 1 exists only as a .json - tickerdata = load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m') - assert _BTC_UNITTEST_LENGTH == len(tickerdata) - # 8 .json is empty and will fail if it's loaded. .json.gz is a copy of 1.json - tickerdata = load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '8m') - assert _BTC_UNITTEST_LENGTH == len(tickerdata) - - def test_load_partial_missing(testdatadir, caplog) -> None: # Make sure we start fresh - test missing data at start start = arrow.get('2018-01-01T00:00:00') From 32c2ce146ebcbea093e32f66de3bedfcd0b28f01 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 10:44:08 +0100 Subject: [PATCH 1355/3421] Remove last usage of load_tickerlist --- tests/strategy/test_interface.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 89c38bda1..647344653 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -7,8 +7,7 @@ import arrow from pandas import DataFrame from freqtrade.configuration import TimeRange -from freqtrade.data.converter import parse_ticker_dataframe -from freqtrade.data.history import load_tickerdata_file +from freqtrade.data.history import load_data from freqtrade.persistence import Trade from tests.conftest import get_patched_exchange, log_has from freqtrade.strategy.default_strategy import DefaultStrategy @@ -107,9 +106,8 @@ def test_tickerdata_to_dataframe(default_conf, testdatadir) -> None: strategy = DefaultStrategy(default_conf) timerange = TimeRange.parse_timerange('1510694220-1510700340') - tick = load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m', timerange=timerange) - tickerlist = {'UNITTEST/BTC': parse_ticker_dataframe(tick, '1m', pair="UNITTEST/BTC", - fill_missing=True)} + tickerlist = load_data(testdatadir, '1m', ['UNITTEST/BTC'], timerange=timerange, + fill_up_missing=True) data = strategy.tickerdata_to_dataframe(tickerlist) assert len(data['UNITTEST/BTC']) == 102 # partial candle was removed From baa942ff989adb86c35228454887cd624d38a6c1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 10:49:01 +0100 Subject: [PATCH 1356/3421] Don't use function to resolve pairname for test --- tests/test_misc.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/test_misc.py b/tests/test_misc.py index 23231e2f0..c5bf06311 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -5,7 +5,6 @@ from pathlib import Path from unittest.mock import MagicMock from freqtrade.data.converter import parse_ticker_dataframe -from freqtrade.data.history import pair_data_filename from freqtrade.misc import (datesarray_to_datetimearray, file_dump_json, file_load_json, format_ms_time, plural, shorten_date) @@ -48,13 +47,13 @@ def test_file_dump_json(mocker) -> None: def test_file_load_json(mocker, testdatadir) -> None: # 7m .json does not exist - ret = file_load_json(pair_data_filename(testdatadir, 'UNITTEST/BTC', '7m')) + ret = file_load_json(testdatadir / 'UNITTEST_BTC-7m.json') assert not ret # 1m json exists (but no .gz exists) - ret = file_load_json(pair_data_filename(testdatadir, 'UNITTEST/BTC', '1m')) + ret = file_load_json(testdatadir / 'UNITTEST_BTC-1m.json') assert ret # 8 .json is empty and will fail if it's loaded. .json.gz is a copy of 1.json - ret = file_load_json(pair_data_filename(testdatadir, 'UNITTEST/BTC', '8m')) + ret = file_load_json(testdatadir / 'UNITTEST_BTC-8m.json') assert ret From a3144cb2f0c07c777f566326f0df9246dfbc36d3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 10:49:30 +0100 Subject: [PATCH 1357/3421] remove trim_tickerlist --- freqtrade/data/history.py | 59 ++++---------------------------------- tests/data/test_history.py | 54 +--------------------------------- 2 files changed, 6 insertions(+), 107 deletions(-) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 59695da2e..9dad90864 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -15,7 +15,7 @@ from typing import Dict, List, Optional, Tuple import arrow from pandas import DataFrame -from freqtrade import OperationalException, misc +from freqtrade import OperationalException from freqtrade.configuration import TimeRange from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS from freqtrade.data.converter import parse_ticker_dataframe, trades_to_ohlcv @@ -26,48 +26,6 @@ from freqtrade.exchange import Exchange logger = logging.getLogger(__name__) -def trim_tickerlist(tickerlist: List[Dict], timerange: TimeRange) -> List[Dict]: - """ - Trim tickerlist based on given timerange - """ - if not tickerlist: - return tickerlist - - start_index = 0 - stop_index = len(tickerlist) - - if timerange.starttype == 'date': - while (start_index < len(tickerlist) and - tickerlist[start_index][0] < timerange.startts * 1000): - start_index += 1 - - if timerange.stoptype == 'date': - while (stop_index > 0 and - tickerlist[stop_index-1][0] > timerange.stopts * 1000): - stop_index -= 1 - - if start_index > stop_index: - raise ValueError(f'The timerange [{timerange.startts},{timerange.stopts}] is incorrect') - - return tickerlist[start_index:stop_index] - - -def load_tickerdata_file(datadir: Path, pair: str, timeframe: str, - timerange: Optional[TimeRange] = None) -> List[Dict]: - """ - Load a pair from file, either .json.gz or .json - :return: tickerlist or None if unsuccessful - """ - filename = pair_data_filename(datadir, pair, timeframe) - pairdata = misc.file_load_json(filename) - if not pairdata: - return [] - - if timerange: - pairdata = trim_tickerlist(pairdata, timerange) - return pairdata - - def load_pair_history(pair: str, timeframe: str, datadir: Path, *, @@ -170,12 +128,6 @@ def refresh_data(datadir: Path, exchange=exchange, data_handler=data_handler) -def pair_data_filename(datadir: Path, pair: str, timeframe: str) -> Path: - pair_s = pair.replace("/", "_") - filename = datadir.joinpath(f'{pair_s}-{timeframe}.json') - return filename - - def _load_cached_data_for_updating(pair: str, timeframe: str, timerange: Optional[TimeRange], data_handler: IDataHandler) -> Tuple[DataFrame, Optional[int]]: """ @@ -291,11 +243,10 @@ def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes continue for timeframe in timeframes: - dl_file = pair_data_filename(datadir, pair, timeframe) - if erase and dl_file.exists(): - logger.info( - f'Deleting existing data for pair {pair}, interval {timeframe}.') - dl_file.unlink() + if erase: + if data_handler.ohlcv_purge(pair, timeframe): + logger.info( + f'Deleting existing data for pair {pair}, interval {timeframe}.') logger.info(f'Downloading pair {pair}, interval {timeframe}.') _download_pair_history(datadir=datadir, exchange=exchange, diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 969e58223..7e030b523 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -22,7 +22,7 @@ from freqtrade.data.history import (_download_pair_history, load_data, load_pair_history, refresh_backtest_ohlcv_data, refresh_backtest_trades_data, refresh_data, - trim_tickerlist, validate_backtest_data) + validate_backtest_data) from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import file_dump_json from freqtrade.strategy.default_strategy import DefaultStrategy @@ -358,58 +358,6 @@ def test_init_with_refresh(default_conf, mocker) -> None: ) -def test_trim_tickerlist(testdatadir) -> None: - file = testdatadir / 'UNITTEST_BTC-1m.json' - with open(file) as data_file: - ticker_list = json.load(data_file) - ticker_list_len = len(ticker_list) - - # Test the pattern ^(\d{8})-(\d{8})$ - # This pattern extract a window between the dates - timerange = TimeRange('date', 'date', ticker_list[5][0] / 1000, ticker_list[10][0] / 1000 - 1) - ticker = trim_tickerlist(ticker_list, timerange) - ticker_len = len(ticker) - - assert ticker_len == 5 - assert ticker_list[0] is not ticker[0] # The first element should be different - assert ticker_list[5] is ticker[0] # The list starts at the index 5 - assert ticker_list[9] is ticker[-1] # The list ends at the index 9 (5 elements) - - # Test the pattern ^-(\d{8})$ - # This pattern extracts elements from the start to the date - timerange = TimeRange(None, 'date', 0, ticker_list[10][0] / 1000 - 1) - ticker = trim_tickerlist(ticker_list, timerange) - ticker_len = len(ticker) - - assert ticker_len == 10 - assert ticker_list[0] is ticker[0] # The start of the list is included - assert ticker_list[9] is ticker[-1] # The element 10 is not included - - # Test the pattern ^(\d{8})-$ - # This pattern extracts elements from the date to now - timerange = TimeRange('date', None, ticker_list[10][0] / 1000 - 1, None) - ticker = trim_tickerlist(ticker_list, timerange) - ticker_len = len(ticker) - - assert ticker_len == ticker_list_len - 10 - assert ticker_list[10] is ticker[0] # The first element is element #10 - assert ticker_list[-1] is ticker[-1] # The last element is the same - - # Test a wrong pattern - # This pattern must return the list unchanged - timerange = TimeRange(None, None, None, 5) - ticker = trim_tickerlist(ticker_list, timerange) - ticker_len = len(ticker) - - assert ticker_list_len == ticker_len - - # passing empty list - timerange = TimeRange(None, None, None, 5) - ticker = trim_tickerlist([], timerange) - assert 0 == len(ticker) - assert not ticker - - def test_file_dump_json_tofile(testdatadir) -> None: file = testdatadir / 'test_{id}.json'.format(id=str(uuid.uuid4())) data = {'bar': 'foo'} From 8a030e7fc01566191ce747767efb2a6a1b83974f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 11:08:47 +0100 Subject: [PATCH 1358/3421] Use exists instead of is_file --- freqtrade/data/datahandlers/jsondatahandler.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index 1a26671b9..9f3468d30 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -65,7 +65,7 @@ class JsonDataHandler(IDataHandler): :return: DataFrame with ohlcv data, or empty DataFrame """ filename = self._pair_data_filename(self._datadir, pair, timeframe) - if not filename.is_file(): + if not filename.exists(): return DataFrame(columns=self._columns) pairdata = read_json(filename, orient='values') pairdata.columns = self._columns @@ -149,7 +149,7 @@ class JsonDataHandler(IDataHandler): :return: True when deleted, false if file did not exist. """ filename = self._pair_trades_filename(self._datadir, pair) - if filename.is_file(): + if filename.exists(): filename.unlink() return True return False From d65c1eea7aff4b730771a8d1a7d8d98755e9ba86 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 13:16:53 +0100 Subject: [PATCH 1359/3421] Add some tests for datahandler --- .../data/datahandlers/jsondatahandler.py | 4 +- tests/data/test_history.py | 50 +++++++++++++++++++ 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/datahandlers/jsondatahandler.py index 9f3468d30..f40cf969f 100644 --- a/freqtrade/data/datahandlers/jsondatahandler.py +++ b/freqtrade/data/datahandlers/jsondatahandler.py @@ -83,7 +83,7 @@ class JsonDataHandler(IDataHandler): :return: True when deleted, false if file did not exist. """ filename = self._pair_data_filename(self._datadir, pair, timeframe) - if filename.is_file(): + if filename.exists(): filename.unlink() return True return False @@ -119,7 +119,7 @@ class JsonDataHandler(IDataHandler): filename = self._pair_trades_filename(self._datadir, pair) misc.file_dump_json(filename, data, is_zip=self._use_zip) - def trades_append(self, pair: str, data: DataFrame): + def trades_append(self, pair: str, data: List[Dict]): """ Append data to existing files :param pair: Pair - used for filename diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 7e030b523..8787a35b2 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -7,6 +7,7 @@ from shutil import copyfile from unittest.mock import MagicMock, PropertyMock import arrow +import pytest from pandas import DataFrame from pandas.testing import assert_frame_equal @@ -561,3 +562,52 @@ def test_convert_trades_to_ohlcv(mocker, default_conf, testdatadir, caplog): _clean_test_file(file1) _clean_test_file(file5) + + +def test_jsondatahandler_ohlcv_get_pairs(testdatadir): + pairs = JsonDataHandler.ohlcv_get_pairs(testdatadir, '5m') + # Convert to set to avoid failures due to sorting + assert set(pairs) == {'UNITTEST/BTC', 'XLM/BTC', 'ETH/BTC', 'TRX/BTC', 'LTC/BTC', + 'XMR/BTC', 'ZEC/BTC', 'ADA/BTC', 'ETC/BTC', 'NXT/BTC', + 'DASH/BTC', 'XRP/ETH'} + + pairs = JsonGzDataHandler.ohlcv_get_pairs(testdatadir, '8m') + assert set(pairs) == {'UNITTEST/BTC'} + + +def test_jsondatahandler_trades_get_pairs(testdatadir): + pairs = JsonGzDataHandler.trades_get_pairs(testdatadir) + # Convert to set to avoid failures due to sorting + assert set(pairs) == {'XRP/ETH'} + + +def test_jsondatahandler_ohlcv_purge(mocker, testdatadir): + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + mocker.patch.object(Path, "unlink", MagicMock()) + dh = JsonGzDataHandler(testdatadir) + assert not dh.ohlcv_purge('UNITTEST/NONEXIST', '5m') + + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + assert dh.ohlcv_purge('UNITTEST/NONEXIST', '5m') + + +def test_jsondatahandler_trades_purge(mocker, testdatadir): + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + mocker.patch.object(Path, "unlink", MagicMock()) + dh = JsonGzDataHandler(testdatadir) + assert not dh.trades_purge('UNITTEST/NONEXIST') + + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + assert dh.trades_purge('UNITTEST/NONEXIST') + + +def test_jsondatahandler_ohlcv_append(testdatadir): + dh = JsonGzDataHandler(testdatadir) + with pytest.raises(NotImplementedError): + dh.ohlcv_append('UNITTEST/ETH', '5m', DataFrame()) + + +def test_jsondatahandler_trades_append(testdatadir): + dh = JsonGzDataHandler(testdatadir) + with pytest.raises(NotImplementedError): + dh.trades_append('UNITTEST/ETH', []) From 65f539e9d8bb0631237c6dc3c44cf42eb8d94e87 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 13:25:34 +0100 Subject: [PATCH 1360/3421] More tests for datahandler --- tests/data/test_history.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 8787a35b2..726b6d3a7 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -13,7 +13,8 @@ from pandas.testing import assert_frame_equal from freqtrade.configuration import TimeRange from freqtrade.data.converter import parse_ticker_dataframe -from freqtrade.data.datahandlers import get_datahandler +from freqtrade.data.datahandlers import get_datahandler, get_datahandlerclass +from freqtrade.data.datahandlers.idatahandler import IDataHandler from freqtrade.data.datahandlers.jsondatahandler import (JsonDataHandler, JsonGzDataHandler) from freqtrade.data.history import (_download_pair_history, @@ -611,3 +612,24 @@ def test_jsondatahandler_trades_append(testdatadir): dh = JsonGzDataHandler(testdatadir) with pytest.raises(NotImplementedError): dh.trades_append('UNITTEST/ETH', []) + + +def test_gethandlerclass(): + cl = get_datahandlerclass('json') + assert cl == JsonDataHandler + assert issubclass(cl, IDataHandler) + cl = get_datahandlerclass('jsongz') + assert cl == JsonGzDataHandler + assert issubclass(cl, IDataHandler) + assert issubclass(cl, JsonDataHandler) + with pytest.raises(ValueError, match=r"No datahandler for .*"): + get_datahandlerclass('DeadBeef') + + +def test_get_datahandler(testdatadir): + dh = get_datahandler(testdatadir, 'json') + assert type(dh) == JsonDataHandler + dh = get_datahandler(testdatadir, 'jsongz') + assert type(dh) == JsonGzDataHandler + dh1 = get_datahandler(testdatadir, 'jsongz', dh) + assert id(dh1) == id(dh) From 9c5b94adf506f2e726b2e497655a424c2cc6f4f5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 13:46:25 +0100 Subject: [PATCH 1361/3421] Pass data_format to methods --- docs/configuration.md | 2 ++ freqtrade/configuration/arguments.py | 2 +- freqtrade/configuration/cli_options.py | 12 ++++++++++++ freqtrade/configuration/configuration.py | 7 +++++++ freqtrade/constants.py | 14 +++++++------- freqtrade/data/history.py | 10 ++++++---- freqtrade/utils.py | 12 +++++++++--- 7 files changed, 44 insertions(+), 15 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 90f0aa791..002e3ab5d 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -106,6 +106,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `internals.sd_notify` | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details.
      ***Datatype:*** *Boolean* | `logfile` | Specifies logfile name. Uses a rolling strategy for log file rotation for 10 files with the 1MB limit per file.
      ***Datatype:*** *String* | `user_data_dir` | Directory containing user data.
      *Defaults to `./user_data/`*.
      ***Datatype:*** *String* +| `dataformat_ohlcv` | Data format to use to store OHLCV historic data.
      *Defaults to `json`*.
      ***Datatype:*** *String* +| `dataformat_trades` | Data format to use to store trades historic data.
      *Defaults to `jsongz`*.
      ***Datatype:*** *String* ### Parameters in the strategy diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index cefa86927..121bd23b4 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -51,7 +51,7 @@ ARGS_CONVERT_DATA = ["pairs", "format_from", "format_to"] ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", - "timeframes", "erase"] + "timeframes", "erase", "dataformat_ohlcv", "dataformat_trades"] ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", "trade_source", "export", "exportfilename", diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index ffaf9ea66..c80bea393 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -344,6 +344,18 @@ AVAILABLE_CLI_OPTIONS = { choices=constants.AVAILABLE_DATAHANDLERS, required=True, ), + "dataformat_ohlcv": Arg( + '--data-format', + help='Storage format for downloaded ohlcv data. (default: `%(default)s`).', + choices=constants.AVAILABLE_DATAHANDLERS, + default='json' + ), + "dataformat_trades": Arg( + '--data-format-trades', + help='Storage format for downloaded trades data. (default: `%(default)s`).', + choices=constants.AVAILABLE_DATAHANDLERS, + default='jsongz' + ), "exchange": Arg( '--exchange', help=f'Exchange name (default: `{constants.DEFAULT_EXCHANGE}`). ' diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index f73b52c10..aa453a392 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -339,9 +339,16 @@ class Configuration: self._args_to_config(config, argname='days', logstring='Detected --days: {}') + self._args_to_config(config, argname='download_trades', logstring='Detected --dl-trades: {}') + self._args_to_config(config, argname='dataformat_ohlcv', + logstring='Using "{}" to store OHLCV data.') + + self._args_to_config(config, argname='dataformat_trade', + logstring='Using "{}" to store trades data.') + def _process_runmode(self, config: Dict[str, Any]) -> None: if not self.runmode: diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 8d9cde98b..95ec71552 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -216,17 +216,17 @@ CONF_SCHEMA = { 'process_throttle_secs': {'type': 'integer'}, 'interval': {'type': 'integer'}, 'sd_notify': {'type': 'boolean'}, - 'dataformat_ohlcv': { - 'type': 'string', + } + }, + 'dataformat_ohlcv': { + 'type': 'string', 'enum': AVAILABLE_DATAHANDLERS, 'default': 'json' - }, - 'dataformat_trades': { - 'type': 'string', + }, + 'dataformat_trades': { + 'type': 'string', 'enum': AVAILABLE_DATAHANDLERS, 'default': 'jsongz' - } - } } }, 'definitions': { diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 9dad90864..c06b14b4a 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -178,7 +178,7 @@ def _download_pair_history(datadir: Path, :param timerange: range of time to download :return: bool with success state """ - data_handler = get_datahandler(datadir) + data_handler = get_datahandler(datadir, data_handler=data_handler) try: logger.info( @@ -327,12 +327,14 @@ def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], datadir: def convert_trades_to_ohlcv(pairs: List[str], timeframes: List[str], - datadir: Path, timerange: TimeRange, erase=False) -> None: + datadir: Path, timerange: TimeRange, erase=False, + data_format_ohlcv: str = 'json', + data_format_trades: str = 'jsongz') -> None: """ Convert stored trades data to ohlcv data """ - data_handler_trades = get_datahandler(datadir, data_format='jsongz') - data_handler_ohlcv = get_datahandler(datadir, data_format='json') + data_handler_trades = get_datahandler(datadir, data_format=data_format_trades) + data_handler_ohlcv = get_datahandler(datadir, data_format=data_format_ohlcv) for pair in pairs: trades = data_handler_trades.trades_load(pair) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 5f646cc7a..81d41f28a 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -204,16 +204,22 @@ def start_download_data(args: Dict[str, Any]) -> None: if config.get('download_trades'): pairs_not_available = refresh_backtest_trades_data( exchange, pairs=config["pairs"], datadir=config['datadir'], - timerange=timerange, erase=config.get("erase")) + timerange=timerange, erase=config.get("erase"), + data_format=config['dataformat_trades']) # Convert downloaded trade data to different timeframes convert_trades_to_ohlcv( pairs=config["pairs"], timeframes=config["timeframes"], - datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) + datadir=config['datadir'], timerange=timerange, erase=config.get("erase"), + data_format_ohlcv=config['dataformat_ohlcv'], + data_format_trades=config['dataformat_trades'], + ) + else: pairs_not_available = refresh_backtest_ohlcv_data( exchange, pairs=config["pairs"], timeframes=config["timeframes"], - datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) + datadir=config['datadir'], timerange=timerange, erase=config.get("erase"), + data_format=config['dataformat_ohlcv']) except KeyboardInterrupt: sys.exit("SIGINT received, aborting ...") From b37b5c3d90440d8d3afe098f8668d463a67c33c2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 07:02:46 +0100 Subject: [PATCH 1362/3421] Remove Explicit datadir conversation --- freqtrade/utils.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 81d41f28a..f5865f1db 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -251,16 +251,15 @@ def start_list_strategies(args: Dict[str, Any]) -> None: def convert_trades_format(config: Dict[str, Any], convert_from: str, convert_to: str): """ TODO: move this to converter.py (?) - TODO: remove Path conversation once PR is merged and this is rebased """ SrcClass = get_datahandlerclass(convert_from) TrgClass = get_datahandlerclass(convert_to) if 'pairs' not in config: - config['pairs'] = SrcClass.trades_get_pairs(Path(config['datadir'])) + config['pairs'] = SrcClass.trades_get_pairs(config['datadir']) logger.info(f"Converting trades for {config['pairs']}") - src = SrcClass(Path(config['datadir'])) - trg = TrgClass(Path(config['datadir'])) + src = SrcClass(config['datadir']) + trg = TrgClass(config['datadir']) for pair in config['pairs']: data = src.trades_load(pair=pair) logger.info(f"Converting {len(data)} trades for {pair}") @@ -270,7 +269,6 @@ def convert_trades_format(config: Dict[str, Any], convert_from: str, convert_to: def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: str): """ TODO: move this to converter.py (?) - TODO: remove Path conversation once PR is merged and this is rebased """ SrcClass = get_datahandlerclass(convert_from) TrgClass = get_datahandlerclass(convert_to) @@ -281,12 +279,12 @@ def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: config['pairs'] = [] # Check timeframes or fall back to ticker_interval. for timeframe in timeframes: - config['pairs'].extend(SrcClass.ohlcv_get_pairs(Path(config['datadir']), + config['pairs'].extend(SrcClass.ohlcv_get_pairs(config['datadir'], timeframe)) logger.info(f"Converting OHLCV for {config['pairs']}") - src = SrcClass(Path(config['datadir'])) - trg = TrgClass(Path(config['datadir'])) + src = SrcClass(config['datadir']) + trg = TrgClass(config['datadir']) for timeframe in timeframes: for pair in config['pairs']: From 68604911891d7f0f9eaf2d9f2636f2110cc806c3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 09:59:47 +0100 Subject: [PATCH 1363/3421] Rename datahandler module to history module Also move previous history.py into this module - so everything is bundled --- freqtrade/data/datahandlers/__init__.py | 36 ----------------- freqtrade/data/history/__init__.py | 14 +++++++ .../{history.py => history/history_utils.py} | 11 +---- .../{datahandlers => history}/idatahandler.py | 40 +++++++++++++++++-- .../jsondatahandler.py | 0 freqtrade/utils.py | 2 +- tests/data/test_history.py | 33 ++++++++------- tests/optimize/test_backtesting.py | 3 +- 8 files changed, 71 insertions(+), 68 deletions(-) delete mode 100644 freqtrade/data/datahandlers/__init__.py create mode 100644 freqtrade/data/history/__init__.py rename freqtrade/data/{history.py => history/history_utils.py} (98%) rename freqtrade/data/{datahandlers => history}/idatahandler.py (76%) rename freqtrade/data/{datahandlers => history}/jsondatahandler.py (100%) diff --git a/freqtrade/data/datahandlers/__init__.py b/freqtrade/data/datahandlers/__init__.py deleted file mode 100644 index a21dd832d..000000000 --- a/freqtrade/data/datahandlers/__init__.py +++ /dev/null @@ -1,36 +0,0 @@ -from typing import Type -from pathlib import Path -from .idatahandler import IDataHandler - - -def get_datahandlerclass(datatype: str) -> Type[IDataHandler]: - """ - Get datahandler class. - Could be done using Resolvers, but since this may be called often and resolvers - are rather expensive, doing this directly should improve performance. - :param datatype: datatype to use. - :return: Datahandler class - """ - - if datatype == 'json': - from .jsondatahandler import JsonDataHandler - return JsonDataHandler - elif datatype == 'jsongz': - from .jsondatahandler import JsonGzDataHandler - return JsonGzDataHandler - else: - raise ValueError(f"No datahandler for datatype {datatype} available.") - - -def get_datahandler(datadir: Path, data_format: str = None, - data_handler: IDataHandler = None) -> IDataHandler: - """ - :param datadir: Folder to save data - :data_format: dataformat to use - :data_handler: returns this datahandler if it exists or initializes a new one - """ - - if not data_handler: - HandlerClass = get_datahandlerclass(data_format or 'json') - data_handler = HandlerClass(datadir) - return data_handler diff --git a/freqtrade/data/history/__init__.py b/freqtrade/data/history/__init__.py new file mode 100644 index 000000000..572c063fc --- /dev/null +++ b/freqtrade/data/history/__init__.py @@ -0,0 +1,14 @@ +""" +Handle historic data (ohlcv). + +Includes: +* load data for a pair (or a list of pairs) from disk +* download data from exchange and store to disk +""" + +from .history_utils import (convert_trades_to_ohlcv, # noqa: F401 + get_timerange, load_data, load_pair_history, + refresh_backtest_ohlcv_data, + refresh_backtest_trades_data, refresh_data, + validate_backtest_data) +from .idatahandler import get_datahandler, get_datahandlerclass # noqa: F401 diff --git a/freqtrade/data/history.py b/freqtrade/data/history/history_utils.py similarity index 98% rename from freqtrade/data/history.py rename to freqtrade/data/history/history_utils.py index c06b14b4a..42f1c9be7 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history/history_utils.py @@ -1,11 +1,3 @@ -""" -Handle historic data (ohlcv). - -Includes: -* load data for a pair (or a list of pairs) from disk -* download data from exchange and store to disk -""" - import logging import operator from datetime import datetime, timezone @@ -19,8 +11,7 @@ from freqtrade import OperationalException from freqtrade.configuration import TimeRange from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS from freqtrade.data.converter import parse_ticker_dataframe, trades_to_ohlcv -from freqtrade.data.datahandlers import get_datahandler -from freqtrade.data.datahandlers.idatahandler import IDataHandler +from freqtrade.data.history.idatahandler import IDataHandler, get_datahandler from freqtrade.exchange import Exchange logger = logging.getLogger(__name__) diff --git a/freqtrade/data/datahandlers/idatahandler.py b/freqtrade/data/history/idatahandler.py similarity index 76% rename from freqtrade/data/datahandlers/idatahandler.py rename to freqtrade/data/history/idatahandler.py index b80b8cfcc..cee43dcef 100644 --- a/freqtrade/data/datahandlers/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -6,13 +6,14 @@ It's subclasses handle and storing data from disk. import logging from abc import ABC, abstractclassmethod, abstractmethod from copy import deepcopy -from pathlib import Path -from typing import Dict, List, Optional from datetime import datetime, timezone +from pathlib import Path +from typing import Dict, List, Optional, Type + from pandas import DataFrame -from freqtrade.data.converter import clean_ohlcv_dataframe, trim_dataframe from freqtrade.configuration import TimeRange +from freqtrade.data.converter import clean_ohlcv_dataframe, trim_dataframe from freqtrade.exchange import timeframe_to_seconds logger = logging.getLogger(__name__) @@ -89,3 +90,36 @@ class IDataHandler(ABC): if pairdata.iloc[-1]['date'] < stop: logger.warning(f"Missing data at end for pair {pair}, " f"data ends at {pairdata.iloc[-1]['date']:%Y-%m-%d %H:%M:%S}") + + +def get_datahandlerclass(datatype: str) -> Type[IDataHandler]: + """ + Get datahandler class. + Could be done using Resolvers, but since this may be called often and resolvers + are rather expensive, doing this directly should improve performance. + :param datatype: datatype to use. + :return: Datahandler class + """ + + if datatype == 'json': + from .jsondatahandler import JsonDataHandler + return JsonDataHandler + elif datatype == 'jsongz': + from .jsondatahandler import JsonGzDataHandler + return JsonGzDataHandler + else: + raise ValueError(f"No datahandler for datatype {datatype} available.") + + +def get_datahandler(datadir: Path, data_format: str = None, + data_handler: IDataHandler = None) -> IDataHandler: + """ + :param datadir: Folder to save data + :data_format: dataformat to use + :data_handler: returns this datahandler if it exists or initializes a new one + """ + + if not data_handler: + HandlerClass = get_datahandlerclass(data_format or 'json') + data_handler = HandlerClass(datadir) + return data_handler diff --git a/freqtrade/data/datahandlers/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py similarity index 100% rename from freqtrade/data/datahandlers/jsondatahandler.py rename to freqtrade/data/history/jsondatahandler.py diff --git a/freqtrade/utils.py b/freqtrade/utils.py index f5865f1db..1bb0f611a 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -17,8 +17,8 @@ from freqtrade.configuration import (Configuration, TimeRange, from freqtrade.configuration.directory_operations import (copy_sample_files, create_userdata_dir) from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGY -from freqtrade.data.datahandlers import get_datahandlerclass from freqtrade.data.history import (convert_trades_to_ohlcv, + get_datahandlerclass, refresh_backtest_ohlcv_data, refresh_backtest_trades_data) from freqtrade.exchange import (available_exchanges, ccxt_exchanges, diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 726b6d3a7..f84e819ad 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -13,18 +13,15 @@ from pandas.testing import assert_frame_equal from freqtrade.configuration import TimeRange from freqtrade.data.converter import parse_ticker_dataframe -from freqtrade.data.datahandlers import get_datahandler, get_datahandlerclass -from freqtrade.data.datahandlers.idatahandler import IDataHandler -from freqtrade.data.datahandlers.jsondatahandler import (JsonDataHandler, - JsonGzDataHandler) -from freqtrade.data.history import (_download_pair_history, - _download_trades_history, - _load_cached_data_for_updating, - convert_trades_to_ohlcv, get_timerange, - load_data, load_pair_history, - refresh_backtest_ohlcv_data, - refresh_backtest_trades_data, refresh_data, - validate_backtest_data) +from freqtrade.data.history import get_datahandler, get_datahandlerclass +from freqtrade.data.history.history_utils import ( + _download_pair_history, _download_trades_history, + _load_cached_data_for_updating, convert_trades_to_ohlcv, get_timerange, + load_data, load_pair_history, refresh_backtest_ohlcv_data, + refresh_backtest_trades_data, refresh_data, validate_backtest_data) +from freqtrade.data.history.idatahandler import IDataHandler +from freqtrade.data.history.jsondatahandler import (JsonDataHandler, + JsonGzDataHandler) from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import file_dump_json from freqtrade.strategy.default_strategy import DefaultStrategy @@ -100,7 +97,7 @@ def test_load_data_1min_ticker(ticker_history, mocker, caplog, testdatadir) -> N def test_load_data_startup_candles(mocker, caplog, default_conf, testdatadir) -> None: ltfmock = mocker.patch( - 'freqtrade.data.datahandlers.jsondatahandler.JsonDataHandler._ohlcv_load', + 'freqtrade.data.history.jsondatahandler.JsonDataHandler._ohlcv_load', MagicMock(return_value=DataFrame())) timerange = TimeRange('date', None, 1510639620, 0) load_pair_history(pair='UNITTEST/BTC', timeframe='1m', @@ -271,7 +268,7 @@ def test_download_pair_history2(mocker, default_conf, testdatadir) -> None: [1509836580000, 0.00161, 0.00161, 0.00161, 0.00161, 82.390199] ] json_dump_mock = mocker.patch( - 'freqtrade.data.datahandlers.jsondatahandler.JsonDataHandler.ohlcv_store', + 'freqtrade.data.history.jsondatahandler.JsonDataHandler.ohlcv_store', return_value=None) mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=tick) exchange = get_patched_exchange(mocker, default_conf) @@ -444,7 +441,8 @@ def test_validate_backtest_data(default_conf, mocker, caplog, testdatadir) -> No def test_refresh_backtest_ohlcv_data(mocker, default_conf, markets, caplog, testdatadir): - dl_mock = mocker.patch('freqtrade.data.history._download_pair_history', MagicMock()) + dl_mock = mocker.patch('freqtrade.data.history.history_utils._download_pair_history', + MagicMock()) mocker.patch( 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets) ) @@ -465,7 +463,7 @@ def test_refresh_backtest_ohlcv_data(mocker, default_conf, markets, caplog, test def test_download_data_no_markets(mocker, default_conf, caplog, testdatadir): - dl_mock = mocker.patch('freqtrade.data.history._download_pair_history', MagicMock()) + dl_mock = mocker.patch('freqtrade.data.history.history_utils._download_pair_history', MagicMock()) ex = get_patched_exchange(mocker, default_conf) mocker.patch( @@ -485,7 +483,8 @@ def test_download_data_no_markets(mocker, default_conf, caplog, testdatadir): def test_refresh_backtest_trades_data(mocker, default_conf, markets, caplog, testdatadir): - dl_mock = mocker.patch('freqtrade.data.history._download_trades_history', MagicMock()) + dl_mock = mocker.patch('freqtrade.data.history.history_utils._download_trades_history', + MagicMock()) mocker.patch( 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets) ) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 447f0052b..427e6c422 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -460,7 +460,8 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> def get_timerange(input1): return Arrow(2017, 11, 14, 21, 17), Arrow(2017, 11, 14, 22, 59) - mocker.patch('freqtrade.data.history.load_pair_history', MagicMock(return_value=pd.DataFrame())) + mocker.patch('freqtrade.data.history.history_utils.load_pair_history', + MagicMock(return_value=pd.DataFrame())) mocker.patch('freqtrade.data.history.get_timerange', get_timerange) mocker.patch('freqtrade.exchange.Exchange.refresh_latest_ohlcv', MagicMock()) patch_exchange(mocker) From 525550e4c75af8ae2c863e16a8fc0c47c367ae70 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 10:01:54 +0100 Subject: [PATCH 1364/3421] Fix typo in parameter transition --- freqtrade/configuration/configuration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index aa453a392..99ca84f34 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -346,7 +346,7 @@ class Configuration: self._args_to_config(config, argname='dataformat_ohlcv', logstring='Using "{}" to store OHLCV data.') - self._args_to_config(config, argname='dataformat_trade', + self._args_to_config(config, argname='dataformat_trades', logstring='Using "{}" to store trades data.') def _process_runmode(self, config: Dict[str, Any]) -> None: From 28787a001ce03790bb4848ca55b09ebdf817aa17 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 10:27:49 +0100 Subject: [PATCH 1365/3421] Move convert functions to convert module --- freqtrade/configuration/arguments.py | 2 +- freqtrade/data/converter.py | 62 +++++++++++++++++++++++ freqtrade/data/history/jsondatahandler.py | 2 + freqtrade/utils.py | 58 +++------------------ tests/data/test_history.py | 3 +- 5 files changed, 73 insertions(+), 54 deletions(-) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 121bd23b4..2b9b362bf 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -47,7 +47,7 @@ ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "template"] ARGS_BUILD_HYPEROPT = ["user_data_dir", "hyperopt", "template"] -ARGS_CONVERT_DATA = ["pairs", "format_from", "format_to"] +ARGS_CONVERT_DATA = ["pairs", "format_from", "format_to", "erase"] ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 41a843e36..c6ec4fa2b 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -3,6 +3,7 @@ Functions to convert data from one format to another """ import logging from datetime import datetime, timezone +from typing import Any, Dict import pandas as pd from pandas import DataFrame, to_datetime @@ -175,3 +176,64 @@ def trades_to_ohlcv(trades: list, timeframe: str) -> DataFrame: # Drop 0 volume rows df_new = df_new.dropna() return df_new[DEFAULT_DATAFRAME_COLUMNS] + + +def convert_trades_format(config: Dict[str, Any], convert_from: str, convert_to: str, erase: bool): + """ + Convert trades from one format to another format. + :param config: Config dictionary + :param convert_from: Source format + :param convert_to: Target format + :param erase: Erase souce data (does not apply if source and target format are identical) + """ + from freqtrade.data.history.idatahandler import get_datahandler + src = get_datahandler(config['datadir'], convert_from) + trg = get_datahandler(config['datadir'], convert_to) + + if 'pairs' not in config: + config['pairs'] = src.trades_get_pairs(config['datadir']) + logger.info(f"Converting trades for {config['pairs']}") + + for pair in config['pairs']: + data = src.trades_load(pair=pair) + logger.info(f"Converting {len(data)} trades for {pair}") + trg.trades_store(pair, data) + if erase and convert_from != convert_to: + logger.info(f"Deleting source Trade data for {pair}.") + src.trades_purge(pair=pair) + + +def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: str, erase: bool): + """ + Convert ohlcv from one format to another format. + :param config: Config dictionary + :param convert_from: Source format + :param convert_to: Target format + :param erase: Erase souce data (does not apply if source and target format are identical) + """ + from freqtrade.data.history.idatahandler import get_datahandler + src = get_datahandler(config['datadir'], convert_from) + trg = get_datahandler(config['datadir'], convert_to) + timeframes = config.get('timeframes', [config.get('ticker_interval')]) + logger.info(f"Converting OHLCV for timeframe {timeframes}") + + if 'pairs' not in config: + config['pairs'] = [] + # Check timeframes or fall back to ticker_interval. + for timeframe in timeframes: + config['pairs'].extend(src.ohlcv_get_pairs(config['datadir'], + timeframe)) + logger.info(f"Converting OHLCV for {config['pairs']}") + + for timeframe in timeframes: + for pair in config['pairs']: + data = src.ohlcv_load(pair=pair, timeframe=timeframe, + timerange=None, + fill_missing=False, + drop_incomplete=False, + startup_candles=0) + logger.info(f"Converting {len(data)} candles for {pair}") + trg.ohlcv_store(pair=pair, timeframe=timeframe, data=data) + if erase and convert_from != convert_to: + logger.info(f"Deleting source data for {pair} / {timeframe}") + src.ohlcv_purge(pair=pair, timeframe=timeframe) diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index f40cf969f..14f643705 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -62,6 +62,8 @@ class JsonDataHandler(IDataHandler): :param pair: Pair to load data :param timeframe: Ticker timeframe (e.g. "5m") :param timerange: Limit data to be loaded to this timerange. + Optionally implemented by subclasses to avoid loading + all data where possible. :return: DataFrame with ohlcv data, or empty DataFrame """ filename = self._pair_data_filename(self._datadir, pair, timeframe) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 1bb0f611a..b0ef7241b 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -17,8 +17,9 @@ from freqtrade.configuration import (Configuration, TimeRange, from freqtrade.configuration.directory_operations import (copy_sample_files, create_userdata_dir) from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGY +from freqtrade.data.converter import (convert_ohlcv_format, + convert_trades_format) from freqtrade.data.history import (convert_trades_to_ohlcv, - get_datahandlerclass, refresh_backtest_ohlcv_data, refresh_backtest_trades_data) from freqtrade.exchange import (available_exchanges, ccxt_exchanges, @@ -248,55 +249,6 @@ def start_list_strategies(args: Dict[str, Any]) -> None: print(tabulate(strats_to_print, headers='keys', tablefmt='pipe')) -def convert_trades_format(config: Dict[str, Any], convert_from: str, convert_to: str): - """ - TODO: move this to converter.py (?) - """ - SrcClass = get_datahandlerclass(convert_from) - TrgClass = get_datahandlerclass(convert_to) - - if 'pairs' not in config: - config['pairs'] = SrcClass.trades_get_pairs(config['datadir']) - logger.info(f"Converting trades for {config['pairs']}") - src = SrcClass(config['datadir']) - trg = TrgClass(config['datadir']) - for pair in config['pairs']: - data = src.trades_load(pair=pair) - logger.info(f"Converting {len(data)} trades for {pair}") - trg.trades_store(pair, data) - - -def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: str): - """ - TODO: move this to converter.py (?) - """ - SrcClass = get_datahandlerclass(convert_from) - TrgClass = get_datahandlerclass(convert_to) - timeframes = config.get('timeframes', [config.get('ticker_interval')]) - logger.info(f"Converting OHLCV for timeframe {timeframes}") - - if 'pairs' not in config: - config['pairs'] = [] - # Check timeframes or fall back to ticker_interval. - for timeframe in timeframes: - config['pairs'].extend(SrcClass.ohlcv_get_pairs(config['datadir'], - timeframe)) - logger.info(f"Converting OHLCV for {config['pairs']}") - - src = SrcClass(config['datadir']) - trg = TrgClass(config['datadir']) - - for timeframe in timeframes: - for pair in config['pairs']: - data = src.ohlcv_load(pair=pair, timeframe=timeframe, - timerange=None, - fill_missing=False, - drop_incomplete=False, - startup_candles=0) - logger.info(f"Converting {len(data)} candles for {pair}") - trg.ohlcv_store(pair=pair, timeframe=timeframe, data=data) - - def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None: """ Convert data from one format to another @@ -304,10 +256,12 @@ def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) if ohlcv: convert_ohlcv_format(config, - convert_from=args['format_from'], convert_to=args['format_to']) + convert_from=args['format_from'], convert_to=args['format_to'], + erase=args['erase']) else: convert_trades_format(config, - convert_from=args['format_from'], convert_to=args['format_to']) + convert_from=args['format_from'], convert_to=args['format_to'], + erase=args['erase']) def start_list_timeframes(args: Dict[str, Any]) -> None: diff --git a/tests/data/test_history.py b/tests/data/test_history.py index f84e819ad..404f52e87 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -463,7 +463,8 @@ def test_refresh_backtest_ohlcv_data(mocker, default_conf, markets, caplog, test def test_download_data_no_markets(mocker, default_conf, caplog, testdatadir): - dl_mock = mocker.patch('freqtrade.data.history.history_utils._download_pair_history', MagicMock()) + dl_mock = mocker.patch('freqtrade.data.history.history_utils._download_pair_history', + MagicMock()) ex = get_patched_exchange(mocker, default_conf) mocker.patch( From e7054adc496d54b060ea579d650e6d208f2be12a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 10:37:34 +0100 Subject: [PATCH 1366/3421] Add tests for start_convert_data --- tests/test_utils.py | 58 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 51 insertions(+), 7 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index 4cf7b5f23..e384a7633 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -6,13 +6,13 @@ import pytest from freqtrade import OperationalException from freqtrade.state import RunMode -from freqtrade.utils import (setup_utils_configuration, start_create_userdir, - start_download_data, start_hyperopt_list, - start_hyperopt_show, start_list_exchanges, - start_list_markets, start_list_strategies, - start_list_timeframes, start_new_hyperopt, - start_new_strategy, start_test_pairlist, - start_trading) +from freqtrade.utils import (setup_utils_configuration, start_convert_data, + start_create_userdir, start_download_data, + start_hyperopt_list, start_hyperopt_show, + start_list_exchanges, start_list_markets, + start_list_strategies, start_list_timeframes, + start_new_hyperopt, start_new_strategy, + start_test_pairlist, start_trading) from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, patched_configuration_load_config_file) @@ -821,3 +821,47 @@ def test_hyperopt_show(mocker, capsys, hyperopt_results): with pytest.raises(OperationalException, match="The index of the epoch to show should be less than 4."): start_hyperopt_show(pargs) + + +def test_convert_data(mocker, testdatadir): + ohlcv_mock = mocker.patch("freqtrade.utils.convert_ohlcv_format", MagicMock()) + trades_mock = mocker.patch("freqtrade.utils.convert_trades_format", MagicMock()) + args = [ + "convert-data", + "--format-from", + "json", + "--format-to", + "jsongz", + "--datadir", + str(testdatadir), + ] + pargs = get_args(args) + pargs['config'] = None + start_convert_data(pargs, True) + assert trades_mock.call_count == 0 + assert ohlcv_mock.call_count == 1 + assert ohlcv_mock.call_args[1]['convert_from'] == 'json' + assert ohlcv_mock.call_args[1]['convert_to'] == 'jsongz' + assert ohlcv_mock.call_args[1]['erase'] is False + + +def test_convert_data_trades(mocker, testdatadir): + ohlcv_mock = mocker.patch("freqtrade.utils.convert_ohlcv_format", MagicMock()) + trades_mock = mocker.patch("freqtrade.utils.convert_trades_format", MagicMock()) + args = [ + "convert-trade-data", + "--format-from", + "jsongz", + "--format-to", + "json", + "--datadir", + str(testdatadir), + ] + pargs = get_args(args) + pargs['config'] = None + start_convert_data(pargs, False) + assert ohlcv_mock.call_count == 0 + assert trades_mock.call_count == 1 + assert trades_mock.call_args[1]['convert_from'] == 'jsongz' + assert trades_mock.call_args[1]['convert_to'] == 'json' + assert trades_mock.call_args[1]['erase'] is False From 70f3ff046128491ca2310f967020308b92319c68 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 10:45:26 +0100 Subject: [PATCH 1367/3421] Add test for convert_trades_Format --- tests/data/test_converter.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index eb8a8e513..ac5472221 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -2,11 +2,13 @@ import logging from freqtrade.configuration.timerange import TimeRange -from freqtrade.data.converter import (ohlcv_fill_up_missing_data, +from freqtrade.data.converter import (convert_trades_format, + ohlcv_fill_up_missing_data, parse_ticker_dataframe, trim_dataframe) from freqtrade.data.history import (get_timerange, load_data, load_pair_history, validate_backtest_data) from tests.conftest import log_has +from tests.data.test_history import _backup_file, _clean_test_file def test_dataframe_correct_columns(result): @@ -188,3 +190,31 @@ def test_trim_dataframe(testdatadir) -> None: assert len(data_modify) == len(data) - 55 # first row matches 25th original row assert all(data_modify.iloc[0] == data.iloc[25]) + + +def test_convert_trades_format(mocker, default_conf, testdatadir): + file = testdatadir / "XRP_ETH-trades.json.gz" + file_new = testdatadir / "XRP_ETH-trades.json" + _backup_file(file, copy_file=True) + default_conf['datadir'] = testdatadir + + assert not file_new.exists() + + convert_trades_format(default_conf, convert_from='jsongz', + convert_to='json', erase=False) + + assert file_new.exists() + assert file.exists() + + # Remove original file + file.unlink() + # Convert back + convert_trades_format(default_conf, convert_from='json', + convert_to='jsongz', erase=True) + + assert file.exists() + assert not file_new.exists() + + _clean_test_file(file) + if file_new.exists(): + file_new.unlink() From 9e4fc00a0ffcc80dc5ddb91c2961f5cbc81d48a7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 10:54:10 +0100 Subject: [PATCH 1368/3421] Add test for convert_ohlcv --- freqtrade/data/converter.py | 2 ++ tests/data/test_converter.py | 45 +++++++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index c6ec4fa2b..abc754df0 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -135,6 +135,7 @@ def trim_dataframe(df: DataFrame, timerange: TimeRange, df_date_col: str = 'date def order_book_to_dataframe(bids: list, asks: list) -> DataFrame: """ + TODO: This should get a dedicated test Gets order book list, returns dataframe with below format per suggested by creslin ------------------------------------------------------------------- b_sum b_size bids asks a_size a_sum @@ -160,6 +161,7 @@ def order_book_to_dataframe(bids: list, asks: list) -> DataFrame: def trades_to_ohlcv(trades: list, timeframe: str) -> DataFrame: """ Converts trades list to ohlcv list + TODO: This should get a dedicated test :param trades: List of trades, as returned by ccxt.fetch_trades. :param timeframe: Ticker timeframe to resample data to :return: ohlcv Dataframe. diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index ac5472221..a0ec2f46f 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -2,7 +2,8 @@ import logging from freqtrade.configuration.timerange import TimeRange -from freqtrade.data.converter import (convert_trades_format, +from freqtrade.data.converter import (convert_ohlcv_format, + convert_trades_format, ohlcv_fill_up_missing_data, parse_ticker_dataframe, trim_dataframe) from freqtrade.data.history import (get_timerange, load_data, @@ -218,3 +219,45 @@ def test_convert_trades_format(mocker, default_conf, testdatadir): _clean_test_file(file) if file_new.exists(): file_new.unlink() + + +def test_convert_ohlcv_format(mocker, default_conf, testdatadir): + file1 = testdatadir / "XRP_ETH-5m.json" + file1_new = testdatadir / "XRP_ETH-5m.json.gz" + file2 = testdatadir / "XRP_ETH-1m.json" + file2_new = testdatadir / "XRP_ETH-1m.json.gz" + _backup_file(file1, copy_file=True) + _backup_file(file2, copy_file=True) + default_conf['datadir'] = testdatadir + default_conf['pairs'] = ['XRP_ETH'] + default_conf['timeframes'] = ['1m', '5m'] + + assert not file1_new.exists() + assert not file2_new.exists() + + convert_ohlcv_format(default_conf, convert_from='json', + convert_to='jsongz', erase=False) + + assert file1_new.exists() + assert file2_new.exists() + assert file1.exists() + assert file2.exists() + + # Remove original files + file1.unlink() + file2.unlink() + # Convert back + convert_ohlcv_format(default_conf, convert_from='jsongz', + convert_to='json', erase=True) + + assert file1.exists() + assert file2.exists() + assert not file1_new.exists() + assert not file2_new.exists() + + _clean_test_file(file1) + _clean_test_file(file2) + if file1_new.exists(): + file1_new.unlink() + if file2_new.exists(): + file2_new.unlink() From 66d18575a741057ac9a763b4b72a3e8cd91e7883 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 11:10:31 +0100 Subject: [PATCH 1369/3421] Implement abstract interface --- freqtrade/data/history/idatahandler.py | 97 ++++++++++++++++++++++- freqtrade/data/history/jsondatahandler.py | 1 - 2 files changed, 96 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index cee43dcef..20022fc38 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -24,7 +24,102 @@ class IDataHandler(ABC): def __init__(self, datadir: Path) -> None: self._datadir = datadir - # TODO: create abstract interface + @abstractclassmethod + def ohlcv_get_pairs(cls, datadir: Path, timeframe: str) -> List[str]: + """ + Returns a list of all pairs with ohlcv data available in this datadir + for the specified timeframe + :param datadir: Directory to search for ohlcv files + :param timeframe: Timeframe to search pairs for + :return: List of Pairs + """ + + @abstractmethod + def ohlcv_store(self, pair: str, timeframe: str, data: DataFrame) -> None: + """ + Store data in json format "values". + format looks as follows: + [[,,,,]] + :param pair: Pair - used to generate filename + :timeframe: Timeframe - used to generate filename + :data: Dataframe containing OHLCV data + :return: None + """ + + @abstractmethod + def _ohlcv_load(self, pair: str, timeframe: str, + timerange: Optional[TimeRange] = None, + ) -> DataFrame: + """ + Internal method used to load data for one pair from disk. + Implements the loading and conversation to a Pandas dataframe. + Timerange trimming and dataframe validation happens outside of this method. + :param pair: Pair to load data + :param timeframe: Ticker timeframe (e.g. "5m") + :param timerange: Limit data to be loaded to this timerange. + Optionally implemented by subclasses to avoid loading + all data where possible. + :return: DataFrame with ohlcv data, or empty DataFrame + """ + + @abstractmethod + def ohlcv_purge(self, pair: str, timeframe: str) -> bool: + """ + Remove data for this pair + :param pair: Delete data for this pair. + :param timeframe: Ticker timeframe (e.g. "5m") + :return: True when deleted, false if file did not exist. + """ + + @abstractmethod + def ohlcv_append(self, pair: str, timeframe: str, data: DataFrame) -> None: + """ + Append data to existing data structures + :param pair: Pair + :param timeframe: Timeframe this ohlcv data is for + :param data: Data to append. + """ + + @abstractclassmethod + def trades_get_pairs(cls, datadir: Path) -> List[str]: + """ + Returns a list of all pairs for which trade data is available in this + :param datadir: Directory to search for ohlcv files + :return: List of Pairs + """ + + @abstractmethod + def trades_store(self, pair: str, data: List[Dict]) -> None: + """ + Store trades data (list of Dicts) to file + :param pair: Pair - used for filename + :param data: List of Dicts containing trade data + """ + + @abstractmethod + def trades_append(self, pair: str, data: List[Dict]): + """ + Append data to existing files + :param pair: Pair - used for filename + :param data: List of Dicts containing trade data + """ + + @abstractmethod + def trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> List[Dict]: + """ + Load a pair from file, either .json.gz or .json + :param pair: Load trades for this pair + :param timerange: Timerange to load trades for - currently not implemented + :return: List of trades + """ + + @abstractmethod + def trades_purge(self, pair: str) -> bool: + """ + Remove data for this pair + :param pair: Delete data for this pair. + :return: True when deleted, false if file did not exist. + """ def ohlcv_load(self, pair, timeframe: str, timerange: Optional[TimeRange] = None, diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 14f643705..dcfc249aa 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -96,7 +96,6 @@ class JsonDataHandler(IDataHandler): :param pair: Pair :param timeframe: Timeframe this ohlcv data is for :param data: Data to append. - """ raise NotImplementedError() From e2a00c03d626fb6242968c19402ccc5ebf7e505b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 11:24:37 +0100 Subject: [PATCH 1370/3421] Document convert options --- config_full.json.example | 4 +- docs/data-download.md | 146 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 149 insertions(+), 1 deletion(-) diff --git a/config_full.json.example b/config_full.json.example index b9631f63d..108fdd534 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -127,5 +127,7 @@ "heartbeat_interval": 60 }, "strategy": "DefaultStrategy", - "strategy_path": "user_data/strategies/" + "strategy_path": "user_data/strategies/", + "dataformat_ohlcv": "json", + "dataformat_trades": "jsongz" } diff --git a/docs/data-download.md b/docs/data-download.md index 1f03b124a..c5fb744ab 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -12,6 +12,152 @@ Otherwise `--exchange` becomes mandatory. If you already have backtesting data available in your data-directory and would like to refresh this data up to today, use `--days xx` with a number slightly higher than the missing number of days. Freqtrade will keep the available data and only download the missing data. Be carefull though: If the number is too small (which would result in a few missing days), the whole dataset will be removed and only xx days will be downloaded. +### Usage + +``` +usage: freqtrade download-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-p PAIRS [PAIRS ...]] + [--pairs-file FILE] [--days INT] [--dl-trades] [--exchange EXCHANGE] + [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...]] + [--erase] [--data-format {json,jsongz}] [--data-format-trades {json,jsongz}] + +optional arguments: + -h, --help show this help message and exit + -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] + Show profits for only these pairs. Pairs are space-separated. + --pairs-file FILE File containing a list of pairs to download. + --days INT Download data for given number of days. + --dl-trades Download trades instead of OHLCV data. The bot will resample trades to the desired timeframe as specified as + --timeframes/-t. + --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no config is provided. + -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...] + Specify which tickers to download. Space-separated list. Default: `1m 5m`. + --erase Clean all existing data for the selected exchange/pairs/timeframes. + --data-format {json,jsongz} + Storage format for downloaded ohlcv data. (default: `json`). + --data-format-trades {json,jsongz} + Storage format for downloaded trades data. (default: `jsongz`). + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: 'syslog', 'journald'. See the documentation for more details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-` + to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. +``` + +### Data format + +Freqtrade currently supports 2 dataformats, `json` and `jsongz`, a zipped version of json files. +By default, OHLCV data is stored as json data, while trades data is stored as `jsongz` data. + +This can be changed via the `--data-format` and `--data-format-trades` parameters respectivly. + +If the default dataformat has been changed during download, then the keys `dataformat_ohlcv` and `dataformat_trades` in the configuration file need to be adjusted to the selected dataformat as well. + +!!! Note + You can convert between data-formats using the [convert-data](#subcommand-convert-data) and [convert-trade-data](#subcommand-convert-trade-data) methods. + +#### Subcommand convert data + +``` +usage: freqtrade convert-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] + [-p PAIRS [PAIRS ...]] --format-from + {json,jsongz} --format-to {json,jsongz} + [--erase] + [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...]] + +optional arguments: + -h, --help show this help message and exit + -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] + Show profits for only these pairs. Pairs are space- + separated. + --format-from {json,jsongz} + Source format for data conversation. + --format-to {json,jsongz} + Destination format for data conversation. + --erase Clean all existing data for the selected + exchange/pairs/timeframes. + -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...] + Specify which tickers to download. Space-separated + list. Default: `1m 5m`. + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). + Multiple --config options may be used. Can be set to + `-` to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. +``` + +##### Example converting data + +The following command will convert all Candle data available in `~/.freqtrade/data/binance` from json to jsongz, saving diskspace in the process. +It'll also remove source files (`--erase` parameter). + +``` bash +freqtrade convert-data --format-from json --format-to jsongz --data-dir ~/.freqtrade/data/binance -t 5m 15m --erase +``` + +#### Subcommand convert-trade data + +``` +usage: freqtrade convert-trade-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] + [-p PAIRS [PAIRS ...]] --format-from + {json,jsongz} --format-to {json,jsongz} + [--erase] + +optional arguments: + -h, --help show this help message and exit + -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] + Show profits for only these pairs. Pairs are space- + separated. + --format-from {json,jsongz} + Source format for data conversation. + --format-to {json,jsongz} + Destination format for data conversation. + --erase Clean all existing data for the selected + exchange/pairs/timeframes. + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). + Multiple --config options may be used. Can be set to + `-` to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. +``` + +##### Example converting trades + +The following command will convert all available trade-data in `~/.freqtrade/data/kraken` from json to jsongz, saving diskspace in the process. +It'll also remove source files (`--erase` parameter). + +``` bash +freqtrade convert-trade-data --format-from jsongz --format-to json --data-dir ~/.freqtrade/data/kraken --erase +``` + ### Pairs file In alternative to the whitelist from `config.json`, a `pairs.json` file can be used. From 5c39ebd0a0d9dea455762086d78a3ea5cbf3c995 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 28 Dec 2019 13:59:40 +0300 Subject: [PATCH 1371/3421] Adjust logging --- freqtrade/freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 9c18d2d95..1cc7f32f4 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -331,12 +331,12 @@ class FreqtradeBot: if buy and not sell: if not self.get_free_open_trades(): - logger.warning("Can't open a new trade: max number of trades is reached") + logger.debug("Can't open a new trade: max number of trades is reached") continue stake_amount = self.get_trade_stake_amount(pair) if not stake_amount: - logger.warning("Stake amount is 0, ignoring trade") + logger.debug("Stake amount is 0, ignoring possible trade for {pair}.") continue logger.info(f"Buy signal found: about create a new trade with stake_amount: " From ae1b28aab756adbef0fc64b0194a3b38a2ad0686 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 14:32:11 +0100 Subject: [PATCH 1372/3421] Remove get_datahandlerclass from package exposes --- freqtrade/data/history/__init__.py | 2 +- tests/data/test_history.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/data/history/__init__.py b/freqtrade/data/history/__init__.py index 572c063fc..23f635a98 100644 --- a/freqtrade/data/history/__init__.py +++ b/freqtrade/data/history/__init__.py @@ -11,4 +11,4 @@ from .history_utils import (convert_trades_to_ohlcv, # noqa: F401 refresh_backtest_ohlcv_data, refresh_backtest_trades_data, refresh_data, validate_backtest_data) -from .idatahandler import get_datahandler, get_datahandlerclass # noqa: F401 +from .idatahandler import get_datahandler # noqa: F401 diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 404f52e87..2341673db 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -13,13 +13,13 @@ from pandas.testing import assert_frame_equal from freqtrade.configuration import TimeRange from freqtrade.data.converter import parse_ticker_dataframe -from freqtrade.data.history import get_datahandler, get_datahandlerclass from freqtrade.data.history.history_utils import ( _download_pair_history, _download_trades_history, _load_cached_data_for_updating, convert_trades_to_ohlcv, get_timerange, load_data, load_pair_history, refresh_backtest_ohlcv_data, refresh_backtest_trades_data, refresh_data, validate_backtest_data) -from freqtrade.data.history.idatahandler import IDataHandler +from freqtrade.data.history.idatahandler import (IDataHandler, get_datahandler, + get_datahandlerclass) from freqtrade.data.history.jsondatahandler import (JsonDataHandler, JsonGzDataHandler) from freqtrade.exchange import timeframe_to_minutes From 6b5983339d8d94d90c51f0dbb51f1948fed4bbea Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 14:47:30 +0100 Subject: [PATCH 1373/3421] Require dataformat entries in configuration --- freqtrade/constants.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 95ec71552..a7f569f63 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -294,5 +294,7 @@ CONF_SCHEMA = { 'stoploss', 'minimal_roi', 'internals', + 'dataformat_ohlcv', + 'dataformat_trades', ] } From f4a532ef6d3ed63751de5c688338af1036741d7f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 14:57:39 +0100 Subject: [PATCH 1374/3421] Pass format to load_data --- freqtrade/data/history/history_utils.py | 2 +- freqtrade/edge/__init__.py | 1 + freqtrade/optimize/backtesting.py | 1 + freqtrade/plot/plotting.py | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index 42f1c9be7..1f0459379 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -72,7 +72,7 @@ def load_data(datadir: Path, :param fill_up_missing: Fill missing values with "No action"-candles :param startup_candles: Additional candles to load at the start of the period :param fail_without_data: Raise OperationalException if no data is found. - :param data_handler: Initialized data-handler to use. + :param data_format: Data format which should be used. Defaults to json :return: dict(:) """ result: Dict[str, DataFrame] = {} diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index 9ad2485ef..44eaad717 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -108,6 +108,7 @@ class Edge: timeframe=self.strategy.ticker_interval, timerange=self._timerange, startup_candles=self.strategy.startup_candle_count, + data_format=self.config.get('dataformat_ohlcv', 'json'), ) if not data: diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 98ee71a60..e49c0bd80 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -116,6 +116,7 @@ class Backtesting: timerange=timerange, startup_candles=self.required_startup, fail_without_data=True, + data_format=self.config.get('dataformat_ohlcv', 'json'), ) min_date, max_date = history.get_timerange(data) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 0ef71ed82..7c7f10fdc 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -42,6 +42,7 @@ def init_plotscript(config): pairs=pairs, timeframe=config.get('ticker_interval', '5m'), timerange=timerange, + data_format=config.get('dataformat_ohlcv', 'json'), ) trades = load_trades(config['trade_source'], From 814cc20c6b94ea0c34b8303dbb14c373f6f0290f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 28 Dec 2019 19:58:41 +0100 Subject: [PATCH 1375/3421] Remove potential circular import --- freqtrade/data/converter.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index abc754df0..49a2a25bc 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -8,7 +8,6 @@ from typing import Any, Dict import pandas as pd from pandas import DataFrame, to_datetime -from freqtrade.configuration.timerange import TimeRange from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS logger = logging.getLogger(__name__) @@ -116,7 +115,7 @@ def ohlcv_fill_up_missing_data(dataframe: DataFrame, timeframe: str, pair: str) return df -def trim_dataframe(df: DataFrame, timerange: TimeRange, df_date_col: str = 'date') -> DataFrame: +def trim_dataframe(df: DataFrame, timerange, df_date_col: str = 'date') -> DataFrame: """ Trim dataframe based on given timerange :param df: Dataframe to trim From 762604300f26afb5712d0ac92f01a57048a63f9e Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 29 Dec 2019 04:17:49 +0300 Subject: [PATCH 1376/3421] Refactor create_trades() --- freqtrade/freqtradebot.py | 104 ++++++++++++++++++++------------------ 1 file changed, 54 insertions(+), 50 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 90eb7beba..d15624e9f 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -294,65 +294,48 @@ class FreqtradeBot: # See also #2575 at github. return max(min_stake_amounts) / amount_reserve_percent - def create_trades(self) -> bool: + def create_trade(self, pair: str) -> bool: """ - Checks the implemented trading strategy for buy-signals, using the active pair whitelist. - If a pair triggers the buy_signal a new trade record gets created. - Checks pairs as long as the open trade count is below `max_open_trades`. - :return: True if at least one trade has been created. + Check the implemented trading strategy for buy-signals. + If the pair triggers the buy_signal a new trade record gets created. + :return: True if a trade has been created. """ - whitelist = copy.deepcopy(self.active_pair_whitelist) + logger.debug(f"create_trade for pair {pair}") - if not whitelist: - logger.info("Active pair whitelist is empty.") + if self.strategy.is_pair_locked(pair): + logger.info(f"Pair {pair} is currently locked.") return False - # Remove currently opened and latest pairs from whitelist - for trade in Trade.get_open_trades(): - if trade.pair in whitelist: - whitelist.remove(trade.pair) - logger.debug('Ignoring %s in pair whitelist', trade.pair) - - if not whitelist: - logger.info("No currency pair in active pair whitelist, " - "but checking to sell open trades.") - return False - - buycount = 0 # running get_signal on historical data fetched - for pair in whitelist: - if self.strategy.is_pair_locked(pair): - logger.info(f"Pair {pair} is currently locked.") - continue + (buy, sell) = self.strategy.get_signal( + pair, self.strategy.ticker_interval, + self.dataprovider.ohlcv(pair, self.strategy.ticker_interval)) - (buy, sell) = self.strategy.get_signal( - pair, self.strategy.ticker_interval, - self.dataprovider.ohlcv(pair, self.strategy.ticker_interval)) + if buy and not sell: + if not self.get_free_open_trades(): + logger.debug("Can't open a new trade: max number of trades is reached") + return False - if buy and not sell: - if not self.get_free_open_trades(): - logger.debug("Can't open a new trade: max number of trades is reached") - continue + stake_amount = self.get_trade_stake_amount(pair) + if not stake_amount: + logger.debug("Stake amount is 0, ignoring possible trade for {pair}.") + return False - stake_amount = self.get_trade_stake_amount(pair) - if not stake_amount: - logger.debug("Stake amount is 0, ignoring possible trade for {pair}.") - continue + logger.info(f"Buy signal found: about create a new trade with stake_amount: " + f"{stake_amount} ...") - logger.info(f"Buy signal found: about create a new trade with stake_amount: " - f"{stake_amount} ...") + bidstrat_check_depth_of_market = self.config.get('bid_strategy', {}).\ + get('check_depth_of_market', {}) + if (bidstrat_check_depth_of_market.get('enabled', False)) and\ + (bidstrat_check_depth_of_market.get('bids_to_ask_delta', 0) > 0): + if self._check_depth_of_market_buy(pair, bidstrat_check_depth_of_market): + return self.execute_buy(pair, stake_amount) + else: + return False - bidstrat_check_depth_of_market = self.config.get('bid_strategy', {}).\ - get('check_depth_of_market', {}) - if (bidstrat_check_depth_of_market.get('enabled', False)) and\ - (bidstrat_check_depth_of_market.get('bids_to_ask_delta', 0) > 0): - if self._check_depth_of_market_buy(pair, bidstrat_check_depth_of_market): - buycount += self.execute_buy(pair, stake_amount) - continue - - buycount += self.execute_buy(pair, stake_amount) - - return buycount > 0 + return self.execute_buy(pair, stake_amount) + else: + return False def _check_depth_of_market_buy(self, pair: str, conf: Dict) -> bool: """ @@ -479,10 +462,31 @@ class FreqtradeBot: """ Tries to execute buy orders for trades in a safe way """ + result = False try: - # Create entity and execute trade - if not self.create_trades(): + whitelist = copy.deepcopy(self.active_pair_whitelist) + + if not whitelist: + logger.info("Active pair whitelist is empty.") + else: + # Remove currently opened and latest pairs from whitelist + for trade in Trade.get_open_trades(): + if trade.pair in whitelist: + whitelist.remove(trade.pair) + logger.debug('Ignoring %s in pair whitelist', trade.pair) + + if not whitelist: + logger.info("No currency pair in active pair whitelist, " + "but checking to sell open trades.") + else: + # Create entity and execute trade for each pair from whitelist + for pair in whitelist: + if self.create_trade(pair): + result = True + + if not result: logger.debug('Found no buy signals for whitelisted currencies. Trying again...') + except DependencyException as exception: logger.warning('Unable to create trade: %s', exception) From ce84f74528de4ee06977967a859722b68a1f6b31 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 29 Dec 2019 04:38:28 +0300 Subject: [PATCH 1377/3421] Adjust tests --- tests/rpc/test_rpc.py | 22 ++--- tests/rpc/test_rpc_apiserver.py | 8 +- tests/rpc/test_rpc_telegram.py | 22 ++--- tests/test_freqtradebot.py | 151 ++++++++++++++++---------------- tests/test_integration.py | 4 +- 5 files changed, 105 insertions(+), 102 deletions(-) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 3b897572c..a9f73e98d 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -41,7 +41,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: with pytest.raises(RPCException, match=r'.*no active trade*'): rpc._rpc_trade_status() - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() results = rpc._rpc_trade_status() assert { 'trade_id': 1, @@ -116,7 +116,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: with pytest.raises(RPCException, match=r'.*no active order*'): rpc._rpc_status_table(default_conf['stake_currency'], 'USD') - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() result, headers = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') assert "Since" in headers @@ -162,7 +162,7 @@ def test_rpc_daily_profit(default_conf, update, ticker, fee, rpc = RPC(freqtradebot) rpc._fiat_converter = CryptoToFiatConverter() # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -217,7 +217,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, rpc._rpc_trade_statistics(stake_currency, fiat_display_currency) # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) @@ -231,7 +231,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, trade.close_date = datetime.utcnow() trade.is_open = False - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) @@ -299,7 +299,7 @@ def test_rpc_trade_statistics_closed(mocker, default_conf, ticker, fee, rpc = RPC(freqtradebot) # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) @@ -529,7 +529,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: msg = rpc._rpc_forcesell('all') assert msg == {'result': 'Created sell orders for all open trades.'} - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() msg = rpc._rpc_forcesell('all') assert msg == {'result': 'Created sell orders for all open trades.'} @@ -563,7 +563,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: assert cancel_order_mock.call_count == 1 assert trade.amount == filled_amount - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() trade = Trade.query.filter(Trade.id == '2').first() amount = trade.amount # make an limit-buy open trade, if there is no 'filled', don't sell it @@ -582,7 +582,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: assert cancel_order_mock.call_count == 2 assert trade.amount == amount - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() # make an limit-sell open trade mocker.patch( 'freqtrade.exchange.Exchange.get_order', @@ -613,7 +613,7 @@ def test_performance_handle(default_conf, ticker, limit_buy_order, fee, rpc = RPC(freqtradebot) # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -649,7 +649,7 @@ def test_rpc_count(mocker, default_conf, ticker, fee) -> None: assert counts["current"] == 0 # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() counts = rpc._rpc_count() assert counts["current"] == 1 diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 36bb81e41..94af85349 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -267,7 +267,7 @@ def test_api_count(botclient, mocker, ticker, fee, markets): assert rc.json["max"] == 1.0 # Create some test data - ftbot.create_trades() + ftbot.process_maybe_execute_buys() rc = client_get(client, f"{BASE_URI}/count") assert_response(rc) assert rc.json["current"] == 1.0 @@ -333,7 +333,7 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li assert len(rc.json) == 1 assert rc.json == {"error": "Error querying _profit: no closed trade"} - ftbot.create_trades() + ftbot.process_maybe_execute_buys() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade @@ -422,7 +422,7 @@ def test_api_status(botclient, mocker, ticker, fee, markets): assert_response(rc, 200) assert rc.json == [] - ftbot.create_trades() + ftbot.process_maybe_execute_buys() rc = client_get(client, f"{BASE_URI}/status") assert_response(rc) assert len(rc.json) == 1 @@ -552,7 +552,7 @@ def test_api_forcesell(botclient, mocker, ticker, fee, markets): assert_response(rc, 502) assert rc.json == {"error": "Error querying _forcesell: invalid argument"} - ftbot.create_trades() + ftbot.process_maybe_execute_buys() rc = client_post(client, f"{BASE_URI}/forcesell", data='{"tradeid": "1"}') diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index f8b9ca8ab..d9a7e2f5b 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -189,7 +189,7 @@ def test_status(default_conf, update, mocker, fee, ticker,) -> None: # Create some test data for _ in range(3): - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() telegram._status(update=update, context=MagicMock()) assert msg_mock.call_count == 1 @@ -236,7 +236,7 @@ def test_status_handle(default_conf, update, ticker, fee, mocker) -> None: msg_mock.reset_mock() # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() # Trigger status while we have a fulfilled order for the open trade telegram._status(update=update, context=MagicMock()) @@ -285,7 +285,7 @@ def test_status_table_handle(default_conf, update, ticker, fee, mocker) -> None: msg_mock.reset_mock() # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() telegram._status_table(update=update, context=MagicMock()) @@ -322,7 +322,7 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -352,7 +352,7 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, msg_mock.reset_mock() freqtradebot.config['max_open_trades'] = 2 # Add two other trades - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() trades = Trade.query.all() for trade in trades: @@ -431,7 +431,7 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, msg_mock.reset_mock() # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade @@ -709,7 +709,7 @@ def test_forcesell_handle(default_conf, update, ticker, fee, telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -764,7 +764,7 @@ def test_forcesell_down_handle(default_conf, update, ticker, fee, telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() # Decrease the price and sell it mocker.patch.multiple( @@ -821,7 +821,7 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() rpc_mock.reset_mock() # /forcesell all @@ -971,7 +971,7 @@ def test_performance_handle(default_conf, update, ticker, fee, telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -1014,7 +1014,7 @@ def test_count_handle(default_conf, update, ticker, fee, mocker) -> None: freqtradebot.state = State.RUNNING # Create some test data - freqtradebot.create_trades() + freqtradebot.process_maybe_execute_buys() msg_mock.reset_mock() telegram._count(update=update, context=MagicMock()) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 2f8c786fd..be6a9b392 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -247,7 +247,7 @@ def test_edge_overrides_stoploss(limit_buy_order, fee, caplog, mocker, edge_conf freqtrade.active_pair_whitelist = ['NEO/BTC'] patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.update(limit_buy_order) ############################################# @@ -287,7 +287,7 @@ def test_edge_should_ignore_strategy_stoploss(limit_buy_order, fee, freqtrade.active_pair_whitelist = ['NEO/BTC'] patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.update(limit_buy_order) ############################################# @@ -310,7 +310,7 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert trade is not None @@ -318,7 +318,7 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, assert trade.is_open assert trade.open_date is not None - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.order_by(Trade.id.desc()).first() assert trade is not None @@ -462,7 +462,7 @@ def test_get_min_pair_stake_amount_real_data(mocker, default_conf) -> None: assert round(result, 8) == round(max(0.0001, 0.001 * 0.020405) / 0.9, 8) -def test_create_trades(default_conf, ticker, limit_buy_order, fee, mocker) -> None: +def test_create_trade(default_conf, ticker, limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -476,7 +476,7 @@ def test_create_trades(default_conf, ticker, limit_buy_order, fee, mocker) -> No whitelist = deepcopy(default_conf['exchange']['pair_whitelist']) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trades() + freqtrade.create_trade('ETH/BTC') trade = Trade.query.first() assert trade is not None @@ -494,8 +494,8 @@ def test_create_trades(default_conf, ticker, limit_buy_order, fee, mocker) -> No assert whitelist == default_conf['exchange']['pair_whitelist'] -def test_create_trades_no_stake_amount(default_conf, ticker, limit_buy_order, - fee, mocker) -> None: +def test_create_trade_no_stake_amount(default_conf, ticker, limit_buy_order, + fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) patch_wallet(mocker, free=default_conf['stake_amount'] * 0.5) @@ -509,11 +509,11 @@ def test_create_trades_no_stake_amount(default_conf, ticker, limit_buy_order, patch_get_signal(freqtrade) with pytest.raises(DependencyException, match=r'.*stake amount.*'): - freqtrade.create_trades() + freqtrade.create_trade('ETH/BTC') -def test_create_trades_minimal_amount(default_conf, ticker, limit_buy_order, - fee, mocker) -> None: +def test_create_trade_minimal_amount(default_conf, ticker, limit_buy_order, + fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) buy_mock = MagicMock(return_value={'id': limit_buy_order['id']}) @@ -527,13 +527,13 @@ def test_create_trades_minimal_amount(default_conf, ticker, limit_buy_order, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trades() + freqtrade.create_trade('ETH/BTC') rate, amount = buy_mock.call_args[1]['rate'], buy_mock.call_args[1]['amount'] assert rate * amount >= default_conf['stake_amount'] -def test_create_trades_too_small_stake_amount(default_conf, ticker, limit_buy_order, - fee, mocker) -> None: +def test_create_trade_too_small_stake_amount(default_conf, ticker, limit_buy_order, + fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) buy_mock = MagicMock(return_value={'id': limit_buy_order['id']}) @@ -549,11 +549,11 @@ def test_create_trades_too_small_stake_amount(default_conf, ticker, limit_buy_or patch_get_signal(freqtrade) - assert not freqtrade.create_trades() + assert not freqtrade.create_trade('ETH/BTC') -def test_create_trades_limit_reached(default_conf, ticker, limit_buy_order, - fee, markets, mocker) -> None: +def test_create_trade_limit_reached(default_conf, ticker, limit_buy_order, + fee, markets, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -569,12 +569,13 @@ def test_create_trades_limit_reached(default_conf, ticker, limit_buy_order, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - assert not freqtrade.create_trades() + assert not freqtrade.create_trade('ETH/BTC') assert freqtrade.get_trade_stake_amount('ETH/BTC') is None -def test_create_trades_no_pairs_let(default_conf, ticker, limit_buy_order, fee, - mocker, caplog) -> None: +def test_process_maybe_execute_buys_no_pairs_let(default_conf, ticker, + limit_buy_order, fee, + mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -588,14 +589,15 @@ def test_create_trades_no_pairs_let(default_conf, ticker, limit_buy_order, fee, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - assert freqtrade.create_trades() - assert not freqtrade.create_trades() - assert log_has("No currency pair in active pair whitelist, " - "but checking to sell open trades.", caplog) + freqtrade.process_maybe_execute_buys() + assert not log_has_re(r"No currency pair in active pair whitelist.*", caplog) + freqtrade.process_maybe_execute_buys() + assert log_has_re(r"No currency pair in active pair whitelist.*", caplog) -def test_create_trades_no_pairs_in_whitelist(default_conf, ticker, limit_buy_order, fee, - mocker, caplog) -> None: +def test_process_maybe_execute_buys_no_pairs_in_whitelist(default_conf, ticker, + limit_buy_order, fee, + mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -608,11 +610,11 @@ def test_create_trades_no_pairs_in_whitelist(default_conf, ticker, limit_buy_ord freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - assert not freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() assert log_has("Active pair whitelist is empty.", caplog) -def test_create_trades_no_signal(default_conf, fee, mocker) -> None: +def test_create_trade_no_signal(default_conf, fee, mocker) -> None: default_conf['dry_run'] = True patch_RPCManager(mocker) @@ -628,7 +630,7 @@ def test_create_trades_no_signal(default_conf, fee, mocker) -> None: Trade.query = MagicMock() Trade.query.filter = MagicMock() - assert not freqtrade.create_trades() + assert not freqtrade.create_trade('ETH/BTC') @pytest.mark.parametrize("max_open", range(0, 5)) @@ -646,7 +648,7 @@ def test_create_trades_multiple_trades(default_conf, ticker, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trades = Trade.get_open_trades() assert len(trades) == max_open @@ -672,7 +674,8 @@ def test_create_trades_preopen(default_conf, ticker, fee, mocker) -> None: assert len(Trade.get_open_trades()) == 2 # Create 2 new trades using create_trades - assert freqtrade.create_trades() + assert freqtrade.create_trade('ETH/BTC') + assert freqtrade.create_trade('NEO/BTC') trades = Trade.get_open_trades() assert len(trades) == 4 @@ -1056,7 +1059,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, # should unset stoploss_order_id and return true # as a trade actually happened caplog.clear() - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.is_open = True trade.open_order_id = None @@ -1114,7 +1117,7 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.is_open = True trade.open_order_id = '12345' @@ -1149,7 +1152,7 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, patch_get_signal(freqtrade) freqtrade.strategy.order_types['stoploss_on_exchange'] = True - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() caplog.clear() freqtrade.create_stoploss_order(trade, 200, 199) @@ -1207,7 +1210,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, patch_get_signal(freqtrade) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.is_open = True trade.open_order_id = None @@ -1295,7 +1298,7 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c # setting stoploss_on_exchange_interval to 60 seconds freqtrade.strategy.order_types['stoploss_on_exchange_interval'] = 60 patch_get_signal(freqtrade) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.is_open = True trade.open_order_id = None @@ -1376,7 +1379,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, freqtrade.active_pair_whitelist = freqtrade.edge.adjust(freqtrade.active_pair_whitelist) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.is_open = True trade.open_order_id = None @@ -1444,7 +1447,7 @@ def test_process_maybe_execute_buys(mocker, default_conf, caplog) -> None: caplog.set_level(logging.DEBUG) freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.freqtradebot.FreqtradeBot.create_trades', MagicMock(return_value=False)) + mocker.patch('freqtrade.freqtradebot.FreqtradeBot.create_trade', MagicMock(return_value=False)) freqtrade.process_maybe_execute_buys() assert log_has('Found no buy signals for whitelisted currencies. Trying again...', caplog) @@ -1453,7 +1456,7 @@ def test_process_maybe_execute_buys_exception(mocker, default_conf, caplog) -> N freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch( - 'freqtrade.freqtradebot.FreqtradeBot.create_trades', + 'freqtrade.freqtradebot.FreqtradeBot.create_trade', MagicMock(side_effect=DependencyException) ) freqtrade.process_maybe_execute_buys() @@ -1674,7 +1677,7 @@ def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, fee, mock freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -1711,7 +1714,7 @@ def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order, fee, patch_get_signal(freqtrade, value=(True, True)) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() # Buy and Sell triggering, so doing nothing ... trades = Trade.query.all() @@ -1720,7 +1723,7 @@ def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order, fee, # Buy is triggering, so buying ... patch_get_signal(freqtrade, value=(True, False)) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trades = Trade.query.all() nb_trades = len(trades) assert nb_trades == 1 @@ -1764,7 +1767,7 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order, patch_get_signal(freqtrade, value=(True, False)) freqtrade.strategy.min_roi_reached = MagicMock(return_value=True) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.is_open = True @@ -1795,7 +1798,7 @@ def test_handle_trade_use_sell_signal( freqtrade = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.is_open = True @@ -1823,7 +1826,7 @@ def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order, patch_get_signal(freqtrade) # Create trade and sell it - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -2183,7 +2186,7 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, mocker) -> N patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -2231,7 +2234,7 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, mocker) patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -2281,7 +2284,7 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -2339,7 +2342,7 @@ def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee, c freqtrade.strategy.order_types['stoploss_on_exchange'] = True patch_get_signal(freqtrade) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() Trade.session = MagicMock() @@ -2382,7 +2385,7 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, ticker, fee, ticke patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -2432,7 +2435,7 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, f patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trades = [trade] freqtrade.process_maybe_execute_sells(trades) @@ -2484,7 +2487,7 @@ def test_execute_sell_market_order(default_conf, ticker, fee, patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -2546,7 +2549,7 @@ def test_sell_profit_only_enable_profit(default_conf, limit_buy_order, patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2577,7 +2580,7 @@ def test_sell_profit_only_disable_profit(default_conf, limit_buy_order, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2608,7 +2611,7 @@ def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, mocker patch_get_signal(freqtrade) freqtrade.strategy.stop_loss_reached = MagicMock(return_value=SellCheckTuple( sell_flag=False, sell_type=SellType.NONE)) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2638,7 +2641,7 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, mocke patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2667,7 +2670,7 @@ def test_sell_not_enough_balance(default_conf, limit_buy_order, patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() amnt = trade.amount @@ -2735,7 +2738,7 @@ def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, mocker, caplo patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -2754,7 +2757,7 @@ def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, mocker, caplo # reinit - should buy other pair. caplog.clear() - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() assert log_has(f"Pair {trade.pair} is currently locked.", caplog) @@ -2779,7 +2782,7 @@ def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, mocker) -> patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=True) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2812,7 +2815,7 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, caplog, mocker) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert freqtrade.handle_trade(trade) is False @@ -2867,7 +2870,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2924,7 +2927,7 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2987,7 +2990,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.update(limit_buy_order) @@ -3046,7 +3049,7 @@ def test_disable_ignore_roi_if_buy_signal(default_conf, limit_buy_order, patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=True) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trade.update(limit_buy_order) @@ -3377,7 +3380,7 @@ def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee, whitelist = deepcopy(default_conf['exchange']['pair_whitelist']) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert trade is not None @@ -3412,7 +3415,7 @@ def test_order_book_depth_of_market_high_delta(default_conf, ticker, limit_buy_o # Save state of current whitelist freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert trade is None @@ -3514,7 +3517,7 @@ def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trade = Trade.query.first() assert trade @@ -3604,7 +3607,7 @@ def test_process_i_am_alive(default_conf, mocker, caplog): @pytest.mark.usefixtures("init_persistence") -def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order): +def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order, caplog): default_conf['dry_run'] = True # Initialize to 2 times stake amount default_conf['dry_run_wallet'] = 0.002 @@ -3621,12 +3624,12 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order) patch_get_signal(bot) assert bot.wallets.get_free('BTC') == 0.002 - bot.create_trades() + bot.process_maybe_execute_buys() trades = Trade.query.all() assert len(trades) == 2 bot.config['max_open_trades'] = 3 - with pytest.raises( - DependencyException, - match=r"Available balance \(0 BTC\) is lower than stake amount \(0.001 BTC\)"): - bot.create_trades() + bot.process_maybe_execute_buys() + assert log_has_re(r"Unable to create trade: " + r"Available balance \(0 BTC\) is lower than stake amount \(0.001 BTC\)", + caplog) diff --git a/tests/test_integration.py b/tests/test_integration.py index 11dbca225..2c95bc6e3 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -80,7 +80,7 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, patch_get_signal(freqtrade) # Create some test data - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() wallets_mock.reset_mock() Trade.session = MagicMock() @@ -153,7 +153,7 @@ def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, moc patch_get_signal(freqtrade) # Create 4 trades - freqtrade.create_trades() + freqtrade.process_maybe_execute_buys() trades = Trade.query.all() assert len(trades) == 4 From 04f28ed9bcd337e6f0dbdddd0c1d51f62e67c613 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 29 Dec 2019 05:03:10 +0300 Subject: [PATCH 1378/3421] Refactor try/except: handle DependencyException for each pair separately --- freqtrade/freqtradebot.py | 40 +++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d15624e9f..e47a4a85c 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -463,32 +463,32 @@ class FreqtradeBot: Tries to execute buy orders for trades in a safe way """ result = False - try: - whitelist = copy.deepcopy(self.active_pair_whitelist) + + whitelist = copy.deepcopy(self.active_pair_whitelist) + if not whitelist: + logger.info("Active pair whitelist is empty.") + else: + # Remove currently opened and latest pairs from whitelist + for trade in Trade.get_open_trades(): + if trade.pair in whitelist: + whitelist.remove(trade.pair) + logger.debug('Ignoring %s in pair whitelist', trade.pair) if not whitelist: - logger.info("Active pair whitelist is empty.") + logger.info("No currency pair in active pair whitelist, " + "but checking to sell open trades.") else: - # Remove currently opened and latest pairs from whitelist - for trade in Trade.get_open_trades(): - if trade.pair in whitelist: - whitelist.remove(trade.pair) - logger.debug('Ignoring %s in pair whitelist', trade.pair) - - if not whitelist: - logger.info("No currency pair in active pair whitelist, " - "but checking to sell open trades.") - else: - # Create entity and execute trade for each pair from whitelist - for pair in whitelist: + # Create entity and execute trade for each pair from whitelist + for pair in whitelist: + try: if self.create_trade(pair): result = True + except DependencyException as exception: + logger.warning('Unable to create trade: %s', exception) - if not result: - logger.debug('Found no buy signals for whitelisted currencies. Trying again...') - - except DependencyException as exception: - logger.warning('Unable to create trade: %s', exception) + if not result: + logger.debug("Found no buy signals for whitelisted currencies. " + "Trying again...") def process_maybe_execute_sells(self, trades: List[Any]) -> None: """ From d1c45cf3f869968523f5b84e7949efd8130e166d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 29 Dec 2019 13:07:51 +0100 Subject: [PATCH 1379/3421] Update analysis documentation to include kernel installation --- docs/data-analysis.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 115ce1916..8786a1199 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -8,6 +8,27 @@ You can analyze the results of backtests and trading history easily using Jupyte * Don't forget to start a Jupyter notebook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)* * Copy the example notebook before use so your changes don't get clobbered with the next freqtrade update. +### Using virtual environment with System jupyter + +Sometimes it can be desired to use a system-wide installation of Jupyter notebook, and use a jupyter kernel from the virtual environment. +This prevents you from installing the full jupyter suite multiple times per system, and provides an easy way to switch between tasks (freqtrade / other analytics tasks). + +For this to work, first activate your virtual environment and run the following commands: + +``` bash +# Activate virtual environment +source .env/bin/activate + +pip install ipykernel +ipython kernel install --user --name=freqtrade +# Restart jupyter (lab / notebook) +# select kernel "freqtrade" in the notebook +``` + +!!! Note + This section is provided for completeness, the Freqtrade Team won't provide full support for problems with this setup and will recommend to install Jupyter in the virtual environment directly, as that is the easiest way to get up and running. For help with this setup please refer to the [Project Jupyter](https://jupyter.org/) [documentation](https://jupyter.org/documentation) or [help channels](https://jupyter.org/community). + + ## Fine print Some tasks don't work especially well in notebooks. For example, anything using asynchronous execution is a problem for Jupyter. Also, freqtrade's primary entry point is the shell cli, so using pure python in a notebook bypasses arguments that provide required objects and parameters to helper functions. You may need to set those values or create expected objects manually. From 304d15e23694d1dc3ac1f85760dbc3af9996710a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 29 Dec 2019 19:35:42 +0100 Subject: [PATCH 1380/3421] Small corrections --- docs/data-analysis.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index 8786a1199..fc4693b17 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -8,7 +8,7 @@ You can analyze the results of backtests and trading history easily using Jupyte * Don't forget to start a Jupyter notebook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)* * Copy the example notebook before use so your changes don't get clobbered with the next freqtrade update. -### Using virtual environment with System jupyter +### Using virtual environment with system-wide Jupyter installation Sometimes it can be desired to use a system-wide installation of Jupyter notebook, and use a jupyter kernel from the virtual environment. This prevents you from installing the full jupyter suite multiple times per system, and provides an easy way to switch between tasks (freqtrade / other analytics tasks). @@ -26,7 +26,7 @@ ipython kernel install --user --name=freqtrade ``` !!! Note - This section is provided for completeness, the Freqtrade Team won't provide full support for problems with this setup and will recommend to install Jupyter in the virtual environment directly, as that is the easiest way to get up and running. For help with this setup please refer to the [Project Jupyter](https://jupyter.org/) [documentation](https://jupyter.org/documentation) or [help channels](https://jupyter.org/community). + This section is provided for completeness, the Freqtrade Team won't provide full support for problems with this setup and will recommend to install Jupyter in the virtual environment directly, as that is the easiest way to get jupyter notebooks up and running. For help with this setup please refer to the [Project Jupyter](https://jupyter.org/) [documentation](https://jupyter.org/documentation) or [help channels](https://jupyter.org/community). ## Fine print From df7ceb4ccbbfd35fe7eaec2d37dea273b89a4873 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 29 Dec 2019 19:51:47 +0100 Subject: [PATCH 1381/3421] Fix misinformation in /status table --- freqtrade/rpc/rpc.py | 2 +- tests/rpc/test_rpc.py | 2 +- tests/rpc/test_rpc_telegram.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 35c312743..0a79d350b 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -142,7 +142,7 @@ class RPC: def _rpc_status_table(self, stake_currency, fiat_display_currency: str) -> Tuple[List, List]: trades = Trade.get_open_trades() if not trades: - raise RPCException('no active order') + raise RPCException('no active trade') else: trades_list = [] for trade in trades: diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 3b897572c..c5bb0ca2c 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -113,7 +113,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: rpc = RPC(freqtradebot) freqtradebot.state = State.RUNNING - with pytest.raises(RPCException, match=r'.*no active order*'): + with pytest.raises(RPCException, match=r'.*no active trade*'): rpc._rpc_status_table(default_conf['stake_currency'], 'USD') freqtradebot.create_trades() diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index f8b9ca8ab..ddbc35bd5 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -275,13 +275,13 @@ def test_status_table_handle(default_conf, update, ticker, fee, mocker) -> None: # Status table is also enabled when stopped telegram._status_table(update=update, context=MagicMock()) assert msg_mock.call_count == 1 - assert 'no active order' in msg_mock.call_args_list[0][0][0] + assert 'no active trade' in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() freqtradebot.state = State.RUNNING telegram._status_table(update=update, context=MagicMock()) assert msg_mock.call_count == 1 - assert 'no active order' in msg_mock.call_args_list[0][0][0] + assert 'no active trade' in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() # Create some test data From 20a132651f460b3ab00f4e4032173b8c58eb7bba Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2019 07:34:49 +0000 Subject: [PATCH 1382/3421] Bump ccxt from 1.21.12 to 1.21.23 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.21.12 to 1.21.23. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.21.12...1.21.23) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 9d0fd4756..add1ea0fd 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.21.12 +ccxt==1.21.23 SQLAlchemy==1.3.12 python-telegram-bot==12.2.0 arrow==0.15.4 From de23f3928de5639a01efe424e5040354196c59e8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 30 Dec 2019 09:56:42 +0100 Subject: [PATCH 1383/3421] Add trailing_only_offset to template and sample --- freqtrade/templates/base_strategy.py.j2 | 1 + freqtrade/templates/sample_strategy.py | 1 + 2 files changed, 2 insertions(+) diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index 73a4c7a5a..32573ec9e 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -47,6 +47,7 @@ class {{ strategy }}(IStrategy): # Trailing stoploss trailing_stop = False + # trailing_only_offset_is_reached = False # trailing_stop_positive = 0.01 # trailing_stop_positive_offset = 0.0 # Disabled / not configured diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index 02bf24e7e..228e56b82 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -48,6 +48,7 @@ class SampleStrategy(IStrategy): # Trailing stoploss trailing_stop = False + # trailing_only_offset_is_reached = False # trailing_stop_positive = 0.01 # trailing_stop_positive_offset = 0.0 # Disabled / not configured From 4c9295fe2d657fdf373601ea8d2350fb1990ebc8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 30 Dec 2019 14:00:34 +0100 Subject: [PATCH 1384/3421] Rename Bid-strategy helpervariable to something shorter avoids unnecessary wrapping... --- freqtrade/freqtradebot.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e47a4a85c..68091ed76 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -313,7 +313,7 @@ class FreqtradeBot: if buy and not sell: if not self.get_free_open_trades(): - logger.debug("Can't open a new trade: max number of trades is reached") + logger.debug("Can't open a new trade: max number of trades is reached.") return False stake_amount = self.get_trade_stake_amount(pair) @@ -324,11 +324,10 @@ class FreqtradeBot: logger.info(f"Buy signal found: about create a new trade with stake_amount: " f"{stake_amount} ...") - bidstrat_check_depth_of_market = self.config.get('bid_strategy', {}).\ - get('check_depth_of_market', {}) - if (bidstrat_check_depth_of_market.get('enabled', False)) and\ - (bidstrat_check_depth_of_market.get('bids_to_ask_delta', 0) > 0): - if self._check_depth_of_market_buy(pair, bidstrat_check_depth_of_market): + bid_check_dom = self.config.get('bid_strategy', {}).get('check_depth_of_market', {}) + if ((bid_check_dom.get('enabled', False)) and + (bid_check_dom.get('bids_to_ask_delta', 0) > 0)): + if self._check_depth_of_market_buy(pair, bid_check_dom): return self.execute_buy(pair, stake_amount) else: return False From fb3a53b8af27c49eb4c8a26c271437a581dd187e Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 30 Dec 2019 14:28:34 +0100 Subject: [PATCH 1385/3421] Use ExchangeResolver for edge_cli too --- freqtrade/optimize/edge_cli.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py index ea5cc663d..4944f1dbb 100644 --- a/freqtrade/optimize/edge_cli.py +++ b/freqtrade/optimize/edge_cli.py @@ -12,8 +12,7 @@ from freqtrade import constants from freqtrade.configuration import (TimeRange, remove_credentials, validate_config_consistency) from freqtrade.edge import Edge -from freqtrade.exchange import Exchange -from freqtrade.resolvers import StrategyResolver +from freqtrade.resolvers import StrategyResolver, ExchangeResolver logger = logging.getLogger(__name__) @@ -33,7 +32,7 @@ class EdgeCli: # Reset keys for edge remove_credentials(self.config) self.config['stake_amount'] = constants.UNLIMITED_STAKE_AMOUNT - self.exchange = Exchange(self.config) + self.exchange = ExchangeResolver.load_exchange(self.config['exchange']['name'], self.config) self.strategy = StrategyResolver.load_strategy(self.config) validate_config_consistency(self.config) From 20abf67779a1c9f778e6339df0abd0af63433154 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 30 Dec 2019 14:29:36 +0100 Subject: [PATCH 1386/3421] Add Debug "code" for randomly failing test --- tests/test_utils.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/test_utils.py b/tests/test_utils.py index 4cf7b5f23..8545eb817 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -448,6 +448,9 @@ def test_create_datadir(caplog, mocker): # Ensure that caplog is empty before starting ... # Should prevent random failures. caplog.clear() + # Added assert here to analyze random test-failures ... + assert len(caplog.record_tuples) == 0 + cud = mocker.patch("freqtrade.utils.create_userdata_dir", MagicMock()) csf = mocker.patch("freqtrade.utils.copy_sample_files", MagicMock()) args = [ From 024aa3ab6b6e5e0ba11bf7cfe0035cb83423bbf3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 30 Dec 2019 14:57:26 +0100 Subject: [PATCH 1387/3421] Move exceptions to seperate module --- freqtrade/__init__.py | 31 ------------------------------- freqtrade/exceptions.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 31 deletions(-) create mode 100644 freqtrade/exceptions.py diff --git a/freqtrade/__init__.py b/freqtrade/__init__.py index 83fee0b0d..e1f65d4fe 100644 --- a/freqtrade/__init__.py +++ b/freqtrade/__init__.py @@ -11,34 +11,3 @@ if __version__ == 'develop': except Exception: # git not available, ignore pass - - -class DependencyException(Exception): - """ - Indicates that an assumed dependency is not met. - This could happen when there is currently not enough money on the account. - """ - - -class OperationalException(Exception): - """ - Requires manual intervention and will usually stop the bot. - This happens when an exchange returns an unexpected error during runtime - or given configuration is invalid. - """ - - -class InvalidOrderException(Exception): - """ - This is returned when the order is not valid. Example: - If stoploss on exchange order is hit, then trying to cancel the order - should return this exception. - """ - - -class TemporaryError(Exception): - """ - Temporary network or exchange related error. - This could happen when an exchange is congested, unavailable, or the user - has networking problems. Usually resolves itself after a time. - """ diff --git a/freqtrade/exceptions.py b/freqtrade/exceptions.py new file mode 100644 index 000000000..80d45dd86 --- /dev/null +++ b/freqtrade/exceptions.py @@ -0,0 +1,31 @@ + + +class DependencyException(Exception): + """ + Indicates that an assumed dependency is not met. + This could happen when there is currently not enough money on the account. + """ + + +class OperationalException(Exception): + """ + Requires manual intervention and will usually stop the bot. + This happens when an exchange returns an unexpected error during runtime + or given configuration is invalid. + """ + + +class InvalidOrderException(Exception): + """ + This is returned when the order is not valid. Example: + If stoploss on exchange order is hit, then trying to cancel the order + should return this exception. + """ + + +class TemporaryError(Exception): + """ + Temporary network or exchange related error. + This could happen when an exchange is congested, unavailable, or the user + has networking problems. Usually resolves itself after a time. + """ From 1ffda29fd2aeb95cffedfaded274c4d07e404436 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 30 Dec 2019 15:02:17 +0100 Subject: [PATCH 1388/3421] Adjust improts to new exception location --- freqtrade/configuration/check_exchange.py | 4 ++-- freqtrade/configuration/config_validation.py | 3 ++- freqtrade/configuration/configuration.py | 5 +++-- freqtrade/configuration/deprecated_settings.py | 2 +- freqtrade/configuration/directory_operations.py | 2 +- freqtrade/configuration/load_config.py | 2 +- freqtrade/data/history.py | 6 ++++-- freqtrade/edge/__init__.py | 4 ++-- freqtrade/exchange/binance.py | 4 ++-- freqtrade/exchange/common.py | 2 +- freqtrade/exchange/exchange.py | 4 ++-- freqtrade/exchange/kraken.py | 2 +- freqtrade/freqtradebot.py | 6 +++--- freqtrade/loggers.py | 2 +- freqtrade/main.py | 2 +- freqtrade/optimize/__init__.py | 4 ++-- freqtrade/optimize/backtesting.py | 2 +- freqtrade/optimize/hyperopt.py | 6 +++--- freqtrade/optimize/hyperopt_interface.py | 6 ++---- freqtrade/pairlist/VolumePairList.py | 2 +- freqtrade/pairlist/pairlistmanager.py | 5 +++-- freqtrade/persistence.py | 2 +- freqtrade/plot/plot_utils.py | 2 +- freqtrade/resolvers/hyperopt_resolver.py | 2 +- freqtrade/resolvers/iresolver.py | 2 +- freqtrade/resolvers/strategy_resolver.py | 2 +- freqtrade/rpc/rpc.py | 2 +- freqtrade/utils.py | 2 +- freqtrade/worker.py | 4 ++-- tests/edge/test_edge.py | 2 +- tests/exchange/test_binance.py | 4 ++-- tests/exchange/test_exchange.py | 4 ++-- tests/optimize/test_backtesting.py | 4 ++-- tests/optimize/test_hyperopt.py | 2 +- tests/pairlist/test_pairlist.py | 2 +- tests/rpc/test_rpc.py | 4 ++-- tests/strategy/test_strategy.py | 2 +- tests/test_configuration.py | 2 +- tests/test_directory_operations.py | 2 +- tests/test_freqtradebot.py | 10 +++++----- tests/test_main.py | 2 +- tests/test_persistence.py | 3 ++- tests/test_plotting.py | 6 +++--- tests/test_utils.py | 2 +- 44 files changed, 74 insertions(+), 70 deletions(-) diff --git a/freqtrade/configuration/check_exchange.py b/freqtrade/configuration/check_exchange.py index c739de692..0076b1c5d 100644 --- a/freqtrade/configuration/check_exchange.py +++ b/freqtrade/configuration/check_exchange.py @@ -1,9 +1,9 @@ import logging from typing import Any, Dict -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException from freqtrade.exchange import (available_exchanges, get_exchange_bad_reason, - is_exchange_known_ccxt, is_exchange_bad, + is_exchange_bad, is_exchange_known_ccxt, is_exchange_officially_supported) from freqtrade.state import RunMode diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 068364884..43eead46a 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -4,7 +4,8 @@ from typing import Any, Dict from jsonschema import Draft4Validator, validators from jsonschema.exceptions import ValidationError, best_match -from freqtrade import constants, OperationalException +from freqtrade import constants +from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode logger = logging.getLogger(__name__) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index f73b52c10..a8b7638c8 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -7,15 +7,16 @@ from copy import deepcopy from pathlib import Path from typing import Any, Callable, Dict, List, Optional -from freqtrade import OperationalException, constants +from freqtrade import constants from freqtrade.configuration.check_exchange import check_exchange from freqtrade.configuration.deprecated_settings import process_temporary_deprecated_settings from freqtrade.configuration.directory_operations import (create_datadir, create_userdata_dir) from freqtrade.configuration.load_config import load_config_file +from freqtrade.exceptions import OperationalException from freqtrade.loggers import setup_logging from freqtrade.misc import deep_merge_dicts, json_load -from freqtrade.state import RunMode, TRADING_MODES, NON_UTIL_MODES +from freqtrade.state import NON_UTIL_MODES, TRADING_MODES, RunMode logger = logging.getLogger(__name__) diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index b1e3535a3..260aae419 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -5,7 +5,7 @@ Functions to handle deprecated settings import logging from typing import Any, Dict -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException logger = logging.getLogger(__name__) diff --git a/freqtrade/configuration/directory_operations.py b/freqtrade/configuration/directory_operations.py index 556f27742..43a209483 100644 --- a/freqtrade/configuration/directory_operations.py +++ b/freqtrade/configuration/directory_operations.py @@ -3,7 +3,7 @@ import shutil from pathlib import Path from typing import Any, Dict, Optional -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException from freqtrade.constants import USER_DATA_FILES logger = logging.getLogger(__name__) diff --git a/freqtrade/configuration/load_config.py b/freqtrade/configuration/load_config.py index 7a3ca1798..19179c6c3 100644 --- a/freqtrade/configuration/load_config.py +++ b/freqtrade/configuration/load_config.py @@ -6,7 +6,7 @@ import logging import sys from typing import Any, Dict -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException logger = logging.getLogger(__name__) diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 4c5c0521f..30d168f78 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -16,10 +16,12 @@ from typing import Any, Dict, List, Optional, Tuple import arrow from pandas import DataFrame -from freqtrade import OperationalException, misc +from freqtrade import misc from freqtrade.configuration import TimeRange from freqtrade.data.converter import parse_ticker_dataframe, trades_to_ohlcv -from freqtrade.exchange import Exchange, timeframe_to_minutes, timeframe_to_seconds +from freqtrade.exceptions import OperationalException +from freqtrade.exchange import (Exchange, timeframe_to_minutes, + timeframe_to_seconds) logger = logging.getLogger(__name__) diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index 9ad2485ef..19d65d9d7 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -8,12 +8,12 @@ import numpy as np import utils_find_1st as utf1st from pandas import DataFrame -from freqtrade import constants, OperationalException +from freqtrade import constants from freqtrade.configuration import TimeRange from freqtrade.data import history +from freqtrade.exceptions import OperationalException from freqtrade.strategy.interface import SellType - logger = logging.getLogger(__name__) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index b5507981f..96f72fcf5 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -4,8 +4,8 @@ from typing import Dict import ccxt -from freqtrade import (DependencyException, InvalidOrderException, - OperationalException, TemporaryError) +from freqtrade.exceptions import (DependencyException, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.exchange import Exchange logger = logging.getLogger(__name__) diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index ed30b95c7..b38ed35a3 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -1,6 +1,6 @@ import logging -from freqtrade import DependencyException, TemporaryError +from freqtrade.exceptions import DependencyException, TemporaryError logger = logging.getLogger(__name__) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 01e84c06e..3ef32db62 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -17,9 +17,9 @@ import ccxt.async_support as ccxt_async from ccxt.base.decimal_to_precision import ROUND_DOWN, ROUND_UP from pandas import DataFrame -from freqtrade import (DependencyException, InvalidOrderException, - OperationalException, TemporaryError) from freqtrade.data.converter import parse_ticker_dataframe +from freqtrade.exceptions import (DependencyException, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async from freqtrade.misc import deep_merge_dicts diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index f548489bc..9bcd9cc1f 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -4,7 +4,7 @@ from typing import Dict import ccxt -from freqtrade import OperationalException, TemporaryError +from freqtrade.exceptions import OperationalException, TemporaryError from freqtrade.exchange import Exchange from freqtrade.exchange.exchange import retrier diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 90eb7beba..f33a8cd03 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -12,17 +12,17 @@ from typing import Any, Dict, List, Optional, Tuple import arrow from requests.exceptions import RequestException -from freqtrade import (DependencyException, InvalidOrderException, __version__, - constants, persistence) +from freqtrade import __version__, constants, persistence from freqtrade.configuration import validate_config_consistency from freqtrade.data.converter import order_book_to_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.edge import Edge +from freqtrade.exceptions import DependencyException, InvalidOrderException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date +from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.rpc import RPCManager, RPCMessageType -from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.state import State from freqtrade.strategy.interface import IStrategy, SellType from freqtrade.wallets import Wallets diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index 27f16ecc3..c69388430 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -5,7 +5,7 @@ from logging import Formatter from logging.handlers import RotatingFileHandler, SysLogHandler from typing import Any, Dict, List -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException logger = logging.getLogger(__name__) diff --git a/freqtrade/main.py b/freqtrade/main.py index 7afaeb1a2..62d2fc05d 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -13,8 +13,8 @@ if sys.version_info < (3, 6): import logging from typing import Any, List -from freqtrade import OperationalException from freqtrade.configuration import Arguments +from freqtrade.exceptions import OperationalException logger = logging.getLogger('freqtrade') diff --git a/freqtrade/optimize/__init__.py b/freqtrade/optimize/__init__.py index 1f2f588ef..34760372f 100644 --- a/freqtrade/optimize/__init__.py +++ b/freqtrade/optimize/__init__.py @@ -1,11 +1,11 @@ import logging from typing import Any, Dict -from freqtrade import DependencyException, constants, OperationalException +from freqtrade import constants +from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.state import RunMode from freqtrade.utils import setup_utils_configuration - logger = logging.getLogger(__name__) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index a8fe90a06..9bd0327e0 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -12,11 +12,11 @@ from typing import Any, Dict, List, NamedTuple, Optional from pandas import DataFrame from tabulate import tabulate -from freqtrade import OperationalException from freqtrade.configuration import (TimeRange, remove_credentials, validate_config_consistency) from freqtrade.data import history from freqtrade.data.dataprovider import DataProvider +from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds from freqtrade.misc import file_dump_json from freqtrade.persistence import Trade diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 48f883ac5..a8f1a71ef 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -22,13 +22,13 @@ from joblib import (Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects) from pandas import DataFrame -from freqtrade import OperationalException from freqtrade.data.history import get_timerange, trim_dataframe +from freqtrade.exceptions import OperationalException from freqtrade.misc import plural, round_dict from freqtrade.optimize.backtesting import Backtesting # Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules -from freqtrade.optimize.hyperopt_interface import IHyperOpt # noqa: F4 -from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss # noqa: F4 +from freqtrade.optimize.hyperopt_interface import IHyperOpt # noqa: F401 +from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss # noqa: F401 from freqtrade.resolvers.hyperopt_resolver import (HyperOptLossResolver, HyperOptResolver) diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 856f3eee7..d7d917c19 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -4,17 +4,15 @@ This module defines the interface to apply for hyperopt """ import logging import math - from abc import ABC -from typing import Dict, Any, Callable, List +from typing import Any, Callable, Dict, List from skopt.space import Categorical, Dimension, Integer, Real -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import round_dict - logger = logging.getLogger(__name__) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 2df9ba691..4ac9935ba 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -8,7 +8,7 @@ import logging from datetime import datetime from typing import Dict, List -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException from freqtrade.pairlist.IPairList import IPairList logger = logging.getLogger(__name__) diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 1530710d2..55828c6ef 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -4,11 +4,12 @@ Static List provider Provides lists as configured in config.json """ -from cachetools import TTLCache, cached import logging from typing import Dict, List -from freqtrade import OperationalException +from cachetools import TTLCache, cached + +from freqtrade.exceptions import OperationalException from freqtrade.pairlist.IPairList import IPairList from freqtrade.resolvers import PairListResolver diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 993b68bc7..75116f1e3 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -16,7 +16,7 @@ from sqlalchemy.orm.scoping import scoped_session from sqlalchemy.orm.session import sessionmaker from sqlalchemy.pool import StaticPool -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException logger = logging.getLogger(__name__) diff --git a/freqtrade/plot/plot_utils.py b/freqtrade/plot/plot_utils.py index 8de0eb9e7..9eff08396 100644 --- a/freqtrade/plot/plot_utils.py +++ b/freqtrade/plot/plot_utils.py @@ -1,6 +1,6 @@ from typing import Any, Dict -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode from freqtrade.utils import setup_utils_configuration diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index c26fd09f2..ddf461252 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -7,8 +7,8 @@ import logging from pathlib import Path from typing import Dict -from freqtrade import OperationalException from freqtrade.constants import DEFAULT_HYPEROPT_LOSS, USERPATH_HYPEROPTS +from freqtrade.exceptions import OperationalException from freqtrade.optimize.hyperopt_interface import IHyperOpt from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss from freqtrade.resolvers import IResolver diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index e3c0d1ad0..5a844097c 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -9,7 +9,7 @@ import logging from pathlib import Path from typing import Any, Dict, Generator, List, Optional, Tuple, Type, Union -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException logger = logging.getLogger(__name__) diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 4fd5c586a..9e64f38df 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -11,9 +11,9 @@ from inspect import getfullargspec from pathlib import Path from typing import Dict, Optional -from freqtrade import OperationalException from freqtrade.constants import (REQUIRED_ORDERTIF, REQUIRED_ORDERTYPES, USERPATH_STRATEGY) +from freqtrade.exceptions import OperationalException from freqtrade.resolvers import IResolver from freqtrade.strategy.interface import IStrategy diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 0a79d350b..c187dae4f 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -11,7 +11,7 @@ from typing import Any, Dict, List, Optional, Tuple import arrow from numpy import NAN, mean -from freqtrade import DependencyException, TemporaryError +from freqtrade.exceptions import DependencyException, TemporaryError from freqtrade.misc import shorten_date from freqtrade.persistence import Trade from freqtrade.rpc.fiat_convert import CryptoToFiatConverter diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 5a5662e4b..45520ecf7 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -11,7 +11,6 @@ import rapidjson from colorama import init as colorama_init from tabulate import tabulate -from freqtrade import OperationalException from freqtrade.configuration import (Configuration, TimeRange, remove_credentials) from freqtrade.configuration.directory_operations import (copy_sample_files, @@ -20,6 +19,7 @@ from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGY from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data, refresh_backtest_trades_data) +from freqtrade.exceptions import OperationalException from freqtrade.exchange import (available_exchanges, ccxt_exchanges, market_is_active, symbol_is_pair) from freqtrade.misc import plural, render_template diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 8e4be9d43..22651d269 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -8,9 +8,9 @@ from typing import Any, Callable, Dict, Optional import sdnotify -from freqtrade import (OperationalException, TemporaryError, __version__, - constants) +from freqtrade import __version__, constants from freqtrade.configuration import Configuration +from freqtrade.exceptions import OperationalException, TemporaryError from freqtrade.freqtradebot import FreqtradeBot from freqtrade.rpc import RPCMessageType from freqtrade.state import State diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index 3a866c0a8..ef1280fa4 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -10,7 +10,7 @@ import numpy as np import pytest from pandas import DataFrame, to_datetime -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.edge import Edge, PairInfo from freqtrade.strategy.interface import SellType diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index 7720a7d2e..0a12c1cb1 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -4,8 +4,8 @@ from unittest.mock import MagicMock import ccxt import pytest -from freqtrade import (DependencyException, InvalidOrderException, - OperationalException, TemporaryError) +from freqtrade.exceptions import (DependencyException, InvalidOrderException, + OperationalException, TemporaryError) from tests.conftest import get_patched_exchange diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 2f95e4e01..cb40bdbd9 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -11,8 +11,8 @@ import ccxt import pytest from pandas import DataFrame -from freqtrade import (DependencyException, InvalidOrderException, - OperationalException, TemporaryError) +from freqtrade.exceptions import (DependencyException, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.exchange import Binance, Exchange, Kraken from freqtrade.exchange.common import API_RETRY_COUNT from freqtrade.exchange.exchange import (market_is_active, symbol_is_pair, diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 8a27c591f..4e2fd01cf 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -10,13 +10,14 @@ import pandas as pd import pytest from arrow import Arrow -from freqtrade import DependencyException, OperationalException, constants +from freqtrade import constants from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import evaluate_result_multi from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import get_timerange +from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.optimize import setup_configuration, start_backtesting from freqtrade.optimize.backtesting import Backtesting from freqtrade.state import RunMode @@ -25,7 +26,6 @@ from freqtrade.strategy.interface import SellType from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, patched_configuration_load_config_file) - ORDER_TYPES = [ { 'buy': 'limit', diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index fb492be35..473d760ac 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -9,7 +9,7 @@ import pytest from arrow import Arrow from filelock import Timeout -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.history import load_tickerdata_file from freqtrade.optimize import setup_configuration, start_hyperopt diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 21929de2b..ac4cbc813 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -4,7 +4,7 @@ from unittest.mock import MagicMock, PropertyMock import pytest -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException from freqtrade.constants import AVAILABLE_PAIRLISTS from freqtrade.resolvers import PairListResolver from freqtrade.pairlist.pairlistmanager import PairListManager diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index c5bb0ca2c..31632bd70 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -7,13 +7,13 @@ from unittest.mock import ANY, MagicMock, PropertyMock import pytest from numpy import isnan -from freqtrade import DependencyException, TemporaryError from freqtrade.edge import PairInfo +from freqtrade.exceptions import DependencyException, TemporaryError from freqtrade.persistence import Trade from freqtrade.rpc import RPC, RPCException from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.state import State -from tests.conftest import patch_get_signal, get_patched_freqtradebot +from tests.conftest import get_patched_freqtradebot, patch_get_signal # Functions for recurrent object patching diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 10b9f3466..d3977ae44 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -8,7 +8,7 @@ from pathlib import Path import pytest from pandas import DataFrame -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException from freqtrade.resolvers import StrategyResolver from freqtrade.strategy.interface import IStrategy from tests.conftest import log_has, log_has_re diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 6564417b3..ee3d23131 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -10,7 +10,6 @@ from unittest.mock import MagicMock import pytest from jsonschema import ValidationError -from freqtrade import OperationalException from freqtrade.configuration import (Arguments, Configuration, check_exchange, remove_credentials, validate_config_consistency) @@ -20,6 +19,7 @@ from freqtrade.configuration.deprecated_settings import ( process_temporary_deprecated_settings) from freqtrade.configuration.load_config import load_config_file from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL +from freqtrade.exceptions import OperationalException from freqtrade.loggers import _set_loggers, setup_logging from freqtrade.state import RunMode from tests.conftest import (log_has, log_has_re, diff --git a/tests/test_directory_operations.py b/tests/test_directory_operations.py index db41e2da2..889338a64 100644 --- a/tests/test_directory_operations.py +++ b/tests/test_directory_operations.py @@ -4,10 +4,10 @@ from unittest.mock import MagicMock import pytest -from freqtrade import OperationalException from freqtrade.configuration.directory_operations import (copy_sample_files, create_datadir, create_userdata_dir) +from freqtrade.exceptions import OperationalException from tests.conftest import log_has, log_has_re diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 2f8c786fd..3f5b7bd54 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -11,9 +11,9 @@ import arrow import pytest import requests -from freqtrade import (DependencyException, InvalidOrderException, - OperationalException, TemporaryError, constants) -from freqtrade.constants import MATH_CLOSE_PREC +from freqtrade.constants import MATH_CLOSE_PREC, UNLIMITED_STAKE_AMOUNT +from freqtrade.exceptions import (DependencyException, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import Trade from freqtrade.rpc import RPCMessageType @@ -163,7 +163,7 @@ def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, ) conf = deepcopy(default_conf) - conf['stake_amount'] = constants.UNLIMITED_STAKE_AMOUNT + conf['stake_amount'] = UNLIMITED_STAKE_AMOUNT conf['max_open_trades'] = 2 freqtrade = FreqtradeBot(conf) @@ -564,7 +564,7 @@ def test_create_trades_limit_reached(default_conf, ticker, limit_buy_order, get_fee=fee, ) default_conf['max_open_trades'] = 0 - default_conf['stake_amount'] = constants.UNLIMITED_STAKE_AMOUNT + default_conf['stake_amount'] = UNLIMITED_STAKE_AMOUNT freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) diff --git a/tests/test_main.py b/tests/test_main.py index 03e6a7ce9..83be01999 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -5,8 +5,8 @@ from unittest.mock import MagicMock, PropertyMock import pytest -from freqtrade import OperationalException from freqtrade.configuration import Arguments +from freqtrade.exceptions import OperationalException from freqtrade.freqtradebot import FreqtradeBot from freqtrade.main import main from freqtrade.state import State diff --git a/tests/test_persistence.py b/tests/test_persistence.py index b9a636e1a..6bd7971a7 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -6,7 +6,8 @@ import arrow import pytest from sqlalchemy import create_engine -from freqtrade import OperationalException, constants +from freqtrade import constants +from freqtrade.exceptions import OperationalException from freqtrade.persistence import Trade, clean_dry_run_db, init from tests.conftest import log_has diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 31502cafc..9934d2493 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -7,17 +7,17 @@ import plotly.graph_objects as go import pytest from plotly.subplots import make_subplots -from freqtrade import OperationalException from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import create_cum_profit, load_backtest_data +from freqtrade.exceptions import OperationalException from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit from freqtrade.plot.plotting import (add_indicators, add_profit, - load_and_plot_trades, generate_candlestick_graph, generate_plot_filename, generate_profit_graph, init_plotscript, - plot_profit, plot_trades, store_plot_file) + load_and_plot_trades, plot_profit, + plot_trades, store_plot_file) from freqtrade.strategy.default_strategy import DefaultStrategy from tests.conftest import get_args, log_has, log_has_re diff --git a/tests/test_utils.py b/tests/test_utils.py index 4cf7b5f23..2e2499337 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -4,7 +4,7 @@ from unittest.mock import MagicMock, PropertyMock import pytest -from freqtrade import OperationalException +from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode from freqtrade.utils import (setup_utils_configuration, start_create_userdir, start_download_data, start_hyperopt_list, From 8e9a3e8fc8e5de762455ca7472c81e5ad15f8591 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 30 Dec 2019 15:11:07 +0100 Subject: [PATCH 1389/3421] Capture FtBaseException at the outermost level --- freqtrade/exceptions.py | 28 +++++++++++++++++----------- freqtrade/main.py | 4 ++-- tests/test_main.py | 4 ++-- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/freqtrade/exceptions.py b/freqtrade/exceptions.py index 80d45dd86..2f05ddb57 100644 --- a/freqtrade/exceptions.py +++ b/freqtrade/exceptions.py @@ -1,21 +1,27 @@ -class DependencyException(Exception): +class FreqtradeException(Exception): + """ + Freqtrade base exception. Handled at the outermost level. + All other exception types are subclasses of this exception type. + """ + + +class OperationalException(FreqtradeException): + """ + Requires manual intervention and will stop the bot. + Most of the time, this is caused by an invalid Configuration. + """ + + +class DependencyException(FreqtradeException): """ Indicates that an assumed dependency is not met. This could happen when there is currently not enough money on the account. """ -class OperationalException(Exception): - """ - Requires manual intervention and will usually stop the bot. - This happens when an exchange returns an unexpected error during runtime - or given configuration is invalid. - """ - - -class InvalidOrderException(Exception): +class InvalidOrderException(FreqtradeException): """ This is returned when the order is not valid. Example: If stoploss on exchange order is hit, then trying to cancel the order @@ -23,7 +29,7 @@ class InvalidOrderException(Exception): """ -class TemporaryError(Exception): +class TemporaryError(FreqtradeException): """ Temporary network or exchange related error. This could happen when an exchange is congested, unavailable, or the user diff --git a/freqtrade/main.py b/freqtrade/main.py index 62d2fc05d..811e29864 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -4,6 +4,7 @@ Main Freqtrade bot script. Read the documentation to know what cli arguments you need. """ +from freqtrade.exceptions import FreqtradeException, OperationalException import sys # check min. python version if sys.version_info < (3, 6): @@ -14,7 +15,6 @@ import logging from typing import Any, List from freqtrade.configuration import Arguments -from freqtrade.exceptions import OperationalException logger = logging.getLogger('freqtrade') @@ -50,7 +50,7 @@ def main(sysargv: List[str] = None) -> None: except KeyboardInterrupt: logger.info('SIGINT received, aborting ...') return_code = 0 - except OperationalException as e: + except FreqtradeException as e: logger.error(str(e)) return_code = 2 except Exception: diff --git a/tests/test_main.py b/tests/test_main.py index 83be01999..76b1bf658 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -6,7 +6,7 @@ from unittest.mock import MagicMock, PropertyMock import pytest from freqtrade.configuration import Arguments -from freqtrade.exceptions import OperationalException +from freqtrade.exceptions import OperationalException, FreqtradeException from freqtrade.freqtradebot import FreqtradeBot from freqtrade.main import main from freqtrade.state import State @@ -96,7 +96,7 @@ def test_main_operational_exception(mocker, default_conf, caplog) -> None: mocker.patch('freqtrade.freqtradebot.FreqtradeBot.cleanup', MagicMock()) mocker.patch( 'freqtrade.worker.Worker._worker', - MagicMock(side_effect=OperationalException('Oh snap!')) + MagicMock(side_effect=FreqtradeException('Oh snap!')) ) patched_configuration_load_config_file(mocker, default_conf) mocker.patch('freqtrade.wallets.Wallets.update', MagicMock()) From 4d56e3b36e02d2fb8bd41bde5cbf0fabc0cd7a28 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 30 Dec 2019 20:54:32 +0300 Subject: [PATCH 1390/3421] Address some comments made in the review --- freqtrade/freqtradebot.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 68091ed76..3bfa74005 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -296,8 +296,11 @@ class FreqtradeBot: def create_trade(self, pair: str) -> bool: """ - Check the implemented trading strategy for buy-signals. - If the pair triggers the buy_signal a new trade record gets created. + Check the implemented trading strategy for buy signals. + + If the pair triggers the buy signal a new trade record gets created + and the buy-order opening the trade gets issued towards the exchange. + :return: True if a trade has been created. """ logger.debug(f"create_trade for pair {pair}") @@ -467,7 +470,7 @@ class FreqtradeBot: if not whitelist: logger.info("Active pair whitelist is empty.") else: - # Remove currently opened and latest pairs from whitelist + # Remove pairs for currently opened trades from the whitelist for trade in Trade.get_open_trades(): if trade.pair in whitelist: whitelist.remove(trade.pair) From b00406a7eb0e73f2b104598441958782d4c95497 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 30 Dec 2019 21:09:35 +0300 Subject: [PATCH 1391/3421] Make process_maybe_execute_*() returning integers --- freqtrade/freqtradebot.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 3bfa74005..e6f51e5fa 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -460,11 +460,11 @@ class FreqtradeBot: return True - def process_maybe_execute_buys(self) -> None: + def process_maybe_execute_buys(self) -> int: """ Tries to execute buy orders for trades in a safe way """ - result = False + trades_created = 0 whitelist = copy.deepcopy(self.active_pair_whitelist) if not whitelist: @@ -483,39 +483,42 @@ class FreqtradeBot: # Create entity and execute trade for each pair from whitelist for pair in whitelist: try: - if self.create_trade(pair): - result = True + trades_created += self.create_trade(pair) except DependencyException as exception: logger.warning('Unable to create trade: %s', exception) - if not result: + if not trades_created: logger.debug("Found no buy signals for whitelisted currencies. " "Trying again...") - def process_maybe_execute_sells(self, trades: List[Any]) -> None: + return trades_created + + def process_maybe_execute_sells(self, trades: List[Any]) -> int: """ Tries to execute sell orders for trades in a safe way """ - result = False + trades_closed = 0 for trade in trades: try: self.update_trade_state(trade) if (self.strategy.order_types.get('stoploss_on_exchange') and self.handle_stoploss_on_exchange(trade)): - result = True + trades_closed += 1 continue # Check if we can sell our current pair if trade.open_order_id is None and self.handle_trade(trade): - result = True + trades_closed += 1 except DependencyException as exception: logger.warning('Unable to sell trade: %s', exception) # Updating wallets if any trade occured - if result: + if trades_closed: self.wallets.update() + return trades_closed + def get_real_amount(self, trade: Trade, order: Dict, order_amount: float = None) -> float: """ Get real amount for the trade From 84918ad42481a7558bd935a1639b29de5f317931 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 30 Dec 2019 22:08:36 +0300 Subject: [PATCH 1392/3421] Rename process_maybe_execute_sells() --> exit_positions() --- freqtrade/freqtradebot.py | 8 ++++---- tests/test_freqtradebot.py | 22 ++++++++++++---------- tests/test_integration.py | 6 ++++-- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e6f51e5fa..695302bf9 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -132,8 +132,8 @@ class FreqtradeBot: self.dataprovider.refresh(self._create_pair_whitelist(self.active_pair_whitelist), self.strategy.informative_pairs()) - # First process current opened trades - self.process_maybe_execute_sells(trades) + # First process current opened trades (positions) + self.exit_positions(trades) # Then looking for buy opportunities if self.get_free_open_trades(): @@ -493,9 +493,9 @@ class FreqtradeBot: return trades_created - def process_maybe_execute_sells(self, trades: List[Any]) -> int: + def exit_positions(self, trades: List[Any]) -> int: """ - Tries to execute sell orders for trades in a safe way + Tries to execute sell orders for open trades (positions) """ trades_closed = 0 for trade in trades: diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index be6a9b392..22110dd1c 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -990,7 +990,7 @@ def test_add_stoploss_on_exchange(mocker, default_conf, limit_buy_order) -> None trade.is_open = True trades = [trade] - freqtrade.process_maybe_execute_sells(trades) + freqtrade.exit_positions(trades) assert trade.stoploss_order_id == '13434334' assert stoploss_limit.call_count == 1 assert trade.is_open is True @@ -1463,7 +1463,7 @@ def test_process_maybe_execute_buys_exception(mocker, default_conf, caplog) -> N assert log_has('Unable to create trade: ', caplog) -def test_process_maybe_execute_sells(mocker, default_conf, limit_buy_order, caplog) -> None: +def test_exit_positions(mocker, default_conf, limit_buy_order, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_trade', MagicMock(return_value=True)) @@ -1476,7 +1476,8 @@ def test_process_maybe_execute_sells(mocker, default_conf, limit_buy_order, capl trade.open_order_id = '123' trade.open_fee = 0.001 trades = [trade] - assert not freqtrade.process_maybe_execute_sells(trades) + n = freqtrade.exit_positions(trades) + assert n == 0 # Test amount not modified by fee-logic assert not log_has( 'Applying fee to amount for Trade {} from 90.99181073 to 90.81'.format(trade), caplog @@ -1484,11 +1485,11 @@ def test_process_maybe_execute_sells(mocker, default_conf, limit_buy_order, capl mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_real_amount', return_value=90.81) # test amount modified by fee-logic - assert not freqtrade.process_maybe_execute_sells(trades) + n = freqtrade.exit_positions(trades) + assert n == 0 -def test_process_maybe_execute_sells_exception(mocker, default_conf, - limit_buy_order, caplog) -> None: +def test_exit_positions_exception(mocker, default_conf, limit_buy_order, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.exchange.Exchange.get_order', return_value=limit_buy_order) @@ -1502,7 +1503,8 @@ def test_process_maybe_execute_sells_exception(mocker, default_conf, 'freqtrade.freqtradebot.FreqtradeBot.update_trade_state', side_effect=DependencyException() ) - freqtrade.process_maybe_execute_sells(trades) + n = freqtrade.exit_positions(trades) + assert n == 0 assert log_has('Unable to sell trade: ', caplog) @@ -2391,7 +2393,7 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, ticker, fee, ticke assert trade trades = [trade] - freqtrade.process_maybe_execute_sells(trades) + freqtrade.exit_positions(trades) # Increase the price and sell it mocker.patch.multiple( @@ -2438,7 +2440,7 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, f freqtrade.process_maybe_execute_buys() trade = Trade.query.first() trades = [trade] - freqtrade.process_maybe_execute_sells(trades) + freqtrade.exit_positions(trades) assert trade assert trade.stoploss_order_id == '123' assert trade.open_order_id is None @@ -2466,7 +2468,7 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, f }) mocker.patch('freqtrade.exchange.Exchange.get_order', stoploss_limit_executed) - freqtrade.process_maybe_execute_sells(trades) + freqtrade.exit_positions(trades) assert trade.stoploss_order_id is None assert trade.is_open is False assert trade.sell_reason == SellType.STOPLOSS_ON_EXCHANGE.value diff --git a/tests/test_integration.py b/tests/test_integration.py index 2c95bc6e3..a73beeabe 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -90,7 +90,8 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, trade.stoploss_order_id = 3 trade.open_order_id = None - freqtrade.process_maybe_execute_sells(trades) + n = freqtrade.exit_positions(trades) + assert n == 2 assert should_sell_mock.call_count == 2 # Only order for 3rd trade needs to be cancelled @@ -170,7 +171,8 @@ def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, moc assert len(trades) == 5 bals = freqtrade.wallets.get_all_balances() - freqtrade.process_maybe_execute_sells(trades) + n = freqtrade.exit_positions(trades) + assert n == 1 trades = Trade.get_open_trades() # One trade sold assert len(trades) == 4 From fd7af587da29851de854fdd2be7a7d697cdcdbe2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 30 Dec 2019 22:50:56 +0300 Subject: [PATCH 1393/3421] Rename process_maybe_execute_buys() --> enter_positions() --- freqtrade/freqtradebot.py | 6 +- tests/rpc/test_rpc.py | 22 +++--- tests/rpc/test_rpc_apiserver.py | 8 +-- tests/rpc/test_rpc_telegram.py | 25 +++---- tests/test_freqtradebot.py | 118 +++++++++++++++++--------------- tests/test_integration.py | 5 +- 6 files changed, 96 insertions(+), 88 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 695302bf9..c595150ac 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -137,7 +137,7 @@ class FreqtradeBot: # Then looking for buy opportunities if self.get_free_open_trades(): - self.process_maybe_execute_buys() + self.enter_positions() # Check and handle any timed out open orders self.check_handle_timedout() @@ -460,9 +460,9 @@ class FreqtradeBot: return True - def process_maybe_execute_buys(self) -> int: + def enter_positions(self) -> int: """ - Tries to execute buy orders for trades in a safe way + Tries to execute buy orders for new trades (positions) """ trades_created = 0 diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index a9f73e98d..3581e3d18 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -41,7 +41,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: with pytest.raises(RPCException, match=r'.*no active trade*'): rpc._rpc_trade_status() - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() results = rpc._rpc_trade_status() assert { 'trade_id': 1, @@ -116,7 +116,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: with pytest.raises(RPCException, match=r'.*no active order*'): rpc._rpc_status_table(default_conf['stake_currency'], 'USD') - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() result, headers = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') assert "Since" in headers @@ -162,7 +162,7 @@ def test_rpc_daily_profit(default_conf, update, ticker, fee, rpc = RPC(freqtradebot) rpc._fiat_converter = CryptoToFiatConverter() # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() trade = Trade.query.first() assert trade @@ -217,7 +217,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, rpc._rpc_trade_statistics(stake_currency, fiat_display_currency) # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) @@ -231,7 +231,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, trade.close_date = datetime.utcnow() trade.is_open = False - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) @@ -299,7 +299,7 @@ def test_rpc_trade_statistics_closed(mocker, default_conf, ticker, fee, rpc = RPC(freqtradebot) # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) @@ -529,7 +529,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: msg = rpc._rpc_forcesell('all') assert msg == {'result': 'Created sell orders for all open trades.'} - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() msg = rpc._rpc_forcesell('all') assert msg == {'result': 'Created sell orders for all open trades.'} @@ -563,7 +563,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: assert cancel_order_mock.call_count == 1 assert trade.amount == filled_amount - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() trade = Trade.query.filter(Trade.id == '2').first() amount = trade.amount # make an limit-buy open trade, if there is no 'filled', don't sell it @@ -582,7 +582,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: assert cancel_order_mock.call_count == 2 assert trade.amount == amount - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() # make an limit-sell open trade mocker.patch( 'freqtrade.exchange.Exchange.get_order', @@ -613,7 +613,7 @@ def test_performance_handle(default_conf, ticker, limit_buy_order, fee, rpc = RPC(freqtradebot) # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() trade = Trade.query.first() assert trade @@ -649,7 +649,7 @@ def test_rpc_count(mocker, default_conf, ticker, fee) -> None: assert counts["current"] == 0 # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() counts = rpc._rpc_count() assert counts["current"] == 1 diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 94af85349..25c971bf7 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -267,7 +267,7 @@ def test_api_count(botclient, mocker, ticker, fee, markets): assert rc.json["max"] == 1.0 # Create some test data - ftbot.process_maybe_execute_buys() + ftbot.enter_positions() rc = client_get(client, f"{BASE_URI}/count") assert_response(rc) assert rc.json["current"] == 1.0 @@ -333,7 +333,7 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li assert len(rc.json) == 1 assert rc.json == {"error": "Error querying _profit: no closed trade"} - ftbot.process_maybe_execute_buys() + ftbot.enter_positions() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade @@ -422,7 +422,7 @@ def test_api_status(botclient, mocker, ticker, fee, markets): assert_response(rc, 200) assert rc.json == [] - ftbot.process_maybe_execute_buys() + ftbot.enter_positions() rc = client_get(client, f"{BASE_URI}/status") assert_response(rc) assert len(rc.json) == 1 @@ -552,7 +552,7 @@ def test_api_forcesell(botclient, mocker, ticker, fee, markets): assert_response(rc, 502) assert rc.json == {"error": "Error querying _forcesell: invalid argument"} - ftbot.process_maybe_execute_buys() + ftbot.enter_positions() rc = client_post(client, f"{BASE_URI}/forcesell", data='{"tradeid": "1"}') diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index d9a7e2f5b..44e51514e 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -188,8 +188,8 @@ def test_status(default_conf, update, mocker, fee, ticker,) -> None: telegram = Telegram(freqtradebot) # Create some test data - for _ in range(3): - freqtradebot.process_maybe_execute_buys() + n = freqtradebot.enter_positions() + assert n == 1 telegram._status(update=update, context=MagicMock()) assert msg_mock.call_count == 1 @@ -236,7 +236,7 @@ def test_status_handle(default_conf, update, ticker, fee, mocker) -> None: msg_mock.reset_mock() # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() # Trigger status while we have a fulfilled order for the open trade telegram._status(update=update, context=MagicMock()) @@ -285,7 +285,7 @@ def test_status_table_handle(default_conf, update, ticker, fee, mocker) -> None: msg_mock.reset_mock() # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() telegram._status_table(update=update, context=MagicMock()) @@ -322,7 +322,7 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() trade = Trade.query.first() assert trade @@ -352,7 +352,8 @@ def test_daily_handle(default_conf, update, ticker, limit_buy_order, fee, msg_mock.reset_mock() freqtradebot.config['max_open_trades'] = 2 # Add two other trades - freqtradebot.process_maybe_execute_buys() + n = freqtradebot.enter_positions() + assert n == 2 trades = Trade.query.all() for trade in trades: @@ -431,7 +432,7 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, msg_mock.reset_mock() # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() trade = Trade.query.first() # Simulate fulfilled LIMIT_BUY order for trade @@ -709,7 +710,7 @@ def test_forcesell_handle(default_conf, update, ticker, fee, telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() trade = Trade.query.first() assert trade @@ -764,7 +765,7 @@ def test_forcesell_down_handle(default_conf, update, ticker, fee, telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() # Decrease the price and sell it mocker.patch.multiple( @@ -821,7 +822,7 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() rpc_mock.reset_mock() # /forcesell all @@ -971,7 +972,7 @@ def test_performance_handle(default_conf, update, ticker, fee, telegram = Telegram(freqtradebot) # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() trade = Trade.query.first() assert trade @@ -1014,7 +1015,7 @@ def test_count_handle(default_conf, update, ticker, fee, mocker) -> None: freqtradebot.state = State.RUNNING # Create some test data - freqtradebot.process_maybe_execute_buys() + freqtradebot.enter_positions() msg_mock.reset_mock() telegram._count(update=update, context=MagicMock()) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 22110dd1c..f99b14286 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -247,7 +247,7 @@ def test_edge_overrides_stoploss(limit_buy_order, fee, caplog, mocker, edge_conf freqtrade.active_pair_whitelist = ['NEO/BTC'] patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.update(limit_buy_order) ############################################# @@ -287,7 +287,7 @@ def test_edge_should_ignore_strategy_stoploss(limit_buy_order, fee, freqtrade.active_pair_whitelist = ['NEO/BTC'] patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.update(limit_buy_order) ############################################# @@ -310,7 +310,7 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert trade is not None @@ -318,7 +318,7 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker, assert trade.is_open assert trade.open_date is not None - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.order_by(Trade.id.desc()).first() assert trade is not None @@ -573,9 +573,8 @@ def test_create_trade_limit_reached(default_conf, ticker, limit_buy_order, assert freqtrade.get_trade_stake_amount('ETH/BTC') is None -def test_process_maybe_execute_buys_no_pairs_let(default_conf, ticker, - limit_buy_order, fee, - mocker, caplog) -> None: +def test_enter_positions_no_pairs_left(default_conf, ticker, limit_buy_order, fee, + mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -589,15 +588,16 @@ def test_process_maybe_execute_buys_no_pairs_let(default_conf, ticker, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.process_maybe_execute_buys() + n = freqtrade.enter_positions() + assert n == 1 assert not log_has_re(r"No currency pair in active pair whitelist.*", caplog) - freqtrade.process_maybe_execute_buys() + n = freqtrade.enter_positions() + assert n == 0 assert log_has_re(r"No currency pair in active pair whitelist.*", caplog) -def test_process_maybe_execute_buys_no_pairs_in_whitelist(default_conf, ticker, - limit_buy_order, fee, - mocker, caplog) -> None: +def test_enter_positions_no_pairs_in_whitelist(default_conf, ticker, limit_buy_order, fee, + mocker, caplog) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -610,7 +610,8 @@ def test_process_maybe_execute_buys_no_pairs_in_whitelist(default_conf, ticker, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.process_maybe_execute_buys() + n = freqtrade.enter_positions() + assert n == 0 assert log_has("Active pair whitelist is empty.", caplog) @@ -648,7 +649,8 @@ def test_create_trades_multiple_trades(default_conf, ticker, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.process_maybe_execute_buys() + n = freqtrade.enter_positions() + assert n == max_open trades = Trade.get_open_trades() assert len(trades) == max_open @@ -1059,7 +1061,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, # should unset stoploss_order_id and return true # as a trade actually happened caplog.clear() - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.is_open = True trade.open_order_id = None @@ -1117,7 +1119,7 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.is_open = True trade.open_order_id = '12345' @@ -1152,7 +1154,7 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, patch_get_signal(freqtrade) freqtrade.strategy.order_types['stoploss_on_exchange'] = True - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() caplog.clear() freqtrade.create_stoploss_order(trade, 200, 199) @@ -1210,7 +1212,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, patch_get_signal(freqtrade) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.is_open = True trade.open_order_id = None @@ -1298,7 +1300,7 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c # setting stoploss_on_exchange_interval to 60 seconds freqtrade.strategy.order_types['stoploss_on_exchange_interval'] = 60 patch_get_signal(freqtrade) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.is_open = True trade.open_order_id = None @@ -1379,7 +1381,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, freqtrade.active_pair_whitelist = freqtrade.edge.adjust(freqtrade.active_pair_whitelist) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.is_open = True trade.open_order_id = None @@ -1443,23 +1445,25 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, stop_price=0.00002344 * 0.99) -def test_process_maybe_execute_buys(mocker, default_conf, caplog) -> None: +def test_enter_positions(mocker, default_conf, caplog) -> None: caplog.set_level(logging.DEBUG) freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.create_trade', MagicMock(return_value=False)) - freqtrade.process_maybe_execute_buys() + n = freqtrade.enter_positions() + assert n == 0 assert log_has('Found no buy signals for whitelisted currencies. Trying again...', caplog) -def test_process_maybe_execute_buys_exception(mocker, default_conf, caplog) -> None: +def test_enter_positions_exception(mocker, default_conf, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch( 'freqtrade.freqtradebot.FreqtradeBot.create_trade', MagicMock(side_effect=DependencyException) ) - freqtrade.process_maybe_execute_buys() + n = freqtrade.enter_positions() + assert n == 0 assert log_has('Unable to create trade: ', caplog) @@ -1679,7 +1683,7 @@ def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, fee, mock freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert trade @@ -1702,7 +1706,7 @@ def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, fee, mock assert trade.close_date is not None -def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order, fee, mocker) -> None: +def test_handle_overlapping_signals(default_conf, ticker, limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -1716,7 +1720,7 @@ def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order, fee, patch_get_signal(freqtrade, value=(True, True)) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() # Buy and Sell triggering, so doing nothing ... trades = Trade.query.all() @@ -1725,7 +1729,7 @@ def test_handle_overlpapping_signals(default_conf, ticker, limit_buy_order, fee, # Buy is triggering, so buying ... patch_get_signal(freqtrade, value=(True, False)) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trades = Trade.query.all() nb_trades = len(trades) assert nb_trades == 1 @@ -1769,7 +1773,7 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order, patch_get_signal(freqtrade, value=(True, False)) freqtrade.strategy.min_roi_reached = MagicMock(return_value=True) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.is_open = True @@ -1800,7 +1804,7 @@ def test_handle_trade_use_sell_signal( freqtrade = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.is_open = True @@ -1828,7 +1832,7 @@ def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order, patch_get_signal(freqtrade) # Create trade and sell it - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert trade @@ -2188,7 +2192,7 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, mocker) -> N patch_get_signal(freqtrade) # Create some test data - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert trade @@ -2236,7 +2240,7 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, mocker) patch_get_signal(freqtrade) # Create some test data - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert trade @@ -2286,7 +2290,7 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe patch_get_signal(freqtrade) # Create some test data - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert trade @@ -2344,7 +2348,7 @@ def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee, c freqtrade.strategy.order_types['stoploss_on_exchange'] = True patch_get_signal(freqtrade) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() Trade.session = MagicMock() @@ -2387,7 +2391,7 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, ticker, fee, ticke patch_get_signal(freqtrade) # Create some test data - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert trade @@ -2437,7 +2441,7 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, f patch_get_signal(freqtrade) # Create some test data - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trades = [trade] freqtrade.exit_positions(trades) @@ -2489,7 +2493,7 @@ def test_execute_sell_market_order(default_conf, ticker, fee, patch_get_signal(freqtrade) # Create some test data - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert trade @@ -2551,7 +2555,7 @@ def test_sell_profit_only_enable_profit(default_conf, limit_buy_order, patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2582,7 +2586,7 @@ def test_sell_profit_only_disable_profit(default_conf, limit_buy_order, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2613,7 +2617,7 @@ def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, mocker patch_get_signal(freqtrade) freqtrade.strategy.stop_loss_reached = MagicMock(return_value=SellCheckTuple( sell_flag=False, sell_type=SellType.NONE)) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2643,7 +2647,7 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, mocke patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2672,7 +2676,7 @@ def test_sell_not_enough_balance(default_conf, limit_buy_order, patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() amnt = trade.amount @@ -2740,7 +2744,7 @@ def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, mocker, caplo patch_get_signal(freqtrade) # Create some test data - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert trade @@ -2759,7 +2763,7 @@ def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, mocker, caplo # reinit - should buy other pair. caplog.clear() - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() assert log_has(f"Pair {trade.pair} is currently locked.", caplog) @@ -2784,7 +2788,7 @@ def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, mocker) -> patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=True) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2817,7 +2821,7 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, caplog, mocker) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert freqtrade.handle_trade(trade) is False @@ -2872,7 +2876,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2929,7 +2933,7 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.update(limit_buy_order) @@ -2992,7 +2996,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=False) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.update(limit_buy_order) @@ -3051,7 +3055,7 @@ def test_disable_ignore_roi_if_buy_signal(default_conf, limit_buy_order, patch_get_signal(freqtrade) freqtrade.strategy.min_roi_reached = MagicMock(return_value=True) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() trade.update(limit_buy_order) @@ -3382,7 +3386,7 @@ def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee, whitelist = deepcopy(default_conf['exchange']['pair_whitelist']) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert trade is not None @@ -3417,7 +3421,7 @@ def test_order_book_depth_of_market_high_delta(default_conf, ticker, limit_buy_o # Save state of current whitelist freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert trade is None @@ -3519,7 +3523,7 @@ def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() trade = Trade.query.first() assert trade @@ -3626,12 +3630,14 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order, patch_get_signal(bot) assert bot.wallets.get_free('BTC') == 0.002 - bot.process_maybe_execute_buys() + n = bot.enter_positions() + assert n == 2 trades = Trade.query.all() assert len(trades) == 2 bot.config['max_open_trades'] = 3 - bot.process_maybe_execute_buys() + n = bot.enter_positions() + assert n == 0 assert log_has_re(r"Unable to create trade: " r"Available balance \(0 BTC\) is lower than stake amount \(0.001 BTC\)", caplog) diff --git a/tests/test_integration.py b/tests/test_integration.py index a73beeabe..1108969ad 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -80,7 +80,7 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, patch_get_signal(freqtrade) # Create some test data - freqtrade.process_maybe_execute_buys() + freqtrade.enter_positions() wallets_mock.reset_mock() Trade.session = MagicMock() @@ -154,7 +154,8 @@ def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, moc patch_get_signal(freqtrade) # Create 4 trades - freqtrade.process_maybe_execute_buys() + n = freqtrade.enter_positions() + assert n == 4 trades = Trade.query.all() assert len(trades) == 4 From a88464de3a5ffb4c6802040c6463d4079c5dc868 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 31 Dec 2019 07:01:58 +0100 Subject: [PATCH 1394/3421] Improve some test code --- tests/rpc/test_rpc_telegram.py | 10 ---------- tests/test_freqtradebot.py | 3 ++- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 44e51514e..9a39f2119 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -148,11 +148,6 @@ def test_status(default_conf, update, mocker, fee, ticker,) -> None: default_conf['telegram']['enabled'] = False default_conf['telegram']['chat_id'] = "123" - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - fetch_ticker=ticker, - get_fee=fee, - ) msg_mock = MagicMock() status_table = MagicMock() mocker.patch.multiple( @@ -184,13 +179,8 @@ def test_status(default_conf, update, mocker, fee, ticker,) -> None: ) freqtradebot = get_patched_freqtradebot(mocker, default_conf) - patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) - # Create some test data - n = freqtradebot.enter_positions() - assert n == 1 - telegram._status(update=update, context=MagicMock()) assert msg_mock.call_count == 1 diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index f99b14286..434633f5f 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1458,12 +1458,13 @@ def test_enter_positions(mocker, default_conf, caplog) -> None: def test_enter_positions_exception(mocker, default_conf, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch( + mock_ct = mocker.patch( 'freqtrade.freqtradebot.FreqtradeBot.create_trade', MagicMock(side_effect=DependencyException) ) n = freqtrade.enter_positions() assert n == 0 + assert mock_ct.call_count == len(default_conf['exchange']['pair_whitelist']) assert log_has('Unable to create trade: ', caplog) From 6ebb9017c7bc0b0d39d8f83d663a7218d776c48a Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 31 Dec 2019 07:03:57 +0100 Subject: [PATCH 1395/3421] Improve test enter_positions --- tests/test_freqtradebot.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 434633f5f..812ba4e3e 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1449,10 +1449,12 @@ def test_enter_positions(mocker, default_conf, caplog) -> None: caplog.set_level(logging.DEBUG) freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.freqtradebot.FreqtradeBot.create_trade', MagicMock(return_value=False)) + mock_ct = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.create_trade', + MagicMock(return_value=False)) n = freqtrade.enter_positions() assert n == 0 assert log_has('Found no buy signals for whitelisted currencies. Trying again...', caplog) + assert mock_ct.call_count == 4 def test_enter_positions_exception(mocker, default_conf, caplog) -> None: From 9d518b9d29cdcf90ccdc8efc4117ccff0ba5c380 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 31 Dec 2019 07:05:21 +0100 Subject: [PATCH 1396/3421] Add comment and don't hardcode 4 in test --- tests/test_freqtradebot.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 812ba4e3e..6527554be 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1454,7 +1454,8 @@ def test_enter_positions(mocker, default_conf, caplog) -> None: n = freqtrade.enter_positions() assert n == 0 assert log_has('Found no buy signals for whitelisted currencies. Trying again...', caplog) - assert mock_ct.call_count == 4 + # create_trade should be called once for every pair in the whitelist. + assert mock_ct.call_count == len(default_conf['exchange']['pair_whitelist']) def test_enter_positions_exception(mocker, default_conf, caplog) -> None: From 26a2395aebd0b1ed39aaadb63e674dcf64a592bc Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 31 Dec 2019 07:11:09 +0100 Subject: [PATCH 1397/3421] Include Pair name in exception log message --- freqtrade/freqtradebot.py | 2 +- tests/test_freqtradebot.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c595150ac..a642e6ea7 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -485,7 +485,7 @@ class FreqtradeBot: try: trades_created += self.create_trade(pair) except DependencyException as exception: - logger.warning('Unable to create trade: %s', exception) + logger.warning('Unable to create trade for %s: %s', pair, exception) if not trades_created: logger.debug("Found no buy signals for whitelisted currencies. " diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 6527554be..cf395ef39 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1468,7 +1468,7 @@ def test_enter_positions_exception(mocker, default_conf, caplog) -> None: n = freqtrade.enter_positions() assert n == 0 assert mock_ct.call_count == len(default_conf['exchange']['pair_whitelist']) - assert log_has('Unable to create trade: ', caplog) + assert log_has('Unable to create trade for ETH/BTC: ', caplog) def test_exit_positions(mocker, default_conf, limit_buy_order, caplog) -> None: @@ -3642,6 +3642,6 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order, bot.config['max_open_trades'] = 3 n = bot.enter_positions() assert n == 0 - assert log_has_re(r"Unable to create trade: " + assert log_has_re(r"Unable to create trade for XRP/BTC: " r"Available balance \(0 BTC\) is lower than stake amount \(0.001 BTC\)", caplog) From 0ea44b014347d3541bb1b125ee1ebda88e8464f7 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 2 Jan 2020 02:36:59 +0300 Subject: [PATCH 1398/3421] Fix message in setup.sh --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index c4b6e074a..fb5102e12 100755 --- a/setup.sh +++ b/setup.sh @@ -263,7 +263,7 @@ function install() { echo "-------------------------" echo "Run the bot !" echo "-------------------------" - echo "You can now use the bot by executing 'source .env/bin/activate; freqtrade'." + echo "You can now use the bot by executing 'source .env/bin/activate; freqtrade trade'." } function plot() { From 4475110df85265cd2ba1172ebe3bf9df592addaf Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 2 Jan 2020 02:53:25 +0300 Subject: [PATCH 1399/3421] Cosmetics in freqtradebot --- freqtrade/freqtradebot.py | 73 ++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 32 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c4991a31c..4a207b087 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -27,6 +27,7 @@ from freqtrade.state import State from freqtrade.strategy.interface import IStrategy, SellType from freqtrade.wallets import Wallets + logger = logging.getLogger(__name__) @@ -181,6 +182,43 @@ class FreqtradeBot: open_trades = len(Trade.get_open_trades()) return max(0, self.config['max_open_trades'] - open_trades) +# +# BUY / enter positions / open trades part +# + + def enter_positions(self) -> int: + """ + Tries to execute buy orders for new trades (positions) + """ + trades_created = 0 + + whitelist = copy.deepcopy(self.active_pair_whitelist) + if not whitelist: + logger.info("Active pair whitelist is empty.") + else: + # Remove pairs for currently opened trades from the whitelist + for trade in Trade.get_open_trades(): + if trade.pair in whitelist: + whitelist.remove(trade.pair) + logger.debug('Ignoring %s in pair whitelist', trade.pair) + + if not whitelist: + logger.info("No currency pair in active pair whitelist, " + "but checking to sell open trades.") + else: + # Create entity and execute trade for each pair from whitelist + for pair in whitelist: + try: + trades_created += self.create_trade(pair) + except DependencyException as exception: + logger.warning('Unable to create trade for %s: %s', pair, exception) + + if not trades_created: + logger.debug("Found no buy signals for whitelisted currencies. " + "Trying again...") + + return trades_created + def get_target_bid(self, pair: str, tick: Dict = None) -> float: """ Calculates bid target between current ask price and last price @@ -460,38 +498,9 @@ class FreqtradeBot: return True - def enter_positions(self) -> int: - """ - Tries to execute buy orders for new trades (positions) - """ - trades_created = 0 - - whitelist = copy.deepcopy(self.active_pair_whitelist) - if not whitelist: - logger.info("Active pair whitelist is empty.") - else: - # Remove pairs for currently opened trades from the whitelist - for trade in Trade.get_open_trades(): - if trade.pair in whitelist: - whitelist.remove(trade.pair) - logger.debug('Ignoring %s in pair whitelist', trade.pair) - - if not whitelist: - logger.info("No currency pair in active pair whitelist, " - "but checking to sell open trades.") - else: - # Create entity and execute trade for each pair from whitelist - for pair in whitelist: - try: - trades_created += self.create_trade(pair) - except DependencyException as exception: - logger.warning('Unable to create trade for %s: %s', pair, exception) - - if not trades_created: - logger.debug("Found no buy signals for whitelisted currencies. " - "Trying again...") - - return trades_created +# +# SELL / exit positions / close trades part +# def exit_positions(self, trades: List[Any]) -> int: """ From 21418e298828e78576fffae4b973fe5c3723079a Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 2 Jan 2020 03:16:18 +0300 Subject: [PATCH 1400/3421] Minor: fix comment --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4a207b087..774e001c8 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -407,7 +407,7 @@ class FreqtradeBot: if price: buy_limit_requested = price else: - # Calculate amount + # Calculate price buy_limit_requested = self.get_target_bid(pair) min_stake_amount = self._get_min_pair_stake_amount(pair, buy_limit_requested) From 18a53f446762016b42b15d0adb90181c69a80027 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 07:26:43 +0100 Subject: [PATCH 1401/3421] Extract generate_text_table from backtesting class --- freqtrade/optimize/backtest_reports.py | 53 +++++++++++++++++++++++ freqtrade/optimize/backtesting.py | 60 ++++---------------------- tests/optimize/test_backtesting.py | 9 ++-- 3 files changed, 68 insertions(+), 54 deletions(-) create mode 100644 freqtrade/optimize/backtest_reports.py diff --git a/freqtrade/optimize/backtest_reports.py b/freqtrade/optimize/backtest_reports.py new file mode 100644 index 000000000..501d22228 --- /dev/null +++ b/freqtrade/optimize/backtest_reports.py @@ -0,0 +1,53 @@ +from datetime import timedelta +from typing import Dict + +from pandas import DataFrame +from tabulate import tabulate + + +def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_trades: int, + results: DataFrame, skip_nan: bool = False) -> str: + """ + Generates and returns a text table for the given backtest data and the results dataframe + :return: pretty printed table with tabulate as str + """ + + floatfmt = ('s', 'd', '.2f', '.2f', '.8f', '.2f', 'd', '.1f', '.1f') + tabular_data = [] + headers = ['pair', 'buy count', 'avg profit %', 'cum profit %', + f'tot profit {stake_currency}', 'tot profit %', 'avg duration', + 'profit', 'loss'] + for pair in data: + result = results[results.pair == pair] + if skip_nan and result.profit_abs.isnull().all(): + continue + + tabular_data.append([ + pair, + len(result.index), + result.profit_percent.mean() * 100.0, + result.profit_percent.sum() * 100.0, + result.profit_abs.sum(), + result.profit_percent.sum() * 100.0 / max_open_trades, + str(timedelta( + minutes=round(result.trade_duration.mean()))) if not result.empty else '0:00', + len(result[result.profit_abs > 0]), + len(result[result.profit_abs < 0]) + ]) + + # Append Total + tabular_data.append([ + 'TOTAL', + len(results.index), + results.profit_percent.mean() * 100.0, + results.profit_percent.sum() * 100.0, + results.profit_abs.sum(), + results.profit_percent.sum() * 100.0 / max_open_trades, + str(timedelta( + minutes=round(results.trade_duration.mean()))) if not results.empty else '0:00', + len(results[results.profit_abs > 0]), + len(results[results.profit_abs < 0]) + ]) + # Ignore type as floatfmt does allow tuples but mypy does not know that + return tabulate(tabular_data, headers=headers, + floatfmt=floatfmt, tablefmt="pipe") # type: ignore diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 9bd0327e0..e90a4c7ea 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -14,6 +14,7 @@ from tabulate import tabulate from freqtrade.configuration import (TimeRange, remove_credentials, validate_config_consistency) +from freqtrade.optimize.backtest_reports import generate_text_table from freqtrade.data import history from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import OperationalException @@ -129,55 +130,6 @@ class Backtesting: return data, timerange - def _generate_text_table(self, data: Dict[str, Dict], results: DataFrame, - skip_nan: bool = False) -> str: - """ - Generates and returns a text table for the given backtest data and the results dataframe - :return: pretty printed table with tabulate as str - """ - stake_currency = str(self.config.get('stake_currency')) - max_open_trades = self.config.get('max_open_trades') - - floatfmt = ('s', 'd', '.2f', '.2f', '.8f', '.2f', 'd', '.1f', '.1f') - tabular_data = [] - headers = ['pair', 'buy count', 'avg profit %', 'cum profit %', - 'tot profit ' + stake_currency, 'tot profit %', 'avg duration', - 'profit', 'loss'] - for pair in data: - result = results[results.pair == pair] - if skip_nan and result.profit_abs.isnull().all(): - continue - - tabular_data.append([ - pair, - len(result.index), - result.profit_percent.mean() * 100.0, - result.profit_percent.sum() * 100.0, - result.profit_abs.sum(), - result.profit_percent.sum() * 100.0 / max_open_trades, - str(timedelta( - minutes=round(result.trade_duration.mean()))) if not result.empty else '0:00', - len(result[result.profit_abs > 0]), - len(result[result.profit_abs < 0]) - ]) - - # Append Total - tabular_data.append([ - 'TOTAL', - len(results.index), - results.profit_percent.mean() * 100.0, - results.profit_percent.sum() * 100.0, - results.profit_abs.sum(), - results.profit_percent.sum() * 100.0 / max_open_trades, - str(timedelta( - minutes=round(results.trade_duration.mean()))) if not results.empty else '0:00', - len(results[results.profit_abs > 0]), - len(results[results.profit_abs < 0]) - ]) - # Ignore type as floatfmt does allow tuples but mypy does not know that - return tabulate(tabular_data, headers=headers, - floatfmt=floatfmt, tablefmt="pipe") # type: ignore - def _generate_text_table_sell_reason(self, data: Dict[str, Dict], results: DataFrame) -> str: """ Generate small table outlining Backtest results @@ -509,13 +461,19 @@ class Backtesting: print(f"Result for strategy {strategy}") print(' BACKTESTING REPORT '.center(133, '=')) - print(self._generate_text_table(data, results)) + print(generate_text_table(data, + stake_currency=self.config['stake_currency'], + max_open_trades=self.config['max_open_trades'], + results=results)) print(' SELL REASON STATS '.center(133, '=')) print(self._generate_text_table_sell_reason(data, results)) print(' LEFT OPEN TRADES REPORT '.center(133, '=')) - print(self._generate_text_table(data, results.loc[results.open_at_end], True)) + print(generate_text_table(data, + stake_currency=self.config['stake_currency'], + max_open_trades=self.config['max_open_trades'], + results=results.loc[results.open_at_end], skip_nan=True)) print() if len(all_results) > 1: # Print Strategy summary table diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 4e2fd01cf..67332c10a 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -19,6 +19,7 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import get_timerange from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.optimize import setup_configuration, start_backtesting +from freqtrade.optimize.backtest_reports import generate_text_table from freqtrade.optimize.backtesting import Backtesting from freqtrade.state import RunMode from freqtrade.strategy.default_strategy import DefaultStrategy @@ -360,8 +361,8 @@ def test_tickerdata_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: def test_generate_text_table(default_conf, mocker): patch_exchange(mocker) - default_conf['max_open_trades'] = 2 - backtesting = Backtesting(default_conf) + # default_conf['max_open_trades'] = 2 + # backtesting = Backtesting(default_conf) results = pd.DataFrame( { @@ -384,7 +385,9 @@ def test_generate_text_table(default_conf, mocker): '| TOTAL | 2 | 15.00 | 30.00 | ' '0.60000000 | 15.00 | 0:20:00 | 2 | 0 |' ) - assert backtesting._generate_text_table(data={'ETH/BTC': {}}, results=results) == result_str + assert generate_text_table(data={'ETH/BTC': {}}, + stake_currency='BTC', max_open_trades=2, + results=results) == result_str def test_generate_text_table_sell_reason(default_conf, mocker): From caec345c0b77364412ae0ec2c524ff2eab9ef316 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 07:28:30 +0100 Subject: [PATCH 1402/3421] Extract generate_text_table_sell_reason from backtesting class --- freqtrade/optimize/backtest_reports.py | 13 +++++++++++++ freqtrade/optimize/backtesting.py | 17 ++++------------- tests/optimize/test_backtesting.py | 8 +++----- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/freqtrade/optimize/backtest_reports.py b/freqtrade/optimize/backtest_reports.py index 501d22228..8912af22a 100644 --- a/freqtrade/optimize/backtest_reports.py +++ b/freqtrade/optimize/backtest_reports.py @@ -51,3 +51,16 @@ def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_tra # Ignore type as floatfmt does allow tuples but mypy does not know that return tabulate(tabular_data, headers=headers, floatfmt=floatfmt, tablefmt="pipe") # type: ignore + + +def generate_text_table_sell_reason(data: Dict[str, Dict], results: DataFrame) -> str: + """ + Generate small table outlining Backtest results + """ + tabular_data = [] + headers = ['Sell Reason', 'Count', 'Profit', 'Loss'] + for reason, count in results['sell_reason'].value_counts().iteritems(): + profit = len(results[(results['sell_reason'] == reason) & (results['profit_abs'] >= 0)]) + loss = len(results[(results['sell_reason'] == reason) & (results['profit_abs'] < 0)]) + tabular_data.append([reason.value, count, profit, loss]) + return tabulate(tabular_data, headers=headers, tablefmt="pipe") diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index e90a4c7ea..1c92860a8 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -14,12 +14,13 @@ from tabulate import tabulate from freqtrade.configuration import (TimeRange, remove_credentials, validate_config_consistency) -from freqtrade.optimize.backtest_reports import generate_text_table from freqtrade.data import history from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds from freqtrade.misc import file_dump_json +from freqtrade.optimize.backtest_reports import ( + generate_text_table, generate_text_table_sell_reason) from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.state import RunMode @@ -130,17 +131,7 @@ class Backtesting: return data, timerange - def _generate_text_table_sell_reason(self, data: Dict[str, Dict], results: DataFrame) -> str: - """ - Generate small table outlining Backtest results - """ - tabular_data = [] - headers = ['Sell Reason', 'Count', 'Profit', 'Loss'] - for reason, count in results['sell_reason'].value_counts().iteritems(): - profit = len(results[(results['sell_reason'] == reason) & (results['profit_abs'] >= 0)]) - loss = len(results[(results['sell_reason'] == reason) & (results['profit_abs'] < 0)]) - tabular_data.append([reason.value, count, profit, loss]) - return tabulate(tabular_data, headers=headers, tablefmt="pipe") + def _generate_text_table_strategy(self, all_results: dict) -> str: """ @@ -467,7 +458,7 @@ class Backtesting: results=results)) print(' SELL REASON STATS '.center(133, '=')) - print(self._generate_text_table_sell_reason(data, results)) + print(generate_text_table_sell_reason(data, results)) print(' LEFT OPEN TRADES REPORT '.center(133, '=')) print(generate_text_table(data, diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 67332c10a..554d8974b 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -19,7 +19,8 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import get_timerange from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.optimize import setup_configuration, start_backtesting -from freqtrade.optimize.backtest_reports import generate_text_table +from freqtrade.optimize.backtest_reports import ( + generate_text_table, generate_text_table_sell_reason) from freqtrade.optimize.backtesting import Backtesting from freqtrade.state import RunMode from freqtrade.strategy.default_strategy import DefaultStrategy @@ -361,8 +362,6 @@ def test_tickerdata_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: def test_generate_text_table(default_conf, mocker): patch_exchange(mocker) - # default_conf['max_open_trades'] = 2 - # backtesting = Backtesting(default_conf) results = pd.DataFrame( { @@ -392,7 +391,6 @@ def test_generate_text_table(default_conf, mocker): def test_generate_text_table_sell_reason(default_conf, mocker): patch_exchange(mocker) - backtesting = Backtesting(default_conf) results = pd.DataFrame( { @@ -412,7 +410,7 @@ def test_generate_text_table_sell_reason(default_conf, mocker): '| roi | 2 | 2 | 0 |\n' '| stop_loss | 1 | 0 | 1 |' ) - assert backtesting._generate_text_table_sell_reason( + assert generate_text_table_sell_reason( data={'ETH/BTC': {}}, results=results) == result_str From 904e1647e1579f2bc0ff396937ea6982afd4ccd7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 07:32:12 +0100 Subject: [PATCH 1403/3421] Extract generate_text_table_strategy to seperate module --- freqtrade/optimize/backtest_reports.py | 29 +++++++++++++++++++ freqtrade/optimize/backtesting.py | 39 ++++---------------------- tests/optimize/test_backtesting.py | 15 +++------- 3 files changed, 38 insertions(+), 45 deletions(-) diff --git a/freqtrade/optimize/backtest_reports.py b/freqtrade/optimize/backtest_reports.py index 8912af22a..8f0436563 100644 --- a/freqtrade/optimize/backtest_reports.py +++ b/freqtrade/optimize/backtest_reports.py @@ -64,3 +64,32 @@ def generate_text_table_sell_reason(data: Dict[str, Dict], results: DataFrame) - loss = len(results[(results['sell_reason'] == reason) & (results['profit_abs'] < 0)]) tabular_data.append([reason.value, count, profit, loss]) return tabulate(tabular_data, headers=headers, tablefmt="pipe") + + +def generate_text_table_strategy(stake_currency: str, max_open_trades: str, + all_results: Dict) -> str: + """ + Generate summary table per strategy + """ + + floatfmt = ('s', 'd', '.2f', '.2f', '.8f', '.2f', 'd', '.1f', '.1f') + tabular_data = [] + headers = ['Strategy', 'buy count', 'avg profit %', 'cum profit %', + f'tot profit {stake_currency}', 'tot profit %', 'avg duration', + 'profit', 'loss'] + for strategy, results in all_results.items(): + tabular_data.append([ + strategy, + len(results.index), + results.profit_percent.mean() * 100.0, + results.profit_percent.sum() * 100.0, + results.profit_abs.sum(), + results.profit_percent.sum() * 100.0 / max_open_trades, + str(timedelta( + minutes=round(results.trade_duration.mean()))) if not results.empty else '0:00', + len(results[results.profit_abs > 0]), + len(results[results.profit_abs < 0]) + ]) + # Ignore type as floatfmt does allow tuples but mypy does not know that + return tabulate(tabular_data, headers=headers, + floatfmt=floatfmt, tablefmt="pipe") # type: ignore diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 1c92860a8..ae3fbed0a 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -10,7 +10,6 @@ from pathlib import Path from typing import Any, Dict, List, NamedTuple, Optional from pandas import DataFrame -from tabulate import tabulate from freqtrade.configuration import (TimeRange, remove_credentials, validate_config_consistency) @@ -20,7 +19,8 @@ from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds from freqtrade.misc import file_dump_json from freqtrade.optimize.backtest_reports import ( - generate_text_table, generate_text_table_sell_reason) + generate_text_table, generate_text_table_sell_reason, + generate_text_table_strategy) from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.state import RunMode @@ -131,37 +131,6 @@ class Backtesting: return data, timerange - - - def _generate_text_table_strategy(self, all_results: dict) -> str: - """ - Generate summary table per strategy - """ - stake_currency = str(self.config.get('stake_currency')) - max_open_trades = self.config.get('max_open_trades') - - floatfmt = ('s', 'd', '.2f', '.2f', '.8f', '.2f', 'd', '.1f', '.1f') - tabular_data = [] - headers = ['Strategy', 'buy count', 'avg profit %', 'cum profit %', - 'tot profit ' + stake_currency, 'tot profit %', 'avg duration', - 'profit', 'loss'] - for strategy, results in all_results.items(): - tabular_data.append([ - strategy, - len(results.index), - results.profit_percent.mean() * 100.0, - results.profit_percent.sum() * 100.0, - results.profit_abs.sum(), - results.profit_percent.sum() * 100.0 / max_open_trades, - str(timedelta( - minutes=round(results.trade_duration.mean()))) if not results.empty else '0:00', - len(results[results.profit_abs > 0]), - len(results[results.profit_abs < 0]) - ]) - # Ignore type as floatfmt does allow tuples but mypy does not know that - return tabulate(tabular_data, headers=headers, - floatfmt=floatfmt, tablefmt="pipe") # type: ignore - def _store_backtest_result(self, recordfilename: Path, results: DataFrame, strategyname: Optional[str] = None) -> None: @@ -469,5 +438,7 @@ class Backtesting: if len(all_results) > 1: # Print Strategy summary table print(' Strategy Summary '.center(133, '=')) - print(self._generate_text_table_strategy(all_results)) + print(generate_text_table_strategy(self.config['stake_currency'], + self.config['max_open_trades'], + all_results=all_results)) print('\nFor more details, please look at the detail tables above') diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 554d8974b..57b80f837 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -20,7 +20,8 @@ from freqtrade.data.history import get_timerange from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.optimize import setup_configuration, start_backtesting from freqtrade.optimize.backtest_reports import ( - generate_text_table, generate_text_table_sell_reason) + generate_text_table, generate_text_table_sell_reason, + generate_text_table_strategy) from freqtrade.optimize.backtesting import Backtesting from freqtrade.state import RunMode from freqtrade.strategy.default_strategy import DefaultStrategy @@ -361,7 +362,6 @@ def test_tickerdata_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: def test_generate_text_table(default_conf, mocker): - patch_exchange(mocker) results = pd.DataFrame( { @@ -390,7 +390,6 @@ def test_generate_text_table(default_conf, mocker): def test_generate_text_table_sell_reason(default_conf, mocker): - patch_exchange(mocker) results = pd.DataFrame( { @@ -414,13 +413,7 @@ def test_generate_text_table_sell_reason(default_conf, mocker): data={'ETH/BTC': {}}, results=results) == result_str -def test_generate_text_table_strategyn(default_conf, mocker): - """ - Test Backtesting.generate_text_table_sell_reason() method - """ - patch_exchange(mocker) - default_conf['max_open_trades'] = 2 - backtesting = Backtesting(default_conf) +def test_generate_text_table_strategy(default_conf, mocker): results = {} results['ETH/BTC'] = pd.DataFrame( { @@ -455,7 +448,7 @@ def test_generate_text_table_strategyn(default_conf, mocker): '| LTC/BTC | 3 | 30.00 | 90.00 ' '| 1.30000000 | 45.00 | 0:20:00 | 3 | 0 |' ) - assert backtesting._generate_text_table_strategy(all_results=results) == result_str + assert generate_text_table_strategy('BTC', 2, all_results=results) == result_str def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: From 10ee23622a34797170e2ad37b3389b7b1ea7ebfd Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 07:33:55 +0100 Subject: [PATCH 1404/3421] Extract tests for backtest_reports to their own test module --- tests/optimize/test_backtest_reports.py | 96 +++++++++++++++++++++++++ tests/optimize/test_backtesting.py | 93 ------------------------ 2 files changed, 96 insertions(+), 93 deletions(-) create mode 100644 tests/optimize/test_backtest_reports.py diff --git a/tests/optimize/test_backtest_reports.py b/tests/optimize/test_backtest_reports.py new file mode 100644 index 000000000..726202517 --- /dev/null +++ b/tests/optimize/test_backtest_reports.py @@ -0,0 +1,96 @@ +import pandas as pd + +from freqtrade.optimize.backtest_reports import ( + generate_text_table, generate_text_table_sell_reason, + generate_text_table_strategy) +from freqtrade.strategy.interface import SellType + + +def test_generate_text_table(default_conf, mocker): + + results = pd.DataFrame( + { + 'pair': ['ETH/BTC', 'ETH/BTC'], + 'profit_percent': [0.1, 0.2], + 'profit_abs': [0.2, 0.4], + 'trade_duration': [10, 30], + 'profit': [2, 0], + 'loss': [0, 0] + } + ) + + result_str = ( + '| pair | buy count | avg profit % | cum profit % | ' + 'tot profit BTC | tot profit % | avg duration | profit | loss |\n' + '|:--------|------------:|---------------:|---------------:|' + '-----------------:|---------------:|:---------------|---------:|-------:|\n' + '| ETH/BTC | 2 | 15.00 | 30.00 | ' + '0.60000000 | 15.00 | 0:20:00 | 2 | 0 |\n' + '| TOTAL | 2 | 15.00 | 30.00 | ' + '0.60000000 | 15.00 | 0:20:00 | 2 | 0 |' + ) + assert generate_text_table(data={'ETH/BTC': {}}, + stake_currency='BTC', max_open_trades=2, + results=results) == result_str + + +def test_generate_text_table_sell_reason(default_conf, mocker): + + results = pd.DataFrame( + { + 'pair': ['ETH/BTC', 'ETH/BTC', 'ETH/BTC'], + 'profit_percent': [0.1, 0.2, -0.3], + 'profit_abs': [0.2, 0.4, -0.5], + 'trade_duration': [10, 30, 10], + 'profit': [2, 0, 0], + 'loss': [0, 0, 1], + 'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] + } + ) + + result_str = ( + '| Sell Reason | Count | Profit | Loss |\n' + '|:--------------|--------:|---------:|-------:|\n' + '| roi | 2 | 2 | 0 |\n' + '| stop_loss | 1 | 0 | 1 |' + ) + assert generate_text_table_sell_reason( + data={'ETH/BTC': {}}, results=results) == result_str + + +def test_generate_text_table_strategy(default_conf, mocker): + results = {} + results['ETH/BTC'] = pd.DataFrame( + { + 'pair': ['ETH/BTC', 'ETH/BTC', 'ETH/BTC'], + 'profit_percent': [0.1, 0.2, 0.3], + 'profit_abs': [0.2, 0.4, 0.5], + 'trade_duration': [10, 30, 10], + 'profit': [2, 0, 0], + 'loss': [0, 0, 1], + 'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] + } + ) + results['LTC/BTC'] = pd.DataFrame( + { + 'pair': ['LTC/BTC', 'LTC/BTC', 'LTC/BTC'], + 'profit_percent': [0.4, 0.2, 0.3], + 'profit_abs': [0.4, 0.4, 0.5], + 'trade_duration': [15, 30, 15], + 'profit': [4, 1, 0], + 'loss': [0, 0, 1], + 'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] + } + ) + + result_str = ( + '| Strategy | buy count | avg profit % | cum profit % ' + '| tot profit BTC | tot profit % | avg duration | profit | loss |\n' + '|:-----------|------------:|---------------:|---------------:' + '|-----------------:|---------------:|:---------------|---------:|-------:|\n' + '| ETH/BTC | 3 | 20.00 | 60.00 ' + '| 1.10000000 | 30.00 | 0:17:00 | 3 | 0 |\n' + '| LTC/BTC | 3 | 30.00 | 90.00 ' + '| 1.30000000 | 45.00 | 0:20:00 | 3 | 0 |' + ) + assert generate_text_table_strategy('BTC', 2, all_results=results) == result_str diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 57b80f837..9f31114b4 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -19,9 +19,6 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import get_timerange from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.optimize import setup_configuration, start_backtesting -from freqtrade.optimize.backtest_reports import ( - generate_text_table, generate_text_table_sell_reason, - generate_text_table_strategy) from freqtrade.optimize.backtesting import Backtesting from freqtrade.state import RunMode from freqtrade.strategy.default_strategy import DefaultStrategy @@ -361,96 +358,6 @@ def test_tickerdata_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: assert data['UNITTEST/BTC'].equals(data2['UNITTEST/BTC']) -def test_generate_text_table(default_conf, mocker): - - results = pd.DataFrame( - { - 'pair': ['ETH/BTC', 'ETH/BTC'], - 'profit_percent': [0.1, 0.2], - 'profit_abs': [0.2, 0.4], - 'trade_duration': [10, 30], - 'profit': [2, 0], - 'loss': [0, 0] - } - ) - - result_str = ( - '| pair | buy count | avg profit % | cum profit % | ' - 'tot profit BTC | tot profit % | avg duration | profit | loss |\n' - '|:--------|------------:|---------------:|---------------:|' - '-----------------:|---------------:|:---------------|---------:|-------:|\n' - '| ETH/BTC | 2 | 15.00 | 30.00 | ' - '0.60000000 | 15.00 | 0:20:00 | 2 | 0 |\n' - '| TOTAL | 2 | 15.00 | 30.00 | ' - '0.60000000 | 15.00 | 0:20:00 | 2 | 0 |' - ) - assert generate_text_table(data={'ETH/BTC': {}}, - stake_currency='BTC', max_open_trades=2, - results=results) == result_str - - -def test_generate_text_table_sell_reason(default_conf, mocker): - - results = pd.DataFrame( - { - 'pair': ['ETH/BTC', 'ETH/BTC', 'ETH/BTC'], - 'profit_percent': [0.1, 0.2, -0.3], - 'profit_abs': [0.2, 0.4, -0.5], - 'trade_duration': [10, 30, 10], - 'profit': [2, 0, 0], - 'loss': [0, 0, 1], - 'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] - } - ) - - result_str = ( - '| Sell Reason | Count | Profit | Loss |\n' - '|:--------------|--------:|---------:|-------:|\n' - '| roi | 2 | 2 | 0 |\n' - '| stop_loss | 1 | 0 | 1 |' - ) - assert generate_text_table_sell_reason( - data={'ETH/BTC': {}}, results=results) == result_str - - -def test_generate_text_table_strategy(default_conf, mocker): - results = {} - results['ETH/BTC'] = pd.DataFrame( - { - 'pair': ['ETH/BTC', 'ETH/BTC', 'ETH/BTC'], - 'profit_percent': [0.1, 0.2, 0.3], - 'profit_abs': [0.2, 0.4, 0.5], - 'trade_duration': [10, 30, 10], - 'profit': [2, 0, 0], - 'loss': [0, 0, 1], - 'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] - } - ) - results['LTC/BTC'] = pd.DataFrame( - { - 'pair': ['LTC/BTC', 'LTC/BTC', 'LTC/BTC'], - 'profit_percent': [0.4, 0.2, 0.3], - 'profit_abs': [0.4, 0.4, 0.5], - 'trade_duration': [15, 30, 15], - 'profit': [4, 1, 0], - 'loss': [0, 0, 1], - 'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] - } - ) - - result_str = ( - '| Strategy | buy count | avg profit % | cum profit % ' - '| tot profit BTC | tot profit % | avg duration | profit | loss |\n' - '|:-----------|------------:|---------------:|---------------:' - '|-----------------:|---------------:|:---------------|---------:|-------:|\n' - '| ETH/BTC | 3 | 20.00 | 60.00 ' - '| 1.10000000 | 30.00 | 0:17:00 | 3 | 0 |\n' - '| LTC/BTC | 3 | 30.00 | 90.00 ' - '| 1.30000000 | 45.00 | 0:20:00 | 3 | 0 |' - ) - assert generate_text_table_strategy('BTC', 2, all_results=results) == result_str - - def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: def get_timerange(input1): return Arrow(2017, 11, 14, 21, 17), Arrow(2017, 11, 14, 22, 59) From 8cc48cf4b042f4b47ad3902addd2fafc5e433762 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 09:31:35 +0100 Subject: [PATCH 1405/3421] Fix tests where mocks fail now --- tests/optimize/test_backtesting.py | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 9f31114b4..83d212e3d 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -366,11 +366,8 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: mocker.patch('freqtrade.data.history.get_timerange', get_timerange) mocker.patch('freqtrade.exchange.Exchange.refresh_latest_ohlcv', MagicMock()) patch_exchange(mocker) - mocker.patch.multiple( - 'freqtrade.optimize.backtesting.Backtesting', - backtest=MagicMock(), - _generate_text_table=MagicMock(return_value='1'), - ) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.generate_text_table', MagicMock(return_value=1)) default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] default_conf['ticker_interval'] = '1m' @@ -399,11 +396,8 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> mocker.patch('freqtrade.data.history.get_timerange', get_timerange) mocker.patch('freqtrade.exchange.Exchange.refresh_latest_ohlcv', MagicMock()) patch_exchange(mocker) - mocker.patch.multiple( - 'freqtrade.optimize.backtesting.Backtesting', - backtest=MagicMock(), - _generate_text_table=MagicMock(return_value='1'), - ) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.generate_text_table', MagicMock(return_value=1)) default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] default_conf['ticker_interval'] = "1m" @@ -714,7 +708,8 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): patch_exchange(mocker, api_mock) mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', MagicMock()) - mocker.patch('freqtrade.optimize.backtesting.Backtesting._generate_text_table', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.generate_text_table', MagicMock()) + patched_configuration_load_config_file(mocker, default_conf) args = [ @@ -760,10 +755,9 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): backtestmock = MagicMock() mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', backtestmock) gen_table_mock = MagicMock() - mocker.patch('freqtrade.optimize.backtesting.Backtesting._generate_text_table', gen_table_mock) + mocker.patch('freqtrade.optimize.backtesting.generate_text_table', gen_table_mock) gen_strattable_mock = MagicMock() - mocker.patch('freqtrade.optimize.backtesting.Backtesting._generate_text_table_strategy', - gen_strattable_mock) + mocker.patch('freqtrade.optimize.backtesting.generate_text_table_strategy', gen_strattable_mock) patched_configuration_load_config_file(mocker, default_conf) args = [ From a9fbad0741fe7475a2d0b90c22788a42a24e3a05 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 09:37:54 +0100 Subject: [PATCH 1406/3421] Improve docstrings --- freqtrade/optimize/backtest_reports.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/backtest_reports.py b/freqtrade/optimize/backtest_reports.py index 8f0436563..5778747cf 100644 --- a/freqtrade/optimize/backtest_reports.py +++ b/freqtrade/optimize/backtest_reports.py @@ -9,7 +9,12 @@ def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_tra results: DataFrame, skip_nan: bool = False) -> str: """ Generates and returns a text table for the given backtest data and the results dataframe - :return: pretty printed table with tabulate as str + :param data: Dict of containing data that was used during backtesting. + :param stake_currency: stake-currency - used to correctly name headers + :param max_open_trades: Maximum allowed open trades + :param results: Dataframe containing the backtest results + :param skip_nan: Print "left open" open trades + :return: pretty printed table with tabulate as string """ floatfmt = ('s', 'd', '.2f', '.2f', '.8f', '.2f', 'd', '.1f', '.1f') @@ -56,6 +61,9 @@ def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_tra def generate_text_table_sell_reason(data: Dict[str, Dict], results: DataFrame) -> str: """ Generate small table outlining Backtest results + :param data: Dict of containing data that was used during backtesting. + :param results: Dataframe containing the backtest results + :return: pretty printed table with tabulate as string """ tabular_data = [] headers = ['Sell Reason', 'Count', 'Profit', 'Loss'] @@ -70,6 +78,10 @@ def generate_text_table_strategy(stake_currency: str, max_open_trades: str, all_results: Dict) -> str: """ Generate summary table per strategy + :param stake_currency: stake-currency - used to correctly name headers + :param max_open_trades: Maximum allowed open trades used for backtest + :param all_results: Dict of containing results for all strategies + :return: pretty printed table with tabulate as string """ floatfmt = ('s', 'd', '.2f', '.2f', '.8f', '.2f', 'd', '.1f', '.1f') From e89fa44680e795f5a52067406526e41c6a1ae756 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 2 Jan 2020 11:50:54 +0300 Subject: [PATCH 1407/3421] Arrange common section for update trade state methods --- freqtrade/freqtradebot.py | 170 +++++++++++++++++++------------------- 1 file changed, 87 insertions(+), 83 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 774e001c8..d5d918585 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -183,7 +183,7 @@ class FreqtradeBot: return max(0, self.config['max_open_trades'] - open_trades) # -# BUY / enter positions / open trades part +# BUY / enter positions / open trades logic and methods # def enter_positions(self) -> int: @@ -499,7 +499,7 @@ class FreqtradeBot: return True # -# SELL / exit positions / close trades part +# SELL / exit positions / close trades logic and methods # def exit_positions(self, trades: List[Any]) -> int: @@ -528,87 +528,6 @@ class FreqtradeBot: return trades_closed - def get_real_amount(self, trade: Trade, order: Dict, order_amount: float = None) -> float: - """ - Get real amount for the trade - Necessary for exchanges which charge fees in base currency (e.g. binance) - """ - if order_amount is None: - order_amount = order['amount'] - # Only run for closed orders - if trade.fee_open == 0 or order['status'] == 'open': - return order_amount - - # use fee from order-dict if possible - if ('fee' in order and order['fee'] is not None and - (order['fee'].keys() >= {'currency', 'cost'})): - if (order['fee']['currency'] is not None and - order['fee']['cost'] is not None and - trade.pair.startswith(order['fee']['currency'])): - new_amount = order_amount - order['fee']['cost'] - logger.info("Applying fee on amount for %s (from %s to %s) from Order", - trade, order['amount'], new_amount) - return new_amount - - # Fallback to Trades - trades = self.exchange.get_trades_for_order(trade.open_order_id, trade.pair, - trade.open_date) - - if len(trades) == 0: - logger.info("Applying fee on amount for %s failed: myTrade-Dict empty found", trade) - return order_amount - amount = 0 - fee_abs = 0 - for exectrade in trades: - amount += exectrade['amount'] - if ("fee" in exectrade and exectrade['fee'] is not None and - (exectrade['fee'].keys() >= {'currency', 'cost'})): - # only applies if fee is in quote currency! - if (exectrade['fee']['currency'] is not None and - exectrade['fee']['cost'] is not None and - trade.pair.startswith(exectrade['fee']['currency'])): - fee_abs += exectrade['fee']['cost'] - - if not isclose(amount, order_amount, abs_tol=constants.MATH_CLOSE_PREC): - logger.warning(f"Amount {amount} does not match amount {trade.amount}") - raise DependencyException("Half bought? Amounts don't match") - real_amount = amount - fee_abs - if fee_abs != 0: - logger.info(f"Applying fee on amount for {trade} " - f"(from {order_amount} to {real_amount}) from Trades") - return real_amount - - def update_trade_state(self, trade, action_order: dict = None): - """ - Checks trades with open orders and updates the amount if necessary - """ - # Get order details for actual price per unit - if trade.open_order_id: - # Update trade with order values - logger.info('Found open order for %s', trade) - try: - order = action_order or self.exchange.get_order(trade.open_order_id, trade.pair) - except InvalidOrderException as exception: - logger.warning('Unable to fetch order %s: %s', trade.open_order_id, exception) - return - # Try update amount (binance-fix) - try: - new_amount = self.get_real_amount(trade, order) - if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): - order['amount'] = new_amount - # Fee was applied, so set to 0 - trade.fee_open = 0 - trade.recalc_open_trade_price() - - except DependencyException as exception: - logger.warning("Could not update trade amount: %s", exception) - - trade.update(order) - - # Updating wallets when order is closed - if not trade.is_open: - self.wallets.update() - def get_sell_rate(self, pair: str, refresh: bool) -> float: """ Get sell rate - either using get-ticker bid or first bid based on orderbook @@ -1047,3 +966,88 @@ class FreqtradeBot: # Send the message self.rpc.send_msg(msg) + +# +# Common update trade state methods +# + + def update_trade_state(self, trade, action_order: dict = None): + """ + Checks trades with open orders and updates the amount if necessary + """ + # Get order details for actual price per unit + if trade.open_order_id: + # Update trade with order values + logger.info('Found open order for %s', trade) + try: + order = action_order or self.exchange.get_order(trade.open_order_id, trade.pair) + except InvalidOrderException as exception: + logger.warning('Unable to fetch order %s: %s', trade.open_order_id, exception) + return + # Try update amount (binance-fix) + try: + new_amount = self.get_real_amount(trade, order) + if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): + order['amount'] = new_amount + # Fee was applied, so set to 0 + trade.fee_open = 0 + trade.recalc_open_trade_price() + + except DependencyException as exception: + logger.warning("Could not update trade amount: %s", exception) + + trade.update(order) + + # Updating wallets when order is closed + if not trade.is_open: + self.wallets.update() + + def get_real_amount(self, trade: Trade, order: Dict, order_amount: float = None) -> float: + """ + Get real amount for the trade + Necessary for exchanges which charge fees in base currency (e.g. binance) + """ + if order_amount is None: + order_amount = order['amount'] + # Only run for closed orders + if trade.fee_open == 0 or order['status'] == 'open': + return order_amount + + # use fee from order-dict if possible + if ('fee' in order and order['fee'] is not None and + (order['fee'].keys() >= {'currency', 'cost'})): + if (order['fee']['currency'] is not None and + order['fee']['cost'] is not None and + trade.pair.startswith(order['fee']['currency'])): + new_amount = order_amount - order['fee']['cost'] + logger.info("Applying fee on amount for %s (from %s to %s) from Order", + trade, order['amount'], new_amount) + return new_amount + + # Fallback to Trades + trades = self.exchange.get_trades_for_order(trade.open_order_id, trade.pair, + trade.open_date) + + if len(trades) == 0: + logger.info("Applying fee on amount for %s failed: myTrade-Dict empty found", trade) + return order_amount + amount = 0 + fee_abs = 0 + for exectrade in trades: + amount += exectrade['amount'] + if ("fee" in exectrade and exectrade['fee'] is not None and + (exectrade['fee'].keys() >= {'currency', 'cost'})): + # only applies if fee is in quote currency! + if (exectrade['fee']['currency'] is not None and + exectrade['fee']['cost'] is not None and + trade.pair.startswith(exectrade['fee']['currency'])): + fee_abs += exectrade['fee']['cost'] + + if not isclose(amount, order_amount, abs_tol=constants.MATH_CLOSE_PREC): + logger.warning(f"Amount {amount} does not match amount {trade.amount}") + raise DependencyException("Half bought? Amounts don't match") + real_amount = amount - fee_abs + if fee_abs != 0: + logger.info(f"Applying fee on amount for {trade} " + f"(from {order_amount} to {real_amount}) from Trades") + return real_amount From 6fbdd6bee9520afc13450cb63c3fba4591537ce3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 09:51:24 +0100 Subject: [PATCH 1408/3421] Remove unused directory from user_data --- user_data/backtest_data/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 user_data/backtest_data/.gitkeep diff --git a/user_data/backtest_data/.gitkeep b/user_data/backtest_data/.gitkeep deleted file mode 100644 index e69de29bb..000000000 From 2c8e8d8ef65021fbb3ee3446768fe3e3fa34c36f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 09:51:47 +0100 Subject: [PATCH 1409/3421] Align columns for btanalysis loading --- freqtrade/data/btanalysis.py | 2 +- tests/data/test_btanalysis.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 2fc931a9b..04b2ca980 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -47,7 +47,7 @@ def load_backtest_data(filename) -> pd.DataFrame: utc=True, infer_datetime_format=True ) - df['profitabs'] = df['close_rate'] - df['open_rate'] + df['profit'] = df['close_rate'] - df['open_rate'] df = df.sort_values("open_time").reset_index(drop=True) return df diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 13711c63e..60d9c3ea5 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -20,7 +20,7 @@ def test_load_backtest_data(testdatadir): filename = testdatadir / "backtest-result_test.json" bt_data = load_backtest_data(filename) assert isinstance(bt_data, DataFrame) - assert list(bt_data.columns) == BT_DATA_COLUMNS + ["profitabs"] + assert list(bt_data.columns) == BT_DATA_COLUMNS + ["profit"] assert len(bt_data) == 179 # Test loading from string (must yield same result) From 9325880fe5c84973a6553f47993639042f574ac9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 10:38:59 +0100 Subject: [PATCH 1410/3421] Split config-validation requires --- freqtrade/configuration/config_validation.py | 11 +++++-- freqtrade/constants.py | 30 ++++++++++++-------- tests/test_configuration.py | 1 + 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 43eead46a..9afa39ca7 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -1,4 +1,5 @@ import logging +from copy import deepcopy from typing import Any, Dict from jsonschema import Draft4Validator, validators @@ -42,15 +43,21 @@ def validate_config_schema(conf: Dict[str, Any]) -> Dict[str, Any]: :param conf: Config in JSON format :return: Returns the config if valid, otherwise throw an exception """ + conf_schema = deepcopy(constants.CONF_SCHEMA) + if conf.get('runmode', RunMode.OTHER) in (RunMode.DRY_RUN, RunMode.LIVE): + conf_schema['required'] = constants.SCHEMA_TRADE_REQUIRED + else: + conf_schema['required'] = constants.SCHEMA_MINIMAL_REQUIRED + try: - FreqtradeValidator(constants.CONF_SCHEMA).validate(conf) + FreqtradeValidator(conf_schema).validate(conf) return conf except ValidationError as e: logger.critical( f"Invalid configuration. See config.json.example. Reason: {e}" ) raise ValidationError( - best_match(Draft4Validator(constants.CONF_SCHEMA).iter_errors(conf)).message + best_match(Draft4Validator(conf_schema).iter_errors(conf)).message ) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index d7c6249d5..b21279bb4 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -269,16 +269,22 @@ CONF_SCHEMA = { 'required': ['process_throttle_secs', 'allowed_risk', 'capital_available_percentage'] } }, - 'required': [ - 'exchange', - 'max_open_trades', - 'stake_currency', - 'stake_amount', - 'dry_run', - 'dry_run_wallet', - 'bid_strategy', - 'unfilledtimeout', - 'stoploss', - 'minimal_roi', - ] } + +SCHEMA_TRADE_REQUIRED = [ + 'exchange', + 'max_open_trades', + 'stake_currency', + 'stake_amount', + 'dry_run', + 'dry_run_wallet', + 'bid_strategy', + 'unfilledtimeout', + 'stoploss', + 'minimal_roi', +] + +SCHEMA_MINIMAL_REQUIRED = [ + 'exchange', + 'dry_run', +] diff --git a/tests/test_configuration.py b/tests/test_configuration.py index ee3d23131..531a88688 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -49,6 +49,7 @@ def test_load_config_missing_attributes(default_conf) -> None: conf = deepcopy(default_conf) conf.pop('stake_currency') + conf['runmode'] = RunMode.DRY_RUN with pytest.raises(ValidationError, match=r".*'stake_currency' is a required property.*"): validate_config_schema(conf) From 20fc3b7978d036da11a56df2b8c81622854e2a6e Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 10:41:10 +0100 Subject: [PATCH 1411/3421] validate config for utils too --- freqtrade/utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 45520ecf7..9fe15aea6 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -12,7 +12,8 @@ from colorama import init as colorama_init from tabulate import tabulate from freqtrade.configuration import (Configuration, TimeRange, - remove_credentials) + remove_credentials, + validate_config_consistency) from freqtrade.configuration.directory_operations import (copy_sample_files, create_userdata_dir) from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGY @@ -40,6 +41,7 @@ def setup_utils_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str # Ensure we do not use Exchange credentials remove_credentials(config) + validate_config_consistency(config) return config From 22fcf7b4dc64c82058e4eb1349422ac83199c043 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 10:47:37 +0100 Subject: [PATCH 1412/3421] Allow empty stake currency in certain cases --- freqtrade/configuration/config_validation.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 9afa39ca7..f7886eec2 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -48,6 +48,10 @@ def validate_config_schema(conf: Dict[str, Any]) -> Dict[str, Any]: conf_schema['required'] = constants.SCHEMA_TRADE_REQUIRED else: conf_schema['required'] = constants.SCHEMA_MINIMAL_REQUIRED + # Dynamically allow empty stake-currency + # Since the minimal config specifies this too. + # It's not allowed for Dry-run or live modes + conf_schema['properties']['stake_currency']['enum'] += [''] try: FreqtradeValidator(conf_schema).validate(conf) From 9382b38c41509e51495d48248b968d58bdf1e6df Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 10:56:00 +0100 Subject: [PATCH 1413/3421] Fix mypy error --- freqtrade/configuration/config_validation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index f7886eec2..6f56790f4 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -51,7 +51,7 @@ def validate_config_schema(conf: Dict[str, Any]) -> Dict[str, Any]: # Dynamically allow empty stake-currency # Since the minimal config specifies this too. # It's not allowed for Dry-run or live modes - conf_schema['properties']['stake_currency']['enum'] += [''] + conf_schema['properties']['stake_currency']['enum'] += [''] # type: ignore try: FreqtradeValidator(conf_schema).validate(conf) From 1b8943ac54fabbad046503efeac88f0425a6684a Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 10:59:10 +0100 Subject: [PATCH 1414/3421] Add documentation for tradable_balance_ratio --- config_full.json.example | 1 + docs/configuration.md | 7 +++++++ freqtrade/constants.py | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/config_full.json.example b/config_full.json.example index b9631f63d..4e692d371 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -2,6 +2,7 @@ "max_open_trades": 3, "stake_currency": "BTC", "stake_amount": 0.05, + "tradable_balance_ratio": 0.99, "fiat_display_currency": "USD", "amount_reserve_percent" : 0.05, "dry_run": false, diff --git a/docs/configuration.md b/docs/configuration.md index 90f0aa791..1acd6162c 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -43,6 +43,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades).
      ***Datatype:*** *Positive integer or -1.* | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#understand-stake_amount). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* +| `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. Only applies when `stake_amount="unlimited"`. [More information below](#understand-stake_amount).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.0` and `1.0`.* | `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      ***Datatype:*** *Positive Float as ratio.* | `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* @@ -144,6 +145,12 @@ To allow the bot to trade all the available `stake_currency` in your account set "stake_amount" : "unlimited", ``` +When using `stake_amount="unlimited"`, we recommend to also set `tradable_balance_ratio=0.99` (99%) - to keep a minimum balance for eventual fees. +This will keep 1% of your account balance "untradable" in your account. + +!!! Note: + This configuration will allow increasing / decreasing stakes depending on the performance of the bot (lower stake if bot is loosing, higher stakes if the bot has a winning record, since higher balances are available). + In this case a trade amount is calculated as: ```python diff --git a/freqtrade/constants.py b/freqtrade/constants.py index d7c6249d5..d5ba00cd5 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -73,6 +73,12 @@ CONF_SCHEMA = { 'minimum': 0.0001, 'pattern': UNLIMITED_STAKE_AMOUNT }, + 'tradable_balance_ratio': { + 'type': ['number'], + 'minimum': 0.1, + 'maximum': 1, + 'default': 0.99 + }, 'fiat_display_currency': {'type': 'string', 'enum': SUPPORTED_FIAT}, 'dry_run': {'type': 'boolean'}, 'dry_run_wallet': {'type': 'number', 'default': DRY_RUN_WALLET}, From f15e5e9d5715c233d49adbe692dd38215e71a769 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 2 Jan 2020 13:51:25 +0300 Subject: [PATCH 1415/3421] Add _notify_buy() --- freqtrade/freqtradebot.py | 42 +++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d5d918585..9570a80ef 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -400,8 +400,6 @@ class FreqtradeBot: :param pair: pair for which we want to create a LIMIT_BUY :return: None """ - stake_currency = self.config['stake_currency'] - fiat_currency = self.config.get('fiat_display_currency', None) time_in_force = self.strategy.order_time_in_force['buy'] if price: @@ -458,17 +456,6 @@ class FreqtradeBot: amount = order['amount'] buy_limit_filled_price = order['price'] - self.rpc.send_msg({ - 'type': RPCMessageType.BUY_NOTIFICATION, - 'exchange': self.exchange.name.capitalize(), - 'pair': pair, - 'limit': buy_limit_filled_price, - 'order_type': order_type, - 'stake_amount': stake_amount, - 'stake_currency': stake_currency, - 'fiat_currency': fiat_currency - }) - # Fee is applied twice because we make a LIMIT_BUY and LIMIT_SELL fee = self.exchange.get_fee(symbol=pair, taker_or_maker='maker') trade = Trade( @@ -486,6 +473,8 @@ class FreqtradeBot: ticker_interval=timeframe_to_minutes(self.config['ticker_interval']) ) + self._notify_buy(trade, order_type) + # Update fees if order is closed if order_status == 'closed': self.update_trade_state(trade, order) @@ -498,6 +487,30 @@ class FreqtradeBot: return True + def _notify_buy(self, trade: Trade, order_type: str): + """ + Sends rpc notification when a buy occured. + """ + msg = { + 'type': RPCMessageType.BUY_NOTIFICATION, + 'exchange': self.exchange.name.capitalize(), + 'pair': trade.pair, + 'limit': trade.open_rate, + 'order_type': order_type, + 'stake_amount': trade.stake_amount, + } + + if 'stake_currency' in self.config and 'fiat_display_currency' in self.config: + stake_currency = self.config['stake_currency'] + fiat_currency = self.config['fiat_display_currency'] + msg.update({ + 'stake_currency': stake_currency, + 'fiat_currency': fiat_currency, + }) + + # Send the message + self.rpc.send_msg(msg) + # # SELL / exit positions / close trades logic and methods # @@ -952,10 +965,9 @@ class FreqtradeBot: 'profit_percent': profit_percent, 'sell_reason': trade.sell_reason, 'open_date': trade.open_date, - 'close_date': trade.close_date or datetime.utcnow() + 'close_date': trade.close_date or datetime.utcnow(), } - # For regular case, when the configuration exists if 'stake_currency' in self.config and 'fiat_display_currency' in self.config: stake_currency = self.config['stake_currency'] fiat_currency = self.config['fiat_display_currency'] From 88efa4065bdcb222091d9594c2cb86a5a8b03461 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 2 Jan 2020 13:56:16 +0300 Subject: [PATCH 1416/3421] Align the name of a variable to be same for buy and sell parts --- freqtrade/freqtradebot.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 9570a80ef..5e6ffbfde 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -913,16 +913,16 @@ class FreqtradeBot: except InvalidOrderException: logger.exception(f"Could not cancel stoploss order {trade.stoploss_order_id}") - ordertype = self.strategy.order_types[sell_type] + order_type = self.strategy.order_types[sell_type] if sell_reason == SellType.EMERGENCY_SELL: # Emergencysells (default to market!) - ordertype = self.strategy.order_types.get("emergencysell", "market") + order_type = self.strategy.order_types.get("emergencysell", "market") amount = self._safe_sell_amount(trade.pair, trade.amount) # Execute sell and update trade record order = self.exchange.sell(pair=str(trade.pair), - ordertype=ordertype, + ordertype=order_type, amount=amount, rate=limit, time_in_force=self.strategy.order_time_in_force['sell'] ) @@ -938,7 +938,7 @@ class FreqtradeBot: # Lock pair for one candle to prevent immediate rebuys self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['ticker_interval'])) - self._notify_sell(trade, ordertype) + self._notify_sell(trade, order_type) def _notify_sell(self, trade: Trade, order_type: str): """ From a47a25ca8889667bfec6cd948a2773b471cff87a Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 2 Jan 2020 14:38:25 +0300 Subject: [PATCH 1417/3421] Refine passing msg params --- freqtrade/freqtradebot.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5e6ffbfde..c18d9131f 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -498,16 +498,10 @@ class FreqtradeBot: 'limit': trade.open_rate, 'order_type': order_type, 'stake_amount': trade.stake_amount, + 'stake_currency': self.config['stake_currency'], + 'fiat_currency': self.config.get('fiat_display_currency', None), } - if 'stake_currency' in self.config and 'fiat_display_currency' in self.config: - stake_currency = self.config['stake_currency'] - fiat_currency = self.config['fiat_display_currency'] - msg.update({ - 'stake_currency': stake_currency, - 'fiat_currency': fiat_currency, - }) - # Send the message self.rpc.send_msg(msg) @@ -966,13 +960,12 @@ class FreqtradeBot: 'sell_reason': trade.sell_reason, 'open_date': trade.open_date, 'close_date': trade.close_date or datetime.utcnow(), + 'stake_currency': self.config['stake_currency'], } - if 'stake_currency' in self.config and 'fiat_display_currency' in self.config: - stake_currency = self.config['stake_currency'] + if 'fiat_display_currency' in self.config: fiat_currency = self.config['fiat_display_currency'] msg.update({ - 'stake_currency': stake_currency, 'fiat_currency': fiat_currency, }) From 64db1f67365b128e8a9d9eb04893cbb5c5a8dd9c Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 13:16:18 +0100 Subject: [PATCH 1418/3421] Prepare tests to valiate reduced full amount. --- tests/test_freqtradebot.py | 15 ++++++++++----- tests/test_integration.py | 15 +++++++++++---- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 1c17ce735..dc17ddaaa 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -150,11 +150,14 @@ def test_get_trade_stake_amount_no_stake_amount(default_conf, mocker) -> None: freqtrade.get_trade_stake_amount('ETH/BTC') -def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, - limit_buy_order, fee, mocker) -> None: +@pytest.mark.parametrize("balance_ratio,result1,result2", [ + (1, 0.005, 0.005), + (0.99, 0.00495, 0.00495), + ]) +def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, balance_ratio, result1, + result2, limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) - patch_wallet(mocker, free=default_conf['stake_amount']) mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, @@ -164,20 +167,22 @@ def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, conf = deepcopy(default_conf) conf['stake_amount'] = UNLIMITED_STAKE_AMOUNT + conf['dry_run_wallet'] = 0.01 conf['max_open_trades'] = 2 + conf['tradable_balance_ratio'] = balance_ratio freqtrade = FreqtradeBot(conf) patch_get_signal(freqtrade) # no open trades, order amount should be 'balance / max_open_trades' result = freqtrade.get_trade_stake_amount('ETH/BTC') - assert result == default_conf['stake_amount'] / conf['max_open_trades'] + assert result == result1 # create one trade, order amount should be 'balance / (max_open_trades - num_open_trades)' freqtrade.execute_buy('ETH/BTC', result) result = freqtrade.get_trade_stake_amount('LTC/BTC') - assert result == default_conf['stake_amount'] / (conf['max_open_trades'] - 1) + assert result == result2 # create 2 trades, order amount should be None freqtrade.execute_buy('LTC/BTC', result) diff --git a/tests/test_integration.py b/tests/test_integration.py index 1108969ad..d1be961cf 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -1,10 +1,11 @@ - from unittest.mock import MagicMock +import pytest + from freqtrade.persistence import Trade +from freqtrade.rpc.rpc import RPC from freqtrade.strategy.interface import SellCheckTuple, SellType from tests.conftest import get_patched_freqtradebot, patch_get_signal -from freqtrade.rpc.rpc import RPC def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, @@ -112,13 +113,19 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, assert not trade.is_open -def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, mocker) -> None: +@pytest.mark.parametrize("balance_ratio,result1", [ + (1, 200), + (0.99, 198), +]) +def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, mocker, balance_ratio, + result1) -> None: """ Tests workflow """ default_conf['max_open_trades'] = 5 default_conf['forcebuy_enable'] = True default_conf['stake_amount'] = 'unlimited' + default_conf['tradable_balance_ratio'] = balance_ratio default_conf['dry_run_wallet'] = 1000 default_conf['exchange']['name'] = 'binance' default_conf['telegram']['enabled'] = True @@ -165,7 +172,7 @@ def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, moc assert len(trades) == 5 for trade in trades: - assert trade.stake_amount == 200 + assert trade.stake_amount == result1 # Reset trade open order id's trade.open_order_id = None trades = Trade.get_open_trades() From cba156dfff18d634440f1c4d7e46f95475f97f7f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 13:20:57 +0100 Subject: [PATCH 1419/3421] Add offset calculation for relative stake maximum limit --- freqtrade/freqtradebot.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d5d918585..6a6a14375 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -278,7 +278,15 @@ class FreqtradeBot: free_open_trades = self.get_free_open_trades() if not free_open_trades: return None - available_amount = self.wallets.get_free(self.config['stake_currency']) + + val_tied_up = Trade.total_open_trades_stakes() + + # Ensure 1% is used from the overall balance + # Otherwise we'd risk lowering stakes with each open trade. + # (tied up + current free) * ratio) - tied up + available_amount = ((val_tied_up + self.wallets.get_free(self.config['stake_currency'])) * + self.config['tradable_balance_ratio']) - val_tied_up + return available_amount / free_open_trades def _check_available_stake_amount(self, stake_amount: Optional[float]) -> Optional[float]: From bfef3cf497425fad61f00382119938ea39357eb4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 13:37:35 +0100 Subject: [PATCH 1420/3421] Add additional test case for lower balance ratios --- tests/test_freqtradebot.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index dc17ddaaa..9ca54d003 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -150,12 +150,13 @@ def test_get_trade_stake_amount_no_stake_amount(default_conf, mocker) -> None: freqtrade.get_trade_stake_amount('ETH/BTC') -@pytest.mark.parametrize("balance_ratio,result1,result2", [ - (1, 0.005, 0.005), - (0.99, 0.00495, 0.00495), +@pytest.mark.parametrize("balance_ratio,result1", [ + (1, 0.005), + (0.99, 0.00495), + (0.50, 0.0025), ]) def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, balance_ratio, result1, - result2, limit_buy_order, fee, mocker) -> None: + limit_buy_order, fee, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -182,7 +183,7 @@ def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, balance_r freqtrade.execute_buy('ETH/BTC', result) result = freqtrade.get_trade_stake_amount('LTC/BTC') - assert result == result2 + assert result == result1 # create 2 trades, order amount should be None freqtrade.execute_buy('LTC/BTC', result) From 94afb7cb1dff0c8d0d92d785fd9aed5854b17a66 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 13:45:03 +0100 Subject: [PATCH 1421/3421] Improve integration test with a few additional tests --- tests/test_integration.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/test_integration.py b/tests/test_integration.py index d1be961cf..98bf1862b 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -120,7 +120,10 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, mocker, balance_ratio, result1) -> None: """ - Tests workflow + Tests workflow unlimited stake-amount + Buy 4 trades, forcebuy a 5th trade + Sell one trade, calculated stake amount should now be lower than before since + one trade was sold at a loss. """ default_conf['max_open_trades'] = 5 default_conf['forcebuy_enable'] = True @@ -166,6 +169,8 @@ def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, moc trades = Trade.query.all() assert len(trades) == 4 + assert freqtrade.get_trade_stake_amount('XRP/BTC') == result1 + rpc._rpc_forcebuy('TKN/BTC', None) trades = Trade.query.all() @@ -184,6 +189,8 @@ def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, moc trades = Trade.get_open_trades() # One trade sold assert len(trades) == 4 + # stake-amount should now be reduced, since one trade was sold at a loss. + assert freqtrade.get_trade_stake_amount('XRP/BTC') < result1 # Validate that balance of sold trade is not in dry-run balances anymore. bals2 = freqtrade.wallets.get_all_balances() assert bals != bals2 From 6e615998c07809a99f1a82598ec07f2d8925c645 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 13:52:35 +0100 Subject: [PATCH 1422/3421] Fix documentation typo --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 1acd6162c..594b79050 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -148,7 +148,7 @@ To allow the bot to trade all the available `stake_currency` in your account set When using `stake_amount="unlimited"`, we recommend to also set `tradable_balance_ratio=0.99` (99%) - to keep a minimum balance for eventual fees. This will keep 1% of your account balance "untradable" in your account. -!!! Note: +!!! Note This configuration will allow increasing / decreasing stakes depending on the performance of the bot (lower stake if bot is loosing, higher stakes if the bot has a winning record, since higher balances are available). In this case a trade amount is calculated as: From c13c11cfa19050ee430dcd31ba95b951eb32918e Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 14:41:28 +0100 Subject: [PATCH 1423/3421] Type does not need to be a list --- freqtrade/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index d5ba00cd5..dd3c07e69 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -74,7 +74,7 @@ CONF_SCHEMA = { 'pattern': UNLIMITED_STAKE_AMOUNT }, 'tradable_balance_ratio': { - 'type': ['number'], + 'type': 'number', 'minimum': 0.1, 'maximum': 1, 'default': 0.99 From b48bf035f6758bedf5773ec9b1b1ed98ca3477ae Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 14:52:34 +0100 Subject: [PATCH 1424/3421] Add note about MacOS installation --- docs/installation.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/installation.md b/docs/installation.md index 27b7a94c5..f7dce8787 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -270,3 +270,19 @@ The easiest way is to download install Microsoft Visual Studio Community [here]( Now you have an environment ready, the next step is [Bot Configuration](configuration.md). + + +## Trouble shooting + +### MacOS installation error + +Newer versions of MacOS may have installation fail with errors like `error: command 'g++' failed with exit status 1`. + +This error will require an explicit installation of the SDK Headers, which are not installed by default in this version of MacOS. +For MacOS 10.14, this can be accomplished with the below command. + +``` bash +open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg +``` + +If this file is inexistant, then you're probably on a different version of MacOS, so you may need to consult the internet for specific resolution details. From 90744ff5abe262ef4d0731d966c5d8ad74ade076 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 19:36:31 +0100 Subject: [PATCH 1425/3421] show percent instead of ratio (!) --- freqtrade/plot/plotting.py | 4 ++-- tests/test_plotting.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index db4637ee5..e1989b249 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -120,8 +120,8 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: ) ) # Create description for sell summarizing the trade - desc = trades.apply(lambda row: f"{round(row['profitperc'], 3)}%, {row['sell_reason']}, " - f"{row['duration']} min", + desc = trades.apply(lambda row: f"{round(row['profitperc'] * 100, 1)}%, " + f"{row['sell_reason']}, {row['duration']} min", axis=1) trade_sells = go.Scatter( x=trades["close_time"], diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 9934d2493..271246517 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -119,6 +119,7 @@ def test_plot_trades(testdatadir, caplog): assert trade_sell.yaxis == 'y' assert len(trades) == len(trade_sell.x) assert trade_sell.marker.color == 'red' + assert trade_sell.text[0] == "4.0%, roi, 15 min" def test_generate_candlestick_graph_no_signals_no_trades(default_conf, mocker, testdatadir, caplog): From 560aea876efa6aaaec65f7def6c58a9c4613d33a Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jan 2020 20:20:29 +0100 Subject: [PATCH 1426/3421] Remove fiat_currency temporary variable --- freqtrade/freqtradebot.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c18d9131f..373055165 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -964,9 +964,8 @@ class FreqtradeBot: } if 'fiat_display_currency' in self.config: - fiat_currency = self.config['fiat_display_currency'] msg.update({ - 'fiat_currency': fiat_currency, + 'fiat_currency': self.config['fiat_display_currency'], }) # Send the message From da1fea6582790e99b3cd69688dd6dfb7c3b57e00 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 06:37:36 +0100 Subject: [PATCH 1427/3421] Minor correction to wording of MacOS Specific install doc --- docs/installation.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index f7dce8787..267d91c8d 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -271,14 +271,13 @@ The easiest way is to download install Microsoft Visual Studio Community [here]( Now you have an environment ready, the next step is [Bot Configuration](configuration.md). - -## Trouble shooting +## Troubleshooting ### MacOS installation error -Newer versions of MacOS may have installation fail with errors like `error: command 'g++' failed with exit status 1`. +Newer versions of MacOS may have installation failed with errors like `error: command 'g++' failed with exit status 1`. -This error will require an explicit installation of the SDK Headers, which are not installed by default in this version of MacOS. +This error will require explicit installation of the SDK Headers, which are not installed by default in this version of MacOS. For MacOS 10.14, this can be accomplished with the below command. ``` bash From 11059e532bf444c42daca77e31405d9e9b44f9a6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 06:39:47 +0100 Subject: [PATCH 1428/3421] Fix missed default minimum in documentation --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 594b79050..2f7ef9f29 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -43,7 +43,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades).
      ***Datatype:*** *Positive integer or -1.* | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#understand-stake_amount). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* -| `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. Only applies when `stake_amount="unlimited"`. [More information below](#understand-stake_amount).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.0` and `1.0`.* +| `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. Only applies when `stake_amount="unlimited"`. [More information below](#understand-stake_amount).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.1` and `1.0`.* | `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      ***Datatype:*** *Positive Float as ratio.* | `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* From a8d56b28503f62cae1f729cf27955fc98b7b6f39 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 07:07:59 +0100 Subject: [PATCH 1429/3421] IMplement check for unlimited settings verifying that either max_open_trades or stake_amount is set for operations without edge --- freqtrade/configuration/config_validation.py | 12 ++++++++++++ tests/test_configuration.py | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 43eead46a..02dee2afe 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -67,12 +67,24 @@ def validate_config_consistency(conf: Dict[str, Any]) -> None: _validate_trailing_stoploss(conf) _validate_edge(conf) _validate_whitelist(conf) + _validate_unlimited_amount(conf) # validate configuration before returning logger.info('Validating configuration ...') validate_config_schema(conf) +def _validate_unlimited_amount(conf: Dict[str, Any]) -> None: + """ + If edge is disabled, either max_open_trades or stake_amount need to be set. + :raise: OperationalException if config validation failed + """ + if (not conf.get('edge', {}).get('enabled') + and conf.get('max_open_trades') == float('inf') + and conf.get('stake_amount') == constants.UNLIMITED_STAKE_AMOUNT): + raise OperationalException("`max_open_trades` and `stake_amount` cannot both be unlimited.") + + def _validate_trailing_stoploss(conf: Dict[str, Any]) -> None: if conf.get('stoploss') == 0.0: diff --git a/tests/test_configuration.py b/tests/test_configuration.py index ee3d23131..6c0035395 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -722,6 +722,14 @@ def test_validate_default_conf(default_conf) -> None: validate_config_schema(default_conf) +def test_validate_max_open_trades(default_conf): + default_conf['max_open_trades'] = float('inf') + default_conf['stake_amount'] = 'unlimited' + with pytest.raises(OperationalException, match='`max_open_trades` and `stake_amount` ' + 'cannot both be unlimited.'): + validate_config_consistency(default_conf) + + def test_validate_tsl(default_conf): default_conf['stoploss'] = 0.0 with pytest.raises(OperationalException, match='The config stoploss needs to be different ' From 4ac1ac7ef5c227eee989219e420fe46163f95622 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 09:56:06 +0100 Subject: [PATCH 1430/3421] Warn about tradable balance being applied to the current amount of the balance --- docs/configuration.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/configuration.md b/docs/configuration.md index 2f7ef9f29..4448f4548 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -157,6 +157,9 @@ In this case a trade amount is calculated as: currency_balance / (max_open_trades - current_open_trades) ``` +!!! Warning + `tradable_balance_ratio` applies to the current balance (free balance + tied up in trades). Therefore, assuming a starting balance of 1000, a configuration of `tradable_balance_ratio=0.99` will not guarantee that 10 units will always remain available on the exchange. The free amount may reduce to 5 units if the total balance is reduce to 500 (either by a losing streak, or by withdrawing balance). + !!! Note "When using Dry-Run Mode" When using `"stake_amount" : "unlimited",` in combination with Dry-Run, the balance will be simulated starting with a stake of `dry_run_wallet` which will evolve over time. It is therefore important to set `dry_run_wallet` to a sensible value (like 0.05 or 0.01 for BTC and 1000 or 100 for USDT, for example), otherwise it may simulate trades with 100 BTC (or more) or 0.05 USDT (or less) at once - which may not correspond to your real available balance or is less than the exchange minimal limit for the order amount for the stake currency. From 3c7981160c3407e8a5c0c5a8d02b5ec2d362d61d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 10:14:23 +0100 Subject: [PATCH 1431/3421] Extract `get_available_stake_amount` --- freqtrade/freqtradebot.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 6a6a14375..bdba74215 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -270,6 +270,22 @@ class FreqtradeBot: return self._check_available_stake_amount(stake_amount) + def _get_available_stake_amount(self) -> float: + """ + Return the total currently available balance in stake currency, + respecting tradable_balance_ratio. + Calculated as + + free amount ) * tradable_balance_ratio - + """ + val_tied_up = Trade.total_open_trades_stakes() + + # Ensure % is used from the overall balance + # Otherwise we'd risk lowering stakes with each open trade. + # (tied up + current free) * ratio) - tied up + available_amount = ((val_tied_up + self.wallets.get_free(self.config['stake_currency'])) * + self.config['tradable_balance_ratio']) - val_tied_up + return available_amount + def _calculate_unlimited_stake_amount(self) -> Optional[float]: """ Calculate stake amount for "unlimited" stake amount @@ -279,13 +295,7 @@ class FreqtradeBot: if not free_open_trades: return None - val_tied_up = Trade.total_open_trades_stakes() - - # Ensure 1% is used from the overall balance - # Otherwise we'd risk lowering stakes with each open trade. - # (tied up + current free) * ratio) - tied up - available_amount = ((val_tied_up + self.wallets.get_free(self.config['stake_currency'])) * - self.config['tradable_balance_ratio']) - val_tied_up + available_amount = self._get_available_stake_amount() return available_amount / free_open_trades From 455838648da4dab24c1d5193764c880542faf406 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 10:41:10 +0100 Subject: [PATCH 1432/3421] Apply get_available_balance logic to regular trades, too --- freqtrade/freqtradebot.py | 2 +- tests/test_freqtradebot.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index bdba74215..aa47adfd4 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -305,7 +305,7 @@ class FreqtradeBot: for the stake currency :return: float: Stake amount """ - available_amount = self.wallets.get_free(self.config['stake_currency']) + available_amount = self._get_available_stake_amount() if stake_amount is not None and available_amount < stake_amount: raise DependencyException( diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 9ca54d003..a2e6789ef 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3628,6 +3628,7 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order, # Initialize to 2 times stake amount default_conf['dry_run_wallet'] = 0.002 default_conf['max_open_trades'] = 2 + default_conf['tradable_balance_ratio'] = 1.0 patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -3649,5 +3650,5 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order, n = bot.enter_positions() assert n == 0 assert log_has_re(r"Unable to create trade for XRP/BTC: " - r"Available balance \(0 BTC\) is lower than stake amount \(0.001 BTC\)", + r"Available balance \(0.0 BTC\) is lower than stake amount \(0.001 BTC\)", caplog) From 6d01653bfec14900cd75fb0938a8c196f9ff8e20 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 10:41:34 +0100 Subject: [PATCH 1433/3421] Adapt test to test more cases with reduced tradable_balance --- tests/test_freqtradebot.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index a2e6789ef..c8b627ca4 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -641,11 +641,15 @@ def test_create_trade_no_signal(default_conf, fee, mocker) -> None: @pytest.mark.parametrize("max_open", range(0, 5)) -def test_create_trades_multiple_trades(default_conf, ticker, - fee, mocker, max_open) -> None: +@pytest.mark.parametrize("tradable_balance_ratio,modifier", [(1.0, 1), (0.99, 0.8), (0.5, 0.5)]) +def test_create_trades_multiple_trades(default_conf, ticker, fee, mocker, + max_open, tradable_balance_ratio, modifier) -> None: patch_RPCManager(mocker) patch_exchange(mocker) default_conf['max_open_trades'] = max_open + default_conf['tradable_balance_ratio'] = tradable_balance_ratio + default_conf['dry_run_wallet'] = 0.001 * max_open + mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, @@ -656,10 +660,11 @@ def test_create_trades_multiple_trades(default_conf, ticker, patch_get_signal(freqtrade) n = freqtrade.enter_positions() - assert n == max_open - trades = Trade.get_open_trades() - assert len(trades) == max_open + # Expected trades should be max_open * a modified value + # depending on the configured tradable_balance + assert n == max(int(max_open * modifier), 0) + assert len(trades) == max(int(max_open * modifier), 0) def test_create_trades_preopen(default_conf, ticker, fee, mocker) -> None: From f3beaa3374eae8300b5f845cb68dca4e16b1f9a8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 10:58:31 +0100 Subject: [PATCH 1434/3421] Deprecate capital_available_percentage --- config.json.example | 1 - config_binance.json.example | 1 - config_full.json.example | 1 - config_kraken.json.example | 1 - docs/configuration.md | 2 +- docs/edge.md | 2 +- freqtrade/configuration/deprecated_settings.py | 10 ++++++++++ freqtrade/constants.py | 2 +- freqtrade/edge/__init__.py | 4 +++- tests/conftest.py | 2 +- tests/test_configuration.py | 10 ++++++++++ 11 files changed, 27 insertions(+), 9 deletions(-) diff --git a/config.json.example b/config.json.example index a2add358f..d46582d2b 100644 --- a/config.json.example +++ b/config.json.example @@ -59,7 +59,6 @@ "enabled": false, "process_throttle_secs": 3600, "calculate_since_number_of_days": 7, - "capital_available_percentage": 0.5, "allowed_risk": 0.01, "stoploss_range_min": -0.01, "stoploss_range_max": -0.1, diff --git a/config_binance.json.example b/config_binance.json.example index 8dc6f5c3a..11c309053 100644 --- a/config_binance.json.example +++ b/config_binance.json.example @@ -64,7 +64,6 @@ "enabled": false, "process_throttle_secs": 3600, "calculate_since_number_of_days": 7, - "capital_available_percentage": 0.5, "allowed_risk": 0.01, "stoploss_range_min": -0.01, "stoploss_range_max": -0.1, diff --git a/config_full.json.example b/config_full.json.example index 4e692d371..981fc5209 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -97,7 +97,6 @@ "enabled": false, "process_throttle_secs": 3600, "calculate_since_number_of_days": 7, - "capital_available_percentage": 0.5, "allowed_risk": 0.01, "stoploss_range_min": -0.01, "stoploss_range_max": -0.1, diff --git a/config_kraken.json.example b/config_kraken.json.example index 401ee7c9f..3cac29cef 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -70,7 +70,6 @@ "enabled": false, "process_throttle_secs": 3600, "calculate_since_number_of_days": 7, - "capital_available_percentage": 0.5, "allowed_risk": 0.01, "stoploss_range_min": -0.01, "stoploss_range_max": -0.1, diff --git a/docs/configuration.md b/docs/configuration.md index 4448f4548..d0450f5c9 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -43,7 +43,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades).
      ***Datatype:*** *Positive integer or -1.* | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#understand-stake_amount). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* -| `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. Only applies when `stake_amount="unlimited"`. [More information below](#understand-stake_amount).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.1` and `1.0`.* +| `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#understand-stake_amount).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.1` and `1.0`.* | `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      ***Datatype:*** *Positive Float as ratio.* | `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* diff --git a/docs/edge.md b/docs/edge.md index e7909594e..95f3de42e 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -148,7 +148,7 @@ Edge module has following configuration options: | `enabled` | If true, then Edge will run periodically.
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* | `process_throttle_secs` | How often should Edge run in seconds.
      *Defaults to `3600` (once per hour).*
      ***Datatype:*** *Integer* | `calculate_since_number_of_days` | Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy.
      **Note** that it downloads historical data so increasing this number would lead to slowing down the bot.
      *Defaults to `7`.*
      ***Datatype:*** *Integer* -| `capital_available_percentage` | This is the percentage of the total capital on exchange in stake currency.
      As an example if you have 10 ETH available in your wallet on the exchange and this value is 0.5 (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers it as available capital.
      *Defaults to `0.5`.*
      ***Datatype:*** *Float* +| `capital_available_percentage` | **DEPRECATED - replaced with `tradable_balance_ratio`** This is the percentage of the total capital on exchange in stake currency.
      As an example if you have 10 ETH available in your wallet on the exchange and this value is 0.5 (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers it as available capital.
      *Defaults to `0.5`.*
      ***Datatype:*** *Float* | `allowed_risk` | Ratio of allowed risk per trade.
      *Defaults to `0.01` (1%)).*
      ***Datatype:*** *Float* | `stoploss_range_min` | Minimum stoploss.
      *Defaults to `-0.01`.*
      ***Datatype:*** *Float* | `stoploss_range_max` | Maximum stoploss.
      *Defaults to `-0.10`.*
      ***Datatype:*** *Float* diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index 260aae419..a104bf6e3 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -80,3 +80,13 @@ def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None: f"Using precision_filter setting is deprecated and has been replaced by" "PrecisionFilter. Please refer to the docs on configuration details") config['pairlists'].append({'method': 'PrecisionFilter'}) + + if (config.get('edge', {}.get('enabled', False)) + and config.get('edge', {}).get('capital_available_percentage')): + logger.warning( + "DEPRECATED: " + "Using 'edge.capital_available_percentage' has been deprecated in favor of " + "'tradable_balance_ratio'. Please migrate your configuration to " + "'tradable_balance_ratio' and remove 'capital_available_percentage' " + "from the edge configuration." + ) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index dd3c07e69..7dd75c438 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -272,7 +272,7 @@ CONF_SCHEMA = { 'max_trade_duration_minute': {'type': 'integer'}, 'remove_pumps': {'type': 'boolean'} }, - 'required': ['process_throttle_secs', 'allowed_risk', 'capital_available_percentage'] + 'required': ['process_throttle_secs', 'allowed_risk'] } }, 'required': [ diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index 19d65d9d7..15883357b 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -57,7 +57,9 @@ class Edge: if self.config['stake_amount'] != constants.UNLIMITED_STAKE_AMOUNT: raise OperationalException('Edge works only with unlimited stake amount') - self._capital_percentage: float = self.edge_config.get('capital_available_percentage') + # Deprecated capital_available_percentage. Will use tradable_balance_ratio in the future. + self._capital_percentage: float = self.edge_config.get( + 'capital_available_percentage', self.config['tradable_balance_ratio']) self._allowed_risk: float = self.edge_config.get('allowed_risk') self._since_number_of_days: int = self.edge_config.get('calculate_since_number_of_days', 14) self._last_updated: int = 0 # Timestamp of pairs last updated time diff --git a/tests/conftest.py b/tests/conftest.py index 501f89fff..7bb4cf4c9 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1317,12 +1317,12 @@ def buy_order_fee(): def edge_conf(default_conf): conf = deepcopy(default_conf) conf['max_open_trades'] = -1 + conf['tradable_balance_ratio'] = 0.5 conf['stake_amount'] = constants.UNLIMITED_STAKE_AMOUNT conf['edge'] = { "enabled": True, "process_throttle_secs": 1800, "calculate_since_number_of_days": 14, - "capital_available_percentage": 0.5, "allowed_risk": 0.01, "stoploss_range_min": -0.01, "stoploss_range_max": -0.1, diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 6c0035395..3e7b51c0e 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -1036,6 +1036,16 @@ def test_process_deprecated_setting_pairlists(mocker, default_conf, caplog): assert log_has_re(r'DEPRECATED.*in pairlist is deprecated and must be moved*', caplog) +def test_process_deprecated_setting_edge(mocker, edge_conf, caplog): + patched_configuration_load_config_file(mocker, edge_conf) + edge_conf.update({'edge': { + 'capital_available_percentage': 0.5, + }}) + + process_temporary_deprecated_settings(edge_conf) + assert log_has_re(r"DEPRECATED.*Using 'edge.capital_available_percentage'*", caplog) + + def test_check_conflicting_settings(mocker, default_conf, caplog): patched_configuration_load_config_file(mocker, default_conf) From 0dd274917f820e6fc4892503ea7b09a4f5f42b7d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 11:16:59 +0100 Subject: [PATCH 1435/3421] Update documentation regarding configuration of stake_amount --- docs/configuration.md | 56 +++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index d0450f5c9..e9756e8ac 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -40,10 +40,10 @@ Mandatory parameters are marked as **Required**, which means that they are requi | Parameter | Description | |------------|-------------| -| `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades).
      ***Datatype:*** *Positive integer or -1.* +| `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades). [More information below](#configuring-amount-per-trade).
      ***Datatype:*** *Positive integer or -1.* | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* -| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#understand-stake_amount). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* -| `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#understand-stake_amount).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.1` and `1.0`.* +| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* +| `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.1` and `1.0`.* | `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      ***Datatype:*** *Positive Float as ratio.* | `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* @@ -130,26 +130,39 @@ Values set in the configuration file always overwrite values set in the strategy * `sell_profit_only` (ask_strategy) * `ignore_roi_if_buy_signal` (ask_strategy) -### Understand stake_amount +### Configuring amount per trade -The `stake_amount` configuration parameter is an amount of crypto-currency your bot will use for each trade. +There are several methods to configure how much of the stake currency the bot will use to enter a trade. All methods respect the [available balance configuration](#available-balance) as explained below. -The minimal configuration value is 0.0001. Please check your exchange's trading minimums to avoid problems. +#### Available balance + +By default, the bot assumes that the `complete amount - 1%` is at it's disposal, and when using [dynamic stake amount](#dynamic-stake-amount), it will split the complete balance into `max_open_trades` buckets per trade. +Freqtrade will reserve 1% for eventual fees when entering a trade and will therefore not touch that by default. + +You can configure the "untouched" amount by using the `tradable_balance_ratio` setting. + +For example, if you have 10 ETH available in your wallet on the exchange and `tradable_balance_ratio=0.5` (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers this as available balance. + +!!! Warning + `tradable_balance_ratio` applies to the current balance (free balance + tied up in trades). Therefore, assuming a starting balance of 1000, a configuration of `tradable_balance_ratio=0.99` will not guarantee that 10 units will always remain available on the exchange. The free amount may reduce to 5 units if the total balance is reduce to 500 (either by a losing streak, or by withdrawing balance). + +#### Static Stake amount + +The `stake_amount` configuration statically configures the amount of stake-currency your bot will use for each trade. + +The minimal configuration value is 0.0001, however, please check your exchange's trading minimums for the stake currency you're using to avoid problems. This setting works in combination with `max_open_trades`. The maximum capital engaged in trades is `stake_amount * max_open_trades`. For example, the bot will at most use (0.05 BTC x 3) = 0.15 BTC, assuming a configuration of `max_open_trades=3` and `stake_amount=0.05`. -To allow the bot to trade all the available `stake_currency` in your account set - -```json -"stake_amount" : "unlimited", -``` - -When using `stake_amount="unlimited"`, we recommend to also set `tradable_balance_ratio=0.99` (99%) - to keep a minimum balance for eventual fees. -This will keep 1% of your account balance "untradable" in your account. - !!! Note - This configuration will allow increasing / decreasing stakes depending on the performance of the bot (lower stake if bot is loosing, higher stakes if the bot has a winning record, since higher balances are available). + This setting respects the [available balance configuration](#available-balance). + +#### Dynamic stake amount + +Alternatively, you can use a dynamic stake amount, which will use the available balance on the exchange, and divide that equally by the amount of allowed trades (`max_open_trades`). + +To configure this, set `stake_amount="unlimited"`. We also recommend to set `tradable_balance_ratio=0.99` (99%) - to keep a minimum balance for eventual fees. In this case a trade amount is calculated as: @@ -157,8 +170,15 @@ In this case a trade amount is calculated as: currency_balance / (max_open_trades - current_open_trades) ``` -!!! Warning - `tradable_balance_ratio` applies to the current balance (free balance + tied up in trades). Therefore, assuming a starting balance of 1000, a configuration of `tradable_balance_ratio=0.99` will not guarantee that 10 units will always remain available on the exchange. The free amount may reduce to 5 units if the total balance is reduce to 500 (either by a losing streak, or by withdrawing balance). +To allow the bot to trade all the available `stake_currency` in your account (minus `tradable_balance_ratio`) set + +```json +"stake_amount" : "unlimited", +"tradable_balance_ratio": 0.99, +``` + +!!! Note + This configuration will allow increasing / decreasing stakes depending on the performance of the bot (lower stake if bot is loosing, higher stakes if the bot has a winning record, since higher balances are available). !!! Note "When using Dry-Run Mode" When using `"stake_amount" : "unlimited",` in combination with Dry-Run, the balance will be simulated starting with a stake of `dry_run_wallet` which will evolve over time. It is therefore important to set `dry_run_wallet` to a sensible value (like 0.05 or 0.01 for BTC and 1000 or 100 for USDT, for example), otherwise it may simulate trades with 100 BTC (or more) or 0.05 USDT (or less) at once - which may not correspond to your real available balance or is less than the exchange minimal limit for the order amount for the stake currency. From 55041878ae7da0758a8e58d2c1add3139e54fcbb Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 11:20:08 +0100 Subject: [PATCH 1436/3421] Update Backtesting fee documentation --- docs/backtesting.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index ac7c8e11a..c2359b370 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -79,12 +79,14 @@ Please also read about the [strategy startup period](strategy-customization.md#s Sometimes your account has certain fee rebates (fee reductions starting with a certain account size or monthly volume), which are not visible to ccxt. To account for this in backtesting, you can use `--fee 0.001` to supply this value to backtesting. -This fee must be a percentage, and will be applied twice (once for trade entry, and once for trade exit). +This fee must be a ratio, and will be applied twice (once for trade entry, and once for trade exit). ```bash freqtrade backtesting --fee 0.001 ``` +!!! Note + Only supply this parameter if you want to experiment with different fee values. By default, Backtesting fetches the exchange's default fee from the exchange. #### Running backtest with smaller testset by using timerange From 71dd0386640e675771881395e19163ce1131df41 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 11:23:06 +0100 Subject: [PATCH 1437/3421] add tradable_balance_ratio to to all config samples --- config.json.example | 1 + config_binance.json.example | 1 + config_kraken.json.example | 1 + 3 files changed, 3 insertions(+) diff --git a/config.json.example b/config.json.example index d46582d2b..8b85e71eb 100644 --- a/config.json.example +++ b/config.json.example @@ -2,6 +2,7 @@ "max_open_trades": 3, "stake_currency": "BTC", "stake_amount": 0.05, + "tradable_balance_ratio": 0.99, "fiat_display_currency": "USD", "ticker_interval" : "5m", "dry_run": false, diff --git a/config_binance.json.example b/config_binance.json.example index 11c309053..0521a3a35 100644 --- a/config_binance.json.example +++ b/config_binance.json.example @@ -2,6 +2,7 @@ "max_open_trades": 3, "stake_currency": "BTC", "stake_amount": 0.05, + "tradable_balance_ratio": 0.99, "fiat_display_currency": "USD", "ticker_interval" : "5m", "dry_run": true, diff --git a/config_kraken.json.example b/config_kraken.json.example index 3cac29cef..a527b569d 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -2,6 +2,7 @@ "max_open_trades": 5, "stake_currency": "EUR", "stake_amount": 10, + "tradable_balance_ratio": 0.99, "fiat_display_currency": "EUR", "ticker_interval" : "5m", "dry_run": true, From 7e7c82cf4a80cd7d70a3a0317cf7158cefd9c6f5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 11:34:17 +0100 Subject: [PATCH 1438/3421] Small adjustments to relative_stake PR --- docs/configuration.md | 2 +- docs/edge.md | 2 +- freqtrade/configuration/deprecated_settings.py | 4 ++-- tests/test_configuration.py | 1 + 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index e9756e8ac..3b8760366 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -146,7 +146,7 @@ For example, if you have 10 ETH available in your wallet on the exchange and `tr !!! Warning `tradable_balance_ratio` applies to the current balance (free balance + tied up in trades). Therefore, assuming a starting balance of 1000, a configuration of `tradable_balance_ratio=0.99` will not guarantee that 10 units will always remain available on the exchange. The free amount may reduce to 5 units if the total balance is reduce to 500 (either by a losing streak, or by withdrawing balance). -#### Static Stake amount +#### Static stake amount The `stake_amount` configuration statically configures the amount of stake-currency your bot will use for each trade. diff --git a/docs/edge.md b/docs/edge.md index 95f3de42e..dcefe7451 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -148,7 +148,7 @@ Edge module has following configuration options: | `enabled` | If true, then Edge will run periodically.
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* | `process_throttle_secs` | How often should Edge run in seconds.
      *Defaults to `3600` (once per hour).*
      ***Datatype:*** *Integer* | `calculate_since_number_of_days` | Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy.
      **Note** that it downloads historical data so increasing this number would lead to slowing down the bot.
      *Defaults to `7`.*
      ***Datatype:*** *Integer* -| `capital_available_percentage` | **DEPRECATED - replaced with `tradable_balance_ratio`** This is the percentage of the total capital on exchange in stake currency.
      As an example if you have 10 ETH available in your wallet on the exchange and this value is 0.5 (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers it as available capital.
      *Defaults to `0.5`.*
      ***Datatype:*** *Float* +| `capital_available_percentage` | **DEPRECATED - [replaced with `tradable_balance_ratio`](configuration.md#Available balance)** This is the percentage of the total capital on exchange in stake currency.
      As an example if you have 10 ETH available in your wallet on the exchange and this value is 0.5 (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers it as available capital.
      *Defaults to `0.5`.*
      ***Datatype:*** *Float* | `allowed_risk` | Ratio of allowed risk per trade.
      *Defaults to `0.01` (1%)).*
      ***Datatype:*** *Float* | `stoploss_range_min` | Minimum stoploss.
      *Defaults to `-0.01`.*
      ***Datatype:*** *Float* | `stoploss_range_max` | Maximum stoploss.
      *Defaults to `-0.10`.*
      ***Datatype:*** *Float* diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index a104bf6e3..78d8218d4 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -81,8 +81,8 @@ def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None: "PrecisionFilter. Please refer to the docs on configuration details") config['pairlists'].append({'method': 'PrecisionFilter'}) - if (config.get('edge', {}.get('enabled', False)) - and config.get('edge', {}).get('capital_available_percentage')): + if (config.get('edge', {}).get('enabled', False) + and 'capital_available_percentage' in config.get('edge', {})): logger.warning( "DEPRECATED: " "Using 'edge.capital_available_percentage' has been deprecated in favor of " diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 3e7b51c0e..a489875d9 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -1039,6 +1039,7 @@ def test_process_deprecated_setting_pairlists(mocker, default_conf, caplog): def test_process_deprecated_setting_edge(mocker, edge_conf, caplog): patched_configuration_load_config_file(mocker, edge_conf) edge_conf.update({'edge': { + 'enabled': True, 'capital_available_percentage': 0.5, }}) From e1f89e3ad34187caf0385a841f13ec1c710fbd17 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 20:11:58 +0100 Subject: [PATCH 1439/3421] Reword Note in backtesting fee docs --- docs/backtesting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index c2359b370..45759e2aa 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -86,7 +86,7 @@ freqtrade backtesting --fee 0.001 ``` !!! Note - Only supply this parameter if you want to experiment with different fee values. By default, Backtesting fetches the exchange's default fee from the exchange. + Only supply this option (or the corresponding configuration parameter) if you want to experiment with different fee values. By default, Backtesting fetches the default fee from the exchange pair/market info. #### Running backtest with smaller testset by using timerange From 24aa596e3c956df3e3b8967e0334246574f8e434 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 4 Jan 2020 01:08:37 +0300 Subject: [PATCH 1440/3421] Minor: Refine fee example in the docs Taken from https://github.com/freqtrade/freqtrade/issues/2738#issuecomment-570687230. slightly reworded. --- docs/backtesting.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 45759e2aa..41428085d 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -78,9 +78,11 @@ Please also read about the [strategy startup period](strategy-customization.md#s #### Supplying custom fee value Sometimes your account has certain fee rebates (fee reductions starting with a certain account size or monthly volume), which are not visible to ccxt. -To account for this in backtesting, you can use `--fee 0.001` to supply this value to backtesting. +To account for this in backtesting, you can use the `--fee` command line option to supply this value to backtesting. This fee must be a ratio, and will be applied twice (once for trade entry, and once for trade exit). +For example, if the buying and selling commission fee is 0.1% (i.e., 0.001 written as ratio), then you would run backtesting as the following: + ```bash freqtrade backtesting --fee 0.001 ``` From 84ef588163e95adaa3359200ddaa3a7ef64d0b8c Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 13:27:22 +0100 Subject: [PATCH 1441/3421] support dicts as indicators --- freqtrade/plot/plotting.py | 66 +++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 8 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index e1989b249..2bf4afcfb 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -1,6 +1,6 @@ import logging from pathlib import Path -from typing import Any, Dict, List +from typing import Any, Dict, List, Union import pandas as pd from freqtrade.configuration import TimeRange @@ -13,6 +13,8 @@ from freqtrade.resolvers import StrategyResolver logger = logging.getLogger(__name__) +IndicatorType = Union[List[str], Dict[str, Dict]] + try: from plotly.subplots import make_subplots from plotly.offline import plot @@ -54,9 +56,9 @@ def init_plotscript(config): } -def add_indicators(fig, row, indicators: List[str], data: pd.DataFrame) -> make_subplots: +def _add_indicators_list(fig, row, indicators: List[str], data: pd.DataFrame) -> make_subplots: """ - Generator all the indicator selected by the user for a specific row + Generate all the indicator selected by the user for a specific row :param fig: Plot figure to append to :param row: row number for this plot :param indicators: List of indicators present in the dataframe @@ -81,6 +83,51 @@ def add_indicators(fig, row, indicators: List[str], data: pd.DataFrame) -> make_ return fig +def _add_indicators_dict(fig, row, indicators: Dict[str, Dict], + data: pd.DataFrame) -> make_subplots: + """ + Generate all the indicators selected by the user for a specific row, based on the configuration + :param fig: Plot figure to append to + :param row: row number for this plot + :param indicators: Dict of Indicators with configuration options. + Dict key must correspond to dataframe column. + :param data: candlestick DataFrame + """ + for indicator, conf in indicators.items(): + print(conf) + if indicator in data: + scatter = go.Scatter( + x=data['date'], + y=data[indicator].values, + mode='lines', + name=indicator + ) + fig.add_trace(scatter, row, 1) + else: + logger.info( + 'Indicator "%s" ignored. Reason: This indicator is not found ' + 'in your strategy.', + indicator + ) + + return fig + + +def add_indicators(fig, row, indicators: IndicatorType, data: pd.DataFrame) -> make_subplots: + """ + Generate all the indicator selected by the user for a specific row + :param fig: Plot figure to append to + :param row: row number for this plot + :param indicators: List of indicators present in the dataframe, Or Dict of Indicators + with configuration options. Dict key must correspond to dataframe column. + :param data: candlestick DataFrame + """ + if isinstance(indicators, list): + _add_indicators_list(fig, row, indicators, data) + else: + _add_indicators_dict(fig, row, indicators, data) + + def add_profit(fig, row, data: pd.DataFrame, column: str, name: str) -> make_subplots: """ Add profit-plot @@ -144,8 +191,8 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFrame = None, - indicators1: List[str] = [], - indicators2: List[str] = [],) -> go.Figure: + indicators1: IndicatorType = [], + indicators2: IndicatorType = [],) -> go.Figure: """ Generate the graph from the data generated by Backtesting or from DB Volume will always be ploted in row2, so Row 1 and 3 are to our disposal for custom indicators @@ -254,7 +301,7 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra name='Volume', marker_color='DarkSlateGrey', marker_line_color='DarkSlateGrey' - ) + ) fig.add_trace(volume, 2, 1) # Add indicators to separate row @@ -355,12 +402,15 @@ def load_and_plot_trades(config: Dict[str, Any]): trades_pair = trades.loc[trades['pair'] == pair] trades_pair = extract_trades_of_period(dataframe, trades_pair) + indicators1 = config["indicators1"] + indicators2 = config["indicators2"] + fig = generate_candlestick_graph( pair=pair, data=dataframe, trades=trades_pair, - indicators1=config["indicators1"], - indicators2=config["indicators2"], + indicators1=indicators1, + indicators2=indicators2, ) store_plot_file(fig, filename=generate_plot_filename(pair, config['ticker_interval']), From 5d5074ac9c1af08034f283c39244a4e50b8652da Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jan 2020 20:10:22 +0100 Subject: [PATCH 1442/3421] Implement first working version of plot_config --- freqtrade/plot/plotting.py | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 2bf4afcfb..cb5806f75 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -96,11 +96,15 @@ def _add_indicators_dict(fig, row, indicators: Dict[str, Dict], for indicator, conf in indicators.items(): print(conf) if indicator in data: + kwargs = {'x': data['date'], + 'y': data[indicator].values, + 'mode': 'lines', + 'name': indicator + } + if 'color' in conf: + kwargs.update({'line': {'color': conf['color']}}) scatter = go.Scatter( - x=data['date'], - y=data[indicator].values, - mode='lines', - name=indicator + **kwargs ) fig.add_trace(scatter, row, 1) else: @@ -123,9 +127,9 @@ def add_indicators(fig, row, indicators: IndicatorType, data: pd.DataFrame) -> m :param data: candlestick DataFrame """ if isinstance(indicators, list): - _add_indicators_list(fig, row, indicators, data) + return _add_indicators_list(fig, row, indicators, data) else: - _add_indicators_dict(fig, row, indicators, data) + return _add_indicators_dict(fig, row, indicators, data) def add_profit(fig, row, data: pd.DataFrame, column: str, name: str) -> make_subplots: @@ -376,6 +380,17 @@ def store_plot_file(fig, filename: str, directory: Path, auto_open: bool = False logger.info(f"Stored plot as {_filename}") +def _get_plot_indicators(config, strategy): + + if hasattr(strategy, 'plot_config'): + indicators1 = strategy.plot_config['main_plot'] + indicators2 = strategy.plot_config['subplots'] + else: + indicators1 = config.get("indicators1") + indicators2 = config.get("indicators2") + return indicators1, indicators2 + + def load_and_plot_trades(config: Dict[str, Any]): """ From configuration provided @@ -402,8 +417,7 @@ def load_and_plot_trades(config: Dict[str, Any]): trades_pair = trades.loc[trades['pair'] == pair] trades_pair = extract_trades_of_period(dataframe, trades_pair) - indicators1 = config["indicators1"] - indicators2 = config["indicators2"] + indicators1, indicators2 = _get_plot_indicators(config, strategy) fig = generate_candlestick_graph( pair=pair, From 5853b9904c2cefa163d6c6d3b8536b5170b74ad3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 4 Jan 2020 11:13:45 +0100 Subject: [PATCH 1443/3421] make Plot_config the default approach --- freqtrade/plot/plotting.py | 128 ++++++++++++++++--------------------- 1 file changed, 56 insertions(+), 72 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index cb5806f75..c11776fab 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -56,35 +56,7 @@ def init_plotscript(config): } -def _add_indicators_list(fig, row, indicators: List[str], data: pd.DataFrame) -> make_subplots: - """ - Generate all the indicator selected by the user for a specific row - :param fig: Plot figure to append to - :param row: row number for this plot - :param indicators: List of indicators present in the dataframe - :param data: candlestick DataFrame - """ - for indicator in indicators: - if indicator in data: - scatter = go.Scatter( - x=data['date'], - y=data[indicator].values, - mode='lines', - name=indicator - ) - fig.add_trace(scatter, row, 1) - else: - logger.info( - 'Indicator "%s" ignored. Reason: This indicator is not found ' - 'in your strategy.', - indicator - ) - - return fig - - -def _add_indicators_dict(fig, row, indicators: Dict[str, Dict], - data: pd.DataFrame) -> make_subplots: +def add_indicators(fig, row, indicators: Dict[str, Dict], data: pd.DataFrame) -> make_subplots: """ Generate all the indicators selected by the user for a specific row, based on the configuration :param fig: Plot figure to append to @@ -94,7 +66,7 @@ def _add_indicators_dict(fig, row, indicators: Dict[str, Dict], :param data: candlestick DataFrame """ for indicator, conf in indicators.items(): - print(conf) + logger.debug(f"indicator {indicator} with config {conf}") if indicator in data: kwargs = {'x': data['date'], 'y': data[indicator].values, @@ -117,21 +89,6 @@ def _add_indicators_dict(fig, row, indicators: Dict[str, Dict], return fig -def add_indicators(fig, row, indicators: IndicatorType, data: pd.DataFrame) -> make_subplots: - """ - Generate all the indicator selected by the user for a specific row - :param fig: Plot figure to append to - :param row: row number for this plot - :param indicators: List of indicators present in the dataframe, Or Dict of Indicators - with configuration options. Dict key must correspond to dataframe column. - :param data: candlestick DataFrame - """ - if isinstance(indicators, list): - return _add_indicators_list(fig, row, indicators, data) - else: - return _add_indicators_dict(fig, row, indicators, data) - - def add_profit(fig, row, data: pd.DataFrame, column: str, name: str) -> make_subplots: """ Add profit-plot @@ -194,9 +151,39 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: return fig -def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFrame = None, - indicators1: IndicatorType = [], - indicators2: IndicatorType = [],) -> go.Figure: +def create_plotconfig(indicators1: List[str], indicators2: List[str], plot_config: Dict[str, Dict]) -> Dict[str, Dict]: + """ + Combines indicators 1 and indicators 2 into plot_config if necessary + :param indicators1: List containing Main plot indicators + :param indicators2: List containing Sub plot indicators + :param plot_config: Dict of Dicts containing advanced plot configuration + :return: plot_config - eventually with indicators 1 and 2 + """ + + if not plot_config: + # If no indicators and no plot-config given, use defaults. + if not indicators1: + indicators1 = ['sma', 'ema3', 'ema5'] + if not indicators2: + indicators1 = ['macd', 'macdsignal'] + + # Create subplot configuration if plot_config is not available. + plot_config = { + 'main_plot': {ind: {} for ind in indicators1}, + 'subplots': {'Other': {ind: {} for ind in indicators2}}, + } + if 'main_plot' not in plot_config: + plot_config['main_plot'] = {} + + if 'subplots' not in plot_config: + plot_config['subplots'] = {} + + +def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFrame = None, *, + indicators1: List[str] = [], + indicators2: List[str] = [], + plot_config: Dict[str, Dict] = {}, + ) -> go.Figure: """ Generate the graph from the data generated by Backtesting or from DB Volume will always be ploted in row2, so Row 1 and 3 are to our disposal for custom indicators @@ -205,21 +192,26 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra :param trades: All trades created :param indicators1: List containing Main plot indicators :param indicators2: List containing Sub plot indicators - :return: None + :param plot_config: Dict of Dicts containing advanced plot configuration + :return: Plotly figure """ + plot_config = create_plotconfig(indicators1, indicators2) + rows = 2 + len(plot_config['subplots']) + row_widths = [1 for _ in plot_config['subplots']] # Define the graph fig = make_subplots( - rows=3, + rows=rows, cols=1, shared_xaxes=True, - row_width=[1, 1, 4], + row_width=row_widths + [1, 4], vertical_spacing=0.0001, ) fig['layout'].update(title=pair) fig['layout']['yaxis1'].update(title='Price') fig['layout']['yaxis2'].update(title='Volume') - fig['layout']['yaxis3'].update(title='Other') + for i, name in enumerate(plot_config['subplots']): + fig['layout'][f'yaxis{3 + i}'].update(title=name) fig['layout']['xaxis']['rangeslider'].update(visible=False) # Common information @@ -289,12 +281,13 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra ) fig.add_trace(bb_lower, 1, 1) fig.add_trace(bb_upper, 1, 1) - if 'bb_upperband' in indicators1 and 'bb_lowerband' in indicators1: - indicators1.remove('bb_upperband') - indicators1.remove('bb_lowerband') + if ('bb_upperband' in plot_config['main_plot'] + and 'bb_lowerband' in plot_config['main_plot']): + del plot_config['main_plot']['bb_upperband'] + del plot_config['main_plot']['bb_lowerband'] # Add indicators to main plot - fig = add_indicators(fig=fig, row=1, indicators=indicators1, data=data) + fig = add_indicators(fig=fig, row=1, indicators=plot_config['main_plot'], data=data) fig = plot_trades(fig, trades) @@ -309,7 +302,10 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra fig.add_trace(volume, 2, 1) # Add indicators to separate row - fig = add_indicators(fig=fig, row=3, indicators=indicators2, data=data) + for i, name in enumerate(plot_config['subplots']): + fig = add_indicators(fig=fig, row=3 + i, + indicators=plot_config['subplots'][name], + data=data) return fig @@ -380,17 +376,6 @@ def store_plot_file(fig, filename: str, directory: Path, auto_open: bool = False logger.info(f"Stored plot as {_filename}") -def _get_plot_indicators(config, strategy): - - if hasattr(strategy, 'plot_config'): - indicators1 = strategy.plot_config['main_plot'] - indicators2 = strategy.plot_config['subplots'] - else: - indicators1 = config.get("indicators1") - indicators2 = config.get("indicators2") - return indicators1, indicators2 - - def load_and_plot_trades(config: Dict[str, Any]): """ From configuration provided @@ -417,14 +402,13 @@ def load_and_plot_trades(config: Dict[str, Any]): trades_pair = trades.loc[trades['pair'] == pair] trades_pair = extract_trades_of_period(dataframe, trades_pair) - indicators1, indicators2 = _get_plot_indicators(config, strategy) - fig = generate_candlestick_graph( pair=pair, data=dataframe, trades=trades_pair, - indicators1=indicators1, - indicators2=indicators2, + indicators1=config["indicators1"], + indicators2=config["indicators2"], + plot_config=strategy.plot_config if hasattr(strategy, 'plot_config') else {} ) store_plot_file(fig, filename=generate_plot_filename(pair, config['ticker_interval']), From f04873b0b06df81bed51dfd59fb7db1e29422f55 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 4 Jan 2020 11:14:00 +0100 Subject: [PATCH 1444/3421] Add plot_config to interface --- freqtrade/configuration/cli_options.py | 6 ++---- freqtrade/strategy/interface.py | 2 ++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index 4b6429f20..1807cd591 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -363,15 +363,13 @@ AVAILABLE_CLI_OPTIONS = { "indicators1": Arg( '--indicators1', help='Set indicators from your strategy you want in the first row of the graph. ' - 'Space-separated list. Example: `ema3 ema5`. Default: `%(default)s`.', - default=['sma', 'ema3', 'ema5'], + "Space-separated list. Example: `ema3 ema5`. Default: `['sma', 'ema3', 'ema5']`.", nargs='+', ), "indicators2": Arg( '--indicators2', help='Set indicators from your strategy you want in the third row of the graph. ' - 'Space-separated list. Example: `fastd fastk`. Default: `%(default)s`.', - default=['macd', 'macdsignal'], + "Space-separated list. Example: `fastd fastk`. Default: `['macd', 'macdsignal']`.", nargs='+', ), "plot_limit": Arg( diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 4f2e990d2..a2dee7837 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -112,6 +112,8 @@ class IStrategy(ABC): dp: Optional[DataProvider] = None wallets: Optional[Wallets] = None + plot_config: Dict + def __init__(self, config: dict) -> None: self.config = config # Dict to determine if analysis is necessary From 4628024de6e9d7c35977b9d2459651560fe75111 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 4 Jan 2020 11:18:51 +0100 Subject: [PATCH 1445/3421] Adapt tests to new add_indicator methodology --- freqtrade/plot/plotting.py | 3 ++- tests/test_plotting.py | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index c11776fab..a79ec6b87 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -177,6 +177,7 @@ def create_plotconfig(indicators1: List[str], indicators2: List[str], plot_confi if 'subplots' not in plot_config: plot_config['subplots'] = {} + return plot_config def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFrame = None, *, @@ -195,7 +196,7 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra :param plot_config: Dict of Dicts containing advanced plot configuration :return: Plotly figure """ - plot_config = create_plotconfig(indicators1, indicators2) + plot_config = create_plotconfig(indicators1, indicators2, plot_config) rows = 2 + len(plot_config['subplots']) row_widths = [1 for _ in plot_config['subplots']] diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 271246517..048f9d60c 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -66,8 +66,8 @@ def test_add_indicators(default_conf, testdatadir, caplog): data = history.load_pair_history(pair=pair, timeframe='1m', datadir=testdatadir, timerange=timerange) - indicators1 = ["ema10"] - indicators2 = ["macd"] + indicators1 = {"ema10": {}} + indicators2 = {"macd": {"color": "red"}} # Generate buy/sell signals and indicators strat = DefaultStrategy(default_conf) @@ -86,9 +86,10 @@ def test_add_indicators(default_conf, testdatadir, caplog): macd = find_trace_in_fig_data(figure.data, "macd") assert isinstance(macd, go.Scatter) assert macd.yaxis == "y3" + assert macd.line.color == "red" # No indicator found - fig3 = add_indicators(fig=deepcopy(fig), row=3, indicators=['no_indicator'], data=data) + fig3 = add_indicators(fig=deepcopy(fig), row=3, indicators={'no_indicator': {}}, data=data) assert fig == fig3 assert log_has_re(r'Indicator "no_indicator" ignored\..*', caplog) From b5a806dec766301632dd4ccad169cba598f3bbd1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 4 Jan 2020 11:30:21 +0100 Subject: [PATCH 1446/3421] Fix typo and add tests for create_plotconfig --- freqtrade/plot/plotting.py | 2 +- tests/test_plotting.py | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index a79ec6b87..1c8ad552f 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -165,7 +165,7 @@ def create_plotconfig(indicators1: List[str], indicators2: List[str], plot_confi if not indicators1: indicators1 = ['sma', 'ema3', 'ema5'] if not indicators2: - indicators1 = ['macd', 'macdsignal'] + indicators2 = ['macd', 'macdsignal'] # Create subplot configuration if plot_config is not available. plot_config = { diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 048f9d60c..908c90a0a 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -13,6 +13,7 @@ from freqtrade.data.btanalysis import create_cum_profit, load_backtest_data from freqtrade.exceptions import OperationalException from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit from freqtrade.plot.plotting import (add_indicators, add_profit, + create_plotconfig, generate_candlestick_graph, generate_plot_filename, generate_profit_graph, init_plotscript, @@ -372,3 +373,26 @@ def test_plot_profit(default_conf, mocker, testdatadir, caplog): assert profit_mock.call_args_list[0][0][0] == default_conf['pairs'] assert store_mock.call_args_list[0][1]['auto_open'] is True + + +@pytest.mark.parametrize("ind1,ind2,plot_conf,exp", [ + ([], [], {}, + {'main_plot': {'sma': {}, 'ema3': {}, 'ema5': {}}, + 'subplots': {'Other': {'macd': {}, 'macdsignal': {}}}}), + (['sma', 'ema3'], ['macd'], {}, + {'main_plot': {'sma': {}, 'ema3': {}}, 'subplots': {'Other': {'macd': {}}}} + ), + ([], [], {'main_plot': {'sma': {}}}, + {'main_plot': {'sma': {}}, 'subplots': {}}), + ([], [], {'subplots': {'RSI': {'rsi': {'color': 'red'}}}}, + {'main_plot': {}, 'subplots': {'RSI': {'rsi': {'color': 'red'}}}}), +]) +def test_create_plotconfig(ind1, ind2, plot_conf, exp): + + res = create_plotconfig(ind1, ind2, plot_conf) + assert 'main_plot' in res + assert 'subplots' in res + assert isinstance(res['main_plot'], dict) + assert isinstance(res['subplots'], dict) + + assert res == exp From bdda62039752c967ae51e3717958bb282f825c18 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 4 Jan 2020 12:54:58 +0100 Subject: [PATCH 1447/3421] add plot_config to startegy interface properly --- freqtrade/plot/plotting.py | 7 +++---- freqtrade/strategy/interface.py | 3 ++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 1c8ad552f..39629fe21 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -1,6 +1,6 @@ import logging from pathlib import Path -from typing import Any, Dict, List, Union +from typing import Any, Dict, List import pandas as pd from freqtrade.configuration import TimeRange @@ -13,8 +13,6 @@ from freqtrade.resolvers import StrategyResolver logger = logging.getLogger(__name__) -IndicatorType = Union[List[str], Dict[str, Dict]] - try: from plotly.subplots import make_subplots from plotly.offline import plot @@ -151,7 +149,8 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: return fig -def create_plotconfig(indicators1: List[str], indicators2: List[str], plot_config: Dict[str, Dict]) -> Dict[str, Dict]: +def create_plotconfig(indicators1: List[str], indicators2: List[str], + plot_config: Dict[str, Dict]) -> Dict[str, Dict]: """ Combines indicators 1 and indicators 2 into plot_config if necessary :param indicators1: List containing Main plot indicators diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index a2dee7837..7bd6a9ac5 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -112,7 +112,8 @@ class IStrategy(ABC): dp: Optional[DataProvider] = None wallets: Optional[Wallets] = None - plot_config: Dict + # Definition of plot_config. See plotting documentation for more details. + plot_config: Dict = {} def __init__(self, config: dict) -> None: self.config = config From 53499e01dec6099a63bf1543f9b202f75d5d5d20 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 4 Jan 2020 20:27:27 +0100 Subject: [PATCH 1448/3421] Clearly differentiate trade buys sells (positive and negative) * Swap trade buys to cyan circles * Show sell-reason description on buy too * Green positive sells - red negative / 0 sells --- freqtrade/plot/plotting.py | 37 +++++++++++++++++++++++++++---------- tests/test_plotting.py | 25 ++++++++++++++++++------- 2 files changed, 45 insertions(+), 17 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 39629fe21..1660371a1 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -113,11 +113,31 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: """ # Trades can be empty if trades is not None and len(trades) > 0: + # Create description for sell summarizing the trade + trades['desc'] = trades.apply(lambda row: f"{round(row['profitperc'] * 100, 1)}%, " + f"{row['sell_reason']}, {row['duration']} min", + axis=1) trade_buys = go.Scatter( x=trades["open_time"], y=trades["open_rate"], mode='markers', - name='trade_buy', + name='Trade buy', + text=trades["desc"], + marker=dict( + symbol='circle-open', + size=11, + line=dict(width=2), + color='cyan' + + ) + ) + + trade_sells = go.Scatter( + x=trades.loc[trades['profitperc'] > 0, "close_time"], + y=trades.loc[trades['profitperc'] > 0, "close_rate"], + text=trades.loc[trades['profitperc'] > 0, "desc"], + mode='markers', + name='Sell - Profit', marker=dict( symbol='square-open', size=11, @@ -125,16 +145,12 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: color='green' ) ) - # Create description for sell summarizing the trade - desc = trades.apply(lambda row: f"{round(row['profitperc'] * 100, 1)}%, " - f"{row['sell_reason']}, {row['duration']} min", - axis=1) - trade_sells = go.Scatter( - x=trades["close_time"], - y=trades["close_rate"], - text=desc, + trade_sells_loss = go.Scatter( + x=trades.loc[trades['profitperc'] <= 0, "close_time"], + y=trades.loc[trades['profitperc'] <= 0, "close_rate"], + text=trades.loc[trades['profitperc'] <= 0, "desc"], mode='markers', - name='trade_sell', + name='Sell - Loss', marker=dict( symbol='square-open', size=11, @@ -144,6 +160,7 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: ) fig.add_trace(trade_buys, 1, 1) fig.add_trace(trade_sells, 1, 1) + fig.add_trace(trade_sells_loss, 1, 1) else: logger.warning("No trades found.") return fig diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 908c90a0a..e5162bb17 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -110,18 +110,29 @@ def test_plot_trades(testdatadir, caplog): figure = fig1.layout.figure # Check buys - color, should be in first graph, ... - trade_buy = find_trace_in_fig_data(figure.data, "trade_buy") + trade_buy = find_trace_in_fig_data(figure.data, 'Trade buy') assert isinstance(trade_buy, go.Scatter) assert trade_buy.yaxis == 'y' assert len(trades) == len(trade_buy.x) - assert trade_buy.marker.color == 'green' + assert trade_buy.marker.color == 'cyan' + assert trade_buy.marker.symbol == 'circle-open' + assert trade_buy.text[0] == '4.0%, roi, 15 min' - trade_sell = find_trace_in_fig_data(figure.data, "trade_sell") + trade_sell = find_trace_in_fig_data(figure.data, 'Sell - Profit') assert isinstance(trade_sell, go.Scatter) assert trade_sell.yaxis == 'y' - assert len(trades) == len(trade_sell.x) - assert trade_sell.marker.color == 'red' - assert trade_sell.text[0] == "4.0%, roi, 15 min" + assert len(trades.loc[trades['profitperc'] > 0]) == len(trade_sell.x) + assert trade_sell.marker.color == 'green' + assert trade_sell.marker.symbol == 'square-open' + assert trade_sell.text[0] == '4.0%, roi, 15 min' + + trade_sell_loss = find_trace_in_fig_data(figure.data, 'Sell - Loss') + assert isinstance(trade_sell_loss, go.Scatter) + assert trade_sell_loss.yaxis == 'y' + assert len(trades.loc[trades['profitperc'] <= 0]) == len(trade_sell_loss.x) + assert trade_sell_loss.marker.color == 'red' + assert trade_sell_loss.marker.symbol == 'square-open' + assert trade_sell_loss.text[5] == '-10.4%, stop_loss, 720 min' def test_generate_candlestick_graph_no_signals_no_trades(default_conf, mocker, testdatadir, caplog): @@ -310,7 +321,7 @@ def test_load_and_plot_trades(default_conf, mocker, caplog, testdatadir): "freqtrade.plot.plotting", generate_candlestick_graph=candle_mock, store_plot_file=store_mock - ) + ) load_and_plot_trades(default_conf) # Both mocks should be called once per pair From f82c4346b6ce65c5ded54a63b3931780cd349a98 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 5 Jan 2020 09:55:02 +0100 Subject: [PATCH 1449/3421] data conversion, not data conversation * we're not talking to the data yet ... --- docs/data-download.md | 8 ++++---- freqtrade/configuration/arguments.py | 8 ++++---- freqtrade/configuration/cli_options.py | 4 ++-- freqtrade/data/history/history_utils.py | 2 +- freqtrade/data/history/idatahandler.py | 2 +- freqtrade/data/history/jsondatahandler.py | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/data-download.md b/docs/data-download.md index c5fb744ab..f747123d0 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -78,9 +78,9 @@ optional arguments: Show profits for only these pairs. Pairs are space- separated. --format-from {json,jsongz} - Source format for data conversation. + Source format for data conversion. --format-to {json,jsongz} - Destination format for data conversation. + Destination format for data conversion. --erase Clean all existing data for the selected exchange/pairs/timeframes. -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...] @@ -127,9 +127,9 @@ optional arguments: Show profits for only these pairs. Pairs are space- separated. --format-from {json,jsongz} - Source format for data conversation. + Source format for data conversion. --format-to {json,jsongz} - Destination format for data conversation. + Destination format for data conversion. --erase Clean all existing data for the selected exchange/pairs/timeframes. diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 2b9b362bf..718b6dedc 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -264,14 +264,14 @@ class Arguments: convert_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=True)) self._build_args(optionlist=ARGS_CONVERT_DATA_OHLCV, parser=convert_data_cmd) - # Add convert-data subcommand - convert_data_cmd = subparsers.add_parser( + # Add convert-trade-data subcommand + convert_trade_data_cmd = subparsers.add_parser( 'convert-trade-data', help='Convert trade-data from one format to another.', parents=[_common_parser], ) - convert_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=False)) - self._build_args(optionlist=ARGS_CONVERT_DATA, parser=convert_data_cmd) + convert_trade_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=False)) + self._build_args(optionlist=ARGS_CONVERT_DATA, parser=convert_trade_data_cmd) # Add Plotting subcommand plot_dataframe_cmd = subparsers.add_parser( diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index c80bea393..0289d3fd0 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -334,13 +334,13 @@ AVAILABLE_CLI_OPTIONS = { ), "format_from": Arg( '--format-from', - help='Source format for data conversation.', + help='Source format for data conversion.', choices=constants.AVAILABLE_DATAHANDLERS, required=True, ), "format_to": Arg( '--format-to', - help='Destination format for data conversation.', + help='Destination format for data conversion.', choices=constants.AVAILABLE_DATAHANDLERS, required=True, ), diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index 2d11b229b..c0578a32b 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -132,7 +132,7 @@ def _load_cached_data_for_updating(pair: str, timeframe: str, timerange: Optiona start = None if timerange: if timerange.starttype == 'date': - # TODO: convert to date for conversation + # TODO: convert to date for conversion start = datetime.fromtimestamp(timerange.startts, tz=timezone.utc) # Intentionally don't pass timerange in - since we need to load the full dataset. diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index 20022fc38..df03e7713 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -52,7 +52,7 @@ class IDataHandler(ABC): ) -> DataFrame: """ Internal method used to load data for one pair from disk. - Implements the loading and conversation to a Pandas dataframe. + Implements the loading and conversion to a Pandas dataframe. Timerange trimming and dataframe validation happens outside of this method. :param pair: Pair to load data :param timeframe: Ticker timeframe (e.g. "5m") diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index dcfc249aa..7f0643862 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -57,7 +57,7 @@ class JsonDataHandler(IDataHandler): ) -> DataFrame: """ Internal method used to load data for one pair from disk. - Implements the loading and conversation to a Pandas dataframe. + Implements the loading and conversion to a Pandas dataframe. Timerange trimming and dataframe validation happens outside of this method. :param pair: Pair to load data :param timeframe: Ticker timeframe (e.g. "5m") From bc6a10353bf4c704003a319fd953026896c33533 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 4 Jan 2020 05:07:51 +0300 Subject: [PATCH 1450/3421] Introduce pair_to_filename() --- freqtrade/misc.py | 6 ++++++ freqtrade/plot/plotting.py | 12 +++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index ed37ace3a..e6ebc8d65 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -92,6 +92,12 @@ def file_load_json(file): return pairdata +def pair_to_filename(pair: str) -> str: + for ch in ['/', ' ', '.']: + pair = pair.replace(ch, '_') + return pair + + def format_ms_time(date: int) -> str: """ convert MS date to readable format. diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 6b2d426e7..7c9c9f985 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -3,12 +3,14 @@ from pathlib import Path from typing import Any, Dict, List import pandas as pd + from freqtrade.configuration import TimeRange -from freqtrade.data import history -from freqtrade.data.converter import trim_dataframe from freqtrade.data.btanalysis import (combine_tickers_with_mean, create_cum_profit, extract_trades_of_period, load_trades) +from freqtrade.data.converter import trim_dataframe +from freqtrade.data.history import load_data +from freqtrade.misc import pair_to_filename from freqtrade.resolvers import StrategyResolver logger = logging.getLogger(__name__) @@ -37,7 +39,7 @@ def init_plotscript(config): # Set timerange to use timerange = TimeRange.parse_timerange(config.get("timerange")) - tickers = history.load_data( + tickers = load_data( datadir=config.get("datadir"), pairs=pairs, timeframe=config.get('ticker_interval', '5m'), @@ -306,8 +308,8 @@ def generate_plot_filename(pair, timeframe) -> str: """ Generate filenames per pair/timeframe to be used for storing plots """ - pair_name = pair.replace("/", "_") - file_name = 'freqtrade-plot-' + pair_name + '-' + timeframe + '.html' + pair_s = pair_to_filename(pair) + file_name = 'freqtrade-plot-' + pair_s + '-' + timeframe + '.html' logger.info('Generate plot file for %s', pair) From 4eaaec9d1a0bee87a6ce2b60b2044b5bd52164b7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 5 Jan 2020 10:36:08 +0100 Subject: [PATCH 1451/3421] Implement pair_to_filename to datahandler includes tests - taken from #2744 and modified to adapt to new structure --- freqtrade/data/history/jsondatahandler.py | 8 ++--- freqtrade/misc.py | 2 +- tests/data/test_history.py | 36 ++++++++++++++++------- tests/test_misc.py | 25 +++++++++++++++- 4 files changed, 55 insertions(+), 16 deletions(-) diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 7f0643862..7da1477af 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -30,7 +30,7 @@ class JsonDataHandler(IDataHandler): _tmp = [re.search(r'^(\S+)(?=\-' + timeframe + '.json)', p.name) for p in datadir.glob(f"*{timeframe}.{cls._get_file_extension()}")] # Check if regex found something and only return these results - return [match[0].replace('_', '/') for match in _tmp if match] + return [misc.pair_to_filename(match[0]) for match in _tmp if match] def ohlcv_store(self, pair: str, timeframe: str, data: DataFrame) -> None: """ @@ -109,7 +109,7 @@ class JsonDataHandler(IDataHandler): _tmp = [re.search(r'^(\S+)(?=\-trades.json)', p.name) for p in datadir.glob(f"*trades.{cls._get_file_extension()}")] # Check if regex found something and only return these results to avoid exceptions. - return [match[0].replace('_', '/') for match in _tmp if match] + return [misc.pair_to_filename(match[0]) for match in _tmp if match] def trades_store(self, pair: str, data: List[Dict]) -> None: """ @@ -157,7 +157,7 @@ class JsonDataHandler(IDataHandler): @classmethod def _pair_data_filename(cls, datadir: Path, pair: str, timeframe: str) -> Path: - pair_s = pair.replace("/", "_") + pair_s = misc.pair_to_filename(pair) filename = datadir.joinpath(f'{pair_s}-{timeframe}.{cls._get_file_extension()}') return filename @@ -167,7 +167,7 @@ class JsonDataHandler(IDataHandler): @classmethod def _pair_trades_filename(cls, datadir: Path, pair: str) -> Path: - pair_s = pair.replace("/", "_") + pair_s = misc.pair_to_filename(pair) filename = datadir.joinpath(f'{pair_s}-trades.{cls._get_file_extension()}') return filename diff --git a/freqtrade/misc.py b/freqtrade/misc.py index e6ebc8d65..f012400c4 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -93,7 +93,7 @@ def file_load_json(file): def pair_to_filename(pair: str) -> str: - for ch in ['/', ' ', '.']: + for ch in ['/', '-', ' ', '.', '@', '$', '+', ':']: pair = pair.replace(ch, '_') return pair diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 2341673db..39000e508 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -144,23 +144,39 @@ def test_testdata_path(testdatadir) -> None: assert str(Path('tests') / 'testdata') in str(testdatadir) -def test_json_pair_data_filename(): - fn = JsonDataHandler._pair_data_filename(Path('freqtrade/hello/world'), 'ETH/BTC', '5m') +@pytest.mark.parametrize("pair,expected_result", [ + ("ETH/BTC", 'freqtrade/hello/world/ETH_BTC-5m.json'), + ("Fabric Token/ETH", 'freqtrade/hello/world/Fabric_Token_ETH-5m.json'), + ("ETHH20", 'freqtrade/hello/world/ETHH20-5m.json'), + (".XBTBON2H", 'freqtrade/hello/world/_XBTBON2H-5m.json'), + ("ETHUSD.d", 'freqtrade/hello/world/ETHUSD_d-5m.json'), + ("ACC_OLD/BTC", 'freqtrade/hello/world/ACC_OLD_BTC-5m.json'), +]) +def test_json_pair_data_filename(pair, expected_result): + fn = JsonDataHandler._pair_data_filename(Path('freqtrade/hello/world'), pair, '5m') assert isinstance(fn, Path) - assert fn == Path('freqtrade/hello/world/ETH_BTC-5m.json') - fn = JsonGzDataHandler._pair_data_filename(Path('freqtrade/hello/world'), 'ETH/BTC', '5m') + assert fn == Path(expected_result) + fn = JsonGzDataHandler._pair_data_filename(Path('freqtrade/hello/world'), pair, '5m') assert isinstance(fn, Path) - assert fn == Path('freqtrade/hello/world/ETH_BTC-5m.json.gz') + assert fn == Path(expected_result + '.gz') -def test_json_pair_trades_filename(): - fn = JsonDataHandler._pair_trades_filename(Path('freqtrade/hello/world'), 'ETH/BTC') +@pytest.mark.parametrize("pair,expected_result", [ + ("ETH/BTC", 'freqtrade/hello/world/ETH_BTC-trades.json'), + ("Fabric Token/ETH", 'freqtrade/hello/world/Fabric_Token_ETH-trades.json'), + ("ETHH20", 'freqtrade/hello/world/ETHH20-trades.json'), + (".XBTBON2H", 'freqtrade/hello/world/_XBTBON2H-trades.json'), + ("ETHUSD.d", 'freqtrade/hello/world/ETHUSD_d-trades.json'), + ("ACC_OLD_BTC", 'freqtrade/hello/world/ACC_OLD_BTC-trades.json'), +]) +def test_json_pair_trades_filename(pair, expected_result): + fn = JsonDataHandler._pair_trades_filename(Path('freqtrade/hello/world'), pair) assert isinstance(fn, Path) - assert fn == Path('freqtrade/hello/world/ETH_BTC-trades.json') + assert fn == Path(expected_result) - fn = JsonGzDataHandler._pair_trades_filename(Path('freqtrade/hello/world'), 'ETH/BTC') + fn = JsonGzDataHandler._pair_trades_filename(Path('freqtrade/hello/world'), pair) assert isinstance(fn, Path) - assert fn == Path('freqtrade/hello/world/ETH_BTC-trades.json.gz') + assert fn == Path(expected_result + '.gz') def test_load_cached_data_for_updating(mocker, testdatadir) -> None: diff --git a/tests/test_misc.py b/tests/test_misc.py index c5bf06311..83e008466 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -4,9 +4,12 @@ import datetime from pathlib import Path from unittest.mock import MagicMock +import pytest + from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.misc import (datesarray_to_datetimearray, file_dump_json, - file_load_json, format_ms_time, plural, shorten_date) + file_load_json, format_ms_time, pair_to_filename, + plural, shorten_date) def test_shorten_date() -> None: @@ -57,6 +60,26 @@ def test_file_load_json(mocker, testdatadir) -> None: assert ret +@pytest.mark.parametrize("pair,expected_result", [ + ("ETH/BTC", 'ETH_BTC'), + ("Fabric Token/ETH", 'Fabric_Token_ETH'), + ("ETHH20", 'ETHH20'), + (".XBTBON2H", '_XBTBON2H'), + ("ETHUSD.d", 'ETHUSD_d'), + ("ADA-0327", 'ADA_0327'), + ("BTC-USD-200110", 'BTC_USD_200110'), + ("F-AKRO/USDT", 'F_AKRO_USDT'), + ("LC+/ETH", 'LC__ETH'), + ("CMT@18/ETH", 'CMT_18_ETH'), + ("LBTC:1022/SAI", 'LBTC_1022_SAI'), + ("$PAC/BTC", '_PAC_BTC'), + ("ACC_OLD/BTC", 'ACC_OLD_BTC'), +]) +def test_pair_to_filename(pair, expected_result): + pair_s = pair_to_filename(pair) + assert pair_s == expected_result + + def test_format_ms_time() -> None: # Date 2018-04-10 18:02:01 date_in_epoch_ms = 1523383321000 From 7daa5bc33881c1e9919eae61510284739078ced5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 5 Jan 2020 12:50:44 +0100 Subject: [PATCH 1452/3421] Don't return None from unlimited_stake - 0 handles this just as well --- freqtrade/freqtradebot.py | 15 ++++++++------- tests/test_freqtradebot.py | 6 +++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index aa47adfd4..ed9cb983a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -250,12 +250,13 @@ class FreqtradeBot: return used_rate - def get_trade_stake_amount(self, pair) -> Optional[float]: + def get_trade_stake_amount(self, pair) -> float: """ Calculate stake amount for the trade :return: float: Stake amount + :raise: DependencyException if the available stake amount is too low """ - stake_amount: Optional[float] + stake_amount: float if self.edge: stake_amount = self.edge.stake_amount( pair, @@ -286,20 +287,20 @@ class FreqtradeBot: self.config['tradable_balance_ratio']) - val_tied_up return available_amount - def _calculate_unlimited_stake_amount(self) -> Optional[float]: + def _calculate_unlimited_stake_amount(self) -> float: """ Calculate stake amount for "unlimited" stake amount - :return: None if max number of trades reached + :return: 0 if max number of trades reached, else stake_amount to use. """ free_open_trades = self.get_free_open_trades() if not free_open_trades: - return None + return 0 available_amount = self._get_available_stake_amount() return available_amount / free_open_trades - def _check_available_stake_amount(self, stake_amount: Optional[float]) -> Optional[float]: + def _check_available_stake_amount(self, stake_amount: float) -> float: """ Check if stake amount can be fulfilled with the available balance for the stake currency @@ -307,7 +308,7 @@ class FreqtradeBot: """ available_amount = self._get_available_stake_amount() - if stake_amount is not None and available_amount < stake_amount: + if available_amount < stake_amount: raise DependencyException( f"Available balance ({available_amount} {self.config['stake_currency']}) is " f"lower than stake amount ({stake_amount} {self.config['stake_currency']})" diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index c8b627ca4..dc74e507c 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -189,13 +189,13 @@ def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, balance_r freqtrade.execute_buy('LTC/BTC', result) result = freqtrade.get_trade_stake_amount('XRP/BTC') - assert result is None + assert result == 0 # set max_open_trades = None, so do not trade conf['max_open_trades'] = 0 freqtrade = FreqtradeBot(conf) result = freqtrade.get_trade_stake_amount('NEO/BTC') - assert result is None + assert result == 0 def test_edge_called_in_process(mocker, edge_conf) -> None: @@ -576,7 +576,7 @@ def test_create_trade_limit_reached(default_conf, ticker, limit_buy_order, patch_get_signal(freqtrade) assert not freqtrade.create_trade('ETH/BTC') - assert freqtrade.get_trade_stake_amount('ETH/BTC') is None + assert freqtrade.get_trade_stake_amount('ETH/BTC') == 0 def test_enter_positions_no_pairs_left(default_conf, ticker, limit_buy_order, fee, From b37f34ff5bc5d2a3399af6c29814031f3bb5f6cf Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 5 Jan 2020 13:25:11 +0100 Subject: [PATCH 1453/3421] Implement amend_last_stake_amount --- config_full.json.example | 1 + docs/configuration.md | 17 +++++++++++++++++ freqtrade/constants.py | 2 ++ freqtrade/freqtradebot.py | 3 +++ 4 files changed, 23 insertions(+) diff --git a/config_full.json.example b/config_full.json.example index 981fc5209..f39abb00c 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -5,6 +5,7 @@ "tradable_balance_ratio": 0.99, "fiat_display_currency": "USD", "amount_reserve_percent" : 0.05, + "amend_last_stake_amount": false, "dry_run": false, "ticker_interval": "5m", "trailing_stop": false, diff --git a/docs/configuration.md b/docs/configuration.md index 3b8760366..9a05eea2d 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -44,6 +44,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* | `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.1` and `1.0`.* +| `amend_last_stake_amount` | **Required.** Use reduced last stake amount if necessary. [More information below](#configuring-amount-per-trade).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* | `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      ***Datatype:*** *Positive Float as ratio.* | `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* @@ -146,6 +147,22 @@ For example, if you have 10 ETH available in your wallet on the exchange and `tr !!! Warning `tradable_balance_ratio` applies to the current balance (free balance + tied up in trades). Therefore, assuming a starting balance of 1000, a configuration of `tradable_balance_ratio=0.99` will not guarantee that 10 units will always remain available on the exchange. The free amount may reduce to 5 units if the total balance is reduce to 500 (either by a losing streak, or by withdrawing balance). +#### Amend last stake amount + +Assuming we have a `balance=1000` (USDT), `stake_amount=400`, and `max_open_trades=3`. +The bot would open 2 trades, and will be unable to fill the last trading slot, since the requested 400 USDT are no longer available, since 800 USDT are already tied in other trades. + +To overcome this, the option `amend_last_stake_amount` can be set to `True`, which will enable the bot to reduce stake_amount to the available balance in order to fill the last trade slot. + +In the example above this would mean: + +- Trade1: 400 USDT +- Trade2: 400 USDT +- Trade3: 200 USDT + +!!! Note + This option only applies with [Static stake amount](#static-stake-amount) - since [Dynamic stake amount](#dynamic-stake-amount) divides the balances evenly. + #### Static stake amount The `stake_amount` configuration statically configures the amount of stake-currency your bot will use for each trade. diff --git a/freqtrade/constants.py b/freqtrade/constants.py index ca4f3cf36..a1bd70183 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -79,6 +79,7 @@ CONF_SCHEMA = { 'maximum': 1, 'default': 0.99 }, + 'amend_last_stake_amount': {'type': 'boolean', 'default': False}, 'fiat_display_currency': {'type': 'string', 'enum': SUPPORTED_FIAT}, 'dry_run': {'type': 'boolean'}, 'dry_run_wallet': {'type': 'number', 'default': DRY_RUN_WALLET}, @@ -282,6 +283,7 @@ SCHEMA_TRADE_REQUIRED = [ 'max_open_trades', 'stake_currency', 'stake_amount', + 'tradable_balance_ratio', 'dry_run', 'dry_run_wallet', 'bid_strategy', diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 6c02844f1..5aacdc587 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -308,6 +308,9 @@ class FreqtradeBot: """ available_amount = self._get_available_stake_amount() + if self.config['amend_last_stake_amount']: + stake_amount = min(stake_amount, available_amount) + if available_amount < stake_amount: raise DependencyException( f"Available balance ({available_amount} {self.config['stake_currency']}) is " From ca054799d065af3bf745867bcb20c06fde06aa5a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 5 Jan 2020 13:25:21 +0100 Subject: [PATCH 1454/3421] Add tests for amend_last_stake_amount --- tests/test_freqtradebot.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index dc74e507c..6d794fc05 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -140,11 +140,45 @@ def test_get_trade_stake_amount(default_conf, ticker, mocker) -> None: assert result == default_conf['stake_amount'] +@pytest.mark.parametrize("amend_last,wallet,max_open,expected", [ + (False, 0.002, 2, [0.001, None]), + (True, 0.002, 2, [0.001, 0.00098]), + (False, 0.003, 3, [0.001, 0.001, None]), + (True, 0.003, 3, [0.001, 0.001, 0.00097]), + ]) +def test_check_available_stake_amount(default_conf, ticker, mocker, fee, limit_buy_order, + amend_last, wallet, max_open, expected) -> None: + patch_RPCManager(mocker) + patch_exchange(mocker) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + fetch_ticker=ticker, + get_balance=MagicMock(return_value=default_conf['stake_amount'] * 2), + buy=MagicMock(return_value={'id': limit_buy_order['id']}), + get_fee=fee + ) + default_conf['dry_run_wallet'] = wallet + + default_conf['amend_last_stake_amount'] = amend_last + freqtrade = FreqtradeBot(default_conf) + + for i in range(0, max_open): + + if expected[i] is not None: + result = freqtrade.get_trade_stake_amount('ETH/BTC') + assert pytest.approx(result) == expected[i] + freqtrade.execute_buy('ETH/BTC', result) + else: + with pytest.raises(DependencyException): + freqtrade.get_trade_stake_amount('ETH/BTC') + + def test_get_trade_stake_amount_no_stake_amount(default_conf, mocker) -> None: patch_RPCManager(mocker) patch_exchange(mocker) patch_wallet(mocker, free=default_conf['stake_amount'] * 0.5) freqtrade = FreqtradeBot(default_conf) + patch_get_signal(freqtrade) with pytest.raises(DependencyException, match=r'.*stake amount.*'): freqtrade.get_trade_stake_amount('ETH/BTC') From 41945138ac569947ed5ae788aeb7d5486bfc2c2b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 5 Jan 2020 13:35:36 +0100 Subject: [PATCH 1455/3421] Converting pairs from filename to pair corrected --- freqtrade/data/history/jsondatahandler.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 7da1477af..17b9fd7d7 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -30,7 +30,7 @@ class JsonDataHandler(IDataHandler): _tmp = [re.search(r'^(\S+)(?=\-' + timeframe + '.json)', p.name) for p in datadir.glob(f"*{timeframe}.{cls._get_file_extension()}")] # Check if regex found something and only return these results - return [misc.pair_to_filename(match[0]) for match in _tmp if match] + return [match[0].replace('_', '/') for match in _tmp if match] def ohlcv_store(self, pair: str, timeframe: str, data: DataFrame) -> None: """ @@ -109,7 +109,7 @@ class JsonDataHandler(IDataHandler): _tmp = [re.search(r'^(\S+)(?=\-trades.json)', p.name) for p in datadir.glob(f"*trades.{cls._get_file_extension()}")] # Check if regex found something and only return these results to avoid exceptions. - return [misc.pair_to_filename(match[0]) for match in _tmp if match] + return [match[0].replace('_', '/') for match in _tmp if match] def trades_store(self, pair: str, data: List[Dict]) -> None: """ From d0ccfa1925006bf8be1365b69cb5a5efb0ff79f1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 5 Jan 2020 19:50:21 +0100 Subject: [PATCH 1456/3421] Explicitly given indicators should override plot_config --- freqtrade/plot/plotting.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 1660371a1..dc4766a84 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -176,6 +176,12 @@ def create_plotconfig(indicators1: List[str], indicators2: List[str], :return: plot_config - eventually with indicators 1 and 2 """ + if plot_config: + if indicators1: + plot_config['main_plot'] = {ind: {} for ind in indicators1} + if indicators2: + plot_config['subplots'] = {'Other': {ind: {} for ind in indicators2}} + if not plot_config: # If no indicators and no plot-config given, use defaults. if not indicators1: From 888ea58df246186c68330de93b66d7c442e2bcee Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 5 Jan 2020 19:50:38 +0100 Subject: [PATCH 1457/3421] Add tests for new behaviour --- tests/test_plotting.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index e5162bb17..78c01eb97 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -387,16 +387,37 @@ def test_plot_profit(default_conf, mocker, testdatadir, caplog): @pytest.mark.parametrize("ind1,ind2,plot_conf,exp", [ + # No indicators, use plot_conf ([], [], {}, {'main_plot': {'sma': {}, 'ema3': {}, 'ema5': {}}, 'subplots': {'Other': {'macd': {}, 'macdsignal': {}}}}), + # use indicators (['sma', 'ema3'], ['macd'], {}, - {'main_plot': {'sma': {}, 'ema3': {}}, 'subplots': {'Other': {'macd': {}}}} - ), + {'main_plot': {'sma': {}, 'ema3': {}}, 'subplots': {'Other': {'macd': {}}}}), + # only main_plot - adds empty subplots ([], [], {'main_plot': {'sma': {}}}, {'main_plot': {'sma': {}}, 'subplots': {}}), + # Main and subplots + ([], [], {'main_plot': {'sma': {}}, 'subplots': {'RSI': {'rsi': {'color': 'red'}}}}, + {'main_plot': {'sma': {}}, 'subplots': {'RSI': {'rsi': {'color': 'red'}}}}), + # no main_plot, adds empty main_plot ([], [], {'subplots': {'RSI': {'rsi': {'color': 'red'}}}}, {'main_plot': {}, 'subplots': {'RSI': {'rsi': {'color': 'red'}}}}), + # indicator 1 / 2 should have prevelance + (['sma', 'ema3'], ['macd'], + {'main_plot': {'sma': {}}, 'subplots': {'RSI': {'rsi': {'color': 'red'}}}}, + {'main_plot': {'sma': {}, 'ema3': {}}, 'subplots': {'Other': {'macd': {}}}} + ), + # indicator 1 - overrides plot_config main_plot + (['sma', 'ema3'], [], + {'main_plot': {'sma': {}}, 'subplots': {'RSI': {'rsi': {'color': 'red'}}}}, + {'main_plot': {'sma': {}, 'ema3': {}}, 'subplots': {'RSI': {'rsi': {'color': 'red'}}}} + ), + # indicator 2 - overrides plot_config subplots + ([], ['macd', 'macd_signal'], + {'main_plot': {'sma': {}}, 'subplots': {'RSI': {'rsi': {'color': 'red'}}}}, + {'main_plot': {'sma': {}}, 'subplots': {'Other': {'macd': {}, 'macd_signal': {}}}} + ), ]) def test_create_plotconfig(ind1, ind2, plot_conf, exp): From b614964ba96fdee8b713d4e8ea7c1f6441d23cf8 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2020 07:41:39 +0000 Subject: [PATCH 1458/3421] Bump pytest-mock from 1.13.0 to 2.0.0 Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 1.13.0 to 2.0.0. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v1.13.0...v2.0.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 1357bba00..64402bb60 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,7 +11,7 @@ mypy==0.761 pytest==5.3.2 pytest-asyncio==0.10.0 pytest-cov==2.8.1 -pytest-mock==1.13.0 +pytest-mock==2.0.0 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents From aabeece4c096296bd6cfaf1efefdaced24620743 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2020 07:42:19 +0000 Subject: [PATCH 1459/3421] Bump flake8-tidy-imports from 3.1.0 to 4.0.0 Bumps [flake8-tidy-imports](https://github.com/adamchainz/flake8-tidy-imports) from 3.1.0 to 4.0.0. - [Release notes](https://github.com/adamchainz/flake8-tidy-imports/releases) - [Changelog](https://github.com/adamchainz/flake8-tidy-imports/blob/master/HISTORY.rst) - [Commits](https://github.com/adamchainz/flake8-tidy-imports/compare/3.1.0...4.0.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 1357bba00..13bb62e48 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -6,7 +6,7 @@ coveralls==1.9.2 flake8==3.7.9 flake8-type-annotations==0.1.0 -flake8-tidy-imports==3.1.0 +flake8-tidy-imports==4.0.0 mypy==0.761 pytest==5.3.2 pytest-asyncio==0.10.0 From d846114d3cdbfa845069aa42f995905a74d86f03 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2020 07:42:44 +0000 Subject: [PATCH 1460/3421] Bump scikit-learn from 0.22 to 0.22.1 Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.22 to 0.22.1. - [Release notes](https://github.com/scikit-learn/scikit-learn/releases) - [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.22...0.22.1) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 9b408dbed..43cad1a0e 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -3,7 +3,7 @@ # Required for hyperopt scipy==1.4.1 -scikit-learn==0.22 +scikit-learn==0.22.1 scikit-optimize==0.5.2 filelock==3.0.12 joblib==0.14.1 From 3c0d184097af10bad14b130af968a327daa92666 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2020 07:43:06 +0000 Subject: [PATCH 1461/3421] Bump ccxt from 1.21.23 to 1.21.32 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.21.23 to 1.21.32. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.21.23...1.21.32) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index add1ea0fd..97161df8c 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.21.23 +ccxt==1.21.32 SQLAlchemy==1.3.12 python-telegram-bot==12.2.0 arrow==0.15.4 From 6da97fafa8db18e8a58c01db894b67cf9a6e94cc Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2020 11:45:12 +0000 Subject: [PATCH 1462/3421] Bump coveralls from 1.9.2 to 1.10.0 Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 1.9.2 to 1.10.0. - [Release notes](https://github.com/coveralls-clients/coveralls-python/releases) - [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/coveralls-clients/coveralls-python/compare/1.9.2...1.10.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 13bb62e48..5cc2e39f2 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -3,7 +3,7 @@ -r requirements-plot.txt -r requirements-hyperopt.txt -coveralls==1.9.2 +coveralls==1.10.0 flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.0.0 From 6ac7dcf5e9f52735e20f9ae2b9c82b23523efbdf Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2020 11:45:22 +0000 Subject: [PATCH 1463/3421] Bump arrow from 0.15.4 to 0.15.5 Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.15.4 to 0.15.5. - [Release notes](https://github.com/crsmithdev/arrow/releases) - [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.rst) - [Commits](https://github.com/crsmithdev/arrow/compare/0.15.4...0.15.5) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 97161df8c..c10536603 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -3,7 +3,7 @@ ccxt==1.21.32 SQLAlchemy==1.3.12 python-telegram-bot==12.2.0 -arrow==0.15.4 +arrow==0.15.5 cachetools==4.0.0 requests==2.22.0 urllib3==1.25.7 From 2b3f2e5fa817088c04267c5a488aa371812be1c4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 6 Jan 2020 12:55:12 +0100 Subject: [PATCH 1464/3421] Add first version of documentation --- docs/plotting.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/docs/plotting.md b/docs/plotting.md index ba737562f..5b5199821 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -120,6 +120,62 @@ To plot trades from a backtesting result, use `--export-filename ` freqtrade plot-dataframe --strategy AwesomeStrategy --export-filename user_data/backtest_results/backtest-result.json -p BTC/ETH ``` +### Plot dataframe basics + +![plot-dataframe](assets/plot-dataframe.png) + +plot-dataframe will require backtesting data, a strategy as well as either a backtesting-results file or a Database file, containing trades corresponding to the strategy. + +The resulting plot will have the following elements: + +* Green triangles: Buy signals from the strategy. (Note: not every Buy-signal also generates a trade) +* Red triangles: Sell signals from the strategy. +* Cyan Circles: Trade entry +* Red Square: Trade exit for loss or 0% profit +* Green Square: Trade exit for profit +* Indicators corresponding to the candle scale (e.g. SMA/EMA), as specified with `--indicators1`. +* Indicators with different scales (e.g. MACD, RSI) below the volume bars, as specified via `--indicators2`. +* Volume (bar chart at the bottom of the main chart) + +#### Advanced Plot configuration + +An advanced plot-configuration can be specified in the strategy. + +This configuration allows to specify fixed colors (otherwise consecutive plots may produce different colorschemes each time, making comparisons diffiult.). +It also allows multiple subplots to display both MACD and RSI at the same time. + +Additional features when using plot_config: + +* Specify colors per indicator +* Specify additional subplots + +Sample configuration with inline comments explaining the process: + +``` python + plot_config = { + 'main_plot': { + # Configuration for main plot indicators. + # Specifies `ema10` to be red, and `ema50` to be a shade of gray + 'ema10': {'color': 'red'}, + 'ema50': {'color': '#CCCCCC'}, + }, + 'subplots': { + # Create subplot MACD + "MACD": { + 'macd': {'color': 'blue'}, + 'macdsignal': {'color': 'orange'}, + }, + # Additional subplot RSI + "RSI": { + 'rsi': {'color': 'red'}, + } + } + } +``` + +!!! Note + The above configuration assumes that `ema10`, `ema50`, `macd`, `macdsignal` and `rsi` are columns in the DataFrame created by the strategy. + ## Plot profit ![plot-profit](assets/plot-profit.png) From 3883d18b8acd80fd541ffb2a69b9a1136d7341ec Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 6 Jan 2020 12:59:17 +0100 Subject: [PATCH 1465/3421] Add bollinger note --- docs/plotting.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/plotting.md b/docs/plotting.md index 5b5199821..dade97968 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -137,6 +137,9 @@ The resulting plot will have the following elements: * Indicators with different scales (e.g. MACD, RSI) below the volume bars, as specified via `--indicators2`. * Volume (bar chart at the bottom of the main chart) +!!! Note "Bollinger Bands" + Bollinger bands are automatically added to the plot if the columns `bb_lowerband` and `bb_upperband` exist, and are painted as a light blue Area spanning from the lower band to the upper band. + #### Advanced Plot configuration An advanced plot-configuration can be specified in the strategy. From c3fd894a6c25c709f284b8d529408408256fb505 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 7 Jan 2020 07:16:31 +0100 Subject: [PATCH 1466/3421] Regenerate plots with new settings --- docs/assets/plot-dataframe.png | Bin 177349 -> 216176 bytes docs/assets/plot-dataframe2.png | Bin 0 -> 195009 bytes docs/plotting.md | 2 +- freqtrade/plot/plotting.py | 4 ++-- 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 docs/assets/plot-dataframe2.png diff --git a/docs/assets/plot-dataframe.png b/docs/assets/plot-dataframe.png index eb90a173469bafbd11afd28c31c8e3eccd9b9e5b..6310b23b4b8198734173b011bce7c7d079ac3fec 100644 GIT binary patch literal 216176 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 z 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

      jj9>k~K~SvRZ|By!WYsQG;i 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

      3Mw#Z*c8)g^BQ;Bau8lf+*Q2n115-$Kcd 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 H*Ynn2bl`;q literal 177349 zcmeFZRalf^v_C2cNC+qhsH92=2q>KcCIZqO!_Y`~w+M)oba%IO&VV4@9YZ%mH^TsP zKKHZt{_kU)b9JuHzJcfY_?WlXTEBQFP)5UsVwQw$56%f?=O(uyx zvde1j%D}2$Czs%_rCtuXVb~~+*n-3mwWo^uOALHNaxF!3%qQbnI48{@C4LSW;m{msO5< zNfmb27tN*WNcH!ACr!KYhclX`A5xz#mu6tIKl?rXS4(o7AhH-=?k@0 zP|&#O@lSr_18dslryEOfsgI@YiUBtt-P)~BSN-s_rm#9i;(hV)8Y_o;lTm{?!|r$;xG5zW2B|2%1SfjI_cnK@ z8Oo)RQvV#Y1B=-Cd4UU``RtRkV5qJfQpl>#Gwp}Y3QBGCyTXeERUGE{KQ$4Yiy*f5^wwW zGxxC@lfJYTF&0}%W-I#!{{7JDT_s_3OQcOZ{+Q>AvU6KoJtg}Z56v(~d)w4OKoz`C z@xHOq>iZAKIZg36zLRb^q*GVB{JbyMt=&GaS}40^V9TjfzO`HF^j|g>?mQE8RJceia6-FUOsdbl3++z+8xiI4KwqCyKQ{_ z85K<;@#&FC`0T7!ujUrj(8cr*kphdRa(uQ=m)$d#xnnB-Pjmb^tkm^H(+>xI+Oe3) zwA8bW8RH+?o)TVa(NZ{1^vs1NYt1dylOq6$3xhzxc(hxRk~KSm$NQfXOI+P&{(6Xk z@u|J~H5gW+9f~95gqiAfWw!hIc_PF!dX&`n;*BaiZzX@@-Vg!?FXbvlE>G_i^6n&o zRxNMcLW!PI_w;a3Y5C?9>;&QeHB!@gi?Lzh(n5GN_AJ9A6kk1Vix5|HIY=J<$<(8A z1w(ZLCm_K8Ty=IMeK}V)S;BQ~$gO)N{96$PW%bVNG5q?jZ@txp1w`%0d!O7#nXgUx z?>kT|Efi>G0>`o64t+Mjq>VcBnn&sORquiYH%=~!g@|`S`?)L0&TB(nO7IMWyl;Z9 zFWRE=r&t+ZJ?z2amjV7a>xzsWPBw~!x3EHqCRHZS-^2~X9rQts!bV&l=P;^wxb@}2Mk;N5QLUHl;jdjuKqY-Fw#0vLScy3e$dAe@3wk$k zpJ`w8pwKAYEhmEQ$}y}=N*!zaz<+Go*J2~wIa8fR5AH2I;TU}4IMW#uviSIK+d@YZ za~o7$d}6@+k45$N!N{$(og!}Y?90;;(3%=nXd-R2f-Lu zI805s@H$$VH@bAL(hSk-cUTNf=H;eeSj6KCp&G8}1%orDo!wlN;8D>^K$2h}`0@Pj zX{eb6D`HvJ{Jj8k*|PWLk~$)-`r@Ingi5{!77BenwY{_yv8Q5nH6XR;6lhL;Z$Upn zS;EAmaF9-*NH2xwKGx#$Lppivzb{ULe=`iKdA50^q~U-L{;0|E4X>tZ2)Y*XF0#Mx#+ktx#?y}y||%cC8=$*(Ag!h$1Y+c_@irR5pp)? z+!2>92=0OhH6d+wtlqZO>)xyfiELT|Fr*MMTMjIZ=6K}zKSuf$>y)v5S4z+Xl;#nr z>TXt_MPKw@o!(vo1;v5ot5Po7QP{;fppedXh5hhBE8X_&0u58b{i(#VnOUE#{} zK6K+n?`s_2MYytNv_}4>I8HK9+sJ!;NkdsD)q&Fz z+w#i*Y1+o?sM4C;Bq_v7KrU3`e3HH$@9$lp(~PAL^NHIZMwZx*D6sUj1)^5Y|(PBjYil`g!pylz6HQr_tY zbM~mLW@IcK@{JqgHH2*`Cc^%{Bx%~%dY|B(x^t@?18 z=#r%?^yXoZD9e5w8-D>P!0BpG+l@H+T({2=EMej(Gq<>GGmNsx4CwVl1+7$m5Qtsr z1n3a8)YmNY6pPD;jQ;@q-XR1@5?>+Fo&{=!yQ%WuC$l{?2W-1Sx9*E^YPdgN@8W0z z&+oO1w|{V68!S^CUX1dZBcYyJo9n7@)jBIh<-%MMAM~ihG7{FtB3@=Duz2kqUO>(o zPy1u@AE?g?)p#K{Z(Vxy*@{%5&8jB{yWB5ucKOd z-|XivG8gvx0vjk(#lDAeZOxs>gxsBw^v;Eg5X>#S-{aA!4 zyc6QEdf%xSNF-)$?b0C%&6g&zM>wgi9Sy4S+Btli)=L%-Q%(J&lJX=a6uN>AO}{l} zB;-7Vuh#c@xU)0wzz^J{Nhp}O4_R)jkfC#?dqo;9vp zS(``W&pf~+?n;jO-l;Wjd{iwa)!UJMXR&)A>&s+S8sft<0nfwWQ$5Sg%HX0vS?G1A z2j4(4^8HI)c}tM|a{H+>r}keX^fR`>ai*WyZ}zma601(s;72Yj%32|=A4f{wjhPoJ z%=(9UX`|g@^TsELb{~BVlcwUktj>?9elj=!H>gFwFKX1?4@X(r+S=EmV$49AWsb|$ z&`j~;;_Y?-F84s;jx;Q6Y&<*>HrFk~d%W&P2U6*e+WE*%cjn~ljt_<*{>MScj!83f zv#z**fSXZm9Wm!zGHUTcnYQ|n(0mhC5}{quyqsu@JZ+$R`m#*+A4zkpv5{_WuCXwNlp$ZaN9_d{!+~X}eH>s$JMS0XfoZum^vs$iO z%K-8vv~DkcwDRah@-*n|-1&hoVKKGh-w~tFG;S>+RY`=etOKS4C8(d{DZZTzXULD) zF$RvNLHG9xFBO#IBv-WZ<#s~WLb9?98R>HY{)4wT$?F-fHi^pTD%@={((nk!YZMQh z9$jgm>mEBWbO|H<{jqnHt#X)BB z+Bo*|1W~N7tTrUPjl}+`_Gr&mQcob(<7aGlVdD_h$idRuYS-EPnwrzEYQ&had8B`NFbmk| ziKDiB2VIAidL+9IG9&Db(Xlg-J?onJ!OuG^_ID ziaoZ-O{)&5T@68j4;o*W76tZsafqg?IVD028S`-WE05^8nK5Y28LMWb-OGh{q%Sc( zDvYd~SSj@M8L*uMg+PO?6!ARH@<~BYLN35z?f%Sf36(r4F5~ z^(Zw*f%k_dpbhU>0>e}a0;v*Xv6btkgR1sv+?QIUkSu7rWg$;pMeGa=7WK)o}H5)6Va0+n&b- zIBbKc{N#M^Lx9`eKed8FGTf8f+f;+&rU4zzcf`_O;E(R?E|dSbE(M_mw`)ML$sIrd zOcn9S(5o~$D#<%#yLF7n8Z#wt7a|?5w9O&2*4V#(b%JIENv^{IMB>GNt|0fk5?b*ig z;+QdwX)x>0xIa7UlYm=0DdZwhH<88Y0OT2;hxmDfIIjr{r$6vqySEy}l&_JNEzn|( zH7c4u9;5>zBw>q8E+Iqn&3U=QV@)*h;KWKM40tdy2Rwk&VUoKq#L}wQ9B%j%!4|Je z<}{bi?Ds7M>;`=aIhh6DroHmXiELZ~PVHqisy1joMlwW1@ zAQm=E?Yiwt*%MD~lpSf3o1tO}e1$CfL{i{ixn2a*>l(Qp5iK?Ds9mU@w|RHAbzoq? zwSCI6DCBe47H*8uU)I6@-XLR=gK+u0{bZ`(+_%hhE36{T1s@6G%ew~wFZJD}w89mK z($@k~TzB)Q34d|TD2KgsIPupgA)dZy-xRfT zc^ND;>TONfa>l9+kA|LHm{ujoPaNan?@v{4=@^FG-k~7%Vt-4NPiM0d{@QH{t_d#C zZRv<+qh0-TMaA^Vz8q7xPwBx*<)QW%bUE zh6zzm{>D23&&cmRefBKrpzEtD>kf3#J#lBVDlaT@=zr40rN@Pi}$dmdUMk$%%`R8)}!V77S zu#=LK=Hjm2Sz1~e`tBcc;&_!J?3Rw}XeX{5uLkD|d3Qg&m)wFwGiT<~r8maG0hW{^ z=Kx=uvxC~Lcc}%amjX5iw%6t+C_9#Hl7w&l6~;=uPRW74Wol z#6)CK|Fx>P^KlrnChP%=xXY(6)w-+{P&JsABz+pyNSQ^D4jR9d*ZEOtzu7*6&W%48 z{6CKHJ#2jZpr%X5tJ)#oV#mYJVa1Ln_wWDx_)Zpiuhedc8bw%f4N&@@RZmMqG`5(= z`uqGH#(VeSAMZ_>oFRyd++6`~`4C&r`R~2(7Hb7$JInh{u75cT|1qmYzW{$U$DP){ z0Dep_TFN7WtLw(;UT3vv*}C9`wRA0VoH;iDwmRCJ|K8{LQqg*DP0QhXfr*u zbI`RoF0oXeCrwSJ7awz|{R&KuR`iVqfa?$H{q4R3{YNsf{bQ+(<6mkM>)gk6sVB0bO8X|sSFV!F0vN;AD$Il^IVB^R0 z0iF1j&l^Le8RAoi=JAx6ypNt=o-z?pi?S&q0SJ%Y+vF>Dl%X&EKAo+r^GCl1Yq9BL z{d#hE*6cbT@WE_k1Bae?i;)6k%FIvlq|HBge=!fd$?Tk34o&kp%Ejf2@?2UhQx@yP zm9ECd#%@zL7Z*Q&e-+0n<|rUg0X^r)ZU6FLUVuMGk@f@Yn7!n1NvIU~;1y=sJHB@=m14s|J0I^2}$HV9{3JZwnk*|8(h*l47q4=u2dCX32iQ zuC)W-C;Ma9PJZ$JF;>jaGJOvuGti@9V~~uTp?7Z-usrL|r0fOGZ}RH(nBEzgRMe}~ z_^>XCr9)}nPc7Vcz7t_EG37FkYc zpIXwJJ%}{UHfl!_kfyqOw399e5O2WN7gEDOO$#VlBc!XF%Fq{O@Y0xzN)^@Z-(-n2 zW_&6MA?VTu4$>6l($R{ViRB0{RbhYZ8eJd&VA-@l#E+ z3d!18QbX>MS@gY=w4BG0*eo<(-dTX#%BfATeA!hKn7u?C-K5>#SRgxZ?pyPVmxU@# zR(O$xs9i=>Br6IveY=ui>eGyQMR6;aQ~lZ3$Mv0Sh9kTNL1CY9?usp3qft#vPJ5vr zB5^GP;8p>g7o6uiLyyI=M zpvMd2e&uT2BAS&w5w{Cp0865118CxTOJ!^F#Ju(Zthv_jo<&})-pU4?SAS)l+kc!_ zxp_<+ai*ymFv(0tiO{%Fs?$_seTiGT2iBeQM9iakPt=fEN%%V&YVMEM8E>o1EKYL3 z@#+GHbHZJgMJk2#v27=>-F7D3j$;Xh>>08n?jXaiIwBP~O(&dvXWDj`addMP|CowA zRg5mea%NB2_{KXYf|!CpMBO6)I8idov)mEJcmMiiBh%B6l%~wbYT3x>PQI?roqzooGv;BlOA?|olK;AAorV_D&`!C+-qP`_0{vr%I%Al4#se#B+H(GJ z4^q=4dV1_7&UqZby1G911ce&Tk+-7ay%QU94`wxuXrYCg@&*(Ql?E0XlKBv^KuDVM zK>UwKgDcpUuq}3hYogYpuz6PTc=E?^KMv0$g%5uBNIn46CGzp;QEWAe)b4Z%t*dg z`us*Fi;>>JrQuUEim!E7B#kRXps$ZE4~KEI0y*b9QNi8F^P#Ouiu32 z5{aMoFdz{ycZutTyV;&ESIrcD8Jf5sV`wK&d?61?|09AoD-%4U7TQAk5O-TpyK8p4 zWI=ioxQBAU0deqMPbNVP7O#m$i{M}^vF+)DUO#CYLHe&B`^ zYT?SQ`aPihm2cyY7w7lv5zftNQ^_fw@OUoU_lrhe=q%5x zz5D!XRg0R?phEVd5D)hvM$tX1Q|+mpeB^ph;W&f|>#tePKwXf|%wAFdf={8?**(63mM^@7>haV4|M7AD^%z51yr+kL%y zi?qK)tEOL~bimqLZL(s$@j-=hKnN<7u*9-We#mjNt3Z%|)+!VZW(=z^&o4ny0M%%9OfY?glMdXLg#| z_m(J^@ykp_7R2!D_U&4)*pskEI#IM2ZKKE1MtZkD0)e<_9yNK?_nNg(3>f7lHJ~+n ziHH4(W1GjZXQ-sys$hzl%m{MJeR~BXO7c0=h2*oj!l7WORYodA?242hE>OqM|0|3g z>25$9&9v)u%>)~2D{q^bOxEuH5NYTMGq9>K+OoPYy!u$r^UNUCSTX*t>$W;>kjyJgB}4S`v}RgZ6+<&X-(el=DZ#@CJ%24s&gK@$6X2 zXq{;c9rDG{xV-EC(dZx8&~U_5fF#zcz$Q|J%V|mzmf0kd@ipCMwFE+CQ{_1i!V$Z;IBxhy^;Q5-YJQGsl zJph3uOqPntk7=322zJmFID&WTIK6nYK{nAo*4Gyr%@24EBK&mj|GwN>k95A*Ot`t2 zjVM^>ze@A9a@O#SSt*r61P4*Et3PA+4@>NFA>*4~$;KPXH09$!Lj9hzoJlg?X$tz` zw5n-%u9~tMs>y%v~%~-oj#}+FUbN0*n`btw6D_>Zil^siUWipVyzcn8NJRZ2c z{LZ;>8a;RIpWZ-1RLBn48gn~Zaq1-miqLir$)CfjLJ^#c`u|n$_0oCm0rlPoSH)|A z@u45uk9$UpJe((_TN|M>s~h8WvqPi@Bp}NX&Num+ds_}?Y^{9eaH;c292()A-y@l~ zAr`%(Fn`fj&bf#RCC&-Jyex-bb({Nk5VC*WjyPy>@A;6T0_;d1LGo`REsjJE!vTBI znqk>tCXwia@r-DFTIc==_*S~xyZPt6=P+?6K8iqU)+g4Ew)-asO8v=H)Q1FLSF}jf z8>{zwZi>rp+A{!}T1>i+1LuqePxtP!Mwt!i?^P)-_X7;Pty1CoA8Wak2$Nv7<&i4iCMJ6=?-2Gfn8*$mU+y(Fg?*V+cphI0nIr(QL# z@IzYOv6YgG{LK7R%Z)!Z#D@)HKhn%rKW7ivcYXAASx&RQk?|zG| zi=QXogmVs;W-HkKib_pHb_-A6d%4C?Fx9y0CVsr8R-Ek z<;mEbf)yEHm!ssN{ymp_i&+P_>r>(&L0s-(Y! zH$gtKOda-V<{a@E2^S^xz>fgS@sJW|^E$EExEz3O#%%Zh&;>&znnCO;k*S5jlLwt3 zXiy@1qcl`n>{F)+a=qr~-igD(!+YaA-K7pt2k=|*>Fp!-L{(M!^l~XqYyp-AQ<2rw zZPbC{Z;n52Ow#OVFxSqOmMZiA@f-(OK!8nPD`vF&U3W;k#u6syuof%xn2<&Dgw$)R4I=pJY* zq!BCtQ@E<~;ibi1V0Z2S86-Q)QCb}hrU|vQRT7bru(JWU|IPP(JxT~6nmMMauMA6C zCp%gIZNdtqsK4s%-yJamJcL%Ca&<3lq}ZyV2Dd!jBWhpsLe_~NGK0HR1xg2$XdFbF zSY5vmnKOyU%MjpzHSZ0zDLoYkX9%ot-!k8OD!@)(XGi8spQD9M6np2R8b*XFcabRc zcS3LQBNly`RptZMn-(8^fOt*c&!C=DQQ+wf^TI+cOY3-7M-VOt9;809it3V1D zjP3v*>pccAE!7FxI&{Cc!JQ;#V>4t0uT~oJ>W~=%QE*VaeXA-TBE`!{_aMaZU4NqL z#8IQW(S0vf-HUs-AE6l==%2MX~k z?|yAKH(i^;1+q-as}Z!-BIxD$+gZ2}e^@sf57usT{^{5V^_adaoVzqx4K) z55o29F(*n-xQD@9P^76E+O+U42&VA@@%y64sVrDecSVcy1&7?9c5dx>G3%Q2&<1)I z5w;8R)XIrnT=-^YOc9gHvEBfMlDeKjuTs(78?z1Dy{t&shwah`4e9#Yv|4M(a2KPr zoNrgpoN>bl)Am48!Ao!fot&Ew3opflwOe`q9+{}6c9X+EL#ePfYDjG=xlwSSoBZ?Q zZ$;DOS8rZ6iHy9%shzt!As{&joLCH%WCI5fS-4>^qvR7Zot}>3ub< zq9$zT_w!cJ#zIDHP<23fkBwSW1Id3)&R-Q%zPDN*9@PZKk`jU7MWP0Rvt>j3SFi40Ad3|@00Serd6yv7;2DNZ@<2) zml|1G2yQxw*+8o&wmo^ zopT=v+gxndWgYuf&}c$U)}0Egjn-HE{IP^ZHcJ4;#-N!*T^rzo0d;I;R6 z^2?AhpuJxgR56lC9DFt5wMMitwz;cWB0v303}Kr0>iLcVW;It~rg#63gZ`U-_MIHV zV%$YBN5}93V(GE3Z)RJ^#93+$T2Zyq;HY%?un;V`iL$>6*Q-{Vh=}{tr-p-~(*s(W3o`H~K>7TtU)Wq=ktL8|%mc&~`2t^x`eYU2()RSXh4)nSYgm*jc zviFil3gTqvQ1b08C;UnjiJ)L`cYk*J!Sn*@0~JzL8&P_HUTaEQ@;{(AQ1t^K^;asg z15%O7m}8jWX5zcMfSO1Ub$)B>vEWtm7j5K}Rp@+VOe)XwXYW3F*p9K%)743J&J@W| z4;WkQ-FZ0JR~uCPHOxGyWXbdjVryd^v0++kEO+I^CK7Xj-6fw3?rGvbcM?y=AK}N0 zA-nG&4GE-{N;Itk*soa5&M-=z^Q!^RZ?oM%d3xP=eb!+0fQD*=)#2LeQaaI#3#NDs zRJUa|c&Tj8?+V8{8S?3bVp$1jYb>VRkH5fdC-TfLo?RniEgFclg=&rcD(+8ntoiYQ z0!3p<#)TIGc;MnhJBC&eY4_TM9x}(*kN#&lb}8+1+*m{=J}%+iDvU+93EElKKVi27 z7!t1v4@>bI7@B0y`2{3+)qGV7+1aW_srcG=Krz1pV>SsW#)u#T^Gs_Hof2c``4L`F zJ)~iZMQ$OE*}-*7L~VB*tRAi|<-=crPkg29>yZm`m zvQ9>IINjo-VI<*kQ_|yidVRw>hCI~&DOW8AFwGnTdeu6VKfgR7$F`+oj6@#e|70B> zSCa2Y`_z+__j~{YknMeyev@Y465iNNsvZa+!2Pi5x=Bj(q>K4A(#K_;3tm0VkMvnN z7g6TUA!t}~0vp1Lm)@Ddq7q_VxUZD5AhkTi<(}<1D=9<(KU6QJ1#NI#h1Y z6f5rG%hS73gtl)>y&N z$=x$cS}>hi|IVSowko;1DY+na@$>b2Gv$O>NT|z}>v^+2EtGCrl9KE~pV!ssi#GYh75hV|(y6`nZSIerINUs_T(p!37(^=di+)+&}J5R6j}U>UW%} zZgU6iaCq3sAR&RKod>xdC+g80Gop1MaA;0P_B!P2_fg}fV?&asy>fg#xR$AltC0KY zLnf|Tv71AyGK>a+lI;&YOB6oZ>I?Ua#ppjN7I!{S7 zZlqcsdq9<}P-zdXeE&G+;Mw(3&1pMFDD0w@A)rEQWExrdzN_C>iWs+>pzlI4dX?+# zYNoAV)JXS_;$))($k|a7E_bkZO{}<{q^pEUezJ>Xg zCjrMA7dsb26UWhosU>Qe_o}U^Su`W&oxP@jyLSA7{6CYWyE&dB?#bIQUXbPvT-EN@ zYz3TZSJ@c9QqY*+rOv)95me?dkq&=H4BWt~H$lM~ENMzApFPsYlW3~8-rTr*Wvch) zyp~aN^!IADIS0#LKAFAO6&ydzgz^%OOt!aLmtWLw&w>U_u+i4)gp>83zMp1hrHYm& z>SCDZLVeDmlUDwgE=b1D1ldaEQ`FSZxs7!u7xF?{KyFN;f1tfPmQv|3_lSaB+eS5? zzSAoB2!c=5bFC*t;hS6`>2{#3O=e`OfUjI4lf45s+a7!9=G)P3RdtaOL9`<>9CrTG zs+@9`^=iCf-5nLLQcQ?=zG2<6$c4cinX$K__7Hs09-H6)VqH00oN7;aNKYx~rhuo# zsD}7*jtmHQv`K7!S03Wo;MpA4MYCH{*p#FX^3FS5j6gYW-y8_Qx{x%lk?y&(iU6+k zNsz3-XAx|AZ}ZWL0&3Tb?DSqe&Oyi9_Q0MEaxv zXR)}N9>@B#(v2A*gEs+uS3J*RLG2Zo%M`a{Ul$1SfRmRNxAJOOLkDC|0gOX6KISsQ z(olI1>}-a*JnEO|kaTn4pnmaYsm+m{#VxE{Hez{k8N@})`U{hnB6IQ~>`B)7&z+H4 zbqS=xbBmXtjtqT)0_~jc98zECTwxW6{|L-1L35&Z>Dg3q>MOHj7ba?iOOuDcTgvoB zizXxjAA6J|YMv3I+lC-usM|-Cis%-cwFd|E?YSTpg;wMwX;S%R1j64R=o8Pe1RUF+dkG)=-#V=t?&w5othCxTtm4G%#fbG^qn|I;Ik+Dtpvlb2^MreamC%lWvW1vKy!E)%_o^!I{ zzNCYxN0}rfgJmrLSTH*MjfHTX+Tnz1Rl3sZLp^I^o?5^AvRb}9@1TVn2~xP+>^`4b z^rmP%)}>ob`L_j$X-m-#17>^f@d@E$P&-s?s;5}jj5(+_@*uE0>|!I(S>p1AKH_sp z@-&MoYvVx$nHdaRr9A8s4E0ZsvEM1e?`dLkM}wupv*-qg!pgdVo-Hx&J!nUW04~gGR%5o@53%s0 zg=F@6MU-vwiL`p4SlN#!Lmo=ngEezHycQfwe-=)b68%bo$z>Z~wc4` zgW9YG;JE|EMxBm&%_oa^=%wz;a}1!&r;CU|32tq0@QG_{l=1w->C&wLyOc}IlW~cW z^|8DPq7lAYxIgE_A&+W zOMb^pfVu&Y2ty|5@qCu(#D;*gstK>~2zRsXu91}84)=uB>8Wf1K~Kt&6Mvr<1$$oO zl*dzV>#7#4rz#~A9Zd?0P=^fJo)}19@$n35%ey{Hp)Ul;KfQNCB&EUFbyIkoK2~?{ zl^Wd3R=+;&0Pk*Jdm6P!%x^zrj@Rl?c^_2M2`guP=x8(R%d7jiq= z+HU4q8t;j_0p7d!J6 zBfDd?T4PXPCa+zt_P`k$5TV+D;LWnYW&e3z9sxE*1^z^Tz+q}`Yr6L2Y?hvbJgSif zxOm=R1D^vdMJkTVUtZ3x&RGZ%N5^zqb+CJI_CwSzWFuw6>u&|}Waj=E_x-g? zO`5HAz2<3ayD@FU`l89vhZBL{(^i@Z{!c?D0b@#1s-E>zw441!Iy6~v#4=QrHK5F3 ze*ybwZp3Q-V~dODf-gIfjH=;k;{ioS6Uj+EhvqY8OFUW#S(?jgM&3sOQx7+re6s>n z-si@xVRrkcgpSYeLwQny>CFHO^N z2sO*U8kiD2uoZAuip+sdgA0_S^7{ocCE5@1@+ARQVcKW&m1bASsj&=mO`?@VOhisKg8;x8tmGvduTXFXEo;qHGJAH`x)D#I+v=q94Ji%B@CTong96u zWde(CB+Ci0^vi;^6@2AO76)rlWjQP8c=iiJ;ipZXqUhx8eCi2l*D3D#)oER`Wj7Q` zX?vz47qUKO6+DmbtW!vzrtG7Xkm&jFUS=XX%3MPLt!94tGgq6~?CvBh;}T%_EVnzf zyg%-S4v$=TIO-aeQ3>G4~BTR-HhsRx?>tUt0ohiz$Wc2-T14m#j%$1%I zQmS#D!!mV0*beOwf(rC45T{YCLYf(8PPs>?;y6C6Y6yb5N3()xh(LbrsW=gF^7zs9 z@5uR<>y*mTh0iZ{H+QYImyhx+3AW*0~+aGh2It^x{(K@A<0gJ2T>?tm_ zHA#C1UlKFzs+OOj6jc@JY6{0#GQW@W-?nnPHP$vqW`{JLGxGB@#8GUpDx`MlOJwU+ zpuUD3Z_9WDs&8bgFP4ez+4*3YfVLvn2x`A{=VJXPH8V|rf0zT zTjJTO57gpP=xm|Ma^wDF%ke!4b2^##*=^=^EjCd4aR$ac3l(bhv*6f@b zYh7FpuWCBC4gvE9^>ou#%>0?Sc$EuqU0|(=f2uLZHYLucuH#UZxl95BiPu&SU+Lz| zKLnhutI|))bTJaW7O2BgPm%WWy0J9z;9Ky0LEfo+L#?MVbrhS&YiP*VWk0>tAioEy z*G)yd=t{n+4)4HNijVhX8_csD=4uOcI^Q!e`5uNCd%d!z9U z78M%xY9z+s=v97xopTWGiq_?(>J)M7A#rdN7QcVzglUKRT5btr!*jW8&ihJrNWpal zD3&;<-B$vRQ}$LlSVE1uuCCv5UBN3Uk^O8WqJmO6P_t5UPlL&qUUz?22N!-4I&qQx z)(0vzR*pAyzMs`a<#wA@s5AHzJ1n{WTw7l2!DjJJk5PF{Le5)`iYP;&`g0GzElrpl zo?1|2DIfxhc~SYqUd-rboeV^{iWkAnIr5=3`?hEq=1PFS4RO80!Db_->B9O2K8dX*9tce4tQ z7@!=qw2JJkpI?)l0GvhZg;R8-sTH?XmPaA^>X4!6;ndGj;L-|9tfZvm>Uwu`Vs7IZ zVzkq7ag|l^zrXK=JFU4anBOJ!yUC5~l0J8EBfVLcN74aD9(NrD74aS`9zOF4?{xqz z?JsAD4-Um(4!r=)lk-S783y-Fxq(~x}_?i7=jbfq)>_-6D=*DRP z@p*9Fy<1d;TBt2eX-5_6km@W$O_Qmpp^Q*h6NNs6L&1uLMj&-8`NNtLl+(nmQ{LLD z+GDipO+iy9==PsQu_!wa2BstYfi=5OKiL zQ#dwhQbl66JDR@QA`43vv`NBB1HM0`!FpU@_YnqVOjG`|t#Hxh9O0UUt+4B@%|}gX ztN(o~UoEz|5FT@HgS~0#vOjbp)I_w?xIMG`DYXpESv*qh^h)utq@k_8eKzWy9sSNR zAOUOxRS;7@m!NZnN+^owIfeM-8o)Ou`w~hlseEwL=QgVZe+(k znsR{5GP>y3_R_h5(4($l5zeH*}6tD5TZeh$JU z6xQHmDe89d#_)p~@7`C_d4-k^5;S;!ILcW2>f?cG(`SFIMv*OfK>o~EoC+bJ@Iw7S zd&)gjM~=jJ&AD8S23ST~0VbrCx(U#(2trpBfC|F4#shIg3L9HH`J+l1?KxIvORxSL zhBiOMlJvOZaj8RK7QzJ$2>FA5QB>a_#$ep09h45`e1g>J zkIab}UwkAr?*Y4%1F+A~t@dttn5}i%p12(v4AWxXB$;xZpMDz+&Zhb=F77)H2Ceac zJ6QK+*Q!M)XTjx<34vYs;vKi%hwnP?KYP00vi24!s1LA-01FS|Z`?}zUIOBx8Ch9< zpYEYmlmw}@iePUH!4}G92ByvkBN;|7(j-Ho_2!KOV!Q#;GayRsw)EzKk8ts6$>Ky~ z!-6mC_3V*qHfdMWCG`u5sRJiVt8Z@0<&iPlC<*m1YzJ;(S#2RL`VcwdsJJf*FXd%eLEu~vJq`r&ElR~70xCjs}FxEgvPpt^skkJ~W*?J|*3H>iLf z;$i7~I)fAKCF>ECj#H=M$;@n$fQjS#l4QI~W%?c86@Vl81n=Sm|Cf@?{Y9*a92{!= zlX`$ZlNWY7Ff4?CN?J6#SI*OzZav&{@vt~cK^dP1>0--HIS_57cr=hp&Qu_obOlbB zswEhCohE^=6fQWWK;tCsy5yG`AjH5_)6*4ymo#~0@$i@yrMbE){ebg0UUf~qAeM7S zO}BpC)HnfRei>h+B-JCz5fG*1rkboW2$nNWR-njw7*TB!wcS3PY;JZE@&fCayB14{ zBB8N1T_M@-<&?R0?&~X5NbFR^lGvG70D)5 zIUacm#UfM+Kpm102j)9Yye_-9dhiK?7^FYvHf(jj=r&4PCiIke)-BV-doz9t_~NJeerQKh64h>< z!_RY@2^Id+$q_s*ZHPN3NIp}Zcx!&A2@Qi3Pz!oqL}Npe_&wM==fwpPvux!pZe|LA z5b%Fz;nGsD@By)OjZHIg*%5Fi=$ii=vg#*clSjr+6Hn&o*uLHGe-04p&8qV zB5eFbnBg$aL(*0;k3C6&!bs~nyZkeqN5g%0!2)5p)~us`0BLL_WMXq+bsl0m3(?Fh z-0m_QVR7)(j%NY*r&WSN^L7M#!A|hOQZuaJSR|n$aTJ>wv9gm;3H2Ym>z@Wwtua;M zn>gp4m{FSe(J_!=z~7t*`{m5p3!)M3C|P%$jnw^ zvl?`xXGi&&v9n9P2y&@GQdPkPxKY_=Z{FaEoC)sTzLkoJB|*U~<+ z#W*O);ZTD={~K^s@h1}`_2B0@V5i;_IA6~k;5fgIRIlpak~*(#6kzxt`mGWNUE-%z z*~BZYM*6)sCsnKkFP;~fX{jv5ZyOv1jqk@4f5nk{fXU0QGi_JUtB6dzF(L$uYFX-J z2NZ|6^49Pxg~yQ9#!$U($*{xRt6kO-T-^!R2ix1*uCs1EulW_B{&UOk| z-j5|+%SStC*6`pS6JP*xlX`I0X~2S)fa$4kf-o-`dvSTX&W7T@Wgam_iueEFnFj-gq$(m>sSN=h zj*5ICPA@D3IISh5orl(sIp>*#(Tbd2H%}83!|dWS-~3Qr+pWzVt1qHQx^GZLj~t@G z(6V)lnu+PI0b`_wRgl9YndHXT$z>4zr#z>dBp*K*Z{IC(BzVE^d{z9-#^ilaMrV&3 znbgf!2nz*!dd&Xoi%yjCR9S)Id;$J2cYvspOO{m{Y+swRdE{*Gy3{r_U@o#HF& zy6oYKDz^;LP5OL} zlcr&cqaCk^gB!M!vm+f4L1J~`tqa!okFzxkB75Th(@#uCuDC6}3xhk^>eS9bKWucH zrrhQGCPXUp1|~aCCRGmfvl`M=Ux}B~(;cBST(n=j9*i@t>5VlF7wbbv!_HAIoP4g8 z#PXG~phO0YRG0IYB=3r#;!`|MIb) z;99sQUfIFtmIVLn2>MU*La!cl648^1f#-VmT_DIETt1ZG{M7u7b{FW6cHnJS=pBqx z5uX^R)Wt)$O3tb%tG}{S`r!ziv~cP<=XMq(%)YYuSkuCcR9!9F8>noO|6USXCpzq=!6F7t=ZGc1_`*@xuMM7*ZQf=e}O=8Z^4;+Yj)b;57@fnGYn7;Ws*XJ^no50I& zmtjv5yE918u7a??`rD>eoIBR`s(h0Fht=YwfOj>XQJGj1tnS-E;o4x4%xR~)2zT=0 z(fpg7J8*rqL23SC@PMQ-&|=)xvM+Kg#emN<`dGM3eVYDS?s^-U5cuD{z zbBEF96ND-d_lq*$V3%{XJ_B+kz{@azPUc2L)xWJUTXnwe;$sZ-f3ymy>ip@FVu*bO zjX;mx)M=wCzE_FAG+BPz2HdW-6p1#s)o=*sf`^Bb{7(3)wPB=nvMgIkYwgHLnQ*Md zRVcMwIKo@OK;MSO?tI0@c1jd7!V@RjocJEEB-F}_a!_~>EdkMpYZ9x=*`Z)E-x_Hy z6`IkY65lk4*=Nqc$Q=cpHHuT3Ximayl1j9smfOeI$%lF(*Bwd z?8X59XOf7vS9UcW|9C}5Gyqr2!p;?WYeKeQ%&X-@Svi6GK$VZQs({|;2;TU(&om(~hU$#u()C@m^ zPC#E<6>nSaiqeU;7H~WPg}=Os0v)M_4+Pqbx>WlHGO|KU8DiO*m%+Z}yjJZqg3Oi| zXm@mCmS2Z(>iwD6j;bJ~ynR-Uh+S}VUa`nECuY;&h7LNx)8y*ePW0GTJHkj)wKL&f zO`|!tx~>mJpvQF|N%2_mGWDtfY?{eLlSGH_`7yqU=2QSD9_mOuqyMh_DzHPF=|Bd$ zs*UA8k}2LdvQTl7o8AxLbdW2v8ksJ3Eb>y$s}bwwE76$*YE2wG5iiY(P_pa2U`UW8 zg3eph@W&P%I@SVu#OnXNM~oH~Xp2)27j-tK)x-#%?FJp3+1)eU5}M2L_}!u=r(+FI z!y%iPpq*AwdGclma0cuLx%RyOK+v&7vr5^osnzlNhU@t)nZj}|Yc(e>W610`ygn)X z2j6pJU}U8OAPr%Acc4Kd0{vf&Tni?+)5FTBj8kA^QU?Ngc69I+piYdlC59`rOizUbX&I;ewVdw$WVSI!8JwE zq^2Ez$y`Crq#5`&3aj`gsq})>=j`JIHb*&`8A}s>K*n0@OLR`L{WMg)6? zzD^d4aXY!|o4Y?@J+%nO`@NBDI$c}6kzA|(o&I#2GG2r(J6*yJbF?_vY97Docw+1W z7_+qSaQ=EcJaNGU7cNtB+#$1dro35w+i4`=uNyMHmh87|44Q_@b&r%v-c{7hiSg0v z7!JkgQ0XRP%;ZJt9qi=Mc9n-Q{!MSHDE&OPU_bj{GbJUoB3?2r4*Q$klLJ}uFYD(B zi+^C{61D|SR6x|Bqp_L-ieUqhiz?^HXg9eS=w|0BA-@z7XBlg{>t4{6bh5mswR zg(~&5yU=@MF~@MGgE>UI!QfxB1qFHWkrWcn$tEuj@IMoNb^1q))xdS)E&;N^5f0He z-jB+cS2wQXe^n+P(rb9HqaQcxxR_;+uh)Z)3|??E9-;pgv9(xVa;~`;W?Vxf7e@py z;eS@zkytT@x``e(jz**aL@R6{$BF~@cZ02(AGfjV`ADc9-qwFr#asK<`N8Tqy2!T|>ai)=w!J90DA? z8rIY9Mu#FhzHAzPkG2BOi!rHy(@;_mk>{mYwrPyNo)DOFSa_f@@}f%*vTe+zyT~@L zzb8~N4=sM7s?=V@zs-3cwx)G`wtH<(5K7hYA(|B*u=S0#Iq8e~L>hQilU`{p;H)x_ z%d~*UecF?&7jnzvGn`Z6E)C9>>f~N$LCuB5PhcQSABJrFyiwD0pi-?A{>i(;Vs}!o zm8GH2je_L~DwLm^KqT{_A)P7GI2RY@GR@0eBuwz;c2qg&GuHX^JF`oDf7iz6gWk)& zOquxA>2sQs|D`Uk%~|v;#w2NjK!A5-VI(BmTeY%E^Lj~`%F>iYw)4hsZ9V(St^Lk| zu+683J==Ptw5qaey9~Q|GW)(iobVuE5qHYX8?Dk>5IPrnf+b_#!DF@Hy+9-^dK7A+y9*q^ziY%j7y zz2@)NZ!LDQBEilcFtD+L?KBH|<_s1kaZsYuze14&Hnri02N{DgbZkove?Hs9pOS?` zx2z|O-awJU%iv0G!#01d@HL>81qV&ZcE32 z$n!rFpLLwy|Guf&Tv^w~!OIp}lzRUA!}VaBXX0mBGK0@!WTH%wtmMYs_{D3s=kDO7 zPGac!NN_#v>(=LnPm$Cn?`KwG3?3NSK`wGn_~-r0!nu00u8*6QS0CS}yVoB8EJG#- z|KZVaNOITf`in}LU=UbXj^~+RiYd&$mna0wl_UTVYPsd zl^GT;9q;QukGlM{45ua&=+6i6S}9Fz4v-4#wV}(tfM!Uuz@lo&93)a#~glkuM*&%NBw>!2pT701n4|y|}b4^tL0bpI!S!D4*b+9ATda z%h4K7?g}`FFDLQf;2*LhD5Jx2KhBj-u6Ta*3a92qJIW| zGs-f6nL!g2Kbl_T zY=a3V8-KxOA!A#6&Uu7Gl-LmiH`el6AC$27E-TGaaV|Fn<{~b%{Cy@5K2)Q@Q*vFF;ocD(=Z|@^Al(0|j zIFTGAY(py+hACy@-))Lf%W@tR4QeG#;c1gX1A~n@0t5{EhQ?_#JYM578V@jbQ}&RZ zHJa*iMh2bzd(Hnk`>r%VW4^G}lbN`Wsmbf--pS>?^{tt@ozN`h_FF(kgWcMKKJwn~ zfKf(8mMVR+auNpLTox4c`T2c7et7<|Br%gGHjo&4yFE?}2@A!x;YxYNaO7(H`>trp5-Cc?1!>&;!NPA386^Lx+mM7RY&&cawci!~nkxij zCdfLi+1%lSfuSRs{rkg~|KLW9pa2wHsu}W7$*k`8=hM7dPJO-%RjZafiv z@NICwP3`Scp3z?j!1b#ij+eGy5fwAnz=C!-Np}K=lIs&=*2KmT)Fc+Y`>_)^s7;nz z_Vn9$RtHnv*cB6X_T$V(1rjN4G~o9+BFu~PPM|uy(|9du2~G>+OzfZD(-_w$Uyh1I z&Ss7Y-L36D!N>I=K@n*6H?Ts1K8AW~=%RcE6HpW^=`DtfTtdmMUg$s_(e(5sti5&x z*WpJsL!}ZTU9LIU#xJxh+F8uo$H|N0fn{+LwF>rHN&MdTZ8m!M?ZdmMzs?OJmY*7mvHbX&{i6ALKHxIg?__=bY`pZup6gt=eg%jv5{II#pokW_ZMaI zIC*}Y0%k?&i%g>M%yw>78w$^dmEf6!|Zp5tCLGa$19Fo@@D3 zf)smvZShzL2+y0d2^a3jK#>A0=alAOO92+ZS5`NSEg|~t{Zf_cbj`{0z-K?{Igyx) zOl-s7ymybt*%Rm92Otq}eU6nsJnZU&zuyNE{M)JG%IrrE;bAF}T=L6GX5d#kDfE;G+Da(^+DAZq zek57Sy6yD?)3MFu@zUo`vC3EfGtirg?>#knlVss-Ft#I)ev@bl2L;Bgjy`wWntv?^ z9WngI!9uk&2)jeSNLHiHk+PJ3sHkj9DutLeG_({$5-l7T<;noGuPVRQh&b9yws1{B zrcY7G`Pxze4>dcvbz=cqF+~4zZ=s5j$2)`0ogg?!wrh42=zx}j|+eW1SG-MVlkM09`#?@41Ck6)b6A=?Iy8X6b7N^7FJS;cEol| z7K^|l(d8>8$k)(F-SzUnW@f9~De#R`jUR-+Ry``~iABUOyS zmVydiU3F4n>iLL7)LQpYVG&&LfVkujzo~VZWQ;=it5yT+QHDgfo;CHniaDGHRnQ`+ zoSlCeA5Po+%t)dKNZl&I%i=Hp_UZZgpq`%b_@aWzjse)OK_a#sepp6NKuE5fyR?iC z@9%Y-g?~ej+YRm_uAp>kYkJ^PIrkWvmlt%~sHw)nU%Uc3Wf7Xp{H~(!Z zEyG6u{_Y^iIVr?FX#mlKJn=&ouKU;6jhrD$6wyJgo*Z)y z-{>zK*9f3t;YR>M&yN}=GI~CgdVZc2o2*c+Q@4$Nv-G~5OBhS9V z7E6F`_Ec6|E#W~;nHM-#ZGQ~&Do(JaE-7NU3Q$&F7HTq8+g2kO@7IwU%~Pbit&wWj z)J9e??btW-q17!PMrD=?Kh7sq9-rU4o*druxI*2wNcPKWCSV5R6e)}mP-A>k zb@&WUrlg8dw`5YMA7?@~a&Y9olMB>lBNV%Y;k&W}yUGrCcRSm^PE}h95Qgw7E5rr5 zwu!TaNK26km{4l|Dr!5@>@x?5hTY?70JBShSA%BpaghrUX-{zjNygbW2kA!J9VG?R{%hwnb+D z#(K73Y156XRanp3*+*4gh#;`bRZGbpRaNb)CA+2Mvd-x0ejW0)^>k)bPnJkaU$R7x zWu+5gfyx5kXSz&3@r#yRN&;lAy52XAG-n;on{QPb`XuEv)NDsVj`fMdueF&p!KF)E zgom~Pe)PDr+!F_*xE?S~S*W4{xAHuz@B4qYr~knOboW6!j^v$g=U;n2q6PqnCGmoc zFSE@gqM0Pi;F4(gm{r2_rCKuiwrfQe{#+NN3IzD*P!Qsl4YB?nTFJNUXSO8XJw8&8 z=q3yTH2+3hA0@7b_K)RGc6Gv8DlHO!ys@om$96-_d_|bn63JW>?caX4) zeTUQ#pvuKCt@5z=wZt1K8m{`?D)c_qmmXv)D&BuLCTta@20R1@Re61(!;gDGQFOn$ z5TR=r>^z0ikfdlDHLD3OTOr?>mnlnUt?c>*VnFoaB}A3W8eSjuvU?zud>p%;4n#>zh?ngsGwg_Xng_4T%R>lBi9g9nh@v&Nll?1V#>hV(8SJa!1_;>6l!X@A5#R@ z%OdoMR81+NFTBzY5mT8I^y8LUFr5j0yy&^{rde2|QG9w|wRa45BV9(iv>>+!iu&2O zz7o2!pRNB49<+c*K!p;u(s{nP2UCxhSQo~uDE`%%Yp4`KH{+rNH*v3?U;3CV1BQ0f zb8L;|F7)h*L z%7DlMc4&oE^!+;ONOG#3gf(R<{L0SbGRqThT@MLLGN+G`g62`FxU)cfQ=(5hwdZJ_ z@|B89#eEaiX3h+kq2s#tPO4Oa&vi6^vcu=-sPtzzIlJA`$RI{=NZs~T`J&b9$?F(K zJ~dVMXJYXsJx%#q$EDswc5AlHDnw^mXhFqEDm`w8A6g=JPJbuQdB6wDU0}ZjQohmyl6^5Tn~}i@2vo401o8$9NVeQXih> zRNqqLy9}2#U9@~!Su>hvDgIX@WQzlGQ4NUO`%pl&(*KDTokMShs8JVvffB*`8A!3( zwxzSoFnKT5n7EqMo$e5{U|#|*5Zao?*XgY4S6tP^U;zeimio%SGss+v4?eW%c9Mr# zw@3j#SS6{uw%a|K`9<_R!Lq_p)0BLT85taz0TJzHDfaZ$)BFHQ1^9{yum3@HgsO-Yg&dH@RGbDs~QoFX}$N6Dsd&Rfe2dg<| zfy1gmet}~k5u|zR;=q5y zc8|KPH2dIJNdLf5tR^}mK>r}fnbOy{N6g#<1gIT8>O%s}(TCgBpCj5&O`A+w`$8TN z!)mIs$MVcqBMr`uwD16b<`hZv*(`>+t(#LO4!k7)~t-CJG4-SNMIcNSf3~S0gu1c@+P5Vwsrht>a)HtD+ zl;g>p(ooCzSG9bC0r}JB0zqEv1e=@!kWd?>Ll4zo%*g)Ji-*35gHF4=$iV#!lan<# zTwY2dSClomi%qr_3vOye^dx6?y4LTZ_7%w*v^9*Ce@9$|xs+ej++Ios)@3l(D>0De zqc*}5YFi)!8L~x<{UJ82TmOXxBr8;^Gi1Umc_y7=qiua+01-0FWfDl{eeC}RNuq&`5I3IW&=V%BiG{yQ zX#o%87w~Xov1zoxZ*O*hAi=x^UN;W$o0!N^XJ_mgniby&`<%#62dZ0}1mw?RX0}Bk zxfLi|tntU1j0mrhfS*}!>{xaDHgV!eB#+^yRh*3uB5g2s{Oq1?B_t^jVsGbk)Nrcz zeIP*U)VBtg4ePUoPy@VP9ccWd8hFzZ5DSe&ut%s3Cb~QRBuRFkLPHsjnJUI?=Cg%R z*%2W-wN_IN(dgry1qgJldcQb*=K3pas(%HwGjgIQ6FngKXu0_1xOD0i8MF1&r_iPO zFjZMF-bX@ALvEI+eb(VraK)lUe~PE!BkH2{jD6Ci^4x~DLckP! zOI*o(X-Mc4fyZ6}^gz6hB;DmnZX@?oao@u&2R|G%HKp~gA3X_(%ZA{>eeleIbhOh^ z;v*^&1Q5@fwYWJrbEpK~6 zLsaOa?#8Z4Y-bpuM)pSjYU8Tu-t_G>`TQ?>F=Xhcf7kJ%>0k zAW|x;bmjMuyVP$-vZWsrur#4^`Y9DfuQvoOb8=rZfkk@HI*4FWP^D$Cs>GVDo&rpKf6tZIE?^2EfC1`nBy8Hh@~KMdF1TE?xgs0rE^6X4c-7uoIzkx`P5{# zLf~&CDS<(bACz;)l?mO^P_lQ4SbMN}961BG2SuN$@sQNfDt^BrhRrhIB@M54G;v2q zECPi;`Wv1+th-=F4z*LSmqzB}t31EVsJAy*Uh^>WH@r1E;dZ`ob4fB=e0v3thUH9% z)`lYdE&kscjV~vXuhzhVC)x&6mJl}BP-)Y9pk%@o#sVtp0lspjCwRlIcQri+l{KO_ z(ixnJ=BsJBVJq17B!a(fBAe-1l2rOu?a*AMo z7uG*C(ktZ)?|Aq3`c@aq=3^xQYQV04VU!!umxZ44mjIegi3X0^US=uek3Q3RQxc{y zKeTfGF@lgNa9&@*DN~L@*@#I6=_#pnC5h>~dwXa*Xf`L=otfH7K&{ZcTyo!J#g?V5_rIzil-hC5WBYIv`U zW@UUXLqbmwGvS0;k&03Akv-}>$g5L@pS z!Qub4a$iucxIsf`(wRrruKCb+5K;Qi)@P)TviG|!(p-#+HtcBkaqVYjz)W!QlKJ1gs8dmW^WF)!H z)-$msQ(I#zUc$?`1+h+7RR=`2U5W5&BR!C~s;Ifk_%o5vGVxf}_;~GM8Gn?*DM%7- zN@lM2S(N5WY>1-b!|JyMg&YOKLIX+f|AF&>%F){r_u9zv_3QQN!q5?Ha&)Ux zchkY;*ZQ0$#E%>Xyl_Uf9LM|2;8x;C$SQCIi~=3#!Lmd|*jxM7-q7b+IjPdLM4MGa z$g@2Q=^XFWrjzH2M(k+-UgF-OH(`6Vu{M7>P9H5NTbu%T@w9$C*0Lg;{9WhrLn5-D zC)}r@7AsA@!gGr1_u=oVn*JjAuB-!@)R1IT!;dU(7OrW1Kg#_i)dc$_2sp{UfL{rB zkNyw!))fUr4OS+_C*>AP)Nm=cpbPAa`gqVt8aZ2B(lA7E^yA{W^{E5c_8vf9|FQ`O zqYc+D&H-e1AprIc=`6vVwmWoVEu)%R8Y-+qFrag}{g}?IgycRkF!z@!d(6wPhbNJ) zT-hg43aZEhXfIT_s1;0TNmidE8=XxqAN^f;STDo38&e>l9j#?YGc4nNKu&e#97o;l zAR$bB+Xx1dtTv8Ucz*$M;6m9dfHttykX!jbU4ckz9%d0d?5J3%fuB`)j%^VZcG%v; zeQ$$6?8QfzACb`G1xA-e8Jn{Pg4*H!0E6oRHFOg9q=FVs9JYi*hsC=Y@2eF_gvLk# zX#{*=t6#zRnY8+eR-M=^fsy5X8l}GQ0CO%Xwi%VT#=1Sjbm<4uR3qCt-G+~_HfUtj zVv;4pl9$xo6H#fN07rWl16@FBTOjuX^R${c!E30rj_hs0)Ai$r+oe|^72)FqgRMP~cZ|^zCht z5|}4L4$Bsj!CG0hN5b&>9-O3l>FN-59>6OumBhLFW)r56zX4Dg3YQY;hx%8(7hJIA z(vnnCM@*{h_JHsfGC&)V(TL-LR~K-F`hvyA^}H2p>l=iHp!hOEUMQhoeFhexJ

      y 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

      CLz8o1U8Dr=!D`r6ufzSh$S!FWYCieMFEQ`j3 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

      7~F&+3=jsBOlDVmviow#^mN$wy&R@DI=8t$%( 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%0DF*ACRH?C4qbs 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

      tCyNkFHRuu3cx_|_Dl<&EA zOW^{(qg|3-Tam}T1)XCf{9A*#tNQHc z+9VhU9Y?dI8}#@vizFec^PM@f{+3FN1b>C?9f@^AGkc<)xMbuUlbG2=3A8i}(9b}^eNTXjFM<%nQb`nHZX#8{R@}jJG z7_{~A>dt@an=;KEhr~2Mh1A=i=vT4QfK$aC4W>h5^4k_#G$Yc?--2@neK6U;7)J`qOSEa-ifc_ zMHfEH@L5?WaN?qVzhZ?XoE`rn2|G1rvcM#XCjY2m3B;4wjpdks(kLH_RJ<-kmfT2( z-k6n^^|d5lzZX_$YLD`8pIeN;7h(C^-ln-y_>cuR*=51}8ev%&dnV=D(h31p?rxcc z6=I` zviVC^cD%2yer-bg?g3mpgzCERYP8;NBas&%dqPc9cYFv{V%w>%qh4B~ms9cjTc9p< z_x^k~+?=DzVk&?!P6DodbXiYL6}~6HbQ@8Y3IM;p=I`_yi`ias?(S8BNKu_Qw{*_= z^6}&O{ELo;Hb;1UJ3el0V6eS(fn+6>{u-T9Kite`o^)?-FJ+$6!HBj3{dqD-XWMGa zCdiL0MZ#n@?5@5Kr#n`#YFqqtDis_+TajdWl{^IApU`$9#p5xy(!Z`*>(2AACP8JRgUpVn6mYGiG|rMAk^~beM|jg$8>#rt zn%%KYi7LVPh;B6T(K6LRM<;E{{Kqa2wFKDd1YHg$N9ypvpQ*YkF0~Ck}7{9h?-rqk*^i=3zOXnDA-JlO|j4grTpSiDe+a zO&#+;K_fwA$}h$UMO-31-H^#OO6?ASYC1L-q~#(<*u3~9DCskRroS=LkH15a_7{r7Y`i)P+0{S7%eI0%ubJ?n?*BkhyNH2`m|EKYkrcOSv+hB5*y_T`r?>E~~^6Rnk=66J0CdD6*nJW6c*Dz_z0$=w44Uw?a0&5Wjrz zqmn&cE}S^^fU$Gr&8UX)7qsz|Oa)S1!OE`4dC{c0vZ0Hy9orn$r+dp<&za$2|Mf>I zXo-71S;NaXId$6mGpFHK2UanMJC+;iJHm2867I+n=Z}s~^r~9B;h098n)__H`WqhGV^Jkmf=wz5|T@4;;9 z#;L)v>)&ofhR$L+LMmnET4kiA(ivv(o<*MT1ezWxn4A^trUy`2ItJ(rwoSwU#6+-7Qv`SOcZ@}bQm{k_qQsb{)fVI=L) zpaJB^myB7JwDbeXjUNT3hPw`yQn>RK{acc}!uat&15V#|nJl1{S%PvWFW;|CqA^$F ze=&mlyF$NvKY@19kijr9{rhAe#_#0EICT`lus)TqP3{h|mg7TQfY6AZqV-16dQ&ix z{ikec2*I11)84U+u^#4M^PQo=yM=%e_$V`uP|oKiVGc9-g&ZA%J}nbO(N&CJWlJPK znXN9E2HepNMcsD~9)R%d7oG{s?-?CVf02<;i>FK(CS@CJG9~*@WSO`S!XX!rN zkn&T^>nR@A=m4b&4EMGI9-J&ZFzeh%1s%B7Os2q~SukkT^*9FKxgaM4#bkj81ZpZHM`OY19~y$5^4|SU)%`^R@;-hOFS_4p3=gP0 zMSk4uF12c@{ai}+-qbP*Jp4Qptb8-PArJ6(cocm>`0SND8KXST--kju&pP)DcX~UF zF&z?|c;-|jNk?+u^oTgKYVupZIVZQqPAbr}kfRS^lp_>x5y#icOH+VyB&BQ}U4@nh zuXK)(%=3O*{QGY3f~6Hg;s1NI8Zg*5@K%k_cfqpi3nga(K=E z50xXzh1`dW|6V$0NkMC-lHS~tgU4BB`iC#=;g%)zT{%vMI8(7Y^u^Ts$G0uN!@aj> zz{s?|KO@Nkk9ShDnTe(-!uU5^-s&egXwbdb!FC11MWl0t-<0b?Lrn4D#A_BUJGqoFA zQVc^!^rc-hvENM1nFh{S$ z`5G4f?EUh$q-N6SGd)DtirlH8@W-do2dw+%6D1EhP*p-UeZ>fCl6UfW@9TO8SdyoU z=UL&-rT;et%0ViWu(6I_FGGGte4jOV!|puKEhGuYW|4qd)5rAu;pu1-y$FT#C~pQrUf%c97eagbnN9NFzfwF z%P|3X7J?EC?2n7{=Xj2|qXB?OBKi|miR~HRx&o~ZzigZKYGuvbT%87_U`5a&K z!Qu;J@ny`Wcz&xEC2K;5CBywtzM42$tG0;xt8lIV>SI?XrX#ajXu2 zuzC;)+w#1VuTX!7KLU4iqP7U0JwxH@?7enSwyr|J{I+WeXiB}y^xYU|Y8~y3KUwDk zh5RbkuTf%0yBq13Nd6}bwV_C?gv8n-&w=^E8;-l^i1@6R!8Q_31y{wZeEG41n|_K! z3q)r7opO2Nwx0L3tgcgz_;~4>b~U?t(Qxi2=IaBjA2g|4Iiq>-134+t@kRQtKb4A>4DD^s(H9 z5M`X}>z7HU5n{9!4HWVmBFK7HYz>SHs%ENt zViB}o6DtdbKkad;hr|HPSgG{mhvi^tYDN<_H1s8_Iyi-%2Xwl23lYH5sGZ*3Vq$_|rtto!XFST)LN7>+K9|IYl zi20l}*}YE+9p0ORH1UZc2$EXQn*`S6w!gT~O29VlHb?#ChjaDL79YX9w}XWK2WC?yrBWmfp? zS?!caT)JT>C)Y@+dz!>!D=SOm?)P>poz>YLI5MhCIrxTC$$hD9sFbNuXQm;m`lG7X z{Ih@~Zw37}^zGSN7q(BF-AilNNu+GuuTeH%*+Et=&N3UgPN_e3-fYd03E;;}S@#CtJ(090vgN9c zR0ek-GZWxBq<6QofO#i&trvGC+CU|8$h)|Zi6&^AM)f-7&!54Mbfodo0O5#yX1)!k zT*!X8RX*tMTz2Vqv{96igx{0I1|j!LVylI6YW4&J$BgNB2fLmG?tru(ErVm2DDDad zcg^I(OH8QbT#;itWjjXeGKhyg-_(FSpoPuUc&C~d3Yjf2(9)@BIu1dPPEO*I4eVMv zx{lL(>@rN%*w`19t2x!QAFA$B-JtUiH%~!Uy9iQGE}g5aw`GN-82B#*dCv1pH&lJ{ z7EKE-72FzxWeC5vEBm|ij68|!B9jg2-kv3YcfAiXrH#Mp%TOVYk4O<81~#ltT1b3E} z^xUnNCyy^BA;EC-*iDjrS$DIt5$k_;oP{WZV~p~d-z0Ft17{UQz%!4*<(?AA#NS?p zUp+?~b$E7XY<-v7-xdRzM0hgn_ka*jigK-e9!zJ$Gk|-kiQ#2SF+eJ*;CjVO|E_Ca z04|_Rt2R{}D;~H%n$@s%O-${W`ZaFZa{zHBC;@Ax9=Am2YdVD1$bp!o##;7>+ve$k z>6OhYl)Kh+;>ZeoKFsNA63_$WUiz{9m6zk`W?na{BEgywVR#$DlnoNlxBKvZKXBDi zIPV(k*4{gZY+tPdwMuI8&M|95X=d2-EqVORRaPY}3i43p)(Tjd53AY>lYsgsPS(-n zKhXS5fMla7k@*G?bRolE!NTfEF?}s&?FJnr#^}x8Qo#y%PSJwj;G;EC|M9qF)ib+V z#N(0dJIQ$chXYq8nF5iXK}i~5LBb<)RzmZ=-VrQCxtC~YhW&B@FV)9Bo#k8@!J(~e z3p}A_BG4&s)-z>}6X$LEYE(mS^Z^_IT08Sy`_}F(RD5}8_Xx9?JrOIik7P+l4CFPENVK9#Y)KcyTcQSM&1UmXhD9 zP=goug%f)DQ}8mw#J)CtGUr~G2YkMCU&|vKG&w#8oqP$Gp(6ZzFC=pP~2mi!J-< zqQXpAO6V$iQ7~n$LBNMMI8aHNx*K&0L}hItt`v*^5#3U&Q<&0b42o?Z+waHn;P`LG z=4IOpNNcP`zizMoUR#E{MQ^ZKmCh_YIA2EoE7}rTp!P_Y?o(sWkki46!VuVzOO$Davum~BTh~Uk*%0a z2PLA(Q=r05S8cm|0_v3gfiZ8IBF9az)3KoZ^H6DVxDD4;7EnTagoMoPPF2uzkEbDQ zTf2p=VSM8{c&Fhh1e-jwPoNtnV!$--T##M*ghMcRY9c%+R zxCkWMCQa}ZysQW2;z^TnP^N7!(U%k+FwZQ zF`+y#-qTnco6RWjX+KkxRi*_Ex)CF+keK(5BM+nHuz^5RrR1c{KYovW^5$=odE96Q z`F3o$Zp@?N;)XGD`3{fAP(R4;l#mu5=ch4vi#3MLQQ$@KCK$K&{h%u*Y42+87=AOf6|~nrHg*tdSoXx3!TwNksre%8t9p)kG77 zDd=gm`qO-GoIp5rH;_x%N8U(HU%{MpW`5RCiC>oWCN||_T=ePhx`|?!^3M8I9H!vD zVxx_RE9{UA!G6|3L61`^TKTmPaapm5Pa4{&Yd7GyWY#@jHrK` z$p_d1XTR9ph+?I}E5ltt2pvvlpX2X;r!f^aVx?-C+fOZbtkiq#B<;~Nt%jgA0$mCe1#FDbR%(THsH9` zWd@S?a8q`m(W{R-IS7~QGHlwSo7t%8Sxdh8H{{KAoobZvo8L1ZMuU!aC4KKVt*>xr zY2TKo!Uy9?mAZ)Qkgfh7Th|y^*S4)2wXtn9R%11`(YUc~+cp~Rut}Q6wr$&X(%8w{ z=k)Zxd)oVR2WyWx=HNH5@gW3ei zUIE{MZHN8U&KsU=QydFi%{SZJ^lgt2J9}|9PotLz?3Lb{X+(X!LOj4|u-X>)pg~2N zKr(k=r}=^N#;*frcf@P+{#Lwt=B`L2?>duHS22x*S-BSLkR>U4spb`-@;y8Z6t1`K zyVHRR2Bg=z_1Y!^_eg^suK`;>COfY9u;Y{5IT?br)&%YRaCoJOB5V3f4=un`G?;EU z!H0Z!O3f!XlHe`JQ=#iKSaknvEBFLPJ!>EY%(byuUROPq8aN~|7^wV*=}O+fau2)W}?1d zi!Dx{?;je09u=VPA1HrXio#2t^>I^`)Vg~)5c#<()lI25J>9k=;rmhx1xI6am^0Er zXP8GB%!}N^D))6Q+6LBTE!U>|`8w8Ri~FGxbtl-aQe79he+ScUeBF#Yx-dfWE%;O} zNw&s%Mb+u^=8CXw%bm5PyEi{;#qAo2&^|oq_Kn!vUnp&O#(bJ=Ru-|0pOd9Q@3v$KII+)TN0lgWo)JWTV+dLJRX^jZ))KJ z_5Bb_Mgb!gWZv%}@zkj0zS{+=P2-VkHF8YY%}VpnEJ=|=eu+idc%`fHNdAHUhZW6& z@&(4evBrU_G+H<3sUbgfBo0m}T?kQb6SxA|H6;m!4nb0qt4G=AJSuY1%1e*dh80@U zave*W;?xw)yD$#cw115I6%VNNzO;JjY&3wAQl_QL5Ua1#zlzgAtRI$ z`yu8_$j3X;P_fxoBc)SApKy!abl_9IFYKef=RP%~DV`m^lCE~U5Q>s#whG&qb6`$Q zaDLU1PZ*cht0-LXiGt;yw4o3DmgcoK`(RViD1XyANkL zQP0&v6fw(im*#-*RDYOj>kl8<$h_A%q|E5lYfyq5{!&g_7$@>%0H|;lZ3+ubRvM=H z+W%>hW*~nad036=u;kaiSkYjRdh3+=3PyL%#4t zc3mZMn%1#cHbIVRpcs`^tjej_+^%JDGeWqkQJme%fa&Q|Gv4+1u!h{fos~4(d6b!UOVRCM{PG+$}n&hN5b+^@pn{{d)F7tD^Oh&p( zZU?Um`M`axUG~C*x^y3QMW)mO??)mYxg|{Q6hiWELSOTgld%lZj~ZzO;?{(%^ZM4S zGgPUJ`1R=2X$R|$=9e2kxwCvNk9TI}$VII^8Wb??zp4-|A09ydzI>R>v$6`E?iwj% z|3BePap1U*=S8iaye1Lidla2y`tiX$ z&SOqo0@M|wQfAXaf$ubDUFPUB&m38!#D~Y^5Zj^__IKCk$VA3p-|VqkG~LbVnPzfM z#)^B82k%>PBC(P7t64O0QVl~FIUiKI6~#N+03*5bkAKAZz8QjV7;VQIR6?eEz{Osm z;wlyD-qQyS3SW#K#?ondMPqtJ3=HIC3(!=aaLr{s$7)Euh3P4oG!lQ8uet8`l{hkh zjlW!-qex8X2FyVw3T00`Tl2uAsTmYZ#cq=2*Bb;{ks*KfI~abt7}(Yh9Y~rUbCTc5`(AP+ZAOAjJDm{1`mB=h2ZnF z3czP^bQCM<)m>>Rm;%jX(DHD=QpTJAQB+x{14R^E7RJ83LIiD5JT}0y2UvbMxkA&e z(scaHke}aRNk=ZD$gBIE$Pp6GWN@MLP%@pJG3dezwD|xW&9bI){HQYYS_>ogc1>0Y z^7opJ7QfESZQD!h*}QjV>KWREi#DRwF!W_>4+$}%i8LS4Cfk;sW@wDvgSW*f=LL~jx#vxTl`D?$3ql9v{2=_BGmk`>YHAH&n5WaaL+r;??O+y2qKHaG2< zWxj7JL(eIE_#{E)p_MI-N)i3V{NWu7)`W%M~0pjuP zMZ_&OyjhGS-=)8Cd0V>DQMREV1m$-bYZP3+ajiQOTj3|MIIKFD=)-48kyzg)z;21XYtPOpSTaS?EP0((!O#VSu(rZhJ)a0Sod<4it{DqL=S{ zsO7Anw|iqM1OLH*$l~9M>5DJE9!e^U3(KKeP>PbX#$qyOd1-aDC{cUD=`a!E+g9f3 zek!f9{CIZ+oMm_4(%?ARtif@DR$-Fa19ogh;Be1t>92hYmO93{MJlr4@!hvdhLjYd z(V9U-1_TdMkWAhq=?NkJa0Mj}<=-$|=i(~W~@K~+Fq|C2&`8-?#d=zPNPIenbh}1{Fjt4gN!ng485z1v{U!Fkp{^|vI z4O7gsJ9}g@B;JDhANF((rGIGX^UX#jUPbeYki5`D?29Pl7O5HfFF6}aOS_QpZK8%8qM?aOTC7 zV-wL&=ER^2oaOxuGzRtE%kU~~exe6X3!o=T%uq%qH)alU)}1D;706;gPwjHMLXhf< zz4>_%`z=7SHK#KJBlqg#Uh0{CIkX<5ipE-R>U^A3{6C^|%4&T+< z&2H1)Nc>8D;EUt5o++q4ZburQPTgI;-ZbwlQUc$Pahh1ii-e8*!EN5>N{}4eIGyD> zhmH5{W`y*XgW+u%9<<+=xm9fNU0U!bQX1i&$}3_3*rRgbg;Vc%bo0(CQ53#ZI~hti z>Wto}L=99On`3+I+v2%x>C_tcFA-|L&#kn-gB;Fa35}YCfr9<<`DW9<`5#Z5sEuF7uks`csKEvtnGv=f=5!h zPS=!lLtbSK5Rfx+9Z8BWN!Cg(YuZ$4XW)Ofu>pIi2(81yjYkk*;G3V~CU~0qcVYYw zx?SyZE2MzSwV~MMdjN&TH?6PuWY)4mP6FVVpx~p_ptYLE6luv$6_>SoIhx1Vwah~v4&HPXw;;z?4ra)pwSwe z^^0iPL?im0A(k7W44Fl_Z0yl%)#PQIE!!4@|89Eu+U>!Cov2aVMyDy@6uRtkgAfu} zmL@93x-94-BB)4=FK7_peC;XV7K{}_NhOtv6VU)B(bF4M4_1ah`2d`cLj*Z{q$)$` z=uz-Udvnl#araRleaRkKA7Z}zcyj29w3OMMyo&f#=^Cvz>Zg$`ueR_xE^K)}&)f}&0W{o=~a{?;c!lFgQ* zcwPTQ%Jrq~JOud8-@5JhJHTZUcjT{PUpnMdV{Vdc^VcnCtK`zYse7IrY`u)egtmQd z^X!_va?bG1dM@<5pfb?QY%Wnn{fqcJP+$998+8!^+fc=ANB7=X?g~&Ym50txK`g(y za~Bej$&jg>_!D8H={ZZ@yU!&Nulaj5DS5Xi90OK(re(JJ&p?QTPPI8W1+g0N#j!G0SEMZHiAT&# zPBd=a%YmibdDIW7lKgedD@D)(+KquYZ{@_SNJyjmN6s3%LLp)$@fW9^ZH%>-&8r0uK!?l!7t9`RLz@UoymJqP zY)yAAtvzdR*KNalI1e^;$38wdr<#let*t&9Xo|ZknXTOw;J1>HQ5Aoxa<|v-?_TwA zM#TAx#`H6AvlKr>iV{agq|5J-TM_6Fb|?v(m(Taz5B&cY=|=H&zLx`k2;)?EyAN#( zOTChQ6GEjr%<_8m^hT;xg$O6c1SKZQOz$J%@T};YX}J)9b-a2lB%|<}?~S8+HD0e9 z$WdF$uhoM4dNp>J1g~f9UZK36H^?c9xC8w;4|wiTf0YiMGqhvU5vwkW;9$^!c>l^P zN~p*7S`hx1P&Ui8*UhC&j3lKf%w^|+wpS!1^y$rAz`&^YX5ejf<{)tUPJ>BDx~~5N zB;4Y0{lyWS1HG&vpvmZ=UKnB2lwtZo+nM)jn(KDW^#s7C$)9w1crDvEee(yh|QF%!mc;hezR6)E_h6b^{5m%t4m z4u^}1Ke%nl$R9N($gO$kl7{vte{@h@HJXj=el7(}(sO(n{inQf5kBZamOUTOc;4U_ z7o6#}*AQq=j~m;#-9}B|?sWfH#xr?k6=&hShGH$%Xfp3k&n*;1bcyle+=W5^_*i)C z7y*lr;@zjj``lQt0Nso zg8frk5s=vp;o6b`6UpKGvi0w}Ot@=&^*LcaiK}b#!~JcN{=0YGCl`FOdZ5^KkbVb) zz$`<1IcP%YXoJ$(MeNcyh*g%Y)-f~;^7-lHwclWpZ$vw)7v#k(P#VTc9Xf1C+!U30 zv-jbtb21kzW$me4`de&BPu`9aa7jhWEQE_84%l8gSu}7zsKRWp0|;esfn8EqbCY zr}0@w1h95hZTbvXMHXwOp`fg$^hp$dW=jO&oDlk-O?l&FzEiU{-_P=RiEp>pidY5p zXYy;0wItH=VRK|w%%1X~7N`uIQRVJGh zXWM7<2jiu|3)Gzy0$1Y$M|4dHy7I3bs-C9@q2`ul69wPCA8AQpqsd3c8yur(X0?pA zN3@{>`KUj-6FQ-exW9mq+`KVYqe_F^9Ga&m?~yE_A_>*As^rH)ocOh54A4R?l_WG( zmC2Aq*pVee2AujE;A7CB26gFGC*lue0#1?IlSxO+paY+1DbEj(Me3&<=IBmI{(t-G zba~NVa5rN7a(#@GsloWj-&-M$fk5KES%Cqo^}+fEWvnezMfLl+N~FXQuVW_#+q>Py zgO8NJIpMHHvPK(eP40tQ>7+rnZ&NI@q#LAe4lC);JfGk?usGVJMB6M6W*o;E7=h!jT}pWj^KnQ$a*rVl{{9<#}fJ zIQlRY{IuLNoQh22#SOWXQMgptN{Gj1LoYEfYVru=%T7!R1*7R16uu3<7gZT;?7$td zraU4I^dKLVO_`UxBZ2)*>()rd$(cng4T-~DH%_PY#}c_3`MkYFKj#2rq>O}6;D~QW zWuiIT*+(0G^;fpFSEs9Tkj@uJ?Xo2aE~uy$o$>V-aU|W2GmmDY(-EdwtGkl#jZU4( z+0}^dcq7%0fF84oi{K8EII(V^lH7H0IMC6&0^hudmAYs=dTe_2<*oMfRFtm&Cj*6p zBy(2s9$`U}+RKKFBme+zvPY2vNTZIyBcJd&&0ZcYLaV7)wQdoXqn}MQ&O6Iuk&Z2fbl5 zz$p8HjFB|I{(dzS>!`p;;XyWD0MxcNNEI{h=$DjdsdQ+ip!IzCf631_GQ?okLmDZ^R6yaD-8zp=VVTMaSTa(?ePoU z_3!?}o z_MV~_1-~O&jan_CLHa}i5^9!;Rf$-U$zwq^K;q12VMn8)QDVj?S7Ay$38;cEA=7#< zGYz(S|D#6&(Iohd!KTytI`ZF6)n^Y1)#i!LNyoKfMSLO*Y` zb4E?ICa{N^!}YNhEeb9~`8V1A>!VIIUv#BFbsgmN&qv?Ufh=}LX=|9YOq<32z^Y$W z?bjpDT`d)%5z^2<2oPDW7h`1S$wQe@U+3S5yv1YqBk3JO1V-~rb;vM(114+agvRiD zn~iuuJ%-S%k?BQ!K~+|5xygvXXF#Lmz~pJHpeeHEuegm5;l0fu@~9}Df-L-&W%_UNbc z_S;JYbx@aQi{2Io!D|gv=n=nk)DoHE)8$O|b%`{&oqeU#iRm55jFF1=cN&H;jXj@Z z$*gkp-)t=68{bi66In8^dw|kwv*WC28SgCne*J{t4FUJe0>}8T(pS1bmLuzVnDgqL z?qi)=8yiK>+Fm?pCd{8kY8d_ z?|F51h;{@puWn2v5+LixKKxCI?1{MlSfMoiTafW1G=7&F6*0IbEi@njY@3M9maW1 z4;-RI!;2g`eU_gzS{`3^U}cT;fxr~Adn$JdOBMazD~Ek2v$PReReFk4+}_t_8ze%|PbeXzDB&e@8MT;8)7i6)%va$6TTQ zVaM`Cr)_LUbGG(lzY9kngiFVFRjloXarm);)#b~@85M7ygV6ft44%i3`Q~N0ZyYlh zstdE}4r9oy%=h&~<-srfC9W|QG7%*mJ4slhMIH*DF#TsTcd?*hy9 zv^85uAtEukuNH#|tUct@XD&853&t)T%S18GXqXhoMwpyqO!crt4Nb_HVSx->@|)Jo?VRCmJgfDcOy>4&BaXR*~$mh%NY%P#9WIWBe}`*n(Cx zhnBTm0HZOl-jnl;8Y8R^Emdb-Yad_syk9Sr>~XPZGk@MozAqm|I37m%mJ;>Y@*PHh zbb4l;rpkv1qU%&I>s^ryy{~T;P-OW-WPZ`~UmWKH{p$eQ_sgW{OZ#BaJV)mb<9X_N zPZumn%Qh!@P!6(6q5s^9n7|v#W6V!(2b`5ewNwQt`Q!X~oo86-_i=*QmcID5S*)!jEIX|fL{^Wra21r?Y zAt+-e%eUcAAH3C#eF-<+x5uzu<|xVz9JDk~7ELLzW1?Xhjk@c5Y13%g)-qLm$d_~#4!)X)DCu;dMJ zVj+~Z$0Kst&$T*RJ;wUvn}??_qt{5$Q~bXOGJXHXebesIJo57sjDu-nXj#lz4^{0Q zn+23c1V9wE3!|7L&9M!C8j92L29;o}nLj`EA;|hhD#hr}FC+w2lOXhy`uM@1a&hQ` z_OZc1v8nn$Li`RY0$S}@1kgf~E2xzzIDgAY+C6S`x`DY@i>p3--D$o#(cYsg_%6wa z=dA)YZNx~tP4{$@9k@$kga^68J8|wm1$~#(7ZT_mc%Okam}aIqqKSu}QbC9VnH-?A zI&*>I?G$~Z+L)4)voKAXE%e~B6~6x(Ub!MQ;Ph4{Lc2mz)4$FPSUozX8YN81)MUz8 z`14Cb+9Td0Udt<$&DC9WmT_t>B+ht>Fy@Q@6k9$s@M7%-2)sKunDg&@AN7nGSJTwX zVn1sW^3p^oIF8)U6ct?#nn$9|6RV8)GeH_2d1Q zOx~f@pg*q&c#9r2etfvF&_M{{27;Sr+x*siWb<-js<6W~BC|p8_uuKYzxTu3THJoF z$SgY3IYvQ-PjXW^C4~7QMW-v}cxa!4|I%aD415RG~So)lU*%~Z#KS9kXlP{827!V z-Rz7Tmer;CJ9iWgdQ|@;f^>4{cKDnrPC0Ek$K`3fCX&{Ble1B8bO`@qE8FhW9MTFGvlc0v zbQ3mc|Qr|6>4u z5%!@9s{6sP;bp5pKW*VCci|@$?G{AiIk7cO_Pe$bIBrU%jp_RQxe`n}n_4E8Zd2<` z#Z{Kiib@;o6 zX~pv|six-tV2-Z?N(dFoI+qR@B3eWANLfub2W zx$3n5ySG>x z>01ql6U!v+*OqWz@5k)?8w&vMNcc}V*+ukC@)*Kx##TEHOTik_(&TLWSOCfOHc{ql zdjsBJt&xS@)Q@i~FIPCPW*YD7k=yFF`)9qG!9jgL6!SdF&Bv*JtQUV_bjpCrz(M*Z z-3Hy~=-OGopuFqC$8d3n=M0z*=~C(2G{&=9z8R4NSq&?j8Jggy%Pq!}X zAZA4Z4iQLe;wh^bN{YZbs_kp$pNo42Jmjl&+YwGRV_reo>R^$|55;I)}`_ zVHhlr-l0;JF;I!?KWU%BK>cd`?d*jRp^+aS9UWJL#xH%{(Dx*lSXJG`FkQLVd`F7B z&ug3KfZ`|N|7A`IhoFSMga%8`9u8KZa$gRH8!}qW8xWCA3j6fnPI@K zUE=6EifUWJ4p&i1*m0AO#@v46%)I}8E1qu`DXb7>@36fp|7_pl`#P`QQCE{>hv+DlMaT6i%4s|2*`D+sZ07Dyatq z%I*ggg7tZHnVVUaSZXzOe-pT{>oNAeffV`HwH=*k$9DE?Ok&GN%6|JZCJE}_E{`dU z&maX;a$RQR9{FnlmGQJ=-oW3+#fZTd;X3o<&_ls;J{Qn`Z!$)5;DK2%+}z{(TRL2^ z1WFiBc|LVj1y+IZV!(co>Ahnx4$|b(R%^YgKKCe%Iq6xV6b!9Gr$pbqx&&_4;WU{o zC5jE*pcbzS?r>ut-P~|B8AKyLBN4LNgS)_^8yzVKLlTD|T1L=!!zUWY?C9TD!<{7D zvq!}hNTb|mzhKGA{oUwD5%_*%JnyCV_I@fZeK}m&s1w!l)_Wk6BKgPuX^`76?-BQR z=ZGv*XxDJsj3-Z#4tD!4FE`6S-cnOZX*Vc!e|3M>USxaODO1bZw?K_!u|Cq@67Sul8j0SO6B=a6-3V9$JDjiy{$)R+Llg z7jByrE`GY|%eQqdsE6uq0_&pF{uT6=VY!>%lEgq0c2#qZC%$ZV5eswV8C=u!Kc<*`c?f+UO2S(B~5L>3JxKT{N)O2p(35 z5*Nks@LZ_&f?_#R{X7Xe?Ud0-vcndjv4)!|Eo7M;bUdiz9$XO;B1@r?nC{#;U~3_0^qzISH;L!<43>p zG(8Z~Zg~Bves<@>l|1$|q0}bV*rNMku@04-H3~qEJ)yp8lNZ@CE%16}0S`G1x`K${$U!m-DLS(YJaYcHvSslGpQ>NF zYp`}#(I~C8w!F~9*?u*l=HhB3#_cz47t+~9CQNbJ)#6I!_<8nnAgJ7fF@{0x=jduQ zk3uf=9#`V{Qv?KApVjF(wmg4{eRnCVrtyl{DJza-UGTN5K=0%MjZxk6Ow=udpV8V9 zFj1J|P?YfO0yNB|#9fL=bbZqQU7(HVLE=J<&ua1#k^YKXcHe>+ysvr$$AFwic^oR* z)VK;;m!C*vf05IRmW>HbY@A>Z?zgE~z>tQOg-k|D^Gtb@QpTX6+5}GmaRKA$sAf#X zi0>P1+>#;nA)DbB<9^xb>ESF~SmlLhNU-O+45)6F?v1H8+U^zdIfhpl}>KxKzr&WRH(PXTo zowG$`Jm03CRB%+0yk3cq?sNT`f7^jPb<-7&FR5u8W#7I1ooKPKZ^*&U=!TJPOhT#i zOO&66x0hDXxSpLlh-txGr_JpKH{V6tzke7--=wfMg^fKkk+b=nw_6;Al)&ku;Q zVr{L*+zlJ4B#zR(UCxgSh#~3f@lL`xT|P*y_))X{v9VVc!=` z7s7|Xv7#S)^kYOA;{t0YX}X>Bsdof{Zp%c$s#ZxihVQC&2;{K zBK>Dhr$Y>~5a)RI;7otq=&XC|DYmK7Bu&arX*$-oct-Nk!+a{mUOkWo>_%R z2)$1m_moj_b|*#6`6-f79mO~Et*eNrl-q~>v@We(=*q0|z${ub!*uiXq3+pd`j9?e z<%Z*x41_XOhf&~6k4hwKR=$$_YSy#Dir*N|lzz_=_2HQC4vV2AkFvt~fb$TH1yq0c zhWxm9Lw3F04{?)jI!BgfnlIHW@{G$i-@JzI5M(Ehq+4`HYmL!7$wk<-w#vRm&EwcT z^V?*WNvnPn)~Q?=v*6)3f#<*vcH97Ow0jFdf1nN*h$h<1?(nx*^8M%5ff3+)lrf)h zp-=Dsc5J?sP=v`7y_m~yt4~JQz)$lF(Ym5hqthi#C+zbgq&N2S5a2s+x3@-1;HIKb!36Mj`6V9<2 zWNJRU^*~F8n=R3D6P!Jak>ONDh!QD@1~X-iEFS-E)sNQC`~1kbvbErp@w z)#|tupINuhbwZ>sC~|Yt0;F_kM8zCA##w%CQ#Q-%eHeMPqq{0MZanD`{f&vkmw)>t zL=Z}#BGZscAO4e#u{&b6(dD=(%I(Lo)l*YE&q)@DtKjDSFh9-C$ay z9HWqW0@ka9mv1@dMH32D#S@-P`-R?>=|XlxqT|DL=aI=`?%+=4j)&N8tZLueS?zc3 znA`VomWLubA6`)R0Qe5t0u467J;*z|X0CVwo^2kuy2(iJ^a>04VX1rf-Vv1KH)e(t zUj&HDoGr21%LZnPK!Z?Ko7s|*p3!54zsg7IDGA=r@cD1S?6)<67B z84!K1kV7t}h+6zJj-O{%9_jBp@rvkM5Av7T5a2~!0_tk2ZeiA*1`cqnnh%S3=e_q` z>J7VtWMA%gfKX(YQs&cQG=YoW1+rFbffX05G2OYI*Ke@4(Qhwb8MO-U6iOnyX&BUWkaW zBiT}E^uciTba^y=@b6<1iaFoIT-HV;90 z&?@J%<7uX$d-59M;I^(HkhBI#pji$;Q!w>x>myuTr|RoAZSP()Th{i|t-+JsXHGZ5b+c)G5JpLK__^{tDV$5WWK z*X3i|Axs`j!9S=nQxad)=GPJsKiO=gU{51b4OHOa+3pb5(K5>af*-BC7xC9+Z4U8y zu&m#~+I4mz!xBb)sG?&#y8Qr-)a9Sk$7M^#xOe_AyEI|3b1ogOZWTWMGA&p~S-a8R z0o;Es;xah60Zq1bKR+fbL>7b}nQRCS6HOp?E8$;R;`&sde+uF9S&#ET3+=UdQiVx$ z7Q{P|J@NKRT3=vHfY0{uEd^E@9UN-t8!J5iQ`u2EG6ipki2rs@giBCT#?V{^L!WY| z0-&(2I8_BB-UUI2kiZjkw5sY325oU|xW2qT?hv#(A0?q)L{H)b${@g|)U`a#>bKRm z7-=0ud*27YHr`I~zTD8^mQkRJplbKs3O)+)se@i&#eX5cX7z1PfA(2W>HqU1{M8Tl3aLxWef8=W?Xd`{#F8nHKv z-OILjocx4vqLN_A(o{PKAdmtX1C)e|YnxY_zjhQ)dbqxdt4 z`R5NmLgWvQRj=J=S9+FZSj$pPWnD2%N{Z2zD9TJr8%kIQRgnq`*JmrYXx1FrKX&O0 zu8ee%%QeU)xjT(q43x|c!Ea@iJRJ^%BS$UYgKg_~ZKvN_+n;KcR1s)wzZB$MeII!K zdMmcSRS*-Yx$py`ROxkL{@ROA_loYp&5b-p=PcP&t@Jqeo@}07(R1{L>kBN+!J-T3 zM-7Q#o>eRzsR11Vy*^J2QkCot<^qqzFIN2rN1;6WQ+-}C5mE%@9JVP1j`1_5C;t=Ktm#bdmV<6nS0Oi4ZXL9&`Rd0YUxI+>yaJlhTJ&&@L5WUWJe0>Jl~$cUs4%@}}%I&{xyKi{Wz^}zneFhB+E-987>XaGzM2GI1DGi^0 z;qb82%kIfRm;tYrTUuvnkhL-yZX53Y&gL^ZSD(3T)5?V+pt&e|?6vePsHbu@cv==C z<4&;b2DcC98FH~^*(0sY>in+IDgnv~MfTk&oJ%#wL|<5SBWd_{1C>hOzD^Y;UUOT) zR?W?=JPLkmcmxbNn;Jc@pMUc3op9(aCK=5qZHE=)M*zo38*gcYgB`CaH?h~#6G5Oy z_$ZPYpsOEBGX9aa@`jgWLrZ-x#%51O8Fz-sHEeYEqD}u(miU;dbxbfBLZQj)L5hc6%cL<4ht)Kd4Coa|I0~wgWa=Bw-Z&9axGf?+HlodJX6hrU zf`jhP#lhWKDW>Cao5ZT z^x9kOXr3EIu#4Sn(8&c`4ZRNKstXjp@V{}PVKUGM+g21)^`yB(|BTC^HQJXlX;WtKry(lu5 z>B$)-YQB#E{!vSt5VJc7uUUA<-Kt6Vk-+}52`_UTg+pvki@ zW9x)`8UHNT`)R3hDv2~&cH3v~GMm8^MI@hN%*;O6lfkqT-`{vr(EUV}8KcMuIbCci_1BE|jXraeaJOJougHn+CWons1O@df8~p z!&?@DGylR@j39jv5<-ipBu?8NcQc=F4(v-GqC0el#!j(ehTQHWZ*K{Z<9hpdD&L(w z&n`Vid3bEGWj-8HBdpw73P$N@V3urjy`J?j(X~SPU1-0w!f>^DKGA=RAQOgg-ON{{ z&{2&wMvR-zbe=U$D_wHgvTS32om#710NlQ=?_${vn56!6+K7oh%A*5QuUU}Cp$uS_ zs{_jgX5mT;z}`FjP|hk-?uirKei4?2`6mHFqQS-NcRf{ZDNCw6H(6ub4+D7ojl2xZ zcPZ@+Tkh;gVZ$YI&nRUNcyL>?O0bZ`7J@dGb|k460W?nISzD%BI<8dqGPw0S;58@{t)@pX92J+tp4rg<_Icmk|7CU~vah46}=Z?XmdME1Q%KIHV%W7X)7Vujfz?W#_o zh4WbpESEco>QkJ0VSp{Da~Xs>Id_TfET(qn1_)`q?54y~=WM2%1dY1#M;?9Cy1X)~ z9;80DvIC@aQfyFjT{ean7hpPf`G`+fY<0v_>C`-XrF>+blvaTaDP3U!pVnZ|>K9g|e!j9nliPlUoJj|5%+yvj4XW<6ye zHO9)31m`gH%qu6)wL6HQ^l^)S7yAccAk+foOaZ?TJ?_w8?SRTI|L$0H5xa!ujS^qd zW5sx4OaxuWF58Q`^sJF)KAf#Dz640t0)kuI+3aflYsjPMM0JV&ve{kd+1+_9o{$7z zPB={}p`eU}_X2)oU7!e1oVV&|+C`z5z?eg_s}nY&`wmyk`Gx2!`U_dX+$(mgr5<|u zz7Un^hgXFv&U~R%pO`u7*x_l5!GV7v2lFCwP>-+;a-p5!L%w0!%=OWOvL#zXQ(RHT zV0&-Ut$@DW%C&*6Vf7S?uNGtX{udPR^NI;afUu?vlg?qr&)|$vk}uP14oaopp_4}g zni7S}+`!K+>A45XV1&--hN0gH&q^!7Vbyi3Xk6j(?unQEQ1dWVUYOe=iS!EK6HM=* z>ciQq5`dI=b#PkG{7RznXd`Ki7TgTltHHL~2&H$x9hiVwk8aP$6rDVX6dXM^x}5|`8I!y? z#a?na0uHJv$v1Cz`f!JR_fM}-w}&m9C6RK{GY;g-{uPFwBNC>t<4Y(8|2(A;EC?Vy zZwY{@c6?*mRO&hwl;-iuGiXl5Za>ft@*| z;gn`*-48&F85&CqLT-_<9||pA_e-{&o2DD)@hG*c^heMc$G}J0<0Z+mjw7rc$w9at zaVe22tz^b<&4Ca^_>ZdZi#fAFxpYE?GRpR*;E9OVPi6G0`csuzKL?ynJkZV zgjxDB)YyvIgP2L|a8(eypq`h6*sWlx;@g6<&sV%!Gy@NZcQBV#C*augIr+8GfMX)H z+kQENL@WaODlL&z1sB;OxPbc=Edp!1Oanz~N6;t|a$>S%^T8MftS)-sF`G5I| zujDZu+LM#A8E!vuJ`iF=-#4IPOv*P95Gm{h<-GbNy}U6)XO?wWAvnZRNXNqs=^ML< z;yrR}Bfjw!)pV{9#jxvK3?20BFZ_LT8u)jJ*0GwF0`|c~eJU!^w5oC;9zHF7;M(gm zqP*`SG2N)E=eojcwG`cVJuz1O=KhbVZw#os-QKPy+qP}nwrx(fYqB-jwrjF$XHAoB zOtzceeg4lg?>V3Q)V=Tfx30A=tb_1yCUD#%Uc{(rgei`We6aP5eemvBs{A;Az{L~$ zI>D^ghlzL(xaxCO2o`YOjbK2icOG7uvv`#GQ@@*yrGp5(Bf$-Zk=kO$K6zI03Pl=# z$Xb^hZ~ODmL^Cj)-PGA%Oz^187i`|S)<*t+ph}72H}ky(995)$ZgrvoIBViCW4AH? zp9FugIb#o!4EF4t@M9oPPX`p$%PiarQg=ee$U(PZf7Ofr*y}7#ewBXi@7xjm!GcFM za@xvJ*|y=w$N7XylG1*)LYr+SNJ;h;a8>Ka1GDKdcmPOoLw1soid@H7zf|GpD^whB zATCG5R8()=*RiVi_p;rGLn82dm~Uljtx{BjvZqVfc6%voAsB5PndhJ3-SxWm?+NyI zRon$JOn^}8IxTQ*z8(r-x<=xwk0OSms89Q`)ui&jT7X@s zPiyaH`tq@YCCT&Jj=PxhdOzrL^0~-ik{tqgC75SLbnq#>Ltp2HqBoV#H~SUm`j>X! zi&cnLu13d+>5V(!>}loLdnC-1{X+iD?(oXhm++1ENj0kcY&6f;=wbVN z=M)1X)kuh0VCj0emO&j({hO#D6$%{bK$6a!GW$1Q5Yz8Hk&9)AJJy}K&gB*w^8yuQ z{qg~p4=gJ9t>zI>KiI~y{rrMhi&duP{b{WI{^ycRL4vup1#;?3=zjT!FNmcgKF;8s z1`8v_X7-Ux6^UTodH%^qRE#H@l((wskk`+UsoliOD&2B?O&kbCVnZb3Mw zw*)Hhi5%cQu-;IZblMR`n;R2+K~^!9W8W>IeM(7TK>P7;o6HcGPEC&z*iB`8(yEdJ zn2xEkQ7Wxfh5p_I;3r}X9Y_VTNo0-uJ5qy3m2MMoj+*c8U#mvcUJ#LM)?)^Zv{$0< zgtBwQL@l#uB98W8S@vxL55&! z@Hsex`3c#*RI^0}`wFqdVz&3}OK5~v2;i#g#l0L~865SMtse~--cj2_$q*6yj;Znc zKoVzLHpip9kKaS<+K01xY3G&kq?5~IdMck{I|@Bh%%M8!I<8O6P6w<5N>11|jVmP2^N?ZFGVCpaR!HS{)2Hz)YgpkZ<8mD~Apesi(n zOT_6HA+$0rH&%Zm{$k;)Iu2M*i0kMN7zIeN@mB!%p_flgpQ4&bylF0Tom>azEqkk| z{lX95QP(Ts=@);b^eo&xBGNA$7wC#PU>5C2M6R%e0Jhu+)mX(Q0b{^AybU zgb%EQ*o2U9ll~n#0mlu$a20BvIu{0#GYftAU%IslVS(FZ+CxjaVBd}dR9drXR)MIh z9I7+U`{=dV6S@upF`Rqv3aZb21s1|vUObOq)9B77Y|%bdOsQ>Q<3e>=z7F{f`oP9c zu`Jv8w{p5s6oZFeP4Di zw`t&@x`_-t5t1++fz3%pyGB)5LH^MozW*vT8_V`!9I5azSKn1E>of-D~&ZR+6j;UjFoU{&X{gkQ{Iij4jh0R!m| z<_KtI_8a`pl^^Q=Ii>y$l7duMCu&7Cn(G{R3e1R|*Um8lSIXAe1Q2)}BU{zUwYW^zOLHHcaIb;xqvv@nFtF@WXWq1nGnD z07gTe^yRI>YM={7H~*cAmksH;@#fE6%L_(BtIfFf=j-su2l39#*3QJ%2&cu$|I(nV zvi)f0AA|#or=i*I-r5l{qs4OSN35XHlzEd{`Adrb!A2R=;BKszN<;gr__IoBQ8?y% zxUTTNd;b2x91X+vQWcIPgEq@fh2$>Y#}mO&P-|%i>7JhFLT{TNi65D={fbgelNM`BMxn4hB-2vlPLDf7uPr(bb>qwTh@r(5LSer|sQ|i0IYf z2cf2{KjCHof}8&DT^Du(`x%*ph}Bj)ilG>#jAwDr>1NrA29#*D8ky)4{iiq>*P;HL z^yaT&csWHdEGOlb3AmiHvU10nRQ#HRHe!E{Wp2u5ZYmdUZfah~=ET_5gqruo$D;v= z73`P^0=iYM$uJQ-%m#M7KRyMw(tIWSAJ`5bpcpKnovby_HrOcOSqEi=2lQk%+NzSKOkA7QHS+ffriRJAO$!=6=x%IaxqZe?frku%}1 z8(CvHg@k$39fXL(6lCj7(v**lrWA5UC4qkW%{^&_4}u17A-DbGO3Ku?o7j0=E^=Q5 z3?ebHFb-fS7oL-)#<~xZZpT%`o}UX6G%Av96>9%Kk_>V~ae{i`#PY0?%&BXv*v1hD zf-4-iM(e77(G>`2NbCcZvcOhVn1e6#EOoOk7|;z*r;ABVlV5&e%$Lxh(!xI)!u*Rq z>PU}?FP5SOj}a9MG6H-TwgVDUETFH z4~-}{PU>&IrrttpD{ujFOw z1qqi=`&;{yUF*#w@i3tSBzTIZ^)2RD@BJkDIz$e5Q?`ofQt7 zc}oVKXND{po;$U22L9UqGoW?74&z*g)@b^abrnLMXMeDEkV5PdS6<%VUm$0r($M&3 z$CsZCzI4ugS;P$+@P;P6jo#13O@~D}0mlDM)`<_J|JrVz3?H7u|9h5G(qI7q6uu6b zB&I=K?pLM9*zS_=3R&i+wwIjG9~(tb zR0qe!3XJ<8)NH94Z>CbPHl84E6bsqDbM@5e*LubMpnZsosb8X1KMbcy*?26Axz%hN zTy8)4po&;FAeyCM+>KDVz!svE8MWRs^yO^D#%Q`m7w_aXv*@MF>Yk~|9iFN3Gsx@k zyBR=>ST1W1rF&-*alKm1T~#CXTS29TCY6MDp}zgW=8L)-_Y6Ll2o^n*etV+a)gI`a zbgHtI@ZOiqvQ8IRhhw-OO8E_x9H-qeXlvsA~^vJk6SbdW* zXe)NL{dA-E*k<=O)4z;tq|fuLj+&ntDroGiiFgao7-7zdO2t?u`FF7J1^l{3Njwf) z?C$#?pNW25YiJvoM2(Ce{FPk)l(R8XunyI2cm~(lG3^v`{f`c9?<9_<80(|Lnk1MJ zKq3|yB7+sHHmXu3N-=}ugZ68v^0xP;Ud*R$vh(CoBtg7TJO4Gw)(9Dz(y9ig=GgKP z7=fYLRPEij0{`?Sj?%nECx2tEPM>Ca&=`0LC9FDh-QS+<84+ipnX&AE4Et~;7)J2l z^0tsFE@N~6`k3`ZrJvL&KfgY*ROhe0PhDEYgCw*c)zI=x-Hj(1rH$KZUPPy-_XWJ# zw3+y{Q#lV8DH%i6?;)ZpMz2yfeo;cT+e1V&h2pTKTfVA)h4BC?LW0)6=rl=g;Ptx~ z{?{~N{sk0U;h7$aDnrv^2w;u4Dhzz2cI~k2Q2(5ZG#qHLzO04l@Y|&R(KyVG(Z|Vw?4M{&w2IHkE16- zG}fqTy+*Fo#epGkL_&YRKMj^PE*}{eqC?;9zDKd-qZoC@USBttFAhI=>wHS-ZA*=J zbqUnWPxEfnY%(nH>={cDz(X|yzF$>WdEV+zUlVV2eT|@X?8wkY^&|uM@_1o*4z^J@ z{NH~b@AU*`*T|;(aRrn!^mlkY%-JTttw?Xd7QII*O$5eK8pCR>Mk0tTixa4eC{#sGc;a}w(Lqeuv;AG z${(6CjPtt^dUD$gqkR%L`tef>IFGKw!6Ll>Rm2(d!kp+`R$KRIQO60iUgJiRD|>s+tyo8j6xrt>R-*RSio zE2dm2?=>gfjR{7?8nZ=L;vyQh=ZKA47t>woPzgnATLtFDqlE0XvmWPIHB`}6;7f!xp}=(p~O>9+&Vt6fv5ud7-k126U~cS6~VLKf4Jt9`pfW4;fPl z3fJPF?(%23y=EzB$_xbCVh(9>;Uc41)amffztc%#2GHW~M7J`D^=+yGE&V9a3v{b| z!>tAkhi%c-E6dxVDQds!tS7b>K-WzbvC%~@eyc6T*Ms>{!B(%|PAdKwUEo(B^zCP~ z23*TT*6-t}$V3Q5e}!b?Y?Cm9<3XrCn7ds zD3W-28!_Vy(^%8H8Ip68Q?F;G+K&#-qxn&ReWlLxQRt(1ElHB1Gh*vs+nH=U89CIl z#aMky3C8k9;iHjYTqE;GrE0>M1j;T$#N#r8{ogv(j`j{e6 zjr}+bPHk>b(|~hGT!y=svO5nxS7!1Srt^M%VoGd`E_Q^MawPgIW;Q!DDu;x3g z3>u6B;{MR59P0>Hi;q~1Z*U?qi8QK9=1C=pkbvFq%@;Zn+fj3I%g=OGXa;cKH%&r3 za*K_DV)Uc%m;`N0J3(+~sEl+H8@&Ab#6#MmE$RMybHTGx+1;55%+KLtO5V+k2ZkmM z2)j0u`;eeuasee%kNhbaJz;5ctWlxTaW_T#zoi~IC=wiB@F`+Qv|v=A^EddMQ#3=PzfF4u9_{vRx5K88M^TLodyMwcx_ z#bvqT|5TlAT0D`I*2by?4+#Uc=-2?R^dRRK6*REukaOyBN)Ox}8LXy*mw-_qQ&t8S z(_>G{4!1}{IlsoOrEWvGY)k9HjgEcuEqaQ)*MW-=?Dw|Xl`uuDJ8@_8JStjaYYZC| zqjw66-c>`P4GxVs2%%7cxS(-B624=l_WIJRR0)9FG!aT|cUBi4 z-3W4bGkMvJ)bW9gkx50|9ep^s=5ES0;z|$*(`u6-QAp({zBG1s-Z~l$$ z4@K02J?ebqiuupYD>ZhoS1<)D!1;4Cueae0C>?jRl?&EonNmJ1HL> ziuq1HDn{eit^EW9;oGo4#s6uAa45c+cU*T2ehJhA!!k1lc+fLdA#^0$1KI$;lENd6 zG}(A1aOwGgzex_ka*(CSKLEsrOu0Z>hEh_xQiL%wY6gxm+b90w(9UqXJMD^@Qv4fY z*GNq-a8TseY$_#Y%wQ%*>1Mjogj1CkIxsx^D1aSIx2;`XpToSAd)2n(Hg3c1HII`Y z-Gg~DyfU)PqKB1UjeGl}Ry5`2RAVj+PgJK_KkH?VR{qM_+QWU#tpj$aShd#Vf|1Y? zeUEke;|@84L>FGk@cD7yF*=X@)Y)XYs3wUFd2S<{jELW@~62mJ8tm5%@zm>GPE#pxO{9b(aUHN4)Qulk%%~$`Cjxu zxin?jY_v4-A=L*o`9BjmKf}r9sp< zX0MfbgUELrIfy8eg{aq+Id!b(!oBME9yo3M#13fTDia6XMJg4r3z2q~(&SAIXXPt6 zg%X$qaAM?Tvg~=p4TjOu_5@Ux;>olwB z4`YxpeLZBGB<04!2ltMNKcwa&_i>@@`8MANR34A(>Zo+H{;asT`FeKMzUhS2kJ2+8 zRyhizd-qDVzpADVAhhdH0CeOQ3&}tF*Ck|NB^o9YgzKq|7 zs6ffB%4z2Ij-{C zsf54$BsRJfr2X=m0!Z+QEM7452*!h!SAanSdEX`jsKC9CPG;Gs`Xm;|Xigk{fjzVu zJXG3XBDXg+IwV6_O-1*`)~s?PgN`%dhaSF`{4KTXwje?hXEU8ASC|JLhE$niSnv zlds8wf$H(h48bq|0**Hr?9>gZDg)D)=_D2n{6fIv?B>t6_p`jiV8P*6c&S&+y-y-# z!JCSAPo(1>{eeurj;teN2t-_1DAa5b(iUJkKoZ{#)DN#1xM}gzJ=k%8kIv|G{ItVc zHNjO(b_EJqk=kie^0|@&Aq>@?7-HuMBtYhos1_$U%C@B@6wP#ey4Avqp`iz-_V#%{ zSkmtVwVRaxu_u*DZjZZgwN2_t_Dd^dAO!sH`>9GC`&cVhoa*F6cdu_&Awy8MdRP7T z9%n*#fZ*jzo6Cz9B(wFkXE4!C1%}||=p??J#uqBCpAbO?9GCveE>QDnrZZ(&_?F^C z83&Y^@tSD~^g6%hc>c#PAWy7p>dg>wx05c-#N?Npub;RE3MD7msvsyKbwmt=6vsOf z(ofap?8(^Q zJHS@0jELTjt!jdTxi6TeoD)EgCrF)~RhQQY_c;zt`2KCf)~bbQ`x9WA1z|*%h4)vS!On z+oufd1|6OO*>-5Fd*4A-UZWB6^c*+P4TC+oroA-&6Y2fbc~84p;WclntI2*?z+BX^ z*afi|zhtjyq$+X~9`~%pbC|-aIe=qq2p+2T7i$WGvx*k1+`^7{Q(`};2;IbUxY(F4 zqDkYJh=qs~3$r?dQ@cg}^9i&h3L*zLD&b?Jq(JliGU3=E_=YgM99YuZReD+{_Mmq$ zA*)h2f0Q*piphy}-69OAkYPOO_>NVs5GgXox9Dd2P8~jnbj>M;PsNO8zI(UGFoH-= ztS)mXBbQ`SxNZsU1t{3@yV|nuu{n?>$9V6(;!?gxmWoA^&ng-6e+Qc?oXIwr17xV? zBYO!*;M_JTc3s?u1WVdY2rRoU_3g~5I8a0Kc1QD>VjcC;o~y(2^GGDjyWs|wBTa??SoamojN^c{NKiI|ZyHG8&wfyzT34@QICBD>9Xp)!=&Gg?|n_st} zZ3{WK_EWBysATSgC-!9i^=JgGDhZRB>Ec|$j+l_#pv0nLh;E@)2oahFGPk8`A&#fD zst3w)J6z&e=)U*q^3n2~)xH^7x7`=5GmS%RH;#AEl;En|Q!b5#9|*!Nl#g#lC$x33 z-%;gfZIO9LA23-&v*lZz68;&5X^mgJ7jlUV6NFEKRc+j@=Glu!k;4Do%{~g49RZt# zqAK~V)MS`QGqYk*>T8#a>{TD4pJ0v2j* z1P7}KB_^3<@uJL4yMOzFGJ8R@e?PjF!X@ppGc?r2t46Yt!aj=rFu#OsI%~(cZ+d;W zS<9(3+0$gcuU0?gfQtGe=LUm0caHK5{H4Ll2Oa)K-~9{wFiP>AMBTSOzn8?WiVUJ~ z5;0zR21-Wyq$g>+rDKaB!B*wTl>IypSBMuxtWiHs^T!ZLc&nald?OvJHZ4qv69P`M zEr^HqD3$p@#-+%Ub8>p+!6yU88iR-f7nJZQw-d)V!Y+Yl0N52xIN`VdV3-@%_Q6lo zbL)oah#%YSG^#?VglMB0;5Dd^G%{L*c^zQ#**PZNhS|bJpEi3shQG3XNopSu|hj9d^ zL?W0}g&o%2^ zW^2;5SYm3+f)m>>x#kLI+PNj! z8K*33M+=2q<+w|dSXziS0!i_vjGZM`7qgv(!5Lp*Nj}(X6ya#u%fTgSvBcb2%sh88FPBkJ*1<=g z6FYzzsq`dt@`cbXr7(#g%h(6NPcl*hP}nq0*BGCyHeIEi>oaI&g^fD{d1M;EPya$@ zU?vf4O82VJgPJ-e!u8<)cl?4Y!N}&JX*9#|F=wG5VWl#(L)6= zw^geHoHyxgm_d%VyikRJEja7ARQiO>hxct z*s&+3!trv1cISOROFk1)sC8;|ZQhxj>7LsiNRzOrMkFp+>9rE`YP1l%IsK~z0CwEp zLZO^LuZwDJNSO=QomkJN;L|s#w}?F#2vgPtxz7?48xZs9tWR<=KIa0iIX0Z4%9YgW zt|JnET#5f6S(_3_;Oh0-4r?PuePb5W};KZD~coCb(WVo`>kreeI?)(8w-g|`td(q-f!X^PY?Y%!|iNz*&fO4`p>A+70{nb1 z-8Y;uU4{w`W(MmT8H9uGcO^V!l}7l zUe*JF;!~Og#SFPw9N;By1pKy%KSlo?IccJeX(=>zyF8#{pbFHcHKvZ}^Pe6v^rG9h zsGLW|=@AOo?TYhZo#AD`-E^3ZUS?M_b`vAJ1^Dh*Q`O zpSkR4$0-={ZZC$W5ZeuOa^2Rvv2R9bvO5my`H|(*v&wS%RgkSHgw|4BYr^wHxKUqF zqdsaL2$gdv;wV!#<( zK4(~I&W}Ncg^K!f+{c|TNlD5W?oxCZ^r)Y&GEjV=+H-^u`zm`Nx!XQ7MGb{Qm z;Qlpc1zd;1Bf3n1G4XN9T7u@-#KcWqZ#*Ac4H%gFUj~W8h$M|X5>x^nwmw9Fg2X9G zez*L~OyE|fqQUY_XD~tXp{I99wL^Rl3#l0211kx;H`K$B%j$^~LlGg=1r*Oa=-7Y>SBkD~%tq zCbvNx`>HiN?1$Y8?ofwRs1iD>kz5>!W?(~Gfc#5^wwdvtHpKJ*Aqf=>(BZ_W-SZ&q zE%Hv*uJa2^66Vp0aTuWzm^kep$qrR9bdN+w`xC8ZC*lr-&ThZWYK0Jvfr9fBj9xV5 zwq)YOaGcyA=xWnS=g+YAMx z+X=aq@do*B6-scFK0^I1zR#fHiK+#QX(v`p@a~}vGTcP#QN35ZV+6s)DJ}JxK3Qlh zOZdzaSp|fjPftv~j5EJUp2$R_=9YSn_VW%iBcF)+@a0iOR)aBG?6n~AZHkg&JvK0J zbD=khi~mcWmB{vEndjA&FNfPrCnD}v@tQ=yqDV)66YmR0!%e3B8?2Gx0EY23jgH7Q z@0+Abf$^kU4fht_h0Kg$C032iXnDgOV+GO?)*i7Va$b#69sSPqwM&@WAp=Tx0-G}L zV}6{<%+2SQ-TY(TKf(U|g=s;~`$VGCjYYpbDB?Nwaw*$f4_z5FJWIt|=O?&}gPAmT z$)=BKGFYQQpmd1lCpovH9#}~b_ANg(M3Qp^uA8kv(0CcEhJeaiD)VlTfmhIBG)G{2 zW_H;8M4c}&#t$ih1lJX|F7zKyXkQ;}{US*&fi47W^gG629|#WPmoQOjuU-l~1xVmb z9R5q;?*GTkvS4??J+B|jjBqx9SsFqA?86)&qO>}cwNbI55S|0r49n&Ib0)%%s1-|2 zgn2aB^`QbHlCXsJ9=dnH2n(^@ZxrmL_r<~ig;V^f%m=jRtp}D#)s9kPEKE8s0_1BG zf~sGC=UdV9k?4Z=mv96u($6)1uRyZ@A(_2M65SD2-RYv)D06cT!+<$(bv^ee76=dP z(jdvW_I3X#;@O+St5j721%?f_xTYKkWB$=j0#X6oCAIOpRS0XS-*hn_E@&CuO#U)-SdLXdX4P zBs7%yzAro6)mYS&bM~1o)g)nlX90S!t^V7EtV)3FHE2E`e(x}18mqv(hheGvfN0|5 zH8felelwU*cX1Dvx0~T(I?O{o+3AT_%29je5;%5YzBr@UMk6h1E<$_YM(7(#5$0*Rl3IElP6Mz$H}JqlrvnQg0MV*l9w&+%83VSAs7lYWRM( z_xqs5V;~l+l(Uajfz^5Zn)7}e8BmXVM9*Nh-4mlD*5|Iu$c!RM%-l+G;fb%y?!NMN z7%<@UMaPKqtzKNVr*=Y0vwd6NX@|bzl-Vhf8P9NnF6JkwAo|_H6gF(>s6i+vP&%`# z2$Ghc`v~A98eKra6pc8d49Y+E!H3H~Ut{O8nQGS%BXjV)DF%Iq@_NseLDcc1)1X)L zJg~y&%wk57PW{Gv@*Mt(aL)?B;F+kqsOfG2RJOA$&^0NL&+%o7Pyn+vIHInwM(lK1 zYX4f8`|nY%5f03*{XQB()y5V*3%JxQE%r=|wu*xg-h$l|Ub(cr<3cAzw0K+s^1>OG zn;~=wS(;y;duy$^HR~+h*Ki6@V%p(hHR~-Ncmp&L^-9d-9z-FBtvOLl(GsaOZ{b>Q zz5;eNExxvjGi6jqN<=av$V50Bw!_&jN9noraqZ!h0)7xI0;2-~YCMI!k;LH$?D{&1 zlZfjn_OtNkV!2je$7`97*hV)7p9o%bx;(}CG}%gyVGWY8HalrB-&2bt3CSqR!hh%L z0p`BMu2KRzrD~+0fJJr80Zb&Xg;z(KEKhq%aOvEGa9VV*On%Ooiv%o zi&+V#oDELme@vU9xSJE&UVy?1NS2D@(yxk1cCk>_Vt!8@8Ap!_UvonY04^6$WjTe~ zBJw+!R)^fxK(W4PS1DF1iSV6)l73Y~bUd0fXM(|WyG3(TEsndN`$Jl`_9_@#@%tC*F`8)T0$Ah5@_AarAUnd@tvf71`R^ zSJbRFX%~|H&z-e_S>V~0jM%%={`Dx|Gpzu2e|5jnefi_-KP`F&A=oJrtfcHIkh&(^ zC)zxCgDjy2Msp}Haw2D>Z-g4V#)g~zFm@3zZ%-9rBu~eC5<}^u6@nFvMh<1?f=SGfRxguPOA#k2IWW8Wfy0boac8kRJ7OzjF?B*dK$A!!DF1K`j9jc8d`g zB{KQ~7);T7GRPLT-(wI9GXl3VF2B_Buweq9US`Ct4N*TQLZSixz|it;ZL-|s{l$^M z;9f4hN_Nf@jJIinoxVAvAtdYWHPmV=9|rbG2xzSj9v``uzGRfM`rU^>v_#8k2`#;` zd}l5pK2OGW99p#VMdLAOAW0RUsiBAG#?7PK^R8xe$VXssyIp1Akf!vxz-shYnKR~} zf*m$9RDILpnZcnu!cf;hbx8jjWs;4wZ2!*+NeN-965?-qDA#QRqc#&Wyc5z$Rb$43yQhRDdd=%(-p8`l&L!-EAw_ID0K?SNo9YPykaHytu`0cck! ztcY&xtg!5OX|*;R4t!T#bjCEco$UAVD>O{DwPXi|KaFp6aGUR=5c6)nIQ zgH#VxM(b{Cv;^!kRrx!f0bNG*#e;zYX-1!U$-g}y(~4cK0no*ox1;a|Oz@r<)T=Br z7tyXi;kAYcQoO$scJxsu=$*7Cz~g*$BlhB~G|{dfJgIeeH-V8mu30Wk&#v* z#$U4oFVM6DpM#1^^UlIbIqFX{GHH?1K;&}|`iZ`aA=1A4F`iC*Csh+rhj!{44B=Ul zc!@gU(x}>=DW%v1bDLefXhH#cgVlI?gT8R;a@SrMCPnlg!iE?Ibg{q~jYKd(gH9%4 zVLXRQnDr*-6B-%hpSwRsAH<*UYIO%;FgyXI0C$t(Mvg!^g`%RcVIk+fHvLK$*Rrt> zjtLcK^7%QPimPo@w;!UpXyed_RQq;L=F}9kiQuN%jtqVaca7U+ z`EE6f_tDI1EaAZogCQU2oyraBOqIw)t`pj6Kg;K9GYk3W!=fJ&-pws|KJDzScT_lJc;wq&X{}YHmj#Vkchf}(AD~NPodfao8YwToc z#jH8YOs+?+!wlA@ttl&%AN$QcNYSPomB0sc2kU?0HH>A!ngU3^IGGKkGcD8(Jz-8x z=VvvIr(l#Is${qbR{@PQCs=wO21r>5|MdS;K41_Id`r({+buB`J)^-GdQkC8TA!8u zUi|d`kx(IHXlDzxxU$4X9n#j1TBRr($w3A3%jIQjmQoQU=k@rLN;mvs;Xe%z8U>B( zay1H6+de@~dwWXTJXWud?s2H7gC^4C%IzLP>H3pmMaO*y`G!`pr0V*VlDc2d>~q+X zOc#?h=P7d~ch}P9^zy6qRR2CYh6*uoGPl8nS-uvu0%NFHEoHl{~*e zPGd_2#(I$6@lvD7hAj*&@G$s(iI_hB zBvK}yV!#Z*gd|xzLfzLA$VGZt8Zc!s{CnPBV5i@-F78$`F)JGzu#@d+4Bb0HJAUC^ zS2lbC%`{#;SA%+G`d} zyjPjCZ>KHyImi6l>P^*h1Z{ek0WW;I&JAQ2Yw z5hK;0hN8j49AdmlB`E~e=1_ug-(1o!H-7{fuskao8=OIe?FnLO=Q>OOB+SaWFHIic z55W1Vl%_IoRh+>o5y2kHTJz6~oYC={4!T&OoW3!sJZrK! zOO8pguA=O)->xGtF(ky|pgntigAf{|%kh1v(_XLLemR5@-HZ1=Y_+-(=V5X# z6gq$QnHMFPT+2=zwclDw|E5+Tu_U&}RYF4oE#8C(z%1*xx!kRdaSdJ4QAjxU?1jZb zw_aaOjLXjZb^d8SFy4hNwUONo`LY^q&pSCst|(17ExpiFI^f_sY9)}yS^1djE76iymI2r1v%t`2xo{o5eAcCV zP))>kpc7HUZqz|u1u}o|DzgaM?UJdyxy}Jw!QFK&(dD(^^=O#C4kI=Aa2MGrg-s}L z!YA+u=lR3L3+M>B^qLWlcAR@{#NyMeT)@jv!92WSx%cYFJZD`9M?5=b8aER-QWFnc zVWL2cy5V5pW)Gm9{y9xyFcf7Ueb$5_vSLg$>9WU6HcWM4<=A~C)o`1=nX=O`3@Buu z$yPs(+c&!-q|>KekhR=x8Y5lG>fy!?zOD;^ciGj}z*^F+W23YA!D^HrQB>P~SFBs9c>_fu?H?r&u+ zCNgi_jJpxVGVCos7^a(B^}>ewh6fwvJ5{GQx2rnYyYVtVT&g=S6@y=weY1=-vq`Pu z#}FK8qGtOs$Ky_Hpeu*DiFi<;nG&$uM7g;c_jr zbAOEFb*}>dADsY(N<&jXJAiEZd+UMPwdHt{>=hoKyA-`9# zX9&-w9b?eoGxO5EJ71m_#XPozh!;HCvo5o=Q-Fso^Lii0%~G?Ga)yRi=>lN62Ez}M z2^B7v+fAX^wOu#3ePXdYN8XD^OFp?(h%St8&Uy~ngsOYL4Uwx`Y1j>-;_FfvNX&Jx z{vI}?LQ>DW$AH$kN$s=ix|t!$@m%E!xL=SPQ1~!=v$|vI{RmsG7;0nc z*tk5q@&dnrNFZ(C6J!&+w=ua+%F;bkCy~JYDDr1I#O1KRBgldu{N@?irV&kAaEJmKaGIQ8 zbxuDk^g_(9(ZD?bpQU1W$tuEa^y478U3z~A!TA0qgC?b$L#$+!q91}(f3T8M>Un;* zN+KVL!J{umcnKje_LM}`5u?`m*ZQS3e?KsCDKfy##1;e>1X{9bND*@I*)9ai@rPQ6 z&vmSD)Sl=!iU?u?c$*c6vgxQ+l~;vl(6DtYJBLjhSLbJODgiLBy!|U&-JwsJYr(vq4xG?SBL|acC~HBs{FEO8?42;N%y=ShI$DjA<^?p}3 z$42iEo4zM`p0bj1VpXLORK3&%H^W=Zo4rxry$afv%alN~~tunRu zmW9)|S{eEHD$-yKKbLEL-u9BnU?q-kyZrq~6Bk00^B8!`7H*N@wv2~r&uJNLpXZ#z zVt$Wz@44SsaxSp8Us69e2{uhLVzeCwWzQHs^bBf~IpH?5#XomKL^2}8^Dxtv(+Q+~ zVUi-iI=lPvFiV$jCLjh}0qWq3<)EkI4S^1TQ*tnVdFb$bDpT%)A;(_NpMzdH?6dShX?8L9tk6-+VV z1R28a8fwn!=_mHSPY1osrO4GyH_aNn!>oK*O=ZR5^2G&R12Tu3_sUpMpZC#tw2m88 z$PUT@A6(sc6OuVsvKVI>M)du#=uv?}3!mnq|NDFfD?c=Ew z-k*>J4cPncCt|cfsy@5V%G|lOm$w$PlQWORF0XIYE^>Q3x1D<=YhNd@m;w)(t^%KL z1|GC(5VdZiTP9VW_Iso@FNIYG>W%!)fH{9%R@*9{lfjo;E4RC3pWf?jeNU6)&K=Lx zJpYt`V_9P6b@LAPj-Ar2_|lHUlJ5>DoJg3#lw~BpXWnPH9`A{b8gvf)@B7n<-vKPm zk+~Vh=5!J`pDsKs_0t{2sx2pqy?u3uuDMuN0l{q9`srAwl?mY3KXNCP%pV*~P%auM zonQ46f+dfqEvmN7)6`|kqmX`RUN{N`jl9{h(>~SS8a!j6W{9J?7Iz?i1#L1K0c$3b z8xYD2b~Qa$ra?nazl?1JvE|GY`h|aoxqi%47Bb0+*GZTqa9!ek1SfVzE!AD;ML|<$ z_5Osz|FogjVpG0|$YIF6_pS=As+@2IX(qwnr9zt8D|fklynWwF2Ev)9LS-8dn* zT^50cH`6Ss`|k8HVgRM>Op9Qm_bQC@sihLD;I5WRXsf{u!C?$3=h(mY5>H~J4IYPp z&27DzZbGlg!FH^V&slM`kI!tu)#fJp!u{=1-^E{sR^whOm3V&`4ra>hyZn?23@pyW zY#0{6ivoHZw;%nC65lmC$eoXv6j7vLD7P56Kym?TZlgdBoQW)q*b;i*GK5I_&xt5a zyjSBvu6-xLRbd9R`G`iv1&pBHnI7Pe!4dZtmS5pymF zU3wpas&7+`NUMjJvn^UdJ{!S{yUR^#6Ez2gXXHWotLKZQHhObc~K| z+qOG)$F`jnvt!$~akKAt_WlcN&NbhvF`gRbc&&ZC5@O6Jn+2mkB%E_uX7WsI zH%j5WoInq`#IJ;UOec_0Rm*7Q4Z*na6oIpy=w>TI89+a%Jye$ahltjjAB4(SGgGt3 zIXf}~T{DJ)mpX>i8KyFvxHVwA66du}0k1)yPn0Th009idD(r9vD7_85Up`WyVgi@> z4Ns1&i`q&AY{5Ayi;R43S$k^{LC}$hNA6-0;l|@1Am7WjaPlaOO0%gQyzelL3I_-R z8P>c^S_VmH)+Vi}{mEW=oY~~GEtWX>IFghJ8`;5YCm4{+tt_ZmG?VrjJLp%1hyHmV zTP%O->M0%f6XYF4@G(~z*HJWN#ki33$zeEqZUDc#O#{{f-tZo2^`id1|`rg;? z`p|#&5hoTrW_-PxiF?Qj7w}(w4UbpR!chEQQG{g-mQtv8`fOeKdU97aS0QJ+Ezw}x zZKIF->N9$q;weuF@vtw4T51J{1gJ;;sVEk7)$*Z84(L3Nz=ZoOIL~u}tBt1r*39nB zI^??Nlpd2@?Zv#J(~C;x3&dIRq>aY+E7i)5Mzk2IcE>b01oGt8w@YxRr&ng#cjPQK z&j`K)m}b1hECmWrH#&;WQiGkp@#u2dOGu+bA^lx#Q9cw64*OMPLTb%&=PHOo8tF=;Bf zb6HNxu46Ml%P2ezzR-=IBEp@;f9uOSTJ;+jbdcq80d;9RxKpot_N|aR4Ib(pdUs{M=&i z&cW|e*dD?u721xm9ZnFMou9p?Tk+_dDITZLVSOHR0G?{E*?3G2M6CzED&~Mfa0542 zid`;#bb`38j|lWn;jf8K-g{?Obq4C^nI_)s@B7K~-Z#ex`##UplytLig}UgWaMog^ zo#&O5j%-wWmJf(5k7Y6kF&_3$)a*)U+U~$DG!`vMTW-B;y^>DFXGtn>FIQ10+i(@0 zX5F;HD^~+VDq-DyZawz;E`#4k85FE4MIAa22u5hv6HY9*Fcv_96vstmFOv6E!;_V{ z!9sU8w#jza$N-W=nx}{bZ)y6G?h5%UdB(Eex}EiAi*BuRSlD{q&tc}L6AhbOFP&$Z z;K=sB%Y!2~9OcZN*+ujYW}TSXc@h5fJkl?nuKvM$`YO~I?PXBlz}M4ZZZ#iX_BPwF zW6tLEL2mu9)$GvZ2v3=MBy@KBtaY~bQ}rCPG`r%6!=xfhf=OrenCH}071&7rZhjK? z*K{p8nRNLHb&kY0De)lGH{Y|FJ9gNLdg>B<((=#NdZrbfLCAT9DtdsiwfZa+%(f)8 z``+ItLhhbY%VScgp)($iygFJ8z2~jMCtSGJsa39`p^01%*jqrFWJ-DvVfjJuuz`eA@3eG)PkQ2m6Eh&k?~b z_lH8>b#ia!f-}Ccj&Sp2i{hmDH`9r6l>`pX~EA!_mT3V~i`aR2Nf6CA1 zL)7#>s2gt^5dG|OCN{rd`Gd-IcQXeJUe`1ekqAz@6yVx<}{AJoTyu70a>*n$!PrHjfeg(BqjKj z^5G;ey(k=wTD3%I3X%g;csqG}_h1VPo)+D#xl+<_Rz&|&r>Fb=p%3S1p_BEZcu z0UA3YlyyUQtK%rz6#=XkS5F2+dqnJcwdk#_YhiOqD&t%7?tyW~((+uE{%~|G;#ujM z?V%l|T8Q>iwMNh9a{nV|=N-(A+wNFre*KW}uSXR&C@f->>s02f_6c0XFCNb!zGp|U zCvLWV^XVH-ESWt5=MJ$qTu|aEBGC6&#T;_y4hDVuZ`WGO{fY95sA7KHU)tYGYHWBr z%yFpF*j4H|RcG?;4r1kZsa9vWae#}M#^%+FzajpVIA1o|-JeBrlmphh5N&u{v~5DG z@B1~^=IOjX^d}we3X@|-A)BA7K$S4;n+f{EajwmuhTnqtEWs)z6H{%YoRUpS`TQeJ z!0{(NDY~>lcypS+2FJoh15ybmyI{VKf}o=Qgs!UoI@4rp9}S=-CO~G^)u&dA(~`R4 zqVti(UK683y(7qq0L|$z_ImU%{Zo#3|L(K9A*(~6O(!^fWOcEkyZ9X~Hi^5PPejg4 zdvA??oE+i5FEP*Smpsa@%fpQWMd`kIoAR^I`)#NhqG2Q^z)rlf!>SkjdlL3de_3S3GSUKBI1ZzaJLTBYHrv>-(wN z|Kqy1=LNMZl`i{p5x3UkK(JRmJ+J$7>f1Eq`~I^tMFu?1JZ&<212Z{3m$dIk#B%_n zAO>l7lW5PzfAgzHvrl4K(@HI@UTr&-UW9&Ibj}cpO+sl+v`u-z9&vv3Ofk;uS*)$O zq*FU@y2{NOpN@wCPl$vMSMLlVs|%;4t(948l~<{Uq(9l-F03m4cNTBCLe#YW_v! zoAsy13^&i<{PA{ z7nZp!HdYw(K}ivlT=F`8(U8KKtx zBgXu<0s02D;#Rf~BF2DY`2`RjeR6N_Tq?J7&K)MKh5)T#aAbmVLQUC{d$(f>5^AKPTo@j?bi9lN;brP(7M(-Z_s) z^Q3WCTzkCjZ6`3T(`uJKVfBZXymj(Xcr~uzlzAti1oKzmH15Wa6Zbm+z0I+ z>hR;Bi?v_ysqMPz)Y{A%f91qW|#j%uuFCynWCudEDFRN?vO5D5OxGSY4p9nW{%Ia z3K6Yxzc#5Flx;0lW+^smDV_+e<=-nSr7SksDfy3&aU3}U6hw34)D4NwvaLKGRvwXR zOUvLL%3Av!!)|@i67@}BsHE>Am;OhMmAa1iRn_wROEGrT0O_xNEpR>eNJ$`;(Sz+S zW6vFyzC<@j3p8|`$Mqgt-9+`R*!wBWG)YYBcRY=I3&U_R zacjSt)^4G9TJY?TS%4up^#8vt|G7>-vTHOId+SM8LzOPuy8lQwODC1UeM&7X>%S$B zJERH(77}N7jEUurjdGYN7D@Uo1vz#{rwc*j{ZIybN(r!@#OAi%{JPQf=$t(*8Y86y ziOPUZ7F}lp#2KW1fU4%wy7MmIl!^i31dJZz*Td$PH3sKFM2GxfYm?>v=gLHUNnhM< zII1c~d`Ayj&Ef5o73Dz`awpa^2t``Ha|AYVH`V}R&5AtvATQtjd!`0@f}Z-U9a^gdku$PaVTsXA%Cm$H_zOOB_Is8+3q72(dxe_quJ3V^k>Xenzi0 zvKloT;bc{bEK}O&4RJij7jD|A^_mkA0^1M2N~*}}2Ol&I%0MQ~_Ikudgj8~Ev?f?O z>0mWmYC*2T2$5>D_WNw*q%|k}JY@9u`u>a$qavn17ovqXY+$?2X7cJ+n_mbsB6aoc z9lvF8Oy(KvcpbVW9=It27mU-<=E=b2>k7c5OWg?_@o?VaZ_Fe}8}%EI+fVJu`%BH` zXThq`$dTw->BISK5Pohi{Vh-$Y1K<)my4+&vrneeC^_H<&|f4 z2=^>Cy+D&0=C!v&f)c1F#QvJFsK!J0-^^lvIs5}lv z)T^SM(i=cS4ErKL#7TvqXY;wPjFP7)Ioh+A1Whpwov9nd#>=pIE5QXK07is5Y>weS za1er1#akIqoA<6CpT>;eaV{`Z%8Tf_ROes)Y!tqJ>s^a?39d`yNBJc11HuYZQ30Et)ylzhz)@IR|0=mO5 z6jfG_UCDm~nVmu`sWmHFjmJ)^7p~gROIO_`-|kQyAQ^lY6e8l@Npqqg6DNlvH9S>b zJc0O%=_S}IaPF#%Djx(j`&D5h1{2ZNUKKmY--aAK_6#bY6pcj{)u$B+gZ`@J6?FVo z|Fo=Z7VUc;$K^SPUxG2_Xqp5`h)p}oaS{ROddd* zvMXiz758yX){Wk+BE9xc0t&`b7ob7pd6kojg>R7-J_<%Bb`NR}#}8c62#6+}UR0j2 z1xNwU&x&sF_T;^eTc-B--#dz&0$(RJn2^$Q%V}>Pd#BH6$~VUvnO zsK7l6n2KzkI{#B_BH#m?oK0i8sjW8@iW!O(t8wqx)6Z)L9V?yGZGMwAVQiCRDtU}l zI(BELSW0`b!2<0#?ifV>1o*`uDB)sx=1r_^zm&>W+3&w7Yq&6X4x8;6NWm`7wcXTX z&vHEm`8JcU?N&Fp#r-j5{5b!30*b>DJ$I-!RV+2}^}UhOPnxJ~SflrXRbVe+S7-CP zo7waqVfInZV5j*CEn{sna+q$&cIpbc7d;A)kON#FPqUphz~>_Lpc22w(x6r`oCv?1BT|ZGm4G9H1Yi)$cjQ8>4Cu>J0Nr+8K6Di=e{H>$Ocm zl?5#(Ci8V z>E(eybVhGOCVyArCHd8_4f+Y~^j7wNJhj%_HSI>+TE&WQr^qaUv?Pu0hME_=_!r|$ z_R$d(hminSlSc5P~3MFd)J;{zklV zxBCgEO8RiX!A2kTnB2iqf+&$F&^bv@ijt^ zb057BY)(Q6{wXHbla{iliqzHgi<<0`cZk>-N6d<4gm846_HkxF40aF0}0a{8PlkwKX9KWC?TX`0JUq zi$F&>00cIoNUh%i=!SJ+)!WH2K2jWv<%oNAv-jX^-QI@OgvrJtnR5HZFQ%XsYKB|h z0OhMt*Vj2~A6m-R_ADTQn&k$Omy{HY8wu^9VS2ckDTp_yD>DT4M_5Vhre$KSC$-~P z5$feM_SI7%C=F`eJ1{zqw@z7+kw?ch+E7X$4$H5k3?VNW3kQ3jMm5Tg^d{sml9UKJ zaJr!9ryIE-uZM}+WP5J-e&5@7RlnnXRq1X1q=ZW|V;30SNEP9j`;T6&ePe}tF??<` z4@(s`;&dYs{x=iWk*0!Nq9q?(B{QLiO|xS1+AG#=1fNnw4>uQE15DzB0Bd>6!}x#y z(;cV~;XaQVv<df+(rANo{pL_EIg`FojAC?0Hbp-Y`r1iw2d0dFGqtmEElL-0Y#o zPX8C$rvb+Uh4d=T4l_I-^>b*exwPNf-9|T*mRC>e;-__yXV?QLYpV~E3vHz?O3CP5LIfE4%m2zK#rH~Neezi(?nQFl$J6z0VgiV#@tmpr<{>%v6JC|`~ zB;0#p74f(O@EtyIB(vaOpNG2-!}!)H*ngsj0UKQVXsKf-_ddN`U8F@bQsNDXzLa{| zrorU=Py&l0XYxK32{-{v__tdhgleX?ed}7Wg0Y?k#!CN=7SRUJyZ%w^0Wms^&}nTL zU1R^VP)9VCMSi39kcuFWm>d-XUxu01a=5D@S8D}`V-freEaPz`l4*TzL~p?_K^c3{ z;VmU!ooi;vztsx$5@zLNandJCs89R#bR0ys^-=kj{H2DD!aB$SC`h|gdUo~uxv`+cpF(UL*uio$Arn^E8@HCRaFHP0WRwCW~rAzRtI8SJ_U4U2Qt;A z^fN!EHD-q$}yS|84@I^poHRvj&! z;IzVK<-HJxL#3jHGt#QR$!eG`WUQ)1q~?QDxp z!Nz64l>zDOZo>U({`v7&o=FYj#;(uyN-RYw>4u{wy??ca|N7%Yxb3SgJkjBr(59g% zR^qyRP)u0v-45nHPyV-B0u}@_fU8K$DK^_sP+NzV0ZeB163W%fa9SiE#|f`QS=35L z>8jqtzyB-bu$(Y2hoZwNB2%>DiBZw!VdTz!-Bc2q+T4!hZ|TzKQC(7 zGG@w!UKCH20n)-VltMyV&ykqbiOF~2!AqmpcGJ;$x|H|SKcUMerZcM5fw3DrUuw_u z_PSmFkFoE9tzqfy7{-AU*St{FWX}rZvMqft-22<2{KF+ z9~KG4c?3ADR9Nn_1pa>O=#z7_S)!kuNslg`-C-{>90aRn22V2krW}@6-22mX2v5Ba zXaEFd?&=_fM57@{$uu&j7!r_b5_1{(H~mf3w*PVQyWe(R9mIx+ZjDT4Z?>XY@m-cu zjaOG9krt3gSF<^Q$$(O zdrD_VL^pmT^=j;Ug7io3B4oh9W-%GybfcSm`H~5vLuGI_Jyg^1t_ zW9JSKE0rOGz|Ct(yIXZM7Qxk~9>FH4xLtH+M)Ax1IV&8JwL`)8s9r=-^n~#K-Tf7| z&Zxwf{bUh%OytL8eEdFrsPOt*!E=6%S^i)hBI`J}d{mc4Tq za}+MW*ZYwBncM#P5sCuDBS<(RN+^Y82keibhyfb{JyV<(V{mNBWvm0ZcdWH?fFagk zUmYDV1r!-|XI#WFhCYAi12MBZ8U?hCK*z^Puic3yU4i!F@CZW%RcS8Pm7hN~vo-d_ za7jxB7eZ=NufvZ0cg1?N3ZlI~24u4@Jy&0^$5hz|%3XcJ&U*1yhH$SqlRx6AF~N2c zN8%gWJpefZIIt^=VVKrLyfojPCaHchaue&z#(rWkzR+h4$aM}et&Z^k0kS!ujK&ki z+I2UIIFEk+(0w+%_aP*lTO#z%C3;c`S?>pYF}7bCE2x{OoWo7ioNK+6HS*N6i6Z_v zd1^P|SC{`ICJj(X4OC(7oINX#{w_pf>8RY=8^7hC+S;AMD3A5Z$Td|az1$vDL@?|q z$orJuo)N1_kGqh?z9YwjQPnuqtHbF*G|=nYuDt;1<%m|Mi#q0VGo|L#+9v47yaw60 z&Fsx|omGfDO<uqk&SV9^`1 z3latwjCnr{qzGUmWy}6RBie`cQ4Wp8IzW(`_4O3`R!f3FKoRXdsgci_v1VutYzB}( zi4tv!&Dva8;aSt}`e2h3dfpYp0;w>D1kHDV#_7zS>$EYgX}ACXsD^!76_71}0f+);<_?h26B3lhTr;G|Z+=9C_ zG!Of)%eT-Dk4*gE>#c$btONiKyqM(Y{_QKvw2!c?y&m(5YJSF(p;U-|$EF+0?N~Fm z5(~zXOwtS`Z%2}ZhvJH^l|n+h1d}227CEYs%+2H2lbd2u{>QhvrGU?9C0m%gz3m$ysg1BET85M zJ@Himm}(t$IV|r2%JfvkT|?p_C0rG568h=f3QWh4-%Cu6>4iab5Wz8x0vbl&EJP^< zyb=hL(VzFomoS}d3HL9>?)y7Y{b}wM{tlMs?)UV0#L1gYJ$G$tVZM}I+C$PQ1~#!& z5qyqdBt!{f)9vCeyx(ImmGSsbwWhbDHg{|!P(KEKy=fK@Wq2;ywUvyZF9>95Y?Q4M z>M|@i@&(0*b-gRjX^)TxnGrh_J=?)NI6>9KUTAQ^#4@k!5m%-NAW&%}Y9Nh$ z^8fWeTp-LO2^CPf{eqi!L!Vi_+WRkVG4#Wonaae|bFhsrMw2$byCebYxR79IEWePh z#X)jn!bWMAljYD&o#36AHDdLsXElLa;g(u!Id;lfCY>E%U)O!4A^#S%}sJdm&d9oeN;E6f3MR_g|8>A z#rO`x^04;STwgwq@?MM~8BF_{{r-UuggeL22KvBauwakI4vH=g!0SfAL`D_l$!cgtMq#x|h~R_EkB;^9*i726a%c(g zd)y3Bf^9hGdXjTgzgCw^;1&d%K{H_n1ix5-;O} z)m6}^dtS@w$4jK=xVObom;2D`!@^xF57-lr$pZ`1m5&@8viP}Wu ztnhS>tr@dQ0WT^d5+69KK4Ugf@g^2Fh7NJDY)W5+pdF?;R4U;nAj?uYq+clm2@jcF z2Wa9z=U_W}>*d7b7O1L&P;r!-BOvOO+*WUA?nwe^CrG9Y$}XWDdH>8Bf)1#l-6gT7 z#964MGP2oLq1^l-i&{{Rv01htT^Exa|6HTB917I>AlMJuP7ERLbi=k*S9Jx|`+YC) zHGC%ft7B>uM9J>HDNIY_b(u(8U(EQ^d@KEk+7aoPEA`L5hOlbtEIF2=Ab%&pIN_)0 ztN{&npGvmghwwAO6vLIqex5p0o=mYrT4;^*?|2AE+VGG{Ya{}=0R1WwFzd-g3@am% z7D+6WraUO~V`J2Stq3__SHH4N2@Isq{>!4BM5tIz;=p3488lI}6L@Udqn6fWwg~CX!{lSwMkhHX%!bYP$3O<9z(J(Pr?&B&x$XgF$th z!CVf-#o_13!omgMVWwb!Q{Z!wh>36_jj|J0Ab;X?{HNyCb2S;30UljRRF2*ug_NKK zyrxV6L&!(D<+_5IexYe@xzN&u#dzJO*c66 z;NQMw@AC8eFZnqN2u)s{MmvaQ4MW{s3hGpjRyL(lo}2Ewjcj!X^T>p!uQ__ujs)<( zc;X_n6kMX0Z33f>UGYTj<;L zhFMBE`wHXl$%5s#E=pCHk^72cxFGbzwvH~`4^fIbKYKRYWUor{0-PD+S&m6{`>CTAm+b{kHMgJFh#FcP_ zCm7rnUpD5I<4|_ojB@5lIYmr96rc5%=ZG2n{mlLr*@YeZ>eWpSsozCuhm)(@dcKzz zu>Av&Ge$N}IG09|L<)M&AN9hPMo&&vl`R#O2*wi&*vlCI`f&eBYht;1MCeKgGAIe2 z&{Os!|Ls3)mtIzwLtm>Z()2;NwS=Hv7i7(bBOi zo}#GrG7Z+Ik&n4s8BbX2g^kDYQGI48Qpbwm&@!4d_cr?I>?=)rH4xK0g-%xu+Hzud z3<}7ho4VWfNj{Xhb^JdNyw63LNR7HFPN4vLijht?k*GeTJ7s(V36k>ScDY=dpIgxtfA%Ju6{^o`ujtR0HmuZD6I>UFbNBU6Z_NQ0t;f(u$E63Yj`d;% z%ij~v6{j)Lg&ziFBb2>$2_-ejgbYdf9y{BY3TJ1P-j36-T}g?=%-gk1c}I_luS{xR1+&7aHIPrS4= z+SVvQhk2ez6f&wzUnxE46=r*;Y&zhKUxP+=b@(smN4Mk2XyIq;i7R|Dt$Rume(*BJ z5YNx{s-VaqI~M4C?1bNFe_wL9(7 z1E-SN>>pm^n+_c#JCvVD6KmuCOyi7l$yuq!z2T>QX9$K=uUD*fSeYiVjDu`ToQttx zLWVpv%mFK+Yy0g})GSC=;S+qa(~UJqp>Yq-3@WL-vXXeUSZ@fzUVw~i^ox>DrX!;c z?M<)rM)}}`rKXposJ!mA4l48ojEu=iD6@gY-QJb9vM0F!I1=@sGq+|bp62#DK{OJu zuJfo-&tyx#T?r(k!qi~kB6|lTRU$9$X_X||TVW9OF#Dp8CT)%9I;Gq&sC2@&Zig#cY~Ya zZNZfgJ<~w!-u3ikl9oF|?^jE5FPQ?0U1TDCaS;#gM=#E?ckI7nn>(mstP-A6bmyB3 zn%Yl0^WnEkS4k;m=#t0`e&xQa@SUY$BFQ2rqc3b+&>~6;%pY|*A2SRw`oCXSdXNp;YuwUiNAUq0c4HQVI6T*$!|qxb zAxlr6&%f&4SbN72;Md6ZpgI7y{qioV5$IlDWC0h=PG=ps6$V%kecFJdYU5U3H7XOZ=ctr{g?nnlUm+d~#`idGbsC za|r1RHf9K>i6yTkLa)xI?I{tRhR3n`y zE8qDev(?}H=7oIVVnKKI3nO&TyyJ6+=xyhF3aFxi>$c}A+>m)UAACA``ze%zAg)=v zaeRX}d)OxzI{~VLvW$=4FtCA~7=+2H!EE8N>;m9QVnHD=(xKrtkRM!hG5zeMQW{N# z;&gYfB}fgo%%dSOP17PszgZ_?Ua;T--H|~8TjNwM>P3{ml?9-(!vP|4L(9*u>?)2-~Y_V}k z#zN9fhK5ybihnNbml+oIa!ojm7oaIDVtsTDkDw~@Rh42i^9L^jvvV80d(js3Q+}d0 zQo?L~BJo87j>T?^8E%7j`D55Ye!OIBfT#cegi$QyK-JK`2QSi8I4U6bh?O9heifq{ zkTc_2AT6Xe1xoFMQfE&Oy&0u>)3CB6W$84w7sSLep)9CS;q%}PK}+tDjV^i5Kb!S! za*w#i46!y(RX)L@tzAF2Du>(@NjVC~*8i>I(-Swf*+141umg-Nyp?xfA=uXOLpw=R zKSs=g+rd_|?3$=QT625nUg@HrP$Jc@d*lMtjWDp_U39d+72d9aVtK>C?hxcQVp6xQ zH>&f+P|ex6tK7d{)Lb&Z-baMZl@JeETSot8&<7!HF>c3TtTml8Gd53yWku*Z75zOk zahRoy#1GsHk7j^DbOxYQzM>Bn+mC(ytQyo;d3!D$jiWtCJt*SolG=A;2`?Ha{9bV- z?erx1xj7kpD~j9}^z$_iHp&m6cs0P_cCDvu8yXFv>QGx5uTD^b#UTiN6z-oFHoCkN zL1A?N1mE&p;?iBEGWJSF4E6e3`oeL+NA126C2dQ)_WZCAIzy`Aou$=Y$V+t2 zvIq~^2*Rj;P5ed(Z|%Y6(ajWX9CDc^3v{j$jxx7~dX=!_+dRqDvSKuDEQI+<>&PAk z>d=Em-aNY*5fOYRdfAU;;zz`r2#smO%`VpiNwWvER(Ga@5^YIfjam8|(` zsW@zX`oto-ota(Yl%^SIJWT#cfl8vQgF!Npl=0jyepFq;U*=u6?N9=%3HvTxb+&yp zJcn`bt<|Bdma0SEiw-ccXMtq3xj%WID!{-oF-tSCK%+lSvNTLv?bO>uiv!x%v zZ<5OQ==32-+X371vonsm)@1h`WF6+aXTi_H@Z5iouPv!etg4MasikWShd|d~#eOSu zOWb-zX9Gp^HxnGe@cIu)M5Nz`0P0{81R+k*`w+!&lfjCz?DJ1pXz!3QSw?lj}u!%cQmNyTWKM=XM z{BLjY)$XYGJ53X^gr>{bh5 z!`q6vmsZ%!IL-A;lV2a&2o|W@x$#VodV$e?VulyeX&nAwdFnra!;ET^viOrG#SvdL zfuX>}o3GHVf)J8O9lggQykGf&4^3t+cW>d>EYm8DW0^*}zKC=ci5Svts0~ajB&n7I z#>khcL+|cTDm)PoAlEK|(ZGLaIKT+%6yw+1apR(0`$a)0;rD1MFyg9rh+NylQicd_ zB;UacxW^)n;ubA-Z--DKN&)g|X?i2gxI3rmk#1I%1ENq0e%5b@bkhKccLab2fJLZ{ znMfO7!Iu9O`6$Q~wAusVW!EZJULbvlqEiVX3p1C33?#@@$@K#X7bk8tFr3OZs)-;; zPY{OImCm|>}Ys!EqFFQ z6>n|*1#hI#a;w6={Rhhh7jkZw0zhh@d2A7|n~*{A`cs%tU}h@*SN5U62AS1%;|3+i zNIYhep>{kNe$|Q-G66F{)hZ+YjnIL~C4>W@3DTsS6Cp>tGdXB^UHy3(+z=(mI~xNG@g)rxug&Pr#I#pcS=OhD_~pzX7051D zU$f@L@Zl(Dy}(F)u!9Rh;;y1)tqH&O0)UO9IoU>;+a4s+xgHUoRQn6wm6z#X8;YRF zMRV`KU*YOFAJN0&vW6Sx0S#pP)(5J)q&v%fXoG;kZ)3If1{s)EPwSZ zxl{gm*32_Eo)J^>X37EB&KsgLG>MNbjfigeA6rTN3ky~(uMP{k<=wVy@?(@@tfP5FSyA_(Fh~seuKBM%|4GGIYacU= zl}mVNPtlazg?_Aq3TX|$z?oo@wgASF`_dVHDbx_7a?@s&cQT|WV&S1kTnuOcb=|~FYiQaG z{zU9;_F)84C=l@QjiWC7N-<&Sbp}*6Kwf48)hNP!4`aYP;#I>ac1Ob0- z{&N>05*}2>s_AejbXASC^5!sll=>1ImR+9s$x?4t zH?rO-n5C*d=J2MVUH`=G>{;#sf$4gJe{mzB%~XBDm$1Ia)-L^i@!%-nmEE&TB4C2} zO8p@kfE7?>!J;tt|C@Hur%9SnLK2+xd>Gguy+`3|>>KIfPmB~$fzQ|(-p7k#H)Lmz zELN#P#0Rga0vm`%F6|ZxdbOfa8rA&s6QMiRZ*e$Hl9<{~g}7$i^w!}7o*aM~O8HLs zP{S1RKYzJLgV{~r${dl=2!$b=>+ortNaR(owuaik-EQ;9sH4;P+mD_E=v|{>uS(D3 zZrE#x6a#F^c6ba6>Wa=V(vzi%e6d~1KRbQ4h=|SkjVRn2FzH{(x{Vl=ky>@`K{rV$ zFQ6av<6+n1sLda30(sh+ZtKsID1(ln5Ta!oBf;@*A&xmUMw3v8dl0TPyb#=2;o64K zszmSD6rj3%JgkEw-=6ep^JzB8`u&VY20@S1oZNA>)v^UKdAx?ST~VN_@$AQYv{ZCyZ<{eCJ+ORgQR|`R6SLvtS%x+A~UcB7Mw5w zk$--rJ4oVJ5h$!ls9k$-%?<-HLS7PCeVGFxVCrOLWeL!YE=BXgNXt}0;R0=6W-ZFg z#&Y3-j9;-Wf9vTG$9YAm>pJ;0$hsA9BH2`=>v+kyu%qvFt~zE;Ke?~QLm3#J4pMN9 z%Y5>iD`w0jhOEtgLv5Sj6-7r?oh^48PQiS*+D5z%LwUK=3~lG6ZhbtX6LC2m<4Hem z%x|c!CV0Dp?K!FMD=O16{4x@k{d?vT>yGMv5@IL{314q}GB4a7BdQ$cr?JUA zSfnU^Z@Q^YvE{{$-^hBy#Yilo#4YgjK`v)aBWWh?zx_KN2od71KV%-(dZUp+xjS*F z#EH8Z`w>7_hJRVSARO@|Cp+U%fFl6+sv^n!9hEUTh~hZP{#SeIsZl%N!>d=w1qiB8 zL5rjg$Vp2Hs!a|G z(V}&o<;Ly-6V4$&dxj=w=aCC#5mtWV>)vE%e_k%qd2ALB(Wd_c4)G3!B%}lb zprs9llNGO+W;7$)B7RvFz&(u)x?!i{EJU{5s~vcpo>Ce`Q&SeJY<%~`2YmUC2Se(o zA+HBw;Z^w9Gs{SE$DEcr6K2kTeEtZFPjs)7BagTdk9Nn=GKzu+gMv37;j0`~zTr-& zXZ!!WU1GQtPQf8I9txO!IaDq!_>>maAbsr67&^0K1m!1d78doWZ#!%5{dV5&CnSO#iT~aZlg%9@jtLVze;mNJDRp(dNJM-Bd78dF6_%$iu?Wz!Q}~ij<^l@~ z5?J9Px{?w2gH7I((zS$U8|<;PXL32NC`6?ee|~18sq6;-FU6)WMU+UMnxmwIv<-FM zAvB9{w9TaFlm(B6FYo8lNRfe*%hb<^Lu7PEgv1G*pjjJCAbI6+HTaf3I2EYUBD96L zby_6LiS27axfTqHl3v87D`AZ(3R-RigwBf(6`$;WahZG0MC>b!(&_dH5;LO7_qWG zN_j|wS!7GKj56#v&)DMRt(t zI!MCnZq`Ei2PTh{Y`>&b4);1u;R>z=JC-~6^_t)9EYrMr8DubS*2h2t85|+FJp0oJ zsFlDla#?lJu|{`z3r%YJE}Aeu$;t6y=pV`2kY0E?uUnHo5!h561qwkX z2eUS!L|C2NDbB7!U1{+*sW#k#`S|f}OoX9FNcFVeHv+>z-F#m}Lfz3N!&@oN$bA20 z0n%S4n?yeRy|&l1G%n>)&a&7!!@2ksv~=b96#5iX?6~Fmlxx5UA%AkT{-4;__78YV; zvDsx{|IUy>A}j$4AlU+o(!YB5+7A4Njywlg|L|t@Pk_wAvo!kaHQ=(Q#1!Zjw@t8&WnD1m|hT2jhg(WB79#^vrE;FiyKr2=fcre3$9gTSj$#;<3FU+NqbW7Nfo4k8vJFpU%g{3HzbdiaPA#I}wS3-aBIz zDKk26Du*&7XTis;h(_tEYzLe3i9LFIqSOX%N4Xam$BVDy{(YwJWfz8`5|l78oy^R* zWC8(P4k*78A8e=0J9p~PMr2vXOI{SCltH*wE1fev8uWz){QmzKhd$)=y&uC%N>(fq ziz*S1iSWnG|BnmiC<1g~UmiyUmoq~|av;>i0<4ERZlG*8I(KaLt2Mllxc>xoh7_gk z7gHmC`Zq)+G;>AFE)B4v)Eh^MvJ}?INtA&qls~2|Nb=R4l2(H*@@=g+z%9cQM3+}F zZxw=|{$(|}wtZRmQh-l!Q>nwq{QqO`t)lA4wm?xJXmAL@-Ccrva3{FCI|O$Kt_kk$ z?(XjH?hxGF?xy9O?sT8`e(%TqAypZ>YRxs>)~u1#p=UFhPXQT(#-Au))4M&oP(E3> z;Vl>ZxPLzWgct&!QOcJJ8wZsXe$Rwy{n4;nZx}HEQ+C^}P$EF)$iD6__+Df+oC9a7 zb~k#?9Th~{MG^0ji@0sl{Zz5cVV;K`)jVek)DubQtKf;9`Do{3&py;K5I6HXv?0yb z)}M>kEBLZloYsvW1}a050wgx34HAxukJw!4=W)PdB&LVT(fMHNDtu<1Ce`3M4A|3M zPYcz=rwnylU>|WfzujtC1#w5-NbW#kHJ_+-6&5d6gkaaVWWIcyWAYnp(=PMrD!lcC zV`R5dC3{7*Yb~a`q%s`)5sAXlj>yj)8W^4RYMnu7@qjlh8*7Zirxi%YrawmLGJEXw za`>8ENgbXPbnhe;bjziHz*@D)t+3m**YRg>qBps}myBo~kFW?jMI&$m>F?t?!XbHa z)iY6a@^EO-Q3$Yz_`q$Um59G`qbUGrwiKWp&iZwQ+#yzWwU$WYz3JwB?(SBg4g0pOHaeIuU@_+%JxrlGm2kpJsm`bmlG; zlJlas6zfps;pNcYtxD{HW;U-h_xN9kY5X_5k9UX zQc=}GFjhSzmvWH}TvxniM&qkNIG@?Us(V%0E?1-O;PPeK?I)Z?^zuP7I6Or35hvFi z3k6*^bsU#3@yA#nAAoBHfnq?hvJPk$?y(I;PwhUVdY@V!^7EF)txVLBlEdI+@JE92 z2Vp>u1D3Znq=3se-=eO|KSt}k=}ojxpuDZ^MxU0Y@esNpAG(o$)23*SpzR8y@^Vt| zv)>6=gbIHd5D8Wnn6JwZCFymiiLwNGk4b#3Kd3z24Q-CQbKClU#L66t{s9|_X+&7* z1IDZI@WIw%d-k~0S*ub)q?R* z5hlccBsD#fi&yNftPUPuW3qB+^#hrg)h5YE(QKcbJ!$~K#HM;z09*$Vt6V<&4IWXx zi`9PlZp*-;PNxIB`oi0paZ-c#K7Nhw$wRe%$hO?0_nW)VijLK3{8E|=ie7Uv6Ymh^{dB7p~KpeS6o26ywm4d)RjAJl!epmPRVC)@#qJ|wUp2sgV$`$M$n zX~|G+Zl;(!#?y-(XfCSSD`Bd6?{Uz>9N-a;zYf9k!^8s)fwK4=$X@!k0uKAYk<=%m z5i-_{WiwV-1PELKD${Csvw%^L(aHu?AvzYh2yp9!_l4Ss?2@8dKjLcN<1`7b$*4)? zHyyF7QDU2<#SqhwD^hWs zB=CK(L}P+cp25rpoS*ER6w!`db9F=5buGjr_E_NpB)lr=Kp*ihD-OyXJ6w-!yg>|i zu!@2bhuObn@72C+-dmEQ7cPk(+}y_vGwDCHfz{;IuoUX5{(xlhs^8}S$c1gJE4la4evPL2 z%-fMN^kJLHy*ES~4M``guO2D{{mLWIb-LrC5n|$qs(T7IHNA?ubX-h{tI-bnAVvaeGrKoga zPUA;TQayN3>GCxc{riR# z^osh^SIJTneD7&Hb8y4@=d-d7*@TrQFj}mwOX$HG7K4%?A_%X-;u0OU^DuVh=?54P zc?T$T>*TZ33PRdB6;9G!XtR@n@P<;)o*xq!Ta#bS!`59n(3BgzzUKw%-El)$*DIHh zPaq^qa+Tn?xtn-irE~=Gg_2T2yOFLrf22+f6M6#Yj(Nb1H z9z+%a7O2b;>|3*^-t%K|We=&^RCny65F_P>pG*0khJVT_U0Wvzkf11PNXr13Kl4|G zqJWdW?|MImBbuXS*lvj-SAkrn#365%G%)N03yT}j zS!*w-64Vb!nDwkP zQv#v=;K7}045>*G-afdzF=&O*NuWZ6vM_4_6wg5WEZpm}bBIsl4{_1-)Ub`MaWNC` zxC9JH>qIA0bzyGkKi$NSki2qkhN)Q(<#~+6fg`&!QS~6fyZagoT}rFG=yLfrm;GBVRBY-DBkR#Z1ku zg#RGq$o2?rcl`$TchWQL#d$|u5#oSJ(sBKBQS zlnOi&#%KBy6t!G^vE{^ZIwO*Ld4^2PtwYlk!{&sM+aeuX&oHYuLK<*S6AG(Tzxp%x zahrzPbj-Cvu4h0wONl3{MlT)*in!Pzyax?U3TiDkSJD1?mE?U-zd5p;bfEKT;1Fa+ z1Dojn+-Pp4?ye4Xg(I5od~AuoO<4DZo}Bs53&f9gd5#iD3KDk zBwLNdv%eE9cWoek{<#+v^Ie{GH>j%?j)qY~YLZ!&SJFp)ctgm6{vB5h#a95DHKe&Q z|3LE}b0Oa59cyC{jAy-*Os3+Q-DGh@Lpio8^0x)KC?y~-oMO7U4*^XI`&hBG!K#B$ z3~;VwB2(Aj2L#33iV7dATL%JKI&0S4jXE`b(M=1lFQru!r|6&Cd`Q4imm}@ffSO?8 z;53o%P!%YQcyP7z*-xe{@py;;`d?x|SeIbZRF|-pb-UK_&5c z=X8HI3oiFKhgIe+%~kaL+Orj0WW`4+s`VAT!F7^M)h z>0{@0cn`SIKsi6yvaclODZCQHuA6y}xY8irsUS2C!4*f3rpe@@7Y=@@l8n;F%&s=0 zWQ};Pu5QN*zZ81qeej~6a6W{oxLL~~2)R0`T;y+)q_dmN-NygZgYXwbuTz1vxL}$2 zmI6t@xh!C1A1;G6dRlz0XWLaMtT*oH0Y6~1k+;?1jhSe+;ILUWE+lO%g=5#P5k?(! zo66@Z`*gfmyjlWCP|C-)tYbn=MN@Td*e?~{JVN}Clw+ysMd zU=oJkG}T|-A4mDDpMyUXCcOJ2>7m6%QYBBd@YJg4pj0iN2j=x#)#7U+awoB(1PZQc zhY&ngA4H)cXZ@E;LOo0577tCO#l)-Wc^FT8V#UVC3hMO6ZKy?rPugVo`fMsBW}_H4iJCFYnu=i!ZE}Sq-BGQ&ppRgF z&DWuF{ObO?BR1M0|GAbgcnGdsZ~dyZW^uc9&WLJsYI>F8mCSJz@iKMD=7!@!s4}I{ zr!2vKV@=xKZZGn%phPTwI|}JLgM607!X5$ZQ?DPYKho@p1kP%y;}AX*iaW&x zlE^-S-?nG-vAnrH6vrkTX5gQ80P6b)e$w(}h$Yb4sxx3QRa)`JLdbab?RQ=W7+cxr zmaD>v@!xbq#09K73*y$X&kcxIKAvUhT9jJ37})lB9Ize|s@VV~&QCKVm$@%oE}~SG zMk$~%u*2+QzkJ)2cU*E&5lkhf)e~7bC9{oR{@le08?BT1AR92c=TmAWmfOY ziA9q?LCr65#{4M!fQ7h$(x2Z#7Ar9o2oR#K9r03;rZ$u0_1=Ub=6;5PtQi@xii%N$Rnkb&}8RG7A zX(vmR)>c4Bkt%}#ApyEo)55TWPJxpS&kGSuTBg*x0UOAoLq0Y;VZuZ?eFW_>)^9Oi zBQEJP-mZS&fv=l($n9a@{AxxutFAOQ9K9+X6dWomM&+Dc@d0!oWZhg0y=D0>)Tlt2 zQ07yrHF*a^q$gjvBe0?Dst8gBsIFgPensRwD=qUsX5RnFHNPn?pp%9ly$N#E0XgH{ zl+k^_3m8K0#dfH_OYddt%++bzB6H&eXikRCtUd`Tu z{2+ZBlK)itMA4vQ`BSlTyY)oVHn0BOx6MrAG;@WP5LnP+JgfklbcQ;TplRpcxDQ{| zzRF^w=f4v+M;eW~AcC5*1*z(={5H?k1x;E`xXLK3?Lq*EM)sXo?u-8tTK_o_slbny z_Burbn;pwi@eI=-Z=E`cJS!ZTw7Z#gvOB_Eq$`Yq&%^7MrdIrw=jP-cT`+~``klEX zb4vhGweL6>DB_qu7KKx=(Ogqiaw>tRG`#EH^pspNnYLAapoR=0^hX3K!7seoal9_4 z22m?VC$Du22zv9rl9f#h7b`;>hBqTgx7?qa5}rqr)@&c=<|zLY|lHG5ZiQT1g zoTb8^Ej_f{vIA8ozzYQYpFiH3kkJ7{gNU$g4*7ik2!kWLedem>#>1q<=ujtHYVb~l}!N+l=W5ip&W5EI@<^>G5>T6s? zjz+m1iiV0}k~h`;8k|JtW?z;%rzu3qDS^d;F2xk5rXdyd<@#>s)S~&OtTK#5VGEU( z^mD21BU%rp6zKqGTYRYZ&8((QRzO{^*)DRHqAXrwj%R3WszyAU*D*Isoz?`v1lW-lbqvu`d{s ztL6Soo{D8n!nc-c8w#@%6IrJi5%#wAk)O8vt*&+Kb7s*7SSRc)+%F0RH1w*))_Mb% z*l7q8ck(h-$W3JRBP(hHK9{^#QX}><7@sE{w57+ktnbBfi7ke_AXY~*uI9wb&=;O* z^NYzD_0ABh97zpV!9j9yupwxz{pfNg+Q3y8l-+c_PU0d{Gvz%W{=gWvaM@PBQ{F); ziOy1ms`hggkWsCAsoGVDVlPy|2Fw=~5hXa^mg)Ph=4$9<93d}n1RYbS<9v1gNC90u zke4GwWWL;Vgmb)vL>^wG=`OZ^_|@yle8fr3G5l6_x#h(fh{Lv85v4?-x-k3{ z?z?%U7$Wbw7m$u_IN0CNgoglHOs%tdS5kE{VIb~F)LuR8vMn}bEGqNByS#5GIh;*B zr6>D!C&ywJ26w+4)K9PG2J_4S%{WkOCLpTH9vmr8VOyACAT~iE!&I$Vih)ODA>7B0 zL#?Ij>s;P?6n-!M4eb3qf27p39~q(~xVX0p`iWkc9Ng&9dD;xEIqeGRu^Y3=<-3eE z#*byoR-8NpjEnTvOB%;4YR6L}D&_~Vo+vRe@NpFz!Lr(u%*IiRwHHPs(!wtfS{lao zQEa<@XV9x9l2Nz2)BS{Pip`0N7mdZ&{yX);Nn;|8N|f%c zsUl(O#Fd_q#sWVeKp?ODfOIxnzZfM!;&}mq{Q1Xg39K+HT0l^5xU|l1_*2@2_jUbE zM{MxVtxK`oD`{2YB#kvU<+QaVTAlIgFENCIy}(dwEd`uXdENVH^YfKirq@U$;l`^f zSx*zk0oJFK=GBY(nN@JtS8{WqrguUg{TC00{f26>L|!N(mLW@!N)=%+Vnz(B7KzHd z2MbM|bv;Y_oh+R#Un^*hoo8OO9=iv=7n zq0z)}?YM0pnjNa-SfFH7f7yp0h)0%ASLsissWq41;2UY*@58vh>&h8H0w?s)a46n0>)kE{A>A-A#$jHIGP{!HUdu2Y=2GmC+~+uV$>xapQ{OBQ zex|L+;9g?KJc;olO8IfsZKwr{tfo-WcB(1JKXbO6r@zn}aVqg(uPXm+cwYd8yF}@G zQfzKK$Za0yuG@&c4__yk-&EReq}SaTd$d8%{^%RF;!>^uaB{@8ws2u-;oS*9Iyi7= zwSpN6Zi(TCtv#rg; z6G%SL1rE+ITU(V6o_V z9x#Z*4u2N*}qb-iQcBmz;MNZN6(^eXt;(TzOrs4 zfJWqPmj;7Ge%uewTKH3*ev_7zh|}a?JY^*eiJU_1{>*%L)q1 z@RNv-5J_&pJ|8x9)aP$Lus4_kEz9H42*h0SGd%JUq=cR3K71(rLr#J?FVuKhK?Wb2 zdY`#hL)uJceJNoX+~(<{=O-3Zuj&;3>;>4YpPIwI@zeMIfp#9zCKZSE0p~z)>C5KL zXH$5KBBPnXz0ZxG!4WTGj}mar04;tX%g4xG95FQbe^LFsbkLy+owa1WGC}C1Fv-^X z2l?IQ$`e1%%!TqT;$%!L!K#bi`-JOc@;X2`{sZUTjzN0*wIl;*p-ZDxvMfC1ki zQ&xKzI60LiaAD9hz>7<$dy{lWRY~k!|$|^QmNfL|W>1C-@ zL@aQBe5Yjr%ofMR&7IMp6cGQedFflt)koA{j0<25Xav1fa98zNkAd@ z<8EKliTiG2!ro}JwSRNYO3;-|2M=8riA0lV{%HZX^E_q^ssZxIJ z_D4^fPcTcTDy!KenPoCOq@E#>te(;|=+0%+SgobgUEpXe*0?B=nA;WUdED%U-k zP@9*Zy?HP+3IjW#<#aO;vIZE&?1(9y<{)82DaE0aS^T)tNc}M+=iTGCxK$ptPUlV9r5hxYn`6D0*}n;|63Fgne!B(0Xx@P?VcZn%uWm+y2Hz5i zT9ESO64`^0#a)8O!>i`2p~(?74kVc4W0S4}4keP1Fq!v+aZY`n0d6=czg#U59=Cq9 zqCZL*=B3{@IZkvNU4w1{r%BS>XmL;}EUpsbCzZ_J$o2ZF;tyFROTzlkXU0>NSDWTJ z%9BlGgWjT#v!tUpOjrp*vXvb_@R#RqppQSd3xfji(rl#l5;#1I$u1kYnVHpTAo@sm zp89<61926FR`JeEV3${gU<|%N7h)OP_3NzF;`!+1Z8bb{T};J-c~aeR%X(-5ccr-T zFD_Xl@AX=l4AZozv!sFZ(bKDHz|oJ8v8)79^&fT(HU&A2SDtVA_+#9lZ^fO>^HF%np- z<7!czhHZx8))SHOOUS7iV`A0ovO1+mj2p>^o*_h8fXA9-pO?5D;q1j-a3S^6m;Pw6xux4qjhvR73w^3&_IA3QyDl$CB0B!$Oh!MCs$T5v6R zq>%LgoSP9x>QKq&S8#s#e27h(ic=V~=ZWt5^gW4q8Ix`E?h!}xlcB(%*Clu!)x$;W z6ta94)l#RaN6;6hgOZsWb0qvED$)b$5f^vml*w#Hf$);BG}#n4LyIS<@b|=5<2H*q zQi&5uJt-M%C7&d+V4#%58=-IjTA3FW#2uXk?vw9yO$hYdEQ@bl2!?ppG1x(vMM>P= zd4){LP!j-;0c&b67OG;M+2@4G6wPxfa?I5 zZ19T^V@F;GI+XC=IYC-SvyCIVwj*h$pG|-nS|LWr?~8BE6(xcG#H2QK$G%mnmm_=) zdIP+RS5TWPE~Trs(0j2>V%BtC&}P28s2nXYJ2gp)eyU1+6rb zG?LQ1UEMrfgqkOfp;Z1wb7kRmbaHeqCUMDBgqcWMl1KLacX2clXl!X+7#Zi>4>RrJ zbv@ZA{z5P6)mwocgq@NNz0J4MzTaTnm@l*Ty|&_({^TLN^@F%`@p&#d`zkGcv*WoYn9*@%SHS}(&D+7y2;UChx_8RXnRg+_5P_v zy4BsH13Ubutu-#x70%xx2tZCI4m8o8KSy0;Cy_2j))7xaT}iF#pvr(l$Rea5*m)!8 z{u6DR;$VI#>|$s0ZuE<(o=;<8Ck8U<>tY;>Jq#=l-LCj@q(^b59n6)BVsY_Uh zO3>15?7|He@`7xD8@JB0nT|}1K?8aY>HRW{{jma{ ze4#gZlK1ECQ8<)Xe6RM7H|}|vn$Aj9Yc}7x#r%%J^L0ZU_erOdOjuVJYK4Tf7u$0> zzJf4-h`5{ka8lAt0ux3JQDXgGulP08Er0XKJq3D&B{3Gy%Ml~Fycbcmc+AUXJ%uXE>C+XIo0&@g zD5*HloY0XoHGff-1H;{A+8X~QqIHFN5AcQ21#o=~>t;BApJES~JR;c2vXKQ11!`eLrF zdJzS$j){&)VgQIa3j}ewUmKrK!#G#9S|2XjQeC==FAZY)-?>WW&4>|%{Oq?@!LyHz zR!DI;w+Khg!{PAQc)k%&;rv^Y64>)YInhlK*Qu= zO{r6Jen74@uaX=ktR@A8b^EJruk}5feg!ubo=Mtc0GSL#CC{yn_&g&ZqKWeoGjzHv z`{>$OvrTeSO?Mr_n{G&{xAzbT1QGxJC=kdJyiXbER2_F8qwlZxT0d3OakL*wFp*Ch zR%xhoKx4!be$evN@Soh_8;mBNDtbI!HYG)QP9)erLqE*<&BXM?Elk&nVv;`Zc{|^9 zLf~uwKJJGpSIzNU9>M5w%KJ3YNE96_4-rEcBhC5%Lnyqd1 z5{AdFTdfRJQrn20#Edg3iH9m53`;fb{$LVcb}@d!BWK3%xwpFwDDHrO_AQM5oFV4# zjaC7Ff|cm&meEA_{vp#d2JW_ah+3D5mjF5zlau~KDbk4Lb| z?3?)QgG}I>odJav;OG*O^P_1`dn4jB8q6{|UHf3g3KNCG14H7v0zETWQ-#pkk68+K z%Vet)fU%6c>7*dOL9Us-?7yM~G{(#1>h7DPl4zW#xU4!(ZZ}IdH=FGmk5S}ffB@oH46EnoB7BJ9DN^ANOcSP;Z9aSZ>B#Y#jnCGwXksM>4s_FH$1+UJr6F1D- zgpAD*6KC~DJ|^kbE*!n8DtwH2GK0S}C8{lziM$SOt%-i-L8675AzKKeh?+6{Lix-m zZ=)j?nAni(W^p@-1Nx)}$eDSb@~D3QTL1ts+iQ>_E}M7Y#FgY?76s4l&~Ro?YuVJc zSVI@cw8K)5N&wfpmcSK!6usg!wqwiVu7+x1xl*11npDY+K)O|0HMRL^BYu0izgxE@ zgJ$+BO4dfZWzZ*;^<%thoOlg{7}i5ugbTlmgsFO;=HxLv*k+iA>}%5U|_YBE5x_`;JjB`d3Dkue36e4=T# z_Ayw*C8(OsH#3vy5<@uzr>8RA~A6OGHX?CPa!P z{l1#oB4fKP$BU#Xw2CZwhm8U~hBT?sc^M5>-bZzhSG`twq-a2(!$JyMoM-6`W z;TtyLKIX$#(1w(gx(7x_H$vcePMb5$ADDLaVsVDomq@tlwS7yuVf^6J_lodQgM1(` z$wG(NCIAQSY01#-Ea=CW_fcnPkymU3vFT4S)g;4G% zoGA1?F4oulS@0fTF`+nrt8!-dz~jMqfFnY+Sy_{UTRwK9H>i*GL6&vTJ)vh*KlF<# z>Kz{{hXsG8)I_y_&(0cT7*Z$pVv6iJ2w<@^AY7A|x-nz=U-!t3uRTe&P%#-<{;kI} zW>VTny!1}MgIc6@zGqiu_+jy4JJ;VDb?8=sK1Fo^a0-a;s32g6R8u&#zRUq^Ne~EF z8j3D)UaoRF#};?X-SS=D0_t=m@`l0 z>Z>XVP>*~*CrYV**{Wst%0Ahi< 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 Z{Fj}KN`_uxy Date: Wed, 8 Jan 2020 19:35:00 +0100 Subject: [PATCH 1467/3421] Add plot_config to optional plot --- docs/plotting.md | 2 ++ freqtrade/templates/base_strategy.py.j2 | 2 +- freqtrade/templates/sample_strategy.py | 16 ++++++++++++++++ .../templates/subtemplates/plot_config_full.j2 | 18 ++++++++++++++++++ .../subtemplates/plot_config_minimal.j2 | 0 freqtrade/utils.py | 2 ++ 6 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 freqtrade/templates/subtemplates/plot_config_full.j2 create mode 100644 freqtrade/templates/subtemplates/plot_config_minimal.j2 diff --git a/docs/plotting.md b/docs/plotting.md index a3d886473..2f084b66a 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -161,6 +161,8 @@ Sample configuration with inline comments explaining the process: # Specifies `ema10` to be red, and `ema50` to be a shade of gray 'ema10': {'color': 'red'}, 'ema50': {'color': '#CCCCCC'}, + # By omitting color, a random color is selected. + 'sar': {}, }, 'subplots': { # Create subplot MACD diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index 32573ec9e..fbf083387 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -78,7 +78,7 @@ class {{ strategy }}(IStrategy): 'buy': 'gtc', 'sell': 'gtc' } - + {{ plot_config | indent(4) }} def informative_pairs(self): """ Define additional, informative pair/interval combinations to be cached from the exchange. diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index 228e56b82..92f6aefba 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -80,6 +80,22 @@ class SampleStrategy(IStrategy): 'sell': 'gtc' } + plot_config = { + 'main_plot': { + 'tema': {}, + 'sar': {'color': 'white'}, + }, + 'subplots': { + "MACD": { + 'macd': {'color': 'blue'}, + 'macdsignal': {'color': 'orange'}, + }, + "RSI": { + 'rsi': {'color': 'red'}, + } + } + } + def informative_pairs(self): """ Define additional, informative pair/interval combinations to be cached from the exchange. diff --git a/freqtrade/templates/subtemplates/plot_config_full.j2 b/freqtrade/templates/subtemplates/plot_config_full.j2 new file mode 100644 index 000000000..ab02c7892 --- /dev/null +++ b/freqtrade/templates/subtemplates/plot_config_full.j2 @@ -0,0 +1,18 @@ + +plot_config = { + # Main plot indicators (Moving averages, ...) + 'main_plot': { + 'tema': {}, + 'sar': {'color': 'white'}, + }, + 'subplots': { + # Subplots - each dict defines one additional plot + "MACD": { + 'macd': {'color': 'blue'}, + 'macdsignal': {'color': 'orange'}, + }, + "RSI": { + 'rsi': {'color': 'red'}, + } + } +} diff --git a/freqtrade/templates/subtemplates/plot_config_minimal.j2 b/freqtrade/templates/subtemplates/plot_config_minimal.j2 new file mode 100644 index 000000000..e69de29bb diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 9fe15aea6..2f7b2d717 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -102,12 +102,14 @@ def deploy_new_strategy(strategy_name, strategy_path: Path, subtemplate: str): indicators = render_template(templatefile=f"subtemplates/indicators_{subtemplate}.j2",) buy_trend = render_template(templatefile=f"subtemplates/buy_trend_{subtemplate}.j2",) sell_trend = render_template(templatefile=f"subtemplates/sell_trend_{subtemplate}.j2",) + plot_config = render_template(templatefile=f"subtemplates/plot_config_{subtemplate}.j2",) strategy_text = render_template(templatefile='base_strategy.py.j2', arguments={"strategy": strategy_name, "indicators": indicators, "buy_trend": buy_trend, "sell_trend": sell_trend, + "plot_config": plot_config, }) logger.info(f"Writing strategy to `{strategy_path}`.") From db34cb1b75bb64f61bba371e43661dd8f67937b8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 8 Jan 2020 19:41:34 +0100 Subject: [PATCH 1468/3421] Do some adjustments to the wording of the index.md section --- docs/index.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/index.md b/docs/index.md index 5871479d9..3bde10707 100644 --- a/docs/index.md +++ b/docs/index.md @@ -22,13 +22,13 @@ Freqtrade is a crypto-currency algorithmic trading software develop in python (3 ## Features - 1. Download markets datas : download historical datas of the exchange and the markets your may want to trade with. - 2. Select markets : create your list or use an automatic one based on top traded volume (not available during backtesting). You can blacklist markets you don't want to trade. - 3. Backtest : Test your strategy on past datas (based on [ohcl](https://en.wikipedia.org/wiki/Open-high-low-close_chart) candles). - 4. Optimize : Find the best parameters for your strategy (use machining learning). You can optimize buy, sell, take profit and stop-loss. - 5. Run : Run the bot on exchange without playing money (dry-run) or with money (live). - 6. Run using edge (optionnal module) : the concept is to find the best historical [trade expectancy](https://www.freqtrade.io/en/latest/edge/#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade (the sizing of the trade is based on a risk of a percentage of your capital) - 7. Control/Monitor/Analyse : use Telegram or a REST API (start/stop the bot, profit/loss, daily summary, current open trades results...). Futher analysis can be done as trades are saved (SQLite database) + 1. Download market data: Download historical data of the exchange and the markets your may want to trade with. + 2. Select markets: Create your list or use an automatic one based on top traded volume (not available during backtesting). You can blacklist markets you don't want to trade. + 3. Backtest: Test your strategy on past data (based on [ohlcv](https://en.wikipedia.org/wiki/Open-high-low-close_chart) candles). + 4. Optimize: Find the best parameters for your strategy using machining learning. You can optimize buy, sell, take profit (ROI) and stop-loss. + 5. Run: Run the bot on exchange with simulated money (dry-run) or with real money (live). + 6. Run using edge (optional module): The concept is to find the best historical [trade expectancy](https://www.freqtrade.io/en/latest/edge/#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade (the sizing of the trade is based on a risk of a percentage of your capital). + 7. Control/Monitor/Analyse: Use Telegram or a REST API (start/stop the bot, profit/loss, daily summary, current open trades results...). Futher analysis can be done as trades are saved (SQLite database). ## Requirements From 9559cb988ef49b68374373f6da8c9d1c88cd7d0e Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Thu, 9 Jan 2020 04:12:43 +0300 Subject: [PATCH 1469/3421] reworked --- docs/index.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/docs/index.md b/docs/index.md index 3bde10707..3293999b7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -11,8 +11,11 @@ Download Follow @freqtrade + ## Introduction -Freqtrade is a crypto-currency algorithmic trading software develop in python (3.6+) supported on windows, macOs and Linux. + +Freqtrade is a crypto-currency algorithmic trading software developed in python (3.6+) and supported on Windows, macOS and Linux. + !!! Danger "DISCLAIMER" This software is for educational purposes only. Do not risk money which you are afraid to lose. USE THE SOFTWARE AT YOUR OWN RISK. THE AUTHORS AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR TRADING RESULTS. @@ -22,13 +25,13 @@ Freqtrade is a crypto-currency algorithmic trading software develop in python (3 ## Features - 1. Download market data: Download historical data of the exchange and the markets your may want to trade with. - 2. Select markets: Create your list or use an automatic one based on top traded volume (not available during backtesting). You can blacklist markets you don't want to trade. - 3. Backtest: Test your strategy on past data (based on [ohlcv](https://en.wikipedia.org/wiki/Open-high-low-close_chart) candles). - 4. Optimize: Find the best parameters for your strategy using machining learning. You can optimize buy, sell, take profit (ROI) and stop-loss. - 5. Run: Run the bot on exchange with simulated money (dry-run) or with real money (live). - 6. Run using edge (optional module): The concept is to find the best historical [trade expectancy](https://www.freqtrade.io/en/latest/edge/#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade (the sizing of the trade is based on a risk of a percentage of your capital). - 7. Control/Monitor/Analyse: Use Telegram or a REST API (start/stop the bot, profit/loss, daily summary, current open trades results...). Futher analysis can be done as trades are saved (SQLite database). +- Download market data: Download historical data of the exchange and the markets your may want to trade with. The historical data can be based on [OHLCV](https://en.wikipedia.org/wiki/Open-high-low-close_chart) candles or be trade ticks (for exchanges that support this). +- Select markets: Create your static list or use an automatic one based on top traded volumes and/or prices (not available during backtesting). You can also explicitly blacklist markets you don't want to trade. +- Backtest: Test your strategy on downloaded historical data. +- Optimize: Find the best parameters for your strategy using hyperoptimization which employs machining learning methods. You can optimize buy, sell, take profit (ROI), stop-loss and trailing stop-loss parameters for your strategy. +- Run: Run the bot on exchange with simulated money (Dry-Run mode) or with real money (Live-Trade mode). +- Run using Edge (optional module): The concept is to find the best historical [trade expectancy](https://www.freqtrade.io/en/latest/edge/#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade. The sizing of the trade is based on a risk of a percentage of your capital. +- Control/Monitor/Analyse: Use Telegram or a REST API (start/stop the bot, show profit/loss, daily summary, current open trades results, etc.) Further analysis can be done as trades are saved (SQLite persistence database). ## Requirements @@ -55,10 +58,10 @@ To run this bot we recommend you a cloud instance with a minimum of: ## Support -Help / Slack -For any questions not covered by the documentation or for further information about the bot, we encourage you to join our Slack channel. +### Help / Slack +For any questions not covered by the documentation or for further information about the bot, we encourage you to join our passionate Slack community. -Click [here](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) to join Slack channel. +Click [here](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) to join the Freqtrade Slack channel. ## Ready to try? From cee8f3349e043b721d2c2b8ae6a6536544609d57 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Thu, 9 Jan 2020 04:16:57 +0300 Subject: [PATCH 1470/3421] rearrange features -- move Run to the top --- docs/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 3293999b7..8c1a8fcc6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -25,11 +25,11 @@ Freqtrade is a crypto-currency algorithmic trading software developed in python ## Features -- Download market data: Download historical data of the exchange and the markets your may want to trade with. The historical data can be based on [OHLCV](https://en.wikipedia.org/wiki/Open-high-low-close_chart) candles or be trade ticks (for exchanges that support this). +- Run: Run the bot on exchange with simulated money (Dry-Run mode) or with real money (Live-Trade mode). - Select markets: Create your static list or use an automatic one based on top traded volumes and/or prices (not available during backtesting). You can also explicitly blacklist markets you don't want to trade. +- Download market data: Download historical data of the exchange and the markets your may want to trade with. The historical data can be based on [OHLCV](https://en.wikipedia.org/wiki/Open-high-low-close_chart) candles or be trade ticks (for exchanges that support this). - Backtest: Test your strategy on downloaded historical data. - Optimize: Find the best parameters for your strategy using hyperoptimization which employs machining learning methods. You can optimize buy, sell, take profit (ROI), stop-loss and trailing stop-loss parameters for your strategy. -- Run: Run the bot on exchange with simulated money (Dry-Run mode) or with real money (Live-Trade mode). - Run using Edge (optional module): The concept is to find the best historical [trade expectancy](https://www.freqtrade.io/en/latest/edge/#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade. The sizing of the trade is based on a risk of a percentage of your capital. - Control/Monitor/Analyse: Use Telegram or a REST API (start/stop the bot, show profit/loss, daily summary, current open trades results, etc.) Further analysis can be done as trades are saved (SQLite persistence database). From 135487b2c98b541bb1ba45c96ddabe975fb77a52 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Jan 2020 06:35:05 +0100 Subject: [PATCH 1471/3421] SPlit control and Analyse feature into 2 seperate points --- docs/index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 8c1a8fcc6..1c292b21d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -30,8 +30,9 @@ Freqtrade is a crypto-currency algorithmic trading software developed in python - Download market data: Download historical data of the exchange and the markets your may want to trade with. The historical data can be based on [OHLCV](https://en.wikipedia.org/wiki/Open-high-low-close_chart) candles or be trade ticks (for exchanges that support this). - Backtest: Test your strategy on downloaded historical data. - Optimize: Find the best parameters for your strategy using hyperoptimization which employs machining learning methods. You can optimize buy, sell, take profit (ROI), stop-loss and trailing stop-loss parameters for your strategy. -- Run using Edge (optional module): The concept is to find the best historical [trade expectancy](https://www.freqtrade.io/en/latest/edge/#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade. The sizing of the trade is based on a risk of a percentage of your capital. -- Control/Monitor/Analyse: Use Telegram or a REST API (start/stop the bot, show profit/loss, daily summary, current open trades results, etc.) Further analysis can be done as trades are saved (SQLite persistence database). +- Run using Edge (optional module): The concept is to find the best historical [trade expectancy](edge.md#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade. The sizing of the trade is based on a risk of a percentage of your capital. +- Control/Monitor: Use Telegram or a REST API (start/stop the bot, show profit/loss, daily summary, current open trades results, etc.). +- Analyse: Further analysis can be possibilities on either Backtesting data or Freqtrade trading history (SQL database), including automated standard plots, and methods to load the data into [interactive environments](data-analysis.md). ## Requirements From 7461b5dc02b14b5ce731188e8d0f3215d3da0fd3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Jan 2020 06:37:18 +0100 Subject: [PATCH 1472/3421] Mention custom strategy in features --- docs/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/index.md b/docs/index.md index 1c292b21d..b664552bc 100644 --- a/docs/index.md +++ b/docs/index.md @@ -28,6 +28,7 @@ Freqtrade is a crypto-currency algorithmic trading software developed in python - Run: Run the bot on exchange with simulated money (Dry-Run mode) or with real money (Live-Trade mode). - Select markets: Create your static list or use an automatic one based on top traded volumes and/or prices (not available during backtesting). You can also explicitly blacklist markets you don't want to trade. - Download market data: Download historical data of the exchange and the markets your may want to trade with. The historical data can be based on [OHLCV](https://en.wikipedia.org/wiki/Open-high-low-close_chart) candles or be trade ticks (for exchanges that support this). +- Strategy: Write your strategy in python, using [pandas](https://pandas.pydata.org/). Example strategies to inspire you are available in the [strategy repository](https://github.com/freqtrade/freqtrade-strategies). - Backtest: Test your strategy on downloaded historical data. - Optimize: Find the best parameters for your strategy using hyperoptimization which employs machining learning methods. You can optimize buy, sell, take profit (ROI), stop-loss and trailing stop-loss parameters for your strategy. - Run using Edge (optional module): The concept is to find the best historical [trade expectancy](edge.md#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade. The sizing of the trade is based on a risk of a percentage of your capital. From 989ab646a9ec1367b3eef17d8740c6bc7c84a4f2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Jan 2020 06:46:39 +0100 Subject: [PATCH 1473/3421] Add profit % to sell_reason table --- freqtrade/optimize/backtest_reports.py | 10 ++++++---- tests/optimize/test_backtest_reports.py | 12 ++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/freqtrade/optimize/backtest_reports.py b/freqtrade/optimize/backtest_reports.py index 5778747cf..555250760 100644 --- a/freqtrade/optimize/backtest_reports.py +++ b/freqtrade/optimize/backtest_reports.py @@ -66,11 +66,13 @@ def generate_text_table_sell_reason(data: Dict[str, Dict], results: DataFrame) - :return: pretty printed table with tabulate as string """ tabular_data = [] - headers = ['Sell Reason', 'Count', 'Profit', 'Loss'] + headers = ['Sell Reason', 'Count', 'Profit', 'Loss', 'Profit %'] for reason, count in results['sell_reason'].value_counts().iteritems(): - profit = len(results[(results['sell_reason'] == reason) & (results['profit_abs'] >= 0)]) - loss = len(results[(results['sell_reason'] == reason) & (results['profit_abs'] < 0)]) - tabular_data.append([reason.value, count, profit, loss]) + result = results.loc[results['sell_reason'] == reason] + profit = len(result[result['profit_abs'] >= 0]) + loss = len(result[results['profit_abs'] < 0]) + profit_mean = round(result['profit_percent'].mean() * 100.0, 2) + tabular_data.append([reason.value, count, profit, loss, profit_mean]) return tabulate(tabular_data, headers=headers, tablefmt="pipe") diff --git a/tests/optimize/test_backtest_reports.py b/tests/optimize/test_backtest_reports.py index 726202517..107389a42 100644 --- a/tests/optimize/test_backtest_reports.py +++ b/tests/optimize/test_backtest_reports.py @@ -39,8 +39,8 @@ def test_generate_text_table_sell_reason(default_conf, mocker): results = pd.DataFrame( { 'pair': ['ETH/BTC', 'ETH/BTC', 'ETH/BTC'], - 'profit_percent': [0.1, 0.2, -0.3], - 'profit_abs': [0.2, 0.4, -0.5], + 'profit_percent': [0.1, 0.2, -0.1], + 'profit_abs': [0.2, 0.4, -0.2], 'trade_duration': [10, 30, 10], 'profit': [2, 0, 0], 'loss': [0, 0, 1], @@ -49,10 +49,10 @@ def test_generate_text_table_sell_reason(default_conf, mocker): ) result_str = ( - '| Sell Reason | Count | Profit | Loss |\n' - '|:--------------|--------:|---------:|-------:|\n' - '| roi | 2 | 2 | 0 |\n' - '| stop_loss | 1 | 0 | 1 |' + '| Sell Reason | Count | Profit | Loss | Profit % |\n' + '|:--------------|--------:|---------:|-------:|-----------:|\n' + '| roi | 2 | 2 | 0 | 15 |\n' + '| stop_loss | 1 | 0 | 1 | -10 |' ) assert generate_text_table_sell_reason( data={'ETH/BTC': {}}, results=results) == result_str From c475729c13c22b404c469dec6dbdb9256a312fb8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Jan 2020 06:52:34 +0100 Subject: [PATCH 1474/3421] Extract edge reporting to optimize_reports --- freqtrade/optimize/backtesting.py | 2 +- freqtrade/optimize/edge_cli.py | 32 ++----------------- ...acktest_reports.py => optimize_reports.py} | 26 +++++++++++++++ tests/optimize/test_backtest_reports.py | 16 ++++++++-- tests/optimize/test_edge_cli.py | 14 -------- 5 files changed, 44 insertions(+), 46 deletions(-) rename freqtrade/optimize/{backtest_reports.py => optimize_reports.py} (83%) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index ae3fbed0a..18cc27ff4 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -18,7 +18,7 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds from freqtrade.misc import file_dump_json -from freqtrade.optimize.backtest_reports import ( +from freqtrade.optimize.optimize_reports import ( generate_text_table, generate_text_table_sell_reason, generate_text_table_strategy) from freqtrade.persistence import Trade diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py index 4944f1dbb..be19688d8 100644 --- a/freqtrade/optimize/edge_cli.py +++ b/freqtrade/optimize/edge_cli.py @@ -6,13 +6,12 @@ This module contains the edge backtesting interface import logging from typing import Any, Dict -from tabulate import tabulate - from freqtrade import constants from freqtrade.configuration import (TimeRange, remove_credentials, validate_config_consistency) from freqtrade.edge import Edge -from freqtrade.resolvers import StrategyResolver, ExchangeResolver +from freqtrade.optimize.optimize_reports import generate_edge_table +from freqtrade.resolvers import ExchangeResolver, StrategyResolver logger = logging.getLogger(__name__) @@ -44,33 +43,8 @@ class EdgeCli: self.edge._timerange = TimeRange.parse_timerange(None if self.config.get( 'timerange') is None else str(self.config.get('timerange'))) - def _generate_edge_table(self, results: dict) -> str: - - floatfmt = ('s', '.10g', '.2f', '.2f', '.2f', '.2f', 'd', '.d') - tabular_data = [] - headers = ['pair', 'stoploss', 'win rate', 'risk reward ratio', - 'required risk reward', 'expectancy', 'total number of trades', - 'average duration (min)'] - - for result in results.items(): - if result[1].nb_trades > 0: - tabular_data.append([ - result[0], - result[1].stoploss, - result[1].winrate, - result[1].risk_reward_ratio, - result[1].required_risk_reward, - result[1].expectancy, - result[1].nb_trades, - round(result[1].avg_trade_duration) - ]) - - # Ignore type as floatfmt does allow tuples but mypy does not know that - return tabulate(tabular_data, headers=headers, - floatfmt=floatfmt, tablefmt="pipe") # type: ignore - def start(self) -> None: result = self.edge.calculate() if result: print('') # blank line for readability - print(self._generate_edge_table(self.edge._cached_pairs)) + print(generate_edge_table(self.edge._cached_pairs)) diff --git a/freqtrade/optimize/backtest_reports.py b/freqtrade/optimize/optimize_reports.py similarity index 83% rename from freqtrade/optimize/backtest_reports.py rename to freqtrade/optimize/optimize_reports.py index 555250760..ffc8c53d4 100644 --- a/freqtrade/optimize/backtest_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -107,3 +107,29 @@ def generate_text_table_strategy(stake_currency: str, max_open_trades: str, # Ignore type as floatfmt does allow tuples but mypy does not know that return tabulate(tabular_data, headers=headers, floatfmt=floatfmt, tablefmt="pipe") # type: ignore + + +def generate_edge_table(results: dict) -> str: + + floatfmt = ('s', '.10g', '.2f', '.2f', '.2f', '.2f', 'd', '.d') + tabular_data = [] + headers = ['pair', 'stoploss', 'win rate', 'risk reward ratio', + 'required risk reward', 'expectancy', 'total number of trades', + 'average duration (min)'] + + for result in results.items(): + if result[1].nb_trades > 0: + tabular_data.append([ + result[0], + result[1].stoploss, + result[1].winrate, + result[1].risk_reward_ratio, + result[1].required_risk_reward, + result[1].expectancy, + result[1].nb_trades, + round(result[1].avg_trade_duration) + ]) + + # Ignore type as floatfmt does allow tuples but mypy does not know that + return tabulate(tabular_data, headers=headers, + floatfmt=floatfmt, tablefmt="pipe") # type: ignore diff --git a/tests/optimize/test_backtest_reports.py b/tests/optimize/test_backtest_reports.py index 107389a42..518b50d0f 100644 --- a/tests/optimize/test_backtest_reports.py +++ b/tests/optimize/test_backtest_reports.py @@ -1,7 +1,8 @@ import pandas as pd -from freqtrade.optimize.backtest_reports import ( - generate_text_table, generate_text_table_sell_reason, +from freqtrade.edge import PairInfo +from freqtrade.optimize.optimize_reports import ( + generate_edge_table, generate_text_table, generate_text_table_sell_reason, generate_text_table_strategy) from freqtrade.strategy.interface import SellType @@ -94,3 +95,14 @@ def test_generate_text_table_strategy(default_conf, mocker): '| 1.30000000 | 45.00 | 0:20:00 | 3 | 0 |' ) assert generate_text_table_strategy('BTC', 2, all_results=results) == result_str + + +def test_generate_edge_table(edge_conf, mocker): + + results = {} + results['ETH/BTC'] = PairInfo(-0.01, 0.60, 2, 1, 3, 10, 60) + + assert generate_edge_table(results).count(':|') == 7 + assert generate_edge_table(results).count('| ETH/BTC |') == 1 + assert generate_edge_table(results).count( + '| risk reward ratio | required risk reward | expectancy |') == 1 diff --git a/tests/optimize/test_edge_cli.py b/tests/optimize/test_edge_cli.py index ddfa7156e..acc0d2d16 100644 --- a/tests/optimize/test_edge_cli.py +++ b/tests/optimize/test_edge_cli.py @@ -3,7 +3,6 @@ from unittest.mock import MagicMock -from freqtrade.edge import PairInfo from freqtrade.optimize import setup_configuration, start_edge from freqtrade.optimize.edge_cli import EdgeCli from freqtrade.state import RunMode @@ -106,16 +105,3 @@ def test_edge_init_fee(mocker, edge_conf) -> None: edge_cli = EdgeCli(edge_conf) assert edge_cli.edge.fee == 0.1234 assert fee_mock.call_count == 0 - - -def test_generate_edge_table(edge_conf, mocker): - patch_exchange(mocker) - edge_cli = EdgeCli(edge_conf) - - results = {} - results['ETH/BTC'] = PairInfo(-0.01, 0.60, 2, 1, 3, 10, 60) - - assert edge_cli._generate_edge_table(results).count(':|') == 7 - assert edge_cli._generate_edge_table(results).count('| ETH/BTC |') == 1 - assert edge_cli._generate_edge_table(results).count( - '| risk reward ratio | required risk reward | expectancy |') == 1 From 785cd2a640bda12ef39a1391e9f07f2b89dc229d Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Jan 2020 06:52:56 +0100 Subject: [PATCH 1475/3421] Rename test module --- freqtrade/optimize/optimize_reports.py | 4 ++-- .../{test_backtest_reports.py => test_optimize_reports.py} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename tests/optimize/{test_backtest_reports.py => test_optimize_reports.py} (100%) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index ffc8c53d4..3801546b1 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -114,8 +114,8 @@ def generate_edge_table(results: dict) -> str: floatfmt = ('s', '.10g', '.2f', '.2f', '.2f', '.2f', 'd', '.d') tabular_data = [] headers = ['pair', 'stoploss', 'win rate', 'risk reward ratio', - 'required risk reward', 'expectancy', 'total number of trades', - 'average duration (min)'] + 'required risk reward', 'expectancy', 'total number of trades', + 'average duration (min)'] for result in results.items(): if result[1].nb_trades > 0: diff --git a/tests/optimize/test_backtest_reports.py b/tests/optimize/test_optimize_reports.py similarity index 100% rename from tests/optimize/test_backtest_reports.py rename to tests/optimize/test_optimize_reports.py From b748ed34358466e3925f547f23a343a996d2b3c2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Jan 2020 19:59:13 +0100 Subject: [PATCH 1476/3421] UPdate documentaiton wording --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 9a05eea2d..f242a4744 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -149,7 +149,7 @@ For example, if you have 10 ETH available in your wallet on the exchange and `tr #### Amend last stake amount -Assuming we have a `balance=1000` (USDT), `stake_amount=400`, and `max_open_trades=3`. +Assuming we have the tradable balance of 1000 USDT (`balance=1000`), `stake_amount=400`, and `max_open_trades=3` (This example assumes `tradable_balance_ratio=1`). The bot would open 2 trades, and will be unable to fill the last trading slot, since the requested 400 USDT are no longer available, since 800 USDT are already tied in other trades. To overcome this, the option `amend_last_stake_amount` can be set to `True`, which will enable the bot to reduce stake_amount to the available balance in order to fill the last trade slot. From 9713dc8d94c181d293b6994b2587280dde60e71b Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Jan 2020 20:09:21 +0100 Subject: [PATCH 1477/3421] Ensure wallets.update is called before buy closes #2756 --- freqtrade/freqtradebot.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5aacdc587..06f435421 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -257,6 +257,9 @@ class FreqtradeBot: :raise: DependencyException if the available stake amount is too low """ stake_amount: float + # Ensure wallets are uptodate. + self.wallets.update() + if self.edge: stake_amount = self.edge.stake_amount( pair, From e94dfdeff24def65c0a52f2fb1690c4a5ca5845e Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Jan 2020 20:13:14 +0100 Subject: [PATCH 1478/3421] UPdate documentation to remove inexisting setting --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index f242a4744..a0e7610f6 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -149,7 +149,7 @@ For example, if you have 10 ETH available in your wallet on the exchange and `tr #### Amend last stake amount -Assuming we have the tradable balance of 1000 USDT (`balance=1000`), `stake_amount=400`, and `max_open_trades=3` (This example assumes `tradable_balance_ratio=1`). +Assuming we have the tradable balance of 1000 USDT, `stake_amount=400`, and `max_open_trades=3` (This example assumes `tradable_balance_ratio=1`). The bot would open 2 trades, and will be unable to fill the last trading slot, since the requested 400 USDT are no longer available, since 800 USDT are already tied in other trades. To overcome this, the option `amend_last_stake_amount` can be set to `True`, which will enable the bot to reduce stake_amount to the available balance in order to fill the last trade slot. From fab19ae3a7e0bf554f102ba292fc7199268aa847 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 10 Jan 2020 06:36:28 +0100 Subject: [PATCH 1479/3421] Implement last_stake_amount_min_ratio --- config_full.json.example | 1 + docs/configuration.md | 6 +++++- freqtrade/constants.py | 4 ++++ freqtrade/freqtradebot.py | 7 ++++++- tests/test_freqtradebot.py | 18 ++++++++++++------ 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index f39abb00c..82d8bd04a 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -6,6 +6,7 @@ "fiat_display_currency": "USD", "amount_reserve_percent" : 0.05, "amend_last_stake_amount": false, + "last_stake_amount_min_ratio": 0.5, "dry_run": false, "ticker_interval": "5m", "trailing_stop": false, diff --git a/docs/configuration.md b/docs/configuration.md index a0e7610f6..e609f89d9 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -45,6 +45,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* | `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.1` and `1.0`.* | `amend_last_stake_amount` | **Required.** Use reduced last stake amount if necessary. [More information below](#configuring-amount-per-trade).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* +| `last_stake_amount_min_ratio` | **Required.** Minimum amount that has to be left. Applies only to "last_stake_amount" if `amend_last_stake_amount=True` [More information below](#configuring-amount-per-trade).
      *Defaults to `0.5`.*
      ***Datatype:*** *Float (as ratio)* | `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      ***Datatype:*** *Positive Float as ratio.* | `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* @@ -149,7 +150,7 @@ For example, if you have 10 ETH available in your wallet on the exchange and `tr #### Amend last stake amount -Assuming we have the tradable balance of 1000 USDT, `stake_amount=400`, and `max_open_trades=3` (This example assumes `tradable_balance_ratio=1`). +Assuming we have the tradable balance of 1000 USDT, `stake_amount=400`, and `max_open_trades=3`. The bot would open 2 trades, and will be unable to fill the last trading slot, since the requested 400 USDT are no longer available, since 800 USDT are already tied in other trades. To overcome this, the option `amend_last_stake_amount` can be set to `True`, which will enable the bot to reduce stake_amount to the available balance in order to fill the last trade slot. @@ -163,6 +164,9 @@ In the example above this would mean: !!! Note This option only applies with [Static stake amount](#static-stake-amount) - since [Dynamic stake amount](#dynamic-stake-amount) divides the balances evenly. +!!! Note + The minimum last stake amount can be configured using `amend_last_stake_amount` - which defaults to 0.5 (50%). This means that the minimum stake-amount that's ever used is `stake_amount * 0.5`. This avoids very low stake-amounts, close to the minimum tradable amount. + #### Static stake amount The `stake_amount` configuration statically configures the amount of stake-currency your bot will use for each trade. diff --git a/freqtrade/constants.py b/freqtrade/constants.py index a1bd70183..e9c103db9 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -80,6 +80,9 @@ CONF_SCHEMA = { 'default': 0.99 }, 'amend_last_stake_amount': {'type': 'boolean', 'default': False}, + 'last_stake_amount_min_ratio': { + 'type': 'number', 'minimum': 0.0, 'maximum': 1.0, 'default': 0.5 + }, 'fiat_display_currency': {'type': 'string', 'enum': SUPPORTED_FIAT}, 'dry_run': {'type': 'boolean'}, 'dry_run_wallet': {'type': 'number', 'default': DRY_RUN_WALLET}, @@ -284,6 +287,7 @@ SCHEMA_TRADE_REQUIRED = [ 'stake_currency', 'stake_amount', 'tradable_balance_ratio', + 'last_stake_amount_min_ratio', 'dry_run', 'dry_run_wallet', 'bid_strategy', diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 06f435421..e3f2616a2 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -312,7 +312,12 @@ class FreqtradeBot: available_amount = self._get_available_stake_amount() if self.config['amend_last_stake_amount']: - stake_amount = min(stake_amount, available_amount) + # Remaining amount needs to be at least stake_amount * last_stake_amount_min_ratio + # Otherwise the remaining amount is too low to trade. + if available_amount > (stake_amount * self.config['last_stake_amount_min_ratio']): + stake_amount = min(stake_amount, available_amount) + else: + stake_amount = 0 if available_amount < stake_amount: raise DependencyException( diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 6d794fc05..58f88198a 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -140,14 +140,18 @@ def test_get_trade_stake_amount(default_conf, ticker, mocker) -> None: assert result == default_conf['stake_amount'] -@pytest.mark.parametrize("amend_last,wallet,max_open,expected", [ - (False, 0.002, 2, [0.001, None]), - (True, 0.002, 2, [0.001, 0.00098]), - (False, 0.003, 3, [0.001, 0.001, None]), - (True, 0.003, 3, [0.001, 0.001, 0.00097]), +@pytest.mark.parametrize("amend_last,wallet,max_open,lsamr,expected", [ + (False, 0.002, 2, 0.5, [0.001, None]), + (True, 0.002, 2, 0.5, [0.001, 0.00098]), + (False, 0.003, 3, 0.5, [0.001, 0.001, None]), + (True, 0.003, 3, 0.5, [0.001, 0.001, 0.00097]), + (False, 0.0022, 3, 0.5, [0.001, 0.001, None]), + (True, 0.0022, 3, 0.5, [0.001, 0.001, 0.0]), + (True, 0.0027, 3, 0.5, [0.001, 0.001, 0.000673]), + (True, 0.0022, 3, 1, [0.001, 0.001, 0.0]), ]) def test_check_available_stake_amount(default_conf, ticker, mocker, fee, limit_buy_order, - amend_last, wallet, max_open, expected) -> None: + amend_last, wallet, max_open, lsamr, expected) -> None: patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -160,6 +164,8 @@ def test_check_available_stake_amount(default_conf, ticker, mocker, fee, limit_b default_conf['dry_run_wallet'] = wallet default_conf['amend_last_stake_amount'] = amend_last + default_conf['last_stake_amount_min_ratio'] = lsamr + freqtrade = FreqtradeBot(default_conf) for i in range(0, max_open): From 3faa2d0eb9f579658e7d081fdb31720ad1838a97 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 10 Jan 2020 22:59:02 +0300 Subject: [PATCH 1480/3421] Refine description for last_stake_amount_min_ratio --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index e609f89d9..9aa3a7585 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -45,7 +45,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* | `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.1` and `1.0`.* | `amend_last_stake_amount` | **Required.** Use reduced last stake amount if necessary. [More information below](#configuring-amount-per-trade).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* -| `last_stake_amount_min_ratio` | **Required.** Minimum amount that has to be left. Applies only to "last_stake_amount" if `amend_last_stake_amount=True` [More information below](#configuring-amount-per-trade).
      *Defaults to `0.5`.*
      ***Datatype:*** *Float (as ratio)* +| `last_stake_amount_min_ratio` | **Required.** Defines minimum stake amount that has to be left and executed. Applies only to the last stake amount when it's amended to a reduced value (i.e. if `amend_last_stake_amount` is set to `true`). [More information below](#configuring-amount-per-trade).
      *Defaults to `0.5`.*
      ***Datatype:*** *Float (as ratio)* | `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      ***Datatype:*** *Positive Float as ratio.* | `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* From 83b88e791642d49b96edf55323f5b11ba4b097e6 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 10 Jan 2020 23:14:17 +0300 Subject: [PATCH 1481/3421] Remove Required marks for new settings --- docs/configuration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 9aa3a7585..f83072b03 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -44,8 +44,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* | `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.1` and `1.0`.* -| `amend_last_stake_amount` | **Required.** Use reduced last stake amount if necessary. [More information below](#configuring-amount-per-trade).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* -| `last_stake_amount_min_ratio` | **Required.** Defines minimum stake amount that has to be left and executed. Applies only to the last stake amount when it's amended to a reduced value (i.e. if `amend_last_stake_amount` is set to `true`). [More information below](#configuring-amount-per-trade).
      *Defaults to `0.5`.*
      ***Datatype:*** *Float (as ratio)* +| `amend_last_stake_amount` | Use reduced last stake amount if necessary. [More information below](#configuring-amount-per-trade).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* +| `last_stake_amount_min_ratio` | Defines minimum stake amount that has to be left and executed. Applies only to the last stake amount when it's amended to a reduced value (i.e. if `amend_last_stake_amount` is set to `true`). [More information below](#configuring-amount-per-trade).
      *Defaults to `0.5`.*
      ***Datatype:*** *Float (as ratio)* | `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      ***Datatype:*** *Positive Float as ratio.* | `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* From d3de3983950fdc7e8dbc0159dfb5c979c2b8c623 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 10 Jan 2020 23:43:09 +0300 Subject: [PATCH 1482/3421] Docs adjusted --- docs/configuration.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index f83072b03..fe692eacb 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -143,10 +143,10 @@ Freqtrade will reserve 1% for eventual fees when entering a trade and will there You can configure the "untouched" amount by using the `tradable_balance_ratio` setting. -For example, if you have 10 ETH available in your wallet on the exchange and `tradable_balance_ratio=0.5` (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers this as available balance. +For example, if you have 10 ETH available in your wallet on the exchange and `tradable_balance_ratio=0.5` (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers this as available balance. The rest of the wallet is untouched by the trades. !!! Warning - `tradable_balance_ratio` applies to the current balance (free balance + tied up in trades). Therefore, assuming a starting balance of 1000, a configuration of `tradable_balance_ratio=0.99` will not guarantee that 10 units will always remain available on the exchange. The free amount may reduce to 5 units if the total balance is reduce to 500 (either by a losing streak, or by withdrawing balance). + The `tradable_balance_ratio` setting applies to the current balance (free balance + tied up in trades). Therefore, assuming the starting balance of 1000, a configuration with `tradable_balance_ratio=0.99` will not guarantee that 10 currency units will always remain available on the exchange. For example, the free amount may reduce to 5 units if the total balance is reduced to 500 (either by a losing streak, or by withdrawing balance). #### Amend last stake amount @@ -162,10 +162,10 @@ In the example above this would mean: - Trade3: 200 USDT !!! Note - This option only applies with [Static stake amount](#static-stake-amount) - since [Dynamic stake amount](#dynamic-stake-amount) divides the balances evenly. + This option only applies with [Static stake amount](#static-stake-amount) - since [Dynamic stake amount](#dynamic-stake-amount) divides the balances evenly. !!! Note - The minimum last stake amount can be configured using `amend_last_stake_amount` - which defaults to 0.5 (50%). This means that the minimum stake-amount that's ever used is `stake_amount * 0.5`. This avoids very low stake-amounts, close to the minimum tradable amount. + The minimum last stake amount can be configured using `amend_last_stake_amount` - which defaults to 0.5 (50%). This means that the minimum stake amount that's ever used is `stake_amount * 0.5`. This avoids very low stake amounts, that are close to the minimum tradable amount for the pair and can be refused by the exchange. #### Static stake amount From 5faebad863a59ed6436fc9351efd93df9908e428 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 11 Jan 2020 11:16:05 +0100 Subject: [PATCH 1483/3421] Don't hardcode TimeFrames - they can differ by exchange. --- freqtrade/constants.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index e9c103db9..598a64337 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -33,12 +33,6 @@ USER_DATA_FILES = { 'strategy_analysis_example.ipynb': 'notebooks', } -TIMEFRAMES = [ - '1m', '3m', '5m', '15m', '30m', - '1h', '2h', '4h', '6h', '8h', '12h', - '1d', '3d', '1w', -] - SUPPORTED_FIAT = [ "AUD", "BRL", "CAD", "CHF", "CLP", "CNY", "CZK", "DKK", "EUR", "GBP", "HKD", "HUF", "IDR", "ILS", "INR", "JPY", @@ -66,7 +60,7 @@ CONF_SCHEMA = { 'type': 'object', 'properties': { 'max_open_trades': {'type': ['integer', 'number'], 'minimum': -1}, - 'ticker_interval': {'type': 'string', 'enum': TIMEFRAMES}, + 'ticker_interval': {'type': 'string'}, 'stake_currency': {'type': 'string', 'enum': ['BTC', 'XBT', 'ETH', 'USDT', 'EUR', 'USD']}, 'stake_amount': { 'type': ['number', 'string'], From 235a10ab860d887342635a45d73d3ce1e9b83871 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 11 Jan 2020 11:36:28 +0100 Subject: [PATCH 1484/3421] Don't suppport <1m timeframes --- freqtrade/exchange/exchange.py | 4 ++++ tests/exchange/test_exchange.py | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 3ef32db62..1ee6c2f1c 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -319,6 +319,10 @@ class Exchange: raise OperationalException( f"Invalid ticker interval '{timeframe}'. This exchange supports: {self.timeframes}") + if timeframe_to_minutes(timeframe) < 1: + raise OperationalException( + f"Timeframes < 1m are currently not supported by Freqtrade.") + def validate_ordertypes(self, order_types: Dict) -> None: """ Checks if order-types configured in strategy/config are supported diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index cb40bdbd9..288c10187 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -377,8 +377,11 @@ def test_validate_pairs_restricted(default_conf, mocker, caplog): f"on the exchange and eventually remove XRP/BTC from your whitelist.", caplog) -def test_validate_timeframes(default_conf, mocker): - default_conf["ticker_interval"] = "5m" +@pytest.mark.parametrize("timeframe", [ + ('5m'), ("1m"), ("15m"), ("1h") +]) +def test_validate_timeframes(default_conf, mocker, timeframe): + default_conf["ticker_interval"] = timeframe api_mock = MagicMock() id_mock = PropertyMock(return_value='test_exchange') type(api_mock).id = id_mock @@ -399,7 +402,8 @@ def test_validate_timeframes_failed(default_conf, mocker): api_mock = MagicMock() id_mock = PropertyMock(return_value='test_exchange') type(api_mock).id = id_mock - timeframes = PropertyMock(return_value={'1m': '1m', + timeframes = PropertyMock(return_value={'15s': '15s', + '1m': '1m', '5m': '5m', '15m': '15m', '1h': '1h'}) @@ -411,6 +415,11 @@ def test_validate_timeframes_failed(default_conf, mocker): with pytest.raises(OperationalException, match=r"Invalid ticker interval '3m'. This exchange supports.*"): Exchange(default_conf) + default_conf["ticker_interval"] = "15s" + + with pytest.raises(OperationalException, + match=r"Timeframes < 1m are currently not supported by Freqtrade."): + Exchange(default_conf) def test_validate_timeframes_emulated_ohlcv_1(default_conf, mocker): From 13274964a94a38975e66b8963c1c5622a7cec022 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 11 Jan 2020 11:53:44 +0100 Subject: [PATCH 1485/3421] Implement validation for valid stake currency --- freqtrade/constants.py | 2 +- freqtrade/exchange/exchange.py | 25 +++++++++++++++++++++++-- tests/conftest.py | 1 + 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 598a64337..53bc4af53 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -61,7 +61,7 @@ CONF_SCHEMA = { 'properties': { 'max_open_trades': {'type': ['integer', 'number'], 'minimum': -1}, 'ticker_interval': {'type': 'string'}, - 'stake_currency': {'type': 'string', 'enum': ['BTC', 'XBT', 'ETH', 'USDT', 'EUR', 'USD']}, + 'stake_currency': {'type': 'string'}, 'stake_amount': { 'type': ['number', 'string'], 'minimum': 0.0001, diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 1ee6c2f1c..e15f6885c 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -116,6 +116,7 @@ class Exchange: self._load_markets() # Check if all pairs are available + self.validate_stakecurrency(config['stake_currency']) self.validate_pairs(config['exchange']['pair_whitelist']) self.validate_ordertypes(config.get('order_types', {})) self.validate_order_time_in_force(config.get('order_time_in_force', {})) @@ -210,6 +211,14 @@ class Exchange: markets = {k: v for k, v in markets.items() if market_is_active(v)} return markets + def get_quote_currencies(self) -> List[str]: + """ + Return a list of supported quote currencies + """ + markets = self.markets + currencies = set([x['quote'] for _, x in markets.items()]) + return list(currencies) + def klines(self, pair_interval: Tuple[str, str], copy=True) -> DataFrame: if pair_interval in self._klines: return self._klines[pair_interval].copy() if copy else self._klines[pair_interval] @@ -259,11 +268,23 @@ class Exchange: except ccxt.BaseError: logger.exception("Could not reload markets.") + def validate_stakecurrency(self, stake_currency) -> None: + """ + Checks stake-currency against available currencies on the exchange. + :param stake_currency: Stake-currency to validate + :raise: OperationalException if stake-currency is not available. + """ + quote_currencies = self.get_quote_currencies() + if stake_currency not in quote_currencies: + raise OperationalException( + f"{stake_currency} is not available as stake on {self.name}." + f"Available currencies are: {','.join(quote_currencies)}") + def validate_pairs(self, pairs: List[str]) -> None: """ Checks if all given pairs are tradable on the current exchange. - Raises OperationalException if one pair is not available. :param pairs: list of pairs + :raise: OperationalException if one pair is not available :return: None """ @@ -319,7 +340,7 @@ class Exchange: raise OperationalException( f"Invalid ticker interval '{timeframe}'. This exchange supports: {self.timeframes}") - if timeframe_to_minutes(timeframe) < 1: + if timeframe and timeframe_to_minutes(timeframe) < 1: raise OperationalException( f"Timeframes < 1m are currently not supported by Freqtrade.") diff --git a/tests/conftest.py b/tests/conftest.py index 7bb4cf4c9..ac1b10284 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -60,6 +60,7 @@ def patch_exchange(mocker, api_mock=None, id='bittrex', mock_markets=True) -> No mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) mocker.patch('freqtrade.exchange.Exchange.validate_ordertypes', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency', MagicMock()) mocker.patch('freqtrade.exchange.Exchange.id', PropertyMock(return_value=id)) mocker.patch('freqtrade.exchange.Exchange.name', PropertyMock(return_value=id.title())) if mock_markets: From ca2880537d6a95bdee468aa4bb0f1463e3ab8d1c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 11 Jan 2020 11:54:11 +0100 Subject: [PATCH 1486/3421] Modify tests to skip stake_currency validations --- tests/exchange/test_exchange.py | 66 ++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 25 deletions(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 288c10187..bd73a98de 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -73,6 +73,7 @@ def test_init(default_conf, mocker, caplog): def test_init_ccxt_kwargs(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={})) + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') caplog.set_level(logging.INFO) conf = copy.deepcopy(default_conf) conf['exchange']['ccxt_async_config'] = {'aiohttp_trust_env': True} @@ -121,9 +122,10 @@ def test_init_exception(default_conf, mocker): def test_exchange_resolver(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=MagicMock())) - mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) - mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) - mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') + mocker.patch('freqtrade.exchange.Exchange.validate_pairs') + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') exchange = ExchangeResolver.load_exchange('Bittrex', default_conf) assert isinstance(exchange, Exchange) assert log_has_re(r"No .* specific subclass found. Using the generic class instead.", caplog) @@ -257,9 +259,10 @@ def test__load_markets(default_conf, mocker, caplog): api_mock = MagicMock() api_mock.load_markets = MagicMock(side_effect=ccxt.BaseError("SomeError")) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) - mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) - mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) - mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_pairs') + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) assert log_has('Unable to initialize markets. Reason: SomeError', caplog) @@ -324,8 +327,9 @@ def test_validate_pairs(default_conf, mocker): # test exchange.validate_pairs d type(api_mock).id = id_mock mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) - mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) - mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) @@ -335,8 +339,9 @@ def test_validate_pairs_not_available(default_conf, mocker): 'XRP/BTC': {'inactive': True} }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) - mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) - mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') with pytest.raises(OperationalException, match=r'not available'): Exchange(default_conf) @@ -349,8 +354,9 @@ def test_validate_pairs_exception(default_conf, mocker, caplog): type(api_mock).markets = PropertyMock(return_value={}) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', api_mock) - mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) - mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') with pytest.raises(OperationalException, match=r'Pair ETH/BTC is not available on Binance'): Exchange(default_conf) @@ -368,8 +374,9 @@ def test_validate_pairs_restricted(default_conf, mocker, caplog): 'NEO/BTC': {'info': 'TestString'}, # info can also be a string ... }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) - mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) - mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) assert log_has(f"Pair XRP/BTC is restricted for some users on this exchange." @@ -393,7 +400,8 @@ def test_validate_timeframes(default_conf, mocker, timeframe): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={})) - mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_pairs') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) @@ -433,7 +441,8 @@ def test_validate_timeframes_emulated_ohlcv_1(default_conf, mocker): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={})) - mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_pairs') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') with pytest.raises(OperationalException, match=r'The ccxt library does not provide the list of timeframes ' r'for the exchange ".*" and this exchange ' @@ -454,6 +463,7 @@ def test_validate_timeframes_emulated_ohlcvi_2(default_conf, mocker): mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={'timeframes': None})) mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') with pytest.raises(OperationalException, match=r'The ccxt library does not provide the list of timeframes ' r'for the exchange ".*" and this exchange ' @@ -474,7 +484,8 @@ def test_validate_timeframes_not_in_config(default_conf, mocker): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={})) - mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_pairs') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) @@ -484,8 +495,9 @@ def test_validate_order_types(default_conf, mocker): type(api_mock).has = PropertyMock(return_value={'createMarketOrder': True}) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={})) - mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) - mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_pairs') + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') mocker.patch('freqtrade.exchange.Exchange.name', 'Bittrex') default_conf['order_types'] = { 'buy': 'limit', @@ -526,8 +538,9 @@ def test_validate_order_types_not_in_config(default_conf, mocker): api_mock = MagicMock() mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={})) - mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) - mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_pairs') + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') conf = copy.deepcopy(default_conf) Exchange(conf) @@ -538,9 +551,10 @@ def test_validate_required_startup_candles(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange.name', PropertyMock(return_value='Binance')) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', api_mock) - mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) - mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock()) - mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') + mocker.patch('freqtrade.exchange.Exchange.validate_pairs') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') default_conf['startup_candle_count'] = 20 ex = Exchange(default_conf) @@ -1674,7 +1688,9 @@ def test_merge_ft_has_dict(default_conf, mocker): _init_ccxt=MagicMock(return_value=MagicMock()), _load_async_markets=MagicMock(), validate_pairs=MagicMock(), - validate_timeframes=MagicMock()) + validate_timeframes=MagicMock(), + validate_stakecurrency=MagicMock() + ) ex = Exchange(default_conf) assert ex._ft_has == Exchange._ft_has_default From 60b47b6eeca7ae9267bbdd951bebda9f6235240c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 11 Jan 2020 12:01:34 +0100 Subject: [PATCH 1487/3421] Add tests for get_quote_currencies --- freqtrade/exchange/exchange.py | 2 +- tests/exchange/test_exchange.py | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index e15f6885c..a5c10776c 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -216,7 +216,7 @@ class Exchange: Return a list of supported quote currencies """ markets = self.markets - currencies = set([x['quote'] for _, x in markets.items()]) + currencies = set([x.get('quote') for _, x in markets.items()]) return list(currencies) def klines(self, pair_interval: Tuple[str, str], copy=True) -> DataFrame: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index bd73a98de..5924d4b40 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -318,6 +318,27 @@ def test__reload_markets_exception(default_conf, mocker, caplog): assert log_has_re(r"Could not reload markets.*", caplog) +@pytest.mark.parametrize("stake_currency", ['ETH', 'BTC', 'USDT']) +def test_validate_stake_currency(default_conf, stake_currency, mocker, caplog): + default_conf['stake_currency'] = stake_currency + api_mock = MagicMock() + type(api_mock).markets = PropertyMock(return_value={ + 'ETH/BTC': {'quote': 'BTC'}, 'LTC/BTC': {'quote': 'BTC'}, + 'XRP/ETH': {'quote': 'ETH'}, 'NEO/USDT': {'quote': 'USDT'}, + }) + mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) + mocker.patch('freqtrade.exchange.Exchange.validate_pairs') + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') + Exchange(default_conf) + + +def test_get_quote_currencies(default_conf, mocker): + ex = get_patched_exchange(mocker, default_conf) + + assert set(ex.get_quote_currencies()) == set(['USD', 'BTC', 'USDT']) + + def test_validate_pairs(default_conf, mocker): # test exchange.validate_pairs directly api_mock = MagicMock() type(api_mock).markets = PropertyMock(return_value={ From a7246ba1ecfd96f12e1fd2bbe252b569e12ed872 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 11 Jan 2020 12:51:42 +0100 Subject: [PATCH 1488/3421] No need to "fix" stake_currency enum anymore --- freqtrade/configuration/config_validation.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 54941043d..5183ad0b4 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -48,11 +48,6 @@ def validate_config_schema(conf: Dict[str, Any]) -> Dict[str, Any]: conf_schema['required'] = constants.SCHEMA_TRADE_REQUIRED else: conf_schema['required'] = constants.SCHEMA_MINIMAL_REQUIRED - # Dynamically allow empty stake-currency - # Since the minimal config specifies this too. - # It's not allowed for Dry-run or live modes - conf_schema['properties']['stake_currency']['enum'] += [''] # type: ignore - try: FreqtradeValidator(conf_schema).validate(conf) return conf From 3519cebf66e31aa799ae9422ab31e17c20153844 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 11 Jan 2020 13:14:19 +0100 Subject: [PATCH 1489/3421] Add test for failing stake_validation --- freqtrade/exchange/exchange.py | 9 +++++---- tests/exchange/test_exchange.py | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index a5c10776c..3735dac8a 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -216,8 +216,9 @@ class Exchange: Return a list of supported quote currencies """ markets = self.markets - currencies = set([x.get('quote') for _, x in markets.items()]) - return list(currencies) + currencies = list(set([x.get('quote') for _, x in markets.items()])) + currencies.sort() + return currencies def klines(self, pair_interval: Tuple[str, str], copy=True) -> DataFrame: if pair_interval in self._klines: @@ -277,8 +278,8 @@ class Exchange: quote_currencies = self.get_quote_currencies() if stake_currency not in quote_currencies: raise OperationalException( - f"{stake_currency} is not available as stake on {self.name}." - f"Available currencies are: {','.join(quote_currencies)}") + f"{stake_currency} is not available as stake on {self.name}. " + f"Available currencies are: {', '.join(quote_currencies)}") def validate_pairs(self, pairs: List[str]) -> None: """ diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 5924d4b40..150ba3ea7 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -333,6 +333,23 @@ def test_validate_stake_currency(default_conf, stake_currency, mocker, caplog): Exchange(default_conf) +def test_validate_stake_currency_error(default_conf, mocker, caplog): + default_conf['stake_currency'] = 'XRP' + api_mock = MagicMock() + type(api_mock).markets = PropertyMock(return_value={ + 'ETH/BTC': {'quote': 'BTC'}, 'LTC/BTC': {'quote': 'BTC'}, + 'XRP/ETH': {'quote': 'ETH'}, 'NEO/USDT': {'quote': 'USDT'}, + }) + mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) + mocker.patch('freqtrade.exchange.Exchange.validate_pairs') + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') + with pytest.raises(OperationalException, + match=r'XRP is not available as stake on .*' + 'Available currencies are: BTC, ETH, USDT'): + Exchange(default_conf) + + def test_get_quote_currencies(default_conf, mocker): ex = get_patched_exchange(mocker, default_conf) From 53abfdbcbf032de93994fb2965b6d0192660df6a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Jan 2020 12:48:29 +0100 Subject: [PATCH 1490/3421] Use sorted on set instead of explicit list conversion --- freqtrade/exchange/exchange.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 3735dac8a..714bb40e4 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -216,9 +216,7 @@ class Exchange: Return a list of supported quote currencies """ markets = self.markets - currencies = list(set([x.get('quote') for _, x in markets.items()])) - currencies.sort() - return currencies + return sorted(set([x['quote'] for _, x in markets.items()])) def klines(self, pair_interval: Tuple[str, str], copy=True) -> DataFrame: if pair_interval in self._klines: From fa1f9bcdbd697274c50489a06c7c42e586db4999 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Jan 2020 14:37:45 +0100 Subject: [PATCH 1491/3421] expose precisionMode from exchange class --- freqtrade/exchange/exchange.py | 5 +++++ tests/conftest.py | 1 + 2 files changed, 6 insertions(+) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 3ef32db62..f29bc3c6f 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -188,6 +188,11 @@ class Exchange: self._load_markets() return self._api.markets + @property + def precisionMode(self) -> str: + """exchange ccxt precisionMode""" + return self._api.precisionMode + def get_markets(self, base_currencies: List[str] = None, quote_currencies: List[str] = None, pairs_only: bool = False, active_only: bool = False) -> Dict: """ diff --git a/tests/conftest.py b/tests/conftest.py index 7bb4cf4c9..ec53141c1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -62,6 +62,7 @@ def patch_exchange(mocker, api_mock=None, id='bittrex', mock_markets=True) -> No mocker.patch('freqtrade.exchange.Exchange.validate_ordertypes', MagicMock()) mocker.patch('freqtrade.exchange.Exchange.id', PropertyMock(return_value=id)) mocker.patch('freqtrade.exchange.Exchange.name', PropertyMock(return_value=id.title())) + mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=2)) if mock_markets: mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=get_markets())) From b60d7ad42fde62614c934abf14931b1103b04962 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Jan 2020 14:40:58 +0100 Subject: [PATCH 1492/3421] Use ccxt.decimal_to_precision instead of our own calculation --- freqtrade/exchange/exchange.py | 24 ++++++++++++++---------- tests/exchange/test_exchange.py | 19 +++++++++++++++++++ 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index f29bc3c6f..e1b5c411d 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -7,14 +7,15 @@ import inspect import logging from copy import deepcopy from datetime import datetime, timezone -from math import ceil, floor +from math import ceil from random import randint from typing import Any, Dict, List, Optional, Tuple import arrow import ccxt import ccxt.async_support as ccxt_async -from ccxt.base.decimal_to_precision import ROUND_DOWN, ROUND_UP +from ccxt.base.decimal_to_precision import (ROUND, ROUND_DOWN, ROUND_UP, + TRUNCATE, decimal_to_precision) from pandas import DataFrame from freqtrade.data.converter import parse_ticker_dataframe @@ -367,26 +368,29 @@ class Exchange: """ return endpoint in self._api.has and self._api.has[endpoint] - def symbol_amount_prec(self, pair, amount: float): + def symbol_amount_prec(self, pair, amount: float) -> float: ''' Returns the amount to buy or sell to a precision the Exchange accepts Rounded down ''' if self.markets[pair]['precision']['amount']: - symbol_prec = self.markets[pair]['precision']['amount'] - big_amount = amount * pow(10, symbol_prec) - amount = floor(big_amount) / pow(10, symbol_prec) + amount = float(decimal_to_precision(amount, rounding_mode=TRUNCATE, + precision=self.markets[pair]['precision']['amount'], + counting_mode=self.precisionMode, + )) + return amount - def symbol_price_prec(self, pair, price: float): + def symbol_price_prec(self, pair, price: float) -> float: ''' Returns the price buying or selling with to the precision the Exchange accepts Rounds up ''' if self.markets[pair]['precision']['price']: - symbol_prec = self.markets[pair]['precision']['price'] - big_price = price * pow(10, symbol_prec) - price = ceil(big_price) / pow(10, symbol_prec) + price = float(decimal_to_precision(price, rounding_mode=ROUND, + precision=self.markets[pair]['precision']['price'], + counting_mode=self.precisionMode, + )) return price def dry_run_order(self, pair: str, ordertype: str, side: str, amount: float, diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index cb40bdbd9..b90e94547 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -181,6 +181,11 @@ def test_symbol_amount_prec(default_conf, mocker): markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'amount': 4}}}) exchange = get_patched_exchange(mocker, default_conf, id="binance") + # digits counting mode + # DECIMAL_PLACES = 2 + # SIGNIFICANT_DIGITS = 3 + # TICK_SIZE = 4 + mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=2)) mocker.patch('freqtrade.exchange.Exchange.markets', markets) amount = 2.34559 @@ -188,6 +193,12 @@ def test_symbol_amount_prec(default_conf, mocker): amount = exchange.symbol_amount_prec(pair, amount) assert amount == 2.3455 + markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'amount': 0.0001}}}) + mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=4)) + mocker.patch('freqtrade.exchange.Exchange.markets', markets) + amount = exchange.symbol_amount_prec(pair, amount) + assert amount == 2.3455 + def test_symbol_price_prec(default_conf, mocker): ''' @@ -197,12 +208,20 @@ def test_symbol_price_prec(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, id="binance") mocker.patch('freqtrade.exchange.Exchange.markets', markets) + mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=2)) price = 2.34559 pair = 'ETH/BTC' price = exchange.symbol_price_prec(pair, price) assert price == 2.3456 + markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'price': 0.0001}}}) + mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=4)) + mocker.patch('freqtrade.exchange.Exchange.markets', markets) + + price = exchange.symbol_price_prec(pair, price) + assert price == 2.3456 + def test_set_sandbox(default_conf, mocker): """ From 5fcab1eee8efce5bfa17d43f70542da65dcc4449 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Jan 2020 14:55:05 +0100 Subject: [PATCH 1493/3421] Align method names to internal ccxt names These methods are reimplemented from ccxt so we can test their behaviour. --- freqtrade/exchange/binance.py | 6 ++--- freqtrade/exchange/exchange.py | 19 ++++++++-------- freqtrade/pairlist/PrecisionFilter.py | 4 ++-- tests/exchange/test_binance.py | 8 +++---- tests/exchange/test_exchange.py | 32 +++++++++++++-------------- tests/exchange/test_kraken.py | 8 +++---- tests/test_freqtradebot.py | 8 +++---- tests/test_integration.py | 8 +++---- 8 files changed, 47 insertions(+), 46 deletions(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 96f72fcf5..12326f083 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -41,7 +41,7 @@ class Binance(Exchange): """ ordertype = "stop_loss_limit" - stop_price = self.symbol_price_prec(pair, stop_price) + stop_price = self.price_to_precision(pair, stop_price) # Ensure rate is less than stop price if stop_price <= rate: @@ -57,9 +57,9 @@ class Binance(Exchange): params = self._params.copy() params.update({'stopPrice': stop_price}) - amount = self.symbol_amount_prec(pair, amount) + amount = self.amount_to_precision(pair, amount) - rate = self.symbol_price_prec(pair, rate) + rate = self.price_to_precision(pair, rate) order = self._api.create_order(pair, ordertype, 'sell', amount, rate, params) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index e1b5c411d..dd6f257fe 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -7,7 +7,6 @@ import inspect import logging from copy import deepcopy from datetime import datetime, timezone -from math import ceil from random import randint from typing import Any, Dict, List, Optional, Tuple @@ -368,10 +367,11 @@ class Exchange: """ return endpoint in self._api.has and self._api.has[endpoint] - def symbol_amount_prec(self, pair, amount: float) -> float: + def amount_to_precision(self, pair, amount: float) -> float: ''' Returns the amount to buy or sell to a precision the Exchange accepts - Rounded down + Reimplementation of ccxt internal methods - ensuring we can test the result is correct + based on our definitions. ''' if self.markets[pair]['precision']['amount']: amount = float(decimal_to_precision(amount, rounding_mode=TRUNCATE, @@ -381,10 +381,11 @@ class Exchange: return amount - def symbol_price_prec(self, pair, price: float) -> float: + def price_to_precision(self, pair, price: float) -> float: ''' Returns the price buying or selling with to the precision the Exchange accepts - Rounds up + Reimplementation of ccxt internal methods - ensuring we can test the result is correct + based on our definitions. ''' if self.markets[pair]['precision']['price']: price = float(decimal_to_precision(price, rounding_mode=ROUND, @@ -396,7 +397,7 @@ class Exchange: def dry_run_order(self, pair: str, ordertype: str, side: str, amount: float, rate: float, params: Dict = {}) -> Dict[str, Any]: order_id = f'dry_run_{side}_{randint(0, 10**6)}' - _amount = self.symbol_amount_prec(pair, amount) + _amount = self.amount_to_precision(pair, amount) dry_order = { "id": order_id, 'pair': pair, @@ -431,13 +432,13 @@ class Exchange: rate: float, params: Dict = {}) -> Dict: try: # Set the precision for amount and price(rate) as accepted by the exchange - amount = self.symbol_amount_prec(pair, amount) + amount = self.amount_to_precision(pair, amount) needs_price = (ordertype != 'market' or self._api.options.get("createMarketBuyOrderRequiresPrice", False)) - rate = self.symbol_price_prec(pair, rate) if needs_price else None + rate_for_order = self.price_to_precision(pair, rate) if needs_price else None return self._api.create_order(pair, ordertype, side, - amount, rate, params) + amount, rate_for_order, params) except ccxt.InsufficientFunds as e: raise DependencyException( diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index aedcc5a88..5d364795d 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -35,8 +35,8 @@ class PrecisionFilter(IPairList): """ stop_price = ticker['ask'] * stoploss # Adjust stop-prices to precision - sp = self._exchange.symbol_price_prec(ticker["symbol"], stop_price) - stop_gap_price = self._exchange.symbol_price_prec(ticker["symbol"], stop_price * 0.99) + sp = self._exchange.price_to_precision(ticker["symbol"], stop_price) + stop_gap_price = self._exchange.price_to_precision(ticker["symbol"], stop_price * 0.99) logger.debug(f"{ticker['symbol']} - {sp} : {stop_gap_price}") if sp <= stop_gap_price: logger.info(f"Removed {ticker['symbol']} from whitelist, " diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index 0a12c1cb1..4bc918c3d 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -22,8 +22,8 @@ def test_stoploss_limit_order(default_conf, mocker): }) default_conf['dry_run'] = False - mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) - mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') @@ -71,8 +71,8 @@ def test_stoploss_limit_order_dry_run(default_conf, mocker): api_mock = MagicMock() order_type = 'stop_loss_limit' default_conf['dry_run'] = True - mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) - mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index b90e94547..d666d29ac 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -173,7 +173,7 @@ def test_validate_order_time_in_force(default_conf, mocker, caplog): ex.validate_order_time_in_force(tif2) -def test_symbol_amount_prec(default_conf, mocker): +def test_amount_to_precision(default_conf, mocker): ''' Test rounds down to 4 Decimal places ''' @@ -190,17 +190,17 @@ def test_symbol_amount_prec(default_conf, mocker): amount = 2.34559 pair = 'ETH/BTC' - amount = exchange.symbol_amount_prec(pair, amount) + amount = exchange.amount_to_precision(pair, amount) assert amount == 2.3455 markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'amount': 0.0001}}}) mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=4)) mocker.patch('freqtrade.exchange.Exchange.markets', markets) - amount = exchange.symbol_amount_prec(pair, amount) + amount = exchange.amount_to_precision(pair, amount) assert amount == 2.3455 -def test_symbol_price_prec(default_conf, mocker): +def test_sprice_to_precision(default_conf, mocker): ''' Test rounds up to 4 decimal places ''' @@ -212,14 +212,14 @@ def test_symbol_price_prec(default_conf, mocker): price = 2.34559 pair = 'ETH/BTC' - price = exchange.symbol_price_prec(pair, price) + price = exchange.price_to_precision(pair, price) assert price == 2.3456 markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'price': 0.0001}}}) mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=4)) mocker.patch('freqtrade.exchange.Exchange.markets', markets) - price = exchange.symbol_price_prec(pair, price) + price = exchange.price_to_precision(pair, price) assert price == 2.3456 @@ -615,8 +615,8 @@ def test_create_order(default_conf, mocker, side, ordertype, rate, marketprice, } }) default_conf['dry_run'] = False - mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) - mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) order = exchange.create_order( @@ -656,8 +656,8 @@ def test_buy_prod(default_conf, mocker, exchange_name): } }) default_conf['dry_run'] = False - mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) - mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) order = exchange.buy(pair='ETH/BTC', ordertype=order_type, @@ -730,8 +730,8 @@ def test_buy_considers_time_in_force(default_conf, mocker, exchange_name): } }) default_conf['dry_run'] = False - mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) - mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) order_type = 'limit' @@ -792,8 +792,8 @@ def test_sell_prod(default_conf, mocker, exchange_name): }) default_conf['dry_run'] = False - mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) - mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) order = exchange.sell(pair='ETH/BTC', ordertype=order_type, amount=1, rate=200) @@ -856,8 +856,8 @@ def test_sell_considers_time_in_force(default_conf, mocker, exchange_name): }) api_mock.options = {} default_conf['dry_run'] = False - mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) - mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) order_type = 'limit' diff --git a/tests/exchange/test_kraken.py b/tests/exchange/test_kraken.py index 3ad62d85a..8490ee1a2 100644 --- a/tests/exchange/test_kraken.py +++ b/tests/exchange/test_kraken.py @@ -21,8 +21,8 @@ def test_buy_kraken_trading_agreement(default_conf, mocker): }) default_conf['dry_run'] = False - mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) - mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) exchange = get_patched_exchange(mocker, default_conf, api_mock, id="kraken") order = exchange.buy(pair='ETH/BTC', ordertype=order_type, @@ -53,8 +53,8 @@ def test_sell_kraken_trading_agreement(default_conf, mocker): }) default_conf['dry_run'] = False - mocker.patch('freqtrade.exchange.Exchange.symbol_amount_prec', lambda s, x, y: y) - mocker.patch('freqtrade.exchange.Exchange.symbol_price_prec', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) exchange = get_patched_exchange(mocker, default_conf, api_mock, id="kraken") order = exchange.sell(pair='ETH/BTC', ordertype=order_type, amount=1, rate=200) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 58f88198a..5267a267b 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2435,8 +2435,8 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, ticker, fee, ticke 'freqtrade.exchange.Exchange', fetch_ticker=ticker, get_fee=fee, - symbol_amount_prec=lambda s, x, y: y, - symbol_price_prec=lambda s, x, y: y, + amount_to_precision=lambda s, x, y: y, + price_to_precision=lambda s, x, y: y, stoploss_limit=stoploss_limit, cancel_order=cancel_order, ) @@ -2478,8 +2478,8 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, f 'freqtrade.exchange.Exchange', fetch_ticker=ticker, get_fee=fee, - symbol_amount_prec=lambda s, x, y: y, - symbol_price_prec=lambda s, x, y: y, + amount_to_precision=lambda s, x, y: y, + price_to_precision=lambda s, x, y: y, ) stoploss_limit = MagicMock(return_value={ diff --git a/tests/test_integration.py b/tests/test_integration.py index 98bf1862b..2b4a1b946 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -58,8 +58,8 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, 'freqtrade.exchange.Exchange', fetch_ticker=ticker, get_fee=fee, - symbol_amount_prec=lambda s, x, y: y, - symbol_price_prec=lambda s, x, y: y, + amount_to_precision=lambda s, x, y: y, + price_to_precision=lambda s, x, y: y, get_order=stoploss_order_mock, cancel_order=cancel_order_mock, ) @@ -137,8 +137,8 @@ def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, moc 'freqtrade.exchange.Exchange', fetch_ticker=ticker, get_fee=fee, - symbol_amount_prec=lambda s, x, y: y, - symbol_price_prec=lambda s, x, y: y, + amount_to_precision=lambda s, x, y: y, + price_to_precision=lambda s, x, y: y, ) mocker.patch.multiple( From 495728f50215b19bc9ba165b0df10f0a76411898 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 13 Jan 2020 06:31:15 +0300 Subject: [PATCH 1494/3421] Refine docs --- docs/plotting.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/plotting.md b/docs/plotting.md index 2f084b66a..bc4ca8ae0 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -124,34 +124,34 @@ freqtrade plot-dataframe --strategy AwesomeStrategy --export-filename user_data/ ![plot-dataframe2](assets/plot-dataframe2.png) -plot-dataframe will require backtesting data, a strategy as well as either a backtesting-results file or a Database file, containing trades corresponding to the strategy. +The plot-dataframe subcommand requires backtesting data, a strategy and either a backtesting-results file or a database, containing trades corresponding to the strategy. The resulting plot will have the following elements: -* Green triangles: Buy signals from the strategy. (Note: not every Buy-signal also generates a trade) -* Red triangles: Sell signals from the strategy. -* Cyan Circles: Trade entry -* Red Square: Trade exit for loss or 0% profit -* Green Square: Trade exit for profit -* Indicators corresponding to the candle scale (e.g. SMA/EMA), as specified with `--indicators1`. -* Indicators with different scales (e.g. MACD, RSI) below the volume bars, as specified via `--indicators2`. -* Volume (bar chart at the bottom of the main chart) +* Green triangles: Buy signals from the strategy. (Note: not every buy signal generates a trade, compare to cyan circles.) +* Red triangles: Sell signals from the strategy. (Also, not every sell signal terminates a trade, compare to red and green squares.) +* Cyan circles: Trade entry points. +* Red squares: Trade exit points for trades with loss or 0% profit. +* Green squares: Trade exit points for profitable trades. +* Indicators with values corresponding to the candle scale (e.g. SMA/EMA), as specified with `--indicators1`. +* Volume (bar chart at the bottom of the main chart). +* Indicators with values in different scales (e.g. MACD, RSI) below the volume bars, as specified with `--indicators2`. !!! Note "Bollinger Bands" - Bollinger bands are automatically added to the plot if the columns `bb_lowerband` and `bb_upperband` exist, and are painted as a light blue Area spanning from the lower band to the upper band. + Bollinger bands are automatically added to the plot if the columns `bb_lowerband` and `bb_upperband` exist, and are painted as a light blue area spanning from the lower band to the upper band. -#### Advanced Plot configuration +#### Advanced plot configuration -An advanced plot-configuration can be specified in the strategy. +An advanced plot configuration can be specified in the strategy in the `plot_config` parameter. -This configuration allows to specify fixed colors (otherwise consecutive plots may produce different colorschemes each time, making comparisons diffiult.). -It also allows multiple subplots to display both MACD and RSI at the same time. - -Additional features when using plot_config: +Additional features when using plot_config include: * Specify colors per indicator * Specify additional subplots +The sample plot configuration below specifies fixed colors for the indicators. Otherwise consecutive plots may produce different colorschemes each time, making comparisons difficult. +It also allows multiple subplots to display both MACD and RSI at the same time. + Sample configuration with inline comments explaining the process: ``` python From af366357698e24742219d7ff2ed18d65fe382be3 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 13 Jan 2020 06:36:05 +0300 Subject: [PATCH 1495/3421] Minor changes in the docs --- docs/plotting.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/plotting.md b/docs/plotting.md index bc4ca8ae0..ecd5e1603 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -124,7 +124,7 @@ freqtrade plot-dataframe --strategy AwesomeStrategy --export-filename user_data/ ![plot-dataframe2](assets/plot-dataframe2.png) -The plot-dataframe subcommand requires backtesting data, a strategy and either a backtesting-results file or a database, containing trades corresponding to the strategy. +The `plot-dataframe` subcommand requires backtesting data, a strategy and either a backtesting-results file or a database, containing trades corresponding to the strategy. The resulting plot will have the following elements: @@ -185,12 +185,12 @@ Sample configuration with inline comments explaining the process: ![plot-profit](assets/plot-profit.png) -The `freqtrade plot-profit` subcommand shows an interactive graph with three plots: +The `plot-profit` subcommand shows an interactive graph with three plots: -1) Average closing price for all pairs -2) The summarized profit made by backtesting. - Note that this is not the real-world profit, but more of an estimate. -3) Profit for each individual pair +* Average closing price for all pairs. +* The summarized profit made by backtesting. +Note that this is not the real-world profit, but more of an estimate. +* Profit for each individual pair. The first graph is good to get a grip of how the overall market progresses. From 2f8ed7ed191b02fca21b138b26d1cda8f02eb44f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2020 07:55:35 +0000 Subject: [PATCH 1496/3421] Bump numpy from 1.18.0 to 1.18.1 Bumps [numpy](https://github.com/numpy/numpy) from 1.18.0 to 1.18.1. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.18.0...v1.18.1) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e0e2942b1..c7dd07ee4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Load common requirements -r requirements-common.txt -numpy==1.18.0 +numpy==1.18.1 pandas==0.25.3 From b3938a86c3b5961c66c33eb3e1b45e3c22056f62 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2020 07:56:20 +0000 Subject: [PATCH 1497/3421] Bump python-telegram-bot from 12.2.0 to 12.3.0 Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.2.0 to 12.3.0. - [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases) - [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst) - [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.2.0...v12.3.0) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index c10536603..dc693a25f 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -2,7 +2,7 @@ # mainly used for Raspberry pi installs ccxt==1.21.32 SQLAlchemy==1.3.12 -python-telegram-bot==12.2.0 +python-telegram-bot==12.3.0 arrow==0.15.5 cachetools==4.0.0 requests==2.22.0 From c67b2530999cd95c4d3b8155b6fee4ac4d5c0b5c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2020 10:38:34 +0000 Subject: [PATCH 1498/3421] Bump ccxt from 1.21.32 to 1.21.56 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.21.32 to 1.21.56. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.21.32...1.21.56) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index dc693a25f..15a9d687f 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.21.32 +ccxt==1.21.56 SQLAlchemy==1.3.12 python-telegram-bot==12.3.0 arrow==0.15.5 From 797dc8a4dacf526e859af144d501d1732f935ca5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Jan 2020 15:54:53 +0100 Subject: [PATCH 1499/3421] Add more detailed tests for amount_to_precision --- tests/exchange/test_exchange.py | 45 ++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index d666d29ac..379e7d091 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -173,12 +173,19 @@ def test_validate_order_time_in_force(default_conf, mocker, caplog): ex.validate_order_time_in_force(tif2) -def test_amount_to_precision(default_conf, mocker): +@pytest.mark.parametrize("amount,precision,expected", [ + (2.34559, 4, 2.3455), + (2.34559, 5, 2.34559), + (2.34559, 3, 2.345), + (2.9999, 3, 2.999), + (2.9909, 3, 2.990), +]) +def test_amount_to_precision_decimal_places(default_conf, mocker, amount, precision, expected): ''' - Test rounds down to 4 Decimal places + Test rounds down ''' - markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'amount': 4}}}) + markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'amount': precision}}}) exchange = get_patched_exchange(mocker, default_conf, id="binance") # digits counting mode @@ -188,16 +195,36 @@ def test_amount_to_precision(default_conf, mocker): mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=2)) mocker.patch('freqtrade.exchange.Exchange.markets', markets) - amount = 2.34559 pair = 'ETH/BTC' - amount = exchange.amount_to_precision(pair, amount) - assert amount == 2.3455 + assert exchange.amount_to_precision(pair, amount) == expected - markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'amount': 0.0001}}}) + +@pytest.mark.parametrize("amount,precision,expected", [ + (2.34559, 0.0001, 2.3455), + (2.34559, 0.00001, 2.34559), + (2.34559, 0.001, 2.345), + (2.9999, 0.001, 2.999), + (2.9909, 0.001, 2.990), + (2.9909, 0.005, 2.990), + (2.9999, 0.005, 2.995), +]) +def test_amount_to_precision_tick_size(default_conf, mocker, amount, precision, expected): + ''' + Test rounds down + ''' + + markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'amount': precision}}}) + + exchange = get_patched_exchange(mocker, default_conf, id="binance") + # digits counting mode + # DECIMAL_PLACES = 2 + # SIGNIFICANT_DIGITS = 3 + # TICK_SIZE = 4 mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=4)) mocker.patch('freqtrade.exchange.Exchange.markets', markets) - amount = exchange.amount_to_precision(pair, amount) - assert amount == 2.3455 + + pair = 'ETH/BTC' + assert exchange.amount_to_precision(pair, amount) == expected def test_sprice_to_precision(default_conf, mocker): From 425ec53b28ec7d4b463f2f36b6b6c97fa10a99e8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Jan 2020 16:01:35 +0100 Subject: [PATCH 1500/3421] Combine amount_to_precision tests into one --- tests/exchange/test_exchange.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 379e7d091..a131aaab5 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -173,14 +173,22 @@ def test_validate_order_time_in_force(default_conf, mocker, caplog): ex.validate_order_time_in_force(tif2) -@pytest.mark.parametrize("amount,precision,expected", [ - (2.34559, 4, 2.3455), - (2.34559, 5, 2.34559), - (2.34559, 3, 2.345), - (2.9999, 3, 2.999), - (2.9909, 3, 2.990), +@pytest.mark.parametrize("amount,precision_mode,precision,expected", [ + (2.34559, 2, 4, 2.3455), + (2.34559, 2, 5, 2.34559), + (2.34559, 2, 3, 2.345), + (2.9999, 2, 3, 2.999), + (2.9909, 2, 3, 2.990), + # Tests for Tick-size + (2.34559, 4, 0.0001, 2.3455), + (2.34559, 4, 0.00001, 2.34559), + (2.34559, 4, 0.001, 2.345), + (2.9999, 4, 0.001, 2.999), + (2.9909, 4, 0.001, 2.990), + (2.9909, 4, 0.005, 2.990), + (2.9999, 4, 0.005, 2.995), ]) -def test_amount_to_precision_decimal_places(default_conf, mocker, amount, precision, expected): +def test_amount_to_precision(default_conf, mocker, amount, precision_mode, precision, expected): ''' Test rounds down ''' @@ -192,7 +200,8 @@ def test_amount_to_precision_decimal_places(default_conf, mocker, amount, precis # DECIMAL_PLACES = 2 # SIGNIFICANT_DIGITS = 3 # TICK_SIZE = 4 - mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=2)) + mocker.patch('freqtrade.exchange.Exchange.precisionMode', + PropertyMock(return_value=precision_mode)) mocker.patch('freqtrade.exchange.Exchange.markets', markets) pair = 'ETH/BTC' From d7957bd7916b4a72e24c94018f0dd0aede45a9f9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Jan 2020 16:04:39 +0100 Subject: [PATCH 1501/3421] add advanced tests for price_to_precision --- tests/exchange/test_exchange.py | 60 ++++++++++++--------------------- 1 file changed, 22 insertions(+), 38 deletions(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index a131aaab5..04cf2ff22 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -208,55 +208,39 @@ def test_amount_to_precision(default_conf, mocker, amount, precision_mode, preci assert exchange.amount_to_precision(pair, amount) == expected -@pytest.mark.parametrize("amount,precision,expected", [ - (2.34559, 0.0001, 2.3455), - (2.34559, 0.00001, 2.34559), - (2.34559, 0.001, 2.345), - (2.9999, 0.001, 2.999), - (2.9909, 0.001, 2.990), - (2.9909, 0.005, 2.990), - (2.9999, 0.005, 2.995), +@pytest.mark.parametrize("price,precision_mode,precision,expected", [ + (2.34559, 2, 4, 2.3456), + (2.34559, 2, 5, 2.34559), + (2.34559, 2, 3, 2.346), + (2.9999, 2, 3, 3.000), + (2.9909, 2, 3, 2.991), + # Tests for Tick_size + (2.34559, 4, 0.0001, 2.3456), + (2.34559, 4, 0.00001, 2.34559), + (2.34559, 4, 0.001, 2.346), + (2.9999, 4, 0.001, 3.000), + (2.9909, 4, 0.001, 2.991), + (2.9909, 4, 0.005, 2.99), + (2.9973, 4, 0.005, 2.995), + (2.9977, 4, 0.005, 3.0), ]) -def test_amount_to_precision_tick_size(default_conf, mocker, amount, precision, expected): +def test_price_to_precision(default_conf, mocker, price, precision_mode, precision, expected): ''' - Test rounds down + Test price to precision ''' - - markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'amount': precision}}}) + markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'price': precision}}}) exchange = get_patched_exchange(mocker, default_conf, id="binance") + mocker.patch('freqtrade.exchange.Exchange.markets', markets) # digits counting mode # DECIMAL_PLACES = 2 # SIGNIFICANT_DIGITS = 3 # TICK_SIZE = 4 - mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=4)) - mocker.patch('freqtrade.exchange.Exchange.markets', markets) + mocker.patch('freqtrade.exchange.Exchange.precisionMode', + PropertyMock(return_value=precision_mode)) pair = 'ETH/BTC' - assert exchange.amount_to_precision(pair, amount) == expected - - -def test_sprice_to_precision(default_conf, mocker): - ''' - Test rounds up to 4 decimal places - ''' - markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'price': 4}}}) - - exchange = get_patched_exchange(mocker, default_conf, id="binance") - mocker.patch('freqtrade.exchange.Exchange.markets', markets) - mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=2)) - - price = 2.34559 - pair = 'ETH/BTC' - price = exchange.price_to_precision(pair, price) - assert price == 2.3456 - - markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'price': 0.0001}}}) - mocker.patch('freqtrade.exchange.Exchange.precisionMode', PropertyMock(return_value=4)) - mocker.patch('freqtrade.exchange.Exchange.markets', markets) - - price = exchange.price_to_precision(pair, price) - assert price == 2.3456 + assert exchange.price_to_precision(pair, price) == expected def test_set_sandbox(default_conf, mocker): From bea4ad8effa97626de4ae51d7f0e6c06c963a00f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Jan 2020 20:16:20 +0100 Subject: [PATCH 1502/3421] Revert price_to_precision to rounding up --- freqtrade/exchange/exchange.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index dd6f257fe..a7243d4d2 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -7,6 +7,7 @@ import inspect import logging from copy import deepcopy from datetime import datetime, timezone +from math import ceil from random import randint from typing import Any, Dict, List, Optional, Tuple @@ -14,7 +15,7 @@ import arrow import ccxt import ccxt.async_support as ccxt_async from ccxt.base.decimal_to_precision import (ROUND, ROUND_DOWN, ROUND_UP, - TRUNCATE, decimal_to_precision) + TRUNCATE, TICK_SIZE, decimal_to_precision) from pandas import DataFrame from freqtrade.data.converter import parse_ticker_dataframe @@ -383,15 +384,27 @@ class Exchange: def price_to_precision(self, pair, price: float) -> float: ''' - Returns the price buying or selling with to the precision the Exchange accepts - Reimplementation of ccxt internal methods - ensuring we can test the result is correct - based on our definitions. + Returns the price rounded up to the precision the Exchange accepts. + Partial Reimplementation of ccxt internal method decimal_to_precision(), + which does not support rounding up + TODO: If ccxt supports ROUND_UP for decimal_to_precision(), we could remove this and + align with amount_to_precision(). + Rounds up ''' if self.markets[pair]['precision']['price']: - price = float(decimal_to_precision(price, rounding_mode=ROUND, - precision=self.markets[pair]['precision']['price'], - counting_mode=self.precisionMode, - )) + # price = float(decimal_to_precision(price, rounding_mode=ROUND, + # precision=self.markets[pair]['precision']['price'], + # counting_mode=self.precisionMode, + # )) + if self.precisionMode == TICK_SIZE: + precision = self.markets[pair]['precision']['price'] + missing = price % precision + if missing != 0: + price = price - missing + precision + else: + symbol_prec = self.markets[pair]['precision']['price'] + big_price = price * pow(10, symbol_prec) + price = ceil(big_price) / pow(10, symbol_prec) return price def dry_run_order(self, pair: str, ordertype: str, side: str, amount: float, From 1e58cd70ad1253784a3f6d76997cf090c54362ab Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Jan 2020 20:16:47 +0100 Subject: [PATCH 1503/3421] Adapt tests to round price up --- tests/exchange/test_exchange.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 04cf2ff22..c3cf7ae58 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -220,9 +220,13 @@ def test_amount_to_precision(default_conf, mocker, amount, precision_mode, preci (2.34559, 4, 0.001, 2.346), (2.9999, 4, 0.001, 3.000), (2.9909, 4, 0.001, 2.991), - (2.9909, 4, 0.005, 2.99), - (2.9973, 4, 0.005, 2.995), + (2.9909, 4, 0.005, 2.995), + (2.9973, 4, 0.005, 3.0), (2.9977, 4, 0.005, 3.0), + (234.43, 4, 0.5, 234.5), + (234.53, 4, 0.5, 235.0), + (0.891534, 4, 0.0001, 0.8916), + ]) def test_price_to_precision(default_conf, mocker, price, precision_mode, precision, expected): ''' @@ -240,7 +244,7 @@ def test_price_to_precision(default_conf, mocker, price, precision_mode, precisi PropertyMock(return_value=precision_mode)) pair = 'ETH/BTC' - assert exchange.price_to_precision(pair, price) == expected + assert pytest.approx(exchange.price_to_precision(pair, price)) == expected def test_set_sandbox(default_conf, mocker): From 4c823f12e3d740e274f80cbff4e6f37ef9e676ac Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Jan 2020 20:25:58 +0100 Subject: [PATCH 1504/3421] Sort imports --- freqtrade/exchange/exchange.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index a7243d4d2..4c5c9194c 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -14,8 +14,8 @@ from typing import Any, Dict, List, Optional, Tuple import arrow import ccxt import ccxt.async_support as ccxt_async -from ccxt.base.decimal_to_precision import (ROUND, ROUND_DOWN, ROUND_UP, - TRUNCATE, TICK_SIZE, decimal_to_precision) +from ccxt.base.decimal_to_precision import (ROUND_DOWN, ROUND_UP, TICK_SIZE, + TRUNCATE, decimal_to_precision) from pandas import DataFrame from freqtrade.data.converter import parse_ticker_dataframe From 4013701bdb42b4d42dd0ea9db2fed733c187e756 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jan 2020 06:42:53 +0100 Subject: [PATCH 1505/3421] allow wallet update to be skipped if the value is fresh enough. Value is NOT configurable, having this wrong can result in bans on the exchange. --- freqtrade/wallets.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index 54c3f9138..c52767162 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -2,7 +2,10 @@ """ Wallet """ import logging -from typing import Dict, NamedTuple, Any +from typing import Any, Dict, NamedTuple + +import arrow + from freqtrade.exchange import Exchange from freqtrade.persistence import Trade @@ -24,7 +27,7 @@ class Wallets: self._exchange = exchange self._wallets: Dict[str, Wallet] = {} self.start_cap = config['dry_run_wallet'] - + self._last_wallet_refresh = 0 self.update() def get_free(self, currency) -> float: @@ -95,12 +98,21 @@ class Wallets: balances[currency].get('total', None) ) - def update(self) -> None: - if self._config['dry_run']: - self._update_dry() - else: - self._update_live() - logger.info('Wallets synced.') + def update(self, require_update: bool = True) -> None: + """ + Updates wallets from the configured version. + By default, updates from the exchange. + Update-skipping should only be used for user-invoked /balance calls, since + for trading operations, the latest balance is needed. + :param require_update: Allow skipping an update if balances were recently refreshed + """ + if (require_update or (self._last_wallet_refresh + 3600 < arrow.utcnow().timestamp)): + if self._config['dry_run']: + self._update_dry() + else: + self._update_live() + logger.info('Wallets synced.') + self._last_wallet_refresh = arrow.utcnow().timestamp def get_all_balances(self) -> Dict[str, Any]: return self._wallets From c8806a16a12fad76485f92e2babbe0a9de25c262 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jan 2020 06:43:41 +0100 Subject: [PATCH 1506/3421] Allow wallet update from /balance --- freqtrade/rpc/rpc.py | 2 ++ tests/test_wallets.py | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index c187dae4f..0469d418d 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -306,6 +306,8 @@ class RPC: except (TemporaryError, DependencyException): raise RPCException('Error getting current tickers.') + self._freqtrade.wallets.update(require_update=False) + for coin, balance in self._freqtrade.wallets.get_all_balances().items(): if not balance.total: continue diff --git a/tests/test_wallets.py b/tests/test_wallets.py index 3177edc05..884470014 100644 --- a/tests/test_wallets.py +++ b/tests/test_wallets.py @@ -32,7 +32,7 @@ def test_sync_wallet_at_boot(mocker, default_conf): assert freqtrade.wallets._wallets['GAS'].used == 0.0 assert freqtrade.wallets._wallets['GAS'].total == 0.260739 assert freqtrade.wallets.get_free('BNT') == 1.0 - + assert freqtrade.wallets._last_wallet_refresh > 0 mocker.patch.multiple( 'freqtrade.exchange.Exchange', get_balances=MagicMock(return_value={ @@ -61,6 +61,11 @@ def test_sync_wallet_at_boot(mocker, default_conf): assert freqtrade.wallets.get_free('GAS') == 0.270739 assert freqtrade.wallets.get_used('GAS') == 0.1 assert freqtrade.wallets.get_total('GAS') == 0.260439 + update_mock = mocker.patch('freqtrade.wallets.Wallets._update_live') + freqtrade.wallets.update(False) + assert update_mock.call_count == 0 + freqtrade.wallets.update() + assert update_mock.call_count == 1 def test_sync_wallet_missing_data(mocker, default_conf): From f73f0b1653b8914218c326776a4adffa0cf75fa7 Mon Sep 17 00:00:00 2001 From: Tejesh Date: Wed, 15 Jan 2020 19:29:00 +0530 Subject: [PATCH 1507/3421] Update comments on backtesting --- freqtrade/optimize/backtesting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 18cc27ff4..1070f2481 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -296,7 +296,7 @@ class Backtesting: """ # Arguments are long and noisy, so this is commented out. # Uncomment if you need to debug the backtest() method. -# logger.debug(f"Start backtest, args: {args}") + # logger.debug(f"Start backtest, args: {args}") processed = args['processed'] stake_amount = args['stake_amount'] max_open_trades = args.get('max_open_trades', 0) From 6feb68b18da6f1edbdbd9a7cde05e8a262ab5568 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jan 2020 19:51:33 +0100 Subject: [PATCH 1508/3421] Change feature sorting to tell more of a story --- docs/index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/index.md b/docs/index.md index b664552bc..c88c73619 100644 --- a/docs/index.md +++ b/docs/index.md @@ -25,15 +25,15 @@ Freqtrade is a crypto-currency algorithmic trading software developed in python ## Features -- Run: Run the bot on exchange with simulated money (Dry-Run mode) or with real money (Live-Trade mode). -- Select markets: Create your static list or use an automatic one based on top traded volumes and/or prices (not available during backtesting). You can also explicitly blacklist markets you don't want to trade. -- Download market data: Download historical data of the exchange and the markets your may want to trade with. The historical data can be based on [OHLCV](https://en.wikipedia.org/wiki/Open-high-low-close_chart) candles or be trade ticks (for exchanges that support this). -- Strategy: Write your strategy in python, using [pandas](https://pandas.pydata.org/). Example strategies to inspire you are available in the [strategy repository](https://github.com/freqtrade/freqtrade-strategies). +- Develop your Strategy: Write your strategy in python, using [pandas](https://pandas.pydata.org/). Example strategies to inspire you are available in the [strategy repository](https://github.com/freqtrade/freqtrade-strategies). +- Download market data: Download historical data of the exchange and the markets your may want to trade with. - Backtest: Test your strategy on downloaded historical data. - Optimize: Find the best parameters for your strategy using hyperoptimization which employs machining learning methods. You can optimize buy, sell, take profit (ROI), stop-loss and trailing stop-loss parameters for your strategy. +- Select markets: Create your static list or use an automatic one based on top traded volumes and/or prices (not available during backtesting). You can also explicitly blacklist markets you don't want to trade. +- Run: Test your strategy with simulated money (Dry-Run mode) or deploy it with real money (Live-Trade mode). - Run using Edge (optional module): The concept is to find the best historical [trade expectancy](edge.md#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade. The sizing of the trade is based on a risk of a percentage of your capital. - Control/Monitor: Use Telegram or a REST API (start/stop the bot, show profit/loss, daily summary, current open trades results, etc.). -- Analyse: Further analysis can be possibilities on either Backtesting data or Freqtrade trading history (SQL database), including automated standard plots, and methods to load the data into [interactive environments](data-analysis.md). +- Analyse: Further analysis can be performed on either Backtesting data or Freqtrade trading history (SQL database), including automated standard plots, and methods to load the data into [interactive environments](data-analysis.md). ## Requirements From d1bf388b0edfdf2cab6d9800cdddf50c9b771654 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jan 2020 19:56:14 +0100 Subject: [PATCH 1509/3421] Wallet amount must be compared with >= --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e3f2616a2..a5d980504 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -904,7 +904,7 @@ class FreqtradeBot: """ wallet_amount = self.wallets.get_free(pair.split('/')[0]) logger.debug(f"{pair} - Wallet: {wallet_amount} - Trade-amount: {amount}") - if wallet_amount > amount: + if wallet_amount >= amount: return amount elif wallet_amount > amount * 0.98: logger.info(f"{pair} - Falling back to wallet-amount.") From 90ed4c665bf21f3388f7bd90a16f5f02d5062621 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jan 2020 19:59:08 +0100 Subject: [PATCH 1510/3421] Cover equal case via test --- tests/test_freqtradebot.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 58f88198a..eedf79553 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2764,6 +2764,9 @@ def test__safe_sell_amount(default_conf, fee, caplog, mocker): assert freqtrade._safe_sell_amount(trade.pair, trade.amount) == amount_wallet assert log_has_re(r'.*Falling back to wallet-amount.', caplog) + caplog.clear() + assert freqtrade._safe_sell_amount(trade.pair, amount_wallet) == amount_wallet + assert not log_has_re(r'.*Falling back to wallet-amount.', caplog) def test__safe_sell_amount_error(default_conf, fee, caplog, mocker): From 8bcfe4a6aaa370a1dc2f0554c4309d1a713ce152 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jan 2020 21:01:36 +0100 Subject: [PATCH 1511/3421] Up log level of safe_sell_amount message --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a5d980504..4db5f08b1 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -903,7 +903,7 @@ class FreqtradeBot: :raise: DependencyException: if available balance is not within 2% of the available amount. """ wallet_amount = self.wallets.get_free(pair.split('/')[0]) - logger.debug(f"{pair} - Wallet: {wallet_amount} - Trade-amount: {amount}") + logger.info(f"Selling {pair} - Wallet: {wallet_amount} - Trade-amount: {amount}") if wallet_amount >= amount: return amount elif wallet_amount > amount * 0.98: From 29a5e4fba15a8f269cacd04ff53937fa78fad01a Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jan 2020 21:52:10 +0100 Subject: [PATCH 1512/3421] Update wallets before getting amount --- freqtrade/freqtradebot.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4db5f08b1..e712892f1 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -902,15 +902,19 @@ class FreqtradeBot: :return: amount to sell :raise: DependencyException: if available balance is not within 2% of the available amount. """ + # Update wallets to ensure amounts tied up in a stoploss is now free! + self.wallets.update() + wallet_amount = self.wallets.get_free(pair.split('/')[0]) - logger.info(f"Selling {pair} - Wallet: {wallet_amount} - Trade-amount: {amount}") + logger.debug(f"{pair} - Wallet: {wallet_amount} - Trade-amount: {amount}") if wallet_amount >= amount: return amount elif wallet_amount > amount * 0.98: logger.info(f"{pair} - Falling back to wallet-amount.") return wallet_amount else: - raise DependencyException("Not enough amount to sell.") + raise DependencyException( + f"Not enough amount to sell. Trade-amount: {amount}, Wallet: {wallet_amount}") def execute_sell(self, trade: Trade, limit: float, sell_reason: SellType) -> None: """ From fa1e9dd70d1e48298ddc0c2603ae4ef351e93e85 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jan 2020 21:53:04 +0100 Subject: [PATCH 1513/3421] Adjust tests to allow updating within safe_sell_amount --- tests/rpc/test_rpc.py | 1 + tests/test_freqtradebot.py | 5 +++++ tests/test_integration.py | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index ac959cb0e..36fce1797 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -513,6 +513,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: ), get_fee=fee, ) + mocker.patch('freqtrade.wallets.Wallets.get_free', return_value=1000) freqtradebot = get_patched_freqtradebot(mocker, default_conf) patch_get_signal(freqtradebot, (True, False)) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index eedf79553..1cba39c58 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2750,6 +2750,7 @@ def test__safe_sell_amount(default_conf, fee, caplog, mocker): amount = 95.33 amount_wallet = 95.29 mocker.patch('freqtrade.wallets.Wallets.get_free', MagicMock(return_value=amount_wallet)) + wallet_update = mocker.patch('freqtrade.wallets.Wallets.update') trade = Trade( pair='LTC/ETH', amount=amount, @@ -2762,11 +2763,15 @@ def test__safe_sell_amount(default_conf, fee, caplog, mocker): freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) + wallet_update.reset_mock() assert freqtrade._safe_sell_amount(trade.pair, trade.amount) == amount_wallet assert log_has_re(r'.*Falling back to wallet-amount.', caplog) + assert wallet_update.call_count == 1 caplog.clear() + wallet_update.reset_mock() assert freqtrade._safe_sell_amount(trade.pair, amount_wallet) == amount_wallet assert not log_has_re(r'.*Falling back to wallet-amount.', caplog) + assert wallet_update.call_count == 1 def test__safe_sell_amount_error(default_conf, fee, caplog, mocker): diff --git a/tests/test_integration.py b/tests/test_integration.py index 98bf1862b..ad3e897f8 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -97,8 +97,8 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, # Only order for 3rd trade needs to be cancelled assert cancel_order_mock.call_count == 1 - # Wallets should only be called once per sell cycle - assert wallets_mock.call_count == 1 + # Wallets must be updated between stoploss cancellation and selling. + assert wallets_mock.call_count == 2 trade = trades[0] assert trade.sell_reason == SellType.STOPLOSS_ON_EXCHANGE.value From 8d2e0bfd628c13ff51e5962107b7c0fed5db78b3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 19 Jan 2020 13:12:28 +0100 Subject: [PATCH 1514/3421] Move rate-calcuation for stoploss-limit order to exchange --- freqtrade/exchange/binance.py | 8 ++++++-- freqtrade/exchange/exchange.py | 3 ++- freqtrade/freqtradebot.py | 5 +---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 12326f083..15796bdcb 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -32,13 +32,17 @@ class Binance(Exchange): return super().get_order_book(pair, limit) - def stoploss_limit(self, pair: str, amount: float, stop_price: float, rate: float) -> Dict: + def stoploss_limit(self, pair: str, amount: float, stop_price: float, + order_types: Dict) -> Dict: """ creates a stoploss limit order. this stoploss-limit is binance-specific. It may work with a limited number of other exchanges, but this has not been tested yet. - """ + # Limit price threshold: As limit price should always be below stop-price + LIMIT_PRICE_PCT = order_types.get('stoploss_on_exchange_limit_ratio', 0.99) + rate = stop_price * LIMIT_PRICE_PCT + ordertype = "stop_loss_limit" stop_price = self.price_to_precision(pair, stop_price) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 87c189457..4c5ef823b 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -519,7 +519,8 @@ class Exchange: return self.create_order(pair, ordertype, 'sell', amount, rate, params) - def stoploss_limit(self, pair: str, amount: float, stop_price: float, rate: float) -> Dict: + def stoploss_limit(self, pair: str, amount: float, stop_price: float, + order_types: Dict) -> Dict: """ creates a stoploss limit order. Since ccxt does not unify stoploss-limit orders yet, this needs to be implemented in each diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e712892f1..1a3097c25 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -636,13 +636,10 @@ class FreqtradeBot: Force-sells the pair (using EmergencySell reason) in case of Problems creating the order. :return: True if the order succeeded, and False in case of problems. """ - # Limit price threshold: As limit price should always be below stop-price - LIMIT_PRICE_PCT = self.strategy.order_types.get('stoploss_on_exchange_limit_ratio', 0.99) - try: stoploss_order = self.exchange.stoploss_limit(pair=trade.pair, amount=trade.amount, stop_price=stop_price, - rate=rate * LIMIT_PRICE_PCT) + order_types=self.strategy.order_types) trade.stoploss_order_id = str(stoploss_order['id']) return True except InvalidOrderException as e: From da0af489a2cd8cc437752e308cab9e44ffc38c7a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 19 Jan 2020 13:25:41 +0100 Subject: [PATCH 1515/3421] Adjust tests to pass in order_types instead of rate --- tests/exchange/test_binance.py | 19 ++++++++++--------- tests/exchange/test_exchange.py | 2 +- tests/test_freqtradebot.py | 4 ++-- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index 4bc918c3d..bda4946b4 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -28,11 +28,12 @@ def test_stoploss_limit_order(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') with pytest.raises(OperationalException): - order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=190, rate=200) + order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=190, + order_types={'stoploss_on_exchange_limit_ratio': 1.05}) api_mock.create_order.reset_mock() - order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) assert 'id' in order assert 'info' in order @@ -41,30 +42,29 @@ def test_stoploss_limit_order(default_conf, mocker): assert api_mock.create_order.call_args[0][1] == order_type assert api_mock.create_order.call_args[0][2] == 'sell' assert api_mock.create_order.call_args[0][3] == 1 - assert api_mock.create_order.call_args[0][4] == 200 assert api_mock.create_order.call_args[0][5] == {'stopPrice': 220} # test exception handling with pytest.raises(DependencyException): api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds("0 balance")) exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) with pytest.raises(InvalidOrderException): api_mock.create_order = MagicMock( side_effect=ccxt.InvalidOrder("binance Order would trigger immediately.")) exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) with pytest.raises(TemporaryError): api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No connection")) exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) with pytest.raises(OperationalException, match=r".*DeadBeef.*"): api_mock.create_order = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) def test_stoploss_limit_order_dry_run(default_conf, mocker): @@ -77,11 +77,12 @@ def test_stoploss_limit_order_dry_run(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') with pytest.raises(OperationalException): - order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=190, rate=200) + order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=190, + order_types={'stoploss_on_exchange_limit_ratio': 1.05}) api_mock.create_order.reset_mock() - order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) assert 'id' in order assert 'info' in order diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 7064d76e1..be40f2192 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1761,7 +1761,7 @@ def test_get_fee(default_conf, mocker, exchange_name): def test_stoploss_limit_order_unsupported_exchange(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, 'bittrex') with pytest.raises(OperationalException, match=r"stoploss_limit is not implemented .*"): - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, rate=200) + exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) def test_merge_ft_has_dict(default_conf, mocker): diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5a4820f2f..2aa1548f8 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1315,7 +1315,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, cancel_order_mock.assert_called_once_with(100, 'ETH/BTC') stoploss_order_mock.assert_called_once_with(amount=85.25149190110828, pair='ETH/BTC', - rate=0.00002344 * 0.95 * 0.99, + order_types=freqtrade.strategy.order_types, stop_price=0.00002344 * 0.95) @@ -1492,7 +1492,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, cancel_order_mock.assert_called_once_with(100, 'NEO/BTC') stoploss_order_mock.assert_called_once_with(amount=2131074.168797954, pair='NEO/BTC', - rate=0.00002344 * 0.99 * 0.99, + order_types=freqtrade.strategy.order_types, stop_price=0.00002344 * 0.99) From 256fc2e78cc532714b6a8f91d0783b809349bb0c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 19 Jan 2020 13:30:56 +0100 Subject: [PATCH 1516/3421] Rename stoploss_limit to stoploss --- freqtrade/exchange/binance.py | 3 +-- freqtrade/exchange/exchange.py | 6 +++--- freqtrade/freqtradebot.py | 6 +++--- tests/exchange/test_binance.py | 20 ++++++++++---------- tests/exchange/test_exchange.py | 2 +- 5 files changed, 18 insertions(+), 19 deletions(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 15796bdcb..d08726cf0 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -32,8 +32,7 @@ class Binance(Exchange): return super().get_order_book(pair, limit) - def stoploss_limit(self, pair: str, amount: float, stop_price: float, - order_types: Dict) -> Dict: + def stoploss(self, pair: str, amount: float, stop_price: float, order_types: Dict) -> Dict: """ creates a stoploss limit order. this stoploss-limit is binance-specific. diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 4c5ef823b..121a8c636 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -519,10 +519,10 @@ class Exchange: return self.create_order(pair, ordertype, 'sell', amount, rate, params) - def stoploss_limit(self, pair: str, amount: float, stop_price: float, - order_types: Dict) -> Dict: + def stoploss(self, pair: str, amount: float, stop_price: float, order_types: Dict) -> Dict: """ - creates a stoploss limit order. + creates a stoploss order. + The precise ordertype is determined by the order_types dict or exchange default. Since ccxt does not unify stoploss-limit orders yet, this needs to be implemented in each exchange's subclass. The exception below should never raise, since we disallow diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 1a3097c25..a4b0ab806 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -637,9 +637,9 @@ class FreqtradeBot: :return: True if the order succeeded, and False in case of problems. """ try: - stoploss_order = self.exchange.stoploss_limit(pair=trade.pair, amount=trade.amount, - stop_price=stop_price, - order_types=self.strategy.order_types) + stoploss_order = self.exchange.stoploss(pair=trade.pair, amount=trade.amount, + stop_price=stop_price, + order_types=self.strategy.order_types) trade.stoploss_order_id = str(stoploss_order['id']) return True except InvalidOrderException as e: diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index bda4946b4..fdf3d7435 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -28,12 +28,12 @@ def test_stoploss_limit_order(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') with pytest.raises(OperationalException): - order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=190, - order_types={'stoploss_on_exchange_limit_ratio': 1.05}) + order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=190, + order_types={'stoploss_on_exchange_limit_ratio': 1.05}) api_mock.create_order.reset_mock() - order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) assert 'id' in order assert 'info' in order @@ -48,23 +48,23 @@ def test_stoploss_limit_order(default_conf, mocker): with pytest.raises(DependencyException): api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds("0 balance")) exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) with pytest.raises(InvalidOrderException): api_mock.create_order = MagicMock( side_effect=ccxt.InvalidOrder("binance Order would trigger immediately.")) exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) with pytest.raises(TemporaryError): api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No connection")) exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) with pytest.raises(OperationalException, match=r".*DeadBeef.*"): api_mock.create_order = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) def test_stoploss_limit_order_dry_run(default_conf, mocker): @@ -77,12 +77,12 @@ def test_stoploss_limit_order_dry_run(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') with pytest.raises(OperationalException): - order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=190, - order_types={'stoploss_on_exchange_limit_ratio': 1.05}) + order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=190, + order_types={'stoploss_on_exchange_limit_ratio': 1.05}) api_mock.create_order.reset_mock() - order = exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) assert 'id' in order assert 'info' in order diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index be40f2192..7c0c72491 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1761,7 +1761,7 @@ def test_get_fee(default_conf, mocker, exchange_name): def test_stoploss_limit_order_unsupported_exchange(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, 'bittrex') with pytest.raises(OperationalException, match=r"stoploss_limit is not implemented .*"): - exchange.stoploss_limit(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) def test_merge_ft_has_dict(default_conf, mocker): From 16b34e11cad56216d7a8afde5a4ad73e98cc513b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 19 Jan 2020 14:39:51 +0100 Subject: [PATCH 1517/3421] Complete rename of stoploss_limit to stoploss --- freqtrade/exchange/exchange.py | 2 +- tests/exchange/test_exchange.py | 4 +-- tests/test_freqtradebot.py | 60 ++++++++++++++++----------------- tests/test_integration.py | 4 +-- 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 121a8c636..bef92750c 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -530,7 +530,7 @@ class Exchange: Note: Changes to this interface need to be applied to all sub-classes too. """ - raise OperationalException(f"stoploss_limit is not implemented for {self.name}.") + raise OperationalException(f"stoploss is not implemented for {self.name}.") @retrier def get_balance(self, currency: str) -> float: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 7c0c72491..680e69764 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1758,9 +1758,9 @@ def test_get_fee(default_conf, mocker, exchange_name): 'get_fee', 'calculate_fee', symbol="ETH/BTC") -def test_stoploss_limit_order_unsupported_exchange(default_conf, mocker): +def test_stoploss_order_unsupported_exchange(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, 'bittrex') - with pytest.raises(OperationalException, match=r"stoploss_limit is not implemented .*"): + with pytest.raises(OperationalException, match=r"stoploss is not implemented .*"): exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 2aa1548f8..a33d47f34 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1031,8 +1031,8 @@ def test_add_stoploss_on_exchange(mocker, default_conf, limit_buy_order) -> None mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_real_amount', return_value=limit_buy_order['amount']) - stoploss_limit = MagicMock(return_value={'id': 13434334}) - mocker.patch('freqtrade.exchange.Exchange.stoploss_limit', stoploss_limit) + stoploss = MagicMock(return_value={'id': 13434334}) + mocker.patch('freqtrade.exchange.Exchange.stoploss', stoploss) freqtrade = FreqtradeBot(default_conf) freqtrade.strategy.order_types['stoploss_on_exchange'] = True @@ -1045,13 +1045,13 @@ def test_add_stoploss_on_exchange(mocker, default_conf, limit_buy_order) -> None freqtrade.exit_positions(trades) assert trade.stoploss_order_id == '13434334' - assert stoploss_limit.call_count == 1 + assert stoploss.call_count == 1 assert trade.is_open is True def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, limit_buy_order, limit_sell_order) -> None: - stoploss_limit = MagicMock(return_value={'id': 13434334}) + stoploss = MagicMock(return_value={'id': 13434334}) patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch.multiple( @@ -1064,7 +1064,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - stoploss_limit=stoploss_limit + stoploss=stoploss ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -1078,7 +1078,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, trade.stoploss_order_id = None assert freqtrade.handle_stoploss_on_exchange(trade) is False - assert stoploss_limit.call_count == 1 + assert stoploss.call_count == 1 assert trade.stoploss_order_id == "13434334" # Second case: when stoploss is set but it is not yet hit @@ -1102,10 +1102,10 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, canceled_stoploss_order = MagicMock(return_value={'status': 'canceled'}) mocker.patch('freqtrade.exchange.Exchange.get_order', canceled_stoploss_order) - stoploss_limit.reset_mock() + stoploss.reset_mock() assert freqtrade.handle_stoploss_on_exchange(trade) is False - assert stoploss_limit.call_count == 1 + assert stoploss.call_count == 1 assert trade.stoploss_order_id == "13434334" # Fourth case: when stoploss is set and it is hit @@ -1132,7 +1132,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, assert trade.is_open is False mocker.patch( - 'freqtrade.exchange.Exchange.stoploss_limit', + 'freqtrade.exchange.Exchange.stoploss', side_effect=DependencyException() ) freqtrade.handle_stoploss_on_exchange(trade) @@ -1142,11 +1142,11 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, # Fifth case: get_order returns InvalidOrder # It should try to add stoploss order trade.stoploss_order_id = 100 - stoploss_limit.reset_mock() + stoploss.reset_mock() mocker.patch('freqtrade.exchange.Exchange.get_order', side_effect=InvalidOrderException()) - mocker.patch('freqtrade.exchange.Exchange.stoploss_limit', stoploss_limit) + mocker.patch('freqtrade.exchange.Exchange.stoploss', stoploss) freqtrade.handle_stoploss_on_exchange(trade) - assert stoploss_limit.call_count == 1 + assert stoploss.call_count == 1 def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, @@ -1165,7 +1165,7 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, get_order=MagicMock(return_value={'status': 'canceled'}), - stoploss_limit=MagicMock(side_effect=DependencyException()), + stoploss=MagicMock(side_effect=DependencyException()), ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -1199,7 +1199,7 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, sell=sell_mock, get_fee=fee, get_order=MagicMock(return_value={'status': 'canceled'}), - stoploss_limit=MagicMock(side_effect=InvalidOrderException()), + stoploss=MagicMock(side_effect=InvalidOrderException()), ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -1229,7 +1229,7 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, limit_buy_order, limit_sell_order) -> None: # When trailing stoploss is set - stoploss_limit = MagicMock(return_value={'id': 13434334}) + stoploss = MagicMock(return_value={'id': 13434334}) patch_RPCManager(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -1241,7 +1241,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - stoploss_limit=stoploss_limit + stoploss=stoploss ) # enabling TSL @@ -1296,7 +1296,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, cancel_order_mock = MagicMock() stoploss_order_mock = MagicMock() mocker.patch('freqtrade.exchange.Exchange.cancel_order', cancel_order_mock) - mocker.patch('freqtrade.exchange.Exchange.stoploss_limit', stoploss_order_mock) + mocker.patch('freqtrade.exchange.Exchange.stoploss', stoploss_order_mock) # stoploss should not be updated as the interval is 60 seconds assert freqtrade.handle_trade(trade) is False @@ -1322,7 +1322,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, caplog, limit_buy_order, limit_sell_order) -> None: # When trailing stoploss is set - stoploss_limit = MagicMock(return_value={'id': 13434334}) + stoploss = MagicMock(return_value={'id': 13434334}) patch_exchange(mocker) mocker.patch.multiple( @@ -1335,7 +1335,7 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - stoploss_limit=stoploss_limit + stoploss=stoploss ) # enabling TSL @@ -1375,12 +1375,12 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c assert log_has_re(r"Could not cancel stoploss order abcd for pair ETH/BTC.*", caplog) # Still try to create order - assert stoploss_limit.call_count == 1 + assert stoploss.call_count == 1 # Fail creating stoploss order caplog.clear() cancel_mock = mocker.patch("freqtrade.exchange.Exchange.cancel_order", MagicMock()) - mocker.patch("freqtrade.exchange.Exchange.stoploss_limit", side_effect=DependencyException()) + mocker.patch("freqtrade.exchange.Exchange.stoploss", side_effect=DependencyException()) freqtrade.handle_trailing_stoploss_on_exchange(trade, stoploss_order_hanging) assert cancel_mock.call_count == 1 assert log_has_re(r"Could not create trailing stoploss order for pair ETH/BTC\..*", caplog) @@ -1390,7 +1390,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, limit_buy_order, limit_sell_order) -> None: # When trailing stoploss is set - stoploss_limit = MagicMock(return_value={'id': 13434334}) + stoploss = MagicMock(return_value={'id': 13434334}) patch_RPCManager(mocker) patch_exchange(mocker) patch_edge(mocker) @@ -1406,7 +1406,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - stoploss_limit=stoploss_limit + stoploss=stoploss ) # enabling TSL @@ -1459,7 +1459,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, cancel_order_mock = MagicMock() stoploss_order_mock = MagicMock() mocker.patch('freqtrade.exchange.Exchange.cancel_order', cancel_order_mock) - mocker.patch('freqtrade.exchange.Exchange.stoploss_limit', stoploss_order_mock) + mocker.patch('freqtrade.exchange.Exchange.stoploss', stoploss_order_mock) # price goes down 5% mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ @@ -2423,7 +2423,7 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, ticker, fee, ticke default_conf['exchange']['name'] = 'binance' rpc_mock = patch_RPCManager(mocker) patch_exchange(mocker) - stoploss_limit = MagicMock(return_value={ + stoploss = MagicMock(return_value={ 'id': 123, 'info': { 'foo': 'bar' @@ -2437,7 +2437,7 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, ticker, fee, ticke get_fee=fee, amount_to_precision=lambda s, x, y: y, price_to_precision=lambda s, x, y: y, - stoploss_limit=stoploss_limit, + stoploss=stoploss, cancel_order=cancel_order, ) @@ -2482,14 +2482,14 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, f price_to_precision=lambda s, x, y: y, ) - stoploss_limit = MagicMock(return_value={ + stoploss = MagicMock(return_value={ 'id': 123, 'info': { 'foo': 'bar' } }) - mocker.patch('freqtrade.exchange.Binance.stoploss_limit', stoploss_limit) + mocker.patch('freqtrade.exchange.Binance.stoploss', stoploss) freqtrade = FreqtradeBot(default_conf) freqtrade.strategy.order_types['stoploss_on_exchange'] = True @@ -2507,7 +2507,7 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, f # Assuming stoploss on exchnage is hit # stoploss_order_id should become None # and trade should be sold at the price of stoploss - stoploss_limit_executed = MagicMock(return_value={ + stoploss_executed = MagicMock(return_value={ "id": "123", "timestamp": 1542707426845, "datetime": "2018-11-20T09:50:26.845Z", @@ -2525,7 +2525,7 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, f "fee": None, "trades": None }) - mocker.patch('freqtrade.exchange.Exchange.get_order', stoploss_limit_executed) + mocker.patch('freqtrade.exchange.Exchange.get_order', stoploss_executed) freqtrade.exit_positions(trades) assert trade.stoploss_order_id is None diff --git a/tests/test_integration.py b/tests/test_integration.py index 9cb071bb8..c40da7e9d 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -20,7 +20,7 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, default_conf['max_open_trades'] = 3 default_conf['exchange']['name'] = 'binance' - stoploss_limit = { + stoploss = { 'id': 123, 'info': {} } @@ -53,7 +53,7 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, SellCheckTuple(sell_flag=True, sell_type=SellType.SELL_SIGNAL)] ) cancel_order_mock = MagicMock() - mocker.patch('freqtrade.exchange.Binance.stoploss_limit', stoploss_limit) + mocker.patch('freqtrade.exchange.Binance.stoploss', stoploss) mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, From e6f1912443fa4a1229ac53ee2f1af3f5be3804ec Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 19 Jan 2020 14:07:59 +0100 Subject: [PATCH 1518/3421] Use named arguments for stoploss create_order call --- freqtrade/exchange/binance.py | 4 ++-- tests/exchange/test_binance.py | 15 ++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index d08726cf0..8a3e28379 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -64,8 +64,8 @@ class Binance(Exchange): rate = self.price_to_precision(pair, rate) - order = self._api.create_order(pair, ordertype, 'sell', - amount, rate, params) + order = self._api.create_order(symbol=pair, type=ordertype, side='sell', + amount=amount, price=stop_price, params=params) logger.info('stoploss limit order added for %s. ' 'stop price: %s. limit: %s', pair, stop_price, rate) return order diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index fdf3d7435..a1b24913e 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -9,7 +9,7 @@ from freqtrade.exceptions import (DependencyException, InvalidOrderException, from tests.conftest import get_patched_exchange -def test_stoploss_limit_order(default_conf, mocker): +def test_stoploss_order_binance(default_conf, mocker): api_mock = MagicMock() order_id = 'test_prod_buy_{}'.format(randint(0, 10 ** 6)) order_type = 'stop_loss_limit' @@ -38,11 +38,12 @@ def test_stoploss_limit_order(default_conf, mocker): assert 'id' in order assert 'info' in order assert order['id'] == order_id - assert api_mock.create_order.call_args[0][0] == 'ETH/BTC' - assert api_mock.create_order.call_args[0][1] == order_type - assert api_mock.create_order.call_args[0][2] == 'sell' - assert api_mock.create_order.call_args[0][3] == 1 - assert api_mock.create_order.call_args[0][5] == {'stopPrice': 220} + assert api_mock.create_order.call_args_list[0][1]['symbol'] == 'ETH/BTC' + assert api_mock.create_order.call_args_list[0][1]['type'] == order_type + assert api_mock.create_order.call_args_list[0][1]['side'] == 'sell' + assert api_mock.create_order.call_args_list[0][1]['amount'] == 1 + assert api_mock.create_order.call_args_list[0][1]['price'] == 220 + assert api_mock.create_order.call_args_list[0][1]['params'] == {'stopPrice': 220} # test exception handling with pytest.raises(DependencyException): @@ -67,7 +68,7 @@ def test_stoploss_limit_order(default_conf, mocker): exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) -def test_stoploss_limit_order_dry_run(default_conf, mocker): +def test_stoploss_order_dry_run_binance(default_conf, mocker): api_mock = MagicMock() order_type = 'stop_loss_limit' default_conf['dry_run'] = True From f1629c907a3ea88d08c2976223d25c2ce82e56f4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 19 Jan 2020 14:08:47 +0100 Subject: [PATCH 1519/3421] Implement stoploss for kraken --- freqtrade/exchange/kraken.py | 45 +++++++++++++++++- tests/exchange/test_kraken.py | 87 +++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index 9bcd9cc1f..88c414772 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -4,7 +4,8 @@ from typing import Dict import ccxt -from freqtrade.exceptions import OperationalException, TemporaryError +from freqtrade.exceptions import (DependencyException, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.exchange import Exchange from freqtrade.exchange.exchange import retrier @@ -15,6 +16,7 @@ class Kraken(Exchange): _params: Dict = {"trading_agreement": "agree"} _ft_has: Dict = { + "stoploss_on_exchange": True, "trades_pagination": "id", "trades_pagination_arg": "since", } @@ -48,3 +50,44 @@ class Kraken(Exchange): f'Could not get balance due to {e.__class__.__name__}. Message: {e}') from e except ccxt.BaseError as e: raise OperationalException(e) from e + + def stoploss(self, pair: str, amount: float, stop_price: float, order_types: Dict) -> Dict: + """ + Creates a stoploss market order. + Stoploss market orders is the only stoploss type supported by kraken. + """ + + ordertype = "stop-loss" + + stop_price = self.price_to_precision(pair, stop_price) + + if self._config['dry_run']: + dry_order = self.dry_run_order( + pair, ordertype, "sell", amount, stop_price) + return dry_order + + try: + params = self._params.copy() + + amount = self.amount_to_precision(pair, amount) + + order = self._api.create_order(symbol=pair, type=ordertype, side='sell', + amount=amount, price=stop_price, params=params) + logger.info('stoploss order added for %s. ' + 'stop price: %s.', pair, stop_price) + return order + except ccxt.InsufficientFunds as e: + raise DependencyException( + f'Insufficient funds to create {ordertype} sell order on market {pair}.' + f'Tried to create stoploss with amount {amount} at stoploss {stop_price}. ' + f'Message: {e}') from e + except ccxt.InvalidOrder as e: + raise InvalidOrderException( + f'Could not create {ordertype} sell order on market {pair}. ' + f'Tried to create stoploss with amount {amount} at stoploss {stop_price}. ' + f'Message: {e}') from e + except (ccxt.NetworkError, ccxt.ExchangeError) as e: + raise TemporaryError( + f'Could not place sell order due to {e.__class__.__name__}. Message: {e}') from e + except ccxt.BaseError as e: + raise OperationalException(e) from e diff --git a/tests/exchange/test_kraken.py b/tests/exchange/test_kraken.py index 8490ee1a2..241d15772 100644 --- a/tests/exchange/test_kraken.py +++ b/tests/exchange/test_kraken.py @@ -3,6 +3,11 @@ from random import randint from unittest.mock import MagicMock +import ccxt +import pytest + +from freqtrade.exceptions import (DependencyException, InvalidOrderException, + OperationalException, TemporaryError) from tests.conftest import get_patched_exchange from tests.exchange.test_exchange import ccxt_exceptionhandlers @@ -149,3 +154,85 @@ def test_get_balances_prod(default_conf, mocker): assert balances['4ST']['used'] == 0.0 ccxt_exceptionhandlers(mocker, default_conf, api_mock, "kraken", "get_balances", "fetch_balance") + + +def test_stoploss_order_kraken(default_conf, mocker): + api_mock = MagicMock() + order_id = 'test_prod_buy_{}'.format(randint(0, 10 ** 6)) + order_type = 'stop-loss' + + api_mock.create_order = MagicMock(return_value={ + 'id': order_id, + 'info': { + 'foo': 'bar' + } + }) + + default_conf['dry_run'] = False + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) + + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'kraken') + + # stoploss_on_exchange_limit_ratio is irrelevant for kraken market orders + order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=190, + order_types={'stoploss_on_exchange_limit_ratio': 1.05}) + assert api_mock.create_order.call_count == 1 + + api_mock.create_order.reset_mock() + + order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + + assert 'id' in order + assert 'info' in order + assert order['id'] == order_id + assert api_mock.create_order.call_args_list[0][1]['symbol'] == 'ETH/BTC' + assert api_mock.create_order.call_args_list[0][1]['type'] == order_type + assert api_mock.create_order.call_args_list[0][1]['side'] == 'sell' + assert api_mock.create_order.call_args_list[0][1]['amount'] == 1 + assert api_mock.create_order.call_args_list[0][1]['price'] == 220 + assert api_mock.create_order.call_args_list[0][1]['params'] == {'trading_agreement': 'agree'} + + # test exception handling + with pytest.raises(DependencyException): + api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds("0 balance")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'kraken') + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + + with pytest.raises(InvalidOrderException): + api_mock.create_order = MagicMock( + side_effect=ccxt.InvalidOrder("kraken Order would trigger immediately.")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'kraken') + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + + with pytest.raises(TemporaryError): + api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No connection")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'kraken') + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + + with pytest.raises(OperationalException, match=r".*DeadBeef.*"): + api_mock.create_order = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'kraken') + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + + +def test_stoploss_order_dry_run_kraken(default_conf, mocker): + api_mock = MagicMock() + order_type = 'stop-loss' + default_conf['dry_run'] = True + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) + + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'kraken') + + api_mock.create_order.reset_mock() + + order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + + assert 'id' in order + assert 'info' in order + assert 'type' in order + + assert order['type'] == order_type + assert order['price'] == 220 + assert order['amount'] == 1 From 7a22aaa11144dc95cb1f855642fdac555d866537 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 19 Jan 2020 14:30:09 +0100 Subject: [PATCH 1520/3421] UPdate documentation to reflect that stoploss-on-exchange is also available for kraken --- docs/configuration.md | 2 +- docs/exchanges.md | 5 ++++- docs/stoploss.md | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index fe692eacb..f2d0fa5f2 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -278,7 +278,7 @@ If this is configured, the following 4 values (`buy`, `sell`, `stoploss` and The below is the default which is used if this is not configured in either strategy or configuration file. Since `stoploss_on_exchange` uses limit orders, the exchange needs 2 prices, the stoploss_price and the Limit price. -`stoploss` defines the stop-price - and limit should be slightly below this. This defaults to 0.99 / 1%. +`stoploss` defines the stop-price - and limit should be slightly below this. This defaults to 0.99 / 1% (configurable via `stoploss_on_exchange_limit_ratio`). Calculation example: we bought the asset at 100$. Stop-price is 95$, then limit would be `95 * 0.99 = 94.05$` - so the stoploss will happen between 95$ and 94.05$. diff --git a/docs/exchanges.md b/docs/exchanges.md index 76fa81f4a..18a9f1cba 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -5,7 +5,7 @@ This page combines common gotchas and informations which are exchange-specific a ## Binance !!! Tip "Stoploss on Exchange" - Binance is currently the only exchange supporting `stoploss_on_exchange`. It provides great advantages, so we recommend to benefit from it. + Binance supports `stoploss_on_exchange` and uses stop-loss-limit orders. It provides great advantages, so we recommend to benefit from it. ### Blacklists @@ -22,6 +22,9 @@ Binance has been split into 3, and users must use the correct ccxt exchange ID f ## Kraken +!!! Tip "Stoploss on Exchange" + Kraken supports `stoploss_on_exchange` and uses stop-loss-market orders. It provides great advantages, so we recommend to benefit from it, however since the resulting order is a stoploss-market order, sell-rates are not guaranteed, which makes this feature less secure than on other exchanges. This limitation is based on kraken's policy [source](https://blog.kraken.com/post/1494/kraken-enables-advanced-orders-and-adds-10-currency-pairs/) and [source2](https://blog.kraken.com/post/1494/kraken-enables-advanced-orders-and-adds-10-currency-pairs/) - which has stoploss-limit orders disabled. + ### Historic Kraken data The Kraken API does only provide 720 historic candles, which is sufficient for Freqtrade dry-run and live trade modes, but is a problem for backtesting. diff --git a/docs/stoploss.md b/docs/stoploss.md index 105488296..f6d56fd41 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -27,7 +27,7 @@ So this parameter will tell the bot how often it should update the stoploss orde This same logic will reapply a stoploss order on the exchange should you cancel it accidentally. !!! Note - Stoploss on exchange is only supported for Binance as of now. + Stoploss on exchange is only supported for Binance (stop-loss-limit) and Kraken (stop-loss-market) as of now. ## Static Stop Loss From cf9331919fdf658ee86a0b21642c8c717cf0d1b3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 19 Jan 2020 19:54:30 +0100 Subject: [PATCH 1521/3421] move exchange-specific order-parsing to exchange class Related to stoploss_on_exchange in combination with trailing stoploss. Binance contains stopPrice in the info, while kraken returns the same value as "price". --- freqtrade/exchange/binance.py | 7 +++++++ freqtrade/exchange/exchange.py | 13 ++++++++++--- freqtrade/exchange/kraken.py | 7 +++++++ freqtrade/freqtradebot.py | 3 +-- tests/exchange/test_binance.py | 14 ++++++++++++++ tests/exchange/test_exchange.py | 3 +++ tests/exchange/test_kraken.py | 13 +++++++++++++ 7 files changed, 55 insertions(+), 5 deletions(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 8a3e28379..45102359d 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -32,6 +32,13 @@ class Binance(Exchange): return super().get_order_book(pair, limit) + def stoploss_adjust(self, stop_loss: float, order: Dict) -> bool: + """ + Verify stop_loss against stoploss-order value (limit or price) + Returns True if adjustment is necessary. + """ + return order['type'] == 'stop_loss_limit' and stop_loss > float(order['info']['stopPrice']) + def stoploss(self, pair: str, amount: float, stop_price: float, order_types: Dict) -> Dict: """ creates a stoploss limit order. diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index bef92750c..a8df4c1bb 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -282,8 +282,8 @@ class Exchange: quote_currencies = self.get_quote_currencies() if stake_currency not in quote_currencies: raise OperationalException( - f"{stake_currency} is not available as stake on {self.name}. " - f"Available currencies are: {', '.join(quote_currencies)}") + f"{stake_currency} is not available as stake on {self.name}. " + f"Available currencies are: {', '.join(quote_currencies)}") def validate_pairs(self, pairs: List[str]) -> None: """ @@ -460,7 +460,7 @@ class Exchange: "status": "closed", "filled": closed_order["amount"], "remaining": 0 - }) + }) if closed_order["type"] in ["stop_loss_limit"]: closed_order["info"].update({"stopPrice": closed_order["price"]}) self._dry_run_open_orders[closed_order["id"]] = closed_order @@ -519,6 +519,13 @@ class Exchange: return self.create_order(pair, ordertype, 'sell', amount, rate, params) + def stoploss_adjust(self, stop_loss: float, order: Dict) -> bool: + """ + Verify stop_loss against stoploss-order value (limit or price) + Returns True if adjustment is necessary. + """ + raise OperationalException(f"stoploss is not implemented for {self.name}.") + def stoploss(self, pair: str, amount: float, stop_price: float, order_types: Dict) -> Dict: """ creates a stoploss order. diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index 88c414772..243f1a6d6 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -51,6 +51,13 @@ class Kraken(Exchange): except ccxt.BaseError as e: raise OperationalException(e) from e + def stoploss_adjust(self, stop_loss: float, order: Dict) -> bool: + """ + Verify stop_loss against stoploss-order value (limit or price) + Returns True if adjustment is necessary. + """ + return order['type'] == 'stop-loss' and stop_loss > float(order['price']) + def stoploss(self, pair: str, amount: float, stop_price: float, order_types: Dict) -> Dict: """ Creates a stoploss market order. diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a4b0ab806..fa9a8424a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -718,8 +718,7 @@ class FreqtradeBot: :param order: Current on exchange stoploss order :return: None """ - - if trade.stop_loss > float(order['info']['stopPrice']): + if self.exchange.stoploss_adjust(trade.stop_loss, order): # we check if the update is neccesary update_beat = self.strategy.order_types.get('stoploss_on_exchange_interval', 60) if (datetime.utcnow() - trade.stoploss_last_update).total_seconds() >= update_beat: diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index a1b24913e..e4599dcd7 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -92,3 +92,17 @@ def test_stoploss_order_dry_run_binance(default_conf, mocker): assert order['type'] == order_type assert order['price'] == 220 assert order['amount'] == 1 + + +def test_stoploss_adjust_binance(mocker, default_conf): + exchange = get_patched_exchange(mocker, default_conf, id='binance') + order = { + 'type': 'stop_loss_limit', + 'price': 1500, + 'info': {'stopPrice': 1500}, + } + assert exchange.stoploss_adjust(1501, order) + assert not exchange.stoploss_adjust(1499, order) + # Test with invalid order case + order['type'] = 'stop_loss' + assert not exchange.stoploss_adjust(1501, order) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 680e69764..3a664a9ec 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1763,6 +1763,9 @@ def test_stoploss_order_unsupported_exchange(default_conf, mocker): with pytest.raises(OperationalException, match=r"stoploss is not implemented .*"): exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + with pytest.raises(OperationalException, match=r"stoploss is not implemented .*"): + exchange.stoploss_adjust(1, {}) + def test_merge_ft_has_dict(default_conf, mocker): mocker.patch.multiple('freqtrade.exchange.Exchange', diff --git a/tests/exchange/test_kraken.py b/tests/exchange/test_kraken.py index 241d15772..d63dd66cc 100644 --- a/tests/exchange/test_kraken.py +++ b/tests/exchange/test_kraken.py @@ -236,3 +236,16 @@ def test_stoploss_order_dry_run_kraken(default_conf, mocker): assert order['type'] == order_type assert order['price'] == 220 assert order['amount'] == 1 + + +def test_stoploss_adjust_kraken(mocker, default_conf): + exchange = get_patched_exchange(mocker, default_conf, id='kraken') + order = { + 'type': 'stop-loss', + 'price': 1500, + } + assert exchange.stoploss_adjust(1501, order) + assert not exchange.stoploss_adjust(1499, order) + # Test with invalid order case ... + order['type'] = 'stop_loss_limit' + assert not exchange.stoploss_adjust(1501, order) From 10d9db72a851769c1996f132e170588b4f708ee2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 19 Jan 2020 20:06:04 +0100 Subject: [PATCH 1522/3421] Adjust tests slightly --- tests/test_freqtradebot.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index a33d47f34..48bd2deb5 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1241,7 +1241,8 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - stoploss=stoploss + stoploss=stoploss, + stoploss_adjust=MagicMock(return_value=True), ) # enabling TSL @@ -1335,7 +1336,8 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - stoploss=stoploss + stoploss=stoploss, + stoploss_adjust=MagicMock(return_value=True), ) # enabling TSL @@ -1396,6 +1398,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, patch_edge(mocker) edge_conf['max_open_trades'] = float('inf') edge_conf['dry_run_wallet'] = 999.9 + edge_conf['exchange']['name'] = 'binance' mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=MagicMock(return_value={ @@ -1406,7 +1409,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - stoploss=stoploss + stoploss=stoploss, ) # enabling TSL @@ -1459,7 +1462,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, cancel_order_mock = MagicMock() stoploss_order_mock = MagicMock() mocker.patch('freqtrade.exchange.Exchange.cancel_order', cancel_order_mock) - mocker.patch('freqtrade.exchange.Exchange.stoploss', stoploss_order_mock) + mocker.patch('freqtrade.exchange.Binance.stoploss', stoploss_order_mock) # price goes down 5% mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ From 9474cb17922ac4b6a0969bf1617a42c1caa210d0 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2020 07:48:46 +0000 Subject: [PATCH 1523/3421] Bump ccxt from 1.21.56 to 1.21.76 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.21.56 to 1.21.76. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.21.56...1.21.76) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 15a9d687f..daf4984c0 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.21.56 +ccxt==1.21.76 SQLAlchemy==1.3.12 python-telegram-bot==12.3.0 arrow==0.15.5 From 8d4515935ae9ac849798a7111b4aa3bff0a39802 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2020 07:49:18 +0000 Subject: [PATCH 1524/3421] Bump pytest from 5.3.2 to 5.3.3 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.3.2 to 5.3.3. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.3.2...5.3.3) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 16f9baf95..e602bf184 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.0.0 mypy==0.761 -pytest==5.3.2 +pytest==5.3.3 pytest-asyncio==0.10.0 pytest-cov==2.8.1 pytest-mock==2.0.0 From 6e3336cb30aee9a279d9fda3659695e916d36560 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 20 Jan 2020 20:10:06 +0100 Subject: [PATCH 1525/3421] Adapt test to verify behaviour of stoploss_on_exchange in dry-run --- tests/test_freqtradebot.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5a4820f2f..6c6bd1753 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1318,6 +1318,14 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, rate=0.00002344 * 0.95 * 0.99, stop_price=0.00002344 * 0.95) + # price fell below stoploss, so dry-run sells trade. + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ + 'bid': 0.00002144, + 'ask': 0.00002146, + 'last': 0.00002144 + })) + assert freqtrade.handle_trade(trade) is True + def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, caplog, limit_buy_order, limit_sell_order) -> None: From 099bbc5c7f56df2ce193c42c60c99c7c45ea7b85 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 20 Jan 2020 20:14:40 +0100 Subject: [PATCH 1526/3421] Fix bug when stoploss_on_exchange in combination with dry-run does not sell orders --- freqtrade/strategy/interface.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 7bd6a9ac5..27bc8280e 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -389,9 +389,11 @@ class IStrategy(ABC): trade.adjust_stop_loss(high or current_rate, stop_loss_value) # evaluate if the stoploss was hit if stoploss is not on exchange + # in Dry-Run, this handles stoploss logic as well, as the logic will not be different to + # regular stoploss handling. if ((self.stoploss is not None) and (trade.stop_loss >= current_rate) and - (not self.order_types.get('stoploss_on_exchange'))): + (not self.order_types.get('stoploss_on_exchange') or self.config['dry_run'])): sell_type = SellType.STOP_LOSS From 1bf475fa1a1f5281f01b1b6a8ab3104f7553c1e8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 20 Jan 2020 20:24:40 +0100 Subject: [PATCH 1527/3421] Remove .get calls for dry_run - it's a mandatory property --- freqtrade/freqtradebot.py | 5 ++--- freqtrade/rpc/rpc.py | 6 +++--- freqtrade/rpc/rpc_manager.py | 2 +- tests/test_configuration.py | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e712892f1..acff2b2ad 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -63,8 +63,7 @@ class FreqtradeBot: self.exchange = ExchangeResolver.load_exchange(self.config['exchange']['name'], self.config) - persistence.init(self.config.get('db_url', None), - clean_open_orders=self.config.get('dry_run', False)) + persistence.init(self.config.get('db_url', None), clean_open_orders=self.config['dry_run']) self.wallets = Wallets(self.config, self.exchange) @@ -930,7 +929,7 @@ class FreqtradeBot: # if stoploss is on exchange and we are on dry_run mode, # we consider the sell price stop price - if self.config.get('dry_run', False) and sell_type == 'stoploss' \ + if self.config['dry_run'] and sell_type == 'stoploss' \ and self.strategy.order_types['stoploss_on_exchange']: limit = trade.stop_loss diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 0469d418d..d58b99f39 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -88,7 +88,7 @@ class RPC: """ config = self._freqtrade.config val = { - 'dry_run': config.get('dry_run', False), + 'dry_run': config['dry_run'], 'stake_currency': config['stake_currency'], 'stake_amount': config['stake_amount'], 'minimal_roi': config['minimal_roi'].copy(), @@ -337,7 +337,7 @@ class RPC: 'stake': stake_currency, }) if total == 0.0: - if self._freqtrade.config.get('dry_run', False): + if self._freqtrade.config['dry_run']: raise RPCException('Running in Dry Run, balances are not available.') else: raise RPCException('All balances are zero.') @@ -351,7 +351,7 @@ class RPC: 'symbol': symbol, 'value': value, 'stake': stake_currency, - 'note': 'Simulated balances' if self._freqtrade.config.get('dry_run', False) else '' + 'note': 'Simulated balances' if self._freqtrade.config['dry_run'] else '' } def _rpc_start(self) -> Dict[str, str]: diff --git a/freqtrade/rpc/rpc_manager.py b/freqtrade/rpc/rpc_manager.py index cb9e697e9..f687fe4d1 100644 --- a/freqtrade/rpc/rpc_manager.py +++ b/freqtrade/rpc/rpc_manager.py @@ -62,7 +62,7 @@ class RPCManager: logger.error(f"Message type {msg['type']} not implemented by handler {mod.name}.") def startup_messages(self, config, pairlist) -> None: - if config.get('dry_run', False): + if config['dry_run']: self.send_msg({ 'type': RPCMessageType.WARNING_NOTIFICATION, 'status': 'Dry run is enabled. All trades are simulated.' diff --git a/tests/test_configuration.py b/tests/test_configuration.py index a4d4c4abc..cbcd6416a 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -323,7 +323,7 @@ def test_load_dry_run(default_conf, mocker, config_value, expected, arglist) -> configuration = Configuration(Arguments(arglist).get_parsed_arg()) validated_conf = configuration.load_config() - assert validated_conf.get('dry_run') is expected + assert validated_conf['dry_run'] is expected def test_load_custom_strategy(default_conf, mocker) -> None: From c1c2717bc9a9216c042a7bec2efe94c15bfc4f18 Mon Sep 17 00:00:00 2001 From: Daniel Goller Date: Tue, 21 Jan 2020 15:49:24 +0000 Subject: [PATCH 1528/3421] added missing word in hyperopt loss example --- freqtrade/templates/sample_hyperopt_loss.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/templates/sample_hyperopt_loss.py b/freqtrade/templates/sample_hyperopt_loss.py index 5a2fb72b6..ee2c28bc9 100644 --- a/freqtrade/templates/sample_hyperopt_loss.py +++ b/freqtrade/templates/sample_hyperopt_loss.py @@ -27,7 +27,7 @@ class SampleHyperOptLoss(IHyperOptLoss): Defines the default loss function for hyperopt This is intended to give you some inspiration for your own loss function. - The Function needs to return a number (float) - which becomes for better backtest results. + The Function needs to return a number (float) - which becomes smaller for better backtest results. """ @staticmethod From bff0a0953794c1de68c582c8ba50a6f25845086f Mon Sep 17 00:00:00 2001 From: Daniel Goller Date: Tue, 21 Jan 2020 16:14:19 +0000 Subject: [PATCH 1529/3421] line was too long --- freqtrade/templates/sample_hyperopt_loss.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/templates/sample_hyperopt_loss.py b/freqtrade/templates/sample_hyperopt_loss.py index ee2c28bc9..4173d97f5 100644 --- a/freqtrade/templates/sample_hyperopt_loss.py +++ b/freqtrade/templates/sample_hyperopt_loss.py @@ -27,7 +27,8 @@ class SampleHyperOptLoss(IHyperOptLoss): Defines the default loss function for hyperopt This is intended to give you some inspiration for your own loss function. - The Function needs to return a number (float) - which becomes smaller for better backtest results. + The Function needs to return a number (float) - which becomes smaller for better backtest + results. """ @staticmethod From 7d2d0235a0407b564038f02b4834ab365cc72f8a Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 22 Jan 2020 06:08:34 +0100 Subject: [PATCH 1530/3421] Fix typo in sell-reason table generation --- freqtrade/optimize/optimize_reports.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 3801546b1..67056eaa9 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -70,7 +70,7 @@ def generate_text_table_sell_reason(data: Dict[str, Dict], results: DataFrame) - for reason, count in results['sell_reason'].value_counts().iteritems(): result = results.loc[results['sell_reason'] == reason] profit = len(result[result['profit_abs'] >= 0]) - loss = len(result[results['profit_abs'] < 0]) + loss = len(result[result['profit_abs'] < 0]) profit_mean = round(result['profit_percent'].mean() * 100.0, 2) tabular_data.append([reason.value, count, profit, loss, profit_mean]) return tabulate(tabular_data, headers=headers, tablefmt="pipe") From e13045b599f921e749e494dd49b13cc00d1d9e57 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 22 Jan 2020 06:17:13 +0100 Subject: [PATCH 1531/3421] upgrade pip in windows environment --- build_helpers/install_windows.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/build_helpers/install_windows.ps1 b/build_helpers/install_windows.ps1 index 30427c3cc..138fba208 100644 --- a/build_helpers/install_windows.ps1 +++ b/build_helpers/install_windows.ps1 @@ -2,6 +2,7 @@ # Downloaded from https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib # Invoke-WebRequest -Uri "https://download.lfd.uci.edu/pythonlibs/xxxxxxx/TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl" -OutFile "TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl" +python -m pip install --upgrade pip pip install build_helpers\TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl pip install -r requirements-dev.txt From 8a940eb0c1d7cc15bb7cc559875259f819dc2ad2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 22 Jan 2020 14:46:28 +0100 Subject: [PATCH 1532/3421] Align price finding function name on buy side with get_sell_rate --- freqtrade/freqtradebot.py | 4 ++-- tests/test_freqtradebot.py | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index acff2b2ad..387ddb063 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -218,7 +218,7 @@ class FreqtradeBot: return trades_created - def get_target_bid(self, pair: str, tick: Dict = None) -> float: + def get_buy_rate(self, pair: str, tick: Dict = None) -> float: """ Calculates bid target between current ask price and last price :return: float: Price @@ -435,7 +435,7 @@ class FreqtradeBot: buy_limit_requested = price else: # Calculate price - buy_limit_requested = self.get_target_bid(pair) + buy_limit_requested = self.get_buy_rate(pair) min_stake_amount = self._get_min_pair_stake_amount(pair, buy_limit_requested) if min_stake_amount is not None and min_stake_amount > stake_amount: diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 6c6bd1753..d00fab9c7 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -912,7 +912,7 @@ def test_balance_fully_ask_side(mocker, default_conf) -> None: mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={'ask': 20, 'last': 10})) - assert freqtrade.get_target_bid('ETH/BTC') == 20 + assert freqtrade.get_buy_rate('ETH/BTC') == 20 def test_balance_fully_last_side(mocker, default_conf) -> None: @@ -921,7 +921,7 @@ def test_balance_fully_last_side(mocker, default_conf) -> None: mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={'ask': 20, 'last': 10})) - assert freqtrade.get_target_bid('ETH/BTC') == 10 + assert freqtrade.get_buy_rate('ETH/BTC') == 10 def test_balance_bigger_last_ask(mocker, default_conf) -> None: @@ -929,7 +929,7 @@ def test_balance_bigger_last_ask(mocker, default_conf) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={'ask': 5, 'last': 10})) - assert freqtrade.get_target_bid('ETH/BTC') == 5 + assert freqtrade.get_buy_rate('ETH/BTC') == 5 def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: @@ -938,10 +938,10 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: freqtrade = FreqtradeBot(default_conf) stake_amount = 2 bid = 0.11 - get_bid = MagicMock(return_value=bid) + buy_rate_mock = MagicMock(return_value=bid) mocker.patch.multiple( 'freqtrade.freqtradebot.FreqtradeBot', - get_target_bid=get_bid, + get_buy_rate=buy_rate_mock, _get_min_pair_stake_amount=MagicMock(return_value=1) ) buy_mm = MagicMock(return_value={'id': limit_buy_order['id']}) @@ -958,7 +958,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: pair = 'ETH/BTC' assert freqtrade.execute_buy(pair, stake_amount) - assert get_bid.call_count == 1 + assert buy_rate_mock.call_count == 1 assert buy_mm.call_count == 1 call_args = buy_mm.call_args_list[0][1] assert call_args['pair'] == pair @@ -975,8 +975,8 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: # Test calling with price fix_price = 0.06 assert freqtrade.execute_buy(pair, stake_amount, fix_price) - # Make sure get_target_bid wasn't called again - assert get_bid.call_count == 1 + # Make sure get_buy_rate wasn't called again + assert buy_rate_mock.call_count == 1 assert buy_mm.call_count == 2 call_args = buy_mm.call_args_list[1][1] @@ -3500,7 +3500,7 @@ def test_order_book_depth_of_market_high_delta(default_conf, ticker, limit_buy_o def test_order_book_bid_strategy1(mocker, default_conf, order_book_l2) -> None: """ - test if function get_target_bid will return the order book price + test if function get_buy_rate will return the order book price instead of the ask rate """ patch_exchange(mocker) @@ -3518,13 +3518,13 @@ def test_order_book_bid_strategy1(mocker, default_conf, order_book_l2) -> None: default_conf['telegram']['enabled'] = False freqtrade = FreqtradeBot(default_conf) - assert freqtrade.get_target_bid('ETH/BTC') == 0.043935 + assert freqtrade.get_buy_rate('ETH/BTC') == 0.043935 assert ticker_mock.call_count == 0 def test_order_book_bid_strategy2(mocker, default_conf, order_book_l2) -> None: """ - test if function get_target_bid will return the ask rate (since its value is lower) + test if function get_buy_rate will return the ask rate (since its value is lower) instead of the order book rate (even if enabled) """ patch_exchange(mocker) @@ -3543,7 +3543,7 @@ def test_order_book_bid_strategy2(mocker, default_conf, order_book_l2) -> None: freqtrade = FreqtradeBot(default_conf) # orderbook shall be used even if tickers would be lower. - assert freqtrade.get_target_bid('ETH/BTC') != 0.042 + assert freqtrade.get_buy_rate('ETH/BTC') != 0.042 assert ticker_mock.call_count == 0 From f36bc80ad12a9784e2d20a9b9b9a7d10e2d62208 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 22 Jan 2020 19:43:02 +0100 Subject: [PATCH 1533/3421] Add parametrized tests for get_buy_rate --- tests/test_freqtradebot.py | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index d00fab9c7..e0f2ecd3a 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -906,30 +906,22 @@ def test_process_informative_pairs_added(default_conf, ticker, mocker) -> None: assert ("ETH/BTC", default_conf["ticker_interval"]) in refresh_mock.call_args[0][0] -def test_balance_fully_ask_side(mocker, default_conf) -> None: - default_conf['bid_strategy']['ask_last_balance'] = 0.0 +@pytest.mark.parametrize("ask,last,last_ab,expected", [ + (20, 10, 0.0, 20), # Full ask side + (20, 10, 1.0, 10), # Full last side + (20, 10, 0.5, 15), # Between ask and last + (20, 10, 0.7, 13), # Between ask and last + (20, 10, 0.3, 17), # Between ask and last + (5, 10, 1.0, 5), # last bigger than ask + (5, 10, 0.5, 5), # last bigger than ask +]) +def test_get_buy_rate(mocker, default_conf, ask, last, last_ab, expected) -> None: + default_conf['bid_strategy']['ask_last_balance'] = last_ab freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', - MagicMock(return_value={'ask': 20, 'last': 10})) + MagicMock(return_value={'ask': ask, 'last': last})) - assert freqtrade.get_buy_rate('ETH/BTC') == 20 - - -def test_balance_fully_last_side(mocker, default_conf) -> None: - default_conf['bid_strategy']['ask_last_balance'] = 1.0 - freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', - MagicMock(return_value={'ask': 20, 'last': 10})) - - assert freqtrade.get_buy_rate('ETH/BTC') == 10 - - -def test_balance_bigger_last_ask(mocker, default_conf) -> None: - default_conf['bid_strategy']['ask_last_balance'] = 1.0 - freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', - MagicMock(return_value={'ask': 5, 'last': 10})) - assert freqtrade.get_buy_rate('ETH/BTC') == 5 + assert freqtrade.get_buy_rate('ETH/BTC') == expected def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: From 58ceda4b903172d153d34337c9bb4f72a2dda4dc Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 22 Jan 2020 19:54:55 +0100 Subject: [PATCH 1534/3421] update wallets after forcesell --- freqtrade/rpc/rpc.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index d58b99f39..c38f36c1d 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -425,6 +425,7 @@ class RPC: for trade in Trade.get_open_trades(): _exec_forcesell(trade) Trade.session.flush() + self._freqtrade.wallets.update() return {'result': 'Created sell orders for all open trades.'} # Query for trade @@ -437,6 +438,7 @@ class RPC: _exec_forcesell(trade) Trade.session.flush() + self._freqtrade.wallets.update() return {'result': f'Created sell order for trade {trade_id}.'} def _rpc_forcebuy(self, pair: str, price: Optional[float]) -> Optional[Trade]: From aad10ceee35303370c4a01a1b88e92691b01b615 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 22 Jan 2020 20:50:09 +0100 Subject: [PATCH 1535/3421] Add threading lock object for /forcesell Protects against stoploss_on_exchange order recreation in case of /forcesell (it's a timing issue, so may or may not happen). --- freqtrade/freqtradebot.py | 16 +++++++++++----- freqtrade/rpc/rpc.py | 37 +++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 387ddb063..e3856e200 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -7,6 +7,7 @@ import traceback from datetime import datetime from math import isclose from os import getpid +from threading import Lock from typing import Any, Dict, List, Optional, Tuple import arrow @@ -27,7 +28,6 @@ from freqtrade.state import State from freqtrade.strategy.interface import IStrategy, SellType from freqtrade.wallets import Wallets - logger = logging.getLogger(__name__) @@ -92,6 +92,8 @@ class FreqtradeBot: # the initial state of the bot. # Keep this at the end of this initialization method. self.rpc: RPCManager = RPCManager(self) + # Protect sell-logic from forcesell and viceversa + self._sell_lock = Lock() def cleanup(self) -> None: """ @@ -132,8 +134,12 @@ class FreqtradeBot: self.dataprovider.refresh(self._create_pair_whitelist(self.active_pair_whitelist), self.strategy.informative_pairs()) - # First process current opened trades (positions) - self.exit_positions(trades) + # Protect from collisions with forcesell. + # Without this, freqtrade my try to recreate stoploss_on_exchange orders + # while selling is in process, since telegram messages arrive in an different thread. + with self._sell_lock: + # First process current opened trades (positions) + self.exit_positions(trades) # Then looking for buy opportunities if self.get_free_open_trades(): @@ -748,8 +754,8 @@ class FreqtradeBot: Check and execute sell """ should_sell = self.strategy.should_sell( - trade, sell_rate, datetime.utcnow(), buy, sell, - force_stoploss=self.edge.stoploss(trade.pair) if self.edge else 0 + trade, sell_rate, datetime.utcnow(), buy, sell, + force_stoploss=self.edge.stoploss(trade.pair) if self.edge else 0 ) if should_sell.sell_flag: diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index c38f36c1d..41097c211 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -420,26 +420,27 @@ class RPC: if self._freqtrade.state != State.RUNNING: raise RPCException('trader is not running') - if trade_id == 'all': - # Execute sell for all open orders - for trade in Trade.get_open_trades(): - _exec_forcesell(trade) + with self._freqtrade._sell_lock: + if trade_id == 'all': + # Execute sell for all open orders + for trade in Trade.get_open_trades(): + _exec_forcesell(trade) + Trade.session.flush() + self._freqtrade.wallets.update() + return {'result': 'Created sell orders for all open trades.'} + + # Query for trade + trade = Trade.get_trades( + trade_filter=[Trade.id == trade_id, Trade.is_open.is_(True), ] + ).first() + if not trade: + logger.warning('forcesell: Invalid argument received') + raise RPCException('invalid argument') + + _exec_forcesell(trade) Trade.session.flush() self._freqtrade.wallets.update() - return {'result': 'Created sell orders for all open trades.'} - - # Query for trade - trade = Trade.get_trades( - trade_filter=[Trade.id == trade_id, Trade.is_open.is_(True), ] - ).first() - if not trade: - logger.warning('forcesell: Invalid argument received') - raise RPCException('invalid argument') - - _exec_forcesell(trade) - Trade.session.flush() - self._freqtrade.wallets.update() - return {'result': f'Created sell order for trade {trade_id}.'} + return {'result': f'Created sell order for trade {trade_id}.'} def _rpc_forcebuy(self, pair: str, price: Optional[float]) -> Optional[Trade]: """ From f5a44e4fc440ff4bedeb07617d33928d3017d858 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 23 Jan 2020 19:38:35 +0100 Subject: [PATCH 1536/3421] open_order_id should be None when handling stoploss orders --- tests/test_freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index e0f2ecd3a..a80bb7452 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1165,7 +1165,7 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, freqtrade.enter_positions() trade = Trade.query.first() trade.is_open = True - trade.open_order_id = '12345' + trade.open_order_id = None trade.stoploss_order_id = 100 assert trade From a83de241e41155dbef49ffd858e994033c5a1cfa Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 23 Jan 2020 19:40:31 +0100 Subject: [PATCH 1537/3421] Check for closed stoploss-orders first --- freqtrade/freqtradebot.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e3856e200..5505005ff 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -679,6 +679,16 @@ class FreqtradeBot: except InvalidOrderException as exception: logger.warning('Unable to fetch stoploss order: %s', exception) + # We check if stoploss order is fulfilled + if stoploss_order and stoploss_order['status'] == 'closed': + trade.sell_reason = SellType.STOPLOSS_ON_EXCHANGE.value + trade.update(stoploss_order) + # Lock pair for one candle to prevent immediate rebuys + self.strategy.lock_pair(trade.pair, + timeframe_to_next_date(self.config['ticker_interval'])) + self._notify_sell(trade, "stoploss") + return True + # If buy order is fulfilled but there is no stoploss, we add a stoploss on exchange if (not trade.open_order_id and not stoploss_order): @@ -699,16 +709,6 @@ class FreqtradeBot: trade.stoploss_order_id = None logger.warning('Stoploss order was cancelled, but unable to recreate one.') - # We check if stoploss order is fulfilled - if stoploss_order and stoploss_order['status'] == 'closed': - trade.sell_reason = SellType.STOPLOSS_ON_EXCHANGE.value - trade.update(stoploss_order) - # Lock pair for one candle to prevent immediate rebuys - self.strategy.lock_pair(trade.pair, - timeframe_to_next_date(self.config['ticker_interval'])) - self._notify_sell(trade, "stoploss") - return True - # Finally we check if stoploss on exchange should be moved up because of trailing. if stoploss_order and self.config.get('trailing_stop', False): # if trailing stoploss is enabled we check if stoploss value has changed From ea5ac1efb531058cf4ed67ba4fccd4306cad8af5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 23 Jan 2020 20:24:23 +0100 Subject: [PATCH 1538/3421] Don't handle stoploss if there is an open regular order --- freqtrade/freqtradebot.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5505005ff..c150d1aa9 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -689,8 +689,13 @@ class FreqtradeBot: self._notify_sell(trade, "stoploss") return True + if trade.open_order_id: + # Trade has an open Buy or Sell order, Stoploss-handling can't happen in this case + # as the Amount on the exchange is tied up in another trade. + return False + # If buy order is fulfilled but there is no stoploss, we add a stoploss on exchange - if (not trade.open_order_id and not stoploss_order): + if (not stoploss_order): stoploss = self.edge.stoploss(pair=trade.pair) if self.edge else self.strategy.stoploss From 70b9bd9c0e7d2b37a4386f0809af7237a9dada6a Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 23 Jan 2020 20:36:48 +0100 Subject: [PATCH 1539/3421] Verify if trade is closed before acting on Stoploss_on_exchange --- freqtrade/freqtradebot.py | 3 ++- tests/test_freqtradebot.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c150d1aa9..9f06cbb67 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -689,9 +689,10 @@ class FreqtradeBot: self._notify_sell(trade, "stoploss") return True - if trade.open_order_id: + if trade.open_order_id or not trade.is_open: # Trade has an open Buy or Sell order, Stoploss-handling can't happen in this case # as the Amount on the exchange is tied up in another trade. + # The trade can be closed already (sell-order fill confirmation came in this iteration) return False # If buy order is fulfilled but there is no stoploss, we add a stoploss on exchange diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index a80bb7452..65b5adda5 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1127,6 +1127,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, 'freqtrade.exchange.Exchange.stoploss_limit', side_effect=DependencyException() ) + trade.is_open = True freqtrade.handle_stoploss_on_exchange(trade) assert log_has('Unable to place a stoploss order on exchange.', caplog) assert trade.stoploss_order_id is None From 72c273aaedc237e70e049a67db4d469faf116c03 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 23 Jan 2020 21:07:11 +0100 Subject: [PATCH 1540/3421] Add test for closed trade case --- tests/test_freqtradebot.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 65b5adda5..147ad9d7c 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1141,6 +1141,16 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, freqtrade.handle_stoploss_on_exchange(trade) assert stoploss_limit.call_count == 1 + # Sixth case: Closed Trade + # Should not create new order + trade.stoploss_order_id = None + trade.is_open = False + stoploss_limit.reset_mock() + mocker.patch('freqtrade.exchange.Exchange.get_order') + mocker.patch('freqtrade.exchange.Exchange.stoploss_limit', stoploss_limit) + assert freqtrade.handle_stoploss_on_exchange(trade) is False + assert stoploss_limit.call_count == 0 + def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, limit_buy_order, limit_sell_order) -> None: From f8db7f170981898fcc7509b59acdb25b1f01550b Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 25 Jan 2020 04:17:41 +0100 Subject: [PATCH 1541/3421] added ask price, bid price, immediate ask quantity, and immediate bid quantity to check_depth_of_market_buy. also added a line that mentions if delta condition was satisfied or not. --- freqtrade/freqtradebot.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e3856e200..f1584c731 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -423,11 +423,14 @@ class FreqtradeBot: order_book_bids = order_book_data_frame['b_size'].sum() order_book_asks = order_book_data_frame['a_size'].sum() bids_ask_delta = order_book_bids / order_book_asks - logger.info('bids: %s, asks: %s, delta: %s', order_book_bids, - order_book_asks, bids_ask_delta) + logger.info('bids: %s, asks: %s, delta: %s, askprice: %s, bidprice: %s, immediate askquantity: %s, immediate bidquantity: %s', + order_book_bids, order_book_asks, bids_ask_delta, order_book['asks'][0][0], order_book['bids'][0][0], order_book['asks'][0][1], order_book['bids'][0][1]) if bids_ask_delta >= conf_bids_to_ask_delta: + logger.info('bids to ask delta DOES satisfy condition.') return True - return False + else: + logger.info('bids to ask delta DOES NOT satisfy condition.') + return False def execute_buy(self, pair: str, stake_amount: float, price: Optional[float] = None) -> bool: """ From f4c7edf551442f369c5f451d5cd66000f196d728 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 14 Dec 2019 02:12:16 +0300 Subject: [PATCH 1542/3421] No args for backtest(), use arguments --- freqtrade/optimize/backtesting.py | 53 +++++++++++++++---------------- freqtrade/optimize/hyperopt.py | 14 ++++---- 2 files changed, 32 insertions(+), 35 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 1070f2481..92129b324 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -279,30 +279,28 @@ class Backtesting: return bt_res return None - def backtest(self, args: Dict) -> DataFrame: + def backtest(self, processed: Dict, stake_amount: int, + start_date, end_date, + max_open_trades: int = 0, position_stacking: bool = False) -> DataFrame: """ - Implements backtesting functionality + Implement backtesting functionality NOTE: This method is used by Hyperopt at each iteration. Please keep it optimized. Of course try to not have ugly code. By some accessor are sometime slower than functions. - Avoid, logging on this method + Avoid extensive logging in this method and functions it calls. - :param args: a dict containing: - stake_amount: btc amount to use for each trade - processed: a processed dictionary with format {pair, data} - max_open_trades: maximum number of concurrent trades (default: 0, disabled) - position_stacking: do we allow position stacking? (default: False) - :return: DataFrame + :param processed: a processed dictionary with format {pair, data} + :param stake_amount: amount to use for each trade + :param start_date: backtesting timerange start datetime + :param end_date: backtesting timerange end datetime + :param max_open_trades: maximum number of concurrent trades, <= 0 means unlimited + :param position_stacking: do we allow position stacking? + :return: DataFrame with trades (results of backtesting) """ - # Arguments are long and noisy, so this is commented out. - # Uncomment if you need to debug the backtest() method. - # logger.debug(f"Start backtest, args: {args}") - processed = args['processed'] - stake_amount = args['stake_amount'] - max_open_trades = args.get('max_open_trades', 0) - position_stacking = args.get('position_stacking', False) - start_date = args['start_date'] - end_date = args['end_date'] + logger.debug(f"Run backtest, stake_amount: {stake_amount}, " + f"start_date: {start_date}, end_date: {end_date}, " + f"max_open_trades: {max_open_trades}, position_stacking: {position_stacking}" + ) trades = [] trade_count_lock: Dict = {} @@ -369,18 +367,21 @@ class Backtesting: def start(self) -> None: """ - Run a backtesting end-to-end + Run backtesting end-to-end :return: None """ data: Dict[str, Any] = {} + logger.info('Using stake_currency: %s ...', self.config['stake_currency']) logger.info('Using stake_amount: %s ...', self.config['stake_amount']) + # Use max_open_trades in backtesting, except --disable-max-market-positions is set if self.config.get('use_max_market_positions', True): max_open_trades = self.config['max_open_trades'] else: logger.info('Ignoring max_open_trades (--disable-max-market-positions was used) ...') max_open_trades = 0 + position_stacking = self.config.get('position_stacking', False) data, timerange = self.load_bt_data() @@ -403,14 +404,12 @@ class Backtesting: ) # Execute backtest and print results all_results[self.strategy.get_strategy_name()] = self.backtest( - { - 'stake_amount': self.config.get('stake_amount'), - 'processed': preprocessed, - 'max_open_trades': max_open_trades, - 'position_stacking': self.config.get('position_stacking', False), - 'start_date': min_date, - 'end_date': max_date, - } + processed=preprocessed, + stake_amount=self.config.get('stake_amount'), + start_date=min_date, + end_date=max_date, + max_open_trades=max_open_trades, + position_stacking=position_stacking, ) for strategy, results in all_results.items(): diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index a8f1a71ef..525f491f3 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -372,14 +372,12 @@ class Hyperopt: min_date, max_date = get_timerange(processed) backtesting_results = self.backtesting.backtest( - { - 'stake_amount': self.config['stake_amount'], - 'processed': processed, - 'max_open_trades': self.max_open_trades, - 'position_stacking': self.position_stacking, - 'start_date': min_date, - 'end_date': max_date, - } + processed=processed, + stake_amount=self.config['stake_amount'], + start_date=min_date, + end_date=max_date, + max_open_trades=self.max_open_trades, + position_stacking=self.position_stacking, ) return self._get_results_dict(backtesting_results, min_date, max_date, params_dict, params_details) From 52f0ed53109e1a4aa8429510321b4a6fe1f08660 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 14 Dec 2019 02:12:44 +0300 Subject: [PATCH 1543/3421] Adjust tests --- tests/optimize/test_backtest_detail.py | 12 ++--- tests/optimize/test_backtesting.py | 73 ++++++++++++-------------- 2 files changed, 38 insertions(+), 47 deletions(-) diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py index 47cb9f353..bd2765430 100644 --- a/tests/optimize/test_backtest_detail.py +++ b/tests/optimize/test_backtest_detail.py @@ -382,13 +382,11 @@ def test_backtest_results(default_conf, fee, mocker, caplog, data) -> None: data_processed = {pair: frame.copy()} min_date, max_date = get_timerange({pair: frame}) results = backtesting.backtest( - { - 'stake_amount': default_conf['stake_amount'], - 'processed': data_processed, - 'max_open_trades': 10, - 'start_date': min_date, - 'end_date': max_date, - } + processed=data_processed, + stake_amount=default_conf['stake_amount'], + start_date=min_date, + end_date=max_date, + max_open_trades=10, ) assert len(results) == len(data.trades) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 83d212e3d..acbc44e21 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -103,14 +103,12 @@ def simple_backtest(config, contour, num_results, mocker, testdatadir) -> None: min_date, max_date = get_timerange(processed) assert isinstance(processed, dict) results = backtesting.backtest( - { - 'stake_amount': config['stake_amount'], - 'processed': processed, - 'max_open_trades': 1, - 'position_stacking': False, - 'start_date': min_date, - 'end_date': max_date, - } + processed=processed, + stake_amount=config['stake_amount'], + start_date=min_date, + end_date=max_date, + max_open_trades=1, + position_stacking=False, ) # results :: assert len(results) == num_results @@ -132,7 +130,7 @@ def _load_pair_as_ticks(pair, tickfreq): # FIX: fixturize this? -def _make_backtest_conf(mocker, datadir, conf=None, pair='UNITTEST/BTC', record=None): +def _make_backtest_conf(mocker, datadir, conf=None, pair='UNITTEST/BTC'): data = history.load_data(datadir=datadir, timeframe='1m', pairs=[pair]) data = trim_dictlist(data, -201) patch_exchange(mocker) @@ -140,13 +138,12 @@ def _make_backtest_conf(mocker, datadir, conf=None, pair='UNITTEST/BTC', record= processed = backtesting.strategy.tickerdata_to_dataframe(data) min_date, max_date = get_timerange(processed) return { - 'stake_amount': conf['stake_amount'], 'processed': processed, - 'max_open_trades': 10, - 'position_stacking': False, - 'record': record, + 'stake_amount': conf['stake_amount'], 'start_date': min_date, 'end_date': max_date, + 'max_open_trades': 10, + 'position_stacking': False, } @@ -422,14 +419,12 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: data_processed = backtesting.strategy.tickerdata_to_dataframe(data) min_date, max_date = get_timerange(data_processed) results = backtesting.backtest( - { - 'stake_amount': default_conf['stake_amount'], - 'processed': data_processed, - 'max_open_trades': 10, - 'position_stacking': False, - 'start_date': min_date, - 'end_date': max_date, - } + processed=data_processed, + stake_amount=default_conf['stake_amount'], + start_date=min_date, + end_date=max_date, + max_open_trades=10, + position_stacking=False, ) assert not results.empty assert len(results) == 2 @@ -478,14 +473,12 @@ def test_backtest_1min_ticker_interval(default_conf, fee, mocker, testdatadir) - processed = backtesting.strategy.tickerdata_to_dataframe(data) min_date, max_date = get_timerange(processed) results = backtesting.backtest( - { - 'stake_amount': default_conf['stake_amount'], - 'processed': processed, - 'max_open_trades': 1, - 'position_stacking': False, - 'start_date': min_date, - 'end_date': max_date, - } + processed=processed, + stake_amount=default_conf['stake_amount'], + start_date=min_date, + end_date=max_date, + max_open_trades=1, + position_stacking=False, ) assert not results.empty assert len(results) == 1 @@ -525,7 +518,7 @@ def test_backtest_clash_buy_sell(mocker, default_conf, testdatadir): backtesting = Backtesting(default_conf) backtesting.strategy.advise_buy = fun # Override backtesting.strategy.advise_sell = fun # Override - results = backtesting.backtest(backtest_conf) + results = backtesting.backtest(**backtest_conf) assert results.empty @@ -540,7 +533,7 @@ def test_backtest_only_sell(mocker, default_conf, testdatadir): backtesting = Backtesting(default_conf) backtesting.strategy.advise_buy = fun # Override backtesting.strategy.advise_sell = fun # Override - results = backtesting.backtest(backtest_conf) + results = backtesting.backtest(**backtest_conf) assert results.empty @@ -553,7 +546,7 @@ def test_backtest_alternate_buy_sell(default_conf, fee, mocker, testdatadir): backtesting = Backtesting(default_conf) backtesting.strategy.advise_buy = _trend_alternate # Override backtesting.strategy.advise_sell = _trend_alternate # Override - results = backtesting.backtest(backtest_conf) + results = backtesting.backtest(**backtest_conf) backtesting._store_backtest_result("test_.json", results) # 200 candles in backtest data # won't buy on first (shifted by 1) @@ -598,15 +591,15 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) data_processed = backtesting.strategy.tickerdata_to_dataframe(data) min_date, max_date = get_timerange(data_processed) backtest_conf = { - 'stake_amount': default_conf['stake_amount'], 'processed': data_processed, - 'max_open_trades': 3, - 'position_stacking': False, + 'stake_amount': default_conf['stake_amount'], 'start_date': min_date, 'end_date': max_date, + 'max_open_trades': 3, + 'position_stacking': False, } - results = backtesting.backtest(backtest_conf) + results = backtesting.backtest(**backtest_conf) # Make sure we have parallel trades assert len(evaluate_result_multi(results, '5m', 2)) > 0 @@ -614,14 +607,14 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) assert len(evaluate_result_multi(results, '5m', 3)) == 0 backtest_conf = { - 'stake_amount': default_conf['stake_amount'], 'processed': data_processed, - 'max_open_trades': 1, - 'position_stacking': False, + 'stake_amount': default_conf['stake_amount'], 'start_date': min_date, 'end_date': max_date, + 'max_open_trades': 1, + 'position_stacking': False, } - results = backtesting.backtest(backtest_conf) + results = backtesting.backtest(**backtest_conf) assert len(evaluate_result_multi(results, '5m', 1)) == 0 From bd4dd8403b0b6223bff4ef494f28c15c506caf75 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Jan 2020 12:48:13 +0100 Subject: [PATCH 1544/3421] Fix type-errors with stake_amount --- freqtrade/optimize/backtesting.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 92129b324..cdf74f65f 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -279,7 +279,7 @@ class Backtesting: return bt_res return None - def backtest(self, processed: Dict, stake_amount: int, + def backtest(self, processed: Dict, stake_amount: float, start_date, end_date, max_open_trades: int = 0, position_stacking: bool = False) -> DataFrame: """ @@ -300,7 +300,7 @@ class Backtesting: logger.debug(f"Run backtest, stake_amount: {stake_amount}, " f"start_date: {start_date}, end_date: {end_date}, " f"max_open_trades: {max_open_trades}, position_stacking: {position_stacking}" - ) + ) trades = [] trade_count_lock: Dict = {} @@ -405,7 +405,7 @@ class Backtesting: # Execute backtest and print results all_results[self.strategy.get_strategy_name()] = self.backtest( processed=preprocessed, - stake_amount=self.config.get('stake_amount'), + stake_amount=self.config['stake_amount'], start_date=min_date, end_date=max_date, max_open_trades=max_open_trades, From a3ac05cc16f3b9fd684fd0330f9b5e3191a34d4a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Jan 2020 13:38:13 +0100 Subject: [PATCH 1545/3421] Fix missed mock --- tests/test_utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index e145a8470..7ca2cac5a 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -665,11 +665,11 @@ def test_start_list_strategies(mocker, caplog, capsys): assert "DefaultStrategy" in captured.out -def test_start_test_pairlist(mocker, caplog, markets, tickers, default_conf, capsys): +def test_start_test_pairlist(mocker, caplog, tickers, default_conf, capsys): + patch_exchange(mocker, mock_markets=True) mocker.patch.multiple('freqtrade.exchange.Exchange', - markets=PropertyMock(return_value=markets), exchange_has=MagicMock(return_value=True), - get_tickers=tickers + get_tickers=tickers, ) default_conf['pairlists'] = [ From 3f2542fcbcf185ac61668f1394c781da5c7ef421 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 10:44:42 +0100 Subject: [PATCH 1546/3421] Move edge-module out of __init__.py --- freqtrade/edge/__init__.py | 465 +---------------------------- freqtrade/edge/edge_positioning.py | 464 ++++++++++++++++++++++++++++ 2 files changed, 465 insertions(+), 464 deletions(-) create mode 100644 freqtrade/edge/edge_positioning.py diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index 15883357b..d275a80e3 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -1,464 +1 @@ -# pragma pylint: disable=W0603 -""" Edge positioning package """ -import logging -from typing import Any, Dict, NamedTuple - -import arrow -import numpy as np -import utils_find_1st as utf1st -from pandas import DataFrame - -from freqtrade import constants -from freqtrade.configuration import TimeRange -from freqtrade.data import history -from freqtrade.exceptions import OperationalException -from freqtrade.strategy.interface import SellType - -logger = logging.getLogger(__name__) - - -class PairInfo(NamedTuple): - stoploss: float - winrate: float - risk_reward_ratio: float - required_risk_reward: float - expectancy: float - nb_trades: int - avg_trade_duration: float - - -class Edge: - """ - Calculates Win Rate, Risk Reward Ratio, Expectancy - against historical data for a give set of markets and a strategy - it then adjusts stoploss and position size accordingly - and force it into the strategy - Author: https://github.com/mishaker - """ - - config: Dict = {} - _cached_pairs: Dict[str, Any] = {} # Keeps a list of pairs - - def __init__(self, config: Dict[str, Any], exchange, strategy) -> None: - - self.config = config - self.exchange = exchange - self.strategy = strategy - - self.edge_config = self.config.get('edge', {}) - self._cached_pairs: Dict[str, Any] = {} # Keeps a list of pairs - self._final_pairs: list = [] - - # checking max_open_trades. it should be -1 as with Edge - # the number of trades is determined by position size - if self.config['max_open_trades'] != float('inf'): - logger.critical('max_open_trades should be -1 in config !') - - if self.config['stake_amount'] != constants.UNLIMITED_STAKE_AMOUNT: - raise OperationalException('Edge works only with unlimited stake amount') - - # Deprecated capital_available_percentage. Will use tradable_balance_ratio in the future. - self._capital_percentage: float = self.edge_config.get( - 'capital_available_percentage', self.config['tradable_balance_ratio']) - self._allowed_risk: float = self.edge_config.get('allowed_risk') - self._since_number_of_days: int = self.edge_config.get('calculate_since_number_of_days', 14) - self._last_updated: int = 0 # Timestamp of pairs last updated time - self._refresh_pairs = True - - self._stoploss_range_min = float(self.edge_config.get('stoploss_range_min', -0.01)) - self._stoploss_range_max = float(self.edge_config.get('stoploss_range_max', -0.05)) - self._stoploss_range_step = float(self.edge_config.get('stoploss_range_step', -0.001)) - - # calculating stoploss range - self._stoploss_range = np.arange( - self._stoploss_range_min, - self._stoploss_range_max, - self._stoploss_range_step - ) - - self._timerange: TimeRange = TimeRange.parse_timerange("%s-" % arrow.now().shift( - days=-1 * self._since_number_of_days).format('YYYYMMDD')) - if config.get('fee'): - self.fee = config['fee'] - else: - self.fee = self.exchange.get_fee(symbol=self.config['exchange']['pair_whitelist'][0]) - - def calculate(self) -> bool: - pairs = self.config['exchange']['pair_whitelist'] - heartbeat = self.edge_config.get('process_throttle_secs') - - if (self._last_updated > 0) and ( - self._last_updated + heartbeat > arrow.utcnow().timestamp): - return False - - data: Dict[str, Any] = {} - logger.info('Using stake_currency: %s ...', self.config['stake_currency']) - logger.info('Using local backtesting data (using whitelist in given config) ...') - - if self._refresh_pairs: - history.refresh_data( - datadir=self.config['datadir'], - pairs=pairs, - exchange=self.exchange, - timeframe=self.strategy.ticker_interval, - timerange=self._timerange, - ) - - data = history.load_data( - datadir=self.config['datadir'], - pairs=pairs, - timeframe=self.strategy.ticker_interval, - timerange=self._timerange, - startup_candles=self.strategy.startup_candle_count, - ) - - if not data: - # Reinitializing cached pairs - self._cached_pairs = {} - logger.critical("No data found. Edge is stopped ...") - return False - - preprocessed = self.strategy.tickerdata_to_dataframe(data) - - # Print timeframe - min_date, max_date = history.get_timerange(preprocessed) - logger.info( - 'Measuring data from %s up to %s (%s days) ...', - min_date.isoformat(), - max_date.isoformat(), - (max_date - min_date).days - ) - headers = ['date', 'buy', 'open', 'close', 'sell', 'high', 'low'] - - trades: list = [] - for pair, pair_data in preprocessed.items(): - # Sorting dataframe by date and reset index - pair_data = pair_data.sort_values(by=['date']) - pair_data = pair_data.reset_index(drop=True) - - ticker_data = self.strategy.advise_sell( - self.strategy.advise_buy(pair_data, {'pair': pair}), {'pair': pair})[headers].copy() - - trades += self._find_trades_for_stoploss_range(ticker_data, pair, self._stoploss_range) - - # If no trade found then exit - if len(trades) == 0: - logger.info("No trades found.") - return False - - # Fill missing, calculable columns, profit, duration , abs etc. - trades_df = self._fill_calculable_fields(DataFrame(trades)) - self._cached_pairs = self._process_expectancy(trades_df) - self._last_updated = arrow.utcnow().timestamp - - return True - - def stake_amount(self, pair: str, free_capital: float, - total_capital: float, capital_in_trade: float) -> float: - stoploss = self.stoploss(pair) - available_capital = (total_capital + capital_in_trade) * self._capital_percentage - allowed_capital_at_risk = available_capital * self._allowed_risk - max_position_size = abs(allowed_capital_at_risk / stoploss) - position_size = min(max_position_size, free_capital) - if pair in self._cached_pairs: - logger.info( - 'winrate: %s, expectancy: %s, position size: %s, pair: %s,' - ' capital in trade: %s, free capital: %s, total capital: %s,' - ' stoploss: %s, available capital: %s.', - self._cached_pairs[pair].winrate, - self._cached_pairs[pair].expectancy, - position_size, pair, - capital_in_trade, free_capital, total_capital, - stoploss, available_capital - ) - return round(position_size, 15) - - def stoploss(self, pair: str) -> float: - if pair in self._cached_pairs: - return self._cached_pairs[pair].stoploss - else: - logger.warning('tried to access stoploss of a non-existing pair, ' - 'strategy stoploss is returned instead.') - return self.strategy.stoploss - - def adjust(self, pairs) -> list: - """ - Filters out and sorts "pairs" according to Edge calculated pairs - """ - final = [] - for pair, info in self._cached_pairs.items(): - if info.expectancy > float(self.edge_config.get('minimum_expectancy', 0.2)) and \ - info.winrate > float(self.edge_config.get('minimum_winrate', 0.60)) and \ - pair in pairs: - final.append(pair) - - if self._final_pairs != final: - self._final_pairs = final - if self._final_pairs: - logger.info( - 'Minimum expectancy and minimum winrate are met only for %s,' - ' so other pairs are filtered out.', - self._final_pairs - ) - else: - logger.info( - 'Edge removed all pairs as no pair with minimum expectancy ' - 'and minimum winrate was found !' - ) - - return self._final_pairs - - def accepted_pairs(self) -> list: - """ - return a list of accepted pairs along with their winrate, expectancy and stoploss - """ - final = [] - for pair, info in self._cached_pairs.items(): - if info.expectancy > float(self.edge_config.get('minimum_expectancy', 0.2)) and \ - info.winrate > float(self.edge_config.get('minimum_winrate', 0.60)): - final.append({ - 'Pair': pair, - 'Winrate': info.winrate, - 'Expectancy': info.expectancy, - 'Stoploss': info.stoploss, - }) - return final - - def _fill_calculable_fields(self, result: DataFrame) -> DataFrame: - """ - The result frame contains a number of columns that are calculable - from other columns. These are left blank till all rows are added, - to be populated in single vector calls. - - Columns to be populated are: - - Profit - - trade duration - - profit abs - :param result Dataframe - :return: result Dataframe - """ - - # stake and fees - # stake = 0.015 - # 0.05% is 0.0005 - # fee = 0.001 - - # we set stake amount to an arbitrary amount. - # as it doesn't change the calculation. - # all returned values are relative. they are percentages. - stake = 0.015 - fee = self.fee - open_fee = fee / 2 - close_fee = fee / 2 - - result['trade_duration'] = result['close_time'] - result['open_time'] - - result['trade_duration'] = result['trade_duration'].map( - lambda x: int(x.total_seconds() / 60)) - - # Spends, Takes, Profit, Absolute Profit - - # Buy Price - result['buy_vol'] = stake / result['open_rate'] # How many target are we buying - result['buy_fee'] = stake * open_fee - result['buy_spend'] = stake + result['buy_fee'] # How much we're spending - - # Sell price - result['sell_sum'] = result['buy_vol'] * result['close_rate'] - result['sell_fee'] = result['sell_sum'] * close_fee - result['sell_take'] = result['sell_sum'] - result['sell_fee'] - - # profit_percent - result['profit_percent'] = (result['sell_take'] - result['buy_spend']) / result['buy_spend'] - - # Absolute profit - result['profit_abs'] = result['sell_take'] - result['buy_spend'] - - return result - - def _process_expectancy(self, results: DataFrame) -> Dict[str, Any]: - """ - This calculates WinRate, Required Risk Reward, Risk Reward and Expectancy of all pairs - The calulation will be done per pair and per strategy. - """ - # Removing pairs having less than min_trades_number - min_trades_number = self.edge_config.get('min_trade_number', 10) - results = results.groupby(['pair', 'stoploss']).filter(lambda x: len(x) > min_trades_number) - ################################### - - # Removing outliers (Only Pumps) from the dataset - # The method to detect outliers is to calculate standard deviation - # Then every value more than (standard deviation + 2*average) is out (pump) - # - # Removing Pumps - if self.edge_config.get('remove_pumps', False): - results = results.groupby(['pair', 'stoploss']).apply( - lambda x: x[x['profit_abs'] < 2 * x['profit_abs'].std() + x['profit_abs'].mean()]) - ########################################################################## - - # Removing trades having a duration more than X minutes (set in config) - max_trade_duration = self.edge_config.get('max_trade_duration_minute', 1440) - results = results[results.trade_duration < max_trade_duration] - ####################################################################### - - if results.empty: - return {} - - groupby_aggregator = { - 'profit_abs': [ - ('nb_trades', 'count'), # number of all trades - ('profit_sum', lambda x: x[x > 0].sum()), # cumulative profit of all winning trades - ('loss_sum', lambda x: abs(x[x < 0].sum())), # cumulative loss of all losing trades - ('nb_win_trades', lambda x: x[x > 0].count()) # number of winning trades - ], - 'trade_duration': [('avg_trade_duration', 'mean')] - } - - # Group by (pair and stoploss) by applying above aggregator - df = results.groupby(['pair', 'stoploss'])['profit_abs', 'trade_duration'].agg( - groupby_aggregator).reset_index(col_level=1) - - # Dropping level 0 as we don't need it - df.columns = df.columns.droplevel(0) - - # Calculating number of losing trades, average win and average loss - df['nb_loss_trades'] = df['nb_trades'] - df['nb_win_trades'] - df['average_win'] = df['profit_sum'] / df['nb_win_trades'] - df['average_loss'] = df['loss_sum'] / df['nb_loss_trades'] - - # Win rate = number of profitable trades / number of trades - df['winrate'] = df['nb_win_trades'] / df['nb_trades'] - - # risk_reward_ratio = average win / average loss - df['risk_reward_ratio'] = df['average_win'] / df['average_loss'] - - # required_risk_reward = (1 / winrate) - 1 - df['required_risk_reward'] = (1 / df['winrate']) - 1 - - # expectancy = (risk_reward_ratio * winrate) - (lossrate) - df['expectancy'] = (df['risk_reward_ratio'] * df['winrate']) - (1 - df['winrate']) - - # sort by expectancy and stoploss - df = df.sort_values(by=['expectancy', 'stoploss'], ascending=False).groupby( - 'pair').first().sort_values(by=['expectancy'], ascending=False).reset_index() - - final = {} - for x in df.itertuples(): - final[x.pair] = PairInfo( - x.stoploss, - x.winrate, - x.risk_reward_ratio, - x.required_risk_reward, - x.expectancy, - x.nb_trades, - x.avg_trade_duration - ) - - # Returning a list of pairs in order of "expectancy" - return final - - def _find_trades_for_stoploss_range(self, ticker_data, pair, stoploss_range): - buy_column = ticker_data['buy'].values - sell_column = ticker_data['sell'].values - date_column = ticker_data['date'].values - ohlc_columns = ticker_data[['open', 'high', 'low', 'close']].values - - result: list = [] - for stoploss in stoploss_range: - result += self._detect_next_stop_or_sell_point( - buy_column, sell_column, date_column, ohlc_columns, round(stoploss, 6), pair - ) - - return result - - def _detect_next_stop_or_sell_point(self, buy_column, sell_column, date_column, - ohlc_columns, stoploss, pair): - """ - Iterate through ohlc_columns in order to find the next trade - Next trade opens from the first buy signal noticed to - The sell or stoploss signal after it. - It then cuts OHLC, buy_column, sell_column and date_column. - Cut from (the exit trade index) + 1. - - Author: https://github.com/mishaker - """ - - result: list = [] - start_point = 0 - - while True: - open_trade_index = utf1st.find_1st(buy_column, 1, utf1st.cmp_equal) - - # Return empty if we don't find trade entry (i.e. buy==1) or - # we find a buy but at the end of array - if open_trade_index == -1 or open_trade_index == len(buy_column) - 1: - break - else: - # When a buy signal is seen, - # trade opens in reality on the next candle - open_trade_index += 1 - - stop_price_percentage = stoploss + 1 - open_price = ohlc_columns[open_trade_index, 0] - stop_price = (open_price * stop_price_percentage) - - # Searching for the index where stoploss is hit - stop_index = utf1st.find_1st( - ohlc_columns[open_trade_index:, 2], stop_price, utf1st.cmp_smaller) - - # If we don't find it then we assume stop_index will be far in future (infinite number) - if stop_index == -1: - stop_index = float('inf') - - # Searching for the index where sell is hit - sell_index = utf1st.find_1st(sell_column[open_trade_index:], 1, utf1st.cmp_equal) - - # If we don't find it then we assume sell_index will be far in future (infinite number) - if sell_index == -1: - sell_index = float('inf') - - # Check if we don't find any stop or sell point (in that case trade remains open) - # It is not interesting for Edge to consider it so we simply ignore the trade - # And stop iterating there is no more entry - if stop_index == sell_index == float('inf'): - break - - if stop_index <= sell_index: - exit_index = open_trade_index + stop_index - exit_type = SellType.STOP_LOSS - exit_price = stop_price - elif stop_index > sell_index: - # If exit is SELL then we exit at the next candle - exit_index = open_trade_index + sell_index + 1 - - # Check if we have the next candle - if len(ohlc_columns) - 1 < exit_index: - break - - exit_type = SellType.SELL_SIGNAL - exit_price = ohlc_columns[exit_index, 0] - - trade = {'pair': pair, - 'stoploss': stoploss, - 'profit_percent': '', - 'profit_abs': '', - 'open_time': date_column[open_trade_index], - 'close_time': date_column[exit_index], - 'open_index': start_point + open_trade_index, - 'close_index': start_point + exit_index, - 'trade_duration': '', - 'open_rate': round(open_price, 15), - 'close_rate': round(exit_price, 15), - 'exit_type': exit_type - } - - result.append(trade) - - # Giving a view of exit_index till the end of array - buy_column = buy_column[exit_index:] - sell_column = sell_column[exit_index:] - date_column = date_column[exit_index:] - ohlc_columns = ohlc_columns[exit_index:] - start_point += exit_index - - return result +from .edge_positioning import Edge, PairInfo # noqa: F401 diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py new file mode 100644 index 000000000..15883357b --- /dev/null +++ b/freqtrade/edge/edge_positioning.py @@ -0,0 +1,464 @@ +# pragma pylint: disable=W0603 +""" Edge positioning package """ +import logging +from typing import Any, Dict, NamedTuple + +import arrow +import numpy as np +import utils_find_1st as utf1st +from pandas import DataFrame + +from freqtrade import constants +from freqtrade.configuration import TimeRange +from freqtrade.data import history +from freqtrade.exceptions import OperationalException +from freqtrade.strategy.interface import SellType + +logger = logging.getLogger(__name__) + + +class PairInfo(NamedTuple): + stoploss: float + winrate: float + risk_reward_ratio: float + required_risk_reward: float + expectancy: float + nb_trades: int + avg_trade_duration: float + + +class Edge: + """ + Calculates Win Rate, Risk Reward Ratio, Expectancy + against historical data for a give set of markets and a strategy + it then adjusts stoploss and position size accordingly + and force it into the strategy + Author: https://github.com/mishaker + """ + + config: Dict = {} + _cached_pairs: Dict[str, Any] = {} # Keeps a list of pairs + + def __init__(self, config: Dict[str, Any], exchange, strategy) -> None: + + self.config = config + self.exchange = exchange + self.strategy = strategy + + self.edge_config = self.config.get('edge', {}) + self._cached_pairs: Dict[str, Any] = {} # Keeps a list of pairs + self._final_pairs: list = [] + + # checking max_open_trades. it should be -1 as with Edge + # the number of trades is determined by position size + if self.config['max_open_trades'] != float('inf'): + logger.critical('max_open_trades should be -1 in config !') + + if self.config['stake_amount'] != constants.UNLIMITED_STAKE_AMOUNT: + raise OperationalException('Edge works only with unlimited stake amount') + + # Deprecated capital_available_percentage. Will use tradable_balance_ratio in the future. + self._capital_percentage: float = self.edge_config.get( + 'capital_available_percentage', self.config['tradable_balance_ratio']) + self._allowed_risk: float = self.edge_config.get('allowed_risk') + self._since_number_of_days: int = self.edge_config.get('calculate_since_number_of_days', 14) + self._last_updated: int = 0 # Timestamp of pairs last updated time + self._refresh_pairs = True + + self._stoploss_range_min = float(self.edge_config.get('stoploss_range_min', -0.01)) + self._stoploss_range_max = float(self.edge_config.get('stoploss_range_max', -0.05)) + self._stoploss_range_step = float(self.edge_config.get('stoploss_range_step', -0.001)) + + # calculating stoploss range + self._stoploss_range = np.arange( + self._stoploss_range_min, + self._stoploss_range_max, + self._stoploss_range_step + ) + + self._timerange: TimeRange = TimeRange.parse_timerange("%s-" % arrow.now().shift( + days=-1 * self._since_number_of_days).format('YYYYMMDD')) + if config.get('fee'): + self.fee = config['fee'] + else: + self.fee = self.exchange.get_fee(symbol=self.config['exchange']['pair_whitelist'][0]) + + def calculate(self) -> bool: + pairs = self.config['exchange']['pair_whitelist'] + heartbeat = self.edge_config.get('process_throttle_secs') + + if (self._last_updated > 0) and ( + self._last_updated + heartbeat > arrow.utcnow().timestamp): + return False + + data: Dict[str, Any] = {} + logger.info('Using stake_currency: %s ...', self.config['stake_currency']) + logger.info('Using local backtesting data (using whitelist in given config) ...') + + if self._refresh_pairs: + history.refresh_data( + datadir=self.config['datadir'], + pairs=pairs, + exchange=self.exchange, + timeframe=self.strategy.ticker_interval, + timerange=self._timerange, + ) + + data = history.load_data( + datadir=self.config['datadir'], + pairs=pairs, + timeframe=self.strategy.ticker_interval, + timerange=self._timerange, + startup_candles=self.strategy.startup_candle_count, + ) + + if not data: + # Reinitializing cached pairs + self._cached_pairs = {} + logger.critical("No data found. Edge is stopped ...") + return False + + preprocessed = self.strategy.tickerdata_to_dataframe(data) + + # Print timeframe + min_date, max_date = history.get_timerange(preprocessed) + logger.info( + 'Measuring data from %s up to %s (%s days) ...', + min_date.isoformat(), + max_date.isoformat(), + (max_date - min_date).days + ) + headers = ['date', 'buy', 'open', 'close', 'sell', 'high', 'low'] + + trades: list = [] + for pair, pair_data in preprocessed.items(): + # Sorting dataframe by date and reset index + pair_data = pair_data.sort_values(by=['date']) + pair_data = pair_data.reset_index(drop=True) + + ticker_data = self.strategy.advise_sell( + self.strategy.advise_buy(pair_data, {'pair': pair}), {'pair': pair})[headers].copy() + + trades += self._find_trades_for_stoploss_range(ticker_data, pair, self._stoploss_range) + + # If no trade found then exit + if len(trades) == 0: + logger.info("No trades found.") + return False + + # Fill missing, calculable columns, profit, duration , abs etc. + trades_df = self._fill_calculable_fields(DataFrame(trades)) + self._cached_pairs = self._process_expectancy(trades_df) + self._last_updated = arrow.utcnow().timestamp + + return True + + def stake_amount(self, pair: str, free_capital: float, + total_capital: float, capital_in_trade: float) -> float: + stoploss = self.stoploss(pair) + available_capital = (total_capital + capital_in_trade) * self._capital_percentage + allowed_capital_at_risk = available_capital * self._allowed_risk + max_position_size = abs(allowed_capital_at_risk / stoploss) + position_size = min(max_position_size, free_capital) + if pair in self._cached_pairs: + logger.info( + 'winrate: %s, expectancy: %s, position size: %s, pair: %s,' + ' capital in trade: %s, free capital: %s, total capital: %s,' + ' stoploss: %s, available capital: %s.', + self._cached_pairs[pair].winrate, + self._cached_pairs[pair].expectancy, + position_size, pair, + capital_in_trade, free_capital, total_capital, + stoploss, available_capital + ) + return round(position_size, 15) + + def stoploss(self, pair: str) -> float: + if pair in self._cached_pairs: + return self._cached_pairs[pair].stoploss + else: + logger.warning('tried to access stoploss of a non-existing pair, ' + 'strategy stoploss is returned instead.') + return self.strategy.stoploss + + def adjust(self, pairs) -> list: + """ + Filters out and sorts "pairs" according to Edge calculated pairs + """ + final = [] + for pair, info in self._cached_pairs.items(): + if info.expectancy > float(self.edge_config.get('minimum_expectancy', 0.2)) and \ + info.winrate > float(self.edge_config.get('minimum_winrate', 0.60)) and \ + pair in pairs: + final.append(pair) + + if self._final_pairs != final: + self._final_pairs = final + if self._final_pairs: + logger.info( + 'Minimum expectancy and minimum winrate are met only for %s,' + ' so other pairs are filtered out.', + self._final_pairs + ) + else: + logger.info( + 'Edge removed all pairs as no pair with minimum expectancy ' + 'and minimum winrate was found !' + ) + + return self._final_pairs + + def accepted_pairs(self) -> list: + """ + return a list of accepted pairs along with their winrate, expectancy and stoploss + """ + final = [] + for pair, info in self._cached_pairs.items(): + if info.expectancy > float(self.edge_config.get('minimum_expectancy', 0.2)) and \ + info.winrate > float(self.edge_config.get('minimum_winrate', 0.60)): + final.append({ + 'Pair': pair, + 'Winrate': info.winrate, + 'Expectancy': info.expectancy, + 'Stoploss': info.stoploss, + }) + return final + + def _fill_calculable_fields(self, result: DataFrame) -> DataFrame: + """ + The result frame contains a number of columns that are calculable + from other columns. These are left blank till all rows are added, + to be populated in single vector calls. + + Columns to be populated are: + - Profit + - trade duration + - profit abs + :param result Dataframe + :return: result Dataframe + """ + + # stake and fees + # stake = 0.015 + # 0.05% is 0.0005 + # fee = 0.001 + + # we set stake amount to an arbitrary amount. + # as it doesn't change the calculation. + # all returned values are relative. they are percentages. + stake = 0.015 + fee = self.fee + open_fee = fee / 2 + close_fee = fee / 2 + + result['trade_duration'] = result['close_time'] - result['open_time'] + + result['trade_duration'] = result['trade_duration'].map( + lambda x: int(x.total_seconds() / 60)) + + # Spends, Takes, Profit, Absolute Profit + + # Buy Price + result['buy_vol'] = stake / result['open_rate'] # How many target are we buying + result['buy_fee'] = stake * open_fee + result['buy_spend'] = stake + result['buy_fee'] # How much we're spending + + # Sell price + result['sell_sum'] = result['buy_vol'] * result['close_rate'] + result['sell_fee'] = result['sell_sum'] * close_fee + result['sell_take'] = result['sell_sum'] - result['sell_fee'] + + # profit_percent + result['profit_percent'] = (result['sell_take'] - result['buy_spend']) / result['buy_spend'] + + # Absolute profit + result['profit_abs'] = result['sell_take'] - result['buy_spend'] + + return result + + def _process_expectancy(self, results: DataFrame) -> Dict[str, Any]: + """ + This calculates WinRate, Required Risk Reward, Risk Reward and Expectancy of all pairs + The calulation will be done per pair and per strategy. + """ + # Removing pairs having less than min_trades_number + min_trades_number = self.edge_config.get('min_trade_number', 10) + results = results.groupby(['pair', 'stoploss']).filter(lambda x: len(x) > min_trades_number) + ################################### + + # Removing outliers (Only Pumps) from the dataset + # The method to detect outliers is to calculate standard deviation + # Then every value more than (standard deviation + 2*average) is out (pump) + # + # Removing Pumps + if self.edge_config.get('remove_pumps', False): + results = results.groupby(['pair', 'stoploss']).apply( + lambda x: x[x['profit_abs'] < 2 * x['profit_abs'].std() + x['profit_abs'].mean()]) + ########################################################################## + + # Removing trades having a duration more than X minutes (set in config) + max_trade_duration = self.edge_config.get('max_trade_duration_minute', 1440) + results = results[results.trade_duration < max_trade_duration] + ####################################################################### + + if results.empty: + return {} + + groupby_aggregator = { + 'profit_abs': [ + ('nb_trades', 'count'), # number of all trades + ('profit_sum', lambda x: x[x > 0].sum()), # cumulative profit of all winning trades + ('loss_sum', lambda x: abs(x[x < 0].sum())), # cumulative loss of all losing trades + ('nb_win_trades', lambda x: x[x > 0].count()) # number of winning trades + ], + 'trade_duration': [('avg_trade_duration', 'mean')] + } + + # Group by (pair and stoploss) by applying above aggregator + df = results.groupby(['pair', 'stoploss'])['profit_abs', 'trade_duration'].agg( + groupby_aggregator).reset_index(col_level=1) + + # Dropping level 0 as we don't need it + df.columns = df.columns.droplevel(0) + + # Calculating number of losing trades, average win and average loss + df['nb_loss_trades'] = df['nb_trades'] - df['nb_win_trades'] + df['average_win'] = df['profit_sum'] / df['nb_win_trades'] + df['average_loss'] = df['loss_sum'] / df['nb_loss_trades'] + + # Win rate = number of profitable trades / number of trades + df['winrate'] = df['nb_win_trades'] / df['nb_trades'] + + # risk_reward_ratio = average win / average loss + df['risk_reward_ratio'] = df['average_win'] / df['average_loss'] + + # required_risk_reward = (1 / winrate) - 1 + df['required_risk_reward'] = (1 / df['winrate']) - 1 + + # expectancy = (risk_reward_ratio * winrate) - (lossrate) + df['expectancy'] = (df['risk_reward_ratio'] * df['winrate']) - (1 - df['winrate']) + + # sort by expectancy and stoploss + df = df.sort_values(by=['expectancy', 'stoploss'], ascending=False).groupby( + 'pair').first().sort_values(by=['expectancy'], ascending=False).reset_index() + + final = {} + for x in df.itertuples(): + final[x.pair] = PairInfo( + x.stoploss, + x.winrate, + x.risk_reward_ratio, + x.required_risk_reward, + x.expectancy, + x.nb_trades, + x.avg_trade_duration + ) + + # Returning a list of pairs in order of "expectancy" + return final + + def _find_trades_for_stoploss_range(self, ticker_data, pair, stoploss_range): + buy_column = ticker_data['buy'].values + sell_column = ticker_data['sell'].values + date_column = ticker_data['date'].values + ohlc_columns = ticker_data[['open', 'high', 'low', 'close']].values + + result: list = [] + for stoploss in stoploss_range: + result += self._detect_next_stop_or_sell_point( + buy_column, sell_column, date_column, ohlc_columns, round(stoploss, 6), pair + ) + + return result + + def _detect_next_stop_or_sell_point(self, buy_column, sell_column, date_column, + ohlc_columns, stoploss, pair): + """ + Iterate through ohlc_columns in order to find the next trade + Next trade opens from the first buy signal noticed to + The sell or stoploss signal after it. + It then cuts OHLC, buy_column, sell_column and date_column. + Cut from (the exit trade index) + 1. + + Author: https://github.com/mishaker + """ + + result: list = [] + start_point = 0 + + while True: + open_trade_index = utf1st.find_1st(buy_column, 1, utf1st.cmp_equal) + + # Return empty if we don't find trade entry (i.e. buy==1) or + # we find a buy but at the end of array + if open_trade_index == -1 or open_trade_index == len(buy_column) - 1: + break + else: + # When a buy signal is seen, + # trade opens in reality on the next candle + open_trade_index += 1 + + stop_price_percentage = stoploss + 1 + open_price = ohlc_columns[open_trade_index, 0] + stop_price = (open_price * stop_price_percentage) + + # Searching for the index where stoploss is hit + stop_index = utf1st.find_1st( + ohlc_columns[open_trade_index:, 2], stop_price, utf1st.cmp_smaller) + + # If we don't find it then we assume stop_index will be far in future (infinite number) + if stop_index == -1: + stop_index = float('inf') + + # Searching for the index where sell is hit + sell_index = utf1st.find_1st(sell_column[open_trade_index:], 1, utf1st.cmp_equal) + + # If we don't find it then we assume sell_index will be far in future (infinite number) + if sell_index == -1: + sell_index = float('inf') + + # Check if we don't find any stop or sell point (in that case trade remains open) + # It is not interesting for Edge to consider it so we simply ignore the trade + # And stop iterating there is no more entry + if stop_index == sell_index == float('inf'): + break + + if stop_index <= sell_index: + exit_index = open_trade_index + stop_index + exit_type = SellType.STOP_LOSS + exit_price = stop_price + elif stop_index > sell_index: + # If exit is SELL then we exit at the next candle + exit_index = open_trade_index + sell_index + 1 + + # Check if we have the next candle + if len(ohlc_columns) - 1 < exit_index: + break + + exit_type = SellType.SELL_SIGNAL + exit_price = ohlc_columns[exit_index, 0] + + trade = {'pair': pair, + 'stoploss': stoploss, + 'profit_percent': '', + 'profit_abs': '', + 'open_time': date_column[open_trade_index], + 'close_time': date_column[exit_index], + 'open_index': start_point + open_trade_index, + 'close_index': start_point + exit_index, + 'trade_duration': '', + 'open_rate': round(open_price, 15), + 'close_rate': round(exit_price, 15), + 'exit_type': exit_type + } + + result.append(trade) + + # Giving a view of exit_index till the end of array + buy_column = buy_column[exit_index:] + sell_column = sell_column[exit_index:] + date_column = date_column[exit_index:] + ohlc_columns = ohlc_columns[exit_index:] + start_point += exit_index + + return result From 80ed1c3e146da9c3f36f978ceae0df250acc4131 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 10:51:09 +0100 Subject: [PATCH 1547/3421] Move utils to commands --- freqtrade/commands/__init__.py | 0 freqtrade/{ => commands}/utils.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 freqtrade/commands/__init__.py rename freqtrade/{ => commands}/utils.py (100%) diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/freqtrade/utils.py b/freqtrade/commands/utils.py similarity index 100% rename from freqtrade/utils.py rename to freqtrade/commands/utils.py From 6e852804671efa0546341b5db5f35b79bc9e9278 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 10:55:39 +0100 Subject: [PATCH 1548/3421] Adjust imports --- freqtrade/commands/__init__.py | 6 ++++++ freqtrade/configuration/arguments.py | 12 +++++------ freqtrade/optimize/__init__.py | 2 +- freqtrade/plot/plot_utils.py | 2 +- tests/test_utils.py | 30 ++++++++++++++-------------- 5 files changed, 29 insertions(+), 23 deletions(-) diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index e69de29bb..0c31048f2 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -0,0 +1,6 @@ +from .utils import (setup_utils_configuration, start_create_userdir, # noqa: F401 + start_download_data, start_hyperopt_list, + start_hyperopt_show, start_list_exchanges, + start_list_markets, start_list_strategies, + start_list_timeframes, start_new_hyperopt, + start_new_strategy, start_test_pairlist, start_trading) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index b2197619d..3c71fa548 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -131,12 +131,12 @@ class Arguments: self._build_args(optionlist=['version'], parser=self.parser) from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge - from freqtrade.utils import (start_create_userdir, start_download_data, - start_hyperopt_list, start_hyperopt_show, - start_list_exchanges, start_list_markets, - start_list_strategies, start_new_hyperopt, - start_new_strategy, start_list_timeframes, - start_test_pairlist, start_trading) + from freqtrade.commands import (start_create_userdir, start_download_data, + start_hyperopt_list, start_hyperopt_show, + start_list_exchanges, start_list_markets, + start_list_strategies, start_new_hyperopt, + start_new_strategy, start_list_timeframes, + start_test_pairlist, start_trading) from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit subparsers = self.parser.add_subparsers(dest='command', diff --git a/freqtrade/optimize/__init__.py b/freqtrade/optimize/__init__.py index 34760372f..98b521d4e 100644 --- a/freqtrade/optimize/__init__.py +++ b/freqtrade/optimize/__init__.py @@ -4,7 +4,7 @@ from typing import Any, Dict from freqtrade import constants from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.state import RunMode -from freqtrade.utils import setup_utils_configuration +from freqtrade.commands import setup_utils_configuration logger = logging.getLogger(__name__) diff --git a/freqtrade/plot/plot_utils.py b/freqtrade/plot/plot_utils.py index 9eff08396..b2f16dff0 100644 --- a/freqtrade/plot/plot_utils.py +++ b/freqtrade/plot/plot_utils.py @@ -2,7 +2,7 @@ from typing import Any, Dict from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode -from freqtrade.utils import setup_utils_configuration +from freqtrade.commands import setup_utils_configuration def validate_plot_args(args: Dict[str, Any]): diff --git a/tests/test_utils.py b/tests/test_utils.py index 7ca2cac5a..91009ec42 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -4,15 +4,15 @@ from unittest.mock import MagicMock, PropertyMock import pytest +from freqtrade.commands import (setup_utils_configuration, + start_create_userdir, start_download_data, + start_hyperopt_list, start_hyperopt_show, + start_list_exchanges, start_list_markets, + start_list_strategies, start_list_timeframes, + start_new_hyperopt, start_new_strategy, + start_test_pairlist, start_trading) from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode -from freqtrade.utils import (setup_utils_configuration, start_create_userdir, - start_download_data, start_hyperopt_list, - start_hyperopt_show, start_list_exchanges, - start_list_markets, start_list_strategies, - start_list_timeframes, start_new_hyperopt, - start_new_strategy, start_test_pairlist, - start_trading) from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, patched_configuration_load_config_file) @@ -451,8 +451,8 @@ def test_create_datadir(caplog, mocker): # Added assert here to analyze random test-failures ... assert len(caplog.record_tuples) == 0 - cud = mocker.patch("freqtrade.utils.create_userdata_dir", MagicMock()) - csf = mocker.patch("freqtrade.utils.copy_sample_files", MagicMock()) + cud = mocker.patch("freqtrade.commands.create_userdata_dir", MagicMock()) + csf = mocker.patch("freqtrade.commands.copy_sample_files", MagicMock()) args = [ "create-userdir", "--userdir", @@ -538,7 +538,7 @@ def test_start_new_hyperopt_no_arg(mocker, caplog): def test_download_data_keyboardInterrupt(mocker, caplog, markets): - dl_mock = mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data', + dl_mock = mocker.patch('freqtrade.commands.refresh_backtest_ohlcv_data', MagicMock(side_effect=KeyboardInterrupt)) patch_exchange(mocker) mocker.patch( @@ -556,7 +556,7 @@ def test_download_data_keyboardInterrupt(mocker, caplog, markets): def test_download_data_no_markets(mocker, caplog): - dl_mock = mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data', + dl_mock = mocker.patch('freqtrade.commands.refresh_backtest_ohlcv_data', MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) patch_exchange(mocker, id='binance') mocker.patch( @@ -574,7 +574,7 @@ def test_download_data_no_markets(mocker, caplog): def test_download_data_no_exchange(mocker, caplog): - mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data', + mocker.patch('freqtrade.commands.refresh_backtest_ohlcv_data', MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) patch_exchange(mocker) mocker.patch( @@ -594,7 +594,7 @@ def test_download_data_no_pairs(mocker, caplog): mocker.patch.object(Path, "exists", MagicMock(return_value=False)) - mocker.patch('freqtrade.utils.refresh_backtest_ohlcv_data', + mocker.patch('freqtrade.commands.refresh_backtest_ohlcv_data', MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) patch_exchange(mocker) mocker.patch( @@ -613,9 +613,9 @@ def test_download_data_no_pairs(mocker, caplog): def test_download_data_trades(mocker, caplog): - dl_mock = mocker.patch('freqtrade.utils.refresh_backtest_trades_data', + dl_mock = mocker.patch('freqtrade.commands.refresh_backtest_trades_data', MagicMock(return_value=[])) - convert_mock = mocker.patch('freqtrade.utils.convert_trades_to_ohlcv', + convert_mock = mocker.patch('freqtrade.commands.convert_trades_to_ohlcv', MagicMock(return_value=[])) patch_exchange(mocker) mocker.patch( From 926bf07df1420c2e08dadbb53e8359a1ffa20900 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 13:08:58 +0100 Subject: [PATCH 1549/3421] Seperate a few commands into specific files --- freqtrade/commands/__init__.py | 16 +- freqtrade/commands/deploy_commands.py | 113 ++++++++ freqtrade/commands/hyperopt_commands.py | 114 ++++++++ freqtrade/commands/list_commands.py | 157 +++++++++++ freqtrade/commands/trade_commands.py | 25 ++ freqtrade/commands/utils.py | 356 ------------------------ 6 files changed, 419 insertions(+), 362 deletions(-) create mode 100644 freqtrade/commands/deploy_commands.py create mode 100644 freqtrade/commands/hyperopt_commands.py create mode 100644 freqtrade/commands/list_commands.py create mode 100644 freqtrade/commands/trade_commands.py diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index 0c31048f2..4c57efeae 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -1,6 +1,10 @@ -from .utils import (setup_utils_configuration, start_create_userdir, # noqa: F401 - start_download_data, start_hyperopt_list, - start_hyperopt_show, start_list_exchanges, - start_list_markets, start_list_strategies, - start_list_timeframes, start_new_hyperopt, - start_new_strategy, start_test_pairlist, start_trading) +from .hyperopt_commands import (start_hyperopt_list, start_hyperopt_show) # noqa: 401 + +from .list_commands import (start_list_exchanges, # noqa: F401 + start_list_markets, start_list_strategies, + start_list_timeframes) +from .utils import setup_utils_configuration # noqa: F401 +from .utils import (start_download_data, # noqa: F401 + start_test_pairlist) +from .deploy_commands import (start_new_hyperopt, start_new_strategy, start_create_userdir) # noqa: F401 +from .trade_commands import start_trading # noqa: F401 diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py new file mode 100644 index 000000000..892e15db1 --- /dev/null +++ b/freqtrade/commands/deploy_commands.py @@ -0,0 +1,113 @@ +import logging +import sys +from pathlib import Path +from typing import Any, Dict + +from freqtrade.configuration.directory_operations import (copy_sample_files, + create_userdata_dir) +from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGY +from freqtrade.exceptions import OperationalException +from freqtrade.misc import render_template +from freqtrade.state import RunMode + +from .utils import setup_utils_configuration + +logger = logging.getLogger(__name__) + + +def start_create_userdir(args: Dict[str, Any]) -> None: + """ + Create "user_data" directory to contain user data strategies, hyperopt, ...) + :param args: Cli args from Arguments() + :return: None + """ + if "user_data_dir" in args and args["user_data_dir"]: + userdir = create_userdata_dir(args["user_data_dir"], create_dir=True) + copy_sample_files(userdir, overwrite=args["reset"]) + else: + logger.warning("`create-userdir` requires --userdir to be set.") + sys.exit(1) + + +def deploy_new_strategy(strategy_name, strategy_path: Path, subtemplate: str): + """ + Deploy new strategy from template to strategy_path + """ + indicators = render_template(templatefile=f"subtemplates/indicators_{subtemplate}.j2",) + buy_trend = render_template(templatefile=f"subtemplates/buy_trend_{subtemplate}.j2",) + sell_trend = render_template(templatefile=f"subtemplates/sell_trend_{subtemplate}.j2",) + plot_config = render_template(templatefile=f"subtemplates/plot_config_{subtemplate}.j2",) + + strategy_text = render_template(templatefile='base_strategy.py.j2', + arguments={"strategy": strategy_name, + "indicators": indicators, + "buy_trend": buy_trend, + "sell_trend": sell_trend, + "plot_config": plot_config, + }) + + logger.info(f"Writing strategy to `{strategy_path}`.") + strategy_path.write_text(strategy_text) + + +def start_new_strategy(args: Dict[str, Any]) -> None: + + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + + if "strategy" in args and args["strategy"]: + if args["strategy"] == "DefaultStrategy": + raise OperationalException("DefaultStrategy is not allowed as name.") + + new_path = config['user_data_dir'] / USERPATH_STRATEGY / (args["strategy"] + ".py") + + if new_path.exists(): + raise OperationalException(f"`{new_path}` already exists. " + "Please choose another Strategy Name.") + + deploy_new_strategy(args['strategy'], new_path, args['template']) + + else: + raise OperationalException("`new-strategy` requires --strategy to be set.") + + +def deploy_new_hyperopt(hyperopt_name, hyperopt_path: Path, subtemplate: str): + """ + Deploys a new hyperopt template to hyperopt_path + """ + buy_guards = render_template( + templatefile=f"subtemplates/hyperopt_buy_guards_{subtemplate}.j2",) + sell_guards = render_template( + templatefile=f"subtemplates/hyperopt_sell_guards_{subtemplate}.j2",) + buy_space = render_template( + templatefile=f"subtemplates/hyperopt_buy_space_{subtemplate}.j2",) + sell_space = render_template( + templatefile=f"subtemplates/hyperopt_sell_space_{subtemplate}.j2",) + + strategy_text = render_template(templatefile='base_hyperopt.py.j2', + arguments={"hyperopt": hyperopt_name, + "buy_guards": buy_guards, + "sell_guards": sell_guards, + "buy_space": buy_space, + "sell_space": sell_space, + }) + + logger.info(f"Writing hyperopt to `{hyperopt_path}`.") + hyperopt_path.write_text(strategy_text) + + +def start_new_hyperopt(args: Dict[str, Any]) -> None: + + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + + if "hyperopt" in args and args["hyperopt"]: + if args["hyperopt"] == "DefaultHyperopt": + raise OperationalException("DefaultHyperopt is not allowed as name.") + + new_path = config['user_data_dir'] / USERPATH_HYPEROPTS / (args["hyperopt"] + ".py") + + if new_path.exists(): + raise OperationalException(f"`{new_path}` already exists. " + "Please choose another Strategy Name.") + deploy_new_hyperopt(args['hyperopt'], new_path, args['template']) + else: + raise OperationalException("`new-hyperopt` requires --hyperopt to be set.") diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py new file mode 100644 index 000000000..db3f69050 --- /dev/null +++ b/freqtrade/commands/hyperopt_commands.py @@ -0,0 +1,114 @@ +import logging +from operator import itemgetter +from typing import Any, Dict, List + +from colorama import init as colorama_init + +from .utils import setup_utils_configuration +from freqtrade.exceptions import OperationalException +from freqtrade.state import RunMode + +logger = logging.getLogger(__name__) + + +def start_hyperopt_list(args: Dict[str, Any]) -> None: + """ + List hyperopt epochs previously evaluated + """ + from freqtrade.optimize.hyperopt import Hyperopt + + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + + only_best = config.get('hyperopt_list_best', False) + only_profitable = config.get('hyperopt_list_profitable', False) + print_colorized = config.get('print_colorized', False) + print_json = config.get('print_json', False) + no_details = config.get('hyperopt_list_no_details', False) + no_header = False + + trials_file = (config['user_data_dir'] / + 'hyperopt_results' / 'hyperopt_results.pickle') + + # Previous evaluations + trials = Hyperopt.load_previous_results(trials_file) + total_epochs = len(trials) + + trials = _hyperopt_filter_trials(trials, only_best, only_profitable) + + # TODO: fetch the interval for epochs to print from the cli option + epoch_start, epoch_stop = 0, None + + if print_colorized: + colorama_init(autoreset=True) + + try: + # Human-friendly indexes used here (starting from 1) + for val in trials[epoch_start:epoch_stop]: + Hyperopt.print_results_explanation(val, total_epochs, not only_best, print_colorized) + + except KeyboardInterrupt: + print('User interrupted..') + + if trials and not no_details: + sorted_trials = sorted(trials, key=itemgetter('loss')) + results = sorted_trials[0] + Hyperopt.print_epoch_details(results, total_epochs, print_json, no_header) + + +def start_hyperopt_show(args: Dict[str, Any]) -> None: + """ + Show details of a hyperopt epoch previously evaluated + """ + from freqtrade.optimize.hyperopt import Hyperopt + + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + + only_best = config.get('hyperopt_list_best', False) + only_profitable = config.get('hyperopt_list_profitable', False) + no_header = config.get('hyperopt_show_no_header', False) + + trials_file = (config['user_data_dir'] / + 'hyperopt_results' / 'hyperopt_results.pickle') + + # Previous evaluations + trials = Hyperopt.load_previous_results(trials_file) + total_epochs = len(trials) + + trials = _hyperopt_filter_trials(trials, only_best, only_profitable) + trials_epochs = len(trials) + + n = config.get('hyperopt_show_index', -1) + if n > trials_epochs: + raise OperationalException( + f"The index of the epoch to show should be less than {trials_epochs + 1}.") + if n < -trials_epochs: + raise OperationalException( + f"The index of the epoch to show should be greater than {-trials_epochs - 1}.") + + # Translate epoch index from human-readable format to pythonic + if n > 0: + n -= 1 + + print_json = config.get('print_json', False) + + if trials: + val = trials[n] + Hyperopt.print_epoch_details(val, total_epochs, print_json, no_header, + header_str="Epoch details") + + +def _hyperopt_filter_trials(trials: List, only_best: bool, only_profitable: bool) -> List: + """ + Filter our items from the list of hyperopt results + """ + if only_best: + trials = [x for x in trials if x['is_best']] + if only_profitable: + trials = [x for x in trials if x['results_metrics']['profit'] > 0] + + logger.info(f"{len(trials)} " + + ("best " if only_best else "") + + ("profitable " if only_profitable else "") + + "epochs found.") + + return trials diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py new file mode 100644 index 000000000..90efaf66f --- /dev/null +++ b/freqtrade/commands/list_commands.py @@ -0,0 +1,157 @@ +import csv +import logging +import sys +from collections import OrderedDict +from pathlib import Path +from typing import Any, Dict + +import rapidjson +from tabulate import tabulate + +from freqtrade.constants import USERPATH_STRATEGY +from freqtrade.exceptions import OperationalException +from freqtrade.exchange import (available_exchanges, ccxt_exchanges, + market_is_active, symbol_is_pair) +from freqtrade.misc import plural +from freqtrade.resolvers import ExchangeResolver, StrategyResolver +from freqtrade.state import RunMode + +from .utils import setup_utils_configuration + +logger = logging.getLogger(__name__) + + +def start_list_exchanges(args: Dict[str, Any]) -> None: + """ + Print available exchanges + :param args: Cli args from Arguments() + :return: None + """ + exchanges = ccxt_exchanges() if args['list_exchanges_all'] else available_exchanges() + if args['print_one_column']: + print('\n'.join(exchanges)) + else: + if args['list_exchanges_all']: + print(f"All exchanges supported by the ccxt library: {', '.join(exchanges)}") + else: + print(f"Exchanges available for Freqtrade: {', '.join(exchanges)}") + + +def start_list_strategies(args: Dict[str, Any]) -> None: + """ + Print Strategies available in a directory + """ + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + + directory = Path(config.get('strategy_path', config['user_data_dir'] / USERPATH_STRATEGY)) + strategies = StrategyResolver.search_all_objects(directory) + # Sort alphabetically + strategies = sorted(strategies, key=lambda x: x['name']) + strats_to_print = [{'name': s['name'], 'location': s['location'].name} for s in strategies] + + if args['print_one_column']: + print('\n'.join([s['name'] for s in strategies])) + else: + print(tabulate(strats_to_print, headers='keys', tablefmt='pipe')) + + +def start_list_timeframes(args: Dict[str, Any]) -> None: + """ + Print ticker intervals (timeframes) available on Exchange + """ + config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) + # Do not use ticker_interval set in the config + config['ticker_interval'] = None + + # Init exchange + exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) + + if args['print_one_column']: + print('\n'.join(exchange.timeframes)) + else: + print(f"Timeframes available for the exchange `{exchange.name}`: " + f"{', '.join(exchange.timeframes)}") + + +def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: + """ + Print pairs/markets on the exchange + :param args: Cli args from Arguments() + :param pairs_only: if True print only pairs, otherwise print all instruments (markets) + :return: None + """ + config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) + + # Init exchange + exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) + + # By default only active pairs/markets are to be shown + active_only = not args.get('list_pairs_all', False) + + base_currencies = args.get('base_currencies', []) + quote_currencies = args.get('quote_currencies', []) + + try: + pairs = exchange.get_markets(base_currencies=base_currencies, + quote_currencies=quote_currencies, + pairs_only=pairs_only, + active_only=active_only) + # Sort the pairs/markets by symbol + pairs = OrderedDict(sorted(pairs.items())) + except Exception as e: + raise OperationalException(f"Cannot get markets. Reason: {e}") from e + + else: + summary_str = ((f"Exchange {exchange.name} has {len(pairs)} ") + + ("active " if active_only else "") + + (plural(len(pairs), "pair" if pairs_only else "market")) + + (f" with {', '.join(base_currencies)} as base " + f"{plural(len(base_currencies), 'currency', 'currencies')}" + if base_currencies else "") + + (" and" if base_currencies and quote_currencies else "") + + (f" with {', '.join(quote_currencies)} as quote " + f"{plural(len(quote_currencies), 'currency', 'currencies')}" + if quote_currencies else "")) + + headers = ["Id", "Symbol", "Base", "Quote", "Active", + *(['Is pair'] if not pairs_only else [])] + + tabular_data = [] + for _, v in pairs.items(): + tabular_data.append({'Id': v['id'], 'Symbol': v['symbol'], + 'Base': v['base'], 'Quote': v['quote'], + 'Active': market_is_active(v), + **({'Is pair': symbol_is_pair(v['symbol'])} + if not pairs_only else {})}) + + if (args.get('print_one_column', False) or + args.get('list_pairs_print_json', False) or + args.get('print_csv', False)): + # Print summary string in the log in case of machine-readable + # regular formats. + logger.info(f"{summary_str}.") + else: + # Print empty string separating leading logs and output in case of + # human-readable formats. + print() + + if len(pairs): + if args.get('print_list', False): + # print data as a list, with human-readable summary + print(f"{summary_str}: {', '.join(pairs.keys())}.") + elif args.get('print_one_column', False): + print('\n'.join(pairs.keys())) + elif args.get('list_pairs_print_json', False): + print(rapidjson.dumps(list(pairs.keys()), default=str)) + elif args.get('print_csv', False): + writer = csv.DictWriter(sys.stdout, fieldnames=headers) + writer.writeheader() + writer.writerows(tabular_data) + else: + # print data as a table, with the human-readable summary + print(f"{summary_str}:") + print(tabulate(tabular_data, headers='keys', tablefmt='pipe')) + elif not (args.get('print_one_column', False) or + args.get('list_pairs_print_json', False) or + args.get('print_csv', False)): + print(f"{summary_str}.") diff --git a/freqtrade/commands/trade_commands.py b/freqtrade/commands/trade_commands.py new file mode 100644 index 000000000..2c0c4c9c1 --- /dev/null +++ b/freqtrade/commands/trade_commands.py @@ -0,0 +1,25 @@ +import logging + +from typing import Any, Dict + + +logger = logging.getLogger(__name__) + + +def start_trading(args: Dict[str, Any]) -> int: + """ + Main entry point for trading mode + """ + from freqtrade.worker import Worker + # Load and run worker + worker = None + try: + worker = Worker(args) + worker.run() + except KeyboardInterrupt: + logger.info('SIGINT received, aborting ...') + finally: + if worker: + logger.info("worker found ... calling exit") + worker.exit() + return 0 diff --git a/freqtrade/commands/utils.py b/freqtrade/commands/utils.py index 2f7b2d717..ba9173cf2 100644 --- a/freqtrade/commands/utils.py +++ b/freqtrade/commands/utils.py @@ -46,139 +46,6 @@ def setup_utils_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str return config -def start_trading(args: Dict[str, Any]) -> int: - """ - Main entry point for trading mode - """ - from freqtrade.worker import Worker - # Load and run worker - worker = None - try: - worker = Worker(args) - worker.run() - except KeyboardInterrupt: - logger.info('SIGINT received, aborting ...') - finally: - if worker: - logger.info("worker found ... calling exit") - worker.exit() - return 0 - - -def start_list_exchanges(args: Dict[str, Any]) -> None: - """ - Print available exchanges - :param args: Cli args from Arguments() - :return: None - """ - exchanges = ccxt_exchanges() if args['list_exchanges_all'] else available_exchanges() - if args['print_one_column']: - print('\n'.join(exchanges)) - else: - if args['list_exchanges_all']: - print(f"All exchanges supported by the ccxt library: {', '.join(exchanges)}") - else: - print(f"Exchanges available for Freqtrade: {', '.join(exchanges)}") - - -def start_create_userdir(args: Dict[str, Any]) -> None: - """ - Create "user_data" directory to contain user data strategies, hyperopt, ...) - :param args: Cli args from Arguments() - :return: None - """ - if "user_data_dir" in args and args["user_data_dir"]: - userdir = create_userdata_dir(args["user_data_dir"], create_dir=True) - copy_sample_files(userdir, overwrite=args["reset"]) - else: - logger.warning("`create-userdir` requires --userdir to be set.") - sys.exit(1) - - -def deploy_new_strategy(strategy_name, strategy_path: Path, subtemplate: str): - """ - Deploy new strategy from template to strategy_path - """ - indicators = render_template(templatefile=f"subtemplates/indicators_{subtemplate}.j2",) - buy_trend = render_template(templatefile=f"subtemplates/buy_trend_{subtemplate}.j2",) - sell_trend = render_template(templatefile=f"subtemplates/sell_trend_{subtemplate}.j2",) - plot_config = render_template(templatefile=f"subtemplates/plot_config_{subtemplate}.j2",) - - strategy_text = render_template(templatefile='base_strategy.py.j2', - arguments={"strategy": strategy_name, - "indicators": indicators, - "buy_trend": buy_trend, - "sell_trend": sell_trend, - "plot_config": plot_config, - }) - - logger.info(f"Writing strategy to `{strategy_path}`.") - strategy_path.write_text(strategy_text) - - -def start_new_strategy(args: Dict[str, Any]) -> None: - - config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - - if "strategy" in args and args["strategy"]: - if args["strategy"] == "DefaultStrategy": - raise OperationalException("DefaultStrategy is not allowed as name.") - - new_path = config['user_data_dir'] / USERPATH_STRATEGY / (args["strategy"] + ".py") - - if new_path.exists(): - raise OperationalException(f"`{new_path}` already exists. " - "Please choose another Strategy Name.") - - deploy_new_strategy(args['strategy'], new_path, args['template']) - - else: - raise OperationalException("`new-strategy` requires --strategy to be set.") - - -def deploy_new_hyperopt(hyperopt_name, hyperopt_path: Path, subtemplate: str): - """ - Deploys a new hyperopt template to hyperopt_path - """ - buy_guards = render_template( - templatefile=f"subtemplates/hyperopt_buy_guards_{subtemplate}.j2",) - sell_guards = render_template( - templatefile=f"subtemplates/hyperopt_sell_guards_{subtemplate}.j2",) - buy_space = render_template( - templatefile=f"subtemplates/hyperopt_buy_space_{subtemplate}.j2",) - sell_space = render_template( - templatefile=f"subtemplates/hyperopt_sell_space_{subtemplate}.j2",) - - strategy_text = render_template(templatefile='base_hyperopt.py.j2', - arguments={"hyperopt": hyperopt_name, - "buy_guards": buy_guards, - "sell_guards": sell_guards, - "buy_space": buy_space, - "sell_space": sell_space, - }) - - logger.info(f"Writing hyperopt to `{hyperopt_path}`.") - hyperopt_path.write_text(strategy_text) - - -def start_new_hyperopt(args: Dict[str, Any]) -> None: - - config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - - if "hyperopt" in args and args["hyperopt"]: - if args["hyperopt"] == "DefaultHyperopt": - raise OperationalException("DefaultHyperopt is not allowed as name.") - - new_path = config['user_data_dir'] / USERPATH_HYPEROPTS / (args["hyperopt"] + ".py") - - if new_path.exists(): - raise OperationalException(f"`{new_path}` already exists. " - "Please choose another Strategy Name.") - deploy_new_hyperopt(args['hyperopt'], new_path, args['template']) - else: - raise OperationalException("`new-hyperopt` requires --hyperopt to be set.") - - def start_download_data(args: Dict[str, Any]) -> None: """ Download data (former download_backtest_data.py script) @@ -227,126 +94,6 @@ def start_download_data(args: Dict[str, Any]) -> None: f"on exchange {exchange.name}.") -def start_list_strategies(args: Dict[str, Any]) -> None: - """ - Print Strategies available in a directory - """ - config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - - directory = Path(config.get('strategy_path', config['user_data_dir'] / USERPATH_STRATEGY)) - strategies = StrategyResolver.search_all_objects(directory) - # Sort alphabetically - strategies = sorted(strategies, key=lambda x: x['name']) - strats_to_print = [{'name': s['name'], 'location': s['location'].name} for s in strategies] - - if args['print_one_column']: - print('\n'.join([s['name'] for s in strategies])) - else: - print(tabulate(strats_to_print, headers='keys', tablefmt='pipe')) - - -def start_list_timeframes(args: Dict[str, Any]) -> None: - """ - Print ticker intervals (timeframes) available on Exchange - """ - config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) - # Do not use ticker_interval set in the config - config['ticker_interval'] = None - - # Init exchange - exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) - - if args['print_one_column']: - print('\n'.join(exchange.timeframes)) - else: - print(f"Timeframes available for the exchange `{exchange.name}`: " - f"{', '.join(exchange.timeframes)}") - - -def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: - """ - Print pairs/markets on the exchange - :param args: Cli args from Arguments() - :param pairs_only: if True print only pairs, otherwise print all instruments (markets) - :return: None - """ - config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) - - # Init exchange - exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) - - # By default only active pairs/markets are to be shown - active_only = not args.get('list_pairs_all', False) - - base_currencies = args.get('base_currencies', []) - quote_currencies = args.get('quote_currencies', []) - - try: - pairs = exchange.get_markets(base_currencies=base_currencies, - quote_currencies=quote_currencies, - pairs_only=pairs_only, - active_only=active_only) - # Sort the pairs/markets by symbol - pairs = OrderedDict(sorted(pairs.items())) - except Exception as e: - raise OperationalException(f"Cannot get markets. Reason: {e}") from e - - else: - summary_str = ((f"Exchange {exchange.name} has {len(pairs)} ") + - ("active " if active_only else "") + - (plural(len(pairs), "pair" if pairs_only else "market")) + - (f" with {', '.join(base_currencies)} as base " - f"{plural(len(base_currencies), 'currency', 'currencies')}" - if base_currencies else "") + - (" and" if base_currencies and quote_currencies else "") + - (f" with {', '.join(quote_currencies)} as quote " - f"{plural(len(quote_currencies), 'currency', 'currencies')}" - if quote_currencies else "")) - - headers = ["Id", "Symbol", "Base", "Quote", "Active", - *(['Is pair'] if not pairs_only else [])] - - tabular_data = [] - for _, v in pairs.items(): - tabular_data.append({'Id': v['id'], 'Symbol': v['symbol'], - 'Base': v['base'], 'Quote': v['quote'], - 'Active': market_is_active(v), - **({'Is pair': symbol_is_pair(v['symbol'])} - if not pairs_only else {})}) - - if (args.get('print_one_column', False) or - args.get('list_pairs_print_json', False) or - args.get('print_csv', False)): - # Print summary string in the log in case of machine-readable - # regular formats. - logger.info(f"{summary_str}.") - else: - # Print empty string separating leading logs and output in case of - # human-readable formats. - print() - - if len(pairs): - if args.get('print_list', False): - # print data as a list, with human-readable summary - print(f"{summary_str}: {', '.join(pairs.keys())}.") - elif args.get('print_one_column', False): - print('\n'.join(pairs.keys())) - elif args.get('list_pairs_print_json', False): - print(rapidjson.dumps(list(pairs.keys()), default=str)) - elif args.get('print_csv', False): - writer = csv.DictWriter(sys.stdout, fieldnames=headers) - writer.writeheader() - writer.writerows(tabular_data) - else: - # print data as a table, with the human-readable summary - print(f"{summary_str}:") - print(tabulate(tabular_data, headers='keys', tablefmt='pipe')) - elif not (args.get('print_one_column', False) or - args.get('list_pairs_print_json', False) or - args.get('print_csv', False)): - print(f"{summary_str}.") - - def start_test_pairlist(args: Dict[str, Any]) -> None: """ Test Pairlist configuration @@ -377,106 +124,3 @@ def start_test_pairlist(args: Dict[str, Any]) -> None: print(rapidjson.dumps(list(pairlist), default=str)) else: print(pairlist) - - -def start_hyperopt_list(args: Dict[str, Any]) -> None: - """ - List hyperopt epochs previously evaluated - """ - from freqtrade.optimize.hyperopt import Hyperopt - - config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - - only_best = config.get('hyperopt_list_best', False) - only_profitable = config.get('hyperopt_list_profitable', False) - print_colorized = config.get('print_colorized', False) - print_json = config.get('print_json', False) - no_details = config.get('hyperopt_list_no_details', False) - no_header = False - - trials_file = (config['user_data_dir'] / - 'hyperopt_results' / 'hyperopt_results.pickle') - - # Previous evaluations - trials = Hyperopt.load_previous_results(trials_file) - total_epochs = len(trials) - - trials = _hyperopt_filter_trials(trials, only_best, only_profitable) - - # TODO: fetch the interval for epochs to print from the cli option - epoch_start, epoch_stop = 0, None - - if print_colorized: - colorama_init(autoreset=True) - - try: - # Human-friendly indexes used here (starting from 1) - for val in trials[epoch_start:epoch_stop]: - Hyperopt.print_results_explanation(val, total_epochs, not only_best, print_colorized) - - except KeyboardInterrupt: - print('User interrupted..') - - if trials and not no_details: - sorted_trials = sorted(trials, key=itemgetter('loss')) - results = sorted_trials[0] - Hyperopt.print_epoch_details(results, total_epochs, print_json, no_header) - - -def start_hyperopt_show(args: Dict[str, Any]) -> None: - """ - Show details of a hyperopt epoch previously evaluated - """ - from freqtrade.optimize.hyperopt import Hyperopt - - config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - - only_best = config.get('hyperopt_list_best', False) - only_profitable = config.get('hyperopt_list_profitable', False) - no_header = config.get('hyperopt_show_no_header', False) - - trials_file = (config['user_data_dir'] / - 'hyperopt_results' / 'hyperopt_results.pickle') - - # Previous evaluations - trials = Hyperopt.load_previous_results(trials_file) - total_epochs = len(trials) - - trials = _hyperopt_filter_trials(trials, only_best, only_profitable) - trials_epochs = len(trials) - - n = config.get('hyperopt_show_index', -1) - if n > trials_epochs: - raise OperationalException( - f"The index of the epoch to show should be less than {trials_epochs + 1}.") - if n < -trials_epochs: - raise OperationalException( - f"The index of the epoch to show should be greater than {-trials_epochs - 1}.") - - # Translate epoch index from human-readable format to pythonic - if n > 0: - n -= 1 - - print_json = config.get('print_json', False) - - if trials: - val = trials[n] - Hyperopt.print_epoch_details(val, total_epochs, print_json, no_header, - header_str="Epoch details") - - -def _hyperopt_filter_trials(trials: List, only_best: bool, only_profitable: bool) -> List: - """ - Filter our items from the list of hyperopt results - """ - if only_best: - trials = [x for x in trials if x['is_best']] - if only_profitable: - trials = [x for x in trials if x['results_metrics']['profit'] > 0] - - logger.info(f"{len(trials)} " + - ("best " if only_best else "") + - ("profitable " if only_profitable else "") + - "epochs found.") - - return trials From 7e233041877d7c4976735e10269a2f3421c530f1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 13:09:13 +0100 Subject: [PATCH 1550/3421] Adjust tests to new paths --- tests/test_utils.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/test_utils.py b/tests/test_utils.py index 91009ec42..c686d2117 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -451,8 +451,8 @@ def test_create_datadir(caplog, mocker): # Added assert here to analyze random test-failures ... assert len(caplog.record_tuples) == 0 - cud = mocker.patch("freqtrade.commands.create_userdata_dir", MagicMock()) - csf = mocker.patch("freqtrade.commands.copy_sample_files", MagicMock()) + cud = mocker.patch("freqtrade.commands.deploy_commands.create_userdata_dir", MagicMock()) + csf = mocker.patch("freqtrade.commands.deploy_commands.copy_sample_files", MagicMock()) args = [ "create-userdir", "--userdir", @@ -538,7 +538,7 @@ def test_start_new_hyperopt_no_arg(mocker, caplog): def test_download_data_keyboardInterrupt(mocker, caplog, markets): - dl_mock = mocker.patch('freqtrade.commands.refresh_backtest_ohlcv_data', + dl_mock = mocker.patch('freqtrade.commands.utils.refresh_backtest_ohlcv_data', MagicMock(side_effect=KeyboardInterrupt)) patch_exchange(mocker) mocker.patch( @@ -556,7 +556,7 @@ def test_download_data_keyboardInterrupt(mocker, caplog, markets): def test_download_data_no_markets(mocker, caplog): - dl_mock = mocker.patch('freqtrade.commands.refresh_backtest_ohlcv_data', + dl_mock = mocker.patch('freqtrade.commands.utils.refresh_backtest_ohlcv_data', MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) patch_exchange(mocker, id='binance') mocker.patch( @@ -574,7 +574,7 @@ def test_download_data_no_markets(mocker, caplog): def test_download_data_no_exchange(mocker, caplog): - mocker.patch('freqtrade.commands.refresh_backtest_ohlcv_data', + mocker.patch('freqtrade.commands.utils.refresh_backtest_ohlcv_data', MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) patch_exchange(mocker) mocker.patch( @@ -594,7 +594,7 @@ def test_download_data_no_pairs(mocker, caplog): mocker.patch.object(Path, "exists", MagicMock(return_value=False)) - mocker.patch('freqtrade.commands.refresh_backtest_ohlcv_data', + mocker.patch('freqtrade.commands.utils.refresh_backtest_ohlcv_data', MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) patch_exchange(mocker) mocker.patch( @@ -613,9 +613,9 @@ def test_download_data_no_pairs(mocker, caplog): def test_download_data_trades(mocker, caplog): - dl_mock = mocker.patch('freqtrade.commands.refresh_backtest_trades_data', + dl_mock = mocker.patch('freqtrade.commands.utils.refresh_backtest_trades_data', MagicMock(return_value=[])) - convert_mock = mocker.patch('freqtrade.commands.convert_trades_to_ohlcv', + convert_mock = mocker.patch('freqtrade.commands.utils.convert_trades_to_ohlcv', MagicMock(return_value=[])) patch_exchange(mocker) mocker.patch( From 70a0346b0a2b781dda480dc1a00da9215ac80eea Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 13:17:26 +0100 Subject: [PATCH 1551/3421] Move data-stuff to data-commands --- freqtrade/commands/__init__.py | 16 +++---- freqtrade/commands/data_commands.py | 64 +++++++++++++++++++++++++ freqtrade/commands/utils.py | 73 ++--------------------------- tests/test_utils.py | 12 ++--- 4 files changed, 81 insertions(+), 84 deletions(-) create mode 100644 freqtrade/commands/data_commands.py diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index 4c57efeae..5fa667ccc 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -1,10 +1,10 @@ -from .hyperopt_commands import (start_hyperopt_list, start_hyperopt_show) # noqa: 401 - -from .list_commands import (start_list_exchanges, # noqa: F401 +from freqtrade.commands.data_commands import start_download_data # noqa: F401 +from freqtrade.commands.deploy_commands import (start_create_userdir, # noqa: F401 + start_new_hyperopt, start_new_strategy) +from freqtrade.commands.hyperopt_commands import (start_hyperopt_list, # noqa: F401 + start_hyperopt_show) +from freqtrade.commands.list_commands import (start_list_exchanges, # noqa: F401 start_list_markets, start_list_strategies, start_list_timeframes) -from .utils import setup_utils_configuration # noqa: F401 -from .utils import (start_download_data, # noqa: F401 - start_test_pairlist) -from .deploy_commands import (start_new_hyperopt, start_new_strategy, start_create_userdir) # noqa: F401 -from .trade_commands import start_trading # noqa: F401 +from freqtrade.commands.trade_commands import start_trading # noqa: F401 +from freqtrade.commands.utils import setup_utils_configuration, start_test_pairlist # noqa: F401 diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py new file mode 100644 index 000000000..b1c847d1d --- /dev/null +++ b/freqtrade/commands/data_commands.py @@ -0,0 +1,64 @@ +import logging +import sys +from typing import Any, Dict, List + +import arrow + +from freqtrade.configuration import TimeRange +from freqtrade.data.history import (convert_trades_to_ohlcv, + refresh_backtest_ohlcv_data, + refresh_backtest_trades_data) +from freqtrade.exceptions import OperationalException +from freqtrade.resolvers import ExchangeResolver +from freqtrade.state import RunMode +from .utils import setup_utils_configuration + +logger = logging.getLogger(__name__) + + +def start_download_data(args: Dict[str, Any]) -> None: + """ + Download data (former download_backtest_data.py script) + """ + config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) + + timerange = TimeRange() + if 'days' in config: + time_since = arrow.utcnow().shift(days=-config['days']).strftime("%Y%m%d") + timerange = TimeRange.parse_timerange(f'{time_since}-') + + if 'pairs' not in config: + raise OperationalException( + "Downloading data requires a list of pairs. " + "Please check the documentation on how to configure this.") + + logger.info(f'About to download pairs: {config["pairs"]}, ' + f'intervals: {config["timeframes"]} to {config["datadir"]}') + + pairs_not_available: List[str] = [] + + # Init exchange + exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config) + try: + + if config.get('download_trades'): + pairs_not_available = refresh_backtest_trades_data( + exchange, pairs=config["pairs"], datadir=config['datadir'], + timerange=timerange, erase=config.get("erase")) + + # Convert downloaded trade data to different timeframes + convert_trades_to_ohlcv( + pairs=config["pairs"], timeframes=config["timeframes"], + datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) + else: + pairs_not_available = refresh_backtest_ohlcv_data( + exchange, pairs=config["pairs"], timeframes=config["timeframes"], + datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) + + except KeyboardInterrupt: + sys.exit("SIGINT received, aborting ...") + + finally: + if pairs_not_available: + logger.info(f"Pairs [{','.join(pairs_not_available)}] not available " + f"on exchange {exchange.name}.") diff --git a/freqtrade/commands/utils.py b/freqtrade/commands/utils.py index ba9173cf2..a597d5335 100644 --- a/freqtrade/commands/utils.py +++ b/freqtrade/commands/utils.py @@ -1,30 +1,11 @@ -import csv import logging -import sys -from collections import OrderedDict -from operator import itemgetter -from pathlib import Path -from typing import Any, Dict, List +from typing import Any, Dict -import arrow import rapidjson -from colorama import init as colorama_init -from tabulate import tabulate -from freqtrade.configuration import (Configuration, TimeRange, - remove_credentials, +from freqtrade.configuration import (Configuration, remove_credentials, validate_config_consistency) -from freqtrade.configuration.directory_operations import (copy_sample_files, - create_userdata_dir) -from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGY -from freqtrade.data.history import (convert_trades_to_ohlcv, - refresh_backtest_ohlcv_data, - refresh_backtest_trades_data) -from freqtrade.exceptions import OperationalException -from freqtrade.exchange import (available_exchanges, ccxt_exchanges, - market_is_active, symbol_is_pair) -from freqtrade.misc import plural, render_template -from freqtrade.resolvers import ExchangeResolver, StrategyResolver +from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode logger = logging.getLogger(__name__) @@ -46,54 +27,6 @@ def setup_utils_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str return config -def start_download_data(args: Dict[str, Any]) -> None: - """ - Download data (former download_backtest_data.py script) - """ - config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) - - timerange = TimeRange() - if 'days' in config: - time_since = arrow.utcnow().shift(days=-config['days']).strftime("%Y%m%d") - timerange = TimeRange.parse_timerange(f'{time_since}-') - - if 'pairs' not in config: - raise OperationalException( - "Downloading data requires a list of pairs. " - "Please check the documentation on how to configure this.") - - logger.info(f'About to download pairs: {config["pairs"]}, ' - f'intervals: {config["timeframes"]} to {config["datadir"]}') - - pairs_not_available: List[str] = [] - - # Init exchange - exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config) - try: - - if config.get('download_trades'): - pairs_not_available = refresh_backtest_trades_data( - exchange, pairs=config["pairs"], datadir=config['datadir'], - timerange=timerange, erase=config.get("erase")) - - # Convert downloaded trade data to different timeframes - convert_trades_to_ohlcv( - pairs=config["pairs"], timeframes=config["timeframes"], - datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) - else: - pairs_not_available = refresh_backtest_ohlcv_data( - exchange, pairs=config["pairs"], timeframes=config["timeframes"], - datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) - - except KeyboardInterrupt: - sys.exit("SIGINT received, aborting ...") - - finally: - if pairs_not_available: - logger.info(f"Pairs [{','.join(pairs_not_available)}] not available " - f"on exchange {exchange.name}.") - - def start_test_pairlist(args: Dict[str, Any]) -> None: """ Test Pairlist configuration diff --git a/tests/test_utils.py b/tests/test_utils.py index c686d2117..1328e3981 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -538,7 +538,7 @@ def test_start_new_hyperopt_no_arg(mocker, caplog): def test_download_data_keyboardInterrupt(mocker, caplog, markets): - dl_mock = mocker.patch('freqtrade.commands.utils.refresh_backtest_ohlcv_data', + dl_mock = mocker.patch('freqtrade.commands.data_commands.refresh_backtest_ohlcv_data', MagicMock(side_effect=KeyboardInterrupt)) patch_exchange(mocker) mocker.patch( @@ -556,7 +556,7 @@ def test_download_data_keyboardInterrupt(mocker, caplog, markets): def test_download_data_no_markets(mocker, caplog): - dl_mock = mocker.patch('freqtrade.commands.utils.refresh_backtest_ohlcv_data', + dl_mock = mocker.patch('freqtrade.commands.data_commands.refresh_backtest_ohlcv_data', MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) patch_exchange(mocker, id='binance') mocker.patch( @@ -574,7 +574,7 @@ def test_download_data_no_markets(mocker, caplog): def test_download_data_no_exchange(mocker, caplog): - mocker.patch('freqtrade.commands.utils.refresh_backtest_ohlcv_data', + mocker.patch('freqtrade.commands.data_commands.refresh_backtest_ohlcv_data', MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) patch_exchange(mocker) mocker.patch( @@ -594,7 +594,7 @@ def test_download_data_no_pairs(mocker, caplog): mocker.patch.object(Path, "exists", MagicMock(return_value=False)) - mocker.patch('freqtrade.commands.utils.refresh_backtest_ohlcv_data', + mocker.patch('freqtrade.commands.data_commands.refresh_backtest_ohlcv_data', MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) patch_exchange(mocker) mocker.patch( @@ -613,9 +613,9 @@ def test_download_data_no_pairs(mocker, caplog): def test_download_data_trades(mocker, caplog): - dl_mock = mocker.patch('freqtrade.commands.utils.refresh_backtest_trades_data', + dl_mock = mocker.patch('freqtrade.commands.data_commands.refresh_backtest_trades_data', MagicMock(return_value=[])) - convert_mock = mocker.patch('freqtrade.commands.utils.convert_trades_to_ohlcv', + convert_mock = mocker.patch('freqtrade.commands.data_commands.convert_trades_to_ohlcv', MagicMock(return_value=[])) patch_exchange(mocker) mocker.patch( From b254bdfea31c95b237b2642c6b55050d1e727b45 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 13:20:34 +0100 Subject: [PATCH 1552/3421] Move plot_utils to plot_commands --- freqtrade/commands/__init__.py | 1 + freqtrade/{plot/plot_utils.py => commands/plot_commands.py} | 2 +- freqtrade/configuration/arguments.py | 2 +- tests/test_plotting.py | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) rename freqtrade/{plot/plot_utils.py => commands/plot_commands.py} (94%) diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index 5fa667ccc..45088e8a3 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -6,5 +6,6 @@ from freqtrade.commands.hyperopt_commands import (start_hyperopt_list, # noqa: from freqtrade.commands.list_commands import (start_list_exchanges, # noqa: F401 start_list_markets, start_list_strategies, start_list_timeframes) +from freqtrade.commands.plot_commands import start_plot_dataframe, start_plot_profit # noqa: F401 from freqtrade.commands.trade_commands import start_trading # noqa: F401 from freqtrade.commands.utils import setup_utils_configuration, start_test_pairlist # noqa: F401 diff --git a/freqtrade/plot/plot_utils.py b/freqtrade/commands/plot_commands.py similarity index 94% rename from freqtrade/plot/plot_utils.py rename to freqtrade/commands/plot_commands.py index b2f16dff0..4c68cc3c5 100644 --- a/freqtrade/plot/plot_utils.py +++ b/freqtrade/commands/plot_commands.py @@ -2,7 +2,7 @@ from typing import Any, Dict from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode -from freqtrade.commands import setup_utils_configuration +from freqtrade.commands.utils import setup_utils_configuration def validate_plot_args(args: Dict[str, Any]): diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index 3c71fa548..c61e4ec13 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -136,8 +136,8 @@ class Arguments: start_list_exchanges, start_list_markets, start_list_strategies, start_new_hyperopt, start_new_strategy, start_list_timeframes, + start_plot_dataframe, start_plot_profit, start_test_pairlist, start_trading) - from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit subparsers = self.parser.add_subparsers(dest='command', # Use custom message when no subhandler is added diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 78c01eb97..e7ec4ce46 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -11,7 +11,7 @@ from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import create_cum_profit, load_backtest_data from freqtrade.exceptions import OperationalException -from freqtrade.plot.plot_utils import start_plot_dataframe, start_plot_profit +from freqtrade.commands import start_plot_dataframe, start_plot_profit from freqtrade.plot.plotting import (add_indicators, add_profit, create_plotconfig, generate_candlestick_graph, From e033df6a2fce1d50333e70e599cd7dfde187b162 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 13:32:52 +0100 Subject: [PATCH 1553/3421] Move optimize_commands to commands module --- .../__init__.py => commands/optimize_commands.py} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename freqtrade/{optimize/__init__.py => commands/optimize_commands.py} (89%) diff --git a/freqtrade/optimize/__init__.py b/freqtrade/commands/optimize_commands.py similarity index 89% rename from freqtrade/optimize/__init__.py rename to freqtrade/commands/optimize_commands.py index 98b521d4e..e635e61fd 100644 --- a/freqtrade/optimize/__init__.py +++ b/freqtrade/commands/optimize_commands.py @@ -2,14 +2,14 @@ import logging from typing import Any, Dict from freqtrade import constants +from freqtrade.commands.utils import setup_utils_configuration from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.state import RunMode -from freqtrade.commands import setup_utils_configuration logger = logging.getLogger(__name__) -def setup_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str, Any]: +def setup_optimize_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str, Any]: """ Prepare the configuration for the Hyperopt module :param args: Cli args from Arguments() @@ -35,7 +35,7 @@ def start_backtesting(args: Dict[str, Any]) -> None: from freqtrade.optimize.backtesting import Backtesting # Initialize configuration - config = setup_configuration(args, RunMode.BACKTEST) + config = setup_optimize_configuration(args, RunMode.BACKTEST) logger.info('Starting freqtrade in Backtesting mode') @@ -58,7 +58,7 @@ def start_hyperopt(args: Dict[str, Any]) -> None: raise OperationalException( f"{e}. Please ensure that the hyperopt dependencies are installed.") from e # Initialize configuration - config = setup_configuration(args, RunMode.HYPEROPT) + config = setup_optimize_configuration(args, RunMode.HYPEROPT) logger.info('Starting freqtrade in Hyperopt mode') @@ -94,7 +94,7 @@ def start_edge(args: Dict[str, Any]) -> None: """ from freqtrade.optimize.edge_cli import EdgeCli # Initialize configuration - config = setup_configuration(args, RunMode.EDGE) + config = setup_optimize_configuration(args, RunMode.EDGE) logger.info('Starting freqtrade in Edge mode') # Initialize Edge object From f347e5934a6be5d515c983daac4755ee3a8ec9ca Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 13:33:13 +0100 Subject: [PATCH 1554/3421] Small adjustments for moved commands --- freqtrade/commands/__init__.py | 30 ++++++++++++++++++---------- freqtrade/configuration/arguments.py | 2 +- freqtrade/optimize/__init__.py | 0 tests/optimize/test_backtesting.py | 12 +++++------ tests/optimize/test_edge_cli.py | 8 ++++---- tests/optimize/test_hyperopt.py | 8 ++++---- tests/test_main.py | 4 ++-- 7 files changed, 36 insertions(+), 28 deletions(-) create mode 100644 freqtrade/optimize/__init__.py diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index 45088e8a3..8339486fb 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -1,11 +1,19 @@ -from freqtrade.commands.data_commands import start_download_data # noqa: F401 -from freqtrade.commands.deploy_commands import (start_create_userdir, # noqa: F401 - start_new_hyperopt, start_new_strategy) -from freqtrade.commands.hyperopt_commands import (start_hyperopt_list, # noqa: F401 - start_hyperopt_show) -from freqtrade.commands.list_commands import (start_list_exchanges, # noqa: F401 - start_list_markets, start_list_strategies, - start_list_timeframes) -from freqtrade.commands.plot_commands import start_plot_dataframe, start_plot_profit # noqa: F401 -from freqtrade.commands.trade_commands import start_trading # noqa: F401 -from freqtrade.commands.utils import setup_utils_configuration, start_test_pairlist # noqa: F401 +# flake8: noqa: F401 + +from freqtrade.commands.data_commands import start_download_data +from freqtrade.commands.deploy_commands import (start_create_userdir, + start_new_hyperopt, + start_new_strategy) +from freqtrade.commands.hyperopt_commands import (start_hyperopt_list, + start_hyperopt_show) +from freqtrade.commands.list_commands import (start_list_exchanges, + start_list_markets, + start_list_strategies, + start_list_timeframes) +from freqtrade.commands.optimize_commands import (start_backtesting, + start_edge, start_hyperopt) +from freqtrade.commands.plot_commands import (start_plot_dataframe, + start_plot_profit) +from freqtrade.commands.trade_commands import start_trading +from freqtrade.commands.utils import (setup_utils_configuration, + start_test_pairlist) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index c61e4ec13..21800e821 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -130,13 +130,13 @@ class Arguments: self.parser = argparse.ArgumentParser(description='Free, open source crypto trading bot') self._build_args(optionlist=['version'], parser=self.parser) - from freqtrade.optimize import start_backtesting, start_hyperopt, start_edge from freqtrade.commands import (start_create_userdir, start_download_data, start_hyperopt_list, start_hyperopt_show, start_list_exchanges, start_list_markets, start_list_strategies, start_new_hyperopt, start_new_strategy, start_list_timeframes, start_plot_dataframe, start_plot_profit, + start_backtesting, start_hyperopt, start_edge, start_test_pairlist, start_trading) subparsers = self.parser.add_subparsers(dest='command', diff --git a/freqtrade/optimize/__init__.py b/freqtrade/optimize/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index acbc44e21..07872da57 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -12,13 +12,13 @@ from arrow import Arrow from freqtrade import constants from freqtrade.configuration import TimeRange +from freqtrade.commands.optimize_commands import setup_optimize_configuration, start_backtesting from freqtrade.data import history from freqtrade.data.btanalysis import evaluate_result_multi from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import get_timerange from freqtrade.exceptions import DependencyException, OperationalException -from freqtrade.optimize import setup_configuration, start_backtesting from freqtrade.optimize.backtesting import Backtesting from freqtrade.state import RunMode from freqtrade.strategy.default_strategy import DefaultStrategy @@ -177,7 +177,7 @@ def _trend_alternate(dataframe=None, metadata=None): # Unit tests -def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> None: +def test_setup_optimize_configuration_without_arguments(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) args = [ @@ -186,7 +186,7 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> '--strategy', 'DefaultStrategy', ] - config = setup_configuration(get_args(args), RunMode.BACKTEST) + config = setup_optimize_configuration(get_args(args), RunMode.BACKTEST) assert 'max_open_trades' in config assert 'stake_currency' in config assert 'stake_amount' in config @@ -227,7 +227,7 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> '--fee', '0', ] - config = setup_configuration(get_args(args), RunMode.BACKTEST) + config = setup_optimize_configuration(get_args(args), RunMode.BACKTEST) assert 'max_open_trades' in config assert 'stake_currency' in config assert 'stake_amount' in config @@ -260,7 +260,7 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> assert log_has('Parameter --fee detected, setting fee to: {} ...'.format(config['fee']), caplog) -def test_setup_configuration_unlimited_stake_amount(mocker, default_conf, caplog) -> None: +def test_setup_optimize_configuration_unlimited_stake_amount(mocker, default_conf, caplog) -> None: default_conf['stake_amount'] = constants.UNLIMITED_STAKE_AMOUNT patched_configuration_load_config_file(mocker, default_conf) @@ -272,7 +272,7 @@ def test_setup_configuration_unlimited_stake_amount(mocker, default_conf, caplog ] with pytest.raises(DependencyException, match=r'.*stake amount.*'): - setup_configuration(get_args(args), RunMode.BACKTEST) + setup_optimize_configuration(get_args(args), RunMode.BACKTEST) def test_start(mocker, fee, default_conf, caplog) -> None: diff --git a/tests/optimize/test_edge_cli.py b/tests/optimize/test_edge_cli.py index acc0d2d16..96dd0899d 100644 --- a/tests/optimize/test_edge_cli.py +++ b/tests/optimize/test_edge_cli.py @@ -3,14 +3,14 @@ from unittest.mock import MagicMock -from freqtrade.optimize import setup_configuration, start_edge +from freqtrade.commands.optimize_commands import setup_optimize_configuration, start_edge from freqtrade.optimize.edge_cli import EdgeCli from freqtrade.state import RunMode from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, patched_configuration_load_config_file) -def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> None: +def test_setup_optimize_configuration_without_arguments(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) args = [ @@ -19,7 +19,7 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> '--strategy', 'DefaultStrategy', ] - config = setup_configuration(get_args(args), RunMode.EDGE) + config = setup_optimize_configuration(get_args(args), RunMode.EDGE) assert config['runmode'] == RunMode.EDGE assert 'max_open_trades' in config @@ -53,7 +53,7 @@ def test_setup_edge_configuration_with_arguments(mocker, edge_conf, caplog) -> N '--stoplosses=-0.01,-0.10,-0.001' ] - config = setup_configuration(get_args(args), RunMode.EDGE) + config = setup_optimize_configuration(get_args(args), RunMode.EDGE) assert 'max_open_trades' in config assert 'stake_currency' in config assert 'stake_amount' in config diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 473d760ac..69d110649 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -9,10 +9,10 @@ import pytest from arrow import Arrow from filelock import Timeout -from freqtrade.exceptions import OperationalException +from freqtrade.commands.optimize_commands import setup_optimize_configuration, start_hyperopt from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.history import load_tickerdata_file -from freqtrade.optimize import setup_configuration, start_hyperopt +from freqtrade.exceptions import OperationalException from freqtrade.optimize.default_hyperopt import DefaultHyperOpt from freqtrade.optimize.default_hyperopt_loss import DefaultHyperOptLoss from freqtrade.optimize.hyperopt import Hyperopt @@ -77,7 +77,7 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca '--hyperopt', 'DefaultHyperOpt', ] - config = setup_configuration(get_args(args), RunMode.HYPEROPT) + config = setup_optimize_configuration(get_args(args), RunMode.HYPEROPT) assert 'max_open_trades' in config assert 'stake_currency' in config assert 'stake_amount' in config @@ -117,7 +117,7 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo '--print-all' ] - config = setup_configuration(get_args(args), RunMode.HYPEROPT) + config = setup_optimize_configuration(get_args(args), RunMode.HYPEROPT) assert 'max_open_trades' in config assert 'stake_currency' in config assert 'stake_amount' in config diff --git a/tests/test_main.py b/tests/test_main.py index 76b1bf658..462ac6427 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -26,7 +26,7 @@ def test_parse_args_backtesting(mocker) -> None: Test that main() can start backtesting and also ensure we can pass some specific arguments further argument parsing is done in test_arguments.py """ - backtesting_mock = mocker.patch('freqtrade.optimize.start_backtesting', MagicMock()) + backtesting_mock = mocker.patch('freqtrade.commands.start_backtesting') backtesting_mock.__name__ = PropertyMock("start_backtesting") # it's sys.exit(0) at the end of backtesting with pytest.raises(SystemExit): @@ -42,7 +42,7 @@ def test_parse_args_backtesting(mocker) -> None: def test_main_start_hyperopt(mocker) -> None: - hyperopt_mock = mocker.patch('freqtrade.optimize.start_hyperopt', MagicMock()) + hyperopt_mock = mocker.patch('freqtrade.commands.start_hyperopt', MagicMock()) hyperopt_mock.__name__ = PropertyMock("start_hyperopt") # it's sys.exit(0) at the end of hyperopt with pytest.raises(SystemExit): From a1c684f67ca3dcf0c6293d71511c72a0dcbd2cb3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 13:36:33 +0100 Subject: [PATCH 1555/3421] Simplify noqa setup for module imports --- freqtrade/configuration/__init__.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/freqtrade/configuration/__init__.py b/freqtrade/configuration/__init__.py index 63c38d8c5..a631609d7 100644 --- a/freqtrade/configuration/__init__.py +++ b/freqtrade/configuration/__init__.py @@ -1,5 +1,7 @@ -from freqtrade.configuration.arguments import Arguments # noqa: F401 -from freqtrade.configuration.check_exchange import check_exchange, remove_credentials # noqa: F401 -from freqtrade.configuration.timerange import TimeRange # noqa: F401 -from freqtrade.configuration.configuration import Configuration # noqa: F401 -from freqtrade.configuration.config_validation import validate_config_consistency # noqa: F401 +# flake8: noqa: F401 + +from freqtrade.configuration.arguments import Arguments +from freqtrade.configuration.check_exchange import check_exchange, remove_credentials +from freqtrade.configuration.timerange import TimeRange +from freqtrade.configuration.configuration import Configuration +from freqtrade.configuration.config_validation import validate_config_consistency From 7f851ad8d950d5c26da08f76ad239610136af51c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 13:38:56 +0100 Subject: [PATCH 1556/3421] Move arguments and cli_options to commands module --- freqtrade/{configuration => commands}/arguments.py | 0 freqtrade/{configuration => commands}/cli_options.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename freqtrade/{configuration => commands}/arguments.py (100%) rename freqtrade/{configuration => commands}/cli_options.py (100%) diff --git a/freqtrade/configuration/arguments.py b/freqtrade/commands/arguments.py similarity index 100% rename from freqtrade/configuration/arguments.py rename to freqtrade/commands/arguments.py diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/commands/cli_options.py similarity index 100% rename from freqtrade/configuration/cli_options.py rename to freqtrade/commands/cli_options.py From a3e9d04383bdc37aea465561306334042adc801a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 13:41:04 +0100 Subject: [PATCH 1557/3421] Adjust imports to new place for arguments --- freqtrade/commands/__init__.py | 1 + freqtrade/commands/arguments.py | 2 +- freqtrade/commands/cli_options.py | 6 +++--- freqtrade/configuration/__init__.py | 1 - freqtrade/main.py | 2 +- tests/conftest.py | 2 +- tests/test_arguments.py | 4 ++-- tests/test_configuration.py | 3 ++- tests/test_main.py | 2 +- 9 files changed, 12 insertions(+), 11 deletions(-) diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index 8339486fb..dcb814c50 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -1,5 +1,6 @@ # flake8: noqa: F401 +from freqtrade.commands.arguments import Arguments from freqtrade.commands.data_commands import start_download_data from freqtrade.commands.deploy_commands import (start_create_userdir, start_new_hyperopt, diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 21800e821..724814554 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -7,7 +7,7 @@ from pathlib import Path from typing import Any, Dict, List, Optional from freqtrade import constants -from freqtrade.configuration.cli_options import AVAILABLE_CLI_OPTIONS +from freqtrade.commands.cli_options import AVAILABLE_CLI_OPTIONS ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir", "user_data_dir"] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 1807cd591..490f26cfa 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -1,7 +1,7 @@ """ Definition of cli arguments used in arguments.py """ -import argparse +from argparse import ArgumentTypeError from freqtrade import __version__, constants @@ -12,7 +12,7 @@ def check_int_positive(value: str) -> int: if uint <= 0: raise ValueError except ValueError: - raise argparse.ArgumentTypeError( + raise ArgumentTypeError( f"{value} is invalid for this parameter, should be a positive integer value" ) return uint @@ -24,7 +24,7 @@ def check_int_nonzero(value: str) -> int: if uint == 0: raise ValueError except ValueError: - raise argparse.ArgumentTypeError( + raise ArgumentTypeError( f"{value} is invalid for this parameter, should be a non-zero integer value" ) return uint diff --git a/freqtrade/configuration/__init__.py b/freqtrade/configuration/__init__.py index a631609d7..54fc4e427 100644 --- a/freqtrade/configuration/__init__.py +++ b/freqtrade/configuration/__init__.py @@ -1,6 +1,5 @@ # flake8: noqa: F401 -from freqtrade.configuration.arguments import Arguments from freqtrade.configuration.check_exchange import check_exchange, remove_credentials from freqtrade.configuration.timerange import TimeRange from freqtrade.configuration.configuration import Configuration diff --git a/freqtrade/main.py b/freqtrade/main.py index 811e29864..a75eeebed 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -14,7 +14,7 @@ if sys.version_info < (3, 6): import logging from typing import Any, List -from freqtrade.configuration import Arguments +from freqtrade.commands import Arguments logger = logging.getLogger('freqtrade') diff --git a/tests/conftest.py b/tests/conftest.py index 295c91f56..395388f73 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -14,7 +14,7 @@ import pytest from telegram import Chat, Message, Update from freqtrade import constants, persistence -from freqtrade.configuration import Arguments +from freqtrade.commands import Arguments from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.edge import Edge, PairInfo from freqtrade.exchange import Exchange diff --git a/tests/test_arguments.py b/tests/test_arguments.py index d8fbace0f..60da0082a 100644 --- a/tests/test_arguments.py +++ b/tests/test_arguments.py @@ -5,8 +5,8 @@ from unittest.mock import MagicMock import pytest -from freqtrade.configuration import Arguments -from freqtrade.configuration.cli_options import check_int_positive +from freqtrade.commands import Arguments +from freqtrade.commands.cli_options import check_int_positive # Parse common command-line-arguments. Used for all tools diff --git a/tests/test_configuration.py b/tests/test_configuration.py index cbcd6416a..74de166c1 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -10,7 +10,8 @@ from unittest.mock import MagicMock import pytest from jsonschema import ValidationError -from freqtrade.configuration import (Arguments, Configuration, check_exchange, +from freqtrade.commands import Arguments +from freqtrade.configuration import (Configuration, check_exchange, remove_credentials, validate_config_consistency) from freqtrade.configuration.config_validation import validate_config_schema diff --git a/tests/test_main.py b/tests/test_main.py index 462ac6427..1229f748a 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -5,7 +5,7 @@ from unittest.mock import MagicMock, PropertyMock import pytest -from freqtrade.configuration import Arguments +from freqtrade.commands import Arguments from freqtrade.exceptions import OperationalException, FreqtradeException from freqtrade.freqtradebot import FreqtradeBot from freqtrade.main import main From 2d02c3f2a4097aa56182ff9d56bf4f631ac06696 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 13:43:30 +0100 Subject: [PATCH 1558/3421] Split out pairlist_commands --- freqtrade/commands/__init__.py | 4 +-- freqtrade/commands/pairlist_commands.py | 43 +++++++++++++++++++++++++ freqtrade/commands/utils.py | 35 -------------------- 3 files changed, 45 insertions(+), 37 deletions(-) create mode 100644 freqtrade/commands/pairlist_commands.py diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index dcb814c50..e16a6f203 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -13,8 +13,8 @@ from freqtrade.commands.list_commands import (start_list_exchanges, start_list_timeframes) from freqtrade.commands.optimize_commands import (start_backtesting, start_edge, start_hyperopt) +from freqtrade.commands.pairlist_commands import start_test_pairlist from freqtrade.commands.plot_commands import (start_plot_dataframe, start_plot_profit) from freqtrade.commands.trade_commands import start_trading -from freqtrade.commands.utils import (setup_utils_configuration, - start_test_pairlist) +from freqtrade.commands.utils import setup_utils_configuration diff --git a/freqtrade/commands/pairlist_commands.py b/freqtrade/commands/pairlist_commands.py new file mode 100644 index 000000000..06ba2e680 --- /dev/null +++ b/freqtrade/commands/pairlist_commands.py @@ -0,0 +1,43 @@ +import logging +from typing import Any, Dict + +import rapidjson + +from freqtrade.resolvers import ExchangeResolver +from freqtrade.state import RunMode + +from .utils import setup_utils_configuration + +logger = logging.getLogger(__name__) + + +def start_test_pairlist(args: Dict[str, Any]) -> None: + """ + Test Pairlist configuration + """ + from freqtrade.pairlist.pairlistmanager import PairListManager + config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) + + exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) + + quote_currencies = args.get('quote_currencies') + if not quote_currencies: + quote_currencies = [config.get('stake_currency')] + results = {} + for curr in quote_currencies: + config['stake_currency'] = curr + # Do not use ticker_interval set in the config + pairlists = PairListManager(exchange, config) + pairlists.refresh_pairlist() + results[curr] = pairlists.whitelist + + for curr, pairlist in results.items(): + if not args.get('print_one_column', False): + print(f"Pairs for {curr}: ") + + if args.get('print_one_column', False): + print('\n'.join(pairlist)) + elif args.get('list_pairs_print_json', False): + print(rapidjson.dumps(list(pairlist), default=str)) + else: + print(pairlist) diff --git a/freqtrade/commands/utils.py b/freqtrade/commands/utils.py index a597d5335..f77a35383 100644 --- a/freqtrade/commands/utils.py +++ b/freqtrade/commands/utils.py @@ -1,11 +1,8 @@ import logging from typing import Any, Dict -import rapidjson - from freqtrade.configuration import (Configuration, remove_credentials, validate_config_consistency) -from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode logger = logging.getLogger(__name__) @@ -25,35 +22,3 @@ def setup_utils_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str validate_config_consistency(config) return config - - -def start_test_pairlist(args: Dict[str, Any]) -> None: - """ - Test Pairlist configuration - """ - from freqtrade.pairlist.pairlistmanager import PairListManager - config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) - - exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) - - quote_currencies = args.get('quote_currencies') - if not quote_currencies: - quote_currencies = [config.get('stake_currency')] - results = {} - for curr in quote_currencies: - config['stake_currency'] = curr - # Do not use ticker_interval set in the config - pairlists = PairListManager(exchange, config) - pairlists.refresh_pairlist() - results[curr] = pairlists.whitelist - - for curr, pairlist in results.items(): - if not args.get('print_one_column', False): - print(f"Pairs for {curr}: ") - - if args.get('print_one_column', False): - print('\n'.join(pairlist)) - elif args.get('list_pairs_print_json', False): - print(rapidjson.dumps(list(pairlist), default=str)) - else: - print(pairlist) From 8c9119b4710e467d4833638d582aba5914d61d2b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 13:45:37 +0100 Subject: [PATCH 1559/3421] Add docustring to commands module --- freqtrade/commands/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index e16a6f203..1dadbec1e 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -1,5 +1,11 @@ # flake8: noqa: F401 +""" +Commands module. +Contains all start-commands, subcommands and CLI Interface creation. +Note: Be careful with file-scoped imports in these subfiles. + as they are parsed on startup, nothing containing optional modules should be loaded. +""" from freqtrade.commands.arguments import Arguments from freqtrade.commands.data_commands import start_download_data from freqtrade.commands.deploy_commands import (start_create_userdir, From 02563019fc84d559584ae007c6c9d5f4055da911 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jan 2020 13:55:48 +0100 Subject: [PATCH 1560/3421] move setup_utils_config to configuration module --- freqtrade/commands/__init__.py | 1 - freqtrade/commands/data_commands.py | 3 +-- freqtrade/commands/deploy_commands.py | 3 +-- freqtrade/commands/hyperopt_commands.py | 2 +- freqtrade/commands/list_commands.py | 3 +-- freqtrade/commands/optimize_commands.py | 2 +- freqtrade/commands/pairlist_commands.py | 3 +-- freqtrade/commands/plot_commands.py | 2 +- freqtrade/configuration/__init__.py | 1 + .../{commands/utils.py => configuration/config_setup.py} | 5 +++-- tests/commands/__init__.py | 0 tests/{test_utils.py => commands/test_commands.py} | 8 ++++---- 12 files changed, 15 insertions(+), 18 deletions(-) rename freqtrade/{commands/utils.py => configuration/config_setup.py} (79%) create mode 100644 tests/commands/__init__.py rename tests/{test_utils.py => commands/test_commands.py} (99%) diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index 1dadbec1e..990c1107a 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -23,4 +23,3 @@ from freqtrade.commands.pairlist_commands import start_test_pairlist from freqtrade.commands.plot_commands import (start_plot_dataframe, start_plot_profit) from freqtrade.commands.trade_commands import start_trading -from freqtrade.commands.utils import setup_utils_configuration diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index b1c847d1d..c01772023 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -4,14 +4,13 @@ from typing import Any, Dict, List import arrow -from freqtrade.configuration import TimeRange +from freqtrade.configuration import TimeRange, setup_utils_configuration from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data, refresh_backtest_trades_data) from freqtrade.exceptions import OperationalException from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode -from .utils import setup_utils_configuration logger = logging.getLogger(__name__) diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index 892e15db1..99ae63244 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -3,6 +3,7 @@ import sys from pathlib import Path from typing import Any, Dict +from freqtrade.configuration import setup_utils_configuration from freqtrade.configuration.directory_operations import (copy_sample_files, create_userdata_dir) from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGY @@ -10,8 +11,6 @@ from freqtrade.exceptions import OperationalException from freqtrade.misc import render_template from freqtrade.state import RunMode -from .utils import setup_utils_configuration - logger = logging.getLogger(__name__) diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index db3f69050..5c6f25848 100644 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -4,7 +4,7 @@ from typing import Any, Dict, List from colorama import init as colorama_init -from .utils import setup_utils_configuration +from freqtrade.configuration import setup_utils_configuration from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index 90efaf66f..022822782 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -8,6 +8,7 @@ from typing import Any, Dict import rapidjson from tabulate import tabulate +from freqtrade.configuration import setup_utils_configuration from freqtrade.constants import USERPATH_STRATEGY from freqtrade.exceptions import OperationalException from freqtrade.exchange import (available_exchanges, ccxt_exchanges, @@ -16,8 +17,6 @@ from freqtrade.misc import plural from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.state import RunMode -from .utils import setup_utils_configuration - logger = logging.getLogger(__name__) diff --git a/freqtrade/commands/optimize_commands.py b/freqtrade/commands/optimize_commands.py index e635e61fd..a2d1b4601 100644 --- a/freqtrade/commands/optimize_commands.py +++ b/freqtrade/commands/optimize_commands.py @@ -2,7 +2,7 @@ import logging from typing import Any, Dict from freqtrade import constants -from freqtrade.commands.utils import setup_utils_configuration +from freqtrade.configuration import setup_utils_configuration from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.state import RunMode diff --git a/freqtrade/commands/pairlist_commands.py b/freqtrade/commands/pairlist_commands.py index 06ba2e680..bf0b217a5 100644 --- a/freqtrade/commands/pairlist_commands.py +++ b/freqtrade/commands/pairlist_commands.py @@ -3,11 +3,10 @@ from typing import Any, Dict import rapidjson +from freqtrade.configuration import setup_utils_configuration from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode -from .utils import setup_utils_configuration - logger = logging.getLogger(__name__) diff --git a/freqtrade/commands/plot_commands.py b/freqtrade/commands/plot_commands.py index 4c68cc3c5..028933ba7 100644 --- a/freqtrade/commands/plot_commands.py +++ b/freqtrade/commands/plot_commands.py @@ -1,8 +1,8 @@ from typing import Any, Dict +from freqtrade.configuration import setup_utils_configuration from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode -from freqtrade.commands.utils import setup_utils_configuration def validate_plot_args(args: Dict[str, Any]): diff --git a/freqtrade/configuration/__init__.py b/freqtrade/configuration/__init__.py index 54fc4e427..d41ac97ec 100644 --- a/freqtrade/configuration/__init__.py +++ b/freqtrade/configuration/__init__.py @@ -1,5 +1,6 @@ # flake8: noqa: F401 +from freqtrade.configuration.config_setup import setup_utils_configuration from freqtrade.configuration.check_exchange import check_exchange, remove_credentials from freqtrade.configuration.timerange import TimeRange from freqtrade.configuration.configuration import Configuration diff --git a/freqtrade/commands/utils.py b/freqtrade/configuration/config_setup.py similarity index 79% rename from freqtrade/commands/utils.py rename to freqtrade/configuration/config_setup.py index f77a35383..64f283e42 100644 --- a/freqtrade/commands/utils.py +++ b/freqtrade/configuration/config_setup.py @@ -1,8 +1,9 @@ import logging from typing import Any, Dict -from freqtrade.configuration import (Configuration, remove_credentials, - validate_config_consistency) +from .config_validation import validate_config_consistency +from .configuration import Configuration +from .check_exchange import remove_credentials from freqtrade.state import RunMode logger = logging.getLogger(__name__) diff --git a/tests/commands/__init__.py b/tests/commands/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_utils.py b/tests/commands/test_commands.py similarity index 99% rename from tests/test_utils.py rename to tests/commands/test_commands.py index 1328e3981..65d7f6eaf 100644 --- a/tests/test_utils.py +++ b/tests/commands/test_commands.py @@ -4,13 +4,13 @@ from unittest.mock import MagicMock, PropertyMock import pytest -from freqtrade.commands import (setup_utils_configuration, - start_create_userdir, start_download_data, +from freqtrade.commands import (start_create_userdir, start_download_data, start_hyperopt_list, start_hyperopt_show, start_list_exchanges, start_list_markets, start_list_strategies, start_list_timeframes, start_new_hyperopt, start_new_strategy, start_test_pairlist, start_trading) +from freqtrade.configuration import setup_utils_configuration from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, @@ -639,7 +639,7 @@ def test_start_list_strategies(mocker, caplog, capsys): args = [ "list-strategies", "--strategy-path", - str(Path(__file__).parent / "strategy"), + str(Path(__file__).parent.parent / "strategy"), "-1" ] pargs = get_args(args) @@ -654,7 +654,7 @@ def test_start_list_strategies(mocker, caplog, capsys): args = [ "list-strategies", "--strategy-path", - str(Path(__file__).parent / "strategy"), + str(Path(__file__).parent.parent / "strategy"), ] pargs = get_args(args) # pargs['config'] = None From 33645e45fd3902a673ead1fbaf4f1a521134eaae Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 27 Jan 2020 02:49:25 +0300 Subject: [PATCH 1561/3421] Minor cosmetics in start_trading --- freqtrade/commands/trade_commands.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/commands/trade_commands.py b/freqtrade/commands/trade_commands.py index 2c0c4c9c1..352fac26d 100644 --- a/freqtrade/commands/trade_commands.py +++ b/freqtrade/commands/trade_commands.py @@ -10,8 +10,10 @@ def start_trading(args: Dict[str, Any]) -> int: """ Main entry point for trading mode """ + # Import here to avoid loading worker module when it's not used from freqtrade.worker import Worker - # Load and run worker + + # Create and run worker worker = None try: worker = Worker(args) From 30e3e434abc76e6c0af40b256540cc32479c410c Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 27 Jan 2020 03:34:53 +0300 Subject: [PATCH 1562/3421] Add notify_status() to FreqtradeBot --- freqtrade/freqtradebot.py | 10 ++++++++++ freqtrade/worker.py | 24 +++++++----------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e3856e200..6c519280d 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -95,6 +95,16 @@ class FreqtradeBot: # Protect sell-logic from forcesell and viceversa self._sell_lock = Lock() + def notify_status(self, msg: str) -> None: + """ + Public method for users of this class (worker, etc.) to send notifications + via RPC about changes in the bot status. + """ + self.rpc.send_msg({ + 'type': RPCMessageType.STATUS_NOTIFICATION, + 'status': msg + }) + def cleanup(self) -> None: """ Cleanup pending resources on an already stopped bot diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 22651d269..972ff0d61 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -12,7 +12,6 @@ from freqtrade import __version__, constants from freqtrade.configuration import Configuration from freqtrade.exceptions import OperationalException, TemporaryError from freqtrade.freqtradebot import FreqtradeBot -from freqtrade.rpc import RPCMessageType from freqtrade.state import State logger = logging.getLogger(__name__) @@ -84,10 +83,8 @@ class Worker: # Log state transition if state != old_state: - self.freqtrade.rpc.send_msg({ - 'type': RPCMessageType.STATUS_NOTIFICATION, - 'status': f'{state.name.lower()}' - }) + self.freqtrade.notify_status(f'{state.name.lower()}') + logger.info('Changing state to: %s', state.name) if state == State.RUNNING: self.freqtrade.startup() @@ -136,10 +133,9 @@ class Worker: except OperationalException: tb = traceback.format_exc() hint = 'Issue `/start` if you think it is safe to restart.' - self.freqtrade.rpc.send_msg({ - 'type': RPCMessageType.STATUS_NOTIFICATION, - 'status': f'OperationalException:\n```\n{tb}```{hint}' - }) + + self.freqtrade.notify_status(f'OperationalException:\n```\n{tb}```{hint}') + logger.exception('OperationalException. Stopping trader ...') self.freqtrade.state = State.STOPPED @@ -159,10 +155,7 @@ class Worker: # Load and validate config and create new instance of the bot self._init(True) - self.freqtrade.rpc.send_msg({ - 'type': RPCMessageType.STATUS_NOTIFICATION, - 'status': 'config reloaded' - }) + self.freqtrade.notify_status('config reloaded') # Tell systemd that we completed reconfiguration if self._sd_notify: @@ -176,8 +169,5 @@ class Worker: self._sd_notify.notify("STOPPING=1") if self.freqtrade: - self.freqtrade.rpc.send_msg({ - 'type': RPCMessageType.STATUS_NOTIFICATION, - 'status': 'process died' - }) + self.freqtrade.notify_status('process died') self.freqtrade.cleanup() From 161c06fd4ef5afdd3deec036f1d1be94bc4621ab Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2020 07:42:52 +0000 Subject: [PATCH 1563/3421] Bump plotly from 4.4.1 to 4.5.0 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.4.1 to 4.5.0. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.4.1...v4.5.0) Signed-off-by: dependabot-preview[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index 415d4b888..26467d90b 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.4.1 +plotly==4.5.0 From 184a6005a6db67918a62b84896813302451880ed Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2020 07:43:11 +0000 Subject: [PATCH 1564/3421] Bump urllib3 from 1.25.7 to 1.25.8 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.7 to 1.25.8. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.25.7...1.25.8) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index daf4984c0..e358c8445 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -6,7 +6,7 @@ python-telegram-bot==12.3.0 arrow==0.15.5 cachetools==4.0.0 requests==2.22.0 -urllib3==1.25.7 +urllib3==1.25.8 wrapt==1.11.2 jsonschema==3.2.0 TA-Lib==0.4.17 From 66939bdcf636204c963aae75df9ccb5cc919fdb5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2020 07:43:41 +0000 Subject: [PATCH 1565/3421] Bump ccxt from 1.21.76 to 1.21.91 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.21.76 to 1.21.91. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.21.76...1.21.91) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index daf4984c0..c826541a6 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.21.76 +ccxt==1.21.91 SQLAlchemy==1.3.12 python-telegram-bot==12.3.0 arrow==0.15.5 From a3b0f752896f6f88efdf33099787f56cde32a26a Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2020 07:44:27 +0000 Subject: [PATCH 1566/3421] Bump pytest from 5.3.3 to 5.3.4 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.3.3 to 5.3.4. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.3.3...5.3.4) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index e602bf184..6330d93e5 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.0.0 mypy==0.761 -pytest==5.3.3 +pytest==5.3.4 pytest-asyncio==0.10.0 pytest-cov==2.8.1 pytest-mock==2.0.0 From c9ee678a52fcdc0cf2a08ea88baa4263d8b40576 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2020 08:36:41 +0000 Subject: [PATCH 1567/3421] Bump sqlalchemy from 1.3.12 to 1.3.13 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.12 to 1.3.13. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index c826541a6..14fee6e80 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.21.91 -SQLAlchemy==1.3.12 +SQLAlchemy==1.3.13 python-telegram-bot==12.3.0 arrow==0.15.5 cachetools==4.0.0 From 4c0e586354f3f4cd87138c51ee695136d45f8caf Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 27 Jan 2020 22:39:04 +0300 Subject: [PATCH 1568/3421] Advise to use https method for git clone i.o ssh --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 267d91c8d..cbe000da4 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -42,7 +42,7 @@ The easiest way to install and run Freqtrade is to clone the bot GitHub reposito This can be achieved with the following commands: ```bash -git clone git@github.com:freqtrade/freqtrade.git +git clone https://github.com/freqtrade/freqtrade.git cd freqtrade git checkout master # Optional, see (1) ./setup.sh --install From 328a9ffafdad4953c71fb20f4bd8b18251f3f737 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 25 Jan 2020 20:53:02 +0100 Subject: [PATCH 1569/3421] fixed typo in false statement --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index f1584c731..323d4d14c 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -429,7 +429,7 @@ class FreqtradeBot: logger.info('bids to ask delta DOES satisfy condition.') return True else: - logger.info('bids to ask delta DOES NOT satisfy condition.') + logger.info(f"bids to ask delta for {pair} does not satisfy condition.") return False def execute_buy(self, pair: str, stake_amount: float, price: Optional[float] = None) -> bool: From a0b92fe0b12f26514e3b623eb91f44022604e67f Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Tue, 28 Jan 2020 17:09:44 +0100 Subject: [PATCH 1570/3421] removed typo --- freqtrade/freqtradebot.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 323d4d14c..9df2acaf0 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -423,8 +423,12 @@ class FreqtradeBot: order_book_bids = order_book_data_frame['b_size'].sum() order_book_asks = order_book_data_frame['a_size'].sum() bids_ask_delta = order_book_bids / order_book_asks - logger.info('bids: %s, asks: %s, delta: %s, askprice: %s, bidprice: %s, immediate askquantity: %s, immediate bidquantity: %s', - order_book_bids, order_book_asks, bids_ask_delta, order_book['asks'][0][0], order_book['bids'][0][0], order_book['asks'][0][1], order_book['bids'][0][1]) + logger.info( + f"bids: {order_book_bids}, asks: {order_book_asks}, delta: {bids_ask_delta}, " + f"askprice: {order_book['asks'][0][0]}, bidprice: {order_book['bids'][0][0]}, " + f"immediate ask quantity: {order_book['asks'][0][1]}, " + f"immediate bid quantity: {order_book['bids'][0][1]}", + ) if bids_ask_delta >= conf_bids_to_ask_delta: logger.info('bids to ask delta DOES satisfy condition.') return True From b384ca8fd28bfc41226718451f9dfcc58a0ce70b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 28 Jan 2020 20:30:03 +0100 Subject: [PATCH 1571/3421] Create new-config command --- freqtrade/commands/__init__.py | 1 + freqtrade/commands/arguments.py | 13 +++++++++++-- freqtrade/commands/deploy_commands.py | 8 ++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index 990c1107a..81467cf61 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -9,6 +9,7 @@ Note: Be careful with file-scoped imports in these subfiles. from freqtrade.commands.arguments import Arguments from freqtrade.commands.data_commands import start_download_data from freqtrade.commands.deploy_commands import (start_create_userdir, + start_new_config, start_new_hyperopt, start_new_strategy) from freqtrade.commands.hyperopt_commands import (start_hyperopt_list, diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 724814554..504c6b0b5 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -43,6 +43,8 @@ ARGS_TEST_PAIRLIST = ["config", "quote_currencies", "print_one_column", "list_pa ARGS_CREATE_USERDIR = ["user_data_dir", "reset"] +ARGS_BUILD_CONFIG = ["config"] + ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "template"] ARGS_BUILD_HYPEROPT = ["user_data_dir", "hyperopt", "template"] @@ -133,8 +135,9 @@ class Arguments: from freqtrade.commands import (start_create_userdir, start_download_data, start_hyperopt_list, start_hyperopt_show, start_list_exchanges, start_list_markets, - start_list_strategies, start_new_hyperopt, - start_new_strategy, start_list_timeframes, + start_list_strategies, start_list_timeframes, + start_new_config, + start_new_hyperopt, start_new_strategy, start_plot_dataframe, start_plot_profit, start_backtesting, start_hyperopt, start_edge, start_test_pairlist, start_trading) @@ -177,6 +180,12 @@ class Arguments: create_userdir_cmd.set_defaults(func=start_create_userdir) self._build_args(optionlist=ARGS_CREATE_USERDIR, parser=create_userdir_cmd) + # add new-config subcommand + build_config_cmd = subparsers.add_parser('new-config', + help="Create new config") + build_config_cmd.set_defaults(func=start_new_config) + self._build_args(optionlist=ARGS_BUILD_CONFIG, parser=build_config_cmd) + # add new-strategy subcommand build_strategy_cmd = subparsers.add_parser('new-strategy', help="Create new strategy") diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index 99ae63244..34755932c 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -110,3 +110,11 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: deploy_new_hyperopt(args['hyperopt'], new_path, args['template']) else: raise OperationalException("`new-hyperopt` requires --hyperopt to be set.") + + +def start_new_config(args: Dict[str, Any]) -> None: + """ + Create a new strategy from a template + Asking the user questions to fill out the templateaccordingly. + """ + pass From 9f291282056fde93c3cab74470764a9cdf80f89b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Jan 2020 07:01:17 +0100 Subject: [PATCH 1572/3421] Fix small json formatting issue --- config.json.example | 2 +- config_binance.json.example | 2 +- config_full.json.example | 2 +- config_kraken.json.example | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config.json.example b/config.json.example index 8b85e71eb..a03ab6c2a 100644 --- a/config.json.example +++ b/config.json.example @@ -4,7 +4,7 @@ "stake_amount": 0.05, "tradable_balance_ratio": 0.99, "fiat_display_currency": "USD", - "ticker_interval" : "5m", + "ticker_interval": "5m", "dry_run": false, "trailing_stop": false, "unfilledtimeout": { diff --git a/config_binance.json.example b/config_binance.json.example index 0521a3a35..e2c9879b0 100644 --- a/config_binance.json.example +++ b/config_binance.json.example @@ -4,7 +4,7 @@ "stake_amount": 0.05, "tradable_balance_ratio": 0.99, "fiat_display_currency": "USD", - "ticker_interval" : "5m", + "ticker_interval": "5m", "dry_run": true, "trailing_stop": false, "unfilledtimeout": { diff --git a/config_full.json.example b/config_full.json.example index 82d8bd04a..f543604e7 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -4,7 +4,7 @@ "stake_amount": 0.05, "tradable_balance_ratio": 0.99, "fiat_display_currency": "USD", - "amount_reserve_percent" : 0.05, + "amount_reserve_percent": 0.05, "amend_last_stake_amount": false, "last_stake_amount_min_ratio": 0.5, "dry_run": false, diff --git a/config_kraken.json.example b/config_kraken.json.example index a527b569d..4f74d0b7d 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -4,7 +4,7 @@ "stake_amount": 10, "tradable_balance_ratio": 0.99, "fiat_display_currency": "EUR", - "ticker_interval" : "5m", + "ticker_interval": "5m", "dry_run": true, "trailing_stop": false, "unfilledtimeout": { From 122c9163566acfbbf2d2a18e86dfcfac3a772dab Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Jan 2020 07:01:32 +0100 Subject: [PATCH 1573/3421] Add first version of config_deploy --- freqtrade/commands/deploy_commands.py | 28 ++++++++- freqtrade/templates/base_config.json.j2 | 82 +++++++++++++++++++++++++ 2 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 freqtrade/templates/base_config.json.j2 diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index 34755932c..4e114a6d8 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -112,9 +112,35 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: raise OperationalException("`new-hyperopt` requires --hyperopt to be set.") +def deploy_new_config(config_path: Path, selections: Dict[str, Any]) -> None: + """ + Applies selections to the template and writes the result to config_path + :param config_path: Path object for new config file. Should not exist yet + :param selecions: Dict containing selections taken by the user. + """ + config_text = render_template(templatefile='base_config.json.j2', + arguments=selections) + + config_path.write_text(config_text) + + def start_new_config(args: Dict[str, Any]) -> None: """ Create a new strategy from a template Asking the user questions to fill out the templateaccordingly. """ - pass + sample_selections = { + 'stake_currency': 'USDT', + 'stake_amount': 100, + 'fiat_display_currency': 'EUR', + 'ticker_interval': '15m', + 'dry_run': True, + 'exchange': 'binance', + 'exchange_key': 'sampleKey', + 'exchange_secret': 'Samplesecret', + 'telegram': True, + 'telegram_token': 'asdf1244', + 'telegram_chat_id': '1144444', + } + config_path = Path(args['config'][0]) + deploy_new_config(config_path, sample_selections) diff --git a/freqtrade/templates/base_config.json.j2 b/freqtrade/templates/base_config.json.j2 new file mode 100644 index 000000000..ad8a762ec --- /dev/null +++ b/freqtrade/templates/base_config.json.j2 @@ -0,0 +1,82 @@ +{ + "max_open_trades": 3, + "stake_currency": "{{ stake_currency }}", + "stake_amount": {{ stake_amount }}, + "tradable_balance_ratio": 0.99, + "fiat_display_currency": "{{ fiat_display_currency }}", + "ticker_interval": "{{ ticker_interval }}", + "dry_run": {{ dry_run | lower }}, + "unfilledtimeout": { + "buy": 10, + "sell": 30 + }, + "bid_strategy": { + "ask_last_balance": 0.0, + "use_order_book": false, + "order_book_top": 1, + "check_depth_of_market": { + "enabled": false, + "bids_to_ask_delta": 1 + } + }, + "ask_strategy":{ + "use_order_book": false, + "order_book_min": 1, + "order_book_max": 9, + "use_sell_signal": true, + "sell_profit_only": false, + "ignore_roi_if_buy_signal": false + }, + "exchange": { + "name": "bittrex", + "key": "your_exchange_key", + "secret": "your_exchange_secret", + "ccxt_config": {"enableRateLimit": true}, + "ccxt_async_config": { + "enableRateLimit": true, + "rateLimit": 500 + }, + "pair_whitelist": [ + "ETH/BTC", + "LTC/BTC", + "ETC/BTC", + "DASH/BTC", + "ZEC/BTC", + "XLM/BTC", + "NXT/BTC", + "TRX/BTC", + "ADA/BTC", + "XMR/BTC" + ], + "pair_blacklist": [ + "DOGE/BTC" + ] + }, + "pairlists": [ + {"method": "StaticPairList"} + ], + "edge": { + "enabled": false, + "process_throttle_secs": 3600, + "calculate_since_number_of_days": 7, + "allowed_risk": 0.01, + "stoploss_range_min": -0.01, + "stoploss_range_max": -0.1, + "stoploss_range_step": -0.01, + "minimum_winrate": 0.60, + "minimum_expectancy": 0.20, + "min_trade_number": 10, + "max_trade_duration_minute": 1440, + "remove_pumps": false + }, + "telegram": { + "enabled": {{ telegram | lower }}, + "token": "{{ telegram_token }}", + "chat_id": "{{ telegram_chat_id }}" + }, + "initial_state": "running", + "forcebuy_enable": false, + "internals": { + "process_throttle_secs": 5 + } +} From c80d8f432acc07665353947acae84a4d09cd3ced Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Jan 2020 07:13:38 +0100 Subject: [PATCH 1574/3421] Add exchange templates --- freqtrade/commands/deploy_commands.py | 19 +++++++++-- freqtrade/misc.py | 1 - freqtrade/templates/base_config.json.j2 | 24 +------------- .../subtemplates/exchange_binance.j2 | 28 ++++++++++++++++ .../subtemplates/exchange_generic.j2 | 13 ++++++++ .../templates/subtemplates/exchange_kraken.j2 | 33 +++++++++++++++++++ 6 files changed, 92 insertions(+), 26 deletions(-) create mode 100644 freqtrade/templates/subtemplates/exchange_binance.j2 create mode 100644 freqtrade/templates/subtemplates/exchange_generic.j2 create mode 100644 freqtrade/templates/subtemplates/exchange_kraken.j2 diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index 4e114a6d8..065703faa 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -118,9 +118,22 @@ def deploy_new_config(config_path: Path, selections: Dict[str, Any]) -> None: :param config_path: Path object for new config file. Should not exist yet :param selecions: Dict containing selections taken by the user. """ + from jinja2.exceptions import TemplateNotFound + try: + selections['exchange'] = render_template( + templatefile=f"subtemplates/exchange_{selections['exchange_name']}.j2", + arguments=selections + ) + except TemplateNotFound: + selections['exchange'] = render_template( + templatefile=f"subtemplates/exchange_generic.j2", + arguments=selections + ) + config_text = render_template(templatefile='base_config.json.j2', arguments=selections) + logger.info(f"Writing config to `{config_path}`.") config_path.write_text(config_text) @@ -135,12 +148,14 @@ def start_new_config(args: Dict[str, Any]) -> None: 'fiat_display_currency': 'EUR', 'ticker_interval': '15m', 'dry_run': True, - 'exchange': 'binance', + 'exchange_name': 'binance', 'exchange_key': 'sampleKey', 'exchange_secret': 'Samplesecret', - 'telegram': True, + 'telegram': False, 'telegram_token': 'asdf1244', 'telegram_chat_id': '1144444', } config_path = Path(args['config'][0]) deploy_new_config(config_path, sample_selections) + + diff --git a/freqtrade/misc.py b/freqtrade/misc.py index bcba78cf0..40e1fdf17 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -138,5 +138,4 @@ def render_template(templatefile: str, arguments: dict = {}): autoescape=select_autoescape(['html', 'xml']) ) template = env.get_template(templatefile) - return template.render(**arguments) diff --git a/freqtrade/templates/base_config.json.j2 b/freqtrade/templates/base_config.json.j2 index ad8a762ec..f2f919e1f 100644 --- a/freqtrade/templates/base_config.json.j2 +++ b/freqtrade/templates/base_config.json.j2 @@ -28,29 +28,7 @@ "ignore_roi_if_buy_signal": false }, "exchange": { - "name": "bittrex", - "key": "your_exchange_key", - "secret": "your_exchange_secret", - "ccxt_config": {"enableRateLimit": true}, - "ccxt_async_config": { - "enableRateLimit": true, - "rateLimit": 500 - }, - "pair_whitelist": [ - "ETH/BTC", - "LTC/BTC", - "ETC/BTC", - "DASH/BTC", - "ZEC/BTC", - "XLM/BTC", - "NXT/BTC", - "TRX/BTC", - "ADA/BTC", - "XMR/BTC" - ], - "pair_blacklist": [ - "DOGE/BTC" - ] + {{ exchange | indent(8) }} }, "pairlists": [ {"method": "StaticPairList"} diff --git a/freqtrade/templates/subtemplates/exchange_binance.j2 b/freqtrade/templates/subtemplates/exchange_binance.j2 new file mode 100644 index 000000000..082af45c4 --- /dev/null +++ b/freqtrade/templates/subtemplates/exchange_binance.j2 @@ -0,0 +1,28 @@ +"name": "{{ exchange_name | lower }}", +"key": "{{ exchange_key }}", +"secret": "{{ exchange_secret }}", +"ccxt_config": {"enableRateLimit": true}, +"ccxt_async_config": { + "enableRateLimit": true, + "rateLimit": 200 +}, +"pair_whitelist": [ + "ALGO/BTC", + "ATOM/BTC", + "BAT/BTC", + "BCH/BTC", + "BRD/BTC", + "EOS/BTC", + "ETH/BTC", + "IOTA/BTC", + "LINK/BTC", + "LTC/BTC", + "NEO/BTC", + "NXS/BTC", + "XMR/BTC", + "XRP/BTC", + "XTZ/BTC" +], +"pair_blacklist": [ + "BNB/BTC" +] diff --git a/freqtrade/templates/subtemplates/exchange_generic.j2 b/freqtrade/templates/subtemplates/exchange_generic.j2 new file mode 100644 index 000000000..5d5bee2b2 --- /dev/null +++ b/freqtrade/templates/subtemplates/exchange_generic.j2 @@ -0,0 +1,13 @@ +"name": "{{ exchange_name | lower }}", +"key": "{{ exchange_key }}", +"secret": "{{ exchange_secret }}", +"ccxt_config": {"enableRateLimit": true}, +"ccxt_async_config": { + "enableRateLimit": true, +}, +"pair_whitelist": [ + +], +"pair_blacklist": [ + +] diff --git a/freqtrade/templates/subtemplates/exchange_kraken.j2 b/freqtrade/templates/subtemplates/exchange_kraken.j2 new file mode 100644 index 000000000..690828887 --- /dev/null +++ b/freqtrade/templates/subtemplates/exchange_kraken.j2 @@ -0,0 +1,33 @@ +"name": "kraken", +"key": "{{ exchange_key }}", +"secret": "{{ exchange_secret }}", +"ccxt_config": {"enableRateLimit": true}, +"ccxt_async_config": { + "enableRateLimit": true, + "rateLimit": 1000 +}, +"pair_whitelist": [ + "ADA/EUR", + "ATOM/EUR", + "BAT/EUR", + "BCH/EUR", + "BTC/EUR", + "DAI/EUR", + "DASH/EUR", + "EOS/EUR", + "ETC/EUR", + "ETH/EUR", + "LINK/EUR", + "LTC/EUR", + "QTUM/EUR", + "REP/EUR", + "WAVES/EUR", + "XLM/EUR", + "XMR/EUR", + "XRP/EUR", + "XTZ/EUR", + "ZEC/EUR" +], +"pair_blacklist": [ + +] From 68771a78617b6ff4af6baca08df1f54d76ba9338 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 29 Jan 2020 17:08:36 +0300 Subject: [PATCH 1575/3421] Remove state attr from Worker --- freqtrade/worker.py | 8 -------- tests/test_freqtradebot.py | 6 +++--- tests/test_worker.py | 6 +++--- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 972ff0d61..6da04b4a2 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -56,14 +56,6 @@ class Worker: self._sd_notify = sdnotify.SystemdNotifier() if \ self._config.get('internals', {}).get('sd_notify', False) else None - @property - def state(self) -> State: - return self.freqtrade.state - - @state.setter - def state(self, value: State) -> None: - self.freqtrade.state = value - def run(self) -> None: state = None while True: diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index e0f2ecd3a..128d9c9ee 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -797,10 +797,10 @@ def test_process_operational_exception(default_conf, ticker, mocker) -> None: worker = Worker(args=None, config=default_conf) patch_get_signal(worker.freqtrade) - assert worker.state == State.RUNNING + assert worker.freqtrade.state == State.RUNNING worker._process() - assert worker.state == State.STOPPED + assert worker.freqtrade.state == State.STOPPED assert 'OperationalException' in msg_mock.call_args_list[-1][0][0]['status'] @@ -3631,7 +3631,7 @@ def test_startup_state(default_conf, mocker): } mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) worker = get_patched_worker(mocker, default_conf) - assert worker.state is State.RUNNING + assert worker.freqtrade.state is State.RUNNING def test_startup_trade_reinit(default_conf, edge_conf, mocker): diff --git a/tests/test_worker.py b/tests/test_worker.py index 72e215210..2fb42d47e 100644 --- a/tests/test_worker.py +++ b/tests/test_worker.py @@ -11,11 +11,11 @@ from tests.conftest import get_patched_worker, log_has def test_worker_state(mocker, default_conf, markets) -> None: mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) worker = get_patched_worker(mocker, default_conf) - assert worker.state is State.RUNNING + assert worker.freqtrade.state is State.RUNNING default_conf.pop('initial_state') worker = Worker(args=None, config=default_conf) - assert worker.state is State.STOPPED + assert worker.freqtrade.state is State.STOPPED def test_worker_running(mocker, default_conf, caplog) -> None: @@ -41,7 +41,7 @@ def test_worker_stopped(mocker, default_conf, caplog) -> None: mock_sleep = mocker.patch('time.sleep', return_value=None) worker = get_patched_worker(mocker, default_conf) - worker.state = State.STOPPED + worker.freqtrade.state = State.STOPPED state = worker._worker(old_state=State.RUNNING) assert state is State.STOPPED assert log_has('Changing state to: STOPPED', caplog) From dd83cb1b95fb2a0f3790d7c83a377ed72b659fd3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Jan 2020 20:27:38 +0100 Subject: [PATCH 1576/3421] Extract selection generation to a seperate method --- freqtrade/commands/deploy_commands.py | 38 ++++++++++++++++--------- freqtrade/templates/base_config.json.j2 | 2 +- tests/commands/test_commands.py | 21 ++++++++++++-- 3 files changed, 44 insertions(+), 17 deletions(-) diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index 065703faa..87aea7492 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -112,6 +112,28 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: raise OperationalException("`new-hyperopt` requires --hyperopt to be set.") +def ask_user_config() -> Dict[str, Any]: + """ + Ask user a few questions to build the configuration. + :returns: Dict with keys to put into template + """ + sample_selections = { + 'max_open_trades': 3, + 'stake_currency': 'USDT', + 'stake_amount': 100, + 'fiat_display_currency': 'EUR', + 'ticker_interval': '15m', + 'dry_run': True, + 'exchange_name': 'binance', + 'exchange_key': 'sampleKey', + 'exchange_secret': 'Samplesecret', + 'telegram': False, + 'telegram_token': 'asdf1244', + 'telegram_chat_id': '1144444', + } + return sample_selections + + def deploy_new_config(config_path: Path, selections: Dict[str, Any]) -> None: """ Applies selections to the template and writes the result to config_path @@ -142,20 +164,8 @@ def start_new_config(args: Dict[str, Any]) -> None: Create a new strategy from a template Asking the user questions to fill out the templateaccordingly. """ - sample_selections = { - 'stake_currency': 'USDT', - 'stake_amount': 100, - 'fiat_display_currency': 'EUR', - 'ticker_interval': '15m', - 'dry_run': True, - 'exchange_name': 'binance', - 'exchange_key': 'sampleKey', - 'exchange_secret': 'Samplesecret', - 'telegram': False, - 'telegram_token': 'asdf1244', - 'telegram_chat_id': '1144444', - } + selections = ask_user_config() config_path = Path(args['config'][0]) - deploy_new_config(config_path, sample_selections) + deploy_new_config(config_path, selections) diff --git a/freqtrade/templates/base_config.json.j2 b/freqtrade/templates/base_config.json.j2 index f2f919e1f..1370bfa80 100644 --- a/freqtrade/templates/base_config.json.j2 +++ b/freqtrade/templates/base_config.json.j2 @@ -1,5 +1,5 @@ { - "max_open_trades": 3, + "max_open_trades": {{ max_open_trades }}, "stake_currency": "{{ stake_currency }}", "stake_amount": {{ stake_amount }}, "tradable_balance_ratio": 0.99, diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 65d7f6eaf..f8efdfd3c 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -8,8 +8,9 @@ from freqtrade.commands import (start_create_userdir, start_download_data, start_hyperopt_list, start_hyperopt_show, start_list_exchanges, start_list_markets, start_list_strategies, start_list_timeframes, - start_new_hyperopt, start_new_strategy, - start_test_pairlist, start_trading) + start_new_config, start_new_hyperopt, + start_new_strategy, start_test_pairlist, + start_trading) from freqtrade.configuration import setup_utils_configuration from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode @@ -537,6 +538,22 @@ def test_start_new_hyperopt_no_arg(mocker, caplog): start_new_hyperopt(get_args(args)) +def test_start_new_config(mocker, caplog): + wt_mock = mocker.patch.object(Path, "write_text", MagicMock()) + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + + args = [ + "new-config", + "--config", + "coolconfig.json" + ] + start_new_config(get_args(args)) + + assert wt_mock.call_count == 1 + assert "binance" in wt_mock.call_args_list[0][0][0] + assert log_has_re("Writing config to .*", caplog) + + def test_download_data_keyboardInterrupt(mocker, caplog, markets): dl_mock = mocker.patch('freqtrade.commands.data_commands.refresh_backtest_ohlcv_data', MagicMock(side_effect=KeyboardInterrupt)) From 49c9258a088e42db46656b24fc90d1227d604dc1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Jan 2020 20:32:27 +0100 Subject: [PATCH 1577/3421] enhance test --- tests/commands/test_commands.py | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index f8efdfd3c..19999f319 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -1,3 +1,4 @@ +import json import re from pathlib import Path from unittest.mock import MagicMock, PropertyMock @@ -538,10 +539,26 @@ def test_start_new_hyperopt_no_arg(mocker, caplog): start_new_hyperopt(get_args(args)) -def test_start_new_config(mocker, caplog): +@pytest.mark.parametrize('exchange', ['bittrex', 'binance', 'kraken', 'ftx']) +def test_start_new_config(mocker, caplog, exchange): wt_mock = mocker.patch.object(Path, "write_text", MagicMock()) mocker.patch.object(Path, "exists", MagicMock(return_value=False)) - + sample_selections = { + 'max_open_trades': 3, + 'stake_currency': 'USDT', + 'stake_amount': 100, + 'fiat_display_currency': 'EUR', + 'ticker_interval': '15m', + 'dry_run': True, + 'exchange_name': exchange, + 'exchange_key': 'sampleKey', + 'exchange_secret': 'Samplesecret', + 'telegram': False, + 'telegram_token': 'asdf1244', + 'telegram_chat_id': '1144444', + } + mocker.patch('freqtrade.commands.deploy_commands.ask_user_config', + return_value=sample_selections) args = [ "new-config", "--config", @@ -549,9 +566,11 @@ def test_start_new_config(mocker, caplog): ] start_new_config(get_args(args)) - assert wt_mock.call_count == 1 - assert "binance" in wt_mock.call_args_list[0][0][0] assert log_has_re("Writing config to .*", caplog) + assert wt_mock.call_count == 1 + result = json.loads(wt_mock.call_args_list[0][0][0]) + assert result['exchange']['name'] == exchange + assert result['ticker_interval'] == '15m' def test_download_data_keyboardInterrupt(mocker, caplog, markets): From e250c56829e74445e6177d4b61c17e57a0af21e0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Jan 2020 21:21:38 +0100 Subject: [PATCH 1578/3421] Add Questionaire workflow --- freqtrade/commands/deploy_commands.py | 98 ++++++++++++++++++++++++++- requirements-common.txt | 3 + setup.py | 2 + 3 files changed, 101 insertions(+), 2 deletions(-) diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index 87aea7492..670f272ce 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -3,11 +3,14 @@ import sys from pathlib import Path from typing import Any, Dict +from questionary import Separator, prompt + from freqtrade.configuration import setup_utils_configuration from freqtrade.configuration.directory_operations import (copy_sample_files, create_userdata_dir) from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGY from freqtrade.exceptions import OperationalException +from freqtrade.exchange import available_exchanges from freqtrade.misc import render_template from freqtrade.state import RunMode @@ -117,6 +120,99 @@ def ask_user_config() -> Dict[str, Any]: Ask user a few questions to build the configuration. :returns: Dict with keys to put into template """ + questions = [ + { + "type": "confirm", + "name": "dry_run", + "message": "Do you want to enable Dry-run (simulated trades)?", + "default": True, + }, + { + "type": "text", + "name": "stake_currency", + "message": "Please insert your stake currency:", + "default": 'BTC', + }, + { + "type": "text", + "name": "stake_amount", + "message": "Please insert your stake amount:", + "default": "0.01", + }, + { + "type": "text", + "name": "max_open_trades", + "message": "Please insert max_open_trades:", + "default": "3", + }, + { + "type": "text", + "name": "ticker_interval", + "message": "Please insert your ticker interval:", + "default": "5m", + }, + { + "type": "text", + "name": "fiat_display_currency", + "message": "Please insert your display Currency (for reporting):", + "default": 'USD', + }, + { + "type": "select", + "name": "exchange_name", + "message": "Select exchange", + "choices": [ + "bittrex", + "binance", + "binanceje", + "binanceus", + "kraken", + Separator(), + "other", + ], + }, + { + "type": "autocomplete", + "name": "exchange_name", + "message": "Type your exchange name (Must be supported by ccxt)", + "choices": available_exchanges(), + "when": lambda x: x["exchange_name"] == 'other' + }, + { + "type": "password", + "name": "exchange_key", + "message": "Insert Exchange Key", + "when": lambda x: not x['dry_run'] + }, + { + "type": "password", + "name": "exchange_secret", + "message": "Insert Exchange Secret", + "when": lambda x: not x['dry_run'] + }, + { + "type": "confirm", + "name": "telegram", + "message": "Do you want to enable Telegram?", + "default": False, + }, + { + "type": "password", + "name": "telegram_token", + "message": "Insert Telegram token", + "when": lambda x: x['telegram'] + }, + { + "type": "text", + "name": "telegram_chat_id", + "message": "Insert Telegram chat id", + "when": lambda x: x['telegram'] + }, + ] + answers = prompt(questions) + + print(answers) + sample_selections = { 'max_open_trades': 3, 'stake_currency': 'USDT', @@ -167,5 +263,3 @@ def start_new_config(args: Dict[str, Any]) -> None: selections = ask_user_config() config_path = Path(args['config'][0]) deploy_new_config(config_path, selections) - - diff --git a/requirements-common.txt b/requirements-common.txt index e4fe54721..80f18892b 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -28,3 +28,6 @@ flask==1.1.1 # Support for colorized terminal output colorama==0.4.3 +# Building config files interactively +questionary==1.5.1 +prompt-toolkit==3.0.3 diff --git a/setup.py b/setup.py index 7d8d7b68d..63a595f32 100644 --- a/setup.py +++ b/setup.py @@ -79,6 +79,8 @@ setup(name='freqtrade', 'sdnotify', 'colorama', 'jinja2', + 'questionary', + 'prompt-toolkit', # from requirements.txt 'numpy', 'pandas', From 940bfbee96eef00e56d7f5097f1c59099b34bb37 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Jan 2020 21:28:01 +0100 Subject: [PATCH 1579/3421] Move start_config out of build_commands file --- freqtrade/commands/__init__.py | 2 +- freqtrade/commands/build_config_commands.py | 160 ++++++++++++++++++ freqtrade/commands/deploy_commands.py | 153 ----------------- .../subtemplates/exchange_generic.j2 | 2 +- tests/commands/test_commands.py | 2 +- 5 files changed, 163 insertions(+), 156 deletions(-) create mode 100644 freqtrade/commands/build_config_commands.py diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index 81467cf61..6ea325e63 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -7,9 +7,9 @@ Note: Be careful with file-scoped imports in these subfiles. as they are parsed on startup, nothing containing optional modules should be loaded. """ from freqtrade.commands.arguments import Arguments +from freqtrade.commands.build_config_commands import start_new_config from freqtrade.commands.data_commands import start_download_data from freqtrade.commands.deploy_commands import (start_create_userdir, - start_new_config, start_new_hyperopt, start_new_strategy) from freqtrade.commands.hyperopt_commands import (start_hyperopt_list, diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py new file mode 100644 index 000000000..393416f53 --- /dev/null +++ b/freqtrade/commands/build_config_commands.py @@ -0,0 +1,160 @@ +import logging +from pathlib import Path +from typing import Any, Dict + +from questionary import Separator, prompt + +from freqtrade.exchange import available_exchanges +from freqtrade.misc import render_template + +logger = logging.getLogger(__name__) + + +def ask_user_config() -> Dict[str, Any]: + """ + Ask user a few questions to build the configuration. + :returns: Dict with keys to put into template + """ + questions = [ + { + "type": "confirm", + "name": "dry_run", + "message": "Do you want to enable Dry-run (simulated trades)?", + "default": True, + }, + { + "type": "text", + "name": "stake_currency", + "message": "Please insert your stake currency:", + "default": 'BTC', + }, + { + "type": "text", + "name": "stake_amount", + "message": "Please insert your stake amount:", + "default": "0.01", + }, + { + "type": "text", + "name": "max_open_trades", + "message": "Please insert max_open_trades:", + "default": "3", + }, + { + "type": "text", + "name": "ticker_interval", + "message": "Please insert your ticker interval:", + "default": "5m", + }, + { + "type": "text", + "name": "fiat_display_currency", + "message": "Please insert your display Currency (for reporting):", + "default": 'USD', + }, + { + "type": "select", + "name": "exchange_name", + "message": "Select exchange", + "choices": [ + "bittrex", + "binance", + "binanceje", + "binanceus", + "kraken", + Separator(), + "other", + ], + }, + { + "type": "autocomplete", + "name": "exchange_name", + "message": "Type your exchange name (Must be supported by ccxt)", + "choices": available_exchanges(), + "when": lambda x: x["exchange_name"] == 'other' + }, + { + "type": "password", + "name": "exchange_key", + "message": "Insert Exchange Key", + "when": lambda x: not x['dry_run'] + }, + { + "type": "password", + "name": "exchange_secret", + "message": "Insert Exchange Secret", + "when": lambda x: not x['dry_run'] + }, + { + "type": "confirm", + "name": "telegram", + "message": "Do you want to enable Telegram?", + "default": False, + }, + { + "type": "password", + "name": "telegram_token", + "message": "Insert Telegram token", + "when": lambda x: x['telegram'] + }, + { + "type": "text", + "name": "telegram_chat_id", + "message": "Insert Telegram chat id", + "when": lambda x: x['telegram'] + }, + ] + answers = prompt(questions) + + print(answers) + + sample_selections = { + 'max_open_trades': 3, + 'stake_currency': 'USDT', + 'stake_amount': 100, + 'fiat_display_currency': 'EUR', + 'ticker_interval': '15m', + 'dry_run': True, + 'exchange_name': 'binance', + 'exchange_key': 'sampleKey', + 'exchange_secret': 'Samplesecret', + 'telegram': False, + 'telegram_token': 'asdf1244', + 'telegram_chat_id': '1144444', + } + return sample_selections + + +def deploy_new_config(config_path: Path, selections: Dict[str, Any]) -> None: + """ + Applies selections to the template and writes the result to config_path + :param config_path: Path object for new config file. Should not exist yet + :param selecions: Dict containing selections taken by the user. + """ + from jinja2.exceptions import TemplateNotFound + try: + selections['exchange'] = render_template( + templatefile=f"subtemplates/exchange_{selections['exchange_name']}.j2", + arguments=selections + ) + except TemplateNotFound: + selections['exchange'] = render_template( + templatefile=f"subtemplates/exchange_generic.j2", + arguments=selections + ) + + config_text = render_template(templatefile='base_config.json.j2', + arguments=selections) + + logger.info(f"Writing config to `{config_path}`.") + config_path.write_text(config_text) + + +def start_new_config(args: Dict[str, Any]) -> None: + """ + Create a new strategy from a template + Asking the user questions to fill out the templateaccordingly. + """ + selections = ask_user_config() + config_path = Path(args['config'][0]) + deploy_new_config(config_path, selections) diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index 670f272ce..99ae63244 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -3,14 +3,11 @@ import sys from pathlib import Path from typing import Any, Dict -from questionary import Separator, prompt - from freqtrade.configuration import setup_utils_configuration from freqtrade.configuration.directory_operations import (copy_sample_files, create_userdata_dir) from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGY from freqtrade.exceptions import OperationalException -from freqtrade.exchange import available_exchanges from freqtrade.misc import render_template from freqtrade.state import RunMode @@ -113,153 +110,3 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: deploy_new_hyperopt(args['hyperopt'], new_path, args['template']) else: raise OperationalException("`new-hyperopt` requires --hyperopt to be set.") - - -def ask_user_config() -> Dict[str, Any]: - """ - Ask user a few questions to build the configuration. - :returns: Dict with keys to put into template - """ - questions = [ - { - "type": "confirm", - "name": "dry_run", - "message": "Do you want to enable Dry-run (simulated trades)?", - "default": True, - }, - { - "type": "text", - "name": "stake_currency", - "message": "Please insert your stake currency:", - "default": 'BTC', - }, - { - "type": "text", - "name": "stake_amount", - "message": "Please insert your stake amount:", - "default": "0.01", - }, - { - "type": "text", - "name": "max_open_trades", - "message": "Please insert max_open_trades:", - "default": "3", - }, - { - "type": "text", - "name": "ticker_interval", - "message": "Please insert your ticker interval:", - "default": "5m", - }, - { - "type": "text", - "name": "fiat_display_currency", - "message": "Please insert your display Currency (for reporting):", - "default": 'USD', - }, - { - "type": "select", - "name": "exchange_name", - "message": "Select exchange", - "choices": [ - "bittrex", - "binance", - "binanceje", - "binanceus", - "kraken", - Separator(), - "other", - ], - }, - { - "type": "autocomplete", - "name": "exchange_name", - "message": "Type your exchange name (Must be supported by ccxt)", - "choices": available_exchanges(), - "when": lambda x: x["exchange_name"] == 'other' - }, - { - "type": "password", - "name": "exchange_key", - "message": "Insert Exchange Key", - "when": lambda x: not x['dry_run'] - }, - { - "type": "password", - "name": "exchange_secret", - "message": "Insert Exchange Secret", - "when": lambda x: not x['dry_run'] - }, - { - "type": "confirm", - "name": "telegram", - "message": "Do you want to enable Telegram?", - "default": False, - }, - { - "type": "password", - "name": "telegram_token", - "message": "Insert Telegram token", - "when": lambda x: x['telegram'] - }, - { - "type": "text", - "name": "telegram_chat_id", - "message": "Insert Telegram chat id", - "when": lambda x: x['telegram'] - }, - ] - answers = prompt(questions) - - print(answers) - - sample_selections = { - 'max_open_trades': 3, - 'stake_currency': 'USDT', - 'stake_amount': 100, - 'fiat_display_currency': 'EUR', - 'ticker_interval': '15m', - 'dry_run': True, - 'exchange_name': 'binance', - 'exchange_key': 'sampleKey', - 'exchange_secret': 'Samplesecret', - 'telegram': False, - 'telegram_token': 'asdf1244', - 'telegram_chat_id': '1144444', - } - return sample_selections - - -def deploy_new_config(config_path: Path, selections: Dict[str, Any]) -> None: - """ - Applies selections to the template and writes the result to config_path - :param config_path: Path object for new config file. Should not exist yet - :param selecions: Dict containing selections taken by the user. - """ - from jinja2.exceptions import TemplateNotFound - try: - selections['exchange'] = render_template( - templatefile=f"subtemplates/exchange_{selections['exchange_name']}.j2", - arguments=selections - ) - except TemplateNotFound: - selections['exchange'] = render_template( - templatefile=f"subtemplates/exchange_generic.j2", - arguments=selections - ) - - config_text = render_template(templatefile='base_config.json.j2', - arguments=selections) - - logger.info(f"Writing config to `{config_path}`.") - config_path.write_text(config_text) - - -def start_new_config(args: Dict[str, Any]) -> None: - """ - Create a new strategy from a template - Asking the user questions to fill out the templateaccordingly. - """ - selections = ask_user_config() - config_path = Path(args['config'][0]) - deploy_new_config(config_path, selections) diff --git a/freqtrade/templates/subtemplates/exchange_generic.j2 b/freqtrade/templates/subtemplates/exchange_generic.j2 index 5d5bee2b2..33309de3b 100644 --- a/freqtrade/templates/subtemplates/exchange_generic.j2 +++ b/freqtrade/templates/subtemplates/exchange_generic.j2 @@ -3,7 +3,7 @@ "secret": "{{ exchange_secret }}", "ccxt_config": {"enableRateLimit": true}, "ccxt_async_config": { - "enableRateLimit": true, + "enableRateLimit": true }, "pair_whitelist": [ diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 19999f319..51b69449d 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -557,7 +557,7 @@ def test_start_new_config(mocker, caplog, exchange): 'telegram_token': 'asdf1244', 'telegram_chat_id': '1144444', } - mocker.patch('freqtrade.commands.deploy_commands.ask_user_config', + mocker.patch('freqtrade.commands.build_config_commands.ask_user_config', return_value=sample_selections) args = [ "new-config", From 2f0775fa1b6381b163ecd55ba1a0b684a9bbfea8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Jan 2020 21:30:29 +0100 Subject: [PATCH 1580/3421] Extract build-config tests to new file --- tests/commands/test_build_config.py | 42 +++++++++++++++++++++++++++++ tests/commands/test_commands.py | 40 ++------------------------- 2 files changed, 44 insertions(+), 38 deletions(-) create mode 100644 tests/commands/test_build_config.py diff --git a/tests/commands/test_build_config.py b/tests/commands/test_build_config.py new file mode 100644 index 000000000..4114ff489 --- /dev/null +++ b/tests/commands/test_build_config.py @@ -0,0 +1,42 @@ +import json +from pathlib import Path +from unittest.mock import MagicMock + +import pytest + +from freqtrade.commands import start_new_config +from tests.conftest import get_args, log_has_re + + +@pytest.mark.parametrize('exchange', ['bittrex', 'binance', 'kraken', 'ftx']) +def test_start_new_config(mocker, caplog, exchange): + wt_mock = mocker.patch.object(Path, "write_text", MagicMock()) + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + sample_selections = { + 'max_open_trades': 3, + 'stake_currency': 'USDT', + 'stake_amount': 100, + 'fiat_display_currency': 'EUR', + 'ticker_interval': '15m', + 'dry_run': True, + 'exchange_name': exchange, + 'exchange_key': 'sampleKey', + 'exchange_secret': 'Samplesecret', + 'telegram': False, + 'telegram_token': 'asdf1244', + 'telegram_chat_id': '1144444', + } + mocker.patch('freqtrade.commands.build_config_commands.ask_user_config', + return_value=sample_selections) + args = [ + "new-config", + "--config", + "coolconfig.json" + ] + start_new_config(get_args(args)) + + assert log_has_re("Writing config to .*", caplog) + assert wt_mock.call_count == 1 + result = json.loads(wt_mock.call_args_list[0][0][0]) + assert result['exchange']['name'] == exchange + assert result['ticker_interval'] == '15m' diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 51b69449d..65d7f6eaf 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -1,4 +1,3 @@ -import json import re from pathlib import Path from unittest.mock import MagicMock, PropertyMock @@ -9,9 +8,8 @@ from freqtrade.commands import (start_create_userdir, start_download_data, start_hyperopt_list, start_hyperopt_show, start_list_exchanges, start_list_markets, start_list_strategies, start_list_timeframes, - start_new_config, start_new_hyperopt, - start_new_strategy, start_test_pairlist, - start_trading) + start_new_hyperopt, start_new_strategy, + start_test_pairlist, start_trading) from freqtrade.configuration import setup_utils_configuration from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode @@ -539,40 +537,6 @@ def test_start_new_hyperopt_no_arg(mocker, caplog): start_new_hyperopt(get_args(args)) -@pytest.mark.parametrize('exchange', ['bittrex', 'binance', 'kraken', 'ftx']) -def test_start_new_config(mocker, caplog, exchange): - wt_mock = mocker.patch.object(Path, "write_text", MagicMock()) - mocker.patch.object(Path, "exists", MagicMock(return_value=False)) - sample_selections = { - 'max_open_trades': 3, - 'stake_currency': 'USDT', - 'stake_amount': 100, - 'fiat_display_currency': 'EUR', - 'ticker_interval': '15m', - 'dry_run': True, - 'exchange_name': exchange, - 'exchange_key': 'sampleKey', - 'exchange_secret': 'Samplesecret', - 'telegram': False, - 'telegram_token': 'asdf1244', - 'telegram_chat_id': '1144444', - } - mocker.patch('freqtrade.commands.build_config_commands.ask_user_config', - return_value=sample_selections) - args = [ - "new-config", - "--config", - "coolconfig.json" - ] - start_new_config(get_args(args)) - - assert log_has_re("Writing config to .*", caplog) - assert wt_mock.call_count == 1 - result = json.loads(wt_mock.call_args_list[0][0][0]) - assert result['exchange']['name'] == exchange - assert result['ticker_interval'] == '15m' - - def test_download_data_keyboardInterrupt(mocker, caplog, markets): dl_mock = mocker.patch('freqtrade.commands.data_commands.refresh_backtest_ohlcv_data', MagicMock(side_effect=KeyboardInterrupt)) From acbf13e648425987d19654123d7e9d2ae83e8da7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Jan 2020 21:47:05 +0100 Subject: [PATCH 1581/3421] Fail gracefully if user interrupted question session --- freqtrade/commands/build_config_commands.py | 24 ++++++--------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py index 393416f53..a6623c3cd 100644 --- a/freqtrade/commands/build_config_commands.py +++ b/freqtrade/commands/build_config_commands.py @@ -6,13 +6,14 @@ from questionary import Separator, prompt from freqtrade.exchange import available_exchanges from freqtrade.misc import render_template - +from freqtrade.exceptions import OperationalException logger = logging.getLogger(__name__) def ask_user_config() -> Dict[str, Any]: """ Ask user a few questions to build the configuration. + Interactive questions built using https://github.com/tmbo/questionary :returns: Dict with keys to put into template """ questions = [ @@ -106,23 +107,11 @@ def ask_user_config() -> Dict[str, Any]: ] answers = prompt(questions) - print(answers) + if not answers: + # Interrupted questionary sessions return an empty dict. + raise OperationalException("User interrupted interactive questions.") - sample_selections = { - 'max_open_trades': 3, - 'stake_currency': 'USDT', - 'stake_amount': 100, - 'fiat_display_currency': 'EUR', - 'ticker_interval': '15m', - 'dry_run': True, - 'exchange_name': 'binance', - 'exchange_key': 'sampleKey', - 'exchange_secret': 'Samplesecret', - 'telegram': False, - 'telegram_token': 'asdf1244', - 'telegram_chat_id': '1144444', - } - return sample_selections + return answers def deploy_new_config(config_path: Path, selections: Dict[str, Any]) -> None: @@ -156,5 +145,6 @@ def start_new_config(args: Dict[str, Any]) -> None: Asking the user questions to fill out the templateaccordingly. """ selections = ask_user_config() + config_path = Path(args['config'][0]) deploy_new_config(config_path, selections) From cebf99b5d890cd2979d5e68816b43d4c999bda7e Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Jan 2020 21:59:24 +0100 Subject: [PATCH 1582/3421] Implement validation --- freqtrade/commands/build_config_commands.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py index a6623c3cd..6abacd826 100644 --- a/freqtrade/commands/build_config_commands.py +++ b/freqtrade/commands/build_config_commands.py @@ -4,12 +4,29 @@ from typing import Any, Dict from questionary import Separator, prompt +from freqtrade.constants import UNLIMITED_STAKE_AMOUNT from freqtrade.exchange import available_exchanges from freqtrade.misc import render_template from freqtrade.exceptions import OperationalException logger = logging.getLogger(__name__) +def validate_is_int(val): + try: + _ = int(val) + return True + except Exception: + return False + + +def validate_is_float(val): + try: + _ = float(val) + return True + except Exception: + return False + + def ask_user_config() -> Dict[str, Any]: """ Ask user a few questions to build the configuration. @@ -34,12 +51,14 @@ def ask_user_config() -> Dict[str, Any]: "name": "stake_amount", "message": "Please insert your stake amount:", "default": "0.01", + "validate": lambda val: val == UNLIMITED_STAKE_AMOUNT or validate_is_float(val), }, { "type": "text", "name": "max_open_trades", - "message": "Please insert max_open_trades:", + "message": f"Please insert max_open_trades (Integer or '{UNLIMITED_STAKE_AMOUNT}'):", "default": "3", + "validate": lambda val: val == UNLIMITED_STAKE_AMOUNT or validate_is_int(val) }, { "type": "text", From 83baa6ee2e2c59a4b97ecf76d091cca2c7389154 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Jan 2020 22:47:15 +0100 Subject: [PATCH 1583/3421] Add test stub --- tests/commands/test_build_config.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/commands/test_build_config.py b/tests/commands/test_build_config.py index 4114ff489..46e79b357 100644 --- a/tests/commands/test_build_config.py +++ b/tests/commands/test_build_config.py @@ -4,7 +4,8 @@ from unittest.mock import MagicMock import pytest -from freqtrade.commands import start_new_config +from freqtrade.commands.build_config_commands import (ask_user_config, + start_new_config) from tests.conftest import get_args, log_has_re @@ -40,3 +41,9 @@ def test_start_new_config(mocker, caplog, exchange): result = json.loads(wt_mock.call_args_list[0][0][0]) assert result['exchange']['name'] == exchange assert result['ticker_interval'] == '15m' + + +def test_ask_user_config(): + # TODO: Implement me + pass + # assert ask_user_config() From 4be3f053ca38fc5534a445ac08ff0766708f17df Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 30 Jan 2020 21:42:48 +0100 Subject: [PATCH 1584/3421] Exclude trading against BNB bases on binance --- .../templates/subtemplates/exchange_binance.j2 | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/freqtrade/templates/subtemplates/exchange_binance.j2 b/freqtrade/templates/subtemplates/exchange_binance.j2 index 082af45c4..c527d296b 100644 --- a/freqtrade/templates/subtemplates/exchange_binance.j2 +++ b/freqtrade/templates/subtemplates/exchange_binance.j2 @@ -24,5 +24,16 @@ "XTZ/BTC" ], "pair_blacklist": [ - "BNB/BTC" + "BNB/BTC", + "BNB/BUSD", + "BNB/ETH", + "BNB/EUR", + "BNB/NGN", + "BNB/PAX", + "BNB/RUB", + "BNB/TRY", + "BNB/TUSD", + "BNB/USDC", + "BNB/USDS", + "BNB/USDT", ] From e2b3907df58737dd0a28854b8ce3d51452e032b0 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 31 Jan 2020 04:39:18 +0100 Subject: [PATCH 1585/3421] more consistent backtesting tables and labels --- freqtrade/optimize/backtesting.py | 17 ++++++---- freqtrade/optimize/optimize_reports.py | 45 +++++++++++++++++++++---- tests/optimize/test_optimize_reports.py | 32 +++++++++++------- 3 files changed, 68 insertions(+), 26 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index cdf74f65f..e2ad0f090 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -404,12 +404,12 @@ class Backtesting: ) # Execute backtest and print results all_results[self.strategy.get_strategy_name()] = self.backtest( - processed=preprocessed, - stake_amount=self.config['stake_amount'], - start_date=min_date, - end_date=max_date, - max_open_trades=max_open_trades, - position_stacking=position_stacking, + processed=preprocessed, + stake_amount=self.config['stake_amount'], + start_date=min_date, + end_date=max_date, + max_open_trades=max_open_trades, + position_stacking=position_stacking, ) for strategy, results in all_results.items(): @@ -426,7 +426,10 @@ class Backtesting: results=results)) print(' SELL REASON STATS '.center(133, '=')) - print(generate_text_table_sell_reason(data, results)) + print(generate_text_table_sell_reason(data, + stake_currency=self.config['stake_currency'], + max_open_trades=self.config['max_open_trades'], + results=results)) print(' LEFT OPEN TRADES REPORT '.center(133, '=')) print(generate_text_table(data, diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 67056eaa9..6af04d4f2 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -19,9 +19,17 @@ def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_tra floatfmt = ('s', 'd', '.2f', '.2f', '.8f', '.2f', 'd', '.1f', '.1f') tabular_data = [] - headers = ['pair', 'buy count', 'avg profit %', 'cum profit %', - f'tot profit {stake_currency}', 'tot profit %', 'avg duration', - 'profit', 'loss'] + headers = [ + 'Pair', + 'Buy Count', + 'Avg Profit %', + 'Cum Profit %', + f'Tot Profit {stake_currency}', + 'Tot Profit %', + 'Avg Duration', + 'Wins', + 'Losses' + ] for pair in data: result = results[results.pair == pair] if skip_nan and result.profit_abs.isnull().all(): @@ -58,7 +66,9 @@ def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_tra floatfmt=floatfmt, tablefmt="pipe") # type: ignore -def generate_text_table_sell_reason(data: Dict[str, Dict], results: DataFrame) -> str: +def generate_text_table_sell_reason( + data: Dict[str, Dict], stake_currency: str, max_open_trades: int, results: DataFrame +) -> str: """ Generate small table outlining Backtest results :param data: Dict of containing data that was used during backtesting. @@ -66,13 +76,36 @@ def generate_text_table_sell_reason(data: Dict[str, Dict], results: DataFrame) - :return: pretty printed table with tabulate as string """ tabular_data = [] - headers = ['Sell Reason', 'Count', 'Profit', 'Loss', 'Profit %'] + headers = [ + "Sell Reason", + "Sell Count", + "Wins", + "Losses", + "Avg Profit %", + "Cum Profit %", + f"Tot Profit {stake_currency}", + "Tot Profit %", + ] for reason, count in results['sell_reason'].value_counts().iteritems(): result = results.loc[results['sell_reason'] == reason] profit = len(result[result['profit_abs'] >= 0]) loss = len(result[result['profit_abs'] < 0]) profit_mean = round(result['profit_percent'].mean() * 100.0, 2) - tabular_data.append([reason.value, count, profit, loss, profit_mean]) + profit_sum = round(result["profit_percent"].sum() * 100.0, 2) + profit_tot = result["profit_abs"].sum() + profit_percent_tot = result["profit_percent"].sum() * 100.0 / max_open_trades + tabular_data.append( + [ + reason.value, + count, + profit, + loss, + profit_mean, + profit_sum, + profit_tot, + profit_percent_tot, + ] + ) return tabulate(tabular_data, headers=headers, tablefmt="pipe") diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 518b50d0f..8c1a3619d 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -21,14 +21,14 @@ def test_generate_text_table(default_conf, mocker): ) result_str = ( - '| pair | buy count | avg profit % | cum profit % | ' - 'tot profit BTC | tot profit % | avg duration | profit | loss |\n' - '|:--------|------------:|---------------:|---------------:|' - '-----------------:|---------------:|:---------------|---------:|-------:|\n' - '| ETH/BTC | 2 | 15.00 | 30.00 | ' - '0.60000000 | 15.00 | 0:20:00 | 2 | 0 |\n' - '| TOTAL | 2 | 15.00 | 30.00 | ' - '0.60000000 | 15.00 | 0:20:00 | 2 | 0 |' + '| Pair | Buy Count | Avg Profit % | Cum Profit % | Tot Profit BTC ' + '| Tot Profit % | Avg Duration | Wins | Losses |\n' + '|:--------|------------:|---------------:|---------------:|-----------------:' + '|---------------:|:---------------|-------:|---------:|\n' + '| ETH/BTC | 2 | 15.00 | 30.00 | 0.60000000 ' + '| 15.00 | 0:20:00 | 2 | 0 |\n' + '| TOTAL | 2 | 15.00 | 30.00 | 0.60000000 ' + '| 15.00 | 0:20:00 | 2 | 0 |' ) assert generate_text_table(data={'ETH/BTC': {}}, stake_currency='BTC', max_open_trades=2, @@ -50,13 +50,19 @@ def test_generate_text_table_sell_reason(default_conf, mocker): ) result_str = ( - '| Sell Reason | Count | Profit | Loss | Profit % |\n' - '|:--------------|--------:|---------:|-------:|-----------:|\n' - '| roi | 2 | 2 | 0 | 15 |\n' - '| stop_loss | 1 | 0 | 1 | -10 |' + '| Sell Reason | Sell Count | Wins | Losses | Avg Profit % |' + ' Cum Profit % | Tot Profit BTC | Tot Profit % |\n' + '|:--------------|-------------:|-------:|---------:|---------------:|' + '---------------:|-----------------:|---------------:|\n' + '| roi | 2 | 2 | 0 | 15 |' + ' 30 | 0.6 | 15 |\n' + '| stop_loss | 1 | 0 | 1 | -10 |' + ' -10 | -0.2 | -5 |' ) assert generate_text_table_sell_reason( - data={'ETH/BTC': {}}, results=results) == result_str + data={'ETH/BTC': {}}, + stake_currency='BTC', max_open_trades=2, + results=results) == result_str def test_generate_text_table_strategy(default_conf, mocker): From 907a61152c7be4c1c25c250a7c70bd19e7dae286 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 31 Jan 2020 04:53:37 +0100 Subject: [PATCH 1586/3421] added rounding to Tot Profit % on Sell Reasosn table to be consistent with other percentiles on table. --- freqtrade/optimize/optimize_reports.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 6af04d4f2..1c558a77c 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -93,7 +93,7 @@ def generate_text_table_sell_reason( profit_mean = round(result['profit_percent'].mean() * 100.0, 2) profit_sum = round(result["profit_percent"].sum() * 100.0, 2) profit_tot = result["profit_abs"].sum() - profit_percent_tot = result["profit_percent"].sum() * 100.0 / max_open_trades + profit_percent_tot = round(result["profit_percent"].sum() * 100.0 / max_open_trades, 2) tabular_data.append( [ reason.value, From c396ad4daa5c582141a3088a3d472e083ec9d094 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 31 Jan 2020 20:41:51 +0100 Subject: [PATCH 1587/3421] Align quotes in same area --- freqtrade/optimize/optimize_reports.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 1c558a77c..c5cd944a1 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -92,8 +92,8 @@ def generate_text_table_sell_reason( loss = len(result[result['profit_abs'] < 0]) profit_mean = round(result['profit_percent'].mean() * 100.0, 2) profit_sum = round(result["profit_percent"].sum() * 100.0, 2) - profit_tot = result["profit_abs"].sum() - profit_percent_tot = round(result["profit_percent"].sum() * 100.0 / max_open_trades, 2) + profit_tot = result['profit_abs'].sum() + profit_percent_tot = round(result['profit_percent'].sum() * 100.0 / max_open_trades, 2) tabular_data.append( [ reason.value, From d038bcedb0bd8dee7ae84936a9ff6993d86b4b5b Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 31 Jan 2020 22:37:05 +0100 Subject: [PATCH 1588/3421] fixed some more line alignments --- freqtrade/optimize/backtesting.py | 12 ++++++------ freqtrade/optimize/hyperopt.py | 29 +++++++++++++++-------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index cdf74f65f..7684c5c90 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -404,12 +404,12 @@ class Backtesting: ) # Execute backtest and print results all_results[self.strategy.get_strategy_name()] = self.backtest( - processed=preprocessed, - stake_amount=self.config['stake_amount'], - start_date=min_date, - end_date=max_date, - max_open_trades=max_open_trades, - position_stacking=position_stacking, + processed=preprocessed, + stake_amount=self.config['stake_amount'], + start_date=min_date, + end_date=max_date, + max_open_trades=max_open_trades, + position_stacking=position_stacking, ) for strategy, results in all_results.items(): diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 525f491f3..ad8b4f2c8 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -59,6 +59,7 @@ class Hyperopt: hyperopt = Hyperopt(config) hyperopt.start() """ + def __init__(self, config: Dict[str, Any]) -> None: self.config = config @@ -90,13 +91,13 @@ class Hyperopt: # Populate functions here (hasattr is slow so should not be run during "regular" operations) if hasattr(self.custom_hyperopt, 'populate_indicators'): self.backtesting.strategy.advise_indicators = \ - self.custom_hyperopt.populate_indicators # type: ignore + self.custom_hyperopt.populate_indicators # type: ignore if hasattr(self.custom_hyperopt, 'populate_buy_trend'): self.backtesting.strategy.advise_buy = \ - self.custom_hyperopt.populate_buy_trend # type: ignore + self.custom_hyperopt.populate_buy_trend # type: ignore if hasattr(self.custom_hyperopt, 'populate_sell_trend'): self.backtesting.strategy.advise_sell = \ - self.custom_hyperopt.populate_sell_trend # type: ignore + self.custom_hyperopt.populate_sell_trend # type: ignore # Use max_open_trades for hyperopt as well, except --disable-max-market-positions is set if self.config.get('use_max_market_positions', True): @@ -345,15 +346,15 @@ class Hyperopt: if self.has_space('roi'): self.backtesting.strategy.minimal_roi = \ - self.custom_hyperopt.generate_roi_table(params_dict) + self.custom_hyperopt.generate_roi_table(params_dict) if self.has_space('buy'): self.backtesting.strategy.advise_buy = \ - self.custom_hyperopt.buy_strategy_generator(params_dict) + self.custom_hyperopt.buy_strategy_generator(params_dict) if self.has_space('sell'): self.backtesting.strategy.advise_sell = \ - self.custom_hyperopt.sell_strategy_generator(params_dict) + self.custom_hyperopt.sell_strategy_generator(params_dict) if self.has_space('stoploss'): self.backtesting.strategy.stoploss = params_dict['stoploss'] @@ -372,12 +373,12 @@ class Hyperopt: min_date, max_date = get_timerange(processed) backtesting_results = self.backtesting.backtest( - processed=processed, - stake_amount=self.config['stake_amount'], - start_date=min_date, - end_date=max_date, - max_open_trades=self.max_open_trades, - position_stacking=self.position_stacking, + processed=processed, + stake_amount=self.config['stake_amount'], + start_date=min_date, + end_date=max_date, + max_open_trades=self.max_open_trades, + position_stacking=self.position_stacking, ) return self._get_results_dict(backtesting_results, min_date, max_date, params_dict, params_details) @@ -469,8 +470,8 @@ class Hyperopt: trials = Hyperopt._read_trials(trials_file) if trials[0].get('is_best') is None: raise OperationalException( - "The file with Hyperopt results is incompatible with this version " - "of Freqtrade and cannot be loaded.") + "The file with Hyperopt results is incompatible with this version " + "of Freqtrade and cannot be loaded.") logger.info(f"Loaded {len(trials)} previous evaluations from disk.") return trials From d69ef4380b273468b20c652fb5e6f3d489fc4dd6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 13:44:04 +0100 Subject: [PATCH 1589/3421] Add basic documentation for new-config option --- docs/utils.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/utils.md b/docs/utils.md index 18deeac54..df2a1c3c3 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -36,6 +36,24 @@ optional arguments: └── sample_strategy.py ``` +## Create new config + +Creates a new configuration file, asking some questions which are important selections for a configuration. + + +``` +usage: freqtrade new-config [-h] [-c PATH] + +optional arguments: + -h, --help show this help message and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-` + to read config from stdin. +``` + +!!! Warning + Only vital questions are asked. Freqtrade offers a lot more configuration possibilities, which are listed in the [Configuration documentation](configuration.md#configuration-parameters) + ## Create new strategy Creates a new strategy from a template similar to SampleStrategy. From c40a4d77f8972c80be8be311a9dfd183a1222a64 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 13:46:58 +0100 Subject: [PATCH 1590/3421] Use exchange_mapping to determine correct exchange-template --- freqtrade/commands/build_config_commands.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py index 6abacd826..e0910e5b7 100644 --- a/freqtrade/commands/build_config_commands.py +++ b/freqtrade/commands/build_config_commands.py @@ -5,7 +5,7 @@ from typing import Any, Dict from questionary import Separator, prompt from freqtrade.constants import UNLIMITED_STAKE_AMOUNT -from freqtrade.exchange import available_exchanges +from freqtrade.exchange import available_exchanges, MAP_EXCHANGE_CHILDCLASS from freqtrade.misc import render_template from freqtrade.exceptions import OperationalException logger = logging.getLogger(__name__) @@ -141,8 +141,11 @@ def deploy_new_config(config_path: Path, selections: Dict[str, Any]) -> None: """ from jinja2.exceptions import TemplateNotFound try: + exchange_template = MAP_EXCHANGE_CHILDCLASS.get( + selections['exchange_name'], selections['exchange_name']) + selections['exchange'] = render_template( - templatefile=f"subtemplates/exchange_{selections['exchange_name']}.j2", + templatefile=f"subtemplates/exchange_{exchange_template}.j2", arguments=selections ) except TemplateNotFound: From 54512a66ef187aedcddc048968f822b515fa510d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 13:52:25 +0100 Subject: [PATCH 1591/3421] Update help-strings for list-utils --- docs/utils.md | 51 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index df2a1c3c3..44cbc35d6 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -197,20 +197,31 @@ All exchanges supported by the ccxt library: _1btcxe, acx, adara, allcoin, anxpr Use the `list-timeframes` subcommand to see the list of ticker intervals (timeframes) available for the exchange. ``` -usage: freqtrade list-timeframes [-h] [--exchange EXCHANGE] [-1] +usage: freqtrade list-timeframes [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--exchange EXCHANGE] [-1] optional arguments: - -h, --help show this help message and exit - --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no - config is provided. - -1, --one-column Print output in one column. + -h, --help show this help message and exit + --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no config is provided. + -1, --one-column Print output in one column. + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: 'syslog', 'journald'. See the documentation for more details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-` + to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. ``` * Example: see the timeframes for the 'binance' exchange, set in the configuration file: ``` -$ freqtrade -c config_binance.json list-timeframes +$ freqtrade list-timeframes -c config_binance.json ... Timeframes available for the exchange `binance`: 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M ``` @@ -234,14 +245,16 @@ You can print info about any pair/market with these subcommands - and you can fi These subcommands have same usage and same set of available options: ``` -usage: freqtrade list-markets [-h] [--exchange EXCHANGE] [--print-list] - [--print-json] [-1] [--print-csv] +usage: freqtrade list-markets [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] [--exchange EXCHANGE] + [--print-list] [--print-json] [-1] [--print-csv] [--base BASE_CURRENCY [BASE_CURRENCY ...]] [--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] [-a] -usage: freqtrade list-pairs [-h] [--exchange EXCHANGE] [--print-list] - [--print-json] [-1] [--print-csv] +usage: freqtrade list-pairs [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] [--exchange EXCHANGE] + [--print-list] [--print-json] [-1] [--print-csv] [--base BASE_CURRENCY [BASE_CURRENCY ...]] [--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] [-a] @@ -260,6 +273,22 @@ optional arguments: Specify quote currency(-ies). Space-separated list. -a, --all Print all pairs or market symbols. By default only active ones are shown. + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). + Multiple --config options may be used. Can be set to + `-` to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. + ``` By default, only active pairs/markets are shown. Active pairs/markets are those that can currently be traded @@ -281,7 +310,7 @@ $ freqtrade list-pairs --quote USD --print-json human-readable list with summary: ``` -$ freqtrade -c config_binance.json list-pairs --all --base BTC ETH --quote USDT USD --print-list +$ freqtrade list-pairs -c config_binance.json --all --base BTC ETH --quote USDT USD --print-list ``` * Print all markets on exchange "Kraken", in the tabular format: From 8796ecb2a9565e04c336c6e84ac606413c9c8c4c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 13:54:17 +0100 Subject: [PATCH 1592/3421] Ad example for new-config with answered questions --- docs/installation.md | 3 ++- docs/utils.md | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index cbe000da4..8d3d2c464 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -31,7 +31,7 @@ Freqtrade provides the Linux/MacOS Easy Installation script to install all depen !!! Note Windows installation is explained [here](#windows). -The easiest way to install and run Freqtrade is to clone the bot GitHub repository and then run the Easy Installation script, if it's available for your platform. +The easiest way to install and run Freqtrade is to clone the bot Github repository and then run the Easy Installation script, if it's available for your platform. !!! Note "Version considerations" When cloning the repository the default working branch has the name `develop`. This branch contains all last features (can be considered as relatively stable, thanks to automated tests). The `master` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable). @@ -47,6 +47,7 @@ cd freqtrade git checkout master # Optional, see (1) ./setup.sh --install ``` + (1) This command switches the cloned repository to the use of the `master` branch. It's not needed if you wish to stay on the `develop` branch. You may later switch between branches at any time with the `git checkout master`/`git checkout develop` commands. ## Easy Installation Script (Linux/MacOS) diff --git a/docs/utils.md b/docs/utils.md index 44cbc35d6..f77d2c428 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -54,6 +54,21 @@ optional arguments: !!! Warning Only vital questions are asked. Freqtrade offers a lot more configuration possibilities, which are listed in the [Configuration documentation](configuration.md#configuration-parameters) +### Create config examples + +``` +$ freqtrade new-config --config config_binance.json + +? Do you want to enable Dry-run (simulated trades)? Yes +? Please insert your stake currency: BTC +? Please insert your stake amount: 0.05 +? Please insert max_open_trades (Integer or 'unlimited'): 5 +? Please insert your ticker interval: 15m +? Please insert your display Currency (for reporting): USD +? Select exchange binance +? Do you want to enable Telegram? No +``` + ## Create new strategy Creates a new strategy from a template similar to SampleStrategy. From 929bbe3058e5682793126781956095207d04e3c0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 14:01:19 +0100 Subject: [PATCH 1593/3421] Link to docker installation from index.md --- docs/index.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index c88c73619..f0ee831e3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -51,12 +51,15 @@ To run this bot we recommend you a cloud instance with a minimum of: ### Software requirements +- Docker (Recommended) + +Alternatively + - Python 3.6.x - pip (pip3) - git - TA-Lib - virtualenv (Recommended) -- Docker (Recommended) ## Support @@ -67,4 +70,4 @@ Click [here](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODc ## Ready to try? -Begin by reading our installation guide [here](installation). +Begin by reading our installation guide [for docker](docker.md), or for [installation without docker](installation.md). From c224c669784cdf0383fab61380e3b65d8189f95a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 14:06:31 +0100 Subject: [PATCH 1594/3421] Small edits to install.md --- docs/installation.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 8d3d2c464..054cafe9b 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -130,6 +130,17 @@ bash setup.sh -i #### 1. Install TA-Lib +Use the provided ta-lib installation script + +```bash +sudo ./build_helpers/install_ta-lib.sh +``` + +!!! Note + This will use the ta-lib tar.gz included in this repository. + +##### TA-Lib manual installation + Official webpage: https://mrjbq7.github.io/ta-lib/install.html ```bash @@ -185,7 +196,8 @@ python3 -m pip install -e . # Initialize the user_directory freqtrade create-userdir --userdir user_data/ -cp config.json.example config.json +# Create a new configuration file +freqtrade new-config --config config.json ``` > *To edit the config please refer to [Bot Configuration](configuration.md).* From cfa6a3e3d32d5575299bb346367ec394ff8a1a7c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 14:12:21 +0100 Subject: [PATCH 1595/3421] Don't overwrite files --- freqtrade/commands/build_config_commands.py | 6 +++++- tests/commands/test_build_config.py | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py index e0910e5b7..6ba9cf0ac 100644 --- a/freqtrade/commands/build_config_commands.py +++ b/freqtrade/commands/build_config_commands.py @@ -166,7 +166,11 @@ def start_new_config(args: Dict[str, Any]) -> None: Create a new strategy from a template Asking the user questions to fill out the templateaccordingly. """ - selections = ask_user_config() config_path = Path(args['config'][0]) + if config_path.exists(): + raise OperationalException( + f"Configuration `{config_path}` already exists. " + "Please use another configuration name or delete the existing configuration.") + selections = ask_user_config() deploy_new_config(config_path, selections) diff --git a/tests/commands/test_build_config.py b/tests/commands/test_build_config.py index 46e79b357..b0a048c15 100644 --- a/tests/commands/test_build_config.py +++ b/tests/commands/test_build_config.py @@ -6,6 +6,7 @@ import pytest from freqtrade.commands.build_config_commands import (ask_user_config, start_new_config) +from freqtrade.exceptions import OperationalException from tests.conftest import get_args, log_has_re @@ -43,6 +44,17 @@ def test_start_new_config(mocker, caplog, exchange): assert result['ticker_interval'] == '15m' +def test_start_new_config_exists(mocker, caplog): + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + args = [ + "new-config", + "--config", + "coolconfig.json" + ] + with pytest.raises(OperationalException, match=r"Configuration .* already exists\."): + start_new_config(get_args(args)) + + def test_ask_user_config(): # TODO: Implement me pass From d1a3a2d000f1a2e5600265cc4fcf84287fd0122a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 14:22:40 +0100 Subject: [PATCH 1596/3421] Add tests for build_config --- freqtrade/commands/build_config_commands.py | 23 ++++++++++++++++++--- tests/commands/test_build_config.py | 12 ++++++++--- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py index 6ba9cf0ac..838fd510a 100644 --- a/freqtrade/commands/build_config_commands.py +++ b/freqtrade/commands/build_config_commands.py @@ -27,6 +27,19 @@ def validate_is_float(val): return False +def ask_user_overwrite(config_path: Path) -> bool: + questions = [ + { + "type": "confirm", + "name": "overwrite", + "message": f"File {config_path} already exists. Overwrite?", + "default": False, + }, + ] + answers = prompt(questions) + return answers['overwrite'] + + def ask_user_config() -> Dict[str, Any]: """ Ask user a few questions to build the configuration. @@ -169,8 +182,12 @@ def start_new_config(args: Dict[str, Any]) -> None: config_path = Path(args['config'][0]) if config_path.exists(): - raise OperationalException( - f"Configuration `{config_path}` already exists. " - "Please use another configuration name or delete the existing configuration.") + overwrite = ask_user_overwrite(config_path) + if overwrite: + config_path.unlink() + else: + raise OperationalException( + f"Configuration `{config_path}` already exists. " + "Please use another configuration name or delete the existing configuration.") selections = ask_user_config() deploy_new_config(config_path, selections) diff --git a/tests/commands/test_build_config.py b/tests/commands/test_build_config.py index b0a048c15..8f71c2098 100644 --- a/tests/commands/test_build_config.py +++ b/tests/commands/test_build_config.py @@ -1,8 +1,8 @@ -import json from pathlib import Path from unittest.mock import MagicMock import pytest +import rapidjson from freqtrade.commands.build_config_commands import (ask_user_config, start_new_config) @@ -13,7 +13,10 @@ from tests.conftest import get_args, log_has_re @pytest.mark.parametrize('exchange', ['bittrex', 'binance', 'kraken', 'ftx']) def test_start_new_config(mocker, caplog, exchange): wt_mock = mocker.patch.object(Path, "write_text", MagicMock()) - mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + unlink_mock = mocker.patch.object(Path, "unlink", MagicMock()) + mocker.patch('freqtrade.commands.build_config_commands.ask_user_overwrite', return_value=True) + sample_selections = { 'max_open_trades': 3, 'stake_currency': 'USDT', @@ -39,13 +42,16 @@ def test_start_new_config(mocker, caplog, exchange): assert log_has_re("Writing config to .*", caplog) assert wt_mock.call_count == 1 - result = json.loads(wt_mock.call_args_list[0][0][0]) + assert unlink_mock.call_count == 1 + result = rapidjson.loads(wt_mock.call_args_list[0][0][0], + parse_mode=rapidjson.PM_COMMENTS | rapidjson.PM_TRAILING_COMMAS) assert result['exchange']['name'] == exchange assert result['ticker_interval'] == '15m' def test_start_new_config_exists(mocker, caplog): mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + mocker.patch('freqtrade.commands.build_config_commands.ask_user_overwrite', return_value=False) args = [ "new-config", "--config", From 12317b1c535a4ca6b82441896000527c4f69d8cb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 14:46:43 +0100 Subject: [PATCH 1597/3421] Add some rudimentary tests for questions --- tests/commands/test_build_config.py | 59 ++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/tests/commands/test_build_config.py b/tests/commands/test_build_config.py index 8f71c2098..d4ebe1de2 100644 --- a/tests/commands/test_build_config.py +++ b/tests/commands/test_build_config.py @@ -5,11 +5,33 @@ import pytest import rapidjson from freqtrade.commands.build_config_commands import (ask_user_config, - start_new_config) + ask_user_overwrite, + start_new_config, + validate_is_float, + validate_is_int) from freqtrade.exceptions import OperationalException from tests.conftest import get_args, log_has_re +def test_validate_is_float(): + assert validate_is_float('2.0') + assert validate_is_float('2.1') + assert validate_is_float('0.1') + assert validate_is_float('-0.5') + assert not validate_is_float('-0.5e') + + +def test_validate_is_int(): + assert validate_is_int('2') + assert validate_is_int('6') + assert validate_is_int('-1') + assert validate_is_int('500') + assert not validate_is_int('2.0') + assert not validate_is_int('2.1') + assert not validate_is_int('-2.1') + assert not validate_is_int('-ee') + + @pytest.mark.parametrize('exchange', ['bittrex', 'binance', 'kraken', 'ftx']) def test_start_new_config(mocker, caplog, exchange): wt_mock = mocker.patch.object(Path, "write_text", MagicMock()) @@ -61,7 +83,34 @@ def test_start_new_config_exists(mocker, caplog): start_new_config(get_args(args)) -def test_ask_user_config(): - # TODO: Implement me - pass - # assert ask_user_config() +def test_ask_user_overwrite(mocker): + """ + Once https://github.com/tmbo/questionary/issues/35 is implemented, improve this test. + """ + prompt_mock = mocker.patch('freqtrade.commands.build_config_commands.prompt', + return_value={'overwrite': False}) + assert not ask_user_overwrite(Path('test.json')) + assert prompt_mock.call_count == 1 + + prompt_mock.reset_mock() + prompt_mock = mocker.patch('freqtrade.commands.build_config_commands.prompt', + return_value={'overwrite': True}) + assert ask_user_overwrite(Path('test.json')) + assert prompt_mock.call_count == 1 + + +def test_ask_user_config(mocker): + """ + Once https://github.com/tmbo/questionary/issues/35 is implemented, improve this test. + """ + prompt_mock = mocker.patch('freqtrade.commands.build_config_commands.prompt', + return_value={'overwrite': False}) + answers = ask_user_config() + assert isinstance(answers, dict) + assert prompt_mock.call_count == 1 + + prompt_mock = mocker.patch('freqtrade.commands.build_config_commands.prompt', + return_value={}) + + with pytest.raises(OperationalException, match=r"User interrupted interactive questions\."): + ask_user_config() From 628b06927c08b043338faa11254305bbce948287 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 14:59:14 +0100 Subject: [PATCH 1598/3421] Support python3.8 virtualenvs and remove config generation via SED --- setup.sh | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/setup.sh b/setup.sh index fb5102e12..bce2e56cf 100755 --- a/setup.sh +++ b/setup.sh @@ -17,6 +17,14 @@ function check_installed_python() { exit 2 fi + which python3.8 + if [ $? -eq 0 ]; then + echo "using Python 3.8" + PYTHON=python3.8 + check_installed_pip + return + fi + which python3.7 if [ $? -eq 0 ]; then echo "using Python 3.7" @@ -215,27 +223,8 @@ function config_generator() { function config() { echo "-------------------------" - echo "Generating config file" + echo "Please use freqtrade new-config -c config.json to generate a new configuration file." echo "-------------------------" - if [ -f config.json ] - then - read -p "A config file already exist, do you want to override it [y/N]? " - if [[ $REPLY =~ ^[Yy]$ ]] - then - config_generator - else - echo "Configuration of config.json ignored." - fi - else - config_generator - fi - - echo - echo "-------------------------" - echo "Config file generated" - echo "-------------------------" - echo "Edit ./config.json to modify Pair and other configurations." - echo } function install() { From 4459679c6404ac1d6aa58c4543eda7e6f4819a19 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 15:14:44 +0100 Subject: [PATCH 1599/3421] Update dockerfile to 3.8.1 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f631d891d..923285f39 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.7.6-slim-stretch +FROM python:3.8.1-slim-buster RUN apt-get update \ && apt-get -y install curl build-essential libssl-dev \ From 321bc336ea7b63064c41a2f3807fe8838331f56f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 15:14:55 +0100 Subject: [PATCH 1600/3421] Run tests against 3.8 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53b2e5440..c838baced 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: strategy: matrix: os: [ ubuntu-18.04, macos-latest ] - python-version: [3.7] + python-version: [3.7, 3.8] steps: - uses: actions/checkout@v1 From cbd2b265bbb2eea78ad6ffc6b727e1b733729ce5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Feb 2020 15:16:44 +0100 Subject: [PATCH 1601/3421] Fix small error --- freqtrade/commands/arguments.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 504c6b0b5..c8a038328 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -182,7 +182,7 @@ class Arguments: # add new-config subcommand build_config_cmd = subparsers.add_parser('new-config', - help="Create new config") + help="Create new config") build_config_cmd.set_defaults(func=start_new_config) self._build_args(optionlist=ARGS_BUILD_CONFIG, parser=build_config_cmd) From f3d500085c0fec96a8ae59bc164e06a55a0beacb Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 2 Feb 2020 07:00:40 +0300 Subject: [PATCH 1602/3421] Add some type hints --- freqtrade/commands/data_commands.py | 10 +++-- freqtrade/commands/deploy_commands.py | 4 +- freqtrade/commands/plot_commands.py | 2 +- freqtrade/configuration/check_exchange.py | 2 +- .../configuration/deprecated_settings.py | 4 +- .../configuration/directory_operations.py | 2 +- freqtrade/configuration/timerange.py | 5 ++- freqtrade/data/btanalysis.py | 7 +-- freqtrade/data/history.py | 12 ++--- freqtrade/edge/edge_positioning.py | 4 +- freqtrade/exchange/exchange.py | 45 +++++++++++-------- freqtrade/freqtradebot.py | 16 +++---- freqtrade/misc.py | 9 ++-- freqtrade/optimize/backtesting.py | 10 +++-- freqtrade/optimize/hyperopt.py | 18 ++++---- freqtrade/pairlist/IPairList.py | 5 ++- freqtrade/pairlist/PrecisionFilter.py | 6 +-- freqtrade/pairlist/PriceFilter.py | 5 ++- freqtrade/pairlist/VolumePairList.py | 7 +-- freqtrade/persistence.py | 9 ++-- freqtrade/plot/plotting.py | 2 +- freqtrade/resolvers/iresolver.py | 2 +- freqtrade/resolvers/strategy_resolver.py | 7 +-- freqtrade/rpc/rpc.py | 5 ++- freqtrade/rpc/rpc_manager.py | 2 +- freqtrade/strategy/interface.py | 2 +- freqtrade/wallets.py | 10 ++--- freqtrade/worker.py | 2 +- 28 files changed, 114 insertions(+), 100 deletions(-) diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index c01772023..aeb598009 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -1,6 +1,6 @@ import logging import sys -from typing import Any, Dict, List +from typing import Any, Dict, List, cast import arrow @@ -43,16 +43,18 @@ def start_download_data(args: Dict[str, Any]) -> None: if config.get('download_trades'): pairs_not_available = refresh_backtest_trades_data( exchange, pairs=config["pairs"], datadir=config['datadir'], - timerange=timerange, erase=config.get("erase")) + timerange=timerange, erase=cast(bool, config.get("erase"))) # Convert downloaded trade data to different timeframes convert_trades_to_ohlcv( pairs=config["pairs"], timeframes=config["timeframes"], - datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) + datadir=config['datadir'], timerange=timerange, + erase=cast(bool, config.get("erase"))) else: pairs_not_available = refresh_backtest_ohlcv_data( exchange, pairs=config["pairs"], timeframes=config["timeframes"], - datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) + datadir=config['datadir'], timerange=timerange, + erase=cast(bool, config.get("erase"))) except KeyboardInterrupt: sys.exit("SIGINT received, aborting ...") diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index 99ae63244..809740661 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -28,7 +28,7 @@ def start_create_userdir(args: Dict[str, Any]) -> None: sys.exit(1) -def deploy_new_strategy(strategy_name, strategy_path: Path, subtemplate: str): +def deploy_new_strategy(strategy_name: str, strategy_path: Path, subtemplate: str) -> None: """ Deploy new strategy from template to strategy_path """ @@ -69,7 +69,7 @@ def start_new_strategy(args: Dict[str, Any]) -> None: raise OperationalException("`new-strategy` requires --strategy to be set.") -def deploy_new_hyperopt(hyperopt_name, hyperopt_path: Path, subtemplate: str): +def deploy_new_hyperopt(hyperopt_name: str, hyperopt_path: Path, subtemplate: str) -> None: """ Deploys a new hyperopt template to hyperopt_path """ diff --git a/freqtrade/commands/plot_commands.py b/freqtrade/commands/plot_commands.py index 028933ba7..5e547acb0 100644 --- a/freqtrade/commands/plot_commands.py +++ b/freqtrade/commands/plot_commands.py @@ -5,7 +5,7 @@ from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode -def validate_plot_args(args: Dict[str, Any]): +def validate_plot_args(args: Dict[str, Any]) -> None: if not args.get('datadir') and not args.get('config'): raise OperationalException( "You need to specify either `--datadir` or `--config` " diff --git a/freqtrade/configuration/check_exchange.py b/freqtrade/configuration/check_exchange.py index 0076b1c5d..92daaf251 100644 --- a/freqtrade/configuration/check_exchange.py +++ b/freqtrade/configuration/check_exchange.py @@ -10,7 +10,7 @@ from freqtrade.state import RunMode logger = logging.getLogger(__name__) -def remove_credentials(config: Dict[str, Any]): +def remove_credentials(config: Dict[str, Any]) -> None: """ Removes exchange keys from the configuration and specifies dry-run Used for backtesting / hyperopt / edge and utils. diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index 78d8218d4..55497d4f5 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -13,7 +13,7 @@ logger = logging.getLogger(__name__) def check_conflicting_settings(config: Dict[str, Any], section1: str, name1: str, - section2: str, name2: str): + section2: str, name2: str) -> None: section1_config = config.get(section1, {}) section2_config = config.get(section2, {}) if name1 in section1_config and name2 in section2_config: @@ -28,7 +28,7 @@ def check_conflicting_settings(config: Dict[str, Any], def process_deprecated_setting(config: Dict[str, Any], section1: str, name1: str, - section2: str, name2: str): + section2: str, name2: str) -> None: section2_config = config.get(section2, {}) if name2 in section2_config: diff --git a/freqtrade/configuration/directory_operations.py b/freqtrade/configuration/directory_operations.py index 43a209483..5f8eb76b0 100644 --- a/freqtrade/configuration/directory_operations.py +++ b/freqtrade/configuration/directory_operations.py @@ -23,7 +23,7 @@ def create_datadir(config: Dict[str, Any], datadir: Optional[str] = None) -> Pat return folder -def create_userdata_dir(directory: str, create_dir=False) -> Path: +def create_userdata_dir(directory: str, create_dir: bool = False) -> Path: """ Create userdata directory structure. if create_dir is True, then the parent-directory will be created if it does not exist. diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py index a8be873df..3db5f6217 100644 --- a/freqtrade/configuration/timerange.py +++ b/freqtrade/configuration/timerange.py @@ -7,6 +7,7 @@ from typing import Optional import arrow + logger = logging.getLogger(__name__) @@ -30,7 +31,7 @@ class TimeRange: return (self.starttype == other.starttype and self.stoptype == other.stoptype and self.startts == other.startts and self.stopts == other.stopts) - def subtract_start(self, seconds) -> None: + def subtract_start(self, seconds: int) -> None: """ Subtracts from startts if startts is set. :param seconds: Seconds to subtract from starttime @@ -59,7 +60,7 @@ class TimeRange: self.starttype = 'date' @staticmethod - def parse_timerange(text: Optional[str]): + def parse_timerange(text: Optional[str]) -> 'TimeRange': """ Parse the value of the argument --timerange to determine what is the range desired :param text: value from --timerange diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 04b2ca980..c28e462ba 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -3,7 +3,7 @@ Helpers when analyzing backtest data """ import logging from pathlib import Path -from typing import Dict +from typing import Dict, Union import numpy as np import pandas as pd @@ -20,7 +20,7 @@ BT_DATA_COLUMNS = ["pair", "profitperc", "open_time", "close_time", "index", "du "open_rate", "close_rate", "open_at_end", "sell_reason"] -def load_backtest_data(filename) -> pd.DataFrame: +def load_backtest_data(filename: Union[Path, str]) -> pd.DataFrame: """ Load backtest data file. :param filename: pathlib.Path object, or string pointing to the file. @@ -151,7 +151,8 @@ def extract_trades_of_period(dataframe: pd.DataFrame, trades: pd.DataFrame) -> p return trades -def combine_tickers_with_mean(tickers: Dict[str, pd.DataFrame], column: str = "close"): +def combine_tickers_with_mean(tickers: Dict[str, pd.DataFrame], + column: str = "close") -> pd.DataFrame: """ Combine multiple dataframes "column" :param tickers: Dict of Dataframes, dict key should be pair. diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 30d168f78..d891aa5b0 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -86,7 +86,7 @@ def load_tickerdata_file(datadir: Path, pair: str, timeframe: str, def store_tickerdata_file(datadir: Path, pair: str, - timeframe: str, data: list, is_zip: bool = False): + timeframe: str, data: list, is_zip: bool = False) -> None: """ Stores tickerdata to file """ @@ -109,7 +109,7 @@ def load_trades_file(datadir: Path, pair: str, def store_trades_file(datadir: Path, pair: str, - data: list, is_zip: bool = True): + data: list, is_zip: bool = True) -> None: """ Stores tickerdata to file """ @@ -117,7 +117,7 @@ def store_trades_file(datadir: Path, pair: str, misc.file_dump_json(filename, data, is_zip=is_zip) -def _validate_pairdata(pair, pairdata, timerange: TimeRange): +def _validate_pairdata(pair: str, pairdata: List[Dict], timerange: TimeRange) -> None: if timerange.starttype == 'date' and pairdata[0][0] > timerange.startts * 1000: logger.warning('Missing data at start for pair %s, data starts at %s', pair, arrow.get(pairdata[0][0] // 1000).strftime('%Y-%m-%d %H:%M:%S')) @@ -331,7 +331,7 @@ def _download_pair_history(datadir: Path, def refresh_backtest_ohlcv_data(exchange: Exchange, pairs: List[str], timeframes: List[str], datadir: Path, timerange: Optional[TimeRange] = None, - erase=False) -> List[str]: + erase: bool = False) -> List[str]: """ Refresh stored ohlcv data for backtesting and hyperopt operations. Used by freqtrade download-data subcommand. @@ -401,7 +401,7 @@ def _download_trades_history(datadir: Path, def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], datadir: Path, - timerange: TimeRange, erase=False) -> List[str]: + timerange: TimeRange, erase: bool = False) -> List[str]: """ Refresh stored trades data for backtesting and hyperopt operations. Used by freqtrade download-data subcommand. @@ -428,7 +428,7 @@ def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], datadir: def convert_trades_to_ohlcv(pairs: List[str], timeframes: List[str], - datadir: Path, timerange: TimeRange, erase=False) -> None: + datadir: Path, timerange: TimeRange, erase: bool = False) -> None: """ Convert stored trades data to ohlcv data """ diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index 15883357b..1506b4ed5 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -1,7 +1,7 @@ # pragma pylint: disable=W0603 """ Edge positioning package """ import logging -from typing import Any, Dict, NamedTuple +from typing import Any, Dict, List, NamedTuple import arrow import numpy as np @@ -181,7 +181,7 @@ class Edge: 'strategy stoploss is returned instead.') return self.strategy.stoploss - def adjust(self, pairs) -> list: + def adjust(self, pairs: List[str]) -> list: """ Filters out and sorts "pairs" according to Edge calculated pairs """ diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 87c189457..f7bfb0ee1 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -24,6 +24,12 @@ from freqtrade.exceptions import (DependencyException, InvalidOrderException, from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async from freqtrade.misc import deep_merge_dicts + +# Should probably use typing.Literal when we switch to python 3.8+ +# CcxtModuleType = Literal[ccxt, ccxt_async] +CcxtModuleType = Any + + logger = logging.getLogger(__name__) @@ -51,7 +57,7 @@ class Exchange: } _ft_has: Dict = {} - def __init__(self, config: dict, validate: bool = True) -> None: + def __init__(self, config: Dict[str, Any], validate: bool = True) -> None: """ Initializes this module with the given config, it does basic validation whether the specified exchange and pairs are valid. @@ -135,7 +141,7 @@ class Exchange: if self._api_async and inspect.iscoroutinefunction(self._api_async.close): asyncio.get_event_loop().run_until_complete(self._api_async.close()) - def _init_ccxt(self, exchange_config: dict, ccxt_module=ccxt, + def _init_ccxt(self, exchange_config: Dict[str, Any], ccxt_module: CcxtModuleType = ccxt, ccxt_kwargs: dict = None) -> ccxt.Exchange: """ Initialize ccxt with given config and return valid @@ -224,13 +230,13 @@ class Exchange: markets = self.markets return sorted(set([x['quote'] for _, x in markets.items()])) - def klines(self, pair_interval: Tuple[str, str], copy=True) -> DataFrame: + def klines(self, pair_interval: Tuple[str, str], copy: bool = True) -> DataFrame: if pair_interval in self._klines: return self._klines[pair_interval].copy() if copy else self._klines[pair_interval] else: return DataFrame() - def set_sandbox(self, api, exchange_config: dict, name: str): + def set_sandbox(self, api: ccxt.Exchange, exchange_config: dict, name: str) -> None: if exchange_config.get('sandbox'): if api.urls.get('test'): api.urls['api'] = api.urls['test'] @@ -240,7 +246,7 @@ class Exchange: "Please check your config.json") raise OperationalException(f'Exchange {name} does not provide a sandbox api') - def _load_async_markets(self, reload=False) -> None: + def _load_async_markets(self, reload: bool = False) -> None: try: if self._api_async: asyncio.get_event_loop().run_until_complete( @@ -273,7 +279,7 @@ class Exchange: except ccxt.BaseError: logger.exception("Could not reload markets.") - def validate_stakecurrency(self, stake_currency) -> None: + def validate_stakecurrency(self, stake_currency: str) -> None: """ Checks stake-currency against available currencies on the exchange. :param stake_currency: Stake-currency to validate @@ -319,7 +325,7 @@ class Exchange: f"Please check if you are impacted by this restriction " f"on the exchange and eventually remove {pair} from your whitelist.") - def get_valid_pair_combination(self, curr_1, curr_2) -> str: + def get_valid_pair_combination(self, curr_1: str, curr_2: str) -> str: """ Get valid pair combination of curr_1 and curr_2 by trying both combinations. """ @@ -373,7 +379,7 @@ class Exchange: raise OperationalException( f'Time in force policies are not supported for {self.name} yet.') - def validate_required_startup_candles(self, startup_candles) -> None: + def validate_required_startup_candles(self, startup_candles: int) -> None: """ Checks if required startup_candles is more than ohlcv_candle_limit. Requires a grace-period of 5 candles - so a startup-period up to 494 is allowed by default. @@ -392,7 +398,7 @@ class Exchange: """ return endpoint in self._api.has and self._api.has[endpoint] - def amount_to_precision(self, pair, amount: float) -> float: + def amount_to_precision(self, pair: str, amount: float) -> float: ''' Returns the amount to buy or sell to a precision the Exchange accepts Reimplementation of ccxt internal methods - ensuring we can test the result is correct @@ -406,7 +412,7 @@ class Exchange: return amount - def price_to_precision(self, pair, price: float) -> float: + def price_to_precision(self, pair: str, price: float) -> float: ''' Returns the price rounded up to the precision the Exchange accepts. Partial Reimplementation of ccxt internal method decimal_to_precision(), @@ -494,7 +500,7 @@ class Exchange: raise OperationalException(e) from e def buy(self, pair: str, ordertype: str, amount: float, - rate: float, time_in_force) -> Dict: + rate: float, time_in_force: str) -> Dict: if self._config['dry_run']: dry_order = self.dry_run_order(pair, ordertype, "buy", amount, rate) @@ -507,7 +513,7 @@ class Exchange: return self.create_order(pair, ordertype, 'buy', amount, rate, params) def sell(self, pair: str, ordertype: str, amount: float, - rate: float, time_in_force='gtc') -> Dict: + rate: float, time_in_force: str = 'gtc') -> Dict: if self._config['dry_run']: dry_order = self.dry_run_order(pair, ordertype, "sell", amount, rate) @@ -976,8 +982,8 @@ class Exchange: raise OperationalException(e) from e @retrier - def get_fee(self, symbol, type='', side='', amount=1, - price=1, taker_or_maker='maker') -> float: + def get_fee(self, symbol: str, type: str = '', side: str = '', amount: float = 1, + price: float = 1, taker_or_maker: str = 'maker') -> float: try: # validate that markets are loaded before trying to get fee if self._api.markets is None or len(self._api.markets) == 0: @@ -1000,7 +1006,7 @@ def get_exchange_bad_reason(exchange_name: str) -> str: return BAD_EXCHANGES.get(exchange_name, "") -def is_exchange_known_ccxt(exchange_name: str, ccxt_module=None) -> bool: +def is_exchange_known_ccxt(exchange_name: str, ccxt_module: CcxtModuleType = None) -> bool: return exchange_name in ccxt_exchanges(ccxt_module) @@ -1008,14 +1014,14 @@ def is_exchange_officially_supported(exchange_name: str) -> bool: return exchange_name in ['bittrex', 'binance'] -def ccxt_exchanges(ccxt_module=None) -> List[str]: +def ccxt_exchanges(ccxt_module: CcxtModuleType = None) -> List[str]: """ Return the list of all exchanges known to ccxt """ return ccxt_module.exchanges if ccxt_module is not None else ccxt.exchanges -def available_exchanges(ccxt_module=None) -> List[str]: +def available_exchanges(ccxt_module: CcxtModuleType = None) -> List[str]: """ Return exchanges available to the bot, i.e. non-bad exchanges in the ccxt list """ @@ -1075,7 +1081,8 @@ def timeframe_to_next_date(timeframe: str, date: datetime = None) -> datetime: return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) -def symbol_is_pair(market_symbol: str, base_currency: str = None, quote_currency: str = None): +def symbol_is_pair(market_symbol: str, base_currency: str = None, + quote_currency: str = None) -> bool: """ Check if the market symbol is a pair, i.e. that its symbol consists of the base currency and the quote currency separated by '/' character. If base_currency and/or quote_currency is passed, @@ -1088,7 +1095,7 @@ def symbol_is_pair(market_symbol: str, base_currency: str = None, quote_currency (symbol_parts[1] == quote_currency if quote_currency else len(symbol_parts[1]) > 0)) -def market_is_active(market): +def market_is_active(market: Dict) -> bool: """ Return True if the market is active. """ diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index aac501054..34dbca38e 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -265,7 +265,7 @@ class FreqtradeBot: return used_rate - def get_trade_stake_amount(self, pair) -> float: + def get_trade_stake_amount(self, pair: str) -> float: """ Calculate stake amount for the trade :return: float: Stake amount @@ -539,7 +539,7 @@ class FreqtradeBot: return True - def _notify_buy(self, trade: Trade, order_type: str): + def _notify_buy(self, trade: Trade, order_type: str) -> None: """ Sends rpc notification when a buy occured. """ @@ -735,7 +735,7 @@ class FreqtradeBot: return False - def handle_trailing_stoploss_on_exchange(self, trade: Trade, order): + def handle_trailing_stoploss_on_exchange(self, trade: Trade, order: dict) -> None: """ Check to see if stoploss on exchange should be updated in case of trailing stoploss on exchange @@ -758,10 +758,8 @@ class FreqtradeBot: f"for pair {trade.pair}") # Create new stoploss order - if self.create_stoploss_order(trade=trade, stop_price=trade.stop_loss, - rate=trade.stop_loss): - return False - else: + if not self.create_stoploss_order(trade=trade, stop_price=trade.stop_loss, + rate=trade.stop_loss): logger.warning(f"Could not create trailing stoploss order " f"for pair {trade.pair}.") @@ -990,7 +988,7 @@ class FreqtradeBot: self._notify_sell(trade, order_type) - def _notify_sell(self, trade: Trade, order_type: str): + def _notify_sell(self, trade: Trade, order_type: str) -> None: """ Sends rpc notification when a sell occured. """ @@ -1031,7 +1029,7 @@ class FreqtradeBot: # Common update trade state methods # - def update_trade_state(self, trade, action_order: dict = None): + def update_trade_state(self, trade: Trade, action_order: dict = None) -> None: """ Checks trades with open orders and updates the amount if necessary """ diff --git a/freqtrade/misc.py b/freqtrade/misc.py index bcba78cf0..2a981c249 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -6,6 +6,7 @@ import logging import re from datetime import datetime from pathlib import Path +from typing import Any from typing.io import IO import numpy as np @@ -40,7 +41,7 @@ def datesarray_to_datetimearray(dates: np.ndarray) -> np.ndarray: return dates.dt.to_pydatetime() -def file_dump_json(filename: Path, data, is_zip=False) -> None: +def file_dump_json(filename: Path, data: Any, is_zip: bool = False) -> None: """ Dump JSON data into a file :param filename: file to create @@ -61,7 +62,7 @@ def file_dump_json(filename: Path, data, is_zip=False) -> None: logger.debug(f'done json to "{filename}"') -def json_load(datafile: IO): +def json_load(datafile: IO) -> Any: """ load data with rapidjson Use this to have a consistent experience, @@ -125,11 +126,11 @@ def round_dict(d, n): return {k: (round(v, n) if isinstance(v, float) else v) for k, v in d.items()} -def plural(num, singular: str, plural: str = None) -> str: +def plural(num: float, singular: str, plural: str = None) -> str: return singular if (num == 1 or num == -1) else plural or singular + 's' -def render_template(templatefile: str, arguments: dict = {}): +def render_template(templatefile: str, arguments: dict = {}) -> str: from jinja2 import Environment, PackageLoader, select_autoescape diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index cdf74f65f..ef493e240 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -9,6 +9,7 @@ from datetime import datetime, timedelta from pathlib import Path from typing import Any, Dict, List, NamedTuple, Optional +import arrow from pandas import DataFrame from freqtrade.configuration import (TimeRange, remove_credentials, @@ -24,7 +25,7 @@ from freqtrade.optimize.optimize_reports import ( from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.state import RunMode -from freqtrade.strategy.interface import IStrategy, SellType +from freqtrade.strategy.interface import IStrategy, SellCheckTuple, SellType logger = logging.getLogger(__name__) @@ -148,7 +149,7 @@ class Backtesting: logger.info(f'Dumping backtest results to {recordfilename}') file_dump_json(recordfilename, records) - def _get_ticker_list(self, processed) -> Dict[str, DataFrame]: + def _get_ticker_list(self, processed: Dict) -> Dict[str, DataFrame]: """ Helper function to convert a processed tickerlist into a list for performance reasons. @@ -175,7 +176,8 @@ class Backtesting: ticker[pair] = [x for x in ticker_data.itertuples()] return ticker - def _get_close_rate(self, sell_row, trade: Trade, sell, trade_dur) -> float: + def _get_close_rate(self, sell_row, trade: Trade, sell: SellCheckTuple, + trade_dur: int) -> float: """ Get close rate for backtesting result """ @@ -280,7 +282,7 @@ class Backtesting: return None def backtest(self, processed: Dict, stake_amount: float, - start_date, end_date, + start_date: arrow.Arrow, end_date: arrow.Arrow, max_open_trades: int = 0, position_stacking: bool = False) -> DataFrame: """ Implement backtesting functionality diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 525f491f3..841f8b6db 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -117,11 +117,11 @@ class Hyperopt: self.print_json = self.config.get('print_json', False) @staticmethod - def get_lock_filename(config) -> str: + def get_lock_filename(config: Dict[str, Any]) -> str: return str(config['user_data_dir'] / 'hyperopt.lock') - def clean_hyperopt(self): + def clean_hyperopt(self) -> None: """ Remove hyperopt pickle files to restart hyperopt. """ @@ -158,7 +158,7 @@ class Hyperopt: f"saved to '{self.trials_file}'.") @staticmethod - def _read_trials(trials_file) -> List: + def _read_trials(trials_file: Path) -> List: """ Read hyperopt trials file """ @@ -189,7 +189,7 @@ class Hyperopt: return result @staticmethod - def print_epoch_details(results, total_epochs, print_json: bool, + def print_epoch_details(results, total_epochs: int, print_json: bool, no_header: bool = False, header_str: str = None) -> None: """ Display details of the hyperopt result @@ -218,7 +218,7 @@ class Hyperopt: Hyperopt._params_pretty_print(params, 'trailing', "Trailing stop:") @staticmethod - def _params_update_for_json(result_dict, params, space: str): + def _params_update_for_json(result_dict, params, space: str) -> None: if space in params: space_params = Hyperopt._space_params(params, space) if space in ['buy', 'sell']: @@ -235,7 +235,7 @@ class Hyperopt: result_dict.update(space_params) @staticmethod - def _params_pretty_print(params, space: str, header: str): + def _params_pretty_print(params, space: str, header: str) -> None: if space in params: space_params = Hyperopt._space_params(params, space, 5) if space == 'stoploss': @@ -251,7 +251,7 @@ class Hyperopt: return round_dict(d, r) if r else d @staticmethod - def is_best_loss(results, current_best_loss) -> bool: + def is_best_loss(results, current_best_loss: float) -> bool: return results['loss'] < current_best_loss def print_results(self, results) -> None: @@ -438,7 +438,7 @@ class Hyperopt: random_state=self.random_state, ) - def fix_optimizer_models_list(self): + def fix_optimizer_models_list(self) -> None: """ WORKAROUND: Since skopt is not actively supported, this resolves problems with skopt memory usage, see also: https://github.com/scikit-optimize/scikit-optimize/pull/746 @@ -460,7 +460,7 @@ class Hyperopt: wrap_non_picklable_objects(self.generate_optimizer))(v, i) for v in asked) @staticmethod - def load_previous_results(trials_file) -> List: + def load_previous_results(trials_file: Path) -> List: """ Load data for epochs from the file if we have one """ diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index d722e70f5..1ad4da523 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -7,7 +7,7 @@ Provides lists as configured in config.json import logging from abc import ABC, abstractmethod, abstractproperty from copy import deepcopy -from typing import Dict, List +from typing import Any, Dict, List from freqtrade.exchange import market_is_active @@ -16,7 +16,8 @@ logger = logging.getLogger(__name__) class IPairList(ABC): - def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict, + def __init__(self, exchange, pairlistmanager, + config: Dict[str, Any], pairlistconfig: Dict[str, Any], pairlist_pos: int) -> None: """ :param exchange: Exchange instance diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 5d364795d..f16458ca5 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -48,10 +48,10 @@ class PrecisionFilter(IPairList): """ Filters and sorts pairlists and assigns and returns them again. """ - stoploss = None - if self._config.get('stoploss') is not None: + stoploss = self._config.get('stoploss') + if stoploss is not None: # Precalculate sanitized stoploss value to avoid recalculation for every pair - stoploss = 1 - abs(self._config.get('stoploss')) + stoploss = 1 - abs(stoploss) # Copy list since we're modifying this list for p in deepcopy(pairlist): ticker = tickers.get(p) diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index b3546ebd9..dc02ae251 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -1,6 +1,6 @@ import logging from copy import deepcopy -from typing import Dict, List +from typing import Any, Dict, List from freqtrade.pairlist.IPairList import IPairList @@ -9,7 +9,8 @@ logger = logging.getLogger(__name__) class PriceFilter(IPairList): - def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict, + def __init__(self, exchange, pairlistmanager, + config: Dict[str, Any], pairlistconfig: Dict[str, Any], pairlist_pos: int) -> None: super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 4ac9935ba..3b28cb7d1 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -6,7 +6,7 @@ Provides lists as configured in config.json """ import logging from datetime import datetime -from typing import Dict, List +from typing import Any, Dict, List from freqtrade.exceptions import OperationalException from freqtrade.pairlist.IPairList import IPairList @@ -18,7 +18,7 @@ SORT_VALUES = ['askVolume', 'bidVolume', 'quoteVolume'] class VolumePairList(IPairList): - def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict, + def __init__(self, exchange, pairlistmanager, config: Dict[str, Any], pairlistconfig: dict, pairlist_pos: int) -> None: super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) @@ -77,7 +77,8 @@ class VolumePairList(IPairList): else: return pairlist - def _gen_pair_whitelist(self, pairlist, tickers, base_currency: str, key: str) -> List[str]: + def _gen_pair_whitelist(self, pairlist: List[str], tickers: Dict, + base_currency: str, key: str) -> List[str]: """ Updates the whitelist with with a dynamically generated list :param base_currency: base currency as str diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 75116f1e3..5b0046091 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -64,11 +64,11 @@ def init(db_url: str, clean_open_orders: bool = False) -> None: clean_dry_run_db() -def has_column(columns, searchname: str) -> bool: +def has_column(columns: List, searchname: str) -> bool: return len(list(filter(lambda x: x["name"] == searchname, columns))) == 1 -def get_column_def(columns, column: str, default: str) -> str: +def get_column_def(columns: List, column: str, default: str) -> str: return default if not has_column(columns, column) else column @@ -246,14 +246,15 @@ class Trade(_DECL_BASE): if self.initial_stop_loss_pct else None), } - def adjust_min_max_rates(self, current_price: float): + def adjust_min_max_rates(self, current_price: float) -> None: """ Adjust the max_rate and min_rate. """ self.max_rate = max(current_price, self.max_rate or self.open_rate) self.min_rate = min(current_price, self.min_rate or self.open_rate) - def adjust_stop_loss(self, current_price: float, stoploss: float, initial: bool = False): + def adjust_stop_loss(self, current_price: float, stoploss: float, + initial: bool = False) -> None: """ This adjusts the stop loss to it's most recently observed setting :param current_price: Current rate the asset is traded diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 5301d762d..943133ed0 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -370,7 +370,7 @@ def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame], return fig -def generate_plot_filename(pair, timeframe) -> str: +def generate_plot_filename(pair: str, timeframe: str) -> str: """ Generate filenames per pair/timeframe to be used for storing plots """ diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 5a844097c..3aec5f9e9 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -25,7 +25,7 @@ class IResolver: initial_search_path: Path @classmethod - def build_search_paths(cls, config, user_subdir: Optional[str] = None, + def build_search_paths(cls, config: Dict[str, Any], user_subdir: Optional[str] = None, extra_dir: Optional[str] = None) -> List[Path]: abs_paths: List[Path] = [cls.initial_search_path] diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 9e64f38df..015ba24d9 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -9,7 +9,7 @@ from base64 import urlsafe_b64decode from collections import OrderedDict from inspect import getfullargspec from pathlib import Path -from typing import Dict, Optional +from typing import Any, Dict, Optional from freqtrade.constants import (REQUIRED_ORDERTIF, REQUIRED_ORDERTYPES, USERPATH_STRATEGY) @@ -30,7 +30,7 @@ class StrategyResolver(IResolver): initial_search_path = Path(__file__).parent.parent.joinpath('strategy').resolve() @staticmethod - def load_strategy(config: Optional[Dict] = None) -> IStrategy: + def load_strategy(config: Dict[str, Any] = None) -> IStrategy: """ Load the custom class from config parameter :param config: configuration dictionary or None @@ -96,7 +96,8 @@ class StrategyResolver(IResolver): return strategy @staticmethod - def _override_attribute_helper(strategy, config, attribute: str, default): + def _override_attribute_helper(strategy, config: Dict[str, Any], + attribute: str, default: Any): """ Override attributes in the strategy. Prevalence: diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 41097c211..7f5cfc101 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -139,7 +139,8 @@ class RPC: results.append(trade_dict) return results - def _rpc_status_table(self, stake_currency, fiat_display_currency: str) -> Tuple[List, List]: + def _rpc_status_table(self, stake_currency: str, + fiat_display_currency: str) -> Tuple[List, List]: trades = Trade.get_open_trades() if not trades: raise RPCException('no active trade') @@ -385,7 +386,7 @@ class RPC: return {'status': 'No more buy will occur from now. Run /reload_conf to reset.'} - def _rpc_forcesell(self, trade_id) -> Dict[str, str]: + def _rpc_forcesell(self, trade_id: str) -> Dict[str, str]: """ Handler for forcesell . Sells the given trade at current price diff --git a/freqtrade/rpc/rpc_manager.py b/freqtrade/rpc/rpc_manager.py index f687fe4d1..670275991 100644 --- a/freqtrade/rpc/rpc_manager.py +++ b/freqtrade/rpc/rpc_manager.py @@ -61,7 +61,7 @@ class RPCManager: except NotImplementedError: logger.error(f"Message type {msg['type']} not implemented by handler {mod.name}.") - def startup_messages(self, config, pairlist) -> None: + def startup_messages(self, config: Dict[str, Any], pairlist) -> None: if config['dry_run']: self.send_msg({ 'type': RPCMessageType.WARNING_NOTIFICATION, diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 27bc8280e..6e15c5183 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -180,7 +180,7 @@ class IStrategy(ABC): if pair not in self._pair_locked_until or self._pair_locked_until[pair] < until: self._pair_locked_until[pair] = until - def unlock_pair(self, pair) -> None: + def unlock_pair(self, pair: str) -> None: """ Unlocks a pair previously locked using lock_pair. Not used by freqtrade itself, but intended to be used if users lock pairs diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index c52767162..dd5e34fe6 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -30,24 +30,21 @@ class Wallets: self._last_wallet_refresh = 0 self.update() - def get_free(self, currency) -> float: - + def get_free(self, currency: str) -> float: balance = self._wallets.get(currency) if balance and balance.free: return balance.free else: return 0 - def get_used(self, currency) -> float: - + def get_used(self, currency: str) -> float: balance = self._wallets.get(currency) if balance and balance.used: return balance.used else: return 0 - def get_total(self, currency) -> float: - + def get_total(self, currency: str) -> float: balance = self._wallets.get(currency) if balance and balance.total: return balance.total @@ -87,7 +84,6 @@ class Wallets: self._wallets = _wallets def _update_live(self) -> None: - balances = self._exchange.get_balances() for currency in balances: diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 6da04b4a2..64cc97026 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -22,7 +22,7 @@ class Worker: Freqtradebot worker class """ - def __init__(self, args: Dict[str, Any], config=None) -> None: + def __init__(self, args: Dict[str, Any], config: Dict[str, Any] = None) -> None: """ Init all variables and objects the bot needs to work """ From 3499f1b85c883a4ff0298d8d83de158a43d158ec Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sun, 2 Feb 2020 08:47:33 +0100 Subject: [PATCH 1603/3421] better readability and more consistent with daily sharpe loss method --- freqtrade/optimize/hyperopt_loss_sharpe.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/hyperopt_loss_sharpe.py b/freqtrade/optimize/hyperopt_loss_sharpe.py index 5631a75de..a4ec6f90a 100644 --- a/freqtrade/optimize/hyperopt_loss_sharpe.py +++ b/freqtrade/optimize/hyperopt_loss_sharpe.py @@ -28,18 +28,19 @@ class SharpeHyperOptLoss(IHyperOptLoss): Uses Sharpe Ratio calculation. """ - total_profit = results.profit_percent + total_profit = results["profit_percent"] days_period = (max_date - min_date).days # adding slippage of 0.1% per trade total_profit = total_profit - 0.0005 - expected_yearly_return = total_profit.sum() / days_period + expected_returns_mean = total_profit.sum() / days_period + up_stdev = np.std(total_profit) if (np.std(total_profit) != 0.): - sharp_ratio = expected_yearly_return / np.std(total_profit) * np.sqrt(365) + sharp_ratio = expected_returns_mean / up_stdev * np.sqrt(365) else: # Define high (negative) sharpe ratio to be clear that this is NOT optimal. sharp_ratio = -20. - # print(expected_yearly_return, np.std(total_profit), sharp_ratio) + # print(expected_returns_mean, up_stdev, sharp_ratio) return -sharp_ratio From d64751687b50e97d3b31d1262f7aeef49fc7aab7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 2 Feb 2020 10:47:44 +0100 Subject: [PATCH 1604/3421] Fix link and lowercase variable --- docs/exchanges.md | 2 +- freqtrade/exchange/binance.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/exchanges.md b/docs/exchanges.md index 18a9f1cba..3c861ce44 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -23,7 +23,7 @@ Binance has been split into 3, and users must use the correct ccxt exchange ID f ## Kraken !!! Tip "Stoploss on Exchange" - Kraken supports `stoploss_on_exchange` and uses stop-loss-market orders. It provides great advantages, so we recommend to benefit from it, however since the resulting order is a stoploss-market order, sell-rates are not guaranteed, which makes this feature less secure than on other exchanges. This limitation is based on kraken's policy [source](https://blog.kraken.com/post/1494/kraken-enables-advanced-orders-and-adds-10-currency-pairs/) and [source2](https://blog.kraken.com/post/1494/kraken-enables-advanced-orders-and-adds-10-currency-pairs/) - which has stoploss-limit orders disabled. + Kraken supports `stoploss_on_exchange` and uses stop-loss-market orders. It provides great advantages, so we recommend to benefit from it, however since the resulting order is a stoploss-market order, sell-rates are not guaranteed, which makes this feature less secure than on other exchanges. This limitation is based on kraken's policy [source](https://blog.kraken.com/post/1234/announcement-delisting-pairs-and-temporary-suspension-of-advanced-order-types/) and [source2](https://blog.kraken.com/post/1494/kraken-enables-advanced-orders-and-adds-10-currency-pairs/) - which has stoploss-limit orders disabled. ### Historic Kraken data diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 45102359d..875628af9 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -46,8 +46,8 @@ class Binance(Exchange): It may work with a limited number of other exchanges, but this has not been tested yet. """ # Limit price threshold: As limit price should always be below stop-price - LIMIT_PRICE_PCT = order_types.get('stoploss_on_exchange_limit_ratio', 0.99) - rate = stop_price * LIMIT_PRICE_PCT + limit_price_pct = order_types.get('stoploss_on_exchange_limit_ratio', 0.99) + rate = stop_price * limit_price_pct ordertype = "stop_loss_limit" From aeabe1800bd2dbe924f454a0a5121bfb81987b9b Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sun, 2 Feb 2020 10:49:00 +0100 Subject: [PATCH 1605/3421] modified two lines from logger.info to logger.debug cause they're too spammy --- freqtrade/freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index aac501054..7d13eacd6 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -627,7 +627,7 @@ class FreqtradeBot: self.dataprovider.ohlcv(trade.pair, self.strategy.ticker_interval)) if config_ask_strategy.get('use_order_book', False): - logger.info('Using order book for selling...') + logger.debug(f'Using order book for selling {trade.pair}...') # logger.debug('Order book %s',orderBook) order_book_min = config_ask_strategy.get('order_book_min', 1) order_book_max = config_ask_strategy.get('order_book_max', 1) @@ -636,7 +636,7 @@ class FreqtradeBot: for i in range(order_book_min, order_book_max + 1): order_book_rate = order_book['asks'][i - 1][0] - logger.info(' order book asks top %s: %0.8f', i, order_book_rate) + logger.debug(' order book asks top %s: %0.8f', i, order_book_rate) sell_rate = order_book_rate if self._check_and_execute_sell(trade, sell_rate, buy, sell): From a5e670b4023c2ae50a3441714d607f84ce8b0010 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 2 Feb 2020 18:07:21 +0300 Subject: [PATCH 1606/3421] Add USERPATH_NOTEBOOKS --- freqtrade/constants.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 53bc4af53..23a60ed0e 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -23,6 +23,7 @@ MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons USERPATH_HYPEROPTS = 'hyperopts' USERPATH_STRATEGY = 'strategies' +USERPATH_NOTEBOOKS = 'notebooks' # Soure files with destination directories within user-directory USER_DATA_FILES = { @@ -30,7 +31,7 @@ USER_DATA_FILES = { 'sample_hyperopt_advanced.py': USERPATH_HYPEROPTS, 'sample_hyperopt_loss.py': USERPATH_HYPEROPTS, 'sample_hyperopt.py': USERPATH_HYPEROPTS, - 'strategy_analysis_example.ipynb': 'notebooks', + 'strategy_analysis_example.ipynb': USERPATH_NOTEBOOKS, } SUPPORTED_FIAT = [ From 3fe39a3e1b3e494cd8ebaff1718e809845a324de Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 2 Feb 2020 18:12:23 +0300 Subject: [PATCH 1607/3421] Rename constant --- freqtrade/commands/deploy_commands.py | 4 ++-- freqtrade/commands/list_commands.py | 4 ++-- freqtrade/constants.py | 4 ++-- freqtrade/resolvers/strategy_resolver.py | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index 99ae63244..e0935f0e5 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -6,7 +6,7 @@ from typing import Any, Dict from freqtrade.configuration import setup_utils_configuration from freqtrade.configuration.directory_operations import (copy_sample_files, create_userdata_dir) -from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGY +from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGIES from freqtrade.exceptions import OperationalException from freqtrade.misc import render_template from freqtrade.state import RunMode @@ -57,7 +57,7 @@ def start_new_strategy(args: Dict[str, Any]) -> None: if args["strategy"] == "DefaultStrategy": raise OperationalException("DefaultStrategy is not allowed as name.") - new_path = config['user_data_dir'] / USERPATH_STRATEGY / (args["strategy"] + ".py") + new_path = config['user_data_dir'] / USERPATH_STRATEGIES / (args["strategy"] + ".py") if new_path.exists(): raise OperationalException(f"`{new_path}` already exists. " diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index 022822782..9fe66783d 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -9,7 +9,7 @@ import rapidjson from tabulate import tabulate from freqtrade.configuration import setup_utils_configuration -from freqtrade.constants import USERPATH_STRATEGY +from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGIES from freqtrade.exceptions import OperationalException from freqtrade.exchange import (available_exchanges, ccxt_exchanges, market_is_active, symbol_is_pair) @@ -42,7 +42,7 @@ def start_list_strategies(args: Dict[str, Any]) -> None: """ config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - directory = Path(config.get('strategy_path', config['user_data_dir'] / USERPATH_STRATEGY)) + directory = Path(config.get('strategy_path', config['user_data_dir'] / USERPATH_STRATEGIES)) strategies = StrategyResolver.search_all_objects(directory) # Sort alphabetically strategies = sorted(strategies, key=lambda x: x['name']) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 23a60ed0e..efdd6cc0e 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -22,12 +22,12 @@ DRY_RUN_WALLET = 1000 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons USERPATH_HYPEROPTS = 'hyperopts' -USERPATH_STRATEGY = 'strategies' +USERPATH_STRATEGIES = 'strategies' USERPATH_NOTEBOOKS = 'notebooks' # Soure files with destination directories within user-directory USER_DATA_FILES = { - 'sample_strategy.py': USERPATH_STRATEGY, + 'sample_strategy.py': USERPATH_STRATEGIES, 'sample_hyperopt_advanced.py': USERPATH_HYPEROPTS, 'sample_hyperopt_loss.py': USERPATH_HYPEROPTS, 'sample_hyperopt.py': USERPATH_HYPEROPTS, diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 9e64f38df..7f28bd2e6 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -12,7 +12,7 @@ from pathlib import Path from typing import Dict, Optional from freqtrade.constants import (REQUIRED_ORDERTIF, REQUIRED_ORDERTYPES, - USERPATH_STRATEGY) + USERPATH_STRATEGIES) from freqtrade.exceptions import OperationalException from freqtrade.resolvers import IResolver from freqtrade.strategy.interface import IStrategy @@ -26,7 +26,7 @@ class StrategyResolver(IResolver): """ object_type = IStrategy object_type_str = "Strategy" - user_subdir = USERPATH_STRATEGY + user_subdir = USERPATH_STRATEGIES initial_search_path = Path(__file__).parent.parent.joinpath('strategy').resolve() @staticmethod @@ -140,7 +140,7 @@ class StrategyResolver(IResolver): """ abs_paths = StrategyResolver.build_search_paths(config, - user_subdir=USERPATH_STRATEGY, + user_subdir=USERPATH_STRATEGIES, extra_dir=extra_dir) if ":" in strategy_name: From 857eb5ff6994cd3a5c8765cf6d43b5b01be1dc3c Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 2 Feb 2020 18:48:29 +0300 Subject: [PATCH 1608/3421] Add list-hyperopts command --- freqtrade/commands/__init__.py | 1 + freqtrade/commands/arguments.py | 18 +++++++++++++++--- freqtrade/commands/list_commands.py | 22 +++++++++++++++++++++- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index 990c1107a..17723715e 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -14,6 +14,7 @@ from freqtrade.commands.deploy_commands import (start_create_userdir, from freqtrade.commands.hyperopt_commands import (start_hyperopt_list, start_hyperopt_show) from freqtrade.commands.list_commands import (start_list_exchanges, + start_list_hyperopts, start_list_markets, start_list_strategies, start_list_timeframes) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 724814554..0995c89c4 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -32,6 +32,8 @@ ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"] ARGS_LIST_STRATEGIES = ["strategy_path", "print_one_column"] +ARGS_LIST_HYPEROPTS = ["hyperopt_path", "print_one_column"] + ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"] ARGS_LIST_TIMEFRAMES = ["exchange", "print_one_column"] @@ -132,9 +134,10 @@ class Arguments: from freqtrade.commands import (start_create_userdir, start_download_data, start_hyperopt_list, start_hyperopt_show, - start_list_exchanges, start_list_markets, - start_list_strategies, start_new_hyperopt, - start_new_strategy, start_list_timeframes, + start_list_exchanges, start_list_hyperopts, + start_list_markets, start_list_strategies, + start_list_timeframes, + start_new_hyperopt, start_new_strategy, start_plot_dataframe, start_plot_profit, start_backtesting, start_hyperopt, start_edge, start_test_pairlist, start_trading) @@ -198,6 +201,15 @@ class Arguments: list_strategies_cmd.set_defaults(func=start_list_strategies) self._build_args(optionlist=ARGS_LIST_STRATEGIES, parser=list_strategies_cmd) + # Add list-hyperopts subcommand + list_hyperopts_cmd = subparsers.add_parser( + 'list-hyperopts', + help='Print available hyperopt classes.', + parents=[_common_parser], + ) + list_hyperopts_cmd.set_defaults(func=start_list_hyperopts) + self._build_args(optionlist=ARGS_LIST_HYPEROPTS, parser=list_hyperopts_cmd) + # Add list-exchanges subcommand list_exchanges_cmd = subparsers.add_parser( 'list-exchanges', diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index 9fe66783d..f2b6bf995 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -38,7 +38,7 @@ def start_list_exchanges(args: Dict[str, Any]) -> None: def start_list_strategies(args: Dict[str, Any]) -> None: """ - Print Strategies available in a directory + Print files with Strategy custom classes available in the directory """ config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) @@ -54,6 +54,26 @@ def start_list_strategies(args: Dict[str, Any]) -> None: print(tabulate(strats_to_print, headers='keys', tablefmt='pipe')) +def start_list_hyperopts(args: Dict[str, Any]) -> None: + """ + Print files with HyperOpt custom classes available in the directory + """ + from freqtrade.resolvers.hyperopt_resolver import HyperOptResolver + + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + + directory = Path(config.get('hyperopt_path', config['user_data_dir'] / USERPATH_HYPEROPTS)) + hyperopts = HyperOptResolver.search_all_objects(directory) + # Sort alphabetically + hyperopts = sorted(hyperopts, key=lambda x: x['name']) + hyperopts_to_print = [{'name': s['name'], 'location': s['location'].name} for s in hyperopts] + + if args['print_one_column']: + print('\n'.join([s['name'] for s in hyperopts])) + else: + print(tabulate(hyperopts_to_print, headers='keys', tablefmt='pipe')) + + def start_list_timeframes(args: Dict[str, Any]) -> None: """ Print ticker intervals (timeframes) available on Exchange From 505648fb661ea792d555ece1355e241079e9af82 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 2 Feb 2020 18:56:54 +0300 Subject: [PATCH 1609/3421] Adjust docs --- docs/utils.md | 51 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index 18deeac54..b0559f9cc 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -108,9 +108,9 @@ With custom user directory freqtrade new-hyperopt --userdir ~/.freqtrade/ --hyperopt AwesomeHyperopt ``` -## List Strategies +## List Strategies and List Hyperopts -Use the `list-strategies` subcommand to see all strategies in one particular directory. +Use the `list-strategies` subcommand to see all strategies in one particular directory and the `list-hyperopts` subcommand to list custom Hyperopts. ``` freqtrade list-strategies --help @@ -133,22 +133,63 @@ Common arguments: --userdir PATH, --user-data-dir PATH Path to userdata directory. ``` +``` +freqtrade list-hyperopts --help +usage: freqtrade list-hyperopts [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] + [--hyperopt-path PATH] [-1] + +optional arguments: + -h, --help show this help message and exit + --hyperopt-path PATH Specify additional lookup path for Hyperopt and + Hyperopt Loss functions. + -1, --one-column Print output in one column. + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). + Multiple --config options may be used. Can be set to + `-` to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. +``` !!! Warning - Using this command will try to load all python files from a directory. This can be a security risk if untrusted files reside in this directory, since all module-level code is executed. + Using these commands will try to load all python files from a directory. This can be a security risk if untrusted files reside in this directory, since all module-level code is executed. -Example: search default strategy directory within userdir +Example: Search default strategies and hyperopts directories (within the default userdir). + +``` bash +freqtrade list-strategies +freqtrade list-hyperopts +``` + +Example: Search strategies and hyperopts directory within the userdir. ``` bash freqtrade list-strategies --userdir ~/.freqtrade/ +freqtrade list-hyperopts --userdir ~/.freqtrade/ ``` -Example: search dedicated strategy path +Example: Search dedicated strategy path. ``` bash freqtrade list-strategies --strategy-path ~/.freqtrade/strategies/ ``` +Example: Search dedicated hyperopt path. + +``` bash +freqtrade list-hyperopt --hyperopt-path ~/.freqtrade/hyperopts/ +``` + ## List Exchanges Use the `list-exchanges` subcommand to see the exchanges available for the bot. From cd0534efcc1a0fa7d748508d22fff7972b643be2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 2 Feb 2020 19:13:17 +0300 Subject: [PATCH 1610/3421] Add test --- tests/commands/test_commands.py | 36 ++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 65d7f6eaf..c59799190 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -7,7 +7,8 @@ import pytest from freqtrade.commands import (start_create_userdir, start_download_data, start_hyperopt_list, start_hyperopt_show, start_list_exchanges, start_list_markets, - start_list_strategies, start_list_timeframes, + start_list_hyperopts, start_list_strategies, + start_list_timeframes, start_new_hyperopt, start_new_strategy, start_test_pairlist, start_trading) from freqtrade.configuration import setup_utils_configuration @@ -665,6 +666,39 @@ def test_start_list_strategies(mocker, caplog, capsys): assert "DefaultStrategy" in captured.out +def test_start_list_hyperopts(mocker, caplog, capsys): + + args = [ + "list-hyperopts", + "--hyperopt-path", + str(Path(__file__).parent.parent / "optimize"), + "-1" + ] + pargs = get_args(args) + # pargs['config'] = None + start_list_hyperopts(pargs) + captured = capsys.readouterr() + assert "TestHyperoptLegacy" not in captured.out + assert "legacy_hyperopt.py" not in captured.out + assert "DefaultHyperOpt" in captured.out + assert "test_hyperopt.py" not in captured.out + + # Test regular output + args = [ + "list-hyperopts", + "--hyperopt-path", + str(Path(__file__).parent.parent / "optimize"), + ] + pargs = get_args(args) + # pargs['config'] = None + start_list_hyperopts(pargs) + captured = capsys.readouterr() + assert "TestHyperoptLegacy" not in captured.out + assert "legacy_hyperopt.py" not in captured.out + assert "DefaultHyperOpt" in captured.out + assert "test_hyperopt.py" in captured.out + + def test_start_test_pairlist(mocker, caplog, tickers, default_conf, capsys): patch_exchange(mocker, mock_markets=True) mocker.patch.multiple('freqtrade.exchange.Exchange', From d12e03e50d30c13f57e5fa661ebf78d388051310 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 2 Feb 2020 20:01:25 +0300 Subject: [PATCH 1611/3421] Fix test inconsistency in test_freqtradebot.py --- tests/test_freqtradebot.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5f16894ab..f334e4eb0 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1145,11 +1145,11 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, # Should not create new order trade.stoploss_order_id = None trade.is_open = False - stoploss_limit.reset_mock() + stoploss.reset_mock() mocker.patch('freqtrade.exchange.Exchange.get_order') - mocker.patch('freqtrade.exchange.Exchange.stoploss_limit', stoploss_limit) + mocker.patch('freqtrade.exchange.Exchange.stoploss', stoploss) assert freqtrade.handle_stoploss_on_exchange(trade) is False - assert stoploss_limit.call_count == 0 + assert stoploss.call_count == 0 def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, From 84156879f6e96e18e6e60589bc2f45d2bb989261 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 2 Feb 2020 20:11:42 +0300 Subject: [PATCH 1612/3421] Fix NO_CONF_REQUIRED for list-hyperopts --- freqtrade/commands/arguments.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 0995c89c4..1931a51be 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -66,8 +66,8 @@ ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperop "print_json", "hyperopt_show_no_header"] NO_CONF_REQURIED = ["download-data", "list-timeframes", "list-markets", "list-pairs", - "list-strategies", "hyperopt-list", "hyperopt-show", "plot-dataframe", - "plot-profit"] + "list-strategies", "list-hyperopts", "hyperopt-list", "hyperopt-show", + "plot-dataframe", "plot-profit"] NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-hyperopt", "new-strategy"] From 2b69e7830d89d9b8ae164511c5b14923ce99080a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 2 Feb 2020 20:02:38 +0100 Subject: [PATCH 1613/3421] Fix failing CI test --- tests/test_freqtradebot.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5f16894ab..f334e4eb0 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1145,11 +1145,11 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, # Should not create new order trade.stoploss_order_id = None trade.is_open = False - stoploss_limit.reset_mock() + stoploss.reset_mock() mocker.patch('freqtrade.exchange.Exchange.get_order') - mocker.patch('freqtrade.exchange.Exchange.stoploss_limit', stoploss_limit) + mocker.patch('freqtrade.exchange.Exchange.stoploss', stoploss) assert freqtrade.handle_stoploss_on_exchange(trade) is False - assert stoploss_limit.call_count == 0 + assert stoploss.call_count == 0 def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, From 537596001e5c4ff030855327095992c48d205724 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 3 Feb 2020 06:20:01 +0300 Subject: [PATCH 1614/3421] Allow derived strategies --- freqtrade/resolvers/iresolver.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 5a844097c..53d08d387 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -61,7 +61,8 @@ class IResolver: valid_objects_gen = ( obj for name, obj in inspect.getmembers(module, inspect.isclass) - if (object_name is None or object_name == name) and cls.object_type in obj.__bases__ + if ((object_name is None or object_name == name) and + issubclass(obj, cls.object_type) and obj is not cls.object_type) ) return valid_objects_gen From c8960ab62893dfcbc15ab6d5cab82ac179908c3d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 3 Feb 2020 06:50:07 +0100 Subject: [PATCH 1615/3421] Only run coveralls once --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c838baced..8dd61a602 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,7 +68,7 @@ jobs: pytest --random-order --cov=freqtrade --cov-config=.coveragerc - name: Coveralls - if: startsWith(matrix.os, 'ubuntu') + if: (startsWith(matrix.os, 'ubuntu') && matrix.os == '3.8') env: # Coveralls token. Not used as secret due to github not providing secrets to forked repositories COVERALLS_REPO_TOKEN: 6D1m0xupS3FgutfuGao8keFf9Hc0FpIXu From d0506a643571e74a99a309028403c27bfdf426a3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 3 Feb 2020 07:01:07 +0100 Subject: [PATCH 1616/3421] Use correct matrix variable --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8dd61a602..05d151a88 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,7 +68,7 @@ jobs: pytest --random-order --cov=freqtrade --cov-config=.coveragerc - name: Coveralls - if: (startsWith(matrix.os, 'ubuntu') && matrix.os == '3.8') + if: (startsWith(matrix.os, 'ubuntu') && matrix.python-version == '3.8') env: # Coveralls token. Not used as secret due to github not providing secrets to forked repositories COVERALLS_REPO_TOKEN: 6D1m0xupS3FgutfuGao8keFf9Hc0FpIXu From df249c7c03051ff499e8688e6044990d1100d11c Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 3 Feb 2020 09:37:50 +0300 Subject: [PATCH 1617/3421] Remove unclear comment --- freqtrade/exchange/exchange.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index f7bfb0ee1..ede7156a1 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -25,8 +25,6 @@ from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async from freqtrade.misc import deep_merge_dicts -# Should probably use typing.Literal when we switch to python 3.8+ -# CcxtModuleType = Literal[ccxt, ccxt_async] CcxtModuleType = Any From 7b8e6653235d7607bef3e5fb71f08a57bded9571 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2020 08:01:28 +0000 Subject: [PATCH 1618/3421] Bump jinja2 from 2.10.3 to 2.11.1 Bumps [jinja2](https://github.com/pallets/jinja) from 2.10.3 to 2.11.1. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/master/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/2.10.3...2.11.1) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index e4fe54721..48ba794cb 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -12,7 +12,7 @@ jsonschema==3.2.0 TA-Lib==0.4.17 tabulate==0.8.6 coinmarketcap==5.0.3 -jinja2==2.10.3 +jinja2==2.11.1 # find first, C search in arrays py_find_1st==1.1.4 From bc2ae3e88de22634a3c66b9d9f41349d1ef826c0 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2020 08:02:21 +0000 Subject: [PATCH 1619/3421] Bump pytest from 5.3.4 to 5.3.5 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.3.4 to 5.3.5. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.3.4...5.3.5) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 6330d93e5..268c5f777 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.0.0 mypy==0.761 -pytest==5.3.4 +pytest==5.3.5 pytest-asyncio==0.10.0 pytest-cov==2.8.1 pytest-mock==2.0.0 From 401748e9a73757bdf6c04c382b656d901474dfc5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2020 08:02:54 +0000 Subject: [PATCH 1620/3421] Bump ccxt from 1.21.91 to 1.22.30 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.21.91 to 1.22.30. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.21.91...1.22.30) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index e4fe54721..5f6557161 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.21.91 +ccxt==1.22.30 SQLAlchemy==1.3.13 python-telegram-bot==12.3.0 arrow==0.15.5 From 3938418ad51a7c8dd794b5467a4c61b2e8086c99 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2020 08:03:21 +0000 Subject: [PATCH 1621/3421] Bump scikit-optimize from 0.5.2 to 0.7.1 Bumps [scikit-optimize](https://github.com/scikit-optimize/scikit-optimize) from 0.5.2 to 0.7.1. - [Release notes](https://github.com/scikit-optimize/scikit-optimize/releases) - [Changelog](https://github.com/scikit-optimize/scikit-optimize/blob/master/CHANGELOG.md) - [Commits](https://github.com/scikit-optimize/scikit-optimize/compare/v0.5.2...v0.7.1) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 43cad1a0e..202806cef 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -4,6 +4,6 @@ # Required for hyperopt scipy==1.4.1 scikit-learn==0.22.1 -scikit-optimize==0.5.2 +scikit-optimize==0.7.1 filelock==3.0.12 joblib==0.14.1 From d5f704009ffd7fd428201f6432110c344014fd4e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2020 08:03:45 +0000 Subject: [PATCH 1622/3421] Bump pandas from 0.25.3 to 1.0.0 Bumps [pandas](https://github.com/pandas-dev/pandas) from 0.25.3 to 1.0.0. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v0.25.3...v1.0.0) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index c7dd07ee4..21be02a87 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ -r requirements-common.txt numpy==1.18.1 -pandas==0.25.3 +pandas==1.0.0 From f6c09160ab1afda16e0c22acbac7c8b7b608744f Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 3 Feb 2020 15:17:36 +0100 Subject: [PATCH 1623/3421] make sure asyncio_loop is not initialized within ccxt code --- tests/exchange/test_exchange.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 7064d76e1..1121bb035 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -76,9 +76,11 @@ def test_init_ccxt_kwargs(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') caplog.set_level(logging.INFO) conf = copy.deepcopy(default_conf) - conf['exchange']['ccxt_async_config'] = {'aiohttp_trust_env': True} + conf['exchange']['ccxt_async_config'] = {'aiohttp_trust_env': True, 'asyncio_loop': True} ex = Exchange(conf) - assert log_has("Applying additional ccxt config: {'aiohttp_trust_env': True}", caplog) + assert log_has( + "Applying additional ccxt config: {'aiohttp_trust_env': True, 'asyncio_loop': True}", + caplog) assert ex._api_async.aiohttp_trust_env assert not ex._api.aiohttp_trust_env @@ -86,6 +88,8 @@ def test_init_ccxt_kwargs(default_conf, mocker, caplog): caplog.clear() conf = copy.deepcopy(default_conf) conf['exchange']['ccxt_config'] = {'TestKWARG': 11} + conf['exchange']['ccxt_async_config'] = {'asyncio_loop': True} + ex = Exchange(conf) assert not log_has("Applying additional ccxt config: {'aiohttp_trust_env': True}", caplog) assert not ex._api_async.aiohttp_trust_env From 684cb54992777d9c7e105033ee1d4d5d918590ee Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 3 Feb 2020 17:17:46 +0300 Subject: [PATCH 1624/3421] Add pair to exception msg --- freqtrade/exchange/exchange.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index a8df4c1bb..c1999b6fa 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -736,10 +736,11 @@ class Exchange: f'Exchange {self._api.name} does not support fetching historical candlestick data.' f'Message: {e}') from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: - raise TemporaryError(f'Could not load ticker history due to {e.__class__.__name__}. ' - f'Message: {e}') from e + raise TemporaryError(f'Could not load ticker history for pair {pair} due to ' + f'{e.__class__.__name__}. Message: {e}') from e except ccxt.BaseError as e: - raise OperationalException(f'Could not fetch ticker data. Msg: {e}') from e + raise OperationalException(f'Could not fetch ticker data for pair {pair}. ' + f'Msg: {e}') from e @retrier_async async def _async_fetch_trades(self, pair: str, From cbabc295c7c82bb70f7544337f27e9041e982b8b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 3 Feb 2020 20:25:43 +0100 Subject: [PATCH 1625/3421] Don't convert to datetime - but convert to datetime64 instead --- tests/edge/test_edge.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index ef1280fa4..6b86d9c1f 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -163,8 +163,8 @@ def test_edge_results(edge_conf, mocker, caplog, data) -> None: for c, trade in enumerate(data.trades): res = results.iloc[c] assert res.exit_type == trade.sell_reason - assert arrow.get(res.open_time) == _get_frame_time_from_offset(trade.open_tick) - assert arrow.get(res.close_time) == _get_frame_time_from_offset(trade.close_tick) + assert res.open_time == np.datetime64(_get_frame_time_from_offset(trade.open_tick)) + assert res.close_time == np.datetime64(_get_frame_time_from_offset(trade.close_tick)) def test_adjust(mocker, edge_conf): From ffb53a6df5201326fdc65b1b4d15b21ecea2b3ce Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 3 Feb 2020 23:08:35 +0300 Subject: [PATCH 1626/3421] get rid of typing.cast() --- freqtrade/commands/data_commands.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index aeb598009..ddc2ca25b 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -1,6 +1,6 @@ import logging import sys -from typing import Any, Dict, List, cast +from typing import Any, Dict, List import arrow @@ -43,18 +43,18 @@ def start_download_data(args: Dict[str, Any]) -> None: if config.get('download_trades'): pairs_not_available = refresh_backtest_trades_data( exchange, pairs=config["pairs"], datadir=config['datadir'], - timerange=timerange, erase=cast(bool, config.get("erase"))) + timerange=timerange, erase=bool(config.get("erase"))) # Convert downloaded trade data to different timeframes convert_trades_to_ohlcv( pairs=config["pairs"], timeframes=config["timeframes"], datadir=config['datadir'], timerange=timerange, - erase=cast(bool, config.get("erase"))) + erase=bool(config.get("erase"))) else: pairs_not_available = refresh_backtest_ohlcv_data( exchange, pairs=config["pairs"], timeframes=config["timeframes"], datadir=config['datadir'], timerange=timerange, - erase=cast(bool, config.get("erase"))) + erase=bool(config.get("erase"))) except KeyboardInterrupt: sys.exit("SIGINT received, aborting ...") From 91b4c9668cb019892c79bf47b30d9850a2a32f73 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Tue, 4 Feb 2020 01:57:24 +0100 Subject: [PATCH 1627/3421] More consistency changes... --- freqtrade/freqtradebot.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 1a9cbfa64..e51b3d550 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -427,23 +427,23 @@ class FreqtradeBot: Checks depth of market before executing a buy """ conf_bids_to_ask_delta = conf.get('bids_to_ask_delta', 0) - logger.info('checking depth of market for %s', pair) + logger.info(f"Checking depth of market for {pair} ...") order_book = self.exchange.get_order_book(pair, 1000) order_book_data_frame = order_book_to_dataframe(order_book['bids'], order_book['asks']) order_book_bids = order_book_data_frame['b_size'].sum() order_book_asks = order_book_data_frame['a_size'].sum() bids_ask_delta = order_book_bids / order_book_asks logger.info( - f"bids: {order_book_bids}, asks: {order_book_asks}, delta: {bids_ask_delta}, " - f"askprice: {order_book['asks'][0][0]}, bidprice: {order_book['bids'][0][0]}, " - f"immediate ask quantity: {order_book['asks'][0][1]}, " - f"immediate bid quantity: {order_book['bids'][0][1]}", + f"Bids: {order_book_bids}, Asks: {order_book_asks}, Delta: {bids_ask_delta}, " + f"Bid Price: {order_book['bids'][0][0]}, Ask Price: {order_book['asks'][0][0]}, " + f"Immediate Bid Quantity: {order_book['bids'][0][1]}, " + f"Immediate Ask Quantity: {order_book['asks'][0][1]}." ) if bids_ask_delta >= conf_bids_to_ask_delta: - logger.info('bids to ask delta DOES satisfy condition.') + logger.info(f"Bids to asks delta for {pair} DOES satisfy condition.") return True else: - logger.info(f"bids to ask delta for {pair} does not satisfy condition.") + logger.info(f"Bids to asks delta for {pair} does not satisfy condition.") return False def execute_buy(self, pair: str, stake_amount: float, price: Optional[float] = None) -> bool: From a707aeb3d01b223340ff8ebce02716bfe6777b3d Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 4 Feb 2020 07:00:53 +0100 Subject: [PATCH 1628/3421] Fix implementation of rolling_max --- freqtrade/vendor/qtpylib/indicators.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/vendor/qtpylib/indicators.py b/freqtrade/vendor/qtpylib/indicators.py index b3b2ac533..bef140396 100644 --- a/freqtrade/vendor/qtpylib/indicators.py +++ b/freqtrade/vendor/qtpylib/indicators.py @@ -288,9 +288,9 @@ def rolling_min(series, window=14, min_periods=None): def rolling_max(series, window=14, min_periods=None): min_periods = window if min_periods is None else min_periods try: - return series.rolling(window=window, min_periods=min_periods).min() + return series.rolling(window=window, min_periods=min_periods).max() except Exception as e: # noqa: F841 - return pd.Series(series).rolling(window=window, min_periods=min_periods).min() + return pd.Series(series).rolling(window=window, min_periods=min_periods).max() # --------------------------------------------- From aa54fd2251f6144a6c76df33585fa59b4b4886c4 Mon Sep 17 00:00:00 2001 From: untoreh Date: Mon, 3 Feb 2020 07:44:17 +0100 Subject: [PATCH 1629/3421] - added spread filter - minimum value to volume pairlist --- config_full.json.example | 4 +- docs/configuration.md | 6 +++ freqtrade/constants.py | 3 +- freqtrade/pairlist/SpreadFilter.py | 59 ++++++++++++++++++++++++++++ freqtrade/pairlist/VolumePairList.py | 8 +++- tests/conftest.py | 47 ++++++++++++++++++++++ tests/pairlist/test_pairlist.py | 10 ++++- 7 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 freqtrade/pairlist/SpreadFilter.py diff --git a/config_full.json.example b/config_full.json.example index 82d8bd04a..9f09d2247 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -62,8 +62,8 @@ "refresh_period": 1800 }, {"method": "PrecisionFilter"}, - {"method": "PriceFilter", "low_price_ratio": 0.01 - } + {"method": "PriceFilter", "low_price_ratio": 0.01}, + {"method": "SpreadFilter", "max_spread_ratio": 0.005} ], "exchange": { "name": "bittrex", diff --git a/docs/configuration.md b/docs/configuration.md index fe692eacb..17b9a82c5 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -503,6 +503,7 @@ Inactive markets and blacklisted pairs are always removed from the resulting `pa * [`VolumePairList`](#volume-pair-list) * [`PrecisionFilter`](#precision-filter) * [`PriceFilter`](#price-pair-filter) +* [`SpreadFilter`](#spread-filter) !!! Tip "Testing pairlists" Pairlist configurations can be quite tricky to get right. Best use the [`test-pairlist`](utils.md#test-pairlist) subcommand to test your configuration quickly. @@ -551,6 +552,11 @@ Min price precision is 8 decimals. If price is 0.00000011 - one step would be 0. These pairs are dangerous since it may be impossible to place the desired stoploss - and often result in high losses. +#### Spread Filter +Removes pairs that have a difference between asks and bids above the specified ratio (default `0.005`). +Example: +If `DOGE/BTC` maximum bid is 0.00000026 and minimum ask is 0.00000027 the ratio is calculated as: `1 - bid/ask ~= 0.037` which is `> 0.005` + ### Full Pairlist example The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, sorting by `quoteVolume` and applies both [`PrecisionFilter`](#precision-filter) and [`PriceFilter`](#price-pair-filter), filtering all assets where 1 priceunit is > 1%. diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 53bc4af53..56876e2c9 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -17,7 +17,8 @@ REQUIRED_ORDERTIF = ['buy', 'sell'] REQUIRED_ORDERTYPES = ['buy', 'sell', 'stoploss', 'stoploss_on_exchange'] ORDERTYPE_POSSIBILITIES = ['limit', 'market'] ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc'] -AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'PrecisionFilter', 'PriceFilter'] +AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', + 'PrecisionFilter', 'PriceFilter', 'SpreadFilter'] DRY_RUN_WALLET = 1000 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons diff --git a/freqtrade/pairlist/SpreadFilter.py b/freqtrade/pairlist/SpreadFilter.py new file mode 100644 index 000000000..9361837cc --- /dev/null +++ b/freqtrade/pairlist/SpreadFilter.py @@ -0,0 +1,59 @@ +import logging +from copy import deepcopy +from typing import Dict, List + +from freqtrade.pairlist.IPairList import IPairList + +logger = logging.getLogger(__name__) + + +class SpreadFilter(IPairList): + + def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict, + pairlist_pos: int) -> None: + super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) + + self._max_spread_ratio = pairlistconfig.get('max_spread_ratio', 0.005) + + @property + def needstickers(self) -> bool: + """ + Boolean property defining if tickers are necessary. + If no Pairlist requries tickers, an empty List is passed + as tickers argument to filter_pairlist + """ + return True + + def short_desc(self) -> str: + """ + Short whitelist method description - used for startup-messages + """ + return (f"{self.name} - Filtering pairs with ask/bid diff above " + f"{self._max_spread_ratio * 100}%.") + + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: + + """ + Filters and sorts pairlist and returns the whitelist again. + Called on each bot iteration - please use internal caching if necessary + :param pairlist: pairlist to filter or sort + :param tickers: Tickers (from exchange.get_tickers()). May be cached. + :return: new whitelist + """ + # Copy list since we're modifying this list + + spread = None + for p in deepcopy(pairlist): + ticker = tickers.get(p) + assert ticker is not None + if 'bid' in ticker and 'ask' in ticker: + spread = 1 - ticker['bid'] / ticker['ask'] + if not ticker or spread > self._max_spread_ratio: + logger.info(f"Removed {ticker['symbol']} from whitelist, " + f"because spread {spread * 100:.3f}% >" + f"{self._max_spread_ratio * 100}%") + pairlist.remove(p) + else: + pairlist.remove(p) + + return pairlist diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 4ac9935ba..3f31f5523 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -28,6 +28,7 @@ class VolumePairList(IPairList): 'for "pairlist.config.number_assets"') self._number_pairs = self._pairlistconfig['number_assets'] self._sort_key = self._pairlistconfig.get('sort_key', 'quoteVolume') + self._min_value = self._pairlistconfig.get('min_value', 0) self.refresh_period = self._pairlistconfig.get('refresh_period', 1800) if not self._exchange.exchange_has('fetchTickers'): @@ -73,11 +74,13 @@ class VolumePairList(IPairList): tickers, self._config['stake_currency'], self._sort_key, + self._min_value ) else: return pairlist - def _gen_pair_whitelist(self, pairlist, tickers, base_currency: str, key: str) -> List[str]: + def _gen_pair_whitelist(self, pairlist, tickers, base_currency: str, + key: str, min_val: int) -> List[str]: """ Updates the whitelist with with a dynamically generated list :param base_currency: base currency as str @@ -96,6 +99,9 @@ class VolumePairList(IPairList): # If other pairlist is in front, use the incomming pairlist. filtered_tickers = [v for k, v in tickers.items() if k in pairlist] + if min_val > 0: + filtered_tickers = list(filter(lambda t: t[key] > min_val, filtered_tickers)) + sorted_tickers = sorted(filtered_tickers, reverse=True, key=lambda t: t[key]) # Validate whitelist to only have active market pairs diff --git a/tests/conftest.py b/tests/conftest.py index 395388f73..e897dbccd 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -640,6 +640,31 @@ def shitcoinmarkets(markets): }, 'info': {}, }, + 'NANO/USDT': { + "percentage": True, + "tierBased": False, + "taker": 0.001, + "maker": 0.001, + "precision": { + "base": 8, + "quote": 8, + "amount": 2, + "price": 4 + }, + "limits": { + }, + "id": "NANOUSDT", + "symbol": "NANO/USDT", + "base": "NANO", + "quote": "USDT", + "baseId": "NANO", + "quoteId": "USDT", + "info": {}, + "type": "spot", + "spot": True, + "future": False, + "active": True + }, }) return shitmarkets @@ -1114,6 +1139,28 @@ def tickers(): 'quoteVolume': 1154.19266394, 'info': {} }, + "NANO/USDT": { + "symbol": "NANO/USDT", + "timestamp": 1580469388244, + "datetime": "2020-01-31T11:16:28.244Z", + "high": 0.7519, + "low": 0.7154, + "bid": 0.7305, + "bidVolume": 300.3, + "ask": 0.7342, + "askVolume": 15.14, + "vwap": 0.73645591, + "open": 0.7154, + "close": 0.7342, + "last": 0.7342, + "previousClose": 0.7189, + "change": 0.0188, + "percentage": 2.628, + "average": None, + "baseVolume": 439472.44, + "quoteVolume": 323652.075405, + "info": {} + }, }) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index ac4cbc813..b8a4be037 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -141,7 +141,7 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], "BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], - "USDT", ['ETH/USDT']), + "USDT", ['ETH/USDT', 'NANO/USDT']), # No pair for ETH ... ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], "ETH", []), @@ -160,6 +160,10 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): {"method": "PrecisionFilter"}, {"method": "PriceFilter", "low_price_ratio": 0.02} ], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), + # HOT and XRP are removed because below 1250 quoteVolume + ([{"method": "VolumePairList", "number_assets": 5, + "sort_key": "quoteVolume", "min_value": 1250}], + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC']), # StaticPairlist Only ([{"method": "StaticPairList"}, ], "BTC", ['ETH/BTC', 'TKN/BTC']), @@ -167,6 +171,10 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): ([{"method": "StaticPairList"}, {"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}, ], "BTC", ['TKN/BTC', 'ETH/BTC']), + # SpreadFilter + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, + {"method": "SpreadFilter", "max_spread": 0.005} + ], "USDT", ['ETH/USDT']), ]) def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, pairlists, base_currency, whitelist_result, From 6866f6389d45bccf7a261a0f4b3e6362cadb7a0a Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 4 Feb 2020 20:41:13 +0100 Subject: [PATCH 1630/3421] Fix merge-error --- freqtrade/pairlist/VolumePairList.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index af6760197..e50dafb63 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -80,7 +80,7 @@ class VolumePairList(IPairList): return pairlist def _gen_pair_whitelist(self, pairlist: List[str], tickers: Dict, - base_currency: str, key: str) -> List[str]: + base_currency: str, key: str, min_val: int) -> List[str]: """ Updates the whitelist with with a dynamically generated list :param base_currency: base currency as str From 586cbc750c711ccf8b9bcaa6836be5f8b89d91f3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 6 Feb 2020 06:45:11 +0100 Subject: [PATCH 1631/3421] Add considerations for dry-run --- docs/configuration.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/configuration.md b/docs/configuration.md index 4ed8bbd0c..72e12f066 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -608,6 +608,14 @@ Once you will be happy with your bot performance running in the Dry-run mode, yo !!! Note A simulated wallet is available during dry-run mode, and will assume a starting capital of `dry_run_wallet` (defaults to 1000). +### Considerations for dry-run + +* API-Keys may or may not be provided. Only Read-Only operations on the exchange are performed in dry-run mode. +* Wallets (`/balance`) will be simulated. +* Orders will be simulated, and will not be posted to the exchange +* In combination with `stoploss_on_exchange`, the stop_loss price is assumed to be filled. +* Open orders (not Trades!) are reset on bot restart. + ## Switch to production mode In production mode, the bot will engage your money. Be careful, since a wrong From 9639ffb14052f72dd3dc37820c79a8fdf6212bb1 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Thu, 6 Feb 2020 06:49:08 +0100 Subject: [PATCH 1632/3421] added daily sharpe ratio hyperopt loss method, ty @djacky (#2826) * more consistent backtesting tables and labels * added rounding to Tot Profit % on Sell Reasosn table to be consistent with other percentiles on table. * added daily sharpe ratio hyperopt loss method, ty @djacky * removed commented code * removed unused profit_abs * added proper slippage to each trade * replaced use of old value total_profit * Align quotes in same area * added daily sharpe ratio test and modified hyperopt_loss_sharpe_daily * fixed some more line alignments * updated docs to include SharpeHyperOptLossDaily * Update dockerfile to 3.8.1 * Run tests against 3.8 * added daily sharpe ratio hyperopt loss method, ty @djacky * removed commented code * removed unused profit_abs * added proper slippage to each trade * replaced use of old value total_profit * added daily sharpe ratio test and modified hyperopt_loss_sharpe_daily * updated docs to include SharpeHyperOptLossDaily * docs fixes * missed one fix * fixed standard deviation line * fixed to bracket notation * fixed to bracket notation * fixed syntax error * better readability, kept np.sqrt(365) which results in annualized sharpe ratio * fixed method arguments indentation * updated commented out debug print line * renamed after slippage profit_percent so it wont affect _calculate_results_metrics() * Reworked to fill leading and trailing days * No need for np; make flake happy * Fix risk free rate Co-authored-by: Matthias Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/bot-usage.md | 4 +- docs/hyperopt.md | 38 ++++++------ freqtrade/commands/cli_options.py | 2 +- .../optimize/hyperopt_loss_sharpe_daily.py | 61 +++++++++++++++++++ tests/optimize/test_hyperopt.py | 26 +++++++- 5 files changed, 110 insertions(+), 21 deletions(-) create mode 100644 freqtrade/optimize/hyperopt_loss_sharpe_daily.py diff --git a/docs/bot-usage.md b/docs/bot-usage.md index e856755d2..56e6008a1 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -337,8 +337,8 @@ optional arguments: generate completely different results, since the target for optimization is different. Built-in Hyperopt-loss-functions are: DefaultHyperOptLoss, - OnlyProfitHyperOptLoss, SharpeHyperOptLoss (default: - `DefaultHyperOptLoss`). + OnlyProfitHyperOptLoss, SharpeHyperOptLoss, + SharpeHyperOptLossDaily (default: `DefaultHyperOptLoss`). Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). diff --git a/docs/hyperopt.md b/docs/hyperopt.md index f399fe816..3e10f66da 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -57,12 +57,12 @@ Rarely you may also need to override: !!! Tip "Quickly optimize ROI, stoploss and trailing stoploss" You can quickly optimize the spaces `roi`, `stoploss` and `trailing` without changing anything (i.e. without creation of a "complete" Hyperopt class with dimensions, parameters, triggers and guards, as described in this document) from the default hyperopt template by relying on your strategy to do most of the calculations. - ``` python + ```python # Have a working strategy at hand. freqtrade new-hyperopt --hyperopt EmptyHyperopt freqtrade hyperopt --hyperopt EmptyHyperopt --spaces roi stoploss trailing --strategy MyWorkingStrategy --config config.json -e 100 - ``` + ``` ### 1. Install a Custom Hyperopt File @@ -75,8 +75,8 @@ Copy the file `user_data/hyperopts/sample_hyperopt.py` into `user_data/hyperopts There are two places you need to change in your hyperopt file to add a new buy hyperopt for testing: -- Inside `indicator_space()` - the parameters hyperopt shall be optimizing. -- Inside `populate_buy_trend()` - applying the parameters. +* Inside `indicator_space()` - the parameters hyperopt shall be optimizing. +* Inside `populate_buy_trend()` - applying the parameters. There you have two different types of indicators: 1. `guards` and 2. `triggers`. @@ -141,7 +141,7 @@ one we call `trigger` and use it to decide which buy trigger we want to use. So let's write the buy strategy using these values: -``` python +```python def populate_buy_trend(dataframe: DataFrame) -> DataFrame: conditions = [] # GUARDS AND TRENDS @@ -192,6 +192,7 @@ Currently, the following loss functions are builtin: * `DefaultHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function) * `OnlyProfitHyperOptLoss` (which takes only amount of profit into consideration) * `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on the trade returns) +* `SharpeHyperOptLossDaily` (optimizes Sharpe Ratio calculated on daily trade returns) Creation of a custom loss function is covered in the [Advanced Hyperopt](advanced-hyperopt.md) part of the documentation. @@ -206,7 +207,7 @@ We strongly recommend to use `screen` or `tmux` to prevent any connection loss. freqtrade hyperopt --config config.json --hyperopt -e 5000 --spaces all ``` -Use `` as the name of the custom hyperopt used. +Use `` as the name of the custom hyperopt used. The `-e` option will set how many evaluations hyperopt will do. We recommend running at least several thousand evaluations. @@ -265,23 +266,23 @@ The default Hyperopt Search Space, used when no `--space` command line option is ### Position stacking and disabling max market positions -In some situations, you may need to run Hyperopt (and Backtesting) with the +In some situations, you may need to run Hyperopt (and Backtesting) with the `--eps`/`--enable-position-staking` and `--dmmp`/`--disable-max-market-positions` arguments. By default, hyperopt emulates the behavior of the Freqtrade Live Run/Dry Run, where only one -open trade is allowed for every traded pair. The total number of trades open for all pairs +open trade is allowed for every traded pair. The total number of trades open for all pairs is also limited by the `max_open_trades` setting. During Hyperopt/Backtesting this may lead to some potential trades to be hidden (or masked) by previosly open trades. The `--eps`/`--enable-position-stacking` argument allows emulation of buying the same pair multiple times, -while `--dmmp`/`--disable-max-market-positions` disables applying `max_open_trades` +while `--dmmp`/`--disable-max-market-positions` disables applying `max_open_trades` during Hyperopt/Backtesting (which is equal to setting `max_open_trades` to a very high number). !!! Note Dry/live runs will **NOT** use position stacking - therefore it does make sense to also validate the strategy without this as it's closer to reality. -You can also enable position stacking in the configuration file by explicitly setting +You can also enable position stacking in the configuration file by explicitly setting `"position_stacking"=true`. ### Reproducible results @@ -323,7 +324,7 @@ method, what those values match to. So for example you had `rsi-value: 29.0` so we would look at `rsi`-block, that translates to the following code block: -``` python +```python (dataframe['rsi'] < 29.0) ``` @@ -372,18 +373,19 @@ In order to use this best ROI table found by Hyperopt in backtesting and for liv 118: 0 } ``` + As stated in the comment, you can also use it as the value of the `minimal_roi` setting in the configuration file. #### Default ROI Search Space If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the ticker_interval used. By default the values vary in the following ranges (for some of the most used ticker intervals, values are rounded to 5 digits after the decimal point): -| # step | 1m | | 5m | | 1h | | 1d | | -|---|---|---|---|---|---|---|---|---| -| 1 | 0 | 0.01161...0.11992 | 0 | 0.03...0.31 | 0 | 0.06883...0.71124 | 0 | 0.12178...1.25835 | -| 2 | 2...8 | 0.00774...0.04255 | 10...40 | 0.02...0.11 | 120...480 | 0.04589...0.25238 | 2880...11520 | 0.08118...0.44651 | -| 3 | 4...20 | 0.00387...0.01547 | 20...100 | 0.01...0.04 | 240...1200 | 0.02294...0.09177 | 5760...28800 | 0.04059...0.16237 | -| 4 | 6...44 | 0.0 | 30...220 | 0.0 | 360...2640 | 0.0 | 8640...63360 | 0.0 | +| # step | 1m | | 5m | | 1h | | 1d | | +| ------ | ------ | ----------------- | -------- | ----------- | ---------- | ----------------- | ------------ | ----------------- | +| 1 | 0 | 0.01161...0.11992 | 0 | 0.03...0.31 | 0 | 0.06883...0.71124 | 0 | 0.12178...1.25835 | +| 2 | 2...8 | 0.00774...0.04255 | 10...40 | 0.02...0.11 | 120...480 | 0.04589...0.25238 | 2880...11520 | 0.08118...0.44651 | +| 3 | 4...20 | 0.00387...0.01547 | 20...100 | 0.01...0.04 | 240...1200 | 0.02294...0.09177 | 5760...28800 | 0.04059...0.16237 | +| 4 | 6...44 | 0.0 | 30...220 | 0.0 | 360...2640 | 0.0 | 8640...63360 | 0.0 | These ranges should be sufficient in most cases. The minutes in the steps (ROI dict keys) are scaled linearly depending on the ticker interval used. The ROI values in the steps (ROI dict values) are scaled logarithmically depending on the ticker interval used. @@ -416,6 +418,7 @@ In order to use this best stoploss value found by Hyperopt in backtesting and fo # This attribute will be overridden if the config file contains "stoploss" stoploss = -0.27996 ``` + As stated in the comment, you can also use it as the value of the `stoploss` setting in the configuration file. #### Default Stoploss Search Space @@ -452,6 +455,7 @@ In order to use these best trailing stop parameters found by Hyperopt in backtes trailing_stop_positive_offset = 0.06038 trailing_only_offset_is_reached = True ``` + As stated in the comment, you can also use it as the values of the corresponding settings in the configuration file. #### Default Trailing Stop Search Space diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 490f26cfa..6d8d13129 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -256,7 +256,7 @@ AVAILABLE_CLI_OPTIONS = { help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). ' 'Different functions can generate completely different results, ' 'since the target for optimization is different. Built-in Hyperopt-loss-functions are: ' - 'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss.' + 'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss, SharpeHyperOptLossDaily.' '(default: `%(default)s`).', metavar='NAME', default=constants.DEFAULT_HYPEROPT_LOSS, diff --git a/freqtrade/optimize/hyperopt_loss_sharpe_daily.py b/freqtrade/optimize/hyperopt_loss_sharpe_daily.py new file mode 100644 index 000000000..d8ea3c5fe --- /dev/null +++ b/freqtrade/optimize/hyperopt_loss_sharpe_daily.py @@ -0,0 +1,61 @@ +""" +SharpeHyperOptLossDaily + +This module defines the alternative HyperOptLoss class which can be used for +Hyperoptimization. +""" +import math +from datetime import datetime + +from pandas import DataFrame, date_range + +from freqtrade.optimize.hyperopt import IHyperOptLoss + + +class SharpeHyperOptLossDaily(IHyperOptLoss): + """ + Defines the loss function for hyperopt. + + This implementation uses the Sharpe Ratio calculation. + """ + + @staticmethod + def hyperopt_loss_function(results: DataFrame, trade_count: int, + min_date: datetime, max_date: datetime, + *args, **kwargs) -> float: + """ + Objective function, returns smaller number for more optimal results. + + Uses Sharpe Ratio calculation. + """ + resample_freq = '1D' + slippage_per_trade_ratio = 0.0005 + days_in_year = 365 + annual_risk_free_rate = 0.0 + risk_free_rate = annual_risk_free_rate / days_in_year + + # apply slippage per trade to profit_percent + results.loc[:, 'profit_percent_after_slippage'] = \ + results['profit_percent'] - slippage_per_trade_ratio + + # create the index within the min_date and end max_date + t_index = date_range(start=min_date, end=max_date, freq=resample_freq) + + sum_daily = ( + results.resample(resample_freq, on='close_time').agg( + {"profit_percent_after_slippage": sum}).reindex(t_index).fillna(0) + ) + + total_profit = sum_daily["profit_percent_after_slippage"] - risk_free_rate + expected_returns_mean = total_profit.mean() + up_stdev = total_profit.std() + + if (up_stdev != 0.): + sharp_ratio = expected_returns_mean / up_stdev * math.sqrt(days_in_year) + else: + # Define high (negative) sharpe ratio to be clear that this is NOT optimal. + sharp_ratio = -20. + + # print(t_index, sum_daily, total_profit) + # print(risk_free_rate, expected_returns_mean, up_stdev, sharp_ratio) + return -sharp_ratio diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 69d110649..b3356bd6d 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -42,7 +42,13 @@ def hyperopt_results(): 'profit_percent': [-0.1, 0.2, 0.3], 'profit_abs': [-0.2, 0.4, 0.6], 'trade_duration': [10, 30, 10], - 'sell_reason': [SellType.STOP_LOSS, SellType.ROI, SellType.ROI] + 'sell_reason': [SellType.STOP_LOSS, SellType.ROI, SellType.ROI], + 'close_time': + [ + datetime(2019, 1, 1, 9, 26, 3, 478039), + datetime(2019, 2, 1, 9, 26, 3, 478039), + datetime(2019, 3, 1, 9, 26, 3, 478039) + ] } ) @@ -336,6 +342,24 @@ def test_sharpe_loss_prefers_higher_profits(default_conf, hyperopt_results) -> N assert under > correct +def test_sharpe_loss_daily_prefers_higher_profits(default_conf, hyperopt_results) -> None: + results_over = hyperopt_results.copy() + results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 + results_under = hyperopt_results.copy() + results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 + + default_conf.update({'hyperopt_loss': 'SharpeHyperOptLossDaily'}) + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) + correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + assert over < correct + assert under > correct + + def test_onlyprofit_loss_prefers_higher_profits(default_conf, hyperopt_results) -> None: results_over = hyperopt_results.copy() results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 From 5b00eaa42df93ccd583699b98f7d44e43596423c Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Thu, 6 Feb 2020 06:58:58 +0100 Subject: [PATCH 1633/3421] Updated Strategy Summary table to match other backtesting tables (#2864) --- docs/backtesting.md | 4 ++-- freqtrade/optimize/backtesting.py | 2 +- freqtrade/optimize/optimize_reports.py | 6 +++--- tests/optimize/test_optimize_reports.py | 12 ++++++------ 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 41428085d..2abb32ca0 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -237,8 +237,8 @@ There will be an additional table comparing win/losses of the different strategi Detailed output for all strategies one after the other will be available, so make sure to scroll up to see the details per strategy. ``` -=========================================================== Strategy Summary =========================================================== -| Strategy | buy count | avg profit % | cum profit % | tot profit BTC | tot profit % | avg duration | profit | loss | +=========================================================== STRATEGY SUMMARY =========================================================== +| Strategy | Buy Count | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Losses | |:------------|------------:|---------------:|---------------:|-----------------:|---------------:|:---------------|---------:|-------:| | Strategy1 | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 | 243 | | Strategy2 | 1487 | -0.13 | -197.58 | -0.00988917 | -98.79 | 4:43:00 | 662 | 825 | diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 96978d407..13c8990a5 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -441,7 +441,7 @@ class Backtesting: print() if len(all_results) > 1: # Print Strategy summary table - print(' Strategy Summary '.center(133, '=')) + print(' STRATEGY SUMMARY '.center(133, '=')) print(generate_text_table_strategy(self.config['stake_currency'], self.config['max_open_trades'], all_results=all_results)) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index c5cd944a1..8ad063056 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -121,9 +121,9 @@ def generate_text_table_strategy(stake_currency: str, max_open_trades: str, floatfmt = ('s', 'd', '.2f', '.2f', '.8f', '.2f', 'd', '.1f', '.1f') tabular_data = [] - headers = ['Strategy', 'buy count', 'avg profit %', 'cum profit %', - f'tot profit {stake_currency}', 'tot profit %', 'avg duration', - 'profit', 'loss'] + headers = ['Strategy', 'Buy Count', 'Avg Profit %', 'Cum Profit %', + f'Tot Profit {stake_currency}', 'Tot Profit %', 'Avg Duration', + 'Wins', 'Losses'] for strategy, results in all_results.items(): tabular_data.append([ strategy, diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 8c1a3619d..3ea13be47 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -91,14 +91,14 @@ def test_generate_text_table_strategy(default_conf, mocker): ) result_str = ( - '| Strategy | buy count | avg profit % | cum profit % ' - '| tot profit BTC | tot profit % | avg duration | profit | loss |\n' - '|:-----------|------------:|---------------:|---------------:' - '|-----------------:|---------------:|:---------------|---------:|-------:|\n' + '| Strategy | Buy Count | Avg Profit % | Cum Profit % | Tot Profit BTC ' + '| Tot Profit % | Avg Duration | Wins | Losses |\n' + '|:-----------|------------:|---------------:|---------------:|-----------------:' + '|---------------:|:---------------|-------:|---------:|\n' '| ETH/BTC | 3 | 20.00 | 60.00 ' - '| 1.10000000 | 30.00 | 0:17:00 | 3 | 0 |\n' + '| 1.10000000 | 30.00 | 0:17:00 | 3 | 0 |\n' '| LTC/BTC | 3 | 30.00 | 90.00 ' - '| 1.30000000 | 45.00 | 0:20:00 | 3 | 0 |' + '| 1.30000000 | 45.00 | 0:20:00 | 3 | 0 |' ) assert generate_text_table_strategy('BTC', 2, all_results=results) == result_str From 739acaa47502d63dbe24cd89b7dfd7b1babdcbd9 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Thu, 6 Feb 2020 13:54:51 +0300 Subject: [PATCH 1634/3421] Wordings improved --- docs/configuration.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 72e12f066..c0404d647 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -610,11 +610,11 @@ Once you will be happy with your bot performance running in the Dry-run mode, yo ### Considerations for dry-run -* API-Keys may or may not be provided. Only Read-Only operations on the exchange are performed in dry-run mode. -* Wallets (`/balance`) will be simulated. -* Orders will be simulated, and will not be posted to the exchange +* API-keys may or may not be provided. Only Read-Only operations (i.e. operations that do not alter account state) on the exchange are performed in the dry-run mode. +* Wallets (`/balance`) are simulated. +* Orders are simulated, and will not be posted to the exchange. * In combination with `stoploss_on_exchange`, the stop_loss price is assumed to be filled. -* Open orders (not Trades!) are reset on bot restart. +* Open orders (not trades, which are stored in the database) are reset on bot restart. ## Switch to production mode From 2846f9454fdf48cf90493f91d19f790ddf51cb61 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Thu, 6 Feb 2020 17:02:11 +0300 Subject: [PATCH 1635/3421] Add description in the docs --- docs/strategy-customization.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index d59b097d7..cc3f8ee33 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -532,6 +532,27 @@ If you want to use a strategy from a different directory you can pass `--strateg freqtrade trade --strategy AwesomeStrategy --strategy-path /some/directory ``` +### Derived strategies + +The strategies can be derived from other strategies. This avoids duplication of your custom strategy code. You can use this technique to override small parts of your main strategy, leaving the rest untouched: + +``` +class MyAwesomeStrategy(IStrategy): + ... + stoploss = 0.13 + trailing_stop = False + # All other attributes and methods are here as they + # should be in any custom strategy... + ... + +class MyAwesomeStrategy2(MyAwesomeStrategy): + # Override something + stoploss = 0.08 + trailing_stop = True +``` + +Both attributes and methods may be overriden, altering behavior of the original strategy in a way you need. The strategy classes may be located in the same module (python file with the source code of your strategy) or in different modules (different python files). In the latter case you need to properly import the strategy class you derive the new one from. + ### Common mistakes when developing strategies Backtesting analyzes the whole time-range at once for performance reasons. Because of this, strategy authors need to make sure that strategies do not look-ahead into the future. From 412f5d68de2eeefa9b306e5b2604cb695dfc317a Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Thu, 6 Feb 2020 17:42:26 +0300 Subject: [PATCH 1636/3421] Add description to hyperopt advanced doc chapter --- docs/advanced-hyperopt.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/docs/advanced-hyperopt.md b/docs/advanced-hyperopt.md index 20af0aaab..f47c33880 100644 --- a/docs/advanced-hyperopt.md +++ b/docs/advanced-hyperopt.md @@ -4,6 +4,34 @@ This page explains some advanced Hyperopt topics that may require higher coding skills and Python knowledge than creation of an ordinal hyperoptimization class. +## Derived hyperopt classes + +Custom hyperop classes can be derived in the same way [it can be done for strategies](strategy-customization.md#derived-strategies). + +Applying to hyperoptimization, as an example, you may override how dimensions are defined in your optimization hyperspace: + +``` +class MyAwesomeHyperOpt(IHyperOpt): + ... + # Uses default stoploss dimension + +class MyAwesomeHyperOpt2(MyAwesomeHyperOpt): + @staticmethod + def stoploss_space() -> List[Dimension]: + # Override boundaries for stoploss + return [ + Real(-0.33, -0.01, name='stoploss'), + ] +``` + +and then quickly switch between hyperopt classes, running optimization process with hyperopt class you need in each particular case: + +``` +$ freqtrade hyperopt --hyperopt MyAwesomeHyperOpt ... +or +$ freqtrade hyperopt --hyperopt MyAwesomeHyperOpt2 ... +``` + ## Creating and using a custom loss function To use a custom loss function class, make sure that the function `hyperopt_loss_function` is defined in your custom hyperopt loss class. From 2034527faa4c96d518f9a0506799fac89f1f0f56 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Thu, 6 Feb 2020 17:45:15 +0300 Subject: [PATCH 1637/3421] Update docs/strategy-customization.md Co-Authored-By: Matthias --- docs/strategy-customization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index cc3f8ee33..717baf4db 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -536,7 +536,7 @@ freqtrade trade --strategy AwesomeStrategy --strategy-path /some/directory The strategies can be derived from other strategies. This avoids duplication of your custom strategy code. You can use this technique to override small parts of your main strategy, leaving the rest untouched: -``` +``` python class MyAwesomeStrategy(IStrategy): ... stoploss = 0.13 From 418e7adac159d30e48a21cb09c4547c432fbf67e Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Thu, 6 Feb 2020 17:49:10 +0300 Subject: [PATCH 1638/3421] Highlight syntax in advanced-hyperopt as well --- docs/advanced-hyperopt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/advanced-hyperopt.md b/docs/advanced-hyperopt.md index f47c33880..25b4bd900 100644 --- a/docs/advanced-hyperopt.md +++ b/docs/advanced-hyperopt.md @@ -10,7 +10,7 @@ Custom hyperop classes can be derived in the same way [it can be done for strate Applying to hyperoptimization, as an example, you may override how dimensions are defined in your optimization hyperspace: -``` +```python class MyAwesomeHyperOpt(IHyperOpt): ... # Uses default stoploss dimension From f57bd6b616872904c68dee27fcd3c5814e67d486 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Thu, 6 Feb 2020 21:53:03 +0300 Subject: [PATCH 1639/3421] Keep the docs clean for unexperienced users --- docs/strategy-customization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 717baf4db..688647c2b 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -551,7 +551,7 @@ class MyAwesomeStrategy2(MyAwesomeStrategy): trailing_stop = True ``` -Both attributes and methods may be overriden, altering behavior of the original strategy in a way you need. The strategy classes may be located in the same module (python file with the source code of your strategy) or in different modules (different python files). In the latter case you need to properly import the strategy class you derive the new one from. +Both attributes and methods may be overriden, altering behavior of the original strategy in a way you need. ### Common mistakes when developing strategies From 2816b96650b46c2a18859b95527cda0edb5de1d6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 6 Feb 2020 20:26:04 +0100 Subject: [PATCH 1640/3421] Create strategy_wrapper to call user-defined code with --- freqtrade/exceptions.py | 7 +++++++ freqtrade/strategy/interface.py | 25 ++++++++-------------- freqtrade/strategy/strategy_wrapper.py | 29 ++++++++++++++++++++++++++ tests/strategy/test_interface.py | 4 ++-- 4 files changed, 47 insertions(+), 18 deletions(-) create mode 100644 freqtrade/strategy/strategy_wrapper.py diff --git a/freqtrade/exceptions.py b/freqtrade/exceptions.py index 2f05ddb57..553a691ef 100644 --- a/freqtrade/exceptions.py +++ b/freqtrade/exceptions.py @@ -35,3 +35,10 @@ class TemporaryError(FreqtradeException): This could happen when an exchange is congested, unavailable, or the user has networking problems. Usually resolves itself after a time. """ + + +class StrategyError(FreqtradeException): + """ + Errors with custom user-code deteced. + Usually caused by errors in the strategy. + """ diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 6e15c5183..c20bf0218 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -3,21 +3,22 @@ IStrategy interface This module defines the interface to apply for strategies """ import logging +import warnings from abc import ABC, abstractmethod from datetime import datetime, timezone from enum import Enum from typing import Dict, List, NamedTuple, Optional, Tuple -import warnings import arrow from pandas import DataFrame from freqtrade.data.dataprovider import DataProvider +from freqtrade.exceptions import StrategyError from freqtrade.exchange import timeframe_to_minutes from freqtrade.persistence import Trade +from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from freqtrade.wallets import Wallets - logger = logging.getLogger(__name__) @@ -255,20 +256,12 @@ class IStrategy(ABC): return False, False try: - dataframe = self._analyze_ticker_internal(dataframe, {'pair': pair}) - except ValueError as error: - logger.warning( - 'Unable to analyze ticker for pair %s: %s', - pair, - str(error) - ) - return False, False - except Exception as error: - logger.exception( - 'Unexpected error when analyzing ticker for pair %s: %s', - pair, - str(error) - ) + dataframe = strategy_safe_wrapper( + self._analyze_ticker_internal, message="" + )(dataframe, {'pair': pair}) + except StrategyError as error: + logger.warning(f"Unable to analyze ticker for pair {pair}: {error}") + return False, False if dataframe.empty: diff --git a/freqtrade/strategy/strategy_wrapper.py b/freqtrade/strategy/strategy_wrapper.py new file mode 100644 index 000000000..61c986732 --- /dev/null +++ b/freqtrade/strategy/strategy_wrapper.py @@ -0,0 +1,29 @@ +import logging + +from freqtrade.exceptions import StrategyError + +logger = logging.getLogger(__name__) + + +def strategy_safe_wrapper(f, message: str, default_retval=None): + def wrapper(*args, **kwargs): + try: + return f(*args, **kwargs) + except ValueError as error: + logger.warning( + f"{message}" + f"Strategy caused the following exception: {error}" + f"{f}" + ) + if not default_retval: + raise StrategyError(str(error)) from error + return default_retval + except Exception as error: + logger.exception( + f"Unexpected error {error} calling {f}" + ) + if not default_retval: + raise StrategyError(str(error)) from error + return default_retval + + return wrapper diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 89c38bda1..2959fe62c 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -10,8 +10,8 @@ from freqtrade.configuration import TimeRange from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.history import load_tickerdata_file from freqtrade.persistence import Trade -from tests.conftest import get_patched_exchange, log_has from freqtrade.strategy.default_strategy import DefaultStrategy +from tests.conftest import get_patched_exchange, log_has, log_has_re # Avoid to reinit the same object again and again _STRATEGY = DefaultStrategy(config={}) @@ -65,7 +65,7 @@ def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ticker_hi ) assert (False, False) == _STRATEGY.get_signal('foo', default_conf['ticker_interval'], ticker_history) - assert log_has('Unable to analyze ticker for pair foo: xyz', caplog) + assert log_has_re(r'Strategy caused the following exception: xyz.*', caplog) def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ticker_history): From 49dcc561b77461ce22f8f875c49814008592b078 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 6 Feb 2020 20:30:17 +0100 Subject: [PATCH 1641/3421] POC for check_buy_timeout --- freqtrade/freqtradebot.py | 7 ++++++- freqtrade/strategy/interface.py | 18 ++++++++++++++++++ freqtrade/strategy/strategy_wrapper.py | 2 +- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e51b3d550..f458f91d6 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -26,6 +26,7 @@ from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.rpc import RPCManager, RPCMessageType from freqtrade.state import State from freqtrade.strategy.interface import IStrategy, SellType +from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from freqtrade.wallets import Wallets logger = logging.getLogger(__name__) @@ -819,7 +820,11 @@ class FreqtradeBot: continue if ((order['side'] == 'buy' and order['status'] == 'canceled') - or (self._check_timed_out('buy', order))): + or self._check_timed_out('buy', order) + or strategy_safe_wrapper(self.strategy.check_buy_timeout, + default_retval=False)(pair=trade.pair, + trade=trade, + order=order)): self.handle_timedout_limit_buy(trade, order) self.wallets.update() diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index c20bf0218..de08b7cda 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -149,6 +149,24 @@ class IStrategy(ABC): :return: DataFrame with sell column """ + def check_buy_timeout(self, pair: str, trade: Trade, order: Dict, **kwargs) -> bool: + """ + Check buy timeout function callback. + This method can be used to override the buy-timeout. + It is called whenever a limit buy order has been created, + and is not yet fully filled. + Configuration options in `unfilledtimeout` will be verified before this, + so ensure to set these timeouts high enough. + + When not implemented by a strategy, this simply returns False. + :param pair: Pair the trade is for + :param trade: trade object. + :param order: Order dictionary as returned from CCXT. + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return bool: When True is returned, then the buy-order is cancelled. + """ + return False + def informative_pairs(self) -> List[Tuple[str, str]]: """ Define additional, informative pair/interval combinations to be cached from the exchange. diff --git a/freqtrade/strategy/strategy_wrapper.py b/freqtrade/strategy/strategy_wrapper.py index 61c986732..4f35bfbab 100644 --- a/freqtrade/strategy/strategy_wrapper.py +++ b/freqtrade/strategy/strategy_wrapper.py @@ -5,7 +5,7 @@ from freqtrade.exceptions import StrategyError logger = logging.getLogger(__name__) -def strategy_safe_wrapper(f, message: str, default_retval=None): +def strategy_safe_wrapper(f, message: str = "", default_retval=None): def wrapper(*args, **kwargs): try: return f(*args, **kwargs) From ff819386e1ce2f03f63acb9601486fcf0280053e Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 7 Feb 2020 03:51:50 +0100 Subject: [PATCH 1642/3421] added draws to backtesting tables, reduced len of some labels to help fit this without increasing total width --- docs/backtesting.md | 72 ++++++++++++------------- freqtrade/optimize/optimize_reports.py | 25 +++++---- tests/optimize/test_optimize_reports.py | 62 ++++++++++----------- 3 files changed, 79 insertions(+), 80 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 2abb32ca0..79bfa2350 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -119,40 +119,40 @@ A backtesting result will look like that: ``` ========================================================= BACKTESTING REPORT ======================================================== -| pair | buy count | avg profit % | cum profit % | tot profit BTC | tot profit % | avg duration | profit | loss | -|:---------|------------:|---------------:|---------------:|-----------------:|---------------:|:---------------|---------:|-------:| -| ADA/BTC | 35 | -0.11 | -3.88 | -0.00019428 | -1.94 | 4:35:00 | 14 | 21 | -| ARK/BTC | 11 | -0.41 | -4.52 | -0.00022647 | -2.26 | 2:03:00 | 3 | 8 | -| BTS/BTC | 32 | 0.31 | 9.78 | 0.00048938 | 4.89 | 5:05:00 | 18 | 14 | -| DASH/BTC | 13 | -0.08 | -1.07 | -0.00005343 | -0.53 | 4:39:00 | 6 | 7 | -| ENG/BTC | 18 | 1.36 | 24.54 | 0.00122807 | 12.27 | 2:50:00 | 8 | 10 | -| EOS/BTC | 36 | 0.08 | 3.06 | 0.00015304 | 1.53 | 3:34:00 | 16 | 20 | -| ETC/BTC | 26 | 0.37 | 9.51 | 0.00047576 | 4.75 | 6:14:00 | 11 | 15 | -| ETH/BTC | 33 | 0.30 | 9.96 | 0.00049856 | 4.98 | 7:31:00 | 16 | 17 | -| IOTA/BTC | 32 | 0.03 | 1.09 | 0.00005444 | 0.54 | 3:12:00 | 14 | 18 | -| LSK/BTC | 15 | 1.75 | 26.26 | 0.00131413 | 13.13 | 2:58:00 | 6 | 9 | -| LTC/BTC | 32 | -0.04 | -1.38 | -0.00006886 | -0.69 | 4:49:00 | 11 | 21 | -| NANO/BTC | 17 | 1.26 | 21.39 | 0.00107058 | 10.70 | 1:55:00 | 10 | 7 | -| NEO/BTC | 23 | 0.82 | 18.97 | 0.00094936 | 9.48 | 2:59:00 | 10 | 13 | -| REQ/BTC | 9 | 1.17 | 10.54 | 0.00052734 | 5.27 | 3:47:00 | 4 | 5 | -| XLM/BTC | 16 | 1.22 | 19.54 | 0.00097800 | 9.77 | 3:15:00 | 7 | 9 | -| XMR/BTC | 23 | -0.18 | -4.13 | -0.00020696 | -2.07 | 5:30:00 | 12 | 11 | -| XRP/BTC | 35 | 0.66 | 22.96 | 0.00114897 | 11.48 | 3:49:00 | 12 | 23 | -| ZEC/BTC | 22 | -0.46 | -10.18 | -0.00050971 | -5.09 | 2:22:00 | 7 | 15 | -| TOTAL | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 | 243 | +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses | +|:---------|-------:|---------------:|---------------:|-----------------:|---------------:|:---------------|------:|-------:|--------:| +| ADA/BTC | 35 | -0.11 | -3.88 | -0.00019428 | -1.94 | 4:35:00 | 14 | 0 | 21 | +| ARK/BTC | 11 | -0.41 | -4.52 | -0.00022647 | -2.26 | 2:03:00 | 3 | 0 | 8 | +| BTS/BTC | 32 | 0.31 | 9.78 | 0.00048938 | 4.89 | 5:05:00 | 18 | 0 | 14 | +| DASH/BTC | 13 | -0.08 | -1.07 | -0.00005343 | -0.53 | 4:39:00 | 6 | 0 | 7 | +| ENG/BTC | 18 | 1.36 | 24.54 | 0.00122807 | 12.27 | 2:50:00 | 8 | 0 | 10 | +| EOS/BTC | 36 | 0.08 | 3.06 | 0.00015304 | 1.53 | 3:34:00 | 16 | 0 | 20 | +| ETC/BTC | 26 | 0.37 | 9.51 | 0.00047576 | 4.75 | 6:14:00 | 11 | 0 | 15 | +| ETH/BTC | 33 | 0.30 | 9.96 | 0.00049856 | 4.98 | 7:31:00 | 16 | 0 | 17 | +| IOTA/BTC | 32 | 0.03 | 1.09 | 0.00005444 | 0.54 | 3:12:00 | 14 | 0 | 18 | +| LSK/BTC | 15 | 1.75 | 26.26 | 0.00131413 | 13.13 | 2:58:00 | 6 | 0 | 9 | +| LTC/BTC | 32 | -0.04 | -1.38 | -0.00006886 | -0.69 | 4:49:00 | 11 | 0 | 21 | +| NANO/BTC | 17 | 1.26 | 21.39 | 0.00107058 | 10.70 | 1:55:00 | 10 | 0 | 7 | +| NEO/BTC | 23 | 0.82 | 18.97 | 0.00094936 | 9.48 | 2:59:00 | 10 | 0 | 13 | +| REQ/BTC | 9 | 1.17 | 10.54 | 0.00052734 | 5.27 | 3:47:00 | 4 | 0 | 5 | +| XLM/BTC | 16 | 1.22 | 19.54 | 0.00097800 | 9.77 | 3:15:00 | 7 | 0 | 9 | +| XMR/BTC | 23 | -0.18 | -4.13 | -0.00020696 | -2.07 | 5:30:00 | 12 | 0 | 11 | +| XRP/BTC | 35 | 0.66 | 22.96 | 0.00114897 | 11.48 | 3:49:00 | 12 | 0 | 23 | +| ZEC/BTC | 22 | -0.46 | -10.18 | -0.00050971 | -5.09 | 2:22:00 | 7 | 0 | 15 | +| TOTAL | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 | 0 | 243 | ========================================================= SELL REASON STATS ========================================================= -| Sell Reason | Count | Profit | Loss | -|:-------------------|--------:|---------:|-------:| -| trailing_stop_loss | 205 | 150 | 55 | -| stop_loss | 166 | 0 | 166 | -| sell_signal | 56 | 36 | 20 | -| force_sell | 2 | 0 | 2 | +| Sell Reason | Sells | Wins | Draws | Losses | +|:-------------------|--------:|------:|-------:|--------:| +| trailing_stop_loss | 205 | 150 | 0 | 55 | +| stop_loss | 166 | 0 | 0 | 166 | +| sell_signal | 56 | 36 | 0 | 20 | +| force_sell | 2 | 0 | 0 | 2 | ====================================================== LEFT OPEN TRADES REPORT ====================================================== -| pair | buy count | avg profit % | cum profit % | tot profit BTC | tot profit % | avg duration | profit | loss | -|:---------|------------:|---------------:|---------------:|-----------------:|---------------:|:---------------|---------:|-------:| -| ADA/BTC | 1 | 0.89 | 0.89 | 0.00004434 | 0.44 | 6:00:00 | 1 | 0 | -| LTC/BTC | 1 | 0.68 | 0.68 | 0.00003421 | 0.34 | 2:00:00 | 1 | 0 | -| TOTAL | 2 | 0.78 | 1.57 | 0.00007855 | 0.78 | 4:00:00 | 2 | 0 | +| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses | +|:---------|-------:|---------------:|---------------:|-----------------:|---------------:|:---------------|------:|-------:|--------:| +| ADA/BTC | 1 | 0.89 | 0.89 | 0.00004434 | 0.44 | 6:00:00 | 1 | 0 | 0 | +| LTC/BTC | 1 | 0.68 | 0.68 | 0.00003421 | 0.34 | 2:00:00 | 1 | 0 | 0 | +| TOTAL | 2 | 0.78 | 1.57 | 0.00007855 | 0.78 | 4:00:00 | 2 | 0 | 0 | ``` The 1st table contains all trades the bot made, including "left open trades". @@ -238,10 +238,10 @@ Detailed output for all strategies one after the other will be available, so mak ``` =========================================================== STRATEGY SUMMARY =========================================================== -| Strategy | Buy Count | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Losses | -|:------------|------------:|---------------:|---------------:|-----------------:|---------------:|:---------------|---------:|-------:| -| Strategy1 | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 | 243 | -| Strategy2 | 1487 | -0.13 | -197.58 | -0.00988917 | -98.79 | 4:43:00 | 662 | 825 | +| Strategy | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses | +|:------------|-------:|---------------:|---------------:|-----------------:|---------------:|:---------------|------:|-------:|-------:| +| Strategy1 | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 | 0 | 243 | +| Strategy2 | 1487 | -0.13 | -197.58 | -0.00988917 | -98.79 | 4:43:00 | 662 | 0 | 825 | ``` ## Next step diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 8ad063056..b00adbd48 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -21,13 +21,14 @@ def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_tra tabular_data = [] headers = [ 'Pair', - 'Buy Count', + 'Buys', 'Avg Profit %', 'Cum Profit %', f'Tot Profit {stake_currency}', 'Tot Profit %', 'Avg Duration', 'Wins', + 'Draws', 'Losses' ] for pair in data: @@ -45,6 +46,7 @@ def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_tra str(timedelta( minutes=round(result.trade_duration.mean()))) if not result.empty else '0:00', len(result[result.profit_abs > 0]), + len(result[result.profit_abs == 0]), len(result[result.profit_abs < 0]) ]) @@ -59,6 +61,7 @@ def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_tra str(timedelta( minutes=round(results.trade_duration.mean()))) if not results.empty else '0:00', len(results[results.profit_abs > 0]), + len(results[results.profit_abs == 0]), len(results[results.profit_abs < 0]) ]) # Ignore type as floatfmt does allow tuples but mypy does not know that @@ -78,8 +81,9 @@ def generate_text_table_sell_reason( tabular_data = [] headers = [ "Sell Reason", - "Sell Count", + "Sells", "Wins", + "Draws", "Losses", "Avg Profit %", "Cum Profit %", @@ -88,7 +92,8 @@ def generate_text_table_sell_reason( ] for reason, count in results['sell_reason'].value_counts().iteritems(): result = results.loc[results['sell_reason'] == reason] - profit = len(result[result['profit_abs'] >= 0]) + wins = len(result[result['profit_abs'] > 0]) + draws = len(result[result['profit_abs'] == 0]) loss = len(result[result['profit_abs'] < 0]) profit_mean = round(result['profit_percent'].mean() * 100.0, 2) profit_sum = round(result["profit_percent"].sum() * 100.0, 2) @@ -98,7 +103,8 @@ def generate_text_table_sell_reason( [ reason.value, count, - profit, + wins, + draws, loss, profit_mean, profit_sum, @@ -121,9 +127,9 @@ def generate_text_table_strategy(stake_currency: str, max_open_trades: str, floatfmt = ('s', 'd', '.2f', '.2f', '.8f', '.2f', 'd', '.1f', '.1f') tabular_data = [] - headers = ['Strategy', 'Buy Count', 'Avg Profit %', 'Cum Profit %', + headers = ['Strategy', 'Buys', 'Avg Profit %', 'Cum Profit %', f'Tot Profit {stake_currency}', 'Tot Profit %', 'Avg Duration', - 'Wins', 'Losses'] + 'Wins', 'Draws', 'Losses'] for strategy, results in all_results.items(): tabular_data.append([ strategy, @@ -135,6 +141,7 @@ def generate_text_table_strategy(stake_currency: str, max_open_trades: str, str(timedelta( minutes=round(results.trade_duration.mean()))) if not results.empty else '0:00', len(results[results.profit_abs > 0]), + len(results[results.profit_abs == 0]), len(results[results.profit_abs < 0]) ]) # Ignore type as floatfmt does allow tuples but mypy does not know that @@ -146,9 +153,9 @@ def generate_edge_table(results: dict) -> str: floatfmt = ('s', '.10g', '.2f', '.2f', '.2f', '.2f', 'd', '.d') tabular_data = [] - headers = ['pair', 'stoploss', 'win rate', 'risk reward ratio', - 'required risk reward', 'expectancy', 'total number of trades', - 'average duration (min)'] + headers = ['Pair', 'Stoploss', 'Win Rate', 'Risk Reward Ratio', + 'Required Risk Reward', 'Expectancy', 'Total Number of Trades', + 'Average Duration (min)'] for result in results.items(): if result[1].nb_trades > 0: diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 3ea13be47..c31b10290 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -15,20 +15,17 @@ def test_generate_text_table(default_conf, mocker): 'profit_percent': [0.1, 0.2], 'profit_abs': [0.2, 0.4], 'trade_duration': [10, 30], - 'profit': [2, 0], - 'loss': [0, 0] + 'wins': [2, 0], + 'draws': [0, 0], + 'losses': [0, 0] } ) result_str = ( - '| Pair | Buy Count | Avg Profit % | Cum Profit % | Tot Profit BTC ' - '| Tot Profit % | Avg Duration | Wins | Losses |\n' - '|:--------|------------:|---------------:|---------------:|-----------------:' - '|---------------:|:---------------|-------:|---------:|\n' - '| ETH/BTC | 2 | 15.00 | 30.00 | 0.60000000 ' - '| 15.00 | 0:20:00 | 2 | 0 |\n' - '| TOTAL | 2 | 15.00 | 30.00 | 0.60000000 ' - '| 15.00 | 0:20:00 | 2 | 0 |' + '| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses |\n' + '|:--------|-------:|---------------:|---------------:|-----------------:|---------------:|:---------------|-------:|--------:|---------:|\n' + '| ETH/BTC | 2 | 15.00 | 30.00 | 0.60000000 | 15.00 | 0:20:00 | 2 | 0 | 0 |\n' + '| TOTAL | 2 | 15.00 | 30.00 | 0.60000000 | 15.00 | 0:20:00 | 2 | 0 | 0 |' ) assert generate_text_table(data={'ETH/BTC': {}}, stake_currency='BTC', max_open_trades=2, @@ -43,21 +40,18 @@ def test_generate_text_table_sell_reason(default_conf, mocker): 'profit_percent': [0.1, 0.2, -0.1], 'profit_abs': [0.2, 0.4, -0.2], 'trade_duration': [10, 30, 10], - 'profit': [2, 0, 0], - 'loss': [0, 0, 1], + 'wins': [2, 0, 0], + 'draws': [0, 0, 0], + 'losses': [0, 0, 1], 'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] } ) result_str = ( - '| Sell Reason | Sell Count | Wins | Losses | Avg Profit % |' - ' Cum Profit % | Tot Profit BTC | Tot Profit % |\n' - '|:--------------|-------------:|-------:|---------:|---------------:|' - '---------------:|-----------------:|---------------:|\n' - '| roi | 2 | 2 | 0 | 15 |' - ' 30 | 0.6 | 15 |\n' - '| stop_loss | 1 | 0 | 1 | -10 |' - ' -10 | -0.2 | -5 |' + '| Sell Reason | Sells | Wins | Draws | Losses | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % |\n' + '|:--------------|--------:|-------:|--------:|---------:|---------------:|---------------:|-----------------:|---------------:|\n' + '| roi | 2 | 2 | 0 | 0 | 15 | 30 | 0.6 | 15 |\n' + '| stop_loss | 1 | 0 | 0 | 1 | -10 | -10 | -0.2 | -5 |' ) assert generate_text_table_sell_reason( data={'ETH/BTC': {}}, @@ -67,38 +61,36 @@ def test_generate_text_table_sell_reason(default_conf, mocker): def test_generate_text_table_strategy(default_conf, mocker): results = {} - results['ETH/BTC'] = pd.DataFrame( + results['TestStrategy1'] = pd.DataFrame( { 'pair': ['ETH/BTC', 'ETH/BTC', 'ETH/BTC'], 'profit_percent': [0.1, 0.2, 0.3], 'profit_abs': [0.2, 0.4, 0.5], 'trade_duration': [10, 30, 10], - 'profit': [2, 0, 0], - 'loss': [0, 0, 1], + 'wins': [2, 0, 0], + 'draws': [0, 0, 0], + 'losses': [0, 0, 1], 'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] } ) - results['LTC/BTC'] = pd.DataFrame( + results['TestStrategy2'] = pd.DataFrame( { 'pair': ['LTC/BTC', 'LTC/BTC', 'LTC/BTC'], 'profit_percent': [0.4, 0.2, 0.3], 'profit_abs': [0.4, 0.4, 0.5], 'trade_duration': [15, 30, 15], - 'profit': [4, 1, 0], - 'loss': [0, 0, 1], + 'wins': [4, 1, 0], + 'draws': [0, 0, 0], + 'losses': [0, 0, 1], 'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] } ) result_str = ( - '| Strategy | Buy Count | Avg Profit % | Cum Profit % | Tot Profit BTC ' - '| Tot Profit % | Avg Duration | Wins | Losses |\n' - '|:-----------|------------:|---------------:|---------------:|-----------------:' - '|---------------:|:---------------|-------:|---------:|\n' - '| ETH/BTC | 3 | 20.00 | 60.00 ' - '| 1.10000000 | 30.00 | 0:17:00 | 3 | 0 |\n' - '| LTC/BTC | 3 | 30.00 | 90.00 ' - '| 1.30000000 | 45.00 | 0:20:00 | 3 | 0 |' + '| Strategy | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses |\n' + '|:--------------|-------:|---------------:|---------------:|-----------------:|---------------:|:---------------|-------:|--------:|---------:|\n' + '| TestStrategy1 | 3 | 20.00 | 60.00 | 1.10000000 | 30.00 | 0:17:00 | 3 | 0 | 0 |\n' + '| TestStrategy2 | 3 | 30.00 | 90.00 | 1.30000000 | 45.00 | 0:20:00 | 3 | 0 | 0 |' ) assert generate_text_table_strategy('BTC', 2, all_results=results) == result_str @@ -111,4 +103,4 @@ def test_generate_edge_table(edge_conf, mocker): assert generate_edge_table(results).count(':|') == 7 assert generate_edge_table(results).count('| ETH/BTC |') == 1 assert generate_edge_table(results).count( - '| risk reward ratio | required risk reward | expectancy |') == 1 + '| Risk Reward Ratio | Required Risk Reward | Expectancy |') == 1 From aa2cb937b145f7a87b8044fe17e4d945c617ba2c Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 7 Feb 2020 03:54:47 +0100 Subject: [PATCH 1643/3421] flake8 :) --- tests/optimize/test_optimize_reports.py | 36 ++++++++++++++++--------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index c31b10290..57e928cca 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -22,10 +22,14 @@ def test_generate_text_table(default_conf, mocker): ) result_str = ( - '| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses |\n' - '|:--------|-------:|---------------:|---------------:|-----------------:|---------------:|:---------------|-------:|--------:|---------:|\n' - '| ETH/BTC | 2 | 15.00 | 30.00 | 0.60000000 | 15.00 | 0:20:00 | 2 | 0 | 0 |\n' - '| TOTAL | 2 | 15.00 | 30.00 | 0.60000000 | 15.00 | 0:20:00 | 2 | 0 | 0 |' + '| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC |' + ' Tot Profit % | Avg Duration | Wins | Draws | Losses |\n' + '|:--------|-------:|---------------:|---------------:|-----------------:|' + '---------------:|:---------------|-------:|--------:|---------:|\n' + '| ETH/BTC | 2 | 15.00 | 30.00 | 0.60000000 |' + ' 15.00 | 0:20:00 | 2 | 0 | 0 |\n' + '| TOTAL | 2 | 15.00 | 30.00 | 0.60000000 |' + ' 15.00 | 0:20:00 | 2 | 0 | 0 |' ) assert generate_text_table(data={'ETH/BTC': {}}, stake_currency='BTC', max_open_trades=2, @@ -48,10 +52,14 @@ def test_generate_text_table_sell_reason(default_conf, mocker): ) result_str = ( - '| Sell Reason | Sells | Wins | Draws | Losses | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % |\n' - '|:--------------|--------:|-------:|--------:|---------:|---------------:|---------------:|-----------------:|---------------:|\n' - '| roi | 2 | 2 | 0 | 0 | 15 | 30 | 0.6 | 15 |\n' - '| stop_loss | 1 | 0 | 0 | 1 | -10 | -10 | -0.2 | -5 |' + '| Sell Reason | Sells | Wins | Draws | Losses |' + ' Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % |\n' + '|:--------------|--------:|-------:|--------:|---------:|' + '---------------:|---------------:|-----------------:|---------------:|\n' + '| roi | 2 | 2 | 0 | 0 |' + ' 15 | 30 | 0.6 | 15 |\n' + '| stop_loss | 1 | 0 | 0 | 1 |' + ' -10 | -10 | -0.2 | -5 |' ) assert generate_text_table_sell_reason( data={'ETH/BTC': {}}, @@ -87,10 +95,14 @@ def test_generate_text_table_strategy(default_conf, mocker): ) result_str = ( - '| Strategy | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses |\n' - '|:--------------|-------:|---------------:|---------------:|-----------------:|---------------:|:---------------|-------:|--------:|---------:|\n' - '| TestStrategy1 | 3 | 20.00 | 60.00 | 1.10000000 | 30.00 | 0:17:00 | 3 | 0 | 0 |\n' - '| TestStrategy2 | 3 | 30.00 | 90.00 | 1.30000000 | 45.00 | 0:20:00 | 3 | 0 | 0 |' + '| Strategy | Buys | Avg Profit % | Cum Profit % | Tot' + ' Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses |\n' + '|:--------------|-------:|---------------:|---------------:|------' + '-----------:|---------------:|:---------------|-------:|--------:|---------:|\n' + '| TestStrategy1 | 3 | 20.00 | 60.00 | ' + ' 1.10000000 | 30.00 | 0:17:00 | 3 | 0 | 0 |\n' + '| TestStrategy2 | 3 | 30.00 | 90.00 | ' + ' 1.30000000 | 45.00 | 0:20:00 | 3 | 0 | 0 |' ) assert generate_text_table_strategy('BTC', 2, all_results=results) == result_str From 44d67389d2b88133c8ca745c4574b6c9fb4c3e10 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Tue, 4 Feb 2020 02:02:57 +0100 Subject: [PATCH 1644/3421] initial push of sortino, work not done, still need own tests --- freqtrade/optimize/hyperopt_loss_sortino.py | 49 +++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 freqtrade/optimize/hyperopt_loss_sortino.py diff --git a/freqtrade/optimize/hyperopt_loss_sortino.py b/freqtrade/optimize/hyperopt_loss_sortino.py new file mode 100644 index 000000000..e84ecb402 --- /dev/null +++ b/freqtrade/optimize/hyperopt_loss_sortino.py @@ -0,0 +1,49 @@ +""" +SortinoHyperOptLoss + +This module defines the alternative HyperOptLoss class which can be used for +Hyperoptimization. +""" +from datetime import datetime + +from pandas import DataFrame +import numpy as np + +from freqtrade.optimize.hyperopt import IHyperOptLoss + + +class SortinoHyperOptLoss(IHyperOptLoss): + """ + Defines the loss function for hyperopt. + + This implementation uses the Sharpe Ratio calculation. + """ + + @staticmethod + def hyperopt_loss_function(results: DataFrame, trade_count: int, + min_date: datetime, max_date: datetime, + *args, **kwargs) -> float: + """ + Objective function, returns smaller number for more optimal results. + + Uses Sharpe Ratio calculation. + """ + total_profit = results["profit_percent"] + days_period = (max_date - min_date).days + + # adding slippage of 0.1% per trade + total_profit = total_profit - 0.0005 + expected_returns_mean = total_profit.sum() / days_period + + results['downside_returns'] = 0 + results.loc[total_profit < 0, 'downside_returns'] = results['profit_percent'] + down_stdev = np.std(results['downside_returns']) + + if np.std(total_profit) != 0.0: + sortino_ratio = expected_returns_mean / down_stdev * np.sqrt(365) + else: + # Define high (negative) sharpe ratio to be clear that this is NOT optimal. + sortino_ratio = -20. + + # print(expected_returns_mean, down_stdev, sortino_ratio) + return -sortino_ratio From deb0b7ad675b16cdbbde41d289fbe45840689c9b Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 7 Feb 2020 01:18:15 +0100 Subject: [PATCH 1645/3421] Added both SortinoHyperOptLoss and SortinoHyperOptLossDaily --- freqtrade/optimize/hyperopt_loss_sortino.py | 6 +- .../optimize/hyperopt_loss_sortino_daily.py | 64 +++++++++++++++++++ 2 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 freqtrade/optimize/hyperopt_loss_sortino_daily.py diff --git a/freqtrade/optimize/hyperopt_loss_sortino.py b/freqtrade/optimize/hyperopt_loss_sortino.py index e84ecb402..83f644a43 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino.py +++ b/freqtrade/optimize/hyperopt_loss_sortino.py @@ -16,7 +16,7 @@ class SortinoHyperOptLoss(IHyperOptLoss): """ Defines the loss function for hyperopt. - This implementation uses the Sharpe Ratio calculation. + This implementation uses the Sortino Ratio calculation. """ @staticmethod @@ -26,7 +26,7 @@ class SortinoHyperOptLoss(IHyperOptLoss): """ Objective function, returns smaller number for more optimal results. - Uses Sharpe Ratio calculation. + Uses Sortino Ratio calculation. """ total_profit = results["profit_percent"] days_period = (max_date - min_date).days @@ -42,7 +42,7 @@ class SortinoHyperOptLoss(IHyperOptLoss): if np.std(total_profit) != 0.0: sortino_ratio = expected_returns_mean / down_stdev * np.sqrt(365) else: - # Define high (negative) sharpe ratio to be clear that this is NOT optimal. + # Define high (negative) sortino ratio to be clear that this is NOT optimal. sortino_ratio = -20. # print(expected_returns_mean, down_stdev, sortino_ratio) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py new file mode 100644 index 000000000..b59baabcb --- /dev/null +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -0,0 +1,64 @@ +""" +SortinoHyperOptLossDaily + +This module defines the alternative HyperOptLoss class which can be used for +Hyperoptimization. +""" +import math +from datetime import datetime + +from pandas import DataFrame, date_range + +from freqtrade.optimize.hyperopt import IHyperOptLoss + + +class SortinoHyperOptLossDaily(IHyperOptLoss): + """ + Defines the loss function for hyperopt. + + This implementation uses the Sortino Ratio calculation. + """ + + @staticmethod + def hyperopt_loss_function(results: DataFrame, trade_count: int, + min_date: datetime, max_date: datetime, + *args, **kwargs) -> float: + """ + Objective function, returns smaller number for more optimal results. + + Uses Sortino Ratio calculation. + """ + resample_freq = '1D' + slippage_per_trade_ratio = 0.0005 + days_in_year = 365 + annual_risk_free_rate = 0.0 + risk_free_rate = annual_risk_free_rate / days_in_year + + # apply slippage per trade to profit_percent + results.loc[:, 'profit_percent_after_slippage'] = \ + results['profit_percent'] - slippage_per_trade_ratio + + # create the index within the min_date and end max_date + t_index = date_range(start=min_date, end=max_date, freq=resample_freq) + + sum_daily = ( + results.resample(resample_freq, on='close_time').agg( + {"profit_percent_after_slippage": sum}).reindex(t_index).fillna(0) + ) + + total_profit = sum_daily["profit_percent_after_slippage"] - risk_free_rate + expected_returns_mean = total_profit.mean() + + results['downside_returns'] = 0 + results.loc[total_profit < 0, 'downside_returns'] = results['profit_percent'] + down_stdev = results['downside_returns'].std() + + if (down_stdev != 0.): + sortino_ratio = expected_returns_mean / down_stdev * math.sqrt(days_in_year) + else: + # Define high (negative) sortino ratio to be clear that this is NOT optimal. + sortino_ratio = -20. + + # print(t_index, sum_daily, total_profit) + # print(risk_free_rate, expected_returns_mean, down_stdev, sortino_ratio) + return -sortino_ratio From b56a1f060318c22fa414aa0060eeb9c7c0754ac9 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Tue, 4 Feb 2020 02:02:57 +0100 Subject: [PATCH 1646/3421] initial push of sortino, work not done, still need own tests --- freqtrade/optimize/hyperopt_loss_sortino.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/hyperopt_loss_sortino.py b/freqtrade/optimize/hyperopt_loss_sortino.py index 83f644a43..e84ecb402 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino.py +++ b/freqtrade/optimize/hyperopt_loss_sortino.py @@ -16,7 +16,7 @@ class SortinoHyperOptLoss(IHyperOptLoss): """ Defines the loss function for hyperopt. - This implementation uses the Sortino Ratio calculation. + This implementation uses the Sharpe Ratio calculation. """ @staticmethod @@ -26,7 +26,7 @@ class SortinoHyperOptLoss(IHyperOptLoss): """ Objective function, returns smaller number for more optimal results. - Uses Sortino Ratio calculation. + Uses Sharpe Ratio calculation. """ total_profit = results["profit_percent"] days_period = (max_date - min_date).days @@ -42,7 +42,7 @@ class SortinoHyperOptLoss(IHyperOptLoss): if np.std(total_profit) != 0.0: sortino_ratio = expected_returns_mean / down_stdev * np.sqrt(365) else: - # Define high (negative) sortino ratio to be clear that this is NOT optimal. + # Define high (negative) sharpe ratio to be clear that this is NOT optimal. sortino_ratio = -20. # print(expected_returns_mean, down_stdev, sortino_ratio) From 728ab0ff2115dac6affd80c5b6b5f6bfb4e85a71 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 7 Feb 2020 01:18:15 +0100 Subject: [PATCH 1647/3421] Added both SortinoHyperOptLoss and SortinoHyperOptLossDaily --- freqtrade/optimize/hyperopt_loss_sortino.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/hyperopt_loss_sortino.py b/freqtrade/optimize/hyperopt_loss_sortino.py index e84ecb402..83f644a43 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino.py +++ b/freqtrade/optimize/hyperopt_loss_sortino.py @@ -16,7 +16,7 @@ class SortinoHyperOptLoss(IHyperOptLoss): """ Defines the loss function for hyperopt. - This implementation uses the Sharpe Ratio calculation. + This implementation uses the Sortino Ratio calculation. """ @staticmethod @@ -26,7 +26,7 @@ class SortinoHyperOptLoss(IHyperOptLoss): """ Objective function, returns smaller number for more optimal results. - Uses Sharpe Ratio calculation. + Uses Sortino Ratio calculation. """ total_profit = results["profit_percent"] days_period = (max_date - min_date).days @@ -42,7 +42,7 @@ class SortinoHyperOptLoss(IHyperOptLoss): if np.std(total_profit) != 0.0: sortino_ratio = expected_returns_mean / down_stdev * np.sqrt(365) else: - # Define high (negative) sharpe ratio to be clear that this is NOT optimal. + # Define high (negative) sortino ratio to be clear that this is NOT optimal. sortino_ratio = -20. # print(expected_returns_mean, down_stdev, sortino_ratio) From 9bcc5d2eedb07417a0a468b3b6fa6514bc3fe2fd Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 7 Feb 2020 01:24:03 +0100 Subject: [PATCH 1648/3421] fixed downside_returns to read from profit_percent_after_slippage --- freqtrade/optimize/hyperopt_loss_sortino_daily.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index b59baabcb..0739379f6 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -50,7 +50,7 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): expected_returns_mean = total_profit.mean() results['downside_returns'] = 0 - results.loc[total_profit < 0, 'downside_returns'] = results['profit_percent'] + results.loc[total_profit < 0, 'downside_returns'] = results['profit_percent_after_slippage'] down_stdev = results['downside_returns'].std() if (down_stdev != 0.): From be34dc463b31e4698638d72dc2c295f2c3ec91f5 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 7 Feb 2020 01:30:03 +0100 Subject: [PATCH 1649/3421] fixed bad commit From 951a19fb00f7e7203a430a254b583eca654cfd08 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 7 Feb 2020 01:50:51 +0100 Subject: [PATCH 1650/3421] added tests for both sortino methods --- tests/optimize/test_hyperopt.py | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index b3356bd6d..5cdbe7b5a 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -360,6 +360,42 @@ def test_sharpe_loss_daily_prefers_higher_profits(default_conf, hyperopt_results assert under > correct +def test_sortino_loss_prefers_higher_profits(default_conf, hyperopt_results) -> None: + results_over = hyperopt_results.copy() + results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 + results_under = hyperopt_results.copy() + results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 + + default_conf.update({'hyperopt_loss': 'SortinoHyperOptLoss'}) + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) + correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + assert over < correct + assert under > correct + + +def test_sortino_loss_daily_prefers_higher_profits(default_conf, hyperopt_results) -> None: + results_over = hyperopt_results.copy() + results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 + results_under = hyperopt_results.copy() + results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 + + default_conf.update({'hyperopt_loss': 'SortinoHyperOptLossDaily'}) + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) + correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + assert over < correct + assert under > correct + + def test_onlyprofit_loss_prefers_higher_profits(default_conf, hyperopt_results) -> None: results_over = hyperopt_results.copy() results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 From a46b7bcd6d7705bb4d2c6adc4c85ddbf8d2ad18e Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 7 Feb 2020 02:12:24 +0100 Subject: [PATCH 1651/3421] more fixes... --- freqtrade/optimize/hyperopt_loss_sortino_daily.py | 8 +++++--- tests/optimize/test_hyperopt.py | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index 0739379f6..31482b981 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -47,11 +47,13 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): ) total_profit = sum_daily["profit_percent_after_slippage"] - risk_free_rate + total_downside = sum_daily['downside_returns'] - risk_free_rate expected_returns_mean = total_profit.mean() - results['downside_returns'] = 0 - results.loc[total_profit < 0, 'downside_returns'] = results['profit_percent_after_slippage'] - down_stdev = results['downside_returns'].std() + sum_daily['downside_returns'] = 0 + sum_daily.loc[total_profit < 0, + 'downside_returns'] = sum_daily['profit_percent_after_slippage'] + down_stdev = total_downside.std() if (down_stdev != 0.): sortino_ratio = expected_returns_mean / down_stdev * math.sqrt(days_in_year) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 5cdbe7b5a..a2a98b0fb 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -380,9 +380,9 @@ def test_sortino_loss_prefers_higher_profits(default_conf, hyperopt_results) -> def test_sortino_loss_daily_prefers_higher_profits(default_conf, hyperopt_results) -> None: results_over = hyperopt_results.copy() - results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 + results_over['profit_percent_after_slippage'] = hyperopt_results['profit_percent_after_slippage'] * 2 results_under = hyperopt_results.copy() - results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 + results_under['profit_percent_after_slippage'] = hyperopt_results['profit_percent_after_slippage'] / 2 default_conf.update({'hyperopt_loss': 'SortinoHyperOptLossDaily'}) hl = HyperOptLossResolver.load_hyperoptloss(default_conf) From e8b9d88eb68cdda26b666dd42b8be39dccfc9940 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 7 Feb 2020 02:14:12 +0100 Subject: [PATCH 1652/3421] moved line for total_downside --- freqtrade/optimize/hyperopt_loss_sortino_daily.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index 31482b981..891e2bf1c 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -47,12 +47,12 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): ) total_profit = sum_daily["profit_percent_after_slippage"] - risk_free_rate - total_downside = sum_daily['downside_returns'] - risk_free_rate expected_returns_mean = total_profit.mean() sum_daily['downside_returns'] = 0 sum_daily.loc[total_profit < 0, 'downside_returns'] = sum_daily['profit_percent_after_slippage'] + total_downside = sum_daily['downside_returns'] - risk_free_rate down_stdev = total_downside.std() if (down_stdev != 0.): From 6b279f297c1eb0e8f75957f7562fc2b6784677fe Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 7 Feb 2020 02:22:05 +0100 Subject: [PATCH 1653/3421] fixed test --- tests/optimize/test_hyperopt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index a2a98b0fb..5cdbe7b5a 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -380,9 +380,9 @@ def test_sortino_loss_prefers_higher_profits(default_conf, hyperopt_results) -> def test_sortino_loss_daily_prefers_higher_profits(default_conf, hyperopt_results) -> None: results_over = hyperopt_results.copy() - results_over['profit_percent_after_slippage'] = hyperopt_results['profit_percent_after_slippage'] * 2 + results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 results_under = hyperopt_results.copy() - results_under['profit_percent_after_slippage'] = hyperopt_results['profit_percent_after_slippage'] / 2 + results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 default_conf.update({'hyperopt_loss': 'SortinoHyperOptLossDaily'}) hl = HyperOptLossResolver.load_hyperoptloss(default_conf) From a893f70e49188ad7711d0b9db4b24780baeb20c9 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 8 Feb 2020 02:21:39 +0300 Subject: [PATCH 1654/3421] Replace NXT with XRP in config.json.example --- config.json.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.json.example b/config.json.example index 8b85e71eb..c62b8240c 100644 --- a/config.json.example +++ b/config.json.example @@ -44,7 +44,7 @@ "DASH/BTC", "ZEC/BTC", "XLM/BTC", - "NXT/BTC", + "XRP/BTC", "TRX/BTC", "ADA/BTC", "XMR/BTC" From 28184201e471385d29a48629ce6a6bac7bbb39ec Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 8 Feb 2020 02:47:50 +0300 Subject: [PATCH 1655/3421] Align sample_hyperopt_advanced.py to hyperopt_interface.py --- freqtrade/templates/sample_hyperopt_advanced.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/freqtrade/templates/sample_hyperopt_advanced.py b/freqtrade/templates/sample_hyperopt_advanced.py index b4bbee3fb..e66ef948b 100644 --- a/freqtrade/templates/sample_hyperopt_advanced.py +++ b/freqtrade/templates/sample_hyperopt_advanced.py @@ -230,7 +230,7 @@ class AdvancedSampleHyperOpt(IHyperOpt): 'stoploss' optimization hyperspace. """ return [ - Real(-0.5, -0.02, name='stoploss'), + Real(-0.35, -0.02, name='stoploss'), ] @staticmethod @@ -249,8 +249,15 @@ class AdvancedSampleHyperOpt(IHyperOpt): # other 'trailing' hyperspace parameters. Categorical([True], name='trailing_stop'), - Real(0.02, 0.35, name='trailing_stop_positive'), - Real(0.01, 0.1, name='trailing_stop_positive_offset'), + Real(0.01, 0.35, name='trailing_stop_positive'), + + # 'trailing_stop_positive_offset' should be greater than 'trailing_stop_positive', + # so this intermediate parameter is used as the value of the difference between + # them. The value of the 'trailing_stop_positive_offset' is constructed in the + # generate_trailing_params() method. + # This is similar to the hyperspace dimensions used for constructing the ROI tables. + Real(0.001, 0.1, name='trailing_stop_positive_offset_p1'), + Categorical([True, False], name='trailing_only_offset_is_reached'), ] From 61ced5e926db56740550192db1cba34883a81374 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 8 Feb 2020 02:49:06 +0300 Subject: [PATCH 1656/3421] Fix typo --- freqtrade/optimize/hyperopt_interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index d7d917c19..b3cedef2c 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -207,7 +207,7 @@ class IHyperOpt(ABC): # so this intermediate parameter is used as the value of the difference between # them. The value of the 'trailing_stop_positive_offset' is constructed in the # generate_trailing_params() method. - # # This is similar to the hyperspace dimensions used for constructing the ROI tables. + # This is similar to the hyperspace dimensions used for constructing the ROI tables. Real(0.001, 0.1, name='trailing_stop_positive_offset_p1'), Categorical([True, False], name='trailing_only_offset_is_reached'), From a1fe3850e29d6cd04bbb4e2df182885dcca601c7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 8 Feb 2020 13:34:04 +0100 Subject: [PATCH 1657/3421] Improve docker-compose file to be ready to use --- docker-compose.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index cae98c3ee..3a4c4c2db 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,6 +3,18 @@ version: '3' services: freqtrade: image: freqtradeorg/freqtrade:master + # Build step - only needed when additional dependencies are needed + # build: + # context: . + # dockerfile: "./Dockerfile.technical" + restart: unless-stopped + container_name: freqtrade volumes: - "./user_data:/freqtrade/user_data" - - "./config.json:/freqtrade/config.json" + # Default command used when running `docker compose up` + command: > + trade + --logfile /freqtrade/user_data/freqtrade.log + --db-url sqlite:////freqtrade/user_data/tradesv3.sqlite + --config /freqtrade/user_data/config.json + --strategy SampleStrategy From f508324fc82641f5ccddc46940bff9baeda4f8ac Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 8 Feb 2020 13:38:45 +0100 Subject: [PATCH 1658/3421] Update docker documentation to be easier to use --- docs/docker.md | 127 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 124 insertions(+), 3 deletions(-) diff --git a/docs/docker.md b/docs/docker.md index d1684abc5..b1eb0b298 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -1,4 +1,4 @@ -# Using FreqTrade with Docker +# Using Freqtrade with Docker ## Install Docker @@ -8,13 +8,134 @@ Start by downloading and installing Docker CE for your platform: * [Windows](https://docs.docker.com/docker-for-windows/install/) * [Linux](https://docs.docker.com/install/) +Optionally, [docker-compose](https://docs.docker.com/compose/install/) should be installed and available to follow the docker quick start guide. + Once you have Docker installed, simply prepare the config file (e.g. `config.json`) and run the image for `freqtrade` as explained below. -## Download the official FreqTrade docker image +## Freqtrade with docker-compose + +Freqtrade provides an official Docker image on [Dockerhub](https://hub.docker.com/r/freqtradeorg/freqtrade/), as well as a [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) ready for usage. + +!!! Note + The following section assumes that docker and docker-compose is installed and available to the logged in user. + +!!! Note + All below comands use relative directories and will have to be executed from the directory containing the `docker-compose.yml` file. + +### Docker quick start + +Create a new directory and place the [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) in this directory. + +``` bash +mkdir freqtrade +cd freqtrade/ +# Download the docker-compose file from the repository +curl https://raw.githubusercontent.com/freqtrade/freqtrade/develop/docker-compose.yml -o docker-compose.yml + +# Pull the freqtrade image +docker-compose pull + +# Create user directory structure +docker-compose run --rm freqtrade create-userdir --userdir user_data + +# Create configuration - Requires answering interactive questions +docker-compose run --rm freqtrade new-config --config user_data/config.json +``` + +The above snippet will create a directory called "freqtrade" - download the latest compose file and pull the freqtrade image. +The last 2 steps will create the user-directory, as well as a default configuration based on your selections. + +#### Adding your strategy + +The configuration is now available as `user_data/config.json`. +You should now copy your strategy to `user_data/strategies/` - and add the Strategy class name to the `docker-compose.yml` file, replacing `SampleStrategy`. + +Once this is done, you're ready to launch the bot in trading mode. + +``` bash +docker-compose up -d +``` + +#### Docker-compose logs + +Logs will be written to `user_data/freqtrade.log`. +Alternatively, you can check the latest logs using `docker-compose logs -f`. + +#### Database + +The database will be in the user_data directory as well, and will be called `user_data/tradesv3.sqlite`. + +#### Updating freqtrade with docker-compose + +To update freqtrade when using docker-compose is as simple as running the following 2 commands: + +``` bash +# Download the latest image +docker-compose pull +# Restart the image +docker-compose up -d +``` + +This will first pull the latest image, and will then restart the container with the just pulled version. + +!!! Note + You should always check the changelog for breaking changes / manual interventions required and make sure the bot starts correctly after the update. + +#### Going from here + +Advanced users may edit the docker-compose file further to include all possible options or arguments. + +All possible freqtrade arguments will be available by running `docker-compose run --rm freqtrade `. + +!!! Note "`docker-compose run --rm`" + Inluding `--rm` will clean up the container after completion, and is highly recommended for all modes except trading mode (`freqtrade trade`). + +##### Example: Download data with docker-compose + +Downloading backtest data for one pair from binance. The data will be stored in the host directory `user_data/data/`. + +``` bash +docker-compose run --rm freqtrade download-data --pairs ETH/BTC --exchange binance --days 5 -t 1h +``` + +Head over to the [Data Downloading Documentation](data-download.md) for more details on downloading data. + +##### Example: Backtest with docker-compose + +Backtesting in docker-containers: + +``` bash +docker-compose run --rm freqtrade backtesting --config user_data/config.json --strategy SampleStrategy --timerange 20190801-20191001 -i 5m +``` + +Head over to the [Backtesting Documentation](backtesting.md) to learn more. + +#### Additional dependencies with docker-compose + +If your strategy requires dependencies not included in the default image (like [technical](https://github.com/freqtrade/technical)) - it will be necessary to build the image on your host. +For this, please create a Dockerfile containing installation steps for the additional dependencies (have a look at [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/Dockerfile.technical) for an example). + +You'll then also need to modify the `docker-compose.yml` file and uncomment the build step, as well as rename the image to avoid naming collisions. + +``` yaml + image: freqtrade_custom + build: + context: . + dockerfile: "./Dockerfile." +``` + +You can then run `docker-compose build` to build the docker image, and run it using the commands described above. + +## Docker - without docker compose + +!!! Warning + The below documentation is provided for completeness and assumes that you are somewhat familiar with running docker containers. If you're just starting out with docker, we recommend to follow the [Freqtrade with docker-compose](#freqtrade-with-docker-compose) instructions. + +### Download the official Freqtrade docker image Pull the image from docker hub. -Branches / tags available can be checked out on [Dockerhub](https://hub.docker.com/r/freqtradeorg/freqtrade/tags/). +Branches / tags available can be checked out on [Dockerhub tags page](https://hub.docker.com/r/freqtradeorg/freqtrade/tags/). ```bash docker pull freqtradeorg/freqtrade:develop From 52f4187129566deeed3121752d34e5131410a87e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 8 Feb 2020 13:51:55 +0100 Subject: [PATCH 1659/3421] Allow exchange templates to configure outside-options too --- freqtrade/commands/build_config_commands.py | 2 +- freqtrade/templates/base_config.json.j2 | 4 +- .../subtemplates/exchange_binance.j2 | 80 ++++++++++--------- .../subtemplates/exchange_generic.j2 | 24 +++--- .../templates/subtemplates/exchange_kraken.j2 | 67 ++++++++-------- 5 files changed, 91 insertions(+), 86 deletions(-) diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py index 838fd510a..7dd1be607 100644 --- a/freqtrade/commands/build_config_commands.py +++ b/freqtrade/commands/build_config_commands.py @@ -90,10 +90,10 @@ def ask_user_config() -> Dict[str, Any]: "name": "exchange_name", "message": "Select exchange", "choices": [ - "bittrex", "binance", "binanceje", "binanceus", + "bittrex", "kraken", Separator(), "other", diff --git a/freqtrade/templates/base_config.json.j2 b/freqtrade/templates/base_config.json.j2 index 1370bfa80..0a4f92c4b 100644 --- a/freqtrade/templates/base_config.json.j2 +++ b/freqtrade/templates/base_config.json.j2 @@ -27,9 +27,7 @@ "sell_profit_only": false, "ignore_roi_if_buy_signal": false }, - "exchange": { - {{ exchange | indent(8) }} - }, + {{ exchange | indent(4) }}, "pairlists": [ {"method": "StaticPairList"} ], diff --git a/freqtrade/templates/subtemplates/exchange_binance.j2 b/freqtrade/templates/subtemplates/exchange_binance.j2 index c527d296b..03aa0560c 100644 --- a/freqtrade/templates/subtemplates/exchange_binance.j2 +++ b/freqtrade/templates/subtemplates/exchange_binance.j2 @@ -1,39 +1,41 @@ -"name": "{{ exchange_name | lower }}", -"key": "{{ exchange_key }}", -"secret": "{{ exchange_secret }}", -"ccxt_config": {"enableRateLimit": true}, -"ccxt_async_config": { - "enableRateLimit": true, - "rateLimit": 200 -}, -"pair_whitelist": [ - "ALGO/BTC", - "ATOM/BTC", - "BAT/BTC", - "BCH/BTC", - "BRD/BTC", - "EOS/BTC", - "ETH/BTC", - "IOTA/BTC", - "LINK/BTC", - "LTC/BTC", - "NEO/BTC", - "NXS/BTC", - "XMR/BTC", - "XRP/BTC", - "XTZ/BTC" -], -"pair_blacklist": [ - "BNB/BTC", - "BNB/BUSD", - "BNB/ETH", - "BNB/EUR", - "BNB/NGN", - "BNB/PAX", - "BNB/RUB", - "BNB/TRY", - "BNB/TUSD", - "BNB/USDC", - "BNB/USDS", - "BNB/USDT", -] +"exchange": { + "name": "{{ exchange_name | lower }}", + "key": "{{ exchange_key }}", + "secret": "{{ exchange_secret }}", + "ccxt_config": {"enableRateLimit": true}, + "ccxt_async_config": { + "enableRateLimit": true, + "rateLimit": 200 + }, + "pair_whitelist": [ + "ALGO/BTC", + "ATOM/BTC", + "BAT/BTC", + "BCH/BTC", + "BRD/BTC", + "EOS/BTC", + "ETH/BTC", + "IOTA/BTC", + "LINK/BTC", + "LTC/BTC", + "NEO/BTC", + "NXS/BTC", + "XMR/BTC", + "XRP/BTC", + "XTZ/BTC" + ], + "pair_blacklist": [ + "BNB/BTC", + "BNB/BUSD", + "BNB/ETH", + "BNB/EUR", + "BNB/NGN", + "BNB/PAX", + "BNB/RUB", + "BNB/TRY", + "BNB/TUSD", + "BNB/USDC", + "BNB/USDS", + "BNB/USDT", + ] +} diff --git a/freqtrade/templates/subtemplates/exchange_generic.j2 b/freqtrade/templates/subtemplates/exchange_generic.j2 index 33309de3b..ade9c2f28 100644 --- a/freqtrade/templates/subtemplates/exchange_generic.j2 +++ b/freqtrade/templates/subtemplates/exchange_generic.j2 @@ -1,13 +1,15 @@ -"name": "{{ exchange_name | lower }}", -"key": "{{ exchange_key }}", -"secret": "{{ exchange_secret }}", -"ccxt_config": {"enableRateLimit": true}, -"ccxt_async_config": { - "enableRateLimit": true -}, -"pair_whitelist": [ +"exchange": { + "name": "{{ exchange_name | lower }}", + "key": "{{ exchange_key }}", + "secret": "{{ exchange_secret }}", + "ccxt_config": {"enableRateLimit": true}, + "ccxt_async_config": { + "enableRateLimit": true + }, + "pair_whitelist": [ -], -"pair_blacklist": [ + ], + "pair_blacklist": [ -] + ] +} diff --git a/freqtrade/templates/subtemplates/exchange_kraken.j2 b/freqtrade/templates/subtemplates/exchange_kraken.j2 index 690828887..7139a0830 100644 --- a/freqtrade/templates/subtemplates/exchange_kraken.j2 +++ b/freqtrade/templates/subtemplates/exchange_kraken.j2 @@ -1,33 +1,36 @@ -"name": "kraken", -"key": "{{ exchange_key }}", -"secret": "{{ exchange_secret }}", -"ccxt_config": {"enableRateLimit": true}, -"ccxt_async_config": { - "enableRateLimit": true, - "rateLimit": 1000 -}, -"pair_whitelist": [ - "ADA/EUR", - "ATOM/EUR", - "BAT/EUR", - "BCH/EUR", - "BTC/EUR", - "DAI/EUR", - "DASH/EUR", - "EOS/EUR", - "ETC/EUR", - "ETH/EUR", - "LINK/EUR", - "LTC/EUR", - "QTUM/EUR", - "REP/EUR", - "WAVES/EUR", - "XLM/EUR", - "XMR/EUR", - "XRP/EUR", - "XTZ/EUR", - "ZEC/EUR" -], -"pair_blacklist": [ +"download_trades": true, +"exchange": { + "name": "kraken", + "key": "{{ exchange_key }}", + "secret": "{{ exchange_secret }}", + "ccxt_config": {"enableRateLimit": true}, + "ccxt_async_config": { + "enableRateLimit": true, + "rateLimit": 1000 + }, + "pair_whitelist": [ + "ADA/EUR", + "ATOM/EUR", + "BAT/EUR", + "BCH/EUR", + "BTC/EUR", + "DAI/EUR", + "DASH/EUR", + "EOS/EUR", + "ETC/EUR", + "ETH/EUR", + "LINK/EUR", + "LTC/EUR", + "QTUM/EUR", + "REP/EUR", + "WAVES/EUR", + "XLM/EUR", + "XMR/EUR", + "XRP/EUR", + "XTZ/EUR", + "ZEC/EUR" + ], + "pair_blacklist": [ -] + ] +} From 34f04668c19f719f712b34bd556f13c5fb3af1bc Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 8 Feb 2020 14:02:51 +0100 Subject: [PATCH 1660/3421] Add template for bittrex --- docs/utils.md | 1 - .../subtemplates/exchange_bittrex.j2 | 24 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 freqtrade/templates/subtemplates/exchange_bittrex.j2 diff --git a/docs/utils.md b/docs/utils.md index 66101d9bc..a986f040b 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -40,7 +40,6 @@ optional arguments: Creates a new configuration file, asking some questions which are important selections for a configuration. - ``` usage: freqtrade new-config [-h] [-c PATH] diff --git a/freqtrade/templates/subtemplates/exchange_bittrex.j2 b/freqtrade/templates/subtemplates/exchange_bittrex.j2 new file mode 100644 index 000000000..7a7e8e291 --- /dev/null +++ b/freqtrade/templates/subtemplates/exchange_bittrex.j2 @@ -0,0 +1,24 @@ +"exchange": { + "name": "{{ exchange_name | lower }}", + "key": "{{ exchange_key }}", + "secret": "{{ exchange_secret }}", + "ccxt_config": {"enableRateLimit": true}, + "ccxt_async_config": { + "enableRateLimit": true, + "rateLimit": 500 + }, + "pair_whitelist": [ + "ETH/BTC", + "LTC/BTC", + "ETC/BTC", + "DASH/BTC", + "ZEC/BTC", + "XLM/BTC", + "XRP/BTC", + "TRX/BTC", + "ADA/BTC", + "XMR/BTC" + ], + "pair_blacklist": [ + ] +} From c4031761fec25cb1193557cc09733451fa028612 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 8 Feb 2020 09:53:20 +0100 Subject: [PATCH 1661/3421] Don't validate exchange for data-download subcommand --- freqtrade/commands/data_commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index ddc2ca25b..aee144505 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -37,7 +37,7 @@ def start_download_data(args: Dict[str, Any]) -> None: pairs_not_available: List[str] = [] # Init exchange - exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config) + exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) try: if config.get('download_trades'): From f3b1161640507d91e7694f03e80095304bfdaf0a Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 8 Feb 2020 21:02:52 +0100 Subject: [PATCH 1662/3421] wide notifications fixes --- docs/configuration.md | 2 + docs/telegram-usage.md | 2 +- docs/webhook-config.md | 51 ++++++++++++ freqtrade/constants.py | 4 +- freqtrade/freqtradebot.py | 137 ++++++++++++++++++++++++--------- freqtrade/rpc/rpc.py | 14 ++-- freqtrade/rpc/telegram.py | 20 +++-- freqtrade/rpc/webhook.py | 4 + tests/rpc/test_rpc.py | 6 +- tests/rpc/test_rpc_telegram.py | 81 ++++++++++++++++--- tests/rpc/test_rpc_webhook.py | 46 ++++++----- tests/test_freqtradebot.py | 6 +- 12 files changed, 288 insertions(+), 85 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index c0404d647..53e554709 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -92,7 +92,9 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `webhook.enabled` | Enable usage of Webhook notifications
      ***Datatype:*** *Boolean* | `webhook.url` | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* | `webhook.webhookbuy` | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* +| `webhook.webhookbuycancel` | Payload to send on buy order cancel. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* | `webhook.webhooksell` | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* +| `webhook.webhooksellcancel` | Payload to send on sell order cancel. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* | `webhook.webhookstatus` | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* | `api_server.enabled` | Enable usage of API Server. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *Boolean* | `api_server.listen_ip_address` | Bind IP address. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *IPv4* diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md index ed0c21a6e..ac9cea3d6 100644 --- a/docs/telegram-usage.md +++ b/docs/telegram-usage.md @@ -55,7 +55,7 @@ official commands. You can ask at any moment for help with `/help`. | `/reload_conf` | | Reloads the configuration file | `/show_config` | | Shows part of the current configuration with relevant settings to operation | `/status` | | Lists all open trades -| `/status table` | | List all open trades in a table format +| `/status table` | | List all open trades in a table format. Pending buy orders are marked with an asterisk(*) | `/count` | | Displays number of trades used and available | `/profit` | | Display a summary of your profit/loss from close trades and some stats about your performance | `/forcesell ` | | Instantly sells the given trade (Ignoring `minimum_roi`). diff --git a/docs/webhook-config.md b/docs/webhook-config.md index 9e0a34eae..878b18e8a 100644 --- a/docs/webhook-config.md +++ b/docs/webhook-config.md @@ -15,11 +15,21 @@ Sample configuration (tested using IFTTT). "value2": "limit {limit:8f}", "value3": "{stake_amount:8f} {stake_currency}" }, + "webhookbuycancel": { + "value1": "Cancelling Buy {pair}", + "value2": "limit {limit:8f}", + "value3": "{stake_amount:8f} {stake_currency}" + }, "webhooksell": { "value1": "Selling {pair}", "value2": "limit {limit:8f}", "value3": "profit: {profit_amount:8f} {stake_currency}" }, + "webhooksellcancel": { + "value1": "Cancelling Sell {pair}", + "value2": "limit {limit:8f}", + "value3": "profit: {profit_amount:8f} {stake_currency}" + }, "webhookstatus": { "value1": "Status: {status}", "value2": "", @@ -40,10 +50,29 @@ Possible parameters are: * `exchange` * `pair` * `limit` +* `amount` * `stake_amount` * `stake_currency` * `fiat_currency` * `order_type` +* `open_rate` +* `current_rate` + +### Webhookbuycancel + +The fields in `webhook.webhookbuycancel` are filled when the bot cancels a buy order. Parameters are filled using string.format. +Possible parameters are: + +* `exchange` +* `pair` +* `limit` +* `amount` +* `stake_amount` +* `stake_currency` +* `fiat_currency` +* `order_type` +* `open_rate` +* `current_rate` ### Webhooksell @@ -57,6 +86,7 @@ Possible parameters are: * `amount` * `open_rate` * `current_rate` +* `close_rate` * `profit_amount` * `profit_percent` * `stake_currency` @@ -66,6 +96,27 @@ Possible parameters are: * `open_date` * `close_date` +### Webhooksellcancel + +The fields in `webhook.webhooksellcancel` are filled when the bot cancels a sell order. Parameters are filled using string.format. +Possible parameters are: + +* `exchange` +* `pair` +* `gain` +* `limit` +* `amount` +* `open_rate` +* `current_rate` +* `close_rate` +* `profit_amount` +* `profit_percent` +* `stake_currency` +* `fiat_currency` +* `sell_reason` +* `order_type` +* `open_date` + ### Webhookstatus The fields in `webhook.webhookstatus` are used for regular status messages (Started / Stopped / ...). Parameters are filled using string.format. diff --git a/freqtrade/constants.py b/freqtrade/constants.py index e68e741af..b34805e94 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -78,7 +78,7 @@ CONF_SCHEMA = { 'amend_last_stake_amount': {'type': 'boolean', 'default': False}, 'last_stake_amount_min_ratio': { 'type': 'number', 'minimum': 0.0, 'maximum': 1.0, 'default': 0.5 - }, + }, 'fiat_display_currency': {'type': 'string', 'enum': SUPPORTED_FIAT}, 'dry_run': {'type': 'boolean'}, 'dry_run_wallet': {'type': 'number', 'default': DRY_RUN_WALLET}, @@ -191,7 +191,9 @@ CONF_SCHEMA = { 'properties': { 'enabled': {'type': 'boolean'}, 'webhookbuy': {'type': 'object'}, + 'webhookbuycancel': {'type': 'object'}, 'webhooksell': {'type': 'object'}, + 'webhooksellcancel': {'type': 'object'}, 'webhookstatus': {'type': 'object'}, }, }, diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e51b3d550..2f57ca41b 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -234,7 +234,7 @@ class FreqtradeBot: return trades_created - def get_buy_rate(self, pair: str, tick: Dict = None) -> float: + def get_buy_rate(self, pair: str, refresh: bool = False, tick: Dict = None) -> float: """ Calculates bid target between current ask price and last price :return: float: Price @@ -253,7 +253,7 @@ class FreqtradeBot: else: if not tick: logger.info('Using Last Ask / Last Price') - ticker = self.exchange.fetch_ticker(pair) + ticker = self.exchange.fetch_ticker(pair, refresh) else: ticker = tick if ticker['ask'] < ticker['last']: @@ -404,7 +404,7 @@ class FreqtradeBot: stake_amount = self.get_trade_stake_amount(pair) if not stake_amount: - logger.debug("Stake amount is 0, ignoring possible trade for {pair}.") + logger.debug(f"Stake amount is 0, ignoring possible trade for {pair}.") return False logger.info(f"Buy signal found: about create a new trade with stake_amount: " @@ -414,10 +414,12 @@ class FreqtradeBot: if ((bid_check_dom.get('enabled', False)) and (bid_check_dom.get('bids_to_ask_delta', 0) > 0)): if self._check_depth_of_market_buy(pair, bid_check_dom): + logger.info(f'Executed Buy for {pair}.') return self.execute_buy(pair, stake_amount) else: return False + logger.info(f'Executed Buy for {pair}') return self.execute_buy(pair, stake_amount) else: return False @@ -450,7 +452,7 @@ class FreqtradeBot: """ Executes a limit buy for the given pair :param pair: pair for which we want to create a LIMIT_BUY - :return: None + :return: bool """ time_in_force = self.strategy.order_time_in_force['buy'] @@ -458,7 +460,7 @@ class FreqtradeBot: buy_limit_requested = price else: # Calculate price - buy_limit_requested = self.get_buy_rate(pair) + buy_limit_requested = self.get_buy_rate(pair, True) min_stake_amount = self._get_min_pair_stake_amount(pair, buy_limit_requested) if min_stake_amount is not None and min_stake_amount > stake_amount: @@ -547,11 +549,37 @@ class FreqtradeBot: 'type': RPCMessageType.BUY_NOTIFICATION, 'exchange': self.exchange.name.capitalize(), 'pair': trade.pair, - 'limit': trade.open_rate, + 'limit': trade.open_rate_requested, 'order_type': order_type, 'stake_amount': trade.stake_amount, 'stake_currency': self.config['stake_currency'], 'fiat_currency': self.config.get('fiat_display_currency', None), + 'amount': trade.amount, + 'open_date': trade.open_date or datetime.utcnow(), + 'current_rate': trade.open_rate_requested, + } + + # Send the message + self.rpc.send_msg(msg) + + def _notify_buy_cancel(self, trade: Trade, order_type: str) -> None: + """ + Sends rpc notification when a buy cancel occured. + """ + current_rate = self.get_buy_rate(trade.pair, False) + + msg = { + 'type': RPCMessageType.BUY_CANCEL_NOTIFICATION, + 'exchange': self.exchange.name.capitalize(), + 'pair': trade.pair, + 'limit': trade.open_rate_requested, + 'order_type': order_type, + 'stake_amount': trade.stake_amount, + 'stake_currency': self.config['stake_currency'], + 'fiat_currency': self.config.get('fiat_display_currency', None), + 'amount': trade.amount, + 'open_date': trade.open_date, + 'current_rate': current_rate, } # Send the message @@ -587,7 +615,7 @@ class FreqtradeBot: return trades_closed - def get_sell_rate(self, pair: str, refresh: bool) -> float: + def get_sell_rate(self, pair: str, refresh: bool = False) -> float: """ Get sell rate - either using get-ticker bid or first bid based on orderbook The orderbook portion is only used for rpc messaging, which would otherwise fail @@ -751,7 +779,7 @@ class FreqtradeBot: update_beat = self.strategy.order_types.get('stoploss_on_exchange_interval', 60) if (datetime.utcnow() - trade.stoploss_last_update).total_seconds() >= update_beat: # cancelling the current stoploss on exchange first - logger.info('Trailing stoploss: cancelling current stoploss on exchange (id:{%s})' + logger.info('Trailing stoploss: cancelling current stoploss on exchange (id:{%s}) ' 'in order to add another one ...', order['id']) try: self.exchange.cancel_order(order['id'], trade.pair) @@ -777,7 +805,7 @@ class FreqtradeBot: if should_sell.sell_flag: self.execute_sell(trade, sell_rate, should_sell.sell_type) - logger.info('executed sell, reason: %s', should_sell.sell_type) + logger.info(f'Executed Sell for {trade.pair}. Reason: {should_sell.sell_type}') return True return False @@ -820,41 +848,41 @@ class FreqtradeBot: if ((order['side'] == 'buy' and order['status'] == 'canceled') or (self._check_timed_out('buy', order))): - self.handle_timedout_limit_buy(trade, order) self.wallets.update() + order_type = self.strategy.order_types['buy'] + self._notify_buy_cancel(trade, order_type) elif ((order['side'] == 'sell' and order['status'] == 'canceled') or (self._check_timed_out('sell', order))): self.handle_timedout_limit_sell(trade, order) self.wallets.update() + order_type = self.strategy.order_types['sell'] + self._notify_sell_cancel(trade, order_type) - def handle_buy_order_full_cancel(self, trade: Trade, reason: str) -> None: - """Close trade in database and send message""" + def delete_trade(self, trade: Trade) -> None: + """Delete trade in database""" Trade.session.delete(trade) Trade.session.flush() - logger.info('Buy order %s for %s.', reason, trade) - self.rpc.send_msg({ - 'type': RPCMessageType.STATUS_NOTIFICATION, - 'status': f'Unfilled buy order for {trade.pair} {reason}' - }) def handle_timedout_limit_buy(self, trade: Trade, order: Dict) -> bool: """ Buy timeout - cancel order :return: True if order was fully cancelled """ - reason = "cancelled due to timeout" if order['status'] != 'canceled': + reason = "cancelled due to timeout" corder = self.exchange.cancel_order(trade.open_order_id, trade.pair) + logger.info('Buy order %s for %s.', reason, trade) else: # Order was cancelled already, so we can reuse the existing dict corder = order - reason = "canceled on Exchange" + reason = "cancelled on exchange" + logger.info('Buy order %s for %s.', reason, trade) if corder.get('remaining', order['remaining']) == order['amount']: # if trade is not partially completed, just delete the trade - self.handle_buy_order_full_cancel(trade, reason) + self.delete_trade(trade) return True # if trade is partially complete, edit the stake details for the trade @@ -878,10 +906,6 @@ class FreqtradeBot: trade.open_order_id = None logger.info('Partial buy order timeout for %s.', trade) - self.rpc.send_msg({ - 'type': RPCMessageType.STATUS_NOTIFICATION, - 'status': f'Remaining buy order for {trade.pair} cancelled due to timeout' - }) return False def handle_timedout_limit_sell(self, trade: Trade, order: Dict) -> bool: @@ -889,24 +913,22 @@ class FreqtradeBot: Sell timeout - cancel order and update trade :return: True if order was fully cancelled """ + # if trade is not partially completed, just cancel the trade if order['remaining'] == order['amount']: - # if trade is not partially completed, just cancel the trade if order["status"] != "canceled": - reason = "due to timeout" + reason = "cancelled due to timeout" + # if trade is not partially completed, just delete the trade self.exchange.cancel_order(trade.open_order_id, trade.pair) - logger.info('Sell order timeout for %s.', trade) + logger.info('Sell order %s for %s.', reason, trade) else: - reason = "on exchange" - logger.info('Sell order canceled on exchange for %s.', trade) + reason = "cancelled on exchange" + logger.info('Sell order %s for %s.', reason, trade) + trade.close_rate = None trade.close_profit = None trade.close_date = None trade.is_open = True trade.open_order_id = None - self.rpc.send_msg({ - 'type': RPCMessageType.STATUS_NOTIFICATION, - 'status': f'Unfilled sell order for {trade.pair} cancelled {reason}' - }) return True @@ -938,13 +960,13 @@ class FreqtradeBot: raise DependencyException( f"Not enough amount to sell. Trade-amount: {amount}, Wallet: {wallet_amount}") - def execute_sell(self, trade: Trade, limit: float, sell_reason: SellType) -> None: + def execute_sell(self, trade: Trade, limit: float, sell_reason: SellType) -> bool: """ Executes a limit sell for the given trade and limit :param trade: Trade instance :param limit: limit rate for the sell order :param sellreason: Reason the sell was triggered - :return: None + :return: bool """ sell_type = 'sell' if sell_reason in (SellType.STOP_LOSS, SellType.TRAILING_STOP_LOSS): @@ -965,7 +987,7 @@ class FreqtradeBot: order_type = self.strategy.order_types[sell_type] if sell_reason == SellType.EMERGENCY_SELL: - # Emergencysells (default to market!) + # Emergency sells (default to market!) order_type = self.strategy.order_types.get("emergencysell", "market") amount = self._safe_sell_amount(trade.pair, trade.amount) @@ -990,6 +1012,8 @@ class FreqtradeBot: self._notify_sell(trade, order_type) + return True + def _notify_sell(self, trade: Trade, order_type: str) -> None: """ Sends rpc notification when a sell occured. @@ -1006,7 +1030,7 @@ class FreqtradeBot: 'exchange': trade.exchange.capitalize(), 'pair': trade.pair, 'gain': gain, - 'limit': trade.close_rate_requested, + 'limit': profit_rate, 'order_type': order_type, 'amount': trade.amount, 'open_rate': trade.open_rate, @@ -1017,6 +1041,45 @@ class FreqtradeBot: 'open_date': trade.open_date, 'close_date': trade.close_date or datetime.utcnow(), 'stake_currency': self.config['stake_currency'], + 'fiat_currency': self.config.get('fiat_display_currency', None), + } + + if 'fiat_display_currency' in self.config: + msg.update({ + 'fiat_currency': self.config['fiat_display_currency'], + }) + + # Send the message + self.rpc.send_msg(msg) + + def _notify_sell_cancel(self, trade: Trade, order_type: str) -> None: + """ + Sends rpc notification when a sell cancel occured. + """ + profit_rate = trade.close_rate if trade.close_rate else trade.close_rate_requested + profit_trade = trade.calc_profit(rate=profit_rate) + # Use cached ticker here - it was updated seconds ago. + current_rate = self.get_sell_rate(trade.pair, False) + profit_percent = trade.calc_profit_ratio(profit_rate) + gain = "profit" if profit_percent > 0 else "loss" + + msg = { + 'type': RPCMessageType.SELL_CANCEL_NOTIFICATION, + 'exchange': trade.exchange.capitalize(), + 'pair': trade.pair, + 'gain': gain, + 'limit': profit_rate, + 'order_type': order_type, + 'amount': trade.amount, + 'open_rate': trade.open_rate, + 'current_rate': current_rate, + 'profit_amount': profit_trade, + 'profit_percent': profit_percent, + 'sell_reason': trade.sell_reason, + 'open_date': trade.open_date, + 'close_date': trade.close_date, + 'stake_currency': self.config['stake_currency'], + 'fiat_currency': self.config.get('fiat_display_currency', None), } if 'fiat_display_currency' in self.config: diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 7f5cfc101..c1efea79e 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -26,7 +26,9 @@ class RPCMessageType(Enum): WARNING_NOTIFICATION = 'warning' CUSTOM_NOTIFICATION = 'custom' BUY_NOTIFICATION = 'buy' + BUY_CANCEL_NOTIFICATION = 'buy_cancel' SELL_NOTIFICATION = 'sell' + SELL_CANCEL_NOTIFICATION = 'sell_cancel' def __repr__(self): return self.value @@ -39,6 +41,7 @@ class RPCException(Exception): raise RPCException('*Status:* `no active trade`') """ + def __init__(self, message: str) -> None: super().__init__(self) self.message = message @@ -157,15 +160,16 @@ class RPC: profit_str = f'{trade_perc:.2f}%' if self._fiat_converter: fiat_profit = self._fiat_converter.convert_amount( - trade_profit, - stake_currency, - fiat_display_currency - ) + trade_profit, + stake_currency, + fiat_display_currency + ) if fiat_profit and not isnan(fiat_profit): profit_str += f" ({fiat_profit:.2f})" trades_list.append([ trade.id, - trade.pair, + trade.pair + ['', '*'][trade.open_order_id is not None + and trade.close_rate_requested is None], shorten_date(arrow.get(trade.open_date).humanize(only_distance=True)), profit_str ]) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index e9ecdcff6..0dd7a8ffd 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -134,13 +134,18 @@ class Telegram(RPC): msg['stake_amount_fiat'] = 0 message = ("*{exchange}:* Buying {pair}\n" - "at rate `{limit:.8f}\n" - "({stake_amount:.6f} {stake_currency}").format(**msg) + "*Amount:* `{amount:.8f}`\n" + "*Open Rate:* `{limit:.8f}`\n" + "*Current Rate:* `{current_rate:.8f}`\n" + "*Total:* `({stake_amount:.6f} {stake_currency}").format(**msg) if msg.get('fiat_currency', None): - message += ",{stake_amount_fiat:.3f} {fiat_currency}".format(**msg) + message += ", {stake_amount_fiat:.3f} {fiat_currency}".format(**msg) message += ")`" + elif msg['type'] == RPCMessageType.BUY_CANCEL_NOTIFICATION: + message = "*{exchange}:* Cancelling Buy {pair}".format(**msg) + elif msg['type'] == RPCMessageType.SELL_NOTIFICATION: msg['amount'] = round(msg['amount'], 8) msg['profit_percent'] = round(msg['profit_percent'] * 100, 2) @@ -149,10 +154,10 @@ class Telegram(RPC): msg['duration_min'] = msg['duration'].total_seconds() / 60 message = ("*{exchange}:* Selling {pair}\n" - "*Rate:* `{limit:.8f}`\n" "*Amount:* `{amount:.8f}`\n" "*Open Rate:* `{open_rate:.8f}`\n" "*Current Rate:* `{current_rate:.8f}`\n" + "*Close Rate:* `{limit:.8f}`\n" "*Sell Reason:* `{sell_reason}`\n" "*Duration:* `{duration} ({duration_min:.1f} min)`\n" "*Profit:* `{profit_percent:.2f}%`").format(**msg) @@ -163,8 +168,11 @@ class Telegram(RPC): and self._fiat_converter): msg['profit_fiat'] = self._fiat_converter.convert_amount( msg['profit_amount'], msg['stake_currency'], msg['fiat_currency']) - message += ('` ({gain}: {profit_amount:.8f} {stake_currency}`' - '` / {profit_fiat:.3f} {fiat_currency})`').format(**msg) + message += (' `({gain}: {profit_amount:.8f} {stake_currency}' + ' / {profit_fiat:.3f} {fiat_currency})`').format(**msg) + + elif msg['type'] == RPCMessageType.SELL_CANCEL_NOTIFICATION: + message = "*{exchange}:* Cancelling Sell {pair}".format(**msg) elif msg['type'] == RPCMessageType.STATUS_NOTIFICATION: message = '*Status:* `{status}`'.format(**msg) diff --git a/freqtrade/rpc/webhook.py b/freqtrade/rpc/webhook.py index 37ca466de..1309663d4 100644 --- a/freqtrade/rpc/webhook.py +++ b/freqtrade/rpc/webhook.py @@ -41,8 +41,12 @@ class Webhook(RPC): if msg['type'] == RPCMessageType.BUY_NOTIFICATION: valuedict = self._config['webhook'].get('webhookbuy', None) + elif msg['type'] == RPCMessageType.BUY_CANCEL_NOTIFICATION: + valuedict = self._config['webhook'].get('webhookbuycancel', None) elif msg['type'] == RPCMessageType.SELL_NOTIFICATION: valuedict = self._config['webhook'].get('webhooksell', None) + elif msg['type'] == RPCMessageType.SELL_CANCEL_NOTIFICATION: + valuedict = self._config['webhook'].get('webhooksellcancel', None) elif msg['type'] in(RPCMessageType.STATUS_NOTIFICATION, RPCMessageType.CUSTOM_NOTIFICATION, RPCMessageType.WARNING_NOTIFICATION): diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 36fce1797..a35bfa0d6 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -122,7 +122,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: assert "Since" in headers assert "Pair" in headers assert 'instantly' == result[0][2] - assert 'ETH/BTC' == result[0][1] + assert 'ETH/BTC' in result[0][1] assert '-0.59%' == result[0][3] # Test with fiatconvert @@ -131,7 +131,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: assert "Since" in headers assert "Pair" in headers assert 'instantly' == result[0][2] - assert 'ETH/BTC' == result[0][1] + assert 'ETH/BTC' in result[0][1] assert '-0.59% (-0.09)' == result[0][3] mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', @@ -140,7 +140,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: rpc._freqtrade.exchange._cached_ticker = {} result, headers = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') assert 'instantly' == result[0][2] - assert 'ETH/BTC' == result[0][1] + assert 'ETH/BTC' in result[0][1] assert 'nan%' == result[0][3] diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index ffc29ee12..ae9c0c4dc 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -284,7 +284,7 @@ def test_status_table_handle(default_conf, update, ticker, fee, mocker) -> None: fields = re.sub('[ ]+', ' ', line[2].strip()).split(' ') assert int(fields[0]) == 1 - assert fields[1] == 'ETH/BTC' + assert 'ETH/BTC' in fields[1] assert msg_mock.call_count == 1 @@ -1200,12 +1200,35 @@ def test_send_msg_buy_notification(default_conf, mocker) -> None: 'stake_amount': 0.001, 'stake_amount_fiat': 0.0, 'stake_currency': 'BTC', - 'fiat_currency': 'USD' + 'fiat_currency': 'USD', + 'current_rate': 1.099e-05, + 'amount': 1333.3333333333335, + 'open_date': arrow.utcnow().shift(hours=-1) }) assert msg_mock.call_args[0][0] \ == '*Bittrex:* Buying ETH/BTC\n' \ - 'at rate `0.00001099\n' \ - '(0.001000 BTC,0.000 USD)`' + '*Amount:* `1333.33333333`\n' \ + '*Open Rate:* `0.00001099`\n' \ + '*Current Rate:* `0.00001099`\n' \ + '*Total:* `(0.001000 BTC, 0.000 USD)`' + + +def test_send_msg_buy_cancel_notification(default_conf, mocker) -> None: + msg_mock = MagicMock() + mocker.patch.multiple( + 'freqtrade.rpc.telegram.Telegram', + _init=MagicMock(), + _send_msg=msg_mock + ) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) + telegram = Telegram(freqtradebot) + telegram.send_msg({ + 'type': RPCMessageType.BUY_CANCEL_NOTIFICATION, + 'exchange': 'Bittrex', + 'pair': 'ETH/BTC', + }) + assert msg_mock.call_args[0][0] \ + == ('*Bittrex:* Cancelling Buy ETH/BTC') def test_send_msg_sell_notification(default_conf, mocker) -> None: @@ -1239,13 +1262,13 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: }) assert msg_mock.call_args[0][0] \ == ('*Binance:* Selling KEY/ETH\n' - '*Rate:* `0.00003201`\n' '*Amount:* `1333.33333333`\n' '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' + '*Close Rate:* `0.00003201`\n' '*Sell Reason:* `stop_loss`\n' '*Duration:* `1:00:00 (60.0 min)`\n' - '*Profit:* `-57.41%`` (loss: -0.05746268 ETH`` / -24.812 USD)`') + '*Profit:* `-57.41%` `(loss: -0.05746268 ETH / -24.812 USD)`') msg_mock.reset_mock() telegram.send_msg({ @@ -1267,10 +1290,10 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: }) assert msg_mock.call_args[0][0] \ == ('*Binance:* Selling KEY/ETH\n' - '*Rate:* `0.00003201`\n' '*Amount:* `1333.33333333`\n' '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' + '*Close Rate:* `0.00003201`\n' '*Sell Reason:* `stop_loss`\n' '*Duration:* `1 day, 2:30:00 (1590.0 min)`\n' '*Profit:* `-57.41%`') @@ -1278,6 +1301,37 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: telegram._fiat_converter.convert_amount = old_convamount +def test_send_msg_sell_cancel_notification(default_conf, mocker) -> None: + msg_mock = MagicMock() + mocker.patch.multiple( + 'freqtrade.rpc.telegram.Telegram', + _init=MagicMock(), + _send_msg=msg_mock + ) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) + telegram = Telegram(freqtradebot) + old_convamount = telegram._fiat_converter.convert_amount + telegram._fiat_converter.convert_amount = lambda a, b, c: -24.812 + telegram.send_msg({ + 'type': RPCMessageType.SELL_CANCEL_NOTIFICATION, + 'exchange': 'Binance', + 'pair': 'KEY/ETH', + }) + assert msg_mock.call_args[0][0] \ + == ('*Binance:* Cancelling Sell KEY/ETH') + + msg_mock.reset_mock() + telegram.send_msg({ + 'type': RPCMessageType.SELL_CANCEL_NOTIFICATION, + 'exchange': 'Binance', + 'pair': 'KEY/ETH', + }) + assert msg_mock.call_args[0][0] \ + == ('*Binance:* Cancelling Sell KEY/ETH') + # Reset singleton function to avoid random breaks + telegram._fiat_converter.convert_amount = old_convamount + + def test_send_msg_status_notification(default_conf, mocker) -> None: msg_mock = MagicMock() mocker.patch.multiple( @@ -1360,12 +1414,17 @@ def test_send_msg_buy_notification_no_fiat(default_conf, mocker) -> None: 'stake_amount': 0.001, 'stake_amount_fiat': 0.0, 'stake_currency': 'BTC', - 'fiat_currency': None + 'fiat_currency': None, + 'current_rate': 1.099e-05, + 'amount': 1333.3333333333335, + 'open_date': arrow.utcnow().shift(hours=-1) }) assert msg_mock.call_args[0][0] \ == '*Bittrex:* Buying ETH/BTC\n' \ - 'at rate `0.00001099\n' \ - '(0.001000 BTC)`' + '*Amount:* `1333.33333333`\n' \ + '*Open Rate:* `0.00001099`\n' \ + '*Current Rate:* `0.00001099`\n' \ + '*Total:* `(0.001000 BTC)`' def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None: @@ -1398,10 +1457,10 @@ def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None: }) assert msg_mock.call_args[0][0] \ == '*Binance:* Selling KEY/ETH\n' \ - '*Rate:* `0.00003201`\n' \ '*Amount:* `1333.33333333`\n' \ '*Open Rate:* `0.00007500`\n' \ '*Current Rate:* `0.00003201`\n' \ + '*Close Rate:* `0.00003201`\n' \ '*Sell Reason:* `stop_loss`\n' \ '*Duration:* `2:35:03 (155.1 min)`\n' \ '*Profit:* `-57.41%`' diff --git a/tests/rpc/test_rpc_webhook.py b/tests/rpc/test_rpc_webhook.py index c066aa8e7..3b9ce3f0d 100644 --- a/tests/rpc/test_rpc_webhook.py +++ b/tests/rpc/test_rpc_webhook.py @@ -13,24 +13,34 @@ from tests.conftest import get_patched_freqtradebot, log_has def get_webhook_dict() -> dict: return { - "enabled": True, - "url": "https://maker.ifttt.com/trigger/freqtrade_test/with/key/c764udvJ5jfSlswVRukZZ2/", - "webhookbuy": { - "value1": "Buying {pair}", - "value2": "limit {limit:8f}", - "value3": "{stake_amount:8f} {stake_currency}" - }, - "webhooksell": { - "value1": "Selling {pair}", - "value2": "limit {limit:8f}", - "value3": "profit: {profit_amount:8f} {stake_currency}" - }, - "webhookstatus": { - "value1": "Status: {status}", - "value2": "", - "value3": "" - } - } + "enabled": True, + "url": "https://maker.ifttt.com/trigger/freqtrade_test/with/key/c764udvJ5jfSlswVRukZZ2/", + "webhookbuy": { + "value1": "Buying {pair}", + "value2": "limit {limit:8f}", + "value3": "{stake_amount:8f} {stake_currency}" + }, + "webhookbuycancel": { + "value1": "Cancelling Buy {pair}", + "value2": "limit {limit:8f}", + "value3": "{stake_amount:8f} {stake_currency}" + }, + "webhooksell": { + "value1": "Selling {pair}", + "value2": "limit {limit:8f}", + "value3": "profit: {profit_amount:8f} {stake_currency}" + }, + "webhooksellcancel": { + "value1": "Cancelling Sell {pair}", + "value2": "limit {limit:8f}", + "value3": "profit: {profit_amount:8f} {stake_currency}" + }, + "webhookstatus": { + "value1": "Status: {status}", + "value2": "", + "value3": "" + } + } def test__init__(mocker, default_conf): diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index f334e4eb0..429d3599d 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -300,7 +300,7 @@ def test_edge_overrides_stoploss(limit_buy_order, fee, caplog, mocker, edge_conf # stoploss shoud be hit assert freqtrade.handle_trade(trade) is True - assert log_has('executed sell, reason: SellType.STOP_LOSS', caplog) + assert log_has('Executed Sell for NEO/BTC. Reason: SellType.STOP_LOSS', caplog) assert trade.sell_reason == SellType.STOP_LOSS.value @@ -1964,7 +1964,7 @@ def test_check_handle_cancelled_buy(default_conf, ticker, limit_buy_order_old, o trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() nb_trades = len(trades) assert nb_trades == 0 - assert log_has_re("Buy order canceled on Exchange for Trade.*", caplog) + assert log_has_re("Buy order cancelled on exchange for Trade.*", caplog) def test_check_handle_timedout_buy_exception(default_conf, ticker, limit_buy_order_old, open_trade, @@ -2045,7 +2045,7 @@ def test_check_handle_cancelled_sell(default_conf, ticker, limit_sell_order_old, assert cancel_order_mock.call_count == 0 assert rpc_mock.call_count == 1 assert open_trade.is_open is True - assert log_has_re("Sell order canceled on exchange for Trade.*", caplog) + assert log_has_re("Sell order cancelled on exchange for Trade.*", caplog) def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old_partial, From 4fad7a462cc067c6c91aaa5b970de881025a9f07 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 8 Feb 2020 21:19:07 +0100 Subject: [PATCH 1663/3421] fixes in webhook-config docs --- docs/webhook-config.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/webhook-config.md b/docs/webhook-config.md index 878b18e8a..b287fa71e 100644 --- a/docs/webhook-config.md +++ b/docs/webhook-config.md @@ -51,11 +51,11 @@ Possible parameters are: * `pair` * `limit` * `amount` +* `open_date` * `stake_amount` * `stake_currency` * `fiat_currency` * `order_type` -* `open_rate` * `current_rate` ### Webhookbuycancel @@ -67,11 +67,11 @@ Possible parameters are: * `pair` * `limit` * `amount` +* `open_date` * `stake_amount` * `stake_currency` * `fiat_currency` * `order_type` -* `open_rate` * `current_rate` ### Webhooksell @@ -86,7 +86,6 @@ Possible parameters are: * `amount` * `open_rate` * `current_rate` -* `close_rate` * `profit_amount` * `profit_percent` * `stake_currency` @@ -108,7 +107,6 @@ Possible parameters are: * `amount` * `open_rate` * `current_rate` -* `close_rate` * `profit_amount` * `profit_percent` * `stake_currency` @@ -116,6 +114,7 @@ Possible parameters are: * `sell_reason` * `order_type` * `open_date` +* `close_date` ### Webhookstatus From 879b5138228cc2052ab6bff3fd913080686828e6 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 8 Feb 2020 21:31:36 +0100 Subject: [PATCH 1664/3421] enhanced method description --- freqtrade/freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 2f57ca41b..5f1024f8c 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -452,7 +452,7 @@ class FreqtradeBot: """ Executes a limit buy for the given pair :param pair: pair for which we want to create a LIMIT_BUY - :return: bool + :return: True if a buy order is created, false if it fails. """ time_in_force = self.strategy.order_time_in_force['buy'] @@ -966,7 +966,7 @@ class FreqtradeBot: :param trade: Trade instance :param limit: limit rate for the sell order :param sellreason: Reason the sell was triggered - :return: bool + :return: True if it succeeds (supported) False (not supported) """ sell_type = 'sell' if sell_reason in (SellType.STOP_LOSS, SellType.TRAILING_STOP_LOSS): From 1a9787ac76d6df1f337c1889ccf3135ae8cdaa13 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 8 Feb 2020 21:53:34 +0100 Subject: [PATCH 1665/3421] Add validation for data-download relevant settings --- freqtrade/commands/data_commands.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index aee144505..e8e0f06d2 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -38,6 +38,11 @@ def start_download_data(args: Dict[str, Any]) -> None: # Init exchange exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) + # Manual validations of relevant settings + exchange.validate_pairs(config['pairs']) + for timeframe in config['timeframes']: + exchange.validate_timeframes(timeframe) + try: if config.get('download_trades'): From 636bd5acb5e8b66dab60879c50343a26dc8e15c6 Mon Sep 17 00:00:00 2001 From: Fredrik Rydin Date: Sat, 8 Feb 2020 23:21:42 +0100 Subject: [PATCH 1666/3421] Added filter options to "hyperopt-list" in order to easier find epochs. --profitable Select only profitable epochs. --min-avg-time INT Select epochs on above average time. --max-avg-time INT Select epochs on under average time. --min-avg-profit FLOAT Select epochs on above average profit. --min-total-profit FLOAT Select epochs on above total profit. --- docs/utils.md | 24 +++++++++--- freqtrade/commands/arguments.py | 3 +- freqtrade/commands/cli_options.py | 24 ++++++++++++ freqtrade/commands/hyperopt_commands.py | 47 ++++++++++++++++++------ freqtrade/configuration/configuration.py | 12 ++++++ 5 files changed, 91 insertions(+), 19 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index b0559f9cc..71039f174 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -135,15 +135,27 @@ Common arguments: ``` ``` freqtrade list-hyperopts --help -usage: freqtrade list-hyperopts [-h] [-v] [--logfile FILE] [-V] [-c PATH] - [-d PATH] [--userdir PATH] - [--hyperopt-path PATH] [-1] +usage: freqtrade hyperopt-list [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] [--best] + [--profitable] [--min-avg-time INT] + [--max-avg-time INT] [--min-avg-profit FLOAT] + [--min-total-profit FLOAT] [--no-color] + [--print-json] [--no-details] optional arguments: -h, --help show this help message and exit - --hyperopt-path PATH Specify additional lookup path for Hyperopt and - Hyperopt Loss functions. - -1, --one-column Print output in one column. + --best Select only best epochs. + --profitable Select only profitable epochs. + --min-avg-time INT Select epochs on above average time. + --max-avg-time INT Select epochs on under average time. + --min-avg-profit FLOAT + Select epochs on above average profit. + --min-total-profit FLOAT + Select epochs on above total profit. + --no-color Disable colorization of hyperopt results. May be + useful if you are redirecting output to a file. + --print-json Print best result detailization in JSON format. + --no-details Do not print best epoch details. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 1931a51be..2d02058f1 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -59,7 +59,8 @@ ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source", "ticker_interval"] -ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "print_colorized", +ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_list_min_avg_time", + "hyperopt_list_max_avg_time", "hyperopt_list_min_avg_profit", "hyperopt_list_min_total_profit", "print_colorized", "print_json", "hyperopt_list_no_details"] ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_show_index", diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 6d8d13129..0c6d64691 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -398,6 +398,30 @@ AVAILABLE_CLI_OPTIONS = { help='Select only best epochs.', action='store_true', ), + "hyperopt_list_min_avg_time": Arg( + '--min-avg-time', + help='Select epochs on above average time.', + type=check_int_nonzero, + metavar='INT', + ), + "hyperopt_list_max_avg_time": Arg( + '--max-avg-time', + help='Select epochs on under average time.', + type=check_int_nonzero, + metavar='INT', + ), + "hyperopt_list_min_avg_profit": Arg( + '--min-avg-profit', + help='Select epochs on above average profit.', + type=float, + metavar='FLOAT', + ), + "hyperopt_list_min_total_profit": Arg( + '--min-total-profit', + help='Select epochs on above total profit.', + type=float, + metavar='FLOAT', + ), "hyperopt_list_no_details": Arg( '--no-details', help='Do not print best epoch details.', diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index 5c6f25848..8472fcfe1 100644 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -19,13 +19,20 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - only_best = config.get('hyperopt_list_best', False) - only_profitable = config.get('hyperopt_list_profitable', False) print_colorized = config.get('print_colorized', False) print_json = config.get('print_json', False) no_details = config.get('hyperopt_list_no_details', False) no_header = False + filteroptions = { + 'only_best': config.get('hyperopt_list_best', False), + 'only_profitable': config.get('hyperopt_list_profitable', False), + 'filter_min_avg_time': config.get('hyperopt_list_min_avg_time', 0), + 'filter_max_avg_time': config.get('hyperopt_list_max_avg_time', 0), + 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', 0.0), + 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', 0.0) + } + trials_file = (config['user_data_dir'] / 'hyperopt_results' / 'hyperopt_results.pickle') @@ -33,7 +40,7 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: trials = Hyperopt.load_previous_results(trials_file) total_epochs = len(trials) - trials = _hyperopt_filter_trials(trials, only_best, only_profitable) + trials = _hyperopt_filter_trials(trials, filteroptions) # TODO: fetch the interval for epochs to print from the cli option epoch_start, epoch_stop = 0, None @@ -44,7 +51,7 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: try: # Human-friendly indexes used here (starting from 1) for val in trials[epoch_start:epoch_stop]: - Hyperopt.print_results_explanation(val, total_epochs, not only_best, print_colorized) + Hyperopt.print_results_explanation(val, total_epochs, not filteroptions['only_best'], print_colorized) except KeyboardInterrupt: print('User interrupted..') @@ -63,8 +70,14 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - only_best = config.get('hyperopt_list_best', False) - only_profitable = config.get('hyperopt_list_profitable', False) + filteroptions = { + 'only_best': config.get('hyperopt_list_best', False), + 'only_profitable': config.get('hyperopt_list_profitable', False), + 'filter_min_avg_time': config.get('hyperopt_list_min_avg_time', 0), + 'filter_max_avg_time': config.get('hyperopt_list_max_avg_time', 0), + 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', 0), + 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', 0) + } no_header = config.get('hyperopt_show_no_header', False) trials_file = (config['user_data_dir'] / @@ -74,7 +87,7 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: trials = Hyperopt.load_previous_results(trials_file) total_epochs = len(trials) - trials = _hyperopt_filter_trials(trials, only_best, only_profitable) + trials = _hyperopt_filter_trials(trials, filteroptions) trials_epochs = len(trials) n = config.get('hyperopt_show_index', -1) @@ -97,18 +110,28 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: header_str="Epoch details") -def _hyperopt_filter_trials(trials: List, only_best: bool, only_profitable: bool) -> List: +def _hyperopt_filter_trials(trials: List, filteroptions: dict) -> List: """ Filter our items from the list of hyperopt results """ - if only_best: + if filteroptions['only_best']: trials = [x for x in trials if x['is_best']] - if only_profitable: + if filteroptions['only_profitable']: trials = [x for x in trials if x['results_metrics']['profit'] > 0] + if not filteroptions['only_best']: + if filteroptions['filter_min_avg_time'] > 0: + trials = [x for x in trials if x['results_metrics']['duration'] > filteroptions['filter_min_avg_time']] + if filteroptions['filter_max_avg_time'] > 0: + trials = [x for x in trials if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time']] + if filteroptions['filter_min_avg_profit'] > 0: + trials = [x for x in trials if x['results_metrics']['avg_profit'] > filteroptions['filter_min_avg_profit']] + if filteroptions['filter_min_total_profit'] > 0: + trials = [x for x in trials if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit']] + logger.info(f"{len(trials)} " + - ("best " if only_best else "") + - ("profitable " if only_profitable else "") + + ("best " if filteroptions['only_best'] else "") + + ("profitable " if filteroptions['only_profitable'] else "") + "epochs found.") return trials diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index a8b7638c8..f7e87f3a1 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -310,6 +310,18 @@ class Configuration: self._args_to_config(config, argname='hyperopt_list_profitable', logstring='Parameter --profitable detected: {}') + self._args_to_config(config, argname='hyperopt_list_min_avg_time', + logstring='Parameter --min-avg-time detected: {}') + + self._args_to_config(config, argname='hyperopt_list_max_avg_time', + logstring='Parameter --max-avg-time detected: {}') + + self._args_to_config(config, argname='hyperopt_list_min_avg_profit', + logstring='Parameter --min-avg-profit detected: {}') + + self._args_to_config(config, argname='hyperopt_list_min_total_profit', + logstring='Parameter --min-total-profit detected: {}') + self._args_to_config(config, argname='hyperopt_list_no_details', logstring='Parameter --no-details detected: {}') From 2796d3d8a0c1af2c297170f030cc5cfbb4b9c924 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sun, 9 Feb 2020 00:11:58 +0100 Subject: [PATCH 1667/3421] added missing tests to increase coverage --- tests/rpc/test_rpc_webhook.py | 53 +++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/tests/rpc/test_rpc_webhook.py b/tests/rpc/test_rpc_webhook.py index 3b9ce3f0d..ab40047c0 100644 --- a/tests/rpc/test_rpc_webhook.py +++ b/tests/rpc/test_rpc_webhook.py @@ -54,6 +54,9 @@ def test_send_msg(default_conf, mocker): msg_mock = MagicMock() mocker.patch("freqtrade.rpc.webhook.Webhook._send_msg", msg_mock) webhook = Webhook(get_patched_freqtradebot(mocker, default_conf)) + # Test buy + msg_mock = MagicMock() + mocker.patch("freqtrade.rpc.webhook.Webhook._send_msg", msg_mock) msg = { 'type': RPCMessageType.BUY_NOTIFICATION, 'exchange': 'Bittrex', @@ -64,8 +67,6 @@ def test_send_msg(default_conf, mocker): 'stake_currency': 'BTC', 'fiat_currency': 'EUR' } - msg_mock = MagicMock() - mocker.patch("freqtrade.rpc.webhook.Webhook._send_msg", msg_mock) webhook.send_msg(msg=msg) assert msg_mock.call_count == 1 assert (msg_mock.call_args[0][0]["value1"] == @@ -74,6 +75,27 @@ def test_send_msg(default_conf, mocker): default_conf["webhook"]["webhookbuy"]["value2"].format(**msg)) assert (msg_mock.call_args[0][0]["value3"] == default_conf["webhook"]["webhookbuy"]["value3"].format(**msg)) + # Test buy cancel + msg_mock = MagicMock() + mocker.patch("freqtrade.rpc.webhook.Webhook._send_msg", msg_mock) + msg = { + 'type': RPCMessageType.BUY_CANCEL_NOTIFICATION, + 'exchange': 'Bittrex', + 'pair': 'ETH/BTC', + 'limit': 0.005, + 'stake_amount': 0.8, + 'stake_amount_fiat': 500, + 'stake_currency': 'BTC', + 'fiat_currency': 'EUR' + } + webhook.send_msg(msg=msg) + assert msg_mock.call_count == 1 + assert (msg_mock.call_args[0][0]["value1"] == + default_conf["webhook"]["webhookbuycancel"]["value1"].format(**msg)) + assert (msg_mock.call_args[0][0]["value2"] == + default_conf["webhook"]["webhookbuycancel"]["value2"].format(**msg)) + assert (msg_mock.call_args[0][0]["value3"] == + default_conf["webhook"]["webhookbuycancel"]["value3"].format(**msg)) # Test sell msg_mock = MagicMock() mocker.patch("freqtrade.rpc.webhook.Webhook._send_msg", msg_mock) @@ -100,7 +122,32 @@ def test_send_msg(default_conf, mocker): default_conf["webhook"]["webhooksell"]["value2"].format(**msg)) assert (msg_mock.call_args[0][0]["value3"] == default_conf["webhook"]["webhooksell"]["value3"].format(**msg)) - + # Test sell cancel + msg_mock = MagicMock() + mocker.patch("freqtrade.rpc.webhook.Webhook._send_msg", msg_mock) + msg = { + 'type': RPCMessageType.SELL_CANCEL_NOTIFICATION, + 'exchange': 'Bittrex', + 'pair': 'ETH/BTC', + 'gain': "profit", + 'limit': 0.005, + 'amount': 0.8, + 'order_type': 'limit', + 'open_rate': 0.004, + 'current_rate': 0.005, + 'profit_amount': 0.001, + 'profit_percent': 0.20, + 'stake_currency': 'BTC', + 'sell_reason': SellType.STOP_LOSS.value + } + webhook.send_msg(msg=msg) + assert msg_mock.call_count == 1 + assert (msg_mock.call_args[0][0]["value1"] == + default_conf["webhook"]["webhooksellcancel"]["value1"].format(**msg)) + assert (msg_mock.call_args[0][0]["value2"] == + default_conf["webhook"]["webhooksellcancel"]["value2"].format(**msg)) + assert (msg_mock.call_args[0][0]["value3"] == + default_conf["webhook"]["webhooksellcancel"]["value3"].format(**msg)) for msgtype in [RPCMessageType.STATUS_NOTIFICATION, RPCMessageType.WARNING_NOTIFICATION, RPCMessageType.CUSTOM_NOTIFICATION]: From c96acd6ca02b6e0dc5cd1e28c78ad0b3be648fe1 Mon Sep 17 00:00:00 2001 From: Fredrik Rydin Date: Sun, 9 Feb 2020 00:16:11 +0100 Subject: [PATCH 1668/3421] Fixed to pass PEP8 --- freqtrade/commands/arguments.py | 7 ++++--- freqtrade/commands/hyperopt_commands.py | 28 ++++++++++++++++++------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 2d02058f1..6d0c16d88 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -59,9 +59,10 @@ ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source", "ticker_interval"] -ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_list_min_avg_time", - "hyperopt_list_max_avg_time", "hyperopt_list_min_avg_profit", "hyperopt_list_min_total_profit", "print_colorized", - "print_json", "hyperopt_list_no_details"] +ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", + "hyperopt_list_min_avg_time", "hyperopt_list_max_avg_time", + "hyperopt_list_min_avg_profit", "hyperopt_list_min_total_profit", + "print_colorized", "print_json", "hyperopt_list_no_details"] ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_show_index", "print_json", "hyperopt_show_no_header"] diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index 8472fcfe1..f5fcc971f 100644 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -32,7 +32,7 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', 0.0), 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', 0.0) } - + trials_file = (config['user_data_dir'] / 'hyperopt_results' / 'hyperopt_results.pickle') @@ -51,7 +51,8 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: try: # Human-friendly indexes used here (starting from 1) for val in trials[epoch_start:epoch_stop]: - Hyperopt.print_results_explanation(val, total_epochs, not filteroptions['only_best'], print_colorized) + Hyperopt.print_results_explanation(val, total_epochs, + not filteroptions['only_best'], print_colorized) except KeyboardInterrupt: print('User interrupted..') @@ -121,14 +122,27 @@ def _hyperopt_filter_trials(trials: List, filteroptions: dict) -> List: if not filteroptions['only_best']: if filteroptions['filter_min_avg_time'] > 0: - trials = [x for x in trials if x['results_metrics']['duration'] > filteroptions['filter_min_avg_time']] + trials = [ + x for x in trials + if x['results_metrics']['duration'] > filteroptions['filter_min_avg_time'] + ] if filteroptions['filter_max_avg_time'] > 0: - trials = [x for x in trials if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time']] + trials = [ + x for x in trials + if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time'] + ] if filteroptions['filter_min_avg_profit'] > 0: - trials = [x for x in trials if x['results_metrics']['avg_profit'] > filteroptions['filter_min_avg_profit']] + trials = [ + x for x in trials + if x['results_metrics']['avg_profit'] + > filteroptions['filter_min_avg_profit'] + ] if filteroptions['filter_min_total_profit'] > 0: - trials = [x for x in trials if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit']] - + trials = [ + x for x in trials + if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit'] + ] + logger.info(f"{len(trials)} " + ("best " if filteroptions['only_best'] else "") + ("profitable " if filteroptions['only_profitable'] else "") + From b536d501945c502ecc6003f7fea8ffc781f45f02 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 9 Feb 2020 11:41:29 +0100 Subject: [PATCH 1669/3421] Address PR Review --- freqtrade/commands/build_config_commands.py | 4 ++-- freqtrade/templates/base_config.json.j2 | 2 +- setup.sh | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py index 7dd1be607..1598fa2ae 100644 --- a/freqtrade/commands/build_config_commands.py +++ b/freqtrade/commands/build_config_commands.py @@ -187,7 +187,7 @@ def start_new_config(args: Dict[str, Any]) -> None: config_path.unlink() else: raise OperationalException( - f"Configuration `{config_path}` already exists. " - "Please use another configuration name or delete the existing configuration.") + f"Configuration file `{config_path}` already exists. " + "Please delete it or use a different configuration file name.") selections = ask_user_config() deploy_new_config(config_path, selections) diff --git a/freqtrade/templates/base_config.json.j2 b/freqtrade/templates/base_config.json.j2 index 0a4f92c4b..88edeb1e8 100644 --- a/freqtrade/templates/base_config.json.j2 +++ b/freqtrade/templates/base_config.json.j2 @@ -19,7 +19,7 @@ "bids_to_ask_delta": 1 } }, - "ask_strategy":{ + "ask_strategy": { "use_order_book": false, "order_book_min": 1, "order_book_max": 9, diff --git a/setup.sh b/setup.sh index bce2e56cf..e120190ce 100755 --- a/setup.sh +++ b/setup.sh @@ -223,7 +223,7 @@ function config_generator() { function config() { echo "-------------------------" - echo "Please use freqtrade new-config -c config.json to generate a new configuration file." + echo "Please use 'freqtrade new-config -c config.json' to generate a new configuration file." echo "-------------------------" } From c7ba85c2e6c244f861a9e914782d5d5d14f30837 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 9 Feb 2020 14:19:13 +0300 Subject: [PATCH 1670/3421] Add tip on running order types for Bittrex --- docs/faq.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/faq.md b/docs/faq.md index 2416beae4..390b35b9b 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -45,12 +45,24 @@ the tutorial [here|Testing-new-strategies-with-Hyperopt](bot-usage.md#hyperopt-c You can use the `/forcesell all` command from Telegram. -### I get the message "RESTRICTED_MARKET" +### I'm getting the "RESTRICTED_MARKET" message in the log Currently known to happen for US Bittrex users. Read [the Bittrex section about restricted markets](exchanges.md#restricted-markets) for more information. +### I'm getting the "Exchange Bittrex does not support market orders." message and cannot run my strategy + +As the message says, Bittrex does not support market orders and you have one of the [order types](configuration.md/#understand-order_types) set to "market". Probably your strategy was written for another exchanges in mind and sets "market" orders for "stoploss" orders, which is correct and preferable for most of other exchanges. + +To fix it for Bittrex, redefine order types in the configuration file (do this for all order types that are defined as "market" in your strategy): + +``` +"order_types": { + "stoploss": "limit", +} +``` + ### How do I search the bot logs for something? By default, the bot writes its log into stderr stream. This is implemented this way so that you can easily separate the bot's diagnostics messages from Backtesting, Edge and Hyperopt results, output from other various Freqtrade utility subcommands, as well as from the output of your custom `print()`'s you may have inserted into your strategy. So if you need to search the log messages with the grep utility, you need to redirect stderr to stdout and disregard stdout. From c648ec7c0c76e09d57bee0e52bf820bb0d9adf01 Mon Sep 17 00:00:00 2001 From: Fredrik Rydin Date: Sun, 9 Feb 2020 14:18:56 +0100 Subject: [PATCH 1671/3421] Added test cases and fixed a minor bug --- freqtrade/commands/hyperopt_commands.py | 6 +++ tests/commands/test_commands.py | 59 ++++++++++++++++++++++++- 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index f5fcc971f..38e1fa429 100644 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -120,24 +120,30 @@ def _hyperopt_filter_trials(trials: List, filteroptions: dict) -> List: if filteroptions['only_profitable']: trials = [x for x in trials if x['results_metrics']['profit'] > 0] + print(trials[0]) + if not filteroptions['only_best']: if filteroptions['filter_min_avg_time'] > 0: + trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] trials = [ x for x in trials if x['results_metrics']['duration'] > filteroptions['filter_min_avg_time'] ] if filteroptions['filter_max_avg_time'] > 0: + trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] trials = [ x for x in trials if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time'] ] if filteroptions['filter_min_avg_profit'] > 0: + trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] trials = [ x for x in trials if x['results_metrics']['avg_profit'] > filteroptions['filter_min_avg_profit'] ] if filteroptions['filter_min_total_profit'] > 0: + trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] trials = [ x for x in trials if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit'] diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index c59799190..fb15c3d7f 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -778,7 +778,64 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): assert all(x not in captured.out for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", " 11/12", " 12/12"]) - + args = [ + "hyperopt-list", + "--profitable", + "--no-details", + "--min-avg-profit", "0.11" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 2/12"]) + assert all(x not in captured.out + for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", + " 10/12", " 11/12", " 12/12"]) + args = [ + "hyperopt-list", + "--no-details", + "--min-total-profit", "0.4" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 10/12"]) + assert all(x not in captured.out + for x in [" 1/12", " 2/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", + " 9/12", " 11/12", " 12/12"]) + args = [ + "hyperopt-list", + "--profitable", + "--no-details", + "--min-avg-time", "2000" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 10/12"]) + assert all(x not in captured.out + for x in [" 1/12", " 2/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", + " 8/12", " 9/12", " 11/12", " 12/12"]) + args = [ + "hyperopt-list", + "--no-details", + "--max-avg-time", "1500" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 2/12", " 6/12"]) + assert all(x not in captured.out + for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 7/12", " 8/12" + " 9/12", " 10/12", " 11/12", " 12/12"]) def test_hyperopt_show(mocker, capsys, hyperopt_results): mocker.patch( From eb3783dc0095740ccf973cbec351a67951cfcda5 Mon Sep 17 00:00:00 2001 From: Fredrik Rydin Date: Sun, 9 Feb 2020 14:30:29 +0100 Subject: [PATCH 1672/3421] Fixed a blank line issue :-( --- tests/commands/test_commands.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index fb15c3d7f..db8a9289a 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -837,6 +837,7 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 7/12", " 8/12" " 9/12", " 10/12", " 11/12", " 12/12"]) + def test_hyperopt_show(mocker, capsys, hyperopt_results): mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.load_previous_results', From c89a32224c2f77fa14aa2244dfcd23ab9f7ea56d Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 9 Feb 2020 18:40:19 +0300 Subject: [PATCH 1673/3421] Fix SharpeHyperOptLossDaily --- freqtrade/optimize/hyperopt_loss_sharpe_daily.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt_loss_sharpe_daily.py b/freqtrade/optimize/hyperopt_loss_sharpe_daily.py index d8ea3c5fe..5a8ebaa11 100644 --- a/freqtrade/optimize/hyperopt_loss_sharpe_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sharpe_daily.py @@ -39,7 +39,8 @@ class SharpeHyperOptLossDaily(IHyperOptLoss): results['profit_percent'] - slippage_per_trade_ratio # create the index within the min_date and end max_date - t_index = date_range(start=min_date, end=max_date, freq=resample_freq) + t_index = date_range(start=min_date, end=max_date, freq=resample_freq, + normalize=True) sum_daily = ( results.resample(resample_freq, on='close_time').agg( From 40abdd26083f20e6fb05a1facae694b91724ba85 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 9 Feb 2020 18:54:04 +0300 Subject: [PATCH 1674/3421] Suggest changing strategy --- docs/faq.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index 390b35b9b..81fd47561 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -55,14 +55,18 @@ Read [the Bittrex section about restricted markets](exchanges.md#restricted-mark As the message says, Bittrex does not support market orders and you have one of the [order types](configuration.md/#understand-order_types) set to "market". Probably your strategy was written for another exchanges in mind and sets "market" orders for "stoploss" orders, which is correct and preferable for most of other exchanges. -To fix it for Bittrex, redefine order types in the configuration file (do this for all order types that are defined as "market" in your strategy): +To fix it for Bittrex, redefine order types in the strategy to use "limit" instead of "market": ``` -"order_types": { - "stoploss": "limit", -} + order_types = { + ... + 'stoploss': 'limit', + ... + } ``` +Same fix should be done in the configuration file, if order types are defined in your custom config rather than in the strategy. + ### How do I search the bot logs for something? By default, the bot writes its log into stderr stream. This is implemented this way so that you can easily separate the bot's diagnostics messages from Backtesting, Edge and Hyperopt results, output from other various Freqtrade utility subcommands, as well as from the output of your custom `print()`'s you may have inserted into your strategy. So if you need to search the log messages with the grep utility, you need to redirect stderr to stdout and disregard stdout. From c83da7cadb4db3c0c7d59d4e787d80e7c876e79c Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 9 Feb 2020 19:11:06 +0300 Subject: [PATCH 1675/3421] Add section about order types into Bittrex Exchange-specific chapter --- docs/exchanges.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/exchanges.md b/docs/exchanges.md index 3c861ce44..06d33d562 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -32,6 +32,10 @@ To download data for the Kraken exchange, using `--dl-trades` is mandatory, othe ## Bittrex +### Order types + +Bittrex does not support market orders. If you have a message at the bot startup about this, you should change order type values set in your configuration and/or in the strategy from `"market"` to `"limit"`. See some more details on this [here in the FAQ](faw.md#im-getting-the-exchange-bittrex-does-not-support-market-orders-message-and-cannot-run-my-strategy). + ### Restricted markets Bittrex split its exchange into US and International versions. From cc3f65d069ddaa08ffa81e76a155f471adc37f9b Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 9 Feb 2020 19:45:04 +0300 Subject: [PATCH 1676/3421] Fix typo --- docs/exchanges.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/exchanges.md b/docs/exchanges.md index 06d33d562..f615bc61a 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -34,7 +34,7 @@ To download data for the Kraken exchange, using `--dl-trades` is mandatory, othe ### Order types -Bittrex does not support market orders. If you have a message at the bot startup about this, you should change order type values set in your configuration and/or in the strategy from `"market"` to `"limit"`. See some more details on this [here in the FAQ](faw.md#im-getting-the-exchange-bittrex-does-not-support-market-orders-message-and-cannot-run-my-strategy). +Bittrex does not support market orders. If you have a message at the bot startup about this, you should change order type values set in your configuration and/or in the strategy from `"market"` to `"limit"`. See some more details on this [here in the FAQ](faq.md#im-getting-the-exchange-bittrex-does-not-support-market-orders-message-and-cannot-run-my-strategy). ### Restricted markets From 9ec9a7b124a05c4f25905e8b391d06b2ec17cc26 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 9 Feb 2020 21:20:15 +0300 Subject: [PATCH 1677/3421] Fix t_index to be normalized --- freqtrade/optimize/hyperopt_loss_sortino_daily.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index 891e2bf1c..c02f88434 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -39,7 +39,8 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): results['profit_percent'] - slippage_per_trade_ratio # create the index within the min_date and end max_date - t_index = date_range(start=min_date, end=max_date, freq=resample_freq) + t_index = date_range(start=min_date, end=max_date, freq=resample_freq, + normalize=True) sum_daily = ( results.resample(resample_freq, on='close_time').agg( From 5bf4c5869b81c39176efc7fe6705cebb02a7f489 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 9 Feb 2020 19:32:09 +0100 Subject: [PATCH 1678/3421] Update hyperopt_commands.py Missed a debug print --- freqtrade/commands/hyperopt_commands.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index 38e1fa429..cdfdb5ca6 100644 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -120,8 +120,6 @@ def _hyperopt_filter_trials(trials: List, filteroptions: dict) -> List: if filteroptions['only_profitable']: trials = [x for x in trials if x['results_metrics']['profit'] > 0] - print(trials[0]) - if not filteroptions['only_best']: if filteroptions['filter_min_avg_time'] > 0: trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] From f7c74e551fa4ff0674576de73a7892fdd32d1bfb Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 9 Feb 2020 21:56:59 +0300 Subject: [PATCH 1679/3421] Fix wording --- docs/faq.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/faq.md b/docs/faq.md index 81fd47561..94818964b 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -53,7 +53,7 @@ Read [the Bittrex section about restricted markets](exchanges.md#restricted-mark ### I'm getting the "Exchange Bittrex does not support market orders." message and cannot run my strategy -As the message says, Bittrex does not support market orders and you have one of the [order types](configuration.md/#understand-order_types) set to "market". Probably your strategy was written for another exchanges in mind and sets "market" orders for "stoploss" orders, which is correct and preferable for most of other exchanges. +As the message says, Bittrex does not support market orders and you have one of the [order types](configuration.md/#understand-order_types) set to "market". Probably your strategy was written with other exchanges in mind and sets "market" orders for "stoploss" orders, which is correct and preferable for most of the exchanges supporting market orders (but not for Bittrex). To fix it for Bittrex, redefine order types in the strategy to use "limit" instead of "market": From 4af25ec315c95a9335285d9375b544f0f23b1a46 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 10 Feb 2020 05:52:07 +0300 Subject: [PATCH 1680/3421] Adjust mypy and flake commands --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a087103c6..a4a1a29f8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,7 +48,7 @@ pytest tests/test_.py::test_ #### Run Flake8 ```bash -flake8 freqtrade +flake8 freqtrade tests ``` We receive a lot of code that fails the `flake8` checks. @@ -61,7 +61,7 @@ Guide for installing them is [here](http://flake8.pycqa.org/en/latest/user/using #### Run mypy ``` bash -mypy freqtrade +mypy freqtrade tests ``` ## (Core)-Committer Guide From 90ee82ac437cbe1711d70d3663e986a8acce2fe8 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2020 08:01:42 +0000 Subject: [PATCH 1681/3421] Bump ccxt from 1.22.30 to 1.22.39 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.22.30 to 1.22.39. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.22.30...1.22.39) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 466880950..e1ae4a5bd 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.22.30 +ccxt==1.22.39 SQLAlchemy==1.3.13 python-telegram-bot==12.3.0 arrow==0.15.5 From 88f2ad1eae978f9e95e4b20c5c262dc5f97fb298 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2020 08:02:07 +0000 Subject: [PATCH 1682/3421] Bump pandas from 1.0.0 to 1.0.1 Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.0.0 to 1.0.1. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v1.0.0...v1.0.1) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 21be02a87..68024f587 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ -r requirements-common.txt numpy==1.18.1 -pandas==1.0.0 +pandas==1.0.1 From 6b4094fd92866065ca0717f330e64dc29c5305b1 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2020 08:02:45 +0000 Subject: [PATCH 1683/3421] Bump mkdocs-material from 4.6.0 to 4.6.2 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.6.0 to 4.6.2. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.6.0...4.6.2) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 3e53c15e3..3980ecd64 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==4.6.0 +mkdocs-material==4.6.2 mdx_truly_sane_lists==1.2 From 550f9fc8915841eef544bb51302d4c10553e2794 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2020 08:45:27 +0000 Subject: [PATCH 1684/3421] Bump python-telegram-bot from 12.3.0 to 12.4.1 Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.3.0 to 12.4.1. - [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases) - [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst) - [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.3.0...v12.4.1) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index e1ae4a5bd..f641dd2ad 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -2,7 +2,7 @@ # mainly used for Raspberry pi installs ccxt==1.22.39 SQLAlchemy==1.3.13 -python-telegram-bot==12.3.0 +python-telegram-bot==12.4.1 arrow==0.15.5 cachetools==4.0.0 requests==2.22.0 From 83644ce5d8502ddc99c5d24a46a33750cf7745bf Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 10 Feb 2020 10:35:48 +0100 Subject: [PATCH 1685/3421] Fix mypy type errors in tests --- tests/data/test_history.py | 6 +++--- tests/optimize/__init__.py | 2 +- tests/optimize/test_backtesting.py | 4 ++-- tests/optimize/test_edge_cli.py | 4 ++-- tests/optimize/test_hyperopt.py | 22 ++++++++++++---------- 5 files changed, 20 insertions(+), 18 deletions(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 7b3143db9..da4c90191 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -370,7 +370,7 @@ def test_load_partial_missing(testdatadir, caplog) -> None: def test_init(default_conf, mocker) -> None: assert {} == load_data( - datadir='', + datadir=Path(''), pairs=[], timeframe=default_conf['ticker_interval'] ) @@ -379,13 +379,13 @@ def test_init(default_conf, mocker) -> None: def test_init_with_refresh(default_conf, mocker) -> None: exchange = get_patched_exchange(mocker, default_conf) refresh_data( - datadir='', + datadir=Path(''), pairs=[], timeframe=default_conf['ticker_interval'], exchange=exchange ) assert {} == load_data( - datadir='', + datadir=Path(''), pairs=[], timeframe=default_conf['ticker_interval'] ) diff --git a/tests/optimize/__init__.py b/tests/optimize/__init__.py index 8756143a0..524db093e 100644 --- a/tests/optimize/__init__.py +++ b/tests/optimize/__init__.py @@ -23,7 +23,7 @@ class BTContainer(NamedTuple): """ Minimal BacktestContainer defining Backtest inputs and results. """ - data: List[float] + data: List[List[float]] stop_loss: float roi: Dict[str, float] trades: List[BTrade] diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 07872da57..ec85c8030 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -287,8 +287,8 @@ def test_start(mocker, fee, default_conf, caplog) -> None: '--config', 'config.json', '--strategy', 'DefaultStrategy', ] - args = get_args(args) - start_backtesting(args) + pargs = get_args(args) + start_backtesting(pargs) assert log_has('Starting freqtrade in Backtesting mode', caplog) assert start_mock.call_count == 1 diff --git a/tests/optimize/test_edge_cli.py b/tests/optimize/test_edge_cli.py index 96dd0899d..a5e468542 100644 --- a/tests/optimize/test_edge_cli.py +++ b/tests/optimize/test_edge_cli.py @@ -82,8 +82,8 @@ def test_start(mocker, fee, edge_conf, caplog) -> None: '--config', 'config.json', '--strategy', 'DefaultStrategy', ] - args = get_args(args) - start_edge(args) + pargs = get_args(args) + start_edge(pargs) assert log_has('Starting freqtrade in Edge mode', caplog) assert start_mock.call_count == 1 diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index b3356bd6d..1780b5155 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -2,6 +2,7 @@ import locale from datetime import datetime from pathlib import Path +from typing import Dict, List from unittest.mock import MagicMock, PropertyMock import pandas as pd @@ -9,7 +10,8 @@ import pytest from arrow import Arrow from filelock import Timeout -from freqtrade.commands.optimize_commands import setup_optimize_configuration, start_hyperopt +from freqtrade.commands.optimize_commands import (setup_optimize_configuration, + start_hyperopt) from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.history import load_tickerdata_file from freqtrade.exceptions import OperationalException @@ -54,7 +56,7 @@ def hyperopt_results(): # Functions for recurrent object patching -def create_trials(mocker, hyperopt, testdatadir) -> None: +def create_trials(mocker, hyperopt, testdatadir) -> List[Dict]: """ When creating trials, mock the hyperopt Trials so that *by default* - we don't create any pickle'd files in the filesystem @@ -228,10 +230,10 @@ def test_start_not_installed(mocker, default_conf, caplog, import_fails) -> None '--hyperopt', 'DefaultHyperOpt', '--epochs', '5' ] - args = get_args(args) + pargs = get_args(args) with pytest.raises(OperationalException, match=r"Please ensure that the hyperopt dependencies"): - start_hyperopt(args) + start_hyperopt(pargs) def test_start(mocker, default_conf, caplog) -> None: @@ -246,8 +248,8 @@ def test_start(mocker, default_conf, caplog) -> None: '--hyperopt', 'DefaultHyperOpt', '--epochs', '5' ] - args = get_args(args) - start_hyperopt(args) + pargs = get_args(args) + start_hyperopt(pargs) assert log_has('Starting freqtrade in Hyperopt mode', caplog) assert start_mock.call_count == 1 @@ -269,9 +271,9 @@ def test_start_no_data(mocker, default_conf, caplog) -> None: '--hyperopt', 'DefaultHyperOpt', '--epochs', '5' ] - args = get_args(args) + pargs = get_args(args) with pytest.raises(OperationalException, match='No data found. Terminating.'): - start_hyperopt(args) + start_hyperopt(pargs) def test_start_filelock(mocker, default_conf, caplog) -> None: @@ -286,8 +288,8 @@ def test_start_filelock(mocker, default_conf, caplog) -> None: '--hyperopt', 'DefaultHyperOpt', '--epochs', '5' ] - args = get_args(args) - start_hyperopt(args) + pargs = get_args(args) + start_hyperopt(pargs) assert log_has("Another running instance of freqtrade Hyperopt detected.", caplog) From 7bb02d0cc60074fd668a8e498c81f167fa74198e Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 10 Feb 2020 11:01:33 +0100 Subject: [PATCH 1686/3421] Update docker-docs wording --- docs/docker.md | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/docs/docker.md b/docs/docker.md index b1eb0b298..6267c0cf2 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -27,8 +27,8 @@ Freqtrade provides an official Docker image on [Dockerhub](https://hub.docker.co Create a new directory and place the [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) in this directory. ``` bash -mkdir freqtrade -cd freqtrade/ +mkdir ft_userdata +cd ft_userdata/ # Download the docker-compose file from the repository curl https://raw.githubusercontent.com/freqtrade/freqtrade/develop/docker-compose.yml -o docker-compose.yml @@ -42,15 +42,22 @@ docker-compose run --rm freqtrade create-userdir --userdir user_data docker-compose run --rm freqtrade new-config --config user_data/config.json ``` -The above snippet will create a directory called "freqtrade" - download the latest compose file and pull the freqtrade image. -The last 2 steps will create the user-directory, as well as a default configuration based on your selections. +The above snippet creates a new directory called "ft_userdata", downloads the latest compose file and pulls the freqtrade image. +The last 2 steps in the snippet create the directory with user-data, as well as (interactively) the default configuration based on your selections. + +!!! Note + You can edit the configuration at any time, which is available as `user_data/config.json` (within the directory `ft_userdata`) when using the above configuration. #### Adding your strategy The configuration is now available as `user_data/config.json`. -You should now copy your strategy to `user_data/strategies/` - and add the Strategy class name to the `docker-compose.yml` file, replacing `SampleStrategy`. +You should now copy your strategy to `user_data/strategies/` - and add the Strategy class name to the `docker-compose.yml` file, replacing `SampleStrategy`. If you wish to run the bot with the SampleStrategy, just leave it as it is. -Once this is done, you're ready to launch the bot in trading mode. +!!! Warning + The `SampleStrategy` is there for your reference and give you ideas for your own strategy. + Please always backtest the strategy and use dry-run for some time before risking real money! + +Once this is done, you're ready to launch the bot in trading mode (Dry-run or Live-trading, depending on your answer to the corresponding question you made above). ``` bash docker-compose up -d @@ -88,11 +95,11 @@ Advanced users may edit the docker-compose file further to include all possible All possible freqtrade arguments will be available by running `docker-compose run --rm freqtrade `. !!! Note "`docker-compose run --rm`" - Inluding `--rm` will clean up the container after completion, and is highly recommended for all modes except trading mode (`freqtrade trade`). + Including `--rm` will clean up the container after completion, and is highly recommended for all modes except trading mode (running with `freqtrade trade` command). ##### Example: Download data with docker-compose -Downloading backtest data for one pair from binance. The data will be stored in the host directory `user_data/data/`. +Download backtesting data for 5 days for the pair ETH/BTC and 1h timeframe from Binance. The data will be stored in the directory `user_data/data/` on the host. ``` bash docker-compose run --rm freqtrade download-data --pairs ETH/BTC --exchange binance --days 5 -t 1h @@ -102,7 +109,7 @@ Head over to the [Data Downloading Documentation](data-download.md) for more det ##### Example: Backtest with docker-compose -Backtesting in docker-containers: +Run backtesting in docker-containers for SampleStrategy and specified timerange of historical data, on 5m timeframe: ``` bash docker-compose run --rm freqtrade backtesting --config user_data/config.json --strategy SampleStrategy --timerange 20190801-20191001 -i 5m @@ -126,7 +133,7 @@ You'll then also need to modify the `docker-compose.yml` file and uncomment the You can then run `docker-compose build` to build the docker image, and run it using the commands described above. -## Docker - without docker compose +## Freqtrade with docker without docker-compose !!! Warning The below documentation is provided for completeness and assumes that you are somewhat familiar with running docker containers. If you're just starting out with docker, we recommend to follow the [Freqtrade with docker-compose](#freqtrade-with-docker-compose) instructions. From d69ddd2ac37b18251b55f6f6e40995b1fac04402 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Mon, 10 Feb 2020 11:54:12 +0100 Subject: [PATCH 1687/3421] Apply suggestions from code review Committed 1 code suggestion in code review. Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/telegram-usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md index ac9cea3d6..c8ded4af5 100644 --- a/docs/telegram-usage.md +++ b/docs/telegram-usage.md @@ -55,7 +55,7 @@ official commands. You can ask at any moment for help with `/help`. | `/reload_conf` | | Reloads the configuration file | `/show_config` | | Shows part of the current configuration with relevant settings to operation | `/status` | | Lists all open trades -| `/status table` | | List all open trades in a table format. Pending buy orders are marked with an asterisk(*) +| `/status table` | | List all open trades in a table format. Pending buy orders are marked with an asterisk (*) | `/count` | | Displays number of trades used and available | `/profit` | | Display a summary of your profit/loss from close trades and some stats about your performance | `/forcesell ` | | Instantly sells the given trade (Ignoring `minimum_roi`). From 0ac0ca74b5fe5db2e23d35bef0ad39174aaaabfd Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 10 Feb 2020 15:41:09 +0300 Subject: [PATCH 1688/3421] return back hint for running mypy --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a4a1a29f8..d84c743c9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -61,7 +61,7 @@ Guide for installing them is [here](http://flake8.pycqa.org/en/latest/user/using #### Run mypy ``` bash -mypy freqtrade tests +mypy freqtrade ``` ## (Core)-Committer Guide From d07c69809da128471d664f2e19cc7cb28504ca5b Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 10 Feb 2020 18:32:41 +0300 Subject: [PATCH 1689/3421] Fix tests for hyperopt_loss --- tests/optimize/test_hyperopt.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 1780b5155..a4704b793 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -295,9 +295,12 @@ def test_start_filelock(mocker, default_conf, caplog) -> None: def test_loss_calculation_prefer_correct_trade_count(default_conf, hyperopt_results) -> None: hl = HyperOptLossResolver.load_hyperoptloss(default_conf) - correct = hl.hyperopt_loss_function(hyperopt_results, 600) - over = hl.hyperopt_loss_function(hyperopt_results, 600 + 100) - under = hl.hyperopt_loss_function(hyperopt_results, 600 - 100) + correct = hl.hyperopt_loss_function(hyperopt_results, 600, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(hyperopt_results, 600 + 100, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(hyperopt_results, 600 - 100, + datetime(2019, 1, 1), datetime(2019, 5, 1)) assert over > correct assert under > correct @@ -307,8 +310,10 @@ def test_loss_calculation_prefer_shorter_trades(default_conf, hyperopt_results) resultsb.loc[1, 'trade_duration'] = 20 hl = HyperOptLossResolver.load_hyperoptloss(default_conf) - longer = hl.hyperopt_loss_function(hyperopt_results, 100) - shorter = hl.hyperopt_loss_function(resultsb, 100) + longer = hl.hyperopt_loss_function(hyperopt_results, 100, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + shorter = hl.hyperopt_loss_function(resultsb, 100, + datetime(2019, 1, 1), datetime(2019, 5, 1)) assert shorter < longer @@ -319,9 +324,12 @@ def test_loss_calculation_has_limited_profit(default_conf, hyperopt_results) -> results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 hl = HyperOptLossResolver.load_hyperoptloss(default_conf) - correct = hl.hyperopt_loss_function(hyperopt_results, 600) - over = hl.hyperopt_loss_function(results_over, 600) - under = hl.hyperopt_loss_function(results_under, 600) + correct = hl.hyperopt_loss_function(hyperopt_results, 600, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(results_over, 600, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(results_under, 600, + datetime(2019, 1, 1), datetime(2019, 5, 1)) assert over < correct assert under > correct From faf19eda86e3728905cf94644d47275af5cabbc5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 10 Feb 2020 17:27:47 +0100 Subject: [PATCH 1690/3421] Break the old binary file so users are forced to reinstall Note: This should not be relevant anymore - this binary has been deprecated and is not being used by new installations since July 2019. --- bin/freqtrade | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bin/freqtrade b/bin/freqtrade index 25c94fe98..eee7cbef4 100755 --- a/bin/freqtrade +++ b/bin/freqtrade @@ -1,11 +1,11 @@ #!/usr/bin/env python3 import sys -import warnings +import logging -from freqtrade.main import main +logger = logging.getLogger(__name__) -warnings.warn( - "Deprecated - To continue to run the bot like this, please run `pip install -e .` again.", - DeprecationWarning) -main(sys.argv[1:]) + +logger.error("DEPRECATED installation detected, please run `pip install -e .` again.") + +sys.exit(2) From 05128d21a8be65a71d1a8a30e973b3bb26bf3884 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 10 Feb 2020 20:48:49 +0300 Subject: [PATCH 1691/3421] Suggest to run flake for scripts --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d84c743c9..1c83437f6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,7 +48,7 @@ pytest tests/test_.py::test_ #### Run Flake8 ```bash -flake8 freqtrade tests +flake8 freqtrade tests scripts ``` We receive a lot of code that fails the `flake8` checks. From c924e4d519253a400218d95b7f17a64da27e5da6 Mon Sep 17 00:00:00 2001 From: Fredrik Rydin Date: Mon, 10 Feb 2020 20:54:31 +0100 Subject: [PATCH 1692/3421] Updated based on feedback: - Profit commands now use float - Compatible with --best - Corrected wrong information in docs --- docs/utils.md | 134 ++++++++++++++++++------ freqtrade/commands/cli_options.py | 8 +- freqtrade/commands/hyperopt_commands.py | 68 ++++++------ 3 files changed, 140 insertions(+), 70 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index 71039f174..5bb3a0e53 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -36,6 +36,38 @@ optional arguments: └── sample_strategy.py ``` +## Create new config + +Creates a new configuration file, asking some questions which are important selections for a configuration. + +``` +usage: freqtrade new-config [-h] [-c PATH] + +optional arguments: + -h, --help show this help message and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-` + to read config from stdin. +``` + +!!! Warning + Only vital questions are asked. Freqtrade offers a lot more configuration possibilities, which are listed in the [Configuration documentation](configuration.md#configuration-parameters) + +### Create config examples + +``` +$ freqtrade new-config --config config_binance.json + +? Do you want to enable Dry-run (simulated trades)? Yes +? Please insert your stake currency: BTC +? Please insert your stake amount: 0.05 +? Please insert max_open_trades (Integer or 'unlimited'): 5 +? Please insert your ticker interval: 15m +? Please insert your display Currency (for reporting): USD +? Select exchange binance +? Do you want to enable Telegram? No +``` + ## Create new strategy Creates a new strategy from a template similar to SampleStrategy. @@ -135,27 +167,15 @@ Common arguments: ``` ``` freqtrade list-hyperopts --help -usage: freqtrade hyperopt-list [-h] [-v] [--logfile FILE] [-V] [-c PATH] - [-d PATH] [--userdir PATH] [--best] - [--profitable] [--min-avg-time INT] - [--max-avg-time INT] [--min-avg-profit FLOAT] - [--min-total-profit FLOAT] [--no-color] - [--print-json] [--no-details] +usage: freqtrade list-hyperopts [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] + [--hyperopt-path PATH] [-1] optional arguments: -h, --help show this help message and exit - --best Select only best epochs. - --profitable Select only profitable epochs. - --min-avg-time INT Select epochs on above average time. - --max-avg-time INT Select epochs on under average time. - --min-avg-profit FLOAT - Select epochs on above average profit. - --min-total-profit FLOAT - Select epochs on above total profit. - --no-color Disable colorization of hyperopt results. May be - useful if you are redirecting output to a file. - --print-json Print best result detailization in JSON format. - --no-details Do not print best epoch details. + --hyperopt-path PATH Specify additional lookup path for Hyperopt and + Hyperopt Loss functions. + -1, --one-column Print output in one column. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). @@ -232,20 +252,31 @@ All exchanges supported by the ccxt library: _1btcxe, acx, adara, allcoin, anxpr Use the `list-timeframes` subcommand to see the list of ticker intervals (timeframes) available for the exchange. ``` -usage: freqtrade list-timeframes [-h] [--exchange EXCHANGE] [-1] +usage: freqtrade list-timeframes [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--exchange EXCHANGE] [-1] optional arguments: - -h, --help show this help message and exit - --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no - config is provided. - -1, --one-column Print output in one column. + -h, --help show this help message and exit + --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no config is provided. + -1, --one-column Print output in one column. + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: 'syslog', 'journald'. See the documentation for more details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-` + to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. ``` * Example: see the timeframes for the 'binance' exchange, set in the configuration file: ``` -$ freqtrade -c config_binance.json list-timeframes +$ freqtrade list-timeframes -c config_binance.json ... Timeframes available for the exchange `binance`: 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M ``` @@ -269,14 +300,16 @@ You can print info about any pair/market with these subcommands - and you can fi These subcommands have same usage and same set of available options: ``` -usage: freqtrade list-markets [-h] [--exchange EXCHANGE] [--print-list] - [--print-json] [-1] [--print-csv] +usage: freqtrade list-markets [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] [--exchange EXCHANGE] + [--print-list] [--print-json] [-1] [--print-csv] [--base BASE_CURRENCY [BASE_CURRENCY ...]] [--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] [-a] -usage: freqtrade list-pairs [-h] [--exchange EXCHANGE] [--print-list] - [--print-json] [-1] [--print-csv] +usage: freqtrade list-pairs [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] [--exchange EXCHANGE] + [--print-list] [--print-json] [-1] [--print-csv] [--base BASE_CURRENCY [BASE_CURRENCY ...]] [--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] [-a] @@ -295,6 +328,22 @@ optional arguments: Specify quote currency(-ies). Space-separated list. -a, --all Print all pairs or market symbols. By default only active ones are shown. + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). + Multiple --config options may be used. Can be set to + `-` to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. + ``` By default, only active pairs/markets are shown. Active pairs/markets are those that can currently be traded @@ -316,7 +365,7 @@ $ freqtrade list-pairs --quote USD --print-json human-readable list with summary: ``` -$ freqtrade -c config_binance.json list-pairs --all --base BTC ETH --quote USDT USD --print-list +$ freqtrade list-pairs -c config_binance.json --all --base BTC ETH --quote USDT USD --print-list ``` * Print all markets on exchange "Kraken", in the tabular format: @@ -364,17 +413,40 @@ You can list the hyperoptimization epochs the Hyperopt module evaluated previous ``` usage: freqtrade hyperopt-list [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--best] - [--profitable] [--no-color] [--print-json] - [--no-details] + [--profitable] [--min-avg-time FLOAT] + [--max-avg-time FLOAT] [--min-avg-profit FLOAT] + [--min-total-profit FLOAT] [--no-color] + [--print-json] [--no-details] optional arguments: -h, --help show this help message and exit --best Select only best epochs. --profitable Select only profitable epochs. + --min-avg-time FLOAT Select epochs on above average time. + --max-avg-time FLOAT Select epochs on under average time. + --min-avg-profit FLOAT + Select epochs on above average profit. + --min-total-profit FLOAT + Select epochs on above total profit. --no-color Disable colorization of hyperopt results. May be useful if you are redirecting output to a file. --print-json Print best result detailization in JSON format. --no-details Do not print best epoch details. + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: `config.json`). + Multiple --config options may be used. Can be set to + `-` to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. ``` ### Examples diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 0c6d64691..154404821 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -401,14 +401,14 @@ AVAILABLE_CLI_OPTIONS = { "hyperopt_list_min_avg_time": Arg( '--min-avg-time', help='Select epochs on above average time.', - type=check_int_nonzero, - metavar='INT', + type=float, + metavar='FLOAT', ), "hyperopt_list_max_avg_time": Arg( '--max-avg-time', help='Select epochs on under average time.', - type=check_int_nonzero, - metavar='INT', + type=float, + metavar='FLOAT', ), "hyperopt_list_min_avg_profit": Arg( '--min-avg-profit', diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index cdfdb5ca6..ed0728bf6 100644 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -27,10 +27,10 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: filteroptions = { 'only_best': config.get('hyperopt_list_best', False), 'only_profitable': config.get('hyperopt_list_profitable', False), - 'filter_min_avg_time': config.get('hyperopt_list_min_avg_time', 0), - 'filter_max_avg_time': config.get('hyperopt_list_max_avg_time', 0), - 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', 0.0), - 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', 0.0) + 'filter_min_avg_time': config.get('hyperopt_list_min_avg_time', None), + 'filter_max_avg_time': config.get('hyperopt_list_max_avg_time', None), + 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', None), + 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', None) } trials_file = (config['user_data_dir'] / @@ -74,10 +74,10 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: filteroptions = { 'only_best': config.get('hyperopt_list_best', False), 'only_profitable': config.get('hyperopt_list_profitable', False), - 'filter_min_avg_time': config.get('hyperopt_list_min_avg_time', 0), - 'filter_max_avg_time': config.get('hyperopt_list_max_avg_time', 0), - 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', 0), - 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', 0) + 'filter_min_avg_time': config.get('hyperopt_list_min_avg_time', None), + 'filter_max_avg_time': config.get('hyperopt_list_max_avg_time', None), + 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', None), + 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', None) } no_header = config.get('hyperopt_show_no_header', False) @@ -119,33 +119,31 @@ def _hyperopt_filter_trials(trials: List, filteroptions: dict) -> List: trials = [x for x in trials if x['is_best']] if filteroptions['only_profitable']: trials = [x for x in trials if x['results_metrics']['profit'] > 0] - - if not filteroptions['only_best']: - if filteroptions['filter_min_avg_time'] > 0: - trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] - trials = [ - x for x in trials - if x['results_metrics']['duration'] > filteroptions['filter_min_avg_time'] - ] - if filteroptions['filter_max_avg_time'] > 0: - trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] - trials = [ - x for x in trials - if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time'] - ] - if filteroptions['filter_min_avg_profit'] > 0: - trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] - trials = [ - x for x in trials - if x['results_metrics']['avg_profit'] - > filteroptions['filter_min_avg_profit'] - ] - if filteroptions['filter_min_total_profit'] > 0: - trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] - trials = [ - x for x in trials - if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit'] - ] + if filteroptions['filter_min_avg_time'] is not None: + trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] + trials = [ + x for x in trials + if x['results_metrics']['duration'] > filteroptions['filter_min_avg_time'] + ] + if filteroptions['filter_max_avg_time'] is not None: + trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] + trials = [ + x for x in trials + if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time'] + ] + if filteroptions['filter_min_avg_profit'] is not None: + trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] + trials = [ + x for x in trials + if x['results_metrics']['avg_profit'] + > filteroptions['filter_min_avg_profit'] + ] + if filteroptions['filter_min_total_profit'] is not None: + trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] + trials = [ + x for x in trials + if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit'] + ] logger.info(f"{len(trials)} " + ("best " if filteroptions['only_best'] else "") + From f2520c11e70c3f0717bdd842f7b7cdeb5482ab0a Mon Sep 17 00:00:00 2001 From: Fredrik Rydin Date: Mon, 10 Feb 2020 21:19:25 +0100 Subject: [PATCH 1693/3421] Used wrong utils.md as base --- docs/utils.md | 83 +++++++-------------------------------------------- 1 file changed, 11 insertions(+), 72 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index 5bb3a0e53..4bb2fdafb 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -36,38 +36,6 @@ optional arguments: └── sample_strategy.py ``` -## Create new config - -Creates a new configuration file, asking some questions which are important selections for a configuration. - -``` -usage: freqtrade new-config [-h] [-c PATH] - -optional arguments: - -h, --help show this help message and exit - -c PATH, --config PATH - Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-` - to read config from stdin. -``` - -!!! Warning - Only vital questions are asked. Freqtrade offers a lot more configuration possibilities, which are listed in the [Configuration documentation](configuration.md#configuration-parameters) - -### Create config examples - -``` -$ freqtrade new-config --config config_binance.json - -? Do you want to enable Dry-run (simulated trades)? Yes -? Please insert your stake currency: BTC -? Please insert your stake amount: 0.05 -? Please insert max_open_trades (Integer or 'unlimited'): 5 -? Please insert your ticker interval: 15m -? Please insert your display Currency (for reporting): USD -? Select exchange binance -? Do you want to enable Telegram? No -``` - ## Create new strategy Creates a new strategy from a template similar to SampleStrategy. @@ -252,31 +220,20 @@ All exchanges supported by the ccxt library: _1btcxe, acx, adara, allcoin, anxpr Use the `list-timeframes` subcommand to see the list of ticker intervals (timeframes) available for the exchange. ``` -usage: freqtrade list-timeframes [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--exchange EXCHANGE] [-1] +usage: freqtrade list-timeframes [-h] [--exchange EXCHANGE] [-1] optional arguments: - -h, --help show this help message and exit - --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no config is provided. - -1, --one-column Print output in one column. - -Common arguments: - -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified. Special values are: 'syslog', 'journald'. See the documentation for more details. - -V, --version show program's version number and exit - -c PATH, --config PATH - Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-` - to read config from stdin. - -d PATH, --datadir PATH - Path to directory with historical backtesting data. - --userdir PATH, --user-data-dir PATH - Path to userdata directory. + -h, --help show this help message and exit + --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no + config is provided. + -1, --one-column Print output in one column. ``` * Example: see the timeframes for the 'binance' exchange, set in the configuration file: ``` -$ freqtrade list-timeframes -c config_binance.json +$ freqtrade -c config_binance.json list-timeframes ... Timeframes available for the exchange `binance`: 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M ``` @@ -300,16 +257,14 @@ You can print info about any pair/market with these subcommands - and you can fi These subcommands have same usage and same set of available options: ``` -usage: freqtrade list-markets [-h] [-v] [--logfile FILE] [-V] [-c PATH] - [-d PATH] [--userdir PATH] [--exchange EXCHANGE] - [--print-list] [--print-json] [-1] [--print-csv] +usage: freqtrade list-markets [-h] [--exchange EXCHANGE] [--print-list] + [--print-json] [-1] [--print-csv] [--base BASE_CURRENCY [BASE_CURRENCY ...]] [--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] [-a] -usage: freqtrade list-pairs [-h] [-v] [--logfile FILE] [-V] [-c PATH] - [-d PATH] [--userdir PATH] [--exchange EXCHANGE] - [--print-list] [--print-json] [-1] [--print-csv] +usage: freqtrade list-pairs [-h] [--exchange EXCHANGE] [--print-list] + [--print-json] [-1] [--print-csv] [--base BASE_CURRENCY [BASE_CURRENCY ...]] [--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] [-a] @@ -328,22 +283,6 @@ optional arguments: Specify quote currency(-ies). Space-separated list. -a, --all Print all pairs or market symbols. By default only active ones are shown. - -Common arguments: - -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified. Special values are: - 'syslog', 'journald'. See the documentation for more - details. - -V, --version show program's version number and exit - -c PATH, --config PATH - Specify configuration file (default: `config.json`). - Multiple --config options may be used. Can be set to - `-` to read config from stdin. - -d PATH, --datadir PATH - Path to directory with historical backtesting data. - --userdir PATH, --user-data-dir PATH - Path to userdata directory. - ``` By default, only active pairs/markets are shown. Active pairs/markets are those that can currently be traded @@ -365,7 +304,7 @@ $ freqtrade list-pairs --quote USD --print-json human-readable list with summary: ``` -$ freqtrade list-pairs -c config_binance.json --all --base BTC ETH --quote USDT USD --print-list +$ freqtrade -c config_binance.json list-pairs --all --base BTC ETH --quote USDT USD --print-list ``` * Print all markets on exchange "Kraken", in the tabular format: From 62bcb3d7660ad60f0b9c3f7374878df16117c253 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 11 Feb 2020 03:43:20 +0300 Subject: [PATCH 1694/3421] Fix tests in test_history.py --- tests/data/test_history.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index da4c90191..15f507b90 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -420,7 +420,7 @@ def test_trim_tickerlist(testdatadir) -> None: # Test the pattern ^(\d{8})-$ # This pattern extracts elements from the date to now - timerange = TimeRange('date', None, ticker_list[10][0] / 1000 - 1, None) + timerange = TimeRange('date', None, ticker_list[10][0] / 1000 - 1, 0) ticker = trim_tickerlist(ticker_list, timerange) ticker_len = len(ticker) @@ -430,14 +430,14 @@ def test_trim_tickerlist(testdatadir) -> None: # Test a wrong pattern # This pattern must return the list unchanged - timerange = TimeRange(None, None, None, 5) + timerange = TimeRange(None, None, 0, 5) ticker = trim_tickerlist(ticker_list, timerange) ticker_len = len(ticker) assert ticker_list_len == ticker_len # passing empty list - timerange = TimeRange(None, None, None, 5) + timerange = TimeRange(None, None, 0, 5) ticker = trim_tickerlist([], timerange) assert 0 == len(ticker) assert not ticker From 29f7c5071b2c99536f1499ba420f7c09a7eadcf2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 11 Feb 2020 04:17:10 +0300 Subject: [PATCH 1695/3421] Fix usage of an item from BTContainer in tests --- tests/optimize/__init__.py | 4 ++-- tests/optimize/test_backtest_detail.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/optimize/__init__.py b/tests/optimize/__init__.py index 524db093e..13605a38c 100644 --- a/tests/optimize/__init__.py +++ b/tests/optimize/__init__.py @@ -1,4 +1,4 @@ -from typing import Dict, List, NamedTuple +from typing import Dict, List, NamedTuple, Optional import arrow from pandas import DataFrame @@ -30,7 +30,7 @@ class BTContainer(NamedTuple): profit_perc: float trailing_stop: bool = False trailing_only_offset_is_reached: bool = False - trailing_stop_positive: float = None + trailing_stop_positive: Optional[float] = None trailing_stop_positive_offset: float = 0.0 use_sell_signal: bool = False diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py index bd2765430..e7bc76c1d 100644 --- a/tests/optimize/test_backtest_detail.py +++ b/tests/optimize/test_backtest_detail.py @@ -364,7 +364,7 @@ def test_backtest_results(default_conf, fee, mocker, caplog, data) -> None: default_conf["trailing_stop"] = data.trailing_stop default_conf["trailing_only_offset_is_reached"] = data.trailing_only_offset_is_reached # Only add this to configuration If it's necessary - if data.trailing_stop_positive: + if data.trailing_stop_positive is not None: default_conf["trailing_stop_positive"] = data.trailing_stop_positive default_conf["trailing_stop_positive_offset"] = data.trailing_stop_positive_offset default_conf["ask_strategy"] = {"use_sell_signal": data.use_sell_signal} From f99d1c38298b717a3e1d1299477338e41746c756 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Tue, 11 Feb 2020 15:44:47 +0100 Subject: [PATCH 1696/3421] fixed open_rate instead of open_rate_requested --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5f1024f8c..aa617a386 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -549,7 +549,7 @@ class FreqtradeBot: 'type': RPCMessageType.BUY_NOTIFICATION, 'exchange': self.exchange.name.capitalize(), 'pair': trade.pair, - 'limit': trade.open_rate_requested, + 'limit': trade.open_rate, 'order_type': order_type, 'stake_amount': trade.stake_amount, 'stake_currency': self.config['stake_currency'], From 7f4b90c68f9fd1a116ba3179b335add64c66c3cd Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Tue, 11 Feb 2020 15:45:35 +0100 Subject: [PATCH 1697/3421] fixed actual open_rate in notify_buy_cancel --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index aa617a386..6d1122aa1 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -572,7 +572,7 @@ class FreqtradeBot: 'type': RPCMessageType.BUY_CANCEL_NOTIFICATION, 'exchange': self.exchange.name.capitalize(), 'pair': trade.pair, - 'limit': trade.open_rate_requested, + 'limit': trade.open_rate, 'order_type': order_type, 'stake_amount': trade.stake_amount, 'stake_currency': self.config['stake_currency'], From 867b736b8477507f933ce8b9768a433de5721615 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Tue, 11 Feb 2020 15:49:57 +0100 Subject: [PATCH 1698/3421] Fixed to Executing Buys & Sells --- freqtrade/freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 6d1122aa1..85ddb0da1 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -414,7 +414,7 @@ class FreqtradeBot: if ((bid_check_dom.get('enabled', False)) and (bid_check_dom.get('bids_to_ask_delta', 0) > 0)): if self._check_depth_of_market_buy(pair, bid_check_dom): - logger.info(f'Executed Buy for {pair}.') + logger.info(f'Executing Buy for {pair}.') return self.execute_buy(pair, stake_amount) else: return False @@ -804,8 +804,8 @@ class FreqtradeBot: ) if should_sell.sell_flag: + logger.info(f'Executing Sell for {trade.pair}. Reason: {should_sell.sell_type}') self.execute_sell(trade, sell_rate, should_sell.sell_type) - logger.info(f'Executed Sell for {trade.pair}. Reason: {should_sell.sell_type}') return True return False From fc29564974d77e54599bf759dd1d1ed4d2df884a Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Tue, 11 Feb 2020 15:58:40 +0100 Subject: [PATCH 1699/3421] Fixed messages and readability --- docs/webhook-config.md | 4 ++-- freqtrade/rpc/rpc.py | 4 ++-- freqtrade/rpc/telegram.py | 4 ++-- tests/rpc/test_rpc_telegram.py | 6 +++--- tests/rpc/test_rpc_webhook.py | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/webhook-config.md b/docs/webhook-config.md index b287fa71e..e53aa8af5 100644 --- a/docs/webhook-config.md +++ b/docs/webhook-config.md @@ -16,7 +16,7 @@ Sample configuration (tested using IFTTT). "value3": "{stake_amount:8f} {stake_currency}" }, "webhookbuycancel": { - "value1": "Cancelling Buy {pair}", + "value1": "Cancelling Open Buy Order for {pair}", "value2": "limit {limit:8f}", "value3": "{stake_amount:8f} {stake_currency}" }, @@ -26,7 +26,7 @@ Sample configuration (tested using IFTTT). "value3": "profit: {profit_amount:8f} {stake_currency}" }, "webhooksellcancel": { - "value1": "Cancelling Sell {pair}", + "value1": "Cancelling Open Sell Order for {pair}", "value2": "limit {limit:8f}", "value3": "profit: {profit_amount:8f} {stake_currency}" }, diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index c1efea79e..07631f258 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -168,8 +168,8 @@ class RPC: profit_str += f" ({fiat_profit:.2f})" trades_list.append([ trade.id, - trade.pair + ['', '*'][trade.open_order_id is not None - and trade.close_rate_requested is None], + trade.pair + '*' if (trade.open_order_id is not None + and trade.close_rate_requested is None) else '', shorten_date(arrow.get(trade.open_date).humanize(only_distance=True)), profit_str ]) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 0dd7a8ffd..e3d4f54e7 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -144,7 +144,7 @@ class Telegram(RPC): message += ")`" elif msg['type'] == RPCMessageType.BUY_CANCEL_NOTIFICATION: - message = "*{exchange}:* Cancelling Buy {pair}".format(**msg) + message = "*{exchange}:* Cancelling Open Buy Order for {pair}".format(**msg) elif msg['type'] == RPCMessageType.SELL_NOTIFICATION: msg['amount'] = round(msg['amount'], 8) @@ -172,7 +172,7 @@ class Telegram(RPC): ' / {profit_fiat:.3f} {fiat_currency})`').format(**msg) elif msg['type'] == RPCMessageType.SELL_CANCEL_NOTIFICATION: - message = "*{exchange}:* Cancelling Sell {pair}".format(**msg) + message = "*{exchange}:* Cancelling Open Sell Order for {pair}".format(**msg) elif msg['type'] == RPCMessageType.STATUS_NOTIFICATION: message = '*Status:* `{status}`'.format(**msg) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index ae9c0c4dc..a8b8e0c5a 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1228,7 +1228,7 @@ def test_send_msg_buy_cancel_notification(default_conf, mocker) -> None: 'pair': 'ETH/BTC', }) assert msg_mock.call_args[0][0] \ - == ('*Bittrex:* Cancelling Buy ETH/BTC') + == ('*Bittrex:* Cancelling Open Buy Order for ETH/BTC') def test_send_msg_sell_notification(default_conf, mocker) -> None: @@ -1318,7 +1318,7 @@ def test_send_msg_sell_cancel_notification(default_conf, mocker) -> None: 'pair': 'KEY/ETH', }) assert msg_mock.call_args[0][0] \ - == ('*Binance:* Cancelling Sell KEY/ETH') + == ('*Binance:* Cancelling Open Sell Order for KEY/ETH') msg_mock.reset_mock() telegram.send_msg({ @@ -1327,7 +1327,7 @@ def test_send_msg_sell_cancel_notification(default_conf, mocker) -> None: 'pair': 'KEY/ETH', }) assert msg_mock.call_args[0][0] \ - == ('*Binance:* Cancelling Sell KEY/ETH') + == ('*Binance:* Cancelling Open Sell Order for KEY/ETH') # Reset singleton function to avoid random breaks telegram._fiat_converter.convert_amount = old_convamount diff --git a/tests/rpc/test_rpc_webhook.py b/tests/rpc/test_rpc_webhook.py index ab40047c0..3f3f36766 100644 --- a/tests/rpc/test_rpc_webhook.py +++ b/tests/rpc/test_rpc_webhook.py @@ -21,7 +21,7 @@ def get_webhook_dict() -> dict: "value3": "{stake_amount:8f} {stake_currency}" }, "webhookbuycancel": { - "value1": "Cancelling Buy {pair}", + "value1": "Cancelling Open Buy Order for {pair}", "value2": "limit {limit:8f}", "value3": "{stake_amount:8f} {stake_currency}" }, @@ -31,7 +31,7 @@ def get_webhook_dict() -> dict: "value3": "profit: {profit_amount:8f} {stake_currency}" }, "webhooksellcancel": { - "value1": "Cancelling Sell {pair}", + "value1": "Cancelling Open Sell Order for {pair}", "value2": "limit {limit:8f}", "value3": "profit: {profit_amount:8f} {stake_currency}" }, From 5b4d8d69ef567ca074351186eebe97e3c9e2fe52 Mon Sep 17 00:00:00 2001 From: Fredrik Rydin Date: Tue, 11 Feb 2020 16:02:08 +0100 Subject: [PATCH 1700/3421] Adding --min-trades and --max-trades for hyperopt-list --- docs/utils.md | 5 +++- freqtrade/commands/arguments.py | 1 + freqtrade/commands/cli_options.py | 12 ++++++++++ freqtrade/commands/hyperopt_commands.py | 14 ++++++++++++ freqtrade/configuration/configuration.py | 6 +++++ tests/commands/test_commands.py | 29 ++++++++++++++++++++++++ 6 files changed, 66 insertions(+), 1 deletion(-) mode change 100644 => 100755 freqtrade/commands/hyperopt_commands.py diff --git a/docs/utils.md b/docs/utils.md index 5bb3a0e53..91dd6eae0 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -413,7 +413,8 @@ You can list the hyperoptimization epochs the Hyperopt module evaluated previous ``` usage: freqtrade hyperopt-list [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--best] - [--profitable] [--min-avg-time FLOAT] + [--profitable] [--min-trades INT] + [--max-trades INT] [--min-avg-time FLOAT] [--max-avg-time FLOAT] [--min-avg-profit FLOAT] [--min-total-profit FLOAT] [--no-color] [--print-json] [--no-details] @@ -422,6 +423,8 @@ optional arguments: -h, --help show this help message and exit --best Select only best epochs. --profitable Select only profitable epochs. + --min-trades INT Select epochs with more than INT trades. + --max-trades INT Select epochs with less than INT trades. --min-avg-time FLOAT Select epochs on above average time. --max-avg-time FLOAT Select epochs on under average time. --min-avg-profit FLOAT diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index e5a68389b..1b2c4482e 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -62,6 +62,7 @@ ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source", "ticker_interval"] ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", + "hyperopt_list_min_trades", "hyperopt_list_max_trades", "hyperopt_list_min_avg_time", "hyperopt_list_max_avg_time", "hyperopt_list_min_avg_profit", "hyperopt_list_min_total_profit", "print_colorized", "print_json", "hyperopt_list_no_details"] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 154404821..f9351c207 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -398,6 +398,18 @@ AVAILABLE_CLI_OPTIONS = { help='Select only best epochs.', action='store_true', ), + "hyperopt_list_min_trades": Arg( + '--min-trades', + help='Select epochs with more than INT trades.', + type=check_int_nonzero, + metavar='INT', + ), + "hyperopt_list_max_trades": Arg( + '--max-trades', + help='Select epochs with less than INT trades.', + type=check_int_nonzero, + metavar='INT', + ), "hyperopt_list_min_avg_time": Arg( '--min-avg-time', help='Select epochs on above average time.', diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py old mode 100644 new mode 100755 index ed0728bf6..c3baf2406 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -27,6 +27,8 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: filteroptions = { 'only_best': config.get('hyperopt_list_best', False), 'only_profitable': config.get('hyperopt_list_profitable', False), + 'filter_min_trades': config.get('hyperopt_list_min_trades', 0), + 'filter_max_trades': config.get('hyperopt_list_max_trades', 0), 'filter_min_avg_time': config.get('hyperopt_list_min_avg_time', None), 'filter_max_avg_time': config.get('hyperopt_list_max_avg_time', None), 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', None), @@ -74,6 +76,8 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: filteroptions = { 'only_best': config.get('hyperopt_list_best', False), 'only_profitable': config.get('hyperopt_list_profitable', False), + 'filter_min_trades': config.get('hyperopt_list_min_trades', 0), + 'filter_max_trades': config.get('hyperopt_list_max_trades', 0), 'filter_min_avg_time': config.get('hyperopt_list_min_avg_time', None), 'filter_max_avg_time': config.get('hyperopt_list_max_avg_time', None), 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', None), @@ -119,6 +123,16 @@ def _hyperopt_filter_trials(trials: List, filteroptions: dict) -> List: trials = [x for x in trials if x['is_best']] if filteroptions['only_profitable']: trials = [x for x in trials if x['results_metrics']['profit'] > 0] + if filteroptions['filter_min_trades'] > 0: + trials = [ + x for x in trials + if x['results_metrics']['trade_count'] > filteroptions['filter_min_trades'] + ] + if filteroptions['filter_max_trades'] > 0: + trials = [ + x for x in trials + if x['results_metrics']['trade_count'] < filteroptions['filter_max_trades'] + ] if filteroptions['filter_min_avg_time'] is not None: trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] trials = [ diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index f7e87f3a1..41f24e55c 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -310,6 +310,12 @@ class Configuration: self._args_to_config(config, argname='hyperopt_list_profitable', logstring='Parameter --profitable detected: {}') + self._args_to_config(config, argname='hyperopt_list_min_trades', + logstring='Parameter --min-trades detected: {}') + + self._args_to_config(config, argname='hyperopt_list_max_trades', + logstring='Parameter --max-trades detected: {}') + self._args_to_config(config, argname='hyperopt_list_min_avg_time', logstring='Parameter --min-avg-time detected: {}') diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index db8a9289a..e02a721a4 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -773,6 +773,35 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): pargs['config'] = None start_hyperopt_list(pargs) captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 2/12", " 10/12"]) + assert all(x not in captured.out + for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", + " 11/12", " 12/12"]) + args = [ + "hyperopt-list", + "--no-details", + "--no-color", + "--min-trades", "20" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 3/12", " 6/12", " 7/12", " 9/12", " 11/12"]) + assert all(x not in captured.out + for x in [" 1/12", " 2/12", " 4/12", " 5/12", " 8/12", " 10/12", " 12/12"]) + args = [ + "hyperopt-list", + "--profitable", + "--no-details", + "--max-trades", "20" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() assert all(x in captured.out for x in [" 2/12", " 10/12"]) assert all(x not in captured.out From 4fedf1e564212b43b359a1bc533f0d571b9ce926 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Tue, 11 Feb 2020 16:05:44 +0100 Subject: [PATCH 1701/3421] default refresh TRUE on get_buy_rate and get_sell_Rate --- freqtrade/freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 85ddb0da1..c04e3077e 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -234,7 +234,7 @@ class FreqtradeBot: return trades_created - def get_buy_rate(self, pair: str, refresh: bool = False, tick: Dict = None) -> float: + def get_buy_rate(self, pair: str, refresh: bool = True, tick: Dict = None) -> float: """ Calculates bid target between current ask price and last price :return: float: Price @@ -615,7 +615,7 @@ class FreqtradeBot: return trades_closed - def get_sell_rate(self, pair: str, refresh: bool = False) -> float: + def get_sell_rate(self, pair: str, refresh: bool = True) -> float: """ Get sell rate - either using get-ticker bid or first bid based on orderbook The orderbook portion is only used for rpc messaging, which would otherwise fail From 5f4c209fca844f6ea66f7302c22a64d7375812db Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Tue, 11 Feb 2020 16:14:49 +0100 Subject: [PATCH 1702/3421] fixed one more occurence of executed buy, and test --- freqtrade/freqtradebot.py | 2 +- tests/test_freqtradebot.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c04e3077e..0d1105b2f 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -419,7 +419,7 @@ class FreqtradeBot: else: return False - logger.info(f'Executed Buy for {pair}') + logger.info(f'Executing Buy for {pair}') return self.execute_buy(pair, stake_amount) else: return False diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 429d3599d..18cd81aed 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -300,7 +300,7 @@ def test_edge_overrides_stoploss(limit_buy_order, fee, caplog, mocker, edge_conf # stoploss shoud be hit assert freqtrade.handle_trade(trade) is True - assert log_has('Executed Sell for NEO/BTC. Reason: SellType.STOP_LOSS', caplog) + assert log_has('Executing Sell for NEO/BTC. Reason: SellType.STOP_LOSS', caplog) assert trade.sell_reason == SellType.STOP_LOSS.value From cde1b2b56c7fa6285af72ec3d1758968f4d9b88d Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Tue, 11 Feb 2020 16:28:48 +0100 Subject: [PATCH 1703/3421] readded rpc status message for partial buys --- freqtrade/freqtradebot.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 0d1105b2f..ffd951ee2 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -906,6 +906,10 @@ class FreqtradeBot: trade.open_order_id = None logger.info('Partial buy order timeout for %s.', trade) + self.rpc.send_msg({ + 'type': RPCMessageType.STATUS_NOTIFICATION, + 'status': f'Remaining buy order for {trade.pair} cancelled due to timeout' + }) return False def handle_timedout_limit_sell(self, trade: Trade, order: Dict) -> bool: From 899de8b27c3f35273f090534b0bb2a9d131270f6 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Tue, 11 Feb 2020 16:50:18 +0100 Subject: [PATCH 1704/3421] modified tests for double partial call --- tests/test_freqtradebot.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 18cd81aed..c0af1f015 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2067,7 +2067,7 @@ def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old # note this is for a partially-complete buy order freqtrade.check_handle_timedout() assert cancel_order_mock.call_count == 1 - assert rpc_mock.call_count == 1 + assert rpc_mock.call_count == 2 trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() assert len(trades) == 1 assert trades[0].amount == 23.0 @@ -2101,7 +2101,7 @@ def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, cap assert log_has_re(r"Applying fee on amount for Trade.* Order", caplog) assert cancel_order_mock.call_count == 1 - assert rpc_mock.call_count == 1 + assert rpc_mock.call_count == 2 trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() assert len(trades) == 1 # Verify that tradehas been updated @@ -2140,7 +2140,7 @@ def test_check_handle_timedout_partial_except(default_conf, ticker, open_trade, assert log_has_re(r"Could not update trade amount: .*", caplog) assert cancel_order_mock.call_count == 1 - assert rpc_mock.call_count == 1 + assert rpc_mock.call_count == 2 trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() assert len(trades) == 1 # Verify that tradehas been updated From d1c3eabb870fe5a5f2357086459b1a2ca06faaa9 Mon Sep 17 00:00:00 2001 From: Fredrik Rydin Date: Tue, 11 Feb 2020 18:08:30 +0100 Subject: [PATCH 1705/3421] Changed commands to use "check_int_positive" --- freqtrade/commands/cli_options.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index f9351c207..c3b79ae3a 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -401,13 +401,13 @@ AVAILABLE_CLI_OPTIONS = { "hyperopt_list_min_trades": Arg( '--min-trades', help='Select epochs with more than INT trades.', - type=check_int_nonzero, + type=check_int_positive, metavar='INT', ), "hyperopt_list_max_trades": Arg( '--max-trades', help='Select epochs with less than INT trades.', - type=check_int_nonzero, + type=check_int_positive, metavar='INT', ), "hyperopt_list_min_avg_time": Arg( From c35fe2c386ae84a128e817be79c901a5345538c9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 11 Feb 2020 19:29:43 +0100 Subject: [PATCH 1706/3421] Add link to quick-start-guide --- docs/docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docker.md b/docs/docker.md index 6267c0cf2..cd24994bc 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -8,7 +8,7 @@ Start by downloading and installing Docker CE for your platform: * [Windows](https://docs.docker.com/docker-for-windows/install/) * [Linux](https://docs.docker.com/install/) -Optionally, [docker-compose](https://docs.docker.com/compose/install/) should be installed and available to follow the docker quick start guide. +Optionally, [docker-compose](https://docs.docker.com/compose/install/) should be installed and available to follow the [docker quick start guide](#docker-quick-start). Once you have Docker installed, simply prepare the config file (e.g. `config.json`) and run the image for `freqtrade` as explained below. From 7be9f0067e63f7a889e10c096b1f3fd36cbedf81 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 11 Feb 2020 20:45:53 +0100 Subject: [PATCH 1707/3421] Update data-analysis documentation to properly initialize configuration --- docs/strategy_analysis_example.md | 27 +++++++++---------- .../templates/strategy_analysis_example.ipynb | 27 +++++++++---------- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index cc6b9805f..2d77edaed 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -7,18 +7,19 @@ Debugging a strategy can be time-consuming. FreqTrade offers helper functions to ```python from pathlib import Path +from freqtrade.configuration import Configuration + # Customize these according to your needs. +# Initialize empty configuration object +config = Configuration.from_files([]) +# Optionally, Use existing configuration file +# config = Configuration.from_files(["config.json"]) + # Define some constants -timeframe = "5m" +config["ticker_interval"] = "5m" # Name of the strategy class -strategy_name = 'SampleStrategy' -# Path to user data -user_data_dir = Path('user_data') -# Location of the strategy -strategy_location = user_data_dir / 'strategies' -# Location of the data -data_location = Path(user_data_dir, 'data', 'binance') +config["strategy"] = "SampleStrategy" # Pair to analyze - Only use one pair here pair = "BTC_USDT" ``` @@ -28,8 +29,8 @@ pair = "BTC_USDT" # Load data using values set above from freqtrade.data.history import load_pair_history -candles = load_pair_history(datadir=data_location, - timeframe=timeframe, +candles = load_pair_history(datadir=config["data_dir"], + timeframe=config["ticker_interval"], pair=pair) # Confirm success @@ -44,9 +45,7 @@ candles.head() ```python # Load strategy using values set above from freqtrade.resolvers import StrategyResolver -strategy = StrategyResolver.load_strategy({'strategy': strategy_name, - 'user_data_dir': user_data_dir, - 'strategy_path': strategy_location}) +strategy = StrategyResolver.load_strategy(config) # Generate buy/sell signals using strategy df = strategy.analyze_ticker(candles, {'pair': pair}) @@ -86,7 +85,7 @@ Analyze a trades dataframe (also used below for plotting) from freqtrade.data.btanalysis import load_backtest_data # Load backtest results -trades = load_backtest_data(user_data_dir / "backtest_results/backtest-result.json") +trades = load_backtest_data(config["user_data_dir"] / "backtest_results/backtest-result.json") # Show value-counts per pair trades.groupby("pair")["sell_reason"].value_counts() diff --git a/freqtrade/templates/strategy_analysis_example.ipynb b/freqtrade/templates/strategy_analysis_example.ipynb index eea8fb85f..06fc3f557 100644 --- a/freqtrade/templates/strategy_analysis_example.ipynb +++ b/freqtrade/templates/strategy_analysis_example.ipynb @@ -23,18 +23,19 @@ "outputs": [], "source": [ "from pathlib import Path\n", + "from freqtrade.configuration import Configuration\n", + "\n", "# Customize these according to your needs.\n", "\n", + "# Initialize empty configuration object\n", + "config = Configuration.from_files([])\n", + "# Optionally, Use existing configuration file\n", + "# config = Configuration.from_files([\"config.json\"])\n", + "\n", "# Define some constants\n", - "timeframe = \"5m\"\n", + "config[\"ticker_interval\"] = \"5m\"\n", "# Name of the strategy class\n", - "strategy_name = 'SampleStrategy'\n", - "# Path to user data\n", - "user_data_dir = Path('user_data')\n", - "# Location of the strategy\n", - "strategy_location = user_data_dir / 'strategies'\n", - "# Location of the data\n", - "data_location = Path(user_data_dir, 'data', 'binance')\n", + "config[\"strategy\"] = \"SampleStrategy\"\n", "# Pair to analyze - Only use one pair here\n", "pair = \"BTC_USDT\"" ] @@ -48,8 +49,8 @@ "# Load data using values set above\n", "from freqtrade.data.history import load_pair_history\n", "\n", - "candles = load_pair_history(datadir=data_location,\n", - " timeframe=timeframe,\n", + "candles = load_pair_history(datadir=config[\"data_dir\"],\n", + " timeframe=config[\"ticker_interval\"],\n", " pair=pair)\n", "\n", "# Confirm success\n", @@ -73,9 +74,7 @@ "source": [ "# Load strategy using values set above\n", "from freqtrade.resolvers import StrategyResolver\n", - "strategy = StrategyResolver.load_strategy({'strategy': strategy_name,\n", - " 'user_data_dir': user_data_dir,\n", - " 'strategy_path': strategy_location})\n", + "strategy = StrategyResolver.load_strategy(config)\n", "\n", "# Generate buy/sell signals using strategy\n", "df = strategy.analyze_ticker(candles, {'pair': pair})\n", @@ -137,7 +136,7 @@ "from freqtrade.data.btanalysis import load_backtest_data\n", "\n", "# Load backtest results\n", - "trades = load_backtest_data(user_data_dir / \"backtest_results/backtest-result.json\")\n", + "trades = load_backtest_data(config[\"user_data_dir\"] / \"backtest_results/backtest-result.json\")\n", "\n", "# Show value-counts per pair\n", "trades.groupby(\"pair\")[\"sell_reason\"].value_counts()" From 539343b20d7304e3f746c3ac7868bb584f3e1539 Mon Sep 17 00:00:00 2001 From: Fredrik Rydin Date: Tue, 11 Feb 2020 21:29:55 +0100 Subject: [PATCH 1708/3421] Adding 2 more filter options for completeness --- docs/utils.md | 8 ++++++- freqtrade/commands/arguments.py | 3 ++- freqtrade/commands/cli_options.py | 12 ++++++++++ freqtrade/commands/hyperopt_commands.py | 21 ++++++++++++++++-- freqtrade/configuration/configuration.py | 6 +++++ tests/commands/test_commands.py | 28 ++++++++++++++++++++++++ 6 files changed, 74 insertions(+), 4 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index 91dd6eae0..abb7fd0db 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -416,7 +416,9 @@ usage: freqtrade hyperopt-list [-h] [-v] [--logfile FILE] [-V] [-c PATH] [--profitable] [--min-trades INT] [--max-trades INT] [--min-avg-time FLOAT] [--max-avg-time FLOAT] [--min-avg-profit FLOAT] - [--min-total-profit FLOAT] [--no-color] + [--max-avg-profit FLOAT] + [--min-total-profit FLOAT] + [--max-total-profit FLOAT] [--no-color] [--print-json] [--no-details] optional arguments: @@ -429,8 +431,12 @@ optional arguments: --max-avg-time FLOAT Select epochs on under average time. --min-avg-profit FLOAT Select epochs on above average profit. + --max-avg-profit FLOAT + Select epochs on below average profit. --min-total-profit FLOAT Select epochs on above total profit. + --max-total-profit FLOAT + Select epochs on below total profit. --no-color Disable colorization of hyperopt results. May be useful if you are redirecting output to a file. --print-json Print best result detailization in JSON format. diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 1b2c4482e..fe6f49039 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -64,7 +64,8 @@ ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_list_min_trades", "hyperopt_list_max_trades", "hyperopt_list_min_avg_time", "hyperopt_list_max_avg_time", - "hyperopt_list_min_avg_profit", "hyperopt_list_min_total_profit", + "hyperopt_list_min_avg_profit", "hyperopt_list_max_avg_profit", + "hyperopt_list_min_total_profit", "hyperopt_list_max_total_profit", "print_colorized", "print_json", "hyperopt_list_no_details"] ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_show_index", diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index c3b79ae3a..1776955b1 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -428,12 +428,24 @@ AVAILABLE_CLI_OPTIONS = { type=float, metavar='FLOAT', ), + "hyperopt_list_max_avg_profit": Arg( + '--max-avg-profit', + help='Select epochs on below average profit.', + type=float, + metavar='FLOAT', + ), "hyperopt_list_min_total_profit": Arg( '--min-total-profit', help='Select epochs on above total profit.', type=float, metavar='FLOAT', ), + "hyperopt_list_max_total_profit": Arg( + '--max-total-profit', + help='Select epochs on below total profit.', + type=float, + metavar='FLOAT', + ), "hyperopt_list_no_details": Arg( '--no-details', help='Do not print best epoch details.', diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index c3baf2406..8c1c80d98 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -32,7 +32,9 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: 'filter_min_avg_time': config.get('hyperopt_list_min_avg_time', None), 'filter_max_avg_time': config.get('hyperopt_list_max_avg_time', None), 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', None), - 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', None) + 'filter_max_avg_profit': config.get('hyperopt_list_max_avg_profit', None), + 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', None), + 'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None) } trials_file = (config['user_data_dir'] / @@ -81,7 +83,9 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: 'filter_min_avg_time': config.get('hyperopt_list_min_avg_time', None), 'filter_max_avg_time': config.get('hyperopt_list_max_avg_time', None), 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', None), - 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', None) + 'filter_max_avg_profit': config.get('hyperopt_list_max_avg_profit', None), + 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', None), + 'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None) } no_header = config.get('hyperopt_show_no_header', False) @@ -152,12 +156,25 @@ def _hyperopt_filter_trials(trials: List, filteroptions: dict) -> List: if x['results_metrics']['avg_profit'] > filteroptions['filter_min_avg_profit'] ] + if filteroptions['filter_max_avg_profit'] is not None: + trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] + trials = [ + x for x in trials + if x['results_metrics']['avg_profit'] + < filteroptions['filter_max_avg_profit'] + ] if filteroptions['filter_min_total_profit'] is not None: trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] trials = [ x for x in trials if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit'] ] + if filteroptions['filter_max_total_profit'] is not None: + trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] + trials = [ + x for x in trials + if x['results_metrics']['profit'] < filteroptions['filter_max_total_profit'] + ] logger.info(f"{len(trials)} " + ("best " if filteroptions['only_best'] else "") + diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 41f24e55c..c2613ba99 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -325,9 +325,15 @@ class Configuration: self._args_to_config(config, argname='hyperopt_list_min_avg_profit', logstring='Parameter --min-avg-profit detected: {}') + self._args_to_config(config, argname='hyperopt_list_max_avg_profit', + logstring='Parameter --max-avg-profit detected: {}') + self._args_to_config(config, argname='hyperopt_list_min_total_profit', logstring='Parameter --min-total-profit detected: {}') + self._args_to_config(config, argname='hyperopt_list_max_total_profit', + logstring='Parameter --max-total-profit detected: {}') + self._args_to_config(config, argname='hyperopt_list_no_details', logstring='Parameter --no-details detected: {}') diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index e02a721a4..ee1db5db5 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -822,6 +822,20 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): assert all(x not in captured.out for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", " 10/12", " 11/12", " 12/12"]) + args = [ + "hyperopt-list", + "--no-details", + "--max-avg-profit", "0.10" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 1/12", " 3/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", + " 11/12"]) + assert all(x not in captured.out + for x in [" 2/12", " 4/12", " 10/12", " 12/12"]) args = [ "hyperopt-list", "--no-details", @@ -836,6 +850,20 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): assert all(x not in captured.out for x in [" 1/12", " 2/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", " 11/12", " 12/12"]) + args = [ + "hyperopt-list", + "--no-details", + "--max-total-profit", "0.4" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 1/12", " 2/12", " 3/12", " 5/12", " 6/12", " 7/12", " 8/12", + " 9/12", " 11/12"]) + assert all(x not in captured.out + for x in [" 4/12", " 10/12", " 12/12"]) args = [ "hyperopt-list", "--profitable", From 4f3376e2a189618f649e8f5d91d3ae753b1ae730 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 12 Feb 2020 01:39:15 +0300 Subject: [PATCH 1709/3421] Do not instantiate directly DefaultStrategy in tests --- tests/data/test_history.py | 14 ++++++++++---- tests/optimize/test_backtesting.py | 6 ++++-- tests/strategy/test_interface.py | 18 ++++++++++++------ tests/test_plotting.py | 14 +++++++++----- 4 files changed, 35 insertions(+), 17 deletions(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 15f507b90..cf0901587 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -24,7 +24,7 @@ from freqtrade.data.history import (_download_pair_history, validate_backtest_data) from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import file_dump_json -from freqtrade.strategy.default_strategy import DefaultStrategy +from freqtrade.resolvers import StrategyResolver from tests.conftest import (get_patched_exchange, log_has, log_has_re, patch_exchange) @@ -509,7 +509,9 @@ def test_file_dump_json_tofile(testdatadir) -> None: def test_get_timerange(default_conf, mocker, testdatadir) -> None: patch_exchange(mocker) - strategy = DefaultStrategy(default_conf) + + default_conf.update({'strategy': 'DefaultStrategy'}) + strategy = StrategyResolver.load_strategy(default_conf) data = strategy.tickerdata_to_dataframe( load_data( @@ -525,7 +527,9 @@ def test_get_timerange(default_conf, mocker, testdatadir) -> None: def test_validate_backtest_data_warn(default_conf, mocker, caplog, testdatadir) -> None: patch_exchange(mocker) - strategy = DefaultStrategy(default_conf) + + default_conf.update({'strategy': 'DefaultStrategy'}) + strategy = StrategyResolver.load_strategy(default_conf) data = strategy.tickerdata_to_dataframe( load_data( @@ -547,7 +551,9 @@ def test_validate_backtest_data_warn(default_conf, mocker, caplog, testdatadir) def test_validate_backtest_data(default_conf, mocker, caplog, testdatadir) -> None: patch_exchange(mocker) - strategy = DefaultStrategy(default_conf) + + default_conf.update({'strategy': 'DefaultStrategy'}) + strategy = StrategyResolver.load_strategy(default_conf) timerange = TimeRange('index', 'index', 200, 250) data = strategy.tickerdata_to_dataframe( diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index ec85c8030..bba15c156 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -20,8 +20,8 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import get_timerange from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.optimize.backtesting import Backtesting +from freqtrade.resolvers import StrategyResolver from freqtrade.state import RunMode -from freqtrade.strategy.default_strategy import DefaultStrategy from freqtrade.strategy.interface import SellType from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, patched_configuration_load_config_file) @@ -350,7 +350,9 @@ def test_tickerdata_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: assert len(data['UNITTEST/BTC']) == 102 # Load strategy to compare the result between Backtesting function and strategy are the same - strategy = DefaultStrategy(default_conf) + default_conf.update({'strategy': 'DefaultStrategy'}) + strategy = StrategyResolver.load_strategy(default_conf) + data2 = strategy.tickerdata_to_dataframe(tickerlist) assert data['UNITTEST/BTC'].equals(data2['UNITTEST/BTC']) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 89c38bda1..a28519383 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -10,8 +10,9 @@ from freqtrade.configuration import TimeRange from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.history import load_tickerdata_file from freqtrade.persistence import Trade -from tests.conftest import get_patched_exchange, log_has +from freqtrade.resolvers import StrategyResolver from freqtrade.strategy.default_strategy import DefaultStrategy +from tests.conftest import get_patched_exchange, log_has # Avoid to reinit the same object again and again _STRATEGY = DefaultStrategy(config={}) @@ -104,7 +105,8 @@ def test_get_signal_handles_exceptions(mocker, default_conf): def test_tickerdata_to_dataframe(default_conf, testdatadir) -> None: - strategy = DefaultStrategy(default_conf) + default_conf.update({'strategy': 'DefaultStrategy'}) + strategy = StrategyResolver.load_strategy(default_conf) timerange = TimeRange.parse_timerange('1510694220-1510700340') tick = load_tickerdata_file(testdatadir, 'UNITTEST/BTC', '1m', timerange=timerange) @@ -120,7 +122,8 @@ def test_min_roi_reached(default_conf, fee) -> None: min_roi_list = [{20: 0.05, 55: 0.01, 0: 0.1}, {0: 0.1, 20: 0.05, 55: 0.01}] for roi in min_roi_list: - strategy = DefaultStrategy(default_conf) + default_conf.update({'strategy': 'DefaultStrategy'}) + strategy = StrategyResolver.load_strategy(default_conf) strategy.minimal_roi = roi trade = Trade( pair='ETH/BTC', @@ -158,7 +161,8 @@ def test_min_roi_reached2(default_conf, fee) -> None: }, ] for roi in min_roi_list: - strategy = DefaultStrategy(default_conf) + default_conf.update({'strategy': 'DefaultStrategy'}) + strategy = StrategyResolver.load_strategy(default_conf) strategy.minimal_roi = roi trade = Trade( pair='ETH/BTC', @@ -192,7 +196,8 @@ def test_min_roi_reached3(default_conf, fee) -> None: 30: 0.05, 55: 0.30, } - strategy = DefaultStrategy(default_conf) + default_conf.update({'strategy': 'DefaultStrategy'}) + strategy = StrategyResolver.load_strategy(default_conf) strategy.minimal_roi = min_roi trade = Trade( pair='ETH/BTC', @@ -292,7 +297,8 @@ def test__analyze_ticker_internal_skip_analyze(ticker_history, mocker, caplog) - def test_is_pair_locked(default_conf): - strategy = DefaultStrategy(default_conf) + default_conf.update({'strategy': 'DefaultStrategy'}) + strategy = StrategyResolver.load_strategy(default_conf) # dict should be empty assert not strategy._pair_locked_until diff --git a/tests/test_plotting.py b/tests/test_plotting.py index e7ec4ce46..34d1f2b0c 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -19,7 +19,7 @@ from freqtrade.plot.plotting import (add_indicators, add_profit, generate_profit_graph, init_plotscript, load_and_plot_trades, plot_profit, plot_trades, store_plot_file) -from freqtrade.strategy.default_strategy import DefaultStrategy +from freqtrade.resolvers import StrategyResolver from tests.conftest import get_args, log_has, log_has_re @@ -70,9 +70,11 @@ def test_add_indicators(default_conf, testdatadir, caplog): indicators1 = {"ema10": {}} indicators2 = {"macd": {"color": "red"}} + default_conf.update({'strategy': 'DefaultStrategy'}) + strategy = StrategyResolver.load_strategy(default_conf) + # Generate buy/sell signals and indicators - strat = DefaultStrategy(default_conf) - data = strat.analyze_ticker(data, {'pair': pair}) + data = strategy.analyze_ticker(data, {'pair': pair}) fig = generate_empty_figure() # Row 1 @@ -181,9 +183,11 @@ def test_generate_candlestick_graph_no_trades(default_conf, mocker, testdatadir) data = history.load_pair_history(pair=pair, timeframe='1m', datadir=testdatadir, timerange=timerange) + default_conf.update({'strategy': 'DefaultStrategy'}) + strategy = StrategyResolver.load_strategy(default_conf) + # Generate buy/sell signals and indicators - strat = DefaultStrategy(default_conf) - data = strat.analyze_ticker(data, {'pair': pair}) + data = strategy.analyze_ticker(data, {'pair': pair}) indicators1 = [] indicators2 = [] From d6b9397579c2d4542bf5742a9ac7aa7f68a56f08 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 Feb 2020 06:40:13 +0100 Subject: [PATCH 1710/3421] Fix typo in datadir key --- docs/strategy_analysis_example.md | 4 ++-- freqtrade/templates/strategy_analysis_example.ipynb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index 2d77edaed..10ae73450 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -13,7 +13,7 @@ from freqtrade.configuration import Configuration # Initialize empty configuration object config = Configuration.from_files([]) -# Optionally, Use existing configuration file +# Optionally, use existing configuration file # config = Configuration.from_files(["config.json"]) # Define some constants @@ -29,7 +29,7 @@ pair = "BTC_USDT" # Load data using values set above from freqtrade.data.history import load_pair_history -candles = load_pair_history(datadir=config["data_dir"], +candles = load_pair_history(datadir=config["datadir"], timeframe=config["ticker_interval"], pair=pair) diff --git a/freqtrade/templates/strategy_analysis_example.ipynb b/freqtrade/templates/strategy_analysis_example.ipynb index 06fc3f557..4541f5ed5 100644 --- a/freqtrade/templates/strategy_analysis_example.ipynb +++ b/freqtrade/templates/strategy_analysis_example.ipynb @@ -29,7 +29,7 @@ "\n", "# Initialize empty configuration object\n", "config = Configuration.from_files([])\n", - "# Optionally, Use existing configuration file\n", + "# Optionally, use existing configuration file\n", "# config = Configuration.from_files([\"config.json\"])\n", "\n", "# Define some constants\n", @@ -49,7 +49,7 @@ "# Load data using values set above\n", "from freqtrade.data.history import load_pair_history\n", "\n", - "candles = load_pair_history(datadir=config[\"data_dir\"],\n", + "candles = load_pair_history(datadir=config[\"datadir\"],\n", " timeframe=config[\"ticker_interval\"],\n", " pair=pair)\n", "\n", From 483cba453a3f9961ed6905b780de1a72881bdd20 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 Feb 2020 19:58:23 +0100 Subject: [PATCH 1711/3421] Fix last occurence of data_location --- docs/strategy_analysis_example.md | 2 +- freqtrade/templates/strategy_analysis_example.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index 10ae73450..97a555e9e 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -34,7 +34,7 @@ candles = load_pair_history(datadir=config["datadir"], pair=pair) # Confirm success -print("Loaded " + str(len(candles)) + f" rows of data for {pair} from {data_location}") +print("Loaded " + str(len(candles)) + f" rows of data for {pair} from {config['datadir']}") candles.head() ``` diff --git a/freqtrade/templates/strategy_analysis_example.ipynb b/freqtrade/templates/strategy_analysis_example.ipynb index 4541f5ed5..4b904e100 100644 --- a/freqtrade/templates/strategy_analysis_example.ipynb +++ b/freqtrade/templates/strategy_analysis_example.ipynb @@ -54,7 +54,7 @@ " pair=pair)\n", "\n", "# Confirm success\n", - "print(\"Loaded \" + str(len(candles)) + f\" rows of data for {pair} from {data_location}\")\n", + "print(\"Loaded \" + str(len(candles)) + f\" rows of data for {pair} from {config['datadir']}\")\n", "candles.head()" ] }, From 2efa1c164fa4c1b0f5bab1775fba7b0c496ef299 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 12 Feb 2020 21:43:43 +0100 Subject: [PATCH 1712/3421] Revert data-location section --- docs/strategy_analysis_example.md | 6 ++++-- freqtrade/templates/strategy_analysis_example.ipynb | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index 97a555e9e..93e84122b 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -20,6 +20,8 @@ config = Configuration.from_files([]) config["ticker_interval"] = "5m" # Name of the strategy class config["strategy"] = "SampleStrategy" +# Location of the data +data_location = Path(config['user_data_dir'], 'data', 'binance') # Pair to analyze - Only use one pair here pair = "BTC_USDT" ``` @@ -29,12 +31,12 @@ pair = "BTC_USDT" # Load data using values set above from freqtrade.data.history import load_pair_history -candles = load_pair_history(datadir=config["datadir"], +candles = load_pair_history(datadir=data_location, timeframe=config["ticker_interval"], pair=pair) # Confirm success -print("Loaded " + str(len(candles)) + f" rows of data for {pair} from {config['datadir']}") +print("Loaded " + str(len(candles)) + f" rows of data for {pair} from {data_location}") candles.head() ``` diff --git a/freqtrade/templates/strategy_analysis_example.ipynb b/freqtrade/templates/strategy_analysis_example.ipynb index 4b904e100..91e132380 100644 --- a/freqtrade/templates/strategy_analysis_example.ipynb +++ b/freqtrade/templates/strategy_analysis_example.ipynb @@ -36,6 +36,8 @@ "config[\"ticker_interval\"] = \"5m\"\n", "# Name of the strategy class\n", "config[\"strategy\"] = \"SampleStrategy\"\n", + "# Location of the data\n", + "data_location = Path(config['user_data_dir'], 'data', 'binance')\n", "# Pair to analyze - Only use one pair here\n", "pair = \"BTC_USDT\"" ] @@ -49,12 +51,12 @@ "# Load data using values set above\n", "from freqtrade.data.history import load_pair_history\n", "\n", - "candles = load_pair_history(datadir=config[\"datadir\"],\n", + "candles = load_pair_history(datadir=data_location,\n", " timeframe=config[\"ticker_interval\"],\n", " pair=pair)\n", "\n", "# Confirm success\n", - "print(\"Loaded \" + str(len(candles)) + f\" rows of data for {pair} from {config['datadir']}\")\n", + "print(\"Loaded \" + str(len(candles)) + f\" rows of data for {pair} from {data_location}\")\n", "candles.head()" ] }, From 47874a452787360b610ab0f3d038de6e53cc5d53 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 12 Feb 2020 21:45:55 +0100 Subject: [PATCH 1713/3421] added logic to differentiate sell orders with double asterisk --- docs/telegram-usage.md | 2 +- freqtrade/rpc/rpc.py | 3 ++- freqtrade/rpc/telegram.py | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md index c8ded4af5..f683ae8da 100644 --- a/docs/telegram-usage.md +++ b/docs/telegram-usage.md @@ -55,7 +55,7 @@ official commands. You can ask at any moment for help with `/help`. | `/reload_conf` | | Reloads the configuration file | `/show_config` | | Shows part of the current configuration with relevant settings to operation | `/status` | | Lists all open trades -| `/status table` | | List all open trades in a table format. Pending buy orders are marked with an asterisk (*) +| `/status table` | | List all open trades in a table format. Pending buy orders are marked with an asterisk (*) Pending sell orders are marked with a double asterisk (**) | `/count` | | Displays number of trades used and available | `/profit` | | Display a summary of your profit/loss from close trades and some stats about your performance | `/forcesell ` | | Instantly sells the given trade (Ignoring `minimum_roi`). diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 07631f258..c182aad2b 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -169,7 +169,8 @@ class RPC: trades_list.append([ trade.id, trade.pair + '*' if (trade.open_order_id is not None - and trade.close_rate_requested is None) else '', + and trade.close_rate_requested is None) else '' + + '**' if (trade.close_rate_requested is not None) else '', shorten_date(arrow.get(trade.open_date).humanize(only_distance=True)), profit_str ]) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index e3d4f54e7..d4ed5b189 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -561,6 +561,8 @@ class Telegram(RPC): "*/stop:* `Stops the trader`\n" \ "*/status [table]:* `Lists all open trades`\n" \ " *table :* `will display trades in a table`\n" \ + " pending buy orders are marked with an asterisk (*)\n" + " pending sell orders are marked with a double asterisk (**)\n" \ "*/profit:* `Lists cumulative profit from all finished trades`\n" \ "*/forcesell |all:* `Instantly sells the given trade or all trades, " \ "regardless of profit`\n" \ From f6db784a859b9a70a320e2c2da12dc47afce678e Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 12 Feb 2020 21:50:33 +0100 Subject: [PATCH 1714/3421] removed default to refresh argument in get_buy_rate and get_sell_rate --- freqtrade/freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ffd951ee2..455396352 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -234,7 +234,7 @@ class FreqtradeBot: return trades_created - def get_buy_rate(self, pair: str, refresh: bool = True, tick: Dict = None) -> float: + def get_buy_rate(self, pair: str, refresh: bool, tick: Dict = None) -> float: """ Calculates bid target between current ask price and last price :return: float: Price @@ -615,7 +615,7 @@ class FreqtradeBot: return trades_closed - def get_sell_rate(self, pair: str, refresh: bool = True) -> float: + def get_sell_rate(self, pair: str, refresh: bool) -> float: """ Get sell rate - either using get-ticker bid or first bid based on orderbook The orderbook portion is only used for rpc messaging, which would otherwise fail From 2e3b8cdba758a33abef2ce5f349335ff8194aa8a Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 12 Feb 2020 21:51:58 +0100 Subject: [PATCH 1715/3421] fixed flake8 issues on /help output --- freqtrade/rpc/telegram.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index d4ed5b189..5603ab03c 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -561,8 +561,8 @@ class Telegram(RPC): "*/stop:* `Stops the trader`\n" \ "*/status [table]:* `Lists all open trades`\n" \ " *table :* `will display trades in a table`\n" \ - " pending buy orders are marked with an asterisk (*)\n" - " pending sell orders are marked with a double asterisk (**)\n" \ + " pending buy orders are marked with an asterisk (*)\n" \ + " pending sell orders are marked with a double asterisk (**)\n" \ "*/profit:* `Lists cumulative profit from all finished trades`\n" \ "*/forcesell |all:* `Instantly sells the given trade or all trades, " \ "regardless of profit`\n" \ From f09af888b153794ff135de9acedf493666124e9c Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 12 Feb 2020 21:55:38 +0100 Subject: [PATCH 1716/3421] modified get_buy/sell_rate refresh to true on notify_sell_cancel and notify_buy_cancel --- freqtrade/freqtradebot.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 455396352..158b631c1 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -566,7 +566,7 @@ class FreqtradeBot: """ Sends rpc notification when a buy cancel occured. """ - current_rate = self.get_buy_rate(trade.pair, False) + current_rate = self.get_buy_rate(trade.pair, True) msg = { 'type': RPCMessageType.BUY_CANCEL_NOTIFICATION, @@ -1062,8 +1062,7 @@ class FreqtradeBot: """ profit_rate = trade.close_rate if trade.close_rate else trade.close_rate_requested profit_trade = trade.calc_profit(rate=profit_rate) - # Use cached ticker here - it was updated seconds ago. - current_rate = self.get_sell_rate(trade.pair, False) + current_rate = self.get_sell_rate(trade.pair, True) profit_percent = trade.calc_profit_ratio(profit_rate) gain = "profit" if profit_percent > 0 else "loss" From 007cc94474c5f4bc0970f61b4716b00d8a8b8c92 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 12 Feb 2020 22:03:56 +0100 Subject: [PATCH 1717/3421] fixed tests to send refresh, since its no longer defaulted --- tests/test_freqtradebot.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index c0af1f015..5ed4d296c 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -921,7 +921,7 @@ def test_get_buy_rate(mocker, default_conf, ask, last, last_ab, expected) -> Non mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={'ask': ask, 'last': last})) - assert freqtrade.get_buy_rate('ETH/BTC') == expected + assert freqtrade.get_buy_rate('ETH/BTC', True) == expected def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: @@ -3524,7 +3524,7 @@ def test_order_book_bid_strategy1(mocker, default_conf, order_book_l2) -> None: default_conf['telegram']['enabled'] = False freqtrade = FreqtradeBot(default_conf) - assert freqtrade.get_buy_rate('ETH/BTC') == 0.043935 + assert freqtrade.get_buy_rate('ETH/BTC', True) == 0.043935 assert ticker_mock.call_count == 0 @@ -3549,7 +3549,7 @@ def test_order_book_bid_strategy2(mocker, default_conf, order_book_l2) -> None: freqtrade = FreqtradeBot(default_conf) # orderbook shall be used even if tickers would be lower. - assert freqtrade.get_buy_rate('ETH/BTC') != 0.042 + assert freqtrade.get_buy_rate('ETH/BTC', True) != 0.042 assert ticker_mock.call_count == 0 From 634bf2b15cf5078a1dba2fbd1ce0915346b30be5 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Thu, 13 Feb 2020 01:44:46 +0300 Subject: [PATCH 1718/3421] Docs: Fix checking of runmode --- docs/strategy-customization.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 688647c2b..07833da34 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -346,7 +346,7 @@ if self.dp: ``` python if self.dp: - if self.dp.runmode in ('live', 'dry_run'): + if self.dp.runmode.value in ('live', 'dry_run'): ob = self.dp.orderbook(metadata['pair'], 1) dataframe['best_bid'] = ob['bids'][0][0] dataframe['best_ask'] = ob['asks'][0][0] @@ -422,7 +422,7 @@ from freqtrade.persistence import Trade The following example queries for the current pair and trades from today, however other filters can easily be added. ``` python -if self.config['runmode'] in ('live', 'dry_run'): +if self.config['runmode'].value in ('live', 'dry_run'): trades = Trade.get_trades([Trade.pair == metadata['pair'], Trade.open_date > datetime.utcnow() - timedelta(days=1), Trade.is_open == False, @@ -434,7 +434,7 @@ if self.config['runmode'] in ('live', 'dry_run'): Get amount of stake_currency currently invested in Trades: ``` python -if self.config['runmode'] in ('live', 'dry_run'): +if self.config['runmode'].value in ('live', 'dry_run'): total_stakes = Trade.total_open_trades_stakes() ``` @@ -442,7 +442,7 @@ Retrieve performance per pair. Returns a List of dicts per pair. ``` python -if self.config['runmode'] in ('live', 'dry_run'): +if self.config['runmode'].value in ('live', 'dry_run'): performance = Trade.get_overall_performance() ``` @@ -487,7 +487,7 @@ from datetime import timedelta, datetime, timezone # -------- # Within populate indicators (or populate_buy): -if self.config['runmode'] in ('live', 'dry_run'): +if self.config['runmode'].value in ('live', 'dry_run'): # fetch closed trades for the last 2 days trades = Trade.get_trades([Trade.pair == metadata['pair'], Trade.open_date > datetime.utcnow() - timedelta(days=2), From b2328cdf4fdf45c1e2f3842ec08f855fa04f1552 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Thu, 13 Feb 2020 07:07:35 +0300 Subject: [PATCH 1719/3421] Do not subtract risk_free_ratio twice --- freqtrade/optimize/hyperopt_loss_sortino_daily.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index c02f88434..d869a4e4e 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -53,7 +53,7 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): sum_daily['downside_returns'] = 0 sum_daily.loc[total_profit < 0, 'downside_returns'] = sum_daily['profit_percent_after_slippage'] - total_downside = sum_daily['downside_returns'] - risk_free_rate + total_downside = sum_daily['downside_returns'] down_stdev = total_downside.std() if (down_stdev != 0.): From 81f849811fdcf4a2273f56ba2d7851aec66990a6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 13 Feb 2020 06:30:59 +0100 Subject: [PATCH 1720/3421] Initcap Freqtrade --- docs/strategy_analysis_example.md | 2 +- freqtrade/templates/strategy_analysis_example.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index 93e84122b..f3f9b46c3 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -1,6 +1,6 @@ # Strategy analysis example -Debugging a strategy can be time-consuming. FreqTrade offers helper functions to visualize raw data. +Debugging a strategy can be time-consuming. Freqtrade offers helper functions to visualize raw data. ## Setup diff --git a/freqtrade/templates/strategy_analysis_example.ipynb b/freqtrade/templates/strategy_analysis_example.ipynb index 91e132380..021056df2 100644 --- a/freqtrade/templates/strategy_analysis_example.ipynb +++ b/freqtrade/templates/strategy_analysis_example.ipynb @@ -6,7 +6,7 @@ "source": [ "# Strategy analysis example\n", "\n", - "Debugging a strategy can be time-consuming. FreqTrade offers helper functions to visualize raw data." + "Debugging a strategy can be time-consuming. Freqtrade offers helper functions to visualize raw data." ] }, { From 86592c3ba1c0f4b626d7d4edb471a320d120dd13 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 13 Feb 2020 06:51:52 +0100 Subject: [PATCH 1721/3421] Fix /help from telegram --- freqtrade/rpc/telegram.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 5603ab03c..abd322293 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -561,8 +561,8 @@ class Telegram(RPC): "*/stop:* `Stops the trader`\n" \ "*/status [table]:* `Lists all open trades`\n" \ " *table :* `will display trades in a table`\n" \ - " pending buy orders are marked with an asterisk (*)\n" \ - " pending sell orders are marked with a double asterisk (**)\n" \ + " `pending buy orders are marked with an asterisk (*)`\n" \ + " `pending sell orders are marked with a double asterisk (**)`\n" \ "*/profit:* `Lists cumulative profit from all finished trades`\n" \ "*/forcesell |all:* `Instantly sells the given trade or all trades, " \ "regardless of profit`\n" \ From ccc923975138e47440e5ce48fd6fb38c1f0691c1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 13 Feb 2020 07:02:12 +0100 Subject: [PATCH 1722/3421] Reduce indentation of help --- freqtrade/rpc/telegram.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index abd322293..e3958b31a 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -561,8 +561,8 @@ class Telegram(RPC): "*/stop:* `Stops the trader`\n" \ "*/status [table]:* `Lists all open trades`\n" \ " *table :* `will display trades in a table`\n" \ - " `pending buy orders are marked with an asterisk (*)`\n" \ - " `pending sell orders are marked with a double asterisk (**)`\n" \ + " `pending buy orders are marked with an asterisk (*)`\n" \ + " `pending sell orders are marked with a double asterisk (**)`\n" \ "*/profit:* `Lists cumulative profit from all finished trades`\n" \ "*/forcesell |all:* `Instantly sells the given trade or all trades, " \ "regardless of profit`\n" \ From a93bc74eff01cebaed7e1e9838a53b526178913d Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 13 Feb 2020 07:04:37 +0100 Subject: [PATCH 1723/3421] Update documentation ... --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index c0404d647..98300c5fa 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -40,7 +40,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | Parameter | Description | |------------|-------------| -| `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades). [More information below](#configuring-amount-per-trade).
      ***Datatype:*** *Positive integer or -1.* +| `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades). [More information below](#configuring-amount-per-trade).
      **Datatype:** Positive integer or -1. | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* | `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.1` and `1.0`.* From 02148a1df203d8512dc6987ce7ac4ad5111211a2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 13 Feb 2020 15:09:09 +0100 Subject: [PATCH 1724/3421] Fix datatype styling issues --- docs/configuration.md | 132 +++++++++++++++++++++--------------------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 98300c5fa..fd686834f 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -41,74 +41,74 @@ Mandatory parameters are marked as **Required**, which means that they are requi | Parameter | Description | |------------|-------------| | `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades). [More information below](#configuring-amount-per-trade).
      **Datatype:** Positive integer or -1. -| `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* -| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Positive float or `"unlimited"`.* -| `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade).
      *Defaults to `0.99` 99%).*
      ***Datatype:*** *Positive float between `0.1` and `1.0`.* -| `amend_last_stake_amount` | Use reduced last stake amount if necessary. [More information below](#configuring-amount-per-trade).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* -| `last_stake_amount_min_ratio` | Defines minimum stake amount that has to be left and executed. Applies only to the last stake amount when it's amended to a reduced value (i.e. if `amend_last_stake_amount` is set to `true`). [More information below](#configuring-amount-per-trade).
      *Defaults to `0.5`.*
      ***Datatype:*** *Float (as ratio)* -| `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      ***Datatype:*** *Positive Float as ratio.* -| `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *String* -| `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      ***Datatype:*** *String* -| `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
      *Defaults to `true`.*
      ***Datatype:*** *Boolean* -| `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in the Dry Run mode.
      *Defaults to `1000`.*
      ***Datatype:*** *Float* -| `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* -| `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Dict* -| `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Float (as ratio)* -| `trailing_stop` | Enables trailing stoploss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Boolean* -| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Float* -| `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `0.0` (no offset).*
      ***Datatype:*** *Float* -| `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* -| `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Integer* -| `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Integer* +| `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** String +| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Positive float or `"unlimited"`. +| `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade).
      *Defaults to `0.99` 99%).*
      **Datatype:** Positive float between `0.1` and `1.0`. +| `amend_last_stake_amount` | Use reduced last stake amount if necessary. [More information below](#configuring-amount-per-trade).
      *Defaults to `false`.*
      **Datatype:** Boolean +| `last_stake_amount_min_ratio` | Defines minimum stake amount that has to be left and executed. Applies only to the last stake amount when it's amended to a reduced value (i.e. if `amend_last_stake_amount` is set to `true`). [More information below](#configuring-amount-per-trade).
      *Defaults to `0.5`.*
      **Datatype:** Float (as ratio) +| `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      **Datatype:** Positive Float as ratio. +| `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** String +| `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      **Datatype:** String +| `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
      *Defaults to `true`.*
      **Datatype:** Boolean +| `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in the Dry Run mode.
      *Defaults to `1000`.*
      **Datatype:** Float +| `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      **Datatype:** Boolean +| `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Dict +| `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Float (as ratio) +| `trailing_stop` | Enables trailing stoploss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Boolean +| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Float +| `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `0.0` (no offset).*
      **Datatype:** Float +| `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      **Datatype:** Boolean +| `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Integer +| `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Integer | `bid_strategy.ask_last_balance` | **Required.** Set the bidding price. More information [below](#buy-price-without-orderbook). -| `bid_strategy.use_order_book` | Enable buying using the rates in [Order Book Bids](#buy-price-with-orderbook-enabled).
      ***Datatype:*** *Boolean* -| `bid_strategy.order_book_top` | Bot will use the top N rate in Order Book Bids to buy. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in [Order Book Bids](#buy-price-with-orderbook-enabled).
      *Defaults to `1`.*
      ***Datatype:*** *Positive Integer* -| `bid_strategy. check_depth_of_market.enabled` | Do not buy if the difference of buy orders and sell orders is met in Order Book. [Check market depth](#check-depth-of-market).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* -| `bid_strategy. check_depth_of_market.bids_to_ask_delta` | The difference ratio of buy orders and sell orders found in Order Book. A value below 1 means sell order size is greater, while value greater than 1 means buy order size is higher. [Check market depth](#check-depth-of-market)
      *Defaults to `0`.*
      ***Datatype:*** *Float (as ratio)* -| `ask_strategy.use_order_book` | Enable selling of open trades using [Order Book Asks](#sell-price-with-orderbook-enabled).
      ***Datatype:*** *Boolean* -| `ask_strategy.order_book_min` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.*
      ***Datatype:*** *Positive Integer* -| `ask_strategy.order_book_max` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.*
      ***Datatype:*** *Positive Integer* -| `ask_strategy.use_sell_signal` | Use sell signals produced by the strategy in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `true`.*
      ***Datatype:*** *Boolean* -| `ask_strategy.sell_profit_only` | Wait until the bot makes a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* -| `ask_strategy.ignore_roi_if_buy_signal` | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* -| `order_types` | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Dict* -| `order_time_in_force` | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy).
      ***Datatype:*** *Dict* -| `exchange.name` | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename).
      ***Datatype:*** *String* -| `exchange.sandbox` | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details.
      ***Datatype:*** *Boolean* -| `exchange.key` | API key to use for the exchange. Only required when you are in production mode.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* -| `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* -| `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* -| `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)).
      ***Datatype:*** *List* -| `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)).
      ***Datatype:*** *List* -| `exchange.ccxt_config` | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
      ***Datatype:*** *Dict* -| `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
      ***Datatype:*** *Dict* -| `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded.
      *Defaults to `60` minutes.*
      ***Datatype:*** *Positive Integer* +| `bid_strategy.use_order_book` | Enable buying using the rates in [Order Book Bids](#buy-price-with-orderbook-enabled).
      **Datatype:** Boolean +| `bid_strategy.order_book_top` | Bot will use the top N rate in Order Book Bids to buy. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in [Order Book Bids](#buy-price-with-orderbook-enabled).
      *Defaults to `1`.*
      **Datatype:** Positive Integer +| `bid_strategy. check_depth_of_market.enabled` | Do not buy if the difference of buy orders and sell orders is met in Order Book. [Check market depth](#check-depth-of-market).
      *Defaults to `false`.*
      **Datatype:** Boolean +| `bid_strategy. check_depth_of_market.bids_to_ask_delta` | The difference ratio of buy orders and sell orders found in Order Book. A value below 1 means sell order size is greater, while value greater than 1 means buy order size is higher. [Check market depth](#check-depth-of-market)
      *Defaults to `0`.*
      **Datatype:** Float (as ratio) +| `ask_strategy.use_order_book` | Enable selling of open trades using [Order Book Asks](#sell-price-with-orderbook-enabled).
      **Datatype:** Boolean +| `ask_strategy.order_book_min` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.*
      **Datatype:** Positive Integer +| `ask_strategy.order_book_max` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.*
      **Datatype:** Positive Integer +| `ask_strategy.use_sell_signal` | Use sell signals produced by the strategy in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `true`.*
      **Datatype:** Boolean +| `ask_strategy.sell_profit_only` | Wait until the bot makes a positive profit before taking a sell decision. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      **Datatype:** Boolean +| `ask_strategy.ignore_roi_if_buy_signal` | Do not sell if the buy signal is still active. This setting takes preference over `minimal_roi` and `use_sell_signal`. [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      **Datatype:** Boolean +| `order_types` | Configure order-types depending on the action (`"buy"`, `"sell"`, `"stoploss"`, `"stoploss_on_exchange"`). [More information below](#understand-order_types). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Dict +| `order_time_in_force` | Configure time in force for buy and sell orders. [More information below](#understand-order_time_in_force). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Dict +| `exchange.name` | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename).
      **Datatype:** String +| `exchange.sandbox` | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details.
      **Datatype:** Boolean +| `exchange.key` | API key to use for the exchange. Only required when you are in production mode.
      **Keep it in secret, do not disclose publicly.**
      **Datatype:** String +| `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode.
      **Keep it in secret, do not disclose publicly.**
      **Datatype:** String +| `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests.
      **Keep it in secret, do not disclose publicly.**
      **Datatype:** String +| `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)).
      **Datatype:** List +| `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)).
      **Datatype:** List +| `exchange.ccxt_config` | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
      **Datatype:** Dict +| `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
      **Datatype:** Dict +| `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded.
      *Defaults to `60` minutes.*
      **Datatype:** Positive Integer | `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation. -| `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
      *Defaults to `true`.*
      ***Datatype:*** *Boolean* -| `pairlists` | Define one or more pairlists to be used. [More information below](#dynamic-pairlists).
      *Defaults to `StaticPairList`.*
      ***Datatype:*** *List of Dicts* -| `telegram.enabled` | Enable the usage of Telegram.
      ***Datatype:*** *Boolean* -| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* -| `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* -| `webhook.enabled` | Enable usage of Webhook notifications
      ***Datatype:*** *Boolean* -| `webhook.url` | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* -| `webhook.webhookbuy` | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* -| `webhook.webhooksell` | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* -| `webhook.webhookstatus` | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      ***Datatype:*** *String* -| `api_server.enabled` | Enable usage of API Server. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *Boolean* -| `api_server.listen_ip_address` | Bind IP address. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *IPv4* -| `api_server.listen_port` | Bind Port. See the [API Server documentation](rest-api.md) for more details.
      ***Datatype:*** *Integer between 1024 and 65535* -| `api_server.username` | Username for API server. See the [API Server documentation](rest-api.md) for more details.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* -| `api_server.password` | Password for API server. See the [API Server documentation](rest-api.md) for more details.
      **Keep it in secret, do not disclose publicly.**
      ***Datatype:*** *String* -| `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite:///tradesv3.dryrun.sqlite` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances.
      ***Datatype:*** *String, SQLAlchemy connect string* -| `initial_state` | Defines the initial application state. More information below.
      *Defaults to `stopped`.*
      ***Datatype:*** *Enum, either `stopped` or `running`* -| `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below.
      ***Datatype:*** *Boolean* -| `strategy` | **Required** Defines Strategy class to use. Recommended to be set via `--strategy NAME`.
      ***Datatype:*** *ClassName* -| `strategy_path` | Adds an additional strategy lookup path (must be a directory).
      ***Datatype:*** *String* -| `internals.process_throttle_secs` | Set the process throttle. Value in second.
      *Defaults to `5` seconds.*
      ***Datatype:*** *Positive Integer* -| `internals.heartbeat_interval` | Print heartbeat message every N seconds. Set to 0 to disable heartbeat messages.
      *Defaults to `60` seconds.*
      ***Datatype:*** *Positive Integer or 0* -| `internals.sd_notify` | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details.
      ***Datatype:*** *Boolean* -| `logfile` | Specifies logfile name. Uses a rolling strategy for log file rotation for 10 files with the 1MB limit per file.
      ***Datatype:*** *String* -| `user_data_dir` | Directory containing user data.
      *Defaults to `./user_data/`*.
      ***Datatype:*** *String* +| `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
      *Defaults to `true`.*
      **Datatype:** Boolean +| `pairlists` | Define one or more pairlists to be used. [More information below](#dynamic-pairlists).
      *Defaults to `StaticPairList`.*
      **Datatype:** List of Dicts +| `telegram.enabled` | Enable the usage of Telegram.
      **Datatype:** Boolean +| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`.
      **Keep it in secret, do not disclose publicly.**
      **Datatype:** String +| `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`.
      **Keep it in secret, do not disclose publicly.**
      **Datatype:** String +| `webhook.enabled` | Enable usage of Webhook notifications
      **Datatype:** Boolean +| `webhook.url` | URL for the webhook. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      **Datatype:** String +| `webhook.webhookbuy` | Payload to send on buy. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      **Datatype:** String +| `webhook.webhooksell` | Payload to send on sell. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      **Datatype:** String +| `webhook.webhookstatus` | Payload to send on status calls. Only required if `webhook.enabled` is `true`. See the [webhook documentation](webhook-config.md) for more details.
      **Datatype:** String +| `api_server.enabled` | Enable usage of API Server. See the [API Server documentation](rest-api.md) for more details.
      **Datatype:** Boolean +| `api_server.listen_ip_address` | Bind IP address. See the [API Server documentation](rest-api.md) for more details.
      **Datatype:** IPv4 +| `api_server.listen_port` | Bind Port. See the [API Server documentation](rest-api.md) for more details.
      **Datatype:** Integer between 1024 and 65535 +| `api_server.username` | Username for API server. See the [API Server documentation](rest-api.md) for more details.
      **Keep it in secret, do not disclose publicly.**
      **Datatype:** String +| `api_server.password` | Password for API server. See the [API Server documentation](rest-api.md) for more details.
      **Keep it in secret, do not disclose publicly.**
      **Datatype:** String +| `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite:///tradesv3.dryrun.sqlite` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances.
      **Datatype:** String, SQLAlchemy connect string +| `initial_state` | Defines the initial application state. More information below.
      *Defaults to `stopped`.*
      **Datatype:** Enum, either `stopped` or `running` +| `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below.
      **Datatype:** Boolean +| `strategy` | **Required** Defines Strategy class to use. Recommended to be set via `--strategy NAME`.
      **Datatype:** ClassName +| `strategy_path` | Adds an additional strategy lookup path (must be a directory).
      **Datatype:** String +| `internals.process_throttle_secs` | Set the process throttle. Value in second.
      *Defaults to `5` seconds.*
      **Datatype:** Positive Intege +| `internals.heartbeat_interval` | Print heartbeat message every N seconds. Set to 0 to disable heartbeat messages.
      *Defaults to `60` seconds.*
      **Datatype:** Positive Integer or 0 +| `internals.sd_notify` | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details.
      **Datatype:** Boolean +| `logfile` | Specifies logfile name. Uses a rolling strategy for log file rotation for 10 files with the 1MB limit per file.
      **Datatype:** String +| `user_data_dir` | Directory containing user data.
      *Defaults to `./user_data/`*.
      **Datatype:** String ### Parameters in the strategy From a0a14a107820df972d1e02b42267093f58748f1e Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 14 Feb 2020 01:08:17 +0300 Subject: [PATCH 1725/3421] freqtrade/templates/subtemplates/exchange_bittrex.j2 --- freqtrade/templates/subtemplates/exchange_bittrex.j2 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/freqtrade/templates/subtemplates/exchange_bittrex.j2 b/freqtrade/templates/subtemplates/exchange_bittrex.j2 index 7a7e8e291..7b27318ca 100644 --- a/freqtrade/templates/subtemplates/exchange_bittrex.j2 +++ b/freqtrade/templates/subtemplates/exchange_bittrex.j2 @@ -1,3 +1,10 @@ +"order_types": { + "buy": "limit", + "sell": "limit", + "emergencysell": "limit", + "stoploss": "limit", + "stoploss_on_exchange": false +}, "exchange": { "name": "{{ exchange_name | lower }}", "key": "{{ exchange_key }}", From 749463e4b7e9f9b1c475725a54b71d181b3a7a76 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 14 Feb 2020 03:05:07 +0300 Subject: [PATCH 1726/3421] Adjust message in main.py --- freqtrade/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/main.py b/freqtrade/main.py index a75eeebed..08bdc5e32 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -38,8 +38,8 @@ def main(sysargv: List[str] = None) -> None: # No subcommand was issued. raise OperationalException( "Usage of Freqtrade requires a subcommand to be specified.\n" - "To have the previous behavior (bot executing trades in live/dry-run modes, " - "depending on the value of the `dry_run` setting in the config), run freqtrade " + "To have the bot executing trades in live/dry-run modes, " + "depending on the value of the `dry_run` setting in the config, run Freqtrade " "as `freqtrade trade [options...]`.\n" "To see the full list of options available, please use " "`freqtrade --help` or `freqtrade --help`." From 36ef5c6bdff2562e158bbd659db7bc6c67c00560 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 14 Feb 2020 04:05:17 +0300 Subject: [PATCH 1727/3421] Get rid of delete_trades method in Freqtradebot --- freqtrade/freqtradebot.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 158b631c1..bf2697efa 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -860,11 +860,6 @@ class FreqtradeBot: order_type = self.strategy.order_types['sell'] self._notify_sell_cancel(trade, order_type) - def delete_trade(self, trade: Trade) -> None: - """Delete trade in database""" - Trade.session.delete(trade) - Trade.session.flush() - def handle_timedout_limit_buy(self, trade: Trade, order: Dict) -> bool: """ Buy timeout - cancel order @@ -882,7 +877,8 @@ class FreqtradeBot: if corder.get('remaining', order['remaining']) == order['amount']: # if trade is not partially completed, just delete the trade - self.delete_trade(trade) + Trade.session.delete(trade) + Trade.session.flush() return True # if trade is partially complete, edit the stake details for the trade From 20c21b42d50ce08fe4157c151c340a6be771b7f2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 14 Feb 2020 06:23:03 +0300 Subject: [PATCH 1728/3421] Move rpc send to be after db session add/flash --- freqtrade/freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 158b631c1..1284b2e9b 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -527,8 +527,6 @@ class FreqtradeBot: ticker_interval=timeframe_to_minutes(self.config['ticker_interval']) ) - self._notify_buy(trade, order_type) - # Update fees if order is closed if order_status == 'closed': self.update_trade_state(trade, order) @@ -539,6 +537,8 @@ class FreqtradeBot: # Updating wallets self.wallets.update() + self._notify_buy(trade, order_type) + return True def _notify_buy(self, trade: Trade, order_type: str) -> None: From 9cbf8c5f008520b99016a7a63fe299b4b0dcb821 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 14 Feb 2020 21:15:36 +0300 Subject: [PATCH 1729/3421] Add status for listed strategies --- freqtrade/commands/list_commands.py | 11 +++++++++-- freqtrade/resolvers/iresolver.py | 20 +++++++++++++++----- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index f2b6bf995..b6ff682e6 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -43,10 +43,17 @@ def start_list_strategies(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) directory = Path(config.get('strategy_path', config['user_data_dir'] / USERPATH_STRATEGIES)) - strategies = StrategyResolver.search_all_objects(directory) + strategies = StrategyResolver.search_all_objects(directory, not args['print_one_column']) # Sort alphabetically strategies = sorted(strategies, key=lambda x: x['name']) - strats_to_print = [{'name': s['name'], 'location': s['location'].name} for s in strategies] + names = [s['name'] for s in strategies] + strats_to_print = [{ + 'name': s['name'] if s['name'] else "--", + 'location': s['location'].name, + 'status': ("LOAD FAILED" if s['class'] is None + else "OK" if names.count(s['name']) == 1 + else "DUPLICATED NAME") + } for s in strategies] if args['print_one_column']: print('\n'.join([s['name'] for s in strategies])) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index a75c45933..8b5aa1dff 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -41,11 +41,15 @@ class IResolver: @classmethod def _get_valid_object(cls, module_path: Path, - object_name: Optional[str]) -> Generator[Any, None, None]: + object_name: Optional[str], + enum_failed: bool = False) -> Union[Generator[Any, None, None], + Tuple[None]]: """ Generator returning objects with matching object_type and object_name in the path given. :param module_path: absolute path to the module :param object_name: Class name of the object + :param enum_failed: If True, will return None for modules which fail. + Otherwise, failing modules are skipped. :return: generator containing matching objects """ @@ -58,6 +62,8 @@ class IResolver: except (ModuleNotFoundError, SyntaxError) as err: # Catch errors in case a specific module is not installed logger.warning(f"Could not import {module_path} due to '{err}'") + if enum_failed: + return (None, ) valid_objects_gen = ( obj for name, obj in inspect.getmembers(module, inspect.isclass) @@ -136,10 +142,13 @@ class IResolver: ) @classmethod - def search_all_objects(cls, directory: Path) -> List[Dict[str, Any]]: + def search_all_objects(cls, directory: Path, + enum_failed: bool) -> List[Dict[str, Any]]: """ Searches a directory for valid objects :param directory: Path to search + :param enum_failed: If True, will return None for modules which fail. + Otherwise, failing modules are skipped. :return: List of dicts containing 'name', 'class' and 'location' entires """ logger.debug(f"Searching for {cls.object_type.__name__} '{directory}'") @@ -151,10 +160,11 @@ class IResolver: continue module_path = entry.resolve() logger.debug(f"Path {module_path}") - for obj in cls._get_valid_object(module_path, object_name=None): + for obj in cls._get_valid_object(module_path, object_name=None, + enum_failed=enum_failed): objects.append( - {'name': obj.__name__, - 'class': obj, + {'name': obj.__name__ if obj is not None else '', + 'class': obj if obj is not None else None, 'location': entry, }) return objects From a2d7f8a70dc8e907c83ab4e958783708174ab07f Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 14 Feb 2020 21:24:30 +0300 Subject: [PATCH 1730/3421] Split tabular printing into sep. helper function --- freqtrade/commands/list_commands.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index b6ff682e6..782cd074e 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -3,7 +3,7 @@ import logging import sys from collections import OrderedDict from pathlib import Path -from typing import Any, Dict +from typing import Any, Dict, List import rapidjson from tabulate import tabulate @@ -36,6 +36,19 @@ def start_list_exchanges(args: Dict[str, Any]) -> None: print(f"Exchanges available for Freqtrade: {', '.join(exchanges)}") +def _print_objs_tabular(objs: List) -> None: + names = [s['name'] for s in objs] + strats_to_print = [{ + 'name': s['name'] if s['name'] else "--", + 'location': s['location'].name, + 'status': ("LOAD FAILED" if s['class'] is None + else "OK" if names.count(s['name']) == 1 + else "DUPLICATED NAME") + } for s in objs] + + print(tabulate(strats_to_print, headers='keys', tablefmt='pipe')) + + def start_list_strategies(args: Dict[str, Any]) -> None: """ Print files with Strategy custom classes available in the directory @@ -46,19 +59,11 @@ def start_list_strategies(args: Dict[str, Any]) -> None: strategies = StrategyResolver.search_all_objects(directory, not args['print_one_column']) # Sort alphabetically strategies = sorted(strategies, key=lambda x: x['name']) - names = [s['name'] for s in strategies] - strats_to_print = [{ - 'name': s['name'] if s['name'] else "--", - 'location': s['location'].name, - 'status': ("LOAD FAILED" if s['class'] is None - else "OK" if names.count(s['name']) == 1 - else "DUPLICATED NAME") - } for s in strategies] if args['print_one_column']: print('\n'.join([s['name'] for s in strategies])) else: - print(tabulate(strats_to_print, headers='keys', tablefmt='pipe')) + _print_objs_tabular(strategies) def start_list_hyperopts(args: Dict[str, Any]) -> None: From 9dafc2f3c84819cf95bda82ddb0cc8ec380ede3d Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 11 Feb 2020 20:38:29 +0100 Subject: [PATCH 1731/3421] Load config.json from user_data first --- freqtrade/commands/arguments.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index fe6f49039..d37870ea0 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -6,8 +6,8 @@ from functools import partial from pathlib import Path from typing import Any, Dict, List, Optional -from freqtrade import constants from freqtrade.commands.cli_options import AVAILABLE_CLI_OPTIONS +from freqtrade.constants import DEFAULT_CONFIG ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir", "user_data_dir"] @@ -107,10 +107,19 @@ class Arguments: # Workaround issue in argparse with action='append' and default value # (see https://bugs.python.org/issue16399) # Allow no-config for certain commands (like downloading / plotting) - if ('config' in parsed_arg and parsed_arg.config is None and - ((Path.cwd() / constants.DEFAULT_CONFIG).is_file() or - not ('command' in parsed_arg and parsed_arg.command in NO_CONF_REQURIED))): - parsed_arg.config = [constants.DEFAULT_CONFIG] + if ('config' in parsed_arg and parsed_arg.config is None): + conf_required = ('command' in parsed_arg and parsed_arg.command in NO_CONF_REQURIED) + + if 'user_data_dir' in parsed_arg and parsed_arg.user_data_dir is not None: + # Try loading from "user_data/config.json" + cfgfile = Path(parsed_arg.user_data_dir) / DEFAULT_CONFIG + if cfgfile.is_file() or not conf_required: + parsed_arg.config = [str(cfgfile)] + else: + # Else use "config.json". + cfgfile = Path.cwd() / DEFAULT_CONFIG + if cfgfile.is_file() or not conf_required: + parsed_arg.config = [DEFAULT_CONFIG] return parsed_arg From be4a9b5f4b0f9c4026ed043876bbcfb516a83a0d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Feb 2020 19:37:20 +0100 Subject: [PATCH 1732/3421] Lowercase freqtrade --- CONTRIBUTING.md | 4 ++-- docs/configuration.md | 2 +- docs/developer.md | 4 ++-- docs/hyperopt.md | 2 +- docs/rest-api.md | 2 +- freqtrade/commands/cli_options.py | 3 ++- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1c83437f6..90594866a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -109,11 +109,11 @@ Exceptions: Contributors may be given commit privileges. Preference will be given to those with: -1. Past contributions to FreqTrade and other related open-source projects. Contributions to FreqTrade include both code (both accepted and pending) and friendly participation in the issue tracker and Pull request reviews. Quantity and quality are considered. +1. Past contributions to Freqtrade and other related open-source projects. Contributions to Freqtrade include both code (both accepted and pending) and friendly participation in the issue tracker and Pull request reviews. Quantity and quality are considered. 1. A coding style that the other core committers find simple, minimal, and clean. 1. Access to resources for cross-platform development and testing. 1. Time to devote to the project regularly. -Being a Committer does not grant write permission on `develop` or `master` for security reasons (Users trust FreqTrade with their Exchange API keys). +Being a Committer does not grant write permission on `develop` or `master` for security reasons (Users trust Freqtrade with their Exchange API keys). After being Committer for some time, a Committer may be named Core Committer and given full repository access. diff --git a/docs/configuration.md b/docs/configuration.md index 211f7a04c..0f0279eb9 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -672,7 +672,7 @@ freqtrade ## Embedding Strategies -FreqTrade provides you with with an easy way to embed the strategy into your configuration file. +Freqtrade provides you with with an easy way to embed the strategy into your configuration file. This is done by utilizing BASE64 encoding and providing this string at the strategy configuration field, in your chosen config file. diff --git a/docs/developer.md b/docs/developer.md index c679b8a49..b128ffd2b 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -1,6 +1,6 @@ # Development Help -This page is intended for developers of FreqTrade, people who want to contribute to the FreqTrade codebase or documentation, or people who want to understand the source code of the application they're running. +This page is intended for developers of Freqtrade, people who want to contribute to the Freqtrade codebase or documentation, or people who want to understand the source code of the application they're running. All contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas are welcome. We [track issues](https://github.com/freqtrade/freqtrade/issues) on [GitHub](https://github.com) and also have a dev channel in [slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) where you can ask questions. @@ -153,7 +153,7 @@ In VolumePairList, this implements different methods of sorting, does early vali ## Implement a new Exchange (WIP) !!! Note - This section is a Work in Progress and is not a complete guide on how to test a new exchange with FreqTrade. + This section is a Work in Progress and is not a complete guide on how to test a new exchange with Freqtrade. Most exchanges supported by CCXT should work out of the box. diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 3e10f66da..401811a1b 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -182,7 +182,7 @@ add it to the `populate_indicators()` method in your custom hyperopt file. Each hyperparameter tuning requires a target. This is usually defined as a loss function (sometimes also called objective function), which should decrease for more desirable results, and increase for bad results. -By default, FreqTrade uses a loss function, which has been with freqtrade since the beginning and optimizes mostly for short trade duration and avoiding losses. +By default, Freqtrade uses a loss function, which has been with freqtrade since the beginning and optimizes mostly for short trade duration and avoiding losses. A different loss function can be specified by using the `--hyperopt-loss ` argument. This class should be in its own file within the `user_data/hyperopts/` directory. diff --git a/docs/rest-api.md b/docs/rest-api.md index 187a71c97..b68364f39 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -74,7 +74,7 @@ docker run -d \ ## Consuming the API You can consume the API by using the script `scripts/rest_client.py`. -The client script only requires the `requests` module, so FreqTrade does not need to be installed on the system. +The client script only requires the `requests` module, so Freqtrade does not need to be installed on the system. ``` bash python3 scripts/rest_client.py [optional parameters] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 1776955b1..cdc8cb8f1 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -59,7 +59,8 @@ AVAILABLE_CLI_OPTIONS = { ), "config": Arg( '-c', '--config', - help=f'Specify configuration file (default: `{constants.DEFAULT_CONFIG}`). ' + help=f'Specify configuration file (default: `userdir/{constants.DEFAULT_CONFIG}` ' + f'or `config.json` whichever exists). ' f'Multiple --config options may be used. ' f'Can be set to `-` to read config from stdin.', action='append', From 1bc26fd07a11bf064098e544e4a42063d3294b90 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 14 Feb 2020 21:46:22 +0300 Subject: [PATCH 1733/3421] Add printing statuses for list-hyperopts --- freqtrade/commands/list_commands.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index 782cd074e..a2ac388b0 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -38,7 +38,7 @@ def start_list_exchanges(args: Dict[str, Any]) -> None: def _print_objs_tabular(objs: List) -> None: names = [s['name'] for s in objs] - strats_to_print = [{ + objss_to_print = [{ 'name': s['name'] if s['name'] else "--", 'location': s['location'].name, 'status': ("LOAD FAILED" if s['class'] is None @@ -46,7 +46,7 @@ def _print_objs_tabular(objs: List) -> None: else "DUPLICATED NAME") } for s in objs] - print(tabulate(strats_to_print, headers='keys', tablefmt='pipe')) + print(tabulate(objss_to_print, headers='keys', tablefmt='pipe')) def start_list_strategies(args: Dict[str, Any]) -> None: @@ -56,14 +56,14 @@ def start_list_strategies(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) directory = Path(config.get('strategy_path', config['user_data_dir'] / USERPATH_STRATEGIES)) - strategies = StrategyResolver.search_all_objects(directory, not args['print_one_column']) + strategy_objs = StrategyResolver.search_all_objects(directory, not args['print_one_column']) # Sort alphabetically - strategies = sorted(strategies, key=lambda x: x['name']) + strategy_objs = sorted(strategy_objs, key=lambda x: x['name']) if args['print_one_column']: - print('\n'.join([s['name'] for s in strategies])) + print('\n'.join([s['name'] for s in strategy_objs])) else: - _print_objs_tabular(strategies) + _print_objs_tabular(strategy_objs) def start_list_hyperopts(args: Dict[str, Any]) -> None: @@ -75,15 +75,14 @@ def start_list_hyperopts(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) directory = Path(config.get('hyperopt_path', config['user_data_dir'] / USERPATH_HYPEROPTS)) - hyperopts = HyperOptResolver.search_all_objects(directory) + hyperopt_objs = HyperOptResolver.search_all_objects(directory, not args['print_one_column']) # Sort alphabetically - hyperopts = sorted(hyperopts, key=lambda x: x['name']) - hyperopts_to_print = [{'name': s['name'], 'location': s['location'].name} for s in hyperopts] + hyperopt_objs = sorted(hyperopt_objs, key=lambda x: x['name']) if args['print_one_column']: - print('\n'.join([s['name'] for s in hyperopts])) + print('\n'.join([s['name'] for s in hyperopt_objs])) else: - print(tabulate(hyperopts_to_print, headers='keys', tablefmt='pipe')) + _print_objs_tabular(hyperopt_objs) def start_list_timeframes(args: Dict[str, Any]) -> None: From c92e1d97d65b796a061d19081f701cac6aa59ce3 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 14 Feb 2020 21:52:02 +0300 Subject: [PATCH 1734/3421] Attempt to make mypy happy --- freqtrade/resolvers/iresolver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 8b5aa1dff..d674daa9a 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -89,7 +89,7 @@ class IResolver: continue module_path = entry.resolve() - obj = next(cls._get_valid_object(module_path, object_name), None) + obj = next(cls._get_valid_object(module_path, object_name), None) # noqa if obj: return (obj, module_path) From 5efbdd25a7776c55eb8fbfb43a0e4b09213b4c41 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Feb 2020 20:04:05 +0100 Subject: [PATCH 1735/3421] Properly default to user_data/config.json if it exists --- docs/bot-usage.md | 52 +++++++++++++++++++++------------ freqtrade/commands/arguments.py | 10 +++++-- tests/test_arguments.py | 24 +++++++++++++-- tests/test_main.py | 5 +++- 4 files changed, 66 insertions(+), 25 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 56e6008a1..dbc111d44 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -58,9 +58,10 @@ Common arguments: details. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: `config.json`). - Multiple --config options may be used. Can be set to - `-` to read config from stdin. + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. -d PATH, --datadir PATH Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH @@ -71,6 +72,7 @@ Strategy arguments: Specify strategy class name which will be used by the bot. --strategy-path PATH Specify additional strategy lookup path. +. ``` @@ -242,12 +244,15 @@ optional arguments: Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified. + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: `config.json`). - Multiple --config options may be used. Can be set to - `-` to read config from stdin. + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. -d PATH, --datadir PATH Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH @@ -280,7 +285,7 @@ usage: freqtrade hyperopt [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--stake-amount STAKE_AMOUNT] [--fee FLOAT] [--hyperopt NAME] [--hyperopt-path PATH] [--eps] [-e INT] - [--spaces {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...]] + [--spaces {all,buy,sell,roi,stoploss,trailing,default} [{all,buy,sell,roi,stoploss,trailing,default} ...]] [--dmmp] [--print-all] [--no-color] [--print-json] [-j JOBS] [--random-state INT] [--min-trades INT] [--continue] [--hyperopt-loss NAME] @@ -308,9 +313,9 @@ optional arguments: Allow buying the same pair multiple times (position stacking). -e INT, --epochs INT Specify number of epochs (default: 100). - --spaces {all,buy,sell,roi,stoploss} [{all,buy,sell,roi,stoploss} ...] + --spaces {all,buy,sell,roi,stoploss,trailing,default} [{all,buy,sell,roi,stoploss,trailing,default} ...] Specify which parameters to hyperopt. Space-separated - list. Default: `all`. + list. --dmmp, --disable-max-market-positions Disable applying `max_open_trades` during backtest (same as setting `max_open_trades` to a very high @@ -338,16 +343,20 @@ optional arguments: target for optimization is different. Built-in Hyperopt-loss-functions are: DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss, - SharpeHyperOptLossDaily (default: `DefaultHyperOptLoss`). + SharpeHyperOptLossDaily.(default: + `DefaultHyperOptLoss`). Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified. + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: `config.json`). - Multiple --config options may be used. Can be set to - `-` to read config from stdin. + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. -d PATH, --datadir PATH Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH @@ -358,6 +367,7 @@ Strategy arguments: Specify strategy class name which will be used by the bot. --strategy-path PATH Specify additional strategy lookup path. + ``` ## Edge commands @@ -394,12 +404,15 @@ optional arguments: Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified. + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: `config.json`). - Multiple --config options may be used. Can be set to - `-` to read config from stdin. + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. -d PATH, --datadir PATH Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH @@ -410,6 +423,7 @@ Strategy arguments: Specify strategy class name which will be used by the bot. --strategy-path PATH Specify additional strategy lookup path. + ``` To understand edge and how to read the results, please read the [edge documentation](edge.md). diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index d37870ea0..580c9e298 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -111,10 +111,14 @@ class Arguments: conf_required = ('command' in parsed_arg and parsed_arg.command in NO_CONF_REQURIED) if 'user_data_dir' in parsed_arg and parsed_arg.user_data_dir is not None: + user_dir = parsed_arg.user_data_dir + else: + # Default case + user_dir = 'user_data' # Try loading from "user_data/config.json" - cfgfile = Path(parsed_arg.user_data_dir) / DEFAULT_CONFIG - if cfgfile.is_file() or not conf_required: - parsed_arg.config = [str(cfgfile)] + cfgfile = Path(user_dir) / DEFAULT_CONFIG + if cfgfile.is_file(): + parsed_arg.config = [str(cfgfile)] else: # Else use "config.json". cfgfile = Path.cwd() / DEFAULT_CONFIG diff --git a/tests/test_arguments.py b/tests/test_arguments.py index 60da0082a..61bca04a4 100644 --- a/tests/test_arguments.py +++ b/tests/test_arguments.py @@ -18,7 +18,8 @@ def test_parse_args_none() -> None: assert isinstance(arguments.parser, argparse.ArgumentParser) -def test_parse_args_defaults() -> None: +def test_parse_args_defaults(mocker) -> None: + mocker.patch.object(Path, "is_file", MagicMock(side_effect=[False, True])) args = Arguments(['trade']).get_parsed_arg() assert args["config"] == ['config.json'] assert args["strategy_path"] is None @@ -26,6 +27,25 @@ def test_parse_args_defaults() -> None: assert args["verbosity"] == 0 +def test_parse_args_default_userdatadir(mocker) -> None: + mocker.patch.object(Path, "is_file", MagicMock(return_value=True)) + args = Arguments(['trade']).get_parsed_arg() + # configuration defaults to user_data if that is available. + assert args["config"] == ['user_data/config.json'] + assert args["strategy_path"] is None + assert args["datadir"] is None + assert args["verbosity"] == 0 + + +def test_parse_args_userdatadir(mocker) -> None: + mocker.patch.object(Path, "is_file", MagicMock(return_value=True)) + args = Arguments(['trade', '--user-data-dir', 'user_data']).get_parsed_arg() + # configuration defaults to user_data if that is available. + assert args["config"] == ['user_data/config.json'] + assert args["strategy_path"] is None + assert args["datadir"] is None + assert args["verbosity"] == 0 + def test_parse_args_config() -> None: args = Arguments(['trade', '-c', '/dev/null']).get_parsed_arg() assert args["config"] == ['/dev/null'] @@ -208,7 +228,7 @@ def test_config_notrequired(mocker) -> None: assert pargs["config"] is None # When file exists: - mocker.patch.object(Path, "is_file", MagicMock(return_value=True)) + mocker.patch.object(Path, "is_file", MagicMock(side_effect=[False, True])) args = [ 'download-data', ] diff --git a/tests/test_main.py b/tests/test_main.py index 1229f748a..70b784002 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -5,8 +5,9 @@ from unittest.mock import MagicMock, PropertyMock import pytest +from pathlib import Path from freqtrade.commands import Arguments -from freqtrade.exceptions import OperationalException, FreqtradeException +from freqtrade.exceptions import FreqtradeException, OperationalException from freqtrade.freqtradebot import FreqtradeBot from freqtrade.main import main from freqtrade.state import State @@ -26,6 +27,7 @@ def test_parse_args_backtesting(mocker) -> None: Test that main() can start backtesting and also ensure we can pass some specific arguments further argument parsing is done in test_arguments.py """ + mocker.patch.object(Path, "is_file", MagicMock(side_effect=[False, True])) backtesting_mock = mocker.patch('freqtrade.commands.start_backtesting') backtesting_mock.__name__ = PropertyMock("start_backtesting") # it's sys.exit(0) at the end of backtesting @@ -42,6 +44,7 @@ def test_parse_args_backtesting(mocker) -> None: def test_main_start_hyperopt(mocker) -> None: + mocker.patch.object(Path, "is_file", MagicMock(side_effect=[False, True])) hyperopt_mock = mocker.patch('freqtrade.commands.start_hyperopt', MagicMock()) hyperopt_mock.__name__ = PropertyMock("start_hyperopt") # it's sys.exit(0) at the end of hyperopt From d5a298bbb7dd3db6be8f16c7ec1376fc7c677901 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Feb 2020 20:12:26 +0100 Subject: [PATCH 1736/3421] Add sentence from suggestion --- docs/strategy_analysis_example.md | 1 + freqtrade/templates/strategy_analysis_example.ipynb | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index f3f9b46c3..53b35ca09 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -1,6 +1,7 @@ # Strategy analysis example Debugging a strategy can be time-consuming. Freqtrade offers helper functions to visualize raw data. +The following assumes you work with SampleStrategy, data for 5m timeframe from Binance and have downloaded them into the data directory in the default location. ## Setup diff --git a/freqtrade/templates/strategy_analysis_example.ipynb b/freqtrade/templates/strategy_analysis_example.ipynb index 021056df2..399235cfe 100644 --- a/freqtrade/templates/strategy_analysis_example.ipynb +++ b/freqtrade/templates/strategy_analysis_example.ipynb @@ -6,7 +6,8 @@ "source": [ "# Strategy analysis example\n", "\n", - "Debugging a strategy can be time-consuming. Freqtrade offers helper functions to visualize raw data." + "Debugging a strategy can be time-consuming. Freqtrade offers helper functions to visualize raw data.\n", + "The following assumes you work with SampleStrategy, data for 5m timeframe from Binance and have downloaded them into the data directory in the default location." ] }, { From ecca7164d91a41ee252c93c2533e6e7737d0db71 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Feb 2020 20:13:36 +0100 Subject: [PATCH 1737/3421] Fix small issue --- tests/test_arguments.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_arguments.py b/tests/test_arguments.py index 61bca04a4..22383661b 100644 --- a/tests/test_arguments.py +++ b/tests/test_arguments.py @@ -46,6 +46,7 @@ def test_parse_args_userdatadir(mocker) -> None: assert args["datadir"] is None assert args["verbosity"] == 0 + def test_parse_args_config() -> None: args = Arguments(['trade', '-c', '/dev/null']).get_parsed_arg() assert args["config"] == ['/dev/null'] From f024cc40d3808bfd75d55e75f8a8370b86cae57e Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Feb 2020 20:21:09 +0100 Subject: [PATCH 1738/3421] Fix windows test failure --- tests/test_arguments.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_arguments.py b/tests/test_arguments.py index 22383661b..0052a61d0 100644 --- a/tests/test_arguments.py +++ b/tests/test_arguments.py @@ -31,7 +31,7 @@ def test_parse_args_default_userdatadir(mocker) -> None: mocker.patch.object(Path, "is_file", MagicMock(return_value=True)) args = Arguments(['trade']).get_parsed_arg() # configuration defaults to user_data if that is available. - assert args["config"] == ['user_data/config.json'] + assert args["config"] == [str(Path('user_data/config.json'))] assert args["strategy_path"] is None assert args["datadir"] is None assert args["verbosity"] == 0 @@ -41,7 +41,7 @@ def test_parse_args_userdatadir(mocker) -> None: mocker.patch.object(Path, "is_file", MagicMock(return_value=True)) args = Arguments(['trade', '--user-data-dir', 'user_data']).get_parsed_arg() # configuration defaults to user_data if that is available. - assert args["config"] == ['user_data/config.json'] + assert args["config"] == [str(Path('user_data/config.json'))] assert args["strategy_path"] is None assert args["datadir"] is None assert args["verbosity"] == 0 From e598c769d448db0a03c7c7df5d470d3a389d8cee Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 14 Feb 2020 22:28:49 +0300 Subject: [PATCH 1739/3421] Add colorization --- freqtrade/commands/arguments.py | 4 ++-- freqtrade/commands/list_commands.py | 23 +++++++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index fe6f49039..063a152fe 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -30,9 +30,9 @@ ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + ["hyperopt", "hyperopt_path", ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"] -ARGS_LIST_STRATEGIES = ["strategy_path", "print_one_column"] +ARGS_LIST_STRATEGIES = ["strategy_path", "print_one_column", "print_colorized"] -ARGS_LIST_HYPEROPTS = ["hyperopt_path", "print_one_column"] +ARGS_LIST_HYPEROPTS = ["hyperopt_path", "print_one_column", "print_colorized"] ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"] diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index a2ac388b0..6a2ccbfcf 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -5,6 +5,8 @@ from collections import OrderedDict from pathlib import Path from typing import Any, Dict, List +from colorama import init as colorama_init +from colorama import Fore, Style import rapidjson from tabulate import tabulate @@ -36,14 +38,23 @@ def start_list_exchanges(args: Dict[str, Any]) -> None: print(f"Exchanges available for Freqtrade: {', '.join(exchanges)}") -def _print_objs_tabular(objs: List) -> None: +def _print_objs_tabular(objs: List, print_colorized: bool) -> None: + if print_colorized: + colorama_init(autoreset=True) + names = [s['name'] for s in objs] objss_to_print = [{ 'name': s['name'] if s['name'] else "--", 'location': s['location'].name, - 'status': ("LOAD FAILED" if s['class'] is None - else "OK" if names.count(s['name']) == 1 - else "DUPLICATED NAME") + 'status': (((Fore.RED if print_colorized else '') + + "LOAD FAILED" + (Style.RESET_ALL if print_colorized else '')) + if s['class'] is None + else ((Fore.GREEN if print_colorized else '') + + "OK" + (Style.RESET_ALL if print_colorized else '')) + if names.count(s['name']) == 1 + else ((Fore.YELLOW if print_colorized else '') + + "DUPLICATED NAME" + + (Style.RESET_ALL if print_colorized else ''))) } for s in objs] print(tabulate(objss_to_print, headers='keys', tablefmt='pipe')) @@ -63,7 +74,7 @@ def start_list_strategies(args: Dict[str, Any]) -> None: if args['print_one_column']: print('\n'.join([s['name'] for s in strategy_objs])) else: - _print_objs_tabular(strategy_objs) + _print_objs_tabular(strategy_objs, config.get('print_colorized', False)) def start_list_hyperopts(args: Dict[str, Any]) -> None: @@ -82,7 +93,7 @@ def start_list_hyperopts(args: Dict[str, Any]) -> None: if args['print_one_column']: print('\n'.join([s['name'] for s in hyperopt_objs])) else: - _print_objs_tabular(hyperopt_objs) + _print_objs_tabular(hyperopt_objs, config.get('print_colorized', False)) def start_list_timeframes(args: Dict[str, Any]) -> None: From 47a91c9d8ec0706add136b3b1713c586fadf4b5e Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 14 Feb 2020 22:32:46 +0300 Subject: [PATCH 1740/3421] Remove green color --- freqtrade/commands/list_commands.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index 6a2ccbfcf..67ee59375 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -49,9 +49,7 @@ def _print_objs_tabular(objs: List, print_colorized: bool) -> None: 'status': (((Fore.RED if print_colorized else '') + "LOAD FAILED" + (Style.RESET_ALL if print_colorized else '')) if s['class'] is None - else ((Fore.GREEN if print_colorized else '') + - "OK" + (Style.RESET_ALL if print_colorized else '')) - if names.count(s['name']) == 1 + else "OK" if names.count(s['name']) == 1 else ((Fore.YELLOW if print_colorized else '') + "DUPLICATED NAME" + (Style.RESET_ALL if print_colorized else ''))) From 06b84b4086d6807bb6ac861973028e799dcaea91 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 14 Feb 2020 23:13:49 +0300 Subject: [PATCH 1741/3421] Remove redundant code --- freqtrade/resolvers/iresolver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index d674daa9a..84dee85cd 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -164,7 +164,7 @@ class IResolver: enum_failed=enum_failed): objects.append( {'name': obj.__name__ if obj is not None else '', - 'class': obj if obj is not None else None, + 'class': obj, 'location': entry, }) return objects From 93f9ff1b636724ad729a88b0dc4cb35fa6612e35 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 15 Feb 2020 04:22:21 +0300 Subject: [PATCH 1742/3421] Fix existing test --- tests/strategy/test_strategy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index d3977ae44..1b4b64f89 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -32,7 +32,7 @@ def test_search_strategy(): def test_search_all_strategies(): directory = Path(__file__).parent - strategies = StrategyResolver.search_all_objects(directory) + strategies = StrategyResolver.search_all_objects(directory, enum_failed=False) assert isinstance(strategies, list) assert len(strategies) == 3 assert isinstance(strategies[0], dict) From 29d9b6a46a94ed222a97bb1e14081c1948f2cca1 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 15 Feb 2020 04:32:10 +0300 Subject: [PATCH 1743/3421] Add test for enum failed --- tests/strategy/test_strategy.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 1b4b64f89..3d3f0f424 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -30,7 +30,7 @@ def test_search_strategy(): assert s is None -def test_search_all_strategies(): +def test_search_all_strategies_no_failed(): directory = Path(__file__).parent strategies = StrategyResolver.search_all_objects(directory, enum_failed=False) assert isinstance(strategies, list) @@ -38,6 +38,15 @@ def test_search_all_strategies(): assert isinstance(strategies[0], dict) +def test_search_all_strategies_with_failed(): + directory = Path(__file__).parent + strategies = StrategyResolver.search_all_objects(directory, enum_failed=True) + assert isinstance(strategies, list) + assert len(strategies) == 4 + assert isinstance(strategies[0], dict) + assert strategies[0]['class'] is None + + def test_load_strategy(default_conf, result): default_conf.update({'strategy': 'SampleStrategy', 'strategy_path': str(Path(__file__).parents[2] / 'freqtrade/templates') From 1cf19133f47237fa42e693e96bbdc42f072740ca Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 15 Feb 2020 05:17:34 +0300 Subject: [PATCH 1744/3421] Added missing failing strategy --- tests/strategy/failing_strategy.py | 87 ++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 tests/strategy/failing_strategy.py diff --git a/tests/strategy/failing_strategy.py b/tests/strategy/failing_strategy.py new file mode 100644 index 000000000..57a8cc1ae --- /dev/null +++ b/tests/strategy/failing_strategy.py @@ -0,0 +1,87 @@ + +# --- Do not remove these libs --- +from freqtrade.strategy.interface import IStrategy +from pandas import DataFrame +# -------------------------------- + +# Add your lib to import here +import talib.abstract as ta + +import nonexiting_module # noqa + + +# This class is a sample. Feel free to customize it. +class TestStrategyLegacy(IStrategy): + """ + This is a test strategy using the legacy function headers, which will be + removed in a future update. + Please do not use this as a template, but refer to user_data/strategy/sample_strategy.py + for a uptodate version of this template. + """ + + # Minimal ROI designed for the strategy. + # This attribute will be overridden if the config file contains "minimal_roi" + minimal_roi = { + "40": 0.0, + "30": 0.01, + "20": 0.02, + "0": 0.04 + } + + # Optimal stoploss designed for the strategy + # This attribute will be overridden if the config file contains "stoploss" + stoploss = -0.10 + + # Optimal ticker interval for the strategy + ticker_interval = '5m' + + def populate_indicators(self, dataframe: DataFrame) -> DataFrame: + """ + Adds several different TA indicators to the given DataFrame + + Performance Note: For the best performance be frugal on the number of indicators + you are using. Let uncomment only the indicator you are using in your strategies + or your hyperopt configuration, otherwise you will waste your memory and CPU usage. + """ + + # Momentum Indicator + # ------------------------------------ + + # ADX + dataframe['adx'] = ta.ADX(dataframe) + + # TEMA - Triple Exponential Moving Average + dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9) + + return dataframe + + def populate_buy_trend(self, dataframe: DataFrame) -> DataFrame: + """ + Based on TA indicators, populates the buy signal for the given dataframe + :param dataframe: DataFrame + :return: DataFrame with buy column + """ + dataframe.loc[ + ( + (dataframe['adx'] > 30) & + (dataframe['tema'] > dataframe['tema'].shift(1)) & + (dataframe['volume'] > 0) + ), + 'buy'] = 1 + + return dataframe + + def populate_sell_trend(self, dataframe: DataFrame) -> DataFrame: + """ + Based on TA indicators, populates the sell signal for the given dataframe + :param dataframe: DataFrame + :return: DataFrame with buy column + """ + dataframe.loc[ + ( + (dataframe['adx'] > 70) & + (dataframe['tema'] < dataframe['tema'].shift(1)) & + (dataframe['volume'] > 0) + ), + 'sell'] = 1 + return dataframe From e8c0a0bcd3b242e49f02a620d489cf352b548aa3 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 15 Feb 2020 06:18:00 +0300 Subject: [PATCH 1745/3421] Make mypy happy --- freqtrade/resolvers/iresolver.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 84dee85cd..34f3934b6 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -7,7 +7,7 @@ import importlib.util import inspect import logging from pathlib import Path -from typing import Any, Dict, Generator, List, Optional, Tuple, Type, Union +from typing import Any, Dict, Iterator, List, Optional, Tuple, Type, Union from freqtrade.exceptions import OperationalException @@ -40,10 +40,8 @@ class IResolver: return abs_paths @classmethod - def _get_valid_object(cls, module_path: Path, - object_name: Optional[str], - enum_failed: bool = False) -> Union[Generator[Any, None, None], - Tuple[None]]: + def _get_valid_object(cls, module_path: Path, object_name: Optional[str], + enum_failed: bool = False) -> Iterator[Any]: """ Generator returning objects with matching object_type and object_name in the path given. :param module_path: absolute path to the module @@ -63,7 +61,7 @@ class IResolver: # Catch errors in case a specific module is not installed logger.warning(f"Could not import {module_path} due to '{err}'") if enum_failed: - return (None, ) + return iter([None]) valid_objects_gen = ( obj for name, obj in inspect.getmembers(module, inspect.isclass) From ddea4b9300f12fcd099f0e4f5724bf290ec17881 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 15 Feb 2020 06:54:18 +0300 Subject: [PATCH 1746/3421] Fix test --- tests/strategy/test_strategy.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 3d3f0f424..379260599 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -43,8 +43,10 @@ def test_search_all_strategies_with_failed(): strategies = StrategyResolver.search_all_objects(directory, enum_failed=True) assert isinstance(strategies, list) assert len(strategies) == 4 - assert isinstance(strategies[0], dict) - assert strategies[0]['class'] is None + # with enum_failed=True search_all_objects() shall find 3 good strategies + # and 1 which fails to load + assert len([x for x in strategies if x['class'] is not None]) == 3 + assert len([x for x in strategies if x['class'] is None]) == 1 def test_load_strategy(default_conf, result): From 42a5d78e607f226e4e65cf5157f65bdf28ec54f5 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 15 Feb 2020 07:19:24 +0300 Subject: [PATCH 1747/3421] Wording (duplicate, not duplicated) --- freqtrade/commands/list_commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index 67ee59375..0cfc78596 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -51,7 +51,7 @@ def _print_objs_tabular(objs: List, print_colorized: bool) -> None: if s['class'] is None else "OK" if names.count(s['name']) == 1 else ((Fore.YELLOW if print_colorized else '') + - "DUPLICATED NAME" + + "DUPLICATE NAME" + (Style.RESET_ALL if print_colorized else ''))) } for s in objs] From fdd362299f5c7018f500b626f884f7dd27c17e62 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 15 Feb 2020 07:34:39 +0300 Subject: [PATCH 1748/3421] Docs adjusted --- docs/utils.md | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index abb7fd0db..cdf0c31af 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -144,38 +144,47 @@ freqtrade new-hyperopt --userdir ~/.freqtrade/ --hyperopt AwesomeHyperopt Use the `list-strategies` subcommand to see all strategies in one particular directory and the `list-hyperopts` subcommand to list custom Hyperopts. +These subcommands are useful for finding problems in your environment with loading strategies or hyperopt classes: modules with strategies or hyperopt classes that contain errors and failed to load are printed in red (LOAD FAILED), while strategies or hyperopt classes with duplicate names are printed in yellow (DUPLICATE NAME). + ``` -freqtrade list-strategies --help -usage: freqtrade list-strategies [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--strategy-path PATH] [-1] +usage: freqtrade list-strategies [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] + [--strategy-path PATH] [-1] [--no-color] optional arguments: -h, --help show this help message and exit --strategy-path PATH Specify additional strategy lookup path. -1, --one-column Print output in one column. + --no-color Disable colorization of hyperopt results. May be + useful if you are redirecting output to a file. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified. Special values are: 'syslog', 'journald'. See the documentation for more details. + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-` - to read config from stdin. + Specify configuration file (default: `config.json`). + Multiple --config options may be used. Can be set to + `-` to read config from stdin. -d PATH, --datadir PATH Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH Path to userdata directory. ``` ``` -freqtrade list-hyperopts --help usage: freqtrade list-hyperopts [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] - [--hyperopt-path PATH] [-1] + [--hyperopt-path PATH] [-1] [--no-color] optional arguments: -h, --help show this help message and exit --hyperopt-path PATH Specify additional lookup path for Hyperopt and Hyperopt Loss functions. -1, --one-column Print output in one column. + --no-color Disable colorization of hyperopt results. May be + useful if you are redirecting output to a file. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). From 87b506972f5b99f11e4f5c97a54f69c716283558 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 15 Feb 2020 13:12:29 +0100 Subject: [PATCH 1749/3421] Fix edge documentation rendering --- docs/edge.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/edge.md b/docs/edge.md index dcefe7451..6a301b044 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -145,19 +145,19 @@ Edge module has following configuration options: | Parameter | Description | |------------|-------------| -| `enabled` | If true, then Edge will run periodically.
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* -| `process_throttle_secs` | How often should Edge run in seconds.
      *Defaults to `3600` (once per hour).*
      ***Datatype:*** *Integer* -| `calculate_since_number_of_days` | Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy.
      **Note** that it downloads historical data so increasing this number would lead to slowing down the bot.
      *Defaults to `7`.*
      ***Datatype:*** *Integer* -| `capital_available_percentage` | **DEPRECATED - [replaced with `tradable_balance_ratio`](configuration.md#Available balance)** This is the percentage of the total capital on exchange in stake currency.
      As an example if you have 10 ETH available in your wallet on the exchange and this value is 0.5 (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers it as available capital.
      *Defaults to `0.5`.*
      ***Datatype:*** *Float* -| `allowed_risk` | Ratio of allowed risk per trade.
      *Defaults to `0.01` (1%)).*
      ***Datatype:*** *Float* -| `stoploss_range_min` | Minimum stoploss.
      *Defaults to `-0.01`.*
      ***Datatype:*** *Float* -| `stoploss_range_max` | Maximum stoploss.
      *Defaults to `-0.10`.*
      ***Datatype:*** *Float* -| `stoploss_range_step` | As an example if this is set to -0.01 then Edge will test the strategy for `[-0.01, -0,02, -0,03 ..., -0.09, -0.10]` ranges.
      **Note** than having a smaller step means having a bigger range which could lead to slow calculation.
      If you set this parameter to -0.001, you then slow down the Edge calculation by a factor of 10.
      *Defaults to `-0.001`.*
      ***Datatype:*** *Float* -| `minimum_winrate` | It filters out pairs which don't have at least minimum_winrate.
      This comes handy if you want to be conservative and don't comprise win rate in favour of risk reward ratio.
      *Defaults to `0.60`.*
      ***Datatype:*** *Float* -| `minimum_expectancy` | It filters out pairs which have the expectancy lower than this number.
      Having an expectancy of 0.20 means if you put 10$ on a trade you expect a 12$ return.
      *Defaults to `0.20`.*
      ***Datatype:*** *Float* -| `min_trade_number` | When calculating *W*, *R* and *E* (expectancy) against historical data, you always want to have a minimum number of trades. The more this number is the more Edge is reliable.
      Having a win rate of 100% on a single trade doesn't mean anything at all. But having a win rate of 70% over past 100 trades means clearly something.
      *Defaults to `10` (it is highly recommended not to decrease this number).*
      ***Datatype:*** *Integer* -| `max_trade_duration_minute` | Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign.
      **NOTICE:** While configuring this value, you should take into consideration your ticker interval. As an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. Default value is set assuming your strategy interval is relatively small (1m or 5m, etc.).
      *Defaults to `1440` (one day).*
      ***Datatype:*** *Integer* -| `remove_pumps` | Edge will remove sudden pumps in a given market while going through historical data. However, given that pumps happen very often in crypto markets, we recommend you keep this off.
      *Defaults to `false`.*
      ***Datatype:*** *Boolean* +| `enabled` | If true, then Edge will run periodically.
      *Defaults to `false`.*
      **Datatype:** Boolean +| `process_throttle_secs` | How often should Edge run in seconds.
      *Defaults to `3600` (once per hour).*
      **Datatype:** Integer +| `calculate_since_number_of_days` | Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy.
      **Note** that it downloads historical data so increasing this number would lead to slowing down the bot.
      *Defaults to `7`.*
      **Datatype:** Integer +| `capital_available_percentage` | **DEPRECATED - [replaced with `tradable_balance_ratio`](configuration.md#Available balance)** This is the percentage of the total capital on exchange in stake currency.
      As an example if you have 10 ETH available in your wallet on the exchange and this value is 0.5 (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers it as available capital.
      *Defaults to `0.5`.*
      **Datatype:** Float +| `allowed_risk` | Ratio of allowed risk per trade.
      *Defaults to `0.01` (1%)).*
      **Datatype:** Float +| `stoploss_range_min` | Minimum stoploss.
      *Defaults to `-0.01`.*
      **Datatype:** Float +| `stoploss_range_max` | Maximum stoploss.
      *Defaults to `-0.10`.*
      **Datatype:** Float +| `stoploss_range_step` | As an example if this is set to -0.01 then Edge will test the strategy for `[-0.01, -0,02, -0,03 ..., -0.09, -0.10]` ranges.
      **Note** than having a smaller step means having a bigger range which could lead to slow calculation.
      If you set this parameter to -0.001, you then slow down the Edge calculation by a factor of 10.
      *Defaults to `-0.001`.*
      **Datatype:** Float +| `minimum_winrate` | It filters out pairs which don't have at least minimum_winrate.
      This comes handy if you want to be conservative and don't comprise win rate in favour of risk reward ratio.
      *Defaults to `0.60`.*
      **Datatype:** Float +| `minimum_expectancy` | It filters out pairs which have the expectancy lower than this number.
      Having an expectancy of 0.20 means if you put 10$ on a trade you expect a 12$ return.
      *Defaults to `0.20`.*
      **Datatype:** Float +| `min_trade_number` | When calculating *W*, *R* and *E* (expectancy) against historical data, you always want to have a minimum number of trades. The more this number is the more Edge is reliable.
      Having a win rate of 100% on a single trade doesn't mean anything at all. But having a win rate of 70% over past 100 trades means clearly something.
      *Defaults to `10` (it is highly recommended not to decrease this number).*
      **Datatype:** Integer +| `max_trade_duration_minute` | Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign.
      **NOTICE:** While configuring this value, you should take into consideration your ticker interval. As an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. Default value is set assuming your strategy interval is relatively small (1m or 5m, etc.).
      *Defaults to `1440` (one day).*
      **Datatype:** Integer +| `remove_pumps` | Edge will remove sudden pumps in a given market while going through historical data. However, given that pumps happen very often in crypto markets, we recommend you keep this off.
      *Defaults to `false`.*
      **Datatype:** Boolean ## Running Edge independently From 6139239b863b36522a7d96efdb859e830403bad9 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 15 Feb 2020 20:43:11 +0300 Subject: [PATCH 1750/3421] Address points stated in comments --- freqtrade/commands/list_commands.py | 15 +++-- freqtrade/resolvers/iresolver.py | 2 +- tests/strategy/failing_strategy.py | 86 ++--------------------------- 3 files changed, 14 insertions(+), 89 deletions(-) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index 0cfc78596..49674b81a 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -41,18 +41,21 @@ def start_list_exchanges(args: Dict[str, Any]) -> None: def _print_objs_tabular(objs: List, print_colorized: bool) -> None: if print_colorized: colorama_init(autoreset=True) + red = Fore.RED + yellow = Fore.YELLOW + reset = Style.RESET_ALL + else: + red = '' + yellow = '' + reset = '' names = [s['name'] for s in objs] objss_to_print = [{ 'name': s['name'] if s['name'] else "--", 'location': s['location'].name, - 'status': (((Fore.RED if print_colorized else '') + - "LOAD FAILED" + (Style.RESET_ALL if print_colorized else '')) - if s['class'] is None + 'status': (red + "LOAD FAILED" + reset if s['class'] is None else "OK" if names.count(s['name']) == 1 - else ((Fore.YELLOW if print_colorized else '') + - "DUPLICATE NAME" + - (Style.RESET_ALL if print_colorized else ''))) + else yellow + "DUPLICATE NAME" + reset) } for s in objs] print(tabulate(objss_to_print, headers='keys', tablefmt='pipe')) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 34f3934b6..922a2700a 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -87,7 +87,7 @@ class IResolver: continue module_path = entry.resolve() - obj = next(cls._get_valid_object(module_path, object_name), None) # noqa + obj = next(cls._get_valid_object(module_path, object_name), None) if obj: return (obj, module_path) diff --git a/tests/strategy/failing_strategy.py b/tests/strategy/failing_strategy.py index 57a8cc1ae..f8eaac3c3 100644 --- a/tests/strategy/failing_strategy.py +++ b/tests/strategy/failing_strategy.py @@ -1,87 +1,9 @@ - -# --- Do not remove these libs --- -from freqtrade.strategy.interface import IStrategy -from pandas import DataFrame -# -------------------------------- - -# Add your lib to import here -import talib.abstract as ta +# The strategy which fails to load due to non-existent dependency import nonexiting_module # noqa +from freqtrade.strategy.interface import IStrategy + -# This class is a sample. Feel free to customize it. class TestStrategyLegacy(IStrategy): - """ - This is a test strategy using the legacy function headers, which will be - removed in a future update. - Please do not use this as a template, but refer to user_data/strategy/sample_strategy.py - for a uptodate version of this template. - """ - - # Minimal ROI designed for the strategy. - # This attribute will be overridden if the config file contains "minimal_roi" - minimal_roi = { - "40": 0.0, - "30": 0.01, - "20": 0.02, - "0": 0.04 - } - - # Optimal stoploss designed for the strategy - # This attribute will be overridden if the config file contains "stoploss" - stoploss = -0.10 - - # Optimal ticker interval for the strategy - ticker_interval = '5m' - - def populate_indicators(self, dataframe: DataFrame) -> DataFrame: - """ - Adds several different TA indicators to the given DataFrame - - Performance Note: For the best performance be frugal on the number of indicators - you are using. Let uncomment only the indicator you are using in your strategies - or your hyperopt configuration, otherwise you will waste your memory and CPU usage. - """ - - # Momentum Indicator - # ------------------------------------ - - # ADX - dataframe['adx'] = ta.ADX(dataframe) - - # TEMA - Triple Exponential Moving Average - dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9) - - return dataframe - - def populate_buy_trend(self, dataframe: DataFrame) -> DataFrame: - """ - Based on TA indicators, populates the buy signal for the given dataframe - :param dataframe: DataFrame - :return: DataFrame with buy column - """ - dataframe.loc[ - ( - (dataframe['adx'] > 30) & - (dataframe['tema'] > dataframe['tema'].shift(1)) & - (dataframe['volume'] > 0) - ), - 'buy'] = 1 - - return dataframe - - def populate_sell_trend(self, dataframe: DataFrame) -> DataFrame: - """ - Based on TA indicators, populates the sell signal for the given dataframe - :param dataframe: DataFrame - :return: DataFrame with buy column - """ - dataframe.loc[ - ( - (dataframe['adx'] > 70) & - (dataframe['tema'] < dataframe['tema'].shift(1)) & - (dataframe['volume'] > 0) - ), - 'sell'] = 1 - return dataframe + pass From 6e71f2f1662246b848d8137223c8449068f2348e Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 15 Feb 2020 20:55:12 +0100 Subject: [PATCH 1751/3421] my fix --- freqtrade/rpc/rpc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index c182aad2b..f6ac999f7 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -168,9 +168,9 @@ class RPC: profit_str += f" ({fiat_profit:.2f})" trades_list.append([ trade.id, - trade.pair + '*' if (trade.open_order_id is not None - and trade.close_rate_requested is None) else '' - + '**' if (trade.close_rate_requested is not None) else '', + trade.pair + ['', '*'][trade.open_order_id is not None + and trade.close_rate_requested is None] + + ['', '**'][trade.close_rate_requested is not None], shorten_date(arrow.get(trade.open_date).humanize(only_distance=True)), profit_str ]) From 180939a962e1214b744999c449753be26024edad Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 15 Feb 2020 21:01:45 +0100 Subject: [PATCH 1752/3421] winner, readability, with brackets as fix --- freqtrade/rpc/rpc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index f6ac999f7..3411318bb 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -168,9 +168,9 @@ class RPC: profit_str += f" ({fiat_profit:.2f})" trades_list.append([ trade.id, - trade.pair + ['', '*'][trade.open_order_id is not None - and trade.close_rate_requested is None] - + ['', '**'][trade.close_rate_requested is not None], + trade.pair + ('*' if (trade.open_order_id is not None + and trade.close_rate_requested is None) else '') + + ('**' if (trade.close_rate_requested is not None) else ''), shorten_date(arrow.get(trade.open_date).humanize(only_distance=True)), profit_str ]) From 161dd1a3e60e70928d7bab25f1a8913a079420f9 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 16 Feb 2020 03:55:16 +0300 Subject: [PATCH 1753/3421] Rename risk_free_return to minumum_accepted_return --- freqtrade/optimize/hyperopt_loss_sortino_daily.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index d869a4e4e..72f70e3f9 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -31,8 +31,7 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): resample_freq = '1D' slippage_per_trade_ratio = 0.0005 days_in_year = 365 - annual_risk_free_rate = 0.0 - risk_free_rate = annual_risk_free_rate / days_in_year + minimum_acceptable_return = 0.0 # apply slippage per trade to profit_percent results.loc[:, 'profit_percent_after_slippage'] = \ @@ -47,7 +46,7 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): {"profit_percent_after_slippage": sum}).reindex(t_index).fillna(0) ) - total_profit = sum_daily["profit_percent_after_slippage"] - risk_free_rate + total_profit = sum_daily["profit_percent_after_slippage"] - minimum_acceptable_return expected_returns_mean = total_profit.mean() sum_daily['downside_returns'] = 0 From 1e84b2770cfa2e0e5e8177615dfee178ac136c1f Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 16 Feb 2020 04:10:53 +0300 Subject: [PATCH 1754/3421] Fix values of downside_returns --- freqtrade/optimize/hyperopt_loss_sortino_daily.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index 72f70e3f9..26eb54c25 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -50,8 +50,7 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): expected_returns_mean = total_profit.mean() sum_daily['downside_returns'] = 0 - sum_daily.loc[total_profit < 0, - 'downside_returns'] = sum_daily['profit_percent_after_slippage'] + sum_daily.loc[total_profit < 0, 'downside_returns'] = total_profit total_downside = sum_daily['downside_returns'] down_stdev = total_downside.std() From fbe5cc44da260d50db28dedf5acd12aad06913ce Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 16 Feb 2020 13:43:23 +0300 Subject: [PATCH 1755/3421] Use statistics.pstdev --- freqtrade/optimize/hyperopt_loss_sortino_daily.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index 26eb54c25..09042cb48 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -5,6 +5,7 @@ This module defines the alternative HyperOptLoss class which can be used for Hyperoptimization. """ import math +import statistics from datetime import datetime from pandas import DataFrame, date_range @@ -52,7 +53,7 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): sum_daily['downside_returns'] = 0 sum_daily.loc[total_profit < 0, 'downside_returns'] = total_profit total_downside = sum_daily['downside_returns'] - down_stdev = total_downside.std() + down_stdev = statistics.pstdev(total_downside, 0) if (down_stdev != 0.): sortino_ratio = expected_returns_mean / down_stdev * math.sqrt(days_in_year) From 42dfda92316b4678107eac65359d56d5e8b6ee0a Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 16 Feb 2020 13:46:07 +0300 Subject: [PATCH 1756/3421] Adjust docstring --- freqtrade/optimize/hyperopt_loss_sortino_daily.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index 09042cb48..22cd93984 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -28,6 +28,9 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): Objective function, returns smaller number for more optimal results. Uses Sortino Ratio calculation. + + Sortino Ratio calculated as described in + http://www.redrockcapital.com/Sortino__A__Sharper__Ratio_Red_Rock_Capital.pdf """ resample_freq = '1D' slippage_per_trade_ratio = 0.0005 From 3787ac7b980e16d615cebe5a942a8d45490ba72c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 16 Feb 2020 13:20:11 +0100 Subject: [PATCH 1757/3421] increment limit to adjust to FTX defaults (1500 candles) --- freqtrade/exchange/__init__.py | 18 ++++++++++-------- freqtrade/exchange/ftx.py | 14 ++++++++++++++ 2 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 freqtrade/exchange/ftx.py diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index df18bca02..a39f8f5df 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -1,18 +1,20 @@ -from freqtrade.exchange.common import MAP_EXCHANGE_CHILDCLASS # noqa: F401 -from freqtrade.exchange.exchange import Exchange # noqa: F401 -from freqtrade.exchange.exchange import (get_exchange_bad_reason, # noqa: F401 +# flake8: noqa: F401 +from freqtrade.exchange.common import MAP_EXCHANGE_CHILDCLASS +from freqtrade.exchange.exchange import Exchange +from freqtrade.exchange.exchange import (get_exchange_bad_reason, is_exchange_bad, is_exchange_known_ccxt, is_exchange_officially_supported, ccxt_exchanges, available_exchanges) -from freqtrade.exchange.exchange import (timeframe_to_seconds, # noqa: F401 +from freqtrade.exchange.exchange import (timeframe_to_seconds, timeframe_to_minutes, timeframe_to_msecs, timeframe_to_next_date, timeframe_to_prev_date) -from freqtrade.exchange.exchange import (market_is_active, # noqa: F401 +from freqtrade.exchange.exchange import (market_is_active, symbol_is_pair) -from freqtrade.exchange.kraken import Kraken # noqa: F401 -from freqtrade.exchange.binance import Binance # noqa: F401 -from freqtrade.exchange.bibox import Bibox # noqa: F401 +from freqtrade.exchange.kraken import Kraken +from freqtrade.exchange.binance import Binance +from freqtrade.exchange.bibox import Bibox +from freqtrade.exchange.ftx import Ftx diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py new file mode 100644 index 000000000..75915122b --- /dev/null +++ b/freqtrade/exchange/ftx.py @@ -0,0 +1,14 @@ +""" FTX exchange subclass """ +import logging +from typing import Dict + +from freqtrade.exchange import Exchange + +logger = logging.getLogger(__name__) + + +class Ftx(Exchange): + + _ft_has: Dict = { + "ohlcv_candle_limit": 1500, + } From 674898bd32eede682dad5a688ee1428b89a8805c Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 16 Feb 2020 15:26:40 +0300 Subject: [PATCH 1758/3421] Fix usage of vars in the commented out line --- freqtrade/optimize/hyperopt_loss_sortino_daily.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index 22cd93984..0f81ffca5 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -65,5 +65,5 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): sortino_ratio = -20. # print(t_index, sum_daily, total_profit) - # print(risk_free_rate, expected_returns_mean, down_stdev, sortino_ratio) + # print(minimum_acceptable_return, expected_returns_mean, down_stdev, sortino_ratio) return -sortino_ratio From bec86b13258f97dba75b7b5b8cc39f773490d7fa Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 16 Feb 2020 15:42:41 +0100 Subject: [PATCH 1759/3421] Add github actions badge --- README.md | 2 +- docs/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a1feeab67..59799da84 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Freqtrade -[![Build Status](https://travis-ci.org/freqtrade/freqtrade.svg?branch=develop)](https://travis-ci.org/freqtrade/freqtrade) +[![Freqtrade CI](https://github.com/freqtrade/freqtrade/workflows/Freqtrade%20CI/badge.svg)](https://github.com/freqtrade/freqtrade/actions/) [![Coverage Status](https://coveralls.io/repos/github/freqtrade/freqtrade/badge.svg?branch=develop&service=github)](https://coveralls.io/github/freqtrade/freqtrade?branch=develop) [![Documentation](https://readthedocs.org/projects/freqtrade/badge/)](https://www.freqtrade.io) [![Maintainability](https://api.codeclimate.com/v1/badges/5737e6d668200b7518ff/maintainability)](https://codeclimate.com/github/freqtrade/freqtrade/maintainability) diff --git a/docs/index.md b/docs/index.md index f0ee831e3..adc661300 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,5 +1,5 @@ # Freqtrade -[![Build Status](https://travis-ci.org/freqtrade/freqtrade.svg?branch=develop)](https://travis-ci.org/freqtrade/freqtrade) +[![Freqtrade CI](https://github.com/freqtrade/freqtrade/workflows/Freqtrade%20CI/badge.svg)](https://github.com/freqtrade/freqtrade/actions/) [![Coverage Status](https://coveralls.io/repos/github/freqtrade/freqtrade/badge.svg?branch=develop&service=github)](https://coveralls.io/github/freqtrade/freqtrade?branch=develop) [![Maintainability](https://api.codeclimate.com/v1/badges/5737e6d668200b7518ff/maintainability)](https://codeclimate.com/github/freqtrade/freqtrade/maintainability) From 212d20ed087161cc4abefdbe47a0c4c345e955e7 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2020 08:03:37 +0000 Subject: [PATCH 1760/3421] Bump ccxt from 1.22.39 to 1.22.61 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.22.39 to 1.22.61. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.22.39...1.22.61) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index f641dd2ad..e89afceed 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.22.39 +ccxt==1.22.61 SQLAlchemy==1.3.13 python-telegram-bot==12.4.1 arrow==0.15.5 From c6a3038f5274fe974fd34e51b313689ce5112c52 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2020 08:03:57 +0000 Subject: [PATCH 1761/3421] Bump coveralls from 1.10.0 to 1.11.1 Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 1.10.0 to 1.11.1. - [Release notes](https://github.com/coveralls-clients/coveralls-python/releases) - [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/coveralls-clients/coveralls-python/compare/1.10.0...1.11.1) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 268c5f777..1e58ae6e0 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -3,7 +3,7 @@ -r requirements-plot.txt -r requirements-hyperopt.txt -coveralls==1.10.0 +coveralls==1.11.1 flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.0.0 From 500e1c77de3912c989612fd2a823c5c72a3a8415 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2020 08:04:21 +0000 Subject: [PATCH 1762/3421] Bump wrapt from 1.11.2 to 1.12.0 Bumps [wrapt](https://github.com/GrahamDumpleton/wrapt) from 1.11.2 to 1.12.0. - [Release notes](https://github.com/GrahamDumpleton/wrapt/releases) - [Changelog](https://github.com/GrahamDumpleton/wrapt/blob/develop/docs/changes.rst) - [Commits](https://github.com/GrahamDumpleton/wrapt/compare/1.11.2...1.12.0) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index f641dd2ad..df67c1691 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -7,7 +7,7 @@ arrow==0.15.5 cachetools==4.0.0 requests==2.22.0 urllib3==1.25.8 -wrapt==1.11.2 +wrapt==1.12.0 jsonschema==3.2.0 TA-Lib==0.4.17 tabulate==0.8.6 From 9435950fc968899d697263244096872cded9951c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2020 08:04:40 +0000 Subject: [PATCH 1763/3421] Bump mkdocs-material from 4.6.2 to 4.6.3 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.6.2 to 4.6.3. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.6.2...4.6.3) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 3980ecd64..48ade026e 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==4.6.2 +mkdocs-material==4.6.3 mdx_truly_sane_lists==1.2 From 0fd3d74fc4ab745833b682cc69a6eb3581de30da Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2020 08:05:00 +0000 Subject: [PATCH 1764/3421] Bump scikit-optimize from 0.7.1 to 0.7.2 Bumps [scikit-optimize](https://github.com/scikit-optimize/scikit-optimize) from 0.7.1 to 0.7.2. - [Release notes](https://github.com/scikit-optimize/scikit-optimize/releases) - [Changelog](https://github.com/scikit-optimize/scikit-optimize/blob/master/CHANGELOG.md) - [Commits](https://github.com/scikit-optimize/scikit-optimize/compare/v0.7.1...v0.7.2) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 202806cef..e97e7f6be 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -4,6 +4,6 @@ # Required for hyperopt scipy==1.4.1 scikit-learn==0.22.1 -scikit-optimize==0.7.1 +scikit-optimize==0.7.2 filelock==3.0.12 joblib==0.14.1 From 582b59044c3d6388ca1847643c8816b9613156e3 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2020 08:47:39 +0000 Subject: [PATCH 1765/3421] Bump python-telegram-bot from 12.4.1 to 12.4.2 Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.4.1 to 12.4.2. - [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases) - [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst) - [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.4.1...v12.4.2) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index e89afceed..6cc8e3809 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -2,7 +2,7 @@ # mainly used for Raspberry pi installs ccxt==1.22.61 SQLAlchemy==1.3.13 -python-telegram-bot==12.4.1 +python-telegram-bot==12.4.2 arrow==0.15.5 cachetools==4.0.0 requests==2.22.0 From 0b33b798e4a9d5e6f13df7a3d3a0e90dbe34643e Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 17 Feb 2020 20:16:24 +0100 Subject: [PATCH 1766/3421] Add pypi build step --- .github/workflows/ci.yml | 29 ++++++++++++++++++++++++++++- freqtrade/__init__.py | 2 +- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 05d151a88..cc8906af5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,6 +7,8 @@ on: - develop - github_actions_tests tags: + release: + types: [published] pull_request: schedule: - cron: '0 5 * * 4' @@ -191,15 +193,40 @@ jobs: deploy: needs: [ build, build_windows, docs_check ] runs-on: ubuntu-18.04 - if: (github.event_name == 'push' || github.event_name == 'schedule') && github.repository == 'freqtrade/freqtrade' + if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade' steps: - uses: actions/checkout@v1 + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: 3.8 + - name: Extract branch name shell: bash run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" id: extract_branch + - name: Build distribution + run: | + pip install -U setuptools wheel + python setup.py sdist bdist_wheel + + - name: Publish to PyPI (Test) + uses: pypa/gh-action-pypi-publish@master + if: (steps.extract_branch.outputs.branch == 'master' || github.event_name == 'release') + with: + user: __token__ + password: ${{ secrets.pypi_test_password }} + repository_url: https://test.pypi.org/legacy/ + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@master + if: (steps.extract_branch.outputs.branch == 'master' || github.event_name == 'release') + with: + user: __token__ + password: ${{ secrets.pypi_password }} + - name: Build and test and push docker image env: IMAGE_NAME: freqtradeorg/freqtrade diff --git a/freqtrade/__init__.py b/freqtrade/__init__.py index e1f65d4fe..f2ae5dc63 100644 --- a/freqtrade/__init__.py +++ b/freqtrade/__init__.py @@ -1,4 +1,4 @@ -""" FreqTrade bot """ +""" Freqtrade bot """ __version__ = 'develop' if __version__ == 'develop': From 1172c958174424e138d9391dfcd90db6e6856705 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 17 Feb 2020 20:17:08 +0100 Subject: [PATCH 1767/3421] Use different versioning scheme --- freqtrade/__init__.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/freqtrade/__init__.py b/freqtrade/__init__.py index f2ae5dc63..23ab945b4 100644 --- a/freqtrade/__init__.py +++ b/freqtrade/__init__.py @@ -5,9 +5,23 @@ if __version__ == 'develop': try: import subprocess - __version__ = 'develop-' + subprocess.check_output( - ['git', 'log', '--format="%h"', '-n 1'], - stderr=subprocess.DEVNULL).decode("utf-8").rstrip().strip('"') + + # __version__ = 'develop-' + subprocess.check_output( + # ['git', 'log', '--format="%h"', '-n 1'], + # stderr=subprocess.DEVNULL).decode("utf-8").rstrip().strip('"') + + from datetime import datetime + last_release = subprocess.check_output( + ['git', 'tag'] + ).decode('utf-8').split()[-1].split(".") + # Releases are in the format "2020.1" - we increment the latest version for dev. + prefix = f"{last_release[0]}.{int(last_release[1]) + 1}" + dev_version = int(datetime.now().timestamp() // 1000) + __version__ = f"{prefix}.dev{dev_version}" + + # subprocess.check_output( + # ['git', 'log', '--format="%h"', '-n 1'], + # stderr=subprocess.DEVNULL).decode("utf-8").rstrip().strip('"') except Exception: # git not available, ignore pass From e6dd463ca3ad7803e1e6df391d3917d32142368e Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 17 Feb 2020 20:17:36 +0100 Subject: [PATCH 1768/3421] Revert versioning --- freqtrade/__init__.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/freqtrade/__init__.py b/freqtrade/__init__.py index 23ab945b4..ad432a20b 100644 --- a/freqtrade/__init__.py +++ b/freqtrade/__init__.py @@ -6,18 +6,18 @@ if __version__ == 'develop': try: import subprocess - # __version__ = 'develop-' + subprocess.check_output( - # ['git', 'log', '--format="%h"', '-n 1'], - # stderr=subprocess.DEVNULL).decode("utf-8").rstrip().strip('"') + __version__ = 'develop-' + subprocess.check_output( + ['git', 'log', '--format="%h"', '-n 1'], + stderr=subprocess.DEVNULL).decode("utf-8").rstrip().strip('"') - from datetime import datetime - last_release = subprocess.check_output( - ['git', 'tag'] - ).decode('utf-8').split()[-1].split(".") - # Releases are in the format "2020.1" - we increment the latest version for dev. - prefix = f"{last_release[0]}.{int(last_release[1]) + 1}" - dev_version = int(datetime.now().timestamp() // 1000) - __version__ = f"{prefix}.dev{dev_version}" + # from datetime import datetime + # last_release = subprocess.check_output( + # ['git', 'tag'] + # ).decode('utf-8').split()[-1].split(".") + # # Releases are in the format "2020.1" - we increment the latest version for dev. + # prefix = f"{last_release[0]}.{int(last_release[1]) + 1}" + # dev_version = int(datetime.now().timestamp() // 1000) + # __version__ = f"{prefix}.dev{dev_version}" # subprocess.check_output( # ['git', 'log', '--format="%h"', '-n 1'], From 1634297685489bd1dd47802801bef7daae1a7238 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 18 Feb 2020 20:12:10 +0100 Subject: [PATCH 1769/3421] Move strategies to test subfolder --- tests/commands/test_commands.py | 4 ++-- tests/conftest.py | 1 + .../strategy/strats}/default_strategy.py | 0 tests/strategy/{ => strats}/failing_strategy.py | 0 tests/strategy/{ => strats}/legacy_strategy.py | 0 tests/strategy/test_default_strategy.py | 2 +- tests/strategy/test_interface.py | 2 +- tests/strategy/test_strategy.py | 14 +++++++------- 8 files changed, 12 insertions(+), 11 deletions(-) rename {freqtrade/strategy => tests/strategy/strats}/default_strategy.py (100%) rename tests/strategy/{ => strats}/failing_strategy.py (100%) rename tests/strategy/{ => strats}/legacy_strategy.py (100%) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index ee1db5db5..55bd7306d 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -640,7 +640,7 @@ def test_start_list_strategies(mocker, caplog, capsys): args = [ "list-strategies", "--strategy-path", - str(Path(__file__).parent.parent / "strategy"), + str(Path(__file__).parent.parent / "strategy" / "strats"), "-1" ] pargs = get_args(args) @@ -655,7 +655,7 @@ def test_start_list_strategies(mocker, caplog, capsys): args = [ "list-strategies", "--strategy-path", - str(Path(__file__).parent.parent / "strategy"), + str(Path(__file__).parent.parent / "strategy" / "strats"), ] pargs = get_args(args) # pargs['config'] = None diff --git a/tests/conftest.py b/tests/conftest.py index e897dbccd..acb730330 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -257,6 +257,7 @@ def default_conf(testdatadir): "db_url": "sqlite://", "user_data_dir": Path("user_data"), "verbosity": 3, + "strategy_path": str(Path(__file__).parent / "strategy" / "strats"), "strategy": "DefaultStrategy" } return configuration diff --git a/freqtrade/strategy/default_strategy.py b/tests/strategy/strats/default_strategy.py similarity index 100% rename from freqtrade/strategy/default_strategy.py rename to tests/strategy/strats/default_strategy.py diff --git a/tests/strategy/failing_strategy.py b/tests/strategy/strats/failing_strategy.py similarity index 100% rename from tests/strategy/failing_strategy.py rename to tests/strategy/strats/failing_strategy.py diff --git a/tests/strategy/legacy_strategy.py b/tests/strategy/strats/legacy_strategy.py similarity index 100% rename from tests/strategy/legacy_strategy.py rename to tests/strategy/strats/legacy_strategy.py diff --git a/tests/strategy/test_default_strategy.py b/tests/strategy/test_default_strategy.py index 17d6b8ee0..0b8ea9f85 100644 --- a/tests/strategy/test_default_strategy.py +++ b/tests/strategy/test_default_strategy.py @@ -1,6 +1,6 @@ from pandas import DataFrame -from freqtrade.strategy.default_strategy import DefaultStrategy +from .strats.default_strategy import DefaultStrategy def test_default_strategy_structure(): diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index a28519383..def64425e 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -11,7 +11,7 @@ from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.data.history import load_tickerdata_file from freqtrade.persistence import Trade from freqtrade.resolvers import StrategyResolver -from freqtrade.strategy.default_strategy import DefaultStrategy +from .strats.default_strategy import DefaultStrategy from tests.conftest import get_patched_exchange, log_has # Avoid to reinit the same object again and again diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 379260599..5c6de8260 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -31,21 +31,21 @@ def test_search_strategy(): def test_search_all_strategies_no_failed(): - directory = Path(__file__).parent + directory = Path(__file__).parent / "strats" strategies = StrategyResolver.search_all_objects(directory, enum_failed=False) assert isinstance(strategies, list) - assert len(strategies) == 3 + assert len(strategies) == 2 assert isinstance(strategies[0], dict) def test_search_all_strategies_with_failed(): - directory = Path(__file__).parent + directory = Path(__file__).parent / "strats" strategies = StrategyResolver.search_all_objects(directory, enum_failed=True) assert isinstance(strategies, list) - assert len(strategies) == 4 + assert len(strategies) == 3 # with enum_failed=True search_all_objects() shall find 3 good strategies # and 1 which fails to load - assert len([x for x in strategies if x['class'] is not None]) == 3 + assert len([x for x in strategies if x['class'] is not None]) == 2 assert len([x for x in strategies if x['class'] is None]) == 1 @@ -326,7 +326,7 @@ def test_strategy_override_use_sell_profit_only(caplog, default_conf): @pytest.mark.filterwarnings("ignore:deprecated") def test_deprecate_populate_indicators(result, default_conf): - default_location = path.join(path.dirname(path.realpath(__file__))) + default_location = Path(__file__).parent / "strats" default_conf.update({'strategy': 'TestStrategyLegacy', 'strategy_path': default_location}) strategy = StrategyResolver.load_strategy(default_conf) @@ -360,7 +360,7 @@ def test_deprecate_populate_indicators(result, default_conf): @pytest.mark.filterwarnings("ignore:deprecated") def test_call_deprecated_function(result, monkeypatch, default_conf): - default_location = path.join(path.dirname(path.realpath(__file__))) + default_location = Path(__file__).parent / "strats" default_conf.update({'strategy': 'TestStrategyLegacy', 'strategy_path': default_location}) strategy = StrategyResolver.load_strategy(default_conf) From d91b9d125314c62119b75142fb833ffd0a829bc1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 18 Feb 2020 20:26:20 +0100 Subject: [PATCH 1770/3421] Fix some tests, don't default to freqtrade/strategy for imports --- freqtrade/resolvers/iresolver.py | 4 +++- freqtrade/resolvers/strategy_resolver.py | 2 +- tests/strategy/test_strategy.py | 10 ++++------ tests/test_configuration.py | 1 + 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 922a2700a..764759289 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -28,7 +28,9 @@ class IResolver: def build_search_paths(cls, config: Dict[str, Any], user_subdir: Optional[str] = None, extra_dir: Optional[str] = None) -> List[Path]: - abs_paths: List[Path] = [cls.initial_search_path] + abs_paths: List[Path] = [] + if cls.initial_search_path: + abs_paths.append(cls.initial_search_path) if user_subdir: abs_paths.insert(0, config['user_data_dir'].joinpath(user_subdir)) diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index bb8ff870e..cddc7c9cd 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -27,7 +27,7 @@ class StrategyResolver(IResolver): object_type = IStrategy object_type_str = "Strategy" user_subdir = USERPATH_STRATEGIES - initial_search_path = Path(__file__).parent.parent.joinpath('strategy').resolve() + initial_search_path = None @staticmethod def load_strategy(config: Dict[str, Any] = None) -> IStrategy: diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 5c6de8260..27bbb2d3b 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -2,7 +2,6 @@ import logging import warnings from base64 import urlsafe_b64encode -from os import path from pathlib import Path import pytest @@ -15,7 +14,7 @@ from tests.conftest import log_has, log_has_re def test_search_strategy(): - default_location = Path(__file__).parent.parent.joinpath('strategy').resolve() + default_location = Path(__file__).parent / 'strats' s, _ = StrategyResolver._search_object( directory=default_location, @@ -72,13 +71,12 @@ def test_load_strategy_base64(result, caplog, default_conf): def test_load_strategy_invalid_directory(result, caplog, default_conf): default_conf['strategy'] = 'DefaultStrategy' extra_dir = Path.cwd() / 'some/path' - strategy = StrategyResolver._load_strategy('DefaultStrategy', config=default_conf, - extra_dir=extra_dir) + with pytest.raises(OperationalException): + StrategyResolver._load_strategy('DefaultStrategy', config=default_conf, + extra_dir=extra_dir) assert log_has_re(r'Path .*' + r'some.*path.*' + r'.* does not exist', caplog) - assert 'rsi' in strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) - def test_load_not_found_strategy(default_conf): default_conf['strategy'] = 'NotFoundStrategy' diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 74de166c1..d810305db 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -212,6 +212,7 @@ def test_load_config_file_exception(mocker) -> None: def test_load_config(default_conf, mocker) -> None: + del default_conf['strategy_path'] patched_configuration_load_config_file(mocker, default_conf) args = Arguments(['trade']).get_parsed_arg() From 2058b492eb2b668616f06d0d001e01ffca17e38f Mon Sep 17 00:00:00 2001 From: Fredrik Rydin Date: Tue, 18 Feb 2020 22:46:53 +0100 Subject: [PATCH 1771/3421] Added function to print hyperopt-list as table using tabulate --- docs/utils.md | 1 + freqtrade/commands/arguments.py | 3 +- freqtrade/commands/cli_options.py | 6 +++ freqtrade/commands/hyperopt_commands.py | 36 ++++++++++-------- freqtrade/configuration/configuration.py | 3 ++ freqtrade/optimize/hyperopt.py | 47 +++++++++++++++++++++++- tests/commands/test_commands.py | 16 ++++++++ 7 files changed, 95 insertions(+), 17 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index abb7fd0db..6ca0b7920 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -440,6 +440,7 @@ optional arguments: --no-color Disable colorization of hyperopt results. May be useful if you are redirecting output to a file. --print-json Print best result detailization in JSON format. + --print-table Print results in table format. --no-details Do not print best epoch details. Common arguments: diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index fe6f49039..0f6478a60 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -66,7 +66,8 @@ ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_list_min_avg_time", "hyperopt_list_max_avg_time", "hyperopt_list_min_avg_profit", "hyperopt_list_max_avg_profit", "hyperopt_list_min_total_profit", "hyperopt_list_max_total_profit", - "print_colorized", "print_json", "hyperopt_list_no_details"] + "print_colorized", "print_json", "print_table", + "hyperopt_list_no_details"] ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_show_index", "print_json", "hyperopt_show_no_header"] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 1776955b1..9efc1151a 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -220,6 +220,12 @@ AVAILABLE_CLI_OPTIONS = { action='store_true', default=False, ), + "print_table": Arg( + '--print-table', + help='Print results in table format.', + action='store_true', + default=False, + ), "hyperopt_jobs": Arg( '-j', '--job-workers', help='The number of concurrently running jobs for hyperoptimization ' diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index 8c1c80d98..88cd79468 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -21,6 +21,7 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: print_colorized = config.get('print_colorized', False) print_json = config.get('print_json', False) + print_table = config.get('print_table', False) no_details = config.get('hyperopt_list_no_details', False) no_header = False @@ -52,14 +53,20 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: if print_colorized: colorama_init(autoreset=True) - try: - # Human-friendly indexes used here (starting from 1) - for val in trials[epoch_start:epoch_stop]: - Hyperopt.print_results_explanation(val, total_epochs, - not filteroptions['only_best'], print_colorized) - - except KeyboardInterrupt: - print('User interrupted..') + if print_table: + try: + Hyperopt.print_result_table(config, trials, total_epochs, + not filteroptions['only_best'], print_colorized) + except KeyboardInterrupt: + print('User interrupted..') + else: + try: + # Human-friendly indexes used here (starting from 1) + for val in trials[epoch_start:epoch_stop]: + Hyperopt.print_results_explanation(val, total_epochs, + not filteroptions['only_best'], print_colorized) + except KeyboardInterrupt: + print('User interrupted..') if trials and not no_details: sorted_trials = sorted(trials, key=itemgetter('loss')) @@ -75,6 +82,12 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + print_json = config.get('print_json', False) + no_header = config.get('hyperopt_show_no_header', False) + trials_file = (config['user_data_dir'] / + 'hyperopt_results' / 'hyperopt_results.pickle') + n = config.get('hyperopt_show_index', -1) + filteroptions = { 'only_best': config.get('hyperopt_list_best', False), 'only_profitable': config.get('hyperopt_list_profitable', False), @@ -87,10 +100,6 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', None), 'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None) } - no_header = config.get('hyperopt_show_no_header', False) - - trials_file = (config['user_data_dir'] / - 'hyperopt_results' / 'hyperopt_results.pickle') # Previous evaluations trials = Hyperopt.load_previous_results(trials_file) @@ -99,7 +108,6 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: trials = _hyperopt_filter_trials(trials, filteroptions) trials_epochs = len(trials) - n = config.get('hyperopt_show_index', -1) if n > trials_epochs: raise OperationalException( f"The index of the epoch to show should be less than {trials_epochs + 1}.") @@ -111,8 +119,6 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: if n > 0: n -= 1 - print_json = config.get('print_json', False) - if trials: val = trials[n] Hyperopt.print_epoch_details(val, total_epochs, print_json, no_header, diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index c2613ba99..0adfe03e7 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -286,6 +286,9 @@ class Configuration: self._args_to_config(config, argname='print_json', logstring='Parameter --print-json detected ...') + self._args_to_config(config, argname='print_table', + logstring='Parameter --print-table detected: {}') + self._args_to_config(config, argname='hyperopt_jobs', logstring='Parameter -j/--job-workers detected: {}') diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index ff6e7f3bc..72b3516c7 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -20,7 +20,8 @@ from colorama import Fore, Style from colorama import init as colorama_init from joblib import (Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects) -from pandas import DataFrame +from pandas import DataFrame, json_normalize, isna +from tabulate import tabulate from freqtrade.data.history import get_timerange, trim_dataframe from freqtrade.exceptions import OperationalException @@ -295,6 +296,50 @@ class Hyperopt: f"{results['results_explanation']} " + f"Objective: {results['loss']:.5f}") + @staticmethod + def print_result_table(config: dict, results: list, total_epochs: int, highlight_best: bool, + print_colorized: bool) -> None: + """ + Log result table + """ + if not results: + return + + trials = json_normalize(results, max_level=1) + trials = trials[['is_best', 'current_epoch', + 'results_metrics.trade_count', 'results_metrics.avg_profit', + 'results_metrics.total_profit', 'results_metrics.profit', + 'results_metrics.duration', 'loss']] + trials.columns = ['Best', 'Epoch', 'Trades', 'Avg profit', 'Total profit', + 'Profit', 'Avg duration', 'Objective'] + + trials['Best'] = trials['Best'].apply(lambda x: '*' if x else '') + trials['Objective'] = trials['Objective'].astype(str) + + if print_colorized: + for i in range(len(trials)): + if trials.loc[i]['Total profit'] > 0: + trials.at[i, 'Best'] = Fore.GREEN + trials.loc[i]['Best'] + trials.at[i, 'Objective'] = "{}{}".format(trials.loc[i]['Objective'], + Fore.RESET) + if '*' in trials.loc[i]['Best'] and highlight_best: + trials.at[i, 'Best'] = Style.BRIGHT + trials.loc[i]['Best'] + trials.at[i, 'Objective'] = "{}{}".format(trials.loc[i]['Objective'], + Style.RESET_ALL) + + trials['Epoch'] = trials['Epoch'].apply( + lambda x: "{}/{}".format(x, total_epochs)) + trials['Avg profit'] = trials['Avg profit'].apply( + lambda x: '{:,.2f}%'.format(x) if not isna(x) else x) + trials['Profit'] = trials['Profit'].apply( + lambda x: '{:,.2f}%'.format(x) if not isna(x) else x) + trials['Total profit'] = trials['Total profit'].apply( + lambda x: '{: 11.8f} '.format(x) + config['stake_currency'] if not isna(x) else x) + trials['Avg duration'] = trials['Avg duration'].apply( + lambda x: '{:,.1f}m'.format(x) if not isna(x) else x) + + print(tabulate(trials.to_dict(orient='list'), headers='keys', tablefmt='psql')) + def has_space(self, space: str) -> bool: """ Tell if the space value is contained in the configuration diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index ee1db5db5..9ecd990ec 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -893,6 +893,22 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): assert all(x not in captured.out for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 7/12", " 8/12" " 9/12", " 10/12", " 11/12", " 12/12"]) + args = [ + "hyperopt-list", + "--profitable", + "--no-details", + "--print-table", + "--max-trades", "20" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 2/12", " 10/12"]) + assert all(x not in captured.out + for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", + " 11/12", " 12/12"]) def test_hyperopt_show(mocker, capsys, hyperopt_results): From 585545405dea4d34bc1ce6d8296ceb38861a7b85 Mon Sep 17 00:00:00 2001 From: Fredrik Rydin Date: Wed, 19 Feb 2020 00:51:44 +0100 Subject: [PATCH 1772/3421] Changed tests --- tests/commands/test_commands.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 9ecd990ec..9c233019c 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -895,20 +895,20 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): " 9/12", " 10/12", " 11/12", " 12/12"]) args = [ "hyperopt-list", - "--profitable", "--no-details", "--print-table", - "--max-trades", "20" + "--min-trades", "100", + "--print-json" ] pargs = get_args(args) pargs['config'] = None start_hyperopt_list(pargs) captured = capsys.readouterr() assert all(x in captured.out - for x in [" 2/12", " 10/12"]) + for x in [" 3/12", " 7/12", " 9/12", " 11/12"]) assert all(x not in captured.out - for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", - " 11/12", " 12/12"]) + for x in [" 1/12", " 2/12", " 4/12", " 5/12", " 6/12", " 8/12", " 10/12" + " 12/12"]) def test_hyperopt_show(mocker, capsys, hyperopt_results): From df26c357d293f69e57cffc4de60284776d183026 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 19 Feb 2020 01:31:25 +0100 Subject: [PATCH 1773/3421] doc updates --- docs/bot-usage.md | 12 +++++++----- docs/hyperopt.md | 14 ++++++++------ freqtrade/commands/cli_options.py | 3 ++- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 56e6008a1..e0d96a8c2 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -270,7 +270,7 @@ Check the corresponding [Data Downloading](data-download.md) section for more de ## Hyperopt commands To optimize your strategy, you can use hyperopt parameter hyperoptimization -to find optimal parameter values for your stategy. +to find optimal parameter values for your strategy. ``` usage: freqtrade hyperopt [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] @@ -318,7 +318,7 @@ optional arguments: --print-all Print all results, not only the best ones. --no-color Disable colorization of hyperopt results. May be useful if you are redirecting output to a file. - --print-json Print best result detailization in JSON format. + --print-json Print best results in JSON format. -j JOBS, --job-workers JOBS The number of concurrently running jobs for hyperoptimization (hyperopt worker processes). If -1 @@ -336,9 +336,11 @@ optional arguments: class (IHyperOptLoss). Different functions can generate completely different results, since the target for optimization is different. Built-in - Hyperopt-loss-functions are: DefaultHyperOptLoss, - OnlyProfitHyperOptLoss, SharpeHyperOptLoss, - SharpeHyperOptLossDaily (default: `DefaultHyperOptLoss`). + Hyperopt-loss-functions are: + DefaultHyperOptLoss, OnlyProfitHyperOptLoss, + SharpeHyperOptLoss, SharpeHyperOptLossDaily, + SortinoHyperOptLoss, SortinoHyperOptLossDaily. + (default: `DefaultHyperOptLoss`). Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 3e10f66da..3fb7ce7ba 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -81,11 +81,11 @@ There are two places you need to change in your hyperopt file to add a new buy h There you have two different types of indicators: 1. `guards` and 2. `triggers`. 1. Guards are conditions like "never buy if ADX < 10", or never buy if current price is over EMA10. -2. Triggers are ones that actually trigger buy in specific moment, like "buy when EMA5 crosses over EMA10" or "buy when close price touches lower bollinger band". +2. Triggers are ones that actually trigger buy in specific moment, like "buy when EMA5 crosses over EMA10" or "buy when close price touches lower Bollinger band". Hyperoptimization will, for each eval round, pick one trigger and possibly multiple guards. The constructed strategy will be something like -"*buy exactly when close price touches lower bollinger band, BUT only if +"*buy exactly when close price touches lower Bollinger band, BUT only if ADX > 10*". If you have updated the buy strategy, i.e. changed the contents of @@ -172,7 +172,7 @@ So let's write the buy strategy using these values: Hyperopting will now call this `populate_buy_trend` as many times you ask it (`epochs`) with different value combinations. It will then use the given historical data and make buys based on the buy signals generated with the above function and based on the results -it will end with telling you which paramter combination produced the best profits. +it will end with telling you which parameter combination produced the best profits. The above setup expects to find ADX, RSI and Bollinger Bands in the populated indicators. When you want to test an indicator that isn't used by the bot currently, remember to @@ -191,8 +191,10 @@ Currently, the following loss functions are builtin: * `DefaultHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function) * `OnlyProfitHyperOptLoss` (which takes only amount of profit into consideration) -* `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on the trade returns) -* `SharpeHyperOptLossDaily` (optimizes Sharpe Ratio calculated on daily trade returns) +* `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on trade returns relative to **upside** standard deviation) +* `SharpeHyperOptLossDaily` (optimizes Sharpe Ratio calculated on **daily** trade returns relative to **upside** standard deviation) +* `SortinoHyperOptLoss` (optimizes Sortino Ratio calculated on trade returns relative to **downside** standard deviation) +* `SortinoHyperOptLossDaily` (optimizes Sortino Ratio calculated on **daily** trade returns relative to **downside** standard deviation) Creation of a custom loss function is covered in the [Advanced Hyperopt](advanced-hyperopt.md) part of the documentation. @@ -272,7 +274,7 @@ In some situations, you may need to run Hyperopt (and Backtesting) with the By default, hyperopt emulates the behavior of the Freqtrade Live Run/Dry Run, where only one open trade is allowed for every traded pair. The total number of trades open for all pairs is also limited by the `max_open_trades` setting. During Hyperopt/Backtesting this may lead to -some potential trades to be hidden (or masked) by previosly open trades. +some potential trades to be hidden (or masked) by previously open trades. The `--eps`/`--enable-position-stacking` argument allows emulation of buying the same pair multiple times, while `--dmmp`/`--disable-max-market-positions` disables applying `max_open_trades` diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 6d8d13129..5faff1a97 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -256,7 +256,8 @@ AVAILABLE_CLI_OPTIONS = { help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). ' 'Different functions can generate completely different results, ' 'since the target for optimization is different. Built-in Hyperopt-loss-functions are: ' - 'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss, SharpeHyperOptLossDaily.' + 'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss, SharpeHyperOptLossDaily, ' + 'SortinoHyperOptLoss, SortinoHyperOptLossDaily.' '(default: `%(default)s`).', metavar='NAME', default=constants.DEFAULT_HYPEROPT_LOSS, From 41b4fa3b7f93018a5c01042b8aa8734108e57407 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 19 Feb 2020 02:59:51 +0100 Subject: [PATCH 1774/3421] fixed two more typos --- docs/hyperopt.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index b471f849e..1f9907b83 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -31,9 +31,9 @@ This will create a new hyperopt file from a template, which will be located unde Depending on the space you want to optimize, only some of the below are required: * fill `buy_strategy_generator` - for buy signal optimization -* fill `indicator_space` - for buy signal optimzation +* fill `indicator_space` - for buy signal optimization * fill `sell_strategy_generator` - for sell signal optimization -* fill `sell_indicator_space` - for sell signal optimzation +* fill `sell_indicator_space` - for sell signal optimization !!! Note `populate_indicators` needs to create all indicators any of thee spaces may use, otherwise hyperopt will not work. From 09d89fbfb39b5aa5f75a589b82bdba11800656b0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 19 Feb 2020 07:15:55 +0100 Subject: [PATCH 1775/3421] Fix last test --- tests/optimize/test_backtesting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index bba15c156..9cfd662c1 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -759,7 +759,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): 'backtesting', '--config', 'config.json', '--datadir', str(testdatadir), - '--strategy-path', str(Path(__file__).parents[2] / 'freqtrade/templates'), + '--strategy-path', str(Path(__file__).parents[1] / 'strategy/strats'), '--ticker-interval', '1m', '--timerange', '1510694220-1510700340', '--enable-position-stacking', From 882d0a59330d81c65ca79bc93270247d9cd439ae Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 19 Feb 2020 12:54:59 +0100 Subject: [PATCH 1776/3421] implement documentation feedback after review --- docs/data-download.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/data-download.md b/docs/data-download.md index f747123d0..a01aaf4f6 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -52,8 +52,8 @@ Common arguments: ### Data format -Freqtrade currently supports 2 dataformats, `json` and `jsongz`, a zipped version of json files. -By default, OHLCV data is stored as json data, while trades data is stored as `jsongz` data. +Freqtrade currently supports 2 dataformats, `json` (plain "text" json files) and `jsongz` (a gzipped version of json files). +By default, OHLCV data is stored as `json` data, while trades data is stored as `jsongz` data. This can be changed via the `--data-format` and `--data-format-trades` parameters respectivly. @@ -105,8 +105,8 @@ Common arguments: ##### Example converting data -The following command will convert all Candle data available in `~/.freqtrade/data/binance` from json to jsongz, saving diskspace in the process. -It'll also remove source files (`--erase` parameter). +The following command will convert all ohlcv (candle) data available in `~/.freqtrade/data/binance` from json to jsongz, saving diskspace in the process. +It'll also remove original json data files (`--erase` parameter). ``` bash freqtrade convert-data --format-from json --format-to jsongz --data-dir ~/.freqtrade/data/binance -t 5m 15m --erase @@ -151,8 +151,8 @@ Common arguments: ##### Example converting trades -The following command will convert all available trade-data in `~/.freqtrade/data/kraken` from json to jsongz, saving diskspace in the process. -It'll also remove source files (`--erase` parameter). +The following command will convert all available trade-data in `~/.freqtrade/data/kraken` from jsongz to json. +It'll also remove original jsongz data files (`--erase` parameter). ``` bash freqtrade convert-trade-data --format-from jsongz --format-to json --data-dir ~/.freqtrade/data/kraken --erase From 29b369c65ed034f8dadbf6e237a0cefbeb11b7f4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 19 Feb 2020 14:53:54 +0100 Subject: [PATCH 1777/3421] Rename cli argument --- docs/data-download.md | 6 +++--- freqtrade/commands/cli_options.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data-download.md b/docs/data-download.md index a01aaf4f6..76e22f4ea 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -18,7 +18,7 @@ Otherwise `--exchange` becomes mandatory. usage: freqtrade download-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-p PAIRS [PAIRS ...]] [--pairs-file FILE] [--days INT] [--dl-trades] [--exchange EXCHANGE] [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...]] - [--erase] [--data-format {json,jsongz}] [--data-format-trades {json,jsongz}] + [--erase] [--data-format-ohlcv {json,jsongz}] [--data-format-trades {json,jsongz}] optional arguments: -h, --help show this help message and exit @@ -32,7 +32,7 @@ optional arguments: -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...] Specify which tickers to download. Space-separated list. Default: `1m 5m`. --erase Clean all existing data for the selected exchange/pairs/timeframes. - --data-format {json,jsongz} + --data-format-ohlcv {json,jsongz} Storage format for downloaded ohlcv data. (default: `json`). --data-format-trades {json,jsongz} Storage format for downloaded trades data. (default: `jsongz`). @@ -55,7 +55,7 @@ Common arguments: Freqtrade currently supports 2 dataformats, `json` (plain "text" json files) and `jsongz` (a gzipped version of json files). By default, OHLCV data is stored as `json` data, while trades data is stored as `jsongz` data. -This can be changed via the `--data-format` and `--data-format-trades` parameters respectivly. +This can be changed via the `--data-format-ohlcv` and `--data-format-trades` parameters respectivly. If the default dataformat has been changed during download, then the keys `dataformat_ohlcv` and `dataformat_trades` in the configuration file need to be adjusted to the selected dataformat as well. diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 58cb1e83b..a8d4bc198 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -346,7 +346,7 @@ AVAILABLE_CLI_OPTIONS = { required=True, ), "dataformat_ohlcv": Arg( - '--data-format', + '--data-format-ohlcv', help='Storage format for downloaded ohlcv data. (default: `%(default)s`).', choices=constants.AVAILABLE_DATAHANDLERS, default='json' From d22384c7fba439a5cbe01099dd95844c59934474 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 19 Feb 2020 19:21:48 +0100 Subject: [PATCH 1778/3421] Full support for kraken stoploss --- freqtrade/persistence.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 5b0046091..fa041abc3 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -318,10 +318,10 @@ class Trade(_DECL_BASE): elif order_type in ('market', 'limit') and order['side'] == 'sell': self.close(order['price']) logger.info('%s_SELL has been fulfilled for %s.', order_type.upper(), self) - elif order_type == 'stop_loss_limit': + elif order_type in ('stop_loss_limit', 'stop-loss'): self.stoploss_order_id = None self.close_rate_requested = self.stop_loss - logger.info('STOP_LOSS_LIMIT is hit for %s.', self) + logger.info('%s is hit for %s.', order_type.upper(), self) self.close(order['average']) else: raise ValueError(f'Unknown order type: {order_type}') From a7342bd9106ac1028fc12b3391c2ab633b9b3919 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 19 Feb 2020 19:42:04 +0100 Subject: [PATCH 1779/3421] Fix non-existing strategy loading --- tests/optimize/test_backtesting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 9cfd662c1..337194ab1 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -766,7 +766,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): '--disable-max-market-positions', '--strategy-list', 'DefaultStrategy', - 'SampleStrategy', + 'TestStrategyLegacy', ] args = get_args(args) start_backtesting(args) @@ -789,7 +789,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): 'up to 2017-11-14T22:58:00+00:00 (0 days)..', 'Parameter --enable-position-stacking detected ...', 'Running backtesting for Strategy DefaultStrategy', - 'Running backtesting for Strategy SampleStrategy', + 'Running backtesting for Strategy TestStrategyLegacy', ] for line in exists: From 5adbe3c2d3ac75eb20b08b93d8902cf3ab25a643 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 19 Feb 2020 19:50:01 +0100 Subject: [PATCH 1780/3421] initial search path is optional ... --- freqtrade/resolvers/iresolver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 764759289..52d944f2c 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -22,7 +22,7 @@ class IResolver: object_type: Type[Any] object_type_str: str user_subdir: Optional[str] = None - initial_search_path: Path + initial_search_path: Optional[Path] @classmethod def build_search_paths(cls, config: Dict[str, Any], user_subdir: Optional[str] = None, From 09a1c9eed6b629fe9f4502cbcf805b8e78b8da13 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 19 Feb 2020 22:25:34 +0100 Subject: [PATCH 1781/3421] fixed docs description of hyperopts --- docs/hyperopt.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 1f9907b83..9bc5888ce 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -191,8 +191,8 @@ Currently, the following loss functions are builtin: * `DefaultHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function) * `OnlyProfitHyperOptLoss` (which takes only amount of profit into consideration) -* `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on trade returns relative to **upside** standard deviation) -* `SharpeHyperOptLossDaily` (optimizes Sharpe Ratio calculated on **daily** trade returns relative to **upside** standard deviation) +* `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on trade returns relative to standard deviation) +* `SharpeHyperOptLossDaily` (optimizes Sharpe Ratio calculated on **daily** trade returns relative to standard deviation) * `SortinoHyperOptLoss` (optimizes Sortino Ratio calculated on trade returns relative to **downside** standard deviation) * `SortinoHyperOptLossDaily` (optimizes Sortino Ratio calculated on **daily** trade returns relative to **downside** standard deviation) From bca5f804a87d2b2e1556711a1f96d35161d279a2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 20 Feb 2020 08:17:24 +0300 Subject: [PATCH 1782/3421] Move divider log message --- freqtrade/worker.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 64cc97026..509ba018e 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -109,14 +109,14 @@ class Worker: """ start = time.time() result = func(*args, **kwargs) + logger.debug("========================================") end = time.time() duration = max(min_secs - (end - start), 0.0) - logger.debug('Throttling %s for %.2f seconds', func.__name__, duration) + logger.debug(f"Throttling {func.__name__} for {duration:.2f} seconds") time.sleep(duration) return result def _process(self) -> None: - logger.debug("========================================") try: self.freqtrade.process() except TemporaryError as error: From 56a06cbd331daa07216b77094d6b98ce0a651439 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 20 Feb 2020 08:19:22 +0300 Subject: [PATCH 1783/3421] Update strings to f-strings --- freqtrade/worker.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 509ba018e..b3b3b712a 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -26,7 +26,7 @@ class Worker: """ Init all variables and objects the bot needs to work """ - logger.info('Starting worker %s', __version__) + logger.info(f"Starting worker {__version__}") self._args = args self._config = config @@ -77,7 +77,7 @@ class Worker: if state != old_state: self.freqtrade.notify_status(f'{state.name.lower()}') - logger.info('Changing state to: %s', state.name) + logger.info(f"Changing state to: {state.name}") if state == State.RUNNING: self.freqtrade.startup() From 10668bb2490c2ed56f47f5536fdf0892c2173648 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 20 Feb 2020 06:22:36 +0100 Subject: [PATCH 1784/3421] Update tests/strategy/test_strategy.py Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- tests/strategy/test_strategy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 27bbb2d3b..13ca68bf0 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -42,7 +42,7 @@ def test_search_all_strategies_with_failed(): strategies = StrategyResolver.search_all_objects(directory, enum_failed=True) assert isinstance(strategies, list) assert len(strategies) == 3 - # with enum_failed=True search_all_objects() shall find 3 good strategies + # with enum_failed=True search_all_objects() shall find 2 good strategies # and 1 which fails to load assert len([x for x in strategies if x['class'] is not None]) == 2 assert len([x for x in strategies if x['class'] is None]) == 1 From 78ee36a8c6e8d17289059be945324c8166d514dd Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 20 Feb 2020 15:18:26 +0300 Subject: [PATCH 1785/3421] Use _throttle() in stopped state instead of sleep() --- freqtrade/worker.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index b3b3b712a..c397beaab 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -87,7 +87,7 @@ class Worker: logger.debug("sd_notify: WATCHDOG=1\\nSTATUS=State: STOPPED.") self._sd_notify.notify("WATCHDOG=1\nSTATUS=State: STOPPED.") - time.sleep(throttle_secs) + self._throttle(func=self._process_stopped, min_secs=throttle_secs) elif state == State.RUNNING: # Ping systemd watchdog before throttling @@ -95,7 +95,7 @@ class Worker: logger.debug("sd_notify: WATCHDOG=1\\nSTATUS=State: RUNNING.") self._sd_notify.notify("WATCHDOG=1\nSTATUS=State: RUNNING.") - self._throttle(func=self._process, min_secs=throttle_secs) + self._throttle(func=self._process_running, min_secs=throttle_secs) return state @@ -116,7 +116,11 @@ class Worker: time.sleep(duration) return result - def _process(self) -> None: + def _process_stopped(self) -> None: + # Maybe do here something in the future... + pass + + def _process_running(self) -> None: try: self.freqtrade.process() except TemporaryError as error: From 945ff09e27c31d5953231f6ecfa661434d6fb4fb Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 20 Feb 2020 14:19:24 +0100 Subject: [PATCH 1786/3421] Use correct strategy path for docker testing --- build_helpers/publish_docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_helpers/publish_docker.sh b/build_helpers/publish_docker.sh index 17d5230c9..013644563 100755 --- a/build_helpers/publish_docker.sh +++ b/build_helpers/publish_docker.sh @@ -23,7 +23,7 @@ if [ $? -ne 0 ]; then fi # Run backtest -docker run --rm -v $(pwd)/config.json.example:/freqtrade/config.json:ro -v $(pwd)/tests:/tests freqtrade:${TAG} backtesting --datadir /tests/testdata --strategy DefaultStrategy +docker run --rm -v $(pwd)/config.json.example:/freqtrade/config.json:ro -v $(pwd)/tests:/tests freqtrade:${TAG} backtesting --datadir /tests/testdata --strategy-path /tests/strategy/strats/ --strategy DefaultStrategy if [ $? -ne 0 ]; then echo "failed running backtest" From e7b12704dec4c8265e5adf51dfb3d7f36367adae Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Thu, 20 Feb 2020 19:12:55 +0100 Subject: [PATCH 1787/3421] Added test for details --- tests/commands/test_commands.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 9c233019c..dfaa936ed 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -778,6 +778,19 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): assert all(x not in captured.out for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", " 11/12", " 12/12"]) + args = [ + "hyperopt-list", + "--profitable" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 2/12", " 10/12", "Best result:", "Buy hyperspace params", "Sell hyperspace params", "ROI table", "Stoploss"]) + assert all(x not in captured.out + for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", + " 11/12", " 12/12"]) args = [ "hyperopt-list", "--no-details", From 09226fd5d5e378e9f7ee11382528ec6c06ac7571 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Thu, 20 Feb 2020 19:18:42 +0100 Subject: [PATCH 1788/3421] PEP8 correction --- tests/commands/test_commands.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index dfaa936ed..ceae6f372 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -787,7 +787,8 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): start_hyperopt_list(pargs) captured = capsys.readouterr() assert all(x in captured.out - for x in [" 2/12", " 10/12", "Best result:", "Buy hyperspace params", "Sell hyperspace params", "ROI table", "Stoploss"]) + for x in [" 2/12", " 10/12", "Best result:", "Buy hyperspace params", + "Sell hyperspace params", "ROI table", "Stoploss"]) assert all(x not in captured.out for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", " 11/12", " 12/12"]) From 04aa74e5add9425f73e2485a98a319c32b3ca2ad Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 21 Feb 2020 03:37:38 +0300 Subject: [PATCH 1789/3421] Better throttling --- freqtrade/worker.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index c397beaab..40bfb54d8 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -108,12 +108,13 @@ class Worker: :return: Any """ start = time.time() - result = func(*args, **kwargs) logger.debug("========================================") - end = time.time() - duration = max(min_secs - (end - start), 0.0) - logger.debug(f"Throttling {func.__name__} for {duration:.2f} seconds") - time.sleep(duration) + result = func(*args, **kwargs) + time_passed = time.time() - start + sleep_duration = max(min_secs - time_passed, 0.0) + logger.debug(f"Throttling with '{func.__name__}()': sleep for {sleep_duration:.2f} s, " + f"last iteration took {time_passed:.2f} s.") + time.sleep(sleep_duration) return result def _process_stopped(self) -> None: From e0800b7c29fb0fe3b53afe2fa6732da7f37e06c1 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 21 Feb 2020 03:52:14 +0300 Subject: [PATCH 1790/3421] Make throttle start time an worker object attribute --- freqtrade/worker.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 40bfb54d8..dc8f9109f 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -32,6 +32,8 @@ class Worker: self._config = config self._init(False) + self.last_throttle_start_time: float = None + # Tell systemd that we completed initialization phase if self._sd_notify: logger.debug("sd_notify: READY=1") @@ -107,10 +109,10 @@ class Worker: :param min_secs: minimum execution time in seconds :return: Any """ - start = time.time() + self.last_throttle_start_time = time.time() logger.debug("========================================") result = func(*args, **kwargs) - time_passed = time.time() - start + time_passed = time.time() - self.last_throttle_start_time sleep_duration = max(min_secs - time_passed, 0.0) logger.debug(f"Throttling with '{func.__name__}()': sleep for {sleep_duration:.2f} s, " f"last iteration took {time_passed:.2f} s.") From 881f602f91b6afa5607f44eed8ad06165951ebe6 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 21 Feb 2020 04:00:23 +0300 Subject: [PATCH 1791/3421] Adjust methods params --- freqtrade/worker.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index dc8f9109f..088526d85 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -32,7 +32,7 @@ class Worker: self._config = config self._init(False) - self.last_throttle_start_time: float = None + self.last_throttle_start_time: Optional[float] = None # Tell systemd that we completed initialization phase if self._sd_notify: @@ -65,15 +65,13 @@ class Worker: if state == State.RELOAD_CONF: self._reconfigure() - def _worker(self, old_state: Optional[State], throttle_secs: Optional[float] = None) -> State: + def _worker(self, old_state: Optional[State]) -> State: """ Trading routine that must be run at each loop :param old_state: the previous service state from the previous call :return: current service state """ state = self.freqtrade.state - if throttle_secs is None: - throttle_secs = self._throttle_secs # Log state transition if state != old_state: @@ -89,7 +87,7 @@ class Worker: logger.debug("sd_notify: WATCHDOG=1\\nSTATUS=State: STOPPED.") self._sd_notify.notify("WATCHDOG=1\nSTATUS=State: STOPPED.") - self._throttle(func=self._process_stopped, min_secs=throttle_secs) + self._throttle(func=self._process_stopped, throttle_secs=self._throttle_secs) elif state == State.RUNNING: # Ping systemd watchdog before throttling @@ -97,23 +95,23 @@ class Worker: logger.debug("sd_notify: WATCHDOG=1\\nSTATUS=State: RUNNING.") self._sd_notify.notify("WATCHDOG=1\nSTATUS=State: RUNNING.") - self._throttle(func=self._process_running, min_secs=throttle_secs) + self._throttle(func=self._process_running, throttle_secs=self._throttle_secs) return state - def _throttle(self, func: Callable[..., Any], min_secs: float, *args, **kwargs) -> Any: + def _throttle(self, func: Callable[..., Any], throttle_secs: float, *args, **kwargs) -> Any: """ Throttles the given callable that it takes at least `min_secs` to finish execution. :param func: Any callable - :param min_secs: minimum execution time in seconds - :return: Any + :param throttle_secs: throttling interation execution time limit in seconds + :return: Any (result of execution of func) """ self.last_throttle_start_time = time.time() logger.debug("========================================") result = func(*args, **kwargs) time_passed = time.time() - self.last_throttle_start_time - sleep_duration = max(min_secs - time_passed, 0.0) + sleep_duration = max(throttle_secs - time_passed, 0.0) logger.debug(f"Throttling with '{func.__name__}()': sleep for {sleep_duration:.2f} s, " f"last iteration took {time_passed:.2f} s.") time.sleep(sleep_duration) From 269a669af82b586e69d061ed5866b8c56af173d0 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 21 Feb 2020 05:07:31 +0300 Subject: [PATCH 1792/3421] Move heartbeat to worker --- freqtrade/freqtradebot.py | 10 ---------- freqtrade/worker.py | 16 ++++++++++++---- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 127586437..00d5c369a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -6,7 +6,6 @@ import logging import traceback from datetime import datetime from math import isclose -from os import getpid from threading import Lock from typing import Any, Dict, List, Optional, Tuple @@ -52,10 +51,6 @@ class FreqtradeBot: # Init objects self.config = config - self._heartbeat_msg = 0 - - self.heartbeat_interval = self.config.get('internals', {}).get('heartbeat_interval', 60) - self.strategy: IStrategy = StrategyResolver.load_strategy(self.config) # Check config consistency here since strategies can set certain options @@ -159,11 +154,6 @@ class FreqtradeBot: self.check_handle_timedout() Trade.session.flush() - if (self.heartbeat_interval - and (arrow.utcnow().timestamp - self._heartbeat_msg > self.heartbeat_interval)): - logger.info(f"Bot heartbeat. PID={getpid()}") - self._heartbeat_msg = arrow.utcnow().timestamp - def _refresh_whitelist(self, trades: List[Trade] = []) -> List[str]: """ Refresh whitelist from pairlist or edge and extend it with trades. diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 088526d85..adce7ddda 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -4,8 +4,10 @@ Main Freqtrade worker class. import logging import time import traceback +from os import getpid from typing import Any, Callable, Dict, Optional +import arrow import sdnotify from freqtrade import __version__, constants @@ -33,6 +35,7 @@ class Worker: self._init(False) self.last_throttle_start_time: Optional[float] = None + self._heartbeat_msg = 0 # Tell systemd that we completed initialization phase if self._sd_notify: @@ -50,10 +53,10 @@ class Worker: # Init the instance of the bot self.freqtrade = FreqtradeBot(self._config) - self._throttle_secs = self._config.get('internals', {}).get( - 'process_throttle_secs', - constants.PROCESS_THROTTLE_SECS - ) + internals_config = self._config.get('internals', {}) + self._throttle_secs = internals_config.get('process_throttle_secs', + constants.PROCESS_THROTTLE_SECS) + self._heartbeat_interval = internals_config.get('heartbeat_interval', 60) self._sd_notify = sdnotify.SystemdNotifier() if \ self._config.get('internals', {}).get('sd_notify', False) else None @@ -97,6 +100,11 @@ class Worker: self._throttle(func=self._process_running, throttle_secs=self._throttle_secs) + if (self._heartbeat_interval + and (arrow.utcnow().timestamp - self._heartbeat_msg > self._heartbeat_interval)): + logger.info(f"Bot heartbeat. PID={getpid()}") + self._heartbeat_msg = arrow.utcnow().timestamp + return state def _throttle(self, func: Callable[..., Any], throttle_secs: float, *args, **kwargs) -> Any: From d2e20d86bb8808ac11427b08b9d2c3b1d27723bd Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 21 Feb 2020 05:31:21 +0300 Subject: [PATCH 1793/3421] Align heartbeat to throttling logging --- freqtrade/worker.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index adce7ddda..523b9038f 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -7,7 +7,6 @@ import traceback from os import getpid from typing import Any, Callable, Dict, Optional -import arrow import sdnotify from freqtrade import __version__, constants @@ -34,8 +33,8 @@ class Worker: self._config = config self._init(False) - self.last_throttle_start_time: Optional[float] = None - self._heartbeat_msg = 0 + self.last_throttle_start_time: float = 0 + self._heartbeat_msg: float = 0 # Tell systemd that we completed initialization phase if self._sd_notify: @@ -100,10 +99,11 @@ class Worker: self._throttle(func=self._process_running, throttle_secs=self._throttle_secs) - if (self._heartbeat_interval - and (arrow.utcnow().timestamp - self._heartbeat_msg > self._heartbeat_interval)): - logger.info(f"Bot heartbeat. PID={getpid()}") - self._heartbeat_msg = arrow.utcnow().timestamp + if self._heartbeat_interval: + now = time.time() + if (now - self._heartbeat_msg) > self._heartbeat_interval: + logger.info(f"Bot heartbeat. PID={getpid()}") + self._heartbeat_msg = now return state From d9ecf3e4bfbdf2969c772ffb06e88ddecba4cf56 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 21 Feb 2020 12:26:32 +0300 Subject: [PATCH 1794/3421] Add version and state to heartbeat message --- freqtrade/worker.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 523b9038f..f4b9f275b 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -102,7 +102,8 @@ class Worker: if self._heartbeat_interval: now = time.time() if (now - self._heartbeat_msg) > self._heartbeat_interval: - logger.info(f"Bot heartbeat. PID={getpid()}") + logger.info(f"Bot heartbeat. PID={getpid()}, " + f"version='{__version__}', state='{state.name}'") self._heartbeat_msg = now return state From 8c1a9332215bc6dedc813188cae09b3a343e83e0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 21 Feb 2020 20:23:43 +0100 Subject: [PATCH 1795/3421] cancel_order should return a dict --- freqtrade/exchange/exchange.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index b3b347016..7fc2af308 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -894,9 +894,9 @@ class Exchange: until=until, from_id=from_id)) @retrier - def cancel_order(self, order_id: str, pair: str) -> None: + def cancel_order(self, order_id: str, pair: str) -> Dict: if self._config['dry_run']: - return + return {} try: return self._api.cancel_order(order_id, pair) From 6c01542fed34a71f44ae3b4aa75a0c8bce0b302f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 21 Feb 2020 20:27:13 +0100 Subject: [PATCH 1796/3421] Ad check_sell_timeout --- freqtrade/freqtradebot.py | 6 +++++- freqtrade/strategy/interface.py | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index f458f91d6..aa41c2f2a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -830,7 +830,11 @@ class FreqtradeBot: self.wallets.update() elif ((order['side'] == 'sell' and order['status'] == 'canceled') - or (self._check_timed_out('sell', order))): + or (self._check_timed_out('sell', order)) + or strategy_safe_wrapper(self.strategy.check_sell_timeout, + default_retval=False)(pair=trade.pair, + trade=trade, + order=order)): self.handle_timedout_limit_sell(trade, order) self.wallets.update() diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index de08b7cda..681d2ccfb 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -167,6 +167,24 @@ class IStrategy(ABC): """ return False + def check_sell_timeout(self, pair: str, trade: Trade, order: Dict, **kwargs) -> bool: + """ + Check sell timeout function callback. + This method can be used to override the sell-timeout. + It is called whenever a limit sell order has been created, + and is not yet fully filled. + Configuration options in `unfilledtimeout` will be verified before this, + so ensure to set these timeouts high enough. + + When not implemented by a strategy, this simply returns False. + :param pair: Pair the trade is for + :param trade: trade object. + :param order: Order dictionary as returned from CCXT. + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return bool: When True is returned, then the sell-order is cancelled. + """ + return False + def informative_pairs(self) -> List[Tuple[str, str]]: """ Define additional, informative pair/interval combinations to be cached from the exchange. From 135d9ddf7ac4138ebd3b0650cf25655e67ecba32 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 21 Feb 2020 20:35:13 +0100 Subject: [PATCH 1797/3421] Fix test due to changed dry-run cancel order --- tests/exchange/test_exchange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 8b2e439c3..acef073f1 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1634,7 +1634,7 @@ def test_get_historic_trades_notsupported(default_conf, mocker, caplog, exchange def test_cancel_order_dry_run(default_conf, mocker, exchange_name): default_conf['dry_run'] = True exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) - assert exchange.cancel_order(order_id='123', pair='TKN/BTC') is None + assert exchange.cancel_order(order_id='123', pair='TKN/BTC') == {} # Ensure that if not dry_run, we should call API From bc30162a31b99078a3866659377210b084fccbbe Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 21 Feb 2020 20:54:21 +0100 Subject: [PATCH 1798/3421] Add some documentation --- docs/strategy-customization.md | 3 +-- mkdocs.yml | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 07833da34..5746cc613 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -1,7 +1,6 @@ # Strategy Customization -This page explains where to customize your strategies, and add new -indicators. +This page explains where to customize your strategies, and add new indicators. ## Install a custom strategy file diff --git a/mkdocs.yml b/mkdocs.yml index d53687c64..528b77eb5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -24,6 +24,7 @@ nav: - Plotting: plotting.md - SQL Cheatsheet: sql_cheatsheet.md - Advanced Post-installation Tasks: advanced-setup.md + - Advanced Strategy: strategy-advanced.md - Advanced Hyperopt: advanced-hyperopt.md - Sandbox Testing: sandbox-testing.md - Deprecated Features: deprecated.md From 63502ed976a9cd5ffc75d09b8b5295fc34dca1e4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Feb 2020 08:14:08 +0100 Subject: [PATCH 1799/3421] Add new advanced-strategy documentation file --- docs/strategy-advanced.md | 59 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 docs/strategy-advanced.md diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md new file mode 100644 index 000000000..bdb380276 --- /dev/null +++ b/docs/strategy-advanced.md @@ -0,0 +1,59 @@ +# Advanced Strategies + +This page explains some advanced concepts available for strategies. +If you're just getting started, please be familiar with the methods described in the [Strategy Customization](strategy-customization.md) documentation first. + +## Custom order timeout rules + +Simple, timebased order-timeouts can be configured either via strategy or in the configuration in the `unfilledtimeout` section. + +However, freqtrade also offers a custom callback for both ordertypes, which allows you to decide based on custom criteria if a order did time out or not. + +!!! Note: + Unfilled order timeouts are not relevant during backtesting or hyperopt, and are only relevant during real (live) trading. Therefore these methods are only called in these circumstances. + +### Custom order timeout example + +A simple example, which applies different unfilled-timeouts depending on the price of the asset can be seen below. +It applies a tight timeout for higher priced assets, while allowing more time to fill on cheap coins. + +The function must return either `True` (cancel order) or `False` (keep order alive). + +``` python +from datetime import datetime, timestamp +from freqtrade.persistence import Trade + +class Awesomestrategy(IStrategy): + + # ... populate_* methods + + # Set unfilledtimeout to 25 hours, since our maximum timeout from below is 24 hours. + unfilledtimeout = { + 'buy': 60 * 25, + 'sell': 60 * 25 + } + + def check_buy_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool: + if trade.open_rate > 100 and trade.open_date < datetime.utcnow() - timedelta(minutes=5): + return True + elif trade.open_rate > 10 and trade.open_date < datetime.utcnow() - timedelta(minutes=3): + return True + elif trade.open_rate < 1 and trade.open_date < datetime.utcnow() - timedelta(hours=24): + return True + return True + + + def check_sell_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool: + if trade.open_rate > 100 and trade.open_date < datetime.utcnow() - timedelta(minutes=5): + return True + elif trade.open_rate > 10 and trade.open_date < datetime.utcnow() - timedelta(minutes=3): + return True + elif trade.open_rate < 1 and trade.open_date < datetime.utcnow() - timedelta(hours=24): + return True + return True +``` + +!!! Note: + For the above example, `unfilledtimeout` must be set to something bigger than 24h, otherwise that type of timeout will apply first. + + From f5b4a6d3d72fea870d912e6a1b28c47ccd3247dc Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Feb 2020 11:03:25 +0100 Subject: [PATCH 1800/3421] Remove fetch_ticker caching --- freqtrade/exchange/exchange.py | 35 +++++++++++---------------------- freqtrade/freqtradebot.py | 4 ++-- tests/exchange/test_exchange.py | 15 +++----------- tests/rpc/test_rpc.py | 6 ------ 4 files changed, 16 insertions(+), 44 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index b3b347016..e45238b07 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -66,8 +66,6 @@ class Exchange: self._config.update(config) - self._cached_ticker: Dict[str, Any] = {} - # Holds last candle refreshed time of each pair self._pairs_last_refresh_time: Dict[Tuple[str, str], int] = {} # Timestamp of last markets refresh @@ -591,28 +589,17 @@ class Exchange: raise OperationalException(e) from e @retrier - def fetch_ticker(self, pair: str, refresh: Optional[bool] = True) -> dict: - if refresh or pair not in self._cached_ticker.keys(): - try: - if pair not in self._api.markets or not self._api.markets[pair].get('active'): - raise DependencyException(f"Pair {pair} not available") - data = self._api.fetch_ticker(pair) - try: - self._cached_ticker[pair] = { - 'bid': float(data['bid']), - 'ask': float(data['ask']), - } - except KeyError: - logger.debug("Could not cache ticker data for %s", pair) - return data - except (ccxt.NetworkError, ccxt.ExchangeError) as e: - raise TemporaryError( - f'Could not load ticker due to {e.__class__.__name__}. Message: {e}') from e - except ccxt.BaseError as e: - raise OperationalException(e) from e - else: - logger.info("returning cached ticker-data for %s", pair) - return self._cached_ticker[pair] + def fetch_ticker(self, pair: str) -> dict: + try: + if pair not in self._api.markets or not self._api.markets[pair].get('active'): + raise DependencyException(f"Pair {pair} not available") + data = self._api.fetch_ticker(pair) + return data + except (ccxt.NetworkError, ccxt.ExchangeError) as e: + raise TemporaryError( + f'Could not load ticker due to {e.__class__.__name__}. Message: {e}') from e + except ccxt.BaseError as e: + raise OperationalException(e) from e def get_historic_ohlcv(self, pair: str, timeframe: str, since_ms: int) -> List: diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 127586437..032e3e8f7 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -253,7 +253,7 @@ class FreqtradeBot: else: if not tick: logger.info('Using Last Ask / Last Price') - ticker = self.exchange.fetch_ticker(pair, refresh) + ticker = self.exchange.fetch_ticker(pair) else: ticker = tick if ticker['ask'] < ticker['last']: @@ -631,7 +631,7 @@ class FreqtradeBot: rate = order_book['bids'][0][0] else: - rate = self.exchange.fetch_ticker(pair, refresh)['bid'] + rate = self.exchange.fetch_ticker(pair)['bid'] return rate def handle_trade(self, trade: Trade) -> bool: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 8b2e439c3..3830d0acb 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1121,25 +1121,16 @@ def test_fetch_ticker(default_conf, mocker, exchange_name): assert ticker['bid'] == 0.5 assert ticker['ask'] == 1 - assert 'ETH/BTC' in exchange._cached_ticker - assert exchange._cached_ticker['ETH/BTC']['bid'] == 0.5 - assert exchange._cached_ticker['ETH/BTC']['ask'] == 1 - - # Test caching - api_mock.fetch_ticker = MagicMock() - exchange.fetch_ticker(pair='ETH/BTC', refresh=False) - assert api_mock.fetch_ticker.call_count == 0 - ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, "fetch_ticker", "fetch_ticker", - pair='ETH/BTC', refresh=True) + pair='ETH/BTC') api_mock.fetch_ticker = MagicMock(return_value={}) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) - exchange.fetch_ticker(pair='ETH/BTC', refresh=True) + exchange.fetch_ticker(pair='ETH/BTC') with pytest.raises(DependencyException, match=r'Pair XRP/ETH not available'): - exchange.fetch_ticker(pair='XRP/ETH', refresh=True) + exchange.fetch_ticker(pair='XRP/ETH') @pytest.mark.parametrize("exchange_name", EXCHANGES) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index a35bfa0d6..2d1fa5b2d 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -67,8 +67,6 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) - # invalidate ticker cache - rpc._freqtrade.exchange._cached_ticker = {} results = rpc._rpc_trade_status() assert isnan(results[0]['current_profit']) assert isnan(results[0]['current_rate']) @@ -136,8 +134,6 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) - # invalidate ticker cache - rpc._freqtrade.exchange._cached_ticker = {} result, headers = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') assert 'instantly' == result[0][2] assert 'ETH/BTC' in result[0][1] @@ -262,8 +258,6 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, # Test non-available pair mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) - # invalidate ticker cache - rpc._freqtrade.exchange._cached_ticker = {} stats = rpc._rpc_trade_statistics(stake_currency, fiat_display_currency) assert stats['trade_count'] == 2 assert stats['first_trade_date'] == 'just now' From 97e6e5e9766c87bb728fe396f4f5119616eeda1a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Feb 2020 11:12:33 +0100 Subject: [PATCH 1801/3421] Implement caching in the correct place --- freqtrade/freqtradebot.py | 32 ++++++++++++++++++++++++++------ tests/rpc/test_rpc.py | 6 +++--- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 032e3e8f7..d9126370b 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -11,6 +11,7 @@ from threading import Lock from typing import Any, Dict, List, Optional, Tuple import arrow +from cachetools import TTLCache from requests.exceptions import RequestException from freqtrade import __version__, constants, persistence @@ -54,6 +55,9 @@ class FreqtradeBot: self._heartbeat_msg = 0 + self._sell_rate_cache = TTLCache(maxsize=100, ttl=5) + self._buy_rate_cache = TTLCache(maxsize=100, ttl=5) + self.heartbeat_interval = self.config.get('internals', {}).get('heartbeat_interval', 60) self.strategy: IStrategy = StrategyResolver.load_strategy(self.config) @@ -234,11 +238,19 @@ class FreqtradeBot: return trades_created - def get_buy_rate(self, pair: str, refresh: bool, tick: Dict = None) -> float: + def get_buy_rate(self, pair: str, refresh: bool) -> float: """ Calculates bid target between current ask price and last price + :param pair: Pair to get rate for + :param refresh: allow cached data :return: float: Price """ + if not refresh: + rate = self._sell_rate_cache.get(pair) + # Check if cache has been invalidated + if rate: + return rate + config_bid_strategy = self.config.get('bid_strategy', {}) if 'use_order_book' in config_bid_strategy and\ config_bid_strategy.get('use_order_book', False): @@ -251,11 +263,8 @@ class FreqtradeBot: logger.info('...top %s order book buy rate %0.8f', order_book_top, order_book_rate) used_rate = order_book_rate else: - if not tick: - logger.info('Using Last Ask / Last Price') - ticker = self.exchange.fetch_ticker(pair) - else: - ticker = tick + logger.info('Using Last Ask / Last Price') + ticker = self.exchange.fetch_ticker(pair) if ticker['ask'] < ticker['last']: ticker_rate = ticker['ask'] else: @@ -263,6 +272,8 @@ class FreqtradeBot: ticker_rate = ticker['ask'] + balance * (ticker['last'] - ticker['ask']) used_rate = ticker_rate + self._buy_rate_cache[pair] = used_rate + return used_rate def get_trade_stake_amount(self, pair: str) -> float: @@ -621,8 +632,16 @@ class FreqtradeBot: The orderbook portion is only used for rpc messaging, which would otherwise fail for BitMex (has no bid/ask in fetch_ticker) or remain static in any other case since it's not updating. + :param pair: Pair to get rate for + :param refresh: allow cached data :return: Bid rate """ + if not refresh: + rate = self._sell_rate_cache.get(pair) + # Check if cache has been invalidated + if rate: + return rate + config_ask_strategy = self.config.get('ask_strategy', {}) if config_ask_strategy.get('use_order_book', False): logger.debug('Using order book to get sell rate') @@ -632,6 +651,7 @@ class FreqtradeBot: else: rate = self.exchange.fetch_ticker(pair)['bid'] + self._sell_rate_cache[pair] = rate return rate def handle_trade(self, trade: Trade) -> bool: diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 2d1fa5b2d..40b2d6627 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -65,7 +65,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_order': '(limit buy rem=0.00000000)' } == results[0] - mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', + mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) results = rpc._rpc_trade_status() assert isnan(results[0]['current_profit']) @@ -132,7 +132,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: assert 'ETH/BTC' in result[0][1] assert '-0.59% (-0.09)' == result[0][3] - mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', + mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) result, headers = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') assert 'instantly' == result[0][2] @@ -256,7 +256,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, assert prec_satoshi(stats['best_rate'], 6.2) # Test non-available pair - mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', + mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) stats = rpc._rpc_trade_statistics(stake_currency, fiat_display_currency) assert stats['trade_count'] == 2 From 77ef3240cd17b932f499a19e7820e39818cf1aa9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Feb 2020 11:16:20 +0100 Subject: [PATCH 1802/3421] Implement log messages --- freqtrade/freqtradebot.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d9126370b..4b54b79e1 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -246,9 +246,10 @@ class FreqtradeBot: :return: float: Price """ if not refresh: - rate = self._sell_rate_cache.get(pair) + rate = self._buy_rate_cache.get(pair) # Check if cache has been invalidated if rate: + logger.info(f"Using cached buy rate for {pair}.") return rate config_bid_strategy = self.config.get('bid_strategy', {}) @@ -577,7 +578,7 @@ class FreqtradeBot: """ Sends rpc notification when a buy cancel occured. """ - current_rate = self.get_buy_rate(trade.pair, True) + current_rate = self.get_buy_rate(trade.pair, False) msg = { 'type': RPCMessageType.BUY_CANCEL_NOTIFICATION, @@ -640,6 +641,7 @@ class FreqtradeBot: rate = self._sell_rate_cache.get(pair) # Check if cache has been invalidated if rate: + logger.info(f"Using cached sell rate for {pair}.") return rate config_ask_strategy = self.config.get('ask_strategy', {}) @@ -1078,7 +1080,7 @@ class FreqtradeBot: """ profit_rate = trade.close_rate if trade.close_rate else trade.close_rate_requested profit_trade = trade.calc_profit(rate=profit_rate) - current_rate = self.get_sell_rate(trade.pair, True) + current_rate = self.get_sell_rate(trade.pair, False) profit_percent = trade.calc_profit_ratio(profit_rate) gain = "profit" if profit_percent > 0 else "loss" From 2fe7b683cb3a11b4c629b7a796b30ff5838a5682 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Feb 2020 11:23:13 +0100 Subject: [PATCH 1803/3421] Add tests for cached rates --- tests/test_freqtradebot.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5ed4d296c..c7a70be8c 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -915,13 +915,21 @@ def test_process_informative_pairs_added(default_conf, ticker, mocker) -> None: (5, 10, 1.0, 5), # last bigger than ask (5, 10, 0.5, 5), # last bigger than ask ]) -def test_get_buy_rate(mocker, default_conf, ask, last, last_ab, expected) -> None: +def test_get_buy_rate(mocker, default_conf, caplog, ask, last, last_ab, expected) -> None: default_conf['bid_strategy']['ask_last_balance'] = last_ab freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={'ask': ask, 'last': last})) assert freqtrade.get_buy_rate('ETH/BTC', True) == expected + assert not log_has("Using cached buy rate for ETH/BTC.", caplog) + + assert freqtrade.get_buy_rate('ETH/BTC', False) == expected + assert log_has("Using cached buy rate for ETH/BTC.", caplog) + # Running a 2nd time with Refresh on! + caplog.clear() + assert freqtrade.get_buy_rate('ETH/BTC', True) == expected + assert not log_has("Using cached buy rate for ETH/BTC.", caplog) def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: @@ -3614,7 +3622,7 @@ def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order assert freqtrade.handle_trade(trade) is True -def test_get_sell_rate(default_conf, mocker, ticker, order_book_l2) -> None: +def test_get_sell_rate(default_conf, mocker, caplog, ticker, order_book_l2) -> None: mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -3626,8 +3634,15 @@ def test_get_sell_rate(default_conf, mocker, ticker, order_book_l2) -> None: # Test regular mode ft = get_patched_freqtradebot(mocker, default_conf) rate = ft.get_sell_rate(pair, True) + assert not log_has("Using cached sell rate for ETH/BTC.", caplog) assert isinstance(rate, float) assert rate == 0.00001098 + # Use caching + rate = ft.get_sell_rate(pair, False) + assert rate == 0.00001098 + assert log_has("Using cached sell rate for ETH/BTC.", caplog) + + caplog.clear() # Test orderbook mode default_conf['ask_strategy']['use_order_book'] = True @@ -3635,8 +3650,12 @@ def test_get_sell_rate(default_conf, mocker, ticker, order_book_l2) -> None: default_conf['ask_strategy']['order_book_max'] = 2 ft = get_patched_freqtradebot(mocker, default_conf) rate = ft.get_sell_rate(pair, True) + assert not log_has("Using cached sell rate for ETH/BTC.", caplog) assert isinstance(rate, float) assert rate == 0.043936 + rate = ft.get_sell_rate(pair, False) + assert rate == 0.043936 + assert log_has("Using cached sell rate for ETH/BTC.", caplog) def test_startup_state(default_conf, mocker): From 4a188525ec610b8e0b41bb028f9803bf98abaa8a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Feb 2020 11:28:13 +0100 Subject: [PATCH 1804/3421] Fix documentation note syntax --- docs/strategy-advanced.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index bdb380276..a60a6ea47 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -9,7 +9,7 @@ Simple, timebased order-timeouts can be configured either via strategy or in the However, freqtrade also offers a custom callback for both ordertypes, which allows you to decide based on custom criteria if a order did time out or not. -!!! Note: +!!! Note Unfilled order timeouts are not relevant during backtesting or hyperopt, and are only relevant during real (live) trading. Therefore these methods are only called in these circumstances. ### Custom order timeout example @@ -53,7 +53,5 @@ class Awesomestrategy(IStrategy): return True ``` -!!! Note: +!!! Note For the above example, `unfilledtimeout` must be set to something bigger than 24h, otherwise that type of timeout will apply first. - - From 365fdf4c3732bdbe588e18f052b81648d0c551f7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Feb 2020 11:41:22 +0100 Subject: [PATCH 1805/3421] Add docstring to strategy wrapper --- freqtrade/strategy/strategy_wrapper.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/freqtrade/strategy/strategy_wrapper.py b/freqtrade/strategy/strategy_wrapper.py index 4f35bfbab..597432255 100644 --- a/freqtrade/strategy/strategy_wrapper.py +++ b/freqtrade/strategy/strategy_wrapper.py @@ -6,6 +6,11 @@ logger = logging.getLogger(__name__) def strategy_safe_wrapper(f, message: str = "", default_retval=None): + """ + Wrapper around user-provided methods and functions. + Caches all exceptions and returns either the default_retval (if it's not None) or raises + a StrategyError exception, which then needs to be handled by the calling method. + """ def wrapper(*args, **kwargs): try: return f(*args, **kwargs) @@ -15,14 +20,14 @@ def strategy_safe_wrapper(f, message: str = "", default_retval=None): f"Strategy caused the following exception: {error}" f"{f}" ) - if not default_retval: + if default_retval is None: raise StrategyError(str(error)) from error return default_retval except Exception as error: logger.exception( f"Unexpected error {error} calling {f}" ) - if not default_retval: + if default_retval is None: raise StrategyError(str(error)) from error return default_retval From 8cd77b2e2708a30fd3c01002f21aca8c23673e7d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Feb 2020 11:52:39 +0100 Subject: [PATCH 1806/3421] Add some tests for strategy_wrapper --- freqtrade/strategy/strategy_wrapper.py | 1 + tests/strategy/test_interface.py | 38 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/freqtrade/strategy/strategy_wrapper.py b/freqtrade/strategy/strategy_wrapper.py index 597432255..7b9da9140 100644 --- a/freqtrade/strategy/strategy_wrapper.py +++ b/freqtrade/strategy/strategy_wrapper.py @@ -25,6 +25,7 @@ def strategy_safe_wrapper(f, message: str = "", default_retval=None): return default_retval except Exception as error: logger.exception( + f"{message}" f"Unexpected error {error} calling {f}" ) if default_retval is None: diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index ca9bdc504..1db01b3ac 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -4,12 +4,15 @@ import logging from unittest.mock import MagicMock import arrow +import pytest from pandas import DataFrame from freqtrade.configuration import TimeRange from freqtrade.data.history import load_data +from freqtrade.exceptions import StrategyError from freqtrade.persistence import Trade from freqtrade.resolvers import StrategyResolver +from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from tests.conftest import get_patched_exchange, log_has, log_has_re from .strats.default_strategy import DefaultStrategy @@ -323,3 +326,38 @@ def test_is_pair_locked(default_conf): pair = 'ETH/BTC' strategy.unlock_pair(pair) assert not strategy.is_pair_locked(pair) + + +@pytest.mark.parametrize('error', [ + ValueError, KeyError, Exception, +]) +def test_strategy_safe_wrapper_error(caplog, error): + def failing_method(): + raise error('This is an error.') + + def working_method(argumentpassedin): + return argumentpassedin + + with pytest.raises(StrategyError, match=r'This is an error.'): + strategy_safe_wrapper(failing_method, message='DeadBeef')() + + assert log_has_re(r'DeadBeef.*', caplog) + ret = strategy_safe_wrapper(failing_method, message='DeadBeef', default_retval=True)() + + assert isinstance(ret, bool) + assert ret + + +@pytest.mark.parametrize('value', [ + 1, 22, 55, True, False, {'a': 1, 'b': '112'}, + [1, 2, 3, 4], (4, 2, 3, 6) +]) +def test_strategy_safe_wrapper(value): + + def working_method(argumentpassedin): + return argumentpassedin + + ret = strategy_safe_wrapper(working_method, message='DeadBeef')(value) + + assert type(ret) == type(value) + assert ret == value From 7ecc56fa44d56d3ceaf70cc81b205cbcaff90795 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Feb 2020 13:10:41 +0100 Subject: [PATCH 1807/3421] Load ohlcv data as float --- freqtrade/data/history/jsondatahandler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 17b9fd7d7..7219d8c01 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -69,7 +69,7 @@ class JsonDataHandler(IDataHandler): filename = self._pair_data_filename(self._datadir, pair, timeframe) if not filename.exists(): return DataFrame(columns=self._columns) - pairdata = read_json(filename, orient='values') + pairdata = read_json(filename, orient='values', dtype='float64') pairdata.columns = self._columns pairdata['date'] = to_datetime(pairdata['date'], unit='ms', From 3186add87b82837018e8e9e46a0fb5c5d71a2b23 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Feb 2020 14:46:54 +0100 Subject: [PATCH 1808/3421] Use explicit column list for float parsing --- freqtrade/data/history/jsondatahandler.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 7219d8c01..606018f34 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -69,7 +69,9 @@ class JsonDataHandler(IDataHandler): filename = self._pair_data_filename(self._datadir, pair, timeframe) if not filename.exists(): return DataFrame(columns=self._columns) - pairdata = read_json(filename, orient='values', dtype='float64') + pairdata = read_json(filename, orient='values', + dtype={'open': 'float', 'high': 'float', + 'low': 'float', 'close': 'float', 'volume': 'float'}) pairdata.columns = self._columns pairdata['date'] = to_datetime(pairdata['date'], unit='ms', From c651e0ac8278c854dc5901189d598b247e8d64ea Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 22 Feb 2020 19:46:40 +0300 Subject: [PATCH 1809/3421] Fix #2948 --- freqtrade/data/history/jsondatahandler.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 606018f34..ee653d937 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -69,10 +69,11 @@ class JsonDataHandler(IDataHandler): filename = self._pair_data_filename(self._datadir, pair, timeframe) if not filename.exists(): return DataFrame(columns=self._columns) - pairdata = read_json(filename, orient='values', - dtype={'open': 'float', 'high': 'float', - 'low': 'float', 'close': 'float', 'volume': 'float'}) + pairdata = read_json(filename, orient='values') pairdata.columns = self._columns + pairdata = pairdata.astype(copy=False, + dtype={'open': 'float', 'high': 'float', + 'low': 'float', 'close': 'float', 'volume': 'float'}) pairdata['date'] = to_datetime(pairdata['date'], unit='ms', utc=True, From e2e6b940a3252985a7167ab49625e03131af0090 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 22 Feb 2020 19:54:19 +0300 Subject: [PATCH 1810/3421] copy=False does not make the changes inline anyway, so not needed --- freqtrade/data/history/jsondatahandler.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index ee653d937..2b738a94a 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -71,8 +71,7 @@ class JsonDataHandler(IDataHandler): return DataFrame(columns=self._columns) pairdata = read_json(filename, orient='values') pairdata.columns = self._columns - pairdata = pairdata.astype(copy=False, - dtype={'open': 'float', 'high': 'float', + pairdata = pairdata.astype(dtype={'open': 'float', 'high': 'float', 'low': 'float', 'close': 'float', 'volume': 'float'}) pairdata['date'] = to_datetime(pairdata['date'], unit='ms', From ca8e52dc2cd61a80822cb158e1221d3d24ba62e7 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 23 Feb 2020 00:21:19 +0300 Subject: [PATCH 1811/3421] Show heartbeat message earlier after changing the state --- freqtrade/worker.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index f4b9f275b..e17f61f2f 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -83,6 +83,10 @@ class Worker: if state == State.RUNNING: self.freqtrade.startup() + # Reset heartbeat timestamp to log the heartbeat message at + # first throttling iteration when the state changes + self._heartbeat_msg = 0 + if state == State.STOPPED: # Ping systemd watchdog before sleeping in the stopped state if self._sd_notify: From 259dc75a3083b76980bf12d6575764eac96dd202 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 22 Feb 2020 23:10:46 +0100 Subject: [PATCH 1812/3421] some order and added weighted BB indicator to list --- .../templates/subtemplates/indicators_full.j2 | 103 +++++++++++------- 1 file changed, 65 insertions(+), 38 deletions(-) diff --git a/freqtrade/templates/subtemplates/indicators_full.j2 b/freqtrade/templates/subtemplates/indicators_full.j2 index 879a2daa0..87b385dd0 100644 --- a/freqtrade/templates/subtemplates/indicators_full.j2 +++ b/freqtrade/templates/subtemplates/indicators_full.j2 @@ -2,12 +2,17 @@ # Momentum Indicators # ------------------------------------ -# RSI -dataframe['rsi'] = ta.RSI(dataframe) - # ADX dataframe['adx'] = ta.ADX(dataframe) +# # Plus Directional Indicator / Movement +# dataframe['plus_dm'] = ta.PLUS_DM(dataframe) +# dataframe['plus_di'] = ta.PLUS_DI(dataframe) + +# # Minus Directional Indicator / Movement +# dataframe['minus_dm'] = ta.MINUS_DM(dataframe) +# dataframe['minus_di'] = ta.MINUS_DI(dataframe) + # # Aroon, Aroon Oscillator # aroon = ta.AROON(dataframe) # dataframe['aroonup'] = aroon['aroonup'] @@ -20,6 +25,31 @@ dataframe['adx'] = ta.ADX(dataframe) # # Commodity Channel Index: values Oversold:<-100, Overbought:>100 # dataframe['cci'] = ta.CCI(dataframe) +# RSI +dataframe['rsi'] = ta.RSI(dataframe) + +# # Inverse Fisher transform on RSI: values [-1.0, 1.0] (https://goo.gl/2JGGoy) +# rsi = 0.1 * (dataframe['rsi'] - 50) +# dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) + +# # Inverse Fisher transform on RSI normalized: values [0.0, 100.0] (https://goo.gl/2JGGoy) +# dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) + +# # Stochastic Slow +# stoch = ta.STOCH(dataframe) +# dataframe['slowd'] = stoch['slowd'] +# dataframe['slowk'] = stoch['slowk'] + +# Stochastic Fast +stoch_fast = ta.STOCHF(dataframe) +dataframe['fastd'] = stoch_fast['fastd'] +dataframe['fastk'] = stoch_fast['fastk'] + +# # Stochastic RSI +# stoch_rsi = ta.STOCHRSI(dataframe) +# dataframe['fastd_rsi'] = stoch_rsi['fastd'] +# dataframe['fastk_rsi'] = stoch_rsi['fastk'] + # MACD macd = ta.MACD(dataframe) dataframe['macd'] = macd['macd'] @@ -29,60 +59,57 @@ dataframe['macdhist'] = macd['macdhist'] # MFI dataframe['mfi'] = ta.MFI(dataframe) -# # Minus Directional Indicator / Movement -# dataframe['minus_dm'] = ta.MINUS_DM(dataframe) -# dataframe['minus_di'] = ta.MINUS_DI(dataframe) - -# # Plus Directional Indicator / Movement -# dataframe['plus_dm'] = ta.PLUS_DM(dataframe) -# dataframe['plus_di'] = ta.PLUS_DI(dataframe) -# dataframe['minus_di'] = ta.MINUS_DI(dataframe) - # # ROC # dataframe['roc'] = ta.ROC(dataframe) -# # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy) -# rsi = 0.1 * (dataframe['rsi'] - 50) -# dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) - -# # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy) -# dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) - -# # Stoch -# stoch = ta.STOCH(dataframe) -# dataframe['slowd'] = stoch['slowd'] -# dataframe['slowk'] = stoch['slowk'] - -# Stoch fast -stoch_fast = ta.STOCHF(dataframe) -dataframe['fastd'] = stoch_fast['fastd'] -dataframe['fastk'] = stoch_fast['fastk'] - -# # Stoch RSI -# stoch_rsi = ta.STOCHRSI(dataframe) -# dataframe['fastd_rsi'] = stoch_rsi['fastd'] -# dataframe['fastk_rsi'] = stoch_rsi['fastk'] - # Overlap Studies # ------------------------------------ -# Bollinger bands +# Bollinger Bands bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2) dataframe['bb_lowerband'] = bollinger['lower'] dataframe['bb_middleband'] = bollinger['mid'] dataframe['bb_upperband'] = bollinger['upper'] +dataframe["bb_percent"] = ( + (dataframe["close"] - dataframe["bb_lowerband"]) / + (dataframe["bb_upperband"] - dataframe["bb_lowerband"]) +) +dataframe["bb_width"] = ( + (dataframe["bb_upperband"] - dataframe["bb_lowerband"]) / dataframe["bb_middleband"] +) + +# Bollinger Bands - Weighted (EMA based instead of SMA) +# weighted_bollinger = qtpylib.weighted_bollinger_bands( +# qtpylib.typical_price(dataframe), window=20, stds=2 +# ) +# dataframe["wbb_upperband"] = weighted_bollinger["upper"] +# dataframe["wbb_lowerband"] = weighted_bollinger["lower"] +# dataframe["wbb_middleband"] = weighted_bollinger["mid"] +# dataframe["wbb_percent"] = ( +# (dataframe["close"] - dataframe["wbb_lowerband"]) / +# (dataframe["wbb_upperband"] - dataframe["wbb_lowerband"]) +# ) +# dataframe["wbb_width"] = ( +# (dataframe["wbb_upperband"] - dataframe["wbb_lowerband"]) / dataframe["wbb_middleband"] +# ) # # EMA - Exponential Moving Average # dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3) # dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5) # dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10) +# dataframe['ema21'] = ta.EMA(dataframe, timeperiod=21) # dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50) # dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100) # # SMA - Simple Moving Average -# dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) +# dataframe['sma3'] = ta.SMA(dataframe, timeperiod=3) +# dataframe['sma5'] = ta.SMA(dataframe, timeperiod=5) +# dataframe['sma10'] = ta.SMA(dataframe, timeperiod=10) +# dataframe['sma21'] = ta.SMA(dataframe, timeperiod=21) +# dataframe['sma50'] = ta.SMA(dataframe, timeperiod=50) +# dataframe['sma100'] = ta.SMA(dataframe, timeperiod=100) -# SAR Parabol +# Parabolic SAR dataframe['sar'] = ta.SAR(dataframe) # TEMA - Triple Exponential Moving Average @@ -142,7 +169,7 @@ dataframe['htleadsine'] = hilbert['leadsine'] # # Chart type # # ------------------------------------ -# # Heikinashi stategy +# # Heikin Ashi Strategy # heikinashi = qtpylib.heikinashi(dataframe) # dataframe['ha_open'] = heikinashi['open'] # dataframe['ha_close'] = heikinashi['close'] From b49b9b515ed14d1c501e9350fe727f0f16a7722d Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 22 Feb 2020 23:37:15 +0100 Subject: [PATCH 1813/3421] final touches --- freqtrade/templates/subtemplates/indicators_full.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/templates/subtemplates/indicators_full.j2 b/freqtrade/templates/subtemplates/indicators_full.j2 index 87b385dd0..cd106451e 100644 --- a/freqtrade/templates/subtemplates/indicators_full.j2 +++ b/freqtrade/templates/subtemplates/indicators_full.j2 @@ -19,7 +19,7 @@ dataframe['adx'] = ta.ADX(dataframe) # dataframe['aroondown'] = aroon['aroondown'] # dataframe['aroonosc'] = ta.AROONOSC(dataframe) -# # Awesome oscillator +# # Awesome Oscillator # dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) # # Commodity Channel Index: values Oversold:<-100, Overbought:>100 From 2957756275367bcd35734989cfe61558356a4a09 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 22 Feb 2020 23:39:01 +0100 Subject: [PATCH 1814/3421] final touches plus --- freqtrade/templates/subtemplates/indicators_full.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/templates/subtemplates/indicators_full.j2 b/freqtrade/templates/subtemplates/indicators_full.j2 index cd106451e..903aebb73 100644 --- a/freqtrade/templates/subtemplates/indicators_full.j2 +++ b/freqtrade/templates/subtemplates/indicators_full.j2 @@ -22,7 +22,7 @@ dataframe['adx'] = ta.ADX(dataframe) # # Awesome Oscillator # dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) -# # Commodity Channel Index: values Oversold:<-100, Overbought:>100 +# # Commodity Channel Index: values Oversold:-100, Overbought:100 # dataframe['cci'] = ta.CCI(dataframe) # RSI From 5ac624446587f95af22b322b53caddd87692f021 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 22 Feb 2020 23:50:26 +0100 Subject: [PATCH 1815/3421] added keltner channel and uo --- .../templates/subtemplates/indicators_full.j2 | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/freqtrade/templates/subtemplates/indicators_full.j2 b/freqtrade/templates/subtemplates/indicators_full.j2 index 903aebb73..af472faef 100644 --- a/freqtrade/templates/subtemplates/indicators_full.j2 +++ b/freqtrade/templates/subtemplates/indicators_full.j2 @@ -22,7 +22,23 @@ dataframe['adx'] = ta.ADX(dataframe) # # Awesome Oscillator # dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) -# # Commodity Channel Index: values Oversold:-100, Overbought:100 +# # Keltner Channel +# keltner = qtpylib.keltner_channel(dataframe) +# dataframe["kc_upperband"] = keltner["upper"] +# dataframe["kc_lowerband"] = keltner["lower"] +# dataframe["kc_middleband"] = keltner["mid"] +# dataframe["kc_percent"] = ( +# (dataframe["close"] - dataframe["kc_lowerband"]) / +# (dataframe["kc_upperband"] - dataframe["kc_lowerband"]) +# ) +# dataframe["kc_width"] = ( +# (dataframe["kc_upperband"] - dataframe["kc_lowerband"]) / dataframe["kc_middleband"] +# ) + +# # Ultimate Oscillator +# dataframe['ao'] = ta.ULTOSC(dataframe) + +# # Commodity Channel Index: values [Oversold:-100, Overbought:100] # dataframe['cci'] = ta.CCI(dataframe) # RSI From d2181bdd9492d16be409d82cd2fa5f0782c15838 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 23 Feb 2020 01:45:15 +0300 Subject: [PATCH 1816/3421] Adjust tests --- tests/test_freqtradebot.py | 28 ++--------------- tests/test_worker.py | 62 ++++++++++++++++++++++++++++++++------ 2 files changed, 55 insertions(+), 35 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5ed4d296c..20db46fac 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -782,7 +782,7 @@ def test_process_exchange_failures(default_conf, ticker, mocker) -> None: worker = Worker(args=None, config=default_conf) patch_get_signal(worker.freqtrade) - worker._process() + worker._process_running() assert sleep_mock.has_calls() @@ -799,7 +799,7 @@ def test_process_operational_exception(default_conf, ticker, mocker) -> None: assert worker.freqtrade.state == State.RUNNING - worker._process() + worker._process_running() assert worker.freqtrade.state == State.STOPPED assert 'OperationalException' in msg_mock.call_args_list[-1][0][0]['status'] @@ -3665,30 +3665,6 @@ def test_startup_trade_reinit(default_conf, edge_conf, mocker): assert reinit_mock.call_count == 0 -def test_process_i_am_alive(default_conf, mocker, caplog): - patch_RPCManager(mocker) - patch_exchange(mocker) - mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) - - ftbot = get_patched_freqtradebot(mocker, default_conf) - message = r"Bot heartbeat\. PID=.*" - ftbot.process() - assert log_has_re(message, caplog) - assert ftbot._heartbeat_msg != 0 - - caplog.clear() - # Message is not shown before interval is up - ftbot.process() - assert not log_has_re(message, caplog) - - caplog.clear() - # Set clock - 70 seconds - ftbot._heartbeat_msg -= 70 - - ftbot.process() - assert log_has_re(message, caplog) - - @pytest.mark.usefixtures("init_persistence") def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order, caplog): default_conf['dry_run'] = True diff --git a/tests/test_worker.py b/tests/test_worker.py index 2fb42d47e..7b446ac6a 100644 --- a/tests/test_worker.py +++ b/tests/test_worker.py @@ -5,7 +5,7 @@ from unittest.mock import MagicMock, PropertyMock from freqtrade.data.dataprovider import DataProvider from freqtrade.state import State from freqtrade.worker import Worker -from tests.conftest import get_patched_worker, log_has +from tests.conftest import get_patched_worker, log_has, log_has_re def test_worker_state(mocker, default_conf, markets) -> None: @@ -38,15 +38,13 @@ def test_worker_running(mocker, default_conf, caplog) -> None: def test_worker_stopped(mocker, default_conf, caplog) -> None: mock_throttle = MagicMock() mocker.patch('freqtrade.worker.Worker._throttle', mock_throttle) - mock_sleep = mocker.patch('time.sleep', return_value=None) worker = get_patched_worker(mocker, default_conf) worker.freqtrade.state = State.STOPPED state = worker._worker(old_state=State.RUNNING) assert state is State.STOPPED assert log_has('Changing state to: STOPPED', caplog) - assert mock_throttle.call_count == 0 - assert mock_sleep.call_count == 1 + assert mock_throttle.call_count == 1 def test_throttle(mocker, default_conf, caplog) -> None: @@ -57,14 +55,14 @@ def test_throttle(mocker, default_conf, caplog) -> None: worker = get_patched_worker(mocker, default_conf) start = time.time() - result = worker._throttle(throttled_func, min_secs=0.1) + result = worker._throttle(throttled_func, throttle_secs=0.1) end = time.time() assert result == 42 assert end - start > 0.1 - assert log_has('Throttling throttled_func for 0.10 seconds', caplog) + assert log_has_re(r"Throttling with 'throttled_func\(\)': sleep for 0\.10 s.*", caplog) - result = worker._throttle(throttled_func, min_secs=-1) + result = worker._throttle(throttled_func, throttle_secs=-1) assert result == 42 @@ -74,8 +72,54 @@ def test_throttle_with_assets(mocker, default_conf) -> None: worker = get_patched_worker(mocker, default_conf) - result = worker._throttle(throttled_func, min_secs=0.1, nb_assets=666) + result = worker._throttle(throttled_func, throttle_secs=0.1, nb_assets=666) assert result == 666 - result = worker._throttle(throttled_func, min_secs=0.1) + result = worker._throttle(throttled_func, throttle_secs=0.1) assert result == -1 + + +def test_worker_heartbeat_running(default_conf, mocker, caplog): + message = r"Bot heartbeat\. PID=.*state='RUNNING'" + + mock_throttle = MagicMock() + mocker.patch('freqtrade.worker.Worker._throttle', mock_throttle) + worker = get_patched_worker(mocker, default_conf) + + worker.freqtrade.state = State.RUNNING + worker._worker(old_state=State.STOPPED) + assert log_has_re(message, caplog) + + caplog.clear() + # Message is not shown before interval is up + worker._worker(old_state=State.RUNNING) + assert not log_has_re(message, caplog) + + caplog.clear() + # Set clock - 70 seconds + worker._heartbeat_msg -= 70 + worker._worker(old_state=State.RUNNING) + assert log_has_re(message, caplog) + + +def test_worker_heartbeat_stopped(default_conf, mocker, caplog): + message = r"Bot heartbeat\. PID=.*state='STOPPED'" + + mock_throttle = MagicMock() + mocker.patch('freqtrade.worker.Worker._throttle', mock_throttle) + worker = get_patched_worker(mocker, default_conf) + + worker.freqtrade.state = State.STOPPED + worker._worker(old_state=State.RUNNING) + assert log_has_re(message, caplog) + + caplog.clear() + # Message is not shown before interval is up + worker._worker(old_state=State.STOPPED) + assert not log_has_re(message, caplog) + + caplog.clear() + # Set clock - 70 seconds + worker._heartbeat_msg -= 70 + worker._worker(old_state=State.STOPPED) + assert log_has_re(message, caplog) From e04c2dda2cfd3c18690be04dd3b22f98731b0b04 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 22 Feb 2020 23:58:31 +0100 Subject: [PATCH 1817/3421] fixed typo --- freqtrade/templates/subtemplates/indicators_full.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/templates/subtemplates/indicators_full.j2 b/freqtrade/templates/subtemplates/indicators_full.j2 index af472faef..60a358bec 100644 --- a/freqtrade/templates/subtemplates/indicators_full.j2 +++ b/freqtrade/templates/subtemplates/indicators_full.j2 @@ -36,7 +36,7 @@ dataframe['adx'] = ta.ADX(dataframe) # ) # # Ultimate Oscillator -# dataframe['ao'] = ta.ULTOSC(dataframe) +# dataframe['uo'] = ta.ULTOSC(dataframe) # # Commodity Channel Index: values [Oversold:-100, Overbought:100] # dataframe['cci'] = ta.CCI(dataframe) From 634e7cc34a7f7adc10216d00418532780753a067 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Feb 2020 13:04:40 +0100 Subject: [PATCH 1818/3421] Implement handle_buy_trade_customcallback --- tests/test_freqtradebot.py | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5ed4d296c..68ce733b1 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1914,6 +1914,53 @@ def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order, freqtrade.handle_trade(trade) +def test_check_handle_timedout_buy_usercustom(default_conf, ticker, limit_buy_order_old, open_trade, + fee, mocker) -> None: + default_conf["unfilledtimeout"] = {"buy": 1400, "sell": 30} + + rpc_mock = patch_RPCManager(mocker) + cancel_order_mock = MagicMock(return_value=limit_buy_order_old) + patch_exchange(mocker) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + fetch_ticker=ticker, + get_order=MagicMock(return_value=limit_buy_order_old), + cancel_order=cancel_order_mock, + get_fee=fee + ) + freqtrade = FreqtradeBot(default_conf) + + Trade.session.add(open_trade) + + # Return false - trade remains open + freqtrade.strategy.check_buy_timeout = MagicMock(return_value=False) + freqtrade.check_handle_timedout() + assert cancel_order_mock.call_count == 0 + trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() + nb_trades = len(trades) + assert nb_trades == 1 + assert freqtrade.strategy.check_buy_timeout.call_count == 1 + + # Raise Keyerror ... (no impact on trade) + freqtrade.strategy.check_buy_timeout = MagicMock(side_effect=KeyError) + freqtrade.check_handle_timedout() + assert cancel_order_mock.call_count == 0 + trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() + nb_trades = len(trades) + assert nb_trades == 1 + assert freqtrade.strategy.check_buy_timeout.call_count == 1 + + freqtrade.strategy.check_buy_timeout = MagicMock(return_value=True) + # Trade should be closed since the function returns true + freqtrade.check_handle_timedout() + assert cancel_order_mock.call_count == 1 + assert rpc_mock.call_count == 1 + trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() + nb_trades = len(trades) + assert nb_trades == 0 + assert freqtrade.strategy.check_buy_timeout.call_count == 1 + + def test_check_handle_timedout_buy(default_conf, ticker, limit_buy_order_old, open_trade, fee, mocker) -> None: rpc_mock = patch_RPCManager(mocker) From 9301f81fc8f5eca1003586290c86514bc22e72de Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Feb 2020 13:09:46 +0100 Subject: [PATCH 1819/3421] Add test for user-sell_timeout handling --- tests/test_freqtradebot.py | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 68ce733b1..e4b9a28ce 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2040,6 +2040,51 @@ def test_check_handle_timedout_buy_exception(default_conf, ticker, limit_buy_ord assert nb_trades == 1 +def test_check_handle_timedout_sell_usercustom(default_conf, ticker, limit_sell_order_old, mocker, + open_trade) -> None: + default_conf["unfilledtimeout"] = {"buy": 1440, "sell": 1440} + rpc_mock = patch_RPCManager(mocker) + cancel_order_mock = MagicMock() + patch_exchange(mocker) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + fetch_ticker=ticker, + get_order=MagicMock(return_value=limit_sell_order_old), + cancel_order=cancel_order_mock + ) + freqtrade = FreqtradeBot(default_conf) + + open_trade.open_date = arrow.utcnow().shift(hours=-5).datetime + open_trade.close_date = arrow.utcnow().shift(minutes=-601).datetime + open_trade.is_open = False + + Trade.session.add(open_trade) + + freqtrade.strategy.check_sell_timeout = MagicMock(return_value=False) + # Return false - No impact + freqtrade.check_handle_timedout() + assert cancel_order_mock.call_count == 0 + assert rpc_mock.call_count == 0 + assert open_trade.is_open is False + assert freqtrade.strategy.check_sell_timeout.call_count == 1 + + freqtrade.strategy.check_sell_timeout = MagicMock(side_effect=KeyError) + # Return Error - No impact + freqtrade.check_handle_timedout() + assert cancel_order_mock.call_count == 0 + assert rpc_mock.call_count == 0 + assert open_trade.is_open is False + assert freqtrade.strategy.check_sell_timeout.call_count == 1 + + # Return True - sells! + freqtrade.strategy.check_sell_timeout = MagicMock(return_value=True) + freqtrade.check_handle_timedout() + assert cancel_order_mock.call_count == 1 + assert rpc_mock.call_count == 1 + assert open_trade.is_open is True + assert freqtrade.strategy.check_sell_timeout.call_count == 1 + + def test_check_handle_timedout_sell(default_conf, ticker, limit_sell_order_old, mocker, open_trade) -> None: rpc_mock = patch_RPCManager(mocker) From e37f055dad850b366439ff6531777ca17f268ed5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Feb 2020 13:11:33 +0100 Subject: [PATCH 1820/3421] Improve some tests --- tests/test_freqtradebot.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index e4b9a28ce..0766d7f33 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1977,6 +1977,7 @@ def test_check_handle_timedout_buy(default_conf, ticker, limit_buy_order_old, op Trade.session.add(open_trade) + freqtrade.strategy.check_buy_timeout = MagicMock(return_value=False) # check it does cancel buy orders over the time limit freqtrade.check_handle_timedout() assert cancel_order_mock.call_count == 1 @@ -1984,6 +1985,8 @@ def test_check_handle_timedout_buy(default_conf, ticker, limit_buy_order_old, op trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() nb_trades = len(trades) assert nb_trades == 0 + # Custom user buy-timeout is never called + assert freqtrade.strategy.check_buy_timeout.call_count == 0 def test_check_handle_cancelled_buy(default_conf, ticker, limit_buy_order_old, open_trade, @@ -2104,11 +2107,14 @@ def test_check_handle_timedout_sell(default_conf, ticker, limit_sell_order_old, Trade.session.add(open_trade) + freqtrade.strategy.check_sell_timeout = MagicMock(return_value=False) # check it does cancel sell orders over the time limit freqtrade.check_handle_timedout() assert cancel_order_mock.call_count == 1 assert rpc_mock.call_count == 1 assert open_trade.is_open is True + # Custom user sell-timeout is never called + assert freqtrade.strategy.check_sell_timeout.call_count == 0 def test_check_handle_cancelled_sell(default_conf, ticker, limit_sell_order_old, open_trade, From f25d6224ddeab8a3889daa69c1fac8eb375d169b Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sun, 23 Feb 2020 16:22:19 +0100 Subject: [PATCH 1821/3421] modified sample_strategy --- freqtrade/templates/sample_strategy.py | 136 ++++++++++++++++--------- 1 file changed, 90 insertions(+), 46 deletions(-) diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index 92f6aefba..8a4b27c72 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -124,11 +124,16 @@ class SampleStrategy(IStrategy): # Momentum Indicators # ------------------------------------ - # RSI - dataframe['rsi'] = ta.RSI(dataframe) - # ADX - dataframe['adx'] = ta.ADX(dataframe) + # dataframe['adx'] = ta.ADX(dataframe) + + # # Plus Directional Indicator / Movement + # dataframe['plus_dm'] = ta.PLUS_DM(dataframe) + # dataframe['plus_di'] = ta.PLUS_DI(dataframe) + + # # Minus Directional Indicator / Movement + # dataframe['minus_dm'] = ta.MINUS_DM(dataframe) + # dataframe['minus_di'] = ta.MINUS_DI(dataframe) # # Aroon, Aroon Oscillator # aroon = ta.AROON(dataframe) @@ -136,12 +141,53 @@ class SampleStrategy(IStrategy): # dataframe['aroondown'] = aroon['aroondown'] # dataframe['aroonosc'] = ta.AROONOSC(dataframe) - # # Awesome oscillator + # # Awesome Oscillator # dataframe['ao'] = qtpylib.awesome_oscillator(dataframe) - # # Commodity Channel Index: values Oversold:<-100, Overbought:>100 + # # Keltner Channel + # keltner = qtpylib.keltner_channel(dataframe) + # dataframe["kc_upperband"] = keltner["upper"] + # dataframe["kc_lowerband"] = keltner["lower"] + # dataframe["kc_middleband"] = keltner["mid"] + # dataframe["kc_percent"] = ( + # (dataframe["close"] - dataframe["kc_lowerband"]) / + # (dataframe["kc_upperband"] - dataframe["kc_lowerband"]) + # ) + # dataframe["kc_width"] = ( + # (dataframe["kc_upperband"] - dataframe["kc_lowerband"]) / dataframe["kc_middleband"] + # ) + + # # Ultimate Oscillator + # dataframe['uo'] = ta.ULTOSC(dataframe) + + # # Commodity Channel Index: values [Oversold:-100, Overbought:100] # dataframe['cci'] = ta.CCI(dataframe) + # RSI + dataframe['rsi'] = ta.RSI(dataframe) + + # # Inverse Fisher transform on RSI: values [-1.0, 1.0] (https://goo.gl/2JGGoy) + # rsi = 0.1 * (dataframe['rsi'] - 50) + # dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) + + # # Inverse Fisher transform on RSI normalized: values [0.0, 100.0] (https://goo.gl/2JGGoy) + # dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) + + # # Stochastic Slow + # stoch = ta.STOCH(dataframe) + # dataframe['slowd'] = stoch['slowd'] + # dataframe['slowk'] = stoch['slowk'] + + # Stochastic Fast + stoch_fast = ta.STOCHF(dataframe) + dataframe['fastd'] = stoch_fast['fastd'] + dataframe['fastk'] = stoch_fast['fastk'] + + # # Stochastic RSI + # stoch_rsi = ta.STOCHRSI(dataframe) + # dataframe['fastd_rsi'] = stoch_rsi['fastd'] + # dataframe['fastk_rsi'] = stoch_rsi['fastk'] + # MACD macd = ta.MACD(dataframe) dataframe['macd'] = macd['macd'] @@ -151,71 +197,69 @@ class SampleStrategy(IStrategy): # MFI dataframe['mfi'] = ta.MFI(dataframe) - # # Minus Directional Indicator / Movement - # dataframe['minus_dm'] = ta.MINUS_DM(dataframe) - # dataframe['minus_di'] = ta.MINUS_DI(dataframe) - - # # Plus Directional Indicator / Movement - # dataframe['plus_dm'] = ta.PLUS_DM(dataframe) - # dataframe['plus_di'] = ta.PLUS_DI(dataframe) - # dataframe['minus_di'] = ta.MINUS_DI(dataframe) - # # ROC # dataframe['roc'] = ta.ROC(dataframe) - # # Inverse Fisher transform on RSI, values [-1.0, 1.0] (https://goo.gl/2JGGoy) - # rsi = 0.1 * (dataframe['rsi'] - 50) - # dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1) - - # # Inverse Fisher transform on RSI normalized, value [0.0, 100.0] (https://goo.gl/2JGGoy) - # dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1) - - # # Stoch - # stoch = ta.STOCH(dataframe) - # dataframe['slowd'] = stoch['slowd'] - # dataframe['slowk'] = stoch['slowk'] - - # Stoch fast - stoch_fast = ta.STOCHF(dataframe) - dataframe['fastd'] = stoch_fast['fastd'] - dataframe['fastk'] = stoch_fast['fastk'] - - # # Stoch RSI - # stoch_rsi = ta.STOCHRSI(dataframe) - # dataframe['fastd_rsi'] = stoch_rsi['fastd'] - # dataframe['fastk_rsi'] = stoch_rsi['fastk'] - # Overlap Studies # ------------------------------------ - # Bollinger bands + # Bollinger Bands bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2) dataframe['bb_lowerband'] = bollinger['lower'] dataframe['bb_middleband'] = bollinger['mid'] dataframe['bb_upperband'] = bollinger['upper'] + dataframe["bb_percent"] = ( + (dataframe["close"] - dataframe["bb_lowerband"]) / + (dataframe["bb_upperband"] - dataframe["bb_lowerband"]) + ) + dataframe["bb_width"] = ( + (dataframe["bb_upperband"] - dataframe["bb_lowerband"]) / dataframe["bb_middleband"] + ) + + # Bollinger Bands - Weighted (EMA based instead of SMA) + # weighted_bollinger = qtpylib.weighted_bollinger_bands( + # qtpylib.typical_price(dataframe), window=20, stds=2 + # ) + # dataframe["wbb_upperband"] = weighted_bollinger["upper"] + # dataframe["wbb_lowerband"] = weighted_bollinger["lower"] + # dataframe["wbb_middleband"] = weighted_bollinger["mid"] + # dataframe["wbb_percent"] = ( + # (dataframe["close"] - dataframe["wbb_lowerband"]) / + # (dataframe["wbb_upperband"] - dataframe["wbb_lowerband"]) + # ) + # dataframe["wbb_width"] = ( + # (dataframe["wbb_upperband"] - dataframe["wbb_lowerband"]) / + # dataframe["wbb_middleband"] + # ) # # EMA - Exponential Moving Average # dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3) # dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5) # dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10) + # dataframe['ema21'] = ta.EMA(dataframe, timeperiod=21) # dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50) # dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100) # # SMA - Simple Moving Average - # dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) + # dataframe['sma3'] = ta.SMA(dataframe, timeperiod=3) + # dataframe['sma5'] = ta.SMA(dataframe, timeperiod=5) + # dataframe['sma10'] = ta.SMA(dataframe, timeperiod=10) + # dataframe['sma21'] = ta.SMA(dataframe, timeperiod=21) + # dataframe['sma50'] = ta.SMA(dataframe, timeperiod=50) + # dataframe['sma100'] = ta.SMA(dataframe, timeperiod=100) - # SAR Parabol - dataframe['sar'] = ta.SAR(dataframe) + # Parabolic SAR + # dataframe['sar'] = ta.SAR(dataframe) # TEMA - Triple Exponential Moving Average - dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9) + # dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9) # Cycle Indicator # ------------------------------------ # Hilbert Transform Indicator - SineWave - hilbert = ta.HT_SINE(dataframe) - dataframe['htsine'] = hilbert['sine'] - dataframe['htleadsine'] = hilbert['leadsine'] + # hilbert = ta.HT_SINE(dataframe) + # dataframe['htsine'] = hilbert['sine'] + # dataframe['htleadsine'] = hilbert['leadsine'] # Pattern Recognition - Bullish candlestick patterns # ------------------------------------ @@ -264,7 +308,7 @@ class SampleStrategy(IStrategy): # # Chart type # # ------------------------------------ - # # Heikinashi stategy + # # Heikin Ashi Strategy # heikinashi = qtpylib.heikinashi(dataframe) # dataframe['ha_open'] = heikinashi['open'] # dataframe['ha_close'] = heikinashi['close'] From 0eeafcd157c17d6f7de92ab66c6f267c454bcec2 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sun, 23 Feb 2020 16:56:55 +0100 Subject: [PATCH 1822/3421] matched commenting on previous sample_strategy.py --- freqtrade/templates/sample_strategy.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index 8a4b27c72..17372e1e0 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -125,7 +125,7 @@ class SampleStrategy(IStrategy): # ------------------------------------ # ADX - # dataframe['adx'] = ta.ADX(dataframe) + dataframe['adx'] = ta.ADX(dataframe) # # Plus Directional Indicator / Movement # dataframe['plus_dm'] = ta.PLUS_DM(dataframe) @@ -249,17 +249,17 @@ class SampleStrategy(IStrategy): # dataframe['sma100'] = ta.SMA(dataframe, timeperiod=100) # Parabolic SAR - # dataframe['sar'] = ta.SAR(dataframe) + dataframe['sar'] = ta.SAR(dataframe) # TEMA - Triple Exponential Moving Average - # dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9) + dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9) # Cycle Indicator # ------------------------------------ # Hilbert Transform Indicator - SineWave - # hilbert = ta.HT_SINE(dataframe) - # dataframe['htsine'] = hilbert['sine'] - # dataframe['htleadsine'] = hilbert['leadsine'] + hilbert = ta.HT_SINE(dataframe) + dataframe['htsine'] = hilbert['sine'] + dataframe['htleadsine'] = hilbert['leadsine'] # Pattern Recognition - Bullish candlestick patterns # ------------------------------------ From e545ef563c0b5aaafc618bc3501c1d1e43f68c07 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sun, 23 Feb 2020 22:50:58 +0300 Subject: [PATCH 1823/3421] Wording adjusted in helpstring --- freqtrade/worker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index e17f61f2f..4c28ecaeb 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -69,7 +69,7 @@ class Worker: def _worker(self, old_state: Optional[State]) -> State: """ - Trading routine that must be run at each loop + The main routine that runs each throttling iteration and handles the states. :param old_state: the previous service state from the previous call :return: current service state """ From 7eb62ed32e7acc7004821a9213c7752fe31f1f9c Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Mon, 24 Feb 2020 00:33:01 +0100 Subject: [PATCH 1824/3421] Remove old print option for hyperopt-list and made table as default --- docs/utils.md | 1 - freqtrade/commands/arguments.py | 3 +-- freqtrade/commands/cli_options.py | 6 ------ freqtrade/commands/hyperopt_commands.py | 23 +++++------------------ freqtrade/configuration/configuration.py | 3 --- tests/commands/test_commands.py | 16 ---------------- 6 files changed, 6 insertions(+), 46 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index 6ca0b7920..abb7fd0db 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -440,7 +440,6 @@ optional arguments: --no-color Disable colorization of hyperopt results. May be useful if you are redirecting output to a file. --print-json Print best result detailization in JSON format. - --print-table Print results in table format. --no-details Do not print best epoch details. Common arguments: diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 0f6478a60..fe6f49039 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -66,8 +66,7 @@ ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_list_min_avg_time", "hyperopt_list_max_avg_time", "hyperopt_list_min_avg_profit", "hyperopt_list_max_avg_profit", "hyperopt_list_min_total_profit", "hyperopt_list_max_total_profit", - "print_colorized", "print_json", "print_table", - "hyperopt_list_no_details"] + "print_colorized", "print_json", "hyperopt_list_no_details"] ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_show_index", "print_json", "hyperopt_show_no_header"] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 9efc1151a..1776955b1 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -220,12 +220,6 @@ AVAILABLE_CLI_OPTIONS = { action='store_true', default=False, ), - "print_table": Arg( - '--print-table', - help='Print results in table format.', - action='store_true', - default=False, - ), "hyperopt_jobs": Arg( '-j', '--job-workers', help='The number of concurrently running jobs for hyperoptimization ' diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index 88cd79468..ccaa59e54 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -21,7 +21,6 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: print_colorized = config.get('print_colorized', False) print_json = config.get('print_json', False) - print_table = config.get('print_table', False) no_details = config.get('hyperopt_list_no_details', False) no_header = False @@ -47,26 +46,14 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: trials = _hyperopt_filter_trials(trials, filteroptions) - # TODO: fetch the interval for epochs to print from the cli option - epoch_start, epoch_stop = 0, None - if print_colorized: colorama_init(autoreset=True) - if print_table: - try: - Hyperopt.print_result_table(config, trials, total_epochs, - not filteroptions['only_best'], print_colorized) - except KeyboardInterrupt: - print('User interrupted..') - else: - try: - # Human-friendly indexes used here (starting from 1) - for val in trials[epoch_start:epoch_stop]: - Hyperopt.print_results_explanation(val, total_epochs, - not filteroptions['only_best'], print_colorized) - except KeyboardInterrupt: - print('User interrupted..') + try: + Hyperopt.print_result_table(config, trials, total_epochs, + not filteroptions['only_best'], print_colorized) + except KeyboardInterrupt: + print('User interrupted..') if trials and not no_details: sorted_trials = sorted(trials, key=itemgetter('loss')) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 0adfe03e7..c2613ba99 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -286,9 +286,6 @@ class Configuration: self._args_to_config(config, argname='print_json', logstring='Parameter --print-json detected ...') - self._args_to_config(config, argname='print_table', - logstring='Parameter --print-table detected: {}') - self._args_to_config(config, argname='hyperopt_jobs', logstring='Parameter -j/--job-workers detected: {}') diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index ceae6f372..995b504c5 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -907,22 +907,6 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): assert all(x not in captured.out for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 7/12", " 8/12" " 9/12", " 10/12", " 11/12", " 12/12"]) - args = [ - "hyperopt-list", - "--no-details", - "--print-table", - "--min-trades", "100", - "--print-json" - ] - pargs = get_args(args) - pargs['config'] = None - start_hyperopt_list(pargs) - captured = capsys.readouterr() - assert all(x in captured.out - for x in [" 3/12", " 7/12", " 9/12", " 11/12"]) - assert all(x not in captured.out - for x in [" 1/12", " 2/12", " 4/12", " 5/12", " 6/12", " 8/12", " 10/12" - " 12/12"]) def test_hyperopt_show(mocker, capsys, hyperopt_results): From 353f722dc54dcd6eab646a844596383eccc5d326 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2020 08:04:07 +0000 Subject: [PATCH 1825/3421] Bump requests from 2.22.0 to 2.23.0 Bumps [requests](https://github.com/psf/requests) from 2.22.0 to 2.23.0. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/master/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.22.0...v2.23.0) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 2be51ba73..61809c698 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -5,7 +5,7 @@ SQLAlchemy==1.3.13 python-telegram-bot==12.4.2 arrow==0.15.5 cachetools==4.0.0 -requests==2.22.0 +requests==2.23.0 urllib3==1.25.8 wrapt==1.12.0 jsonschema==3.2.0 From 4054dec7a029594503222de5af6677669956d1cd Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2020 08:04:32 +0000 Subject: [PATCH 1826/3421] Bump plotly from 4.5.0 to 4.5.1 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.5.0 to 4.5.1. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.5.0...v4.5.1) Signed-off-by: dependabot-preview[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index 26467d90b..5e62a5e95 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.5.0 +plotly==4.5.1 From ff69b511e311bb73d36d0d2661f7e4100a46d283 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2020 08:04:44 +0000 Subject: [PATCH 1827/3421] Bump scikit-optimize from 0.7.2 to 0.7.4 Bumps [scikit-optimize](https://github.com/scikit-optimize/scikit-optimize) from 0.7.2 to 0.7.4. - [Release notes](https://github.com/scikit-optimize/scikit-optimize/releases) - [Changelog](https://github.com/scikit-optimize/scikit-optimize/blob/master/CHANGELOG.md) - [Commits](https://github.com/scikit-optimize/scikit-optimize/compare/v0.7.2...v0.7.4) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index e97e7f6be..2984229c1 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -4,6 +4,6 @@ # Required for hyperopt scipy==1.4.1 scikit-learn==0.22.1 -scikit-optimize==0.7.2 +scikit-optimize==0.7.4 filelock==3.0.12 joblib==0.14.1 From d63aaf3bfd7eb511387625b76435ea873e51e444 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2020 08:05:15 +0000 Subject: [PATCH 1828/3421] Bump ccxt from 1.22.61 to 1.22.95 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.22.61 to 1.22.95. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.22.61...1.22.95) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 2be51ba73..f792f5348 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.22.61 +ccxt==1.22.95 SQLAlchemy==1.3.13 python-telegram-bot==12.4.2 arrow==0.15.5 From 23bf135b8aeb704c64e775dba8a12b166a692a41 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Mon, 24 Feb 2020 11:01:14 +0100 Subject: [PATCH 1829/3421] Alignment of table content, changed coloring, changed 'Best' column to show if it's initial_point or best --- freqtrade/optimize/hyperopt.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 72b3516c7..7ff5c3500 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -306,15 +306,18 @@ class Hyperopt: return trials = json_normalize(results, max_level=1) - trials = trials[['is_best', 'current_epoch', - 'results_metrics.trade_count', 'results_metrics.avg_profit', - 'results_metrics.total_profit', 'results_metrics.profit', - 'results_metrics.duration', 'loss']] + trials['Best'] = '' + trials = trials[['Best', 'current_epoch', 'results_metrics.trade_count', + 'results_metrics.avg_profit', 'results_metrics.total_profit', + 'results_metrics.profit', 'results_metrics.duration', + 'loss', 'is_initial_point', 'is_best']] trials.columns = ['Best', 'Epoch', 'Trades', 'Avg profit', 'Total profit', - 'Profit', 'Avg duration', 'Objective'] + 'Profit', 'Avg duration', 'Objective', 'is_initial_point', 'is_best'] - trials['Best'] = trials['Best'].apply(lambda x: '*' if x else '') + trials.loc[trials['is_initial_point'], 'Best'] = '*' + trials.loc[trials['is_best'], 'Best'] = 'Best' trials['Objective'] = trials['Objective'].astype(str) + trials = trials.drop(columns=['is_initial_point', 'is_best']) if print_colorized: for i in range(len(trials)): @@ -322,10 +325,10 @@ class Hyperopt: trials.at[i, 'Best'] = Fore.GREEN + trials.loc[i]['Best'] trials.at[i, 'Objective'] = "{}{}".format(trials.loc[i]['Objective'], Fore.RESET) - if '*' in trials.loc[i]['Best'] and highlight_best: - trials.at[i, 'Best'] = Style.BRIGHT + trials.loc[i]['Best'] - trials.at[i, 'Objective'] = "{}{}".format(trials.loc[i]['Objective'], - Style.RESET_ALL) + if 'Best' in trials.loc[i]['Best'] and highlight_best: + trials.at[i, 'Best'] = Style.BRIGHT + trials.loc[i]['Best'] + trials.at[i, 'Objective'] = "{}{}".format(trials.loc[i]['Objective'], + Style.RESET_ALL) trials['Epoch'] = trials['Epoch'].apply( lambda x: "{}/{}".format(x, total_epochs)) @@ -338,7 +341,8 @@ class Hyperopt: trials['Avg duration'] = trials['Avg duration'].apply( lambda x: '{:,.1f}m'.format(x) if not isna(x) else x) - print(tabulate(trials.to_dict(orient='list'), headers='keys', tablefmt='psql')) + print(tabulate(trials.to_dict(orient='list'), headers='keys', tablefmt='psql', + stralign="right")) def has_space(self, space: str) -> bool: """ From 23b47b66eccb408d56ba0abd6e6e5ab71b8ae3f5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Feb 2020 20:11:25 +0100 Subject: [PATCH 1830/3421] Update install-script documentation and reorder installation steps --- docs/installation.md | 8 ++++---- mkdocs.yml | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 054cafe9b..0feaf509d 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -65,11 +65,11 @@ usage: ** --install ** -With this option, the script will install everything you need to run the bot: +With this option, the script will install the bot and most dependencies: +You will need to have git and python3.6+ installed beforehand for this to work. * Mandatory software as: `ta-lib` -* Setup your virtualenv -* Configure your `config.json` file +* Setup your virtualenv under `.env/` This option is a combination of installation tasks, `--reset` and `--config`. @@ -83,7 +83,7 @@ This option will hard reset your branch (only if you are on either `master` or ` ** --config ** -Use this option to configure the `config.json` configuration file. The script will interactively ask you questions to setup your bot and create your `config.json`. +DEPRECATED - use `freqtrade new-config -c config.json` instead. ------ diff --git a/mkdocs.yml b/mkdocs.yml index d53687c64..4e7e6ff75 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,8 +1,8 @@ site_name: Freqtrade nav: - - About: index.md - - Installation: installation.md + - Home: index.md - Installation Docker: docker.md + - Installation: installation.md - Configuration: configuration.md - Strategy Customization: strategy-customization.md - Stoploss: stoploss.md From 2f349e0504d014e01f428e8fc0b6e8f8a619aeef Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Feb 2020 20:21:25 +0100 Subject: [PATCH 1831/3421] Improve install documentation by streamlining the process --- docs/configuration.md | 14 +++++++++++--- docs/installation.md | 12 +++--------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 0b9519688..234ff49ba 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -626,6 +626,11 @@ In production mode, the bot will engage your money. Be careful, since a wrong strategy can lose all your money. Be aware of what you are doing when you run it in production mode. +### Setup your exchange account + +You will need to create API Keys (usually you get `key` and `secret`) from the Exchange website and you'll need to insert this into the appropriate fields in the configuration or when asked by the installation script. +API Keys are usually only required for real / production trading, but are not required for paper-trading / dry-run. + ### To switch your bot in production mode **Edit your `config.json` file.** @@ -647,11 +652,14 @@ you run it in production mode. } ``` -!!! Note - If you have an exchange API key yet, [see our tutorial](installation.md#setup-your-exchange-account). - You should also make sure to read the [Exchanges](exchanges.md) section of the documentation to be aware of potential configuration details specific to your exchange. +### Setup your exchange account + +You will need to create API Keys (usually you get `key` and `secret`) from the Exchange website and you'll need to insert this into the appropriate fields in the configuration or when asked by the installation script. +API Keys are usually only required for real / production trading, but are not required for paper-trading / dry-run. + + ### Using proxy with Freqtrade To use a proxy with freqtrade, add the kwarg `"aiohttp_trust_env"=true` to the `"ccxt_async_kwargs"` dict in the exchange section of the configuration. diff --git a/docs/installation.md b/docs/installation.md index 0feaf509d..5a15be234 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -2,6 +2,8 @@ This page explains how to prepare your environment for running the bot. +Please consider using the prebuilt [docker images](docker.md) to get started quickly while trying out freqtrade. + ## Prerequisite ### Requirements @@ -14,15 +16,7 @@ Click each one for install guide: * [virtualenv](https://virtualenv.pypa.io/en/stable/installation/) (Recommended) * [TA-Lib](https://mrjbq7.github.io/ta-lib/install.html) (install instructions below) -### API keys - -Before running your bot in production you will need to setup few -external API. In production mode, the bot will require valid Exchange API -credentials. We also recommend a [Telegram bot](telegram-usage.md#setup-your-telegram-bot) (optional but recommended). - -### Setup your exchange account - -You will need to create API Keys (Usually you get `key` and `secret`) from the Exchange website and insert this into the appropriate fields in the configuration or when asked by the installation script. + We also recommend a [Telegram bot](telegram-usage.md#setup-your-telegram-bot), which is optional but recommended. ## Quick start From 6581ba56cab28f025c7444bd57e2e09beefb7ded Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Feb 2020 20:41:45 +0100 Subject: [PATCH 1832/3421] Use markets.quote to validate --- freqtrade/pairlist/IPairList.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index 1ad4da523..7d489ece7 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -99,7 +99,8 @@ class IPairList(ABC): logger.warning(f"Pair {pair} is not compatible with exchange " f"{self._exchange.name}. Removing it from whitelist..") continue - if not pair.endswith(self._config['stake_currency']): + + if markets[pair]['quote'] != self._config['stake_currency']: logger.warning(f"Pair {pair} is not compatible with your stake currency " f"{self._config['stake_currency']}. Removing it from whitelist..") continue From 3e4f663418236f84123eeb186fa0f642f84de89e Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Feb 2020 21:22:58 +0100 Subject: [PATCH 1833/3421] Move pairlist validation to exchange (we need to use .quote) from markets --- freqtrade/configuration/config_validation.py | 12 ------ freqtrade/exchange/exchange.py | 8 +++- tests/exchange/test_exchange.py | 42 ++++++++++++++++++-- tests/test_configuration.py | 7 ---- 4 files changed, 45 insertions(+), 24 deletions(-) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 5183ad0b4..5ba7ff294 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -150,15 +150,3 @@ def _validate_whitelist(conf: Dict[str, Any]) -> None: if (pl.get('method') == 'StaticPairList' and not conf.get('exchange', {}).get('pair_whitelist')): raise OperationalException("StaticPairList requires pair_whitelist to be set.") - - if pl.get('method') == 'StaticPairList': - stake = conf['stake_currency'] - invalid_pairs = [] - for pair in conf['exchange'].get('pair_whitelist'): - if not pair.endswith(f'/{stake}'): - invalid_pairs.append(pair) - - if invalid_pairs: - raise OperationalException( - f"Stake-currency '{stake}' not compatible with pair-whitelist. " - f"Please remove the following pairs: {invalid_pairs}") diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index b3b347016..8023417a3 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -300,7 +300,7 @@ class Exchange: if not self.markets: logger.warning('Unable to validate pairs (assuming they are correct).') return - + invalid_pairs = [] for pair in pairs: # Note: ccxt has BaseCurrency/QuoteCurrency format for pairs # TODO: add a support for having coins in BTC/USDT format @@ -322,6 +322,12 @@ class Exchange: logger.warning(f"Pair {pair} is restricted for some users on this exchange." f"Please check if you are impacted by this restriction " f"on the exchange and eventually remove {pair} from your whitelist.") + if not self.markets[pair].get('quote') == self._config['stake_currency']: + invalid_pairs.append(pair) + if invalid_pairs: + raise OperationalException( + f"Stake-currency '{self._config['stake_currency']}' not compatible with " + f"pair-whitelist. Please remove the following pairs: {invalid_pairs}") def get_valid_pair_combination(self, curr_1: str, curr_2: str) -> str: """ diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 8b2e439c3..d1c105591 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -406,7 +406,10 @@ def test_get_quote_currencies(default_conf, mocker): def test_validate_pairs(default_conf, mocker): # test exchange.validate_pairs directly api_mock = MagicMock() type(api_mock).markets = PropertyMock(return_value={ - 'ETH/BTC': {}, 'LTC/BTC': {}, 'XRP/BTC': {}, 'NEO/BTC': {} + 'ETH/BTC': {'quote': 'BTC'}, + 'LTC/BTC': {'quote': 'BTC'}, + 'XRP/BTC': {'quote': 'BTC'}, + 'NEO/BTC': {'quote': 'BTC'}, }) id_mock = PropertyMock(return_value='test_exchange') type(api_mock).id = id_mock @@ -454,9 +457,9 @@ def test_validate_pairs_exception(default_conf, mocker, caplog): def test_validate_pairs_restricted(default_conf, mocker, caplog): api_mock = MagicMock() type(api_mock).markets = PropertyMock(return_value={ - 'ETH/BTC': {}, 'LTC/BTC': {}, - 'XRP/BTC': {'info': {'IsRestricted': True}}, - 'NEO/BTC': {'info': 'TestString'}, # info can also be a string ... + 'ETH/BTC': {'quote': 'BTC'}, 'LTC/BTC': {'quote': 'BTC'}, + 'XRP/BTC': {'quote': 'BTC', 'info': {'IsRestricted': True}}, + 'NEO/BTC': {'quote': 'BTC', 'info': 'TestString'}, # info can also be a string ... }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') @@ -469,6 +472,37 @@ def test_validate_pairs_restricted(default_conf, mocker, caplog): f"on the exchange and eventually remove XRP/BTC from your whitelist.", caplog) +def test_validate_pairs_stakecompatibility(default_conf, mocker, caplog): + api_mock = MagicMock() + type(api_mock).markets = PropertyMock(return_value={ + 'ETH/BTC': {'quote': 'BTC'}, 'LTC/BTC': {'quote': 'BTC'}, + 'XRP/BTC': {'quote': 'BTC'}, 'NEO/BTC': {'quote': 'BTC'}, + 'HELLO-WORLD': {'quote': 'BTC'}, + }) + mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') + + Exchange(default_conf) + + +def test_validate_pairs_stakecompatibility_fail(default_conf, mocker, caplog): + default_conf['exchange']['pair_whitelist'].append('HELLO-WORLD') + api_mock = MagicMock() + type(api_mock).markets = PropertyMock(return_value={ + 'ETH/BTC': {'quote': 'BTC'}, 'LTC/BTC': {'quote': 'BTC'}, + 'XRP/BTC': {'quote': 'BTC'}, 'NEO/BTC': {'quote': 'BTC'}, + 'HELLO-WORLD': {'quote': 'USDT'}, + }) + mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') + + with pytest.raises(OperationalException, match=r"Stake-currency 'BTC' not compatible with.*"): + Exchange(default_conf) + @pytest.mark.parametrize("timeframe", [ ('5m'), ("1m"), ("15m"), ("1h") ]) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index d810305db..828db4d83 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -810,13 +810,6 @@ def test_validate_whitelist(default_conf): validate_config_consistency(conf) - conf = deepcopy(default_conf) - conf['stake_currency'] = 'USDT' - with pytest.raises(OperationalException, - match=r"Stake-currency 'USDT' not compatible with pair-whitelist.*"): - validate_config_consistency(conf) - - def test_load_config_test_comments() -> None: """ Load config with comments From 61037ab7b8f3f2467555c1a2a767580ea25f43a6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Feb 2020 21:50:27 +0100 Subject: [PATCH 1834/3421] Implement get_pair_base_curr and get_pair_quote_curr --- freqtrade/exchange/exchange.py | 12 ++++++++++++ freqtrade/freqtradebot.py | 6 ++++-- tests/commands/test_commands.py | 31 ++++++++++++++++--------------- tests/conftest.py | 29 ++++++++++++++++++++++++++++- tests/exchange/test_exchange.py | 15 ++++++++------- tests/test_freqtradebot.py | 2 ++ 6 files changed, 70 insertions(+), 25 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 8023417a3..0e0d2dabe 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -228,6 +228,18 @@ class Exchange: markets = self.markets return sorted(set([x['quote'] for _, x in markets.items()])) + def get_pair_quote_currency(self, pair: str) -> str: + """ + Return a pair's quote currency + """ + return self.markets[pair].get('quote') + + def get_pair_base_currency(self, pair: str) -> str: + """ + Return a pair's quote currency + """ + return self.markets[pair].get('base') + def klines(self, pair_interval: Tuple[str, str], copy: bool = True) -> DataFrame: if pair_interval in self._klines: return self._klines[pair_interval].copy() if copy else self._klines[pair_interval] diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 00d5c369a..38583b5ad 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1125,12 +1125,13 @@ class FreqtradeBot: if trade.fee_open == 0 or order['status'] == 'open': return order_amount + trade_base_currency = self.exchange.get_pair_base_currency(trade.pair) # use fee from order-dict if possible if ('fee' in order and order['fee'] is not None and (order['fee'].keys() >= {'currency', 'cost'})): if (order['fee']['currency'] is not None and order['fee']['cost'] is not None and - trade.pair.startswith(order['fee']['currency'])): + trade_base_currency == order['fee']['currency']): new_amount = order_amount - order['fee']['cost'] logger.info("Applying fee on amount for %s (from %s to %s) from Order", trade, order['amount'], new_amount) @@ -1145,6 +1146,7 @@ class FreqtradeBot: return order_amount amount = 0 fee_abs = 0 + trade_base_currency = self.exchange.get_pair_base_currency(trade.pair) for exectrade in trades: amount += exectrade['amount'] if ("fee" in exectrade and exectrade['fee'] is not None and @@ -1152,7 +1154,7 @@ class FreqtradeBot: # only applies if fee is in quote currency! if (exectrade['fee']['currency'] is not None and exectrade['fee']['cost'] is not None and - trade.pair.startswith(exectrade['fee']['currency'])): + trade_base_currency == exectrade['fee']['currency']): fee_abs += exectrade['fee']['cost'] if not isclose(amount, order_amount, abs_tol=constants.MATH_CLOSE_PREC): diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index a9fe0f637..fd8df4b56 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -217,8 +217,9 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ("Exchange Bittrex has 9 active markets: " - "BLK/BTC, ETH/BTC, ETH/USDT, LTC/BTC, LTC/USD, NEO/BTC, TKN/BTC, XLTCUSDT, XRP/BTC.\n" + assert ("Exchange Bittrex has 10 active markets: " + "BLK/BTC, ETH/BTC, ETH/USDT, LTC/BTC, LTC/ETH, LTC/USD, NEO/BTC, " + "TKN/BTC, XLTCUSDT, XRP/BTC.\n" in captured.out) patch_exchange(mocker, api_mock=api_mock, id="binance") @@ -231,7 +232,7 @@ def test_list_markets(mocker, markets, capsys): pargs['config'] = None start_list_markets(pargs, False) captured = capsys.readouterr() - assert re.match("\nExchange Binance has 9 active markets:\n", + assert re.match("\nExchange Binance has 10 active markets:\n", captured.out) patch_exchange(mocker, api_mock=api_mock, id="bittrex") @@ -243,8 +244,8 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ("Exchange Bittrex has 11 markets: " - "BLK/BTC, BTT/BTC, ETH/BTC, ETH/USDT, LTC/BTC, LTC/USD, LTC/USDT, NEO/BTC, " + assert ("Exchange Bittrex has 12 markets: " + "BLK/BTC, BTT/BTC, ETH/BTC, ETH/USDT, LTC/BTC, LTC/ETH, LTC/USD, LTC/USDT, NEO/BTC, " "TKN/BTC, XLTCUSDT, XRP/BTC.\n" in captured.out) @@ -256,8 +257,8 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), True) captured = capsys.readouterr() - assert ("Exchange Bittrex has 8 active pairs: " - "BLK/BTC, ETH/BTC, ETH/USDT, LTC/BTC, LTC/USD, NEO/BTC, TKN/BTC, XRP/BTC.\n" + assert ("Exchange Bittrex has 9 active pairs: " + "BLK/BTC, ETH/BTC, ETH/USDT, LTC/BTC, LTC/ETH, LTC/USD, NEO/BTC, TKN/BTC, XRP/BTC.\n" in captured.out) # Test list-pairs subcommand with --all: all pairs @@ -268,8 +269,8 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), True) captured = capsys.readouterr() - assert ("Exchange Bittrex has 10 pairs: " - "BLK/BTC, BTT/BTC, ETH/BTC, ETH/USDT, LTC/BTC, LTC/USD, LTC/USDT, NEO/BTC, " + assert ("Exchange Bittrex has 11 pairs: " + "BLK/BTC, BTT/BTC, ETH/BTC, ETH/USDT, LTC/BTC, LTC/ETH, LTC/USD, LTC/USDT, NEO/BTC, " "TKN/BTC, XRP/BTC.\n" in captured.out) @@ -282,8 +283,8 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ("Exchange Bittrex has 5 active markets with ETH, LTC as base currencies: " - "ETH/BTC, ETH/USDT, LTC/BTC, LTC/USD, XLTCUSDT.\n" + assert ("Exchange Bittrex has 6 active markets with ETH, LTC as base currencies: " + "ETH/BTC, ETH/USDT, LTC/BTC, LTC/ETH, LTC/USD, XLTCUSDT.\n" in captured.out) # active markets, base=LTC @@ -295,8 +296,8 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ("Exchange Bittrex has 3 active markets with LTC as base currency: " - "LTC/BTC, LTC/USD, XLTCUSDT.\n" + assert ("Exchange Bittrex has 4 active markets with LTC as base currency: " + "LTC/BTC, LTC/ETH, LTC/USD, XLTCUSDT.\n" in captured.out) # active markets, quote=USDT, USD @@ -384,7 +385,7 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ("Exchange Bittrex has 9 active markets:\n" + assert ("Exchange Bittrex has 10 active markets:\n" in captured.out) # Test tabular output, no markets found @@ -407,7 +408,7 @@ def test_list_markets(mocker, markets, capsys): ] start_list_markets(get_args(args), False) captured = capsys.readouterr() - assert ('["BLK/BTC","ETH/BTC","ETH/USDT","LTC/BTC","LTC/USD","NEO/BTC",' + assert ('["BLK/BTC","ETH/BTC","ETH/USDT","LTC/BTC","LTC/ETH","LTC/USD","NEO/BTC",' '"TKN/BTC","XLTCUSDT","XRP/BTC"]' in captured.out) diff --git a/tests/conftest.py b/tests/conftest.py index acb730330..000f62868 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -575,7 +575,34 @@ def get_markets(): } }, 'info': {}, - } + }, + 'LTC/ETH': { + 'id': 'LTCETH', + 'symbol': 'LTC/ETH', + 'base': 'LTC', + 'quote': 'ETH', + 'active': True, + 'precision': { + 'base': 8, + 'quote': 8, + 'amount': 3, + 'price': 5 + }, + 'limits': { + 'amount': { + 'min': 0.001, + 'max': 10000000.0 + }, + 'price': { + 'min': 1e-05, + 'max': 1000.0 + }, + 'cost': { + 'min': 0.01, + 'max': None + } + }, + }, } diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index d1c105591..98edd0dbb 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -400,7 +400,7 @@ def test_validate_stake_currency_error(default_conf, mocker, caplog): def test_get_quote_currencies(default_conf, mocker): ex = get_patched_exchange(mocker, default_conf) - assert set(ex.get_quote_currencies()) == set(['USD', 'BTC', 'USDT']) + assert set(ex.get_quote_currencies()) == set(['USD', 'ETH', 'BTC', 'USDT']) def test_validate_pairs(default_conf, mocker): # test exchange.validate_pairs directly @@ -1862,6 +1862,7 @@ def test_get_valid_pair_combination(default_conf, mocker, markets): # 'ETH/BTC': 'active': True # 'ETH/USDT': 'active': True # 'LTC/BTC': 'active': False + # 'LTC/ETH': 'active': True # 'LTC/USD': 'active': True # 'LTC/USDT': 'active': True # 'NEO/BTC': 'active': False @@ -1870,26 +1871,26 @@ def test_get_valid_pair_combination(default_conf, mocker, markets): # 'XRP/BTC': 'active': False # all markets ([], [], False, False, - ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', + ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/ETH', 'LTC/USD', 'LTC/USDT', 'NEO/BTC', 'TKN/BTC', 'XLTCUSDT', 'XRP/BTC']), # active markets ([], [], False, True, - ['BLK/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'NEO/BTC', + ['BLK/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/ETH', 'LTC/USD', 'NEO/BTC', 'TKN/BTC', 'XLTCUSDT', 'XRP/BTC']), # all pairs ([], [], True, False, - ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', + ['BLK/BTC', 'BTT/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/ETH', 'LTC/USD', 'LTC/USDT', 'NEO/BTC', 'TKN/BTC', 'XRP/BTC']), # active pairs ([], [], True, True, - ['BLK/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'NEO/BTC', + ['BLK/BTC', 'ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/ETH', 'LTC/USD', 'NEO/BTC', 'TKN/BTC', 'XRP/BTC']), # all markets, base=ETH, LTC (['ETH', 'LTC'], [], False, False, - ['ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), + ['ETH/BTC', 'ETH/USDT', 'LTC/BTC', 'LTC/ETH', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), # all markets, base=LTC (['LTC'], [], False, False, - ['LTC/BTC', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), + ['LTC/BTC', 'LTC/ETH', 'LTC/USD', 'LTC/USDT', 'XLTCUSDT']), # all markets, quote=USDT ([], ['USDT'], False, False, ['ETH/USDT', 'LTC/USDT', 'XLTCUSDT']), diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 20db46fac..9a7816d35 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2192,6 +2192,7 @@ def test_handle_timedout_limit_buy(mocker, default_conf, limit_buy_order) -> Non Trade.session = MagicMock() trade = MagicMock() + trade.pair = 'LTC/ETH' limit_buy_order['remaining'] = limit_buy_order['amount'] assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 @@ -2215,6 +2216,7 @@ def test_handle_timedout_limit_buy_corder_empty(mocker, default_conf, limit_buy_ Trade.session = MagicMock() trade = MagicMock() + trade.pair = 'LTC/ETH' limit_buy_order['remaining'] = limit_buy_order['amount'] assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 From cd7efde6c0618c3a40d44432dece4592510e5c87 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Mon, 24 Feb 2020 22:06:21 +0100 Subject: [PATCH 1835/3421] Fixed coloring so it's only targeting the values not the table borders --- freqtrade/optimize/hyperopt.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 7ff5c3500..9c18d6803 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -313,22 +313,12 @@ class Hyperopt: 'loss', 'is_initial_point', 'is_best']] trials.columns = ['Best', 'Epoch', 'Trades', 'Avg profit', 'Total profit', 'Profit', 'Avg duration', 'Objective', 'is_initial_point', 'is_best'] - + trials['is_profit'] = False trials.loc[trials['is_initial_point'], 'Best'] = '*' trials.loc[trials['is_best'], 'Best'] = 'Best' trials['Objective'] = trials['Objective'].astype(str) - trials = trials.drop(columns=['is_initial_point', 'is_best']) - - if print_colorized: - for i in range(len(trials)): - if trials.loc[i]['Total profit'] > 0: - trials.at[i, 'Best'] = Fore.GREEN + trials.loc[i]['Best'] - trials.at[i, 'Objective'] = "{}{}".format(trials.loc[i]['Objective'], - Fore.RESET) - if 'Best' in trials.loc[i]['Best'] and highlight_best: - trials.at[i, 'Best'] = Style.BRIGHT + trials.loc[i]['Best'] - trials.at[i, 'Objective'] = "{}{}".format(trials.loc[i]['Objective'], - Style.RESET_ALL) + trials.loc[trials['Total profit'] > 0, 'is_profit'] = True + trials['Trades'] = trials['Trades'].astype(str) trials['Epoch'] = trials['Epoch'].apply( lambda x: "{}/{}".format(x, total_epochs)) @@ -340,9 +330,21 @@ class Hyperopt: lambda x: '{: 11.8f} '.format(x) + config['stake_currency'] if not isna(x) else x) trials['Avg duration'] = trials['Avg duration'].apply( lambda x: '{:,.1f}m'.format(x) if not isna(x) else x) + if print_colorized: + for i in range(len(trials)): + if trials.loc[i]['is_profit']: + for z in range(len(trials.loc[i])-3): + trials.iat[i, z] = "{}{}{}".format(Fore.GREEN, + str(trials.loc[i][z]), Fore.RESET) + if trials.loc[i]['is_best'] and highlight_best: + for z in range(len(trials.loc[i])-3): + trials.iat[i, z] = "{}{}{}".format(Style.BRIGHT, + str(trials.loc[i][z]), Style.RESET_ALL) + + trials = trials.drop(columns=['is_initial_point', 'is_best', 'is_profit']) print(tabulate(trials.to_dict(orient='list'), headers='keys', tablefmt='psql', - stralign="right")) + stralign="right")) def has_space(self, space: str) -> bool: """ From e9448dc5e248f702b80ddd9be62faefd6e1526d1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 25 Feb 2020 07:01:23 +0100 Subject: [PATCH 1836/3421] Add tsts for quote and base currency --- tests/exchange/test_exchange.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 98edd0dbb..def4e6ab6 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -403,6 +403,28 @@ def test_get_quote_currencies(default_conf, mocker): assert set(ex.get_quote_currencies()) == set(['USD', 'ETH', 'BTC', 'USDT']) +@pytest.mark.parametrize('pair,expected', [ + ('XRP/BTC', 'BTC'), + ('LTC/USD', 'USD'), + ('ETH/USDT', 'USDT'), + ('XLTCUSDT', 'USDT'), +]) +def test_get_pair_quote_currency(default_conf, mocker, pair, expected): + ex = get_patched_exchange(mocker, default_conf) + assert ex.get_pair_quote_currency(pair) == expected + + +@pytest.mark.parametrize('pair,expected', [ + ('XRP/BTC', 'XRP'), + ('LTC/USD', 'LTC'), + ('ETH/USDT', 'ETH'), + ('XLTCUSDT', 'LTC'), +]) +def test_get_pair_base_currency(default_conf, mocker, pair, expected): + ex = get_patched_exchange(mocker, default_conf) + assert ex.get_pair_base_currency(pair) == expected + + def test_validate_pairs(default_conf, mocker): # test exchange.validate_pairs directly api_mock = MagicMock() type(api_mock).markets = PropertyMock(return_value={ From e8eaa8920ea397a9403ece95d27c3a647ed428d8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 25 Feb 2020 07:01:31 +0100 Subject: [PATCH 1837/3421] Use get_base_currency instead of splitting by / --- freqtrade/freqtradebot.py | 3 +-- freqtrade/wallets.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 38583b5ad..424a6a220 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -938,8 +938,7 @@ class FreqtradeBot: """ # Update wallets to ensure amounts tied up in a stoploss is now free! self.wallets.update() - - wallet_amount = self.wallets.get_free(pair.split('/')[0]) + wallet_amount = self.wallets.get_free(self.exchange.get_pair_base_currency(pair)) logger.debug(f"{pair} - Wallet: {wallet_amount} - Trade-amount: {amount}") if wallet_amount >= amount: return amount diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index dd5e34fe6..b913155bc 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -74,7 +74,7 @@ class Wallets: ) for trade in open_trades: - curr = trade.pair.split('/')[0] + curr = self._exchange.get_pair_base_currency(trade.pair) _wallets[curr] = Wallet( curr, trade.amount, From d34515a5de5b08e21cfc2e6854d4037758fc1f11 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 25 Feb 2020 07:03:11 +0100 Subject: [PATCH 1838/3421] Remove constraint to have pairs in base/quote format --- freqtrade/constants.py | 2 -- tests/exchange/test_exchange.py | 1 + tests/test_configuration.py | 8 +------- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 105cd6b53..1504d1f1c 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -251,7 +251,6 @@ CONF_SCHEMA = { 'type': 'array', 'items': { 'type': 'string', - 'pattern': '^[0-9A-Z]+/[0-9A-Z]+$' }, 'uniqueItems': True }, @@ -259,7 +258,6 @@ CONF_SCHEMA = { 'type': 'array', 'items': { 'type': 'string', - 'pattern': '^[0-9A-Z]+/[0-9A-Z]+$' }, 'uniqueItems': True }, diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index def4e6ab6..ca2bedb01 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -525,6 +525,7 @@ def test_validate_pairs_stakecompatibility_fail(default_conf, mocker, caplog): with pytest.raises(OperationalException, match=r"Stake-currency 'BTC' not compatible with.*"): Exchange(default_conf) + @pytest.mark.parametrize("timeframe", [ ('5m'), ("1m"), ("15m"), ("1h") ]) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 828db4d83..a58e88ea0 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -34,13 +34,6 @@ def all_conf(): return conf -def test_load_config_invalid_pair(default_conf) -> None: - default_conf['exchange']['pair_whitelist'].append('ETH-BTC') - - with pytest.raises(ValidationError, match=r'.*does not match.*'): - validate_config_schema(default_conf) - - def test_load_config_missing_attributes(default_conf) -> None: conf = deepcopy(default_conf) conf.pop('exchange') @@ -810,6 +803,7 @@ def test_validate_whitelist(default_conf): validate_config_consistency(conf) + def test_load_config_test_comments() -> None: """ Load config with comments From 31ac4598ba966b60be897ef22884442fa63eeb6f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 25 Feb 2020 07:16:37 +0100 Subject: [PATCH 1839/3421] Fix last occurances of pair splitting --- freqtrade/exchange/exchange.py | 4 ++-- freqtrade/pairlist/VolumePairList.py | 4 ++-- freqtrade/rpc/rpc.py | 4 ++-- tests/rpc/test_rpc.py | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 0e0d2dabe..6964986b0 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -232,13 +232,13 @@ class Exchange: """ Return a pair's quote currency """ - return self.markets[pair].get('quote') + return self.markets.get(pair, {}).get('quote') def get_pair_base_currency(self, pair: str) -> str: """ Return a pair's quote currency """ - return self.markets[pair].get('base') + return self.markets.get(pair, {}).get('base') def klines(self, pair_interval: Tuple[str, str], copy: bool = True) -> DataFrame: if pair_interval in self._klines: diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index e50dafb63..e1cdb4a43 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -91,9 +91,9 @@ class VolumePairList(IPairList): if self._pairlist_pos == 0: # If VolumePairList is the first in the list, use fresh pairlist - # check length so that we make sure that '/' is actually in the string + # check base currency equals to stake currency. filtered_tickers = [v for k, v in tickers.items() - if (len(k.split('/')) == 2 and k.split('/')[1] == base_currency + if (self._exchange.get_pair_quote_currency(k) == base_currency and v[key] is not None)] else: # If other pairlist is in front, use the incomming pairlist. diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 3411318bb..d680d36b1 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -462,7 +462,7 @@ class RPC: # Check pair is in stake currency stake_currency = self._freqtrade.config.get('stake_currency') - if not pair.endswith(stake_currency): + if not self._freqtrade.exchange.get_pair_quote_currency(pair) == stake_currency: raise RPCException( f'Wrong pair selected. Please pairs with stake {stake_currency} pairs only') # check if valid pair @@ -517,7 +517,7 @@ class RPC: if add: stake_currency = self._freqtrade.config.get('stake_currency') for pair in add: - if (pair.endswith(stake_currency) + if (self._freqtrade.exchange.get_pair_quote_currency(pair) == stake_currency and pair not in self._freqtrade.pairlists.blacklist): self._freqtrade.pairlists.blacklist.append(pair) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index a35bfa0d6..3c99e6b92 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -687,7 +687,7 @@ def test_rpcforcebuy(mocker, default_conf, ticker, fee, limit_buy_order) -> None # Test buy pair not with stakes with pytest.raises(RPCException, match=r'Wrong pair selected. Please pairs with stake.*'): - rpc._rpc_forcebuy('XRP/ETH', 0.0001) + rpc._rpc_forcebuy('LTC/ETH', 0.0001) pair = 'XRP/BTC' # Test not buying From 47e46bf205602caaa19b88fdfb863a308ba1a18b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 25 Feb 2020 14:48:46 +0100 Subject: [PATCH 1840/3421] Add second example using dataprovider and current price --- docs/strategy-advanced.md | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index a60a6ea47..bdcd29f46 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -40,7 +40,7 @@ class Awesomestrategy(IStrategy): return True elif trade.open_rate < 1 and trade.open_date < datetime.utcnow() - timedelta(hours=24): return True - return True + return False def check_sell_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool: @@ -50,8 +50,43 @@ class Awesomestrategy(IStrategy): return True elif trade.open_rate < 1 and trade.open_date < datetime.utcnow() - timedelta(hours=24): return True - return True + return False ``` !!! Note For the above example, `unfilledtimeout` must be set to something bigger than 24h, otherwise that type of timeout will apply first. + + +### Custom order timeout example (using additional data) + +``` python +from datetime import datetime, timestamp +from freqtrade.persistence import Trade + +class Awesomestrategy(IStrategy): + + # ... populate_* methods + + # Set unfilledtimeout to 25 hours, since our maximum timeout from below is 24 hours. + unfilledtimeout = { + 'buy': 60 * 25, + 'sell': 60 * 25 + } + + def check_buy_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool: + ob = self.dp.orderbook(pair, 1) + current_price = ob['bids'][0][0] + # Cancel buy order if price is more than 2% above the order. + if order['price'] * 0.98 < best_bid: + return True + return False + + + def check_sell_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool: + ob = self.dp.orderbook(pair, 1) + current_price = ob['asks'][0][0] + # Cancel sell order if price is more than 2% below the order. + if order['price'] * 1.02 > current_price: + return True + return False +``` From cfc22577bed042947d40cfa15676c1456aa6f7d4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 25 Feb 2020 16:52:01 +0100 Subject: [PATCH 1841/3421] Add timeframe_to_minutes to ROI documentation --- docs/strategy-customization.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 07833da34..0dfeb3978 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -249,6 +249,22 @@ minimal_roi = { While technically not completely disabled, this would sell once the trade reaches 10000% Profit. +To use times based on candles, the following snippet can be handy. +This will allow you to change the ticket_interval, and ROI will be set as candles (e.g. after 3 candles ...) + +``` python +from freqtrade.exchange import timeframe_to_minutes + +class AwesomeStrategy(IStrategy): + + ticker_interval = '1d' + ticker_interval_mins = timeframe_to_minutes(ticker_interval) + minimal_roi = { + (ticker_interval_mins * 3): 0.02, # After 3 candles + (ticker_interval_mins * 6): 0.01, # After 6 candles + } +``` + ### Stoploss Setting a stoploss is highly recommended to protect your capital from strong moves against you. From d44f6651c4a63030dcaaecbda1431a020cc21ef0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 25 Feb 2020 19:55:23 +0100 Subject: [PATCH 1842/3421] Fix small parenteses bug --- docs/strategy-advanced.md | 4 ++-- freqtrade/freqtradebot.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index bdcd29f46..8d241cc86 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -77,7 +77,7 @@ class Awesomestrategy(IStrategy): ob = self.dp.orderbook(pair, 1) current_price = ob['bids'][0][0] # Cancel buy order if price is more than 2% above the order. - if order['price'] * 0.98 < best_bid: + if order['price'] > current_price * 1.02: return True return False @@ -86,7 +86,7 @@ class Awesomestrategy(IStrategy): ob = self.dp.orderbook(pair, 1) current_price = ob['asks'][0][0] # Cancel sell order if price is more than 2% below the order. - if order['price'] * 1.02 > current_price: + if order['price'] < current_price * 0.98: return True return False ``` diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5adbe76f4..05cd60e5e 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -847,24 +847,24 @@ class FreqtradeBot: self.wallets.update() continue - if ((order['side'] == 'buy' and order['status'] == 'canceled') + if (order['side'] == 'buy' and (order['status'] == 'canceled' or self._check_timed_out('buy', order) or strategy_safe_wrapper(self.strategy.check_buy_timeout, default_retval=False)(pair=trade.pair, trade=trade, - order=order)): + order=order))): self.handle_timedout_limit_buy(trade, order) self.wallets.update() order_type = self.strategy.order_types['buy'] self._notify_buy_cancel(trade, order_type) - elif ((order['side'] == 'sell' and order['status'] == 'canceled') + elif (order['side'] == 'sell' and (order['status'] == 'canceled' or self._check_timed_out('sell', order) or strategy_safe_wrapper(self.strategy.check_sell_timeout, default_retval=False)(pair=trade.pair, trade=trade, - order=order)): + order=order))): self.handle_timedout_limit_sell(trade, order) self.wallets.update() order_type = self.strategy.order_types['sell'] From a030ce9348bd5229005631fbdd2e91908f057f7a Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 25 Feb 2020 20:22:59 +0100 Subject: [PATCH 1843/3421] Reformat if condition --- freqtrade/freqtradebot.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 05cd60e5e..fa0981448 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -847,7 +847,8 @@ class FreqtradeBot: self.wallets.update() continue - if (order['side'] == 'buy' and (order['status'] == 'canceled' + if (order['side'] == 'buy' and ( + order['status'] == 'canceled' or self._check_timed_out('buy', order) or strategy_safe_wrapper(self.strategy.check_buy_timeout, default_retval=False)(pair=trade.pair, @@ -859,7 +860,8 @@ class FreqtradeBot: order_type = self.strategy.order_types['buy'] self._notify_buy_cancel(trade, order_type) - elif (order['side'] == 'sell' and (order['status'] == 'canceled' + elif (order['side'] == 'sell' and ( + order['status'] == 'canceled' or self._check_timed_out('sell', order) or strategy_safe_wrapper(self.strategy.check_sell_timeout, default_retval=False)(pair=trade.pair, From 7d7318a3ea5af47dada77e6595142e8c4bba8237 Mon Sep 17 00:00:00 2001 From: gaugau3000 Date: Tue, 25 Feb 2020 19:41:20 +0000 Subject: [PATCH 1844/3421] fix_wrong_order_type --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 0b9519688..6f139bebe 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -340,7 +340,7 @@ This is most of the time the default time in force. It means the order will rema on exchange till it is canceled by user. It can be fully or partially fulfilled. If partially fulfilled, the remaining will stay on the exchange till cancelled. -**FOK (Full Or Kill):** +**FOK (Fill Or Kill):** It means if the order is not executed immediately AND fully then it is canceled by the exchange. From 76c449c0c232032d128a854764356cebfe504fcb Mon Sep 17 00:00:00 2001 From: gaugau3000 Date: Tue, 25 Feb 2020 19:45:23 +0000 Subject: [PATCH 1845/3421] volume_pair_list_extra_doc_infos --- docs/configuration.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/configuration.md b/docs/configuration.md index 6f139bebe..6e8813211 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -532,6 +532,8 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis `refresh_period` allows setting the period (in seconds), at which the pairlist will be refreshed. Defaults to 1800s (30 minutes). +`VolumePairList` is based on the volume of the last 24 hours. + ```json "pairlists": [{ "method": "VolumePairList", From ce2e039e5fb9eba15864a1a3df45be17120127d7 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Wed, 26 Feb 2020 01:58:32 +0300 Subject: [PATCH 1846/3421] Update docs/configuration.md --- docs/configuration.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 6e8813211..5d1820bdb 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -532,7 +532,11 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis `refresh_period` allows setting the period (in seconds), at which the pairlist will be refreshed. Defaults to 1800s (30 minutes). -`VolumePairList` is based on the volume of the last 24 hours. +`VolumePairList` is based on the ticker data, as reported by the ccxt library: + +* The `bidVolume` is the volume (amount) of current best bid in the orderbook. +* The `askVolume` is the volume (amount) of current best ask in the orderbook. +* The `quoteVolume` is the amount of quote (stake) currency traded (bought or sold) in last 24 hours. ```json "pairlists": [{ From df49b98c2578a9d45c0a052f643d00e6fbba2bdd Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Feb 2020 06:40:13 +0100 Subject: [PATCH 1847/3421] Implement wording-changes Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/strategy-customization.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 0dfeb3978..acd985287 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -249,8 +249,8 @@ minimal_roi = { While technically not completely disabled, this would sell once the trade reaches 10000% Profit. -To use times based on candles, the following snippet can be handy. -This will allow you to change the ticket_interval, and ROI will be set as candles (e.g. after 3 candles ...) +To use times based on candle duration (ticker_interval or timeframe), the following snippet can be handy. +This will allow you to change the ticket_interval for the strategy, and ROI times will still be set as candles (e.g. after 3 candles ...) ``` python from freqtrade.exchange import timeframe_to_minutes From af4469f073501150c4aaa520fcd614ea18177fad Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Feb 2020 06:43:15 +0100 Subject: [PATCH 1848/3421] Convert to str to avoid errors --- docs/strategy-customization.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index acd985287..fd40a971e 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -260,8 +260,8 @@ class AwesomeStrategy(IStrategy): ticker_interval = '1d' ticker_interval_mins = timeframe_to_minutes(ticker_interval) minimal_roi = { - (ticker_interval_mins * 3): 0.02, # After 3 candles - (ticker_interval_mins * 6): 0.01, # After 6 candles + str(ticker_interval_mins * 3)): 0.02, # After 3 candles + str(ticker_interval_mins * 6)): 0.01, # After 6 candles } ``` From 1e869b86f279f71c42d7f2bb6a34a2eb4ed60b47 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Feb 2020 06:54:04 +0100 Subject: [PATCH 1849/3421] Update checkout aciton to v2 https://github.com/actions/checkout/issues/23 suggests that it's fixed in v2. --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cc8906af5..dc3d324a1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: python-version: [3.7, 3.8] steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v1 @@ -118,7 +118,7 @@ jobs: python-version: [3.7] steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v1 @@ -175,7 +175,7 @@ jobs: docs_check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Documentation syntax run: | @@ -195,7 +195,7 @@ jobs: runs-on: ubuntu-18.04 if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade' steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v1 From 1021ffa1c3051d17482a00e79eef5a2b211cd103 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Feb 2020 07:00:08 +0100 Subject: [PATCH 1850/3421] Apply suggestions from code review Add suggested changes to comments Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- freqtrade/pairlist/VolumePairList.py | 2 +- freqtrade/rpc/rpc.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index e1cdb4a43..d067d5e8a 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -91,7 +91,7 @@ class VolumePairList(IPairList): if self._pairlist_pos == 0: # If VolumePairList is the first in the list, use fresh pairlist - # check base currency equals to stake currency. + # Check if pair quote currency equals to the stake currency. filtered_tickers = [v for k, v in tickers.items() if (self._exchange.get_pair_quote_currency(k) == base_currency and v[key] is not None)] diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index d680d36b1..1e4eaa3e0 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -460,7 +460,7 @@ class RPC: if self._freqtrade.state != State.RUNNING: raise RPCException('trader is not running') - # Check pair is in stake currency + # Check if pair quote currency equals to the stake currency. stake_currency = self._freqtrade.config.get('stake_currency') if not self._freqtrade.exchange.get_pair_quote_currency(pair) == stake_currency: raise RPCException( From 4e218be51db55e16bccc5513be244b98467ccb9f Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Feb 2020 07:08:09 +0100 Subject: [PATCH 1851/3421] Don't use markets[pair]['quote'] --- freqtrade/exchange/exchange.py | 2 +- freqtrade/freqtradebot.py | 4 ++-- freqtrade/pairlist/IPairList.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 6964986b0..cc0ecc6cd 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -334,7 +334,7 @@ class Exchange: logger.warning(f"Pair {pair} is restricted for some users on this exchange." f"Please check if you are impacted by this restriction " f"on the exchange and eventually remove {pair} from your whitelist.") - if not self.markets[pair].get('quote') == self._config['stake_currency']: + if not self.get_pair_quote_currency(pair) == self._config['stake_currency']: invalid_pairs.append(pair) if invalid_pairs: raise OperationalException( diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 424a6a220..c3b642095 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -938,7 +938,8 @@ class FreqtradeBot: """ # Update wallets to ensure amounts tied up in a stoploss is now free! self.wallets.update() - wallet_amount = self.wallets.get_free(self.exchange.get_pair_base_currency(pair)) + trade_base_currency = self.exchange.get_pair_base_currency(pair) + wallet_amount = self.wallets.get_free(trade_base_currency) logger.debug(f"{pair} - Wallet: {wallet_amount} - Trade-amount: {amount}") if wallet_amount >= amount: return amount @@ -1145,7 +1146,6 @@ class FreqtradeBot: return order_amount amount = 0 fee_abs = 0 - trade_base_currency = self.exchange.get_pair_base_currency(trade.pair) for exectrade in trades: amount += exectrade['amount'] if ("fee" in exectrade and exectrade['fee'] is not None and diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index 7d489ece7..d45a329dd 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -100,7 +100,7 @@ class IPairList(ABC): f"{self._exchange.name}. Removing it from whitelist..") continue - if markets[pair]['quote'] != self._config['stake_currency']: + if self._exchange.get_pair_quote_currency(pair) != self._config['stake_currency']: logger.warning(f"Pair {pair} is not compatible with your stake currency " f"{self._config['stake_currency']}. Removing it from whitelist..") continue From f38accb77b05accfbf328e62c5b417ed7613d527 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Feb 2020 07:09:54 +0100 Subject: [PATCH 1852/3421] Return empty string if no quote / base currency can be found --- freqtrade/exchange/exchange.py | 4 ++-- tests/exchange/test_exchange.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index cc0ecc6cd..21627679f 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -232,13 +232,13 @@ class Exchange: """ Return a pair's quote currency """ - return self.markets.get(pair, {}).get('quote') + return self.markets.get(pair, {}).get('quote', '') def get_pair_base_currency(self, pair: str) -> str: """ Return a pair's quote currency """ - return self.markets.get(pair, {}).get('base') + return self.markets.get(pair, {}).get('base', '') def klines(self, pair_interval: Tuple[str, str], copy: bool = True) -> DataFrame: if pair_interval in self._klines: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index ca2bedb01..3a653edb6 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -408,6 +408,7 @@ def test_get_quote_currencies(default_conf, mocker): ('LTC/USD', 'USD'), ('ETH/USDT', 'USDT'), ('XLTCUSDT', 'USDT'), + ('XRP/NOCURRENCY', ''), ]) def test_get_pair_quote_currency(default_conf, mocker, pair, expected): ex = get_patched_exchange(mocker, default_conf) @@ -419,6 +420,7 @@ def test_get_pair_quote_currency(default_conf, mocker, pair, expected): ('LTC/USD', 'LTC'), ('ETH/USDT', 'ETH'), ('XLTCUSDT', 'LTC'), + ('XRP/NOCURRENCY', ''), ]) def test_get_pair_base_currency(default_conf, mocker, pair, expected): ex = get_patched_exchange(mocker, default_conf) From a29653b510722251debc426981e3afc1d9929a4d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Feb 2020 08:59:27 +0100 Subject: [PATCH 1853/3421] Wording changes to install docs Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/configuration.md | 4 ++-- docs/installation.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 234ff49ba..3844f2812 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -656,8 +656,8 @@ You should also make sure to read the [Exchanges](exchanges.md) section of the d ### Setup your exchange account -You will need to create API Keys (usually you get `key` and `secret`) from the Exchange website and you'll need to insert this into the appropriate fields in the configuration or when asked by the installation script. -API Keys are usually only required for real / production trading, but are not required for paper-trading / dry-run. +You will need to create API Keys (usually you get `key` and `secret`, some exchanges supply it with `password`) from the Exchange website and you'll need to insert this into the appropriate fields in the configuration or when asked by the installation script. +API Keys are usually only required for live trade (trading for real money, bot running in the "production mode", executing real orders on the exchange) and are not required for the bot running in the dry-run (trade simulation) mode. When you setup the bot in the dry-run mode, you may fill these fields with empty values. ### Using proxy with Freqtrade diff --git a/docs/installation.md b/docs/installation.md index 5a15be234..88e2ef6eb 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -2,7 +2,7 @@ This page explains how to prepare your environment for running the bot. -Please consider using the prebuilt [docker images](docker.md) to get started quickly while trying out freqtrade. +Please consider using the prebuilt [docker images](docker.md) to get started quickly while trying out freqtrade evaluating how it operates. ## Prerequisite From 8ae0f99a960fa4e7bdb615fa19c29fac887cb9e8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Feb 2020 09:05:48 +0100 Subject: [PATCH 1854/3421] Remove duplicate section --- docs/configuration.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 3844f2812..e0dc43f5d 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -628,8 +628,8 @@ you run it in production mode. ### Setup your exchange account -You will need to create API Keys (usually you get `key` and `secret`) from the Exchange website and you'll need to insert this into the appropriate fields in the configuration or when asked by the installation script. -API Keys are usually only required for real / production trading, but are not required for paper-trading / dry-run. +You will need to create API Keys (usually you get `key` and `secret`, some exchanges require an additional `password`) from the Exchange website and you'll need to insert this into the appropriate fields in the configuration or when asked by the `freqtrade new-config` command. +API Keys are usually only required for live trading (trading for real money, bot running in "production mode", executing real orders on the exchange) and are not required for the bot running in dry-run (trade simulation) mode. When you setup the bot in dry-run mode, you may fill these fields with empty values. ### To switch your bot in production mode @@ -654,12 +654,6 @@ API Keys are usually only required for real / production trading, but are not re You should also make sure to read the [Exchanges](exchanges.md) section of the documentation to be aware of potential configuration details specific to your exchange. -### Setup your exchange account - -You will need to create API Keys (usually you get `key` and `secret`, some exchanges supply it with `password`) from the Exchange website and you'll need to insert this into the appropriate fields in the configuration or when asked by the installation script. -API Keys are usually only required for live trade (trading for real money, bot running in the "production mode", executing real orders on the exchange) and are not required for the bot running in the dry-run (trade simulation) mode. When you setup the bot in the dry-run mode, you may fill these fields with empty values. - - ### Using proxy with Freqtrade To use a proxy with freqtrade, add the kwarg `"aiohttp_trust_env"=true` to the `"ccxt_async_kwargs"` dict in the exchange section of the configuration. From f91d7beaa16edea12c6837489ae2f6d55e376a87 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Feb 2020 13:51:16 +0100 Subject: [PATCH 1855/3421] Fix constants wrong parenteses --- freqtrade/constants.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 1504d1f1c..743070196 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -15,6 +15,7 @@ UNLIMITED_STAKE_AMOUNT = 'unlimited' DEFAULT_AMOUNT_RESERVE_PERCENT = 0.05 REQUIRED_ORDERTIF = ['buy', 'sell'] REQUIRED_ORDERTYPES = ['buy', 'sell', 'stoploss', 'stoploss_on_exchange'] +ORDERBOOK_SIDES = ['ask', 'bid'] ORDERTYPE_POSSIBILITIES = ['limit', 'market'] ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc'] AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', @@ -113,15 +114,15 @@ CONF_SCHEMA = { 'minimum': 0, 'maximum': 1, 'exclusiveMaximum': False, - 'use_order_book': {'type': 'boolean'}, - 'order_book_top': {'type': 'integer', 'maximum': 20, 'minimum': 1}, - 'check_depth_of_market': { - 'type': 'object', - 'properties': { - 'enabled': {'type': 'boolean'}, - 'bids_to_ask_delta': {'type': 'number', 'minimum': 0}, - } - }, + }, + 'use_order_book': {'type': 'boolean'}, + 'order_book_top': {'type': 'integer', 'maximum': 20, 'minimum': 1}, + 'check_depth_of_market': { + 'type': 'object', + 'properties': { + 'enabled': {'type': 'boolean'}, + 'bids_to_ask_delta': {'type': 'number', 'minimum': 0}, + } }, }, 'required': ['ask_last_balance'] From de48a697b0a5abdee5b012f2b5b919d0fe06cb9a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Feb 2020 14:06:42 +0100 Subject: [PATCH 1856/3421] Use price_side for get_sell_rate --- freqtrade/constants.py | 3 +++ freqtrade/freqtradebot.py | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 743070196..ac1a8a6a9 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -115,6 +115,7 @@ CONF_SCHEMA = { 'maximum': 1, 'exclusiveMaximum': False, }, + 'price_side': {'type': 'string', 'enum': ORDERBOOK_SIDES, 'default': 'bid'}, 'use_order_book': {'type': 'boolean'}, 'order_book_top': {'type': 'integer', 'maximum': 20, 'minimum': 1}, 'check_depth_of_market': { @@ -130,6 +131,7 @@ CONF_SCHEMA = { 'ask_strategy': { 'type': 'object', 'properties': { + 'price_side': {'type': 'string', 'enum': ORDERBOOK_SIDES, 'default': 'ask'}, 'use_order_book': {'type': 'boolean'}, 'order_book_min': {'type': 'integer', 'minimum': 1}, 'order_book_max': {'type': 'integer', 'minimum': 1, 'maximum': 50}, @@ -300,6 +302,7 @@ SCHEMA_TRADE_REQUIRED = [ 'last_stake_amount_min_ratio', 'dry_run', 'dry_run_wallet', + 'ask_strategy', 'bid_strategy', 'unfilledtimeout', 'stoploss', diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index dffec940c..5e8f1cc98 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -639,10 +639,10 @@ class FreqtradeBot: logger.debug('Using order book to get sell rate') order_book = self.exchange.get_order_book(pair, 1) - rate = order_book['bids'][0][0] + rate = order_book[f"{config_ask_strategy['price_side']}s"][0][0] else: - rate = self.exchange.fetch_ticker(pair)['bid'] + rate = self.exchange.fetch_ticker(pair)[config_ask_strategy['price_side']] self._sell_rate_cache[pair] = rate return rate From 5f712320380824f2140b82e5d6a328ff90f53beb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Feb 2020 14:08:16 +0100 Subject: [PATCH 1857/3421] Refactor get_buy_rate to use rate variable --- freqtrade/freqtradebot.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5e8f1cc98..aaa66fe81 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -242,11 +242,10 @@ class FreqtradeBot: logger.info(f"Using cached buy rate for {pair}.") return rate - config_bid_strategy = self.config.get('bid_strategy', {}) - if 'use_order_book' in config_bid_strategy and\ - config_bid_strategy.get('use_order_book', False): + bid_strategy = self.config.get('bid_strategy', {}) + if 'use_order_book' in bid_strategy and bid_strategy.get('use_order_book', False): logger.info('Getting price from order book') - order_book_top = config_bid_strategy.get('order_book_top', 1) + order_book_top = bid_strategy.get('order_book_top', 1) order_book = self.exchange.get_order_book(pair, order_book_top) logger.debug('order_book %s', order_book) # top 1 = index 0 @@ -256,11 +255,12 @@ class FreqtradeBot: else: logger.info('Using Last Ask / Last Price') ticker = self.exchange.fetch_ticker(pair) - if ticker['ask'] < ticker['last']: - ticker_rate = ticker['ask'] + rate = ticker['ask'] + if rate < ticker['last']: + ticker_rate = rate else: balance = self.config['bid_strategy']['ask_last_balance'] - ticker_rate = ticker['ask'] + balance * (ticker['last'] - ticker['ask']) + ticker_rate = rate + balance * (ticker['last'] - rate) used_rate = ticker_rate self._buy_rate_cache[pair] = used_rate From e4b29491888c05444ec47599238926597ecac83a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Feb 2020 14:13:43 +0100 Subject: [PATCH 1858/3421] Change buy_rate calculation to use price_side --- freqtrade/freqtradebot.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index aaa66fe81..2c9a960a4 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -244,18 +244,20 @@ class FreqtradeBot: bid_strategy = self.config.get('bid_strategy', {}) if 'use_order_book' in bid_strategy and bid_strategy.get('use_order_book', False): - logger.info('Getting price from order book') + logger.info( + f"Getting price from order book {bid_strategy['price_side'].capitalize()} side." + ) order_book_top = bid_strategy.get('order_book_top', 1) order_book = self.exchange.get_order_book(pair, order_book_top) logger.debug('order_book %s', order_book) # top 1 = index 0 - order_book_rate = order_book['bids'][order_book_top - 1][0] - logger.info('...top %s order book buy rate %0.8f', order_book_top, order_book_rate) + order_book_rate = order_book[f"{bid_strategy['price_side']}s"][order_book_top - 1][0] + logger.info(f'...top {order_book_top} order book buy rate {order_book_rate:.8f}') used_rate = order_book_rate else: - logger.info('Using Last Ask / Last Price') + logger.info(f"Using Last {bid_strategy['price_side'].capitalize()} / Last Price") ticker = self.exchange.fetch_ticker(pair) - rate = ticker['ask'] + rate = ticker[bid_strategy['price_side']] if rate < ticker['last']: ticker_rate = rate else: From e7b9891335ba13abdcf1445b7cc354db8a51792e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Feb 2020 14:27:03 +0100 Subject: [PATCH 1859/3421] Adapt rpc tests to corrected price side --- tests/rpc/test_rpc.py | 24 +++++++++++----------- tests/rpc/test_rpc_apiserver.py | 8 ++++---- tests/rpc/test_rpc_telegram.py | 36 ++++++++++++++++----------------- 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 93b6f6058..6319ab9e6 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -51,13 +51,13 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_date_hum': ANY, 'close_date': None, 'close_date_hum': None, - 'open_rate': 1.099e-05, + 'open_rate': 1.098e-05, 'close_rate': None, - 'current_rate': 1.098e-05, - 'amount': 90.99181074, + 'current_rate': 1.099e-05, + 'amount': 91.07468124, 'stake_amount': 0.001, 'close_profit': None, - 'current_profit': -0.59, + 'current_profit': -0.41, 'stop_loss': 0.0, 'initial_stop_loss': 0.0, 'initial_stop_loss_pct': None, @@ -78,10 +78,10 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_date_hum': ANY, 'close_date': None, 'close_date_hum': None, - 'open_rate': 1.099e-05, + 'open_rate': 1.098e-05, 'close_rate': None, 'current_rate': ANY, - 'amount': 90.99181074, + 'amount': 91.07468124, 'stake_amount': 0.001, 'close_profit': None, 'current_profit': ANY, @@ -121,7 +121,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: assert "Pair" in headers assert 'instantly' == result[0][2] assert 'ETH/BTC' in result[0][1] - assert '-0.59%' == result[0][3] + assert '-0.41%' == result[0][3] # Test with fiatconvert rpc._fiat_converter = CryptoToFiatConverter() @@ -130,7 +130,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: assert "Pair" in headers assert 'instantly' == result[0][2] assert 'ETH/BTC' in result[0][1] - assert '-0.59% (-0.09)' == result[0][3] + assert '-0.41% (-0.06)' == result[0][3] mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) @@ -245,9 +245,9 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, assert prec_satoshi(stats['profit_closed_coin'], 6.217e-05) assert prec_satoshi(stats['profit_closed_percent'], 6.2) assert prec_satoshi(stats['profit_closed_fiat'], 0.93255) - assert prec_satoshi(stats['profit_all_coin'], 5.632e-05) - assert prec_satoshi(stats['profit_all_percent'], 2.81) - assert prec_satoshi(stats['profit_all_fiat'], 0.8448) + assert prec_satoshi(stats['profit_all_coin'], 5.802e-05) + assert prec_satoshi(stats['profit_all_percent'], 2.89) + assert prec_satoshi(stats['profit_all_fiat'], 0.8703) assert stats['trade_count'] == 2 assert stats['first_trade_date'] == 'just now' assert stats['latest_trade_date'] == 'just now' @@ -668,7 +668,7 @@ def test_rpcforcebuy(mocker, default_conf, ticker, fee, limit_buy_order) -> None trade = rpc._rpc_forcebuy(pair, None) assert isinstance(trade, Trade) assert trade.pair == pair - assert trade.open_rate == ticker()['ask'] + assert trade.open_rate == ticker()['bid'] # Test buy duplicate with pytest.raises(RPCException, match=r'position for ETH/BTC already open - id: 1'): diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 25c971bf7..e0abd886d 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -426,20 +426,20 @@ def test_api_status(botclient, mocker, ticker, fee, markets): rc = client_get(client, f"{BASE_URI}/status") assert_response(rc) assert len(rc.json) == 1 - assert rc.json == [{'amount': 90.99181074, + assert rc.json == [{'amount': 91.07468124, 'base_currency': 'BTC', 'close_date': None, 'close_date_hum': None, 'close_profit': None, 'close_rate': None, - 'current_profit': -0.59, - 'current_rate': 1.098e-05, + 'current_profit': -0.41, + 'current_rate': 1.099e-05, 'initial_stop_loss': 0.0, 'initial_stop_loss_pct': None, 'open_date': ANY, 'open_date_hum': 'just now', 'open_order': '(limit buy rem=0.00000000)', - 'open_rate': 1.099e-05, + 'open_rate': 1.098e-05, 'pair': 'ETH/BTC', 'stake_amount': 0.001, 'stop_loss': 0.0, diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index a8b8e0c5a..fd3e4039a 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -720,13 +720,13 @@ def test_forcesell_handle(default_conf, update, ticker, fee, 'exchange': 'Bittrex', 'pair': 'ETH/BTC', 'gain': 'profit', - 'limit': 1.172e-05, - 'amount': 90.99181073703367, + 'limit': 1.173e-05, + 'amount': 91.07468123861567, 'order_type': 'limit', - 'open_rate': 1.099e-05, - 'current_rate': 1.172e-05, - 'profit_amount': 6.126e-05, - 'profit_percent': 0.0611052, + 'open_rate': 1.098e-05, + 'current_rate': 1.173e-05, + 'profit_amount': 6.314e-05, + 'profit_percent': 0.0629778, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.FORCE_SELL.value, @@ -779,13 +779,13 @@ def test_forcesell_down_handle(default_conf, update, ticker, fee, 'exchange': 'Bittrex', 'pair': 'ETH/BTC', 'gain': 'loss', - 'limit': 1.044e-05, - 'amount': 90.99181073703367, + 'limit': 1.043e-05, + 'amount': 91.07468123861567, 'order_type': 'limit', - 'open_rate': 1.099e-05, - 'current_rate': 1.044e-05, - 'profit_amount': -5.492e-05, - 'profit_percent': -0.05478342, + 'open_rate': 1.098e-05, + 'current_rate': 1.043e-05, + 'profit_amount': -5.497e-05, + 'profit_percent': -0.05482878, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.FORCE_SELL.value, @@ -827,13 +827,13 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None 'exchange': 'Bittrex', 'pair': 'ETH/BTC', 'gain': 'loss', - 'limit': 1.098e-05, - 'amount': 90.99181073703367, + 'limit': 1.099e-05, + 'amount': 91.07468123861567, 'order_type': 'limit', - 'open_rate': 1.099e-05, - 'current_rate': 1.098e-05, - 'profit_amount': -5.91e-06, - 'profit_percent': -0.00589291, + 'open_rate': 1.098e-05, + 'current_rate': 1.099e-05, + 'profit_amount': -4.09e-06, + 'profit_percent': -0.00408133, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.FORCE_SELL.value, From e1cb6f4ae3cd1de66df0eb0eb8128b520e170d5c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Feb 2020 15:06:37 +0100 Subject: [PATCH 1860/3421] fix and improve tests in test_freqtradebot --- tests/test_freqtradebot.py | 125 ++++++++++++++++++++++--------------- 1 file changed, 74 insertions(+), 51 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 852b6b990..655fe4684 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -761,8 +761,8 @@ def test_process_trade_creation(default_conf, ticker, limit_buy_order, assert trade.is_open assert trade.open_date is not None assert trade.exchange == 'bittrex' - assert trade.open_rate == 0.00001099 - assert trade.amount == 90.99181073703367 + assert trade.open_rate == 0.00001098 + assert trade.amount == 91.07468123861567 assert log_has( 'Buy signal found: about create a new trade with stake_amount: 0.001 ...', caplog @@ -906,20 +906,28 @@ def test_process_informative_pairs_added(default_conf, ticker, mocker) -> None: assert ("ETH/BTC", default_conf["ticker_interval"]) in refresh_mock.call_args[0][0] -@pytest.mark.parametrize("ask,last,last_ab,expected", [ - (20, 10, 0.0, 20), # Full ask side - (20, 10, 1.0, 10), # Full last side - (20, 10, 0.5, 15), # Between ask and last - (20, 10, 0.7, 13), # Between ask and last - (20, 10, 0.3, 17), # Between ask and last - (5, 10, 1.0, 5), # last bigger than ask - (5, 10, 0.5, 5), # last bigger than ask +@pytest.mark.parametrize("side,ask,bid,last,last_ab,expected", [ + ('ask', 20, 19, 10, 0.0, 20), # Full ask side + ('ask', 20, 19, 10, 1.0, 10), # Full last side + ('ask', 20, 19, 10, 0.5, 15), # Between ask and last + ('ask', 20, 19, 10, 0.7, 13), # Between ask and last + ('ask', 20, 19, 10, 0.3, 17), # Between ask and last + ('ask', 5, 6, 10, 1.0, 5), # last bigger than ask + ('ask', 5, 6, 10, 0.5, 5), # last bigger than ask + ('bid', 10, 20, 10, 0.0, 20), # Full bid side + ('bid', 10, 20, 10, 1.0, 10), # Full last side + ('bid', 10, 20, 10, 0.5, 15), # Between bid and last + ('bid', 10, 20, 10, 0.7, 13), # Between bid and last + ('bid', 10, 20, 10, 0.3, 17), # Between bid and last + ('bid', 4, 5, 10, 1.0, 5), # last bigger than bid + ('bid', 4, 5, 10, 0.5, 5), # last bigger than bid ]) -def test_get_buy_rate(mocker, default_conf, caplog, ask, last, last_ab, expected) -> None: +def test_get_buy_rate(mocker, default_conf, caplog, side, ask, bid, last, last_ab, expected) -> None: default_conf['bid_strategy']['ask_last_balance'] = last_ab + default_conf['bid_strategy']['price_side'] = side freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', - MagicMock(return_value={'ask': ask, 'last': last})) + MagicMock(return_value={'ask': ask, 'last': last, 'bid': bid})) assert freqtrade.get_buy_rate('ETH/BTC', True) == expected assert not log_has("Using cached buy rate for ETH/BTC.", caplog) @@ -1317,7 +1325,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, stoploss_order_mock.assert_not_called() assert freqtrade.handle_trade(trade) is False - assert trade.stop_loss == 0.00002344 * 0.95 + assert trade.stop_loss == 0.00002346 * 0.95 # setting stoploss_on_exchange_interval to 0 seconds freqtrade.strategy.order_types['stoploss_on_exchange_interval'] = 0 @@ -1325,10 +1333,10 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, assert freqtrade.handle_stoploss_on_exchange(trade) is False cancel_order_mock.assert_called_once_with(100, 'ETH/BTC') - stoploss_order_mock.assert_called_once_with(amount=85.25149190110828, + stoploss_order_mock.assert_called_once_with(amount=85.32423208191126, pair='ETH/BTC', order_types=freqtrade.strategy.order_types, - stop_price=0.00002344 * 0.95) + stop_price=0.00002346 * 0.95) # price fell below stoploss, so dry-run sells trade. mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', MagicMock(return_value={ @@ -1510,12 +1518,12 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, assert freqtrade.handle_stoploss_on_exchange(trade) is False # stoploss should be set to 1% as trailing is on - assert trade.stop_loss == 0.00002344 * 0.99 + assert trade.stop_loss == 0.00002346 * 0.99 cancel_order_mock.assert_called_once_with(100, 'NEO/BTC') - stoploss_order_mock.assert_called_once_with(amount=2131074.168797954, + stoploss_order_mock.assert_called_once_with(amount=2132892.491467577, pair='NEO/BTC', order_types=freqtrade.strategy.order_types, - stop_price=0.00002344 * 0.99) + stop_price=0.00002346 * 0.99) def test_enter_positions(mocker, default_conf, caplog) -> None: @@ -2292,12 +2300,12 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, mocker) -> N 'pair': 'ETH/BTC', 'gain': 'profit', 'limit': 1.172e-05, - 'amount': 90.99181073703367, + 'amount': 91.07468123861567, 'order_type': 'limit', - 'open_rate': 1.099e-05, - 'current_rate': 1.172e-05, - 'profit_amount': 6.126e-05, - 'profit_percent': 0.0611052, + 'open_rate': 1.098e-05, + 'current_rate': 1.173e-05, + 'profit_amount': 6.223e-05, + 'profit_percent': 0.0620716, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.ROI.value, @@ -2341,12 +2349,12 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, mocker) 'pair': 'ETH/BTC', 'gain': 'loss', 'limit': 1.044e-05, - 'amount': 90.99181073703367, + 'amount': 91.07468123861567, 'order_type': 'limit', - 'open_rate': 1.099e-05, - 'current_rate': 1.044e-05, - 'profit_amount': -5.492e-05, - 'profit_percent': -0.05478342, + 'open_rate': 1.098e-05, + 'current_rate': 1.043e-05, + 'profit_amount': -5.406e-05, + 'profit_percent': -0.05392257, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.STOP_LOSS.value, @@ -2397,12 +2405,12 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe 'pair': 'ETH/BTC', 'gain': 'loss', 'limit': 1.08801e-05, - 'amount': 90.99181073703367, + 'amount': 91.07468123861567, 'order_type': 'limit', - 'open_rate': 1.099e-05, - 'current_rate': 1.044e-05, - 'profit_amount': -1.498e-05, - 'profit_percent': -0.01493766, + 'open_rate': 1.098e-05, + 'current_rate': 1.043e-05, + 'profit_amount': -1.408e-05, + 'profit_percent': -0.01404051, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.STOP_LOSS.value, @@ -2587,7 +2595,7 @@ def test_execute_sell_market_order(default_conf, ticker, fee, freqtrade.execute_sell(trade=trade, limit=ticker_sell_up()['bid'], sell_reason=SellType.ROI) assert not trade.is_open - assert trade.close_profit == 0.0611052 + assert trade.close_profit == 0.0620716 assert rpc_mock.call_count == 2 last_msg = rpc_mock.call_args_list[-1][0][0] @@ -2597,12 +2605,12 @@ def test_execute_sell_market_order(default_conf, ticker, fee, 'pair': 'ETH/BTC', 'gain': 'profit', 'limit': 1.172e-05, - 'amount': 90.99181073703367, + 'amount': 91.07468123861567, 'order_type': 'market', - 'open_rate': 1.099e-05, - 'current_rate': 1.172e-05, - 'profit_amount': 6.126e-05, - 'profit_percent': 0.0611052, + 'open_rate': 1.098e-05, + 'current_rate': 1.173e-05, + 'profit_amount': 6.223e-05, + 'profit_percent': 0.0620716, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.ROI.value, @@ -3624,13 +3632,20 @@ def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order assert freqtrade.handle_trade(trade) is True -def test_get_sell_rate(default_conf, mocker, caplog, ticker, order_book_l2) -> None: - - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - get_order_book=order_book_l2, - fetch_ticker=ticker, - ) +@pytest.mark.parametrize('side,ask,bid,expected', [ + ('bid', 10.0, 11.0, 11.0), + ('bid', 10.0, 11.2, 11.2), + ('bid', 10.0, 11.0, 11.0), + ('bid', 9.8, 11.0, 11.0), + ('bid', 0.0001, 0.002, 0.002), + ('ask', 10.0, 11.0, 10.0), + ('ask', 10.11, 11.2, 10.11), + ('ask', 0.001, 0.002, 0.001), + ('ask', 0.006, 1.0, 0.006), +]) +def test_get_sell_rate(default_conf, mocker, caplog, side, bid, ask, expected) -> None: + default_conf['ask_strategy']['price_side'] = side + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', return_value={'ask': ask, 'bid': bid}) pair = "ETH/BTC" # Test regular mode @@ -3638,25 +3653,33 @@ def test_get_sell_rate(default_conf, mocker, caplog, ticker, order_book_l2) -> N rate = ft.get_sell_rate(pair, True) assert not log_has("Using cached sell rate for ETH/BTC.", caplog) assert isinstance(rate, float) - assert rate == 0.00001098 + assert rate == expected # Use caching rate = ft.get_sell_rate(pair, False) - assert rate == 0.00001098 + assert rate == expected assert log_has("Using cached sell rate for ETH/BTC.", caplog) - caplog.clear() +@pytest.mark.parametrize('side,expected', [ + ('bid', 0.043936), # Value from order_book_l2 fiture - bids side + ('ask', 0.043949), # Value from order_book_l2 fiture - asks side +]) +def test_get_sell_rate_orderbook(default_conf, mocker, caplog, side, expected, order_book_l2): # Test orderbook mode + default_conf['ask_strategy']['price_side'] = side default_conf['ask_strategy']['use_order_book'] = True default_conf['ask_strategy']['order_book_min'] = 1 default_conf['ask_strategy']['order_book_max'] = 2 + # TODO: min/max is irrelevant for this test until refactoring + pair = "ETH/BTC" + mocker.patch('freqtrade.exchange.Exchange.get_order_book', order_book_l2) ft = get_patched_freqtradebot(mocker, default_conf) rate = ft.get_sell_rate(pair, True) assert not log_has("Using cached sell rate for ETH/BTC.", caplog) assert isinstance(rate, float) - assert rate == 0.043936 + assert rate == expected rate = ft.get_sell_rate(pair, False) - assert rate == 0.043936 + assert rate == expected assert log_has("Using cached sell rate for ETH/BTC.", caplog) From 8edc3eb5fb8a6c4dc62f455f12d237c0d670b3d9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Feb 2020 15:39:12 +0100 Subject: [PATCH 1861/3421] Use generator to generate sell price scaffold testing --- freqtrade/freqtradebot.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 2c9a960a4..22a73a273 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -619,6 +619,15 @@ class FreqtradeBot: return trades_closed + def _order_book_gen(self, pair: str, side: str, order_book_max: int = 1, + order_book_min: int = 1): + """ + Helper generator to query orderbook in loop (used for early sell-order placing) + """ + order_book = self.exchange.get_order_book(pair, order_book_max) + for i in range(order_book_min, order_book_max + 1): + yield order_book[side][i - 1][0] + def get_sell_rate(self, pair: str, refresh: bool) -> float: """ Get sell rate - either using get-ticker bid or first bid based on orderbook @@ -639,9 +648,10 @@ class FreqtradeBot: config_ask_strategy = self.config.get('ask_strategy', {}) if config_ask_strategy.get('use_order_book', False): logger.debug('Using order book to get sell rate') + rate = next(self._order_book_gen(pair, f"{config_ask_strategy['price_side']}s")) - order_book = self.exchange.get_order_book(pair, 1) - rate = order_book[f"{config_ask_strategy['price_side']}s"][0][0] + # order_book = self.exchange.get_order_book(pair, 1) + # rate = order_book[f"{config_ask_strategy['price_side']}s"][0][0] else: rate = self.exchange.fetch_ticker(pair)[config_ask_strategy['price_side']] @@ -674,12 +684,12 @@ class FreqtradeBot: order_book_min = config_ask_strategy.get('order_book_min', 1) order_book_max = config_ask_strategy.get('order_book_max', 1) - order_book = self.exchange.get_order_book(trade.pair, order_book_max) - + order_book = self._order_book_gen(trade.pair, f"{config_ask_strategy['price_side']}s", + order_book_min=order_book_min, + order_book_max=order_book_max) for i in range(order_book_min, order_book_max + 1): - order_book_rate = order_book['asks'][i - 1][0] - logger.debug(' order book asks top %s: %0.8f', i, order_book_rate) - sell_rate = order_book_rate + sell_rate = next(order_book) + logger.debug(' order book asks top %s: %0.8f', i, sell_rate) if self._check_and_execute_sell(trade, sell_rate, buy, sell): return True From 3c5e716d8f5b3c527ae7683877fb10149c03ebe2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Feb 2020 16:00:34 +0100 Subject: [PATCH 1862/3421] Update some documentation regarding price_side --- docs/configuration.md | 64 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 57 insertions(+), 7 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index b05dab7c9..54470f278 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -60,11 +60,13 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
      *Defaults to `false`.*
      **Datatype:** Boolean | `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Integer | `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Integer -| `bid_strategy.ask_last_balance` | **Required.** Set the bidding price. More information [below](#buy-price-without-orderbook). +| `bid_strategy.price_side` | Select the side of the spread the bot should look at to get the buy rate. [More information below](#buy-price-side).
      *Defaults to `bid`.*
      **Datatype:** String (either `ask` or `bid`). +| `bid_strategy.ask_last_balance` | **Required.** Set the bidding price. More information [below](#buy-price-without-orderbook-enabled). | `bid_strategy.use_order_book` | Enable buying using the rates in [Order Book Bids](#buy-price-with-orderbook-enabled).
      **Datatype:** Boolean | `bid_strategy.order_book_top` | Bot will use the top N rate in Order Book Bids to buy. I.e. a value of 2 will allow the bot to pick the 2nd bid rate in [Order Book Bids](#buy-price-with-orderbook-enabled).
      *Defaults to `1`.*
      **Datatype:** Positive Integer | `bid_strategy. check_depth_of_market.enabled` | Do not buy if the difference of buy orders and sell orders is met in Order Book. [Check market depth](#check-depth-of-market).
      *Defaults to `false`.*
      **Datatype:** Boolean | `bid_strategy. check_depth_of_market.bids_to_ask_delta` | The difference ratio of buy orders and sell orders found in Order Book. A value below 1 means sell order size is greater, while value greater than 1 means buy order size is higher. [Check market depth](#check-depth-of-market)
      *Defaults to `0`.*
      **Datatype:** Float (as ratio) +| `ask_strategy.price_side` | Select the side of the spread the bot should look at to get the sell rate. [More information below](#sell-price-side).
      *Defaults to `ask`.*
      **Datatype:** String (either `ask` or `bid`). | `ask_strategy.use_order_book` | Enable selling of open trades using [Order Book Asks](#sell-price-with-orderbook-enabled).
      **Datatype:** Boolean | `ask_strategy.order_book_min` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.*
      **Datatype:** Positive Integer | `ask_strategy.order_book_max` | Bot will scan from the top min to max Order Book Asks searching for a profitable rate.
      *Defaults to `1`.*
      **Datatype:** Positive Integer @@ -461,23 +463,71 @@ Orderbook `bid` (buy) side depth is then divided by the orderbook `ask` (sell) s !!! Note A delta value below 1 means that `ask` (sell) orderbook side depth is greater than the depth of the `bid` (buy) orderbook side, while a value greater than 1 means opposite (depth of the buy side is higher than the depth of the sell side). +#### Buy price side + +The configuration option `bid_strategy.price_side` defines the side of the spread the bot looks for when buying. + +The following displays an orderbook. + +``` explanation +... +103 +102 +101 # ask +-------------Current spread +99 # bid +98 +97 +... +``` + +If `bid_strategy.price_side` is set to `"bid"`, then the bot will use 99 as buying price. +In line with that, if `bid_strategy.price_side` is set to `"ask"`, then the bot will use 101 as buying price. + +Using `ask` price often guarantees quicker filled orders, but the bot can also end up paying more than what would have been necessary. + + #### Buy price with Orderbook enabled -When buying with the orderbook enabled (`bid_strategy.use_order_book=True`), Freqtrade fetches the `bid_strategy.order_book_top` entries from the orderbook and then uses the entry specified as `bid_strategy.order_book_top` on the `bid` (buy) side of the orderbook. 1 specifies the topmost entry in the orderbook, while 2 would use the 2nd entry in the orderbook, and so on. +When buying with the orderbook enabled (`bid_strategy.use_order_book=True`), Freqtrade fetches the `bid_strategy.order_book_top` entries from the orderbook and then uses the entry specified as `bid_strategy.order_book_top` on the configured side (`bid_strategy.price_side`) of the orderbook. 1 specifies the topmost entry in the orderbook, while 2 would use the 2nd entry in the orderbook, and so on. #### Buy price without Orderbook enabled -When not using orderbook (`bid_strategy.use_order_book=False`), Freqtrade uses the best `ask` (sell) price from the ticker if it's below the `last` traded price from the ticker. Otherwise (when the `ask` price is not below the `last` price), it calculates a rate between `ask` and `last` price. +The following section uses `side` as the configured `bid_strategy.price_side`. -The `bid_strategy.ask_last_balance` configuration parameter controls this. A value of `0.0` will use `ask` price, while `1.0` will use the `last` price and values between those interpolate between ask and last price. +When not using orderbook (`bid_strategy.use_order_book=False`), Freqtrade uses the best `side` price from the ticker if it's below the `last` traded price from the ticker. Otherwise (when the `side` price is above the `last` price), it calculates a rate between `side` and `last` price. -Using `ask` price often guarantees quicker success in the bid, but the bot can also end up paying more than what would have been necessary. +The `bid_strategy.ask_last_balance` configuration parameter controls this. A value of `0.0` will use `side` price, while `1.0` will use the `last` price and values between those interpolate between ask and last price. ### Sell price +#### Sell price side + +The configuration option `ask_strategy.price_side` defines the side of the spread the bot looks for when selling. + +The following displays an orderbook: + +``` explanation +... +103 +102 +101 # ask +-------------Current spread +99 # bid +98 +97 +... +``` + +If `ask_strategy.price_side` is set to `"ask"`, then the bot will use 101 as selling price. +In line with that, if `ask_strategy.price_side` is set to `"bid"`, then the bot will use 99 as selling price. + #### Sell price with Orderbook enabled -When selling with the orderbook enabled (`ask_strategy.use_order_book=True`), Freqtrade fetches the `ask_strategy.order_book_max` entries in the orderbook. Then each of the orderbook steps between `ask_strategy.order_book_min` and `ask_strategy.order_book_max` on the `ask` orderbook side are validated for a profitable sell-possibility based on the strategy configuration and the sell order is placed at the first profitable spot. +When selling with the orderbook enabled (`ask_strategy.use_order_book=True`), Freqtrade fetches the `ask_strategy.order_book_max` entries in the orderbook. Then each of the orderbook steps between `ask_strategy.order_book_min` and `ask_strategy.order_book_max` on the configured orderbook side are validated for a profitable sell-possibility based on the strategy configuration and the sell order is placed at the first profitable spot. + +!!! Note: + Using `order_book_max` higher than `order_book_min` only makes sense when ask_strategy.price_side is set to `"ask"`. The idea here is to place the sell order early, to be ahead in the queue. @@ -488,7 +538,7 @@ A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting #### Sell price without Orderbook enabled -When not using orderbook (`ask_strategy.use_order_book=False`), the `bid` price from the ticker will be used as the sell price. +When not using orderbook (`ask_strategy.use_order_book=False`), the price at the `ask_strategy.price_side` side (defaults to `"ask"`) from the ticker will be used as the sell price. ## Pairlists From 0fea3a7ea74451243a9518d3059599d15ea7a9aa Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Feb 2020 19:49:54 +0100 Subject: [PATCH 1863/3421] Some final polish to configurable_side --- docs/configuration.md | 2 +- freqtrade/freqtradebot.py | 4 +--- tests/test_freqtradebot.py | 3 ++- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 54470f278..c70f3425c 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -526,7 +526,7 @@ In line with that, if `ask_strategy.price_side` is set to `"bid"`, then the bot When selling with the orderbook enabled (`ask_strategy.use_order_book=True`), Freqtrade fetches the `ask_strategy.order_book_max` entries in the orderbook. Then each of the orderbook steps between `ask_strategy.order_book_min` and `ask_strategy.order_book_max` on the configured orderbook side are validated for a profitable sell-possibility based on the strategy configuration and the sell order is placed at the first profitable spot. -!!! Note: +!!! Note Using `order_book_max` higher than `order_book_min` only makes sense when ask_strategy.price_side is set to `"ask"`. The idea here is to place the sell order early, to be ahead in the queue. diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 22a73a273..53493ad4c 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -647,12 +647,10 @@ class FreqtradeBot: config_ask_strategy = self.config.get('ask_strategy', {}) if config_ask_strategy.get('use_order_book', False): + # This code is only used for notifications, selling uses the generator directly logger.debug('Using order book to get sell rate') rate = next(self._order_book_gen(pair, f"{config_ask_strategy['price_side']}s")) - # order_book = self.exchange.get_order_book(pair, 1) - # rate = order_book[f"{config_ask_strategy['price_side']}s"][0][0] - else: rate = self.exchange.fetch_ticker(pair)[config_ask_strategy['price_side']] self._sell_rate_cache[pair] = rate diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 655fe4684..49000382f 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -922,7 +922,8 @@ def test_process_informative_pairs_added(default_conf, ticker, mocker) -> None: ('bid', 4, 5, 10, 1.0, 5), # last bigger than bid ('bid', 4, 5, 10, 0.5, 5), # last bigger than bid ]) -def test_get_buy_rate(mocker, default_conf, caplog, side, ask, bid, last, last_ab, expected) -> None: +def test_get_buy_rate(mocker, default_conf, caplog, side, ask, bid, + last, last_ab, expected) -> None: default_conf['bid_strategy']['ask_last_balance'] = last_ab default_conf['bid_strategy']['price_side'] = side freqtrade = get_patched_freqtradebot(mocker, default_conf) From b6839289ec2cba080c3bfeb2d956e1e70660770e Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Feb 2020 20:03:03 +0100 Subject: [PATCH 1864/3421] Add price_side to sample config files --- config_full.json.example | 2 ++ freqtrade/templates/base_config.json.j2 | 2 ++ 2 files changed, 4 insertions(+) diff --git a/config_full.json.example b/config_full.json.example index cdb7e841e..f0414bd0d 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -25,6 +25,7 @@ "sell": 30 }, "bid_strategy": { + "price_side": "bid", "use_order_book": false, "ask_last_balance": 0.0, "order_book_top": 1, @@ -34,6 +35,7 @@ } }, "ask_strategy":{ + "price_side": "ask", "use_order_book": false, "order_book_min": 1, "order_book_max": 9, diff --git a/freqtrade/templates/base_config.json.j2 b/freqtrade/templates/base_config.json.j2 index 88edeb1e8..0049d59a0 100644 --- a/freqtrade/templates/base_config.json.j2 +++ b/freqtrade/templates/base_config.json.j2 @@ -11,6 +11,7 @@ "sell": 30 }, "bid_strategy": { + "price_side": "bid", "ask_last_balance": 0.0, "use_order_book": false, "order_book_top": 1, @@ -20,6 +21,7 @@ } }, "ask_strategy": { + "price_side": "ask", "use_order_book": false, "order_book_min": 1, "order_book_max": 9, From e5ec97495ddbf331fe43a0ed55a2f938d343d943 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 27 Feb 2020 07:01:00 +0100 Subject: [PATCH 1865/3421] Logging should be initialized first --- freqtrade/configuration/configuration.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 21b3e3bd3..035b091b3 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -96,6 +96,8 @@ class Configuration: # Keep a copy of the original configuration file config['original_config'] = deepcopy(config) + self._process_logging_options(config) + self._process_runmode(config) self._process_common_options(config) @@ -146,8 +148,6 @@ class Configuration: def _process_common_options(self, config: Dict[str, Any]) -> None: - self._process_logging_options(config) - # Set strategy if not specified in config and or if it's non default if self.args.get("strategy") or not config.get('strategy'): config.update({'strategy': self.args.get("strategy")}) @@ -379,7 +379,7 @@ class Configuration: if not self.runmode: # Handle real mode, infer dry/live from config self.runmode = RunMode.DRY_RUN if config.get('dry_run', True) else RunMode.LIVE - logger.info(f"Runmode set to {self.runmode}.") + logger.info(f"Runmode set to {self.runmode.value}.") config.update({'runmode': self.runmode}) From bbb438bd4093d38e8e41e05fd151ec1fa2799411 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 27 Feb 2020 06:18:09 +0000 Subject: [PATCH 1866/3421] Bump python from 3.8.1-slim-buster to 3.8.2-slim-buster Bumps python from 3.8.1-slim-buster to 3.8.2-slim-buster. Signed-off-by: dependabot-preview[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 923285f39..d986f20ae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8.1-slim-buster +FROM python:3.8.2-slim-buster RUN apt-get update \ && apt-get -y install curl build-essential libssl-dev \ From 55d471190a3afc52984edab5035b460abd429434 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Thu, 27 Feb 2020 13:28:28 +0100 Subject: [PATCH 1867/3421] Changed table style of backtesting and alignment of headers --- freqtrade/optimize/backtesting.py | 47 +++++++++++++++---------- freqtrade/optimize/optimize_reports.py | 8 ++--- tests/optimize/test_optimize_reports.py | 43 +++++++++++----------- 3 files changed, 53 insertions(+), 45 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index c18aefc76..94441ce24 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -423,28 +423,37 @@ class Backtesting: strategy if len(self.strategylist) > 1 else None) print(f"Result for strategy {strategy}") - print(' BACKTESTING REPORT '.center(133, '=')) - print(generate_text_table(data, - stake_currency=self.config['stake_currency'], - max_open_trades=self.config['max_open_trades'], - results=results)) + table = generate_text_table(data, stake_currency=self.config['stake_currency'], + max_open_trades=self.config['max_open_trades'], + results=results) + if isinstance(table, str): + print(' BACKTESTING REPORT '.center(len(table.splitlines()[0]), '=')) + print(table) - print(' SELL REASON STATS '.center(133, '=')) - print(generate_text_table_sell_reason(data, - stake_currency=self.config['stake_currency'], - max_open_trades=self.config['max_open_trades'], - results=results)) + table = generate_text_table_sell_reason(data, + stake_currency=self.config['stake_currency'], + max_open_trades=self.config['max_open_trades'], + results=results) + if isinstance(table, str): + print(' SELL REASON STATS '.center(len(table.splitlines()[0]), '=')) + print(table) - print(' LEFT OPEN TRADES REPORT '.center(133, '=')) - print(generate_text_table(data, - stake_currency=self.config['stake_currency'], - max_open_trades=self.config['max_open_trades'], - results=results.loc[results.open_at_end], skip_nan=True)) + table = generate_text_table(data, + stake_currency=self.config['stake_currency'], + max_open_trades=self.config['max_open_trades'], + results=results.loc[results.open_at_end], skip_nan=True) + if isinstance(table, str): + print(' LEFT OPEN TRADES REPORT '.center(len(table.splitlines()[0]), '=')) + print(table) + if isinstance(table, str): + print('=' * len(table.splitlines()[0])) print() if len(all_results) > 1: # Print Strategy summary table - print(' STRATEGY SUMMARY '.center(133, '=')) - print(generate_text_table_strategy(self.config['stake_currency'], - self.config['max_open_trades'], - all_results=all_results)) + table = generate_text_table_strategy(self.config['stake_currency'], + self.config['max_open_trades'], + all_results=all_results) + print(' STRATEGY SUMMARY '.center(len(table.splitlines()[0]), '=')) + print(table) + print('=' * len(table.splitlines()[0])) print('\nFor more details, please look at the detail tables above') diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index b00adbd48..39bde50a8 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -66,7 +66,7 @@ def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_tra ]) # Ignore type as floatfmt does allow tuples but mypy does not know that return tabulate(tabular_data, headers=headers, - floatfmt=floatfmt, tablefmt="pipe") # type: ignore + floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") # type: ignore def generate_text_table_sell_reason( @@ -112,7 +112,7 @@ def generate_text_table_sell_reason( profit_percent_tot, ] ) - return tabulate(tabular_data, headers=headers, tablefmt="pipe") + return tabulate(tabular_data, headers=headers, tablefmt="orgtbl", stralign="right") def generate_text_table_strategy(stake_currency: str, max_open_trades: str, @@ -146,7 +146,7 @@ def generate_text_table_strategy(stake_currency: str, max_open_trades: str, ]) # Ignore type as floatfmt does allow tuples but mypy does not know that return tabulate(tabular_data, headers=headers, - floatfmt=floatfmt, tablefmt="pipe") # type: ignore + floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") # type: ignore def generate_edge_table(results: dict) -> str: @@ -172,4 +172,4 @@ def generate_edge_table(results: dict) -> str: # Ignore type as floatfmt does allow tuples but mypy does not know that return tabulate(tabular_data, headers=headers, - floatfmt=floatfmt, tablefmt="pipe") # type: ignore + floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") # type: ignore diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 57e928cca..285ecaa02 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -22,14 +22,14 @@ def test_generate_text_table(default_conf, mocker): ) result_str = ( - '| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC |' - ' Tot Profit % | Avg Duration | Wins | Draws | Losses |\n' - '|:--------|-------:|---------------:|---------------:|-----------------:|' - '---------------:|:---------------|-------:|--------:|---------:|\n' + '| Pair | Buys | Avg Profit % | Cum Profit % | Tot Profit BTC |' + ' Tot Profit % | Avg Duration | Wins | Draws | Losses |\n' + '|---------+--------+----------------+----------------+------------------+' + '----------------+----------------+--------+---------+----------|\n' '| ETH/BTC | 2 | 15.00 | 30.00 | 0.60000000 |' - ' 15.00 | 0:20:00 | 2 | 0 | 0 |\n' - '| TOTAL | 2 | 15.00 | 30.00 | 0.60000000 |' - ' 15.00 | 0:20:00 | 2 | 0 | 0 |' + ' 15.00 | 0:20:00 | 2 | 0 | 0 |\n' + '| TOTAL | 2 | 15.00 | 30.00 | 0.60000000 |' + ' 15.00 | 0:20:00 | 2 | 0 | 0 |' ) assert generate_text_table(data={'ETH/BTC': {}}, stake_currency='BTC', max_open_trades=2, @@ -52,13 +52,13 @@ def test_generate_text_table_sell_reason(default_conf, mocker): ) result_str = ( - '| Sell Reason | Sells | Wins | Draws | Losses |' + '| Sell Reason | Sells | Wins | Draws | Losses |' ' Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % |\n' - '|:--------------|--------:|-------:|--------:|---------:|' - '---------------:|---------------:|-----------------:|---------------:|\n' - '| roi | 2 | 2 | 0 | 0 |' + '|---------------+---------+--------+---------+----------+' + '----------------+----------------+------------------+----------------|\n' + '| roi | 2 | 2 | 0 | 0 |' ' 15 | 30 | 0.6 | 15 |\n' - '| stop_loss | 1 | 0 | 0 | 1 |' + '| stop_loss | 1 | 0 | 0 | 1 |' ' -10 | -10 | -0.2 | -5 |' ) assert generate_text_table_sell_reason( @@ -95,14 +95,14 @@ def test_generate_text_table_strategy(default_conf, mocker): ) result_str = ( - '| Strategy | Buys | Avg Profit % | Cum Profit % | Tot' - ' Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses |\n' - '|:--------------|-------:|---------------:|---------------:|------' - '-----------:|---------------:|:---------------|-------:|--------:|---------:|\n' - '| TestStrategy1 | 3 | 20.00 | 60.00 | ' - ' 1.10000000 | 30.00 | 0:17:00 | 3 | 0 | 0 |\n' - '| TestStrategy2 | 3 | 30.00 | 90.00 | ' - ' 1.30000000 | 45.00 | 0:20:00 | 3 | 0 | 0 |' + '| Strategy | Buys | Avg Profit % | Cum Profit % | Tot' + ' Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses |\n' + '|---------------+--------+----------------+----------------+------------------+' + '----------------+----------------+--------+---------+----------|\n' + '| TestStrategy1 | 3 | 20.00 | 60.00 | 1.10000000 |' + ' 30.00 | 0:17:00 | 3 | 0 | 0 |\n' + '| TestStrategy2 | 3 | 30.00 | 90.00 | 1.30000000 |' + ' 45.00 | 0:20:00 | 3 | 0 | 0 |' ) assert generate_text_table_strategy('BTC', 2, all_results=results) == result_str @@ -111,8 +111,7 @@ def test_generate_edge_table(edge_conf, mocker): results = {} results['ETH/BTC'] = PairInfo(-0.01, 0.60, 2, 1, 3, 10, 60) - - assert generate_edge_table(results).count(':|') == 7 + assert generate_edge_table(results).count('+') == 7 assert generate_edge_table(results).count('| ETH/BTC |') == 1 assert generate_edge_table(results).count( '| Risk Reward Ratio | Required Risk Reward | Expectancy |') == 1 From e5a9c81412b4a6846872fde59489203184244288 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 27 Feb 2020 14:04:12 +0100 Subject: [PATCH 1868/3421] Add 0 entry to enhanced ROI example --- docs/strategy-customization.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index fd40a971e..4aacd3af6 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -257,11 +257,12 @@ from freqtrade.exchange import timeframe_to_minutes class AwesomeStrategy(IStrategy): - ticker_interval = '1d' + ticker_interval = "1d" ticker_interval_mins = timeframe_to_minutes(ticker_interval) minimal_roi = { - str(ticker_interval_mins * 3)): 0.02, # After 3 candles - str(ticker_interval_mins * 6)): 0.01, # After 6 candles + "0": 0.05, # 5% for the first 3 candles + str(ticker_interval_mins * 3)): 0.02, # 2% after 3 candles + str(ticker_interval_mins * 6)): 0.01, # 1% After 6 candles } ``` From 15e59654d9121bbbe8a1a20f4d1e0529906cc18d Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Thu, 27 Feb 2020 16:10:45 +0100 Subject: [PATCH 1869/3421] Minor change to standardize table style. This PR will target commands. --- freqtrade/commands/list_commands.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index 49674b81a..327901dc0 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -58,7 +58,7 @@ def _print_objs_tabular(objs: List, print_colorized: bool) -> None: else yellow + "DUPLICATE NAME" + reset) } for s in objs] - print(tabulate(objss_to_print, headers='keys', tablefmt='pipe')) + print(tabulate(objss_to_print, headers='keys', tablefmt='psql', stralign='right')) def start_list_strategies(args: Dict[str, Any]) -> None: @@ -192,7 +192,7 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: else: # print data as a table, with the human-readable summary print(f"{summary_str}:") - print(tabulate(tabular_data, headers='keys', tablefmt='pipe')) + print(tabulate(tabular_data, headers='keys', tablefmt='psql', stralign='right')) elif not (args.get('print_one_column', False) or args.get('list_pairs_print_json', False) or args.get('print_csv', False)): From 5a02026f82decd18789f78440e4a71b51e24ff89 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 27 Feb 2020 19:35:58 +0100 Subject: [PATCH 1870/3421] Add test validating behaviour --- tests/test_configuration.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index a58e88ea0..1e9d6440d 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -319,6 +319,7 @@ def test_load_dry_run(default_conf, mocker, config_value, expected, arglist) -> validated_conf = configuration.load_config() assert validated_conf['dry_run'] is expected + assert validated_conf['runmode'] == (RunMode.DRY_RUN if expected else RunMode.LIVE) def test_load_custom_strategy(default_conf, mocker) -> None: From a55964a6221c1806ba195bf7be1dfe4167fd15f2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 27 Feb 2020 19:36:54 +0100 Subject: [PATCH 1871/3421] we Must parse --dry-run before setting run-mode --- freqtrade/configuration/configuration.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 035b091b3..6a0441957 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -167,10 +167,6 @@ class Configuration: if 'sd_notify' in self.args and self.args["sd_notify"]: config['internals'].update({'sd_notify': True}) - self._args_to_config(config, argname='dry_run', - logstring='Parameter --dry-run detected, ' - 'overriding dry_run to: {} ...') - def _process_datadir_options(self, config: Dict[str, Any]) -> None: """ Extract information for sys.argv and load directory configurations @@ -376,6 +372,10 @@ class Configuration: def _process_runmode(self, config: Dict[str, Any]) -> None: + self._args_to_config(config, argname='dry_run', + logstring='Parameter --dry-run detected, ' + 'overriding dry_run to: {} ...') + if not self.runmode: # Handle real mode, infer dry/live from config self.runmode = RunMode.DRY_RUN if config.get('dry_run', True) else RunMode.LIVE From e411717de9397afe29b58c62a7aca5c3aa6f8f65 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 28 Feb 2020 12:36:39 +0300 Subject: [PATCH 1872/3421] No percent where ratio is to be used --- freqtrade/edge/edge_positioning.py | 12 ++++++------ freqtrade/freqtradebot.py | 12 ++++++------ freqtrade/persistence.py | 4 ++-- freqtrade/rpc/rpc.py | 20 ++++++++++---------- freqtrade/rpc/telegram.py | 2 +- freqtrade/strategy/interface.py | 7 ++++--- tests/edge/test_edge.py | 2 +- tests/rpc/test_rpc_telegram.py | 12 ++++++------ tests/test_freqtradebot.py | 8 ++++---- 9 files changed, 40 insertions(+), 39 deletions(-) diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index ee5c3e95d..57a8f4a7c 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -246,7 +246,8 @@ class Edge: # we set stake amount to an arbitrary amount. # as it doesn't change the calculation. - # all returned values are relative. they are percentages. + # all returned values are relative. + # they are defined as ratios. stake = 0.015 fee = self.fee open_fee = fee / 2 @@ -269,8 +270,8 @@ class Edge: result['sell_fee'] = result['sell_sum'] * close_fee result['sell_take'] = result['sell_sum'] - result['sell_fee'] - # profit_percent - result['profit_percent'] = (result['sell_take'] - result['buy_spend']) / result['buy_spend'] + # profit_ratio + result['profit_ratio'] = (result['sell_take'] - result['buy_spend']) / result['buy_spend'] # Absolute profit result['profit_abs'] = result['sell_take'] - result['buy_spend'] @@ -399,9 +400,8 @@ class Edge: # trade opens in reality on the next candle open_trade_index += 1 - stop_price_percentage = stoploss + 1 open_price = ohlc_columns[open_trade_index, 0] - stop_price = (open_price * stop_price_percentage) + stop_price = (open_price * (stoploss + 1)) # Searching for the index where stoploss is hit stop_index = utf1st.find_1st( @@ -441,7 +441,7 @@ class Edge: trade = {'pair': pair, 'stoploss': stoploss, - 'profit_percent': '', + 'profit_ratio': '', 'profit_abs': '', 'open_time': date_column[open_trade_index], 'close_time': date_column[exit_index], diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index dffec940c..f50244dac 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1034,8 +1034,8 @@ class FreqtradeBot: profit_trade = trade.calc_profit(rate=profit_rate) # Use cached ticker here - it was updated seconds ago. current_rate = self.get_sell_rate(trade.pair, False) - profit_percent = trade.calc_profit_ratio(profit_rate) - gain = "profit" if profit_percent > 0 else "loss" + profit_ratio = trade.calc_profit_ratio(profit_rate) + gain = "profit" if profit_ratio > 0 else "loss" msg = { 'type': RPCMessageType.SELL_NOTIFICATION, @@ -1048,7 +1048,7 @@ class FreqtradeBot: 'open_rate': trade.open_rate, 'current_rate': current_rate, 'profit_amount': profit_trade, - 'profit_percent': profit_percent, + 'profit_ratio': profit_ratio, 'sell_reason': trade.sell_reason, 'open_date': trade.open_date, 'close_date': trade.close_date or datetime.utcnow(), @@ -1071,8 +1071,8 @@ class FreqtradeBot: profit_rate = trade.close_rate if trade.close_rate else trade.close_rate_requested profit_trade = trade.calc_profit(rate=profit_rate) current_rate = self.get_sell_rate(trade.pair, False) - profit_percent = trade.calc_profit_ratio(profit_rate) - gain = "profit" if profit_percent > 0 else "loss" + profit_ratio = trade.calc_profit_ratio(profit_rate) + gain = "profit" if profit_ratio > 0 else "loss" msg = { 'type': RPCMessageType.SELL_CANCEL_NOTIFICATION, @@ -1085,7 +1085,7 @@ class FreqtradeBot: 'open_rate': trade.open_rate, 'current_rate': current_rate, 'profit_amount': profit_trade, - 'profit_percent': profit_percent, + 'profit_ratio': profit_ratio, 'sell_reason': trade.sell_reason, 'open_date': trade.open_date, 'close_date': trade.close_date, diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index fa041abc3..ac084d12e 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -405,8 +405,8 @@ class Trade(_DECL_BASE): rate=(rate or self.close_rate), fee=(fee or self.fee_close) ) - profit_percent = (close_trade_price / self.open_trade_price) - 1 - return float(f"{profit_percent:.8f}") + profit_ratio = (close_trade_price / self.open_trade_price) - 1 + return float(f"{profit_ratio:.8f}") @staticmethod def get_trades(trade_filter=None) -> Query: diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 1e4eaa3e0..9014c1874 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -155,9 +155,9 @@ class RPC: current_rate = self._freqtrade.get_sell_rate(trade.pair, False) except DependencyException: current_rate = NAN - trade_perc = (100 * trade.calc_profit_ratio(current_rate)) + trade_percent = (100 * trade.calc_profit_ratio(current_rate)) trade_profit = trade.calc_profit(current_rate) - profit_str = f'{trade_perc:.2f}%' + profit_str = f'{trade_percent:.2f}%' if self._fiat_converter: fiat_profit = self._fiat_converter.convert_amount( trade_profit, @@ -232,9 +232,9 @@ class RPC: trades = Trade.get_trades().order_by(Trade.id).all() profit_all_coin = [] - profit_all_perc = [] + profit_all_ratio = [] profit_closed_coin = [] - profit_closed_perc = [] + profit_closed_ratio = [] durations = [] for trade in trades: @@ -246,21 +246,21 @@ class RPC: durations.append((trade.close_date - trade.open_date).total_seconds()) if not trade.is_open: - profit_percent = trade.calc_profit_ratio() + profit_ratio = trade.calc_profit_ratio() profit_closed_coin.append(trade.calc_profit()) - profit_closed_perc.append(profit_percent) + profit_closed_ratio.append(profit_ratio) else: # Get current rate try: current_rate = self._freqtrade.get_sell_rate(trade.pair, False) except DependencyException: current_rate = NAN - profit_percent = trade.calc_profit_ratio(rate=current_rate) + profit_ratio = trade.calc_profit_ratio(rate=current_rate) profit_all_coin.append( trade.calc_profit(rate=trade.close_rate or current_rate) ) - profit_all_perc.append(profit_percent) + profit_all_ratio.append(profit_ratio) best_pair = Trade.get_best_pair() @@ -271,7 +271,7 @@ class RPC: # Prepare data to display profit_closed_coin_sum = round(sum(profit_closed_coin), 8) - profit_closed_percent = (round(mean(profit_closed_perc) * 100, 2) if profit_closed_perc + profit_closed_percent = (round(mean(profit_closed_ratio) * 100, 2) if profit_closed_ratio else 0.0) profit_closed_fiat = self._fiat_converter.convert_amount( profit_closed_coin_sum, @@ -280,7 +280,7 @@ class RPC: ) if self._fiat_converter else 0 profit_all_coin_sum = round(sum(profit_all_coin), 8) - profit_all_percent = round(mean(profit_all_perc) * 100, 2) if profit_all_perc else 0.0 + profit_all_percent = round(mean(profit_all_ratio) * 100, 2) if profit_all_ratio else 0.0 profit_all_fiat = self._fiat_converter.convert_amount( profit_all_coin_sum, stake_currency, diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index e3958b31a..ad01700ab 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -148,7 +148,7 @@ class Telegram(RPC): elif msg['type'] == RPCMessageType.SELL_NOTIFICATION: msg['amount'] = round(msg['amount'], 8) - msg['profit_percent'] = round(msg['profit_percent'] * 100, 2) + msg['profit_percent'] = round(msg['profit_ratio'] * 100, 2) msg['duration'] = msg['close_date'].replace( microsecond=0) - msg['open_date'].replace(microsecond=0) msg['duration_min'] = msg['duration'].total_seconds() / 60 diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index ae3dbd307..d23af3f6e 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -364,7 +364,7 @@ class IStrategy(ABC): """ Based on current profit of the trade and configured (trailing) stoploss, decides to sell or not - :param current_profit: current profit in percent + :param current_profit: current profit as ratio """ stop_loss_value = force_stoploss if force_stoploss else self.stoploss @@ -427,8 +427,9 @@ class IStrategy(ABC): def min_roi_reached(self, trade: Trade, current_profit: float, current_time: datetime) -> bool: """ - Based on trade duration, current price and ROI configuration, decides whether bot should - sell. Requires current_profit to be in percent!! + Based on trade duration, current profit of the trade and ROI configuration, + decides whether bot should sell. + :param current_profit: current profit as ratio :return: True if bot should sell at current rate """ # Check if time matches and current rate is above threshold diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index 6b86d9c1f..2a0d19128 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -158,7 +158,7 @@ def test_edge_results(edge_conf, mocker, caplog, data) -> None: assert len(trades) == len(data.trades) if not results.empty: - assert round(results["profit_percent"].sum(), 3) == round(data.profit_perc, 3) + assert round(results["profit_ratio"].sum(), 3) == round(data.profit_perc, 3) for c, trade in enumerate(data.trades): res = results.iloc[c] diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index a8b8e0c5a..1ac03f812 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -726,7 +726,7 @@ def test_forcesell_handle(default_conf, update, ticker, fee, 'open_rate': 1.099e-05, 'current_rate': 1.172e-05, 'profit_amount': 6.126e-05, - 'profit_percent': 0.0611052, + 'profit_ratio': 0.0611052, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.FORCE_SELL.value, @@ -785,7 +785,7 @@ def test_forcesell_down_handle(default_conf, update, ticker, fee, 'open_rate': 1.099e-05, 'current_rate': 1.044e-05, 'profit_amount': -5.492e-05, - 'profit_percent': -0.05478342, + 'profit_ratio': -0.05478342, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.FORCE_SELL.value, @@ -833,7 +833,7 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None 'open_rate': 1.099e-05, 'current_rate': 1.098e-05, 'profit_amount': -5.91e-06, - 'profit_percent': -0.00589291, + 'profit_ratio': -0.00589291, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.FORCE_SELL.value, @@ -1253,7 +1253,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: 'open_rate': 7.5e-05, 'current_rate': 3.201e-05, 'profit_amount': -0.05746268, - 'profit_percent': -0.57405275, + 'profit_ratio': -0.57405275, 'stake_currency': 'ETH', 'fiat_currency': 'USD', 'sell_reason': SellType.STOP_LOSS.value, @@ -1282,7 +1282,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: 'open_rate': 7.5e-05, 'current_rate': 3.201e-05, 'profit_amount': -0.05746268, - 'profit_percent': -0.57405275, + 'profit_ratio': -0.57405275, 'stake_currency': 'ETH', 'sell_reason': SellType.STOP_LOSS.value, 'open_date': arrow.utcnow().shift(days=-1, hours=-2, minutes=-30), @@ -1448,7 +1448,7 @@ def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None: 'open_rate': 7.5e-05, 'current_rate': 3.201e-05, 'profit_amount': -0.05746268, - 'profit_percent': -0.57405275, + 'profit_ratio': -0.57405275, 'stake_currency': 'ETH', 'fiat_currency': 'USD', 'sell_reason': SellType.STOP_LOSS.value, diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 852b6b990..61f69bd85 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2297,7 +2297,7 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, mocker) -> N 'open_rate': 1.099e-05, 'current_rate': 1.172e-05, 'profit_amount': 6.126e-05, - 'profit_percent': 0.0611052, + 'profit_ratio': 0.0611052, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.ROI.value, @@ -2346,7 +2346,7 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, mocker) 'open_rate': 1.099e-05, 'current_rate': 1.044e-05, 'profit_amount': -5.492e-05, - 'profit_percent': -0.05478342, + 'profit_ratio': -0.05478342, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.STOP_LOSS.value, @@ -2402,7 +2402,7 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe 'open_rate': 1.099e-05, 'current_rate': 1.044e-05, 'profit_amount': -1.498e-05, - 'profit_percent': -0.01493766, + 'profit_ratio': -0.01493766, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.STOP_LOSS.value, @@ -2602,7 +2602,7 @@ def test_execute_sell_market_order(default_conf, ticker, fee, 'open_rate': 1.099e-05, 'current_rate': 1.172e-05, 'profit_amount': 6.126e-05, - 'profit_percent': 0.0611052, + 'profit_ratio': 0.0611052, 'stake_currency': 'BTC', 'fiat_currency': 'USD', 'sell_reason': SellType.ROI.value, From bee8e92f0287aec18b77e936a5a5d1771aa869a0 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 28 Feb 2020 23:50:25 +0300 Subject: [PATCH 1873/3421] Final changes, use sqrt i.o. statistics.pstdev --- freqtrade/optimize/hyperopt_loss_sortino_daily.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index 0f81ffca5..16dc26142 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -5,7 +5,6 @@ This module defines the alternative HyperOptLoss class which can be used for Hyperoptimization. """ import math -import statistics from datetime import datetime from pandas import DataFrame, date_range @@ -56,7 +55,9 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): sum_daily['downside_returns'] = 0 sum_daily.loc[total_profit < 0, 'downside_returns'] = total_profit total_downside = sum_daily['downside_returns'] - down_stdev = statistics.pstdev(total_downside, 0) + # Here total_downside contains min(0, P - MAR) values, + # where P = sum_daily["profit_percent_after_slippage"] + down_stdev = math.sqrt((total_downside**2).sum() / len(total_downside)) if (down_stdev != 0.): sortino_ratio = expected_returns_mean / down_stdev * math.sqrt(days_in_year) From 349aa2f9574d04f7f20c9c04e6008767129a17e5 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Fri, 28 Feb 2020 21:54:04 +0100 Subject: [PATCH 1874/3421] Added dynamic print table function to hyperopt --- freqtrade/commands/hyperopt_commands.py | 2 +- freqtrade/optimize/hyperopt.py | 22 +++++++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index ccaa59e54..72e5bf12f 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -51,7 +51,7 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: try: Hyperopt.print_result_table(config, trials, total_epochs, - not filteroptions['only_best'], print_colorized) + not filteroptions['only_best'], print_colorized, 0) except KeyboardInterrupt: print('User interrupted..') diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 66ea18bd1..84cd078a0 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -116,6 +116,7 @@ class Hyperopt: self.config['ask_strategy']['use_sell_signal'] = True self.print_all = self.config.get('print_all', False) + self.hyperopt_table_header = 0 self.print_colorized = self.config.get('print_colorized', False) self.print_json = self.config.get('print_json', False) @@ -272,8 +273,13 @@ class Hyperopt: if not self.print_all: # Separate the results explanation string from dots print("\n") - self.print_results_explanation(results, self.total_epochs, self.print_all, - self.print_colorized) + self.print_result_table(self.config, results, self.total_epochs, + self.print_all, self.print_colorized, + self.hyperopt_table_header) + if is_best: + self.hyperopt_table_header = 2 + else: + self.hyperopt_table_header = 3 @staticmethod def print_results_explanation(results, total_epochs, highlight_best: bool, @@ -299,7 +305,7 @@ class Hyperopt: @staticmethod def print_result_table(config: dict, results: list, total_epochs: int, highlight_best: bool, - print_colorized: bool) -> None: + print_colorized: bool, remove_header: int) -> None: """ Log result table """ @@ -328,7 +334,7 @@ class Hyperopt: trials['Profit'] = trials['Profit'].apply( lambda x: '{:,.2f}%'.format(x) if not isna(x) else x) trials['Total profit'] = trials['Total profit'].apply( - lambda x: '{: 11.8f} '.format(x) + config['stake_currency'] if not isna(x) else x) + lambda x: '{:,.8f} '.format(x) + config['stake_currency'] if not isna(x) else x) trials['Avg duration'] = trials['Avg duration'].apply( lambda x: '{:,.1f}m'.format(x) if not isna(x) else x) if print_colorized: @@ -343,9 +349,11 @@ class Hyperopt: str(trials.loc[i][z]), Style.RESET_ALL) trials = trials.drop(columns=['is_initial_point', 'is_best', 'is_profit']) - - print(tabulate(trials.to_dict(orient='list'), headers='keys', tablefmt='psql', - stralign="right")) + table = tabulate(trials.to_dict(orient='list'), tablefmt='psql', + headers='keys', stralign="right") + if remove_header > 0: + table = table.split("\n", remove_header)[remove_header] + print(table) def has_space(self, space: str) -> bool: """ From 5277d71913566088747c6499740bcdc68ac51f27 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 Feb 2020 14:56:04 +0100 Subject: [PATCH 1875/3421] Add test for empty stake-currency --- tests/exchange/test_exchange.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 179566bb0..6bec53d49 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -511,6 +511,22 @@ def test_validate_pairs_stakecompatibility(default_conf, mocker, caplog): Exchange(default_conf) +def test_validate_pairs_stakecompatibility_downloaddata(default_conf, mocker, caplog): + api_mock = MagicMock() + default_conf['stake_currency'] = '' + type(api_mock).markets = PropertyMock(return_value={ + 'ETH/BTC': {'quote': 'BTC'}, 'LTC/BTC': {'quote': 'BTC'}, + 'XRP/BTC': {'quote': 'BTC'}, 'NEO/BTC': {'quote': 'BTC'}, + 'HELLO-WORLD': {'quote': 'BTC'}, + }) + mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') + + Exchange(default_conf) + + def test_validate_pairs_stakecompatibility_fail(default_conf, mocker, caplog): default_conf['exchange']['pair_whitelist'].append('HELLO-WORLD') api_mock = MagicMock() From 60579485e52dd36d1bc20344766baf9850510b57 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 Feb 2020 14:56:36 +0100 Subject: [PATCH 1876/3421] fix empty stake currency problem --- freqtrade/exchange/exchange.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 799ee2c37..f6b722c9a 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -332,7 +332,8 @@ class Exchange: logger.warning(f"Pair {pair} is restricted for some users on this exchange." f"Please check if you are impacted by this restriction " f"on the exchange and eventually remove {pair} from your whitelist.") - if not self.get_pair_quote_currency(pair) == self._config['stake_currency']: + if (self._config['stake_currency'] and + not self.get_pair_quote_currency(pair) == self._config['stake_currency']): invalid_pairs.append(pair) if invalid_pairs: raise OperationalException( From 9336d8ee02d63e56513fe0a76c5bbef00aab9390 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 Feb 2020 15:44:45 +0100 Subject: [PATCH 1877/3421] Try fix random testfailure --- tests/commands/test_commands.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 5f9bc0aa2..1877aaa43 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -447,11 +447,9 @@ def test_create_datadir_failed(caplog): def test_create_datadir(caplog, mocker): - # Ensure that caplog is empty before starting ... - # Should prevent random failures. - caplog.clear() - # Added assert here to analyze random test-failures ... - assert len(caplog.record_tuples) == 0 + + # Capture caplog length here trying to avoid random test failure + len_caplog_before = len(caplog.record_tuples) cud = mocker.patch("freqtrade.commands.deploy_commands.create_userdata_dir", MagicMock()) csf = mocker.patch("freqtrade.commands.deploy_commands.copy_sample_files", MagicMock()) @@ -464,7 +462,7 @@ def test_create_datadir(caplog, mocker): assert cud.call_count == 1 assert csf.call_count == 1 - assert len(caplog.record_tuples) == 0 + assert len(caplog.record_tuples) == len_caplog_before def test_start_new_strategy(mocker, caplog): From f25adf3b12096fab33dbcb098a8d679067334a17 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 Feb 2020 15:48:36 +0100 Subject: [PATCH 1878/3421] improve and correct release documentation --- docs/developer.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/docs/developer.md b/docs/developer.md index b128ffd2b..ef9232a59 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -234,7 +234,7 @@ git checkout -b new_release Determine if crucial bugfixes have been made between this commit and the current state, and eventually cherry-pick these. -* Edit `freqtrade/__init__.py` and add the version matching the current date (for example `2019.7` for July 2019). Minor versions can be `2019.7-1` should we need to do a second release that month. +* Edit `freqtrade/__init__.py` and add the version matching the current date (for example `2019.7` for July 2019). Minor versions can be `2019.7.1` should we need to do a second release that month. Version numbers must follow allowed versions from PEP0440 to avoid failures pushing to pypi. * Commit this part * push that branch to the remote and create a PR against the master branch @@ -268,11 +268,6 @@ Once the PR against master is merged (best right after merging): * Use "master" as reference (this step comes after the above PR is merged). * Use the above changelog as release comment (as codeblock) -### After-release - -* Update version in develop by postfixing that with `-dev` (`2019.6 -> 2019.6-dev`). -* Create a PR against develop to update that branch. - ## Releases ### pypi From 848054d140243a18e2dfa8eb70077e6be15a4f94 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 Feb 2020 15:53:54 +0100 Subject: [PATCH 1879/3421] Fix jupyter notebook example - generate_candlestick_graph() needs a filtered pairlist, not a list containing all pairs --- docs/strategy_analysis_example.md | 6 ++++-- freqtrade/templates/strategy_analysis_example.ipynb | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index 53b35ca09..d26d684ce 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -121,7 +121,6 @@ from freqtrade.data.btanalysis import analyze_trade_parallelism # Analyze the above parallel_trades = analyze_trade_parallelism(trades, '5m') - parallel_trades.plot() ``` @@ -134,11 +133,14 @@ Freqtrade offers interactive plotting capabilities based on plotly. from freqtrade.plot.plotting import generate_candlestick_graph # Limit graph period to keep plotly quick and reactive +# Filter trades to one pair +trades_red = trades.loc[trades['pair'] == pair] + data_red = data['2019-06-01':'2019-06-10'] # Generate candlestick graph graph = generate_candlestick_graph(pair=pair, data=data_red, - trades=trades, + trades=trades_red, indicators1=['sma20', 'ema50', 'ema55'], indicators2=['rsi', 'macd', 'macdsignal', 'macdhist'] ) diff --git a/freqtrade/templates/strategy_analysis_example.ipynb b/freqtrade/templates/strategy_analysis_example.ipynb index 399235cfe..dffa308ce 100644 --- a/freqtrade/templates/strategy_analysis_example.ipynb +++ b/freqtrade/templates/strategy_analysis_example.ipynb @@ -190,7 +190,6 @@ "# Analyze the above\n", "parallel_trades = analyze_trade_parallelism(trades, '5m')\n", "\n", - "\n", "parallel_trades.plot()" ] }, @@ -212,11 +211,14 @@ "from freqtrade.plot.plotting import generate_candlestick_graph\n", "# Limit graph period to keep plotly quick and reactive\n", "\n", + "# Filter trades to one pair\n", + "trades_red = trades.loc[trades['pair'] == pair]\n", + "\n", "data_red = data['2019-06-01':'2019-06-10']\n", "# Generate candlestick graph\n", "graph = generate_candlestick_graph(pair=pair,\n", " data=data_red,\n", - " trades=trades,\n", + " trades=trades_red,\n", " indicators1=['sma20', 'ema50', 'ema55'],\n", " indicators2=['rsi', 'macd', 'macdsignal', 'macdhist']\n", " )\n", From 4c39f360844a5db0352914e190a7a933489adb4d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 Feb 2020 16:36:33 +0100 Subject: [PATCH 1880/3421] Add note about InvalidNonce to documentation --- docs/exchanges.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/exchanges.md b/docs/exchanges.md index f615bc61a..70dae0aa5 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -62,6 +62,11 @@ res = [ f"{x['MarketCurrency']}/{x['BaseCurrency']}" for x in ct.publicGetMarket print(res) ``` +## All exchanges + +Should you experience constant errors with Nonce (like `InvalidNonce`), it is best to regenerate the API keys. Resetting Nonce is difficult and it's usually easier to regenerate the API keys. + + ## Random notes for other exchanges * The Ocean (exchange id: `theocean`) exchange uses Web3 functionality and requires `web3` python package to be installed: From d7373be55344f80883203fa493f766d542911882 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 Feb 2020 16:58:22 +0100 Subject: [PATCH 1881/3421] Add official support for Kraken --- README.md | 3 ++- docs/configuration.md | 5 ++++- freqtrade/exchange/exchange.py | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 59799da84..88070d45e 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,8 @@ hesitate to read the source code and understand the mechanism of this bot. ## Exchange marketplaces supported - [X] [Bittrex](https://bittrex.com/) -- [X] [Binance](https://www.binance.com/) ([*Note for binance users](#a-note-on-binance)) +- [X] [Binance](https://www.binance.com/) ([*Note for binance users](docs/exchanges.md#blacklists)) +- [X] [Kraken](https://kraken.com/) - [ ] [113 others to tests](https://github.com/ccxt/ccxt/). _(We cannot guarantee they will work)_ ## Documentation diff --git a/docs/configuration.md b/docs/configuration.md index b05dab7c9..95af2c049 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -371,15 +371,18 @@ The possible values are: `gtc` (default), `fok` or `ioc`. Freqtrade is based on [CCXT library](https://github.com/ccxt/ccxt) that supports over 100 cryptocurrency exchange markets and trading APIs. The complete up-to-date list can be found in the [CCXT repo homepage](https://github.com/ccxt/ccxt/tree/master/python). However, the bot was tested -with only Bittrex and Binance. +with only Bittrex, Binance and Kraken. The bot was tested with the following exchanges: - [Bittrex](https://bittrex.com/): "bittrex" - [Binance](https://www.binance.com/): "binance" +- [Kraken](https://kraken.com/): "kraken" Feel free to test other exchanges and submit your PR to improve the bot. +Some exchanges require special configuration, which can be found on the [Exchange-specific Notes](exchanges.md) documentation page. + #### Sample exchange configuration A exchange configuration for "binance" would look as follows: diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 799ee2c37..4f03bde80 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1023,7 +1023,7 @@ def is_exchange_known_ccxt(exchange_name: str, ccxt_module: CcxtModuleType = Non def is_exchange_officially_supported(exchange_name: str) -> bool: - return exchange_name in ['bittrex', 'binance'] + return exchange_name in ['bittrex', 'binance', 'kraken'] def ccxt_exchanges(ccxt_module: CcxtModuleType = None) -> List[str]: From 18d724f7a18994ba4bf50b605218f9ee76e5750a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 Feb 2020 19:22:36 +0100 Subject: [PATCH 1882/3421] Adjust wording of supported exchanges --- docs/configuration.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 95af2c049..b3f032bc6 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -370,10 +370,9 @@ The possible values are: `gtc` (default), `fok` or `ioc`. Freqtrade is based on [CCXT library](https://github.com/ccxt/ccxt) that supports over 100 cryptocurrency exchange markets and trading APIs. The complete up-to-date list can be found in the -[CCXT repo homepage](https://github.com/ccxt/ccxt/tree/master/python). However, the bot was tested -with only Bittrex, Binance and Kraken. - -The bot was tested with the following exchanges: +[CCXT repo homepage](https://github.com/ccxt/ccxt/tree/master/python). + However, the bot was tested by the development team with only Bittrex, Binance and Kraken, + so the these are the only officially supported exhanges: - [Bittrex](https://bittrex.com/): "bittrex" - [Binance](https://www.binance.com/): "binance" From 60f04cff4de955361b310295b702150e256b8789 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 Feb 2020 20:41:03 +0100 Subject: [PATCH 1883/3421] Simplify expression --- freqtrade/exchange/exchange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index f6b722c9a..d1397a282 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -333,7 +333,7 @@ class Exchange: f"Please check if you are impacted by this restriction " f"on the exchange and eventually remove {pair} from your whitelist.") if (self._config['stake_currency'] and - not self.get_pair_quote_currency(pair) == self._config['stake_currency']): + self.get_pair_quote_currency(pair) != self._config['stake_currency']): invalid_pairs.append(pair) if invalid_pairs: raise OperationalException( From 23ae0653bd6a92ccdfc0a513dde1fa7f120ceb49 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sat, 29 Feb 2020 23:24:08 +0100 Subject: [PATCH 1884/3421] Changed table output to match hyperopt-list command --- freqtrade/optimize/hyperopt.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 84cd078a0..700614453 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -276,10 +276,7 @@ class Hyperopt: self.print_result_table(self.config, results, self.total_epochs, self.print_all, self.print_colorized, self.hyperopt_table_header) - if is_best: - self.hyperopt_table_header = 2 - else: - self.hyperopt_table_header = 3 + self.hyperopt_table_header = 2 @staticmethod def print_results_explanation(results, total_epochs, highlight_best: bool, @@ -349,10 +346,17 @@ class Hyperopt: str(trials.loc[i][z]), Style.RESET_ALL) trials = trials.drop(columns=['is_initial_point', 'is_best', 'is_profit']) - table = tabulate(trials.to_dict(orient='list'), tablefmt='psql', - headers='keys', stralign="right") if remove_header > 0: + table = tabulate(trials.to_dict(orient='list'), tablefmt='orgtbl', + headers='keys', stralign="right") table = table.split("\n", remove_header)[remove_header] + elif remove_header < 0: + table = tabulate(trials.to_dict(orient='list'), tablefmt='psql', + headers='keys', stralign="right") + table = "\n".join(table.split("\n")[0:remove_header]) + else: + table = tabulate(trials.to_dict(orient='list'), tablefmt='psql', + headers='keys', stralign="right") print(table) def has_space(self, space: str) -> bool: @@ -541,7 +545,7 @@ class Hyperopt: def start(self) -> None: self.random_state = self._set_random_state(self.config.get('hyperopt_random_state', None)) logger.info(f"Using optimizer random state: {self.random_state}") - + self.hyperopt_table_header = -1 data, timerange = self.backtesting.load_bt_data() preprocessed = self.backtesting.strategy.tickerdata_to_dataframe(data) From 7a4edb1cd8f0c397bd16b19bcb67c4e0b7f40fd9 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sat, 29 Feb 2020 23:41:59 +0100 Subject: [PATCH 1885/3421] Fix: When total epochs is less than cpu cores --- freqtrade/optimize/hyperopt.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 66ea18bd1..ee3f4d2c4 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -557,6 +557,8 @@ class Hyperopt: cpus = cpu_count() logger.info(f"Found {cpus} CPU cores. Let's make them scream!") config_jobs = self.config.get('hyperopt_jobs', -1) + if self.total_epochs < cpus: + config_jobs = self.total_epochs logger.info(f'Number of parallel jobs set as: {config_jobs}') self.dimensions: List[Dimension] = self.hyperopt_space() From e89fd33229e0b8c6e9ebbd8e49920205fcf0a81c Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sat, 29 Feb 2020 23:57:15 +0100 Subject: [PATCH 1886/3421] Fix for more arguments --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index ee3f4d2c4..6b334507a 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -557,7 +557,7 @@ class Hyperopt: cpus = cpu_count() logger.info(f"Found {cpus} CPU cores. Let's make them scream!") config_jobs = self.config.get('hyperopt_jobs', -1) - if self.total_epochs < cpus: + if self.total_epochs < cpus and (config_jobs > self.total_epochs or config_jobs < 0): config_jobs = self.total_epochs logger.info(f'Number of parallel jobs set as: {config_jobs}') From 267416ecedf34c4019cac403fe18f808c38a2b06 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 1 Mar 2020 03:11:00 +0100 Subject: [PATCH 1887/3421] Changed test for new table printing --- tests/optimize/test_hyperopt.py | 129 +++++++++++++++++++++++++++----- 1 file changed, 109 insertions(+), 20 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index e3212e0cd..0fa5b9536 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -390,17 +390,30 @@ def test_onlyprofit_loss_prefers_higher_profits(default_conf, hyperopt_results) def test_log_results_if_loss_improves(hyperopt, capsys) -> None: hyperopt.current_best_loss = 2 hyperopt.total_epochs = 2 + hyperopt.print_results( { - 'is_best': True, 'loss': 1, + 'results_metrics': + { + 'trade_count': 1, + 'avg_profit': 0.1, + 'total_profit': 0.001, + 'profit': 1.0, + 'duration': 20.0 + }, + 'total_profit': 0, 'current_epoch': 2, # This starts from 1 (in a human-friendly manner) - 'results_explanation': 'foo.', - 'is_initial_point': False + 'is_initial_point': False, + 'is_best': True } ) out, err = capsys.readouterr() - assert ' 2/2: foo. Objective: 1.00000' in out + result_str = ( + '| Best | 2/2 | 1 | 0.10% | 0.00100000 BTC |' + ' 1.00% | 20.0m | 1 |' + ) + assert result_str in out def test_no_log_if_loss_does_not_improve(hyperopt, caplog) -> None: @@ -467,7 +480,16 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', - 'params': {'buy': {}, 'sell': {}, 'roi': {}, 'stoploss': 0.0}}]) + 'params': {'buy': {}, 'sell': {}, 'roi': {}, 'stoploss': 0.0}, + 'results_metrics': + { + 'trade_count': 1, + 'avg_profit': 0.1, + 'total_profit': 0.001, + 'profit': 1.0, + 'duration': 20.0 + }, + }]) ) patch_exchange(mocker) # Co-test loading ticker-interval from strategy @@ -761,11 +783,23 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', - MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}, - 'params_details': {'buy': {'mfi-value': None}, - 'sell': {'sell-mfi-value': None}, - 'roi': {}, 'stoploss': {'stoploss': None}, - 'trailing': {'trailing_stop': None}}}]) + MagicMock(return_value=[{ + 'loss': 1, 'results_explanation': 'foo result', 'params': {}, + 'params_details': { + 'buy': {'mfi-value': None}, + 'sell': {'sell-mfi-value': None}, + 'roi': {}, 'stoploss': {'stoploss': None}, + 'trailing': {'trailing_stop': None} + }, + 'results_metrics': + { + 'trade_count': 1, + 'avg_profit': 0.1, + 'total_profit': 0.001, + 'profit': 1.0, + 'duration': 20.0 + } + }]) ) patch_exchange(mocker) @@ -787,7 +821,11 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: parallel.assert_called_once() out, err = capsys.readouterr() - assert '{"params":{"mfi-value":null,"sell-mfi-value":null},"minimal_roi":{},"stoploss":null,"trailing_stop":null}' in out # noqa: E501 + result_str = ( + '{"params":{"mfi-value":null,"sell-mfi-value":null},"minimal_roi"' + ':{},"stoploss":null,"trailing_stop":null}' + ) + assert result_str in out # noqa: E501 assert dumper.called # Should be called twice, once for tickerdata, once to save evaluations assert dumper.call_count == 2 @@ -804,10 +842,22 @@ def test_print_json_spaces_default(mocker, default_conf, caplog, capsys) -> None parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', - MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}, - 'params_details': {'buy': {'mfi-value': None}, - 'sell': {'sell-mfi-value': None}, - 'roi': {}, 'stoploss': {'stoploss': None}}}]) + MagicMock(return_value=[{ + 'loss': 1, 'results_explanation': 'foo result', 'params': {}, + 'params_details': { + 'buy': {'mfi-value': None}, + 'sell': {'sell-mfi-value': None}, + 'roi': {}, 'stoploss': {'stoploss': None} + }, + 'results_metrics': + { + 'trade_count': 1, + 'avg_profit': 0.1, + 'total_profit': 0.001, + 'profit': 1.0, + 'duration': 20.0 + } + }]) ) patch_exchange(mocker) @@ -846,8 +896,18 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', - MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}, - 'params_details': {'roi': {}, 'stoploss': {'stoploss': None}}}]) + MagicMock(return_value=[{ + 'loss': 1, 'results_explanation': 'foo result', 'params': {}, + 'params_details': {'roi': {}, 'stoploss': {'stoploss': None}}, + 'results_metrics': + { + 'trade_count': 1, + 'avg_profit': 0.1, + 'total_profit': 0.001, + 'profit': 1.0, + 'duration': 20.0 + } + }]) ) patch_exchange(mocker) @@ -887,7 +947,16 @@ def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys) parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', MagicMock(return_value=[{ - 'loss': 1, 'results_explanation': 'foo result', 'params': {'stoploss': 0.0}}]) + 'loss': 1, 'results_explanation': 'foo result', 'params': {'stoploss': 0.0}, + 'results_metrics': + { + 'trade_count': 1, + 'avg_profit': 0.1, + 'total_profit': 0.001, + 'profit': 1.0, + 'duration': 20.0 + } + }]) ) patch_exchange(mocker) @@ -965,7 +1034,17 @@ def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None: parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', - MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}]) + MagicMock(return_value=[{ + 'loss': 1, 'results_explanation': 'foo result', 'params': {}, + 'results_metrics': + { + 'trade_count': 1, + 'avg_profit': 0.1, + 'total_profit': 0.001, + 'profit': 1.0, + 'duration': 20.0 + } + }]) ) patch_exchange(mocker) @@ -1012,7 +1091,17 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', - MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', 'params': {}}]) + MagicMock(return_value=[{ + 'loss': 1, 'results_explanation': 'foo result', 'params': {}, + 'results_metrics': + { + 'trade_count': 1, + 'avg_profit': 0.1, + 'total_profit': 0.001, + 'profit': 1.0, + 'duration': 20.0 + } + }]) ) patch_exchange(mocker) From 379275e2d6446f8f5950a61b0b233933c851f632 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 1 Mar 2020 03:24:04 +0100 Subject: [PATCH 1888/3421] Updated tests --- tests/optimize/test_hyperopt.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 0fa5b9536..5bd9e542f 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -479,17 +479,18 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: parallel = mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.run_optimizer_parallel', - MagicMock(return_value=[{'loss': 1, 'results_explanation': 'foo result', - 'params': {'buy': {}, 'sell': {}, 'roi': {}, 'stoploss': 0.0}, - 'results_metrics': - { - 'trade_count': 1, - 'avg_profit': 0.1, - 'total_profit': 0.001, - 'profit': 1.0, - 'duration': 20.0 - }, - }]) + MagicMock(return_value=[{ + 'loss': 1, 'results_explanation': 'foo result', + 'params': {'buy': {}, 'sell': {}, 'roi': {}, 'stoploss': 0.0}, + 'results_metrics': + { + 'trade_count': 1, + 'avg_profit': 0.1, + 'total_profit': 0.001, + 'profit': 1.0, + 'duration': 20.0 + }, + }]) ) patch_exchange(mocker) # Co-test loading ticker-interval from strategy From eda77aeec8555bf5c27e1a574f63497773e4d38c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Mar 2020 09:30:30 +0100 Subject: [PATCH 1889/3421] Add render_template fallback --- freqtrade/misc.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 96bac28d8..9eb309e13 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -148,3 +148,15 @@ def render_template(templatefile: str, arguments: dict = {}) -> str: ) template = env.get_template(templatefile) return template.render(**arguments) + + +def render_template_with_fallback(templatefile: str, templatefallbackfile: str, + arguments: dict = {}) -> str: + """ + Use templatefile if possible, otherwise fall back to templatefallbackfile + """ + from jinja2.exceptions import TemplateNotFound + try: + return render_template(templatefile, arguments) + except TemplateNotFound: + return render_template(templatefallbackfile, arguments) From 7736f8d0180f8e4ae86aed14867131443be9557a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Mar 2020 09:34:42 +0100 Subject: [PATCH 1890/3421] Add tests for fallkback --- tests/test_misc.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/test_misc.py b/tests/test_misc.py index 83e008466..23775c85e 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -9,7 +9,8 @@ import pytest from freqtrade.data.converter import parse_ticker_dataframe from freqtrade.misc import (datesarray_to_datetimearray, file_dump_json, file_load_json, format_ms_time, pair_to_filename, - plural, shorten_date) + plural, render_template, + render_template_with_fallback, shorten_date) def test_shorten_date() -> None: @@ -123,3 +124,17 @@ def test_plural() -> None: assert plural(1.5, "ox", "oxen") == "oxen" assert plural(-0.5, "ox", "oxen") == "oxen" assert plural(-1.5, "ox", "oxen") == "oxen" + + +def test_render_template_fallback(mocker): + from jinja2.exceptions import TemplateNotFound + with pytest.raises(TemplateNotFound): + val = render_template( + templatefile='subtemplates/indicators_does-not-exist.j2',) + + val = render_template_with_fallback( + templatefile='subtemplates/indicators_does-not-exist.j2', + templatefallbackfile='subtemplates/indicators_minimal.j2', + ) + assert isinstance(val, str) + assert 'if self.dp' in val From 791148176c90ce493952268c6401052c2b6f32ba Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Mar 2020 09:35:53 +0100 Subject: [PATCH 1891/3421] Add callback functions to new-strategy --template advanced --- freqtrade/commands/cli_options.py | 6 +-- freqtrade/commands/deploy_commands.py | 53 ++++++++++++++----- freqtrade/templates/base_strategy.py.j2 | 1 + .../subtemplates/strategy_methods_advanced.j2 | 36 +++++++++++++ .../subtemplates/strategy_methods_empty.j2 | 0 5 files changed, 80 insertions(+), 16 deletions(-) create mode 100644 freqtrade/templates/subtemplates/strategy_methods_advanced.j2 create mode 100644 freqtrade/templates/subtemplates/strategy_methods_empty.j2 diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index a8d4bc198..2c49d7487 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -379,9 +379,9 @@ AVAILABLE_CLI_OPTIONS = { # Templating options "template": Arg( '--template', - help='Use a template which is either `minimal` or ' - '`full` (containing multiple sample indicators). Default: `%(default)s`.', - choices=['full', 'minimal'], + help='Use a template which is either `minimal`, ' + '`full` (containing multiple sample indicators) or `advanced`. Default: `%(default)s`.', + choices=['full', 'minimal', 'advanced'], default='full', ), # Plot dataframe diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index f5a68f748..a29ba346f 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -8,7 +8,7 @@ from freqtrade.configuration.directory_operations import (copy_sample_files, create_userdata_dir) from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGIES from freqtrade.exceptions import OperationalException -from freqtrade.misc import render_template +from freqtrade.misc import render_template, render_template_with_fallback from freqtrade.state import RunMode logger = logging.getLogger(__name__) @@ -32,10 +32,27 @@ def deploy_new_strategy(strategy_name: str, strategy_path: Path, subtemplate: st """ Deploy new strategy from template to strategy_path """ - indicators = render_template(templatefile=f"subtemplates/indicators_{subtemplate}.j2",) - buy_trend = render_template(templatefile=f"subtemplates/buy_trend_{subtemplate}.j2",) - sell_trend = render_template(templatefile=f"subtemplates/sell_trend_{subtemplate}.j2",) - plot_config = render_template(templatefile=f"subtemplates/plot_config_{subtemplate}.j2",) + fallback = 'full' + indicators = render_template_with_fallback( + templatefile=f"subtemplates/indicators_{subtemplate}.j2", + templatefallbackfile=f"subtemplates/indicators_{fallback}.j2", + ) + buy_trend = render_template_with_fallback( + templatefile=f"subtemplates/buy_trend_{subtemplate}.j2", + templatefallbackfile=f"subtemplates/buy_trend_{fallback}.j2", + ) + sell_trend = render_template_with_fallback( + templatefile=f"subtemplates/sell_trend_{subtemplate}.j2", + templatefallbackfile=f"subtemplates/sell_trend_{fallback}.j2", + ) + plot_config = render_template_with_fallback( + templatefile=f"subtemplates/plot_config_{subtemplate}.j2", + templatefallbackfile=f"subtemplates/plot_config_{fallback}.j2", + ) + additional_methods = render_template_with_fallback( + templatefile=f"subtemplates/strategy_methods_{subtemplate}.j2", + templatefallbackfile=f"subtemplates/strategy_methods_empty.j2", + ) strategy_text = render_template(templatefile='base_strategy.py.j2', arguments={"strategy": strategy_name, @@ -43,6 +60,7 @@ def deploy_new_strategy(strategy_name: str, strategy_path: Path, subtemplate: st "buy_trend": buy_trend, "sell_trend": sell_trend, "plot_config": plot_config, + "additional_methods": additional_methods, }) logger.info(f"Writing strategy to `{strategy_path}`.") @@ -73,14 +91,23 @@ def deploy_new_hyperopt(hyperopt_name: str, hyperopt_path: Path, subtemplate: st """ Deploys a new hyperopt template to hyperopt_path """ - buy_guards = render_template( - templatefile=f"subtemplates/hyperopt_buy_guards_{subtemplate}.j2",) - sell_guards = render_template( - templatefile=f"subtemplates/hyperopt_sell_guards_{subtemplate}.j2",) - buy_space = render_template( - templatefile=f"subtemplates/hyperopt_buy_space_{subtemplate}.j2",) - sell_space = render_template( - templatefile=f"subtemplates/hyperopt_sell_space_{subtemplate}.j2",) + fallback = 'full' + buy_guards = render_template_with_fallback( + templatefile=f"subtemplates/hyperopt_buy_guards_{subtemplate}.j2", + templatefallbackfile=f"subtemplates/hyperopt_buy_guards_{fallback}.j2", + ) + sell_guards = render_template_with_fallback( + templatefile=f"subtemplates/hyperopt_sell_guards_{subtemplate}.j2", + templatefallbackfile=f"subtemplates/hyperopt_sell_guards_{fallback}.j2", + ) + buy_space = render_template_with_fallback( + templatefile=f"subtemplates/hyperopt_buy_space_{subtemplate}.j2", + templatefallbackfile=f"subtemplates/hyperopt_buy_space_{fallback}.j2", + ) + sell_space = render_template_with_fallback( + templatefile=f"subtemplates/hyperopt_sell_space_{subtemplate}.j2", + templatefallbackfile=f"subtemplates/hyperopt_sell_space_{fallback}.j2", + ) strategy_text = render_template(templatefile='base_hyperopt.py.j2', arguments={"hyperopt": hyperopt_name, diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index fbf083387..a1b9f7388 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -137,3 +137,4 @@ class {{ strategy }}(IStrategy): ), 'sell'] = 1 return dataframe + {{ additional_methods | indent(4) }} diff --git a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 new file mode 100644 index 000000000..05541d1c7 --- /dev/null +++ b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 @@ -0,0 +1,36 @@ + +def check_buy_timeout(self, pair: str, trade: Trade, order: Dict, **kwargs) -> bool: + """ + Check buy timeout function callback. + This method can be used to override the buy-timeout. + It is called whenever a limit buy order has been created, + and is not yet fully filled. + Configuration options in `unfilledtimeout` will be verified before this, + so ensure to set these timeouts high enough. + + When not implemented by a strategy, this simply returns False. + :param pair: Pair the trade is for + :param trade: trade object. + :param order: Order dictionary as returned from CCXT. + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return bool: When True is returned, then the buy-order is cancelled. + """ + return False + +def check_sell_timeout(self, pair: str, trade: Trade, order: Dict, **kwargs) -> bool: + """ + Check sell timeout function callback. + This method can be used to override the sell-timeout. + It is called whenever a limit sell order has been created, + and is not yet fully filled. + Configuration options in `unfilledtimeout` will be verified before this, + so ensure to set these timeouts high enough. + + When not implemented by a strategy, this simply returns False. + :param pair: Pair the trade is for + :param trade: trade object. + :param order: Order dictionary as returned from CCXT. + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return bool: When True is returned, then the sell-order is cancelled. + """ + return False diff --git a/freqtrade/templates/subtemplates/strategy_methods_empty.j2 b/freqtrade/templates/subtemplates/strategy_methods_empty.j2 new file mode 100644 index 000000000..e69de29bb From cd54875f03ab8fb2444503bf50ec9bd8837a42fe Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Mar 2020 09:40:07 +0100 Subject: [PATCH 1892/3421] Add documentation link to advanced functions --- .../templates/subtemplates/strategy_methods_advanced.j2 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 index 05541d1c7..20144125c 100644 --- a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 +++ b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 @@ -1,5 +1,5 @@ -def check_buy_timeout(self, pair: str, trade: Trade, order: Dict, **kwargs) -> bool: +def check_buy_timeout(self, pair: str, trade: 'Trade', order: Dict, **kwargs) -> bool: """ Check buy timeout function callback. This method can be used to override the buy-timeout. @@ -8,6 +8,8 @@ def check_buy_timeout(self, pair: str, trade: Trade, order: Dict, **kwargs) -> b Configuration options in `unfilledtimeout` will be verified before this, so ensure to set these timeouts high enough. + For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ + When not implemented by a strategy, this simply returns False. :param pair: Pair the trade is for :param trade: trade object. @@ -17,7 +19,7 @@ def check_buy_timeout(self, pair: str, trade: Trade, order: Dict, **kwargs) -> b """ return False -def check_sell_timeout(self, pair: str, trade: Trade, order: Dict, **kwargs) -> bool: +def check_sell_timeout(self, pair: str, trade: 'Trade', order: Dict, **kwargs) -> bool: """ Check sell timeout function callback. This method can be used to override the sell-timeout. @@ -26,6 +28,8 @@ def check_sell_timeout(self, pair: str, trade: Trade, order: Dict, **kwargs) -> Configuration options in `unfilledtimeout` will be verified before this, so ensure to set these timeouts high enough. + For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ + When not implemented by a strategy, this simply returns False. :param pair: Pair the trade is for :param trade: trade object. From 4d8430c687de23be59b7914374f5d5c5f72b92c6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Mar 2020 09:43:20 +0100 Subject: [PATCH 1893/3421] Use string typehints to avoid import errors --- docs/strategy-advanced.md | 4 ++-- freqtrade/strategy/interface.py | 4 ++-- freqtrade/templates/subtemplates/strategy_methods_advanced.j2 | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index 8d241cc86..dcb8018f9 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -33,7 +33,7 @@ class Awesomestrategy(IStrategy): 'sell': 60 * 25 } - def check_buy_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool: + def check_buy_timeout(self, pair: str, trade: 'Trade', order: dict, **kwargs) -> bool: if trade.open_rate > 100 and trade.open_date < datetime.utcnow() - timedelta(minutes=5): return True elif trade.open_rate > 10 and trade.open_date < datetime.utcnow() - timedelta(minutes=3): @@ -43,7 +43,7 @@ class Awesomestrategy(IStrategy): return False - def check_sell_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool: + def check_sell_timeout(self, pair: str, trade: 'Trade', order: dict, **kwargs) -> bool: if trade.open_rate > 100 and trade.open_date < datetime.utcnow() - timedelta(minutes=5): return True elif trade.open_rate > 10 and trade.open_date < datetime.utcnow() - timedelta(minutes=3): diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 95dbbb99f..a5945ae1f 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -149,7 +149,7 @@ class IStrategy(ABC): :return: DataFrame with sell column """ - def check_buy_timeout(self, pair: str, trade: Trade, order: Dict, **kwargs) -> bool: + def check_buy_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool: """ Check buy timeout function callback. This method can be used to override the buy-timeout. @@ -167,7 +167,7 @@ class IStrategy(ABC): """ return False - def check_sell_timeout(self, pair: str, trade: Trade, order: Dict, **kwargs) -> bool: + def check_sell_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool: """ Check sell timeout function callback. This method can be used to override the sell-timeout. diff --git a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 index 20144125c..0ca35e117 100644 --- a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 +++ b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 @@ -1,5 +1,5 @@ -def check_buy_timeout(self, pair: str, trade: 'Trade', order: Dict, **kwargs) -> bool: +def check_buy_timeout(self, pair: str, trade: 'Trade', order: dict, **kwargs) -> bool: """ Check buy timeout function callback. This method can be used to override the buy-timeout. @@ -19,7 +19,7 @@ def check_buy_timeout(self, pair: str, trade: 'Trade', order: Dict, **kwargs) -> """ return False -def check_sell_timeout(self, pair: str, trade: 'Trade', order: Dict, **kwargs) -> bool: +def check_sell_timeout(self, pair: str, trade: 'Trade', order: dict, **kwargs) -> bool: """ Check sell timeout function callback. This method can be used to override the sell-timeout. From 0f2d77163455ed1c163a26bee03592a5c8f3a2d6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Mar 2020 09:46:12 +0100 Subject: [PATCH 1894/3421] update docs --- docs/utils.md | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index cdf0c31af..78185be38 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -77,7 +77,7 @@ Results will be located in `user_data/strategies/.py`. ``` output usage: freqtrade new-strategy [-h] [--userdir PATH] [-s NAME] - [--template {full,minimal}] + [--template {full,minimal,advanced}] optional arguments: -h, --help show this help message and exit @@ -86,10 +86,10 @@ optional arguments: -s NAME, --strategy NAME Specify strategy class name which will be used by the bot. - --template {full,minimal} - Use a template which is either `minimal` or `full` - (containing multiple sample indicators). Default: - `full`. + --template {full,minimal,advanced} + Use a template which is either `minimal`, `full` + (containing multiple sample indicators) or `advanced`. + Default: `full`. ``` @@ -105,6 +105,12 @@ With custom user directory freqtrade new-strategy --userdir ~/.freqtrade/ --strategy AwesomeStrategy ``` +Using the advanced template (populates all optional functions and methods) + +```bash +freqtrade new-strategy --strategy AwesomeStrategy --template advanced +``` + ## Create new hyperopt Creates a new hyperopt from a template similar to SampleHyperopt. @@ -114,7 +120,7 @@ Results will be located in `user_data/hyperopts/.py`. ``` output usage: freqtrade new-hyperopt [-h] [--userdir PATH] [--hyperopt NAME] - [--template {full,minimal}] + [--template {full,minimal,advanced}] optional arguments: -h, --help show this help message and exit @@ -122,10 +128,10 @@ optional arguments: Path to userdata directory. --hyperopt NAME Specify hyperopt class name which will be used by the bot. - --template {full,minimal} - Use a template which is either `minimal` or `full` - (containing multiple sample indicators). Default: - `full`. + --template {full,minimal,advanced} + Use a template which is either `minimal`, `full` + (containing multiple sample indicators) or `advanced`. + Default: `full`. ``` ### Sample usage of new-hyperopt From 75b4f1a442e29084c4a93bda81419fe4223cd33d Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 1 Mar 2020 14:12:27 +0100 Subject: [PATCH 1895/3421] Fix alignment of higher values --- freqtrade/optimize/hyperopt.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 6b334507a..947aa78bf 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -9,6 +9,7 @@ import logging import random import sys import warnings +from math import ceil, floor from collections import OrderedDict from operator import itemgetter from pathlib import Path @@ -571,7 +572,7 @@ class Hyperopt: with Parallel(n_jobs=config_jobs) as parallel: jobs = parallel._effective_n_jobs() logger.info(f'Effective number of parallel workers used: {jobs}') - EVALS = max(self.total_epochs // jobs, 1) + EVALS = ceil(self.total_epochs / jobs) for i in range(EVALS): asked = self.opt.ask(n_points=jobs) f_val = self.run_optimizer_parallel(parallel, asked, i) @@ -580,6 +581,8 @@ class Hyperopt: for j in range(jobs): # Use human-friendly indexes here (starting from 1) current = i * jobs + j + 1 + if current > self.total_epochs: + continue val = f_val[j] val['current_epoch'] = current val['is_initial_point'] = current <= INITIAL_POINTS From f08c7eedf1b583a65e01d4ea5f30ead17f7bfad3 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 1 Mar 2020 14:35:13 +0100 Subject: [PATCH 1896/3421] Changed jobs to be dynamic for last loop --- freqtrade/optimize/hyperopt.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 947aa78bf..91507c347 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -9,7 +9,7 @@ import logging import random import sys import warnings -from math import ceil, floor +from math import ceil from collections import OrderedDict from operator import itemgetter from pathlib import Path @@ -578,11 +578,13 @@ class Hyperopt: f_val = self.run_optimizer_parallel(parallel, asked, i) self.opt.tell(asked, [v['loss'] for v in f_val]) self.fix_optimizer_models_list() - for j in range(jobs): + if (i * jobs + jobs) > self.total_epochs: + current_jobs = jobs - ((i * jobs + jobs) - self.total_epochs) + else: + current_jobs = jobs + for j in range(current_jobs): # Use human-friendly indexes here (starting from 1) current = i * jobs + j + 1 - if current > self.total_epochs: - continue val = f_val[j] val['current_epoch'] = current val['is_initial_point'] = current <= INITIAL_POINTS From 77b7f95efb786c71e325cc662dea0bb6bc61d291 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Mon, 2 Mar 2020 00:14:01 +0100 Subject: [PATCH 1897/3421] simple code styling fixes --- freqtrade/commands/hyperopt_commands.py | 56 ++++++++++++------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index ccaa59e54..e7f89a375 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -97,10 +97,10 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: if n > trials_epochs: raise OperationalException( - f"The index of the epoch to show should be less than {trials_epochs + 1}.") + f"The index of the epoch to show should be less than {trials_epochs + 1}.") if n < -trials_epochs: raise OperationalException( - f"The index of the epoch to show should be greater than {-trials_epochs - 1}.") + f"The index of the epoch to show should be greater than {-trials_epochs - 1}.") # Translate epoch index from human-readable format to pythonic if n > 0: @@ -122,52 +122,52 @@ def _hyperopt_filter_trials(trials: List, filteroptions: dict) -> List: trials = [x for x in trials if x['results_metrics']['profit'] > 0] if filteroptions['filter_min_trades'] > 0: trials = [ - x for x in trials - if x['results_metrics']['trade_count'] > filteroptions['filter_min_trades'] - ] + x for x in trials + if x['results_metrics']['trade_count'] > filteroptions['filter_min_trades'] + ] if filteroptions['filter_max_trades'] > 0: trials = [ - x for x in trials - if x['results_metrics']['trade_count'] < filteroptions['filter_max_trades'] - ] + x for x in trials + if x['results_metrics']['trade_count'] < filteroptions['filter_max_trades'] + ] if filteroptions['filter_min_avg_time'] is not None: trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] trials = [ - x for x in trials - if x['results_metrics']['duration'] > filteroptions['filter_min_avg_time'] - ] + x for x in trials + if x['results_metrics']['duration'] > filteroptions['filter_min_avg_time'] + ] if filteroptions['filter_max_avg_time'] is not None: trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] trials = [ - x for x in trials - if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time'] - ] + x for x in trials + if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time'] + ] if filteroptions['filter_min_avg_profit'] is not None: trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] trials = [ - x for x in trials - if x['results_metrics']['avg_profit'] - > filteroptions['filter_min_avg_profit'] - ] + x for x in trials + if x['results_metrics']['avg_profit'] + > filteroptions['filter_min_avg_profit'] + ] if filteroptions['filter_max_avg_profit'] is not None: trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] trials = [ - x for x in trials - if x['results_metrics']['avg_profit'] - < filteroptions['filter_max_avg_profit'] - ] + x for x in trials + if x['results_metrics']['avg_profit'] + < filteroptions['filter_max_avg_profit'] + ] if filteroptions['filter_min_total_profit'] is not None: trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] trials = [ - x for x in trials - if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit'] - ] + x for x in trials + if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit'] + ] if filteroptions['filter_max_total_profit'] is not None: trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] trials = [ - x for x in trials - if x['results_metrics']['profit'] < filteroptions['filter_max_total_profit'] - ] + x for x in trials + if x['results_metrics']['profit'] < filteroptions['filter_max_total_profit'] + ] logger.info(f"{len(trials)} " + ("best " if filteroptions['only_best'] else "") + From e204e3277bd277f3dbfcee58c764b559f105740b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2020 08:37:58 +0000 Subject: [PATCH 1898/3421] Bump ccxt from 1.22.95 to 1.23.30 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.22.95 to 1.23.30. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.22.95...1.23.30) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index bdb1f1127..10d567a96 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.22.95 +ccxt==1.23.30 SQLAlchemy==1.3.13 python-telegram-bot==12.4.2 arrow==0.15.5 From 485075b8f2e8cd4a5f19456388d6b482b404b413 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2020 08:38:36 +0000 Subject: [PATCH 1899/3421] Bump scikit-learn from 0.22.1 to 0.22.2 Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.22.1 to 0.22.2. - [Release notes](https://github.com/scikit-learn/scikit-learn/releases) - [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.22.1...0.22.2) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 2984229c1..c713317ec 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -3,7 +3,7 @@ # Required for hyperopt scipy==1.4.1 -scikit-learn==0.22.1 +scikit-learn==0.22.2 scikit-optimize==0.7.4 filelock==3.0.12 joblib==0.14.1 From a17f3fb8be7229fb064cb74f853a61b5428b3b0c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2020 08:39:25 +0000 Subject: [PATCH 1900/3421] Bump plotly from 4.5.1 to 4.5.2 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.5.1 to 4.5.2. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.5.1...v4.5.2) Signed-off-by: dependabot-preview[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index 5e62a5e95..a70c3e0cf 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.5.1 +plotly==4.5.2 From 6e2290c4f0d142de4e924f7ee78b209d90ec3643 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 2 Mar 2020 20:05:54 +0100 Subject: [PATCH 1901/3421] Allow last to be empty - closes #3005 --- freqtrade/freqtradebot.py | 8 +++----- tests/test_freqtradebot.py | 8 ++++++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 53493ad4c..04e3dd72f 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -257,12 +257,10 @@ class FreqtradeBot: else: logger.info(f"Using Last {bid_strategy['price_side'].capitalize()} / Last Price") ticker = self.exchange.fetch_ticker(pair) - rate = ticker[bid_strategy['price_side']] - if rate < ticker['last']: - ticker_rate = rate - else: + ticker_rate = ticker[bid_strategy['price_side']] + if ticker['last'] and ticker_rate > ticker['last']: balance = self.config['bid_strategy']['ask_last_balance'] - ticker_rate = rate + balance * (ticker['last'] - rate) + ticker_rate = ticker_rate + balance * (ticker['last'] - ticker_rate) used_rate = ticker_rate self._buy_rate_cache[pair] = used_rate diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 49000382f..a5506017c 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -914,6 +914,10 @@ def test_process_informative_pairs_added(default_conf, ticker, mocker) -> None: ('ask', 20, 19, 10, 0.3, 17), # Between ask and last ('ask', 5, 6, 10, 1.0, 5), # last bigger than ask ('ask', 5, 6, 10, 0.5, 5), # last bigger than ask + ('ask', 10, 20, None, 0.5, 10), # last not available - uses ask + ('ask', 4, 5, None, 0.5, 4), # last not available - uses ask + ('ask', 4, 5, None, 1, 4), # last not available - uses ask + ('ask', 4, 5, None, 0, 4), # last not available - uses ask ('bid', 10, 20, 10, 0.0, 20), # Full bid side ('bid', 10, 20, 10, 1.0, 10), # Full last side ('bid', 10, 20, 10, 0.5, 15), # Between bid and last @@ -921,6 +925,10 @@ def test_process_informative_pairs_added(default_conf, ticker, mocker) -> None: ('bid', 10, 20, 10, 0.3, 17), # Between bid and last ('bid', 4, 5, 10, 1.0, 5), # last bigger than bid ('bid', 4, 5, 10, 0.5, 5), # last bigger than bid + ('bid', 10, 20, None, 0.5, 20), # last not available - uses bid + ('bid', 4, 5, None, 0.5, 5), # last not available - uses bid + ('bid', 4, 5, None, 1, 5), # last not available - uses bid + ('bid', 4, 5, None, 0, 5), # last not available - uses bid ]) def test_get_buy_rate(mocker, default_conf, caplog, side, ask, bid, last, last_ab, expected) -> None: From 7713cfeb7996b478f20c65afab9a1b49318b062b Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Mon, 2 Mar 2020 21:02:32 +0100 Subject: [PATCH 1902/3421] Corrected logic for -j + and - argument --- freqtrade/optimize/hyperopt.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 91507c347..c500e71bf 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -558,7 +558,8 @@ class Hyperopt: cpus = cpu_count() logger.info(f"Found {cpus} CPU cores. Let's make them scream!") config_jobs = self.config.get('hyperopt_jobs', -1) - if self.total_epochs < cpus and (config_jobs > self.total_epochs or config_jobs < 0): + if (config_jobs < 0 and (cpus + config_jobs + 1) > self.total_epochs) \ + or (config_jobs > 0 and config_jobs > self.total_epochs): config_jobs = self.total_epochs logger.info(f'Number of parallel jobs set as: {config_jobs}') From 0e4862b0c8f8cc927675eb4e3fb098f479f1d0b9 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Mon, 2 Mar 2020 22:58:54 +0100 Subject: [PATCH 1903/3421] Added logging if argument is miss-configured --- freqtrade/optimize/hyperopt.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index c500e71bf..98c19f15b 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -561,6 +561,7 @@ class Hyperopt: if (config_jobs < 0 and (cpus + config_jobs + 1) > self.total_epochs) \ or (config_jobs > 0 and config_jobs > self.total_epochs): config_jobs = self.total_epochs + logger.info("Job count invalid will correct") logger.info(f'Number of parallel jobs set as: {config_jobs}') self.dimensions: List[Dimension] = self.hyperopt_space() From 92425642da922740e319f9563c93a36873af946f Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Tue, 3 Mar 2020 01:00:24 +0300 Subject: [PATCH 1904/3421] Fix config_jobs --- freqtrade/optimize/hyperopt.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 98c19f15b..66ce94ae0 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -558,10 +558,6 @@ class Hyperopt: cpus = cpu_count() logger.info(f"Found {cpus} CPU cores. Let's make them scream!") config_jobs = self.config.get('hyperopt_jobs', -1) - if (config_jobs < 0 and (cpus + config_jobs + 1) > self.total_epochs) \ - or (config_jobs > 0 and config_jobs > self.total_epochs): - config_jobs = self.total_epochs - logger.info("Job count invalid will correct") logger.info(f'Number of parallel jobs set as: {config_jobs}') self.dimensions: List[Dimension] = self.hyperopt_space() From a7d4755859740a62cc87dc7f168eb2f7fbb54f81 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Tue, 3 Mar 2020 01:20:14 +0300 Subject: [PATCH 1905/3421] optimize calculation of current_jobs --- freqtrade/optimize/hyperopt.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 66ce94ae0..27fb7bcdb 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -576,10 +576,12 @@ class Hyperopt: f_val = self.run_optimizer_parallel(parallel, asked, i) self.opt.tell(asked, [v['loss'] for v in f_val]) self.fix_optimizer_models_list() - if (i * jobs + jobs) > self.total_epochs: - current_jobs = jobs - ((i * jobs + jobs) - self.total_epochs) - else: - current_jobs = jobs + + # Correct the number of epochs to handled for the last + # iteration (should not exceed self.total_epochs) + n_rest = (i + 1) * jobs - self.total_epochs + current_jobs = jobs - n_rest if n_rest > 0 else jobs + for j in range(current_jobs): # Use human-friendly indexes here (starting from 1) current = i * jobs + j + 1 From 45c94967927609b556f3b5ec226cc5dc31d9a8a9 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Tue, 3 Mar 2020 01:33:11 +0300 Subject: [PATCH 1906/3421] Do not run optimizer for 'jobs' epochs for the last iteration --- freqtrade/optimize/hyperopt.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 27fb7bcdb..41e2ce82b 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -572,16 +572,16 @@ class Hyperopt: logger.info(f'Effective number of parallel workers used: {jobs}') EVALS = ceil(self.total_epochs / jobs) for i in range(EVALS): - asked = self.opt.ask(n_points=jobs) + # Correct the number of epochs to be processed for the last + # iteration (should not exceed self.total_epochs in total) + n_rest = (i + 1) * jobs - self.total_epochs + current_jobs = jobs - n_rest if n_rest > 0 else jobs + + asked = self.opt.ask(n_points=current_jobs) f_val = self.run_optimizer_parallel(parallel, asked, i) self.opt.tell(asked, [v['loss'] for v in f_val]) self.fix_optimizer_models_list() - # Correct the number of epochs to handled for the last - # iteration (should not exceed self.total_epochs) - n_rest = (i + 1) * jobs - self.total_epochs - current_jobs = jobs - n_rest if n_rest > 0 else jobs - for j in range(current_jobs): # Use human-friendly indexes here (starting from 1) current = i * jobs + j + 1 From 52cd5f912789d7b151702ba6c0a7caf3e4414846 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Tue, 3 Mar 2020 01:42:25 +0300 Subject: [PATCH 1907/3421] Better use enumerate: more correct and more pythonic --- freqtrade/optimize/hyperopt.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 41e2ce82b..b3be3f160 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -582,10 +582,9 @@ class Hyperopt: self.opt.tell(asked, [v['loss'] for v in f_val]) self.fix_optimizer_models_list() - for j in range(current_jobs): + for j, val in enumerate(f_val): # Use human-friendly indexes here (starting from 1) current = i * jobs + j + 1 - val = f_val[j] val['current_epoch'] = current val['is_initial_point'] = current <= INITIAL_POINTS logger.debug(f"Optimizer epoch evaluated: {val}") From 399c419163cd8acf867f16b9702b9936a1d05c7d Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Tue, 3 Mar 2020 01:14:56 +0100 Subject: [PATCH 1908/3421] Changed table formating. Adding some code to align hyperopt table generation. WIP --- freqtrade/optimize/hyperopt.py | 15 ++++++++++----- tests/optimize/test_hyperopt.py | 4 +++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 700614453..ac272128e 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -325,15 +325,20 @@ class Hyperopt: trials['Trades'] = trials['Trades'].astype(str) trials['Epoch'] = trials['Epoch'].apply( - lambda x: "{}/{}".format(x, total_epochs)) + lambda x: '{}/{}'.format(str(x).rjust(len(str(total_epochs)), ' '), total_epochs)) trials['Avg profit'] = trials['Avg profit'].apply( - lambda x: '{:,.2f}%'.format(x) if not isna(x) else x) + lambda x: ('{:,.2f}%'.format(x)).rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ')) trials['Profit'] = trials['Profit'].apply( - lambda x: '{:,.2f}%'.format(x) if not isna(x) else x) + lambda x: ('{:,.2f}%'.format(x)) if not isna(x) else "--") trials['Total profit'] = trials['Total profit'].apply( - lambda x: '{:,.8f} '.format(x) + config['stake_currency'] if not isna(x) else x) + lambda x: ('{:,.8f} '.format(x)) + config['stake_currency'] if not isna(x) else "--") trials['Avg duration'] = trials['Avg duration'].apply( - lambda x: '{:,.1f}m'.format(x) if not isna(x) else x) + lambda x: ('{:,.1f}m'.format(x)).rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ')) + trials['Objective'] = trials['Objective'].apply( + lambda x: str(x).rjust(10, ' ') if str(x) != str(100000) else "N/A".rjust(10, ' ')) + trials['Profit'] = trials['Total profit'] + " (" + trials['Profit'] + ")" + trials = trials.drop(columns=['Total profit']) + if print_colorized: for i in range(len(trials)): if trials.loc[i]['is_profit']: diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 5bd9e542f..8de812d2d 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -413,7 +413,9 @@ def test_log_results_if_loss_improves(hyperopt, capsys) -> None: '| Best | 2/2 | 1 | 0.10% | 0.00100000 BTC |' ' 1.00% | 20.0m | 1 |' ) - assert result_str in out + # assert result_str in out + assert all(x in out + for x in ["Best", "2/2", " 1", "0.10%", "0.00100000 BTC", "1.00%", "20.0m"]) def test_no_log_if_loss_does_not_improve(hyperopt, caplog) -> None: From 4aca8d7fcc2e217652572325aa72a61a70d8ec98 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Tue, 3 Mar 2020 01:35:18 +0100 Subject: [PATCH 1909/3421] PEP8 fix --- tests/optimize/test_hyperopt.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 8de812d2d..6c7e1e16f 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -409,11 +409,6 @@ def test_log_results_if_loss_improves(hyperopt, capsys) -> None: } ) out, err = capsys.readouterr() - result_str = ( - '| Best | 2/2 | 1 | 0.10% | 0.00100000 BTC |' - ' 1.00% | 20.0m | 1 |' - ) - # assert result_str in out assert all(x in out for x in ["Best", "2/2", " 1", "0.10%", "0.00100000 BTC", "1.00%", "20.0m"]) From 3479f7d986a044de4db94c6d1c9f3ac02b4544f6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Mar 2020 07:13:11 +0100 Subject: [PATCH 1910/3421] Add max_drawdown function --- freqtrade/data/btanalysis.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index c28e462ba..9407a3139 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -3,7 +3,7 @@ Helpers when analyzing backtest data """ import logging from pathlib import Path -from typing import Dict, Union +from typing import Dict, Union, Tuple import numpy as np import pandas as pd @@ -188,3 +188,23 @@ def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str, # FFill to get continuous df[col_name] = df[col_name].ffill() return df + + +def calculate_max_drawdown(trades: pd.DataFrame) -> Tuple[float, pd.Timestamp, pd.Timestamp]: + """ + Calculate max drawdown and the corresponding close dates + :param trades: DataFrame containing trades (requires columns close_time and profitperc) + :return: Tuple (float, highdate, lowdate) with absolute max drawdown, high and low time + :raise: ValueError if trade-dataframe was found empty. + """ + if len(trades) == 0: + raise ValueError("Trade dataframe empty") + profit_results = trades.sort_values('close_time') + max_drawdown_df = pd.DataFrame() + max_drawdown_df['cumulative'] = profit_results['profitperc'].cumsum() + max_drawdown_df['high_value'] = max_drawdown_df['cumulative'].cummax() + max_drawdown_df['drawdown'] = max_drawdown_df['cumulative'] - max_drawdown_df['high_value'] + high_date = profit_results.loc[max_drawdown_df['high_value'].idxmax(), 'close_time'] + low_date = profit_results.loc[max_drawdown_df['drawdown'].idxmin(), 'close_time'] + + return abs(min(max_drawdown_df['drawdown'])), high_date, low_date From e050511ddcd295841590cfd99c4897e97dc678e3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Mar 2020 07:20:41 +0100 Subject: [PATCH 1911/3421] Add test for max_drawdown calculation --- freqtrade/data/btanalysis.py | 2 +- tests/data/test_btanalysis.py | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 9407a3139..799f15011 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -198,7 +198,7 @@ def calculate_max_drawdown(trades: pd.DataFrame) -> Tuple[float, pd.Timestamp, p :raise: ValueError if trade-dataframe was found empty. """ if len(trades) == 0: - raise ValueError("Trade dataframe empty") + raise ValueError("Trade dataframe empty.") profit_results = trades.sort_values('close_time') max_drawdown_df = pd.DataFrame() max_drawdown_df['cumulative'] = profit_results['profitperc'].cumsum() diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 60d9c3ea5..7e3c1f077 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -2,15 +2,17 @@ from unittest.mock import MagicMock import pytest from arrow import Arrow -from pandas import DataFrame, DateOffset, to_datetime +from pandas import DataFrame, DateOffset, to_datetime, Timestamp from freqtrade.configuration import TimeRange from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, + analyze_trade_parallelism, + calculate_max_drawdown, combine_tickers_with_mean, create_cum_profit, extract_trades_of_period, load_backtest_data, load_trades, - load_trades_from_db, analyze_trade_parallelism) + load_trades_from_db) from freqtrade.data.history import load_data, load_pair_history from tests.test_persistence import create_mock_trades @@ -163,3 +165,17 @@ def test_create_cum_profit1(testdatadir): assert "cum_profits" in cum_profits.columns assert cum_profits.iloc[0]['cum_profits'] == 0 assert cum_profits.iloc[-1]['cum_profits'] == 0.0798005 + + +def test_calculate_max_drawdown(testdatadir): + filename = testdatadir / "backtest-result_test.json" + bt_data = load_backtest_data(filename) + drawdown, h, low = calculate_max_drawdown(bt_data) + assert isinstance(drawdown, float) + assert pytest.approx(drawdown) == 0.21142322 + assert isinstance(h, Timestamp) + assert isinstance(low, Timestamp) + assert h == Timestamp('2018-01-24 14:25:00', tz='UTC') + assert low == Timestamp('2018-01-30 04:45:00', tz='UTC') + with pytest.raises(ValueError, match='Trade dataframe empty.'): + drawdown, h, low = calculate_max_drawdown(DataFrame()) From 88e7cab5b99873d3f5af59ca61333013d8e2234b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Mar 2020 07:21:14 +0100 Subject: [PATCH 1912/3421] Add max_drawdown to profit plot --- freqtrade/plot/plotting.py | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 4a892792a..2ce4f1501 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -5,7 +5,8 @@ from typing import Any, Dict, List import pandas as pd from freqtrade.configuration import TimeRange -from freqtrade.data.btanalysis import (combine_tickers_with_mean, +from freqtrade.data.btanalysis import (calculate_max_drawdown, + combine_tickers_with_mean, create_cum_profit, extract_trades_of_period, load_trades) from freqtrade.data.converter import trim_dataframe @@ -111,6 +112,36 @@ def add_profit(fig, row, data: pd.DataFrame, column: str, name: str) -> make_sub return fig +def add_max_drawdown(fig, row, trades: pd.DataFrame, df_comb: pd.DataFrame) -> make_subplots: + """ + Add scatter points indicating max drawdown + """ + try: + max_drawdown, highdate, lowdate = calculate_max_drawdown(trades) + + drawdown = go.Scatter( + x=[highdate, lowdate], + y=[ + df_comb.loc[highdate, 'cum_profit'], + df_comb.loc[lowdate, 'cum_profit'], + ], + mode='markers', + name='Max Drawdown', + text=f"Max drawdown {max_drawdown}", + marker=dict( + symbol='square-open', + size=9, + line=dict(width=2), + color='green' + + ) + ) + fig.add_trace(drawdown, row, 1) + except ValueError: + logger.warning("No trades found - not plotting max drawdown.") + return fig + + def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: """ Add trades to "fig" @@ -364,6 +395,7 @@ def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame], fig.add_trace(avgclose, 1, 1) fig = add_profit(fig, 2, df_comb, 'cum_profit', 'Profit') + fig = add_max_drawdown(fig, 2, trades, df_comb) for pair in pairs: profit_col = f'cum_profit_{pair}' From 33a63562cbacdeb858a29b09c4a11b9d3f31ae7b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Mar 2020 07:23:38 +0100 Subject: [PATCH 1913/3421] make drawdown function less restrictive --- freqtrade/data/btanalysis.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 799f15011..394c40112 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -190,21 +190,26 @@ def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str, return df -def calculate_max_drawdown(trades: pd.DataFrame) -> Tuple[float, pd.Timestamp, pd.Timestamp]: +def calculate_max_drawdown(trades: pd.DataFrame, date_col: str = 'close_time', + value_col: str = 'profitperc' + ) -> Tuple[float, pd.Timestamp, pd.Timestamp]: """ Calculate max drawdown and the corresponding close dates :param trades: DataFrame containing trades (requires columns close_time and profitperc) + :param date_col: Column in DataFrame to use for dates (defaults to 'close_time') + :param value_col: Column in DataFrame to use for values (defaults to 'profitperc') :return: Tuple (float, highdate, lowdate) with absolute max drawdown, high and low time :raise: ValueError if trade-dataframe was found empty. """ if len(trades) == 0: raise ValueError("Trade dataframe empty.") - profit_results = trades.sort_values('close_time') + profit_results = trades.sort_values(date_col) max_drawdown_df = pd.DataFrame() - max_drawdown_df['cumulative'] = profit_results['profitperc'].cumsum() + max_drawdown_df['cumulative'] = profit_results[value_col].cumsum() max_drawdown_df['high_value'] = max_drawdown_df['cumulative'].cummax() max_drawdown_df['drawdown'] = max_drawdown_df['cumulative'] - max_drawdown_df['high_value'] - high_date = profit_results.loc[max_drawdown_df['high_value'].idxmax(), 'close_time'] - low_date = profit_results.loc[max_drawdown_df['drawdown'].idxmin(), 'close_time'] + + high_date = profit_results.loc[max_drawdown_df['high_value'].idxmax(), date_col] + low_date = profit_results.loc[max_drawdown_df['drawdown'].idxmin(), date_col] return abs(min(max_drawdown_df['drawdown'])), high_date, low_date From d9e83cc4e2892bb9210c166dbd0857fc7b9e87b9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Mar 2020 09:33:08 +0100 Subject: [PATCH 1914/3421] Run CI on windows python 3.8 --- .github/workflows/ci.yml | 5 ++--- .../TA_Lib-0.4.17-cp38-cp38-win_amd64.whl | Bin 0 -> 662134 bytes build_helpers/install_windows.ps1 | 10 +++++++++- 3 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 build_helpers/TA_Lib-0.4.17-cp38-cp38-win_amd64.whl diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc3d324a1..42668e46f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,7 +115,7 @@ jobs: strategy: matrix: os: [ windows-latest ] - python-version: [3.7] + python-version: [3.7, 3.8] steps: - uses: actions/checkout@v2 @@ -130,8 +130,7 @@ jobs: if: startsWith(runner.os, 'Windows') with: path: ~\AppData\Local\pip\Cache - key: ${{ runner.os }}-pip - restore-keys: ${{ runner.os }}-pip + key: ${{ matrix.os }}-${{ matrix.python-version }}-pip - name: Installation run: | diff --git a/build_helpers/TA_Lib-0.4.17-cp38-cp38-win_amd64.whl b/build_helpers/TA_Lib-0.4.17-cp38-cp38-win_amd64.whl new file mode 100644 index 0000000000000000000000000000000000000000..90626b183a42e55d12ddabf57d3d257aea29fbf5 GIT binary patch literal 662134 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

      $U6w?tKT@c&g@Lvze-5=` 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�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

      O_G_btw< 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 c-u=Va$x49#GO+I{BZxql@8(eq1LnQ Date: Tue, 3 Mar 2020 09:36:04 +0100 Subject: [PATCH 1915/3421] Remove flucky test assert --- tests/commands/test_commands.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 1877aaa43..3e1c0a581 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -448,9 +448,6 @@ def test_create_datadir_failed(caplog): def test_create_datadir(caplog, mocker): - # Capture caplog length here trying to avoid random test failure - len_caplog_before = len(caplog.record_tuples) - cud = mocker.patch("freqtrade.commands.deploy_commands.create_userdata_dir", MagicMock()) csf = mocker.patch("freqtrade.commands.deploy_commands.copy_sample_files", MagicMock()) args = [ @@ -462,7 +459,6 @@ def test_create_datadir(caplog, mocker): assert cud.call_count == 1 assert csf.call_count == 1 - assert len(caplog.record_tuples) == len_caplog_before def test_start_new_strategy(mocker, caplog): From 9bebc9ba7699426a86271f711f98e080142531a8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Mar 2020 09:40:41 +0100 Subject: [PATCH 1916/3421] Fix powershell comparison --- build_helpers/install_windows.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build_helpers/install_windows.ps1 b/build_helpers/install_windows.ps1 index af1768d18..7dbdd77dd 100644 --- a/build_helpers/install_windows.ps1 +++ b/build_helpers/install_windows.ps1 @@ -6,10 +6,10 @@ python -m pip install --upgrade pip $pyv = python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')" -if ($pyv == '3.7') { +if ($pyv -eq '3.7') { pip install build_helpers\TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl } -if ($pyv == '3.8') { +if ($pyv -eq '3.8') { pip install build_helpers\TA_Lib-0.4.17-cp38-cp38-win_amd64.whl } From 53dcb5d5ed1dd1dc741e9cf3f6d0b49f90e55029 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Mar 2020 19:36:03 +0100 Subject: [PATCH 1917/3421] Fix logging expression --- freqtrade/freqtradebot.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 04e3dd72f..920c9203e 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -685,7 +685,8 @@ class FreqtradeBot: order_book_max=order_book_max) for i in range(order_book_min, order_book_max + 1): sell_rate = next(order_book) - logger.debug(' order book asks top %s: %0.8f', i, sell_rate) + logger.debug(f" order book {config_ask_strategy['price_side']} top {i}: " + f"{sell_rate:0.8f}") if self._check_and_execute_sell(trade, sell_rate, buy, sell): return True From 9d8970a76bdff307482bdf82dffe2279af3fa731 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Mar 2020 20:18:38 +0100 Subject: [PATCH 1918/3421] Add test and formatting to drawdown --- docs/plotting.md | 1 + freqtrade/data/btanalysis.py | 2 +- freqtrade/plot/plotting.py | 4 ++-- tests/test_plotting.py | 8 ++++++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/plotting.md b/docs/plotting.md index ecd5e1603..3eef8f8e7 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -196,6 +196,7 @@ The first graph is good to get a grip of how the overall market progresses. The second graph will show if your algorithm works or doesn't. Perhaps you want an algorithm that steadily makes small profits, or one that acts less often, but makes big swings. +This graph will also highlight the start (and end) of the Max drawdown period. The third graph can be useful to spot outliers, events in pairs that cause profit spikes. diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 394c40112..7972c6333 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -190,7 +190,7 @@ def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str, return df -def calculate_max_drawdown(trades: pd.DataFrame, date_col: str = 'close_time', +def calculate_max_drawdown(trades: pd.DataFrame, *, date_col: str = 'close_time', value_col: str = 'profitperc' ) -> Tuple[float, pd.Timestamp, pd.Timestamp]: """ diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 2ce4f1501..d979a40e0 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -126,8 +126,8 @@ def add_max_drawdown(fig, row, trades: pd.DataFrame, df_comb: pd.DataFrame) -> m df_comb.loc[lowdate, 'cum_profit'], ], mode='markers', - name='Max Drawdown', - text=f"Max drawdown {max_drawdown}", + name=f"Max drawdown {max_drawdown:.2f}%", + text=f"Max drawdown {max_drawdown:.2f}%", marker=dict( symbol='square-open', size=9, diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 34d1f2b0c..dd04035b7 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -3,15 +3,16 @@ from copy import deepcopy from pathlib import Path from unittest.mock import MagicMock +import pandas as pd import plotly.graph_objects as go import pytest from plotly.subplots import make_subplots +from freqtrade.commands import start_plot_dataframe, start_plot_profit from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import create_cum_profit, load_backtest_data from freqtrade.exceptions import OperationalException -from freqtrade.commands import start_plot_dataframe, start_plot_profit from freqtrade.plot.plotting import (add_indicators, add_profit, create_plotconfig, generate_candlestick_graph, @@ -266,6 +267,7 @@ def test_generate_profit_graph(testdatadir): trades = load_backtest_data(filename) timerange = TimeRange.parse_timerange("20180110-20180112") pairs = ["TRX/BTC", "ADA/BTC"] + trades = trades[trades['close_time'] < pd.Timestamp('2018-01-12', tz='UTC')] tickers = history.load_data(datadir=testdatadir, pairs=pairs, @@ -283,13 +285,15 @@ def test_generate_profit_graph(testdatadir): assert fig.layout.yaxis3.title.text == "Profit" figure = fig.layout.figure - assert len(figure.data) == 4 + assert len(figure.data) == 5 avgclose = find_trace_in_fig_data(figure.data, "Avg close price") assert isinstance(avgclose, go.Scatter) profit = find_trace_in_fig_data(figure.data, "Profit") assert isinstance(profit, go.Scatter) + profit = find_trace_in_fig_data(figure.data, "Max drawdown 0.00%") + assert isinstance(profit, go.Scatter) for pair in pairs: profit_pair = find_trace_in_fig_data(figure.data, f"Profit {pair}") From 7652a2bb95451ad907aec48ff4a8cc133901ae40 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Wed, 4 Mar 2020 00:10:47 +0100 Subject: [PATCH 1919/3421] Updated table layout and aligning better for hyperopt --- freqtrade/optimize/hyperopt.py | 50 ++++++++++++++++++++------------- tests/optimize/test_hyperopt.py | 2 +- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index ac272128e..7937ad611 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -21,7 +21,7 @@ from colorama import init as colorama_init from joblib import (Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects) from pandas import DataFrame, json_normalize, isna -from tabulate import tabulate +import tabulate from freqtrade.data.converter import trim_dataframe from freqtrade.data.history import get_timerange @@ -309,6 +309,8 @@ class Hyperopt: if not results: return + tabulate.PRESERVE_WHITESPACE = True + trials = json_normalize(results, max_level=1) trials['Best'] = '' trials = trials[['Best', 'current_epoch', 'results_metrics.trade_count', @@ -325,43 +327,51 @@ class Hyperopt: trials['Trades'] = trials['Trades'].astype(str) trials['Epoch'] = trials['Epoch'].apply( - lambda x: '{}/{}'.format(str(x).rjust(len(str(total_epochs)), ' '), total_epochs)) + lambda x: '{}/{}'.format(str(x).rjust(len(str(total_epochs)), ' '), total_epochs) + ) trials['Avg profit'] = trials['Avg profit'].apply( - lambda x: ('{:,.2f}%'.format(x)).rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ')) - trials['Profit'] = trials['Profit'].apply( - lambda x: ('{:,.2f}%'.format(x)) if not isna(x) else "--") - trials['Total profit'] = trials['Total profit'].apply( - lambda x: ('{:,.8f} '.format(x)) + config['stake_currency'] if not isna(x) else "--") + lambda x: ('{:,.2f}%'.format(x)).rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ') + ) trials['Avg duration'] = trials['Avg duration'].apply( - lambda x: ('{:,.1f}m'.format(x)).rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ')) + lambda x: ('{:,.1f} m'.format(x)).rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ') + ) trials['Objective'] = trials['Objective'].apply( - lambda x: str(x).rjust(10, ' ') if str(x) != str(100000) else "N/A".rjust(10, ' ')) - trials['Profit'] = trials['Total profit'] + " (" + trials['Profit'] + ")" + lambda x: str(x).rjust(10, ' ') if str(x) != str(100000) else "N/A".rjust(10, ' ') + ) + + trials['Profit'] = trials.apply( + lambda x: '{:,.8f} {} ({:,.2f}%)'.format( + x['Total profit'], config['stake_currency'], + x['Profit']).rjust(24+len(config['stake_currency'])) + if x['Total profit'] != 0.0 else '--'.rjust(24+len(config['stake_currency'])), + axis=1 + ) trials = trials.drop(columns=['Total profit']) if print_colorized: for i in range(len(trials)): if trials.loc[i]['is_profit']: for z in range(len(trials.loc[i])-3): - trials.iat[i, z] = "{}{}{}".format(Fore.GREEN, - str(trials.loc[i][z]), Fore.RESET) + trials.iat[i, z] = "{}{}{}".format( + Fore.GREEN, str(trials.loc[i][z]), Fore.RESET) if trials.loc[i]['is_best'] and highlight_best: for z in range(len(trials.loc[i])-3): - trials.iat[i, z] = "{}{}{}".format(Style.BRIGHT, - str(trials.loc[i][z]), Style.RESET_ALL) + trials.iat[i, z] = "{}{}{}".format( + Style.BRIGHT, str(trials.loc[i][z]), Style.RESET_ALL) trials = trials.drop(columns=['is_initial_point', 'is_best', 'is_profit']) if remove_header > 0: - table = tabulate(trials.to_dict(orient='list'), tablefmt='orgtbl', - headers='keys', stralign="right") + table = tabulate.tabulate( + trials.to_dict(orient='list'), tablefmt='orgtbl', headers='keys', stralign="right") + # print(table) table = table.split("\n", remove_header)[remove_header] elif remove_header < 0: - table = tabulate(trials.to_dict(orient='list'), tablefmt='psql', - headers='keys', stralign="right") + table = tabulate.tabulate( + trials.to_dict(orient='list'), tablefmt='psql', headers='keys', stralign="right") table = "\n".join(table.split("\n")[0:remove_header]) else: - table = tabulate(trials.to_dict(orient='list'), tablefmt='psql', - headers='keys', stralign="right") + table = tabulate.tabulate( + trials.to_dict(orient='list'), tablefmt='psql', headers='keys', stralign="right") print(table) def has_space(self, space: str) -> bool: diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 6c7e1e16f..5820cc9f9 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -410,7 +410,7 @@ def test_log_results_if_loss_improves(hyperopt, capsys) -> None: ) out, err = capsys.readouterr() assert all(x in out - for x in ["Best", "2/2", " 1", "0.10%", "0.00100000 BTC", "1.00%", "20.0m"]) + for x in ["Best", "2/2", " 1", "0.10%", "0.00100000 BTC (1.00%)", "20.0 m"]) def test_no_log_if_loss_does_not_improve(hyperopt, caplog) -> None: From 8de35e1c83becae0f226deb1f55fd7277510cf41 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 4 Mar 2020 06:40:19 +0100 Subject: [PATCH 1920/3421] Documentation suggestions from Review Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/configuration.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index c70f3425c..c2c144541 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -465,7 +465,7 @@ Orderbook `bid` (buy) side depth is then divided by the orderbook `ask` (sell) s #### Buy price side -The configuration option `bid_strategy.price_side` defines the side of the spread the bot looks for when buying. +The configuration setting `bid_strategy.price_side` defines the side of the spread the bot looks for when buying. The following displays an orderbook. @@ -503,7 +503,7 @@ The `bid_strategy.ask_last_balance` configuration parameter controls this. A val #### Sell price side -The configuration option `ask_strategy.price_side` defines the side of the spread the bot looks for when selling. +The configuration setting `ask_strategy.price_side` defines the side of the spread the bot looks for when selling. The following displays an orderbook: @@ -524,7 +524,7 @@ In line with that, if `ask_strategy.price_side` is set to `"bid"`, then the bot #### Sell price with Orderbook enabled -When selling with the orderbook enabled (`ask_strategy.use_order_book=True`), Freqtrade fetches the `ask_strategy.order_book_max` entries in the orderbook. Then each of the orderbook steps between `ask_strategy.order_book_min` and `ask_strategy.order_book_max` on the configured orderbook side are validated for a profitable sell-possibility based on the strategy configuration and the sell order is placed at the first profitable spot. +When selling with the orderbook enabled (`ask_strategy.use_order_book=True`), Freqtrade fetches the `ask_strategy.order_book_max` entries in the orderbook. Then each of the orderbook steps between `ask_strategy.order_book_min` and `ask_strategy.order_book_max` on the configured orderbook side are validated for a profitable sell-possibility based on the strategy configuration (`minimal_roi` conditions) and the sell order is placed at the first profitable spot. !!! Note Using `order_book_max` higher than `order_book_min` only makes sense when ask_strategy.price_side is set to `"ask"`. From 2f54aff0ce25d04edf25f9663c62c9138cabf622 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 4 Mar 2020 06:44:47 +0100 Subject: [PATCH 1921/3421] Improve documentation wording for price sides --- docs/configuration.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index c2c144541..7e33f1528 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -485,7 +485,8 @@ If `bid_strategy.price_side` is set to `"bid"`, then the bot will use 99 as buyi In line with that, if `bid_strategy.price_side` is set to `"ask"`, then the bot will use 101 as buying price. Using `ask` price often guarantees quicker filled orders, but the bot can also end up paying more than what would have been necessary. - +Taker fees instead of maker fees will most likely apply even when using limit buy orders. +Also, prices at the "ask" side of the spread are higher than prices at the "bid" side in the orderbook, so the order behaves similar to a market order (however with a maximum price). #### Buy price with Orderbook enabled From 090d1e8a709d9c0abcbd1cff667207f4e22d25dd Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Wed, 4 Mar 2020 20:51:09 +0100 Subject: [PATCH 1922/3421] Alignment and cleanups --- freqtrade/optimize/hyperopt.py | 38 +++++++++++++++++++-------------- tests/optimize/test_hyperopt.py | 4 +--- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 7937ad611..bc0a0d58f 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -154,7 +154,7 @@ class Hyperopt: """ num_trials = len(self.trials) if num_trials > self.num_trials_saved: - logger.info(f"Saving {num_trials} {plural(num_trials, 'epoch')}.") + logger.debug(f"Saving {num_trials} {plural(num_trials, 'epoch')}.") dump(self.trials, self.trials_file) self.num_trials_saved = num_trials if final: @@ -322,7 +322,6 @@ class Hyperopt: trials['is_profit'] = False trials.loc[trials['is_initial_point'], 'Best'] = '*' trials.loc[trials['is_best'], 'Best'] = 'Best' - trials['Objective'] = trials['Objective'].astype(str) trials.loc[trials['Total profit'] > 0, 'is_profit'] = True trials['Trades'] = trials['Trades'].astype(str) @@ -336,14 +335,15 @@ class Hyperopt: lambda x: ('{:,.1f} m'.format(x)).rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ') ) trials['Objective'] = trials['Objective'].apply( - lambda x: str(x).rjust(10, ' ') if str(x) != str(100000) else "N/A".rjust(10, ' ') + lambda x: '{:,.5f}'.format(x).rjust(8, ' ') if x != 100000 else "N/A".rjust(8, ' ') ) trials['Profit'] = trials.apply( - lambda x: '{:,.8f} {} ({:,.2f}%)'.format( + lambda x: '{:,.8f} {} {}'.format( x['Total profit'], config['stake_currency'], - x['Profit']).rjust(24+len(config['stake_currency'])) - if x['Total profit'] != 0.0 else '--'.rjust(24+len(config['stake_currency'])), + '({:,.2f}%)'.format(x['Profit']).rjust(10, ' ') + ).rjust(25+len(config['stake_currency'])) + if x['Total profit'] != 0.0 else '--'.rjust(25+len(config['stake_currency'])), axis=1 ) trials = trials.drop(columns=['Total profit']) @@ -351,27 +351,33 @@ class Hyperopt: if print_colorized: for i in range(len(trials)): if trials.loc[i]['is_profit']: - for z in range(len(trials.loc[i])-3): - trials.iat[i, z] = "{}{}{}".format( - Fore.GREEN, str(trials.loc[i][z]), Fore.RESET) + for j in range(len(trials.loc[i])-3): + trials.iat[i, j] = "{}{}{}".format(Fore.GREEN, + str(trials.loc[i][j]), Fore.RESET) if trials.loc[i]['is_best'] and highlight_best: - for z in range(len(trials.loc[i])-3): - trials.iat[i, z] = "{}{}{}".format( - Style.BRIGHT, str(trials.loc[i][z]), Style.RESET_ALL) + for j in range(len(trials.loc[i])-3): + trials.iat[i, j] = "{}{}{}".format(Style.BRIGHT, + str(trials.loc[i][j]), Style.RESET_ALL) trials = trials.drop(columns=['is_initial_point', 'is_best', 'is_profit']) if remove_header > 0: table = tabulate.tabulate( - trials.to_dict(orient='list'), tablefmt='orgtbl', headers='keys', stralign="right") - # print(table) + trials.to_dict(orient='list'), tablefmt='orgtbl', + headers='keys', stralign="right" + ) + table = table.split("\n", remove_header)[remove_header] elif remove_header < 0: table = tabulate.tabulate( - trials.to_dict(orient='list'), tablefmt='psql', headers='keys', stralign="right") + trials.to_dict(orient='list'), tablefmt='psql', + headers='keys', stralign="right" + ) table = "\n".join(table.split("\n")[0:remove_header]) else: table = tabulate.tabulate( - trials.to_dict(orient='list'), tablefmt='psql', headers='keys', stralign="right") + trials.to_dict(orient='list'), tablefmt='psql', + headers='keys', stralign="right" + ) print(table) def has_space(self, space: str) -> bool: diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 5820cc9f9..0e35ff827 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -410,7 +410,7 @@ def test_log_results_if_loss_improves(hyperopt, capsys) -> None: ) out, err = capsys.readouterr() assert all(x in out - for x in ["Best", "2/2", " 1", "0.10%", "0.00100000 BTC (1.00%)", "20.0 m"]) + for x in ["Best", "2/2", " 1", "0.10%", "0.00100000 BTC (1.00%)", "20.0 m"]) def test_no_log_if_loss_does_not_improve(hyperopt, caplog) -> None: @@ -432,13 +432,11 @@ def test_save_trials_saves_trials(mocker, hyperopt, testdatadir, caplog) -> None hyperopt.trials = trials hyperopt.save_trials(final=True) - assert log_has("Saving 1 epoch.", caplog) assert log_has(f"1 epoch saved to '{trials_file}'.", caplog) mock_dump.assert_called_once() hyperopt.trials = trials + trials hyperopt.save_trials(final=True) - assert log_has("Saving 2 epochs.", caplog) assert log_has(f"2 epochs saved to '{trials_file}'.", caplog) From 7606d814fa3158f7383ecca47e60ebb9c8be9595 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Thu, 5 Mar 2020 01:58:33 +0100 Subject: [PATCH 1923/3421] Initial work on csv-file export. Missing docs and tests --- freqtrade/commands/arguments.py | 3 +- freqtrade/commands/cli_options.py | 6 +++ freqtrade/commands/hyperopt_commands.py | 12 +++++ freqtrade/configuration/configuration.py | 3 ++ freqtrade/optimize/hyperopt.py | 58 ++++++++++++++++++++++++ 5 files changed, 81 insertions(+), 1 deletion(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 73e77d69d..8a8b06782 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -69,7 +69,8 @@ ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_list_min_avg_time", "hyperopt_list_max_avg_time", "hyperopt_list_min_avg_profit", "hyperopt_list_max_avg_profit", "hyperopt_list_min_total_profit", "hyperopt_list_max_total_profit", - "print_colorized", "print_json", "hyperopt_list_no_details"] + "print_colorized", "print_json", "hyperopt_list_no_details", + "export_csv"] ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_show_index", "print_json", "hyperopt_show_no_header"] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index ef674c5c2..77fba8eef 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -221,6 +221,12 @@ AVAILABLE_CLI_OPTIONS = { action='store_true', default=False, ), + "export_csv": Arg( + '--export-csv', + help='Export to CSV-File. Put + in front of filename to overwrite.' + 'Example: --export-csv +hyperopt.csv', + metavar='FILE', + ), "hyperopt_jobs": Arg( '-j', '--job-workers', help='The number of concurrently running jobs for hyperoptimization ' diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index 4803f6885..f4f119351 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -21,6 +21,7 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: print_colorized = config.get('print_colorized', False) print_json = config.get('print_json', False) + export_csv = config.get('export_csv', None) no_details = config.get('hyperopt_list_no_details', False) no_header = False @@ -59,6 +60,17 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: sorted_trials = sorted(trials, key=itemgetter('loss')) results = sorted_trials[0] Hyperopt.print_epoch_details(results, total_epochs, print_json, no_header) + print(export_csv) + if trials and export_csv: + overwrite_csv = False + if export_csv[0] == '+': + overwrite_csv = True + export_csv = export_csv[1:] + + Hyperopt.export_csv_file( + config, trials, total_epochs, + not filteroptions['only_best'], export_csv, overwrite_csv + ) def start_hyperopt_show(args: Dict[str, Any]) -> None: diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 6a0441957..0645d72be 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -282,6 +282,9 @@ class Configuration: self._args_to_config(config, argname='print_json', logstring='Parameter --print-json detected ...') + self._args_to_config(config, argname='export_csv', + logstring='Parameter --export-csv detected: {}') + self._args_to_config(config, argname='hyperopt_jobs', logstring='Parameter -j/--job-workers detected: {}') diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index e9ab469f4..d397c720c 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -23,6 +23,8 @@ from joblib import (Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects) from pandas import DataFrame, json_normalize, isna import tabulate +from os import path +import io from freqtrade.data.converter import trim_dataframe from freqtrade.data.history import get_timerange @@ -381,6 +383,62 @@ class Hyperopt: ) print(table) + @staticmethod + def export_csv_file(config: dict, results: list, total_epochs: int, highlight_best: bool, + csv_file: str, overwrite: bool) -> None: + """ + Log result to csv-file + """ + if not results: + return + + # Verification for owerwrite + if not overwrite and path.isfile(csv_file): + logging.error("CSV-File already exists and no overwrite specified!") + return + + try: + io.open(csv_file, 'w+').close() + except IOError: + logging.error("Filed to create/overwrite CSV-File!") + return + + trials = json_normalize(results, max_level=1) + trials['Best'] = '' + trials['Stake currency'] = config['stake_currency'] + trials = trials[['Best', 'current_epoch', 'results_metrics.trade_count', + 'results_metrics.avg_profit', 'results_metrics.total_profit', + 'Stake currency', 'results_metrics.profit', 'results_metrics.duration', + 'loss', 'is_initial_point', 'is_best']] + trials.columns = ['Best', 'Epoch', 'Trades', 'Avg profit', 'Total profit', 'Stake currency', + 'Profit', 'Avg duration', 'Objective', 'is_initial_point', 'is_best'] + trials['is_profit'] = False + trials.loc[trials['is_initial_point'], 'Best'] = '*' + trials.loc[trials['is_best'], 'Best'] = 'Best' + trials.loc[trials['Total profit'] > 0, 'is_profit'] = True + trials['Epoch'] = trials['Epoch'].astype(str) + trials['Trades'] = trials['Trades'].astype(str) + + trials['Total profit'] = trials['Total profit'].apply( + lambda x: '{:,.8f}'.format(x) if x != 0.0 else "--" + ) + trials['Profit'] = trials['Profit'].apply( + lambda x: '{:,.2f}'.format(x) if not isna(x) else "--" + ) + trials['Avg profit'] = trials['Avg profit'].apply( + lambda x: ('{:,.2f}%'.format(x)) if not isna(x) else "--" + ) + trials['Avg duration'] = trials['Avg duration'].apply( + lambda x: ('{:,.1f} m'.format(x)) if not isna(x) else "--" + ) + trials['Objective'] = trials['Objective'].apply( + lambda x: '{:,.5f}'.format(x) if x != 100000 else "N/A" + ) + + trials = trials.drop(columns=['is_initial_point', 'is_best', 'is_profit']) + trials.to_csv(csv_file, index=False, header=True, mode='w', encoding='UTF-8') + print("CSV-File created!") + def has_space(self, space: str) -> bool: """ Tell if the space value is contained in the configuration From 97b194a45485310199b76abadba46446f31ab42f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 5 Mar 2020 06:20:36 +0100 Subject: [PATCH 1924/3421] Throttle may take longer than .10s on slow machines This made this test fluky on windows CI ... --- tests/test_worker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_worker.py b/tests/test_worker.py index 7b446ac6a..839f7cdac 100644 --- a/tests/test_worker.py +++ b/tests/test_worker.py @@ -60,7 +60,7 @@ def test_throttle(mocker, default_conf, caplog) -> None: assert result == 42 assert end - start > 0.1 - assert log_has_re(r"Throttling with 'throttled_func\(\)': sleep for 0\.10 s.*", caplog) + assert log_has_re(r"Throttling with 'throttled_func\(\)': sleep for \d\.\d{2} s.*", caplog) result = worker._throttle(throttled_func, throttle_secs=-1) assert result == 42 From 7a3660cd6b0abca9dc42017f0c2303c602e05a67 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 5 Mar 2020 17:44:21 +0300 Subject: [PATCH 1925/3421] Adjust webhook tests --- tests/rpc/test_rpc_webhook.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/rpc/test_rpc_webhook.py b/tests/rpc/test_rpc_webhook.py index 3f3f36766..1ced62746 100644 --- a/tests/rpc/test_rpc_webhook.py +++ b/tests/rpc/test_rpc_webhook.py @@ -28,12 +28,12 @@ def get_webhook_dict() -> dict: "webhooksell": { "value1": "Selling {pair}", "value2": "limit {limit:8f}", - "value3": "profit: {profit_amount:8f} {stake_currency}" + "value3": "profit: {profit_amount:8f} {stake_currency} ({profit_ratio})" }, "webhooksellcancel": { "value1": "Cancelling Open Sell Order for {pair}", "value2": "limit {limit:8f}", - "value3": "profit: {profit_amount:8f} {stake_currency}" + "value3": "profit: {profit_amount:8f} {stake_currency} ({profit_ratio})" }, "webhookstatus": { "value1": "Status: {status}", @@ -110,7 +110,7 @@ def test_send_msg(default_conf, mocker): 'open_rate': 0.004, 'current_rate': 0.005, 'profit_amount': 0.001, - 'profit_percent': 0.20, + 'profit_ratio': 0.20, 'stake_currency': 'BTC', 'sell_reason': SellType.STOP_LOSS.value } @@ -136,7 +136,7 @@ def test_send_msg(default_conf, mocker): 'open_rate': 0.004, 'current_rate': 0.005, 'profit_amount': 0.001, - 'profit_percent': 0.20, + 'profit_ratio': 0.20, 'stake_currency': 'BTC', 'sell_reason': SellType.STOP_LOSS.value } From eee5727426fd0001ec8ddfdbf529dac435d503c4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 5 Mar 2020 17:44:38 +0300 Subject: [PATCH 1926/3421] Adjust webhook docs --- docs/webhook-config.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/webhook-config.md b/docs/webhook-config.md index e53aa8af5..70a41dd46 100644 --- a/docs/webhook-config.md +++ b/docs/webhook-config.md @@ -23,12 +23,12 @@ Sample configuration (tested using IFTTT). "webhooksell": { "value1": "Selling {pair}", "value2": "limit {limit:8f}", - "value3": "profit: {profit_amount:8f} {stake_currency}" + "value3": "profit: {profit_amount:8f} {stake_currency} ({profit_ratio})" }, "webhooksellcancel": { "value1": "Cancelling Open Sell Order for {pair}", "value2": "limit {limit:8f}", - "value3": "profit: {profit_amount:8f} {stake_currency}" + "value3": "profit: {profit_amount:8f} {stake_currency} ({profit_ratio})" }, "webhookstatus": { "value1": "Status: {status}", @@ -87,7 +87,7 @@ Possible parameters are: * `open_rate` * `current_rate` * `profit_amount` -* `profit_percent` +* `profit_ratio` * `stake_currency` * `fiat_currency` * `sell_reason` @@ -108,7 +108,7 @@ Possible parameters are: * `open_rate` * `current_rate` * `profit_amount` -* `profit_percent` +* `profit_ratio` * `stake_currency` * `fiat_currency` * `sell_reason` From 91db75a7073763d8c00c1057b5485d50e5103e46 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Thu, 5 Mar 2020 19:43:43 +0100 Subject: [PATCH 1927/3421] Added tests and updated doc --- docs/utils.md | 3 +++ freqtrade/commands/cli_options.py | 3 ++- freqtrade/commands/hyperopt_commands.py | 13 +++++++------ tests/commands/test_commands.py | 16 +++++++++++++++- 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index cdf0c31af..dd7a9dfe3 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -450,6 +450,9 @@ optional arguments: useful if you are redirecting output to a file. --print-json Print best result detailization in JSON format. --no-details Do not print best epoch details. + --export-csv FILE Export to CSV-File. Put + in front of filename to + overwrite. This will disable table print. Example: + --export-csv +hyperopt.csv Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 77fba8eef..b782c2fb9 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -224,7 +224,8 @@ AVAILABLE_CLI_OPTIONS = { "export_csv": Arg( '--export-csv', help='Export to CSV-File. Put + in front of filename to overwrite.' - 'Example: --export-csv +hyperopt.csv', + ' This will disable table print.' + ' Example: --export-csv +hyperopt.csv', metavar='FILE', ), "hyperopt_jobs": Arg( diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index f4f119351..efc9aba88 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -50,17 +50,18 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: if print_colorized: colorama_init(autoreset=True) - try: - Hyperopt.print_result_table(config, trials, total_epochs, - not filteroptions['only_best'], print_colorized, 0) - except KeyboardInterrupt: - print('User interrupted..') + if not export_csv: + try: + Hyperopt.print_result_table(config, trials, total_epochs, + not filteroptions['only_best'], print_colorized, 0) + except KeyboardInterrupt: + print('User interrupted..') if trials and not no_details: sorted_trials = sorted(trials, key=itemgetter('loss')) results = sorted_trials[0] Hyperopt.print_epoch_details(results, total_epochs, print_json, no_header) - print(export_csv) + if trials and export_csv: overwrite_csv = False if export_csv[0] == '+': diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 3e1c0a581..58e97fd49 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -902,7 +902,21 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): assert all(x not in captured.out for x in [" 1/12", " 3/12", " 4/12", " 5/12", " 7/12", " 8/12" " 9/12", " 10/12", " 11/12", " 12/12"]) - + args = [ + "hyperopt-list", + "--no-details", + "--export-csv", "+test_file.csv" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() + assert all(x in captured.out + for x in ["CSV-File created!"]) + f = Path("test_file.csv") + assert 'Best,1,2,-1.25%,-0.00125625,,-2.51,"3,930.0 m",0.43662' in f.read_text() + assert f.is_file() + f.unlink() def test_hyperopt_show(mocker, capsys, hyperopt_results): mocker.patch( From f0d56e23a340e77dac0c6cd64ea3de2eeaedc1c4 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Thu, 5 Mar 2020 19:58:01 +0100 Subject: [PATCH 1928/3421] PEP8 fix --- tests/commands/test_commands.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 58e97fd49..f404a4671 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -918,6 +918,7 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): assert f.is_file() f.unlink() + def test_hyperopt_show(mocker, capsys, hyperopt_results): mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.load_previous_results', From 4474482307cb280bd3119dc7a34b96cb3582339b Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Thu, 5 Mar 2020 20:44:29 +0100 Subject: [PATCH 1929/3421] unifying get_sell_rate with get_buy_rate --- freqtrade/freqtradebot.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4cbacdb1e..c800e4f7f 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -246,7 +246,7 @@ class FreqtradeBot: if 'use_order_book' in bid_strategy and bid_strategy.get('use_order_book', False): logger.info( f"Getting price from order book {bid_strategy['price_side'].capitalize()} side." - ) + ) order_book_top = bid_strategy.get('order_book_top', 1) order_book = self.exchange.get_order_book(pair, order_book_top) logger.debug('order_book %s', order_book) @@ -643,14 +643,16 @@ class FreqtradeBot: logger.info(f"Using cached sell rate for {pair}.") return rate - config_ask_strategy = self.config.get('ask_strategy', {}) - if config_ask_strategy.get('use_order_book', False): + ask_strategy = self.config.get('ask_strategy', {}) + if ask_strategy.get('use_order_book', False): # This code is only used for notifications, selling uses the generator directly - logger.debug('Using order book to get sell rate') - rate = next(self._order_book_gen(pair, f"{config_ask_strategy['price_side']}s")) + logger.info( + f"Getting price from order book {ask_strategy['price_side'].capitalize()} side." + ) + rate = next(self._order_book_gen(pair, f"{ask_strategy['price_side']}s")) else: - rate = self.exchange.fetch_ticker(pair)[config_ask_strategy['price_side']] + rate = self.exchange.fetch_ticker(pair)[ask_strategy['price_side']] self._sell_rate_cache[pair] = rate return rate From 0587256733a1f9df8deb4ac4c6f63a2ded10e274 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Thu, 5 Mar 2020 21:57:01 +0100 Subject: [PATCH 1930/3421] minor create_trade() optimization --- freqtrade/freqtradebot.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4cbacdb1e..e5ae9043a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -246,7 +246,7 @@ class FreqtradeBot: if 'use_order_book' in bid_strategy and bid_strategy.get('use_order_book', False): logger.info( f"Getting price from order book {bid_strategy['price_side'].capitalize()} side." - ) + ) order_book_top = bid_strategy.get('order_book_top', 1) order_book = self.exchange.get_order_book(pair, order_book_top) logger.debug('order_book %s', order_book) @@ -394,21 +394,21 @@ class FreqtradeBot: logger.info(f"Pair {pair} is currently locked.") return False + if not self.get_free_open_trades(): + logger.debug(f"Can't open a new trade for {pair}: max number of trades is reached.") + return False + + stake_amount = self.get_trade_stake_amount(pair) + if not stake_amount: + logger.debug(f"Stake amount is 0, ignoring possible trade for {pair}.") + return False + # running get_signal on historical data fetched (buy, sell) = self.strategy.get_signal( pair, self.strategy.ticker_interval, self.dataprovider.ohlcv(pair, self.strategy.ticker_interval)) if buy and not sell: - if not self.get_free_open_trades(): - logger.debug("Can't open a new trade: max number of trades is reached.") - return False - - stake_amount = self.get_trade_stake_amount(pair) - if not stake_amount: - logger.debug(f"Stake amount is 0, ignoring possible trade for {pair}.") - return False - logger.info(f"Buy signal found: about create a new trade with stake_amount: " f"{stake_amount} ...") From b8d05d87511c6f29971a1d422b7d57eef9cda5a5 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Thu, 5 Mar 2020 22:14:05 +0100 Subject: [PATCH 1931/3421] found instance of config get without default --- freqtrade/freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4cbacdb1e..4d4ad14fc 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -246,7 +246,7 @@ class FreqtradeBot: if 'use_order_book' in bid_strategy and bid_strategy.get('use_order_book', False): logger.info( f"Getting price from order book {bid_strategy['price_side'].capitalize()} side." - ) + ) order_book_top = bid_strategy.get('order_book_top', 1) order_book = self.exchange.get_order_book(pair, order_book_top) logger.debug('order_book %s', order_book) @@ -669,7 +669,7 @@ class FreqtradeBot: config_ask_strategy = self.config.get('ask_strategy', {}) if (config_ask_strategy.get('use_sell_signal', True) or - config_ask_strategy.get('ignore_roi_if_buy_signal')): + config_ask_strategy.get('ignore_roi_if_buy_signal', False)): (buy, sell) = self.strategy.get_signal( trade.pair, self.strategy.ticker_interval, self.dataprovider.ohlcv(trade.pair, self.strategy.ticker_interval)) From 78908e24965405a13755f62cf25659d26c55cd51 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 6 Mar 2020 15:47:16 +0100 Subject: [PATCH 1932/3421] Fix travis build failure --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index ec688a1f4..0cb76b78b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,3 @@ -sudo: true os: - linux dist: xenial @@ -11,10 +10,10 @@ env: global: - IMAGE_NAME=freqtradeorg/freqtrade install: -- cd build_helpers && ./install_ta-lib.sh ${HOME}/dependencies/; cd .. +- cd build_helpers && ./install_ta-lib.sh ${HOME}/dependencies; cd .. - export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH - export TA_LIBRARY_PATH=${HOME}/dependencies/lib -- export TA_INCLUDE_PATH=${HOME}/dependencies/lib/include +- export TA_INCLUDE_PATH=${HOME}/dependencies/include - pip install -r requirements-dev.txt - pip install -e . jobs: From 93fc14d72653caae85bc7ae5139418c0ac0b3b3a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Mar 2020 11:52:02 +0100 Subject: [PATCH 1933/3421] Exchange dependencies to coingekko --- requirements-common.txt | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements-common.txt b/requirements-common.txt index 10d567a96..a844e81bc 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -11,7 +11,7 @@ wrapt==1.12.0 jsonschema==3.2.0 TA-Lib==0.4.17 tabulate==0.8.6 -coinmarketcap==5.0.3 +pycoingecko==1.2.0 jinja2==2.11.1 # find first, C search in arrays diff --git a/setup.py b/setup.py index 63a595f32..7890f862e 100644 --- a/setup.py +++ b/setup.py @@ -73,7 +73,7 @@ setup(name='freqtrade', 'jsonschema', 'TA-Lib', 'tabulate', - 'coinmarketcap', + 'pycoingecko', 'py_find_1st', 'python-rapidjson', 'sdnotify', From df5adb6ca59358aa2df47039b66deb89f900dda0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Mar 2020 11:52:26 +0100 Subject: [PATCH 1934/3421] Exchange coingekko for coinmarketcap --- freqtrade/rpc/fiat_convert.py | 52 ++++++++++++++++---------------- tests/conftest.py | 24 +++++++-------- tests/rpc/test_fiat_convert.py | 54 +++++++++++++++++----------------- 3 files changed, 65 insertions(+), 65 deletions(-) diff --git a/freqtrade/rpc/fiat_convert.py b/freqtrade/rpc/fiat_convert.py index d40f9221e..99d06dde0 100644 --- a/freqtrade/rpc/fiat_convert.py +++ b/freqtrade/rpc/fiat_convert.py @@ -7,7 +7,7 @@ import logging import time from typing import Dict, List -from coinmarketcap import Market +from pycoingecko import CoinGeckoAPI from freqtrade.constants import SUPPORTED_FIAT @@ -38,8 +38,8 @@ class CryptoFiat: # Private attributes self._expiration = 0.0 - self.crypto_symbol = crypto_symbol.upper() - self.fiat_symbol = fiat_symbol.upper() + self.crypto_symbol = crypto_symbol.lower() + self.fiat_symbol = fiat_symbol.lower() self.set_price(price=price) def set_price(self, price: float) -> None: @@ -67,17 +67,20 @@ class CryptoToFiatConverter: This object is also a Singleton """ __instance = None - _coinmarketcap: Market = None + _coingekko: CoinGeckoAPI = None _cryptomap: Dict = {} def __new__(cls): + """ + This class is a singleton - should not be instanciated twice. + """ if CryptoToFiatConverter.__instance is None: CryptoToFiatConverter.__instance = object.__new__(cls) try: - CryptoToFiatConverter._coinmarketcap = Market() + CryptoToFiatConverter._coingekko = CoinGeckoAPI() except BaseException: - CryptoToFiatConverter._coinmarketcap = None + CryptoToFiatConverter._coingekko = None return CryptoToFiatConverter.__instance def __init__(self) -> None: @@ -86,14 +89,12 @@ class CryptoToFiatConverter: def _load_cryptomap(self) -> None: try: - coinlistings = self._coinmarketcap.listings() - self._cryptomap = dict(map(lambda coin: (coin["symbol"], str(coin["id"])), - coinlistings["data"])) - except (BaseException) as exception: + coinlistings = self._coingekko.get_coins_list() + # Create mapping table from synbol to coingekko_id + self._cryptomap = {x['symbol']: x['id'] for x in coinlistings} + except (Exception) as exception: logger.error( - "Could not load FIAT Cryptocurrency map for the following problem: %s", - type(exception).__name__ - ) + f"Could not load FIAT Cryptocurrency map for the following problem: {exception}") def convert_amount(self, crypto_amount: float, crypto_symbol: str, fiat_symbol: str) -> float: """ @@ -115,8 +116,8 @@ class CryptoToFiatConverter: :param fiat_symbol: FIAT currency you want to convert to (e.g USD) :return: Price in FIAT """ - crypto_symbol = crypto_symbol.upper() - fiat_symbol = fiat_symbol.upper() + crypto_symbol = crypto_symbol.lower() + fiat_symbol = fiat_symbol.lower() # Check if the fiat convertion you want is supported if not self._is_supported_fiat(fiat=fiat_symbol): @@ -170,15 +171,13 @@ class CryptoToFiatConverter: :return: bool, True supported, False not supported """ - fiat = fiat.upper() - - return fiat in SUPPORTED_FIAT + return fiat.upper() in SUPPORTED_FIAT def _find_price(self, crypto_symbol: str, fiat_symbol: str) -> float: """ - Call CoinMarketCap API to retrieve the price in the FIAT - :param crypto_symbol: Crypto-currency you want to convert (e.g BTC) - :param fiat_symbol: FIAT currency you want to convert to (e.g USD) + Call CoinGekko API to retrieve the price in the FIAT + :param crypto_symbol: Crypto-currency you want to convert (e.g btc) + :param fiat_symbol: FIAT currency you want to convert to (e.g usd) :return: float, price of the crypto-currency in Fiat """ # Check if the fiat convertion you want is supported @@ -195,12 +194,13 @@ class CryptoToFiatConverter: return 0.0 try: + _gekko_id = self._cryptomap[crypto_symbol] return float( - self._coinmarketcap.ticker( - currency=self._cryptomap[crypto_symbol], - convert=fiat_symbol - )['data']['quotes'][fiat_symbol.upper()]['price'] + self._coingekko.get_price( + ids=_gekko_id, + vs_currencies=fiat_symbol + )[_gekko_id][fiat_symbol] ) - except BaseException as exception: + except Exception as exception: logger.error("Error in _find_price: %s", exception) return 0.0 diff --git a/tests/conftest.py b/tests/conftest.py index 000f62868..e8e3fe9e3 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -167,23 +167,23 @@ def patch_get_signal(freqtrade: FreqtradeBot, value=(True, False)) -> None: @pytest.fixture(autouse=True) -def patch_coinmarketcap(mocker) -> None: +def patch_coingekko(mocker) -> None: """ - Mocker to coinmarketcap to speed up tests - :param mocker: mocker to patch coinmarketcap class + Mocker to coingekko to speed up tests + :param mocker: mocker to patch coingekko class :return: None """ - tickermock = MagicMock(return_value={'price_usd': 12345.0}) - listmock = MagicMock(return_value={'data': [{'id': 1, 'name': 'Bitcoin', 'symbol': 'BTC', - 'website_slug': 'bitcoin'}, - {'id': 1027, 'name': 'Ethereum', 'symbol': 'ETH', - 'website_slug': 'ethereum'} - ]}) + tickermock = MagicMock(return_value={'bitcoin': {'usd': 12345.0}, 'ethereum': {'usd': 12345.0}}) + listmock = MagicMock(return_value=[{'id': 'bitcoin', 'name': 'Bitcoin', 'symbol': 'btc', + 'website_slug': 'bitcoin'}, + {'id': 'ethereum', 'name': 'Ethereum', 'symbol': 'eth', + 'website_slug': 'ethereum'} + ]) mocker.patch.multiple( - 'freqtrade.rpc.fiat_convert.Market', - ticker=tickermock, - listings=listmock, + 'freqtrade.rpc.fiat_convert.CoinGeckoAPI', + get_price=tickermock, + get_coins_list=listmock, ) diff --git a/tests/rpc/test_fiat_convert.py b/tests/rpc/test_fiat_convert.py index 05760ce25..ed21bc516 100644 --- a/tests/rpc/test_fiat_convert.py +++ b/tests/rpc/test_fiat_convert.py @@ -8,7 +8,7 @@ import pytest from requests.exceptions import RequestException from freqtrade.rpc.fiat_convert import CryptoFiat, CryptoToFiatConverter -from tests.conftest import log_has +from tests.conftest import log_has, log_has_re def test_pair_convertion_object(): @@ -22,8 +22,8 @@ def test_pair_convertion_object(): assert pair_convertion.CACHE_DURATION == 6 * 60 * 60 # Check a regular usage - assert pair_convertion.crypto_symbol == 'BTC' - assert pair_convertion.fiat_symbol == 'USD' + assert pair_convertion.crypto_symbol == 'btc' + assert pair_convertion.fiat_symbol == 'usd' assert pair_convertion.price == 12345.0 assert pair_convertion.is_expired() is False @@ -57,15 +57,15 @@ def test_fiat_convert_add_pair(mocker): fiat_convert._add_pair(crypto_symbol='btc', fiat_symbol='usd', price=12345.0) pair_len = len(fiat_convert._pairs) assert pair_len == 1 - assert fiat_convert._pairs[0].crypto_symbol == 'BTC' - assert fiat_convert._pairs[0].fiat_symbol == 'USD' + assert fiat_convert._pairs[0].crypto_symbol == 'btc' + assert fiat_convert._pairs[0].fiat_symbol == 'usd' assert fiat_convert._pairs[0].price == 12345.0 fiat_convert._add_pair(crypto_symbol='btc', fiat_symbol='Eur', price=13000.2) pair_len = len(fiat_convert._pairs) assert pair_len == 2 - assert fiat_convert._pairs[1].crypto_symbol == 'BTC' - assert fiat_convert._pairs[1].fiat_symbol == 'EUR' + assert fiat_convert._pairs[1].crypto_symbol == 'btc' + assert fiat_convert._pairs[1].fiat_symbol == 'eur' assert fiat_convert._pairs[1].price == 13000.2 @@ -100,15 +100,15 @@ def test_fiat_convert_get_price(mocker): fiat_convert = CryptoToFiatConverter() - with pytest.raises(ValueError, match=r'The fiat US DOLLAR is not supported.'): - fiat_convert.get_price(crypto_symbol='BTC', fiat_symbol='US Dollar') + with pytest.raises(ValueError, match=r'The fiat us dollar is not supported.'): + fiat_convert.get_price(crypto_symbol='btc', fiat_symbol='US Dollar') # Check the value return by the method pair_len = len(fiat_convert._pairs) assert pair_len == 0 - assert fiat_convert.get_price(crypto_symbol='BTC', fiat_symbol='USD') == 28000.0 - assert fiat_convert._pairs[0].crypto_symbol == 'BTC' - assert fiat_convert._pairs[0].fiat_symbol == 'USD' + assert fiat_convert.get_price(crypto_symbol='btc', fiat_symbol='usd') == 28000.0 + assert fiat_convert._pairs[0].crypto_symbol == 'btc' + assert fiat_convert._pairs[0].fiat_symbol == 'usd' assert fiat_convert._pairs[0].price == 28000.0 assert fiat_convert._pairs[0]._expiration != 0 assert len(fiat_convert._pairs) == 1 @@ -116,13 +116,13 @@ def test_fiat_convert_get_price(mocker): # Verify the cached is used fiat_convert._pairs[0].price = 9867.543 expiration = fiat_convert._pairs[0]._expiration - assert fiat_convert.get_price(crypto_symbol='BTC', fiat_symbol='USD') == 9867.543 + assert fiat_convert.get_price(crypto_symbol='btc', fiat_symbol='usd') == 9867.543 assert fiat_convert._pairs[0]._expiration == expiration # Verify the cache expiration expiration = time.time() - 2 * 60 * 60 fiat_convert._pairs[0]._expiration = expiration - assert fiat_convert.get_price(crypto_symbol='BTC', fiat_symbol='USD') == 28000.0 + assert fiat_convert.get_price(crypto_symbol='btc', fiat_symbol='usd') == 28000.0 assert fiat_convert._pairs[0]._expiration is not expiration @@ -143,15 +143,15 @@ def test_loadcryptomap(mocker): fiat_convert = CryptoToFiatConverter() assert len(fiat_convert._cryptomap) == 2 - assert fiat_convert._cryptomap["BTC"] == "1" + assert fiat_convert._cryptomap["btc"] == "bitcoin" def test_fiat_init_network_exception(mocker): # Because CryptoToFiatConverter is a Singleton we reset the listings listmock = MagicMock(side_effect=RequestException) mocker.patch.multiple( - 'freqtrade.rpc.fiat_convert.Market', - listings=listmock, + 'freqtrade.rpc.fiat_convert.CoinGeckoAPI', + get_coins_list=listmock, ) # with pytest.raises(RequestEsxception): fiat_convert = CryptoToFiatConverter() @@ -163,24 +163,24 @@ def test_fiat_init_network_exception(mocker): def test_fiat_convert_without_network(mocker): - # Because CryptoToFiatConverter is a Singleton we reset the value of _coinmarketcap + # Because CryptoToFiatConverter is a Singleton we reset the value of _coingekko fiat_convert = CryptoToFiatConverter() - cmc_temp = CryptoToFiatConverter._coinmarketcap - CryptoToFiatConverter._coinmarketcap = None + cmc_temp = CryptoToFiatConverter._coingekko + CryptoToFiatConverter._coingekko = None - assert fiat_convert._coinmarketcap is None - assert fiat_convert._find_price(crypto_symbol='BTC', fiat_symbol='USD') == 0.0 - CryptoToFiatConverter._coinmarketcap = cmc_temp + assert fiat_convert._coingekko is None + assert fiat_convert._find_price(crypto_symbol='btc', fiat_symbol='usd') == 0.0 + CryptoToFiatConverter._coingekko = cmc_temp def test_fiat_invalid_response(mocker, caplog): # Because CryptoToFiatConverter is a Singleton we reset the listings listmock = MagicMock(return_value="{'novalidjson':DEADBEEFf}") mocker.patch.multiple( - 'freqtrade.rpc.fiat_convert.Market', - listings=listmock, + 'freqtrade.rpc.fiat_convert.CoinGeckoAPI', + get_coins_list=listmock, ) # with pytest.raises(RequestEsxception): fiat_convert = CryptoToFiatConverter() @@ -189,8 +189,8 @@ def test_fiat_invalid_response(mocker, caplog): length_cryptomap = len(fiat_convert._cryptomap) assert length_cryptomap == 0 - assert log_has('Could not load FIAT Cryptocurrency map for the following problem: TypeError', - caplog) + assert log_has_re('Could not load FIAT Cryptocurrency map for the following problem: .*', + caplog) def test_convert_amount(mocker): From acea49beaf364bc9890a4d08e0897fe45fd8ff0e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Mar 2020 13:01:26 +0100 Subject: [PATCH 1935/3421] Fix tests / test mocks --- tests/rpc/test_rpc.py | 22 +++++++++++----------- tests/rpc/test_rpc_telegram.py | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 6319ab9e6..47ffb771b 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -95,8 +95,8 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: mocker.patch.multiple( - 'freqtrade.rpc.fiat_convert.Market', - ticker=MagicMock(return_value={'price_usd': 15000.0}), + 'freqtrade.rpc.fiat_convert.CoinGeckoAPI', + get_price=MagicMock(return_value={'bitcoin': {'usd': 15000.0}}), ) mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) @@ -178,7 +178,7 @@ def test_rpc_daily_profit(default_conf, update, ticker, fee, day[1] == '0.00006217 BTC') assert (day[2] == '0.000 USD' or - day[2] == '0.933 USD') + day[2] == '0.767 USD') # ensure first day is current date assert str(days[0][0]) == str(datetime.utcnow().date()) @@ -190,8 +190,8 @@ def test_rpc_daily_profit(default_conf, update, ticker, fee, def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, limit_buy_order, limit_sell_order, mocker) -> None: mocker.patch.multiple( - 'freqtrade.rpc.fiat_convert.Market', - ticker=MagicMock(return_value={'price_usd': 15000.0}), + 'freqtrade.rpc.fiat_convert.CoinGeckoAPI', + get_price=MagicMock(return_value={'bitcoin': {'usd': 15000.0}}), ) mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) @@ -273,8 +273,8 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, def test_rpc_trade_statistics_closed(mocker, default_conf, ticker, fee, ticker_sell_up, limit_buy_order, limit_sell_order): mocker.patch.multiple( - 'freqtrade.rpc.fiat_convert.Market', - ticker=MagicMock(return_value={'price_usd': 15000.0}), + 'freqtrade.rpc.fiat_convert.CoinGeckoAPI', + get_price=MagicMock(return_value={'bitcoin': {'usd': 15000.0}}), ) mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter._find_price', return_value=15000.0) @@ -341,8 +341,8 @@ def test_rpc_balance_handle_error(default_conf, mocker): # ETH will be skipped due to mocked Error below mocker.patch.multiple( - 'freqtrade.rpc.fiat_convert.Market', - ticker=MagicMock(return_value={'price_usd': 15000.0}), + 'freqtrade.rpc.fiat_convert.CoinGeckoAPI', + get_price=MagicMock(return_value={'bitcoin': {'usd': 15000.0}}), ) mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) @@ -380,8 +380,8 @@ def test_rpc_balance_handle(default_conf, mocker, tickers): } mocker.patch.multiple( - 'freqtrade.rpc.fiat_convert.Market', - ticker=MagicMock(return_value={'price_usd': 15000.0}), + 'freqtrade.rpc.fiat_convert.CoinGeckoAPI', + get_price=MagicMock(return_value={'bitcoin': {'usd': 15000.0}}), ) mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index cea863ac8..d769016c4 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1210,7 +1210,7 @@ def test_send_msg_buy_notification(default_conf, mocker) -> None: '*Amount:* `1333.33333333`\n' \ '*Open Rate:* `0.00001099`\n' \ '*Current Rate:* `0.00001099`\n' \ - '*Total:* `(0.001000 BTC, 0.000 USD)`' + '*Total:* `(0.001000 BTC, 12.345 USD)`' def test_send_msg_buy_cancel_notification(default_conf, mocker) -> None: From 1b3038390a5298e3774047e5aac46e6d6d9711bb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Mar 2020 13:05:46 +0100 Subject: [PATCH 1936/3421] Update comment --- freqtrade/rpc/fiat_convert.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/fiat_convert.py b/freqtrade/rpc/fiat_convert.py index 99d06dde0..4e26432d4 100644 --- a/freqtrade/rpc/fiat_convert.py +++ b/freqtrade/rpc/fiat_convert.py @@ -73,7 +73,7 @@ class CryptoToFiatConverter: def __new__(cls): """ - This class is a singleton - should not be instanciated twice. + This class is a singleton - cannot be instantiated twice. """ if CryptoToFiatConverter.__instance is None: CryptoToFiatConverter.__instance = object.__new__(cls) From d51bb9acfb27d090272f9a2b67fbd61cc3d3f898 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Mar 2020 13:11:36 +0100 Subject: [PATCH 1937/3421] Update conda environment file --- environment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/environment.yml b/environment.yml index 4e8c1efcc..86ea03519 100644 --- a/environment.yml +++ b/environment.yml @@ -45,7 +45,7 @@ dependencies: - pip: # Required for app - cython - - coinmarketcap + - pycoingecko - ccxt - TA-Lib - py_find_1st From 281cf577d1b63601265361c739fc04b1f404fa37 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 7 Mar 2020 17:03:31 +0100 Subject: [PATCH 1938/3421] Remove unsupported FIAT --- freqtrade/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index ac1a8a6a9..54f620631 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -43,7 +43,7 @@ SUPPORTED_FIAT = [ "EUR", "GBP", "HKD", "HUF", "IDR", "ILS", "INR", "JPY", "KRW", "MXN", "MYR", "NOK", "NZD", "PHP", "PKR", "PLN", "RUB", "SEK", "SGD", "THB", "TRY", "TWD", "ZAR", "USD", - "BTC", "XBT", "ETH", "XRP", "LTC", "BCH", "USDT" + "BTC", "ETH", "XRP", "LTC", "BCH" ] MINIMAL_CONFIG = { From 3208faf7ede6be0898951b8d0bffd2966071f1b7 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 8 Mar 2020 13:35:31 +0300 Subject: [PATCH 1939/3421] Do not use ticker where it's not a ticker --- docs/backtesting.md | 12 +-- docs/configuration.md | 8 +- docs/data-download.md | 12 +-- docs/developer.md | 6 +- docs/edge.md | 2 +- docs/exchanges.md | 4 +- docs/hyperopt.md | 17 ++-- docs/strategy-customization.md | 17 ++-- docs/utils.md | 6 +- freqtrade/commands/arguments.py | 4 +- freqtrade/commands/build_config_commands.py | 2 +- freqtrade/commands/cli_options.py | 2 +- freqtrade/configuration/timerange.py | 2 +- freqtrade/data/btanalysis.py | 10 +- freqtrade/data/converter.py | 55 +++++------ freqtrade/data/dataprovider.py | 14 +-- freqtrade/data/history/history_utils.py | 22 ++--- freqtrade/data/history/idatahandler.py | 25 +++-- freqtrade/data/history/jsondatahandler.py | 4 +- freqtrade/edge/edge_positioning.py | 16 +-- freqtrade/exchange/exchange.py | 79 +++++++-------- freqtrade/freqtradebot.py | 8 +- freqtrade/misc.py | 12 +-- freqtrade/optimize/backtesting.py | 48 ++++----- freqtrade/optimize/hyperopt.py | 12 +-- freqtrade/plot/plotting.py | 24 ++--- freqtrade/strategy/interface.py | 30 +++--- freqtrade/templates/base_strategy.py.j2 | 2 +- freqtrade/templates/sample_strategy.py | 2 +- tests/conftest.py | 23 ++--- tests/data/test_btanalysis.py | 11 +-- tests/data/test_converter.py | 28 +++--- tests/data/test_dataprovider.py | 36 +++---- tests/data/test_history.py | 48 ++++----- tests/edge/test_edge.py | 26 ++--- tests/exchange/test_exchange.py | 102 ++++++++++---------- tests/optimize/__init__.py | 10 +- tests/optimize/test_backtesting.py | 44 ++++----- tests/optimize/test_hyperopt.py | 44 ++++----- tests/strategy/strats/default_strategy.py | 2 +- tests/strategy/test_interface.py | 52 +++++----- tests/test_misc.py | 8 +- tests/test_plotting.py | 20 ++-- 43 files changed, 459 insertions(+), 452 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 79bfa2350..3d08d5332 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -11,8 +11,8 @@ Now you have good Buy and Sell strategies and some historic data, you want to te real data. This is what we call [backtesting](https://en.wikipedia.org/wiki/Backtesting). -Backtesting will use the crypto-currencies (pairs) from your config file and load ticker data from `user_data/data/` by default. -If no data is available for the exchange / pair / ticker interval combination, backtesting will ask you to download them first using `freqtrade download-data`. +Backtesting will use the crypto-currencies (pairs) from your config file and load historical candle (OHCLV) data from `user_data/data/` by default. +If no data is available for the exchange / pair / timeframe (ticker interval) combination, backtesting will ask you to download them first using `freqtrade download-data`. For details on downloading, please refer to the [Data Downloading](data-download.md) section in the documentation. The result of backtesting will confirm if your bot has better odds of making a profit than a loss. @@ -22,19 +22,19 @@ The result of backtesting will confirm if your bot has better odds of making a p ### Run a backtesting against the currencies listed in your config file -#### With 5 min tickers (Per default) +#### With 5 min candle (OHLCV) data (per default) ```bash freqtrade backtesting ``` -#### With 1 min tickers +#### With 1 min candle (OHLCV) data ```bash freqtrade backtesting --ticker-interval 1m ``` -#### Using a different on-disk ticker-data source +#### Using a different on-disk historical candle (OHLCV) data source Assume you downloaded the history data from the Bittrex exchange and kept it in the `user_data/data/bittrex-20180101` directory. You can then use this data for backtesting as follows: @@ -223,7 +223,7 @@ You can then load the trades to perform further analysis as shown in our [data a To compare multiple strategies, a list of Strategies can be provided to backtesting. -This is limited to 1 ticker-interval per run, however, data is only loaded once from disk so if you have multiple +This is limited to 1 timeframe (ticker interval) value per run. However, data is only loaded once from disk so if you have multiple strategies you'd like to compare, this will give a nice runtime boost. All listed Strategies need to be in the same directory. diff --git a/docs/configuration.md b/docs/configuration.md index 5580b9c68..42018a499 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -47,7 +47,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `amend_last_stake_amount` | Use reduced last stake amount if necessary. [More information below](#configuring-amount-per-trade).
      *Defaults to `false`.*
      **Datatype:** Boolean | `last_stake_amount_min_ratio` | Defines minimum stake amount that has to be left and executed. Applies only to the last stake amount when it's amended to a reduced value (i.e. if `amend_last_stake_amount` is set to `true`). [More information below](#configuring-amount-per-trade).
      *Defaults to `0.5`.*
      **Datatype:** Float (as ratio) | `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
      *Defaults to `0.05` (5%).*
      **Datatype:** Positive Float as ratio. -| `ticker_interval` | The ticker interval to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** String +| `ticker_interval` | The timeframe (ticker interval) to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** String | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
      **Datatype:** String | `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
      *Defaults to `true`.*
      **Datatype:** Boolean | `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in the Dry Run mode.
      *Defaults to `1000`.*
      **Datatype:** Float @@ -113,8 +113,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `internals.sd_notify` | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details.
      **Datatype:** Boolean | `logfile` | Specifies logfile name. Uses a rolling strategy for log file rotation for 10 files with the 1MB limit per file.
      **Datatype:** String | `user_data_dir` | Directory containing user data.
      *Defaults to `./user_data/`*.
      **Datatype:** String -| `dataformat_ohlcv` | Data format to use to store OHLCV historic data.
      *Defaults to `json`*.
      **Datatype:** String -| `dataformat_trades` | Data format to use to store trades historic data.
      *Defaults to `jsongz`*.
      **Datatype:** String +| `dataformat_ohlcv` | Data format to use to store historical candle (OHLCV) data.
      *Defaults to `json`*.
      **Datatype:** String +| `dataformat_trades` | Data format to use to store historical trades data.
      *Defaults to `jsongz`*.
      **Datatype:** String ### Parameters in the strategy @@ -413,7 +413,7 @@ Advanced options can be configured using the `_ft_has_params` setting, which wil Available options are listed in the exchange-class as `_ft_has_default`. -For example, to test the order type `FOK` with Kraken, and modify candle_limit to 200 (so you only get 200 candles per call): +For example, to test the order type `FOK` with Kraken, and modify candle limit to 200 (so you only get 200 candles per API call): ```json "exchange": { diff --git a/docs/data-download.md b/docs/data-download.md index 76e22f4ea..903d62854 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -33,7 +33,7 @@ optional arguments: Specify which tickers to download. Space-separated list. Default: `1m 5m`. --erase Clean all existing data for the selected exchange/pairs/timeframes. --data-format-ohlcv {json,jsongz} - Storage format for downloaded ohlcv data. (default: `json`). + Storage format for downloaded candle (OHLCV) data. (default: `json`). --data-format-trades {json,jsongz} Storage format for downloaded trades data. (default: `jsongz`). @@ -105,7 +105,7 @@ Common arguments: ##### Example converting data -The following command will convert all ohlcv (candle) data available in `~/.freqtrade/data/binance` from json to jsongz, saving diskspace in the process. +The following command will convert all candle (OHLCV) data available in `~/.freqtrade/data/binance` from json to jsongz, saving diskspace in the process. It'll also remove original json data files (`--erase` parameter). ``` bash @@ -192,15 +192,15 @@ Then run: freqtrade download-data --exchange binance ``` -This will download ticker data for all the currency pairs you defined in `pairs.json`. +This will download historical candle (OHLCV) data for all the currency pairs you defined in `pairs.json`. ### Other Notes - To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`. -- To change the exchange used to download the tickers, please use a different configuration file (you'll probably need to adjust ratelimits etc.) +- To change the exchange used to download the historical data from, please use a different configuration file (you'll probably need to adjust ratelimits etc.) - To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`. -- To download ticker data for only 10 days, use `--days 10` (defaults to 30 days). -- Use `--timeframes` to specify which tickers to download. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute tickers. +- To download historical candle (OHLCV) data for only 10 days, use `--days 10` (defaults to 30 days). +- Use `--timeframes` to specify what timeframe download the historical candle (OHLCV) data for. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute data. - To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options. ### Trades (tick) data diff --git a/docs/developer.md b/docs/developer.md index ef9232a59..34b2f1ba5 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -165,7 +165,7 @@ Since CCXT does not provide unification for Stoploss On Exchange yet, we'll need ### Incomplete candles -While fetching OHLCV data, we're may end up getting incomplete candles (Depending on the exchange). +While fetching candle (OHLCV) data, we may end up getting incomplete candles (depending on the exchange). To demonstrate this, we'll use daily candles (`"1d"`) to keep things simple. We query the api (`ct.fetch_ohlcv()`) for the timeframe and look at the date of the last entry. If this entry changes or shows the date of a "incomplete" candle, then we should drop this since having incomplete candles is problematic because indicators assume that only complete candles are passed to them, and will generate a lot of false buy signals. By default, we're therefore removing the last candle assuming it's incomplete. @@ -174,14 +174,14 @@ To check how the new exchange behaves, you can use the following snippet: ``` python import ccxt from datetime import datetime -from freqtrade.data.converter import parse_ticker_dataframe +from freqtrade.data.converter import ohlcv_to_dataframe ct = ccxt.binance() timeframe = "1d" pair = "XLM/BTC" # Make sure to use a pair that exists on that exchange! raw = ct.fetch_ohlcv(pair, timeframe=timeframe) # convert to dataframe -df1 = parse_ticker_dataframe(raw, timeframe, pair=pair, drop_incomplete=False) +df1 = ohlcv_to_dataframe(raw, timeframe, pair=pair, drop_incomplete=False) print(df1.tail(1)) print(datetime.utcnow()) diff --git a/docs/edge.md b/docs/edge.md index 6a301b044..721f570c7 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -156,7 +156,7 @@ Edge module has following configuration options: | `minimum_winrate` | It filters out pairs which don't have at least minimum_winrate.
      This comes handy if you want to be conservative and don't comprise win rate in favour of risk reward ratio.
      *Defaults to `0.60`.*
      **Datatype:** Float | `minimum_expectancy` | It filters out pairs which have the expectancy lower than this number.
      Having an expectancy of 0.20 means if you put 10$ on a trade you expect a 12$ return.
      *Defaults to `0.20`.*
      **Datatype:** Float | `min_trade_number` | When calculating *W*, *R* and *E* (expectancy) against historical data, you always want to have a minimum number of trades. The more this number is the more Edge is reliable.
      Having a win rate of 100% on a single trade doesn't mean anything at all. But having a win rate of 70% over past 100 trades means clearly something.
      *Defaults to `10` (it is highly recommended not to decrease this number).*
      **Datatype:** Integer -| `max_trade_duration_minute` | Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign.
      **NOTICE:** While configuring this value, you should take into consideration your ticker interval. As an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. Default value is set assuming your strategy interval is relatively small (1m or 5m, etc.).
      *Defaults to `1440` (one day).*
      **Datatype:** Integer +| `max_trade_duration_minute` | Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign.
      **NOTICE:** While configuring this value, you should take into consideration your timeframe (ticker interval). As an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. Default value is set assuming your strategy interval is relatively small (1m or 5m, etc.).
      *Defaults to `1440` (one day).*
      **Datatype:** Integer | `remove_pumps` | Edge will remove sudden pumps in a given market while going through historical data. However, given that pumps happen very often in crypto markets, we recommend you keep this off.
      *Defaults to `false`.*
      **Datatype:** Boolean ## Running Edge independently diff --git a/docs/exchanges.md b/docs/exchanges.md index 70dae0aa5..66a0e96da 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -76,8 +76,8 @@ $ pip3 install web3 ### Send incomplete candles to the strategy -Most exchanges return incomplete candles via their ohlcv / klines interface. -By default, Freqtrade assumes that incomplete candles are returned and removes the last candle assuming it's an incomplete candle. +Most exchanges return current incomplete candle via their OHLCV/klines API interface. +By default, Freqtrade assumes that incomplete candle is fetched from the exchange and removes the last candle assuming it's the incomplete candle. Whether your exchange returns incomplete candles or not can be checked using [the helper script](developer.md#Incomplete-candles) from the Contributor documentation. diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 9bc5888ce..abd7aa7ce 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -103,9 +103,10 @@ Place the corresponding settings into the following methods The configuration and rules are the same than for buy signals. To avoid naming collisions in the search-space, please prefix all sell-spaces with `sell-`. -#### Using ticker-interval as part of the Strategy +#### Using timeframe as a part of the Strategy -The Strategy exposes the ticker-interval as `self.ticker_interval`. The same value is available as class-attribute `HyperoptName.ticker_interval`. +The Strategy class exposes the timeframe (ticker interval) value as the `self.ticker_interval` attribute. +The same value is available as class-attribute `HyperoptName.ticker_interval`. In the case of the linked sample-value this would be `SampleHyperOpt.ticker_interval`. ## Solving a Mystery @@ -222,11 +223,11 @@ The `--spaces all` option determines that all possible parameters should be opti !!! Warning When switching parameters or changing configuration options, make sure to not use the argument `--continue` so temporary results can be removed. -### Execute Hyperopt with Different Ticker-Data Source +### Execute Hyperopt with different historical data source -If you would like to hyperopt parameters using an alternate ticker data that -you have on-disk, use the `--datadir PATH` option. Default hyperopt will -use data from directory `user_data/data`. +If you would like to hyperopt parameters using an alternate historical data set that +you have on-disk, use the `--datadir PATH` option. By default, hyperopt +uses data from directory `user_data/data`. ### Running Hyperopt with Smaller Testset @@ -380,7 +381,7 @@ As stated in the comment, you can also use it as the value of the `minimal_roi` #### Default ROI Search Space -If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the ticker_interval used. By default the values vary in the following ranges (for some of the most used ticker intervals, values are rounded to 5 digits after the decimal point): +If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the ticker_interval used. By default the values vary in the following ranges (for some of the most used timeframes, values are rounded to 5 digits after the decimal point): | # step | 1m | | 5m | | 1h | | 1d | | | ------ | ------ | ----------------- | -------- | ----------- | ---------- | ----------------- | ------------ | ----------------- | @@ -389,7 +390,7 @@ If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace f | 3 | 4...20 | 0.00387...0.01547 | 20...100 | 0.01...0.04 | 240...1200 | 0.02294...0.09177 | 5760...28800 | 0.04059...0.16237 | | 4 | 6...44 | 0.0 | 30...220 | 0.0 | 360...2640 | 0.0 | 8640...63360 | 0.0 | -These ranges should be sufficient in most cases. The minutes in the steps (ROI dict keys) are scaled linearly depending on the ticker interval used. The ROI values in the steps (ROI dict values) are scaled logarithmically depending on the ticker interval used. +These ranges should be sufficient in most cases. The minutes in the steps (ROI dict keys) are scaled linearly depending on the timeframe (ticker interval) used. The ROI values in the steps (ROI dict values) are scaled logarithmically depending on the timeframe used. If you have the `generate_roi_table()` and `roi_space()` methods in your custom hyperopt file, remove them in order to utilize these adaptive ROI tables and the ROI hyperoptimization space generated by Freqtrade by default. diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 4aacd3af6..7793ea148 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -84,7 +84,7 @@ def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame Performance Note: For the best performance be frugal on the number of indicators you are using. Let uncomment only the indicator you are using in your strategies or your hyperopt configuration, otherwise you will waste your memory and CPU usage. - :param dataframe: Raw data from the exchange and parsed by parse_ticker_dataframe() + :param dataframe: Dataframe with data from the exchange :param metadata: Additional information, like the currently traded pair :return: a Dataframe with all mandatory indicators for the strategies """ @@ -284,13 +284,14 @@ If your exchange supports it, it's recommended to also set `"stoploss_on_exchang For more information on order_types please look [here](configuration.md#understand-order_types). -### Ticker interval +### Timeframe (ticker interval) This is the set of candles the bot should download and use for the analysis. Common values are `"1m"`, `"5m"`, `"15m"`, `"1h"`, however all values supported by your exchange should work. -Please note that the same buy/sell signals may work with one interval, but not the other. -This setting is accessible within the strategy by using `self.ticker_interval`. +Please note that the same buy/sell signals may work well with one timeframe, but not with the others. + +This setting is accessible within the strategy methods as the `self.ticker_interval` attribute. ### Metadata dict @@ -335,14 +336,14 @@ Please always check the mode of operation to select the correct method to get da #### Possible options for DataProvider - `available_pairs` - Property with tuples listing cached pairs with their intervals (pair, interval). -- `ohlcv(pair, timeframe)` - Currently cached ticker data for the pair, returns DataFrame or empty DataFrame. +- `ohlcv(pair, timeframe)` - Currently cached candle (OHLCV) data for the pair, returns DataFrame or empty DataFrame. - `historic_ohlcv(pair, timeframe)` - Returns historical data stored on disk. - `get_pair_dataframe(pair, timeframe)` - This is a universal method, which returns either historical data (for backtesting) or cached live data (for the Dry-Run and Live-Run modes). - `orderbook(pair, maximum)` - Returns latest orderbook data for the pair, a dict with bids/asks with a total of `maximum` entries. - `market(pair)` - Returns market data for the pair: fees, limits, precisions, activity flag, etc. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#markets) for more details on Market data structure. - `runmode` - Property containing the current runmode. -#### Example: fetch live ohlcv / historic data for the first informative pair +#### Example: fetch live / historical candle (OHLCV) data for the first informative pair ``` python if self.dp: @@ -377,8 +378,8 @@ if self.dp: ``` python if self.dp: - for pair, ticker in self.dp.available_pairs: - print(f"available {pair}, {ticker}") + for pair, timeframe in self.dp.available_pairs: + print(f"available {pair}, {timeframe}") ``` #### Get data for non-tradeable pairs diff --git a/docs/utils.md b/docs/utils.md index cdf0c31af..ec9ceeac9 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -61,8 +61,8 @@ $ freqtrade new-config --config config_binance.json ? Do you want to enable Dry-run (simulated trades)? Yes ? Please insert your stake currency: BTC ? Please insert your stake amount: 0.05 -? Please insert max_open_trades (Integer or 'unlimited'): 5 -? Please insert your ticker interval: 15m +? Please insert max_open_trades (Integer or 'unlimited'): 3 +? Please insert your timeframe (ticker interval): 5m ? Please insert your display Currency (for reporting): USD ? Select exchange binance ? Do you want to enable Telegram? No @@ -258,7 +258,7 @@ All exchanges supported by the ccxt library: _1btcxe, acx, adara, allcoin, anxpr ## List Timeframes -Use the `list-timeframes` subcommand to see the list of ticker intervals (timeframes) available for the exchange. +Use the `list-timeframes` subcommand to see the list of timeframes (ticker intervals) available for the exchange. ``` usage: freqtrade list-timeframes [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--exchange EXCHANGE] [-1] diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 73e77d69d..06acea69e 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -296,7 +296,7 @@ class Arguments: # Add convert-data subcommand convert_data_cmd = subparsers.add_parser( 'convert-data', - help='Convert OHLCV data from one format to another.', + help='Convert candle (OHLCV) data from one format to another.', parents=[_common_parser], ) convert_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=True)) @@ -305,7 +305,7 @@ class Arguments: # Add convert-trade-data subcommand convert_trade_data_cmd = subparsers.add_parser( 'convert-trade-data', - help='Convert trade-data from one format to another.', + help='Convert trade data from one format to another.', parents=[_common_parser], ) convert_trade_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=False)) diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py index 1598fa2ae..58ac6ec27 100644 --- a/freqtrade/commands/build_config_commands.py +++ b/freqtrade/commands/build_config_commands.py @@ -76,7 +76,7 @@ def ask_user_config() -> Dict[str, Any]: { "type": "text", "name": "ticker_interval", - "message": "Please insert your ticker interval:", + "message": "Please insert your timeframe (ticker interval):", "default": "5m", }, { diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index ef674c5c2..e92acef30 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -348,7 +348,7 @@ AVAILABLE_CLI_OPTIONS = { ), "dataformat_ohlcv": Arg( '--data-format-ohlcv', - help='Storage format for downloaded ohlcv data. (default: `%(default)s`).', + help='Storage format for downloaded candle (OHLCV) data. (default: `%(default)s`).', choices=constants.AVAILABLE_DATAHANDLERS, default='json' ), diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py index 3db5f6217..151003999 100644 --- a/freqtrade/configuration/timerange.py +++ b/freqtrade/configuration/timerange.py @@ -45,7 +45,7 @@ class TimeRange: """ Adjust startts by candles. Applies only if no startup-candles have been available. - :param timeframe_secs: Ticker timeframe in seconds e.g. `timeframe_to_seconds('5m')` + :param timeframe_secs: Timeframe in seconds e.g. `timeframe_to_seconds('5m')` :param startup_candles: Number of candles to move start-date forward :param min_date: Minimum data date loaded. Key kriterium to decide if start-time has to be moved diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 7972c6333..681bf6734 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -151,17 +151,17 @@ def extract_trades_of_period(dataframe: pd.DataFrame, trades: pd.DataFrame) -> p return trades -def combine_tickers_with_mean(tickers: Dict[str, pd.DataFrame], - column: str = "close") -> pd.DataFrame: +def combine_dataframes_with_mean(data: Dict[str, pd.DataFrame], + column: str = "close") -> pd.DataFrame: """ Combine multiple dataframes "column" - :param tickers: Dict of Dataframes, dict key should be pair. + :param data: Dict of Dataframes, dict key should be pair. :param column: Column in the original dataframes to use :return: DataFrame with the column renamed to the dict key, and a column named mean, containing the mean of all pairs. """ - df_comb = pd.concat([tickers[pair].set_index('date').rename( - {column: pair}, axis=1)[pair] for pair in tickers], axis=1) + df_comb = pd.concat([data[pair].set_index('date').rename( + {column: pair}, axis=1)[pair] for pair in data], axis=1) df_comb['mean'] = df_comb.mean(axis=1) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 49a2a25bc..77371bf27 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -13,12 +13,12 @@ from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS logger = logging.getLogger(__name__) -def parse_ticker_dataframe(ticker: list, timeframe: str, pair: str, *, - fill_missing: bool = True, - drop_incomplete: bool = True) -> DataFrame: +def ohlcv_to_dataframe(ohlcv: list, timeframe: str, pair: str, *, + fill_missing: bool = True, drop_incomplete: bool = True) -> DataFrame: """ - Converts a ticker-list (format ccxt.fetch_ohlcv) to a Dataframe - :param ticker: ticker list, as returned by exchange.async_get_candle_history + Converts a list with candle (OHLCV) data (in format returned by ccxt.fetch_ohlcv) + to a Dataframe + :param ohlcv: list with candle (OHLCV) data, as returned by exchange.async_get_candle_history :param timeframe: timeframe (e.g. 5m). Used to fill up eventual missing data :param pair: Pair this data is for (used to warn if fillup was necessary) :param fill_missing: fill up missing candles with 0 candles @@ -26,21 +26,18 @@ def parse_ticker_dataframe(ticker: list, timeframe: str, pair: str, *, :param drop_incomplete: Drop the last candle of the dataframe, assuming it's incomplete :return: DataFrame """ - logger.debug("Parsing tickerlist to dataframe") + logger.debug(f"Converting candle (OHLCV) data to dataframe for pair {pair}.") cols = DEFAULT_DATAFRAME_COLUMNS - frame = DataFrame(ticker, columns=cols) + df = DataFrame(ohlcv, columns=cols) - frame['date'] = to_datetime(frame['date'], - unit='ms', - utc=True, - infer_datetime_format=True) + df['date'] = to_datetime(df['date'], unit='ms', utc=True, infer_datetime_format=True) - # Some exchanges return int values for volume and even for ohlc. + # Some exchanges return int values for Volume and even for OHLC. # Convert them since TA-LIB indicators used in the strategy assume floats # and fail with exception... - frame = frame.astype(dtype={'open': 'float', 'high': 'float', 'low': 'float', 'close': 'float', - 'volume': 'float'}) - return clean_ohlcv_dataframe(frame, timeframe, pair, + df = df.astype(dtype={'open': 'float', 'high': 'float', 'low': 'float', 'close': 'float', + 'volume': 'float'}) + return clean_ohlcv_dataframe(df, timeframe, pair, fill_missing=fill_missing, drop_incomplete=drop_incomplete) @@ -49,11 +46,11 @@ def clean_ohlcv_dataframe(data: DataFrame, timeframe: str, pair: str, *, fill_missing: bool = True, drop_incomplete: bool = True) -> DataFrame: """ - Clense a ohlcv dataframe by + Clense a OHLCV dataframe by * Grouping it by date (removes duplicate tics) * dropping last candles if requested * Filling up missing data (if requested) - :param data: DataFrame containing ohlcv data. + :param data: DataFrame containing candle (OHLCV) data. :param timeframe: timeframe (e.g. 5m). Used to fill up eventual missing data :param pair: Pair this data is for (used to warn if fillup was necessary) :param fill_missing: fill up missing candles with 0 candles @@ -88,16 +85,16 @@ def ohlcv_fill_up_missing_data(dataframe: DataFrame, timeframe: str, pair: str) """ from freqtrade.exchange import timeframe_to_minutes - ohlc_dict = { + ohlcv_dict = { 'open': 'first', 'high': 'max', 'low': 'min', 'close': 'last', 'volume': 'sum' } - ticker_minutes = timeframe_to_minutes(timeframe) + timeframe_minutes = timeframe_to_minutes(timeframe) # Resample to create "NAN" values - df = dataframe.resample(f'{ticker_minutes}min', on='date').agg(ohlc_dict) + df = dataframe.resample(f'{timeframe_minutes}min', on='date').agg(ohlcv_dict) # Forwardfill close for missing columns df['close'] = df['close'].fillna(method='ffill') @@ -159,20 +156,20 @@ def order_book_to_dataframe(bids: list, asks: list) -> DataFrame: def trades_to_ohlcv(trades: list, timeframe: str) -> DataFrame: """ - Converts trades list to ohlcv list + Converts trades list to OHLCV list TODO: This should get a dedicated test :param trades: List of trades, as returned by ccxt.fetch_trades. - :param timeframe: Ticker timeframe to resample data to - :return: ohlcv Dataframe. + :param timeframe: Timeframe to resample data to + :return: OHLCV Dataframe. """ from freqtrade.exchange import timeframe_to_minutes - ticker_minutes = timeframe_to_minutes(timeframe) + timeframe_minutes = timeframe_to_minutes(timeframe) df = pd.DataFrame(trades) df['datetime'] = pd.to_datetime(df['datetime']) df = df.set_index('datetime') - df_new = df['price'].resample(f'{ticker_minutes}min').ohlc() - df_new['volume'] = df['amount'].resample(f'{ticker_minutes}min').sum() + df_new = df['price'].resample(f'{timeframe_minutes}min').ohlc() + df_new['volume'] = df['amount'].resample(f'{timeframe_minutes}min').sum() df_new['date'] = df_new.index # Drop 0 volume rows df_new = df_new.dropna() @@ -206,7 +203,7 @@ def convert_trades_format(config: Dict[str, Any], convert_from: str, convert_to: def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: str, erase: bool): """ - Convert ohlcv from one format to another format. + Convert OHLCV from one format to another :param config: Config dictionary :param convert_from: Source format :param convert_to: Target format @@ -216,7 +213,7 @@ def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: src = get_datahandler(config['datadir'], convert_from) trg = get_datahandler(config['datadir'], convert_to) timeframes = config.get('timeframes', [config.get('ticker_interval')]) - logger.info(f"Converting OHLCV for timeframe {timeframes}") + logger.info(f"Converting candle (OHLCV) for timeframe {timeframes}") if 'pairs' not in config: config['pairs'] = [] @@ -224,7 +221,7 @@ def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: for timeframe in timeframes: config['pairs'].extend(src.ohlcv_get_pairs(config['datadir'], timeframe)) - logger.info(f"Converting OHLCV for {config['pairs']}") + logger.info(f"Converting candle (OHLCV) data for {config['pairs']}") for timeframe in timeframes: for pair in config['pairs']: diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 2964d1cb7..1df710152 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -1,7 +1,7 @@ """ Dataprovider Responsible to provide data to the bot -including Klines, tickers, historic data +including ticker and orderbook data, live and historical candle (OHLCV) data Common Interface for bot and strategy to access data. """ import logging @@ -43,10 +43,10 @@ class DataProvider: def ohlcv(self, pair: str, timeframe: str = None, copy: bool = True) -> DataFrame: """ - Get ohlcv data for the given pair as DataFrame + Get candle (OHLCV) data for the given pair as DataFrame Please use the `available_pairs` method to verify which pairs are currently cached. :param pair: pair to get the data for - :param timeframe: Ticker timeframe to get data for + :param timeframe: Timeframe to get data for :param copy: copy dataframe before returning if True. Use False only for read-only operations (where the dataframe is not modified) """ @@ -58,7 +58,7 @@ class DataProvider: def historic_ohlcv(self, pair: str, timeframe: str = None) -> DataFrame: """ - Get stored historic ohlcv data + Get stored historical candle (OHLCV) data :param pair: pair to get the data for :param timeframe: timeframe to get data for """ @@ -69,17 +69,17 @@ class DataProvider: def get_pair_dataframe(self, pair: str, timeframe: str = None) -> DataFrame: """ - Return pair ohlcv data, either live or cached historical -- depending + Return pair candle (OHLCV) data, either live or cached historical -- depending on the runmode. :param pair: pair to get the data for :param timeframe: timeframe to get data for :return: Dataframe for this pair """ if self.runmode in (RunMode.DRY_RUN, RunMode.LIVE): - # Get live ohlcv data. + # Get live OHLCV data. data = self.ohlcv(pair=pair, timeframe=timeframe) else: - # Get historic ohlcv data (cached on disk). + # Get historical OHLCV data (cached on disk). data = self.historic_ohlcv(pair=pair, timeframe=timeframe) if len(data) == 0: logger.warning(f"No data found for ({pair}, {timeframe}).") diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index 5f9a7da20..89d29d33b 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -9,7 +9,7 @@ from pandas import DataFrame from freqtrade.configuration import TimeRange from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS -from freqtrade.data.converter import parse_ticker_dataframe, trades_to_ohlcv +from freqtrade.data.converter import ohlcv_to_dataframe, trades_to_ohlcv from freqtrade.data.history.idatahandler import IDataHandler, get_datahandler from freqtrade.exceptions import OperationalException from freqtrade.exchange import Exchange @@ -28,10 +28,10 @@ def load_pair_history(pair: str, data_handler: IDataHandler = None, ) -> DataFrame: """ - Load cached ticker history for the given pair. + Load cached ohlcv history for the given pair. :param pair: Pair to load data for - :param timeframe: Ticker timeframe (e.g. "5m") + :param timeframe: Timeframe (e.g. "5m") :param datadir: Path to the data storage location. :param data_format: Format of the data. Ignored if data_handler is set. :param timerange: Limit data to be loaded to this timerange @@ -63,10 +63,10 @@ def load_data(datadir: Path, data_format: str = 'json', ) -> Dict[str, DataFrame]: """ - Load ticker history data for a list of pairs. + Load ohlcv history data for a list of pairs. :param datadir: Path to the data storage location. - :param timeframe: Ticker Timeframe (e.g. "5m") + :param timeframe: Timeframe (e.g. "5m") :param pairs: List of pairs to load :param timerange: Limit data to be loaded to this timerange :param fill_up_missing: Fill missing values with "No action"-candles @@ -104,10 +104,10 @@ def refresh_data(datadir: Path, timerange: Optional[TimeRange] = None, ) -> None: """ - Refresh ticker history data for a list of pairs. + Refresh ohlcv history data for a list of pairs. :param datadir: Path to the data storage location. - :param timeframe: Ticker Timeframe (e.g. "5m") + :param timeframe: Timeframe (e.g. "5m") :param pairs: List of pairs to load :param exchange: Exchange object :param timerange: Limit data to be loaded to this timerange @@ -165,7 +165,7 @@ def _download_pair_history(datadir: Path, Based on @Rybolov work: https://github.com/rybolov/freqtrade-data :param pair: pair to download - :param timeframe: Ticker Timeframe (e.g 5m) + :param timeframe: Timeframe (e.g "5m") :param timerange: range of time to download :return: bool with success state """ @@ -194,8 +194,8 @@ def _download_pair_history(datadir: Path, days=-30).float_timestamp) * 1000 ) # TODO: Maybe move parsing to exchange class (?) - new_dataframe = parse_ticker_dataframe(new_data, timeframe, pair, - fill_missing=False, drop_incomplete=True) + new_dataframe = ohlcv_to_dataframe(new_data, timeframe, pair, + fill_missing=False, drop_incomplete=True) if data.empty: data = new_dataframe else: @@ -362,7 +362,7 @@ def validate_backtest_data(data: DataFrame, pair: str, min_date: datetime, :param pair: pair used for log output. :param min_date: start-date of the data :param max_date: end-date of the data - :param timeframe_min: ticker Timeframe in minutes + :param timeframe_min: Timeframe in minutes """ # total difference in minutes / timeframe-minutes expected_frames = int((max_date - min_date).total_seconds() // 60 // timeframe_min) diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index df03e7713..b08292604 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -55,7 +55,7 @@ class IDataHandler(ABC): Implements the loading and conversion to a Pandas dataframe. Timerange trimming and dataframe validation happens outside of this method. :param pair: Pair to load data - :param timeframe: Ticker timeframe (e.g. "5m") + :param timeframe: Timeframe (e.g. "5m") :param timerange: Limit data to be loaded to this timerange. Optionally implemented by subclasses to avoid loading all data where possible. @@ -67,7 +67,7 @@ class IDataHandler(ABC): """ Remove data for this pair :param pair: Delete data for this pair. - :param timeframe: Ticker timeframe (e.g. "5m") + :param timeframe: Timeframe (e.g. "5m") :return: True when deleted, false if file did not exist. """ @@ -129,10 +129,10 @@ class IDataHandler(ABC): warn_no_data: bool = True ) -> DataFrame: """ - Load cached ticker history for the given pair. + Load cached candle (OHLCV) data for the given pair. :param pair: Pair to load data for - :param timeframe: Ticker timeframe (e.g. "5m") + :param timeframe: Timeframe (e.g. "5m") :param timerange: Limit data to be loaded to this timerange :param fill_missing: Fill missing values with "No action"-candles :param drop_incomplete: Drop last candle assuming it may be incomplete. @@ -145,28 +145,27 @@ class IDataHandler(ABC): if startup_candles > 0 and timerange_startup: timerange_startup.subtract_start(timeframe_to_seconds(timeframe) * startup_candles) - pairdf = self._ohlcv_load(pair, timeframe, - timerange=timerange_startup) - if pairdf.empty: + df = self._ohlcv_load(pair, timeframe, timerange=timerange_startup) + if df.empty: if warn_no_data: logger.warning( f'No history data for pair: "{pair}", timeframe: {timeframe}. ' 'Use `freqtrade download-data` to download the data' ) - return pairdf + return df else: - enddate = pairdf.iloc[-1]['date'] + enddate = df.iloc[-1]['date'] if timerange_startup: - self._validate_pairdata(pair, pairdf, timerange_startup) - pairdf = trim_dataframe(pairdf, timerange_startup) + self._validate_pairdata(pair, df, timerange_startup) + df = trim_dataframe(df, timerange_startup) # incomplete candles should only be dropped if we didn't trim the end beforehand. - return clean_ohlcv_dataframe(pairdf, timeframe, + return clean_ohlcv_dataframe(df, timeframe, pair=pair, fill_missing=fill_missing, drop_incomplete=(drop_incomplete and - enddate == pairdf.iloc[-1]['date'])) + enddate == df.iloc[-1]['date'])) def _validate_pairdata(self, pair, pairdata: DataFrame, timerange: TimeRange): """ diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 2b738a94a..363b03958 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -60,7 +60,7 @@ class JsonDataHandler(IDataHandler): Implements the loading and conversion to a Pandas dataframe. Timerange trimming and dataframe validation happens outside of this method. :param pair: Pair to load data - :param timeframe: Ticker timeframe (e.g. "5m") + :param timeframe: Timeframe (e.g. "5m") :param timerange: Limit data to be loaded to this timerange. Optionally implemented by subclasses to avoid loading all data where possible. @@ -83,7 +83,7 @@ class JsonDataHandler(IDataHandler): """ Remove data for this pair :param pair: Delete data for this pair. - :param timeframe: Ticker timeframe (e.g. "5m") + :param timeframe: Timeframe (e.g. "5m") :return: True when deleted, false if file did not exist. """ filename = self._pair_data_filename(self._datadir, pair, timeframe) diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index 57a8f4a7c..a24e29efb 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -119,7 +119,7 @@ class Edge: logger.critical("No data found. Edge is stopped ...") return False - preprocessed = self.strategy.tickerdata_to_dataframe(data) + preprocessed = self.strategy.ohlcvdata_to_dataframe(data) # Print timeframe min_date, max_date = history.get_timerange(preprocessed) @@ -137,10 +137,10 @@ class Edge: pair_data = pair_data.sort_values(by=['date']) pair_data = pair_data.reset_index(drop=True) - ticker_data = self.strategy.advise_sell( + dataframe = self.strategy.advise_sell( self.strategy.advise_buy(pair_data, {'pair': pair}), {'pair': pair})[headers].copy() - trades += self._find_trades_for_stoploss_range(ticker_data, pair, self._stoploss_range) + trades += self._find_trades_for_stoploss_range(dataframe, pair, self._stoploss_range) # If no trade found then exit if len(trades) == 0: @@ -359,11 +359,11 @@ class Edge: # Returning a list of pairs in order of "expectancy" return final - def _find_trades_for_stoploss_range(self, ticker_data, pair, stoploss_range): - buy_column = ticker_data['buy'].values - sell_column = ticker_data['sell'].values - date_column = ticker_data['date'].values - ohlc_columns = ticker_data[['open', 'high', 'low', 'close']].values + def _find_trades_for_stoploss_range(self, dataframe, pair, stoploss_range): + buy_column = dataframe['buy'].values + sell_column = dataframe['sell'].values + date_column = dataframe['date'].values + ohlc_columns = dataframe[['open', 'high', 'low', 'close']].values result: list = [] for stoploss in stoploss_range: diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 522b4e40e..f4c94a1ca 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -18,7 +18,7 @@ from ccxt.base.decimal_to_precision import (ROUND_DOWN, ROUND_UP, TICK_SIZE, TRUNCATE, decimal_to_precision) from pandas import DataFrame -from freqtrade.data.converter import parse_ticker_dataframe +from freqtrade.data.converter import ohlcv_to_dataframe from freqtrade.exceptions import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async @@ -351,7 +351,7 @@ class Exchange: def validate_timeframes(self, timeframe: Optional[str]) -> None: """ - Checks if ticker interval from config is a supported timeframe on the exchange + Check if timeframe from config is a supported timeframe on the exchange """ if not hasattr(self._api, "timeframes") or self._api.timeframes is None: # If timeframes attribute is missing (or is None), the exchange probably @@ -364,7 +364,7 @@ class Exchange: if timeframe and (timeframe not in self.timeframes): raise OperationalException( - f"Invalid ticker interval '{timeframe}'. This exchange supports: {self.timeframes}") + f"Invalid timeframe '{timeframe}'. This exchange supports: {self.timeframes}") if timeframe and timeframe_to_minutes(timeframe) < 1: raise OperationalException( @@ -599,7 +599,7 @@ class Exchange: return self._api.fetch_tickers() except ccxt.NotSupported as e: raise OperationalException( - f'Exchange {self._api.name} does not support fetching tickers in batch.' + f'Exchange {self._api.name} does not support fetching tickers in batch. ' f'Message: {e}') from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( @@ -623,13 +623,13 @@ class Exchange: def get_historic_ohlcv(self, pair: str, timeframe: str, since_ms: int) -> List: """ - Gets candle history using asyncio and returns the list of candles. - Handles all async doing. - Async over one pair, assuming we get `_ohlcv_candle_limit` candles per call. + Get candle history using asyncio and returns the list of candles. + Handles all async work for this. + Async over one pair, assuming we get `self._ohlcv_candle_limit` candles per call. :param pair: Pair to download - :param timeframe: Ticker Timeframe to get + :param timeframe: Timeframe to get data for :param since_ms: Timestamp in milliseconds to get history from - :returns List of tickers + :returns List with candle (OHLCV) data """ return asyncio.get_event_loop().run_until_complete( self._async_get_historic_ohlcv(pair=pair, timeframe=timeframe, @@ -649,26 +649,27 @@ class Exchange: pair, timeframe, since) for since in range(since_ms, arrow.utcnow().timestamp * 1000, one_call)] - tickers = await asyncio.gather(*input_coroutines, return_exceptions=True) + results = await asyncio.gather(*input_coroutines, return_exceptions=True) - # Combine tickers + # Combine gathered results data: List = [] - for p, timeframe, ticker in tickers: + for p, timeframe, res in results: if p == pair: - data.extend(ticker) + data.extend(res) # Sort data again after extending the result - above calls return in "async order" data = sorted(data, key=lambda x: x[0]) - logger.info("downloaded %s with length %s.", pair, len(data)) + logger.info("Downloaded data for %s with length %s.", pair, len(data)) return data def refresh_latest_ohlcv(self, pair_list: List[Tuple[str, str]]) -> List[Tuple[str, List]]: """ - Refresh in-memory ohlcv asynchronously and set `_klines` with the result + Refresh in-memory OHLCV asynchronously and set `_klines` with the result Loops asynchronously over pair_list and downloads all pairs async (semi-parallel). + Only used in the dataprovider.refresh() method. :param pair_list: List of 2 element tuples containing pair, interval to refresh - :return: Returns a List of ticker-dataframes. + :return: TODO: return value is only used in the tests, get rid of it """ - logger.debug("Refreshing ohlcv data for %d pairs", len(pair_list)) + logger.debug("Refreshing candle (OHLCV) data for %d pairs", len(pair_list)) input_coroutines = [] @@ -679,15 +680,15 @@ class Exchange: input_coroutines.append(self._async_get_candle_history(pair, timeframe)) else: logger.debug( - "Using cached ohlcv data for pair %s, timeframe %s ...", + "Using cached candle (OHLCV) data for pair %s, timeframe %s ...", pair, timeframe ) - tickers = asyncio.get_event_loop().run_until_complete( + results = asyncio.get_event_loop().run_until_complete( asyncio.gather(*input_coroutines, return_exceptions=True)) # handle caching - for res in tickers: + for res in results: if isinstance(res, Exception): logger.warning("Async code raised an exception: %s", res.__class__.__name__) continue @@ -698,13 +699,14 @@ class Exchange: if ticks: self._pairs_last_refresh_time[(pair, timeframe)] = ticks[-1][0] // 1000 # keeping parsed dataframe in cache - self._klines[(pair, timeframe)] = parse_ticker_dataframe( + self._klines[(pair, timeframe)] = ohlcv_to_dataframe( ticks, timeframe, pair=pair, fill_missing=True, drop_incomplete=self._ohlcv_partial_candle) - return tickers + + return results def _now_is_time_to_refresh(self, pair: str, timeframe: str) -> bool: - # Calculating ticker interval in seconds + # Timeframe in seconds interval_in_sec = timeframe_to_seconds(timeframe) return not ((self._pairs_last_refresh_time.get((pair, timeframe), 0) @@ -714,11 +716,11 @@ class Exchange: async def _async_get_candle_history(self, pair: str, timeframe: str, since_ms: Optional[int] = None) -> Tuple[str, str, List]: """ - Asynchronously gets candle histories using fetch_ohlcv + Asynchronously get candle history data using fetch_ohlcv returns tuple: (pair, timeframe, ohlcv_list) """ try: - # fetch ohlcv asynchronously + # Fetch OHLCV asynchronously s = '(' + arrow.get(since_ms // 1000).isoformat() + ') ' if since_ms is not None else '' logger.debug( "Fetching pair %s, interval %s, since %s %s...", @@ -728,9 +730,9 @@ class Exchange: data = await self._api_async.fetch_ohlcv(pair, timeframe=timeframe, since=since_ms) - # Because some exchange sort Tickers ASC and other DESC. - # Ex: Bittrex returns a list of tickers ASC (oldest first, newest last) - # when GDAX returns a list of tickers DESC (newest first, oldest last) + # Some exchanges sort OHLCV in ASC order and others in DESC. + # Ex: Bittrex returns the list of OHLCV in ASC order (oldest first, newest last) + # while GDAX returns the list of OHLCV in DESC order (newest first, oldest last) # Only sort if necessary to save computing time try: if data and data[0][0] > data[-1][0]: @@ -743,14 +745,15 @@ class Exchange: except ccxt.NotSupported as e: raise OperationalException( - f'Exchange {self._api.name} does not support fetching historical candlestick data.' - f'Message: {e}') from e + f'Exchange {self._api.name} does not support fetching historical ' + f'candle (OHLCV) data. Message: {e}') from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: - raise TemporaryError(f'Could not load ticker history for pair {pair} due to ' - f'{e.__class__.__name__}. Message: {e}') from e + raise TemporaryError(f'Could not fetch historical candle (OHLCV) data ' + f'for pair {pair} due to {e.__class__.__name__}. ' + f'Message: {e}') from e except ccxt.BaseError as e: - raise OperationalException(f'Could not fetch ticker data for pair {pair}. ' - f'Msg: {e}') from e + raise OperationalException(f'Could not fetch historical candle (OHLCV) data ' + f'for pair {pair}. Message: {e}') from e @retrier_async async def _async_fetch_trades(self, pair: str, @@ -883,14 +886,14 @@ class Exchange: until: Optional[int] = None, from_id: Optional[str] = None) -> Tuple[str, List]: """ - Gets candle history using asyncio and returns the list of candles. - Handles all async doing. - Async over one pair, assuming we get `_ohlcv_candle_limit` candles per call. + Get trade history data using asyncio. + Handles all async work and returns the list of candles. + Async over one pair, assuming we get `self._ohlcv_candle_limit` candles per call. :param pair: Pair to download :param since: Timestamp in milliseconds to get history from :param until: Timestamp in milliseconds. Defaults to current timestamp if not defined. :param from_id: Download data starting with ID (if id is known) - :returns List of tickers + :returns List of trade data """ if not self.exchange_has("fetchTrades"): raise OperationalException("This exchange does not suport downloading Trades.") diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 914b8d9cd..9897b39b4 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -172,8 +172,8 @@ class FreqtradeBot: _whitelist = self.edge.adjust(_whitelist) if trades: - # Extend active-pair whitelist with pairs from open trades - # It ensures that tickers are downloaded for open trades + # Extend active-pair whitelist with pairs of open trades + # It ensures that candle (OHLCV) data are downloaded for open trades as well _whitelist.extend([trade.pair for trade in trades if trade.pair not in _whitelist]) return _whitelist @@ -628,7 +628,7 @@ class FreqtradeBot: def get_sell_rate(self, pair: str, refresh: bool) -> float: """ - Get sell rate - either using get-ticker bid or first bid based on orderbook + Get sell rate - either using ticker bid or first bid based on orderbook The orderbook portion is only used for rpc messaging, which would otherwise fail for BitMex (has no bid/ask in fetch_ticker) or remain static in any other case since it's not updating. @@ -1043,7 +1043,7 @@ class FreqtradeBot: """ profit_rate = trade.close_rate if trade.close_rate else trade.close_rate_requested profit_trade = trade.calc_profit(rate=profit_rate) - # Use cached ticker here - it was updated seconds ago. + # Use cached rates here - it was updated seconds ago. current_rate = self.get_sell_rate(trade.pair, False) profit_ratio = trade.calc_profit_ratio(profit_rate) gain = "profit" if profit_ratio > 0 else "loss" diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 96bac28d8..1f52b75ec 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -81,13 +81,13 @@ def file_load_json(file): gzipfile = file # Try gzip file first, otherwise regular json file. if gzipfile.is_file(): - logger.debug('Loading ticker data from file %s', gzipfile) - with gzip.open(gzipfile) as tickerdata: - pairdata = json_load(tickerdata) + logger.debug(f"Loading historical data from file {gzipfile}") + with gzip.open(gzipfile) as datafile: + pairdata = json_load(datafile) elif file.is_file(): - logger.debug('Loading ticker data from file %s', file) - with open(file) as tickerdata: - pairdata = json_load(tickerdata) + logger.debug(f"Loading historical data from file {file}") + with open(file) as datafile: + pairdata = json_load(datafile) else: return None return pairdata diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 94441ce24..949c072c5 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -88,8 +88,8 @@ class Backtesting: validate_config_consistency(self.config) if "ticker_interval" not in self.config: - raise OperationalException("Ticker-interval needs to be set in either configuration " - "or as cli argument `--ticker-interval 5m`") + raise OperationalException("Timeframe (ticker interval) needs to be set in either " + "configuration or as cli argument `--ticker-interval 5m`") self.timeframe = str(self.config.get('ticker_interval')) self.timeframe_min = timeframe_to_minutes(self.timeframe) @@ -151,32 +151,33 @@ class Backtesting: logger.info(f'Dumping backtest results to {recordfilename}') file_dump_json(recordfilename, records) - def _get_ticker_list(self, processed: Dict) -> Dict[str, DataFrame]: + def _get_ohlcv_as_lists(self, processed: Dict) -> Dict[str, DataFrame]: """ - Helper function to convert a processed tickerlist into a list for performance reasons. + Helper function to convert a processed dataframes into lists for performance reasons. Used by backtest() - so keep this optimized for performance. """ headers = ['date', 'buy', 'open', 'close', 'sell', 'low', 'high'] - ticker: Dict = {} - # Create ticker dict + data: Dict = {} + # Create dict with data for pair, pair_data in processed.items(): pair_data.loc[:, 'buy'] = 0 # cleanup from previous run pair_data.loc[:, 'sell'] = 0 # cleanup from previous run - ticker_data = self.strategy.advise_sell( + dataframe = self.strategy.advise_sell( self.strategy.advise_buy(pair_data, {'pair': pair}), {'pair': pair})[headers].copy() - # to avoid using data from future, we buy/sell with signal from previous candle - ticker_data.loc[:, 'buy'] = ticker_data['buy'].shift(1) - ticker_data.loc[:, 'sell'] = ticker_data['sell'].shift(1) + # To avoid using data from future, we use buy/sell signals shifted + # from the previous candle + dataframe.loc[:, 'buy'] = dataframe['buy'].shift(1) + dataframe.loc[:, 'sell'] = dataframe['sell'].shift(1) - ticker_data.drop(ticker_data.head(1).index, inplace=True) + dataframe.drop(dataframe.head(1).index, inplace=True) # Convert from Pandas to list for performance reasons # (Looping Pandas is slow.) - ticker[pair] = [x for x in ticker_data.itertuples()] - return ticker + data[pair] = [x for x in dataframe.itertuples()] + return data def _get_close_rate(self, sell_row, trade: Trade, sell: SellCheckTuple, trade_dur: int) -> float: @@ -220,7 +221,7 @@ class Backtesting: def _get_sell_trade_entry( self, pair: str, buy_row: DataFrame, - partial_ticker: List, trade_count_lock: Dict, + partial_ohlcv: List, trade_count_lock: Dict, stake_amount: float, max_open_trades: int) -> Optional[BacktestResult]: trade = Trade( @@ -235,7 +236,7 @@ class Backtesting: ) logger.debug(f"{pair} - Backtesting emulates creation of new trade: {trade}.") # calculate win/lose forwards from buy point - for sell_row in partial_ticker: + for sell_row in partial_ohlcv: if max_open_trades > 0: # Increase trade_count_lock for every iteration trade_count_lock[sell_row.date] = trade_count_lock.get(sell_row.date, 0) + 1 @@ -259,9 +260,9 @@ class Backtesting: close_rate=closerate, sell_reason=sell.sell_type ) - if partial_ticker: + if partial_ohlcv: # no sell condition found - trade stil open at end of backtest period - sell_row = partial_ticker[-1] + sell_row = partial_ohlcv[-1] bt_res = BacktestResult(pair=pair, profit_percent=trade.calc_profit_ratio(rate=sell_row.open), profit_abs=trade.calc_profit(rate=sell_row.open), @@ -308,8 +309,9 @@ class Backtesting: trades = [] trade_count_lock: Dict = {} - # Dict of ticker-lists for performance (looping lists is a lot faster than dataframes) - ticker: Dict = self._get_ticker_list(processed) + # Use dict of lists with data for performance + # (looping lists is a lot faster than pandas DataFrames) + data: Dict = self._get_ohlcv_as_lists(processed) lock_pair_until: Dict = {} # Indexes per pair, so some pairs are allowed to have a missing start. @@ -319,12 +321,12 @@ class Backtesting: # Loop timerange and get candle for each pair at that point in time while tmp < end_date: - for i, pair in enumerate(ticker): + for i, pair in enumerate(data): if pair not in indexes: indexes[pair] = 0 try: - row = ticker[pair][indexes[pair]] + row = data[pair][indexes[pair]] except IndexError: # missing Data for one pair at the end. # Warnings for this are shown during data loading @@ -352,7 +354,7 @@ class Backtesting: # since indexes has been incremented before, we need to go one step back to # also check the buying candle for sell conditions. - trade_entry = self._get_sell_trade_entry(pair, row, ticker[pair][indexes[pair]-1:], + trade_entry = self._get_sell_trade_entry(pair, row, data[pair][indexes[pair]-1:], trade_count_lock, stake_amount, max_open_trades) @@ -395,7 +397,7 @@ class Backtesting: self._set_strategy(strat) # need to reprocess data every time to populate signals - preprocessed = self.strategy.tickerdata_to_dataframe(data) + preprocessed = self.strategy.ohlcvdata_to_dataframe(data) # Trim startup period from analyzed dataframe for pair, df in preprocessed.items(): diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index e9ab469f4..ed58db977 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -75,8 +75,8 @@ class Hyperopt: self.trials_file = (self.config['user_data_dir'] / 'hyperopt_results' / 'hyperopt_results.pickle') - self.tickerdata_pickle = (self.config['user_data_dir'] / - 'hyperopt_results' / 'hyperopt_tickerdata.pkl') + self.data_pickle_file = (self.config['user_data_dir'] / + 'hyperopt_results' / 'hyperopt_data.pkl') self.total_epochs = config.get('epochs', 0) self.current_best_loss = 100 @@ -130,7 +130,7 @@ class Hyperopt: """ Remove hyperopt pickle files to restart hyperopt. """ - for f in [self.tickerdata_pickle, self.trials_file]: + for f in [self.data_pickle_file, self.trials_file]: p = Path(f) if p.is_file(): logger.info(f"Removing `{p}`.") @@ -454,7 +454,7 @@ class Hyperopt: self.backtesting.strategy.trailing_only_offset_is_reached = \ d['trailing_only_offset_is_reached'] - processed = load(self.tickerdata_pickle) + processed = load(self.data_pickle_file) min_date, max_date = get_timerange(processed) @@ -570,7 +570,7 @@ class Hyperopt: self.hyperopt_table_header = -1 data, timerange = self.backtesting.load_bt_data() - preprocessed = self.backtesting.strategy.tickerdata_to_dataframe(data) + preprocessed = self.backtesting.strategy.ohlcvdata_to_dataframe(data) # Trim startup period from analyzed dataframe for pair, df in preprocessed.items(): @@ -581,7 +581,7 @@ class Hyperopt: 'Hyperopting with data from %s up to %s (%s days)..', min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days ) - dump(preprocessed, self.tickerdata_pickle) + dump(preprocessed, self.data_pickle_file) # We don't need exchange instance anymore while running hyperopt self.backtesting.exchange = None # type: ignore diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index d979a40e0..cfbda6714 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -6,7 +6,7 @@ import pandas as pd from freqtrade.configuration import TimeRange from freqtrade.data.btanalysis import (calculate_max_drawdown, - combine_tickers_with_mean, + combine_dataframes_with_mean, create_cum_profit, extract_trades_of_period, load_trades) from freqtrade.data.converter import trim_dataframe @@ -29,7 +29,7 @@ except ImportError: def init_plotscript(config): """ Initialize objects needed for plotting - :return: Dict with tickers, trades and pairs + :return: Dict with candle (OHLCV) data, trades and pairs """ if "pairs" in config: @@ -40,7 +40,7 @@ def init_plotscript(config): # Set timerange to use timerange = TimeRange.parse_timerange(config.get("timerange")) - tickers = load_data( + data = load_data( datadir=config.get("datadir"), pairs=pairs, timeframe=config.get('ticker_interval', '5m'), @@ -53,7 +53,7 @@ def init_plotscript(config): exportfilename=config.get('exportfilename'), ) trades = trim_dataframe(trades, timerange, 'open_time') - return {"tickers": tickers, + return {"ohlcv": data, "trades": trades, "pairs": pairs, } @@ -368,10 +368,10 @@ def generate_candlestick_graph(pair: str, data: pd.DataFrame, trades: pd.DataFra return fig -def generate_profit_graph(pairs: str, tickers: Dict[str, pd.DataFrame], +def generate_profit_graph(pairs: str, data: Dict[str, pd.DataFrame], trades: pd.DataFrame, timeframe: str) -> go.Figure: # Combine close-values for all pairs, rename columns to "pair" - df_comb = combine_tickers_with_mean(tickers, "close") + df_comb = combine_dataframes_with_mean(data, "close") # Add combined cumulative profit df_comb = create_cum_profit(df_comb, trades, 'cum_profit', timeframe) @@ -439,7 +439,7 @@ def load_and_plot_trades(config: Dict[str, Any]): """ From configuration provided - Initializes plot-script - - Get tickers data + - Get candle (OHLCV) data - Generate Dafaframes populated with indicators and signals based on configured strategy - Load trades excecuted during the selected period - Generate Plotly plot objects @@ -451,13 +451,13 @@ def load_and_plot_trades(config: Dict[str, Any]): plot_elements = init_plotscript(config) trades = plot_elements['trades'] pair_counter = 0 - for pair, data in plot_elements["tickers"].items(): + for pair, data in plot_elements["ohlcv"].items(): pair_counter += 1 logger.info("analyse pair %s", pair) - tickers = {} - tickers[pair] = data + ohlcv = {} + ohlcv[pair] = data - dataframe = strategy.analyze_ticker(tickers[pair], {'pair': pair}) + dataframe = strategy.analyze_ticker(ohlcv[pair], {'pair': pair}) trades_pair = trades.loc[trades['pair'] == pair] trades_pair = extract_trades_of_period(dataframe, trades_pair) @@ -494,7 +494,7 @@ def plot_profit(config: Dict[str, Any]) -> None: # Create an average close price of all the pairs that were involved. # this could be useful to gauge the overall market trend - fig = generate_profit_graph(plot_elements["pairs"], plot_elements["tickers"], + fig = generate_profit_graph(plot_elements["pairs"], plot_elements["ohlcv"], trades, config.get('ticker_interval', '5m')) store_plot_file(fig, filename='freqtrade-profit-plot.html', directory=config['user_data_dir'] / "plot", auto_open=True) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index d23af3f6e..696d2b2d2 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -59,7 +59,7 @@ class IStrategy(ABC): Attributes you can use: minimal_roi -> Dict: Minimal ROI designed for the strategy stoploss -> float: optimal stoploss designed for the strategy - ticker_interval -> str: value of the ticker interval to use for the strategy + ticker_interval -> str: value of the timeframe (ticker interval) to use with the strategy """ # Strategy interface version # Default to version 2 @@ -125,7 +125,7 @@ class IStrategy(ABC): def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Populate indicators that will be used in the Buy and Sell strategy - :param dataframe: Raw data from the exchange and parsed by parse_ticker_dataframe() + :param dataframe: DataFrame with data from the exchange :param metadata: Additional information, like the currently traded pair :return: a Dataframe with all mandatory indicators for the strategies """ @@ -200,11 +200,11 @@ class IStrategy(ABC): def analyze_ticker(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Parses the given ticker history and returns a populated DataFrame + Parses the given candle (OHLCV) data and returns a populated DataFrame add several TA indicators and buy signal to it - :param dataframe: Dataframe containing ticker data + :param dataframe: Dataframe containing data from exchange :param metadata: Metadata dictionary with additional data (e.g. 'pair') - :return: DataFrame with ticker data and indicator data + :return: DataFrame of candle (OHLCV) data with indicator data and signals added """ logger.debug("TA Analysis Launched") dataframe = self.advise_indicators(dataframe, metadata) @@ -214,12 +214,12 @@ class IStrategy(ABC): def _analyze_ticker_internal(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ - Parses the given ticker history and returns a populated DataFrame + Parses the given candle (OHLCV) data and returns a populated DataFrame add several TA indicators and buy signal to it WARNING: Used internally only, may skip analysis if `process_only_new_candles` is set. - :param dataframe: Dataframe containing ticker data + :param dataframe: Dataframe containing data from exchange :param metadata: Metadata dictionary with additional data (e.g. 'pair') - :return: DataFrame with ticker data and indicator data + :return: DataFrame of candle (OHLCV) data with indicator data and signals added """ pair = str(metadata.get('pair')) @@ -251,21 +251,21 @@ class IStrategy(ABC): :return: (Buy, Sell) A bool-tuple indicating buy/sell signal """ if not isinstance(dataframe, DataFrame) or dataframe.empty: - logger.warning('Empty ticker history for pair %s', pair) + logger.warning('Empty candle (OHLCV) data for pair %s', pair) return False, False try: dataframe = self._analyze_ticker_internal(dataframe, {'pair': pair}) except ValueError as error: logger.warning( - 'Unable to analyze ticker for pair %s: %s', + 'Unable to analyze candle (OHLCV) data for pair %s: %s', pair, str(error) ) return False, False except Exception as error: logger.exception( - 'Unexpected error when analyzing ticker for pair %s: %s', + 'Unexpected error when analyzing candle (OHLCV) data for pair %s: %s', pair, str(error) ) @@ -440,19 +440,19 @@ class IStrategy(ABC): else: return current_profit > roi - def tickerdata_to_dataframe(self, tickerdata: Dict[str, DataFrame]) -> Dict[str, DataFrame]: + def ohlcvdata_to_dataframe(self, data: Dict[str, DataFrame]) -> Dict[str, DataFrame]: """ - Creates a dataframe and populates indicators for given ticker data + Creates a dataframe and populates indicators for given candle (OHLCV) data Used by optimize operations only, not during dry / live runs. """ return {pair: self.advise_indicators(pair_data, {'pair': pair}) - for pair, pair_data in tickerdata.items()} + for pair, pair_data in data.items()} def advise_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ Populate indicators that will be used in the Buy and Sell strategy This method should not be overridden. - :param dataframe: Raw data from the exchange and parsed by parse_ticker_dataframe() + :param dataframe: Dataframe with data from the exchange :param metadata: Additional information, like the currently traded pair :return: a Dataframe with all mandatory indicators for the strategies """ diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index fbf083387..97a189ff4 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -99,7 +99,7 @@ class {{ strategy }}(IStrategy): Performance Note: For the best performance be frugal on the number of indicators you are using. Let uncomment only the indicator you are using in your strategies or your hyperopt configuration, otherwise you will waste your memory and CPU usage. - :param dataframe: Raw data from the exchange and parsed by parse_ticker_dataframe() + :param dataframe: Dataframe with data from the exchange :param metadata: Additional information, like the currently traded pair :return: a Dataframe with all mandatory indicators for the strategies """ diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index 17372e1e0..f78489173 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -116,7 +116,7 @@ class SampleStrategy(IStrategy): Performance Note: For the best performance be frugal on the number of indicators you are using. Let uncomment only the indicator you are using in your strategies or your hyperopt configuration, otherwise you will waste your memory and CPU usage. - :param dataframe: Raw data from the exchange and parsed by parse_ticker_dataframe() + :param dataframe: Dataframe with data from the exchange :param metadata: Additional information, like the currently traded pair :return: a Dataframe with all mandatory indicators for the strategies """ diff --git a/tests/conftest.py b/tests/conftest.py index e8e3fe9e3..64d0cd5ee 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -15,7 +15,7 @@ from telegram import Chat, Message, Update from freqtrade import constants, persistence from freqtrade.commands import Arguments -from freqtrade.data.converter import parse_ticker_dataframe +from freqtrade.data.converter import ohlcv_to_dataframe from freqtrade.edge import Edge, PairInfo from freqtrade.exchange import Exchange from freqtrade.freqtradebot import FreqtradeBot @@ -849,15 +849,15 @@ def order_book_l2(): @pytest.fixture -def ticker_history_list(): +def ohlcv_history_list(): return [ [ 1511686200000, # unix timestamp ms - 8.794e-05, # open - 8.948e-05, # high - 8.794e-05, # low - 8.88e-05, # close - 0.0877869, # volume (in quote currency) + 8.794e-05, # open + 8.948e-05, # high + 8.794e-05, # low + 8.88e-05, # close + 0.0877869, # volume (in quote currency) ], [ 1511686500000, @@ -879,8 +879,9 @@ def ticker_history_list(): @pytest.fixture -def ticker_history(ticker_history_list): - return parse_ticker_dataframe(ticker_history_list, "5m", pair="UNITTEST/BTC", fill_missing=True) +def ohlcv_history(ohlcv_history_list): + return ohlcv_to_dataframe(ohlcv_history_list, "5m", pair="UNITTEST/BTC", + fill_missing=True) @pytest.fixture @@ -1195,8 +1196,8 @@ def tickers(): @pytest.fixture def result(testdatadir): with (testdatadir / 'UNITTEST_BTC-1m.json').open('r') as data_file: - return parse_ticker_dataframe(json.load(data_file), '1m', pair="UNITTEST/BTC", - fill_missing=True) + return ohlcv_to_dataframe(json.load(data_file), '1m', pair="UNITTEST/BTC", + fill_missing=True) @pytest.fixture(scope="function") diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 7e3c1f077..da5d225b9 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -8,7 +8,7 @@ from freqtrade.configuration import TimeRange from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, analyze_trade_parallelism, calculate_max_drawdown, - combine_tickers_with_mean, + combine_dataframes_with_mean, create_cum_profit, extract_trades_of_period, load_backtest_data, load_trades, @@ -120,13 +120,10 @@ def test_load_trades(default_conf, mocker): assert bt_mock.call_count == 1 -def test_combine_tickers_with_mean(testdatadir): +def test_combine_dataframes_with_mean(testdatadir): pairs = ["ETH/BTC", "ADA/BTC"] - tickers = load_data(datadir=testdatadir, - pairs=pairs, - timeframe='5m' - ) - df = combine_tickers_with_mean(tickers) + data = load_data(datadir=testdatadir, pairs=pairs, timeframe='5m') + df = combine_dataframes_with_mean(data) assert isinstance(df, DataFrame) assert "ETH/BTC" in df.columns assert "ADA/BTC" in df.columns diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index a0ec2f46f..7dff520e0 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -5,9 +5,12 @@ from freqtrade.configuration.timerange import TimeRange from freqtrade.data.converter import (convert_ohlcv_format, convert_trades_format, ohlcv_fill_up_missing_data, - parse_ticker_dataframe, trim_dataframe) -from freqtrade.data.history import (get_timerange, load_data, - load_pair_history, validate_backtest_data) + ohlcv_to_dataframe, + trim_dataframe) +from freqtrade.data.history import (get_timerange, + load_data, + load_pair_history, + validate_backtest_data) from tests.conftest import log_has from tests.data.test_history import _backup_file, _clean_test_file @@ -16,15 +19,15 @@ def test_dataframe_correct_columns(result): assert result.columns.tolist() == ['date', 'open', 'high', 'low', 'close', 'volume'] -def test_parse_ticker_dataframe(ticker_history_list, caplog): +def test_ohlcv_to_dataframe(ohlcv_history_list, caplog): columns = ['date', 'open', 'high', 'low', 'close', 'volume'] caplog.set_level(logging.DEBUG) # Test file with BV data - dataframe = parse_ticker_dataframe(ticker_history_list, '5m', - pair="UNITTEST/BTC", fill_missing=True) + dataframe = ohlcv_to_dataframe(ohlcv_history_list, '5m', pair="UNITTEST/BTC", + fill_missing=True) assert dataframe.columns.tolist() == columns - assert log_has('Parsing tickerlist to dataframe', caplog) + assert log_has('Converting candle (OHLCV) data to dataframe for pair UNITTEST/BTC.', caplog) def test_ohlcv_fill_up_missing_data(testdatadir, caplog): @@ -84,7 +87,8 @@ def test_ohlcv_fill_up_missing_data2(caplog): ] # Generate test-data without filling missing - data = parse_ticker_dataframe(ticks, timeframe, pair="UNITTEST/BTC", fill_missing=False) + data = ohlcv_to_dataframe(ticks, timeframe, pair="UNITTEST/BTC", + fill_missing=False) assert len(data) == 3 caplog.set_level(logging.DEBUG) data2 = ohlcv_fill_up_missing_data(data, timeframe, "UNITTEST/BTC") @@ -140,14 +144,14 @@ def test_ohlcv_drop_incomplete(caplog): ] ] caplog.set_level(logging.DEBUG) - data = parse_ticker_dataframe(ticks, timeframe, pair="UNITTEST/BTC", - fill_missing=False, drop_incomplete=False) + data = ohlcv_to_dataframe(ticks, timeframe, pair="UNITTEST/BTC", + fill_missing=False, drop_incomplete=False) assert len(data) == 4 assert not log_has("Dropping last candle", caplog) # Drop last candle - data = parse_ticker_dataframe(ticks, timeframe, pair="UNITTEST/BTC", - fill_missing=False, drop_incomplete=True) + data = ohlcv_to_dataframe(ticks, timeframe, pair="UNITTEST/BTC", + fill_missing=False, drop_incomplete=True) assert len(data) == 3 assert log_has("Dropping last candle", caplog) diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index 1dbe20936..2b3dda188 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -7,19 +7,19 @@ from freqtrade.state import RunMode from tests.conftest import get_patched_exchange -def test_ohlcv(mocker, default_conf, ticker_history): +def test_ohlcv(mocker, default_conf, ohlcv_history): default_conf["runmode"] = RunMode.DRY_RUN timeframe = default_conf["ticker_interval"] exchange = get_patched_exchange(mocker, default_conf) - exchange._klines[("XRP/BTC", timeframe)] = ticker_history - exchange._klines[("UNITTEST/BTC", timeframe)] = ticker_history + exchange._klines[("XRP/BTC", timeframe)] = ohlcv_history + exchange._klines[("UNITTEST/BTC", timeframe)] = ohlcv_history dp = DataProvider(default_conf, exchange) assert dp.runmode == RunMode.DRY_RUN - assert ticker_history.equals(dp.ohlcv("UNITTEST/BTC", timeframe)) + assert ohlcv_history.equals(dp.ohlcv("UNITTEST/BTC", timeframe)) assert isinstance(dp.ohlcv("UNITTEST/BTC", timeframe), DataFrame) - assert dp.ohlcv("UNITTEST/BTC", timeframe) is not ticker_history - assert dp.ohlcv("UNITTEST/BTC", timeframe, copy=False) is ticker_history + assert dp.ohlcv("UNITTEST/BTC", timeframe) is not ohlcv_history + assert dp.ohlcv("UNITTEST/BTC", timeframe, copy=False) is ohlcv_history assert not dp.ohlcv("UNITTEST/BTC", timeframe).empty assert dp.ohlcv("NONESENSE/AAA", timeframe).empty @@ -37,8 +37,8 @@ def test_ohlcv(mocker, default_conf, ticker_history): assert dp.ohlcv("UNITTEST/BTC", timeframe).empty -def test_historic_ohlcv(mocker, default_conf, ticker_history): - historymock = MagicMock(return_value=ticker_history) +def test_historic_ohlcv(mocker, default_conf, ohlcv_history): + historymock = MagicMock(return_value=ohlcv_history) mocker.patch("freqtrade.data.dataprovider.load_pair_history", historymock) dp = DataProvider(default_conf, None) @@ -48,18 +48,18 @@ def test_historic_ohlcv(mocker, default_conf, ticker_history): assert historymock.call_args_list[0][1]["timeframe"] == "5m" -def test_get_pair_dataframe(mocker, default_conf, ticker_history): +def test_get_pair_dataframe(mocker, default_conf, ohlcv_history): default_conf["runmode"] = RunMode.DRY_RUN ticker_interval = default_conf["ticker_interval"] exchange = get_patched_exchange(mocker, default_conf) - exchange._klines[("XRP/BTC", ticker_interval)] = ticker_history - exchange._klines[("UNITTEST/BTC", ticker_interval)] = ticker_history + exchange._klines[("XRP/BTC", ticker_interval)] = ohlcv_history + exchange._klines[("UNITTEST/BTC", ticker_interval)] = ohlcv_history dp = DataProvider(default_conf, exchange) assert dp.runmode == RunMode.DRY_RUN - assert ticker_history.equals(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval)) + assert ohlcv_history.equals(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval)) assert isinstance(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval), DataFrame) - assert dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval) is not ticker_history + assert dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval) is not ohlcv_history assert not dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval).empty assert dp.get_pair_dataframe("NONESENSE/AAA", ticker_interval).empty @@ -73,7 +73,7 @@ def test_get_pair_dataframe(mocker, default_conf, ticker_history): assert isinstance(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval), DataFrame) assert dp.get_pair_dataframe("NONESENSE/AAA", ticker_interval).empty - historymock = MagicMock(return_value=ticker_history) + historymock = MagicMock(return_value=ohlcv_history) mocker.patch("freqtrade.data.dataprovider.load_pair_history", historymock) default_conf["runmode"] = RunMode.BACKTEST dp = DataProvider(default_conf, exchange) @@ -82,11 +82,11 @@ def test_get_pair_dataframe(mocker, default_conf, ticker_history): # assert dp.get_pair_dataframe("NONESENSE/AAA", ticker_interval).empty -def test_available_pairs(mocker, default_conf, ticker_history): +def test_available_pairs(mocker, default_conf, ohlcv_history): exchange = get_patched_exchange(mocker, default_conf) ticker_interval = default_conf["ticker_interval"] - exchange._klines[("XRP/BTC", ticker_interval)] = ticker_history - exchange._klines[("UNITTEST/BTC", ticker_interval)] = ticker_history + exchange._klines[("XRP/BTC", ticker_interval)] = ohlcv_history + exchange._klines[("UNITTEST/BTC", ticker_interval)] = ohlcv_history dp = DataProvider(default_conf, exchange) assert len(dp.available_pairs) == 2 @@ -96,7 +96,7 @@ def test_available_pairs(mocker, default_conf, ticker_history): ] -def test_refresh(mocker, default_conf, ticker_history): +def test_refresh(mocker, default_conf, ohlcv_history): refresh_mock = MagicMock() mocker.patch("freqtrade.exchange.Exchange.refresh_latest_ohlcv", refresh_mock) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 9c9af9acd..12390538a 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -12,7 +12,7 @@ from pandas import DataFrame from pandas.testing import assert_frame_equal from freqtrade.configuration import TimeRange -from freqtrade.data.converter import parse_ticker_dataframe +from freqtrade.data.converter import ohlcv_to_dataframe from freqtrade.data.history.history_utils import ( _download_pair_history, _download_trades_history, _load_cached_data_for_updating, convert_trades_to_ohlcv, get_timerange, @@ -63,7 +63,7 @@ def _clean_test_file(file: Path) -> None: file_swp.rename(file) -def test_load_data_30min_ticker(mocker, caplog, default_conf, testdatadir) -> None: +def test_load_data_30min_timeframe(mocker, caplog, default_conf, testdatadir) -> None: ld = load_pair_history(pair='UNITTEST/BTC', timeframe='30m', datadir=testdatadir) assert isinstance(ld, DataFrame) assert not log_has( @@ -72,7 +72,7 @@ def test_load_data_30min_ticker(mocker, caplog, default_conf, testdatadir) -> No ) -def test_load_data_7min_ticker(mocker, caplog, default_conf, testdatadir) -> None: +def test_load_data_7min_timeframe(mocker, caplog, default_conf, testdatadir) -> None: ld = load_pair_history(pair='UNITTEST/BTC', timeframe='7m', datadir=testdatadir) assert isinstance(ld, DataFrame) assert ld.empty @@ -82,8 +82,8 @@ def test_load_data_7min_ticker(mocker, caplog, default_conf, testdatadir) -> Non ) -def test_load_data_1min_ticker(ticker_history, mocker, caplog, testdatadir) -> None: - mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history) +def test_load_data_1min_timeframe(ohlcv_history, mocker, caplog, testdatadir) -> None: + mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ohlcv_history) file = testdatadir / 'UNITTEST_BTC-1m.json' _backup_file(file, copy_file=True) load_data(datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC']) @@ -110,12 +110,12 @@ def test_load_data_startup_candles(mocker, caplog, default_conf, testdatadir) -> assert ltfmock.call_args_list[0][1]['timerange'].startts == timerange.startts - 20 * 60 -def test_load_data_with_new_pair_1min(ticker_history_list, mocker, caplog, +def test_load_data_with_new_pair_1min(ohlcv_history_list, mocker, caplog, default_conf, testdatadir) -> None: """ - Test load_pair_history() with 1 min ticker + Test load_pair_history() with 1 min timeframe """ - mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history_list) + mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ohlcv_history_list) exchange = get_patched_exchange(mocker, default_conf) file = testdatadir / 'MEME_BTC-1m.json' @@ -188,8 +188,8 @@ def test_load_cached_data_for_updating(mocker, testdatadir) -> None: with open(test_filename, "rt") as file: test_data = json.load(file) - test_data_df = parse_ticker_dataframe(test_data, '1m', 'UNITTEST/BTC', - fill_missing=False, drop_incomplete=False) + test_data_df = ohlcv_to_dataframe(test_data, '1m', 'UNITTEST/BTC', + fill_missing=False, drop_incomplete=False) # now = last cached item + 1 hour now_ts = test_data[-1][0] / 1000 + 60 * 60 mocker.patch('arrow.utcnow', return_value=arrow.get(now_ts)) @@ -230,8 +230,8 @@ def test_load_cached_data_for_updating(mocker, testdatadir) -> None: assert start_ts is None -def test_download_pair_history(ticker_history_list, mocker, default_conf, testdatadir) -> None: - mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ticker_history_list) +def test_download_pair_history(ohlcv_history_list, mocker, default_conf, testdatadir) -> None: + mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', return_value=ohlcv_history_list) exchange = get_patched_exchange(mocker, default_conf) file1_1 = testdatadir / 'MEME_BTC-1m.json' file1_5 = testdatadir / 'MEME_BTC-5m.json' @@ -293,7 +293,7 @@ def test_download_pair_history2(mocker, default_conf, testdatadir) -> None: assert json_dump_mock.call_count == 2 -def test_download_backtesting_data_exception(ticker_history, mocker, caplog, +def test_download_backtesting_data_exception(ohlcv_history, mocker, caplog, default_conf, testdatadir) -> None: mocker.patch('freqtrade.exchange.Exchange.get_historic_ohlcv', side_effect=Exception('File Error')) @@ -321,15 +321,15 @@ def test_load_partial_missing(testdatadir, caplog) -> None: # Make sure we start fresh - test missing data at start start = arrow.get('2018-01-01T00:00:00') end = arrow.get('2018-01-11T00:00:00') - tickerdata = load_data(testdatadir, '5m', ['UNITTEST/BTC'], startup_candles=20, - timerange=TimeRange('date', 'date', start.timestamp, end.timestamp)) + data = load_data(testdatadir, '5m', ['UNITTEST/BTC'], startup_candles=20, + timerange=TimeRange('date', 'date', start.timestamp, end.timestamp)) assert log_has( 'Using indicator startup period: 20 ...', caplog ) # timedifference in 5 minutes td = ((end - start).total_seconds() // 60 // 5) + 1 - assert td != len(tickerdata['UNITTEST/BTC']) - start_real = tickerdata['UNITTEST/BTC'].iloc[0, 0] + assert td != len(data['UNITTEST/BTC']) + start_real = data['UNITTEST/BTC'].iloc[0, 0] assert log_has(f'Missing data at start for pair ' f'UNITTEST/BTC, data starts at {start_real.strftime("%Y-%m-%d %H:%M:%S")}', caplog) @@ -337,14 +337,14 @@ def test_load_partial_missing(testdatadir, caplog) -> None: caplog.clear() start = arrow.get('2018-01-10T00:00:00') end = arrow.get('2018-02-20T00:00:00') - tickerdata = load_data(datadir=testdatadir, timeframe='5m', pairs=['UNITTEST/BTC'], - timerange=TimeRange('date', 'date', start.timestamp, end.timestamp)) + data = load_data(datadir=testdatadir, timeframe='5m', pairs=['UNITTEST/BTC'], + timerange=TimeRange('date', 'date', start.timestamp, end.timestamp)) # timedifference in 5 minutes td = ((end - start).total_seconds() // 60 // 5) + 1 - assert td != len(tickerdata['UNITTEST/BTC']) + assert td != len(data['UNITTEST/BTC']) # Shift endtime with +5 - as last candle is dropped (partial candle) - end_real = arrow.get(tickerdata['UNITTEST/BTC'].iloc[-1, 0]).shift(minutes=5) + end_real = arrow.get(data['UNITTEST/BTC'].iloc[-1, 0]).shift(minutes=5) assert log_has(f'Missing data at end for pair ' f'UNITTEST/BTC, data ends at {end_real.strftime("%Y-%m-%d %H:%M:%S")}', caplog) @@ -403,7 +403,7 @@ def test_get_timerange(default_conf, mocker, testdatadir) -> None: default_conf.update({'strategy': 'DefaultStrategy'}) strategy = StrategyResolver.load_strategy(default_conf) - data = strategy.tickerdata_to_dataframe( + data = strategy.ohlcvdata_to_dataframe( load_data( datadir=testdatadir, timeframe='1m', @@ -421,7 +421,7 @@ def test_validate_backtest_data_warn(default_conf, mocker, caplog, testdatadir) default_conf.update({'strategy': 'DefaultStrategy'}) strategy = StrategyResolver.load_strategy(default_conf) - data = strategy.tickerdata_to_dataframe( + data = strategy.ohlcvdata_to_dataframe( load_data( datadir=testdatadir, timeframe='1m', @@ -446,7 +446,7 @@ def test_validate_backtest_data(default_conf, mocker, caplog, testdatadir) -> No strategy = StrategyResolver.load_strategy(default_conf) timerange = TimeRange('index', 'index', 200, 250) - data = strategy.tickerdata_to_dataframe( + data = strategy.ohlcvdata_to_dataframe( load_data( datadir=testdatadir, timeframe='5m', diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index 2a0d19128..c68ac477c 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -11,7 +11,7 @@ import pytest from pandas import DataFrame, to_datetime from freqtrade.exceptions import OperationalException -from freqtrade.data.converter import parse_ticker_dataframe +from freqtrade.data.converter import ohlcv_to_dataframe from freqtrade.edge import Edge, PairInfo from freqtrade.strategy.interface import SellType from tests.conftest import get_patched_freqtradebot, log_has @@ -26,7 +26,7 @@ from tests.optimize import (BTContainer, BTrade, _build_backtest_dataframe, # 5) Stoploss and sell are hit. should sell on stoploss #################################################################### -ticker_start_time = arrow.get(2018, 10, 3) +tests_start_time = arrow.get(2018, 10, 3) ticker_interval_in_minute = 60 _ohlc = {'date': 0, 'buy': 1, 'open': 2, 'high': 3, 'low': 4, 'close': 5, 'sell': 6, 'volume': 7} @@ -43,10 +43,10 @@ def _validate_ohlc(buy_ohlc_sell_matrice): def _build_dataframe(buy_ohlc_sell_matrice): _validate_ohlc(buy_ohlc_sell_matrice) - tickers = [] + data = [] for ohlc in buy_ohlc_sell_matrice: - ticker = { - 'date': ticker_start_time.shift( + d = { + 'date': tests_start_time.shift( minutes=( ohlc[0] * ticker_interval_in_minute)).timestamp * @@ -57,9 +57,9 @@ def _build_dataframe(buy_ohlc_sell_matrice): 'low': ohlc[4], 'close': ohlc[5], 'sell': ohlc[6]} - tickers.append(ticker) + data.append(d) - frame = DataFrame(tickers) + frame = DataFrame(data) frame['date'] = to_datetime(frame['date'], unit='ms', utc=True, @@ -69,7 +69,7 @@ def _build_dataframe(buy_ohlc_sell_matrice): def _time_on_candle(number): - return np.datetime64(ticker_start_time.shift( + return np.datetime64(tests_start_time.shift( minutes=(number * ticker_interval_in_minute)).timestamp * 1000, 'ms') @@ -262,7 +262,7 @@ def mocked_load_data(datadir, pairs=[], timeframe='0m', NEOBTC = [ [ - ticker_start_time.shift(minutes=(x * ticker_interval_in_minute)).timestamp * 1000, + tests_start_time.shift(minutes=(x * ticker_interval_in_minute)).timestamp * 1000, math.sin(x * hz) / 1000 + base, math.sin(x * hz) / 1000 + base + 0.0001, math.sin(x * hz) / 1000 + base - 0.0001, @@ -274,7 +274,7 @@ def mocked_load_data(datadir, pairs=[], timeframe='0m', base = 0.002 LTCBTC = [ [ - ticker_start_time.shift(minutes=(x * ticker_interval_in_minute)).timestamp * 1000, + tests_start_time.shift(minutes=(x * ticker_interval_in_minute)).timestamp * 1000, math.sin(x * hz) / 1000 + base, math.sin(x * hz) / 1000 + base + 0.0001, math.sin(x * hz) / 1000 + base - 0.0001, @@ -282,8 +282,10 @@ def mocked_load_data(datadir, pairs=[], timeframe='0m', 123.45 ] for x in range(0, 500)] - pairdata = {'NEO/BTC': parse_ticker_dataframe(NEOBTC, '1h', pair="NEO/BTC", fill_missing=True), - 'LTC/BTC': parse_ticker_dataframe(LTCBTC, '1h', pair="LTC/BTC", fill_missing=True)} + pairdata = {'NEO/BTC': ohlcv_to_dataframe(NEOBTC, '1h', pair="NEO/BTC", + fill_missing=True), + 'LTC/BTC': ohlcv_to_dataframe(LTCBTC, '1h', pair="LTC/BTC", + fill_missing=True)} return pairdata diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 6bec53d49..8d8930f66 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -581,7 +581,7 @@ def test_validate_timeframes_failed(default_conf, mocker): mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={})) mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) with pytest.raises(OperationalException, - match=r"Invalid ticker interval '3m'. This exchange supports.*"): + match=r"Invalid timeframe '3m'. This exchange supports.*"): Exchange(default_conf) default_conf["ticker_interval"] = "15s" @@ -1211,7 +1211,7 @@ def test_fetch_ticker(default_conf, mocker, exchange_name): @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name): exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) - tick = [ + ohlcv = [ [ arrow.utcnow().timestamp * 1000, # unix timestamp ms 1, # open @@ -1224,7 +1224,7 @@ def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name): pair = 'ETH/BTC' async def mock_candle_hist(pair, timeframe, since_ms): - return pair, timeframe, tick + return pair, timeframe, ohlcv exchange._async_get_candle_history = Mock(wraps=mock_candle_hist) # one_call calculation * 1.8 should do 2 calls @@ -1232,12 +1232,12 @@ def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name): ret = exchange.get_historic_ohlcv(pair, "5m", int((arrow.utcnow().timestamp - since) * 1000)) assert exchange._async_get_candle_history.call_count == 2 - # Returns twice the above tick + # Returns twice the above OHLCV data assert len(ret) == 2 def test_refresh_latest_ohlcv(mocker, default_conf, caplog) -> None: - tick = [ + ohlcv = [ [ (arrow.utcnow().timestamp - 1) * 1000, # unix timestamp ms 1, # open @@ -1258,14 +1258,14 @@ def test_refresh_latest_ohlcv(mocker, default_conf, caplog) -> None: caplog.set_level(logging.DEBUG) exchange = get_patched_exchange(mocker, default_conf) - exchange._api_async.fetch_ohlcv = get_mock_coro(tick) + exchange._api_async.fetch_ohlcv = get_mock_coro(ohlcv) pairs = [('IOTA/ETH', '5m'), ('XRP/ETH', '5m')] # empty dicts assert not exchange._klines exchange.refresh_latest_ohlcv(pairs) - assert log_has(f'Refreshing ohlcv data for {len(pairs)} pairs', caplog) + assert log_has(f'Refreshing candle (OHLCV) data for {len(pairs)} pairs', caplog) assert exchange._klines assert exchange._api_async.fetch_ohlcv.call_count == 2 for pair in pairs: @@ -1283,14 +1283,15 @@ def test_refresh_latest_ohlcv(mocker, default_conf, caplog) -> None: exchange.refresh_latest_ohlcv([('IOTA/ETH', '5m'), ('XRP/ETH', '5m')]) assert exchange._api_async.fetch_ohlcv.call_count == 2 - assert log_has(f"Using cached ohlcv data for pair {pairs[0][0]}, timeframe {pairs[0][1]} ...", + assert log_has(f"Using cached candle (OHLCV) data for pair {pairs[0][0]}, " + f"timeframe {pairs[0][1]} ...", caplog) @pytest.mark.asyncio @pytest.mark.parametrize("exchange_name", EXCHANGES) async def test__async_get_candle_history(default_conf, mocker, caplog, exchange_name): - tick = [ + ohlcv = [ [ arrow.utcnow().timestamp * 1000, # unix timestamp ms 1, # open @@ -1304,7 +1305,7 @@ async def test__async_get_candle_history(default_conf, mocker, caplog, exchange_ caplog.set_level(logging.DEBUG) exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) # Monkey-patch async function - exchange._api_async.fetch_ohlcv = get_mock_coro(tick) + exchange._api_async.fetch_ohlcv = get_mock_coro(ohlcv) pair = 'ETH/BTC' res = await exchange._async_get_candle_history(pair, "5m") @@ -1312,9 +1313,9 @@ async def test__async_get_candle_history(default_conf, mocker, caplog, exchange_ assert len(res) == 3 assert res[0] == pair assert res[1] == "5m" - assert res[2] == tick + assert res[2] == ohlcv assert exchange._api_async.fetch_ohlcv.call_count == 1 - assert not log_has(f"Using cached ohlcv data for {pair} ...", caplog) + assert not log_has(f"Using cached candle (OHLCV) data for {pair} ...", caplog) # exchange = Exchange(default_conf) await async_ccxt_exception(mocker, default_conf, MagicMock(), @@ -1322,14 +1323,15 @@ async def test__async_get_candle_history(default_conf, mocker, caplog, exchange_ pair='ABCD/BTC', timeframe=default_conf['ticker_interval']) api_mock = MagicMock() - with pytest.raises(OperationalException, match=r'Could not fetch ticker data*'): + with pytest.raises(OperationalException, + match=r'Could not fetch historical candle \(OHLCV\) data.*'): api_mock.fetch_ohlcv = MagicMock(side_effect=ccxt.BaseError("Unknown error")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) await exchange._async_get_candle_history(pair, "5m", (arrow.utcnow().timestamp - 2000) * 1000) with pytest.raises(OperationalException, match=r'Exchange.* does not support fetching ' - r'historical candlestick data\..*'): + r'historical candle \(OHLCV\) data\..*'): api_mock.fetch_ohlcv = MagicMock(side_effect=ccxt.NotSupported("Not supported")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) await exchange._async_get_candle_history(pair, "5m", @@ -1339,7 +1341,7 @@ async def test__async_get_candle_history(default_conf, mocker, caplog, exchange_ @pytest.mark.asyncio async def test__async_get_candle_history_empty(default_conf, mocker, caplog): """ Test empty exchange result """ - tick = [] + ohlcv = [] caplog.set_level(logging.DEBUG) exchange = get_patched_exchange(mocker, default_conf) @@ -1353,7 +1355,7 @@ async def test__async_get_candle_history_empty(default_conf, mocker, caplog): assert len(res) == 3 assert res[0] == pair assert res[1] == "5m" - assert res[2] == tick + assert res[2] == ohlcv assert exchange._api_async.fetch_ohlcv.call_count == 1 @@ -1431,8 +1433,8 @@ async def test___async_get_candle_history_sort(default_conf, mocker, exchange_na return sorted(data, key=key) # GDAX use-case (real data from GDAX) - # This ticker history is ordered DESC (newest first, oldest last) - tick = [ + # This OHLCV data is ordered DESC (newest first, oldest last) + ohlcv = [ [1527833100000, 0.07666, 0.07671, 0.07666, 0.07668, 16.65244264], [1527832800000, 0.07662, 0.07666, 0.07662, 0.07666, 1.30051526], [1527832500000, 0.07656, 0.07661, 0.07656, 0.07661, 12.034778840000001], @@ -1445,31 +1447,31 @@ async def test___async_get_candle_history_sort(default_conf, mocker, exchange_na [1527830400000, 0.07649, 0.07651, 0.07649, 0.07651, 2.5734867] ] exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) - exchange._api_async.fetch_ohlcv = get_mock_coro(tick) + exchange._api_async.fetch_ohlcv = get_mock_coro(ohlcv) sort_mock = mocker.patch('freqtrade.exchange.exchange.sorted', MagicMock(side_effect=sort_data)) - # Test the ticker history sort + # Test the OHLCV data sort res = await exchange._async_get_candle_history('ETH/BTC', default_conf['ticker_interval']) assert res[0] == 'ETH/BTC' - ticks = res[2] + res_ohlcv = res[2] assert sort_mock.call_count == 1 - assert ticks[0][0] == 1527830400000 - assert ticks[0][1] == 0.07649 - assert ticks[0][2] == 0.07651 - assert ticks[0][3] == 0.07649 - assert ticks[0][4] == 0.07651 - assert ticks[0][5] == 2.5734867 + assert res_ohlcv[0][0] == 1527830400000 + assert res_ohlcv[0][1] == 0.07649 + assert res_ohlcv[0][2] == 0.07651 + assert res_ohlcv[0][3] == 0.07649 + assert res_ohlcv[0][4] == 0.07651 + assert res_ohlcv[0][5] == 2.5734867 - assert ticks[9][0] == 1527833100000 - assert ticks[9][1] == 0.07666 - assert ticks[9][2] == 0.07671 - assert ticks[9][3] == 0.07666 - assert ticks[9][4] == 0.07668 - assert ticks[9][5] == 16.65244264 + assert res_ohlcv[9][0] == 1527833100000 + assert res_ohlcv[9][1] == 0.07666 + assert res_ohlcv[9][2] == 0.07671 + assert res_ohlcv[9][3] == 0.07666 + assert res_ohlcv[9][4] == 0.07668 + assert res_ohlcv[9][5] == 16.65244264 # Bittrex use-case (real data from Bittrex) - # This ticker history is ordered ASC (oldest first, newest last) - tick = [ + # This OHLCV data is ordered ASC (oldest first, newest last) + ohlcv = [ [1527827700000, 0.07659999, 0.0766, 0.07627, 0.07657998, 1.85216924], [1527828000000, 0.07657995, 0.07657995, 0.0763, 0.0763, 26.04051037], [1527828300000, 0.0763, 0.07659998, 0.0763, 0.0764, 10.36434124], @@ -1481,29 +1483,29 @@ async def test___async_get_candle_history_sort(default_conf, mocker, exchange_na [1527830100000, 0.076695, 0.07671, 0.07624171, 0.07671, 1.80689244], [1527830400000, 0.07671, 0.07674399, 0.07629216, 0.07655213, 2.31452783] ] - exchange._api_async.fetch_ohlcv = get_mock_coro(tick) + exchange._api_async.fetch_ohlcv = get_mock_coro(ohlcv) # Reset sort mock sort_mock = mocker.patch('freqtrade.exchange.sorted', MagicMock(side_effect=sort_data)) - # Test the ticker history sort + # Test the OHLCV data sort res = await exchange._async_get_candle_history('ETH/BTC', default_conf['ticker_interval']) assert res[0] == 'ETH/BTC' assert res[1] == default_conf['ticker_interval'] - ticks = res[2] + res_ohlcv = res[2] # Sorted not called again - data is already in order assert sort_mock.call_count == 0 - assert ticks[0][0] == 1527827700000 - assert ticks[0][1] == 0.07659999 - assert ticks[0][2] == 0.0766 - assert ticks[0][3] == 0.07627 - assert ticks[0][4] == 0.07657998 - assert ticks[0][5] == 1.85216924 + assert res_ohlcv[0][0] == 1527827700000 + assert res_ohlcv[0][1] == 0.07659999 + assert res_ohlcv[0][2] == 0.0766 + assert res_ohlcv[0][3] == 0.07627 + assert res_ohlcv[0][4] == 0.07657998 + assert res_ohlcv[0][5] == 1.85216924 - assert ticks[9][0] == 1527830400000 - assert ticks[9][1] == 0.07671 - assert ticks[9][2] == 0.07674399 - assert ticks[9][3] == 0.07629216 - assert ticks[9][4] == 0.07655213 - assert ticks[9][5] == 2.31452783 + assert res_ohlcv[9][0] == 1527830400000 + assert res_ohlcv[9][1] == 0.07671 + assert res_ohlcv[9][2] == 0.07674399 + assert res_ohlcv[9][3] == 0.07629216 + assert res_ohlcv[9][4] == 0.07655213 + assert res_ohlcv[9][5] == 2.31452783 @pytest.mark.asyncio diff --git a/tests/optimize/__init__.py b/tests/optimize/__init__.py index 13605a38c..8bc66f02c 100644 --- a/tests/optimize/__init__.py +++ b/tests/optimize/__init__.py @@ -6,7 +6,7 @@ from pandas import DataFrame from freqtrade.exchange import timeframe_to_minutes from freqtrade.strategy.interface import SellType -ticker_start_time = arrow.get(2018, 10, 3) +tests_start_time = arrow.get(2018, 10, 3) tests_timeframe = '1h' @@ -36,14 +36,14 @@ class BTContainer(NamedTuple): def _get_frame_time_from_offset(offset): - return ticker_start_time.shift(minutes=(offset * timeframe_to_minutes(tests_timeframe)) - ).datetime + minutes = offset * timeframe_to_minutes(tests_timeframe) + return tests_start_time.shift(minutes=minutes).datetime -def _build_backtest_dataframe(ticker_with_signals): +def _build_backtest_dataframe(data): columns = ['date', 'open', 'high', 'low', 'close', 'volume', 'buy', 'sell'] - frame = DataFrame.from_records(ticker_with_signals, columns=columns) + frame = DataFrame.from_records(data, columns=columns) frame['date'] = frame['date'].apply(_get_frame_time_from_offset) # Ensure floats are in place for column in ['open', 'high', 'low', 'close', 'volume']: diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 96855dc9d..1b6e23ffa 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -84,7 +84,7 @@ def simple_backtest(config, contour, num_results, mocker, testdatadir) -> None: backtesting = Backtesting(config) data = load_data_test(contour, testdatadir) - processed = backtesting.strategy.tickerdata_to_dataframe(data) + processed = backtesting.strategy.ohlcvdata_to_dataframe(data) min_date, max_date = get_timerange(processed) assert isinstance(processed, dict) results = backtesting.backtest( @@ -105,7 +105,7 @@ def _make_backtest_conf(mocker, datadir, conf=None, pair='UNITTEST/BTC'): data = trim_dictlist(data, -201) patch_exchange(mocker) backtesting = Backtesting(conf) - processed = backtesting.strategy.tickerdata_to_dataframe(data) + processed = backtesting.strategy.ohlcvdata_to_dataframe(data) min_date, max_date = get_timerange(processed) return { 'processed': processed, @@ -275,7 +275,7 @@ def test_backtesting_init(mocker, default_conf, order_types) -> None: backtesting = Backtesting(default_conf) assert backtesting.config == default_conf assert backtesting.timeframe == '5m' - assert callable(backtesting.strategy.tickerdata_to_dataframe) + assert callable(backtesting.strategy.ohlcvdata_to_dataframe) assert callable(backtesting.strategy.advise_buy) assert callable(backtesting.strategy.advise_sell) assert isinstance(backtesting.strategy.dp, DataProvider) @@ -297,7 +297,7 @@ def test_backtesting_init_no_ticker_interval(mocker, default_conf, caplog) -> No "or as cli argument `--ticker-interval 5m`", caplog) -def test_tickerdata_with_fee(default_conf, mocker, testdatadir) -> None: +def test_data_with_fee(default_conf, mocker, testdatadir) -> None: patch_exchange(mocker) default_conf['fee'] = 0.1234 @@ -307,21 +307,21 @@ def test_tickerdata_with_fee(default_conf, mocker, testdatadir) -> None: assert fee_mock.call_count == 0 -def test_tickerdata_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: +def test_data_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: patch_exchange(mocker) timerange = TimeRange.parse_timerange('1510694220-1510700340') - tickerlist = history.load_data(testdatadir, '1m', ['UNITTEST/BTC'], timerange=timerange, - fill_up_missing=True) + data = history.load_data(testdatadir, '1m', ['UNITTEST/BTC'], timerange=timerange, + fill_up_missing=True) backtesting = Backtesting(default_conf) - data = backtesting.strategy.tickerdata_to_dataframe(tickerlist) - assert len(data['UNITTEST/BTC']) == 102 + processed = backtesting.strategy.ohlcvdata_to_dataframe(data) + assert len(processed['UNITTEST/BTC']) == 102 # Load strategy to compare the result between Backtesting function and strategy are the same default_conf.update({'strategy': 'DefaultStrategy'}) strategy = StrategyResolver.load_strategy(default_conf) - data2 = strategy.tickerdata_to_dataframe(tickerlist) - assert data['UNITTEST/BTC'].equals(data2['UNITTEST/BTC']) + processed2 = strategy.ohlcvdata_to_dataframe(data) + assert processed['UNITTEST/BTC'].equals(processed2['UNITTEST/BTC']) def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: @@ -329,7 +329,6 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: return Arrow(2017, 11, 14, 21, 17), Arrow(2017, 11, 14, 22, 59) mocker.patch('freqtrade.data.history.get_timerange', get_timerange) - mocker.patch('freqtrade.exchange.Exchange.refresh_latest_ohlcv', MagicMock()) patch_exchange(mocker) mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', MagicMock()) mocker.patch('freqtrade.optimize.backtesting.generate_text_table', MagicMock(return_value=1)) @@ -360,7 +359,6 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> mocker.patch('freqtrade.data.history.history_utils.load_pair_history', MagicMock(return_value=pd.DataFrame())) mocker.patch('freqtrade.data.history.get_timerange', get_timerange) - mocker.patch('freqtrade.exchange.Exchange.refresh_latest_ohlcv', MagicMock()) patch_exchange(mocker) mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', MagicMock()) mocker.patch('freqtrade.optimize.backtesting.generate_text_table', MagicMock(return_value=1)) @@ -385,10 +383,10 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: timerange = TimeRange('date', None, 1517227800, 0) data = history.load_data(datadir=testdatadir, timeframe='5m', pairs=['UNITTEST/BTC'], timerange=timerange) - data_processed = backtesting.strategy.tickerdata_to_dataframe(data) - min_date, max_date = get_timerange(data_processed) + processed = backtesting.strategy.ohlcvdata_to_dataframe(data) + min_date, max_date = get_timerange(processed) results = backtesting.backtest( - processed=data_processed, + processed=processed, stake_amount=default_conf['stake_amount'], start_date=min_date, end_date=max_date, @@ -416,7 +414,7 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: 'sell_reason': [SellType.ROI, SellType.ROI] }) pd.testing.assert_frame_equal(results, expected) - data_pair = data_processed[pair] + data_pair = processed[pair] for _, t in results.iterrows(): ln = data_pair.loc[data_pair["date"] == t["open_time"]] # Check open trade rate alignes to open rate @@ -439,7 +437,7 @@ def test_backtest_1min_ticker_interval(default_conf, fee, mocker, testdatadir) - timerange = TimeRange.parse_timerange('1510688220-1510700340') data = history.load_data(datadir=testdatadir, timeframe='1m', pairs=['UNITTEST/BTC'], timerange=timerange) - processed = backtesting.strategy.tickerdata_to_dataframe(data) + processed = backtesting.strategy.ohlcvdata_to_dataframe(data) min_date, max_date = get_timerange(processed) results = backtesting.backtest( processed=processed, @@ -458,7 +456,7 @@ def test_processed(default_conf, mocker, testdatadir) -> None: backtesting = Backtesting(default_conf) dict_of_tickerrows = load_data_test('raise', testdatadir) - dataframes = backtesting.strategy.tickerdata_to_dataframe(dict_of_tickerrows) + dataframes = backtesting.strategy.ohlcvdata_to_dataframe(dict_of_tickerrows) dataframe = dataframes['UNITTEST/BTC'] cols = dataframe.columns # assert the dataframe got some of the indicator columns @@ -557,10 +555,10 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) backtesting.strategy.advise_buy = _trend_alternate_hold # Override backtesting.strategy.advise_sell = _trend_alternate_hold # Override - data_processed = backtesting.strategy.tickerdata_to_dataframe(data) - min_date, max_date = get_timerange(data_processed) + processed = backtesting.strategy.ohlcvdata_to_dataframe(data) + min_date, max_date = get_timerange(processed) backtest_conf = { - 'processed': data_processed, + 'processed': processed, 'stake_amount': default_conf['stake_amount'], 'start_date': min_date, 'end_date': max_date, @@ -576,7 +574,7 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) assert len(evaluate_result_multi(results, '5m', 3)) == 0 backtest_conf = { - 'processed': data_processed, + 'processed': processed, 'stake_amount': default_conf['stake_amount'], 'start_date': min_date, 'end_date': max_date, diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 0406157f6..eefc6b28a 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -524,7 +524,7 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: }]) ) patch_exchange(mocker) - # Co-test loading ticker-interval from strategy + # Co-test loading timeframe from strategy del default_conf['ticker_interval'] default_conf.update({'config': 'config.json.example', 'hyperopt': 'DefaultHyperOpt', @@ -534,7 +534,7 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: 'hyperopt_jobs': 1, }) hyperopt = Hyperopt(default_conf) - hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock() hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) hyperopt.start() @@ -544,7 +544,7 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: out, err = capsys.readouterr() assert 'Best result:\n\n* 1/1: foo result Objective: 1.00000\n' in out assert dumper.called - # Should be called twice, once for tickerdata, once to save evaluations + # Should be called twice, once for historical candle data, once to save evaluations assert dumper.call_count == 2 assert hasattr(hyperopt.backtesting.strategy, "advise_sell") assert hasattr(hyperopt.backtesting.strategy, "advise_buy") @@ -630,8 +630,8 @@ def test_has_space(hyperopt, spaces, expected_results): def test_populate_indicators(hyperopt, testdatadir) -> None: - tickerlist = load_data(testdatadir, '1m', ['UNITTEST/BTC'], fill_up_missing=True) - dataframes = hyperopt.backtesting.strategy.tickerdata_to_dataframe(tickerlist) + data = load_data(testdatadir, '1m', ['UNITTEST/BTC'], fill_up_missing=True) + dataframes = hyperopt.backtesting.strategy.ohlcvdata_to_dataframe(data) dataframe = hyperopt.custom_hyperopt.populate_indicators(dataframes['UNITTEST/BTC'], {'pair': 'UNITTEST/BTC'}) @@ -642,8 +642,8 @@ def test_populate_indicators(hyperopt, testdatadir) -> None: def test_buy_strategy_generator(hyperopt, testdatadir) -> None: - tickerlist = load_data(testdatadir, '1m', ['UNITTEST/BTC'], fill_up_missing=True) - dataframes = hyperopt.backtesting.strategy.tickerdata_to_dataframe(tickerlist) + data = load_data(testdatadir, '1m', ['UNITTEST/BTC'], fill_up_missing=True) + dataframes = hyperopt.backtesting.strategy.ohlcvdata_to_dataframe(data) dataframe = hyperopt.custom_hyperopt.populate_indicators(dataframes['UNITTEST/BTC'], {'pair': 'UNITTEST/BTC'}) @@ -783,7 +783,7 @@ def test_clean_hyperopt(mocker, default_conf, caplog): h = Hyperopt(default_conf) assert unlinkmock.call_count == 2 - assert log_has(f"Removing `{h.tickerdata_pickle}`.", caplog) + assert log_has(f"Removing `{h.data_pickle_file}`.", caplog) def test_continue_hyperopt(mocker, default_conf, caplog): @@ -845,7 +845,7 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: }) hyperopt = Hyperopt(default_conf) - hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock() hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) hyperopt.start() @@ -859,7 +859,7 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: ) assert result_str in out # noqa: E501 assert dumper.called - # Should be called twice, once for tickerdata, once to save evaluations + # Should be called twice, once for historical candle data, once to save evaluations assert dumper.call_count == 2 @@ -903,7 +903,7 @@ def test_print_json_spaces_default(mocker, default_conf, caplog, capsys) -> None }) hyperopt = Hyperopt(default_conf) - hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock() hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) hyperopt.start() @@ -913,7 +913,7 @@ def test_print_json_spaces_default(mocker, default_conf, caplog, capsys) -> None out, err = capsys.readouterr() assert '{"params":{"mfi-value":null,"sell-mfi-value":null},"minimal_roi":{},"stoploss":null}' in out # noqa: E501 assert dumper.called - # Should be called twice, once for tickerdata, once to save evaluations + # Should be called twice, once for historical candle data, once to save evaluations assert dumper.call_count == 2 @@ -953,7 +953,7 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> }) hyperopt = Hyperopt(default_conf) - hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock() hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) hyperopt.start() @@ -963,7 +963,7 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> out, err = capsys.readouterr() assert '{"minimal_roi":{},"stoploss":null}' in out assert dumper.called - # Should be called twice, once for tickerdata, once to save evaluations + # Should be called twice, once for historical candle data, once to save evaluations assert dumper.call_count == 2 @@ -1000,7 +1000,7 @@ def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys) 'hyperopt_jobs': 1, }) hyperopt = Hyperopt(default_conf) - hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock() hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) del hyperopt.custom_hyperopt.__class__.buy_strategy_generator @@ -1015,7 +1015,7 @@ def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys) out, err = capsys.readouterr() assert 'Best result:\n\n* 1/1: foo result Objective: 1.00000\n' in out assert dumper.called - # Should be called twice, once for tickerdata, once to save evaluations + # Should be called twice, once for historical candle data, once to save evaluations assert dumper.call_count == 2 assert hasattr(hyperopt.backtesting.strategy, "advise_sell") assert hasattr(hyperopt.backtesting.strategy, "advise_buy") @@ -1043,7 +1043,7 @@ def test_simplified_interface_all_failed(mocker, default_conf, caplog, capsys) - 'hyperopt_jobs': 1, }) hyperopt = Hyperopt(default_conf) - hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock() hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) del hyperopt.custom_hyperopt.__class__.buy_strategy_generator @@ -1088,7 +1088,7 @@ def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None: 'hyperopt_jobs': 1, }) hyperopt = Hyperopt(default_conf) - hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock() hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) # TODO: sell_strategy_generator() is actually not called because @@ -1103,7 +1103,7 @@ def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None: out, err = capsys.readouterr() assert 'Best result:\n\n* 1/1: foo result Objective: 1.00000\n' in out assert dumper.called - # Should be called twice, once for tickerdata, once to save evaluations + # Should be called twice, once for historical candle data, once to save evaluations assert dumper.call_count == 2 assert hasattr(hyperopt.backtesting.strategy, "advise_sell") assert hasattr(hyperopt.backtesting.strategy, "advise_buy") @@ -1145,7 +1145,7 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None 'hyperopt_jobs': 1, }) hyperopt = Hyperopt(default_conf) - hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock() hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) # TODO: buy_strategy_generator() is actually not called because @@ -1160,7 +1160,7 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None out, err = capsys.readouterr() assert 'Best result:\n\n* 1/1: foo result Objective: 1.00000\n' in out assert dumper.called - # Should be called twice, once for tickerdata, once to save evaluations + # Should be called twice, once for historical candle data, once to save evaluations assert dumper.call_count == 2 assert hasattr(hyperopt.backtesting.strategy, "advise_sell") assert hasattr(hyperopt.backtesting.strategy, "advise_buy") @@ -1194,7 +1194,7 @@ def test_simplified_interface_failed(mocker, default_conf, caplog, capsys, metho 'hyperopt_jobs': 1, }) hyperopt = Hyperopt(default_conf) - hyperopt.backtesting.strategy.tickerdata_to_dataframe = MagicMock() + hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock() hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={}) delattr(hyperopt.custom_hyperopt.__class__, method) diff --git a/tests/strategy/strats/default_strategy.py b/tests/strategy/strats/default_strategy.py index 6c343b477..7ea55d3f9 100644 --- a/tests/strategy/strats/default_strategy.py +++ b/tests/strategy/strats/default_strategy.py @@ -68,7 +68,7 @@ class DefaultStrategy(IStrategy): Performance Note: For the best performance be frugal on the number of indicators you are using. Let uncomment only the indicator you are using in your strategies or your hyperopt configuration, otherwise you will waste your memory and CPU usage. - :param dataframe: Raw data from the exchange and parsed by parse_ticker_dataframe() + :param dataframe: Dataframe with data from the exchange :param metadata: Additional information, like the currently traded pair :return: a Dataframe with all mandatory indicators for the strategies """ diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 86d0738c6..949dda4a0 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -17,69 +17,69 @@ from tests.conftest import get_patched_exchange, log_has _STRATEGY = DefaultStrategy(config={}) -def test_returns_latest_buy_signal(mocker, default_conf, ticker_history): +def test_returns_latest_buy_signal(mocker, default_conf, ohlcv_history): mocker.patch.object( _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame([{'buy': 1, 'sell': 0, 'date': arrow.utcnow()}]) ) - assert _STRATEGY.get_signal('ETH/BTC', '5m', ticker_history) == (True, False) + assert _STRATEGY.get_signal('ETH/BTC', '5m', ohlcv_history) == (True, False) mocker.patch.object( _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame([{'buy': 0, 'sell': 1, 'date': arrow.utcnow()}]) ) - assert _STRATEGY.get_signal('ETH/BTC', '5m', ticker_history) == (False, True) + assert _STRATEGY.get_signal('ETH/BTC', '5m', ohlcv_history) == (False, True) -def test_returns_latest_sell_signal(mocker, default_conf, ticker_history): +def test_returns_latest_sell_signal(mocker, default_conf, ohlcv_history): mocker.patch.object( _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame([{'sell': 1, 'buy': 0, 'date': arrow.utcnow()}]) ) - assert _STRATEGY.get_signal('ETH/BTC', '5m', ticker_history) == (False, True) + assert _STRATEGY.get_signal('ETH/BTC', '5m', ohlcv_history) == (False, True) mocker.patch.object( _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame([{'sell': 0, 'buy': 1, 'date': arrow.utcnow()}]) ) - assert _STRATEGY.get_signal('ETH/BTC', '5m', ticker_history) == (True, False) + assert _STRATEGY.get_signal('ETH/BTC', '5m', ohlcv_history) == (True, False) def test_get_signal_empty(default_conf, mocker, caplog): assert (False, False) == _STRATEGY.get_signal('foo', default_conf['ticker_interval'], DataFrame()) - assert log_has('Empty ticker history for pair foo', caplog) + assert log_has('Empty candle (OHLCV) data for pair foo', caplog) caplog.clear() assert (False, False) == _STRATEGY.get_signal('bar', default_conf['ticker_interval'], []) - assert log_has('Empty ticker history for pair bar', caplog) + assert log_has('Empty candle (OHLCV) data for pair bar', caplog) -def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ticker_history): +def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ohlcv_history): caplog.set_level(logging.INFO) mocker.patch.object( _STRATEGY, '_analyze_ticker_internal', side_effect=ValueError('xyz') ) assert (False, False) == _STRATEGY.get_signal('foo', default_conf['ticker_interval'], - ticker_history) - assert log_has('Unable to analyze ticker for pair foo: xyz', caplog) + ohlcv_history) + assert log_has('Unable to analyze candle (OHLCV) data for pair foo: xyz', caplog) -def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ticker_history): +def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ohlcv_history): caplog.set_level(logging.INFO) mocker.patch.object( _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame([]) ) assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], - ticker_history) + ohlcv_history) assert log_has('Empty dataframe for pair xyz', caplog) -def test_get_signal_old_dataframe(default_conf, mocker, caplog, ticker_history): +def test_get_signal_old_dataframe(default_conf, mocker, caplog, ohlcv_history): caplog.set_level(logging.INFO) # default_conf defines a 5m interval. we check interval * 2 + 5m # this is necessary as the last candle is removed (partial candles) by default @@ -90,7 +90,7 @@ def test_get_signal_old_dataframe(default_conf, mocker, caplog, ticker_history): return_value=DataFrame(ticks) ) assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], - ticker_history) + ohlcv_history) assert log_has('Outdated history for pair xyz. Last tick is 16 minutes old', caplog) @@ -103,15 +103,15 @@ def test_get_signal_handles_exceptions(mocker, default_conf): assert _STRATEGY.get_signal(exchange, 'ETH/BTC', '5m') == (False, False) -def test_tickerdata_to_dataframe(default_conf, testdatadir) -> None: +def test_ohlcvdata_to_dataframe(default_conf, testdatadir) -> None: default_conf.update({'strategy': 'DefaultStrategy'}) strategy = StrategyResolver.load_strategy(default_conf) timerange = TimeRange.parse_timerange('1510694220-1510700340') - tickerlist = load_data(testdatadir, '1m', ['UNITTEST/BTC'], timerange=timerange, - fill_up_missing=True) - data = strategy.tickerdata_to_dataframe(tickerlist) - assert len(data['UNITTEST/BTC']) == 102 # partial candle was removed + data = load_data(testdatadir, '1m', ['UNITTEST/BTC'], timerange=timerange, + fill_up_missing=True) + processed = strategy.ohlcvdata_to_dataframe(data) + assert len(processed['UNITTEST/BTC']) == 102 # partial candle was removed def test_min_roi_reached(default_conf, fee) -> None: @@ -222,7 +222,7 @@ def test_min_roi_reached3(default_conf, fee) -> None: assert strategy.min_roi_reached(trade, 0.31, arrow.utcnow().shift(minutes=-2).datetime) -def test_analyze_ticker_default(ticker_history, mocker, caplog) -> None: +def test_analyze_ticker_default(ohlcv_history, mocker, caplog) -> None: caplog.set_level(logging.DEBUG) ind_mock = MagicMock(side_effect=lambda x, meta: x) buy_mock = MagicMock(side_effect=lambda x, meta: x) @@ -235,7 +235,7 @@ def test_analyze_ticker_default(ticker_history, mocker, caplog) -> None: ) strategy = DefaultStrategy({}) - strategy.analyze_ticker(ticker_history, {'pair': 'ETH/BTC'}) + strategy.analyze_ticker(ohlcv_history, {'pair': 'ETH/BTC'}) assert ind_mock.call_count == 1 assert buy_mock.call_count == 1 assert buy_mock.call_count == 1 @@ -244,7 +244,7 @@ def test_analyze_ticker_default(ticker_history, mocker, caplog) -> None: assert not log_has('Skipping TA Analysis for already analyzed candle', caplog) caplog.clear() - strategy.analyze_ticker(ticker_history, {'pair': 'ETH/BTC'}) + strategy.analyze_ticker(ohlcv_history, {'pair': 'ETH/BTC'}) # No analysis happens as process_only_new_candles is true assert ind_mock.call_count == 2 assert buy_mock.call_count == 2 @@ -253,7 +253,7 @@ def test_analyze_ticker_default(ticker_history, mocker, caplog) -> None: assert not log_has('Skipping TA Analysis for already analyzed candle', caplog) -def test__analyze_ticker_internal_skip_analyze(ticker_history, mocker, caplog) -> None: +def test__analyze_ticker_internal_skip_analyze(ohlcv_history, mocker, caplog) -> None: caplog.set_level(logging.DEBUG) ind_mock = MagicMock(side_effect=lambda x, meta: x) buy_mock = MagicMock(side_effect=lambda x, meta: x) @@ -268,7 +268,7 @@ def test__analyze_ticker_internal_skip_analyze(ticker_history, mocker, caplog) - strategy = DefaultStrategy({}) strategy.process_only_new_candles = True - ret = strategy._analyze_ticker_internal(ticker_history, {'pair': 'ETH/BTC'}) + ret = strategy._analyze_ticker_internal(ohlcv_history, {'pair': 'ETH/BTC'}) assert 'high' in ret.columns assert 'low' in ret.columns assert 'close' in ret.columns @@ -280,7 +280,7 @@ def test__analyze_ticker_internal_skip_analyze(ticker_history, mocker, caplog) - assert not log_has('Skipping TA Analysis for already analyzed candle', caplog) caplog.clear() - ret = strategy._analyze_ticker_internal(ticker_history, {'pair': 'ETH/BTC'}) + ret = strategy._analyze_ticker_internal(ohlcv_history, {'pair': 'ETH/BTC'}) # No analysis happens as process_only_new_candles is true assert ind_mock.call_count == 1 assert buy_mock.call_count == 1 diff --git a/tests/test_misc.py b/tests/test_misc.py index 83e008466..c1e23926b 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -6,7 +6,7 @@ from unittest.mock import MagicMock import pytest -from freqtrade.data.converter import parse_ticker_dataframe +from freqtrade.data.converter import ohlcv_to_dataframe from freqtrade.misc import (datesarray_to_datetimearray, file_dump_json, file_load_json, format_ms_time, pair_to_filename, plural, shorten_date) @@ -18,9 +18,9 @@ def test_shorten_date() -> None: assert shorten_date(str_data) == str_shorten_data -def test_datesarray_to_datetimearray(ticker_history_list): - dataframes = parse_ticker_dataframe(ticker_history_list, "5m", pair="UNITTEST/BTC", - fill_missing=True) +def test_datesarray_to_datetimearray(ohlcv_history_list): + dataframes = ohlcv_to_dataframe(ohlcv_history_list, "5m", pair="UNITTEST/BTC", + fill_missing=True) dates = datesarray_to_datetimearray(dataframes['date']) assert isinstance(dates[0], datetime.datetime) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index dd04035b7..42010ad0d 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -51,15 +51,15 @@ def test_init_plotscript(default_conf, mocker, testdatadir): default_conf["datadir"] = testdatadir default_conf['exportfilename'] = str(testdatadir / "backtest-result_test.json") ret = init_plotscript(default_conf) - assert "tickers" in ret + assert "ohlcv" in ret assert "trades" in ret assert "pairs" in ret default_conf['pairs'] = ["TRX/BTC", "ADA/BTC"] ret = init_plotscript(default_conf) - assert "tickers" in ret - assert "TRX/BTC" in ret["tickers"] - assert "ADA/BTC" in ret["tickers"] + assert "ohlcv" in ret + assert "TRX/BTC" in ret["ohlcv"] + assert "ADA/BTC" in ret["ohlcv"] def test_add_indicators(default_conf, testdatadir, caplog): @@ -269,14 +269,14 @@ def test_generate_profit_graph(testdatadir): pairs = ["TRX/BTC", "ADA/BTC"] trades = trades[trades['close_time'] < pd.Timestamp('2018-01-12', tz='UTC')] - tickers = history.load_data(datadir=testdatadir, - pairs=pairs, - timeframe='5m', - timerange=timerange - ) + data = history.load_data(datadir=testdatadir, + pairs=pairs, + timeframe='5m', + timerange=timerange) + trades = trades[trades['pair'].isin(pairs)] - fig = generate_profit_graph(pairs, tickers, trades, timeframe="5m") + fig = generate_profit_graph(pairs, data, trades, timeframe="5m") assert isinstance(fig, go.Figure) assert fig.layout.title.text == "Freqtrade Profit plot" From 4ad93ed6bbe2f9f5b653552d05f7d9b73fb9a30c Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 8 Mar 2020 22:41:05 +0100 Subject: [PATCH 1940/3421] Changed output for null columns --- freqtrade/optimize/hyperopt.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index d397c720c..f0c992760 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -420,19 +420,19 @@ class Hyperopt: trials['Trades'] = trials['Trades'].astype(str) trials['Total profit'] = trials['Total profit'].apply( - lambda x: '{:,.8f}'.format(x) if x != 0.0 else "--" + lambda x: '{:,.8f}'.format(x) if x != 0.0 else "" ) trials['Profit'] = trials['Profit'].apply( - lambda x: '{:,.2f}'.format(x) if not isna(x) else "--" + lambda x: '{:,.2f}'.format(x) if not isna(x) else "" ) trials['Avg profit'] = trials['Avg profit'].apply( - lambda x: ('{:,.2f}%'.format(x)) if not isna(x) else "--" + lambda x: ('{:,.2f}%'.format(x)) if not isna(x) else "" ) trials['Avg duration'] = trials['Avg duration'].apply( - lambda x: ('{:,.1f} m'.format(x)) if not isna(x) else "--" + lambda x: ('{:,.1f} m'.format(x)) if not isna(x) else "" ) trials['Objective'] = trials['Objective'].apply( - lambda x: '{:,.5f}'.format(x) if x != 100000 else "N/A" + lambda x: '{:,.5f}'.format(x) if x != 100000 else "" ) trials = trials.drop(columns=['is_initial_point', 'is_best', 'is_profit']) From cb419614cd10ae7e4fb063e4bc2b28c795a0ce31 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 8 Mar 2020 23:00:21 +0100 Subject: [PATCH 1941/3421] Spelling miss --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index f0c992760..d12e9cd45 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -392,7 +392,7 @@ class Hyperopt: if not results: return - # Verification for owerwrite + # Verification for overwrite if not overwrite and path.isfile(csv_file): logging.error("CSV-File already exists and no overwrite specified!") return From c7b2f173ebcade7092be49f4d2aa87ec19745768 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2020 08:32:42 +0000 Subject: [PATCH 1942/3421] Bump wrapt from 1.12.0 to 1.12.1 Bumps [wrapt](https://github.com/GrahamDumpleton/wrapt) from 1.12.0 to 1.12.1. - [Release notes](https://github.com/GrahamDumpleton/wrapt/releases) - [Changelog](https://github.com/GrahamDumpleton/wrapt/blob/develop/docs/changes.rst) - [Commits](https://github.com/GrahamDumpleton/wrapt/compare/1.12.0...1.12.1) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index a844e81bc..e44881041 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -7,7 +7,7 @@ arrow==0.15.5 cachetools==4.0.0 requests==2.23.0 urllib3==1.25.8 -wrapt==1.12.0 +wrapt==1.12.1 jsonschema==3.2.0 TA-Lib==0.4.17 tabulate==0.8.6 From 09c25faa51a68ab7c0e42795bc809b0da135782a Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2020 08:33:37 +0000 Subject: [PATCH 1943/3421] Bump ccxt from 1.23.30 to 1.23.81 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.23.30 to 1.23.81. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md) - [Commits](https://github.com/ccxt/ccxt/compare/1.23.30...1.23.81) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index a844e81bc..f64644db9 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.23.30 +ccxt==1.23.81 SQLAlchemy==1.3.13 python-telegram-bot==12.4.2 arrow==0.15.5 From 46763e148b6ccec222d849467f0cabb60f900f7e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2020 08:33:59 +0000 Subject: [PATCH 1944/3421] Bump prompt-toolkit from 3.0.3 to 3.0.4 Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.3 to 3.0.4. - [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases) - [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG) - [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.3...3.0.4) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index a844e81bc..ec12f1c65 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -30,4 +30,4 @@ flask==1.1.1 colorama==0.4.3 # Building config files interactively questionary==1.5.1 -prompt-toolkit==3.0.3 +prompt-toolkit==3.0.4 From 23127b8da08ab45641a955dc94b58bfec582d38d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2020 08:34:33 +0000 Subject: [PATCH 1945/3421] Bump scikit-learn from 0.22.2 to 0.22.2.post1 Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.22.2 to 0.22.2.post1. - [Release notes](https://github.com/scikit-learn/scikit-learn/releases) - [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.22.2...0.22.2.post1) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index c713317ec..c7e586a33 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -3,7 +3,7 @@ # Required for hyperopt scipy==1.4.1 -scikit-learn==0.22.2 +scikit-learn==0.22.2.post1 scikit-optimize==0.7.4 filelock==3.0.12 joblib==0.14.1 From 4cc0d3dbc42600136a7539e7f523a31f375683c9 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2020 08:35:16 +0000 Subject: [PATCH 1946/3421] Bump plotly from 4.5.2 to 4.5.3 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.5.2 to 4.5.3. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.5.2...v4.5.3) Signed-off-by: dependabot-preview[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index a70c3e0cf..381334a66 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.5.2 +plotly==4.5.3 From 5cbf325fda4f0a3d9bb6032122aa56d085118d83 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 9 Mar 2020 11:30:13 +0100 Subject: [PATCH 1947/3421] Allow different loglevels for message --- freqtrade/pairlist/IPairList.py | 24 ++++++++++++++++++++---- freqtrade/pairlist/VolumePairList.py | 2 +- freqtrade/pairlist/pairlistmanager.py | 2 +- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index d45a329dd..f591fa8da 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -67,21 +67,37 @@ class IPairList(ABC): """ @staticmethod - def verify_blacklist(pairlist: List[str], blacklist: List[str]) -> List[str]: + def verify_blacklist(pairlist: List[str], blacklist: List[str], + aswarning: bool) -> List[str]: """ Verify and remove items from pairlist - returning a filtered pairlist. + Logs a warning or info depending on `aswarning`. + Pairlists explicitly using this method shall use `aswarning=False`! + :param pairlist: Pairlist to validate + :param blacklist: Blacklist to validate pairlist against + :param aswarning: Log message as Warning or info + :return: pairlist - blacklisted pairs """ for pair in deepcopy(pairlist): if pair in blacklist: - logger.warning(f"Pair {pair} in your blacklist. Removing it from whitelist...") + if aswarning: + logger.warning(f"Pair {pair} in your blacklist. Removing it from whitelist...") + else: + logger.info(f"Pair {pair} in your blacklist. Removing it from whitelist...") pairlist.remove(pair) return pairlist - def _verify_blacklist(self, pairlist: List[str]) -> List[str]: + def _verify_blacklist(self, pairlist: List[str], aswarning: bool = True) -> List[str]: """ Proxy method to verify_blacklist for easy access for child classes. + Logs a warning or info depending on `aswarning`. + Pairlists explicitly using this method shall use aswarning=False! + :param pairlist: Pairlist to validate + :param aswarning: Log message as Warning or info. + :return: pairlist - blacklisted pairs """ - return IPairList.verify_blacklist(pairlist, self._pairlistmanager.blacklist) + return IPairList.verify_blacklist(pairlist, self._pairlistmanager.blacklist, + aswarning=aswarning) def _whitelist_for_active_markets(self, pairlist: List[str]) -> List[str]: """ diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index d067d5e8a..9ce2adc9e 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -106,7 +106,7 @@ class VolumePairList(IPairList): # Validate whitelist to only have active market pairs pairs = self._whitelist_for_active_markets([s['symbol'] for s in sorted_tickers]) - pairs = self._verify_blacklist(pairs) + pairs = self._verify_blacklist(pairs, aswarning=False) # Limit to X number of pairs pairs = pairs[:self._number_pairs] logger.info(f"Searching {self._number_pairs} pairs: {pairs}") diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 55828c6ef..5b4c5b602 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -91,6 +91,6 @@ class PairListManager(): pairlist = pl.filter_pairlist(pairlist, tickers) # Validation against blacklist happens after the pairlists to ensure blacklist is respected. - pairlist = IPairList.verify_blacklist(pairlist, self.blacklist) + pairlist = IPairList.verify_blacklist(pairlist, self.blacklist, True) self._whitelist = pairlist From c049651784491f82807a07cbc2b3d3d6a8f57e22 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 9 Mar 2020 11:30:28 +0100 Subject: [PATCH 1948/3421] whitelist_for_active_markets should not remove blacklisted items --- freqtrade/pairlist/IPairList.py | 1 - tests/pairlist/test_pairlist.py | 2 -- 2 files changed, 3 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index f591fa8da..35844a99e 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -129,6 +129,5 @@ class IPairList(ABC): if pair not in sanitized_whitelist: sanitized_whitelist.append(pair) - sanitized_whitelist = self._verify_blacklist(sanitized_whitelist) # We need to remove pairs that are unknown return sanitized_whitelist diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index b8a4be037..1ce1151b7 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -240,8 +240,6 @@ def test_pairlist_class(mocker, whitelist_conf, markets, pairlist): (['ETH/BTC', 'TKN/BTC', 'ETH/USDT'], "is not compatible with your stake currency"), # BCH/BTC not available (['ETH/BTC', 'TKN/BTC', 'BCH/BTC'], "is not compatible with exchange"), - # BLK/BTC in blacklist - (['ETH/BTC', 'TKN/BTC', 'BLK/BTC'], "in your blacklist. Removing "), # BTT/BTC is inactive (['ETH/BTC', 'TKN/BTC', 'BTT/BTC'], "Market is not active") ]) From 856ba203d959716d40a5f0bab3569e63b807d76d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 9 Mar 2020 15:04:28 +0100 Subject: [PATCH 1949/3421] Update hyperopt samples docstring --- freqtrade/templates/base_hyperopt.py.j2 | 15 +++++++++------ freqtrade/templates/sample_hyperopt.py | 19 ++++++++++++------- .../templates/sample_hyperopt_advanced.py | 7 ++++--- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/freqtrade/templates/base_hyperopt.py.j2 b/freqtrade/templates/base_hyperopt.py.j2 index 05ba08b81..08178da4b 100644 --- a/freqtrade/templates/base_hyperopt.py.j2 +++ b/freqtrade/templates/base_hyperopt.py.j2 @@ -21,7 +21,7 @@ class {{ hyperopt }}(IHyperOpt): """ This is a Hyperopt template to get you started. - More information in https://github.com/freqtrade/freqtrade/blob/develop/docs/hyperopt.md + More information in the documentation: https://www.freqtrade.io/en/latest/hyperopt/ You should: - Add any lib you need to build your hyperopt. @@ -29,11 +29,14 @@ class {{ hyperopt }}(IHyperOpt): You must keep: - The prototypes for the methods: populate_indicators, indicator_space, buy_strategy_generator. - The roi_space, generate_roi_table, stoploss_space methods are no longer required to be - copied in every custom hyperopt. However, you may override them if you need the - 'roi' and the 'stoploss' spaces that differ from the defaults offered by Freqtrade. - Sample implementation of these methods can be found in - https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py + The methods roi_space, generate_roi_table and stoploss_space are not required + and are provided by default. + However, you may override them if you need 'roi' and 'stoploss' spaces that + differ from the defaults offered by Freqtrade. + Sample implementation of these methods will be copied to `user_data/hyperopts` when + creating the user-data directory using `freqtrade create-userdir --userdir user_data`, + or is available online under the following URL: + https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_advanced.py. """ @staticmethod diff --git a/freqtrade/templates/sample_hyperopt.py b/freqtrade/templates/sample_hyperopt.py index f1dcb404a..0baa00442 100644 --- a/freqtrade/templates/sample_hyperopt.py +++ b/freqtrade/templates/sample_hyperopt.py @@ -20,23 +20,28 @@ import freqtrade.vendor.qtpylib.indicators as qtpylib class SampleHyperOpt(IHyperOpt): """ This is a sample Hyperopt to inspire you. - Feel free to customize it. - More information in https://github.com/freqtrade/freqtrade/blob/develop/docs/hyperopt.md + More information in the documentation: https://www.freqtrade.io/en/latest/hyperopt/ You should: - Rename the class name to some unique name. - Add any methods you want to build your hyperopt. - Add any lib you need to build your hyperopt. + An easier way to get a new hyperopt file is by using + `freqtrade new-hyperopt --hyperopt MyCoolHyperopt`. + You must keep: - The prototypes for the methods: populate_indicators, indicator_space, buy_strategy_generator. - The roi_space, generate_roi_table, stoploss_space methods are no longer required to be - copied in every custom hyperopt. However, you may override them if you need the - 'roi' and the 'stoploss' spaces that differ from the defaults offered by Freqtrade. - Sample implementation of these methods can be found in - https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py + The methods roi_space, generate_roi_table and stoploss_space are not required + and are provided by default. + However, you may override them if you need 'roi' and 'stoploss' spaces that + differ from the defaults offered by Freqtrade. + Sample implementation of these methods will be copied to `user_data/hyperopts` when + creating the user-data directory using `freqtrade create-userdir --userdir user_data`, + or is available online under the following URL: + https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_advanced.py. """ @staticmethod diff --git a/freqtrade/templates/sample_hyperopt_advanced.py b/freqtrade/templates/sample_hyperopt_advanced.py index e66ef948b..c8067ad28 100644 --- a/freqtrade/templates/sample_hyperopt_advanced.py +++ b/freqtrade/templates/sample_hyperopt_advanced.py @@ -22,7 +22,7 @@ class AdvancedSampleHyperOpt(IHyperOpt): This is a sample hyperopt to inspire you. Feel free to customize it. - More information in https://github.com/freqtrade/freqtrade/blob/develop/docs/hyperopt.md + More information in the documentation: https://www.freqtrade.io/en/latest/hyperopt/ You should: - Rename the class name to some unique name. @@ -32,8 +32,9 @@ class AdvancedSampleHyperOpt(IHyperOpt): You must keep: - The prototypes for the methods: populate_indicators, indicator_space, buy_strategy_generator. - The roi_space, generate_roi_table, stoploss_space methods are no longer required to be - copied in every custom hyperopt. However, you may override them if you need the + The methods roi_space, generate_roi_table and stoploss_space are not required + and are provided by default. + However, you may override them if you need the 'roi' and the 'stoploss' spaces that differ from the defaults offered by Freqtrade. This sample illustrates how to override these methods. From 5da63d399be30908273ce7b2db7178e380a54dad Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 9 Mar 2020 17:38:25 +0100 Subject: [PATCH 1950/3421] Reduce default order_book_max to 1 --- config.json.example | 2 +- config_binance.json.example | 2 +- config_full.json.example | 2 +- config_kraken.json.example | 2 +- freqtrade/templates/base_config.json.j2 | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/config.json.example b/config.json.example index 46441e72d..8ebb092e1 100644 --- a/config.json.example +++ b/config.json.example @@ -23,7 +23,7 @@ "ask_strategy":{ "use_order_book": false, "order_book_min": 1, - "order_book_max": 9, + "order_book_max": 1, "use_sell_signal": true, "sell_profit_only": false, "ignore_roi_if_buy_signal": false diff --git a/config_binance.json.example b/config_binance.json.example index e2c9879b0..d324ce883 100644 --- a/config_binance.json.example +++ b/config_binance.json.example @@ -23,7 +23,7 @@ "ask_strategy":{ "use_order_book": false, "order_book_min": 1, - "order_book_max": 9, + "order_book_max": 1, "use_sell_signal": true, "sell_profit_only": false, "ignore_roi_if_buy_signal": false diff --git a/config_full.json.example b/config_full.json.example index f0414bd0d..181740b9a 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -38,7 +38,7 @@ "price_side": "ask", "use_order_book": false, "order_book_min": 1, - "order_book_max": 9, + "order_book_max": 1, "use_sell_signal": true, "sell_profit_only": false, "ignore_roi_if_buy_signal": false diff --git a/config_kraken.json.example b/config_kraken.json.example index 4f74d0b7d..dcf4c552a 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -23,7 +23,7 @@ "ask_strategy":{ "use_order_book": false, "order_book_min": 1, - "order_book_max": 9, + "order_book_max": 1, "use_sell_signal": true, "sell_profit_only": false, "ignore_roi_if_buy_signal": false diff --git a/freqtrade/templates/base_config.json.j2 b/freqtrade/templates/base_config.json.j2 index 0049d59a0..134719273 100644 --- a/freqtrade/templates/base_config.json.j2 +++ b/freqtrade/templates/base_config.json.j2 @@ -24,7 +24,7 @@ "price_side": "ask", "use_order_book": false, "order_book_min": 1, - "order_book_max": 9, + "order_book_max": 1, "use_sell_signal": true, "sell_profit_only": false, "ignore_roi_if_buy_signal": false From 74a17c7b7b45cac99238bcb684e7089c5b92c735 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 9 Mar 2020 17:38:35 +0100 Subject: [PATCH 1951/3421] Clarify warning in the documentation --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 5580b9c68..aedd3e043 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -537,7 +537,7 @@ The idea here is to place the sell order early, to be ahead in the queue. A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting `ask_strategy.order_book_min` and `ask_strategy.order_book_max` to the same number. !!! Warning "Orderbook and stoploss_on_exchange" - Using `ask_strategy.order_book_max` higher than 1 may increase the risk, since an eventual [stoploss on exchange](#understand-order_types) will be needed to be cancelled as soon as the order is placed. + Using `ask_strategy.order_book_max` higher than 1 will increase the risk, since an eventual [stoploss on exchange](#understand-order_types) will be needed to be cancelled as soon as the order is placed. Also, the sell order will remain on the exchange for `unfilledtimeout.sell` (or until it's filled) - which can lead to missed stoplosses (even without stoploss on exchange). #### Sell price without Orderbook enabled From e0afbcd4af8e2b1e51a5eaca2b7e5ecd457f9f53 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 9 Mar 2020 17:41:44 +0100 Subject: [PATCH 1952/3421] Additional warning about order_book-max --- docs/configuration.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index aedd3e043..a9487a0ed 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -536,8 +536,14 @@ The idea here is to place the sell order early, to be ahead in the queue. A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting `ask_strategy.order_book_min` and `ask_strategy.order_book_max` to the same number. -!!! Warning "Orderbook and stoploss_on_exchange" - Using `ask_strategy.order_book_max` higher than 1 will increase the risk, since an eventual [stoploss on exchange](#understand-order_types) will be needed to be cancelled as soon as the order is placed. Also, the sell order will remain on the exchange for `unfilledtimeout.sell` (or until it's filled) - which can lead to missed stoplosses (even without stoploss on exchange). +!!! Warning "Order_book_max > 1 - increased Risk!" + Using `ask_strategy.order_book_max` higher than 1 will increase the risk, since an eventual [stoploss on exchange](#understand-order_types) will be needed to be cancelled as soon as the order is placed. + Also, the sell order will remain on the exchange for `unfilledtimeout.sell` (or until it's filled) - which can lead to missed stoplosses (with or without using stoploss_on_exchange). + +!!! Warning "Order_book_max > 1 in dry-run" + Using `ask_strategy.order_book_max` higher than 1 will result in improved dry-run results, since dry-run assumes orders to be filled almost instantly. + It is therefore advised to not use this setting for dry-runs. + #### Sell price without Orderbook enabled From 3eaae4661d3256ca27c92329b60661734c3ed716 Mon Sep 17 00:00:00 2001 From: orehunt Date: Mon, 9 Mar 2020 07:39:23 +0100 Subject: [PATCH 1953/3421] check again for emptiness after trimming dataframe --- freqtrade/data/history/idatahandler.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index df03e7713..87810c95f 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -160,6 +160,13 @@ class IDataHandler(ABC): if timerange_startup: self._validate_pairdata(pair, pairdf, timerange_startup) pairdf = trim_dataframe(pairdf, timerange_startup) + if pairdf.empty: + if warn_no_data: + logger.warning( + f'No history data for pair: "{pair}", timeframe: {timeframe}. ' + 'Use `freqtrade download-data` to download the data' + ) + return pairdf # incomplete candles should only be dropped if we didn't trim the end beforehand. return clean_ohlcv_dataframe(pairdf, timeframe, From 2f5fc731bba51239a3195cbd0fb79e9e58a20d33 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Mon, 9 Mar 2020 18:53:30 +0100 Subject: [PATCH 1954/3421] Removed overwrite option --- docs/utils.md | 13 +++++++------ freqtrade/commands/cli_options.py | 4 ++-- freqtrade/commands/hyperopt_commands.py | 8 +------- freqtrade/optimize/hyperopt.py | 6 +++--- tests/commands/test_commands.py | 2 +- 5 files changed, 14 insertions(+), 19 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index dd7a9dfe3..eb71c509c 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -429,6 +429,7 @@ usage: freqtrade hyperopt-list [-h] [-v] [--logfile FILE] [-V] [-c PATH] [--min-total-profit FLOAT] [--max-total-profit FLOAT] [--no-color] [--print-json] [--no-details] + [--export-csv FILE] optional arguments: -h, --help show this help message and exit @@ -450,9 +451,8 @@ optional arguments: useful if you are redirecting output to a file. --print-json Print best result detailization in JSON format. --no-details Do not print best epoch details. - --export-csv FILE Export to CSV-File. Put + in front of filename to - overwrite. This will disable table print. Example: - --export-csv +hyperopt.csv + --export-csv FILE Export to CSV-File. This will disable table print. + Example: --export-csv hyperopt.csv Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). @@ -461,9 +461,10 @@ Common arguments: details. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: `config.json`). - Multiple --config options may be used. Can be set to - `-` to read config from stdin. + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. -d PATH, --datadir PATH Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index b782c2fb9..8548bd887 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -223,9 +223,9 @@ AVAILABLE_CLI_OPTIONS = { ), "export_csv": Arg( '--export-csv', - help='Export to CSV-File. Put + in front of filename to overwrite.' + help='Export to CSV-File.' ' This will disable table print.' - ' Example: --export-csv +hyperopt.csv', + ' Example: --export-csv hyperopt.csv', metavar='FILE', ), "hyperopt_jobs": Arg( diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index efc9aba88..5b2388252 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -63,14 +63,8 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: Hyperopt.print_epoch_details(results, total_epochs, print_json, no_header) if trials and export_csv: - overwrite_csv = False - if export_csv[0] == '+': - overwrite_csv = True - export_csv = export_csv[1:] - Hyperopt.export_csv_file( - config, trials, total_epochs, - not filteroptions['only_best'], export_csv, overwrite_csv + config, trials, total_epochs, not filteroptions['only_best'], export_csv ) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index d12e9cd45..8e0eba4d7 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -385,7 +385,7 @@ class Hyperopt: @staticmethod def export_csv_file(config: dict, results: list, total_epochs: int, highlight_best: bool, - csv_file: str, overwrite: bool) -> None: + csv_file: str) -> None: """ Log result to csv-file """ @@ -393,8 +393,8 @@ class Hyperopt: return # Verification for overwrite - if not overwrite and path.isfile(csv_file): - logging.error("CSV-File already exists and no overwrite specified!") + if path.isfile(csv_file): + logging.error("CSV-File already exists!") return try: diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index f404a4671..4530cd03d 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -905,7 +905,7 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): args = [ "hyperopt-list", "--no-details", - "--export-csv", "+test_file.csv" + "--export-csv", "test_file.csv" ] pargs = get_args(args) pargs['config'] = None From bd158eefd29a3cdec29887e7f54895935a379179 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Tue, 10 Mar 2020 03:02:52 +0100 Subject: [PATCH 1955/3421] Fixed loggin --- freqtrade/optimize/hyperopt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 8e0eba4d7..1b6343208 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -394,13 +394,13 @@ class Hyperopt: # Verification for overwrite if path.isfile(csv_file): - logging.error("CSV-File already exists!") + logger.error("CSV-File already exists!") return try: io.open(csv_file, 'w+').close() except IOError: - logging.error("Filed to create/overwrite CSV-File!") + logger.error("Filed to create CSV-File!") return trials = json_normalize(results, max_level=1) From 42038da7f1f47d5e34cc10af04f9b42c5f6e4533 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 10 Mar 2020 07:57:25 +0100 Subject: [PATCH 1956/3421] Update docs/configuration.md Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index a9487a0ed..1fca61fdb 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -541,7 +541,7 @@ A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting Also, the sell order will remain on the exchange for `unfilledtimeout.sell` (or until it's filled) - which can lead to missed stoplosses (with or without using stoploss_on_exchange). !!! Warning "Order_book_max > 1 in dry-run" - Using `ask_strategy.order_book_max` higher than 1 will result in improved dry-run results, since dry-run assumes orders to be filled almost instantly. + Using `ask_strategy.order_book_max` higher than 1 will result in improper dry-run results (significantly better than real orders executed on exchange), since dry-run assumes orders to be filled almost instantly. It is therefore advised to not use this setting for dry-runs. From f148b5f73450861d8f416f0e3b03d355c568ec6e Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Tue, 10 Mar 2020 10:38:37 +0300 Subject: [PATCH 1957/3421] cosmetics in lambdas --- freqtrade/optimize/hyperopt.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 1b6343208..4c32a0543 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -332,10 +332,10 @@ class Hyperopt: lambda x: '{}/{}'.format(str(x).rjust(len(str(total_epochs)), ' '), total_epochs) ) trials['Avg profit'] = trials['Avg profit'].apply( - lambda x: ('{:,.2f}%'.format(x)).rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ') + lambda x: '{:,.2f}%'.format(x).rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ') ) trials['Avg duration'] = trials['Avg duration'].apply( - lambda x: ('{:,.1f} m'.format(x)).rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ') + lambda x: '{:,.1f} m'.format(x).rjust(7, ' ') if not isna(x) else "--".rjust(7, ' ') ) trials['Objective'] = trials['Objective'].apply( lambda x: '{:,.5f}'.format(x).rjust(8, ' ') if x != 100000 else "N/A".rjust(8, ' ') @@ -426,10 +426,10 @@ class Hyperopt: lambda x: '{:,.2f}'.format(x) if not isna(x) else "" ) trials['Avg profit'] = trials['Avg profit'].apply( - lambda x: ('{:,.2f}%'.format(x)) if not isna(x) else "" + lambda x: '{:,.2f}%'.format(x) if not isna(x) else "" ) trials['Avg duration'] = trials['Avg duration'].apply( - lambda x: ('{:,.1f} m'.format(x)) if not isna(x) else "" + lambda x: '{:,.1f} m'.format(x) if not isna(x) else "" ) trials['Objective'] = trials['Objective'].apply( lambda x: '{:,.5f}'.format(x) if x != 100000 else "" From a046c4829c01ad2934337c59a304b181cb4f2a23 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 10 Mar 2020 09:03:44 +0100 Subject: [PATCH 1958/3421] Apply suggestions from code review Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/configuration.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 1fca61fdb..76df5bd08 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -536,9 +536,9 @@ The idea here is to place the sell order early, to be ahead in the queue. A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting `ask_strategy.order_book_min` and `ask_strategy.order_book_max` to the same number. -!!! Warning "Order_book_max > 1 - increased Risk!" - Using `ask_strategy.order_book_max` higher than 1 will increase the risk, since an eventual [stoploss on exchange](#understand-order_types) will be needed to be cancelled as soon as the order is placed. - Also, the sell order will remain on the exchange for `unfilledtimeout.sell` (or until it's filled) - which can lead to missed stoplosses (with or without using stoploss_on_exchange). +!!! Warning "Order_book_max > 1 - increased risks for stoplosses!" + Using `ask_strategy.order_book_max` higher than 1 will increase the risk the stoploss on exchange is cancelled too early, since an eventual [stoploss on exchange](#understand-order_types) will be cancelled as soon as the order is placed. + Also, the sell order will remain on the exchange for `unfilledtimeout.sell` (or until it's filled) - which can lead to missed stoplosses (with or without using stoploss on exchange). !!! Warning "Order_book_max > 1 in dry-run" Using `ask_strategy.order_book_max` higher than 1 will result in improper dry-run results (significantly better than real orders executed on exchange), since dry-run assumes orders to be filled almost instantly. From f7ad6c20c7276ca6f76721d8195034ec2993bb87 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 10 Mar 2020 12:02:23 +0300 Subject: [PATCH 1959/3421] Do not allow unlimited stake_amount for hyperopt --- freqtrade/commands/optimize_commands.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/freqtrade/commands/optimize_commands.py b/freqtrade/commands/optimize_commands.py index a2d1b4601..2fc605926 100644 --- a/freqtrade/commands/optimize_commands.py +++ b/freqtrade/commands/optimize_commands.py @@ -17,10 +17,15 @@ def setup_optimize_configuration(args: Dict[str, Any], method: RunMode) -> Dict[ """ config = setup_utils_configuration(args, method) - if method == RunMode.BACKTEST: - if config['stake_amount'] == constants.UNLIMITED_STAKE_AMOUNT: - raise DependencyException('stake amount could not be "%s" for backtesting' % - constants.UNLIMITED_STAKE_AMOUNT) + no_unlimited_runmodes = { + RunMode.BACKTEST: 'backtesting', + RunMode.HYPEROPT: 'hyperoptimization', + } + if (method in no_unlimited_runmodes.keys() and + config['stake_amount'] == constants.UNLIMITED_STAKE_AMOUNT): + raise DependencyException( + f'The value of `stake_amount` cannot be set as "{constants.UNLIMITED_STAKE_AMOUNT}" ' + f'for {no_unlimited_runmodes[method]}') return config From 81b6a950ac58e231e7e29bd1429b34b40b40c1ff Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 10 Mar 2020 12:42:11 +0300 Subject: [PATCH 1960/3421] Adjust test for backtesting --- tests/optimize/test_backtesting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 96855dc9d..702337463 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -241,7 +241,7 @@ def test_setup_optimize_configuration_unlimited_stake_amount(mocker, default_con '--strategy', 'DefaultStrategy', ] - with pytest.raises(DependencyException, match=r'.*stake amount.*'): + with pytest.raises(DependencyException, match=r'.`stake_amount`.*'): setup_optimize_configuration(get_args(args), RunMode.BACKTEST) From 1b6e77649a437a75f4eae10d78d3fc0bc7dd7ba7 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 10 Mar 2020 12:42:31 +0300 Subject: [PATCH 1961/3421] Add test for hyperopt --- tests/optimize/test_hyperopt.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 0406157f6..c0bddd085 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -10,10 +10,11 @@ import pytest from arrow import Arrow from filelock import Timeout +from freqtrade import constants from freqtrade.commands.optimize_commands import (setup_optimize_configuration, start_hyperopt) from freqtrade.data.history import load_data -from freqtrade.exceptions import OperationalException +from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.optimize.default_hyperopt import DefaultHyperOpt from freqtrade.optimize.default_hyperopt_loss import DefaultHyperOptLoss from freqtrade.optimize.hyperopt import Hyperopt @@ -158,6 +159,21 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo assert log_has('Parameter --print-all detected ...', caplog) +def test_setup_hyperopt_configuration_unlimited_stake_amount(mocker, default_conf, caplog) -> None: + default_conf['stake_amount'] = constants.UNLIMITED_STAKE_AMOUNT + + patched_configuration_load_config_file(mocker, default_conf) + + args = [ + 'hyperopt', + '--config', 'config.json', + '--hyperopt', 'DefaultHyperOpt', + ] + + with pytest.raises(DependencyException, match=r'.`stake_amount`.*'): + setup_optimize_configuration(get_args(args), RunMode.HYPEROPT) + + def test_hyperoptresolver(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) From 73c19da4b988e13db70ec6f434baf773aa71faba Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 10 Mar 2020 13:44:16 +0300 Subject: [PATCH 1962/3421] Adjust handling of zero stdev in loss functions --- freqtrade/optimize/hyperopt_loss_sharpe.py | 2 +- freqtrade/optimize/hyperopt_loss_sharpe_daily.py | 2 +- freqtrade/optimize/hyperopt_loss_sortino.py | 2 +- freqtrade/optimize/hyperopt_loss_sortino_daily.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/hyperopt_loss_sharpe.py b/freqtrade/optimize/hyperopt_loss_sharpe.py index a4ec6f90a..29377bdd5 100644 --- a/freqtrade/optimize/hyperopt_loss_sharpe.py +++ b/freqtrade/optimize/hyperopt_loss_sharpe.py @@ -36,7 +36,7 @@ class SharpeHyperOptLoss(IHyperOptLoss): expected_returns_mean = total_profit.sum() / days_period up_stdev = np.std(total_profit) - if (np.std(total_profit) != 0.): + if up_stdev != 0: sharp_ratio = expected_returns_mean / up_stdev * np.sqrt(365) else: # Define high (negative) sharpe ratio to be clear that this is NOT optimal. diff --git a/freqtrade/optimize/hyperopt_loss_sharpe_daily.py b/freqtrade/optimize/hyperopt_loss_sharpe_daily.py index 5a8ebaa11..e4cd1d749 100644 --- a/freqtrade/optimize/hyperopt_loss_sharpe_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sharpe_daily.py @@ -51,7 +51,7 @@ class SharpeHyperOptLossDaily(IHyperOptLoss): expected_returns_mean = total_profit.mean() up_stdev = total_profit.std() - if (up_stdev != 0.): + if up_stdev != 0: sharp_ratio = expected_returns_mean / up_stdev * math.sqrt(days_in_year) else: # Define high (negative) sharpe ratio to be clear that this is NOT optimal. diff --git a/freqtrade/optimize/hyperopt_loss_sortino.py b/freqtrade/optimize/hyperopt_loss_sortino.py index 83f644a43..d470a9977 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino.py +++ b/freqtrade/optimize/hyperopt_loss_sortino.py @@ -39,7 +39,7 @@ class SortinoHyperOptLoss(IHyperOptLoss): results.loc[total_profit < 0, 'downside_returns'] = results['profit_percent'] down_stdev = np.std(results['downside_returns']) - if np.std(total_profit) != 0.0: + if down_stdev != 0: sortino_ratio = expected_returns_mean / down_stdev * np.sqrt(365) else: # Define high (negative) sortino ratio to be clear that this is NOT optimal. diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index 16dc26142..cd6a8bcc2 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -59,7 +59,7 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): # where P = sum_daily["profit_percent_after_slippage"] down_stdev = math.sqrt((total_downside**2).sum() / len(total_downside)) - if (down_stdev != 0.): + if down_stdev != 0: sortino_ratio = expected_returns_mean / down_stdev * math.sqrt(days_in_year) else: # Define high (negative) sortino ratio to be clear that this is NOT optimal. From 2b1c146940633b50dc0d9a9d225f44cc893bb088 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 10 Mar 2020 16:05:33 +0100 Subject: [PATCH 1963/3421] Add default volume > 0 filter --- docs/hyperopt.md | 3 +++ freqtrade/templates/base_hyperopt.py.j2 | 6 ++++++ freqtrade/templates/sample_hyperopt.py | 6 ++++++ freqtrade/templates/sample_hyperopt_advanced.py | 6 ++++++ 4 files changed, 21 insertions(+) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 9bc5888ce..1293c7ab4 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -159,6 +159,9 @@ So let's write the buy strategy using these values: dataframe['macd'], dataframe['macdsignal'] )) + # Check that volume is not 0 + conditions.append(dataframe['volume'] > 0) + if conditions: dataframe.loc[ reduce(lambda x, y: x & y, conditions), diff --git a/freqtrade/templates/base_hyperopt.py.j2 b/freqtrade/templates/base_hyperopt.py.j2 index 08178da4b..ec787cbb6 100644 --- a/freqtrade/templates/base_hyperopt.py.j2 +++ b/freqtrade/templates/base_hyperopt.py.j2 @@ -66,6 +66,9 @@ class {{ hyperopt }}(IHyperOpt): dataframe['close'], dataframe['sar'] )) + # Check that the candle had volume + conditions.append(dataframe['volume'] > 0) + if conditions: dataframe.loc[ reduce(lambda x, y: x & y, conditions), @@ -111,6 +114,9 @@ class {{ hyperopt }}(IHyperOpt): dataframe['sar'], dataframe['close'] )) + # Check that the candle had volume + conditions.append(dataframe['volume'] > 0) + if conditions: dataframe.loc[ reduce(lambda x, y: x & y, conditions), diff --git a/freqtrade/templates/sample_hyperopt.py b/freqtrade/templates/sample_hyperopt.py index 0baa00442..0b6d030db 100644 --- a/freqtrade/templates/sample_hyperopt.py +++ b/freqtrade/templates/sample_hyperopt.py @@ -78,6 +78,9 @@ class SampleHyperOpt(IHyperOpt): dataframe['close'], dataframe['sar'] )) + # Check that volume is not 0 + conditions.append(dataframe['volume'] > 0) + if conditions: dataframe.loc[ reduce(lambda x, y: x & y, conditions), @@ -138,6 +141,9 @@ class SampleHyperOpt(IHyperOpt): dataframe['sar'], dataframe['close'] )) + # Check that volume is not 0 + conditions.append(dataframe['volume'] > 0) + if conditions: dataframe.loc[ reduce(lambda x, y: x & y, conditions), diff --git a/freqtrade/templates/sample_hyperopt_advanced.py b/freqtrade/templates/sample_hyperopt_advanced.py index c8067ad28..7f05c4430 100644 --- a/freqtrade/templates/sample_hyperopt_advanced.py +++ b/freqtrade/templates/sample_hyperopt_advanced.py @@ -93,6 +93,9 @@ class AdvancedSampleHyperOpt(IHyperOpt): dataframe['close'], dataframe['sar'] )) + # Check that volume is not 0 + conditions.append(dataframe['volume'] > 0) + if conditions: dataframe.loc[ reduce(lambda x, y: x & y, conditions), @@ -153,6 +156,9 @@ class AdvancedSampleHyperOpt(IHyperOpt): dataframe['sar'], dataframe['close'] )) + # Check that volume is not 0 + conditions.append(dataframe['volume'] > 0) + if conditions: dataframe.loc[ reduce(lambda x, y: x & y, conditions), From 3a8b68c0fd721094c606286b4dce6a86d89442d9 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Tue, 10 Mar 2020 20:30:36 +0100 Subject: [PATCH 1964/3421] Initial work on progressbar --- freqtrade/loggers.py | 9 ++++++--- freqtrade/optimize/hyperopt.py | 34 ++++++++++++++++++++++++++++++---- requirements-hyperopt.txt | 1 + 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index c69388430..609604ff2 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -4,6 +4,7 @@ import sys from logging import Formatter from logging.handlers import RotatingFileHandler, SysLogHandler from typing import Any, Dict, List +import progressbar from freqtrade.exceptions import OperationalException @@ -18,13 +19,13 @@ def _set_loggers(verbosity: int = 0) -> None: """ logging.getLogger('requests').setLevel( - logging.INFO if verbosity <= 1 else logging.DEBUG + logging.INFO if verbosity <= 1 else logging.DEBUG ) logging.getLogger("urllib3").setLevel( - logging.INFO if verbosity <= 1 else logging.DEBUG + logging.INFO if verbosity <= 1 else logging.DEBUG ) logging.getLogger('ccxt.base.exchange').setLevel( - logging.INFO if verbosity <= 2 else logging.DEBUG + logging.INFO if verbosity <= 2 else logging.DEBUG ) logging.getLogger('telegram').setLevel(logging.INFO) @@ -36,6 +37,8 @@ def setup_logging(config: Dict[str, Any]) -> None: # Log level verbosity = config['verbosity'] + progressbar.streams.wrap_stderr() + # Log to stderr log_handlers: List[logging.Handler] = [logging.StreamHandler(sys.stderr)] diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 4c32a0543..93fc3c558 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -7,7 +7,6 @@ This module contains the hyperopt logic import locale import logging import random -import sys import warnings from math import ceil from collections import OrderedDict @@ -22,8 +21,9 @@ from colorama import init as colorama_init from joblib import (Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects) from pandas import DataFrame, json_normalize, isna +import progressbar import tabulate -from os import path +from os import path, popen import io from freqtrade.data.converter import trim_dataframe @@ -270,7 +270,6 @@ class Hyperopt: # Print '\n' after each 100th epoch to separate dots from the log messages. # Otherwise output is messy on a terminal. print('.', end='' if results['current_epoch'] % 100 != 0 else None) # type: ignore - sys.stdout.flush() if self.print_all or is_best: if not self.print_all: @@ -622,6 +621,10 @@ class Hyperopt: def _set_random_state(self, random_state: Optional[int]) -> int: return random_state or random.randint(1, 2**16 - 1) + def _get_height(self) -> int: + rows = int((popen('stty size', 'r').read().split())[0]) + return rows + def start(self) -> None: self.random_state = self._set_random_state(self.config.get('hyperopt_random_state', None)) logger.info(f"Using optimizer random state: {self.random_state}") @@ -629,7 +632,6 @@ class Hyperopt: data, timerange = self.backtesting.load_bt_data() preprocessed = self.backtesting.strategy.tickerdata_to_dataframe(data) - # Trim startup period from analyzed dataframe for pair, df in preprocessed.items(): preprocessed[pair] = trim_dataframe(df, timerange) @@ -659,6 +661,14 @@ class Hyperopt: try: with Parallel(n_jobs=config_jobs) as parallel: + self.progress_bar = progressbar.ProgressBar( + min_value=0, + max_value=self.total_epochs, + initial_value=0, + line_breaks=True, + enable_colors=self.print_colorized + ) + self.progress_bar.start() jobs = parallel._effective_n_jobs() logger.info(f'Effective number of parallel workers used: {jobs}') EVALS = ceil(self.total_epochs / jobs) @@ -673,6 +683,9 @@ class Hyperopt: self.opt.tell(asked, [v['loss'] for v in f_val]) self.fix_optimizer_models_list() + # Calculate progressbar outputs + pbar_line = ceil(self._get_height() / 2) + for j, val in enumerate(f_val): # Use human-friendly indexes here (starting from 1) current = i * jobs + j + 1 @@ -689,12 +702,19 @@ class Hyperopt: self.print_results(val) + if pbar_line <= current: + self.progress_bar.update(current) + pbar_line = current + ceil(self._get_height() / 2) + if is_best: self.current_best_loss = val['loss'] self.trials.append(val) # Save results after each best epoch and every 100 epochs if is_best or current % 100 == 0: self.save_trials() + self.progress_bar.finish() + + # self.progress_bar.update(current) except KeyboardInterrupt: print('User interrupted..') @@ -708,3 +728,9 @@ class Hyperopt: # This is printed when Ctrl+C is pressed quickly, before first epochs have # a chance to be evaluated. print("No epochs evaluated yet, no best result.") + + def __getstate__(self): + state = self.__dict__.copy() + del state['trials'] + del state['progress_bar'] + return state diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index c7e586a33..3c500839e 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -7,3 +7,4 @@ scikit-learn==0.22.2.post1 scikit-optimize==0.7.4 filelock==3.0.12 joblib==0.14.1 +progressbar2==3.50.0 From 54bde6ac11a183be414a8faa37e588eafa269aaf Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 16:34:23 +0100 Subject: [PATCH 1965/3421] verify date on new candle before producing signal --- freqtrade/freqtradebot.py | 9 ++++++--- freqtrade/strategy/interface.py | 9 +++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 914b8d9cd..02d8b5b56 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -390,14 +390,17 @@ class FreqtradeBot: """ logger.debug(f"create_trade for pair {pair}") + dataframe = self.dataprovider.ohlcv(pair, self.strategy.ticker_interval) + latest = dataframe.iloc[-1] + # Check if dataframe is out of date + signal_date = arrow.get(latest['date']) + if self.strategy.is_pair_locked(pair): logger.info(f"Pair {pair} is currently locked.") return False # running get_signal on historical data fetched - (buy, sell) = self.strategy.get_signal( - pair, self.strategy.ticker_interval, - self.dataprovider.ohlcv(pair, self.strategy.ticker_interval)) + (buy, sell) = self.strategy.get_signal(pair, self.strategy.ticker_interval, dataframe) if buy and not sell: if not self.get_free_open_trades(): diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index d23af3f6e..765e23b0b 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -277,15 +277,20 @@ class IStrategy(ABC): latest = dataframe.iloc[-1] - # Check if dataframe is out of date + # Check if dataframe has new candle signal_date = arrow.get(latest['date']) interval_minutes = timeframe_to_minutes(interval) + if (arrow.utcnow() - signal_date).total_seconds() // 60 >= interval_minutes: + logger.warning('Old candle for pair %s. Last tick is %s minutes old', + pair, (arrow.utcnow() - signal_date).total_seconds() // 60) + + # Check if dataframe is out of date offset = self.config.get('exchange', {}).get('outdated_offset', 5) if signal_date < (arrow.utcnow().shift(minutes=-(interval_minutes * 2 + offset))): logger.warning( 'Outdated history for pair %s. Last tick is %s minutes old', pair, - (arrow.utcnow() - signal_date).seconds // 60 + (arrow.utcnow() - signal_date).total_seconds() // 60 ) return False, False From 4e45abbf139a08c79b2c1adee12cffbceda259c9 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 16:44:45 +0100 Subject: [PATCH 1966/3421] added return false, false --- freqtrade/strategy/interface.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 765e23b0b..a26e8edbd 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -283,6 +283,7 @@ class IStrategy(ABC): if (arrow.utcnow() - signal_date).total_seconds() // 60 >= interval_minutes: logger.warning('Old candle for pair %s. Last tick is %s minutes old', pair, (arrow.utcnow() - signal_date).total_seconds() // 60) + return False, False # Check if dataframe is out of date offset = self.config.get('exchange', {}).get('outdated_offset', 5) From d239e999043fe50b01b1e2a79b074bb3c9de707a Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 16:49:37 +0100 Subject: [PATCH 1967/3421] removed old code from create_trade --- freqtrade/freqtradebot.py | 1 - 1 file changed, 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 02d8b5b56..90f2c0c02 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -393,7 +393,6 @@ class FreqtradeBot: dataframe = self.dataprovider.ohlcv(pair, self.strategy.ticker_interval) latest = dataframe.iloc[-1] # Check if dataframe is out of date - signal_date = arrow.get(latest['date']) if self.strategy.is_pair_locked(pair): logger.info(f"Pair {pair} is currently locked.") From a85d17327bebfc7432a968464ac9b15f587f2813 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 16:54:27 +0100 Subject: [PATCH 1968/3421] fix --- freqtrade/freqtradebot.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 90f2c0c02..fd4daf7aa 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -390,15 +390,13 @@ class FreqtradeBot: """ logger.debug(f"create_trade for pair {pair}") - dataframe = self.dataprovider.ohlcv(pair, self.strategy.ticker_interval) - latest = dataframe.iloc[-1] # Check if dataframe is out of date - if self.strategy.is_pair_locked(pair): logger.info(f"Pair {pair} is currently locked.") return False # running get_signal on historical data fetched + dataframe = self.dataprovider.ohlcv(pair, self.strategy.ticker_interval) (buy, sell) = self.strategy.get_signal(pair, self.strategy.ticker_interval, dataframe) if buy and not sell: From a82cdf0add7f0fca9f0a3a4d32b5510aa4b5b461 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 17:04:51 +0100 Subject: [PATCH 1969/3421] fixed test --- freqtrade/strategy/interface.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index a26e8edbd..47bdf781d 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -282,7 +282,7 @@ class IStrategy(ABC): interval_minutes = timeframe_to_minutes(interval) if (arrow.utcnow() - signal_date).total_seconds() // 60 >= interval_minutes: logger.warning('Old candle for pair %s. Last tick is %s minutes old', - pair, (arrow.utcnow() - signal_date).total_seconds() // 60) + pair, int(arrow.utcnow() - signal_date).total_seconds() // 60) return False, False # Check if dataframe is out of date @@ -291,7 +291,7 @@ class IStrategy(ABC): logger.warning( 'Outdated history for pair %s. Last tick is %s minutes old', pair, - (arrow.utcnow() - signal_date).total_seconds() // 60 + int((arrow.utcnow() - signal_date).total_seconds() // 60) ) return False, False From d667acb3081132adc7207c4dad396e184ebec544 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 17:10:57 +0100 Subject: [PATCH 1970/3421] fixed typo --- freqtrade/strategy/interface.py | 44 ++++++++++++++++----------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 47bdf781d..781bd7a54 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -282,11 +282,11 @@ class IStrategy(ABC): interval_minutes = timeframe_to_minutes(interval) if (arrow.utcnow() - signal_date).total_seconds() // 60 >= interval_minutes: logger.warning('Old candle for pair %s. Last tick is %s minutes old', - pair, int(arrow.utcnow() - signal_date).total_seconds() // 60) + pair, int((arrow.utcnow() - signal_date).total_seconds() // 60) return False, False # Check if dataframe is out of date - offset = self.config.get('exchange', {}).get('outdated_offset', 5) + offset=self.config.get('exchange', {}).get('outdated_offset', 5) if signal_date < (arrow.utcnow().shift(minutes=-(interval_minutes * 2 + offset))): logger.warning( 'Outdated history for pair %s. Last tick is %s minutes old', @@ -295,7 +295,7 @@ class IStrategy(ABC): ) return False, False - (buy, sell) = latest[SignalType.BUY.value] == 1, latest[SignalType.SELL.value] == 1 + (buy, sell)=latest[SignalType.BUY.value] == 1, latest[SignalType.SELL.value] == 1 logger.debug( 'trigger: %s (pair=%s) buy=%s sell=%s', latest['date'], @@ -306,8 +306,8 @@ class IStrategy(ABC): return buy, sell def should_sell(self, trade: Trade, rate: float, date: datetime, buy: bool, - sell: bool, low: float = None, high: float = None, - force_stoploss: float = 0) -> SellCheckTuple: + sell: bool, low: float=None, high: float=None, + force_stoploss: float=0) -> SellCheckTuple: """ This function evaluates if one of the conditions required to trigger a sell has been reached, which can either be a stop-loss, ROI or sell-signal. @@ -317,12 +317,12 @@ class IStrategy(ABC): :return: True if trade should be sold, False otherwise """ # Set current rate to low for backtesting sell - current_rate = low or rate - current_profit = trade.calc_profit_ratio(current_rate) + current_rate=low or rate + current_profit=trade.calc_profit_ratio(current_rate) trade.adjust_min_max_rates(high or current_rate) - stoplossflag = self.stop_loss_reached(current_rate=current_rate, trade=trade, + stoplossflag=self.stop_loss_reached(current_rate=current_rate, trade=trade, current_time=date, current_profit=current_profit, force_stoploss=force_stoploss, high=high) @@ -332,9 +332,9 @@ class IStrategy(ABC): return stoplossflag # Set current rate to high for backtesting sell - current_rate = high or rate - current_profit = trade.calc_profit_ratio(current_rate) - config_ask_strategy = self.config.get('ask_strategy', {}) + current_rate=high or rate + current_profit=trade.calc_profit_ratio(current_rate) + config_ask_strategy=self.config.get('ask_strategy', {}) if buy and config_ask_strategy.get('ignore_roi_if_buy_signal', False): # This one is noisy, commented out @@ -366,29 +366,29 @@ class IStrategy(ABC): def stop_loss_reached(self, current_rate: float, trade: Trade, current_time: datetime, current_profit: float, - force_stoploss: float, high: float = None) -> SellCheckTuple: + force_stoploss: float, high: float=None) -> SellCheckTuple: """ Based on current profit of the trade and configured (trailing) stoploss, decides to sell or not :param current_profit: current profit as ratio """ - stop_loss_value = force_stoploss if force_stoploss else self.stoploss + stop_loss_value=force_stoploss if force_stoploss else self.stoploss # Initiate stoploss with open_rate. Does nothing if stoploss is already set. trade.adjust_stop_loss(trade.open_rate, stop_loss_value, initial=True) if self.trailing_stop: # trailing stoploss handling - sl_offset = self.trailing_stop_positive_offset + sl_offset=self.trailing_stop_positive_offset # Make sure current_profit is calculated using high for backtesting. - high_profit = current_profit if not high else trade.calc_profit_ratio(high) + high_profit=current_profit if not high else trade.calc_profit_ratio(high) # Don't update stoploss if trailing_only_offset_is_reached is true. if not (self.trailing_only_offset_is_reached and high_profit < sl_offset): # Specific handling for trailing_stop_positive if self.trailing_stop_positive is not None and high_profit > sl_offset: - stop_loss_value = self.trailing_stop_positive + stop_loss_value=self.trailing_stop_positive logger.debug(f"{trade.pair} - Using positive stoploss: {stop_loss_value} " f"offset: {sl_offset:.4g} profit: {current_profit:.4f}%") @@ -401,11 +401,11 @@ class IStrategy(ABC): (trade.stop_loss >= current_rate) and (not self.order_types.get('stoploss_on_exchange') or self.config['dry_run'])): - sell_type = SellType.STOP_LOSS + sell_type=SellType.STOP_LOSS # If initial stoploss is not the same as current one then it is trailing. if trade.initial_stop_loss != trade.stop_loss: - sell_type = SellType.TRAILING_STOP_LOSS + sell_type=SellType.TRAILING_STOP_LOSS logger.debug( f"{trade.pair} - HIT STOP: current price at {current_rate:.6f}, " f"stoploss is {trade.stop_loss:.6f}, " @@ -425,10 +425,10 @@ class IStrategy(ABC): :return: minimal ROI entry value or None if none proper ROI entry was found. """ # Get highest entry in ROI dict where key <= trade-duration - roi_list = list(filter(lambda x: x <= trade_dur, self.minimal_roi.keys())) + roi_list=list(filter(lambda x: x <= trade_dur, self.minimal_roi.keys())) if not roi_list: return None, None - roi_entry = max(roi_list) + roi_entry=max(roi_list) return roi_entry, self.minimal_roi[roi_entry] def min_roi_reached(self, trade: Trade, current_profit: float, current_time: datetime) -> bool: @@ -439,8 +439,8 @@ class IStrategy(ABC): :return: True if bot should sell at current rate """ # Check if time matches and current rate is above threshold - trade_dur = int((current_time.timestamp() - trade.open_date.timestamp()) // 60) - _, roi = self.min_roi_reached_entry(trade_dur) + trade_dur=int((current_time.timestamp() - trade.open_date.timestamp()) // 60) + _, roi=self.min_roi_reached_entry(trade_dur) if roi is None: return False else: From 7754742459688e94b258ecf006883e57f0152b78 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 17:10:57 +0100 Subject: [PATCH 1971/3421] fix tests --- freqtrade/strategy/interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 47bdf781d..23c16d83e 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -282,7 +282,7 @@ class IStrategy(ABC): interval_minutes = timeframe_to_minutes(interval) if (arrow.utcnow() - signal_date).total_seconds() // 60 >= interval_minutes: logger.warning('Old candle for pair %s. Last tick is %s minutes old', - pair, int(arrow.utcnow() - signal_date).total_seconds() // 60) + pair, int((arrow.utcnow() - signal_date).total_seconds() // 60)) return False, False # Check if dataframe is out of date From 2e679ee2ebee44fee6c445e568f03a5f58902aee Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 17:22:21 +0100 Subject: [PATCH 1972/3421] fixed log message --- freqtrade/strategy/interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 23c16d83e..cf205c709 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -281,7 +281,7 @@ class IStrategy(ABC): signal_date = arrow.get(latest['date']) interval_minutes = timeframe_to_minutes(interval) if (arrow.utcnow() - signal_date).total_seconds() // 60 >= interval_minutes: - logger.warning('Old candle for pair %s. Last tick is %s minutes old', + logger.warning('Old candle for pair %s. Last candle is %s minutes old', pair, int((arrow.utcnow() - signal_date).total_seconds() // 60)) return False, False From d25cf1395b11f130877ef4864b12f480cf940ea9 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 17:22:21 +0100 Subject: [PATCH 1973/3421] fixed log message --- freqtrade/strategy/interface.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 23c16d83e..4d82c6c02 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -277,14 +277,6 @@ class IStrategy(ABC): latest = dataframe.iloc[-1] - # Check if dataframe has new candle - signal_date = arrow.get(latest['date']) - interval_minutes = timeframe_to_minutes(interval) - if (arrow.utcnow() - signal_date).total_seconds() // 60 >= interval_minutes: - logger.warning('Old candle for pair %s. Last tick is %s minutes old', - pair, int((arrow.utcnow() - signal_date).total_seconds() // 60)) - return False, False - # Check if dataframe is out of date offset = self.config.get('exchange', {}).get('outdated_offset', 5) if signal_date < (arrow.utcnow().shift(minutes=-(interval_minutes * 2 + offset))): @@ -295,6 +287,14 @@ class IStrategy(ABC): ) return False, False + # Check if dataframe has new candle + signal_date = arrow.get(latest['date']) + interval_minutes = timeframe_to_minutes(interval) + if (arrow.utcnow() - signal_date).total_seconds() // 60 >= interval_minutes: + logger.warning('Old candle for pair %s. Last candle is %s minutes old', + pair, int((arrow.utcnow() - signal_date).total_seconds() // 60)) + return False, False + (buy, sell) = latest[SignalType.BUY.value] == 1, latest[SignalType.SELL.value] == 1 logger.debug( 'trigger: %s (pair=%s) buy=%s sell=%s', From ba596af636b2a5a725cb0f13e4e71d81fa0157ef Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 17:26:57 +0100 Subject: [PATCH 1974/3421] final? --- freqtrade/strategy/interface.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 4d82c6c02..a2a3c4f3a 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -275,8 +275,6 @@ class IStrategy(ABC): logger.warning('Empty dataframe for pair %s', pair) return False, False - latest = dataframe.iloc[-1] - # Check if dataframe is out of date offset = self.config.get('exchange', {}).get('outdated_offset', 5) if signal_date < (arrow.utcnow().shift(minutes=-(interval_minutes * 2 + offset))): @@ -288,6 +286,7 @@ class IStrategy(ABC): return False, False # Check if dataframe has new candle + latest = dataframe.iloc[-1] signal_date = arrow.get(latest['date']) interval_minutes = timeframe_to_minutes(interval) if (arrow.utcnow() - signal_date).total_seconds() // 60 >= interval_minutes: From c442913febf34cf610fa405bbb714667c45582a5 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 17:28:03 +0100 Subject: [PATCH 1975/3421] final --- freqtrade/strategy/interface.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index a2a3c4f3a..081127370 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -275,6 +275,9 @@ class IStrategy(ABC): logger.warning('Empty dataframe for pair %s', pair) return False, False + latest = dataframe.iloc[-1] + signal_date = arrow.get(latest['date']) + # Check if dataframe is out of date offset = self.config.get('exchange', {}).get('outdated_offset', 5) if signal_date < (arrow.utcnow().shift(minutes=-(interval_minutes * 2 + offset))): @@ -286,8 +289,6 @@ class IStrategy(ABC): return False, False # Check if dataframe has new candle - latest = dataframe.iloc[-1] - signal_date = arrow.get(latest['date']) interval_minutes = timeframe_to_minutes(interval) if (arrow.utcnow() - signal_date).total_seconds() // 60 >= interval_minutes: logger.warning('Old candle for pair %s. Last candle is %s minutes old', From 1395f658723dd5d4464026760adc00d701710907 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 17:29:22 +0100 Subject: [PATCH 1976/3421] meh --- freqtrade/strategy/interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 081127370..d840e2aea 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -277,6 +277,7 @@ class IStrategy(ABC): latest = dataframe.iloc[-1] signal_date = arrow.get(latest['date']) + interval_minutes = timeframe_to_minutes(interval) # Check if dataframe is out of date offset = self.config.get('exchange', {}).get('outdated_offset', 5) @@ -289,7 +290,6 @@ class IStrategy(ABC): return False, False # Check if dataframe has new candle - interval_minutes = timeframe_to_minutes(interval) if (arrow.utcnow() - signal_date).total_seconds() // 60 >= interval_minutes: logger.warning('Old candle for pair %s. Last candle is %s minutes old', pair, int((arrow.utcnow() - signal_date).total_seconds() // 60)) From d752586b322b43afe652482ce0ddee0b46f0cac4 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Wed, 11 Mar 2020 17:44:03 +0100 Subject: [PATCH 1977/3421] added test --- tests/strategy/test_interface.py | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 86d0738c6..d476b64b0 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -79,6 +79,21 @@ def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ticker_history assert log_has('Empty dataframe for pair xyz', caplog) +def test_get_signal_old_candle(default_conf, mocker, caplog, ticker_history): + caplog.set_level(logging.INFO) + # default_conf defines a 5m interval. we check interval of previous candle + # this is necessary as the last candle is removed (partial candles) by default + oldtime = arrow.utcnow().shift(minutes=-10) + ticks = DataFrame([{'buy': 1, 'date': oldtime}]) + mocker.patch.object( + _STRATEGY, '_analyze_ticker_internal', + return_value=DataFrame(ticks) + ) + assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], + ticker_history) + assert log_has('Old candle for pair xyz. Last candle is 10 minutes old', caplog) + + def test_get_signal_old_dataframe(default_conf, mocker, caplog, ticker_history): caplog.set_level(logging.INFO) # default_conf defines a 5m interval. we check interval * 2 + 5m @@ -198,14 +213,14 @@ def test_min_roi_reached3(default_conf, fee) -> None: strategy = StrategyResolver.load_strategy(default_conf) strategy.minimal_roi = min_roi trade = Trade( - pair='ETH/BTC', - stake_amount=0.001, - amount=5, - open_date=arrow.utcnow().shift(hours=-1).datetime, - fee_open=fee.return_value, - fee_close=fee.return_value, - exchange='bittrex', - open_rate=1, + pair='ETH/BTC', + stake_amount=0.001, + amount=5, + open_date=arrow.utcnow().shift(hours=-1).datetime, + fee_open=fee.return_value, + fee_close=fee.return_value, + exchange='bittrex', + open_rate=1, ) assert not strategy.min_roi_reached(trade, 0.02, arrow.utcnow().shift(minutes=-56).datetime) From 129a88d5da1879e1cae93e1771a995da6d5f0bfc Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 11 Mar 2020 19:53:28 +0100 Subject: [PATCH 1978/3421] Extract emptyness check to it's own method --- freqtrade/data/history/idatahandler.py | 27 ++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index 87810c95f..bde9612f2 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -147,12 +147,7 @@ class IDataHandler(ABC): pairdf = self._ohlcv_load(pair, timeframe, timerange=timerange_startup) - if pairdf.empty: - if warn_no_data: - logger.warning( - f'No history data for pair: "{pair}", timeframe: {timeframe}. ' - 'Use `freqtrade download-data` to download the data' - ) + if self._check_empty_df(pairdf, pair, timeframe, warn_no_data): return pairdf else: enddate = pairdf.iloc[-1]['date'] @@ -160,12 +155,7 @@ class IDataHandler(ABC): if timerange_startup: self._validate_pairdata(pair, pairdf, timerange_startup) pairdf = trim_dataframe(pairdf, timerange_startup) - if pairdf.empty: - if warn_no_data: - logger.warning( - f'No history data for pair: "{pair}", timeframe: {timeframe}. ' - 'Use `freqtrade download-data` to download the data' - ) + if self._check_empty_df(pairdf, pair, timeframe, warn_no_data): return pairdf # incomplete candles should only be dropped if we didn't trim the end beforehand. @@ -175,6 +165,19 @@ class IDataHandler(ABC): drop_incomplete=(drop_incomplete and enddate == pairdf.iloc[-1]['date'])) + def _check_empty_df(self, pairdf: DataFrame, pair: str, timeframe: str, warn_no_data: bool): + """ + Warn on empty dataframe + """ + if pairdf.empty: + if warn_no_data: + logger.warning( + f'No history data for pair: "{pair}", timeframe: {timeframe}. ' + 'Use `freqtrade download-data` to download the data' + ) + return True + return False + def _validate_pairdata(self, pair, pairdata: DataFrame, timerange: TimeRange): """ Validates pairdata for missing data at start end end and logs warnings. From 81cbb925568dbae6260caf88ced5c90f7abc1a3b Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Wed, 11 Mar 2020 22:30:36 +0100 Subject: [PATCH 1979/3421] Switch to TQDM --- freqtrade/commands/hyperopt_commands.py | 4 +- freqtrade/optimize/hyperopt.py | 71 +++++++++++++++++++------ 2 files changed, 57 insertions(+), 18 deletions(-) diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index 5b2388252..3f61ea66c 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -52,8 +52,8 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: if not export_csv: try: - Hyperopt.print_result_table(config, trials, total_epochs, - not filteroptions['only_best'], print_colorized, 0) + print(Hyperopt.get_result_table(config, trials, total_epochs, + not filteroptions['only_best'], print_colorized, 0)) except KeyboardInterrupt: print('User interrupted..') diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 93fc3c558..e110f7e9c 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -21,7 +21,7 @@ from colorama import init as colorama_init from joblib import (Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects) from pandas import DataFrame, json_normalize, isna -import progressbar +from tqdm import tqdm import tabulate from os import path, popen import io @@ -275,11 +275,37 @@ class Hyperopt: if not self.print_all: # Separate the results explanation string from dots print("\n") - self.print_result_table(self.config, results, self.total_epochs, - self.print_all, self.print_colorized, - self.hyperopt_table_header) + print(self.get_result_table( + self.config, results, self.total_epochs, + self.print_all, self.print_colorized, + self.hyperopt_table_header + ) + ) self.hyperopt_table_header = 2 + def get_results(self, results) -> str: + """ + Log results if it is better than any previous evaluation + """ + output = '' + is_best = results['is_best'] + # if not self.print_all: + # Print '\n' after each 100th epoch to separate dots from the log messages. + # Otherwise output is messy on a terminal. + # return '.', end='' if results['current_epoch'] % 100 != 0 else None # type: ignore + + if self.print_all or is_best: + # if not self.print_all: + # Separate the results explanation string from dots + # print("\n") + output = self.get_result_table( + self.config, results, self.total_epochs, + self.print_all, self.print_colorized, + self.hyperopt_table_header + ) + self.hyperopt_table_header = 2 + return output + @staticmethod def print_results_explanation(results, total_epochs, highlight_best: bool, print_colorized: bool) -> None: @@ -303,13 +329,13 @@ class Hyperopt: f"Objective: {results['loss']:.5f}") @staticmethod - def print_result_table(config: dict, results: list, total_epochs: int, highlight_best: bool, - print_colorized: bool, remove_header: int) -> None: + def get_result_table(config: dict, results: list, total_epochs: int, highlight_best: bool, + print_colorized: bool, remove_header: int) -> str: """ Log result table """ if not results: - return + return '' tabulate.PRESERVE_WHITESPACE = True @@ -380,7 +406,7 @@ class Hyperopt: trials.to_dict(orient='list'), tablefmt='psql', headers='keys', stralign="right" ) - print(table) + return table @staticmethod def export_csv_file(config: dict, results: list, total_epochs: int, highlight_best: bool, @@ -661,6 +687,7 @@ class Hyperopt: try: with Parallel(n_jobs=config_jobs) as parallel: + """ self.progress_bar = progressbar.ProgressBar( min_value=0, max_value=self.total_epochs, @@ -668,9 +695,17 @@ class Hyperopt: line_breaks=True, enable_colors=self.print_colorized ) - self.progress_bar.start() + """ jobs = parallel._effective_n_jobs() logger.info(f'Effective number of parallel workers used: {jobs}') + + # Define progressbar + self.progress_bar = tqdm( + total=self.total_epochs, ncols=108, unit=' Epoch', + bar_format='Epoch {n_fmt}/{total_fmt} ({percentage:3.0f}%)|{bar}|' + ' [{elapsed}<{remaining} {rate_fmt}{postfix}]' + ) + EVALS = ceil(self.total_epochs / jobs) for i in range(EVALS): # Correct the number of epochs to be processed for the last @@ -684,8 +719,7 @@ class Hyperopt: self.fix_optimizer_models_list() # Calculate progressbar outputs - pbar_line = ceil(self._get_height() / 2) - + # pbar_line = ceil(self._get_height() / 2) for j, val in enumerate(f_val): # Use human-friendly indexes here (starting from 1) current = i * jobs + j + 1 @@ -699,20 +733,25 @@ class Hyperopt: # evaluations can take different time. Here they are aligned in the # order they will be shown to the user. val['is_best'] = is_best - - self.print_results(val) - + # print(current) + output = self.get_results(val) + self.progress_bar.write(output) + # self.progress_bar.write(str(len(output.split('\n')[0]))) + self.progress_bar.ncols = len(output.split('\n')[0]) + self.progress_bar.update(1) + """ if pbar_line <= current: self.progress_bar.update(current) pbar_line = current + ceil(self._get_height() / 2) - + """ if is_best: self.current_best_loss = val['loss'] self.trials.append(val) # Save results after each best epoch and every 100 epochs if is_best or current % 100 == 0: self.save_trials() - self.progress_bar.finish() + self.progress_bar.ncols = 108 + self.progress_bar.close() # self.progress_bar.update(current) except KeyboardInterrupt: From 755763ec42b51370c7326e4e90f5c35921ba2125 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Wed, 11 Mar 2020 22:43:27 +0100 Subject: [PATCH 1980/3421] Update requirements --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 3c500839e..7469674cd 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -7,4 +7,4 @@ scikit-learn==0.22.2.post1 scikit-optimize==0.7.4 filelock==3.0.12 joblib==0.14.1 -progressbar2==3.50.0 +tqdm==4.43.0 From 40a413c524b9eb2b2d13e222ac1e81173a1d5b1e Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Wed, 11 Mar 2020 22:50:23 +0100 Subject: [PATCH 1981/3421] More remove of progressbar2 --- freqtrade/loggers.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index 609604ff2..153ce8c80 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -4,7 +4,6 @@ import sys from logging import Formatter from logging.handlers import RotatingFileHandler, SysLogHandler from typing import Any, Dict, List -import progressbar from freqtrade.exceptions import OperationalException @@ -37,8 +36,6 @@ def setup_logging(config: Dict[str, Any]) -> None: # Log level verbosity = config['verbosity'] - progressbar.streams.wrap_stderr() - # Log to stderr log_handlers: List[logging.Handler] = [logging.StreamHandler(sys.stderr)] From 9387ed923c97a2dffebfa1ca57662745d97a0f44 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Thu, 12 Mar 2020 02:07:50 +0100 Subject: [PATCH 1982/3421] fix for empty lines --- freqtrade/optimize/hyperopt.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index e110f7e9c..48a89e1d6 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -289,15 +289,8 @@ class Hyperopt: """ output = '' is_best = results['is_best'] - # if not self.print_all: - # Print '\n' after each 100th epoch to separate dots from the log messages. - # Otherwise output is messy on a terminal. - # return '.', end='' if results['current_epoch'] % 100 != 0 else None # type: ignore if self.print_all or is_best: - # if not self.print_all: - # Separate the results explanation string from dots - # print("\n") output = self.get_result_table( self.config, results, self.total_epochs, self.print_all, self.print_colorized, @@ -735,9 +728,10 @@ class Hyperopt: val['is_best'] = is_best # print(current) output = self.get_results(val) - self.progress_bar.write(output) + if output: + self.progress_bar.write(output) # self.progress_bar.write(str(len(output.split('\n')[0]))) - self.progress_bar.ncols = len(output.split('\n')[0]) + self.progress_bar.ncols = 108 self.progress_bar.update(1) """ if pbar_line <= current: From df1ae565dc09c93b046b2ba79cb5a1ce647c1d09 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Thu, 12 Mar 2020 02:26:41 +0100 Subject: [PATCH 1983/3421] clean-up --- freqtrade/optimize/hyperopt.py | 32 +++----------------------------- 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 48a89e1d6..a6da8c4b8 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -23,7 +23,7 @@ from joblib import (Parallel, cpu_count, delayed, dump, load, from pandas import DataFrame, json_normalize, isna from tqdm import tqdm import tabulate -from os import path, popen +from os import path import io from freqtrade.data.converter import trim_dataframe @@ -640,10 +640,6 @@ class Hyperopt: def _set_random_state(self, random_state: Optional[int]) -> int: return random_state or random.randint(1, 2**16 - 1) - def _get_height(self) -> int: - rows = int((popen('stty size', 'r').read().split())[0]) - return rows - def start(self) -> None: self.random_state = self._set_random_state(self.config.get('hyperopt_random_state', None)) logger.info(f"Using optimizer random state: {self.random_state}") @@ -680,15 +676,6 @@ class Hyperopt: try: with Parallel(n_jobs=config_jobs) as parallel: - """ - self.progress_bar = progressbar.ProgressBar( - min_value=0, - max_value=self.total_epochs, - initial_value=0, - line_breaks=True, - enable_colors=self.print_colorized - ) - """ jobs = parallel._effective_n_jobs() logger.info(f'Effective number of parallel workers used: {jobs}') @@ -712,7 +699,6 @@ class Hyperopt: self.fix_optimizer_models_list() # Calculate progressbar outputs - # pbar_line = ceil(self._get_height() / 2) for j, val in enumerate(f_val): # Use human-friendly indexes here (starting from 1) current = i * jobs + j + 1 @@ -726,18 +712,12 @@ class Hyperopt: # evaluations can take different time. Here they are aligned in the # order they will be shown to the user. val['is_best'] = is_best - # print(current) output = self.get_results(val) if output: self.progress_bar.write(output) - # self.progress_bar.write(str(len(output.split('\n')[0]))) self.progress_bar.ncols = 108 self.progress_bar.update(1) - """ - if pbar_line <= current: - self.progress_bar.update(current) - pbar_line = current + ceil(self._get_height() / 2) - """ + if is_best: self.current_best_loss = val['loss'] self.trials.append(val) @@ -747,8 +727,8 @@ class Hyperopt: self.progress_bar.ncols = 108 self.progress_bar.close() - # self.progress_bar.update(current) except KeyboardInterrupt: + self.progress_bar.close() print('User interrupted..') self.save_trials(final=True) @@ -761,9 +741,3 @@ class Hyperopt: # This is printed when Ctrl+C is pressed quickly, before first epochs have # a chance to be evaluated. print("No epochs evaluated yet, no best result.") - - def __getstate__(self): - state = self.__dict__.copy() - del state['trials'] - del state['progress_bar'] - return state From 1a59fc11be8312c19cd5723f641ac66128b05117 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Thu, 12 Mar 2020 02:36:18 +0100 Subject: [PATCH 1984/3421] doh --- freqtrade/optimize/hyperopt.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index a6da8c4b8..9ff4a1ead 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -741,3 +741,9 @@ class Hyperopt: # This is printed when Ctrl+C is pressed quickly, before first epochs have # a chance to be evaluated. print("No epochs evaluated yet, no best result.") + + def __getstate__(self): + state = self.__dict__.copy() + del state['trials'] + del state['progress_bar'] + return state From 5737139979351eab8482cbe230b111310e11981b Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Thu, 12 Mar 2020 16:47:09 +0100 Subject: [PATCH 1985/3421] Small fix --- freqtrade/optimize/hyperopt.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 9ff4a1ead..a5921703f 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -7,6 +7,7 @@ This module contains the hyperopt logic import locale import logging import random +import sys import warnings from math import ceil from collections import OrderedDict @@ -270,6 +271,7 @@ class Hyperopt: # Print '\n' after each 100th epoch to separate dots from the log messages. # Otherwise output is messy on a terminal. print('.', end='' if results['current_epoch'] % 100 != 0 else None) # type: ignore + sys.stdout.flush() if self.print_all or is_best: if not self.print_all: From 6f67b8d9b900961afb93508214d981925261d3ec Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 12 Mar 2020 19:50:46 +0100 Subject: [PATCH 1986/3421] iCheck after clean_dataframe, too --- freqtrade/data/history/idatahandler.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index bde9612f2..b0a6a97dc 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -159,11 +159,13 @@ class IDataHandler(ABC): return pairdf # incomplete candles should only be dropped if we didn't trim the end beforehand. - return clean_ohlcv_dataframe(pairdf, timeframe, - pair=pair, - fill_missing=fill_missing, - drop_incomplete=(drop_incomplete and - enddate == pairdf.iloc[-1]['date'])) + pairdf = clean_ohlcv_dataframe(pairdf, timeframe, + pair=pair, + fill_missing=fill_missing, + drop_incomplete=(drop_incomplete and + enddate == pairdf.iloc[-1]['date'])) + self._check_empty_df(pairdf, pair, timeframe, warn_no_data) + return pairdf def _check_empty_df(self, pairdf: DataFrame, pair: str, timeframe: str, warn_no_data: bool): """ From ebb0187f4040aa7f23ed54cacd8faa9919640994 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 13 Mar 2020 03:54:56 +0300 Subject: [PATCH 1987/3421] dataframe -> df_analyzed in backtesting and edge --- freqtrade/edge/edge_positioning.py | 14 +++++++------- freqtrade/optimize/backtesting.py | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index a24e29efb..256b67383 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -137,10 +137,10 @@ class Edge: pair_data = pair_data.sort_values(by=['date']) pair_data = pair_data.reset_index(drop=True) - dataframe = self.strategy.advise_sell( + df_analyzed = self.strategy.advise_sell( self.strategy.advise_buy(pair_data, {'pair': pair}), {'pair': pair})[headers].copy() - trades += self._find_trades_for_stoploss_range(dataframe, pair, self._stoploss_range) + trades += self._find_trades_for_stoploss_range(df_analyzed, pair, self._stoploss_range) # If no trade found then exit if len(trades) == 0: @@ -359,11 +359,11 @@ class Edge: # Returning a list of pairs in order of "expectancy" return final - def _find_trades_for_stoploss_range(self, dataframe, pair, stoploss_range): - buy_column = dataframe['buy'].values - sell_column = dataframe['sell'].values - date_column = dataframe['date'].values - ohlc_columns = dataframe[['open', 'high', 'low', 'close']].values + def _find_trades_for_stoploss_range(self, df, pair, stoploss_range): + buy_column = df['buy'].values + sell_column = df['sell'].values + date_column = df['date'].values + ohlc_columns = df[['open', 'high', 'low', 'close']].values result: list = [] for stoploss in stoploss_range: diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 949c072c5..210fe3c66 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -164,19 +164,19 @@ class Backtesting: pair_data.loc[:, 'buy'] = 0 # cleanup from previous run pair_data.loc[:, 'sell'] = 0 # cleanup from previous run - dataframe = self.strategy.advise_sell( + df_analyzed = self.strategy.advise_sell( self.strategy.advise_buy(pair_data, {'pair': pair}), {'pair': pair})[headers].copy() # To avoid using data from future, we use buy/sell signals shifted # from the previous candle - dataframe.loc[:, 'buy'] = dataframe['buy'].shift(1) - dataframe.loc[:, 'sell'] = dataframe['sell'].shift(1) + df_analyzed.loc[:, 'buy'] = df_analyzed['buy'].shift(1) + df_analyzed.loc[:, 'sell'] = df_analyzed['sell'].shift(1) - dataframe.drop(dataframe.head(1).index, inplace=True) + df_analyzed.drop(df_analyzed.head(1).index, inplace=True) # Convert from Pandas to list for performance reasons # (Looping Pandas is slow.) - data[pair] = [x for x in dataframe.itertuples()] + data[pair] = [x for x in df_analyzed.itertuples()] return data def _get_close_rate(self, sell_row, trade: Trade, sell: SellCheckTuple, From b2952cd42ad22ecb0e623909524c07ac273803f3 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 13 Mar 2020 03:58:16 +0300 Subject: [PATCH 1988/3421] remove redundant dict --- freqtrade/plot/plotting.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index cfbda6714..220056d2d 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -454,10 +454,8 @@ def load_and_plot_trades(config: Dict[str, Any]): for pair, data in plot_elements["ohlcv"].items(): pair_counter += 1 logger.info("analyse pair %s", pair) - ohlcv = {} - ohlcv[pair] = data - dataframe = strategy.analyze_ticker(ohlcv[pair], {'pair': pair}) + dataframe = strategy.analyze_ticker(data, {'pair': pair}) trades_pair = trades.loc[trades['pair'] == pair] trades_pair = extract_trades_of_period(dataframe, trades_pair) From ddfe5b5f1cb4788936699afbc36c1f19e85d2fc4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 13 Mar 2020 04:00:24 +0300 Subject: [PATCH 1989/3421] dataframe -> df_analyzed in plotting --- freqtrade/plot/plotting.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 220056d2d..be7be2de0 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -455,13 +455,13 @@ def load_and_plot_trades(config: Dict[str, Any]): pair_counter += 1 logger.info("analyse pair %s", pair) - dataframe = strategy.analyze_ticker(data, {'pair': pair}) + df_analyzed = strategy.analyze_ticker(data, {'pair': pair}) trades_pair = trades.loc[trades['pair'] == pair] - trades_pair = extract_trades_of_period(dataframe, trades_pair) + trades_pair = extract_trades_of_period(df_analyzed, trades_pair) fig = generate_candlestick_graph( pair=pair, - data=dataframe, + data=df_analyzed, trades=trades_pair, indicators1=config.get("indicators1", []), indicators2=config.get("indicators2", []), From a7ed51c6424202dccb27f44a847721dbbf4eecde Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 13 Mar 2020 04:04:23 +0300 Subject: [PATCH 1990/3421] return back the name of the hyperopt data file --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index ed58db977..a6b13f93f 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -76,7 +76,7 @@ class Hyperopt: self.trials_file = (self.config['user_data_dir'] / 'hyperopt_results' / 'hyperopt_results.pickle') self.data_pickle_file = (self.config['user_data_dir'] / - 'hyperopt_results' / 'hyperopt_data.pkl') + 'hyperopt_results' / 'hyperopt_tickerdata.pkl') self.total_epochs = config.get('epochs', 0) self.current_best_loss = 100 From 59fadabb5ba01bc113c0d87cced31a7e7074df66 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 13 Mar 2020 20:26:14 +0300 Subject: [PATCH 1991/3421] Fix merging --- freqtrade/data/history/idatahandler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index ae050103b..1bb4d5971 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -150,7 +150,7 @@ class IDataHandler(ABC): if self._check_empty_df(pairdf, pair, timeframe, warn_no_data): return pairdf else: - enddate = df.iloc[-1]['date'] + enddate = pairdf.iloc[-1]['date'] if timerange_startup: self._validate_pairdata(pair, pairdf, timerange_startup) From c56cbc21b1658102d912435fa00316ae3da51443 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 14 Mar 2020 10:42:01 +0100 Subject: [PATCH 1992/3421] Remove indexing warning in edge --- freqtrade/edge/edge_positioning.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index 256b67383..d196ab4b3 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -317,7 +317,7 @@ class Edge: } # Group by (pair and stoploss) by applying above aggregator - df = results.groupby(['pair', 'stoploss'])['profit_abs', 'trade_duration'].agg( + df = results.groupby(['pair', 'stoploss'])[['profit_abs', 'trade_duration']].agg( groupby_aggregator).reset_index(col_level=1) # Dropping level 0 as we don't need it From 308d8fe2a9daf78fd58642c884dd6a9c4bd9a119 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 14 Mar 2020 10:44:46 +0100 Subject: [PATCH 1993/3421] Remove deprecation warnings due to date conversion --- tests/edge/test_edge.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index c68ac477c..3bebeee65 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -163,8 +163,8 @@ def test_edge_results(edge_conf, mocker, caplog, data) -> None: for c, trade in enumerate(data.trades): res = results.iloc[c] assert res.exit_type == trade.sell_reason - assert res.open_time == np.datetime64(_get_frame_time_from_offset(trade.open_tick)) - assert res.close_time == np.datetime64(_get_frame_time_from_offset(trade.close_tick)) + assert res.open_time == _get_frame_time_from_offset(trade.open_tick).replace(tzinfo=None) + assert res.close_time == _get_frame_time_from_offset(trade.close_tick).replace(tzinfo=None) def test_adjust(mocker, edge_conf): From 27faf12fdeef84f404aa7bf32f27e7591cc1a910 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sat, 14 Mar 2020 22:15:03 +0100 Subject: [PATCH 1994/3421] Fix if no file exists --- freqtrade/commands/arguments.py | 2 +- freqtrade/commands/cli_options.py | 5 +++++ freqtrade/data/btanalysis.py | 8 ++++++-- freqtrade/plot/plotting.py | 19 +++++++++++++++---- tests/data/test_btanalysis.py | 5 ++++- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 1a8cca72b..66fa0b038 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -59,7 +59,7 @@ ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchang ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", "trade_source", "export", "exportfilename", - "timerange", "ticker_interval"] + "timerange", "ticker_interval", "skip_trades"] ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source", "ticker_interval"] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 42c697d56..187e0a424 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -413,6 +413,11 @@ AVAILABLE_CLI_OPTIONS = { metavar='INT', default=750, ), + "skip_trades": Arg( + '--skip-trades', + help='Skip using trades file from backtesting and DB.', + action='store_true', + ), "trade_source": Arg( '--trade-source', help='Specify the source for trades (Can be DB or file (backtest file)) ' diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 681bf6734..fc938ad7e 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -111,7 +111,7 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: t.calc_profit(), t.calc_profit_ratio(), t.open_rate, t.close_rate, t.amount, (round((t.close_date.timestamp() - t.open_date.timestamp()) / 60, 2) - if t.close_date else None), + if t.close_date else None), t.sell_reason, t.fee_open, t.fee_close, t.open_rate_requested, @@ -129,12 +129,16 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: return trades -def load_trades(source: str, db_url: str, exportfilename: str) -> pd.DataFrame: +def load_trades(source: str, db_url: str, exportfilename: str, skip_trades: bool) -> pd.DataFrame: """ Based on configuration option "trade_source": * loads data from DB (using `db_url`) * loads data from backtestfile (using `exportfilename`) """ + if skip_trades: + df = pd.DataFrame(columns=BT_DATA_COLUMNS) + return df + if source == "DB": return load_trades_from_db(db_url) elif source == "file": diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index be7be2de0..cb2686878 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -3,6 +3,7 @@ from pathlib import Path from typing import Any, Dict, List import pandas as pd +from os.path import isfile from freqtrade.configuration import TimeRange from freqtrade.data.btanalysis import (calculate_max_drawdown, @@ -48,11 +49,21 @@ def init_plotscript(config): data_format=config.get('dataformat_ohlcv', 'json'), ) - trades = load_trades(config['trade_source'], - db_url=config.get('db_url'), - exportfilename=config.get('exportfilename'), - ) + skip_trades = False + if not isfile(config.get('exportfilename')) and config['trade_source'] == 'file': + logger.info("Backtest file is missing skipping trades.") + skip_trades = True + elif config.get('skip_trades', False): + skip_trades = True + + trades = load_trades( + config['trade_source'], + db_url=config.get('db_url'), + exportfilename=config.get('exportfilename'), + skip_trades=skip_trades + ) trades = trim_dataframe(trades, timerange, 'open_time') + return {"ohlcv": data, "trades": trades, "pairs": pairs, diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index da5d225b9..44e9c1072 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -104,6 +104,7 @@ def test_load_trades(default_conf, mocker): load_trades("DB", db_url=default_conf.get('db_url'), exportfilename=default_conf.get('exportfilename'), + skip_trades=False ) assert db_mock.call_count == 1 @@ -114,7 +115,9 @@ def test_load_trades(default_conf, mocker): default_conf['exportfilename'] = "testfile.json" load_trades("file", db_url=default_conf.get('db_url'), - exportfilename=default_conf.get('exportfilename'),) + exportfilename=default_conf.get('exportfilename'), + skip_trades=False + ) assert db_mock.call_count == 0 assert bt_mock.call_count == 1 From cf7e80f45d5d664c1dcb1cc92335cffb67186d12 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sat, 14 Mar 2020 23:55:13 +0100 Subject: [PATCH 1995/3421] Docs and logging --- docs/plotting.md | 62 +++++++++++++++++++++++++------------- freqtrade/plot/plotting.py | 2 +- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/docs/plotting.md b/docs/plotting.md index 3eef8f8e7..ef28f0fe3 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -23,44 +23,64 @@ The `freqtrade plot-dataframe` subcommand shows an interactive graph with three Possible arguments: ``` -usage: freqtrade plot-dataframe [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME] - [--strategy-path PATH] [-p PAIRS [PAIRS ...]] [--indicators1 INDICATORS1 [INDICATORS1 ...]] - [--indicators2 INDICATORS2 [INDICATORS2 ...]] [--plot-limit INT] [--db-url PATH] - [--trade-source {DB,file}] [--export EXPORT] [--export-filename PATH] [--timerange TIMERANGE] - [-i TICKER_INTERVAL] +usage: freqtrade plot-dataframe [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] [-s NAME] + [--strategy-path PATH] [-p PAIRS [PAIRS ...]] + [--indicators1 INDICATORS1 [INDICATORS1 ...]] + [--indicators2 INDICATORS2 [INDICATORS2 ...]] + [--plot-limit INT] [--db-url PATH] + [--trade-source {DB,file}] [--export EXPORT] + [--export-filename PATH] + [--timerange TIMERANGE] [-i TICKER_INTERVAL] + [--skip-trades] optional arguments: -h, --help show this help message and exit -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] - Show profits for only these pairs. Pairs are space-separated. + Show profits for only these pairs. Pairs are space- + separated. --indicators1 INDICATORS1 [INDICATORS1 ...] - Set indicators from your strategy you want in the first row of the graph. Space-separated list. Example: + Set indicators from your strategy you want in the + first row of the graph. Space-separated list. Example: `ema3 ema5`. Default: `['sma', 'ema3', 'ema5']`. --indicators2 INDICATORS2 [INDICATORS2 ...] - Set indicators from your strategy you want in the third row of the graph. Space-separated list. Example: + Set indicators from your strategy you want in the + third row of the graph. Space-separated list. Example: `fastd fastk`. Default: `['macd', 'macdsignal']`. - --plot-limit INT Specify tick limit for plotting. Notice: too high values cause huge files. Default: 750. - --db-url PATH Override trades database URL, this is useful in custom deployments (default: `sqlite:///tradesv3.sqlite` - for Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for Dry Run). + --plot-limit INT Specify tick limit for plotting. Notice: too high + values cause huge files. Default: 750. + --db-url PATH Override trades database URL, this is useful in custom + deployments (default: `sqlite:///tradesv3.sqlite` for + Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for + Dry Run). --trade-source {DB,file} - Specify the source for trades (Can be DB or file (backtest file)) Default: file - --export EXPORT Export backtest results, argument are: trades. Example: `--export=trades` + Specify the source for trades (Can be DB or file + (backtest file)) Default: file + --export EXPORT Export backtest results, argument are: trades. + Example: `--export=trades` --export-filename PATH - Save backtest results to the file with this filename. Requires `--export` to be set as well. Example: - `--export-filename=user_data/backtest_results/backtest_today.json` + Save backtest results to the file with this filename. + Requires `--export` to be set as well. Example: + `--export-filename=user_data/backtest_results/backtest + _today.json` --timerange TIMERANGE Specify what timerange of data to use. -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL - Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`). + Specify ticker interval (`1m`, `5m`, `30m`, `1h`, + `1d`). + --skip-trades Skip using trades file from backtesting and DB. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified. Special values are: 'syslog', 'journald'. See the documentation for more + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more details. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to - `-` to read config from stdin. + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. -d PATH, --datadir PATH Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH @@ -68,9 +88,9 @@ Common arguments: Strategy arguments: -s NAME, --strategy NAME - Specify strategy class name which will be used by the bot. + Specify strategy class name which will be used by the + bot. --strategy-path PATH Specify additional strategy lookup path. - ``` Example: diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index cb2686878..8da61597f 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -51,7 +51,7 @@ def init_plotscript(config): skip_trades = False if not isfile(config.get('exportfilename')) and config['trade_source'] == 'file': - logger.info("Backtest file is missing skipping trades.") + logger.warning("Backtest file is missing skipping trades.") skip_trades = True elif config.get('skip_trades', False): skip_trades = True From 2c0980aa3ab2af40e46411819f2e53b76eae6fa4 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 15 Mar 2020 00:09:08 +0100 Subject: [PATCH 1996/3421] Tests --- tests/data/test_btanalysis.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 44e9c1072..95f371d7f 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -122,6 +122,18 @@ def test_load_trades(default_conf, mocker): assert db_mock.call_count == 0 assert bt_mock.call_count == 1 + db_mock.reset_mock() + bt_mock.reset_mock() + default_conf['exportfilename'] = "testfile.json" + load_trades("file", + db_url=default_conf.get('db_url'), + exportfilename=default_conf.get('exportfilename'), + skip_trades=True + ) + + assert db_mock.call_count == 0 + assert bt_mock.call_count == 0 + def test_combine_dataframes_with_mean(testdatadir): pairs = ["ETH/BTC", "ADA/BTC"] From 0f1640bed4691cc0d27ed1d665e77c8d2dd85944 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Mar 2020 09:39:45 +0100 Subject: [PATCH 1997/3421] convert exportfilename to Path when config parsing --- freqtrade/configuration/configuration.py | 1 + freqtrade/data/btanalysis.py | 8 ++++++-- freqtrade/optimize/backtesting.py | 2 +- tests/data/test_btanalysis.py | 5 +++-- tests/optimize/test_backtesting.py | 1 + tests/test_plotting.py | 6 +++--- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 0645d72be..ce2101441 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -196,6 +196,7 @@ class Configuration: if self.args.get('exportfilename'): self._args_to_config(config, argname='exportfilename', logstring='Storing backtest results to {} ...') + config['exportfilename'] = Path(config['exportfilename']) else: config['exportfilename'] = (config['user_data_dir'] / 'backtest_results/backtest-result.json') diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 681bf6734..e8ec03fea 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -129,16 +129,20 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: return trades -def load_trades(source: str, db_url: str, exportfilename: str) -> pd.DataFrame: +def load_trades(source: str, db_url: str, exportfilename: Path) -> pd.DataFrame: """ Based on configuration option "trade_source": * loads data from DB (using `db_url`) * loads data from backtestfile (using `exportfilename`) + :param source: "DB" or "file" - specify source to load from + :param db_url: sqlalchemy formatted url to a database + :param exportfilename: Json file generated by backtesting + :return: DataFrame containing trades """ if source == "DB": return load_trades_from_db(db_url) elif source == "file": - return load_backtest_data(Path(exportfilename)) + return load_backtest_data(exportfilename) def extract_trades_of_period(dataframe: pd.DataFrame, trades: pd.DataFrame) -> pd.DataFrame: diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 210fe3c66..40e6590f7 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -421,7 +421,7 @@ class Backtesting: for strategy, results in all_results.items(): if self.config.get('export', False): - self._store_backtest_result(Path(self.config['exportfilename']), results, + self._store_backtest_result(self.config['exportfilename'], results, strategy if len(self.strategylist) > 1 else None) print(f"Result for strategy {strategy}") diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index da5d225b9..7513991ea 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -1,8 +1,9 @@ +from pathlib import Path from unittest.mock import MagicMock import pytest from arrow import Arrow -from pandas import DataFrame, DateOffset, to_datetime, Timestamp +from pandas import DataFrame, DateOffset, Timestamp, to_datetime from freqtrade.configuration import TimeRange from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, @@ -111,7 +112,7 @@ def test_load_trades(default_conf, mocker): db_mock.reset_mock() bt_mock.reset_mock() - default_conf['exportfilename'] = "testfile.json" + default_conf['exportfilename'] = Path("testfile.json") load_trades("file", db_url=default_conf.get('db_url'), exportfilename=default_conf.get('exportfilename'),) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index f78b44704..da23a9af4 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -224,6 +224,7 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> assert 'export' in config assert log_has('Parameter --export detected: {} ...'.format(config['export']), caplog) assert 'exportfilename' in config + assert isinstance(config['exportfilename'], Path) assert log_has('Storing backtest results to {} ...'.format(config['exportfilename']), caplog) assert 'fee' in config diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 42010ad0d..a5c965429 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -49,7 +49,7 @@ def test_init_plotscript(default_conf, mocker, testdatadir): default_conf['trade_source'] = "file" default_conf['ticker_interval'] = "5m" default_conf["datadir"] = testdatadir - default_conf['exportfilename'] = str(testdatadir / "backtest-result_test.json") + default_conf['exportfilename'] = testdatadir / "backtest-result_test.json" ret = init_plotscript(default_conf) assert "ohlcv" in ret assert "trades" in ret @@ -318,7 +318,7 @@ def test_start_plot_dataframe(mocker): def test_load_and_plot_trades(default_conf, mocker, caplog, testdatadir): default_conf['trade_source'] = 'file' default_conf["datadir"] = testdatadir - default_conf['exportfilename'] = str(testdatadir / "backtest-result_test.json") + default_conf['exportfilename'] = testdatadir / "backtest-result_test.json" default_conf['indicators1'] = ["sma5", "ema10"] default_conf['indicators2'] = ["macd"] default_conf['pairs'] = ["ETH/BTC", "LTC/BTC"] @@ -374,7 +374,7 @@ def test_start_plot_profit_error(mocker): def test_plot_profit(default_conf, mocker, testdatadir, caplog): default_conf['trade_source'] = 'file' default_conf["datadir"] = testdatadir - default_conf['exportfilename'] = str(testdatadir / "backtest-result_test.json") + default_conf['exportfilename'] = testdatadir / "backtest-result_test.json" default_conf['pairs'] = ["ETH/BTC", "LTC/BTC"] profit_mock = MagicMock() From 328dbd3930981103d2646e27e53156f104e59745 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Mar 2020 15:04:48 +0100 Subject: [PATCH 1998/3421] Remove unnecessary parameter to generate_text_table_sell_reason --- freqtrade/optimize/backtesting.py | 7 +++---- freqtrade/optimize/optimize_reports.py | 8 ++++---- tests/optimize/test_optimize_reports.py | 6 ++---- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 40e6590f7..5ee5a058f 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -7,7 +7,7 @@ import logging from copy import deepcopy from datetime import datetime, timedelta from pathlib import Path -from typing import Any, Dict, List, NamedTuple, Optional +from typing import Any, Dict, List, NamedTuple, Optional, Tuple import arrow from pandas import DataFrame @@ -108,7 +108,7 @@ class Backtesting: # And the regular "stoploss" function would not apply to that case self.strategy.order_types['stoploss_on_exchange'] = False - def load_bt_data(self): + def load_bt_data(self) -> Tuple[Dict[str, DataFrame], TimeRange]: timerange = TimeRange.parse_timerange(None if self.config.get( 'timerange') is None else str(self.config.get('timerange'))) @@ -432,8 +432,7 @@ class Backtesting: print(' BACKTESTING REPORT '.center(len(table.splitlines()[0]), '=')) print(table) - table = generate_text_table_sell_reason(data, - stake_currency=self.config['stake_currency'], + table = generate_text_table_sell_reason(stake_currency=self.config['stake_currency'], max_open_trades=self.config['max_open_trades'], results=results) if isinstance(table, str): diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 39bde50a8..ee29aa283 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -69,12 +69,12 @@ def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_tra floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") # type: ignore -def generate_text_table_sell_reason( - data: Dict[str, Dict], stake_currency: str, max_open_trades: int, results: DataFrame -) -> str: +def generate_text_table_sell_reason(stake_currency: str, max_open_trades: int, + results: DataFrame) -> str: """ Generate small table outlining Backtest results - :param data: Dict of containing data that was used during backtesting. + :param stake_currency: Stakecurrency used + :param max_open_trades: Max_open_trades parameter :param results: Dataframe containing the backtest results :return: pretty printed table with tabulate as string """ diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 285ecaa02..5e68a5ef8 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -61,10 +61,8 @@ def test_generate_text_table_sell_reason(default_conf, mocker): '| stop_loss | 1 | 0 | 0 | 1 |' ' -10 | -10 | -0.2 | -5 |' ) - assert generate_text_table_sell_reason( - data={'ETH/BTC': {}}, - stake_currency='BTC', max_open_trades=2, - results=results) == result_str + assert generate_text_table_sell_reason(stake_currency='BTC', max_open_trades=2, + results=results) == result_str def test_generate_text_table_strategy(default_conf, mocker): From 6106d59e1a0122863849e03e671db698f02c5c96 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Mar 2020 15:17:35 +0100 Subject: [PATCH 1999/3421] Move store_backtest_results to optimize_reports --- freqtrade/optimize/backtesting.py | 18 ------------------ freqtrade/optimize/optimize_reports.py | 26 +++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 5ee5a058f..9dd1b8429 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -6,7 +6,6 @@ This module contains the backtesting logic import logging from copy import deepcopy from datetime import datetime, timedelta -from pathlib import Path from typing import Any, Dict, List, NamedTuple, Optional, Tuple import arrow @@ -134,23 +133,6 @@ class Backtesting: return data, timerange - def _store_backtest_result(self, recordfilename: Path, results: DataFrame, - strategyname: Optional[str] = None) -> None: - - records = [(t.pair, t.profit_percent, t.open_time.timestamp(), - t.close_time.timestamp(), t.open_index - 1, t.trade_duration, - t.open_rate, t.close_rate, t.open_at_end, t.sell_reason.value) - for index, t in results.iterrows()] - - if records: - if strategyname: - # Inject strategyname to filename - recordfilename = Path.joinpath( - recordfilename.parent, - f'{recordfilename.stem}-{strategyname}').with_suffix(recordfilename.suffix) - logger.info(f'Dumping backtest results to {recordfilename}') - file_dump_json(recordfilename, records) - def _get_ohlcv_as_lists(self, processed: Dict) -> Dict[str, DataFrame]: """ Helper function to convert a processed dataframes into lists for performance reasons. diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index ee29aa283..fb407f681 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -1,9 +1,33 @@ +import logging from datetime import timedelta -from typing import Dict +from pathlib import Path +from typing import Dict, Optional from pandas import DataFrame from tabulate import tabulate +from freqtrade.misc import file_dump_json + +logger = logging.getLogger(__name__) + + +def store_backtest_result(recordfilename: Path, results: DataFrame, + strategyname: Optional[str] = None) -> None: + + records = [(t.pair, t.profit_percent, t.open_time.timestamp(), + t.close_time.timestamp(), t.open_index - 1, t.trade_duration, + t.open_rate, t.close_rate, t.open_at_end, t.sell_reason.value) + for index, t in results.iterrows()] + + if records: + if strategyname: + # Inject strategyname to filename + recordfilename = Path.joinpath( + recordfilename.parent, + f'{recordfilename.stem}-{strategyname}').with_suffix(recordfilename.suffix) + logger.info(f'Dumping backtest results to {recordfilename}') + file_dump_json(recordfilename, records) + def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_trades: int, results: DataFrame, skip_nan: bool = False) -> str: From a13d581658173fb764c110ae9966767f17c85e7d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Mar 2020 15:17:53 +0100 Subject: [PATCH 2000/3421] Move backtest-result visualization out of backtesting class --- freqtrade/optimize/backtesting.py | 48 ++------------------------ freqtrade/optimize/optimize_reports.py | 44 +++++++++++++++++++++++ 2 files changed, 47 insertions(+), 45 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 9dd1b8429..323331bc6 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -18,10 +18,7 @@ from freqtrade.data.converter import trim_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds -from freqtrade.misc import file_dump_json -from freqtrade.optimize.optimize_reports import ( - generate_text_table, generate_text_table_sell_reason, - generate_text_table_strategy) +from freqtrade.optimize.optimize_reports import show_backtest_results from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.state import RunMode @@ -399,44 +396,5 @@ class Backtesting: max_open_trades=max_open_trades, position_stacking=position_stacking, ) - - for strategy, results in all_results.items(): - - if self.config.get('export', False): - self._store_backtest_result(self.config['exportfilename'], results, - strategy if len(self.strategylist) > 1 else None) - - print(f"Result for strategy {strategy}") - table = generate_text_table(data, stake_currency=self.config['stake_currency'], - max_open_trades=self.config['max_open_trades'], - results=results) - if isinstance(table, str): - print(' BACKTESTING REPORT '.center(len(table.splitlines()[0]), '=')) - print(table) - - table = generate_text_table_sell_reason(stake_currency=self.config['stake_currency'], - max_open_trades=self.config['max_open_trades'], - results=results) - if isinstance(table, str): - print(' SELL REASON STATS '.center(len(table.splitlines()[0]), '=')) - print(table) - - table = generate_text_table(data, - stake_currency=self.config['stake_currency'], - max_open_trades=self.config['max_open_trades'], - results=results.loc[results.open_at_end], skip_nan=True) - if isinstance(table, str): - print(' LEFT OPEN TRADES REPORT '.center(len(table.splitlines()[0]), '=')) - print(table) - if isinstance(table, str): - print('=' * len(table.splitlines()[0])) - print() - if len(all_results) > 1: - # Print Strategy summary table - table = generate_text_table_strategy(self.config['stake_currency'], - self.config['max_open_trades'], - all_results=all_results) - print(' STRATEGY SUMMARY '.center(len(table.splitlines()[0]), '=')) - print(table) - print('=' * len(table.splitlines()[0])) - print('\nFor more details, please look at the detail tables above') + # Show backtest results + show_backtest_results(self.config, data, all_results) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index fb407f681..fef0accb0 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -197,3 +197,47 @@ def generate_edge_table(results: dict) -> str: # Ignore type as floatfmt does allow tuples but mypy does not know that return tabulate(tabular_data, headers=headers, floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") # type: ignore + + +def show_backtest_results(config: Dict, btdata: Dict[str, DataFrame], + all_results: Dict[str, DataFrame]): + for strategy, results in all_results.items(): + + if config.get('export', False): + store_backtest_result(config['exportfilename'], results, + strategy if len(all_results) > 1 else None) + + print(f"Result for strategy {strategy}") + table = generate_text_table(btdata, stake_currency=config['stake_currency'], + max_open_trades=config['max_open_trades'], + results=results) + if isinstance(table, str): + print(' BACKTESTING REPORT '.center(len(table.splitlines()[0]), '=')) + print(table) + + table = generate_text_table_sell_reason(stake_currency=config['stake_currency'], + max_open_trades=config['max_open_trades'], + results=results) + if isinstance(table, str): + print(' SELL REASON STATS '.center(len(table.splitlines()[0]), '=')) + print(table) + + table = generate_text_table(btdata, + stake_currency=config['stake_currency'], + max_open_trades=config['max_open_trades'], + results=results.loc[results.open_at_end], skip_nan=True) + if isinstance(table, str): + print(' LEFT OPEN TRADES REPORT '.center(len(table.splitlines()[0]), '=')) + print(table) + if isinstance(table, str): + print('=' * len(table.splitlines()[0])) + print() + if len(all_results) > 1: + # Print Strategy summary table + table = generate_text_table_strategy(config['stake_currency'], + config['max_open_trades'], + all_results=all_results) + print(' STRATEGY SUMMARY '.center(len(table.splitlines()[0]), '=')) + print(table) + print('=' * len(table.splitlines()[0])) + print('\nFor more details, please look at the detail tables above') From e95665cecaeec2337dee47660674401535b406a7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Mar 2020 15:36:23 +0100 Subject: [PATCH 2001/3421] Make backtestresult storing independent from printing --- freqtrade/optimize/backtesting.py | 6 ++++- freqtrade/optimize/optimize_reports.py | 36 ++++++++++++-------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 323331bc6..1725a7d13 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -18,7 +18,8 @@ from freqtrade.data.converter import trim_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds -from freqtrade.optimize.optimize_reports import show_backtest_results +from freqtrade.optimize.optimize_reports import (show_backtest_results, + store_backtest_result) from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.state import RunMode @@ -396,5 +397,8 @@ class Backtesting: max_open_trades=max_open_trades, position_stacking=position_stacking, ) + + if self.config.get('export', False): + store_backtest_result(self.config['exportfilename'], all_results) # Show backtest results show_backtest_results(self.config, data, all_results) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index fef0accb0..701432071 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -11,22 +11,22 @@ from freqtrade.misc import file_dump_json logger = logging.getLogger(__name__) -def store_backtest_result(recordfilename: Path, results: DataFrame, - strategyname: Optional[str] = None) -> None: +def store_backtest_result(recordfilename: Path, all_results: Dict[str, DataFrame]) -> None: - records = [(t.pair, t.profit_percent, t.open_time.timestamp(), - t.close_time.timestamp(), t.open_index - 1, t.trade_duration, - t.open_rate, t.close_rate, t.open_at_end, t.sell_reason.value) - for index, t in results.iterrows()] + for strategy, results in all_results.items(): + records = [(t.pair, t.profit_percent, t.open_time.timestamp(), + t.close_time.timestamp(), t.open_index - 1, t.trade_duration, + t.open_rate, t.close_rate, t.open_at_end, t.sell_reason.value) + for index, t in results.iterrows()] - if records: - if strategyname: - # Inject strategyname to filename - recordfilename = Path.joinpath( - recordfilename.parent, - f'{recordfilename.stem}-{strategyname}').with_suffix(recordfilename.suffix) - logger.info(f'Dumping backtest results to {recordfilename}') - file_dump_json(recordfilename, records) + if records: + if len(all_results) > 1: + # Inject strategy to filename + recordfilename = Path.joinpath( + recordfilename.parent, + f'{recordfilename.stem}-{strategy}').with_suffix(recordfilename.suffix) + logger.info(f'Dumping backtest results to {recordfilename}') + file_dump_json(recordfilename, records) def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_trades: int, @@ -203,10 +203,6 @@ def show_backtest_results(config: Dict, btdata: Dict[str, DataFrame], all_results: Dict[str, DataFrame]): for strategy, results in all_results.items(): - if config.get('export', False): - store_backtest_result(config['exportfilename'], results, - strategy if len(all_results) > 1 else None) - print(f"Result for strategy {strategy}") table = generate_text_table(btdata, stake_currency=config['stake_currency'], max_open_trades=config['max_open_trades'], @@ -235,8 +231,8 @@ def show_backtest_results(config: Dict, btdata: Dict[str, DataFrame], if len(all_results) > 1: # Print Strategy summary table table = generate_text_table_strategy(config['stake_currency'], - config['max_open_trades'], - all_results=all_results) + config['max_open_trades'], + all_results=all_results) print(' STRATEGY SUMMARY '.center(len(table.splitlines()[0]), '=')) print(table) print('=' * len(table.splitlines()[0])) From fe50a0f3a13e0d0f92084314af081ce1230acaac Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Mar 2020 15:36:53 +0100 Subject: [PATCH 2002/3421] Move test for store_bt_results to optimize_reports --- tests/optimize/test_backtesting.py | 89 +++---------------------- tests/optimize/test_optimize_reports.py | 76 ++++++++++++++++++++- 2 files changed, 83 insertions(+), 82 deletions(-) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index da23a9af4..1c4d3b16a 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -331,8 +331,8 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: mocker.patch('freqtrade.data.history.get_timerange', get_timerange) patch_exchange(mocker) - mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', MagicMock()) - mocker.patch('freqtrade.optimize.backtesting.generate_text_table', MagicMock(return_value=1)) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') + mocker.patch('freqtrade.optimize.backtesting.show_backtest_results') default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] default_conf['ticker_interval'] = '1m' @@ -361,8 +361,8 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> MagicMock(return_value=pd.DataFrame())) mocker.patch('freqtrade.data.history.get_timerange', get_timerange) patch_exchange(mocker) - mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', MagicMock()) - mocker.patch('freqtrade.optimize.backtesting.generate_text_table', MagicMock(return_value=1)) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') + mocker.patch('freqtrade.optimize.backtesting.show_backtest_results') default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] default_conf['ticker_interval'] = "1m" @@ -507,7 +507,6 @@ def test_backtest_only_sell(mocker, default_conf, testdatadir): def test_backtest_alternate_buy_sell(default_conf, fee, mocker, testdatadir): mocker.patch('freqtrade.exchange.Exchange.get_fee', fee) - mocker.patch('freqtrade.optimize.backtesting.file_dump_json', MagicMock()) backtest_conf = _make_backtest_conf(mocker, conf=default_conf, pair='UNITTEST/BTC', datadir=testdatadir) default_conf['ticker_interval'] = '1m' @@ -515,7 +514,6 @@ def test_backtest_alternate_buy_sell(default_conf, fee, mocker, testdatadir): backtesting.strategy.advise_buy = _trend_alternate # Override backtesting.strategy.advise_sell = _trend_alternate # Override results = backtesting.backtest(**backtest_conf) - backtesting._store_backtest_result("test_.json", results) # 200 candles in backtest data # won't buy on first (shifted by 1) # 100 buys signals @@ -586,84 +584,12 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) assert len(evaluate_result_multi(results, '5m', 1)) == 0 -def test_backtest_record(default_conf, fee, mocker): - names = [] - records = [] - patch_exchange(mocker) - mocker.patch('freqtrade.exchange.Exchange.get_fee', fee) - mocker.patch( - 'freqtrade.optimize.backtesting.file_dump_json', - new=lambda n, r: (names.append(n), records.append(r)) - ) - - backtesting = Backtesting(default_conf) - results = pd.DataFrame({"pair": ["UNITTEST/BTC", "UNITTEST/BTC", - "UNITTEST/BTC", "UNITTEST/BTC"], - "profit_percent": [0.003312, 0.010801, 0.013803, 0.002780], - "profit_abs": [0.000003, 0.000011, 0.000014, 0.000003], - "open_time": [Arrow(2017, 11, 14, 19, 32, 00).datetime, - Arrow(2017, 11, 14, 21, 36, 00).datetime, - Arrow(2017, 11, 14, 22, 12, 00).datetime, - Arrow(2017, 11, 14, 22, 44, 00).datetime], - "close_time": [Arrow(2017, 11, 14, 21, 35, 00).datetime, - Arrow(2017, 11, 14, 22, 10, 00).datetime, - Arrow(2017, 11, 14, 22, 43, 00).datetime, - Arrow(2017, 11, 14, 22, 58, 00).datetime], - "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], - "close_rate": [0.002546, 0.003014, 0.003103, 0.003217], - "open_index": [1, 119, 153, 185], - "close_index": [118, 151, 184, 199], - "trade_duration": [123, 34, 31, 14], - "open_at_end": [False, False, False, True], - "sell_reason": [SellType.ROI, SellType.STOP_LOSS, - SellType.ROI, SellType.FORCE_SELL] - }) - backtesting._store_backtest_result("backtest-result.json", results) - assert len(results) == 4 - # Assert file_dump_json was only called once - assert names == ['backtest-result.json'] - records = records[0] - # Ensure records are of correct type - assert len(records) == 4 - - # reset test to test with strategy name - names = [] - records = [] - backtesting._store_backtest_result(Path("backtest-result.json"), results, "DefStrat") - assert len(results) == 4 - # Assert file_dump_json was only called once - assert names == [Path('backtest-result-DefStrat.json')] - records = records[0] - # Ensure records are of correct type - assert len(records) == 4 - - # ('UNITTEST/BTC', 0.00331158, '1510684320', '1510691700', 0, 117) - # Below follows just a typecheck of the schema/type of trade-records - oix = None - for (pair, profit, date_buy, date_sell, buy_index, dur, - openr, closer, open_at_end, sell_reason) in records: - assert pair == 'UNITTEST/BTC' - assert isinstance(profit, float) - # FIX: buy/sell should be converted to ints - assert isinstance(date_buy, float) - assert isinstance(date_sell, float) - assert isinstance(openr, float) - assert isinstance(closer, float) - assert isinstance(open_at_end, bool) - assert isinstance(sell_reason, str) - isinstance(buy_index, pd._libs.tslib.Timestamp) - if oix: - assert buy_index > oix - oix = buy_index - assert dur > 0 - - def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] patch_exchange(mocker) mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', MagicMock()) - mocker.patch('freqtrade.optimize.backtesting.generate_text_table', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.show_backtest_results', MagicMock()) patched_configuration_load_config_file(mocker, default_conf) @@ -705,9 +631,10 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): backtestmock = MagicMock() mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', backtestmock) gen_table_mock = MagicMock() - mocker.patch('freqtrade.optimize.backtesting.generate_text_table', gen_table_mock) + mocker.patch('freqtrade.optimize.optimize_reports.generate_text_table', gen_table_mock) gen_strattable_mock = MagicMock() - mocker.patch('freqtrade.optimize.backtesting.generate_text_table_strategy', gen_strattable_mock) + mocker.patch('freqtrade.optimize.optimize_reports.generate_text_table_strategy', + gen_strattable_mock) patched_configuration_load_config_file(mocker, default_conf) args = [ diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 5e68a5ef8..36c9a93b3 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -1,10 +1,14 @@ +from pathlib import Path + import pandas as pd +from arrow import Arrow from freqtrade.edge import PairInfo from freqtrade.optimize.optimize_reports import ( generate_edge_table, generate_text_table, generate_text_table_sell_reason, - generate_text_table_strategy) + generate_text_table_strategy, store_backtest_result) from freqtrade.strategy.interface import SellType +from tests.conftest import patch_exchange def test_generate_text_table(default_conf, mocker): @@ -113,3 +117,73 @@ def test_generate_edge_table(edge_conf, mocker): assert generate_edge_table(results).count('| ETH/BTC |') == 1 assert generate_edge_table(results).count( '| Risk Reward Ratio | Required Risk Reward | Expectancy |') == 1 + + +def test_backtest_record(default_conf, fee, mocker): + names = [] + records = [] + patch_exchange(mocker) + mocker.patch('freqtrade.exchange.Exchange.get_fee', fee) + mocker.patch( + 'freqtrade.optimize.optimize_reports.file_dump_json', + new=lambda n, r: (names.append(n), records.append(r)) + ) + + results = {'DefStrat': pd.DataFrame({"pair": ["UNITTEST/BTC", "UNITTEST/BTC", + "UNITTEST/BTC", "UNITTEST/BTC"], + "profit_percent": [0.003312, 0.010801, 0.013803, 0.002780], + "profit_abs": [0.000003, 0.000011, 0.000014, 0.000003], + "open_time": [Arrow(2017, 11, 14, 19, 32, 00).datetime, + Arrow(2017, 11, 14, 21, 36, 00).datetime, + Arrow(2017, 11, 14, 22, 12, 00).datetime, + Arrow(2017, 11, 14, 22, 44, 00).datetime], + "close_time": [Arrow(2017, 11, 14, 21, 35, 00).datetime, + Arrow(2017, 11, 14, 22, 10, 00).datetime, + Arrow(2017, 11, 14, 22, 43, 00).datetime, + Arrow(2017, 11, 14, 22, 58, 00).datetime], + "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], + "close_rate": [0.002546, 0.003014, 0.003103, 0.003217], + "open_index": [1, 119, 153, 185], + "close_index": [118, 151, 184, 199], + "trade_duration": [123, 34, 31, 14], + "open_at_end": [False, False, False, True], + "sell_reason": [SellType.ROI, SellType.STOP_LOSS, + SellType.ROI, SellType.FORCE_SELL] + })} + store_backtest_result(Path("backtest-result.json"), results) + # Assert file_dump_json was only called once + assert names == [Path('backtest-result.json')] + records = records[0] + # Ensure records are of correct type + assert len(records) == 4 + + # reset test to test with strategy name + names = [] + records = [] + results['Strat'] = pd.DataFrame() + store_backtest_result(Path("backtest-result.json"), results) + # Assert file_dump_json was only called once + assert names == [Path('backtest-result-DefStrat.json')] + records = records[0] + # Ensure records are of correct type + assert len(records) == 4 + + # ('UNITTEST/BTC', 0.00331158, '1510684320', '1510691700', 0, 117) + # Below follows just a typecheck of the schema/type of trade-records + oix = None + for (pair, profit, date_buy, date_sell, buy_index, dur, + openr, closer, open_at_end, sell_reason) in records: + assert pair == 'UNITTEST/BTC' + assert isinstance(profit, float) + # FIX: buy/sell should be converted to ints + assert isinstance(date_buy, float) + assert isinstance(date_sell, float) + assert isinstance(openr, float) + assert isinstance(closer, float) + assert isinstance(open_at_end, bool) + assert isinstance(sell_reason, str) + isinstance(buy_index, pd._libs.tslib.Timestamp) + if oix: + assert buy_index > oix + oix = buy_index + assert dur > 0 From e1b08ad76caf8482ee712d782bad482c643b0307 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Mar 2020 15:38:26 +0100 Subject: [PATCH 2003/3421] Add docstring to store_backtest_result --- freqtrade/optimize/optimize_reports.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 701432071..abfbaf1d8 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -12,7 +12,11 @@ logger = logging.getLogger(__name__) def store_backtest_result(recordfilename: Path, all_results: Dict[str, DataFrame]) -> None: - + """ + Stores backtest results to file (one file per strategy) + :param recordfilename: Destination filename + :param all_results: Dict of Dataframes, one results dataframe per strategy + """ for strategy, results in all_results.items(): records = [(t.pair, t.profit_percent, t.open_time.timestamp(), t.close_time.timestamp(), t.open_index - 1, t.trade_duration, From 3d4664c2a6da70027189d73a04b75bdd1821f79e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Mar 2020 15:40:12 +0100 Subject: [PATCH 2004/3421] Remove unnecessary import --- freqtrade/optimize/optimize_reports.py | 2 +- tests/optimize/test_optimize_reports.py | 40 ++++++++++++------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index abfbaf1d8..251da9159 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -1,7 +1,7 @@ import logging from datetime import timedelta from pathlib import Path -from typing import Dict, Optional +from typing import Dict from pandas import DataFrame from tabulate import tabulate diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 36c9a93b3..f19668459 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -130,26 +130,26 @@ def test_backtest_record(default_conf, fee, mocker): ) results = {'DefStrat': pd.DataFrame({"pair": ["UNITTEST/BTC", "UNITTEST/BTC", - "UNITTEST/BTC", "UNITTEST/BTC"], - "profit_percent": [0.003312, 0.010801, 0.013803, 0.002780], - "profit_abs": [0.000003, 0.000011, 0.000014, 0.000003], - "open_time": [Arrow(2017, 11, 14, 19, 32, 00).datetime, - Arrow(2017, 11, 14, 21, 36, 00).datetime, - Arrow(2017, 11, 14, 22, 12, 00).datetime, - Arrow(2017, 11, 14, 22, 44, 00).datetime], - "close_time": [Arrow(2017, 11, 14, 21, 35, 00).datetime, - Arrow(2017, 11, 14, 22, 10, 00).datetime, - Arrow(2017, 11, 14, 22, 43, 00).datetime, - Arrow(2017, 11, 14, 22, 58, 00).datetime], - "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], - "close_rate": [0.002546, 0.003014, 0.003103, 0.003217], - "open_index": [1, 119, 153, 185], - "close_index": [118, 151, 184, 199], - "trade_duration": [123, 34, 31, 14], - "open_at_end": [False, False, False, True], - "sell_reason": [SellType.ROI, SellType.STOP_LOSS, - SellType.ROI, SellType.FORCE_SELL] - })} + "UNITTEST/BTC", "UNITTEST/BTC"], + "profit_percent": [0.003312, 0.010801, 0.013803, 0.002780], + "profit_abs": [0.000003, 0.000011, 0.000014, 0.000003], + "open_time": [Arrow(2017, 11, 14, 19, 32, 00).datetime, + Arrow(2017, 11, 14, 21, 36, 00).datetime, + Arrow(2017, 11, 14, 22, 12, 00).datetime, + Arrow(2017, 11, 14, 22, 44, 00).datetime], + "close_time": [Arrow(2017, 11, 14, 21, 35, 00).datetime, + Arrow(2017, 11, 14, 22, 10, 00).datetime, + Arrow(2017, 11, 14, 22, 43, 00).datetime, + Arrow(2017, 11, 14, 22, 58, 00).datetime], + "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], + "close_rate": [0.002546, 0.003014, 0.003103, 0.003217], + "open_index": [1, 119, 153, 185], + "close_index": [118, 151, 184, 199], + "trade_duration": [123, 34, 31, 14], + "open_at_end": [False, False, False, True], + "sell_reason": [SellType.ROI, SellType.STOP_LOSS, + SellType.ROI, SellType.FORCE_SELL] + })} store_backtest_result(Path("backtest-result.json"), results) # Assert file_dump_json was only called once assert names == [Path('backtest-result.json')] From 8c33e07dc660853eee0eee0d10109063f52d11cf Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 15 Mar 2020 21:20:32 +0100 Subject: [PATCH 2005/3421] Update based on comments --- docs/plotting.md | 2 +- freqtrade/commands/arguments.py | 2 +- freqtrade/commands/cli_options.py | 6 +++--- freqtrade/data/btanalysis.py | 6 +++--- freqtrade/plot/plotting.py | 13 ++++++------- tests/data/test_btanalysis.py | 6 +++--- 6 files changed, 17 insertions(+), 18 deletions(-) diff --git a/docs/plotting.md b/docs/plotting.md index ef28f0fe3..56906ebec 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -68,7 +68,7 @@ optional arguments: -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`). - --skip-trades Skip using trades file from backtesting and DB. + --no-trades Skip using trades from backtesting file and DB. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 66fa0b038..8c64c5857 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -59,7 +59,7 @@ ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchang ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", "trade_source", "export", "exportfilename", - "timerange", "ticker_interval", "skip_trades"] + "timerange", "ticker_interval", "no_trades"] ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source", "ticker_interval"] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 187e0a424..5cf1b7fce 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -413,9 +413,9 @@ AVAILABLE_CLI_OPTIONS = { metavar='INT', default=750, ), - "skip_trades": Arg( - '--skip-trades', - help='Skip using trades file from backtesting and DB.', + "no_trades": Arg( + '--no-trades', + help='Skip using trades from backtesting file and DB.', action='store_true', ), "trade_source": Arg( diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 8670f30c6..17b243f56 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -129,7 +129,7 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: return trades -def load_trades(source: str, db_url: str, exportfilename: Path, skip_trades: bool) -> pd.DataFrame: +def load_trades(source: str, db_url: str, exportfilename: Path, no_trades: bool) -> pd.DataFrame: """ Based on configuration option "trade_source": * loads data from DB (using `db_url`) @@ -137,10 +137,10 @@ def load_trades(source: str, db_url: str, exportfilename: Path, skip_trades: boo :param source: "DB" or "file" - specify source to load from :param db_url: sqlalchemy formatted url to a database :param exportfilename: Json file generated by backtesting - :param skip_trades: Skip using trades, only return backtesting data columns + :param no_trades: Skip using trades, only return backtesting data columns :return: DataFrame containing trades """ - if skip_trades: + if no_trades: df = pd.DataFrame(columns=BT_DATA_COLUMNS) return df diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 8da61597f..fc8f25612 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -3,7 +3,6 @@ from pathlib import Path from typing import Any, Dict, List import pandas as pd -from os.path import isfile from freqtrade.configuration import TimeRange from freqtrade.data.btanalysis import (calculate_max_drawdown, @@ -49,18 +48,18 @@ def init_plotscript(config): data_format=config.get('dataformat_ohlcv', 'json'), ) - skip_trades = False - if not isfile(config.get('exportfilename')) and config['trade_source'] == 'file': + no_trades = False + if config.get('no_trades', False): + no_trades = True + elif not config['exportfilename'].is_file() and config['trade_source'] == 'file': logger.warning("Backtest file is missing skipping trades.") - skip_trades = True - elif config.get('skip_trades', False): - skip_trades = True + no_trades = True trades = load_trades( config['trade_source'], db_url=config.get('db_url'), exportfilename=config.get('exportfilename'), - skip_trades=skip_trades + no_trades=no_trades ) trades = trim_dataframe(trades, timerange, 'open_time') diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 8561f2b84..4b47faeee 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -105,7 +105,7 @@ def test_load_trades(default_conf, mocker): load_trades("DB", db_url=default_conf.get('db_url'), exportfilename=default_conf.get('exportfilename'), - skip_trades=False + no_trades=False ) assert db_mock.call_count == 1 @@ -117,7 +117,7 @@ def test_load_trades(default_conf, mocker): load_trades("file", db_url=default_conf.get('db_url'), exportfilename=default_conf.get('exportfilename'), - skip_trades=False + no_trades=False ) assert db_mock.call_count == 0 @@ -129,7 +129,7 @@ def test_load_trades(default_conf, mocker): load_trades("file", db_url=default_conf.get('db_url'), exportfilename=default_conf.get('exportfilename'), - skip_trades=True + no_trades=True ) assert db_mock.call_count == 0 From 06198c00283eeaef44f0dda391a3cc769acce6ae Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 15 Mar 2020 21:27:45 +0100 Subject: [PATCH 2006/3421] Missed configuration.py --- freqtrade/configuration/configuration.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index ce2101441..e5515670d 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -359,6 +359,9 @@ class Configuration: self._args_to_config(config, argname='erase', logstring='Erase detected. Deleting existing data.') + self._args_to_config(config, argname='no_trades', + logstring='Parameter --no-trades detected.') + self._args_to_config(config, argname='timeframes', logstring='timeframes --timeframes: {}') From e8a92cb3136971bbcd96257e4dc036e7b701da26 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2020 08:17:21 +0000 Subject: [PATCH 2007/3421] Bump pandas from 1.0.1 to 1.0.2 Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.0.1 to 1.0.2. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v1.0.1...v1.0.2) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 68024f587..12d7336aa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ -r requirements-common.txt numpy==1.18.1 -pandas==1.0.1 +pandas==1.0.2 From 0b341757525c23f1242e7e9b189d97b76f5b54b2 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2020 08:17:53 +0000 Subject: [PATCH 2008/3421] Bump ccxt from 1.23.81 to 1.24.31 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.23.81 to 1.24.31. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.23.81...1.24.31) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 784eef93c..f3f7d8a07 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.23.81 +ccxt==1.24.31 SQLAlchemy==1.3.13 python-telegram-bot==12.4.2 arrow==0.15.5 From 8cfff40fcfb2ba7145c12b165f75e34debcedae6 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2020 08:18:07 +0000 Subject: [PATCH 2009/3421] Bump plotly from 4.5.3 to 4.5.4 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.5.3 to 4.5.4. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.5.3...v4.5.4) Signed-off-by: dependabot-preview[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index 381334a66..7a5b21e2d 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.5.3 +plotly==4.5.4 From 3eee0c43a727fe91bad3481e1dab0551793afa4e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2020 08:18:33 +0000 Subject: [PATCH 2010/3421] Bump pytest from 5.3.5 to 5.4.1 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.3.5 to 5.4.1. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.3.5...5.4.1) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 1e58ae6e0..f2801c15b 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.0.0 mypy==0.761 -pytest==5.3.5 +pytest==5.4.1 pytest-asyncio==0.10.0 pytest-cov==2.8.1 pytest-mock==2.0.0 From 7a7530d57d4ef7d39ff715ccee7cf9ddf2a820a0 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2020 08:53:20 +0000 Subject: [PATCH 2011/3421] Bump sqlalchemy from 1.3.13 to 1.3.15 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.13 to 1.3.15. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index f3f7d8a07..7c2ad4283 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.24.31 -SQLAlchemy==1.3.13 +SQLAlchemy==1.3.15 python-telegram-bot==12.4.2 arrow==0.15.5 cachetools==4.0.0 From 62d449251cc8a02182a46015bc2a36e71d549c85 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2020 08:54:12 +0000 Subject: [PATCH 2012/3421] Bump mypy from 0.761 to 0.770 Bumps [mypy](https://github.com/python/mypy) from 0.761 to 0.770. - [Release notes](https://github.com/python/mypy/releases) - [Commits](https://github.com/python/mypy/compare/v0.761...v0.770) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index f2801c15b..a4d83eb4f 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ coveralls==1.11.1 flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.0.0 -mypy==0.761 +mypy==0.770 pytest==5.4.1 pytest-asyncio==0.10.0 pytest-cov==2.8.1 From 4f46fb9bf5cb0ae22e3b365e552f62da712bd99f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Mar 2020 19:33:18 +0100 Subject: [PATCH 2013/3421] Add template and jupyter files to release --- MANIFEST.in | 1 + 1 file changed, 1 insertion(+) diff --git a/MANIFEST.in b/MANIFEST.in index 7529152a0..c67f5258f 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2,3 +2,4 @@ include LICENSE include README.md include config.json.example recursive-include freqtrade *.py +recursive-include freqtrade/templates/ *.j2 *.ipynb From 05250ba6611278b794677780a2e00febdb14f476 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Wed, 18 Mar 2020 11:00:33 +0100 Subject: [PATCH 2014/3421] Update docs/plotting.md Co-Authored-By: Matthias --- docs/plotting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plotting.md b/docs/plotting.md index 56906ebec..be83065a6 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -32,7 +32,7 @@ usage: freqtrade plot-dataframe [-h] [-v] [--logfile FILE] [-V] [-c PATH] [--trade-source {DB,file}] [--export EXPORT] [--export-filename PATH] [--timerange TIMERANGE] [-i TICKER_INTERVAL] - [--skip-trades] + [--no-trades] optional arguments: -h, --help show this help message and exit From 0920d6fce4d35ebd3f99ed321131764fde628206 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Wed, 18 Mar 2020 11:01:09 +0100 Subject: [PATCH 2015/3421] Update freqtrade/data/btanalysis.py Co-Authored-By: Matthias --- freqtrade/data/btanalysis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 17b243f56..898072748 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -129,7 +129,7 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: return trades -def load_trades(source: str, db_url: str, exportfilename: Path, no_trades: bool) -> pd.DataFrame: +def load_trades(source: str, db_url: str, exportfilename: Path, no_trades: bool = False) -> pd.DataFrame: """ Based on configuration option "trade_source": * loads data from DB (using `db_url`) From 3e1bef888ab1344f8763e130cdef835b0b030d6b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 18 Mar 2020 11:42:42 +0100 Subject: [PATCH 2016/3421] Fix flake8 error --- freqtrade/data/btanalysis.py | 3 ++- tests/data/test_btanalysis.py | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 898072748..23a9f720c 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -129,7 +129,8 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: return trades -def load_trades(source: str, db_url: str, exportfilename: Path, no_trades: bool = False) -> pd.DataFrame: +def load_trades(source: str, db_url: str, exportfilename: Path, + no_trades: bool = False) -> pd.DataFrame: """ Based on configuration option "trade_source": * loads data from DB (using `db_url`) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 4b47faeee..463e5ae36 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -117,7 +117,6 @@ def test_load_trades(default_conf, mocker): load_trades("file", db_url=default_conf.get('db_url'), exportfilename=default_conf.get('exportfilename'), - no_trades=False ) assert db_mock.call_count == 0 From ecf3a3e07076e3101e804e5216ec38ff236a1686 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 19 Mar 2020 19:42:51 +0100 Subject: [PATCH 2017/3421] Add test validating different return values --- tests/test_freqtradebot.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 9f6e5ef0c..e37270bd3 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2228,10 +2228,16 @@ def test_handle_timedout_limit_buy(mocker, default_conf, limit_buy_order) -> Non assert cancel_order_mock.call_count == 1 -def test_handle_timedout_limit_buy_corder_empty(mocker, default_conf, limit_buy_order) -> None: +@pytest.mark.parametrize('cancelorder', [ + {}, + 'String Return value', + 123 +]) +def test_handle_timedout_limit_buy_corder_empty(mocker, default_conf, limit_buy_order, + cancelorder) -> None: patch_RPCManager(mocker) patch_exchange(mocker) - cancel_order_mock = MagicMock(return_value={}) + cancel_order_mock = MagicMock(return_value=cancelorder) mocker.patch.multiple( 'freqtrade.exchange.Exchange', cancel_order=cancel_order_mock From 5e702f6891c76a066aae85833026780cc01ebee5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 19 Mar 2020 19:43:19 +0100 Subject: [PATCH 2018/3421] Verify cancel_order returnvalue is a dictionary --- freqtrade/freqtradebot.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 9897b39b4..bc3078a5c 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -891,6 +891,9 @@ class FreqtradeBot: if order['status'] != 'canceled': reason = "cancelled due to timeout" corder = self.exchange.cancel_order(trade.open_order_id, trade.pair) + # Some exchanges don't return a dict here. + if not isinstance(corder, dict): + corder = {} logger.info('Buy order %s for %s.', reason, trade) else: # Order was cancelled already, so we can reuse the existing dict From 5f9479b39fe4c31ac0171501c28186ef0b1065b9 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 20 Mar 2020 02:10:44 +0300 Subject: [PATCH 2019/3421] Edge import cosmetics --- freqtrade/edge/edge_positioning.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index d196ab4b3..5305e23cf 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -8,10 +8,10 @@ import numpy as np import utils_find_1st as utf1st from pandas import DataFrame -from freqtrade import constants from freqtrade.configuration import TimeRange -from freqtrade.data import history +from freqtrade.constants import UNLIMITED_STAKE_AMOUNT from freqtrade.exceptions import OperationalException +from freqtrade.data.history import get_timerange, load_data, refresh_data from freqtrade.strategy.interface import SellType logger = logging.getLogger(__name__) @@ -54,7 +54,7 @@ class Edge: if self.config['max_open_trades'] != float('inf'): logger.critical('max_open_trades should be -1 in config !') - if self.config['stake_amount'] != constants.UNLIMITED_STAKE_AMOUNT: + if self.config['stake_amount'] != UNLIMITED_STAKE_AMOUNT: raise OperationalException('Edge works only with unlimited stake amount') # Deprecated capital_available_percentage. Will use tradable_balance_ratio in the future. @@ -96,7 +96,7 @@ class Edge: logger.info('Using local backtesting data (using whitelist in given config) ...') if self._refresh_pairs: - history.refresh_data( + refresh_data( datadir=self.config['datadir'], pairs=pairs, exchange=self.exchange, @@ -104,7 +104,7 @@ class Edge: timerange=self._timerange, ) - data = history.load_data( + data = load_data( datadir=self.config['datadir'], pairs=pairs, timeframe=self.strategy.ticker_interval, @@ -122,7 +122,7 @@ class Edge: preprocessed = self.strategy.ohlcvdata_to_dataframe(data) # Print timeframe - min_date, max_date = history.get_timerange(preprocessed) + min_date, max_date = get_timerange(preprocessed) logger.info( 'Measuring data from %s up to %s (%s days) ...', min_date.isoformat(), From 3e0ffdce75aa6795caa830bfeb4c614a1750c207 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 20 Mar 2020 04:21:17 +0300 Subject: [PATCH 2020/3421] Adjust tests --- tests/edge/test_edge.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index 3bebeee65..2304c53c2 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -292,8 +292,8 @@ def mocked_load_data(datadir, pairs=[], timeframe='0m', def test_edge_process_downloaded_data(mocker, edge_conf): freqtrade = get_patched_freqtradebot(mocker, edge_conf) mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.001)) - mocker.patch('freqtrade.data.history.refresh_data', MagicMock()) - mocker.patch('freqtrade.data.history.load_data', mocked_load_data) + mocker.patch('freqtrade.edge.edge_positioning.refresh_data', MagicMock()) + mocker.patch('freqtrade.edge.edge_positioning.load_data', mocked_load_data) edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) assert edge.calculate() @@ -304,8 +304,8 @@ def test_edge_process_downloaded_data(mocker, edge_conf): def test_edge_process_no_data(mocker, edge_conf, caplog): freqtrade = get_patched_freqtradebot(mocker, edge_conf) mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.001)) - mocker.patch('freqtrade.data.history.refresh_data', MagicMock()) - mocker.patch('freqtrade.data.history.load_data', MagicMock(return_value={})) + mocker.patch('freqtrade.edge.edge_positioning.refresh_data', MagicMock()) + mocker.patch('freqtrade.edge.edge_positioning.load_data', MagicMock(return_value={})) edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) assert not edge.calculate() @@ -317,8 +317,8 @@ def test_edge_process_no_data(mocker, edge_conf, caplog): def test_edge_process_no_trades(mocker, edge_conf, caplog): freqtrade = get_patched_freqtradebot(mocker, edge_conf) mocker.patch('freqtrade.exchange.Exchange.get_fee', MagicMock(return_value=0.001)) - mocker.patch('freqtrade.data.history.refresh_data', MagicMock()) - mocker.patch('freqtrade.data.history.load_data', mocked_load_data) + mocker.patch('freqtrade.edge.edge_positioning.refresh_data', MagicMock()) + mocker.patch('freqtrade.edge.edge_positioning.load_data', mocked_load_data) # Return empty mocker.patch('freqtrade.edge.Edge._find_trades_for_stoploss_range', MagicMock(return_value=[])) edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) From 942792f1233f35eba31d51d96ecbc92163376af1 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 20 Mar 2020 05:48:53 +0100 Subject: [PATCH 2021/3421] updated as suggested --- freqtrade/freqtradebot.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e5ae9043a..378252c29 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -394,21 +394,23 @@ class FreqtradeBot: logger.info(f"Pair {pair} is currently locked.") return False + # get_free_open_trades is checked before create_trade is called + # but it is still used here to prevent opening too many trades within one iteration if not self.get_free_open_trades(): logger.debug(f"Can't open a new trade for {pair}: max number of trades is reached.") return False - stake_amount = self.get_trade_stake_amount(pair) - if not stake_amount: - logger.debug(f"Stake amount is 0, ignoring possible trade for {pair}.") - return False - # running get_signal on historical data fetched (buy, sell) = self.strategy.get_signal( pair, self.strategy.ticker_interval, self.dataprovider.ohlcv(pair, self.strategy.ticker_interval)) if buy and not sell: + stake_amount = self.get_trade_stake_amount(pair) + if not stake_amount: + logger.debug(f"Stake amount is 0, ignoring possible trade for {pair}.") + return False + logger.info(f"Buy signal found: about create a new trade with stake_amount: " f"{stake_amount} ...") From e30faf8c8c371de43b0e1c35b5eae89489e01ab9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 21 Mar 2020 20:04:05 +0100 Subject: [PATCH 2022/3421] Remove partial candle documentation It wasn't working 100% correctly - see #2993 --- docs/exchanges.md | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/docs/exchanges.md b/docs/exchanges.md index 66a0e96da..c600077ce 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -74,23 +74,13 @@ Should you experience constant errors with Nonce (like `InvalidNonce`), it is be $ pip3 install web3 ``` -### Send incomplete candles to the strategy +### Getting latest price / Incomplete candles Most exchanges return current incomplete candle via their OHLCV/klines API interface. By default, Freqtrade assumes that incomplete candle is fetched from the exchange and removes the last candle assuming it's the incomplete candle. Whether your exchange returns incomplete candles or not can be checked using [the helper script](developer.md#Incomplete-candles) from the Contributor documentation. -If the exchange does return incomplete candles and you would like to have incomplete candles in your strategy, you can set the following parameter in the configuration file. +Due to the danger of repainting, Freqtrade does not allow you to use this incomplete candle. -``` json -{ - - "exchange": { - "_ft_has_params": {"ohlcv_partial_candle": false} - } -} -``` - -!!! Warning "Danger of repainting" - Changing this parameter makes the strategy responsible to avoid repainting and handle this accordingly. Doing this is therefore not recommended, and should only be performed by experienced users who are fully aware of the impact this setting has. +However, usually, this requirement is based on the need for the latest price - which can be aquired using the [data provider](strategy-customization.md#possible-options-for-dataprovider) from within the strategy. From 1976aaf13e366da4c9b6008fc3f5ddd169bb6d1c Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sun, 22 Mar 2020 02:22:06 +0100 Subject: [PATCH 2023/3421] initial push --- docs/utils.md | 10 +++++--- freqtrade/commands/arguments.py | 1 + freqtrade/commands/cli_options.py | 12 +++++++++ freqtrade/commands/hyperopt_commands.py | 32 ++++++++++++++++++++++-- freqtrade/configuration/configuration.py | 6 +++++ tests/commands/test_commands.py | 28 +++++++++++++++++++++ 6 files changed, 84 insertions(+), 5 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index 269b9affd..03924c581 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -426,9 +426,9 @@ usage: freqtrade hyperopt-list [-h] [-v] [--logfile FILE] [-V] [-c PATH] [--max-trades INT] [--min-avg-time FLOAT] [--max-avg-time FLOAT] [--min-avg-profit FLOAT] [--max-avg-profit FLOAT] - [--min-total-profit FLOAT] - [--max-total-profit FLOAT] [--no-color] - [--print-json] [--no-details] + [--min-total-profit FLOAT] [--max-total-profit FLOAT] + [--min-objective FLOAT] [--max-objective FLOAT] + [--no-color] [--print-json] [--no-details] [--export-csv FILE] optional arguments: @@ -447,6 +447,10 @@ optional arguments: Select epochs on above total profit. --max-total-profit FLOAT Select epochs on below total profit. + --min-objective FLOAT + Select epochs on above objective (- is added by default). + --max-objective FLOAT + Select epochs on below objective (- is added by default). --no-color Disable colorization of hyperopt results. May be useful if you are redirecting output to a file. --print-json Print best result detailization in JSON format. diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 8c64c5857..9edd143a6 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -69,6 +69,7 @@ ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_list_min_avg_time", "hyperopt_list_max_avg_time", "hyperopt_list_min_avg_profit", "hyperopt_list_max_avg_profit", "hyperopt_list_min_total_profit", "hyperopt_list_max_total_profit", + "hyperopt_list_min_objective", "hyperopt_list_max_objective", "print_colorized", "print_json", "hyperopt_list_no_details", "export_csv"] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 5cf1b7fce..1402e64ef 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -484,6 +484,18 @@ AVAILABLE_CLI_OPTIONS = { type=float, metavar='FLOAT', ), + "hyperopt_list_min_objective": Arg( + '--min-objective', + help='Select epochs on above objective.', + type=float, + metavar='FLOAT', + ), + "hyperopt_list_max_objective": Arg( + '--max-objective', + help='Select epochs on below objective.', + type=float, + metavar='FLOAT', + ), "hyperopt_list_no_details": Arg( '--no-details', help='Do not print best epoch details.', diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index 5b2388252..dd9de19e7 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -35,9 +35,16 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', None), 'filter_max_avg_profit': config.get('hyperopt_list_max_avg_profit', None), 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', None), - 'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None) + 'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None), + 'filter_min_objective': config.get('hyperopt_list_min_objective', None), + 'filter_max_objective': config.get('hyperopt_list_max_objective', None) } + if filteroptions['filter_min_objective'] is not None: + filteroptions['filter_min_objective'] = -filteroptions['filter_min_objective'] + if filteroptions['filter_max_objective'] is not None: + filteroptions['filter_max_objective'] = -filteroptions['filter_max_objective'] + trials_file = (config['user_data_dir'] / 'hyperopt_results' / 'hyperopt_results.pickle') @@ -92,9 +99,16 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: 'filter_min_avg_profit': config.get('hyperopt_list_min_avg_profit', None), 'filter_max_avg_profit': config.get('hyperopt_list_max_avg_profit', None), 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', None), - 'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None) + 'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None), + 'filter_min_objective': config.get('hyperopt_list_min_objective', None), + 'filter_max_objective': config.get('hyperopt_list_max_objective', None) } + if filteroptions['filter_min_objective'] is not None: + filteroptions['filter_min_objective'] = -filteroptions['filter_min_objective'] + if filteroptions['filter_max_objective'] is not None: + filteroptions['filter_max_objective'] = -filteroptions['filter_max_objective'] + # Previous evaluations trials = Hyperopt.load_previous_results(trials_file) total_epochs = len(trials) @@ -175,6 +189,20 @@ def _hyperopt_filter_trials(trials: List, filteroptions: dict) -> List: x for x in trials if x['results_metrics']['profit'] < filteroptions['filter_max_total_profit'] ] + if filteroptions['filter_min_objective'] is not None: + trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] + # trials = [x for x in trials if x['loss'] != 20] + trials = [ + x for x in trials + if x['loss'] < filteroptions['filter_min_objective'] + ] + if filteroptions['filter_max_objective'] is not None: + trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] + # trials = [x for x in trials if x['loss'] != 20] + trials = [ + x for x in trials + if x['loss'] > filteroptions['filter_max_objective'] + ] logger.info(f"{len(trials)} " + ("best " if filteroptions['only_best'] else "") + diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index e5515670d..c26610336 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -334,6 +334,12 @@ class Configuration: self._args_to_config(config, argname='hyperopt_list_max_total_profit', logstring='Parameter --max-total-profit detected: {}') + self._args_to_config(config, argname='hyperopt_list_min_objective', + logstring='Parameter --min-objective detected: {}') + + self._args_to_config(config, argname='hyperopt_list_max_objective', + logstring='Parameter --max-objective detected: {}') + self._args_to_config(config, argname='hyperopt_list_no_details', logstring='Parameter --no-details detected: {}') diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 4530cd03d..2825a4679 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -868,6 +868,34 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): pargs['config'] = None start_hyperopt_list(pargs) captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 1/12", " 2/12", " 3/12", " 5/12", " 6/12", " 7/12", " 8/12", + " 9/12", " 11/12"]) + assert all(x not in captured.out + for x in [" 4/12", " 10/12", " 12/12"]) + args = [ + "hyperopt-list", + "--no-details", + "--min-objective", "0.1" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() + assert all(x in captured.out + for x in [" 10/12"]) + assert all(x not in captured.out + for x in [" 1/12", " 2/12", " 3/12", " 4/12", " 5/12", " 6/12", " 7/12", " 8/12", + " 9/12", " 11/12", " 12/12"]) + args = [ + "hyperopt-list", + "--no-details", + "--max-objective", "0.1" + ] + pargs = get_args(args) + pargs['config'] = None + start_hyperopt_list(pargs) + captured = capsys.readouterr() assert all(x in captured.out for x in [" 1/12", " 2/12", " 3/12", " 5/12", " 6/12", " 7/12", " 8/12", " 9/12", " 11/12"]) From bf96ef08e0b7bf5c9d47a297f386f64d905a90be Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sun, 22 Mar 2020 09:39:38 +0100 Subject: [PATCH 2024/3421] added # flake8: noqa C901 --- freqtrade/commands/hyperopt_commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index dd9de19e7..c5cf9a969 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -10,7 +10,7 @@ from freqtrade.state import RunMode logger = logging.getLogger(__name__) - +# flake8: noqa C901 def start_hyperopt_list(args: Dict[str, Any]) -> None: """ List hyperopt epochs previously evaluated From 2c434e9b116fdfb71c2da4f57db4e25683ce7d39 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Mar 2020 11:16:09 +0100 Subject: [PATCH 2025/3421] Add close_proit_abs column --- freqtrade/freqtradebot.py | 1 + freqtrade/persistence.py | 11 ++++++++--- tests/test_persistence.py | 20 ++++++++++++++++++++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index db632693a..570f8bea8 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -954,6 +954,7 @@ class FreqtradeBot: trade.close_rate = None trade.close_profit = None + trade.close_profit_abs = None trade.close_date = None trade.is_open = True trade.open_order_id = None diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index ac084d12e..0d668596c 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -86,7 +86,7 @@ def check_migrate(engine) -> None: logger.debug(f'trying {table_back_name}') # Check for latest column - if not has_column(cols, 'open_trade_price'): + if not has_column(cols, 'close_profit_abs'): logger.info(f'Running database migration - backup available as {table_back_name}') fee_open = get_column_def(cols, 'fee_open', 'fee') @@ -106,6 +106,9 @@ def check_migrate(engine) -> None: ticker_interval = get_column_def(cols, 'ticker_interval', 'null') open_trade_price = get_column_def(cols, 'open_trade_price', f'amount * open_rate * (1 + {fee_open})') + close_profit_abs = get_column_def( + cols, 'close_profit_abs', + f"(amount * close_rate * (1 - {fee_close})) - {open_trade_price}") # Schema migration necessary engine.execute(f"alter table trades rename to {table_back_name}") @@ -123,7 +126,7 @@ def check_migrate(engine) -> None: stop_loss, stop_loss_pct, initial_stop_loss, initial_stop_loss_pct, stoploss_order_id, stoploss_last_update, max_rate, min_rate, sell_reason, strategy, - ticker_interval, open_trade_price + ticker_interval, open_trade_price, close_profit_abs ) select id, lower(exchange), case @@ -143,7 +146,7 @@ def check_migrate(engine) -> None: {stoploss_order_id} stoploss_order_id, {stoploss_last_update} stoploss_last_update, {max_rate} max_rate, {min_rate} min_rate, {sell_reason} sell_reason, {strategy} strategy, {ticker_interval} ticker_interval, - {open_trade_price} open_trade_price + {open_trade_price} open_trade_price, {close_profit_abs} close_profit_abs from {table_back_name} """) @@ -190,6 +193,7 @@ class Trade(_DECL_BASE): close_rate = Column(Float) close_rate_requested = Column(Float) close_profit = Column(Float) + close_profit_abs = Column(Float) stake_amount = Column(Float, nullable=False) amount = Column(Float) open_date = Column(DateTime, nullable=False, default=datetime.utcnow) @@ -334,6 +338,7 @@ class Trade(_DECL_BASE): """ self.close_rate = Decimal(rate) self.close_profit = self.calc_profit_ratio() + self.close_profit_abs = self.calc_profit() self.close_date = datetime.utcnow() self.is_open = False self.open_order_id = None diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 6bd7971a7..991922cba 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -476,12 +476,22 @@ def test_migrate_old(mocker, default_conf, fee): stake=default_conf.get("stake_amount"), amount=amount ) + insert_table_old2 = """INSERT INTO trades (exchange, pair, is_open, fee, + open_rate, close_rate, stake_amount, amount, open_date) + VALUES ('BITTREX', 'BTC_ETC', 0, {fee}, + 0.00258580, 0.00268580, {stake}, {amount}, + '2017-11-28 12:44:24.000000') + """.format(fee=fee.return_value, + stake=default_conf.get("stake_amount"), + amount=amount + ) engine = create_engine('sqlite://') mocker.patch('freqtrade.persistence.create_engine', lambda *args, **kwargs: engine) # Create table using the old format engine.execute(create_table_old) engine.execute(insert_table_old) + engine.execute(insert_table_old2) # Run init to test migration init(default_conf['db_url'], default_conf['dry_run']) @@ -500,6 +510,15 @@ def test_migrate_old(mocker, default_conf, fee): assert trade.stop_loss == 0.0 assert trade.initial_stop_loss == 0.0 assert trade.open_trade_price == trade._calc_open_trade_price() + assert trade.close_profit_abs is None + + trade = Trade.query.filter(Trade.id == 2).first() + assert trade.close_rate is not None + assert trade.is_open == 0 + assert trade.open_rate_requested is None + assert trade.close_rate_requested is None + assert trade.close_rate is not None + assert pytest.approx(trade.close_profit_abs) == trade.calc_profit() def test_migrate_new(mocker, default_conf, fee, caplog): @@ -583,6 +602,7 @@ def test_migrate_new(mocker, default_conf, fee, caplog): assert log_has("trying trades_bak2", caplog) assert log_has("Running database migration - backup available as trades_bak2", caplog) assert trade.open_trade_price == trade._calc_open_trade_price() + assert trade.close_profit_abs is None def test_migrate_mid_state(mocker, default_conf, fee, caplog): From efd94c84debab78c00bc141b6108f43b366c2e07 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Mar 2020 11:22:49 +0100 Subject: [PATCH 2026/3421] Add example notebook to gitignore again --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9ac2c9d5d..f206fce66 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,6 @@ user_data/* !user_data/strategy/sample_strategy.py !user_data/notebooks user_data/notebooks/* -!user_data/notebooks/*example.ipynb freqtrade-plot.html freqtrade-profit-plot.html From f14c496ce9ffca5186d4479a611c37c76c0a35ce Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Mar 2020 11:28:18 +0100 Subject: [PATCH 2027/3421] Remove calc_close_profit from RPC This is now possible - but only for closed trades, so certain occurances need to remain. --- freqtrade/rpc/rpc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 9014c1874..a0f50b070 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -197,7 +197,7 @@ class RPC: Trade.close_date >= profitday, Trade.close_date < (profitday + timedelta(days=1)) ]).order_by(Trade.close_date).all() - curdayprofit = sum(trade.calc_profit() for trade in trades) + curdayprofit = sum(trade.close_profit_abs for trade in trades) profit_days[profitday] = { 'amount': f'{curdayprofit:.8f}', 'trades': len(trades) @@ -246,8 +246,8 @@ class RPC: durations.append((trade.close_date - trade.open_date).total_seconds()) if not trade.is_open: - profit_ratio = trade.calc_profit_ratio() - profit_closed_coin.append(trade.calc_profit()) + profit_ratio = trade.close_profit + profit_closed_coin.append(trade.close_profit_abs) profit_closed_ratio.append(profit_ratio) else: # Get current rate From acd402187a179e1f040fc42fe1dba22b2519a2e9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Mar 2020 19:39:36 +0100 Subject: [PATCH 2028/3421] Update max_open_trades documentation --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index b0f4c7554..78c643868 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -40,7 +40,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | Parameter | Description | |------------|-------------| -| `max_open_trades` | **Required.** Number of trades open your bot will have. If -1 then it is ignored (i.e. potentially unlimited open trades). [More information below](#configuring-amount-per-trade).
      **Datatype:** Positive integer or -1. +| `max_open_trades` | **Required.** Number of open trades your bot is allowed to have. Only one open trade per pair is possible, so the lenght of your whitelist another limitation which can apply. If -1 then it is ignored (i.e. potentially unlimited open trades). [More information below](#configuring-amount-per-trade).
      **Datatype:** Positive integer or -1. | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** String | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Positive float or `"unlimited"`. | `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade).
      *Defaults to `0.99` 99%).*
      **Datatype:** Positive float between `0.1` and `1.0`. From 45aaa8c09d2a704e49b56ef47b360425f305b7b5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Mar 2020 20:09:01 +0100 Subject: [PATCH 2029/3421] Parse and show relevant configuration section --- freqtrade/configuration/load_config.py | 28 ++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/freqtrade/configuration/load_config.py b/freqtrade/configuration/load_config.py index 19179c6c3..0d2dc0955 100644 --- a/freqtrade/configuration/load_config.py +++ b/freqtrade/configuration/load_config.py @@ -1,13 +1,15 @@ """ This module contain functions to load the configuration file """ -import rapidjson import logging +import re import sys +from pathlib import Path from typing import Any, Dict -from freqtrade.exceptions import OperationalException +import rapidjson +from freqtrade.exceptions import OperationalException logger = logging.getLogger(__name__) @@ -15,6 +17,22 @@ logger = logging.getLogger(__name__) CONFIG_PARSE_MODE = rapidjson.PM_COMMENTS | rapidjson.PM_TRAILING_COMMAS +def log_config_error_range(path: str, errmsg: str) -> str: + """ + Parses configuration file and prints range around error + """ + if path != '-': + offsetlist = re.findall(r'(?<=Parse\serror\sat\soffset\s)\d+', errmsg) + if offsetlist: + offset = int(offsetlist[0]) + text = Path(path).read_text() + # Fetch an offset of 80 characters around the error line + subtext = text[offset-min(80, offset):offset+80] + segments = subtext.split('\n') + # Remove first and last lines, to avoid odd truncations + return '\n'.join(segments[1:-1]) + + def load_config_file(path: str) -> Dict[str, Any]: """ Loads a config file from the given path @@ -29,5 +47,11 @@ def load_config_file(path: str) -> Dict[str, Any]: raise OperationalException( f'Config file "{path}" not found!' ' Please create a config file or check whether it exists.') + except rapidjson.JSONDecodeError as e: + err_range = log_config_error_range(path, str(e)) + raise OperationalException( + f'{e}\n' + f'Please verify the following segment of your configuration:\n{err_range}' + ) return config From 6c55b40fe04f4cea4b92841212b150d69f5d200a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 22 Mar 2020 20:15:33 +0100 Subject: [PATCH 2030/3421] Add test verifying config printing --- tests/test_configuration.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 1e9d6440d..ec6753feb 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -66,6 +66,17 @@ def test_load_config_file(default_conf, mocker, caplog) -> None: assert validated_conf.items() >= default_conf.items() +def test_load_config_file_error(default_conf, mocker, caplog) -> None: + del default_conf['user_data_dir'] + filedata = json.dumps(default_conf).replace( + '"stake_amount": 0.001,', '"stake_amount": .001,') + mocker.patch('freqtrade.configuration.load_config.open', mocker.mock_open(read_data=filedata)) + mocker.patch.object(Path, "read_text", MagicMock(return_value=filedata)) + + with pytest.raises(OperationalException, match=f".*Please verify the following segment.*"): + load_config_file('somefile') + + def test__args_to_config(caplog): arg_list = ['trade', '--strategy-path', 'TestTest'] From 8f7e113d798bb8b973efd6a66b59d1abf18722f4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Mar 2020 07:54:27 +0100 Subject: [PATCH 2031/3421] Add additional test --- freqtrade/configuration/load_config.py | 7 +++++-- tests/test_configuration.py | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/freqtrade/configuration/load_config.py b/freqtrade/configuration/load_config.py index 0d2dc0955..55da28913 100644 --- a/freqtrade/configuration/load_config.py +++ b/freqtrade/configuration/load_config.py @@ -29,8 +29,11 @@ def log_config_error_range(path: str, errmsg: str) -> str: # Fetch an offset of 80 characters around the error line subtext = text[offset-min(80, offset):offset+80] segments = subtext.split('\n') - # Remove first and last lines, to avoid odd truncations - return '\n'.join(segments[1:-1]) + if len(segments) > 3: + # Remove first and last lines, to avoid odd truncations + return '\n'.join(segments[1:-1]) + else: + return subtext def load_config_file(path: str) -> Dict[str, Any]: diff --git a/tests/test_configuration.py b/tests/test_configuration.py index ec6753feb..a1936aee0 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -18,7 +18,7 @@ from freqtrade.configuration.config_validation import validate_config_schema from freqtrade.configuration.deprecated_settings import ( check_conflicting_settings, process_deprecated_setting, process_temporary_deprecated_settings) -from freqtrade.configuration.load_config import load_config_file +from freqtrade.configuration.load_config import load_config_file, log_config_error_range from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL from freqtrade.exceptions import OperationalException from freqtrade.loggers import _set_loggers, setup_logging @@ -77,6 +77,19 @@ def test_load_config_file_error(default_conf, mocker, caplog) -> None: load_config_file('somefile') +def test_load_config_file_error_range(default_conf, mocker, caplog) -> None: + del default_conf['user_data_dir'] + filedata = json.dumps(default_conf).replace( + '"stake_amount": 0.001,', '"stake_amount": .001,') + mocker.patch.object(Path, "read_text", MagicMock(return_value=filedata)) + + x = log_config_error_range('somefile', 'Parse error at offset 64: Invalid value.') + assert isinstance(x, str) + assert (x == '{"max_open_trades": 1, "stake_currency": "BTC", ' + '"stake_amount": .001, "fiat_display_currency": "USD", ' + '"ticker_interval": "5m", "dry_run": true, ') + + def test__args_to_config(caplog): arg_list = ['trade', '--strategy-path', 'TestTest'] From d581b7e2d79493ddccb6cbd2cbe41b6baa028b38 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 23 Mar 2020 07:57:30 +0100 Subject: [PATCH 2032/3421] Add fallback if no error could be determined --- freqtrade/configuration/load_config.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/configuration/load_config.py b/freqtrade/configuration/load_config.py index 55da28913..a24ee3d0a 100644 --- a/freqtrade/configuration/load_config.py +++ b/freqtrade/configuration/load_config.py @@ -34,6 +34,7 @@ def log_config_error_range(path: str, errmsg: str) -> str: return '\n'.join(segments[1:-1]) else: return subtext + return '' def load_config_file(path: str) -> Dict[str, Any]: @@ -55,6 +56,7 @@ def load_config_file(path: str) -> Dict[str, Any]: raise OperationalException( f'{e}\n' f'Please verify the following segment of your configuration:\n{err_range}' + if err_range else 'Please verify your configuration file for syntax errors.' ) return config From 7143cac64f7c9d3ccd5f14d2ae689016157dcee3 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Mon, 23 Mar 2020 09:41:01 +0100 Subject: [PATCH 2033/3421] fixed wording of all in cli_options --- freqtrade/commands/cli_options.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 1402e64ef..e1927a901 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -450,49 +450,49 @@ AVAILABLE_CLI_OPTIONS = { ), "hyperopt_list_min_avg_time": Arg( '--min-avg-time', - help='Select epochs on above average time.', + help='Select epochs above average time.', type=float, metavar='FLOAT', ), "hyperopt_list_max_avg_time": Arg( '--max-avg-time', - help='Select epochs on under average time.', + help='Select epochs under average time.', type=float, metavar='FLOAT', ), "hyperopt_list_min_avg_profit": Arg( '--min-avg-profit', - help='Select epochs on above average profit.', + help='Select epochs above average profit.', type=float, metavar='FLOAT', ), "hyperopt_list_max_avg_profit": Arg( '--max-avg-profit', - help='Select epochs on below average profit.', + help='Select epochs below average profit.', type=float, metavar='FLOAT', ), "hyperopt_list_min_total_profit": Arg( '--min-total-profit', - help='Select epochs on above total profit.', + help='Select epochs above total profit.', type=float, metavar='FLOAT', ), "hyperopt_list_max_total_profit": Arg( '--max-total-profit', - help='Select epochs on below total profit.', + help='Select epochs below total profit.', type=float, metavar='FLOAT', ), "hyperopt_list_min_objective": Arg( '--min-objective', - help='Select epochs on above objective.', + help='Select epochs above objective.', type=float, metavar='FLOAT', ), "hyperopt_list_max_objective": Arg( '--max-objective', - help='Select epochs on below objective.', + help='Select epochs below objective.', type=float, metavar='FLOAT', ), From f4a69ba5a753c38f9b18ec81e596d38c86ce66de Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2020 09:04:50 +0000 Subject: [PATCH 2034/3421] Bump numpy from 1.18.1 to 1.18.2 Bumps [numpy](https://github.com/numpy/numpy) from 1.18.1 to 1.18.2. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.18.1...v1.18.2) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 12d7336aa..e69d919e0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Load common requirements -r requirements-common.txt -numpy==1.18.1 +numpy==1.18.2 pandas==1.0.2 From de91e169bc6f3316f5d3a5ad52add147ec71eba6 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2020 09:05:12 +0000 Subject: [PATCH 2035/3421] Bump tabulate from 0.8.6 to 0.8.7 Bumps [tabulate](https://github.com/astanin/python-tabulate) from 0.8.6 to 0.8.7. - [Release notes](https://github.com/astanin/python-tabulate/releases) - [Changelog](https://github.com/astanin/python-tabulate/blob/master/CHANGELOG) - [Commits](https://github.com/astanin/python-tabulate/compare/v0.8.6...v0.8.7) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 7c2ad4283..c1e23dfa9 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -10,7 +10,7 @@ urllib3==1.25.8 wrapt==1.12.1 jsonschema==3.2.0 TA-Lib==0.4.17 -tabulate==0.8.6 +tabulate==0.8.7 pycoingecko==1.2.0 jinja2==2.11.1 From 98dc4b4ca3893452e80db2f58dd9d72baaeb5f26 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2020 09:06:41 +0000 Subject: [PATCH 2036/3421] Bump ccxt from 1.24.31 to 1.24.83 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.24.31 to 1.24.83. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.24.31...1.24.83) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 7c2ad4283..6274297c2 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.24.31 +ccxt==1.24.83 SQLAlchemy==1.3.15 python-telegram-bot==12.4.2 arrow==0.15.5 From cb1bc5d5abb1b125be1282c7538f9e169d17d3b8 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2020 09:15:43 +0000 Subject: [PATCH 2037/3421] Bump pandas from 1.0.2 to 1.0.3 Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.0.2 to 1.0.3. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v1.0.2...v1.0.3) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e69d919e0..b1a4b4403 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ -r requirements-common.txt numpy==1.18.2 -pandas==1.0.2 +pandas==1.0.3 From 0a87fe76a363db2056aee42fed2d3dd4902b48fa Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Mon, 23 Mar 2020 11:17:56 +0100 Subject: [PATCH 2038/3421] unified language --- freqtrade/commands/cli_options.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index e1927a901..47e7187a8 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -456,7 +456,7 @@ AVAILABLE_CLI_OPTIONS = { ), "hyperopt_list_max_avg_time": Arg( '--max-avg-time', - help='Select epochs under average time.', + help='Select epochs below average time.', type=float, metavar='FLOAT', ), From 0f53e646fd7d3e707f470244d785539211a17793 Mon Sep 17 00:00:00 2001 From: orehunt Date: Tue, 24 Mar 2020 13:54:46 +0100 Subject: [PATCH 2039/3421] check that the strategy dataframe matches the one given by the bot --- freqtrade/strategy/interface.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 696d2b2d2..530cd0af4 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -241,8 +241,18 @@ class IStrategy(ABC): return dataframe - def get_signal(self, pair: str, interval: str, - dataframe: DataFrame) -> Tuple[bool, bool]: + @staticmethod + def preserve_df(d: DataFrame) -> Tuple[int, float, datetime]: + """ keep some data for dataframes """ + return len(d), d["close"].iloc[-1], d["date"].iloc[-1] + + @staticmethod + def assert_df(d: DataFrame, df_len: int, df_close: float, df_date: datetime): + """ make sure data is unmodified """ + if df_len != len(d) or df_close != d["close"].iloc[-1] or df_date != d["date"].iloc[-1]: + raise Exception("Dataframe returned from strategy does not match original") + + def get_signal(self, pair: str, interval: str, dataframe: DataFrame) -> Tuple[bool, bool]: """ Calculates current signal based several technical analysis indicators :param pair: pair in format ANT/BTC @@ -254,8 +264,11 @@ class IStrategy(ABC): logger.warning('Empty candle (OHLCV) data for pair %s', pair) return False, False + latest_date = dataframe['date'].max() try: + df_len, df_close, df_date = self.preserve_df(dataframe) dataframe = self._analyze_ticker_internal(dataframe, {'pair': pair}) + self.assert_df(dataframe, df_len, df_close, df_date) except ValueError as error: logger.warning( 'Unable to analyze candle (OHLCV) data for pair %s: %s', @@ -275,7 +288,7 @@ class IStrategy(ABC): logger.warning('Empty dataframe for pair %s', pair) return False, False - latest = dataframe.iloc[-1] + latest = dataframe.loc[dataframe['date'] == latest_date].iloc[-1] # Check if dataframe is out of date signal_date = arrow.get(latest['date']) From be41981ef08f65d2d377d7a225456fbdc6221b83 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 20:10:15 +0100 Subject: [PATCH 2040/3421] Test warnings with filter always on --- tests/test_configuration.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 1e9d6440d..79387ba7a 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -73,6 +73,7 @@ def test__args_to_config(caplog): configuration = Configuration(args) config = {} with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") # No warnings ... configuration._args_to_config(config, argname="strategy_path", logstring="DeadBeef") assert len(w) == 0 @@ -82,6 +83,7 @@ def test__args_to_config(caplog): configuration = Configuration(args) config = {} with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") # Deprecation warnings! configuration._args_to_config(config, argname="strategy_path", logstring="DeadBeef", deprecated_msg="Going away soon!") From d9a5e1cd48955041a6e41e1e6138be75b15c46f1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Mar 2020 08:30:18 +0100 Subject: [PATCH 2041/3421] Update docs/exchanges.md Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/exchanges.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/exchanges.md b/docs/exchanges.md index c600077ce..06db26f89 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -83,4 +83,4 @@ Whether your exchange returns incomplete candles or not can be checked using [th Due to the danger of repainting, Freqtrade does not allow you to use this incomplete candle. -However, usually, this requirement is based on the need for the latest price - which can be aquired using the [data provider](strategy-customization.md#possible-options-for-dataprovider) from within the strategy. +However, if it is based on the need for the latest price for your strategy - then this requirement can be acquired using the [data provider](strategy-customization.md#possible-options-for-dataprovider) from within the strategy. From dfac7448d1260b81653e600fda27dc57d41af0ab Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Mar 2020 08:33:22 +0100 Subject: [PATCH 2042/3421] fix typo Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 78c643868..9ecb0a13e 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -40,7 +40,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | Parameter | Description | |------------|-------------| -| `max_open_trades` | **Required.** Number of open trades your bot is allowed to have. Only one open trade per pair is possible, so the lenght of your whitelist another limitation which can apply. If -1 then it is ignored (i.e. potentially unlimited open trades). [More information below](#configuring-amount-per-trade).
      **Datatype:** Positive integer or -1. +| `max_open_trades` | **Required.** Number of open trades your bot is allowed to have. Only one open trade per pair is possible, so the length of your whitelist another limitation which can apply. If -1 then it is ignored (i.e. potentially unlimited open trades). [More information below](#configuring-amount-per-trade).
      **Datatype:** Positive integer or -1. | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** String | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Positive float or `"unlimited"`. | `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade).
      *Defaults to `0.99` 99%).*
      **Datatype:** Positive float between `0.1` and `1.0`. From 6f687c97ce1743e43dc8b4a1bcb166cf7be4a523 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Mar 2020 09:24:37 +0100 Subject: [PATCH 2043/3421] Update docs/configuration.md Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 9ecb0a13e..d8a9653c3 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -40,7 +40,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | Parameter | Description | |------------|-------------| -| `max_open_trades` | **Required.** Number of open trades your bot is allowed to have. Only one open trade per pair is possible, so the length of your whitelist another limitation which can apply. If -1 then it is ignored (i.e. potentially unlimited open trades). [More information below](#configuring-amount-per-trade).
      **Datatype:** Positive integer or -1. +| `max_open_trades` | **Required.** Number of open trades your bot is allowed to have. Only one open trade per pair is possible, so the length of your pairlist is another limitation which can apply. If -1 then it is ignored (i.e. potentially unlimited open trades, limited by the pairlist). [More information below](#configuring-amount-per-trade).
      **Datatype:** Positive integer or -1. | `stake_currency` | **Required.** Crypto-currency used for trading. [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** String | `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy).
      **Datatype:** Positive float or `"unlimited"`. | `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade).
      *Defaults to `0.99` 99%).*
      **Datatype:** Positive float between `0.1` and `1.0`. From 91b058cf11d2ed585c0a67e9fa4dd89d280907f9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 16:16:10 +0100 Subject: [PATCH 2044/3421] Fix typo in tests --- tests/test_freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index e37270bd3..abc9babba 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2129,7 +2129,7 @@ def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, cap assert rpc_mock.call_count == 2 trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() assert len(trades) == 1 - # Verify that tradehas been updated + # Verify that trade has been updated assert trades[0].amount == (limit_buy_order_old_partial['amount'] - limit_buy_order_old_partial['remaining']) - 0.0001 assert trades[0].open_order_id is None @@ -2168,7 +2168,7 @@ def test_check_handle_timedout_partial_except(default_conf, ticker, open_trade, assert rpc_mock.call_count == 2 trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() assert len(trades) == 1 - # Verify that tradehas been updated + # Verify that trade has been updated assert trades[0].amount == (limit_buy_order_old_partial['amount'] - limit_buy_order_old_partial['remaining']) From 1817e6fbdfecbbca308e2fbaf8bdc9b57756182e Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 16:16:19 +0100 Subject: [PATCH 2045/3421] Combine real_amount updating into one method --- freqtrade/freqtradebot.py | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 570f8bea8..b30f55ccd 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -916,17 +916,7 @@ class FreqtradeBot: # we need to fall back to the values from order if corder does not contain these keys. trade.amount = order['amount'] - corder.get('remaining', order['remaining']) trade.stake_amount = trade.amount * trade.open_rate - # verify if fees were taken from amount to avoid problems during selling - try: - new_amount = self.get_real_amount(trade, corder if 'fee' in corder else order, - trade.amount) - if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): - trade.amount = new_amount - # Fee was applied, so set to 0 - trade.fee_open = 0 - trade.recalc_open_trade_price() - except DependencyException as e: - logger.warning("Could not update trade amount: %s", e) + self.update_trade_state(trade, corder if 'fee' in corder else order, trade.amount) trade.open_order_id = None logger.info('Partial buy order timeout for %s.', trade) @@ -1122,9 +1112,11 @@ class FreqtradeBot: # Common update trade state methods # - def update_trade_state(self, trade: Trade, action_order: dict = None) -> None: + def update_trade_state(self, trade: Trade, action_order: dict = None, + order_amount: float = None) -> None: """ Checks trades with open orders and updates the amount if necessary + Handles closing both buy and sell orders. """ # Get order details for actual price per unit if trade.open_order_id: @@ -1137,7 +1129,7 @@ class FreqtradeBot: return # Try update amount (binance-fix) try: - new_amount = self.get_real_amount(trade, order) + new_amount = self.get_real_amount(trade, order, order_amount) if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): order['amount'] = new_amount # Fee was applied, so set to 0 From 9c351007f5a1fa4b27f0c123f6a8c736c9843f55 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 17:12:24 +0100 Subject: [PATCH 2046/3421] Provide reason for cancelled sell order --- freqtrade/freqtradebot.py | 12 +++++++----- freqtrade/rpc/telegram.py | 3 ++- tests/rpc/test_rpc_telegram.py | 6 ++++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index b30f55ccd..af0de108a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -926,10 +926,10 @@ class FreqtradeBot: }) return False - def handle_timedout_limit_sell(self, trade: Trade, order: Dict) -> bool: + def handle_timedout_limit_sell(self, trade: Trade, order: Dict) -> str: """ Sell timeout - cancel order and update trade - :return: True if order was fully cancelled + :return: Reason for cancel """ # if trade is not partially completed, just cancel the trade if order['remaining'] == order['amount']: @@ -943,16 +943,17 @@ class FreqtradeBot: logger.info('Sell order %s for %s.', reason, trade) trade.close_rate = None + trade.close_rate_requested = None trade.close_profit = None trade.close_profit_abs = None trade.close_date = None trade.is_open = True trade.open_order_id = None - return True + return reason # TODO: figure out how to handle partially complete sell orders - return False + return 'partially filled - keeping order open' def _safe_sell_amount(self, pair: str, amount: float) -> float: """ @@ -1071,7 +1072,7 @@ class FreqtradeBot: # Send the message self.rpc.send_msg(msg) - def _notify_sell_cancel(self, trade: Trade, order_type: str) -> None: + def _notify_sell_cancel(self, trade: Trade, order_type: str, reason: str) -> None: """ Sends rpc notification when a sell cancel occured. """ @@ -1098,6 +1099,7 @@ class FreqtradeBot: 'close_date': trade.close_date, 'stake_currency': self.config['stake_currency'], 'fiat_currency': self.config.get('fiat_display_currency', None), + 'reason': reason, } if 'fiat_display_currency' in self.config: diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index ad01700ab..a21f7556c 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -172,7 +172,8 @@ class Telegram(RPC): ' / {profit_fiat:.3f} {fiat_currency})`').format(**msg) elif msg['type'] == RPCMessageType.SELL_CANCEL_NOTIFICATION: - message = "*{exchange}:* Cancelling Open Sell Order for {pair}".format(**msg) + message = ("*{exchange}:* Cancelling Open Sell Order " + "for {pair}. Reason: {reason}").format(**msg) elif msg['type'] == RPCMessageType.STATUS_NOTIFICATION: message = '*Status:* `{status}`'.format(**msg) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index d769016c4..bbc961763 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1316,18 +1316,20 @@ def test_send_msg_sell_cancel_notification(default_conf, mocker) -> None: 'type': RPCMessageType.SELL_CANCEL_NOTIFICATION, 'exchange': 'Binance', 'pair': 'KEY/ETH', + 'reason': 'Cancelled on exchange' }) assert msg_mock.call_args[0][0] \ - == ('*Binance:* Cancelling Open Sell Order for KEY/ETH') + == ('*Binance:* Cancelling Open Sell Order for KEY/ETH. Reason: Cancelled on exchange') msg_mock.reset_mock() telegram.send_msg({ 'type': RPCMessageType.SELL_CANCEL_NOTIFICATION, 'exchange': 'Binance', 'pair': 'KEY/ETH', + 'reason': 'timeout' }) assert msg_mock.call_args[0][0] \ - == ('*Binance:* Cancelling Open Sell Order for KEY/ETH') + == ('*Binance:* Cancelling Open Sell Order for KEY/ETH. Reason: timeout') # Reset singleton function to avoid random breaks telegram._fiat_converter.convert_amount = old_convamount From 270ac2e8c113f39a55a14c019e19c578f8b059ab Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 17:15:47 +0100 Subject: [PATCH 2047/3421] Add check_order_cancelled_empty method to exchange --- freqtrade/exchange/exchange.py | 8 ++++++++ tests/exchange/test_exchange.py | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index f4c94a1ca..073e28659 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -902,6 +902,14 @@ class Exchange: self._async_get_trade_history(pair=pair, since=since, until=until, from_id=from_id)) + def check_order_canceled_empty(self, order: Dict) -> bool: + """ + Verify if an order has been cancelled without being partially filled + :param order: Order dict as returned from get_order() + :return: True if order has been cancelled without being filled, False otherwise. + """ + return order['status'] in ('closed', 'canceled') and order.get('filled') == 0.0 + @retrier def cancel_order(self, order_id: str, pair: str) -> None: if self._config['dry_run']: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 8d8930f66..7f03eb547 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1705,6 +1705,18 @@ def test_cancel_order_dry_run(default_conf, mocker, exchange_name): assert exchange.cancel_order(order_id='123', pair='TKN/BTC') is None +@pytest.mark.parametrize("exchange_name", EXCHANGES) +@pytest.mark.parametrize("order,result", [ + ({'status': 'closed', 'filled': 10}, False), + ({'status': 'closed', 'filled': 0.0}, True), + ({'status': 'canceled', 'filled': 0.0}, True), + ({'status': 'canceled', 'filled': 10.0}, False), + ]) +def test_check_order_canceled_empty(mocker, default_conf, exchange_name, order, result): + exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) + assert exchange.check_order_canceled_empty(order) == result + + # Ensure that if not dry_run, we should call API @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_cancel_order(default_conf, mocker, exchange_name): From 7c47c6e3bd52e30d7d81462d0188c5c31baa18a0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 17:16:35 +0100 Subject: [PATCH 2048/3421] check for timeouts before exiting positions --- freqtrade/freqtradebot.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index af0de108a..14cda9192 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -143,6 +143,10 @@ class FreqtradeBot: self.dataprovider.refresh(self._create_pair_whitelist(self.active_pair_whitelist), self.strategy.informative_pairs()) + with self._sell_lock: + # Check and handle any timed out open orders + self.check_handle_timedout() + # Protect from collisions with forcesell. # Without this, freqtrade my try to recreate stoploss_on_exchange orders # while selling is in process, since telegram messages arrive in an different thread. @@ -154,8 +158,6 @@ class FreqtradeBot: if self.get_free_open_trades(): self.enter_positions() - # Check and handle any timed out open orders - self.check_handle_timedout() Trade.session.flush() def _refresh_whitelist(self, trades: List[Trade] = []) -> List[str]: From 700cedc57312b02e18a2aa98b5f71ab253953c80 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 17:17:40 +0100 Subject: [PATCH 2049/3421] Unify handling of open orders to update_trade_state --- freqtrade/freqtradebot.py | 42 ++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 14cda9192..e27569317 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -602,7 +602,6 @@ class FreqtradeBot: trades_closed = 0 for trade in trades: try: - self.update_trade_state(trade) if (self.strategy.order_types.get('stoploss_on_exchange') and self.handle_stoploss_on_exchange(trade)): @@ -862,30 +861,32 @@ class FreqtradeBot: continue order = self.exchange.get_order(trade.open_order_id, trade.pair) except (RequestException, DependencyException, InvalidOrderException): - logger.info( - 'Cannot query order for %s due to %s', - trade, - traceback.format_exc()) + logger.info('Cannot query order for %s due to %s', trade, traceback.format_exc()) continue + trade_state_update = self.update_trade_state(trade, order) + # Check if trade is still actually open - if float(order.get('remaining', 0.0)) == 0.0: - self.wallets.update() - continue + # TODO: this seems questionable at best + # if float(order.get('remaining', 0.0)) == 0.0: + # self.wallets.update() + # continue - if ((order['side'] == 'buy' and order['status'] == 'canceled') - or (self._check_timed_out('buy', order))): + if (order['side'] == 'buy' and ( + trade_state_update + or self._check_timed_out('buy', order))): self.handle_timedout_limit_buy(trade, order) self.wallets.update() order_type = self.strategy.order_types['buy'] self._notify_buy_cancel(trade, order_type) - elif ((order['side'] == 'sell' and order['status'] == 'canceled') - or (self._check_timed_out('sell', order))): - self.handle_timedout_limit_sell(trade, order) + elif (order['side'] == 'sell' and ( + trade_state_update + or self._check_timed_out('sell', order))): + reason = self.handle_timedout_limit_sell(trade, order) self.wallets.update() order_type = self.strategy.order_types['sell'] - self._notify_sell_cancel(trade, order_type) + self._notify_sell_cancel(trade, order_type, reason) def handle_timedout_limit_buy(self, trade: Trade, order: Dict) -> bool: """ @@ -934,8 +935,8 @@ class FreqtradeBot: :return: Reason for cancel """ # if trade is not partially completed, just cancel the trade - if order['remaining'] == order['amount']: - if order["status"] != "canceled": + if order['remaining'] == order['amount'] or order['filled'] == 0.0: + if not self.exchange.check_order_canceled_empty(order): reason = "cancelled due to timeout" # if trade is not partially completed, just delete the trade self.exchange.cancel_order(trade.open_order_id, trade.pair) @@ -1117,7 +1118,7 @@ class FreqtradeBot: # def update_trade_state(self, trade: Trade, action_order: dict = None, - order_amount: float = None) -> None: + order_amount: float = None) -> bool: """ Checks trades with open orders and updates the amount if necessary Handles closing both buy and sell orders. @@ -1139,16 +1140,21 @@ class FreqtradeBot: # Fee was applied, so set to 0 trade.fee_open = 0 trade.recalc_open_trade_price() - except DependencyException as exception: logger.warning("Could not update trade amount: %s", exception) + if self.exchange.check_order_canceled_empty(order): + # Trade has been cancelled on exchange + # Handling of this will happen in check_handle_timeout. + return True trade.update(order) # Updating wallets when order is closed if not trade.is_open: self.wallets.update() + return False + def get_real_amount(self, trade: Trade, order: Dict, order_amount: float = None) -> float: """ Get real amount for the trade From f3103be15c22a09648b58bffbf88611faf9dc4d1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 17:20:16 +0100 Subject: [PATCH 2050/3421] Fix test --- freqtrade/freqtradebot.py | 2 +- tests/test_freqtradebot.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e27569317..bec08fbc2 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -935,7 +935,7 @@ class FreqtradeBot: :return: Reason for cancel """ # if trade is not partially completed, just cancel the trade - if order['remaining'] == order['amount'] or order['filled'] == 0.0: + if order['remaining'] == order['amount'] or order.get('filled') == 0.0: if not self.exchange.check_order_canceled_empty(order): reason = "cancelled due to timeout" # if trade is not partially completed, just delete the trade diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index abc9babba..fd6136799 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1592,13 +1592,13 @@ def test_exit_positions_exception(mocker, default_conf, limit_buy_order, caplog) mocker.patch('freqtrade.exchange.Exchange.get_order', return_value=limit_buy_order) trade = MagicMock() - trade.open_order_id = '123' + trade.open_order_id = None trade.open_fee = 0.001 trades = [trade] # Test raise of DependencyException exception mocker.patch( - 'freqtrade.freqtradebot.FreqtradeBot.update_trade_state', + 'freqtrade.freqtradebot.FreqtradeBot.handle_trade', side_effect=DependencyException() ) n = freqtrade.exit_positions(trades) @@ -1970,7 +1970,7 @@ def test_check_handle_cancelled_buy(default_conf, ticker, limit_buy_order_old, o rpc_mock = patch_RPCManager(mocker) cancel_order_mock = MagicMock() patch_exchange(mocker) - limit_buy_order_old.update({"status": "canceled"}) + limit_buy_order_old.update({"status": "canceled", 'filled': 0.0}) mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, @@ -2049,7 +2049,7 @@ def test_check_handle_cancelled_sell(default_conf, ticker, limit_sell_order_old, """ Handle sell order cancelled on exchange""" rpc_mock = patch_RPCManager(mocker) cancel_order_mock = MagicMock() - limit_sell_order_old.update({"status": "canceled"}) + limit_sell_order_old.update({"status": "canceled", 'filled': 0.0}) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -2276,7 +2276,7 @@ def test_handle_timedout_limit_sell(mocker, default_conf) -> None: assert freqtrade.handle_timedout_limit_sell(trade, order) assert cancel_order_mock.call_count == 1 order['amount'] = 2 - assert not freqtrade.handle_timedout_limit_sell(trade, order) + assert freqtrade.handle_timedout_limit_sell(trade, order) == 'partially filled - keeping order open' # Assert cancel_order was not called (callcount remains unchanged) assert cancel_order_mock.call_count == 1 @@ -2544,8 +2544,11 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, f # Create some test data freqtrade.enter_positions() + freqtrade.check_handle_timedout() trade = Trade.query.first() trades = [trade] + assert trade.stoploss_order_id is None + freqtrade.exit_positions(trades) assert trade assert trade.stoploss_order_id == '123' From 19e5dbddc6670d9d759bc140bdbd4298ec9c13e4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 19:53:35 +0100 Subject: [PATCH 2051/3421] Add filled to all orders --- tests/conftest.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 64d0cd5ee..4b971c1bc 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -712,6 +712,7 @@ def limit_buy_order(): 'datetime': arrow.utcnow().isoformat(), 'price': 0.00001099, 'amount': 90.99181073, + 'filled': 90.99181073, 'remaining': 0.0, 'status': 'closed' } @@ -727,6 +728,7 @@ def market_buy_order(): 'datetime': arrow.utcnow().isoformat(), 'price': 0.00004099, 'amount': 91.99181073, + 'filled': 91.99181073, 'remaining': 0.0, 'status': 'closed' } @@ -742,6 +744,7 @@ def market_sell_order(): 'datetime': arrow.utcnow().isoformat(), 'price': 0.00004173, 'amount': 91.99181073, + 'filled': 91.99181073, 'remaining': 0.0, 'status': 'closed' } @@ -757,6 +760,7 @@ def limit_buy_order_old(): 'datetime': str(arrow.utcnow().shift(minutes=-601).datetime), 'price': 0.00001099, 'amount': 90.99181073, + 'filled': 0.0, 'remaining': 90.99181073, 'status': 'open' } @@ -772,6 +776,7 @@ def limit_sell_order_old(): 'datetime': arrow.utcnow().shift(minutes=-601).isoformat(), 'price': 0.00001099, 'amount': 90.99181073, + 'filled': 0.0, 'remaining': 90.99181073, 'status': 'open' } @@ -787,6 +792,7 @@ def limit_buy_order_old_partial(): 'datetime': arrow.utcnow().shift(minutes=-601).isoformat(), 'price': 0.00001099, 'amount': 90.99181073, + 'filled': 23.0, 'remaining': 67.99181073, 'status': 'open' } @@ -810,6 +816,7 @@ def limit_sell_order(): 'datetime': arrow.utcnow().isoformat(), 'price': 0.00001173, 'amount': 90.99181073, + 'filled': 90.99181073, 'remaining': 0.0, 'status': 'closed' } From f04f606b707ee39d03224e3c015610c12c5a252d Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 19:53:50 +0100 Subject: [PATCH 2052/3421] Updateing order amount should use filled - not amount if possible --- freqtrade/persistence.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 0d668596c..97a6b6084 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -315,7 +315,7 @@ class Trade(_DECL_BASE): if order_type in ('market', 'limit') and order['side'] == 'buy': # Update open rate and actual amount self.open_rate = Decimal(order['price']) - self.amount = Decimal(order['amount']) + self.amount = Decimal(order.get('filled', order['amount'])) self.recalc_open_trade_price() logger.info('%s_BUY has been fulfilled for %s.', order_type.upper(), self) self.open_order_id = None From 1e2fadbc022c93e4e4fb3b2679af3e86938d1182 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 19:54:13 +0100 Subject: [PATCH 2053/3421] Fix failing test --- tests/test_freqtradebot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index fd6136799..4a633e0d8 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2499,6 +2499,7 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, ticker, fee, ticke assert trade trades = [trade] + freqtrade.check_handle_timedout() freqtrade.exit_positions(trades) # Increase the price and sell it From 3c1b155e9ff0f837ffbd950545f93c4f8a9ffe1f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 20:05:25 +0100 Subject: [PATCH 2054/3421] Remove filled if amount is modified to suit fee structure --- freqtrade/freqtradebot.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index bec08fbc2..d0b37fefb 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1122,6 +1122,7 @@ class FreqtradeBot: """ Checks trades with open orders and updates the amount if necessary Handles closing both buy and sell orders. + :return: True if order has been cancelled without being filled partially, False otherwise """ # Get order details for actual price per unit if trade.open_order_id: @@ -1131,12 +1132,13 @@ class FreqtradeBot: order = action_order or self.exchange.get_order(trade.open_order_id, trade.pair) except InvalidOrderException as exception: logger.warning('Unable to fetch order %s: %s', trade.open_order_id, exception) - return + return False # Try update amount (binance-fix) try: new_amount = self.get_real_amount(trade, order, order_amount) if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): order['amount'] = new_amount + del order['filled'] # Fee was applied, so set to 0 trade.fee_open = 0 trade.recalc_open_trade_price() From 95011919d3c2857b6fb34cb61d83d00c8d791a0f Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Mar 2020 10:45:05 +0100 Subject: [PATCH 2055/3421] Remove questionable handling of orders --- freqtrade/freqtradebot.py | 6 ------ tests/test_freqtradebot.py | 3 ++- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d0b37fefb..a0d142dee 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -866,12 +866,6 @@ class FreqtradeBot: trade_state_update = self.update_trade_state(trade, order) - # Check if trade is still actually open - # TODO: this seems questionable at best - # if float(order.get('remaining', 0.0)) == 0.0: - # self.wallets.update() - # continue - if (order['side'] == 'buy' and ( trade_state_update or self._check_timed_out('buy', order))): diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 4a633e0d8..9fb545b15 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2276,7 +2276,8 @@ def test_handle_timedout_limit_sell(mocker, default_conf) -> None: assert freqtrade.handle_timedout_limit_sell(trade, order) assert cancel_order_mock.call_count == 1 order['amount'] = 2 - assert freqtrade.handle_timedout_limit_sell(trade, order) == 'partially filled - keeping order open' + assert (freqtrade.handle_timedout_limit_sell(trade, order) + == 'partially filled - keeping order open') # Assert cancel_order was not called (callcount remains unchanged) assert cancel_order_mock.call_count == 1 From 3ef568029f48a55dc22b64d4ea904da75d50b2d3 Mon Sep 17 00:00:00 2001 From: orehunt Date: Thu, 26 Mar 2020 07:05:30 +0100 Subject: [PATCH 2056/3421] different exception messages --- freqtrade/strategy/interface.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 530cd0af4..4f833be23 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -16,6 +16,7 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.exchange import timeframe_to_minutes from freqtrade.persistence import Trade from freqtrade.wallets import Wallets +from freqtrade.exceptions import DependencyException logger = logging.getLogger(__name__) @@ -242,15 +243,23 @@ class IStrategy(ABC): return dataframe @staticmethod - def preserve_df(d: DataFrame) -> Tuple[int, float, datetime]: + def preserve_df(dataframe: DataFrame) -> Tuple[int, float, datetime]: """ keep some data for dataframes """ - return len(d), d["close"].iloc[-1], d["date"].iloc[-1] + return len(dataframe), dataframe["close"].iloc[-1], dataframe["date"].iloc[-1] @staticmethod - def assert_df(d: DataFrame, df_len: int, df_close: float, df_date: datetime): + def assert_df(dataframe: DataFrame, df_len: int, df_close: float, df_date: datetime): """ make sure data is unmodified """ - if df_len != len(d) or df_close != d["close"].iloc[-1] or df_date != d["date"].iloc[-1]: - raise Exception("Dataframe returned from strategy does not match original") + message = "" + if df_len != len(dataframe): + message = "length" + elif df_close != dataframe["close"].iloc[-1]: + message = "last close price" + elif df_date != dataframe["date"].iloc[-1]: + message = "last date" + if message: + raise DependencyException("Dataframe returned from strategy has mismatching " + f"{message}.") def get_signal(self, pair: str, interval: str, dataframe: DataFrame) -> Tuple[bool, bool]: """ From ef4426a65c08f767314a1a789d3b06c7b9a98072 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Fri, 27 Mar 2020 03:01:51 +0100 Subject: [PATCH 2057/3421] added comma --- freqtrade/commands/hyperopt_commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index c5cf9a969..33abb7823 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -37,7 +37,7 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: 'filter_min_total_profit': config.get('hyperopt_list_min_total_profit', None), 'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None), 'filter_min_objective': config.get('hyperopt_list_min_objective', None), - 'filter_max_objective': config.get('hyperopt_list_max_objective', None) + 'filter_max_objective': config.get('hyperopt_list_max_objective', None), } if filteroptions['filter_min_objective'] is not None: From 78aa65825550726142ca154b9b0c4427fac283c1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 29 Mar 2020 11:27:40 +0200 Subject: [PATCH 2058/3421] Remove unnecessary test (it's a copy of the remaining test) --- tests/strategy/test_interface.py | 38 ++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 949dda4a0..4e8d8f708 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -17,33 +17,36 @@ from tests.conftest import get_patched_exchange, log_has _STRATEGY = DefaultStrategy(config={}) -def test_returns_latest_buy_signal(mocker, default_conf, ohlcv_history): - mocker.patch.object( - _STRATEGY, '_analyze_ticker_internal', - return_value=DataFrame([{'buy': 1, 'sell': 0, 'date': arrow.utcnow()}]) - ) - assert _STRATEGY.get_signal('ETH/BTC', '5m', ohlcv_history) == (True, False) +def test_returns_latest_signal(mocker, default_conf, ohlcv_history): + ohlcv_history.loc[1, 'date'] = arrow.utcnow() + # Take a copy to correctly modify the call + mocked_history = ohlcv_history.copy() + mocked_history['sell'] = 0 + mocked_history['buy'] = 0 + mocked_history.loc[1, 'sell'] = 1 mocker.patch.object( _STRATEGY, '_analyze_ticker_internal', - return_value=DataFrame([{'buy': 0, 'sell': 1, 'date': arrow.utcnow()}]) - ) - assert _STRATEGY.get_signal('ETH/BTC', '5m', ohlcv_history) == (False, True) - - -def test_returns_latest_sell_signal(mocker, default_conf, ohlcv_history): - mocker.patch.object( - _STRATEGY, '_analyze_ticker_internal', - return_value=DataFrame([{'sell': 1, 'buy': 0, 'date': arrow.utcnow()}]) + return_value=mocked_history ) assert _STRATEGY.get_signal('ETH/BTC', '5m', ohlcv_history) == (False, True) + mocked_history.loc[1, 'sell'] = 0 + mocked_history.loc[1, 'buy'] = 1 mocker.patch.object( _STRATEGY, '_analyze_ticker_internal', - return_value=DataFrame([{'sell': 0, 'buy': 1, 'date': arrow.utcnow()}]) + return_value=mocked_history ) assert _STRATEGY.get_signal('ETH/BTC', '5m', ohlcv_history) == (True, False) + mocked_history.loc[1, 'sell'] = 0 + mocked_history.loc[1, 'buy'] = 0 + + mocker.patch.object( + _STRATEGY, '_analyze_ticker_internal', + return_value=mocked_history + ) + assert _STRATEGY.get_signal('ETH/BTC', '5m', ohlcv_history) == (False, False) def test_get_signal_empty(default_conf, mocker, caplog): @@ -74,6 +77,8 @@ def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ohlcv_history) _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame([]) ) + mocker.patch.object(_STRATEGY, 'assert_df') + assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], ohlcv_history) assert log_has('Empty dataframe for pair xyz', caplog) @@ -89,6 +94,7 @@ def test_get_signal_old_dataframe(default_conf, mocker, caplog, ohlcv_history): _STRATEGY, '_analyze_ticker_internal', return_value=DataFrame(ticks) ) + mocker.patch.object(_STRATEGY, 'assert_df') assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], ohlcv_history) assert log_has('Outdated history for pair xyz. Last tick is 16 minutes old', caplog) From 0887a0212c73816e3ae68c7ca7f7a4cb09a3f192 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 29 Mar 2020 11:29:31 +0200 Subject: [PATCH 2059/3421] Adjust tests to pass validation --- tests/strategy/test_interface.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 4e8d8f708..be8750c3c 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -85,14 +85,19 @@ def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ohlcv_history) def test_get_signal_old_dataframe(default_conf, mocker, caplog, ohlcv_history): - caplog.set_level(logging.INFO) # default_conf defines a 5m interval. we check interval * 2 + 5m # this is necessary as the last candle is removed (partial candles) by default - oldtime = arrow.utcnow().shift(minutes=-16) - ticks = DataFrame([{'buy': 1, 'date': oldtime}]) + ohlcv_history.loc[1, 'date'] = arrow.utcnow().shift(minutes=-16) + # Take a copy to correctly modify the call + mocked_history = ohlcv_history.copy() + mocked_history['sell'] = 0 + mocked_history['buy'] = 0 + mocked_history.loc[1, 'buy'] = 1 + + caplog.set_level(logging.INFO) mocker.patch.object( _STRATEGY, '_analyze_ticker_internal', - return_value=DataFrame(ticks) + return_value=mocked_history ) mocker.patch.object(_STRATEGY, 'assert_df') assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], From cd2e738e351ae2e84d144009291c5346848f029b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 29 Mar 2020 11:40:13 +0200 Subject: [PATCH 2060/3421] Add test for assert error --- freqtrade/strategy/interface.py | 11 ++++++----- tests/strategy/test_interface.py | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 4f833be23..89a38bf54 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -279,11 +279,12 @@ class IStrategy(ABC): dataframe = self._analyze_ticker_internal(dataframe, {'pair': pair}) self.assert_df(dataframe, df_len, df_close, df_date) except ValueError as error: - logger.warning( - 'Unable to analyze candle (OHLCV) data for pair %s: %s', - pair, - str(error) - ) + logger.warning('Unable to analyze candle (OHLCV) data for pair %s: %s', + pair, str(error)) + return False, False + except DependencyException as error: + logger.warning("Unable to analyze candle (OHLCV) data for pair %s: %s", + pair, str(error)) return False, False except Exception as error: logger.exception( diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index be8750c3c..1f496a01b 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -6,6 +6,7 @@ from unittest.mock import MagicMock import arrow from pandas import DataFrame +from freqtrade.exceptions import DependencyException from freqtrade.configuration import TimeRange from freqtrade.data.history import load_data from freqtrade.persistence import Trade @@ -105,6 +106,26 @@ def test_get_signal_old_dataframe(default_conf, mocker, caplog, ohlcv_history): assert log_has('Outdated history for pair xyz. Last tick is 16 minutes old', caplog) +def test_assert_df_raise(default_conf, mocker, caplog, ohlcv_history): + # default_conf defines a 5m interval. we check interval * 2 + 5m + # this is necessary as the last candle is removed (partial candles) by default + ohlcv_history.loc[1, 'date'] = arrow.utcnow().shift(minutes=-16) + # Take a copy to correctly modify the call + mocked_history = ohlcv_history.copy() + mocked_history['sell'] = 0 + mocked_history['buy'] = 0 + mocked_history.loc[1, 'buy'] = 1 + + caplog.set_level(logging.INFO) + mocker.patch.object( + _STRATEGY, 'assert_df', + side_effect=DependencyException('Dataframe returned...') + ) + assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], + ohlcv_history) + assert log_has('Unable to analyze candle (OHLCV) data for pair xyz: Dataframe returned...', caplog) + + def test_get_signal_handles_exceptions(mocker, default_conf): exchange = get_patched_exchange(mocker, default_conf) mocker.patch.object( From 83cc121b706efe6e364885f24778255e9c0eb60a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 29 Mar 2020 11:44:36 +0200 Subject: [PATCH 2061/3421] Add tsts for assert_df (ensuring it raises when it should) --- tests/strategy/test_interface.py | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 1f496a01b..8bc399f42 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -4,16 +4,18 @@ import logging from unittest.mock import MagicMock import arrow +import pytest from pandas import DataFrame -from freqtrade.exceptions import DependencyException from freqtrade.configuration import TimeRange from freqtrade.data.history import load_data +from freqtrade.exceptions import DependencyException from freqtrade.persistence import Trade from freqtrade.resolvers import StrategyResolver -from .strats.default_strategy import DefaultStrategy from tests.conftest import get_patched_exchange, log_has +from .strats.default_strategy import DefaultStrategy + # Avoid to reinit the same object again and again _STRATEGY = DefaultStrategy(config={}) @@ -123,7 +125,27 @@ def test_assert_df_raise(default_conf, mocker, caplog, ohlcv_history): ) assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], ohlcv_history) - assert log_has('Unable to analyze candle (OHLCV) data for pair xyz: Dataframe returned...', caplog) + assert log_has('Unable to analyze candle (OHLCV) data for pair xyz: Dataframe returned...', + caplog) + + +def test_assert_df(default_conf, mocker, ohlcv_history): + # Ensure it's running when passed correctly + _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), + ohlcv_history.loc[1, 'close'], ohlcv_history.loc[1, 'date']) + + with pytest.raises(DependencyException, match=r"Dataframe returned from strategy.*length\."): + _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history) + 1, + ohlcv_history.loc[1, 'close'], ohlcv_history.loc[1, 'date']) + + with pytest.raises(DependencyException, + match=r"Dataframe returned from strategy.*last close price\."): + _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), + ohlcv_history.loc[1, 'close'] + 0.01, ohlcv_history.loc[1, 'date']) + with pytest.raises(DependencyException, + match=r"Dataframe returned from strategy.*last date\."): + _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), + ohlcv_history.loc[1, 'close'], ohlcv_history.loc[0, 'date']) def test_get_signal_handles_exceptions(mocker, default_conf): From a5d00ce7176a78058cb9af3d091a51902fa5b764 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 30 Mar 2020 07:56:17 +0200 Subject: [PATCH 2062/3421] Remove defaultstrategy occurance from docs --- docs/bot-usage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 78e137676..60cacfb94 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -145,9 +145,9 @@ It is recommended to use version control to keep track of changes to your strate This parameter will allow you to load your custom strategy class. Per default without `--strategy` or `-s` the bot will load the -`DefaultStrategy` included with the bot (`freqtrade/strategy/default_strategy.py`). +`SampleStrategy` installed by the `create-userdir` subcommand (usually `user_data/strategy/sample_strategy.py`). -The bot will search your strategy file within `user_data/strategies` and `freqtrade/strategy`. +The bot will search your strategy file within `user_data/strategies`. To load a strategy, simply pass the class name (e.g.: `CustomStrategy`) in this parameter. From f1b92e2569f8db26fb092ad3e579d94542d28f01 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 30 Mar 2020 08:11:38 +0200 Subject: [PATCH 2063/3421] Improve wording of documentation --- docs/bot-usage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 60cacfb94..b1649374a 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -144,10 +144,10 @@ It is recommended to use version control to keep track of changes to your strate ### How to use **--strategy**? This parameter will allow you to load your custom strategy class. -Per default without `--strategy` or `-s` the bot will load the -`SampleStrategy` installed by the `create-userdir` subcommand (usually `user_data/strategy/sample_strategy.py`). +To test the bot installation, you can use the `SampleStrategy` installed by the `create-userdir` subcommand (usually `user_data/strategy/sample_strategy.py`). The bot will search your strategy file within `user_data/strategies`. +To use other directories, please read the next section about `--strategy-path`. To load a strategy, simply pass the class name (e.g.: `CustomStrategy`) in this parameter. From 7e1719cfc71b0e4a26cf3922b6b279a78c4bd326 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2020 08:56:50 +0000 Subject: [PATCH 2064/3421] Bump prompt-toolkit from 3.0.4 to 3.0.5 Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.4 to 3.0.5. - [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases) - [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG) - [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.4...3.0.5) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index e490c8927..c3ae57c72 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -30,4 +30,4 @@ flask==1.1.1 colorama==0.4.3 # Building config files interactively questionary==1.5.1 -prompt-toolkit==3.0.4 +prompt-toolkit==3.0.5 From 7e60e0549afd5a20c8d10178baa33ab89ae72d02 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2020 08:57:16 +0000 Subject: [PATCH 2065/3421] Bump flake8-tidy-imports from 4.0.0 to 4.1.0 Bumps [flake8-tidy-imports](https://github.com/adamchainz/flake8-tidy-imports) from 4.0.0 to 4.1.0. - [Release notes](https://github.com/adamchainz/flake8-tidy-imports/releases) - [Changelog](https://github.com/adamchainz/flake8-tidy-imports/blob/master/HISTORY.rst) - [Commits](https://github.com/adamchainz/flake8-tidy-imports/compare/4.0.0...4.1.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index a4d83eb4f..01f189c56 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -6,7 +6,7 @@ coveralls==1.11.1 flake8==3.7.9 flake8-type-annotations==0.1.0 -flake8-tidy-imports==4.0.0 +flake8-tidy-imports==4.1.0 mypy==0.770 pytest==5.4.1 pytest-asyncio==0.10.0 From 2de10d4c5665e6183f2d9d72f035f20288beb1af Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2020 08:58:21 +0000 Subject: [PATCH 2066/3421] Bump ccxt from 1.24.83 to 1.25.38 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.24.83 to 1.25.38. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.24.83...1.25.38) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index e490c8927..54a738e06 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.24.83 +ccxt==1.25.38 SQLAlchemy==1.3.15 python-telegram-bot==12.4.2 arrow==0.15.5 From d8d6fe3574ae73f8867233fc7f6daeb9cb03a3ec Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2020 08:58:54 +0000 Subject: [PATCH 2067/3421] Bump python-telegram-bot from 12.4.2 to 12.5 Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.4.2 to 12.5. - [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases) - [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst) - [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.4.2...v12.5) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index e490c8927..57617697f 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -2,7 +2,7 @@ # mainly used for Raspberry pi installs ccxt==1.24.83 SQLAlchemy==1.3.15 -python-telegram-bot==12.4.2 +python-telegram-bot==12.5 arrow==0.15.5 cachetools==4.0.0 requests==2.23.0 From 54d20cb81c90f567924e4a41a6aabeb19a46b288 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 30 Mar 2020 20:08:07 +0200 Subject: [PATCH 2068/3421] Plot percent correctly --- freqtrade/plot/plotting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index fc8f25612..fac3aa2a3 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -136,8 +136,8 @@ def add_max_drawdown(fig, row, trades: pd.DataFrame, df_comb: pd.DataFrame) -> m df_comb.loc[lowdate, 'cum_profit'], ], mode='markers', - name=f"Max drawdown {max_drawdown:.2f}%", - text=f"Max drawdown {max_drawdown:.2f}%", + name=f"Max drawdown {max_drawdown * 100:.2f}%", + text=f"Max drawdown {max_drawdown * 100:.2f}%", marker=dict( symbol='square-open', size=9, From 45fb4d25abf06484c8a0020102fd9786826eaa8b Mon Sep 17 00:00:00 2001 From: orehunt Date: Tue, 31 Mar 2020 18:47:53 +0200 Subject: [PATCH 2069/3421] use equality instead of index for row lookups --- freqtrade/plot/plotting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index fc8f25612..b311c591a 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -132,8 +132,8 @@ def add_max_drawdown(fig, row, trades: pd.DataFrame, df_comb: pd.DataFrame) -> m drawdown = go.Scatter( x=[highdate, lowdate], y=[ - df_comb.loc[highdate, 'cum_profit'], - df_comb.loc[lowdate, 'cum_profit'], + df_comb.loc[df_comb.index == highdate, 'cum_profit'], + df_comb.loc[df_comb.index == lowdate, 'cum_profit'], ], mode='markers', name=f"Max drawdown {max_drawdown:.2f}%", From 8bfbbac74889095d6c6c9c97e443fbc50391fa3f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 31 Mar 2020 07:18:13 +0200 Subject: [PATCH 2070/3421] Add default trades columns --- freqtrade/constants.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 54f620631..0a35ab1fe 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -24,6 +24,7 @@ AVAILABLE_DATAHANDLERS = ['json', 'jsongz'] DRY_RUN_WALLET = 1000 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons DEFAULT_DATAFRAME_COLUMNS = ['date', 'open', 'high', 'low', 'close', 'volume'] +DEFAULT_TRADES_COLUMNS = ['timestamp', 'type', 'side', 'price', 'amount', 'cost'] USERPATH_HYPEROPTS = 'hyperopts' USERPATH_STRATEGIES = 'strategies' From 1659ddcc5dc44fc00ef41b74f92302fa4d03e093 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 31 Mar 2020 20:12:01 +0200 Subject: [PATCH 2071/3421] Add conversion function from fetch_trades to list --- freqtrade/constants.py | 4 +++- freqtrade/data/converter.py | 16 ++++++++++--- tests/conftest.py | 44 ++++++++++++++++++++++++++++++++++++ tests/data/test_converter.py | 23 +++++++++++++++---- 4 files changed, 78 insertions(+), 9 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 0a35ab1fe..34e1c63f1 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -24,7 +24,9 @@ AVAILABLE_DATAHANDLERS = ['json', 'jsongz'] DRY_RUN_WALLET = 1000 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons DEFAULT_DATAFRAME_COLUMNS = ['date', 'open', 'high', 'low', 'close', 'volume'] -DEFAULT_TRADES_COLUMNS = ['timestamp', 'type', 'side', 'price', 'amount', 'cost'] +# Don't modify sequence of DEFAULT_TRADES_COLUMNS +# it has wide consequences for stored trades files +DEFAULT_TRADES_COLUMNS = ['timestamp', 'id', 'type', 'side', 'price', 'amount', 'cost'] USERPATH_HYPEROPTS = 'hyperopts' USERPATH_STRATEGIES = 'strategies' diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 77371bf27..7abd0453f 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -3,12 +3,13 @@ Functions to convert data from one format to another """ import logging from datetime import datetime, timezone -from typing import Any, Dict +from typing import Any, Dict, List import pandas as pd from pandas import DataFrame, to_datetime -from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS +from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS + logger = logging.getLogger(__name__) @@ -154,7 +155,16 @@ def order_book_to_dataframe(bids: list, asks: list) -> DataFrame: return frame -def trades_to_ohlcv(trades: list, timeframe: str) -> DataFrame: +def trades_dict_to_list(trades: List[Dict]) -> List[List]: + """ + Convert fetch_trades result into a List (to be more memory efficient). + :param trades: List of trades, as returned by ccxt.fetch_trades. + :return: List of Lists, with constants.DEFAULT_TRADES_COLUMNS as columns + """ + return [[t[col] for col in DEFAULT_TRADES_COLUMNS]for t in trades] + + +def trades_to_ohlcv(trades: List, timeframe: str) -> DataFrame: """ Converts trades list to OHLCV list TODO: This should get a dedicated test diff --git a/tests/conftest.py b/tests/conftest.py index 64d0cd5ee..72f9bfe46 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1391,6 +1391,50 @@ def buy_order_fee(): } +@pytest.fixture +def fetch_trades_result(): + return [{'info': {'a': 153942751, + 'p': '0.02059000', + 'q': '6.95500000', + 'f': 170811204, + 'l': 170811204, + 'T': 1585670882666, + 'm': True, + 'M': True}, + 'timestamp': 1585670882666, + 'datetime': '2020-03-31T16:08:02.666Z', + 'symbol': 'ETH/BTC', + 'id': '153942751', + 'order': None, + 'type': None, + 'takerOrMaker': None, + 'side': 'sell', + 'price': 0.02059, + 'amount': 6.955, + 'cost': 0.14320345, + 'fee': None}, + {'info': {'a': 153942752, + 'p': '0.02059100', + 'q': '0.04900000', + 'f': 170811205, + 'l': 170811205, + 'T': 1585670889154, + 'm': False, + 'M': True}, + 'timestamp': 1585670889154, + 'datetime': '2020-03-31T16:08:09.154Z', + 'symbol': 'ETH/BTC', + 'id': '153942752', + 'order': None, + 'type': None, + 'takerOrMaker': None, + 'side': 'buy', + 'price': 0.020591, + 'amount': 0.049, + 'cost': 0.001008959, + 'fee': None}] + + @pytest.fixture(scope="function") def edge_conf(default_conf): conf = deepcopy(default_conf) diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index 7dff520e0..1f7837e46 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -5,12 +5,10 @@ from freqtrade.configuration.timerange import TimeRange from freqtrade.data.converter import (convert_ohlcv_format, convert_trades_format, ohlcv_fill_up_missing_data, - ohlcv_to_dataframe, + ohlcv_to_dataframe, trades_dict_to_list, trim_dataframe) -from freqtrade.data.history import (get_timerange, - load_data, - load_pair_history, - validate_backtest_data) +from freqtrade.data.history import (get_timerange, load_data, + load_pair_history, validate_backtest_data) from tests.conftest import log_has from tests.data.test_history import _backup_file, _clean_test_file @@ -197,6 +195,21 @@ def test_trim_dataframe(testdatadir) -> None: assert all(data_modify.iloc[0] == data.iloc[25]) +def test_trades_dict_to_list(mocker, fetch_trades_result): + res = trades_dict_to_list(fetch_trades_result) + assert isinstance(res, list) + assert isinstance(res[0], list) + for i, t in enumerate(res): + assert t[0] == fetch_trades_result[i]['timestamp'] + assert t[1] == fetch_trades_result[i]['id'] + assert t[2] == fetch_trades_result[i]['type'] + assert t[3] == fetch_trades_result[i]['side'] + assert t[4] == fetch_trades_result[i]['price'] + assert t[5] == fetch_trades_result[i]['amount'] + assert t[6] == fetch_trades_result[i]['cost'] + + + def test_convert_trades_format(mocker, default_conf, testdatadir): file = testdatadir / "XRP_ETH-trades.json.gz" file_new = testdatadir / "XRP_ETH-trades.json" From d76bb1ccf4eedbb0da4f2d0077bb264f26338ed8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 31 Mar 2020 20:20:10 +0200 Subject: [PATCH 2072/3421] Use List of Lists instead of list of Dicts for trades data --- freqtrade/data/history/history_utils.py | 14 +++++---- freqtrade/data/history/idatahandler.py | 17 +++++++---- freqtrade/data/history/jsondatahandler.py | 26 ++++++++++++----- freqtrade/exchange/exchange.py | 35 ++++++++++++----------- 4 files changed, 58 insertions(+), 34 deletions(-) diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index 89d29d33b..86d90f8aa 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -261,10 +261,14 @@ def _download_trades_history(exchange: Exchange, trades = data_handler.trades_load(pair) - from_id = trades[-1]['id'] if trades else None + # TradesList columns are defined in constants.DEFAULT_TRADES_COLUMNS + # DEFAULT_TRADES_COLUMNS: 0 -> timestamp + # DEFAULT_TRADES_COLUMNS: 1 -> id + from_id = trades[-1][1] if trades else None - logger.debug("Current Start: %s", trades[0]['datetime'] if trades else 'None') - logger.debug("Current End: %s", trades[-1]['datetime'] if trades else 'None') + logger.debug("Current Start: %s", trades[0][0] if trades else 'None') + logger.debug("Current End: %s", trades[-1][0] if trades else 'None') + logger.info(f"Current Amount of trades: {len(trades)}") # Default since_ms to 30 days if nothing is given new_trades = exchange.get_historic_trades(pair=pair, @@ -276,8 +280,8 @@ def _download_trades_history(exchange: Exchange, trades.extend(new_trades[1]) data_handler.trades_store(pair, data=trades) - logger.debug("New Start: %s", trades[0]['datetime']) - logger.debug("New End: %s", trades[-1]['datetime']) + logger.debug("New Start: %s", trades[0][0]) + logger.debug("New End: %s", trades[-1][0]) logger.info(f"New Amount of trades: {len(trades)}") return True diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index 1bb4d5971..4663c29ac 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -8,7 +8,7 @@ from abc import ABC, abstractclassmethod, abstractmethod from copy import deepcopy from datetime import datetime, timezone from pathlib import Path -from typing import Dict, List, Optional, Type +from typing import List, Optional, Type from pandas import DataFrame @@ -18,6 +18,9 @@ from freqtrade.exchange import timeframe_to_seconds logger = logging.getLogger(__name__) +# Type for trades list +TradeList = List[List] + class IDataHandler(ABC): @@ -89,23 +92,25 @@ class IDataHandler(ABC): """ @abstractmethod - def trades_store(self, pair: str, data: List[Dict]) -> None: + def trades_store(self, pair: str, data: TradeList) -> None: """ Store trades data (list of Dicts) to file :param pair: Pair - used for filename - :param data: List of Dicts containing trade data + :param data: List of Lists containing trade data, + column sequence as in DEFAULT_TRADES_COLUMNS """ @abstractmethod - def trades_append(self, pair: str, data: List[Dict]): + def trades_append(self, pair: str, data: TradeList): """ Append data to existing files :param pair: Pair - used for filename - :param data: List of Dicts containing trade data + :param data: List of Lists containing trade data, + column sequence as in DEFAULT_TRADES_COLUMNS """ @abstractmethod - def trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> List[Dict]: + def trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> TradeList: """ Load a pair from file, either .json.gz or .json :param pair: Load trades for this pair diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 363b03958..d4aa21a1d 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -1,6 +1,7 @@ +import logging import re from pathlib import Path -from typing import Dict, List, Optional +from typing import List, Optional import numpy as np from pandas import DataFrame, read_json, to_datetime @@ -8,8 +9,11 @@ from pandas import DataFrame, read_json, to_datetime from freqtrade import misc from freqtrade.configuration import TimeRange from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS +from freqtrade.converter import trades_dict_to_list -from .idatahandler import IDataHandler +from .idatahandler import IDataHandler, TradeList + +logger = logging.getLogger(__name__) class JsonDataHandler(IDataHandler): @@ -113,24 +117,26 @@ class JsonDataHandler(IDataHandler): # Check if regex found something and only return these results to avoid exceptions. return [match[0].replace('_', '/') for match in _tmp if match] - def trades_store(self, pair: str, data: List[Dict]) -> None: + def trades_store(self, pair: str, data: TradeList) -> None: """ Store trades data (list of Dicts) to file :param pair: Pair - used for filename - :param data: List of Dicts containing trade data + :param data: List of Lists containing trade data, + column sequence as in DEFAULT_TRADES_COLUMNS """ filename = self._pair_trades_filename(self._datadir, pair) misc.file_dump_json(filename, data, is_zip=self._use_zip) - def trades_append(self, pair: str, data: List[Dict]): + def trades_append(self, pair: str, data: TradeList): """ Append data to existing files :param pair: Pair - used for filename - :param data: List of Dicts containing trade data + :param data: List of Lists containing trade data, + column sequence as in DEFAULT_TRADES_COLUMNS """ raise NotImplementedError() - def trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> List[Dict]: + def trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> TradeList: """ Load a pair from file, either .json.gz or .json # TODO: respect timerange ... @@ -140,9 +146,15 @@ class JsonDataHandler(IDataHandler): """ filename = self._pair_trades_filename(self._datadir, pair) tradesdata = misc.file_load_json(filename) + if not tradesdata: return [] + if isinstance(tradesdata[0], dict): + # Convert trades dict to list + logger.info("Old trades format detected - converting") + tradesdata = trades_dict_to_list(tradesdata) + pass return tradesdata def trades_purge(self, pair: str) -> bool: diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index f4c94a1ca..da23b290c 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -18,13 +18,12 @@ from ccxt.base.decimal_to_precision import (ROUND_DOWN, ROUND_UP, TICK_SIZE, TRUNCATE, decimal_to_precision) from pandas import DataFrame -from freqtrade.data.converter import ohlcv_to_dataframe +from freqtrade.data.converter import ohlcv_to_dataframe, trades_dict_to_list from freqtrade.exceptions import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async from freqtrade.misc import deep_merge_dicts - CcxtModuleType = Any @@ -758,7 +757,7 @@ class Exchange: @retrier_async async def _async_fetch_trades(self, pair: str, since: Optional[int] = None, - params: Optional[dict] = None) -> List[Dict]: + params: Optional[dict] = None) -> List[List]: """ Asyncronously gets trade history using fetch_trades. Handles exchange errors, does one call to the exchange. @@ -778,7 +777,7 @@ class Exchange: '(' + arrow.get(since // 1000).isoformat() + ') ' if since is not None else '' ) trades = await self._api_async.fetch_trades(pair, since=since, limit=1000) - return trades + return trades_dict_to_list(trades) except ccxt.NotSupported as e: raise OperationalException( f'Exchange {self._api.name} does not support fetching historical trade data.' @@ -792,7 +791,7 @@ class Exchange: async def _async_get_trade_history_id(self, pair: str, until: int, since: Optional[int] = None, - from_id: Optional[str] = None) -> Tuple[str, List[Dict]]: + from_id: Optional[str] = None) -> Tuple[str, List[List]]: """ Asyncronously gets trade history using fetch_trades use this when exchange uses id-based iteration (check `self._trades_pagination`) @@ -803,7 +802,7 @@ class Exchange: returns tuple: (pair, trades-list) """ - trades: List[Dict] = [] + trades: List[List] = [] if not from_id: # Fetch first elements using timebased method to get an ID to paginate on @@ -812,7 +811,9 @@ class Exchange: # e.g. Binance returns the "last 1000" candles within a 1h time interval # - so we will miss the first trades. t = await self._async_fetch_trades(pair, since=since) - from_id = t[-1]['id'] + # DEFAULT_TRADES_COLUMNS: 0 -> timestamp + # DEFAULT_TRADES_COLUMNS: 1 -> id + from_id = t[-1][1] trades.extend(t[:-1]) while True: t = await self._async_fetch_trades(pair, @@ -820,21 +821,21 @@ class Exchange: if len(t): # Skip last id since its the key for the next call trades.extend(t[:-1]) - if from_id == t[-1]['id'] or t[-1]['timestamp'] > until: + if from_id == t[-1][1] or t[-1][0] > until: logger.debug(f"Stopping because from_id did not change. " - f"Reached {t[-1]['timestamp']} > {until}") + f"Reached {t[-1][0]} > {until}") # Reached the end of the defined-download period - add last trade as well. trades.extend(t[-1:]) break - from_id = t[-1]['id'] + from_id = t[-1][1] else: break return (pair, trades) async def _async_get_trade_history_time(self, pair: str, until: int, - since: Optional[int] = None) -> Tuple[str, List]: + since: Optional[int] = None) -> Tuple[str, List[List]]: """ Asyncronously gets trade history using fetch_trades, when the exchange uses time-based iteration (check `self._trades_pagination`) @@ -844,16 +845,18 @@ class Exchange: returns tuple: (pair, trades-list) """ - trades: List[Dict] = [] + trades: List[List] = [] + # DEFAULT_TRADES_COLUMNS: 0 -> timestamp + # DEFAULT_TRADES_COLUMNS: 1 -> id while True: t = await self._async_fetch_trades(pair, since=since) if len(t): - since = t[-1]['timestamp'] + since = t[-1][1] trades.extend(t) # Reached the end of the defined-download period - if until and t[-1]['timestamp'] > until: + if until and t[-1][0] > until: logger.debug( - f"Stopping because until was reached. {t[-1]['timestamp']} > {until}") + f"Stopping because until was reached. {t[-1][0]} > {until}") break else: break @@ -863,7 +866,7 @@ class Exchange: async def _async_get_trade_history(self, pair: str, since: Optional[int] = None, until: Optional[int] = None, - from_id: Optional[str] = None) -> Tuple[str, List[Dict]]: + from_id: Optional[str] = None) -> Tuple[str, List[List]]: """ Async wrapper handling downloading trades using either time or id based methods. """ From bac0eaab039410041f79beabf8f4651db7f562d5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 31 Mar 2020 20:46:42 +0200 Subject: [PATCH 2073/3421] fix convert to ohlcv --- freqtrade/data/converter.py | 7 ++++--- freqtrade/data/history/history_utils.py | 4 ++++ freqtrade/data/history/jsondatahandler.py | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 7abd0453f..90db82f74 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -174,9 +174,10 @@ def trades_to_ohlcv(trades: List, timeframe: str) -> DataFrame: """ from freqtrade.exchange import timeframe_to_minutes timeframe_minutes = timeframe_to_minutes(timeframe) - df = pd.DataFrame(trades) - df['datetime'] = pd.to_datetime(df['datetime']) - df = df.set_index('datetime') + df = pd.DataFrame(trades, columns=DEFAULT_TRADES_COLUMNS) + df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms', + utc=True,) + df = df.set_index('timestamp') df_new = df['price'].resample(f'{timeframe_minutes}min').ohlc() df_new['volume'] = df['amount'].resample(f'{timeframe_minutes}min').sum() diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index 86d90f8aa..a7490f17b 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -264,7 +264,11 @@ def _download_trades_history(exchange: Exchange, # TradesList columns are defined in constants.DEFAULT_TRADES_COLUMNS # DEFAULT_TRADES_COLUMNS: 0 -> timestamp # DEFAULT_TRADES_COLUMNS: 1 -> id + from_id = trades[-1][1] if trades else None + if trades and since < trades[-1][0]: + # Reset since to the last available point + since = trades[-1][0] logger.debug("Current Start: %s", trades[0][0] if trades else 'None') logger.debug("Current End: %s", trades[-1][0] if trades else 'None') diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index d4aa21a1d..50a32603b 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -9,7 +9,7 @@ from pandas import DataFrame, read_json, to_datetime from freqtrade import misc from freqtrade.configuration import TimeRange from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS -from freqtrade.converter import trades_dict_to_list +from freqtrade.data.converter import trades_dict_to_list from .idatahandler import IDataHandler, TradeList From b95e9fe3515a15898326fcac2c6fd16453e4b08e Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 1 Apr 2020 06:53:04 +0200 Subject: [PATCH 2074/3421] Fix mocks to return correct things --- tests/conftest.py | 52 ++++++++--------------------------------------- 1 file changed, 8 insertions(+), 44 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 72f9bfe46..517a11b47 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1227,6 +1227,14 @@ def trades_for_order(): @pytest.fixture(scope="function") def trades_history(): + return [[1565798399463, '126181329', None, 'buy', 0.019627, 0.04, 0.00078508], + [1565798399629, '126181330', None, 'buy', 0.019627, 0.244, 0.004788987999999999], + [1565798399752, '126181331', None, 'sell', 0.019626, 0.011, 0.00021588599999999999], + [1565798399862, '126181332', None, 'sell', 0.019626, 0.011, 0.00021588599999999999], + [1565798399872, '126181333', None, 'sell', 0.019626, 0.011, 0.00021588599999999999]] + +@pytest.fixture(scope="function") +def fetch_trades_result(): return [{'info': {'a': 126181329, 'p': '0.01962700', 'q': '0.04000000', @@ -1391,50 +1399,6 @@ def buy_order_fee(): } -@pytest.fixture -def fetch_trades_result(): - return [{'info': {'a': 153942751, - 'p': '0.02059000', - 'q': '6.95500000', - 'f': 170811204, - 'l': 170811204, - 'T': 1585670882666, - 'm': True, - 'M': True}, - 'timestamp': 1585670882666, - 'datetime': '2020-03-31T16:08:02.666Z', - 'symbol': 'ETH/BTC', - 'id': '153942751', - 'order': None, - 'type': None, - 'takerOrMaker': None, - 'side': 'sell', - 'price': 0.02059, - 'amount': 6.955, - 'cost': 0.14320345, - 'fee': None}, - {'info': {'a': 153942752, - 'p': '0.02059100', - 'q': '0.04900000', - 'f': 170811205, - 'l': 170811205, - 'T': 1585670889154, - 'm': False, - 'M': True}, - 'timestamp': 1585670889154, - 'datetime': '2020-03-31T16:08:09.154Z', - 'symbol': 'ETH/BTC', - 'id': '153942752', - 'order': None, - 'type': None, - 'takerOrMaker': None, - 'side': 'buy', - 'price': 0.020591, - 'amount': 0.049, - 'cost': 0.001008959, - 'fee': None}] - - @pytest.fixture(scope="function") def edge_conf(default_conf): conf = deepcopy(default_conf) From 59f1a061f733955c3b62c99d40b1c3b7e945f98c Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 1 Apr 2020 06:53:58 +0200 Subject: [PATCH 2075/3421] adapt exchange tests to use lists instead of dicts --- tests/exchange/test_exchange.py | 42 ++++++++++++++++----------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 8d8930f66..535d1f87f 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1511,18 +1511,18 @@ async def test___async_get_candle_history_sort(default_conf, mocker, exchange_na @pytest.mark.asyncio @pytest.mark.parametrize("exchange_name", EXCHANGES) async def test__async_fetch_trades(default_conf, mocker, caplog, exchange_name, - trades_history): + fetch_trades_result): caplog.set_level(logging.DEBUG) exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) # Monkey-patch async function - exchange._api_async.fetch_trades = get_mock_coro(trades_history) + exchange._api_async.fetch_trades = get_mock_coro(fetch_trades_result) pair = 'ETH/BTC' res = await exchange._async_fetch_trades(pair, since=None, params=None) assert type(res) is list - assert isinstance(res[0], dict) - assert isinstance(res[1], dict) + assert isinstance(res[0], list) + assert isinstance(res[1], list) assert exchange._api_async.fetch_trades.call_count == 1 assert exchange._api_async.fetch_trades.call_args[0][0] == pair @@ -1568,7 +1568,7 @@ async def test__async_get_trade_history_id(default_conf, mocker, caplog, exchang if 'since' in kwargs: # Return first 3 return trades_history[:-2] - elif kwargs.get('params', {}).get(pagination_arg) == trades_history[-3]['id']: + elif kwargs.get('params', {}).get(pagination_arg) == trades_history[-3][1]: # Return 2 return trades_history[-3:-1] else: @@ -1578,8 +1578,8 @@ async def test__async_get_trade_history_id(default_conf, mocker, caplog, exchang exchange._async_fetch_trades = MagicMock(side_effect=mock_get_trade_hist) pair = 'ETH/BTC' - ret = await exchange._async_get_trade_history_id(pair, since=trades_history[0]["timestamp"], - until=trades_history[-1]["timestamp"]-1) + ret = await exchange._async_get_trade_history_id(pair, since=trades_history[0][0], + until=trades_history[-1][0]-1) assert type(ret) is tuple assert ret[0] == pair assert type(ret[1]) is list @@ -1588,7 +1588,7 @@ async def test__async_get_trade_history_id(default_conf, mocker, caplog, exchang fetch_trades_cal = exchange._async_fetch_trades.call_args_list # first call (using since, not fromId) assert fetch_trades_cal[0][0][0] == pair - assert fetch_trades_cal[0][1]['since'] == trades_history[0]["timestamp"] + assert fetch_trades_cal[0][1]['since'] == trades_history[0][0] # 2nd call assert fetch_trades_cal[1][0][0] == pair @@ -1604,7 +1604,7 @@ async def test__async_get_trade_history_time(default_conf, mocker, caplog, excha caplog.set_level(logging.DEBUG) async def mock_get_trade_hist(pair, *args, **kwargs): - if kwargs['since'] == trades_history[0]["timestamp"]: + if kwargs['since'] == trades_history[0][0]: return trades_history[:-1] else: return trades_history[-1:] @@ -1614,8 +1614,8 @@ async def test__async_get_trade_history_time(default_conf, mocker, caplog, excha # Monkey-patch async function exchange._async_fetch_trades = MagicMock(side_effect=mock_get_trade_hist) pair = 'ETH/BTC' - ret = await exchange._async_get_trade_history_time(pair, since=trades_history[0]["timestamp"], - until=trades_history[-1]["timestamp"]-1) + ret = await exchange._async_get_trade_history_time(pair, since=trades_history[0][0], + until=trades_history[-1][0]-1) assert type(ret) is tuple assert ret[0] == pair assert type(ret[1]) is list @@ -1624,11 +1624,11 @@ async def test__async_get_trade_history_time(default_conf, mocker, caplog, excha fetch_trades_cal = exchange._async_fetch_trades.call_args_list # first call (using since, not fromId) assert fetch_trades_cal[0][0][0] == pair - assert fetch_trades_cal[0][1]['since'] == trades_history[0]["timestamp"] + assert fetch_trades_cal[0][1]['since'] == trades_history[0][0] # 2nd call assert fetch_trades_cal[1][0][0] == pair - assert fetch_trades_cal[0][1]['since'] == trades_history[0]["timestamp"] + assert fetch_trades_cal[0][1]['since'] == trades_history[0][0] assert log_has_re(r"Stopping because until was reached.*", caplog) @@ -1640,7 +1640,7 @@ async def test__async_get_trade_history_time_empty(default_conf, mocker, caplog, caplog.set_level(logging.DEBUG) async def mock_get_trade_hist(pair, *args, **kwargs): - if kwargs['since'] == trades_history[0]["timestamp"]: + if kwargs['since'] == trades_history[0][0]: return trades_history[:-1] else: return [] @@ -1650,8 +1650,8 @@ async def test__async_get_trade_history_time_empty(default_conf, mocker, caplog, # Monkey-patch async function exchange._async_fetch_trades = MagicMock(side_effect=mock_get_trade_hist) pair = 'ETH/BTC' - ret = await exchange._async_get_trade_history_time(pair, since=trades_history[0]["timestamp"], - until=trades_history[-1]["timestamp"]-1) + ret = await exchange._async_get_trade_history_time(pair, since=trades_history[0][0], + until=trades_history[-1][0]-1) assert type(ret) is tuple assert ret[0] == pair assert type(ret[1]) is list @@ -1660,7 +1660,7 @@ async def test__async_get_trade_history_time_empty(default_conf, mocker, caplog, fetch_trades_cal = exchange._async_fetch_trades.call_args_list # first call (using since, not fromId) assert fetch_trades_cal[0][0][0] == pair - assert fetch_trades_cal[0][1]['since'] == trades_history[0]["timestamp"] + assert fetch_trades_cal[0][1]['since'] == trades_history[0][0] @pytest.mark.parametrize("exchange_name", EXCHANGES) @@ -1672,8 +1672,8 @@ def test_get_historic_trades(default_conf, mocker, caplog, exchange_name, trades exchange._async_get_trade_history_id = get_mock_coro((pair, trades_history)) exchange._async_get_trade_history_time = get_mock_coro((pair, trades_history)) - ret = exchange.get_historic_trades(pair, since=trades_history[0]["timestamp"], - until=trades_history[-1]["timestamp"]) + ret = exchange.get_historic_trades(pair, since=trades_history[0][0], + until=trades_history[-1][0]) # Depending on the exchange, one or the other method should be called assert sum([exchange._async_get_trade_history_id.call_count, @@ -1694,8 +1694,8 @@ def test_get_historic_trades_notsupported(default_conf, mocker, caplog, exchange with pytest.raises(OperationalException, match="This exchange does not suport downloading Trades."): - exchange.get_historic_trades(pair, since=trades_history[0]["timestamp"], - until=trades_history[-1]["timestamp"]) + exchange.get_historic_trades(pair, since=trades_history[0][0], + until=trades_history[-1][0]) @pytest.mark.parametrize("exchange_name", EXCHANGES) From 0506caf986af7e6bc82e6584e5238e74232edca0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 1 Apr 2020 07:23:43 +0200 Subject: [PATCH 2076/3421] Implement trades_remove_dulicates --- freqtrade/data/converter.py | 17 +++++++++++++++-- tests/data/test_converter.py | 13 +++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 90db82f74..d2108b9be 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -1,15 +1,17 @@ """ Functions to convert data from one format to another """ +import itertools import logging from datetime import datetime, timezone +from operator import itemgetter from typing import Any, Dict, List import pandas as pd from pandas import DataFrame, to_datetime -from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS - +from freqtrade.constants import (DEFAULT_DATAFRAME_COLUMNS, + DEFAULT_TRADES_COLUMNS) logger = logging.getLogger(__name__) @@ -155,6 +157,17 @@ def order_book_to_dataframe(bids: list, asks: list) -> DataFrame: return frame +def trades_remove_duplicates(trades: List[List]) -> List[List]: + """ + Removes duplicates from the trades list. + Uses itertools.groupby to avoid converting to pandas. + Tests show it as being pretty efficient on lists of 4M Lists. + :param trades: List of Lists with constants.DEFAULT_TRADES_COLUMNS as columns + :return: same format as above, but with duplicates removed + """ + return [i for i, _ in itertools.groupby(sorted(trades, key=itemgetter(0)))] + + def trades_dict_to_list(trades: List[Dict]) -> List[List]: """ Convert fetch_trades result into a List (to be more memory efficient). diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index 1f7837e46..463700d0c 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -6,7 +6,7 @@ from freqtrade.data.converter import (convert_ohlcv_format, convert_trades_format, ohlcv_fill_up_missing_data, ohlcv_to_dataframe, trades_dict_to_list, - trim_dataframe) + trades_remove_duplicates, trim_dataframe) from freqtrade.data.history import (get_timerange, load_data, load_pair_history, validate_backtest_data) from tests.conftest import log_has @@ -195,7 +195,16 @@ def test_trim_dataframe(testdatadir) -> None: assert all(data_modify.iloc[0] == data.iloc[25]) -def test_trades_dict_to_list(mocker, fetch_trades_result): +def test_trades_remove_duplicates(trades_history): + trades_history1 = trades_history * 3 + assert len(trades_history1) == len(trades_history) * 3 + res = trades_remove_duplicates(trades_history1) + assert len(res) == len(trades_history) + for i, t in enumerate(res): + assert t == trades_history[i] + + +def test_trades_dict_to_list(fetch_trades_result): res = trades_dict_to_list(fetch_trades_result) assert isinstance(res, list) assert isinstance(res[0], list) From ff9caf790be4118f18ebf2f9c8779cf717ae507d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 1 Apr 2020 07:58:39 +0200 Subject: [PATCH 2077/3421] remove trade duplicates in datahandler --- freqtrade/data/history/history_utils.py | 6 +++++- freqtrade/data/history/idatahandler.py | 15 +++++++++++++-- freqtrade/data/history/jsondatahandler.py | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index a7490f17b..74c8e8b96 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -9,7 +9,9 @@ from pandas import DataFrame from freqtrade.configuration import TimeRange from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS -from freqtrade.data.converter import ohlcv_to_dataframe, trades_to_ohlcv +from freqtrade.data.converter import (ohlcv_to_dataframe, + trades_remove_duplicates, + trades_to_ohlcv) from freqtrade.data.history.idatahandler import IDataHandler, get_datahandler from freqtrade.exceptions import OperationalException from freqtrade.exchange import Exchange @@ -282,6 +284,8 @@ def _download_trades_history(exchange: Exchange, from_id=from_id, ) trades.extend(new_trades[1]) + # Remove duplicates to make sure we're not storing data we don't need + trades = trades_remove_duplicates(trades) data_handler.trades_store(pair, data=trades) logger.debug("New Start: %s", trades[0][0]) diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index 4663c29ac..d5d7c16db 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -13,7 +13,8 @@ from typing import List, Optional, Type from pandas import DataFrame from freqtrade.configuration import TimeRange -from freqtrade.data.converter import clean_ohlcv_dataframe, trim_dataframe +from freqtrade.data.converter import (clean_ohlcv_dataframe, + trades_remove_duplicates, trim_dataframe) from freqtrade.exchange import timeframe_to_seconds logger = logging.getLogger(__name__) @@ -110,7 +111,7 @@ class IDataHandler(ABC): """ @abstractmethod - def trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> TradeList: + def _trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> TradeList: """ Load a pair from file, either .json.gz or .json :param pair: Load trades for this pair @@ -126,6 +127,16 @@ class IDataHandler(ABC): :return: True when deleted, false if file did not exist. """ + def trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> TradeList: + """ + Load a pair from file, either .json.gz or .json + Removes duplicates in the process. + :param pair: Load trades for this pair + :param timerange: Timerange to load trades for - currently not implemented + :return: List of trades + """ + return trades_remove_duplicates(self._trades_load(pair, timerange=timerange)) + def ohlcv_load(self, pair, timeframe: str, timerange: Optional[TimeRange] = None, fill_missing: bool = True, diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 50a32603b..01320f129 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -136,7 +136,7 @@ class JsonDataHandler(IDataHandler): """ raise NotImplementedError() - def trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> TradeList: + def _trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> TradeList: """ Load a pair from file, either .json.gz or .json # TODO: respect timerange ... From ba03d96961a969bc43a8c930a35c0715e9a006f2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 1 Apr 2020 20:04:36 +0200 Subject: [PATCH 2078/3421] Test 5s offset on since --- freqtrade/data/history/history_utils.py | 3 ++- tests/data/test_history.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index 74c8e8b96..27aadc17c 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -270,7 +270,8 @@ def _download_trades_history(exchange: Exchange, from_id = trades[-1][1] if trades else None if trades and since < trades[-1][0]: # Reset since to the last available point - since = trades[-1][0] + # - 5 seconds (to ensure we're getting all trades) + since = trades[-1][0] - (5 * 1000) logger.debug("Current Start: %s", trades[0][0] if trades else 'None') logger.debug("Current End: %s", trades[-1][0] if trades else 'None') diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 12390538a..fedf63353 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -548,6 +548,17 @@ def test_download_trades_history(trades_history, mocker, default_conf, testdatad assert file1.is_file() # clean files freshly downloaded + _clean_test_file(file1) + ght_mock.reset_mock() + since_time = int(trades_history[-2][0] // 1000) + timerange = TimeRange('date', None, since_time, 0) + assert _download_trades_history(data_handler=data_handler, exchange=exchange, + pair='ETH/BTC', timerange=timerange) + + assert ght_mock.call_count == 1 + # Check this in seconds - since we had to convert to seconds above too. + assert int(ght_mock.call_args_list[0].kwargs['since'] // 1000) == since_time - 5 + _clean_test_file(file1) mocker.patch('freqtrade.exchange.Exchange.get_historic_trades', From 437d4cda5d5cdcea0a033326eb9661d2e4b6e629 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 1 Apr 2020 20:12:13 +0200 Subject: [PATCH 2079/3421] Add test data for trades --- tests/testdata/XRP_ETH-trades.json.gz | Bin 473687 -> 190318 bytes tests/testdata/XRP_OLD-trades.json.gz | Bin 0 -> 473687 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/testdata/XRP_OLD-trades.json.gz diff --git a/tests/testdata/XRP_ETH-trades.json.gz b/tests/testdata/XRP_ETH-trades.json.gz index 69b92cac8a2b1abb62e2be99a200063a247dcf10..dad822005b977902d757523b80d1e7c51adfe31a 100644 GIT binary patch literal 190318 zcmV)5K*_%!iwFq$*MwdG16Wc}Uqw_%Ep&2WWMy+MYIARH0F?d9vL(B&EQtL}wWp;8 z-{iN*)RCEbW$MVPp}!ZL!2vkO1m@bc&OY~^Ts!F_f&qefI{qL3kJQF9T7FXM`T6-j zQfX<;XZ#;O|DXTs|NK9H{*V9f|NH;^KmU)P=il?Bno7+-x%_+Z=aSnqd;fp_1PIeb z$i4rx`XY>;XX%v@#_ClOR){cPfRxIU@+5#f*E2o<>G=Tszy7cPpS{CaKW(OsFthxN zwAPKV^d(XX5!Uk}6!~*c1W?LoO98S6(AxM(>AZvdLEdS7{^7SNwY98J#odlp`j2ef z2FtV7ISPN1mY$|NnyL#?CqGTkW4TXrLp2{N&7UJ5Pt7&AVpxr^My|;=sk@uB?oDca zTmUU~1sEPcm%qROW6;K=XSK%wd|~Zv{{LzWOgeX?B!#h1yw4d+HnYxK_hP~}g{HqsYKx%KQu z%kn8`7wW(a1p3eV~;;2);zh&CPlukC_=k9?G6!de0!o;OD4` zr$2I?<-!0WUG@ko0_X=o_DmGr7r<2IPy=~v*EZ&Hy+TR$1l5&CJb~=xs~X0bVx9C0 zp-sKAsw<8_H~>%SLj>vu5MfXNR~q*twD(ksX(9*W>m>&5LJbkhd5I?K@rEcv=~YJW%?hn$zDvQz{8n6I0=RNlugguu+qVyGU3 zEa#zj+Q*ThC=?+uGiSZDlZX@_Y{5uosy6rX#zV+$k+yom_v`JU$B@fg>^_BXWwOd% zmUAj<4Z**^tDLKH_EIbw+zx~w7K%xA zb7gX5$mF@Trz}e>)q*e|+eud@N4^Xxcn$m(vae531Xn1>by?+0Nkd;&`w*@%DGKo? z_3@reIYeUP*9&1)wLF@uA%QUJ`4Dx9Znz$y%ib!0t04i9kMSd_Ni1vjofZsK{Se(1 z$g%2AIqIdZl|&`lGnCZjy;K-_a)n{L8>$`P3gr;N7f3lfKkJ z8>#LSy;o0_F;e`)`S80`my7#vrvHeFN^?xOj z*qt*1xs=mIJ0glTD;B+&T;j=Y@!@Jr`L&-s4wQH@IrGEFBbu%lzKG(*#M64!jeHGp z773xtzp%aaMHDBU!vbtbh!PRWR&6uduPoIJTYGC!%j@JGvZVi)T##DlgZOYlF{hPcSePz!%mc zekhlurX;ZG_q>oTcYffjwPPuj&OCxn_Fvk;emrEi3DG>X_1lP{z7tj7-5 z@&ywJ9A)Z!xV{h~-8sk&ug{>6DiFjqR|Nl3-w5-y@Uk4|R%^Q;dSGgjhg{-TRR){m)&bNOkXSqA%GO|FW{2%>U^ zBDnD(Ajm;DPk@+0%NN2R1YaBr#IZnIi*eT~T;ZpO7`{Y`WuCHJwE!9NDocd0h8V6x zE_Z}rl&u~F1EGn$C=*x3$F2n8%H;+zlWO(VLjYG@iVez6{h)lp_j*@Zij6_ps>Wf{ zns=g4*ZVSwu)#dRmAuthy%1Vfne_8JcmmPVb^Aaa4$GVugqRj8mVSl@&SpJUq1-U? zQLbGSHLqGW`%*a(6?k=A+aIDZLY0?S6&0j-Ce*Bk+lH9)q#wjR7Coy7{`EcUBt_lD zHsx&)^HzgxD@g2Ygd+^F==o%cWE6V>R~T_On^`E=-7Ew!pQqTTbcIolKWR8oM~mNJ z!6s1vUq{NB=SL7@o#eSZJ==8`Bz1r=#<{KJIm?qSgryeD3X(cN5bfSxf$X9P#vnae zO3&Re{97BR;`)}9l#wf2oHgBv;$Pd_NqEmy$xq`;yHrTHt`Fp~{mgOZB1SOiTqCa`kgTl1XT=Q9z}Eh^m8udw#xFC2|@g$qNl3(uFkBNM2U|{ z5>?>>sz?@JKZ?~{&yCkQVpFs}iEChA(w9hCLSd@X_^N41ZVEkAB@oDGU9Z3?-!Ft9 ztAlzDah|q3${A|%5``f|_2@2CUmgKr29&r&6hs$;O3Yu~hw97Yy25SwdIWi?X$rFX z0=afL#*{;+aEz!bv4!=jseyuA_fAf7y}uCx1v!vB-?k{?ZDq(gO^h)FSTO>T9OZh7 zPEo%)YOPt1W{}%KAl@QwVuY~?g#5%Xgg__-fnA)+pL2+9X>LW3+t~;wWn1cloT=v| zA$MjzPV?n+%**GKJGO@izIYBOierULxq#`r&WseGuJ^C+UdS+(FEBDyWeLO>W?Kg- zo`F2Nc{$>-GeQ|l^Hi((;t2$HeZ}JPwsgwt*pc^>J%8#9v8>0m*9oLlu3|c_50@rX z(Un#swpt*i9pS=$q6wvocSvs`r(;Zei$F|k`Wfx)X)jOXdsHN|EWL$VAf|$_&NWuV zkz5p{2SU|o+v1=dSpAVi|6iWTI0km9_OC4V3UE_nJmyYT)=my5ott*a;m*&dPMpL&WLdXpo) z`Z#Cfh8h|uTRrf^1*)A59YrLQvWN|*#cZn{c;YEtQTd+f8IW2xs~|}I)Op3_dm#n< zg%G5Ec4ok$@ja7RhzGNtYzV$&RwR#3iUd`oV&0VBG1#{Cp&s@i2~@8DXcGsc69Vck zR6c^#k2rel|A-2;)K6ioYUOfk1lh@kH+#Qu5{q4~H^s_~HJV*?K^Caq!Qq@KINXYC zm}#*f3$ziekV32zdWIq{bF#e&vOo{#y?YrHRh6BsRYSWg$^t#tg)ir%h6q9Sr%Xy2 z=T2!41mUbSXiZ;WH-K%!ME1q`z+YIt=oTb`j!Jz0$N=IDsFxSzfdqgmpnK=-$f;>9 z!-~>C$eXG`EEWq3d@bTP+B^6{3Iy5@_}7Ne;5OPzxR-nz?CTC(`WFC_sUHBpJot~w zSO5$HaGj%enX>Jw{DU4Hb}LLbdep?SGr=BWP+#lCl+*QYd>!k>1M1swd&H3JiJu_B z-}@j0$sf@IKXRSCw*hL1(*@8>l!Dw(dkQBU+hZzK|ZF%ZdRZt zf$(uD3QV))6u!49-lmy6ei8_RxsKr|_L8`i3;^p^1#<-ovyUsunkl^7CM4ZnC%EEe zOG!g?&UOpJswb$puetacG#n>(%HX#UFE1H_8`l&iB69Vr2v{vorJB?xCVW1@EFid^ z(VerP)47sZ97PvLhG$|Y@k!*zh~0{0wIcXsZ>R@hFO#&a_|5WHmIC-yZwo5!*f_mS zAKhtw5LnWh~Gw+9uP{gy$F(#S7sD$ zHScC^F>_)@+zlNVn(Lp(AQ9N^mYHomGj}Vm`<*VGNQlh-e zF3xO^5G2a)o)(Jrf3FYHvK7M;rC)@A|4E7vWXYeq00WWk&p-Xfs#URq8l&f` z29f_T0L)qi@bl&E$||l>7XgSjRSY2V(hFVUQ%+dE5I$8-KnSWb=anUAR|cNZDtfST zAeV*fYgb`YNDy#h6(In^i2OLC@gJq2{b5)^-}$_}t5QfA56JXV z^D#&oZ3OdDAC_-KA4XMWTHSlTZZGwHhAEsCEjvMtV^4$*;3zRuSAg9ta582}Jw1 z3hLNazaX;7w%-=C->1D_6;&>YqZfjZKmB$<@FjEXHnS57N3~485b9&syx$iDgmDs0 zqA$cUxn5!o0tmwKHL+l%L08zwdF7>7Sdb_x$fKI}Z>!A8bAV0JbD3Uc;Q)aXl=&_3OLqM>*V_j#WRB@Aa7sC8dzMf(7TNLCS z^bYkqgYYHDtxK6NjDoURRh7e4l>jLD0Yv@R%6ul*YL2?INeU4}kYpdkRoG8~0`&Qi zyZ#Lk_(3SV<=WlChUPa$U}z4xx%w9D@ec@)GQ!B{lv0d9EXTUK4A>VDbvjqGXrR}st9}TQKw?H+fs2_L0e89{t{@8p1nR~`(wh*F zs#CG_dw{ywME$6!Ii`3snnp4saSRyH_AI`9PNbCIL)OJZn4=dD32YmR!jY zL9n|qK&kX7ezV%-;*p7rIs=F~tzXv91#N)meFOySy6G?N-?>gY967V4H8rKDuB7HyDtDgkR*q&mUkb!_?NS>+7tnm z8|{M-^#Wa8?_&S3d;-B7$*317Uj`mbeM6YIWc8c}>7c*za$?*)&0@t-FVJ;LNfPA5 zJWFLM>I3?LCAY6&)JT$=61kE$(B*-$WDA=TFLD!uf=E|Ke)y&2z$SGg*tN3)H3^C^SLlGQ*=#%{A7=S5a>ySh+97eWwHwo9i|EUaD0Ry1<9X3 zQlkKvY80oS@n-|HmpS1+Cx#0@MNeXnDMTQN2v4^H zEnEII)QP6qE{qQe6)@s}dtcj-SpVdbkU!@y2z!$_;$F+q^=JXhkP7jS-IeY}eo z-py5Qk!>{-GId!I0?+41Oo_cAX^A0|c)7g8(&a(4=tnM}{rloNu6+Hv+@^X;f`m}v zBxT9hug{X~^@BLk&rI8>l087L3FQg|U=58)q!a{)e#D9zTU|9V)f*GwP4p;hTqOlb zATWB7)08Xa%hAL+i+ut2?k?i~S`Uus`G;Sklsfehf+Wy>1ncdVdzkmJ)S_{b6eNK* zvDv5h1Nrq)2m!6zsw5(=H*jIq!*L>>zxyw2c7ebj+!f zQ9twkxQY45zW@ zaTV@tS*(9O??Ltl>)UR@MA5$7gyb$v)WBB#!a>dlnw6p~=!Ibftquo5pg7Yd>G_g$ zWWUwePd@3Je1@NO%sjdKa;5T85HaLx+Yl6Hrc3R~6VOZaJ}mf|f}Bs;l_~4k17hcm z&QAf(vSk>qSB~IhI*HcQci>oywb$!gmIdu z#T%a-6a+#e1lL0cLOl%?eW1|L0{<5hDaY!H?M6CYnuyplsepE(Tc+5f_+l&a#vFOQ zlrIGHkb<_Mji3?EIR|-)b3%QqZVlRo#MGm3H=-V-LB!^+1#Lqcz#akdYChObhT1>$DW zOH}YE>*oD@uYwlRy~L9wDG}?Ux!XoHJfo&bMaYQ_w4v%e4))((ziN zwz_5>QqU_TH$10LE@Ev#7|U+x9;7D`dwI=;_m8w*jB=BvC_l zXx;f@+Kf`fC9+2eGC@}qMXr_32(9;`u5QpWgz`{28iT5USA7r#PyoOFD2Y@ZHX2aC zwug#$fM8+OTJ%$>)Q^E?U1-yZSTNfB|X%K?hsCSg$G*3$1~w5Y9L?> zkpAfuB$$-S0}Vkp84B8dwiMb96frZM!iCKe|LA509Y9;0xO>KQZGU@a?Ol8x88KwV ztlS7FJS!A5>9``A`5%7PXCoN7Q==}m=YpD3>sM1i3OA5lw6OUiCDES@dtCK(zzR1m zL!{P+_CstbvGEijU`nv^@?DR=GQEUcjceIUxVmzc%3L&bgJXTqW<~hvpLG=!cJavv z0gOQoVUYcS*~+vVd3_<+5f8FIeY21k2&Dw+N^^`056AISXc4 zwc3RdWPpG`G%8P@^cIzS4N{N+RT z<`mUve7U{S%d}aixlMjTXdxf>Xxe<))z!t~hfS;NgBx7Lh7V`2j38=Mdk%7t4H}zV z{&WaVa}$ zs;@HEvMhcMT7(e(IOY+07{5$?&4 zYJ?p14haHV9~R&5Ai*ALz~vxM1OW3gMZMP>VG@Ebx8Ti4)&VsZwW{>AD_wVo*l%yBJWMvus04iQ|(XypqbC06KyAZE6zjO-es3pC=-aZ*=D zC&s!EW;Fy?CV@~|n{QfLe4~-eWQbbqdj=_^wae_r3E^b4jF)j?paAZJ;q%AIW2_zE zO#j5&pQ7citq_mLp28=P142L5*?WRYZ;a4Vx2*^mowNWL`5z>Gtz#I z&oHiusBs~LnJlW5{ZT3p4n8ZX=T^qnOP3u>?3v_z14<(mxrF9=_y zP!@^Le)?#?&(q$cUuARUUSsJ36_(0|pEi28WWDuHh>ncW__WA7YDO~qd85BSi&%r| zg=arqw0C5+w_ZwQq~)>d1u^W)`e~wfCv>6%nrW}SY)hS;?5By|LsH+0D*#}k2t!bv zZ}#&g9{YE6H5W$py6DV%?kmrI9+zzgutlG z*52;RAcTonwju;noSAFzd!;r!AfP#15dtdCTrZN`%4U{$S<^xYL2hV2!^zQO0@loY zIz;gn6O4dSZneuDls6}U*{kWOAUgyA-iMXG5SG1#@2vlcFzaJA^Eqf00zx{MXhxEe zLm?<&e@v=_ULo*@>CnDa>tvanqByHs;XmN;zMtN zhCI7-g8UE=+BxSKO#857z2w|zdM5`AazIFDrf^0(`KUKUvLIQIA=G*I88wig<<}6ie;Ps%?*!f3 z$s=PxG)sgCgtY+VAXPM_Go!m4w6K0?=9*z63un#dCRhDh=3>VZ-iQkrp$7{ z6Nllaq$vAJUY01M&qL$-+3ga-g(Hgp46hrauBe1i5C$qE6~VvHpF;JF4M{F1aGNu? znPfL#^g_ua?E1=l~gM*X*V}trIh@7(<*Xt$)kYSD@Hox(7=C zMldBF<&73Ib=5%yFfg)UK`TNatAg-0aLK7dJARoLL?OR4N*t|mS$mJsM}XL=$^}ThS@j-oiANU!iaD|K_Cq z40I@yuT|$DoMeq$|@oWM5y z->@cFVjjhEJ*Q`L8Sd~*`3Le>@IetoSw(}p#T`B*hmexE)Zw#NSJm>x9X*uAWBxhc z2)QEp;`IV(CNJ*fp^W+7bW7kQ5`g?^8h~pHAlN~Po0*#hW3RoKV)W@}_8X2imRSY; zp>Ubp529_00=P1p!0&$i4qP@oS6L81zo{qC?>c%P!E|iB?u!Li$Tq~4)ptWo%c6$g z*^mN1dD@2fuDu*BO%6_!Msxzmuq_n8RkP5){C(vgdW3|WtIDUJO?nYbQ+KYxDac=F z`ndQFNbitUE8TI>*_6)Fe0&jZ?X5&YgI@kdSfx$Z2_sGO{`NU9xIWV}K zXHxb9R+i-pO7_hGR26RpEy{4W^m|Vt_hBjeZT-X&kVbnunx8$j?s}Bko4rb44hTX! zpLU8(I4*!b2_UcsME&Ss#I=XP5&}ls=+zMAm2$a?I6K|r8$s)6O3;k-CjvU`)cP+$ zGtx$&eCgsd0$OsVdMrT;(x1-&8gdP4mY@Y`BT(X)3OPFl`&v0q2^x=pfEe_@mo<9r zxyOtlj)J|1FPk`LmTdr!6lF{Wq72&1z(h^pLVb60?lw7=Ym|za5fro^0iql~y<+y+ zXxCGqL{lLG!4!x-_hzhreRud@d(n+>rvx2HfH3ljC1;kuX+wR%2O;P{n!D2bJzoXg zeh=NwfEe8%0tX5ZPkPgGXuSdh4r5HKFew4=-2NhGj2lcyF4o=<)4oVRJO_w6=7~WK zd6S3V1U%S!jYMOL@FwRLz#wtXPy%6UH*$%_6hSQNR^wGf3w%R~4~aM)#V}&&%qL1L z3I(%EuNTR~bY4I?w;@hjGz_efGjFH-XW18tr87O{ZB47=>5XIdn8H1^zq|yUMjK;1 zFG)Ny`r;b%DS>CJ_iE5<1PpPN_G5rz4YvqG@M8qcMz4&Y4Tambnp3FujTLB7&?24q z-fUNHX#*%hMTw>r)r-}7a!IA^Ba*g?5Gc`&@SYWM5VhiC{XwqL3o$vwnowr$*-oiI2KzZr!)3_I)D@R5s=`D-ZFtu7bG@p&9KGq?!PM zciOMh+isHl!Z4#HNHzgO$F*)oihE0zT~0x=X+OoOF4)0gF2dXpN()_rY!e{Be)bP# zO;1DTX8FR<?{U)m3Oo0WDM&W&MCXOM5&7$;96 zZ#zJNe?v@zh-MOs&v+=RG5n@+rNTEvphlrP4j;@jJBH1d5F#jB#wZv&Dk#p?=A02? z1r#@87HIhiNV*3pks*I$>b(#&DvjMwI{JAU`B@I66|_EUk!*=tl`?7x4-+MFZV%gG zUl0)$7ziZZ0;wb`3d_fs-I!fU)TOj|?j~9~>9~!BZV*L?3YIS}W%*841>SBfi!BDJ zsCM;ir$+r>vO!=P(32aqDYbPmV}b(15D>STwj%)z)0Ju|m}N`|4Ya$85RfpfYtk|% zt2j}o3c>{oNzPbQ$sxuUHG~8o!Vm&7rgiajPR_j}0!uf;a^w4Gjjrpp1?6}RuJ+mh z_7V|eUEyAx%Ar*R)~r#tM1*x1NUE)H6_s-I5=e6@T}ugimO4uFdw$Off}th&^#TUMR(^$yD!P#^UL7746u>;)F)jcb0#t)$q;hpar%~_qS{zz~R-|%K8`NtL z$9imeMAS_d5|4R!*DqTiO*i=IXFwVfQB-yz>z5T$)`+lfQl$VJCAFZL!G1m(Y#>%| z{Uo0RV5GW~iK;`6%dvhlfVNDf1}#W<78;3Lo=Yx^+~`>m z0^&Llq_y=nn21-Hxcm2HyWq8OYT41*zgkGLv z?-5Yhj70Gyuqj9yXn|-A5=R^2?8*YOZ{}U8 zEg2h04H8FtSBQ72@lmNA%0v+YDaEHT{UzF{Fal;Aeh`AZ(caA`ziGHCdU9ln71WNp zkfIoWNa=G%PE_1RgKa@LmFi^IAaV3!Jg;fI|LEnafz`WV#R7X0ND17tjRI3Zu*%sQ zB#?lxo|CM=eD>b%7cw@j8f1|63$-2FLI7oR8?FmuP5U^pn5Hq_a=w-l#@No^#=dyk zj|p3lO4^(9VkMX?C|9}m1$=`lZ$UB%^sdIm)KP1HLzHa$5{PU~G*1qMAe9j+iENNb zl8asR>fxxLMXssF5+d@dL6jO~k~W0qO%k4)5qi@~fEwhFfS^qWQ(W0z9KRB_ygKeR z;;;K3p{BKF)`-bYpsfE6<=f`%(jD4cPD)r+BTl=Fs>%JaccmeQOLWG7iKZBV01HNW z#{$)Vn=LSN3_w)ec}zr2t1rpCCMr~qa? zFEt{$%U6G4dYBERf@?yPJT+pu%h$C&VS0W(Q@^m1Jx-8v+F0dy;d5ck8hfLCfI>qt zA`V9JW{)8)2G`S`>PaA`4eJ*V`kK-ri~PB+k^uqI<-P##mOmrGelC+9Osq;~QiG-@ zuo#j-p1CcmqB_Ga)u5>f&!B8^;u(qA<{lzAnR*D=&|IYt`~we#?~P7lxpLTQ=a>6DCQ9)p1_Z6h0s%s9)1L|#Iz{926-p>$J|~t zkIxVw5Y;DN0I7!nzJQ{Jo&ZLVpTHMUjO8?H?@nE@Xb5?fjIajTCak9mu$6KFq-FrV zd_LtsG>UAhtSw8HJ(sdWT^F^BUxr9uaHW#Oq=hnaJ*|-`j-s=b92t ziW^*wy~Id`jzy4UdccyYqmTED^bo<9Netv9gtA!Yd?ENkiI09ElpZ1kQVEuG6AHQO zV}w8~`*kqt9{_<|Hax;1N5(W??!^3t2qY5`a(atC;++gcvvyNaD95WIKp>fg*XI!~ z_f@2*H7npi_f!wJF=%8$pC)~Wa07x&(vup$Kq@T+2xReLzaxuH-l*;G8^f2zA4t>d zi7jp-mDPg`q#%jJuTM*h{IIHpAZ7HE--!bSBOoguWEA76W?pWo2$V`WV~fP_zna^> z0eo`rcjnN^d8d6x5&}Ys8uJNqM4~)@W_d$bq6x$R;-Kc(ioEl3P)1P#~Z&O(UR3N^x7kQc(t(hGoSM(JVZt}0Wk zKs7c_;HNU#?m=N@F@(UVOjn#moc_!Rwd$4I-1a09jKPM}>?9T|iRF}ZePmKHWtj*G zzrzBhzdb?V1udo=>=-3V2oqC-6d_6)fk>jhve|Qyzf0Ft18cDQmn}#eVYF^Ol`;h^ zSv1+C%aOz6z7Ir@H^Klp<_I6;&9#I+prr^t!}l|&;0JdRWgZ$RDKu};qSO&|`m& zQxYN>KZi}>84JDACMFFv%-P;6NGv^9yci5%H$pXpAhYyb!QR}mclgl**_8^cMM)-n zsZ`z;mX4of+p3k;ELGN`JQJp4y}kVPU&~+_`R&~Tsw%}oixN(NI{VwuSScQ+3$--; z*`n0bhH3{28CW9X!f@HA>WL0=PaEP`E25Vt`lBw0R16}P;(2bHB+7J;Q~8dIw1O#2 zdZ>b4B|x>KqDBFMNPe8X*$<{rL2eXhOBp@DYMZ?;*5$6YFBXe)N%Jk_7sDYTHGN?i zZB7dkQdrc2p-M798TeU?I|0GOh!^{EBvCjgLX!@WKY+(Swc(1P3(_z&q@ zh_0tc07teRk0|w&?x8D-s{Y$RKtQE2$~?_>sc3HJL!6g1q0fCMhABsaMkg~D(>0Bf zx&?`+2L#4u&}8tJe*PIZmZoc3kbv4)WNz}aWCTZb{U7G4O+Ino)R<}*MF6JD`?FhY6d{t#c8hi+0CZTY9TKFQ0AQU1V(21?^R0G4 zw_Q!)1lgtyb&49q_Lu9odr+7@Z6C*%Rr)eyq=BCHF(WNVHc<(4&h$yJI%!_B1&OA} z4aRCKY;8e~Nvy*|jWD_63araTtJ+(TUi!fR$$#j15U+OJtBs_l1sSEEb~*va?3Ck^ z#WeDz`8lKqY01-M^$bMw+82V|b$;gPL4A5slIS@urhsnDa+IxGsd64Iz+4F)G?=6&wi3T!KJ_s?ARVJt#(`ZR8Xv0D3WiKot3Q%lFSu zyX^h6k7&(8ECT5&as$FLN5jwiJab;r>0B<2R7cesqBcCA{XwOZl}q~0@?_6t|~NCh~SH*s8!COpw`+DU~Xyjb75(YLu4fK9iev4e3iW$K|mAPX15{mbEyTK4s8R9LnuK9xSWpsiH(xQ$? z;Drc*oK~jp01I#g;HQEhR+Lq$#AW}z-dC5Hpk*eQNDm*iFN8og(;~vzb`?Kp{99#D1D6)eCZq*zjlho#a9+}@e4wgj-MIY5bJp0q9|tnI%NW( zSAm}%+7LEZI-}&7zY8dg^vn8bqDS_TOf$s4F93>TyP2ZBz8}e$a*Uqq2{64uZ$vj! zw2v5li_Y$z0Id4hD|lo}FM#Pfxy1R5jyx@?;irinvBrK*{XWw4?a6#TR;YW9d60)vs&i5c1vW<7^w%>PS?Wnm_DeCA&Bkcf62>piLPYcNdT=w~OqS1pf48ToT zB4*G})L|9yk&_sLH$fA1-A@WV+Yx`z#N9dt#n~mb-R8 zHT3KWe4iNOgL{Xbq4r|^Xx;BAdQbyppLB?O;E}6BVKl8f?0%AHW6=RaM%fTB@M#!= zN5t@Mh?X?p*RY%^V}9@MoTI(IojT^3Dk@!nN5Q|5d`V50BZ=8hA%LG+uPBRn5kTI# zm@=v(XldHQ&kF6gv3b{ATY|}tMhn#aOwcpIUEj(}y#PlcbJ1?!gYZni{Hh~)3#u{a z_E@a%+Vj@^^v`|HqjYa(x;C?*6kON4GAZ}Xz21tRS@rahtCpkn zAju;R&rj=z*<-Cb;pF~4DPwds8oNLK2pY4Uki{Eq`vbup+=1%6dO}ydqTYhzXQ=4W zp0b{OF_pKW!v=1S93l8qkM>(AFB;gN#_!y;eEDYl{N2y{>=2R#m9uq&KRk;`zS4Mx zVFl5o{}F2<5TRJX-QOyI@+@~LZSzEeN_Co_3VQbN0*kmm%=WwyraeRuTe>Cz363cbDANxAf7GslGijtIpF%z(QS=~>y>mKh7o z7xt9{JK$MAeQt)E^>2Waxm?d9hK+q1cP`R{5gzgYZ{&WW=FFId`5P749yJO4+>q#O zF>_C!ciNr4)GdNZmrIM%yPqC<5Q{#U`Y~~T^7=ta-yMqdz>=ms1bA*1%ZY55DHT6E zwEbx|jS4H3FNDBnnmm;ae>8x#XD2Iw>oZ}esb>LHJ@g3j#j+U@?o6bOkWa^)cs!z{ z`SwDSrpcC{3wkhOoHPi}H}2p=e(Y0vs`Xh{I< zD|p5Ss^F~^wFiAg*F4rjMI9p-|%^uB|&IYZMs zHq^+gkjc<}%M?)hNw4WM;5#ZB8R|g~ksOSx==5H$MZ-Pl8^UtSpHq)A>V}6V1$xjo zbWN3N7<1`Z76aK6lTDwo4tDKP_TrEtkU{Gal~$pM+K19rKqohc6)%yDRx~Hu_l?r% zi7P!CGenMx$+Pw}t~H86k9ESZm?)Zg{r)t%KInEsrHEMuJWEdi#6VG%JzNnja6K)Q zJS*8Z04U12*WJ{SD7qoG>{MG8Gk<=0EEr#4wUK?e&J&QtgM9gIF=7%k=?G$>v{@m7 z3Zy@_qk-*3k4exy1b|ddCT#68KN3)J&6|a-hAW^rio{$pxt16_*2T=$pn(XS71TAJ zE5%vHDAlI=^q_+X2&25U5#Rz&Y*YavRg;UT1gR6<9fo39vB|iwvW02_vbv2`k1x5< zB3&23j6XE#6m^m`}AAikKMy@tns2?|mVJf?>Xj5D|&sg^p-eG3Xy^ zdY&L~HA^GtIs$}o!PRT*?tErl%Be7dwj&@=5hbP>5Q0dCx~RiVD1j`JuciJ_+Ytb4 z3gZacj)0Ks5l{TR(r$>UB}*gdHUdOC^t>5m=hdUOoZF=BiWOAEZ>-Ni#p5QW|&D1QgU znG2BRjMhuW7h19uA*g^~T-}OsAO^4r)IO(vM1*xIF?UJBJUE8PRYTq*=sXgK(6le^ zuzCSlIoogtAZ>tjO1ToOg6nI_?O^RW!_6segmy$~qLn3+&p2VX&_1|vdm!X<5sF=e z5ZdDic&gJT291crE@diWlJA>&Loj{A5Zt^{%Ri?c0ae$7`bEE&yFPr|#PR91`>MFP zlbV$_LbKg){UadcBbS)ZAa+r{5R8C&_(>%ojC`1%^PEFGOhzb8+tEgLFZKNvrz1er zg?zz!Z6g`e!%r)TU-;8biJx45s5NaDLM8-PGJ#N!@rn+#CtaVS8e#PC6H6kLV*Q@l z67iBT{GAcR+9`_Q3MLTR8N4*W;xiZkjSc!O{fyEE_!KTTFk7=Qh()7~c*7rZ1OOw& z6h+tgK)|a|CFN(2+EQGUa_pf7gUHz2 z7X!&{YCx{i6riQ9M@{9d~N^3>w?5i|{Ler%$0=RW%{ zEOjDA&_1-WjGDf7V#+2xSj6wOgXiXoQorco+r!J(9xd=$9+P(eFR!(z_mvMsjg5Q*U9;qY0jC9l|&Kl#$qBynawE?e}_DT*nodAMt8eMv;q2 zC!&*3Oq}>$2FI<&JV$eH_Kl#Nuy@W(06Ilc9yW9|b#0s0m7ocQUYu_*&T z{Y2m^qR1E!Y_Rp<8Em33XE@#*?P zas?7e!&lYU}jlm#Ml`nv$B|D?L zVhI3a)aaSbO|cc`um=dH9pHo7WB|-xC4@RA?Ljc>00?P+)BJCVw*xivtH=PtHj-fl z_j^Gx(=p*exWe5Jdy;ZDh=5N%EuwDBS7R}PrA>qKBS;nj!IDLJa=X`*b8l0DMnExF zd*Z-YfqO|1wLKbU9YMaR{hZnMqU$oR6}_vfDxjBZKWEfk0*?;8{y-z9zP_I)0#0v>-`T z#x+~+;Z(v#up2ZWncE0N1-@8C%u=TLLP3(Kti)~r#`*Fg7dyZ@QAUs^+D~Cxx9|Xv zDUZ<1_71W{Ksa6{iXYK@MhIXQsD&B~|oU%^M<{MG+*10FlnPoIDY*rerW6iUodx ze9(qC)kq*#MhC(LQHMQ66x4*uZf^<`jn1u7GFLFxdhC<>;)%PQ1@t~6tB+)I<>!Pd zY9F+f1bkHd45Dq!yb3ty3c49jial@sht(Y0M6ik(%K`n|#wzoS^=-JvE&&m7F@rNm z5#@GMjnMK5ngCrMrPwPp*Yj$w1e#L*vS3)YEe$e6BIFmZI<XE> zGJ~WLFxHt8172%p3SAg0q`}b{aM9sYoWLZ^Jh3C{h0yf|n0}kluDBq+=4+h9H-dY$ zqr9MM0xcq`&@Zs!8byXS1M2pV^AYse$GvdX8V-G z<^Q+o6uto>I)%%DLWVg+i1-vDHiWPBL3>e1X7If{DBO&@_`d;yy3MD96QsToO)$f8 z%h@+Z)VjU{ny+fxor5hz2x>QR9Qt#{#5J+wdb=>dv8EV7fAD0MR1_Uuo7s%XY5FX4 z8-X^H8&MbfyERulgLa}lMfKE9X5@fI?;%9cQPf4r*Lr4r!_9kE{1`#cI;{SY-hh40 z;`=@8ccnV8vgt}U4YZ;9spgy=(cE;uk?|l+Hx0BAM9kjErg-k6vsgya)!7vxDs`_{ zW$&eIZ-A(OJ#Ie#MgYY?I==`6^x?r?JXPg;eN^b4xo@wxOSW!=pn1JbE-lW(nh2lx zZGtZL%H`f=Bnn-9BLr>ih&;Wc%5h*ZemF#kT7~86*om$D4^`?leg;1!gn}k{hEvHP zCZY)Wx*%-Ez$~t8f@QCqPWaZu^LlQ%DCrFP*AT828BC|aLK|2B~B^C9h+ou(MRd~OUoVttMfz!%RBVua&I=GViy z5SkVd%%Eim2?b&?Qsoeo_dxe|>D8?AH^;xa7?ISU_0xEqtl$SE(W9uFeR- zr;tN^D>u=X-a`QYN(X(U-9oK|uMji_VYZ9qTG1QTLIhu3_I6Rxpz1$F2t=}V;y1!@ zv+FH}G4ajnMb}}^(gY~PKzR@!AlfttpHD&lf=R=GZFjxKn97Pc{ge+1plm9-oYBs= zCkpBGR0OR-07!Md@v3LG{H5hCh(IDSZb{oI=9u^O$p}7U9D1jI(&=*E<`c(Yzaavd ztUu$F@-4BF*7|-1)lqK32Q7ZKkqE^1?OKccn0l3^3rsy zsJT?J%pDLG1+f*(>+M0F#CPfIqHnTmR@MailMw=LYbF@vX_(6cgj0Y>KR{F@~=s zF$(oixS{_pJ(r5R5qu>nw(L(muYsvZb$vQOo_I%m(QKWaxXS%B-vGX7w(H8Mf2{W< zv*CQ(Zh&GlMDS&^)x@o!X+7~X_^Pty>wM-MKY}lrEngp`rWFcBz$n-9CEFOizzE3D zDuQcI_T8^`OqeP*?0x0PMWqR&84$_g8O8|!Kgc*;>z7%y0gc?B>oEmb*9WqAO$xbm zoP1Rc#Ls|1uB}9w3DMFw0xGx_A&^CUgkw;HU_}h?=A5e=DiF#|ymDr}W5~sQYupfl zRD!6no_j|`Xfn~_LjCu&9d)~VdxcOP>V-T}_u{-y+6>qqr0M$N`~FCuJmy@N--kq$ z<}zo%C5N}6kIU)Eg&rA`u7FAo0PQ&Q12v*a=@R&5z@wp#Q@|+)C@Ygi(<_IwzaRox zp+QwhZ9bdAiuXB&PJk_laY?0d-pG}gr#aLVB+ zh=)?-y<9uN5ubonu5K4lZT?X%(YO(O?Fp7OE1tkWf*BzMta7!o=3uVI@AbZL?!f*D z(ui3>r7Yj;ec8m+VPf~IvLb#3UnXldW<9Vt)Ns8okd^W?rC3|o6Mv3?Os*{E6hM1X z2;i$xj2lfQy%ZA@&h%s-OzyU1g6a1F$wN>;6*DES_10f8{SF|kKM6d@L;d>wrd?Un zP4%2}(a%5>OqmuH`-@8yP*cM+%cqsYs9!s#kEq)I{4T3m+c#MX<(71$T{U|ySXk|e zr6hx-P5}Zz1@CMd^`kQuCVGV!zN8j3mzq~t`@Ojrf-kG$kr|iubKQ(z>jMexjl9Ys z9{T+Rt=cznRVM(-p?7Vmf6E6-^c27+n!|1Oxesf>WWfs{D~HMo(mxfHqK8EJ{o@5- zd5iV<5-Liw9E}0Si(J;VjUvH{5afR_YRa@`o-GFO)h0qI4Dhv!4B(4nsgrKel5T*O z)iqx}qg<&NTmDu~JQ%yUTDcMINco&{K*(o`XentAnY<9H)(Nj5`BTcGVTZZaXM_lW z!W8$xa+xSZzl5P#3;c5Xe)e0mQ)dPmnK8Zqx;;XmFI$IW`&w7MgOdN+2k}X4CtZOA zzf?c*OL2YIfFJ)|7zCuLsomu#eoDJ6ipFK&3svAISN<%acS9|ni^?9YQko%FAfsq< zJ7HPWTQDi*H$tE=(PuYK1&9b+y9`!T8S2&sDIk=Y&_Uz2vTp!iMl+~})JI0M--Un< zMn&*t6bR`I6HH*5>M??UrK263&Pf?ND7etWx z0l|k_2I3Tp8^X!nFAQHi!DU_!S6fS<9jP&dFO_IgrKCwNF@P_Wxv=iOlW1Q6zD%Mu zCLOJXD^$#y>ly0I2H^(UcLS-}4t`A9J}mzNhhmqFGiUj+=QUt4ek z`0@w>1d`}nuPgXQ@C7nWo_!3a0`6MKbEMJmV9U+1*jIebyY6A__!j}lLK4QR8 zZLM5)Q^S!@_)UWR4~9vZo+_7Bbg%cNQv447rcaFld`+1$4_vRMJfT$hQ-cJ7Pu6oK zEWQAIxx~!)qoly)Uhg~WMhFD+S;QxX3Lfq%`^E@F69ravu9H8)?7ZH86+r^4X)o+@ zJAOp6QFVN#>dlFW&3#xK8QgBu4+6VXawby7BjbS3&0r2_;_yNy=<^~x5rj!rRzMP$ zFM4XZ1^K)5Ze!<`+xYY3aY=W7@&z#FW4jPY=YydV+jA-ZY7^HdUq@`@VV*~j3)&wx zm)AW9$M#5LVG{Uc1FuTIqEr&aXrN-b`iR*Ke#Bx5_uhnR>TXc*ZS7%8DhE2Z!avK zL3GY@zs4}@y}NFZJc0#(a_iR{OzVDH-4)9}my2BLu?SK?;C(l<4C#Roz?aBp@?W-2lEQf{5D6ydIu4_XQ9nfOf>nZVhf^_y+Lr zaZG9_fI9+t1Nd_IJRA;qu6oih09QT!V49SyZ~ySOcx|?h#^vXJSTSEKt&3#2>~9a~ zLF*|f1Eb7f-s6p6SIcnC$c><(S2QZ$4?mSgefh~A+->jE&&z2R%h_CiKgsjc)`Zl| ze`Tz2sVj0n`EB@+S0D5K*`ZTEm*2$$a-`$IwEDGHQ$fqmdHN#1sMquwtI*Ph(c0 z@AaO57ECS>NqcX3*^zbC+kPQlsBYqlRHuuEC)0$Qg{IB`GKI(^w7lU46h@(i+PulCeA=>8_5eUZ~#Fi`~gFt1* zlRg^fma*|^%tcRM1eKqo)y0o$&waC4eo7DmDgBT4X?YriQ#X0u=cIN-gAQh_7J&YI z>WBou$;$u$9pkU8{ysZdL=F*rVH^#VHT5XR%^=!Ch(H({$8>wX zE8uQ~KpHQ#5-oPKFS59@QW$-OzwRbq1fVeUd`fq6`9|>7;>hKvzD>04-)dvbJCz4x zO|KYl9?uJL;va}pJXZklUhl*Y-_xLzboL*^_3o7ovzm;-UcNRV+nw*V+q?j&9rg>+ zily)shgvw(D&8m_APl}`MYZ+|pbz^F?lrxxu@3DTLLdN}8TJFPSl%ZvfH7_W)RZWIFNu2- zP8by=GX44toeW4X!-6+xRQHDhpliK`nJ}j)T7NWBLS~;G-p!wG-@undaNC(EXC9%m zHtVmwK%f){&hsfvLzm3u*=$lggK$N0Z{qPx5*np@=^=tEi(@5L2v<$;?sV2&^yt*y z_36;5$=%eSygaXeSDWj>^s*}lif);4e-ZH3DL^2T@)OpZkufzjMDXuw%)ulr56(Zw zqxgdIZ|!~!a41i0F@k?uhwFU-?GsJ)Cp+Ed_~Q-y zJG;+INn9S$7l40d?>5)8o&Wl;G}LI`pHy?fpg9R4NGJs3-iB3G#JzSK9CVsj4JIJ2 zQOnz;Qvlb59J^I^eyaDO)GuYXOA!^q*Onk|J;xMX4B)H!%?kPr)C{?-5++mG9$q^#mYV z{ODac{0qI+D{=`^i{BhjfYKp*0u|Vphz_4|0Zn)DKe6{oi(5v3D z(-lwvl=|U0lZ9N7iK%Se-oU@+r|jWL#epmWl>!$+Er#G<^Wcv-W;3RdfSNx-@Tk`I zOZ0O)PdU}FHhw1x#Fi#)=*{85qx8!oAFH^!BcrQNp?t-<_~4IAab!#_*X6!am0dmS zYnc!vUXRDo^?_uf`K8v+hZXPpx*^N+m=U`|e+WGDJGq-slF=@kr99m{B9CtEg(#<4 zu41~=b9qE!%2&1JUAnbLOkb*qNLRU)D3W5qQ;%&8iHa-pGskGI{;XmH=~?reaX{F2 zs%23~DOVGJlRlKVO>R-Y{tSYCF3ODYKddYe!Ls#%_FVmndG!kbY-S1&D9<%601k8% z5JVLP2=YF1K`R4*=(|auqimuK1@LQp=DfFn9{{(TJwTB20d4q)g{Y#VtKA5CFjA27 z*$7I0+V04qTuA9tbtVWwVp0(5>6sDZVw4-e&UOlNKKl_)nNGpP-NvLlUl2hSQiP?Q z*xx`Fsz1L+tBbiIrk!qS@}&}Ok4JlAjApwoF;Rhe8A1?N@7#Ad`*W2fiuzigT)!Z= z>=;Q9ST5LO-*u!a*+J50VETZ4)qG`DYfhHnNPY(nE;`Dci+xnO<1Atn!_trA<$eGq z_t7~dIF-pRk;OvaUr=SB` zA$-j#r(PX-Ooi&vdcPAVEgNSv9w98z@=>w$^GfaP)4(8x)L^39w-@t->4`E zMxRp3kAVF#$OSLO5p^dJ!X##R%qzeuSXmrrdo$1(S#f0+WALPX-M)W!L$h zv(P~I%WpAy>h=&(8`#xu$rFGC0CQUuAm{=^p{@px>YA5M8jI|hpy6f^@#_v#t9s<^ zkk4$_V8FRnc5eI#<^)3^0~Bqr764Z+|Kd;hTJOpw7+0v_eU$qFz}ln$0qa1Syc;4^ zY*yY7LGw+;hPJ6Adl%j$#0W$abHd&kjrHH=hn$_y=xlSTY`SB2Kz&S=D59k~CRkTb zpP`*-RrViZ#}}UMaLBEj**XM3GXTGf7JHdagGWbTvR~grAT;oueAYEUAS$u7w_P;!Zo-r>E^uIya7j-3bL)fJ!D%Rp8B;*Z!>-IuHzv2*;F?ZcU0-dT@ zgo)EavUFty@tbe{H?km2c?4wNYH)5 zT~%!P%Z<>MEe`21-YV_-ufn(@0SCLIX2w#`c=M+rup2lHA!wi#gu_{YbmH{}V<;UE z#t?_=$rRW`;EqErSS#DJxFRaPWIwZQ#mEFVl&v2~Rob%zx^rH9E9`WPoQs{ZpzQ{e z=hdT!naO4e5QaJp0TJ7tU9WUkZC!&K08urwl!CsS7vd!AK%sCIN&~`N+JJ~{zX$b( zUz}Tlu!bJafPW1LIs*gTd0Y`Hs-xMr2)b`_y9^U#GZ+DbZxkVr%-wI_-&BNriz(Mc z`7K#rSb>xx&Row`0{8E#$QWg0^YXi|KP%6nD3~oZopjp(F{jCyYkF>|dgA8KuFbk0 zX11y)W%yJCn0v6^yA^|v{zj84-^c{1Q97N~@`XzxeyI&nH5HisX*(~w(=o5g z<{2pKg3yufAf@vmo;}dweF}vCd%s=;{mu#z7@B~nXKoNQV^5hes<>qK7(UU}*n$2x z(f~&?+noc1u0t|W>=7cI!R{EpG@3KhN}xoQWP6yvlB8{dg zjqE3hfHcz^kHA_H#u4fzW5xEKv@|^gNr^|1_QTB4@xV zK5%Ja)V4xIJ(j5P{fu9nofz{rLht%{gY1xKXrd621x8dL2>3{kA_Q5XC(-Z{6u8C+ zK~@OWb4qL}mn(*ieHS|X!U{Urz+!kp0u_NCG9v*|b*`I01WjzUaXn&7_d`Hmeh_ld z#D*BC^&xb*ZGVR)HdfORQ4YF<#@$)MLWZsim5``Is9x*GA^>z`s`HwICLu&F6IahIuhDTx6P8TbGczi&oI)*S)(mt(7x-)=Xu*#lm{lW6Zw2RY0re?b36ay=CW1{9EF!+4@ z*ZoHZm^$_cEI;nXFnQemBdu?>EqjHa7$id%pS(wr?PJ;M7#*qret8mT&)TXVfYKkb z%MvD{S4D7d{bw78`Upkbr0YYBT_X5_2=wQ;N?PO|BZNF!s;V%Gd(DfE;p{THZzF)} z-|o*&AiYKz2&LLXpJH=Msw@QgBV>Rnmhte7w7-n*Ld4#NNsPyTLU-rNdDJk(_uaap1UV#ds_XX=mzhm=R< zi%dQzJwq_HC%+SrJ|S2TeNTqyL(9c-FtrB|6x&%3dprexm);)!*q*w{8rDl;hvsNe z(=1s1vEXfvGDZ!h2j>EKdZr#pAPgnB1WRv-K#2~bhy=h)b`1x4qaqST49Cy)1gH|W zCvYY5k32U3#HX>3=_lI%hxFgTfcLC{*X(DFI%45<*H=|JsB$)1WdwOtRd-%r(Tkua zMHcg$WxI;5(+p(x8jD^4+s!uX^$KWZ*Y$n|6BgonYjb74P@&Xsgr%?0U9kj$g&Z*s zDqjFYW53zwYTE#12i(#>j0P)dgb1#_1lQSlhussN!sV`#{9``aF93h;L_DJH7l130 ze@uxJfXtS*pCZBp$Z}L%6Ripl=?g(GEk84~XGo?qhZ$p-Yt4>rSW#E6s?JXl?ZH-> z?*|Pn?1&}PrAtc7HunK<#|Kjc-XV4mhA@(CZ1Q<>=mY;oEw`ZXC zq_m@4w_Q9AQjPE^Hrig1xY}vO?H8?pK)6+obv_d{HyYe9D$xd1ag{~e- zKQ*+U;^ai$KZfgF&A1w06scaK^abE*#@*I`n9SswLgOGE2>9`4$a?KSFT&ilG6}8B zV-*fuVtToq2tP3tPHErE8$Ez8h=Zw3(MEHv@6*=%f;jHqzhqGW2JN9Qi{YSq7%#Zr zbiF5v;NQ~P+YJ9ST~B~Gks)}OHJF}g3&gK$!TRF1{~*@IH*~$M_%8r=?#=_d^=tv6 z2DOCiJuw7X0cnF-OZ@wu5Td>4Q)L84s?Kn^CxPfdrYv_UEBpZE@njI~C;a@A@BwgzFu`s&T_jd-y8x^quDF>T)Y9=+z~Pm|`vN;2m*=`BBQ(?=K~oC~h(b@4_c)=2mV1t(z-uE(aBgCJl-0 zq#-WNvZwdt5mqd94}*klh5)WKqW#>w@?Ngk;}?J{j`FYh1!m9TdRH1NBEZTP(|e#LyrtmJQPt%)1Az>Kp9bpo*HF`expHNw77E&e;3k~d z7-j-Cw$0{NYzp8zJKzwtBA0{ zX$e8RFYQ<;)xGTzpn5*DkrKz0CTb$&{Lr?&am1aqP3)m&JAo0x9qHV4m}5wcGuJygN<2@1<}c{DhlDqg>w8LQATi1vitk5p2>W{>bb5qfxEmk;1*}+bKqzm;`xc7{3sFS-b+y zpm%8@fG>=@YUk8*iT_p`XGt-hyc>cqj&ok0krm29J&3LM#StzPuOGa=SmA#0$L%08 zXSAsuwTfI2@{TW32v-pCp)ECuC^4sBFtNv8!cE_#CZ-ozB63035Wp42J!4Y)hGrS8 zRlfjSS=_^T&GCVu`MU-77nCcOZ6*s@%MH;uGV=xCN@Yh0zLIxObPCRRKU}%&n7Htn z6ow|^8NY-pmZ&vR&t5F9Ki0cqiGB}KFIO4p*Lqhs_Ca|Aae_y<+!e__5|PY^892h< zcat{>`96C7k$Mc^O5`Rz(~$tRx8;_x#^v>MERcTIk3_`CEj5-yOYqOW|@K6 zFL!tChEWCZeQs2-lEz5zaW4!plGJZ^Gdv)h=1Z(L4&{9TxWc+bY0P$VRB6ns2Jj2O z71dRETsG>1`t=UW=&y^P=;d)m-5o*zhEGp%$FUbJa&+&kn*`n*Ul@SBD z(uiCmy+O~>4pcwKv*xt}SCZyyy)TNeMB351NWAy!j0=KtC{{ns1B84W%{<|k-hzaQ z?26z?Viw)-lMmq(IBxp-k^@HYL=j#Ee+DrxV*pPSGsYn1`Dv&`jo+Fff+vcgv7}6o znB~2M0G=#nWb2e=uFrglVtLYMA|XOm(R$j&ISPls1R-lnXLU0@FGAlJVEH%Jzz~Rh zL3EA7RX4-4AuzUJPi?9HhPVb}^!(LE{|n0#O#~iIvTqarUhRox-n1bnrdZ_F^Smx& zK`6EzzF4Bqs;$?;8=cw$K`@Dp3my0fL^GRl|^g8 z>^%hV<#dRcogy|ckd#_41kk%Hf-k5TC%m@eui!Umb*>yixLKf#5rlF-;JB=Rpfqju z-qU1E%he@$+Yq(C)?V+=$R)K9!I#x_3D~%NuzS5LpXqAO5Cf&h58#UEp44bsYxEL7 zfh(bjW0i{wI=@!CQYnTeMVsdwS8(YDaAk3)md%2gS2|Gus;MlOhAjjaK%uJ7|?mWfy##3wLHU@@TU3zqEc2{yoMF7 zcjYiAv-rh`l1*JbL~sRB{-KjF#)#Lua+t5X@2mdr3&0h{Oa=4MY9n0k3Sz#Boy7cZ z@e88PwiKcnaLKjqErq z`Ee|HbkOA%BDgXr*DFQTP^zQkIZr4HZU!fpIw`<8dJ31jvWT{xQ$6_Pih0uEada~{ zxpb~Gm#d}5pTm_#jGM7Aggj6DHC$mt7EtH^Es)#h7{L`u`~^GDD_-sUOv)$iiDY0#J6FTx;#!u-d zxtI$kFmzZ=OF(#mD%AhizV%1!U&w+ZhPA48R94FO!iY(y5;v(+m;PYmSB zXG`=Zo46@j?}YD2;JOH#=s?B-^1hRW_OT?;PvYXKY^Rt5uxLuMq=H?=h;o|-$R^1t0PzR(e; z#;BXW*-%Ky|9iX5W<~OzArRM82wybO*W6x&($i*9xDfbzxUvbF(&H$63Ff`n70mTa zI#}gCS@(KZFjr>1+DnPnH#d2c*Uow$wIqT)E^)X4d}*wiAD~_*>t65b#fANUPbSv4 z8f{>6lQ$X3qkisI%nq9?egIb-S7Y-V4YLlp^Dih@9C3EE6Be2{T<(hEy1J1^zN=7f z0ACVE>rxcI%^7siR>bZC1PdVf=l;E5v=EI;*-a&DT2qH6N`uKCdzee+W}ppv!D zYPmA{3IRO9+>fFhNT_1H1Y2ynq3b=t-0Rah*_bQ-TohjmqrI{sc%pd_P8bJWpk=5T zerc&PmD91gnVj;@kNDhQ_+z-HocmP)#6Gl{@vyFl8w+(g!xH6blHihBUy; z!vK5A%m=^~LI98u=5(Kd3&0h^jPfu7sA+`&t`uhSqY#+B{U{NNVSC^^GNMTG$$4Th zme^I76x7iT!FOeVa1?t%bv9U!J^K@0qC$nnV>1iyu>S> zdIR`+F<+Yfj+5W(eW7HnauL$3N>jp`o3{bO1m6oH5P|V@LHV+|`gOYQZ*i@6MYEtB z_|rdy0`n_2egn9oxf$W;UCM~xz*UgAA;^+kz5Fkm;i^jHo$0f*__Mf*5?|G#f8u># zxvU$&)s*E5_w;_dCD(daDv`kI&wDT?ddBm8&gJ@7-_EJCTR8( zjP#ahf+1;^t3t94n?Tgu1kFYOsnDr!5cBt9Y7~fM7loUm!8Jpwp`|M?aj$nJu@=fk z&gZHvsH55&xM`VkU)tA|J(^aLH8&@N-!_uUe%ov_>+GoJW@NB>K5t`e607&_o&tA+ zem*xNQ|caFd+z&&!oTaj$2h>L2(AcLZnTljx;&42y{ik+j%a2ZC{0HQ;7VXctBh(g zOlrv?fGdEq%|GS%!VR55#n_3%&2W=31#BOup6{8+40X4luYu4-k$jO{^?Ivy9V>ZE z&5JiTEhEa6qYVuc*7}7Y|Cb`TlDYFD>X9rtJC}C35nSn%OWyQr!AzYL0=VMY%jA=} zQkx-wE1kVk08jQX#c$wBXRnwjcH&(92hea^lmB*D)L^#{jM@b_|m_W%%N!&50r? z=Y-u*u26#go3!mrEq)ePCP%uQw0T!@VSt5ddpB2urhC3@+Kkt`A_=Npop2SdDPuUOfi>%5EiRukx{$q z+`P=oy)w^{9{2CJ$D#!O6dlp*@(suNhNGk_F)>={_5!XPVh7~^+m??g<)`QS35reu z=x%BT0Lrvl>rD508ZF!1%*-oVzsV- z^}Re4KpPQUCblv}h$OJ3or)O$YA^TW8{Khtb1}QCUn4sSbD?_)5d!g}WQ@H3rG@YH z?!7!3M+?)Y4)L-FHe%qH^WGzonmvL7Ost zimPGcUhYceEQ{ZywOA5dsYHh|{ruf)cdvIv5rrJ-xbyfFwT7R<&%#V3Nk5h11@mh| zQSuWp;yqby_1FX;A%HK7sOc#pFcvfuej zqIT`s2f}4Tdm-|PFk!U8eXPpTvYzhKp_N@;*5;Yfg?{dGnQR#Es#4|ipl!<=yaNB; zVR>Ri_siy*m}R6GZd3M)p#)&7j()XI-VlC)_*#{GF}eHt|D)XQM)2kF zf2;jNPefYwNnEY@XCWjIEaTYy#+n6+kxz&80ONpDU;~<6tDWn9i_O|49rLxYI|vvq z06Cp{%KQ$S-8DZx^b2E?9{$R9eIfao8re8Z?iH{iw8WnT zX#>5B{A>*v9_uPDtKkSr1YV6exO=k4!A2 z7x+cwntu$yz1IPtu~|{!*G6Py+jV`QJiCpELySn!{=E&v;f+Wmyi?uHms6%Tjs zr#(tYwS}M2*+b}4ea)>7Py4w(O(hQJ?&ov>QIBl&JqGI%4%8Q#aJYsi*d;AKB~S4* zcSl>9nq%w3H$iu$p;~{KZP57hwqd*%efTD*IQ67_&?8d#xHR#h?I~OpDh39XcZqOb z&mgyenc~AYKzFja)VH>LYzkcEZ<3biddp^ ze7vOga81cKgs)DYQhv%QJ8a0Am6{!GB$952*`JehYC!9o$*!2|HZFyLK4JSrelC2{ z`=BH|UhikZ{?a|4a#TfJ%sSR zC2Xa!Vb;!Bw{HYrRK;cf!Thj)VDET9yYyTd^~Uf;^+BFym3PkG0DDI5@pA;uQe1uy zfNE#X@65sa{9X|SjLmXiKA#J-d_n2O>-XpYs-G;}lDle-ueYhw-X<_fGwWq=7}WcH z#P(JQ|MuSydbB&Ngf3S zHBM3ivunySDF0r^+nn7%;}E~gY}uY91@WZoBvR+-rz1a#*O$35tjhLJ(LI|LnLUVj{LS*bu;M>Xa2BP>wlKzPNGR7Mc8~ z*az^vb|lHtJPdDb4OI7y5F=2Ja!nxm@|soP<^S~@niCj4uNvN?y~P(}&v72J{b>q zK~Jzh9BBZ@3d_QrHc4{$*`dGIqqeF%x;~Ib$P%q*wt2K=Ol6rFesX9F!iB)WG&xe` zF){G9BR6}o-P5|rroDjgoBy2DKjtd6!Hc_1r5%2k4iYi#3|z~TXN_U`(6Q6Q@6iD* z?irhiAx5N0n|`I2q9n`t8JoRcAg5{fckL*VBqEpVrm7`a65B0gt-BA?%t&D zDI|#e)n@zQr-DS0{mk(i;_^)%`HX`hFbrEE{0ka2fo6!8%JT}o5d2OZyiPkuLJn8Q zlY6fteunO?pA-TT?Dy?5R@4%S{qQ?*B~TWK8-8{O^X(xigR05cq?@=QhITzE*}0db?xVV!27}-(QsmK2buHhaDpVC&^Yeo8dKCC^6m=Yldi3PR}b-**rOHg6@puw zYZ-Vh6P7RSf*1kq+F#4F&Hoz#@7n6r2R^Rt1D%y>YQK*s$$dg$LGIxeLmlppuJ?U# zS#OG73`Y)^&#jLX!1u%P0B8T@=8;p)m(7jf_wwvsDkbq*gmK+ z_-fV6E4Z#JSHU2d%K)orNzw2#H`|=1kI?g?8axzm53R%*QRb#5J_iWDUkKAeVtzZ% ze6s% zG!7c&hy;1qT&m0A`@-^Nw9D?H_IW>75wToXLPUh5t0gmooKBaMaBjT^b!QKIOiSFK zZo3nZTn(!H0+%DL$AIgk>!ZuN&@6_9n2#c4+2E;iI-lU`UWJ<0#6G5-1Y?mrh#~|u zR~PA6Ssv|pMr6F3w7I$yQ4gv=e$u!Brsj{Q-}D0jiUVSJ83VMc6)Q7fU=slA%9RV4 zGS~tjR=RFyK*5G5I3E;LhtIHT*UnI*s1lq37aN}C9KDW?Ae~%JSpgtb4Q|hXimfxZ z%0Pga0E#$0`e9O#du)|nYi1g6e0}8J>a;D6?M*8YME61_1o0>|+&qK44-oR{MiE1= zr*tE`GL=`CojnR$eU7OQSK#$2syGgHy6O0u9<7g1igqDOH<9wnFDjP zv3>>t5Pc4$ZS3^=<8(&n(c$V(=r z;s0H$vFj_ez;gOCb^d&fvALi>>s_<+@AYkH)M@%db^cyIs`}N_pQ(fO`H%$`^wlum z?{@#x?3?~j9Uze7kaBfsGPW0}ojKE=uCtLobCX-Y%8|C=tw!|pr|bN=8FTXre%AZ< zeB1Q?uUsKE&gmF2U{QXd2>$Jkb5UN1`frm%kpY+UE|^sa|8n0)YqU3{x^R84+RP|h zF$iC6ZoZI|-Z)@Gh(2A9(Oa3em%d;YZb}vdsDQ|#&QROd_(!lvn}4v zzF5!;;-{)H{NX$Q>$BWYfg-)WEH5skMg0b$|M@vCs8CwtJ*nVe_y7bcAsl`hLcuf2 z05H^xok3Oz!B{ht(9(B5!n8{%$O`=}q!s-biV*10!2n#)DeG6(PPEwqC7PLl6hpF? zr+&V$0&SWL_0$&(SxO;D?>o%lo#J4~e|E7zR?yBjdtDM=Tl-Q_BYA$;@m zkNG6u0DAeR|tJ6+RHb9FP^Y}&%CRFzS+r7Fkw+EfG?eB=r+fb zGefyPgS^EcGgN0H@4KyXA#Bb|MewDw!oxblDC-0@C;>E(XefZMIOQ7Zr!!!okcA(h zVfv`953SB|s(X>0OKkR53?jD&2(;yu5=!t^ew9c7X=%`J`m=ZTbu{KXOTOXYm--2> z42BY?Ox;a?`p$c^<#V$&Xr1e|M5y(({P{aT5L4x(4IeRn`F2F=%q#?d0MCAgqbtNO z5w(-}E#@;#y!`yoYs8+91NFPQHqqt_YBhV9;HqyF*LVh}yYi;V(U0R#i zj_1Dsn#DDOEK%#@Cm#}vA|GJXYZHpil$$}02ne6p3W9Ci!6FEvZuPVT19|#2AZjta z5Sk{s$#|3@l6~TrU_y0_W6wpuWRxKqg(6I1&JZt4M(>wty(mG1IlLCJ%MWEpax1IY zo$R*)p?{F=f`y3sZ{|0=tT-u(72WSdcA9URP?!(pF@(rXVv_nQ&)+YEVR4Y4AqWUI z4+B9reug!y7uk2f@W*eCHX^go8k z3kFq?%lc^+%JS#s zA2L~Ng`CSD7XurcMwFth$8(K zNA!p4WwhKB(nbO|`kU{3)6Lhzj7Re|%S|G^4|7uZ;6eo@>V=Rr9KPJ#(MG6;5~E?} z8oNdl4q8$GzX$|xkxw+a|H<^Ab^AXA9{;Q!FMP(MmAx}LE0T18i&CSOfZe~qi7Z+CKVw_wiga%?cQ)h zz$_DGXjwsj5Hdif;i|ZV*||ashOKLQVgT0)&!S2rG2G=T^n~QV>I7}FPG;aSkGak!Z#2e88`WR@`)h6lX6Un_>xweqEe?4Jr@E{1eiPXJbLAnU74k@qK zL_?NEq?{yFO^yE)e@$P-o0h$HlNt)J7@ z2hMrA;=GNgECFGeEcxVd8zG-sR#9~ibHjk;DLu9YK}-`gne+^kdMGfWvSgE`$f#^I zKd)W{$mp{fn)O=&eH=ze+hogDFLl{qXQ{#s5<`{CX(l&mWAH%NjNb~oC|SMd6(oQ#C5p6E?i8sJgh98i-y4+2PdhqF+`>gA=CXV(^Yr}ApbA4sS?UwJ zszts;qo0oiGF!zU2y6H&)Y3ILzk<9E01ijHh=knoe<1ksDCRDQ4-)qae)5Qw8l^vMv2YM68Ufe?rzQGyIkFo;Q1rj`&aKly|7 zmAT9!$|Q*s;b_$?e(neBjn4Q1<2wTs%Z4sLH!Gy-U+0=@i&VBx*x=Xy3m8E;xr z_5t0YjAbX#nKp%{dGrfi@oIsez3=u(;Td(m}%EoA&=<>5Y`!!ZQ zRAX>x^15DQc1<}g%lG_(sQsl~e8k6IundUC}+lE+&QKLX(ujdoGy&q#TmK{aJ!4Mnt^ zPb!vn#oU?;!BXYR=YIR^B>>RPB=VWxwuqk+22@5aj+_F)%8ZuVE_4uH?{iP0=CL6_ zSj7-RxlD%_O3r%8Prf!%-b}Y)g>spmW1m*Bv3b-q5VB?@mP`BgUmKa|Xt-o={|%t2 z)U`r+Oz!~EES}GUGRVXbnbHXE_@5Wz47|=wgegzW6O9|n0_r~PTSIH*-z~Jy}m!6FgoZ%qV>k$ zS{ie%p$1T?5YXxr0URNEHlLtJ6AnkyDH$~n5x{3^ zqFhv+OPRg_{466JE_;QQZ!zq1*(>--#&+$&T9@SkvRhROe%}wWl(WB?gIpfehw!lm z`=hD_zw-wO`9$wQHJj$87|=UvFX1P@cU{|>J7^3dO=g1x!u*)Bg5XNx99E`{%b4l! z0I*EA`gxqIeBoNVl)6vW`hzTpG;myZ>%G{OLCkXj74^>kJfq))(iI~Emg?2wN+BSq z$$717x$>^ba#seiydR<+G|)c%l4AKV$sWKJ!aoSD_xhzW=(qTwqo2MW`u-R|#6fkb z-{XSa_xSudfM+9A+fPpxi%7{2qH}KwWTELJ=L;g+P3aTA zJ;;ZRS0cr(06lKK5$r$&Q-B0voEhE^g7oA1C^v%N$ct%?8ehcRj|%`1HwEzNFlDQC zfZ*(lDc%53i<+HogU<%AbQqZXuWf|2ssL_tdHQ1@)CNc@S8gijPQT24T~H;L$F|U) zszTMeGhFKSlw(c_jhoBQ_0#3CBjtAQp!v%BEBd{0yxJe`^UnJ?>)SwAZ3qzX4L1J$ z7XQ90dzc@uT}+dQ@qRCNB@gTA*Lx2)&mZc8f=M(_yoP>4qfLt6z!g2v-0%*rCw>Q? z4Rc#}tDZEdD6}s{RI)id{!kzJ8&o?Z2G+fPc0GSVm(CtgcW!ocDzu*2LM#q-<-SB>!qGWUn_KZ~xf(exkK10JPk|ol zLLd|Vi>z!=zI1M=GwlS7OY^xtOnZ_l2cORkBR%MR)OH_`3&54mnyzW%>He(OdVg5o zo?Ua|%JNaxt)7}zTMB?rdiMPfzGv5e-M2eO=hiezIrE&u_y`H-f7o z+iXAMWH%moV>1SD?`bga5&)de93r@q*nie363zeCZRYV}e>6{j23a@@F{Bv5mBL-x zxJo`*ruN)%h#SEb!;Zl`pVDQqetSzHfGdc-OsZ@|Tq%@9Hz^|kOcaCRVBt}4lQMEk z(P)a5xiRZ|y+3(ej)G>=7p|%m0=RMrUMK6Ss#^pl&^8&xrKu4)3%L#T?s8d z2tH}sAEVR1*Zbqf+vH)6bJp~|1?su^tZhIjr%1P=)~)4Rj%HCC!Og;K1iO?*yA3Y6 zCTx8$<9Sjf1ZQ@+>5Ci6mB_!wzkdU`BKgPo_wV)o(DDCi{P{POKYu(NfBwDPmCV0} zf8PMf&B7D}f6kl8-x%eJvEA!k(G+PmqSTJkTBBVHkz5g7C|Ev5s0i3x(ML&cA_mN2 z*AVg=|Gq1r>kMX%dZ1cHjXo3D8hW__FEP@OKHw_gz5^oE)mbL&DVzLfTXp+B!gU>bTI<@dN3fvQWxt;uh~*-+`kdSMc^)vu>%P0i2bH{omu zb7xz*)2T=i+xz(9xgX-G?;y~POr0nBlxOxUy(-c~N=svowpQm1McC?&Yi4#`)?H1MHqx zpFWixZ!|DB`)0nd{j4*v6kJ^3k2QWg(cES1S8z9u9%sY}B z`4%jU;ZcO(mR>YOd^S+GTnH`OhWMg6nG70L>(@6aWE8utHt!>xxw9=dOe4M#X0@*x zNGLSJdmrtNo<6TnAs(onPCsk&%Ec>Vt=@w=1pswd3J}U@I+1!rvg?%w6NK6Ikou{c z_gn5TasQX`e--w%0AY5YpR$q7zdps4kwo@EE2Wa3vH33mon<5df#>}n0H&(^lnnsL z^}p(bWPQ^Ti{v)j?DZ56lJ7Pcpl6Z+{UHW$2ClZk*1@J_%io<=XXk~#-0eCJ|IqKAJ>1J-=`%tVE(WqAXt#x_H zPwmXhAZLrbVt%F`SU;~b=e3&luffl<{qx1NK81P+_x@Xr&ik#6tn=3JtHhDNJ~Dq+D6Eyy9D!v#1Z7JfDxn+KBd~5FF#$g;%XP< zLm5J}kbVn4!SmO|Z2$~&GyMDx0BEuVQx{gudt53?es<>#{r=OE9OfFWeb#JW!Y5Mu zvncBez;~_FMTfJlQccV|(2AVo^QfWH0p3zM-V%D1xY%|ev|!ulizF~mc(q+7OrEQc zhB^mh;jb!|d#8(C`y;pY3kBDYNin|>`~o2{y~^Qff@vq$iH30a#l&_0bX=l8BHUdi zb1CRQx&Wruqh~+Q^XJ#8Xd~72;n*me{#iR`y5<7QoC5fjLC7DjSHNC-f_8Jk?6N2D z3xniNIhDL8t=`1h6f1wL}|sPMpHTMf;iiw z*e(PDI@V8LF9e!8C(nUKo3?TkAe-$&AV&InE<4QHkq{;f^g-EU_*zp8X$s@-aYl-O z;9S*qm7D^B1kFvC-5Z{!`9RBNjr?_ z-uNNVGpHi!6RU~7xhj(*J0`hZxE~K2ghhIE#4Edo*0y+V+_Pg0=N@Vkw!Uk=-Z= zlQdw!uZFY<4d8k%A+LC;r3it9iuSTR;v=e^#A=V<)#L8xcrwaqElo`nBW?Q+s)F6t zoRUiwTj%|#c%9DFVjH3BCIo36K#Uzl1IIlWtVpnGUsYp?IY{d~%wANv=%Td*c1vCF zUh3fFCbML*7bgH9CshDfWdh)Y0WsKxhd;NTnnfHQ@B34 z8Vb=(w=AlV{9f+g=8wDp&EpgooemRHE!o7tuh|&vMt1hWUK(}X0Y9^Y{-j)At9wkj zgDAKy|4*_=efG0ED3v{_PS8>+jA!)t0b6_}-JA?R--APSn8ie# z#28KYdQCuPKiz{b(T}hNmndKwmjXmmIa@m!{oea^--vPB z?NdZTDSpv*vhqLl50+c3F&r0_gb$53}t;JjOnco${37U^Vcg(vs(OY z&juK8XbM^YbTq$xBk=BP>MQ$c9~Ac={gB02xMXQ&JKsT<&L7$d%T<(uE}a3osPZN+ zMV6k+^bpB58$4*!f$6Z01uTa;8*OyIkjM`7`*pSvk=~jwu&RMo*+;Uw#&6vDOXXrf zwyutZGo6SC8p89fXDFhc{hl4{$Q!gQ|7PFCeiy*(_5i+YqHyEbqwuSGz209uH;Q$O0{Cq^&!C7i zrd{)A7#Jz40In$h)i~7T=6UD|Tv6snhNdk7$-## z2$bq&9b|Rj{TU@Ls%dE#<{mep2!24aU|8F6(ZvbJfPuyk;EPlUR}#l_r8=)zBIadi z`&ITw;$Y$mkI5aJIuHXF-Asz$N+KG__z5WNkMgOhk)9HyZxB!CC*WC|qEJ%Sd%E~@ za0;@;jF749t3R8TRT2DPk6ay=qXdOrxZV%-;0fd$|9i{eHfQ??A%Y}hTc8dLSBw zWDHrYyXq3D?Q4gQTE4ba{;UUP<0uU-vcgwG1*ekmlwdG-SB(B{{vv@ zC01M>wf_QGRYSzZWm4M!)K{1&!rO5nDJ4bmn{?n1lQD*A6~EhkfRxoXFD|9pMoPWE z{VfG)v81E(_@zYbm%WtV7QTDik2aqjgo6ek3cNOZE59uq!(C2W*$@}lvYyWu(y+Jk zl`5djqemA4pL?(=Y0X^m^En0AS2||~Wg1JoCxS?1CX}FUC!?mz)j{`DfZk^5?i7pMq9S{!%6;eAM$7F39PqoYOCwj$`;*$`HVQ#l-t49(Ea zpAyW>*~!y0ds##brOos`nm8BQ;#Pv0Ie@ToqPZ$vj$*r7vv>&x=0y2Q@m)rl_6B}Z zXH%-aKaX5qveJ8!%?@8sr97CO^S|XSJ4zTd%}|0lI%4N>7PZfGBh+T!*3UXlx$rFw ze078LF+u#Q0DjU@bpOvh{UB)@o@7pA5@9a(Y5lAtAktxP&lO`&h|w7kO7opdFh~aw z<6P1YdRW#4A$zIO%o0q}8F0;xh>Fodb8;~N?=?2HO&FiK}5)NN7Mf3r^v*9;+i=@dWw=g>Mlo1~L$jc){BCehYu*~7}g)NcS^ zB+>N608b480v;@o51#~NLEC*v&YXyEEMGR!^(boktzSV0{o?Xzw4Y-($iWCE>cHte z(-A>5J48|l0V6V1y!~7c6anQ!3x5;X&dZ*_FU4$EKDCjbG;&7;m#z;CP*koQ)=UUG zM#WzcRTECdAExs{9Kix>bkF@lXqw3^{xF?`@M*fkq~mr!gbrC3h~QEehGI|+z*d^-_;sm>Ir|JvB^7_l z4hZz}nG7(IvF7E;O4o}&W2eA_u==Pa>aX$33nFg{@ld!yLuH-sN#&r=Mm1M!B{sqjRs1Cc}(CV!$%!PFi( z2<@cu+Qh7A!x%`Dsnplo1b1QduXf`5YpVZQHD z!MM_9xe$sLE)+il1cVc3gzveY>m9N+xE4PHB;SuXTR@r87yv!P3gFZGqATSyDQbWz za$W#s*dF-wz5-xj6Y#cOThOW<3_t(#UjWTQ6n_3^zk>EYYB+2Mqqap1vT4uxb%j zS%DMY1~Juij7bg=g1TRfWmG8w3qlSN0w-t5K{!1RvQM(}6h0GmDQaG|qn`m12n2esrLu=i zMScSj+WgCST&Y)zhx(Zy6vxw}P|dE~#~}1L%d1b<_SV*)&0ONOcDgaY5rRgZ`7`@l zt_c@rJ~RV%A=aW1_8PSE)Wm|FDg{L8!?apUw}y4^@FAo65DFogjb=EVZrN_3>PyGPEBmoW07eF?Wq8d!j0f5c0 zUZ(r z$BEMb?a?_zh-ZF(IFPfLgM)0^Zv;Oc)OJk&6ASP1GBrX7I(J&45zm;T)I)$^mu-W>qYs4epj z_WIH70erdK>&NSL!VJvg0x$-h8Z_=yOcy?u?fXXtC`mJlHR#(xrhw%d441!%5P(&O z_94|E+p|fYY&*qUZH&;GS|l|{_EgND(+(1`@{%}$TO(-Slyl;c?t9V zIx=>&TrP7{7j8$--h**s@SFVJBEJ)}1XDABU?%rwNL4xN`gr0~#uevQf`(vJbA(DNVHADdL zUQL)>)3UAWNcGG|s&|ZK`vACYJYv<{!vN#u{wO?jMQc)CthmZo#=wvn6$Lk?^CBFr zgqdTBzvE1DgXk9cIUPJ2O<2h^Z}k^Ipcm`B06c=EUr@naUg40RaAobt*7DQzlC;36 zx_v!+KX|s`%ojkjvZCtt^=tqed0Iv-q~gSf9p<#T?L6-nsr@bF!(ii?CW*zw$PPUj zei{dqMSMEpZ5qOoU9h{??diczpHlm`^|bSHcqzI(kjp=o7i;#fZX)N;Hw&m@D9cZ7q(6pl$@;( z#1YeG-dXU->Qc%T0NF<5Rkx$($n$A59BGN3OBaHTW2=obB+@$$Iia#`uwl9yvN9hCH?6ZF-rfz=s}J1M`9{#mKh@3Zyc=<7J5dCR7U=6# zfJsip+U@Dt80~nDXt+%4>piLomYdW$2=8Ws+-8(}GkY~Z*zN0i)x&eBfGXIus5NOr zG`s%YhMo^ZIuK&A^nMA2?6eAno7LG6`FxK(Ww74gLtG!dd)=(gMtIAW6QWyXQoYYc zNSb7;ZdT_NtMPt~E{YMXGZ#XswwIw`wqp$ph_I_vCS&ejzloWBmLM5YnL$N#OEM4;xj-nC_lU;jb~M~SAl@jw0BEjdo#|1YRusOY>O zX0>=r{Ip|QRNc_}>|LKGMDhg`CBb4`?$?qFwJd9e+z8fmQzJ4rK%ndvTBH4g5uQrA zpCcDT2@2eH$Mkb@KVs#i9wG!~ZGXhZzaX05|C2j->FgmW3-=4a4-++XR;)9XaDs!M z<`VwG@SSqpnJD<%Cdz}1Bs#+0e=aO^G%J>`Lbv`nIg^E;=Ji=d(LUAYvbk*lno8X- z*%(bD_08pS+soU@@K3};`*rG2WS{{4Xz)pE@;{^I~?!}^!t7P#;%8}5BUkegH`w>o)WX5?< zybBGztBMejV+n#N`Q45VHdgUnGH*mf?WltIlfvaitR#8Y@r)Z`*^2}v>uI|YZwohK z@jR<%V-&5=ZbANMk7vkRX_bG7j%5lp0K%NY7Nmgoo7li|u?595CJ_F_Cg0A_H=P{y%<^*)glhJ7o!{uh;UvPMyKcSHRqO3?Ku<^;klo} zTDe<9-L{`1zj{yX%+iT`ZDS0LAGL_RZA-@U$x?%}g%J8) zoCo;+h^US>l^k^KpjvYtW`K@(VdaCcoqg5GK2aMWtky(M5`P3VHL4i+RBd1bFfnY` zulJg51AHRO&W#C$XrU+AZa;Clj{FaDxO^Hr9h3kFVp^O0K zcrVU|}vz=uZ0kA~K#i;?H)}y9yd4!P;fxfs1gUd<2F`};UObof1Du;go1Z`uY zx$3FH?hUMKl)A+jG^?Fze!EWQIb@T!5eXSn?S89H!zf!DN10}(3ZZWVS1jdJfNpuc zrcU0xYCVK-B~vcGA3+Di!~{spHlX+DXbLfikQ2))gBrT}IwN4_mm>I#1)K8VV|6b% zgsfn{5d2B@h5PP$Z6jRoQ(}n+b!hvZ0^(i1CBFcCN-VjBtkP;;bp+o40VNi7>#jUg zyaTQ*{z0j=0mviwn{&hg|EcE{L~u~jdVfY6N!a}693YfqEmd)SX%gtfY=?5<!4E_e(R~5Uxm0gjUk7{FcuOVnbtZ=6!*8q~|Ld#Iw?w5CYcZ z9qQp15^>YImKKt>^?TL|zYkiRHUHiM(l*el%ei{PHQ-pSeCG&=wPiHFXJ_XJPRTNN zIb-#-vg_s#-@$gC`R_Y>Vyn?xsY&zZXKdiHl{DK9*NIYWd{eASL>)cgYuo;iR*a2t znd7J(P_B^fx9Nb}`s901WZr4}@-vgsVD*5lO)gtB@SnN2Xi6d5M`R6c=L!+bGx;OV z1)jO4->^sBIe*OYn6TxuwvY8-=+4FX)+aB=P-}Yvf8x#%zw&f^Pq6c~$_QglO*C~k zNmEeW!1Va!8Ofd|%S?1PMYGrU(}TBamy=Ep&^MWs0=SxTTTaFnj5dfu2m=)PAB5!F zklXgs>q2CS06;g;4ItoULwE6UuM3Lw$8?k})Yek&;vP)g!62{FPPx|u_C?+iQ4PkR z&?AaAf#~OjFu94{)r^$0ozFi;?X<&AI@ZL*aE3s1+aAJKlE_+F#N)A~JEz^hp@Nw^ z@-+Fd(TH-Ym9x|${^H%*3k5@W8aKMs>zpmPZ}y3UITC*YfZACBe4Y8Aslhl$@}P8R z#=tO*DR)0tgUL%jr(7x(l)#Z)1%JWvZ{4SALni}~jaC{Jz5%L6_Pfu}27q+NT_*JI z*XDiH1y!Wy-e+h76jNo;F+s9|mizAaAIs79nRU7EeJ7?6OvGt`^_VlF>wTUK{JaGO zL3>94qucoG?&oW2y}G|AD{hP((DY&Vvo&>IBq_CaVkDTzukkZ%BAS=NNK*YinxB{qc0 z%h#j`zOKCcgD_LazGQ)sqy1LhPt}0>fd*uv)Hek1HD%qS`^GzC4QICyXTO{=)N80X z`1zXcv)M)t(hPXRXWDw-;Xw+Q*OzO3qV=vgg5~O3->&tRizq*h3j3-IO^ijGT>o%I?kZ(susp}KVLKU)!EP0xzIlI2{EP%soO{O6E{FA zmyYGIF4oD4tQaWME-bBywGl-sA_6)voZpoPQwUgn8GG8k&h7s9x zKYuf4wi6F^))n3EDzJZYX^G1GQ{FnLt5L!^#efqU`EB-z7 z#|XgZUMn3l9sBcE;>&g3E^}FY7SVwEBF$Hs;vrwg>Yzdi{J_*OdT+kYY#^LaLj>*~ z0U#8u`YIq``x9UfD^&nrD#a;fom;4m2m`g(uqW_^as%)tP|H+-0iW#=e3Nn`@H3B^mqoD)n3KD}ZZL?Hvejz#?n~o_Fj)|f(T-%@3<4?*K`Lj5 zjkOB_{E+<@e~LiW{1B9{DIcbT9+_x)HbBOrlI_N4oV`) zGL^40`5nXu*W#7#=X9W}Pwnf2x<_u$1%MG;bw8ye*7S8<@X>(Nob3Vph~?kwYqH<> z!4dez$0FZL?6FL6@kZq=1_cJ;F1(3|a@-sOA;4R2QX5^xLm%9=y(es<>_mOJ12 zSwt;FrCiUj$OQ58JAlY9J-et)v6eR17s4(Ra>7GK{+Q=OKVVRLAw5 zD+>y2H1k3IT+h1dM)Sy2Hwu8BO+5UI90(`iw^>SQc*)$gJzD(Pmw%N5!TN>KY-*fS z{5tYqnO);2d)AdgZ7uQJV4k9$T%VS0&rvZ^t$clat@m$qSx>*u_utoY|305wtTx6B zmj~_+NRrOai&&P%+b3Vbj%twE0l<}ePN|Mug7v{XY3w-;w4mHEC<0|&WSH6GG>v}kC!*`AH0 z+HMj>|3u06Qr$n?Y|mb~xrP)4sno`!!YdtGU zS#J)=4` zwk!()g5~xNeJQ-=flsbcs;y+}-XHF~oxNU*oItNBSC(^Ei|XlG7BSp>&W56|i8hl9 zU}zb@aPv9!5j($}>Fjd+Fw~`A2&5(5G>#xF{v6}_95r=2({3JTuRjL@6KOIvDq_9O zf*Nijr#{R-*LWJ$yI#}J!>3!@50KwkuVphcxB2iF1y7&tfh&@mPuXg9=3@W9p|)6M z(x+V84?#kSx+X@LO{>O+&$+e{NHvLe=MT{eA^1HvFG4;ncom>{b)9GgV`J9ch zj_Y3$i=}Y0Ac(-~PWTC(_j8;KBRGZIy1r-=HLEi1XLQ~dDeH~0B3U~xlN=bsFkCD0 zY{qjEod{a9Ovpde5L`p@KVM`uE$tXS*V+rw_KOq{eYEymFVdfC>ee5rvoY#B9NdPvjbFVTe+-3wHR7Yh{V)a55Q5Opkn-q@uV;Q@IJAO_)Fz z-((*gicdRvhnwK338DA;evbSMIS~9sK}xSB{KL)bfE@bg)J$Q@)SPoT9FKr18W0$6 zVh7prpA+qSNj6w(3P7LsHm=r8iz_U_o5BD&tzj?Ys?Gf1=4fy8DX6J?8~hTe_qLaC zZ}ObTPov58d$n~N4mYDCs}Vmxq+?T5W@crBdAd41cDOw`7<)x64G0B3Y~uG)>N25n zuku|%|9rBB_#>}xmQ@;VR}N^)er7+T(!oW!IC#)O&}s;-Sc?5ZyEt=O*ZQSp5W{WD z*-~pw8RA;7MG7t=jphuuDF-nY5QUv80C9MkeGUjk=lKk`EeC`LbOVd7nb-QJJYBt zNan~P=6up5-=rb#X_tiCoP)twl!M0~X+1{c*#o$OSj4@gvow1S*SmsPc2(>r?11?U z@dNmRh^Wa+XeAa@2Upv?5lpYU*_(~fkB7c?opZjPK^#6k&u;n#MLB#L*R0q2qOqgl zW^e9lnBFFp?Trhmnrd^iI52y)m!cw+c7M;+wJv73SsVeNL9^-ME`YsW)9u5};_SxV z^CsNagtfyAKsSQ}H_RU)R$nh+g=WJ|1!uHVpSLy*hn=W)oOh zM13$fL`!8@jrf?pH}f}wxMk+$Pv4sXLOzmIFav|aHbCg6SEldG>}N2ORqO)Z2Mk=- z<2?Oa`b9XCIWfXAU9W+jTH8ur95LCIAEHtlHJTTbS$ux3=0%{bY*h2#P@H1|;pb|$ zCt}r5C@>(W?i<2)vo~?qxh4{r$FFOmtYTwyho7aX=+;h$-ZX=alS7dWVQpkq>$TJY)Qv>>0)R>Y{(b!)0FBGeNhy^zoJKHIldHpe<%bw{j3a{7kK@(d^I(jr=OLn z^D@~+VY9Wrvza~sz7UqoA@$m*2c@V z=l!B~wrKd)++F$8o*{^YuYBc4SjPgPYu0f3Lvdb&@+LPBqLIJ*1)-%OGfL7RzEMwJ z0eshq`|3LQn~I55kfsp~Oi|cD8qrhom+6}VqiS)+j1n~qG^4Lrba;W>PTi5NvR8@n zG>f@`5j7y=3&Gc-WkNGb)T~QiK8v?Pj=eIR&7kpS-sj_?LE=DIgAjsJA31}izHfmV zGI7)Cn-<*WdOk`R@+l|!S@%TNL;xUm(lhGkXm+it5&EuyG|jKz-8Yn9_w%+%q~j~2 z>~*H!v6pYGsNLZwts|-vESXwyLKQUMP=4xW*YoC=;T(1nXm=9zUw)xfzd~(}iv?{` zl=&OLFE*br(~w=qV~l_DtuS^V+!udtj-aHUo_AHx{I}2`y=u52{^Xo8#oxx{xPN=J zGkVC;PVhyP_ze|EFh;k$eYW6KP1hLIUl@MHng}2U816UfaxXDgdWU?P0qiGo(5cIT zUy|E~De0<@{0Tas(&D)9qPCchly9-$_Y*nm`h7})$ns<}fM(E^gS7N%Ret20KPAoI z@pHNIG3ew2736c|Nsc~w`a-3)ML#d3rvCNx+jQPdwP5m7DPh^$E(%ZtKX4R(l}#+8 zV&OOGRK(_}2C%YwEeK*d=x6csItahg1B}J%LH}z{5M;pbs8i2;P4$Ke=!y_r`xlYS z$jn(Lt}eWEMF_6_Jg#RbR1hi%t3LJ_f?Ge2`x%JT2tg7XS2q3JPBo>z9-1APRlGqt5QhffDH!uXUqCLb z(G9|P&k-Fsh6W~lRgV|}NYi{ozf)&J>6j`}+-^v|uWb)0l<%>xMYJ2eU2VfaSf+IR zj-3r**^ShB2%Q+}7)GK9zT1w-_^IW@$mGF2jX)sd#phmoUn9+TNW^$V4;PAHb#&bh zlMq)pL79AlfEd@wPasaT?Sh};L1OfiaVrnTEb;nkDaYw&c%Vipe%9H)0YEZac=!T} zC+J7QQCLedk!~nc6@JF272N74i`>C=-7kQmCChX8^7%hLi&(Ro4xS@$nD!X!`p!5M z3k9Rd?c0o}f@4Q90$=`4!YYl-V5z5(0| zy%AZ^g4-4@_vN!UI%|n*6u#HH*ZH0@Xm>#)Pv?8Rt26JuV@#Z0A%JUU_N!xdigz|c z09Rvnj2=A($@@oI4}xkvRYCTrfWy{IqLnK@!Kzb7!OkH2Q%bqQl%0|$18Eu4`a$-m z)H}hRS)eOMxT^0SB!5aPH^RCQK%%S&L8KEQd)kLirrki7fM!*vpZdXMoTz_e(spZSq1pZX}o!pZj&SpD4e zGe2l;ZYOOqnrQk$y$G^CTP6MsQa_M)%fN|GdL4-N^hyumUf%m5PU>RpfrOJ0N)hQe z2+Pm@^oxI`^6WFL&l)see)6X;N*)a+ip27w_uTSRKYi;IwZp&*NG~7`gJqwV&%w5n zFLWX^C%{mU_s}Z@*LKNNqOhI|0Q@jR0sPCl?O_FKqLL z6Id#Oe^_NOTraz!?(gzDb@qCt zgqvatF#zKKwi&LH1VBAq+`XqF#_;?Vi~y1qQZ2t{2NPUod5y`O5=atAyyR>S+6-4; zj#A0^$UJ67)}y>#*SqQx<=vKH1i{C(zG~0S@|$)3$!X($21+&xLbGAdE659#y8@y!OViu~*lizt#VO{4 zHGoes?Unt5Jjc1|CR9RPO16Dat#74ZqNx)kndt7*;Lj?)0>!naTz^ZhF)|Y;M)EX! zm_S^?0Z9VSq3PM5WC4OzLM7VI6lXNGqfY5YP;+?&ojibO=XREB3=!@A1)<6#Xyw7| zhjcjZ#U>HYhfMAX#@%9j>0j_$()qCQ(Vq{J8H(U*(D*vql3|x~(8M#qD}Hn+>VhXr zsoWwq=YIK#Ak6e*w_&y$VNE-&eiBF!@+A)x4iIlgWKy@$PXfIF{0I~fmUk${E;2s> z^deAJzOyteV3*J78zf}%6?z|Z?2AZJrBMAy}Dy&q?n%a(T{O>(5Z5&R;!bphlWzkwfS z7f&j$lgLJGKbPTsBlu--YbPq+l=0f5-=26Ig0On~8P6N;L$;+<-UYGKssZ?waO+WJ#K`e3EAameSpwU+;)MAlfo+isKo&MPR9Y)rQt}Ge;C`+CMC(yTWsvU z%TN34w@B%=%*5F4i%l6oEW5e=cAotdN>Yz1zQ6fj6Qj**zlTxs zFF$j0_fYZLl`IV9r){qGp~i2F*<<>t{G3hYn}FHgW%Vpty0H9=4OSnTwu$)B_2VE% z)8&zr*#w(auf?OcAchMn2d=^aO8bkA(@M4Vfror$itBae=QBPw zw5$*O<8tv!Go6m;eVFA6;K#e4e#c7a`%e_o+Y9)vF$P`cH(uV6aiLuM1{n4gea{#G z7H$jMSkiW4vSD3gM&2~*?n=#sWb3V@$^*#Pxp^U2e! zd?C!C2tHpL5ZY;B8R8J<()lHlm^Qi%K1~`B`q{{ZUFg?FV!pa+1fM5uZ{#?2+6{ju z#(9ANONt7FPn0I!&6UD3KN9QfV>-nrN)shS9oVyhdGqs6V<@poZAX3CoRf}cd9E)~ zjJpS!K7T#eunZ(O8DP$)Qson-O)ff^*IEsP%UV|=C$r7Wd$stkdZyf=H+7=VP|14B zpfMj0?*fQgRVMsYi#RZx_MeSRtc{=!4ah`%gh9kLu+dm7kuKD|2ofydQKe^SV#=~u zRn$c(ge#V_GW*UdC0{Qgw}tBJ;>zW0R|(0qQGgf}BL0yIV~}0x^{T0A_lIaG$5jMZ z9HEPiP_eA?kbX!aCEZ@Z&jF$|O_cS=txb!1^~B4Vxtd(L^KbT%Vqthjt&C8gWgo(q zO!|u_NbN$@+RQ@)-&MrMqXyJ7g@ z>^6+{LIQmc;=g0 zX{i6EX{D&!PswCDXr^fwbBVl(Rc!)ckWC#l(`*DvuXIa;BODA*M-c*%Ojkhwxb7JN zIbcNy1Tx(f-S;zWwt){q&`^Wv8}vOhRV^-2erXi_82;RwowmH5;USr-sW!WGgT9)b z_&k^9%Lh&X+uu%Z%&U% z)ubzaE8oc6GoH-A>lB##h2T3q9ZWk%+#6`7S@C=!_^uB+=E+tkqLyC(zKuDG+@?FS z)&8Xi8#~f39}*)gS5*z-Cu5K(lec-jcjtZ3#n#QA2s&=yWgC^`qRy`k zFib{*hMRt0403hS#gH)&t?60ur{Zjz!pJbOh5#=2GDzpNJurAD&(Tr{caE&k&AagE zVeu0>V9iWt07sU$8YPtrA)6iRCw1T^Q&_c9L-*P}Qx@^?6FUHCr_Kp1A!5&u@66)b zO59ASp#NrEwS*x5qi4a9Stet?Eh?9BJ8~f&A*Cl}JqBrhxXcY7e>}$GX-lUlh1-{d3C9Wh>Fo!?Vh^0sc+D z*0r3jGpyG!eX`z_$MsyKVbf+uV7*A{(Dkk~E+h#)@izfjR;#rE=4Z~J0Jze)#3-;- z;U;Ke0B~+AfP16MbwQEXdVRn>zS4HkRg~+hO<0s({$B4Vde*=|_;(A%SW2y{mP{d% zD~xO3L<{N;c_dZlepR0m& z6Fs1KrUw2-g`ikpEt8+zL{CEk!sdnLF|Xyd+j3VF_skCagtMh7K@9pRg74#Cw%ACozxjYbpJIpK2!YL5uOuur8oU76Bq}f&K}d00 zKSZ0N8iSvq*^mJ-=YkMXyL?`Z=puv;`UOP@;+G&rXM}4fCx)mgLJ+^4R}^-2)+~LN zs;)$evOM#$-D={UMAx?JmMF>d2Y?ucrK)lXT4=z!dz4d7_w|DHQ)MB_@U)A^TiiOn z^~E$S>K7)rfo7}Me(VN>zMo6Mi;t!?ih|&4NFFYLEMdRa*T-JMSCN$_Z7)Xldl2{D zPS;4CwMoK$#~;xOlXkup!e;nU$QEPA=_rSvWkv*+KkTb^4EG-Rza|w`(~>u|G>%& zhv$Yclg{m}*$`Soo>2RcZ-A~!!)>j3pP}w6q<}C~6!zCHnA&iAYhDC#7B>Qfo2MAO z5KBL$oBY`ja&^5SdU=N4N(kVJC72uzp)Xo+pDP;m1>njhN=%L1P`t<|eg#(=G4{%2 zAzxm`*LqhPbK^YXVE&e00KPD?L4-!2_yK%jZ0lM-a_CGsgg~ILaM(qFAUS z2oHms*l8GhWk&u;Dc(I-6bnZB9+y{~^9k1U3!xU(@@`t^MNrjRkQezzP}S(>bv8mi z2?V)<_n^odp{iPP(>WVqj+Y)Av$WF{%=bac8fp=`O*V1`ad`r| z$#Mwbis7EVr8;4v`!WP@<*-G`Dx#C(^}Zxdu9}|pzFMyJt|Y?f zCc|ab9Pgkjh&9o4@%8j_ZQvps!A;w=ny(iSHy~Q?cHGE%4oBmU;d)mDF(tw#dB|xi z;d)mDMHPu6I{nKS&viwlH-a8Sx8-Idhz>a!k~u*65hA!kxTle*XSGBfeQ$yRxKaq# zFss-WA5*IS6 z$Iz>7lo71YZfd4AYaUoBTZfu2A;N#)Q8au6ISTqe}hM1oew3_}6+@6g!Wp z@2!1*42>mce=^Pn$Y*{uI22~O^kTOG>jL41A2&p*hejxY*q)2np<)o zTjRv-T93Km+2=uPd;Yaf8S15Q-vfGSpAUtoK)34rM3@;&os|ua}j|uh<=`pJuZ?^&J^hYd$_X4LJayD@(-4(x2^u8rr0l{hSS;jwPA) z$j!v-MK{~4_~MC2IfkGZl_Sv!fr@%eI{n6+y_Ki1t?n@u&+iaL*_s-o};zEvP|o{ zd?8(5ecxtXk$P%qeb;L)H2X;#F)O(-9QD8a1eoonYS&NNGiK~v5Kpa+;F$sqV#_7QwtxuCHL;1cE9X4a~&?5AutPZtXkug6RjeF8sY^Vj+| zZ0xJ7_f;f#1lN0MiDR|e?2cOaLh=O?ri2Z*7W;@k=a^N8x(PrK2=5d)tc`}90{}Bc z6d(+Q(_RqG#47X2Bu{>R2J7qbGch@pYi-1Festcu00aU#u09MVj6kU^f>4U!Ta^#E zL;I_lX5JG}e^&_<41U*6r|fsVtA{%~FoLUT#w+`|n%XZ1Omsd!0vgFxnX(5SP^L`iEB zMY*;~atXw=ycalC1i?od3YK9~xxYCq`G0RXkEFA9nXz_M(A?yf-Y-U;$Kc$CyP zLeQG?M+5&iKu|`$t|^$E;>#62jP};%fc

      oRdw^0KXn17$>`U^H8$pok zu;`Zz=+DMeZUoAlRj?nM&JF0#{ziZXw2k!TQOxptALwL@aVW=1^|qh05e3M4zws`} z1^LiB1e)@)CnqY|7eUCrYUOVpzCf;>P(MynLQAmKN)lAhk6j|um&}V*muBpMYGt%$ z%Y(v;!BuvJ?8+*-qAR;b_7gV=Hks`OYB%@^X3B)%-{ZAi*D$^RK+CSZfPafu4l^b` zmtV{MOB@r>wT`D?{7H-uWV3m;WnC|cNZ1xD(2g&Sp|9-rIelojX%fq+# zvo^V>dwB}i`w8qF?N`_8XyUy$C75%AUSJl{)SNjt z3$;DzF|0sXA8!2|g<_rpFo&9S#n1Af@Q!ca#_Pv64?gSt+dFe9RU!uWy}m5_egFC{ z_x)jHb$fkZwgLYAUGCeDEHSJf+QwJ>-kXeJW+$gonwX!D5gr0zR6_9Y?|NULbjD>p z3Mq8GFOqfK>&LY|b^8K=K+bzTe*rO0?Ns`$HYfn20<7mD0|ulDL(7PZ-)aMZbaDvt zfA8LJMyTdj6u;SKBb<4vm}Wc6yb&zDR{VAw481q5yMhvc>n-X~?u6nu-27>Xpib=3 z^g;3aZBPNkVdg$4q}BGMJ^K`X@x^nOz)+j-_jJ}>gAZvejnXeR|vreXG-=Lr#l>WjkffHYzX z5&Tp)f{GtYFkKYgzX1GPw|IO=G5rH83jD9uu6>~4!~zjmlVx1lhL)VU%^Pc(e)f|$ z9oj9gLqrX7wc0L-T{825@QX1j$H4H%aJ`@OuDfv^o0|WD8lVm`YDKj)qeLx!{$|s} z*duV9wxQOesfrBpH@mICawllAF@#>ac?hNYe)beI?BwG_!S+UjAq1f#1f>W;&U;=t zq}&QW!zk@BgdpcVnc4x91?f}BBVwGeoQ}!^Ebl4pn3b2zK4^p zNk)6Jmmy#>t!CqjpT>Eg!Nftf#bcHMmL+%5{E-l0lF9=NE_&_v2SPlsC z9!ID893U+1z9~M@+WTQo4qwdU0ls;L7*h*?OOVcaAL88<=OG5kr%$ye2sXH+7ODzC zxYa0WiqEr#<#6z~-V>K?Fh?tf>pip!k#Nda?JsdNx*FT{F`>^@wETq5?pZZ|uRl~n z`wbAtCNhlb@3oX-fIu`K4u^4@PFt7)prY-!*}NkLpOb8FTy@su*GWbAJvL}6&L?pL z<{ylj`<#p(LIw4_T$+MhBURWmG~8)DM)A9CV0Th6=GDaApT5)4AAmq4uMu{8WVsNbPwVVRK|UE<6c8XA^^sEA z5im4b*lqY)6j?mRY0;kga{7M(=!w@T|(fUQv^x_k%z2Pke=pGT-fWN!! zT_W9iYl=+v`vB9N>AM-}∾5p6&!!$S^zHr&yE!1}tqSY$Rxj;$A}pVro%#@rl)1 z-T{}F=WR!m$�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%0ACnE&qPlEx@G+j9dvm%<0vZbFrgQVf^oUb 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

      O<6}YMJB;CFojDpcCU6OXBm5%72Z^b)PnF zmkOGiyS%VI(G#reU8w}Qo@HlHT1ZkUm*><9w;p7OL=M05IT)hS%49u>ncmqR!57L2 zS5ha6PBdPm5W*KmJOmB;Ly0(v0-8xQC)0i2IBY~drD|Z-t?gQGnS<_=#;wI(#(XC0 zr?Ik;19z7+POi+c-MESuVB-yCuo`jiZa#>(nHTH#v6@A?d-g<7E;&({&?)$SoOQ+O zthu@F(!}ASKgsw69u$Wqd*j&blJ2H|1n1>%FaN})y1!ksTGQ?(etum%l&r4@DWA26 zhU=&6W6-du9~hDR<*#EqqjILL>mzhyG3jo~=eIZLMswHQd=FPMbjrcALpc_19EI@( zupMV?5a}X#>zhrO?ry?I#4o+QaR>v|Yi+Cc@qGC+hN9K!>7V--6dL0taA6bS)p z|LVAa+J!R+$CpGgGjI+EJ_TP$6ODuVDXM!%@5#pH+|h6rFlvV&Fa}I-#UR@QN)Wn~ z5W%<*ni&c~wg(95PiRi! zd+$C;+=j6Dz-%PY6RCF9Yym^utUM!grcx}zK>BGR-=tFNCVOB3w_}HMGw{1u({DYX ziJPe6()8PGPq`3gvCF~D?uc-g!_D>#R?$m#)yyn6vlHD7XsDR>vz|LGYN>3yzo2o5 z&g05RL+M)2c>z7jd!=K@Zl?2CE*u-I(VMRt4`I!-^8E^i+x4qh1uUUXFFV`W>t2h#TXH0$5G zO*jCZKw`gHJRaM)K;BOD99}X%^~8(}UF*wR{M5|?XTAFZhho{Yn3`U(SmeWg*%!I> z-W76dt$Qu%1ish0DHv?mrYMl@x{8=EE}gt5H~WG@n^VD57e_l~<)h5;-OamTKQY~}{x-ER<-OU{`%>1r}XTRh!cfVh+{^<}Lbz23%R4V7*fJEd-Cj%>kEbhEY)W>qa4>ux$lKT4pf}Rd9ClZ2W}1}5JU`9HA?30 z=1xL&fyH^)@A~4WEm1_BwwGEvT6gm#^4aG5!f?~CpDjjS+}#ujzSSY=U-jN<%(v9F zfrbm$X44gJX5_cEMqk?9tVpIhj(e*xH$j&Mj>O4L&xh-7u{LQcrMsDsUmh88cU|jC zRlK$)d*(o_;hB%jRPsn3lS&_vK3G z_{v++QzwxJ+UUr0{f;mHxu-2x-4R`E~Nb8wZm^iZ~ON+Ur!%btLrRo$6=1cX$xo!5yeqL>@ zbj29cbKQ7?VY8oyo5VnzY1>@#|1O)Wpg>!Vz2RmsWbxcI5>+HGU5nwus`R+o3o#pB z7N`0TCK_+sYO~lc2cp;VOBRPT3H`E&kCD-iW+R2oL#DUL6iVu!CC@0{pJ_THp|P$MZ!V9@=! zAr<*f`!fHN`znjuvKt}DUWfvD_TtGKatT-!Sf#xfK`JAk0%o4=Q9;hrwK#nQd5rM+ z#hTVU{Rom5z8znS?5!;ghcCyi#-sT1ILBK>ChkrpXOzTR zjzcrCjxrcy+kaJ5WiR()4A=c$>^N!k;9|Z%cArMci$H7|W*q6x2TdwVypPe&xZXM&E{O|bX%>D2Z7P5`Jcf2r?FnJLBMpQSJ%|R;@FFgvAT7YnJ3It|5EX^M%oxZAFl>K>qY-_9Vv@V`K@U zA>6AFegYQ=r|&;avF0b`8$J;NDV%$K0+;n=+BLa*lYNRHVEpWChag-PrlraGRex^; zsS5DxQLcl_2L%9w*c2cz4gnx;$SaJq-ZfJoQ?kPJ;dY@w4bOL~5B$Hv_D-7=?j6A- z8`)M)8a?HbMI<@&C4x+aAGF5WWe!!4s<7Ie>$&9!sPYLC6=Fu@t+`q+*N4Mg5IsIY zcEaiv+q~D>tnCq`C;V$emNq-JL3Se4J5zSbe%HTlMVi`noZ7l%M0@~}ktmi@-s?iX zP`{pfb-SN~q(my^r4YwNQU1W-#Zuu2vJ$~=VHTV%_2nvX^4qS>)wRA{$zHuZ+$cM% z-YwhKFmlTgBqbuz7W>gI`XDEf-hNVaRk5YV=1~WKuHpFdHczNDPuXzyrtc_kwyzkt zzjDx<+pGCjzUr0BiVTW;PR- zh6yHBQDXTr1?49(uw3rAcPm=kVFE^wn^=!zl*Y(RO+7o8FNrhUY%I+16B*CsQPwq$ zaJegv@6gzKI!Dnvz)rOw(CzPMG!j0+vHfxvn|1L=5EFLTBlr?2Z!k~RTRs9)v~B>S zI~sm+0{}M0ub08r=Rk-{g~-ovq>C_q=2T2Ek)jt}WJP(yPk5xxJq%YXZ$WXF351{Y zK(QmOudJX%h^u`KKl6d~hRM^CmHatH^I1T^Pk)FzKv63(N_Ydr&d{pZ;io{-YS&&a zY6n80vhiOIKM%5%gPP;`lh>!DJ*LC&0(k*Wh*_-hj(HPKpl7C5hdqlcnkX%`e6g6n z)#!`~X^&)9BsZS8kBRj(ti;{XKWY+Jc!o>%jnGc~%8*1ry}L=42x0$*OWf((Daf(L_?& zc3|@UiTy(_;QGlqZ8vY%obMcfxGWq*{lExh6CFm!*RCL#9~@Fg@r7njrr#5?AyPgB zR1;s~;a6E`b9xjb5Jq5}oFUp$nTO!uDwQi^%sxTvgfgZi97F;T6Hjf38BmI? z-2i#yYROyh(O77OvquP`IOvnLvsEfJxPUxoB-;l+hVwqd*$0eOHS*{R@*E>Om_b7b z5c)|#V=(!;)~9Aq;AdR0o+?{FiOUGZ`1WRyaS;VeHxE+31h9*m6d*{rfHUwM@QJ(9 z_;$e%0%ki!2r@3XI!@LHEiFi9UJy$&g)>OB{MJ}g#gwt4>=`6le(53n1n>oNKY|6c zhE0yy0A0hnGw2Edz+tUV$cJQdGUSyiBlz<8HU%G(O#U145NbyIlmP^-oJ?TJTllfs z7e=)InWoPi9;&;Qp(sGqHHQ&&=eq7-+)U}Gt6I@nzwC1a%!`Fjw_J32F+#RUJ~QA8 z1HwtKpjD7Nm0-sdjXunPBn(suDbF{bx@r@vdgTx!=<394oDokMb#|3?%m+k7zKGjz zeBXWed zGL7+lYvgMmSJE8r4Cui+w-Gi<;K(^IypOIJip@hz`)hK~3jhY~qUYTF4WNAk)29LZ z9YD-N+eDuP3;-5~DNKO+xjrCZNEQ>zdprPjv#Waqj!Fwr=S~F`jApdIDAdrkazaoH=&se-?!1)CmsGV~;2KbvBA&BC%cL+GY zFut;`*R>cJ!<(M=XR=qNxSrm0`|9;qui17NyPfIw#^E{7V3GCBl;t)eH*uzdQO zJ(E@YD06SrFoZGyI{E=87@mf&08*d3jv(3B^@SAx#DF6g_s>~bm_?T?N;Li1G3cJT zm@}Axv|+BaA^4+XHbOp8GmN>Cqe2hSS|*2hL<}N}H>8ew0a#b^91(-aF95yRG`bn& zc>ush`?OiTf`C$6L-1vEBbdD`=Z93 z@RkgO<5aPaK%>@jaYpfud;kP=U?Lbqw^mpz2715k9Rk_R7%OmcS2!rtR7yt%KC(TG z&jr@U+(e$3Vb zRL^$B`xIb+vNjL_EBq|b{AvRG6kxF1EG7)!lGcL?LuY-OlG(GOfhlElIe(JHbV%c z5xmUhE%pLM5F0XLWew}wS#F<9Lh{@Spg_Ekc@JXKXWN6%ZIdyR>3OTx5ns3{-M%4w zrX|E;+p|8$QVed&P=GJ7sIFhZ^cckEnMI*en4`->Rn1VWpo3;U7bDwbqrZdVP1^@n zFgykb#_o-!xDP;0on_kNapQFgq-!tL*z=*baQ^F9E1$ zAZ$l=XtI*-jdDH9C;tLMIXN@Yg>uL!z!f#?o{3=;&BEh-p6?gx}p9MQJ*@-LWTy52V{_k5WAoXj|;kYq*xeSsoG zx^i+1inCXPBaQOl zC(2-y2u1c>Sj5Gsv1Y_oUG<5lpq^^DR^>t%T4J`Ut3EfvsVEkO2k!F02(y@c2i-S< zU~D8sE{$uwH8d=@_eR#E=;0VvsFkbv-hp-SEuSrHBalQA?=r|5teShd=^sSLe)4JN zsCADQ&KE*y_9^``U_nUvFyVpZYcb93*u$XpA^aAcXQu)`NwA4(4+0QXs7~Jsns8A0 zXiW8E(sYb(fS{5H>D;5Kz%L9Cf)J-o`+S$*inGgkjR^_U#&d|^mtUe5HjUS3!86Q! zy-B1b)gtgyKpEMaaSAXoYMP9@(FSWcKmW4eM%J?YW*q=nEmEHBCk#wm*67so8+LNx6c{KusuBj5 z3o2>4Wclqo=uTm%+S6hLc|H0;{Ok{Az%sA6Sa~xW(^pe3%E10`(HK z1Ooc-T*tW%LoyI;$YZjbG_Ex90;{AL{CQWy@KYRzx4$sW?2k0 zXz&4q__MF63^{0-BGd_?cKv;)ANJk~RVnn*LQpuS(8T~?_v65>>sQ{!gUWJWHmEE_om9yZ|*5&D*K51+-UqIK~iZN-|y}LfYq9#eehbJ zEav2Q_h9{JP>eX%qYy7I0LV1+yL$l84t=A%G|}iR&~p!xQv|<>q7LTW7fBiyK-1Ri z<@fiq1*Vw&+Ii1^lSI|xJ($yasa#nPuRzV~23-K~7AC)tiTIl$__F!;L&!V+^sON(`~L$0;T9Dw zKjZUX2(?ywilDnku4fXAtEmJd+ETJN8T9x3g&@{)`Gn>LA)t%=8v$eN6d`CE{}TZx z(+~o0=WhgY2=zTgL~5ne%*TY8a?kH{hhRh|-2_=$i~4?~-y#}Gl~P~5ck4G@&Ai;$gi z?F6fGvPmcUZ7kK1K|@bl^PbB&Lx7-cy)Ujt#@ub4{z~ryX1YmakmLcDi9~}IFodzU z_d)P;JadyvC@}+=KJ$f;i)w`^$AfIy^PK0wA8&xJYQg7N!xn6$;}AQM-sphmsR}>H z@GLO4pIK{SPgikzeo+93^E%hCt@u50OAcWC2?WJ^yldi8-qS-(5G7o1GUGk>tJ-+&#Iyb?3MV5pH_M51_ppvMySfn zD+p2ivNE4dO7u=JMXH@p*qV99G`>@ zU*}XVf=i8kkX`6g^<@OvpZ#?YfY|;_PX@+`YRAn_{yeQ+nVZ5@F+k8{qWs4|MjMY0 z0c`{Wz}8d%pA7~&!<6vo?87X~>a`>9xBftNBN=!Y5~^&03v0kDpshEsxq?)jnB4sY z%o^w&DLoB{Zf7m%{{aMzwaaqcR50kffTg9YVED-(yp;T$wycD%LOQi;hbdHd_&Fei zQ~UEO!iByrp02wJc4i1Z{|3{#lyI#pm>>eA@cimzoi2GdN{$Z}djFfg$^N&itn4Y^ zWFl{jteV_U{-APaZrMc5f}C|SaW+7)ui%R&=$^)SNxX9s&Dkrz#7#M+5Rq(NG3lO| zEn-8Mq3UORfG}PPv43dFPR#YN5lmiMvoHC_$Yo^~ zXhFzkD)}j&jqvPyJ^kB%yw(?sE%+R6`w`yRIYl(p#GHFWKogi9sUYF=Tn-cd7y<+$ ziAL~qBo;ik9&aHiCc?2k2xTnlp;!aMJnb|1@`&DNt8`yf#?#;nSF`W}Dz`S|M2vGH zz*S-mqiu(mm!8Wg(UTESexG5?QYq@S5p)ESAOwk?JgH=%i?3{9d2n&JWswCx(Uat& z`f0~Vl%vr)y@w(0i(Oi7GY{y9z@qye2;BMd6u++UUr;`MR^dTKqtUG72J%;JOcH>I z4CbdDqkCp9Ds6~%54(2!R8QJ6b^M?`QGq@PEZ(ImY6h{Qew8#;{v6^}LFzsLL8wUV z-1@%F&6*qrJZ|z5tl_pz8uNe7NMhXw>Iks!qM8P}rwN*YuV!W-L4Xv=XB_PH zs_rS3+A_pUDT~ZhpU*8_ zE!oKIGr;WAY$Bh~4FL6c*J3uvi+Bj3VkXH)|0h5D1B5hB_6K|}v(>~9tA2_<1i}|n zfhg+?$XsjF)LjVXlO~_n4R3OtO9*r#sG=kU5MXpg@U6>{uT)ygd{*k}7CcM-TpYP& zD8Vis!@Ab@WIOQdivC_d=qL3N=CS88%7f_(G+4u*^OS;A4*sGru)M3b3U8-v7OxRkXMM#lnX*z`C%JGpQRi# zSuU5wW-td8=PC&L;(jHo}~S;1_P-g;+2athn?L1*9f=M*S2|25*}9 z-iNVYUW9Bs#_-eRr@E}2?~+lC`m3(>7gkWm(NKap-a)rwnt&lC-cL};@lHj1YmEoG zqzl;s-xxtH2b|f%o!D!=A7jvm33Mli%z80T_Itgb`Puco<7r2Ag7UI5g!q!(AYAd} zjuaY1i^Wri*UMs8G*S9RCruV6vH{S%tVQPn;mW3%gG6w**xD9R#V{IO@9NEpLRxzQ zxp86uS8ZatywSSjz!ShgHHPX4e~b=%ZKC0xgJw71P??}y#aZ__ki(zypg_6a2s+7H z5M1S1-yw(P*mV;N`vqaavgA+K!3&v(2ve+kOy~HOM%qYCgAB<{0)dOi*ipskpV#tk zmPPeN^EUQJ9`k-1gAjcA>{t2wV0zVt8IU?W1Le;y!lE3~BEr94%U$Wj9H=sPnxp-j zn1r1*&)-5QS5Dhzz0kMG^(?;tTsdubc`)kbW{BX5r#O*xvBN|O*So^m8rw*6ou+WT zE13=a4sB;_GUDoRrXvJDLMiroYy^GKs$+U;ecLQ1G~ByaQJ##YQNHNgIod?>2rDezFHF3Ra8R5NZkmT>0#S z*v!yOTEq3OeD*OYB@D*F6$1DIIty=rMx^{&@5?8TP?&#w2wx`GRbjovlMMlUQCyQ{ zsm1TlPw&8+F@lLsJo~b~AyJ|0eMfvN2;=(i-h_=60Ub85IhC6eqA@zz1|f-1hlkay{+p5-pgJ2+w4OY%^A6e z>s<*PxT4n~K+1A_`gH5raM~3>yD6eLK zS}gt$^zL9Lp3UoSAa44GP}4PN-T{P_?9``UH#NGW?I~PA#8Z$Uw(F+5*Smr^_H>`; z_yVnsaJego^CF|Kb&VbZxPmy5NwJg6Q_p_^xS}`{n#+$UqLA^aA%H83vs8=84Om3+ z4qQ>3mD{pW(9>Il;OBBMs+x||v_{<98M>j|YkG?5W~w>Q5wCX@;}p}?__{lqEpGrb zc>MOA4e()W0ijyIzo;?mf{e~b;Ol87Dx>%X;0xuXK{mNOmuq^j_hoYNJ1lACaJ?&% z+^w=i7ur9JGjvdq;JA{B4xo1*t>=D!$!oPMmf-a+XTpGZs1*-(Ay|?!``H^HwA0VF z5FENZV}v!eiX!{Tn~4Gf>o!HVadR9~fwDV4`&pa~bt;s^suB}_{;oR()Ed=x-3-X`sP=5`CG8daI=fzSe~O@hO7s4<=-K2UdKiUhKJiVP#9EUa_1BVuGg2eOc|- zai=dlcT2af_9a!ma6hK>!UwILe}C5zDuOSgVDZtiEm7b3TA!xv-^a7GXJK_Au42QBO9m z6}(x6@T28`;5~HGyW*rg)83Ewm_{#oB_gZw;* z*XM;%G(4RBMxBFkjubduSSbLZ*e(KT{LfvC552Wu_x+KfSBz^~M0O^OsAd4Vo-kqngxFy()`Cr0pKkqUVTC@XGS5#K3z=>#9ewOzE!Y`n<2@ZiWU<)6XjJxUz}? z8bprpB4{0Mc5^fZCB0<0i|KT4VG@9=BoVhT!+A7*c{C4Emb*fj(EOoV9(OE1K+oiO zxJjCVhD}p&sDTaFyD|u>E4n2{Thmo=H8V3Wv*1NJOmpFyf#i=RbdRGv4 z3fUqKvM_#^t~BQBzD5K(TJI)jWPRla$TR$XH#q}grOWP02z)JfMNzZ?ZC~!&c)cr& zB8=Di6^fFZk141CDMyy-LfgfN5nN$J(N8-X6Q~Krp-0OWoTs$dP?Ecb109O(#q(D=POD?8M2r4;GZepg$ z-=KJWpZ6y~m!+)rHdb~ww{}t*$C~#4d)P>tz6c{jo`{*EsK4Z zS#N!C0l0ElncwpO&+yF2siH8O%PmazW&E|L=Agw2&=1XojHOtoEh z^D1QjTJP#f{Dpo(401M6n-c=KY7%v7ryJnu7#ev6`)&YNO=9*eKf#JNP~7|sCeN4C zor!5uw=9B*S(m%cG}fyJQp8}o)`JsS*SnrH)?d%>Cb~9KQ6x9wxObwo)ZnNO*Sqn? z_f+dv#0<&NRx}P?+;j{WJjnuS&-Y8wd`9s();54nc!w);9nPAPJ&Ug|#YVP97mVz> zq@r3qYjHC&1^gPPZw#EFV_et&KuT8ud>#4pMYYNzV%G&cP;m4?@Oy1G!ckA~&TkXo z2Jl4_0Ax$&JA5kM?uY$f5d09N09XkohD^E=F}r0!i%+j6GS^5^JP&twd;$2<2>?s) ztIyH@I#Qm zsK;5wG$a&7{E{rZFzaJ3QL?5`gFm9Wsf7rBs%B6SuVr2>{${b);YWa`cnT-wHy1>S z;vPV#rtRD$%|;u!Edh_h&>#2i;HrWYY&|i zZqQsaK*j%2`C{oO{*2?XOjQZmYcL!+l|vo!$aiBN=(Y**wBxw=IU6{p7S~41m7)*d z2)^%)^5D9ZR6CDL9=;%aw+G`DEtQUml>{KFL5FJfZP_H-kR-59GHhMUWl|6$r7w>dJ6HUvU`2*KBwK=?GructI_FO&zI zO2jM(elUpJ3o}#J@AXalg^HiC!FsT2yqan=bUx#k&jTo(JddXE2+H2Z67`oDU^ROd zx54J!OPO!~Rod)Rl=~^WK|qhG+hnsLC^95>Cfy$y^nJDmKQbf$I9C65bN?PS&*F`~ z6=hm2e%hw-3zft0yr z>;<*({M-!+pv*WzRKh962a=L?3z93Q{VLzVSUZ;URvQ7h!r6N!QezC1=n;UQ$=P$3 z)vmz&t`Y*cqS*(yJPsuph|h@n3J7vM^n?1D9Q2-(Y=Hir0s3QCPz(GY*d^y41S^i1 zL)RX9(b|>Le7y;Xc2eeuR%IGC3<%p z<`M;@inMFJ_{p5U+l<>w;s%>x4z})P-%|<5il5Kf5YK58=~KQ0GYrX7q+aYf0>xNF zqE7G_We$^)tAaqp%f)9=+XyxfVqV2y-v~ias9eV?trG9Scfhy(VJEvS3b=kF1Tu+P zu#CVa?H7VClBh_ZDsJ?v!Wp(RvDZ zo{OB$p?y2W&+f8;yEYs#+);%O@p%OD8&Bwl`FO~8Re$t7e}MOzEX^2HLFdGS%l*w-g7dL7XIK36PG0gx zPw+I2I$C4dk{k4~2=EHx>5C?zgDm~pgB&^KKP&zWosE#5Bj94cLhb&}+3n_Aiz@ij zbT(Fgxjf~}^)`w6g7+mF$zrkoT%EJ84=*VG$N*&~0|;`Fi(7YBr{*MBPuYSj{!pC_ zASOWCnJ=-?=A>Eo8^dbP>f;M6FnT-9*oa9NBJ?UCh16(j4U#__V(x8-;I@R3sP{f* zQ?I@T8KC_(K`;oEf&Xsg-Y=BZpQ$Lm_w(l~m2a)4PIbF+3Wm2@7`0DUAz}eHt-GoI zWSw^d?M+c*E;`z!7^0SDZz7h_@^%4MSdDT&%)}U|%T|n7HpNtYX*|H-C}({#2I$ij zBNoqe*yQDomIGd|w<&k730Ewjxt901iNblf4oM(ZeiS0e|Lk3~^lGyLZsmTRdL;ez zqXsFUSGM|Ll3y@c()B1PsZxwsK2hPjA4M!}QDm2J3~{!LV#Ly!k2@e*ddzZtlp(Hy zp0ywW^loD}_!PNdy4dC`I|^*9N0njq`*dEcll2AvdFAkvc-^hoZvIfG?Qk2cKDlYMx%zpaawW#XwNbOqBG+Ot$@4FSKbm!H z1M?TcuvZZDj)72u5jesu2u7z{gFMh5ZG>_s%UiXF@Y6v5TMM;V;}{d7Sbjoi)^uZ~ z5Wr6ep(p($uOB4vITANf+@rTiK)40~>SW_e(rd)JOHAL=e5x0t^3A52mN%~xCK$!Uiv^tu7o*SXjxAelA?;flRyNeMpE(D8kSD#`H z2>HB8If1oZ(tsW$wM&A=oxO+COAa$#{F@m<_!5baQIAA|5tC{ezX1Y?6ua6;a4~o= z-a;Ue{|hhFHo5WkuCkcS(kL2HA|?7BCCN%tUHAeTb31;o_rNszz$KWf^T$wXL4aGR zI?7K8?WTFq|Gj~yj$jBQbgOi#en#jWFa9w`;3<$O1Hn={b@-Bq8X>C}1Fvo)1auSV z$MC1>ActTh1u#HnUI5+vHJ^8F18D4BtRd2l72|2`!tsgM#-@8ZWgKX9U7hZ%3bt=; zhOR#M8e-PxIF^f6pu)SLSKu?RG4&m@_*NJ$#kTKD;snFBdc6IrCKZG^wTh+s)N2dH zI9e;+!9K{Z@O8#M2!Vg|bjrevHT!j1?@K!fz$KB&*Xw&qRP zK|wz;4v~G<^}c?@%xx?8&exYfb#OBPUq8aRwn#fBY^?FyC{x9$UI}#K2tKh6sb%635lg32g{4$iETDKF6%j^(aW}D2A^s`y@@p z^TYOfRBD{{eohGMO)yZ9L+fE*>TB?M*hCwHv;55wf*Ge53QZwyXX&{b%-0cnfO$@z zMUEd3iq;|2V7d+v+R?Xj&&q1$SD_bj`$Ok&RX-&p2V4&9xjZsF0~)*th}A4i@8^Uz zgdFwthCxSvX6H*#)D>MoJ~bPzdW&nw@uhfKMFLV2Q`P5Y+w|0@xk2uZ0SEkd9iKqe zsuK^ZPtOJ@y2}dZ9lilvC5nfs$F1&dkDI5%CU3E87N_|PZP)_EC-S5WF31?I+_w1y zZT|tVtjwhODWF_-`n7-3uNYufLx{k_MEiMvRiLbE%;td7MEj`C@Bi5d*0GX02Ou$D z!5C?q&%#!Bpy$+IXE7WqC9*MJz#=`(Ct|COJ613)k^#E7r$YgJR(?6FbH1IwD3p+! zpk4??D^#1$#Rde>GH!?|>b@4aC=Im?)tt14G938A)iQl*RSs%;_rjbtz7E1XQQUKJ@B8e7IvxyNh z=Ig$o{;2X*1lOb4`-nWCd4ChCE5!J1yUdzDbEmD$m)TP&o-6<>7u$l*H{H>maNfo< zktUxZLJ-Al7iV`Sj#Saxa*Ns*@g)-@sI)Q=13(iaG|(%35PWvFKI&x>FdrrWvev3J zpPcQ#0E%f_f5r{~EP^>6>J60jAZ*n20r5F?iC_nl0xA^~-MXp>x8+By&7VUX^sIu2 z__Z9g(4XZ2-EX{n|AIp>WL^Pk2O_u8nvL!EXUCY<7&*#$vibIi)RzTCj z;?_zLK-s@-ATTO3M#;UzPYo{o^UPmKCO{=kptc~z1E_Y&w}#lbji)8afqI6W2!Eyy z3f*um9}`pj?@CQWV3W?vAc8EWnSS}*oIzTy-sfmC14ih=)#u+L=pgzl`ez{Bw0E2emN~T;dESYjjsiqwW^bG!7ow=DUUqeRJ zT^pSYnT=qw?N8PLf;FaR*11@}G(yt+!8%xPOjS>VXfndIfiTSJ6V>D6CpRTjOL9+4*A)*%ZQ%l6k3Y?k6_TuYJgukeGBy%nGH$sph7ky`ez{=%S zO$>^vo#ida@T{$``g^!Uik`_-e66o%nOWq|*!iko8N7vshJ9V`$1-Q(>R%Ml4@MAQ zPNmB4`{4qjYvs^d-R5`v{8>CC2;-sO_K6N!zx(R*1u%{Bs`)KH&sDp#sD?}aty*zG z^BaCZBuSK8R|;8-a-@|Nz~{0=A*yEO#Sb8=2LZr{U4GPWYbi-E4`50B)jl!ASJ-xs*wVU$U26)(E4*%i*iUF>!;@OTh#dz6CBD}ZNdCc)_ze)y3+@!rN$(UfA!zp0H-b+u$SnQb zWBa|@6+_GoP4nECIFo3n`xU_dg7T@{{x_PxZz!K~FsAwYULVo9jrMYP^wlp-JJDpX z_m-dNDNy^=)>6{7|4}SR8Fc)V1U~3@JrW*uv=AZaN0Tko!_p^)`OQ1|4H5LCff?br z;iygkt5^sTbfhI3#nI9&o3rRRl@@Ti*?{-SG{mwPB~ZH96-^L35Yfis4iM1?y=#!P z2ZU~k17y9X!2sgXE(7q3(LoiJp0kIB+JMe)u#0Zb3K4Xo3B(z!hHB2<`PN&wU#cPm zEHD`0^wdMOA)cZ<{9=r5Re?QVbOXjYz4|BGPn951M+mX-yPjjok_$C~ry+ zdU{^tT=Nied5;SrYc{0^9Xq+Y@w!LBsAfWtOH`vD-5s&B5mG+dX`;b?5`ehsS~k>!Mjo;MuGjET@b?=b zU~zkx8@WD|T$ATUtEvL{WLcFD_b3l>6U$?Z`D8orxv~U+DTNAM{a~qj=n>qj8vr&F z14GbFpt~6Qk2aWfziDR==*g$vS4l*h%zFXkw}R6L_#5BeMl!{X-#rdoBbt94dnE>zi3qK7rdGM8jC$&6e^L zI%PX3xu2@ry2q(qZ(&xgy6t{O=fzm3fJ|K9#e~Bh6*p$x1_W+kFd=`9BfS79rdt9E zH;j5c0U_{9@u86QO-BazfVoZ9pY(&+x2XHh7l6eddO+N^pWu@M>7W3=0H&smyU*MP zfOXi73n$V}t027Tq9{``S zZErzmH;>tNA@p}UG@y(dqWk1+e}0h(tIGBgh~<;07+M@Au}K)C4r?#y0ezcTv_GSs z5+CuIL`&QdQ)`}jK;MSRexi=*R(4p}xl`jCBWMi=XXUO)1jH^#X9O{A^vecwcrZ-5 zJ}>uXNB?yvA07}%W4_(b=ZFD-cQMbq055roAp#Bqfw1Z1L(F@6jy2FytO))MKCVDx zW~msDoEr@TbU&d}X*zl1$x8Sx^$vQ`sDd<6o4yJVlh&+7a^QTe^zClh=y_u{ZD?=I>TBlskj=>}+ylkg4Xb6g^< zbF%;W!H7L_4ZaavdF)q82OZ_t`eCkPz~v_E%X}4P18depc{ z!T9+N5OTWp_Vz)^cfmA50+6$*VYcpPb^1lE*Z5l$l!fVPpXKr=zpIPf!0TEqn!DNN zeX;z(oRilKLKfv-PUq53}7m&D|MAV%ygL?}d1Bhb&^ zpev&sdT7jh<6j?W5dAEVxZAqiP-kG@SV-5<2J)V7sR+ImSyBFI!udyyu!`=v5Xv+QZu(a>5a5mM_mE&PcZv&wey(=gMIe8qTGzd}(c(b->e{By_$P;* z2dZQF==Kf+`3rx$J=GpQkiK>XL(GmKo~HsbM$M}f`w5(G-(WGZ#1LOATlB`y-~6?> z>vWFpXKXsT#rM&d^Hj{S_meazlsHKiI4obwt3@&W98G6prB(UMp|RLj`)cnex2-wE z6GaU5`tdy-;j=stx^i)1Dq~Xh}aYyCiZ>%2XefooTP)WxO%a`K9 zn0akv>i(pizxa^>P-y=?uP=?|E-hV)E6I#2aDTB1qqjb(yE6Q&jC^c}-CGkPeu%uY z+;0fACx_c+vmsXQ=lhj=oG=i&7JZG!6+Tg~#H^1da4H_(2>KPq;|d^XZSzSDiCgqc zE@A}2Q1^NGJZobNieSsjulE*)#vz73Tn7NW1z9pKg!R}%`0TzYAwPD^%9(RhAZtjP zVH<9fjjZQMm-5a^xZans=w7AgR>JeCSARA%H7`7#DIn=D=_L++Qy%Z~gFdFf&hn{+{pmmoH9MqF_1p9e|HwYq8p!f?B2WHk$)NLUHiyTUhT`#E)rpp9;$ z#~W~kZ&9v;5@=s*-R>Erig@#~n{d4=d+QP%Zr=G`?uwpR>YCUW!)4tU=ndeC9@?zh zd3rIk#=U*B+lJ4Qw$~fc4LCY4;e|q01XuWWnd!NR@GIisej!vtaHS6jHZgnfOswzq zuKZz?q)w#A46SgvD}EU8ZVC0))+N5^eb@EA^vUlZnohXlYn4j|MCkSSx_Om)y}s-F zO{0w-ZnI2fs^qEUKv#=Aa4d^E{EnF--@xjf7muqzPMBVzn^zJ2)B5XuuFC4GfXPDD zpPNwO^EY`VQXIO{lRemP<%}mn4LdK!J*oNc}4;n~&9-EeII#TouNXy82U2%O0%7d9T%GoZ;q8Q1-C*P|-FyuC-I^{D(X7 zrjn&J`@K|aHHSOv23tO-^tz!@$)PUJa8o3eW(U_>G;3=1v%YwxmzX3&!`^F)HUc>SeKzt+2A z_8>f*P9x+*u=aWd>FF9y8g3KIMp*5Qu~)>78XGg4-&hZrJFe#4gJzND>uU~IoQ{{#PwxHRpCSoRdI_{qtjC^!BXu6HF6gUG}Xef3jD=i>DxP_3yhm7D6= zM4n={mVE|hO5i%k0oxxW;1PtI?5LRSNHzu#K?`@S&F zOq?KM6#wx8d|8BDbqt#VUda^$_@X%LB?cVT`&#cy;$*)r_v@ZQDp-%B-?p*=)VM{4 z>+xcH;Ca>pui+*;D!R|C{R6QdBhuxk%FnQ%hnw{P7Z-om!M^^z-pzXKzD#YU?YYzz zu6N}!f!pL%s+T@7u_lKIu4Jam-z@h9bFX(LQ#3n8uBsT_@djMUOgvBu<uBZAzy+%s>c zruo?OxVaGU1N?wEP%!$xjBK_%({CfYVo;Al`Q9jE z*$5POzi%}-y!ttVrk20=Fp1u8_(_w=WQ`bs%laEFa4M62-UREdtLI``-0Lmo6g0HV znTQDfVsrvPnf4O>Y8n9W6I|w@=%Qph@P+YjfSQWE0$&yZkPk^&5j_K*7=x&o^YD?S z>E};ih+E9QWKMllOd}e)-j7<#dP+OYN#tJQ%I2yK!qd;40AQZjA>t4`&tzBaY2tJS z9WCg;xTA?v&SCK{j6f{G=~(CClARNsyzxE)Jt>cJiX$E|KI#=KM74z0 zHB2|Rg5dN~F|wpkxbntH8YQ1@o&}ENE|5TR(<&vxF=J@D`4&X;`r&bX`be(XEjZJ( zubX&*8F5P23zM*7?b7hZbaO6LtHX^((0)mc)9H4yR2yu-lSi<$75mj7*u4(NsQi(O zdt`CX_P9Z?yPR5J3J#2RA-kB*ef2Pa6e;QrqZXwBO)`<>+h*|65W&mh}k zwK1b!k0REhp4uSYq9nfgYw1+7l^La5f|tLHPCDaxU%k*YCAFbx-SP#!fi>oXbx=eq2v{y)j?Kz{qt|cs^}dm5+g% z#A7glx{~^s#=v!;SBBqcvLW&bfT6!&6w^aJ#B!}a!4lu-2vie1gEY*# zvh)3ZnwpijV){d3_71c_e>~h9hbfgtc|83gF$duJqyWmMditeH2S$$@R1jJ0ji}yN zPdq1Npw2q$Y4eB1Y>1Lyh=wr;$@W7~VCJ;l_#yCdg|Ks)*Lv%noPKU5p%LXoK=K%f zdNM%Irl|eoOj=g6Cpx!YrJG0j%wZ zD}W#RerTLCIDa_Bw=fAt)rX&o+2`X!Je>A;YLkd5{)H6?%n`^Z%5Z0XZR-i9Saz|# zF#^GSkWV?usRkbK%>0!+KiYP`c8-IK5u}z-aDm$IkJ({35c#88FRST z_y(m zT+acnFvSRD^Tjx0$Yf#RBer?5R8ItHnGNwiO8y73^E#DU`NHZppk_w2V}B6p&7Bsp z*Xp}MRsKdg#Z-ChWaqpgl=EZ;SsFl;)6*z_4b{cJ$4AZ`aIxp{bts_n8GZzEzP|GH zg=QVL8()V4V&vCaPZ%u2F^yR=5d_a5XY&_Z-tHq4|pw(_lgbUnDVX>7+767{sJnAwa;2hYFND=gGH# zs`cw+6|HPuLCyvk?dZ#ih{$Zi(U&*WUj%sp|FuAXAxR+uhCDFz9Nx)_3Z;5&LR>aO z@TC$6?PxpE1sPK;E{Lp7>WV1I>Q6tVD^F`*=R6mU#I8Sh$d2iaG6nHJZiK31_g2I{ z23|GoOcQhC(aNGH#`1?BEs%KGQ7b)%0RBV|d5b@*)#Htb{^w%!4WS0t%C4Yph;{~H ztUdPVLI44kA_Sv0E0g`=j~=%hu!i>Suk17D?b!vNu^e*ajKr1><_Hu;2!?L%!KG(6 zDE+u^#0$X{(>$MbJXzV~`F`UxIZ31T);_W7iWmM1BP$Ej{futWRUP>7OhH@=tB=3zatm0bGwE9)cnGBNZl53``7wxBy^; zD}X;yK>&ClLAfjy)Pd=X^m)qaK+)?-BUcmva^KW9gj>0W*^%|ElCpSjr`RSQ@Ds=uSJnWL}Y0R9EPi)K%k#%LW`5`GnRSk`A% zUvr|&fJPcTW6f(9(>PyN^;IVzQmKdgp+A@q!P}U9XvNL)XV1J4>GgW$W#D{}2Cv}N zQ^{<>EiV`}ESQ^SHh_An%O@+#DC(gBa*fjj;-0LcuHkZ%NEj~8-}4Fuf!jx^Etk(z zmM^+gB1^rlR6&}}b`s1jo|X7yDuxm;!gx%!g4r`;GMPS-Hl(jwMQNZS1UhqI8tf_M z5)ockTpR3X*}kbSoxK!F#bVH52;j?R7q7?$Kquxz0l%Mx2$!Ea$~_l~p}_ciey8`4 z25;G*d;x8Px%r>QY6}2%(EQX9!p4*%6dU6UK&y?GpE%k8O3_#lT)F_dh8kD*1rz|* zKUv$8dWaAVlM_qKxU$4>YaxIym#s}2`%(K9g#JSC<+8QJLY2stf4*Lb_P?&~3uvoU z#Jp(|LI7VtK`%<&+nI@AzYvBmp>-GLpAbS9tG?e4VO`V9ZROd-_Za^B?@ZH1FZ>13 z9%T(%e)4F4m3AUZW0Z;^-oH()o@mIx@^eQ!reZH7UB@gpYb052S5JnCllyBWEznq` z3!rDy;%-|H0P=B~i#X!UWQ6t8w7A>Wvo~YqLOt5QH@tV22>Cxvcr8Cy^dcNa0$GKuAtA_T zG_iEsdBEPEjzF@(TRpVznq z+4#5-ntjs1PoLM=2)R!CjWBEvfuH^#2-WnZ-@Wr+Pa&qBA@~>hE^*g+<`^D+L-fat zRX!}utCD8L)3Y&*-(4s8G%rYeV;^xPD^Y0jkE zzmw7JYBi~i>w@OQXf)fv9|9SDh=o#f6(^VaZ0}$mN(MRAqIKD%S{ZkcBKYIvYNtZ~ zIWc51MDV?GMobS4W3HB z0(zJn`H3zFhCfd3xn^g9EIkD9$1C7ajzRM{0JtIv05kIQ zmD>{!e0>PS(LoYqF?LPD_z1(8gYA6rlv+^?zlY~akfzc^7b>wS;4Tok+A)bH z)d)mB&1wZ>t>m*1L@qrUL=ZOGui+SoBV&BY?@;l=G@(yn0Bolaist5Uk%9oUk@V0; z86rH6<#*8G#Ry%wMiA5q@&|jQ$7#KjdjnQlh~Z!9Xn_%b0dm^^$rTK8qZwlOxB3wO zY8*P!l;K`J?NbMyrPDKu5Z+X=u>5YFdEOsrJ*Ljw2B8;$LUhfo;1_dl zXgph>{88|jR(-B-`OG76S34LypKb_IcnRH#$JGM=ekTiHVNPAKcNz@cu2s41MIPpr zOcZ;dYQ3mHxOVA~8_CpB=Nd<>pT%COFRy>EUsZ+F%@qB)zCGY4|Ezb@M0-75FkFhU z(7lvYvi*rRa;y`_j>W&GvoS{N_6GfVHZOw3!aI%CTVwXr^>(RoCNs4seeQfzHIg`j z&}yjKs6jFl9oc7~y}T4AutIU*?0PTxNumvK)+3!ts~2i)bafzzqRMSBLBDC`(N$Kv zeF$H90zygaP%+0rXMw-@_p=H}c5aRqVgsS4;PqO(hgr$Q+1R;pO13{x7 zn=!%=&^gi!AyANiy~&JzdqZ%oPtZ(Lp~U8E_!XB!1Vnrb)pIVv8&dc`&`AF*+i>e?(MuJhl*~t$<1O!LEFS_?bP=a( z{rY67WW9ThFSOX3x*XK*_zrlTDw{6JTi*1!7AqC2uQPyL(RxN*mbVvRmbaxH?g08w zzAy0&RjNIVdx>wT)nCOc%SB0j?S@=fx2x!dc&QKMUl@auSxNz6s@Lr++7On@6*>P} zKkX^}(2}grr^TvZbjkHe$79Bw+f}sJ_v75Gj1v2K11#HsFP8&ysg%44TpHIi;J^An zxP3(#yecGCVou%c|`c4q@2H0Ucu2trD`u2nCMKKV6>QBm#E z2s(#=P);L3g8|o!#^Z)EW$E`2iQ$wPN-T?X??zjp1R^Ns1jMO@jaBSLhCfdeENRA6S##)0^UFTo+sdA67Phts3yES0(V`wS4j=rM77h-3?c z3j7T~tTF%toU1Zb2tZ(G zu6mjLXvVGIzWENRjz_VABvG498{%PC40Ehs1hbpnaX1?QQ*ZWW&`{T{-mk-xrEe1C zh@fB72^5N~%}!e=Z+FiJAh0(D;P7*ceS)$q6ALu&Wpk%pinom3G>eAUN~HK0`6lOB z^|zlR+Rbg`i4I;5ntK&(cREhqwQxb`L=R; zKv4ul4D%adnp^Frie7|T&JjVcapGsFb!Z?f`JF>ztX8far|E7lz^5fl0D{!zbCsKL zY+xfOJBA=cfllTPEMnZ;d(c8XK?pLJe@H0c=N|bYVHc|M6dZ&O;lYLKra1OR` z3S~rdZ0d9dXj*F{0DjUEM8=2l9`(_={N}yIVAVFWy-+`UIe0jGAzKy8bwC2LO#kQQ zUCFg%xhs}`Eg!k6S(p4FI_LpWCWtmzH;&O#vE_cw5{>2B>zXJ0=3k+Gl)=_iRKNK1 zbi{4=Ib%J<@NKKIhLcNksr8Wjc{=hdKPM0_=3uJqx1gq^n_P!YLQJapl)6HIpyH^= z2|x2R#h8=3KSl`ZJN7`&QwcXwSZ*{B9pQtj*MIV7>WJ|x-qU+k^om}8TMr#&;_MIA zkxl%}L-r=OWq*hjLl7!?8_6H5lP+q}OtqD=z8jsBY$r%fUfeZES%&~oS$p|e$B3)D zyPjSG6r(0uQ_vN((3&~VeKBTXo&!M0O4as3Ul1V5>7;4k>+04Y1qd{$D}=8m#k@B{ z?Yibl1c0-q${|SY%-*ibuawLdwDXx^(wJxlIi8Kx@*DIk;7b;J{ksJC7gki}UiryV zU4f2rsXa_E5Ch&t` z)kq;mkN^@dupR3Hesv%GB<;y|DY;y7d4U^9<5x5ltb_MtX(llR381lyfy~x^_=}E5 zj4st4LH-9BdJ^wO6G(snMr1_@q*L}_EngU5QyHO5Q^G;|2MFu%##fB8yaaQIrKefl zgD3Q42Hij#;icFUOHnL!`ILn*y0VVLPzW*Vxj8W5uRhmv^kxQo&=IshXijf+ z%}TvD8ojtN$e9kBg7z-vDda-a@pXZT;Wtc01YJR!NdHvmgSv92&XPHIgZBp_swS3Q zh=unL14P7y0$oqOFjiO53Oa*;v5uAyCmO80j3AzvJxEmGp14kbQDYzVrt{11l2gzS^!Fa-qr-s(!Hr!m^vsbRLV<cQA{UOr$8+BLK6%F99Q;TH*J&$~1${PxTD3j89}?wnm{MvIV|@ z{39jgFYN60YudtcM6g|U}Nq_vXLkva#%qC zH=QCxsh(XjsFDfpOh)L-uHm2`Xt&j#fU@Z8hvt?80adSx5VucSz$n8@|5Y#FOBN5p zu8%0`)0nD8zR5HiPZBn{4TpUnKm7wJD=Qf@Q4s^?rOj>tuH6ZMewrD?`6+`E9%8bC z98duQVUgWxzk1`xC$cr$se~M%czRW zPy6hFD%z;^$gS2G0F}81AiE7h|8dZe;ZzCD?vS62(Cg-iT>mDRoY{rI=m{(9$!>qp zr;z&{{eT%B;z}-tSXEzTb~}VNM0<|qjykDDkrE&@y^XWmAS4KjM&vwbw%|RCZ2B|% zq;cXki%gGGV+&VJe;1;KZM%EeZMCPo67MY|vc zAh^%-O%=pdS_SFlWZxplMJ8sh6I+x-3Uev5Zoy3eZ2&R|2HD!^K5JUpll}Bh-oyHI z102EwQ-+d8$$G!1_s<6ysXq1qfq9t<(|yRrLFW>KhP1pXyP2Q&6`c99^2{KlAW=dK z=CX$f@{r7XI{NqmP{t7f2+G_hABZ9c;zm%G4ngp9ksX9h=PigcerczLmJfRdH^$DX zQ2K_eVmz`gb%X1u6MX)?b%K+}Tnxs^)1JXk{DA)U?HX)@1MFD5vYrG#?L)=Qt@6^L zM!IjRED2$OWLT ze0GQXY$z-I?@zne4|SlkJKyK;%rpqN^E8BjvoQaZ6Pl4{Z$u-x0nAOvJ{24Q=tPJ? znJ<8DH-ygw2LKXj&Xu5MLx&B>e+Ww5z$bqyp+t>PPzN(|EeMg_o}R+oB)oStTWFv( zyWKpXakk!7vga$VoNkMQHp%>RI%hEEx|5SB$EYTgVxRkMueXw0iVVu~UbTif`}rL# zCn73Q;N}WcxSYvee88NUxe9KvZ&lG&ThzMnGdUaJ*e7CXK3rCUakRxO13!`T?%>JC zLxpd}2=W%XAp}j4^|CD{C&4#@8oW8k;`|rFFw-E&;ru6p=K6Aw!TA$Gtj(nzojFM0 z%$cubUtvX3(QKi|C`jL|iXj;sJ)FKkAq@oZaf}^e26Okz|-`zMl5d+4|zr*9xG^=ESe9` zK_d?!4vYBHLHo?Fbf8_+HW4)Hq8t2lZi4B!)7Vv9lVDg=h#)YDtnsQheKmk zRADvSBjS3?S5;o8s=B&KsqAs0P|zP`&c8@MRMt zyDUs9SFxEeAUVwDTKWAu2&#+|)e|p3^gRPWJXGri$sAM$^}`$p8Vw9ACx}X=XgSE` z0Ah_(uZ!v<)|}rEzC_k?l?>OCLI7VP(HCLtaPlfj1Q2n%(RZM@)AwRu6bn<+r5Zkc zkiaQ&oaom%7xoR{3nCbRTHE?%{zGqHA}%($3FpdoAbm17(L1Z3RM9sbA#I`b`Zx~C-bj9~Ko#pK%K@$1K$i1dp{J*_N*_oA)agB=1LPOc%a$Q_xWtSD#CS@dK@6C0u>spt{HIwX&d#%ju ztz0wwj?ee^eSH7BkH;ht-Z~4UN8OY1S+Sblf(#g}^ zjie8!g8?adlpI=ae}ShnQ2qYh$LKp;X}#ZCso{j;zGCjweZqB*`)pQc8Jezi^X=!4 zuC@y~pGh3YVv#jto?m|WhPU}%U@p$P9{wA<_@fv6?_?+V-?TuBN13V6p5^(`%EO?u z1emB@ALV>p%fG#gx?pn6)3-AhP8S2gj(gbGr*S`kvog=-9})%R-$W$cRXgbwxH#&< z1fQk`Uu*!!;&v`pg8wbW1)qKh{X6pqG2Y&{gmj)l7 zww(70w486WTx_{-4W7DR{2Tjyaq;zH1#|HSI262j;c#(yP82wAzKFUw8EZL1pJ`ki zTb|EfxIGNIanvgid>D7JzjHyHJwL*W0=Ic_ntM*1tqX?b3Eyy1K0i6$xey3$2oqxx zyAqgZ-1HvFfjsBeU(!YV%-_;iq9jkIExIC^zfOWQzq7@AZXaB!ZF-u^X?wzyb7#pU zhE^Kil@|Rd!}Iwy+lYH27fTM)V`YoZhza$6Cb7ta{vx$Aso=xo ztGxKkvquX#hamI_ApI(hVgK?a_6q$CxarmPv!(X!V*uuL5Zl5{bXB_cgkEbCq7UE;TZ34x<#q$zf>gq z;^dcR>fRm4}I@I?b++@TF4eS>%ghK=paz#`#!6( zJza|j9GgZmVum%bu_8z`KAB=8BO6a)e3M(OijTR#g?WC&+<9F7* zWnI2ACrYT(zg>w^Z{T#U1FM^iy!@UulBx(oIiA%QP>N>;E@R}9sIZnL}&S~pPzM5D$Qy96C zd$KuW8z=Z6T~+h?w+*Z&IpSW3Q-tw6>nKaJ)Oa|jzSd$h$*K%uQ4i!8cB7XY$q9`= z*r!|LMzTYn1TiD(XIx|{mPc<=C+kmrfR&oSV0J1#cr`IAJa}l9d>y@xydj;5lxnaQ z#g-5?@vNg~OmddFMz5CGOJ>QDGxYdhZT7qR&#Q`-G(nCOSlA=%I$d@nnX5mOMt)G3 zgT6EHjbukZ=Y&J~jDDosrB|nnbQ*V48(xzDi(`Ivqdv>NfxxzgY|4oy1Yj*$;fVGq zTP<+k%LvXSvE-8#SO}4Ye(eWx5pMZJyy{9YYsFibn=F+unx&>{ImJXqSx zRay?_u32bHMgH>P3~)mcw~x>qcGz3olu zx|AWMt}V^)ot9KVB8X!RdRb}?r%w__eR`l##&FS^JM^Iv&SNy><$}nA_Tq&oC-yT^ zJP59a?W91o8ycyM8bxNZK^}n$u~3W_89o{X)ibK^lh^i+f$6)-kRq3=uuzL*x;w`0 ztsEhO<#v@2Gy>_>-lP7owI?(-`4Nx!gZJ1YkZNYR)5JOp$^=Y#kRrz=VJwb98j{oo zJ}NLeT)lzMs_Wz~tFgk>u#l7#GX|7l7e~LmY+?!VY8Uqu)km`-;O*kzppdsQusPtO zOmro$4(K6+R(@ss4F6PTpwr_HZ_=0Wg;Oq3^M(7u z%PG6)zmUSj>26=}`|bpmQyx%ebEPtI{4E^-hp0VOvA2xV~@9MNV)v=RQKn?d6n|xgxB z^5#9Ji=y`%D#z{1r)HOCU59RA*y8#`1}pwmx)n432pSjhrITWHX7W*FolIh&+*Hut zTWcFaeV^SFhNhjR?J7ma+vOT+jpIt7{8}o_np}XbDmRv9Dh`O}j=WeC#Tu(aqx`M4n6W@6gGeTS+^sc=F zvz(J`aNt@eUy?yK(2!CL?a78OQ%e*I7QTnvivZ4%%yn&mX$pNjWL5dD)nahLr%AGt z&Hb@7R_e-^k7!s}6|Z&_CV$c;WuC%YE3QMoewA{RgEa)cfRv5f5H zM~jh{2TaSi$|Wy(6d)nNs{gyl{;+|c=CbA4=M$koQE=UBuIabErUKSH3TK?-Qz_Ow z`^Tt{FGYm82TKY*s zPcyl&@e7f0x8kjFPhk}~IkK*=-=aphS4_CCvV?2=|>S9Mja0# zl8&F`k28SRqeS0N{fb+qH2hfGFp}*NUDPK@S8V_Dbwcuft?l0cqmpqW@Q-;=ycUxi zx&Q7*w@ZNV6Gwa+V}AOx{zW>OV}rdyb{>Cn^0)A5{0u{+Aqmd1kZ_xzx69yMhT*9B z-m?ZPudA(obJRG9+!~vOnM-_uTXfpZ()UyreJWV%3YNi8^+L@X@_iN zADWu?+3WvfXrD>Kfl4UxiIs}F=r)xY$hGV1`C`kv9J{nRcU*Z~m|RE$FxAzighT(7 zx(-4iyN$x@k9s#Z5LFC55Nxz+_RZGEysn+{VGh2blg3wGb|q{jhl7QH+j0eR`a}WqRIsh0pcwlMaA(uO@lY<6gd5x$k?rL_8V4OKaSyr zU=-768M(`BvR;F10| z_}Q5`M=c_S?H!X8yj;Rp=KkHE|9X^H+ql%QoaF2GOd?8dhcjb8&B=^Tma-Vy&RzLy zqr%0hZ#e(uft6H?H0WtuS+eE&qRDCRz~=(rhi!M8A||)FUxAj*cxX#Uer?_!CZgpw z%4&RfUU!cTejJUKDxM|ZMlYa3)?Rm?XTNY?FoDdlK2v1$QTCbGD3QPpYh~{vpP3e# zKsEM1ipe1p+CF)#By%)c5FSR7Ue||hS9>_!l86!e2%Rt1^?gA`tJkkm(51h|*{*fd z&~u6KwEYgc-Kd1ceT+k@P4huTJw~d2R8!iU<)g<=1EU+o9}2Gb|27?tfod-+w0#W37u*dI8X8S6h;AzCnc$Q~VPVazVn+>l)hzhwNGRf9S~ zpzRT&xJ5eP&238@_$AouE#-nUNXK_9he+`xCCmNGG9{U&(;l)bhL~tZ$+5++vJ`{i z)~whkXiYeVs`e<>505aKKo^ZCmW?Ntj18ifR}-+*gK2e`{HKc{GyW~fB@OJZgOQy2 ze`(fvJ2qZR*~%C}Ev> z?p^?hG@3dTJ&S!ZFN5Ih`0Hq4Gj!+9(6xXw*Y6p^jw`m1TqXnA` zFvpXdvSX~X5<&xS>0!ITz->O_wS2Q<5mIgZ&F%#09Rl9X5Hm%36+qb*jOyno@xTX$ z3KWW++dbVL`^yzvQFiau02gAsFQr1u2HS$A9kT#F9L!hm2JK>%rXJBgz@%!}%O!v= zDhK9#qu-M2GjUdErDZBIfxx?R`YGp6@g@Dh5wRS@`w=%Ng;mzpuqgxnG2M#0pYO(W zjyCJePlXA>wb@TUF2tV_rDQcZO@zwE3OR7c1pcr^S|f5-uNgf9I@CL)s0t3|YMgC+`uR^DscI^^(!r~lF&YjD9lg60@CRG~yX-->P_8?(Z z?5~rpm5I}Z5{6rFRunC@7iRWbBKCuj1M?JSD%v1zTLk{Jeo>g^wkl_C!A9=4w{L%@ zEIDPlsa#9n#xV9=pQzwQmtD><``2R_NWTH-tI?7%iE!}yIXgaeS9r`@htXfAxe8ChbWEA7JLpWgKv)d z?=(Ix#Y4;$w;YEPR5q<7ZJV_SwW* zZs~t_%3TwbwUoTLnS@ZK3txvoVc?3e~~XZ!#f^9ZHyEx3#s8 z%CCg-3t@$e{)epV+4s#}^7S<{zg=8%Ew`7doxv5E6)$m@=~z_#6MnYSM3__zi&Kvg z*m@V3ad7fAxUpA}q2F$Ix;`CMbJsOVI(6>RwxDk`+a>$nH%<^D{51bp>oC48nDT+W zs70sWgs6mFw+?ImeiKM(mFo1bQBEC#wa%3j4vm`TP~1Jtblcg1)XQ zMKjrQOrA}Q%6W;#und{LMh#ROQ?BN+CHRcZEj_1{4uP&)RY4U(U`+d&2i&D6pK=VA zQmKTMMOzJx?lahvbf=Ie$r2L#P8vm;D(Il}hUyrK%B?p;&Y_pR|8%N`cX!e?cYY>2 zS;S39qKS8-;I#qd_TOF;FYZ*c3#Qo3kPI`}dn^}wfzt9G%JO+~{PrM3-kr!%dx6Cf z)@HZ%O1XqZmz!0$!d}n*lB{kz4PQbIYQy@+-`NZ^AfAE zU6c*pFZ|#=n4EEP%TW0}vA^v$=%wxQQnGP(cw_7JA*7tY_dzBE{=t}QL&Wzz)+Y{4 zL-+@=m=hZcvpaz5YHqx83U#)$sjkReG{0X}dl3-rR_?!>hCJ82e1}HvTYUTO3l`X7 zRpiD%n*o*f5Vb$UW{!<1E>I+qPq`CndBxEKM1+;wSACYU6ct~rhM`NR#LZukR(Fdv*kbk6Ktqba z1PhP;1B`Qo*UocUJQ*z^g5c4JQ>04zou?D&Qn#)xclFezu(Ex!@B>8VOmo~=L)ALj z41?Kx=dtgqp4>>=%Cf#@Y78=bOIAIQv6v-$)l*kC!*HwZZc$+R=rdh!RQUo_c$=cQ z!c4N~Ik@=APBC%h)=FuVtYFbAwb#u2cl*zBiZ2%l3i(;L<&5+!P6V9%>3-)Od4x;O z`oDV@%1B=fLi6B76#{RhI^Dy29SUnxZdLM?wsMv2o^X=03Nvr_nr$;|ynKwtW0}TT zeg-SuO697b&f*s1N%68Hw;W2Mu#r!xnfL%C`Lk5saZaaX0X?i)Dko&cu?dHVzq~fb zw^>6lPRv3J*MXk3*PHt9a=EY7o3b?YxBuaqiHUZ`G`ttD@NFC$?v$}VlkGlszNw}( zR^ZCzzsn#s3@q~98GlUiUmI;(Mxqy{Q{#;^BY(4LxQ+)^X7EjdzkA&{2X$iL34u?G zj()v*IqV*p5(I7Rp%C8xG}^G@KjF)GdqXfJIj7?!5Ia02e0C(>N$imBC2g$)XBMVM05{4b?6Z7QP43Er zX}7nkB8vqPV`u6FY*Lo9<8LDcWiTL|siUPnX|t;aGKs+vX_}fW{89zP{l{7ycR!Se ziz?LX*bW7Yo+d3Ru>>7qz z7!u|rvlhVdUiR0oph`%3#}4dpP81yUW^vjX2L=wga6BD;JnzWJPVGhg6$N=dx2gSt zPW;J^6(B)P_gzBYn7AQa+G@$M$On@%Qx$?@=4Vg2CyukTY;FNlg$@B`+`S3I*0{e3 z1V-XGJSZzWB)ZY`hXZ434^zHu;w|{@#SXlP z3lsF!2A`^Gr2II%fOSTc{7ptZ#370rx4$D5Ly%)Sk_5NJtZDn-MNd4r08Nq(%k0Ov zZ(|h5fIN{*{k$|yasPv+NOpw($`wliFu^u4tJ{9%-HQ*O1${}`$(e+S&f^c*T~`>6_o$C#=ZGYnxWj2>GDn z!2~SFQGaTtJAIQ>bQPRV*QC+mZ5;&b#H0F{RPRoW3$x*VQY)KSVv?{ z&_CAn870_H-m@T$>5Db8RmZxy{1*vSYe^t0rQcl{6ylVgqk_JXwaYLSH-JodVFKTG z|GUp%X;fycF7(M55=rg5vD#YA(t7Qo&r4p}VfiplUj?h8p$Fe=d{Gap>Ry0rlTcpV zchdge!@hL>_haCw>Hzs@f35YZ@_V|eP)kCIheSS`~IGt)sReWMTzhs_0y{r;K zCq_f*P8>i3hk2?Mh7+E{G5Is2bQwJ-@c5A*P39H(VG(pKlt#LP>8ZhYLxdqBvvk20L9jL>ul{d;OjfCO0x#jZ?~BI`9#Th|W8_QfxP;>`xs%-hdg8AP;>8g#Ci zIqUckGQ7X8%-^2T+vSov@HymQZS_a}XfM+-1w)v5mOLhDtrW?^(b(mK@KEU2Ob51g z5nn3Vj!Qv3#s4i?T5Rhx#Oq&J33|v!@}^_Op@qjOQhv>8x0^%)!b$`7l5fV{yC(2E zGq4~zlUu#DQYpcMZ;N(`Tgt3ybI&98pn6lAH9T+ zEcTa<(iZtNxoJqzN?Op=3!$=aH4@z-O_ms%ian@Z{N7<}=1%9v%#|bVwiN-XwDyoS z?0Ancr@YAcHbK9DyzA4Ps6k-zk5-w`u6Q^)+4K3-?+eP|JE~ABB@~`)fZ8Y1Cu-IXggH2_cXfzb5gn#X>3Lv&mY?%-d(r0G-8&wGxo4*agB*0-d); zR#No!K6NVRO4bpJ`1RYs)y}#0Y_dLz1zkp1e;m-E@k(YC;)5kIdtW17lP2rxb0)h~ zCc8KsPs)JLXh%VCQa}OD8%FDwCc8*(C=9fRCo6_I)qoxLCuR2H@;peyKIHu|6erR- zUC&jtuq{>`LlRb#vxl5p(id2==K~%y=Pg^tIlW=Nkco;YI(np=c%hDq76>ufPLIY&Y7>?Rc-zQ1!24RZ7E|l3ARF4}V;?VX=TJ zy7oO(P+ip>Z!DXfe&&Blp8t-19NsvJ?4tS8D=o%X_kd1>M16x&R8mC*9zQJdYi#X) zEcs=CORu;!TwP%;%9O`+2ed)_F|bkPG5Dxp@cpONYokz0**oJFd!h)=bdEU_MrYg* zK~3wsY8P}w!>1(f%*jdXjyg{pzj6uvj#jGb8`TXP&^1oZs-)CIa!p`7UJI2C{1qgv zZ?>J(@gLk8H+fDWrb12JXK3CxVLpClo9eow$YKe_>`lJw^>Z>7El^n3^mrV1obo_e zOAs`9l6GWp5s$boR`J1ZeN8vUH>lK(Pj*7V$#@O3Tfi9sAVX0%@<_pO3*w9tXkj9o zqjfS)?skM2q*t|`r4f{U!|!z751F-S{s4lF0?Eh z(}HGE6zu>0`~_fk0&X{QR+KfmwdkJCQ+$LC_V5ZWmq{DTN1aaEr1e!A9qcS zWQSknyV>a`6{PX1i@<`e=hoWBeHfWa%Sg{(-d^Z~>Y9M^3|eWV70?z2wWS~#$?gET zaDe*BIo)1r6;p|A)i+ngMxp)&6pgN6HB8p7s+2SyBp=A_WlV|spj@bofZV5IM z%Hy+5twoG`nCm9q?uWUHCb$~AFKHPzCr!39;=)679vq!YaKpRRCHYF?WQdF-QW?RiDX8Z!J)q{u{BW zUzK-*o{$k$xcy1lbyKPTb~j|MeVg56&Jq2~oOTD3?qSSH0QSvB3#(n^@&YuF|Irqw41lgepg_MnOW=Uogb_1} zug*B1*=+&;;_UYAN^l70n^;bnkkp)xQ=Q=CtW<5iL~4{|ow0ahR=s`reozUQmi6K4 z|48SfN>4aVvU@7R8sEWllpxEl5d>&rHddHaOH8)$vf4_{x`U&naemuY>9y?9E*NPJ zeLYX=rB}UQX3WtI!b+a~15vllMSm4?8by&Mw+EDtPg2G3i{srZOeU3`0Be4ppcW539LI3bbsT>ukzYWZ^@Y0ZD@V$5% z5@o8R{x$~x9l=P-6e7p%@P4a!dWaUpC#BNp3cbe2n2PUv_FaGlLV9g7+nz|qtA%at zo|z~y-ja|GZgT9mo=ERFkMiB&dj_#O@J;NwBN~#pFnmlASVySbEVnNEiY!^xt)z}i zPqBOg0|~e8!#aycXisGS!Ugg|O9x&FR4VrRb+D)_{cKMs@T(L~^4z^1@7RVrG?$*H zu6sj5k0_l&dwdjJA_b#rvy?V-pA!ii=$9)ACpQL*moT`&fGE5c2x;m5v7!uGw)D%I z_7s2r{biFdnv(eikk_52g@Sb$*D)4p@TYo+Qg^40iSw_s6klCV<)*TAnef%r2{EBV!vxRmH-E9j1!yMtM&BW6huOuLAor$%5{Nc{Gm~ zP#R@^RZQ(4pxvX^2gKL^thB$Kgngj>6%Kh+;A-tx$J^kp}AyaX$tpWQD^tP+{uPPtTI{M(BYwo^QIc-tE;$W<*cqa&H< z-;KM90+o`Po91!=COUjDQC%O=?0CIQ7^3aD+7ibU&tz{4iP7q#6|>}s^+p^-A?nxvGU$IN@rcX`sAe;LKT?fQ6%bBY$qN!lGy4lCmyf-k^dvabThw;N zVBF_T9-GSfC0r!C>>=E>=BoQVh=^q^T$H{nJ~6;gC2

        ;E<^;~MiMH%Nbo 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�K?P&2!Ea%;4j$*|IW;x zAT}~%9d*0-3Z=G$ox;hemRSm8-3wz`3y&?dE}rOSc`*F$h)`Z9|G%`R!vqC5`Pd-K zcQMefZe+Q+`FExsKw=TrCveyljO|OZ*~Q7RQnVT37ScyGju;@R5&}77o)2oz0iKIf zXx)D8Vi|4YSRpkqT?F}rhpdE1Zg0iku#*Y$wm)r~)7XN5)5|Bj-w~G?A_Fs3LSE&4 zo=dN;Xsj)ewXUC`x?Kw6kF15BzXGexAuie^c1eXiQ&$HI?>i#DY&<5c`OBmK3(89+$A(;H79juw(W zRD`dNtCqgYS~ZmFf^~s=7aBY49T5X3!iM+R9Cw?Twxk;pL~B(i*YB6rX+z--{G>@} zJ|22O-=57!<~>9lp0Dd|GnyT)7a?Vez4M?_V54xl3z8q|>d9n#fPXcZsB^OtijWo&XWVEOYjPl;N_8!3q1zvlx{c@%}_*;+QCzndFKua5m?Yby^7F#BN zIPUH8m8beF{B9j>9G{sxlm8rp!v3&4?vN2lObYHDuAZuw8KZTbp@_C8?wZ331ZXGb zJ~WzCGJV>lR5vp7`OsHkYcXgKHM8$VB?iLW4i#z^b)7(xw6G(?*GN0xK3eNe(_L~4 z>$Kex%VWKHhFwvNYB5q;BsR@#B^kR-(=&lpdq7}+mU>9B9`R{fdUxmdlV`bzwASaG z7^Y$`q1g|D5)96~BS02!Rkwr-|CnK1@W0gzcb@P|>Fy$SYVAscPfxD6?UhY`v4ftH zd+TigG>ksS=yY6r$VVEx>TeUrFbz>?v5YjLTGUc(A`zbCAYjp~3*05J-HS11-6NG^ zzz!f^IH*mS&sT>2&5WY81*zdJMb54EBGufRXp|k6>=zt7(5Dm``dA&sbU(#MW`r;< z)$#nqsZ>Rd9(g4o-*o-{n3&&?2tnvRccE8^>eHQ1lIrfd9Hb}GL-)%{^r!C&GrjrQ z$4%?}BcTTCUZd@>b)k~;#@TAH8I>Kd2@AGaCM-&__ZYegO2sfO*q{<8e zaQ{V~(hwWaVh`3HbMlLTAT4wAy&1mG^EfR|Y$IZyrY2uH{kSfg;PUInz+t_8#_h;= zGrIRgPrldpapYFIshLd{pqkl%@!)83u7COReOdGLLy#YV^oU{{dH}p7<=lNCXimHY!7}PJ7p3v`uT`^uWzq%c( zv_rJ7-`xP3Dek6dn;%4Fx`xVfT$dutvU*czjsuyj#ttibm#1c)`!HkECb0@%hKTi^ zMnH;i$93H=)rIzYm>D*G!t;H;k%pR9Iaf9>b2r$jO6wvC{j77aR=&6XT<20?4VYaq zF2Nz74ec0pvlp^`L&4NiN@Yxf)m_%KAkyiXL?$KRZfg6&|0i zX=l6OUe;zOah_K$JLe6iY@G`oRn(1HNuqs!T zV8A=+?!5VxSsVs9xK~>ozSOcM7d@TW^wiFIFIIIhH7j^A4m=D5`8^pms^_-PXTZu4z8Mqwg;5t+N0(1#H-G29^O&Wfx#Gy}Ko|T!1jChxi9{0&3 zr~9tc5DUJ>g*##Z`M{*z=l_S^>i3~`ye^b1ccSzu^M&_lC`)RES9-(EhNDa9yEu!K z+`O$ne81AISASFrv}qt3%mn>Zvk-6E+6$u}Dy2r48t3`udoL zz!LGd&q~*QU_iegMgI43OMFdxywp%j`3!}ef_KsBh+}BrIQ9=2z6VioqnrjKDTd$) zqi*ukciP59^=)4DlX}SXIu)fOGz>x8wpP4&xI}6zZa}mIkl(2xIVu7Z$!z&QBs7gs zKSP{nhECkghfK;T|0J*(b62)ilYQLjhOHpAXY*$akkdH)o&GogJU}_(yvPR{r*&bN zqf+|*N1&Oyq_Kr6s!wzdxv~22TcfsD8urUI2=ZmyMlTq-+2LFZdh|{QU!CSd*rv)H zVl+6e!<(F)#?6Q>C21mh0is8Q(R%wrcBLHe&yEK$5KS8)l}RA&S4luQ@Yj2j!{)dC z^-vXaRnW+p$5i0LMaOhD8#3A@{zE)wt+AzZIv|BA4vzH6RkYODcf)Ap_~n;(IyCCw z51~B3off~hDIBqx-za*eUY>2KCxaxda5pG|;zVtTmybY@ej4>zuTpb_@l#U>`Zk=l z=>M6NQt|E>6A9fCfK61vR#-LZ#^H{cF-VTAdqIm3D%;kM9l`QMJEG6R z3m5}&i<3Qbe6be?iunz31NtD3Hm~SVWengFWnky;wD$v;4p-b6 z1as?d%LX;i<9sfyd!pm&=)N*#f4on;`+|=Quy>I+<|*60!c>_FJr28|m7mk^!f1JB zjT>w^Wk$~iK`hD9QGkkq@Fd_PCqAy`w?p+p2$aEQuA5uo^#4W=Jh%Uu%Eo|}k&Uho zny>+bN$?Oh_yZYiLw;pzI$CTD-=YvIx%2O*Mxp;cCG4)^7(1lbq#?hUCdG9OCHd&hDG%~dLkx|gf0I5y$ygroHoR;B?AO-r)i9Wj-XEj}vT$$C z+>C1`@*7OmJncCmx3fh9UMAGlc#I3#r2FUuocKjz6Mc5JJ`10nsNtdRMG5Va z5olFKRWr=j>X!#o!H(D*DS)i~*8s27i`p;L{+*yKr-64H=&YOKx7i~h?-&H;R7f~J zGi?E=8cErD>eNeanF!#9%n~EWdgA9>yi_Ve#l0+3yvFdC3!xu{njhBr>;w2`(=|uW zRmvqhYbR6a`{;@rSC=yrZIuGM+;;-&_MSN?&vt{Y2TC8iB%RNRc8}n|QUDGge$gQw zb7W4JSoOxo*%Lq_MZcE6IN6PuU29 zd`?3u|Gjtn`L37={RP1skPrf#f9oSatY(W?Y3o%$W@n=$!~W-z*D(I$O3rXwV_J;zdWzyARaja^lVu1c&h81W9s9DDWm`W zJ>&x^jGU#gSr%+Bw2Yn+q-kUN-w3eC^iF{7y;}r+9fy3bc@9*xc-LNpnslIDWld78 zN1w2IN{qhB@q62p<3A5z)?j{Kwkj^^LyMF-VO=dN)0pcQx)hllWh&isJQp?QYlz+Q zT0U{**&k+s(rkOk>ftAUdA=n4Wob>1zW2!gl|=Jmi16!T&MybEPKko^3em3d)Uv-x zO*e4)pT5YmN;eN4H}o+`?S6?#m-lxH1>TkU^Qvi)C|jQM_YuxrTF`YwTxjK3p$+=y z^=!x(F0@p@9=#z(Ke`jGQgbE1g^~672?l!Kc2U_LbZY;!t_pv~k1W#xE~H>~Lausk z?ZXz`8FZ}w#Lv6VH(gy}Uq&Phu0kquZ*BS4dp6=6T$-{kJa*r#GJi4UZwpuj0`j)1 zf@HFNYTas!1^l+R)L7esh^VqO&T35Azx6tud`(&!P#^+J8 z|1$zxDJV>F5DxNl)4q8#SOwnTo6xXE?DW?@d^W-1V*$MzC;bmE)glJ2h87)1Fmn8^ zNFmqT)f(^UOYNYtn3rnL(!F~ccjiU?YJv`_!8LTaZ?%hWd*<*Wzt!4GBODw_D7vY$ z4gToOdi{A1xb3apD&Cw1=kf$CRlKt2BG2m>*>rv=?As?kuSQxuExfx=mUxkKWAP5V^o^za`*O*R;!GR{mU;?-%R~?S;&@e&Lo+>`yN@e zk1|%$e+&Xz7gUIeRT9+}Z>!fNwqZ1%zgRsO^g>K_=TFzL;=5X@#p3rB{fUHxJ!GT^gV%!Bq;9~XhG>``93)QPRK3s0wS3lB>URV zvvr^0d+eqK*{FmZ?Vs%twl-~89;{CMwH;c!&Xcv3`4#ANR+jx~Zs=vD-=~=!-x=mj z3+WN#vDL>4o{Fh&aV}%izC&YTJ_)9(=mk-J^rnKNvHN@5E!CQfI0&bIMdpT*Id&2n z%xAmF(pTgFFtPu$#eN(`vKTb$Q~|}Jce{usj&}QhQ=QWIXKv=A-vVmx=Ra>KALq5!+lNNIntNB*D4Zq&0 zSMZ3;h-U8D_ct{RaN#9*yo`=Ulzg=A45F**^bxE+yraYn4f7^g!?(lOv^_rtk+JP+ z_|Fg=SuBj)v6~vHLA2Q>+02~!8LZ%KPg{>Nsg{b}SnMHQ0@a&$l&(f3e!q<0s+QHm zUJ*KEVn9`*LWI_~O9FL4(^C&*B8CcdwI3Bk0wZf~W+g;%0?5XC10!$4UcV3CjWH7R zq$gpjKBYsfE`Z*S&B753bxqW?;%Potzi^oxK0_t?z93w0z2V=f&M-C>>l56L;a!yD zO<{N1K!+|j4I;Jj@aUw}WTQb2JJq9im4W;psvQz$Rv$+$A9fNyr$bG`gt+PvOPO3!m4;3KY~&ch&; zy(Xmb-ZIzx9n(5Pb|6N0(8sqlzo}c?#q0C7(%tMG)1n>pmeeIUa|@$Qft*T?bo8oG z25X6F@$RqgAq_)hbhZ`$ycWbz$rNL_Z3Sf&vov3(!ELko4R;>Uv^=+Q_~h~oOpZl! zJRAWa@womO9#u+5dw)7~ad==)h^BVjk&n@;sXG6;6sn`+;Wp*15Tcw~^!guiefs#m z{y;yXalesE8yInVUbk&;r<#AzNr_AEY&E0tF<+AoP+B;|o|9Rn=!3`DM~rJOSqRcE z&%NHQWMA`gR$1M8lYF&dB1J(28EUMw-u;{p^uhBhLc4|9W2VnEj59lj=NOpD?^(DJ z!mrfk#nHsm(-A{V6-C9l?c4@BTmgV}g|d#`zx00k6!7lo4^%uE!y06&aN+0{0Z$uF zSdCJC`Y(~nHD3$BuwDuxq~Z>m80Lj^a`UKFwT*S{Q0e`Sp77J9_rZ2RXS|ojOQuSC z_>9Ho>`!3rNW^)xflT@e1D8`tutGv}+DBZjwzQW|5xyjkEB5wWRsv!Swl}$HlJ&Jz za)$2xUkjo1F|<^MFJ{`Pgrkr<(_W_OW8pTl%+mybJ$4!Pg z1VJ{jprM5J#5W1MA`>O?WmFS;V`xnv3f%|L)F0WU!8)k-2h#X6ltC&&zS)iS3g4hH5?;pSZ*2#xW$zOnf3r7Pade|VPS=6= z^sB-%wB%M}Nq~#OBh~Q{(+2ZPryaFTi{UQZQ>X3l;Yo!UH@54uVW(;4jcmmIXM&OD zMD2hxt5?vvI33P)v(rPc0P^?MhL3ZZ-kE;(9JS|Lrdsw15eOdv<%d>4JQVWL&V-5L zr+9C9iz~giC#;!tl?z-|mz^5F#|8K(1U^|M=E3j$UjR8df=7h5!PQQ?|K(DER>GaEu z>eZN6Sud9WLrK81+bHLqp^%6a2xZK9jYZ#EPCi zKicu8BOqZ0&YLNI8lvP3#m)a20(MMgsqRXEt#M`i*BB>X=ITg zKBn@1ZpE3NQ8Q0$55RHS$gJRrbZUpv{rb!14;kXyOUv3zK+2U@I+1Y}2{WKm<{*qh ze+kB0Kz6D{x3%Yw9_@-i-?2aF{|ratT$bQ_s)?l_fO4_0MBA)*b%r6OWn&e{^6nkY z6!E^Gc+o3}dZdP|f*4YF{a)uP zLBXTb?wQPYj3qCYASi|bPY$&sa@_>4kJLW$NP!P@v2zlPEFW@c z+j|;UJ~((xSFfqXuoFcESkBk>aOv~ZMyGTZVVr1Pc9PuDSo6GmV*eME0W`+k@BF=@ z^Q&^3&Ya`;Z9{zrI=kowtRH1>+aiFzV-Wxr%E-cDiidNHPA0D}5AnPkKjNP~R-2b# z`}MCBWfottZl2T*AN0BzCGIfInvbGXYOW|~!gwZ%`o0c-+znikqfQs}spDpq-oAbp z{;Q7qd*&F?1*7()!Jn5})RcT~8 zZl&O|meeI1Da@w?KMs>h`wy>aAbY>|Gnd}#rQc&o zjrFrV5qf<0HfxCjd;(RWB-TR^gSA+8*@Z7JvfXZ0cAEayWc-g-8AGyUT_E`!+Vxzv&j*nVX z1;{evMLzw=PZcgAcwC2tI0LD%rbb~K#0I%D8y!PW{)xaV~`=SFePH}l9|wtwklKKKV6?SXEA4&Sz4Ya z<)QDH5Mo6CY&Eq>f3f;*?euWGwZV+aH#edYBE$e$y^={18-oKT58R5&Mz9k$Qs1~D zW>fhg$8N2Ya5AR0Sp%9qzNCKRmTvCbYv4LOm!k!UjX&OA;ftBS^Qj$35x*A(dpt?~ zkQPcc>V(2AW|?0(X1{9N)|1A6BaQ6fl^rGT93$;(K8;4rzU6Yu*}4 z-rJ!0+Q_$3J4Q$ z1?*MBf zlwgJheiBk9q&w#K*0X@hMw_5d+eYWji;5S8@R28rQ1hJ+SCXS!dbt$O{5sG6SLy(Z za}4PtH{`Zi62q5SRXl17|HuS+r|rPyN*8DLG3Yey88FcjwJr43!TRuKj?URMI#f4- z^BzrV=CV`c94qxk#>e!Pzgfx7(lc@ifVY@NPROA{%(EvwiDQjK|}tise>;SbU=XPY;yCI!ts zp=Q7PH!KR@FZv-KY?C2;_x&=BB$|A7vht&Slujc-u>?WFeik6td;lin_xxcX@Kw){ zlwr!p-u1pXipaKi$#YKwJUdndQ1W>2z65Llj9C=Tk4Jr6z2Cr2g7;+iBxR2N{w-%V z*dKvVBe4*xj@2ajH$E9a63p{&l7~ko7Iqfhcgm_oKXU-J^olz8 z!y?a08d4x|3E$WVhbe=`vMSiLXzGtqKoR2(R1d0oV!#3-n2PcU`G%1A(Oyr2Of6Q@ zZwK6{pS$Nh{5qwj45Z2j-1t_$*L(uNK_L|;KVda2`SbQwi+Ud|1+3fmKteu{(pcK4 z2I_3YI3M=byYk1{YT#nqAg7A9l{$IWAtugou7?&Gw7st@fgV zj4WsaUiCE@F{Fl|Pbn_SKT+d}@C4!1i+BcR{RY~!Jisp4^%-Q@S7aACcfwu1`J{_* z=`z-$6rALdVX3Q=U~w%!p&4=0fB-7PZIurN>g+N_kkdwj{kpMzCjnKDv{Yna2&XVC z5?!I>FWnhEpfY%h%{?3(ogo2atEaRetjD|9hM_B=?DN z2+cPtv`P@(`!k~3I337tmH3C+OePmP=Q9K8{+W`c*~cRKe}VaGeDE}`(=B~8R_vvc zXivQ3Lw@~9jUDCeub?uUMjh)9Y^Y;yoFwf~v~k$Vr^WZe}Ah1D@R+$!QM(~jx`&hbSN7=q+UGP)yrMRVX}}4zAULBij}Go zB`&*Q!wJtC;)$FX%VmI;8GIzQ6Y@59J+kRw3O z$-g9V#IbMJ>Uq6m2=!arSzLjUUJ{EnzP}Z@0X{TP@}uhC;QgF0i4nt!D1jmLp);P zzKVJ8-?J{Hnsb3?ep1Yr+qHZYoPr+{VsuAS=J%-y7clw5qxl7s4w(ai6>O~eZ|wxE z6ZC+$_Yca@u=}+b)#*G-eNbNWydvQ5u}@U448OU$Kl!e?o=5RP$RF>~OnCS0Xpu0 z!9$b=uM##zd&t{$mVsGT!bqrdu<}qhmFHD)>8^nk$vl5(kzpw&80Janu$5Q?5aJ#nGwN#} z15t5hOKqP$l5-$6AkF!sEbPwJw7n0E`RY}l!D!fnWWX#WxpIyQa%9x zf+XiyEryiL=Ih#6OcYS{WH|g5=o@RTiOE1w#PCM^9RDX(K@La%>=u66cREfjp9$CN zScg6>AvbO9Tt~nD_(p~wn=(Aes)w^pn-2OBc-h`ldft6krl|Pl3GB1qetkWeye>hi z=yS><#|LgU8&uMY|J-)va%Z7JM+3Vlk5r1+htcwI0IlkCd64$p_p{oo65(ZF5U!rw z?cCeNM{{m99noWRZKn8VaR_j%6PbD1Rs0uIZYT*?^=pAPI1M~Ae5P4fAZ&0YOi?yz zR3&MS(#q0wf7@JeOuVnxw<)R%R2XOBZ~!BwCs;+3wi^KJn%{2n$u>Dop5-@J{cM)* z(}5VMcq+Th=l`D);n+I(Q^*xGObNk=qg4le2N-!fx13XPxP+*puPAjzzd-)~;<``e zn3Y%7y*XX+j&$lDQi&WE<5>_7!=_1e)*B>$UZB-6D1;Cwbl%_t{0w=YqeX*98ORp{ z!Vlka=CBu*oL$jkX^c6#V(Z}DNML}%OCyQ$=`Vywucs-(xvQr4Ree&dFu z&;DmXuXY2ylJK)ZKZ}I70W3zwja!jG!~Ts6ylt^Z4Q;$(H@a3=3v&DL9!SJX7|eg$ zo4zAT)x9yc@1`y*59=kLUTCdH6J)=+Cs66bMfX2wwi}X^1dHBp6}CZk_e|83q-Ls* zp4O*u{LU_EXmEtt@Cj6o3Jsf8AFMo>HIaSaQ&Ae4fHFyR#lJuQrJw$VmZ?Bfm>2;f z*rw}jG`#8SQ>U2AgRW{ARt%d(dQ!c{$m8d3=HQ5lgI;ThF`sIY4SG>I|%L})&|Ymh`YyC z(?Zd28jlk~Pd2pyzZUOovDwt4G@j?m9o=BdoD-%t)8SQ(Sw`gfLw1Z1G+@!*{l~LM zS`TrS=jhwCjArK}n;tKQ3OK8`Htb}+SoTh|HgvtYKTdD+Q${RX(=v1v7Fb|38>*-X zje0j@fhSn>cn?tRke=a6C>jR#3l7gc=)1oKF{yNVX|e*HPR}$)b2s0#bXQu^*&+4MztVjMOEWhX zjcR~%&3|^KarK4*HaH|B{#)(4Bm%t{D8hGyU6M;+p=>N@2ROdA{UDf<*nU~kB}%ls z_#{jG;PJp}*)pTUl*z~UzrVh{B=|p_)#jm4sGITLHNy_O_Fk@fFeP-r+Zy-BCr;^~ zN6sq8LJF91o7G3Q5NM3kAL+^0t-VJhdag&*gxW`k!79f1E`@aFDkCQ~!TYS5vjJax zhZaL?Rn*%6%b4kUwliVWufO*v6$vUwwpP_*LyzDm$XQUr$>S1lQZ9)!N%Ar>ZJL^- z2Sze#TYcyxKTO12Xf{Be=em6(BjD!)^KQc8tGakviQ$d4B#AH^3`F99*v_baIu(CzW`m?M}6dzl;ZN?QlD zKkC#5)j3kt@o4i(1)SQqImTsZrP(TciI%&q(waD*FCno4C%Mg~+TWcAaY)2ho%`+( z%mdmhV9Nc+OSWpydVV4jZN9g7fyeL$Fltt4P}PLEj}g@c6gc(Feg$M;kH6&+6}Q$1 zER{s>jt24UU21qz8r7p%+9rS+Oe3KEKIc3@7V$K1&z-><&w%H~VuXFv~CHK4#OuFPj z&A;%t&-ihxt8nJFVTcJQp?&r{kFyj2|K27%;AJwQmxbNLeLwtSjH9c0XIF7}t^;f~ ze-@s%Pb*Vw41}Ufu^j-p>$~DO3#qTJxtEn8T0~8?svy(f0IDrz>sdO5cDrSwmiS5?9P7n=bcRE!gdw8STB^9Vb zZ6;!?MP2Af|Fj-oK^d3S_cLDI$(+G;d-_=bG7ZZ$7z3PxCxKvhrIYn!x4F9V7GpCe z)`lmz*x@)6TQg4)`~0$l=;Z`e+pj~``x;-oW)fOIS6bOoeD`t26dSY9v^Q7)4g7z< zA@}i|!Mn!gpl2toevvXR?7@p&AMbe&GHg?>=X3l4B!}RdAzHfNtW+{EST!q;R;fxx< z-JN1sw`iM28K%0|bAeSxM#)`C&fXZCr2M>h$pE*n0K3hYj)ma^@M(oo$gxTHBxru^ zBd3_5-B)UymEgYuMy)VPO|avH4swnX`-?UpZ6q=?kX_C;Qjyp@){ZU|2x4Z#&LD|NANY$2tLGsP__6eLt~wiO>hUx7 zbzm_dRn%DzyKlZtpJ6WBJ5&=k5JgV+R$`MPd&ir1zYgTwj%D$$zL}~U3m$%H~0!1 zbKAfk_)}K}BZ*eThTjDl;`9iecX=VeCKD!MJPAVXCGPnL(`I7;#AX6WY2mO~T zg8k3YW6&8W&oMDZl)5Jo&>&d=B?rXC6R@ZuyMm(S!97+zH}~h>U?kX7muv})PtCvN zcSz)x!hbIOKu|{Xhf7Zp!IqUKF4G{dms>wT;z6QK`)f@UZVK0y$d(#?M*>5p&QP?v|Pnnhmbhn@|n0b7M`WWGX4B;!t7!D zowvetir=>$x$@9sK$+`XdcmlYMeeV>SJYssLrPdVge z`6>A2icH5ptc0P+I55w8Gz7}C8j+k*xPD5&rnR^%RxUJp>I5pN5rItR^4O4yWDdCg zr-}QoU0Ax=Yi}~tz?4QuY16fB-r&0{75pa}qoy%A#}m<)N6Iet-y!r%!dAU;<{Wj@ zPs*_kBrqqv)`X_5J6Xm~*=?Uzptu~kjUTC^(k5Dc!SsE9I1ta;N5xnXp*fkI{u-!glQ{^J}~ z^Oz<+oIb<;IRkw`8tagl`JH$d^2o$|=qa)_{V$OLRBh%hZrz$3C?a4h?}IQTr6(6W znZWa~&wyQ6u(i1Jld=v==YX}r)AmVhj&JgsiEoz9IlykZ40E)eXipx(#72wrnyLS1 zfEM$|B)JRAVYH|0jJGZ_@!4a3vT6}$bmTC7x0tox>D3n|U_8fonKAIS%^;{7rFnbP zDOgKkt==sh)~u`bf+r-9@L9Kr0UvP^T`+!(SmrKJYNH8JMFVSpd^;{C=a0^~>c4BoA5 z0mJDnKp}Vb?;}V9TM7EbWjT4=Wxr zN7r8Ro(=^jM61`gQq#5O$Gm8es|BA;3QAnkf>b6}B(}7oXxFklL{e^pO(OP1?)9q4EXD*6#$(u z1QM$%=~&qN07*t*v$C#tt-InWf3g39AcO@M99qh8)vgbm=i%QOt{?dk+Eo4>s`UPx zWX&akvWpm7^Ce!5{^KvV%+(u7YZY$SN$qx6D!!$D!iI>h&8+cF6{G2Cqnb7c^y0on z{aWvf&y(y{WOWXBp`N_ZZ+I71ECrDa?^_QXT|SC05~-=kRLs6oH!{u>8hBi>K|T%O z0v_p1S?k;-@!iYb)IshKnOjcXs$f%RWT~$I+`KA~x`-XQd)I=u|W~h2^^0O9BW2*$)Ex~dr!|+qEDE^OIcQRq9 zF3qLX>x0~Kt-E)jk#;8VN)3L&Ik69w&Q1XDUJdRqOxmlZR*IP&_!8k=`7xo*_{m%b zx6(i!=L8-crY{)G{LlxO&OvuBi!UJ0ARUjJ- z-VyAycdIMWoI*Nw1tg-*&Yap?HJEAa4?N5MGWut6Bh!Yrb>;1^_o%C2&{Y*;(9Um? z|D2ALhHkF`(C=H3&Vh+61KC~>LXzu;Km{pwZ=`@ZqVyGwR5R~f?}wd|S`bkv9GI4O zyzca`$oy9EvBQ=N8?+&*NtQlgRM}-o=4VPZ{d!Y_Gam*zEwl&%xObi!L);FfV`_mz zY&234coVvm8WXIe%GR4cnmV7egz~+?L%){|{s43Ezuo7m3N5)N5!WyF*wt0!aDL_Q zforM%20!SoP!4A>R}4CgcQa9M)Ux% zzKQC{E96O6#QC@GW!{V*Ycd*ZR&EoHqkWvC24~Dym#*DZoq$3yE9-cM!(-z4T-(PJ z(HG7N2D~!|zu!5rRJn}hXeT7TEW6KKA$%TfuQRwoteego<5*3aZrYgMF!DJDRHySQ z=QkeIUGSD*x}F+d`S5m;_^W=OEl+c{tlxZoWM-4N-Af1Dxh3wP9N^EDiP(+_^TUki zm8Hov2DHK{9GZJ_gWWbt@xg8!!)uf)F9D&SXu!WJ7=y;ob?vP}QwQ(W*Rd&;-kGd)C* z^#?`sewnot^qXVR1@FOm`-2qN9!X6>>mUUzO_KmL&p$& zyBFCx&D~#%1$VTsF)y>wW+S4IF}}NyWdA-kVRES4^%Ydxc3kgq5qU2%iMVXTS-fLP zQs0FvKRr`4ZPUsNXP}$^{u01g+xTM3xb}dk_PjDP6D36`!b+%?rz)}Mi!Ir~O&=s@ ze_;Pyl&WGu?<>RUV!!nJx7WbT*#msTOCiuas?&+BNOXHeLPlHm zW);f2w*RWNrX}G#A=3gd5MlZ3h60$})d2jC{GX|*6rs->U75y5Ckz7K-Da}S8xR-~f)KwpWKkTMXj+r;j}}>SM+lSQz9`Vq!jc|Id%~xk7Ey z`4Y~GYj>+1c@$%nU&3FRia>sSA(mIX`i7pdir@0GFF(N$tfXmLgd-ltEF&t~2GzS2<8aeZ6ujEr;la1g|9 zX;u@cH|TjBVjRB-A^aUfcNFSxX(y#KtUs>NV~{Q5-!BY`Sv8KKtCMK^{)e^(wI^u@ zmDJdgWUAGAx0cTe(LjZEH=-q`7zRvRrTa75vtjiqVTCXH$frCz>Y!CBN8oq&sBn98 zj=!U}`!aB=mG*?B`y2g5)RQtcHS;t$E4~@VVfep@yrp)#e;K5+V^-k{kGeZ<{%bSL z&8gAR&nhW8okCwr@NVrMYZ%2Yk|7bH%X`%-A;LE9A_l|6b89q)pT$rgkX{DqV>ud(^8p(AGX8C=+^Igfb;f0QBazMFz!OaSd`!nAYu9S6 zUtM+Dnkh?I>JCyN5sR>AY2L0NFwg1iisW+rkNdru-71qiyy?KIP6c0IiqJrg_Z$VG zmsME?7p*T!rn?%=#g1d%?itsFS8x_%4q5a-mk5WnoSo3*WZz%%&D@peks5cBg1pj81<_q zHUyty2VMGWV2$sOE6Jzirkk5S0}UBd?~rZV{X^7TmH!^hfiaC?feF~FyD)kIBqlxv z?I#@(8=ox&X7zgHVnMv0h@2fw%K%lfnSYeXVc2AC6S?g!9qO_JEaBBn^*3e%)Vmk4RlNRv-HNfQl&-Z zf*feUpl*W@Dq+(zcbn?s1K;pu_;mu)3B_r&@bT|KXjd*B!*=@M@B#2h`?=_7-4c4SHW&m^si zz!`S$4+b4fT?xuN1sH0M#L6e*5iqx|C9uO8~Ac8sD&JrCbIe(yHvQYR

      1. XUR!@LT#dbY0tg-<(-H$oSIJc`ol)`2~juzgV`X>I=SJ07bD8*x`s=E%Wagg}whS zrXLr@yrj<-#atq-==13?BKJjEz^B9&zxBetHkSmy`CssdpbtAdfdl$kv{V*>TNtEN zzwEH8dgU5`y2~B zb4CcTmF1DX(>*`S-vGbQr}Eu%vem7MTl%9|>4TAsxu`&-@q{DqfeBQ?#m&PSXk-Eo z_5322rmQ*`FP*UI+BrYx0!vkZEoLw;ndK_$U!mU_u4Y3HW4(k)6Q0G5YbksnflTlh zL-|(rEFfBEc`zt059&1-ek)j!+xhp(m<#whBPW@;(_S}K1$`@e^7LEhEeTUatMUv9 zmYXRwkNPHZm&acPMoX+419Wv#QE#lcu@Rh>KGLHt1!An|cK!AMhmG^nSb-VHVH!6- z*YSO=lMa0k0k`Pdu^J1MchRm-Oy68qLNhU$yVc6E?;P4H>irtQ;T8Ehc zz=5`>QIE9oymW0(y{cr-M?Pss3LyKHm-gXhuUTt^a0#qJUGvOpw;iTGGnY}!s<`Ct zj;gbJq-eX(eNxt#m8u%R<195Uq%|HVR2GJvkpzXFpZM8*5#gnAGvwabh`bLi3vz$# za6{OZG4LLHOF0q6N8@G;-=j-+_wY&Gw_fCsYRbk!UrnpQetlr}G&1iV zHz(a5)Wxh5CFl1!HiR9RRRp*ky|oTeqNv;b7ZNtc)L z>wImup&Ij}2M9)j24bDq54Kfj8{M|wNDl3&bUHU3g?QW`6;736S4+SF-Lkao4K=Re zfrx-@GwHKyU-@U!KEZ>={Fx`u3uVTeLSxo$NNA{f3Dfo`LTcO4*cLCty>F<+s%JmE z9&ey&+0K9$M!u7^2{)0P4hQY%+SeyMxn~T;Ye-oxiRl}guficcx3*bW zBy>*SkRc6w@H_tx*hqO^&fy#S@AR<{q56_G-*YDT^KbC5=-p&iCmV}u!$ijSRj?HBC#A&TONOzwS^e`q8Y#MTUpSzlg z4Z8wxe|)UnAXIwna38MM&N)$f=@o4HWvI3(X3d3^#>cBTwX_aM-ONp)8sP^WulsWs zFAcOEoUeZbw7If`dR~Ke5^uj@yFMO)YZ|w1(IC68I&UPQm`4E!Vm|7qQ;GY3j@8PDg zAMV)LO*g8^qY@QAC%)o|LpHUC9ujb~z6c5*?g+PRSAJ{AUj4Rn zov-Nme1ZB^TP^v>SCu-_eG#$hPb?2xU>Y16H~F)}Q&%Wk{v4>7kVlho?i5Bs%Xtu3 z8WlGAf99-kbPj^cPyz45G7(|@`6>dpZyIiFQ4Md3r>ntLx@9SH6dj{#N;%KoIh zd>rA;FPm)TyQCC7u0MVa=1e0;H))z%qd2pLmK;l7fJm%?5LdT}&sK_?_6@Kd_?1&?uiQ9Ws{M?{`8*1Y?@<}72uuOn4;LRF zM;CR$JW+55X`OokXZ_{0;YB55BPuj`Ci6i)2F%v?(E|YlYOom;NY6TuG1cz19 zcgM}WFQ_#a|Fh*q2HBGuwjxTUsUN`%IAIy>o@8P`D;Gtyp-D(&bw8<0DWrO8emY2f(xGAwwL&3>3 zyx6?50(V^;)mKQkw*qiOEwdmSKnQx4H`LOXSmmhZQF)4i$4>bb4%}fMTb! z>EZ#7#ewk4>ZU@{A2Kh8G{r5hc}#YOuK1R%E;EJ9H{33?=v>zsp)FUC%gpJY^x-SH z{LoJSwW^8k@5+aGHDiRYY96oEg;@4jTvUgs^y)s=B1JN@^3Aj9oF0nonz~$uWJyvk zzQZ;v@_fr6fbZhs79*|zV`l9AVp+>Cm;KJ6lhL2O-@n~p8Y46URpDxxrWLY`U;6R8 zI|ShqQkBH+8NCSarQfqw^06~i$17FI<&O1Cx5|z~x#8!1k5spRSGVbITdSN}%lceI zxpwK21YyNI-TBY~3gbFv*URh0DadxkW$pQ|`2%DK++m58p@Y-5wPQQZ0EFdtY!1*) zEd$o7{vEZR22)vU&vY4bY+Hj1wJsQZdoU4FR)0=k!XRELAk%khmx?{M%(0^CNStIW zHFK3$c_OA)9sdMw@n_|^UbIiAZ6dKi$JtsU{%eBt7EQ`*olzM$6PHEu==8%p5n}B} zsBGEDYyA_+iX^sj>P;ZK5O}|M>yL9*Qsa1&&EO5<&Z=x1jyikCr#w$`zVdRWo}3#v zMgZwbpa*hn8cXXY_MTHd2~Y2P_tHhV?{rTEUMYsI6-8)rYE;m>3@dyRT$>Q!4d*lY^)XUNgHl7=ql z2f;1+daqMBuz-lpbE6&ryjsMWAYx{GM#U#Yt@PiN;@qMh63d;yBv~IjO#lr6$l|~{ z#RBTeXO7x20Zniwc&j&U6%1=EvMNG>_MRTFUsbLF(Omyb5Y9+2Ut?5^w-oZ84xHgH zjs->%WQFCiQqd26ol{#5QthS0E$zu!R{^QuWRVC8}GU&Sy_d)}K-!@_i(tx-2d zUEqxuIa-*r17bGqX7OBY?&81f`c+tnJ#>HkF&z)kk&**4!ivipdA?MO%jdb+CtX!^dtEixSmsah>k!He= z@P97pt1Ru8)2#?{r{i`xSOeZG_YEp)cUtJ8vdY8`j=racWYk{==;QXr=kfb`F*8*~ zuhqhPo6m`U!V~zbT*F2z=hM&g@(H>>G20qXV>_3Ii^M{|ZE&d2J$3)0 z;J0Mt5|tzCYkc0fiY}9ro5CSgjpH$C?yB;M1!2fg5kuydqu2Eu-2G>nC z`I*%_!uOUw7|*(iP6xhn@Ng`8l0mIW2rM=9U;du|PSyE@2inzzZld&?J?0m}4{n7_ zczjx*@;V=$JWIN!`ZN#-%;9xaLuTKJy$;?wgXNLrO$TKO=;hMlU!FQ+1YTfF&5hKb z0l1zvnuebLrrv3(!UOHfi=b=`g|mDqePG#+*u2G{}h<O3L3syMcM}l39aTF^AG_3^S=Vx7+DTnp6x(OS2 z;7?SlfEJ*(co3?Q8o>t+M5?r?6{z!Xk{gydA;5tw1$Ca61Uy+1=m9>K6FtLsf91p- zB7MgieX}dN2P2Uswsw>gr z{}LldJ;`@j&v~`wZDc3py{;EdigAM-DgW9dmzn@X%uo(oLEo_>%1%e59^?jt&ZzR4 ze~%=o#3O;82|te7Rirk|tJouqqnV_e-{lGXO2bOoRAx-)#1xMs|G^dD+@aopIG$D! zZ*CRTVl=eW!$I*O%`>EHHFX1f|r1>ORQo@aq-ww=Gr3~czJTP**fZT5Qdg3I9OE8-I(x98$Dw(9$qd#9g` z^q$*DTP_yRD%Jt@aRiXSiO9yyh_zeNsJ0$z+2#%nsfKhHcY50WoO_dL`XW&?dFI0C zJcSvX0}5;c@`ZU7O31Ea zR@*+ry0NWM4s@-hJYFMn!N6S-#)Z^Q1g_s5?E*?WRV3z%KG#+F=-Yv@sCf@C_ij?P2h zfodh}mc|5FaJwD+&D3#j&8Wt=+fNl_WL729BhSqba%)CO;C#b~CMOZ4%l+<cLO60_7=jx>_N*izaQRmku961cJ32BQyT*d7H;RQfH2Np$g( z7vhs?ia2X?aGGdSw84W#W1SG9M{v<2=r>?2@@w!S@T=i`M{9<$MSnWC;cMskS^gUw zv@eH!m!4FW_5k$-QY#?=RdRk9h$Z0<)55nZOb?uvs>_(U$2cTP9#rfzt(?8@@RTJ5 zY1h18boZO$ahprA&DeyDW$OMKzM=N+qn!NmX04~a@6Mcu`~0~XG628OtY);D<8`-O z4EKkxIsj#%LQ`1f%}C;;o(}(OyV02JKo*X|mzU&vJP#2vbTw2v@s8O$Qf=eH&F#L$ z1H%#>dT-;M-rr5MPuyOR20fSQI2sb@b`pv5*_sRYh~YmxcFzl0-S{pVgdwdVd)0mt zz#ka6%>Mb!_pufTX0%j+vjP>23-k~E3z*HF2b7=ar&EGlUNk>7_z-jnKd)W$Ihzmk zsyy4AlT#fvw}9oA8?wJp(gqR&!{9S4|IuzvLza9qztYsMjxtBLzP>?z1w=)+v=arh z{HT-q$Y0PSP}`r05AU0A!O~7z(l#VAW%)2inyi5w2R?HFq|I1kCYGLm%1&x4UIa^S znkU6BDhZWh!W|gNJ;8It=8t2516cz~poC}NOmIelg4%{u1v*(>B)>S*ttb;~nlb`< z%b@>TevfRT(aZ!8gmJTX3H)bCmyNX_+p>ElDZ8Pzu3>;|0r6M2+|bD0 z{QGAQkP=cmUEgnR>ZizSaZo!wjjft&At(Yv9V8wgSLgTH0u>qwTtBlcUI7mj5p+3S z+ctj1sr23UO~7`9!PauB55>G=w!C9-y)k;;{Otha8QdA{T?97d%Fj-i<_EsG^oU0| z91GXnWF*6X1>HND05@upwr&E?4z%g3*PbNvfOS6`6@w5bPdYzdA7j>m+sQ&Md z+hvI?L&=s>jj>i_Y*~^$!Z2oHM2ImFCbDG95=CUlRx0bPma&#Kqfgc>Gm|xuge=*Y z@VmahfA3=+^SCqjec$JOp09IW=aRW)GzO<_V@!T4##bFu+P+J(1(?v=0pLJmvjZ-j z3Qb}bU+9%LQ7LEn_g=X)%xN;fKjqxC`|fV*SC4eb`}c?6?*%==LS9NjtCzxuI2nE- z|B^7H`q?s0tMay$rgKk%a$#aOfUx-j2%EM$cBUH^g}!N(CY?Ocly#8q^-c@kS3a!2 zQHD8o+~A-Zx=)(c0~osFcAF`%a0(Y*t+u$o+B_p|$b0bP0oi_*33S#F=hFxb0lNxI z+GY8RC{^Hovu(AdKyCpeNOuJt zQy28vUUZT6qMWKG5Lbm*dlR(u^^Tvj44cEdT&|wy&1f{sPi!v2wC>W+tqxp>>z+1DLCuy>{WbOTiEPU`;qhsX#b+}xZ7fo|s5uLkDUwjq^QG8*!jyN}@nX#kZx%Ab!C zBIWpj9PWC}6kJy9T0EUu+0Dd1EC*)KKuE;e`=6eCE{#5BFWDmzVsN}y;@%s;+wEE} zo=N?oHV}|w6rvNlAX`1qskNYCnwK3b&T6ufc(Fzo$KFL98xbzuq>c7XN9MX;HVBn? z`gV_m`-LucKsceszuygAzRs^6>@feP$`x<_t3DEXy#1odRs%q#jB%LNH_Q)bk2UxJ z@CQGG@>AHatbZt+Q? zt`-=J1`x-W_!!q8S9)Mwa|81sZ=A_?bYD9dn*BqJVe87@W)s1RDY>+;g@A>8T*Mpa zfBOpZ_Wj3bsdKf?5nVu6|sNA)?y?MjD&q7Ge+_$2SIElE~yA}6@5 zEF9v(LcqbBY`Ij=EELIk;#M@^fx((Z)fIhqjM&!4TKvZnYhEUwX0!50BO`QG_0yMP z*FdFN*WKh0KdGk`)$yBGISX1?f1zAq@9rGrV8}E4mXT?5B!Q06@ko_OkDj%Z3c&{sKYnbK=(P(?B629%STuD1m?Y+1uzSGti-uhSRwF@6inzv3e|?`EK(J<^x<+BRk!D$-krI}YTS0n2~R zG^?z5qxApt$dQ?RbmHw}{vL8)rJF}=Rm#3``PEc8d#`)HDiLM`ZTQMHIY5skt z8$BlQ*}gG({ad2R>Nt5}OozM{F}ZHDaN-WrnCu1_qd`>7p<}oQ*Ha6~4=d8h{2w>+ zGhwdRZu8xn2l0j2I)CmRDU%Q-G$c7X=V-Whe!B$pt2}Mn)vuy)Bu)?-{xpUD{iEKa z;S%kYt+M>5X2_x!_rzZ>$1XXAkDh#G*^ST-Dnu7${-kV+OfvA#gBuh zvU@9fzyQyTGprnq3XDgd@&4H5k@{MeZkol1OL*b45nNeWqi3Dw#tkl9P>k{|qn-Lh zf_3Hmzq*r=39y?aLACLV-}=R?CqGIhm$HMjHz1W8piXIp%RZ7oVss2Ao?_`O7kW$q zAB!lPVNv{Hc08zIdROQC5W3&IrgO@2Yb5?n;8TIHYwz}gx<;;lb7Kqg%UAm?ErMU} z_H7P%yYm31ZGTEDm!MRkS=IQlp>L?%cl`aH{a;jkoSa>Gsh%;e@q4D5lZ?0JGOwu? zykgMwdQICD|5oLYePDP6Pyz{OdiSOY^L?>{_Xi8pvFF@e>rQ%eL;Ss}N92;L#*hX) zoS!G9T1D_m=k+%n@@D`fYk5JaT317r5Dj=pUhtAfdOgStgIttPv4c&4VaK;mvXy); zJ+MSzbNTh6d38(c?Yz%GsClz4XK{gT{|{8ODYgaSv=vE)FIs7I6i?@MLx6scjUu(f zqG0geAWE8BhUO7@fvEg1-G~Q8OzU%=$rEgu9Owd!;+@?*2$h=o<+e}#NR&w)ha{Z~ zzgABo`^MIu^0X4aLsR@5S9LJ{o9BAWkHgLOOK11Z7wum{JFx4VbmuTMJ7v=J)j zl5l>d1s^?p_?+&eg?~wi728lV7-Zt2c3)3PD%C$Ins=Y41e-(X; z2>8vTfu%@Fy#qr98Q)JZ%wHzy;yAw!a}Yb-D3wp(pK^h*qo&yWVIVR835Bve*7V$q zKul?U=Ll7>&^{%G#L-+lo=%CwQ9y@igX^({Km`j-Qgws(=b`&3W{TMVl1S*hU19^hBwW>oip|ls z(cWOG;qA)Cd0ORItb@j+#}dpB)0LqC2Jkg^n@9%xxt?G;Ld)h%@KOaH2B(7+<1B9_ zx19}n0$Md>O*SkALI99}M8M?FVpLAJU!`mWl^E+({`Z1py>x9awiOvN`qw=K*w{aM zTF3I2>f}n))=O-Umg{qZ@o}C`^i4a&$ zJ!tI+Zj%2m3(fFR_M+yVjuKWM(upy#Ny`#e9eSb=8Qe4fMV~$1xt(rKnJ>&D3u=E_ zGztrnQ90~7f;t~V36Wg<9};IxX?!Z4`M&H9A<%`X^e8B|3V+I^(7@u~2a|33_dzb* zS|eOO*$ww%^aXvQ7al(Ygz(FX%4HF?uy=4ka3x}~3;@;Q=FnIERW$0flo(BmYn?SSn7=6T?-eyz5 zuJEFktK8IItwEH{Tq3sAnwBT^P&-+jY-t*7Z$EGIe!$eUjG(ozHQnrl$Y4g8TWW5& zqu*eboN@1PK}h%ANPy{6o!B((TpkimVCO-h;obPgKBW3g;Rn5kw4Gg-8^o1>$Fyd% z+6i;!MAzL&m9ud5X-UF*Z^cbYF??=DGMR63_r6Y@2mr|O4L8GlkNC!z!LKlNM@psW zNh`(Bw$SZX6d$4@z3Y@1r9c&@Ne9Xl0U!h@y!IrSkK)u$7R#ggagD}dN=@xaDqgp5 zGa_^o<^WTxpwXKxX*B|) zH8d;ml9E%s&-&kfp>b}0boGZDmF$gc##z&Rk1bfpY(*X4u?pDjOAoh4es}2&)0V z+c#74ge|m7s+SuvS*+@p$shrGrQGfFR*I@%rxGGgdr?}~+t{TB0kIMnS zeg!jsms@!zU4)J~fq69#bV30Np8brPRqjV4N%xmi(Rmiy@QsF$(wd3IF-ymr64E#P zuUnV;6f#XWz(2X}#9XlE)xi#MNqJnqkZ$2fQzR?j`@Dhg_~xG+ zQp9J9%-gL2*h)TR>627~ZfH9e+br;#ycxMA$`nuNE4W&w)S7cGuMZsD@~fuIIkrd4 zchj{o}Ng74GjDNW;- zf8KaccAtuMbb;po5}AMN0YRyhdVIcW zC=1)dK@dk48qIEVr7OWM)YzC?^~XQg4Y>~LIuZc<7B$XEK|j}`kn^HGizhn_yb?%a zcoF0i?_9v|l6UjB9t<%%SN)2Gj-2&^H*2m)A-~=ny`rwsJ*QYBP@2CFQ?xIsHZ?D6 zy}5I?t}o+orjq)KWiTv^pTwOI$-udin&-lc9wvAN72xCM3&o6vEkoTPfPLw$qRPk9 zfB;dJcJ5jM@5(ytv!_ZB&&KYkAI7S6I7h5^ah->cq}$L(C1)ildG?A9*jYx_pc!*^ z!~7SrVFMxg2&A2VO>q&A?YqgS0bpmR<_iI#cYOl9;z6~XJy1Qh8jOlS`|$P-QCD`y z(%QP#r2r@V(Mu#z*PO#|j)&_7d=Dwd3(=(xNT~H-8%WhyuuM0kJ)^*k@So%1#O!TX zF@@cxt1h$Qma|&E<9W@Ga2bL$xdtbmMpBZAW&}*$bK`y_FL;+P7kLLrt%$2oDPegvKv%{V>X!ADhwi z`h5o18(M9aSv7t8ls7{q5fB020Y@^?*Jl*IeE2&+y^RY@o!z*CDPPJR70mP+=e>99 zHK4KfH2^E9?;n4kOcmAa%E5vB?8_dtMgKMIQ~A+uIy6^IUQt+#BWyhp(+X4^e9J@z zD!#1S6}AA6O0MwqSAD8TL2|Y>WXA+v#=JN=Me+rPf`KWqcsA4JYE6a#p&)~8m6lW_ z@O`Wm4U4|4q10Jt9sX<*kX%;e;&15H2>unF$orRWmB(fx7FIkH7)&4LB3=Ym8l<>$ zopVSluV5<%!7j2sQc@@4^B~J{!bq?ByU;JknEKb5^G)@cKr5}Ql2xlyjvO&oAZAc9 zWl|3|Vjq3IbOI{({@ZK^t#9!D2XV9P683@U5eOe##?D`_7*ev*wGF^E_0>yF5s4)Q z2Si@k9zV{?hXoJU2^-3sv(61}Q}--dgmmt7re#JEt=0C+Tpvty*xLH#w^a+CgHPM~ zcNBf={UaHXhXp33uWI~OTG51Lt$#D*46sgy%mryZQg%VMzU3UzYWDQ0#;qyRYLe00 z1zPV+Y+~QLjF!~>EvTGX__;vzKA@@8vs1TdwIiL6a2kfkPEF~c`i)-K>9=r_BNDwr z4z?$lbIIL3ko8q`Dle--N2G6zi*C=`} z{Jv0i060+3&99#L&318Jbl`c+u!%>b$S<({()r?iN)zZ-Z?Pz|A9+G|d23Q=$nr=m zoS79Kd>PLMdL6kHCd{j)%U~1*9nswGxcC3_#aI*p_OhYR=R~)~(6Tqvf7$E_<4x#3 z7dfn}mGpW3Cycsv-Ihbn$4Yd%IVU8O*b%?r)}J^Z46r_Pxc*k;)ow;sOn3*^m<30^%j|I|Bekl*W>04<>(y7CAC;enAj*QirC|XgGDG|>1QxlmFc7wqs4xS(6F@7T1&(++`%{wn z6V(#){N>2eUUD*+u_u+crR`>={*P-i5g7ZFslc^GM~<@OJ9l*aFeMC(5DoKY13>jg zV%k#rj7_P$#V{irIFfY}q{}fX=3DrlZ3kTbdk=zEXkTmMB}(Dj^KXFA`vSeY5t!?J zyg;SN?=y^}mzS|C3S>5^apx_H7Wem`ESNdBrg0Z8q$n&L2=wktfmzX1)Xb4t>OCmB z0L8iN%QYr_G2#lL_UttFB&%ysd|1bXGi*-BtM}hmz0SSR#ySaPfusk<5Z8w zA^m2a5nL%KZM~R{NbcFg34t9%puI3~S}Wc`;Vqv3DG#Fb2CQ|^Py|NJsf?XO7A+o< zeTqfPf@POPOYG$+6Wg(mK-tC7ao58_8vMe$ztJ30zvb{dA;}HdwDtkkDMkGD)~6_Q zEfQ5S?q|(u1PmJxf(_7l6!q1w-2gQzOpY|UuLUOGoL1DREo2tyd-0Vcx`vx;tuDkh znjF3Ih|wImiL=@F=?JWp4_9k>H>H9!Sdw4?-h$$_CBHu+I6Wo zM;?o`C0N_%arPuD0 z)3D@YiD4Ent!y0KsrR3hBQqfBJnPXis3E4wnXz1}wWk$1EU2EgYHPjIlYR3g`yH9M zd`dp5H3#?`qCeBaWanr6Ie_^r>Fh27i$-Hf;@ygWo{?qBsqLyfJ$*{odSfn2g)Zda zamZdaX?03i=!<#ju@Z#^^rdI(?1Q9fMa`EuWYf~_!8DKEVh?C}%mc|D;?K2Gx_Icm zJ#uuz@(A;vBXR5Xty9;Ot41eOtA~2SC77>Mq$YQhT1J{<*T5yk?@q;9Y#dv%#YEQb zSJS%7RvV{BUXHW;0~x%vueU6MgguW79b(s76DL|jHQ%g)?4Kj9$p8tyy6gU!UVFYh z21MB2;e)G94_$-=E*a1k>{}W#Vgtc`c{%pQszbmo;)59u*5~(s%&)L(=~|`s>O9LI zkl4Uy_+(BQjIH;5o@+iO=~gjNpfz|NX>qqn{<}i?i#$q{Of(9D+ZhFI?($w^Dl;uf zC;Y``IFgX*lJ3B4>C5B1Ky_Hlx&tgTred%})O|1GKTrs?0_kUE)(AucUH&3v5*pBEr$njoHwR?_JBvFLOziqANG96g-7%I zAJp|w0@bjbk0GK|y+|4CsSdpp_r^<+X-Z=ACl5C#P$%#N{}*hQ5$pjQ>3CBKicRjG zcJ3ck`y)bu!X-q(_5;7XL~4UR44D$4X=Ve0rFKvTG8(g?j713Hl^Ua?Qp6F@qR=^(t#MG!{q3;4(_a`sNe`CTY z+IPNSC1^KyF7nnI(fZsTuMzX_N@mp?6M#RO*oY%JlBt8phl2J$%FMpR_>b}=A z4Hp2(6C0ij;PfHMV_Kp{J*_N*_oA)agB=1LPOc%a$Q_xWtSD#CS@dK@6C0u>spt{HIwX&d#%ju ztz0wwj?ee^eSH7BkH;ht-Z~4UN8OY1S+Sblf(#g}^ zjie8!g8?adlpI=ae}ShnQ2qYh$LKp;X}#ZCso{j;zGCjweZqB*`)pQc8Jezi^X=!4 zuC@y~pGh3YVv#jto?m|WhPU}%U@p$P9{wA<_@fv6?_?+V-?TuBN13V6p5^(`%EO?u z1emB@ALV>p%fG#gx?pn6)3-AhP8S2gj(gbGr*S`kvog=-9})%R-$W$cRXgbwxH#&< z1fQk`Uu*!!;&v`pg8wbW1)qKh{X6pqG2Y&{gmj)l7 zww(70w486WTx_{-4W7DR{2Tjyaq;zH1#|HSI262j;c#(yP82wAzKFUw8EZL1pJ`ki zTb|EfxIGNIanvgid>D7JzjHyHJwL*W0=Ic_ntM*1tqX?b3Eyy1K0i6$xey3$2oqxx zyAqgZ-1HvFfjsBeU(!YV%-_;iq9jkIExIC^zfOWQzq7@AZXaB!ZF-u^X?wzyb7#pU zhE^Kil@|Rd!}Iwy+lYH27fTM)V`YoZhza$6Cb7ta{vx$Aso=xo ztGxKkvquX#hamI_ApI(hVgK?a_6q$CxarmPv!(X!V*uuL5Zl5{bXB_cgkEbCq7UE;TZ34x<#q$zf>gq z;^dcR>fRm4}I@I?b++@TF4eS>%ghK=paz#`#!6( zJza|j9GgZmVum%bu_8z`KAB=8BO6a)e3M(OijTR#g?WC&+<9F7* zWnI2ACrYT(zg>w^Z{T#U1FM^iy!@UulBx(oIiA%QP>N>;E@R}9sIZnL}&S~pPzM5D$Qy96C zd$KuW8z=Z6T~+h?w+*Z&IpSW3Q-tw6>nKaJ)Oa|jzSd$h$*K%uQ4i!8cB7XY$q9`= z*r!|LMzTYn1TiD(XIx|{mPc<=C+kmrfR&oSV0J1#cr`IAJa}l9d>y@xydj;5lxnaQ z#g-5?@vNg~OmddFMz5CGOJ>QDGxYdhZT7qR&#Q`-G(nCOSlA=%I$d@nnX5mOMt)G3 zgT6EHjbukZ=Y&J~jDDosrB|nnbQ*V48(xzDi(`Ivqdv>NfxxzgY|4oy1Yj*$;fVGq zTP<+k%LvXSvE-8#SO}4Ye(eWx5pMZJyy{9YYsFibn=F+unx&>{ImJXqSx zRay?_u32bHMgH>P3~)mcw~x>qcGz3olu zx|AWMt}V^)ot9KVB8X!RdRb}?r%w__eR`l##&FS^JM^Iv&SNy><$}nA_Tq&oC-yT^ zJP59a?W91o8ycyM8bxNZK^}n$u~3W_89o{X)ibK^lh^i+f$6)-kRq3=uuzL*x;w`0 ztsEhO<#v@2Gy>_>-lP7owI?(-`4Nx!gZJ1YkZNYR)5JOp$^=Y#kRrz=VJwb98j{oo zJ}NLeT)lzMs_Wz~tFgk>u#l7#GX|7l7e~LmY+?!VY8Uqu)km`-;O*kzppdsQusPtO zOmro$4(K6+R(@ss4F6PTpwr_HZ_=0Wg;Oq3^M(7u z%PG6)zmUSj>26=}`|bpmQyx%ebEPtI{4E^-hp0VOvA2xV~@9MNV)v=RQKn?d6n|xgxB z^5#9Ji=y`%D#z{1r)HOCU59RA*y8#`1}pwmx)n432pSjhrITWHX7W*FolIh&+*Hut zTWcFaeV^SFhNhjR?J7ma+vOT+jpIt7{8}o_np}XbDmRv9Dh`O}j=WeC#Tu(aqx`M4n6W@6gGeTS+^sc=F zvz(J`aNt@eUy?yK(2!CL?a78OQ%e*I7QTnvivZ4%%yn&mX$pNjWL5dD)nahLr%AGt z&Hb@7R_e-^k7!s}6|Z&_CV$c;WuC%YE3QMoewA{RgEa)cfRv5f5H zM~jh{2TaSi$|Wy(6d)nNs{gyl{;+|c=CbA4=M$koQE=UBuIabErUKSH3TK?-Qz_Ow z`^Tt{FGYm82TKY*s zPcyl&@e7f0x8kjFPhk}~IkK*=-=aphS4_CCvV?2=|>S9Mja0# zl8&F`k28SRqeS0N{fb+qH2hfGFp}*NUDPK@S8V_Dbwcuft?l0cqmpqW@Q-;=ycUxi zx&Q7*w@ZNV6Gwa+V}AOx{zW>OV}rdyb{>Cn^0)A5{0u{+Aqmd1kZ_xzx69yMhT*9B z-m?ZPudA(obJRG9+!~vOnM-_uTXfpZ()UyreJWV%3YNi8^+L@X@_iN zADWu?+3WvfXrD>Kfl4UxiIs}F=r)xY$hGV1`C`kv9J{nRcU*Z~m|RE$FxAzighT(7 zx(-4iyN$x@k9s#Z5LFC55Nxz+_RZGEysn+{VGh2blg3wGb|q{jhl7QH+j0eR`a}WqRIsh0pcwlMaA(uO@lY<6gd5x$k?rL_8V4OKaSyr zU=-768M(`BvR;F10| z_}Q5`M=c_S?H!X8yj;Rp=KkHE|9X^H+ql%QoaF2GOd?8dhcjb8&B=^Tma-Vy&RzLy zqr%0hZ#e(uft6H?H0WtuS+eE&qRDCRz~=(rhi!M8A||)FUxAj*cxX#Uer?_!CZgpw z%4&RfUU!cTejJUKDxM|ZMlYa3)?Rm?XTNY?FoDdlK2v1$QTCbGD3QPpYh~{vpP3e# zKsEM1ipe1p+CF)#By%)c5FSR7Ue||hS9>_!l86!e2%Rt1^?gA`tJkkm(51h|*{*fd z&~u6KwEYgc-Kd1ceT+k@P4huTJw~d2R8!iU<)g<=1EU+o9}2Gb|27?tfod-+w0#W37u*dI8X8S6h;AzCnc$Q~VPVazVn+>l)hzhwNGRf9S~ zpzRT&xJ5eP&238@_$AouE#-nUNXK_9he+`xCCmNGG9{U&(;l)bhL~tZ$+5++vJ`{i z)~whkXiYeVs`e<>505aKKo^ZCmW?Ntj18ifR}-+*gK2e`{HKc{GyW~fB@OJZgOQy2 ze`(fvJ2qZR*~%C}Ev> z?p^?hG@3dTJ&S!ZFN5Ih`0Hq4Gj!+9(6xXw*Y6p^jw`m1TqXnA` zFvpXdvSX~X5<&xS>0!ITz->O_wS2Q<5mIgZ&F%#09Rl9X5Hm%36+qb*jOyno@xTX$ z3KWW++dbVL`^yzvQFiau02gAsFQr1u2HS$A9kT#F9L!hm2JK>%rXJBgz@%!}%O!v= zDhK9#qu-M2GjUdErDZBIfxx?R`YGp6@g@Dh5wRS@`w=%Ng;mzpuqgxnG2M#0pYO(W zjyCJePlXA>wb@TUF2tV_rDQcZO@zwE3OR7c1pcr^S|f5-uNgf9I@CL)s0t3|YMgC+`uR^DscI^^(!r~lF&YjD9lg60@CRG~yX-->P_8?(Z z?5~rpm5I}Z5{6rFRunC@7iRWbBKCuj1M?JSD%v1zTLk{Jeo>g^wkl_C!A9=4w{L%@ zEIDPlsa#9n#xV9=pQzwQmtD><``2R_NWTH-tI?7%iE!}yIXgaeS9r`@htXfAxe8ChbWEA7JLpWgKv)d z?=(Ix#Y4;$w;YEPR5q<7ZJV_SwW* zZs~t_%3TwbwUoTLnS@ZK3txvoVc?3e~~XZ!#f^9ZHyEx3#s8 z%CCg-3t@$e{)epV+4s#}^7S<{zg=8%Ew`7doxv5E6)$m@=~z_#6MnYSM3__zi&Kvg z*m@V3ad7fAxUpA}q2F$Ix;`CMbJsOVI(6>RwxDk`+a>$nH%<^D{51bp>oC48nDT+W zs70sWgs6mFw+?ImeiKM(mFo1bQBEC#wa%3j4vm`TP~1Jtblcg1)XQ zMKjrQOrA}Q%6W;#und{LMh#ROQ?BN+CHRcZEj_1{4uP&)RY4U(U`+d&2i&D6pK=VA zQmKTMMOzJx?lahvbf=Ie$r2L#P8vm;D(Il}hUyrK%B?p;&Y_pR|8%N`cX!e?cYY>2 zS;S39qKS8-;I#qd_TOF;FYZ*c3#Qo3kPI`}dn^}wfzt9G%JO+~{PrM3-kr!%dx6Cf z)@HZ%O1XqZmz!0$!d}n*lB{kz4PQbIYQy@+-`NZ^AfAE zU6c*pFZ|#=n4EEP%TW0}vA^v$=%wxQQnGP(cw_7JA*7tY_dzBE{=t}QL&Wzz)+Y{4 zL-+@=m=hZcvpaz5YHqx83U#)$sjkReG{0X}dl3-rR_?!>hCJ82e1}HvTYUTO3l`X7 zRpiD%n*o*f5Vb$UW{!<1E>I+qPq`CndBxEKM1+;wSACYU6ct~rhM`NR#LZukR(Fdv*kbk6Ktqba z1PhP;1B`Qo*UocUJQ*z^g5c4JQ>04zou?D&Qn#)xclFezu(Ex!@B>8VOmo~=L)ALj z41?Kx=dtgqp4>>=%Cf#@Y78=bOIAIQv6v-$)l*kC!*HwZZc$+R=rdh!RQUo_c$=cQ z!c4N~Ik@=APBC%h)=FuVtYFbAwb#u2cl*zBiZ2%l3i(;L<&5+!P6V9%>3-)Od4x;O z`oDV@%1B=fLi6B76#{RhI^Dy29SUnxZdLM?wsMv2o^X=03Nvr_nr$;|ynKwtW0}TT zeg-SuO697b&f*s1N%68Hw;W2Mu#r!xnfL%C`Lk5saZaaX0X?i)Dko&cu?dHVzq~fb zw^>6lPRv3J*MXk3*PHt9a=EY7o3b?YxBuaqiHUZ`G`ttD@NFC$?v$}VlkGlszNw}( zR^ZCzzsn#s3@q~98GlUiUmI;(Mxqy{Q{#;^BY(4LxQ+)^X7EjdzkA&{2X$iL34u?G zj()v*IqV*p5(I7Rp%C8xG}^G@KjF)GdqXfJIj7?!5Ia02e0C(>N$imBC2g$)XBMVM05{4b?6Z7QP43Er zX}7nkB8vqPV`u6FY*Lo9<8LDcWiTL|siUPnX|t;aGKs+vX_}fW{89zP{l{7ycR!Se ziz?LX*bW7Yo+d3Ru>>7qz z7!u|rvlhVdUiR0oph`%3#}4dpP81yUW^vjX2L=wga6BD;JnzWJPVGhg6$N=dx2gSt zPW;J^6(B)P_gzBYn7AQa+G@$M$On@%Qx$?@=4Vg2CyukTY;FNlg$@B`+`S3I*0{e3 z1V-XGJSZzWB)ZY`hXZ434^zHu;w|{@#SXlP z3lsF!2A`^Gr2II%fOSTc{7ptZ#370rx4$D5Ly%)Sk_5NJtZDn-MNd4r08Nq(%k0Ov zZ(|h5fIN{*{k$|yasPv+NOpw($`wliFu^u4tJ{9%-HQ*O1${}`$(e+S&f^c*T~`>6_o$C#=ZGYnxWj2>GDn z!2~SFQGaTtJAIQ>bQPRV*QC+mZ5;&b#H0F{RPRoW3$x*VQY)KSVv?{ z&_CAn870_H-m@T$>5Db8RmZxy{1*vSYe^t0rQcl{6ylVgqk_JXwaYLSH-JodVFKTG z|GUp%X;fycF7(M55=rg5vD#YA(t7Qo&r4p}VfiplUj?h8p$Fe=d{Gap>Ry0rlTcpV zchdge!@hL>_haCw>Hzs@f35YZ@_V|eP)kCIheSS`~IGt)sReWMTzhs_0y{r;K zCq_f*P8>i3hk2?Mh7+E{G5Is2bQwJ-@c5A*P39H(VG(pKlt#LP>8ZhYLxdqBvvk20L9jL>ul{d;OjfCO0x#jZ?~BI`9#Th|W8_QfxP;>`xs%-hdg8AP;>8g#Ci zIqUckGQ7X8%-^2T+vSov@HymQZS_a}XfM+-1w)v5mOLhDtrW?^(b(mK@KEU2Ob51g z5nn3Vj!Qv3#s4i?T5Rhx#Oq&J33|v!@}^_Op@qjOQhv>8x0^%)!b$`7l5fV{yC(2E zGq4~zlUu#DQYpcMZ;N(`Tgt3ybI&98pn6lAH9T+ zEcTa<(iZtNxoJqzN?Op=3!$=aH4@z-O_ms%ian@Z{N7<}=1%9v%#|bVwiN-XwDyoS z?0Ancr@YAcHbK9DyzA4Ps6k-zk5-w`u6Q^)+4K3-?+eP|JE~ABB@~`)fZ8Y1Cu-IXggH2_cXfzb5gn#X>3Lv&mY?%-d(r0G-8&wGxo4*agB*0-d); zR#No!K6NVRO4bpJ`1RYs)y}#0Y_dLz1zkp1e;m-E@k(YC;)5kIdtW17lP2rxb0)h~ zCc8KsPs)JLXh%VCQa}OD8%FDwCc8*(C=9fRCo6_I)qoxLCuR2H@;peyKIHu|6erR- zUC&jtuq{>`LlRb#vxl5p(id2==K~%y=Pg^tIlW=Nkco;YI(np=c%hDq76>ufPLIY&Y7>?Rc-zQ1!24RZ7E|l3ARF4}V;?VX=TJ zy7oO(P+ip>Z!DXfe&&Blp8t-19NsvJ?4tS8D=o%X_kd1>M16x&R8mC*9zQJdYi#X) zEcs=CORu;!TwP%;%9O`+2ed)_F|bkPG5Dxp@cpONYokz0**oJFd!h)=bdEU_MrYg* zK~3wsY8P}w!>1(f%*jdXjyg{pzj6uvj#jGb8`TXP&^1oZs-)CIa!p`7UJI2C{1qgv zZ?>J(@gLk8H+fDWrb12JXK3CxVLpClo9eow$YKe_>`lJw^>Z>7El^n3^mrV1obo_e zOAs`9l6GWp5s$boR`J1ZeN8vUH>lK(Pj*7V$#@O3Tfi9sAVX0%@<_pO3*w9tXkj9o zqjfS)?skM2q*t|`r4f{U!|!z751F-S{s4lF0?Eh z(}HGE6zu>0`~_fk0&X{QR+KfmwdkJCQ+$LC_V5ZWmq{DTN1aaEr1e!A9qcS zWQSknyV>a`6{PX1i@<`e=hoWBeHfWa%Sg{(-d^Z~>Y9M^3|eWV70?z2wWS~#$?gET zaDe*BIo)1r6;p|A)i+ngMxp)&6pgN6HB8p7s+2SyBp=A_WlV|spj@bofZV5IM z%Hy+5twoG`nCm9q?uWUHCb$~AFKHPzCr!39;=)679vq!YaKpRRCHYF?WQdF-QW?RiDX8Z!J)q{u{BW zUzK-*o{$k$xcy1lbyKPTb~j|MeVg56&Jq2~oOTD3?qSSH0QSvB3#(n^@&YuF|Irqw41lgepg_MnOW=Uogb_1} zug*B1*=+&;;_UYAN^l70n^;bnkkp)xQ=Q=CtW<5iL~4{|ow0ahR=s`reozUQmi6K4 z|48SfN>4aVvU@7R8sEWllpxEl5d>&rHddHaOH8)$vf4_{x`U&naemuY>9y?9E*NPJ zeLYX=rB}UQX3WtI!b+a~15vllMSm4?8by&Mw+EDtPg2G3i{srZOeU3`0Be4ppcW539LI3bbsT>ukzYWZ^@Y0ZD@V$5% z5@o8R{x$~x9l=P-6e7p%@P4a!dWaUpC#BNp3cbe2n2PUv_FaGlLV9g7+nz|qtA%at zo|z~y-ja|GZgT9mo=ERFkMiB&dj_#O@J;NwBN~#pFnmlASVySbEVnNEiY!^xt)z}i zPqBOg0|~e8!#aycXisGS!Ugg|O9x&FR4VrRb+D)_{cKMs@T(L~^4z^1@7RVrG?$*H zu6sj5k0_l&dwdjJA_b#rvy?V-pA!ii=$9)ACpQL*moT`&fGE5c2x;m5v7!uGw)D%I z_7s2r{biFdnv(eikk_52g@Sb$*D)4p@TYo+Qg^40iSw_s6klCV<)*TAnef%r2{EBV!vxRmH-E9j1!yMtM&BW6huOuLAor$%5{Nc{Gm~ zP#R@^RZQ(4pxvX^2gKL^thB$Kgngj>6%Kh+;A-tx$J^kp}AyaX$tpWQD^tP+{uPPtTI{M(BYwo^QIc-tE;$W<*cqa&H< z-;KM90+o`Po91!=COUjDQC%O=?0CIQ7^3aD+7ibU&tz{4iP7q#6|>}s^+p^-A?nxvGU$IN@rcX`sAe;LKT?fQ6%bBY$qN!lGy4lCmyf-k^dvabThw;N zVBF_T9-GSfC0r!C>>=E>=BoQVh=^q^T$H{nJ~6;gC2
          ;E<^;~MiMH%Nbo zG{w9TBvi#`*Yk@mx>k76?C>jprw{acbSWhH@9B2MCRI1zczjI_mlJQ-PaIF*cw_SE z1@kz7QL+2zSlQh)nk5Cqtgvlyh*js1@<+wh&f0VM=0D=ers4Nhns!0>$K(^V#%02y z#`Vfsq(r@OF)b<0ucpz&=7r9?oX)7O0b|UYg{0fMM8GMXWFBZ`(jUn-@;m7(eww#T zI=aEAT8_?>t}`%vHZzz5Zi#m9I1RCMEt4`jh+lb0k({@Q7fA1h0uU z^H7b%CK#r)#w_%ZmrtuLW{8_sEH*4}IbT@=&ZX z^}?+@raz!M^W$&qX+f>*X({G6ZrY%f>jaEaU$fur3)y(5rSW0R`;BTjDo5S~M@3hp z$-4o}Zg!XfIob^@pwtxLowpP@?zPDx9?QnbEJs@S<(7yZJL`GK-C{CD+(=hnInQ+RB7;-Q;zD*Pls_wW5Ckf5DYjEpiR_^n04ag!3}RUNeW{tV{A5 zz7Fz1r5nZ@5|;8mOzp6~^S`3bMBn*3Spgm6QM;xJ3YT@ps!56<5NsbBDW&r2fbhv5 zuF)M<*i|x~wle4V6}{PS+#AmihVwKTPgVJb?joPSWIeDt^#cJ8*eZtuV_8#1Wa=Q@^hJv z8TS85^`c}NQkz0?OArz6?ZmE@a(8r9|Bs+ArR*KyxJ6*~Pt*Da);v)R>lxF}zW&-o zI`5{?6Cj1ur9YeaT{CZ7{e*YaJ&>FmLA%@Feq~vleUts;-|)q-_93QvppL+&BlkZQ zkp_6qUe`83mbaW|QI|es&Vwc|{kz`am3fHJ8oH`dn9+-RN~Pctw7z@sfJx-h``2!r z(s^dr8IPdpOXdgMGJRxkns-)3Eic6_OW)|7%nn^HORP!yA9(oENYkNBxKNWZlwj|E zIv*o`AWpEdS-z_L4LXeZrD5}=az<%)db^V6JtktRZY;>Mapt9-jr6W>9(W1r5~^bs z8pK?2$keWS`q=rm)%W_OAm*B&qD}{?--Y-HDlrb1KXm{6LvV-b98)mPYQ+>wz74ZG z60O5|@~@{48g(X*Gtb(rB5n@7d87fj?WgRw?zlznB%9XB@8Y(S$sSQ1*_H`utPxM5 zrzTyaYo=_=*<~}Dw=aj?Wvoza7G>eO239t5{R%>xtUGeQAJAZklAU04sGcxWm7lp^ zsS#I}(oFuk$UVe8`+ff3tB*FKNpef9ZL@+;(Oo6-aXP{`^IqY+0o%1xvdc`HWDPeW zeMk30V-LKb2AHyULYxeZSE{;4{W%KlfI&mW{+Iry9mn%HwKKWNY$Mu*!s#XD$-swI ztBRgj{>%ksx%8yp&6R*5?VcOW>UVy#UQBZ8T=)EwDkQ$<9eZkPh~%*MT4$qcwC9xV z_Tb|}T_KHqF88gvW$uP?7GJuZ_wzAQFHXC(g+A7Q+=bnDf!64}vCoV(8K7P8njJE1 zY!Ka7-6yw|aY)6A-vl%V|TU42ld z!Tvie$^V6C)9eROF~$dP9IVL+l%f2s5v>G29> zkM=)VapwsdsnYZv?+0#=%co1^-#)W{hM4EsRso#A!5>i!{45RL@#kK@A}L_sBAGri zRGABy5%>)%&xMVMqJkZa;oY^9D=Cf5O9q%`nonjG8;bd|cK`xu^qi#7yZv(DpMXqa zOdsLR@SLHzr9ab>KkxMudg?+lH1w%?Li#D=2lWddWqq1sAN_Gfq<>KD>_K$e;)Y*a zb!~B}^*iNUz*6Ef$WpqcwR0_oKo3mQnP?1e!#2TRGSk9GkWnsk!>JRkqfQbv5ownE$8UcDtIQv{@0 zhbMz58E=zyeu!@t4UlcT;Z{h&p}p}c0k(oBP#I(~-nxHW;FXEP(j>?^yyenWg2DA0NQpjv%;xQXj0AdXu<$rg@Cblx?>H14Q&=*wU>KRm1c_=9{&9Fw@b@3b)y2i~#QfJVbu3E}?y1X~8N-m$-EWRidlg_ElKa*(JFAMGM;~w0Q_m_|SVqVdq{= zKpU0J2>isWKHG@$6R#DoV(Y#_>%=zAmQ>SnN?0ljW!A_mhaZZN zHsh$Pf#eboNhL^IH>{Zf@2&o>3vb`ubn|8n|%doL-f!?#*Q2=@%K9BoT$anC>AoDSoB z2J~ddKsraCN%49WS^_HRspUUqU$~WuV7-8Zp=iUqbinA-UIMtF_F9>HP@Nw0q-0D6 zJ}paX@6W4F&4rCqiaN4BKMy(E9(C(xAZ#}K!1iu@mwk{^f3pnl7%dUM&z0(}I7j51 z`*lmR{OSsz6i=2eTK}gMd-IfiAVt(8rCQ6Lvt5^pp`388@X!wKXbZJtPxZW?%uuVM zMK^t$f5-;8iz<%26w?Nl+h3Np(V07w@z0vfwyuH&D0-Km!9EA=2k{UMxO7V-sbqt;DOnz4@f#wN-hmTF8A^8!xj zGs;RYt9Acw-+Qf~ks6qWI#kc*+Iif-#v~&z;Kj?tif9ppCpoOjzGRBIh1{r#bA2?V zo{x$xM=!079^L0Z3D35ON;Vx3JJ2igNA>lT5EeX9w|?|?W3H{%*7GM?V%)9EUzE!i zLP&#lL}dzqB7CtK3jjRTr0r?w)}qP9`i~m%lc}tB)Pl{Aq}OHk1lPOxTN zmtT~|K)ja%Vkzt1Nj5@(ms$?0q4mBJ`k)S4v*8tLvfUB@(+XW6f`$JfE6qKzWLjCR zVjwW#)e@YU-xD3!stM!;K=pLx+N)v`%|9n^5gG@J7Y)f&|9+5uNtyCDCgosOM3jNZ zsvJJKAudWLJDW-Rb5T^gm$Ywc-0m3JO0(nrqLo`C=I$rAZ}&82ukis+z)4T&+owRT zHiE^)3qTV~10PwZWL zpcQ9u;LSIs_$f`{raA*YIJnd{3074VKl*$7W+oqnoiu(k-ogU#H#5(Uj(QXYtie9KcK zOHlER#Jcf8u5#8Kh;Da^)h!~M1q`Ql^fvI(r6>s%I&!~CYDn3V%Rq#9{L|RJPpdMJ zRXw2XlWbb?Q~fd8^;PL=CY!sho=i-(;q*RF1&gRg`@V-luLBn!Nu`ev*B^ znhr%cHP1fuBR8&hG=I?q;H{aI&1beItzABpMDTdsbJOZ zDnJt4s<^ANTAY<6tYqwDP%*>iX5AH=8U(tD;L zx+bnF+dw^);swPIjM-C?MSjn+B!^jxPi&nZb4$T~3&o@k_;%RbJD6ji`N0*Nk<;NX zx6CrX)K>u7^452B5<(G3EV4-(pS4VXoPl31@?!BSmbGB?;S5|fSVMFIZH!6bdnFbF z>7tUH5yo~30>^c2PIQ@^yg+Xs)@UgX@l&gKiCHTS#Mbg;U>%k5k!D8o&e%p=&W%R{#Usm2eHIuNzS} zD^L<%@G|h5oHMgSU+?Wbx_4~eaSs7H=~*A17vdjq%22P4mhV1)*xyc%@Oy2vlmtkS zI!g?TJV2fqWj0qnSy&1=E>3{m@6pQ!^H6z00?+rz#28NAKTSs_8x1^!h0^19H7^6; z%fn2_ADR)RjqjWF2zo@+APA&1SN3rgmTFv{(4;7M%m~>h_Fio&;PE?C2N=n$#2`7X zc=q?Jf1IFIP(eTMr+>Bvd$S7b0Xmc>w!dPKCFp!Ga9Z9o;@CO*DM@y0M83UH+(w_O zQuoh#)?#M4h*;YVTYv^SkHbnf$u zT{8prpQJfWJTPEPB3;w&q?HA|tyJYvnp|YK4xUcpH5onaE&OiDNmR~@i1TyMYtGiU2MpEO za*;4=u&YQLyy;46nZ zft|dRJ1#rf5?Ju}HOP)d$w-mqpGkt6uI73#*&k>Q2dXIA(4ZirKvECbBjNNm*uOZk zH}My$NVr2vNGeX`8WPcF?*uk_BZeI7FuZqvI=oA@UNn}i`*2B(o#=WW6!oHG5Jd5` z?81t*5{{HtDW=IPaKQ5`cTD9rl(d=(?V7J&fQow>n#52R4 z?-MgO9#>yrR%Hk$s5M z@<27dB&1JNXb$Xks{>&(s4P_>m=YoZTV-~YiF^xe>U$DoT@>}i4R5OK%J5WsBbFcz zO0XHf4RfG=u3@?pH#Q z{97B)F-m~=;9b-zTH7H=A<671k3c*M7V>>Q8P5k>UX9Gh04`ro)zwFE6bb9t zEiYp%MWr!qMlcN?Ns)AS)GBsY91z(I1V{gURg1Vf+P1v@I1GxQbnYJt07CSS@UW4~ z)ZH$iuF1hI}^?1inBJ&Nyb`UFO|B6Y2XR*2TG zk^#}IXuO~Lrf4gUFU-8eTcVxa=$WHFuIKpVB?@W*&aSxGO?g`rfV?Hqf&6YUrUns7 z{Nk3bT$|F$k2ePe!;(3k!K{a5*6d&RgVF6sUF)h_Nw1=@)Ny+TN>%^4G{zB6e1`iE zohvd@^nP7$BUukAV~2qCw4E2^M-*{W@Vn^Hub^kUT!wM`M_u$qOQZKx|JFvAHy7;t zOM?#O7=Lau8Y@*wEBEjXH@NPietO{gKPN+zR4nnUB%zp9QL8{ls}NNnTz$aUs2MY5 zuho`slA)ei0@iAxpw2J)mMRDJ!_4Vmg!cnz@uQ$Bw7bj}UOYUv3 zh%p|#Q#+M5EqkKtM0;@BdL3{-fV~?jiM-DlSF2R!{ZFM46|7;Ntn)ABSxwPTbe(CF zxtk?_g#)s1Z7c`5zPsB^iNDR-1#Gi41B?+d{5sX`F=yIf}KV*{1U>-V0H@ z&Gi{<^^Hla{?_eF>hV6~eqyp}+Z7Ku!}=5E&0%tG4}NLBKIfa_Uw`yeWYOQH7?}|C z?W>)2#mVn#76!ft_J(ARJ#NT*+*PmsK!u=L`D*Yws`Z(k?~;hGP>6}T?>wwY+GX&E zs{=UM&M97R5X-h)U*#gpWyYA2@A!F+>mz1P2LGpmy@&+wpX)5DEx<8cJ;?Rvxt~m5 zBBZW8rY4-OSictZJ2K~mE3HZX4=4`oE7SKGvVhI%_pUX-v|P9>afF9MiwGYGc&AbNDCe+tqJrAzHh(=L?F1YG(*3kyee56ujGhk^>aLaHodzSoh#U54Nq z5Q+r@UtCKL)ytwMHdJP7ovR2sTl5h46v$6MdDZn;mB+UEa5O{Co&*y^Vfs{``V_@( zZmy?KYVd!k3J~7+U4ln}jS=LCG%6$X&zFCUuvb2mtuOp^GLrRuwPpjPx)1WzM$|;5 zs?@pB_zi!zI?b5uVKVl4>B~(5PD*vRemk=6x{X2wEeN3FsKumZ)|bpHz!$+4finOKor*$0wY7nB0sE} zlT8_Z^CG_DkfiFSR&^I0So#y-T6NL^mEHEcT_GhJ>jy1=zS6 z{!%FPXB28q?+aZ;1Krav3x*l4ZXN?KwEPmrxl>FNT^_~ z@Z1hdCi4eEIvX3HxvR#F9HsucePeY%T0KD0WqQkt)?mx?m&2%OX( zwi4tj!Vp+s?8-3BhuzdOLx#=Mzl2)ri%Jhjb8#hN@vo0*m^As-gqoTqYD;#JOYg9@ zN2CN0JQN6bRW5f`x&bd?w0f;Vb>&=Sc@@AxerMfT#e{BvMZ`rzrV< zZ%|+Te>{D4Toi2^F5RKhASEJ7cY}a*ODs#bbazUFbeFU=?2=2j0s_*obayuh2%O

          x_M!XPLE%oRD~2wx0)=+L_}4j? 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�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�Qk$3gocQAho6wcwBsW*0bL|R5~rW)SVwv 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�K?P&2!Ea%;4j$*|IW;x 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

        1. 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 Date: Wed, 1 Apr 2020 20:12:28 +0200 Subject: [PATCH 2080/3421] Add test for trades data conversation --- tests/data/test_history.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index fedf63353..8df968217 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -612,7 +612,7 @@ def test_jsondatahandler_ohlcv_get_pairs(testdatadir): def test_jsondatahandler_trades_get_pairs(testdatadir): pairs = JsonGzDataHandler.trades_get_pairs(testdatadir) # Convert to set to avoid failures due to sorting - assert set(pairs) == {'XRP/ETH'} + assert set(pairs) == {'XRP/ETH', 'XRP/OLD'} def test_jsondatahandler_ohlcv_purge(mocker, testdatadir): @@ -625,6 +625,17 @@ def test_jsondatahandler_ohlcv_purge(mocker, testdatadir): assert dh.ohlcv_purge('UNITTEST/NONEXIST', '5m') +def test_jsondatahandler_trades_load(mocker, testdatadir, caplog): + dh = JsonGzDataHandler(testdatadir) + logmsg = "Old trades format detected - converting" + dh.trades_load('XRP/ETH') + assert not log_has(logmsg, caplog) + + # Test conversation is happening + dh.trades_load('XRP/OLD') + assert log_has(logmsg, caplog) + + def test_jsondatahandler_trades_purge(mocker, testdatadir): mocker.patch.object(Path, "exists", MagicMock(return_value=False)) mocker.patch.object(Path, "unlink", MagicMock()) From 0d51383b57fa7a09410bdeab9398e3f2b0b27761 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 1 Apr 2020 20:31:21 +0200 Subject: [PATCH 2081/3421] Format logmessages correctly --- freqtrade/data/history/history_utils.py | 11 +++++++---- tests/data/test_history.py | 8 ++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index 27aadc17c..1b51b864c 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -15,6 +15,7 @@ from freqtrade.data.converter import (ohlcv_to_dataframe, from freqtrade.data.history.idatahandler import IDataHandler, get_datahandler from freqtrade.exceptions import OperationalException from freqtrade.exchange import Exchange +from freqtrade.misc import format_ms_time logger = logging.getLogger(__name__) @@ -271,10 +272,12 @@ def _download_trades_history(exchange: Exchange, if trades and since < trades[-1][0]: # Reset since to the last available point # - 5 seconds (to ensure we're getting all trades) + logger.info(f"Using last trade date -5s - Downloading trades for {pair} " + f"since: {format_ms_time(since)}.") since = trades[-1][0] - (5 * 1000) - logger.debug("Current Start: %s", trades[0][0] if trades else 'None') - logger.debug("Current End: %s", trades[-1][0] if trades else 'None') + logger.debug(f"Current Start: {format_ms_time(trades[0][0]) if trades else 'None'}") + logger.debug(f"Current End: {format_ms_time(trades[-1][0]) if trades else 'None'}") logger.info(f"Current Amount of trades: {len(trades)}") # Default since_ms to 30 days if nothing is given @@ -289,8 +292,8 @@ def _download_trades_history(exchange: Exchange, trades = trades_remove_duplicates(trades) data_handler.trades_store(pair, data=trades) - logger.debug("New Start: %s", trades[0][0]) - logger.debug("New End: %s", trades[-1][0]) + logger.debug(f"New Start: {format_ms_time(trades[0][0])}") + logger.debug(f"New End: {format_ms_time(trades[-1][0])}") logger.info(f"New Amount of trades: {len(trades)}") return True diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 8df968217..072bf00f5 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -547,18 +547,18 @@ def test_download_trades_history(trades_history, mocker, default_conf, testdatad assert log_has("New Amount of trades: 5", caplog) assert file1.is_file() - # clean files freshly downloaded - _clean_test_file(file1) ght_mock.reset_mock() - since_time = int(trades_history[-2][0] // 1000) + since_time = int(trades_history[-3][0] // 1000) + since_time2 = int(trades_history[-1][0] // 1000) timerange = TimeRange('date', None, since_time, 0) assert _download_trades_history(data_handler=data_handler, exchange=exchange, pair='ETH/BTC', timerange=timerange) assert ght_mock.call_count == 1 # Check this in seconds - since we had to convert to seconds above too. - assert int(ght_mock.call_args_list[0].kwargs['since'] // 1000) == since_time - 5 + assert int(ght_mock.call_args_list[0].kwargs['since'] // 1000) == since_time2 - 5 + # clean files freshly downloaded _clean_test_file(file1) mocker.patch('freqtrade.exchange.Exchange.get_historic_trades', From eab6c9c5f2838a0d464a5a5f3f2bf672e0f27f1e Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 1 Apr 2020 20:50:00 +0200 Subject: [PATCH 2082/3421] Fix message --- freqtrade/data/history/history_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index 1b51b864c..5cdcd7276 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -272,9 +272,9 @@ def _download_trades_history(exchange: Exchange, if trades and since < trades[-1][0]: # Reset since to the last available point # - 5 seconds (to ensure we're getting all trades) + since = trades[-1][0] - (5 * 1000) logger.info(f"Using last trade date -5s - Downloading trades for {pair} " f"since: {format_ms_time(since)}.") - since = trades[-1][0] - (5 * 1000) logger.debug(f"Current Start: {format_ms_time(trades[0][0]) if trades else 'None'}") logger.debug(f"Current End: {format_ms_time(trades[-1][0]) if trades else 'None'}") From 9d7ad23d426a1c5e135e05c07cbb24985285efa4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Apr 2020 08:20:50 +0200 Subject: [PATCH 2083/3421] Fix test leakage --- freqtrade/data/history/history_utils.py | 8 +++--- tests/conftest.py | 1 + tests/data/test_converter.py | 36 ++++++++++++++----------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index 5cdcd7276..4f3f75a87 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -260,7 +260,9 @@ def _download_trades_history(exchange: Exchange, """ try: - since = timerange.startts * 1000 if timerange and timerange.starttype == 'date' else None + since = timerange.startts * 1000 if \ + (timerange and timerange.starttype == 'date') else int(arrow.utcnow().shift( + days=-30).float_timestamp) * 1000 trades = data_handler.trades_load(pair) @@ -282,9 +284,7 @@ def _download_trades_history(exchange: Exchange, # Default since_ms to 30 days if nothing is given new_trades = exchange.get_historic_trades(pair=pair, - since=since if since else - int(arrow.utcnow().shift( - days=-30).float_timestamp) * 1000, + since=since, from_id=from_id, ) trades.extend(new_trades[1]) diff --git a/tests/conftest.py b/tests/conftest.py index 517a11b47..a4beeec33 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1233,6 +1233,7 @@ def trades_history(): [1565798399862, '126181332', None, 'sell', 0.019626, 0.011, 0.00021588599999999999], [1565798399872, '126181333', None, 'sell', 0.019626, 0.011, 0.00021588599999999999]] + @pytest.fixture(scope="function") def fetch_trades_result(): return [{'info': {'a': 126181329, diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index 463700d0c..4a580366f 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -218,33 +218,37 @@ def test_trades_dict_to_list(fetch_trades_result): assert t[6] == fetch_trades_result[i]['cost'] - def test_convert_trades_format(mocker, default_conf, testdatadir): - file = testdatadir / "XRP_ETH-trades.json.gz" - file_new = testdatadir / "XRP_ETH-trades.json" - _backup_file(file, copy_file=True) - default_conf['datadir'] = testdatadir + files = [{'old': testdatadir / "XRP_ETH-trades.json.gz", + 'new': testdatadir / "XRP_ETH-trades.json"}, + {'old': testdatadir / "XRP_OLD-trades.json.gz", + 'new': testdatadir / "XRP_OLD-trades.json"}, + ] + for file in files: + _backup_file(file['old'], copy_file=True) + assert not file['new'].exists() - assert not file_new.exists() + default_conf['datadir'] = testdatadir convert_trades_format(default_conf, convert_from='jsongz', convert_to='json', erase=False) - assert file_new.exists() - assert file.exists() + for file in files: + assert file['new'].exists() + assert file['old'].exists() - # Remove original file - file.unlink() + # Remove original file + file['old'].unlink() # Convert back convert_trades_format(default_conf, convert_from='json', convert_to='jsongz', erase=True) + for file in files: + assert file['old'].exists() + assert not file['new'].exists() - assert file.exists() - assert not file_new.exists() - - _clean_test_file(file) - if file_new.exists(): - file_new.unlink() + _clean_test_file(file['old']) + if file['new'].exists(): + file['new'].unlink() def test_convert_ohlcv_format(mocker, default_conf, testdatadir): From 46f1d1f39f0bb1bf2e7379ab6b520d0c8e1baa47 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Apr 2020 11:54:30 +0200 Subject: [PATCH 2084/3421] Failing test might be incompatibility --- tests/data/test_history.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 072bf00f5..6fd4d9569 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -556,7 +556,7 @@ def test_download_trades_history(trades_history, mocker, default_conf, testdatad assert ght_mock.call_count == 1 # Check this in seconds - since we had to convert to seconds above too. - assert int(ght_mock.call_args_list[0].kwargs['since'] // 1000) == since_time2 - 5 + assert int(ght_mock.call_args_list[0][1]['since'] // 1000) == since_time2 - 5 # clean files freshly downloaded _clean_test_file(file1) From cf6e6488c72c58e80567bdc90a27de0550c9154b Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Apr 2020 17:29:18 +0200 Subject: [PATCH 2085/3421] Fix filename handling with --strategy-list --- freqtrade/optimize/optimize_reports.py | 7 ++++--- tests/optimize/test_optimize_reports.py | 9 +++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 251da9159..646afb5df 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -24,13 +24,14 @@ def store_backtest_result(recordfilename: Path, all_results: Dict[str, DataFrame for index, t in results.iterrows()] if records: + filename = recordfilename if len(all_results) > 1: # Inject strategy to filename - recordfilename = Path.joinpath( + filename = Path.joinpath( recordfilename.parent, f'{recordfilename.stem}-{strategy}').with_suffix(recordfilename.suffix) - logger.info(f'Dumping backtest results to {recordfilename}') - file_dump_json(recordfilename, records) + logger.info(f'Dumping backtest results to {filename}') + file_dump_json(filename, records) def generate_text_table(data: Dict[str, Dict], stake_currency: str, max_open_trades: int, diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index f19668459..3bbc396c8 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -160,10 +160,15 @@ def test_backtest_record(default_conf, fee, mocker): # reset test to test with strategy name names = [] records = [] - results['Strat'] = pd.DataFrame() + results['Strat'] = results['DefStrat'] + results['Strat2'] = results['DefStrat'] store_backtest_result(Path("backtest-result.json"), results) # Assert file_dump_json was only called once - assert names == [Path('backtest-result-DefStrat.json')] + assert names == [ + Path('backtest-result-DefStrat.json'), + Path('backtest-result-Strat.json'), + Path('backtest-result-Strat2.json'), + ] records = records[0] # Ensure records are of correct type assert len(records) == 4 From 3fcd531eacbda7ca89e64ff68e0185efc8bd621d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 4 Nov 2019 20:19:43 +0100 Subject: [PATCH 2086/3421] Copy dataframe in interfac.py (reduces memory consumption) --- freqtrade/strategy/interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 89a38bf54..6307e664e 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -468,7 +468,7 @@ class IStrategy(ABC): Creates a dataframe and populates indicators for given candle (OHLCV) data Used by optimize operations only, not during dry / live runs. """ - return {pair: self.advise_indicators(pair_data, {'pair': pair}) + return {pair: self.advise_indicators(pair_data.copy(), {'pair': pair}) for pair, pair_data in data.items()} def advise_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: From de471862635f7344924c47ae91d2b00bd7a3c4e3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Jan 2020 11:42:31 +0100 Subject: [PATCH 2087/3421] Use .loc for assignments --- freqtrade/optimize/backtesting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 1725a7d13..f29f599a6 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -149,8 +149,8 @@ class Backtesting: # To avoid using data from future, we use buy/sell signals shifted # from the previous candle - df_analyzed.loc[:, 'buy'] = df_analyzed['buy'].shift(1) - df_analyzed.loc[:, 'sell'] = df_analyzed['sell'].shift(1) + df_analyzed.loc[:, 'buy'] = df_analyzed.loc[:, 'buy'].shift(1) + df_analyzed.loc[:, 'sell'] = df_analyzed.loc[:, 'sell'].shift(1) df_analyzed.drop(df_analyzed.head(1).index, inplace=True) From c465552df4b37be165157a1ad6c7e9e22e92f4b2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Apr 2020 20:17:54 +0200 Subject: [PATCH 2088/3421] Update comment to mention .copy() usage --- freqtrade/strategy/interface.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 6307e664e..c6f711b74 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -467,6 +467,9 @@ class IStrategy(ABC): """ Creates a dataframe and populates indicators for given candle (OHLCV) data Used by optimize operations only, not during dry / live runs. + Using .copy() to get a fresh copy of the dataframe for every strategy run. + Has positive effects on memory usage for whatever reason - also when + using only one strategy. """ return {pair: self.advise_indicators(pair_data.copy(), {'pair': pair}) for pair, pair_data in data.items()} From d4dde011405365fced9a93b2c916e31a66233344 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Apr 2020 20:23:20 +0200 Subject: [PATCH 2089/3421] Add test --- tests/strategy/test_interface.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 8bc399f42..1c31aeb6a 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -168,6 +168,19 @@ def test_ohlcvdata_to_dataframe(default_conf, testdatadir) -> None: assert len(processed['UNITTEST/BTC']) == 102 # partial candle was removed +def test_ohlcvdata_to_dataframe_copy(mocker, default_conf, testdatadir) -> None: + default_conf.update({'strategy': 'DefaultStrategy'}) + strategy = StrategyResolver.load_strategy(default_conf) + aimock = mocker.patch('freqtrade.strategy.interface.IStrategy.advise_indicators') + timerange = TimeRange.parse_timerange('1510694220-1510700340') + data = load_data(testdatadir, '1m', ['UNITTEST/BTC'], timerange=timerange, + fill_up_missing=True) + strategy.ohlcvdata_to_dataframe(data) + assert aimock.call_count == 1 + # Ensure that a copy of the dataframe is passed to advice_indicators + assert aimock.call_args_list[0][0][0] is not data + + def test_min_roi_reached(default_conf, fee) -> None: # Use list to confirm sequence does not matter From a99c53f1ec4f89cd5fa2fe6c57f958f9fa4fd1cf Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 5 Apr 2020 14:29:03 +0200 Subject: [PATCH 2090/3421] Add test showing that high is before low --- tests/data/test_btanalysis.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 463e5ae36..9f23ecf8f 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -191,3 +191,18 @@ def test_calculate_max_drawdown(testdatadir): assert low == Timestamp('2018-01-30 04:45:00', tz='UTC') with pytest.raises(ValueError, match='Trade dataframe empty.'): drawdown, h, low = calculate_max_drawdown(DataFrame()) + + +def test_calculate_max_drawdown2(): + values = [0.011580, 0.010048, 0.011340, 0.012161, 0.010416, 0.010009, 0.020024, + -0.024662, -0.022350, 0.020496, -0.029859, -0.030511, 0.010041, 0.010872, + -0.025782, 0.010400, 0.012374, 0.012467, 0.114741, 0.010303, 0.010088, + -0.033961, 0.010680, 0.010886, -0.029274, 0.011178, 0.010693, 0.010711] + + dates = [Arrow(2020, 1, 1).shift(days=i) for i in range(len(values))] + df = DataFrame(zip(values, dates), columns=['profit', 'open_time']) + drawdown, h, low = calculate_max_drawdown(df, date_col='open_time', value_col='profit') + assert isinstance(drawdown, float) + # High must be before low + assert h < low + assert drawdown == 0.091755 From e204170eb65055d487ab68e23150c658162d0007 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 5 Apr 2020 14:29:40 +0200 Subject: [PATCH 2091/3421] Fix max_drawdown bug finding low before high! --- freqtrade/data/btanalysis.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 23a9f720c..1ff737b90 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -219,7 +219,7 @@ def calculate_max_drawdown(trades: pd.DataFrame, *, date_col: str = 'close_time' max_drawdown_df['high_value'] = max_drawdown_df['cumulative'].cummax() max_drawdown_df['drawdown'] = max_drawdown_df['cumulative'] - max_drawdown_df['high_value'] - high_date = profit_results.loc[max_drawdown_df['high_value'].idxmax(), date_col] - low_date = profit_results.loc[max_drawdown_df['drawdown'].idxmin(), date_col] - + idxmin = max_drawdown_df['drawdown'].idxmin() + high_date = profit_results.loc[max_drawdown_df.iloc[:idxmin]['high_value'].idxmax(), date_col] + low_date = profit_results.loc[idxmin, date_col] return abs(min(max_drawdown_df['drawdown'])), high_date, low_date From 4e907e2304da16c5ed28f93aa239f244e4c2a79d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 5 Apr 2020 14:35:53 +0200 Subject: [PATCH 2092/3421] Use timeframe_to_prev_date to move trade-date to candle --- freqtrade/plot/plotting.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index b311c591a..5da067069 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -10,6 +10,7 @@ from freqtrade.data.btanalysis import (calculate_max_drawdown, create_cum_profit, extract_trades_of_period, load_trades) from freqtrade.data.converter import trim_dataframe +from freqtrade.exchange import timeframe_to_prev_date from freqtrade.data.history import load_data from freqtrade.misc import pair_to_filename from freqtrade.resolvers import StrategyResolver @@ -122,7 +123,8 @@ def add_profit(fig, row, data: pd.DataFrame, column: str, name: str) -> make_sub return fig -def add_max_drawdown(fig, row, trades: pd.DataFrame, df_comb: pd.DataFrame) -> make_subplots: +def add_max_drawdown(fig, row, trades: pd.DataFrame, df_comb: pd.DataFrame, + timeframe: str) -> make_subplots: """ Add scatter points indicating max drawdown """ @@ -132,8 +134,8 @@ def add_max_drawdown(fig, row, trades: pd.DataFrame, df_comb: pd.DataFrame) -> m drawdown = go.Scatter( x=[highdate, lowdate], y=[ - df_comb.loc[df_comb.index == highdate, 'cum_profit'], - df_comb.loc[df_comb.index == lowdate, 'cum_profit'], + df_comb.loc[timeframe_to_prev_date(timeframe, highdate), 'cum_profit'], + df_comb.loc[timeframe_to_prev_date(timeframe, lowdate), 'cum_profit'], ], mode='markers', name=f"Max drawdown {max_drawdown:.2f}%", @@ -405,7 +407,7 @@ def generate_profit_graph(pairs: str, data: Dict[str, pd.DataFrame], fig.add_trace(avgclose, 1, 1) fig = add_profit(fig, 2, df_comb, 'cum_profit', 'Profit') - fig = add_max_drawdown(fig, 2, trades, df_comb) + fig = add_max_drawdown(fig, 2, trades, df_comb, timeframe) for pair in pairs: profit_col = f'cum_profit_{pair}' From 41d5c40f1099a0f35c9906a6554edb7ff1de9015 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 5 Apr 2020 14:43:01 +0200 Subject: [PATCH 2093/3421] Correctly test drawdown plot --- freqtrade/data/btanalysis.py | 2 ++ tests/data/test_btanalysis.py | 4 ++++ tests/test_plotting.py | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 1ff737b90..4505ea52a 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -220,6 +220,8 @@ def calculate_max_drawdown(trades: pd.DataFrame, *, date_col: str = 'close_time' max_drawdown_df['drawdown'] = max_drawdown_df['cumulative'] - max_drawdown_df['high_value'] idxmin = max_drawdown_df['drawdown'].idxmin() + if idxmin == 0: + raise ValueError("No losing trade, therefore no drawdown.") high_date = profit_results.loc[max_drawdown_df.iloc[:idxmin]['high_value'].idxmax(), date_col] low_date = profit_results.loc[idxmin, date_col] return abs(min(max_drawdown_df['drawdown'])), high_date, low_date diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 9f23ecf8f..4eec20976 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -206,3 +206,7 @@ def test_calculate_max_drawdown2(): # High must be before low assert h < low assert drawdown == 0.091755 + + df = DataFrame(zip(values[:5], dates[:5]), columns=['profit', 'open_time']) + with pytest.raises(ValueError, match='No losing trade, therefore no drawdown.'): + calculate_max_drawdown(df, date_col='open_time', value_col='profit') diff --git a/tests/test_plotting.py b/tests/test_plotting.py index a5c965429..0258b94d1 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -266,7 +266,7 @@ def test_generate_profit_graph(testdatadir): filename = testdatadir / "backtest-result_test.json" trades = load_backtest_data(filename) timerange = TimeRange.parse_timerange("20180110-20180112") - pairs = ["TRX/BTC", "ADA/BTC"] + pairs = ["TRX/BTC", "XLM/BTC"] trades = trades[trades['close_time'] < pd.Timestamp('2018-01-12', tz='UTC')] data = history.load_data(datadir=testdatadir, @@ -292,7 +292,7 @@ def test_generate_profit_graph(testdatadir): profit = find_trace_in_fig_data(figure.data, "Profit") assert isinstance(profit, go.Scatter) - profit = find_trace_in_fig_data(figure.data, "Max drawdown 0.00%") + profit = find_trace_in_fig_data(figure.data, "Max drawdown 10.45%") assert isinstance(profit, go.Scatter) for pair in pairs: From 0a14d5ec467bdab197d1d100446f7c4dd5fdb698 Mon Sep 17 00:00:00 2001 From: Ork Blutt Date: Sun, 5 Apr 2020 16:14:02 +0200 Subject: [PATCH 2094/3421] trades history RPC --- freqtrade/rpc/api_server.py | 16 ++++++++++++- freqtrade/rpc/rpc.py | 47 +++++++++++++++++++++++++++++++++++++ scripts/rest_client.py | 7 ++++++ 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 8f4cc4787..7e0cdd71d 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -173,7 +173,8 @@ class ApiServer(RPC): view_func=self._show_config, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/ping', 'ping', view_func=self._ping, methods=['GET']) - + self.app.add_url_rule(f'{BASE_URI}/trades', 'trades', + view_func=self._trades, methods=['GET']) # Combined actions and infos self.app.add_url_rule(f'{BASE_URI}/blacklist', 'blacklist', view_func=self._blacklist, methods=['GET', 'POST']) @@ -357,6 +358,19 @@ class ApiServer(RPC): results = self._rpc_balance(self._config['stake_currency'], self._config.get('fiat_display_currency', '')) return self.rest_dump(results) + + @require_login + @rpc_catch_errors + def _trades(self): + """ + Handler for /trades. + + Returns the X last trades in json format + """ + last_trades_number = request.args.get('last_trades_number', 0) + last_trades_number = int(last_trades_number) + results = self._rpc_trade_history(last_trades_number) + return self.rest_dump(results) @require_login @rpc_catch_errors diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index a0f50b070..b0c045e4a 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -226,6 +226,53 @@ class RPC: for key, value in profit_days.items() ] + def _rpc_trade_history( + self, last_trades_number: int) -> List[List[Any]]: + """ Returns the X last trades """ + if last_trades_number > 0: + trades = Trade.get_trades().order_by(Trade.id.desc()).limit(last_trades_number) + else: + trades = Trade.get_trades().order_by(Trade.id.desc()).all() + + output = [] + + for trade in trades: + output.append({ + 'id': trade.id, + 'pair': trade.pair, + 'exchange': trade.exchange, + 'is_open': trade.is_open if trade.is_open is not None else 0, + 'open_rate': trade.open_rate, + 'close_rate': trade.close_rate, + 'fee_open': trade.fee_open, + 'fee_close': trade.fee_close, + 'open_rate_requested': trade.open_rate_requested, + 'open_trade_price': trade.open_trade_price, + 'close_rate_requested': trade.close_rate_requested, + 'close_profit': trade.close_profit, + 'close_profit_abs': trade.close_profit_abs, + 'stake_amount': trade.stake_amount, + 'amount': trade.amount, + 'open_date': trade.open_date, + 'close_date': trade.close_date, + 'open_order_id': trade.open_order_id, + 'stop_loss': trade.stop_loss, + 'stop_loss_pct': trade.stop_loss_pct, + 'initial_stop_loss': trade.initial_stop_loss, + 'initial_stop_loss_pct': trade.initial_stop_loss_pct, + 'stoploss_order_id': trade.stoploss_order_id, + 'stoploss_last_update': trade.stoploss_last_update, + 'max_rate': trade.max_rate, + 'min_rate': trade.min_rate, + 'sell_reason': trade.sell_reason, + 'strategy': trade.strategy, + 'ticker_interval': trade.ticker_interval, + }) + + return { + "trades" : output + } + def _rpc_trade_statistics( self, stake_currency: str, fiat_display_currency: str) -> Dict[str, Any]: """ Returns cumulative profit statistics """ diff --git a/scripts/rest_client.py b/scripts/rest_client.py index ccb33604f..5cbdd8e07 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -156,6 +156,13 @@ class FtRestClient(): """ return self._get("show_config") + def history(self, number=None): + """Return the amount of open trades. + + :return: json object + """ + return self._get("trades", params={"last_trades_number": number} if number else 0) + def whitelist(self): """Show the current whitelist. From 15c45b984d20d3079875d4b1480e9bac0067b7cd Mon Sep 17 00:00:00 2001 From: Ork Blutt Date: Sun, 5 Apr 2020 16:47:46 +0200 Subject: [PATCH 2095/3421] removing whitespace --- freqtrade/rpc/api_server.py | 2 +- freqtrade/rpc/rpc.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 7e0cdd71d..d2fb5bfad 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -358,7 +358,7 @@ class ApiServer(RPC): results = self._rpc_balance(self._config['stake_currency'], self._config.get('fiat_display_currency', '')) return self.rest_dump(results) - + @require_login @rpc_catch_errors def _trades(self): diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index b0c045e4a..a3506816b 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -270,7 +270,7 @@ class RPC: }) return { - "trades" : output + "trades": output } def _rpc_trade_statistics( From 8555c5b2110b29a65d20843fa1a66bf79a3a8219 Mon Sep 17 00:00:00 2001 From: Ork Blutt Date: Sun, 5 Apr 2020 17:03:51 +0200 Subject: [PATCH 2096/3421] fix return value --- freqtrade/rpc/rpc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index a3506816b..01e593e82 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -227,7 +227,7 @@ class RPC: ] def _rpc_trade_history( - self, last_trades_number: int) -> List[List[Any]]: + self, last_trades_number: int) -> Dict[str, List[Dict[str, Any]]]: """ Returns the X last trades """ if last_trades_number > 0: trades = Trade.get_trades().order_by(Trade.id.desc()).limit(last_trades_number) From 6256025c73ae59ce9f9f3c9e52216bd157db0a22 Mon Sep 17 00:00:00 2001 From: Ork Blutt Date: Mon, 6 Apr 2020 11:00:31 +0200 Subject: [PATCH 2097/3421] various adjustement from PR discussion --- freqtrade/persistence.py | 15 +++++++++++++- freqtrade/rpc/api_server.py | 5 ++--- freqtrade/rpc/rpc.py | 41 ++++++------------------------------- scripts/rest_client.py | 7 ++++--- 4 files changed, 26 insertions(+), 42 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 0d668596c..b0ef4bd8f 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -188,7 +188,7 @@ class Trade(_DECL_BASE): fee_close = Column(Float, nullable=False, default=0.0) open_rate = Column(Float) open_rate_requested = Column(Float) - # open_trade_price - calcuated via _calc_open_trade_price + # open_trade_price - calculated via _calc_open_trade_price open_trade_price = Column(Float) close_rate = Column(Float) close_rate_requested = Column(Float) @@ -233,6 +233,9 @@ class Trade(_DECL_BASE): return { 'trade_id': self.id, 'pair': self.pair, + 'is_open': self.is_open, + 'fee_open': self.fee_open, + 'fee_close': self.fee_close, 'open_date_hum': arrow.get(self.open_date).humanize(), 'open_date': self.open_date.strftime("%Y-%m-%d %H:%M:%S"), 'close_date_hum': (arrow.get(self.close_date).humanize() @@ -240,14 +243,24 @@ class Trade(_DECL_BASE): 'close_date': (self.close_date.strftime("%Y-%m-%d %H:%M:%S") if self.close_date else None), 'open_rate': self.open_rate, + 'open_rate_requested': self.open_rate_requested, + 'open_trade_price': self.open_trade_price, 'close_rate': self.close_rate, + 'close_rate_requested': self.close_rate_requested, 'amount': round(self.amount, 8), 'stake_amount': round(self.stake_amount, 8), + 'close_profit': self.close_profit, + 'sell_reason': self.sell_reason, 'stop_loss': self.stop_loss, 'stop_loss_pct': (self.stop_loss_pct * 100) if self.stop_loss_pct else None, 'initial_stop_loss': self.initial_stop_loss, 'initial_stop_loss_pct': (self.initial_stop_loss_pct * 100 if self.initial_stop_loss_pct else None), + 'min_rate': self.min_rate, + 'max_rate': self.max_rate, + 'strategy': self.strategy, + 'ticker_interval': self.ticker_interval, + 'open_order_id': self.open_order_id, } def adjust_min_max_rates(self, current_price: float) -> None: diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index d2fb5bfad..0335bb151 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -367,9 +367,8 @@ class ApiServer(RPC): Returns the X last trades in json format """ - last_trades_number = request.args.get('last_trades_number', 0) - last_trades_number = int(last_trades_number) - results = self._rpc_trade_history(last_trades_number) + limit = int(request.args.get('limit', 0)) + results = self._rpc_trade_history(limit) return self.rest_dump(results) @require_login diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 01e593e82..b78856265 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -227,50 +227,21 @@ class RPC: ] def _rpc_trade_history( - self, last_trades_number: int) -> Dict[str, List[Dict[str, Any]]]: + self, limit: int) -> Dict[str, List[Dict[str, Any]]]: """ Returns the X last trades """ - if last_trades_number > 0: - trades = Trade.get_trades().order_by(Trade.id.desc()).limit(last_trades_number) + if limit > 0: + trades = Trade.get_trades().order_by(Trade.id.desc()).limit(limit) else: trades = Trade.get_trades().order_by(Trade.id.desc()).all() output = [] for trade in trades: - output.append({ - 'id': trade.id, - 'pair': trade.pair, - 'exchange': trade.exchange, - 'is_open': trade.is_open if trade.is_open is not None else 0, - 'open_rate': trade.open_rate, - 'close_rate': trade.close_rate, - 'fee_open': trade.fee_open, - 'fee_close': trade.fee_close, - 'open_rate_requested': trade.open_rate_requested, - 'open_trade_price': trade.open_trade_price, - 'close_rate_requested': trade.close_rate_requested, - 'close_profit': trade.close_profit, - 'close_profit_abs': trade.close_profit_abs, - 'stake_amount': trade.stake_amount, - 'amount': trade.amount, - 'open_date': trade.open_date, - 'close_date': trade.close_date, - 'open_order_id': trade.open_order_id, - 'stop_loss': trade.stop_loss, - 'stop_loss_pct': trade.stop_loss_pct, - 'initial_stop_loss': trade.initial_stop_loss, - 'initial_stop_loss_pct': trade.initial_stop_loss_pct, - 'stoploss_order_id': trade.stoploss_order_id, - 'stoploss_last_update': trade.stoploss_last_update, - 'max_rate': trade.max_rate, - 'min_rate': trade.min_rate, - 'sell_reason': trade.sell_reason, - 'strategy': trade.strategy, - 'ticker_interval': trade.ticker_interval, - }) + output.append(trade.to_json()) return { - "trades": output + "trades": output, + "trades_count": len(output) } def _rpc_trade_statistics( diff --git a/scripts/rest_client.py b/scripts/rest_client.py index 5cbdd8e07..116c00063 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -156,12 +156,13 @@ class FtRestClient(): """ return self._get("show_config") - def history(self, number=None): - """Return the amount of open trades. + def history(self, limit=None): + """Return trades history. + :param limit: Limits trades to the X last trades . No limit to get all the trades. :return: json object """ - return self._get("trades", params={"last_trades_number": number} if number else 0) + return self._get("trades", params={"limit": limit} if limit else 0) def whitelist(self): """Show the current whitelist. From a1e81a51efcc8497e1cdae8cb0303d894b6f2a17 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2020 09:09:54 +0000 Subject: [PATCH 2098/3421] Bump ccxt from 1.25.38 to 1.25.81 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.25.38 to 1.25.81. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.25.38...1.25.81) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 3c9802990..7e873aa83 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.25.38 +ccxt==1.25.81 SQLAlchemy==1.3.15 python-telegram-bot==12.5 arrow==0.15.5 From 5de7ee3bdb1f11d3ae082face12a960c804136db Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2020 09:10:07 +0000 Subject: [PATCH 2099/3421] Bump plotly from 4.5.4 to 4.6.0 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.5.4 to 4.6.0. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.5.4...v4.6.0) Signed-off-by: dependabot-preview[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index 7a5b21e2d..3db48a201 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.5.4 +plotly==4.6.0 From 144d252e19bff28837f3f22fb29b3d42024e99eb Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2020 09:10:30 +0000 Subject: [PATCH 2100/3421] Bump flask from 1.1.1 to 1.1.2 Bumps [flask](https://github.com/pallets/flask) from 1.1.1 to 1.1.2. - [Release notes](https://github.com/pallets/flask/releases) - [Changelog](https://github.com/pallets/flask/blob/master/CHANGES.rst) - [Commits](https://github.com/pallets/flask/compare/1.1.1...1.1.2) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 3c9802990..310383680 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -24,7 +24,7 @@ python-rapidjson==0.9.1 sdnotify==0.3.2 # Api server -flask==1.1.1 +flask==1.1.2 # Support for colorized terminal output colorama==0.4.3 From 0b30cb7f8f42fd0e1fe430c3ec5299fda03dec09 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2020 09:11:33 +0000 Subject: [PATCH 2101/3421] Bump pytest-mock from 2.0.0 to 3.0.0 Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 2.0.0 to 3.0.0. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v2.0.0...v3.0.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 01f189c56..814003cbf 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,7 +11,7 @@ mypy==0.770 pytest==5.4.1 pytest-asyncio==0.10.0 pytest-cov==2.8.1 -pytest-mock==2.0.0 +pytest-mock==3.0.0 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents From be76e3c55482e9ae55bc820ca8b8e53dec247b75 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2020 09:23:21 +0000 Subject: [PATCH 2102/3421] Bump python-telegram-bot from 12.5 to 12.5.1 Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.5 to 12.5.1. - [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases) - [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst) - [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.5...v12.5.1) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 7e873aa83..7f2b39ff2 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -2,7 +2,7 @@ # mainly used for Raspberry pi installs ccxt==1.25.81 SQLAlchemy==1.3.15 -python-telegram-bot==12.5 +python-telegram-bot==12.5.1 arrow==0.15.5 cachetools==4.0.0 requests==2.23.0 From 815660c0700726d7c7cb9a8b82bf9e76186f016f Mon Sep 17 00:00:00 2001 From: Ork Blutt Date: Mon, 6 Apr 2020 11:32:00 +0200 Subject: [PATCH 2103/3421] fix tests --- tests/rpc/test_rpc.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 47ffb771b..875a234b2 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -49,6 +49,18 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'base_currency': 'BTC', 'open_date': ANY, 'open_date_hum': ANY, + 'is_open': ANY, + 'fee_open': ANY, + 'fee_close': ANY, + 'open_rate_requested': ANY, + 'open_trade_price': ANY, + 'close_rate_requested': ANY, + 'sell_reason': ANY, + 'min_rate': ANY, + 'max_rate': ANY, + 'strategy': ANY, + 'ticker_interval': ANY, + 'open_order_id': ANY, 'close_date': None, 'close_date_hum': None, 'open_rate': 1.098e-05, @@ -76,6 +88,18 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'base_currency': 'BTC', 'open_date': ANY, 'open_date_hum': ANY, + 'is_open': ANY, + 'fee_open': ANY, + 'fee_close': ANY, + 'open_rate_requested': ANY, + 'open_trade_price': ANY, + 'close_rate_requested': ANY, + 'sell_reason': ANY, + 'min_rate': ANY, + 'max_rate': ANY, + 'strategy': ANY, + 'ticker_interval': ANY, + 'open_order_id': ANY, 'close_date': None, 'close_date_hum': None, 'open_rate': 1.098e-05, From d5609d49972f2d8ddc873b945090bba2635db00f Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Mon, 6 Apr 2020 13:12:32 +0200 Subject: [PATCH 2104/3421] Changed back to progressbar2 for better handling of logger. Coloring still needs some work (bug + what colors to use) --- freqtrade/optimize/hyperopt.py | 107 ++++++++++++++++++--------------- requirements-hyperopt.txt | 2 +- setup.py | 1 + 3 files changed, 59 insertions(+), 51 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index a5921703f..1adaf54e1 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -22,7 +22,7 @@ from colorama import init as colorama_init from joblib import (Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects) from pandas import DataFrame, json_normalize, isna -from tqdm import tqdm +import progressbar import tabulate from os import path import io @@ -44,7 +44,8 @@ with warnings.catch_warnings(): from skopt import Optimizer from skopt.space import Dimension - +progressbar.streams.wrap_stderr() +progressbar.streams.wrap_stdout() logger = logging.getLogger(__name__) @@ -682,55 +683,67 @@ class Hyperopt: logger.info(f'Effective number of parallel workers used: {jobs}') # Define progressbar - self.progress_bar = tqdm( - total=self.total_epochs, ncols=108, unit=' Epoch', - bar_format='Epoch {n_fmt}/{total_fmt} ({percentage:3.0f}%)|{bar}|' - ' [{elapsed}<{remaining} {rate_fmt}{postfix}]' - ) + if self.print_colorized: + widgets = [ + ' [Epoch ', progressbar.Counter(), ' of ', str(self.total_epochs), + ' (', progressbar.Percentage(), ')] ', + progressbar.Bar(marker=progressbar.AnimatedMarker( + fill='█', + fill_wrap='\x1b[32m{}\x1b[39m', + marker_wrap='\x1b[31m{}\x1b[39m', + )), + ' [', progressbar.ETA(), ', ', progressbar.Timer(), ']', + ] + else: + widgets = [ + ' [Epoch ', progressbar.Counter(), ' of ', str(self.total_epochs), '] ', + progressbar.Bar(marker='█'), + ' [', progressbar.ETA(), ', ', progressbar.Timer(), ']', + ] + with progressbar.ProgressBar( + maxval=self.total_epochs, redirect_stdout=True, redirect_stderr=True, + widgets=widgets + ) as pbar: + EVALS = ceil(self.total_epochs / jobs) + for i in range(EVALS): + # Correct the number of epochs to be processed for the last + # iteration (should not exceed self.total_epochs in total) + n_rest = (i + 1) * jobs - self.total_epochs + current_jobs = jobs - n_rest if n_rest > 0 else jobs - EVALS = ceil(self.total_epochs / jobs) - for i in range(EVALS): - # Correct the number of epochs to be processed for the last - # iteration (should not exceed self.total_epochs in total) - n_rest = (i + 1) * jobs - self.total_epochs - current_jobs = jobs - n_rest if n_rest > 0 else jobs + asked = self.opt.ask(n_points=current_jobs) + f_val = self.run_optimizer_parallel(parallel, asked, i) + self.opt.tell(asked, [v['loss'] for v in f_val]) + self.fix_optimizer_models_list() - asked = self.opt.ask(n_points=current_jobs) - f_val = self.run_optimizer_parallel(parallel, asked, i) - self.opt.tell(asked, [v['loss'] for v in f_val]) - self.fix_optimizer_models_list() + # Calculate progressbar outputs + for j, val in enumerate(f_val): + # Use human-friendly indexes here (starting from 1) + current = i * jobs + j + 1 + val['current_epoch'] = current + val['is_initial_point'] = current <= INITIAL_POINTS - # Calculate progressbar outputs - for j, val in enumerate(f_val): - # Use human-friendly indexes here (starting from 1) - current = i * jobs + j + 1 - val['current_epoch'] = current - val['is_initial_point'] = current <= INITIAL_POINTS - logger.debug(f"Optimizer epoch evaluated: {val}") + logger.debug(f"Optimizer epoch evaluated: {val}") - is_best = self.is_best_loss(val, self.current_best_loss) - # This value is assigned here and not in the optimization method - # to keep proper order in the list of results. That's because - # evaluations can take different time. Here they are aligned in the - # order they will be shown to the user. - val['is_best'] = is_best - output = self.get_results(val) - if output: - self.progress_bar.write(output) - self.progress_bar.ncols = 108 - self.progress_bar.update(1) + is_best = self.is_best_loss(val, self.current_best_loss) + # This value is assigned here and not in the optimization method + # to keep proper order in the list of results. That's because + # evaluations can take different time. Here they are aligned in the + # order they will be shown to the user. + val['is_best'] = is_best + self.print_results(val) - if is_best: - self.current_best_loss = val['loss'] - self.trials.append(val) - # Save results after each best epoch and every 100 epochs - if is_best or current % 100 == 0: - self.save_trials() - self.progress_bar.ncols = 108 - self.progress_bar.close() + if is_best: + self.current_best_loss = val['loss'] + self.trials.append(val) + + # Save results after each best epoch and every 100 epochs + if is_best or current % 100 == 0: + self.save_trials() + + pbar.update(current) except KeyboardInterrupt: - self.progress_bar.close() print('User interrupted..') self.save_trials(final=True) @@ -743,9 +756,3 @@ class Hyperopt: # This is printed when Ctrl+C is pressed quickly, before first epochs have # a chance to be evaluated. print("No epochs evaluated yet, no best result.") - - def __getstate__(self): - state = self.__dict__.copy() - del state['trials'] - del state['progress_bar'] - return state diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 7469674cd..6df1eb157 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -7,4 +7,4 @@ scikit-learn==0.22.2.post1 scikit-optimize==0.7.4 filelock==3.0.12 joblib==0.14.1 -tqdm==4.43.0 +progressbar2==3.50.1 diff --git a/setup.py b/setup.py index 7890f862e..94c48a6a7 100644 --- a/setup.py +++ b/setup.py @@ -24,6 +24,7 @@ hyperopt = [ 'scikit-optimize', 'filelock', 'joblib', + 'progressbar2', ] develop = [ From c1f9595086b3a3b2f7871ac0818c878a9c11b876 Mon Sep 17 00:00:00 2001 From: Ork Blutt Date: Mon, 6 Apr 2020 15:49:24 +0200 Subject: [PATCH 2105/3421] fix broken tests --- tests/rpc/test_rpc_apiserver.py | 33 +++++++++++++++++++++++++++++++-- tests/test_persistence.py | 30 ++++++++++++++++++++++++++++-- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index e0abd886d..79073825d 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -444,7 +444,22 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'stake_amount': 0.001, 'stop_loss': 0.0, 'stop_loss_pct': None, - 'trade_id': 1}] + 'trade_id': 1, + 'close_rate_requested': None, + 'current_profit': -0.41, + 'current_rate': 1.099e-05, + 'fee_close': 0.0025, + 'fee_open': 0.0025, + 'open_date': ANY, + 'is_open': True, + 'max_rate': 0.0, + 'min_rate': None, + 'open_order_id': ANY, + 'open_rate_requested': 1.098e-05, + 'open_trade_price': 0.0010025, + 'sell_reason': None, + 'strategy': 'DefaultStrategy', + 'ticker_interval': 5}] def test_api_version(botclient): @@ -533,7 +548,21 @@ def test_api_forcebuy(botclient, mocker, fee): 'stake_amount': 1, 'stop_loss': None, 'stop_loss_pct': None, - 'trade_id': None} + 'trade_id': None, + 'close_profit': None, + 'close_rate_requested': None, + 'fee_close': 0.0025, + 'fee_open': 0.0025, + 'is_open': False, + 'max_rate': None, + 'min_rate': None, + 'open_order_id': '123456', + 'open_rate_requested': None, + 'open_trade_price': 0.2460546025, + 'sell_reason': None, + 'strategy': None, + 'ticker_interval': None + } def test_api_forcesell(botclient, mocker, ticker, fee, markets): diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 991922cba..c6de10e3d 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -777,18 +777,31 @@ def test_to_json(default_conf, fee): assert result == {'trade_id': None, 'pair': 'ETH/BTC', + 'is_open': None, 'open_date_hum': '2 hours ago', 'open_date': trade.open_date.strftime("%Y-%m-%d %H:%M:%S"), + 'open_order_id': 'dry_run_buy_12345', 'close_date_hum': None, 'close_date': None, 'open_rate': 0.123, + 'open_rate_requested': None, + 'open_trade_price': 15.1668225, + 'fee_close': 0.0025, + 'fee_open': 0.0025, 'close_rate': None, + 'close_rate_requested': None, 'amount': 123.0, 'stake_amount': 0.001, + 'close_profit': None, + 'sell_reason': None, 'stop_loss': None, 'stop_loss_pct': None, 'initial_stop_loss': None, - 'initial_stop_loss_pct': None} + 'initial_stop_loss_pct': None, + 'min_rate': None, + 'max_rate': None, + 'strategy': None, + 'ticker_interval': None} # Simulate dry_run entries trade = Trade( @@ -819,7 +832,20 @@ def test_to_json(default_conf, fee): 'stop_loss': None, 'stop_loss_pct': None, 'initial_stop_loss': None, - 'initial_stop_loss_pct': None} + 'initial_stop_loss_pct': None, + 'close_profit': None, + 'close_rate_requested': None, + 'fee_close': 0.0025, + 'fee_open': 0.0025, + 'is_open': None, + 'max_rate': None, + 'min_rate': None, + 'open_order_id': None, + 'open_rate_requested': None, + 'open_trade_price': 12.33075, + 'sell_reason': None, + 'strategy': None, + 'ticker_interval': None} def test_stoploss_reinitialization(default_conf, fee): From 20abb379aaeaea97f63b193d5e1a2caddb892533 Mon Sep 17 00:00:00 2001 From: orehunt Date: Mon, 6 Apr 2020 15:49:59 +0200 Subject: [PATCH 2106/3421] trim trades to the available ohlcv data before plotting profits --- freqtrade/data/btanalysis.py | 13 ++++++++++--- freqtrade/plot/plotting.py | 3 +++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 23a9f720c..780980ad6 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -151,13 +151,20 @@ def load_trades(source: str, db_url: str, exportfilename: Path, return load_backtest_data(exportfilename) -def extract_trades_of_period(dataframe: pd.DataFrame, trades: pd.DataFrame) -> pd.DataFrame: +def extract_trades_of_period(dataframe: pd.DataFrame, trades: pd.DataFrame, + date_index=False) -> pd.DataFrame: """ Compare trades and backtested pair DataFrames to get trades performed on backtested period :return: the DataFrame of a trades of period """ - trades = trades.loc[(trades['open_time'] >= dataframe.iloc[0]['date']) & - (trades['close_time'] <= dataframe.iloc[-1]['date'])] + if date_index: + trades_start = dataframe.index[0] + trades_stop = dataframe.index[-1] + else: + trades_start = dataframe.iloc[0]['date'] + trades_stop = dataframe.iloc[-1]['date'] + trades = trades.loc[(trades['open_time'] >= trades_start) & + (trades['close_time'] <= trades_stop)] return trades diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 5da067069..6dcb71cc4 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -385,6 +385,9 @@ def generate_profit_graph(pairs: str, data: Dict[str, pd.DataFrame], # Combine close-values for all pairs, rename columns to "pair" df_comb = combine_dataframes_with_mean(data, "close") + # Trim trades to available OHLCV data + trades = extract_trades_of_period(df_comb, trades, date_index=True) + # Add combined cumulative profit df_comb = create_cum_profit(df_comb, trades, 'cum_profit', timeframe) From 2444fb9cd6afe8fe9cd086872d7e6d0b29e95ab7 Mon Sep 17 00:00:00 2001 From: Ork Blutt Date: Mon, 6 Apr 2020 15:56:57 +0200 Subject: [PATCH 2107/3421] fix broken tests: remove duplicated value --- tests/rpc/test_rpc_apiserver.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 79073825d..c96f68f29 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -446,7 +446,6 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'stop_loss_pct': None, 'trade_id': 1, 'close_rate_requested': None, - 'current_profit': -0.41, 'current_rate': 1.099e-05, 'fee_close': 0.0025, 'fee_open': 0.0025, From 200111fef6b4b8ff90818a4e76d6caa207fb4034 Mon Sep 17 00:00:00 2001 From: Ork Blutt Date: Mon, 6 Apr 2020 16:07:43 +0200 Subject: [PATCH 2108/3421] fix method return value --- freqtrade/rpc/rpc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index b78856265..35386760d 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -227,7 +227,7 @@ class RPC: ] def _rpc_trade_history( - self, limit: int) -> Dict[str, List[Dict[str, Any]]]: + self, limit: int) -> Dict: """ Returns the X last trades """ if limit > 0: trades = Trade.get_trades().order_by(Trade.id.desc()).limit(limit) From c95906cfcf89210b7045fc9f95ace14aa6c2cc31 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Tue, 7 Apr 2020 10:42:15 +0200 Subject: [PATCH 2109/3421] Update hyperopt.py --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 1adaf54e1..a839d2111 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -649,7 +649,7 @@ class Hyperopt: self.hyperopt_table_header = -1 data, timerange = self.backtesting.load_bt_data() - preprocessed = self.backtesting.strategy.tickerdata_to_dataframe(data) + preprocessed = self.backtesting.strategy.ohlcvdata_to_dataframe(data) # Trim startup period from analyzed dataframe for pair, df in preprocessed.items(): preprocessed[pair] = trim_dataframe(df, timerange) From 132f5f73f5bd7c083891802704e7bb208b12012b Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Tue, 7 Apr 2020 10:44:18 +0200 Subject: [PATCH 2110/3421] Update hyperopt.py --- freqtrade/optimize/hyperopt.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index a839d2111..bf32997c1 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -650,6 +650,7 @@ class Hyperopt: data, timerange = self.backtesting.load_bt_data() preprocessed = self.backtesting.strategy.ohlcvdata_to_dataframe(data) + # Trim startup period from analyzed dataframe for pair, df in preprocessed.items(): preprocessed[pair] = trim_dataframe(df, timerange) From bdc85ec89b23a99abebe8722da799d81c42a208c Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 7 Apr 2020 19:42:16 +0200 Subject: [PATCH 2111/3421] Move create_mock_tests to conftest and add test for test_trade-history --- tests/conftest.py | 46 +++++++++++++++++++++++++++++++++ tests/data/test_btanalysis.py | 2 +- tests/rpc/test_rpc.py | 28 +++++++++++++++++++- tests/test_persistence.py | 48 +---------------------------------- 4 files changed, 75 insertions(+), 49 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 64d0cd5ee..da1fbd6d4 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -166,6 +166,52 @@ def patch_get_signal(freqtrade: FreqtradeBot, value=(True, False)) -> None: freqtrade.exchange.refresh_latest_ohlcv = lambda p: None +def create_mock_trades(fee): + """ + Create some fake trades ... + """ + # Simulate dry_run entries + trade = Trade( + pair='ETH/BTC', + stake_amount=0.001, + amount=123.0, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_rate=0.123, + exchange='bittrex', + open_order_id='dry_run_buy_12345' + ) + Trade.session.add(trade) + + trade = Trade( + pair='ETC/BTC', + stake_amount=0.001, + amount=123.0, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_rate=0.123, + close_rate=0.128, + close_profit=0.005, + exchange='bittrex', + is_open=False, + open_order_id='dry_run_sell_12345' + ) + Trade.session.add(trade) + + # Simulate prod entry + trade = Trade( + pair='ETC/BTC', + stake_amount=0.001, + amount=123.0, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_rate=0.123, + exchange='bittrex', + open_order_id='prod_buy_12345' + ) + Trade.session.add(trade) + + @pytest.fixture(autouse=True) def patch_coingekko(mocker) -> None: """ diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 463e5ae36..0edad8e78 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -15,7 +15,7 @@ from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, load_backtest_data, load_trades, load_trades_from_db) from freqtrade.data.history import load_data, load_pair_history -from tests.test_persistence import create_mock_trades +from tests.conftest import create_mock_trades def test_load_backtest_data(testdatadir): diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 875a234b2..d2af4bd87 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -13,7 +13,7 @@ from freqtrade.persistence import Trade from freqtrade.rpc import RPC, RPCException from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.state import State -from tests.conftest import get_patched_freqtradebot, patch_get_signal +from tests.conftest import get_patched_freqtradebot, patch_get_signal, create_mock_trades # Functions for recurrent object patching @@ -211,6 +211,32 @@ def test_rpc_daily_profit(default_conf, update, ticker, fee, rpc._rpc_daily_profit(0, stake_currency, fiat_display_currency) +def test_rpc_trade_history(mocker, default_conf, markets, fee): + mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=markets) + ) + + freqtradebot = get_patched_freqtradebot(mocker, default_conf) + create_mock_trades(fee) + rpc = RPC(freqtradebot) + rpc._fiat_converter = CryptoToFiatConverter() + trades = rpc._rpc_trade_history(2) + assert len(trades['trades']) == 2 + assert trades['trades_count'] == 2 + assert isinstance(trades['trades'][0], dict) + assert isinstance(trades['trades'][1], dict) + + trades = rpc._rpc_trade_history(0) + assert len(trades['trades']) == 3 + assert trades['trades_count'] == 3 + # The first trade is for ETH ... sorting is descending + assert trades['trades'][-1]['pair'] == 'ETH/BTC' + assert trades['trades'][0]['pair'] == 'ETC/BTC' + assert trades['trades'][1]['pair'] == 'ETC/BTC' + + def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, limit_buy_order, limit_sell_order, mocker) -> None: mocker.patch.multiple( diff --git a/tests/test_persistence.py b/tests/test_persistence.py index c6de10e3d..ceac24356 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -9,53 +9,7 @@ from sqlalchemy import create_engine from freqtrade import constants from freqtrade.exceptions import OperationalException from freqtrade.persistence import Trade, clean_dry_run_db, init -from tests.conftest import log_has - - -def create_mock_trades(fee): - """ - Create some fake trades ... - """ - # Simulate dry_run entries - trade = Trade( - pair='ETH/BTC', - stake_amount=0.001, - amount=123.0, - fee_open=fee.return_value, - fee_close=fee.return_value, - open_rate=0.123, - exchange='bittrex', - open_order_id='dry_run_buy_12345' - ) - Trade.session.add(trade) - - trade = Trade( - pair='ETC/BTC', - stake_amount=0.001, - amount=123.0, - fee_open=fee.return_value, - fee_close=fee.return_value, - open_rate=0.123, - close_rate=0.128, - close_profit=0.005, - exchange='bittrex', - is_open=False, - open_order_id='dry_run_sell_12345' - ) - Trade.session.add(trade) - - # Simulate prod entry - trade = Trade( - pair='ETC/BTC', - stake_amount=0.001, - amount=123.0, - fee_open=fee.return_value, - fee_close=fee.return_value, - open_rate=0.123, - exchange='bittrex', - open_order_id='prod_buy_12345' - ) - Trade.session.add(trade) +from tests.conftest import log_has, create_mock_trades def test_init_create_session(default_conf): From 296c616ce7c2595ec65ba11d4c0ad0d7e670721f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 7 Apr 2020 19:50:13 +0200 Subject: [PATCH 2112/3421] Add test for api-trades call --- tests/rpc/test_rpc_apiserver.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index c96f68f29..6548790cb 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -13,7 +13,7 @@ from freqtrade.__init__ import __version__ from freqtrade.persistence import Trade from freqtrade.rpc.api_server import BASE_URI, ApiServer from freqtrade.state import State -from tests.conftest import get_patched_freqtradebot, log_has, patch_get_signal +from tests.conftest import get_patched_freqtradebot, log_has, patch_get_signal, create_mock_trades _TEST_USER = "FreqTrader" _TEST_PASS = "SuperSecurePassword1!" @@ -302,6 +302,30 @@ def test_api_daily(botclient, mocker, ticker, fee, markets): assert rc.json[0][0] == str(datetime.utcnow().date()) +def test_api_trades(botclient, mocker, ticker, fee, markets): + ftbot, client = botclient + patch_get_signal(ftbot, (True, False)) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=markets) + ) + rc = client_get(client, f"{BASE_URI}/trades") + assert_response(rc) + assert len(rc.json) == 2 + assert rc.json['trades_count'] == 0 + + create_mock_trades(fee) + + rc = client_get(client, f"{BASE_URI}/trades") + assert_response(rc) + assert len(rc.json['trades']) == 3 + assert rc.json['trades_count'] == 3 + rc = client_get(client, f"{BASE_URI}/trades?limit=2") + assert_response(rc) + assert len(rc.json['trades']) == 2 + assert rc.json['trades_count'] == 2 + + def test_api_edge_disabled(botclient, mocker, ticker, fee, markets): ftbot, client = botclient patch_get_signal(ftbot, (True, False)) From 492c2799dc78c38ece251c06f4377fdf03113b61 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 7 Apr 2020 19:52:34 +0200 Subject: [PATCH 2113/3421] Rename rest-client script history to trades --- scripts/rest_client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/rest_client.py b/scripts/rest_client.py index 116c00063..b26c32479 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -156,10 +156,10 @@ class FtRestClient(): """ return self._get("show_config") - def history(self, limit=None): + def trades(self, limit=None): """Return trades history. - :param limit: Limits trades to the X last trades . No limit to get all the trades. + :param limit: Limits trades to the X last trades. No limit to get all the trades. :return: json object """ return self._get("trades", params={"limit": limit} if limit else 0) From 02192f28cd62a1fe4b0bf95545f718079122b715 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 8 Apr 2020 07:56:21 +0200 Subject: [PATCH 2114/3421] Small stylistic updates --- freqtrade/rpc/rpc.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 35386760d..8645e466e 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -226,18 +226,14 @@ class RPC: for key, value in profit_days.items() ] - def _rpc_trade_history( - self, limit: int) -> Dict: + def _rpc_trade_history(self, limit: int) -> Dict: """ Returns the X last trades """ if limit > 0: trades = Trade.get_trades().order_by(Trade.id.desc()).limit(limit) else: trades = Trade.get_trades().order_by(Trade.id.desc()).all() - output = [] - - for trade in trades: - output.append(trade.to_json()) + output = [trade.to_json() for trade in trades] return { "trades": output, From 5cff72a42e1ab58d841d42cae43cf59f6fbcf932 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Apr 2020 09:22:38 +0200 Subject: [PATCH 2115/3421] Improve logging to ensure which branch is used for buy order cancels --- freqtrade/freqtradebot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 570f8bea8..16e4d4d2d 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -904,6 +904,7 @@ class FreqtradeBot: logger.info('Buy order %s for %s.', reason, trade) if corder.get('remaining', order['remaining']) == order['amount']: + logger.info('Buy order removed from database %s', trade) # if trade is not partially completed, just delete the trade Trade.session.delete(trade) Trade.session.flush() From 4707484a4cf8982bb9aa1548b5ba754356981d0d Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Thu, 9 Apr 2020 11:42:13 +0200 Subject: [PATCH 2116/3421] Fix issue with colring enabled + styling --- freqtrade/optimize/hyperopt.py | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index fac613549..f34967af2 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -7,7 +7,6 @@ This module contains the hyperopt logic import locale import logging import random -import sys import warnings from math import ceil from collections import OrderedDict @@ -18,7 +17,6 @@ from typing import Any, Dict, List, Optional import rapidjson from colorama import Fore, Style -from colorama import init as colorama_init from joblib import (Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects) from pandas import DataFrame, json_normalize, isna @@ -268,17 +266,10 @@ class Hyperopt: Log results if it is better than any previous evaluation """ is_best = results['is_best'] - if not self.print_all: - # Print '\n' after each 100th epoch to separate dots from the log messages. - # Otherwise output is messy on a terminal. - print('.', end='' if results['current_epoch'] % 100 != 0 else None) # type: ignore - sys.stdout.flush() if self.print_all or is_best: - if not self.print_all: - # Separate the results explanation string from dots - print("\n") - print(self.get_result_table( + print( + self.get_result_table( self.config, results, self.total_epochs, self.print_all, self.print_colorized, self.hyperopt_table_header @@ -675,9 +666,6 @@ class Hyperopt: self.dimensions: List[Dimension] = self.hyperopt_space() self.opt = self.get_optimizer(self.dimensions, config_jobs) - if self.print_colorized: - colorama_init(autoreset=True) - try: with Parallel(n_jobs=config_jobs) as parallel: jobs = parallel._effective_n_jobs() @@ -690,15 +678,18 @@ class Hyperopt: ' (', progressbar.Percentage(), ')] ', progressbar.Bar(marker=progressbar.AnimatedMarker( fill='█', - fill_wrap='\x1b[32m{}\x1b[39m', - marker_wrap='\x1b[31m{}\x1b[39m', + fill_wrap=Fore.GREEN + '{}' + Fore.RESET, + marker_wrap=Style.BRIGHT + '{}' + Style.RESET_ALL, )), ' [', progressbar.ETA(), ', ', progressbar.Timer(), ']', ] else: widgets = [ - ' [Epoch ', progressbar.Counter(), ' of ', str(self.total_epochs), '] ', - progressbar.Bar(marker='█'), + ' [Epoch ', progressbar.Counter(), ' of ', str(self.total_epochs), + ' (', progressbar.Percentage(), ')] ', + progressbar.Bar(marker=progressbar.AnimatedMarker( + fill='█', + )), ' [', progressbar.ETA(), ', ', progressbar.Timer(), ']', ] with progressbar.ProgressBar( From 346e09fed1045b73a9fa5aa25fa8226660fb7356 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Apr 2020 19:32:10 +0200 Subject: [PATCH 2117/3421] Add test verifying that cancel_order with empty remaining is causing the bug --- tests/test_freqtradebot.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index e37270bd3..2536d57db 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2204,14 +2204,11 @@ def test_check_handle_timedout_exception(default_conf, ticker, open_trade, mocke caplog) -def test_handle_timedout_limit_buy(mocker, default_conf, limit_buy_order) -> None: +def test_handle_timedout_limit_buy(mocker, caplog, default_conf, limit_buy_order) -> None: patch_RPCManager(mocker) patch_exchange(mocker) cancel_order_mock = MagicMock(return_value=limit_buy_order) - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - cancel_order=cancel_order_mock - ) + mocker.patch('freqtrade.exchange.Exchange.cancel_order', cancel_order_mock) freqtrade = FreqtradeBot(default_conf) @@ -2227,9 +2224,14 @@ def test_handle_timedout_limit_buy(mocker, default_conf, limit_buy_order) -> Non assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 + mocker.patch('freqtrade.exchange.Exchange.cancel_order', side_effect=InvalidOrderException) + assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) + assert log_has_re(r"Could not cancel buy order", caplog) + @pytest.mark.parametrize('cancelorder', [ {}, + {'remaining': None}, 'String Return value', 123 ]) From cbf5bf6735fa1b0aabfce9ba58fe370dd2d600c4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Apr 2020 19:34:48 +0200 Subject: [PATCH 2118/3421] Add safe_value_fallback function --- freqtrade/misc.py | 15 +++++++++++++++ tests/test_misc.py | 15 ++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 1f52b75ec..ea7bab843 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -134,6 +134,21 @@ def round_dict(d, n): return {k: (round(v, n) if isinstance(v, float) else v) for k, v in d.items()} +def safe_value_fallback(dict1: dict, dict2: dict, key1: str, key2: str, default_value=None): + """ + Search a value in dict1, return this if it's not None. + Fall back to dict2 - return key2 from dict2 if it's not None. + Else falls back to None. + + """ + if key1 in dict1 and dict1[key1] is not None: + return dict1[key1] + else: + if key2 in dict2 and dict2[key2] is not None: + return dict2[key2] + return default_value + + def plural(num: float, singular: str, plural: str = None) -> str: return singular if (num == 1 or num == -1) else plural or singular + 's' diff --git a/tests/test_misc.py b/tests/test_misc.py index c1e23926b..1bb5b40af 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -9,7 +9,7 @@ import pytest from freqtrade.data.converter import ohlcv_to_dataframe from freqtrade.misc import (datesarray_to_datetimearray, file_dump_json, file_load_json, format_ms_time, pair_to_filename, - plural, shorten_date) + plural, safe_value_fallback, shorten_date) def test_shorten_date() -> None: @@ -93,6 +93,19 @@ def test_format_ms_time() -> None: assert format_ms_time(date_in_epoch_ms) == res.astimezone(None).strftime('%Y-%m-%dT%H:%M:%S') +def test_safe_value_fallback(): + dict1 = {'keya': None, 'keyb': 2, 'keyc': 5} + dict2 = {'keya': 20, 'keyb': None, 'keyc': 6} + assert safe_value_fallback(dict1, dict2, 'keya', 'keya') == 20 + assert safe_value_fallback(dict2, dict1, 'keya', 'keya') == 20 + + assert safe_value_fallback(dict1, dict2, 'keyb', 'keyb') == 2 + assert safe_value_fallback(dict2, dict1, 'keyb', 'keyb') == 2 + + assert safe_value_fallback(dict1, dict2, 'keyc', 'keyc') == 5 + assert safe_value_fallback(dict2, dict1, 'keyc', 'keyc') == 6 + + def test_plural() -> None: assert plural(0, "page") == "pages" assert plural(0.0, "page") == "pages" From f39706cabd78c35aaf668bf290ba4c79ae744bcb Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Apr 2020 19:35:27 +0200 Subject: [PATCH 2119/3421] Fix #3130 - when corder['remaining'] contains none-type --- freqtrade/freqtradebot.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 16e4d4d2d..b5c2ac4ee 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -20,6 +20,7 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.edge import Edge from freqtrade.exceptions import DependencyException, InvalidOrderException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date +from freqtrade.misc import safe_value_fallback from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver @@ -892,18 +893,23 @@ class FreqtradeBot: """ if order['status'] != 'canceled': reason = "cancelled due to timeout" - corder = self.exchange.cancel_order(trade.open_order_id, trade.pair) - # Some exchanges don't return a dict here. - if not isinstance(corder, dict): + try: + corder = self.exchange.cancel_order(trade.open_order_id, trade.pair) + # Some exchanges don't return a dict here. + if not isinstance(corder, dict): + corder = {} + logger.info('Buy order %s for %s.', reason, trade) + except InvalidOrderException: corder = {} - logger.info('Buy order %s for %s.', reason, trade) + logger.exception( + f"Could not cancel buy order {trade.open_order_id} for pair {trade.pair}") else: # Order was cancelled already, so we can reuse the existing dict corder = order reason = "cancelled on exchange" logger.info('Buy order %s for %s.', reason, trade) - if corder.get('remaining', order['remaining']) == order['amount']: + if safe_value_fallback(corder, order, 'remaining', 'remaining') == order['amount']: logger.info('Buy order removed from database %s', trade) # if trade is not partially completed, just delete the trade Trade.session.delete(trade) @@ -915,7 +921,8 @@ class FreqtradeBot: # cancel_order may not contain the full order dict, so we need to fallback # to the order dict aquired before cancelling. # we need to fall back to the values from order if corder does not contain these keys. - trade.amount = order['amount'] - corder.get('remaining', order['remaining']) + trade.amount = order['amount'] - safe_value_fallback(corder, order, + 'remaining', 'remaining') trade.stake_amount = trade.amount * trade.open_rate # verify if fees were taken from amount to avoid problems during selling try: From c03f637f5b629b55e74c4b8e0405bc8f7767bd7e Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 9 Apr 2020 19:40:04 +0200 Subject: [PATCH 2120/3421] Improve safe_value_fallback test --- tests/test_misc.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/test_misc.py b/tests/test_misc.py index 1bb5b40af..832bcb3a9 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -94,8 +94,8 @@ def test_format_ms_time() -> None: def test_safe_value_fallback(): - dict1 = {'keya': None, 'keyb': 2, 'keyc': 5} - dict2 = {'keya': 20, 'keyb': None, 'keyc': 6} + dict1 = {'keya': None, 'keyb': 2, 'keyc': 5, 'keyd': None} + dict2 = {'keya': 20, 'keyb': None, 'keyc': 6, 'keyd': None} assert safe_value_fallback(dict1, dict2, 'keya', 'keya') == 20 assert safe_value_fallback(dict2, dict1, 'keya', 'keya') == 20 @@ -105,6 +105,14 @@ def test_safe_value_fallback(): assert safe_value_fallback(dict1, dict2, 'keyc', 'keyc') == 5 assert safe_value_fallback(dict2, dict1, 'keyc', 'keyc') == 6 + assert safe_value_fallback(dict1, dict2, 'keyd', 'keyd') is None + assert safe_value_fallback(dict2, dict1, 'keyd', 'keyd') is None + assert safe_value_fallback(dict2, dict1, 'keyd', 'keyd', 1234) == 1234 + + assert safe_value_fallback(dict1, dict2, 'keyNo', 'keyNo') is None + assert safe_value_fallback(dict2, dict1, 'keyNo', 'keyNo') is None + assert safe_value_fallback(dict2, dict1, 'keyNo', 'keyNo', 1234) == 1234 + def test_plural() -> None: assert plural(0, "page") == "pages" From d9e54ab7a4b386a1faa89dbb995fceb1f1c90a92 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sat, 11 Apr 2020 17:42:19 +0200 Subject: [PATCH 2121/3421] Update freqtrade/optimize/hyperopt.py nice find Co-Authored-By: Matthias --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index f34967af2..4b9139681 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -677,7 +677,7 @@ class Hyperopt: ' [Epoch ', progressbar.Counter(), ' of ', str(self.total_epochs), ' (', progressbar.Percentage(), ')] ', progressbar.Bar(marker=progressbar.AnimatedMarker( - fill='█', + fill='\N{FULL BLOCK}', fill_wrap=Fore.GREEN + '{}' + Fore.RESET, marker_wrap=Style.BRIGHT + '{}' + Style.RESET_ALL, )), From 2c1c1c7f166871d1ba7ce95803426c50f85ff4df Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sat, 11 Apr 2020 17:42:32 +0200 Subject: [PATCH 2122/3421] Update freqtrade/optimize/hyperopt.py nice find Co-Authored-By: Matthias --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 4b9139681..affd6f3b3 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -688,7 +688,7 @@ class Hyperopt: ' [Epoch ', progressbar.Counter(), ' of ', str(self.total_epochs), ' (', progressbar.Percentage(), ')] ', progressbar.Bar(marker=progressbar.AnimatedMarker( - fill='█', + fill='\N{FULL BLOCK}', )), ' [', progressbar.ETA(), ', ', progressbar.Timer(), ']', ] From 952d2f7513a7b28d6ee0fad8142169aeb6ebe166 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Apr 2020 09:55:21 +0200 Subject: [PATCH 2123/3421] have version-detection fall back to freqtrade_commit this allows freqtrade --version to work in docker too. sample command: `docker-compose run --rm freqtrade -version` --- freqtrade/__init__.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/freqtrade/__init__.py b/freqtrade/__init__.py index ad432a20b..4da56c3aa 100644 --- a/freqtrade/__init__.py +++ b/freqtrade/__init__.py @@ -24,4 +24,11 @@ if __version__ == 'develop': # stderr=subprocess.DEVNULL).decode("utf-8").rstrip().strip('"') except Exception: # git not available, ignore - pass + try: + # Try Fallback to freqtrade_commit file (created by CI whild building docker image) + from pathlib import Path + versionfile = Path('./freqtrade_commit') + if versionfile.is_file(): + __version__ = f"docker-{versionfile.read_text()[:8]}" + except Exception: + pass From 4ee0cbb5751c2bdb67724d379c6f2e3b1d12b339 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Apr 2020 10:40:02 +0200 Subject: [PATCH 2124/3421] Reset index to correctly gather index --- freqtrade/data/btanalysis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 4505ea52a..a96e43dff 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -213,7 +213,7 @@ def calculate_max_drawdown(trades: pd.DataFrame, *, date_col: str = 'close_time' """ if len(trades) == 0: raise ValueError("Trade dataframe empty.") - profit_results = trades.sort_values(date_col) + profit_results = trades.sort_values(date_col).reset_index() max_drawdown_df = pd.DataFrame() max_drawdown_df['cumulative'] = profit_results[value_col].cumsum() max_drawdown_df['high_value'] = max_drawdown_df['cumulative'].cummax() From eac4dbcd287871aeff837b875d730118d2165081 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2020 08:30:31 +0000 Subject: [PATCH 2125/3421] Bump sqlalchemy from 1.3.15 to 1.3.16 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.15 to 1.3.16. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index eb6ed8464..4a5d66c09 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.25.81 -SQLAlchemy==1.3.15 +SQLAlchemy==1.3.16 python-telegram-bot==12.5.1 arrow==0.15.5 cachetools==4.0.0 From 350b4d5e7deaca04b36805503616f8f8001cad17 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2020 08:31:00 +0000 Subject: [PATCH 2126/3421] Bump coveralls from 1.11.1 to 2.0.0 Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 1.11.1 to 2.0.0. - [Release notes](https://github.com/coveralls-clients/coveralls-python/releases) - [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/coveralls-clients/coveralls-python/compare/1.11.1...2.0.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 814003cbf..ae240d7c8 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -3,7 +3,7 @@ -r requirements-plot.txt -r requirements-hyperopt.txt -coveralls==1.11.1 +coveralls==2.0.0 flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 From cfcce0e657feb91f69198f426d9f91f2a46ea290 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2020 08:32:29 +0000 Subject: [PATCH 2127/3421] Bump mkdocs-material from 4.6.3 to 5.1.0 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 4.6.3 to 5.1.0. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/4.6.3...5.1.0) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 48ade026e..138b6e862 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==4.6.3 +mkdocs-material==5.1.0 mdx_truly_sane_lists==1.2 From fb0d76b94a73c4764adff2fc89dbf98bfc2e5589 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2020 11:47:12 +0000 Subject: [PATCH 2128/3421] Bump cachetools from 4.0.0 to 4.1.0 Bumps [cachetools](https://github.com/tkem/cachetools) from 4.0.0 to 4.1.0. - [Release notes](https://github.com/tkem/cachetools/releases) - [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst) - [Commits](https://github.com/tkem/cachetools/compare/v4.0.0...v4.1.0) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 4a5d66c09..e22bebf28 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -4,7 +4,7 @@ ccxt==1.25.81 SQLAlchemy==1.3.16 python-telegram-bot==12.5.1 arrow==0.15.5 -cachetools==4.0.0 +cachetools==4.1.0 requests==2.23.0 urllib3==1.25.8 wrapt==1.12.1 From a166fc887f27e1670ea29f38155059206e85e8cf Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2020 11:47:14 +0000 Subject: [PATCH 2129/3421] Bump python-telegram-bot from 12.5.1 to 12.6.1 Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.5.1 to 12.6.1. - [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases) - [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst) - [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.5.1...v12.6.1) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 4a5d66c09..e1572e215 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -2,7 +2,7 @@ # mainly used for Raspberry pi installs ccxt==1.25.81 SQLAlchemy==1.3.16 -python-telegram-bot==12.5.1 +python-telegram-bot==12.6.1 arrow==0.15.5 cachetools==4.0.0 requests==2.23.0 From a1d2124e450db4993c9d0bd8c81db0aab8f59fc2 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2020 12:29:38 +0000 Subject: [PATCH 2130/3421] Bump ccxt from 1.25.81 to 1.26.12 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.25.81 to 1.26.12. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.25.81...1.26.12) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index ca8918caf..a6a0fb78e 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.25.81 +ccxt==1.26.12 SQLAlchemy==1.3.16 python-telegram-bot==12.6.1 arrow==0.15.5 From ddf37ef059655c93ec9109382815e683ae834dd2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Apr 2020 08:02:42 +0200 Subject: [PATCH 2131/3421] Add test to demonstrate that the dataframe is not changed --- freqtrade/data/btanalysis.py | 2 +- tests/data/test_btanalysis.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index a96e43dff..0c2fbff1e 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -213,7 +213,7 @@ def calculate_max_drawdown(trades: pd.DataFrame, *, date_col: str = 'close_time' """ if len(trades) == 0: raise ValueError("Trade dataframe empty.") - profit_results = trades.sort_values(date_col).reset_index() + profit_results = trades.sort_values(date_col).reset_index(drop=True) max_drawdown_df = pd.DataFrame() max_drawdown_df['cumulative'] = profit_results[value_col].cumsum() max_drawdown_df['high_value'] = max_drawdown_df['cumulative'].cummax() diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 4eec20976..7b894cccc 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -201,7 +201,13 @@ def test_calculate_max_drawdown2(): dates = [Arrow(2020, 1, 1).shift(days=i) for i in range(len(values))] df = DataFrame(zip(values, dates), columns=['profit', 'open_time']) + # sort by profit and reset index + df = df.sort_values('profit').reset_index(drop=True) + df1 = df.copy() drawdown, h, low = calculate_max_drawdown(df, date_col='open_time', value_col='profit') + # Ensure df has not been altered. + assert df.equals(df1) + assert isinstance(drawdown, float) # High must be before low assert h < low From 55a052bcf6853e0b1a6e2e21b3d1ff61d730db40 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Apr 2020 08:05:46 +0200 Subject: [PATCH 2132/3421] fix typo in comment Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- freqtrade/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/__init__.py b/freqtrade/__init__.py index 4da56c3aa..e96e7f530 100644 --- a/freqtrade/__init__.py +++ b/freqtrade/__init__.py @@ -25,7 +25,7 @@ if __version__ == 'develop': except Exception: # git not available, ignore try: - # Try Fallback to freqtrade_commit file (created by CI whild building docker image) + # Try Fallback to freqtrade_commit file (created by CI while building docker image) from pathlib import Path versionfile = Path('./freqtrade_commit') if versionfile.is_file(): From cfe1e4876a00196cd40b938360042d08468b8ca2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Apr 2020 19:20:47 +0200 Subject: [PATCH 2133/3421] Improve testcase for cancel_order_empty --- freqtrade/exchange/exchange.py | 2 +- tests/exchange/test_exchange.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 073e28659..ad4824a10 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -908,7 +908,7 @@ class Exchange: :param order: Order dict as returned from get_order() :return: True if order has been cancelled without being filled, False otherwise. """ - return order['status'] in ('closed', 'canceled') and order.get('filled') == 0.0 + return order.get('status') in ('closed', 'canceled') and order.get('filled') == 0.0 @retrier def cancel_order(self, order_id: str, pair: str) -> None: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 7f03eb547..cc3f95735 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1711,6 +1711,8 @@ def test_cancel_order_dry_run(default_conf, mocker, exchange_name): ({'status': 'closed', 'filled': 0.0}, True), ({'status': 'canceled', 'filled': 0.0}, True), ({'status': 'canceled', 'filled': 10.0}, False), + ({'status': 'unknown', 'filled': 10.0}, False), + ({'result': 'testest123'}, False), ]) def test_check_order_canceled_empty(mocker, default_conf, exchange_name, order, result): exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) From 7c15375f5da6fb66efc00f356486eb4a5736534d Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Apr 2020 20:20:36 +0200 Subject: [PATCH 2134/3421] Add log_on_refresh - using TTL caching to avoid spamming logs --- freqtrade/pairlist/IPairList.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index 35844a99e..e57bc4e88 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -9,6 +9,8 @@ from abc import ABC, abstractmethod, abstractproperty from copy import deepcopy from typing import Any, Dict, List +from cachetools import TTLCache, cached + from freqtrade.exchange import market_is_active logger = logging.getLogger(__name__) @@ -31,6 +33,9 @@ class IPairList(ABC): self._config = config self._pairlistconfig = pairlistconfig self._pairlist_pos = pairlist_pos + self.refresh_period = self._pairlistconfig.get('refresh_period', 1800) + self._last_refresh = 0 + self._log_cache = TTLCache(maxsize=1024, ttl=self.refresh_period) @property def name(self) -> str: @@ -40,6 +45,24 @@ class IPairList(ABC): """ return self.__class__.__name__ + def log_on_refresh(self, logmethod, message: str) -> None: + """ + Logs message - not more often than "refresh_period" to avoid log spamming + Logs the log-message as debug as well to simplify debugging. + :param logmethod: Function that'll be called. Most likely `logger.info`. + :param message: String containing the message to be sent to the function. + :return: None. + """ + + @cached(cache=self._log_cache) + def _log_on_refresh(logmethod, message: str): + logmethod(message) + + # Log as debug first + logger.debug(message) + # Call hidden function. + _log_on_refresh(logmethod, message) + @abstractproperty def needstickers(self) -> bool: """ From 5d876ca0a359f129a79a3f486216261734fd9003 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Apr 2020 20:21:10 +0200 Subject: [PATCH 2135/3421] Use log-spamprevention methods --- freqtrade/pairlist/PriceFilter.py | 4 ++-- freqtrade/pairlist/SpreadFilter.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index dc02ae251..7ea1e6003 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -43,8 +43,8 @@ class PriceFilter(IPairList): compare = ticker['last'] + 1 / pow(10, precision) changeperc = (compare - ticker['last']) / ticker['last'] if changeperc > self._low_price_ratio: - logger.info(f"Removed {ticker['symbol']} from whitelist, " - f"because 1 unit is {changeperc * 100:.3f}%") + self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, " + f"because 1 unit is {changeperc * 100:.3f}%") return False return True diff --git a/freqtrade/pairlist/SpreadFilter.py b/freqtrade/pairlist/SpreadFilter.py index 9361837cc..49731ef11 100644 --- a/freqtrade/pairlist/SpreadFilter.py +++ b/freqtrade/pairlist/SpreadFilter.py @@ -49,9 +49,9 @@ class SpreadFilter(IPairList): if 'bid' in ticker and 'ask' in ticker: spread = 1 - ticker['bid'] / ticker['ask'] if not ticker or spread > self._max_spread_ratio: - logger.info(f"Removed {ticker['symbol']} from whitelist, " - f"because spread {spread * 100:.3f}% >" - f"{self._max_spread_ratio * 100}%") + self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, " + f"because spread {spread * 100:.3f}% >" + f"{self._max_spread_ratio * 100}%") pairlist.remove(p) else: pairlist.remove(p) From 13ee7a55c4756035d647f00a25767407e2cafe40 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Apr 2020 20:21:30 +0200 Subject: [PATCH 2136/3421] Fix #3166 Always call _gen_pair_whitelist if volumepairlist is not the first in the list. --- freqtrade/pairlist/VolumePairList.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 9ce2adc9e..65f43245c 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -39,7 +39,6 @@ class VolumePairList(IPairList): if not self._validate_keys(self._sort_key): raise OperationalException( f'key {self._sort_key} not in {SORT_VALUES}') - self._last_refresh = 0 @property def needstickers(self) -> bool: @@ -68,16 +67,18 @@ class VolumePairList(IPairList): :return: new whitelist """ # Generate dynamic whitelist - if self._last_refresh + self.refresh_period < datetime.now().timestamp(): + # Must always run if this pairlist is not the first in the list. + if (self._pairlist_pos != 0 or + (self._last_refresh + self.refresh_period < datetime.now().timestamp())): + self._last_refresh = int(datetime.now().timestamp()) - return self._gen_pair_whitelist(pairlist, - tickers, - self._config['stake_currency'], - self._sort_key, - self._min_value - ) + pairs = self._gen_pair_whitelist(pairlist, tickers, + self._config['stake_currency'], + self._sort_key, self._min_value) else: - return pairlist + pairs = pairlist + self.log_on_refresh(logger.info, f"Searching {self._number_pairs} pairs: {pairs}") + return pairs def _gen_pair_whitelist(self, pairlist: List[str], tickers: Dict, base_currency: str, key: str, min_val: int) -> List[str]: @@ -88,7 +89,6 @@ class VolumePairList(IPairList): :param tickers: Tickers (from exchange.get_tickers()). :return: List of pairs """ - if self._pairlist_pos == 0: # If VolumePairList is the first in the list, use fresh pairlist # Check if pair quote currency equals to the stake currency. @@ -109,6 +109,5 @@ class VolumePairList(IPairList): pairs = self._verify_blacklist(pairs, aswarning=False) # Limit to X number of pairs pairs = pairs[:self._number_pairs] - logger.info(f"Searching {self._number_pairs} pairs: {pairs}") return pairs From ceca0a659cef27ed872bcb504af6ec74c99f1511 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Apr 2020 20:25:58 +0200 Subject: [PATCH 2137/3421] Simplify cached stuff to only what's needed --- freqtrade/pairlist/IPairList.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index e57bc4e88..e089e546c 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -55,13 +55,13 @@ class IPairList(ABC): """ @cached(cache=self._log_cache) - def _log_on_refresh(logmethod, message: str): + def _log_on_refresh(message: str): logmethod(message) # Log as debug first logger.debug(message) # Call hidden function. - _log_on_refresh(logmethod, message) + _log_on_refresh(message) @abstractproperty def needstickers(self) -> bool: From 1b2bf2c9b69680d2ed09e3edfeffc1d00451932a Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Apr 2020 20:39:54 +0200 Subject: [PATCH 2138/3421] Add test for cached log method --- tests/pairlist/test_pairlist.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 1ce1151b7..6275bdafc 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -46,6 +46,28 @@ def static_pl_conf(whitelist_conf): return whitelist_conf +def test_log_on_refresh(mocker, static_pl_conf, markets, tickers): + mocker.patch.multiple('freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=markets), + exchange_has=MagicMock(return_value=True), + get_tickers=tickers + ) + freqtrade = get_patched_freqtradebot(mocker, static_pl_conf) + logmock = MagicMock() + # Assign starting whitelist + pl = freqtrade.pairlists._pairlists[0] + pl.log_on_refresh(logmock, 'Hello world') + assert logmock.call_count == 1 + pl.log_on_refresh(logmock, 'Hello world') + assert logmock.call_count == 1 + assert pl._log_cache.currsize == 1 + assert ('Hello world',) in pl._log_cache._Cache__data + + pl.log_on_refresh(logmock, 'Hello world2') + assert logmock.call_count == 2 + assert pl._log_cache.currsize == 2 + + def test_load_pairlist_noexist(mocker, markets, default_conf): bot = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) From 2b7376f6f334d78ede1d98fb1fee5ca3af4a9b34 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Apr 2020 20:45:30 +0200 Subject: [PATCH 2139/3421] Implement log-filtering for all pairlists --- freqtrade/pairlist/PrecisionFilter.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index f16458ca5..2a2ba46b7 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -39,8 +39,9 @@ class PrecisionFilter(IPairList): stop_gap_price = self._exchange.price_to_precision(ticker["symbol"], stop_price * 0.99) logger.debug(f"{ticker['symbol']} - {sp} : {stop_gap_price}") if sp <= stop_gap_price: - logger.info(f"Removed {ticker['symbol']} from whitelist, " - f"because stop price {sp} would be <= stop limit {stop_gap_price}") + self.log_on_refresh(logger.info, + f"Removed {ticker['symbol']} from whitelist, " + f"because stop price {sp} would be <= stop limit {stop_gap_price}") return False return True From ac008a4758e16ef7da0523bc32a37e25ea85e32c Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Apr 2020 06:58:54 +0200 Subject: [PATCH 2140/3421] Remove obsolete comment in tests --- tests/optimize/test_optimize_reports.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 3bbc396c8..e0782146a 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -163,7 +163,6 @@ def test_backtest_record(default_conf, fee, mocker): results['Strat'] = results['DefStrat'] results['Strat2'] = results['DefStrat'] store_backtest_result(Path("backtest-result.json"), results) - # Assert file_dump_json was only called once assert names == [ Path('backtest-result-DefStrat.json'), Path('backtest-result-Strat.json'), From 36e714a7b258576df0d920fef50fba700037ffad Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Apr 2020 07:19:27 +0200 Subject: [PATCH 2141/3421] Add price_get_one_pip filter --- freqtrade/exchange/exchange.py | 11 +++++++++++ freqtrade/pairlist/PriceFilter.py | 5 ++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index f4c94a1ca..7dd910fab 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -452,6 +452,17 @@ class Exchange: price = ceil(big_price) / pow(10, symbol_prec) return price + def price_get_one_pip(self, pair: str, price: float) -> float: + """ + Get's the "1 pip" value for this pair. + Used in PriceFilter to calculate the 1pip movements. + """ + precision = self.markets[pair]['precision']['price'] + if self.precisionMode == TICK_SIZE: + return price % precision + else: + return 1 / pow(10, precision) + def dry_run_order(self, pair: str, ordertype: str, side: str, amount: float, rate: float, params: Dict = {}) -> Dict[str, Any]: order_id = f'dry_run_{side}_{randint(0, 10**6)}' diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index dc02ae251..00c9d44c9 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -38,9 +38,8 @@ class PriceFilter(IPairList): :param precision: Precision :return: True if the pair can stay, false if it should be removed """ - precision = self._exchange.markets[ticker['symbol']]['precision']['price'] - - compare = ticker['last'] + 1 / pow(10, precision) + compare = ticker['last'] + self._exchange.price_get_one_pip(ticker['symbol'], + ticker['last']) changeperc = (compare - ticker['last']) / ticker['last'] if changeperc > self._low_price_ratio: logger.info(f"Removed {ticker['symbol']} from whitelist, " From 33b6c7de5b01fdb31026da307b9546c6cbca3529 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Apr 2020 07:53:31 +0200 Subject: [PATCH 2142/3421] Add tests for price_one_pip --- freqtrade/exchange/exchange.py | 2 +- tests/exchange/test_exchange.py | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 7dd910fab..b3255f1bd 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -459,7 +459,7 @@ class Exchange: """ precision = self.markets[pair]['precision']['price'] if self.precisionMode == TICK_SIZE: - return price % precision + return precision else: return 1 / pow(10, precision) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 8d8930f66..c0aedc7f9 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -253,6 +253,32 @@ def test_price_to_precision(default_conf, mocker, price, precision_mode, precisi assert pytest.approx(exchange.price_to_precision(pair, price)) == expected +@pytest.mark.parametrize("price,precision_mode,precision,expected", [ + (2.34559, 2, 4, 0.0001), + (2.34559, 2, 5, 0.00001), + (2.34559, 2, 3, 0.001), + (2.9999, 2, 3, 0.001), + (200.0511, 2, 3, 0.001), + # Tests for Tick_size + (2.34559, 4, 0.0001, 0.0001), + (2.34559, 4, 0.00001, 0.00001), + (2.34559, 4, 0.0025, 0.0025), + (2.9909, 4, 0.0025, 0.0025), + (234.43, 4, 0.5, 0.5), + (234.43, 4, 0.0025, 0.0025), + (234.43, 4, 0.00013, 0.00013), + +]) +def test_price_get_one_pip(default_conf, mocker, price, precision_mode, precision, expected): + markets = PropertyMock(return_value={'ETH/BTC': {'precision': {'price': precision}}}) + exchange = get_patched_exchange(mocker, default_conf, id="binance") + mocker.patch('freqtrade.exchange.Exchange.markets', markets) + mocker.patch('freqtrade.exchange.Exchange.precisionMode', + PropertyMock(return_value=precision_mode)) + pair = 'ETH/BTC' + assert pytest.approx(exchange.price_get_one_pip(pair, price)) == expected + + def test_set_sandbox(default_conf, mocker): """ Test working scenario From 99f3e9ed777c33ad537e799893d4675da8aa8aec Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Apr 2020 07:55:15 +0200 Subject: [PATCH 2143/3421] Remove wrong comment --- freqtrade/pairlist/PriceFilter.py | 1 - 1 file changed, 1 deletion(-) diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index 00c9d44c9..f0ba6cd7f 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -35,7 +35,6 @@ class PriceFilter(IPairList): """ Check if if one price-step (pip) is > than a certain barrier. :param ticker: ticker dict as returned from ccxt.load_markets() - :param precision: Precision :return: True if the pair can stay, false if it should be removed """ compare = ticker['last'] + self._exchange.price_get_one_pip(ticker['symbol'], From 8314759228f019488df8e204b64ddc06dc0e0c0f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 15 Apr 2020 12:14:35 +0000 Subject: [PATCH 2144/3421] Bump ccxt from 1.26.12 to 1.26.32 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.26.12 to 1.26.32. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.26.12...1.26.32) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index a6a0fb78e..206e104ae 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.26.12 +ccxt==1.26.32 SQLAlchemy==1.3.16 python-telegram-bot==12.6.1 arrow==0.15.5 From 16a810a0f61e59bb29f35fdd2333427b63f6c1a2 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 15 Apr 2020 12:14:53 +0000 Subject: [PATCH 2145/3421] Bump jinja2 from 2.11.1 to 2.11.2 Bumps [jinja2](https://github.com/pallets/jinja) from 2.11.1 to 2.11.2. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/master/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/2.11.1...2.11.2) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index a6a0fb78e..e98540e18 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -12,7 +12,7 @@ jsonschema==3.2.0 TA-Lib==0.4.17 tabulate==0.8.7 pycoingecko==1.2.0 -jinja2==2.11.1 +jinja2==2.11.2 # find first, C search in arrays py_find_1st==1.1.4 From d36e2cf6ab85be1e0993f8ef69f67e117385dbf2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 16 Apr 2020 07:06:47 +0200 Subject: [PATCH 2146/3421] Fix random test failure in hyperopt --- freqtrade/optimize/hyperopt.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index affd6f3b3..68e7032d9 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -665,7 +665,6 @@ class Hyperopt: self.dimensions: List[Dimension] = self.hyperopt_space() self.opt = self.get_optimizer(self.dimensions, config_jobs) - try: with Parallel(n_jobs=config_jobs) as parallel: jobs = parallel._effective_n_jobs() @@ -693,7 +692,7 @@ class Hyperopt: ' [', progressbar.ETA(), ', ', progressbar.Timer(), ']', ] with progressbar.ProgressBar( - maxval=self.total_epochs, redirect_stdout=True, redirect_stderr=True, + maxval=self.total_epochs, redirect_stdout=False, redirect_stderr=False, widgets=widgets ) as pbar: EVALS = ceil(self.total_epochs / jobs) From 1f70fcfa2da744b70f71190f575928c0c42ea6ca Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 16 Apr 2020 20:19:34 +0200 Subject: [PATCH 2147/3421] Update logmessage --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index b5c2ac4ee..8afe7d6f9 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -910,7 +910,7 @@ class FreqtradeBot: logger.info('Buy order %s for %s.', reason, trade) if safe_value_fallback(corder, order, 'remaining', 'remaining') == order['amount']: - logger.info('Buy order removed from database %s', trade) + logger.info('Buy order fully cancelled. Removing %s from database.', trade) # if trade is not partially completed, just delete the trade Trade.session.delete(trade) Trade.session.flush() From 7aba9bc62abc56bdebc2015316f6ac4c38064c5f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 17 Apr 2020 06:22:25 +0200 Subject: [PATCH 2148/3421] Update freqtrade/data/converter.py Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- freqtrade/data/converter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index d2108b9be..0ef7955a4 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -174,7 +174,7 @@ def trades_dict_to_list(trades: List[Dict]) -> List[List]: :param trades: List of trades, as returned by ccxt.fetch_trades. :return: List of Lists, with constants.DEFAULT_TRADES_COLUMNS as columns """ - return [[t[col] for col in DEFAULT_TRADES_COLUMNS]for t in trades] + return [[t[col] for col in DEFAULT_TRADES_COLUMNS] for t in trades] def trades_to_ohlcv(trades: List, timeframe: str) -> DataFrame: From fc684b00917d2d135704e52a2974e0c5a272fb26 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 17 Apr 2020 06:59:52 +0200 Subject: [PATCH 2149/3421] Ensure deleting filled is not raising an error if filled does not exist --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 213444f72..8865dd20b 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1140,7 +1140,7 @@ class FreqtradeBot: new_amount = self.get_real_amount(trade, order, order_amount) if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): order['amount'] = new_amount - del order['filled'] + order.pop('filled', None) # Fee was applied, so set to 0 trade.fee_open = 0 trade.recalc_open_trade_price() From 800891a4759b3f2e96f3593be9471f089c7e2e92 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 17 Apr 2020 07:18:46 +0200 Subject: [PATCH 2150/3421] Add tests for cancel_order_with_result --- freqtrade/exchange/exchange.py | 30 ++++++++++++++++++++++++++++++ tests/exchange/test_exchange.py | 14 ++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index f2f8cd69f..412a60386 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -937,6 +937,36 @@ class Exchange: except ccxt.BaseError as e: raise OperationalException(e) from e + def is_cancel_order_result_suitable(self, corder) -> bool: + if not isinstance(corder, dict): + return False + + required = ('fee', 'status', 'amount') + return all(k in corder for k in required) + + def cancel_order_with_result(self, order_id: str, pair: str, amount: float) -> Dict: + """ + Cancel order returning a result. + Creates a fake result if cancel order returns a non-usable result + and get_order does not work (certain exchanges don't return cancelled orders) + :param order_id: Orderid to cancel + :param pair: Pair corresponding to order_id + :param amount: Amount to use for fake response + :return: Result from either cancel_order if usable, or fetch_order + """ + if self._config['dry_run']: + return {'fee': {}, 'status': 'canceled', 'amount': amount, 'info': {}} + corder = self.cancel_order(order_id, pair) + if self.is_cancel_order_result_suitable(corder): + return corder + try: + order = self.get_order(order_id, pair) + except InvalidOrderException: + logger.warning(f"Could not fetch cancelled order {order_id}.") + order = {'fee': {}, 'status': 'canceled', 'amount': amount, 'info': {}} + + return order + @retrier def get_order(self, order_id: str, pair: str) -> Dict: if self._config['dry_run']: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index b74ea1a6b..1f0df5aa5 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1745,6 +1745,20 @@ def test_check_order_canceled_empty(mocker, default_conf, exchange_name, order, assert exchange.check_order_canceled_empty(order) == result +@pytest.mark.parametrize("exchange_name", EXCHANGES) +@pytest.mark.parametrize("order,result", [ + ({'status': 'closed', 'amount': 10, 'fee': {}}, True), + ({'status': 'closed', 'amount': 0.0, 'fee': {}}, True), + ({'status': 'canceled', 'amount': 0.0, 'fee': {}}, True), + ({'status': 'canceled', 'amount': 10.0}, False), + ({'amount': 10.0, 'fee': {}}, False), + ({'result': 'testest123'}, False), + ('hello_world', False), +]) +def test_is_cancel_order_result_suitable(mocker, default_conf, exchange_name, order, result): + exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) + assert exchange.is_cancel_order_result_suitable(order) == result + # Ensure that if not dry_run, we should call API @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_cancel_order(default_conf, mocker, exchange_name): From 5e3e0e819f20869b4d3e9a04abe4cb3b040bede9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 17 Apr 2020 17:53:18 +0200 Subject: [PATCH 2151/3421] Add tests for cancel_order_with_result --- freqtrade/exchange/exchange.py | 11 ++++++----- tests/exchange/test_exchange.py | 34 +++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 412a60386..d3a520eaa 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -954,11 +954,12 @@ class Exchange: :param amount: Amount to use for fake response :return: Result from either cancel_order if usable, or fetch_order """ - if self._config['dry_run']: - return {'fee': {}, 'status': 'canceled', 'amount': amount, 'info': {}} - corder = self.cancel_order(order_id, pair) - if self.is_cancel_order_result_suitable(corder): - return corder + try: + corder = self.cancel_order(order_id, pair) + if self.is_cancel_order_result_suitable(corder): + return corder + except InvalidOrderException: + logger.warning(f"Could not cancel order {order_id}.") try: order = self.get_order(order_id, pair) except InvalidOrderException: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 1f0df5aa5..e3ab76b92 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1759,6 +1759,40 @@ def test_is_cancel_order_result_suitable(mocker, default_conf, exchange_name, or exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) assert exchange.is_cancel_order_result_suitable(order) == result + +@pytest.mark.parametrize("exchange_name", EXCHANGES) +@pytest.mark.parametrize("corder,call_corder,call_forder", [ + ({'status': 'closed', 'amount': 10, 'fee': {}}, 1, 0), + ({'amount': 10, 'fee': {}}, 1, 1), +]) +def test_cancel_order_with_result(default_conf, mocker, exchange_name, corder, + call_corder, call_forder): + default_conf['dry_run'] = False + api_mock = MagicMock() + api_mock.cancel_order = MagicMock(return_value=corder) + api_mock.fetch_order = MagicMock(return_value={}) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) + res = exchange.cancel_order_with_result('1234', 'ETH/BTC', 1234) + assert isinstance(res, dict) + assert api_mock.cancel_order.call_count == call_corder + assert api_mock.fetch_order.call_count == call_forder + + +@pytest.mark.parametrize("exchange_name", EXCHANGES) +def test_cancel_order_with_result_error(default_conf, mocker, exchange_name, caplog): + default_conf['dry_run'] = False + api_mock = MagicMock() + api_mock.cancel_order = MagicMock(side_effect=ccxt.InvalidOrder("Did not find order")) + api_mock.fetch_order = MagicMock(side_effect=ccxt.InvalidOrder("Did not find order")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) + + res = exchange.cancel_order_with_result('1234', 'ETH/BTC', 1541) + assert isinstance(res, dict) + assert log_has("Could not cancel order 1234.", caplog) + assert log_has("Could not fetch cancelled order 1234.", caplog) + assert res['amount'] == 1541 + + # Ensure that if not dry_run, we should call API @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_cancel_order(default_conf, mocker, exchange_name): From 1069cb3616001e44bdc17e68e36d46bb93544d4a Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 17 Apr 2020 17:53:56 +0200 Subject: [PATCH 2152/3421] Use cancel_order_with_result when cancelling orders after timeout --- freqtrade/freqtradebot.py | 12 +++++------- tests/test_freqtradebot.py | 13 ++++++------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 8865dd20b..f4aeba3fe 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -891,11 +891,8 @@ class FreqtradeBot: if order['status'] != 'canceled': reason = "cancelled due to timeout" try: - corder = self.exchange.cancel_order(trade.open_order_id, trade.pair) - # Some exchanges don't return a dict here. - if not isinstance(corder, dict): - corder = {} - logger.info('Buy order %s for %s.', reason, trade) + corder = self.exchange.cancel_order_with_result(trade.open_order_id, trade.pair, + trade.amount) except InvalidOrderException: corder = {} logger.exception( @@ -904,7 +901,8 @@ class FreqtradeBot: # Order was cancelled already, so we can reuse the existing dict corder = order reason = "cancelled on exchange" - logger.info('Buy order %s for %s.', reason, trade) + + logger.info('Buy order %s for %s.', reason, trade) if safe_value_fallback(corder, order, 'remaining', 'remaining') == order['amount']: logger.info('Buy order fully cancelled. Removing %s from database.', trade) @@ -921,7 +919,7 @@ class FreqtradeBot: trade.amount = order['amount'] - safe_value_fallback(corder, order, 'remaining', 'remaining') trade.stake_amount = trade.amount * trade.open_rate - self.update_trade_state(trade, corder if 'fee' in corder else order, trade.amount) + self.update_trade_state(trade, corder, trade.amount) trade.open_order_id = None logger.info('Partial buy order timeout for %s.', trade) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 1102dd344..c3e78c9be 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1948,7 +1948,7 @@ def test_check_handle_timedout_buy(default_conf, ticker, limit_buy_order_old, op 'freqtrade.exchange.Exchange', fetch_ticker=ticker, get_order=MagicMock(return_value=limit_buy_order_old), - cancel_order=cancel_order_mock, + cancel_order_with_result=cancel_order_mock, get_fee=fee ) freqtrade = FreqtradeBot(default_conf) @@ -2055,7 +2055,7 @@ def test_check_handle_cancelled_sell(default_conf, ticker, limit_sell_order_old, 'freqtrade.exchange.Exchange', fetch_ticker=ticker, get_order=MagicMock(return_value=limit_sell_order_old), - cancel_order=cancel_order_mock + cancel_order_with_result=cancel_order_mock ) freqtrade = FreqtradeBot(default_conf) @@ -2082,7 +2082,7 @@ def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old 'freqtrade.exchange.Exchange', fetch_ticker=ticker, get_order=MagicMock(return_value=limit_buy_order_old_partial), - cancel_order=cancel_order_mock + cancel_order_with_result=cancel_order_mock ) freqtrade = FreqtradeBot(default_conf) @@ -2109,7 +2109,7 @@ def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, cap 'freqtrade.exchange.Exchange', fetch_ticker=ticker, get_order=MagicMock(return_value=limit_buy_order_old_partial), - cancel_order=cancel_order_mock, + cancel_order_with_result=cancel_order_mock, get_trades_for_order=MagicMock(return_value=trades_for_order), ) freqtrade = FreqtradeBot(default_conf) @@ -2146,7 +2146,7 @@ def test_check_handle_timedout_partial_except(default_conf, ticker, open_trade, 'freqtrade.exchange.Exchange', fetch_ticker=ticker, get_order=MagicMock(return_value=limit_buy_order_old_partial), - cancel_order=cancel_order_mock, + cancel_order_with_result=cancel_order_mock, get_trades_for_order=MagicMock(return_value=trades_for_order), ) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_real_amount', @@ -2208,7 +2208,7 @@ def test_handle_timedout_limit_buy(mocker, caplog, default_conf, limit_buy_order patch_RPCManager(mocker) patch_exchange(mocker) cancel_order_mock = MagicMock(return_value=limit_buy_order) - mocker.patch('freqtrade.exchange.Exchange.cancel_order', cancel_order_mock) + mocker.patch('freqtrade.exchange.Exchange.cancel_order_with_result', cancel_order_mock) freqtrade = FreqtradeBot(default_conf) @@ -2226,7 +2226,6 @@ def test_handle_timedout_limit_buy(mocker, caplog, default_conf, limit_buy_order mocker.patch('freqtrade.exchange.Exchange.cancel_order', side_effect=InvalidOrderException) assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) - assert log_has_re(r"Could not cancel buy order", caplog) @pytest.mark.parametrize('cancelorder', [ From 55af8bf26f33cca56cf9b0ccda4f088bb2c7ef83 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 17 Apr 2020 19:49:43 +0200 Subject: [PATCH 2153/3421] document to install hyperopt dependencies --- docs/hyperopt.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index c5055a3a8..825cc0267 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -16,6 +16,24 @@ To learn how to get data for the pairs and exchange you're interested in, head o !!! Bug Hyperopt can crash when used with only 1 CPU Core as found out in [Issue #1133](https://github.com/freqtrade/freqtrade/issues/1133) +## Install hyperopt dependencies + +Since Hyperopt dependencies are not needed to run a bot, they are not installed by default. + +### Docker + +The docker-image includes hyperopt dependencies, no further action needed + +!!! Note + Since Hyperopt is a resource intensive process, running it on a Raspberry Pi is not recommended, therefore the Raspberry image does not include Hyperopt dependencies. + +### Simple installation script (setup.sh) / Manual installation + +```bash +source .env/bin/activate +pip install -r requirements-hyperopt.txt +``` + ## Prepare Hyperopting Before we start digging into Hyperopt, we recommend you to take a look at From 0273539f0614d58578f354bbc55448152d5036c8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 17 Apr 2020 19:55:53 +0200 Subject: [PATCH 2154/3421] Remove exceptionhandler, this exception is handled in cancel_with_response --- freqtrade/freqtradebot.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index f4aeba3fe..65ba46987 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -890,13 +890,8 @@ class FreqtradeBot: """ if order['status'] != 'canceled': reason = "cancelled due to timeout" - try: - corder = self.exchange.cancel_order_with_result(trade.open_order_id, trade.pair, - trade.amount) - except InvalidOrderException: - corder = {} - logger.exception( - f"Could not cancel buy order {trade.open_order_id} for pair {trade.pair}") + corder = self.exchange.cancel_order_with_result(trade.open_order_id, trade.pair, + trade.amount) else: # Order was cancelled already, so we can reuse the existing dict corder = order From 506781f4102064651423a923c2342e931c08f3d3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 17 Apr 2020 20:48:27 +0200 Subject: [PATCH 2155/3421] Reword hyperopt install docs --- docs/hyperopt.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 825cc0267..ad812a5ad 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -18,16 +18,16 @@ To learn how to get data for the pairs and exchange you're interested in, head o ## Install hyperopt dependencies -Since Hyperopt dependencies are not needed to run a bot, they are not installed by default. +Since Hyperopt dependencies are not needed to run the bot itself, are heavy, can not be easily built on some platforms (like Raspberry PI), they are not installed by default. Before you run Hyperopt, you need to install the corresponding dependencies, as described in this section below. + +!!! Note + Since Hyperopt is a resource intensive process, running it on a Raspberry Pi is not recommended nor supported. ### Docker -The docker-image includes hyperopt dependencies, no further action needed +The docker-image includes hyperopt dependencies, no further action needed. -!!! Note - Since Hyperopt is a resource intensive process, running it on a Raspberry Pi is not recommended, therefore the Raspberry image does not include Hyperopt dependencies. - -### Simple installation script (setup.sh) / Manual installation +### Easy installation script (setup.sh) / Manual installation ```bash source .env/bin/activate From 2f60d9cad4a6cc73542c6ff4f00d982241993f89 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 17 Apr 2020 23:23:22 +0300 Subject: [PATCH 2156/3421] minor: fix typo in the docs --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index d8a9653c3..338299781 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -34,7 +34,7 @@ The prevelance for all Options is as follows: - CLI arguments override any other option - Configuration files are used in sequence (last file wins), and override Strategy configurations. -- Strategy configurations are only used if they are not set via configuration or via command line arguments. These options are market with [Strategy Override](#parameters-in-the-strategy) in the below table. +- Strategy configurations are only used if they are not set via configuration or via command line arguments. These options are marked with [Strategy Override](#parameters-in-the-strategy) in the below table. Mandatory parameters are marked as **Required**, which means that they are required to be set in one of the possible ways. From c775d6512670916f206d39d02ca2ec8dc52ecfd8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 18 Apr 2020 06:55:25 +0200 Subject: [PATCH 2157/3421] Update typehint for cancel_order --- freqtrade/exchange/exchange.py | 4 ++-- tests/exchange/test_exchange.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index d3a520eaa..1a0565959 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -922,9 +922,9 @@ class Exchange: return order.get('status') in ('closed', 'canceled') and order.get('filled') == 0.0 @retrier - def cancel_order(self, order_id: str, pair: str) -> None: + def cancel_order(self, order_id: str, pair: str) -> Dict: if self._config['dry_run']: - return + return {} try: return self._api.cancel_order(order_id, pair) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index e3ab76b92..3c92612a0 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1728,7 +1728,7 @@ def test_get_historic_trades_notsupported(default_conf, mocker, caplog, exchange def test_cancel_order_dry_run(default_conf, mocker, exchange_name): default_conf['dry_run'] = True exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) - assert exchange.cancel_order(order_id='123', pair='TKN/BTC') is None + assert exchange.cancel_order(order_id='123', pair='TKN/BTC') == {} @pytest.mark.parametrize("exchange_name", EXCHANGES) From 76dd388b3cba461d48139599c9daf47a7d8e87bb Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2020 09:25:17 +0000 Subject: [PATCH 2158/3421] Bump pytest-mock from 3.0.0 to 3.1.0 Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.0.0 to 3.1.0. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.0.0...v3.1.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index ae240d7c8..d269676af 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,7 +11,7 @@ mypy==0.770 pytest==5.4.1 pytest-asyncio==0.10.0 pytest-cov==2.8.1 -pytest-mock==3.0.0 +pytest-mock==3.1.0 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents From 4742fc665733b719d68e1455fc31ceb1bb8ea66d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2020 09:26:09 +0000 Subject: [PATCH 2159/3421] Bump urllib3 from 1.25.8 to 1.25.9 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.8 to 1.25.9. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.25.8...1.25.9) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index caf1c226a..6d49f3f89 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -6,7 +6,7 @@ python-telegram-bot==12.6.1 arrow==0.15.5 cachetools==4.1.0 requests==2.23.0 -urllib3==1.25.8 +urllib3==1.25.9 wrapt==1.12.1 jsonschema==3.2.0 TA-Lib==0.4.17 From d395d7ac7d94a0e16a1b32f76481a7fe481fe2c5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2020 09:26:31 +0000 Subject: [PATCH 2160/3421] Bump mkdocs-material from 5.1.0 to 5.1.1 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.1.0 to 5.1.1. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.1.0...5.1.1) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 138b6e862..1f8d710a9 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.1.0 +mkdocs-material==5.1.1 mdx_truly_sane_lists==1.2 From 84d09eb96da22cee3c1485ed6b5ead2c32ca4361 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2020 09:27:16 +0000 Subject: [PATCH 2161/3421] Bump questionary from 1.5.1 to 1.5.2 Bumps [questionary](https://github.com/tmbo/questionary) from 1.5.1 to 1.5.2. - [Release notes](https://github.com/tmbo/questionary/releases) - [Commits](https://github.com/tmbo/questionary/compare/1.5.1...1.5.2) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index caf1c226a..133f961ae 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -29,5 +29,5 @@ flask==1.1.2 # Support for colorized terminal output colorama==0.4.3 # Building config files interactively -questionary==1.5.1 +questionary==1.5.2 prompt-toolkit==3.0.5 From 597f053ae3a9fa0ebc167c07a1098b2c9bdde42a Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2020 09:27:37 +0000 Subject: [PATCH 2162/3421] Bump numpy from 1.18.2 to 1.18.3 Bumps [numpy](https://github.com/numpy/numpy) from 1.18.2 to 1.18.3. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.18.2...v1.18.3) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b1a4b4403..967f8df10 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Load common requirements -r requirements-common.txt -numpy==1.18.2 +numpy==1.18.3 pandas==1.0.3 From a7249f3865d5cca2d98c5a5c30c01fd094850a72 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 20 Apr 2020 09:28:19 +0000 Subject: [PATCH 2163/3421] Bump ccxt from 1.26.32 to 1.26.53 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.26.32 to 1.26.53. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.26.32...1.26.53) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index caf1c226a..ccaaecc07 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.26.32 +ccxt==1.26.53 SQLAlchemy==1.3.16 python-telegram-bot==12.6.1 arrow==0.15.5 From 87f1060abc09c801ca2296c06f8c219353764bce Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 21 Apr 2020 19:47:49 +0200 Subject: [PATCH 2164/3421] Default docker to log into log-dir --- docker-compose.yml | 3 ++- freqtrade/configuration/directory_operations.py | 4 ++-- tests/test_directory_operations.py | 2 +- user_data/logs/.gitkeep | 0 4 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 user_data/logs/.gitkeep diff --git a/docker-compose.yml b/docker-compose.yml index 3a4c4c2db..49d83aa5e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,6 +3,7 @@ version: '3' services: freqtrade: image: freqtradeorg/freqtrade:master + # image: freqtradeorg/freqtrade:develop # Build step - only needed when additional dependencies are needed # build: # context: . @@ -14,7 +15,7 @@ services: # Default command used when running `docker compose up` command: > trade - --logfile /freqtrade/user_data/freqtrade.log + --logfile /freqtrade/user_data/logs/freqtrade.log --db-url sqlite:////freqtrade/user_data/tradesv3.sqlite --config /freqtrade/user_data/config.json --strategy SampleStrategy diff --git a/freqtrade/configuration/directory_operations.py b/freqtrade/configuration/directory_operations.py index 5f8eb76b0..6b8c8cb5a 100644 --- a/freqtrade/configuration/directory_operations.py +++ b/freqtrade/configuration/directory_operations.py @@ -33,8 +33,8 @@ def create_userdata_dir(directory: str, create_dir: bool = False) -> Path: :param create_dir: Create directory if it does not exist. :return: Path object containing the directory """ - sub_dirs = ["backtest_results", "data", "hyperopts", "hyperopt_results", "notebooks", - "plot", "strategies", ] + sub_dirs = ["backtest_results", "data", "hyperopts", "hyperopt_results", "logs", + "notebooks", "plot", "strategies", ] folder = Path(directory) if not folder.is_dir(): if create_dir: diff --git a/tests/test_directory_operations.py b/tests/test_directory_operations.py index 889338a64..71c91549f 100644 --- a/tests/test_directory_operations.py +++ b/tests/test_directory_operations.py @@ -25,7 +25,7 @@ def test_create_userdata_dir(mocker, default_conf, caplog) -> None: md = mocker.patch.object(Path, 'mkdir', MagicMock()) x = create_userdata_dir('/tmp/bar', create_dir=True) - assert md.call_count == 8 + assert md.call_count == 9 assert md.call_args[1]['parents'] is False assert log_has(f'Created user-data directory: {Path("/tmp/bar")}', caplog) assert isinstance(x, Path) diff --git a/user_data/logs/.gitkeep b/user_data/logs/.gitkeep new file mode 100644 index 000000000..e69de29bb From 6b53197dfc820ae5ce899a869bdd37187b4368e2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 21 Apr 2020 20:42:58 +0200 Subject: [PATCH 2165/3421] Fix documentation to use --logfile, not --logfilename (which does not exist) --- docs/advanced-setup.md | 24 ++++++++++++------------ docs/faq.md | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/advanced-setup.md b/docs/advanced-setup.md index 2d3fe36f5..95480a2c6 100644 --- a/docs/advanced-setup.md +++ b/docs/advanced-setup.md @@ -37,30 +37,30 @@ as the watchdog. ## Advanced Logging -On many Linux systems the bot can be configured to send its log messages to `syslog` or `journald` system services. Logging to a remote `syslog` server is also available on Windows. The special values for the `--logfilename` command line option can be used for this. +On many Linux systems the bot can be configured to send its log messages to `syslog` or `journald` system services. Logging to a remote `syslog` server is also available on Windows. The special values for the `--logfile` command line option can be used for this. ### Logging to syslog -To send Freqtrade log messages to a local or remote `syslog` service use the `--logfilename` command line option with the value in the following format: +To send Freqtrade log messages to a local or remote `syslog` service use the `--logfile` command line option with the value in the following format: -* `--logfilename syslog:` -- send log messages to `syslog` service using the `` as the syslog address. +* `--logfile syslog:` -- send log messages to `syslog` service using the `` as the syslog address. The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the `:` character. So, the following are the examples of possible usages: -* `--logfilename syslog:/dev/log` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems. -* `--logfilename syslog` -- same as above, the shortcut for `/dev/log`. -* `--logfilename syslog:/var/run/syslog` -- log to syslog (rsyslog) using the `/var/run/syslog` socket. Use this on MacOS. -* `--logfilename syslog:localhost:514` -- log to local syslog using UDP socket, if it listens on port 514. -* `--logfilename syslog::514` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server. +* `--logfile syslog:/dev/log` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems. +* `--logfile syslog` -- same as above, the shortcut for `/dev/log`. +* `--logfile syslog:/var/run/syslog` -- log to syslog (rsyslog) using the `/var/run/syslog` socket. Use this on MacOS. +* `--logfile syslog:localhost:514` -- log to local syslog using UDP socket, if it listens on port 514. +* `--logfile syslog::514` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server. Log messages are send to `syslog` with the `user` facility. So you can see them with the following commands: * `tail -f /var/log/user`, or * install a comprehensive graphical viewer (for instance, 'Log File Viewer' for Ubuntu). -On many systems `syslog` (`rsyslog`) fetches data from `journald` (and vice versa), so both `--logfilename syslog` or `--logfilename journald` can be used and the messages be viewed with both `journalctl` and a syslog viewer utility. You can combine this in any way which suites you better. +On many systems `syslog` (`rsyslog`) fetches data from `journald` (and vice versa), so both `--logfile syslog` or `--logfile journald` can be used and the messages be viewed with both `journalctl` and a syslog viewer utility. You can combine this in any way which suites you better. For `rsyslog` the messages from the bot can be redirected into a separate dedicated log file. To achieve this, add ``` @@ -78,9 +78,9 @@ $RepeatedMsgReduction on This needs the `systemd` python package installed as the dependency, which is not available on Windows. Hence, the whole journald logging functionality is not available for a bot running on Windows. -To send Freqtrade log messages to `journald` system service use the `--logfilename` command line option with the value in the following format: +To send Freqtrade log messages to `journald` system service use the `--logfile` command line option with the value in the following format: -* `--logfilename journald` -- send log messages to `journald`. +* `--logfile journald` -- send log messages to `journald`. Log messages are send to `journald` with the `user` facility. So you can see them with the following commands: @@ -89,4 +89,4 @@ Log messages are send to `journald` with the `user` facility. So you can see the There are many other options in the `journalctl` utility to filter the messages, see manual pages for this utility. -On many systems `syslog` (`rsyslog`) fetches data from `journald` (and vice versa), so both `--logfilename syslog` or `--logfilename journald` can be used and the messages be viewed with both `journalctl` and a syslog viewer utility. You can combine this in any way which suites you better. +On many systems `syslog` (`rsyslog`) fetches data from `journald` (and vice versa), so both `--logfile syslog` or `--logfile journald` can be used and the messages be viewed with both `journalctl` and a syslog viewer utility. You can combine this in any way which suites you better. diff --git a/docs/faq.md b/docs/faq.md index 94818964b..8e8a1bf35 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -100,7 +100,7 @@ $ tail -f /path/to/mylogfile.log | grep 'something' ``` from a separate terminal window. -On Windows, the `--logfilename` option is also supported by Freqtrade and you can use the `findstr` command to search the log for the string of interest: +On Windows, the `--logfile` option is also supported by Freqtrade and you can use the `findstr` command to search the log for the string of interest: ``` > type \path\to\mylogfile.log | findstr "something" ``` From adf0bb69b8ecef7c974b8a29cb63ef2ebb1da826 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 22 Apr 2020 06:39:03 +0200 Subject: [PATCH 2166/3421] Update sql cheatsheet to allow manual closing trades correctly --- docs/sql_cheatsheet.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/docs/sql_cheatsheet.md b/docs/sql_cheatsheet.md index f41520bd9..b7b38c3dc 100644 --- a/docs/sql_cheatsheet.md +++ b/docs/sql_cheatsheet.md @@ -67,22 +67,32 @@ SELECT * FROM trades; !!! Warning Manually selling a pair on the exchange will not be detected by the bot and it will try to sell anyway. Whenever possible, forcesell should be used to accomplish the same thing. - It is strongly advised to backup your database file before making any manual changes. + It is strongly advised to backup your database file before making any manual changes. !!! Note This should not be necessary after /forcesell, as forcesell orders are closed automatically by the bot on the next iteration. ```sql UPDATE trades -SET is_open=0, close_date=, close_rate=, close_profit=close_rate/open_rate-1, sell_reason= +SET is_open=0, + close_date=, + close_rate=, + close_profit=close_rate/open_rate-1, + close_profit_abs = (amount * * (1 - fee_close) - (amount * open_rate * 1 - fee_open), + sell_reason= WHERE id=; ``` -##### Example +### Example ```sql UPDATE trades -SET is_open=0, close_date='2017-12-20 03:08:45.103418', close_rate=0.19638016, close_profit=0.0496, sell_reason='force_sell' +SET is_open=0, + close_date='2017-12-20 03:08:45.103418', + close_rate=0.19638016, + close_profit=0.0496, + close_profit_abs = (amount * 0.19638016 * (1 - fee_close) - (amount * open_rate * 1 - fee_open) + sell_reason='force_sell' WHERE id=31; ``` @@ -99,10 +109,3 @@ VALUES ('bittrex', 'ETH/BTC', 1, 0.0025, 0.0025, , , Date: Wed, 22 Apr 2020 18:45:33 -0600 Subject: [PATCH 2167/3421] Update wording in expectancy docs and add example --- docs/edge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index 721f570c7..029844c0b 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -79,7 +79,7 @@ So lets say your Win rate is 28% and your Risk Reward Ratio is 5: Expectancy = (5 X 0.28) – 0.72 = 0.68 ``` -Superficially, this means that on average you expect this strategy’s trades to return .68 times the size of your loses. This is important for two reasons: First, it may seem obvious, but you know right away that you have a positive return. Second, you now have a number you can compare to other candidate systems to make decisions about which ones you employ. +Superficially, this means that on average you expect this strategy’s trades to return 1.68 times the size of your loses. Said another way, you can expect to win $1.68 for every $1 you lose. This is important for two reasons: First, it may seem obvious, but you know right away that you have a positive return. Second, you now have a number you can compare to other candidate systems to make decisions about which ones you employ. It is important to remember that any system with an expectancy greater than 0 is profitable using past data. The key is finding one that will be profitable in the future. From 461b0ef7381c0ca4cdcb37de6888b3e22ab582e6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 23 Apr 2020 20:03:59 +0200 Subject: [PATCH 2168/3421] Add test verifying we're not reintroducing this in the future Tests case of FTX, which returns mostly empty ticker info --- tests/conftest.py | 48 +++++++++++++++++++++++++++++++++ tests/pairlist/test_pairlist.py | 9 +++++-- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 62c1d7046..d95475b8c 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -739,6 +739,31 @@ def shitcoinmarkets(markets): "future": False, "active": True }, + 'ADAHALF/USDT': { + "percentage": True, + "tierBased": False, + "taker": 0.001, + "maker": 0.001, + "precision": { + "base": 8, + "quote": 8, + "amount": 2, + "price": 4 + }, + "limits": { + }, + "id": "ADAHALFUSDT", + "symbol": "ADAHALF/USDT", + "base": "ADAHALF", + "quote": "USDT", + "baseId": "ADAHALF", + "quoteId": "USDT", + "info": {}, + "type": "spot", + "spot": True, + "future": False, + "active": True + }, }) return shitmarkets @@ -1243,6 +1268,29 @@ def tickers(): "quoteVolume": 323652.075405, "info": {} }, + # Example of leveraged pair with incomplete info + "ADAHALF/USDT": { + "symbol": "ADAHALF/USDT", + "timestamp": 1580469388244, + "datetime": "2020-01-31T11:16:28.244Z", + "high": None, + "low": None, + "bid": 0.7305, + "bidVolume": None, + "ask": 0.7342, + "askVolume": None, + "vwap": None, + "open": None, + "close": None, + "last": None, + "previousClose": None, + "change": None, + "percentage": 2.628, + "average": None, + "baseVolume": 0.0, + "quoteVolume": 0.0, + "info": {} + }, }) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 6275bdafc..9184beaa0 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -163,7 +163,7 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], "BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], - "USDT", ['ETH/USDT', 'NANO/USDT']), + "USDT", ['ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT']), # No pair for ETH ... ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], "ETH", []), @@ -177,6 +177,10 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PriceFilter", "low_price_ratio": 0.03}], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), + # PriceFilter and VolumePairList + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, + {"method": "PriceFilter", "low_price_ratio": 0.03}], + "USDT", ['ETH/USDT', 'NANO/USDT']), # Hot is removed by precision_filter, Fuel by low_price_filter. ([{"method": "VolumePairList", "number_assets": 6, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}, @@ -221,7 +225,8 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t assert log_has_re(r'^Removed .* from whitelist, because stop price .* ' r'would be <= stop limit.*', caplog) if pairlist['method'] == 'PriceFilter': - assert log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) + assert (log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) or + log_has_re(r"^Removed .* from whitelist, because 'last' is empty.*", caplog)) def test_gen_pair_whitelist_not_supported(mocker, default_conf, tickers) -> None: From f4995780e5c15c8b270a3118bed0a1215557c05c Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 23 Apr 2020 20:04:36 +0200 Subject: [PATCH 2169/3421] Verify last is not None - to avoid crashing fix #3117 --- freqtrade/pairlist/PriceFilter.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index 0f7e0782f..31d0eec58 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -37,6 +37,12 @@ class PriceFilter(IPairList): :param ticker: ticker dict as returned from ccxt.load_markets() :return: True if the pair can stay, false if it should be removed """ + if ticker['last'] is None: + + self.log_on_refresh(logger.info, + f"Removed {ticker['symbol']} from whitelist, " + "because 'last' is empty (Usually no trade in the last 24h).") + return False compare = ticker['last'] + self._exchange.price_get_one_pip(ticker['symbol'], ticker['last']) changeperc = (compare - ticker['last']) / ticker['last'] @@ -47,7 +53,6 @@ class PriceFilter(IPairList): return True def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: - """ Filters and sorts pairlist and returns the whitelist again. Called on each bot iteration - please use internal caching if necessary From 9627604ec3d13ada6aa50f77b5cb4e8be6456523 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 24 Apr 2020 07:57:43 +0200 Subject: [PATCH 2170/3421] change wording of log message --- freqtrade/pairlist/PriceFilter.py | 4 ++-- tests/pairlist/test_pairlist.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index 31d0eec58..2f7e98e24 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -40,8 +40,8 @@ class PriceFilter(IPairList): if ticker['last'] is None: self.log_on_refresh(logger.info, - f"Removed {ticker['symbol']} from whitelist, " - "because 'last' is empty (Usually no trade in the last 24h).") + f"Removed {ticker['symbol']} from whitelist, because " + "ticker['last'] is empty (Usually no trade in the last 24h).") return False compare = ticker['last'] + self._exchange.price_get_one_pip(ticker['symbol'], ticker['last']) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 9184beaa0..7dfe8bcca 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -226,7 +226,8 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t r'would be <= stop limit.*', caplog) if pairlist['method'] == 'PriceFilter': assert (log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) or - log_has_re(r"^Removed .* from whitelist, because 'last' is empty.*", caplog)) + log_has_re(r"^Removed .* from whitelist, because ticker\['last'\] is empty.*", + caplog)) def test_gen_pair_whitelist_not_supported(mocker, default_conf, tickers) -> None: From 5c012d79eb284a9f44dd46c93d235a64319b7934 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 24 Apr 2020 18:14:07 +0300 Subject: [PATCH 2171/3421] Remove unused method --- freqtrade/optimize/hyperopt.py | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 68e7032d9..61e2a9b6f 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -293,21 +293,6 @@ class Hyperopt: self.hyperopt_table_header = 2 return output - @staticmethod - def print_results_explanation(results, total_epochs, highlight_best: bool, - print_colorized: bool) -> None: - """ - Log results explanation string - """ - explanation_str = Hyperopt._format_explanation_string(results, total_epochs) - # Colorize output - if print_colorized: - if results['total_profit'] > 0: - explanation_str = Fore.GREEN + explanation_str - if highlight_best and results['is_best']: - explanation_str = Style.BRIGHT + explanation_str - print(explanation_str) - @staticmethod def _format_explanation_string(results, total_epochs) -> str: return (("*" if results['is_initial_point'] else " ") + From 6e5f0869b33ac4e5059f9b96b80fb880e9be225a Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 24 Apr 2020 18:39:08 +0300 Subject: [PATCH 2172/3421] Remove another unused method --- freqtrade/optimize/hyperopt.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 61e2a9b6f..fcf50af6a 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -277,22 +277,6 @@ class Hyperopt: ) self.hyperopt_table_header = 2 - def get_results(self, results) -> str: - """ - Log results if it is better than any previous evaluation - """ - output = '' - is_best = results['is_best'] - - if self.print_all or is_best: - output = self.get_result_table( - self.config, results, self.total_epochs, - self.print_all, self.print_colorized, - self.hyperopt_table_header - ) - self.hyperopt_table_header = 2 - return output - @staticmethod def _format_explanation_string(results, total_epochs) -> str: return (("*" if results['is_initial_point'] else " ") + From 2d994f6feb137edc224a47c0b48d95fb12ddf4fa Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 24 Apr 2020 21:57:29 +0300 Subject: [PATCH 2173/3421] Better printing of asterisk --- freqtrade/optimize/hyperopt.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index fcf50af6a..ea27430ee 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -304,8 +304,9 @@ class Hyperopt: trials.columns = ['Best', 'Epoch', 'Trades', 'Avg profit', 'Total profit', 'Profit', 'Avg duration', 'Objective', 'is_initial_point', 'is_best'] trials['is_profit'] = False - trials.loc[trials['is_initial_point'], 'Best'] = '*' + trials.loc[trials['is_initial_point'], 'Best'] = '* ' trials.loc[trials['is_best'], 'Best'] = 'Best' + trials.loc[trials['is_initial_point'] & trials['is_best'], 'Best'] = '* Best' trials.loc[trials['Total profit'] > 0, 'is_profit'] = True trials['Trades'] = trials['Trades'].astype(str) From c230a94d553a5b38c7118bff7ccb1a7e374f5442 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 25 Apr 2020 11:23:54 +0300 Subject: [PATCH 2174/3421] Fix #3065 --- docs/hyperopt.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index ad812a5ad..30a22a969 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -6,9 +6,7 @@ algorithms included in the `scikit-optimize` package to accomplish this. The search will burn all your CPU cores, make your laptop sound like a fighter jet and still take a long time. -In general, the search for best parameters starts with a few random combinations and then uses Bayesian search with a -ML regressor algorithm (currently ExtraTreesRegressor) to quickly find a combination of parameters in the search hyperspace -that minimizes the value of the [loss function](#loss-functions). +In general, the search for best parameters starts with a few random combinations (see [below](#reproducible-results) for more details) and then uses Bayesian search with a ML regressor algorithm (currently ExtraTreesRegressor) to quickly find a combination of parameters in the search hyperspace that minimizes the value of the [loss function](#loss-functions). Hyperopt requires historic data to be available, just as backtesting does. To learn how to get data for the pairs and exchange you're interested in, head over to the [Data Downloading](data-download.md) section of the documentation. @@ -311,7 +309,7 @@ You can also enable position stacking in the configuration file by explicitly se ### Reproducible results -The search for optimal parameters starts with a few (currently 30) random combinations in the hyperspace of parameters, random Hyperopt epochs. These random epochs are marked with a leading asterisk sign at the Hyperopt output. +The search for optimal parameters starts with a few (currently 30) random combinations in the hyperspace of parameters, random Hyperopt epochs. These random epochs are marked with an asterisk character (`*`) in the first column in the Hyperopt output. The initial state for generation of these random values (random state) is controlled by the value of the `--random-state` command line option. You can set it to some arbitrary value of your choice to obtain reproducible results. From 2fb3d94938e8d3bbe4759b8ef670f40e4c3356b0 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 22 Feb 2020 15:49:18 +0100 Subject: [PATCH 2175/3421] added wins/draws/losses --- freqtrade/optimize/hyperopt.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index fcf50af6a..3f704b33c 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -533,10 +533,14 @@ class Hyperopt: 'total_profit': total_profit, } - def _calculate_results_metrics(self, backtesting_results: DataFrame) -> Dict: + def _calculate_results_metrics(self, backtesting_results: DataFrame) -> Dict: return { 'trade_count': len(backtesting_results.index), + 'wins': len(backtesting_results[backtesting_results.profit_percent > 0]), + 'draws': len(backtesting_results[backtesting_results.profit_percent == 0]), + 'losses': len(backtesting_results[backtesting_results.profit_percent < 0]), 'avg_profit': backtesting_results.profit_percent.mean() * 100.0, + 'median_profit': backtesting_results.profit_percent.median() * 100.0, 'total_profit': backtesting_results.profit_abs.sum(), 'profit': backtesting_results.profit_percent.sum() * 100.0, 'duration': backtesting_results.trade_duration.mean(), @@ -548,7 +552,11 @@ class Hyperopt: """ stake_cur = self.config['stake_currency'] return (f"{results_metrics['trade_count']:6d} trades. " + f"{results_metrics['wins']:6d} wins. " + f"{results_metrics['draws']:6d} draws. " + f"{results_metrics['losses']:6d} losses. " f"Avg profit {results_metrics['avg_profit']: 6.2f}%. " + f"Median profit {results_metrics['median_profit']: 6.2f}%. " f"Total profit {results_metrics['total_profit']: 11.8f} {stake_cur} " f"({results_metrics['profit']: 7.2f}\N{GREEK CAPITAL LETTER SIGMA}%). " f"Avg duration {results_metrics['duration']:5.1f} min." From 6147498fd425d151f162e7ed0ebc855df4e1785d Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 22 Feb 2020 15:51:36 +0100 Subject: [PATCH 2176/3421] fixed indent --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 3f704b33c..f2221d6a7 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -533,7 +533,7 @@ class Hyperopt: 'total_profit': total_profit, } - def _calculate_results_metrics(self, backtesting_results: DataFrame) -> Dict: + def _calculate_results_metrics(self, backtesting_results: DataFrame) -> Dict: return { 'trade_count': len(backtesting_results.index), 'wins': len(backtesting_results[backtesting_results.profit_percent > 0]), From 72b088d85f9b4573d35c2d165d1504aeb83caec8 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Mon, 2 Mar 2020 02:50:27 +0100 Subject: [PATCH 2177/3421] added test --- tests/optimize/test_hyperopt.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index b5106be0c..cdbe7f161 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -740,8 +740,10 @@ def test_generate_optimizer(mocker, default_conf) -> None: } response_expected = { 'loss': 1.9840569076926293, - 'results_explanation': (' 1 trades. Avg profit 2.31%. Total profit 0.00023300 BTC ' - '( 2.31\N{GREEK CAPITAL LETTER SIGMA}%). Avg duration 100.0 min.' + 'results_explanation': (' 1 trades. 1 wins. 0 draws. 0 losses. ' + 'Avg profit 2.31%. Median profit 2.31%. Total profit ' + '0.00023300 BTC ( 2.31\N{GREEK CAPITAL LETTER SIGMA}%). ' + 'Avg duration 100.0 min.' ).encode(locale.getpreferredencoding(), 'replace').decode('utf-8'), 'params_details': {'buy': {'adx-enabled': False, 'adx-value': 0, @@ -772,10 +774,14 @@ def test_generate_optimizer(mocker, default_conf) -> None: 'trailing_stop_positive_offset': 0.07}}, 'params_dict': optimizer_param, 'results_metrics': {'avg_profit': 2.3117, + 'draws': 0, 'duration': 100.0, + 'losses': 0, + 'median_profit': 2.3117, 'profit': 2.3117, 'total_profit': 0.000233, - 'trade_count': 1}, + 'trade_count': 1, + 'wins': 1}, 'total_profit': 0.00023300 } From 181b12b3a811bf461f602cfc7b111cc13ebaaaee Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 22 Feb 2020 15:49:18 +0100 Subject: [PATCH 2178/3421] added wins/draws/losses --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index f2221d6a7..3f704b33c 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -533,7 +533,7 @@ class Hyperopt: 'total_profit': total_profit, } - def _calculate_results_metrics(self, backtesting_results: DataFrame) -> Dict: + def _calculate_results_metrics(self, backtesting_results: DataFrame) -> Dict: return { 'trade_count': len(backtesting_results.index), 'wins': len(backtesting_results[backtesting_results.profit_percent > 0]), From c9711678fd414e9ff7bb82496fe1ec6c98a9f5a8 Mon Sep 17 00:00:00 2001 From: Yazeed Al Oyoun Date: Sat, 22 Feb 2020 15:51:36 +0100 Subject: [PATCH 2179/3421] fixed indent --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 3f704b33c..f2221d6a7 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -533,7 +533,7 @@ class Hyperopt: 'total_profit': total_profit, } - def _calculate_results_metrics(self, backtesting_results: DataFrame) -> Dict: + def _calculate_results_metrics(self, backtesting_results: DataFrame) -> Dict: return { 'trade_count': len(backtesting_results.index), 'wins': len(backtesting_results[backtesting_results.profit_percent > 0]), From d9f255a6c07809ea28981e39c3bb576f1394461a Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 25 Apr 2020 12:49:14 +0300 Subject: [PATCH 2180/3421] Fix asterisk printing for csv output --- freqtrade/optimize/hyperopt.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index ea27430ee..79b6b8cb0 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -397,6 +397,7 @@ class Hyperopt: trials['is_profit'] = False trials.loc[trials['is_initial_point'], 'Best'] = '*' trials.loc[trials['is_best'], 'Best'] = 'Best' + trials.loc[trials['is_initial_point'] & trials['is_best'], 'Best'] = '* Best' trials.loc[trials['Total profit'] > 0, 'is_profit'] = True trials['Epoch'] = trials['Epoch'].astype(str) trials['Trades'] = trials['Trades'].astype(str) From 8987859044df53cda8086a72d792d22635b93d87 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Apr 2020 15:37:13 +0200 Subject: [PATCH 2181/3421] Enable pairlist parsing for backtesting and hyperopt --- freqtrade/optimize/backtesting.py | 11 ++++++-- tests/optimize/test_backtesting.py | 40 ++++++++++++++++++++++++------ 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index f29f599a6..c01e3de50 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -20,6 +20,7 @@ from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds from freqtrade.optimize.optimize_reports import (show_backtest_results, store_backtest_result) +from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.state import RunMode @@ -63,10 +64,16 @@ class Backtesting: self.strategylist: List[IStrategy] = [] self.exchange = ExchangeResolver.load_exchange(self.config['exchange']['name'], self.config) + self.pairlists = PairListManager(self.exchange, self.config) + self.pairlists.refresh_pairlist() + + if len(self.pairlists.whitelist) == 0: + raise OperationalException("No pair in whitelist.") + if config.get('fee'): self.fee = config['fee'] else: - self.fee = self.exchange.get_fee(symbol=self.config['exchange']['pair_whitelist'][0]) + self.fee = self.exchange.get_fee(symbol=self.pairlists.whitelist[0]) if self.config.get('runmode') != RunMode.HYPEROPT: self.dataprovider = DataProvider(self.config, self.exchange) @@ -111,7 +118,7 @@ class Backtesting: data = history.load_data( datadir=self.config['datadir'], - pairs=self.config['exchange']['pair_whitelist'], + pairs=self.pairlists.whitelist, timeframe=self.timeframe, timerange=timerange, startup_candles=self.required_startup, diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 1c4d3b16a..862dbe3aa 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -2,7 +2,7 @@ import random from pathlib import Path -from unittest.mock import MagicMock +from unittest.mock import MagicMock, PropertyMock import numpy as np import pandas as pd @@ -10,8 +10,9 @@ import pytest from arrow import Arrow from freqtrade import constants +from freqtrade.commands.optimize_commands import (setup_optimize_configuration, + start_backtesting) from freqtrade.configuration import TimeRange -from freqtrade.commands.optimize_commands import setup_optimize_configuration, start_backtesting from freqtrade.data import history from freqtrade.data.btanalysis import evaluate_result_multi from freqtrade.data.converter import clean_ohlcv_dataframe @@ -333,8 +334,9 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: patch_exchange(mocker) mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') mocker.patch('freqtrade.optimize.backtesting.show_backtest_results') + mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', + PropertyMock(return_value=['UNITTEST/BTC'])) - default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] default_conf['ticker_interval'] = '1m' default_conf['datadir'] = testdatadir default_conf['export'] = None @@ -362,9 +364,9 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> mocker.patch('freqtrade.data.history.get_timerange', get_timerange) patch_exchange(mocker) mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') - mocker.patch('freqtrade.optimize.backtesting.show_backtest_results') + mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', + PropertyMock(return_value=['UNITTEST/BTC'])) - default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] default_conf['ticker_interval'] = "1m" default_conf['datadir'] = testdatadir default_conf['export'] = None @@ -375,6 +377,27 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> backtesting.start() +def test_backtesting_no_pair_left(default_conf, mocker, caplog, testdatadir) -> None: + def get_timerange(input1): + return Arrow(2017, 11, 14, 21, 17), Arrow(2017, 11, 14, 22, 59) + + mocker.patch('freqtrade.data.history.history_utils.load_pair_history', + MagicMock(return_value=pd.DataFrame())) + mocker.patch('freqtrade.data.history.get_timerange', get_timerange) + patch_exchange(mocker) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') + mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', + PropertyMock(return_value=[])) + + default_conf['ticker_interval'] = "1m" + default_conf['datadir'] = testdatadir + default_conf['export'] = None + default_conf['timerange'] = '20180101-20180102' + + with pytest.raises(OperationalException, match='No pair in whitelist.'): + Backtesting(default_conf) + + def test_backtest(default_conf, fee, mocker, testdatadir) -> None: default_conf['ask_strategy']['use_sell_signal'] = False mocker.patch('freqtrade.exchange.Exchange.get_fee', fee) @@ -585,12 +608,12 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): - default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] patch_exchange(mocker) mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', MagicMock()) mocker.patch('freqtrade.optimize.backtesting.show_backtest_results', MagicMock()) - + mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', + PropertyMock(return_value=['UNITTEST/BTC'])) patched_configuration_load_config_file(mocker, default_conf) args = [ @@ -625,10 +648,11 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): - default_conf['exchange']['pair_whitelist'] = ['UNITTEST/BTC'] patch_exchange(mocker) backtestmock = MagicMock() + mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', + PropertyMock(return_value=['UNITTEST/BTC'])) mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', backtestmock) gen_table_mock = MagicMock() mocker.patch('freqtrade.optimize.optimize_reports.generate_text_table', gen_table_mock) From 57345476abf5992fca61d4537cef95e7e206cb48 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Apr 2020 15:38:20 +0200 Subject: [PATCH 2182/3421] Document pairlists for backtesting --- docs/backtesting.md | 8 ++++++-- docs/configuration.md | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 3d08d5332..d6775e17c 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -17,8 +17,12 @@ For details on downloading, please refer to the [Data Downloading](data-download The result of backtesting will confirm if your bot has better odds of making a profit than a loss. -!!! Tip "Using dynamic pairlists for backtesting" - While using dynamic pairlists during backtesting is not possible, a dynamic pairlist using current data can be generated via the [`test-pairlist`](utils.md#test-pairlist) command, and needs to be specified as `"pair_whitelist"` attribute in the configuration. +!!! Warning "Using dynamic pairlists for backtesting" + Using dynamic pairlists is possible, however it relies on the current market conditions - which will not reflect the historic status of the pairlist. + Also, when using pairlists other than StaticPairlist, reproducability of backtesting-results cannot be guaranteed. + Please read the [pairlists documentation](configuration.md#pairlists) for more information. + + To achieve reproducible results, best generate a pairlist via the [`test-pairlist`](utils.md#test-pairlist) command and use that as static pairlist. ### Run a backtesting against the currencies listed in your config file diff --git a/docs/configuration.md b/docs/configuration.md index 338299781..3de89301f 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -544,7 +544,6 @@ A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting Using `ask_strategy.order_book_max` higher than 1 will result in improper dry-run results (significantly better than real orders executed on exchange), since dry-run assumes orders to be filled almost instantly. It is therefore advised to not use this setting for dry-runs. - #### Sell price without Orderbook enabled When not using orderbook (`ask_strategy.use_order_book=False`), the price at the `ask_strategy.price_side` side (defaults to `"ask"`) from the ticker will be used as the sell price. @@ -622,6 +621,7 @@ Min price precision is 8 decimals. If price is 0.00000011 - one step would be 0. These pairs are dangerous since it may be impossible to place the desired stoploss - and often result in high losses. #### Spread Filter + Removes pairs that have a difference between asks and bids above the specified ratio (default `0.005`). Example: If `DOGE/BTC` maximum bid is 0.00000026 and minimum ask is 0.00000027 the ratio is calculated as: `1 - bid/ask ~= 0.037` which is `> 0.005` From e8530c36d3a8bcf92d509d98d1ba6459a656a399 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Apr 2020 15:46:20 +0200 Subject: [PATCH 2183/3421] Remove pairlists from hyperopt too (it holds a reference to exchange) --- freqtrade/optimize/hyperopt.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index fcf50af6a..f9dddd573 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -624,6 +624,7 @@ class Hyperopt: # We don't need exchange instance anymore while running hyperopt self.backtesting.exchange = None # type: ignore + self.backtesting.pairlists = None # type: ignore self.trials = self.load_previous_results(self.trials_file) From a3a045dbd4a650b35d1430ab4609bd1947354a01 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Apr 2020 15:54:23 +0200 Subject: [PATCH 2184/3421] Add small section noting that a strategy file is always necessary fix #3047 --- docs/hyperopt.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 30a22a969..55d2d984c 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -63,6 +63,9 @@ Optional - can also be loaded from a strategy: !!! Note Assuming the optional methods are not in your hyperopt file, please use `--strategy AweSomeStrategy` which contains these methods so hyperopt can use these methods instead. +!!! Note + You will always have to provide a strategy to Hyperopt even if it contains all methods. + Rarely you may also need to override: * `roi_space` - for custom ROI optimization (if you need the ranges for the ROI parameters in the optimization hyperspace that differ from default) From d1a24db6b7bce1eb118f9fd19fb5017049f958cf Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Apr 2020 16:04:10 +0200 Subject: [PATCH 2185/3421] Remove deprecated pairlist and binary --- bin/freqtrade | 11 --------- docs/deprecated.md | 6 +++++ .../configuration/deprecated_settings.py | 23 ------------------- tests/test_configuration.py | 12 ---------- 4 files changed, 6 insertions(+), 46 deletions(-) delete mode 100755 bin/freqtrade diff --git a/bin/freqtrade b/bin/freqtrade deleted file mode 100755 index eee7cbef4..000000000 --- a/bin/freqtrade +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import logging - -logger = logging.getLogger(__name__) - - -logger.error("DEPRECATED installation detected, please run `pip install -e .` again.") - -sys.exit(2) diff --git a/docs/deprecated.md b/docs/deprecated.md index 349d41a09..a9a914f44 100644 --- a/docs/deprecated.md +++ b/docs/deprecated.md @@ -24,3 +24,9 @@ and in freqtrade 2019.7 (master branch). `--live` in the context of backtesting allowed to download the latest tick data for backtesting. Did only download the latest 500 candles, so was ineffective in getting good backtest data. Removed in 2019-7-dev (develop branch) and in freqtrade 2019-8 (master branch) + +### Allow running multiple pairlists in sequence + +The former `"pairlists"` section in the configuration has been removed, and is replaced by `pairlist` - being a list to specify a sequence of pairlists. + +The old option has been deprecated in 2019.11 and has been removed in 2020.4. diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index 55497d4f5..3999ea422 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -58,29 +58,6 @@ def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None: process_deprecated_setting(config, 'ask_strategy', 'ignore_roi_if_buy_signal', 'experimental', 'ignore_roi_if_buy_signal') - if not config.get('pairlists') and not config.get('pairlists'): - config['pairlists'] = [{'method': 'StaticPairList'}] - logger.warning( - "DEPRECATED: " - "Pairlists must be defined explicitly in the future." - "Defaulting to StaticPairList for now.") - - if config.get('pairlist', {}).get("method") == 'VolumePairList': - logger.warning( - "DEPRECATED: " - f"Using VolumePairList in pairlist is deprecated and must be moved to pairlists. " - "Please refer to the docs on configuration details") - pl = {'method': 'VolumePairList'} - pl.update(config.get('pairlist', {}).get('config')) - config['pairlists'].append(pl) - - if config.get('pairlist', {}).get('config', {}).get('precision_filter'): - logger.warning( - "DEPRECATED: " - f"Using precision_filter setting is deprecated and has been replaced by" - "PrecisionFilter. Please refer to the docs on configuration details") - config['pairlists'].append({'method': 'PrecisionFilter'}) - if (config.get('edge', {}).get('enabled', False) and 'capital_available_percentage' in config.get('edge', {})): logger.warning( diff --git a/tests/test_configuration.py b/tests/test_configuration.py index f29f2eaf2..c89f1381e 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -1041,18 +1041,6 @@ def test_process_temporary_deprecated_settings(mocker, default_conf, setting, ca assert default_conf[setting[0]][setting[1]] == setting[5] -def test_process_deprecated_setting_pairlists(mocker, default_conf, caplog): - patched_configuration_load_config_file(mocker, default_conf) - default_conf.update({'pairlist': { - 'method': 'VolumePairList', - 'config': {'precision_filter': True} - }}) - - process_temporary_deprecated_settings(default_conf) - assert log_has_re(r'DEPRECATED.*precision_filter.*', caplog) - assert log_has_re(r'DEPRECATED.*in pairlist is deprecated and must be moved*', caplog) - - def test_process_deprecated_setting_edge(mocker, edge_conf, caplog): patched_configuration_load_config_file(mocker, edge_conf) edge_conf.update({'edge': { From 9fa21628d7cf77fe81dca35373b9caa21c0c6515 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Apr 2020 16:29:17 +0200 Subject: [PATCH 2186/3421] Deprecate keys other than quoteVolume fixes #2981 --- docs/configuration.md | 4 +--- docs/deprecated.md | 6 +++++- freqtrade/pairlist/VolumePairList.py | 4 ++++ tests/pairlist/test_pairlist.py | 13 ++++++++++--- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 338299781..2942014be 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -585,7 +585,7 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis #### Volume Pair List -`VolumePairList` selects `number_assets` top pairs based on `sort_key`, which can be one of `askVolume`, `bidVolume` and `quoteVolume` and defaults to `quoteVolume`. +`VolumePairList` selects `number_assets` top pairs based on `sort_key`, which can only be `quoteVolume`. `VolumePairList` considers outputs of previous pairlists unless it's the first configured pairlist, it does not consider `pair_whitelist`, but selects the top assets from all available markets (with matching stake-currency) on the exchange. @@ -593,8 +593,6 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis `VolumePairList` is based on the ticker data, as reported by the ccxt library: -* The `bidVolume` is the volume (amount) of current best bid in the orderbook. -* The `askVolume` is the volume (amount) of current best ask in the orderbook. * The `quoteVolume` is the amount of quote (stake) currency traded (bought or sold) in last 24 hours. ```json diff --git a/docs/deprecated.md b/docs/deprecated.md index a9a914f44..408c7b2ac 100644 --- a/docs/deprecated.md +++ b/docs/deprecated.md @@ -27,6 +27,10 @@ Removed in 2019-7-dev (develop branch) and in freqtrade 2019-8 (master branch) ### Allow running multiple pairlists in sequence -The former `"pairlists"` section in the configuration has been removed, and is replaced by `pairlist` - being a list to specify a sequence of pairlists. +The former `"pairlist"` section in the configuration has been removed, and is replaced by `pairlists` - being a list to specify a sequence of pairlists. The old option has been deprecated in 2019.11 and has been removed in 2020.4. + +### deprecation of bidVolume and askVolume from volumepairlist + +Since only quoteVolume can be compared between assets, the other options (bidVolume, askVolume) have been deprecated in 2020.4. diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 65f43245c..eb44fe725 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -39,6 +39,10 @@ class VolumePairList(IPairList): if not self._validate_keys(self._sort_key): raise OperationalException( f'key {self._sort_key} not in {SORT_VALUES}') + if self._sort_key != 'quoteVolume': + logger.warning( + "DEPRECATED: using any key other than quoteVolume for VolumePairList is deprecated." + ) @property def needstickers(self) -> bool: diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 7dfe8bcca..f9e2893c3 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -4,11 +4,11 @@ from unittest.mock import MagicMock, PropertyMock import pytest -from freqtrade.exceptions import OperationalException from freqtrade.constants import AVAILABLE_PAIRLISTS -from freqtrade.resolvers import PairListResolver +from freqtrade.exceptions import OperationalException from freqtrade.pairlist.pairlistmanager import PairListManager -from tests.conftest import get_patched_freqtradebot, log_has_re +from freqtrade.resolvers import PairListResolver +from tests.conftest import get_patched_freqtradebot, log_has, log_has_re # whitelist, blacklist @@ -228,6 +228,13 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t assert (log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) or log_has_re(r"^Removed .* from whitelist, because ticker\['last'\] is empty.*", caplog)) + if pairlist['method'] == 'VolumePairList': + logmsg = ("DEPRECATED: using any key other than quoteVolume for " + "VolumePairList is deprecated.") + if pairlist['sort_key'] != 'quoteVolume': + assert log_has(logmsg, caplog) + else: + assert not log_has(logmsg, caplog) def test_gen_pair_whitelist_not_supported(mocker, default_conf, tickers) -> None: From deb14e0c8522da23bd2a4b487d6afa4187b4015a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Apr 2020 16:32:11 +0200 Subject: [PATCH 2187/3421] Update "final" message in setup.sh closes #2773 --- setup.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index e120190ce..d6e0006f1 100755 --- a/setup.sh +++ b/setup.sh @@ -252,7 +252,8 @@ function install() { echo "-------------------------" echo "Run the bot !" echo "-------------------------" - echo "You can now use the bot by executing 'source .env/bin/activate; freqtrade trade'." + echo "You can now use the bot by executing 'source .env/bin/activate; freqtrade '." + echo "You verify that freqtrade is installed successfully by running 'source .env/bin/activate; freqtrade --version'." } function plot() { From e1a347df90efa8517dc9a0e51bc144403ba53a43 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Apr 2020 16:55:13 +0200 Subject: [PATCH 2188/3421] Use subcommand, add 3rd line --- setup.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index d6e0006f1..918c41e6b 100755 --- a/setup.sh +++ b/setup.sh @@ -252,7 +252,8 @@ function install() { echo "-------------------------" echo "Run the bot !" echo "-------------------------" - echo "You can now use the bot by executing 'source .env/bin/activate; freqtrade '." + echo "You can now use the bot by executing 'source .env/bin/activate; freqtrade '." + echo "You can see the list of available bot subcommands by executing 'source .env/bin/activate; freqtrade --help'." echo "You verify that freqtrade is installed successfully by running 'source .env/bin/activate; freqtrade --version'." } From 255a43c98e75d18fe0a6bc04c513467c7ce85ffe Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Apr 2020 17:25:18 +0200 Subject: [PATCH 2189/3421] Update price timeout example --- docs/strategy-advanced.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index dcb8018f9..39e92d651 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -56,7 +56,6 @@ class Awesomestrategy(IStrategy): !!! Note For the above example, `unfilledtimeout` must be set to something bigger than 24h, otherwise that type of timeout will apply first. - ### Custom order timeout example (using additional data) ``` python @@ -77,7 +76,7 @@ class Awesomestrategy(IStrategy): ob = self.dp.orderbook(pair, 1) current_price = ob['bids'][0][0] # Cancel buy order if price is more than 2% above the order. - if order['price'] > current_price * 1.02: + if current_price > order['price'] * 1.02: return True return False @@ -86,7 +85,7 @@ class Awesomestrategy(IStrategy): ob = self.dp.orderbook(pair, 1) current_price = ob['asks'][0][0] # Cancel sell order if price is more than 2% below the order. - if order['price'] < current_price * 0.98: + if current_price < order['price'] * 0.98: return True return False ``` From e928c5fdaf3c46588ecb427427ff2c848104d16b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 27 Apr 2020 07:15:37 +0200 Subject: [PATCH 2190/3421] Update docs/hyperopt.md Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/hyperopt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 55d2d984c..11161e58b 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -64,7 +64,7 @@ Optional - can also be loaded from a strategy: Assuming the optional methods are not in your hyperopt file, please use `--strategy AweSomeStrategy` which contains these methods so hyperopt can use these methods instead. !!! Note - You will always have to provide a strategy to Hyperopt even if it contains all methods. + You always have to provide a strategy to Hyperopt, even if your custom Hyperopt class contains all methods. Rarely you may also need to override: From fb8a85da01e7a0c108a3a132e313cb4a7bb79224 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 27 Apr 2020 07:56:17 +0200 Subject: [PATCH 2191/3421] Disallow VolumePairList from backtesting for now --- freqtrade/optimize/backtesting.py | 3 +++ tests/optimize/test_backtesting.py | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index c01e3de50..3bf211d99 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -65,6 +65,9 @@ class Backtesting: self.exchange = ExchangeResolver.load_exchange(self.config['exchange']['name'], self.config) self.pairlists = PairListManager(self.exchange, self.config) + if 'VolumePairList' in self.pairlists.name_list: + raise OperationalException("VolumePairList not allowed for backtesting.") + self.pairlists.refresh_pairlist() if len(self.pairlists.whitelist) == 0: diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 862dbe3aa..6c2d6c9dd 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -378,9 +378,7 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> def test_backtesting_no_pair_left(default_conf, mocker, caplog, testdatadir) -> None: - def get_timerange(input1): - return Arrow(2017, 11, 14, 21, 17), Arrow(2017, 11, 14, 22, 59) - + mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) mocker.patch('freqtrade.data.history.history_utils.load_pair_history', MagicMock(return_value=pd.DataFrame())) mocker.patch('freqtrade.data.history.get_timerange', get_timerange) @@ -397,6 +395,10 @@ def test_backtesting_no_pair_left(default_conf, mocker, caplog, testdatadir) -> with pytest.raises(OperationalException, match='No pair in whitelist.'): Backtesting(default_conf) + default_conf['pairlists'] = [{"method": "VolumePairList", "number_assets": 5}] + with pytest.raises(OperationalException, match='VolumePairList not allowed for backtesting.'): + Backtesting(default_conf) + def test_backtest(default_conf, fee, mocker, testdatadir) -> None: default_conf['ask_strategy']['use_sell_signal'] = False From 77a2ff8917e37271f906d92dde9e2b622c56cbd1 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2020 09:02:21 +0000 Subject: [PATCH 2192/3421] Bump ccxt from 1.26.53 to 1.27.1 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.26.53 to 1.27.1. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.26.53...1.27.1) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 861c3bdd5..a53fc3999 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.26.53 +ccxt==1.27.1 SQLAlchemy==1.3.16 python-telegram-bot==12.6.1 arrow==0.15.5 From 2122384ec1c1f072870ca39ea47d765930d735e5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2020 09:02:49 +0000 Subject: [PATCH 2193/3421] Bump progressbar2 from 3.50.1 to 3.51.0 Bumps [progressbar2](https://github.com/WoLpH/python-progressbar) from 3.50.1 to 3.51.0. - [Release notes](https://github.com/WoLpH/python-progressbar/releases) - [Changelog](https://github.com/WoLpH/python-progressbar/blob/develop/CHANGES.rst) - [Commits](https://github.com/WoLpH/python-progressbar/compare/v3.50.1...v3.51.0) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 6df1eb157..b0e18867d 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -7,4 +7,4 @@ scikit-learn==0.22.2.post1 scikit-optimize==0.7.4 filelock==3.0.12 joblib==0.14.1 -progressbar2==3.50.1 +progressbar2==3.51.0 From 52c92a19e320ca6fb5be23fab736d35b44e80d0b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2020 09:03:30 +0000 Subject: [PATCH 2194/3421] Bump pytest-asyncio from 0.10.0 to 0.11.0 Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.10.0 to 0.11.0. - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases) - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.10.0...v0.11.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index d269676af..508716bde 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -9,7 +9,7 @@ flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.770 pytest==5.4.1 -pytest-asyncio==0.10.0 +pytest-asyncio==0.11.0 pytest-cov==2.8.1 pytest-mock==3.1.0 pytest-random-order==1.0.4 From abbb3254b2ed287604587c2be5ac5fccddd5c8d3 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2020 09:03:59 +0000 Subject: [PATCH 2195/3421] Bump mkdocs-material from 5.1.1 to 5.1.3 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.1.1 to 5.1.3. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.1.1...5.1.3) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 1f8d710a9..1c0e280ae 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.1.1 +mkdocs-material==5.1.3 mdx_truly_sane_lists==1.2 From 3754bf46ed8b028101a07df96a2a3efc338f4fb7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 27 Apr 2020 17:13:30 +0200 Subject: [PATCH 2196/3421] Change wording in deprecation messages Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/deprecated.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/deprecated.md b/docs/deprecated.md index 408c7b2ac..a7b57b10e 100644 --- a/docs/deprecated.md +++ b/docs/deprecated.md @@ -27,9 +27,9 @@ Removed in 2019-7-dev (develop branch) and in freqtrade 2019-8 (master branch) ### Allow running multiple pairlists in sequence -The former `"pairlist"` section in the configuration has been removed, and is replaced by `pairlists` - being a list to specify a sequence of pairlists. +The former `"pairlist"` section in the configuration has been removed, and is replaced by `"pairlists"` - being a list to specify a sequence of pairlists. -The old option has been deprecated in 2019.11 and has been removed in 2020.4. +The old section of configuration parameters (`"pairlist"`) has been deprecated in 2019.11 and has been removed in 2020.4. ### deprecation of bidVolume and askVolume from volumepairlist From a01ed170f55a2a2cf07b4b5fcc721933308dc623 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 28 Apr 2020 17:33:07 +0300 Subject: [PATCH 2197/3421] Improve hyperopt-list logging --- freqtrade/optimize/hyperopt.py | 6 +++--- tests/commands/test_commands.py | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index ad9d7d44c..1e8077f10 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -376,13 +376,13 @@ class Hyperopt: # Verification for overwrite if path.isfile(csv_file): - logger.error("CSV-File already exists!") + logger.error(f"CSV file already exists: {csv_file}") return try: io.open(csv_file, 'w+').close() except IOError: - logger.error("Filed to create CSV-File!") + logger.error(f"Failed to create CSV file: {csv_file}") return trials = json_normalize(results, max_level=1) @@ -420,7 +420,7 @@ class Hyperopt: trials = trials.drop(columns=['is_initial_point', 'is_best', 'is_profit']) trials.to_csv(csv_file, index=False, header=True, mode='w', encoding='UTF-8') - print("CSV-File created!") + logger.info(f"CSV file created: {csv_file}") def has_space(self, space: str) -> bool: """ diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 4530cd03d..264ae9a63 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -727,7 +727,7 @@ def test_start_test_pairlist(mocker, caplog, tickers, default_conf, capsys): assert re.match("['ETH/BTC', 'TKN/BTC', 'BLK/BTC', 'LTC/BTC', 'XRP/BTC']", captured.out) -def test_hyperopt_list(mocker, capsys, hyperopt_results): +def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results): mocker.patch( 'freqtrade.optimize.hyperopt.Hyperopt.load_previous_results', MagicMock(return_value=hyperopt_results) @@ -911,8 +911,7 @@ def test_hyperopt_list(mocker, capsys, hyperopt_results): pargs['config'] = None start_hyperopt_list(pargs) captured = capsys.readouterr() - assert all(x in captured.out - for x in ["CSV-File created!"]) + log_has("CSV file created: test_file.csv", caplog) f = Path("test_file.csv") assert 'Best,1,2,-1.25%,-0.00125625,,-2.51,"3,930.0 m",0.43662' in f.read_text() assert f.is_file() From c26835048c9efb76325b36a8efa4a9e752e230aa Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 28 Apr 2020 22:56:19 +0300 Subject: [PATCH 2198/3421] Hyperopt cleanup, do not use 'trials' --- freqtrade/optimize/hyperopt.py | 72 +++++++++++++++++---------------- tests/optimize/test_hyperopt.py | 41 ++++++++++--------- 2 files changed, 59 insertions(+), 54 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 1e8077f10..a3e636988 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -75,8 +75,8 @@ class Hyperopt: self.custom_hyperoptloss = HyperOptLossResolver.load_hyperoptloss(self.config) self.calculate_loss = self.custom_hyperoptloss.hyperopt_loss_function - self.trials_file = (self.config['user_data_dir'] / - 'hyperopt_results' / 'hyperopt_results.pickle') + self.results_file = (self.config['user_data_dir'] / + 'hyperopt_results' / 'hyperopt_results.pickle') self.data_pickle_file = (self.config['user_data_dir'] / 'hyperopt_results' / 'hyperopt_tickerdata.pkl') self.total_epochs = config.get('epochs', 0) @@ -88,10 +88,10 @@ class Hyperopt: else: logger.info("Continuing on previous hyperopt results.") - self.num_trials_saved = 0 + self.num_epochs_saved = 0 # Previous evaluations - self.trials: List = [] + self.epochs: List = [] # Populate functions here (hasattr is slow so should not be run during "regular" operations) if hasattr(self.custom_hyperopt, 'populate_indicators'): @@ -132,7 +132,7 @@ class Hyperopt: """ Remove hyperopt pickle files to restart hyperopt. """ - for f in [self.data_pickle_file, self.trials_file]: + for f in [self.data_pickle_file, self.results_file]: p = Path(f) if p.is_file(): logger.info(f"Removing `{p}`.") @@ -151,27 +151,26 @@ class Hyperopt: # and the values are taken from the list of parameters. return {d.name: v for d, v in zip(dimensions, raw_params)} - def save_trials(self, final: bool = False) -> None: + def _save_results(self) -> None: """ - Save hyperopt trials to file + Save hyperopt results to file """ - num_trials = len(self.trials) - if num_trials > self.num_trials_saved: - logger.debug(f"Saving {num_trials} {plural(num_trials, 'epoch')}.") - dump(self.trials, self.trials_file) - self.num_trials_saved = num_trials - if final: - logger.info(f"{num_trials} {plural(num_trials, 'epoch')} " - f"saved to '{self.trials_file}'.") + num_epochs = len(self.epochs) + if num_epochs > self.num_epochs_saved: + logger.debug(f"Saving {num_epochs} {plural(num_epochs, 'epoch')}.") + dump(self.epochs, self.results_file) + self.num_epochs_saved = num_epochs + logger.debug(f"{self.num_epochs_saved} {plural(self.num_epochs_saved, 'epoch')} " + f"saved to '{self.results_file}'.") @staticmethod - def _read_trials(trials_file: Path) -> List: + def _read_results(results_file: Path) -> List: """ - Read hyperopt trials file + Read hyperopt results from file """ - logger.info("Reading Trials from '%s'", trials_file) - trials = load(trials_file) - return trials + logger.info("Reading epochs from '%s'", results_file) + data = load(results_file) + return data def _get_params_details(self, params: Dict) -> Dict: """ @@ -588,19 +587,20 @@ class Hyperopt: wrap_non_picklable_objects(self.generate_optimizer))(v, i) for v in asked) @staticmethod - def load_previous_results(trials_file: Path) -> List: + def load_previous_results(results_file: Path) -> List: """ Load data for epochs from the file if we have one """ - trials: List = [] - if trials_file.is_file() and trials_file.stat().st_size > 0: - trials = Hyperopt._read_trials(trials_file) - if trials[0].get('is_best') is None: + epochs: List = [] + if results_file.is_file() and results_file.stat().st_size > 0: + epochs = Hyperopt._read_results(results_file) + # Detection of some old format, without 'is_best' field saved + if epochs[0].get('is_best') is None: raise OperationalException( "The file with Hyperopt results is incompatible with this version " "of Freqtrade and cannot be loaded.") - logger.info(f"Loaded {len(trials)} previous evaluations from disk.") - return trials + logger.info(f"Loaded {len(epochs)} previous evaluations from disk.") + return epochs def _set_random_state(self, random_state: Optional[int]) -> int: return random_state or random.randint(1, 2**16 - 1) @@ -628,7 +628,7 @@ class Hyperopt: self.backtesting.exchange = None # type: ignore self.backtesting.pairlists = None # type: ignore - self.trials = self.load_previous_results(self.trials_file) + self.epochs = self.load_previous_results(self.results_file) cpus = cpu_count() logger.info(f"Found {cpus} CPU cores. Let's make them scream!") @@ -698,23 +698,25 @@ class Hyperopt: if is_best: self.current_best_loss = val['loss'] - self.trials.append(val) + self.epochs.append(val) # Save results after each best epoch and every 100 epochs if is_best or current % 100 == 0: - self.save_trials() + self._save_results() pbar.update(current) except KeyboardInterrupt: print('User interrupted..') - self.save_trials(final=True) + self._save_results() + logger.info(f"{self.num_epochs_saved} {plural(self.num_epochs_saved, 'epoch')} " + f"saved to '{self.results_file}'.") - if self.trials: - sorted_trials = sorted(self.trials, key=itemgetter('loss')) - results = sorted_trials[0] - self.print_epoch_details(results, self.total_epochs, self.print_json) + if self.epochs: + sorted_epochs = sorted(self.epochs, key=itemgetter('loss')) + best_epoch = sorted_epochs[0] + self.print_epoch_details(best_epoch, self.total_epochs, self.print_json) else: # This is printed when Ctrl+C is pressed quickly, before first epochs have # a chance to be evaluated. diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index b5106be0c..cc8b9aa37 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -1,5 +1,6 @@ # pragma pylint: disable=missing-docstring,W0212,C0103 import locale +import logging from datetime import datetime from pathlib import Path from typing import Dict, List @@ -56,14 +57,14 @@ def hyperopt_results(): # Functions for recurrent object patching -def create_trials(mocker, hyperopt, testdatadir) -> List[Dict]: +def create_results(mocker, hyperopt, testdatadir) -> List[Dict]: """ - When creating trials, mock the hyperopt Trials so that *by default* + When creating results, mock the hyperopt so that *by default* - we don't create any pickle'd files in the filesystem - we might have a pickle'd file so make sure that we return false when looking for it """ - hyperopt.trials_file = testdatadir / 'optimize/ut_trials.pickle' + hyperopt.results_file = testdatadir / 'optimize/ut_results.pickle' mocker.patch.object(Path, "is_file", MagicMock(return_value=False)) stat_mock = MagicMock() @@ -477,28 +478,30 @@ def test_no_log_if_loss_does_not_improve(hyperopt, caplog) -> None: assert caplog.record_tuples == [] -def test_save_trials_saves_trials(mocker, hyperopt, testdatadir, caplog) -> None: - trials = create_trials(mocker, hyperopt, testdatadir) +def test_save_results_saves_epochs(mocker, hyperopt, testdatadir, caplog) -> None: + epochs = create_results(mocker, hyperopt, testdatadir) mock_dump = mocker.patch('freqtrade.optimize.hyperopt.dump', return_value=None) - trials_file = testdatadir / 'optimize' / 'ut_trials.pickle' + results_file = testdatadir / 'optimize' / 'ut_results.pickle' - hyperopt.trials = trials - hyperopt.save_trials(final=True) - assert log_has(f"1 epoch saved to '{trials_file}'.", caplog) + caplog.set_level(logging.DEBUG) + + hyperopt.epochs = epochs + hyperopt._save_results() + assert log_has(f"1 epoch saved to '{results_file}'.", caplog) mock_dump.assert_called_once() - hyperopt.trials = trials + trials - hyperopt.save_trials(final=True) - assert log_has(f"2 epochs saved to '{trials_file}'.", caplog) + hyperopt.epochs = epochs + epochs + hyperopt._save_results() + assert log_has(f"2 epochs saved to '{results_file}'.", caplog) -def test_read_trials_returns_trials_file(mocker, hyperopt, testdatadir, caplog) -> None: - trials = create_trials(mocker, hyperopt, testdatadir) - mock_load = mocker.patch('freqtrade.optimize.hyperopt.load', return_value=trials) - trials_file = testdatadir / 'optimize' / 'ut_trials.pickle' - hyperopt_trial = hyperopt._read_trials(trials_file) - assert log_has(f"Reading Trials from '{trials_file}'", caplog) - assert hyperopt_trial == trials +def test_read_results_returns_epochs(mocker, hyperopt, testdatadir, caplog) -> None: + epochs = create_results(mocker, hyperopt, testdatadir) + mock_load = mocker.patch('freqtrade.optimize.hyperopt.load', return_value=epochs) + results_file = testdatadir / 'optimize' / 'ut_results.pickle' + hyperopt_epochs = hyperopt._read_results(results_file) + assert log_has(f"Reading epochs from '{results_file}'", caplog) + assert hyperopt_epochs == epochs mock_load.assert_called_once() From c6787d7e9faf4f3ad6a3d00ed7c806ad83cd5485 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 28 Apr 2020 23:14:02 +0300 Subject: [PATCH 2199/3421] Do not use 'trials' in commands --- freqtrade/commands/hyperopt_commands.py | 106 ++++++++++++------------ 1 file changed, 52 insertions(+), 54 deletions(-) diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index 3f61ea66c..517f47d16 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -38,33 +38,33 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: 'filter_max_total_profit': config.get('hyperopt_list_max_total_profit', None) } - trials_file = (config['user_data_dir'] / - 'hyperopt_results' / 'hyperopt_results.pickle') + results_file = (config['user_data_dir'] / + 'hyperopt_results' / 'hyperopt_results.pickle') # Previous evaluations - trials = Hyperopt.load_previous_results(trials_file) - total_epochs = len(trials) + epochs = Hyperopt.load_previous_results(results_file) + total_epochs = len(epochs) - trials = _hyperopt_filter_trials(trials, filteroptions) + epochs = _hyperopt_filter_epochs(epochs, filteroptions) if print_colorized: colorama_init(autoreset=True) if not export_csv: try: - print(Hyperopt.get_result_table(config, trials, total_epochs, + print(Hyperopt.get_result_table(config, epochs, total_epochs, not filteroptions['only_best'], print_colorized, 0)) except KeyboardInterrupt: print('User interrupted..') - if trials and not no_details: - sorted_trials = sorted(trials, key=itemgetter('loss')) - results = sorted_trials[0] + if epochs and not no_details: + sorted_epochs = sorted(epochs, key=itemgetter('loss')) + results = sorted_epochs[0] Hyperopt.print_epoch_details(results, total_epochs, print_json, no_header) - if trials and export_csv: + if epochs and export_csv: Hyperopt.export_csv_file( - config, trials, total_epochs, not filteroptions['only_best'], export_csv + config, epochs, total_epochs, not filteroptions['only_best'], export_csv ) @@ -78,8 +78,8 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: print_json = config.get('print_json', False) no_header = config.get('hyperopt_show_no_header', False) - trials_file = (config['user_data_dir'] / - 'hyperopt_results' / 'hyperopt_results.pickle') + results_file = (config['user_data_dir'] / + 'hyperopt_results' / 'hyperopt_results.pickle') n = config.get('hyperopt_show_index', -1) filteroptions = { @@ -96,89 +96,87 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: } # Previous evaluations - trials = Hyperopt.load_previous_results(trials_file) - total_epochs = len(trials) + epochs = Hyperopt.load_previous_results(results_file) + total_epochs = len(epochs) - trials = _hyperopt_filter_trials(trials, filteroptions) - trials_epochs = len(trials) + epochs = _hyperopt_filter_epochs(epochs, filteroptions) + filtered_epochs = len(epochs) - if n > trials_epochs: + if n > filtered_epochs: raise OperationalException( - f"The index of the epoch to show should be less than {trials_epochs + 1}.") - if n < -trials_epochs: + f"The index of the epoch to show should be less than {filtered_epochs + 1}.") + if n < -filtered_epochs: raise OperationalException( - f"The index of the epoch to show should be greater than {-trials_epochs - 1}.") + f"The index of the epoch to show should be greater than {-filtered_epochs - 1}.") # Translate epoch index from human-readable format to pythonic if n > 0: n -= 1 - if trials: - val = trials[n] + if epochs: + val = epochs[n] Hyperopt.print_epoch_details(val, total_epochs, print_json, no_header, header_str="Epoch details") -def _hyperopt_filter_trials(trials: List, filteroptions: dict) -> List: +def _hyperopt_filter_epochs(epochs: List, filteroptions: dict) -> List: """ Filter our items from the list of hyperopt results """ if filteroptions['only_best']: - trials = [x for x in trials if x['is_best']] + epochs = [x for x in epochs if x['is_best']] if filteroptions['only_profitable']: - trials = [x for x in trials if x['results_metrics']['profit'] > 0] + epochs = [x for x in epochs if x['results_metrics']['profit'] > 0] if filteroptions['filter_min_trades'] > 0: - trials = [ - x for x in trials + epochs = [ + x for x in epochs if x['results_metrics']['trade_count'] > filteroptions['filter_min_trades'] ] if filteroptions['filter_max_trades'] > 0: - trials = [ - x for x in trials + epochs = [ + x for x in epochs if x['results_metrics']['trade_count'] < filteroptions['filter_max_trades'] ] if filteroptions['filter_min_avg_time'] is not None: - trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] - trials = [ - x for x in trials + epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0] + epochs = [ + x for x in epochs if x['results_metrics']['duration'] > filteroptions['filter_min_avg_time'] ] if filteroptions['filter_max_avg_time'] is not None: - trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] - trials = [ - x for x in trials + epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0] + epochs = [ + x for x in epochs if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time'] ] if filteroptions['filter_min_avg_profit'] is not None: - trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] - trials = [ - x for x in trials - if x['results_metrics']['avg_profit'] - > filteroptions['filter_min_avg_profit'] + epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0] + epochs = [ + x for x in epochs + if x['results_metrics']['avg_profit'] > filteroptions['filter_min_avg_profit'] ] if filteroptions['filter_max_avg_profit'] is not None: - trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] - trials = [ - x for x in trials - if x['results_metrics']['avg_profit'] - < filteroptions['filter_max_avg_profit'] + epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0] + epochs = [ + x for x in epochs + if x['results_metrics']['avg_profit'] < filteroptions['filter_max_avg_profit'] ] if filteroptions['filter_min_total_profit'] is not None: - trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] - trials = [ - x for x in trials + epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0] + epochs = [ + x for x in epochs if x['results_metrics']['profit'] > filteroptions['filter_min_total_profit'] ] if filteroptions['filter_max_total_profit'] is not None: - trials = [x for x in trials if x['results_metrics']['trade_count'] > 0] - trials = [ - x for x in trials + epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0] + epochs = [ + x for x in epochs if x['results_metrics']['profit'] < filteroptions['filter_max_total_profit'] ] - logger.info(f"{len(trials)} " + + logger.info(f"{len(epochs)} " + ("best " if filteroptions['only_best'] else "") + ("profitable " if filteroptions['only_profitable'] else "") + "epochs found.") - return trials + return epochs From 726e52aaa7932595a0f67e3a6c591b74d45b5962 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 29 Apr 2020 10:49:25 +0300 Subject: [PATCH 2200/3421] Use skopt model_queue_size instead of custom hack --- freqtrade/optimize/hyperopt.py | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index a3e636988..12310311c 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -49,9 +49,9 @@ logger = logging.getLogger(__name__) INITIAL_POINTS = 30 -# Keep no more than 2*SKOPT_MODELS_MAX_NUM models -# in the skopt models list -SKOPT_MODELS_MAX_NUM = 10 +# Keep no more than SKOPT_MODEL_QUEUE_SIZE models +# in the skopt model queue, to optimize memory consumption +SKOPT_MODEL_QUEUE_SIZE = 10 MAX_LOSS = 100000 # just a big enough number to be bad result in loss optimization @@ -563,25 +563,9 @@ class Hyperopt: n_initial_points=INITIAL_POINTS, acq_optimizer_kwargs={'n_jobs': cpu_count}, random_state=self.random_state, + model_queue_size=SKOPT_MODEL_QUEUE_SIZE, ) - def fix_optimizer_models_list(self) -> None: - """ - WORKAROUND: Since skopt is not actively supported, this resolves problems with skopt - memory usage, see also: https://github.com/scikit-optimize/scikit-optimize/pull/746 - - This may cease working when skopt updates if implementation of this intrinsic - part changes. - """ - n = len(self.opt.models) - SKOPT_MODELS_MAX_NUM - # Keep no more than 2*SKOPT_MODELS_MAX_NUM models in the skopt models list, - # remove the old ones. These are actually of no use, the current model - # from the estimator is the only one used in the skopt optimizer. - # Freqtrade code also does not inspect details of the models. - if n >= SKOPT_MODELS_MAX_NUM: - logger.debug(f"Fixing skopt models list, removing {n} old items...") - del self.opt.models[0:n] - def run_optimizer_parallel(self, parallel, asked, i) -> List: return parallel(delayed( wrap_non_picklable_objects(self.generate_optimizer))(v, i) for v in asked) @@ -677,7 +661,6 @@ class Hyperopt: asked = self.opt.ask(n_points=current_jobs) f_val = self.run_optimizer_parallel(parallel, asked, i) self.opt.tell(asked, [v['loss'] for v in f_val]) - self.fix_optimizer_models_list() # Calculate progressbar outputs for j, val in enumerate(f_val): From 1a6ddfcaebaf2c75c67aca115379db70aa9d96c1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Apr 2020 10:37:48 +0200 Subject: [PATCH 2201/3421] Be clear on evaluation logic during backtesting --- docs/backtesting.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index d6775e17c..d5a4cf3a7 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -202,7 +202,8 @@ Since backtesting lacks some detailed information about what happens within a ca - Buys happen at open-price - Sell signal sells happen at open-price of the following candle -- Low happens before high for stoploss, protecting capital first. +- Low happens before high for stoploss, protecting capital first +- Stoploss is evaluated before ROI - ROI - sells are compared to high - but the ROI value is used (e.g. ROI = 2%, high=5% - so the sell will be at 2%) - sells are never "below the candle", so a ROI of 2% may result in a sell at 2.4% if low was at 2.4% profit From 74281a16fdda730216e13d1654766a14432e664b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Apr 2020 10:39:55 +0200 Subject: [PATCH 2202/3421] Move to the last point and clarify further --- docs/backtesting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index d5a4cf3a7..1f518658d 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -203,7 +203,6 @@ Since backtesting lacks some detailed information about what happens within a ca - Buys happen at open-price - Sell signal sells happen at open-price of the following candle - Low happens before high for stoploss, protecting capital first -- Stoploss is evaluated before ROI - ROI - sells are compared to high - but the ROI value is used (e.g. ROI = 2%, high=5% - so the sell will be at 2%) - sells are never "below the candle", so a ROI of 2% may result in a sell at 2.4% if low was at 2.4% profit @@ -213,6 +212,7 @@ Since backtesting lacks some detailed information about what happens within a ca - High happens first - adjusting stoploss - Low uses the adjusted stoploss (so sells with large high-low difference are backtested correctly) - Sell-reason does not explain if a trade was positive or negative, just what triggered the sell (this can look odd if negative ROI values are used) +- Stoploss (and trailing stoploss) is evaluated before ROI within one candle Taking these assumptions, backtesting tries to mirror real trading as closely as possible. However, backtesting will **never** replace running a strategy in dry-run mode. Also, keep in mind that past results don't guarantee future success. From 69b44234a48245c546ac0eb3d21b7fc6052e1034 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 29 Apr 2020 10:47:53 +0200 Subject: [PATCH 2203/3421] Update docs/backtesting.md Co-Authored-By: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/backtesting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 1f518658d..9b2997510 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -212,7 +212,7 @@ Since backtesting lacks some detailed information about what happens within a ca - High happens first - adjusting stoploss - Low uses the adjusted stoploss (so sells with large high-low difference are backtested correctly) - Sell-reason does not explain if a trade was positive or negative, just what triggered the sell (this can look odd if negative ROI values are used) -- Stoploss (and trailing stoploss) is evaluated before ROI within one candle +- Stoploss (and trailing stoploss) is evaluated before ROI within one candle. So you can often see more trades with the `stoploss` and/or `trailing_stop` sell reason comparing to the results obtained with the same strategy in the Dry Run/Live Trade modes. Taking these assumptions, backtesting tries to mirror real trading as closely as possible. However, backtesting will **never** replace running a strategy in dry-run mode. Also, keep in mind that past results don't guarantee future success. From 9152e76966dc35f3cff4d2be83359f31d557e4ba Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 29 Apr 2020 12:17:08 +0300 Subject: [PATCH 2204/3421] Add skopt version check into setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 94c48a6a7..5a332057f 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,7 @@ plot = ['plotly>=4.0'] hyperopt = [ 'scipy', 'scikit-learn', - 'scikit-optimize', + 'scikit-optimize>=0.7.4', 'filelock', 'joblib', 'progressbar2', From 38c6ba6c0840a2f2c575c5ee67e083d0a5a65182 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Wed, 29 Apr 2020 13:21:04 +0300 Subject: [PATCH 2205/3421] Update setup.py Co-Authored-By: Matthias --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 5a332057f..9c253ea4e 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,7 @@ plot = ['plotly>=4.0'] hyperopt = [ 'scipy', 'scikit-learn', - 'scikit-optimize>=0.7.4', + 'scikit-optimize>=0.7.0', 'filelock', 'joblib', 'progressbar2', From dec1b10743c3420a71b9dcc49d14c83d0dacb289 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 30 Apr 2020 06:51:42 +0200 Subject: [PATCH 2206/3421] Add fee_cost and currency columns --- freqtrade/persistence.py | 22 +++++++++++++++++++--- tests/test_persistence.py | 4 ++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index fb314f439..36e2c7ffd 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -86,11 +86,15 @@ def check_migrate(engine) -> None: logger.debug(f'trying {table_back_name}') # Check for latest column - if not has_column(cols, 'close_profit_abs'): + if not has_column(cols, 'fee_close_cost'): logger.info(f'Running database migration - backup available as {table_back_name}') fee_open = get_column_def(cols, 'fee_open', 'fee') + fee_open_cost = get_column_def(cols, 'fee_open_cost', 'null') + fee_open_currency = get_column_def(cols, 'fee_open_currency', 'null') fee_close = get_column_def(cols, 'fee_close', 'fee') + fee_close_cost = get_column_def(cols, 'fee_close_cost', 'null') + fee_close_currency = get_column_def(cols, 'fee_close_currency', 'null') open_rate_requested = get_column_def(cols, 'open_rate_requested', 'null') close_rate_requested = get_column_def(cols, 'close_rate_requested', 'null') stop_loss = get_column_def(cols, 'stop_loss', '0.0') @@ -120,7 +124,9 @@ def check_migrate(engine) -> None: # Copy data back - following the correct schema engine.execute(f"""insert into trades - (id, exchange, pair, is_open, fee_open, fee_close, open_rate, + (id, exchange, pair, is_open, + fee_open, fee_open_cost, fee_open_currency, + fee_close, fee_close_cost, fee_open_currency, open_rate, open_rate_requested, close_rate, close_rate_requested, close_profit, stake_amount, amount, open_date, close_date, open_order_id, stop_loss, stop_loss_pct, initial_stop_loss, initial_stop_loss_pct, @@ -136,7 +142,9 @@ def check_migrate(engine) -> None: else pair end pair, - is_open, {fee_open} fee_open, {fee_close} fee_close, + is_open, {fee_open} fee_open, {fee_open_cost} fee_open_cost, + {fee_open_currency} fee_open_currency, {fee_close} fee_close, + {fee_close_cost} fee_close_cost, {fee_close_currency} fee_close_currency, open_rate, {open_rate_requested} open_rate_requested, close_rate, {close_rate_requested} close_rate_requested, close_profit, stake_amount, amount, open_date, close_date, open_order_id, @@ -185,7 +193,11 @@ class Trade(_DECL_BASE): pair = Column(String, nullable=False, index=True) is_open = Column(Boolean, nullable=False, default=True, index=True) fee_open = Column(Float, nullable=False, default=0.0) + fee_open_cost = Column(Float, nullable=True) + fee_open_currency = Column(String, nullable=True) fee_close = Column(Float, nullable=False, default=0.0) + fee_close_cost = Column(Float, nullable=True) + fee_close_currency = Column(String, nullable=True) open_rate = Column(Float) open_rate_requested = Column(Float) # open_trade_price - calculated via _calc_open_trade_price @@ -235,7 +247,11 @@ class Trade(_DECL_BASE): 'pair': self.pair, 'is_open': self.is_open, 'fee_open': self.fee_open, + 'fee_open_cost': self.fee_open_cost, + 'fee_open_currency': self.fee_open_currency, 'fee_close': self.fee_close, + 'fee_close_cost': self.fee_close_cost, + 'fee_close_currency': self.fee_close_currency, 'open_date_hum': arrow.get(self.open_date).humanize(), 'open_date': self.open_date.strftime("%Y-%m-%d %H:%M:%S"), 'close_date_hum': (arrow.get(self.close_date).humanize() diff --git a/tests/test_persistence.py b/tests/test_persistence.py index ceac24356..f54802ceb 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -465,6 +465,10 @@ def test_migrate_old(mocker, default_conf, fee): assert trade.initial_stop_loss == 0.0 assert trade.open_trade_price == trade._calc_open_trade_price() assert trade.close_profit_abs is None + assert trade.fee_open_cost is None + assert trade.fee_open_currency is None + assert trade.fee_close_cost is None + assert trade.fee_close_currency is None trade = Trade.query.filter(Trade.id == 2).first() assert trade.close_rate is not None From 7936120afc26104179fd1c8115e4f858fbc06b85 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 30 Apr 2020 06:58:43 +0200 Subject: [PATCH 2207/3421] Adapt tests to support new db fields --- tests/rpc/test_rpc.py | 8 ++++++++ tests/rpc/test_rpc_apiserver.py | 8 ++++++++ tests/test_persistence.py | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index d2af4bd87..a1e6d9f26 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -51,7 +51,11 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_date_hum': ANY, 'is_open': ANY, 'fee_open': ANY, + 'fee_open_cost': ANY, + 'fee_open_currency': ANY, 'fee_close': ANY, + 'fee_close_cost': ANY, + 'fee_close_currency': ANY, 'open_rate_requested': ANY, 'open_trade_price': ANY, 'close_rate_requested': ANY, @@ -90,7 +94,11 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_date_hum': ANY, 'is_open': ANY, 'fee_open': ANY, + 'fee_open_cost': ANY, + 'fee_open_currency': ANY, 'fee_close': ANY, + 'fee_close_cost': ANY, + 'fee_close_currency': ANY, 'open_rate_requested': ANY, 'open_trade_price': ANY, 'close_rate_requested': ANY, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 6548790cb..01e9c0e96 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -472,7 +472,11 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'close_rate_requested': None, 'current_rate': 1.099e-05, 'fee_close': 0.0025, + 'fee_close_cost': None, + 'fee_close_currency': None, 'fee_open': 0.0025, + 'fee_open_cost': None, + 'fee_open_currency': None, 'open_date': ANY, 'is_open': True, 'max_rate': 0.0, @@ -575,7 +579,11 @@ def test_api_forcebuy(botclient, mocker, fee): 'close_profit': None, 'close_rate_requested': None, 'fee_close': 0.0025, + 'fee_close_cost': None, + 'fee_close_currency': None, 'fee_open': 0.0025, + 'fee_open_cost': None, + 'fee_open_currency': None, 'is_open': False, 'max_rate': None, 'min_rate': None, diff --git a/tests/test_persistence.py b/tests/test_persistence.py index f54802ceb..aa3a59b87 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -745,7 +745,11 @@ def test_to_json(default_conf, fee): 'open_rate_requested': None, 'open_trade_price': 15.1668225, 'fee_close': 0.0025, + 'fee_close_cost': None, + 'fee_close_currency': None, 'fee_open': 0.0025, + 'fee_open_cost': None, + 'fee_open_currency': None, 'close_rate': None, 'close_rate_requested': None, 'amount': 123.0, @@ -794,7 +798,11 @@ def test_to_json(default_conf, fee): 'close_profit': None, 'close_rate_requested': None, 'fee_close': 0.0025, + 'fee_close_cost': None, + 'fee_close_currency': None, 'fee_open': 0.0025, + 'fee_open_cost': None, + 'fee_open_currency': None, 'is_open': None, 'max_rate': None, 'min_rate': None, From b125dd3728b516f628363f5a7b7c8009a955c24e Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 30 Apr 2020 07:06:06 +0200 Subject: [PATCH 2208/3421] Extract order_has_fee method --- freqtrade/freqtradebot.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 7ae87e807..80470f9e7 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1162,6 +1162,17 @@ class FreqtradeBot: return False + def _order_has_fee(self, order: Dict) -> bool: + """ + Verifies if the passed in order dict has the needed keys to extract fees + :param order: Order or trade (one trade) dict + :return: True if the fee substructure contains currency and cost, false otherwise + """ + if not isinstance(order, dict): + return False + return ('fee' in order and order['fee'] is not None and + (order['fee'].keys() >= {'currency', 'cost'})) + def get_real_amount(self, trade: Trade, order: Dict, order_amount: float = None) -> float: """ Get real amount for the trade @@ -1175,8 +1186,7 @@ class FreqtradeBot: trade_base_currency = self.exchange.get_pair_base_currency(trade.pair) # use fee from order-dict if possible - if ('fee' in order and order['fee'] is not None and - (order['fee'].keys() >= {'currency', 'cost'})): + if self._order_has_fee(order): if (order['fee']['currency'] is not None and order['fee']['cost'] is not None and trade_base_currency == order['fee']['currency']): @@ -1196,8 +1206,7 @@ class FreqtradeBot: fee_abs = 0 for exectrade in trades: amount += exectrade['amount'] - if ("fee" in exectrade and exectrade['fee'] is not None and - (exectrade['fee'].keys() >= {'currency', 'cost'})): + if self._order_has_fee(exectrade): # only applies if fee is in quote currency! if (exectrade['fee']['currency'] is not None and exectrade['fee']['cost'] is not None and From 6d7a3a0cc99d8e47b7e27e54d3827335af61a8bf Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 30 Apr 2020 07:12:08 +0200 Subject: [PATCH 2209/3421] Extract more logic into order-has_fee --- freqtrade/freqtradebot.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 80470f9e7..4db9f9a1c 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1164,14 +1164,18 @@ class FreqtradeBot: def _order_has_fee(self, order: Dict) -> bool: """ - Verifies if the passed in order dict has the needed keys to extract fees + Verifies if the passed in order dict has the needed keys to extract fees, + and that these keys (currency, cost) are not empty. :param order: Order or trade (one trade) dict :return: True if the fee substructure contains currency and cost, false otherwise """ if not isinstance(order, dict): return False - return ('fee' in order and order['fee'] is not None and - (order['fee'].keys() >= {'currency', 'cost'})) + return ('fee' in order and order['fee'] is not None + and (order['fee'].keys() >= {'currency', 'cost'}) + and order['fee']['currency'] is not None + and order['fee']['cost'] is not None + ) def get_real_amount(self, trade: Trade, order: Dict, order_amount: float = None) -> float: """ @@ -1187,9 +1191,7 @@ class FreqtradeBot: trade_base_currency = self.exchange.get_pair_base_currency(trade.pair) # use fee from order-dict if possible if self._order_has_fee(order): - if (order['fee']['currency'] is not None and - order['fee']['cost'] is not None and - trade_base_currency == order['fee']['currency']): + if trade_base_currency == order['fee']['currency']: new_amount = order_amount - order['fee']['cost'] logger.info("Applying fee on amount for %s (from %s to %s) from Order", trade, order['amount'], new_amount) @@ -1208,9 +1210,7 @@ class FreqtradeBot: amount += exectrade['amount'] if self._order_has_fee(exectrade): # only applies if fee is in quote currency! - if (exectrade['fee']['currency'] is not None and - exectrade['fee']['cost'] is not None and - trade_base_currency == exectrade['fee']['currency']): + if trade_base_currency == exectrade['fee']['currency']: fee_abs += exectrade['fee']['cost'] if not isclose(amount, order_amount, abs_tol=constants.MATH_CLOSE_PREC): From d3b9f4d393850de9d846735d8790d32dbc459c4c Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 30 Apr 2020 19:28:36 +0200 Subject: [PATCH 2210/3421] Add extract_cost_curr_rate --- freqtrade/freqtradebot.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4db9f9a1c..7963fbec3 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1177,6 +1177,15 @@ class FreqtradeBot: and order['fee']['cost'] is not None ) + def _extract_cost_curr_rate(self, order: Dict) -> Tuple[float, str, float]: + """ + :param order: Order or trade (one trade) dict + :return: Tuple with cost, currency, rate of the given fee dict + """ + return (order['fee']['cost'], + order['fee']['currency'], + order['fee'].get('rate', None)) + def get_real_amount(self, trade: Trade, order: Dict, order_amount: float = None) -> float: """ Get real amount for the trade From a867d40eac3ab040eac09ac9905cefa4e74178fc Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 30 Apr 2020 19:33:09 +0200 Subject: [PATCH 2211/3421] Move fee_methods to exchange --- freqtrade/exchange/exchange.py | 26 ++++++++++++++++++++++++++ freqtrade/freqtradebot.py | 24 ------------------------ 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 1a0565959..9a0364b07 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1063,6 +1063,32 @@ class Exchange: except ccxt.BaseError as e: raise OperationalException(e) from e + @staticmethod + def order_has_fee(order: Dict) -> bool: + """ + Verifies if the passed in order dict has the needed keys to extract fees, + and that these keys (currency, cost) are not empty. + :param order: Order or trade (one trade) dict + :return: True if the fee substructure contains currency and cost, false otherwise + """ + if not isinstance(order, dict): + return False + return ('fee' in order and order['fee'] is not None + and (order['fee'].keys() >= {'currency', 'cost'}) + and order['fee']['currency'] is not None + and order['fee']['cost'] is not None + ) + + @staticmethod + def extract_cost_curr_rate(order: Dict) -> Tuple[float, str, float]: + """ + :param order: Order or trade (one trade) dict + :return: Tuple with cost, currency, rate of the given fee dict + """ + return (order['fee']['cost'], + order['fee']['currency'], + order['fee'].get('rate', None)) + def is_exchange_bad(exchange_name: str) -> bool: return exchange_name in BAD_EXCHANGES diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 7963fbec3..a297f1823 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1162,30 +1162,6 @@ class FreqtradeBot: return False - def _order_has_fee(self, order: Dict) -> bool: - """ - Verifies if the passed in order dict has the needed keys to extract fees, - and that these keys (currency, cost) are not empty. - :param order: Order or trade (one trade) dict - :return: True if the fee substructure contains currency and cost, false otherwise - """ - if not isinstance(order, dict): - return False - return ('fee' in order and order['fee'] is not None - and (order['fee'].keys() >= {'currency', 'cost'}) - and order['fee']['currency'] is not None - and order['fee']['cost'] is not None - ) - - def _extract_cost_curr_rate(self, order: Dict) -> Tuple[float, str, float]: - """ - :param order: Order or trade (one trade) dict - :return: Tuple with cost, currency, rate of the given fee dict - """ - return (order['fee']['cost'], - order['fee']['currency'], - order['fee'].get('rate', None)) - def get_real_amount(self, trade: Trade, order: Dict, order_amount: float = None) -> float: """ Get real amount for the trade From 2e4dc6c25388feaa8ce13407bf62d2eabfb27938 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 30 Apr 2020 19:56:48 +0200 Subject: [PATCH 2212/3421] Exchange should return fee dict for dry-run orders --- freqtrade/exchange/exchange.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 9a0364b07..22d477e6c 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -472,26 +472,31 @@ class Exchange: 'pair': pair, 'price': rate, 'amount': _amount, - "cost": _amount * rate, + 'cost': _amount * rate, 'type': ordertype, 'side': side, 'remaining': _amount, 'datetime': arrow.utcnow().isoformat(), 'status': "closed" if ordertype == "market" else "open", 'fee': None, - "info": {} + 'info': {} } - self._store_dry_order(dry_order) + self._store_dry_order(dry_order, pair) # Copy order and close it - so the returned order is open unless it's a market order return dry_order - def _store_dry_order(self, dry_order: Dict) -> None: + def _store_dry_order(self, dry_order: Dict, pair: str) -> None: closed_order = dry_order.copy() - if closed_order["type"] in ["market", "limit"]: + if closed_order['type'] in ["market", "limit"]: closed_order.update({ - "status": "closed", - "filled": closed_order["amount"], - "remaining": 0 + 'status': 'closed', + 'filled': closed_order['amount'], + 'remaining': 0, + 'fee': { + 'currency': self.get_pair_quote_currency(pair), + 'cost': dry_order['amount'] * self.get_fee(pair), + 'rate': self.get_fee(pair) + } }) if closed_order["type"] in ["stop_loss_limit"]: closed_order["info"].update({"stopPrice": closed_order["price"]}) From e74ed0ba7b7ba4f9f8f6cd8f456d1ccc35901614 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 30 Apr 2020 20:05:27 +0200 Subject: [PATCH 2213/3421] Add tests for fee extraction methods --- freqtrade/exchange/exchange.py | 2 ++ tests/exchange/test_exchange.py | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 22d477e6c..bd6d617c0 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1087,6 +1087,8 @@ class Exchange: @staticmethod def extract_cost_curr_rate(order: Dict) -> Tuple[float, str, float]: """ + Extract tuple of cost, currency, rate. + Requires order_has_fee to run first! :param order: Order or trade (one trade) dict :return: Tuple with cost, currency, rate of the given fee dict """ diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 3c92612a0..f8c572dc8 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -2145,3 +2145,23 @@ def test_symbol_is_pair(market_symbol, base_currency, quote_currency, expected_r ]) def test_market_is_active(market, expected_result) -> None: assert market_is_active(market) == expected_result + + +@pytest.mark.parametrize("order,expected", [ + ([{'fee'}], False), + ({'fee': None}, False), + ({'fee': {'currency': 'ETH/BTC'}}, False), + ({'fee': {'currency': 'ETH/BTC', 'cost': None}}, False), + ({'fee': {'currency': 'ETH/BTC', 'cost': 0.01}}, True), +]) +def test_order_has_fee(order, expected) -> None: + assert Exchange.order_has_fee(order) == expected + + +@pytest.mark.parametrize("order,expected", [ + ({'fee': {'currency': 'ETH/BTC', 'cost': 0.43}}, (0.43, 'ETH/BTC', None)), + ({'fee': {'currency': 'ETH/USDT', 'cost': 0.01}}, (0.01, 'ETH/USDT', None)), + ({'fee': {'currency': 'ETH/USDT', 'cost': 0.34, 'rate': 0.01}}, (0.34, 'ETH/USDT', 0.01)), +]) +def test_extract_cost_curr_rate(order, expected) -> None: + assert Exchange.extract_cost_curr_rate(order) == expected From 63b55658ac07ab3b6e44ee7bda9093031f2133ba Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 1 May 2020 05:11:30 +0300 Subject: [PATCH 2214/3421] Add ticker to dataprovider --- freqtrade/data/dataprovider.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 1df710152..b197ed1a5 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -97,8 +97,7 @@ class DataProvider: """ Return last ticker data """ - # TODO: Implement me - pass + return self._exchange.fetch_ticker(pair) def orderbook(self, pair: str, maximum: int) -> Dict[str, List]: """ From f8f794a8038ec9d532b39cf7a947956e02b7bac0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 30 Apr 2020 20:15:35 +0200 Subject: [PATCH 2215/3421] Simplify fee-related tests --- tests/test_freqtradebot.py | 60 ++++++++------------------------------ 1 file changed, 12 insertions(+), 48 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 6f2ce9f3c..43ee4c79d 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3285,8 +3285,6 @@ def test_disable_ignore_roi_if_buy_signal(default_conf, limit_buy_order, def test_get_real_amount_quote(default_conf, trades_for_order, buy_order_fee, fee, caplog, mocker): mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) - patch_RPCManager(mocker) - patch_exchange(mocker) amount = sum(x['amount'] for x in trades_for_order) trade = Trade( pair='LTC/ETH', @@ -3297,8 +3295,7 @@ def test_get_real_amount_quote(default_conf, trades_for_order, buy_order_fee, fe fee_close=fee.return_value, open_order_id="123456" ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) + freqtrade = get_patched_freqtradebot(mocker, default_conf) # Amount is reduced by "fee" assert freqtrade.get_real_amount(trade, buy_order_fee) == amount - (amount * 0.001) @@ -3310,8 +3307,6 @@ def test_get_real_amount_quote(default_conf, trades_for_order, buy_order_fee, fe def test_get_real_amount_no_trade(default_conf, buy_order_fee, caplog, mocker, fee): mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=[]) - patch_RPCManager(mocker) - patch_exchange(mocker) amount = buy_order_fee['amount'] trade = Trade( pair='LTC/ETH', @@ -3322,8 +3317,7 @@ def test_get_real_amount_no_trade(default_conf, buy_order_fee, caplog, mocker, f fee_close=fee.return_value, open_order_id="123456" ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) + freqtrade = get_patched_freqtradebot(mocker, default_conf) # Amount is reduced by "fee" assert freqtrade.get_real_amount(trade, buy_order_fee) == amount @@ -3335,8 +3329,6 @@ def test_get_real_amount_no_trade(default_conf, buy_order_fee, caplog, mocker, f def test_get_real_amount_stake(default_conf, trades_for_order, buy_order_fee, fee, mocker): trades_for_order[0]['fee']['currency'] = 'ETH' - patch_RPCManager(mocker) - patch_exchange(mocker) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) amount = sum(x['amount'] for x in trades_for_order) trade = Trade( @@ -3348,8 +3340,7 @@ def test_get_real_amount_stake(default_conf, trades_for_order, buy_order_fee, fe open_rate=0.245441, open_order_id="123456" ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) + freqtrade = get_patched_freqtradebot(mocker, default_conf) # Amount does not change assert freqtrade.get_real_amount(trade, buy_order_fee) == amount @@ -3362,8 +3353,6 @@ def test_get_real_amount_no_currency_in_fee(default_conf, trades_for_order, buy_ limit_buy_order['fee'] = {'cost': 0.004, 'currency': None} trades_for_order[0]['fee']['currency'] = None - patch_RPCManager(mocker) - patch_exchange(mocker) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) amount = sum(x['amount'] for x in trades_for_order) trade = Trade( @@ -3375,8 +3364,7 @@ def test_get_real_amount_no_currency_in_fee(default_conf, trades_for_order, buy_ open_rate=0.245441, open_order_id="123456" ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) + freqtrade = get_patched_freqtradebot(mocker, default_conf) # Amount does not change assert freqtrade.get_real_amount(trade, limit_buy_order) == amount @@ -3386,8 +3374,6 @@ def test_get_real_amount_BNB(default_conf, trades_for_order, buy_order_fee, fee, trades_for_order[0]['fee']['currency'] = 'BNB' trades_for_order[0]['fee']['cost'] = 0.00094518 - patch_RPCManager(mocker) - patch_exchange(mocker) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) amount = sum(x['amount'] for x in trades_for_order) trade = Trade( @@ -3399,16 +3385,13 @@ def test_get_real_amount_BNB(default_conf, trades_for_order, buy_order_fee, fee, open_rate=0.245441, open_order_id="123456" ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) + freqtrade = get_patched_freqtradebot(mocker, default_conf) # Amount does not change assert freqtrade.get_real_amount(trade, buy_order_fee) == amount def test_get_real_amount_multi(default_conf, trades_for_order2, buy_order_fee, caplog, fee, mocker): - patch_RPCManager(mocker) - patch_exchange(mocker) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order2) amount = float(sum(x['amount'] for x in trades_for_order2)) trade = Trade( @@ -3420,8 +3403,7 @@ def test_get_real_amount_multi(default_conf, trades_for_order2, buy_order_fee, c open_rate=0.245441, open_order_id="123456" ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) + freqtrade = get_patched_freqtradebot(mocker, default_conf) # Amount is reduced by "fee" assert freqtrade.get_real_amount(trade, buy_order_fee) == amount - (amount * 0.001) @@ -3435,8 +3417,6 @@ def test_get_real_amount_fromorder(default_conf, trades_for_order, buy_order_fee limit_buy_order = deepcopy(buy_order_fee) limit_buy_order['fee'] = {'cost': 0.004, 'currency': 'LTC'} - patch_RPCManager(mocker) - patch_exchange(mocker) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=[trades_for_order]) amount = float(sum(x['amount'] for x in trades_for_order)) @@ -3449,8 +3429,7 @@ def test_get_real_amount_fromorder(default_conf, trades_for_order, buy_order_fee open_rate=0.245441, open_order_id="123456" ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) + freqtrade = get_patched_freqtradebot(mocker, default_conf) # Amount is reduced by "fee" assert freqtrade.get_real_amount(trade, limit_buy_order) == amount - 0.004 @@ -3463,8 +3442,6 @@ def test_get_real_amount_invalid_order(default_conf, trades_for_order, buy_order limit_buy_order = deepcopy(buy_order_fee) limit_buy_order['fee'] = {'cost': 0.004} - patch_RPCManager(mocker) - patch_exchange(mocker) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=[]) amount = float(sum(x['amount'] for x in trades_for_order)) trade = Trade( @@ -3476,8 +3453,7 @@ def test_get_real_amount_invalid_order(default_conf, trades_for_order, buy_order open_rate=0.245441, open_order_id="123456" ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) + freqtrade = get_patched_freqtradebot(mocker, default_conf) # Amount does not change assert freqtrade.get_real_amount(trade, limit_buy_order) == amount @@ -3487,8 +3463,6 @@ def test_get_real_amount_wrong_amount(default_conf, trades_for_order, buy_order_ limit_buy_order = deepcopy(buy_order_fee) limit_buy_order['amount'] = limit_buy_order['amount'] - 0.001 - patch_RPCManager(mocker) - patch_exchange(mocker) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) amount = float(sum(x['amount'] for x in trades_for_order)) trade = Trade( @@ -3500,8 +3474,7 @@ def test_get_real_amount_wrong_amount(default_conf, trades_for_order, buy_order_ fee_close=fee.return_value, open_order_id="123456" ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) + freqtrade = get_patched_freqtradebot(mocker, default_conf) # Amount does not change with pytest.raises(DependencyException, match=r"Half bought\? Amounts don't match"): @@ -3514,8 +3487,6 @@ def test_get_real_amount_wrong_amount_rounding(default_conf, trades_for_order, b limit_buy_order = deepcopy(buy_order_fee) trades_for_order[0]['amount'] = trades_for_order[0]['amount'] + 1e-15 - patch_RPCManager(mocker) - patch_exchange(mocker) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) amount = float(sum(x['amount'] for x in trades_for_order)) trade = Trade( @@ -3527,8 +3498,7 @@ def test_get_real_amount_wrong_amount_rounding(default_conf, trades_for_order, b open_rate=0.245441, open_order_id="123456" ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) + freqtrade = get_patched_freqtradebot(mocker, default_conf) # Amount changes by fee amount. assert isclose(freqtrade.get_real_amount(trade, limit_buy_order), amount - (amount * 0.001), @@ -3539,8 +3509,6 @@ def test_get_real_amount_invalid(default_conf, trades_for_order, buy_order_fee, # Remove "Currency" from fee dict trades_for_order[0]['fee'] = {'cost': 0.008} - patch_RPCManager(mocker) - patch_exchange(mocker) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) amount = sum(x['amount'] for x in trades_for_order) trade = Trade( @@ -3553,15 +3521,12 @@ def test_get_real_amount_invalid(default_conf, trades_for_order, buy_order_fee, open_order_id="123456" ) - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) + freqtrade = get_patched_freqtradebot(mocker, default_conf) # Amount does not change assert freqtrade.get_real_amount(trade, buy_order_fee) == amount def test_get_real_amount_open_trade(default_conf, fee, mocker): - patch_RPCManager(mocker) - patch_exchange(mocker) amount = 12345 trade = Trade( pair='LTC/ETH', @@ -3577,8 +3542,7 @@ def test_get_real_amount_open_trade(default_conf, fee, mocker): 'amount': amount, 'status': 'open', } - freqtrade = FreqtradeBot(default_conf) - patch_get_signal(freqtrade) + freqtrade = get_patched_freqtradebot(mocker, default_conf) assert freqtrade.get_real_amount(trade, order) == amount From 45c97fde2dc125f00255f197f5bbf4fe63a20a06 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 30 Apr 2020 22:16:52 +0200 Subject: [PATCH 2216/3421] Use correct typehint for extract_cost_curr_rate --- freqtrade/exchange/exchange.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index bd6d617c0..df7f3005e 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1085,7 +1085,7 @@ class Exchange: ) @staticmethod - def extract_cost_curr_rate(order: Dict) -> Tuple[float, str, float]: + def extract_cost_curr_rate(order: Dict) -> Tuple[float, str, Optional[float]]: """ Extract tuple of cost, currency, rate. Requires order_has_fee to run first! @@ -1095,6 +1095,7 @@ class Exchange: return (order['fee']['cost'], order['fee']['currency'], order['fee'].get('rate', None)) + # calculate rate ? (order['fee']['cost'] / (order['amount'] * order['price'])) def is_exchange_bad(exchange_name: str) -> bool: From 59bafc8d02e291bb0797eeecdc1cd92feadb5517 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 15:17:52 +0200 Subject: [PATCH 2217/3421] Implement fee rate calculation --- freqtrade/exchange/exchange.py | 33 +++++++++++++++++++++--- tests/exchange/test_exchange.py | 45 +++++++++++++++++++++++++++++---- 2 files changed, 69 insertions(+), 9 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index df7f3005e..ebadd4c8a 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -22,7 +22,7 @@ from freqtrade.data.converter import ohlcv_to_dataframe from freqtrade.exceptions import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async -from freqtrade.misc import deep_merge_dicts +from freqtrade.misc import deep_merge_dicts, safe_value_fallback CcxtModuleType = Any @@ -1084,8 +1084,33 @@ class Exchange: and order['fee']['cost'] is not None ) - @staticmethod - def extract_cost_curr_rate(order: Dict) -> Tuple[float, str, Optional[float]]: + def calculate_fee_rate(self, order: Dict) -> Optional[float]: + """ + Calculate fee rate if it's not given by the exchange. + :param order: Order or trade (one trade) dict + """ + if order['fee'].get('rate') is not None: + return order['fee'].get('rate') + fee_curr = order['fee']['currency'] + # Calculate fee based on order details + if fee_curr in self.get_pair_base_currency(order['symbol']): + # Base currency - divide by amount + return round(order['fee']['cost'] / order['amount'], 8) + elif fee_curr in self.get_pair_quote_currency(order['symbol']): + # Quote currency - divide by cost + return round(order['fee']['cost'] / order['cost'], 8) + else: + # If Fee currency is a different currency + try: + comb = self.get_valid_pair_combination(fee_curr, self._config['stake_currency']) + tick = self.fetch_ticker(comb) + + fee_to_quote_rate = safe_value_fallback(tick, tick, 'last', 'ask') + return round((order['fee']['cost'] * fee_to_quote_rate) / order['cost'], 8) + except DependencyException: + return None + + def extract_cost_curr_rate(self, order: Dict) -> Tuple[float, str, Optional[float]]: """ Extract tuple of cost, currency, rate. Requires order_has_fee to run first! @@ -1094,7 +1119,7 @@ class Exchange: """ return (order['fee']['cost'], order['fee']['currency'], - order['fee'].get('rate', None)) + self.calculate_fee_rate(order)) # calculate rate ? (order['fee']['cost'] / (order['amount'] * order['price'])) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index f8c572dc8..7a1df5103 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -2159,9 +2159,44 @@ def test_order_has_fee(order, expected) -> None: @pytest.mark.parametrize("order,expected", [ - ({'fee': {'currency': 'ETH/BTC', 'cost': 0.43}}, (0.43, 'ETH/BTC', None)), - ({'fee': {'currency': 'ETH/USDT', 'cost': 0.01}}, (0.01, 'ETH/USDT', None)), - ({'fee': {'currency': 'ETH/USDT', 'cost': 0.34, 'rate': 0.01}}, (0.34, 'ETH/USDT', 0.01)), + ({'symbol': 'ETH/BTC', 'fee': {'currency': 'ETH', 'cost': 0.43}}, + (0.43, 'ETH', 0.01)), + ({'symbol': 'ETH/USDT', 'fee': {'currency': 'USDT', 'cost': 0.01}}, + (0.01, 'USDT', 0.01)), + ({'symbol': 'BTC/USDT', 'fee': {'currency': 'USDT', 'cost': 0.34, 'rate': 0.01}}, + (0.34, 'USDT', 0.01)), ]) -def test_extract_cost_curr_rate(order, expected) -> None: - assert Exchange.extract_cost_curr_rate(order) == expected +def test_extract_cost_curr_rate(mocker, default_conf, order, expected) -> None: + mocker.patch('freqtrade.exchange.Exchange.calculate_fee_rate', MagicMock(return_value=0.01)) + ex = get_patched_exchange(mocker, default_conf) + assert ex.extract_cost_curr_rate(order) == expected + + +@pytest.mark.parametrize("order,expected", [ + # Using base-currency + ({'symbol': 'ETH/BTC', 'amount': 0.04, 'cost': 0.05, + 'fee': {'currency': 'ETH', 'cost': 0.004, 'rate': None}}, 0.1), + ({'symbol': 'ETH/BTC', 'amount': 0.05, 'cost': 0.05, + 'fee': {'currency': 'ETH', 'cost': 0.004, 'rate': None}}, 0.08), + # Using quote currency + ({'symbol': 'ETH/BTC', 'amount': 0.04, 'cost': 0.05, + 'fee': {'currency': 'BTC', 'cost': 0.005}}, 0.1), + ({'symbol': 'ETH/BTC', 'amount': 0.04, 'cost': 0.05, + 'fee': {'currency': 'BTC', 'cost': 0.002, 'rate': None}}, 0.04), + # Using foreign currency + ({'symbol': 'ETH/BTC', 'amount': 0.04, 'cost': 0.05, + 'fee': {'currency': 'NEO', 'cost': 0.0012}}, 0.001944), + ({'symbol': 'ETH/BTC', 'amount': 2.21, 'cost': 0.02992561, + 'fee': {'currency': 'NEO', 'cost': 0.00027452}}, 0.00074305), + # TODO: More tests here! + # Rate included in return - return as is + ({'symbol': 'ETH/BTC', 'amount': 0.04, 'cost': 0.05, + 'fee': {'currency': 'USDT', 'cost': 0.34, 'rate': 0.01}}, 0.01), + ({'symbol': 'ETH/BTC', 'amount': 0.04, 'cost': 0.05, + 'fee': {'currency': 'USDT', 'cost': 0.34, 'rate': 0.005}}, 0.005), +]) +def test_calculate_fee_rate(mocker, default_conf, order, expected) -> None: + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', return_value={'last': 0.081}) + + ex = get_patched_exchange(mocker, default_conf) + assert ex.calculate_fee_rate(order) == expected From db8fb39a3860caca6000f384055d5476ba60f03b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 15:20:38 +0200 Subject: [PATCH 2218/3421] don't use trade.update directly! --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a297f1823..ff2d1d759 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1032,7 +1032,7 @@ class FreqtradeBot: trade.sell_reason = sell_reason.value # In case of market sell orders the order can be closed immediately if order.get('status', 'unknown') == 'closed': - trade.update(order) + self.update_trade_state(trade, order) Trade.session.flush() # Lock pair for one candle to prevent immediate rebuys From b93d33a93a652c3c870d43a1ca75b4c7aadbe39b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 15:30:49 +0200 Subject: [PATCH 2219/3421] Fix mock order dicts --- tests/conftest.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index d95475b8c..621f45407 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -779,7 +779,7 @@ def limit_buy_order(): 'id': 'mocked_limit_buy', 'type': 'limit', 'side': 'buy', - 'pair': 'mocked', + 'symbol': 'mocked', 'datetime': arrow.utcnow().isoformat(), 'price': 0.00001099, 'amount': 90.99181073, @@ -795,7 +795,7 @@ def market_buy_order(): 'id': 'mocked_market_buy', 'type': 'market', 'side': 'buy', - 'pair': 'mocked', + 'symbol': 'mocked', 'datetime': arrow.utcnow().isoformat(), 'price': 0.00004099, 'amount': 91.99181073, @@ -811,7 +811,7 @@ def market_sell_order(): 'id': 'mocked_limit_sell', 'type': 'market', 'side': 'sell', - 'pair': 'mocked', + 'symbol': 'mocked', 'datetime': arrow.utcnow().isoformat(), 'price': 0.00004173, 'amount': 91.99181073, @@ -827,7 +827,7 @@ def limit_buy_order_old(): 'id': 'mocked_limit_buy_old', 'type': 'limit', 'side': 'buy', - 'pair': 'mocked', + 'symbol': 'mocked', 'datetime': str(arrow.utcnow().shift(minutes=-601).datetime), 'price': 0.00001099, 'amount': 90.99181073, @@ -843,7 +843,7 @@ def limit_sell_order_old(): 'id': 'mocked_limit_sell_old', 'type': 'limit', 'side': 'sell', - 'pair': 'ETH/BTC', + 'symbol': 'ETH/BTC', 'datetime': arrow.utcnow().shift(minutes=-601).isoformat(), 'price': 0.00001099, 'amount': 90.99181073, @@ -859,7 +859,7 @@ def limit_buy_order_old_partial(): 'id': 'mocked_limit_buy_old_partial', 'type': 'limit', 'side': 'buy', - 'pair': 'ETH/BTC', + 'symbol': 'ETH/BTC', 'datetime': arrow.utcnow().shift(minutes=-601).isoformat(), 'price': 0.00001099, 'amount': 90.99181073, @@ -1482,7 +1482,7 @@ def buy_order_fee(): 'id': 'mocked_limit_buy_old', 'type': 'limit', 'side': 'buy', - 'pair': 'mocked', + 'symbol': 'mocked', 'datetime': str(arrow.utcnow().shift(minutes=-601).datetime), 'price': 0.245441, 'amount': 8.0, From fdcc507f06ff725a7c0053676509ba049c7e8129 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 15:35:57 +0200 Subject: [PATCH 2220/3421] Fix integration tests --- tests/test_integration.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/test_integration.py b/tests/test_integration.py index c40da7e9d..ee6ef3cb2 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -67,7 +67,6 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, mocker.patch.multiple( 'freqtrade.freqtradebot.FreqtradeBot', create_stoploss_order=MagicMock(return_value=True), - update_trade_state=MagicMock(), _notify_sell=MagicMock(), ) mocker.patch("freqtrade.strategy.interface.IStrategy.should_sell", should_sell_mock) @@ -97,8 +96,9 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, # Only order for 3rd trade needs to be cancelled assert cancel_order_mock.call_count == 1 - # Wallets must be updated between stoploss cancellation and selling. - assert wallets_mock.call_count == 2 + # Wallets must be updated between stoploss cancellation and selling, and will be updated again + # During update_trade_state + assert wallets_mock.call_count == 3 trade = trades[0] assert trade.sell_reason == SellType.STOPLOSS_ON_EXCHANGE.value @@ -144,7 +144,6 @@ def test_forcebuy_last_unlimited(default_conf, ticker, fee, limit_buy_order, moc mocker.patch.multiple( 'freqtrade.freqtradebot.FreqtradeBot', create_stoploss_order=MagicMock(return_value=True), - update_trade_state=MagicMock(), _notify_sell=MagicMock(), ) should_sell_mock = MagicMock(side_effect=[ From a2ff6326470afde76cdfe9d70966d83151afbded Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 16:00:42 +0200 Subject: [PATCH 2221/3421] Add update_fee method to persistence --- freqtrade/persistence.py | 18 ++++++++++++++++++ tests/test_persistence.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 36e2c7ffd..fec095daa 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -376,6 +376,24 @@ class Trade(_DECL_BASE): self ) + def update_fee(self, fee_cost: float, fee_currency: Optional[str], fee_rate: Optional[float], + side: str) -> None: + """ + Update Fee parameters. Only acts once per side + """ + if side == 'buy' and self.fee_open_currency is None: + self.fee_open_cost = fee_cost + self.fee_open_currency = fee_currency + if fee_rate is not None: + self.fee_open = fee_rate + # Assume close-fee will fall into the same fee category and take an educated guess + self.fee_close = fee_rate + elif side == 'sell' and self.fee_close_currency is None: + self.fee_close_cost = fee_cost + self.fee_close_currency = fee_currency + if fee_rate is not None: + self.fee_close = fee_rate + def _calc_open_trade_price(self) -> float: """ Calculate the open_rate including open_fee. diff --git a/tests/test_persistence.py b/tests/test_persistence.py index aa3a59b87..fa6f84ce0 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -874,6 +874,39 @@ def test_stoploss_reinitialization(default_conf, fee): assert trade_adj.initial_stop_loss_pct == -0.04 +def test_update_fee(fee): + trade = Trade( + pair='ETH/BTC', + stake_amount=0.001, + fee_open=fee.return_value, + open_date=arrow.utcnow().shift(hours=-2).datetime, + amount=10, + fee_close=fee.return_value, + exchange='bittrex', + open_rate=1, + max_rate=1, + ) + fee_cost = 0.15 + fee_currency = 'BTC' + fee_rate = 0.0075 + assert trade.fee_open_currency is None + + trade.update_fee(fee_cost, fee_currency, fee_rate, 'buy') + assert trade.fee_open_currency == fee_currency + assert trade.fee_open_cost == fee_cost + assert trade.fee_open == fee_rate + # Setting buy rate should "guess" close rate + assert trade.fee_close == fee_rate + assert trade.fee_close_currency is None + assert trade.fee_close_cost is None + + fee_rate = 0.0076 + trade.update_fee(fee_cost, fee_currency, fee_rate, 'sell') + assert trade.fee_close == 0.0076 + assert trade.fee_close_cost == fee_cost + assert trade.fee_close == fee_rate + + @pytest.mark.usefixtures("init_persistence") def test_total_open_trades_stakes(fee): From 371100a97c049d4090358b97c36d4372ebfe8616 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 16:01:33 +0200 Subject: [PATCH 2222/3421] Update fee handling --- freqtrade/freqtradebot.py | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ff2d1d759..063712ed8 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1167,20 +1167,25 @@ class FreqtradeBot: Get real amount for the trade Necessary for exchanges which charge fees in base currency (e.g. binance) """ + fee_currency = None + # Init variables if order_amount is None: order_amount = order['amount'] # Only run for closed orders - if trade.fee_open == 0 or order['status'] == 'open': + if trade.fee_open_currency is not None or order['status'] == 'open': return order_amount trade_base_currency = self.exchange.get_pair_base_currency(trade.pair) # use fee from order-dict if possible - if self._order_has_fee(order): - if trade_base_currency == order['fee']['currency']: - new_amount = order_amount - order['fee']['cost'] - logger.info("Applying fee on amount for %s (from %s to %s) from Order", - trade, order['amount'], new_amount) - return new_amount + if self.exchange.order_has_fee(order): + fee_cost, fee_currency, fee_rate = self.exchange.extract_cost_curr_rate(order) + logger.info(f"Fee for Trade {trade}: {fee_cost:.8g} {fee_currency} - rate: {fee_rate}") + if trade_base_currency == fee_currency: + order_amount = order_amount - fee_cost + logger.info(f"Applying fee on amount for {trade} (from {order['amount']} " + f"to {order_amount}) from Order") + trade.update_fee(fee_cost, fee_currency, fee_rate, order['side']) + return order_amount # Fallback to Trades trades = self.exchange.get_trades_for_order(trade.open_order_id, trade.pair, @@ -1190,13 +1195,25 @@ class FreqtradeBot: logger.info("Applying fee on amount for %s failed: myTrade-Dict empty found", trade) return order_amount amount = 0 - fee_abs = 0 + fee_abs = 0.0 + fee_cost = 0.0 + fee_rate_array: List[float] = [] for exectrade in trades: amount += exectrade['amount'] - if self._order_has_fee(exectrade): + if self.exchange.order_has_fee(exectrade): + fee_cost_, fee_currency, fee_rate_ = self.exchange.extract_cost_curr_rate(exectrade) + fee_cost += fee_cost_ + if fee_rate_ is not None: + fee_rate_array.append(fee_rate_) # only applies if fee is in quote currency! - if trade_base_currency == exectrade['fee']['currency']: - fee_abs += exectrade['fee']['cost'] + if trade_base_currency == fee_currency: + fee_abs += fee_cost_ + # Ensure at least one trade was found: + if fee_currency: + # fee_rate should use mean + + fee_rate = sum(fee_rate_array) / float(len(fee_rate_array)) if fee_rate_array else None + trade.update_fee(fee_cost, fee_currency, fee_rate, order['side']) if not isclose(amount, order_amount, abs_tol=constants.MATH_CLOSE_PREC): logger.warning(f"Amount {amount} does not match amount {trade.amount}") From 7558e4bffe6fdcb5a2883f16d5b817defb56f59f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 16:13:07 +0200 Subject: [PATCH 2223/3421] Split fee detection from trades from general logic --- freqtrade/freqtradebot.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 063712ed8..ed228f6ad 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1164,10 +1164,12 @@ class FreqtradeBot: def get_real_amount(self, trade: Trade, order: Dict, order_amount: float = None) -> float: """ - Get real amount for the trade + Detect and update trade fee. + Calls trade.update_fee() uppon correct detection. + Returns modified amount if the fee was taken from the destination currency. Necessary for exchanges which charge fees in base currency (e.g. binance) + :return: identical (or new) amount for the trade """ - fee_currency = None # Init variables if order_amount is None: order_amount = order['amount'] @@ -1186,17 +1188,23 @@ class FreqtradeBot: f"to {order_amount}) from Order") trade.update_fee(fee_cost, fee_currency, fee_rate, order['side']) return order_amount + return self.fee_detection_from_trades(trade, order, order_amount) - # Fallback to Trades + def fee_detection_from_trades(self, trade: Trade, order: Dict, order_amount: float) -> float: + """ + fee-detection fallback to Trades. Parses result of fetch_my_trades to get correct fee. + """ trades = self.exchange.get_trades_for_order(trade.open_order_id, trade.pair, trade.open_date) if len(trades) == 0: logger.info("Applying fee on amount for %s failed: myTrade-Dict empty found", trade) return order_amount + fee_currency = None amount = 0 fee_abs = 0.0 fee_cost = 0.0 + trade_base_currency = self.exchange.get_pair_base_currency(trade.pair) fee_rate_array: List[float] = [] for exectrade in trades: amount += exectrade['amount'] From 40d4949f0669423c89011a98b804f41a437815d0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 17:46:01 +0200 Subject: [PATCH 2224/3421] Don't handle trades if they've just been closed. --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ed228f6ad..72531c9f9 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -610,7 +610,7 @@ class FreqtradeBot: trades_closed += 1 continue # Check if we can sell our current pair - if trade.open_order_id is None and self.handle_trade(trade): + if trade.open_order_id is None and trade.is_open and self.handle_trade(trade): trades_closed += 1 except DependencyException as exception: From 509f38d3aaacb94a6b6278d59a8bce8a79d642f9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 17:59:24 +0200 Subject: [PATCH 2225/3421] Use non-deprectated parameter for progressbar --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 12310311c..02695d1aa 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -648,7 +648,7 @@ class Hyperopt: ' [', progressbar.ETA(), ', ', progressbar.Timer(), ']', ] with progressbar.ProgressBar( - maxval=self.total_epochs, redirect_stdout=False, redirect_stderr=False, + max_value=self.total_epochs, redirect_stdout=False, redirect_stderr=False, widgets=widgets ) as pbar: EVALS = ceil(self.total_epochs / jobs) From bd51cd332bc89801ea3e4af4ee4e217833e7bd79 Mon Sep 17 00:00:00 2001 From: jpribyl Date: Fri, 24 Apr 2020 16:16:52 -0600 Subject: [PATCH 2226/3421] Cancel all open orders after receiving /stop or ctrl+c --- config.json.example | 1 + config_binance.json.example | 1 + config_full.json.example | 1 + config_kraken.json.example | 1 + docs/configuration.md | 1 + freqtrade/commands/arguments.py | 2 +- freqtrade/commands/cli_options.py | 5 ++ freqtrade/configuration/configuration.py | 5 ++ freqtrade/constants.py | 8 ++ freqtrade/freqtradebot.py | 108 +++++++++++++++-------- freqtrade/templates/base_config.json.j2 | 1 + freqtrade/worker.py | 3 +- tests/conftest.py | 1 + tests/test_arguments.py | 8 ++ tests/test_configuration.py | 2 + tests/test_freqtradebot.py | 28 +++--- 16 files changed, 124 insertions(+), 52 deletions(-) diff --git a/config.json.example b/config.json.example index 8ebb092e1..d37a6b336 100644 --- a/config.json.example +++ b/config.json.example @@ -6,6 +6,7 @@ "fiat_display_currency": "USD", "ticker_interval": "5m", "dry_run": false, + "cancel_open_orders_on_exit": false, "trailing_stop": false, "unfilledtimeout": { "buy": 10, diff --git a/config_binance.json.example b/config_binance.json.example index d324ce883..5d7b6b656 100644 --- a/config_binance.json.example +++ b/config_binance.json.example @@ -6,6 +6,7 @@ "fiat_display_currency": "USD", "ticker_interval": "5m", "dry_run": true, + "cancel_open_orders_on_exit": false, "trailing_stop": false, "unfilledtimeout": { "buy": 10, diff --git a/config_full.json.example b/config_full.json.example index 181740b9a..79154b0d4 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -8,6 +8,7 @@ "amend_last_stake_amount": false, "last_stake_amount_min_ratio": 0.5, "dry_run": false, + "cancel_open_orders_on_exit": false, "ticker_interval": "5m", "trailing_stop": false, "trailing_stop_positive": 0.005, diff --git a/config_kraken.json.example b/config_kraken.json.example index dcf4c552a..54fbf4a00 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -6,6 +6,7 @@ "fiat_display_currency": "EUR", "ticker_interval": "5m", "dry_run": true, + "cancel_open_orders_on_exit": false, "trailing_stop": false, "unfilledtimeout": { "buy": 10, diff --git a/docs/configuration.md b/docs/configuration.md index 67e8578dd..28df5bd95 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -51,6 +51,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
          **Datatype:** String | `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
          *Defaults to `true`.*
          **Datatype:** Boolean | `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in the Dry Run mode.
          *Defaults to `1000`.*
          **Datatype:** Float +| `cancel_open_orders_on_exit` | Cancel orders when `/stop` is issued or `ctrl+c` is pressed. Including this will allow you to use `/stop` to cancel unfilled orders in the event of a market crash. This will not impact open positions.
          *Defaults to `False`.*
          **Datatype:** Boolean | `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
          *Defaults to `false`.*
          **Datatype:** Boolean | `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy).
          **Datatype:** Dict | `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
          **Datatype:** Float (as ratio) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 8c64c5857..be03bb906 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -13,7 +13,7 @@ ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir", "user_dat ARGS_STRATEGY = ["strategy", "strategy_path"] -ARGS_TRADE = ["db_url", "sd_notify", "dry_run"] +ARGS_TRADE = ["db_url", "sd_notify", "dry_run", "cancel_open_orders_on_exit"] ARGS_COMMON_OPTIMIZE = ["ticker_interval", "timerange", "max_open_trades", "stake_amount", "fee"] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 498ea9359..adb28399a 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -109,6 +109,11 @@ AVAILABLE_CLI_OPTIONS = { help='Enforce dry-run for trading (removes Exchange secrets and simulates trades).', action='store_true', ), + "cancel_open_orders_on_exit": Arg( + '--cancel-open-orders-on-exit', + help='Close unfilled open orders when the bot stops / exits', + action='store_true', + ), # Optimize common "ticker_interval": Arg( '-i', '--ticker-interval', diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index e5515670d..cfbba9987 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -134,6 +134,11 @@ class Configuration: if config['runmode'] not in TRADING_MODES: return + if self.args.get('cancel_open_orders_on_exit', False): + config.update({ + 'cancel_open_orders_on_exit': self.args.get('cancel_open_orders_on_exit') + }) + if config.get('dry_run', False): logger.info('Dry run is enabled') if config.get('db_url') in [None, constants.DEFAULT_DB_PROD_URL]: diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 54f620631..c238f227b 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -85,6 +85,7 @@ CONF_SCHEMA = { 'fiat_display_currency': {'type': 'string', 'enum': SUPPORTED_FIAT}, 'dry_run': {'type': 'boolean'}, 'dry_run_wallet': {'type': 'number', 'default': DRY_RUN_WALLET}, + 'cancel_open_orders_on_exit': {'type': 'boolean', 'default': False}, 'process_only_new_candles': {'type': 'boolean'}, 'minimal_roi': { 'type': 'object', @@ -318,3 +319,10 @@ SCHEMA_MINIMAL_REQUIRED = [ 'dataformat_ohlcv', 'dataformat_trades', ] + +CANCEL_REASON = { + "TIMEOUT": "cancelled due to timeout", + "PARTIALLY_FILLED": "partially filled - keeping order open", + "ALL_CANCELLED": "cancelled (all unfilled orders cancelled)", + "CANCELLED_ON_EXCHANGE": "cancelled on exchange", +} diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 7ae87e807..5b8d59ed2 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -113,6 +113,9 @@ class FreqtradeBot: """ logger.info('Cleaning up modules ...') + if self.config['cancel_open_orders_on_exit']: + self.cancel_all_open_orders() + self.rpc.cleanup() persistence.cleanup() @@ -162,6 +165,13 @@ class FreqtradeBot: Trade.session.flush() + def process_stopped(self) -> None: + """ + Close all trades that were left open + """ + if self.config['cancel_open_orders_on_exit']: + self.cancel_all_open_orders() + def _refresh_whitelist(self, trades: List[Trade] = []) -> List[str]: """ Refresh whitelist from pairlist or edge and extend it with trades. @@ -875,11 +885,7 @@ class FreqtradeBot: default_retval=False)(pair=trade.pair, trade=trade, order=order))): - - self.handle_timedout_limit_buy(trade, order) - self.wallets.update() - order_type = self.strategy.order_types['buy'] - self._notify_buy_cancel(trade, order_type) + self.handle_cancel_buy(trade, order, constants.CANCEL_REASON['TIMEOUT']) elif (order['side'] == 'sell' and ( trade_state_update @@ -888,24 +894,42 @@ class FreqtradeBot: default_retval=False)(pair=trade.pair, trade=trade, order=order))): - reason = self.handle_timedout_limit_sell(trade, order) - self.wallets.update() - order_type = self.strategy.order_types['sell'] - self._notify_sell_cancel(trade, order_type, reason) + self.handle_cancel_sell(trade, order, constants.CANCEL_REASON['TIMEOUT']) - def handle_timedout_limit_buy(self, trade: Trade, order: Dict) -> bool: + def cancel_all_open_orders(self) -> None: """ - Buy timeout - cancel order + Cancel all orders that are currently open + :return: None + """ + + for trade in Trade.get_open_order_trades(): + try: + order = self.exchange.get_order(trade.open_order_id, trade.pair) + except (DependencyException, InvalidOrderException): + logger.info('Cannot query order for %s due to %s', trade, traceback.format_exc()) + continue + + if order['side'] == 'buy': + self.handle_cancel_buy(trade, order, constants.CANCEL_REASON['ALL_CANCELLED']) + + elif order['side'] == 'sell': + self.handle_cancel_sell(trade, order, constants.CANCEL_REASON['ALL_CANCELLED']) + + def handle_cancel_buy(self, trade: Trade, order: Dict, reason: str) -> bool: + """ + Buy cancel - cancel order :return: True if order was fully cancelled """ + was_trade_fully_canceled = False + if order['status'] != 'canceled': - reason = "cancelled due to timeout" + reason = constants.CANCEL_REASON['TIMEOUT'] corder = self.exchange.cancel_order_with_result(trade.open_order_id, trade.pair, trade.amount) else: # Order was cancelled already, so we can reuse the existing dict corder = order - reason = "cancelled on exchange" + reason = constants.CANCEL_REASON['CANCELLED_ON_EXCHANGE'] logger.info('Buy order %s for %s.', reason, trade) @@ -914,40 +938,42 @@ class FreqtradeBot: # if trade is not partially completed, just delete the trade Trade.session.delete(trade) Trade.session.flush() - return True + was_trade_fully_canceled = True + else: + # if trade is partially complete, edit the stake details for the trade + # and close the order + # cancel_order may not contain the full order dict, so we need to fallback + # to the order dict aquired before cancelling. + # we need to fall back to the values from order if corder does not contain these keys. + trade.amount = order['amount'] - safe_value_fallback(corder, order, + 'remaining', 'remaining') + trade.stake_amount = trade.amount * trade.open_rate + self.update_trade_state(trade, corder, trade.amount) - # if trade is partially complete, edit the stake details for the trade - # and close the order - # cancel_order may not contain the full order dict, so we need to fallback - # to the order dict aquired before cancelling. - # we need to fall back to the values from order if corder does not contain these keys. - trade.amount = order['amount'] - safe_value_fallback(corder, order, - 'remaining', 'remaining') - trade.stake_amount = trade.amount * trade.open_rate - self.update_trade_state(trade, corder, trade.amount) + trade.open_order_id = None + logger.info('Partial buy order timeout for %s.', trade) + self.rpc.send_msg({ + 'type': RPCMessageType.STATUS_NOTIFICATION, + 'status': f'Remaining buy order for {trade.pair} cancelled due to timeout' + }) - trade.open_order_id = None - logger.info('Partial buy order timeout for %s.', trade) - self.rpc.send_msg({ - 'type': RPCMessageType.STATUS_NOTIFICATION, - 'status': f'Remaining buy order for {trade.pair} cancelled due to timeout' - }) - return False + self.wallets.update() + self._notify_buy_cancel(trade, order_type=self.strategy.order_types['buy']) + return was_trade_fully_canceled - def handle_timedout_limit_sell(self, trade: Trade, order: Dict) -> str: + def handle_cancel_sell(self, trade: Trade, order: Dict, reason: str) -> str: """ - Sell timeout - cancel order and update trade + Sell cancel - cancel order and update trade :return: Reason for cancel """ # if trade is not partially completed, just cancel the trade if order['remaining'] == order['amount'] or order.get('filled') == 0.0: if not self.exchange.check_order_canceled_empty(order): - reason = "cancelled due to timeout" # if trade is not partially completed, just delete the trade self.exchange.cancel_order(trade.open_order_id, trade.pair) logger.info('Sell order %s for %s.', reason, trade) else: - reason = "cancelled on exchange" + reason = constants.CANCEL_REASON['CANCELLED_ON_EXCHANGE'] logger.info('Sell order %s for %s.', reason, trade) trade.close_rate = None @@ -957,11 +983,17 @@ class FreqtradeBot: trade.close_date = None trade.is_open = True trade.open_order_id = None + else: + # TODO: figure out how to handle partially complete sell orders + reason = constants.CANCEL_REASON['PARTIALLY_FILLED'] - return reason - - # TODO: figure out how to handle partially complete sell orders - return 'partially filled - keeping order open' + self.wallets.update() + self._notify_sell_cancel( + trade, + order_type=self.strategy.order_types['sell'], + reason=reason + ) + return reason def _safe_sell_amount(self, pair: str, amount: float) -> float: """ diff --git a/freqtrade/templates/base_config.json.j2 b/freqtrade/templates/base_config.json.j2 index 134719273..6d3174347 100644 --- a/freqtrade/templates/base_config.json.j2 +++ b/freqtrade/templates/base_config.json.j2 @@ -6,6 +6,7 @@ "fiat_display_currency": "{{ fiat_display_currency }}", "ticker_interval": "{{ ticker_interval }}", "dry_run": {{ dry_run | lower }}, + "cancel_open_orders_on_exit": false, "unfilledtimeout": { "buy": 10, "sell": 30 diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 4c28ecaeb..55cf30d16 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -131,8 +131,7 @@ class Worker: return result def _process_stopped(self) -> None: - # Maybe do here something in the future... - pass + self.freqtrade.process_stopped() def _process_running(self) -> None: try: diff --git a/tests/conftest.py b/tests/conftest.py index d95475b8c..2f5f468f6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -249,6 +249,7 @@ def default_conf(testdatadir): "fiat_display_currency": "USD", "ticker_interval": '5m', "dry_run": True, + "cancel_open_orders_on_exit": False, "minimal_roi": { "40": 0.0, "30": 0.01, diff --git a/tests/test_arguments.py b/tests/test_arguments.py index 0052a61d0..91501384b 100644 --- a/tests/test_arguments.py +++ b/tests/test_arguments.py @@ -64,6 +64,14 @@ def test_parse_args_db_url() -> None: assert args["db_url"] == 'sqlite:///test.sqlite' +def test_parse_args_cancel_open_orders_on_exit() -> None: + args = Arguments(['trade']).get_parsed_arg() + assert args["cancel_open_orders_on_exit"] is False + + args = Arguments(['trade', '--cancel-open-orders-on-exit']).get_parsed_arg() + assert args["cancel_open_orders_on_exit"] is True + + def test_parse_args_verbose() -> None: args = Arguments(['trade', '-v']).get_parsed_arg() assert args["verbosity"] == 1 diff --git a/tests/test_configuration.py b/tests/test_configuration.py index c89f1381e..0315ffe1b 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -250,6 +250,7 @@ def test_load_config_with_params(default_conf, mocker) -> None: '--strategy', 'TestStrategy', '--strategy-path', '/some/path', '--db-url', 'sqlite:///someurl', + '--cancel-open-orders-on-exit', ] args = Arguments(arglist).get_parsed_arg() configuration = Configuration(args) @@ -258,6 +259,7 @@ def test_load_config_with_params(default_conf, mocker) -> None: assert validated_conf.get('strategy') == 'TestStrategy' assert validated_conf.get('strategy_path') == '/some/path' assert validated_conf.get('db_url') == 'sqlite:///someurl' + assert validated_conf.get('cancel_open_orders_on_exit') is True # Test conf provided db_url prod conf = default_conf.copy() diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 6f2ce9f3c..8adc834cf 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -11,7 +11,7 @@ import arrow import pytest import requests -from freqtrade.constants import MATH_CLOSE_PREC, UNLIMITED_STAKE_AMOUNT +from freqtrade.constants import MATH_CLOSE_PREC, UNLIMITED_STAKE_AMOUNT, CANCEL_REASON from freqtrade.exceptions import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.freqtradebot import FreqtradeBot @@ -2281,8 +2281,8 @@ def test_check_handle_timedout_exception(default_conf, ticker, open_trade, mocke mocker.patch.multiple( 'freqtrade.freqtradebot.FreqtradeBot', - handle_timedout_limit_buy=MagicMock(), - handle_timedout_limit_sell=MagicMock(), + handle_cancel_buy=MagicMock(), + handle_cancel_sell=MagicMock(), ) mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -2309,21 +2309,23 @@ def test_handle_timedout_limit_buy(mocker, caplog, default_conf, limit_buy_order mocker.patch('freqtrade.exchange.Exchange.cancel_order_with_result', cancel_order_mock) freqtrade = FreqtradeBot(default_conf) + freqtrade._notify_buy_cancel = MagicMock() Trade.session = MagicMock() trade = MagicMock() trade.pair = 'LTC/ETH' limit_buy_order['remaining'] = limit_buy_order['amount'] - assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) + reason = CANCEL_REASON['TIMEOUT'] + assert freqtrade.handle_cancel_buy(trade, limit_buy_order, reason) assert cancel_order_mock.call_count == 1 cancel_order_mock.reset_mock() limit_buy_order['amount'] = 2 - assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) + assert not freqtrade.handle_cancel_buy(trade, limit_buy_order, reason) assert cancel_order_mock.call_count == 1 mocker.patch('freqtrade.exchange.Exchange.cancel_order', side_effect=InvalidOrderException) - assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) + assert not freqtrade.handle_cancel_buy(trade, limit_buy_order, reason) @pytest.mark.parametrize('cancelorder', [ @@ -2343,17 +2345,19 @@ def test_handle_timedout_limit_buy_corder_empty(mocker, default_conf, limit_buy_ ) freqtrade = FreqtradeBot(default_conf) + freqtrade._notify_buy_cancel = MagicMock() Trade.session = MagicMock() trade = MagicMock() trade.pair = 'LTC/ETH' limit_buy_order['remaining'] = limit_buy_order['amount'] - assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) + reason = CANCEL_REASON['TIMEOUT'] + assert freqtrade.handle_cancel_buy(trade, limit_buy_order, reason) assert cancel_order_mock.call_count == 1 cancel_order_mock.reset_mock() limit_buy_order['amount'] = 2 - assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) + assert not freqtrade.handle_cancel_buy(trade, limit_buy_order, reason) assert cancel_order_mock.call_count == 1 @@ -2367,16 +2371,18 @@ def test_handle_timedout_limit_sell(mocker, default_conf) -> None: ) freqtrade = FreqtradeBot(default_conf) + freqtrade._notify_sell_cancel = MagicMock() trade = MagicMock() order = {'remaining': 1, 'amount': 1, 'status': "open"} - assert freqtrade.handle_timedout_limit_sell(trade, order) + reason = CANCEL_REASON['TIMEOUT'] + assert freqtrade.handle_cancel_sell(trade, order, reason) assert cancel_order_mock.call_count == 1 order['amount'] = 2 - assert (freqtrade.handle_timedout_limit_sell(trade, order) - == 'partially filled - keeping order open') + assert (freqtrade.handle_cancel_sell(trade, order, reason) + == CANCEL_REASON['PARTIALLY_FILLED']) # Assert cancel_order was not called (callcount remains unchanged) assert cancel_order_mock.call_count == 1 From 6b33d5af1e440253019a125551423f52fa26d7d3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 19:51:35 +0200 Subject: [PATCH 2227/3421] Fix fee-calculation for dry-run orders --- freqtrade/exchange/exchange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index ebadd4c8a..b7547cacb 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -494,7 +494,7 @@ class Exchange: 'remaining': 0, 'fee': { 'currency': self.get_pair_quote_currency(pair), - 'cost': dry_order['amount'] * self.get_fee(pair), + 'cost': dry_order['cost'] * self.get_fee(pair), 'rate': self.get_fee(pair) } }) From 6d620ba1f6946b5b79a95ec3cc1c3c63ec8f5a1f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 19:54:16 +0200 Subject: [PATCH 2228/3421] Verify if fee for this side has been updated --- freqtrade/freqtradebot.py | 2 +- freqtrade/persistence.py | 9 +++++++++ tests/test_persistence.py | 6 ++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 72531c9f9..a3dd29771 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1174,7 +1174,7 @@ class FreqtradeBot: if order_amount is None: order_amount = order['amount'] # Only run for closed orders - if trade.fee_open_currency is not None or order['status'] == 'open': + if trade.fee_updated(order['side']) or order['status'] == 'open': return order_amount trade_base_currency = self.exchange.get_pair_base_currency(trade.pair) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index fec095daa..a541dcbcc 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -394,6 +394,15 @@ class Trade(_DECL_BASE): if fee_rate is not None: self.fee_close = fee_rate + def fee_updated(self, side: str) -> bool: + """ + Verify if this side (buy / sell) has already been updated + """ + if side == 'buy': + return self.fee_open_currency is not None + elif side == 'sell': + return self.fee_close_currency is not None + def _calc_open_trade_price(self) -> float: """ Calculate the open_rate including open_fee. diff --git a/tests/test_persistence.py b/tests/test_persistence.py index fa6f84ce0..1a42d95fe 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -890,8 +890,12 @@ def test_update_fee(fee): fee_currency = 'BTC' fee_rate = 0.0075 assert trade.fee_open_currency is None + assert not trade.fee_updated('buy') + assert not trade.fee_updated('sell') trade.update_fee(fee_cost, fee_currency, fee_rate, 'buy') + assert trade.fee_updated('buy') + assert not trade.fee_updated('sell') assert trade.fee_open_currency == fee_currency assert trade.fee_open_cost == fee_cost assert trade.fee_open == fee_rate @@ -902,6 +906,8 @@ def test_update_fee(fee): fee_rate = 0.0076 trade.update_fee(fee_cost, fee_currency, fee_rate, 'sell') + assert trade.fee_updated('buy') + assert trade.fee_updated('sell') assert trade.fee_close == 0.0076 assert trade.fee_close_cost == fee_cost assert trade.fee_close == fee_rate From 71c90422ba5f4c34b8689864d35c92cee0c5e8d5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 20:02:38 +0200 Subject: [PATCH 2229/3421] Add explicit test for fee_updated --- freqtrade/persistence.py | 2 ++ tests/test_persistence.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index a541dcbcc..ea34fd5bf 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -402,6 +402,8 @@ class Trade(_DECL_BASE): return self.fee_open_currency is not None elif side == 'sell': return self.fee_close_currency is not None + else: + return False def _calc_open_trade_price(self) -> float: """ diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 1a42d95fe..5c7686e28 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -913,6 +913,36 @@ def test_update_fee(fee): assert trade.fee_close == fee_rate +def test_fee_updated(fee): + trade = Trade( + pair='ETH/BTC', + stake_amount=0.001, + fee_open=fee.return_value, + open_date=arrow.utcnow().shift(hours=-2).datetime, + amount=10, + fee_close=fee.return_value, + exchange='bittrex', + open_rate=1, + max_rate=1, + ) + + assert trade.fee_open_currency is None + assert not trade.fee_updated('buy') + assert not trade.fee_updated('sell') + assert not trade.fee_updated('asdf') + + trade.update_fee(0.15, 'BTC', 0.0075, 'buy') + assert trade.fee_updated('buy') + assert not trade.fee_updated('sell') + assert trade.fee_open_currency is not None + assert trade.fee_close_currency is None + + trade.update_fee(0.15, 'ABC', 0.0075, 'sell') + assert trade.fee_updated('buy') + assert trade.fee_updated('sell') + assert not trade.fee_updated('asfd') + + @pytest.mark.usefixtures("init_persistence") def test_total_open_trades_stakes(fee): From 737fc6d19837c816504c7dd910e9ec702fe1bc57 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 20:03:06 +0200 Subject: [PATCH 2230/3421] Fix bug when querying side --- freqtrade/freqtradebot.py | 9 +++++---- freqtrade/persistence.py | 2 +- tests/test_freqtradebot.py | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a3dd29771..d0a9a8348 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1174,19 +1174,20 @@ class FreqtradeBot: if order_amount is None: order_amount = order['amount'] # Only run for closed orders - if trade.fee_updated(order['side']) or order['status'] == 'open': + if trade.fee_updated(order.get('side')) or order['status'] == 'open': return order_amount trade_base_currency = self.exchange.get_pair_base_currency(trade.pair) # use fee from order-dict if possible if self.exchange.order_has_fee(order): fee_cost, fee_currency, fee_rate = self.exchange.extract_cost_curr_rate(order) - logger.info(f"Fee for Trade {trade}: {fee_cost:.8g} {fee_currency} - rate: {fee_rate}") + logger.info(f"Fee for Trade {trade} [{order.get('side')}]: " + f"{fee_cost:.8g} {fee_currency} - rate: {fee_rate}") if trade_base_currency == fee_currency: order_amount = order_amount - fee_cost logger.info(f"Applying fee on amount for {trade} (from {order['amount']} " f"to {order_amount}) from Order") - trade.update_fee(fee_cost, fee_currency, fee_rate, order['side']) + trade.update_fee(fee_cost, fee_currency, fee_rate, order.get('side')) return order_amount return self.fee_detection_from_trades(trade, order, order_amount) @@ -1221,7 +1222,7 @@ class FreqtradeBot: # fee_rate should use mean fee_rate = sum(fee_rate_array) / float(len(fee_rate_array)) if fee_rate_array else None - trade.update_fee(fee_cost, fee_currency, fee_rate, order['side']) + trade.update_fee(fee_cost, fee_currency, fee_rate, order.get('side')) if not isclose(amount, order_amount, abs_tol=constants.MATH_CLOSE_PREC): logger.warning(f"Amount {amount} does not match amount {trade.amount}") diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index ea34fd5bf..0f2c6bb52 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -394,7 +394,7 @@ class Trade(_DECL_BASE): if fee_rate is not None: self.fee_close = fee_rate - def fee_updated(self, side: str) -> bool: + def fee_updated(self, side) -> bool: """ Verify if this side (buy / sell) has already been updated """ diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 43ee4c79d..cf5d30a79 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3541,6 +3541,7 @@ def test_get_real_amount_open_trade(default_conf, fee, mocker): 'id': 'mocked_order', 'amount': amount, 'status': 'open', + 'side': 'buy', } freqtrade = get_patched_freqtradebot(mocker, default_conf) assert freqtrade.get_real_amount(trade, order) == amount From 021e2b58ca87babab4d18f574cdc0ca435e1639d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 20:17:22 +0200 Subject: [PATCH 2231/3421] Support partially cancelled orders for fee calculation --- freqtrade/exchange/exchange.py | 3 ++- freqtrade/freqtradebot.py | 2 -- freqtrade/persistence.py | 2 +- tests/conftest.py | 2 +- tests/test_freqtradebot.py | 5 +++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index b7547cacb..e649e5ed2 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1095,7 +1095,8 @@ class Exchange: # Calculate fee based on order details if fee_curr in self.get_pair_base_currency(order['symbol']): # Base currency - divide by amount - return round(order['fee']['cost'] / order['amount'], 8) + return round( + order['fee']['cost'] / safe_value_fallback(order, order, 'filled', 'amount'), 8) elif fee_curr in self.get_pair_quote_currency(order['symbol']): # Quote currency - divide by cost return round(order['fee']['cost'] / order['cost'], 8) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d0a9a8348..32adc6d57 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1144,8 +1144,6 @@ class FreqtradeBot: if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): order['amount'] = new_amount order.pop('filled', None) - # Fee was applied, so set to 0 - trade.fee_open = 0 trade.recalc_open_trade_price() except DependencyException as exception: logger.warning("Could not update trade amount: %s", exception) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 0f2c6bb52..17246633c 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -377,7 +377,7 @@ class Trade(_DECL_BASE): ) def update_fee(self, fee_cost: float, fee_currency: Optional[str], fee_rate: Optional[float], - side: str) -> None: + side) -> None: """ Update Fee parameters. Only acts once per side """ diff --git a/tests/conftest.py b/tests/conftest.py index 621f45407..10885d667 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -873,7 +873,7 @@ def limit_buy_order_old_partial(): def limit_buy_order_old_partial_canceled(limit_buy_order_old_partial): res = deepcopy(limit_buy_order_old_partial) res['status'] = 'canceled' - res['fee'] = {'cost': 0.0001, 'currency': 'ETH'} + res['fee'] = {'cost': 0.023, 'currency': 'ETH'} return res diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index cf5d30a79..19a094fab 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2229,9 +2229,10 @@ def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, cap assert len(trades) == 1 # Verify that trade has been updated assert trades[0].amount == (limit_buy_order_old_partial['amount'] - - limit_buy_order_old_partial['remaining']) - 0.0001 + limit_buy_order_old_partial['remaining']) - 0.023 assert trades[0].open_order_id is None - assert trades[0].fee_open == 0 + assert trades[0].fee_updated('buy') + assert pytest.approx(trades[0].fee_open) == 0.001 def test_check_handle_timedout_partial_except(default_conf, ticker, open_trade, caplog, fee, From 78b3d8487f8509c602818f1b241e524c5f24feac Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 1 May 2020 20:34:58 +0200 Subject: [PATCH 2232/3421] Add typehint --- freqtrade/freqtradebot.py | 6 +++--- freqtrade/persistence.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 32adc6d57..163c4faaa 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1172,7 +1172,7 @@ class FreqtradeBot: if order_amount is None: order_amount = order['amount'] # Only run for closed orders - if trade.fee_updated(order.get('side')) or order['status'] == 'open': + if trade.fee_updated(order.get('side', '')) or order['status'] == 'open': return order_amount trade_base_currency = self.exchange.get_pair_base_currency(trade.pair) @@ -1185,7 +1185,7 @@ class FreqtradeBot: order_amount = order_amount - fee_cost logger.info(f"Applying fee on amount for {trade} (from {order['amount']} " f"to {order_amount}) from Order") - trade.update_fee(fee_cost, fee_currency, fee_rate, order.get('side')) + trade.update_fee(fee_cost, fee_currency, fee_rate, order.get('side', '')) return order_amount return self.fee_detection_from_trades(trade, order, order_amount) @@ -1220,7 +1220,7 @@ class FreqtradeBot: # fee_rate should use mean fee_rate = sum(fee_rate_array) / float(len(fee_rate_array)) if fee_rate_array else None - trade.update_fee(fee_cost, fee_currency, fee_rate, order.get('side')) + trade.update_fee(fee_cost, fee_currency, fee_rate, order.get('side', '')) if not isclose(amount, order_amount, abs_tol=constants.MATH_CLOSE_PREC): logger.warning(f"Amount {amount} does not match amount {trade.amount}") diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 17246633c..ea34fd5bf 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -377,7 +377,7 @@ class Trade(_DECL_BASE): ) def update_fee(self, fee_cost: float, fee_currency: Optional[str], fee_rate: Optional[float], - side) -> None: + side: str) -> None: """ Update Fee parameters. Only acts once per side """ @@ -394,7 +394,7 @@ class Trade(_DECL_BASE): if fee_rate is not None: self.fee_close = fee_rate - def fee_updated(self, side) -> bool: + def fee_updated(self, side: str) -> bool: """ Verify if this side (buy / sell) has already been updated """ From 56bb5f7a111d4be4dc4c6bd59b5ab2dae9775c83 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 May 2020 11:26:12 +0200 Subject: [PATCH 2233/3421] Add show-trades command --- freqtrade/commands/__init__.py | 3 ++- freqtrade/commands/arguments.py | 15 +++++++++++++-- freqtrade/commands/cli_options.py | 7 ++++++- freqtrade/commands/list_commands.py | 22 ++++++++++++++++++++++ freqtrade/configuration/configuration.py | 4 ++++ 5 files changed, 47 insertions(+), 4 deletions(-) diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index f80c74e05..2d0c7733c 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -19,7 +19,8 @@ from freqtrade.commands.list_commands import (start_list_exchanges, start_list_hyperopts, start_list_markets, start_list_strategies, - start_list_timeframes) + start_list_timeframes, + start_show_trades) from freqtrade.commands.optimize_commands import (start_backtesting, start_edge, start_hyperopt) from freqtrade.commands.pairlist_commands import start_test_pairlist diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 8c64c5857..a03da00ab 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -64,6 +64,8 @@ ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", "trade_source", "ticker_interval"] +ARGS_SHOW_TRADES = ["db_url", "trade_ids", "print_json"] + ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_list_min_trades", "hyperopt_list_max_trades", "hyperopt_list_min_avg_time", "hyperopt_list_max_avg_time", @@ -78,7 +80,7 @@ ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperop NO_CONF_REQURIED = ["convert-data", "convert-trade-data", "download-data", "list-timeframes", "list-markets", "list-pairs", "list-strategies", "list-hyperopts", "hyperopt-list", "hyperopt-show", - "plot-dataframe", "plot-profit"] + "plot-dataframe", "plot-profit", "show-trades"] NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-hyperopt", "new-strategy"] @@ -163,7 +165,7 @@ class Arguments: start_list_markets, start_list_strategies, start_list_timeframes, start_new_config, start_new_hyperopt, start_new_strategy, - start_plot_dataframe, start_plot_profit, + start_plot_dataframe, start_plot_profit, start_show_trades, start_backtesting, start_hyperopt, start_edge, start_test_pairlist, start_trading) @@ -330,6 +332,15 @@ class Arguments: plot_profit_cmd.set_defaults(func=start_plot_profit) self._build_args(optionlist=ARGS_PLOT_PROFIT, parser=plot_profit_cmd) + # Add show-trades subcommand + show_trades = subparsers.add_parser( + 'show-trades', + help='Show trades.', + parents=[_common_parser], + ) + show_trades.set_defaults(func=start_show_trades) + self._build_args(optionlist=ARGS_SHOW_TRADES, parser=show_trades) + # Add hyperopt-list subcommand hyperopt_list_cmd = subparsers.add_parser( 'hyperopt-list', diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 498ea9359..4c51802f0 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -217,7 +217,7 @@ AVAILABLE_CLI_OPTIONS = { ), "print_json": Arg( '--print-json', - help='Print best result detailization in JSON format.', + help='Print output in JSON format.', action='store_true', default=False, ), @@ -425,6 +425,11 @@ AVAILABLE_CLI_OPTIONS = { choices=["DB", "file"], default="file", ), + "trade_ids": Arg( + '--tradeids', + help='Specify Trade ids to trade', + nargs='+', + ), # hyperopt-list, hyperopt-show "hyperopt_list_profitable": Arg( '--profitable', diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index 327901dc0..79e742618 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -197,3 +197,25 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: args.get('list_pairs_print_json', False) or args.get('print_csv', False)): print(f"{summary_str}.") + + +def start_show_trades(args: Dict[str, Any]) -> None: + """ + Show trades + """ + from freqtrade.persistence import init, Trade + import json + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + init(config['db_url'], clean_open_orders=False) + tfilter = [] + + if config.get('trade_ids'): + tfilter.append(Trade.id.in_(config['trade_ids'])) + + trades = Trade.get_trades(tfilter) + logger.info("Printing Trades: ") + if config.get('print_json', False): + print(json.dumps([trade.to_json() for trade in trades], indent=4)) + else: + for trade in trades: + print(trade) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index e5515670d..7edd9bca1 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -351,8 +351,12 @@ class Configuration: self._args_to_config(config, argname='indicators2', logstring='Using indicators2: {}') + self._args_to_config(config, argname='trade_ids', + logstring='Filtering on trade_ids: {}') + self._args_to_config(config, argname='plot_limit', logstring='Limiting plot to: {}') + self._args_to_config(config, argname='trade_source', logstring='Using trades from: {}') From 1066a4504b58c91b51c85f6f2be2512ad27feaa0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 May 2020 11:44:18 +0200 Subject: [PATCH 2234/3421] Add test for show_trades --- freqtrade/commands/list_commands.py | 4 +-- tests/commands/test_commands.py | 41 +++++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index 79e742618..61d6f7244 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -212,8 +212,8 @@ def start_show_trades(args: Dict[str, Any]) -> None: if config.get('trade_ids'): tfilter.append(Trade.id.in_(config['trade_ids'])) - trades = Trade.get_trades(tfilter) - logger.info("Printing Trades: ") + trades = Trade.get_trades(tfilter).all() + logger.info(f"Printing {len(trades)} Trades: ") if config.get('print_json', False): print(json.dumps([trade.to_json() for trade in trades], indent=4)) else: diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 264ae9a63..0465858c0 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -10,11 +10,13 @@ from freqtrade.commands import (start_convert_data, start_create_userdir, start_list_hyperopts, start_list_markets, start_list_strategies, start_list_timeframes, start_new_hyperopt, start_new_strategy, - start_test_pairlist, start_trading) + start_show_trades, start_test_pairlist, + start_trading) from freqtrade.configuration import setup_utils_configuration from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode -from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, +from tests.conftest import (create_mock_trades, get_args, log_has, log_has_re, + patch_exchange, patched_configuration_load_config_file) @@ -1040,3 +1042,38 @@ def test_convert_data_trades(mocker, testdatadir): assert trades_mock.call_args[1]['convert_from'] == 'jsongz' assert trades_mock.call_args[1]['convert_to'] == 'json' assert trades_mock.call_args[1]['erase'] is False + + +@pytest.mark.usefixtures("init_persistence") +def test_show_trades(mocker, fee, capsys, caplog): + mocker.patch("freqtrade.persistence.init") + create_mock_trades(fee) + args = [ + "show-trades", + "--db-url", + "sqlite:///" + ] + pargs = get_args(args) + pargs['config'] = None + start_show_trades(pargs) + assert log_has("Printing 3 Trades: ", caplog) + captured = capsys.readouterr() + assert "Trade(id=1" in captured.out + assert "Trade(id=2" in captured.out + assert "Trade(id=3" in captured.out + args = [ + "show-trades", + "--db-url", + "sqlite:///", + "--print-json", + "--tradeids", "1", "2" + ] + pargs = get_args(args) + pargs['config'] = None + start_show_trades(pargs) + + captured = capsys.readouterr() + assert log_has("Printing 2 Trades: ", caplog) + assert '"trade_id": 1' in captured.out + assert '"trade_id": 2' in captured.out + assert '"trade_id": 3' not in captured.out From 7dcef58f15ea7954135b284001bff0c196c8d574 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 2 May 2020 11:50:48 +0200 Subject: [PATCH 2235/3421] Add show-trades to documentation --- docs/utils.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/docs/utils.md b/docs/utils.md index 57210ac7e..12597220a 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -521,3 +521,48 @@ Prints JSON data with details for the last best epoch (i.e., the best of all epo ``` freqtrade hyperopt-show --best -n -1 --print-json --no-header ``` + +## Show trades + +Print selected (or all) trades from database to screen. + +``` +usage: freqtrade show-trades [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] [--db-url PATH] + [--tradeids TRADE_IDS [TRADE_IDS ...]] + [--print-json] + +optional arguments: + -h, --help show this help message and exit + --db-url PATH Override trades database URL, this is useful in custom + deployments (default: `sqlite:///tradesv3.sqlite` for + Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for + Dry Run). + --tradeids TRADE_IDS [TRADE_IDS ...] + Specify Trade ids to trade + --print-json Print output in JSON format. + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. +``` + +### Examples + +Print trades with id 2 and 3 as json + +``` bash +freqtrade show-trades --db-url sqlite:///tradesv3.sqlite --tradeids 2 3 --print-json +``` From 38c49493606e409aae7b6f8a081e06cca1414e51 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 3 May 2020 10:50:59 +0200 Subject: [PATCH 2236/3421] Align applying of fee when comming from orders or trades --- freqtrade/freqtradebot.py | 36 +++++++++++++++++++++++++++--------- tests/test_freqtradebot.py | 8 ++++---- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 163c4faaa..5ef4888e0 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1160,6 +1160,23 @@ class FreqtradeBot: return False + def apply_fee_conditional(self, trade: Trade, trade_base_currency: str, + amount: float, fee: float) -> float: + """ + Applies the fee to amount (either from Order or from Trades). + Can eat into dust if more than the required asset is available. + """ + if fee != 0 and self.wallets.get_free(trade_base_currency) >= amount: + # Eat into dust if we own more than base currency + logger.info(f"Fee amount for {trade} was in base currency - " + f"Eating Fee {fee} into dust.") + elif fee != 0: + real_amount = self.exchange.amount_to_precision(trade.pair, amount - fee) + logger.info(f"Applying fee on amount for {trade} " + f"(from {amount} to {real_amount}).") + return real_amount + return amount + def get_real_amount(self, trade: Trade, order: Dict, order_amount: float = None) -> float: """ Detect and update trade fee. @@ -1181,11 +1198,12 @@ class FreqtradeBot: fee_cost, fee_currency, fee_rate = self.exchange.extract_cost_curr_rate(order) logger.info(f"Fee for Trade {trade} [{order.get('side')}]: " f"{fee_cost:.8g} {fee_currency} - rate: {fee_rate}") - if trade_base_currency == fee_currency: - order_amount = order_amount - fee_cost - logger.info(f"Applying fee on amount for {trade} (from {order['amount']} " - f"to {order_amount}) from Order") + trade.update_fee(fee_cost, fee_currency, fee_rate, order.get('side', '')) + if trade_base_currency == fee_currency: + # Apply fee to amount + return self.apply_fee_conditional(trade, trade_base_currency, + amount=order_amount, fee=fee_cost) return order_amount return self.fee_detection_from_trades(trade, order, order_amount) @@ -1218,15 +1236,15 @@ class FreqtradeBot: # Ensure at least one trade was found: if fee_currency: # fee_rate should use mean - fee_rate = sum(fee_rate_array) / float(len(fee_rate_array)) if fee_rate_array else None trade.update_fee(fee_cost, fee_currency, fee_rate, order.get('side', '')) if not isclose(amount, order_amount, abs_tol=constants.MATH_CLOSE_PREC): logger.warning(f"Amount {amount} does not match amount {trade.amount}") raise DependencyException("Half bought? Amounts don't match") - real_amount = amount - fee_abs + if fee_abs != 0: - logger.info(f"Applying fee on amount for {trade} " - f"(from {order_amount} to {real_amount}) from Trades") - return real_amount + return self.apply_fee_conditional(trade, trade_base_currency, + amount=amount, fee=fee_abs) + else: + return amount diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 19a094fab..4a28147fc 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2221,7 +2221,7 @@ def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, cap # and apply fees if necessary. freqtrade.check_handle_timedout() - assert log_has_re(r"Applying fee on amount for Trade.* Order", caplog) + assert log_has_re(r"Applying fee on amount for Trade.*", caplog) assert cancel_order_mock.call_count == 1 assert rpc_mock.call_count == 2 @@ -3301,7 +3301,7 @@ def test_get_real_amount_quote(default_conf, trades_for_order, buy_order_fee, fe # Amount is reduced by "fee" assert freqtrade.get_real_amount(trade, buy_order_fee) == amount - (amount * 0.001) assert log_has('Applying fee on amount for Trade(id=None, pair=LTC/ETH, amount=8.00000000, ' - 'open_rate=0.24544100, open_since=closed) (from 8.0 to 7.992) from Trades', + 'open_rate=0.24544100, open_since=closed) (from 8.0 to 7.992).', caplog) @@ -3409,7 +3409,7 @@ def test_get_real_amount_multi(default_conf, trades_for_order2, buy_order_fee, c # Amount is reduced by "fee" assert freqtrade.get_real_amount(trade, buy_order_fee) == amount - (amount * 0.001) assert log_has('Applying fee on amount for Trade(id=None, pair=LTC/ETH, amount=8.00000000, ' - 'open_rate=0.24544100, open_since=closed) (from 8.0 to 7.992) from Trades', + 'open_rate=0.24544100, open_since=closed) (from 8.0 to 7.992).', caplog) @@ -3435,7 +3435,7 @@ def test_get_real_amount_fromorder(default_conf, trades_for_order, buy_order_fee # Amount is reduced by "fee" assert freqtrade.get_real_amount(trade, limit_buy_order) == amount - 0.004 assert log_has('Applying fee on amount for Trade(id=None, pair=LTC/ETH, amount=8.00000000, ' - 'open_rate=0.24544100, open_since=closed) (from 8.0 to 7.996) from Order', + 'open_rate=0.24544100, open_since=closed) (from 8.0 to 7.996).', caplog) From 58168336e1801ba061c5498c007380759756f89d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 3 May 2020 11:13:59 +0200 Subject: [PATCH 2237/3421] Add test for apply_fee_conditional --- freqtrade/freqtradebot.py | 15 ++++++++------- tests/test_freqtradebot.py | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5ef4888e0..1f9573122 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1161,17 +1161,18 @@ class FreqtradeBot: return False def apply_fee_conditional(self, trade: Trade, trade_base_currency: str, - amount: float, fee: float) -> float: + amount: float, fee_abs: float) -> float: """ Applies the fee to amount (either from Order or from Trades). Can eat into dust if more than the required asset is available. """ - if fee != 0 and self.wallets.get_free(trade_base_currency) >= amount: + self.wallets.update() + if fee_abs != 0 and self.wallets.get_free(trade_base_currency) >= amount: # Eat into dust if we own more than base currency logger.info(f"Fee amount for {trade} was in base currency - " - f"Eating Fee {fee} into dust.") - elif fee != 0: - real_amount = self.exchange.amount_to_precision(trade.pair, amount - fee) + f"Eating Fee {fee_abs} into dust.") + elif fee_abs != 0: + real_amount = self.exchange.amount_to_precision(trade.pair, amount - fee_abs) logger.info(f"Applying fee on amount for {trade} " f"(from {amount} to {real_amount}).") return real_amount @@ -1203,7 +1204,7 @@ class FreqtradeBot: if trade_base_currency == fee_currency: # Apply fee to amount return self.apply_fee_conditional(trade, trade_base_currency, - amount=order_amount, fee=fee_cost) + amount=order_amount, fee_abs=fee_cost) return order_amount return self.fee_detection_from_trades(trade, order, order_amount) @@ -1245,6 +1246,6 @@ class FreqtradeBot: if fee_abs != 0: return self.apply_fee_conditional(trade, trade_base_currency, - amount=amount, fee=fee_abs) + amount=amount, fee_abs=fee_abs) else: return amount diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 4a28147fc..e69c88a13 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3305,6 +3305,30 @@ def test_get_real_amount_quote(default_conf, trades_for_order, buy_order_fee, fe caplog) +def test_get_real_amount_quote_dust(default_conf, trades_for_order, buy_order_fee, fee, caplog, mocker): + mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) + walletmock = mocker.patch('freqtrade.wallets.Wallets.update') + mocker.patch('freqtrade.wallets.Wallets.get_free', return_value=8.1122) + amount = sum(x['amount'] for x in trades_for_order) + trade = Trade( + pair='LTC/ETH', + amount=amount, + exchange='binance', + open_rate=0.245441, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_order_id="123456" + ) + freqtrade = get_patched_freqtradebot(mocker, default_conf) + + walletmock.reset_mock() + # Amount is kept as is + assert freqtrade.get_real_amount(trade, buy_order_fee) == amount + assert walletmock.call_count == 1 + assert log_has_re(r'Fee amount for Trade.* was in base currency ' + '- Eating Fee 0.008 into dust', caplog) + + def test_get_real_amount_no_trade(default_conf, buy_order_fee, caplog, mocker, fee): mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=[]) From 72282a22396b59ee92c4e6a3c01dd365dafac9e3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 3 May 2020 11:28:29 +0200 Subject: [PATCH 2238/3421] Add explicit test for fee_conditional --- tests/test_freqtradebot.py | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index e69c88a13..2c97b9fe1 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3305,7 +3305,8 @@ def test_get_real_amount_quote(default_conf, trades_for_order, buy_order_fee, fe caplog) -def test_get_real_amount_quote_dust(default_conf, trades_for_order, buy_order_fee, fee, caplog, mocker): +def test_get_real_amount_quote_dust(default_conf, trades_for_order, buy_order_fee, fee, + caplog, mocker): mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) walletmock = mocker.patch('freqtrade.wallets.Wallets.update') mocker.patch('freqtrade.wallets.Wallets.get_free', return_value=8.1122) @@ -3326,7 +3327,7 @@ def test_get_real_amount_quote_dust(default_conf, trades_for_order, buy_order_fe assert freqtrade.get_real_amount(trade, buy_order_fee) == amount assert walletmock.call_count == 1 assert log_has_re(r'Fee amount for Trade.* was in base currency ' - '- Eating Fee 0.008 into dust', caplog) + '- Eating Fee 0.008 into dust', caplog) def test_get_real_amount_no_trade(default_conf, buy_order_fee, caplog, mocker, fee): @@ -3572,6 +3573,36 @@ def test_get_real_amount_open_trade(default_conf, fee, mocker): assert freqtrade.get_real_amount(trade, order) == amount +@pytest.mark.parametrize('amount,fee_abs,wallet,amount_exp', [ + (8.0, 0.0, 10, 8), + (8.0, 0.0, 0, 8), + (8.0, 0.1, 0, 7.9), + (8.0, 0.1, 10, 8), + (8.0, 0.1, 8.0, 8.0), + (8.0, 0.1, 7.9, 7.9), +]) +def test_apply_fee_conditional(default_conf, fee, caplog, mocker, + amount, fee_abs, wallet, amount_exp): + walletmock = mocker.patch('freqtrade.wallets.Wallets.update') + # mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.wallets.Wallets.get_free', return_value=wallet) + trade = Trade( + pair='LTC/ETH', + amount=amount, + exchange='binance', + open_rate=0.245441, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_order_id="123456" + ) + freqtrade = get_patched_freqtradebot(mocker, default_conf) + + walletmock.reset_mock() + # Amount is kept as is + assert freqtrade.apply_fee_conditional(trade, 'LTC', amount, fee_abs) == amount_exp + assert walletmock.call_count == 1 + + def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee, mocker, order_book_l2): default_conf['bid_strategy']['check_depth_of_market']['enabled'] = True From 81397874eb3a2002136f8ffdd544408fe8755c2b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 3 May 2020 11:29:51 +0200 Subject: [PATCH 2239/3421] Remove commented mock --- tests/test_freqtradebot.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 2c97b9fe1..11d9abb31 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3584,7 +3584,6 @@ def test_get_real_amount_open_trade(default_conf, fee, mocker): def test_apply_fee_conditional(default_conf, fee, caplog, mocker, amount, fee_abs, wallet, amount_exp): walletmock = mocker.patch('freqtrade.wallets.Wallets.update') - # mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) mocker.patch('freqtrade.wallets.Wallets.get_free', return_value=wallet) trade = Trade( pair='LTC/ETH', From e92d3867cfc54a95d3625c3c35c57a7538ec0111 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 3 May 2020 15:25:54 +0200 Subject: [PATCH 2240/3421] Fix failing test --- tests/test_freqtradebot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 11d9abb31..b426368c9 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2202,6 +2202,7 @@ def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, cap limit_buy_order_old_partial_canceled, mocker) -> None: rpc_mock = patch_RPCManager(mocker) cancel_order_mock = MagicMock(return_value=limit_buy_order_old_partial_canceled) + mocker.patch('freqtrade.wallets.Wallets.get_free', MagicMock(return_value=0)) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', From 1c9c72937e078265be0212fe79edca03b89881ee Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 3 May 2020 15:32:09 +0200 Subject: [PATCH 2241/3421] Adjust trade-ids param --- docs/utils.md | 8 ++++---- freqtrade/commands/cli_options.py | 4 ++-- tests/commands/test_commands.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/utils.md b/docs/utils.md index 12597220a..7ed31376f 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -529,7 +529,7 @@ Print selected (or all) trades from database to screen. ``` usage: freqtrade show-trades [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--db-url PATH] - [--tradeids TRADE_IDS [TRADE_IDS ...]] + [--trade-ids TRADE_IDS [TRADE_IDS ...]] [--print-json] optional arguments: @@ -538,8 +538,8 @@ optional arguments: deployments (default: `sqlite:///tradesv3.sqlite` for Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for Dry Run). - --tradeids TRADE_IDS [TRADE_IDS ...] - Specify Trade ids to trade + --trade-ids TRADE_IDS [TRADE_IDS ...] + Specify the list of trade ids. --print-json Print output in JSON format. Common arguments: @@ -564,5 +564,5 @@ Common arguments: Print trades with id 2 and 3 as json ``` bash -freqtrade show-trades --db-url sqlite:///tradesv3.sqlite --tradeids 2 3 --print-json +freqtrade show-trades --db-url sqlite:///tradesv3.sqlite --trade-ids 2 3 --print-json ``` diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 4c51802f0..a8f2ffdba 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -426,8 +426,8 @@ AVAILABLE_CLI_OPTIONS = { default="file", ), "trade_ids": Arg( - '--tradeids', - help='Specify Trade ids to trade', + '--trade-ids', + help='Specify the list of trade ids.', nargs='+', ), # hyperopt-list, hyperopt-show diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 0465858c0..2796a8b45 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -1066,7 +1066,7 @@ def test_show_trades(mocker, fee, capsys, caplog): "--db-url", "sqlite:///", "--print-json", - "--tradeids", "1", "2" + "--trade-ids", "1", "2" ] pargs = get_args(args) pargs['config'] = None From 690bb7646a35839ce434062800f1841dbd1adaf9 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Sun, 3 May 2020 16:54:42 +0200 Subject: [PATCH 2242/3421] hyperopt csv export - add params --- freqtrade/optimize/hyperopt.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 02695d1aa..29d48802c 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -387,12 +387,19 @@ class Hyperopt: trials = json_normalize(results, max_level=1) trials['Best'] = '' trials['Stake currency'] = config['stake_currency'] - trials = trials[['Best', 'current_epoch', 'results_metrics.trade_count', - 'results_metrics.avg_profit', 'results_metrics.total_profit', - 'Stake currency', 'results_metrics.profit', 'results_metrics.duration', - 'loss', 'is_initial_point', 'is_best']] - trials.columns = ['Best', 'Epoch', 'Trades', 'Avg profit', 'Total profit', 'Stake currency', - 'Profit', 'Avg duration', 'Objective', 'is_initial_point', 'is_best'] + + base_metrics = ['Best', 'current_epoch', 'results_metrics.trade_count', + 'results_metrics.avg_profit', 'results_metrics.total_profit', + 'Stake currency', 'results_metrics.profit', 'results_metrics.duration', + 'loss', 'is_initial_point', 'is_best'] + param_metrics = [("params_dict."+param) for param in results[0]['params_dict'].keys()] + trials = trials[base_metrics + param_metrics] + + base_metrics_columns = ['Best', 'Epoch', 'Trades', 'Avg profit', 'Total profit', 'Stake currency', + 'Profit', 'Avg duration', 'Objective', 'is_initial_point', 'is_best'] + param_metrics_columns = list(results[0]['params_dict'].keys()) + trials.columns = base_metrics_columns + param_metrics_columns + trials['is_profit'] = False trials.loc[trials['is_initial_point'], 'Best'] = '*' trials.loc[trials['is_best'], 'Best'] = 'Best' From 889a153731451fa180e845eeb8a8e0b3f481d35d Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Sun, 3 May 2020 17:29:56 +0200 Subject: [PATCH 2243/3421] fix PEP8 --- freqtrade/optimize/hyperopt.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 29d48802c..3a28de785 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -388,17 +388,17 @@ class Hyperopt: trials['Best'] = '' trials['Stake currency'] = config['stake_currency'] - base_metrics = ['Best', 'current_epoch', 'results_metrics.trade_count', - 'results_metrics.avg_profit', 'results_metrics.total_profit', - 'Stake currency', 'results_metrics.profit', 'results_metrics.duration', - 'loss', 'is_initial_point', 'is_best'] + base_metrics = ['Best', 'current_epoch', 'results_metrics.trade_count', + 'results_metrics.avg_profit', 'results_metrics.total_profit', + 'Stake currency', 'results_metrics.profit', 'results_metrics.duration', + 'loss', 'is_initial_point', 'is_best'] param_metrics = [("params_dict."+param) for param in results[0]['params_dict'].keys()] trials = trials[base_metrics + param_metrics] - base_metrics_columns = ['Best', 'Epoch', 'Trades', 'Avg profit', 'Total profit', 'Stake currency', - 'Profit', 'Avg duration', 'Objective', 'is_initial_point', 'is_best'] - param_metrics_columns = list(results[0]['params_dict'].keys()) - trials.columns = base_metrics_columns + param_metrics_columns + base_columns = ['Best', 'Epoch', 'Trades', 'Avg profit', 'Total profit', 'Stake currency', + 'Profit', 'Avg duration', 'Objective', 'is_initial_point', 'is_best'] + param_columns = list(results[0]['params_dict'].keys()) + trials.columns = base_columns + param_columns trials['is_profit'] = False trials.loc[trials['is_initial_point'], 'Best'] = '*' From 2a4c9bf3d38d48fcf5aa0a06692137fd3ec4fbfa Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 3 May 2020 20:32:45 +0200 Subject: [PATCH 2244/3421] Improve logmessage when falling back to wallet amount --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 7ae87e807..30eebb962 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -982,7 +982,7 @@ class FreqtradeBot: if wallet_amount >= amount: return amount elif wallet_amount > amount * 0.98: - logger.info(f"{pair} - Falling back to wallet-amount.") + logger.info(f"{pair} - Falling back to wallet-amount {wallet_amount} -> {amount}.") return wallet_amount else: raise DependencyException( From b38f9ed5e7967e116a36ff088f1ade46e61a1abd Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 3 May 2020 20:44:18 +0200 Subject: [PATCH 2245/3421] Increase cache for rate limit to avoid delays Helps when calling /status or /status table frequently on slowish exchanges --- freqtrade/freqtradebot.py | 7 +++++-- tests/conftest.py | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 7ae87e807..32fbde562 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -54,8 +54,11 @@ class FreqtradeBot: # Init objects self.config = config - self._sell_rate_cache = TTLCache(maxsize=100, ttl=5) - self._buy_rate_cache = TTLCache(maxsize=100, ttl=5) + _process_throttle_secs = self.config['internals'].get('process_throttle_secs', + constants.PROCESS_THROTTLE_SECS) + # Use 3x process_throttle_secs for caching to avoid delays in RPC methods. + self._sell_rate_cache = TTLCache(maxsize=100, ttl=_process_throttle_secs * 3) + self._buy_rate_cache = TTLCache(maxsize=100, ttl=_process_throttle_secs * 3) self.strategy: IStrategy = StrategyResolver.load_strategy(self.config) diff --git a/tests/conftest.py b/tests/conftest.py index d95475b8c..5c2e3e8e9 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -304,7 +304,8 @@ def default_conf(testdatadir): "user_data_dir": Path("user_data"), "verbosity": 3, "strategy_path": str(Path(__file__).parent / "strategy" / "strats"), - "strategy": "DefaultStrategy" + "strategy": "DefaultStrategy", + "internals": {}, } return configuration From f7a3bb82da64fff55db045c0e3c5b9cfcfa91a61 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 4 May 2020 09:16:28 +0000 Subject: [PATCH 2246/3421] Bump numpy from 1.18.3 to 1.18.4 Bumps [numpy](https://github.com/numpy/numpy) from 1.18.3 to 1.18.4. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.18.3...v1.18.4) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 967f8df10..18cab206b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Load common requirements -r requirements-common.txt -numpy==1.18.3 +numpy==1.18.4 pandas==1.0.3 From a14e027ad4a7449025b615b6861c79f56c287488 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 4 May 2020 09:16:50 +0000 Subject: [PATCH 2247/3421] Bump arrow from 0.15.5 to 0.15.6 Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.15.5 to 0.15.6. - [Release notes](https://github.com/crsmithdev/arrow/releases) - [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.rst) - [Commits](https://github.com/crsmithdev/arrow/compare/0.15.5...0.15.6) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index a53fc3999..9de50f800 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -3,7 +3,7 @@ ccxt==1.27.1 SQLAlchemy==1.3.16 python-telegram-bot==12.6.1 -arrow==0.15.5 +arrow==0.15.6 cachetools==4.1.0 requests==2.23.0 urllib3==1.25.9 From 68f0b105a989213f5a42b75ecdfad67bbb651b48 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 4 May 2020 09:17:23 +0000 Subject: [PATCH 2248/3421] Bump pytest-asyncio from 0.11.0 to 0.12.0 Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.11.0 to 0.12.0. - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases) - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.11.0...v0.12.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 508716bde..9881df083 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -9,7 +9,7 @@ flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.770 pytest==5.4.1 -pytest-asyncio==0.11.0 +pytest-asyncio==0.12.0 pytest-cov==2.8.1 pytest-mock==3.1.0 pytest-random-order==1.0.4 From 2c352e6b82a55367fb313eae69fa7ebe531d74bd Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 4 May 2020 09:18:02 +0000 Subject: [PATCH 2249/3421] Bump progressbar2 from 3.51.0 to 3.51.3 Bumps [progressbar2](https://github.com/WoLpH/python-progressbar) from 3.51.0 to 3.51.3. - [Release notes](https://github.com/WoLpH/python-progressbar/releases) - [Changelog](https://github.com/WoLpH/python-progressbar/blob/develop/CHANGES.rst) - [Commits](https://github.com/WoLpH/python-progressbar/compare/v3.51.0...v3.51.3) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index b0e18867d..9afd07357 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -7,4 +7,4 @@ scikit-learn==0.22.2.post1 scikit-optimize==0.7.4 filelock==3.0.12 joblib==0.14.1 -progressbar2==3.51.0 +progressbar2==3.51.3 From 611b9c88d1019a21c41d142a4bb2cd0d38152b49 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 4 May 2020 09:18:49 +0000 Subject: [PATCH 2250/3421] Bump ccxt from 1.27.1 to 1.27.20 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.27.1 to 1.27.20. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.27.1...1.27.20) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index a53fc3999..b910db9b3 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.27.1 +ccxt==1.27.20 SQLAlchemy==1.3.16 python-telegram-bot==12.6.1 arrow==0.15.5 From 32eb1c570524ebc2bbf3c2656f102b32ec5d46b7 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 4 May 2020 09:19:26 +0000 Subject: [PATCH 2251/3421] Bump mkdocs-material from 5.1.3 to 5.1.5 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.1.3 to 5.1.5. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.1.3...5.1.5) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 1c0e280ae..e9553a8e4 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.1.3 +mkdocs-material==5.1.5 mdx_truly_sane_lists==1.2 From 5dde6d3fac65a1502c85cf8dc67ad918f52236f0 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 4 May 2020 12:40:24 +0000 Subject: [PATCH 2252/3421] Bump python-telegram-bot from 12.6.1 to 12.7 Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.6.1 to 12.7. - [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases) - [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst) - [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.6.1...v12.7) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index d9808a19f..cd302e348 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -2,7 +2,7 @@ # mainly used for Raspberry pi installs ccxt==1.27.20 SQLAlchemy==1.3.16 -python-telegram-bot==12.6.1 +python-telegram-bot==12.7 arrow==0.15.6 cachetools==4.1.0 requests==2.23.0 From 648723fb8325fe3e3c4fb1a371ed360b1b0d6e32 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 May 2020 06:32:03 +0200 Subject: [PATCH 2253/3421] Use 30min rate cache --- freqtrade/freqtradebot.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 32fbde562..86c8e03b7 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -54,11 +54,11 @@ class FreqtradeBot: # Init objects self.config = config - _process_throttle_secs = self.config['internals'].get('process_throttle_secs', - constants.PROCESS_THROTTLE_SECS) - # Use 3x process_throttle_secs for caching to avoid delays in RPC methods. - self._sell_rate_cache = TTLCache(maxsize=100, ttl=_process_throttle_secs * 3) - self._buy_rate_cache = TTLCache(maxsize=100, ttl=_process_throttle_secs * 3) + # Cache values for 1800 to avoid frequent polling of the exchange for prices + # Caching only applies to RPC methods, so prices for open trades are still + # refreshed once every iteration. + self._sell_rate_cache = TTLCache(maxsize=100, ttl=1800) + self._buy_rate_cache = TTLCache(maxsize=100, ttl=1800) self.strategy: IStrategy = StrategyResolver.load_strategy(self.config) From f040c2068850641bea7c04ff2b991dbaf728dfbb Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 May 2020 06:41:01 +0200 Subject: [PATCH 2254/3421] Use filled in tests --- tests/test_freqtradebot.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 6f2ce9f3c..a098709a6 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2348,11 +2348,12 @@ def test_handle_timedout_limit_buy_corder_empty(mocker, default_conf, limit_buy_ trade = MagicMock() trade.pair = 'LTC/ETH' limit_buy_order['remaining'] = limit_buy_order['amount'] + limit_buy_order['filled'] = 0.0 assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 cancel_order_mock.reset_mock() - limit_buy_order['amount'] = 2 + limit_buy_order['filled'] = 1.0 assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 From b4aeb93a183d53d456ce81bdd5f28b941b88aebe Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 May 2020 07:07:42 +0200 Subject: [PATCH 2255/3421] Add test testing the different ways exchanges may return data --- tests/conftest.py | 93 ++++++++++++++++++++++++++++++++++++++ tests/test_freqtradebot.py | 25 +++++++++- 2 files changed, 116 insertions(+), 2 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index d95475b8c..29bb36f64 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -877,6 +877,99 @@ def limit_buy_order_old_partial_canceled(limit_buy_order_old_partial): return res +@pytest.fixture(scope='function') +def limit_buy_order_canceled_empty(request): + # Indirect fixture + # Documentation: + # https://docs.pytest.org/en/latest/example/parametrize.html#apply-indirect-on-particular-arguments + + exchange_name = request.param + if exchange_name == 'ftx': + return { + 'info': {}, + 'id': '1234512345', + 'clientOrderId': None, + 'timestamp': arrow.utcnow().shift(minutes=-601).timestamp, + 'datetime': arrow.utcnow().shift(minutes=-601).isoformat(), + 'lastTradeTimestamp': None, + 'symbol': 'LTC/USDT', + 'type': 'limit', + 'side': 'buy', + 'price': 34.3225, + 'amount': 0.55, + 'cost': 0.0, + 'average': None, + 'filled': 0.0, + 'remaining': 0.0, + 'status': 'closed', + 'fee': None, + 'trades': None + } + elif exchange_name == 'kraken': + return { + 'info': {}, + 'id': 'AZNPFF-4AC4N-7MKTAT', + 'clientOrderId': None, + 'timestamp': arrow.utcnow().shift(minutes=-601).timestamp, + 'datetime': arrow.utcnow().shift(minutes=-601).isoformat(), + 'lastTradeTimestamp': None, + 'status': 'canceled', + 'symbol': 'LTC/USDT', + 'type': 'limit', + 'side': 'buy', + 'price': 34.3225, + 'cost': 0.0, + 'amount': 0.55, + 'filled': 0.0, + 'average': 0.0, + 'remaining': 0.55, + 'fee': {'cost': 0.0, 'rate': None, 'currency': 'USDT'}, + 'trades': [] + } + elif exchange_name == 'binance': + return { + 'info': {}, + 'id': '1234512345', + 'clientOrderId': 'alb1234123', + 'timestamp': arrow.utcnow().shift(minutes=-601).timestamp, + 'datetime': arrow.utcnow().shift(minutes=-601).isoformat(), + 'lastTradeTimestamp': None, + 'symbol': 'LTC/USDT', + 'type': 'limit', + 'side': 'buy', + 'price': 0.016804, + 'amount': 0.55, + 'cost': 0.0, + 'average': None, + 'filled': 0.0, + 'remaining': 0.55, + 'status': 'canceled', + 'fee': None, + 'trades': None + } + else: + return { + 'info': {}, + 'id': '1234512345', + 'clientOrderId': 'alb1234123', + 'timestamp': arrow.utcnow().shift(minutes=-601).timestamp, + 'datetime': arrow.utcnow().shift(minutes=-601).isoformat(), + 'lastTradeTimestamp': None, + 'symbol': 'LTC/USDT', + 'type': 'limit', + 'side': 'buy', + 'price': 0.016804, + 'amount': 0.55, + 'cost': 0.0, + 'average': None, + 'filled': 0.0, + 'remaining': 0.55, + 'status': 'canceled', + 'fee': None, + 'trades': None + } + + @pytest.fixture def limit_sell_order(): return { diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index a098709a6..2b5127cc0 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2313,12 +2313,12 @@ def test_handle_timedout_limit_buy(mocker, caplog, default_conf, limit_buy_order Trade.session = MagicMock() trade = MagicMock() trade.pair = 'LTC/ETH' - limit_buy_order['remaining'] = limit_buy_order['amount'] + limit_buy_order['filled'] = 0 assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 cancel_order_mock.reset_mock() - limit_buy_order['amount'] = 2 + limit_buy_order['filled'] = 2 assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 @@ -2326,6 +2326,27 @@ def test_handle_timedout_limit_buy(mocker, caplog, default_conf, limit_buy_order assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) +@pytest.mark.parametrize("limit_buy_order_canceled_empty", ['binance', 'ftx', 'kraken', 'bittrex'], + indirect=['limit_buy_order_canceled_empty']) +def test_handle_timedout_limit_buy_exchanges(mocker, caplog, default_conf, + limit_buy_order_canceled_empty) -> None: + patch_RPCManager(mocker) + patch_exchange(mocker) + cancel_order_mock = mocker.patch( + 'freqtrade.exchange.Exchange.cancel_order_with_result', + return_value=limit_buy_order_canceled_empty) + + freqtrade = FreqtradeBot(default_conf) + + Trade.session = MagicMock() + trade = MagicMock() + trade.pair = 'LTC/ETH' + assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order_canceled_empty) + assert cancel_order_mock.call_count == 0 + assert log_has_re(r'Buy order fully cancelled. Removing .* from database\.', caplog) + + + @pytest.mark.parametrize('cancelorder', [ {}, {'remaining': None}, From 981976681a88423117ef9bd6fe18e56f96df4476 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 May 2020 07:08:24 +0200 Subject: [PATCH 2256/3421] Use filled, it's the safer choice when determining the filled amount. --- freqtrade/freqtradebot.py | 7 +++---- tests/test_freqtradebot.py | 1 - 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 30eebb962..9db7e4467 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -898,7 +898,7 @@ class FreqtradeBot: Buy timeout - cancel order :return: True if order was fully cancelled """ - if order['status'] != 'canceled': + if order['status'] not in ('canceled', 'closed'): reason = "cancelled due to timeout" corder = self.exchange.cancel_order_with_result(trade.open_order_id, trade.pair, trade.amount) @@ -909,7 +909,7 @@ class FreqtradeBot: logger.info('Buy order %s for %s.', reason, trade) - if safe_value_fallback(corder, order, 'remaining', 'remaining') == order['amount']: + if safe_value_fallback(corder, order, 'filled', 'filled') == 0.0: logger.info('Buy order fully cancelled. Removing %s from database.', trade) # if trade is not partially completed, just delete the trade Trade.session.delete(trade) @@ -921,8 +921,7 @@ class FreqtradeBot: # cancel_order may not contain the full order dict, so we need to fallback # to the order dict aquired before cancelling. # we need to fall back to the values from order if corder does not contain these keys. - trade.amount = order['amount'] - safe_value_fallback(corder, order, - 'remaining', 'remaining') + trade.amount = safe_value_fallback(corder, order, 'filled', 'filled') trade.stake_amount = trade.amount * trade.open_rate self.update_trade_state(trade, corder, trade.amount) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 2b5127cc0..f2b2f6b5c 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2346,7 +2346,6 @@ def test_handle_timedout_limit_buy_exchanges(mocker, caplog, default_conf, assert log_has_re(r'Buy order fully cancelled. Removing .* from database\.', caplog) - @pytest.mark.parametrize('cancelorder', [ {}, {'remaining': None}, From d3a0ab8096bcd119ca3fd57c4880a8648783ee4d Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 May 2020 07:12:49 +0200 Subject: [PATCH 2257/3421] Change mock-status to be open when testing unfilled... --- tests/test_freqtradebot.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index f2b2f6b5c..7a30e9015 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2314,6 +2314,7 @@ def test_handle_timedout_limit_buy(mocker, caplog, default_conf, limit_buy_order trade = MagicMock() trade.pair = 'LTC/ETH' limit_buy_order['filled'] = 0 + limit_buy_order['status'] = 'open' assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 @@ -2367,8 +2368,9 @@ def test_handle_timedout_limit_buy_corder_empty(mocker, default_conf, limit_buy_ Trade.session = MagicMock() trade = MagicMock() trade.pair = 'LTC/ETH' - limit_buy_order['remaining'] = limit_buy_order['amount'] limit_buy_order['filled'] = 0.0 + limit_buy_order['status'] = 'open' + assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 From ffef4bc4744b03ac35e625924c034c0b7dacb51f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 May 2020 19:48:28 +0200 Subject: [PATCH 2258/3421] Humanize show-trades error when no database is specified --- freqtrade/commands/list_commands.py | 5 +++++ tests/commands/test_commands.py | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index 61d6f7244..e5131f9b2 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -206,6 +206,11 @@ def start_show_trades(args: Dict[str, Any]) -> None: from freqtrade.persistence import init, Trade import json config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + + if 'db_url' not in config: + raise OperationalException("--db-url is required for this command.") + + logger.info(f'Using DB: "{config["db_url"]}"') init(config['db_url'], clean_open_orders=False) tfilter = [] diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 2796a8b45..93b123069 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -1077,3 +1077,11 @@ def test_show_trades(mocker, fee, capsys, caplog): assert '"trade_id": 1' in captured.out assert '"trade_id": 2' in captured.out assert '"trade_id": 3' not in captured.out + args = [ + "show-trades", + ] + pargs = get_args(args) + pargs['config'] = None + + with pytest.raises(OperationalException, match=r"--db-url is required for this command."): + start_show_trades(pargs) From e4023a6567cdf50b40c1aee1427c5ceaadcff38b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 May 2020 21:19:35 +0200 Subject: [PATCH 2259/3421] Add some minor things to show_config --- freqtrade/rpc/rpc.py | 2 ++ freqtrade/state.py | 3 +++ tests/rpc/test_rpc_apiserver.py | 1 + 3 files changed, 6 insertions(+) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 8645e466e..10eeb572f 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -94,6 +94,7 @@ class RPC: 'dry_run': config['dry_run'], 'stake_currency': config['stake_currency'], 'stake_amount': config['stake_amount'], + 'max_open_trades': config['max_open_trades'], 'minimal_roi': config['minimal_roi'].copy(), 'stoploss': config['stoploss'], 'trailing_stop': config['trailing_stop'], @@ -103,6 +104,7 @@ class RPC: 'ticker_interval': config['ticker_interval'], 'exchange': config['exchange']['name'], 'strategy': config['strategy'], + 'state': str(self._freqtrade.state) } return val diff --git a/freqtrade/state.py b/freqtrade/state.py index 415f6f5f2..38784c6a4 100644 --- a/freqtrade/state.py +++ b/freqtrade/state.py @@ -14,6 +14,9 @@ class State(Enum): STOPPED = 2 RELOAD_CONF = 3 + def __str__(self): + return f"{self.name.lower()}" + class RunMode(Enum): """ diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 6548790cb..9b2f893e3 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -283,6 +283,7 @@ def test_api_show_config(botclient, mocker): assert 'dry_run' in rc.json assert rc.json['exchange'] == 'bittrex' assert rc.json['ticker_interval'] == '5m' + assert rc.json['state'] == 'running' assert not rc.json['trailing_stop'] From 593d13ebddde143b438f59eb7ff84991c903e2cf Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 May 2020 21:21:05 +0200 Subject: [PATCH 2260/3421] Show new values also in Telegram --- freqtrade/rpc/telegram.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index a21f7556c..38888313e 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -621,10 +621,12 @@ class Telegram(RPC): f"*Mode:* `{'Dry-run' if val['dry_run'] else 'Live'}`\n" f"*Exchange:* `{val['exchange']}`\n" f"*Stake per trade:* `{val['stake_amount']} {val['stake_currency']}`\n" + f"*Max open Trades:* `{val['max_open_trades']}`\n" f"*Minimum ROI:* `{val['minimal_roi']}`\n" f"{sl_info}" f"*Ticker Interval:* `{val['ticker_interval']}`\n" - f"*Strategy:* `{val['strategy']}`" + f"*Strategy:* `{val['strategy']}\n`" + f"*Current state:* `{val['state']}`" ) def _send_msg(self, msg: str, parse_mode: ParseMode = ParseMode.MARKDOWN) -> None: From a62d7495ca443d3c17997604106d62c4debf2300 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 5 May 2020 21:28:59 +0200 Subject: [PATCH 2261/3421] FIx typo in telegram method --- freqtrade/rpc/telegram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 38888313e..66d8ad936 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -625,7 +625,7 @@ class Telegram(RPC): f"*Minimum ROI:* `{val['minimal_roi']}`\n" f"{sl_info}" f"*Ticker Interval:* `{val['ticker_interval']}`\n" - f"*Strategy:* `{val['strategy']}\n`" + f"*Strategy:* `{val['strategy']}`\n" f"*Current state:* `{val['state']}`" ) From 1ba2df79c6a770958bddb3bf1e1fee6bd8c41f0f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 7 May 2020 06:51:02 +0200 Subject: [PATCH 2262/3421] Ause isclose for comparison, assign filled to variable add some comments --- freqtrade/freqtradebot.py | 8 ++++++-- tests/test_freqtradebot.py | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 9db7e4467..57eb7d1a8 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -898,6 +898,7 @@ class FreqtradeBot: Buy timeout - cancel order :return: True if order was fully cancelled """ + # Cancelled orders may have the status of 'canceled' or 'closed' if order['status'] not in ('canceled', 'closed'): reason = "cancelled due to timeout" corder = self.exchange.cancel_order_with_result(trade.open_order_id, trade.pair, @@ -909,7 +910,10 @@ class FreqtradeBot: logger.info('Buy order %s for %s.', reason, trade) - if safe_value_fallback(corder, order, 'filled', 'filled') == 0.0: + # Using filled to determine the filled amount + filled_amount = safe_value_fallback(corder, order, 'filled', 'filled') + + if isclose(filled_amount, 0.0, abs_tol=constants.MATH_CLOSE_PREC): logger.info('Buy order fully cancelled. Removing %s from database.', trade) # if trade is not partially completed, just delete the trade Trade.session.delete(trade) @@ -921,7 +925,7 @@ class FreqtradeBot: # cancel_order may not contain the full order dict, so we need to fallback # to the order dict aquired before cancelling. # we need to fall back to the values from order if corder does not contain these keys. - trade.amount = safe_value_fallback(corder, order, 'filled', 'filled') + trade.amount = filled_amount trade.stake_amount = trade.amount * trade.open_rate self.update_trade_state(trade, corder, trade.amount) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 7a30e9015..c502e264c 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2313,7 +2313,7 @@ def test_handle_timedout_limit_buy(mocker, caplog, default_conf, limit_buy_order Trade.session = MagicMock() trade = MagicMock() trade.pair = 'LTC/ETH' - limit_buy_order['filled'] = 0 + limit_buy_order['filled'] = 0.0 limit_buy_order['status'] = 'open' assert freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 @@ -2323,6 +2323,7 @@ def test_handle_timedout_limit_buy(mocker, caplog, default_conf, limit_buy_order assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) assert cancel_order_mock.call_count == 1 + limit_buy_order['filled'] = 2 mocker.patch('freqtrade.exchange.Exchange.cancel_order', side_effect=InvalidOrderException) assert not freqtrade.handle_timedout_limit_buy(trade, limit_buy_order) From c560de41113c749de0b4f3ab6d7a0c155150486e Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 8 May 2020 11:44:24 +0200 Subject: [PATCH 2263/3421] Improve exception handling on critical errors --- freqtrade/commands/trade_commands.py | 3 +++ tests/commands/test_commands.py | 11 +++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/freqtrade/commands/trade_commands.py b/freqtrade/commands/trade_commands.py index 352fac26d..c058e4f9d 100644 --- a/freqtrade/commands/trade_commands.py +++ b/freqtrade/commands/trade_commands.py @@ -18,6 +18,9 @@ def start_trading(args: Dict[str, Any]) -> int: try: worker = Worker(args) worker.run() + except Exception as e: + logger.error(str(e)) + logger.exception("Fatal exception!") except KeyboardInterrupt: logger.info('SIGINT received, aborting ...') finally: diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 93b123069..46350beff 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -32,7 +32,7 @@ def test_setup_utils_configuration(): assert config['exchange']['secret'] == '' -def test_start_trading_fail(mocker): +def test_start_trading_fail(mocker, caplog): mocker.patch("freqtrade.worker.Worker.run", MagicMock(side_effect=OperationalException)) @@ -43,16 +43,15 @@ def test_start_trading_fail(mocker): 'trade', '-c', 'config.json.example' ] - with pytest.raises(OperationalException): - start_trading(get_args(args)) + start_trading(get_args(args)) assert exitmock.call_count == 1 exitmock.reset_mock() - + caplog.clear() mocker.patch("freqtrade.worker.Worker.__init__", MagicMock(side_effect=OperationalException)) - with pytest.raises(OperationalException): - start_trading(get_args(args)) + start_trading(get_args(args)) assert exitmock.call_count == 0 + assert log_has('Fatal exception!', caplog) def test_list_exchanges(capsys): From 5272ec85eab94d2d0fb801050429a766e6011058 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 8 May 2020 12:34:24 +0200 Subject: [PATCH 2264/3421] Add additional test --- tests/test_main.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/test_main.py b/tests/test_main.py index 70b784002..a7180a5d2 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -115,6 +115,28 @@ def test_main_operational_exception(mocker, default_conf, caplog) -> None: assert log_has('Oh snap!', caplog) +def test_main_operational_exception1(mocker, default_conf, caplog) -> None: + patch_exchange(mocker) + mocker.patch( + 'freqtrade.commands.list_commands.available_exchanges', + MagicMock(side_effect=ValueError('Oh snap!')) + ) + patched_configuration_load_config_file(mocker, default_conf) + + args = ['list-exchanges'] + + # Test Main + the KeyboardInterrupt exception + with pytest.raises(SystemExit): + main(args) + + assert log_has('Fatal exception!', caplog) + assert not log_has_re(r'SIGINT.*', caplog) + mocker.patch( + 'freqtrade.commands.list_commands.available_exchanges', + MagicMock(side_effect=KeyboardInterrupt) + ) + + def test_main_reload_conf(mocker, default_conf, caplog) -> None: patch_exchange(mocker) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.cleanup', MagicMock()) From 80d367fa0871d5ec16bba77312581cf6115a08f0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 8 May 2020 14:24:30 +0200 Subject: [PATCH 2265/3421] Add test for keyboardinterrupt --- tests/test_main.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/test_main.py b/tests/test_main.py index a7180a5d2..11d0ede3a 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -135,6 +135,10 @@ def test_main_operational_exception1(mocker, default_conf, caplog) -> None: 'freqtrade.commands.list_commands.available_exchanges', MagicMock(side_effect=KeyboardInterrupt) ) + with pytest.raises(SystemExit): + main(args) + + assert log_has_re(r'SIGINT.*', caplog) def test_main_reload_conf(mocker, default_conf, caplog) -> None: From 2307495f2837971f6325efa97afea7d874ae8c1d Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 8 May 2020 20:10:16 +0300 Subject: [PATCH 2266/3421] Update docs/configuration.md Co-authored-by: Matthias --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 28df5bd95..59d8ba1eb 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -51,7 +51,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
          **Datatype:** String | `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
          *Defaults to `true`.*
          **Datatype:** Boolean | `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in the Dry Run mode.
          *Defaults to `1000`.*
          **Datatype:** Float -| `cancel_open_orders_on_exit` | Cancel orders when `/stop` is issued or `ctrl+c` is pressed. Including this will allow you to use `/stop` to cancel unfilled orders in the event of a market crash. This will not impact open positions.
          *Defaults to `False`.*
          **Datatype:** Boolean +| `cancel_open_orders_on_exit` | Cancel orders when `/stop` is issued or `ctrl+c` is pressed. This will allow you to use `/stop` to cancel unfilled orders in the event of a market crash. This will not impact open positions.
          *Defaults to `False`.*
          **Datatype:** Boolean | `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
          *Defaults to `false`.*
          **Datatype:** Boolean | `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy).
          **Datatype:** Dict | `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
          **Datatype:** Float (as ratio) From d4362ed357a41408460b5339219ae4e7e24a2a4c Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 9 May 2020 09:29:40 +0300 Subject: [PATCH 2267/3421] Minor: improve exception handling in exchange --- freqtrade/exchange/exchange.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 1a0565959..ce973f373 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1041,9 +1041,9 @@ class Exchange: return matched_trades - except ccxt.NetworkError as e: + except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( - f'Could not get trades due to networking error. Message: {e}') from e + f'Could not get trades due to {e.__class__.__name__}. Message: {e}') from e except ccxt.BaseError as e: raise OperationalException(e) from e From b72997fc2bbb1d685a27605026bf3fa269973ca5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 9 May 2020 20:16:04 +0200 Subject: [PATCH 2268/3421] Add flask-jwt-extended dependency --- requirements-common.txt | 1 + setup.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index cd302e348..9fb4e209b 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -25,6 +25,7 @@ sdnotify==0.3.2 # Api server flask==1.1.2 +flask-jwt-extended==3.24.1 # Support for colorized terminal output colorama==0.4.3 diff --git a/setup.py b/setup.py index 9c253ea4e..8c0de095e 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ if readme_file.is_file(): readme_long = (Path(__file__).parent / "README.md").read_text() # Requirements used for submodules -api = ['flask'] +api = ['flask', 'flask-jwt-extended'] plot = ['plotly>=4.0'] hyperopt = [ 'scipy', From 7e08fa2631d1553bbfedf113817f6309b771a7bb Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 10 May 2020 02:22:16 +0300 Subject: [PATCH 2269/3421] Fix usage of fee value in Edge --- freqtrade/edge/edge_positioning.py | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index 5305e23cf..bae7a0743 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -238,20 +238,13 @@ class Edge: :param result Dataframe :return: result Dataframe """ - - # stake and fees - # stake = 0.015 - # 0.05% is 0.0005 - # fee = 0.001 - - # we set stake amount to an arbitrary amount. - # as it doesn't change the calculation. - # all returned values are relative. - # they are defined as ratios. + # We set stake amount to an arbitrary amount, as it doesn't change the calculation. + # All returned values are relative, they are defined as ratios. stake = 0.015 - fee = self.fee - open_fee = fee / 2 - close_fee = fee / 2 + + # Fee should be applied twice + open_fee = self.fee + close_fee = self.fee result['trade_duration'] = result['close_time'] - result['open_time'] From b6a2c3894133426ae25dd68adfbdf86f148bb92c Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 10 May 2020 02:22:49 +0300 Subject: [PATCH 2270/3421] Adjust tests --- tests/edge/test_edge.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index 2304c53c2..163ceff4b 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -335,12 +335,16 @@ def test_edge_init_error(mocker, edge_conf,): get_patched_freqtradebot(mocker, edge_conf) -def test_process_expectancy(mocker, edge_conf): +@pytest.mark.parametrize("fee,risk_reward_ratio,expectancy", [ + (0.0005, 306.5384615384, 101.5128205128), + (0.001, 152.6923076923, 50.2307692308), +]) +def test_process_expectancy(mocker, edge_conf, fee, risk_reward_ratio, expectancy): edge_conf['edge']['min_trade_number'] = 2 freqtrade = get_patched_freqtradebot(mocker, edge_conf) def get_fee(*args, **kwargs): - return 0.001 + return fee freqtrade.exchange.get_fee = get_fee edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) @@ -394,9 +398,9 @@ def test_process_expectancy(mocker, edge_conf): assert 'TEST/BTC' in final assert final['TEST/BTC'].stoploss == -0.9 assert round(final['TEST/BTC'].winrate, 10) == 0.3333333333 - assert round(final['TEST/BTC'].risk_reward_ratio, 10) == 306.5384615384 + assert round(final['TEST/BTC'].risk_reward_ratio, 10) == risk_reward_ratio assert round(final['TEST/BTC'].required_risk_reward, 10) == 2.0 - assert round(final['TEST/BTC'].expectancy, 10) == 101.5128205128 + assert round(final['TEST/BTC'].expectancy, 10) == expectancy # Pop last item so no trade is profitable trades.pop() From 0bd2fca40b648d6bef54388616832fce82528a59 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 09:55:41 +0200 Subject: [PATCH 2271/3421] Update tests/test_integration.py Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- tests/test_integration.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_integration.py b/tests/test_integration.py index ee6ef3cb2..90cdde61f 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -97,7 +97,7 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, # Only order for 3rd trade needs to be cancelled assert cancel_order_mock.call_count == 1 # Wallets must be updated between stoploss cancellation and selling, and will be updated again - # During update_trade_state + # during update_trade_state assert wallets_mock.call_count == 3 trade = trades[0] From 8139058fcc5c471e762f182f1608fbff3c6bbed9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 10:35:38 +0200 Subject: [PATCH 2272/3421] Implement token/login and token/refresh endpoints --- freqtrade/rpc/api_server.py | 56 +++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 0335bb151..1e20bf8f8 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -2,11 +2,16 @@ import logging import threading from datetime import date, datetime from ipaddress import IPv4Address -from typing import Dict, Callable, Any +from typing import Any, Callable, Dict from arrow import Arrow from flask import Flask, jsonify, request from flask.json import JSONEncoder +from flask_jwt_extended import (JWTManager, create_access_token, + create_refresh_token, get_jwt_identity, + jwt_refresh_token_required, + verify_jwt_in_request_optional) +from werkzeug.security import safe_str_cmp from werkzeug.serving import make_server from freqtrade.__init__ import __version__ @@ -38,9 +43,10 @@ class ArrowJSONEncoder(JSONEncoder): def require_login(func: Callable[[Any, Any], Any]): def func_wrapper(obj, *args, **kwargs): - + verify_jwt_in_request_optional() auth = request.authorization - if auth and obj.check_auth(auth.username, auth.password): + i = get_jwt_identity() + if i or auth and obj.check_auth(auth.username, auth.password): return func(obj, *args, **kwargs) else: return jsonify({"error": "Unauthorized"}), 401 @@ -70,8 +76,8 @@ class ApiServer(RPC): """ def check_auth(self, username, password): - return (username == self._config['api_server'].get('username') and - password == self._config['api_server'].get('password')) + return (safe_str_cmp(username, self._config['api_server'].get('username')) and + safe_str_cmp(password, self._config['api_server'].get('password'))) def __init__(self, freqtrade) -> None: """ @@ -83,6 +89,11 @@ class ApiServer(RPC): self._config = freqtrade.config self.app = Flask(__name__) + + # Setup the Flask-JWT-Extended extension + self.app.config['JWT_SECRET_KEY'] = 'super-secret' # Change this! + + self.jwt = JWTManager(self.app) self.app.json_encoder = ArrowJSONEncoder # Register application handling @@ -148,6 +159,10 @@ class ApiServer(RPC): self.app.register_error_handler(404, self.page_not_found) # Actions to control the bot + self.app.add_url_rule(f'{BASE_URI}/token/login', 'login', + view_func=self._login, methods=['POST']) + self.app.add_url_rule(f'{BASE_URI}/token/refresh', 'token_refresh', + view_func=self._refresh_token, methods=['POST']) self.app.add_url_rule(f'{BASE_URI}/start', 'start', view_func=self._start, methods=['POST']) self.app.add_url_rule(f'{BASE_URI}/stop', 'stop', view_func=self._stop, methods=['POST']) @@ -199,6 +214,37 @@ class ApiServer(RPC): 'code': 404 }), 404 + @require_login + @rpc_catch_errors + def _login(self): + """ + Handler for /token/login + Returns a JWT token + """ + auth = request.authorization + if auth and self.check_auth(auth.username, auth.password): + keystuff = {'u': auth.username} + ret = { + 'access_token': create_access_token(identity=keystuff), + 'refresh_token': create_refresh_token(identity=keystuff), + } + return self.rest_dump(ret) + + return jsonify({"error": "Unauthorized"}), 401 + + @jwt_refresh_token_required + @rpc_catch_errors + def _refresh_token(self): + """ + Handler for /token/refresh + Returns a JWT token based on a JWT refresh token + """ + current_user = get_jwt_identity() + new_token = create_access_token(identity=current_user, fresh=False) + + ret = {'access_token': new_token} + return self.rest_dump(ret) + @require_login @rpc_catch_errors def _start(self): From bc64619f301fb870b91fe4682e255b975f1cd5f7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 10:43:13 +0200 Subject: [PATCH 2273/3421] Tests for JWT implementation --- tests/rpc/test_rpc_apiserver.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 9b2f893e3..0d4cdeb2f 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -94,6 +94,33 @@ def test_api_unauthorized(botclient): assert rc.json == {'error': 'Unauthorized'} +def test_api_token_login(botclient): + ftbot, client = botclient + rc = client_post(client, f"{BASE_URI}/token/login") + assert_response(rc) + assert 'access_token' in rc.json + assert 'refresh_token' in rc.json + + # test Authentication is working with JWT tokens too + rc = client.get(f"{BASE_URI}/count", + content_type="application/json", + headers={'Authorization': f'Bearer {rc.json["access_token"]}'}) + assert_response(rc) + + +def test_api_token_refresh(botclient): + ftbot, client = botclient + rc = client_post(client, f"{BASE_URI}/token/login") + assert_response(rc) + rc = client.post(f"{BASE_URI}/token/refresh", + content_type="application/json", + data=None, + headers={'Authorization': f'Bearer {rc.json["refresh_token"]}'}) + assert_response(rc) + assert 'access_token' in rc.json + assert 'refresh_token' not in rc.json + + def test_api_stop_workflow(botclient): ftbot, client = botclient assert ftbot.state == State.RUNNING From 51d2b817ae50773f743d8ba00c060acf8d897e11 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 10 May 2020 11:51:33 +0300 Subject: [PATCH 2274/3421] Use self.fee --- freqtrade/edge/edge_positioning.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index bae7a0743..c19d4552a 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -242,10 +242,6 @@ class Edge: # All returned values are relative, they are defined as ratios. stake = 0.015 - # Fee should be applied twice - open_fee = self.fee - close_fee = self.fee - result['trade_duration'] = result['close_time'] - result['open_time'] result['trade_duration'] = result['trade_duration'].map( @@ -255,12 +251,12 @@ class Edge: # Buy Price result['buy_vol'] = stake / result['open_rate'] # How many target are we buying - result['buy_fee'] = stake * open_fee + result['buy_fee'] = stake * self.fee result['buy_spend'] = stake + result['buy_fee'] # How much we're spending # Sell price result['sell_sum'] = result['buy_vol'] * result['close_rate'] - result['sell_fee'] = result['sell_sum'] * close_fee + result['sell_fee'] = result['sell_sum'] * self.fee result['sell_take'] = result['sell_sum'] - result['sell_fee'] # profit_ratio From 570c51b0b03fbaf3419cccfe08bdf8013a5f756f Mon Sep 17 00:00:00 2001 From: Mohamad Tarbin Date: Sun, 10 May 2020 05:07:49 -0400 Subject: [PATCH 2275/3421] Fix Typo in telegram Plugin --- freqtrade/rpc/telegram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 66d8ad936..856b8f138 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -579,7 +579,7 @@ class Telegram(RPC): "*/whitelist:* `Show current whitelist` \n" \ "*/blacklist [pair]:* `Show current blacklist, or adds one or more pairs " \ "to the blacklist.` \n" \ - "*/edge:* `Shows validated pairs by Edge if it is enabeld` \n" \ + "*/edge:* `Shows validated pairs by Edge if it is enabled` \n" \ "*/help:* `This help message`\n" \ "*/version:* `Show version`" From d9e4f41a359647bb50f1cc7e00571c7758aba40f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 16:14:35 +0200 Subject: [PATCH 2276/3421] Add documentation for JWt --- docs/rest-api.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/rest-api.md b/docs/rest-api.md index b68364f39..d750f74af 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -202,3 +202,28 @@ whitelist Show the current whitelist :returns: json object ``` + +## Advanced API usage using JWT tokens + +!!! Note + The below should be done in an application, and is not intended to be used on a regular basis. + +Freqtrade's REST API also offers JWT tokens. +You can login using the following command, and subsequently use the resulting access_token. + +``` bash +> curl -X POST --user Freqtrader http://localhost:8080/api/v1/token/login +{"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODkxMTk2ODEsIm5iZiI6MTU4OTExOTY4MSwianRpIjoiMmEwYmY0NWUtMjhmOS00YTUzLTlmNzItMmM5ZWVlYThkNzc2IiwiZXhwIjoxNTg5MTIwNTgxLCJpZGVudGl0eSI6eyJ1IjoiRnJlcXRyYWRlciJ9LCJmcmVzaCI6ZmFsc2UsInR5cGUiOiJhY2Nlc3MifQ.qt6MAXYIa-l556OM7arBvYJ0SDI9J8bIk3_glDujF5g","refresh_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODkxMTk2ODEsIm5iZiI6MTU4OTExOTY4MSwianRpIjoiZWQ1ZWI3YjAtYjMwMy00YzAyLTg2N2MtNWViMjIxNWQ2YTMxIiwiZXhwIjoxNTkxNzExNjgxLCJpZGVudGl0eSI6eyJ1IjoiRnJlcXRyYWRlciJ9LCJ0eXBlIjoicmVmcmVzaCJ9.d1AT_jYICyTAjD0fiQAr52rkRqtxCjUGEMwlNuuzgNQ"} + +> access_token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODkxMTk2ODEsIm5iZiI6MTU4OTExOTY4MSwianRpIjoiMmEwYmY0NWUtMjhmOS00YTUzLTlmNzItMmM5ZWVlYThkNzc2IiwiZXhwIjoxNTg5MTIwNTgxLCJpZGVudGl0eSI6eyJ1IjoiRnJlcXRyYWRlciJ9LCJmcmVzaCI6ZmFsc2UsInR5cGUiOiJhY2Nlc3MifQ.qt6MAXYIa-l556OM7arBvYJ0SDI9J8bIk3_glDujF5g" +# Use tccess_token for authentication +> curl -X GET --header "Authorization: Bearer ${access_token}" http://localhost:8080/api/v1/count + +``` + +Since the access-token has a short timeout (15 min) - the refresh-token should be used to get a fresh access token: + +``` bash +> curl -X POST --header "Authorization: Bearer ${refresh_token}"http://localhost:8080/api/v1/token/refresh +{"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODkxMTk5NzQsIm5iZiI6MTU4OTExOTk3NCwianRpIjoiMDBjNTlhMWUtMjBmYS00ZTk0LTliZjAtNWQwNTg2MTdiZDIyIiwiZXhwIjoxNTg5MTIwODc0LCJpZGVudGl0eSI6eyJ1IjoiRnJlcXRyYWRlciJ9LCJmcmVzaCI6ZmFsc2UsInR5cGUiOiJhY2Nlc3MifQ.1seHlII3WprjjclY6DpRhen0rqdF4j6jbvxIhUFaSbs"} +``` From 80faa5feb14913ad6c17307b893aead1272b9040 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 16:24:00 +0200 Subject: [PATCH 2277/3421] Add test to cancel sell order --- tests/test_freqtradebot.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index c502e264c..01e74c7a2 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2405,6 +2405,21 @@ def test_handle_timedout_limit_sell(mocker, default_conf) -> None: assert cancel_order_mock.call_count == 1 +def test_handle_timedout_limit_sell_cancel_exception(mocker, default_conf) -> None: + patch_RPCManager(mocker) + patch_exchange(mocker) + mocker.patch( + 'freqtrade.exchange.Exchange.cancel_order', side_effect=InvalidOrderException()) + + freqtrade = FreqtradeBot(default_conf) + + trade = MagicMock() + order = {'remaining': 1, + 'amount': 1, + 'status': "open"} + assert freqtrade.handle_timedout_limit_sell(trade, order) == 'error cancelling order' + + def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, mocker) -> None: rpc_mock = patch_RPCManager(mocker) patch_exchange(mocker) From 2406e20be2a8af33c33ca06eeb01a3e77cef5f88 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 17:36:43 +0200 Subject: [PATCH 2278/3421] Update docs/rest-api.md Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/rest-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index d750f74af..599ad870f 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -206,7 +206,7 @@ whitelist ## Advanced API usage using JWT tokens !!! Note - The below should be done in an application, and is not intended to be used on a regular basis. + The below should be done in an application (a Freqtrade REST API client, which fetches info via API), and is not intended to be used on a regular basis. Freqtrade's REST API also offers JWT tokens. You can login using the following command, and subsequently use the resulting access_token. From 73a1496318d1b9e594a098f5e8bc25d62137fc3b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 17:44:45 +0200 Subject: [PATCH 2279/3421] Catch exception on cancel_order --- freqtrade/freqtradebot.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 930baff1f..4f4b3e3bb 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -949,8 +949,12 @@ class FreqtradeBot: if order['remaining'] == order['amount'] or order.get('filled') == 0.0: if not self.exchange.check_order_canceled_empty(order): reason = "cancelled due to timeout" - # if trade is not partially completed, just delete the trade - self.exchange.cancel_order(trade.open_order_id, trade.pair) + try: + # if trade is not partially completed, just delete the trade + self.exchange.cancel_order(trade.open_order_id, trade.pair) + except InvalidOrderException: + logger.exception(f"Could not cancel sell order {trade.open_order_id}") + return 'error cancelling order' logger.info('Sell order %s for %s.', reason, trade) else: reason = "cancelled on exchange" From c2224ed6b7496d043853f84c9d5e1762372c102c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 17:47:43 +0200 Subject: [PATCH 2280/3421] Fix doc typos Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/rest-api.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index 599ad870f..42671f0c3 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -208,7 +208,7 @@ whitelist !!! Note The below should be done in an application (a Freqtrade REST API client, which fetches info via API), and is not intended to be used on a regular basis. -Freqtrade's REST API also offers JWT tokens. +Freqtrade's REST API also offers JWT (JSON Web Tokens). You can login using the following command, and subsequently use the resulting access_token. ``` bash @@ -216,7 +216,7 @@ You can login using the following command, and subsequently use the resulting ac {"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODkxMTk2ODEsIm5iZiI6MTU4OTExOTY4MSwianRpIjoiMmEwYmY0NWUtMjhmOS00YTUzLTlmNzItMmM5ZWVlYThkNzc2IiwiZXhwIjoxNTg5MTIwNTgxLCJpZGVudGl0eSI6eyJ1IjoiRnJlcXRyYWRlciJ9LCJmcmVzaCI6ZmFsc2UsInR5cGUiOiJhY2Nlc3MifQ.qt6MAXYIa-l556OM7arBvYJ0SDI9J8bIk3_glDujF5g","refresh_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODkxMTk2ODEsIm5iZiI6MTU4OTExOTY4MSwianRpIjoiZWQ1ZWI3YjAtYjMwMy00YzAyLTg2N2MtNWViMjIxNWQ2YTMxIiwiZXhwIjoxNTkxNzExNjgxLCJpZGVudGl0eSI6eyJ1IjoiRnJlcXRyYWRlciJ9LCJ0eXBlIjoicmVmcmVzaCJ9.d1AT_jYICyTAjD0fiQAr52rkRqtxCjUGEMwlNuuzgNQ"} > access_token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODkxMTk2ODEsIm5iZiI6MTU4OTExOTY4MSwianRpIjoiMmEwYmY0NWUtMjhmOS00YTUzLTlmNzItMmM5ZWVlYThkNzc2IiwiZXhwIjoxNTg5MTIwNTgxLCJpZGVudGl0eSI6eyJ1IjoiRnJlcXRyYWRlciJ9LCJmcmVzaCI6ZmFsc2UsInR5cGUiOiJhY2Nlc3MifQ.qt6MAXYIa-l556OM7arBvYJ0SDI9J8bIk3_glDujF5g" -# Use tccess_token for authentication +# Use access_token for authentication > curl -X GET --header "Authorization: Bearer ${access_token}" http://localhost:8080/api/v1/count ``` From b163bb76503041798ecf2898f0eabc53771a9052 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 17:48:29 +0200 Subject: [PATCH 2281/3421] Apply suggestions from code review Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/rest-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index 42671f0c3..337a00b4f 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -221,7 +221,7 @@ You can login using the following command, and subsequently use the resulting ac ``` -Since the access-token has a short timeout (15 min) - the refresh-token should be used to get a fresh access token: +Since the access token has a short timeout (15 min) - the `token/refresh` request should be used periodically to get a fresh access token: ``` bash > curl -X POST --header "Authorization: Bearer ${refresh_token}"http://localhost:8080/api/v1/token/refresh From c3f0b5d4eb89d0f71bfca021e89625395457c01d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 19:37:41 +0200 Subject: [PATCH 2282/3421] Rename methods to match endpoints --- freqtrade/rpc/api_server.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 1e20bf8f8..3a46d2c88 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -160,9 +160,9 @@ class ApiServer(RPC): # Actions to control the bot self.app.add_url_rule(f'{BASE_URI}/token/login', 'login', - view_func=self._login, methods=['POST']) + view_func=self._token_login, methods=['POST']) self.app.add_url_rule(f'{BASE_URI}/token/refresh', 'token_refresh', - view_func=self._refresh_token, methods=['POST']) + view_func=self._token_refresh, methods=['POST']) self.app.add_url_rule(f'{BASE_URI}/start', 'start', view_func=self._start, methods=['POST']) self.app.add_url_rule(f'{BASE_URI}/stop', 'stop', view_func=self._stop, methods=['POST']) @@ -216,7 +216,7 @@ class ApiServer(RPC): @require_login @rpc_catch_errors - def _login(self): + def _token_login(self): """ Handler for /token/login Returns a JWT token @@ -234,7 +234,7 @@ class ApiServer(RPC): @jwt_refresh_token_required @rpc_catch_errors - def _refresh_token(self): + def _token_refresh(self): """ Handler for /token/refresh Returns a JWT token based on a JWT refresh token From 21c2af2b92208c8ee811a91fba7046f99d556db6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 19:42:06 +0200 Subject: [PATCH 2283/3421] Load jwt_key from config --- config_full.json.example | 1 + docs/rest-api.md | 6 +++++- freqtrade/rpc/api_server.py | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index 181740b9a..ee1c14d27 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -120,6 +120,7 @@ "enabled": false, "listen_ip_address": "127.0.0.1", "listen_port": 8080, + "jwt_secret_key": "somethingrandom", "username": "freqtrader", "password": "SuperSecurePassword" }, diff --git a/docs/rest-api.md b/docs/rest-api.md index 337a00b4f..7f1a95b12 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -11,6 +11,7 @@ Sample configuration: "enabled": true, "listen_ip_address": "127.0.0.1", "listen_port": 8080, + "jwt_secret_key": "somethingrandom", "username": "Freqtrader", "password": "SuperSecret1!" }, @@ -29,7 +30,7 @@ This should return the response: {"status":"pong"} ``` -All other endpoints return sensitive info and require authentication, so are not available through a web browser. +All other endpoints return sensitive info and require authentication and are therefore not available through a web browser. To generate a secure password, either use a password manager, or use the below code snipped. @@ -38,6 +39,9 @@ import secrets secrets.token_hex() ``` +!!! Hint + Use the same method to also generate a JWT secret key (`jwt_secret_key`). + ### Configuration with docker If you run your bot using docker, you'll need to have the bot listen to incomming connections. The security is then handled by docker. diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 3a46d2c88..21f28f601 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -91,7 +91,8 @@ class ApiServer(RPC): self.app = Flask(__name__) # Setup the Flask-JWT-Extended extension - self.app.config['JWT_SECRET_KEY'] = 'super-secret' # Change this! + self.app.config['JWT_SECRET_KEY'] = self._config['api_server'].get( + 'jwt_secret_key', 'super-secret') self.jwt = JWTManager(self.app) self.app.json_encoder = ArrowJSONEncoder From d291ca0071b2e73dc0750bedced1257c37d73032 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 19:43:16 +0200 Subject: [PATCH 2284/3421] Simplify code section --- freqtrade/rpc/api_server.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 21f28f601..68f4b1ca9 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -45,8 +45,7 @@ def require_login(func: Callable[[Any, Any], Any]): def func_wrapper(obj, *args, **kwargs): verify_jwt_in_request_optional() auth = request.authorization - i = get_jwt_identity() - if i or auth and obj.check_auth(auth.username, auth.password): + if get_jwt_identity() or auth and obj.check_auth(auth.username, auth.password): return func(obj, *args, **kwargs) else: return jsonify({"error": "Unauthorized"}), 401 From 9eca268a498ed129299dd9910f01f5bf1ea81363 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 10 May 2020 20:00:19 +0200 Subject: [PATCH 2285/3421] Fix test --- tests/rpc/test_rpc_apiserver.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 0d4cdeb2f..5d8f79920 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -150,6 +150,12 @@ def test_api__init__(default_conf, mocker): """ Test __init__() method """ + default_conf.update({"api_server": {"enabled": True, + "listen_ip_address": "127.0.0.1", + "listen_port": 8080, + "username": "TestUser", + "password": "testPass", + }}) mocker.patch('freqtrade.rpc.telegram.Updater', MagicMock()) mocker.patch('freqtrade.rpc.api_server.ApiServer.run', MagicMock()) From 306eae6da348da4b785300a92a5cfaa527890020 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 11 May 2020 09:10:48 +0000 Subject: [PATCH 2286/3421] Bump pytest from 5.4.1 to 5.4.2 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.4.1 to 5.4.2. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.4.1...5.4.2) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 9881df083..616ca20f9 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.7.9 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.770 -pytest==5.4.1 +pytest==5.4.2 pytest-asyncio==0.12.0 pytest-cov==2.8.1 pytest-mock==3.1.0 From 3849b68b8f2cce77276259f8a106e6d727f3ae78 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 11 May 2020 09:11:22 +0000 Subject: [PATCH 2287/3421] Bump ta-lib from 0.4.17 to 0.4.18 Bumps [ta-lib](https://github.com/mrjbq7/ta-lib) from 0.4.17 to 0.4.18. - [Release notes](https://github.com/mrjbq7/ta-lib/releases) - [Changelog](https://github.com/mrjbq7/ta-lib/blob/master/CHANGELOG) - [Commits](https://github.com/mrjbq7/ta-lib/compare/TA_Lib-0.4.17...TA_Lib-0.4.18) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 9fb4e209b..f2361bdf5 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -9,7 +9,7 @@ requests==2.23.0 urllib3==1.25.9 wrapt==1.12.1 jsonschema==3.2.0 -TA-Lib==0.4.17 +TA-Lib==0.4.18 tabulate==0.8.7 pycoingecko==1.2.0 jinja2==2.11.2 From 43ab814f30202de82c032b428255116dd771c88c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 11 May 2020 09:12:11 +0000 Subject: [PATCH 2288/3421] Bump ccxt from 1.27.20 to 1.27.49 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.27.20 to 1.27.49. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.27.20...1.27.49) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 9fb4e209b..e47fd41d7 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.27.20 +ccxt==1.27.49 SQLAlchemy==1.3.16 python-telegram-bot==12.7 arrow==0.15.6 From e38581c19f9f986bea16f9beab20158e5f818fcf Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 11 May 2020 09:12:38 +0000 Subject: [PATCH 2289/3421] Bump plotly from 4.6.0 to 4.7.1 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.6.0 to 4.7.1. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.6.0...v4.7.1) Signed-off-by: dependabot-preview[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index 3db48a201..d81239053 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.6.0 +plotly==4.7.1 From 96710d42f55219d5d1ac4a7c4723fd5a3e67688a Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 11 May 2020 09:13:06 +0000 Subject: [PATCH 2290/3421] Bump mkdocs-material from 5.1.5 to 5.1.6 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.1.5 to 5.1.6. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.1.5...5.1.6) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index e9553a8e4..c121dec64 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.1.5 +mkdocs-material==5.1.6 mdx_truly_sane_lists==1.2 From a379e68cf441407c9c04264714bfc7dbcc8e635d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 11 May 2020 14:02:39 +0200 Subject: [PATCH 2291/3421] Add new ta-lib wheels --- .../TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl | Bin 684920 -> 0 bytes .../TA_Lib-0.4.17-cp38-cp38-win_amd64.whl | Bin 662134 -> 0 bytes .../TA_Lib-0.4.18-cp37-cp37m-win_amd64.whl | Bin 0 -> 537651 bytes .../TA_Lib-0.4.18-cp38-cp38-win_amd64.whl | Bin 0 -> 555204 bytes build_helpers/install_windows.ps1 | 4 ++-- 5 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 build_helpers/TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl delete mode 100644 build_helpers/TA_Lib-0.4.17-cp38-cp38-win_amd64.whl create mode 100644 build_helpers/TA_Lib-0.4.18-cp37-cp37m-win_amd64.whl create mode 100644 build_helpers/TA_Lib-0.4.18-cp38-cp38-win_amd64.whl diff --git a/build_helpers/TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl b/build_helpers/TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl deleted file mode 100644 index 87469a199037a6ce79f4ee4ec347f0c411b8bb49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684920 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≪c7F=`hCoL#u}a7*VA+qt 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

            e}jSYxSKLA#+4<_BX0`|L| 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

            I_c5
            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

            SDtZ;i8C_#Z`^9CH+x{5WRg57UIK} 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 z zN)Si81&Q*q)PF>&b!vV~82;yOqs$XlnyC?*A6}wch!r%k_iIjf)Kk-r#k@ zDHx5%Gk(xxbf55X$W@=IZC&K{rYmB^nq8%az87;(cR0@vDdEU4lP(>qCk| z8EMPO4mVS1xiONacP`_uTz(#a*wr4`CT3c^fUJFUdqxrE*H<`09p-m$fBb3e?%2(g z-mk&RSY?=i4b+D`=88__W$|C<>e-pbU8~!*i0ro1Lv=^h8Gl)jZ_4M+rrL+H9V+zf z3|DvlN2pRcNC>|;Yz-rAds01kWH%w7`w2#zYYFJSc@*>4OONssNm0@@!;459-SU;Z z73-QB1ri|C=7=y@ZcY9UQP^E@?~^1RyX7D>mq9MCo)v9gu)ftE7-sW|*m=W$Gaa<6 zKBs%O-F~w}kGyH-IMjTy?U7SjOGvFk-6MSz7rs{3ZLJ^gv${8?5vx?T5v$h5n~RPo zoew#41jhA<3mqG)`*WI$PA18~flE(4@WvCX_8ftTCI0nlGCwxVL}R&?x3F=#Lr@RG z^>Z}}EmT4yYZC~-lXMaWI=Jw&r&vLG52e|CmiKIt$T}4Cojzb=3Xcy5WJmfbU>#dOb2|VvK4D8GoF*}tv6xeC>c(#u7B2|hDxEx2XEl{i}t6_ zx#B)|3Y@(_OTkJ$#^YAsWOU~(<+5(%*}H#8&uu$$^b2o6v+1#Ak7G+nVPqHv#(D1A z(0K`!o_^>e04CJp+mG+PB^LsrS( zb`#Fk1mz_tNl^*j_#@r=4)pA8=O-nXeYY@Ul&Q5aZ$mqN0Bw5TS<7_xil5z)+4We0 zl?F$K()aLy&B2d~a&dvnXb)VTWthAMLWrCnYFr?ixbAQ-id=ZW@OFPI8zp(3XySLE z|6LO=>|o1dD!(m#U)DC$n<;S$_*Hi)<`$GTrD*Sp5~??wga~@UWWxZF2L)}`b?lM! z=sQs6=l}hC877Dtxvg^3Vmisc7{eBtsNu8e-ka#vy9D;#*H64M`EH(!e7hYtyS+3% znVmWN^Lg<0HO>xagpacAk$H>M_%2v$K~PKkd;Cu!bqe-gGhQ@zKq z?xpfaGMnD$t(D9BH9N4t3o8lZN~sAbW{KYDe*`06RnDK`57D(5q!& z7v^s&*s;7H>JzR`G6)meIM6U?SnGifRbl6YsSUOHyf`HePg z#O#FH03o&yLae*q%`}eEt!vjuk+}&YSCKw~aO*@N*WFbDg%j@YpSP&xIDic}2(ML9 zupwh>e|qbOGY(M961y!@X}Oex5I`Sc>j>g%p?LjZrNIbq@MguakHNK^2(<^vBay5B z8BcD&iVFzB3;Xl9<*;y~9e0VoJV*6*Sx*z934dSXNfrl&>`~%V!OG6azq5n&$ucb} z%gILOdZ?&P@~|@XiYSD%b$yR?C+)gb$bLi9ut zOw3`z(}VeM0WC1Y?u6FiLemqjJn+5lIs?M@U@!MHpDU|s!74U~QRpmp zf0sFHEe=J`p5E>FGZZ6zjwn3VR5;^*4L1`~Mz;I!NX%aR>bBFcf3d%SJ39QbwnOkm z+$>WEr5&dULLZzT5hhgsqn-AOWoeVeR6fQ!Yc!Ok?$Ieg!Pd+f2t}*J-sW9h0$-Rk zh*|DNWbu@TDIweeT4_GaV3v*vAevYq{mrmeQjiME z0OlKE?Ak>T24w`?CSxnpGRqMh=zUBsbO|;?p31-~TxkNVe7qdCD@vnjL6y(l)SSME zblJp#Aw`BYWqLYRPHU=O3_5R>O|V@h0)@Hk>E=dv=`p!pPD zk#`rS^NJ{!-x1*TwpcQZ9-GsbkT^*&;ZlaR6~8R%N_MbXjpQAeUI5Hgfif+zKC4Cl zz0@g~V8IY^NMb#r!6RChGERv`j&K3HWn|%}-)2Lu(vVPA=F+GXNU9nk9fBF8PoR-ra1PniirD2}{@w-E?&AR3zug8S}R&0iypyFd2QMp@y zXlu6Q#fJUxNlZIJH6A}^h~i1T{=dR{J^*)AP3+Ve)-|Y4-If9Xe|wl$%Q(SVM~2k} zHlCtPug|fb1H|OQK7+H^pL9~sHn^o+5nDP5OYaakf)Ug_iZrK82EcQ(eGI*q%w!(Z zgy=DWQQs~YZAn2kk!4_jb_V?L$06`awb4@z`yeo$+CVHyTZ>YAu^g#K0Sez#D$BibAOc0w?&wdl^X#S2O4ktiWg3 z!#)`qd1Jzk)JI87LpRQ-zG&esoCM6jtV*G!TWmz7EQqaRU2Gs8EB6n~ULiwg@^a9O ztO$9nL8?{MdVo4X^S&F_b}mNFq0eza~ey)5B%-NyFbEEu~QFKD=HOStUOQcD2hijB!F!BQDAO|(0H%}E1CiHpE!TIcso>Ekbtfz zKxFAdWZmyFub$mLmUM)YeB>Rhy78o>AhhV6f_xC})=1w7T@YJp;U&ZT8*)~xTv!HB zHofh0dTBbQIWeeYH49VlsQ`9m9O{6aC>$h)BO$6#`SdA^@AuJq0_j z_R)BJjR;h(8-#qzu!VDtrER%|M`7k1iQ&=B{Iu3I|!eef_+Ufr-qo$O4K|GqI-iRIMd;c%8vj7yEjV6Y- zmAzN?%3kM;upDv_F!R#($LpKzv|(}#;6tv38A=P=3>*Uk%W*Ci7F)XI!e;S}m-3?` zKI(4Wh#wLGOT@vFzrd2`U&|s7EhqcMGw6k}agk3yDf=jYI@BAG{u zxJUDnq(^p(W6STZM^y?$Rov-XPN-@U&1ij!t={VeTtYA7Bx?pDYIqBmzHEG<uv&J~KB!h(hK zP|ZtWq*@Dzr<^mYKMPMdV6j~`EQ$5CH<_bAQhx)3OC{+ucVK;Rji(Tt=YUqR(4QdI zD`>#>ps?~`elu_?M7Xp3%DOluwBQ2vxBSSd||I_kx;es zp0BGfe|jeK`Q_ik+?mYxkl+L_+*a&E4%663o8*)zQ2J8M=__0Z%3hk0c$3MW=o@jcWn z(sSyylKR!<(De!GpD*7Nh1Z@|ec^?*kk%ui!zjS1}u`nOI2<*YR;^ssAG0oN)oo7Qc<8?`2Nb;5bzeWLqcNwPc-_=g9fnEMEz z$7O3!OD8=0q98CE0$~#)P<~_hD7s5|r1C6BeSHV~gCrh(Qx%oF4bCT?(hGvR6QLt$ z^hJBg_{RbjekK|qcI^B}OKV!!%eB^Bn!0DwC*4nw$!o+F0aNN@`Er#lfDmZpidk+-ML zEcNxMTu~TIlnKl9d2hWYeLr%y=R`>M>^7z`^23+2C9@-R2NR>KE5;&!f&#y$7F5!B zEuVaMn7=#sRcWW-eLK8q$}QJqB`7)ctsD<$z|dH`tvgbyRhV)3Eh5FvMi&sGP@4f5 z!8}{EG-4KFr~4pS4p;7V=NW7_yL#Rsc1(py0i{@~wb6YZC82rX>g9wUV5+X}(nP}m zrzBgqT_A+^yu1G2CyTt8qKpTSs!rYTtWCC#Hsf=b{K6H$Z!6!w;lY&~YVH^RS)*Cs z5lU%XSV9hmYr~e@=cOKWuxJf(8$r0d1PZJRl(DU)HxJ^`;l>PjI_WB*5se?*JwW`=a!nC=#Lx5+qi+r1?pmLDC=@6)c`Ys^67 zYs7Z``fWzud5&1lkt=82($!3B{UDa28*^BY_!m2zA z(nrQl-W~czKX^V!`=;sJUA$b=MuV#>m0RIPHv-&eMIC8`q9vyK8Z==kc+^F-DW4m) znmgAjX4?9ybzbJ;Ac5uk#x`s6OdqnRaTognl?pp`TmuOH^A&-nA*%Y>S@sNMJAyQ}ptQME?*<>vSu8P)Bvc*9|%3U?!F zSGxxeIaX6W0{E_hTM@ZxR{s1y^^&r#jb&w(aGbACht?e}R7QwdTTZ>ijn^a`W#HFS_Wk+jpR)0+ zVrxS**8aPHK)o&9$FchEzYIoyljcA?f^@eg#cJf_DQ)G3<^_e)*O@_Gi>Lms_qLj1s(Efi0w zpW9LL;_`UgcvfuT7DVn|Gyi})bPoHUKN>~gkW6k-`XKq^Y>c(U0^ z8tp$W4xRiSfN=It4HrrIAf=H=?M^kU3_F)>B8^B-MOH32zfzQ`=cIJeroXGS7)ke1 zs9vc7jsr6y^V<+SEzPNmSi67tm}=pvzH@k-`rkD|t8=*_ha*mHMx!Gi!hs!XhJ!Hf zO=gZXr_m2pE99IADMqqH*=)D9a?E*0C9ST?46T_(B^L1J(`?{dIPXUcmoypYVdj{yC>z$j*We_TA;o#q0)0>oX%0FamTr?)#hjb#o zl0@Jxzy4srW;-*LiQ#q^?5x{rTi>5lH9>7Sq z<UE>oAjNuuS*z+vYrd+s?^ zhM5xU8THpCT2#?B=7E)!{^Il7WIm?ZbDT%NOdr9CmXFY&C|m=<*=rgDK2)%<#teF?6QNcF^QidsAGD61TI=+sVx zLt2QV_q!M`3Uzod#hJez>i7S+Si=oj#G-Rff2>@?(5;+3bya2~vPU)}>}4(abbr3mPPyxc zwbfVw{L`;CrPRydY=@cZIw#*GnbNXOZ9=S}?cX&pcF8js>+Zwtg{qJdlch4_mBR^N z(Vx}8SbX;{JN7+*Kcnq`v@*=>_9(jo&K+wPGRl@HbW(YaTax%Cu1qnrmPVv`2w?3$ zmbtLx&);$`sMKBf#wF0+pKot1hj2*UsvON*+#MyR9HXMv9}s{fG8jgll{pbe)?1?q zPG!%rz%V&-*XImOPW1fFpj>z1_RP>+_o}OQN#bmFann`DWu;3Ix#Wb4NhT{V3_WF) zW5&}yRfee%>liD48hS$UyyfA~-+k}BeZ+agqO@<*k^}adzsE;628tkza?ZII1@KRv zt7t2$PCCqVs?2}e`0oeKwC1ZlP{rlYIe(pZe>2KH-3bLni--|T|N1rK4~&SzT_v>h zam@fe(=O@22wSmmjLZyNeP-y{yRw++WH>f`PoeAPx>H3Fna$P6CLXPt$-C za>U5YALi7I%7asfc^8#cDgFWOkx7tUip|w4$y}d8-`cs?l{l}!(rM%B+y6E)9%;l- z^}S|n0{EYUuG$gC$!yzRAiolD@_3@@rQwsixHF2-0nV$yzosGq*{N>TfRk+m7RW`$HDk1+a|Z5mJ( z|1E$o4LKs#lzq5cymUdeJM&AM6}#rHspG&YaQQbJ2N;I|By7+r%=7tOj*6#7wuEKV z+3bNYj{4{!l3Mp|D)O5uddODu`qAk-MG8R|x;NJzOCDvX-xemjhcEAiYo-7DOg9P2 zRwvYla*ajg%4&?lj48ws&&ejMfswTrK8hR*Fp%5ijDat{yO<Re9L$)%k z?+Lu1MB~fw^}{&3m@r9nQfKS*cJFh5Lzk#jmxV(mQV2h-cm4qxm6Z$In@8BLdI^Y; z&zg%=rN5j`tuYu^^=6!y0zvIq?b?^J>Ks54yUsW&`ZimBq2;w`a(IsV zdL()}R;PN`GgkVE5tR$-dbg;hsgadccXczBl)89ZpX#QhT2}6B=D_b_5#R-08q+u3 z!%Z$FQ!h8)5&Nybe68iWi>KuM`pbZf)oJt*c0@?vus`4JULE6*^`4aaa=*X50k#S} zwjs3D!Sx-b0mI6{hoja@ZF5DyQJL@K7upk=6)+MqX|F364&EMhTWwV+M%Xut6f@QNaJq&$MePy$6ypl&$+-h6AY36x0PWu5L=U@jq!1LmRtM~S0sXT4~z(eUB%-bwdSQN3|jrr^f8Bx;#BQ0mZo znvOPiC+d^ASolKMGK@if?d4&_sR-ki?t+wfqq~ymA-lOzH+DF@R;)?aQAs_hX8fYv zJyS=_NsG$Ne{_wOvrE?^7JI9HyS!3H@H9VFPSpGdWpg8&&E5fLC=aaJu#`U^Y40_i zk>V+*KU?OHduBRv5o>RrM#hj^U6H_U-Pby3jJ9*gPIrzaCWxzZoi9kGh z+wR?XqCD|O9YY^DfrCiNT_{eKblIUNmGs@Qw_c!Y~4xCX? z`NA{76I!p~2@j`r296yWWzT9PQ_E5UjzSeGRJnfmyvHuYJm8t~UaM(L_0L!FV;R^z zLpJ}^@-D8bKdWaTb>Vcan()8?!GHG9HW-{@dvYv->i?8TqH2vOzmkEI7_=--|%*aR1tK^zIQ5JJlFh{wasm( zR3uW;4x`b1wh@htt{Ui%*b3)nE8WBQiH`tjj-$G0!LH8N;)SK@?bUIRK7V?Mp~)e) zylzsbAnb=VO&m#azzFP{S~!bUw@5Yb>7y#sBv&o*QTBU}Eof{Y4tlm?IP%p|@}eQS zh6-4s_6m{m;kNGLjvNZJc^4Xe<7NnzI`&6jvl>%i^GXRkx*I$S{f$qdy#0r6@`u?8 zcNtx5>R@FUIv_xILA_6Wy?FQs$O7a~H7vK64cJ}1}P+DiTJi1(jh(GaDH_rByjvN~}j);aH-93Q-2^!oX z!5J*b;I6@g41>Gd1Q}dT=e_s7_k8F47@q2;YpQGS+N;)HJzZ7k%5@qi!w?;fY>7`i z_*=s$o6aNGlQlj8$$5vJTR@wG8{zx>gr?l>)EU29#^>~H9Vsy`kdKLeSa5ZVuym~% zSceaU{f(0_u*3lZH5iC=MqsE}A2#P=44%mVG}L3IAF*am39KcAO$Q{%Vm9Z9LyL7Y zfYw(7w0>s-7{qSQv`?|oBl6DxM}nUY^s4B+fcR*3PtcFsU3UY(H(KX(*LBk9H{iz% zOJepahGW2zM}Q?QDF92(vT_sL&P5YvOb>AxiRPu3P>fg|Hc=VfznuCSJywW8OaR1( zlO_2{&jKQP6i4)h?ki$qSc0Sxmgx}ijeJ`#fY2Cpt;rb;Sg2W23iTz*^%;9h;BR1) zNSuLfi49P*{3epc0pMCyAdh_Q=H^BX5Fn|oH@T5%L7yAS{~6N`Fy?56Co6&JhCc)4 z$TNVq4Fb7nHXXqKN$fIauB0X(J3j=>4)%!Ag-81&VX?OWINap>2^eOtxc|k)tz4Yd zn8e@Fzi-+KVlSgwT_wJ)Z4g+Bv0IA(oe4}h8t50wF~Vh^O$hpb*w4ze(!cNPwL~K} zr3Xb)js!*kk>2cc+UDj)3e?4%iUAPZ8$j^3tjmh{@IeJKV&Y{fkuI5}f2geN{u&sQ zq((++_PK7XjS2pu&rAb8UB+ag6K50wNocN;c@xP!ux?U}h2JY6?NOnN1yBayKS@#( zdx0FsPm!XGL99kHOrC781ivN{@zHR~u<3N8q-9HGIvz@rrYx<0}v4H>} z#X@2ia5&?;HS?%+YLV1Cc_d=ogl%6clS>y-a#1vww*Vi`aqQ`jBLyG;7oV6ouWwe$#a@&~f4< z6m}B@?@c$s_8+r_u3B0SsflhzqG=R8{cDK^TE4S2ZC^(N#%q?O0qsEq$W@jLF?`I9 zsXfGe@v7b~0&GEH&D__o(rysIP9~sF0OeFY1EP(hx9)G-)oiAa+%?cElz72Z7%-!e z+#vzrB{KAHVsdI~ia+Y~ zY?E(HMfaEtWG6ztQXhbNDuAQ=Bms$gj+#3#K9T_erZPm|0Z2CgA=2Ft7FEP1S1wEq z(W>GwrUXQ{%c7ox&YJnUeeNsv+*{ZZ0f3r-XT>%*b?AYk^rW~f1i7KD;5OV;Ry?D1B@l>y>2c6 zjJW019gp>m&hJYv=)OY1h|}K4fnc==g8$ zBu(t<567L!+?t>msgoxoe#$=TrFGpvG6hm_M(QnL*GU>4VBU@tEg+^G@sLMm=Lgbc z652ykPgXrGFc;-5NCD03dAY^&prK=g_MnS0d7j%aX<`oZcqW}NVrA99{f2y zPb4)<6(?QT=so}dC_A98KERnVYOyDJN5Idm(W$}&0Dy7S(DrBi8pYU%Zu5 z)ko*0@Vg;ic5%s_`<|N7++HA1qk(B`90NcgJvsh$b7VV!E#_XKE0>ECsV2T=e~hto zbz4z90ni3eC$N%8gQ%_*xU1Ln1{Cnrx>8>@Nw_yf0xh=!EeEh~Jg#k60P=(cEjxQ| zTf|*hG>*_$^mR(=%@#M}6}4hFx0q4C`5G)ES=ZAbpj{K`w@ue}_yBFMX5V%A-b+dM z%`nm1=w2ZPsLJTFMdo@M4|LZ^25jQS%0d536pg%kLwv)m=`%2U9s*>kx`q8CKsaFX zM|8YNOj7odr}1~ieQ zVz#06#m;fqz0zQ9CLkQ+E)CW7^?L!h9-Inf0M)=`>Zw4U`+4=A;YtOE8o-%7DiiJ@NMkCQ$egc6!JGcKUX;{X;)YGSl_61i7kfTB8iSj^vTpv_Ift5C$c50l(iRhY$Fbc4F1z?C#nrBE+_r)o39j2DjhRs( z2Vg%rp!Mg}{+|!KJ^sD}(&&k#*X*((<8xo51-}0WXg1i}*64H7#2N2VGtPxQ#yD&v zEmsb2SEfGcUvR^|p|8uuxdAB;OXokumQz38X1%D|EeDXs+%pencJD!5qYr!`jeyh` z7#48dGX9!tmTFfRvAfQwYT!7q#d&_&Z;e0E9p7eABNQRG)@v#IL>+8-V$QP*yAQeM z%!u4wtM!Xk!3N}qhp_%))ey85MPOW3g-5Fp0MbFlU~e>0R;49R?x$7yML@Y+=(h$m z9L2<@IW^6urZ>Ol0AXfuNYdz@CGiOo44*Uipq+%bt8|qN`BnypteShE4(D@M- zBr-xGSGJxygW|YU^hO_O&mjUgF)ZS9?#DZ82;E@kLnzEi-)|sb94F^hoBK#f^`a*t zb)rIaa|%K&UVa+0HtR&*=(x~y)54}(CAxX8>nyezR<7zd7!_;SXySKFm?c5IMc_E! zau(Bhvy^(?7~FC*>>%JQcDPV3@z8wOVB!O9s1pxbhU~g5`5({2I(K8%AmoikLC_S# z#>(>h#f!4>Qwidy(~ymZht7L7*BVv9Ojk86wL->)q?4hG^grf{IK?e5m#3GDOTZ;9 zjDHFw`sR=ij2{Vm)wmgi{_wBi6ryt@7a-4nKK;DZ)%QO5qx}y~PO*<@j-V5t=o*Nkv7g*~|+CKi3D=|GHWV3R93fQ^nynVm0D0MlMDyuV1)Y3yO$}XOriWjN__d ztKnuPfD;Z9y5wDfchCj#sqDzU#YoF#%5BiH(SA#qP1yP>l1Mca6BB1CHz3C#dq%58 z8=kQL>O>~6=36^z3)Hy_y9MF=+sQL)=_|RHg>xOb4}o)emgk}oOr^EJd6v@0QATr8o0U)vQixwRtIZ8fRV?8yo7Cp#%N;H{D=X8c z;mhG(1}%R+`REhmQ`%Z1vIN|`_h3s_>*g}sa^>>SNrQ8v$a2p9xOcqIZVO|}`LY%v z8~Yr=f!)!mp|yuvTS*b) zLG*>poq5n$5L?i7e3HaA%9eoarj{fy)u@ zl>kES&f;P0;q)=}Q97iyvvT!V?aJm>?r!kTEEEMzubTafF zWEJFu&wKA3--!R={!U^`sm@Vx6qX|PtM&OEc{&?w)F6N=|m4lA!2O18Qu1K)rratoda7)1~l<<1&i*R_goXj}APx%ZNUg zeT)Nin%hqcA#HQWGmq2#R6j2BI4(bdACZnFq(|bD7lQLUAv2e9cXdS#rh9qpkcZpP z>Sf1+Xqie*Pa(XA+T%hgJgVD)T0)C6y7jjtl`DBpZOsfKyk?7SKieIGF?2`SFc$n8 zW_rkvvG5D58t3_Qio~WPl4j28x0x4HrAG1G7OJfyuqt5=t)TjaH+7N(PC9J-3QCkV zM-x6MQ3XMTg5!*KH3)Bt_&FjynU@ufl^nn-hD;5=-W-E7PIU^Lisw?n0S7D#8Ws7J z5Kw)Ak&Fl!Y%8}On$aNR5EopmFZ~h zIn+DR54v69bxMtbC|I{h-l`3JFE(h;I6pbQF)O6GW31XlO z?<~fLp>a;z!|s_O^_y_5~wn}BW`W^4;Iro|*@O8W2;oa`REq07WL%NW~$_Ab5#1T3BU5^A(;yL+&Q zasEpp_xik4BG=ZF36|eIHTT0if#NdnS6LMgTMNA?TM*(g2xgRD{rk?}bD8Y0J;7u% zu+316el@G;*g+KPy91rhm?|xPrLw8-`YVuag{f$veOwu{-v*4yX;Set3^lFdF_%NG zet!N0yv&E<5u+OvJDzEG?>9hAd0*3=Wp;mKb$R5zv9vKkWwqiwiRWWh$0(lW0`%p zwB~SW(_nFprj0yl>D>8KcWM3kV8eD*5A3YmG)^(oUR`==Q3WG-5SFTJQ9tt8PFRF{ zftv{$GD|Dy&y2xkhFU9HQ#^lnlshXUoD2~T;-Em2_T7oV7VBz*XkwVWv)jtq0bgZM zTLP=VQMHwF;kYy;=4Xf>tY9VO_-qiNllxOZ(Z&gS2y1J}ADE)36#ivD*Q!NEKrW|T zp=yZYUBRU5+`XYVSe<;&SFAg4Tl|OhC+UZ}FnesVcMt6}{?+!55JnIYm|0unP?%S$ zG(rda=dC2D4vYrEYO!cBZ81E6wWxuyXV4&+Aif`p?}L=oOguVI@@CUA$+fo+SfpQ3%Bb~rfTr%nM;!KpfJ zq^v{b5wC1{r7c@YZbg*#u?cP6fE0uZLIL_Q9rL-R04xFx)poLHE9O$?E4~dL)p@3{ zxCw=M!9b{`aoVODYNRE3rD?XsFxF~e4X5|#{<%WNbNTg7fyhA;Vmu@afD1Z-Z* zBRO>_MJAz5Qzoog`BPYmFv6ZDmVwL%=$COxvo0cTN9H)%R&^$@)GKG!6U?g3Q=b3F zw`5Y)K@jwcEQvSImVHt=e;KQChS$U4a%Ls`l8x8KzG23wOhb5BwCq6NBi5R1j0c>; z#|VC|;Z-rL2deQV*M8{`F*64~&^=GsFR!I7_r|Y}n7UO6K+k+uZ$0JwSx3p>on1;{ z`!i4%jp4Jwqlz_Mj!f+O=Tpk%(2iMA19)lZpZj8FS)OX^7nQq=B-`~-FxC=MRl+#1 z$?^BHSx`>77#FA!9Kh>g>*Z`zjcb=XyH^#Z4k=r?a}z9a{+{C1_v5B1L{52RRBp;`^8!`GYHJ0C&J24^7B@!Tmzc3V5QSuX0HV)K2U}_82DwbFdG_ztF#HLb1_1~gZ#2I~@mmEWI?EB{ir=rGM>tUZ-LLQm>;u1+OGeDu$y0-Nrw zHONDiMok`%k8f__Ol>)4(GcX}QBZrIa?Yjj}N3=Wqrk4&#`G|Xo0aQjMl6>7+`qO9Ao zeYVQ(;9VNnyM4S9AfmC-QN7?glb08!q@4923^jiU(uXLzpx54md|l*ey|*q`@9Cmi z;rkmVhJGb%>VekU68(*ADezZGMLrQLhPWZS%I(@b+9O{v*tithGi}oZm)vj8h>>Q2Q%#DE_cZF6Jeb zzZ39lnXI*T55x*nslkL!n+sxad9_3=!({D4mQ~9# zjaTLl;o`dUH7wfxQ7d;}Ni6hkj)OgaoW*{T<*G#QCEPW=pJryL={u>hKSKCt3e5Vu zptm<7r7*r%K0W^Sw6j3o3|53!_P&Fc|Mh+tfg{TWv;{q$*+uH*tv2*@p0YQdsZ_yA zidn`vwZ*-j*iMcbsctp`;?MlPyx-6M93m{ovV8qjft|}@p|zOoYJ9Fx$>rz$yp~H> z8{=_2*P}=PqVCKv!P-!xF;%rFW?@(uo)fy!Y&UQ^5qQlg-bS?@JMPck*}Qqu&c>d{ zb+$s1szy>a!NzqL1;_8{_mH~vzku4FT| zQW1y!8zQUq$4@C9@dK{a3(T;0r^yG2*_Dd-Tw~SrGagD!@XHq0yjnH!`yaBQQSWnoj#;BP@8RIItjr)s01+_dwF%WIzv zfr;T9-^)s96(z6umNlq&d)B?@_h=GRp5es=ZRUs5g}s-tRaKSuvYhklvBS=%*&5r6 z&JS!WIaf9qA`7o4iu`P*W<1(?__i+#hX+FBj+U#>^oih0g+Bb<0p%?-ThVasup*%q z2`@cy+C3;E!uatWJ=DnL?oY+vtP<(A`AT=I_3C%^Nk3BT5fvWpTzC9Ufjf*^+3(sk zHS zLw9-m_C24vr4H&= zo>O+I@3b)$C2fD5@#7FXV(?p3Qp`4i@rq*qVVU#kl3IthzAwZwDX0^kcV8yTSaGl- zL0fSnV$OmG_jKJ>$eSXKSkvSQcK35;&BJhh*Pu|XGr2OT?bd*qtmB-ZUt-l(^RViW z@tCpdDFe}EY8X8u&D7iPlQcZNj|u5$3~UiF5*6__AGrXVz(uPKibHfJ%hPB0+vnZ$ zH!AWwy-(G?(&999 zX*GZFMuT!!V$;UqscLZl^M=mUGadGo>>Q>_Dmf>SOIY0J4THlzNNgwdPoXN&i8Qsr zfVwt;K^w)*RqdMRm*a)kC2LvHCHU?3=K^Y*saHJOLuGspmBI#Yp(;+zfeXuvYPM{- zIuwvy!f3|X4@xT5IwF_gnc<{k`@ziy%7ESJP(qvOVG$(f(>C1>-<^h9{&Syi22mxj zY46A`)1N656=@C%o%A*~IiS2;FN5}4b7yv)-0c>RwvED;5PlX-VQQ#>aE^%q>Ypm5 zJHGzY2KS=03<&LdWjdKnY=cP_JM8Op`*y04-&xyIFx30po2t^WPNiQfF?bs^uhTA8 zaONyGqcgJ7!s?`^c6&#W!cseoc%N?$cWg7C0jV4uQ}!vYc56JIV7pZD_XqJkEj2YV z+t=-~4j$j71=hssObGLsh`a1}43!?{)j2Z9wWKhzw$C2q5yPlvGc$gxqjuYQg#)0)A>&g|<1xPdKGuacK`yevvpzN` z)ulgO+rJLym%;`o2AM8fb~X`$uC9cP@)`*V=>?Ku4vR8vQ<;+W zGbAKxWF(|lz*$c-M>}&4Gjk75cQXr5c2~bxO=E{1&euT`)lHsXpg_5L>3GrA5sfDcjZgN&Vy2x&Kx+Qp&U;MW! z)YgBzms5m1eFoHDw5a|&(Zu3iz169qA+oPtB6q*pvhwq{X_Pt9hv5{F0~+$IaV+sE z>#xbXUyD0D;wapk;)!oX% z%+tyeaEq4C3%8gnFRU_Fd64`V%NX0vnO6+%rPquG(o~hYFoj}k7s`jVm^W%nBa5$w z|AupYh#_<&jKV*k(&A&~YexE?4Mz7iXMX}3Y5_jD|7{Q$16F2EKx0lSt(ZOU@s6%o zQs2LMc8ZJ={RWdr=%odHt>YFu#gf$J?32L9ud&mkU2TDZRvOwk!AptUV=+dq32St6 zM%Yg(1lW{0&O4mh91+Se>S}4Ewb~y6C5-fOL_xRIOV7sBKTruJ7q?f(qMx|c4uhvy zgoHvawJtfLezr_7jtO^osa2?;@ughce;oAtEv@HGA3#_gEClFKGP zUdNp--dq^nd)LjvcMC{Df@4G~HFi;B<^i0~!%}SxA#`B6ZR5t@A@J`rVaZGq{QC_; zbT~rUgM;zeq{2g(!zjZe6>~JB8YVHRF~I&q*)ga^@8rG_oyxrk=G^`AP3Wes?;Y+K zO}C;sHmhV0m6_mrp#foxZ0K>-jExmnzMbORgg=F;MFg?M|aV{KM3 zwJaBCm2OleD1;(4#X`c=A(0=EUX4zD`K2QOjWSo?ni2yKpr|H=$C(CISfyD}2}PWS zzKk#n65%8I673g*>O32Id~-9uC0e2JJ6gyZ3*IC<$(1{exjt$8I*DFW@#R-64~akD zK?{fS2jw85LwAEOj`s}k-v@3MZGAmsHvG<9M>-xmq}#>Q$3 zEbkF&xrXleV@5`t_?H7+ZrI0jA+&b<`qRzGNa_&hv57XXT7v*J8tw?q+cF;fqAqdx zyHD61Sd%he$1hy0zNbEKLr3Pj-^}Yu+=_*}Nftne`SnmN*v49=5d^tgMr)#PJBTm> zN>M*IgXH4&jr8KKI@D(AYMG&@L$F_?HOGXR=~yc!6dr7-oI#sDs1~Sq>+~80=uMtu z-y%i-*&(oI5r54|E75Bld?1@AzCi2VK#w( zi@EGEH}m~6X1f~edt!$YzZ&T}QwOk77A!H?$0M^J*-D;;JZoW)FM3M(f!RR=3*R!`E&;BQ!|jz*%in7i}SVGR;TYY7cydPw;6&Q_@WcOXkUyI<&WD zcMaBHa6uX_o}Cl+npd6wKc_3ofx549(VXY62E?5oI2w0K2u@} zV46!5cJZKp`9NbWX!`1@N1PG-)ALqacgcHd2JY=2PASRe{3c~f$$+-#ddPQU<&Br+ zibM~Neox9b3InAaMNn=SFZkxn@g=d|<&V%`%*W>J8$xuA#x!Yr&KtqPPe@Pkt1D`G ztxNZoQS3!?nCuOirIV=sv&|qGW36_cS;YtNX~7hf=#77GJpN_w$(+`}UhX zjFwBu{6Jl&NU04o{hcNUQOcbR_hpeC`C!mqLOLXqq3}}S3#!!;uf-?iseyn(iF201 z9?Y_}A=|`u1~8eIg(@R#z(c7V%5;OdhMk`72TwGj>iI*1hx<}b9OQjyYaM&37>%Lc zI*BgoIHIdh5`5_C%Hu-EzWl2GIWh8c!l5lT5sHnvO$rEVuH+5Cw*!Wc=~Xgf_gOa z{DThG-PdV+b_`ieS;1^Fuiu3zib<@maJ;P*u!O)GoLy$}LIIU;=s7=HO7xB)Il5q# zbLwB2oai;hwHgvf;cu67fpIT(Dn2nM&= zR`5^gO;Ms?Xo{b{k$Nvt#ny0AcbkMWE@Pgz()59NQMI8W zR@im##TC`b?QqQ9;CQ#0%?GX4OAiUQ%jQWlNl+56m2Sjx`k@MMW2L>v;qjtJ4cNEp zPc<*2tTq_yICfaEUZAuLMqbsm7YCPM;_f>I8z!NC4og_AV70c_kV`7c3$prYiU!IZ+-+6d!UA6kaS9Ix~Q6{1)E^KX7Sl5BHVXNNbft+@iG=Je*2rtI@ zAs3ONm6G71%HwQp`>ZO2gA+2r8R_#e3^u=)^0mY7%JJ;Tkm&_?^NrZOeAbR_zg=gh z+F{{+=s~xBg^~<`_3M3a$wE@%8k?aGao^c{ha+p>l1rbh^qi&hvx}>(On?s`&K|?0 zbI?WlI{|jvb(r195S|@xcO+9=q%#oXGo)7udIZ`@G=Jq^ z#8#gi40jzgUh*0a+7ye))K+)acoY9d6xP}QNkT6265BWOds9>16sz-Vq4&gfnudSe z^yg5uCJstaD=SjN%^5G&NL~z+WO*SuEb$fCE#AFqaDn z*X6*T#AWaf!v&s`R-7a5_QMa2_>Aq!pYB^fUf}*ulJoJ8Q=l+Fr^+OdknsN}Z?H7; zGy`}}zoCkYu~6Ldu5OzO4F;Ysokkw&Og`}gv9;EV=RP;h=3O<*4O-Cf?)$5so^ifK z#6B*J(MAfo`M&Z|uWzbWm&GN5MS^bJ?;a3$=Qks1)60z|gS)Wl>GS2@@;LGPOaH6u zzbBND)EyxKw}+k&?*6|1SI(?KzJWrf?c(AqoufrC4vyVj7{_i%aA(I8Zvbw58g2E& z>V)Fv>CKLkt9W2@bFf%vcCf~v52vnU zMZCMVt+Zq-DEmsR`0wg(z$qS*VmvTJN9dawelJ}yBbTyydLPKaDOp(!C~*GgZ1AvD z53?JWr}D-YSYt>C702JrM6%b449=nwt0G52zjiqFsy7wNcVi&Al`rC`#!axmod z|38S}34eE5Ur^_fwmca%t2jG6%RFn~HyrUU>!fy{oqXI;ux_8-rDdeJ6)3Hb{=erV zV;QB4m3{g>b+L@OJo{Pe98>lGQ~ES-&!!s(9b@i zEQ2V^u7-3RIJB#A+O5jqaEhn{4%0L3YBGon=X^6eW?IWcoKPLULGmGq5Te|A*v@rd z8C$`AY;hw(%V&X^h2BNfuYlAsh%-0z^mR<}h7psB*gj~}7WF^QCv>RXYx`M89@R)5 z)sPQ~DgL>5!rT(5IEcPE#5s@Mzlbek2sI!tvWs6ip%=5)W6@_ZbeO^_*WIso6xAEC zC2LuWM?ei&)Vlx7SN`Yffp0(STB9(#^Tb1poU{F5_j!`H51Z3B>kkumW7BsmC0Y9g zBSzG3H#IhVXI5T%43l8#=FUz&A<}|lymJF^S&nYacVKT=>vV@mR5Z z1-`bhM4~QRA$;r#7)U7Ja@+TsP*$h~q`#%he2>i|wOHzgs?UllCW<1Bj9&BeQ|3ob zXsm(iA;s{(t7M!8H?)hV$rHSV@A~AkbGHMsRoLwl`rOvxTpNQ=V!ZWc3r^{>hiKNc z&i8Nu|KOv^o6=sBddfl8Kh7h*f&&jfUZXjkvWPvi*`E^`2;0Pp@v>{R+L@y{z8LvQ;6sU!`wN`OtHWiu>FU>x*B?U#d8h~l$@Td&VKJb3kYJ&cb{oGR`dA{HPcnK_xtB%K|J#sj{ldgVAjYsMHHS=!JY0!8 zb}~)#%e3x!*lQfD^!Ja8pG1It$%98Jqq;U$dwg@~z@uHp*&KGKF zk(=a`FR=_gOJZV(YbZQO%y?);3TzC}Nog1%f;qp5f(~WTa0EY(UQ8Z^4`I{9ZHs6o zu2VRRTA-jA7kI#bT7F6Amc@LoJJ$n$A@Yv$S!y>w>l0&@$aB8Xzb|lTsxEqb;e+Jx z)ISFCpZ4(FiOH}&rzbVKX2g5Fh<-<Tuw9Gw0~;tN4&dywGK3 zZ;BeO@kqkgo9+zc0kzs0^xM6XhJRuV|CoPdA!76EoXeIl;m*l@_FPOd{@d%Mb47b) z=d0);<(H&wze3Aab8*qoC`ZsU(5q$`wCwr^Y=?}}jsj#ifc-hvV)cVk3CG$nW(Ya^ ziSDvtc)OCZJW; zPsv7)XDGb5!Y~ZwK2PRtToe>J!R6_9@^co~GNpsa16v8;uYoLSC+mOzE+l?uC%Qo^ zi&ti;0LoZn*DRNM;gv2$Is1ocUlm!wg|f_uez1v=Q(VryZNOb9(Oi0M4_CTLpDsk& zKpN^*JR|V8feqTQh;o9Y9MqWqTnQ^!m&IbW!c^U>HSuO{1~aV8k2b>Ky-b4$il%Jq zR=;-q{hZDyMNp&3;5(-}E`yYcbXUUs=0A-ss$RS4~r9V8GUW@VsW^yf693$NGaL;SntwdY}D=$ zGisg%Ig_@OZJ4V!CLna89Nmm_)oRr04a1!>%;s19`wqL{fFbVl3I`XyucWj3^t;;! z`FlsW;SRVSzF1j#ED@B>17nN7jsQFHv8BlsIWtC}$L~^gd^Yn^%8!rYbU7bYXjC@S z$$Ho^C-Gb~d?gAQTkrDeWly8V-^9eBwa$=& z3>hhug$5LYFQq+wUMk4b_`Y~Lua1Ua#gKX)TJ?-zdaQhK(eD9^B$|GKvX=!FSJ0j z=A^zO3l^HAhl-mw{i>CYyLpDE+7n=&c(Rw%`+`q$1BW&)N`Z~sPRdzN^HihMn?!<} zCs~4I!!2AqFBmX9O;OuvH?8Cs0)?drSn};+J3~ZQLY^+AkmAakW?Q}}ve1OD3>T#) z`m;dDj7iz-pjS0kBGpM}dT$^C^@I+ykb)F?oBDiD?sibyON)x81#`V2nRo1F!35h@ z^_oL^8Rk#fE)~i(pXjN>)D#9Bwgt9gjp8F$%*mS4;c+M!N{Bo$#Go+4<_SJIkX_<7vGx-Gz;LSgRz7w3X9*t#b9(z zLO&`!17eM?`>pr7V{!)1(I^T3mY4bz)}YujZRt1^F}$?9-YMoQ-3}XhLpl13uDSwF zl-TcK)g=PWiz3!Z4O9_)UZrE(7=_q+~1_8z1#L&b$`z z8fCDAfqxYbBByrno7?9Sv0DR=4M}WYa>F=?S?)=QS-Z(w!Kj~-=k(ipA14*)%&Q-} z=_`%c$Wvbvrmk)k^J22LqDd+_&C+LwGxs)$P;-HP>lVG|t@7{8@mCOjK14UMoW#5^ zeUjvRAS9cep-!jeBGaz0xHT)06*kuLh`RA36=C#ST0+e+M?{_}CHFmjQx57Xs_s5V zQGQVt7H%bPC$weUWqCp(8ww~spZ#s-`*NIY6JFOmzRcsFx%#%5n!oDYqf`) z>^b*W?n)1b(zcR0-i6Ro^nR0?Ayfz+rDb(QB7R(qKl*R(nPigs+FQ@e`YohU%$4Iv z$qCcqaN8{JCAp8pahkFE7>wr5zxIA`-D$pLwzHKtrgUny#9(ddryo|w4FS_|^_yr}lVy$%F`PXr=Dxs?KO#caSRuz9+#RK=I8%ZIA)Y#zd z-W$B&sdAj4e6nu!iw&8XF}0s)pUJc%E)H6FL%o(ORH(_;5!!TRPLG-`bi1!gbBlL> zM-HHNr?)Km&6Nw2UZ3IHw~Chjk5f!*J}%>a0f{J2)>(kzakDMm*e^rTb{v z_0%x;j(Mr^Id|o(Jaq(Ixd(UDNi?scHm&a#6KQ;lkryX$mnD^;J6yX?!0*rGR}}bI z_p@|aecYC`XfssNf$|GWbe6mnS#S#YdKS$7&Q|JY?6d=A;7n+@;C1Qs)(7e^&S2yj zAF<=|<7?$I>$ah=_{_gdr3#FkT^G$b176nsp{MMZR0{nGkB6y*SXe!FZ^_~5Yyn@f zI%fqWnz>U{F`Am2h{;o)Ig=iI#@eorBfG!ykKnc`N*WjAlG2fq|K8}#6HNHS0JY`& zJb7MItf`}N7|u})n?@gu?OP`P&c{_x`^MAFFLQE0B*ir|uzZZ`4Bw}-+{^Gg%TCMa zlqHHpPgJPjinpw?rY&;+l!924 z_Wf35;eK!mGS^jptMOGX&fXvo%V|owrD9-Oi(kt-d?HLw%u@K9A3$Z{aB zq36Ep=Uhz&cg7%Q?U?qLKfasKrw??$p{J)-s|9j$6T>6%|#EZ-tDsGrv;amcD$s z`qClc8>B+RrPGyUhlzOvUavJsu=Q6)BV>bd)qHd34tIXDm(itv5Tjr!gFjec_PWTR z?uw}Mna6!f-`LIUqvzHBNE2n-8m_NI_7lSM@fZoO%1zR zohWII1TxyY#&h6B>3M4p^CuslMHdPm4qO;6^+43N@l)gd=fCJ#r2!BAS2vq-S$-WM zLY>VxMmRlT{T)ZENVT1c!2~mRS8%nbN}s~TV5Lj~RT!>7(D?o#f_iuQ5O%)5eY@EF zWOgAjK2b8bIQ?*QyK}OBmBbx1m2xG(k;jyOcQ+`J(k1aIyu7r$lAAYyTV1kvH+Tq3 zD{o%)Js1vVxkH@qVFPa`JcX4qYU#q%)OI7uHE(eacod(Y~+x z&V+0+vss>)nDP5s-v<7?FnWJK7f%)Ttbk-}8s^36uUB#JX=~|g90B>=_GMpd`CXXW z>PZ-+mf=v*c=)}$_k-7($D5SxP62Z!<40sp%xoWX+ia&{S_yyR)nje~f15re@sK{U zc=KOOI<^b5r(*~NsGE#hr$ozQ05^H3?~Pe~d136GvjiO+X^3h0h9k^{Qkx(9F)fUF zcZ5MvGo;}~vBPh%w(zP7+!>VT@REliW~2lE6rV z^iS`Qk+~>7yzgnJl_S@d9|k8l)c?-ZO~QK!C8@y7eG{jI`{JxB^aF;w`8TQ1TAJ%4 z4t~kRi4T9*e*Ddn`8d#}hNtBtPgQI|}-@CoN%!e(66X8dt7rXQG*9RN?KKs_#lppJ{cF$2Avx&>oe*B)wuvD^j zjf##P|H+a$7PdR)-)9z=J|H?3JN`n+wAzLt+BB}DQ%Z@ACSX$ww}MR+iXn+!lJLGD zAx^dT{p5`F>q^!*l}HKD=X-tgPo5~<#fK<^yA^^WUJDnuM&UD74ekZg zJ873~3iti2GKS4tP!hB-N;;ObddXt6)KXTLdu8CzHaMgRZ@+F+KMZkTo^|1FSWOLj zd1cMi{Bp6@#mwKy7*xF2S5x`WTe`*gGU}@UqbdQS@O_t^gKm= zex2XF=bkhFykF-t_xruy@B4nw`=0L?YMC}_j#$<@ck?=r8_G$(dN;oEP#4wa!t}#v8Y7Js!oqZ+Yo;}`MwS%QdoxX?o6*O#BiduPrSYbq<;CF_XY!NK-|U%Muvq;H zyiWJal(;LbE3_gXqT6v;=8ltC)&`yLX?^MeHCsF zO}BUA29~c*m~A%ou4ji3Y zY?vlwmi$9@A2H`+O-n+um;U)D=kq-@;be}nGI!k@l;H!IaR4*6cx0feVg*OD8WF~^6CypDj_j}#>n>WgF){$ zYwbdSM@kl+qYtm;tP1zJiwvipz|jT4=Rs`cKE{!as{xf0lx5mnrB1hIU~E^6u7t>i zd?@f!>~tbme+sXb?72!4Qk4>x;>>1D2SfHy`l_BUXd<^jN|rZ>bpb!7j?A6f^14ts zw0i3E6`%JWq0hVEnPe-$q~Y?o5P1dTk7q-RPtwm&3;`M6#GSY@takNpD0>a+?PO89 z!&!?rw1QdzY7DTAhbkYf&b(vRCJ<(cqBRE^dt1*~-MQl1~& zN(PX9AZ^Y;Z`aq1&S7Ia`7R)7h2#P^!V7`btrCm|aVdwk4xw<`rk^ac0(;j(JC7`7w zA3K;kaii50K6Lc4RWDP_0v5=-b$#{Sa4-L*$>kRP(O~^e`u(1;7cLSDL0MZ6d%|(z z1bwI{{0#g&kJGga25>bl`9*9zjt+gh>Dk%PGt{Hs$8_nQeyO|(Ioddu_v-=Y2-#R#DSt3 z-hzT)Qz7Pw3a68b!5Iq+jG+#@v}Y8kwWXUE$%b@35#rBLP*YF_E!0L|(Hq}wN9?zW zPt09N?x)thL=y=W@gk<0NZ=|62+BeNASov){fDF#%GFH*g|T*&a&vS-*dslV_L6R1 zZepOeX2>|%fhgA=s{Yl>Y-=I{O}u!1gSxH-1VZRLw4j7P8Nm{w?QI=p`hafP(McCw z0$4&@yjiMLUrW1LTrymW`ka0zpi`Er#csuga&j8?$%kW(DxM=}%1YSqT=tnM_PiCB zP@&wL=Y%-9Qs#p07!R$qRd2o>WS3<#l{A$+RNy-1Vy|9eeALc;%>0-->-inZOwCCRq%nVQUqbLE+4OUDqaYOC65rW+3x_3J#+-6+dS9cM=!cO@S7uAixD z^>w2$=$Q`h<)+Z9W9>Dh$-H_IOgAn9XXI)869>}U+z<=?Mq0gQ}%W`N2fj@{+U&nOLfFj=KjeoXb^#l${) z9@B6ku=0hMs+OV&!(jpqC8NFx2Iob`FH26jWlJgPshwmHxb+#m7u6)Ce|K#1?U=&bxT95|E!kq537W>68F4>M^Y4Rm;VWj^v481%S zzxhIr0KJS@k=F_S93;=s5m7B(CUpv78Jx7D^e<3SRf9*lqr+HZyIpKWfPPe#xaqs^-jvOS+o7 zDP)m1BX(u8>b9H|{4px@^DZkT?vd@oAbJr^T)v6nw2{sIW@&(@#3N-Uzhwc)atiPs zsKDiHVr=e2hn;kbo)nuJAg|@GlwA$U3M)EcyKR{UQq!%7Gd#2-#TMje4ufE>ameAzA|I9OUY?ekEv#z~Jk%v|;bYag5^>HPepCqXhd!_*3sw z=ndDgP@M~OJby;0Sb4?lysYq-u{CJTzTVc=x{4jYaWa*wN`&I0VEf(oH1e-@+7m9i zSKNX#oGtG7woQEbB_(73K9|yvK#5+f#NQv9P8`msiLbwVnd%=$Md04Af1DQrfx@8N z5D22}Iw;>8!5w$9)D$k#k&uY={pXJkBa*4i?@D? z4+nn_GWPz#;n>eULmK*{fbWcdLqG@hdpGd#V#dBc#q1aTze^hj^+!4HeZ8dhFZ!Q8 z{2<{d$F@(nVEYT<$oqJdzt|_Vq3HfUw{ftjqkP6bk`w*Ek>6d%Vbozqu#c+z4eEzK nI7~Y{$?Vh0?EiOR|4cc0V9GrUM#4lqTZmsoBsmfvLz4dhT!f~+ diff --git a/build_helpers/TA_Lib-0.4.17-cp38-cp38-win_amd64.whl b/build_helpers/TA_Lib-0.4.17-cp38-cp38-win_amd64.whl deleted file mode 100644 index 90626b183a42e55d12ddabf57d3d257aea29fbf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 662134 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

            $U6w?tKT@c&g@Lvze-5=` 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�+48L1U@lG5o1LQ(7El9H{M?JP2H2Z$3ejjuN~e^eQpC0t)NB(^n*zp6zC&C^(wd;awF-u|sI2s_`2MZ!j9C zHD6YOLlO({xELVR1xM7tl+*t5@qBKGcv7W4@Ic)z`t$nttP7N09fSjPcYy(5${}0n z-ZKwqDv6M^J-60#IR`nevA%Vl6su!`u*c_o+KkNuU4;+N5*2yl>rpVYWp_CIBFDa{(tIK1Z?Wr6 zxqN^2MO6?im~nbH4%Eu0AL>g(%0i<7Ipbo9H6B}4p{GjO81j@5buGf8i0@8Z`SH)W zu`lxv8A!#4HI8@xX*Z4jigRRT*2pJ>otP)k%(W9Gkr4u$;O3;)R&C0{8C?XJ3;AGA z%JWS#qTCC1`&7z7wJ6$us%?(;f2&#nse<`|{T1_g1*4;n&n^&d^bmoYdsrRA_!P4Lolc1i+MHxaptlwV&UVfJb2o!CE4lEL&Uvm*#FoIg% z3*erD2Q<5!apC=cxB$mG>56X+NJAw#@29Hz*i=qVtAH)14BTr@!poZ67%E;AtRH?iRwy$H8zG<2Yn*3Y?Kt*{i! z02U_cTClvTi)+DRf~HX3dow&A;8IPl)Sai7J%Fn^qzIs@YU>T$VUBo?ch8wJ!ik7O zp^BLDJ)mEM{xGh*vOt5_jiamTN&=`^wYLsGX;Wr4njSc>L-M=>3o~zk%EB>a=I8 zmHPl%2jyN=RdvXzh*yR`M>#2saPdt4k|bZGXlbrlAs0_w!JE-Hi}2w!4K*nq)TuTl zjlOVsZPEoeI1YJajRRaYW7!k=;ATxx4Kb=0?4153)?Gi{0Aj2RFmICX2wSLPSTho% zcKpiSWB)k`_fz>NF18=ezgIJTn$4tcrmS+f~D@7P-y4&|Cw%YdyoQxKe^F(`;54te`6 zc4z>;lqd;|N(&a2q7p`KPueeTicZ%i6delRO660ssTbwen zjRlZhAy=rW-9=zJ2Xx7}K)SwUM$(pME%{Cku+OmGMN8WEH6h)@Gt9l;tBqp?bWdx9 z?#8QA?|$^(ICuP)d>p+r$W0pODrAxc@CJ2LPKJrF2KotQW#G&1Kgy?dP!Bm_2=)6u z6`^q~z)RngC`qd0VJr0#uIzXQycJ0VWMEt$;MIT@(avzjBKX`yVk;P701-TocwmVe zx(26r{DkMrhEL8C<^Ks9;LM9bZGN7pp5kq95P%P(C4g{g)6x>^)ia&9Ha{r=^>15R z9dPJ>u(0(eXr8ne8SK$CA?DoaES3W*kaON@cA@*<&C)(k*r-0r@%^`UpI zSR{3@%{{j{{IS;VRk(Z{Fw7Vh{%1`0XcGj;O6AP%NnHpn7<&Ks8r&190pUXQ+G?I2MI!7j553ueU9fMbd+rkl9pjI5wmS!T(NHrUK>(#~xp`5$w9d-9# z0|W4jai9YsJG*qH^22(Rq(bG}=`cwn7D~Jh*aTzM#vO~ar_o2Gl|s{ZKG6!_wYUeH z#di{Vsf)#UfFj*&@-!De>F_ZF;$E0_fJjf0Z$|=lr$*zo>0vsN0j5AYIz}VG#t{TDh$%gF&1fc+nQap=frm*73*4)pPF8N z2Voa!&j`Sx&}7Yw48+7SXZn+d7nq?da4~I?HJ**l13>J(?oNMSXf!x|^XI`WjhbC` zG^l%C7e9u7T_g!xo`RbX>kw@WGcDls6O%Sdi0$QnvWBf?fnp)1wVO!=ZOsj(ER+~0 z{Iiuv*<$|=P4Lblf78NkIk@;#2;XJ}KKq^oH6^>r+jZf*SSqhDlAb}i5&L0zST_0j}on%Aus zq}_O}`BX#c|L2`~XxYvifW73YfdY^Qkr5W5bW@|}#M>+&^QKNE<^W>ct~{E%`!I~* zK%lH%9}!=kn?rtVc+V5GW{u9!BFe|&h_#IWAmJJptnV_=#N!L6Hw89)9THgFZn@;8 zV^K8(NjUv!JzjZ~hE!vZ1_>LVjWm>OO3a@tPsUI$&Xr?^B;hBA!`o6vWyZtx{P0kt zx8d}>9&QvH&R;RRPj^gEX6ih~Ts>A(azj#;#`}?~DHrh^ zmGIr`^e_ZBP_XBza8kz$e}nEJYVz*6P?9+5d%}%WaXF>aV>dmYk|AvRq{LGFbfpXW znIctg#UKV?xDb$ms~ssItd2adB-iu7JADNe7T(KeR#iiTFHA2@4h1owLJ7lgUNGsz z^%cQ#qLp(YcISbuDcDnkN;w(w5NC9a8k&vY2fcxd&Jvk;h3->aIpeyCjgYvPHTa~F z^Q4A#G;qiGJIMP#biQuRpuujG(7&jz7=qdCf!|zLiwgCS$2)Sz?Gn5-lHU7v#AEks z*vv#J+TbQn51?RfXaB3sVL?hr(W+?4Dm*+7cn@ZgbpvoihXqwt7FlrAoT?bF z!PZmM9duL=@d@OYh2jrhMJsLmQ=_VK%hA5mifO%FMM)U=5+J|l zu>W0=AAT48Hk_6h=SI=y40}D8=w6-;N+SR2DvKpsSn7jwN=a!A|LMzL^Ybi5XT_da z6(XhJWf6n>?dwaBzpn-hheoD_%RbmASM^9de5ZnCyk0gfJD0d~@g&$r> z1Q=mqKEQYBypj@K$)SsDLuolf{P0$-#_RGh{YwDht}ndR1laSL#W@ zSYb0?K*1iKXCr73zj4=jTMHh2eG!abF;bJ6s$*LYqd{<)E<3Ls7-mpQTpF)Mrcke?=@EjExW7Y3 zk+2NaXl z=%||`^zq6esegbrKhBQ4u|jmubSSOYwYSsS)NzNqNB6f5oTC!~5Ug|xKC`V$v^FgJ zmsKweDv?Up{=u1phRL!h+<4u*$@mSNZjQ*pE9>l|No^M*)VhXl!ED z=rET1?BtrMd+`tpHK#U`g!i;5AWAVdWJ5%HRpj6Y(My#b)SMb+R-`&L zjAhC?58!e@8pfOEH6=WfIkanKXT|H4-?7L}&CawZMhVi4R|}t(3Y zPl!u+A%k8(C%?GJ?Hr3^H<*;vwq+~Q!XycNCqu-<1({-&A>m4TQdv7pRvLsU`^Xp0gv;s(tJE5A zw?=Ppf@LjE{k#<-yMi==2;Cs}I(K$m?&3ck(tV$P!N_wg-Vigfe{H_EWVEHCgO1aR zW)+}q4d3X==?6?_bQ|KprVp=KF|X7gRcBT79n52C<`)wG@K4b(L5w2w4yx;mbVKl zoahdMG?Ok8j8=(ET5BmHkGM-0M2tKpc3UclpzhTNKar21r1Trgk!mpSLq;rfrMGN1 zY5rcw8CQ^dx5MrVL6yK`F9X7U2es0sI^ZGLj!Ya)P;|3;#JE8 z4OWCbCU?{xEMjG|Y%>W%PM&b6yPIy_dR@^pLQ?!mZc--#-45B9EB3oHC@#zdomP#Q zQE2=sYid5ZceBfa!V>B!Z`Jl0VbxLV&D-ehlCW5dW2LuhyZ%r52)YgA_jAF!5tV=U zHJR61>h#vq*35DYB_jE-n}Vn z^*^tFNS6skpxXZ)OF3AHLW$yx8+X_0IBa(4*P1?)bav}ss4Heye7Fu&fM(&v$|qNU zmek%iWo9IVkGkwT?YfV5eIxYmuk1?I(zezXCRMbZ$*q}+{JmP5shyT=C>;6&6+cGa zuKs}Va3LXBlm$zae=$I#rh{{ee;-#o_$LM~WFjGd=lgiq{7sEBqZx!~S`(c%kCnI| zE%chWLvEXD#m1)|4>_w}g9v}$@W`Br9RWRk>&cmexD_XPtBnx^j+MBzLXf`Px8l^g z)-n&vFuV}!d?ihY1!^eXA*UIwp&PJ!U^SUtks1fL(w=Qdns2zHS86lK7E|%He(oO| zBR0s+PQi_yujB~%E##Jm+G}M+W;sO?k#yK0lfyE)YNzs`8c`z1kRX)iV%iLtQs0J2 z2V+7x@}t3t3(f#H@Z9@WhjWf{8R$Kd5 z`O$Hvf>XGk9AIZt=4^ zh1~&j5mFExM~G_sxLsYd_Fvsp zx<5(e31i1hh^nDn9}tnJB&DCobFH8R(*kou&SDH+%IEOCx^Cr9;IK^}@q?1U5UmiL{{Sv$-L1`6K%8z2+)QZ_v+@F3|ZrE=|3 zYh!r!QBE2V?0#9EBl-TpBE+*(0WKRCf|QG2jJXsXJ60${DuztJAS+ZK+6gC4k68zJ!TN zp$7WW4iVdTC1=Y7p^Dadh4fY?S*`J|cQ~8WG+ecaZGX-@Gr`j2f7^$ACMBFZZLPQV zw5}pWo+1Lp1zBSTCDetnD3ik{tY;c#JX952C6_CzpE14JvwYJO>qY0I+HLUY6d~~s z37MMotU|+o2ZHVXcl>z?zl$*eki#Rr8>6z~4$s;Su~AHNflNW9T>EU-$;2z^xEmt# zJvkb~|Dzx6PRReMW5wE9F+cciyIO!MfaTGWyD^0h+Tsfru(!ko^E0D0@Eg1nHx#X& z=dS*fAbP&xyxv`#N$!{mnQQB(Qa^#)p^a^7L_Q9YN^IyBMdOUAbkpp?1YBp$m?O`9 zqF}4AB9jc7zw8k9szT}Jw32}zkrAsmz4Jim>jBk{K!2^)%Qy`PT{tjMI+tHi@^_x?#i8##H(p?=?VLTd(LoEAdUttOFo0h?(;qzy&b3tGLtl3j7`;c|kh@Jp*4$2f^p z@Cj1pp9X}F+DFRkS_!sP1Q=2|xb;tkuBNilX%Fj|gtO>5W$l1`P9HNg(jNHH2Bqf~ z{4?Z}DI8ejus>&y)1EbVWP=K*v@I2XWsgro0%!K;9jPafIPnnh6@?yN(-S|@nvZD< zpErs;J8`K?=D30T$QiaJ+! zwM8@P_ChAAE|sYsoJO0m1965+R25S>0{+=R#t-sU<-BrbLH5`DKE!?tDh%lT4~qR_ z2&ch1R()kuhq^{2$4!)K%Q2NQYyapg;eTMYWLGiX#W!w`8M*sU0-Nt8ObfK&x!}gj z_N6Ay|I9GsGeRVkHD7T0{3VChxPW%sptRmL`S;3BQW4W5%Sse~TZ^i!pe>i0Dne>xw71?54Wjb1MbS#zD zsXT88qc0uTnaVfx%-Ifa3m5c_A=nR)mfuybJ#1VPNKmcA)&8UcSyqMF2q|B4btu1$ zEWM%cvqt2@Of+iOFdJpY;(1d2#~m7f5j4(_EJ0iz#{W2oLr#tt=PE^7!>qbV-va+x z;ZR&#&WC)b3!YT^hl;7*fU1AYjIvs5TpX=oHr#|}3Q4n290WKP?&~jQ#$1NdzA=fJ9!iX@0vhUVwHLnYKXvAibXwUR`j zEdRn1#)EKqYl5nU<<;{I*Y)bHC(U9iP;UQ=O73ouAJ|0+`Q9Aq_M9eC6>e?kQcVcA z%Y@1`+kukkH@}JaoQknkK&dtSM}LmL)f+;*m%LB-kRBBcIsP5N=x`k|E?k&$4# zO3ZmWA){TRW;7Ekkz>gIg#c2qEQki9TWwRG|IeS2aIGS?!#Nq3>>E7^u2~fmBZ#pR zOG{$G1uT5)!7T3=x`Je#hB(98u1*%&#YV(<^y<4Ld;8G7?Sgrw^H{&iH4n`1lQ$o~ zxT*!!u08Mgxy&Npq)3gSosn=?k*E`3ITP zPgU#x)z~hMueciM@a%btSw+OxM01AYxQ@#llb>vq-9(>l`#Dt?JIzuqM_syE-?%-e zcK7d`r%%W1k%3nb{cR-Q!TqDSlK~;v^i63g{;bCWzwqTefs_7&M<<8NvQuLdjF*}W48;t)!4>&<_ewqg)2 zVc_v&0z8qL(s4$I1`JkPTnIXxMR8pG$^!d`G)eFUQ{dQ|ASSy$u?2iEEIg-SA?vc}avs zMz6+mK^kXgCQM+wJg0v>UG#CjU-N%LIO&(dSqc}mg(@}rV0V!IV`(;wN4}^1>rQ_L zbvJpu-8xv)>N;|szE2E4+kT;Wq8aUR(6G76b2u+})0bO2Ku{@4!}IuES;Tz3)pft0 zPm+CqA=9_BEPjuRyBS`bIU8V@d%<0~=!`M$RMa~<{;HEYx~KZ}=uf}}9rVd{DbHFP zq1OyEl2^nt;wBFT%zQK}YFer|yv4)niPzLN^=$9!*L2lA${tOYzfEycT`zVrdoSL( z5!HD2ZNy8$+YJ?uBg(zRpbs$)+QwRM&~#yx-uV0t(FaTPzf`)rhJ6*9=#K6#pNRTp z)G++MX;c$UL;Lz^r9tn`9PJOD7twESJTuiEh`6t2?o{x@*DoyhQuo2L(y!-M>jE<; z7kXmV~r7Koe<3GGj_8SrPBiBX`rm$2sw3AwC?qD|5!M9%!=+7(%##1!2 z3VzQo(1tnMe_@$*T6+gexNOZcTkx%tXXSl9>Ab7&3hic~n*H#FS0U#r{dj|Z)@rJG zzxKT97@YON(knknN9vmD=(C(+NEpmeLXRt4j{X@run5|NC_3kLdO6NkH#p;B_V@oj z7?_P2BHJ|2)XJ;Fl8EO0B^m|K)@;;3H_8{g;!2v{l|&uJu@0HwO8U1fMUPhgYfMj> z;^`_WIXtDVTL`>UUQ=(oFmAYgsZEX@tGBA-(GwontYmS0&m?%nQ19^kJ-xc5sU5&Fv?azf{DS^|Rsr+S_)0SU4QhjrEmttE8$6!> zy>JiQ$?sxG`=fNVdb;9l({rimkv?OEI{94Ggl{0{-prTq3Fo`4_6TcnQD*wLo9k$~ z$9!$Eto9F8B);&xzJb>n(6cgqg=kWam$_W?uDNk5*~@t|Gcw^-UE7UkW;K~_q0l{GYSme*hZ8*X0Q0lh&`o4U0?kKX z=q^06UFc;l6vmg+ zuo_Rb^gZ|56`A<(5Hn1d)t~KXmZLRw>!Yz#4-**MVi0aMaj*MwQlG#SBmd{WV zQaqzIQS*iG#-SqSBB<_B#T0!ODtcfy(r;= zx5-aF1f-ayK_H%QkwM89`h6yJ3cr9+0)jBfzL8A>j1MMQ?qY7x9P)+W1G9Wu7`OMB zxkIHxiu(<`ZqtINsl2$05g~kxWb|HN=8J_C-)Inc!RNr@)lzH_MyMqydb2F^E#jdZ zwn;jyH|Y2}@qbjA!O{$`3=9c>N^VZJ&<_e>_{!CHz&a2&sTsUnuF^#96SrChFt*U0 z1398t*zGtly|>KQ6(`@6MZZDgOk7entafXpTPYxSVLrC0cFMx^$$N{iWy=wjABJiLQ6kuPx> zSDFvR90}fYyEfw$&)4}ufy(l$AF}cayk~C0eTp#euj?lZm~7N4x1)(oG| zjQ?RE1SlPNNOyP;4;`vuSQk~Y|6VIM?GuEl?#N;|GC?sR?`$F=bYscyI}7_?I+pxV z=RqDn=d&wXhEG`sXo>Pm(S2`?zxxDm2|5S%jW05A^5Tu*qq6UJ`^7WFSYlCiz@Km5 zlhI~5xfp%Y_+N(2AaR}BayE%?8oE_#&d({dNS-YA8M@i@NUyN!jLXT)4totN!}=T} zb!sDHX4RNE6E_EYlb-Zy9&avb|8UkCLFeiR)q-O0`Kt5qV_bFHB%%W}&S7;JdbegQ z`fLMhKXn*Zs`G3c$cMgKec{T+kuE3FgewPm^!FXp8IGV67ucL#XPnc2VO%}0ZOM!5 z)e%7@M`n5d-mnsdGB??YeIb>rrtJahHaa%Dk-pLxBak=JxWR4VZBizkr2xQ0PSX#eXk znr%)J@zIh_?NwMT&O&Kkj&K{=*IWo>J^x}*qDc_TLFbBzgx4bMrSZ%!`X1E2mQcR> zA6t=iXu@@t1e+_P-1gF1SNZ%}vu>cd7+&1stbguRPE$L+3zxql>j7e!x3^#SP!Z3d zoxxs_2;sw`7nZ+h{5QjB){f(*J$AIBk_yc z#fyH*FMhgC5zuv?rhW-ES<4yqB$qDUx7TIHL8ZK|Uf1wS_tWo*mfXCTz_I&9@%vmD z=wmdhKb7RT7=0zJ-fv)aU-jwMinV2*IM(e2l}u*xqhD~~aenhac|vL-XISP|_c(Ep z`(KfGM(5G@#g)wA#cxw-?@ZV~D~iJ>lV)<8<9HZ+p60m>=+b7mzntEH`J4=sDMfNer&!VLFdd?Jt8@b-H@b$XI zKs?{mJNm0?x965w*`{i8?{t%KT+=CWCnsVoN)s=NPMck1^^_uBJZ zWBzP0_@&WY(<%KoN@mz1?5}TUZEp5B^@J*o2|}9BsOM#-IH~gNcXcOneBo(IAaG;< z2tkc{h#;St`)`=>-o$p+D&g6)C8HlXJxZVE-p_W|QLBCO5NY8+Wt0=$Q+~Z)txXpe zo5bA8rTpKSJ~_8!k>PuSZ0F#3k_6->1k5eA91z{hIc1UHYq2 z!2IuZS$9J1Z6#i=AvVMx+hJN9_nEh=FYVs--ti0Pd+Z{iDBvDMcsoL~ZY_21Jnqq% zw<&j>-nHF+f#o*~V&Q#~=F=}kWO;YSsC6*$OUsp77d3?|4la7v!(OCGIh_%ERqo=A z&OBdew3mLrkiNvov3B9ooyN3>E6r+WU1(1ni$1N!MpL-!=vAv=<;QCro@ZT8f)wksk;~b4gRkk)`W0GEJ^qSDy~Uq-N%@xhD0@k(gxpzr+ceKUly1e*wrR>ZXOMfjs zd??bVrN()V`l+)xCt9P>rI2}a$BFq(w0rhoJp0*YcjZ`N1*eq3&q4yu4+eh<_s$zU zY>YGuAEVz^@c$Y3)y1>IfBeB-?X!}c_ZMP*(h=i&hBt3D-8}JT5GIcpl5WixM3`SQ z`KP9=OzsoJl|76fpkSR{t^k8%FV1&Mv1ow{AC6dE43>7t!!`{WMS@-oDuS6yzOPp9 zT*~5+9oiA(-4aaTS=JjN=|M5uf<}L_zu!ffyvL7jjN#@D9VcZ6DRJDHpJd*m3t>?!Aw<}O1|HsRDAJaxZjOjq0`X zMW)izYwInx#PWA@TnZNR%1YwpuwJKzjfR()(3SzeTQ;W6z2o{F|2w|+UxRNHyXNBR zp;~_yY#e*CBEY>Meh;&fy8^Q2ROz=Hg(mr}wD z-MrCPg{$Q>V?x7GPYV(9+*eB$UWO<AON6^k9@XYjK3TisjsNm8slw?Mul99y=L6q2L0AS*rGi%)ip{TAgJFqOCUXZchWRBKdTGU!e{@eH=u`wD^YMy!eL%R^oj+|j4HRI^sm+5A7Hrp+61eqA z$@Kcu^!oc-Lkj~6Ykn-EH1e~tG3>p3mFK*khlZ~?qqkm;nDq3Plx+PBlZ-uPMD(i5FHG==#C~St z=v``U4|-3&_kcMd_%L6KIPXNXb`+S0ZC)4yzK zXzv<-IU4-RaC}EdUo?plZrl;i9V(`85PTZd$wwn&>PEQLy&@ZEmUwR~njq#iMR{@g z!gcQzI^o)ev%jJ^>BmlJX-l1|c8*%Y$}{V01H?+xYEY==YkJMg0wJG$1?=l&1xEFk z15b^WBkrP~4bk}PaE$rJe2T4YZgJ#L_L?hF-uz=;6d`X`lyL2_vKKK~S#RRLGWG3M zLafFQ@j4khlI#{DTY7($H)D|gh^&W(R(<15Z-|p+-x=-F+Edtjz%R5>4wNUuOsT)# zI1|TSf6b+sdWNmqrbew-LH^Q!&x1b*`9^t6?2YQ3p?r$W50LPg&7Mp9r}xWGU=__|=-@GqkVM{m}>q|I#3 zg~NI9@B0qU-q`EhbJIhGNfD34VqLLYpO+yy)oNKSe_fvdR{co}wh|jU`jXVt#Le;% z)ygNF;bP^uEVl_#Z< zrBA@HJHZ$UuLK8(t`!U`2|c;xV+AxZ0PS3e{i_4YU&gag!Og*Id%8gWkmAST-e+%mD73%T95V3n zuxkttDu{TP{s*(?;Eg9r>b=--$#v;spo{Nlo>70A>caccrk-zEatcF_+3Ur)L3aCqF#(tFfq?58xQ#&+>iroh4eLOn5)4miCuc)0^U^j5!+V z>PYQ##2~svJEn>8S4AaltlawgIlcWV-XX`!n!A&;~R|h>rTT@3 z!$0G!A2)kX#rBJt1rYrr88TqcgjEh8eltD*^1u0Zs4yB zJuwGv-7y2ET`YiVk~qY>jz%V?ppcA!4db_mNB6+6#Lz!l0oK4%GJ*g_VMu23#G``D zm|ktGy;?J1t$Lx3BHL^^^Lp6qwWTjz(yeGf(%F9P$cdJ4`sv3G4Yu$K9|lo>iIT+w z{%CfBYIllCw>DY5Id}1eEU3jYc4@^BpoSYmvpb?zOllY;_ahMB*a?zrE5WdkU>xOJ z3QFOq+|i#$Sr`&bV)7N`!*vcos9q&;$SRrX=h%0UY!r{vm~pMtNUN^7D~&;pg~wA} zH1ca+T@LY(bE%TizpIZWJ(FQ1C@p@!X$3;<^);e#J&!6VDgrF3T=yEBqx$`3^@f*f z5ov>_XjZ<`PC^mNdP;;4MR|;L)Q_(k28og#A*1y6$ig za@|3Ej}9@m*sHSW-h;VnnNfmU_b+?{Ff@5aT~G2xRlfdRGb}P*Fc}%Rotsr}gm+R{ zHMO%9^*?iIWpBs_#3K$+_XY4e+*m=OR{@Dtk3`|a*!<&L4WPPK1R-5d3{tyO6~Ib3 zsX`DWc)+k1+(fyPr>KoXGr*7GNorRES}K7$Mn&a!eA(AQL>R zYtsZ|p9`cL+#Nkdc*P2;=;^6MldeJqI~D--rWqigU;z{aib4HIkX#@7dj04TswzPe zx;;SZm*6F?`)E*!CfdQKwW8Z_Me*f|LP3lT+^o$gUsg-1ieM*Z&dZZ zkr4C1k~;1%64bn2f+{Yl$PDT53QG=A{}#mu56hGXp53Ed^*pOMqP@R;O}i~s>dh%a z);@^Ok{@4x%;%3>$wB2)C5ZJW_P8irzgp7RcW*I6|xg(BtR7vHR2_|y75Z`6S)c{*HX4+Y&=4aPDCv$xP~44(Yn8g-<_O#f=S#Y zWEv~MfhD}cL|D{6ULz@G%0UQP86_Wf^%M?@U**E$h5iL4lFs}JE52d*aQ6#XW-TaPGj>4i2q=NsgkI+BSu=;Ewh$cNA1svm& zd%)b3s(|;3IM+2DIX3HXunPy+vih#6E7V$iV%&UKrYSe$JYHnE^XbSGz_G7`|5zDO=H6Vb=u9v2Ip_%3L**-$jU7QI zg-;^FQTI;FfQhG%Dl~rU#S7*!5rYUiJXf*wj@UMK?#uf4Tvg&x4wL`aB4NUtok0=B zIWs^nJ{y%1mxJ0rHUMrUa1v5NFr?21aC2)OM;?nnCvzC&unCT`rbWCq+XS{T7lR9S?7?VfTrX~X3t zsmqu852W&5U)Wy;nLN+SDT_4)Bd`yy+#Z-NB!&I%9U`Y2B5rj%tko?gG zr?Ia}1maA9iKHH|rUVT8q=qZ{_Y8FcKkfPLCILz#0RUA#Syo;cnE(uAi5c_s<-x&n_Wbh^HcIyK?2gmrA4#g! zMbqwuPi(?by@!VUMZf+Nvr6@d)mt+KytV>}-p-_LJ(G7!#^`_xr58esfpR!HRdc5J zKH5bgJ7obXhkuKNh!u8pGRtG% zcs!_sj^!5Oo`J&mr8?T-C6%-9Zd~M(I)jP_hK0s?b zQuC?JRgdBF)BujY0H zAs+^R?I_%gHHq5)9-u~e_YpRF9E93U4Dzi7j)#{gnNe+8H(dyMSdDJg-=mq|JNz-~` zH^M*P@JC0(*?sz7{n*{ZWMJr~Fo92F@BSsIb6gy{rzj37HHkxIn`lxc7Q|26<0ukO zQ4;537#c3Co$VEe2EEv=3L-%Kz80?N@m1gn)y{uv#ed-N6B=pcsW-0KVmZ?f2D}wO z26@vG^>rZoSuW`8vvYteXBKIyeKN~DDx)IGo3n58bsFmZrS}EKq`?)v87YA-BjD{R z!n_xVr?6GbEXj_y9*Gj`_Z@Jqo5`TcULF`W$A>FAeuh$rw*=C)MWK?Uyta=qxXx8o zVr+pmK#em3Qu~CVl3oO%M$Z8<(6%aA9{T0tc{yM)agLfC#rLRa=RPV!fY77BNXWFI zhlrZMW_MNQZu^yN(k2V)`3pXx<r}`=MaKz4 zF?a{)NfhL%ZUMCKJg{xniKo&iIC)*RKNe#ATuzyEE%QIVUP`%|iu_@@`r(d+sDHlO zXwwrzrT*fWZtv7N>PshW34LJp6yb2pZ`O+VBeg^NI+c52;}9L%b^LffIJ-K4JE~T5 z$o^&ZWk~Z3w_Gxg6kwtM^uMi==qmD-*yOwntYe+nC`0$&6(bg zD{nY`U}$~(AzwULy8a%4-29f1B4x)GtRP9>xMW155GWFy_Nk{L^U}-9ckCx6&alL_ zNOrvI9F*g$PjHbDC^2Y#eafAn7S}PoDf%5>!V&y6CP_=x;=vQK(eEQW!wp%&{Vbfw zMzYR>t_7NYeo3xOg>GCiSCm1hiJnM@b5h-EHSg(&;%1ZUu?6$-hxG$-J^2Zq^;z@1 zv*}IGhKCTm1w&?ddd|Usud=)I`F9=WGc9=MgNgUQk?6yh?-yl-4%RR1HE5r1zi{v? zMc`$vi3Qq;FVStCso~9>u837#glX8OGlrDYg&+*4A_!(S;?QgfC*hVN2Kh$|RG|nE zGkDr~1e0pMN)PeROCaTBt9Rd`6CO(6D>siehjA+^#ZY5w%9mzP6X21WGBcD47gbqK3RH(ATS-E zk=uSCc@F;g#D|;NduWd5wwch>M%Dq}w(i&|1?JZnUe40IQRQM4(^Je6IbKvf$4AchcWkrqC-y>1`cT4}F_xVaS*64`q|5*K5KZ4L#xQV=P z7lY(C%>Y52T$F^iFmz=ULwW_^T=%aK0gg7FKNA>I+aO3j;K$8S7>LD3NhqjW0?OKS zfF>fLoiAo#VVa7PFWYYx1u*z+_7qAxP3Sh7kSiMg>1?~v5_&WN6#;vb2a`6LC)vnn z+}*vthJfJq_3F4Qq8fpXzAHGP#0equ)KLtwfagsgN;fx&7sz-ZGH;1@6j^mIg^ z@DdI};4}vL+6wnubX^>&BMwEt_`A~%*Gf@b=L!dLH|i>2(`)O$;gzYO5iC#C{;+0( zhsBfO!uqXSZ==q)>rDu(Lx?X7-ozh-vDs78(w~=!8hw*``J(un4tKy8X z$QRlHvzssU@dd0_)U%UWZh9FN8nFx)FOHJ#vJz6hm-Fa+tr4&idgYslESm<&Z!9YO z|6TImh!iDu7swDTZE{eVJ)*?*$P!d=BnZ@1u@ffXODTJkA5$Kqrg}^O-Z>#?bAy9$ zbbui#m!-L_=b7VA*-YG`y!!oV&7?>|&i?mSm-_Ie6Bgq%ri9YL=vtVxKD$slvja<{l**`d^U=qoV@pictu%0gk^+XU z$zzazJ#bM=G{j4h$*6cUVd&!kscei6r?JCI)Q)+CivBJRJ=#DJmi<6{T#7mVg3ZK) zAi^raQ%|O%e?{;0=FZF_Sx_jt+$1c&(r`l7{(nFNZfssN35Zk4CcR8P3S0LA)Y^lW z_t;#H7cOpjY=2?H9h^a>AlV7~qghC*r0K*)9yoE32I7CKVn|N`42k#+oUoIUsDA|l z>0aWHUNXUGCxI4Y`~;UOXyA9W z5VBSRoZCaaca;JT(C?D&YXT+Tahc4AK4Mnsuw|)j4?T&9+(r$CkZw5S%S!CdG6pO> z#UYho1mPBJC(I0jDjP-SVF$4%8t=3)NIAvx$tONV(7Ech)5DY3&~mH4#)koWRAZOI znB`d6@5mfY1o@*Wqk>5EhqE2YWFCDw% zI=3HyVbk0gTyk*|$# zMHH}-B9)z>xP=GF3{C8R4*Qi~GR3d>3@X3m!No=cOhqz4i6=V>=5K`eYR^S$1mVmM zRp_(vR4Osqngq|xv8s+(U*S7y z`Z<5vxuN7{o{;TPkBTTV2Aq&F!xe4fz_4RDN-i?6n+CI64HIBaoP#g{%W=vX;-z9k zz~-4G6kG%1gJp=?@{|5OyS=mbVNcOzR@(Ya4&emj) z7JU`hRMI}zs%c)k@pw1D$HL9y^mVUptCHwdG+4IDjiq7FQ_>GxG{Vgw(l>c@LPV|B z1`&jdD`F7Khy~E(m5mbUFbAv}ISJx^=qeKt;*m&@0OTnO5uMSbR54gC$Ph0@<)Pv` zt>B7U2Mq22afcEF!gjaejt%Hp7mI{sCUNDRxjUnZSAqW90;*dfC8rfF|l4G=q#kV2U zJ)SFUU5)HkIq4w&*cI1#AVTcEorSt*Eeic^cZ4FUZdmgS#e9wFHf&v^8=BpnXv3+UeGOPXeu`pE8z>0C4SuQ}Tx1Vd(Z~18<9-*X02UP@gxqfktBD*0LAzQU zsv9)}Bqccs%WyCbZ{sLCVnl6)Ab}kZG3YoOjdZ6aPD*eRRzHH|NEu=fR5f1zW@6Ir z*^}OG!`w~zAqRm%)3U;vImK2e9`;V-ZBf123S-Ql%Q}@Xns&OgrVz%S5+{MhkXEn$ z9UoI0UP|Om8ysP$zgVgv@d$OLClly$zX~B?8j_c30R&2#0*WPBs0}kQNDsz5#ROL2 z3^{vN zButHI*oJR~tA-VBhWZ=~`)h`&BDKOz-4*A0r3fYQmV-bVL|3IYN1e|Bft*oxf}tcD zx#bF%s(e(myD-#c=LoGuL76{tP{D99QfhLkN_q49)dRXA2Sv2R8Zq{-LD|enihhnN zhyV4bm6@QCbMKWm2q(Op22 z=pNyYb5%0H6;YXq%%);c2`dMo#srOYgX{IrOT?q7G*p|mF%VHK0XbW9650yTq&Iak zgf&hj$vi=GU;^&T7H5VgHBG(MkpW8SyC_mj)7bL#<|SxB69_D>$}EmSi4it9#~wE{ zGu3|3fyxHwu-w>9At*2r`HbuMNw0vwz?0raPvZ{ksOWc%8pQX&9fv=%HlK~F#X87I zHP?5A`e)+`=dC%-jr{$jBr6f;HgZKzA7qAJIL^@zt!8+FQ$2gG@i#a3M*Dv!$1P_O z-#0n_u2NRyZu<%Nt74UIpB282JKH|)M&J0bLpoaSwXa%SxJ_whcQ;inH2F!d;rsHk zt-BAtJ&V~j#%|P_oJHsJB_57)$8}Vl<=CiBKR2y?VPOM)I{8>;^tMX+F_QvKmW9Oqi>=s__)PIgu?3XXJ z*Nc9SIG}w!Jv@qt;KPMShidgY&0j%`D%NApsV$3zi*4$NE(D)XPhtEa(XsR<>X=UF z$~7IQ6jV7)M}y+;H+x^Pp-&ZrzAs|V9jy8?G!A()Z0wgKzN0x2-`5yUt8M8$IE>Qk zx6(8TWn!d@e|!5u3`wXzoL8ZR#fJU6nD@|bkYfK{SLr|l0Z-a>f8bV7kh5OW^7dzn zf7|K*DWtC5dF#l^*N=3hUVGr^BHr9yHSN?g9?;=UN_o$~JL8DosuZ><96UMT!afyB zQ$3~ji`L`jadsAR1#ddBn+;B^=wXlz4-o{5+X%w!Aew~D0mD4yh<9hRJgJwX_C56b^)4Rh7`5B?^8FDe`B z4l^&MDD=f<_1wx45#H4tV#97q`!YW@k`8%*7zBQ4zutgDF0t1q_=BhMh;)0%bfa z4zb<_@qvi+v&=I_z$U*K1Q~&0(b~jTz4Gx^m@A1-v@ZXwaEoxQvRn8-Vfo)}4)#z} z3AJOBZyABU-(#0zA8YQ&e>R24DY&wQ1NddwV`~u6M<#o}Sc#%^K;TnhXutY#)gS{* zC+k7-$~{aKMF2y}hOOcoZ0rR4R17lp7VQ7A;-ap7(O%ZI1Y*`DA?hCysO>Bo`Hl`G z&okg$sk!EO85?_y7J{(aU7UN!I+UwnS&@G|AC{8wH6|**UKrvJtnW(%ii~Icu;G_3 z@)0Ba?MFS|Q^9rKWbB=!ULk)WLyIq1z$SPccP|Y!g*Ab0VTB1^aC7r*Hv{U{vr!W7 z&4Km}*g#62__Zz%PTbZa4zpijd&!C*&{H`Gep=|NOw_X6)jx{SfSR5I>W2k8DwtRn^;2)vbXwMU{7C)rG`9i=0ra%E z9-kBCo{NhtX0^?yft0pEm0zdFi*KLyKM6C(U1+|FyU<~Tqr|}=81cmYj!Q%d%zyx2 zh&a?ZK=S?)kBgFlje=W}Q29P=I>%tD)@*T|lqB;o*a7Gf!yo}gNfwJ6MT|*r?p;B` zmW0*nst%RfYp8OoOJBt;wd$kis_C-0sDJdCox_7BPQqq){@s%^Q+kb30&IpiJ*Quj zsW$8c!r)_4*&9>5UpE-GAOR2MZXpQcU1Ctw4Ggk64kYiL!D+;+5O;a6uqnX-8tuYV z%{k#ZZ?h3CzZwC@OK4KV4H<$3-DOGn5i_7^>!0m#cz#V@=&OxiNu$)%55`#JMhqii zTk`b(CSVhOY~jnx^rHUveqmGOV7W8?eW@uBo-kYdZ^FFJG6v{b10nndkRqE1;i@D& z>rjJfKrl?n=7fp$_$R2584G}^NfP>|h9F48GC&n>wVNUk=M_#us|QFPRKRKcWG4>C zIaC(SvW5ACd*b{Dn2c*`0u$;g^pv;-YZ;P4MFGu9Ng0oQwv z$lYNu_fe1iEx7Aqxc7_E)_@MEyCe>EEU#0>5$Y$W*0YJMj^N{q{EK z-igTnE)naKVa-iCd`y}aMGzL15QH5*afrc93|edFB(!&-Nv*2j#65muEGz?R*F~VP zHV(qsH4O66AGloI!%;w~Z>(Asz|nm|swt;yFCSaYvEL;b41)@F5{peNWftUY37r)_=zc{U9s%f>NcwMS+^LKAKC;A3RfL41b$jctpi}>Gkg3$7$M)Y=dM#W66*2UUT*xtB}^%_;d zZjMR`l;|(RW^zd!s1mL?9{Y;Pe?&)!sNHLaiwcI91eT&P$d^`N*gq$n>womb?;UBV zOc-pu?d(`*zZ$SxH% zvlzf;JqOk6ra&CNE>C2}W}#TW>H}=S5)dJugV4$ihIKVZ{l#NYZLT)3{u66Y8cbSXk@MUyt-H)hqwG>i1ACKM zhLVpeI{Q>EuEyt~QrP+nUX>2ss~vpLzNe~>kB}qQxA6I2naKp^HuF%?axiwTixah9 z8RI&m`H90{OaV!GVaRC+L(=gkUyBzd77G{wAq_%M-V_JHdJRqL`2(tiwwvR%Y$gn% zDp}^aaXTw6@cVazckaQdeU1q40?R5&14d5&e;)Ds{Hp2DlJR)#4-OV?8xhFl?1Dwu zs4`Z?Mn+)J2pBj;cs>gsC^^pjBMnH0+r~EqxD2_$jt%}gE-DH(7-sc>2t^45#j{kyJ(X0TI+-v zN%Z8!3d~{4xj!dTpNOx=He=-@=wj**}*^iwR=QQiLOMmrna0qO3%eL9bUX&Xzzc~vf zJCd^odMM+x;X)}qQU&ycf=m=@MXBTfA&evI4H+z15cw77Q{}#Tl zzzg3xbvIAm`3RGZ+<(%qj@(%_rP3KITuWAn)uifljQC|J97H5pqt*56R zZA$s}avr!Kba?D_0)#b#gvi`ih?U+bX5^2149H$nu?FpTNwmcJbGT-g4t*@=VBa-6 zDaoL_Z}QobpODcHu%Y)iI&$CZZT@I{y7PC%w_L*H_R*XFdWHw}K!$%y)Lg@|%8niP zdwGg15&7qqsC|89Lhcvi56NMZ2?KvuRLfaRLXS3`wMSBaWxyFQWLeB#z4ajEk>Nm= zp`p456V4gIk)r{=MRIUZ*st=tiVUYm4;Uy%U*Mn!xiek7ipUDL1($}f@6FWPCy->jnC@r)I;2%qY3@ZoLwxIV4Ev~f4 zi0c(Y!5%vfc5+h>=-88Ab{nfK3au>&o!`#-@+O$Qa?Q3Q%)Li1s!CsY+{$xmn8(h9 zwE2&ZaX@Tme`#%<6}N?FYNGPL{x>J^Zpj<1%zUk*H$`DhnCUU?hLLD%HPVhWDql8S z02!pzfp#Ph-fN^=$#~=1%O^c6_9V&Ss^Mxv_4a7ja@2JJYPYl3!P4KkhR<)wa7{RS zyq#eAu{)yTF(p!s(juVib)KsAsJnhMC?n;Q0OGw~6Q$Jvds1t%KSS{|TGE4*O9FL~ z@h5k5PyDWtj?1OUFT8L5bvf;;i-a*@{#-KRx@pmzw7WWhmm<%SYKrFGcLA#vxfK4V zTc6DiU7FqxoH|bIVNCkf?nx>Uv{mj)D0)m`(=2M|l-R8OV~p(e5d{GCXUZWTb$Uzl;-@SbymxbF{d1wAivLr|B0F2&l= zcgf}41#8HvXzqeR5tf5>ByPo)#KyE1`{Q>m<@GsL^4Z9O)l1pR3D0$UHMR2pZ_Byu zOPvt9HM)ozY5FmCo>rKAD_nV#$AEvP<=uzj>6+1L%A;J$(f1|1&hXO1TWN!J@Vd@p z%Jh)`;j38IzLG19DhZNF`+6ZO#JmG^XsNZEKIqA?a?RH(X^ncx`*#$&JiBT4!qpn7q3$J_J#n;IsRCKg&T@+!S2KWByt(a73j@a1T{B=)W zAATOMh8ws)&HT+yxstAlXd{}6G=@{+8eV|Q{E8!QH*X4HgPgQClAd?dh?rTR!Wp4t zFrLi+yZ>V@MKnyBoGh8OU^gL6Zi92I%0imFG9XQERFNjXse*wp>Y%bY+;umyE;owz zN1d~lOVhJ{r4yBX85Z1XbWupV&Bxfd7ahBkAf- zh~-VIFGRqX%r|?la`~PNG7ra|Z|a(Yz@qjN(;`LnJmx{`@?jG~>F_AeKJ^4IO;&=h zQX*+jawA+*5hQfo4NlLcyzE{Ee6%*G-iguN1IK#sc8&7rh99XY0r2{u9Vh~?AAGSM z_42z(>IvK)-ArnEZ{zv6vxDV;%EyKMTlDDuu$LEDefcozsJFnskYdk?`f2-KzWkbu z%NO3{>?r5kM~V`RH7b|~5$A0SFJq)Ck~xwEy@8XcgGFCPh3?d*w#C0*O`q?+7N|0q zyq<70D8uDs%`SCUN~~l+g2^p#tq`vI#REP8rDfL^R<)}%1gXD>&U-E#xO*w@sfM`A zshjEMsXN<(mRzxZoXL-t(1!Jwd2vadmt%x&w@M7Sd<-!ID-2*+Ug%X;$aqa}^V#p{ zsN)sis$RFyWc8i=O+Cj1%_qj=t%CVvdeZ~ z?od5%i6uX;J#z1UCdC|-qWD=Ko9BT2!Oo(jUv{F6yPUk4o@Qyl_;V1EY(8)yDvI6q zi-EPH3(A#Z^BM^9y)I3qsty6nGRf7pT5jowMSOwpXC-G|u2 zft_9{`}2mMR+a8hA6_qA; z8A*{@ML&ctY!Cd?%TlJQ7Aq%!=gDmYjvWW6Pe&Mr))TVAA9txHxOuTnE&gMpyCt!| zstwBSPE+O0Nm`b?%6j&aWKqd;Yg9W?6+y@Q2_s?|l>01{e^>$88i5|+>$gzHB~~ko zFErMuk-aA?HzT_*2hYf~#uhd!A{sy7AJ&NGBz?_lf^+;mXI4fQSWyNiHnW6ClfM_& zaM!E&Uht+!lN6=NyXO`&-2wZ4+ePrnF8b2<3ijVu9EI*YZ;n-nSAV9d9QkpMog?_w zWqE9hM6ig6TGS)oK!Ds4U$m&ih-)~5ZXQ*}i;Jw}%5% zrIi~U9k-7Li?IuBHcNV>Smubk=lkV#Gv+;+L^@KFtTtH}-fG6u_Uq{6&ue0ZI?4w* zzWWX&|B%m}pW?3`@bF-@-}TKo9bu&t8~!&SzvKR8HD#sS9>QPi&K~Tap%2!$-IXW( z+L!IQ62A$5QTyMJc}79lJAatM*d*4W7uiV~kRffaBi=0u!#gX9F)aBH)K@Nbq-vzQ za%w;>Crjm7M}rMVgKRfi7fmA(4@4KF^xA9|pCnx{s>s^<4-Ft7<}BlZL)&pv(+ftT z3+s0;GAu0li+$&9i{(zSr4=0WAIr1Qmpw zzgS1!!T}#+LH9xU-(xS?t&^sAX@ef@@A%F$e4O}2zMC$6L?IiPlE;J?1ijdPAEMrf z$JUfH%ymj9ZH@>HOh>XW97?&XO&D|bk|)m1b-zg3{3tcx?0as(P0U@5Ez@b+L-vu` zx$Fozwa7R>@}1a|k0K2c=j`$4a5r^g_mx&Vr5#@Lip}3Bsdg5$;@8lc`_SXlZio66 zq`px1S_i@ndNFZhLxf+UPI(1y@f2W}o@nrFYmg@bol4&Zx}o0&j+|Ol4LQAiUE_Y_ z%k$RVGMTvGXr`6#&IWJmMobr9qS&{iwX!2MGDJKrBx}3Vw!y!nd67}u=3~>9F4R=c zJ(}TnFp2#&O`U#zpvTM^$P$_WvBKP{`AF`LZfcOz@2}3(Yww%Q}=)6 zm;Hmijo>FH+y4^umVc`0L%~*qpQZ`%h~79OhB;-LxtIS9sD;Zc1PW!0`@UiDLJBPe zinyzt#R|o4CRq_Z782LB9o|hBtW@@7H0db{J9-S*+0&5T$5>h^!D}rGZtd551Y4RC zH+x3zYUvegj(cywY+7J_|2-c|B|#{*I`Y2nZ7%Y84V!IsZk*qltp>>Q?DCT(j=8^O zXvJq9&(jOD9-0e}R$%@V~OvLDoEU=78Q8>@@ZS*ht<5jHA-IQNl0?FdCT#VkLrx}mK zrHaoR^851yizN^KKaQ?CuIcZ469O_?MoS}%Zcv&rkY=MLr8}e>1VsCvN=sj{)7oosn3zynV5hx zj8&czG`eND(!iVmY917mejwvzqJT6)t8s4{c>&vf4UoFu1A^5)Tfh4c=%-` zLyRaD6=)h_qB*XvZDh`_`Akl(sadK5ZXqFwv$FNs@jnu7Ib}3He^!*E^1NJmLwB)> zIZ;yf6JuvW$2-Yu=j1@eJtFdjNfpC0@k)+vjTcG|-5;O%e!{r=D;Itj!qiPftKoit zjqmzhj^a>_M17p|W+JtJk9|L+8xj|hG@hGu7zHSpYkLga_%_Z=ywme~nbBbZmlOxDh)bwh5|%ZS zICMqA1~BaF9IIvN95|#>Zv>HaRsH!m8X8uf z!~o9%p}&BMg);*&IZwfZzFp9ILL&nhXqq)!@#(<_t9FYgCvG$}tHLi2EBQMnfV*!D zor7?$0Kisag`b>$1O+|UNEJ85AG?xyw%zHjr+Ub8UL}bMU{nq}ykeE3z^KEIH}s*T@A28c`v2&<>!3>zRO!?>Wps5=6rZ)?%d z%O1F4;M47g5}e$HvEV03UR_%dpJlxQTnh@Zq8oj&;QJBA~}}gzq(r0KUr#;u^Y|)Z_BKg?GqLqdzohv zB6(8YB1XdFG@C`#htAI4i%M_W4|INo2X_gM4v*u2ZU4mtq%VYnrF|LzM}#ML-@{Rq zq0sGFdZ1=tIJo%|A@GeG^vq`(cnJz@7y@2akQZ{Mmi+vH{NR@Q^CPm7Dhjpr4j0bp za+5|D2Og;rsQ-`#2ku&P$d9wib?ZB%ZPnUUGbRX%n33y6_<`Ebehya}x?KdyN|M8) z#Y%Ihi-`Yw$LoWK*m1$Iuam{l+ka;MP8t)WA&b$rizA2g9b=4?1fy*pC#=(VJZwMh zZ03tbSbcdz&F`4=8}k#liqpxhP{nB}Vy4+_Ttw9}4bzSJ^{}HK6}5`Y1Xzx{J_W(> z1*5!6!q-ub*2yWsM)BVZ5`=9hhRD2e@M8-(X62zP)>Ibd$ww;q(W$uTLq_>RAGW;?d?a=sl!cUG4sLV#`V@025ow3ew0V5RGOGe!n8+<=}yReVbz41DC z=s)r|vL5SMS2a}~h;}Xuwq~6i=taFw?HfNE{aYiPf}~-pbp3D~oKq=lz8bqmm%SQf zlKO=;-kCasG-%)D^MX%X;rZF9>iSvT`MqaY(Me@_KySoRHA(O6w9hBEP=1u}N>Bmi z8or#j31)c(9-X;! z7Y(e6Z#aG)eC12Jp+oLc;X&g#aS>d+)ChvQ-q~-L0x8b+V2rxyg;RC5?catNr~F^9 z-q=+;IV9LXM41@mG&<@uvx+k&6{Vj;MU{&5si1}jSODV%x%)gHgg`eP@TEjJ%7X-Y zJ@*2b(}E2TIS_$o5118XvjZBYZ!|N zs`;8xdJgs7BqN^9UW|_2jbOr@p5c|~A-$tLA?5V8A1LoICN&RY2C;}qHR5<}VX|+t zIP`LaN&6Q)L|d43QA)1Zl!SDCuvc-nnQ5Y*0z%x3ll<02G9M^ z7oFIzkxH>vX;3BShiKhgd(wA11JP4_?`8T=oC#Qu@QjqL!2vIH{ivh;KnbtV#8%aU zapk3b3dLZOA<6#l2Fsp8J|Y;ey!b;y*l8ty~r`IUYU9a_V!g5p^!*3+4Nt(W1{Uy zOp1l<<7!vMYpL7_<*Q33k510$B}aS~Jfok#vu&B`(YGXCZUiiNbCA>-8c4fw#BX)d z`Qopam!f3zNKH>A;!M}5=tEg8*AB%d3F746b-2mauJONb46(Veh3l7AQJ8w;N*zZs z&mr1e30LS&0pfVnw4>2nAO;q#@0M~0Cu}T>ZKTOo^y=8VIZ+OB>AoUF<+L?FGRx3^ z$+v`wF7_Yd)tn}b=&hmd`eXLXo8x>h>`nvMA6t`T*C{Pi*DIw(q%%a~Yk{>R0iTJ} z$M=ui?9%HI@wTbu&A+-0oZ~<8(=$TR5W)Pni_1##!1EG{t&_@BhVjQ!m)0{$NwQk7 zwH&6Tgv5+KVP}%z-(|FkDegL>(W-RDJ^gZ0}GeHinJ!aBn6zow)`k zNZ1&x>xM7)_S=MOWuEw+3)YkgJ$C;V&Zv{WjlUQvqr%*B2`_07GdRNp ztp_y%+JoZEVRPU^Th$jLmd`P8wu-xG#S9%^j*X7Znd(OU#T024#>n46jwmjYGIg=D z%RMY%g4)S2q(5LGCV4UJWhDt{*Kp-#O)$!nSTPbDFy;1)Frb3Xy$wHM3eg@RUkdTZ zY`wuEmPsPAhK+Y%p;a~AvUQ9AQ51%5Tp|Kqhf!i@9BC8$0xLQJ0pL`ID&m6R6Mnvk zDZihyV}3@uTYoXni&^y-TBW9r9(0}Bx#Lj@`Uq$VGiXjc>Y9ZQkrZ*@%TQ;b-Aw~z z7sZ6zjqJ;8A~}J&mngg(5KzBQ?ujUgSoV@45Z~ikU3c~`bo<47=y8)BkPj$Q+gK*? zQ+acRQd7Y=rQ%AsEdn*?d~U$2V&z#~_qp7)SE0xh4{A6S3DR}Z1iqvV2YZS`=Uhnu zQS;9A3;00FZ&n|hdF3qBJfX@{)If>XA5qjC8W!++amV-=6qonRWNnw%HY@EF|C@cL zO1uvs2%#|O*>?dzs1;0kU?#hvgSQy^E9V*SAwHn1Va(k0wCpH!*TsH`zq0QH`rHi< zK(iEs`dkWGE0zZ3dE>xeT*w#2vi{n#CkE^+M4*W5pr8ptV5Imn_~NkKnt`web5*^8 zYg!E0=ijl0?9MSfF<-A0JhA2i>-eltG!2bF)r!T3-}C38e%lJ9RA$0~`W&!PlIsW* zllRxDERmT>TJGpw7b)Pz9Um^-p*k9@@)ilLk^xOQVFLDc!%>&)q+JM3kopM*d{Yzg zZGjBfxex)4D@C8&6{P|O^NS8El|u$wLd*BtH(KNWnQeT7mv{CSx!Zh`x4c^wXJtPXgb%q)1?x3OPhsXRh2+X)*m;|j3|CP#j2;RC(2zI%}J zmMeN@EK}n749?~vzve6q{k?_(=)90$3&#cpxsL%SK!Mc(IiO-aV#bSf;-lD5V+b*S zG#Bh)4!Ggz6&o(eNDyZUJN6Ar?po$4{`N!l;3_a8yhTE?Ql6IEAwdz6-WXy6xIFZW zZ}{MZOfqw!K5K#wa#+d!wKhVtXv3$cRK+6Vov_S0MZ5P5T;_OwDh>bF`^Wn`Uv6J+ zSf*rdAFEN=EJ%E~ssmv83rb%5c{i+5oiSTcaQyEUXWUC9v!L-PCHV)=GXZGgR9%0i0>acpW?>xPj7C5i7bjg+JPmQDI}QxiuX(P*w&4C z6@Q3tnR>l6I5ziI_s#mwCr;jz)c>HgY z>lTRKZv<_9VjGnan)yf7KeU3`Z=g?`n%WC7TDQY&vX|;F^He;=JK(&*b>w|0qfOD; z2;2Cs2mce|ogBm+$aeI@M^G#wDTqqU_@L(FhVb0ph9sBTh^a=uufCnZzW`N(SD!LJ zY;a|k5A>*nRMaNlk1g=re5gy2)nimLk$9JNU&YAQ&>)^7TRf6%d!9tg;VmdaOrh7~ zmty`WT=ZvCX4U4xT!3;Tgj;a8vlOQ{=*h;ghfObDU<|?bCeg zkW)X}ri%`?)C&!2TGNHXtpV1@zn2S)}nJ4dePYwBTAD+q{ zYk%H$aqT^|ZHL-a#AdcW=~O%(DLwGFw`)J}b4C64u)3%mLMW@|Px1X}@7trBn*+L` zU$(|v{#KF%PR^R*!|M3hYhB&pzk5%cuUFj0A?Tl-(g;Vk;89i&JiygiLc0 zC#T8aCT}F5uNBP+Sx)`Bq=Y?wu`)yEPOPeG*&0MxwM`uE|8a_jxVYH|y{Z&DAyr{% zvk9Hax|kDeVmWnj?8~$((oi34_`dmXzKpi?-@C!xMycGx@{rLA>~7P!u|}yuoxw(_ zy?3*XQg^VKMkzXD%!Ilq-cjvoh?UpZPra|91XX;#`hS4|wo?vq@Um@%pb-F`&wz9ZRQyMwWd*_ax)bgbQ6jvJ5!Ki}6A>+v z)sGn)g{=oTT7kQ!RzAs;eZdbds$@U!cgz}-oW;GhEBUz6@^Y-Ux@Yrkvy8J5=C-&l z-YvoO$CXyhF~+amn{R!z?2VMZtX{zIwOwQe8xWJIj942`i_BE5a7Hd9%^>2qSV@?s;ovxNVmQ!oPyc zKIAJP2YWu}Oht4|%0y=}KDIQ=^>wy=r`{HO6uR>RkgR*$UW^`rz zrk0Y?25HXzI?01<($Lnhd_&AcR)UD_1Z}k<1u4mJP=dggPx)Jsu5_jx zJ=JjKQX?jz|Jb7AtDdt+SN>3TRI=t@47IUbuX<}E);SQSoWaFpIW%~BWJy%vYkQDCioXk zH}zKEBrN?^VaneDO!d`l(Zw~-S!}q%e~%dDD4W`d+DMWo-|pst zbc}aql>7+UTb_RL1^K^ZVU?hRWMo)C!mSeGE-2m?x2u7pzctw#rqNO@%USm@-g2*s zoj)+vME3e1jVMTxyDz@+b3;EyJJ+Z{+Uhm}^%PGtW95#Qg_IxN{n@%Y7*ZGw@%y9F z6;4}KnQn^yd7s*)mADX>Zj4rVBISH<@4whD;cYmEmxr&j6&9x^2gT*^+~6q=-_@r$ zLytUFl~0|`H}7+vDb~|;AttVyM1vp4d&aIIy1DBrk6QF>j3%E`_{}3yLUo??hrYKX z<0VjVFPl(aDHtBnoAbY}1t_ny@}!s>6ZSuGSEag@^1xd}UmX>X#GEE^`xECjXL+R? z>3&~llP!rz4qCTFpDX5mr;-CG<%3O1cE-opXQCc*r_8cDwUI3;w0IJ9w1Lr%=2HEM zRSB(s%G(IM`84{kxZ@=g$6HcR%i)M)B-^j3lSezdajQ97j&>0ckQ)FX9|!{r=(pRY zbugHs_4`N+)^hoiV#5q`6gk9O%Jr#59JIvS4VvP#Eg(?Muy|M%VFq4rg_@@zJQ=<| zrT5nIRy^g>(H2JU>IOZSlOM5|Ru#z{>EweTx?dpEr^;bf5ABV4z7RmOu- z^yVb4&0xT-b%xXMhxV#<#sQ%KCGFSjpQv&<^<_BZ>FB$ieuSPI5UE(vSJ&m0*Yy6Z z@+XSV;Y^P)_|Q~Z4Z{HLrs2VxZsaVC1)~cMUI5vrF>tI_IXJ)aU;+vW!oxjPpxfr! zI$72G@YY<=kRFGssj+etJtU5iJ!%BmMi+%D5yOSol+eI`)+r6Qybus-j)8w+Ule|k z77O#M{ha!_ZR{-Zb7ZduvW<}h-Y_l4jPLST9T7_gUq+7_`VRU#oeCI#N79j~j|F^D zw|wg$Mp;jR2baN-WB&RY)XrVQS*(4zA|eD+{_;}BJ%iXSZqY~N4I%k-+-o51cRHZQ ziJp!Z4q?m+Wl?(&#juYqM1iL|XB zII(I`m&jY{DAb8QE}Vyg8t2CRH5@df89{5L+`TD?FEIfC7F13a|!Wh?t%D`{$xa zz;AvFr#4;j$DTFWv19!DaBkw%wLtB6*9z7WqG4;wD#f^#Ql8D2U9Fd9G)w1gRix|F zZU6b>R*YmE+U=90;)a>%8B!3*BY*VF9Mr+IPa+~BA*AW)!6s%E+&vGyiC(XEFwQDz zAr_9pezlE%DLgl(`J!&EhLST4Fv*u9;TrCCl-Nu6^O(L)nm>Y#fbQH>V0ImvrA#=6 zI7NhH1L2<;JNLW#1NGiK+QU$iDT#_m{6iA&eUB9wu5abX{AovkYhtWB>G=&h_Z1;!bpN zGfx*?zn!a`AiPIM`!^e z{M-B5^3$HRi~jyUO|kq38=-40eJ`EMz7;jY+Z|W++UM2`*-K9RS#R&%OcmDk-u3+4 zbD;^^-O36ecpu97*Sj-o2bUT)_o>#_mb^2v^+Nh$mI!3vY~HcPLF&^60>DH)MznRibQ+XvvluGbX8h?%4`*LW#k8`!3RUM z)p0%2o|c}DyJd~n^*H?$+QnAW-MB80ubVxhM_*c7p@2xb)wYIeC~Sb|r%$pjM{6~- zw5gmXrmO?v+Y0bZM>R}JcuZ@P%Z+{s1`l)#n6_gGn`UIYIuT5=RzC2TPA=C z4iK75&vK|$7m#kq3C*GUTDKQq}>+}EnRuSTcD{+TFsI06EufBkJ*7^?~)3l@~n9C=KL&s*HEd(%>f zs-85uw@M-W-KPBSS*`2@Oz3S*3PNIk=8Xn@pWk!_t)#xF$iP)^Ur*|gmp_$CX$ogf zVv2+Dr)7^E=|s5(SYin3k}W^T|mJMa?2cYcbybIh|FQ&D6u6Y8Fj#2>X^ol02eOWhc}aRF>0Cm{+&X#rLmP&9LTD{E4s|d>D8EBXx{UnT^cfz z!5=J!Be;GqP7=FxSR>p2@x1&K$e)DJOGy6V=j}dSlryzmBPtQSYcJK(UE8mSr84c} zuFBU&6kv;F5-OQ#`QFa89nz!WU~N!)-dY({;v4=4H=yJ#Qi6&jf!I4iWOKe=MC_YL zN^EFQA;7_!$7wA<;=0{Pi|Q?H#MH+$VF#}}j?~YKt zjf;@yCX(9$ZV+$b&s%2Rgrm~eOmp41-K%NGxm`m~LeG8R$w*b3_W|(|XD3X_u13W{ zz2`nsyx-WUj1bMdO>$*HQ&>AXyOh66>W58NfNv=;RL9f*aVz4R-EF5I#_fK{doATi z_aW_{?^AG{(H{)}B&DVi&im~#ugyFYLi@nFU7M5Kt7K%Q2a}H5%76-xyW%&b!U#Ea zej9^{DbD%M27YUrKA;O>pPqfPb9^M9Ui|OOoR{@uV-TrSoVS`^{!9G1wEE)=QZN03 z^>?!8I(Dj`i|anl7{1eG{JRrHzcWs9q$kTWATMwDYWCs%m+(%Lku)Wb3)MvK0fUsS z1-G4azS!NsJdu}9yPjN<8NG{!52VS24)@#^7P3523gId8u_6!`SIk5=W7ui#IoHus@znabD? z4`rd;iR+5?sq5zAqLZTX6!GZX4NSp?LoJ3$gEyf5FOFd@>ao9QH!#Q=(^{&|xr+y20uAUw~4JnEoeAwhWVdtFmHcXA?n!x0aVW zZ1yG=%};t!B7Fnnk1d~yJ~WgI^=PVxjJ&Q>=BX=wJ?t9v!k^rzye7M(wEx!Gd)~}z zzUHsxtL^$~NV@Rn3pzcby^q=17cYhaEL)$nP?t}Nyp080Z1}Y3E_`m&u;HD0?e+1$ zk-Z1V0rJ^44L`@FNF8=0A5E?yyMVcAfN6*hmhkj+;Mnx{XeWJSRSQsW{58Hw6|$@B z4X^BjvUMj>AiEM4d7NRETn#x}xhNeUYX@}2^RXB*5%359 ztJ~bsgI?x=M&rf=Ai(t1+gDb5q-#K-(NfaNQxYl2(h` zpIx3?PgA2>w?}nz2f=q>I+0e^(H5ZD7GV2fSj_7Jh^$Xc-TI|^dj%@{Ye!#a#2H5+ zR1N!$l03TjQt9Tw`Z0Ys%~qMSV!SK5Xk1M<;cx3%sdAhSg2@{Itnra7d79sqbe`fj zUMDu*%nAsp3_}+c?&^_GRy|TyuPN5vn(2;wNJ$>e?YozmE#{%Ag>32|WJA#zvNr&u z*S|06VRyIM%C_MW*~wR-g1C)JZ(*&ysp_u&GU(EkRMX)@JRNPJW_3eTNrkMrS{u|? z*0CCx3z!_8tD|?)o$9_cT$jVN(`STyAfZ#a96_O8p&rLzK*@C<7OB)(Nj#-v&xIY^3onb z)Ao3a+dC3liKJ|qTkO)pe~;$sBuiScuIZ6Gx2o2}FC5Ag*{P<7{BZp~o>Tt`)EUEI z1W!7pwKWFg=sX*pZXH-do!^L$=hJQPb|Z~|9N{b_3C~wfY;GeBv4d89f4R%fJ~1l5 z1)d4KXWZfJ*-Q#hwe(4`uX@E!KAqyXnRLHnX=|_+WNjJn!|B_9^rE>wsQ-@8%<)%z zYrFq0)5PE&iupCpJZ$D461G?J&tuONo5VChG-@Y?8!Rn-NYYJF24r7wGJ2dq~w z)LZpc9Nc6a3~My4a4FIp?>|L;Del$LUHr>-`QNAHIrETFDO#tN*(16a#z{X>{>Tl6 z>9@`W*F_`BHB?Eo{F_1|3}n-v{SFywERm(2RM~1Q^KUseww6+NR`7NC1)H+`A8O4? z#5+`dKO7V~KJZsYe3*UeNnrCip*gc-Im=c{tW~x&@*xQ1cyhgX^fF^Rk*8P9ALJJ; z`0Zf7^s18e;aA3@R?ugP}r4zD8U)uT|8 z(Ww(Cq>?JdQ~hIq;oN z9)?pY7^*^@Wtg))-tnk!F8N%@s0Xk$$k9K)7-ki{9I~}PC!L=3OL>?4g7K$h?d?{i z=-Lx${sq z|K7o7r|71@N0un1W~nQqvo^tC6=sP9>IdbRYNX=vPW6Bg58g*im6@*JxzaT>nl zE4!`1E`d;=ClY+dXeCs(V5pDY#FpI@z8(3MT#=Ay{!9kNbSU^}FN);fkX1t!B6;)k z#=cC}!a#c!;S=6?hcmDGq$8b5&WqI2u?EqGBD?hR5LIc-;=Zt;v1`!WD+!iN15Y|vgKXj_SrTF-3u4<=soBh55)F>3viJ^jQR#+ z!zEYciaIC`J2W~S0VK_pS875Z0C)TGcFSN$Iy$X(c@q-`GW~&YKO^7U(T)!fik!`+ z*OnU0A_eR-k69QiPb>uGfML}f-^)`}q_+-ra_k`5y}?%0ysp*4isSUtya4~hyH8S? zb*~`HZokiXzq^Ute3r@#mM<7TO0sLH-FB4Sc%u+gn4P;duOni~IB~>W>7^YCm~cB2 zC``8Nm*p9i(ccXGCF`Rtz#jqk-TIq5?cY^Ba;C|yFzOGpNehUClpl%uyHs^y{DZJ~ zA6hG#2A{Mzu4idQc-@shQlANUec>-H@ck@wac@6!)||Y3qZdCu?Dk$aO=A+%t$TaK z?)?5}^u5R}2{q0)-{$(qXRIw+Ipcd8yFsF&c3!HDJ1+*T6U#k*tG6GLecAOVQo2LZ ze0de0d|#jHv+uR8(Dq5dvhY5O8k`a|en!z$fI<%NUM#h%IhcjoRCS5VwonKToF)cz zZu9Hx_sKF{dKZ%3_0>iPqtt#Ctcku9u@=Aokr@483bgdS{xo+Ngc`fPCa4>Yo~gUz zPCS@6o6C)J4UrSui>{1ryg4N9;Tui2DiDAAZ5jH*GIKTgDUV*1P{nDjn%z`DCFQ8F zcl%A=%2Q_TUqSKi6<3L`+M&vG!|4MD|s&3+Z7#TLS3sEx6Mlqk1wW1 zP$#eIJ1!{a8Lq>eTk2zeKatl@xh$04{r;Cj9$`238CR?7aj$e4P;^Cc?1;0im( z*EYub&0a%gJq2AQ&ioI>&Ws@nB!$=Tyt_{Mk(#4q&x5igG+mg-<6ywt1-*ya(~CD8 zA&GeeU2jL2pLX)9Ksx#rej_yS+{X>>it-#)b4ge2k<^C0t#{X77YhIJ$kI>_WneXF zzhbkyRQZxCzx(FvhQwB#1EDlFq6coxi>gy{NMx8xp0w?KrivO4|@>(_L3j*RF)QSh13m0^# z?4(;cUbOQ1M=aUa(<8@6(~N;0cQ=HsO(9=AjjJG?q8fIrigczN`60+%F7HkDd@=KS z>elJdUXSk#d!~Yt&FA=P7{RRErXLnacZ#DxH7%saD(d z)H6YF^o#8K*5H`*#fU`GW&UhfHxXLxq2OqVZ{qnEGnExSl#=42r(myd;{fo%p7 zm;6;zXDyt5`v#CGo6_}<>quHYms_)XjwwCdPRq(kmh%i(GC??AR zh&svz<=xmKp<6VdG(TLxj#)T3r552X_9D`w9Rp`I3gNzn0}6VtV;0)%y!T6N=YYWx zkUZG$vDlc0QW=jF?!Rz_4X4(8H)8`#3(*1x+yTN?u;cd}qDSPfK4IN858@9_d8Sv0 zzyU^D%rM@x09O-)NbPcu2XaannRLeo+xDWGF9-^E7MFV4tYI#<8OoUKGHCGI=clms z-JVRncj#y5DA~8oPb)jlW!$VYX!<#l@ie@CHDg$HnpsLJRW9C6g0s_-)jWf`vzg|7 zF!s1-HIIoV&{#EPW^TvXjYI7GQ;cK6l<>8bjpQ-0gvnu{V)N`OwE3rOuEf$_UByqj zdg8*LV(f6&2-M|wguq9dwn2&ZDIF*^IVOOlARLUeLx0G-EA+lLU;SN8N~De-OO8;i z$tvkI`%Zv5HOyVh4(j)V6VkJL%nT#V-z;>&0)4w1T98X=sta&iW^QMnymTBLC&OUu(1Pgdz*vk#zslf5{ohzHtAe2;dP+Cwk=n8TJlBvtWfGuJRpNC7Q8r7-s02=`mKi-R8pV!nx>3t)$N>Zwguv? z-Nq0a3Gyoz1YIi%0SZ)xhGp~UCyVb~nBf-$Dk*m)8r>Ru4s4ae+M}71X{F-dai;Yp zX}1g@Yj=U z*Q0%2eb8j1>@H}*m#Ec;Y?@-{_J|YdE}SlJF~_Q8p}_+%pWhe#R|W^3@-eBHcG?3n zL+JuO$LzLEOadtH!$ zfbApz1(f_6d+z71RXliDCL#&zd$sIY|0$V-s{m-}#>VL)&1BFHgLV7HxLB z`~>r(jSD~WjMhB;2?nTbCKs!(io)5Aw7g-`X#p%+&>Z@o@x6{wq<=VvPd&JCq*SDILMw7lrutmjM*ih6&IlL;PXH1gy>>?VXED1q|Pf+@bAKuRT@lOl&zx^-aR5v$&%>&Eep*xQOQ5lCumB1=dDWb1zC-?UnB~nd@w~7 z>4M_E+Yut@+L@`S$SW9Y z{3*C82{km&=5VB?QB*pkW2C!UTyXc6Q)6}y0lmh7m7jhBNqrW9Jtq){J#WPZtg@iJ zV@2riARHia?ndk2IW#Mf4rpeE1Hbi^E4rhHMh9R4BFyXoG6Nntt9fA7Zfl~}8m`Jv zuSZWv{u7%h$Xa|DJ+{>QGLDB%LuKY3o)qA{iq72G@K^&(H-@hNtdMm#XpIZ>RXex# zATc_;kDDClE*D)B;uaCUDh*W*zy#WwW8v`I+OL{Il|2c766Tn2g%-KB6JF?X03l#} zR0K{X+<$sEnuih`@6_tQAcmD>)JQV21JYBeffFWMXJ8({Aqn&CFb4r=e14IP)~T@$ zsOn;aO3$cbYnS;Vq`}=aNX_7~3{vz<0e#sIkCom`*!elD0oBin>g5&_iHyQj^$-(b znWHhKX%43LC5O72W2FI{>wQS@(w;Y4-yXe0GzL}{{a5}Br9KJ4A0NJ{wt3zPNmq;cJdZ~{GsmeBQsX9;EA*HMQe&s!(eQn z<|+nG6dr=~(NO1gEss{iUjl=h$5yIVGqy^s3GbiS5ay_K`6BAFKQ=B5w4$s`x4U=* zQA&vwyPk1#zvdmJ`xW&Jcjr3_CwM-P0UxE=06VPFsK+vPfKyEtDE>P!zyKv*v_}KI zb|(gEu0#~^tRen*5&=IK;K5&_XEEXpeNBT27@1QQhi16E_yF*S+~Fqg5hA%*O&OQp z0x6?4bcg&eY?PQmlyGTZ<^{h(nQmZ#x_)78%mmO@kuIP&x)QC^BhL+MCDGfPkrZCB z8()JWCx_={Y5*TiaB!k>5yyXkpmPZVKvP!H8*#a{9tvnVB`$!VCLHxxg@EocfIdl& z0Y8HV>0WpOJ|cq)Q}-N@mCU9Fi)z4$2SJeGnP>4<9VpGFWn9ONw|LAo<@O~T`(B#S zDF4UC<|*>_sEHwRTtFdfGDm97#Plt_;y7Mnp>R(R&ot4KAre8ryd&#WP7>rR`yO@j4VSe2KXbuZHxb} z2ADS}jkh}LlEBx`QoL}_Q2+Tx7JNi{qy+%b!vE2L7~5iiQTxY%fd2N#q{r|WRG%7p zakL;4Nn!xK=11@wTYHoq^uItdplUuQoHJ9-V(=9d|zEw~{N5ZU0p;zYptI?({VY*e9mWC01%k@tdURmH(p0vq75 z%nAzXQUU7cu71y^wMG8%Bm-WWVZuxMtm3k&mY6G&d?ai=UiOWe+l7tjROD z#u@_pucj2L{jSCanPlQe#4>v--KjZo5lIiR_~naEVHFNCi&nJgA&TZ>bYO;mtJ@78 zs?91jIe&UT2Vi(pC6l z>_2KvD1!+ri2NuAbX_0_bH~Sq+fbp8T?^=IFCbbcMHFpO$rbIsfo6rg1hR~N1m_4q zvx4b?9xD?-A4=}c>ZWo-SPo)zrv`3Gs(@LK{K<&L!LI0V*0_gjy1I-GBV6Q_dfkNgO@T3R? z^yWFJ*fLTAz5VFzqw4k`YYR3= zf&Gja@N6nOfM_HP<=mXk=Z66VlYB(^*=~=#fr9*Lfl7>+@Vhek?p;Dqd>0mA$ITuv zGjQ5+l!vmaBQn*hsf}~Y@RAM?hS@*#BcNx`zI>CRgm>?Y<=j@lfiusNirJEL!sBLi z%ym6W3br-UY_C`m&<9$WeLxH-sMP^^{O7+IRI&~tY4;`Q>l_}Sha?=e8Yi$3Kna{_ z@L$_vhS~=MfRXuF@GkUb*cH{VNUP6dNzpk*lQ5^4h?7ri@7&rwhy6$E0xf^p3u=#7 zTwBM9E;yb81Kvbcc^3n->8zhGhvUZvJ(vV)lPbC5qDd0PDz{=l*mJIK+rxag~BVp@xHar_Dq$YD;||0OPnLaTdq z!z#=pR2HFYi?G^4VSSMd>b`^r*h53-<_qEv5EpR8=Lj%J`!}EX z8csSs%)AkhUH(~h_VZp0c%=mwUR_2FPXcb<>2)-a(laEZ156>)fut%%VXcziXHu1P zIf@Ig_onV#?&Rdr69CQSzXH7F%LO^Vwnqw};lCtB43PE>LuHyG+z$x}|DoT8M9HsB zF+hI@J_FLe#Dsg=$#)-wm;OQUP=)q$0)Yo~iZ#M%@?WlBEPT=FgRNZwoeyoLN&0(rFQ%m{?DlBU!@EMS zLoz_cQi?zy69JfE+bD$j4-+WQN^Mq#}^6Nu>J9q|JTy0K5b%gAm zwYG@D`+bR|e?l&_cRAaPI#!#>f%l`N@DCi(;Qljq02+dvL5n1S3z7&_H80{14FHgy zT~rYzx3(q&1$AKqZ4c2Z=}x}rR0aC_gObi%6;EN{56&Tq13GZczXnIf;=R+VXmD&M zE<7g4hd4&DXzoL_%u82h9C6u{sh4g_Y%>9!&qWH03q-j&hrde7$=3uvgUj|sqXN!2 zC%-PU148cP*2d(a?(>9ztCn!^wji}?04Z=`9|t~Mgh;Yv1f`)tSkxz9wCSKxlvlrh z6RV@l+OCxBbn|tAe<$D!fE2iFl`j%D|4*q0`Rx(}F=#~}NQ1%C?P1cUKX?_i%wZ4d z0Ujv~d#z~kKCr>4gVI17(&!2UkIWb_8eZi=7{HOJFz_BP0-8rd+sX*6Il_gb7UeAV z8K8z;c)(ajY`8RsC|qNpepXo10%^bcx1tz5ywPbd%6sh}WbH~P0^G|RWTtFWnzZ*E z;@0KL3}+8k){djfLAB&Y7AV6?QUWOXzKBdZW5fIU&=$Z?h(*5xIsAj9IIuak6BRPc2WUz4zS>Q#&X?rRLTH<-v}_NpB1ry+jr|4TnZ zrOm7<4MZ4V3BB&f|DRL9Bk^qfRn0r)wNE4}yNpGg*UJLuez9B)Q>g{#hFVKl0EWKk z@KI*u`@jLnnpSxX>SsQB)h;E8&KNj-q|o2Pgf~Z+aA8R~<~v&`bt5@2WB(a^DN3Gs zBdheA_Pc`nPde1>3*w*9{@C=X^6Y#jDSZ3wZO}StA(bWUw>v3v))Z|CX}De7n19v% zQbQAP7{}E$B`lgW(YQbe5Kkn9Q{hFUhRE3g5iQxE#(7MDyz`NXH@dQB;W;3V1nRTUF!f_Ge#@ZlWMlmv@9zmL;yP9 zV}E8!xWgT@#HbAc=l+gLO2B&_KL_b*MLnZk71e;RQSh+vNekqdgDgz>!xCg|ost~B zhlW=m6=?rC7JPwDj+s?>DwqTGat;^Z5Fy_!i8cu$!@<4SX!r12sesnI#}^}<=M)FV zQcYgGg?d#ire&rOV8N<5h>dvj4D2Y3vlmQC?>7zx*aRjO2T&7`@Y4m<#8$RV341V? z+}N;!@+6gkhlj5KR*7f>#90hx-%JFgJi>sdILTYANeopD z)JCIa=T44!k6EKz>0O9lq)s%j;gfi4CkI#HPQWP^a!e3~a2NjcKe@**V2@|>p&hc~ z+<=w4l+rP!y$?V=){3pWAk~H=TxfY{7^rbc0T{w42J<7cM7rA&fUK8@0ec1!;2S2W zaxbC(r*PEFFe1rM8svq>iB(G&xV{4+a1~Z6pz?0Ssg2b?_L7Ks))ncIQA3{Ulq=~= z1lYSVd>*5?*2foJKxWGf4>x1mS?1MPyTwr$<%G4WNf8m9g6fxTU7gR>Vc&wnkbmFz>X0 zm60M5=?J-^Q#0h49|tU2<~`Eg7hSjhkrb-jOaaXJiUCJe$**k@Q+q660i43+*A{7^ z?nIbyd1l11CkIGu$VPoX zAa!Z)N_h`>_q}|pBhdk1H$oF|88cwKyQ3NK^{5sTKDG>5yY@l;=~#sn{R<$6$95wG z0)#3r8@?@c%-Nu>z5y`Txh!RYkScEn%Q&2%h4uf#MFu-3jjQ4#nL= zao6Hd+$nB_v_Nr}0;LppiWa~5??WEWI%}QD?7c_7nb|EVL+ffs&ye-hBS+C)Sw4j$ zf06V#=RQ(U+&L|P4?aNXs*e$n9iakhcSVRUqABL|WCmNCAp*`j1|iS55dBU{P^oT& zR2f$B?>MSos_LpU5wR7Qu(Yj;I=fKCt2$52F7>-mm3tDO%x| z6sf!3c)5=i)rOT)f*Nv7l=074Acb<9~| zLr*rvGwCG4U+_S4jc-sI-xj+&Q-DRx&;X(x;X~OJc|*t8*7sqDNnT1%%yGu&c#FJ; zKb?d%szNr3f45})ckI8cAaLsNBQRo4I3SFTkWAMi#Lx^7|5LAN}E;T|8@#{tbJ-9A| zx>?4}l0E?1WFHATO3q(Fi?oLiTiT^f$2IUn!zjkFlEWP37I9!Y!dh;=s5Xg7jA^7! z9H1NP7`w176HuqlX0`d+l?X<5qXjg)R|PrNachir5rP65(4sdnB`rQsgTL58rIy2` z=J<+dY?;9)hHn7AOJP!vlf}4Qs#<=(C9?`toXUesgZqAXf2>+kT6U?xjh@p30_N`> z3Vm4tQ#82GCm*9h&^87|yk*|#QbTngjr#0>Db)&ICywth1d?-(I@?eT~V+)>3(`s$D+ zXFkc?_66k6cL0KnjatO-7VO1Q(`XsLZ^AC^-afVIV}p+gk(6lpGl>il!Gq3{-T~Of zptbUn9bF7-p}~?T+)oR04mRlUk~du_u3%yDze0gxFa7D_QK~(NZDXYU_WgHcX`zFP ze)aQGC>;H9V5+&&R9Bj_g3p&^OwAfZ{_aE}*}Q65dcig$vvtc20XG3aw^OJnkN(9e z(Il4!7y$X~2&oE`;@>?$&>q{HXx3v%3zw#fCVc}+f??)sqKy;zhMw3Xs8@jlxrSfx zRB@9pd)e>oC6U;2O96xb=&RFa8m5&`1oB4Pp#ep=O1l|u63CPtUUF~%+5EWCF;1~V z<*IPkD_#|3$chrZ`%a={ofRS|f(F{Fi!LE@X4N)A0`TmG4;?cUo40~Md&uEZ4T*VD zayI@yeblxJR?4Ai$MU5C^d{59@Og`c@U$ShHAu=zgLwL^#^BCS!NLeL4dgGUbx?dG z7=Ki~aAn8)c{P+0%xkI+`dLQ#S;r+U=7EqZZZeQ2k90v+_>daE zDt!?qz~qgjg(fw)+!PZKzvKj%&)oH`n3Tnt?VsK0uCMx~u>9jk+hpWCDoS9;0f-`g z$jpbVpl3}A@ZA_*7w3{UblL|ki;oTP-VMycvkSB_eI$|hp`oIFt$Uy|W>VAccOF&kd5I`Z5$S8Nw z#hgJj;3p#t!2FUUpe%DYq=G@~{cL~8PIp&T8ZTZ$C<<=06B7{7s0&X~5k{+z(**p% zhPU-Ps->C26&U*o_cb}84tMoP%(cFFF2?_pLHP!1prB>A@0IIR3UNUMtLOs(s}*5G z-44Z^86@3b&_S1zXwl(35?eomApeA^K+pyRlw-cUp=n#|)n8un0HRL|kPpGS+K1)G z;jmb#`EAr_s@nTr+<2*T8(f#R4Jkl;Ud?oCq?B}hWn2}vk|+mMBk$BUOe$ALrsRyf z^dg`>cIal65%7LLd}sj9qZ>YWCl>%H${vDjM;AAFv4ewhPywp@;SuK|kbk{EkX-#7 z2o*d|p#sX6eUwW-4k#U?F$pDB0;y5)f$L1B{>y`zvWFj7tg)7-45rdAj!+yP_()It zXzXSM2&YmWUpN%w_C|oo^`$`F4RAZeKQ2?UU<@H1^I762kfd?v247o1lcv#7dW4E+ zoLIobk4TDJH{_55_}LGsn*sfLpR(Ip!KazCl9{E-VL}Dc!8`1RPsfAof0Qg)L=xjD z7tlH&N1ruo*H^GGBuL{8E~|j39y8O_{L!4=7|f`+(uRwkL}|Uf%qg~Sf!PkDMPZoE>w>276N0wfmB+naNV1y-lETdy^Q@B(X1KjdUmAX#`)p?oM#174o6kj;s`*9as^hJX7k^p!6IT&)5)xgD6k{R>Kie?`*+-jNm8u8Dtxd9LjPic6T8Ke=$S=s1rH?Ix=<* z)7EE_RQmXl^$uXYK@#W4{-S#xD(i9`$C|@Xl=D_=gw07zhM(+@G8f#Sg^_ z;cf)g@kodC#$7e~?R4bEc_|HD}cq%=-9Ji*oeXxQ81p9L@-kWrBC;=OY2? zDFUI7)(J7feq{AkuiL$yMB7zELTF=ut|!&R||d!BV=h_KW89S$~FYEY}H~ za`pK@o+{{;gIhzN=a-DdIz6P5`z@#&8!Z}#PGW0^m3R#P7{nMcG^L;ExoQdl_~Q7Z9Rz$pK-U?&loW4iUVYnE9pN6@FW*wcKGof#_LP1q2oYU zGpAEQiCw~f=)Voz|LoTIkA4lDz9NW)l~-d_Xi8>l8X4lAg9N~Vhj)z#kgD&%$y^|S zV>nW(Ew#AG90`04VPLmR^9s8vhMe$5*Pfl!&&Y>ov)hKP4&T3#pxN+)RB=+m9RdWDN1;3^9UCE-k{TR- zIFfIum*rFM{&lDds)!;5t&d#(r}9%Aa7_X;qd`Np>E%m;gTx)fGdvJ&%+G~LzZ^Hj zkp~OTE*7>d^<*?+DV!9(CT2*H)kJ>eqNW)!Z!L zFOpX8tE!Kk-cY9+<>dq~@s8Es+K)~8qX%$U((jN{L;`)M+`LP# z+^|e5FKA50Z|p%4m~5#@L;4l-2JCX{#SN#BhOp$(J3UHO< z+Sy1)bh%s2F30%zo+ivWGl2gZa<>)!&x9scP6JwmTJ?A#k#H> ze;3!}A(}twp$Da2!!Jv%zp}Ruw2GT*_gwUQXob38B=%+yM2>Ut9=bs zN-7ayC(91>Vf@?FqFb^>SE7t-87iGX*|e;yY;D!Fq}z5E1Ktt9CQW!C4l2y--Eb<` zg|%V5%NUxIe9S;V(|xUpIdXHTbYvWyJEdB92NvCs@s@*MOcqebb1mXtld1gjhO&Vwkg*5J!J_jtVyw^_3Y_4O*|hpV!ZBVbAWvGGq1E z?ql_8p$V&)&T6Z}0dA+f)+>>TtC6r&i|+8z872ghDZmVgt8RqRq1&$VpqH4PQlM~Ht$ zh!^cMj%mKXoJ7LR&afI!E3feMI{PS^FiZ zN=r(oY+3q1WfixEKxP?{LWjKP{*W%fwxYw^m&`iJ708#ZpRZC)zkW#u;>6J9SVe1g@{&>iASMF&#Efoh7b2 z;*_sXC6%ws!FeJL-60f3=n|!hS?6!@c=)8s#U7lpwudO(L8WB@(VV^|f zZHh43m$G$oz2j+l9P=*!Z)21CR0^}NwnjN?L-_R7=vkszUkb-cSyZ0SCA&mVW7pHL zAe)uE5g(lXU||S6r>ynAjJoi=Pr4!|BXT?=~=?$}n^iMN>lrkP@AxxcWv2)@@=dh$w)oFz{bLrBEA;hMPB2nTz2#HmO$SB=(Rn==%plw zj{On-0;_m^?rw;DHcZu^H8^z(A=G*$oq{o&{3B4lRp?KJ05|J#BM*5A@;?8KDOrgZ zih~bG2MbDb2eWx7dE%MXRiw(3J?qS{>hVNi%(Wd!VM69s1r4r=9WV$23-2-&>`R1c~NP4AJ8aG~0{-5~1fvr#^Vgtm+Qm34IqpzSc}7w(XeRV=>) z7On-)vZt0`wNx3xG4Xn4fn^&x*VaCL*VN`=x7R`3f}rl`u6l6YS>TnI>*SZhpZ_7= zy)Lp{{wxrpFOQAZ# zElK-b+edR>O2a!%m@Gx@(}{B8I^oqe$~{b^gEW%*VN4s-^Vswwy-seiXX|1>TI^W* z!)D@#wXImLHIw?|w7ZJ+mH>+h)aEWL?&H2N1Z(|e_^O>J0_l2aV5rVhr>pXIf|3|# zg5h>6249pF=T2BysH#`vc-PheyxhRwcYSF-dt8rH@2PV68E8ma+B{w&jvhsr4uOqo zJlFZSI%d@)jSMy`9hlq`jZ1z^eax^=g`-WL9PPi36M?nZ^3Z`tT4^FGYvP?~VExLI zQB%iMQz8C|c$Qs`7TB9+(m|F_-%)HwiDb&8Zs5EYb9{zD7yABD+H3mc@blx8F@ahJonsHYK!TV*>D_}*6* z8ng2BxMF1YPacEar5o)RUOi73ZxPX=V70#j=GcrwYUDb??5=LiG`6#un!V}(>F3u zA<@(=T>e+~6SHYNkusiPf1*8sWb}w~( z@t4pxhYLrMC7f@fITl(-@gL&s#VEQ&v1Y|ixfaQ-vXRU!vWSRp+?!$q7qZEf*Rl0q zw^FX&J#-!S1t~^ez6C~X3@x(?g+{t1XIzIW3^iDq`~7AoXaey6?h)6}GJ$598fNXJO2EWTZqFdW9OToCFe*Nn#rmM?d^hUNV=3#(&_qLxcsXDu=3)cT`cW+6puTF#`cw#SA z%QU4uxu6fZNv!whTYtinFcJCIu9ci@n?l)U#`XGd$>gxBd^W>M>O-n`HD#Ki26Jxd z&Pl0uq*PgUl3A4^73@RU3D`+$3WX>2!pr0=)3d_r@9Ou{!#t&q40aX#`H!Nk9C7%P zpENx^G;!`*9&);M6KwodD3){=FLMIS?Y{kLe`o17Wjh4izzY;m|JFZ1VcBsUw^G}D z_{eF5B>H!ud0Cf|i0yZ?9l;*?XvN7O=Gf#Ia7KMFS%Q+n z$w`hdExcPp+;l|DCZR;WKPJTBh*>V6u5q-QDLwAF{HIv5-uztxKg;cRuIbu4-Oz-4 zV2kI(z_3WcWnWqB>;}8J*AJY8J-_f-%yyBgJ;WZ&?y%Vxc604`RTuH@aE)4a^XqOZ z;?&Ip~>wa^i1@onjP+{sd!n08yWqIqsMAg*#Ci=jd1XhaSR#8^NQ*QrN#u}VCa?VrCCij+Rk-xxbeteU!iXA9P48uR)1 z&cmO#BUT$mT#`aoiX=(-oKq` zegr4Cr~92G$`FOnebSM=QT`d^px#WCXZfvgfFl0csLtr&4gd2USzgM@svco^6N93b z?a|5|P~h4bv}jgc$#>Z7;}pIj186J7ye(eA>7<3pxzJP!j&pY4a0mUwBhht@0akX? zz_L$MENX6rVYEt3nbqC|n4e`^6ei8SZ8G_S@|G7WfiWul+$wv++!^A|)?igZKv|Y*Cc4As!V@TPw_DYErJl`3unL7+WgYc{X#h1W zurFl`uoP4D6aGKgQnyIqx(hY%J1eZB zncI06W3~~^AZP0UNbe9BHr4cHDP2!H_jBR6H#00=O`j%Nw_^$DsP}1;VEY06Q_WIS zVg4$)zpbyucDLxI@jNu~m~eEyjqQ?rL3dwBJ(k14kml~K%Z~EHZs37``OBB`&Aof% zXVDlFgTj7;iFek=?6?$yGeaWd6?)T?*bDw*)1$%}b`qXJ;uBr2M}gRV z;OXN6RVSVz-HJAYR``%$mv>C-&Xr$all*!-5*R*68EDQfx>FPoMozH$I^y>{$=snO z+i1f#N{vgTW1C(XVOI#)yA229pFu+?8ks3Hzj- zqlGo;j&f%6aFdU58z%vAz=HyE7eJzqg#i+IOtCd_3&yd$Yvq)7*2F8ZHvg!X5=-fg z*2%Bb6`*y^8!ifInC){*hRGsyjqEpdwTdJS-rq=1%#_DCTQF_@MY5q1c9x3Av`e*b zkW*h-X;~XpVYN^kL7h4HW~yf{?zOccrmCoO&<{>Nfi19S*s zV6m(Am-HT+vHS88>_edswQ0$F^bC0aaq8I4BJ@mEHtj57p2TN9U|n{XR$Lq( zVR;@WmnbUJ>^mr>d(!7*$e1o1YPV8Qj{hP7--;wC?H|EVR6OK8?d2p2? zH44+{lZWZ@M{0ssNY9rFFUS`Rcg0p^Jnjy4tXvBnG4~FoOt1qh(SJqe4)KP7CM_C& zg~7x+xMD=xxMKQz$gm$1!6>)l22|S*@l702xxP`|v7YWgpVk0|hz-}Mv=P(%VR_^g zF5UW-ILzR3UsH3UcB=RG3gsN)EKNkZJNG~gFUkB)d#l1#O>tINS4(UCHB z#`Q|J(O}eRk_C6WWIeL;Ku*rfI9umTU%)Pk(ctx`U8YnYPiKL<)LjGY&(&b{ZS%dm z7>`z)rMM=O*_5UY#);{l5sy1>zjLwvDzx$|;~HrSqD$KP=bp4xFGmgw3JM9}4Bvi; zB@RK785b^_P%q}iu`wlQ5hV#haxS>b}}hXJGpfh>?T`? z4Ke(931al;%_=dTJadsGZm*Ljo~noK?^L3aPa9!%*>9uxe(C+4^nyS6xA*Ojzd-o( z+5Dd=+gI)nc_~kRj4$uTHk)X-4uxcfubc=Frx~Xl`N)agAP92sKxWXrGNXaHz9 z78#P?-g*1si~;8T5|UscTnR8!$*{hz-)zQjdmF>CKr3raVrMUkQKH1C7WCc(`@hdu zCgb0t-+D({uef|SIZK7p52S@+Zd5<|)~t5Ok%6kUm{4xbLNj)A-+XoftBa<|6X?dP zZ+EC-+{)iz-14;v6%OK&tIJamP4@7Q%&)|4`&ZG7%r_&Bw5o$gc=`}Wc+$5W9ELBa zyb1sI;_$ek{Ydt7#~CYv6ka%!acmn%u2ZgCa3{uKvUjR>^!{d6+14?`nC=Q970}y> z4Vw$e*!LD1y0XC%OLXFDgLDaPtro{Rl5SRyRQ}z12qIm>AUy3jBES7=*o(G7D|Et) zNA6QAOnzHo`(5{-CPC;V6tzqfK* zKi-^(SK&43Xgp!XC)i#@=I(4YB-B2z_-7?g*4;UnR8s?%%k7zkm8$ zogRPD>hd4>5)?Bhnz7#`ZV}i7xci36!?Dbj&~#Hf%(YIF({%4G1l7s|T=7Wd6j_kN za2AE2Y)2n}F-tm}`7q>$4dri~*cIC1X#C{gp$Cj!rG5fMGD zRr9_z>&40Rnpds>sIR4szq|S)$r#U4GAFr7t`+gZ#|ahM>K#sUCU&HdUa97l{AR?eef>kICa&sEQ41nS+UbE(W@5KnOq zUZj{i8Tme`0gL*WQfu6SM7~+Oxq#2=V0G0rd96PDkqZO*z)G!8oW`bby3{MwJ&+`e z7e;cJ6`aWiZ$YSsju5o+$Q@|5puzd&MFI)OmBZ3LthzPbx*w4tUXJ=|M>EQzvY#6o z?}R~o#yjY)@`nA3bjiXT0RiKgFF|2xqGPSFn2lE){Igd9^Sf6k ze5e`?x%4VW>EmmgAe6355L!|~4qN3DfR>wbi*%JLJ)$S+w2WBs_9zV3TCDA(6B;#{zK8RT=$W zQx;XmDZ7-C&kS*l`f%&cwC?DW?s06Q_0=U2!<7Q%?!o5j{F}=q5B{Nq5lY8coJa`7 zQRQkg(Y;4I%c$c=Nz|uMhN1cZp?=$BR8Nm3Oi#CJ+(X}bxGvF&wbJiI8flWZN!sGb zd<$IW3>RICBTkAr{E%;*6r<^su^MmP{xYK@M1)SrDRNfY?m86_*jH^}$_c77`lp3o zZAFFx(_^#trZD*B@wlof|9wk9z#K)ZgMz13c3AuEP69^*dS8^x0$ zpD9$h7%5b!^+vGp71>k7MM|)crz?ARFlwOUvPEogq1pTMb13*Z>XL(X@b=ZpMkE;( z;78k>z~p*8iM#H!nFBY3CvhjwF)}TCPF)?e>S$mr34cJkNM6p*)%w>zaq#KWpOFk+ z$DBXwnYZ$OfsQ>;;bGIv9 z|6-n$pOK%TUq*gMs2Q95J6>}P-N)LULg#z0js<=UuBA;eFA`qQo(x@QS9)3ulLGM| zu3p=X_&ev}=NUl`I{P2;7wO?LKYyu_47PE#h+vlRlJ3r?itOP0z#+F?s^FSy^>gvy zTO{s^t{JY<_Fp7^TUSL|mV+xMhZFRV_)) zoN-1a`HwQ@CR@^YKp7x}_ol6zJ0fN*_kt3~h#Znpn3;_9nSRPN%=Gl78hfW-wn-&Pjh9 z`v8o8_yBxFaR=HVgNa>jkpg+&a;YHw#q6GaBm%ogL6Es78E-KL%Lk?8=wf(Q{Pb*PGIl7ds~s zbu%}_=@!=`A%8W9$_8mr<(qWxY?-64k)7VDEh6#78F7~~gf@5LqMdXbmB6ig#+-}w zogcDQx_R4sy3lQ1ZFC8C%%q|L@e!8{qLI_?fe54OK>D54C0f@#Y7^j(ds4<(nheiq ziY@-~%mkyB&MYhB^_kQ{vs6q9h&V?lM$&c3d-}P})3@s(OFu535I&cI)iu)Ot&XQW zFmIXGZ@J|IQqYJ7dqE?oB~)+%O{*<3`U4!wp6j$qAJ%pMF?WhuNwJrmwpgX*k66S3 zsfF$&4q3-mF$e6F8tdmZyWCV98&F^_VHmE>;l>97TaN3c5-Nyogkm9sMAkD1;$^y_ zpJZxQA%pdKwCV<6lj3_f=}r^xU15k>syilFwsY~rzSC_d4v}3t=bbLPq`a@isf0$WwRifezv zT&lCPyO<8XqIM{h-`{|Mn{uOy}0hgEA!y~ z(dlK>mA>1MKNNFhW>Q)Iyq_G_F-Q*Ekn*!Rg>jwyfm@P&7+3Fcnfbp=4CAKuk6Ye3 zjMEBx>5za#Zk%^g#QY8{R-H<~#=_i*#ZClvua~A?bMVBXY-p-Ns}Y!3j^%P8Z0>yq zQyHhlzZFHlSIwlpPzy0@FN~xu@4=;$t36`ZxBOLTnSY2W@BR>XcfoyKe@|ex-#g+8 z?rXJ7M&&^5EKO)VHu)WKB>gU9z=UY%1@ z6rCGFxGdwX6iWPHbt1UA>JnVeC0j9kNsLZ;AAOopab|3%i~sb)LyX+6J}bU=D0Mq% z_0#sr`411uUDn^MD-|4t?5#Xht7@z@@IVT^axVa)uZJTo~5WmA6nCm8ZG#d zDcN|naqdO28|_gCuyfjbU;MQ96^)@ukSfE~Gzg-(?*Ces|F8J^`gbJv_eh+$0&%Jg z*idmVZpMXkJvSIejD$rNr>2LQ(>RY2^#Hk)!~JDHdMG@r@Z-)%#l5=%GcqC>mq*#7 zWMlz?GuBbifF$Sg_Z|HlZi58&a@y`H%4bcmx&VAl7Q@k0J(cH+pSF}Dhjy&|+Hn&M zbr7e+K9Eln6_QW83ncA7{UM(gh|uu-u zK}EQ^xS9`BD)8ab|I+|+Q3tAClIKUJk^3A9qORySBmOO%Zm&LDf@qFHQ(DNdj_;Y< zPyih+5wHneZ$e#(WiQmM8of1gN)m7&9 zpBlO_KJv>ej?8vC^(^T16MdJHXef*MIZkYr7H`;lc}JZ+UA5trv=Lu7no^t6;DDw1 z1&R6VYq+Mo52;wr>6=AFtrW|sSFdesvp0k>5%W89%!lG8Lj(u4H^{_luy}`}M96XP z7fi}9K`yy-39JSV+vpqnEh|kc=c*NO)>nWX*V0PJ~}- z65&s{-N9?lr9B4Y*O~Oc#CpkB3brB-1j&UEo&-O5oKnG@oZVCi6ibjFK+Tue8ZHC= zy$H`kiADRx=WjViMdW#NS~6+Wj_riE#9gPO z@08OMJ~%V1P}J%EZ1way<1Pxng`2logUoXYb$M6*sp!wTs$6!XJdRPa3=hvkWUK3t zS$nKov+*|6<&UQ(pSaP{b>GQvvp;NJa`6Wk=YQB}6H&Yf3WxWXN$4iLek_UW|DH>{ z`^)3_rX(EPhZsO&rk-6_Z!2jyRMqD*Hq6RhQk2`J_G$?!QFwMJYbShC6xb>_jbd16 z_r7-cCu*=JNTthcz0fWaOY3yI+0KQj+>G>ws{K9NHzY(-^fIc#@>tBlR|DS>QL{c< z-W&Ir1-_Z_#I*y*{3g})kKLX_9&6ujt$U6P`>A@ex}CB%`MD@xW-lt{?W~5?%PrlG zuPxN5dtEF;zL|xxZvWML8rVYt7}fXN1fi_^TBezDr_*n^BZa7g-CW<(#5oplIa*2n zOZa&~Mr`sFe4;29affLBg40qqplfIHB}F&t&4uZ(-(zm1u0N&=*{P#s6GoGRtCSbW z?590ZmQ<+1k{Z{@ZT+KUqWjD@@DIThdOC_))gqjb&>=Lhfsn|!H*F^z7R(2(QZ{tx zMgCs}gN2{)@_eGj88k!dHXumWgb@?aH?2`Pdw-+DiqV(4VtEF2vmr}C5SoIQa*g-s zqwcyZa#FAE&LvhRxOh1E z`xZ(Da%-PR2p6B66O;;Rg$V3Q(`Hi@P>n1P<|u1%B5m&Iw40}rF{{}!T)!g!aE{&o zhiD%*SNuM5(1SN49~~3&iYVExw5*LVCa++iSt;%$$c_ENR)VDHzf@%sypFm#fcQh4 z#$E{^@dMhGJt%-jqHn43;3_6vcJ1sjnDVPkx^sT^p-lK$Hf4eHO+|)l1fGW`u{@Q0 zKIOMHSw`f4xRA<(pEcL=bP;;tFQ`#sBOVfbJP>gPBR5xTw~FPYXfxmgX;GpI*MUWI zxFI_5n0$%3&PqRKiek-f8P{H#?NgZ}LVD;MB5+RNBj+<_!QWyvGaS}h=^=<-tzT0= z{Oa@p431MefIB8hAp=XwU*H`%i>P!V zj{#rJJu$OCVkX~%adoeT9p5mVg*%?f#=cL@lxqP~&kFz+sr*7+>$_b3FcL$3(I&R* zy?%IGR9hdWv2y=y84CEQ^Zm5oLW$1apTKUpp@EXEi?SX^D7SIplIWY%nGa5=-KT| z%#8|E&>sVr7m-U0S8}b%f3Oy1l@l$0bo{Y&`bj8<#JMJzKO#EZJGqrZ+we&`nRdV{ zC%${CLJN|;FgT)_y|6rjyW>^l>F)?DBoFHv{Q+|_uRpWxLAGBI4s^6$O zkmprdd+DaP8K|C4R%L%3;`Ao2t{SR-93SFclYWx?2^7tgTeUINz>!a>3iig3^Q+q|^Et=5F8CF0ae_(Fl_u-;F^%z!f6T-+!F7<(U7^ef59*$ZCWud+CU1CJ8!X>UkUrr}(%yq~kYFH7#IobWl!X|IMz<+=2qT zgp#(UM?n{16d$VG?Oi$)?8Y}ND)YS$TlX1a6tDtKj;vPReXAfI(Qb_LTn^>sU zZfjLN!*^nL+>z#xMesB6dz4;2`JJ=bE)uWCUHj(1tX&Y53oINxf|1GL6eL;)RJ4oL9D`xlX zCd0Ncy(Ta*W$S#@Jy2|^FQcU9j7|g(;0(Q7fcbG2n!m@?kAFKi+2l)P4p?0R2h;1@302*@n{t$HA>U$X^{-#p-R%) z)Nfx2Bx$+L=-{_W4^*HnG!&@u^cv<=S8h-`;{zRxtA z*rJ}7ZEr&>ZEBY^MUo!#eV5mA4yzb=lI0?CDqg=mQT`*@C6NA= zOjyA?tT{Of1#R`woWh{wWQJh-Q=8bZR9RSKhak!dq>yeWbgjIe8@iv#GWO^GiUl-L)pEC%2 z!~BW36nv33uP7KaR%=gxWJwgRbjcGMZu zu6LX;mn+#J%-==EGczPtbaZ-{TL1xZa*XYv27Jlr>N^p zjsw7;v4}ggyA^bHZF>GL(!2?v&NRD?#MZTih+Uk7woq8TQrH zCYJ3k+bGF`t+5u|mY)^jU6{#g+pb7S?cBxe)CE}3FHmAruc>zwnly60NA)mx=kepD zaz3WaHm+G)Xf#{1`t$?5$d$PzGH6=fBc--!Pi#SxZ&`cMn98w%l(!=n3$m=mD`BI& zjc}i3{RWhuWxxu65+e)M%$uRw>^Xq12}O6o7palzBuLIP4Xn23O!(L%TYJ*`Y7{uR z4U(!59|^lv0xbN9^K*K(tl7jjbgmV4qH4d|v!d9wRbb9VYu_OVvMHrATC zH1wp={dGRxV?bD9Cy4`FE4b;WVC*9<-yQ$Ag3+gxx{Z$K?c}Mhe@|?q_E$_%vEX1ulH80Kg@3g$#R@6=?Q=b#8 z>11C2DaK8RE*5y0RsCuB?)XEW&G?V0$>c_KC&4O^-g7)M^eIM*{iT_%Wi`sVf%Em> zAyrH0Q+MkL6~XLzNIAVD1s#LN*H7f{Fa^Bo#Ja~`{>rV2Q}#waZ9g^~P?^OPk?^$K zk4*aP98p!i(nNY0kVZ&)&?>NlXI(&R(wE6?!8+7^Yf032tHJb-<`uWefncm}%2*&R zzTZ&3M19YJ9jfz#GSk-ugj9p#sUoKPkss_6;*{?m2b~Allk%{`FNO&jeg8e-f2X)DS5*ro@Lh53*}-nz&QB;PeQ%6ki_Ehqb_foX*G!XR`-vi7 zPpRlwppT~F`o?UQ0$bKspQ#H**5TnRDEA>|-;H2>>&H3;Wsj;)%o_Nt>CfvWPqn^C zhknJsuP!raN$4S@DC`cve?zkm@6AE9*Je>zUk65W()A3JpJx9@(ldw0;WYhg+BCLp zt8t@C8r!yQr%~fHwr$&NW7}+;i+#E1zI&hVuf6A@8xAdM=w;3x8uSxl15oWKNoSW&axOe===oEDbJYYGtK_pt{2<0 z&FMW`SRk_Mm%V>!NY&*Iy|1#QwKR)9BSi}|+}0in4SOGtd|jQn8mX%+>u4-TUhbB2 zw3ll^*EwuJM|C9|#|gI4z|@mn;bNldX!%E7H?&LOHJz$^7{Kbr?jdaF@X4rwfu|vX zWXfPec8bg5OFC{wD|QBp@l=+D+0(w4@d|u~#Yh5`-hbOF&Mprt#RRLn?>Z2epyIGU z^NB88lOrw+t{0kFw66nVTUV1|B=br3lqSrL?E7&G*1!Z3!n9YC1Qo!I)^b{-CR%zue&gD8r=;TB=; zw&wfe3~b{G_0imN^uI1ymrh3je3($9OoBL(s+pb6ALfb=RVQqDRH2?TdVnSIgeRt^S@9WljV1dYHFHXCXjoKQYHlbjBb|AG2twBU zO~_{fwAay34nXLo&+-lj`=LE?D0p%66)4EORAJDkBZxLB{u5=9r4?chdesrWR}&WI zOQ6_R!%?5m;spy%t+0`Le9JaUT14;u1ZGWhr1}TewzpbjsLF}=Nt#aajCD3FTGtoK z&sLbzG3Fr)1wuyDI4f|)UZv{YU#NnQkc+ZWl@3ChorqG4$CqZ}&lpdHjbn3_LE)CR zb7;myV%PQr*ycss#)v~+fBb4{Vp{YJF{dal@hAOh>m-PjJn3nRzB%IatXlD} z{fB?q2t5nIQOzvO(duJN6Fi~DMnFOziit=gP74ds>@;nT1X*|}m;Bl5`lrSS~v zKkLumxXf5%_Sb%F4&9ch6jXn%tnPJ3Fq%rllIKxyuQdJl(&$gZ>BJu^@O8yj zgB{MtO6tCmmqza6^*pi%Y|Bidzv$sy zufmz>z#=mkBNC!BjIFGiHA+@?-gsu@@@d;0xw^G^M+L#(8sYW>Fcb%jwT;>W*nY01 z)wlG-)~?@_g=FEkzS98qDp6$T#hp6SX}h|qW}M55Dl#skn~2&>80a!E{B;m4ds2}I z<~61uwOokWlIMDbpGdBTkt46%2$A?wAyakRv*iv-K2_+of9mCESsUEeEVF88f9axpZH5su%Molp)<0O9j zl#iF6sUH2^J50@}9zo*)zaGadgz>bgfy_2aW~W|PHa*&G=U`G*?Y;*%_A~AHEZPM) zT1z1trD9JjjitTDuiUJO60g#FWD|KK@?o#+ydy&D!~Rs7=V8mFvc7~~{FNPK+Ob=| zYx3h;9&clXV(Y@())&`eh?5cqrQ6Ec19OSf*c=!mj>Jnq<1R|YXV91`uD1H*Zr)<@ zbHnsHQ&1b_pu3NH}bDl zwufn2FrU>Fq?%9|&6XD`+l?9_P|?+X#tRj-KF_lMqb@vo;60K1Ab?BrFfVG^*0>db z2_m(M%r9-Hl(_?@#abdaYa@XvjMvd0~1IQ zn&^rR{~~JS)u;B9yQu6eYJ-{h*xEEtd#wLiNy@ef#m@I1ca`7%Y(-A$yBhtrZGX(HA9bfKlr?s86rOA?fqq}A&IyZaKE+y+RiL2m=B+||Y-Fdf#$7oH{m zv416dq3d!{(w-~qA2@z?7d}7rXCwz+pM3f2~PCkzKMef*AoUznIF8Q^@7n8TK2kCw>Nuphb$PiW6>* zG$=3^5yM#a;EdUFG?_IyJ*)G57JODDU*u?V6F;DD92gX`(>>qNXooc&bUp6HE~%3Z zMay{gKFbt&E*J5ZqTL#Ve|@7upTU7g;nP8HhrD0|O%oCf0B zEnLqvFVXEZB(SO>iCu8Su?ODfsG*+x@<&W=|L)2M7M`DzMs#Cql|YJ~nSCn#N1G?s zR=kdJdD(cbZ@fsSz zG_4hDyv7<_PI@p-E@oIp0$w&qkDrQs-`ZO*NbxvrPhJtgg%-ir){ax+Y}X(!h0|m%N|X@_(iVw5f;T$Yfwomh`XEwqVX zTY~u<#$C80Uc(A=Gs3Vy$~2(f zpGFBX(Po*E`%dOidu*86fu+;4+Mge92)RgbV`hiplLzge6t_iN+_da*c#Cr_GL35Q zgTQ=4m=?H`+xN+qJFU2;AW5ph?f(Ip!`A?9%#1?sZvflk{k&SV`4!SM0cel$%B*q2 zgKf{RB{a)-MetD3oVWMR8^F&tNpYfWDtL+W^Y(sz5$Q;K-_(FFjl77NZGq2`Xzi63 zr8658i)xHiM?@k&E2TGGti6x^7H!x~6maYeAmn0O)i#|LB`C>VKyR^U4d%k2VLWHa ziSKi$>4Wg&{h(|@+~LcKU(q78rr^FQ%Ut_oUb8-?_nj=a*3lT9Tf|(UC+vPcz=-4{ zd1@8A6@gD_>_` z{LVP~Y4FM6Pe2xB*S^HD->VyqvPur)$%%TagHA@m2+Cv$sd39T=F?mgVX zznG6C;1bOGHnNFDx~5@vJ!E7809|H0?7r5e0J2)@Z2n`N%`^Gq{(eIzcUt}?_odnvu{%Z$;NW$05t zV!C}s3Qs39Ctj0oy`>pZE^h0EpoyydHH(H!fi+ViPM=OIl?pU!<@+~LKscn$i>-!| z4==OumFFZmBxTSXGsQD?>eA2sgc)-{5_dogV}A}$0-lamd=rzAB3NBioSmX56Ma|) zUO*z!Px+sSf(8rJHlvA$_oo;PYe=v;xc8UXW`CLY6&*9&Hxo1;N zVD}buanF^-2Zw+2I#Cb?mv}7~Cwa%}@*AFpjI7s9o3Y%nJm2GYhkr|}sC@a6BMEeR zN&P5-f@%N^Ar%8YjK=~N{-Rb^8M-3g{_h1cowuY46P+N`GN;eQ<%v`YFQgU2dGzs>}9zkb|i@~oO(CvFq-$Tw!Qs4PV$(OMNUsDU^CtaA=E&uL2UrT`NQ zQn{F#0cvQ%J%gkGUn$AOL6oIYrskZTubvrEZ>|AE75tF5z#G5~DocIN4xA_d<)8dF z8U+nz-MH(|xok*7OZ{6ra37~x+nPAHxI1u9Xvy}=;L;m zB!IQ-9yG!0q{UZ}=*o%LKS$Rz!^_5q8L?q`yFba+KyJ8!WZFNo{D8h`bki8wM_f{M z0ix3$AF-d0US$``#2A=MIhwg?M2H75zG3k7pw;OAIrRT`WbO%}>Gy+3)Ncj)bgpXuxSLymGQbYIWb-_tEFK9CUb=@ByOZi5$GXCYA7*WOP4j#V{}Ujt1{fTv%J zR_=?(CdB3{uO8KPXP=SI$S5~YOsdr2=(pafukskLEa;o=(A{ly4RAm>P=(L&=b=Hl zW?)*hBDDPAM9BG4hq+EUYF)|cQnFlwM$z;gd2ZH25ZBC*R)vdX-$a?3Fm0mZGyXdrg9dxt3hGOyu$C63CHu@YA92FvgBr8$NoMU)~lwl+gY zmNH<+vC!j9d-~d77@JJ_igU0<6BiQ`T&`_qO1I*BV5L&|x!Ynn&*&E%9Two`%fquy z&>AC<=*2zK%+p`@Age%W+fMd{Yv(}V(Wd{cM9C{F8Q{UI^#Cl?Dtmcwyv=z4K8;5K zVtr_AszF#k@)e(+(*Pd+Y^RIWGED%IlOOkH5Ya5M&s(D1+NQfQ_sm*I3T4fOS!eC4xRI*Z(Ssw%f}<#E!rWYtt7 zH~EFJ%N_Z$2g4y;0JxxAFSDo~7?nkPW5Z+6#gOQ3^Siu4?lSMVLM|Coqw67^Znstr zDGwakr9S%PQ3uj;ujG!>T^JNk=cjQsc(E+1kaI}rBi3W$JegOwheZ8cJ4SeFxW!s1 zRUkJ0&E=b(%(|U@(?2SVlADnY*bY=yP9#9sT`3<_g#X_mc>q$sUc9uZ*!;-Pt7HZ) z)?MvZDs9KKaL>QHso0;&YpUqvqx#uaDH-8T%jAC~6r8FxmnQ)XI8h&f#vmu)q8b~l zKR<)YO1W_7A~8@YTP}-{P1!)>Z8YePlFmjB67rI=@QqGy71jm0&&hSE+^v~->7_*# z2Dn&BM&sXQTT`QSE~N1Qe7l8m0Gw;zOltwLawi&F1P|eK^-Ru@eo4oFNn9hhRbNR>rXw7oTfy$}*-6Uyvv}Gbbh=P4BtJ*^ z{ZQNq5ui^kTxyCotTg^7yk=WrCVyYDVkVzbD*8kTVvJ*D8BV&0nrtceHFl%y^}B6< zQppN9`q!h*=QgVJd%9|j_1Sy?@+|lbICCSIFT8vP?mvC2JgacZ7iJM=$iaK(7KCEF z)(o@#wAYy@tRX}<2aE`OeY5c`ya1^EWs?Ad7YAIEX4MBDH&2uf!WZ{u+O#AzPL#lg zcp9kQy7L~4wYPo1PqRsd{}41>j!u*)VsyMRGu=O0?s2S+r!pKSN0`56YPe7Dy#ZIg z?c2UqRk(gUg#2;Iqj8Cu9=Sb7|F<@mO8ZJDr0^sb@0@ns9TGQ9c7xTwOvOwS2G&0c zN;Eka*4h0Y=<0J+00@+&S#LpQqh76^LSKL6_cY>raUqhdTUA9$J=ZwOJN?N`B3h@# zNn1Wim7>fflTpV2Uy8rFHIvWCPEiI(fA9Yr1sM&?5KalDPf@yrY-@l6Loy*CqWqE92vmx_*(fzD4Wu7X(l=7)K7{S5q<7twcC3y@-<{QTBNN~H%{)$XecLt{8@*{z4Xb|1WgZdy-i<8!gQJ4qyZFHJFbwPH_h{TnGv{rW!xISr)a?X$(3U5A9u_U8Hcouy-LsH-SoiWCGvYpFdW3D9qWgA(zhqKdMCJ-zT~I+Q%q_Ep#aQ0ySluH1b$? z33gY1Dpmy!U`1W$TQJ_f*JQ8nzxweFgAhKaLhqO|?A>w*vL)5fk>2fla<`~oKdoWh z^<*O-hX>4b;)=ON){b+*^{MOvPe;)0yFEi6oC`7rnrqCpmqpePhy^amb~}fna)rvJ z$@YD(40E>}*%-|57YSYcJgi@Q`Gq=8{d`dz(|Oea+j-Ih4k$OIDO%Yz8F=z0^YfZG zl2OAcKZMbNh>c0$K&b2jF%2sfnm1n|`|p5UX1(@SjiGzo#XUO)hLKv2p=zNfhyzrM z3G(Ne3| z>{G2zQph!I1EaBHFS*sZvh11|h3KjmZiN#W{o}GTHX?2~&8&DdHh^?xvM#qkRSc}ip9jzqBHP|Lt>sH4Ng~eZINhsVPv^nM#WtFI}Hw@*-{=vN4;<{ z@#80gE~#*A`MTC4?PJY?#)Zy$b&2RJ;pH?k&ea5?`a+(Ziydy65mA}w=Vl?Jk!!hM z&b^ry*fTtr#-H_si;o_QV~ZabA&D&kv=7Ov@gNjkVU}Okr%EjWNr1|g*(tmIm-V&y zmDw_vrI5dY(EQTweRBUq6D@l14>AU&fMv17h5*CBvMsQN+jp|p^hcFTD;ly>2c8hJ z*J#cTB1--x9c{8?KMl?fE8!eDah`>BcmFq>@*caC4!X(?&>!3T+_1;J`eVZk=%s6V z(o-LAG<(zp_(@rgZPf>;gHYGUZ^li$z!zQ$6e)O=J>H&uoh~{_cg7X!NpbLZzmz*a zxS-J|lVUyU0N8@Kb;w#-k6irSeI>Q@B`?b#+1pc_0564+^*IVFqelQgfBQ?ey7&)i z$a3b2R5CkPcaHXK%ThCC`r6Ag^7-IX+V~6p_Q~stRCNUH`GJFxE?Mlg+IC(MYyZnOhtfNn+_H*$?np8o^+Jj_O3b{i33AWOs5c~4Y;GF8o_s#af{Zi&3AG$C8KAF_s)-vQEie``-$?^R9`>73!B~!S5VQ9mb zly0T%9<>b2!T3-_)BG&RnwbfGA@~tU{H*M8tG-8tH2V>N%yx+wgb7#*(xy{km*8PN zxeP>_eee7TT>OV%vBMsA>_4r?n1cfAp!ov1g8_NprI6^)6;wC}Gl_I|$I>y@u)rU5 zV2-ctZ;)g*GgGH92lNb9ubX-dS|~AZI+8{O;9Vk;7&-=i^IbB#Cbz&`kPK%xENelUr2f zM}T{B^g6sv@%{At!3oTvXgISE=AeCQNxZWd;so{sH{>52RV@H`Al9wC_jMGtG^3&6g*BKv~>kkW34HBc0pUZ0C-K1-oO;^VNG!b*YW8 zRC|zpSYV4OlWbvy6N!So#B80PFkMf#HIpn=FQ1+$=Tc;$N} zUVm>7y7<^6=z@4o{jDLtJVE9Qf8~QMeJ4gA{dOuk1KO?2hN5sfaMf>+dfo4#dextM z2--E38AbK2T4)3-R$TRaSb}yle#MW$Y{^)`l-aS0FpS*xyFzMl7R$Z$4#Z04V}#n85T0hfo^(xANgk>YQj7+$xG@BDU(3IVr6t{j)6@5<-nn|BTiCry`*(Lrq zUotl*V1J6@dLx2beRIvtm19qO_ze~e22NV%J-I}(N`Qd%skC|+&JdT&VhDj_oE8% zBO>Zms%E9R!}MYXpRuwNkM2r*rM<)a;z0r1twoVT>ObQjxgSEGI)tVVqoR?Gaa}WG z^t%!ns#4}NGmALGPhc|{WZ%R76PNv`&JuU*4QK)!P5;obB9XLs#|+p|teBzZv4wLd zS95>;mQ^%)qt=D&tXU3WG~4a?%qijCU+`%bvZ*r;@y*-g9FrLujif9u8q=G`2W*%! z`t7tz`9<0bC%sdWK!gQCby&kVu`e?nGjTJ*ZN*|&9C*u8CxdKvAy=K=T5LK3hYjv?xk`Z3m9}9#PF+F% zRUq8D1@0V;-?Ws}Nk2zjI_o!^o6{|&f2V`rUn~#2D^Q%b3QBeEt&Fm`lNaZ^V&I0| z2XUr%=RRA1G$1cpy$XNx|C&#IZ>1E%qtDM@UP6V&`VDDKuk9BCb^6n_TN13_wr<-m zPSj-BQ1-@vr8MS$Wbqofa~BELpX6F7kWL58{r-z$v0#F^b!!uI6<9H6>l|;CO}>gq z6}tw;z%9H7R)_nO&7FCQ zFm2*Fl(poCt>E@|kViZgAHEWSLZ2v-_H))0U7-9#W+NC0qIz_?4L1+{pc&!D`1V`J z+ARBf;&f&ErFm@I>GwtJet!B-(l)1qAv;SE3R2G2t8YMK&jlQk2w3F}J>;@8BG2YI zbmQtMxf%kPYMsmc3Qx9DPha{{lS>1z_P3I;MT5jqiKNjVEJ{ct^ReIgVe%J;8qrfe zB;&TJeQ-A`4hfc{4jE=_i?5Vc^>^7;0SKi6+TH2^jb|>-^qcVxf$|%K;m!4ELVN`j zWY{*V%Ag(Pmlzac6O~i}`66$ll*Q2;`AoO2vO-Y!C2rJlHgLL#{T}8;LL0 zH0KPf9NIS}>^tm_N(@(7%WzC{UR%5t%^E!S=`L1{R#s6BZrNp!FUeGqOD^2yjMVCu zW}9X3Xqlbkb!z2|SS5m*X?_4y*rPW6)5!Y1$I`GO@aC#M90k`#j%GS;*cAOE{zgEl z{102Wk5qF^ri3w=Z;z(Fb9I*M8wrtjIQV<=EqGwM6HL;!bZ~ z*8JVL2dk7!8HX3$%4Qz$Xt@orb}d9z9c4*L4bXN zW^(AQpR)9hTahA0wO_jhGF|d6|G<#sye=~YoB4kIK;HfCWbMed27yU>zm7Q%pf}iy zvYOYj9{B-d9cf_6m-Z?T6PJ3-REluNb7IVA|6x0WSx95YC}y5jWwMz=K$qe$Q|Sxl zIeB?)ndYm`w9V!`EBTqd=uwZ&Nfz~&*NpxWp^N`}!CC(_7IIl?j5TREmW|GcGp?## z?1nhP`9S68UslHr&Qrf}!**N4vPynW=ICC-b&YZlz^(<}YG5 z5HT(OE+t9>Lsq%;_CCZ8xcIW1te0?;D$Yvcm?X3Q4WpGHcwS4iNN2JyK-*e>$6aZ!D-WvYHr{Xj zf#Mw@wAvv#%WXOqCKK-E1b)6i2ON zXKljTii1!p+)z8aP@U6%UoEnUCsEL9+A37h)~wnMpYmjU`A+z>Bc3Q#J=RPSHtsg2 zN~07of^l76Vz=P+J!6_KuDj43hwmx%@VDxuTHLr>3+Hm4WNUKD235fW-U@3yhG9j; zR~4Vqrgu<|VP%1JFaABbDd~UAc$jYgD>`y~vObxQ6npfe=Sh)tsD9Jp3{Uwba_RHw zkEG|QQZ1^B&wZxALee3DSc^HwORE9}mI|0ld%7h1562XH+LngU4cXA7^3RI+z}w{F zFvJ!#6oeLn8c%_$ZP7{tGFgE3YcZ@ZsAvqUcr3(U%BK%kd0Z{RrG+{U{A-qD|JgD- zM2Fs0pQ@KGD@BP$Nr^U|ui8Ht`+d*B_0m8Yade}XS)I+I?C3%D7+98LI8k8V?@4{- z|JxVsUuSSfdyp!#E89RGxsJqSu{A`Kbhrx9gMi*c;w*MZ-w*ZPj@kk1XI1_n{TfcR z=93sr?N8<6ftlcOuQRliYkKPxjU`jW6id@+SKAB8W5x@Z3Z3ahRCQm*<-D3DQqTDT884zXL>#@eLOU|-YQI}Vq$ptUh}k^}`@)1e`Dlkl9JF6fxi}g8-LoD*8P@L%ZxJka!ecn@^BrQN zO;XAAh>43NoHUgW+@wmmoN9Ebj+i3p!KRjK;@qr}QtBbrgEDH_q4kKEj>ZRQrLXjF z3LfIET|o~?bg`m2>?oNhEbRAYQ_7HXJB}Z-_SBZVg%8A;jq>ZBHByoe+G1^Vw8I*Z zxxBPT&#GRT%3fqyHj>beDibl9x~vjq6lk&?++CR_CYeHh?nP@lm$uT`=3M&dhNP;# z#EJUqnVLS%t-!Fxa=n>84opA(*@dNx2GLD4KwL#XOet>P|EFY72=ZSIUgSDlwKFF^ z2+38%!fSEw#4?JtDf&C#D^^L|4M^Ibf5`ZBGSp+{>C3-taMS7+h!wa=U^h?-+*JJ& z=cPY^%{M%58d0O~0(S{}GX348E(3y!F~M&1bQK1Zi9Ve~X50kb{`PdUkL^t5;j z<02cXPzP?hpT&kRM+hwgHyJ76!281g@6)6{jv2>9`uj(56OHf0w;X*+2BW9uqKVvZ zd2GJmzM}Pei`D1cfr<+Fr`}Gji&W%QFW%@GKT)Abs5yJHk@>@s)(z|4LU>z#t1rCy z+6Jd%TGgdGbgPb{y#Vsf=n4KG)5&B&;JV>N`ek%2jo#{xmikQk`}t0hrEA~C%pOlL z^Z8jY^YGk>_HpW#JrV}~l+i}#D%hK8d&0W@Sx(FNP1;aD?jsDP zR`H323^swau^H!0`{d#=>Ee|ilr_1w4zo{zx=ru-EEU&JwO-$dq_fvHR}W~PL~tKT zdcUabu8?3q?)feDr@LCdUUB<8dUTM&`a4#t&f#Iw!ujLzF!+v_p3gUE_Ld;N4Dduz zZ31Fybm3@o*@=@DF7VG$bNys%C8_;n%~pp|wgH0QnV%{OG>d#YIxOqq~WWibwKBx$~QS_an$ zmt#_E(@1k+m9S$CC4OP3f;as{qebkA#+T|TC|A1u3B=J2_9mn>B(&irnC;S$bcpWU zovL`BYE4)tdCm!%Re8RMm}Pyo507uwqi9xseuF0y^7H(2Ql?k9b!T($?QwLf*1Da#;i>%cs}%|7ZPi<+oul0wYzM9R)Q6EtrhRF=5|!Z;p~^1c-mTN~W|nbL z0-8+7eb7OC{6dc-b#`ihd$+3FIW!qEU_O_{W>(-6s2a2qE29}l&4j|zQrebNsE)MR z#P&yI^H~#CmxH^4Vc1r9_g5>Y=6EY4SQUSz&zz7=7&-NbpfPTo^SoF#PmX=a1;Hf; z&Tj*2l$zc{Jno>>dtHNNHa&}aR$sH5bJ?+a$?;1mtG2+~?!i&$QRndFGXA~a(A&Ke zIXZjb*HV?SH}>dst(8PLmrFAr^jZ2P8)d?frQ~MlMB8IbHm6FekT$T_SKV?n#Zn6|o3Q!WW;YW9xU=)aSqS(4pIWRcYQRFOSeg7zExu1Yd zxPrzEBuhA%d9A)?5JL;bt(O2FiwX!;4v#ClibCviu-UqMR82sggeJTZ%U9y9oAj+j zqT@JrtCJLlj#ZIMI+)|nnl!5PX1b9Xy8l)03_V;T!ZlZoJ!E3DDFswwR^nkXkX8G; zqO1U#MC;z+QfzTk^Pu|dmNRU0dcDk^qY^G#e)8bH+rq9{skaV7$q}MMiMLK%z8N_O z4`=z9Hry~8v-Al43v7H5ieOZq8Kwl9TrtwO%@I{>gTZX6c^s%Sl1$Sq-7sk2RLS7y zf2D>J%~JD?8m06v#IP;PwiQLEzOj+(UrpN(wco_2j(^xFtFTA)NwzjuRTrJ^R$K4ala z2!|LUldT>>v58%9Dk0~Sg=9Ze1PMi_n*!$;1=G^R?5)T8qtNAMPa56l8C{usc}}$X zN4@zw>t{WjW7`@cyGrAURRm-)Jka3t>qWIuAn^gjwShtXA!-i@fo#$ykK{;*)hrHl zIHe66t9O`T%L4ns-&Ta=O+1hrTEZab{~)lXYeV$IwAZC;hn?7#!r^OQ_LFzeE#tdL zQkSk7!`E-J4PT~{WM2Zb5I`Kuhu^vjE~$I!zL-44tuH+=AU0dcV_wbXRmlh4Lc0U{ zHRobl@-8BoSL3fc@Da|ck4-3Ij7f4fjfxjfj}Bf4F;C@vS0;DV&4e4CO)bd4m?5A; ze?bVnwiqys`3CtCG^hO=i_l^~S@M+9wTBWNHwA%&U{6+ML;KUgEw;(x6hImIYKlZpY* zQa7F+z(xbwGQ`O;j6Bp(v!VSU7uxL3#7H$Th-Y(BJ}eVeXZ+*)oh zz21~?^LkFL0q4c}OxZAo;XX_*YQHGGb4C}48x=`HI8cJx27yRTJDg{ROsOni3Z678 zuoC%`DqQgXjlRotzOcR_Ccq2!3t80yS6vZhBrHG@R9!(HodwcV{(5l z!e_5&D5|I=N8W`uv=5@HY5?C;x*SGnQL9}`ce`W>VB40I+tsle-*Xwb5z9`h6p)FK z^SMM*j=qv7QAws9NJ*fgq!*JUn+=(y65lfNm3>VjhMFOy7bVk*e^W}~r)U-s2ktd1 z303{WZ)Nt+V2)UoZFkkVoN?AnO&>y?`?dvIsmFH*fS;9_dayigW05f-d_0P(0%FdiSRsL2Sa(@Lf)xiA_}HsOJDSJ!#qFMcl{nU zfTLp^nyGN=Ah=A>X(H=h*bhD1iNQkuhE&|qsUtbo@46cX(Qk3&aK}rO4+@G?!3UhE zM!s;s34eN*uB;0yg{LBnHvKo?Do>2`u#Kxh_chJ`{6`I($7ME}Y5zNEo78WJ@U;n? zmhrE{C(JWs$;Qia)du>wL_AcWGU}yh?VN8xqA|?kj~#py zxE&e>kBbNenVwv0&X8??Z4&Wm@Z#FUC|zx5aAc<;ac3|s{W-Ke&Ej5PFZ&o=3;zDM z9%^Smd$y6&>bB3!_Vgl?e^!guxHhr-BnK3-f83S7@-kqP!)358HBY2`w}^i5j%(^P zXlB+aaedXmtz5RBryK?+OT2XAj%)h^Wbr8fr=P)=R`EbyNO`=cAQ!I(5TV_%+y8X3 zAuW+M_Y`On4vujz)Kj`+y!+l-rPIRCg@!au@OF!SRQ}jkG&EN;j90kYwb88!PUavI z98eh4soAA>BD5=glcH}Q_LVQT`4}wuGd0y=SP2hD&!yvQn`{fhiaFEBEDZ_2CBI_h zkHzLAA|H(`dx;aEHIuI5Ec@w-4b!8py6617ugog>cvNZ^4r66vRu7JC^NbKa{d*M|1rS!muSgn|ue^ z#_8N0w#BL)dJFvju-A9fM-nh3$yJ9Ml(=ZiL;=aqPl8B^rnk$1LPT;^po@(c?q7ml2Xr2b?UY zp#E291Koq)(C9lIgi=CHNc|lIOb>=w%7P(|Q4@}6tX;SgP`In=6OK)ERV0*lYSelk z!cgyO{*eFnE+xoco24%@1EMtDiwuqPDwOD>f*6UiRy`;ka&<>0KxXB}Azq>?r7XeF z5Qtp8&?89p#2rKd`WGZOpFr-7!4O)NkA4{_zW3j5dHEG5iu*B)!ofsB&@B;-LKKRj z%wsTx5@Ik0(Na|}luG!J#7Kj%MOqpyo2NmXFrn*-GcH*P97D2Apwr%8-(vsXE8IhT z7G8kDS~HN7vO~yg7Q>lyaildLfg))80!@SQ10_#1VgB=WEiia8#aOmOh1IV zK?Bgkn1=lk_ZDd8rb8x|uy{2f`XP)4-Se&{fG7-<@@=(@BPbqF<|}y%{0(Kk&L-#x z-FS8=^VQLw7i*dtzTd(enzmd_-$8JcS4L&AZ#_&F-vU{oD|xy2zePQa3@}5CV6zMq zYpit7bP~mN$v)|QgY2sRZ_;i%KzEvb8ge3gUVO{U2Qfl`o+9cz$ZYBnWV2`n!uul? zQvank{_t)oL{laOf~LOzMVHK@aH+#NZzbZxnQ0H0nBxA$OJrW`+NR+#zFYD&cfe~< zyK7SIXG@*}&_Jsx^a14^W8XB)IQ*UJ=&Owfg`E7Za_JXER!TR~CNb0F#7D=8_j2IE zI~@+_dkt>za+&m&aE_Ks|5Xe$*3My>twxL87u1DIbv0%W2zrrPm~V_zH!RJGj;{i6j1dbvI}np1&FVA~Yt;HqdJ5V{1fX-Da@>!vvD&kp599O>iqYa`Bhb)rnU<3y7&3o_Tv zQI7bxLrN=B0{2LptR-Otk&-WpfoY}df<8q_KIU86`pIG=P*Sk@?#JMy7Pz+Ac~;w? zsjqTP7NnhrV_dN^$BEW>1o=VW_#22gt>Ul}7K(xZ1kOng^-nC}4J&Z5Do;%_2h7CmIDggGO zbz|CI;nn&6okR$C%Ex2YTfIhVHU2|=(1VoEefKMtE3f0b$XQEJXOZHl=`1l)w%_9T z(0&yNBR5yac#!Mtd(Hkd*BM@58$_Xs%Yh5H>|ZQXjJxyebvOB_hpsKawQfFk!UBG- zp>Eir1e-n@7#wZ>h5Om+T?J?m)Bqltv6FWaVTOyvMQR9sl5Kn>>*Cp35q1Z>%_)SF zEk+Q=Nz&OKrF8o>v1$!vmh75w|~0zs-DWm+GWgMq6N2e>CX zS#FY-w7NX2BG002$xn~jV$1!Xj7rk%O_f0+|Ch9t&PduQvI5aIk|#|RQiYs z5Z70vbSB$m(p8>II(2U~d47ZupEPWCXwL|%mh?b$>v)`lbYj}cP=X7d&{XLTdGZ`q ztTJ}d2v(Rq;~?ig`S0-y}{CyxTwbBhrTTC5JDp z&TYpT6kkkx;#qnL1n5xhUPh8gcnO3ns9bq&E!=mLAdw7plb}V3Mh1>1r3{i7siK~b z6gA&5Y4_ttt>7V#S__3soP!H-27APTj#7kIL-ns1Ui)~jLksEXt!OCCk3`Qf0Wlp| zCg)n$#BbIqUxl-rg2*n@2jj`g2IB!{d!tX^wI}ZKg!++Gf8-AuBw$eizaO*ty7oQQ zweeDM74*AMLD1ZGKjB)`^$Mq8{J_8`X^f6S>`H4bsx!dG#`e|eUL$%6@7-Txscm3Z`5h5I&&>(`F9rzh6RjdS^M^gtwA;$9czn6%}V>#3$uG3!N$a z#6I~gSSVjIV{WQ&le?R7TCjAX*bG|0kDKhaK^|=jbUgE#z{}5GnfwsVSMypk^1%-h zH}G{6XBBiTCiS_D&Nay|cX?7-7v^?#CA}oRj?9`0iW!q^SX>;d^qY7NF21v}&TgPc zWqNb=B;DLQOq36Z(T!%Cwawv zl@9S-TFmJ%YT+dGQVK~#=kxyCu#0*s561mu-A%v2L`gO=-zH;C!k}v%4sGAD4cjt` zT^k+ji8|M%(jp}uAS888UD#S;eLmi^NWOt05?yGmh`2!`;#O!qFCIW7HOWv2R&8-0 z*dV~Zgefp6w=UQJzTqJvaE~)zhXL*-z7%K0s0B!DW*62<&Qt!!l2jC{Ja_fq27Q!g z-dMyZU6Nqjp?PB}XZ$!cNCUD%4$>}yJi#^MJRd2mAU_>$!GvF!0_Q_9N~W3nSxPZy zo!iTl>3PoYIKNyq=N{KH^#m-%R@3YfkD0B;ef!PB$n%`(;ROD0bT!TkoVn$1k&i)) zba#w_ZUc;1R!xi~DU9v0gN%Aug-)Ff6BIrCU~tSzQO31rpouXO0w~KUAwBIiCn+5 zz$jmGK3n>q(b3kZc{M)9lxeu7>$UK*}|2 zk?+*3@B&Py`I2hxa0tDhu(MHzlh%T*Mr{xbB2MXfh=%Ik-&Imb#h97li9St8ie!r6 zg&L56gTLLN>!CZ2;H^cn!h7M3@O`(eX(C4^L}iKw44V8{OJ##M+B^tun0D4i=b_nk zK~caBwYr#Qg%5O5eR`UURUGEFpC>62`%=Jrw$(;6H1g@{ zkEnXB=;4-R;jHh7O)*=8|6pUbst$zID0{Y><^;5Y2${^Bx)#rI8x2E0U+t0F&YsJw zI9#UvmE-?6+W4E~?q4M0ExK#31wLm81u=o|*OlBX&PLobW8RT-1!zs7pGSiLxwnG@ zeL4qbLxYj=Q&?<~*@0GS-~#%qzRUv&#ZyM^xXJs*06J;mVMNi`8Id^*ooaagT;abe zE4#nq+?m>0MhOQeo=l> z7N98=J_|c9vhXs`L<*)Ia20l0t8b<|tQek!y9%Kj*~$Xo8c#1?zTvy;&3K*7rXON9 zo2)QX^LALxpxx%ME1O*(hBbF_SN|nu|Jy*(o+Y2ltUBV6DDEw+A{kAkll7FAjDh>S z7!l=4fp!6zQoco0co|SJ7*LsaugbOnl`6(ayv6g|QQ6-9vo*uYv3O4zw7v6+c+!wm zuhPidG9vcPM%YT{Q_~dHZj#>b6Yp<}V-5mo^t%HUYc|L%jYo-e9-M~Xv_4?PRGYge zY2EO1ftlm_SZ71#gSA?g5F;o0p@+9AvDIzue`cC7u>U}+k$+U4Qf9~A?&--;J=)y8j$c(wJCbsl2W_qqxd#ywEohId^)0Du z8p$<%c*$}<>I3marJH-HALIXC3;2kXi5%AnpI61q(bHN$eK1(0)`jPgkuJb4OKB-` z9C~^H(T-7u)h+QTFTu>X<3g3^qg^|jCA*be^ktb-kJWNd3xzCkFZRD-?Uj(3J9 zhObJv6LX<`;WAkZ-gzUVp%f_UfZ@(K@76oxlRt}tRNI?mX+G&rMKa#aA4koKe}1eK zhv}>FS@W&^ASM6NZrh8Xs=1DqIoKi6ETve$=s;k5jLkuI?mDj!?S+2+x^qvnHqhZ7 zl3hgF8dz1nEj2SQ`zMyK7+8&U$#&NI*GkhY5x0Qg-kp-Xu)T13K=7q7BIU6dr@K33 zV#$_fVyL52>&5S{QHTQz{IQPtNB!>4aghy6KLW}3Pu7eZr8n?0Eg9$rhVbq-aXBb> zHC{q5*Sr!4AXG@5tG=Mr^YuO#z=K1L#otUeBdoUPB9l-}&1h(JVZT zL4x$~v*EJc)mje1jI^s;)lz5$(y({gU8&wc#txwe=IXkt7ViD-P9 zj*mW|DqJ=)2nMW<9%#Lz7@}OZ$^+DS{Okos1*O{AZ)q41?Q29hVt_o|P{qFdaW~k7 z^dluXV%(s%x|})ogRgtwn4~haH=xhR*?SO}3B?yN3Owil&<SzUQZ|dm<`}YXJUzx{Pl(f;rzgr6M zhAB_4RqF0)bmaGf8&Uz{thAwDL`PXb@swtRV14hd>lW$oODI@#3QXtA3>4y{cyNFE zBnYd>Abd@Y2DUTP#|0k6TmnS@TL{rH2ypfFGw9#Px_B;QD1s+!TQcdAZD3;6oaVxI zx(k1YR|#cUx`Bdk80ZVdl%pD)L87~jk%RJ^m(?kZVxn)7yv0_vmjyj)QK- zhkLuA!jSkHHI?=kM}Tk#sUhOAc4k1% zC<&1FFNN`{8YC!os|dTlIE>R&1g>;eN+j(hbMI?Bt%PvgP2+=FLDu77K~jv%Wuu?m zVy9-;p}=;`F1MAEkE39t2nL`XWIYoAIGnh&HBasb$Fy^b)xfeY4jFPLpv`Utz2I8L zTtLL~*87L}ZYGa!0Fl=UH>ZVOecKdW?OS00dzAVAN*!#65TtvD4!TIX&&$lUWBwvkT zvTnI=oi!ZS>3W#J$_EYe&Ot!0Hv_Sq;{@2B@J0$tG~q`#MKnb-G4y5&2i;$=s8~1C zWAULGD2xewq^DkQ;JdIj#ovb@+7pV2R{SRdHuk%asP!brVXrr>=ttlB!RKP1K%Pg) zK+>5p7Lf5X!{uRVymShb(Tuc23D{h;QC|PB=>;cI34%OZhdCQpv(ExO5Zg%?#eUjxUfFKm^@3vnfoa5DhnZ*cxQs6;KJ6$+WbscbY(XG7bi=DqocFjxR(c<W<6f2nc>u7g~h;Vjzx2d|xNiHmwYT@eEG<<#GX_{_}LY0Cn$ zUuuE@CY>Y??qZ|XU^h#B)S1|JJ^GVE0NH_A9^WXKwJe2kuAoX#Z2iOQ`8Fi_ob~eX zjO)#p;bH43@C!5g|20s%M>Zp9nExI0W>9|^+)@*e2%vcS1Zu^W5fhzN+=duC#y!ki zW($frQq*18N|6nNnRniTTARmX0SR7&Q1=OgDX?bRcz(S-d9knVN9)dgqn?2`5&;Z+_=BHh>_myDXCpXoVEDec46SdY!#LdiKDZK?EyRu=jT9rI)NT)4k~F+C#bL!HU0EvV zq_eZ$_?h3li_}}<5AbZ@wQHOraxk{R7E_8(ve#;3a#P$?W3s%6Aw$7cGkWhD~^==FLO;ji`u9(%V*DR0*q-m$BjZPk? zb3m!sHCA&iW~eaize{2Y`9z>hBzgI69G>z2CPFIf69X1OG4bDlB!QcNjl!u*r<{zVR>d8hiWg$meIJIkrx& zufBh0IdAYf`5u{S(rE6ot!y@%GEDf_Vy5yKZa6EJT9NZ{=``n&iDpBr3L>*rzw8PJ zD;4=Trd_*{9;!bd%nE+Ui;JJqdwR2=sz6^B?kc)tXJhTQcR*f6QXYN>NSs%d3_OH| zT9=1c&i=DRmbjkFp8NNua%U`s|AyC@X5CVxs^(o5cDv0>I?sU1MZmXs?d~E#wUdB& z1Xf|NF<$uQ!tOFTsq;$TZud0;vBOcQwX)B#7}Jr>nPM%6W=%!^g+8dk{8p0XY%=gtv;hLuBW5BR26oeT>%w1ue z`G3mKT=g2>3rReed+m88;*$jF6p3HX`d8LH{i}*0Ty$X8!?Kmu)Zde_58en6+CW<5 zL%gXy-M&e7_r)_t^hM6O;_sr(%ZvA-lU_x%F3Jy!hz9SpM1#JfO3V0sq`m$vZN+lo zJ*~+@T#Mhvn1Wh-f9hv4o;g5ltOFgiV~Xu0@?XmQ4S`m$Kb zG3e@dSkSb8OeQu5f-ZWKwg*(o+xpO7OlU;4+_wAC+~6VP7N%TYhIni2O=ujE|1;{+ z;{ffP;L8RDlP=i&BS?^Qw~4*Gp6$CaQW${#q8q|pZM(YdrK7qe+WU1b zFz6Q0`;l@FQ~KFgdM1Np%nSDBJDzbs`9arn2_kOvTsU+B}sUTzA|8&PEZQV9a z&Y*$GdGLxUVuoqV`NaF5nD(KVdgYZFO~ZJqZZ+2}g|<(0z4fw#x@F1Zcce!Jsd?cs zjZQ_HujV31^ymIVWLjfu0^r%NhvTkyNE=&|HIihm+5 ze?Mduq|4W0`lZvi;G_px^~Mtak%Xa@GTO*mM_V&#wgoO-IT8*zH7Lv>8>6mJ5;y+F z#OQ8BDP-!K!k?a$!z_pTPbaBoUDc8u zUN%|FqC^Kl0tiZ`{HD!Dv>tUUMhBG9T}TZvd^a#cnau!D@sgv=?5g6yqUr>UjIs4c zA($m~=6o1#+Y$^}mLS{aBi!3#DLqrAh88#W%I z>S*`zEq`8fWN-!=e_kwKXQ$%5_dQ#E62E7~vZyeE!)+W{KuIIe^?t6X(2rpeXYijM z#7_~=KQY9(iSi3Ob>XUX!?tQQt2C|&bzvR++(d?LzE@Lf@YSsLoX z1S|C30{e39?Y@S2)Q)N@&a@R%C7VC|C6J!K<*!xmRxlvP2vzY_(&u*HvmZ!!UAddb z)NDd;E0Oqg<*wqa&qhg7*P^AKmXx~-kWJK6bYaOWe8udHwhhqa+!+g;$=a{>^Xwq@ zu98``i)7W4H<5peGk>c0RdsZROrP)@f7aT1LuVo}cFe^0x`)xMix_<<=|IMPLvByj z7_HPL86J3lMURx^^W%A}a$=NmunzW1mf|vn*9N*ET=71@r{G`iW*k<}m>2mFun329 zo<<5=oRx4)uEqSy{`muduNQO)Ww&{K2?;mZ>y!CF`PsMh%HP*nmP6F|CldD+#)iwc zjBm&gavJlymF=Fajl|1sKAtTsXkvS&+eXaYM`6YfC(jzF&dDIx$&$J=k^BUQBjpf3 z>MhqqZJS>&=10ovdO2Q#SY889D^bb^NQ!#q40BJbX+0DN+=eO%BMdr`!z38WA8%(x zib$a^%=+TRJK7reb8o!1se@vE65Zn~(;ijk_RXwGCqC`8nsciE=298jQ}DrX-N`gW zcrQfo3v9#4%jiaoHy!xPaSA*ST1n}_=4qkd1Q1P8A8^L}Nf8glI2Z*g+;|MO(M0Y{ zSXrIveXok^E(AFjf0;9-&Q8tcy%WXBFcSCwsgI-hSW$H(s-w2bvL-zXgBM6XC zkJz)qZkinMbNgPLkLWD0bB{q+W7Rp4$zMM0@^*K&6pMx2(v)|5aiqd`P4ElW!q)1V zs^bL__*)%`09{}u=4U&`qE^s9v;>Vp(k+(|>$!BAm$5aL89Z#QUmN%D*B^UJsEsu2 z%5jjY8VGG2vJ7l^RqoBScbu0f(63PH)+&iFvd6b;(i+EiNAVd!Z(Rc+Hb$%M_}K&&)Z>^^{+$;;WfD6pMOjJzazXlW&2t&)yhB0 zm2IDkzF9L|hHigLMF?;VY24NbTNLd7$u6WCx zv~Jfb({Ip(Ua$hGjU1uDR@z{3)xAilNWfO$4b8E!5h1x1_$T0vHJMw}q+3Sp9yLe$ z7wN3WC7{x?y+u}FO}=@CX8VxGB0SVaB#T*yo-H`d`(s|`mgK}WuVwmf?tu%oJ8`rT zBB%3go#*~%IneJJu>65eK_+GNp83I$r8}97T*FW5J0Z88l`;@3bfFee>W&@RjQh4~ zy`%5N4lvBslRZH49W%J(L(dAd%Ieupp5ObvjNj~D{72+^2YL$(t3}&1pe3BU^sLP! z41Pw@!u!qkxS-8+5XkB7jQ+w$XpcVR#MQI%`vd;t19MQkxuc}R$mY|6uU7MxPRyHB zvmpGhFLqV6@Da3gPSo+eF`@p7U-D~2p#FYI^Vu#?yYGprGRUOn^L-UjPYB<-)LV?1 zDcVh!FUrq$o9sEaRdH>#P>N&7y@qQ%G{C%YjI40%DbwV1&HeDjp$+RCZKyS5+0e?V zrUr{ok>(d^j_?8#7noGEfcfnL*=>2lR`?C=nmt+Jmz<;1k3(g?2p1XXoy|+ycU-IX zn4dhScxO}Y@OCY_sRbPZew=^*itX+4!c?rcKt{H|%#HUq(9R7&S_!cFV%+oXdr_R_ z-9m%nTGT&_Gc3PiZ!{-N^!xSh?0V zh;iUru19{4wBQ;!)&kdWq(M6|pXTr)xh?~CGhQIZ93n;RjGuA4rZEkfx<7n7EfxLu zY4o(4R&Y$Vm6i*JhoJUjg@M^OYlR_0pV`aQXz7(V=?_Cwuv=>r!rPUtU%E$UD*@;) zYWJk0XSH0|Muc8EdB!%{skP=OXF^`V2hc-g;rz~RwW-TLz_P%fpI2n}m$QqeY$Obj zC~G^gu_ASRKbdPG{*w9#m;jR8rz#QZ;YFOws0b zZb6oz^}7b+iPh)^z}VLNj-+AyxpO>PA#I6?xviJZCQWOX$zD;b6|Ci1phXy)Bnc)c*d(q@uuHSXvV$|8j7uI`jZTwfQwy{Ai0##mur(7k2LM zGV}{;)Ksx@E1@x;rRF^dgoXh(l~oMG$~`e2J6BjZdkL0Q+URB%m?W`|JHoxk4;#W_!(OKIDQ}or;rALZBP;IoApt( z;Na<(e0Wy-!hVsV!xh;hLTHy|wMgZ0RsA7Qa}u-D&)8x25FEL_iV$Q0K@ObHHGP0V znr1`^F;%$lb?snTW+VBXeJjT+U@=SO zu`3cNzrPHa@oR)8drHJ?l%T^HZjle^x`eRV(T6s`a4xiHFunaow5&jM@*^4NFhtxA z;_U;oKw(H{HoA~gX1PvyEY3df9el(^nekld&}hiJlbB4Ki+fh1Qjv$1V_JU+oHu4r zk6`K-Q-gAAmq&{404%qxS>lzwL@t;QdYFh`)Y>)5VC9_PiKpWByhp&Z+LPz2!He4Q z)VEoxTO*!!yWGZu1ffErT|*VU8@ZZM=Fy=q-~J|Gv=Yz)WZ@4?kg*9^S*6ED`g(SiEV;Ei}V8LGmd0o<(n!+ zX_>ldpx1j60o~5G8|9kt?XjY9DMy#v>-Bu8Gxp8>0#8}iOXfi{xiIrqu5C7Z3>w)x+viuz=XLJaS@L}~-pP%?Z?(5s&eh_t=(ch>ke&I_T% zCpI2t6s1Se@(T<7M`Yv-uqskq;UN=tA{h* z{EFC@3ptASY#z>f0`9m&0m__ra(@^P_7v)0HfQHh5L6wMqPG(4n2U9!-3fCNlX(N@ zPy30V)!>P(xrX3!{u=XCoa@USIL`zOmYkpc^=H+G%AIZe8qhd`ky2lsu8BQx+&er#i2YnGk(QcVTR&RrS(5it~Us_sV+Bj#;}96diFeuGwD z)bA!V*4XSOtVEv91+b0~nx07;BAzjqL5mwH3Ss4ZSFnVf=2y43dD1O5WRCJ=1D}%N z>|&Z@lJ-tJ#=T-XCe(OVQ^d7MW7k*II%8te{@{aG)%hK<%24SS&xs~nG^~i=@+%*9 zDEtUlL3)#*YW!iwV`D}Iz3Grap4>-{2N10u*%dt)J9+NAF9q_rR0E0pqU=M;tQ_Gh zfi&o2A^#6^ruTCqfpbQ(Iy6Gje?oMLuj!ZC^}k+SqSEq9m_MX=;at;#{EX6QK^RGJ zlOb`$JMy9c9juBoWy!5BdKBd=`VMl5QkM#9hPcQOt803D@-2C>OmV%Yt%Q95+dzF> zR}^W%O(HKwDSud*rvhKm4dxT}LrM-#)S<|vL^p0;F80(8!-S+?CWRlg3qk!+D3FW3 zMlt(0h`bpDzI;BvrYFEr_prycW7(-DOr!%gg^&ttd&W$vQ&>EDg# zN;YC^bp}$QNzY?ddmMr42JpGir>R}hD-v=|fldyr*#f!l1Ly)>oh8%hAOY;#e??0e z)3516*MHb79ic&s91ZZ}lRjCy#CEd1L5A^|IBDt8USt9#wk#Qgoo!Gbdw%_S9vild zy`ncclV+;f=__wOrBo@6LP^_;nHDRV(_*D%I@OaXncEWmT1qf&ibQ6CbliX{TgjXR zmM+13m4NNy?pLj?PPei5#<_0h1{ZN=qWv>1o|fv4mNOZ9-@J*$^21yV6nCu^LUi*& z$LRY3U6h>=^OMy+~tzh_$K5~8a+vODl~c{&`JX8QycvQm+2jnBIM zFmVC=x5PQ*m7_OO{b!_uzc0$O?hitPA4=h(5hx4@PlTm@UwaaAR=C_fJ^aArL3C68 zO!#6H_^ykCbnCwc4_uFU@Plj)s42ZJd0?ntsEnbY^T}aUr=lmL&LZ30^f(h2`X*-1 zW5WC%?DHRRYZqPe4`AA`4-D|Y)MSw?`Kl~m`sf^1^r|4KtehOXHb??X zz0!g$v)0-vNGC0(ZX6Z$DCTt`bjlu!l)vS6EykFD{HWKLHH&#*3J%QvSB3nXwFgWy zDts*hra5+SP3yS8DmhEic%C5U-Q#gslC^`NKu}%dezEEnB!1#r%gHB)X_H_w3`kT} ztMpJtZB|J^Gvsk0+|(oGgocnSLb2Mh_{bLM_&2-kHLv6Ehz>d1mCq=0W6}> zt)M^y|76M{xsI#mS8iS7H?oS^ho&K5+66EKmFkv$Y3mN;66qxtFWp(fjCEPWR`B^c z<=pv!+61M0O!pq{!P#fCfip|irTA6{{UncXInMT?)SwOZRWP9umfb?Z3w=i=A6mB* zNh$(lw!5$xsSoD9N*+?(n6|psx^n_w26ig&myQ#(r2*5{n#YBeOPGGkYw;CoJM`}=+3r8X=|{(V6=m1BF9Xp zTX}!pXvUiRh#Li6Y_#!Vq#n7o|u=2z7hhDV|Y}F z4QV|h9teRx4DKf>f1p7gITM3ugsSZs32~j6>qBQlNLx+tQA+eosow+nCGS;F7U*}N zK|2O%zf|R-#U!Kx(T1uC!k`FfA4CIa3W{}G2U&*ECR&^Ds4fsqqv=WiBEeSrcaWxd z_Ae0`cJm|MkGzp9XjV`h!&U`@wAlY~MB&=N^L*AL3HG9{<_|akB`)KLcaXH5w%KjD zpU^uyqSzVV>Cb;wi^TQ*BkwD}&)=&k)qoRa^%tpq?lZe^g>j#x_Iv&2Vk$iPBAp- z@_5Fsv&K?;Cuh@aK$xn}?-|a>Ow+nSv^CwBb8i!hu^&JS`s~D3dxX98?83}AT-DiZ z;j8S>`hP7Y69h0M$w}=y1)zkmep8;ITcYN*q0C{gD$5Ysgl>$7_{6{wtTTIcT(OZE zr*+A`zCEC&^r*Vz2*cdNrL|29aEM#-Cq{h69}OB@~H3?Vh|g8D|=_3`7i|*_(Riyg43u_?a0+`k#DssnkA@^Cl|8; zjm!vx>{OQ2Uw|tARWZNzbK>TwaMIMr$(qvB2)!zoLelg}TNv zKX^q7%9_1Xz2WK{pVQJi!}YjGW;~a7edyAIw!4QE)O=>Av*V}oFznT)#PqYEQUk_P zvLtYV>dJ=x3Z0(0S;n^$uedBDd>dmQeMtq+@~vVICoKW(i(C=G{+V@Iet>rJC3hoj zvs)ZLPUUmb5qI>>$E#iBx$d=nutQktYusaAXW#n9jNmtVebn98UYwvByn!q$W7OZl zPLY~F#HIfP4y`Box_i;q(4)S?iIk)<+rqM=mGEjm?LYH2^@>ih`eKT7od`y-p>`@D zorw5SMXuHEGhu%NY-x0Pqw2#jFD)Dt-7sDw6sAftrePhVk8qkBQ8PW`WK`pwyS5F~ zx@Zj(fCXFXFk9}YfNMF@m?>I@&5e5?WnKxI3F;+}$>1}0R5mGc4>{p>?4jY|E>*eC z$0hlRSM)DWO^rm^JWjkukstJPp9|SDb`)iSIE@z*XychI(rs?c2q#%M-rvc%FUt_w z^zO!oe+Rk+j`*~czT}~B_NPzI&P?2U0jV(iucf&EY%&`C9vY+-&{kgF)LV_+WKX>a zeG)#OsVT2H3V9N?&r5sB3tt?55`MD#mHB70g1qwNe68O6N!UWW_eBal>-79NU-<&3 z#bhY$EE$7QC3ECM41Wc@5D6bd{^$Mcm|Dk)mJGi z+yNh2>G@e-dPx=J0{2SU6Tx2@@`UZ%_wA$U)|&#EwK))(-+wX9P>0a~rVB$}H17!w z$2=Xmx7>KlTJk;Xei z7>dfpz|8M&Dy}K@o2n4smv^?{$C+bafMat=K+VUry8d)FT0m*gm$NYih7tAFaO^L6 z7v^mx;r}%1J>L>bPzOlYqwZGV2Tg*Hzw3J2|76c-R%K>6(#4ChODpo+txyOl2)kp~ zX`YF2XS+=m(JIc}mdN>TKxbRXr>NAT+C^6$=2^Ot)9Q5LOY($L3pXQqQdobOL?2$4tFG?jHZf} zPz5FVx&z_(LLfSQ06nw9bM54yX%%b>s(-POy|ITq;ZxEucu|Pin-yWMDB)1`emqTD zQoOY2KrScx0I6`#?qSBdJE-Qo!I8$OC5h8WxIpNJ?#4u1d3< zvg!Sez5GuFs@;#f@2|&H@N3A1cS51zP?VhwVG&z)^+y_ooNBW|Lp709`!OKtYt9b` zB3;zwBhd$GPLdUkmXzdCrzBfNT4st&voN;&zurGJ{%FlG!H4_|* z$Y0wh{~K9Fa5iJm;aDHR`Fp=PsnPG!0jqmha4e(?F!IwYn25RN+Fy$QiL$-9Z#i5? zS@!I!M7I&BlW|#f{zSFAXg3?>!2MrZraBWIK2|% z4p`61XIl&82VL8D+zV)D*9|rN%|^Z1ODUo+pS*ar4#USG z9YA3|dESGmcGjb)4fUvwhto9fem!d%trM0`H1VqGLycDnLq+v3!j9Fvrv-FvC_ei> zyDjVV3|uiN5p~WC?mPbhUCzJVdpeimNGBXD>*S745ETLZ3A8*2#`h&y z+wi6z99bDZVBd%P)oKDWZlTNa&a8=*?9>#2){zOKRs8f z)ozT4y7ZqUEy$@1{BXKn*$|iAMIZRQUf0PP#aa=P9%rAj-h7U4_zkv zm=0}z@Cp7jGC7qCIIa5+6%=#XK&SL@qZr*34Cq+=2GoC9$Gtjav-f>93g_0GCxRuc z2j0(S0)*2!{9e~t241|-V{0m>X@M&zMpnQTLHR9>CBa+(S=RvP6@?MtXjG=4O5>cT z5@QrBw}A-KE&#R{3cyEUo(@p7w23|I$$`V5c5}EL%@#h4!#l$O`A$f|)7>*}2Hs2V zLZ-MA0Ua}_>HVnf|6LY&cPsWfUX_6kP=_ghq7;Vv+bVk05C1|1p|r-436roG!f)^S zDRkcs84r?;jCg9#WR(0LPLDvS(M9yv!fQTx#sh8%ZFPPX6T1U1kzQXmgdy~u)_fFe z-DjbsTCEd_NnnK$_X|tTDFLf*-MKFt2&^y9ULHf>1*nZ0{Js=wZ~l}5p6q3--+QWr zo)u=k8tg!qi!dGw?+IV*DBg9wCp>=Dj!d9nDdv}h`!b*T>@OQG*?Ir%SSTVWj2cJ- z9U8Jk#9G}2iK(gvNZuwR+b+A3AM>hVngJd5_$5~IcMT#F);Wo^l8?z$<>Pl(m4GMJ z6;?YI+*TL&JDF0O)3qyqpBUpB_?*L_y04^jPmJP38@SPVK<2@b^k~Sl$zKbao~`7f zC&$WHRHnx|tofVg8nw(pc*rmCWd6_`=%B}Nwaq$bFl*`ldMw&GZ0)Q0BjL9E%{Af2 z>N}`Ldnt5TRzqpWf>~wE6?pR8_gVy97KCsmBq;y-_@f~`&zw`t^PEC*%4&RbWQ0wG zo$wd$gY#bt%&aJDZ|cDjv6{iu^JwVAjs?5YFv23w%o?0ul>*X_o8?mPBW47qh8V=| zhGdG=_lK;Bsa8S#8S)HV4z;CwBZYJxc9K4YKradD#ngQjV_SIHeT#fy1fm$+)EfoPGuk31@Tld zCk4uIEN!v59Kv}%P20X{A~m+JeQInx(~>mbUt(Xf;58?CPae_$z9kiD$ zxIZ)RTXHUFjwu>)(zWBSM0?Xzk2q^;C8tvr98nLiOBzkC|jR< z!$vgS8Q$fcpsrzpKhndnds#?e{LO_I9}R)&ixxzNlhB`Hn8ywF;+$z5+mpDpBN)XIYO7BKwIj9u znu``R`DAq?+Ize|DUW$o^b#uan{JmEIe(0kbdNcRdhWIK{%aa>;{#ozj*Q|_#3voq z1&ss-6sd{2hu!KP($`alTF+ha>vQQUbaQr48eGoWh-!O~s~?Bp#_IDY{F`67Xltaz zq==a(Ro5+Ad;xs1>*6AF?aPZwDGHz_gNLRBeJWI~p=<9~RW9w_s4cJUSayyiD# zS+d@qe?s6x>U~okNH+fUB}a_>F~Xcxf+dNky_@SUS=I#_GGV%+Yy6`JYY$bb&4MMa zxDe|+{(^yza4;RQlM9NhgZPo&gb#tHXp87E8>hDlp&03X;7tpm3gs9?pqu!wEja^^ zc>M6|v<#`I?;F`4FQUy1jq8wlo_PG`u@5U_12g)*mNnV%JR~3Uk8C zA)dpwfpz!k?-XbB~R%BgJmcs}P6xOeiZ#K}JY)dbGsR&q{I8&k&b- z5x=*gdy-f<>C5kVM5qMu4L;r3w&${Ny#*2n^ZW=~UgHfHV){Vyl1Woe3nR0NjVL+NJVW`%cf6FZ-wXPbMF-KB^wA#c|HbY&I0&?yN^D51E<>`Sbt&2iIx~2m@6N8IP8b` z7W@8w5n_mcPLFqa9`WwAIFg7HDho7zRvdwi#{=5?_-As|3Fxr^pBST1tt_6;6rGdv zqK{>NnR(IqL<>vS7_ZCsk+@PC%SYa0i>Ir(N{=yI3e!Z^6q|ebNXc7&sovF-bYLO! z3*owCVuS1?QbWSWB|K>8FO`zLkIH7L2w%jd%axC|(40umk=gu`eQjO;5h}aBlGQu0 z7trPz&c3S0>g|r0q#QP`VgMN~`VTQ<$s%}#(n&+uQt#?ABZk9$ZPd-ND6^3SXCyWW z2Sj*U*Q6n)c$|&*NWKUtF%+?;IOG%AA*Xn~vKsYwpH1bF`X1hx@)0^vqC6d!o(La( z3R);I#rbTyir|15M4{b4PE2odL2~3Mhcig`6_-oQkuwRUU$&r#q~ufMFKVq4IfBkZ zu!B4{GX+Q35b+~b9RJ(UozZJLH}YA_$f?UQYB_xulyZSb-fxY)cq7|2ShfQkXy+!v zqgZyX;_HcH@c3zVsoEad?#P@Uzy@(*sQJEQ{mswB^M%?ib$w-$k2EtD)gO`Wi@iNyZ$m(`Ra&wpVF)+u2&Dcm1Q0e}-(UlTxg}3zLW?pfY@STKT*eWR6;cUu%2Tqb&`)`CyLN=buFMs znAUC`1OG$NP=C%F5tNnm>QtUpR5-XUTt3xV48InbCQ3RNKSVlUAif?KQrvgp>-=U0 za{5?6`vyZe!ObwR8^Hf3>=Z(`4M*>eTFbqr`;Jjqf>gY)%UzFny+EBE{7;Cuhafcc@J`zAtcsV%$!%Kd-+b5B_dWbmV@Psn@m1h+Y@ zNnFr~;7@_<(tG{_J>SwW^YmH-@7E>SsTuMv?0uK+Gv>328svxg)Gt=?Ltbx%sAZ1b zh#b|O9ddWb$cpqkE#@Y3N80FT>KR9-cMK`Ykr7~+(>v}b_J<-<=n+3;HV1;Ef6qfj zru5}d+E9Y$%5uhhayM&~Day75!>$FEesNt-P@;A|Tnk9QnMKA3q|TAR!ObHgu!-T# zmhfDP{W;BdPn#b3n3i=dz^pMZAz``i5-!R?tz8%yQAc4jziFSMBN(}@O+;)+QUuxHu*-i`mlr&V%`**0+l#(%YSs_aL7S=kU!d`&o__Qlq*Z{@-; zN2BAosL>kVK1iSY{B{tzPj-6M6Y+x5t(_dTAU(X))b*bu6*NSckPf+JoWe_{gYQ)T zwxNX_9A*f}dtr^t3WOy4s?xgG0cbtVue?ao0(vJW{jkb`3JI z%=zCH{0gRZ*OAL!|58hnht9w6o%JVRDU`WCU}@Y5SYfL;GG0PW&aBLaRJbG#R^yeH zstdq*+x3C&2GL}!pu%_kBw#7sruc>Jy!LC2{W*u7=nXS?agij|W4e{?YmJ;Eot>z^ zamgZD&!-kK@@VWeS9H=}FcwGC5?^#5SD%N?*nOvYWj$xZ(&qayt&*-44y50mcz@B- zchha02kRsx7_?zwF3-JHwd5~e;oVA7busp(BvQ{3L?4V|4j2}nzbx*cd4lRCDsNpL zZu;@WFN!b|sJx4{|Dqk?^l|4(dd^_dE;y4UddvZkj%joGqNv`lq08TH*m8_J=kk$> zZ>`ElQ`z`FM(m&|un*ImX!#|n>+q^Gv~coxKrm@i9-QQ)pL_eJ%%3F)5;vdT>?>6D z2@qn=QT`jC{3jIGDI^@H^lp;K?GmYv;#Kq#sd6eE>aJcck+dpoH3jBf#Qc94(WAhE zlGw9lFo0zD8}RY!0d6lC5FQ27Ie!GP{i?XI-Qykx9_84@0~Fmgp*(+ib|BrS=%6yu z=~%%27YyJ^3Bf)DFzphXN)>5AyGK5=Fp@&5WxESmq7McrYKZ0KNTL4z9b@&-ysk_m zrhF6xTzMASfoz-#fL3zVpv}@~yBa2GgWv%`6i}#+;_C1jakKqPRyefqNpfQ7vxd0ZelhX0j1R&#DYYRupoos* z7l=V~=vjt8KRAab!AD%JwAJcarb7rWNBcJS0Uqx<_Ay$@Bx)$KKnIE{6@IuY@X-Gg z%t$T#7a3N<8`liRM}F&fqT+;ZVHHnd4^fMw2Ptq^6-LN%Ue7%N5mwU{J=0r;1w>24 zTY?sc=@*$(?zsw3`LLUJFiHjJAfa1e5iM8yS*9x<$<|8*C!k2;jJ|z|R7*W&ry$ub z#o6;L_JCe!ZKWDiF69Rcurnz+-!DudRK`_4!&UB{ewHC{`+5$xw~sADYv`l)Oniu1 zp@1-qY<)2NB6h&Uc~bH^|I#1Yyo z0Zz@oeLB0s@Bjp@0Q+r4~=b?(-I7*i5`i+8&(uy9`;2;0J)nA zHA*vw8bmq!^4Se7eSD$)nY{NhzInv-lqROPQl~j^(f>03#=VDYOIkhLX}Ft7KVsr1 z^ULx^JgC_Se)Q3Kj9N`==W{p7^evch(3w(iW#%97+#{;|w#kNnhiqgpwwksvE>_}O zNS!{D?4)xwdP(NMjNgijJ5w{9QHAmlnXc*oXZs%=L9QaoW-T7F4n~MC+j1y|%JToH zI_sden)mIur7aJoKwDhXLW^rDE-79#KyjDi6n6r_U5ZmE1SwwJ-QBIYLvabgLP+w< z_xq|o&c>QFLjF@2lGc}mQBjZOa zzyYBS<~ZJVJ`Bqch?lGrH)m-&>q+3`SdrF~k|V~)qNTD$zgjp-hK4aDC6-S#csHCW zZD>RgoTovxQBbfabC;U6w5;n)gvwOJo?!P|MKCGAYWe-Ka%NvVfjDtPpiZ) zzgctDq<(xts9cu^v;r+fHwU53ZAP>dyQ5 zZ_TF#y^v+MK_hbU=e=DiZg6)aZkp5Kudzkn-U7|SF%J%G<%&%ATOy;1ia^5fnQC0` z!_nOm{$wLZFol{1{yNpfrtKw(t`(*T31nTzuF0dT++^ z3iM5Ej0@a2F6W*ph*+I+W78wpX=ODMwJy-i8acqvvd^@f;zeVFU))S-UI+bq;Lfx7 zv?d1mEo_jmE}zXPs`-SYkI!Y;a_+73rB@8X7&nB^<&hzS=jYLYiUgbspj*zs58iM}pbo#tofibIXBzlX$W(x&uAJWMYXPDGOb{YeqR->jqW*|czfNxS9Zleini z$ha#^NA4cZeBF9aPXv+kf1~CoQ!3`&a!G>c@M62zulLioymZ5PrB`@`S6 zC0+En6&;Yoa%NBP2VEo%Mv4VR`jzt=VpeEiXk25t>&v#CwCiRyWd-GvON$d@IrwH|SQO9<*c;8cRxHMiW-}~ln z&NW+&rTkwzaCPK&Dgi3luUw($SLa$3W>23_>c+CJhGlR#(oe}b2kN}SzioBul@T+H z4;%eB<22;);cuVK3?t_2#GFXrvQcGR=f*1Mr}cmVmRlg7goV-m)35)&x2GVX zH}3))-b#uqA9yR_C4M|_*4FsfyczZ|}l}h8YI5 z$@7g9Z4*nhJoz-YUthF#g9m?t3i*_D;Wl$j;gfDiDh&n!V{O{(ZBX9|5|>*+ykiX+EVl z`T&~X9`)cgTr+e4`7LMro>pJUvbW2!wEqy@3!IVAot?L8(3_dxv3^ES6=eM1iOruJ zQSZ|KNCk5{3vX%%4786oTn)1n6SNYF6yCNkOKZp5eIX+JbpJagbXD`LWU-oBi(WAWikt@fH@u5&j^J=q$_~oiD=2@z=GXFA zAK@rv(Xy=f&rhCSW&eq1?9jDdBJLT=FS0jW*S5Lh& z@Y{F;%KV7fi}v>%8v0#2O`9zgnss+=)`>Nc{EIWtb{nXiOldf?`r7d9lM%Uh5%~`F z+Um&0|Nbt{~hj2 z(9#t*29x5l5>3joo@oGPxF#}*Cef8=M4~pLnz-g&0(|kd zEsce&z5fN}+vS}d(5J&}qPvU-ogtrT>-D)mj8BN^5SRnWRax zSFAiBIm>GKsK8>MVxm!i>HSnI;X?SNCo>Yq=voypFd%md}O=W z74;`D;b?o8WxKi#sEPoJLVp}}V(%(x!>m)WrJu!0yUwJEJ8+c`2>3aydp?;fHx-F5 zht$V`tC+AHdLH~=@;jeErRH3##t?tc?;HwNf zNqre%?kii4$gcxzDqm%#I7zr z{u?Jb(ggCf3qZaI5O1M8E1A1Cj2C5`lDmjKCg^}MMLE)Z42YtW+wl59=x!CS{(Nnz z;aSH|dXdfXU4~Pma6k9Apld+p(S&aOONn%`<1bOXxH2uZv_C2mNN;?kquzqh0ariR zCaOb#M_;1gvaT8dWmO021qVu(b5Fk5R5>w^t}G{>8K^{i^ykqg=P3_=9UTlhQz|V# zm{5pH7V)-K#vAJtGQ>Ehx$Tc+6t=kfDD$?seo>ywdNrz$&WXgC%1Yz!LRE@z98K)l zlYb-Ta~aw=UW&?)B|UNLG*vB(<16`?iFBl|I(BUX^fLC~dX0ScYfUy6HXMZ;J2EGcCd;NJ;a-aA7?3w64{pa<6Uiv=faQbUEIR1K<=r4EEov~}Tx`xw) znS?6SfBu_68wcv(8s^2XuavfeJc~^dJ_MN%NN@+^qvfBisE|I*dL|*lDH!`AJB#JN zjvMucciFFWnK)PC9Hc}eQySjUNzru6SWs`bi1X3ujI%ublk5bLw1DB5<_ENSvjG~a z&K1aFwmjTS&uc)si-2_#okgOE{!kPTmyIdV1=?2SSQofN2Ahxg&VzV8QL~`zoO-(U zlIz$$5mjoh><>)U0d9uW-JBR%RI1=}3w=plzM}BlCN*2&!O$+3qn!l03 zSMv00{|QKb{M?d`?zZeO-&XL7!rOldc+#U7!CfulhW60#IJfMu$s3;{+%;zgKOMSx zSA*s?j&Z|fnm!p{9b(8KAepLut3&-c1r;wgXY^GvUQw$E3241T%aK}Oc8ES)d8zPG zO~RztF*;1A5RF_UK->*u&VY5jvOA!N)F5I4@#gZycXlH$;@%yrhh0g4LO$Hkb4@QDdhKc|P_V-ZkOK$~nLJJy=l;I*?gecc> zP76r9ad`hD;@3N<`L65lKZn_&W|&Yk@r|*2KYFDHn{T{?wv#;VB)}$`R;XPU-T=H= z;XevUa#7@5E0B~Dl$@fk+2I=n8xC()qJmSU6JUXuTINsGtwaNc*=!78jVb?Ie6Nm- z7v+1_C$)-BTKSsQurF(Fi!nVcP&oX#TOyQ9mn4I943$B~Yi)*-YS34qO3+LooSdMx zF?3n!B7}$(2})2wE9X-^ouO7b?Npc}{`gPeBE;ae=sQtN0l+=jgi7fV{!jk*19z(U zRU(FdHFXYG@m&DZRT0UP7V1R9g+{7->C5rLTOj$zMR(%%5{#qRJ?2YoP%$Q6lr~Jf zY1Cuw4Eob>K}<@dG3wibX5km(gz_Y98;#yq@}O)LAPFr!>SG;8=@$<}TZT^)DyGxs z3e$$WhbL0~?m>AEdgAUCZ()+zm-e$aW8Vq%;J~U&|Rn zvcAn_Rao23omN;66zglgj%~3on=01#!H;SAt!g$`!f$Cdr)(;_Mq@e0VJ5rw%yLeK zB1X6}YPA@jkLQR46G6QiI3y`SM#jGyaF9>kROKC65ta>ay)~0xZYE;Ym-iGB|3i7K`rRc6J9KPt zyRVV}Uoy_UJ!%rViV<>f5PNG5WpwPu3&d*ui(T8O*F<%D`9Z%d$M#m3qj>i-NxK5; zQ$D8}ZZ*s;FE?pcH-NP$|CCP%SU<=;8(to1P;O|*llocDS4~shATG7?w-k*odUhN4 zDwM~HKpW%zv5tUExQ01q|0!n&>6UKOWSoM>GkLM3vC1z;5;IcdTm}w076grA8Q-jd z8k_pe=X9GdV=KaW-PUZ=56et?@lmq)X~9_kTdEMgO5$KAw6Fz!e>@$xb?y9+MP06F z##>{49%5-Yv4F%)7%L}(yZ0xF%k>ncA9-vt#J>kX#VNKk4NE2~9US@JqctFJL5IJu zQy8}SV%@agy?G)gH+^46vgO}d`E@q(@$!<`koGMbr4UYJZ#Pz zLzM<-X<#2y6`5=c?%aakC&C3|qd>cDJ-ZS{hhh-SUySuMyrtWkpV>zSOjF2ide8Hh+)1W#Hr0&yPL;X*nM4S9U+^olr5)$a=1i zpQu}WuE`I4ra20CLg{^Kr0cmRpYMME_(%Euqu%Sx${xXXOGVRMH3$pQ0wkg`y$&u- z`TM3u@g08+7EdKo{!#0wGbLAr_L3pk!MHs{*c}|>D4CZ{eZw{LuFg6#^er)Ig zD{85wy#8D{YM5(=>qFt#65myELoToea{OrD5`Ql>P4+C6s!j&3Sj-XSqp-Yv2B>LR zYzVQ5CM$?+5LC_}-5`dL9^!6wVCe62QhI8t>?u3gMPEJ>1F54DUWSht&H7gEx@{!K z7&Gb#JS_UPpeyAUFr&_>&Q}YV-4)se%vti8-5TSL=PB!NU#E!q1u+wWrIrWNI-8CK z9Lf!US|BE$#Oi@qFnI;%>`*;)r>yX92RZexnLRvg&xC+s6|{Kx?5NS2_iIaO3+6`Y4$-bA0m9<4l$Vt(Rh_B@x*~QGOw2 zIF$FSlzyVvRE9SZd?Qo~`-Ih9*UugeKl}Hkqw8-OcD!5f{HTMAx(P?LnQH=ho{pYUn>y7q^zE&IU|(U7iq>GDpcUSY{Xfxz zr4a8g=kN()JL}6AD(5lN8);5`w0(rhf7vn^4U!W6?G@RjtP#m(-aJqVr!c}w=33vY z6cCp!X+*J36wO40-kq&{24{%G8n?ewF0g|4mt55gsuVcRSK;oH_i98<*=YO~Ou0!a z;<)YdqA$M^-YIJ>2R$hKVZ7T3-1w35GP;$%fBgmj|o3!>%X17cSXq|08+!0=O-#YpKDGSOk+mJlbJ%4quRQXO2 z=wifhl)s{$k8mD89sD<#x)Jj)+|&6Nz)s2=?Wpzvot=ku`xp1HeiGEC-)j^hNf{~I?rlTDbQ!&H)O_r?kNsF^X$`fe!UOf-%(}drVdMl+b2D&BV?Qse@_O;}uG&$f>!#YT2X@^;PdWZ{sorb?E{g0M&xJVVD@H z^1q@dxeM$ErU+d@-4;W}q=FfGS44X!`9Hf5jGupHW@f=%R()1K^8AGrUFR&1Y8$4) zi4i7ZULlyd&gG+u9id2KB{3Tm@#4=Wg35PZ_U=33%%jy7h&itie9Eg7;JDj$Rwa;rX5E=Fd9t-G`4l zbNFK$kjB*^%6yI(u+TS_ozb7ql9A_@)MuS+A>ihtyuLI=ONHAF($5{Mnsn5H!cWgT zGgYuEhjrHGQJZY6mpTc1GxCr*Xq2uG!~X1a@KeVWEnHgVr?v_2OX)4^KRoc+PV8uxOv zlD~VTtwRJdv4s?SU0bXm)ZYiQrhy$pDFS(Zi3M7k9K~Y?K(S-Q`Lf^^v&angd72@N zs(_(95h2)^MuDlGU*aDcu%L+v`|otI!C>*itdZ<~Ei&&Dgzzt5wYdni7}zI2;Dh-0 zb)z;6r}00q?S}II4j940BCB(9iRQ_#h?cHD?#$Nm0EdcNQ|Y0M9C^1J93Qc|*YR`^ zl#Y*_=;wiL6UKqH6T`{1HQUPb6We1&>^Xq@vzb^JoXC}234_%p$}{OxsVbJ$m=pk# zVu6yq9iIkdn4{6HGFW+VGd+|{x9hxfmi2Z+nQs-c9|c~9we=Md6n?qguu1s;6{&}6 zV~`}!}` z$!^XDYrntR``^M~UNcd&H;AQVJ`2zg!%{K>D}I4+e_RA)t*tS@Bbnmtd+__NgGQf2ns@Ga-ORkok0)U!%aK4fUNBGKW@w!Colk$7nx94SD&Q{A-VSb9d$TyU&X{E5KKk zopU4|1ZO?aE>yp&O_RCuS5>0rxUk8IIg34DwghBhNsXUYpFjy8{Z5>IEWg(Wo_ zU`dS!QBq4Y(?dmjjPxtXlsNV~`~xANgwqfb9bd+MlbW>{Vdn$hsZrvvM;AM&*E^?H2 zSN19sMQMbrV7)r-xu}|D=H1zF^B>>O2yhyjdB#FOsM7>cZ}?;A8Lee1NbK~3I0x@Z zIHIn_PB=S$@j1fHAg`xrJf{S$CJUxYUF#|ub%_8U;a<`n8kA`K7rvb~z1TbV_FxP7 zwq<=ozHq1r_7BT(y@3!x#ht7AiVQO&5b;Y`Lg@oX-^1X^&kLI*pz;FpRwNP;KS+Vy z%7*77;%9BpI~o}n!Tui@!PO9uXZko~%wY&ZGXMwFz7}6|Vw!yzoHj$}i|xPkY@v z31N7?j6gIPpoA0g1b@N^{tQu3lyItKH>@G#&amdC@Eb{$P~&Lm{&(pTfm+uYYTmHK z_1&-Zhopg6$6S6&ihasMQj{XSSPInvZvRB!qHuz`9P>f;%l7n;v*-QUlGXk%QFG3C ze!(0$`HPCL%AobGZFbkSpG*2555E}jezDd_YdJUxqpM}gg6{bB|L^%EQ{+pDYdFK! z7~RtlUguXub7jBOXTSeYM-oc1zIf@%IJO-3kb5o>X1n^D*r)xQ`C{+sgvup?Gqq@^$Xh92h0~$Q^P5N0jBasl!_iU~UEC*s z*8``@IdH0B`td&sR^rrT_dT`0X&eO+giE_{Nk!DP8E4Yi*BQ62lI>3-VfN_aa>T=u zp!8Cua((V?5?#W-c*`n5h=0uh;%gkgxX^$9Ks}FQM;`A_@?O?$d!+7AIwgLin{!ef z4|gm|I6b@y(xA>0e(AHWEy}Zi-DZzfh%-!MX2c zK3d;+U%Z9k@dRwDX&7U=1iBw3WSCr$C%n-s4*L95`m-d{E1Y*%mc_YvUy{vKC2Zfm zZNFuGXT)aW=7i7 z6VAUXbR^de8<0~gBvm<7rGfceJlS>12UyzF&dS zCwjmIKW?55-1nTsLi^m#VRy&Mi~7_<{tAbvZ$h6wz&I(KQqdV8bj!w>$lc_L~ z^U@{DbwM;uPaI$S(rI6$E&6SQlVSzke;O!>3-~#C85OdQzp?v$dC+{FO6dNRSre(N zRX=(iZdjqkR6jcX(lLYGaTQko5(~$(%WUKM13SNzmu$E39HR^>Dp&~HJQLit)Z!yJ zg8#bnDRmED_$vSBnAJl^@_}!&=~wcE$6NuZc6reNUg^A|1vTV((Yis<<9~Qy*BWL@ z-e=tVHimBIXHpAzi#%rD_M--s0hJ)@%JV;Q+Vk)}V}`ie%+}DhA=}l}@4xkIbMEZs zoM{-z%;L1;9hQF=ia;#ff6gV-qm^R<>qWLHYV0`2j91vL7s2|8#1E?d+p$Sj7>HR6*R$4QSV5;(YyaJ)S2-F9VLH9V zFg5K}j;M5EkW*k`EY~r{Cv->gb@j$DJWI?PBK|YybkcurA+%y@ z0hG|uK(M&*7^eMPyrWLH=yX!^P&2EWSH}om#&OBAo?~lM8H2?|2qq1rrS4!NZs|{*Lz+-BoxL{Ib#y0j9zI z#>8>Waa`Kj);o&qT2^*J^SPx|6C5Dnfq}F-CR;E|X{wL@1K%D+92Z}4^q;JHn8k_I z0?eXIipJQXt`}x;phRJ;5{XIhVHwGS?FEOQ#dA5{I8zz(i}%1jAd6hUEDuFI9Vby5 zJEIu7t-BhF6#kB6R7gA*0lJT)bL;r7bmJuC7DK{iM%clXyOo z^(YYY8WQ$@Do#gOjt{UHynVJ^Z^##Ht;4BxQVfTo_F3D1D{=iU00q?O$t}T9XPSEV z+qggCqUS}9&@jJwGP1$jq_-urYJ)I8AnfN94Atd*bcg<8DcCV+(Mr?5gRG{#VD@sO z7JPwji5-QZYJpBG$A6#4ov$?Vh;@Jvy*w0~FcheKO|%1Zr!U%3sZZ^BcgtD2gFKwt zUd>k-yluw}mByV@i)tY21UsOQM=J#t(BsnR*!P$QSxm!#U(x6%z}ChD_M2#|1s@n= z1+v13ccFF`&cYxNft&cyQyMf1=a%T4v<0$ai$>Aj#;eagK%qGheZ+D{A8IG+?szys z`)C6g%h6=Pbht4O#y@*@ZjEAC?PPPqtcP<@kmHMOZyTp%YZi7E7Tku_ILI|YIu}sU zhfO+_3|w0qg=9!M<1bWxA&A?+YDnF$(+jTbiyn(Xns=B6CQO4grorv{Tx=D~%E2Cf zx;+;wLYceb3*5#xM_7X4ig z{XG!-K@QGYY;F)vpi$#~7!TK*bH7y}p(o#iuQsBwzPI!C0BQd7Y$G)T0%5?Y!;4n( zAeqQzy+laAF=BNCIJ3c5h;guQo2TD{6KP+@Ha>3q38k}a9T+cI9%#jI+P5_=T7_qM z#*VO})|oC5;cQ+$%*nALV;-?;K0X3UgZ+$j9*~8hR}R&7Ardo3y;z&789(!dVt%Pp zsw7dx(wvUC~N=}>rgvhyd98- zOZ+o{r~TcFH+tRZYQ~-gt=G5l&$cTw!i}fVJevaM_!A3p4VztiV0=!(^Ml_~_L#-S zFDpT5s3-c|ocyOh;OGSX0)U<3q5Pq4EnSRbm@vO_BT>ix{dF) z!Hz(wDHAyuHf&wev*(Nv^iwzm?B(>IOd!LJGt4nfp5f_lw{uV5biabEd{lDdcI|3b4@4Z5bHk-;HA6R6hemJ5nO$Vhe3C>8WAJ!GO?Z zbae&Z1~Aca3+;SB*%8DtZi=DUSX{VaJOfDe8LNdG?SZQpJ!8i2%Y;qoS4nJ{tt4huTHV3P8T<;AjO)^iIteXUhEIILGJJeYu_2jYYK4gP z-aIE0k=Od-^XsH3dn^8vIg|HCwbS=b9TJ>K?T=^gmol~ruY4F5lkH;-Dy$;p`?GdE zC{Es|^(a+ZStlrnM7Cw;S}ZCWPyQ$oP~qg%qw-AM8=Rlm#wkw~*{!Sny*^f2VYTR& zdCuNZ1+JHBs+C5EX6i*2-o1zp>t-9H4iiz#;xV&gnVP|NjK@g}YaSvdHL>FMulL#~ ztcm{QO(@5di|_*PoNpS3XxIc*rtu^<=ihH=No5bQ-d~iLK4JdDT;5{6Szp?+-xZ4) zO>!4ywPfeYGVC8y(#7+)X6OF0HZYoW`lMtudC`CUhaWk#dsShTPTE~zWu2O#iLF)s z=)j-}*x^qs!Fwr3m)p^RY~J(<3n$p}d48wwM#sJ^?>9Ae`m4g~q9t<2VujzO zEvCaVCasyO-`R zwOFg@!^rr?qxP!#V50KIyCz8QK2g884R`77ho*SIs+@XkC1mxJY?s69Pfs}0aTzv2 z1K-vq+1DWuKGL@5=C3*VNy$bJ`m^r^WeS)YllLL@S4pZ3bR%(X zvWE+nwuinIlERz~cx3uF8U0@YT-!~{&2h6*`2A56TcY}31RvvNnaZTV$KF6`MXzBd zM?r!QpJPK+x+QTA>v&@pU7Q|XP2>&yCEKVr7RtVFIt+tdGA{g1Td?7Tc(c5^BY6TD z{meC~2=NxE=o;ImFC>G1Bioz3)IM2w3N;Q=Hit6$#zt8aB^^UfNea-`$bASEjeGENCU z9zbL3xHx+=wH4dEp(5*TfeW!|3&sxKGW!>4o_J40BsP6OKHkV8J1$3rg_n1e4hcK| zbAP{x1jls|R+NXI0+2hi$T+aZRF&-AZ0q6SyY#r|*r5LP(2X}#rH(h}djhSVYvlFP z2yZa1`I6eW8t`dV=Bwnl{uUEm^~B(WOD86KHeuFIpLQ@<2qrRn82)-^gN>hrI`83e zK`w=f++qCoACXe|+=uExb!cZOld8a8KTg_4;#}Y;t&VHQx1w<8)QuBQ14xFdjA=cE@v5i~}%#-;m9LeUf*d(*^%b7Qr2~y|9ns_M*3P_5S94 zA*ls6V10=^-Q%Ljyx8zr7TtUv>qI2$y+7D|abDfJ`7VnQs4N)gx#_>+R>a;UveO>C zG`~iL zuZ}^w-|Md_9@9J247As+_qc2HU>bTD5+`9>AhWVky^J-4ZPzn*tcZKwmhHTr_V~7q zUB4p1prXQAe^8&_ym@wS(WQUa#nh>oXQ(OmueA5ZprrjU`TkOOdW)Pn$=Y5^*QywP1K^zXe)d)AUCf%j{o<)am4}kGB>B)v})1r*d zA2JBxeIu*i7g`0bvI4GwN@3M{F?aGg3XzRCuu-3LdC`h7@tS5jvRCM;65Qs|%;MiBBrX69<8$yDyII<}vh z1cd)lX$J4-%(i>W#1DdYcns@py)Xi>4Sj^@Z`nE5sU0kxo~md+2REB<9h&p}3jHgi zYXj;&*LhUtdL--J`OMu z{BMZB8AKCSHA0j*>f!r#3{z?+x<=C}zNfaU?X;{VzS!0&+HpjP3DdS&sBhVLCj$IN zBhWpqq_U%x_b{i5^AK~fw7m!W@_~z%czSSI9jtz7lkI+pEwM%3e=R`pKZ+oD$c9vZ z*b9N4}xAV*=*CsP5ex)KAYOl-dUE;`NoqMQi`1=+SnlS47bIu>0?0G$=dZgEOA!NVFMT$Pm91ei&JJ@wnSu z2Zoo1DyTBx^S(lLQTf`w6Zq0F`d25(xY5bCY4Rr%Dq`F?|rF`5v973vAPj+ zGxjwaE-j%EyK`K#Dx@=X;fClyOks59a~1uK(ouulh2aX-gyeO=`53_$4pHi7#&s3Q z_!W33h*IkB%H>MKXBr?5hV>HvQRr{`Dk6&?*wa$&-)^91cretHC0jK@ zH?t4twx2MqZzeDm-+pa?cqYy##iNX=Dz$qM8{3_Y4XwX608SbroxrL*k6`Q5xsDxE zxgu%F>Z=K8FNZ1nM;hfH*UoIs!$PzK@0 zXQ7J-)Tz|2lbFlK=mdr^7qQ`PgZ88yd^lH_*uQ1F<`wA#_)BMPV9N7&FvuSi(N?F5 zo@h@}Y=nvf8-|hA=v#|b=_kNG#Kt*tInU`4jA9gkDZ$C2zaaY&%t1c53)GauRNz9m{1 zN?+G8)KSz;+B{uz?Q$0Devkq`J$*W=U9^@@m0fZlMc(?Gkt6iO*Nu~>~0|kcPi_zYLV|~$$d{h+{8~R=$!yGFFXMa5O$#T37`!4 z6**`J?A3E#dQt~D0RtNI03%&mb=5JWXf+Su8NhY43(eCUbBIpx>zqX=l*hE*GC|_f zUiGyFBjxtpZ886ak?EhgF9XTWT~7cTG@D2{0-X-HkuVx4H;9qA8>vVO)Ap$NbP5pb zM>|(1&Z1wpobTPl)6Zw!#ET)FF+=*}O_((!bBv&x)+s>db{4%=bPDJ`x4G?HiAKt0 z*518{db))=mp%@4#$1p>zOU~5z2;XwT;iD6@9fz{RJJ%R-{k96-_D)6@DDHM?6=EN zUk$x`_$KM$6^wftW~{jPvotTbJ_&E#*L1e0zayx>2jN}CrFq|VnQUaBIEiP$n|nh0 z)BmlkqH#6ujB|B!)nf3~WH2AIr8C_ac_*nSHIP?}kg8@wkchvgQIx3RyTGpj7$1;G z%Orl-yJ`s;n?|mmY-BVf@UVy2di%t#oPIL6z^|meZFlYB(y3ZQ=S10`?oWooxkl8? zIe2__qetRtSaI~F=%S8TJ9*)b*-z8zaR`KtT~RF>Zi4=y{-65&jCa)$G6rtqE}pXA z9d!~YFa@0m_Vaw+xR+`%?_G6~SS9zD4R62uh-$x^@TAANP*R@4N+A-n&bsG9XFtq2 z3pYXBP@aQI6fO}EW7sVdQQazu9$F$B_gLtQFGSL_8++HR59u!)hMUwYPEE!c?;LvV zXz0jzvnoO8Yi_J*eMZbfPrVe_U7!1)*I4%#`in z9T?E;EynkP-zT+8?M%j*W+U4p^c-_Jpv!X?3S$ub_lHfcB~FC4XrO0TKy6WFXHLh} z-F9rxyZx#zOS7!Dw&?Wbm~Po>)^oE@xkaZ2rPRKiJ}0$4)yVYf!tGfPqpPyOCoKI1 ze2FTpB+sHlrkm3`+-6?l7S%PvAcLhCWu|eesigHp<2#NO0>7fD>+TnK3|>@4{SmRb zXZRG>Nq9Q%L<$C|hKwHrwkiX{`&@uxR->e=C0W9wuv69M)hZF8?b7M^z%pK>@Qbta zAzRUa{nw~ZAINVCT)*FNR(Mgb@)wmq-r^9NXVBX|6Aeyd(RnOpen0}XjV2-Nf+CC=m z+rmS2FEyspm-)mk`AXmSPy8p^)TxYj$Kx2!#F?JI<*z32JJC6nFni{z$FYaVEY`h` zYIbBZ+#cMqoo^d;YsESKl%jq1)uvplGqI!J69HJyc@JZDB{P`dJ{p5Q#E;(*2> zkFjRr)7B-~%%oEfAUK5CZD_e*71OVbvo_L5cLlEcP6q_8d_T+~TDO4P0#`F9%K}$z zW)IZM9kiXf#PR0A8&QwFU3=Fa9@aizKR^M_DeD8Q@G?yYuDCK1sB?os-H6>%oo4Ec zmTtI~ZkpC1PT5P+veo?*o*(OpYDS>wyKS6+xK9zJ;m?Y`Ld8RHA4U3^$NN0`aZ9}n zvOGobMqyxxHW`ta+(v&&Dj#a1-SF;`JQ3eA!xNu1XGNCW(&tEGqd?TwB$(JG~~juB~g{&5c*l7<(Z2?r9ND4=WVOMw)+pU zTjoEcX<6;~L^Uf@Z`W$L?I%n_4J#JJ>PR~u#F<|j`&+!oG^%U`mwAYvBPF@~+Rw(t zKRHg3cgE9kscp#J=FER>{YBWo=HUKo!gmMPzse7g+S!JGJLm3|F>0sk3=T!%ce9;n z{?{49DT}qwJa4rug8QpHoEucG__xj@+VDYOnxccY#zKg=V+)fAG`w>12yA5X`&e6Y zPvOKruJb0*7|-#{XBh6S$-0SXGu?xM*DLqt5N(m6hG+4}$R$KuZX~t|y5|zS-oatU z%+@n#Q%MJvLr(rl@;3A_;(d588YJt{B;~*DGXX zPbxC+yNPqrzYhOEMX3jrAdyc^CmLhAN?`rw$=(vihjY` z`t6!(5ohLWjvyT6xCibjuRTv8W1ersgaw}PZdD&K=piDiA@kRScHQv)*+VmhsPXi_ zT%wn`c<}jGKL6>h*3a7f=l5e%(Ae1?A0SE8dnxC!eFi&xyn4?{HlR(GOk|`R3BGD8 zZZNB4HXJ(y_x}n>6ETK)Q|=?7_5-M*h1LNSh`$sGC2?BCd?P*sHn!EFtR($U(M;6N z7~PbR%1yYW7bdB#qk*ppBOTRwdFFNuHv02fW^HUsaNst4mds1WH+YfY(saiVqs?`r zwWiko_3(+OX)M#V5jLQuC=h|HyV$ac1_m|YekRnB^<{AMXCp=CLnydznCVJQJ74RK zA+YbO6NAYE<(>uCfn6;C)lDoOpPKciX2l=F>2h`^WITKJAF_VpT|)0+8{ zD^B)3@3pt*@AqV)e%E;kQqlu*DKpEFmVCw_{{3_7imLzYB2Dv|*@;3>vZns@Ct54y z+%IXB4CkcmzAZktf6rCf&MvEq1ZZSl#uanCwVf{^ei8={yl#De$(|;U<$du*go3GjlaE%EGaI>w{rsMFX&Hy=fUe`|IlUh-b-P z#vMZicIoq(bExgPy0<-3+_E=wn4Rwj+x-d(PX|q~%K6OZ*>dX~q4xf@HCLH($TF)& zE1fM=+!ywwVqCl3US4%!pFH2F<)EFtw+)uOKzpgDYJ@wakBISU-cUZ?>k~dHz^&vU zsQ+Hf|H{@kTF?DM=S^fu8A89^#)A)7w--E3%zXcwg8LMQSs3yC_37KAE2AgH*A%mBXJy|`kM9kq0yGT{mv{`zS`!-&?GTN}d@o?A{oXL2(T&S8EY%7)PQCeJH zacZ$u`tuRQc0kIJkpgF5HHZ9ZYEGAxV`SHI%}*Y~I!hmQUP|xpiHnRU1tlK1a~*`^ zRcq`^i{pLd%3{r#s4aY`u2|CA2{P-4SbUAIq{n|2ok!yv;31@JjX5A=dH#V@3&C#0dl4e%npo#X;j}U=0`Kj>hb~J%SZd_ zyiX%4OWd>h^CFgwefxHF?Q)|F?X@C&7A7nC)~`P`O7QtF{M>X9vLbE?rj^nt`C zcxZ_PF$9vY(4#~XN8<*urO?sYy4 zd_}q+nZu~7cqT|N%7%%z!_jsBPVWAK+QJrjT#S?!yyOnpUz|qfva!?&g{O}7EZTS06vQSCZ` z7oFtn(ZrVb+KzU@<^$h4#^P)&;TG(SqjlY44vsBwi_-Q|#K$scsfKJW-dE5SPX2{c z%0-#nYpr59`6pw`+zc+)9WKD2%VV}VN+;p3=xjZQVf=>Go%333JGT$499OZieyh(b7&3aJoftGP*{MUqOwv6dv2N+lVk z9Sx;j4u#ULR9Z*cx2dKyO*7}bf6p1*&;5P>8h4sIbIvp8c|EV~ITQOyRsGx+sie2g zhIt1zi7-ny~sImtgP9P*QY zu;*ES#LXTYoTlq{Ibe9mV)lc*R}Bbhi+P6+X-qBrK2x2MGjaR3X;Yu=wAeS{QAxGT z*_#I=Ufw)bVqvgo<>;jJZF3YGPCVBb64+k2))Ukk^6=ST*+ysYyp_=Jk@N6cXf|`p zV#flhAyL{6(Zd?P!d6g;WxvpP>{}B!t0ZqIW^hd!=Fv`M`?OmYR6IBum|FN&(CVSA zVYSitQ|#4>J)!FhJ4LQnnnnEmA*0eOOx8*?Mz@}eDXKkY6SL=2>++JRzA5vn1eY^5 zVDAEpbazjZ%G)z9rHy~OxS98Pz3Sny>lK|wYENn#oX%*QdT+h&VGrATZc#7Xyrh_e zz9BQMqrR_OyY;ZH!PlDC(@a?vhb}LgqkB7NBlgm3Q`qIo9pQGbN853mXHs8HmjX=rtXANA&3gYq2NBzF6=lDox+?>rM8U^cWpy5yWEliSs1#ZM`Y_E9)3 zac14D#&<&OWUNn2z3=KH7V_?nIff12jL*kJjX2n4mV6`RVl~a$!54y`HPigSCY6YDz(+u?mdwpS@a_Y)Q*fYp33Tjw`0ZI2ay3x zYl`_?#3>v3@Z`hWD`6QRb4Y-{;^7lJAvF^;v^1s5p{(SvO>9ATJ*b?AQbia%;t-d; zEk%wUHp=|DRx@mf9t7D%?9d_Nn^dpSa)%che4{{yNzY|5v1spT-^+qJPQs~?m@jF9#4bG~iB2X%`+ ztrX3*8Qr*%KCo}}45JU;5}2fEb(~^85ivRaSl~BLdqrT&Lo?s#%bph4lSr|&snVO2 z10}opXzMOr9^sn-?NNOoD1dXbZrjHTag{fj_sZdTT$)3asm2m{K5pCq$)Dkk`U0D@ zz4kkGmEoBffK$szU;prESj?NPvz7OQ@+~8cdN1_XHXOf@61%t8L{%9|jVXQ*RbA)B z9OrLFzjBO@uA3uhd?7J!^nKlUGQ6hp0q>T+@b&u}_|=aheYxl; zHm9^laHh>6JSbdJ#A>L4r8B+ zbP=?l-^eIT{K|E8kathLt_ezX7Vs!HSA~xtys8!c93Prix&F zb^yEiqSmGjI$LmN8~z~V)=bUJr5Ck+G`(nnzgysL2Oh?LF-^dkNU3U5Qk2dU>*j9N zCY)&vMvBnBPK5nUs+ycTr_9GEdO~c4sAgRQJbnmkmL>Zi=i)~O(-(L^>=R&)d^5Cf zrCgu86|KvZDzI+=Ir>EDA zf++9C!nH+(N~DzAuE6Rsyg=ygrdZpk_LS&|;Te?^wO(jaP?1*vb9A+6Xhxn%@<}g_V*+uO*`m&kp{p>tl(n<&)vd2|gZ2(nR3t z8w6|Wn4^p&S>sgf1RCx*5wm6_|H+5OrC;iy`GpAE=M%sSG&nY{0VE>AU8CS*z5`=N z@7+1MH*>++8GPl@SjOxX{$1&z^}-7ds*UmOR2wX#LE{Y?^$h`ISzCrIDE8C;p$1Do zMe|9O3UK(ZcrZ4LVxavZ=H2pAM* znY<@$B#sw;6{I zj53z!?>jMj#|o(aN@5ChYkO0Ok79t2XJWk$=_P1Cm3J|#byl!d&9BUn`tylSI- zNkys;SU=&AD~SgQv8q~VPY25vBig)Ot7=1q{1a!*B{M zDl`;?T&QS$)B)JJO+q|s^+2{t5zKz@9Rb6f;hQ;Y({C1gzI;tTH>VXnXQcOS;Z*&R zhKz-hLnq>X>v4LmQx?u#6rZ=E3_zr(^slMf_%FT_gP&x7qV z_C2MIC+4t#Eh0g4`F(RX9+Ti=H^73=`nL!6cMm!?`|M{x*3F0D~1R(Y8)F;ty zS)VKl<2#JtftwPul}V-`I7CEOMIl?peU&gm9FHAqhPFaBp&)daDd#9X6d1 zkA7P^(o=ir>=q&(z0L_{tdm{P^e^#f+*i;&-Ayj+Gn}pmMhC^v65~mgx6QbU`XP|i z2g@PHJ6n}pj=2A&qsTc)F=9l_0-AZ4pH0pHPlP5RJUG}137Md%tr;5^ex%IsGNK;# zT-con#9}e^kc>X!TNgu_W*5DcCz(2YSemb?Emop^x^A`(j?kSwey^&Fx$L-<>^Sw& z2U!$xvJ)>djOh6*U(TS0N(%wc6%f3dmYlvdc3fa1Bsm~Pl6p_{!CIP_vF5A~`3_8@ z-n)ja6dMhqG8#ntsVQM`>gy`&AtChY(Q>$`_I~b#Yh$w)^^c#hHS06U+>Y+_6X0L1 z;ANk4#lyz6{(LoiZdU_m5pdk?y5K#+5Lq#XTzP`f~0bY7&+SSk)7^+t03ikV)+(iNP@=MDr9LZruisJAb~t z)$|?n`6b~FAqlsB2-f!lyM%)KLVWcgcB}1u8FM)jZHBSGMcWn99i-L{z#=vDz=tRJ z4@iW=keA*Kv+Ci-a}xIx;(jUMdlsZ#_rpFeT5<)^Qj4O*~E~qAPok1+-g!=v>(#TfMwYneLJHUHu z>XEQ?SZFI(!Kkhu4B0I-P~hWA4e+G}e_SoeQ{QXe;${kbQ<{SiNL%FU?gH&^`=$s1& z8H(}ht=1YO1Vn@0cM;x+-==&bCqa=2Zt?J~>wz)dsn20GAFNF%&=SDIA^da$d^3DB z1Xf?}fi4d=a$#mBVDcbko#M4O%+sctrS=or|A!bCI`RBxJKPqQID$+y$q5!q75l#v zBsaImfYDJTRTOv9Ql;^FWI*X!dQ{r?4MNi_+Z03rF24{lUWjn5Q7~(O+_Te(A?&r< z&D!{L4}=67^sPv5bxWq?##c2zkB5V*$))-bTuy>YNmDQ-BaFB_ruBtE6IJa#<%xOE z8}*4c!F%n`-$77(8o|ZmRcPhcRI0;n2|%qC>TM|O(upjMhe9F^i8SNpsLfWhO!xC) z@1tBa;z+5?Pf;6H3D<^I$v==5b+L1AN`1 zYaX^Vb&C7+ga$|YyG$E`8IORb9LttxRm^LHw*}zvOaT3%LAw`$)M7DMsI`DvBGsou zVK*p;D>HDw3@8Gjn0cp=@Z}Np=h;1CB*~XgLf{xjI+yWiey-Dl_6%SLP211I!AaF-lqCc%vU_Sk(+AVf> z?r!=>GI#QEDRiMoUau7#INJ5~*$_P0DIy7uIuAE)19rzKEFFoza%+f~Yt-u==lfCd z3n;z^nMWk&hLDg!IB}*Bc5s1PMZq;8`b`wTTd2MVjXyzXMl#+82r=Iw^y5@jRG%(IbhW^<>9g=x zED>J*5zKCRVKwhWMhFHTiAr;NW$=lv?_^edsy-qqNKIoSBB{BaECS>LCK` zjtIXcU@fCkf<=AzJEnNC9MJeL0hTT>e!lvt0E`L1R{(y41OcqeQ_xHu#%BxQeiN+f zz+c^0)i?{Rvm@A4vrGqHE;RpFr+9mS=2P$;`F33WENE73j!{m`2z=YNEN>lH?tbKd z{~l!B2cODG$1QFyU-0Id5YlrIyD-mk{{PvcnA$6o19_^Sa($G2~Xi0^l{II9R?#whp=2tlr&z9Khg zg63~haf`P^Dr1y*Mw1F`+aD*Rs5>7#(}DAal4@6;g_xohyWh0jy`tlE3fV%l5x5f3=1GD3I@9<-%lGw$jZ1Ej_~2Cki$f~ za(>}M9m0pJVtkO=1?}kMq{MTFEW7f6SEcY@Iw2FMzUec%7E_0?lWBgGXOCiFFYAMd zvt59BKLja8O@(tC<>1f?(`_CF#@hX8{6fM!G1$lx+21en;0hO@lXB2Qw8$Vr-Oomw zA0}k3pXIldWNXa2d(9qAhL;m3Y^}>9;Q<%7QIKaF%&fbaJ-w3qtvwN3kBkzk;z912 z9@uc2F^E_nbko3eGQ27Pg!gGl(y^5XTTLNt8T38nK-yE_-v{4NAz?pC!43iQ%-B~B z-BjNVr;%v*xYvQThkfRQITtjXAq}xB1P|ecDU01-h}g)0sdMXMBO;+m&w1TDmtK1c zIq2IfKcN_LfZ=7a2wFt4B&G*lzPxyNX1s>Ih2#^7jHMk zwD>7KpkkekHrb6}S^_*a7mCk1>&-k55GTOKl0-vZs+ao1sO3C3GXyTRr|N&g9XuCQ z5IRVe!`4j5`f=%UC;t9#cdD`l>^s2zlL*?s!{vIYIS+b>Y9h&@yu;1E?ik5ACSalj z?kS=VZ_styBR_Sp?i0y6$j4{>p%3fh)vcbPX=>LAt2O{q@{x7ML*HK%L2)23H>$Y+{&&beQPLWH<~?2BGXobr!s)mr4xIPs}i5;!NP=+G8L1DU^G&b z{*VV{8|xuta~2`;pdcm>b@yzvHN@cX@;7-H+zr~_7frpC>LtVieuG2pL=E{TwF|@0 z_qa(P^nTD3E&uVZnsD_spkYGcyl){O#j5F9-vT>%*cF)Fu!G{XbirO8C_Dt1K_bV8 zW5I>8A(FFG3=V9>9mfCW4p(j??l7JUchP9j=Ie&9a!6&2|6_7q?56VammnX-&2tIE zzJ=od@hQB{YK~24$ox_O76qUg4L@Ce)HN@-g4kn`t|IkR{TvWzAjgO`#tW&+2el(B zNY0kt#iRIG0bFhamz_VIrOr}>m^p0!n)gGp10=sgFPcT~NJfFkD8hdA>!=~@rpX_H zkqX(My+_1A{=f`$If-V0si<_6h{&Rt`6T0bFND^^;wp-T!~`b?2GgNCwi%*{uo2ED z9P%uso4|OWieej4oYodJHD{#>!$rjVkKlaE%lD%i7$3?pRD|T0Qp;D~(EoO6vgX`U znmA~p7gb2N=~+zarqzY}k75ziS40FL;_x8Lh;pUf3E6=bFlmADLolCF=dke$*q)_u z!y&ll{v8+UkKnP%(CrWSIuUacGB|nqoB43j6S^bxyXz}R!tg)Zf`6k4YCE8EYpUiz zJ)r0$-rLqZ#e@$>ih&MJqM9MI1-JZp?a<0uSyS{=E8gvmig%_?^p1EUj!+E&^MO` z3AN{I`S{BqdbCuLx=PH}*IsgVI!34EN`}1$1doOAYIxO)1Vi+WjeCWwDlcAg=)x-t zdk&UE>1%V!?z+>6l0%_Qx(w18W+fz>KXY65H#hrfUp@BQ51n%*iTrX13D>F_Y}33kdaNEjo)vjd=74VdzvdTs#Mu{horMEjaA zOHeTKe8VlPvs1#PEasW4MPTxE6Uv>OZf;56O))!u;FH}`bBZ7+AG$-}@NvoAJsq^- za5KFR+WDYg27{OEZ1Z98EQJYRYdV-l3d_yD zki@qCz(!haKL|S@V{2-Tat3Wl7)w`Q>PX^(;9pDP?|&_cIfp-!#5-h3kR^vRA*IqZ zFL1%ykLB>1yKBG$ZUlnN1`%_Nsp)ZK?YljM8)e{h$?h7mBr4HqYe8uQZAs)&vJ^Y& zo^AVXWMVxR5UWb6k=#D^%9m+Kv3w|&3dw1mIf5&p(QAP1zbpxbedaB8=t4U{TN0d# zdrC)+e_P&(Pd=(`aRoVp_!pA-n3f!>S7oL5+83- zVhdB?j?A+Z9`4739i6~*hUy%#;xJsAVr(^$4=8Ht`$Z~TVvhLE6FZoXRY+Wqj~mcD z0F&YBY;&`Xb^4EinH#TuF%u#2i9e2n#PT|P(;&XF6`Vflp%g}k6DB0?20>xGA0OLlrnWxV={ zJ3(+z^M#eBkwYiq6wA;-)p#sn7_?DDqL3x-tXSuW(cy$L1n;Ami%53bERYs+w*0ww z?mjFcaRWZS>z5tj5SRM3#dK7NFQOPryiD3UI2X7Ph80rIp9L#W(rJlgy5IM zU|J6!RYb6!j}M#|VLt<(f!d{ywDm?*owEfQMNmD@11(Rlu+Ks;K-jR);zw5@EjKK# zA-Qqrup3~(F9kD9+%_UlL`MZ_ld*b-)ZKvaT7~KZPg+k>s=5^Oov3uC6Kg4Cq15zv z1)?bhEuho^16xxYTVP-VutY#k>4&?){V>)VWaOb#O~km3{L0hWkA!$+E__6W%q(PY zpZbs7Xq!)|UZ)uCmbS@{gq&AxYjhloy?<&-trF18XaFxU_BA|Y=+0nH?!%aK)0GDAeAgPGgS*S6~1bN-3% zYsG6GfmH*{H8C1xi9N~gFg%hzHrB5${N2;}H_<9owh zdT(RxzIwQ*I_9f)c=e}ky)Fqpa;?asPWj_SBnS3lcLc-}9&8u4DoW9*vN#1W;a97I zd@dvw{PrTYH8xiJG-sUHPE%bXiYnm+$fs!v3?I32ZBk%!=AVyjZR1*8+HQhkcCodCu*kWvKP znhS3_h1fQ++OT#8!jrZl^4^iVP_!|(ghU}cE=SK}&)P8uWY^XgKtgy`Qh2OVCag(H zMrdysldqSX4o00+tjp#Lz1&0T3&&KRS$MJ)MCb~PqSZ#>cd^>2-|4@Peq|Shdx}|u zi$vvv`NK$T*lcJ7IAP7hb=#nPNQgC}TvUtjI4;`6UXY(e4s z(461MFq_Y(O6`9@{Ymt|g?jh^p^!|KHYWnsjGpQRZarimR)Chcx;a!|F$pf4D9-EZ zmQiTEM8V=t2w7G|;b9`|%V(IiP=Tw({~#f(`Uo&fLGI;E0V`*w!Uh5BR#5cIX{#&- z7xyGDqvMSA@6oFlSdi!CZzbH zLIv0&W=&yPvLbABnFxDd0~CS_58!BlchH_AIVASA3CGW$zI{dZjYymJAWzDFtcTZa zj?L2$0#Q(qr|vdIY(-F>wua?>x6@i={}mkI|HrC)lyp;w-=?if=QaO_IXHR%83>*m zL@+0D)iA0GF>NWnHb@P>GC+;2__+c&It2gFW(3YhW(3uhKCIjcmYLxF+l8oah3LpnuWf5tT_t`tBW`q+^VCM!`$zz(7Z2@9YwG*4ImG9&IGGh*U7Q0%1m zzmm@_1}Spm3`q9H(1r3Oj{Nt<^imIh*Lz>(RZai?pCkjKYCFboM+sK+?+V3bnE;ry z8rt_$Mh8%SBJXbbDg&I32(aM!imggv=_eXs0`1=sa|OLY@!?;{4B&TDrQ5|$W$OG& zk73m5vQhZw>JZVmXZ6IkAjII2#CJ~3Bx#32CPGya4$vKTh+@b`^G2jB4< z9=40ki23%d@Cc!=7#;?HnGtWa{r7#T2jr|<(}B&RxNNX_}4L$Jj2S`-t)lko<(zZm%au z1{Box;|fE>p-7Ev-~C~OnCqAuslrBe&XSrjW3u@(7X(g18Rdw45m51mahkac7f zRDRhJnV60g7dgkf1bE6rP~F`#u02eM-3S6Tbie@=puj)XDWulzo8D_RR&7RIxDeZi z3TiwEd#)~RBV*h<%8j8)D+v zqj~n_B#rt9S0e+m(9T`t)9k0y&a6$GdU$L?@%K}Gi%7zZPcTZFVqI*uYqC`rfon6x zi4<~fpfxT#LS3`+;(0Z?YUN_o3HF)5dACs%nAU16wjq3e{0AgB(X}1R(Xf8`V?&s+ zlE|kapoU!0y);PJzI;~?>dIifSL|4(A;)qRlKQ=SX2=ty8fs>ma-ldAm?yT2Jxk$) zN)MOy;=uDaiBP3G_l8mLtj*Fv11;Dm*Yawk9-mc1_TZO~W;9Xb$h3noYDbtG)r4oR z2KNz*b}(JYHr7?#rRjU{O_~ zkTa>hzv7u}^*FAP7W>Q&L^H-WKxw}jqtrGxVt7ua$NAJhCd3>>A;lgLE(3LhgwmrarCZ@zVpTC zYH&w4b+hd90|x}J+Y(%ba_Ef24ur$b%PYCJslLfnUuzFOFn%EL|mCWDsfBQ zvuw`n`5qA|i(l_!6MSGEK1TXN8+x7ZNy^iTSqt&VhiLZbxd*u!&}8tkAD_%8j+GPv z!wIm@$GNbYi)Z-717>#e2gKLIvnW*NOdiIbZyy0Qgrse&9p75Dz`a!z9;h=-cMvtZ zRz|StfTK6M1*a8jkyJo#9lkRC=``yzVbZdc? zEl|<{!&_64ojgn{4$NZ82vMg$La>wJl`+=W=mCtAV-T@;qs|f%H*z6T>y5_(eUu#h zH{;m4UIdC?AKA5A4n8auSFH5X+g^D)10IRsMclB0$^Ywq-yO^Vc{=4F8vc*!h!1Xp zNr$I_-X;;uFf}dfY)*ZB3joSkQPn55}qPiO6KUb&58DkBw@nG zPyTL7^lkAJaVC-+-BIkU^avrr2V{v#^*_6$RN6h!ja;sp3Y-=*r+=EZ17^BKkZJqC75vvz5+f! zyFTc*q4^0ds*RQf-DP)#;NAfISHW^`QrCUm`n2|)3HtPSwBTR7K7_j?Kl2z5*KdPK zXeZE#RP^zzL)?ruDlfHI1n({ckKWXWJcL2NJ&M&S#?j08a1Om=zga>t0+Lkq%8Rep ziGf766Aq$jo=e*qz2D8p2d1S?_)qdt7i#nLDC+Vk&<*cSx@dhfi9EU*;LN2HdM6W5 zf5HERG({>x>M#u&IJp z?335moV_=Mjh90}Qk)LKUB7`u{TGlFnSn;?5TW=h8C_Sv{fd6+uSdNc)M$ED#4TC| z?&4_llo}6LGX>a9Ie1Wvjj|*sPy}AcT{7SR|E}v60~C&O(2yX&EQc3}at!8!K?VeO zP=q$(K}~yQx1}sL_>+xh9^+%WtNba?{1vkW%dZRZSHDr@%mgutNTW_n@u~K`QHU`a zzLBJLoc0OXJ9qDVr@lBc^F5Q@;X~EZALC{6Zocs1Ij>7R+y0-i`jfY5nYbca}sG14pJEl7bujh2^Vob ze1!O%4`ZBY>{wh*SG)_>@d!EsDcs_TWJ=_ca1o<(a-FWllqO_WtR^;|qzE0#_XNsD z+hcxZqXXo|7JT!^<`lNlC{~nL6((YM48mt5PnN2YN9*ddsZZ71fcGO&%fOX<9`{4 zNq8>F`9`;^$i4q30ZH`$wlZkAjDSMoswh;@SX~U&Um#*@stvL-w|w$BsWoc|Uv9q+ z5ojLK1V@n~LBd{;3Af%qb4ZjI7p&9+M4TCPHJ->h(T}Tfp(Ya$y3zsZ(Oqu-l4c|; zf!+whLJ@jy7u~PAGIh{4pTzX}u%6Z=^>f9VM6!MeH`52~X2%S~UJa3zDH#F|E5O$n zt-!1K!+V^7nZg5uR!}GhCugwKj3@`69hzH{^I>s4s5t|38Ng>GNveEpsy#zS!GlKx z?vlw4whEC^K=tmvedeAsxG)bL9$ghY9VZ!C`)-B?$*e>1Xv3jVY}y(9ZC^hB45bIf z_aIF-Bv|NLQATk0#_wkd@l4cc`(;?%h_8D3R%}?v?uODT z5+=2*N6cuh*vjnwZ+XHgPCfH+7R9E^Rc98Xj+0BlFgs6#9~59FNE!Irb+1IHirVA{ z*BcfXt2-v6)OtFqGg2~$Y^+F8%Up$8u?-;e%gStwsx8YDTbW-2{< zr?_18b%t1ybRls1M;|zz;%y*ieo2~@78DUF!ccVPS^B)+jt7@T_b$sIQBt)SsvUpA z1RlO{2wra(!tHsuJUXtO90(4AR)raw+UWi~7n~7x%l`5#;?Rx?R6=$8B}(QTklkPR z$FrzFU)Kq1^tIkao<&MJD0crAB{RgH#S5!e&@TWVaYBmU$WKHXVq@r%r#6mYglcMP z;()aGe1gis?t`P4t1T*5osi~%c^hQy{Q1f9kDFPC@L~NISpOa(PzN(q2*?k(wbfhf z&dhkYN~uk|b*+eoGQ_HPjbwp|efjOLkWIz(A`f4?6t6 z!zfBRK9x|&Q1+Zh*WF~4J2e7?ghwuNKFbMRM* z3cE$IyDWv*QF-EM3q0(Agx6otMKu#utBk)o+OO|~zVi^9W9pzlw0Dx z_P7DvXTi6U#P5jR%*OQv-p_w@0V@!!oG1?RyH`7)pd;Bp5lovX##13IMc=#mbPsXR z;fa>?$Y^lTIzIO~go8RuNSOIbU8At_y@)OX&Z&5f)#6)A^iS81zMjUnAt0M7v^i~g$ z`ej+XDJ8LEe6+nw>}dAIskdDI)1SD9cK`V6AU1jKZ=J1Ef1on_@2o>Pm(DtD{g7$B z0w(E0ckc)0_54VL4sN%XJiVR{L?ub@Cqg2`9f^<$*$8=i1}BRM&8s5TI}t7&->5N> zc3->)zEW354;_;unQ|g#Wet2r$4aN5QsNyRd!_#ERwW?va6^H@PPM^}HVPXt5)lH_ zt5{vk--4@!>v!{CDQawysiS8IIgl(HBIPUih6iwPGUw?|VxwsZ4<-__%B4)0| zk9XT!fVYa`sO}LptfTwclU;b2L>A^J>Z5nC9*tYA4*C0mVAU6>UIx9 zAs`>#{}&vVRpdi^KI*bT;Ry08?op~Y1|j(=SWo*4@cx;Ul*=$aQvmY0AS{F9%amhL zCgU`MO)-0DdzA}G|7~8{cmO{V^o8F{44TC|#I770bS04k9s5Ui5UhVUc8E}LmNXqI zx?}>s{Qupm1e+1umxmwr1pXJd2f8RBJVkMCP-w?U>O%w%vw67N5M+trp&r3Q0D_0p zo#230v+>MqVNw8{c0iaGrFx4}MN?r^q8~?>*a968Ccg{4EJfKJPEJ+Y8dpR9>$%AzD42<9b}NrmOJ9Tq*;MO_+2gp__=!U zQUg8QrS~iYndbjk7Rko;=hwKB%zv8`W{;9c?={eejFCiyO?oEh5)h$BpS$W8i(qz9 z*qC0?9THPixB}#WZ5}ZyF&nyJNyN*1qq_+qfvW17rFQ z0sEE2wTa1SL&t=bB);I+hK|QOYr@Bdg6j%!rMa3~*ybP+{zz}4hb1tu>Tc`?m{%;!yg)fM#{29 z^3Ln+EzWl?9S9L3u>RG;48B??y|=e22Putx0^&I>G(`Ju?}{@KK8> zNF07th1ux;eIwE$($^L#AHZ22M*R$ zY}uqOj%f8mZpH53ZpD`@gcUnxf#O2}hU`->Bs2=CWQv2lO(#cCJR-y-_;_RrIGu$$ z6%i{y$a#DZFm6*9l;&iB`)*)7wClw+(b5qBg&X&XBGEtnyg@@^mZHH)#2IcT8B*33 zlYUpN>eh$SI-_6{IzM^4wYQedK99DN+K1V-feI>EBB&U!(Lj469+~NE0WLp^v3+|LP(yoH3utw~8!=9-L^zQa*Iaw494@0-;mK~4E{E&N z!!NyBU~>m-E{D*}>o5+D9-4wXe{Ce4(yG&ji0Vl?6vY|H(Nf=yLeY!HAxt?g$f2Fv zi0t>ajuqRQZg~a(rR5-8w8;dOF!N9e(=`M%lpswkGF)?ZH~~8ibpl&Ks~lK#DvCUb zaXU1RqTB=N@T_i%iMnxxNMyLkqTS~9T`;~CR|;5lQMGWj!yB~QJbJIWXFY1{pQkre z)262TW1DeK$kfzOK?N(6$_?h)PoeKo(gr>SU@y)+sD~)}bT*+laUz!fC=twsEoCLB z=x{3b-BKRZ)x*9_s7CDz)WVz-al|)G9DIc9jS{h3XzDzAwV~cjEByTBLtN~jI1_q{?$at`%Y)i^B!p!3jjTxE znthMhp|xn~)!F;D?aLhh_uoBF6c!!arZpwo(?;u5d6dSQ{o{8ijoE%@>h9v@+2bX~ zqn~F!`0&Zq{mj2JlB<%fSt+HVQ}oz`FEu8ZW;;IyMY znHs9R*Fx9qxtxzfpgYQKG^Gg7$41xt&Ya)g3HMM)bsbvmv>z7p)J4p)LdZ09I@s`B|KqK<-c3JSobq}<{8z9?XP$ERj( z`dkd&-(hABEOFemS;X)Q37RQk=mFRbkVt~3JdZb1L2rPBei$5RfhG8RScc@=WQwRB zfJr^LyT7}FKD6@%xOCR}%W4%MmARRh@7$2HJDrToqxYP@F1)yR8>=yTtAc!|q`|74}3^}TuaA1U4(iT5t4yTKbN+;Oy=bfO0;5%3+1n(!;26flk|MRVeCKR$gJv?afR>pQey zq{aJOqgX*1V4MP#N~_<7c7l=kEbE6Z&AjCLw9k+7RU@%k=)fdT4^Jto%FO+P6EW!9 zPkPG3bkwz4eD-#N?r)s9?=7cywWd@%TZHKeF_hCEZf~}_Bt@WC4(p!KiW>su7~tH1 z)*j1sb&TY{wSoZmxjTR0-TZ_|^|6PnhdwX;M|PY2^nYZ&+or5}`LjCz4OKTLL)9#{ z_v)133!2|^mb2=OR$65+67qb`Pv6XzP(K%c~d&R@IyCRr3#+ zSj+TDU)qB!d&0c=8!x(#cyYfM?u!A#bU3a1I@$Q8EmUexXPYxE1v77m! zCt(Yf;%-|voUp~EY`E4k%V7i457+};Ftr);>3iE0J;3CwSnU{7zi|0y;n-Iqcg4{y z=RWMEW?adoDzb)ISB`mRU*8oxWgPQHuTJOR^JSAGQfpU?9CjFU$;JFqP0Box)o`uG zNa1L=s_cb*mkv*SYbS#ngisF^f{=)j@JH<9N*9CGVa?yXAM@&~1?NrBa zNj*BF{APg)XSRhvdieNOr@W>U>dbFGwF}hOEPB4=)|PD+8Pch}3#Vs2uC8|sQOHr3 z@A-K3<*bUHm&a%89^Lq+bH-_w_OMdGmJDSF<&;;Zr+ok3UF&>W@4D-vtrG9oO4Wq= zt7+7Eiw-N_LA%!9mfFDSk+vSuM}Ozkx@3dFgodf3nl5ZIPN<$1aZ*?p42W!@{D;w?`MSuRXypYHbJO5eq_sR#DQe)Kl^nKts`^<)RjThxr* zrVnz{BJEyt({SHZ)vc9PJ1l+WYq@SNu7-`xap6HygO-BhPIc9WjbARTQgvB3aZ~!% zwc(Ct8}~P5at}G~TkFQ2C) z*S4h9**|ia^&>8S(xrq?3(npda=mjv&wrzILVlN$p}+3({iRgoN8^m0rNX;Qj-JuE zvqUfEtp8JqjQkwC11Go!vH7!wMn0XJvwe?zoyRhFzZ7n!>cg=mvK6qs6SL%e&EI@v zOzUwC9&j!xugZ&Z`ZoG)Ti-&fj%>@0ITslbDtJet z#2}U5F@Ko()Y0`e>3_TSlU}$)fWUd7%An2u#@KxKMnhg5BR;zDa%2I?emoG`y=!{m zwU=RsdtQc5&Kh+ObihySP&lx{XqfT!s0)RbcvSW5_JawaT+%Jyt^Bi_$^!Pps?KwYhXj0}Iv$~EX2RY1P zj9cH{#sw_~QJbyt7V~8NIp;$cTOTd!5r)|BNPgerdpBc2>nn`6(ppB#Wlllk)gCbO zEf>mrD{S<%>kKGa{8ZYuA}moTuNr-!$JZ_-iXCv+@i;%u>dhYg_Wj{Y;sQ<(`iHPc zLz#r;9$%4a)rHXMZ$GOVt8Nr-D5mb#oO&o(&xnsIJdttD(&bIezL@co8gINa9(GJQ z7jyQzh43L7fy_{=t|vvE2i9cWJ}JLCY&U&amxTKCm-zq4diQv!_V0iEbib$^-E>1y zNy?;~kfsxogi1&*b0p-XltPmB>8esmNJ5h&l|+aTyQqi|$~7h;_e+d1=Caps?NR65 z=llET^f=C(#_ZXz=U(gie6HtOSFCoSQ!ChZX0>{7JkQ{1b~C<--P>w~D4DpE6N!iZ zhRt5z*NdoWPSQ2~QI+>Zg9c+wzlsC?GL|V>Tt(}T53zzgs|>_ zC%%Q=pUIuE8!JPvSc-Esxpg70yeiAHKUx3acWYG_wu=J~Fy1+0l(34MQ1Xlc^C;wt=iASZ|NqZG_C)2a&}mI#t9O5 z2Go{Du*o?m_mY{EoaUzLP`<3b;Ff6KLC0YI_}9Fc>Y6KieAUX+tBWYHD<@pzgE+7p z_bcU3n|3m)PDZfI@22j4tBFM$TYcy4xwy$_`~L4jCEa&px&w~MwIng8Y7~1AP3cGA z6_uZu4IH6Th>-)auQHHuCl>y=NPO5{>purxUX^G6fR|?)Ig-X6`3!zfc;xC>=lV9l_p^|xC zpZs5YXC5UM_Be9Loi7Bddp120t|@bqy_YU`AZz{WG^V@vBtM<&Z@(y1_r)<>wR5J9 z%28B#@_jUi${%^IOIm%l(S4ka`D6fMRVHR7jnblyws`)r2S zvW3(W^aQMz+1nlPQcp_Rbo?oz>DBHm=G6Wd$;=zXlVoO@??^I);!Pn#4rOn$y!l*q zKe6w*SZFGf!rVmG5+h8RF08{F(vRqN2Z#g@>lIYw8`GFchgR#p{K)q1y{#W`Y(6!> z(1?&bE!@27jh~LoM$sdqsf|}R_dRD$k@IIod3rtaY>P_oWM-{>eSm115Pa*HS;+3y zIVwBqEE}_S*fh3J+kDAf*71_9(u+6UZ8m$~IWARic8-0sL})r{@xD}MlIwIz>~Gd& zXS=U%k?lg}<#W}X>?J#2FWD)l|Ighmc4{|_WYdStcICgC5Y`nCyg9HEw(CEb>~(ql z1;rHR%0mlf!lRD8A>h#~SnFgi3~-F?c;%GHn(t z;4x0@?QjuR$_Oj7M?soUsn$SK;eeC)NK1Z zTBgJ!Ew-glDe`d@aW%sxtDzRb*6>?&ak0H9!}ErB^OBxF`nE<$S1G6@6dLbp&i1L` ze=t9no2uB^yGXlpVh-=lG@(*gk)rw%_ojpDc+xdi2#eFd@(es9`f3zr7ninOycW}{ zop+R*+=6$M?B;dHGW+i8YRq{y@tRkig7?vfdDNEHEiLAA?xtjkW`8r!Sb4tv=kw~jW2Cl=V)sG>lA07S{Z;xS8TA(_NJXdXqi)Jam3)7z5+8l zsir!J#>Yj<~)=ya>fbe-{~ZV>}r z0qb?XXzncu^}06e>Tcb4ncV>=nQsuS8xFUapWv^vi&4!>!Dhi=Ej~)eLoERoMJN11)xMje^R%YM(&gFWJkiV*|x?E_hO^qKX$7sdUU+ zIpAl}zGyer%{xiR!n zRK)Tv$wTVlEh!z;mQ%Lh`7XiL{Bt`NtB#Y``)VP4v1f+N3mzupJUV#u(Z4He>!&6= zxTH>X^1Cz9o!IwQJwY6(79rM2Qr+&UvoCZ#0%5iGn`#BkT{RMnrsj&Go;F#FicdDo z%Yq1<_d=yuld+uvDf9A$O038xabTBpId#$F#-PDk)?xgH5C8o@sIcCq?9%T;1!hoko10MH# zJ4P25X{hv#R@A5pwN#xEc;M8ZLZ#0|T8`VDqa)=0O72(J?j08(4qR|HQj6QO{GrL1 zWE1IY>o4W|skkdC7E<$h2Cd%q_lmU>jzk(Xb(#xrxE_4lS)xoy^B`B_z^0Q0hs24kl+fs!}@q%&P0iW7?l9+wR2?W_jF`O0$rpf_1XfSaG-aRq? z&_rz!k01^Z_g^1+HsQz%b|sbnFXK&Ue0vK5HFwGnM-{ORzPe{RtNb~8kjlS4qfv_8 z(~{2InXw76{_^@pPQYq4e7x8xc-4vni+tA)8gzH%VcHm@Sskkq&FWj^ne;Tm_jTCucU20SN631G zbVovKjpt~m0sD(AF#K!1Y0{`4(gAI9rOBg15MDz0%bjyrfH2Jy9dHYDdKq^?{4ao;{Hb`A=tn-YosC(OYIuA8KAVLzBo?aj&Av zzZ^keZrT`FVG@{aXc9QmV1U{pJ3UNp?@L9cDTRv3H(um-?y$MPO4cRL|K(nAseeIc zFw6e-S%HN`i~IR62cW7u%?el4h>dFhb7N?Z))>!QytQY9v?zyCBX09vroIz}F zwZ`M^IZtP5Y0MIVp`NS|zxkx(P~9}Q9?#azN)_b}c-x(L+5U{_{y4OM>08x8cJdx2B!wi(745{I1+p`NP`vUsIW7ySxl{xEI=c zK6>r_?Ruzx-vuQ`?TBa0m5)+NV`MX$ZYIy>d3>33wVEq_-4!6BuHt>KoV!FYSx?!F zyI#+$wx?DhUHQG{-bI(!8C==?WQhKCHuN++WA0RW?;XY!wO7v5ASsZJ?(;{Llscy*Yp*v|L)_4`>jS5_)t*#7m{=;GK{o5x2C#aAhKe_S^0 z^h&8F*O5hQ-@1moo&BN^cBA1rb7xSp^L*_yNj^&2Tx$fO0(m@x&SN6QGIO2@t~E=0 zMCtM)y<5DvRI;yhPk?J3UBbCq)+<;g`3)M_Wd-mIoH`rCf!=;@FLYQ+UX|Mr_XZBz z4g6@IzJyhC{B!2y@5(`6GvoGGCU1D%7{=*2%)0{dHGA8f7lwrr@hsQ|di+?;mP;H91gOJJa=IaA#-6f*Y~@U2FAh z?j)2xC?y7l<_u)y%U$1w|LT7Bxcs|-NcZ!{*Rvcx&H3Rm_j6_XdX^IJ=ns#chY9^e z_B-DLZ)F$7G2DH#H^057R#Le>Ja6#i)gAhuF1#x%y;D-TrTxubw%4aG@h?uU4yd2D z?u2yD1e=;>Qn}Y@T=;jR&B8kgJEqznF(|6LJVwz~J?HzFbLP>BL(#q^mFqqR=DN$T z@lw5gIkA4czts55vid3EIyKEhb8@d|h_=X!PhOp;c%;9s3dV1VFuF8%bARoJW%XAk zcBT0JQRQT?YfI?(6WN=;$#K)3OYx@6srt)#ZWk%T?O(G&bE@M8);GsPd;TsRyc|Eb zrgYj|wUcr)k`AUE&)zJy)rg3-S=RdMg81=8`>M&>G4|5#1)G%L;-wL4^%l&C3~}&Y zTz$t-VfmeeXH4A$(R_yfn5b-lsG{Gnfk_{Y*r;z0K7bt zxDh!Prxu9aW~y9L>}cxTe)}q-CF2YiX3})_6=YDA7i3hS7SNRfM>SVR$*6kY&jf3q zAu^H&hnm4>8#*4e)&zrB8Tmy&GPtV@&KpA-t@5ldDt_mh+x3*HwB5-=?aB6^!*<5a zM1gRUcXg@}$fEY7mfq}o!B;M|!eOnB&K7X%;}TQ#F_Z#u-;Fc{w%{S^+D!5Dngb1;ntz{$C;?Q1cfsFZ@8L!8c) zA-Eh1%<4xW_!$exf7@VYFB!3XYqH}C>%XlNDNbt}SgK@3^^v}hp4;hp)>t$^MGe?X z@Xj+BKkV@#@_Dw&&VUbom5HE{3*n>03ew=_1eN)D6lW6j93CW2Vl>esae~R|zVmqX zzbXeUf!cv5(fsbMZa1kCX8}1|#BgTRR&MGT_u&qwsTpS0z-*k-GzPC0zpy1>*0fyD zgtJiWRxv?0a+hZ99j9db(Cneb4Cv6RGmjjfY+`%OHBMw2_*N$DXb_jMD+gl~6EiEb z7g`TGc;>w$%HW3?UqR0%Y!s05MVzaT?yR}ILFBcaik1Ids^p|3B$S3gl>m)EDnOPp zXf+6&UbAC}lf7ckWSJ8#qlCn$At^@`gRTp$p#i5*OGw4ZYY-ZUnfE?`C+M@bdBf#qdXe2}B=JUa4p|Y>bwwFl%(gc`k29XpMa27~U5$C!Xym#fZmF|NE zU&Og+tHlUy1CI-!=@^9?8*J_+liinkk{@2b9#{q)z7%mjv?T2{7xthEm$WP9xBzDGIaZk#qq@Lj1308BTnnc( zZW=W010W-D@1ij=3so0nD`Gx7I4Wg-jv&G!*9U z2Zk9XtsyS)P(+FADCfi+k0}W^C^8qV&wTRgEnB^0bM^3yg3mDU9LF(<d{sNWMey-2rEmDkoLI(fbhRgT8Ps;o%0PvY1tu3#(!v&bbkyiOplF z!8MC7L-zM2)Uv%olE1YQWi0$`qVYO=^SzCsLGEh`(9!i zpU@OS^uy~%)2l(Dlw%=S)itgLi;Z|n3L}wv@b7}7dB8{n=9P)wCvS0KB^w;7Vn$Ib zY%&@g=(GLN@W>!BN!0UXUg4_uylu_)Wnkn>Val_xZuft6MHpY9kRkl=1Nu8*(T)Y? z7Yu6nBabSpQ365F%wj3C!)Ym+}Q%ONp3$e`WR6rZykiO9F>Eo;~)7H66 zZA3k`3XBeyjqZRpv;jGATWX|30AAYjNtvvHLmwtXZI6D%mj%7B7flPz;6hdtGyZvc zodV9}T=@Kz2$MDOmbxD5apW#|r0bchb$!R5C-mmd{4=$Js&YBFsj5I9pKyUUmL!=J zPl>5Mc&m$CvIWSVHsV_S<<_0keMgqQojC!>yJDg~YQojs%6|CeKF0I&kxmQ*>2KzO z)CHfbuW6NUNbP7kAxE*6h>6_eA%}Fv;SF~D_SHA8x#uN?gvD?nQ6HLLsPEkz7@ z3m(x%3<+jzxR;r&9!~vronm*i!B|o27;LSME!XoBZseo#3`dJ)qGjTWJGv>Nq7X_B zK*E~*PnwQwp~cGfd3N)~1pcgjy%bc+Cj0MCRd6zseSxNL`r1fvqxR~{ z2f-R+ya!~r0BcQ#>&daGRqMNWYB@&(V&u`kt-A z96&9S?I|)1*h(0u42T8_@C^6w-z8=z|!Z@JOvO1uPA_ zfkPf`nc8Q1o;E6;5RA&sEbG4y#2UK+7gIDo@cK3h7OZe8p=}MTYUm{*3D^-;HW;YU z9T88jiJOjhMC6K3h9SvaE~&Ck;rL4OX}Rs^ODj4)HRn&e_`xVp<>CiTO99A6n}G7y zp9MycdZy9hBD7owSx!Be+lW|ii@^MgnAP0FC+U?GreixG?LMd?mR#Wy zj))}-#H{LEI@duJv1CAYl$diUQZxh@fb&lGrIvGu15g}NFU_4I zgC)in?8yBSZ;ua`{nO%VPWvPoikL^gn2@oUZhvHiy`}u~+{e;K`k6aJiDd{Q2Wi;v3Q737ZJVAeJ~DfJPJY~9N~j*9)wgukN$b?EJZOh zuLbg|Vy+Tv#mvH9X6&+KJHLow)_(|6vY-r-X$0{hR*KzzFEW-N5y5yN)IGdz>9+;% zjv?4#N4@uW0M2uM0Z4!ZK;%m)c5^@TW?af!F8R!6D#P-#otliY@g{U*7f^((vT-7% z(C@|vb#XdRrx~OkfCK-OZ!;mx%GX-=C&hkEu^afX9`evjzXZf(d;*@hkFAI7?9o6f ziCBh0xUM^G&a>{>P2J%4lKuhHdOpt(|E=b_;G5ov1$K+X(Q;zl zy-ee26rm@CyGP&be=|ojA9JnkBtO6)hocW5-Q+TM3*FWV_lg@Hl|igA7$8o*!QR96 zLiMLdPbp%zkids;wd2wj<6T(WBw&&8mtH7@`_xyT{uVP!%fWnzBAUUg zEq!#piH|iO7IeWVy7%bFnePRbXnoTaXgx}Gy+^FZ;^qO`aw11!OkY|InBJxc+WS`7 znfo`AK2m0QlkdO?+h+PIu)on>AC+G9(Zvypzf~D*tTI&4z=MyC2pwJY4b5Gkee7~C zk-~!wd9Zr#8u>}U90z1B#hwJFQ@DgTpI9j(Zitz)DK_?CePQSg7P2BoHkaI@h@13R zNk|NSPr3WrVA=yHd`*MHF$p-B_Vp2Cx}ds%zC_I2!CtI;n#Ns>*kCB&JehVu>ydk^ zPLbMc*M7s_YYa_GtTD>5^|-->Bjw;ow;o<|XeXfdVk(GA@VE(QWkyZ=3Zfh^%?0I) z?frCxq0hY-mQS&_P(&pM9PdM+6ey*P@l)GQr7^Bl^o-Bq&J@D(KDdH?#}$7l#J=N7 zCKO`dA!LJf2l@1jg+w{}5U zFSs)CG=;q=SLZ|g9}t>iy#CZ(^!7D635Qtcbj}Rd7OqVj8(^p8#r}!m1`Y6UqN;S2 zz3$kIA%#bU&J)1@&7LhE=7R5V-*G0tP)qG2WZ2wW8tPfag=pHWMNHI*_`_ZmQ;Gi9cPQk! z!ZSRb=MWOKHlw9)?);3Z-3=go4y613O-dE23HaEuV*n>X%-k^qKIIT1F_UR@X^q0Z z;|do>lmjN3PjvE@EvGf>F!G(u>b|YrH_VzmJ&E1(hKneVc008VIKQ4y{XCeg=ln zvr5dGgfQ?y?Ot{AEn~Unb`YjO9$maVaJNIuEGXRY2c@t`OjdG<9axsnjHzDnVdktE zPr&bl02a{xMPj{9=pWTCO6Q^HGsWqq1+lG@vHjnHpEfQb=%2#H0_}3JQ8pQ3w}1L8 z(p@PA$Tea@8k_%wYQNWy1FEHz5E5)~1xg=%6=n>fmynp)dF@pgHmyY~WtJpwEMEN4 z75RuOShnb{|H()Aj7-wSZdtY*4flNZ<|n};dI^0#u}ny;6EW9+1g~7kt%giq68Pa$ z^NX19!sw|75iO3QzF(%s& zeVU2^itYjozDhQk)qcOAnzvdw$|+pB|Mzks6}uB}sX$FXytHe@ge-o>!D|olWd2S# zmG_bO1kTuYNH2U1)#pHA-{XK<-CaF*MW#AiqYXZ6=h0cT#|eFd(<8Ncb@g!GR>Z0*g7bA^7Qctj^gd5170W*<^-MH#VR$VW2jKD;$@Z(1by5Wf7BPfJy zta|xx;y=?*Zt&J~>Jg znV7uum2hs}eaA4>`5KPCDKz#oEvS6aIR3MD1@W4TY7F1Mf!(L7kLSTq6^y#K>Dqwg zMG*P&WUbW$824YV;Uy^*`dlzuX-J{4$cOV^snEU7QG5o>F zO%O59$(#I}7=j<|f2D%XidvGmPMKn@Yk-?p%((0HWIGrlHcJSre1Ylv!8bY~6QW>P6F8nf1FSokyL&{3Jj1^C`Dubf&mm?K5?%xDFhUV_0V=HlK35fclhbWFCD?;<=V z2AkrWT%q5j$FxNGwU=c^C>Iu&Lj!)itSAf{%5yIgxC`b+X(E)lz zTJ{fvmO9s#ch=oHc&DkEu#L@pJk7r1QDNXBBu|r8Djr>I2yUyzY}zsGBP{!dgA7VP zu!9&X6ZL~^_-hEw^`*#h6lc>e#v=rUJy8bR6ot${5%U!Xu<=em2Qq?Lem8g0g@T3U zIlB`fVpuu^&ufLu4{yQ#5G8$dkf=f`;xi_^g5S6fs3-%?mtu|{(p6~?jxPJ&UP20^ z#l!eS{)3I6;ff`f3UJ!Lb-}z|_>&3JKf+!#F6P7MKfteMF_jfS7YY|>Oc1BaP|`F* zX(_}RiV^rqWF~4aC%(W!p}H&4-}j3s;8XKi#Du-47CK4Oy2lP*j6%e#%_9bB4x$R` zhA6P@i{O|QZlu%4Y5^? z;}Oz0B=E)3Y#R;<42u}uIfg;o|D;U!f!AA_qzuQ16zR|G1DO~*gpbI7dn!xDNZ5zO zeHe@)q*ppLdo%%-lB>(XYM6P5z8?DA=qK}VFuo16@i}%bzROV3K#a!6#umfrR?5zP zWt}5G@Jz>Jeh4z_rPeaGm+xsT$k=_Rmsr~ci_n|y^QPuTXE*%G0OxYdD5KyDmpGN} zr{M8mAh9FDATqeP3=V7q&O~Pk>5z4?`a-0wI3e>scL$}B`RVIRMj)!X?gO}90~bE7 z9hNUPd!aessa$&uF0;HtmE;YAl2+KgLZu9AspHike(^-0t$L9w~QrfS7A4nFPtNuL`+i^lxX%lpI)415)%`=Re?i4w7}X zb-3D3(nplj8iwz~{_&r!{I#03kef!J9Y<~pX_C;DbJcyKvNEBIlr8|dV5q!B1>mrP z%sTc+X{EzXK6tsejV@SrJ$b@vpLxj#Yw$2w+@V@J&*opd+ZmoeDK}lJr@aT}Hsk;)+{E78S~TM% zFgLkX$!uAe@9QC@li+bD|nzaeA?3n&vDZakf+EOF68$ zj{(o=Lu4wK6lDAXm4TEc3q$iQ3P*{_Sacg>z!9h_`v}<;E1C&D;dLY??N2P)Ssb2ghoj(IcZeJ?Rf#JMKsC@$TnF5;Z&0Y6{~&xtr~3_j^cLb}Uo{knO;nxYIE0TUmE zFB5ZWS_t8y6w_8yvtemdGoEaV4Zvz>Cg!>d$ny<^iPhts>&3+R%2S`LGH>d{ zh&W|PVul__`H#f3@r_tL0Y^s;R$&OO%b5YY3My7SWE(*b2wiws{v*oxMG9EM> zK;x*03>ITJp2!xl9ogD#5xo}*COZrpIt=$wJSWp zd7c?4fO5Css2Mf6^zH45P)nEvW70D|Z}Yw|r`CxHl`pvv8fmGLeYFq#9zgOBy6|1z zr8S5vh>Y)p>}`r1F9DL}SF0}=+t5IAY}YW5U{e%4II=Hk4R%GZxJ-#RWO=LA=v&5a z^X|jk;{vAYaDmbFXI(rd8YL9VsH*EqW{GrfWCG*(5LmXD7YH%RWG~$U=u4zfjqNRm zBe*cK9Av-3GP=gdMlZ-Zj3a71=KUb-H$Fl-(2{8)AhO#KlO%jZsD0{2?0^$`+Tc&R z_h8Ft=Kc%{Op%*|W28s*=iEJ2lJ!aT?7n^@lsoWv}-*RBm-T!Uh zSx>;8m!sNEkq_yu4@6WOST`J_2Xe;DY#jsS?~FuGj%&Cjeycioy?K+cGdeY?Ix1m2 z%?-03_du+JMY^oWH1l*SgeSpV)P6>Z33bN@1h}@8l>3z!TJIhltZ{5I$WKM;#Rnl-y5@`mF=emQOC4 zdwhsh+4i(u@0Lfqdy@^`38Fs&HRo=D*xMAy(8b2wa=O@vrm&iPYMKPZ33-a6Br^4J zNCnwmdaCe~(kPw1?YMs-2qTBZgoOZJ_9A2yONgc}sc4V!QK5EDKyIVlJbi%e@dKLCci-z3Lk8#3NXjn`{P3LG8bmM0TV+c-sM8c7GPt^{+T1qB`8nKp$Z0{#V3R? zNyI5Af%ub)vo}angyt)Vb)DvAJe`(9RcTx>{>fEpEu0AK3t&Bj6^QZ1-8LJmLV`SZ z$LY~>s5efI1|Hw9h7*U#O0Z1Nfm?6ww%7}uptWOx?N`u3*b}i=hl)6SM2i@bCSi)? z0BzU_ax+#g-5~%+Hkdv$Vm!D_B^=p7GEB*T+)CPU;|<%IC>BnG3;Ry%BM$Rb!k1nkr4}*4M>=A~=Mh|PE7Pk)W&ZRZc ztr2)mW5%|8rg_5=`GpqvvfDp!Hu*!E`?a&{MiH z;nn4JVDJ)m)}h4G2a^yVV(&=kN^8W2CtTQ7j+^#?Mbnja*Q!75w!}vvm4I`9o?!*v zIFqT;v#_rnSs2{s1S{~|_?LBBeVBQ1as_-wpuUte7ni`^Ynh7Er+MQ+p&SEc@RaI$ z=EdQcjOgGnj1C-iEO8oxamaDZCly&GF%t)Z2kDaENnvb<{Rg|_rTAMu2ZvyY4X4O0 zr;V|gPnXBn{J5V&Zgm=FI|Nl=d6;)`gs+Y2P+DOaE3j zXC;kDiO&!u@(5(NA3Xr#L4F1D4(alNW7)8G^hmNx6H2%`?+AKfsD$OCJPgJvSmD%_wrJzcO887wqQ z+~vY4X|TLbaoCr@h?Hx^h|T*n??imetp#BNoH#`#w5Nn8ogxKg!6$7aJw)cabXPdwfN$NGf>WH56@Y7^v z#nHv@8~cd9Ro@H#4?AJCJP$aDz`i`O`s46x$mZt4=PSi<7^q|r36za61+!Ei;A$9ax0w=jSXw!mLcSYt2S-{y zCbB}n8Zn7uvdB-!UVZt*bnH*R#A3t@L;LDr47&B3Hs7^*+V2Wz#w}bVc%33X{qjrL z{%PAep#gMiU=&uyT=g_-4KL{F!|;+W_y<=o;&bbC`#BY09;ghvqNRchjq|W+|5sw8 zGRbw#T`EyO_l8KM42BKzmN%6c)-&3m^Z}GEN{c8uenG-p79b+Ym;(E5>leIrv&NOy zEtLWy8aW2KX|Jk3)Qy2q&ES>-3OgwUX92rIZzm7K&0^?h~`BeMT8&c)5sMNkVKkmUF3KsyB0e!sNKO?2lK*4@Za1T+khh;o!7y%a-3&8|I77!3 zJUzCk4eaqKpTncvyp*f^_lG;gn?le|0k#>X;E2emUr$@4DrGdqmQdV&oZ0yQ zV=4YzOC8;SD&8k9Rt985opl&Ju`DMI(Ss0c)4~SX(-4YZlr#iL80SZMM_Xn3R|vtr z56mcvqb7zBtQ^v=eW&?otQ^dxqC(~O0#gq+aPg2GZiKEw_(wN%AvUNYHo(f=z)=;m zySpH#4BF}`(m=pO%Y=Rml&|_h{Md1tO88_bfHln!ZJQ-#PXT623$&bETs&(6FsFZo z_|!|%9y4f_^C)eaTJ`5z#{4I9&UbY!6_I#Cijli~GAgHWWX@C9XSpjgBzgvW1|@r` z(BKtFyb?Pt`S6E`bxF)xu(Zi$osb;K0fi|LFdr<@C_z+kp!O@o%F*sN=Byd+@o`+x z-2iUq!7rQ&So;ea@ZWzzLwdbAe%V+!49z~;y!-zs8Y+1ZUIoq3n+_cdp%PmAVWwU7 zUpmNn(^LmqF56%^QXQW0#x+n%8>#jf|Bs`f{DKzSD~Mo)kX&za`){OwIlW+k8s}fl z@cID^mRa|_JIv>tVkFfpeg)0=Ho-6`y$F~~#T*W%T<}@n&zsp9G&wGpZ6$2gc7zzs z-6sI+iM3Y}pU-G(7(L$F%0j?dwsWd}#rx{0)!Gx2#f4+rU>x%8!z@LMV#aQ(1}Lfl zTkP0*7Y9zA$pnq#LqswUatmOTG4w=f)$VZKlVaPV`pHm5Nz5tX!U-hR(R@DEY3|J< z17!D&z8AxVgYTu6Ho;!<-qi(LU~tV(l46X6q%a!S22<})aN!=g`PfSRmiCblI+Nnu z7jyLK-eTE3|4gX#9wLHxfOen+y1t+N@Mr!gi|aj2|6H`F=p$S4iK&vlm1DA^L-q=CH&>qiQx7T z*KpG4P!UVN@rfbg?6A#}LW#9_18pe(fCT2E7zi>30_!u0BVwnzPs0c=NT{Tc&BF^p zj2$Dt@$1QnHvX@|q_<$iiQ;yr(-FpZtFPWV*uN2hz8e|L4HrAd7i_rF`ElGisB{6Z zPjvC1T{DJ;*uo^t!+{=Y^c?ik>e|v#RWO)~k@sS-`cAQ8C5?qIehK$`y2oc{UUtOJ z!nOf~_-kzgYf15NK~g*{dMP3;gyg+GLZKYAm-Nk2Y}vj~U(bYrHn0Dzma6ut-V=T= z9@d}Ee@W99nnp-1-=<6@#Y35-czDsHARYwMWavqs@t$HU;|3TrapftjzfXLMlJ_lD z`o4h&z8Hf>Q7k1fgdsvWySKWWt4~D5^YA&lj8HMb7$U!PiOF|w;lLLW`K}HQP}cyL zWQyJJOIgwepX({Ao5%HFSe%VF9DVIYNi z=Z`E@LEoeY?_NBD;!FWf3B{N*BWV`JC>R99rxQUKD>nuVghKpl07=Z|PVl+6=^pws zdIpAwMVZIkliFbKe@4rY|2WJU_!57iC?KT&wrbuS)wJ)y`;`|>1BW5UW;q}VC{lZA zQ`G1-XxxB%JeyfQ#mF`P;xLIZlFGrX3-;3ZFk;RB@In5aVNl{^iVP4F8Z(+G*O;q`l4QE8tFw)hY?`9(i$xY)YaYXUGTsenoe`Ou@CAtb^=Ar#$+u_8_p z7n~li+Kiz#w#wGZeDb&SAJb&b6}5?p5@}=Su(Y9pYGGfufn6#-6e54RAa(>xN{3B< z37G6y(AdF6DR;VftXTkGs=5FYAbjl-zYQOS6JU#zJ0}R zXc^$b*n&GxM1+Q~SJqo**CrY>hA8Do2Q zm57M#g}fR#f=scN(|N62=xBh6?&RNB(85E-)lwW%BLzt<6yxIo(lEUGlq;T+tQZ`f~0YZ)d)0q@RJfa-& z>57_^&dqxU+w6FRT_4mTEG!X|dZ>A3X&yU`J)nKc2Hn<}CG;j~G9OXl<6Drb6OkY5 zKnkt_hbj>eM-nM%nw6>r4aM`o?B#(%V@LhaE6hd4!4Km4C8+emO6uht4Bx@V*n`W1 zalOP5Cddwky>M3MGnc*sUfZG1?Mp-fi7y)I(!o^G)o$bNH52{YmWaqd5RefrW)3SH zJ+<~F9>-{Cke!C5!({CoN$K#+!+=jr7O~l41(_LTW2k_ybXRdy4)cMiGvGfYBu0pc zfN$X4314Srpj*gNC91pdnHVUm`$gFnzA^f9+9qU3@}K$h6$G zr3Jb5zzsl_6b8iY7cg^vaSnt6Y`9l+v--CZ6Chc%CBLdH8<}WWq|8qY$IuT0Bse~AOj0U88r6Qv~k3s*WBu>Qn z!UcC)OJfGuwy1nEoPf6ay#it_9=&faJk1YlCmp5hhMn8-@xAkG|34_B+O6+PqJx2c zX&a+;{QpR9)5NfM3sXc;N!QB#L(i*lfrx1-Bp*n6io3jSG>$bxdJQZnfFfF6I3WRs ztN<;)pJ_f)=<}q#5a(|hXCck;s0JE_TMA1S;!*1S1WFFw{@b7g>uuCEke3+gg?80t zcPN&mS8hSVVZQeAU3}sikC==KuUt}jSDlzyUWg>E$IgS*dKznf@eO+8_{?3%-oDooNP-Jz*Zs z!?+O6B}SFQDs+JPXkL+23|5#}WF}o48MY^G zhCot6GkGgiYKUP9exZZk?@Dxxn?xCS5wAf^)*#1&Qia0G&&q4Q(M`jnyxH7~?{lb< zO;ic84d{aFnTS2l>?vIjC1gY4_^jzUlr#n*qi?d@R>Z6;f^xjX;vPOh`zBZ6{k`a~ z9}2PFLO>R2wHv@fT#=XyOd~KYd;{gTM+*pVl)-KnKy`QSPr$HC# znbd=g4PD4^%#>}T3kGTX{*gJ4cU0Z=%mK3o*g}&HxmP6)DYMSR>@JD$>3t4`Pw$_? zXL;>wkZPb+&G5hl&0irL2fgNr+};MlQPCI_-Z7P%&rJIU?>m91sO$7Rh>}Kg(?L&{ zn04j2ts?N3Ns4pfS4$CAXCi1bfE44fbsshsB!Uq>+aX@o5m>nOQ z{T9Wy;6jC;&TBJtRdnqMNpqNS+oH)eH z1`ifRROTI^O;dpqpzuYYNWhPhcbg)nQKmD{bWg{f6>$Ufni%gUM8iG*#)FqPUxyvZtLprJa>1KflZt{p361doV5bx#Jh2YlK zala<%(y8~qMmF|tkDd3qlp;#GFqbaoX?}9i2fIXu`XS1+lp-%X+}xAP1y_kHVWjr_ z!;8oK^IMlO`a^0|^<5ExPRPWtZq$3`yU?&98eXzFBEbp zLL_F&Q|LFHAXC_$2n>THaI^Co06w~}A4sT5OARs8pN5XK4y(8ybs?#t14H0l4&P|( zpyyH9_Pm$AMec(zx(lq=O{n)@BW4Ckj2!vmixDP)HUINo^Zs-SFMonH;D2?+O`N33 z@3{EE5MTCr8w8xk659@A0mRp;<#^2v?0(>fh(x3Ta;aJ8faCDk>yacw(JY{mANJP= z#<7(f9O2Yj-eAWm3OA-P?XbWYvo0lAQeYG)amyA>)Hw*Jc%hu9oC07J~sjL#A?=TPJf zdjXqrb8Kv6pr50UkDj)JjU{`~;<>DN!ckfV{fyRX8chl+av=IEq5Rr$6Soa~kd&-kJ!oNxA53%Mp5s-Ozco1#@swpZkt_%ltx53jvw*KS&8VUCmvE zZ4eqim4ArgqRE5S{)^q7oB6~o9-&E}=x1zeEW;B+!OsO0khd$t1O0wuq#1T3b=4Co z6w2U58@xuRDotieIjkK>i37iXX#P$kb6fMvy8HuMy#o{zD3>o<9fjWS6$ zD}#XBlme~&(i0pP_VRKJy+FE@PPb>h7%7e!#HI2!MQ zz@tl6Capo~=r@1%_dM7BX}|lky+;Omt0XBZ9=(GEcNLc)u>0zM&UkOJ=tK893gwRN z_S6u(lItb38$jb$dkM2>5TXs_+Dm8Y?7fx@0YOkA6q4xB`U9PjlxRBIEI!WVoiF{z z@1s#(6`kwfa;OJRsZl*G-{Dj@)idZN;xwQivl4Lwvp2KrX+o4!Sqm&97#!$@DflzQ zjlLi?TsRRhz5(0|pwb#OQwHL43CQ{`-q1f(X15csgST1CEx1A zfFoZ%cv>wf;v;UerJty9(Y9sWCqvEoVip>OO(mRW=WIGq15;2JHKz=7npe$G40SDP zpf$3XpGIwamS6n5TgDs(bddhw!V229z`oaGa4b!n1BNxAk2=e-H(S?w4HD7}Pa-4{{i*8OraX_@>GhD(g1GLV9sTuchWW+<)PV8F- zi*S0{PXZCXGm^*fkUXoqLlKcZ$YrN7o>$DxH>p(>!DAj_FDW-P!ZU?rW+-%wCX3Y8W>YzM`i$Mo6YNh;Pl%T>}Oo7}ZZH zypeQF`#khaFxUBi(;F2zuKjK=MG61Qxp<0or{|`9#cs>rD~Uzz>z@XZyD-F=qnB#G$U}4bu`Blv0 z4G>ME#Z}4Ncuba@#rpap*kXH1kI!0ItSU8Zs(SpRmtgVOR zZ;D7@@Zll}NN#YnaUmxKS}PZ>MSoIg3CQ(wVpJUjL@a%xTkpRRlB52c=^8lR29s!D zu=;<2;rcg7?SzC*rD+T?yP==(u{%}12s!8f)DE6R?MSTwZCVHQfl9vRB|{Iiu+;x!*G@GFU}&?_$x4~fwdH3LluEg6%#n%zIM2TFwZX( zIR5lx#y@O>eZRUA-?ND!EM(#Tn;aiRK2sKjcK=_j1)+cJ8RHz(x2LUNd+rG*2r$@caFgA!whbhDlwssr& z*8TPt#|+#Fl~I!rAR$#(D@U@i-)g@q^{~`YZn}%|M%qdR)4-$aV z?~UcAmqB_Slyd;7I$!SQJhqky1^-CLy(3Yt_NHV63_cpMF6K!vd5GOD^slOmeeeHm zDe;el;1q%@)T+JwvP?1NSk7&k4jZ%r$VhNof9(}&*53R?_?`~Tx9@h>n)dbuYlp!Q~@TIWIM6j`v;f$0+#3FcP- zA&>w%+1P*5j$HxIOSS$B78|Y<{N1j|mV(MNkjIav&g%tG)u5lStr} ze*?k7^#Rb;K^@&&@rK{im|sIh!X&bQSg}A0aqM-|;cym_J&3dT_SZk0#n~XyGH_n9 zo=`t)@Q-4=lGnbof&&YsMhF(%r2p-;^g*kr{x{gn0loT(%Wp6%1p?k+_JBpj1<*6z zjdlZVk3kUGI8b=Db*eG2`wbBMJxO)qAe&bIKjFgarEp;zohj6WHhIq}g4&>E@!y0+ zyD8dD7LbB?Zodyi^+779&9XsQmQDM{*$tP~yhnG8HLlhf(Hr0TLnB@X6}+q0&~odk8hEk`dt z)EvQ+v(f|w3wlS{-O-#!8XhfmR{pn}1oo-u|JzOCl)N99o&sA1Hksqo&JlWsSC08^ zp1?Dc*)+pN(w7-b@}F4Y;`+m`zW=2L_g<6ZXo51tBu<3`z4V^`_`5w$@&Sz60l9dh z6ZERy7+qYTZDvtF;bdMQqUtAHoXF@)D14`KhilFHJ;(2>p4eGv|NFw4jrTn7{CwKG zf^R}%V&nOTN>4xj_>p(aS^B{$;-vCWXOyzLyQl+mZZQ}8;Gf*^qFY%>DeA}M=PwR7 zr@&^0)Y)dXfTo#X1x4_>Y7C;0FUI~SN~I$(cxxSP26zieYm|$}Vv6A6YfdNBP@Vzp z1MzO^+@h!?M|XsJ7zlc^*lJ5OhMX^?L&D{o=meG*yP~Cjw`IpFJ9k6J932x}fj%tN zp%tHRv`HlAB&hbEd3d9vf=$q##m-EjL5L;7*EEmiB`YBLsGji(Hq~m&BJIF5CY#9E z=U#%783e|HhPQE70N%YC@4h+-XfV$Rnt*9WQ1woN%DV>IYBcEu@8t|^`2v|)iYoFf z0vcm=%oVtBBp+p?_#-+8Cs(rx7slaSC;a^lr&gi=AX0Mz?rdezl;0*m!o+pxv)#}G zD`(T$gkyNO{SdsDN8OpH@$R2Lp{A_DbyOCOth)c+4GpK+Ebb7f`i%5IC$oV?_GQu9 z>Oo3sv#;Fs)t;tW4|Lu*4PvK$l=v@F_nMqm!`)Aw=Lr-X2?N0pP)I6DV=Zj*--u@}ABbdh!l)yj`Jfg% zlFY!;d$H5!h(=Ouav&=+)8hTT9=M72;Ig3r?V)z|!$3{YfZJEy=C^-yhSgwl@Q z*f*4&)O;GEqa}-#nzG1*%r?DaxWJ^kS;V`3IP;4$9d^?lD7X%oSLQ-D6%D%Ec;W?d zpwe>S7nV>okzFKA?v}(e{o8&UeV>@U?z)V-<6S6|?6^lzF5AD2*O$J}xWg$4Rl4nl zu}3PW8%x*!co;96ehJUKvVdOwo5UOGEpqeNZAmaa#G;`l)}ZY0{jHVu3#qYDqiRYU zTIwsPML-faA2wG+j})39yD2q)qTv;;;1N}*!yu3ET|cd>Z@IhLT<5m4&mfLv&NPL2 zXnnD7$nf<5s<`yu#-dShQ2<=$BUw z#wM41dJ>tvV-ZuF2f`^Lvz9ZAQzJ!3H7_+nX%y5W@J!z}lr`Y3*U8Ijy52roq?Po5 z7(;v2UbD9zNW_U|)=YhJHhk{+C?X|Q={D_+rug3?hM^&32f z;Yw0$$MIY1Nb36^RJZXf+RMz-=(@}7Y&T>&F3&SC?r?Y;4#93mYTZIp##<_?nfy^a zyOpo}p3Hy7gy1G!5@`uNmMx)&02`qP;W1AAMqy2sv&i>ZsO>oeO}4uClG59vIiUUv z)PF+j98UbmCO=%Ho*2FOON5)fllPICIyc*U7X#b1fVIxE$z>I=_X~?$)(Lx2FGda; zp-XN$2YS6Y@!B}ZbV6l18#c{j&TD}(gcEn%haP+o?e*v*D!^$5*a_Q%fEb#lGz}gx zfn4Rmb-o~QWPz4);7{cdgj(M&ypM%*XN9@Vd)E*0StXAi009xs=A^Z?8dmFs%DOgh zu+kiTwn#Np$h?Tg=-#AVus-i!QTb#ck#`Zz&!eqi6NY=TAF>F6Z4d@dUTy+7`40k+ z`Yx!f2KyTzpaBij*KeQkM{!jhs5d6vY@KeJuQNrXGD)Kn=t(+-x0z<#lY6gLH+rNK z);i$H;SHFfNk;se&W%P>!xAzJ)QIjZvw3XS44mhS>>j<2+IAOdtM^l{(?;NAB|OWv ze07#VTfImo7klg~hiONIIc_fu*_l#p%OfR;5uU0_I#v7n0bTW?+~&ihDBkmfpzT!q zAuXU8BG-=0w#X&?2s7&k#b2P<1Z!0u5`68nE4g0tzC*+7a3W{U)tX(IiUXA|`u>9= z#4})8X1|aG0w3zuh&zlrptntkLre7zOC^3gE(1qeJ6gxloDtZGGbFW!xL>DpqF}8c zPD^cGaVqzA-WN9cLk;+@17awS#W85RIWH~}IoI_GJ?d}}69Pwog$A&7@Y_)g9eEWw!>~{j%NZi(_lIT*yqMirAQyk z3$l5}puOzjTogN^>;b22G+(RrWeHuj5C~~_gEo2#Z;Q*{()ud8=M9LNGiXOG0euUB z3GHL;O0Q%=-~bEL!9KrK8#V0cMB}qqWhxc zfuY=6+j85DnRd}dFfE8vQ9q;FET&lEhu*!*3JfpwA3~QoYER1-7t4+fcJBI)zYf_V zcZ?=@rmV>zWD||@M-L5xmmg&Q!u>an+c{2Qic{c#n%SqoSQCasK~Eiu)r#&zawv#Y zcC`4Q4q6FW4EN1{XJ}q2T3#BZ$zmrioG*6%FeT(5^jjuU`Vi4q{=?S+eulA-Sl-|K z9!?t{SZ>BhMWmtPzB?|8LREhkxjuWe{HW`*$IDAEL)YOC@_Z>nWP(A4DiJ^UWYxFK0`KvtYNipNmUn(y&)YNbDWR&Q!Hs9d2T`~GI*=2#6u_HmD zO2hg+X=cvcH(-Nc7$b;p)OilubVm8qipT4UwR6+Fg8f#6H?#))nmnWW{q?8szc0#t za_gG!+ytf%SmZUo$s1zl&jcTyl|J+Fyw{N@>xPz{`8_%JyPzr{ZebVe{zBXNKbgs% zS4{M;tj=Qdzx7sdhqY}lGgj*MazKz{Im)&=*RdUxOu}>zYl7u0?Zn57F8#djW zThsig@al8j>myo!1YMr5=Tq^sEO)QYDrS7zl=-vz3S|S~H>r64XVHj1uR}jv?BDu_ zP(iscnW$IQSn+YM5_ieZWjA}T`-G00FO-(5`SL|y%KXi<+l0AMD#GcsRgAaH*hjCM zy$A033MXXUX1T)!$oNa)C|0PmAy z2c11{mc2DhIlF6r`t`GK{@S$W`LVGZahK}@PgAPzTZhOJe|HR399eD^+r!n@dtdq9 z<3Ktk#Kr7y(nZT&*ELdOdo4qT&Nzbrv$T{pO}(33_ouvM;ZN+|e46It?vC62k|Q1x zaoRw)`q*t~F_ZKoJ~SeKOKG^>;oC04Dk~pL^^pEHV+PQa0`60QD17D9pCQ-3izj5S ze=-n}Fa4sfU~y9XaqQv71-Ves?aObT=d1B6EIne{%Q&+|xQ(P!Q80a^_xODF?hM-$ zu{LZ+gL7;RawUJ!(w7+)S3J6*<%dCASTDIWE9hGA%BnwpYo3a#*i?#+{L;B`C_2E& zK7N~A&nx*x^Q+c|TO6!iWE|qx$Qv|ViGR3Y>UJgmuL<+(>(i3tn}WA1s%Xl)w3$0y z`nn<^BuM4^$@F!nM2J{#a7D7lMtzYXvEw3QRl~t!TcGCe;5Q#E@}}h8hxmAiP`tB3 zraVN}1#942DZwj(xXvVKJe)Myel_9H!D>OlZRhy~*Hmci+ZxQj0czGTQx$G(;CIf| zQ2Sbxwjr{z!#?wk;*}AD{#gaqg`Hg%yYIdD@GC)|u-$v?{`_O1-(4~@>q{sfR#%WJ zXxkngr|YDh+ZU*P`;QoPp-&ROv=KX6NreHgOQ%iP7j>prGtL@~p}cwj%Bv;nr*DUxQiG@b-}~9GN|+ag z21OdYX9n$R2W`3yRa`#`eFXuGJLo}{FTcDuPYmVK8A0bHjlpTUeu~AZyx^+C3WRN> zPCFID4GEHlH;x8$X*Oby^XoLfU2YuCA9$dvAl}HkBC1}~&L;mEMW{aBDap{VL)mGc z`Bm**SCYB&nr%z23`yiQ-#ipUVck}5KSi@COK*v6i?~ORG&aAL+wN7-@GI%{(~dsD zQ$)oB#3xfPf-b%tG}$!mBUm{oqTFIRVn`%%XVYi(V;UHU$hH1ht zkM*%(@%E3h>oiMm4QHMm>tjfwkaQyY)pW@1ZPJ4x5+$?gGdAlTlh|$H>HLBnYvSE_ zgS^SFRmaD6d>#~$+b?M@LEJy&k@(kZ;k9||Qrv!_835H+i0>mGT}+LPw1O6HecCf*y9c&hCA zz){6eE(Z@?NoXY>6mNXhdMK81RL4n%a5bv^u&!=mUB8b``{|G0b(QVJ6mxUJ=vs&G z)oI$0QTPlqg;9pT>5{#dzs?zsNA;jD6BIRLvnBYYji2S2XvHUdPKC$ritPF=y3&u& zb~>cOPL|kgC7W=|@k|ODSIhQSQX~w^RokhAuFVlNnA3KC-l}3WSB@MRt7jfDye>^x zd8;hjOK*!_h?}so^s=>7Sk;C3?C_foxm=DOkEo^|uRYdV>ot9f_@+bf^6M%GSz^tL z)j_#3^_nLRj+nm>>s-0f!XV!xxa9X(bYsr+9otBStyBw^m4nK`zLM-#=Fj*Ht=r@3 z&JL~IhU1^(woHe}Zkuttrt{Kmm8A*2J(kO<=vavA&VvEFnY@>$Ll*3m^qMXxsor+n zo06`Rm*j8uMYCqx_=?YNmX?O}&;B9O5>vs4-`K@UObxG>Ck%V)UQL$Co0eC2{ewI2 zN2=TS6X@~kHzu*(J$Mv+U8QMnzT?xzeF~2cnsxgcXxQ6HZpxL5rB4YhW7=5%nGb8} z8ygf!FhnVd7Yi>-EkD{n~ zMxzTd%iv2`{aXuj;iMFU3$!CuOPjwJx3%+#(-T7OMCl-9L-x zc>dza&D^81ma&vX8>?9Hv9CLsStjcTx6Q;ZR^NYGSeE@qbUI|+{h7t;6my1GV*5^i z^zErFi`C8j);;@<*EeV~Jho4V_;aBx2941c=hv5p*Z-+3X!@qwQ@!!vUnw2>tnr}f z4diHwL$SmKQ_sYMgsAN9XOuDa=W8lWLR9ax@xDD34SSk*;e9(V?#?2uJW*1wv$9u# z%OwCpcqr_~_N=P+sxOO$*{Q_|8Lum8b}P=+X=WsU5ak}$F_w$IC3NkOL3H$CFV(B@ zcbn7{?BbQ=3^vAyTOaC?#5eQvqwBpzF5Bge53X(aK4dUoLtZR-v3gljNb~YrB9t&| z5xs0{5kW3hk=M-OV6}%>E6>BLDlUf<<$IG93_Gv%PaV6c5*oC9&Dn%QhFVt>73G@l zZU1~X_>#qJBjYJ1k z<=d?nhJzyOyniNqZd+Jzi`Dg-YK<^0FBt9j?(yGuoUBNY@UdWR-7EAdgRl)VUQB7O zTwY-B^}>Dk`Tq3ylI7m$#*2lG)@^=TH>;HDHQ1DW?7IT@TK_B&{w?49>oj}Qf{)&) z(pdG!3`(!b*MwfJS^|%&%xjq#H z!h@Y&muwYYFP?ONqSJYM2PXB0RIH2siqTMQZ?G&g6cH4>@fD&7QNb2tIFOfNHtlWVn>|6ffmrq*XWg?Ct9NC zcNEPy#p1?%lpUu-o=-5eBd{1e^myQ_GYYX3A-yXy1c}LOLSh3aM_V^smK~^a3pG-5 zsx&Yt)*L@N`f*T%%_|<0s&%6Cw86G>tUG?ls3WkVnuouA<8DvGO9|H;RHklaHr2mf z_^vCSS;w8{og%NQ5VUyGCLy*YJGPlC+^tjQ;3oAKeD}>~^!xv0IH)w8bgZJ#i=I4g z)%B-G87q~Jl04Ye7g>0K>a6q5jZ>fMo>{c$`sV~48M@%sBi(@AQ*kpSWLQ|)vN|iv z2ee9j+?I!A-E!FJB6Zhs=hR+lKOg0_ap%NmA}y~!6!pFKYgt_Ft{WG-CwbL6`xJTA zREnZ`)ONg!=2fdN^l{p0?ZOUlH;#v2vm!gzEUeh$H>!D1&NkBJ&5a~&#Tq3`l3~){ zo}K!Ohr>oSd*!Ss_EH2}j9smazuY}_{8by}(9ynI?2|3a+#p~dt@^G;vt2|Rh2KT} zZ2_-o^5&Rw$2Q{%(tX*x>nz4>m&x^gu-N{(J%ez2t3dhD^46>BN?Y7|4*BJ|tqxjg zmB;x_l)6_)3vC;e3ue*Iyp)Q`c|v6EX-|Ki1I3xa z%tbl~Z(N&k^6dP5e{G807$fA8#iQ4U>6ORJHDZl@b9Jjs z&TbFI29IhUX`XTt+gD4OsE8y#kg&M?uyt0%^Qa@HVSLo+DL5~ z^11!N+2?niuUD56&`{E;e_GgFGQLcyE{GTLD!19F(hFs?BEr2}srJZnt2>E7T3IqX z5rGRdXcuofhELwXCwH)+++&>LxImU~b4nh8 z{`L8$XoNVPn3Xk$I6@IVsQ3pWgN0AxPLqjXevUy%m^Ye9AgJFEeOTK3c##y*1K~$> zUaC!VADSoSqv_sf{h;_1*r!3*aV7thSii5jf8}lJe2i@OMeET2zjJ|oSol&mr zEUi)dI&m0;(?Di&^*}6tm0`N_fUrX?J97yP!=JY5KA`IwE4@ocz42E$#IOcJLXSi0 zLsx5A#JLN@u$dEz(!V3BA9K$6OfOZrE%rDhSJZ8&UqsuaZ|e=6AK!_&ez{m z%YOPL?1__s1rbTyiV~h1aME^ggjKub|S(uvjfG(j1Yq zTOx4xD&{5qIsIxpHk+AegM$(Fd5YM^2|K%1MKd7`iN~Qu!Ki(I6Lc8EMJ0ih*n-}a zl%(`ixKkyYrZo#<2=BDcBD||ZcxM*Hgx6hPzJ5a-k8F_4?~N<-eUFj2d9I>u4Q4^p z;gxV^-I~11Dc_32b8x=5Gb9^w+*q?U*1X+lu19|mdrQy;Vk?_(uUT_iKUDO?+%M#$ zhovL{sW1*y8{r3UJg9z#Sk$)qQCb7A#sZI#~1n3ltmNzY4z$Fh`vw;pY|mAi5K>Hb|k;43n%<{{>nL zVW3Zl)j%*-Q>ku&#rY!)+O-44m|8eB36fWxWfDwKUE5&@>g6}VJAb6j_y`8qdN1&Q zU;%IWQKgPWs&9IH);C_Ow>upi{+cHF3PU5OU2oG_mk)G`5tZshVcsPq}tFS;DC!p zGk4wSfU!*BAXd5_nAKDbE`-u0sI&K;UxiskeVD3~n zL%U@eZF_kN6Pdw8P;cgTRHmEnLL+Z1$0ht*@_Cl6h~v4rMJbca|`{dl=F zhY2t>L7$+2OF9uuQ*p}5@kdW^f45aeN*~u1LS!nAX(38#HjlMzDm)pYq6v z>kM4%5+BB#rCPV>cYQ=vFgv1eYNXNrH*ULI_Q%m1XJcnDX>DY zmLNs`=|7Otmjt_r$2U)5$`i0R4X9zr;oQ;rS<6PF@qu^s4AOU0Njov8HjGu*A8%)m z90b}y7D<&u+SZ<_?1Tn%gF)zs+Rg4>T`!*O_M){1C%<99HZ;KF^^a9~ zv#D+t!mh~6kVQ6SkR5GgR_TV}{vRgzw;Ce$KV$@w5u1%7rgDTMj}eX_D%qxi^Ce>B zqq6zhY;eqK0gIl%Q1WcD3(B8sFVJ=|X!47+`~;vr0s914Uhop^!;m7130hw`o0BJ& zHAJT2u&m+QVS6&E0bVV_;xEK=stML0T5;u-lQ7WjTmO6f^dB(B!+E?kuW_V+-rg9#hv zVbdT`w!U){d9WY74!O>xANIYL63Bs%;L=IZ6vZ)ACH624cBaniZZbm038yW9{qN8Mt2Okp})0HUY8 zayL%H@+m9;6?wiN;ISB1ZC4eyhX^t7sZ zopx~VDrlbiF*BgqtqwtDTxdV{Q6*@=^`;SP9#!Y0&i0*b*jWAms_#LHWQ4 zuL&yhn68d=-B7EX7%MuY)Ooe*n;LL6>Gr*WAT;F!>K4wM>oBkvBOrcjR9b{hd=Y7q zvuu&Ho=p&E)7<42XuR`qx)o@laJwsTXW>lD6z__|3@Giv+RxL9(xCgqS;b*&_2>yJ zD};wA4w*zX3IrE(FU@Fwq0tf_n_%lWkxf=r(|h?#>C7{j+=dfga|%3Ko4>Fzf>Wo2Fw>*#a8GkF$wj`x>t*+1CWU zXVWZ_O74djL8~RV5i!}vHg8khoM`Lgj4@(E2u@8xz74rX7Muc4w5j?Ows!)qrlFQFRA|vmsXLVy7k--UG&3c44AqsA z{vKS3>PnWkYqU)QnONEg#Gn=HX)Yw1cgonaC_V>u#i9vFPlTn|eC^T_#botCP(reT zVdA!@SJL;PRp}QFlUu7kMP@pqi_ zbX=gt&(P>!ta;v`HF;N3;y~iEdAQUHZJg?{SW8Bd*(5hw36Bsc7vG(seecfgd+Pn2 zx(F!N+wczJ)RfMlhOc`p!X12G446s`*uL0JU{B`puqXBK%xe>1FT+F|V<_67zGA@2 zqs5|4aOUR(-^|#K$RV7X$oUIUeEowbuRF!% zUXMYV-+~e*;^JpuMgetKtCQ5KH2+heN=Q%TYjgPp**{S~FitCDW5J6c;rF=Ws|k7l zUZ&kl`nv9NBdmWX^P7p&tb3u>2B)EyP%Y|O<3iRQw81wp?F{7nIT~>uF5ANp;;I~a zFqHj7Ui=M>zM?cBRI*7L43h3jdmxJfSNkFGu0y4iSKG?v*0$GGhL)aFR zfHE_s2bK4-C^)JPyOsEHfP=8M8hEYD_XlK&W2o!Iu3`HZkaGx3m-wTy^tZ(s)Jn3sY~Xx_%eJe@pBL}2$XnRt zdv4op+0^mw-=K~{3N7SrXAH2)={>nG1S+SSG{Qw7@)$%S(YOpBi+uM7!I^cX6>R?# zRs^H4qEeV6>7hAfkRKq+?)7uQWo5e@6n%X+58e_E~>_zdd*0g8!idZ2#HJv&W-o2WOHbKo_J zuL{8Kj?3TH>bFG(B}uhyy_`bux&y>OR0y6;D!GKV^M8%}jnH-lY;-0FD6(?!1}Egc z`eb|;0*V~*VzSjB$ohe&Ao{-A^2sGdpm%l=9yvdkl4O%kp$c>uDr*aE&SSUK=bY$- za$}(Ggl?O>j+b)>S~DasO+d3Btks6sbyA-`JZ*yYw$lnuCwcjan-ch z{rzY$m@x=B%1LN7daq%9hLusEw+)}Xd>;5R&k12u$kiW1Z6n90u;ZFQ5CH)-n2dSM zDen_6dtentRn~JLQ4WZ1Q8_US(zo1(kx#@&w$`t9<^2f3)Q}i$3Uo}0x7h_5jgKrd z!AVya$h;e3QpeS-FRenM+Z*kWVD9U{XTrvwq7%zG;i#Hcr;p0~8cMe>D6%vD_5!P)89&u+fR@!tMv7F>Q2N-?z*wkcYoQ} zsP*p(E8MI8?&ei`y!-`0ejC?$MTaB2-#r&R`~DJ}pltPYjfYA0hJu24rpPz5DZMVj zpE?5-;p+@Mz)3bcX1!nemV@s})*gCuS*vCagfT_BPSx&+pzg52unKb1+p0bBRnNKz zGOki{ADI4~Zzd>by|T;M8*<#N=QX{$H6L%{4rflVH<%M{VUxtUq)VPk8nwGv}Gmdvcc^$|(W$MJwt{%={i zN1Sg_+qQfQD~mYt;LM#Yo`F(VtU{H`**7FfXM%EABGU(}ShH!CDH2gXdL63}PHJI_ z?C2(L$uOv2WQxddEPhx*>g}0eus0;vppvFZkx*&)T-E0=`^sh4FG+;0{c3ie#ooE2 zldu8bLb~HAy88QOsrXKU^I3&HJYemq_8)||QYuViS@xccw((|X3z1A`%@68a>)Ui% z!baT(2MbF}_$X}C{Z^EyMcu7>WK79th2k*A#R{&@L!HJA5+&owq_PH)w@^ioup zVj3;}>X1QDbc&8nV!5c{cAbh%kY>IgO@ZF>QsYy^lVGXN*9wN;zE!udzgIuGkQ9P(fXTfeN7repOtgA_CJyAsXExP_JN}5DSt=huUo&ro%67`(=`)7q>4zS+nfTJJj7KLg$`jTc z@F*JBe$Q$&A5Pjj7@Jr^={=TGmt3N7?z`8elYB{$`Xd9)S51lq?F5X*ze(xVYreRY z8%_CAHP-x8n7iFmyx4h5hgXGT0Umlgcd7C?7cLV^dDCenL-<2?M8r2=d(?r;vbQfN z4W-1cZSQ&HVmI_aA%=2jBE#WTsM2*=i=&lxw#UX@(_()*9w9`%({>U)v{tS!Q(l&5 zIZ^+@<<*bKTb9?}Le;a>Yo}!Gv5z)szs(df9NYTLl>)FZKt(*FCiZvQ09OMg`%aw~0qENx$ zxasBB0#)i34Y3#UjN;@U*oho8|Dq{+#Y1U&N?$3d)vZisYL$9~f3*+)x!tlc6ru6> z-05j~hbn5@Ctv#YGr<5`utM*Gj>=fsHO?P;BJ}R(I^Hj=s zVv?KuANqlm;6!?T6y7*3a_{$A5xYGVcTYz7=C`YV>^oe1<)Dy_0L_p<^uDnAl=smu ztCjk6P|Z=ZeSFpK*@Eo5)eRkvaRra9QY8JllD?i>?-6}M%<7l;>e%P(;^iTx=0aS% z74o0)sPQ_<2nW3Bm{O>x1mrEyJbWrf9d%z2{@7Z(rIme`ju_Hhc$Zz}d+qH}Qm?_X zxx+N+!6D5t_lta|iuU?Vid8K|<2m7viu7~B+ov{Mj!5c$Zf2y-kfzs3r{{zX zYPAXy$x_{x=X}Ipt*GUHJuR~8D?Kv1HjkRwY`gMev*3_sXZxL63uFH+gr=#1&^{M; zBhNyfm$9G5cTOA0~+$re#8^!Bkv2!0# z!)G8qk7nfv^WyWpxD)Df7GA_i97xndkeHkR3fu9>IywCKEXmIowS=AR4DHACCLliz z+E5ajuFxX-lAilQmqCi+Fj2^($%Dg0%_myp-4~F`gwucQr5(-0(!)UkiBOPC1!X2G zS8Sinka9PvjrZ$Svb!~AVLQrI*w1D- zl*2s}PUZxRXW~o}%z&TMu~;-N!S2?bB@L>dgdmaEZoX4p zdxmhQBnH)EF*l}l!jCR!Tr5|VgX>ujV_$Zl&i(err#}uWPID%k&dx^ioXX|fTgRp~ z)qs6)Um|OlQnLxCWl@Vkl6!7o`H)3@#3Ui|>l8AKG*Mb^hk~dR2VEgkhDAj&rK8Q( zRk|UFgmU3OE4pnS({2S4V!zS_TTBw^XForm#jLeqvci*yPL8c(f4sdm^dR!FJfYq-s$53=4SkE{R1_Y641qAuJx4a~dGF7m{V?;o&pX*8ZE;xl%XZgiUF<7BPeE z`v;?Tbb_=oWbOp}H*Wh{bd%|;`6MCpASbn40wKBLG z(F)BMu_Q!4)YDDU!2PGR07{~*&M4`HNd7<(zFU)_Qp_#Ktu210{Os*aW-FE#!SaO zt*uA6PlzSsr4SjtfTc#EA53f*4X}6$Zy*v?8;BEMKpS-#b9tWsWoQrB1yWc#OPdBbhYRi0(kL2jX6^&6>tm&9PT2SA&)ii+1+et#^cJPMfxe669nF z{`ict$@wiG>$b3;frP_l^l5T|Z+cSJuL?vtWxe&W!IN9w4M)Mb-nwi3n12QLlfoJb zix$qJ^0TR5%ahhEcCTY~`?0#y1kqd^@^8$;6NsXa+{&h{XA`%y|EywDzYjv?ucnxh z+f3rWZRuam|Y_ zvM#r|&`}h`jzd*)?5A@;3*yKrzAu~~6-7fpWw-Y(gz!p)3$&Y z$IgHPQej@au^Ht(NG1{3cMuvBSY&k$Wvyh^*$J-cEE3AF1>DiB-&PoX8Jo5Q7M2Js zoC{$z4X3IufyJD3E2C;DyBtU9>^j68S>8ks@TJyH?I&>271|8gdhfl=YVF)r9bM9X zZ0|S+*v*0|k_{JPtK3v-t_j5~lA3;Fm)Uz!C&IBcuF#M_g(W&ae@eP!JAzU!H#;q; z@|UeijotJXF_f>-OhKGnj-nn%qqNxdwVg1{162{YY0NgiyNI*emBqI*BCwK8)}93^ z1fw_a)BiRWl#D=DslC?*p!L?|%3%zJIBA>Pz{tXUa^SDEfTu1BZW`E zLJ0Y+uqN-}gytRW$rHHVl?jNFVPY8^F6#N4*9-#HLSz^-{Rb|33olM%StAgI6f7LT zc=3w9Iz?_4gitaXaMsLGOh^Pt8ddv^9!mWk;)hC_IQ2NXcFu8gds}@Ln}3u+4&t}n zzI`)b(>6L4?PL>qUq=hB!%a^l_8<*ZZcDwWrQoVOt(1J(7TlEvnE?W7drDPtLK%y; zG1W3oTK~Q84DIj>yOpUF|K0<8Sw!4tO1$(vB%_Oo3Q5~k$@zD`MxfN&%=O1DUzu+@@y`%+dp;5sy9g%56#& z@xPL(I0PcHgA|nTGM{Rf&{Y((h{gB7;U>77h6YTqx1c38DL){6_h|Wl#T#7-^f~>} zM?f}5R5pS^)fv-=x;%~Oo*;wIC83kIr1b=>mIS>6$grJ3;^5vh8C8aQq47<_IFSvh-S{wF6qbL6i1q+w7Nv;h9g%6JQ3Jt`4OW&ri6mBPWEIkm=1WbsC{ zVx{gR^nk`M=>E|N)OZ~>>4*(zZp9;uKYV_e27lUM>{@RxFRiA_u!}mVy8oOx4;kPY9tQV+zyWXfGtt859h95qGx7g| zK2Ib`+aKWqa$Sfwb(ExTe<e)c`wctvThhWOIke-t}$?R zQE|urjX;LqpJy)aM8iECal*aYf%-HCq;f)#iHq(61p3v^SD`?TM-vw~buc1Z5GUAp zWq9vnlMRugu*8zg;J}E_zLPjI)xnSmNO~&^JP%D{GOcjG8p6(X?W>MayB$POWMC;U~zhtYZ_<1so5M08ptiE|!!M%i=47pcI^d1Xg*}N&|i7$vgwT z(`?fB-x&XFc08ii1Cc0iAl}tvaCjKV(um^L6hE?8 zO(5x41>ZA{7I!_ya?y+b4(HG!NGU0o>{f>L;lwu#8VQl> zh>tXAc><^)bIdk00c4SbgpMEab4nJhw>dL~qNleXv?jz91m#0ggxpp;V(JHS(N>~8q3-!dyBimKS;W3w3fpFm{DSa9?OD*Rj? zhSeoFHM{L0TPKM8jD|cb81Ykaa$#^g~QHSomK$4xu zsL$A>4@-&57EaVq=aHLvkMTX$9|U=sP=ZoFc87w}EE1NTVT>S~aQk z{7sKT6vVTSs>#2q-bizSAtQD-r;3TdV|A-f5z>YF_`zi*`?aY!AqZXTehufdtqgTalz|yPCxIZe7YZ(+&5iX0kZ8?_K&<>@Y_8^gv?Lg( zt-~>gNjNY8DqrB@ftl-@(U(49d;FIfckF|>gq=60`X-sQ$UyLnTBJo5fhSuS3OFt= z1vxkgCBn6I@JFAXW5U*XjJOsELudlweULSELte;y6EM~U_{wy4cMuE8>VfDWs$w3< z!a9%z#)H6G{!93z7LHv*l`(n$CF~g8U-nSo5+?|07-vD}mTwVd@lJ{hgfi|eho(tM z-@NNt4I33q_khwKlRFhhR(=MN&*0t&3Y``ap^#awH)=SA`9A!K40P`S75UR}Ekf!9 zpfbcS5y!t`%7iScXY3+TObOB}>j>20)&6LUUE}0s0uS(SJwG?{{8KT&u2fb(J z?v#y?d+>%=44N!jY96ZNo6>YVE46@%AVq@@74{|K`v%2;Y=ckQERceo*(9$o!I9ma z5Sxx%tAB&zFg#BK|DSR!q!-k+v=f8N6YwStustYiZs-+H*_=pE(SC(b+AV+r8m^cI zTz#Bvp9rYk*52<7um6YEHIK3DAiJQk-W<$GKyk@CS#`0}3RZXJZ(1@sZi%(UbPSUg z7S6d&q`hpa#VqXPXb(})LFcg(W9^=&QAU99Ps~vtX9ht_EQhx`quca(Clu$yHOHZ zUv5ue#8yBC$R*#_Av#3<+ihDmR?`H_e>1S9v}Hitvt4lzbp60+D}pNfLGm3I=?;rB zNfNFPfd)I#(#5v_mXMANezpGJ<)zJf))*;K7rObNkQ@Y=lQ)VbPilHiVN?H%W0 z)Mqi$(nS_B$qVK$n&RPTug&aiH)XE7Pfs`QSp0&T^^rg*J3GZV)XAm`GrL_W6;Pd_E4}3y0fQ2 zIwsJRe=ktoeq)kWy;)vgApJ8ajH9L+5B;<1{#l-JyWiNW3}W2ox0~xh!O`lnxD*3T zz1j8Vq6#O<_!093q-5e(FLv*GyKK+nS|n^20jercue)DWMI)w2>5kPf{O}GC@s-e> zJC8|D!Ob5a-3ZnpT8o9C*UswZwm6c5a>lTS|C_ALMNhyMl&r`q5|)ycxI&kGHwQGu z_@S@H_VMSZTUi7oxc)a+F`9A)YVIO60%pu+Y1u6O(`zD7n@w^a(V~^z-T51|V!*s< zUgQ%hv!Wnozx#Yjajh{5FFZm)F9FR};)E9kXilfoWv>k7{cNi4EXMbr@S?O|6bQ$G z5Q3A*>si=-`W!nTR{0Dlh=IH9?bkaS_VOW1w**jK!ir>0o`OcP?~+>X+e#{9Q%@ly zk0q=~7ifK@+?xpVoHU^pVFrI=l7vSCswhVw3WoClS9NCJ{=z0$4{$!w(}v_T?Cy1$ zJ&}mypd*rl&lQr5+1-yg84C4|?2c6VkteBOj$lxnP1TsiOgT>;VM@cWD^&HrNsh-! z^f`YtB+nAHmKu$Ld@`V*z#=ph;sndLo6%vrTac0UI+zT__0k!%wH!4tan5_3 zCvTI_6DG-b1Vj;2W4_srsQ>>^^_2lpZBg3>ij;_yw1R+2gVLcOAl(8YAd(_Tw=yCj zjdV9ihag?jAl(82N_P#-%po+$9z3Z-!wgs1Buj_Fynt5dK0`9 z<$wELM9H=}^{2(!(;Ky^`l=lzjP)z?Hm;*Y)o)4Fc)W)9A zNgX1j_5m>#D3otwW6TAN;H%C#7+S`AjbjJk z`l`;gzGvxDJl~0Zu8W+_*!?Iugm!7xjricpm1BH#xa_&d4R#+%=fYg)06?St`R3}I zcVstXhS3agON1mkas08iBU@kEF>}Q1bEni-v58?1seV-Y8dB*yvcC`cJmPT0dNJp) zVw!}x8Bj79pP~KdSjuqeb2rQm(f-~a=o%UJhGpP`qrK2=*D_GkbdL5X->BAwZ?2{G z-Y$}LEI{gbrm|o+@+6~$Z>v)KqMMsZ-`)?GHqE|>Dx)}O%&&OY4Hty zwyLdjk_9!Ly~y>pzw4ZOzi#5w{Jjx#rRD1)rvI3Uv&ft6J2{)+dx_Tq;d1beu@+#^ z{#38%4&g6?*4-s2>rzSTYPctW<_-C zmv{TZ_pcNPb35N1*n=kpktVpAr^ig=r^{av67zpZx7UxE%v#J-^9OhWHt?E- zi;!gI z-chbqOP|H-cIC_fu8PutU`x^zdD1Jn0iQbBfT!`hlcS3=j$Ng~ym=niH4 zMn`G7P2Og)K2pbMo0jo-;@X%Q;wdrj%lz={*UHV2 zV0HAd#vl8=dd0^|{+j3wcFM}K%K7*2YM|;%H~CGTPc>kkPjGJ}h$7uoRKLWXd+y>ilw* zRNK;m_0!beua;#dfX4gB4rC70S*X>6*iHTP(7&eX@g{yy2Oh2;rhWNoX}Waw>5L8;^nLo4X+ zUB0qb@@rn=KpXNuBSMhz&n|$jCVt#Cy*K-oQ}XG1klPo;nF>(Z`tIvIt0rqR)C*R+#8|v9E8tpOF&Zbo9b;zvWm|sy9c`#cRmbF9+gc+{PSCJQJ2b}yb`=(_WQ>&)7wUAq*({#!*08NIo7=kv<5 zppM;5(Y48-dqXt=1${XyL>>CGsN14~#`->yNwy>n+tZJ>C|zzh9hq+>jhgUBM?FGu$69 zoQ{J)CrVXnopEIhtz>^Z&3 zsLPb3PpELYJScdyb4`gGCtLh_iC3~+4lLZ^*3ev*5&i42i6Xh)YO&v~1WGABH4DRQ zMbFY_xWCi+IL{r;cy+}GhF&Hq%IJP9HvF}i`UXLf$c3?y8_30JAL z9dsZ?UwJ8T#ym&3Xtid>ks?0`;~a7|FChysy;%z?E1vhPXWn#oN9PKg{n(G1m55k){W_Pdc?aPDwm|{^f&@mTu`!t0Z@@UpzVh;3|b2Du3wH4u!_$FJunNe?{qRj z3K;)V#;UkgjHF}jK$8Zw?(+oL4;nw&x}A@%9+d-J-wzPnv+hsM5aj=AVk|F+Mfw z5TOfacxJ)5dJVJ%0mpi2_1C)2L-zf+V6Wm4@BpipY{ohcF2_Is>lBNfNx}MOE+{1? za*E(VBB)vc@gXdJ4<|NZM$(%l!0QKA;9weP<+Z!<-63k~4Z+r8y0at&^joM^4!^;s zPeF^;6orqJs6;nR*wwAqGzbQSei#V)^|t8Gp5#p;6`5* z_P0lJKaW0dGTfiGAweRb0J71;*36c6&y-e%szCrak+?WZ=z>8BrB!B7*>m2lE1ViUc*tYMba0Dtf9-E1^bCm&O zqrs2^L97k=540(tF{!v1Ll{%e2=lt)z~wG*%l)(Dx#a2v{4Kxqt=r$v_aTH;8UP3q zPn$|>009gt_P{26jp_nfTR>TP1g>p^mT?RNybXV~0OM*v(EbMu?I|@f7!knW`85Qw zA+(7wf)WU`TP6ksb+Up1hh4-Iqxq+eSRJ=%G&beS3Lj~AZQAg{yUNubh<+PuPo5&8 zIW`?d_rXi33EjbPFDT5vm z>=_2=LcH*xNvCZh7P6at0D@k{`C#Q9q}^%V18cyWr9(DHup$Kp99_D%dmw)0rgU+? z$-VtY_$1u9nkJ{*^acc9z~R#6Qf@`E<=rJrsxeZ6V-8WWjxaq{RqVzl1ggBX(Jelg zD1k{-{9q;LT-87wPS4px7#sjXm)NB5Bcg}!UBi<=#f~l@29SszJb5Xi0fFj2P= zi}hdG(0JbkMuxyhHt1=;2)O=W5V>a(T&GQnAMT6xV`Eo!AAY|7`e* z&mF)@**?Oc6_CK;0-7M!%UK4hj6|$+lfT@DSyq~01q+%bsZM)YHsr*e&8?aqJFbDx z5a72dJZL%*8kJF&(Xh^KNNw5X z6Hx<|GsK}a3JvnEFCvJS!OdrfEU6Lx;*4;I4RP)#A80XnFvaf#;nx7lA)Lw!C_7cP z36r4|Dn0T3cN)J+@4;<8XfkCW1?O?6bMVFzhg`cHw0{gh`v^x_JKx7jmn&A(Gw%8%5=nSXa^L_iQgNp)@-k`xZfbEPMX#9#6 z`p31;8pnl6{qp3hp3ESI*3yt<;}sxOS!zn=%-qrpZan|p*$bjxxL!v}CDWN5L{7bc8u(0RzM6R4S;?d9&S$W-vlF z3Dh1S83Gl0!mzedA*`)*t#)9?SA;T|5GR$y1?1~ zMV(tL_~}nwrTR(3KRg5sARyu3IRUvHo%^uA@Q^W*mbC|l>gZIj|Jn<- ze6(PT9Dtr_glGLB9D5*0l02A*lK6BgQ4X`>v2JyRP3vuN0B+#rj_bpvqM6FO zkLC(RCA_8B2RF8XLp~V61_9dSI%Q6AO2JYwy9-qRD-}ABI=)n{_NwE~Z(yzka#~g@tTIwLfE!{7hJ?(Z9R~NNkUB-JRL4LZDO)4auOD3bAzO3uDgI zCQFFSWH0-$-n2^6PvIe0kefyND^(jB@!}Bi;D4Hlsh6;sfXwGZKhO!0OKo)OWh|fm zFPzv4`+4Inq72i$g#LF^PHvzbdzC7_yb&>_v;|DQ4kYK%YQW&qqz zKz8z6g88_K6^U>rY(NuALid@}s>A>8CUSQm?ic_x;!Y)eYk&rd4%DH{(WyUmfy+Eb z#b^ug{|5I9(Q_&AFkc{I3s}RNL3^t3S<@lQHeebC-VKH5)Fc#x(F(Yh7{DNL2M{~% zB6yAFFB<&oCX%qOFqVJaL@F8VCfc#xL?`Sfk~r9tT8as6cO`tB4tXITMnT^R`7jl6 z7RZO0d9}&GXR2@!JXwVe9;a>>_|OdCPbC;z`Wbx%KFh}lURXS406nC`x(Ki{mDdv!<}R9z`y!j_+;6{LhN9=&%E9DcLxHAa`mM zs^q`TiERu7_Ywa%bZGTu>wzjhPv|{IyzuC`Hv{Ad!Ex2;+~rukGA&54wgb6A&@iKK zHlmCig-_`X$ZcZ9ICE!nZ~>s+mthSoc8E{IFwj5$FpjiMVqB z@%X!o2(B1`>-#WOr<7Y3us*`J6C%($-72o3Lv^i3(nz|s8W87UR21R;1jQh+mJ&yh zlbT_N6|w~6tS+JdR^pI}HBlm)KK}(<4GxMK1HVFppyGEV zU}|r*9S&tVL@>g;u3?h6-!*G0NK6U6^A1ixg7ad=;Iv;DXo=_wN~`}XhBb+0+=N17 z2*D_4O?`wyds#UTVPFhe8pjjxv+RNip=T;g+v#}%AOh{NN= ziM$hGwsJ!;bd$ok&5^%{0J3m&%9BiWynyu~s;L_b>6bUhcY`%7b58mz8Z|dI1opas z{t&3xh7(dEpn3CL!k`!9!iVAtD=#3<#i&4v8x9uwbRG%Yi6P%}1mp%?|J!m1XjtcP z{(oDJc$qT>#sPJc1kT@}P7C{bZd=|dwj!7E8^$Jo0z7yx#$x75&LoKb%M>lSZ*OIe z%@hr@gLSx4d{jowT6G0+fC7}RQf=}TU2yI;7`Z)0I(sSKJPOu$4UR|X{y)26tAGK{ zW7|SA#GXsgBN3K_Gw!64d{AMPOYH01I_P|3s^Rz;&CuBf?0QiQu%EDl;lkL7I)_aK zmW$yN(HCR;(9df}Ml@nhm7Q$5UJ0)3zMd`IlBuL4&!K6+#3)aK2h!OWBfXQN%`U zya}hN>IBE;Fk4uo1nT^5mOq~V7Q6_e76IofxW3JKypRS&{=g|)gP^9^3wXfkjmK5T z2=;x1;S89&`4P(Z%z5pBOWCOeMXh7I78H2@zdMf)jsW02+L@}WOX|Z?=WZbc#Ysx~ zr_W@u!NJNZFsOnPtGBtpPDtvz0$&Kcf?JOgB~557hrIczX<#;Zv>i1Q1GT=Kwbm zwDbGCm5zZFMA`{pW3MVnuIq7w-~|g40R9*oS&@)(ObHy|C=s()Q`rDR>&HO%uKR~I zY_(vEPeIL5py!^$5lg1K2<>f9ln>e~FTn_Jw}sm!>`O#%H&zjpt)NV(2^&OXl>-$w zkJ3vstZP73E(UxGiCTj7qEcwg(`o@G;Ji4SyIcZdG2r4mg~vn4X>KTDS2#oXLO%Hf z@yZFEBO+KcNdDD~A|*7)nGKR9 zUISbCUJ$mskyG2rFds_|xFPOq+Mu6r86+JHkJ(o>pnL zWl(a)R_Pl5k47gRNjztm=0^hU4{S>B9-y0)4iPu&{Zg^O#ohkL|8i)cZ$b9A{FbY= za;}nm#cYuxbfTBl6&--*uzI*8?H5;lhI#0-r>gKFphT=M$-I6}gT*+U-C>JiV+LCc zak)v%7k%$Cv}8QYh~b*tV1~tVH)5>!)ixl;V@Cn$IYk7vf^g&m(!Y;TPzGzaIMI@u zti@3S1mKc>Onk#vvPD#Z&aG5XfD1OBxJMlQUlCck$4!Hyobw|X9y(EgL4@_4>`&!b z|22aa*AicN0hVjP#}zGM8uod!C`zpC3bN_s8)Q4JuteG95#b{6!4hS7R!=ZCe^%pwh&_fr6m&!OV4BWh4$gL0|4EbZv4j;40nnbu#D?)95f_e|-Y0p3%Qaw*rSu4l zk+NV)B79B}H3wkBaUAoR+y{tEo;F4HwPmV&0f|B=kp!bq3BKu1+mbMwk0YMOhi8MluNj5B_zHP2ol*A8xI zyQRcFWU=X_^qNvZbCcRQgeT}1xz!N5Ux?4aWxFhQ2Y58i9WNh8zN|J+;p21piR_K9 z5vWP^#_X8m61;j9D{MXjt~r-~;X@CoN}b7_8A@&#V~a=@E3tfdUfKqi2ST9{$%#O(f2Js5P0B?;f3;qG0{qxymqN#5Y!uF#I3|E0 zgEV?he;gEyoq;O7ITYvi;Ud@oOzQ}%nu406T+4!_?90w=NOhvoO^L-3#i zgZOdKlr(;2gwy1WVb$qV^cR7NCi2Qwvck95#8kQ`bArKS=Wup#N=OPn; z3Q7z+;nlYsf)^E-oK3|=DBN`jG3^|b83$}*XA<6P2%)Wt(CUToY_Yj17{imb3b?8< zK&=SOG0mD31Ckw%*2Li#<6ymBv}pid0{_*KDV-^nA_+AhFrWrV9T_L!jI9csEASmM zLqsGHW0;l%I$0@H2Wv1*sj$V%T?J+@L5bQ1aEVKP^Ads~ExOLNl@W*F*b<%E4_~vA z{p+J|-`n+s#(=zmr*+REu<a*2B|JFVtPTH9HwohS6SO4qjRcLu7yN;kIU1s7qVQ zSqHhahZ07KH5l2=r+)f%*;#;(3@xD|1j53sET62L%_YForv*p8?>1Y&E@9AQeEXq9 zFe)Zh*V)tZ&ITa2MBA9287hm=j=VE^gIi%+jD3Zx>=lP>|&pZiyD4NAf( zNAUAv_zIT3uUYSz;;?UR#i@*eKKoH%bHjsk0{El97_qiLgAphhVCBII*oznA>^hL( zEbzkQoOY769v~E*(TK1$aBCQ-9ED@TjLw=e9ngrK)-ws%DZNk92i`A0Q^zpJ;#m_> zV`|oo5zuFf2FWk51H0fA5{|@}yg3&bkOOR!R6TkoBu>t?Hy2;SPpIso_kj)P1~9cm z1A!4>KUG(>=LD}XbqGeV6l4GqJ2Ys3uPxbSQ;m`B+9u=`!hW8c^^HB)wdeS{)jljE z3j_|qEDx6|(B>LA090~dK~g^ulViAsl9&M8DKEZ$drunx0TJJ`rsPaa6Wa#d3BuH- zG;6#A5qJ@f^p``J24}AcXU%jT0z>5kVAzlS1OFM$Z%I9pC;$MXi8hoS2Z*IYP|$M* zN+61EUWNf|xX>~(4qU|3K|XvAsCW$G$w;q6pBzYh|HzOVZIginiXiou_gT{z0=|UMI+#`j zE;r5q%NoK~ea>(kCilS8uMM+!jGi^+$pcdP(#LkiAbv$@%NNu1s)Y%$bv`xl=0fXh(-jhA^tYvF)M!bNyn7I@4*Ssi!N`rM3>mlMXEk z9T_NroO1FDUr=6(`+7#dL*zs2uDk$&gJ*l(q3cpML2GX24*X&gFESJd9tYAeHs_}> zST<(FbRX*yX!7m-*$})Esmt*Yd4Z2?!^d+a=JByj>!5kTU@MO7x6O*-b9>&j*~jCm=EF1++F{rB{0C|1#_&pK$u9jFdU)qTmxUm8h_jRCp z;PEL{-R+(H-n$9o_USSmPJ_FbIHi8DzAJR)SSbk9-cn(wkN*&6c8f$>MrF0Y2LC{q z#c%e7?<`>?IwADaXH2|Th%dppNu?d@JBp;2XQA;i__D48#2*V z7{ARsSKMij z7yOtH*X4Yeh-Y@s2v6+!lM<@_L1e+8o>AFwTp@?-oRGF}qyJ!cA#H-zB|f<*%%WnH z->3_Ve6t>n&zoRwP_0UIv6R4=i;#;kQhO9vFNK9ny$B-ykpCw%+HdUkY=t3Hi|xQ^m-{r$1Tf5 zaBt2{>`gMCtd^Wq$!q5DNu7tt*QwrGw7*X^1YKKF_pGA5mE-JrzKUl4MH_D277)5! zZZl+6A9PvruBN;xOny9!C$A2nQ2wzS6(gR=^3I(R6qSfIiY*7 z2hE7_Z@R!RJL7wJ16TFD7_EHYT!{)uuIt2g`t!Zv2f2v#PV<|(X>#968`g@Jc#jU# zCqu?{!bYpgCvLw;%u%#*-y8zp`7EQJcov`9>>+<5-p8d9s~G+~IW2q@@PMId^T$Bl z{rWn$E8W}YJ=am9`suUTZ1T>ToYSX5yO)(4R@9LEXJpar#+(|)Ug1&l{T%1K5sgj` z&JnX)YynxvNzHO+b23ZibNF(^j5j{02S3eK>Q=j!O-wk#q*Ux4-}Nk~@99ewKl}N0 z7XP<%L62XS+&K~<@)`>azgBTUghBq53m1vbh08RlM1|Kr=|8lmkQtrAO$pXRJ$C1v zkvt;JyIQ$*HKo>z^#?skAOmKWxSD|f?@HrwtC%s~2~&bJRYv;Ux;Fo@k(-yIV^db7 z|7b12pMARO-fLP_oY_WdY(bJCj-rhfhmT!j`re!VWYd$3>JyBSNZ?k839mKgVsq-m z5BcI7?RUS9R_&Pa@Jns1@hG}iW;NC~;f52q`T$Sjm3Vl$qk{u(jKTIzl8*aoN!*?e z^lo$CY8$BqlJI)$ieHLr{{2bHrB3HEllwYsZZvjs!C5k%U3J@XlU+Z(JCQ5Goa?X9 zm*Iz>A8wyAC)8(qNk)prt-LkN7sbsNMJV4B4sEfp53+h#BaBQQ4n8+e`9d*{nIcnmdjEd#I1S_ zyv(0O`A%AKs803}O#Cu@33JRmnKK1FX5Z(`y7>|aLNVXm{*q+5mr@l?6OILs|Do-- zFyX(@_uTc_d$$c~UoHp9Nh#lLzwWQbWsS7@nKDfuD2BSNSP~u`oZL1{dC7#^SSamN z;h(m5yQS>>Q`-Bc5b~(7U{6V=smg-+9=iVgOm)qAB<0gRMw+sDCHe569H}4W*95(T zLgu^k=WEpWx;7aT4u|F63q5&aIOmfdtC_yiVxq#MdnMGvdfL>O+!#)w+2Q|_DYM?<;rLiM7p1ZWu79p8!9dV_yS8aNLF#?V zfsY?knO;4dP&(wY662LW~KBzKbw0hjj>;6u094}IA`L%IAbpvsF zq^`h2k!6;>rIY5#>N4|Z*Ix>8Ne0XK-~GzJo=jRXVevgzjF&n{=CGV(b|Yu(8}$Rj z&kh;yw_Hb%s?l5$mx`Z0zRWe3ke9!&Boea3RL(HeiywboV`_Gz{F3+~-&L?cNHxna zLf7J$So7N=!;hH7l~+N!+{7n#{{BW%o5po*CkmB|HoiBOxqRNN%4?mlD0LC_-Mb^u zwYu~E;WmGR(!#sh+GnbVj{=I8^Y1VEHL=CgXefvOc2&Q;)FE~fkLhpc(HTZZmA}H% z8uoptCg*a(7nj7Yt*+J^PIBrS-xG3EE??eW#5ek>*_EM91>71QMLX^Qk$c7VA2mDF zTf5B79Bpr_E&cgCH*_(6OomV3K}rLT8yT+G?`F(enfJ}OGLEmJ{fCOg72e$TkIm?Y zHgSv1Ew#9Eo0}2)WYkCnF!MU z1>*M0%$X;o4E_=ay3zVmi$qaJ49aw!*-DRRX%~p4R0iEqKmFEET9JOk=byF1soieQ zSF=cL+k1LV>ej-DfLM0kCvOuiYLK~$-@H5X&|8oD{F@tnICbz8QtGmH{%pmVmHU77u zB!36ay#sf5N*<76B(9kjJ+`ApR67QXYEz`pXe78k(_ktgLsY+1+I#8cmV#{f>0lha zLhqw4m$pcYuo(DlQ#>$}L*MKZAN~H(BcyywzSJXW9dwfXHo~&RKJ|sPGa^xy-!3X? zo_IpN+r{Z`-6YAK!r_7kE&1XO$It1uSJUhTqJH~+svFSBT=R&gR;pP4W${20ZpBtk zS_8}@>hpC@nD#yoIty+(r**Zm4Qk(uvsJuWFJXJ*p^+YO2)BgRuU`Siuj!NZefu(* zSkog}-_wij1fI{>FUX5di{4g=tkqKL$%wz6^mjlSA%FrOJLAx*VAunN<@C zKeM{#UfRgyt^}(T7NkP{kE(1slib`NH2%ZnYJS7DZXx-yRN-RQXsa7cWii`srI&0} zg}3g$5F6%~_Qlb?6fvAD${RDaJMzWkwNND$2W~)DOfwN($Ay!4gCSqGU&k5Sl=N-2 zHe}E4Rt893B$AazF z>Kko(-1(~W3#^``0VjRwen&o}O&)QJs`S)C4-B)YKWI@E?CI(fxJJ&dkXSTA}4}A0x4^0v;{?Lxu((%hp>L9W=m>IK|!8{ks$x-Q-4L=o2`V?t(2wD(U z%r4lXM3|JFuG>~pwCnz2W7N5=9@050=j=v&&uR;QQt7X=95GQjb!q$ZQcB|yj>}Ow zxsnYjw{AjbjUBzr&qkeuwisu;Rv2iB9nlI4_wUF<}F}qjg z_VeglTAsOto4-jjz3TqBD{{!BoCUavaz*zGrm>`U=Aa%d@69h+jDC8T!O$4Cym$Xw zzT11}QqeGQz-H~Bhlt_5MSOXGJ5T559ku20r*tv|v1~`-Jrj?r6(ri1I?5Kyu5=W{ zE4*ch?zs@%GZ5GFqBonMHt8y-Mul#+PW0Wk3_rAFwr!*EJ~Q^k7J|m_lNqHpv_@=u zKd1~=)a?A|yQo@f{hZYHuClIBvWV&QXq$$M#37&l7>uAbe>8c0e#$CNh(LhbC!T@o zX9r!-<3|&@F?UXC?hA2EM~Or~n#G*A-%76IrO6}+Z9&zy>=hA46>CsO7n``fAHS%Y zbf{XYS#+^@9+fszX}l3X&M-$c@ z5yFJU%f{<#&kPgp^XZ?FS&8NI6bl~Ch>Z!o-X`H^A`(LN_Jtj42jKsb9jINXh z^9t;H-zQ!a>2DIeI4t_Hhw<-|Z;q@nGLQL5kJ6gjhJu}gR3ccCl#YY0kfWC3bfkG$ zuj=YvtHx(0^h*^Ch{;v7`yHAf?E3Qw++dXQ(&?bp7ive%V<5^SCm*wW@>z%z4w-`R|PX^m~s(oF$-8CUE zpU?1E&Vx-(l1m}(7_uTrAUN+%U*zQw4|Kp=s zr2NfY>I>ioTv2u{t%0Mz&3k3JSp^`>hqrG_r}&(=a%Ce8&m2@zgn|T ztC8+kP_Ok3#d~6mKGJW8k($}lT8#dB^}>U2w*PdHi#>}Nx>6dF3WKvY%)`>bh z^To?1gxnPeMZEgRlorFC8Y>e$P`YFXp6NlFCu&76^Y z1P@vFWUJ*R`Y671G(_cgOwF9EGIA2gM0Cf#x0N>MFs6QF6@l)Wv5Gio6UA%A>)rj7 z_*Cxo-ByH;k%*bjN`;Tk3*Ptagj8Gn%lnZx=C)q@)nt5Gd|FRd$r-$0(ibhHd|(>a zd=w)id}H8Vs0~8d&fd7``{2#i>R6rlr0}rap4?|-WCfvLX=-2OzGU7nIQiSAef0;@ z@yW@9KMl^;Je$4RhZ!`lR{7-`KYqDPHW6e|%m12FdW2GvNA=u-a0vHK7?0LRKdKCs z(s=%MoxAyys77mTiXj!moP86ZmO^=~&@ z@Qp85*RY#j6fiEmb0VfAL7|%3qbhZ4)HuR_u((`Tt$J|2VWAx z1eExP*-v{L^ZHza^&XY_oD9X4uiXj}Vp3ofqM`oC^y|WjP*B$-yG(y&-&OnZI>K1 z1P`>%QE|+V;AE~A-k5x`OWNr=y)CzSJ`ptwwD#p$g+6In!_TEW6IvXkSS2jyLU2&r_TUaY*Tzw{!bD+F1^Gz?gtqx4x37q(Lmu)ubiT&Qy!Lu*$ zB-&d!4-DuZ(8o6ni*(dQk{vWO6N)|c6~7j_gp8h_Svk)itg?CH$csEiyVlng@qBi5 zp=H!OuIQ}mo0eYcTVs3>7HoMY9O4o?H-C4w!L06{!E5^G_57EY=7};Z?ik*mMKeCv zst-#1=4vuNGQl%ztv+Z&X0)n%+2jC6k-uL%(1lAgGwik_Z{p%P-rn}5Q+t1xu*d$U zjYqC72mERtMIu2{OqolK@J$d42nD!wz9U`Q=u0&4)H=2OT)vcBLbfwIDcb;?NMpi! zl~2rqTs-dY#-gcE#TZ^uapN8_cnLEGM210sx;GnlSUc*t7Q64viqRX162dbS7ctIm zO~|#?bw4vtlgl1?@)caNRmZ#cIOv5hzDbbF!1Oa8EsYDYc;)*dAuhzTamMxM+Z1YY z18~bVtx}xT9hdpy>it>$qN@Ce{dZa3eHPCr{@k4vleXjjERvgV|Hc2l$gM2by;SA&cva@pk}%HI-mJ8e3vid+RohM8lexL?QIKIc*iV$?Cqe=a&^htYa-hjug}SJ z%bZ+h`bQEw3 z@~S%PiX=#Mnj_W^XB%%qAZR0*sF$uee-+-HE4-sp%$x8IxS1goa06*7^}CkhhTeJ} z>pPUM`@H|9uF}toM`I6jTwPLs-`aWCkMkJsLYb%5$q0NhBG^US7Y-r1CGV)Q zgV6IXzaL+5;4J!9;N_FKA5_*~@aZ~ndmh`Y70&!EUO%2IlyT&xnMd!HJBKvb52}yd zxYIuEIsR_*#S;tGsvABr!Hq}G?&HN>mg(79<<3Flf%D9+rSsAUQ9;_5FS@wH^I*0! z9?TAD>4@@{yNaY#6cnYU?isIwgD*o8ttPSc+2zh7qpRP1l+6&X2vlKmEGI6977a;R z{g(L_HR|32E=Czmda8zfc$V#D`G03g_9ScH_@S4gtW{roO{Z5@_-$2XdA@5m8>|G+ zhdcKQXPVyPoZ&&Gl7)xw9eaN8889 za_3m>Ao;UIiBDPY@-s{0GKIv4b?elVHKP~zF4Or+mtPTA?w=ykroC&A`{V&`2+tA) z19nYA*D*j$_;xuR_Ha`JFjnqdektIaz_**mDtv6gVmHMM5A9xU`t4|$ZxynccFdAR zqWb6;Mz;=b8517d%B5aWDw?0R9X1;uj$s|vElHzxQ}z< zdV2CNAr9+j8X3fU2cnVA(y8+Gbqn~op6?`VTo!yyw4Hn}OH`#+O~>D#bSo-FBCS@o z8XH)3XI~cgoYv1I^GwQ}oqxS4hnNbCJUE8)mTb%qT6gyhkj`QFgKi=!Tz0eDT^39A zGtZOP>-C>qg#Sn9+}d46EgJphW6UDbnd5NSO(d24wXtt=V(lWbZi zGWx-rBG1E9X2v=*%?4v)>poj-dl5J0-D&7GV*@7E;H5_C*@=t0fvyTGTSx0;#hb@; zV|G99k$bSO+%NC6mF#9xO-iXEFinYFTu2e%YJVv3xcsWC!b2g&oWVuko-Sl};Ddog zF_Qt-YoI^@Qe0ds|4rwDCfKrAuhVnHjQon+9$ul>i>qU97774*F! z+L^z!2g?sDqQ`DFuB7|+-8w2N zTes<%gO8vaC3(tcJ?uh3dc zu^#q~x$0OI&55s)6gI zvQ8zuoot`r6?659SMqX9hc>e1ij?Qd?#~|bTH?jB@$_d%w+)B)cbG5{$qeta5QTaV zUf3#fj(?i23fJ2evweei9C6m!b4!b$vFzIP&G`6w+H+aHD>J^CP474|^>`*@4b*{7 zh75xegk&}j*U(Hm)3j%uAD+q|lpTk4**pdQZ*mX9v?S8C%aYfn(F+6|6&c(7V&5|= z`5TOZVAYp1*~>KV9yOzhl+QXle6OPy%vak}M>?O?|&FAYjC zQcRu8?lIc~*H1^R^|^>mJ=vnSwIb2%Yhp20y&fjl&Ny4s5Q>9B2Vt@VFlo+i^v|F~ z1hg?|!LhTT3HtK}F!TUtBi^OSn zs-~moNKRrE6ddSw`{W+Ad z+KGlnN<}T5;p>y9tjVmoxiZJh@Ea%X{5uk7qx_(Mfb>radyiu>TC{oV%DiZ^#NmnC zCn`;^?;bscMYVoY`!pf;DSu9BHpAC;HH1|LZ8$^tV(0z{I^cT>3#kmc7LOot&MExQ zgqFIgCw?s3qhFmgzaElX!8=gWIz(DrA197Se~s)X{q0c%5DqD6Dr~|krQj0LJJZew z-qZIF9A#H-j~K7y_LKVb#SV}rb=(bew89v+FC(bS5FbS)lR0w=*R_dSPUko}kvQ89 zWvQ&LyyuYvq))>DgRsi0gyX+RoJ1Q1y%k=w71xy8+cw?XgPUQgto}9Z%yA;;tt)tE zM7_m1HWt}PoH>DccXzLq&jX~2sY>B#V#1%1Q8t@Hx6zM>o9S)d)Ao}VCS1uF-8@Z4 z;+RsQJ|v%sHYZMq!)2Mc+~)RatmFgj0BO`<-T`?gQ&{j+J~=bQ7^mDFAW8v zc>&;D?9m<*cuhKo3qN#cV${o}PkQ6eze)S)q0@_OMg+xFZe%$Ks@Sf+O-K)N-K7$~ zE8RP2ZfG8e#K~^@O64wzI6P-C?1q>;SwgxAIQ(n!`MK7XO z-99-x#(X?#pL)q8S;j5n-5h`YxrY5_5jT>F^osfHQ|9AmLELlC5tqDnrnnyI1@|h< zeT(0ym(x{kPyT(X6JOla%=-S+*MKk5zu&GJ|KQ{Ji&$B^TAzY(-HmV5HQ$rexpGDo zqDIZC@mofBW~i>H?U(;~8=e{obHOdL`c)XEf?3*FKJo?Kc-yLVkMZ3fyVNHovMR7xUrt3ingv^(Xd%U0(zhBGEl?`+BG>DH&Jc_`-Df-G`7rG#Bjoy%4zC zVmCwug2*Zo+Ldo4eRs~iuY4m|yKv#pI>GnZ2aLsuLzG;xi7M|V_J>kU(PI=_Gdx|2=u!{7L4AIOT;xt*-(P1N@z zV=^{-e!f1Xn$w9+{m^p@u(ox7EdO|8;jbkfBc@gAUdlR3C-S~Tq|W-+DB+iK`lQ94 z9itmBvrD7a?>tD)dqNB^UL&sJ_EpR-^Cy7REYW@XNBi%(;3wH{ecJc=+NF}T^+nsn z0uSA*g#*Tk%Y2JJMMxjCVM3h@tQE`xEzkGF3MyGh@+}iF97{#aOGQ*CI`XsY&0~58 zmGQV*!;)HKm8Qa4dKxjpT-oDndDbci)QPy}L0x&v;?4I1$5#^^B*_EQuQy5s2#%R8 zed*Rko#P+5aNa5SlR9os@al!(rIEnvS=!Eo5|WB<=TwvJS52nXe~#-UNcws2EJYRR zROf#j`TK~Pi2S;<3-!vY!~k!!uoPbOZ5^Ad&*Ojmywrw&iH%UZ;)Yd>pv$FwM_y*F z{;;T=tTW2^xPu|%@B@mMAGYOIAZD8BcD2W2Ky!Zp5k_a-yMEzG$>aeSt9S@0&2)s zUVhMW{qyMpaYGrh^Ncz`;;69ibir-w^J(Ur2PE}sI}KW>Z+}SFJpMHJOVEGV>|$tA z#Nl^&d42~Im-2L1;$nR-14kG+ChpAlPne-te+R=(J@WZpr@6)t<63@MjLxcW8v~az zIchI7rnZ|aC^zx0m=s3v??vZYwOxl>d!0tX5@%A*g{@`0$$Oo3kF_;XcKFf#Co6h3 z&+iPd67UMFd~0FYVZIqZJ+2|W{4mUfSK9)gDArf^>Q2k!n)7et_Ynuioagwlq~x*E z3~VU7TMlk)sXtABN=+_>MRqSu`7YXDt9_p#jrk?wttD4hso-}R(c9a>aBgr)d}3^| zarC_oS38k^*TLMarFWCe^1W&pH}Zc0yg)<0Q^)n%*GXc2TKmE74()IJyM0<2a^S0vSf~)UR#BJViFybK(pd# z_Qj{I*Y^55hxJ+vw_55Ul0U7Z)LW7$)@zqnP}XZ-(6SfVHqg>~?bgSn_cx_u%U+!> z)@vV$_1Y4XXw?5Y9f$iQ_?dn_+j{N$iEJGu+{}CP!K3jcTFu>cnx^4e{gnleL0EthT8Gu#5fkmJxvi(jtGR>GehTZ#Pv=pywLGG7 z@3LaKf40(`wx%2O;4RNG`D!l4p?lya;Mp4GJY!xeDz56rc9-@V(ENl8p@F!^fbTFE zJkY+wz+~>ncNmz=N1|cOce2AE4j&xMx(#XSsG5C;!C)8XI}92I@+o2{Z8HeX(3;q+ z1heYU$&7M9&jaYf1XquK_GIT1Cqd!T*RTx**MHNqz4SPf=q4%~3fL5Nf^QVS=>A~7 z58$+v;PM1%AAm_%Mlj10mnF-eWy==AvM{rpEn7~JEtS0mPbreGZQeEeTz0My4pjqi zE<0^qP>s)JKVd(w!}k`1rf;F*4))6kWXB7a(HMkRGx$~f7;(_>oeRR@LBllAVHS6` ziD1f0Z*kBtINe7%Xt<#ZZ6l~SL3PmZ9vI694R>0(gzq{ICZ*rq`84>kM++mTiDK~> z=r3xGeF!s_6=$q`He<<&te(6qdjT$^wK>B?+bPMiK3dY2fIK$iYhI(Cmi=g1mIh>K z@L<`-nhz|)%}@Brzth~bf#rxh^_?BGnx!3|ffL|J7>c5Cv^Ng=8$XK^&8ETR&d`Yl zJf>-IHRLwj{4$D7f;Y4D>XU!t$J2~-`30Ym9*q$*(oAcnIQe&b9L-3jJF8}-xA){3 z$vBo~r2H&-xid7O{zAGEZr-Ws;0uyE@%(x?!}F{ibEci{fejWW~E!Q!ZY01PpYO_M0YDQx&h> zXe=I?1-UuyH$6U1pm)E=&_}4yYhtocH)+3V0X6!oQHV}v;cg$_Z@T2VGf@wYY9T@o zH~W6mGh;>NT?`VHM@C<`Io)qMc$Aa9wVWI66; z-*1{SM(j78S5oXZC8LvWG_GAY)4;Lj9&v(|w~!Moxutj9Z<>E3aiJ-_M3Vr4)Spa+e2gr zI2Bt8yG#2`+o&DXAO~bt%w5`VTJfg-zq#MEQY7tSY4RKKx*k0hUWd^;OCxuOK-Ti% zs{N)TN6Gt5BQZ$~o1XH|VB`N?dW?VGz{hy*22s0^wlFJQf>|Yp{ibz>XWwsHX1MeH zriS7Fm;I(ad;PEOH;ozjiTh1A9+h@|rYGdM-*nIk$?iZxj{8j;pOoyDBz$1MX@y@T z%fSgB*l+qn>+GCxe44c1bW$+qgt4wU?l)ci&^!Bn)6kp9+Vm|Gh>tXFO-maYH+&qn zh$asMPS?%VzTdRNL+|YSO`qQ&Fn0!~XJFrD1FMT*9b7+gzv+1J1lWrJhV3^^YNhNq zZFs{+-fw#7fw!{XbV9tm-}LxUd~uiSC+|1CeJ9ht-}KuAv2ZfVmAWKbztTqCMoQNB znqFfh##r|nGDah-?R_nwZ+`xFrnCK~>mTUV`%Rn16K7m`pL0gb5Zpj%{X?&r>MHFw zZFVD5>^EI8jP2=dsUnb;KV<@Wflz)BC{FjArVS&{WrgQZN;3%3OcM`?;(ymO#eUP$ z%=2D1b^K4|xf7uTbCjI+o3>%Te@^GV5620n`~`D|`%QNZC3o=wDtBkE$?h`Z(A}P^ zdd+n9fbJyH16qF*AJFQn>;Zjrzv+gfAK7pEf8@vE@nQzE+-5V_vkLMIhVRI+Bxodl zJU3W1gAI$r8H~(EX&m|SyDRM{CMa29Qg5T zMA)IR^Wz6Y1;u+-NKia7+NE*Ik7o{c!jC$8F1~idSScz6!q(!@pL$NuW#y&g#4`9QN~ zE{^HeUrOj?*5Bn5`SE9GbKu9G2s6#a&W{Ji34T1x zU+`lxN_L?^;#XP<(oVfb#A?b#Bvzv?X5+_M1Bf5@x`_O^<3*?Z_}qXT`Eiptfsq`L z*>x9*AL}ptSNZYjHxz!{b&&XRXgh@;`_W>ws{=ot&|k%mI}DQfac)eaXJdWVczTTc zuF_-t=j!FKr5Q@XqTw^5eq&v-4xm{?7UF<9`1aejL`}f0Z9s9{7p;c-CHt zr5^8>BR_7wPqO>IUyl5^^nS^1RKE}KW1lUOWlX;h@Z(&OPU3&py`}G;1#o^`T9YF` zPP*fS9|v9_N?Wxbv5>7M_WiT-j+C}V#E-}J6a4ry z4g3Dt80wN0E+PFY4b%2@4SoMC4f*kPRzYQ&;P=n|aLSL(w;lL#xxT~{r`+UB@tfZC z{j)RBPOdGco%4C7!{QGCITOg zDg4-jd0zj@NA>+PmFLe1MaNNc{Qep9opOWwUiFpo{j+llKVH;_+>Onn{{C5-?C#`O z^!>BbdQD^YfDVqL2V}m04=Cw0dq5xm{@LD-^J95Goc)z>`>7NBhp&Xw_Z1V{luK-4 z+gn_o*tR3-TKCRHlYX7Qw5@Z1YGSMV6;5nq_A{F8lwS$ADOTZ?ocVQCq3^_G$1&Li zj{dHQ3jM~Hh)!mw(5%CUUkNwiSPry#HzME*pVITQSHkV+BbeV_gJ6DSlz~RsUkTUt zOF^5ZSHh+B5yjhhgzx_fl#7Sm&64Lm0IuMgqo}%gwqA5n0nPHG*(mvya6=Vz9Vg|1 zD)e75Sv5@7kfZM}tU~{u(8;VOnic-=E8!ZZ=0KZqJA$PZB3xyfV`OhpdENm;hW=Mk8697$X<3TNv>bhk8vRQ`C$r^fcH<+jgmXWd17$vn5PK0~DH9!^eiu65kH+20kn zS);rw?m<^3fy7=$M;VlDKco2pkb#Nxc(k826EC@bVv=4QcZ;c@i2e9#>omN&MM8+y zBc{CfFiiW+6?foOeEjB#EzF#_qlmXb6X|xu1_>L60-BYb+Kafw-)4M;zs)!e16p1GqIxjJRL4UKU6M)~{; zRzz~d{wUguV@UK+L{Q{b$?RKZc1-Msv?>~?#5Tz+ftjU|O&$fR+bYSXC9`3>CF{D_ zx2%++0mGQSUNR2qs#D&8eM=br%QTh$4$1Is7rUWV7@lX6szF`V>#z3%sr(j+sCfOg z!4F3_Lo(_eOLJr<56Qy_zjPm_r)peuB7xG5k_5Wlg;;AYaI%|iJ~0kIDpOYf&LBvt zA?!ki_Rj?;>TEJYo5#>L)Ul%ltI$q#0<>C)W@2bd1e%+KR-K_mFtp|p+8;+`w6Ta* zAJN{BWMJ)xzu^ww_w61(ij;JJw(pan(2Kq6JOMwy1KJ)BOq!xS_PJhTh(3VjM;|Hr zuP@NH8kB1<&fDeM=FYNQd(#neFc@->F~(Up5KUk14kmN-Eoq;P=7iW8n$Kq3+ePfN z>4lhOfLofQtxV}%J}#7A6Ps}^H>_)keMh6xsDU&pH9UqwqV7Sx<{MIa)efT4`-UmK zBeh|8s`5K2y`s3jVQ!BiZ_RlJkr&aK&0aeRi2lSc*tm_}S$ZLE=5qV2H z(Ua;>Tcv$=9FiZ_8A4emP0&us~%q(EVBQ^aw};mvr_%=?-&?)}&Hm@Z?#UNZvIZQ>HM`C&z3uIxzOH@mCK z{p&&5`(;8|%~3K2fa@#S6y~{(^XKmAvxdS=_&FIsX=()&PDoJIz;hcy>!WBqL;Y8O=&-7w0d>KGF_uae=+pp|!?mM-;sGp0+S^XsV$@PO@>9K6YEVKQi zr>#aGRsCeO#`+<%t!Orb^XNx=*%_rc`=ReD{LnZ5N)B-ccH%phb?|TcKSgq!cQujY zy7d)uya3@Z0laGO^O)9r?{l2Z*d7B0%1Q5q6wdpXhMLUYRENJEz>3?wmzePm%ADR3 z0#nZpm@wE$Z(8o<@}O92opQ)~BMCtGs1v`}8UwX#J2N_h)$r0q1=ZTniXd*4cR2q(TJ*hD8~8D}%?| z&MOS?j8*T!*VO0Yn6r*rkH~QPRr*!`x)q&wDR)wRoM!Y%agHTLJG>e#gOB*d@i>jK zC6Jt1fSmy~oZy$?0qoqBUiZ6_pbjoJO6S_oPUW?&cFO( zKmXE_eZTg-YC6^IRh@rn!Op+1Jl=(YZTD)d2<80CSmpc+bJ^DoTh z{(n_2Q!J|UFEQ-=OD}f*1zoNIm&w}RIN0q^)ppy>>L|lI3N)bkvh~+jI9qpte$LLq zF$oEsrv)txJ3TM`U-@20J1EkVR?7L-{cKqK&Rba?@C{E14Y!ne4b5^TU%U2GOiVd*<~i1CHc-zs)89&=){^rcc}TNDm$?yx9~1>4(F6l}>R zRFR_@b@1x?m5Yv0%-xVDqW`Vo4aWyDQk4e3sX%v7;@UF;O0ly-BOW zo=w=%h`k-nGTh|_;eL(_!d168TM))di?O6(`t@u%xNi$lX@g%Wl@?<;N2ScR80;PG zuo#R5o7zHo-zjft)xA^&Yh`(jaJBhj?Im|r!FEMq!CGO#-ck9*QZQndQ?Os{VAxl5 zD(p6vf^RUu!52zLtFb#1b{oVFK(n2yh2Z|#7J}bya<&kRwbss38vzp7GH^(YsI}TJ zm0D|Ose>l9vMmB%Z04{Cj3sLkqkQ*-_o4Tms*-iIe1ULoykslfR3)3#3`^D#OV%6B z{#2HL5&U^`0bcMZ1OHwP-q|u4Q?20(z>U=4K?L3z!Kb3x1cwFSADt`!@89Tb0T`>U ztK|m-`J65PzKRyhzwa|M`SNd9^t9>?O*^J;G`{BEgJi{f8<7>=HnIHcCzgLFH6_CL zXe$!FyYMqT)5UT5w`)_U%fDDb=b}Xg-P*@0XrhOzf_hpmV5XD!+H46|_4~h@Vg>cY zY+pgMZqni}!Vgp6Cvo`VYWQB37nrUzhd<<^f?pMh@VyZJ6`I*J_N8Bh&!@nb;P3~v zD)_G~`H*s?@`c|o)$kDn{}safquB~hSnF-k|98FxGJi7d^gi-EvDo1ujKz9G#$qjX z-#RSt?lP&q1TwpsyujNRGihRkq*51Z883Gd|KCh44*2XDBlCwxLDr*-Na#k zi~V~bgT9sbe>ZX1-(vqBNaJPl{_iIC{VnqMKqk$SjN-YG)9-<7DwCat_j)dEZJGKe zlhN=$U%BM;J&>VIh%m3*=dJo4$n$-6(%ilbk>)3xeH^}#F)IQ{^OaZ13YNYU18cX> zTlGDVH4<1M2DUOASQvtxLooh5kSmP|%xj-oAas<#u9s%tf6fN>A{-AIzH-U_J&?%^ zb=z;=%J)D#CB$Y7(LEdD4~Y2i74^sOI#7S?vke78&!6?0iX;%)|BM2mA`=MrOF_qM zyDRgPzX!7AH-|;f7L-%tx?ebd-`@xq(jINlYo22*iSL25+^j4;u8ANr-=~yn@o)b| znauw|C~F0Z)9-;?iXhLGh3CeUCLYqfz%=4}AeT2Oo+~iVPcN!uL}Qib9)wa!pyd2L zkoL^|=Dpl~YC}wzxn8fy#DrpFO@~d&s^`z)7UD)*^B%kFOz$|jDI)AvBGg_G~< z!gsTVLNujsRF*yKGk19}tK4-^xf@FELcv`YYcze^QKPB01shF;^{mn4{5_ES^7lY0 zF83xz5xe*+9v7D04X|G0{M`Ue zRy%t)0Jv*X(ozp`=p7?<>P-k2Zw5$ukSX2_@JAc;SrUCVzz3A9UA&1V)&=WumNl;v zZw6qWvV~mg!iab!tV80}AAY89)9_VJ<;?(hL)l83@+Q~6)_&rfT<_~BIQ(`ITmLF= zXAZ%Z5w9Fpzs7~yPyTmoq|?|>{+Go9O<^tWB`x<5KZSDrx)#f|Z7tD;?Zshq+O;)P z{T|oSlzV6IaaF&+)x)A!zrS^L81yLhiLHW0mL+xkrL{#L9%=rwJNt4601KgqqO zZUb6ssK;{du@U=<2D0p}!Gq1ue$;EuK^v9c-|F_x`TLC_zowKnK_=_uQnaqPZ4%Y% z-LkA+Yk-quw92LZ{%3Tu6rgcsJ5`$kSF6AY)Y8sCsHL74aSSIP(i3=FU#BtSB%j^4 z@ZUSkFevT0;odpxcR`eg%hTEUKPeC4EDr&chXUYv1?9mDt_HF^w8A`Gzu+tnBOnj_ zug?5iQ%jQDv=nli9&C4eswF%BxdGj-Sfkf`OK#`FRZZsB4c+#3>Q>{#E&01#g8c1g zO?Z^#uPgIcll)ZyFN?`v3AnOlk-tO5z+cvRXZ~i_%fa6W>VC)AbG~1UoEM%$&i^fA zcYdn{Ip4D$oo|CNV>UTo4Ob_a^Fio*lvC$<>*;8gGG+JA{N@QDzb9EGCrW-}ncpz- zTW2*MctXDw;c5o+TNM4eIQ6@>Grq~;M_Wxl{Ar+_01_OiR&;c;{miC z!NeuU4Pn}Rei<{?NMe5VKe+7xkb)1O>Ij@yj&>)30q69Wt(z={CVo&bx%RVf5K z=trb?>3BWWNFDw0dW`y4i4Ot=ta~{Tw*kR_e(_$WI@;C%o!}j5z687qDlx;0F5lHv zY6X4Xi)QB^*3$bwf6!|>kk9pSRTX_U_rqs%nfAxRgoBZMsLa`l;bgc9LBrn+U`X>d z38?qAX_Q`6TgM))aoJ?Oc(ik0vqyXXb5&M4v#eC7tW*NrPUImFuIizOLk4O%heu-Z zPvS$1v!<3~dBXICS^5`0()-^)UU#PSx8N!g(@()1nw#iMsfTRvAJkCC&oM=pAXEH6 z`0Z^i-~eBeu6k}WE~ur-+;33?zKFo*0Av>ep8{9y5WF;HE)-_J6}M3NC*4ixkgAPU z3_HP92Q*yhi}4iCXmcjoRL2ZO*BRkwNI6L{KkX5yu>?Q(vwu@_ktZgbTcqu1MzLn* zE-(H0FL@w~VYUn6?PmjsFyY?%*#5-QOI-<++@70@0ji1NF$&LJR zAvSqfAjWqRU~o4csx4x3DC`xc@yll{^HuP*BsYWUImi3s8igV0zG9XUlp7b}Y6sq^s>5GT@EeilOlbS?%g=Z((+BTugkQUg zd&}ULDR}Ry50>vlZMKi42((6Ds;gtbr>)nPBaex%V>8bAOegn+XEo90+n_5fYCDB~ zMIC<@#z0f;M!JNO*6~@;CrYGhYc6LkhWwU-UxuOIp5)i^nbIW70Z#d*I!(0sZ~Xr2 zYHXEnztd~JpmIKhtKTu*Y#&6r3Aw<=5o+!5EvbD>{V-CbKC}u`{|ae(QR+=_bp=zm zg4FS$kk6~r_3Tkt+m~Ve4H4EW2$Kk545aC+249YpZ+;a#qd_92uyegs_1uK^c> zAWM;{N3kD5d#Rx+S8D~gEa8>}w66%)2v@HVcei)8-c~AA`(_z4q`FIoU*4c?DQ~62 z0jL>fxC}2tu}}@Jbk)L?q4<8)nmA6y_(j%kqDv?kRp+T8#mAlU4&AUibVCp9dBJq! zxtm7Q%p8yX(L>cA*;-DB2aBda->8KFcDZL+tK*};grn)hTbVYIttC?>k#C z*n#^7(oD%C{qd+Ut{V=;KJ#@=(Ps>aP0>u+|15l*vaTydPs@<#O(sfEzGrpTwL&ov z_obAPRCgsKUr8C6@9rcc^HVS*9#TfyyQ?ztHiUU;fgQN0$Vz^9RaP#AFg<};q4>v5 zdv4Cq>i$gP2T^8_j+br5sgNzWH+_+t3g&BqF~-hB;gD&n^CrGX*lrfNJ!5@#5?j4t z`Y8B=A<>J*jtDp``_pM%o3l`eaz+-XD@SzbjpaA@uF%)du!DMbN z{v0}gPm{TxiKh0;QPAvw--WOon6-PB;h#-V^LkuIG$jXIUX5_q;&Z{AKn*#gl+9SJ z1{;@h(O)9X*E9UE_=lchm5#;Mh+zjqVo6tx{qcWwL#S{=;!~Oy((pMnr$4h*%mXf} z=UTEF+xx(kc|QErtWQaX9M#d+#NHhQRqDt_j#NW7VlrQ}8PA0v8==d=)rB%OB!-b2 z`^#1LR#j#cfAYa{bw9Rm7NnF_DewhNR(; zck7xbnYQ$yG!8;g|k+@2r+IuzYVU{L&Zi?Vx)@;MZ7juLu0n7Vj;gdu`==;qXgqyf=>S)rMdD zh5?Tvdh}k@(8ohwzwpHzXD~XPF4OU2^9kH{Z(8Opa0dVKVj? z@JkuQUP|}c%l8_?FQxF_1b1xY!>UsEH6$*;1q-urTV;h>Ok70N!rNx7iGJeWA>r{} zB&IvSdb3ckF(Ot7VSQa$HKl4AiYfKdw>YJyf%O0?;z79j4%2-_B{9y5!=dIBvg?u7 zzQydb{jXsHVje-HK*E6pF#)cAqGsl<%=WfQFbu@O#hQw6(TBQBql&6L4Nw3Z5@20` z8AO1U;A$7OG&eTQo6L)Gn#Y)Fg;Z@`Zb;>JgB z_<(=PIxc`u&;D~s*$1VW zQC>W6L(*P0Opa_o{io$O^#1etFg(!%uLoBJvT(Bs4LjA~*THln2(Iqp)9p$(3c{~L z=!Q33xnYWMx}i~SJOgR%f;Y;$U_U5UiT9}(8}+H~6_h?zVZP{7cOawbm2B9jcFhxw za2;G-K-YKp*0fkIgWD8QWN`94QGzjWRS@0cc~PliUY4ULzjg{~R;zyzyIdVmpXwrF z3D!jeNFUF}f4C}%NEcX$YupG-dfsOIwwy|kR%FRND7gj_C9v|()oUtX@&y!sPGuW5 zjQ><*Pd8}`t&*nA74`?=s!|pXaX7wRp#=r)78q6Wh1~|JBo)gM$%!{etg9gX&4zzd z=zx~~=J1~MCuK43t9a-5g|GNr4>xO@&ZWiX?moC;UK@U~hJTC9V*t+3(4go&0#Y{C zl%=*`IUZ{T2*gyrQVNtqTZrZU`68^6hjU<7q$1vgt6EURjHEq`5nizwr%{7t84)#l ztu7_sPRTbyq7jsQ1zbg7jW&lC0wYY6*&2l`7>HMLhd{?_@+iv|#M9rm*htaX z$hQWtvvrZlopm8uk;(m^n9L_4lgC)Y%vYk5d)*2*--}M}50}Hz!p&LH$zzU%gXBua zkqFl&tRwDYw?7t@0@Y?dZ=LQ%E3uOX(@N}{-1fD%8?+Rp-L(K8{+6%xnlO6!E8*(Q zGkEw9yfpGh42qSZW*9hEVfqo%pi33U_0Ksfrk@1AW^@DFF2ms>8c2TY;S$N;Sw@ij z3v(2b|9UEs{HAjl$=5<#%P4F!wqk7^emCF9@J4EHy~o#d*rzWFvO+wYkA-+JORs4} zg}4D%e_$cXc!{MVbEM8@{HClD7Ak{rOJhD5 zd}cED_s14oDazc-4+*d>0-pY#kv8`rG5NhHgJ4D63j8%Bq`^)l8728JN}mo+`yMgi`DO7^K(GQn$^B z>lh|665pvsXnW@&+77@7C$t~o>J_3r@uXQY5@yNv2gD*8rCiHWPNI}!l#~PE>NTd^ z=_v>dN`s$bamjn)Y+A8^#~5Zy!)4HUrR2w;ZNo4t5@s0%vmji(Ma;V%sBsC!>b9aAiIOXt#&bStVBJmyV<>L>fJDH=PwdMn*m!ZSfbpI6BeCi$@!l8NH zZ~u()mogXgH*KcK-zd1sh3oqrJT$UA%q)rH!71Ek1MJ{^6wEU`57$c4+&H!uF;3tM zrF9zfF%V<9ro47BA2rP155FBBg+4=>&w}JLFL-K9KDBUF0DU$GpGn6d&4T?&#|??+ zXr~PBTr?I%^g8zqi8zXc?PhODIc2@Mmlncc4nJZRXuIGl5YfH_i4Z>w5_|Qe#PNOX z3D+nIXDSKD!&PZaSRNC8j^{mlu!NQD2?y@Q*GO9-ZIM)M3ngtsxT=6@AG_mwp&!ZJ zz*0h|iAZ{gVgH9%GN3Wj87VM*fjW0?kkp6+YEl(t&BiKvGDELvLil&!s;S3}M#OY7bb`LjubV+I08tK2H@6^gr7+=9|%tgb2S~f<%Yr0k*4x#xW_7vB067UOz{^w z2w;8pr?NW)vQ-!|GX^q~sx|TqrvK)m$wsKA7sG{jAShAhEY499im|nLLsA%tv@_`; zEYRXZS(-tNw2@z!xrLwk;FMb__0W65aPxtvl=WsueIl#Z@ZnA7d_o-!0;?1LMp zF~5t6&4%i-4hAN;o6ODpvktmO<3~Qu#d}7C9EVZf)t1I3S5hSDjArn3lBhh$8>l>w zsB*BQ#hOw~t~TRe#aVQ(N0idV^q*CuHszOsZ7SC^@vQy@!jOW`YL|vpif2@EoIg|o zQPGHy{V0pgC!>?UJOY0O$~5*!AT$8$+CP*^&Y!BaOci(=;A%18Wps&T<547b)^bI4 z^2}4XD2?C$cGI)@{S@>aoAK}Bv_PADiG)Tk09pn>;53R6vmUA1R#Vx~0FA0oRT?rv zv4ct@-~NE?#BxJGcCoQIzzHjzLVr}#^1%Vw*>~rF9B6aH0NTZ~DT$=X1Dg*>lkeac z>$~z#_a}%%Zf!Xf9@C`5NR90W%k1aL`1dtndL7M9k^xD6CY>a!Mk}VNSb0J6ZrMQk zyYe}OPIR1%zLe30e<{OMj1BNCu{bmq2~WM|m(mw0o)*!GeXm#StFH9rrhDBbyW`x> zgk_ErUtxMoyCJpiP|uEARi~fBZI@%&mn*KF;agSbAPs8c!en_U9dU-P@jHU2Xy46O z?*)xsVBfiU;5{CaH#VK>c(lt}NT;!+AS}Ir4ZpqQVVYudjgQ3r>I`_*e3lp74*F`o z9kc=i%}jCxorj>`At=2R1S^{Am@2y&?&rLX$aPM{*8m+*2)j)}`6%)67hsGq08OOj z@ALqgCEY`=WmFVj4a0y0jJ?U+94Zus;LgDro-i?b6`}5fpSCC(pyQvmSOPi8C{AC@ zu!hbM=l8>H#&*H5SS-@*ifrxTKmODE&rRXVAVqW5^`qp>cT ziThGAyu-2kpSOPgOm(CSk8(+$i7=T#&6#vzZD{-VND$9{5g|5Hax65j6Q<<2TOjH1 zdzTUBf7qF=xMMiDV%=Fc|H)+>+i(xQy1jjZN^Vgj{dQDjx z(yqc)>{ECc$J9!$Z9&oo?Glw)cuX>%gZmO{V0EUR5c%m&<&FVExFstJdPenX{O=1q3)OA@l z1p9L>N8!cK4@z3@)LAYb)JsHJ1ysSJe+r;K8)^xd)gzUB)qyJvKcyE_E4N(*=;^d* zht;@&zvkwff)ej7Ri0|vrQ%5GRjfP!<6zjCFN$g znu{rytHj&GPEN(!r2sgq=FCy4xELc#9g<{2RElU+=PNet$0dz%jG6JqPqm$kg0oPtLVq^J> zRbNf9)xj4SQAA3Zi?zaLwhL&0zlb0ccv}WuiNJ#avJ!z8f~#K;+>5}CYsR6%dX|tE z-|vRc0J~_tT5y%o+GK8woU=3dPbe5wd%R!#A7B+^6jp`c3I@_T+Tv)D=b6E;InJBC z4V8|KzLanwV}l4CL;Jmvk3U~x$BV~_{LFx>-!MOy)$wc(^a4-k(P$W9pD?BPg_5cb zTphqv#kH#EkOp3$<8*;+u11GgQ95b{hcfv40*&?&u39ivk@pm=A}v5xCh(UqT>XyV z_jnv0Ikou~KFqj$DA%ePRSOLnWmx;4Ozj^MS7YrTuI^L&XL7AeFO+LX+5TpKA=hSr z)dRGOCM$jZ3Cj3+Z4w_p`;AbIpPfhW@v~JgHh$KKBs5$f^NlwUo5p0?gNFUz$jFy4kR{R>x_n9ogaG*W`2mHF98c-Cc)D5ksM>Lr>k zW!yAxUhJcf#n{Lex?pS^CKkGIQN-R!ee&v9Jzd276#W&)#z?l;W6STnt2(T6UCqPJ zQgK3hB9GE_D=WDw4p$yXBDAimfn-@8V&C0b;jqM>PQU!(={y*%*LYzfdMAdxb;d%X zFmtpfc_x1`@~(VJ=fm&cLbB>i|HD;Y1QH4woJX{Yonw_YF)yClMB)^6o2Z`8u}z#fE4PV1 zN9i>+sBov@su*T_DJjC}DmLTS`II&R<@y;6ilf0awixY|`#)+4uDRuwkZ-Tl5`H}4 zyd|9RQ?-Qseyk-lg69u;sqze!VqsnYT>lJW>z@;-3Ji&~XwCxC8Xk}y=Z67ljjGM` z^`kaZuCx7N*33r_GbB~Jdn7bDaNXiF+${=N21uy2q`>0&iAQ=>Hy&`KFYv}8m!@-@ zaUwJ|}jDM5P7I|21r38u$tJ^?-EH9@7vW_(bO@pv0s zlF(jy?Iq%Ei$5N33pYP<5^}S8ol&A~J-~mbhosTW%}Aro%<@ziOk6Q4QRHYWQ6m`7 z^U=Uu1FpQEzylht)@WP2X+GIH+`g}F44+TdB&z0@fSZ%;gwwYd~&k z#C*@i+P6bR9%sQ-8O&pvTHEBJMEaH8us$iw_QYFKYGVSZzS@k$5;q5o0)!R{SJe@1 zl3l4iS*=oPVJu}KN|{ed=>bqSaU z@5LVg3#<*M2T%?q8&hgH_rFD^&g#~Z&+set2}3ga0`kr- z$SxM=%CYbd3sDx2CSbny57ui6QQ^13)d7aP`v@zC(}J+m(P>ZJjD$ z)`NSg;1`?{wRFw0`a9(Du+W>3HfwZf!V3C?#}dvA*nulGYtEFP#tX+6gOdF36SrnTF`=TY{t@)46Kfy~eo+W2%erHqQg1a=wTJraHGe)q(eZ14hKTFm z`PusS5U#E!3l%jMU^0ftA+Z8(s*sq@jRxPUq4s`#(Syaqeq%gqIAHI&&BnE+LwE;ymf5{KX09S z>eBw@#_V6C^4Y&eJB~&*?lb#We<%BwU8_ks_Vg3>FNS!{@x``g&TsO?aWO&SS@Tr2djWg$HD4zM*6b>Ncy86^%^&({|9K(6Bvmi zI@Q6d{YNcyZ%OET$2KgSD?&In5RO$)vLNA@570rxagr|I>HYi4+puL6--c)PP)Q$? z;4`ZW0E7^a` z!Uyhuz4e+@ByOe`GM)jrVj@w$sgd=Ykm~~EI)b_SdQpeh_@LD|DfPxUlzKPO1V(s4Y2cZ`Q;~m`^?l=H7<4G zGwUbFod%WImhXkOM8n{uG*=8x=?~K21oe>zCxnTHZ(3dg$I4Q+x5NE*p^q?-72#^N3d>Jhbq7TT|AC!aGQ_k8JAa~6A zl3571zWMJ5apN21ApWylF^J!9cRh%s-{c#_zHbzRc%r*R);@rWAX%N&8i0ClXb|58 zDhE;cAPwTrP^=gh`$BD0EkMQe1$!w5al`;Vh&KkP2J!R&K8SfRQ*0&v;)7^wq8P+E zZ=^xo+EX6H3Ik{mXAW>Nh?U>D8pOTHPJ?(fTCdSk7wiG347R0%fYB@?{qW%kI6uEt z4&*{P`*eW(FneV>$LoE2%6mbT4ty^t*jw4sD!IM*k*rt<_hIx7Q8aSXYb}$sgcCjF zM&53ZjjWP_6BY*717`(p1`%(yd^5;qo58K!T&O2a)r)Qto%aALk91C^1GfaHG_?XK0BL$s!1<_V&C_bo zE5nvr6f-2Q@W=Qy!l7npp87ebo{Ae| z>mb>OkZil%*y6QBc6w*Mrq@$`r%usYGZYhBR0N6xVIIC@JV&bf4=7ZKS3MKpLA>h9 zjN)gM{hTdrquk+CEJjhRJ-|bFv6pJQ+uyzDY*SQGd1c5O zf#zL|Cr1_h`1}1jA3=NbTe>ZJ3ZRJ~eWlE;6`E0=;jTR;B0K12>s%%iGN)%&I?0R9}l&k%^J*feMM0Z zkz_1SHf2g^7mP}1z8bgG5 z4mvynDz=P$rT;q%d}K6Hl}Fg!V5*aH5v940^qkWfjDy zXZRj;L43D##1f7l<}^EEYQUCr%M@`ebtvTMm=Y9R*1w)8K`46Y?d!&(ETTOYD@`g z%xBPqG-`|hkP#cx09`<$zedk)-bavUMaL#CZ8YCJ)k-!R*bPs%ld${)(C3I{lTLNj zHs}d;#dPY5i?+wBi6p6iHv^B$QLu{%A93sa2;J7U19n?WSg}W`+d=_qkKNX%5MyxksD$y? zMlRQIpDcNtOId|N91C^NYoMtkBC4lV^-b&}>YEQt^Je>Mg=#P#e4xSnr#;>O`(C1I zJwRO$*%_v8(E<{vC7c_=zcGsw=@Ql!4h4Y)@9n@rV+4kd);KBo3k#;m*m<4525m zg__y8UjL@LTl$EtRp+8rOxOCLJ6p2*ITdLND%gTW5|TLy%zP0F{Ph%Hvn_GWy0T{> z&l%WSuNgt4^=ZvXTPZl7ldjsdG*Hm7hQ!5^$8jqBnmH4`Lg{FfktIvwfcf**(g+m- zXgrQkb3t(!0#u>mNm|M0V4FvDo}|LLv;^j z0)Yj10IIXJT|Kc1xhm#nEQ;F|w^B?XlM*#ktTEhzc+Y$2l|#dZL$>IZFyJT}a87d;D5mdJ_} zAE3P43ivSfs~5Zf52$Bhp;{RCtlGG2#WK;5Ms^5Qnx6=W@=WMW@6|2 zzWk#Iw&9{=+3VuYoVr{@+w{JV5}#1Z#?HczCpqG6;u)BxaMOp<6gDJWl%uWLjoSN? z@M=g{sy>(RxTmH021}4nxn=l^cnT(*?dN9vR=HtnWwj6XxO+?s(JDMKo7R>g;q6B| zNN~cOhgvd`#6$+!3<=CG9p&HN7BtBbdT$#2N+A#KEtk&pvE3E;OA~$`L@wllmcnzE zXMuyDR#s)=&rCd%WLk2h_LEaP15_MSn>$j?a%uyBieYMH zidoeEJ`*N@SsORs#a^a(MPr*&oT!Ayv|g*;RZCSf?r>H?*v;ZAiq~kyv&~+zwxd;^ zo{$!I_-ovlHQv*WS>wqNuAIstceKvF1>aB=VQ?%JSGc^n>UGCiiII1k6>5)O0IyvX zx^NqJmm^Y~N7O6ys6$qNJXnWzJ!BQiG}CJeO5+3PANV{+Ebk-U|H`Go!aX4W{yO@$ z3&lw9+s;~**0-Gr557%`k#!NI82RA{Dn=H-hiye07EUoFbJ0g-0Gt2yeaA@ZeCPKa zgXs7F`F+R5ceS5*-?4vL#cMH5u&K)T9Z|Gl?>p{M<}1VVIlb@rhI4m@#r?QP<&GI`e+_?c5 zcO%BHrMDVUUiz#h?&16m>r=P2{0-}EkI7kJIriWfw)0=w+*iAvDJz>R&Rl-}YKy&J+(!1j)Z&IE-lMV#+2w%s03A!63tbKS+bY3)5{J$oQ zLaT5Ppue%ndb4;4PWctG?ZoZTqv3yeoY8T=x9txU_}h>_3hq5=#D0f~M7JVGXyjA0l5IF;{6F<8e zMwkX4M1FP@K5XY(0KN(wkr}&k1jfp9^n3u6j37_*Z0uk^yiQZm%wnaYA&FiC$;UnI z*RX>RPr*OXIYSSiJ{Z$%yCc>5;LksNQXlL*|C3CfxBzhC$JlV<54lB?|7oNObmy;i#^#1WjL)iq4)BMl) zzdZl1x|si0RP#TQHTt_MZ2qUJ=KmIKNqQEW|JiK*n`r(wV)MTd&DuBr;QTjB^B+}< z$(yn0;Vd@)o3i;IO7lNdJ^!z;`5#J{HvdEOKNRPGb2k48(V;9C^Z&~K!Ti7cALoDO z@eiu_cevMc*D&@-lm1|1JZ`<^YOKzYT#XfPR{MdNxs%n)FVV@$B-VcPrQ!-@+bfdy zz_7-$8p|h=ya(!<)lOE=uS$0HYwQN)RC-kEG8rQzH}4%;G(Jg9DE?Q7UbB!E(I|kz zu=hH37H$f!xnU-eOB`x|;puHaWz!+cb<~n3% zAApRZzYj^dst^TuYMu#?fe7Q;*wT*dTMxyOl5fELpbz^ zh+70aIJs>WYIS~T$Xaa?es0KmupiB|Ug#g(L9qs2Uqnmz(FpNWXi{r8+tDex_6V^s zxfvXduoTATM?wwVSq=5Vu}f<;l)AJ6K<#m6gBZZ9b!#rtBsMmrN$mAEPU3>_VKYRK zwXTRG>$r>9!-vf5H9x!{0#JMPlTGURI7U4mCH~yV(<~l@ku3N*iic@taVi_kqd1sn za4^qeRTe40IMXZ6$fPFq38VM#8t65@QIpyL^z0D~@Mp|ww)ujV$!Gz2G|Dxl7!;Lc zM<5TiAJ9rHfkS!P)^R4gU~}A7eF8tDsx70VF0eCjbyP(GYT>nws5;XasX87kQS~=K zA0N5VNRFf78-XJ^Krxb436)^S|4;)8(@9H&?awmM1Y-St8GlYP*-aJ$u9tRDB!Si0 zh3fo4t}_B4H)(JQ!}0SpxPiemxRHBsaKDBRTg|4l2~h}lwiC%^emhU2tVnZ=XVAxg z9naLSJ~f{17ua}K=i}KBTCoom7fJe?DY!Mx#lf=((|{|dY=nLTo;$fd$-nT|7T-i7 zx4N`(>NkIb;TrV5u&gjTeB=C~idREBuusp~jXR)r40-@yYwA;P(kve}S-g>$j_9}f zkh;{Xk)9KivYAowJ_xCJfogo{qT)1ivFE5;ZwFz7*-JsxxxUa0+qLlgbh2)RG9l-% zVyhzU)AEbdpRxX*>d$TGocnXo1M1J2e<}L2UZ|r#Yf?)p!e3i}6P=>ITV?9cv*r5U0qyfeUsOaYQ3+UePV%(9Qx|g2PjYI>fqnn$b#a48dj<$3Y zOUqhz3wUJm4C2^V>eAYWzuzGr+Th0DH#%+WG|u4-f_`ZCw3@#HACX|OR4SkOO6`L3 zIW_5eE04P9_K`BTR)2hI4N+};h6$?V-arTh}N?Y_Z;cwh9D47+b=#4_u4Z^b1Qg8T{kb7hCOx7E@=`xWm@E$JK z)SlH;&r#DiP*XLk=_{;>b;`QaH1j?WWcO2cA%paQ4_lE&fctAj_e~@UPT>s|zHJP` zUr<lG@10cp#J!W!|MA{Q`WdDRcfNO0 z*r2#iGU~Lf%we)ThW}&tPFj>x%Y zLz13Ks_v+m>1jPU^Ywhku60DCAQ?k%VdKo<7d#yC`0)JK%7@N?rb&-+aUmaT|IBQO zzHAncVNkO$d}D7&S{MdfZ{!(2#`?f!9fSR~FPS;0f{DjuKUK8quO(g7OQ>c7RWk~Z z$5J)@0eX+s%f7P0H>xbjw^m7K8=Kp!zHP7_;MCz4Z-u)aa54E z@S(@^N|=M*7?Pg5({6w!tJh?uvSwAJgv;*uG*#!1zWmpsc=E7ckl4fQ0?c@2q8D;e z8>>|MH$R5MF`eJhGnV>{T%bH%Y&5rzIn)Q`2`3DAnyut;$5TQt)X|Eb9>s3m%L89# zAa4eit0R^R2-Aw27}3iaJ!Q)0MLfh2QEDD=s~GvVQGFOf*6@UkwS_s9mzBXJ(Pd$kl3q zj@kYIG9%(gUif)HPS_4mGfX%`32WeUBqb~as0St_Q^HL698L+701Cu}KPX{1e8y2i z3_#yt!W2sA!V{=rX85RtY5ly=lrick(}pE{!Coo(%PL#_rc{$&DX9-XX1=AT4vSP{ z?1OM=;G+cMDnq!!tul+M0yD_tDmv~w1{QU_76xa^u?pv^>NTT@#KQnh!=f#{n0N^+ z56j2)1mN*u06IcvM_8@QLO=PiEV^O*a~aKefMy|@MTMN0-B(tjr<}1ZK(jI9utLb} zJR&e2{0Fm`tr*zDhqV;2sXCUfg^DC|&;%btk}tE@uR6l)_4F>^YkGmtnpL)$7;E?C zA4N_09Nz`WlFhE=o7sa9tyB!J<6#xUYwq(&hWG5SgW)w`t34MrnCiPrW=BA<2=PXQ zV^e&dD&1W|d8)u*#oeV}$GZ*)wl5X$E`hv256dmrsJQ8$sm%6HH#yW!2vbsd_u<8w zCO$Bzex@_8%|ZLc!-hW&M%HcOXZT}(VtOp~7H%PyTKglCLfj%OO?)yfWUaqQ<8UFB zugh5aQTY23?We!i#Eov&w|dQ38q&!CUBMwe$Kuue%CZfnY<(ed3}x#C&Z2ZM3zd@uF=0{- zTw1wSVI-8AK;`=Z^cc(Mcu;%=yRqP5mFzH3uDUT*9V{2E2GA2MI?+SJ{HaOX^?tm3 zM1$2=SkA5i=$Xy=8rs-{TIJoAfd{b##zFP*=$M7xs4VhR2Hv~0RjZ1c$j=w9T_lXHj?EYjo9raU{{SkKi9A+No?Rn-UE-W^P{~`W%UH?- z1_fK`}V zNuq5EKqWKf7@%^`yHicLRpv>~gHGP+yHXvZYLD~OfkA}6HXw~>{x1O4MD$yEh*1o# zf$#Mu5K3&*{QX*m-}hUc%dQPLATckhEr+yG!pW*wo3)}|lR&lo1yED0t#Lt|bw}|| zz$x43L*xrR*cZv?q`sIz#iz=}M*|dr#dqU{Fm&a-L_N9d0NL!Y@EEypYbxAaE*uO{ zb1Xc%fQrxk^$%OyhQyELc7^Xh!B3gb=qq^H*XY=&<&*Wjx69Vo-Y>TviO4%E5pkjl z5^)4@Od%qY0qTiF6e5Y1+|>g2^Ud()KHLn6sImK0>v*M%a10@glM(g-s4pU1;jVUJ zgNX%a023tl$K(#~+{Ap< zr$GP28TsLW`?F!xn82(r;b8EQ?3~~tNu2Ov;+i;@sWji?X zSul*EGJ}CKoVI=5&EfR+KrLWC{+sQ#?Cr1fa0Ibs_I2d`L!-RHP|eHbV8-l|A{E4T zpxaj$$U@ipADm<(t0=vd#$k2Pcjz<}Xh=LoyBKt0Z}>fPKZ#MtzS3)crlHyk&@vp0 zt0X9Hl@pc&v=kE#P{MpUVH!Y7FkvMnjDgQz@N+u(rmXqLv1_q*)2{W`SF~$&w;Kol ztzypUdsUm*fxTLarm~;=ZKXT<#w-eLsIQGXNC`M~K2tUu5>}C{dxjJ=R^gF9P@0Lx zs(b!yLgM6t`A@1K;dEuavi??k>85l(E?5t#%6De3u-AoWSdqPs?NFjSOcVzBlcH|e za#YlHfe%{@Y%^JP?Z%}vV59KSw%&}O29`P&oqRo=?O+Ji^c?PG4<`Pnv?s8Hps-PUk=gdyo zYJ0OnUlkfj@^wSE3u1pJ~2g>1}Od? zLtB#276W8I5?T*{(h%(cLB3`%1xnJxqgCKs8QVuv?4U374j%J(PqOSpf&TC1By_t0 zI)&)c5+-1@D%Q3`9$ z<1Yr}>NIg$+lCQL;a^aJHA1Zwy0V**#vahQE@>%MBXN+WC*?2ga#Xt5O*)lsVW-kOy!_8r6^wsb*rnO{15_4Oap`UvCRgOZc^R{# z8mP>w@#q+@I{jfvm6&@}4D>r9CSa*3B+0e;Ag{K?$)TvHS<_ z~d7sCEDm&>Wx`B!Hc^Ldr;kP!piin9$wLQG-<|D`zMI zP(8?yRmCb40=N(T`mVHI=L`=?s-s}d1Wu5O!If*w(j8YuXkvfQuiUsZRGsQ z{V>p;kl$bV*bXguaRuhz47ToIdl9Md#aQR}JZE8s{3?VoJJ@yY_|%xt&Rq_{_?MEH z*9m|gvtGGxrC!-rUhlj?)g`oQq2Q|>WQ3btiuU$@e#gCi5`5UESID(z8tw8Plll7_ zC;uj;f3##hH<5X_f*ud*Zz9m>1*e=@j5nP{-gFkZ$eG6|x89J*qT8eY`!*WWeI?PPzXSeaaCgW3 zFRVl{ufE)-?4Y=hI#(UEZyS>eYQgq^dc)9Uie6&Tw*{h7etJOe1(8Hq{dN-r|hegQMUkV-Sa1`IN}G<0?r zQJz&C8C%KT+Oo1Y{%q!M^U+_x;2I*+%t=DzeCB|kBwYViFT3U2 zOX}!JRX@9N#b(mT%sWIi55k%&B8vewW)-^m>NV}j2cfMmv*!a_ySiDm@Q!b0{!hL% z9sd4}{GWW$|EWAq3S@jE$tfN6do%#5;p*aRMp^O*nrvsG$(A%Gmw8=-)OB?uVh?4l zQ}U-+ZqNs|^deGx7I4-aBs_rWVwig{;3&Wyw;_B0NC^@yZbEp!cbfMxd}1AVa4h5$ z=^lD@c8JGo8i{8|A%B>75LZAO#vj_i#*#ASKJbTDAP(_!vb>&F3N9HA(XZftgfNQp zKSVeS5!%`M@32W`INwPOr^+W8PMb|y_FM(=oZjsf&sDtc*pW~*;E(1h+|M7G++n2)Vq-=OZG z6C0ErROXG#4(hYf!B)T7kG<25vDJ^jL{m-ywHD*cVnpAwVziES&IPvmtc>KE6~ftS zXXd?ZLf#tc6k8SlnZ@fE#3aJf-zUN{%s0X^#t+!7e5t9lc{BR9-b3dXbi}gsylfU< zK#5zSVvb3)lKt%=N%I(E3*BFeGWQoY-#hwYUXwVKe4g1IrYki3YPXjPS*@WvK7Xup z+)bK{J;mH!kdMcXmpodk&^Q@u7F1khYP*5SZQkStfd_q_S;P3NTLWkJ7q@q^`^#xt zuWsD^r322r8BDZCSq`Yq+(TS`yiZm!Y@s1xHO&HOWx@i2>~75QFG;`ZYrQ7aus9W} z?C1~Z4dw&DVC_a|mpzrSQ^?KEjY)bdWC6x|6c}$vFx~ITUXKjgIK#-VIM!aL)ui;j zPcmG&eKaxO`l4ftnIya?MS+bl7ngIhb-4e-4>nsVa&-BOU2Pf)9P<#`VBLUSnv*)? z^?^>%=Kd8U#9`GV#4&+VBp+7~o`kfez1M^?TsV5VfJBS`#rnqtT*Fom39$1SjI9cR zxnd?y9`tB8=4oh*lyh5z7U9MdsEGdvL-; z;iJh~&YJ<=wt@5JQ14T5EUd((b+{Ctg(v3WP3$v8B(#SBI*Vvedudeu-+&J9P$WK6 zsU@enUX^FoDvcMz0B3!|-W#ABh`l4(uZ06^{%dQ+zBRJ7VptE!S`qQROKZh!$O~Q0 z-DryKrOA+8oZdh5k!ZOB&|{=Us}9f67AtZzyvZ7+MPW^j%l6)0qiku3@SmF1k_G62!tzs>dU)?T z#=`OaLnz*m5Cs8L84*=4q_FkS+ig2mk&b0&5ji5!w9mPBNf8gFcZt#6gWm*M@K#4R zK}yehi`?RzS!@iPusIQx4(0k5k=;rfpp0uVS_Q;(7TrqR@g~T_HClcXcX8#4KArd|UdH^P2kg*o7#CeBI@s+7Jj@gYbR%$i4MS6KE*V5i6 zE@wsJDp@{UhayeKY3LYN`AV756!?LaUrj+g9NEMs_ss5ccCi4`n~bX1nai z;Fa>~f;w;N^qNLg=NW(o(3JJyW-e0N<+;Z4YK1%+xD1ka(=zy_C@uq0#yJk4L5TAo zbv%nV%aNI!fU}eM#BRKc6!AW22_+g+*-(JSVA=189{tI}dfGv8Yz>LKa0{y|q!r~O zY$&V>;iDg-;NS((zW_5*L@41SME090aOUi!@pxK!JVFA>T z9O7JXO;=@nloUDp27u;Z_T&PpiCJ-(>J(LCnU>4E>kD$3*8_gaTwIVwt*AF2wGPEq zp@L0ID!;fNQ7f;ALZhJr0;H#S%y4O=z~ zymX;EYm%ss*HK<<*{wo)O%vw-3D72NnU$3M#6KGOayoxf@sHph68|V+W3#Kaj}7VM zZhG(jWWy*5C3N!a$|HUn{B;S1n;y)r-L}5s`Bit(@?sD*gu75{ z!R;Y7$I7X+Tv|Ds<@|pFbPn@xR7rwQUbq|r>mTycE^Zb2LRk~@e*)+_V9DwSW!K%+ zF)bzfM=YZ%A#;7X%Bld}z|6slj@!6I%N8y@z5KMJ>}s3HG~{n!^S9kYgYQcZ)-BLo zp4+IqZtL_;QA4{daW?KoEOFNN)~4UG4GHA<&tmv4U2&gYOACt565%E_ff`iA4S%7bWx7*^x4rYGM_9Ae+a1Y^WDN%~(Ur zk|IrbjSNy0as@j2zD-0G(mnXFJvG3=Cp$}vv5X?b$EanmjtZqfJQEM$FG7+^KA&m( zyTvS$Oo)?mywqZ5XN^xag?4dq$2arZi+uX;0S^6ABMJ^G9yGDI(Z+_EI!&nf#P$8L zp;!~?mE=vs0FA0flf@07W+>P9c2ly52d?Mm*Nf#;Cq_CAGVtgm*1K zX25GmEGd~uDldZ3)^V;uPV#)-6j?;94h;idoq0cP;O%rwRc*np*RP zV+{veg_VG^1|k0qpka6Ez`bP?Rc|Ro(``xtnr`dkak|C9hi#%B8stkhJ~^`Jf5Sy4`vW&cim*-;ADe3^s zsYhtJNADiGcJcux$l_}{xZ-1VB$)GZSMDs%@X zU;zvtDz-phEKi&eLC0dN+Km|tD3*gi#&QTmGj-Bj?l|z-V)ELljP^wQCF_d_u?aERV&57^BnJ##O`D69@PQW|dMH z-acR8u*?zV3aj0_`N%qIzb8${Npg1%$IcmZ&E?XZzCd1@MXf?*sNVMuPPSK>D+91zp@6SMyH-h96|i9hWs?7 zhx%p6$G_tEBycw+Qm?-W0X6}d=kgy<+kS4vY0by~e$_H9^8&Sx?|hbdH5f0I0G>pHTHzo zwyiDm{P0qs9;c3)c$3Pp=b4Fi?zRQvplm_%JRbLCz5`QH3fagm{H0Ux)SKrR8umh@ zOy&rQz6@LEcR3V_(J*y}+FiHJJi5k{SOIV*wQ#c=mnnw2KtYX6XjoDccc{~DJUZ7w z&Vd3dWFAx@oTxw8vffG+j#az0-kHlP-06lDy4#I46dhHqfQt&-&vj6gt@fdrH&<@q zXt}~QYB!yqc!iTRSYZLXasRIle5Ku8RQPa?gQ9EdbAta|xrK$~3V(G|>%S-u^X5s+ zlN?423AgAfBwn%= z7)7jIcb8cESK}FL4}#fQXf?6+J8l&J{hdy;h`s*~(08whwKt3d*1oI~PIE?WX7D=} z{6+e~koXM|4a~kWbV_FFd`-x8S2SVEJWgV^+=L76iYCmG(jQAr5HI~`7f211(reZE*)^AZttWSZK?|ii)=U^wvSERk-$6 zr}>h0fRh02#~mPwCYzKYMb5ARpnaGjK$T&EoIwO=FJ>rOfMfvp^rt3eScSpxagsKU z51B8C$nMJIR`79(C!cp$qOT{T{}!N~h<>{&LkT&9H$dAl!)#TC*Kec@j{w?=8Gce_ zxCB3!qYOs@nt6vCVI3KE$r;uFlyry3rF3MNCujH>AQ3YZrbdp1&+<|u`@_c~-pHrS z2U3}AhL6QOnY_(p^xw(oD*}{&=r^k}808FFfF@&x8LA99ucZtR0Gfyy2C6cggP;8< z!(o7iVFt4*!!|j?3V?=ShHq3Eevvc812hOTc&RcBfuGAV{TD#pF+(OL{2(Vp0MrH( z(%IOPH*5pd;q=eje)`IvobhVy$JDU{F7ul1A5+C~jOi!Fh) z%s=RNSs0xLzln?Fw)P)JZH=-~TlK81ad_?N`JY7FvG>@{)I6PLKDBcfKz1hb{($YA z<`4V0(#@zGc>bc3 z*O0VG@j2Q)qnQB|LnYCJQTWFcX4%W0OSO#LVmDr#$;DcmNfvAEbl-!f&TgF4K{i98 zfUkKZnehpyQ+Tv$g)#El+l|Gi(@Qi7sU)|Ap-J}yy;so-`WTOJD*3AYbftuN=afqc z@#S=fun<*{U*3R@3j$ii%W#78j(_JCDq8V%?aLsfPA#sMuU?AG{PPzz<~)kzvzj{u z%d_t6?LQ!(`zaK_C$UzaBz-9(VaRlcIAU>^NU*J~PiXQSVIs%w45#Y%QwP+Ku4T$^z4)5;Al2N4wq8OM6}S(n-|sH6Hcb97WJVU@_J?V5}xqNFc1Bz*1YsR`dX&Ooo!%GRi9)KlZE zl2S54d}TL&6j@JgRSR}sPt)>X)HgZZMxvXDO^I+2i=K!MVtsG9BzD0x$FLS>Z1YD8 zmoAM1&g!JtG2J8Bf#R=ej>er-yBp20XxZCQ=cTc(&s)IMlX7!=TeO^)E`QIxmcO@P zROk2Tp}hM!ut4JLYXSQ57Hmi-ylD@R6J`PAhY8y$AyG~k0ZB?<$O&BmDuoGS zD4`8}7GU;2fMPHqh7#(@3Eu+L8xvYmLOD6%Gk|(x!grM5DJQ&r2Ky`~l%|BI@aawo zw*hL02?Z(PqMVQhP#a9hqWkH8^91NS*!$q4^)2oeVHN(A3(WzjB_?d4gsJf9MhT+< zYD|r%gu!w`cYs1MVLTg>S-+m7I&1URj0BfKto! z{{YPaY6yGg{X(qn;e|-QY4^wq#PjJEi>$j5pnTSsc%a%(+tfL`(S0h@fWy?~v-Q># zR%2pb+_xD2Zz1iM^>T4Pt|eDp0ibzu)%{3YBaDNh^yor>^qNj(lQ_HEV z_@(o6C=AS~E?+u7X)71P73yjkq}ddvxaW%-x;&8Re1%ptr1P%@MCa@rq;vWciO%r= zt&r(F=&9msxrx{{CxNxuu4d)f!{{}HGFBl{F5VEJ)pGG@Pqj5+XCisx;G03h^S9i0 z_7;oW;&^UkW+L0*S)ZGHO!04+VaHZ`a=?PF87O`m6&ALGaPTP(=f+MsI zx&-U(!0N3@^?oZODFe_kMAAq7TI@o=ftDE~U4IImLq2jR>E;S8fTC8H3*gH{Rbx?a zi2BbLSm|!S;l=d-0A0dLUyxFWo@1(%$gjhu$Fu9OCnKZ_H$TS9b~?0w%V>H4l!0ib zdN5_9SzLOH2)Y+n!74PBGu8#@CT8r08R@cLZlw4sQhccFw$YLSyo&~P6^ z(mr;RYDxl&4}tez=_XZ#{YX}+W@1>LFaI!@Fec7<+C+NrfH)yMhOk033Xa$EfMF;` z1?HC;%fvIa3u=UI<@_DH>wWdMo;MluMWKccHo|vy<4XL2blki^qPu!#q)yH^l`R

            O_G_btw< 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 c-u=Va$x49#GO+I{BZxql@8(eq1LnQbYEXC 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 @P=lyz#M&c-Ho?CmUddCi7nP+S2o0F&2hk zk%BNhgqm#_8JmB7! zl54y8i{#oiv9Q_{kxbhWr!(b1dWkX1cA5pu=)i2J>6|IynCeJz%QeU+=hrj5^aJjF za%!wEdBD9dd2F$nZ#(sXd(L6qtMb5eKO>6PI&A`xW*c-IE8cEJ3x>SA0-2v$dEkMo zi+j-b-#&z0_B|xwRqeBiyRMHq*kL^DokXrJP=a$KT%*>|b4ZXOGfP{7P=vnp1DUWM3EI2k?_ zQzTpVrOae1Q45}kgDKG4uA<5Ek^6OL-)wb^_i*zRYGlg(x_H(!_f4UTl4e?rr#CvD zQY59eUMOuPPJ!4N;Vj`rDuv5ivAcj$fmDnl#f%urxJzT-0(#e<4n4EDtQZ~(P5iW2 zGT$>`W_m6i80vK57S8_=Oki{#g*U`wSF2o%m=cX9GZRV$r%K@|%fk{SCN~ewbjW49 zkW;!quHt3ikV(?tSYS@HY`c8!xM{om`SGOBh&iJnnG*8Y^ITks63zn6Vk>Z-F zo35!}Ryh{uiAU-f^f@tMQWO$J6 zp~LV->F24VpBA29e{T$DibQ7xjDDE$KrI+T&;i|T%RJ@mjCL`SSUI7I(gNJjEJYqy|OT6 z$ISxP+#9#%-Vs(1${y%8ZGZhhh_odN3Z%70aXj=pX^WIZ?T#3Fk#eRjQX^7l+^qu~ z!klcGnLqM$tCVxdRceGYy=5r?Wtkdr+GWZ)WIXZ`X zH*9RuYe?=`O}$8ciSxpO@D=Uw(^94USA8k|t2<-U#edZbm{3P)j89$IQ==tDSkV&B zRKz$cx=s97{pvJxW3Ml<&Ifk9Q`k{)V~V`QH}x}M#uQ#Wovb9hNW67AS;;v_RvHmM zg#p%{@zEsAiJgiQvFBO2W{|k_-{QozXPXn(r4Y)cI4g}%DMyny2OUi^B26~gYVzUQ zq%UCW#xf^k}{uCh6^%8O<*xIo^X1l**aW!lGbJI|6npp{GV261l}n zwzp$OG^bR@-YH!a>6xo>ZKh6cRj>jj2|aqb2g$Q$&4^Advh>C2nrrGX-)nZI+g|RG zL;%{PlMtMIWvfVZV;9g-Q*IuEIMk(_U{s{L)g1r7RHYXk#S(esO&&i%37A40Tqe8q zXU49CTdbQCpGqi`I5TV2?NY#WWJdh|)|hg5p4(OT3gBlb)1IUe)vBJ@&SD=zjN7SH zH%5-ggK*>L0A^!r>hU(4@L}LaS$~mD-XbsjlYm@TDiLwm=Bo!fgpl$ocJVE8fP7Q&Kqo+RuH7f8Y-7w%UffMVjPjj`%*k@-L0=Xu{Vmjo|c_OtDO`}t@{&Uw#!dEVP|{XVQF zNS*8CHxs3NYzfG94^RFuy9pN;1gEN;qD$rB3CZW`xOL@ zI7<_^yNhyS{heuqSW#TBp5@oVBI4n~)G{o=PZuYd8|NnT&Gw&i#FXCMbfsJ1W4!035e zQ(5AlB@tr?lkn{_)_m7t;}13(D^@rJQE*lA!T*8w&li;93uX=5=HB<~jjv zqVGu1h#U#}US57Fk5?;H=dnUHr9luhS7S;l{pM?aZy#pC6RO=vLPWIo zpx^vs$f|Tktx1iHIqCN{C7N*!HWU=6=_hj!`#KEE@01&7nAu?!3`0Icy6PX_=de{^ zI>*b`_}bqQwr(nncz4hZoDF0pPI&10D$Qr8pDqeEF3_z4oxnB{2=Saw<-GyprcJ5u z_E}Q_JLNV?di)u$js&c!@Zb#5%kIqYwpmlN@j+d)3n)U&2h>G=XT`jhMkE}@nIF$Ggi9U^*Z$esK$gEEs z2LgjA?q}wOmMrw3jJ02x9(RGPA%HGK3R;FPynM7s;w)#A49hU7ypTsL)$fTsk;G?f zNxU~tj-Gi=r4!zhr~Gg_>6hN(L>h=;1R#c=^=lMEzYSxkp;=X%rbOJ*0mWHsXGsXl zEMhRPm|DsBh3p>Vv_T8|MHFXQx`%&HsHC$HrTyM-vJ5`sC6=&Nl7lBiAlJ}@Dv7}X z_QR1g7=Ans@f*D6v#;knBDL{w?N)Z8EE4lw2^;k$Y8MN5G$EoC3K-uB!va-;D*2do zb8p1#oNBq^VRN@|${~??%zaVs;UMwI*AGatNW?laa2)QJki>Ml?c|-U^na&v3amUq zf9&qV_Vk0HE*%iCI=byRBGcvII5>cL(QPM@l7ipI9}5sOYt7g-pCJU3I?FWRyR^)e z>>~Vdqjo1o;DqxhGYxq z5Xk^`*eHT!X>$;&JrMHkGprM=czIHguW#-_fT!i!JDBEB<`T_6t!S=5*`_;-KxgO! z;bYRv^*Fe`gc(Va8_$&K~#6b{#4zCd=Y?3xgy*L+dYSFKBs(;Jj*(v(X0ZV zIynD87kyK+4>aVc&6Np(hFb7V#n>M}llzUwSc6tSz;a~0u=qy(*QMdPUCJtdv$=;^x~%3kQ&ug53oWyvNGl{+NmSUo!(zj>}$(+d_u@CQ43SchCH>S7M8 zB>t`DkU(nYi}UIgpQA5OY2PRXrXz@V(z%Y_SUDI>Xsjc6L|y1*1`~hqTt>Q7Nqa6w zb1u}CZkZd_V=zA*I#51Q8o?M=4kb<2Ic4B#GaimppGd!IwVXZ{fElkyo zA~-ByQuZ?`VeHwB+5yMY$)Uy(JY+uxuCyt=(wmc&9^guMsX2N?&k^GtcEx#)niW&7 zD8y}c^vBj>Xp@*i{Y;^Lp-{g~AypC-lKHFb?yF3Rn%y&?^B~+PPdBk{Kcy}1Mn^n0 zIXN3~Zc8*lopHM@Rnndf4>uyHYGtY&h6l@Acs$=BlVNz~b9KwQ;^L`sRAO>#jwn*~ z7%Rc_sg104)me2oog zcEhpynEwT4_l!D2ut*EK zaB6qz0%F_2B<0P1Ddp^N@Yw-K7d|_%VBlP7A0HQ;;o~FEOCR+WoPi+WY zu7B3&G{e@abILR4kUDDV=bXcQ;L`uc)%C-$wdzds+l4#0@QXdMxjceOIR(#l0@~jp zJR`ursbdh|9kz?|8-Dv@4;!g)TEQ#`gxmR?H1nW3wPxOj5nbm@$VQ{If#@T+NNKgTj`uuIk9>nS+I zCot@?ht=lV9b3*j>teOv{i;+oHaM+*N34eTRYl6lK-}G-bkX~1`+#z!a4)yrWY@?k%?w2>2r=?6kXna2q9tP<`S2T4k|T!^yp-0*GsBV-lC0MW;~ zkw20kq;t=Qz3)JAfV~m%z7_GFig=It&G&Scn4mS)S$ZI;AEWxFD!T;++l#cssF zl>v9PNz)~AL7XiZNl}8%yqev9)6}`$AWC%dxyZmSzgEfJ_6bZ4`xpWj=b%dNw%1ts zjK$}j%LC&gewoN^8H6X4U@jFnI~ z@qKYYTo|_%ibdP7-^O;-4 zzys&#>f8%ttyOLV1^O0fF+wN4-_7jV9rC!dZyNgu!9^(Wq(jk<28H|Z3p^`xF2rs1 zQtTFVgr{qcOxK(Xa3P*h_SESY;zpbt*9GK$xIM0&eWvq_>AQZ@;`30jQoufkqlJU9 zsI-9l&?PU1!JKshCSVvuhI8fRaa}@LMk~b40)U>w(qO{qil>coklob`&&9m+F65Si zjNDFp8JP#i4x^%l0w~W$rGg9DClx!nK#gOJZG62T*@DK*N0+M$hV!Bp%=}v{7rgNc zP_x2>=lSAwN z5-j>tQ?kR!R8q35V_f;Oitm(|R!ZnbeEEdF5f7Y58dOqlhE)HlhDfpdjypLwby36= zV^7%Z3)MCw>kQ{)AFZtlMgE$ZlJjX?mSkqXEK8+lLUy-GzVC)-DFy5qzM19}&*poP zlfH1WW?YwIUpOH4h0^WN1A8LosfgLlS=+xM;@l;_-<_|rx6@T5%6+~@VdM#0fnp>D z-3$G3Vbp96nQup-KkEwD^=607Lt&ucdH)#oZVh`6h7*ke^VLX$tN2#y`c>)i)e)@D z>Jaw+KExX|$9VMwIO9Sf8}K_#v=Z`Nh=9+k2TeWk38YJjjll-diX;RKIF^b zQ~epu{b`VA$aSwRV{c_EzV6j*VdJnfiH$pu&A#c8ZPdYqe&6=xpVZ*9Vk#5FS!IsV z{fek7KPrHd*n3g$L72`$!dzpem%}+^S#g<{Hs!{k*^bRJ(U`G`Q-?|3uxoy?Gv8qj zgsi2`Q0;!2uI#zSf+qMWASFp*)Vh8H?G(VZ6L$gchyH0+K}k4!0}L@9HokeA;5p(( z=DVeVhJxa81;q(hF}-#{JHYNet_uRlh}@PX?h+B=SIv!9?y!itC*(V2JbuKXz=7Lr zQ`|QkoEyUzF%Lw%hr@NT>~K>oE1YPd_P;Ip#Sk7r*FUr`_hl1Lfji#>C`EakgOw(C zr@rb5Sbo^!=uqqn7?Yb*-}PFz!5mlars^`k+e_bN{^b(^7Y-Wx{jb6C1Oe!gXzQfIw`db=k<-422tQWULARK1}qR zja0Zby9q@=Y5O&uLBnAF^!o;kwF};p>lHhTxe6IQPn71`UPOWtQB0 zW^QrD{u8u_Ymm>(Y^8bc8-IpfnVOA9eGCZENu%wXm{9j=%9r{~(|_CNlVnd!wbvtm zB3-9pge7&SJ_nx0m;Kj~LSfp9Gs3k^5$}HX zM%_cwG||+xCv4r}3}kO+R^P#lcy5;Tp-}a}jr)6WuOYB<@}Ld8G*Z{eJh{-ZdStEO zot+^u=_kOi@@~6s2>*aYV@vYB7C7kjeAD$Y2DEa(&({hUyu(%!5Byt4Di8ddMvC2^ z5y>0A%e$U$-%pNISNFvuB}%j3p)U0iBZV_&mm`#jkC2PnBl?y;`m^_@bPs&=8Xowc z#Zlo%)3>-YJn#h@U3!w*Z`|Ktv4d7+0(zEb`TJ|GDLaqVEjWMtW*kuj>^X17wGBVu z{T-V3{*Ijn5?ySgH)bR_0&KS5Jj~%=6|9mew^cF|*^l(bj(qX8F9L!@5CFpesQvBR zcnf!8R=#Gt+qZ>lyTrpeV(t*cCx$usv%sQcbwC3FeLW-&@Rq^i>>Uo z(V_zYuRY>8HxXgzNXod}N_UhtE_c$?d4%?t4(pQdTb;NqyU*(2oC+4LW5Lpbuf)N5 zyPOqswS#kmLr*JW!2rX&F%>3y195pN{>_4?EorWI#QZi+G$UshIAd3#Z{n9UVnCxs zI|ov-BRDgAC7Bsn9C$iZD=CjdwRDgj2FGLFn`Lu6ybQNu8Lrj&?;_?7I=SL-tT#K5 z|1NCqq!DE1znf-_{rWmqdH9q0?|2C3Dgho(7nB}1*izh}1bCc4vbxeDbZf(3 zR!USNRd+0F;)BoF*Z2 zhorybW+eR`Pv1Gnf44{b-W(0tksersQ7iWh2PQ_^@*Sm;@aO6_j!WbmyU;s$kB4j9 zO1DSM8@~RT^XShvqE^d!i&IYgGpH7BQgzy;9AtN)LbB!;xp5y`aYy#U2%%9MMle9uVs%@0C@kM4R3Uir7qiy9!fui(;;3 zFY6%7Le+k-6+~cNuTKnl(_YKWk@V>+a|suS(bUam4h6mS@-*- zOM5%()r4p&tdlG7%yu&bhV6F%vhBTZl2Njm$vF#QoorKIQY7J=K<#G#kR=BFeB%Y^ zY5m5O&RACIrbKH)?$^~MN36+CZGIEQ;&^74XqAnTIiyAUfLPyzd{ej#6Pa~_1+l-? z#y5|U87p^ulFW+gtp4=4#wSURf@8E>_eiPCUf2?GxyNsQUHPDMU>OeaPpSprmzY;c z$z6S!>g_R3Ad7Q-te%M}Tu|nV^AF|5K96JmuJ@g_DXMz08IDVtK|IK}V_wFw_86Vd z9ULm!g1s4L1!(|yK!?8*vG$x3_!#n7to@17jk?9pT-o^MuxhlLRio2cHOl->39&zH zJk+*BxRUB%`)3?tRRhb_Fj2E@A*Bvtzw&ACXfQ}aeu}ss@@_x)=TN4Z)Z(y zf~CTw@AWSoA~F`H=$lw!6=w0TfcDN52q zvMycM5ykxdn(>6~X%t=V`OI&ErGx=-6g{xBkig&cBH(U?ZSiaI^GbCMXR=kBm|n=|{QzQC(B46xIdo?hbE4bZ6sfej3QK~#bSMP%mZJUcZiv3yOs z3bgLTh0BL=0h-C2VH3`CEMDGFF~6Z=VME2DhKi*P70Vjdu^waH3jVp8f3D%5>-gsr z{PQXP`85B0hJSvSfAW4<_apxKJpcR||6I>Mf5Sf;`R4`}a#}*Qn;NFCo?j{g9QAKm zHlCU}|KKHArgoDVSUo=lKgP_tjh;7z=E(>2x1att%jdP|`0T6k_alvGmk(#KF}|0@ z!xKZsXLG8ZSt>sJ4_Z1ruB5{rB^}ymA1x!5S^if_IuvU>Nr(SWNrxrcP5h~mY1a6L zk%Qy29jWoz?`MryJuy{JlHJxW1Aem+vLTy1&AkZEZs!lK7(MMNA`3hnp0zCydc!hw{$J;I}_%;a;KM?WMfs?(--7f&x3^{!-Kv$W~UO z_DlwB7PCNkiEC>tWJS+_h7WNM4C#xn^BoDN{wg1r{}QS_5HSxR1&MXPtVJ8Xrc>6U za*)SbWc%I+tVI$NzxqG73I{%D70QHE*sHK#twI*+-t2qjT(81`bG!=QO6gspEUUEM z6($#>qfqy*P_Ms?iRLvpAZu`*UW4l#8Poc~YjCVb$y0}8Hzma!w+fvsMfb+rtIwle z>bzDSTgY*wZ4h3CZ}BSpI^;zL)39!hvnp-u3;B*)tz1TzyF9Tz-w{e|2_-tUQx5XE zXrG){Y(J@pL%^IXPW zCM2V@va?Q3mIB1F#ZA9)W%C2G7SHsX^~zaiw7BP2@8ne;@%viU4!w?te3@iO{S@!e z>)-)H)88$g^s_cdkpUfNob=K``loJx-EWhT(=AN54G_zoR6aUbKL@!WO^l%I+@T@? zh_TXR^1C^&69z?{GwN|;qBj#RgN@EuS)|0?-!_Wao4_DXK5+Zu3K}F1DjH;tQL-Zz z!q{@v*o^93k|nrU9$-X*?1L^MGZcJlsyi~q1;?5_s$Lz)@D`8kk66-HyHopYlL%CU zz?zMWf_~qF(yQ9VpRaFRWS}P^)S)LYs%Qt~?n1-t0N!!mREe7oqMgg7uuXUBB6~Lr zE`0UN)X>4$Z`eZ{-9&iDVSM*Jru@H`HYPSsW^5o$5f)Z2V)+j~YZqzp5B{RB#Fn9h z7po3Jh~vdD_A-|IE{n}X)eu&5*;e7YPDyi~i&SBWjvk>t(n&ONK3-(Yd>7d=-(~5Z z*J^DJsLa7J)!PE@EmF!>bJ{j+=RLfozhd{cfO|W(Os&f)ti`BCZ*NWQty1I`+A2xC zj3wy1aBviKnbf6+lAa37FR8G?DTqcmwgSGx#@gx>_Z<>Z&z<*Wn~W6?;c?xv;@QLse~BM%H&)#36q);B&0bg0gWfu3l7X|hH{jbZ7RQAU zeI{!5I8eOQ=8e$-mW9LC)PA-pmL6bZXBb{NBqN2rz0uk&rSC+&&5#$10@fYQNbNwt z`pTTCR_>-WJjH6acK3{wxHbI57CLa6{l4bK4`R94zJe}zw{+tjzz#0tbaDCgbH@^- z&gC3$P4|DfbbCX=FX7$X8csA}ZA5*Y%b&3QT#8tXV=I`lEz>aJcEv-cQ3cpwhC!m0 zpV)4uXuMf>>|Z&{+!KryyOw^2Jxf-h1^Ka>!cwll(MszeHJx z%eAfVZco!7Q+ByFVKTh{9=u)bpqN&QeAna|$Vl4@2eNm+0`r@hV zO)#l&s`4aA>Wm6mXO!+RFqYRz*eZB54c`=CcL2r1B@dku4E0zJ5n3gT$PBF!(tDzu zp~^YAn462ab+M%8==%}#`r?pij~2-k7h#Ia!nG}|LTXVeB%a?u_I@pHR4N^kG-6L_ z594`&knVsSE#(ZGDigua^?Z7g^XbW)&ybnZbP?hm5NWT2^fUbD?m*(i&?B!s%o>+B z!{%Orj~JuXEqH+}fwBPZ5{U0Rx}32=!2TwcEPEZPN)~;aqWRRGLJ{-~OBx$saEE%! znDLTEU45?bJcmYE6>QaT?PWTiOKglzHj#-nY>@qsR!-LY7{dlqte77{ zP6dEtj|~_GE9OyKN~PO1OJKenL)stZeTMmwW5Ux=QIF}`AaC+(Pnw0+Bf=_z%(VqP zqzeujTC%P}DN>kLmy%FXSBiit1v71iMG~P7`Sd=PPY-LfFrLqlHN{qenXN3JV)`(T z=ANO9ncGv1nH+ag;2heR=}4QuOoO_F&htU=4Ypsd`61#(rm%3D_mA{P)N=KP>e@~- zW-y(wA;gBf6)fEp@tz8rJLxhxMVzF#oyZRJTlYATGGxNlS~LUW^QtjrBMY0;GWGWTe@@5QKJ44PrL{*K|qnpBo)BqsGlu3Tz z>D-M%j;ds;axJz{6fU#}t;C{DA+oJ&z6xRMm`CIOF zd=R$ld^p6)!3$M5&SC}Y%1Y~oB9dxuuyI{WQ*d3Ahq&zzK7#$PKMWqy9e2TgHycfJ zPGPVyo6R>U4Dx$vp(6p_ zZoep0pyz;6rLFhsUJs5&V8`bVN7{;T-5buu-{U1TQCoE(AFoz7{xh=Jh$L8GaW!isf8?e7k-`7`S=f6EUh(`-*?R>~f4cup8e}<4QJ`%YE|&;!HS}Q1IrBCT z_vhIvxb;WbicNbW`~A_u7G*1I+CABrw-w4QlZf;=d})P=q3a`tt`7;XXCsjH6FSd> z4u)VWruZVOu7Gk2quvb=3CjGxlIREGuKnigtROIEYzmrhi*CUCX1MmnaBXYQ+>Bl2 zF=jMI8l)SDfgs_aRRuMWL}@nry&D7OgyKXa!Wn1+CLId;b{ke*mZ%d9zuA%95d;oT z8~f|O;uz$w|9yw}>svP$W;*P<*kM1#K3$>W8MXo33m*78*k8Xw;u&t*p89HMfP@3^ z2prFl{%)7}>sLrTL;AZN^j$VSNb}c+-Y4Q~d1xH#)>;R3qlv0%hR=Ru!0e`i%lGKn z3(~1*ty1v|!xcd~H9?LKCdhZ*k09ysRiMXSzDcPgh}hU~(*u}l+frX0Rq+c%k6s$y z=G1quCh4&^^Sk{Lzi?A#{6Y#XGP(d-G$~rNGcA~UiXJyN6cqUrt-*%eVj!?>a3w<+ ze6Jd7f2nRoEa?ESmREjR15LIJa(2O_}rhAI3%7=wzCR?Hgifz+nAL8to16PISwz{={$`M5m247Y!FV)8SIb${8(UzO5um zWV_^}>Lq^gL~#i}*lw)YG3v|5&JYOQ`9H zD{=n%KX_<_jUm9g`mOTp*j*8e&g57gqFRdV=FFTKBhN!x&|t%bbP@#`?$p$5NkNt? z3HV-F9t@#^h_7+ch_Kn7IKPHk5MkEAHLYQ)A`8%OR!SBiB=#iM2;^s!xoSGw;V|HK z!F&89>{7@N8Z=)Ecza=+LfX(ULo0@APx%uY*^S^C)SBpGgVnlh+~z&F zE50S6&68mIn1ooHnm6lC(f+nKpnOB*+3Yw$d|8*^H)gFGQQFG1y*IgSiF&y|yCb-E}}Ek zPEnL>5V<v% z%?BFRzj;P)S>8YO2aL6kDIo#-DC#|gh30(+YpZr!AUhVe3R+pidvVx=u3{txLKFF! z6!IO%h-ebW^H{!&K@dTaau0x=G6ecLzY&w=O;2Km@^XHHE_7Lz*r&MIzq4!R(mcPehjU(#diG zYZMw;X~Ron5REWm(8*Yt!;<|+pp{UGuhSJgxJYev@kAO1>{vLAFqX&9V;e$5#=;I) zJb+FNOXm1E4TmwuX*4t@;Fy|+g&)q%PZ%%D536!p-yh`K<=K3mXY)BVk(fdz71dsHHWJD38T+s#p_e|a zf;e~i_-E4~PGp_sStof;-U~PNc?8#4;kQ-<8p`^1*zx>ZbUc6GrV|R`CaKR&;rGq` zh=%S@XZS^*d%#$|8KKJijWx|Wl=+7r!0$h%`Ta*S`Td28-`A1Pvwb^0fY(>L+WCst zUqrnAuWeqRczh^qOM>PWX7rJ41QP4XfR}S+dBU}Auop@XB31!d2U=V^L)JoPG<$c{ zn$XH&%!>Orw|F;`1dwQ=h367^7HW`5p9n(l*P!_SDBYrmt=y7`*&6b_Ydjv~joF5n zMa}L0fFB(WTfxE*?NH)&L&WXUl8RWaZ)N(YegOZ!;~eq-Rp58`D}Fa5{C_q0|2B!) zJq!QeqIllDRFHUHS8-AV=rXLwln4+cnslYmq-QWqzReQA9?&G>-JK4z{I&mm{{L0x z|5Ir3{``MiQWheb&{+Z_x;wEE2o1SZ-A0^4`L1G^i0d{$6!682wf~tS2LSCVRRoxC zivWut0?>+2ZU=}9>03gifTetCz6dGcURw&7pOgYVpC$$Hhe;`b|Frr4;mr6WL!{#P z3qxk!_Y-3r+5ZHm-?}f)b6S%VMzA?urw0DN=&l)jo-CxD=QsD!Ny7TH3*;=(TIRY9 z3;i{-M2GNOWac|#toeCLW&J(I_I?td_#Brd! zuaufE*kC|5>&?@uIN!SueTq2x#U<4~M&&Xj-V*vg1#$?~RuHJ>i;Eh+Y)2foUzvu8rP zQSx5ky49enQNI{wx25x(0%Hl7h8f$<9n4byEAIcgMvrEj!&Yv4z-&}(v$s2ty>~A3 z^`GxoC`Ifq0KAdzm`lvSo_`RW&*}|Byu0juK69VtGng~OFlVl+-@cr#^_D>Pe%LKh zo%ktv#?dzi`J0{m%~sa_ZLZ(`(Eho`f)>#L!Vjv3!HwWPwS7r0?%HO6ifoCEpjVvb zb`$eKf|nEU9bO)$Nh)o`JPy(+i>g@%+D7b%51no?V+{tp2mFZ^YRo9vp{V^db6Z=4 z*wp1LY;@4PGnL?}^lm$M^!~D2@P_Lm zC&|E)_0(7sV>Ket?=BB#lqo>Y9aq4*BcY7%L2GOsvY*lj?(2tn=O`Um)X$d&7?HMW zCvpf6L8=GhdLT?Pl!NVM$g-bF7Hw5U+s;<4`$JYstYnccDy|%Wt|l5hc#Ab90WCa` zDVk`lKnu?fc%3p+RlD)m_4HR&=b$+Q(WO$VYFRr`miWYnzCu;{&26X^wSoVIZLpJy z(`Cq2O4Xf4Nj$U8 zY0XuBpIzQ$N9o%{ww3r3eDTB>hxzb2_9w{7)Tc+l(`zR5PAH5V9OXaQserS~&D2f> zd2Z!Y;Bq_ClI$_k75oa03|Arkdxy&jz`>g^#{i`tM?s+u;`qgI@hg}pK^#AzKYOR7 z0{ja;0Q?JlxPpt)f;dW?LnqmLKC|D@NilAsxESEpf`Mf{pHSCKjnm~Z?q}lk$H5m$ zKZr|Yq2If5om0hh%;pG=3L90ioSlyEvw-8jH(YxD9TPdAqlk^v3o@J#+Sv(V z?V2H+5R|X{9u-oZ>4Y%I17YVm@RbL$>A**DL7;<^J>|Fh8I_{)O-Y`2jvVE=H|Nez z{=mRFbd%qqybzR^`~vNTU^(mw6)yzkCEpfB3cA5w2&s`8JI_g^#txn8RYIzDpk^q6 zoDQBVPBy?PzKhW;57F-tvpZrQfa;OWcb4m|($^vH7qSP~>m(CIyoZA3X;Sn)&E6m!B z>}PJQyiA-9jxit0j-Eu5er6$%fe;y zNag-g9thQdUJ!W5SRN(=E(^*l|95L_mxT_VDS-P{eeEe8V)Y-=lYniY|6c=JqVO%d zja3u)-rvF`MA)=~LvJ!xUOtF)L>Z4JT_)9ttbY^=9X3|JD!-jpAnC?cF=Hi=I0u5p z%w~m%-a0hN?pi!Ojbz9z4oHQqu_-pmaz_eL=p-VNT`G?-(x8wE*sRq6Ag$cQ^x6V? zb%GI1qt`B`7cT0mwS(!kc?f#7b1t-F>EP__)Unau;QCRrLPocD}YtV-8= z5U`wm4>=^~fB-m;}$#qt8&m%RZ?2{Z{&_r-)YBu?Bro~ zyvs0l%*TEnZad}!hv3*idgk6xV&ktwBZ>6AzmY7lYu74=cie&j1*F5i?nUhDK9POh z%h}gmxboS|tS@A37VbA_v&7;3XG%o-nQ{V=D^hy^DgziN7h`9Tb#cvstc)j}L6X<) zV0+dp{bRH}3zsw7vl2IaTidhR`^O~TD5&2G(t7p~B zY=Ql0AWMYUSJ`V?_#u72v-+z|LtFkXOY~rkS`YRdJs=JW!yIIMk`5ZH8nT2oJz6$i z$`2$A9(MjG*vSU6uD}fW8=U@ztlpDnAmRqhUY2r~4=2juoFZZOp%Pfe%gjB{c}+As z!Hbn3V=2sSQFBA@LqAO<`hEymhl8*eCK|KbLbdIorX$&j^SAHxa7M^7*m>!`>F|3y zLe>g3ha!{{_lUHRR2MXu<>nqvA<53&y`P}U&0g9F*W+C%00$W=8?b5USImtnJ@k(h*r}QTy_)Q)qKQ8I#u!?wEpUh` z4w)R*T)%zMjUf`JEZ4<2adr}meSl7!?Ic{aA+L+pNAVe0)x_`^mF!SW=fDz>gV8zo#fss-nrKg@e((K43O ztQk($GOTy=3Ax}@uoNfYf+Au7ZpV}6~ z=HbqU1IaIwu2|aTibyL?GYk^zNu1xiowXlNoYDL4>u2=7OQCMwBd^modIZ<_S>mM;r5YghlNK9>+R62ewm8bc57Du z(<)xONLc;CA>y^M!R&Z#Pa3OVn8E5drYaYb-Nx?6IVfOW;?u_HT^j%EikYvC;j;lt zR3+2qGjN=Q$rv*dc0TRjqESER&<>Csz-h7>7@s783LDUiWq?Z-JfZ--CIZk4DsWDs z{XlvW?Y+*kCDBen_3B~>TFNKCI!rc4Xwye#~J{u*Ualqlt_FMUnBnLLZFprBDxt#P>>r_nQ1c z_+F7(!C48>!EPQ71K(?9mdd)Q@V$WN%)SxUG&gm;fQ6Xc6O8M)i%Q`lpcNXW^Pkpd za%Cc&c3lI1IChoB|9{{0DZq2I3eUDaM+~_>-RbM|*hhn&)0kg71oP{N{$ zED=)24I~l2)H@Y(>QvG=v<*o#GPgn_i*agg*px}GRQsh=wD-}kAlT>)!T+M)Bi=J~ z%p-gf!AZ5$$>Ra*OU?*P@5DpWNW=v1%nZQJ#QWNQ7QC--D!i{r!22rV>pTs(szqX@ zx$;8i+3>!YtY^df^80qHK=>jK)GdoWs<%J}-dE9Jysxr>q4B;>X5xMMeVq#Lt4Q#^ z%Fc%ORWuadSJ}{bU%xG|MKVz~Y-6GoiKscB@xDUJNC6IKzm4|=Z~H&$G+>?R-DGOA zgPMk~(AN8JF5M1y`+{$&1wb=&-GB!6Dz<^WK4C*;eU%kWiN#1HjvNiB=E#y4?%DQq z>=z*M#fpT8j4lvDa~So7v1*X}wgDUSD}&VXfdF=guf5;|$moSsUBRhFAF zjRO)UE?{LNq{e{^urjzk3?L^$lZO3jU`Gg&ITL(%9`kh>Yk#1mOy(-r@O8q1v0RPS>*!wuWv_NCadN3!1s?pPTXD#9-Mmq9{%%RW zqxZ;q56dS@m#}=2*GT_TXEq(7alkrB!hyM($J12g+XtP95!naZTd!~b^7H*|!-N4= z*>3wTfGWP>(tvp?;5`BB>oYvKXpb@D^=NIEKhYMhZKI!Ha%X1=lUtFcpqP=b zK|iM>8yx*C!AlI|-gQQPa2_pVw~=4ZXG4Cph<<%ael4S4pO;@N0=|>R<9~$5A&G3y z(psHnP1wX1ner?FEXg@ zwGQ?8@@e!qTKjIOAtSPVne8|6`i>dQ9j&8ncpgh1!?BPA?p?=JJjXh`LGOvS`Wep<`kT1tB4rE zM%H;#2g*WF?^Hq?Qniy;IoDPpJ*IA8eNBI{LZb0K!PUg~p`#>@WWm~9yfkD4_rd&v z6~>Eo@oMIg@;R#=4jQ3J74ZOoN%ut8p=Dlf53cLGUek6S_h()TZG%r~n%wym*8(o9 z6O`>1%C2}3tMe?xUBfSRRnO|G9;6Lc9eoD1JoDjbyW&M&_@Jm~=6Y^THF4*9rSjg% z?LC!jZ^etx>z;w)^!f>YB4n(NK94@xab(kZkIsBv6R=SeFk}<3B$a^eOhD|~2W9b; zp(dKgsu%GKLXDAOb`foF`g1>2*($v(=DM3hII9B6f0ov51q|WnxgU%n7o#7W1MKff zMXDm4X}hwQzmz=ZRjq*bF{<%RYuYz&GCCIxeQv51jyoT5-7sOj^_-GYF}*>Mi_$RsT2@S=^1|Ywb@@B@&z^5vL4iN%Ul? zEQv)~Dof(TEQL5zo+Yf&vwU?2@zB0_^;KLVmowhr`o;@f=d6r}kq*~>ELW2D^asgFf_Tgx?M$Le#QmX^(|w~ zI6kD|4vOfFk**X4`XE2l*RqqEY4!|2(j99`0y;%3avP53(DDg7$w=wzVs>C&u>?B5 zrs!0&x4Y<2`13az`G`ol>seE zIKekP%k2e>AGZX}V*zguwDa?zc%N;|I1sHpZAG2o+EaA%`nSb{=2i{}g{MHn3KgZd zC*n&ORu`jv9!hs;{O8?`2TqTY7{Rx~?Y_lE0M%M}kdy^%%BX^Q3g8Pw{xSOvet z6*CX3oamMqFvd64HM#g1ud{N1qf~3xs@o9vo-3d7A^-tjnIT9l3}SO*%l;wLOINQuB&#_T~L%+y&En~qP4j)!Dk2&j00)IzD*B(F;u%T0g$r=Jw&`6 zu#tqUf{jew+703CT~W)`jLbbv*}d$(1z{F!`9`?Qmozh7HlqU}b|CWBM=$=USARJ8qV@34a=yMR`S*ojBfyPB z*8`QQEl}(p398U95aAv4Z;^h0O9&5OtHHmaZ232$3RdWXvt1wuz>4UPr8)Q`_;6cr z9purr;1gU;@F}h(`0Q~0=SN&e@OgRI=;nVm$iwy={%7w9{^y`P?2(84^1&bFVLXR* zKBJb86rBK{EA<}}0{`>&F|;&Y#cWOV82Jxl(!jltfS12osr862q&GdhiUZ8ztnSxu z%IQs9eFKJRwL-BcTGAVjQ@(-Fv${yXSx9eSamP1cWml^V_R-b!qMSbof*)O7p`JfO z&nx+ZAVjg%^VIY8^n9U|hZME?VfDP5p0Aej5b#z%rJncF^Jk=dKb}9Yo|D-0@Ou6| ze>GGWv2mf=CORPD7QJvAQOM)kik@#J3aw~w7fEhSyDVbjXFOmM647ih2N|BEso7HRY0 zY6S>g;#3yL`_u8C=bd}}=bD;y{O8{ch5y_=hApDtY&6iQjRWoX)^lzk?>A>VQ<5~3 z2){`nqEi8(VK)>&Ba*G7=BaRP9J0PZL$mMJ$iK^Xz~sVSXUj9(3ioj@Eu0|c^#N>xf+0v?kp*ztL0fyFKM}LyTjUM1tPQMIcQ#=%l4rTK$ z`)}C1?b-VPqhgBDyHy(%?NxcC4;TxBjow#(6r;DjE>p~aZk;|ocJ0tsMR$f(afJK* z>PsmjmhK2dn%Bi3=88S z@q>l&dn{wAjdjF6lWAe(cj*R3e;QV_y+V&MG|Rula=3f60I_KzR_-BI4!&ALoLGXj zf?YMRFdirI7*~J9`%bvFIaqpNnpJQ{14xIwZv?D|=5W?N1rg2mZZ-(o34r{@l}#Du z#xL`F$W`Y3-3%ZMz$#`k5Py)1E;vQQRNb!NnGuk%%~<(WWpaFOHedO#aNLOBnAL-p z`i#ezEwBGCra7w<>l+u}OOxLB1GO6Ej2w;gZ(OVnGkzs6##|=m=mBjXQhCD0>9qr2 z)4u6qSKMYJF?X}M@j7|j+&2m7h2j~Fu)pUeQoTT3&)g%nRIZ+ulJKk8!a(vdyG-CSv+j38AxE-q4JLYWJsS6JfX#V&d4pn35lxB8&Tp|5ibv}fta z0gViHfz&mS3Yd&U_4^cg;ngfz85*UtW4W`%SeP~#^&$HIcL6Hg|=<(fXZIaOF~>;_tF1H%m7;>4?=^`B-Y44 zhBdOqSi5RSkmo-U-uX8f@XiX>xlD77kaO7+5BA9}8{T*DVFN6}yOtZy7Wuwy>qD_W?M zY6I`(S%=EP(ikweO9YRdq!aJ_vvfY~9{`C25j@{=iN7qPSu3D1@V2X&nO#J(&N!0! zLojU4cPYQVS{FOaf?u}veXMv)L2J1YWyEP?uCd^)xyHhG9FHWV@b52`!Z+)}V^Da7 zc<`k8^W9heMgPQ zzs@jO8~nz!4M4+vd{wpxAI~@htcK$h8zfUz&>RSO`@^+wgc2M5)--2B1S+gtMhHus zU-kbyU}K(RA%e(XkvRV*dQ`eSTDvo7)i^_De-I!U@TT`8mhn;O59)4M`s^4-ma*pd z4rppxZ?$swL@d|JDVFO~q1yJaQJh7>6(`h7d zZ}B#Tty?{j+Qz9??zYm#x$6v%zdvM!i|U$PZyC!E%{7j<)4y$Vjk4>S<{ESN%{BgU z2R)$s@sZpf0^mRN~LS!9@b_X@s;93g>S18d$<(Bn8 zxLnIpA5a?@_#Y+_ke+Ub}92PRWZfS5`8S=gN;B`Qrt_WLqy2IJTBS|EU;2m5ycJ1QP zZ7$@2p^sdiP(v2_jIL9^j|j+wDeF93*XBZ^ZQxw_-ZR!tVL0*#7U*-|2QWov;{5OO zFDp2BfL@g|P=(0I9MEp6onXpN&`6LW8|6=(3v}8p45>_u&`r)xJzrF#WxCO;QX18$ z64IjI+z>PMD+M>n$2p*|V+~@=cvPRSb_41DAC1ZQ#_S>R0tE<5^2@C#W*OW(0n8@o zX2NDKCbd%hJ|Z-t5DH?)<7h3TqqT&mHCUfW#zL|@Kg(YufP+8dSjaubn*VUiSz>3W zTIW`Zj8$$4q$qbP6~_{{0&~BYT}0??okPF$Ucsu1IGtYcK*O@)2?5{9<;4Ij7Kaa| zxKJ&m_5%la5exrqIKy#aF?{lOnX)*}`$bhz`+Es<>`|%;EN8mBZ}{o-d}u0EkmCxS z%4&^hbYVnaCrXP0Ap|)lSVMvAR<92j`Ey`5AnyMJAD;CR1Q+a$np=s(@;zIL_&`P{#DbeXIE_CBEd60l`wPW=VjtjH~eh3da7< z59Z{q6fHm+@UkwSbeGiL*~cZ%#gVjxH|FG6!vn4LSI({Pyl+_CvVSp zgsnROQJ(i@`aNV7oHUow5~^!C!@dd6@CCP>-48&3us0SoUt#qQL(fl)TDb?p>|_o= zN$;VcHQ5>Vz7+*l@Bzjb_{<9m$#%kc363NAVKM^^N5&)Q_-$fp+vf(2tD5MSM!HVw zPb)u%+ueTqi#g*3Wd#Ly2B@Il*KX8rS0x|tyr2s%8t*}wGgPVHYCHuk!JtvYWk{mzoa4qH0eshXt97G=Y0gX;UO=uNBkKxz9o> z7mDXz!0xZJHV&wOMpg16`Il*)r-!o*ghv%nZ{&RKR+<%Tw47zP<`1HKz__aCzAq_4 z(TvU7Z9H~>3AIZRY9-$$kli|n=tUJm^oh4-5S_%gt@n-hb3`MuA)@BpOD@9m{v~6u zS_hVl!arTcs?BnACR(O6xW4W;EnbwHjQU^8oO}T^pEDlTzZ;&Xc8uw-^!2M*VU0uX z1x%8@FEI(Vj!{Td4LOeK#8dLrG&Lo+>M3#A(=ka+$091zcU6K}`h-#c1=v8T+XKeR z8Td5-#F&*4{7T*5ZLIXGUr!h-uf)_!`j@z%Hc z3thb9Sm<&|jG^a-_0%V=_pK6L+PF9p{X`{sFv)J!qvPzCIvP4QPEw4`I*yz0$8`yH zc-|Jb-HAshb!-RNKuRa=Yt$Ab+>1fL@o0y&J_cPCSd^S`s8B0(4G$I;3ATO~az(a8 zre3DK5_Y+Itxd`oxe{lM@l z{WyD`iO^LEe;$=0H_`0pqm;_GuqBVLg2$*-!1s!=HhdCn81WJT6F0iXM_I(e>3kMW zzpI7Qr&Z?2k|&f6p+sN6C2}RRUx<=hdlW+^H@n>QVALimZ(0e})VV0iNNjC-SBtH` zd^ah!Cb@>#T|kiUL(k6`6Izd9W>Usm1U^NDUoIvA@fl$k5K&6!4blomTOjP%LozT zLr$GLbcEutenP+W7N@4EIJSI(=BW@9nzS*Yg8o5W14C89ywwIUQWLr06&L>^g^^;s z2z9$lNLZ3zQfVsWj%O3j&9}e{F&?hnD%X4vE}sGIEV&5G)Ct3y3%iw_r=k~7UY08! zHTS@XgADDv!`|Hyb6>=JIA|MGviR0uHpgKbRM@akUBRkrC>J?qi@i~yq3YYm%oS~w zNy=)1D%c>xoK_@DDq)ibsZ=i4fW!%luP*!tqBOfkW52R%0X#px)Z@0$tk z3}H*snwzg5lu))5FkL&8|1l?@&}k=>2N%}=F>MbLvZ<3H^VJ=H+T^4c)O|^m;lX!jPQi6mR|K@ zalLLl_Fr7_kEG&%V6Ks_if-NmSjj{Txcyagod;tU#^JFa?1lSd>|$IsG2|YrE{0vF zW*=YgHFCXQ{^U*E!)qSA2|e7|R|R}CP2+y1aewSuNqoVNlxyUyM&{j!*!`NyDb(G= z)WughL{@}Rbuvl&HA$K8^BPAF>cWOnxa=K?&h5w4_a5Br2yLm^$W9b2(^ z$rbpgW67r=adxsB>BrD$2L!S}hhs^eWEXKuBVb6I{0*+JCii85IyspA>g;8+!BjOI zS%B5FJ$X3Hd_}mZyrRMNYLh@jm(AdgR10$w+`^nQy{zlkEzsZKBHv4GVfq-xpq$_2P159XFOvt>>Z(( zof?doqPya{fF6wP9?=mWJeWC&xXe>LW1g7Xe=n_tGtxpLt_$dSvN`_u(mDRTL;ie; zRHN;4)DK*sCI-icW9M6PHHLkgjkQ;v(5&mZ=UTN*g@H?;6J#zGz#z^4*%tu~Zr#M6AKEc)wgw1#|{EIj4c4M_0c)V{KYaH3)?YfWw0xCEF>}Zx^T=!-1 zd8o*MkQ;2MuXA&$%m6rkuw<%!m_Zwepsc&2~C8Qz>8}jiRcOV}tqUx;%%vuHe9?z_@&r!;P+!4b9iJJ2oL^eW?(bfki34rCwqa|ZFH~}zfZGJ|`Mxao$d{fmLyBYzm_gzmHIqPR;Hv4%7 zxdHlUX1f3)r8I!JG%1T~p(FNL*vr!z+i{l0fxr3>{;&BD694>@Z-RdYOKJYo(sRH+cWC~3!`b-f?`Zz{sZ9QPRVM$u zB%Oc$`~MyOdF|8h&p!*2-#3?@3;y}Bt3Q~3-uhSm`Tytq^VYvW{&~?~`RD&D{PUte zOa6IlD*t@9*XEyZ_5Nx6vyJxm5%^~g41Qn!d2^SOd{4AZlXz0%7>dua^J3CtH8r)gMKJPdy z`+OAa^XmU~_PN_;pIhIbecr0Gsl5PDgOqG)SE(4B{9gfSz_;0mZZkLcjrKbob}&w^ zej2CKMw^K^-saA`;8BkLhiXrT!E^Tp%x$R*H{Q)s?&06!yvQewHBSx~KAV|VVqW(; zB;gk2g9U0bjS-PF#Jr?WOPAv;5j% zDRKD@oo$4T0_gf)#mWnZt_GPT3|M;R)`P*r$wvSDJ5#N5pn$3Jz zvn>>~^73s47e>#ff&&w-D{Afv3EnrOL*sfDNaZN~uku||cjtps@_aFFl)Q{TmyMK6 z%YLN$y;P8A{xHDlv8p%f{80f$OlHjc;t_JLdaeVi9nSTU@@jKTq16+#|Jo37X#ulkQZ1eseH}|x2hdE)42LY%(Q)|`Y%08{mfPA20Xd}kKKUh zPjA4ZfXNsTXD9Pis=fp20=8=rKI=Y~0BCw2;q$3O*sG1e#Aax3nnL3Hv*95+0sP@a zOc(L<*E^E4b;(e(HCfX$r8n?dJ8N%{-3P#XwL6f6$G67-d_aT0c>FcZ`8V6xOE+XO zz%x9nSu|#ZDq{bvX&&O~ONh4uX!pda*7YSQ1~4Xi9m?*FWcNg@NfW2hi?G>*DwFt2 z0hN0%WEDKB)+db?F0-CVSL^X!_aVl6S=xBdI#%Ha;8g2phmAR-uoISziZec=XOV%O z@CTm%vrqNN_(yJx#g<}td0jtBnwn%JTRQ8m82M2fa>}6GJSevwl>5UB%KecC<;EhH zwR{u1LCSRky-T+vdHP3Gs8`sx&3GJO%i-F_h<7tF;1T?H9O({e#q17Sw>bmZ*q9Sa zQkQ$l2TVT*<@)f;J%w1{NqF^}_H6@Jqlj6JiOg!0i;I95s@Z2C)sX-fj##ZfXXj+D zIFV!^^yQT1?|i4kk3GeQc+PhhC^)AT;(Cl2Kc^j0=3rd?H>oLvmqg9Iq1spB2OU>_ z&}Hz04uOYA29+sqlJ9_#ecf1nfa6sEV5~tzE4YMir$QC}WwzoD{!<0N_Ba)H@XhSZ zyfx<~!*CzYmZ-*wq54h6iuje%UxF_51Y*sK1HSi``$QWjUeVCWNlCQU z&BI+I!!F(0yFG`&f}UdM@tT5Iu=ySxRV4YIA*RH8DB^7jW_PFOdj<=AUdRfOBwGoT zde?>U>!-&xoK)S_HIL3U zt~~xg)*?6kd+34T@W(uk(4!jongaf`<`^^!Ve1xWD6x?)I5{@>i=arFJdPSnZ2v4hOdPHP7l8d*-s$Jk-*JmQ6s!0i4{ z(a)S67w0?f9~(0B{;NLeK4YizscUp)damhsR~%L)>S$Wc0U3SBO|_JNjU!^?VLq@n zbL@J+Y(n;_*@(@kq+iOD$+aHYfNEyV6sy7cqm|VlceDh#hE!~ZM|P#k>I!9m(&WTF%<2fN8!Z^5ij(>74>f;Vw!@K3Ns9i6V@-(~gFSEv zDdl2!zyVd^wCxTsh){1M<`w6y7$cFkk~tAamcuDlh<-<^^G>(6N%V;Ep^*m& zw&-WGLtDhVC*<7|@wP?GeNpcr=HC!G;^RFyWaLP7R?-x}kt0SWIPD`)RP=$jCjOl^^UZtkwMYA9<5r`VI%GV0gUFT5j$pA zXA*^`)M4viS*yw_{i7;iMCnztl6qB#=vDbpeBBQ>div#Mt-x%Nppm_2I1&~#){(v- zK5O2Og?#%A>tW`vT6;1ZTi6(&)!ON~L6g>&$!WQ2T*}qIat|%>ldR0A;?q4SQQ_t$ zZV?6bWQn_(ENN_%!kZpOP!^P)oRPY9a(WsYX$cWJ$yV&hqx4oh@~tPW6_3o*WEJzH z<9jBjXSW%u6+1C)dMkzUZDCp~D%I=cj8v~uGQAaT1Ue}TVHPe6%r~1AQ|I>(&o3l; zn$E*CotRfTTD>iLLM5zG8G`hLj%5;#^~6fizoa3kP`%WKphDXal(Yl9s8{JJW<|aZ zCHq9W--2d6C(_xDIFy_Mj$63l_4ANo0!fSMuH;ZPR=#|Eu>O3b@z@)z)#hY72+Cb8 z*M4;;T*<4uV0SsB0Cpv74kFL#C4$PkdV=5rf)b3fH%LWsULP=4{wQ08j4NlCm(bYD z#$&H=V@E`V&fX9z4mcT>)YZ!&IvX4c17Hk#)4}$C>Q3K6iKayaIepUA!|@P3s*K8$ z!hKh0<<(rKa(~}vMUnm@>pu@mq8kL3e4MlFwDw)B^y>!d?dX+Hdt*1Ett)i!5w*w> z7znuFr6hqF)%;kkB_ufAg#@QMOdaD?0VbUY=V3SG=iG{|MKni%EB15jcNGWfG^+%$ zt(+8gWwnIhgM_V2!bYau;=7ZfMqL~Tf!ax``XVAlmfXw9zF&8@3WucK6McdDs<$iH>pG zIi%dE_wz(__FbPc5!D@HZS0E2ChLjdSPG8tk@tGileWe#u{C;ly3q`S&DR{%k?VN} zJt}fNui29?YmdVzy5bTA6;sl8pCVYVv2wpd&=a<iUq6zB_iG@8H14)w|~i%?DSNk*Xk^u6;FgCl$!1bU;>7amL)1 z2G>{BaRQu+1+R9O?rvifGGU3-m6GKM5SYQ^M0*P+pjpA zkEd-|*}#18c>+?0+PYlpD?PlbCeyNdMb~U^Ic(_{v8dE;8%PP^;qybnq`Fj~RdRJn z02XcYYty%Rb;>s1m)z#n_BNM5s~0(dhq^cConFvp&btz5b*lgh;Kkd$=q$a6eHKkz z&4YQjmq*DTaS?U&Pk%>(tuVZIlhIa4b~;}LTN#xxVMy$uaY$8Hf9B960IRD%IW)CD zd9UKVCVqc%<0J#EQij$qL+c+jw0;>{f7;OcWoZ4nh&{CaG7?710awU0phZYmuxP zf+KLvyjj#p`GbJ-+$fL+v&m2b=Xyij)cTbs+ZLphqy*3$ z$dW4!r4D=05Uu7!?X@=F5OJ?e%b|a3$W1GLYeAJ%u2Vc+-ZLXrLM2&VSC2=PA{@$eT5m@j10r(zabLT7HBW~UH zJ!;avN1MXxxJJ8xU85&iV^Zqao8f&_&HA&vyf2M$*r{)2u1Ub<%(ok9 zQll_D!ERwd3ePe_~6} zcT9`w*Hqs(Mv^c8f6RRgd{ot)|4be*K;TX=>{5$0ZDV(EP-!DA?P$%wjLzVU#u_E* zCO|i6*O^{NGXh+ZU{?rPuK*X999c!h)j3D1D2B#c4`3Ij;y z|NH)a=iIpyf{(4+{r6MJoqNwc_nhDPoyYI>{cW%WcJl{$PL+{)L%4G5`|_wiHf8nt zKN5e&KOBGd+4-~I<{S5i^XIXYcrE-%{AL%gb6qJmwP(E5oO$W`K1%M4r+nj5Y{}#M zf6A7}ge^mr!j_@RWW?+ZAtUp0Vatu*oJfCCiJ3dWm+NqV4YNCO7a(9F-fn1*v^()e zxD$gbnLWeFrrTmuo@77bS<3fP{D}8xKjK-IAF(^#j~JwOC9LO))Go`9*gcFZPq82I zEODtU=Y*0Gm+~W?rF0;-V=tSu}kP$-+Eb9q39^2Reo`r09+Y*)a5U$jrX=8xx7g zrVVjIX22Cj%(Z-A3KqTvqXB#Td)ou%Dqh^Z2Lnof9**T5#L*C^t-{mn+WD9>7qB_( zm-B7922@eyhLE={9J`?<5-Zpyry!|6Y;K_07tx@WnQfuW9@t9rBbfvDu1EaC;)wtd ze#ow+YA_ysmz5N!wU+8>hh#LJ0_PTZ{_PRx!?LG))RP+^=wEGk&J0SHqaG@Bl4Raf zM%_G#vcDiWURrQ(@cXFZS^Vt2hpep6^7+^K^Sv0whdApq6CsR0^Mq7N^Ql< z#FWcf<2SK?p4M7@b`aTxXR+I}6wq2f^rVLs0~o=Hth4fpuB6AFoEfSTLpz0zitw!rP;WZjQ zCB>WWDOYN~LkIpez5q?XQ}d~2QLwAwzH&rf#j(>6c zMeLtj%uX{4*lA`7s|Z$U6@m85eMxBs8XTetU}ShxWJ{P!#cfCf40^P5%dWZCoz%*K zt4>}7-cr$Q`Qt+7xB24+l|Sz2UtjJ>gT$Yvy;j}9!UkWbarcPWpndRTffvqaAqn`78*6z_vOw|0 zX_=J_SRE{%8}5wV?e>_1vF|}h3-X>jW`n$k+Ww&-ewbBwIzFam$Ynh86Pp@WRch;@Zdk#Nv1N%dKp2~Eod#^r# zCAZ^&Pid#;alyh(ezUXxvVR6goOM0m!msRq9*G&~e}R-fO1W?oFW7w^aLX@_+c#!8 z9K>F0XQ%`T0%{`}NTGFMX941gH4gFXUd4Z_3YIa_BO^O9tHd)?KH6?SQzB5mmIon? zX__m-|NQeZSa}% zy<@E2kRbs3eN4uMzzc;(wSwftkLm0=N8HMg`d@o)D9NWTRyG;%Zu<^PQI88ejVUB% z$MPa}7dv{I_%-8;vXB|IKjQHtz7CiT%okyEXTaPPHn;WNa~|zKQZ+GJIhyVwdu+(u z(r0{;2jq<39Bn*$6&BmtE1hCC8!#T-%C)xe@x@q&=(~{jRLC2Tcu(2=r!M0}!a1K{ z;|x;JBl~i07BFdZ^FBdGZP!cn^B0doPQI4vO)<^9lak zYT!Nl>u+Mu$0E3;En%=Or0QITWnq;w}q>?Ox#dgq($7#POF=#R<%@r)^4i$?3`H6W$eCbn@{55=t{Qfzz_NWoH=`FS3FES#lV_nw8xY|FhMLwyF{a5 zFz3Ovo;xwj=P8ne*E3}>bMoPoS)}YA7tu(v+NOThJI-)k%^qHr$_!vG7L8Qfgw zsFzK#d453}c6cbHa9Z+FU2rKA}QF3fC`L`9x;dT zPi70gN}Y#XuOI@;Y;2DClQ;et2ck^+F~W(Zh}Z`n(xIq1V4fug8lxGA`KKTJ(`~Fh ztT|?T`s$$Lywq2WM_zO)RP2A@h2^Z@h@36lFwHsp2UttZ)tNwS z#~^4gJ!4S97q?mY)b~x(JNsqt8fP$@y^i^58mTi&>H=F zmQ==B(SZ*v*Bq4{q&G(KG5cP4lUV}L7&+a~R?Hk$LQhsqpzrR$)tD`?!-<PVgn z!oYsRL4*%&Z+Pd1`7Zqdeo5#0+%>tbB1z)l)#fDAz>ihPSG~^Komt7e3g-?PVy3K81hq+IJ1@=<80I|W|KxU8Mcb-FRBR?`=&s_%k<#D*Hl>uhTNLjlNl) zoK)vSf~o`r>5q-{o!Bjz@h7Nsa#FbuA~%=(j4l~6x7!ORC*4Ga{PYehd36RYlFv)M ziwgpNb5{U_Ft? zi;D|NjM^qzu;?me)MDwP6|K~_xS+_W{df9BSLH_Sv$)@doNGI&%9;x<Iphhn$5#b3a1hXyz=M}rGs zFSL`Cx4}4PJoyw<+0SG!q2 z?NOXj!~$>Zt|Sji#BAkpp|hLfg+rPb7C$jWE8%vtFF9$?Of>`@bW!_O)yMT)iteR!@pAGq684s!*J9t|^C_`UFFIR?@7KIl1DU7T zZ|(`0o6WO&Gx+apwHfHeye_p{>+t@uu~}-HU97ik+Ls%!FDG0Nlv;aoX8N9dleHfO z3-_V$dDjD8Nh#X5`}6Xy{+>2i-#f!ZYvihaCjW-Q_j`i@aNpfD?@D;{kWy=D}rE`{S)ed-7^j>&}^NMWkWI!Cen zQ*EMS{pN)Loroi}Cu0Xak}cQ@;wVSUyB?15{+BZy>K>yk==y$=+S_m#XGHpl zY|#Asj<3AQ%6llf`bBby&GYBV-%OEOoiK)tOv+_!oAwn8nC}F<1C|#aYDLR`1NN|- z$jtMgRuKcO)kg|Kx5TFXi7__`cROS5>9DW0>ejGtL)Fbl7r7|pYpl8<>gzRD{|ue> z?Kf8cJDTL%W32uM@KZ}`fEml-_inW5z_%1)CFK-Dj7{AZ@EtcE`-&()uc|oWb_8QL zJHwSN;n+7PM=K8iu#3dc*42DY!2cpsSJ3BUOPm<5z^$>o-bnr9q9>yPS{8~e-Z(5? zbfVukWW-=>VLXPb`~1if+D6M@7)p&kK7KZb7|lWCqJQJXH1F!D*%k5b4%ZyZgwqE5 zYUKO?E0%3PnKfW|;2@q@nrV38o!w?OvV>!Jx{aG#?N2%aBx^vnF+9BiJoslUv~0b&CDa0lFO6n`imil^ z9bUX=;-3tgTVS?d(EnXJ2;imrC*mQ^8EAXxeG-7)MqB;9gGOw;iggGQ?GD;#cj98& zA<-_;4c3W^NVlHpMc-+I^LxY6tbpM`Pa74@ z#m9(7C_hhPJ{5&yvz*IaY_@KUPvluNs650F+tGqM3;ZH!GH?5nEyB_;8`jGVVAW_R zN#gj#8ab(ilg$C&3(A@}_5z<_v6kS7$l5_#FBb87(HK(UopR7bh&v7~*feOh_wbSB zm9;}j%e-g~Sl+I~Esb=ft~M{L-BI;TEGJm{lACe7Ur@LSwU+{|j?)eB89D6}che^# zm6_&1sIml-z*=67aN43tx4UoNC*6*k6$K$j)tE5y(f;^4IxwBC{#gBW{b$Z4lk#XB zlPfvtVR~5DP(Qjp(`@PAdroicJ?ByzyM1vSW?wQp)y6X^WM-cUPjvhmDm$}iak4Fz zRoraZzufe=haOu`lt>Wuhm&9}(rX3{@}fG+>QDYT5w=+Z0+q4jhrq_y%+ghCAIT(nLBj8GI}q}9a2p>Yk0OMfp#FF-+>2B^RqHky9?8kv$@{1Or+eqbPl;;(o%0}+COS*+lqw|tFW20)x{7y-b zMYoQD6jb~1rK91J|IP!msLAZ>HE)~7N7;&hHgI~<(hhD3mmPe7lScZHT3ED!WgFl; z(Ll6%>?CYB#LLu}c}=yOjCH|u;^kSy>$LGh08UR>VeRzWWYN$49`tj62>NZ^`(E^W zADZ!@#SH%M|`bD>~=OS#u+Eqduk3bXV^;znmNw2^Uz5AX;F9Tdr)`k zhoJ6#d;U=BPWaj zyYVWu8?RTp@v{zb9XZ5847_@7wD!S5+dimQ@HBs$yGbbLB%rWqx_Hx?Cz}=aWM8wf zmX8jw4KS=tRBtT-K2cN^gm`!QJPUR!V2A4}OaeK^*JC`E$vo3+oeh7@r}V`IlS8pA z1DnT}@)-)c^58r`~KdRPVPTgX5*6}5X&=81!7$}PRKvBZ11ZD$=8#<{euTiOP$vp9~pk~osu#(cz?f>|9RgT=ri%mfHM z+1bBNjr}JTt7()NcZt)&Z9(DqB6Q=c)Q!o57Ag&z%qfBuz)S`DrIG{7>i|u+B?rDF zCQN(`k^(2J5D1PG!?;L(cFf3ta+!T4DJO0BH4Pnf#xC5!=k4eCy21Rd3YUF`SF)Ht z1O8+1j{-hrH{%Dc*v(0NbGq?w-fr6H<1Y5Ky|=m`zeEEvak>VN?ti+`y<9hnAOD zf7LH>_mZ)9H?_Z;Co{)9b6U$?2+JwijR>AZMs)!K)psTM+)}ZdK_2F}N&)eDDebg5 z^mi*93VcBWKW}7~06>QOKYREfa8Ln7^eRy7{Xh^f>fTfyZ-tgRcM>L6cGUuTItR2B)p##-mMK<8PS(Yk$je71iG)NvZ!Q4)MVr z&wb};q22MnL*uXIuH*cMEW{O^>Whf?rZT$sbaz|-UrUrkheDe0SV$AM$%AeEVFfku z2a~uYEmOIl^4Hm1i8Bx9+lwx-5m11@D0rO{q)~!{c9cCZC;v>D3RAy zFJLpHvhlyhhvxCr?&g5~U0i9&8mKmhdaE9Pi{$oXtGgw$0XLQlsO7)gijv!Hi;}a_x%Nsr*Ms=P zYpG8xJiz%}52k(MpnRe?p$n)_^ji5`52o_D9@5RV-oT)3D!^AF){ z2gBysh*r^>eHxrFKxZA=L>C3vUN{}9-cp7pv_nMjslJ>s2^)+xPcSCo24n5oG)zK) zvS5MaFDEFk*##3sGFhM{liMeVGIEjjocr%^_Q$Oo=Pi} z!V{EaJH>9Jqy=b#0f2l1LIKc0kl+1?wZ4Av(r|($f(eL2yY+JaKgpZ4kDH>RovZ~K zmV@}{SixCNMmRGX?oyX71DS(r+&rj{v8uchEL{2pcj^Uh$E&Jk@`3_8?21poVRJj5 zx9H-iK5g%nBWI_A6$H)G1|n3sk5T4enI^jbHbr+F!!M>g9m7HPtI{K}%Q?Qe)P;08 zMrj{FyB^gP{=}flHU!#IQMVvXa0mP1_kxzyb8SJ`qCQLkGrETb73&D=6eMGMjPe5s$m+=@nKb%uacH=mu z&V>wLR?tvTR7k6`o5Va<<{w%DW)c|L$L4 zb>x8GfI?6!+sztCoSg-w?XfKCV~~-MtUfN@mcZ%nfYryp%92Cm3594`K}R}bv+2g8 zhxvHD&%v3?YndN#RHbk1GD;@BxPjH6?F{ADo{;!yZo!6B3&v*&l?&Rf22^e1OyO@> z4d~BIHGp>eiv7l;zu_d^x#;3b~2Mn_y%=0jc1-qM(hm zCzRP_{zgq*?Dt;sEraoLYGx%qI_&g4@0ag4enBHUef-l*$QIobCcb=#E4 z_d_N5>;s{Cm)}>tSe>s20qq6Et4Y`sKHlth*tzh}twWb!>2=2aDE2lr0nGTx5txw; zOS(TF=l)ERk4R`Ymb4i^qY7-|3WMUcHmV+u|4+KYp#L+(77p<)gFuJL-^#`=NE!?h>15q2#f=DNfhhIunc7QAEmdd_| zU7^5ZW7^&Qn{1My0vOyBe*&HOgt`-C3!6|xY3xfk$Nz+C*$z}jSdF%@7+9_tI(u7# zv~kkU8@P=P{d1LIc$wx9k8|cNfUL+jw}L5)^xvFR8wdDC1@O1$}fIr$w_-HDHwQ!TNCO{t5|3 zFHKR4rIM}j?Rp(kciyx&9FiiA;oDe7+#b(Thh&FK$O1ZLJ1=+fLVWgW9yRfdYF7`H z(y?6)87^!iHj$%;hGf7T7%;^V05wVS(PBt*1X5THNyo$(lS~bkz#$I}8!L#DAqw*rx&DO*@p$2Z0gRVb|H59rd(dA00jVG5<+-Z=;D9CS57>t4Qpkw^t30T> z#EOaoiD6yR>I++!M0;^Cp`Yt6jikLeY6<`QaooH6H*Q8m#BuLSbj^^6t*i)W6l@l& z`~Qrpt-q24QpmvT;q`ysdzOXS>D;4ePpGn+M!2#y*~+4Aeugrwxih#ydDt@9 zq30RSt`bnmLif@u#0#5PszquNeqXYcKwM!vc@GyV%O1`BDBaA_%5B3RZ=l<>NA8p0 zWBM4k2HPN~yu;@huX9q{%c!PovsH;za0^$*haxIm-s!qzU3i^~xZl5)$?soFeyT&M z3iyc!^^llEuLcX>LeFz67U3Tk{GsUYvtoqA7f3c(#NUA)0WTPHH_02%^Ft^L8szgv z?hi4wFhj3zv>Lo#&3_na<0bos1Y7WsYe8jodUGmBmE{a^9yxT@@z zZZ?NM1^j~84V)9MSh#n_JHK$V4yPzXWp@}*ey>-Zq9>8c=E8j}#~xC*ueqKo3ss(> z3EZdiYvr6YJQs+{H$IEXI3yisdaQ$`H}3oeA5=?E2E=++k4rO{+@??w5G| zN#8&6ISv%LOxjwiG^YY4HuwL?>Rb16F^Z->b zyBzQsbF;7gB~RQvd_6WC2cMi2=BOK>pCt-`GTU z;3c74@FjY@`T+Co-0Z=h+i2&p(QfSlLG+i}5bd1(gP*0y7t-Ww1Nm0`Op!07cj{cc zLZ5k7K4S`fALrk!3zGRpq$_696*K8V7U_yD(s}Hp>tNDhcj{E zm;uw5e!fjV2UH?oBn;{hqgq)jb2jm3sYLv9j4Uo7j1O$X;pS!W1sO3Hq5f%p@}%Hk6ctqTqZvqgSoRLqL;z$Q zXS-cl_U50+%x?($23F+wlN)Jn=Z*^3v_N2=v4Wm5h{YAheu{Gx0+X+L@h5^Ill+OB z_g=VF=VMJ<_XGz#RS)oy>5x+$nFgG49Kz~_<4|#i9EYBgjaYVD#xIsVn2%R#mzEuz zk5{s%dt}cK)L)B}6wU(i903l>mgABc<3mm1*1iXx&fsGftmAZw!r{k1Pu#8P81fHO z0GYOm4GwGIX%z4^2Fx`$#F^_Q8SQP20pDi&vpMLaJ?-{3TH3@M!TwKo%IWH%H=(nS znkS>?A@dwVa9pPC40yty{PX78q_L(X&*AW$H`Ye-#Pi7tk^O9*IzM^xhNU|C(>!r> zS|pB6F7vbee%I9gB&F2YUa5#szFjOg7+05pU zvNV|IVGUuI{Wwlu@Ch_eMa*mN`8XRNutkaQ)E?|keC(Z@!B45koMYQ37@>hX|JZg4@k%y%#YPJ9+6#<&X{?_u7awxvNBjs zQqGi;D1J)|archqy8#*uBJ};7`Wx z-TKGiO&GQ;555n=oB`fI6?f8)P5nndV)leC?W5yQbnv5PP}C?Kx=0!85O#%OXD~k7 z@J7T(?*D>2K}2THCshMOl|x}*N;`+GkqK(B7;&=_!hII!aa>}zaixRW%1j00X}RT~ zr~LV_UcrH-TM#kN!jP!gu3Q={u68oWiFhTtbl3ays5TUNC0|Q zjT4h#hm6w=X;wryT2~$jnWuQn%nX4%8$MO{$W#@S?LdLcK2^89_f%c4akd2|yO^mH z4_o-rC5*FO;!bETWQc62#uVJPBcZ#f3SP|9O&=I#o2P7pnzFt4(fHAzY)d;nI+Sgm z`OP04%JzOeTbqRo?zJ-Z<@3mY-(ef!to;#Ahj{6UYB^7Le{58MBM}~V&mOUZPsYr=^ zL^-A&1u&>l_YW$?T}r)liu8=y9Ys z-K4+MGU=nSsQKc?BJhF7h2M=U4vA5x_%nlMi2V_Hn0~hdtB8mqP^!4 zNr<(S{r0ZZw*u@a%F$M=R>bJEu_1gb8^T#kpVzK-6U+wmdKdQ^-U9C5LCV3KdpH3& z5_!*SLP)w%r>w;H)!Ko-H!T0l>aXiWT>&<7&=?uo%DaQP>n^L=c?U5XdA)-D?U7rs zSSo9`?3i14tf*j4FOS$H9x+4JFOG*iaPN-DWiD~W08ALPzszU7V%INH#_6}|`K$QU zk>!=uU!%oioHpfl#ph$)$g{UrnSO7U)q@{Ey~7RE=GLZRcH)m&cH*7!@pe1$ZcTOF zWU6l(eWDCuYp*LV+iBE2p{&GjBe&dMHWhEGGSIdlUYP<{%meK5AuTn^dPS)LRqwn# z7_+4%V7LCIQQ=0w05mNvk}PpPG-Hy~fl2+uOfhS^qzw=P^nj*VCCx zpBRXL1Dvve8GP@6npXV6etF?dF#*pu=12Aqq}C-lnj9OjypK^%ol=hL$_MQb<2yy{ zaxZ3UahFSHJeA`n5mRuY+bO`#NK(%u)RrznIJMAZdLD2h(@OEXgl%5iOdW6T2jw3X>_rXZn<0*+ZuBl-kcY5PS7x6H|QNUOvO9WkH`|EFbH0e1>?JS3Om`pY7$i zoz%7C{J~LzdGGQGWXN)|epd<(m)^CPwUrT3TTp=iq3P`rTM#h0+k zbCtFduh&-MXSJ31C2b{c&{pCOWhFkOti+;86D^wsmY}S~0f9k)N{<6+zx1ZI6Hk9L zWhb^N^M=`j|G)4bpMKEzU-KWQzA40v%NX6Z@7KSjqb#7Os6+}c;|kidR!->qq5UC) zEXkFErSdd09^{>O0THt1&C-wpV~m>pz=J%-6f`siOZ^q|72ZGW=zxQK-YJgc;0MHu zG71pLS?g4||0|pl902}c74Tn!t$xmEg9^=m^zRjn#?2Z=;})j^;rKENxAy^0)|W6M z3Ezd4mxmNGU*TH<&jc+v(3#>l!j=6ghX4c?2h0lrZ_*#j`a%l-|Cm8-83?iaSM26Y z_@Q%o864FOQ+31Yu>Od-9iV{VcyBuxq$t_Q04q^*n{E@p0u}f_5bE;#%72qgntgPN z9M4E9cTo$>jq$p|xBRi&opiRi0saDCcp3<4yCan?Bvb)~#q5uGo1>X6_pawfcrw=6 ztjpzOn41Z3INS z<%dWbtG|(v!U`SzJG3MXD)cs`Hf(UH0EHVfMBUE=vkklljtUmO7O7thtnPeG6T0lX z_os07=!@k9F^L)Q0Bk^$zuE6Qy>c|sXs1J<)4&JNxfe%#$?EKo*&F|)x1E^8Ns~wO z&trWcbq_Q6qYklHcRlHL#G=l7jr$ryG2spz)3H#@^n2f7b_fuI!~k?;wlYAW-`s5i z-*$ive))aB`YC{ZfX)9E%$7<)n+L&G`&swWF5fr!`^>*ZAzyFRn2@<8Imt&;Vds5g(jfvMJibjbd67jCxn@33I! zUmZ$K3{9Fe{~~kz*PMvgVZ)ip`IiE|2J`z8f>Xa<>}L%DUz6G7H*Rn6`x;k{qhEC0 z5u4>~hL?b?Mz*Kj#UVb}4jEA3kf{*ubJKAC%CXk&GuC`#qJp$vI8o63I`mQ+o~Xih ziYBH~(ekQ$-9!-$I13rT?LRS5>}f?}Pc!IeUw+a8x(5oabZy_t&uN^%lud1BnoaEm zjUQk&Q(MpcFsVrv4ZnE`%W)fDo{yL_E_Y01TOej|&^!;58V8b171jjMo%i?a*=SbB zFiFYne(&$anD)zMP8HLmpaj;c6Ufw(f+g&CT=0ZjkOdZ4$O6SFo0_2Ny%nw8$96T~ z37ls5c-D4RXN+WuSZC93ZdPV8##HM<3c*X5$wa@&T3}1Rxq}X+XI19+3_fa?I1=&e zZCZAv-$aF6sKO@O#khb&>tjV6ZIym z?LU1?yk&_ zY>n6(pOYfCMDjWkHe!q5$4rUm7O@j4VkgqZ?$n3l$N@V?p8V)Ia`2<&$WtFZN1jUA z#>BwlunjFZ(MoFh-uAG)@nFgx#>_ay8UNf!_Ati?_AsZtUCfTB#9AAwJg7}S-@61e zb_z3A{STN?<){8%UmuUXH#h2tO3jUZiW^}_DDCH<%8!H_kA1Y<7*CN%2Xv;9NSS>F zyT!8lYCcR~f|wVTC&A)jyjb;r&5O!&KxNDFo5|#s0F1NWg)?-s-`i^CpVo^y-8Fx( zmd^>THGNs(%I%?Kqb&)wYJajJ9Lw42kKOPH=b#2FAdyP>9m0ciB(JhxOp_qo7#JbX z=^y}3x^joCjV{fFVO{c~;or*%sQsKw5(izs$|H&d)P9|(v&`bc9{ZZON8DP@>Fq{X zY>cE)mhA>+1r9f{($K6iB!H8pEhD_y0M~B9`bOFtYV^f?sCY=-a*(#KU zag5tmp)8DJtpZkssg-ezePxvV)B7a<^j{D+VzAda#1hZPS97BpUmCSW&Z{vSm@3xlAXytb36g>B?hwY}$vfUWhwi=HjG|#B*bns&M9X2!fvThUl z(H+_Y^9MSe>h-;Btk}wz-OKi5egv(o(u#{7Qt&I7RvhaW;h51>Bxwg#W7K|5 z0!$nFuTi0Z!@qXDm=5Kpm<~586HkP{Ag06dy6W9xfckyPawzeBLN9GOlvfWco6f67 z-JdHHTAkSXb_?*fgMf2n#V(MDPNW=NnPEa+Uxp7^KH#N5=Ky=<(Z7WHzA4oE`b z-&a{JYU36G&$8@CtJDZGpa%o`>=C0LA~3l{>)F;(@s4JW<=?9QCN*cR3{@VJrZ*uL z4_T&4ZG@Bu2NHBN)zNH`UV($zFWwRd5-D?rE^TqSMb|Dx*R>gI9BZBV8(~k9El)pE;0F4ipi0_wpCc2)!7?_;Y;@RuW@Mq7{wx>_(shs zY}eT6h~FbvS0k_|ROTB-W>S=Hwe;v4tnmAdx?0OzG75mOj)g zfp^n8kQmm13uzs=;E<%Zm+Zj1m+nB)>cG2J2QKJpN9aJ6tpkHPWiQ)Qr<_sk$4>pW z)&5%5{ws9*srm0%&BrSLjzcUKr6V;T`}^CMSR~vzXDqCox5eY#9e77qIzr>u+8U31 z!+)md!7L7zl-a=a-)gnrOs7AWE#KzQJU^RbGUJQTfeJlQ6ho`|f)UtyiRpqKZ?}eE zt2G4j0eojzFBpiYyvv_#;v6wyMC8Hp5>7ToOy2SL27HgR1;kj_b5;y4GsWN{9>bn0 z#^+hg_&gG;SI#CFjwbPF1&C+0m4%qKC?3(OM3kx&8tyiSoaH4eu_$UJL&tP&W$_%> z`mj$N9|qf9J`At){|EbuW8?pxeZ|cF)?2v_a}^Y+H4QhtU%cU}cRAj0RTjq^{<1Sy z#T$08>;Er0GCAHbWY+d%;wW<{QeVBy91PV5J?5VJl7dhw>JX9#ROGPg_)ZyXe=Vo1d@l1z-FX-lf8Kx%4 zu);xC0C4aD&QbheGY2q^|MEi|xcJRCbFt*NnQNE|jW?;F#j@=2@{uS_i+Knv3nBoe zy2y8M5wn+h9(^YyvPc3J8nT$tKs_C>0Da(sENmtv zK;)fDTMH^NPX)Xu*>!$;7S2~K#@v1NSNds2Rkpm6;ZV_HZd8CU06iRTsAy=6y zG_0o2eUOS=AE2W9-5;c;$seSq{0~x-C#|NDs+q2;DQ}m${2Z3^)g`HlRP87{^Mf?3 z=z}yY^g(JW{vb7#j!+Zv;7Ii?Nc9zaHXiKa2a9kB4n5SwL1@5$LGDeX_JIq@WKaU| zR;fu|%VF4aH}N%g1)k>(p;#>gYsGFI#W&XQzimOYi!as(5l)9!up0$U25YEgW18UD z<_2-fPw>@KL4DQ3|31rw^To3zx30KgC>%s}DZUMP}-fJ ziv^^#{8y3s$&va}7yaiB#fpmPZx8)P%XVoW{Wn1WB{=tKHx(pWw4pEznvcC80pVBt z#|qeTflG3Y=erW{y6C%zQEjG0zc?Hdyk?kjUg8BRtATw~^RcR#aV%C>xTt)za)?up zuzLs`x8Fu|Vf%84Xl1VP8>LuaW;ppXrJVsJK_QN*UPT{uNFYXTa20(P2Zm$xsO*{_ zE_VwPfqK<55mH&|myEw)!`v5kF{_+zL6R0FzN~%=1og*eakT3!BX=#|0KbN7E%VM<(w(;r4q{daw?Sb<^EeOsvlDH;SLKUhlhxx)g~s+VJr^-O7co5-SoB;pXpbtk=s7Sb_6 zB`$?~IOddET!g|hdvhxm4C;VcmD7MjZsBfCz0$(TNJ>1rEmBJ&?sPl%Xj=n#W&hp;afg6J_ zr*8CwYWG!-{>^8pmUw0;xh2`^8(Q%qzEeGuBQTMNq9prrbP>s+jJh8=86;sIl3X

            IPlCCYj=`Vt#Y;I&%yr}E(uKPBICs?@ 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

            gdRa>+ep+<(`?3@ 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 GjQ8h_aJB9Llx7LrH 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

            1$o_ns8 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�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

            n@Q9P#TzkJd-0T)Ne(b|%PuZ6u@ymIf|EuvR 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 literal 0 HcmV?d00001 diff --git a/build_helpers/TA_Lib-0.4.18-cp38-cp38-win_amd64.whl b/build_helpers/TA_Lib-0.4.18-cp38-cp38-win_amd64.whl new file mode 100644 index 0000000000000000000000000000000000000000..f81addb44a7c943135e3a113fe3a25987af8a23d GIT binary patch literal 555204 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%0Ap6GvR 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�Uz)P1LKJsVu9Cm{s{1?<7h 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

            6&y*MJ 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

            l{PithDa{q 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
            {stats_tab}
            ' self._send_msg(message, parse_mode=ParseMode.HTML) except RPCException as e: diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index a1e6d9f26..6c91db86a 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -203,16 +203,18 @@ def test_rpc_daily_profit(default_conf, update, ticker, fee, # Try valid data update.message.text = '/daily 2' days = rpc._rpc_daily_profit(7, stake_currency, fiat_display_currency) - assert len(days) == 7 - for day in days: + assert len(days['data']) == 7 + assert days['stake_currency'] == default_conf['stake_currency'] + assert days['fiat_display_currency'] == default_conf['fiat_display_currency'] + for day in days['data']: # [datetime.date(2018, 1, 11), '0.00000000 BTC', '0.000 USD'] - assert (day[1] == '0.00000000 BTC' or - day[1] == '0.00006217 BTC') + assert (day['abs_profit'] == '0.00000000' or + day['abs_profit'] == '0.00006217') - assert (day[2] == '0.000 USD' or - day[2] == '0.767 USD') + assert (day['fiat_value'] == '0.000' or + day['fiat_value'] == '0.767') # ensure first day is current date - assert str(days[0][0]) == str(datetime.utcnow().date()) + assert str(days['data'][0]['date']) == str(datetime.utcnow().date()) # Try invalid data with pytest.raises(RPCException, match=r'.*must be an integer greater than 0*'): diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index b953097d5..688c8bdb6 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -333,8 +333,10 @@ def test_api_daily(botclient, mocker, ticker, fee, markets): ) rc = client_get(client, f"{BASE_URI}/daily") assert_response(rc) - assert len(rc.json) == 7 - assert rc.json[0][0] == str(datetime.utcnow().date()) + assert len(rc.json['data']) == 7 + assert rc.json['stake_currency'] == 'BTC' + assert rc.json['fiat_display_currency'] == 'USD' + assert rc.json['data'][0]['date'] == str(datetime.utcnow().date()) def test_api_trades(botclient, mocker, ticker, fee, markets): From 64b8d8c7bd2f56d4ce78cc702305062439873e44 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 May 2020 20:18:35 +0200 Subject: [PATCH 2354/3421] Use correct Return hint --- freqtrade/rpc/rpc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 7e2934579..3f6d0729d 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -186,7 +186,7 @@ class RPC: def _rpc_daily_profit( self, timescale: int, - stake_currency: str, fiat_display_currency: str) -> List[List[Any]]: + stake_currency: str, fiat_display_currency: str) -> Dict[str, Any]: today = datetime.utcnow().date() profit_days: Dict[date, Dict] = {} From 4bfab5e222a774416e43f9db58e5d8742f4f99ef Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 18 May 2020 02:36:40 +0300 Subject: [PATCH 2355/3421] Add ShuffleFilter --- freqtrade/constants.py | 2 +- freqtrade/pairlist/ShuffleFilter.py | 50 +++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 freqtrade/pairlist/ShuffleFilter.py diff --git a/freqtrade/constants.py b/freqtrade/constants.py index e56586bbc..5d3b13eee 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -19,7 +19,7 @@ ORDERBOOK_SIDES = ['ask', 'bid'] ORDERTYPE_POSSIBILITIES = ['limit', 'market'] ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc'] AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', - 'PrecisionFilter', 'PriceFilter', 'SpreadFilter'] + 'PrecisionFilter', 'PriceFilter', 'ShuffleFilter', 'SpreadFilter'] AVAILABLE_DATAHANDLERS = ['json', 'jsongz'] DRY_RUN_WALLET = 1000 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons diff --git a/freqtrade/pairlist/ShuffleFilter.py b/freqtrade/pairlist/ShuffleFilter.py new file mode 100644 index 000000000..a10a1af8b --- /dev/null +++ b/freqtrade/pairlist/ShuffleFilter.py @@ -0,0 +1,50 @@ +""" +Shuffle pair list filter +""" +import logging +import random +from typing import Dict, List + +from freqtrade.pairlist.IPairList import IPairList + + +logger = logging.getLogger(__name__) + + +class ShuffleFilter(IPairList): + + def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict, + pairlist_pos: int) -> None: + super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) + + self._seed = pairlistconfig.get('seed') + self._random = random.Random(self._seed) + + @property + def needstickers(self) -> bool: + """ + Boolean property defining if tickers are necessary. + If no Pairlist requries tickers, an empty List is passed + as tickers argument to filter_pairlist + """ + return False + + def short_desc(self) -> str: + """ + Short whitelist method description - used for startup-messages + """ + return (f"{self.name} - Shuffling pairs" + + (f", seed = {self._seed}." if self._seed is not None else ".")) + + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: + """ + Filters and sorts pairlist and returns the whitelist again. + Called on each bot iteration - please use internal caching if necessary + :param pairlist: pairlist to filter or sort + :param tickers: Tickers (from exchange.get_tickers()). May be cached. + :return: new whitelist + """ + # Shuffle is done inplace + self._random.shuffle(pairlist) + + return pairlist From 287e8bafce02e1881fc9318a082bd7b7f781e0ec Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 18 May 2020 02:37:03 +0300 Subject: [PATCH 2356/3421] Add/adjust tests --- tests/pairlist/test_pairlist.py | 66 +++++++++++++++++++++++---------- 1 file changed, 47 insertions(+), 19 deletions(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 61f6b4bd5..929d87779 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -157,16 +157,28 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): @pytest.mark.parametrize("pairlists,base_currency,whitelist_result", [ + # VolumePairList only ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC']), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC']), # Different sorting depending on quote or bid volume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], - "BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), + "BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], - "USDT", ['ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT']), - # No pair for ETH ... + "USDT", ['ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT']), + # No pair for ETH, VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], "ETH", []), + # No pair for ETH, StaticPairList + ([{"method": "StaticPairList"}], + "ETH", []), + # No pair for ETH, all handlers + ([{"method": "StaticPairList"}, + {"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, + {"method": "PrecisionFilter"}, + {"method": "PriceFilter", "low_price_ratio": 0.03}, + {"method": "SpreadFilter", "max_spread": 0.005}, + {"method": "ShuffleFilter"}], + "ETH", []), # Precisionfilter and quote volume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), @@ -176,31 +188,43 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): # PriceFilter and VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PriceFilter", "low_price_ratio": 0.03}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), # PriceFilter and VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PriceFilter", "low_price_ratio": 0.03}], - "USDT", ['ETH/USDT', 'NANO/USDT']), + "USDT", ['ETH/USDT', 'NANO/USDT']), # Hot is removed by precision_filter, Fuel by low_price_filter. ([{"method": "VolumePairList", "number_assets": 6, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}, - {"method": "PriceFilter", "low_price_ratio": 0.02} - ], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), + {"method": "PriceFilter", "low_price_ratio": 0.02}], + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), # HOT and XRP are removed because below 1250 quoteVolume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume", "min_value": 1250}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC']), - # StaticPairlist Only - ([{"method": "StaticPairList"}, - ], "BTC", ['ETH/BTC', 'TKN/BTC']), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC']), + # StaticPairlist only + ([{"method": "StaticPairList"}], + "BTC", ['ETH/BTC', 'TKN/BTC']), # Static Pairlist before VolumePairList - sorting changes ([{"method": "StaticPairList"}, - {"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}, - ], "BTC", ['TKN/BTC', 'ETH/BTC']), + {"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], + "BTC", ['TKN/BTC', 'ETH/BTC']), # SpreadFilter ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, - {"method": "SpreadFilter", "max_spread": 0.005} - ], "USDT", ['ETH/USDT']), + {"method": "SpreadFilter", "max_spread": 0.005}], + "USDT", ['ETH/USDT']), + # ShuffleFilter + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, + {"method": "ShuffleFilter", "seed": 77}], + "USDT", ['ETH/USDT', 'ADAHALF/USDT', 'NANO/USDT']), + # ShuffleFilter, other seed + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, + {"method": "ShuffleFilter", "seed": 42}], + "USDT", ['NANO/USDT', 'ETH/USDT', 'ADAHALF/USDT']), + # ShuffleFilter, no seed + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, + {"method": "ShuffleFilter"}], + "USDT", 3), ]) def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, pairlists, base_currency, whitelist_result, @@ -219,12 +243,16 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t freqtrade.pairlists.refresh_pairlist() whitelist = freqtrade.pairlists.whitelist - assert whitelist == whitelist_result + if type(whitelist_result) is list: + assert whitelist == whitelist_result + else: + len(whitelist) == whitelist_result + for pairlist in pairlists: - if pairlist['method'] == 'PrecisionFilter': + if pairlist['method'] == 'PrecisionFilter' and whitelist_result: assert log_has_re(r'^Removed .* from whitelist, because stop price .* ' r'would be <= stop limit.*', caplog) - if pairlist['method'] == 'PriceFilter': + if pairlist['method'] == 'PriceFilter' and whitelist_result: assert (log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) or log_has_re(r"^Removed .* from whitelist, because ticker\['last'\] is empty.*", caplog)) From 503a8a82431fc3b6d1c799eadabcb9f9c461f280 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 18 May 2020 07:02:57 +0200 Subject: [PATCH 2357/3421] Simplify sd_notify usage --- freqtrade/worker.py | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 55cf30d16..3f5ab734e 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -37,9 +37,7 @@ class Worker: self._heartbeat_msg: float = 0 # Tell systemd that we completed initialization phase - if self._sd_notify: - logger.debug("sd_notify: READY=1") - self._sd_notify.notify("READY=1") + self._notify("READY=1") def _init(self, reconfig: bool) -> None: """ @@ -60,6 +58,15 @@ class Worker: self._sd_notify = sdnotify.SystemdNotifier() if \ self._config.get('internals', {}).get('sd_notify', False) else None + def _notify(self, message: str) -> None: + """ + Removes the need to verify in all occurances if sd_notify is enabled + :param message: Message to send to systemd if it's enabled. + """ + if self._sd_notify: + logger.debug(f"sd_notify: {message}") + self._sd_notify.notify(message) + def run(self) -> None: state = None while True: @@ -89,17 +96,13 @@ class Worker: if state == State.STOPPED: # Ping systemd watchdog before sleeping in the stopped state - if self._sd_notify: - logger.debug("sd_notify: WATCHDOG=1\\nSTATUS=State: STOPPED.") - self._sd_notify.notify("WATCHDOG=1\nSTATUS=State: STOPPED.") + self._notify("WATCHDOG=1\nSTATUS=State: STOPPED.") self._throttle(func=self._process_stopped, throttle_secs=self._throttle_secs) elif state == State.RUNNING: # Ping systemd watchdog before throttling - if self._sd_notify: - logger.debug("sd_notify: WATCHDOG=1\\nSTATUS=State: RUNNING.") - self._sd_notify.notify("WATCHDOG=1\nSTATUS=State: RUNNING.") + self._notify("WATCHDOG=1\nSTATUS=State: RUNNING.") self._throttle(func=self._process_running, throttle_secs=self._throttle_secs) @@ -154,9 +157,7 @@ class Worker: replaces it with the new instance """ # Tell systemd that we initiated reconfiguration - if self._sd_notify: - logger.debug("sd_notify: RELOADING=1") - self._sd_notify.notify("RELOADING=1") + self._notify("RELOADING=1") # Clean up current freqtrade modules self.freqtrade.cleanup() @@ -167,15 +168,11 @@ class Worker: self.freqtrade.notify_status('config reloaded') # Tell systemd that we completed reconfiguration - if self._sd_notify: - logger.debug("sd_notify: READY=1") - self._sd_notify.notify("READY=1") + self._notify("READY=1") def exit(self) -> None: # Tell systemd that we are exiting now - if self._sd_notify: - logger.debug("sd_notify: STOPPING=1") - self._sd_notify.notify("STOPPING=1") + self._notify("STOPPING=1") if self.freqtrade: self.freqtrade.notify_status('process died') From 51c0639e6dd1d55ae29e25973ca0175d69c3ede8 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 18 May 2020 11:54:52 +0300 Subject: [PATCH 2358/3421] Update tests/pairlist/test_pairlist.py Co-authored-by: Matthias --- tests/pairlist/test_pairlist.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 929d87779..3a8f94974 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -243,6 +243,9 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t freqtrade.pairlists.refresh_pairlist() whitelist = freqtrade.pairlists.whitelist + assert isinstance(whitelist, list) + + # Verify length of pairlist matches (used for ShuffleFilter without seed) if type(whitelist_result) is list: assert whitelist == whitelist_result else: From 37fd675aace911736b5acf97757879fd1c936773 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 May 2020 09:00:23 +0000 Subject: [PATCH 2359/3421] Bump flake8 from 3.7.9 to 3.8.1 Bumps [flake8](https://gitlab.com/pycqa/flake8) from 3.7.9 to 3.8.1. - [Release notes](https://gitlab.com/pycqa/flake8/tags) - [Commits](https://gitlab.com/pycqa/flake8/compare/3.7.9...3.8.1) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 616ca20f9..a37ac42ae 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -4,7 +4,7 @@ -r requirements-hyperopt.txt coveralls==2.0.0 -flake8==3.7.9 +flake8==3.8.1 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.770 From a447efbe57d3a1b60c5d7c2ec3ca3d282ce85b1e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 May 2020 09:00:45 +0000 Subject: [PATCH 2360/3421] Bump mkdocs-material from 5.1.6 to 5.1.7 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.1.6 to 5.1.7. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.1.6...5.1.7) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index c121dec64..485cd50cf 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.1.6 +mkdocs-material==5.1.7 mdx_truly_sane_lists==1.2 From 37a10d1d30073b8f6631d30e9af9e2d744c64a37 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 May 2020 09:01:37 +0000 Subject: [PATCH 2361/3421] Bump joblib from 0.14.1 to 0.15.1 Bumps [joblib](https://github.com/joblib/joblib) from 0.14.1 to 0.15.1. - [Release notes](https://github.com/joblib/joblib/releases) - [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst) - [Commits](https://github.com/joblib/joblib/compare/0.14.1...0.15.1) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 9afd07357..c3dda6c4b 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -6,5 +6,5 @@ scipy==1.4.1 scikit-learn==0.22.2.post1 scikit-optimize==0.7.4 filelock==3.0.12 -joblib==0.14.1 +joblib==0.15.1 progressbar2==3.51.3 From 7d80f8d25c95108121baea03f717f5a765eb0629 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 18 May 2020 12:02:16 +0300 Subject: [PATCH 2362/3421] Fix links in docs --- docs/configuration.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 7405fc92e..e6e4cb422 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -81,14 +81,14 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `exchange.key` | API key to use for the exchange. Only required when you are in production mode.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String | `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String | `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String -| `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#dynamic-pairlists)).
            **Datatype:** List -| `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#dynamic-pairlists)).
            **Datatype:** List +| `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#pairlists)).
            **Datatype:** List +| `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#pairlists)).
            **Datatype:** List | `exchange.ccxt_config` | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
            **Datatype:** Dict | `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
            **Datatype:** Dict | `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded.
            *Defaults to `60` minutes.*
            **Datatype:** Positive Integer | `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation. | `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
            *Defaults to `true`.*
            **Datatype:** Boolean -| `pairlists` | Define one or more pairlists to be used. [More information below](#dynamic-pairlists).
            *Defaults to `StaticPairList`.*
            **Datatype:** List of Dicts +| `pairlists` | Define one or more pairlists to be used. [More information below](#pairlists).
            *Defaults to `StaticPairList`.*
            **Datatype:** List of Dicts | `telegram.enabled` | Enable the usage of Telegram.
            **Datatype:** Boolean | `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String | `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String From ff8e85f2f5b451197fccf5ad7783d76dcd2c6871 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 May 2020 09:02:29 +0000 Subject: [PATCH 2363/3421] Bump sqlalchemy from 1.3.16 to 1.3.17 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.16 to 1.3.17. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 017974c9e..654fa0853 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.27.49 -SQLAlchemy==1.3.16 +SQLAlchemy==1.3.17 python-telegram-bot==12.7 arrow==0.15.6 cachetools==4.1.0 From 601cbd1231dbd124541b732396cf10bd406a5e57 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 May 2020 09:23:03 +0000 Subject: [PATCH 2364/3421] Bump ccxt from 1.27.49 to 1.27.91 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.27.49 to 1.27.91. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.27.49...1.27.91) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 654fa0853..a2038d95e 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.27.49 +ccxt==1.27.91 SQLAlchemy==1.3.17 python-telegram-bot==12.7 arrow==0.15.6 From d57ef6a2a662c3f9c0d2e875f4ebab1302cd7db7 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 18 May 2020 12:39:52 +0300 Subject: [PATCH 2365/3421] Pairlist Section reworked --- docs/configuration.md | 56 +++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index e6e4cb422..7d99660b8 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -549,18 +549,19 @@ A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting When not using orderbook (`ask_strategy.use_order_book=False`), the price at the `ask_strategy.price_side` side (defaults to `"ask"`) from the ticker will be used as the sell price. -## Pairlists +## Pairlists and Pairlist Handlers -Pairlists define the list of pairs that the bot should trade. -There are [`StaticPairList`](#static-pair-list) and dynamic Whitelists available. +Pairlist Handlers define the list of pairs (pairlist) that the bot should trade. They are configured in the `pairlists` section of the configuration settings. -[`PrecisionFilter`](#precision-filter) and [`PriceFilter`](#price-pair-filter) act as filters, removing low-value pairs. +In your configuration, you can use Static Pairlist (defined by the [`StaticPairList`](#static-pair-list) Pairlist Handler) and Dynamic Pairlist (defined by the [`VolumePairList`](#volume-pair-list) Pairlist Handler). -All pairlists can be chained, and a combination of all pairlists will become your new whitelist. Pairlists are executed in the sequence they are configured. You should always configure either `StaticPairList` or `DynamicPairList` as starting pairlists. +Additionaly, [`PrecisionFilter`](#precision-filter), [`PriceFilter`](#price-pair-filter) and [`SpreadFilter`](#spread-pair-filter) act as Pairlist Filters, removing low-value pairs. -Inactive markets and blacklisted pairs are always removed from the resulting `pair_whitelist`. +If multiple Pairlist Handlers are used, they are chained and a combination of all Pairlist Handlers forms the resulting pairlist the bot uses for trading / backtesting / downloading historical data. Pairlist Handlers are executed in the sequence they are configured. You should always configure either `StaticPairList` or `VolumePairList` as the starting Pairlist Handler. -### Available Pairlists +Inactive markets and blacklisted pairs are always removed from the resulting pairlist. Blacklisted pairs (those in the `pair_blacklist` configuration setting) are also always removed from the resulting pairlist. + +### Available Pairlist Handlers * [`StaticPairList`](#static-pair-list) (default, if not configured differently) * [`VolumePairList`](#volume-pair-list) @@ -569,7 +570,7 @@ Inactive markets and blacklisted pairs are always removed from the resulting `pa * [`SpreadFilter`](#spread-filter) !!! Tip "Testing pairlists" - Pairlist configurations can be quite tricky to get right. Best use the [`test-pairlist`](utils.md#test-pairlist) subcommand to test your configuration quickly. + Pairlist configurations can be quite tricky to get right. Best use the [`test-pairlist`](utils.md#test-pairlist) utility subcommand to test your configuration quickly. #### Static Pair List @@ -585,13 +586,18 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis #### Volume Pair List -`VolumePairList` selects `number_assets` top pairs based on `sort_key`, which can only be `quoteVolume`. +`VolumePairList` employs sorting/filtering of pairs by their trading volume. I selects `number_assets` top pairs with sorting based on the `sort_key` (which can only be `quoteVolume`). -`VolumePairList` considers outputs of previous pairlists unless it's the first configured pairlist, it does not consider `pair_whitelist`, but selects the top assets from all available markets (with matching stake-currency) on the exchange. +!!! Deprecation + Other values for `sort_key` are now deprecated and this setting will be removed in the future versions. -`refresh_period` allows setting the period (in seconds), at which the pairlist will be refreshed. Defaults to 1800s (30 minutes). +When used in the chain of Pairlist Handlers in a non-leading position (after StaticPairList and other Pairlist Filters), `VolumePairList` considers outputs of previous Pairlist Handlers, adding its sorting/selection of the pairs by the trading volume. -`VolumePairList` is based on the ticker data, as reported by the ccxt library: +When used on the leading position of the chain of Pairlist Handlers, it does not consider `pair_whitelist` configuration setting, but selects the top assets from all available markets (with matching stake-currency) on the exchange. + +The `refresh_period` setting allows to define the period (in seconds), at which the pairlist will be refreshed. Defaults to 1800s (30 minutes). + +`VolumePairList` is based on the ticker data from exchange, as reported by the ccxt library: * The `quoteVolume` is the amount of quote (stake) currency traded (bought or sold) in last 24 hours. @@ -604,30 +610,34 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis ], ``` -#### Precision Filter +#### PrecisionFilter -Filters low-value coins which would not allow setting a stoploss. +Filters low-value coins which would not allow setting stoplosses. -#### Price Pair Filter +#### PriceFilter The `PriceFilter` allows filtering of pairs by price. -Currently, only `low_price_ratio` is implemented, where a raise of 1 price unit (pip) is below the `low_price_ratio` ratio. + +Currently, only `low_price_ratio` setting is implemented, where a raise of 1 price unit (pip) is below the `low_price_ratio` ratio. This option is disabled by default, and will only apply if set to <> 0. -Calculation example: -Min price precision is 8 decimals. If price is 0.00000011 - one step would be 0.00000012 - which is almost 10% higher than the previous value. +Calculation example: -These pairs are dangerous since it may be impossible to place the desired stoploss - and often result in high losses. +Min price precision is 8 decimals. If price is 0.00000011 - one step would be 0.00000012 - which is almost 10% higher than the previous value. -#### Spread Filter +These pairs are dangerous since it may be impossible to place the desired stoploss - and often result in high losses. Here is what the PriceFilters takes over. + +#### SpreadFilter Removes pairs that have a difference between asks and bids above the specified ratio (default `0.005`). + Example: -If `DOGE/BTC` maximum bid is 0.00000026 and minimum ask is 0.00000027 the ratio is calculated as: `1 - bid/ask ~= 0.037` which is `> 0.005` -### Full Pairlist example +If `DOGE/BTC` maximum bid is 0.00000026 and minimum ask is 0.00000027 the ratio is calculated as: `1 - bid/ask ~= 0.037` which is `> 0.005` -The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, sorting by `quoteVolume` and applies both [`PrecisionFilter`](#precision-filter) and [`PriceFilter`](#price-pair-filter), filtering all assets where 1 priceunit is > 1%. +### Full example of Pairlist Handlers + +The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, sorting pairs by `quoteVolume` and applies both [`PrecisionFilter`](#precision-filter) and [`PriceFilter`](#price-pair-filter), filtering all assets where 1 priceunit is > 1%. ```json "exchange": { From 5a9a31351abd7e0a2cc2226eaa7904e389ad70be Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 18 May 2020 11:40:25 +0200 Subject: [PATCH 2366/3421] Adjust empty f-strings to be non-fstrings --- freqtrade/commands/build_config_commands.py | 2 +- freqtrade/commands/cli_options.py | 4 ++-- freqtrade/commands/deploy_commands.py | 2 +- freqtrade/exchange/exchange.py | 3 +-- freqtrade/pairlist/VolumePairList.py | 2 +- freqtrade/rpc/rpc.py | 2 +- freqtrade/rpc/telegram.py | 4 ++-- freqtrade/rpc/webhook.py | 6 +++--- tests/conftest.py | 18 +++++++++-------- tests/exchange/test_exchange.py | 6 +++--- tests/optimize/test_backtesting.py | 2 +- tests/optimize/test_hyperopt.py | 2 +- tests/rpc/test_rpc.py | 6 +++--- tests/test_configuration.py | 2 +- tests/test_freqtradebot.py | 22 +++++++++------------ 15 files changed, 40 insertions(+), 43 deletions(-) diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py index 58ac6ec27..87098f53c 100644 --- a/freqtrade/commands/build_config_commands.py +++ b/freqtrade/commands/build_config_commands.py @@ -163,7 +163,7 @@ def deploy_new_config(config_path: Path, selections: Dict[str, Any]) -> None: ) except TemplateNotFound: selections['exchange'] = render_template( - templatefile=f"subtemplates/exchange_generic.j2", + templatefile="subtemplates/exchange_generic.j2", arguments=selections ) diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index a8f2ffdba..ee9208c33 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -372,8 +372,8 @@ AVAILABLE_CLI_OPTIONS = { ), "timeframes": Arg( '-t', '--timeframes', - help=f'Specify which tickers to download. Space-separated list. ' - f'Default: `1m 5m`.', + help='Specify which tickers to download. Space-separated list. ' + 'Default: `1m 5m`.', choices=['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', '6h', '8h', '12h', '1d', '3d', '1w'], default=['1m', '5m'], diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index a29ba346f..86562fa7c 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -51,7 +51,7 @@ def deploy_new_strategy(strategy_name: str, strategy_path: Path, subtemplate: st ) additional_methods = render_template_with_fallback( templatefile=f"subtemplates/strategy_methods_{subtemplate}.j2", - templatefallbackfile=f"subtemplates/strategy_methods_empty.j2", + templatefallbackfile="subtemplates/strategy_methods_empty.j2", ) strategy_text = render_template(templatefile='base_strategy.py.j2', diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 6ad7ad582..68022662a 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -366,8 +366,7 @@ class Exchange: f"Invalid timeframe '{timeframe}'. This exchange supports: {self.timeframes}") if timeframe and timeframe_to_minutes(timeframe) < 1: - raise OperationalException( - f"Timeframes < 1m are currently not supported by Freqtrade.") + raise OperationalException("Timeframes < 1m are currently not supported by Freqtrade.") def validate_ordertypes(self, order_types: Dict) -> None: """ diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index e20fb3577..981e9915e 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -25,7 +25,7 @@ class VolumePairList(IPairList): if 'number_assets' not in self._pairlistconfig: raise OperationalException( - f'`number_assets` not specified. Please check your configuration ' + '`number_assets` not specified. Please check your configuration ' 'for "pairlist.config.number_assets"') self._stake_currency = config['stake_currency'] diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 3f6d0729d..21f54de50 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -545,5 +545,5 @@ class RPC: def _rpc_edge(self) -> List[Dict[str, Any]]: """ Returns information related to Edge """ if not self._freqtrade.edge: - raise RPCException(f'Edge is not enabled.') + raise RPCException('Edge is not enabled.') return self._freqtrade.edge.accepted_pairs() diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 1d7ebb21a..dfda15a26 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -234,7 +234,7 @@ class Telegram(RPC): lines.append("*Open Order:* `{open_order}`") # Filter empty lines using list-comprehension - messages.append("\n".join([l for l in lines if l]).format(**r)) + messages.append("\n".join([line for line in lines if line]).format(**r)) for msg in messages: self._send_msg(msg) @@ -289,7 +289,7 @@ class Telegram(RPC): 'Day', f'Profit {stake_cur}', f'Profit {fiat_disp_cur}', - f'Trades', + 'Trades', ], tablefmt='simple') message = f'Daily Profit over the last {timescale} days:\n
            {stats_tab}
            ' diff --git a/freqtrade/rpc/webhook.py b/freqtrade/rpc/webhook.py index 1309663d4..322d990ee 100644 --- a/freqtrade/rpc/webhook.py +++ b/freqtrade/rpc/webhook.py @@ -47,9 +47,9 @@ class Webhook(RPC): valuedict = self._config['webhook'].get('webhooksell', None) elif msg['type'] == RPCMessageType.SELL_CANCEL_NOTIFICATION: valuedict = self._config['webhook'].get('webhooksellcancel', None) - elif msg['type'] in(RPCMessageType.STATUS_NOTIFICATION, - RPCMessageType.CUSTOM_NOTIFICATION, - RPCMessageType.WARNING_NOTIFICATION): + elif msg['type'] in (RPCMessageType.STATUS_NOTIFICATION, + RPCMessageType.CUSTOM_NOTIFICATION, + RPCMessageType.WARNING_NOTIFICATION): valuedict = self._config['webhook'].get('webhookstatus', None) else: raise NotImplementedError('Unknown message type: {}'.format(msg['type'])) diff --git a/tests/conftest.py b/tests/conftest.py index 36c60e27e..d15cba1de 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1705,7 +1705,7 @@ def hyperopt_results(): { 'loss': 0.4366182531161519, 'params_dict': { - 'mfi-value': 15, 'fastd-value': 20, 'adx-value': 25, 'rsi-value': 28, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 88, 'sell-fastd-value': 97, 'sell-adx-value': 51, 'sell-rsi-value': 67, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1190, 'roi_t2': 541, 'roi_t3': 408, 'roi_p1': 0.026035863879169705, 'roi_p2': 0.12508730043628782, 'roi_p3': 0.27766427921605896, 'stoploss': -0.2562930402099556}, # noqa: E501 + 'mfi-value': 15, 'fastd-value': 20, 'adx-value': 25, 'rsi-value': 28, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 88, 'sell-fastd-value': 97, 'sell-adx-value': 51, 'sell-rsi-value': 67, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper', 'roi_t1': 1190, 'roi_t2': 541, 'roi_t3': 408, 'roi_p1': 0.026035863879169705, 'roi_p2': 0.12508730043628782, 'roi_p3': 0.27766427921605896, 'stoploss': -0.2562930402099556}, # noqa: E501 'params_details': {'buy': {'mfi-value': 15, 'fastd-value': 20, 'adx-value': 25, 'rsi-value': 28, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, 'sell': {'sell-mfi-value': 88, 'sell-fastd-value': 97, 'sell-adx-value': 51, 'sell-rsi-value': 67, 'sell-mfi-enabled': False, 'sell-fastd-enabled': False, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-bb_upper'}, 'roi': {0: 0.4287874435315165, 408: 0.15112316431545753, 949: 0.026035863879169705, 2139: 0}, 'stoploss': {'stoploss': -0.2562930402099556}}, # noqa: E501 'results_metrics': {'trade_count': 2, 'avg_profit': -1.254995, 'total_profit': -0.00125625, 'profit': -2.50999, 'duration': 3930.0}, # noqa: E501 'results_explanation': ' 2 trades. Avg profit -1.25%. Total profit -0.00125625 BTC ( -2.51Σ%). Avg duration 3930.0 min.', # noqa: E501 @@ -1716,11 +1716,12 @@ def hyperopt_results(): }, { 'loss': 20.0, 'params_dict': { - 'mfi-value': 17, 'fastd-value': 38, 'adx-value': 48, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 96, 'sell-fastd-value': 68, 'sell-adx-value': 63, 'sell-rsi-value': 81, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal', 'roi_t1': 334, 'roi_t2': 683, 'roi_t3': 140, 'roi_p1': 0.06403981740598495, 'roi_p2': 0.055519840060645045, 'roi_p3': 0.3253712811342459, 'stoploss': -0.338070047333259}, # noqa: E501 - 'params_details': {'buy': {'mfi-value': 17, 'fastd-value': 38, 'adx-value': 48, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, # noqa: E501 - 'sell': {'sell-mfi-value': 96, 'sell-fastd-value': 68, 'sell-adx-value': 63, 'sell-rsi-value': 81, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal'}, # noqa: E501 - 'roi': {0: 0.4449309386008759, 140: 0.11955965746663, 823: 0.06403981740598495, 1157: 0}, # noqa: E501 - 'stoploss': {'stoploss': -0.338070047333259}}, + 'mfi-value': 17, 'fastd-value': 38, 'adx-value': 48, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal', 'sell-mfi-value': 96, 'sell-fastd-value': 68, 'sell-adx-value': 63, 'sell-rsi-value': 81, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal', 'roi_t1': 334, 'roi_t2': 683, 'roi_t3': 140, 'roi_p1': 0.06403981740598495, 'roi_p2': 0.055519840060645045, 'roi_p3': 0.3253712811342459, 'stoploss': -0.338070047333259}, # noqa: E501 + 'params_details': { + 'buy': {'mfi-value': 17, 'fastd-value': 38, 'adx-value': 48, 'rsi-value': 22, 'mfi-enabled': True, 'fastd-enabled': False, 'adx-enabled': True, 'rsi-enabled': True, 'trigger': 'macd_cross_signal'}, # noqa: E501 + 'sell': {'sell-mfi-value': 96, 'sell-fastd-value': 68, 'sell-adx-value': 63, 'sell-rsi-value': 81, 'sell-mfi-enabled': False, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': True, 'sell-trigger': 'sell-sar_reversal'}, # noqa: E501 + 'roi': {0: 0.4449309386008759, 140: 0.11955965746663, 823: 0.06403981740598495, 1157: 0}, # noqa: E501 + 'stoploss': {'stoploss': -0.338070047333259}}, 'results_metrics': {'trade_count': 1, 'avg_profit': 0.12357, 'total_profit': 6.185e-05, 'profit': 0.12357, 'duration': 1200.0}, # noqa: E501 'results_explanation': ' 1 trades. Avg profit 0.12%. Total profit 0.00006185 BTC ( 0.12Σ%). Avg duration 1200.0 min.', # noqa: E501 'total_profit': 6.185e-05, @@ -1767,8 +1768,9 @@ def hyperopt_results(): }, { 'loss': 4.713497421432944, 'params_dict': {'mfi-value': 13, 'fastd-value': 41, 'adx-value': 21, 'rsi-value': 29, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower', 'sell-mfi-value': 99, 'sell-fastd-value': 60, 'sell-adx-value': 81, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal', 'roi_t1': 771, 'roi_t2': 620, 'roi_t3': 145, 'roi_p1': 0.0586919200378493, 'roi_p2': 0.04984118697312542, 'roi_p3': 0.37521058680247044, 'stoploss': -0.14613268022709905}, # noqa: E501 - 'params_details': {'buy': {'mfi-value': 13, 'fastd-value': 41, 'adx-value': 21, 'rsi-value': 29, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower'}, 'sell': {'sell-mfi-value': 99, 'sell-fastd-value': 60, 'sell-adx-value': 81, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.4837436938134452, 145: 0.10853310701097472, 765: 0.0586919200378493, 1536: 0}, # noqa: E501 - 'stoploss': {'stoploss': -0.14613268022709905}}, # noqa: E501 + 'params_details': { + 'buy': {'mfi-value': 13, 'fastd-value': 41, 'adx-value': 21, 'rsi-value': 29, 'mfi-enabled': False, 'fastd-enabled': True, 'adx-enabled': False, 'rsi-enabled': False, 'trigger': 'bb_lower'}, 'sell': {'sell-mfi-value': 99, 'sell-fastd-value': 60, 'sell-adx-value': 81, 'sell-rsi-value': 69, 'sell-mfi-enabled': True, 'sell-fastd-enabled': True, 'sell-adx-enabled': True, 'sell-rsi-enabled': False, 'sell-trigger': 'sell-macd_cross_signal'}, 'roi': {0: 0.4837436938134452, 145: 0.10853310701097472, 765: 0.0586919200378493, 1536: 0}, # noqa: E501 + 'stoploss': {'stoploss': -0.14613268022709905}}, # noqa: E501 'results_metrics': {'trade_count': 318, 'avg_profit': -0.39833954716981146, 'total_profit': -0.06339929, 'profit': -126.67197600000004, 'duration': 3140.377358490566}, # noqa: E501 'results_explanation': ' 318 trades. Avg profit -0.40%. Total profit -0.06339929 BTC (-126.67Σ%). Avg duration 3140.4 min.', # noqa: E501 'total_profit': -0.06339929, diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index aa42950e2..7b1e9ddaa 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -517,9 +517,9 @@ def test_validate_pairs_restricted(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) - assert log_has(f"Pair XRP/BTC is restricted for some users on this exchange." - f"Please check if you are impacted by this restriction " - f"on the exchange and eventually remove XRP/BTC from your whitelist.", caplog) + assert log_has("Pair XRP/BTC is restricted for some users on this exchange." + "Please check if you are impacted by this restriction " + "on the exchange and eventually remove XRP/BTC from your whitelist.", caplog) def test_validate_pairs_stakecompatibility(default_conf, mocker, caplog): diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 093cbf966..019914720 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -555,7 +555,7 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) """ Buy every xth candle - sell every other xth -2 (hold on to pairs a bit) """ - if metadata['pair'] in('ETH/BTC', 'LTC/BTC'): + if metadata['pair'] in ('ETH/BTC', 'LTC/BTC'): multi = 20 else: multi = 18 diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index cc8b9aa37..90e047954 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -820,7 +820,7 @@ def test_continue_hyperopt(mocker, default_conf, caplog): Hyperopt(default_conf) assert unlinkmock.call_count == 0 - assert log_has(f"Continuing on previous hyperopt results.", caplog) + assert log_has("Continuing on previous hyperopt results.", caplog) def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None: diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 1c3a43e4b..63691dfb4 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -83,7 +83,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: } == results[0] mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', - MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) + MagicMock(side_effect=DependencyException("Pair 'ETH/BTC' not available"))) results = rpc._rpc_trade_status() assert isnan(results[0]['current_profit']) assert isnan(results[0]['current_rate']) @@ -167,7 +167,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: assert '-0.41% (-0.06)' == result[0][3] mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', - MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) + MagicMock(side_effect=DependencyException("Pair 'ETH/BTC' not available"))) result, headers = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') assert 'instantly' == result[0][2] assert 'ETH/BTC' in result[0][1] @@ -319,7 +319,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, # Test non-available pair mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', - MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available"))) + MagicMock(side_effect=DependencyException("Pair 'ETH/BTC' not available"))) stats = rpc._rpc_trade_statistics(stake_currency, fiat_display_currency) assert stats['trade_count'] == 2 assert stats['first_trade_date'] == 'just now' diff --git a/tests/test_configuration.py b/tests/test_configuration.py index c89f1381e..edcbe4516 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -73,7 +73,7 @@ def test_load_config_file_error(default_conf, mocker, caplog) -> None: mocker.patch('freqtrade.configuration.load_config.open', mocker.mock_open(read_data=filedata)) mocker.patch.object(Path, "read_text", MagicMock(return_value=filedata)) - with pytest.raises(OperationalException, match=f".*Please verify the following segment.*"): + with pytest.raises(OperationalException, match=r".*Please verify the following segment.*"): load_config_file('somefile') diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index a1358abdc..9d9d133cc 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3153,10 +3153,8 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, caplog, mocker) caplog.set_level(logging.DEBUG) # Sell as trailing-stop is reached assert freqtrade.handle_trade(trade) is True - assert log_has( - f"ETH/BTC - HIT STOP: current price at 0.000012, " - f"stoploss is 0.000015, " - f"initial stoploss was at 0.000010, trade opened at 0.000011", caplog) + assert log_has("ETH/BTC - HIT STOP: current price at 0.000012, stoploss is 0.000015, " + "initial stoploss was at 0.000010, trade opened at 0.000011", caplog) assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value @@ -3199,8 +3197,8 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee, })) # stop-loss not reached, adjusted stoploss assert freqtrade.handle_trade(trade) is False - assert log_has(f"ETH/BTC - Using positive stoploss: 0.01 offset: 0 profit: 0.2666%", caplog) - assert log_has(f"ETH/BTC - Adjusting stoploss...", caplog) + assert log_has("ETH/BTC - Using positive stoploss: 0.01 offset: 0 profit: 0.2666%", caplog) + assert log_has("ETH/BTC - Adjusting stoploss...", caplog) assert trade.stop_loss == 0.0000138501 mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', @@ -3256,9 +3254,8 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee, })) # stop-loss not reached, adjusted stoploss assert freqtrade.handle_trade(trade) is False - assert log_has(f"ETH/BTC - Using positive stoploss: 0.01 offset: 0.011 profit: 0.2666%", - caplog) - assert log_has(f"ETH/BTC - Adjusting stoploss...", caplog) + assert log_has("ETH/BTC - Using positive stoploss: 0.01 offset: 0.011 profit: 0.2666%", caplog) + assert log_has("ETH/BTC - Adjusting stoploss...", caplog) assert trade.stop_loss == 0.0000138501 mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', @@ -3322,7 +3319,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, # stop-loss should not be adjusted as offset is not reached yet assert freqtrade.handle_trade(trade) is False - assert not log_has(f"ETH/BTC - Adjusting stoploss...", caplog) + assert not log_has("ETH/BTC - Adjusting stoploss...", caplog) assert trade.stop_loss == 0.0000098910 # price rises above the offset (rises 12% when the offset is 5.5%) @@ -3334,9 +3331,8 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee, })) assert freqtrade.handle_trade(trade) is False - assert log_has(f"ETH/BTC - Using positive stoploss: 0.05 offset: 0.055 profit: 0.1218%", - caplog) - assert log_has(f"ETH/BTC - Adjusting stoploss...", caplog) + assert log_has("ETH/BTC - Using positive stoploss: 0.05 offset: 0.055 profit: 0.1218%", caplog) + assert log_has("ETH/BTC - Adjusting stoploss...", caplog) assert trade.stop_loss == 0.0000117705 From cc28aae5cb02e61e424db23399d8535d280aebfd Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 18 May 2020 12:44:20 +0300 Subject: [PATCH 2367/3421] Fix the links again --- docs/configuration.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 7d99660b8..d9299d21f 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -81,14 +81,14 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `exchange.key` | API key to use for the exchange. Only required when you are in production mode.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String | `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String | `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String -| `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#pairlists)).
            **Datatype:** List -| `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#pairlists)).
            **Datatype:** List +| `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#pairlists-and-pairlist-handlers)).
            **Datatype:** List +| `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#pairlists-and-pairlist-handlers)).
            **Datatype:** List | `exchange.ccxt_config` | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
            **Datatype:** Dict | `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
            **Datatype:** Dict | `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded.
            *Defaults to `60` minutes.*
            **Datatype:** Positive Integer | `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation. | `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
            *Defaults to `true`.*
            **Datatype:** Boolean -| `pairlists` | Define one or more pairlists to be used. [More information below](#pairlists).
            *Defaults to `StaticPairList`.*
            **Datatype:** List of Dicts +| `pairlists` | Define one or more pairlists to be used. [More information below](#pairlists-and-pairlist-handlers).
            *Defaults to `StaticPairList`.*
            **Datatype:** List of Dicts | `telegram.enabled` | Enable the usage of Telegram.
            **Datatype:** Boolean | `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String | `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String From f54dc7affd54fbb1b7933ecdb776e53c2e033a2d Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 18 May 2020 13:18:05 +0300 Subject: [PATCH 2368/3421] Make flake happy --- tests/pairlist/test_pairlist.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 3a8f94974..e013122e4 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -244,7 +244,7 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t whitelist = freqtrade.pairlists.whitelist assert isinstance(whitelist, list) - + # Verify length of pairlist matches (used for ShuffleFilter without seed) if type(whitelist_result) is list: assert whitelist == whitelist_result From 627c5059f0066ca7bbe6e2c5e3fc0a2ed7e9c8cd Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 18 May 2020 13:54:21 +0300 Subject: [PATCH 2369/3421] Move create_pair_list to pairlistmanager --- freqtrade/data/common.py | 7 ------- freqtrade/data/dataprovider.py | 8 +------- freqtrade/exchange/exchange.py | 2 +- freqtrade/freqtradebot.py | 2 +- freqtrade/pairlist/pairlistmanager.py | 13 ++++++++++++- freqtrade/strategy/interface.py | 2 +- 6 files changed, 16 insertions(+), 18 deletions(-) delete mode 100644 freqtrade/data/common.py diff --git a/freqtrade/data/common.py b/freqtrade/data/common.py deleted file mode 100644 index 7a61d51ea..000000000 --- a/freqtrade/data/common.py +++ /dev/null @@ -1,7 +0,0 @@ -""" -Common datatypes -""" -from typing import List, Tuple - -# List of pairs with their timeframes -ListPairsWithTimeframes = List[Tuple[str, str]] diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 602a92358..5668e2437 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -9,10 +9,10 @@ from typing import Any, Dict, List, Optional from pandas import DataFrame -from freqtrade.data.common import ListPairsWithTimeframes from freqtrade.data.history import load_pair_history from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.exchange import Exchange +from freqtrade.pairlist.pairlistmanager import ListPairsWithTimeframes from freqtrade.state import RunMode @@ -45,12 +45,6 @@ class DataProvider: """ return list(self._exchange._klines.keys()) - def create_pair_list(self, pairs: List[str], timeframe: str = None) -> ListPairsWithTimeframes: - """ - Create list of pair tuples with (pair, ticker_interval) - """ - return [(pair, timeframe or self._config['ticker_interval']) for pair in pairs] - def ohlcv(self, pair: str, timeframe: str = None, copy: bool = True) -> DataFrame: """ Get candle (OHLCV) data for the given pair as DataFrame diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 43ed65787..858cdecab 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -18,12 +18,12 @@ from ccxt.base.decimal_to_precision import (ROUND_DOWN, ROUND_UP, TICK_SIZE, TRUNCATE, decimal_to_precision) from pandas import DataFrame -from freqtrade.data.common import ListPairsWithTimeframes from freqtrade.data.converter import ohlcv_to_dataframe, trades_dict_to_list from freqtrade.exceptions import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async from freqtrade.misc import deep_merge_dicts, safe_value_fallback +from freqtrade.pairlist.pairlistmanager import ListPairsWithTimeframes CcxtModuleType = Any diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 6b99e95b6..6ea5ec970 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -145,7 +145,7 @@ class FreqtradeBot: self.active_pair_whitelist = self._refresh_active_whitelist(trades) # Refreshing candles - self.dataprovider.refresh(self.dataprovider.create_pair_list(self.active_pair_whitelist), + self.dataprovider.refresh(self.pairlists.create_pair_list(self.active_pair_whitelist), self.strategy.informative_pairs()) with self._sell_lock: diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 5b4c5b602..163836c4d 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -5,7 +5,7 @@ Provides lists as configured in config.json """ import logging -from typing import Dict, List +from typing import Dict, List, Tuple from cachetools import TTLCache, cached @@ -13,9 +13,14 @@ from freqtrade.exceptions import OperationalException from freqtrade.pairlist.IPairList import IPairList from freqtrade.resolvers import PairListResolver + logger = logging.getLogger(__name__) +# List of pairs with their timeframes +ListPairsWithTimeframes = List[Tuple[str, str]] + + class PairListManager(): def __init__(self, exchange, config: dict) -> None: @@ -94,3 +99,9 @@ class PairListManager(): pairlist = IPairList.verify_blacklist(pairlist, self.blacklist, True) self._whitelist = pairlist + + def create_pair_list(self, pairs: List[str], timeframe: str = None) -> ListPairsWithTimeframes: + """ + Create list of pair tuples with (pair, ticker_interval) + """ + return [(pair, timeframe or self._config['ticker_interval']) for pair in pairs] diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 5173265bc..d5d171bec 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -12,10 +12,10 @@ from typing import Dict, NamedTuple, Optional, Tuple import arrow from pandas import DataFrame -from freqtrade.data.common import ListPairsWithTimeframes from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import StrategyError from freqtrade.exchange import timeframe_to_minutes +from freqtrade.pairlist.pairlistmanager import ListPairsWithTimeframes from freqtrade.persistence import Trade from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from freqtrade.wallets import Wallets From a0c9f7bac8ba255711087608e16139d7fa01ebdc Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 18 May 2020 11:32:03 +0000 Subject: [PATCH 2370/3421] Bump scikit-learn from 0.22.2.post1 to 0.23.0 Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.22.2.post1 to 0.23.0. - [Release notes](https://github.com/scikit-learn/scikit-learn/releases) - [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.22.2.post1...0.23.0) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index c3dda6c4b..a1431bf8f 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -3,7 +3,7 @@ # Required for hyperopt scipy==1.4.1 -scikit-learn==0.22.2.post1 +scikit-learn==0.23.0 scikit-optimize==0.7.4 filelock==3.0.12 joblib==0.15.1 From 0c8aff98e093eb539802885e3247d4ed5c0f32fb Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 18 May 2020 15:03:36 +0300 Subject: [PATCH 2371/3421] Make flake happy --- freqtrade/pairlist/pairlistmanager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 9c8f0de1f..5c3a3aaa7 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -116,4 +116,4 @@ class PairListManager(): """ Create list of pair tuples with (pair, ticker_interval) """ - return [(pair, timeframe or self._config['ticker_interval']) for pair in pairs] \ No newline at end of file + return [(pair, timeframe or self._config['ticker_interval']) for pair in pairs] From 8bdd5e71215963cf0fa2e22d5fb5c7bfabf67a85 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 18 May 2020 15:20:51 +0300 Subject: [PATCH 2372/3421] Minor: correct import of retrier --- freqtrade/exchange/kraken.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index 243f1a6d6..932d82a27 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -7,7 +7,7 @@ import ccxt from freqtrade.exceptions import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange import Exchange -from freqtrade.exchange.exchange import retrier +from freqtrade.exchange.common import retrier logger = logging.getLogger(__name__) From 6951b20aa030ceee5bcd0d6acd6e5679ce9d4aea Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 18 May 2020 17:31:34 +0300 Subject: [PATCH 2373/3421] Do not throttle with DependencyException in retrier --- freqtrade/exchange/common.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index b38ed35a3..a10d41247 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -1,6 +1,6 @@ import logging -from freqtrade.exceptions import DependencyException, TemporaryError +from freqtrade.exceptions import TemporaryError logger = logging.getLogger(__name__) @@ -93,7 +93,7 @@ def retrier_async(f): count = kwargs.pop('count', API_RETRY_COUNT) try: return await f(*args, **kwargs) - except (TemporaryError, DependencyException) as ex: + except TemporaryError as ex: logger.warning('%s() returned exception: "%s"', f.__name__, ex) if count > 0: count -= 1 @@ -111,7 +111,7 @@ def retrier(f): count = kwargs.pop('count', API_RETRY_COUNT) try: return f(*args, **kwargs) - except (TemporaryError, DependencyException) as ex: + except TemporaryError as ex: logger.warning('%s() returned exception: "%s"', f.__name__, ex) if count > 0: count -= 1 From 115586a50f2cc96580ce0fa989b68995fd9d087d Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 18 May 2020 21:59:50 +0300 Subject: [PATCH 2374/3421] Introduce freqtrade.typing --- freqtrade/data/dataprovider.py | 2 +- freqtrade/exchange/exchange.py | 2 +- freqtrade/pairlist/pairlistmanager.py | 7 ++----- freqtrade/strategy/interface.py | 2 +- freqtrade/typing.py | 8 ++++++++ 5 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 freqtrade/typing.py diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 5668e2437..ef03307cc 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -12,8 +12,8 @@ from pandas import DataFrame from freqtrade.data.history import load_pair_history from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.exchange import Exchange -from freqtrade.pairlist.pairlistmanager import ListPairsWithTimeframes from freqtrade.state import RunMode +from freqtrade.typing import ListPairsWithTimeframes logger = logging.getLogger(__name__) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 36d1ddca4..c60eb766a 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -23,7 +23,7 @@ from freqtrade.exceptions import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async from freqtrade.misc import deep_merge_dicts, safe_value_fallback -from freqtrade.pairlist.pairlistmanager import ListPairsWithTimeframes +from freqtrade.typing import ListPairsWithTimeframes CcxtModuleType = Any diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 5c3a3aaa7..78a6a9668 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -3,22 +3,19 @@ PairList manager class """ import logging from copy import deepcopy -from typing import Dict, List, Tuple +from typing import Dict, List from cachetools import TTLCache, cached from freqtrade.exceptions import OperationalException from freqtrade.pairlist.IPairList import IPairList from freqtrade.resolvers import PairListResolver +from freqtrade.typing import ListPairsWithTimeframes logger = logging.getLogger(__name__) -# List of pairs with their timeframes -ListPairsWithTimeframes = List[Tuple[str, str]] - - class PairListManager(): def __init__(self, exchange, config: dict) -> None: diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index d5d171bec..8031c7932 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -15,9 +15,9 @@ from pandas import DataFrame from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import StrategyError from freqtrade.exchange import timeframe_to_minutes -from freqtrade.pairlist.pairlistmanager import ListPairsWithTimeframes from freqtrade.persistence import Trade from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper +from freqtrade.typing import ListPairsWithTimeframes from freqtrade.wallets import Wallets diff --git a/freqtrade/typing.py b/freqtrade/typing.py new file mode 100644 index 000000000..3cb7cf816 --- /dev/null +++ b/freqtrade/typing.py @@ -0,0 +1,8 @@ +""" +Common Freqtrade types +""" + +from typing import List, Tuple + +# List of pairs with their timeframes +ListPairsWithTimeframes = List[Tuple[str, str]] From 2c6c287c4b30004b05d9e2842c1f741dbc5e8f97 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Mon, 18 May 2020 22:24:38 +0300 Subject: [PATCH 2375/3421] Address comments made in review --- docs/configuration.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index d9299d21f..87005ac74 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -555,11 +555,11 @@ Pairlist Handlers define the list of pairs (pairlist) that the bot should trade. In your configuration, you can use Static Pairlist (defined by the [`StaticPairList`](#static-pair-list) Pairlist Handler) and Dynamic Pairlist (defined by the [`VolumePairList`](#volume-pair-list) Pairlist Handler). -Additionaly, [`PrecisionFilter`](#precision-filter), [`PriceFilter`](#price-pair-filter) and [`SpreadFilter`](#spread-pair-filter) act as Pairlist Filters, removing low-value pairs. +Additionaly, [`PrecisionFilter`](#precision-filter), [`PriceFilter`](#price-pair-filter) and [`SpreadFilter`](#spread-pair-filter) act as Pairlist Filters, removing certain pairs. -If multiple Pairlist Handlers are used, they are chained and a combination of all Pairlist Handlers forms the resulting pairlist the bot uses for trading / backtesting / downloading historical data. Pairlist Handlers are executed in the sequence they are configured. You should always configure either `StaticPairList` or `VolumePairList` as the starting Pairlist Handler. +If multiple Pairlist Handlers are used, they are chained and a combination of all Pairlist Handlers forms the resulting pairlist the bot uses for trading and backtesting. Pairlist Handlers are executed in the sequence they are configured. You should always configure either `StaticPairList` or `VolumePairList` as the starting Pairlist Handler. -Inactive markets and blacklisted pairs are always removed from the resulting pairlist. Blacklisted pairs (those in the `pair_blacklist` configuration setting) are also always removed from the resulting pairlist. +Inactive markets are always removed from the resulting pairlist. Explicitly blacklisted pairs (those in the `pair_blacklist` configuration setting) are also always removed from the resulting pairlist. ### Available Pairlist Handlers @@ -588,9 +588,6 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis `VolumePairList` employs sorting/filtering of pairs by their trading volume. I selects `number_assets` top pairs with sorting based on the `sort_key` (which can only be `quoteVolume`). -!!! Deprecation - Other values for `sort_key` are now deprecated and this setting will be removed in the future versions. - When used in the chain of Pairlist Handlers in a non-leading position (after StaticPairList and other Pairlist Filters), `VolumePairList` considers outputs of previous Pairlist Handlers, adding its sorting/selection of the pairs by the trading volume. When used on the leading position of the chain of Pairlist Handlers, it does not consider `pair_whitelist` configuration setting, but selects the top assets from all available markets (with matching stake-currency) on the exchange. From 30d1a8589553c42dafffde391457d5466c018ef3 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 18 May 2020 23:46:23 +0300 Subject: [PATCH 2376/3421] Adjust docs --- docs/configuration.md | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 87005ac74..93e53de6f 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -555,7 +555,7 @@ Pairlist Handlers define the list of pairs (pairlist) that the bot should trade. In your configuration, you can use Static Pairlist (defined by the [`StaticPairList`](#static-pair-list) Pairlist Handler) and Dynamic Pairlist (defined by the [`VolumePairList`](#volume-pair-list) Pairlist Handler). -Additionaly, [`PrecisionFilter`](#precision-filter), [`PriceFilter`](#price-pair-filter) and [`SpreadFilter`](#spread-pair-filter) act as Pairlist Filters, removing certain pairs. +Additionaly, [`PrecisionFilter`](#precisionfilter), [`PriceFilter`](#pricefilter), [`ShuffleFilter`](#shufflefilter) and [`SpreadFilter`](#spreadfilter) act as Pairlist Filters, removing certain pairs and/or moving their positions in the pairlist. If multiple Pairlist Handlers are used, they are chained and a combination of all Pairlist Handlers forms the resulting pairlist the bot uses for trading and backtesting. Pairlist Handlers are executed in the sequence they are configured. You should always configure either `StaticPairList` or `VolumePairList` as the starting Pairlist Handler. @@ -565,9 +565,10 @@ Inactive markets are always removed from the resulting pairlist. Explicitly blac * [`StaticPairList`](#static-pair-list) (default, if not configured differently) * [`VolumePairList`](#volume-pair-list) -* [`PrecisionFilter`](#precision-filter) -* [`PriceFilter`](#price-pair-filter) -* [`SpreadFilter`](#spread-filter) +* [`PrecisionFilter`](#precisionfilter) +* [`PriceFilter`](#pricefilter) +* [`ShuffleFilter`](#shufflefilter) +* [`SpreadFilter`](#spreadfilter) !!! Tip "Testing pairlists" Pairlist configurations can be quite tricky to get right. Best use the [`test-pairlist`](utils.md#test-pairlist) utility subcommand to test your configuration quickly. @@ -624,17 +625,24 @@ Min price precision is 8 decimals. If price is 0.00000011 - one step would be 0. These pairs are dangerous since it may be impossible to place the desired stoploss - and often result in high losses. Here is what the PriceFilters takes over. +#### ShuffleFilter + +Shuffles (randomizes) pairs in the pairlist. It can be used for preventing the bot from trading some of the pairs more frequently then others when you want all pairs be treated with the same priority. + +!!! Tip + You may set the `seed` value for this Pairlist to obtain reproducible results, which can be useful for repeated backtesting sessions. If `seed` is not set, the pairs are shuffled in the non-repeatable random order. + #### SpreadFilter -Removes pairs that have a difference between asks and bids above the specified ratio (default `0.005`). +Removes pairs that have a difference between asks and bids above the specified ratio, `max_spread_ratio` (defaults to `0.005`). Example: -If `DOGE/BTC` maximum bid is 0.00000026 and minimum ask is 0.00000027 the ratio is calculated as: `1 - bid/ask ~= 0.037` which is `> 0.005` +If `DOGE/BTC` maximum bid is 0.00000026 and minimum ask is 0.00000027, the ratio is calculated as: `1 - bid/ask ~= 0.037` which is `> 0.005` and this pair will be filtered out. ### Full example of Pairlist Handlers -The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, sorting pairs by `quoteVolume` and applies both [`PrecisionFilter`](#precision-filter) and [`PriceFilter`](#price-pair-filter), filtering all assets where 1 priceunit is > 1%. +The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, sorting pairs by `quoteVolume` and applies both [`PrecisionFilter`](#precisionfilter) and [`PriceFilter`](#price-filter), filtering all assets where 1 priceunit is > 1%. Then the `SpreadFilter` is applied and pairs are finally shuffled with the random seed set to some predefined value. ```json "exchange": { @@ -648,7 +656,9 @@ The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, "sort_key": "quoteVolume", }, {"method": "PrecisionFilter"}, - {"method": "PriceFilter", "low_price_ratio": 0.01} + {"method": "PriceFilter", "low_price_ratio": 0.01}, + {"method": "SpreadFilter", "max_spread_ratio": 0.005}, + {"method": "ShuffleFilter", "seed": 42} ], ``` From d8352bd6324561ea75b6064ad08b1c3751dccfa4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 18 May 2020 23:48:06 +0300 Subject: [PATCH 2377/3421] Fix tests for SpreadFilter --- tests/pairlist/test_pairlist.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index e013122e4..c4893d7e4 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -176,7 +176,7 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): {"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}, {"method": "PriceFilter", "low_price_ratio": 0.03}, - {"method": "SpreadFilter", "max_spread": 0.005}, + {"method": "SpreadFilter", "max_spread_ratio": 0.005}, {"method": "ShuffleFilter"}], "ETH", []), # Precisionfilter and quote volume @@ -211,7 +211,7 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): "BTC", ['TKN/BTC', 'ETH/BTC']), # SpreadFilter ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, - {"method": "SpreadFilter", "max_spread": 0.005}], + {"method": "SpreadFilter", "max_spread_ratio": 0.005}], "USDT", ['ETH/USDT']), # ShuffleFilter ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, From 4c4fb0c9be8a6ce3b4c55e71ab62442a5f7d69c8 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 19 May 2020 03:35:01 +0300 Subject: [PATCH 2378/3421] Cleanup in pairlistmanager --- freqtrade/pairlist/IPairList.py | 12 +++--- freqtrade/pairlist/pairlistmanager.py | 53 ++++++++++++++------------- tests/pairlist/test_pairlist.py | 17 ++++----- 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index e2eb364bc..d0ac30df1 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -1,5 +1,5 @@ """ -PairList base class +PairList Handler base class """ import logging from abc import ABC, abstractmethod, abstractproperty @@ -21,10 +21,10 @@ class IPairList(ABC): pairlist_pos: int) -> None: """ :param exchange: Exchange instance - :param pairlistmanager: Instanciating Pairlist manager + :param pairlistmanager: Instantiated Pairlist manager :param config: Global bot configuration - :param pairlistconfig: Configuration for this pairlist - can be empty. - :param pairlist_pos: Position of the filter in the pairlist-filter-list + :param pairlistconfig: Configuration for this Pairlist Handler - can be empty. + :param pairlist_pos: Position of the Pairlist Handler in the chain """ self._exchange = exchange self._pairlistmanager = pairlistmanager @@ -93,10 +93,10 @@ class IPairList(ABC): """ Verify and remove items from pairlist - returning a filtered pairlist. Logs a warning or info depending on `aswarning`. - Pairlists explicitly using this method shall use `aswarning=False`! + Pairlist Handlers explicitly using this method shall use `aswarning=False`! :param pairlist: Pairlist to validate :param blacklist: Blacklist to validate pairlist against - :param aswarning: Log message as Warning or info + :param aswarning: Log message as Warning or Info :return: pairlist - blacklisted pairs """ for pair in deepcopy(pairlist): diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 78a6a9668..0cf283cca 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -23,24 +23,25 @@ class PairListManager(): self._config = config self._whitelist = self._config['exchange'].get('pair_whitelist') self._blacklist = self._config['exchange'].get('pair_blacklist', []) - self._pairlists: List[IPairList] = [] + self._pairlist_handlers: List[IPairList] = [] self._tickers_needed = False - for pl in self._config.get('pairlists', None): - if 'method' not in pl: - logger.warning(f"No method in {pl}") + for pairlist_handler_config in self._config.get('pairlists', None): + if 'method' not in pairlist_handler_config: + logger.warning(f"No method found in {pairlist_handler_config}, ignoring.") continue - pairl = PairListResolver.load_pairlist(pl.get('method'), - exchange=exchange, - pairlistmanager=self, - config=config, - pairlistconfig=pl, - pairlist_pos=len(self._pairlists) - ) - self._tickers_needed = pairl.needstickers or self._tickers_needed - self._pairlists.append(pairl) + pairlist_handler = PairListResolver.load_pairlist( + pairlist_handler_config['method'], + exchange=exchange, + pairlistmanager=self, + config=config, + pairlistconfig=pairlist_handler_config, + pairlist_pos=len(self._pairlist_handlers) + ) + self._tickers_needed |= pairlist_handler.needstickers + self._pairlist_handlers.append(pairlist_handler) - if not self._pairlists: - raise OperationalException("No Pairlist defined!") + if not self._pairlist_handlers: + raise OperationalException("No Pairlist Handlers defined") @property def whitelist(self) -> List[str]: @@ -60,15 +61,15 @@ class PairListManager(): @property def name_list(self) -> List[str]: """ - Get list of loaded pairlists names + Get list of loaded Pairlist Handler names """ - return [p.name for p in self._pairlists] + return [p.name for p in self._pairlist_handlers] def short_desc(self) -> List[Dict]: """ - List of short_desc for each pairlist + List of short_desc for each Pairlist Handler """ - return [{p.name: p.short_desc()} for p in self._pairlists] + return [{p.name: p.short_desc()} for p in self._pairlist_handlers] @cached(TTLCache(maxsize=1, ttl=1800)) def _get_cached_tickers(self): @@ -76,7 +77,7 @@ class PairListManager(): def refresh_pairlist(self) -> None: """ - Run pairlist through all configured pairlists. + Run pairlist through all configured Pairlist Handlers. """ # Tickers should be cached to avoid calling the exchange on each call. tickers: Dict = {} @@ -86,19 +87,19 @@ class PairListManager(): # Adjust whitelist if filters are using tickers pairlist = self._prepare_whitelist(self._whitelist.copy(), tickers) - # Process all pairlists in chain - for pl in self._pairlists: - pairlist = pl.filter_pairlist(pairlist, tickers) + # Process all Pairlist Handlers in the chain + for pairlist_handler in self._pairlist_handlers: + pairlist = pairlist_handler.filter_pairlist(pairlist, tickers) - # Validation against blacklist happens after the pairlists to ensure - # blacklist is respected. + # Validation against blacklist happens after the chain of Pairlist Handlers + # to ensure blacklist is respected. pairlist = IPairList.verify_blacklist(pairlist, self.blacklist, True) self._whitelist = pairlist def _prepare_whitelist(self, pairlist: List[str], tickers) -> List[str]: """ - Prepare sanitized pairlist for Pairlist Filters that use tickers data - remove + Prepare sanitized pairlist for Pairlist Handlers that use tickers data - remove pairs that do not have ticker available """ if self._tickers_needed: diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 61f6b4bd5..703a25078 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -10,8 +10,6 @@ from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.resolvers import PairListResolver from tests.conftest import get_patched_freqtradebot, log_has, log_has_re -# whitelist, blacklist - @pytest.fixture(scope="function") def whitelist_conf(default_conf): @@ -55,7 +53,7 @@ def test_log_on_refresh(mocker, static_pl_conf, markets, tickers): freqtrade = get_patched_freqtradebot(mocker, static_pl_conf) logmock = MagicMock() # Assign starting whitelist - pl = freqtrade.pairlists._pairlists[0] + pl = freqtrade.pairlists._pairlist_handlers[0] pl.log_on_refresh(logmock, 'Hello world') assert logmock.call_count == 1 pl.log_on_refresh(logmock, 'Hello world') @@ -290,7 +288,8 @@ def test__whitelist_for_active_markets(mocker, whitelist_conf, markets, pairlist caplog.clear() # Assign starting whitelist - new_whitelist = freqtrade.pairlists._pairlists[0]._whitelist_for_active_markets(whitelist) + pairlist_handler = freqtrade.pairlists._pairlist_handlers[0] + new_whitelist = pairlist_handler._whitelist_for_active_markets(whitelist) assert set(new_whitelist) == set(['ETH/BTC', 'TKN/BTC']) assert log_message in caplog.text @@ -313,17 +312,17 @@ def test_volumepairlist_caching(mocker, markets, whitelist_conf, tickers): get_tickers=tickers ) freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) - assert freqtrade.pairlists._pairlists[0]._last_refresh == 0 + assert freqtrade.pairlists._pairlist_handlers[0]._last_refresh == 0 assert tickers.call_count == 0 freqtrade.pairlists.refresh_pairlist() assert tickers.call_count == 1 - assert freqtrade.pairlists._pairlists[0]._last_refresh != 0 - lrf = freqtrade.pairlists._pairlists[0]._last_refresh + assert freqtrade.pairlists._pairlist_handlers[0]._last_refresh != 0 + lrf = freqtrade.pairlists._pairlist_handlers[0]._last_refresh freqtrade.pairlists.refresh_pairlist() assert tickers.call_count == 1 # Time should not be updated. - assert freqtrade.pairlists._pairlists[0]._last_refresh == lrf + assert freqtrade.pairlists._pairlist_handlers[0]._last_refresh == lrf def test_pairlistmanager_no_pairlist(mocker, markets, whitelist_conf, caplog): @@ -332,5 +331,5 @@ def test_pairlistmanager_no_pairlist(mocker, markets, whitelist_conf, caplog): whitelist_conf['pairlists'] = [] with pytest.raises(OperationalException, - match=r"No Pairlist defined!"): + match=r"No Pairlist Handlers defined"): get_patched_freqtradebot(mocker, whitelist_conf) From a8b1dcf3c8b5d8fde4e0ea7c7f0ea22d1b189092 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 19 May 2020 22:20:53 +0300 Subject: [PATCH 2379/3421] Minor: cleanup in get_signal() --- freqtrade/strategy/interface.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 8031c7932..ad11fe33a 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -310,7 +310,6 @@ class IStrategy(ABC): logger.warning('Empty candle (OHLCV) data for pair %s', pair) return False, False - latest_date = dataframe['date'].max() try: df_len, df_close, df_date = self.preserve_df(dataframe) dataframe = strategy_safe_wrapper( @@ -326,17 +325,17 @@ class IStrategy(ABC): logger.warning('Empty dataframe for pair %s', pair) return False, False + latest_date = dataframe['date'].max() latest = dataframe.loc[dataframe['date'] == latest_date].iloc[-1] # Check if dataframe is out of date - signal_date = arrow.get(latest['date']) interval_minutes = timeframe_to_minutes(interval) offset = self.config.get('exchange', {}).get('outdated_offset', 5) - if signal_date < (arrow.utcnow().shift(minutes=-(interval_minutes * 2 + offset))): + if latest_date < (arrow.utcnow().shift(minutes=-(interval_minutes * 2 + offset))): logger.warning( 'Outdated history for pair %s. Last tick is %s minutes old', pair, - (arrow.utcnow() - signal_date).seconds // 60 + (arrow.utcnow() - latest_date).seconds // 60 ) return False, False From e96e28df074e333d4b0df5d7b4a267d69f41bb8f Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 19 May 2020 23:13:51 +0300 Subject: [PATCH 2380/3421] Refactor verify_blacklist() --- freqtrade/pairlist/IPairList.py | 31 +++------------------------ freqtrade/pairlist/VolumePairList.py | 2 +- freqtrade/pairlist/pairlistmanager.py | 20 ++++++++++++++++- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index d0ac30df1..4afbe1c72 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -3,7 +3,6 @@ PairList Handler base class """ import logging from abc import ABC, abstractmethod, abstractproperty -from copy import deepcopy from typing import Any, Dict, List from cachetools import TTLCache, cached @@ -87,38 +86,14 @@ class IPairList(ABC): :return: new whitelist """ - @staticmethod - def verify_blacklist(pairlist: List[str], blacklist: List[str], - aswarning: bool) -> List[str]: - """ - Verify and remove items from pairlist - returning a filtered pairlist. - Logs a warning or info depending on `aswarning`. - Pairlist Handlers explicitly using this method shall use `aswarning=False`! - :param pairlist: Pairlist to validate - :param blacklist: Blacklist to validate pairlist against - :param aswarning: Log message as Warning or Info - :return: pairlist - blacklisted pairs - """ - for pair in deepcopy(pairlist): - if pair in blacklist: - if aswarning: - logger.warning(f"Pair {pair} in your blacklist. Removing it from whitelist...") - else: - logger.info(f"Pair {pair} in your blacklist. Removing it from whitelist...") - pairlist.remove(pair) - return pairlist - - def _verify_blacklist(self, pairlist: List[str], aswarning: bool = True) -> List[str]: + def verify_blacklist(self, pairlist: List[str]) -> List[str]: """ Proxy method to verify_blacklist for easy access for child classes. - Logs a warning or info depending on `aswarning`. - Pairlists explicitly using this method shall use aswarning=False! + Uses `aswarning=False`, as it should be for Pairlist Handlers. :param pairlist: Pairlist to validate - :param aswarning: Log message as Warning or info. :return: pairlist - blacklisted pairs """ - return IPairList.verify_blacklist(pairlist, self._pairlistmanager.blacklist, - aswarning=aswarning) + return self._pairlistmanager.verify_blacklist(pairlist, aswarning=False) def _whitelist_for_active_markets(self, pairlist: List[str]) -> List[str]: """ diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 981e9915e..b254921cf 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -115,7 +115,7 @@ class VolumePairList(IPairList): # Validate whitelist to only have active market pairs pairs = self._whitelist_for_active_markets([s['symbol'] for s in sorted_tickers]) - pairs = self._verify_blacklist(pairs, aswarning=False) + pairs = self.verify_blacklist(pairs) # Limit pairlist to the requested number of pairs pairs = pairs[:self._number_pairs] diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 0cf283cca..a953a586f 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -93,7 +93,7 @@ class PairListManager(): # Validation against blacklist happens after the chain of Pairlist Handlers # to ensure blacklist is respected. - pairlist = IPairList.verify_blacklist(pairlist, self.blacklist, True) + pairlist = self.verify_blacklist(pairlist, True) self._whitelist = pairlist @@ -110,6 +110,24 @@ class PairListManager(): return pairlist + def verify_blacklist(self, pairlist: List[str], aswarning: bool) -> List[str]: + """ + Verify and remove items from pairlist - returning a filtered pairlist. + Logs a warning or info depending on `aswarning`. + Pairlist Handlers explicitly using this method shall use `aswarning=False`! + :param pairlist: Pairlist to validate + :param aswarning: Log message as Warning or Info + :return: pairlist - blacklisted pairs + """ + for pair in deepcopy(pairlist): + if pair in self._blacklist: + if aswarning: + logger.warning(f"Pair {pair} in your blacklist. Removing it from whitelist...") + else: + logger.info(f"Pair {pair} in your blacklist. Removing it from whitelist...") + pairlist.remove(pair) + return pairlist + def create_pair_list(self, pairs: List[str], timeframe: str = None) -> ListPairsWithTimeframes: """ Create list of pair tuples with (pair, ticker_interval) From 696c7e87f24dad77df7820cdaa1e88a3768e468f Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 19 May 2020 23:51:39 +0300 Subject: [PATCH 2381/3421] Use proper logging (using the Filter's logger) --- freqtrade/pairlist/IPairList.py | 6 +++--- freqtrade/pairlist/VolumePairList.py | 2 +- freqtrade/pairlist/pairlistmanager.py | 14 ++++++-------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index 4afbe1c72..bd8e843e6 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -86,14 +86,14 @@ class IPairList(ABC): :return: new whitelist """ - def verify_blacklist(self, pairlist: List[str]) -> List[str]: + def verify_blacklist(self, pairlist: List[str], logmethod) -> List[str]: """ Proxy method to verify_blacklist for easy access for child classes. - Uses `aswarning=False`, as it should be for Pairlist Handlers. :param pairlist: Pairlist to validate + :param logmethod: Function that'll be called, `logger.info` or `logger.warning`. :return: pairlist - blacklisted pairs """ - return self._pairlistmanager.verify_blacklist(pairlist, aswarning=False) + return self._pairlistmanager.verify_blacklist(pairlist, logmethod) def _whitelist_for_active_markets(self, pairlist: List[str]) -> List[str]: """ diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index b254921cf..b792ab037 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -115,7 +115,7 @@ class VolumePairList(IPairList): # Validate whitelist to only have active market pairs pairs = self._whitelist_for_active_markets([s['symbol'] for s in sorted_tickers]) - pairs = self.verify_blacklist(pairs) + pairs = self.verify_blacklist(pairs, logger.info) # Limit pairlist to the requested number of pairs pairs = pairs[:self._number_pairs] diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index a953a586f..6ad6c610b 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -93,7 +93,7 @@ class PairListManager(): # Validation against blacklist happens after the chain of Pairlist Handlers # to ensure blacklist is respected. - pairlist = self.verify_blacklist(pairlist, True) + pairlist = self.verify_blacklist(pairlist, logger.warning) self._whitelist = pairlist @@ -110,21 +110,19 @@ class PairListManager(): return pairlist - def verify_blacklist(self, pairlist: List[str], aswarning: bool) -> List[str]: + def verify_blacklist(self, pairlist: List[str], logmethod) -> List[str]: """ Verify and remove items from pairlist - returning a filtered pairlist. Logs a warning or info depending on `aswarning`. - Pairlist Handlers explicitly using this method shall use `aswarning=False`! + Pairlist Handlers explicitly using this method shall use + `logmethod=logger.info` to avoid spamming with warning messages :param pairlist: Pairlist to validate - :param aswarning: Log message as Warning or Info + :param logmethod: Function that'll be called, `logger.info` or `logger.warning`. :return: pairlist - blacklisted pairs """ for pair in deepcopy(pairlist): if pair in self._blacklist: - if aswarning: - logger.warning(f"Pair {pair} in your blacklist. Removing it from whitelist...") - else: - logger.info(f"Pair {pair} in your blacklist. Removing it from whitelist...") + logmethod(f"Pair {pair} in your blacklist. Removing it from whitelist...") pairlist.remove(pair) return pairlist From 2498fa5a4710fcbb85bb6a803b26fe3ab78e7e4c Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 20 May 2020 06:29:17 +0200 Subject: [PATCH 2382/3421] Bump scikit-learn from 0.22.2.post1 to 0.23.1 --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index a1431bf8f..e1b3fef4f 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -3,7 +3,7 @@ # Required for hyperopt scipy==1.4.1 -scikit-learn==0.23.0 +scikit-learn==0.23.1 scikit-optimize==0.7.4 filelock==3.0.12 joblib==0.15.1 From 2fbd31f5e0a602912cce1dbd1a38fe9be229b59b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 20 May 2020 07:01:14 +0200 Subject: [PATCH 2383/3421] CORS - allow authenticated responses --- freqtrade/rpc/api_server.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 61eacf639..debd91fe7 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -89,7 +89,9 @@ class ApiServer(RPC): self._config = freqtrade.config self.app = Flask(__name__) - self._cors = CORS(self.app, resources={r"/api/*": {"origins": "*"}}) + self._cors = CORS(self.app, + resources={r"/api/*": {"origins": "*", "supports_credentials": True}}, + ) # Setup the Flask-JWT-Extended extension self.app.config['JWT_SECRET_KEY'] = self._config['api_server'].get( From 7e43574382c0205d24a308e073b67c148e064d91 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 20 May 2020 13:27:07 +0300 Subject: [PATCH 2384/3421] Refactor filter_pairlist() --- freqtrade/pairlist/IPairList.py | 29 +++++++++++++++++++++++++-- freqtrade/pairlist/PrecisionFilter.py | 21 +++---------------- freqtrade/pairlist/PriceFilter.py | 25 +++++------------------ freqtrade/pairlist/ShuffleFilter.py | 5 +++-- freqtrade/pairlist/SpreadFilter.py | 25 ++++------------------- freqtrade/pairlist/VolumePairList.py | 3 ++- 6 files changed, 44 insertions(+), 64 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index bd8e843e6..b93621f2e 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -3,6 +3,7 @@ PairList Handler base class """ import logging from abc import ABC, abstractmethod, abstractproperty +from copy import deepcopy from typing import Any, Dict, List from cachetools import TTLCache, cached @@ -75,16 +76,40 @@ class IPairList(ABC): -> Please overwrite in subclasses """ - @abstractmethod + def _validate_pair(self, ticker) -> bool: + """ + Check one pair against Pairlist Handler's specific conditions. + + Either implement it in the Pairlist Handler or override the generic + filter_pairlist() method. + + :param ticker: ticker dict as returned from ccxt.load_markets() + :return: True if the pair can stay, false if it should be removed + """ + raise NotImplementedError() + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: """ Filters and sorts pairlist and returns the whitelist again. + Called on each bot iteration - please use internal caching if necessary - -> Please overwrite in subclasses + This generic implementation calls self._validate_pair() for each pair + in the pairlist. + + Some Pairlist Handlers override this generic implementation and employ + own filtration. + :param pairlist: pairlist to filter or sort :param tickers: Tickers (from exchange.get_tickers()). May be cached. :return: new whitelist """ + # Copy list since we're modifying this list + for p in deepcopy(pairlist): + # Filter out assets + if not self._validate_pair(tickers[p]): + pairlist.remove(p) + + return pairlist def verify_blacklist(self, pairlist: List[str], logmethod) -> List[str]: """ diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 6bd9c594e..4abc9b637 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -2,8 +2,7 @@ Precision pair list filter """ import logging -from copy import deepcopy -from typing import Any, Dict, List +from typing import Any, Dict from freqtrade.pairlist.IPairList import IPairList @@ -36,16 +35,14 @@ class PrecisionFilter(IPairList): """ return f"{self.name} - Filtering untradable pairs." - def _validate_precision_filter(self, ticker: dict, stoploss: float) -> bool: + def _validate_pair(self, ticker: dict) -> bool: """ Check if pair has enough room to add a stoploss to avoid "unsellable" buys of very low value pairs. :param ticker: ticker dict as returned from ccxt.load_markets() - :param stoploss: stoploss value as set in the configuration - (already cleaned to be 1 - stoploss) :return: True if the pair can stay, False if it should be removed """ - stop_price = ticker['ask'] * stoploss + stop_price = ticker['ask'] * self._stoploss # Adjust stop-prices to precision sp = self._exchange.price_to_precision(ticker["symbol"], stop_price) @@ -60,15 +57,3 @@ class PrecisionFilter(IPairList): return False return True - - def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: - """ - Filters and sorts pairlists and assigns and returns them again. - """ - # Copy list since we're modifying this list - for p in deepcopy(pairlist): - # Filter out assets which would not allow setting a stoploss - if not self._validate_precision_filter(tickers[p], self._stoploss): - pairlist.remove(p) - - return pairlist diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index 167717656..ade524fe7 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -2,8 +2,7 @@ Price pair list filter """ import logging -from copy import deepcopy -from typing import Any, Dict, List +from typing import Any, Dict from freqtrade.pairlist.IPairList import IPairList @@ -35,12 +34,15 @@ class PriceFilter(IPairList): """ return f"{self.name} - Filtering pairs priced below {self._low_price_ratio * 100}%." - def _validate_ticker_lowprice(self, ticker) -> bool: + def _validate_pair(self, ticker) -> bool: """ Check if if one price-step (pip) is > than a certain barrier. :param ticker: ticker dict as returned from ccxt.load_markets() :return: True if the pair can stay, false if it should be removed """ + if not self._low_price_ratio: + return True + if ticker['last'] is None: self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, because " @@ -53,20 +55,3 @@ class PriceFilter(IPairList): f"because 1 unit is {changeperc * 100:.3f}%") return False return True - - def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: - """ - Filters and sorts pairlist and returns the whitelist again. - Called on each bot iteration - please use internal caching if necessary - :param pairlist: pairlist to filter or sort - :param tickers: Tickers (from exchange.get_tickers()). May be cached. - :return: new whitelist - """ - if self._low_price_ratio: - # Copy list since we're modifying this list - for p in deepcopy(pairlist): - # Filter out assets which would not allow setting a stoploss - if not self._validate_ticker_lowprice(tickers[p]): - pairlist.remove(p) - - return pairlist diff --git a/freqtrade/pairlist/ShuffleFilter.py b/freqtrade/pairlist/ShuffleFilter.py index a10a1af8b..ba3792213 100644 --- a/freqtrade/pairlist/ShuffleFilter.py +++ b/freqtrade/pairlist/ShuffleFilter.py @@ -3,7 +3,7 @@ Shuffle pair list filter """ import logging import random -from typing import Dict, List +from typing import Any, Dict, List from freqtrade.pairlist.IPairList import IPairList @@ -13,7 +13,8 @@ logger = logging.getLogger(__name__) class ShuffleFilter(IPairList): - def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict, + def __init__(self, exchange, pairlistmanager, + config: Dict[str, Any], pairlistconfig: Dict[str, Any], pairlist_pos: int) -> None: super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) diff --git a/freqtrade/pairlist/SpreadFilter.py b/freqtrade/pairlist/SpreadFilter.py index 88e143a50..4d6a2bad9 100644 --- a/freqtrade/pairlist/SpreadFilter.py +++ b/freqtrade/pairlist/SpreadFilter.py @@ -2,8 +2,7 @@ Spread pair list filter """ import logging -from copy import deepcopy -from typing import Dict, List +from typing import Any, Dict from freqtrade.pairlist.IPairList import IPairList @@ -13,7 +12,8 @@ logger = logging.getLogger(__name__) class SpreadFilter(IPairList): - def __init__(self, exchange, pairlistmanager, config, pairlistconfig: dict, + def __init__(self, exchange, pairlistmanager, + config: Dict[str, Any], pairlistconfig: Dict[str, Any], pairlist_pos: int) -> None: super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) @@ -35,7 +35,7 @@ class SpreadFilter(IPairList): return (f"{self.name} - Filtering pairs with ask/bid diff above " f"{self._max_spread_ratio * 100}%.") - def _validate_spread(self, ticker: dict) -> bool: + def _validate_pair(self, ticker: dict) -> bool: """ Validate spread for the ticker :param ticker: ticker dict as returned from ccxt.load_markets() @@ -51,20 +51,3 @@ class SpreadFilter(IPairList): else: return True return False - - def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: - """ - Filters and sorts pairlist and returns the whitelist again. - Called on each bot iteration - please use internal caching if necessary - :param pairlist: pairlist to filter or sort - :param tickers: Tickers (from exchange.get_tickers()). May be cached. - :return: new whitelist - """ - # Copy list since we're modifying this list - for p in deepcopy(pairlist): - ticker = tickers[p] - # Filter out assets - if not self._validate_spread(ticker): - pairlist.remove(p) - - return pairlist diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index b792ab037..f7bf2299f 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -19,7 +19,8 @@ SORT_VALUES = ['askVolume', 'bidVolume', 'quoteVolume'] class VolumePairList(IPairList): - def __init__(self, exchange, pairlistmanager, config: Dict[str, Any], pairlistconfig: dict, + def __init__(self, exchange, pairlistmanager, + config: Dict[str, Any], pairlistconfig: Dict[str, Any], pairlist_pos: int) -> None: super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) From 4f0d928145faff6ac36e0f9541d2777012348459 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 20 May 2020 13:41:00 +0300 Subject: [PATCH 2385/3421] Introduce self._enabled in pairlist handlers --- freqtrade/pairlist/IPairList.py | 13 ++++++++----- freqtrade/pairlist/PrecisionFilter.py | 5 ++++- freqtrade/pairlist/PriceFilter.py | 4 +--- freqtrade/pairlist/SpreadFilter.py | 1 + 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index b93621f2e..e49ad1561 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -26,6 +26,8 @@ class IPairList(ABC): :param pairlistconfig: Configuration for this Pairlist Handler - can be empty. :param pairlist_pos: Position of the Pairlist Handler in the chain """ + self._enabled = True + self._exchange = exchange self._pairlistmanager = pairlistmanager self._config = config @@ -103,11 +105,12 @@ class IPairList(ABC): :param tickers: Tickers (from exchange.get_tickers()). May be cached. :return: new whitelist """ - # Copy list since we're modifying this list - for p in deepcopy(pairlist): - # Filter out assets - if not self._validate_pair(tickers[p]): - pairlist.remove(p) + if self._enabled: + # Copy list since we're modifying this list + for p in deepcopy(pairlist): + # Filter out assets + if not self._validate_pair(tickers[p]): + pairlist.remove(p) return pairlist diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 4abc9b637..0331347be 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -17,8 +17,11 @@ class PrecisionFilter(IPairList): pairlist_pos: int) -> None: super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) + self._stoploss = self._config['stoploss'] + self._enabled = self._stoploss != 0 + # Precalculate sanitized stoploss value to avoid recalculation for every pair - self._stoploss = 1 - abs(self._config['stoploss']) + self._stoploss = 1 - abs(self._stoploss) @property def needstickers(self) -> bool: diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index ade524fe7..b85d68269 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -18,6 +18,7 @@ class PriceFilter(IPairList): super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) self._low_price_ratio = pairlistconfig.get('low_price_ratio', 0) + self._enabled = self._low_price_ratio != 0 @property def needstickers(self) -> bool: @@ -40,9 +41,6 @@ class PriceFilter(IPairList): :param ticker: ticker dict as returned from ccxt.load_markets() :return: True if the pair can stay, false if it should be removed """ - if not self._low_price_ratio: - return True - if ticker['last'] is None: self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, because " diff --git a/freqtrade/pairlist/SpreadFilter.py b/freqtrade/pairlist/SpreadFilter.py index 4d6a2bad9..0147c0068 100644 --- a/freqtrade/pairlist/SpreadFilter.py +++ b/freqtrade/pairlist/SpreadFilter.py @@ -18,6 +18,7 @@ class SpreadFilter(IPairList): super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) self._max_spread_ratio = pairlistconfig.get('max_spread_ratio', 0.005) + self._enabled = self._max_spread_ratio != 0 @property def needstickers(self) -> bool: From bfa55f31c0aa51d6de3864a8dfe001d1aac6aa62 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Wed, 20 May 2020 17:45:27 +0300 Subject: [PATCH 2386/3421] Remove wrong comment --- freqtrade/freqtradebot.py | 1 - 1 file changed, 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index dd419f541..32662ae09 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -402,7 +402,6 @@ class FreqtradeBot: """ logger.debug(f"create_trade for pair {pair}") - # Check if dataframe is out of date if self.strategy.is_pair_locked(pair): logger.info(f"Pair {pair} is currently locked.") return False From a11651ae672fb09348fe8e190dfa0734fe6d700d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 20 May 2020 19:43:52 +0200 Subject: [PATCH 2387/3421] Correctly test cors --- freqtrade/rpc/api_server.py | 2 +- tests/rpc/test_rpc_apiserver.py | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index debd91fe7..23b6a85b0 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -90,7 +90,7 @@ class ApiServer(RPC): self._config = freqtrade.config self.app = Flask(__name__) self._cors = CORS(self.app, - resources={r"/api/*": {"origins": "*", "supports_credentials": True}}, + resources={r"/api/*": {"supports_credentials": True, }} ) # Setup the Flask-JWT-Extended extension diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 208a94c66..1d68599f2 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -39,17 +39,21 @@ def client_post(client, url, data={}): return client.post(url, content_type="application/json", data=data, - headers={'Authorization': _basic_auth_str(_TEST_USER, _TEST_PASS)}) + headers={'Authorization': _basic_auth_str(_TEST_USER, _TEST_PASS), + 'Origin': 'example.com'}) def client_get(client, url): - return client.get(url, headers={'Authorization': _basic_auth_str(_TEST_USER, _TEST_PASS)}) + # Add fake Origin to ensure CORS kicks in + return client.get(url, headers={'Authorization': _basic_auth_str(_TEST_USER, _TEST_PASS), + 'Origin': 'example.com'}) -def assert_response(response, expected_code=200): +def assert_response(response, expected_code=200, needs_cors=True): assert response.status_code == expected_code assert response.content_type == "application/json" - assert ('Access-Control-Allow-Origin', '*') in response.headers._list + if needs_cors: + assert ('Access-Control-Allow-Credentials', 'true') in response.headers._list def test_api_not_found(botclient): @@ -66,12 +70,12 @@ def test_api_not_found(botclient): def test_api_unauthorized(botclient): ftbot, client = botclient rc = client.get(f"{BASE_URI}/ping") - assert_response(rc) + assert_response(rc, needs_cors=False) assert rc.json == {'status': 'pong'} # Don't send user/pass information rc = client.get(f"{BASE_URI}/version") - assert_response(rc, 401) + assert_response(rc, 401, needs_cors=False) assert rc.json == {'error': 'Unauthorized'} # Change only username @@ -105,7 +109,8 @@ def test_api_token_login(botclient): # test Authentication is working with JWT tokens too rc = client.get(f"{BASE_URI}/count", content_type="application/json", - headers={'Authorization': f'Bearer {rc.json["access_token"]}'}) + headers={'Authorization': f'Bearer {rc.json["access_token"]}', + 'Origin': 'example.com'}) assert_response(rc) @@ -116,7 +121,8 @@ def test_api_token_refresh(botclient): rc = client.post(f"{BASE_URI}/token/refresh", content_type="application/json", data=None, - headers={'Authorization': f'Bearer {rc.json["refresh_token"]}'}) + headers={'Authorization': f'Bearer {rc.json["refresh_token"]}', + 'Origin': 'example.com'}) assert_response(rc) assert 'access_token' in rc.json assert 'refresh_token' not in rc.json From 3b5ccf2efe02a3204147f5353279828762981c3c Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 20 May 2020 19:48:25 +0200 Subject: [PATCH 2388/3421] Fix documentation link --- docs/hyperopt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 11161e58b..8efc51a39 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -487,7 +487,7 @@ As stated in the comment, you can also use it as the values of the corresponding If you are optimizing trailing stop values, Freqtrade creates the 'trailing' optimization hyperspace for you. By default, the `trailing_stop` parameter is always set to True in that hyperspace, the value of the `trailing_only_offset_is_reached` vary between True and False, the values of the `trailing_stop_positive` and `trailing_stop_positive_offset` parameters vary in the ranges 0.02...0.35 and 0.01...0.1 correspondingly, which is sufficient in most cases. -Override the `trailing_space()` method and define the desired range in it if you need values of the trailing stop parameters to vary in other ranges during hyperoptimization. A sample for this method can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/user_data/hyperopts/sample_hyperopt_advanced.py). +Override the `trailing_space()` method and define the desired range in it if you need values of the trailing stop parameters to vary in other ranges during hyperoptimization. A sample for this method can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_advanced.py). ## Show details of Hyperopt results From 1a984ac6774a9e7e20105580cc157f5ec482be45 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 21 May 2020 07:12:23 +0200 Subject: [PATCH 2389/3421] Explicitly raise ValueError if trades are empty --- freqtrade/data/btanalysis.py | 3 +++ tests/data/test_btanalysis.py | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index b0c642c1d..f98135c27 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -194,7 +194,10 @@ def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str, :param col_name: Column name that will be assigned the results :param timeframe: Timeframe used during the operations :return: Returns df with one additional column, col_name, containing the cumulative profit. + :raise: ValueError if trade-dataframe was found empty. """ + if len(trades) == 0: + raise ValueError("Trade dataframe empty.") from freqtrade.exchange import timeframe_to_minutes timeframe_minutes = timeframe_to_minutes(timeframe) # Resample to timeframe to make sure trades match candles diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 4da2acc5e..50cf9db3d 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -178,6 +178,10 @@ def test_create_cum_profit1(testdatadir): assert cum_profits.iloc[0]['cum_profits'] == 0 assert cum_profits.iloc[-1]['cum_profits'] == 0.0798005 + with pytest.raises(ValueError, match='Trade dataframe empty.'): + create_cum_profit(df.set_index('date'), bt_data[bt_data["pair"] == 'NOTAPAIR'], + "cum_profits", timeframe="5m") + def test_calculate_max_drawdown(testdatadir): filename = testdatadir / "backtest-result_test.json" From 1f386c570d2f2ed109f7a3151fdad8f2462a7fec Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 21 May 2020 07:13:08 +0200 Subject: [PATCH 2390/3421] Don't start plotting profit without trades plotting profit only makes sense when trades are available --- freqtrade/plot/plotting.py | 6 +++++- tests/test_plotting.py | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 60f838db2..095ca4133 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -10,8 +10,9 @@ from freqtrade.data.btanalysis import (calculate_max_drawdown, create_cum_profit, extract_trades_of_period, load_trades) from freqtrade.data.converter import trim_dataframe -from freqtrade.exchange import timeframe_to_prev_date from freqtrade.data.history import load_data +from freqtrade.exceptions import OperationalException +from freqtrade.exchange import timeframe_to_prev_date from freqtrade.misc import pair_to_filename from freqtrade.resolvers import StrategyResolver @@ -504,6 +505,9 @@ def plot_profit(config: Dict[str, Any]) -> None: trades = trades[(trades['pair'].isin(plot_elements["pairs"])) & (~trades['close_time'].isnull()) ] + if len(trades) == 0: + raise OperationalException("No trades found, cannot generate Profit-plot without " + "trades from either Backtest result or database.") # Create an average close price of all the pairs that were involved. # this could be useful to gauge the overall market trend diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 0258b94d1..5bb113784 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -374,7 +374,7 @@ def test_start_plot_profit_error(mocker): def test_plot_profit(default_conf, mocker, testdatadir, caplog): default_conf['trade_source'] = 'file' default_conf["datadir"] = testdatadir - default_conf['exportfilename'] = testdatadir / "backtest-result_test.json" + default_conf['exportfilename'] = testdatadir / "backtest-result_test_nofile.json" default_conf['pairs'] = ["ETH/BTC", "LTC/BTC"] profit_mock = MagicMock() @@ -384,6 +384,12 @@ def test_plot_profit(default_conf, mocker, testdatadir, caplog): generate_profit_graph=profit_mock, store_plot_file=store_mock ) + with pytest.raises(OperationalException, + match=r"No trades found, cannot generate Profit-plot.*"): + plot_profit(default_conf) + + default_conf['exportfilename'] = testdatadir / "backtest-result_test.json" + plot_profit(default_conf) # Plot-profit generates one combined plot From cd0bf96c0e91043cc15cd108e36457df9ff61eba Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 21 May 2020 12:41:00 +0300 Subject: [PATCH 2391/3421] Improve pairlist tests --- freqtrade/pairlist/VolumePairList.py | 4 +- tests/pairlist/test_pairlist.py | 68 +++++++++++++++++++++++----- 2 files changed, 59 insertions(+), 13 deletions(-) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index b792ab037..6213b3be3 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -36,8 +36,8 @@ class VolumePairList(IPairList): if not self._exchange.exchange_has('fetchTickers'): raise OperationalException( - 'Exchange does not support dynamic whitelist.' - 'Please edit your config and restart the bot' + 'Exchange does not support dynamic whitelist. ' + 'Please edit your config and restart the bot.' ) if not self._validate_keys(self._sort_key): diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index dcdfc2ead..e9e688b78 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -34,6 +34,28 @@ def whitelist_conf(default_conf): return default_conf +@pytest.fixture(scope="function") +def whitelist_conf_2(default_conf): + default_conf['stake_currency'] = 'BTC' + default_conf['exchange']['pair_whitelist'] = [ + 'ETH/BTC', 'TKN/BTC', 'BLK/BTC', 'LTC/BTC', + 'BTT/BTC', 'HOT/BTC', 'FUEL/BTC', 'XRP/BTC' + ] + default_conf['exchange']['pair_blacklist'] = [ + 'BLK/BTC' + ] + default_conf['pairlists'] = [ + # { "method": "StaticPairList"}, + { + "method": "VolumePairList", + "number_assets": 5, + "sort_key": "quoteVolume", + "refresh_period": 0, + }, + ] + return default_conf + + @pytest.fixture(scope="function") def static_pl_conf(whitelist_conf): whitelist_conf['pairlists'] = [ @@ -119,24 +141,49 @@ def test_refresh_pairlist_dynamic(mocker, shitcoinmarkets, tickers, whitelist_co mocker.patch.multiple( 'freqtrade.exchange.Exchange', markets=PropertyMock(return_value=shitcoinmarkets), - ) + ) # argument: use the whitelist dynamically by exchange-volume whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC'] freqtrade.pairlists.refresh_pairlist() - assert whitelist == freqtrade.pairlists.whitelist - whitelist_conf['pairlists'] = [{'method': 'VolumePairList', - 'config': {} - } - ] - + whitelist_conf['pairlists'] = [{'method': 'VolumePairList'}] with pytest.raises(OperationalException, match=r'`number_assets` not specified. Please check your configuration ' r'for "pairlist.config.number_assets"'): PairListManager(freqtrade.exchange, whitelist_conf) +def test_refresh_pairlist_dynamic_2(mocker, shitcoinmarkets, tickers, whitelist_conf_2): + + tickers_dict = tickers() + + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + exchange_has=MagicMock(return_value=True), + ) + # Remove caching of ticker data to emulate changing volume by the time of second call + mocker.patch.multiple( + 'freqtrade.pairlist.pairlistmanager.PairListManager', + _get_cached_tickers=MagicMock(return_value=tickers_dict), + ) + freqtrade = get_patched_freqtradebot(mocker, whitelist_conf_2) + # Remock markets with shitcoinmarkets since get_patched_freqtradebot uses the markets fixture + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=shitcoinmarkets), + ) + + whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC'] + freqtrade.pairlists.refresh_pairlist() + assert whitelist == freqtrade.pairlists.whitelist + + whitelist = ['FUEL/BTC', 'ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC'] + tickers_dict['FUEL/BTC']['quoteVolume'] = 10000.0 + freqtrade.pairlists.refresh_pairlist() + assert whitelist == freqtrade.pairlists.whitelist + + def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -267,16 +314,15 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t def test_gen_pair_whitelist_not_supported(mocker, default_conf, tickers) -> None: - default_conf['pairlists'] = [{'method': 'VolumePairList', - 'config': {'number_assets': 10} - }] + default_conf['pairlists'] = [{'method': 'VolumePairList', 'number_assets': 10}] mocker.patch.multiple('freqtrade.exchange.Exchange', get_tickers=tickers, exchange_has=MagicMock(return_value=False), ) - with pytest.raises(OperationalException): + with pytest.raises(OperationalException, + match=r'Exchange does not support dynamic whitelist.*'): get_patched_freqtradebot(mocker, default_conf) From fcae48d5a0a7dcc9464d5ef26cfeae90c6f1c9d7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 22 May 2020 06:55:20 +0200 Subject: [PATCH 2392/3421] Some reordering of subcommands --- freqtrade/commands/arguments.py | 54 ++++++++++++++++----------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index a03da00ab..8ae4eb222 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -181,25 +181,6 @@ class Arguments: trade_cmd.set_defaults(func=start_trading) self._build_args(optionlist=ARGS_TRADE, parser=trade_cmd) - # Add backtesting subcommand - backtesting_cmd = subparsers.add_parser('backtesting', help='Backtesting module.', - parents=[_common_parser, _strategy_parser]) - backtesting_cmd.set_defaults(func=start_backtesting) - self._build_args(optionlist=ARGS_BACKTEST, parser=backtesting_cmd) - - # Add edge subcommand - edge_cmd = subparsers.add_parser('edge', help='Edge module.', - parents=[_common_parser, _strategy_parser]) - edge_cmd.set_defaults(func=start_edge) - self._build_args(optionlist=ARGS_EDGE, parser=edge_cmd) - - # Add hyperopt subcommand - hyperopt_cmd = subparsers.add_parser('hyperopt', help='Hyperopt module.', - parents=[_common_parser, _strategy_parser], - ) - hyperopt_cmd.set_defaults(func=start_hyperopt) - self._build_args(optionlist=ARGS_HYPEROPT, parser=hyperopt_cmd) - # add create-userdir subcommand create_userdir_cmd = subparsers.add_parser('create-userdir', help="Create user-data directory.", @@ -225,6 +206,18 @@ class Arguments: build_hyperopt_cmd.set_defaults(func=start_new_hyperopt) self._build_args(optionlist=ARGS_BUILD_HYPEROPT, parser=build_hyperopt_cmd) + # Add backtesting subcommand + backtesting_cmd = subparsers.add_parser('backtesting', help='Backtesting module.', + parents=[_common_parser, _strategy_parser]) + backtesting_cmd.set_defaults(func=start_backtesting) + self._build_args(optionlist=ARGS_BACKTEST, parser=backtesting_cmd) + + # Add edge subcommand + edge_cmd = subparsers.add_parser('edge', help='Edge module.', + parents=[_common_parser, _strategy_parser]) + edge_cmd.set_defaults(func=start_edge) + self._build_args(optionlist=ARGS_EDGE, parser=edge_cmd) + # Add list-strategies subcommand list_strategies_cmd = subparsers.add_parser( 'list-strategies', @@ -287,6 +280,15 @@ class Arguments: test_pairlist_cmd.set_defaults(func=start_test_pairlist) self._build_args(optionlist=ARGS_TEST_PAIRLIST, parser=test_pairlist_cmd) + # Add show-trades subcommand + show_trades = subparsers.add_parser( + 'show-trades', + help='Show trades.', + parents=[_common_parser], + ) + show_trades.set_defaults(func=start_show_trades) + self._build_args(optionlist=ARGS_SHOW_TRADES, parser=show_trades) + # Add download-data subcommand download_data_cmd = subparsers.add_parser( 'download-data', @@ -332,14 +334,12 @@ class Arguments: plot_profit_cmd.set_defaults(func=start_plot_profit) self._build_args(optionlist=ARGS_PLOT_PROFIT, parser=plot_profit_cmd) - # Add show-trades subcommand - show_trades = subparsers.add_parser( - 'show-trades', - help='Show trades.', - parents=[_common_parser], - ) - show_trades.set_defaults(func=start_show_trades) - self._build_args(optionlist=ARGS_SHOW_TRADES, parser=show_trades) + # Add hyperopt subcommand + hyperopt_cmd = subparsers.add_parser('hyperopt', help='Hyperopt module.', + parents=[_common_parser, _strategy_parser], + ) + hyperopt_cmd.set_defaults(func=start_hyperopt) + self._build_args(optionlist=ARGS_HYPEROPT, parser=hyperopt_cmd) # Add hyperopt-list subcommand hyperopt_list_cmd = subparsers.add_parser( From 33b270b81f2b3905c253754d4c641ce37f0f2c22 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 22 May 2020 06:57:20 +0200 Subject: [PATCH 2393/3421] reorder more arguments --- freqtrade/commands/arguments.py | 104 ++++++++++++++++---------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 8ae4eb222..5f1f23256 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -206,6 +206,33 @@ class Arguments: build_hyperopt_cmd.set_defaults(func=start_new_hyperopt) self._build_args(optionlist=ARGS_BUILD_HYPEROPT, parser=build_hyperopt_cmd) + # Add download-data subcommand + download_data_cmd = subparsers.add_parser( + 'download-data', + help='Download backtesting data.', + parents=[_common_parser], + ) + download_data_cmd.set_defaults(func=start_download_data) + self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd) + + # Add convert-data subcommand + convert_data_cmd = subparsers.add_parser( + 'convert-data', + help='Convert candle (OHLCV) data from one format to another.', + parents=[_common_parser], + ) + convert_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=True)) + self._build_args(optionlist=ARGS_CONVERT_DATA_OHLCV, parser=convert_data_cmd) + + # Add convert-trade-data subcommand + convert_trade_data_cmd = subparsers.add_parser( + 'convert-trade-data', + help='Convert trade data from one format to another.', + parents=[_common_parser], + ) + convert_trade_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=False)) + self._build_args(optionlist=ARGS_CONVERT_DATA, parser=convert_trade_data_cmd) + # Add backtesting subcommand backtesting_cmd = subparsers.add_parser('backtesting', help='Backtesting module.', parents=[_common_parser, _strategy_parser]) @@ -218,6 +245,31 @@ class Arguments: edge_cmd.set_defaults(func=start_edge) self._build_args(optionlist=ARGS_EDGE, parser=edge_cmd) + # Add hyperopt subcommand + hyperopt_cmd = subparsers.add_parser('hyperopt', help='Hyperopt module.', + parents=[_common_parser, _strategy_parser], + ) + hyperopt_cmd.set_defaults(func=start_hyperopt) + self._build_args(optionlist=ARGS_HYPEROPT, parser=hyperopt_cmd) + + # Add hyperopt-list subcommand + hyperopt_list_cmd = subparsers.add_parser( + 'hyperopt-list', + help='List Hyperopt results', + parents=[_common_parser], + ) + hyperopt_list_cmd.set_defaults(func=start_hyperopt_list) + self._build_args(optionlist=ARGS_HYPEROPT_LIST, parser=hyperopt_list_cmd) + + # Add hyperopt-show subcommand + hyperopt_show_cmd = subparsers.add_parser( + 'hyperopt-show', + help='Show details of Hyperopt results', + parents=[_common_parser], + ) + hyperopt_show_cmd.set_defaults(func=start_hyperopt_show) + self._build_args(optionlist=ARGS_HYPEROPT_SHOW, parser=hyperopt_show_cmd) + # Add list-strategies subcommand list_strategies_cmd = subparsers.add_parser( 'list-strategies', @@ -289,33 +341,6 @@ class Arguments: show_trades.set_defaults(func=start_show_trades) self._build_args(optionlist=ARGS_SHOW_TRADES, parser=show_trades) - # Add download-data subcommand - download_data_cmd = subparsers.add_parser( - 'download-data', - help='Download backtesting data.', - parents=[_common_parser], - ) - download_data_cmd.set_defaults(func=start_download_data) - self._build_args(optionlist=ARGS_DOWNLOAD_DATA, parser=download_data_cmd) - - # Add convert-data subcommand - convert_data_cmd = subparsers.add_parser( - 'convert-data', - help='Convert candle (OHLCV) data from one format to another.', - parents=[_common_parser], - ) - convert_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=True)) - self._build_args(optionlist=ARGS_CONVERT_DATA_OHLCV, parser=convert_data_cmd) - - # Add convert-trade-data subcommand - convert_trade_data_cmd = subparsers.add_parser( - 'convert-trade-data', - help='Convert trade data from one format to another.', - parents=[_common_parser], - ) - convert_trade_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=False)) - self._build_args(optionlist=ARGS_CONVERT_DATA, parser=convert_trade_data_cmd) - # Add Plotting subcommand plot_dataframe_cmd = subparsers.add_parser( 'plot-dataframe', @@ -333,28 +358,3 @@ class Arguments: ) plot_profit_cmd.set_defaults(func=start_plot_profit) self._build_args(optionlist=ARGS_PLOT_PROFIT, parser=plot_profit_cmd) - - # Add hyperopt subcommand - hyperopt_cmd = subparsers.add_parser('hyperopt', help='Hyperopt module.', - parents=[_common_parser, _strategy_parser], - ) - hyperopt_cmd.set_defaults(func=start_hyperopt) - self._build_args(optionlist=ARGS_HYPEROPT, parser=hyperopt_cmd) - - # Add hyperopt-list subcommand - hyperopt_list_cmd = subparsers.add_parser( - 'hyperopt-list', - help='List Hyperopt results', - parents=[_common_parser], - ) - hyperopt_list_cmd.set_defaults(func=start_hyperopt_list) - self._build_args(optionlist=ARGS_HYPEROPT_LIST, parser=hyperopt_list_cmd) - - # Add hyperopt-show subcommand - hyperopt_show_cmd = subparsers.add_parser( - 'hyperopt-show', - help='Show details of Hyperopt results', - parents=[_common_parser], - ) - hyperopt_show_cmd.set_defaults(func=start_hyperopt_show) - self._build_args(optionlist=ARGS_HYPEROPT_SHOW, parser=hyperopt_show_cmd) From 1663a67959330fa619afdab83abdae7b7d02c8e3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 22 May 2020 07:00:09 +0200 Subject: [PATCH 2394/3421] Reorder list-arguments --- freqtrade/commands/arguments.py | 60 ++++++++++++++++----------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 5f1f23256..4b7ce4cc3 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -270,24 +270,6 @@ class Arguments: hyperopt_show_cmd.set_defaults(func=start_hyperopt_show) self._build_args(optionlist=ARGS_HYPEROPT_SHOW, parser=hyperopt_show_cmd) - # Add list-strategies subcommand - list_strategies_cmd = subparsers.add_parser( - 'list-strategies', - help='Print available strategies.', - parents=[_common_parser], - ) - list_strategies_cmd.set_defaults(func=start_list_strategies) - self._build_args(optionlist=ARGS_LIST_STRATEGIES, parser=list_strategies_cmd) - - # Add list-hyperopts subcommand - list_hyperopts_cmd = subparsers.add_parser( - 'list-hyperopts', - help='Print available hyperopt classes.', - parents=[_common_parser], - ) - list_hyperopts_cmd.set_defaults(func=start_list_hyperopts) - self._build_args(optionlist=ARGS_LIST_HYPEROPTS, parser=list_hyperopts_cmd) - # Add list-exchanges subcommand list_exchanges_cmd = subparsers.add_parser( 'list-exchanges', @@ -297,14 +279,14 @@ class Arguments: list_exchanges_cmd.set_defaults(func=start_list_exchanges) self._build_args(optionlist=ARGS_LIST_EXCHANGES, parser=list_exchanges_cmd) - # Add list-timeframes subcommand - list_timeframes_cmd = subparsers.add_parser( - 'list-timeframes', - help='Print available ticker intervals (timeframes) for the exchange.', + # Add list-hyperopts subcommand + list_hyperopts_cmd = subparsers.add_parser( + 'list-hyperopts', + help='Print available hyperopt classes.', parents=[_common_parser], ) - list_timeframes_cmd.set_defaults(func=start_list_timeframes) - self._build_args(optionlist=ARGS_LIST_TIMEFRAMES, parser=list_timeframes_cmd) + list_hyperopts_cmd.set_defaults(func=start_list_hyperopts) + self._build_args(optionlist=ARGS_LIST_HYPEROPTS, parser=list_hyperopts_cmd) # Add list-markets subcommand list_markets_cmd = subparsers.add_parser( @@ -324,13 +306,23 @@ class Arguments: list_pairs_cmd.set_defaults(func=partial(start_list_markets, pairs_only=True)) self._build_args(optionlist=ARGS_LIST_PAIRS, parser=list_pairs_cmd) - # Add test-pairlist subcommand - test_pairlist_cmd = subparsers.add_parser( - 'test-pairlist', - help='Test your pairlist configuration.', + # Add list-strategies subcommand + list_strategies_cmd = subparsers.add_parser( + 'list-strategies', + help='Print available strategies.', + parents=[_common_parser], ) - test_pairlist_cmd.set_defaults(func=start_test_pairlist) - self._build_args(optionlist=ARGS_TEST_PAIRLIST, parser=test_pairlist_cmd) + list_strategies_cmd.set_defaults(func=start_list_strategies) + self._build_args(optionlist=ARGS_LIST_STRATEGIES, parser=list_strategies_cmd) + + # Add list-timeframes subcommand + list_timeframes_cmd = subparsers.add_parser( + 'list-timeframes', + help='Print available ticker intervals (timeframes) for the exchange.', + parents=[_common_parser], + ) + list_timeframes_cmd.set_defaults(func=start_list_timeframes) + self._build_args(optionlist=ARGS_LIST_TIMEFRAMES, parser=list_timeframes_cmd) # Add show-trades subcommand show_trades = subparsers.add_parser( @@ -341,6 +333,14 @@ class Arguments: show_trades.set_defaults(func=start_show_trades) self._build_args(optionlist=ARGS_SHOW_TRADES, parser=show_trades) + # Add test-pairlist subcommand + test_pairlist_cmd = subparsers.add_parser( + 'test-pairlist', + help='Test your pairlist configuration.', + ) + test_pairlist_cmd.set_defaults(func=start_test_pairlist) + self._build_args(optionlist=ARGS_TEST_PAIRLIST, parser=test_pairlist_cmd) + # Add Plotting subcommand plot_dataframe_cmd = subparsers.add_parser( 'plot-dataframe', From 43e2bce6f8a3d00a6b7c4b45fd224fb0ac0a7632 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 22 May 2020 07:00:57 +0200 Subject: [PATCH 2395/3421] Update readme with current command list --- README.md | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 88070d45e..3dd0d5bb1 100644 --- a/README.md +++ b/README.md @@ -68,40 +68,42 @@ For any other type of installation please refer to [Installation doc](https://ww ### Bot commands ``` -usage: freqtrade [-h] [-v] [--logfile FILE] [--version] [-c PATH] [-d PATH] - [-s NAME] [--strategy-path PATH] [--dynamic-whitelist [INT]] - [--db-url PATH] [--sd-notify] - {backtesting,edge,hyperopt} ... +usage: freqtrade [-h] [-V] + {trade,create-userdir,new-config,new-strategy,new-hyperopt,download-data,convert-data,convert-trade-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,plot-dataframe,plot-profit} + ... Free, open source crypto trading bot positional arguments: - {backtesting,edge,hyperopt} + {trade,create-userdir,new-config,new-strategy,new-hyperopt,download-data,convert-data,convert-trade-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,plot-dataframe,plot-profit} + trade Trade module. + create-userdir Create user-data directory. + new-config Create new config + new-strategy Create new strategy + new-hyperopt Create new hyperopt + download-data Download backtesting data. + convert-data Convert candle (OHLCV) data from one format to another. + convert-trade-data Convert trade data from one format to another. backtesting Backtesting module. edge Edge module. hyperopt Hyperopt module. + hyperopt-list List Hyperopt results + hyperopt-show Show details of Hyperopt results + list-exchanges Print available exchanges. + list-hyperopts Print available hyperopt classes. + list-markets Print markets on exchange. + list-pairs Print pairs on exchange. + list-strategies Print available strategies. + list-timeframes Print available ticker intervals (timeframes) for the exchange. + show-trades Show trades. + test-pairlist Test your pairlist configuration. + plot-dataframe Plot candles with indicators. + plot-profit Generate plot showing profits. optional arguments: -h, --help show this help message and exit - -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified - --version show program's version number and exit - -c PATH, --config PATH - Specify configuration file (default: None). Multiple - --config options may be used. - -d PATH, --datadir PATH - Path to backtest data. - -s NAME, --strategy NAME - Specify strategy class name (default: - DefaultStrategy). - --strategy-path PATH Specify additional strategy lookup path. - --dynamic-whitelist [INT] - Dynamically generate and update whitelist based on 24h - BaseVolume (default: 20). DEPRECATED. - --db-url PATH Override trades database URL, this is useful if - dry_run is enabled or in custom deployments (default: - None). - --sd-notify Notify systemd service manager. + -V, --version show program's version number and exit + ``` ### Telegram RPC commands From 98db1d52c63bb674bb18b5ce68d9a2e4b67a0ab5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 22 May 2020 07:04:36 +0200 Subject: [PATCH 2396/3421] Reorder new commands --- README.md | 2 +- freqtrade/commands/arguments.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 3dd0d5bb1..08e408f7f 100644 --- a/README.md +++ b/README.md @@ -79,8 +79,8 @@ positional arguments: trade Trade module. create-userdir Create user-data directory. new-config Create new config - new-strategy Create new strategy new-hyperopt Create new hyperopt + new-strategy Create new strategy download-data Download backtesting data. convert-data Convert candle (OHLCV) data from one format to another. convert-trade-data Convert trade data from one format to another. diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 4b7ce4cc3..1b7bbfeb5 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -194,18 +194,18 @@ class Arguments: build_config_cmd.set_defaults(func=start_new_config) self._build_args(optionlist=ARGS_BUILD_CONFIG, parser=build_config_cmd) - # add new-strategy subcommand - build_strategy_cmd = subparsers.add_parser('new-strategy', - help="Create new strategy") - build_strategy_cmd.set_defaults(func=start_new_strategy) - self._build_args(optionlist=ARGS_BUILD_STRATEGY, parser=build_strategy_cmd) - # add new-hyperopt subcommand build_hyperopt_cmd = subparsers.add_parser('new-hyperopt', help="Create new hyperopt") build_hyperopt_cmd.set_defaults(func=start_new_hyperopt) self._build_args(optionlist=ARGS_BUILD_HYPEROPT, parser=build_hyperopt_cmd) + # add new-strategy subcommand + build_strategy_cmd = subparsers.add_parser('new-strategy', + help="Create new strategy") + build_strategy_cmd.set_defaults(func=start_new_strategy) + self._build_args(optionlist=ARGS_BUILD_STRATEGY, parser=build_strategy_cmd) + # Add download-data subcommand download_data_cmd = subparsers.add_parser( 'download-data', From 073d9d3853bcb381da1290970803b0f0868c61ea Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 22 May 2020 13:47:11 +0200 Subject: [PATCH 2397/3421] Update readme.md with adjusted sequence --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 08e408f7f..cfb384702 100644 --- a/README.md +++ b/README.md @@ -69,13 +69,13 @@ For any other type of installation please refer to [Installation doc](https://ww ``` usage: freqtrade [-h] [-V] - {trade,create-userdir,new-config,new-strategy,new-hyperopt,download-data,convert-data,convert-trade-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,plot-dataframe,plot-profit} + {trade,create-userdir,new-config,new-hyperopt,new-strategy,download-data,convert-data,convert-trade-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,plot-dataframe,plot-profit} ... Free, open source crypto trading bot positional arguments: - {trade,create-userdir,new-config,new-strategy,new-hyperopt,download-data,convert-data,convert-trade-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,plot-dataframe,plot-profit} + {trade,create-userdir,new-config,new-hyperopt,new-strategy,download-data,convert-data,convert-trade-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,plot-dataframe,plot-profit} trade Trade module. create-userdir Create user-data directory. new-config Create new config From 8e89802b2d099566ffb1de5effdeec10a52f43d2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 22 May 2020 15:03:49 +0300 Subject: [PATCH 2398/3421] Split the generation logic and filtering --- freqtrade/pairlist/IPairList.py | 11 +++ freqtrade/pairlist/StaticPairList.py | 11 ++- freqtrade/pairlist/VolumePairList.py | 60 ++++++------ freqtrade/pairlist/pairlistmanager.py | 3 + tests/pairlist/test_pairlist.py | 127 +++++++++++++++++--------- 5 files changed, 135 insertions(+), 77 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index e49ad1561..0a291fdf7 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -8,6 +8,7 @@ from typing import Any, Dict, List from cachetools import TTLCache, cached +from freqtrade.exceptions import OperationalException from freqtrade.exchange import market_is_active @@ -90,6 +91,16 @@ class IPairList(ABC): """ raise NotImplementedError() + def gen_pairlist(self, cached_pairlist: List[str], tickers: Dict) -> List[str]: + """ + Generate the pairlist + :param cached_pairlist: Previously generated pairlist (cached) + :param tickers: Tickers (from exchange.get_tickers()). + :return: List of pairs + """ + raise OperationalException("This Pairlist Handler should not be used " + "at the first position in the list of Pairlist Handlers.") + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: """ Filters and sorts pairlist and returns the whitelist again. diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index 07e559168..0218833e3 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -30,6 +30,15 @@ class StaticPairList(IPairList): """ return f"{self.name}" + def gen_pairlist(self, cached_pairlist: List[str], tickers: Dict) -> List[str]: + """ + Generate the pairlist + :param cached_pairlist: Previously generated pairlist (cached) + :param tickers: Tickers (from exchange.get_tickers()). + :return: List of pairs + """ + return self._whitelist_for_active_markets(self._config['exchange']['pair_whitelist']) + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: """ Filters and sorts pairlist and returns the whitelist again. @@ -38,4 +47,4 @@ class StaticPairList(IPairList): :param tickers: Tickers (from exchange.get_tickers()). May be cached. :return: new whitelist """ - return self._whitelist_for_active_markets(self._config['exchange']['pair_whitelist']) + return pairlist diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 6f39ae6d6..d32be3dc9 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -68,6 +68,31 @@ class VolumePairList(IPairList): """ return f"{self.name} - top {self._pairlistconfig['number_assets']} volume pairs." + def gen_pairlist(self, cached_pairlist: List[str], tickers: Dict) -> List[str]: + """ + Generate the pairlist + :param cached_pairlist: Previously generated pairlist (cached) + :param tickers: Tickers (from exchange.get_tickers()). + :return: List of pairs + """ + # Generate dynamic whitelist + # Must always run if this pairlist is not the first in the list. + if self._last_refresh + self.refresh_period < datetime.now().timestamp(): + self._last_refresh = int(datetime.now().timestamp()) + + # Use fresh pairlist + # Check if pair quote currency equals to the stake currency. + filtered_tickers = [ + v for k, v in tickers.items() + if (self._exchange.get_pair_quote_currency(k) == self._stake_currency + and v[self._sort_key] is not None)] + pairlist = [s['symbol'] for s in filtered_tickers] + else: + # Use the cached pairlist if it's not time yet to refresh + pairlist = cached_pairlist + + return pairlist + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: """ Filters and sorts pairlist and returns the whitelist again. @@ -76,37 +101,8 @@ class VolumePairList(IPairList): :param tickers: Tickers (from exchange.get_tickers()). May be cached. :return: new whitelist """ - # Generate dynamic whitelist - # Must always run if this pairlist is not the first in the list. - if (self._pairlist_pos != 0 or - (self._last_refresh + self.refresh_period < datetime.now().timestamp())): - - self._last_refresh = int(datetime.now().timestamp()) - pairs = self._gen_pair_whitelist(pairlist, tickers) - else: - pairs = pairlist - - self.log_on_refresh(logger.info, f"Searching {self._number_pairs} pairs: {pairs}") - - return pairs - - def _gen_pair_whitelist(self, pairlist: List[str], tickers: Dict) -> List[str]: - """ - Updates the whitelist with with a dynamically generated list - :param pairlist: pairlist to filter or sort - :param tickers: Tickers (from exchange.get_tickers()). - :return: List of pairs - """ - if self._pairlist_pos == 0: - # If VolumePairList is the first in the list, use fresh pairlist - # Check if pair quote currency equals to the stake currency. - filtered_tickers = [ - v for k, v in tickers.items() - if (self._exchange.get_pair_quote_currency(k) == self._stake_currency - and v[self._sort_key] is not None)] - else: - # If other pairlist is in front, use the incoming pairlist. - filtered_tickers = [v for k, v in tickers.items() if k in pairlist] + # Use the incoming pairlist. + filtered_tickers = [v for k, v in tickers.items() if k in pairlist] if self._min_value > 0: filtered_tickers = [ @@ -120,4 +116,6 @@ class VolumePairList(IPairList): # Limit pairlist to the requested number of pairs pairs = pairs[:self._number_pairs] + self.log_on_refresh(logger.info, f"Searching {self._number_pairs} pairs: {pairs}") + return pairs diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 6ad6c610b..177f79083 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -87,6 +87,9 @@ class PairListManager(): # Adjust whitelist if filters are using tickers pairlist = self._prepare_whitelist(self._whitelist.copy(), tickers) + # Generate the pairlist with first Pairlist Handler in the chain + pairlist = self._pairlist_handlers[0].gen_pairlist(self._whitelist, tickers) + # Process all Pairlist Handlers in the chain for pairlist_handler in self._pairlist_handlers: pairlist = pairlist_handler.filter_pairlist(pairlist, tickers) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index e9e688b78..febb8b163 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -19,7 +19,8 @@ def whitelist_conf(default_conf): 'TKN/BTC', 'TRST/BTC', 'SWT/BTC', - 'BCC/BTC' + 'BCC/BTC', + 'HOT/BTC', ] default_conf['exchange']['pair_blacklist'] = [ 'BLK/BTC' @@ -201,21 +202,21 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): assert set(whitelist) == set(pairslist) -@pytest.mark.parametrize("pairlists,base_currency,whitelist_result", [ +@pytest.mark.parametrize("pairlists,base_currency,whitelist_result,operational_exception", [ # VolumePairList only ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC']), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC'], False), # Different sorting depending on quote or bid volume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], - "BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), + "BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC'], False), ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], - "USDT", ['ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT']), + "USDT", ['ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT'], False), # No pair for ETH, VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], - "ETH", []), + "ETH", [], False), # No pair for ETH, StaticPairList ([{"method": "StaticPairList"}], - "ETH", []), + "ETH", [], False), # No pair for ETH, all handlers ([{"method": "StaticPairList"}, {"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, @@ -223,57 +224,87 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): {"method": "PriceFilter", "low_price_ratio": 0.03}, {"method": "SpreadFilter", "max_spread_ratio": 0.005}, {"method": "ShuffleFilter"}], - "ETH", []), + "ETH", [], False), # Precisionfilter and quote volume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, - {"method": "PrecisionFilter"}], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), + {"method": "PrecisionFilter"}], + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC'], False), # Precisionfilter bid ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}, - {"method": "PrecisionFilter"}], "BTC", ['FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), + {"method": "PrecisionFilter"}], + "BTC", ['FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC'], False), # PriceFilter and VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PriceFilter", "low_price_ratio": 0.03}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC'], False), # PriceFilter and VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PriceFilter", "low_price_ratio": 0.03}], - "USDT", ['ETH/USDT', 'NANO/USDT']), + "USDT", ['ETH/USDT', 'NANO/USDT'], False), # Hot is removed by precision_filter, Fuel by low_price_filter. ([{"method": "VolumePairList", "number_assets": 6, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}, {"method": "PriceFilter", "low_price_ratio": 0.02}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC'], False), # HOT and XRP are removed because below 1250 quoteVolume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume", "min_value": 1250}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC']), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC'], False), # StaticPairlist only ([{"method": "StaticPairList"}], - "BTC", ['ETH/BTC', 'TKN/BTC']), + "BTC", ['ETH/BTC', 'TKN/BTC', 'HOT/BTC'], False), # Static Pairlist before VolumePairList - sorting changes ([{"method": "StaticPairList"}, {"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], - "BTC", ['TKN/BTC', 'ETH/BTC']), + "BTC", ['HOT/BTC', 'TKN/BTC', 'ETH/BTC'], False), # SpreadFilter ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "SpreadFilter", "max_spread_ratio": 0.005}], - "USDT", ['ETH/USDT']), + "USDT", ['ETH/USDT'], False), # ShuffleFilter ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "ShuffleFilter", "seed": 77}], - "USDT", ['ETH/USDT', 'ADAHALF/USDT', 'NANO/USDT']), + "USDT", ['ETH/USDT', 'ADAHALF/USDT', 'NANO/USDT'], False), # ShuffleFilter, other seed ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "ShuffleFilter", "seed": 42}], - "USDT", ['NANO/USDT', 'ETH/USDT', 'ADAHALF/USDT']), + "USDT", ['NANO/USDT', 'ETH/USDT', 'ADAHALF/USDT'], False), # ShuffleFilter, no seed ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "ShuffleFilter"}], - "USDT", 3), + "USDT", 3, False), + # PrecisionFilter after StaticPairList + ([{"method": "StaticPairList"}, + {"method": "PrecisionFilter"}], + "BTC", ['ETH/BTC', 'TKN/BTC'], False), + # PrecisionFilter only + ([{"method": "PrecisionFilter"}], + "BTC", ['ETH/BTC', 'TKN/BTC'], True), + # PriceFilter after StaticPairList + ([{"method": "StaticPairList"}, + {"method": "PriceFilter", "low_price_ratio": 0.02}], + "BTC", ['ETH/BTC', 'TKN/BTC'], False), + # PriceFilter only + ([{"method": "PriceFilter", "low_price_ratio": 0.02}], + "BTC", ['ETH/BTC', 'TKN/BTC'], True), + # ShuffleFilter after StaticPairList + ([{"method": "StaticPairList"}, + {"method": "ShuffleFilter", "seed": 42}], + "BTC", ['TKN/BTC', 'ETH/BTC', 'HOT/BTC'], False), + # ShuffleFilter only + ([{"method": "ShuffleFilter", "seed": 42}], + "BTC", ['TKN/BTC', 'ETH/BTC', 'HOT/BTC'], True), + # SpreadFilter after StaticPairList + ([{"method": "StaticPairList"}, + {"method": "SpreadFilter", "max_spread_ratio": 0.005}], + "BTC", ['ETH/BTC', 'TKN/BTC'], False), + # SpreadFilter only + ([{"method": "SpreadFilter", "max_spread_ratio": 0.005}], + "BTC", ['ETH/BTC', 'TKN/BTC'], True), ]) def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, pairlists, base_currency, whitelist_result, - caplog) -> None: + operational_exception, caplog) -> None: whitelist_conf['pairlists'] = pairlists whitelist_conf['stake_currency'] = base_currency @@ -285,32 +316,38 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t markets=PropertyMock(return_value=shitcoinmarkets), ) - freqtrade.pairlists.refresh_pairlist() - whitelist = freqtrade.pairlists.whitelist - - assert isinstance(whitelist, list) - - # Verify length of pairlist matches (used for ShuffleFilter without seed) - if type(whitelist_result) is list: - assert whitelist == whitelist_result + if operational_exception: + with pytest.raises(OperationalException, + match=r"This Pairlist Handler should not be used at the first position " + r"in the list of Pairlist Handlers."): + freqtrade.pairlists.refresh_pairlist() else: - len(whitelist) == whitelist_result + freqtrade.pairlists.refresh_pairlist() + whitelist = freqtrade.pairlists.whitelist - for pairlist in pairlists: - if pairlist['method'] == 'PrecisionFilter' and whitelist_result: - assert log_has_re(r'^Removed .* from whitelist, because stop price .* ' - r'would be <= stop limit.*', caplog) - if pairlist['method'] == 'PriceFilter' and whitelist_result: - assert (log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) or - log_has_re(r"^Removed .* from whitelist, because ticker\['last'\] is empty.*", - caplog)) - if pairlist['method'] == 'VolumePairList': - logmsg = ("DEPRECATED: using any key other than quoteVolume for " - "VolumePairList is deprecated.") - if pairlist['sort_key'] != 'quoteVolume': - assert log_has(logmsg, caplog) - else: - assert not log_has(logmsg, caplog) + assert isinstance(whitelist, list) + + # Verify length of pairlist matches (used for ShuffleFilter without seed) + if type(whitelist_result) is list: + assert whitelist == whitelist_result + else: + len(whitelist) == whitelist_result + + for pairlist in pairlists: + if pairlist['method'] == 'PrecisionFilter' and whitelist_result: + assert log_has_re(r'^Removed .* from whitelist, because stop price .* ' + r'would be <= stop limit.*', caplog) + if pairlist['method'] == 'PriceFilter' and whitelist_result: + assert (log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) or + log_has_re(r"^Removed .* from whitelist, because ticker\['last'\] " + r"is empty.*", caplog)) + if pairlist['method'] == 'VolumePairList': + logmsg = ("DEPRECATED: using any key other than quoteVolume for " + "VolumePairList is deprecated.") + if pairlist['sort_key'] != 'quoteVolume': + assert log_has(logmsg, caplog) + else: + assert not log_has(logmsg, caplog) def test_gen_pair_whitelist_not_supported(mocker, default_conf, tickers) -> None: From 0e416dc4f58983af5ee5440a493d52ccadaf97cc Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 22 May 2020 16:42:02 +0300 Subject: [PATCH 2399/3421] Simplify tests --- tests/pairlist/test_pairlist.py | 59 +++++++++++++++++---------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index febb8b163..3e3241071 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -202,21 +202,21 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): assert set(whitelist) == set(pairslist) -@pytest.mark.parametrize("pairlists,base_currency,whitelist_result,operational_exception", [ +@pytest.mark.parametrize("pairlists,base_currency,whitelist_result", [ # VolumePairList only ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC'], False), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC']), # Different sorting depending on quote or bid volume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], - "BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC'], False), + "BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], - "USDT", ['ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT'], False), + "USDT", ['ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT']), # No pair for ETH, VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], - "ETH", [], False), + "ETH", []), # No pair for ETH, StaticPairList ([{"method": "StaticPairList"}], - "ETH", [], False), + "ETH", []), # No pair for ETH, all handlers ([{"method": "StaticPairList"}, {"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, @@ -224,87 +224,87 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): {"method": "PriceFilter", "low_price_ratio": 0.03}, {"method": "SpreadFilter", "max_spread_ratio": 0.005}, {"method": "ShuffleFilter"}], - "ETH", [], False), + "ETH", []), # Precisionfilter and quote volume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC'], False), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), # Precisionfilter bid ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}, {"method": "PrecisionFilter"}], - "BTC", ['FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC'], False), + "BTC", ['FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), # PriceFilter and VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PriceFilter", "low_price_ratio": 0.03}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC'], False), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), # PriceFilter and VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PriceFilter", "low_price_ratio": 0.03}], - "USDT", ['ETH/USDT', 'NANO/USDT'], False), + "USDT", ['ETH/USDT', 'NANO/USDT']), # Hot is removed by precision_filter, Fuel by low_price_filter. ([{"method": "VolumePairList", "number_assets": 6, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}, {"method": "PriceFilter", "low_price_ratio": 0.02}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC'], False), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), # HOT and XRP are removed because below 1250 quoteVolume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume", "min_value": 1250}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC'], False), + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC']), # StaticPairlist only ([{"method": "StaticPairList"}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'HOT/BTC'], False), + "BTC", ['ETH/BTC', 'TKN/BTC', 'HOT/BTC']), # Static Pairlist before VolumePairList - sorting changes ([{"method": "StaticPairList"}, {"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], - "BTC", ['HOT/BTC', 'TKN/BTC', 'ETH/BTC'], False), + "BTC", ['HOT/BTC', 'TKN/BTC', 'ETH/BTC']), # SpreadFilter ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "SpreadFilter", "max_spread_ratio": 0.005}], - "USDT", ['ETH/USDT'], False), + "USDT", ['ETH/USDT']), # ShuffleFilter ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "ShuffleFilter", "seed": 77}], - "USDT", ['ETH/USDT', 'ADAHALF/USDT', 'NANO/USDT'], False), + "USDT", ['ETH/USDT', 'ADAHALF/USDT', 'NANO/USDT']), # ShuffleFilter, other seed ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "ShuffleFilter", "seed": 42}], - "USDT", ['NANO/USDT', 'ETH/USDT', 'ADAHALF/USDT'], False), + "USDT", ['NANO/USDT', 'ETH/USDT', 'ADAHALF/USDT']), # ShuffleFilter, no seed ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "ShuffleFilter"}], - "USDT", 3, False), + "USDT", 3), # whitelist_result is integer -- check only lenght of randomized pairlist # PrecisionFilter after StaticPairList ([{"method": "StaticPairList"}, {"method": "PrecisionFilter"}], - "BTC", ['ETH/BTC', 'TKN/BTC'], False), + "BTC", ['ETH/BTC', 'TKN/BTC']), # PrecisionFilter only ([{"method": "PrecisionFilter"}], - "BTC", ['ETH/BTC', 'TKN/BTC'], True), + "BTC", None), # OperationalException expected # PriceFilter after StaticPairList ([{"method": "StaticPairList"}, {"method": "PriceFilter", "low_price_ratio": 0.02}], - "BTC", ['ETH/BTC', 'TKN/BTC'], False), + "BTC", ['ETH/BTC', 'TKN/BTC']), # PriceFilter only ([{"method": "PriceFilter", "low_price_ratio": 0.02}], - "BTC", ['ETH/BTC', 'TKN/BTC'], True), + "BTC", None), # OperationalException expected # ShuffleFilter after StaticPairList ([{"method": "StaticPairList"}, {"method": "ShuffleFilter", "seed": 42}], - "BTC", ['TKN/BTC', 'ETH/BTC', 'HOT/BTC'], False), + "BTC", ['TKN/BTC', 'ETH/BTC', 'HOT/BTC']), # ShuffleFilter only ([{"method": "ShuffleFilter", "seed": 42}], - "BTC", ['TKN/BTC', 'ETH/BTC', 'HOT/BTC'], True), + "BTC", None), # OperationalException expected # SpreadFilter after StaticPairList ([{"method": "StaticPairList"}, {"method": "SpreadFilter", "max_spread_ratio": 0.005}], - "BTC", ['ETH/BTC', 'TKN/BTC'], False), + "BTC", ['ETH/BTC', 'TKN/BTC']), # SpreadFilter only ([{"method": "SpreadFilter", "max_spread_ratio": 0.005}], - "BTC", ['ETH/BTC', 'TKN/BTC'], True), + "BTC", None), # OperationalException expected ]) def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, pairlists, base_currency, whitelist_result, - operational_exception, caplog) -> None: + caplog) -> None: whitelist_conf['pairlists'] = pairlists whitelist_conf['stake_currency'] = base_currency @@ -316,7 +316,8 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t markets=PropertyMock(return_value=shitcoinmarkets), ) - if operational_exception: + # Set whitelist_result to None if pairlist is invalid and should produce exception + if whitelist_result is None: with pytest.raises(OperationalException, match=r"This Pairlist Handler should not be used at the first position " r"in the list of Pairlist Handlers."): From 046202fdda29aae131852d9e02317f80906dc2bc Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 22 May 2020 20:56:34 +0200 Subject: [PATCH 2400/3421] Fix typing circular dependency --- freqtrade/constants.py | 6 ++++++ freqtrade/data/dataprovider.py | 2 +- freqtrade/exchange/exchange.py | 2 +- freqtrade/pairlist/pairlistmanager.py | 2 +- freqtrade/strategy/interface.py | 2 +- freqtrade/typing.py | 8 -------- 6 files changed, 10 insertions(+), 12 deletions(-) delete mode 100644 freqtrade/typing.py diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 5d3b13eee..c1bf30f17 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -3,6 +3,9 @@ """ bot constants """ +from typing import List, Tuple + + DEFAULT_CONFIG = 'config.json' DEFAULT_EXCHANGE = 'bittrex' PROCESS_THROTTLE_SECS = 5 # sec @@ -329,3 +332,6 @@ CANCEL_REASON = { "ALL_CANCELLED": "cancelled (all unfilled and partially filled open orders cancelled)", "CANCELLED_ON_EXCHANGE": "cancelled on exchange", } + +# List of pairs with their timeframes +ListPairsWithTimeframes = List[Tuple[str, str]] diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index ef03307cc..4c88e4c81 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -13,7 +13,7 @@ from freqtrade.data.history import load_pair_history from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.exchange import Exchange from freqtrade.state import RunMode -from freqtrade.typing import ListPairsWithTimeframes +from freqtrade.constants import ListPairsWithTimeframes logger = logging.getLogger(__name__) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index c60eb766a..763c226fa 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -23,7 +23,7 @@ from freqtrade.exceptions import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async from freqtrade.misc import deep_merge_dicts, safe_value_fallback -from freqtrade.typing import ListPairsWithTimeframes +from freqtrade.constants import ListPairsWithTimeframes CcxtModuleType = Any diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 6ad6c610b..98878bcb0 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -10,7 +10,7 @@ from cachetools import TTLCache, cached from freqtrade.exceptions import OperationalException from freqtrade.pairlist.IPairList import IPairList from freqtrade.resolvers import PairListResolver -from freqtrade.typing import ListPairsWithTimeframes +from freqtrade.constants import ListPairsWithTimeframes logger = logging.getLogger(__name__) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index ad11fe33a..94a90e5d1 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -17,7 +17,7 @@ from freqtrade.exceptions import StrategyError from freqtrade.exchange import timeframe_to_minutes from freqtrade.persistence import Trade from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper -from freqtrade.typing import ListPairsWithTimeframes +from freqtrade.constants import ListPairsWithTimeframes from freqtrade.wallets import Wallets diff --git a/freqtrade/typing.py b/freqtrade/typing.py deleted file mode 100644 index 3cb7cf816..000000000 --- a/freqtrade/typing.py +++ /dev/null @@ -1,8 +0,0 @@ -""" -Common Freqtrade types -""" - -from typing import List, Tuple - -# List of pairs with their timeframes -ListPairsWithTimeframes = List[Tuple[str, str]] From 73914169e44e0df75028b81ebe3f07907ba5b24a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 23 May 2020 19:21:14 +0200 Subject: [PATCH 2401/3421] Update issue template --- .github/ISSUE_TEMPLATE.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index ae5375f43..5a77e200c 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,9 +1,12 @@ -## Step 1: Have you search for this issue before posting it? + -## Step 2: Describe your environment +## Describe your environment * Operating system: ____ * Python Version: _____ (`python -V`) @@ -11,7 +14,9 @@ If it hasn't been reported, please create a new issue. * Branch: Master | Develop * Last Commit ID: _____ (`git log --format="%H" -n 1`) -## Step 3: Describe the problem: +Note: All issues other than enhancement requests will be closed without further comment if the above template is deleted or not filled out.. + +## Describe the problem: *Explain the problem you have encountered* @@ -26,7 +31,9 @@ If it hasn't been reported, please create a new issue. * What happened? * What did you expect to happen? -### Relevant code exceptions or logs: +### Relevant code exceptions or logs + +Note: Please copy/paste code, no screenshots of logs. ``` // paste your log here From 110b5a2521599bcd89ddf86fbf9625ed542fd3b3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 24 May 2020 08:46:50 +0200 Subject: [PATCH 2402/3421] Add timestamp to trade output --- freqtrade/persistence.py | 2 ++ freqtrade/rpc/rpc.py | 6 ++++-- freqtrade/rpc/telegram.py | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 3f7f4e0e9..da7137cba 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -257,10 +257,12 @@ class Trade(_DECL_BASE): 'fee_close_currency': self.fee_close_currency, 'open_date_hum': arrow.get(self.open_date).humanize(), 'open_date': self.open_date.strftime("%Y-%m-%d %H:%M:%S"), + 'open_timestamp': int(self.open_date.timestamp() * 1000), 'close_date_hum': (arrow.get(self.close_date).humanize() if self.close_date else None), 'close_date': (self.close_date.strftime("%Y-%m-%d %H:%M:%S") if self.close_date else None), + 'close_timestamp': int(self.close_date.timestamp() * 1000) if self.close_date else None, 'open_rate': self.open_rate, 'open_rate_requested': self.open_rate_requested, 'open_trade_price': self.open_trade_price, diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 21f54de50..81fb3d4be 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -135,9 +135,11 @@ class RPC: trade_dict = trade.to_json() trade_dict.update(dict( base_currency=self._freqtrade.config['stake_currency'], - close_profit=fmt_close_profit, + close_profit=trade.close_profit or None, + close_profit_perc=fmt_close_profit, current_rate=current_rate, - current_profit=round(current_profit * 100, 2), + current_profit_perc=round(current_profit * 100, 2), + current_profit=current_profit, open_order='({} {} rem={:.8f})'.format( order['type'], order['side'], order['remaining'] ) if order else None, diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index dfda15a26..e09d5348d 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -215,8 +215,8 @@ class Telegram(RPC): "*Open Rate:* `{open_rate:.8f}`", "*Close Rate:* `{close_rate}`" if r['close_rate'] else "", "*Current Rate:* `{current_rate:.8f}`", - "*Close Profit:* `{close_profit}`" if r['close_profit'] else "", - "*Current Profit:* `{current_profit:.2f}%`", + "*Close Profit:* `{close_profit}`" if r['close_profit_perc'] else "", + "*Current Profit:* `{current_profit_perc:.2f}%`", # Adding initial stoploss only if it is different from stoploss "*Initial Stoploss:* `{initial_stop_loss:.8f}` " + From 859b619a0b2c1a1c92a39a3b95a6ecf031c942ed Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 24 May 2020 08:47:10 +0200 Subject: [PATCH 2403/3421] Align tests to new output --- tests/rpc/test_rpc.py | 8 +++++++- tests/rpc/test_rpc_apiserver.py | 8 +++++++- tests/rpc/test_rpc_telegram.py | 5 +++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 63691dfb4..03c6ebd35 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -49,6 +49,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'base_currency': 'BTC', 'open_date': ANY, 'open_date_hum': ANY, + 'open_timestamp': ANY, 'is_open': ANY, 'fee_open': ANY, 'fee_open_cost': ANY, @@ -68,13 +69,15 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_order_id': ANY, 'close_date': None, 'close_date_hum': None, + 'close_timestamp': None, 'open_rate': 1.098e-05, 'close_rate': None, 'current_rate': 1.099e-05, 'amount': 91.07468124, 'stake_amount': 0.001, 'close_profit': None, - 'current_profit': -0.41, + 'current_profit': -0.00408133, + 'current_profit_perc': -0.41, 'stop_loss': 0.0, 'initial_stop_loss': 0.0, 'initial_stop_loss_pct': None, @@ -93,6 +96,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'base_currency': 'BTC', 'open_date': ANY, 'open_date_hum': ANY, + 'open_timestamp': ANY, 'is_open': ANY, 'fee_open': ANY, 'fee_open_cost': ANY, @@ -112,6 +116,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_order_id': ANY, 'close_date': None, 'close_date_hum': None, + 'close_timestamp': None, 'open_rate': 1.098e-05, 'close_rate': None, 'current_rate': ANY, @@ -119,6 +124,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'stake_amount': 0.001, 'close_profit': None, 'current_profit': ANY, + 'current_profit_perc': ANY, 'stop_loss': 0.0, 'initial_stop_loss': 0.0, 'initial_stop_loss_pct': None, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 1d68599f2..69985bef8 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -497,14 +497,18 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'base_currency': 'BTC', 'close_date': None, 'close_date_hum': None, + 'close_timestamp': None, 'close_profit': None, + 'close_profit_perc': None, 'close_rate': None, - 'current_profit': -0.41, + 'current_profit': -0.00408133, + 'current_profit_perc': -0.41, 'current_rate': 1.099e-05, 'initial_stop_loss': 0.0, 'initial_stop_loss_pct': None, 'open_date': ANY, 'open_date_hum': 'just now', + 'open_timestamp': ANY, 'open_order': '(limit buy rem=0.00000000)', 'open_rate': 1.098e-05, 'pair': 'ETH/BTC', @@ -609,11 +613,13 @@ def test_api_forcebuy(botclient, mocker, fee): assert rc.json == {'amount': 1, 'close_date': None, 'close_date_hum': None, + 'close_timestamp': None, 'close_rate': 0.265441, 'initial_stop_loss': None, 'initial_stop_loss_pct': None, 'open_date': ANY, 'open_date_hum': 'just now', + 'open_timestamp': ANY, 'open_rate': 0.245441, 'pair': 'ETH/ETH', 'stake_amount': 1, diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index b84073dcc..1d599d13e 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -166,8 +166,9 @@ def test_status(default_conf, update, mocker, fee, ticker,) -> None: 'current_rate': 1.098e-05, 'amount': 90.99181074, 'stake_amount': 90.99181074, - 'close_profit': None, - 'current_profit': -0.59, + 'close_profit_perc': None, + 'current_profit': -0.0059, + 'current_profit_perc': -0.59, 'initial_stop_loss': 1.098e-05, 'stop_loss': 1.099e-05, 'sell_order_status': None, From 811e23e3da398feb9100c34dbf158eda9b2fe34d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 24 May 2020 08:58:26 +0200 Subject: [PATCH 2404/3421] Have profit return time in timestamp --- freqtrade/rpc/rpc.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 81fb3d4be..c8d17c7b3 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -314,7 +314,9 @@ class RPC: 'profit_all_fiat': profit_all_fiat, 'trade_count': len(trades), 'first_trade_date': arrow.get(trades[0].open_date).humanize(), + 'first_trade_timestamp': int(trades[0].open_date.timestamp() * 1000), 'latest_trade_date': arrow.get(trades[-1].open_date).humanize(), + 'latest_trade_timestamp': int(trades[-1].open_date.timestamp() * 1000), 'avg_duration': str(timedelta(seconds=sum(durations) / num)).split('.')[0], 'best_pair': bp_pair, 'best_rate': round(bp_rate * 100, 2), From bbd7579aa8c3bc418698fb79c51cc4d34c61eeed Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 24 May 2020 09:07:24 +0200 Subject: [PATCH 2405/3421] Fix more tests --- tests/rpc/test_rpc.py | 2 ++ tests/rpc/test_rpc_apiserver.py | 2 ++ tests/test_persistence.py | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 03c6ebd35..5d278895b 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -76,6 +76,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'amount': 91.07468124, 'stake_amount': 0.001, 'close_profit': None, + 'close_profit_perc': None, 'current_profit': -0.00408133, 'current_profit_perc': -0.41, 'stop_loss': 0.0, @@ -123,6 +124,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'amount': 91.07468124, 'stake_amount': 0.001, 'close_profit': None, + 'close_profit_perc': None, 'current_profit': ANY, 'current_profit_perc': ANY, 'stop_loss': 0.0, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 69985bef8..1c0df9903 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -420,7 +420,9 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li 'best_pair': 'ETH/BTC', 'best_rate': 6.2, 'first_trade_date': 'just now', + 'first_trade_timestamp': ANY, 'latest_trade_date': 'just now', + 'latest_trade_timestamp': ANY, 'profit_all_coin': 6.217e-05, 'profit_all_fiat': 0, 'profit_all_percent': 6.2, diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 25afed397..60bf073f8 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -739,9 +739,11 @@ def test_to_json(default_conf, fee): 'is_open': None, 'open_date_hum': '2 hours ago', 'open_date': trade.open_date.strftime("%Y-%m-%d %H:%M:%S"), + 'open_timestamp': int(trade.open_date.timestamp() * 1000), 'open_order_id': 'dry_run_buy_12345', 'close_date_hum': None, 'close_date': None, + 'close_timestamp': None, 'open_rate': 0.123, 'open_rate_requested': None, 'open_trade_price': 15.1668225, @@ -787,8 +789,10 @@ def test_to_json(default_conf, fee): 'pair': 'XRP/BTC', 'open_date_hum': '2 hours ago', 'open_date': trade.open_date.strftime("%Y-%m-%d %H:%M:%S"), + 'open_timestamp': int(trade.open_date.timestamp() * 1000), 'close_date_hum': 'an hour ago', 'close_date': trade.close_date.strftime("%Y-%m-%d %H:%M:%S"), + 'close_timestamp': int(trade.close_date.timestamp() * 1000), 'open_rate': 0.123, 'close_rate': 0.125, 'amount': 100.0, From c5480c25140267cf499de4278a4417328e187df9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 24 May 2020 19:18:28 +0200 Subject: [PATCH 2406/3421] Split issue-tempaltes --- .../bug_report.md} | 16 ++++++++--- .github/ISSUE_TEMPLATE/feature_request.md | 27 +++++++++++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) rename .github/{ISSUE_TEMPLATE.md => ISSUE_TEMPLATE/bug_report.md} (72%) create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/bug_report.md similarity index 72% rename from .github/ISSUE_TEMPLATE.md rename to .github/ISSUE_TEMPLATE/bug_report.md index 5a77e200c..2b02dcdda 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,9 +1,18 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: triage needed +assignees: '' + +--- ## Describe your environment @@ -11,8 +20,7 @@ If it hasn't been reported, please create a new issue. * Operating system: ____ * Python Version: _____ (`python -V`) * CCXT version: _____ (`pip freeze | grep ccxt`) - * Branch: Master | Develop - * Last Commit ID: _____ (`git log --format="%H" -n 1`) + * Version: ____ (`freqtrade -V` | `docker-compose run --rm freqtrade -V`) Note: All issues other than enhancement requests will be closed without further comment if the above template is deleted or not filled out.. @@ -33,7 +41,7 @@ Note: All issues other than enhancement requests will be closed without further ### Relevant code exceptions or logs -Note: Please copy/paste code, no screenshots of logs. +Note: Please copy/paste code, no screenshots of logs please. ``` // paste your log here diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..87fad7994 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,27 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + + + +## Describe your environment +(if applicable) + + * Operating system: ____ + * Python Version: _____ (`python -V`) + * CCXT version: _____ (`pip freeze | grep ccxt`) + * Version: ____ (`freqtrade -V` | `docker-compose run --rm freqtrade -V`) + + +## Describe the enhancement + +*Explain the enhancement you would like* + From aa004fa842d89a77639aacf732ff547502df2106 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 24 May 2020 19:20:24 +0200 Subject: [PATCH 2407/3421] Fix typo in label --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 2b02dcdda..0f009eb1b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -2,7 +2,7 @@ name: Bug report about: Create a report to help us improve title: '' -labels: triage needed +labels: Triage Needed assignees: '' --- From e138f9b23c08038d618e3723428ce10f4a2827b5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 24 May 2020 20:15:10 +0200 Subject: [PATCH 2408/3421] Apply suggestions from code review Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/bug_report.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 0f009eb1b..4aa7babf4 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -7,7 +7,7 @@ assignees: '' --- ## Describe your environment diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 000000000..f87b78f29 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,25 @@ +--- +name: BQuestion +about: Ask a question you could not find an answer in the docs +title: '' +labels: "Question" +assignees: '' + +--- + + +## Describe your environment + + * Operating system: ____ + * Python Version: _____ (`python -V`) + * CCXT version: _____ (`pip freeze | grep ccxt`) + * Freqtrade Version: ____ (`freqtrade -V` or `docker-compose run --rm freqtrade -V` for Freqtrade running in docker) + +## Your question + +*Ask the question you have not been able to find an answer in our [Documentation](https://www.freqtrade.io/en/latest/)* From 0e8f95effd2798655b11d31e6b1659e9acc445ca Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 28 May 2020 06:51:53 +0200 Subject: [PATCH 2449/3421] Improve blacklist adding with proper feedback --- freqtrade/rpc/rpc.py | 16 +++++++++++++--- tests/rpc/test_rpc.py | 14 ++++++++++++++ tests/rpc/test_rpc_apiserver.py | 8 ++++++-- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 248b4a421..2a49e109a 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -533,16 +533,26 @@ class RPC: def _rpc_blacklist(self, add: List[str] = None) -> Dict: """ Returns the currently active blacklist""" + errors = {} if add: stake_currency = self._freqtrade.config.get('stake_currency') for pair in add: - if (self._freqtrade.exchange.get_pair_quote_currency(pair) == stake_currency - and pair not in self._freqtrade.pairlists.blacklist): - self._freqtrade.pairlists.blacklist.append(pair) + if self._freqtrade.exchange.get_pair_quote_currency(pair) == stake_currency: + if pair not in self._freqtrade.pairlists.blacklist: + self._freqtrade.pairlists.blacklist.append(pair) + else: + errors[pair] = { + 'error_msg': f'Pair {pair} already in pairlist.'} + + else: + errors[pair] = { + 'error_msg': f"Pair {pair} does not match stake currency." + } res = {'method': self._freqtrade.pairlists.name_list, 'length': len(self._freqtrade.pairlists.blacklist), 'blacklist': self._freqtrade.pairlists.blacklist, + 'errors': errors, } return res diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index e94097545..bdd3c25d5 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -833,6 +833,20 @@ def test_rpc_blacklist(mocker, default_conf) -> None: assert ret['blacklist'] == default_conf['exchange']['pair_blacklist'] assert ret['blacklist'] == ['DOGE/BTC', 'HOT/BTC', 'ETH/BTC'] + ret = rpc._rpc_blacklist(["ETH/BTC"]) + assert 'errors' in ret + assert isinstance(ret['errors'], dict) + assert ret['errors']['ETH/BTC']['error_msg'] == 'Pair ETH/BTC already in pairlist.' + + ret = rpc._rpc_blacklist(["ETH/ETH"]) + assert 'StaticPairList' in ret['method'] + assert len(ret['blacklist']) == 3 + assert ret['blacklist'] == default_conf['exchange']['pair_blacklist'] + assert ret['blacklist'] == ['DOGE/BTC', 'HOT/BTC', 'ETH/BTC'] + assert 'errors' in ret + assert isinstance(ret['errors'], dict) + assert ret['errors']['ETH/ETH']['error_msg'] == 'Pair ETH/ETH does not match stake currency.' + def test_rpc_edge_disabled(mocker, default_conf) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock()) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index cc63bf6e8..85f0e5122 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -554,7 +554,9 @@ def test_api_blacklist(botclient, mocker): assert_response(rc) assert rc.json == {"blacklist": ["DOGE/BTC", "HOT/BTC"], "length": 2, - "method": ["StaticPairList"]} + "method": ["StaticPairList"], + "errors": {}, + } # Add ETH/BTC to blacklist rc = client_post(client, f"{BASE_URI}/blacklist", @@ -562,7 +564,9 @@ def test_api_blacklist(botclient, mocker): assert_response(rc) assert rc.json == {"blacklist": ["DOGE/BTC", "HOT/BTC", "ETH/BTC"], "length": 3, - "method": ["StaticPairList"]} + "method": ["StaticPairList"], + "errors": {}, + } def test_api_whitelist(botclient): From 7399c7e70caa80d2a052329e28a9d460bfdadce0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 28 May 2020 07:04:06 +0200 Subject: [PATCH 2450/3421] Provide blacklist feedback to telegram --- freqtrade/rpc/telegram.py | 5 +++++ tests/rpc/test_rpc_telegram.py | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 488fa9f37..6f092fcab 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -534,6 +534,11 @@ class Telegram(RPC): try: blacklist = self._rpc_blacklist(context.args) + errmsgs = [] + for pair, error in blacklist['errors'].items(): + errmsgs.append(f"Error adding `{pair}` to blacklist: `{error['error_msg']}`") + if errmsgs: + self._send_msg('\n'.join(errmsgs)) message = f"Blacklist contains {blacklist['length']} pairs\n" message += f"`{', '.join(blacklist['blacklist'])}`" diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 730bb2677..7d02a4339 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1085,6 +1085,18 @@ def test_blacklist_static(default_conf, update, mocker) -> None: in msg_mock.call_args_list[0][0][0]) assert freqtradebot.pairlists.blacklist == ["DOGE/BTC", "HOT/BTC", "ETH/BTC"] + msg_mock.reset_mock() + context = MagicMock() + context.args = ["ETH/ETH"] + telegram._blacklist(update=update, context=context) + assert msg_mock.call_count == 2 + assert ("Error adding `ETH/ETH` to blacklist: `Pair ETH/ETH does not match stake currency.`" + in msg_mock.call_args_list[0][0][0]) + + assert ("Blacklist contains 3 pairs\n`DOGE/BTC, HOT/BTC, ETH/BTC`" + in msg_mock.call_args_list[1][0][0]) + assert freqtradebot.pairlists.blacklist == ["DOGE/BTC", "HOT/BTC", "ETH/BTC"] + def test_edge_disabled(default_conf, update, mocker) -> None: msg_mock = MagicMock() From 7df786994da2dbdbc662367976fa1e647a205d08 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 28 May 2020 19:35:32 +0200 Subject: [PATCH 2451/3421] Plotting should not fail if one pair didn't produce any trades --- freqtrade/plot/plotting.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 095ca4133..f1d114e2b 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -415,9 +415,12 @@ def generate_profit_graph(pairs: str, data: Dict[str, pd.DataFrame], for pair in pairs: profit_col = f'cum_profit_{pair}' - df_comb = create_cum_profit(df_comb, trades[trades['pair'] == pair], profit_col, timeframe) - - fig = add_profit(fig, 3, df_comb, profit_col, f"Profit {pair}") + try: + df_comb = create_cum_profit(df_comb, trades[trades['pair'] == pair], profit_col, + timeframe) + fig = add_profit(fig, 3, df_comb, profit_col, f"Profit {pair}") + except ValueError: + pass return fig From 909b81255005839eb7f41a02f5138f844e0a67bf Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 29 May 2020 00:28:24 +0300 Subject: [PATCH 2452/3421] Update developer.md --- docs/developer.md | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/docs/developer.md b/docs/developer.md index 34b2f1ba5..a680bc8dc 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -92,13 +92,13 @@ docker-compose exec freqtrade_develop /bin/bash You have a great idea for a new pair selection algorithm you would like to try out? Great. Hopefully you also want to contribute this back upstream. -Whatever your motivations are - This should get you off the ground in trying to develop a new Pairlist provider. +Whatever your motivations are - This should get you off the ground in trying to develop a new Pairlist Handler. -First of all, have a look at the [VolumePairList](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/pairlist/VolumePairList.py) provider, and best copy this file with a name of your new Pairlist Provider. +First of all, have a look at the [VolumePairList](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/pairlist/VolumePairList.py) Handler, and best copy this file with a name of your new Pairlist Handler. -This is a simple provider, which however serves as a good example on how to start developing. +This is a simple Handler, which however serves as a good example on how to start developing. -Next, modify the classname of the provider (ideally align this with the Filename). +Next, modify the classname of the Handler (ideally align this with the module filename). The base-class provides an instance of the exchange (`self._exchange`) the pairlist manager (`self._pairlistmanager`), as well as the main configuration (`self._config`), the pairlist dedicated configuration (`self._pairlistconfig`) and the absolute position within the list of pairlists. @@ -114,28 +114,44 @@ Now, let's step through the methods which require actions: #### Pairlist configuration -Configuration for PairListProvider is done in the bot configuration file in the element `"pairlist"`. -This Pairlist-object may contain configurations with additional configurations for the configured pairlist. -By convention, `"number_assets"` is used to specify the maximum number of pairs to keep in the whitelist. Please follow this to ensure a consistent user experience. +Configuration for the chain of Pairlist Handlers is done in the bot configuration file in the element `"pairlists"`, an array of configuration parameters for each Pairlist Handlers in the chain. -Additional elements can be configured as needed. `VolumePairList` uses `"sort_key"` to specify the sorting value - however feel free to specify whatever is necessary for your great algorithm to be successfull and dynamic. +By convention, `"number_assets"` is used to specify the maximum number of pairs to keep in the pairlist. Please follow this to ensure a consistent user experience. + +Additional parameters can be configured as needed. For instance, `VolumePairList` uses `"sort_key"` to specify the sorting value - however feel free to specify whatever is necessary for your great algorithm to be successfull and dynamic. #### short_desc Returns a description used for Telegram messages. -This should contain the name of the Provider, as well as a short description containing the number of assets. Please follow the format `"PairlistName - top/bottom X pairs"`. + +This should contain the name of the Pairlist Handler, as well as a short description containing the number of assets. Please follow the format `"PairlistName - top/bottom X pairs"`. + +#### gen_pairlist + +Override this method if the Pairlist Handler can be used as the leading Pairlist Handler in the chain, defining the initial pairlist which is then handled by all Pairlist Handlers in the chain. Examples are `StaticPairList` and `VolumePairList`. + +This is called with each iteration of the bot - so consider implementing caching for compute/network heavy calculations. + +It must return the resulting pairlist (which may then be passed into the chain of Pairlist Handlers). + +Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filtering. Use this if you limit your result to a certain number of pairs - so the endresult is not shorter than expected. #### filter_pairlist -Override this method and run all calculations needed in this method. +This method is called for each Pairlist Handler in the chain by the pairlist manager. + This is called with each iteration of the bot - so consider implementing caching for compute/network heavy calculations. It get's passed a pairlist (which can be the result of previous pairlists) as well as `tickers`, a pre-fetched version of `get_tickers()`. -It must return the resulting pairlist (which may then be passed into the next pairlist filter). +The default implementation in the base class simply calls the `_validate_pair()` method for each pair in the pairlist, but you may override it. So you should either implement the `_validate_pair()` in your Pairlist Handler or override `filter_pairlist()` to do something else. + +If overridden, it must return the resulting pairlist (which may then be passed into the next Pairlist Handler in the chain). Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filters. Use this if you limit your result to a certain number of pairs - so the endresult is not shorter than expected. +In `VolumePairList`, this implements different methods of sorting, does early validation so only the expected number of pairs is returned. + ##### sample ``` python @@ -145,11 +161,6 @@ Validations are optional, the parent class exposes a `_verify_blacklist(pairlist return pairs ``` -#### _gen_pair_whitelist - -This is a simple method used by `VolumePairList` - however serves as a good example. -In VolumePairList, this implements different methods of sorting, does early validation so only the expected number of pairs is returned. - ## Implement a new Exchange (WIP) !!! Note From 6261aef314427bc64c9b3c3dbabedeccb74b734b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 29 May 2020 09:03:48 +0200 Subject: [PATCH 2453/3421] Return /profit even if no trade is closed --- freqtrade/persistence.py | 1 + freqtrade/rpc/rpc.py | 19 ++++++++----------- tests/rpc/test_rpc.py | 8 ++++++-- tests/rpc/test_rpc_apiserver.py | 12 +++++++----- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index da7137cba..d9951f1fc 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -546,6 +546,7 @@ class Trade(_DECL_BASE): def get_best_pair(): """ Get best pair with closed trade. + :returns: Tuple containing (pair, profit_sum) """ best_pair = Trade.session.query( Trade.pair, func.sum(Trade.close_profit).label('profit_sum') diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 248b4a421..eb822e234 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -281,11 +281,6 @@ class RPC: best_pair = Trade.get_best_pair() - if not best_pair: - raise RPCException('no closed trade') - - bp_pair, bp_rate = best_pair - # Prepare data to display profit_closed_coin_sum = round(sum(profit_closed_coin), 8) profit_closed_percent = (round(mean(profit_closed_ratio) * 100, 2) if profit_closed_ratio @@ -304,6 +299,8 @@ class RPC: fiat_display_currency ) if self._fiat_converter else 0 + first_date = trades[0].open_date if trades else None + last_date = trades[-1].open_date if trades else None num = float(len(durations) or 1) return { 'profit_closed_coin': profit_closed_coin_sum, @@ -313,13 +310,13 @@ class RPC: 'profit_all_percent': profit_all_percent, 'profit_all_fiat': profit_all_fiat, 'trade_count': len(trades), - 'first_trade_date': arrow.get(trades[0].open_date).humanize(), - 'first_trade_timestamp': int(trades[0].open_date.timestamp() * 1000), - 'latest_trade_date': arrow.get(trades[-1].open_date).humanize(), - 'latest_trade_timestamp': int(trades[-1].open_date.timestamp() * 1000), + 'first_trade_date': arrow.get(first_date).humanize() if first_date else '', + 'first_trade_timestamp': int(first_date.timestamp() * 1000) if first_date else 0, + 'latest_trade_date': arrow.get(last_date).humanize() if last_date else '', + 'latest_trade_timestamp': int(last_date.timestamp() * 1000) if last_date else 0, 'avg_duration': str(timedelta(seconds=sum(durations) / num)).split('.')[0], - 'best_pair': bp_pair, - 'best_rate': round(bp_rate * 100, 2), + 'best_pair': best_pair[0] if best_pair else '', + 'best_rate': round(best_pair[1] * 100, 2) if best_pair else 0, } def _rpc_balance(self, stake_currency: str, fiat_display_currency: str) -> Dict: diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index e94097545..634b2f739 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -279,8 +279,12 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, rpc = RPC(freqtradebot) rpc._fiat_converter = CryptoToFiatConverter() - with pytest.raises(RPCException, match=r'.*no closed trade*'): - rpc._rpc_trade_statistics(stake_currency, fiat_display_currency) + res = rpc._rpc_trade_statistics(stake_currency, fiat_display_currency) + assert res['trade_count'] == 0 + assert res['first_trade_date'] == '' + assert res['first_trade_timestamp'] == 0 + assert res['latest_trade_date'] == '' + assert res['latest_trade_timestamp'] == 0 # Create some test data freqtradebot.enter_positions() diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index cc63bf6e8..c68aae56d 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -396,9 +396,8 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li ) rc = client_get(client, f"{BASE_URI}/profit") - assert_response(rc, 502) - assert len(rc.json) == 1 - assert rc.json == {"error": "Error querying _profit: no closed trade"} + assert_response(rc, 200) + assert rc.json['trade_count'] == 0 ftbot.enter_positions() trade = Trade.query.first() @@ -406,8 +405,11 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li # Simulate fulfilled LIMIT_BUY order for trade trade.update(limit_buy_order) rc = client_get(client, f"{BASE_URI}/profit") - assert_response(rc, 502) - assert rc.json == {"error": "Error querying _profit: no closed trade"} + assert_response(rc, 200) + # One open trade + assert rc.json['trade_count'] == 1 + assert rc.json['best_pair'] == '' + assert rc.json['best_rate'] == 0 trade.update(limit_sell_order) From 1d6e3fea8588e2c54a8593546a9c9628a751d489 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 29 May 2020 09:38:12 +0200 Subject: [PATCH 2454/3421] Update /profit telegram message to support non-closed trades --- freqtrade/rpc/rpc.py | 1 + freqtrade/rpc/telegram.py | 29 +++++++++++++++++------------ tests/rpc/test_rpc_apiserver.py | 3 ++- tests/rpc/test_rpc_telegram.py | 6 ++++-- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index eb822e234..6addf18ba 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -310,6 +310,7 @@ class RPC: 'profit_all_percent': profit_all_percent, 'profit_all_fiat': profit_all_fiat, 'trade_count': len(trades), + 'closed_trade_count': len([t for t in trades if not t.is_open]), 'first_trade_date': arrow.get(first_date).humanize() if first_date else '', 'first_trade_timestamp': int(first_date.timestamp() * 1000) if first_date else 0, 'latest_trade_date': arrow.get(last_date).humanize() if last_date else '', diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 488fa9f37..78cdaef62 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -328,18 +328,23 @@ class Telegram(RPC): best_pair = stats['best_pair'] best_rate = stats['best_rate'] # Message to display - markdown_msg = "*ROI:* Close trades\n" \ - f"∙ `{profit_closed_coin:.8f} {stake_cur} "\ - f"({profit_closed_percent:.2f}%)`\n" \ - f"∙ `{profit_closed_fiat:.3f} {fiat_disp_cur}`\n" \ - f"*ROI:* All trades\n" \ - f"∙ `{profit_all_coin:.8f} {stake_cur} ({profit_all_percent:.2f}%)`\n" \ - f"∙ `{profit_all_fiat:.3f} {fiat_disp_cur}`\n" \ - f"*Total Trade Count:* `{trade_count}`\n" \ - f"*First Trade opened:* `{first_trade_date}`\n" \ - f"*Latest Trade opened:* `{latest_trade_date}`\n" \ - f"*Avg. Duration:* `{avg_duration}`\n" \ - f"*Best Performing:* `{best_pair}: {best_rate:.2f}%`" + if stats['closed_trade_count'] > 0: + markdown_msg = ("*ROI:* Close trades\n" + f"∙ `{profit_closed_coin:.8f} {stake_cur} " + f"({profit_closed_percent:.2f}%)`\n" + f"∙ `{profit_closed_fiat:.3f} {fiat_disp_cur}`\n") + else: + markdown_msg = "`No closed trade` \n" + + markdown_msg += (f"*ROI:* All trades\n" + f"∙ `{profit_all_coin:.8f} {stake_cur} ({profit_all_percent:.2f}%)`\n" + f"∙ `{profit_all_fiat:.3f} {fiat_disp_cur}`\n" + f"*Total Trade Count:* `{trade_count}`\n" + f"*First Trade opened:* `{first_trade_date}`\n" + f"*Latest Trade opened:* `{latest_trade_date}`") + if stats['closed_trade_count'] > 0: + markdown_msg += (f"\n*Avg. Duration:* `{avg_duration}`\n" + f"*Best Performing:* `{best_pair}: {best_rate:.2f}%`") self._send_msg(markdown_msg) except RPCException as e: self._send_msg(str(e)) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index c68aae56d..5cab10244 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -431,7 +431,8 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li 'profit_closed_coin': 6.217e-05, 'profit_closed_fiat': 0, 'profit_closed_percent': 6.2, - 'trade_count': 1 + 'trade_count': 1, + 'closed_trade_count': 1, } diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 730bb2677..0b990281f 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -420,7 +420,7 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, telegram._profit(update=update, context=MagicMock()) assert msg_mock.call_count == 1 - assert 'no closed trade' in msg_mock.call_args_list[0][0][0] + assert 'No closed trade' in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() # Create some test data @@ -432,7 +432,9 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, telegram._profit(update=update, context=MagicMock()) assert msg_mock.call_count == 1 - assert 'no closed trade' in msg_mock.call_args_list[-1][0][0] + assert 'No closed trade' in msg_mock.call_args_list[-1][0][0] + assert '*ROI:* All trades' in msg_mock.call_args_list[-1][0][0] + assert '∙ `-0.00000500 BTC (-0.50%)`' in msg_mock.call_args_list[-1][0][0] msg_mock.reset_mock() # Update the ticker with a market going up From 46456516bb677077eeafb0fb853a6517a1b7b1cf Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 29 May 2020 10:10:45 +0200 Subject: [PATCH 2455/3421] Remove exception handler --- freqtrade/rpc/telegram.py | 69 +++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 36 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 78cdaef62..4bf19192d 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -311,43 +311,40 @@ class Telegram(RPC): stake_cur = self._config['stake_currency'] fiat_disp_cur = self._config.get('fiat_display_currency', '') - try: - stats = self._rpc_trade_statistics( - stake_cur, - fiat_disp_cur) - profit_closed_coin = stats['profit_closed_coin'] - profit_closed_percent = stats['profit_closed_percent'] - profit_closed_fiat = stats['profit_closed_fiat'] - profit_all_coin = stats['profit_all_coin'] - profit_all_percent = stats['profit_all_percent'] - profit_all_fiat = stats['profit_all_fiat'] - trade_count = stats['trade_count'] - first_trade_date = stats['first_trade_date'] - latest_trade_date = stats['latest_trade_date'] - avg_duration = stats['avg_duration'] - best_pair = stats['best_pair'] - best_rate = stats['best_rate'] - # Message to display - if stats['closed_trade_count'] > 0: - markdown_msg = ("*ROI:* Close trades\n" - f"∙ `{profit_closed_coin:.8f} {stake_cur} " - f"({profit_closed_percent:.2f}%)`\n" - f"∙ `{profit_closed_fiat:.3f} {fiat_disp_cur}`\n") - else: - markdown_msg = "`No closed trade` \n" + stats = self._rpc_trade_statistics( + stake_cur, + fiat_disp_cur) + profit_closed_coin = stats['profit_closed_coin'] + profit_closed_percent = stats['profit_closed_percent'] + profit_closed_fiat = stats['profit_closed_fiat'] + profit_all_coin = stats['profit_all_coin'] + profit_all_percent = stats['profit_all_percent'] + profit_all_fiat = stats['profit_all_fiat'] + trade_count = stats['trade_count'] + first_trade_date = stats['first_trade_date'] + latest_trade_date = stats['latest_trade_date'] + avg_duration = stats['avg_duration'] + best_pair = stats['best_pair'] + best_rate = stats['best_rate'] + # Message to display + if stats['closed_trade_count'] > 0: + markdown_msg = ("*ROI:* Close trades\n" + f"∙ `{profit_closed_coin:.8f} {stake_cur} " + f"({profit_closed_percent:.2f}%)`\n" + f"∙ `{profit_closed_fiat:.3f} {fiat_disp_cur}`\n") + else: + markdown_msg = "`No closed trade` \n" - markdown_msg += (f"*ROI:* All trades\n" - f"∙ `{profit_all_coin:.8f} {stake_cur} ({profit_all_percent:.2f}%)`\n" - f"∙ `{profit_all_fiat:.3f} {fiat_disp_cur}`\n" - f"*Total Trade Count:* `{trade_count}`\n" - f"*First Trade opened:* `{first_trade_date}`\n" - f"*Latest Trade opened:* `{latest_trade_date}`") - if stats['closed_trade_count'] > 0: - markdown_msg += (f"\n*Avg. Duration:* `{avg_duration}`\n" - f"*Best Performing:* `{best_pair}: {best_rate:.2f}%`") - self._send_msg(markdown_msg) - except RPCException as e: - self._send_msg(str(e)) + markdown_msg += (f"*ROI:* All trades\n" + f"∙ `{profit_all_coin:.8f} {stake_cur} ({profit_all_percent:.2f}%)`\n" + f"∙ `{profit_all_fiat:.3f} {fiat_disp_cur}`\n" + f"*Total Trade Count:* `{trade_count}`\n" + f"*First Trade opened:* `{first_trade_date}`\n" + f"*Latest Trade opened:* `{latest_trade_date}`") + if stats['closed_trade_count'] > 0: + markdown_msg += (f"\n*Avg. Duration:* `{avg_duration}`\n" + f"*Best Performing:* `{best_pair}: {best_rate:.2f}%`") + self._send_msg(markdown_msg) @authorized_only def _balance(self, update: Update, context: CallbackContext) -> None: From 43225cfdcf71df41314ababe06860ea29c2e0638 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 29 May 2020 11:28:09 +0300 Subject: [PATCH 2456/3421] Update docs/developer.md Co-authored-by: Matthias --- docs/developer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developer.md b/docs/developer.md index a680bc8dc..036109d5b 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -130,7 +130,7 @@ This should contain the name of the Pairlist Handler, as well as a short descrip Override this method if the Pairlist Handler can be used as the leading Pairlist Handler in the chain, defining the initial pairlist which is then handled by all Pairlist Handlers in the chain. Examples are `StaticPairList` and `VolumePairList`. -This is called with each iteration of the bot - so consider implementing caching for compute/network heavy calculations. +This is called with each iteration of the bot (only if the Pairlist Handler is at the first location) - so consider implementing caching for compute/network heavy calculations. It must return the resulting pairlist (which may then be passed into the chain of Pairlist Handlers). From a4cf9ba85b2a3c823fef5a9622c6f809745b8a76 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 29 May 2020 12:40:05 +0300 Subject: [PATCH 2457/3421] Move check for position for StaticPairList to init --- freqtrade/pairlist/StaticPairList.py | 17 +++++++++++------ tests/pairlist/test_pairlist.py | 14 ++++++++------ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index 4c260d2fe..b5c1bc767 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -4,7 +4,7 @@ Static Pair List provider Provides pair white list as it configured in config """ import logging -from typing import Dict, List +from typing import Any, Dict, List from freqtrade.exceptions import OperationalException from freqtrade.pairlist.IPairList import IPairList @@ -15,6 +15,15 @@ logger = logging.getLogger(__name__) class StaticPairList(IPairList): + def __init__(self, exchange, pairlistmanager, + config: Dict[str, Any], pairlistconfig: Dict[str, Any], + pairlist_pos: int) -> None: + super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) + + if self._pairlist_pos != 0: + raise OperationalException(f"{self.name} can only be used in the first position " + "in the list of Pairlist Handlers.") + @property def needstickers(self) -> bool: """ @@ -48,8 +57,4 @@ class StaticPairList(IPairList): :param tickers: Tickers (from exchange.get_tickers()). May be cached. :return: new whitelist """ - if self._pairlist_pos != 0: - raise OperationalException(f"{self.name} can only be used in the first position " - "in the list of Pairlist Handlers.") - else: - return pairlist + return pairlist diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 9c35eae1b..421f06911 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -313,8 +313,15 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t whitelist_conf['stake_currency'] = base_currency mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) - freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) + if whitelist_result == 'static_in_the_middle': + with pytest.raises(OperationalException, + match=r"StaticPairList can only be used in the first position " + r"in the list of Pairlist Handlers."): + freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) + return + + freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) mocker.patch.multiple('freqtrade.exchange.Exchange', get_tickers=tickers, markets=PropertyMock(return_value=shitcoinmarkets), @@ -326,11 +333,6 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t match=r"This Pairlist Handler should not be used at the first position " r"in the list of Pairlist Handlers."): freqtrade.pairlists.refresh_pairlist() - elif whitelist_result == 'static_in_the_middle': - with pytest.raises(OperationalException, - match=r"StaticPairList can only be used in the first position " - r"in the list of Pairlist Handlers."): - freqtrade.pairlists.refresh_pairlist() else: freqtrade.pairlists.refresh_pairlist() whitelist = freqtrade.pairlists.whitelist From ea5daee5054621daf1577b2e1cde7336dea0b1fe Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 29 May 2020 19:37:18 +0200 Subject: [PATCH 2458/3421] Allow changing severity of strategy-validations to log only. --- config_full.json.example | 1 + docs/configuration.md | 1 + freqtrade/constants.py | 1 + freqtrade/resolvers/strategy_resolver.py | 49 ++++++++++++------------ freqtrade/strategy/interface.py | 11 ++++-- tests/strategy/test_interface.py | 10 ++++- 6 files changed, 45 insertions(+), 28 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index 0cd265cbe..481742817 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -132,6 +132,7 @@ "process_throttle_secs": 5, "heartbeat_interval": 60 }, + "disable_dataframe_checks": false, "strategy": "DefaultStrategy", "strategy_path": "user_data/strategies/", "dataformat_ohlcv": "json", diff --git a/docs/configuration.md b/docs/configuration.md index 93e53de6f..97e6b7911 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -107,6 +107,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite:///tradesv3.dryrun.sqlite` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances.
            **Datatype:** String, SQLAlchemy connect string | `initial_state` | Defines the initial application state. More information below.
            *Defaults to `stopped`.*
            **Datatype:** Enum, either `stopped` or `running` | `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below.
            **Datatype:** Boolean +| `disable_dataframe_checks` | Disable checking the dataframe for correctness. Only use when intentionally changing the dataframe. [Strategy Override](#parameters-in-the-strategy).[Strategy Override](#parameters-in-the-strategy).
            *Defaults to `False`*.
            **Datatype:** Boolean | `strategy` | **Required** Defines Strategy class to use. Recommended to be set via `--strategy NAME`.
            **Datatype:** ClassName | `strategy_path` | Adds an additional strategy lookup path (must be a directory).
            **Datatype:** String | `internals.process_throttle_secs` | Set the process throttle. Value in second.
            *Defaults to `5` seconds.*
            **Datatype:** Positive Integer diff --git a/freqtrade/constants.py b/freqtrade/constants.py index c1bf30f17..1984d4866 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -227,6 +227,7 @@ CONF_SCHEMA = { 'db_url': {'type': 'string'}, 'initial_state': {'type': 'string', 'enum': ['running', 'stopped']}, 'forcebuy_enable': {'type': 'boolean'}, + 'disable_dataframe_checks': {'type': 'boolean'}, 'internals': { 'type': 'object', 'default': {}, diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index cddc7c9cd..51cb8fc05 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -52,37 +52,38 @@ class StrategyResolver(IResolver): # Set attributes # Check if we need to override configuration - # (Attribute name, default, ask_strategy) - attributes = [("minimal_roi", {"0": 10.0}, False), - ("ticker_interval", None, False), - ("stoploss", None, False), - ("trailing_stop", None, False), - ("trailing_stop_positive", None, False), - ("trailing_stop_positive_offset", 0.0, False), - ("trailing_only_offset_is_reached", None, False), - ("process_only_new_candles", None, False), - ("order_types", None, False), - ("order_time_in_force", None, False), - ("stake_currency", None, False), - ("stake_amount", None, False), - ("startup_candle_count", None, False), - ("unfilledtimeout", None, False), - ("use_sell_signal", True, True), - ("sell_profit_only", False, True), - ("ignore_roi_if_buy_signal", False, True), + # (Attribute name, default, subkey) + attributes = [("minimal_roi", {"0": 10.0}, None), + ("ticker_interval", None, None), + ("stoploss", None, None), + ("trailing_stop", None, None), + ("trailing_stop_positive", None, None), + ("trailing_stop_positive_offset", 0.0, None), + ("trailing_only_offset_is_reached", None, None), + ("process_only_new_candles", None, None), + ("order_types", None, None), + ("order_time_in_force", None, None), + ("stake_currency", None, None), + ("stake_amount", None, None), + ("startup_candle_count", None, None), + ("unfilledtimeout", None, None), + ("use_sell_signal", True, 'ask_strategy'), + ("sell_profit_only", False, 'ask_strategy'), + ("ignore_roi_if_buy_signal", False, 'ask_strategy'), + ("disable_dataframe_checks", False, 'internals') ] - for attribute, default, ask_strategy in attributes: - if ask_strategy: - StrategyResolver._override_attribute_helper(strategy, config['ask_strategy'], + for attribute, default, subkey in attributes: + if subkey: + StrategyResolver._override_attribute_helper(strategy, config.get(subkey, {}), attribute, default) else: StrategyResolver._override_attribute_helper(strategy, config, attribute, default) # Loop this list again to have output combined - for attribute, _, exp in attributes: - if exp and attribute in config['ask_strategy']: - logger.info("Strategy using %s: %s", attribute, config['ask_strategy'][attribute]) + for attribute, _, subkey in attributes: + if subkey and attribute in config[subkey]: + logger.info("Strategy using %s: %s", attribute, config[subkey][attribute]) elif attribute in config: logger.info("Strategy using %s: %s", attribute, config[attribute]) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 400997baf..ed2344a53 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -106,6 +106,9 @@ class IStrategy(ABC): # run "populate_indicators" only for new candle process_only_new_candles: bool = False + # Disable checking the dataframe (converts the error into a warning message) + disable_dataframe_checks: bool = False + # Count of candles the strategy requires before producing valid signals startup_candle_count: int = 0 @@ -285,8 +288,7 @@ class IStrategy(ABC): """ keep some data for dataframes """ return len(dataframe), dataframe["close"].iloc[-1], dataframe["date"].iloc[-1] - @staticmethod - def assert_df(dataframe: DataFrame, df_len: int, df_close: float, df_date: datetime): + def assert_df(self, dataframe: DataFrame, df_len: int, df_close: float, df_date: datetime): """ make sure data is unmodified """ message = "" if df_len != len(dataframe): @@ -296,7 +298,10 @@ class IStrategy(ABC): elif df_date != dataframe["date"].iloc[-1]: message = "last date" if message: - raise StrategyError(f"Dataframe returned from strategy has mismatching {message}.") + if self.disable_dataframe_checks: + logger.warning(f"Dataframe returned from strategy has mismatching {message}.") + else: + raise StrategyError(f"Dataframe returned from strategy has mismatching {message}.") def get_signal(self, pair: str, interval: str, dataframe: DataFrame) -> Tuple[bool, bool]: """ diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index dd6b11a06..55dd07e9e 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -130,7 +130,7 @@ def test_assert_df_raise(default_conf, mocker, caplog, ohlcv_history): caplog) -def test_assert_df(default_conf, mocker, ohlcv_history): +def test_assert_df(default_conf, mocker, ohlcv_history, caplog): # Ensure it's running when passed correctly _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), ohlcv_history.loc[1, 'close'], ohlcv_history.loc[1, 'date']) @@ -148,6 +148,14 @@ def test_assert_df(default_conf, mocker, ohlcv_history): _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), ohlcv_history.loc[1, 'close'], ohlcv_history.loc[0, 'date']) + _STRATEGY.disable_dataframe_checks = True + caplog.clear() + _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), + ohlcv_history.loc[1, 'close'], ohlcv_history.loc[0, 'date']) + assert log_has_re(r"Dataframe returned from strategy.*last date\.", caplog) + # reset to avoid problems in other tests + _STRATEGY.disable_dataframe_checks = False + def test_get_signal_handles_exceptions(mocker, default_conf): exchange = get_patched_exchange(mocker, default_conf) From 2ed10aeb9be90fa5989455ae000db507032e24f4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 29 May 2020 19:39:13 +0200 Subject: [PATCH 2459/3421] Add to missing point in documentation --- docs/configuration.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/configuration.md b/docs/configuration.md index 97e6b7911..0bd913e88 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -136,6 +136,7 @@ Values set in the configuration file always overwrite values set in the strategy * `stake_currency` * `stake_amount` * `unfilledtimeout` +* `disable_dataframe_checks` * `use_sell_signal` (ask_strategy) * `sell_profit_only` (ask_strategy) * `ignore_roi_if_buy_signal` (ask_strategy) From f3824d970bb511d1a230fe6de713f735b81c80c7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 29 May 2020 20:18:38 +0200 Subject: [PATCH 2460/3421] Use dict for symbol_is_pair --- freqtrade/commands/list_commands.py | 2 +- freqtrade/exchange/exchange.py | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index e5131f9b2..bc4bd694f 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -163,7 +163,7 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: tabular_data.append({'Id': v['id'], 'Symbol': v['symbol'], 'Base': v['base'], 'Quote': v['quote'], 'Active': market_is_active(v), - **({'Is pair': symbol_is_pair(v['symbol'])} + **({'Is pair': symbol_is_pair(v)} if not pairs_only else {})}) if (args.get('print_one_column', False) or diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index af745e8d0..09f700bbb 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -214,7 +214,7 @@ class Exchange: if quote_currencies: markets = {k: v for k, v in markets.items() if v['quote'] in quote_currencies} if pairs_only: - markets = {k: v for k, v in markets.items() if symbol_is_pair(v['symbol'])} + markets = {k: v for k, v in markets.items() if symbol_is_pair(v)} if active_only: markets = {k: v for k, v in markets.items() if market_is_active(v)} return markets @@ -1210,7 +1210,7 @@ def timeframe_to_next_date(timeframe: str, date: datetime = None) -> datetime: return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) -def symbol_is_pair(market_symbol: str, base_currency: str = None, +def symbol_is_pair(market_symbol: Dict[str, Any], base_currency: str = None, quote_currency: str = None) -> bool: """ Check if the market symbol is a pair, i.e. that its symbol consists of the base currency and the @@ -1218,10 +1218,12 @@ def symbol_is_pair(market_symbol: str, base_currency: str = None, it also checks that the symbol contains appropriate base and/or quote currency part before and after the separating character correspondingly. """ - symbol_parts = market_symbol.split('/') + symbol_parts = market_symbol['symbol'].split('/') return (len(symbol_parts) == 2 and - (symbol_parts[0] == base_currency if base_currency else len(symbol_parts[0]) > 0) and - (symbol_parts[1] == quote_currency if quote_currency else len(symbol_parts[1]) > 0)) + (market_symbol.get('base') == base_currency + if base_currency else len(symbol_parts[0]) > 0) and + (market_symbol.get('quote') == quote_currency + if quote_currency else len(symbol_parts[1]) > 0)) def market_is_active(market: Dict) -> bool: From 7ea59b6d8e5214ad27d2beb8a0970507acc755a2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 09:43:50 +0200 Subject: [PATCH 2461/3421] Update comment (to trigger CI) --- tests/strategy/test_interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 55dd07e9e..e5539099b 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -153,7 +153,7 @@ def test_assert_df(default_conf, mocker, ohlcv_history, caplog): _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), ohlcv_history.loc[1, 'close'], ohlcv_history.loc[0, 'date']) assert log_has_re(r"Dataframe returned from strategy.*last date\.", caplog) - # reset to avoid problems in other tests + # reset to avoid problems in other tests due to test leakage _STRATEGY.disable_dataframe_checks = False From 6b5947392e56d597a7c97a5c0da9bc715c5c2a63 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 09:47:09 +0200 Subject: [PATCH 2462/3421] Version bump pandas to 1.0.4 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 18cab206b..f5d09db4d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ -r requirements-common.txt numpy==1.18.4 -pandas==1.0.3 +pandas==1.0.4 From f187753f8f73cef2a5233897426958b49129cbbc Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 10:45:50 +0200 Subject: [PATCH 2463/3421] Add ccxt_sync_config to simplify ccxt configuration --- docs/configuration.md | 3 ++- freqtrade/exchange/exchange.py | 10 ++++++---- tests/exchange/test_exchange.py | 12 ++++++++---- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 93e53de6f..5e3be6485 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -83,7 +83,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String | `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#pairlists-and-pairlist-handlers)).
            **Datatype:** List | `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#pairlists-and-pairlist-handlers)).
            **Datatype:** List -| `exchange.ccxt_config` | Additional CCXT parameters passed to the regular ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
            **Datatype:** Dict +| `exchange.ccxt_config` | Additional CCXT parameters passed to both ccxt instances. This is usually the correct place for ccxt configurations. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
            **Datatype:** Dict +| `exchange.ccxt_sync_config` | Additional CCXT parameters passed to the regular (sync) ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
            **Datatype:** Dict | `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
            **Datatype:** Dict | `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded.
            *Defaults to `60` minutes.*
            **Datatype:** Positive Integer | `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation. diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index af745e8d0..7ef0d7750 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -98,12 +98,14 @@ class Exchange: # Initialize ccxt objects ccxt_config = self._ccxt_config.copy() - ccxt_config = deep_merge_dicts(exchange_config.get('ccxt_config', {}), - ccxt_config) - self._api = self._init_ccxt( - exchange_config, ccxt_kwargs=ccxt_config) + ccxt_config = deep_merge_dicts(exchange_config.get('ccxt_config', {}), ccxt_config) + ccxt_config = deep_merge_dicts(exchange_config.get('ccxt_sync_config', {}), ccxt_config) + + self._api = self._init_ccxt(exchange_config, ccxt_kwargs=ccxt_config) ccxt_async_config = self._ccxt_config.copy() + ccxt_async_config = deep_merge_dicts(exchange_config.get('ccxt_config', {}), + ccxt_async_config) ccxt_async_config = deep_merge_dicts(exchange_config.get('ccxt_async_config', {}), ccxt_async_config) self._api_async = self._init_ccxt( diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index e40f691a8..25aecba5c 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -88,15 +88,19 @@ def test_init_ccxt_kwargs(default_conf, mocker, caplog): caplog.clear() conf = copy.deepcopy(default_conf) conf['exchange']['ccxt_config'] = {'TestKWARG': 11} + conf['exchange']['ccxt_sync_config'] = {'TestKWARG44': 11} conf['exchange']['ccxt_async_config'] = {'asyncio_loop': True} - + asynclogmsg = "Applying additional ccxt config: {'TestKWARG': 11, 'asyncio_loop': True}" ex = Exchange(conf) - assert not log_has("Applying additional ccxt config: {'aiohttp_trust_env': True}", caplog) assert not ex._api_async.aiohttp_trust_env assert hasattr(ex._api, 'TestKWARG') assert ex._api.TestKWARG == 11 - assert not hasattr(ex._api_async, 'TestKWARG') - assert log_has("Applying additional ccxt config: {'TestKWARG': 11}", caplog) + # ccxt_config is assigned to both sync and async + assert not hasattr(ex._api_async, 'TestKWARG44') + + assert hasattr(ex._api_async, 'TestKWARG') + assert log_has("Applying additional ccxt config: {'TestKWARG': 11, 'TestKWARG44': 11}", caplog) + assert log_has(asynclogmsg, caplog) def test_destroy(default_conf, mocker, caplog): From 76ce2c66530165881c8f7cd651c01c6b653d2bbe Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 10:46:04 +0200 Subject: [PATCH 2464/3421] Document FTX subaccount configuration --- docs/exchanges.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/exchanges.md b/docs/exchanges.md index 06db26f89..81f017023 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -62,6 +62,25 @@ res = [ f"{x['MarketCurrency']}/{x['BaseCurrency']}" for x in ct.publicGetMarket print(res) ``` +## FTX + +### Using subaccounts + +To use subaccounts with FTX, you need to edit the configuration and add the following: + +``` json +"exchange": { + "ccxt_config": { + "headers": { + "FTX-SUBACCOUNT": "name" + } + }, +} +``` + +!!! Note + Older versions of freqtrade may require this key to be added to `"ccxt_async_config"` as well. + ## All exchanges Should you experience constant errors with Nonce (like `InvalidNonce`), it is best to regenerate the API keys. Resetting Nonce is difficult and it's usually easier to regenerate the API keys. From 57e951dbce90ff486c3267e62865fd0fa0399d06 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 10:59:26 +0200 Subject: [PATCH 2465/3421] Add orderbook sell rate to sell_rate_cache --- freqtrade/freqtradebot.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d4afa1d60..4f63cc01d 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -719,6 +719,9 @@ class FreqtradeBot: raise PricingError from e logger.debug(f" order book {config_ask_strategy['price_side']} top {i}: " f"{sell_rate:0.8f}") + # Assign sell-rate to cache - otherwise sell-rate is never updated in the cache, + # resulting in outdated RPC messages + self._sell_rate_cache[trade.pair] = sell_rate if self._check_and_execute_sell(trade, sell_rate, buy, sell): return True From 28b35178e99182d5381e1941ebc5520f524301a4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 11:24:29 +0200 Subject: [PATCH 2466/3421] Update doc wording Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 0bd913e88..8853b6e05 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -107,7 +107,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite:///tradesv3.dryrun.sqlite` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances.
            **Datatype:** String, SQLAlchemy connect string | `initial_state` | Defines the initial application state. More information below.
            *Defaults to `stopped`.*
            **Datatype:** Enum, either `stopped` or `running` | `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below.
            **Datatype:** Boolean -| `disable_dataframe_checks` | Disable checking the dataframe for correctness. Only use when intentionally changing the dataframe. [Strategy Override](#parameters-in-the-strategy).[Strategy Override](#parameters-in-the-strategy).
            *Defaults to `False`*.
            **Datatype:** Boolean +| `disable_dataframe_checks` | Disable checking the OHLCV dataframe returned from the strategy methods for correctness. Only use when intentionally changing the dataframe and understand what you are doing. [Strategy Override](#parameters-in-the-strategy).[Strategy Override](#parameters-in-the-strategy).
            *Defaults to `False`*.
            **Datatype:** Boolean | `strategy` | **Required** Defines Strategy class to use. Recommended to be set via `--strategy NAME`.
            **Datatype:** ClassName | `strategy_path` | Adds an additional strategy lookup path (must be a directory).
            **Datatype:** String | `internals.process_throttle_secs` | Set the process throttle. Value in second.
            *Defaults to `5` seconds.*
            **Datatype:** Positive Integer From 97905f86be0686240d56ae9d62c4d130ba32c9a0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 11:34:39 +0200 Subject: [PATCH 2467/3421] Add missing fields to to_json output of trade --- freqtrade/persistence.py | 7 +++++++ tests/rpc/test_rpc.py | 19 +++++++++++++++---- tests/rpc/test_rpc_apiserver.py | 15 +++++++++++++-- tests/test_persistence.py | 16 ++++++++++++++-- 4 files changed, 49 insertions(+), 8 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index da7137cba..a0b9133c9 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -271,10 +271,16 @@ class Trade(_DECL_BASE): 'amount': round(self.amount, 8), 'stake_amount': round(self.stake_amount, 8), 'close_profit': self.close_profit, + 'close_profit_abs': self.close_profit_abs, 'sell_reason': self.sell_reason, 'sell_order_status': self.sell_order_status, 'stop_loss': self.stop_loss, 'stop_loss_pct': (self.stop_loss_pct * 100) if self.stop_loss_pct else None, + 'stoploss_order_id': self.stoploss_order_id, + 'stoploss_last_update': (self.stoploss_last_update.strftime("%Y-%m-%d %H:%M:%S") + if self.stoploss_last_update else None), + 'stoploss_last_update_timestamp': (int(self.stoploss_last_update.timestamp() * 1000) + if self.stoploss_last_update else None), 'initial_stop_loss': self.initial_stop_loss, 'initial_stop_loss_pct': (self.initial_stop_loss_pct * 100 if self.initial_stop_loss_pct else None), @@ -283,6 +289,7 @@ class Trade(_DECL_BASE): 'strategy': self.strategy, 'ticker_interval': self.ticker_interval, 'open_order_id': self.open_order_id, + 'exchange': self.exchange, } def adjust_min_max_rates(self, current_price: float) -> None: diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index e94097545..a68ca191a 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -77,13 +77,19 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'stake_amount': 0.001, 'close_profit': None, 'close_profit_pct': None, + 'close_profit_abs': None, 'current_profit': -0.00408133, 'current_profit_pct': -0.41, 'stop_loss': 0.0, + 'stop_loss_pct': None, + 'stoploss_order_id': None, + 'stoploss_last_update': None, + 'stoploss_last_update_timestamp': None, 'initial_stop_loss': 0.0, 'initial_stop_loss_pct': None, - 'stop_loss_pct': None, - 'open_order': '(limit buy rem=0.00000000)' + 'open_order': '(limit buy rem=0.00000000)', + 'exchange': 'bittrex', + } == results[0] mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', @@ -125,13 +131,18 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'stake_amount': 0.001, 'close_profit': None, 'close_profit_pct': None, + 'close_profit_abs': None, 'current_profit': ANY, 'current_profit_pct': ANY, 'stop_loss': 0.0, + 'stop_loss_pct': None, + 'stoploss_order_id': None, + 'stoploss_last_update': None, + 'stoploss_last_update_timestamp': None, 'initial_stop_loss': 0.0, 'initial_stop_loss_pct': None, - 'stop_loss_pct': None, - 'open_order': '(limit buy rem=0.00000000)' + 'open_order': '(limit buy rem=0.00000000)', + 'exchange': 'bittrex', } == results[0] diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index cc63bf6e8..c284ccb7b 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -502,6 +502,7 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'close_timestamp': None, 'close_profit': None, 'close_profit_pct': None, + 'close_profit_abs': None, 'close_rate': None, 'current_profit': -0.00408133, 'current_profit_pct': -0.41, @@ -517,6 +518,9 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'stake_amount': 0.001, 'stop_loss': 0.0, 'stop_loss_pct': None, + 'stoploss_order_id': None, + 'stoploss_last_update': None, + 'stoploss_last_update_timestamp': None, 'trade_id': 1, 'close_rate_requested': None, 'current_rate': 1.099e-05, @@ -536,7 +540,9 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'sell_reason': None, 'sell_order_status': None, 'strategy': 'DefaultStrategy', - 'ticker_interval': 5}] + 'ticker_interval': 5, + 'exchange': 'bittrex', + }] def test_api_version(botclient): @@ -627,8 +633,12 @@ def test_api_forcebuy(botclient, mocker, fee): 'stake_amount': 1, 'stop_loss': None, 'stop_loss_pct': None, + 'stoploss_order_id': None, + 'stoploss_last_update': None, + 'stoploss_last_update_timestamp': None, 'trade_id': None, 'close_profit': None, + 'close_profit_abs': None, 'close_rate_requested': None, 'fee_close': 0.0025, 'fee_close_cost': None, @@ -645,7 +655,8 @@ def test_api_forcebuy(botclient, mocker, fee): 'sell_reason': None, 'sell_order_status': None, 'strategy': None, - 'ticker_interval': None + 'ticker_interval': None, + 'exchange': 'bittrex', } diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 60bf073f8..3b1041fd8 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -758,16 +758,22 @@ def test_to_json(default_conf, fee): 'amount': 123.0, 'stake_amount': 0.001, 'close_profit': None, + 'close_profit_abs': None, 'sell_reason': None, 'sell_order_status': None, 'stop_loss': None, 'stop_loss_pct': None, + 'stoploss_order_id': None, + 'stoploss_last_update': None, + 'stoploss_last_update_timestamp': None, 'initial_stop_loss': None, 'initial_stop_loss_pct': None, 'min_rate': None, 'max_rate': None, 'strategy': None, - 'ticker_interval': None} + 'ticker_interval': None, + 'exchange': 'bittrex', + } # Simulate dry_run entries trade = Trade( @@ -799,9 +805,13 @@ def test_to_json(default_conf, fee): 'stake_amount': 0.001, 'stop_loss': None, 'stop_loss_pct': None, + 'stoploss_order_id': None, + 'stoploss_last_update': None, + 'stoploss_last_update_timestamp': None, 'initial_stop_loss': None, 'initial_stop_loss_pct': None, 'close_profit': None, + 'close_profit_abs': None, 'close_rate_requested': None, 'fee_close': 0.0025, 'fee_close_cost': None, @@ -818,7 +828,9 @@ def test_to_json(default_conf, fee): 'sell_reason': None, 'sell_order_status': None, 'strategy': None, - 'ticker_interval': None} + 'ticker_interval': None, + 'exchange': 'bittrex', + } def test_stoploss_reinitialization(default_conf, fee): From a9c57e51473d2cd6e9a29a84bdcadf23beba90fb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 11:46:48 +0200 Subject: [PATCH 2468/3421] Add disable_dataframe_checks to strategy templates --- freqtrade/templates/base_strategy.py.j2 | 4 ++++ freqtrade/templates/sample_strategy.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index c37164568..3ff490d6c 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -57,6 +57,10 @@ class {{ strategy }}(IStrategy): # Run "populate_indicators()" only for new candle. process_only_new_candles = False + # Disable checking the dataframe (converts the error into a warning message) + # Only use if you understand the implications! + disable_dataframe_checks: bool = False + # These values can be overridden in the "ask_strategy" section in the config. use_sell_signal = True sell_profit_only = False diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index f78489173..a70643aee 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -58,6 +58,10 @@ class SampleStrategy(IStrategy): # Run "populate_indicators()" only for new candle. process_only_new_candles = False + # Disable checking the dataframe (converts the error into a warning message) + # Only use if you understand the implications! + disable_dataframe_checks: bool = False + # These values can be overridden in the "ask_strategy" section in the config. use_sell_signal = True sell_profit_only = False From 376c536dd1d1081d5d88092ad63bbbe99e73612f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 16:23:33 +0200 Subject: [PATCH 2469/3421] Revert "Add disable_dataframe_checks to strategy templates" This reverts commit a9c57e51473d2cd6e9a29a84bdcadf23beba90fb. --- freqtrade/templates/base_strategy.py.j2 | 4 ---- freqtrade/templates/sample_strategy.py | 4 ---- 2 files changed, 8 deletions(-) diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index 3ff490d6c..c37164568 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -57,10 +57,6 @@ class {{ strategy }}(IStrategy): # Run "populate_indicators()" only for new candle. process_only_new_candles = False - # Disable checking the dataframe (converts the error into a warning message) - # Only use if you understand the implications! - disable_dataframe_checks: bool = False - # These values can be overridden in the "ask_strategy" section in the config. use_sell_signal = True sell_profit_only = False diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index a70643aee..f78489173 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -58,10 +58,6 @@ class SampleStrategy(IStrategy): # Run "populate_indicators()" only for new candle. process_only_new_candles = False - # Disable checking the dataframe (converts the error into a warning message) - # Only use if you understand the implications! - disable_dataframe_checks: bool = False - # These values can be overridden in the "ask_strategy" section in the config. use_sell_signal = True sell_profit_only = False From fe40e8305d94afd6613b4ac4b8c9b8af5ce4203e Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 30 May 2020 18:58:11 +0300 Subject: [PATCH 2470/3421] fix #3401 --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index f017bef96..c03be55d1 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -13,7 +13,7 @@ Click each one for install guide: * [Python >= 3.6.x](http://docs.python-guide.org/en/latest/starting/installation/) * [pip](https://pip.pypa.io/en/stable/installing/) * [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) -* [virtualenv](https://virtualenv.pypa.io/en/stable/installation/) (Recommended) +* [virtualenv](https://virtualenv.pypa.io/en/stable/installation.html) (Recommended) * [TA-Lib](https://mrjbq7.github.io/ta-lib/install.html) (install instructions below) We also recommend a [Telegram bot](telegram-usage.md#setup-your-telegram-bot), which is optional but recommended. From 48915d7945a094f7edcb4015b8669a2ddad005ed Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 30 May 2020 19:35:44 +0300 Subject: [PATCH 2471/3421] minor: Fix docs --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 8853b6e05..7686f3248 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -107,7 +107,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite:///tradesv3.dryrun.sqlite` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances.
            **Datatype:** String, SQLAlchemy connect string | `initial_state` | Defines the initial application state. More information below.
            *Defaults to `stopped`.*
            **Datatype:** Enum, either `stopped` or `running` | `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below.
            **Datatype:** Boolean -| `disable_dataframe_checks` | Disable checking the OHLCV dataframe returned from the strategy methods for correctness. Only use when intentionally changing the dataframe and understand what you are doing. [Strategy Override](#parameters-in-the-strategy).[Strategy Override](#parameters-in-the-strategy).
            *Defaults to `False`*.
            **Datatype:** Boolean +| `disable_dataframe_checks` | Disable checking the OHLCV dataframe returned from the strategy methods for correctness. Only use when intentionally changing the dataframe and understand what you are doing. [Strategy Override](#parameters-in-the-strategy).
            *Defaults to `False`*.
            **Datatype:** Boolean | `strategy` | **Required** Defines Strategy class to use. Recommended to be set via `--strategy NAME`.
            **Datatype:** ClassName | `strategy_path` | Adds an additional strategy lookup path (must be a directory).
            **Datatype:** String | `internals.process_throttle_secs` | Set the process throttle. Value in second.
            *Defaults to `5` seconds.*
            **Datatype:** Positive Integer From 908449640ad020dd1becae9feb39ac8f7cbea829 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 19:17:17 +0200 Subject: [PATCH 2472/3421] Disabledataframecheck is not in internals and does not belong there --- freqtrade/resolvers/strategy_resolver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 51cb8fc05..abd6a4195 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -70,7 +70,7 @@ class StrategyResolver(IResolver): ("use_sell_signal", True, 'ask_strategy'), ("sell_profit_only", False, 'ask_strategy'), ("ignore_roi_if_buy_signal", False, 'ask_strategy'), - ("disable_dataframe_checks", False, 'internals') + ("disable_dataframe_checks", False, None), ] for attribute, default, subkey in attributes: if subkey: From a0d6a72bc8dfdbb2373b0694611dab77ce1a2489 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 19:26:47 +0200 Subject: [PATCH 2473/3421] Update docs/configuration.md Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 5e3be6485..1f2dcb8a9 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -83,7 +83,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String | `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Not used by VolumePairList (see [below](#pairlists-and-pairlist-handlers)).
            **Datatype:** List | `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting (see [below](#pairlists-and-pairlist-handlers)).
            **Datatype:** List -| `exchange.ccxt_config` | Additional CCXT parameters passed to both ccxt instances. This is usually the correct place for ccxt configurations. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
            **Datatype:** Dict +| `exchange.ccxt_config` | Additional CCXT parameters passed to both ccxt instances (sync and async). This is usually the correct place for ccxt configurations. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
            **Datatype:** Dict | `exchange.ccxt_sync_config` | Additional CCXT parameters passed to the regular (sync) ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
            **Datatype:** Dict | `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
            **Datatype:** Dict | `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded.
            *Defaults to `60` minutes.*
            **Datatype:** Positive Integer From 91f84f1a4304266d7f697a0418683bf3a202d796 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 19:28:30 +0200 Subject: [PATCH 2474/3421] Fix typo in close trade message --- freqtrade/rpc/telegram.py | 2 +- tests/rpc/test_rpc_telegram.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 4bf19192d..dcb667d2d 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -328,7 +328,7 @@ class Telegram(RPC): best_rate = stats['best_rate'] # Message to display if stats['closed_trade_count'] > 0: - markdown_msg = ("*ROI:* Close trades\n" + markdown_msg = ("*ROI:* Closed trades\n" f"∙ `{profit_closed_coin:.8f} {stake_cur} " f"({profit_closed_percent:.2f}%)`\n" f"∙ `{profit_closed_fiat:.3f} {fiat_disp_cur}`\n") diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 0b990281f..29820fba3 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -446,7 +446,7 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, telegram._profit(update=update, context=MagicMock()) assert msg_mock.call_count == 1 - assert '*ROI:* Close trades' in msg_mock.call_args_list[-1][0][0] + assert '*ROI:* Closed trades' in msg_mock.call_args_list[-1][0][0] assert '∙ `0.00006217 BTC (6.20%)`' in msg_mock.call_args_list[-1][0][0] assert '∙ `0.933 USD`' in msg_mock.call_args_list[-1][0][0] assert '*ROI:* All trades' in msg_mock.call_args_list[-1][0][0] From cc90e7b413f2b300fe692b0b75d415c6e1c3a3d9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 30 May 2020 19:42:09 +0200 Subject: [PATCH 2475/3421] Show "No trades yet." when no trade happened yet --- freqtrade/rpc/telegram.py | 35 ++++++++++++++++++---------------- tests/rpc/test_rpc_telegram.py | 2 +- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index dcb667d2d..7eef18dfc 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -326,24 +326,27 @@ class Telegram(RPC): avg_duration = stats['avg_duration'] best_pair = stats['best_pair'] best_rate = stats['best_rate'] - # Message to display - if stats['closed_trade_count'] > 0: - markdown_msg = ("*ROI:* Closed trades\n" - f"∙ `{profit_closed_coin:.8f} {stake_cur} " - f"({profit_closed_percent:.2f}%)`\n" - f"∙ `{profit_closed_fiat:.3f} {fiat_disp_cur}`\n") + if stats['trade_count'] == 0: + markdown_msg = 'No trades yet.' else: - markdown_msg = "`No closed trade` \n" + # Message to display + if stats['closed_trade_count'] > 0: + markdown_msg = ("*ROI:* Closed trades\n" + f"∙ `{profit_closed_coin:.8f} {stake_cur} " + f"({profit_closed_percent:.2f}%)`\n" + f"∙ `{profit_closed_fiat:.3f} {fiat_disp_cur}`\n") + else: + markdown_msg = "`No closed trade` \n" - markdown_msg += (f"*ROI:* All trades\n" - f"∙ `{profit_all_coin:.8f} {stake_cur} ({profit_all_percent:.2f}%)`\n" - f"∙ `{profit_all_fiat:.3f} {fiat_disp_cur}`\n" - f"*Total Trade Count:* `{trade_count}`\n" - f"*First Trade opened:* `{first_trade_date}`\n" - f"*Latest Trade opened:* `{latest_trade_date}`") - if stats['closed_trade_count'] > 0: - markdown_msg += (f"\n*Avg. Duration:* `{avg_duration}`\n" - f"*Best Performing:* `{best_pair}: {best_rate:.2f}%`") + markdown_msg += (f"*ROI:* All trades\n" + f"∙ `{profit_all_coin:.8f} {stake_cur} ({profit_all_percent:.2f}%)`\n" + f"∙ `{profit_all_fiat:.3f} {fiat_disp_cur}`\n" + f"*Total Trade Count:* `{trade_count}`\n" + f"*First Trade opened:* `{first_trade_date}`\n" + f"*Latest Trade opened:* `{latest_trade_date}`") + if stats['closed_trade_count'] > 0: + markdown_msg += (f"\n*Avg. Duration:* `{avg_duration}`\n" + f"*Best Performing:* `{best_pair}: {best_rate:.2f}%`") self._send_msg(markdown_msg) @authorized_only diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 29820fba3..500acaa30 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -420,7 +420,7 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, telegram._profit(update=update, context=MagicMock()) assert msg_mock.call_count == 1 - assert 'No closed trade' in msg_mock.call_args_list[0][0][0] + assert 'No trades yet.' in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() # Create some test data From 7ad1c7e817ca115bf4bd8a79c000685ebc948730 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 31 May 2020 09:51:45 +0200 Subject: [PATCH 2476/3421] Allow lower verbosity level for api server Not logging all calls makes sense when running the UI otherwise this is VERY verbose, clogging up the log. --- config_full.json.example | 1 + docs/configuration.md | 1 + docs/rest-api.md | 1 + freqtrade/constants.py | 1 + freqtrade/loggers.py | 8 ++++++-- freqtrade/rpc/api_server.py | 3 --- 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index 481742817..57ebb22e6 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -121,6 +121,7 @@ "enabled": false, "listen_ip_address": "127.0.0.1", "listen_port": 8080, + "verbosity": "info", "jwt_secret_key": "somethingrandom", "username": "freqtrader", "password": "SuperSecurePassword" diff --git a/docs/configuration.md b/docs/configuration.md index a1cb45e0f..3a8262fab 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -103,6 +103,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `api_server.enabled` | Enable usage of API Server. See the [API Server documentation](rest-api.md) for more details.
            **Datatype:** Boolean | `api_server.listen_ip_address` | Bind IP address. See the [API Server documentation](rest-api.md) for more details.
            **Datatype:** IPv4 | `api_server.listen_port` | Bind Port. See the [API Server documentation](rest-api.md) for more details.
            **Datatype:** Integer between 1024 and 65535 +| `api_server.verbosity` | Loggging verbosity. `info` will print all RPC Calls, while "error" will only display errors.
            **Datatype:** Enum, either `info` or `error`. Defaults to `info`. | `api_server.username` | Username for API server. See the [API Server documentation](rest-api.md) for more details.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String | `api_server.password` | Password for API server. See the [API Server documentation](rest-api.md) for more details.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String | `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite:///tradesv3.dryrun.sqlite` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances.
            **Datatype:** String, SQLAlchemy connect string diff --git a/docs/rest-api.md b/docs/rest-api.md index 7f1a95b12..ed5f355b4 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -11,6 +11,7 @@ Sample configuration: "enabled": true, "listen_ip_address": "127.0.0.1", "listen_port": 8080, + "verbosity": "info", "jwt_secret_key": "somethingrandom", "username": "Freqtrader", "password": "SuperSecret1!" diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 1984d4866..a91e3b19f 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -221,6 +221,7 @@ CONF_SCHEMA = { }, 'username': {'type': 'string'}, 'password': {'type': 'string'}, + 'verbosity': {'type': 'string', 'enum': ['error', 'info']}, }, 'required': ['enabled', 'listen_ip_address', 'listen_port', 'username', 'password'] }, diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index 153ce8c80..aa08ee8a7 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -11,7 +11,7 @@ from freqtrade.exceptions import OperationalException logger = logging.getLogger(__name__) -def _set_loggers(verbosity: int = 0) -> None: +def _set_loggers(verbosity: int = 0, api_verbosity: str = 'info') -> None: """ Set the logging level for third party libraries :return: None @@ -28,6 +28,10 @@ def _set_loggers(verbosity: int = 0) -> None: ) logging.getLogger('telegram').setLevel(logging.INFO) + logging.getLogger('werkzeug').setLevel( + logging.ERROR if api_verbosity == 'error' else logging.INFO + ) + def setup_logging(config: Dict[str, Any]) -> None: """ @@ -77,5 +81,5 @@ def setup_logging(config: Dict[str, Any]) -> None: format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=log_handlers ) - _set_loggers(verbosity) + _set_loggers(verbosity, config.get('api_server', {}).get('verbosity', 'info')) logger.info('Verbosity set to %s', verbosity) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 23b6a85b0..9d0899ccd 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -360,7 +360,6 @@ class ApiServer(RPC): Returns a cumulative profit statistics :return: stats """ - logger.info("LocalRPC - Profit Command Called") stats = self._rpc_trade_statistics(self._config['stake_currency'], self._config.get('fiat_display_currency') @@ -377,8 +376,6 @@ class ApiServer(RPC): Returns a cumulative performance statistics :return: stats """ - logger.info("LocalRPC - performance Command Called") - stats = self._rpc_performance() return self.rest_dump(stats) From dc7f0f11877d69f8a4d8fc23c2a7cff3d739755d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 31 May 2020 09:57:31 +0200 Subject: [PATCH 2477/3421] Add api-server to default config samples --- config.json.example | 9 +++++++++ config_binance.json.example | 9 +++++++++ config_kraken.json.example | 9 +++++++++ freqtrade/templates/base_config.json.j2 | 9 +++++++++ tests/test_configuration.py | 5 ++++- 5 files changed, 40 insertions(+), 1 deletion(-) diff --git a/config.json.example b/config.json.example index d37a6b336..ae87164d6 100644 --- a/config.json.example +++ b/config.json.example @@ -76,6 +76,15 @@ "token": "your_telegram_token", "chat_id": "your_telegram_chat_id" }, + "api_server": { + "enabled": false, + "listen_ip_address": "127.0.0.1", + "listen_port": 8080, + "verbosity": "info", + "jwt_secret_key": "somethingrandom", + "username": "", + "password": "" + }, "initial_state": "running", "forcebuy_enable": false, "internals": { diff --git a/config_binance.json.example b/config_binance.json.example index 5d7b6b656..74207d565 100644 --- a/config_binance.json.example +++ b/config_binance.json.example @@ -81,6 +81,15 @@ "token": "your_telegram_token", "chat_id": "your_telegram_chat_id" }, + "api_server": { + "enabled": false, + "listen_ip_address": "127.0.0.1", + "listen_port": 8080, + "verbosity": "info", + "jwt_secret_key": "somethingrandom", + "username": "", + "password": "" + }, "initial_state": "running", "forcebuy_enable": false, "internals": { diff --git a/config_kraken.json.example b/config_kraken.json.example index 54fbf4a00..f1e522da5 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -87,6 +87,15 @@ "token": "your_telegram_token", "chat_id": "your_telegram_chat_id" }, + "api_server": { + "enabled": false, + "listen_ip_address": "127.0.0.1", + "listen_port": 8080, + "verbosity": "info", + "jwt_secret_key": "somethingrandom", + "username": "", + "password": "" + }, "initial_state": "running", "forcebuy_enable": false, "internals": { diff --git a/freqtrade/templates/base_config.json.j2 b/freqtrade/templates/base_config.json.j2 index 6d3174347..5339595e8 100644 --- a/freqtrade/templates/base_config.json.j2 +++ b/freqtrade/templates/base_config.json.j2 @@ -53,6 +53,15 @@ "token": "{{ telegram_token }}", "chat_id": "{{ telegram_chat_id }}" }, + "api_server": { + "enabled": false, + "listen_ip_address": "127.0.0.1", + "listen_port": 8080, + "verbosity": "info", + "jwt_secret_key": "somethingrandom", + "username": "", + "password": "" + }, "initial_state": "running", "forcebuy_enable": false, "internals": { diff --git a/tests/test_configuration.py b/tests/test_configuration.py index edcbe4516..18fa607f2 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -634,6 +634,7 @@ def test_set_loggers() -> None: previous_value1 = logging.getLogger('requests').level previous_value2 = logging.getLogger('ccxt.base.exchange').level previous_value3 = logging.getLogger('telegram').level + previous_value3 = logging.getLogger('werkzeug').level _set_loggers() @@ -654,12 +655,14 @@ def test_set_loggers() -> None: assert logging.getLogger('requests').level is logging.DEBUG assert logging.getLogger('ccxt.base.exchange').level is logging.INFO assert logging.getLogger('telegram').level is logging.INFO + assert logging.getLogger('werkzeug').level is logging.INFO - _set_loggers(verbosity=3) + _set_loggers(verbosity=3, api_verbosity='error') assert logging.getLogger('requests').level is logging.DEBUG assert logging.getLogger('ccxt.base.exchange').level is logging.DEBUG assert logging.getLogger('telegram').level is logging.INFO + assert logging.getLogger('werkzeug').level is logging.ERROR @pytest.mark.skipif(sys.platform == "win32", reason="does not run on windows") From 4087161d2b69b5b2d73751402fac9d1838f86de3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 31 May 2020 10:16:56 +0200 Subject: [PATCH 2478/3421] fix broken test --- tests/test_configuration.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 18fa607f2..bd43f84ca 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -634,7 +634,6 @@ def test_set_loggers() -> None: previous_value1 = logging.getLogger('requests').level previous_value2 = logging.getLogger('ccxt.base.exchange').level previous_value3 = logging.getLogger('telegram').level - previous_value3 = logging.getLogger('werkzeug').level _set_loggers() From 123a556ec89e5e0eace9ca0f279d612b382e24f0 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 31 May 2020 13:05:58 +0300 Subject: [PATCH 2479/3421] Better exchange logging --- freqtrade/exchange/exchange.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index af745e8d0..6275b0eda 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -887,14 +887,20 @@ class Exchange: Async wrapper handling downloading trades using either time or id based methods. """ + logger.debug(f"_async_get_trade_history(), pair: {pair}, " + f"since: {since}, until: {until}, from_id: {from_id}") + + if not until: + exchange_msec = ccxt.Exchange.milliseconds() + logger.debug(f"Exchange milliseconds: {exchange_msec}") + until = exchange_msec + if self._trades_pagination == 'time': return await self._async_get_trade_history_time( - pair=pair, since=since, - until=until or ccxt.Exchange.milliseconds()) + pair=pair, since=since, until=until) elif self._trades_pagination == 'id': return await self._async_get_trade_history_id( - pair=pair, since=since, - until=until or ccxt.Exchange.milliseconds(), from_id=from_id + pair=pair, since=since, until=until, from_id=from_id ) else: raise OperationalException(f"Exchange {self.name} does use neither time, " From f202e09b10e3568d89cbf9ac7e765acfcbe78efa Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 08:56:12 +0200 Subject: [PATCH 2480/3421] Extract conversion to trades list to it's own function --- freqtrade/optimize/optimize_reports.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 1fc4d721e..77101a1f6 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -18,10 +18,7 @@ def store_backtest_result(recordfilename: Path, all_results: Dict[str, DataFrame :param all_results: Dict of Dataframes, one results dataframe per strategy """ for strategy, results in all_results.items(): - records = [(t.pair, t.profit_percent, t.open_time.timestamp(), - t.close_time.timestamp(), t.open_index - 1, t.trade_duration, - t.open_rate, t.close_rate, t.open_at_end, t.sell_reason.value) - for index, t in results.iterrows()] + records = backtest_result_to_list(results) if records: filename = recordfilename @@ -34,6 +31,18 @@ def store_backtest_result(recordfilename: Path, all_results: Dict[str, DataFrame file_dump_json(filename, records) +def backtest_result_to_list(results: DataFrame) -> List[List]: + """ + Converts a list of Backtest-results to list + :param results: Dataframe containing results for one strategy + :return: List of Lists containing the trades + """ + return [[t.pair, t.profit_percent, t.open_time.timestamp(), + t.close_time.timestamp(), t.open_index - 1, t.trade_duration, + t.open_rate, t.close_rate, t.open_at_end, t.sell_reason.value] + for index, t in results.iterrows()] + + def _get_line_floatfmt() -> List[str]: """ Generate floatformat (goes in line with _generate_result_line()) From ceaf32d304294104a06a2db8e15b609ec772a71c Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 09:23:24 +0200 Subject: [PATCH 2481/3421] Extract backtesting report generation from show_backtest_Results --- freqtrade/optimize/optimize_reports.py | 42 +++++++++++++++++++------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 77101a1f6..5afdc6f77 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -255,12 +255,13 @@ def generate_edge_table(results: dict) -> str: floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") # type: ignore -def show_backtest_results(config: Dict, btdata: Dict[str, DataFrame], - all_results: Dict[str, DataFrame]): +def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], + all_results: Dict[str, DataFrame]): stake_currency = config['stake_currency'] max_open_trades = config['max_open_trades'] - + result = {'strategy': {}} for strategy, results in all_results.items(): + pair_results = generate_pair_metrics(btdata, stake_currency=stake_currency, max_open_trades=max_open_trades, results=results, skip_nan=False) @@ -270,21 +271,43 @@ def show_backtest_results(config: Dict, btdata: Dict[str, DataFrame], max_open_trades=max_open_trades, results=results.loc[results['open_at_end']], skip_nan=True) + strat_stats = { + 'trades': backtest_result_to_list(results), + 'results_per_pair': pair_results, + 'sell_reason_summary': sell_reason_stats, + 'left_open_trades': left_open_results, + } + result['strategy'][strategy] = strat_stats + + strategy_results = generate_strategy_metrics(stake_currency=stake_currency, + max_open_trades=max_open_trades, + all_results=all_results) + + result['strategy_comparison'] = strategy_results + + return result + + +def show_backtest_results(config: Dict, backtest_stats: Dict): + stake_currency = config['stake_currency'] + + for strategy, results in backtest_stats['strategy'].items(): + # Print results print(f"Result for strategy {strategy}") - table = generate_text_table(pair_results, stake_currency=stake_currency) + table = generate_text_table(results['results_per_pair'], stake_currency=stake_currency) if isinstance(table, str): print(' BACKTESTING REPORT '.center(len(table.splitlines()[0]), '=')) print(table) - table = generate_text_table_sell_reason(sell_reason_stats=sell_reason_stats, + table = generate_text_table_sell_reason(sell_reason_stats=results['sell_reason_summary'], stake_currency=stake_currency, ) if isinstance(table, str): print(' SELL REASON STATS '.center(len(table.splitlines()[0]), '=')) print(table) - table = generate_text_table(left_open_results, stake_currency=stake_currency) + table = generate_text_table(results['left_open_trades'], stake_currency=stake_currency) if isinstance(table, str): print(' LEFT OPEN TRADES REPORT '.center(len(table.splitlines()[0]), '=')) print(table) @@ -292,13 +315,10 @@ def show_backtest_results(config: Dict, btdata: Dict[str, DataFrame], print('=' * len(table.splitlines()[0])) print() - if len(all_results) > 1: + if len(backtest_stats['strategy']) > 1: # Print Strategy summary table - strategy_results = generate_strategy_metrics(stake_currency=stake_currency, - max_open_trades=max_open_trades, - all_results=all_results) - table = generate_text_table_strategy(strategy_results, stake_currency) + table = generate_text_table_strategy(backtest_stats['strategy_comparison'], stake_currency) print(' STRATEGY SUMMARY '.center(len(table.splitlines()[0]), '=')) print(table) print('=' * len(table.splitlines()[0])) From 091693308ae1d16cb003aba2ff1fdea1d88b3be0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 09:24:27 +0200 Subject: [PATCH 2482/3421] Correctly call show_backtest_results --- freqtrade/optimize/backtesting.py | 6 ++++-- freqtrade/optimize/optimize_reports.py | 2 +- tests/optimize/test_backtesting.py | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 3bf211d99..b47b38ea4 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -18,7 +18,8 @@ from freqtrade.data.converter import trim_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds -from freqtrade.optimize.optimize_reports import (show_backtest_results, +from freqtrade.optimize.optimize_reports import (generate_backtest_stats, + show_backtest_results, store_backtest_result) from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.persistence import Trade @@ -411,4 +412,5 @@ class Backtesting: if self.config.get('export', False): store_backtest_result(self.config['exportfilename'], all_results) # Show backtest results - show_backtest_results(self.config, data, all_results) + stats = generate_backtest_stats(self.config, data, all_results) + show_backtest_results(self.config, stats) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 5afdc6f77..c148f0f44 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -259,7 +259,7 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], all_results: Dict[str, DataFrame]): stake_currency = config['stake_currency'] max_open_trades = config['max_open_trades'] - result = {'strategy': {}} + result: Dict[str, Any] = {'strategy': {}} for strategy, results in all_results.items(): pair_results = generate_pair_metrics(btdata, stake_currency=stake_currency, diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index ace82d28b..40c106975 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -333,6 +333,7 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: mocker.patch('freqtrade.data.history.get_timerange', get_timerange) patch_exchange(mocker) mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') + mocker.patch('freqtrade.optimize.backtesting.generate_backtest_stats') mocker.patch('freqtrade.optimize.backtesting.show_backtest_results') mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', PropertyMock(return_value=['UNITTEST/BTC'])) @@ -612,8 +613,9 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): patch_exchange(mocker) - mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', MagicMock()) - mocker.patch('freqtrade.optimize.backtesting.show_backtest_results', MagicMock()) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') + mocker.patch('freqtrade.optimize.backtesting.generate_backtest_stats') + mocker.patch('freqtrade.optimize.backtesting.show_backtest_results') mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', PropertyMock(return_value=['UNITTEST/BTC'])) patched_configuration_load_config_file(mocker, default_conf) From ffa93377b4e66f7182fcfcee305c8635299b106b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 09:34:03 +0200 Subject: [PATCH 2483/3421] Test colorama init again (after the fixes done to progressbar) --- freqtrade/optimize/hyperopt.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 3a28de785..bd80f7069 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -4,26 +4,26 @@ This module contains the hyperopt logic """ +import io import locale import logging import random import warnings -from math import ceil from collections import OrderedDict +from math import ceil from operator import itemgetter from pathlib import Path from pprint import pprint from typing import Any, Dict, List, Optional +import progressbar import rapidjson +import tabulate from colorama import Fore, Style +from colorama import init as colorama_init from joblib import (Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects) -from pandas import DataFrame, json_normalize, isna -import progressbar -import tabulate -from os import path -import io +from pandas import DataFrame, isna, json_normalize from freqtrade.data.converter import trim_dataframe from freqtrade.data.history import get_timerange @@ -32,7 +32,8 @@ from freqtrade.misc import plural, round_dict from freqtrade.optimize.backtesting import Backtesting # Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules from freqtrade.optimize.hyperopt_interface import IHyperOpt # noqa: F401 -from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss # noqa: F401 +from freqtrade.optimize.hyperopt_loss_interface import \ + IHyperOptLoss # noqa: F401 from freqtrade.resolvers.hyperopt_resolver import (HyperOptLossResolver, HyperOptResolver) @@ -374,7 +375,7 @@ class Hyperopt: return # Verification for overwrite - if path.isfile(csv_file): + if Path(csv_file).is_file(): logger.error(f"CSV file already exists: {csv_file}") return @@ -603,7 +604,7 @@ class Hyperopt: data, timerange = self.backtesting.load_bt_data() preprocessed = self.backtesting.strategy.ohlcvdata_to_dataframe(data) - + colorama_init(autoreset=True) # Trim startup period from analyzed dataframe for pair, df in preprocessed.items(): preprocessed[pair] = trim_dataframe(df, timerange) From d9afef8fe19d1fee53cd3c0421cdd3ffcdb27a91 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 09:37:10 +0200 Subject: [PATCH 2484/3421] Move colorama_init to where it was --- freqtrade/optimize/hyperopt.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index bd80f7069..566ba5de8 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -604,7 +604,7 @@ class Hyperopt: data, timerange = self.backtesting.load_bt_data() preprocessed = self.backtesting.strategy.ohlcvdata_to_dataframe(data) - colorama_init(autoreset=True) + # Trim startup period from analyzed dataframe for pair, df in preprocessed.items(): preprocessed[pair] = trim_dataframe(df, timerange) @@ -629,6 +629,10 @@ class Hyperopt: self.dimensions: List[Dimension] = self.hyperopt_space() self.opt = self.get_optimizer(self.dimensions, config_jobs) + + if self.print_colorized: + colorama_init(autoreset=True) + try: with Parallel(n_jobs=config_jobs) as parallel: jobs = parallel._effective_n_jobs() From f6edb32a33c5ddc6a48c7bd9e3abeb01871a6054 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 09:55:52 +0200 Subject: [PATCH 2485/3421] Run hyperopt with --print-all --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 239576c61..2c6141344 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -88,7 +88,7 @@ jobs: run: | cp config.json.example config.json freqtrade create-userdir --userdir user_data - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt + freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt --print-all - name: Flake8 run: | @@ -150,7 +150,7 @@ jobs: run: | cp config.json.example config.json freqtrade create-userdir --userdir user_data - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt + freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt --print-all - name: Flake8 run: | From adde1cfee2591820fb09db55b0957f57880be05b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 10:53:02 +0200 Subject: [PATCH 2486/3421] Add stoplosss_ratio and initial_stoploss_ratio --- freqtrade/persistence.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 111ccfe2a..2fe93f440 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -249,32 +249,40 @@ class Trade(_DECL_BASE): 'trade_id': self.id, 'pair': self.pair, 'is_open': self.is_open, + 'exchange': self.exchange, + 'amount': round(self.amount, 8), + 'stake_amount': round(self.stake_amount, 8), + 'strategy': self.strategy, + 'ticker_interval': self.ticker_interval, + 'fee_open': self.fee_open, 'fee_open_cost': self.fee_open_cost, 'fee_open_currency': self.fee_open_currency, 'fee_close': self.fee_close, 'fee_close_cost': self.fee_close_cost, 'fee_close_currency': self.fee_close_currency, + 'open_date_hum': arrow.get(self.open_date).humanize(), 'open_date': self.open_date.strftime("%Y-%m-%d %H:%M:%S"), 'open_timestamp': int(self.open_date.timestamp() * 1000), + 'open_rate': self.open_rate, + 'open_rate_requested': self.open_rate_requested, + 'open_trade_price': self.open_trade_price, + 'close_date_hum': (arrow.get(self.close_date).humanize() if self.close_date else None), 'close_date': (self.close_date.strftime("%Y-%m-%d %H:%M:%S") if self.close_date else None), 'close_timestamp': int(self.close_date.timestamp() * 1000) if self.close_date else None, - 'open_rate': self.open_rate, - 'open_rate_requested': self.open_rate_requested, - 'open_trade_price': self.open_trade_price, 'close_rate': self.close_rate, 'close_rate_requested': self.close_rate_requested, - 'amount': round(self.amount, 8), - 'stake_amount': round(self.stake_amount, 8), 'close_profit': self.close_profit, 'close_profit_abs': self.close_profit_abs, + 'sell_reason': self.sell_reason, 'sell_order_status': self.sell_order_status, 'stop_loss': self.stop_loss, + 'stop_loss_ratio': self.stop_loss_pct if self.stop_loss_pct else None, 'stop_loss_pct': (self.stop_loss_pct * 100) if self.stop_loss_pct else None, 'stoploss_order_id': self.stoploss_order_id, 'stoploss_last_update': (self.stoploss_last_update.strftime("%Y-%m-%d %H:%M:%S") @@ -282,14 +290,14 @@ class Trade(_DECL_BASE): 'stoploss_last_update_timestamp': (int(self.stoploss_last_update.timestamp() * 1000) if self.stoploss_last_update else None), 'initial_stop_loss': self.initial_stop_loss, + 'initial_stop_loss_ratio': (self.initial_stop_loss_pct + if self.initial_stop_loss_pct else None), 'initial_stop_loss_pct': (self.initial_stop_loss_pct * 100 if self.initial_stop_loss_pct else None), 'min_rate': self.min_rate, 'max_rate': self.max_rate, - 'strategy': self.strategy, - 'ticker_interval': self.ticker_interval, + 'open_order_id': self.open_order_id, - 'exchange': self.exchange, } def adjust_min_max_rates(self, current_price: float) -> None: From 6dec508c5eb3a0106525f16428f27d4cc7b99b6f Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 10:56:05 +0200 Subject: [PATCH 2487/3421] Add new fields to tests --- tests/rpc/test_rpc.py | 4 ++++ tests/rpc/test_rpc_apiserver.py | 14 +++++++++----- tests/test_persistence.py | 4 ++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 7b7824310..dcd525574 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -82,11 +82,13 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'current_profit_pct': -0.41, 'stop_loss': 0.0, 'stop_loss_pct': None, + 'stop_loss_ratio': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, 'initial_stop_loss': 0.0, 'initial_stop_loss_pct': None, + 'initial_stop_loss_ratio': None, 'open_order': '(limit buy rem=0.00000000)', 'exchange': 'bittrex', @@ -136,11 +138,13 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'current_profit_pct': ANY, 'stop_loss': 0.0, 'stop_loss_pct': None, + 'stop_loss_ratio': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, 'initial_stop_loss': 0.0, 'initial_stop_loss_pct': None, + 'initial_stop_loss_ratio': None, 'open_order': '(limit buy rem=0.00000000)', 'exchange': 'bittrex', } == results[0] diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index c7f937b0c..13914fab0 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -510,8 +510,6 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'current_profit': -0.00408133, 'current_profit_pct': -0.41, 'current_rate': 1.099e-05, - 'initial_stop_loss': 0.0, - 'initial_stop_loss_pct': None, 'open_date': ANY, 'open_date_hum': 'just now', 'open_timestamp': ANY, @@ -521,9 +519,13 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'stake_amount': 0.001, 'stop_loss': 0.0, 'stop_loss_pct': None, + 'stop_loss_ratio': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, + 'initial_stop_loss': 0.0, + 'initial_stop_loss_pct': None, + 'initial_stop_loss_ratio': None, 'trade_id': 1, 'close_rate_requested': None, 'current_rate': 1.099e-05, @@ -622,12 +624,11 @@ def test_api_forcebuy(botclient, mocker, fee): data='{"pair": "ETH/BTC"}') assert_response(rc) assert rc.json == {'amount': 1, + 'trade_id': None, 'close_date': None, 'close_date_hum': None, 'close_timestamp': None, 'close_rate': 0.265441, - 'initial_stop_loss': None, - 'initial_stop_loss_pct': None, 'open_date': ANY, 'open_date_hum': 'just now', 'open_timestamp': ANY, @@ -636,10 +637,13 @@ def test_api_forcebuy(botclient, mocker, fee): 'stake_amount': 1, 'stop_loss': None, 'stop_loss_pct': None, + 'stop_loss_ratio': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, - 'trade_id': None, + 'initial_stop_loss': None, + 'initial_stop_loss_pct': None, + 'initial_stop_loss_ratio': None, 'close_profit': None, 'close_profit_abs': None, 'close_rate_requested': None, diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 3b1041fd8..942e22a19 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -762,12 +762,14 @@ def test_to_json(default_conf, fee): 'sell_reason': None, 'sell_order_status': None, 'stop_loss': None, + 'stop_loss_ratio': None, 'stop_loss_pct': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, 'initial_stop_loss': None, 'initial_stop_loss_pct': None, + 'initial_stop_loss_ratio': None, 'min_rate': None, 'max_rate': None, 'strategy': None, @@ -805,11 +807,13 @@ def test_to_json(default_conf, fee): 'stake_amount': 0.001, 'stop_loss': None, 'stop_loss_pct': None, + 'stop_loss_ratio': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, 'initial_stop_loss': None, 'initial_stop_loss_pct': None, + 'initial_stop_loss_ratio': None, 'close_profit': None, 'close_profit_abs': None, 'close_rate_requested': None, From d2b7016dffe40d0581427f7cbdb00915838759b0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 11:05:37 +0200 Subject: [PATCH 2488/3421] Add stop_loss_abs ... --- freqtrade/persistence.py | 6 ++++-- tests/rpc/test_rpc.py | 4 ++++ tests/rpc/test_rpc_apiserver.py | 4 ++++ tests/test_persistence.py | 4 ++++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 2fe93f440..823bf6dc0 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -281,7 +281,8 @@ class Trade(_DECL_BASE): 'sell_reason': self.sell_reason, 'sell_order_status': self.sell_order_status, - 'stop_loss': self.stop_loss, + 'stop_loss': self.stop_loss, # Deprecated - should not be used + 'stop_loss_abs': self.stop_loss, 'stop_loss_ratio': self.stop_loss_pct if self.stop_loss_pct else None, 'stop_loss_pct': (self.stop_loss_pct * 100) if self.stop_loss_pct else None, 'stoploss_order_id': self.stoploss_order_id, @@ -289,7 +290,8 @@ class Trade(_DECL_BASE): if self.stoploss_last_update else None), 'stoploss_last_update_timestamp': (int(self.stoploss_last_update.timestamp() * 1000) if self.stoploss_last_update else None), - 'initial_stop_loss': self.initial_stop_loss, + 'initial_stop_loss': self.initial_stop_loss, # Deprecated - should not be used + 'initial_stop_loss_abs': self.initial_stop_loss, 'initial_stop_loss_ratio': (self.initial_stop_loss_pct if self.initial_stop_loss_pct else None), 'initial_stop_loss_pct': (self.initial_stop_loss_pct * 100 diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index dcd525574..eb20e3903 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -81,12 +81,14 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'current_profit': -0.00408133, 'current_profit_pct': -0.41, 'stop_loss': 0.0, + 'stop_loss_abs': 0.0, 'stop_loss_pct': None, 'stop_loss_ratio': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, 'initial_stop_loss': 0.0, + 'initial_stop_loss_abs': 0.0, 'initial_stop_loss_pct': None, 'initial_stop_loss_ratio': None, 'open_order': '(limit buy rem=0.00000000)', @@ -137,12 +139,14 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'current_profit': ANY, 'current_profit_pct': ANY, 'stop_loss': 0.0, + 'stop_loss_abs': 0.0, 'stop_loss_pct': None, 'stop_loss_ratio': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, 'initial_stop_loss': 0.0, + 'initial_stop_loss_abs': 0.0, 'initial_stop_loss_pct': None, 'initial_stop_loss_ratio': None, 'open_order': '(limit buy rem=0.00000000)', diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 13914fab0..4e4dd7dfd 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -518,12 +518,14 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'pair': 'ETH/BTC', 'stake_amount': 0.001, 'stop_loss': 0.0, + 'stop_loss_abs': 0.0, 'stop_loss_pct': None, 'stop_loss_ratio': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, 'initial_stop_loss': 0.0, + 'initial_stop_loss_abs': 0.0, 'initial_stop_loss_pct': None, 'initial_stop_loss_ratio': None, 'trade_id': 1, @@ -636,12 +638,14 @@ def test_api_forcebuy(botclient, mocker, fee): 'pair': 'ETH/ETH', 'stake_amount': 1, 'stop_loss': None, + 'stop_loss_abs': None, 'stop_loss_pct': None, 'stop_loss_ratio': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, 'initial_stop_loss': None, + 'initial_stop_loss_abs': None, 'initial_stop_loss_pct': None, 'initial_stop_loss_ratio': None, 'close_profit': None, diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 942e22a19..ae639511b 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -762,12 +762,14 @@ def test_to_json(default_conf, fee): 'sell_reason': None, 'sell_order_status': None, 'stop_loss': None, + 'stop_loss_abs': None, 'stop_loss_ratio': None, 'stop_loss_pct': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, 'initial_stop_loss': None, + 'initial_stop_loss_abs': None, 'initial_stop_loss_pct': None, 'initial_stop_loss_ratio': None, 'min_rate': None, @@ -806,12 +808,14 @@ def test_to_json(default_conf, fee): 'amount': 100.0, 'stake_amount': 0.001, 'stop_loss': None, + 'stop_loss_abs': None, 'stop_loss_pct': None, 'stop_loss_ratio': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, 'initial_stop_loss': None, + 'initial_stop_loss_abs': None, 'initial_stop_loss_pct': None, 'initial_stop_loss_ratio': None, 'close_profit': None, From b06c1daddba2e81cc7904da3e21d6695949dda63 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2020 09:19:38 +0000 Subject: [PATCH 2489/3421] Bump mkdocs-material from 5.2.1 to 5.2.2 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.2.1 to 5.2.2. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.2.1...5.2.2) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index b34f93c95..9997fa854 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.2.1 +mkdocs-material==5.2.2 mdx_truly_sane_lists==1.2 From 74088ba43880539af782a5e9b5f740de4dde0964 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2020 09:20:01 +0000 Subject: [PATCH 2490/3421] Bump plotly from 4.7.1 to 4.8.1 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.7.1 to 4.8.1. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.7.1...v4.8.1) Signed-off-by: dependabot-preview[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index d81239053..cb13a59bf 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.7.1 +plotly==4.8.1 From 005addf0a5bafdbc015e01dcb1e112859d4f97e3 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2020 09:20:47 +0000 Subject: [PATCH 2491/3421] Bump ccxt from 1.28.49 to 1.29.5 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.28.49 to 1.29.5. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.28.49...1.29.5) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index a9019cba1..07bc5caa3 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.28.49 +ccxt==1.29.5 SQLAlchemy==1.3.17 python-telegram-bot==12.7 arrow==0.15.6 From 65c5bba189ce8fc09f175a82ad52e13a0a1425ab Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 12:45:59 +0200 Subject: [PATCH 2492/3421] Fix typo in docs Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 3a8262fab..c9953f0f1 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -103,7 +103,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `api_server.enabled` | Enable usage of API Server. See the [API Server documentation](rest-api.md) for more details.
            **Datatype:** Boolean | `api_server.listen_ip_address` | Bind IP address. See the [API Server documentation](rest-api.md) for more details.
            **Datatype:** IPv4 | `api_server.listen_port` | Bind Port. See the [API Server documentation](rest-api.md) for more details.
            **Datatype:** Integer between 1024 and 65535 -| `api_server.verbosity` | Loggging verbosity. `info` will print all RPC Calls, while "error" will only display errors.
            **Datatype:** Enum, either `info` or `error`. Defaults to `info`. +| `api_server.verbosity` | Logging verbosity. `info` will print all RPC Calls, while "error" will only display errors.
            **Datatype:** Enum, either `info` or `error`. Defaults to `info`. | `api_server.username` | Username for API server. See the [API Server documentation](rest-api.md) for more details.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String | `api_server.password` | Password for API server. See the [API Server documentation](rest-api.md) for more details.
            **Keep it in secret, do not disclose publicly.**
            **Datatype:** String | `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite:///tradesv3.dryrun.sqlite` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances.
            **Datatype:** String, SQLAlchemy connect string From c35f9f8d39967999807cab6a8a405976fa691b2d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 19:45:37 +0200 Subject: [PATCH 2493/3421] Verify sell-rate got a value - otherwise downstream code does not work. Using PricingException here will cease operation for this pair for this iteration - postponing handling to the next iteration - where hopefully a price is again present. --- freqtrade/freqtradebot.py | 2 ++ tests/test_freqtradebot.py | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d4afa1d60..df0aad801 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -676,6 +676,8 @@ class FreqtradeBot: raise PricingError from e else: rate = self.exchange.fetch_ticker(pair)[ask_strategy['price_side']] + if rate is None: + raise PricingError(f"Sell-Rate for {pair} was empty.") self._sell_rate_cache[pair] = rate return rate diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5e951b585..17b51dff5 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3931,6 +3931,26 @@ def test_get_sell_rate_orderbook_exception(default_conf, mocker, caplog): assert log_has("Sell Price at location from orderbook could not be determined.", caplog) +def test_get_sell_rate_exception(default_conf, mocker, caplog): + # Ticker on one side can be empty in certain circumstances. + default_conf['ask_strategy']['price_side'] = 'ask' + pair = "ETH/BTC" + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', return_value={'ask': None, 'bid': 0.12}) + ft = get_patched_freqtradebot(mocker, default_conf) + with pytest.raises(PricingError, match=r"Sell-Rate for ETH/BTC was empty."): + ft.get_sell_rate(pair, True) + + ft.config['ask_strategy']['price_side'] = 'bid' + assert ft.get_sell_rate(pair, True) == 0.12 + # Reverse sides + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', return_value={'ask': 0.13, 'bid': None}) + with pytest.raises(PricingError, match=r"Sell-Rate for ETH/BTC was empty."): + ft.get_sell_rate(pair, True) + + ft.config['ask_strategy']['price_side'] = 'ask' + assert ft.get_sell_rate(pair, True) == 0.13 + + def test_startup_state(default_conf, mocker): default_conf['pairlist'] = {'method': 'VolumePairList', 'config': {'number_assets': 20} From f6f75072ba049815815e4b17e38acdcb8bf8d9fa Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 19:54:05 +0200 Subject: [PATCH 2494/3421] Fix linelength --- tests/test_freqtradebot.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 17b51dff5..487e3a60e 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -3935,7 +3935,8 @@ def test_get_sell_rate_exception(default_conf, mocker, caplog): # Ticker on one side can be empty in certain circumstances. default_conf['ask_strategy']['price_side'] = 'ask' pair = "ETH/BTC" - mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', return_value={'ask': None, 'bid': 0.12}) + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', + return_value={'ask': None, 'bid': 0.12}) ft = get_patched_freqtradebot(mocker, default_conf) with pytest.raises(PricingError, match=r"Sell-Rate for ETH/BTC was empty."): ft.get_sell_rate(pair, True) @@ -3943,7 +3944,8 @@ def test_get_sell_rate_exception(default_conf, mocker, caplog): ft.config['ask_strategy']['price_side'] = 'bid' assert ft.get_sell_rate(pair, True) == 0.12 # Reverse sides - mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', return_value={'ask': 0.13, 'bid': None}) + mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', + return_value={'ask': 0.13, 'bid': None}) with pytest.raises(PricingError, match=r"Sell-Rate for ETH/BTC was empty."): ft.get_sell_rate(pair, True) From 3139343946889361c48442f684a7b661e4c1536b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 19:58:28 +0200 Subject: [PATCH 2495/3421] Remove capital_available_percentage and raise instead --- docs/edge.md | 1 - freqtrade/configuration/deprecated_settings.py | 2 +- freqtrade/constants.py | 1 - freqtrade/edge/edge_positioning.py | 6 ++---- tests/config_test_comments.json | 1 - tests/test_configuration.py | 5 +++-- 6 files changed, 6 insertions(+), 10 deletions(-) diff --git a/docs/edge.md b/docs/edge.md index 029844c0b..bdcf6cde9 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -148,7 +148,6 @@ Edge module has following configuration options: | `enabled` | If true, then Edge will run periodically.
            *Defaults to `false`.*
            **Datatype:** Boolean | `process_throttle_secs` | How often should Edge run in seconds.
            *Defaults to `3600` (once per hour).*
            **Datatype:** Integer | `calculate_since_number_of_days` | Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy.
            **Note** that it downloads historical data so increasing this number would lead to slowing down the bot.
            *Defaults to `7`.*
            **Datatype:** Integer -| `capital_available_percentage` | **DEPRECATED - [replaced with `tradable_balance_ratio`](configuration.md#Available balance)** This is the percentage of the total capital on exchange in stake currency.
            As an example if you have 10 ETH available in your wallet on the exchange and this value is 0.5 (which is 50%), then the bot will use a maximum amount of 5 ETH for trading and considers it as available capital.
            *Defaults to `0.5`.*
            **Datatype:** Float | `allowed_risk` | Ratio of allowed risk per trade.
            *Defaults to `0.01` (1%)).*
            **Datatype:** Float | `stoploss_range_min` | Minimum stoploss.
            *Defaults to `-0.01`.*
            **Datatype:** Float | `stoploss_range_max` | Maximum stoploss.
            *Defaults to `-0.10`.*
            **Datatype:** Float diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index 3999ea422..ff4401c27 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -60,7 +60,7 @@ def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None: if (config.get('edge', {}).get('enabled', False) and 'capital_available_percentage' in config.get('edge', {})): - logger.warning( + raise OperationalException( "DEPRECATED: " "Using 'edge.capital_available_percentage' has been deprecated in favor of " "'tradable_balance_ratio'. Please migrate your configuration to " diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 1984d4866..0e08db91f 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -286,7 +286,6 @@ CONF_SCHEMA = { 'process_throttle_secs': {'type': 'integer', 'minimum': 600}, 'calculate_since_number_of_days': {'type': 'integer'}, 'allowed_risk': {'type': 'number'}, - 'capital_available_percentage': {'type': 'number'}, 'stoploss_range_min': {'type': 'number'}, 'stoploss_range_max': {'type': 'number'}, 'stoploss_range_step': {'type': 'number'}, diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index c19d4552a..2550cf604 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -57,9 +57,7 @@ class Edge: if self.config['stake_amount'] != UNLIMITED_STAKE_AMOUNT: raise OperationalException('Edge works only with unlimited stake amount') - # Deprecated capital_available_percentage. Will use tradable_balance_ratio in the future. - self._capital_percentage: float = self.edge_config.get( - 'capital_available_percentage', self.config['tradable_balance_ratio']) + self._capital_ratio: float = self.config['tradable_balance_ratio'] self._allowed_risk: float = self.edge_config.get('allowed_risk') self._since_number_of_days: int = self.edge_config.get('calculate_since_number_of_days', 14) self._last_updated: int = 0 # Timestamp of pairs last updated time @@ -157,7 +155,7 @@ class Edge: def stake_amount(self, pair: str, free_capital: float, total_capital: float, capital_in_trade: float) -> float: stoploss = self.stoploss(pair) - available_capital = (total_capital + capital_in_trade) * self._capital_percentage + available_capital = (total_capital + capital_in_trade) * self._capital_ratio allowed_capital_at_risk = available_capital * self._allowed_risk max_position_size = abs(allowed_capital_at_risk / stoploss) position_size = min(max_position_size, free_capital) diff --git a/tests/config_test_comments.json b/tests/config_test_comments.json index 8f41b08fa..d9d4a86bc 100644 --- a/tests/config_test_comments.json +++ b/tests/config_test_comments.json @@ -92,7 +92,6 @@ "enabled": false, "process_throttle_secs": 3600, "calculate_since_number_of_days": 7, - "capital_available_percentage": 0.5, "allowed_risk": 0.01, "stoploss_range_min": -0.01, "stoploss_range_max": -0.1, diff --git a/tests/test_configuration.py b/tests/test_configuration.py index edcbe4516..2af89bea7 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -1048,8 +1048,9 @@ def test_process_deprecated_setting_edge(mocker, edge_conf, caplog): 'capital_available_percentage': 0.5, }}) - process_temporary_deprecated_settings(edge_conf) - assert log_has_re(r"DEPRECATED.*Using 'edge.capital_available_percentage'*", caplog) + with pytest.raises(OperationalException, + match=r"DEPRECATED.*Using 'edge.capital_available_percentage'*"): + process_temporary_deprecated_settings(edge_conf) def test_check_conflicting_settings(mocker, default_conf, caplog): From 67a3c323730f4b4a882c1688c2cf53be3aa24f98 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 20:02:12 +0200 Subject: [PATCH 2496/3421] Remove some occurances of percentage --- docs/configuration.md | 6 +++--- docs/stoploss.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index a1cb45e0f..254c581fd 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -53,8 +53,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in the Dry Run mode.
            *Defaults to `1000`.*
            **Datatype:** Float | `cancel_open_orders_on_exit` | Cancel open orders when the `/stop` RPC command is issued, `Ctrl+C` is pressed or the bot dies unexpectedly. When set to `true`, this allows you to use `/stop` to cancel unfilled and partially filled orders in the event of a market crash. It does not impact open positions.
            *Defaults to `false`.*
            **Datatype:** Boolean | `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
            *Defaults to `false`.*
            **Datatype:** Boolean -| `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy).
            **Datatype:** Dict -| `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
            **Datatype:** Float (as ratio) +| `minimal_roi` | **Required.** Set the threshold as ratio the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy).
            **Datatype:** Dict +| `stoploss` | **Required.** Value as ratio of the stoploss used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
            **Datatype:** Float (as ratio) | `trailing_stop` | Enables trailing stoploss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
            **Datatype:** Boolean | `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
            **Datatype:** Float | `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
            *Defaults to `0.0` (no offset).*
            **Datatype:** Float @@ -217,7 +217,7 @@ To allow the bot to trade all the available `stake_currency` in your account (mi ### Understand minimal_roi The `minimal_roi` configuration parameter is a JSON object where the key is a duration -in minutes and the value is the minimum ROI in percent. +in minutes and the value is the minimum ROI as ratio. See the example below: ```json diff --git a/docs/stoploss.md b/docs/stoploss.md index f6d56fd41..0e43817ec 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -1,6 +1,6 @@ # Stop Loss -The `stoploss` configuration parameter is loss in percentage that should trigger a sale. +The `stoploss` configuration parameter is loss as ratio that should trigger a sale. For example, value `-0.10` will cause immediate sell if the profit dips below -10% for a given trade. This parameter is optional. Most of the strategy files already include the optimal `stoploss` value. From b2025597aa3f97f9f6a6b14e0402534dc8e2cdcc Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 20:15:48 +0200 Subject: [PATCH 2497/3421] Build-commands should write timeframe instead of ticker interval --- freqtrade/commands/build_config_commands.py | 4 ++-- freqtrade/templates/base_config.json.j2 | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py index 87098f53c..0c98b2e55 100644 --- a/freqtrade/commands/build_config_commands.py +++ b/freqtrade/commands/build_config_commands.py @@ -75,8 +75,8 @@ def ask_user_config() -> Dict[str, Any]: }, { "type": "text", - "name": "ticker_interval", - "message": "Please insert your timeframe (ticker interval):", + "name": "timeframe", + "message": "Please insert your desired timeframe (e.g. 5m):", "default": "5m", }, { diff --git a/freqtrade/templates/base_config.json.j2 b/freqtrade/templates/base_config.json.j2 index 6d3174347..e47c32309 100644 --- a/freqtrade/templates/base_config.json.j2 +++ b/freqtrade/templates/base_config.json.j2 @@ -4,7 +4,7 @@ "stake_amount": {{ stake_amount }}, "tradable_balance_ratio": 0.99, "fiat_display_currency": "{{ fiat_display_currency }}", - "ticker_interval": "{{ ticker_interval }}", + "timeframe": "{{ timeframe }}", "dry_run": {{ dry_run | lower }}, "cancel_open_orders_on_exit": false, "unfilledtimeout": { From 009ea0639f90535a0f350311231c217d1664deab Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 20:33:26 +0200 Subject: [PATCH 2498/3421] Exchange some occurances of ticker_interval --- freqtrade/commands/arguments.py | 6 ++--- freqtrade/commands/cli_options.py | 4 +-- freqtrade/commands/list_commands.py | 4 +-- freqtrade/constants.py | 2 ++ tests/conftest.py | 2 +- tests/exchange/test_exchange.py | 8 +++--- tests/optimize/test_backtest_detail.py | 2 +- tests/optimize/test_backtesting.py | 34 +++++++++++++------------- tests/optimize/test_edge_cli.py | 8 +++--- tests/optimize/test_hyperopt.py | 8 +++--- 10 files changed, 40 insertions(+), 38 deletions(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 1b7bbfeb5..36e3dedf0 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -15,7 +15,7 @@ ARGS_STRATEGY = ["strategy", "strategy_path"] ARGS_TRADE = ["db_url", "sd_notify", "dry_run"] -ARGS_COMMON_OPTIMIZE = ["ticker_interval", "timerange", +ARGS_COMMON_OPTIMIZE = ["timeframe", "timerange", "max_open_trades", "stake_amount", "fee"] ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + ["position_stacking", "use_max_market_positions", @@ -59,10 +59,10 @@ ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchang ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", "trade_source", "export", "exportfilename", - "timerange", "ticker_interval", "no_trades"] + "timerange", "timeframe", "no_trades"] ARGS_PLOT_PROFIT = ["pairs", "timerange", "export", "exportfilename", "db_url", - "trade_source", "ticker_interval"] + "trade_source", "timeframe"] ARGS_SHOW_TRADES = ["db_url", "trade_ids", "print_json"] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index ee9208c33..3ed2f81d1 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -110,8 +110,8 @@ AVAILABLE_CLI_OPTIONS = { action='store_true', ), # Optimize common - "ticker_interval": Arg( - '-i', '--ticker-interval', + "timeframe": Arg( + '-i', '--timeframe', '--ticker-interval', help='Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`).', ), "timerange": Arg( diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index e5131f9b2..b29aabe25 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -102,8 +102,8 @@ def start_list_timeframes(args: Dict[str, Any]) -> None: Print ticker intervals (timeframes) available on Exchange """ config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) - # Do not use ticker_interval set in the config - config['ticker_interval'] = None + # Do not use timeframe set in the config + config['timeframe'] = None # Init exchange exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 1984d4866..511c2993d 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -72,6 +72,7 @@ CONF_SCHEMA = { 'properties': { 'max_open_trades': {'type': ['integer', 'number'], 'minimum': -1}, 'ticker_interval': {'type': 'string'}, + 'timeframe': {'type': 'string'}, 'stake_currency': {'type': 'string'}, 'stake_amount': { 'type': ['number', 'string'], @@ -303,6 +304,7 @@ CONF_SCHEMA = { SCHEMA_TRADE_REQUIRED = [ 'exchange', + 'timeframe', 'max_open_trades', 'stake_currency', 'stake_amount', diff --git a/tests/conftest.py b/tests/conftest.py index 971f7a5fa..f62b18f98 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -247,7 +247,7 @@ def default_conf(testdatadir): "stake_currency": "BTC", "stake_amount": 0.001, "fiat_display_currency": "USD", - "ticker_interval": '5m', + "timeframe": '5m', "dry_run": True, "cancel_open_orders_on_exit": False, "minimal_roi": { diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 25aecba5c..6df94f356 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1350,7 +1350,7 @@ async def test__async_get_candle_history(default_conf, mocker, caplog, exchange_ # exchange = Exchange(default_conf) await async_ccxt_exception(mocker, default_conf, MagicMock(), "_async_get_candle_history", "fetch_ohlcv", - pair='ABCD/BTC', timeframe=default_conf['ticker_interval']) + pair='ABCD/BTC', timeframe=default_conf['timeframe']) api_mock = MagicMock() with pytest.raises(OperationalException, @@ -1480,7 +1480,7 @@ async def test___async_get_candle_history_sort(default_conf, mocker, exchange_na exchange._api_async.fetch_ohlcv = get_mock_coro(ohlcv) sort_mock = mocker.patch('freqtrade.exchange.exchange.sorted', MagicMock(side_effect=sort_data)) # Test the OHLCV data sort - res = await exchange._async_get_candle_history('ETH/BTC', default_conf['ticker_interval']) + res = await exchange._async_get_candle_history('ETH/BTC', default_conf['timeframe']) assert res[0] == 'ETH/BTC' res_ohlcv = res[2] @@ -1517,9 +1517,9 @@ async def test___async_get_candle_history_sort(default_conf, mocker, exchange_na # Reset sort mock sort_mock = mocker.patch('freqtrade.exchange.sorted', MagicMock(side_effect=sort_data)) # Test the OHLCV data sort - res = await exchange._async_get_candle_history('ETH/BTC', default_conf['ticker_interval']) + res = await exchange._async_get_candle_history('ETH/BTC', default_conf['timeframe']) assert res[0] == 'ETH/BTC' - assert res[1] == default_conf['ticker_interval'] + assert res[1] == default_conf['timeframe'] res_ohlcv = res[2] # Sorted not called again - data is already in order assert sort_mock.call_count == 0 diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py index e7bc76c1d..9b3043086 100644 --- a/tests/optimize/test_backtest_detail.py +++ b/tests/optimize/test_backtest_detail.py @@ -360,7 +360,7 @@ def test_backtest_results(default_conf, fee, mocker, caplog, data) -> None: """ default_conf["stoploss"] = data.stop_loss default_conf["minimal_roi"] = data.roi - default_conf["ticker_interval"] = tests_timeframe + default_conf["timeframe"] = tests_timeframe default_conf["trailing_stop"] = data.trailing_stop default_conf["trailing_only_offset_is_reached"] = data.trailing_only_offset_is_reached # Only add this to configuration If it's necessary diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index ace82d28b..407604d9c 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -81,7 +81,7 @@ def load_data_test(what, testdatadir): def simple_backtest(config, contour, num_results, mocker, testdatadir) -> None: patch_exchange(mocker) - config['ticker_interval'] = '1m' + config['timeframe'] = '1m' backtesting = Backtesting(config) data = load_data_test(contour, testdatadir) @@ -165,7 +165,7 @@ def test_setup_optimize_configuration_without_arguments(mocker, default_conf, ca assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) - assert 'ticker_interval' in config + assert 'timeframe' in config assert not log_has_re('Parameter -i/--ticker-interval detected .*', caplog) assert 'position_stacking' not in config @@ -189,7 +189,7 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> '--config', 'config.json', '--strategy', 'DefaultStrategy', '--datadir', '/foo/bar', - '--ticker-interval', '1m', + '--timeframe', '1m', '--enable-position-stacking', '--disable-max-market-positions', '--timerange', ':100', @@ -208,8 +208,8 @@ def test_setup_bt_configuration_with_arguments(mocker, default_conf, caplog) -> assert config['runmode'] == RunMode.BACKTEST assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) - assert 'ticker_interval' in config - assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', + assert 'timeframe' in config + assert log_has('Parameter -i/--timeframe detected ... Using timeframe: 1m ...', caplog) assert 'position_stacking' in config @@ -288,7 +288,7 @@ def test_backtesting_init(mocker, default_conf, order_types) -> None: def test_backtesting_init_no_ticker_interval(mocker, default_conf, caplog) -> None: patch_exchange(mocker) - del default_conf['ticker_interval'] + del default_conf['timeframe'] default_conf['strategy_list'] = ['DefaultStrategy', 'SampleStrategy'] @@ -337,7 +337,7 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', PropertyMock(return_value=['UNITTEST/BTC'])) - default_conf['ticker_interval'] = '1m' + default_conf['timeframe'] = '1m' default_conf['datadir'] = testdatadir default_conf['export'] = None default_conf['timerange'] = '-1510694220' @@ -367,7 +367,7 @@ def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', PropertyMock(return_value=['UNITTEST/BTC'])) - default_conf['ticker_interval'] = "1m" + default_conf['timeframe'] = "1m" default_conf['datadir'] = testdatadir default_conf['export'] = None default_conf['timerange'] = '20180101-20180102' @@ -387,7 +387,7 @@ def test_backtesting_no_pair_left(default_conf, mocker, caplog, testdatadir) -> mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', PropertyMock(return_value=[])) - default_conf['ticker_interval'] = "1m" + default_conf['timeframe'] = "1m" default_conf['datadir'] = testdatadir default_conf['export'] = None default_conf['timerange'] = '20180101-20180102' @@ -534,7 +534,7 @@ def test_backtest_alternate_buy_sell(default_conf, fee, mocker, testdatadir): mocker.patch('freqtrade.exchange.Exchange.get_fee', fee) backtest_conf = _make_backtest_conf(mocker, conf=default_conf, pair='UNITTEST/BTC', datadir=testdatadir) - default_conf['ticker_interval'] = '1m' + default_conf['timeframe'] = '1m' backtesting = Backtesting(default_conf) backtesting.strategy.advise_buy = _trend_alternate # Override backtesting.strategy.advise_sell = _trend_alternate # Override @@ -573,7 +573,7 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir) # Remove data for one pair from the beginning of the data data[pair] = data[pair][tres:].reset_index() - default_conf['ticker_interval'] = '5m' + default_conf['timeframe'] = '5m' backtesting = Backtesting(default_conf) backtesting.strategy.advise_buy = _trend_alternate_hold # Override @@ -623,7 +623,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): '--config', 'config.json', '--strategy', 'DefaultStrategy', '--datadir', str(testdatadir), - '--ticker-interval', '1m', + '--timeframe', '1m', '--timerange', '1510694220-1510700340', '--enable-position-stacking', '--disable-max-market-positions' @@ -632,7 +632,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): start_backtesting(args) # check the logs, that will contain the backtest result exists = [ - 'Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', + 'Parameter -i/--timeframe detected ... Using timeframe: 1m ...', 'Ignoring max_open_trades (--disable-max-market-positions was used) ...', 'Parameter --timerange detected: 1510694220-1510700340 ...', f'Using data directory: {testdatadir} ...', @@ -676,7 +676,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): '--config', 'config.json', '--datadir', str(testdatadir), '--strategy-path', str(Path(__file__).parents[1] / 'strategy/strats'), - '--ticker-interval', '1m', + '--timeframe', '1m', '--timerange', '1510694220-1510700340', '--enable-position-stacking', '--disable-max-market-positions', @@ -695,7 +695,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): # check the logs, that will contain the backtest result exists = [ - 'Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', + 'Parameter -i/--timeframe detected ... Using timeframe: 1m ...', 'Ignoring max_open_trades (--disable-max-market-positions was used) ...', 'Parameter --timerange detected: 1510694220-1510700340 ...', f'Using data directory: {testdatadir} ...', @@ -765,7 +765,7 @@ def test_backtest_start_multi_strat_nomock(default_conf, mocker, caplog, testdat '--config', 'config.json', '--datadir', str(testdatadir), '--strategy-path', str(Path(__file__).parents[1] / 'strategy/strats'), - '--ticker-interval', '1m', + '--timeframe', '1m', '--timerange', '1510694220-1510700340', '--enable-position-stacking', '--disable-max-market-positions', @@ -778,7 +778,7 @@ def test_backtest_start_multi_strat_nomock(default_conf, mocker, caplog, testdat # check the logs, that will contain the backtest result exists = [ - 'Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', + 'Parameter -i/--timeframe detected ... Using timeframe: 1m ...', 'Ignoring max_open_trades (--disable-max-market-positions was used) ...', 'Parameter --timerange detected: 1510694220-1510700340 ...', f'Using data directory: {testdatadir} ...', diff --git a/tests/optimize/test_edge_cli.py b/tests/optimize/test_edge_cli.py index a5e468542..acec51f66 100644 --- a/tests/optimize/test_edge_cli.py +++ b/tests/optimize/test_edge_cli.py @@ -29,7 +29,7 @@ def test_setup_optimize_configuration_without_arguments(mocker, default_conf, ca assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) - assert 'ticker_interval' in config + assert 'timeframe' in config assert not log_has_re('Parameter -i/--ticker-interval detected .*', caplog) assert 'timerange' not in config @@ -48,7 +48,7 @@ def test_setup_edge_configuration_with_arguments(mocker, edge_conf, caplog) -> N '--config', 'config.json', '--strategy', 'DefaultStrategy', '--datadir', '/foo/bar', - '--ticker-interval', '1m', + '--timeframe', '1m', '--timerange', ':100', '--stoplosses=-0.01,-0.10,-0.001' ] @@ -62,8 +62,8 @@ def test_setup_edge_configuration_with_arguments(mocker, edge_conf, caplog) -> N assert 'datadir' in config assert config['runmode'] == RunMode.EDGE assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) - assert 'ticker_interval' in config - assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', + assert 'timeframe' in config + assert log_has('Parameter -i/--timeframe detected ... Using timeframe: 1m ...', caplog) assert 'timerange' in config diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 90e047954..f5b3b8909 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -94,7 +94,7 @@ def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, ca assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) - assert 'ticker_interval' in config + assert 'timeframe' in config assert not log_has_re('Parameter -i/--ticker-interval detected .*', caplog) assert 'position_stacking' not in config @@ -136,8 +136,8 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo assert config['runmode'] == RunMode.HYPEROPT assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) - assert 'ticker_interval' in config - assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', + assert 'timeframe' in config + assert log_has('Parameter -i/--ticker-interval detected ... Using timeframe: 1m ...', caplog) assert 'position_stacking' in config @@ -544,7 +544,7 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None: ) patch_exchange(mocker) # Co-test loading timeframe from strategy - del default_conf['ticker_interval'] + del default_conf['timeframe'] default_conf.update({'config': 'config.json.example', 'hyperopt': 'DefaultHyperOpt', 'epochs': 1, From 898def7f6ca3a58163ad7811dca75c547bb13730 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 20:39:01 +0200 Subject: [PATCH 2499/3421] Remove ticker_interval from exchange --- freqtrade/exchange/exchange.py | 2 +- tests/exchange/test_exchange.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 7ef0d7750..3f1cdc568 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -115,7 +115,7 @@ class Exchange: if validate: # Check if timeframe is available - self.validate_timeframes(config.get('ticker_interval')) + self.validate_timeframes(config.get('timeframe')) # Initial markets load self._load_markets() diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 6df94f356..0d924882f 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -578,7 +578,7 @@ def test_validate_pairs_stakecompatibility_fail(default_conf, mocker, caplog): ('5m'), ("1m"), ("15m"), ("1h") ]) def test_validate_timeframes(default_conf, mocker, timeframe): - default_conf["ticker_interval"] = timeframe + default_conf["timeframe"] = timeframe api_mock = MagicMock() id_mock = PropertyMock(return_value='test_exchange') type(api_mock).id = id_mock @@ -596,7 +596,7 @@ def test_validate_timeframes(default_conf, mocker, timeframe): def test_validate_timeframes_failed(default_conf, mocker): - default_conf["ticker_interval"] = "3m" + default_conf["timeframe"] = "3m" api_mock = MagicMock() id_mock = PropertyMock(return_value='test_exchange') type(api_mock).id = id_mock @@ -613,7 +613,7 @@ def test_validate_timeframes_failed(default_conf, mocker): with pytest.raises(OperationalException, match=r"Invalid timeframe '3m'. This exchange supports.*"): Exchange(default_conf) - default_conf["ticker_interval"] = "15s" + default_conf["timeframe"] = "15s" with pytest.raises(OperationalException, match=r"Timeframes < 1m are currently not supported by Freqtrade."): @@ -621,7 +621,7 @@ def test_validate_timeframes_failed(default_conf, mocker): def test_validate_timeframes_emulated_ohlcv_1(default_conf, mocker): - default_conf["ticker_interval"] = "3m" + default_conf["timeframe"] = "3m" api_mock = MagicMock() id_mock = PropertyMock(return_value='test_exchange') type(api_mock).id = id_mock @@ -641,7 +641,7 @@ def test_validate_timeframes_emulated_ohlcv_1(default_conf, mocker): def test_validate_timeframes_emulated_ohlcvi_2(default_conf, mocker): - default_conf["ticker_interval"] = "3m" + default_conf["timeframe"] = "3m" api_mock = MagicMock() id_mock = PropertyMock(return_value='test_exchange') type(api_mock).id = id_mock @@ -662,7 +662,7 @@ def test_validate_timeframes_emulated_ohlcvi_2(default_conf, mocker): def test_validate_timeframes_not_in_config(default_conf, mocker): - del default_conf["ticker_interval"] + del default_conf["timeframe"] api_mock = MagicMock() id_mock = PropertyMock(return_value='test_exchange') type(api_mock).id = id_mock From b2c241e607317baf147806824c838952632e5722 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 20:43:20 +0200 Subject: [PATCH 2500/3421] Replace ticker_interval in all rpc files --- freqtrade/rpc/rpc.py | 3 ++- freqtrade/rpc/rpc_manager.py | 4 ++-- freqtrade/rpc/telegram.py | 2 +- tests/rpc/test_rpc.py | 2 ++ tests/rpc/test_rpc_apiserver.py | 2 ++ 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 6addf18ba..e7d4a3be8 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -101,7 +101,8 @@ class RPC: 'trailing_stop_positive': config.get('trailing_stop_positive'), 'trailing_stop_positive_offset': config.get('trailing_stop_positive_offset'), 'trailing_only_offset_is_reached': config.get('trailing_only_offset_is_reached'), - 'ticker_interval': config['ticker_interval'], + 'ticker_interval': config['timeframe'], # DEPRECATED + 'timeframe': config['timeframe'], 'exchange': config['exchange']['name'], 'strategy': config['strategy'], 'forcebuy_enabled': config.get('forcebuy_enable', False), diff --git a/freqtrade/rpc/rpc_manager.py b/freqtrade/rpc/rpc_manager.py index 670275991..2cb44fec8 100644 --- a/freqtrade/rpc/rpc_manager.py +++ b/freqtrade/rpc/rpc_manager.py @@ -72,7 +72,7 @@ class RPCManager: minimal_roi = config['minimal_roi'] stoploss = config['stoploss'] trailing_stop = config['trailing_stop'] - ticker_interval = config['ticker_interval'] + timeframe = config['timeframe'] exchange_name = config['exchange']['name'] strategy_name = config.get('strategy', '') self.send_msg({ @@ -81,7 +81,7 @@ class RPCManager: f'*Stake per trade:* `{stake_amount} {stake_currency}`\n' f'*Minimum ROI:* `{minimal_roi}`\n' f'*{"Trailing " if trailing_stop else ""}Stoploss:* `{stoploss}`\n' - f'*Ticker Interval:* `{ticker_interval}`\n' + f'*Timeframe:* `{timeframe}`\n' f'*Strategy:* `{strategy_name}`' }) self.send_msg({ diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 7eef18dfc..17354cdb0 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -639,7 +639,7 @@ class Telegram(RPC): f"*Max open Trades:* `{val['max_open_trades']}`\n" f"*Minimum ROI:* `{val['minimal_roi']}`\n" f"{sl_info}" - f"*Ticker Interval:* `{val['ticker_interval']}`\n" + f"*Timeframe:* `{val['timeframe']}`\n" f"*Strategy:* `{val['strategy']}`\n" f"*Current state:* `{val['state']}`" ) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 7b7824310..4950c4ea7 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -66,6 +66,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'max_rate': ANY, 'strategy': ANY, 'ticker_interval': ANY, + 'timeframe': ANY, 'open_order_id': ANY, 'close_date': None, 'close_date_hum': None, @@ -120,6 +121,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'max_rate': ANY, 'strategy': ANY, 'ticker_interval': ANY, + 'timeframe': ANY, 'open_order_id': ANY, 'close_date': None, 'close_date_hum': None, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index c7f937b0c..bccd12e18 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -544,6 +544,7 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'sell_order_status': None, 'strategy': 'DefaultStrategy', 'ticker_interval': 5, + 'timeframe': 5, 'exchange': 'bittrex', }] @@ -659,6 +660,7 @@ def test_api_forcebuy(botclient, mocker, fee): 'sell_order_status': None, 'strategy': None, 'ticker_interval': None, + 'timeframe': None, 'exchange': 'bittrex', } From 950f358982b881d0f8f7b5d4e665506380fe8f90 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 20:47:27 +0200 Subject: [PATCH 2501/3421] Replace occurances in test files --- tests/commands/test_build_config.py | 4 +- tests/config_test_comments.json | 2 +- tests/data/test_dataprovider.py | 40 +++++++++---------- tests/data/test_history.py | 6 +-- tests/optimize/test_hyperopt.py | 4 +- tests/strategy/test_interface.py | 12 +++--- tests/strategy/test_strategy.py | 8 ++-- tests/test_arguments.py | 2 +- tests/test_configuration.py | 2 +- tests/test_freqtradebot.py | 2 +- tests/test_main.py | 12 +++--- tests/test_persistence.py | 2 + tests/test_plotting.py | 2 +- tests/testdata/backtest-result_test copy.json | 7 ++++ 14 files changed, 57 insertions(+), 48 deletions(-) create mode 100644 tests/testdata/backtest-result_test copy.json diff --git a/tests/commands/test_build_config.py b/tests/commands/test_build_config.py index d4ebe1de2..69b277e3b 100644 --- a/tests/commands/test_build_config.py +++ b/tests/commands/test_build_config.py @@ -44,7 +44,7 @@ def test_start_new_config(mocker, caplog, exchange): 'stake_currency': 'USDT', 'stake_amount': 100, 'fiat_display_currency': 'EUR', - 'ticker_interval': '15m', + 'timeframe': '15m', 'dry_run': True, 'exchange_name': exchange, 'exchange_key': 'sampleKey', @@ -68,7 +68,7 @@ def test_start_new_config(mocker, caplog, exchange): result = rapidjson.loads(wt_mock.call_args_list[0][0][0], parse_mode=rapidjson.PM_COMMENTS | rapidjson.PM_TRAILING_COMMAS) assert result['exchange']['name'] == exchange - assert result['ticker_interval'] == '15m' + assert result['timeframe'] == '15m' def test_start_new_config_exists(mocker, caplog): diff --git a/tests/config_test_comments.json b/tests/config_test_comments.json index 8f41b08fa..b224d7602 100644 --- a/tests/config_test_comments.json +++ b/tests/config_test_comments.json @@ -9,7 +9,7 @@ "fiat_display_currency": "USD", // C++-style comment "amount_reserve_percent" : 0.05, // And more, tabs before this comment "dry_run": false, - "ticker_interval": "5m", + "timeframe": "5m", "trailing_stop": false, "trailing_stop_positive": 0.005, "trailing_stop_positive_offset": 0.0051, diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index c2d6e82f1..718060c5e 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -12,7 +12,7 @@ from tests.conftest import get_patched_exchange def test_ohlcv(mocker, default_conf, ohlcv_history): default_conf["runmode"] = RunMode.DRY_RUN - timeframe = default_conf["ticker_interval"] + timeframe = default_conf["timeframe"] exchange = get_patched_exchange(mocker, default_conf) exchange._klines[("XRP/BTC", timeframe)] = ohlcv_history exchange._klines[("UNITTEST/BTC", timeframe)] = ohlcv_history @@ -53,47 +53,47 @@ def test_historic_ohlcv(mocker, default_conf, ohlcv_history): def test_get_pair_dataframe(mocker, default_conf, ohlcv_history): default_conf["runmode"] = RunMode.DRY_RUN - ticker_interval = default_conf["ticker_interval"] + timeframe = default_conf["timeframe"] exchange = get_patched_exchange(mocker, default_conf) - exchange._klines[("XRP/BTC", ticker_interval)] = ohlcv_history - exchange._klines[("UNITTEST/BTC", ticker_interval)] = ohlcv_history + exchange._klines[("XRP/BTC", timeframe)] = ohlcv_history + exchange._klines[("UNITTEST/BTC", timeframe)] = ohlcv_history dp = DataProvider(default_conf, exchange) assert dp.runmode == RunMode.DRY_RUN - assert ohlcv_history.equals(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval)) - assert isinstance(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval), DataFrame) - assert dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval) is not ohlcv_history - assert not dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval).empty - assert dp.get_pair_dataframe("NONESENSE/AAA", ticker_interval).empty + assert ohlcv_history.equals(dp.get_pair_dataframe("UNITTEST/BTC", timeframe)) + assert isinstance(dp.get_pair_dataframe("UNITTEST/BTC", timeframe), DataFrame) + assert dp.get_pair_dataframe("UNITTEST/BTC", timeframe) is not ohlcv_history + assert not dp.get_pair_dataframe("UNITTEST/BTC", timeframe).empty + assert dp.get_pair_dataframe("NONESENSE/AAA", timeframe).empty # Test with and without parameter - assert dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval)\ + assert dp.get_pair_dataframe("UNITTEST/BTC", timeframe)\ .equals(dp.get_pair_dataframe("UNITTEST/BTC")) default_conf["runmode"] = RunMode.LIVE dp = DataProvider(default_conf, exchange) assert dp.runmode == RunMode.LIVE - assert isinstance(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval), DataFrame) - assert dp.get_pair_dataframe("NONESENSE/AAA", ticker_interval).empty + assert isinstance(dp.get_pair_dataframe("UNITTEST/BTC", timeframe), DataFrame) + assert dp.get_pair_dataframe("NONESENSE/AAA", timeframe).empty historymock = MagicMock(return_value=ohlcv_history) mocker.patch("freqtrade.data.dataprovider.load_pair_history", historymock) default_conf["runmode"] = RunMode.BACKTEST dp = DataProvider(default_conf, exchange) assert dp.runmode == RunMode.BACKTEST - assert isinstance(dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval), DataFrame) - # assert dp.get_pair_dataframe("NONESENSE/AAA", ticker_interval).empty + assert isinstance(dp.get_pair_dataframe("UNITTEST/BTC", timeframe), DataFrame) + # assert dp.get_pair_dataframe("NONESENSE/AAA", timeframe).empty def test_available_pairs(mocker, default_conf, ohlcv_history): exchange = get_patched_exchange(mocker, default_conf) - ticker_interval = default_conf["ticker_interval"] - exchange._klines[("XRP/BTC", ticker_interval)] = ohlcv_history - exchange._klines[("UNITTEST/BTC", ticker_interval)] = ohlcv_history + timeframe = default_conf["timeframe"] + exchange._klines[("XRP/BTC", timeframe)] = ohlcv_history + exchange._klines[("UNITTEST/BTC", timeframe)] = ohlcv_history dp = DataProvider(default_conf, exchange) assert len(dp.available_pairs) == 2 - assert dp.available_pairs == [("XRP/BTC", ticker_interval), ("UNITTEST/BTC", ticker_interval), ] + assert dp.available_pairs == [("XRP/BTC", timeframe), ("UNITTEST/BTC", timeframe), ] def test_refresh(mocker, default_conf, ohlcv_history): @@ -101,8 +101,8 @@ def test_refresh(mocker, default_conf, ohlcv_history): mocker.patch("freqtrade.exchange.Exchange.refresh_latest_ohlcv", refresh_mock) exchange = get_patched_exchange(mocker, default_conf, id="binance") - ticker_interval = default_conf["ticker_interval"] - pairs = [("XRP/BTC", ticker_interval), ("UNITTEST/BTC", ticker_interval)] + timeframe = default_conf["timeframe"] + pairs = [("XRP/BTC", timeframe), ("UNITTEST/BTC", timeframe)] pairs_non_trad = [("ETH/USDT", ticker_interval), ("BTC/TUSD", "1h")] diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 6fd4d9569..c52163bbc 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -354,7 +354,7 @@ def test_init(default_conf, mocker) -> None: assert {} == load_data( datadir=Path(''), pairs=[], - timeframe=default_conf['ticker_interval'] + timeframe=default_conf['timeframe'] ) @@ -363,13 +363,13 @@ def test_init_with_refresh(default_conf, mocker) -> None: refresh_data( datadir=Path(''), pairs=[], - timeframe=default_conf['ticker_interval'], + timeframe=default_conf['timeframe'], exchange=exchange ) assert {} == load_data( datadir=Path(''), pairs=[], - timeframe=default_conf['ticker_interval'] + timeframe=default_conf['timeframe'] ) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index f5b3b8909..4f5b3983a 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -117,7 +117,7 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo '--config', 'config.json', '--hyperopt', 'DefaultHyperOpt', '--datadir', '/foo/bar', - '--ticker-interval', '1m', + '--timeframe', '1m', '--timerange', ':100', '--enable-position-stacking', '--disable-max-market-positions', @@ -137,7 +137,7 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) assert 'timeframe' in config - assert log_has('Parameter -i/--ticker-interval detected ... Using timeframe: 1m ...', + assert log_has('Parameter -i/--timeframe detected ... Using timeframe: 1m ...', caplog) assert 'position_stacking' in config diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index e5539099b..59b4d5902 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -54,12 +54,12 @@ def test_returns_latest_signal(mocker, default_conf, ohlcv_history): def test_get_signal_empty(default_conf, mocker, caplog): - assert (False, False) == _STRATEGY.get_signal('foo', default_conf['ticker_interval'], + assert (False, False) == _STRATEGY.get_signal('foo', default_conf['timeframe'], DataFrame()) assert log_has('Empty candle (OHLCV) data for pair foo', caplog) caplog.clear() - assert (False, False) == _STRATEGY.get_signal('bar', default_conf['ticker_interval'], + assert (False, False) == _STRATEGY.get_signal('bar', default_conf['timeframe'], []) assert log_has('Empty candle (OHLCV) data for pair bar', caplog) @@ -70,7 +70,7 @@ def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ohlcv_his _STRATEGY, '_analyze_ticker_internal', side_effect=ValueError('xyz') ) - assert (False, False) == _STRATEGY.get_signal('foo', default_conf['ticker_interval'], + assert (False, False) == _STRATEGY.get_signal('foo', default_conf['timeframe'], ohlcv_history) assert log_has_re(r'Strategy caused the following exception: xyz.*', caplog) @@ -83,7 +83,7 @@ def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ohlcv_history) ) mocker.patch.object(_STRATEGY, 'assert_df') - assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], + assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['timeframe'], ohlcv_history) assert log_has('Empty dataframe for pair xyz', caplog) @@ -104,7 +104,7 @@ def test_get_signal_old_dataframe(default_conf, mocker, caplog, ohlcv_history): return_value=mocked_history ) mocker.patch.object(_STRATEGY, 'assert_df') - assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], + assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['timeframe'], ohlcv_history) assert log_has('Outdated history for pair xyz. Last tick is 16 minutes old', caplog) @@ -124,7 +124,7 @@ def test_assert_df_raise(default_conf, mocker, caplog, ohlcv_history): _STRATEGY, 'assert_df', side_effect=StrategyError('Dataframe returned...') ) - assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['ticker_interval'], + assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['timeframe'], ohlcv_history) assert log_has('Unable to analyze candle (OHLCV) data for pair xyz: Dataframe returned...', caplog) diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 13ca68bf0..5cb59cad0 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -106,7 +106,7 @@ def test_strategy(result, default_conf): assert default_conf['stoploss'] == -0.10 assert strategy.ticker_interval == '5m' - assert default_conf['ticker_interval'] == '5m' + assert default_conf['timeframe'] == '5m' df_indicators = strategy.advise_indicators(result, metadata=metadata) assert 'adx' in df_indicators @@ -176,19 +176,19 @@ def test_strategy_override_trailing_stop_positive(caplog, default_conf): caplog) -def test_strategy_override_ticker_interval(caplog, default_conf): +def test_strategy_override_timeframe(caplog, default_conf): caplog.set_level(logging.INFO) default_conf.update({ 'strategy': 'DefaultStrategy', - 'ticker_interval': 60, + 'timeframe': 60, 'stake_currency': 'ETH' }) strategy = StrategyResolver.load_strategy(default_conf) assert strategy.ticker_interval == 60 assert strategy.stake_currency == 'ETH' - assert log_has("Override strategy 'ticker_interval' with value in config file: 60.", + assert log_has("Override strategy 'timeframe' with value in config file: 60.", caplog) diff --git a/tests/test_arguments.py b/tests/test_arguments.py index 0052a61d0..457683598 100644 --- a/tests/test_arguments.py +++ b/tests/test_arguments.py @@ -131,7 +131,7 @@ def test_parse_args_backtesting_custom() -> None: assert call_args["verbosity"] == 0 assert call_args["command"] == 'backtesting' assert call_args["func"] is not None - assert call_args["ticker_interval"] == '1m' + assert call_args["timeframe"] == '1m' assert type(call_args["strategy_list"]) is list assert len(call_args["strategy_list"]) == 2 diff --git a/tests/test_configuration.py b/tests/test_configuration.py index edcbe4516..05074c258 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -87,7 +87,7 @@ def test_load_config_file_error_range(default_conf, mocker, caplog) -> None: assert isinstance(x, str) assert (x == '{"max_open_trades": 1, "stake_currency": "BTC", ' '"stake_amount": .001, "fiat_display_currency": "USD", ' - '"ticker_interval": "5m", "dry_run": true, ') + '"timeframe": "5m", "dry_run": true, ') def test__args_to_config(caplog): diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5e951b585..442917bb6 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -924,7 +924,7 @@ def test_process_informative_pairs_added(default_conf, ticker, mocker) -> None: assert refresh_mock.call_count == 1 assert ("BTC/ETH", "1m") in refresh_mock.call_args[0][0] assert ("ETH/USDT", "1h") in refresh_mock.call_args[0][0] - assert ("ETH/BTC", default_conf["ticker_interval"]) in refresh_mock.call_args[0][0] + assert ("ETH/BTC", default_conf["timeframe"]) in refresh_mock.call_args[0][0] @pytest.mark.parametrize("side,ask,bid,last,last_ab,expected", [ diff --git a/tests/test_main.py b/tests/test_main.py index 11d0ede3a..5700df1ae 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -35,12 +35,12 @@ def test_parse_args_backtesting(mocker) -> None: main(['backtesting']) assert backtesting_mock.call_count == 1 call_args = backtesting_mock.call_args[0][0] - assert call_args["config"] == ['config.json'] - assert call_args["verbosity"] == 0 - assert call_args["command"] == 'backtesting' - assert call_args["func"] is not None - assert callable(call_args["func"]) - assert call_args["ticker_interval"] is None + assert call_args['config'] == ['config.json'] + assert call_args['verbosity'] == 0 + assert call_args['command'] == 'backtesting' + assert call_args['func'] is not None + assert callable(call_args['func']) + assert call_args['timeframe'] is None def test_main_start_hyperopt(mocker) -> None: diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 3b1041fd8..c15936cf6 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -772,6 +772,7 @@ def test_to_json(default_conf, fee): 'max_rate': None, 'strategy': None, 'ticker_interval': None, + 'timeframe': None, 'exchange': 'bittrex', } @@ -829,6 +830,7 @@ def test_to_json(default_conf, fee): 'sell_order_status': None, 'strategy': None, 'ticker_interval': None, + 'timeframe': None, 'exchange': 'bittrex', } diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 5bb113784..af872d0c1 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -47,7 +47,7 @@ def generate_empty_figure(): def test_init_plotscript(default_conf, mocker, testdatadir): default_conf['timerange'] = "20180110-20180112" default_conf['trade_source'] = "file" - default_conf['ticker_interval'] = "5m" + default_conf['timeframe'] = "5m" default_conf["datadir"] = testdatadir default_conf['exportfilename'] = testdatadir / "backtest-result_test.json" ret = init_plotscript(default_conf) diff --git a/tests/testdata/backtest-result_test copy.json b/tests/testdata/backtest-result_test copy.json new file mode 100644 index 000000000..0395830d4 --- /dev/null +++ b/tests/testdata/backtest-result_test copy.json @@ -0,0 +1,7 @@ +{ + "ASDF": {, + "trades": [], + "metrics":[], + } +} +[["TRX/BTC",0.03990025,1515568500.0,1515568800.0,27,5,9.64e-05,0.00010074887218045112,false,"roi"],["ADA/BTC",0.03990025,1515568500.0,1515569400.0,27,15,4.756e-05,4.9705563909774425e-05,false,"roi"],["XLM/BTC",0.03990025,1515569100.0,1515569700.0,29,10,3.339e-05,3.489631578947368e-05,false,"roi"],["TRX/BTC",0.03990025,1515569100.0,1515570000.0,29,15,9.696e-05,0.00010133413533834584,false,"roi"],["ETH/BTC",-0.0,1515569700.0,1515573300.0,31,60,0.0943,0.09477268170426063,false,"roi"],["XMR/BTC",0.00997506,1515570000.0,1515571800.0,32,30,0.02719607,0.02760503345864661,false,"roi"],["ZEC/BTC",0.0,1515572100.0,1515578100.0,39,100,0.04634952,0.046581848421052625,false,"roi"],["NXT/BTC",-0.0,1515595500.0,1515599400.0,117,65,3.066e-05,3.081368421052631e-05,false,"roi"],["LTC/BTC",0.0,1515602100.0,1515604500.0,139,40,0.0168999,0.016984611278195488,false,"roi"],["ETH/BTC",-0.0,1515602400.0,1515604800.0,140,40,0.09132568,0.0917834528320802,false,"roi"],["ETH/BTC",-0.0,1515610200.0,1515613500.0,166,55,0.08898003,0.08942604518796991,false,"roi"],["ETH/BTC",0.0,1515622500.0,1515625200.0,207,45,0.08560008,0.08602915308270676,false,"roi"],["ETC/BTC",0.00997506,1515624600.0,1515626400.0,214,30,0.00249083,0.0025282860902255634,false,"roi"],["NXT/BTC",-0.0,1515626100.0,1515629700.0,219,60,3.022e-05,3.037147869674185e-05,false,"roi"],["ETC/BTC",0.01995012,1515627600.0,1515629100.0,224,25,0.002437,0.0024980776942355883,false,"roi"],["ZEC/BTC",0.00997506,1515628800.0,1515630900.0,228,35,0.04771803,0.04843559436090225,false,"roi"],["XLM/BTC",-0.10448878,1515642000.0,1515644700.0,272,45,3.651e-05,3.2859000000000005e-05,false,"stop_loss"],["ETH/BTC",0.00997506,1515642900.0,1515644700.0,275,30,0.08824105,0.08956798308270676,false,"roi"],["ETC/BTC",-0.0,1515643200.0,1515646200.0,276,50,0.00243,0.002442180451127819,false,"roi"],["ZEC/BTC",0.01995012,1515645000.0,1515646500.0,282,25,0.04545064,0.046589753784461146,false,"roi"],["XLM/BTC",0.01995012,1515645000.0,1515646200.0,282,20,3.372e-05,3.456511278195488e-05,false,"roi"],["XMR/BTC",0.01995012,1515646500.0,1515647700.0,287,20,0.02644,0.02710265664160401,false,"roi"],["ETH/BTC",-0.0,1515669600.0,1515672000.0,364,40,0.08812,0.08856170426065162,false,"roi"],["XMR/BTC",-0.0,1515670500.0,1515672900.0,367,40,0.02683577,0.026970285137844607,false,"roi"],["ADA/BTC",0.01995012,1515679200.0,1515680700.0,396,25,4.919e-05,5.04228320802005e-05,false,"roi"],["ETH/BTC",-0.0,1515698700.0,1515702900.0,461,70,0.08784896,0.08828930566416039,false,"roi"],["ADA/BTC",-0.0,1515710100.0,1515713400.0,499,55,5.105e-05,5.130588972431077e-05,false,"roi"],["XLM/BTC",0.00997506,1515711300.0,1515713100.0,503,30,3.96e-05,4.019548872180451e-05,false,"roi"],["NXT/BTC",-0.0,1515711300.0,1515713700.0,503,40,2.885e-05,2.899461152882205e-05,false,"roi"],["XMR/BTC",0.00997506,1515713400.0,1515715500.0,510,35,0.02645,0.026847744360902256,false,"roi"],["ZEC/BTC",-0.0,1515714900.0,1515719700.0,515,80,0.048,0.04824060150375939,false,"roi"],["XLM/BTC",0.01995012,1515791700.0,1515793200.0,771,25,4.692e-05,4.809593984962405e-05,false,"roi"],["ETC/BTC",-0.0,1515804900.0,1515824400.0,815,325,0.00256966,0.0025825405012531327,false,"roi"],["ADA/BTC",0.0,1515840900.0,1515843300.0,935,40,6.262e-05,6.293388471177944e-05,false,"roi"],["XLM/BTC",0.0,1515848700.0,1516025400.0,961,2945,4.73e-05,4.753709273182957e-05,false,"roi"],["ADA/BTC",-0.0,1515850200.0,1515854700.0,966,75,6.063e-05,6.0933909774436085e-05,false,"roi"],["TRX/BTC",-0.0,1515850800.0,1515886200.0,968,590,0.00011082,0.00011137548872180449,false,"roi"],["ADA/BTC",-0.0,1515856500.0,1515858900.0,987,40,5.93e-05,5.9597243107769415e-05,false,"roi"],["ZEC/BTC",-0.0,1515861000.0,1515863400.0,1002,40,0.04850003,0.04874313791979949,false,"roi"],["ETH/BTC",-0.0,1515881100.0,1515911100.0,1069,500,0.09825019,0.09874267215538847,false,"roi"],["ADA/BTC",0.0,1515889200.0,1515970500.0,1096,1355,6.018e-05,6.048165413533834e-05,false,"roi"],["ETH/BTC",-0.0,1515933900.0,1515936300.0,1245,40,0.09758999,0.0980791628822055,false,"roi"],["ETC/BTC",0.00997506,1515943800.0,1515945600.0,1278,30,0.00311,0.0031567669172932328,false,"roi"],["ETC/BTC",-0.0,1515962700.0,1515968100.0,1341,90,0.00312401,0.003139669197994987,false,"roi"],["LTC/BTC",0.0,1515972900.0,1515976200.0,1375,55,0.0174679,0.017555458395989976,false,"roi"],["DASH/BTC",-0.0,1515973500.0,1515975900.0,1377,40,0.07346846,0.07383672295739348,false,"roi"],["ETH/BTC",-0.0,1515983100.0,1515985500.0,1409,40,0.097994,0.09848519799498745,false,"roi"],["ETH/BTC",-0.0,1516000800.0,1516003200.0,1468,40,0.09659,0.09707416040100249,false,"roi"],["TRX/BTC",0.00997506,1516004400.0,1516006500.0,1480,35,9.987e-05,0.00010137180451127818,false,"roi"],["ETH/BTC",0.0,1516018200.0,1516071000.0,1526,880,0.0948969,0.09537257368421052,false,"roi"],["DASH/BTC",-0.0,1516025400.0,1516038000.0,1550,210,0.071,0.07135588972431077,false,"roi"],["ZEC/BTC",-0.0,1516026600.0,1516029000.0,1554,40,0.04600501,0.046235611553884705,false,"roi"],["TRX/BTC",-0.0,1516039800.0,1516044300.0,1598,75,9.438e-05,9.485308270676691e-05,false,"roi"],["XMR/BTC",-0.0,1516041300.0,1516043700.0,1603,40,0.03040001,0.030552391002506264,false,"roi"],["ADA/BTC",-0.10448878,1516047900.0,1516091100.0,1625,720,5.837e-05,5.2533e-05,false,"stop_loss"],["ZEC/BTC",-0.0,1516048800.0,1516053600.0,1628,80,0.046036,0.04626675689223057,false,"roi"],["ETC/BTC",-0.0,1516062600.0,1516065000.0,1674,40,0.0028685,0.0028828784461152877,false,"roi"],["DASH/BTC",0.0,1516065300.0,1516070100.0,1683,80,0.06731755,0.0676549813283208,false,"roi"],["ETH/BTC",0.0,1516088700.0,1516092000.0,1761,55,0.09217614,0.09263817578947368,false,"roi"],["LTC/BTC",0.01995012,1516091700.0,1516092900.0,1771,20,0.0165,0.016913533834586467,false,"roi"],["TRX/BTC",0.03990025,1516091700.0,1516092000.0,1771,5,7.953e-05,8.311781954887218e-05,false,"roi"],["ZEC/BTC",-0.0,1516092300.0,1516096200.0,1773,65,0.045202,0.04542857644110275,false,"roi"],["ADA/BTC",0.00997506,1516094100.0,1516095900.0,1779,30,5.248e-05,5.326917293233082e-05,false,"roi"],["XMR/BTC",0.0,1516094100.0,1516096500.0,1779,40,0.02892318,0.02906815834586466,false,"roi"],["ADA/BTC",0.01995012,1516096200.0,1516097400.0,1786,20,5.158e-05,5.287273182957392e-05,false,"roi"],["ZEC/BTC",0.00997506,1516097100.0,1516099200.0,1789,35,0.04357584,0.044231115789473675,false,"roi"],["XMR/BTC",0.00997506,1516097100.0,1516098900.0,1789,30,0.02828232,0.02870761804511278,false,"roi"],["ADA/BTC",0.00997506,1516110300.0,1516112400.0,1833,35,5.362e-05,5.4426315789473676e-05,false,"roi"],["ADA/BTC",-0.0,1516123800.0,1516127100.0,1878,55,5.302e-05,5.328576441102756e-05,false,"roi"],["ETH/BTC",0.00997506,1516126500.0,1516128300.0,1887,30,0.09129999,0.09267292218045112,false,"roi"],["XLM/BTC",0.01995012,1516126500.0,1516127700.0,1887,20,3.808e-05,3.903438596491228e-05,false,"roi"],["XMR/BTC",0.00997506,1516129200.0,1516131000.0,1896,30,0.02811012,0.028532828571428567,false,"roi"],["ETC/BTC",-0.10448878,1516137900.0,1516141500.0,1925,60,0.00258379,0.002325411,false,"stop_loss"],["NXT/BTC",-0.10448878,1516137900.0,1516142700.0,1925,80,2.559e-05,2.3031e-05,false,"stop_loss"],["TRX/BTC",-0.10448878,1516138500.0,1516141500.0,1927,50,7.62e-05,6.858e-05,false,"stop_loss"],["LTC/BTC",0.03990025,1516141800.0,1516142400.0,1938,10,0.0151,0.015781203007518795,false,"roi"],["ETC/BTC",0.03990025,1516141800.0,1516142100.0,1938,5,0.00229844,0.002402129022556391,false,"roi"],["ETC/BTC",0.03990025,1516142400.0,1516142700.0,1940,5,0.00235676,0.00246308,false,"roi"],["DASH/BTC",0.01995012,1516142700.0,1516143900.0,1941,20,0.0630692,0.06464988170426066,false,"roi"],["NXT/BTC",0.03990025,1516143000.0,1516143300.0,1942,5,2.2e-05,2.2992481203007514e-05,false,"roi"],["ADA/BTC",0.00997506,1516159800.0,1516161600.0,1998,30,4.974e-05,5.048796992481203e-05,false,"roi"],["TRX/BTC",0.01995012,1516161300.0,1516162500.0,2003,20,7.108e-05,7.28614536340852e-05,false,"roi"],["ZEC/BTC",-0.0,1516181700.0,1516184100.0,2071,40,0.04327,0.04348689223057644,false,"roi"],["ADA/BTC",-0.0,1516184400.0,1516208400.0,2080,400,4.997e-05,5.022047619047618e-05,false,"roi"],["DASH/BTC",-0.0,1516185000.0,1516188300.0,2082,55,0.06836818,0.06871087764411027,false,"roi"],["XLM/BTC",-0.0,1516185000.0,1516187400.0,2082,40,3.63e-05,3.648195488721804e-05,false,"roi"],["XMR/BTC",-0.0,1516192200.0,1516226700.0,2106,575,0.0281,0.02824085213032581,false,"roi"],["ETH/BTC",-0.0,1516192500.0,1516208100.0,2107,260,0.08651001,0.08694364413533832,false,"roi"],["ADA/BTC",-0.0,1516251600.0,1516254900.0,2304,55,5.633e-05,5.6612355889724306e-05,false,"roi"],["DASH/BTC",0.00997506,1516252800.0,1516254900.0,2308,35,0.06988494,0.07093584135338346,false,"roi"],["ADA/BTC",-0.0,1516260900.0,1516263300.0,2335,40,5.545e-05,5.572794486215538e-05,false,"roi"],["LTC/BTC",-0.0,1516266000.0,1516268400.0,2352,40,0.01633527,0.016417151052631574,false,"roi"],["ETC/BTC",-0.0,1516293600.0,1516296000.0,2444,40,0.00269734,0.0027108605012531326,false,"roi"],["XLM/BTC",0.01995012,1516298700.0,1516300200.0,2461,25,4.475e-05,4.587155388471177e-05,false,"roi"],["NXT/BTC",0.00997506,1516299900.0,1516301700.0,2465,30,2.79e-05,2.8319548872180444e-05,false,"roi"],["ZEC/BTC",0.0,1516306200.0,1516308600.0,2486,40,0.04439326,0.04461578260651629,false,"roi"],["XLM/BTC",0.0,1516311000.0,1516322100.0,2502,185,4.49e-05,4.51250626566416e-05,false,"roi"],["XMR/BTC",-0.0,1516312500.0,1516338300.0,2507,430,0.02855,0.028693107769423555,false,"roi"],["ADA/BTC",0.0,1516313400.0,1516315800.0,2510,40,5.796e-05,5.8250526315789473e-05,false,"roi"],["ZEC/BTC",0.0,1516319400.0,1516321800.0,2530,40,0.04340323,0.04362079005012531,false,"roi"],["ZEC/BTC",0.0,1516380300.0,1516383300.0,2733,50,0.04454455,0.04476783095238095,false,"roi"],["ADA/BTC",-0.0,1516382100.0,1516391700.0,2739,160,5.62e-05,5.648170426065162e-05,false,"roi"],["XLM/BTC",-0.0,1516382400.0,1516392900.0,2740,175,4.339e-05,4.360749373433584e-05,false,"roi"],["TRX/BTC",0.0,1516423500.0,1516469700.0,2877,770,0.0001009,0.00010140576441102757,false,"roi"],["ETC/BTC",-0.0,1516423800.0,1516461300.0,2878,625,0.00270505,0.002718609147869674,false,"roi"],["XMR/BTC",-0.0,1516423800.0,1516431600.0,2878,130,0.03000002,0.030150396040100245,false,"roi"],["ADA/BTC",-0.0,1516438800.0,1516441200.0,2928,40,5.46e-05,5.4873684210526304e-05,false,"roi"],["XMR/BTC",-0.10448878,1516472700.0,1516852200.0,3041,6325,0.03082222,0.027739998000000002,false,"stop_loss"],["ETH/BTC",-0.0,1516487100.0,1516490100.0,3089,50,0.08969999,0.09014961401002504,false,"roi"],["LTC/BTC",0.0,1516503000.0,1516545000.0,3142,700,0.01632501,0.01640683962406015,false,"roi"],["DASH/BTC",-0.0,1516530000.0,1516532400.0,3232,40,0.070538,0.07089157393483708,false,"roi"],["ADA/BTC",-0.0,1516549800.0,1516560300.0,3298,175,5.301e-05,5.3275714285714276e-05,false,"roi"],["XLM/BTC",0.0,1516551600.0,1516554000.0,3304,40,3.955e-05,3.9748245614035085e-05,false,"roi"],["ETC/BTC",0.00997506,1516569300.0,1516571100.0,3363,30,0.00258505,0.002623922932330827,false,"roi"],["XLM/BTC",-0.0,1516569300.0,1516571700.0,3363,40,3.903e-05,3.922563909774435e-05,false,"roi"],["ADA/BTC",-0.0,1516581300.0,1516617300.0,3403,600,5.236e-05,5.262245614035087e-05,false,"roi"],["TRX/BTC",0.0,1516584600.0,1516587000.0,3414,40,9.028e-05,9.073253132832079e-05,false,"roi"],["ETC/BTC",-0.0,1516623900.0,1516631700.0,3545,130,0.002687,0.002700468671679198,false,"roi"],["XLM/BTC",-0.0,1516626900.0,1516629300.0,3555,40,4.168e-05,4.1888922305764405e-05,false,"roi"],["TRX/BTC",0.00997506,1516629600.0,1516631400.0,3564,30,8.821e-05,8.953646616541353e-05,false,"roi"],["ADA/BTC",-0.0,1516636500.0,1516639200.0,3587,45,5.172e-05,5.1979248120300745e-05,false,"roi"],["NXT/BTC",0.01995012,1516637100.0,1516638300.0,3589,20,3.026e-05,3.101839598997494e-05,false,"roi"],["DASH/BTC",0.0,1516650600.0,1516666200.0,3634,260,0.07064,0.07099408521303258,false,"roi"],["LTC/BTC",0.0,1516656300.0,1516658700.0,3653,40,0.01644483,0.01652726022556391,false,"roi"],["XLM/BTC",0.00997506,1516665900.0,1516667700.0,3685,30,4.331e-05,4.3961278195488714e-05,false,"roi"],["NXT/BTC",0.01995012,1516672200.0,1516673700.0,3706,25,3.2e-05,3.2802005012531326e-05,false,"roi"],["ETH/BTC",0.0,1516681500.0,1516684500.0,3737,50,0.09167706,0.09213659413533835,false,"roi"],["DASH/BTC",0.0,1516692900.0,1516698000.0,3775,85,0.0692498,0.06959691679197995,false,"roi"],["NXT/BTC",0.0,1516704600.0,1516712700.0,3814,135,3.182e-05,3.197949874686716e-05,false,"roi"],["ZEC/BTC",-0.0,1516705500.0,1516723500.0,3817,300,0.04088,0.04108491228070175,false,"roi"],["ADA/BTC",-0.0,1516719300.0,1516721700.0,3863,40,5.15e-05,5.175814536340851e-05,false,"roi"],["ETH/BTC",0.0,1516725300.0,1516752300.0,3883,450,0.09071698,0.09117170170426064,false,"roi"],["NXT/BTC",-0.0,1516728300.0,1516733100.0,3893,80,3.128e-05,3.1436791979949865e-05,false,"roi"],["TRX/BTC",-0.0,1516738500.0,1516744800.0,3927,105,9.555e-05,9.602894736842104e-05,false,"roi"],["ZEC/BTC",-0.0,1516746600.0,1516749000.0,3954,40,0.04080001,0.041004521328320796,false,"roi"],["ADA/BTC",-0.0,1516751400.0,1516764900.0,3970,225,5.163e-05,5.1888796992481196e-05,false,"roi"],["ZEC/BTC",0.0,1516753200.0,1516758600.0,3976,90,0.04040781,0.04061035541353383,false,"roi"],["ADA/BTC",-0.0,1516776300.0,1516778700.0,4053,40,5.132e-05,5.157724310776942e-05,false,"roi"],["ADA/BTC",0.03990025,1516803300.0,1516803900.0,4143,10,5.198e-05,5.432496240601503e-05,false,"roi"],["NXT/BTC",-0.0,1516805400.0,1516811700.0,4150,105,3.054e-05,3.069308270676692e-05,false,"roi"],["TRX/BTC",0.0,1516806600.0,1516810500.0,4154,65,9.263e-05,9.309431077694235e-05,false,"roi"],["ADA/BTC",-0.0,1516833600.0,1516836300.0,4244,45,5.514e-05,5.5416390977443596e-05,false,"roi"],["XLM/BTC",0.0,1516841400.0,1516843800.0,4270,40,4.921e-05,4.9456666666666664e-05,false,"roi"],["ETC/BTC",0.0,1516868100.0,1516882500.0,4359,240,0.0026,0.002613032581453634,false,"roi"],["XMR/BTC",-0.0,1516875900.0,1516896900.0,4385,350,0.02799871,0.028139054411027563,false,"roi"],["ZEC/BTC",-0.0,1516878000.0,1516880700.0,4392,45,0.04078902,0.0409934762406015,false,"roi"],["NXT/BTC",-0.0,1516885500.0,1516887900.0,4417,40,2.89e-05,2.904486215538847e-05,false,"roi"],["ZEC/BTC",-0.0,1516886400.0,1516889100.0,4420,45,0.041103,0.041309030075187964,false,"roi"],["XLM/BTC",0.00997506,1516895100.0,1516896900.0,4449,30,5.428e-05,5.5096240601503756e-05,false,"roi"],["XLM/BTC",-0.0,1516902300.0,1516922100.0,4473,330,5.414e-05,5.441137844611528e-05,false,"roi"],["ZEC/BTC",-0.0,1516914900.0,1516917300.0,4515,40,0.04140777,0.0416153277443609,false,"roi"],["ETC/BTC",0.0,1516932300.0,1516934700.0,4573,40,0.00254309,0.002555837318295739,false,"roi"],["ADA/BTC",-0.0,1516935300.0,1516979400.0,4583,735,5.607e-05,5.6351052631578935e-05,false,"roi"],["ETC/BTC",0.0,1516947000.0,1516958700.0,4622,195,0.00253806,0.0025507821052631577,false,"roi"],["ZEC/BTC",-0.0,1516951500.0,1516960500.0,4637,150,0.0415,0.04170802005012531,false,"roi"],["XLM/BTC",0.00997506,1516960500.0,1516962300.0,4667,30,5.321e-05,5.401015037593984e-05,false,"roi"],["XMR/BTC",-0.0,1516982700.0,1516985100.0,4741,40,0.02772046,0.02785940967418546,false,"roi"],["ETH/BTC",0.0,1517009700.0,1517012100.0,4831,40,0.09461341,0.09508766268170425,false,"roi"],["XLM/BTC",-0.0,1517013300.0,1517016600.0,4843,55,5.615e-05,5.643145363408521e-05,false,"roi"],["ADA/BTC",-0.07877175,1517013900.0,1517287500.0,4845,4560,5.556e-05,5.144e-05,true,"force_sell"],["DASH/BTC",-0.0,1517020200.0,1517052300.0,4866,535,0.06900001,0.06934587471177944,false,"roi"],["ETH/BTC",-0.0,1517034300.0,1517036700.0,4913,40,0.09449985,0.09497353345864659,false,"roi"],["ZEC/BTC",-0.04815133,1517046000.0,1517287200.0,4952,4020,0.0410697,0.03928809,true,"force_sell"],["XMR/BTC",-0.0,1517053500.0,1517056200.0,4977,45,0.0285,0.02864285714285714,false,"roi"],["XMR/BTC",-0.0,1517056500.0,1517066700.0,4987,170,0.02866372,0.02880739779448621,false,"roi"],["ETH/BTC",-0.0,1517068200.0,1517071800.0,5026,60,0.095381,0.09585910025062655,false,"roi"],["DASH/BTC",-0.0,1517072700.0,1517075100.0,5041,40,0.06759092,0.06792972160401002,false,"roi"],["ETC/BTC",-0.0,1517096400.0,1517101500.0,5120,85,0.00258501,0.002597967443609022,false,"roi"],["DASH/BTC",-0.0,1517106300.0,1517127000.0,5153,345,0.06698502,0.0673207845112782,false,"roi"],["DASH/BTC",-0.0,1517135100.0,1517157000.0,5249,365,0.0677177,0.06805713709273183,false,"roi"],["XLM/BTC",0.0,1517171700.0,1517175300.0,5371,60,5.215e-05,5.2411403508771925e-05,false,"roi"],["ETC/BTC",0.00997506,1517176800.0,1517178600.0,5388,30,0.00273809,0.002779264285714285,false,"roi"],["ETC/BTC",0.00997506,1517184000.0,1517185800.0,5412,30,0.00274632,0.002787618045112782,false,"roi"],["LTC/BTC",0.0,1517192100.0,1517194800.0,5439,45,0.01622478,0.016306107218045113,false,"roi"],["DASH/BTC",-0.0,1517195100.0,1517197500.0,5449,40,0.069,0.06934586466165413,false,"roi"],["TRX/BTC",-0.0,1517203200.0,1517208900.0,5476,95,8.755e-05,8.798884711779448e-05,false,"roi"],["DASH/BTC",-0.0,1517209200.0,1517253900.0,5496,745,0.06825763,0.06859977350877192,false,"roi"],["DASH/BTC",-0.0,1517255100.0,1517257500.0,5649,40,0.06713892,0.06747545593984962,false,"roi"],["TRX/BTC",-0.0199116,1517268600.0,1517287500.0,5694,315,8.934e-05,8.8e-05,true,"force_sell"]] From 18913db99267a699a89b9fdddc6509980cff6775 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 20:47:36 +0200 Subject: [PATCH 2502/3421] Replace ticker_interval with timeframe in sample configs --- config.json.example | 2 +- config_binance.json.example | 2 +- config_full.json.example | 2 +- config_kraken.json.example | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config.json.example b/config.json.example index d37a6b336..545fcf1d4 100644 --- a/config.json.example +++ b/config.json.example @@ -4,7 +4,7 @@ "stake_amount": 0.05, "tradable_balance_ratio": 0.99, "fiat_display_currency": "USD", - "ticker_interval": "5m", + "timeframe": "5m", "dry_run": false, "cancel_open_orders_on_exit": false, "trailing_stop": false, diff --git a/config_binance.json.example b/config_binance.json.example index 5d7b6b656..98dada647 100644 --- a/config_binance.json.example +++ b/config_binance.json.example @@ -4,7 +4,7 @@ "stake_amount": 0.05, "tradable_balance_ratio": 0.99, "fiat_display_currency": "USD", - "ticker_interval": "5m", + "timeframe": "5m", "dry_run": true, "cancel_open_orders_on_exit": false, "trailing_stop": false, diff --git a/config_full.json.example b/config_full.json.example index 481742817..66b0d6a0d 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -9,7 +9,7 @@ "last_stake_amount_min_ratio": 0.5, "dry_run": false, "cancel_open_orders_on_exit": false, - "ticker_interval": "5m", + "timeframe": "5m", "trailing_stop": false, "trailing_stop_positive": 0.005, "trailing_stop_positive_offset": 0.0051, diff --git a/config_kraken.json.example b/config_kraken.json.example index 54fbf4a00..602e2ccf3 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -4,7 +4,7 @@ "stake_amount": 10, "tradable_balance_ratio": 0.99, "fiat_display_currency": "EUR", - "ticker_interval": "5m", + "timeframe": "5m", "dry_run": true, "cancel_open_orders_on_exit": false, "trailing_stop": false, From cadc50ce9b7dbedf50478cbd9431e5bdffa4ac8c Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 20:49:40 +0200 Subject: [PATCH 2503/3421] Replace more occurances of ticker_interval with timeframe --- freqtrade/commands/pairlist_commands.py | 2 +- freqtrade/data/converter.py | 4 ++-- freqtrade/data/dataprovider.py | 4 ++-- freqtrade/freqtradebot.py | 6 +++--- freqtrade/optimize/backtesting.py | 6 +++--- freqtrade/optimize/hyperopt_interface.py | 8 +++++--- freqtrade/pairlist/pairlistmanager.py | 4 ++-- freqtrade/plot/plotting.py | 6 +++--- freqtrade/resolvers/hyperopt_resolver.py | 5 +++-- freqtrade/resolvers/strategy_resolver.py | 2 +- freqtrade/strategy/interface.py | 2 +- freqtrade/templates/base_strategy.py.j2 | 4 ++-- tests/strategy/test_strategy.py | 2 +- 13 files changed, 29 insertions(+), 26 deletions(-) diff --git a/freqtrade/commands/pairlist_commands.py b/freqtrade/commands/pairlist_commands.py index bf0b217a5..dffe0c82e 100644 --- a/freqtrade/commands/pairlist_commands.py +++ b/freqtrade/commands/pairlist_commands.py @@ -25,7 +25,7 @@ def start_test_pairlist(args: Dict[str, Any]) -> None: results = {} for curr in quote_currencies: config['stake_currency'] = curr - # Do not use ticker_interval set in the config + # Do not use timeframe set in the config pairlists = PairListManager(exchange, config) pairlists.refresh_pairlist() results[curr] = pairlists.whitelist diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 0ef7955a4..cfc7bc903 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -236,12 +236,12 @@ def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to: from freqtrade.data.history.idatahandler import get_datahandler src = get_datahandler(config['datadir'], convert_from) trg = get_datahandler(config['datadir'], convert_to) - timeframes = config.get('timeframes', [config.get('ticker_interval')]) + timeframes = config.get('timeframes', [config.get('timeframe')]) logger.info(f"Converting candle (OHLCV) for timeframe {timeframes}") if 'pairs' not in config: config['pairs'] = [] - # Check timeframes or fall back to ticker_interval. + # Check timeframes or fall back to timeframe. for timeframe in timeframes: config['pairs'].extend(src.ohlcv_get_pairs(config['datadir'], timeframe)) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index a01344364..058ca42da 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -55,7 +55,7 @@ class DataProvider: Use False only for read-only operations (where the dataframe is not modified) """ if self.runmode in (RunMode.DRY_RUN, RunMode.LIVE): - return self._exchange.klines((pair, timeframe or self._config['ticker_interval']), + return self._exchange.klines((pair, timeframe or self._config['timeframe']), copy=copy) else: return DataFrame() @@ -67,7 +67,7 @@ class DataProvider: :param timeframe: timeframe to get data for """ return load_pair_history(pair=pair, - timeframe=timeframe or self._config['ticker_interval'], + timeframe=timeframe or self._config['timeframe'], datadir=self._config['datadir'] ) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d4afa1d60..627971c31 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -547,7 +547,7 @@ class FreqtradeBot: exchange=self.exchange.id, open_order_id=order_id, strategy=self.strategy.get_strategy_name(), - ticker_interval=timeframe_to_minutes(self.config['ticker_interval']) + ticker_interval=timeframe_to_minutes(self.config['timeframe']) ) # Update fees if order is closed @@ -780,7 +780,7 @@ class FreqtradeBot: self.update_trade_state(trade, stoploss_order, sl_order=True) # Lock pair for one candle to prevent immediate rebuys self.strategy.lock_pair(trade.pair, - timeframe_to_next_date(self.config['ticker_interval'])) + timeframe_to_next_date(self.config['timeframe'])) self._notify_sell(trade, "stoploss") return True @@ -1090,7 +1090,7 @@ class FreqtradeBot: Trade.session.flush() # Lock pair for one candle to prevent immediate rebuys - self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['ticker_interval'])) + self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['timeframe'])) self._notify_sell(trade, order_type) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 3bf211d99..9a48338f1 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -94,10 +94,10 @@ class Backtesting: self.strategylist.append(StrategyResolver.load_strategy(self.config)) validate_config_consistency(self.config) - if "ticker_interval" not in self.config: + if "timeframe" not in self.config: raise OperationalException("Timeframe (ticker interval) needs to be set in either " - "configuration or as cli argument `--ticker-interval 5m`") - self.timeframe = str(self.config.get('ticker_interval')) + "configuration or as cli argument `--timeframe 5m`") + self.timeframe = str(self.config.get('timeframe')) self.timeframe_min = timeframe_to_minutes(self.timeframe) # Get maximum required startup period diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index b3cedef2c..20209d8a9 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -37,7 +37,8 @@ class IHyperOpt(ABC): self.config = config # Assign ticker_interval to be used in hyperopt - IHyperOpt.ticker_interval = str(config['ticker_interval']) + IHyperOpt.ticker_interval = str(config['timeframe']) # DEPRECTED + IHyperOpt.timeframe = str(config['timeframe']) @staticmethod def buy_strategy_generator(params: Dict[str, Any]) -> Callable: @@ -218,9 +219,10 @@ class IHyperOpt(ABC): # Why do I still need such shamanic mantras in modern python? def __getstate__(self): state = self.__dict__.copy() - state['ticker_interval'] = self.ticker_interval + state['timeframe'] = self.timeframe return state def __setstate__(self, state): self.__dict__.update(state) - IHyperOpt.ticker_interval = state['ticker_interval'] + IHyperOpt.ticker_interval = state['timeframe'] + IHyperOpt.timeframe = state['timeframe'] diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index f532f2cd0..81e52768e 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -131,6 +131,6 @@ class PairListManager(): def create_pair_list(self, pairs: List[str], timeframe: str = None) -> ListPairsWithTimeframes: """ - Create list of pair tuples with (pair, ticker_interval) + Create list of pair tuples with (pair, timeframe) """ - return [(pair, timeframe or self._config['ticker_interval']) for pair in pairs] + return [(pair, timeframe or self._config['timeframe']) for pair in pairs] diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index f1d114e2b..f9e526967 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -45,7 +45,7 @@ def init_plotscript(config): data = load_data( datadir=config.get("datadir"), pairs=pairs, - timeframe=config.get('ticker_interval', '5m'), + timeframe=config.get('timeframe', '5m'), timerange=timerange, data_format=config.get('dataformat_ohlcv', 'json'), ) @@ -487,7 +487,7 @@ def load_and_plot_trades(config: Dict[str, Any]): plot_config=strategy.plot_config if hasattr(strategy, 'plot_config') else {} ) - store_plot_file(fig, filename=generate_plot_filename(pair, config['ticker_interval']), + store_plot_file(fig, filename=generate_plot_filename(pair, config['timeframe']), directory=config['user_data_dir'] / "plot") logger.info('End of plotting process. %s plots generated', pair_counter) @@ -515,6 +515,6 @@ def plot_profit(config: Dict[str, Any]) -> None: # Create an average close price of all the pairs that were involved. # this could be useful to gauge the overall market trend fig = generate_profit_graph(plot_elements["pairs"], plot_elements["ohlcv"], - trades, config.get('ticker_interval', '5m')) + trades, config.get('timeframe', '5m')) store_plot_file(fig, filename='freqtrade-profit-plot.html', directory=config['user_data_dir'] / "plot", auto_open=True) diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index ddf461252..633363134 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -77,8 +77,9 @@ class HyperOptLossResolver(IResolver): config, kwargs={}, extra_dir=config.get('hyperopt_path')) - # Assign ticker_interval to be used in hyperopt - hyperoptloss.__class__.ticker_interval = str(config['ticker_interval']) + # Assign timeframe to be used in hyperopt + hyperoptloss.__class__.ticker_interval = str(config['timeframe']) + hyperoptloss.__class__.timeframe = str(config['timeframe']) if not hasattr(hyperoptloss, 'hyperopt_loss_function'): raise OperationalException( diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index abd6a4195..99cf2d785 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -54,7 +54,7 @@ class StrategyResolver(IResolver): # Check if we need to override configuration # (Attribute name, default, subkey) attributes = [("minimal_roi", {"0": 10.0}, None), - ("ticker_interval", None, None), + ("timeframe", None, None), ("stoploss", None, None), ("trailing_stop", None, None), ("trailing_stop_positive", None, None), diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index ed2344a53..17c4aa5ca 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -62,7 +62,7 @@ class IStrategy(ABC): Attributes you can use: minimal_roi -> Dict: Minimal ROI designed for the strategy stoploss -> float: optimal stoploss designed for the strategy - ticker_interval -> str: value of the timeframe (ticker interval) to use with the strategy + timeframe -> str: value of the timeframe (ticker interval) to use with the strategy """ # Strategy interface version # Default to version 2 diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index c37164568..ce2c6d5c0 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -51,8 +51,8 @@ class {{ strategy }}(IStrategy): # trailing_stop_positive = 0.01 # trailing_stop_positive_offset = 0.0 # Disabled / not configured - # Optimal ticker interval for the strategy. - ticker_interval = '5m' + # Optimal timeframe for the strategy. + timeframe = '5m' # Run "populate_indicators()" only for new candle. process_only_new_candles = False diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 5cb59cad0..59ce8c5b8 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -186,7 +186,7 @@ def test_strategy_override_timeframe(caplog, default_conf): }) strategy = StrategyResolver.load_strategy(default_conf) - assert strategy.ticker_interval == 60 + assert strategy.timeframe == 60 assert strategy.stake_currency == 'ETH' assert log_has("Override strategy 'timeframe' with value in config file: 60.", caplog) From 388573800c673e1fe383fd83938c85c06fa49db2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 20:52:33 +0200 Subject: [PATCH 2504/3421] Update configuration messages --- freqtrade/configuration/configuration.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 7edd9bca1..139e42084 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -204,9 +204,9 @@ class Configuration: def _process_optimize_options(self, config: Dict[str, Any]) -> None: # This will override the strategy configuration - self._args_to_config(config, argname='ticker_interval', - logstring='Parameter -i/--ticker-interval detected ... ' - 'Using ticker_interval: {} ...') + self._args_to_config(config, argname='timeframe', + logstring='Parameter -i/--timeframe detected ... ' + 'Using timeframe: {} ...') self._args_to_config(config, argname='position_stacking', logstring='Parameter --enable-position-stacking detected ...') @@ -242,8 +242,8 @@ class Configuration: self._args_to_config(config, argname='strategy_list', logstring='Using strategy list of {} strategies', logfun=len) - self._args_to_config(config, argname='ticker_interval', - logstring='Overriding ticker interval with Command line argument') + self._args_to_config(config, argname='timeframe', + logstring='Overriding timeframe with Command line argument') self._args_to_config(config, argname='export', logstring='Parameter --export detected: {} ...') From 947903a4acac05fbda301e0dc90040488a772b28 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 09:36:04 +0200 Subject: [PATCH 2505/3421] Use timeframe from within strategy --- freqtrade/edge/edge_positioning.py | 4 ++-- freqtrade/freqtradebot.py | 8 ++++---- tests/edge/test_edge.py | 10 +++++----- tests/strategy/strats/default_strategy.py | 2 +- tests/strategy/test_default_strategy.py | 1 + tests/strategy/test_strategy.py | 1 + tests/test_configuration.py | 12 ++++++------ 7 files changed, 20 insertions(+), 18 deletions(-) diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index c19d4552a..dd4ea35bb 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -100,14 +100,14 @@ class Edge: datadir=self.config['datadir'], pairs=pairs, exchange=self.exchange, - timeframe=self.strategy.ticker_interval, + timeframe=self.strategy.timeframe, timerange=self._timerange, ) data = load_data( datadir=self.config['datadir'], pairs=pairs, - timeframe=self.strategy.ticker_interval, + timeframe=self.strategy.timeframe, timerange=self._timerange, startup_candles=self.strategy.startup_candle_count, data_format=self.config.get('dataformat_ohlcv', 'json'), diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 627971c31..c52fe18d1 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -421,8 +421,8 @@ class FreqtradeBot: # running get_signal on historical data fetched (buy, sell) = self.strategy.get_signal( - pair, self.strategy.ticker_interval, - self.dataprovider.ohlcv(pair, self.strategy.ticker_interval)) + pair, self.strategy.timeframe, + self.dataprovider.ohlcv(pair, self.strategy.timeframe)) if buy and not sell: stake_amount = self.get_trade_stake_amount(pair) @@ -696,8 +696,8 @@ class FreqtradeBot: if (config_ask_strategy.get('use_sell_signal', True) or config_ask_strategy.get('ignore_roi_if_buy_signal', False)): (buy, sell) = self.strategy.get_signal( - trade.pair, self.strategy.ticker_interval, - self.dataprovider.ohlcv(trade.pair, self.strategy.ticker_interval)) + trade.pair, self.strategy.timeframe, + self.dataprovider.ohlcv(trade.pair, self.strategy.timeframe)) if config_ask_strategy.get('use_order_book', False): # logger.debug('Order book %s',orderBook) diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index 163ceff4b..cf9cb6fe1 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -27,7 +27,7 @@ from tests.optimize import (BTContainer, BTrade, _build_backtest_dataframe, #################################################################### tests_start_time = arrow.get(2018, 10, 3) -ticker_interval_in_minute = 60 +timeframe_in_minute = 60 _ohlc = {'date': 0, 'buy': 1, 'open': 2, 'high': 3, 'low': 4, 'close': 5, 'sell': 6, 'volume': 7} # Helpers for this test file @@ -49,7 +49,7 @@ def _build_dataframe(buy_ohlc_sell_matrice): 'date': tests_start_time.shift( minutes=( ohlc[0] * - ticker_interval_in_minute)).timestamp * + timeframe_in_minute)).timestamp * 1000, 'buy': ohlc[1], 'open': ohlc[2], @@ -70,7 +70,7 @@ def _build_dataframe(buy_ohlc_sell_matrice): def _time_on_candle(number): return np.datetime64(tests_start_time.shift( - minutes=(number * ticker_interval_in_minute)).timestamp * 1000, 'ms') + minutes=(number * timeframe_in_minute)).timestamp * 1000, 'ms') # End helper functions @@ -262,7 +262,7 @@ def mocked_load_data(datadir, pairs=[], timeframe='0m', NEOBTC = [ [ - tests_start_time.shift(minutes=(x * ticker_interval_in_minute)).timestamp * 1000, + tests_start_time.shift(minutes=(x * timeframe_in_minute)).timestamp * 1000, math.sin(x * hz) / 1000 + base, math.sin(x * hz) / 1000 + base + 0.0001, math.sin(x * hz) / 1000 + base - 0.0001, @@ -274,7 +274,7 @@ def mocked_load_data(datadir, pairs=[], timeframe='0m', base = 0.002 LTCBTC = [ [ - tests_start_time.shift(minutes=(x * ticker_interval_in_minute)).timestamp * 1000, + tests_start_time.shift(minutes=(x * timeframe_in_minute)).timestamp * 1000, math.sin(x * hz) / 1000 + base, math.sin(x * hz) / 1000 + base + 0.0001, math.sin(x * hz) / 1000 + base - 0.0001, diff --git a/tests/strategy/strats/default_strategy.py b/tests/strategy/strats/default_strategy.py index 7ea55d3f9..98842ff7c 100644 --- a/tests/strategy/strats/default_strategy.py +++ b/tests/strategy/strats/default_strategy.py @@ -29,7 +29,7 @@ class DefaultStrategy(IStrategy): stoploss = -0.10 # Optimal ticker interval for the strategy - ticker_interval = '5m' + timeframe = '5m' # Optional order type mapping order_types = { diff --git a/tests/strategy/test_default_strategy.py b/tests/strategy/test_default_strategy.py index 0b8ea9f85..315f80440 100644 --- a/tests/strategy/test_default_strategy.py +++ b/tests/strategy/test_default_strategy.py @@ -19,6 +19,7 @@ def test_default_strategy(result): assert type(strategy.minimal_roi) is dict assert type(strategy.stoploss) is float assert type(strategy.ticker_interval) is str + assert type(strategy.timeframe) is str indicators = strategy.populate_indicators(result, metadata) assert type(indicators) is DataFrame assert type(strategy.populate_buy_trend(indicators, metadata)) is DataFrame diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 59ce8c5b8..1bb45f28c 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -105,6 +105,7 @@ def test_strategy(result, default_conf): assert strategy.stoploss == -0.10 assert default_conf['stoploss'] == -0.10 + assert strategy.timeframe == '5m' assert strategy.ticker_interval == '5m' assert default_conf['timeframe'] == '5m' diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 05074c258..8e79f4297 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -401,8 +401,8 @@ def test_setup_configuration_without_arguments(mocker, default_conf, caplog) -> assert 'datadir' in config assert 'user_data_dir' in config assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) - assert 'ticker_interval' in config - assert not log_has('Parameter -i/--ticker-interval detected ...', caplog) + assert 'timeframe' in config + assert not log_has('Parameter -i/--timeframe detected ...', caplog) assert 'position_stacking' not in config assert not log_has('Parameter --enable-position-stacking detected ...', caplog) @@ -448,8 +448,8 @@ def test_setup_configuration_with_arguments(mocker, default_conf, caplog) -> Non assert log_has('Using user-data directory: {} ...'.format(Path("/tmp/freqtrade")), caplog) assert 'user_data_dir' in config - assert 'ticker_interval' in config - assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', + assert 'timeframe' in config + assert log_has('Parameter -i/--timeframe detected ... Using timeframe: 1m ...', caplog) assert 'position_stacking' in config @@ -494,8 +494,8 @@ def test_setup_configuration_with_stratlist(mocker, default_conf, caplog) -> Non assert 'pair_whitelist' in config['exchange'] assert 'datadir' in config assert log_has('Using data directory: {} ...'.format(config['datadir']), caplog) - assert 'ticker_interval' in config - assert log_has('Parameter -i/--ticker-interval detected ... Using ticker_interval: 1m ...', + assert 'timeframe' in config + assert log_has('Parameter -i/--timeframe detected ... Using timeframe: 1m ...', caplog) assert 'strategy_list' in config From 3e895ae74aa3d754a0d8a2bc477c1c6da50b7baa Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 09:41:42 +0200 Subject: [PATCH 2506/3421] Some more replacements of ticker_interval --- freqtrade/optimize/hyperopt_loss_interface.py | 1 + freqtrade/persistence.py | 1 + tests/data/test_dataprovider.py | 2 +- tests/test_configuration.py | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/hyperopt_loss_interface.py b/freqtrade/optimize/hyperopt_loss_interface.py index 879a9f0e9..c2607a9a8 100644 --- a/freqtrade/optimize/hyperopt_loss_interface.py +++ b/freqtrade/optimize/hyperopt_loss_interface.py @@ -15,6 +15,7 @@ class IHyperOptLoss(ABC): Defines the custom loss function (`hyperopt_loss_function()` which is evaluated every epoch.) """ ticker_interval: str + timeframe: str @staticmethod @abstractmethod diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 111ccfe2a..363ce35ad 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -288,6 +288,7 @@ class Trade(_DECL_BASE): 'max_rate': self.max_rate, 'strategy': self.strategy, 'ticker_interval': self.ticker_interval, + 'timeframe': self.ticker_interval, 'open_order_id': self.open_order_id, 'exchange': self.exchange, } diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index 718060c5e..def3ad535 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -104,7 +104,7 @@ def test_refresh(mocker, default_conf, ohlcv_history): timeframe = default_conf["timeframe"] pairs = [("XRP/BTC", timeframe), ("UNITTEST/BTC", timeframe)] - pairs_non_trad = [("ETH/USDT", ticker_interval), ("BTC/TUSD", "1h")] + pairs_non_trad = [("ETH/USDT", timeframe), ("BTC/TUSD", "1h")] dp = DataProvider(default_conf, exchange) dp.refresh(pairs) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 8e79f4297..1ed97f728 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -87,7 +87,7 @@ def test_load_config_file_error_range(default_conf, mocker, caplog) -> None: assert isinstance(x, str) assert (x == '{"max_open_trades": 1, "stake_currency": "BTC", ' '"stake_amount": .001, "fiat_display_currency": "USD", ' - '"timeframe": "5m", "dry_run": true, ') + '"timeframe": "5m", "dry_run": true, "cance') def test__args_to_config(caplog): From 09fe3c6f5e1f9f0a42882782e3caac6607e34600 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 09:50:56 +0200 Subject: [PATCH 2507/3421] create compatibility code --- freqtrade/configuration/deprecated_settings.py | 6 ++++++ freqtrade/constants.py | 1 - freqtrade/resolvers/strategy_resolver.py | 11 +++++++++++ freqtrade/strategy/interface.py | 4 ++-- tests/strategy/test_default_strategy.py | 1 - 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index 3999ea422..2d5dba9ca 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -67,3 +67,9 @@ def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None: "'tradable_balance_ratio' and remove 'capital_available_percentage' " "from the edge configuration." ) + if 'ticker_interval' in config: + logger.warning( + "DEPRECATED: " + "Please use 'timeframe' instead of 'ticker_interval." + ) + config['timeframe'] = config['ticker_interval'] diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 511c2993d..3afb4b0f1 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -71,7 +71,6 @@ CONF_SCHEMA = { 'type': 'object', 'properties': { 'max_open_trades': {'type': ['integer', 'number'], 'minimum': -1}, - 'ticker_interval': {'type': 'string'}, 'timeframe': {'type': 'string'}, 'stake_currency': {'type': 'string'}, 'stake_amount': { diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 99cf2d785..26bce01ca 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -50,6 +50,14 @@ class StrategyResolver(IResolver): if 'ask_strategy' not in config: config['ask_strategy'] = {} + if hasattr(strategy, 'ticker_interval') and not hasattr(strategy, 'timeframe'): + # Assign ticker_interval to timeframe to keep compatibility + if 'timeframe' not in config: + logger.warning( + "DEPRECATED: Please migrate to using timeframe instead of ticker_interval." + ) + strategy.timeframe = strategy.ticker_interval + # Set attributes # Check if we need to override configuration # (Attribute name, default, subkey) @@ -80,6 +88,9 @@ class StrategyResolver(IResolver): StrategyResolver._override_attribute_helper(strategy, config, attribute, default) + # Assign deprecated variable - to not break users code relying on this. + strategy.ticker_interval = strategy.timeframe + # Loop this list again to have output combined for attribute, _, subkey in attributes: if subkey and attribute in config[subkey]: diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 17c4aa5ca..7bf750249 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -85,8 +85,8 @@ class IStrategy(ABC): trailing_stop_positive_offset: float = 0.0 trailing_only_offset_is_reached = False - # associated ticker interval - ticker_interval: str + # associated timeframe + timeframe: str # Optional order types order_types: Dict = { diff --git a/tests/strategy/test_default_strategy.py b/tests/strategy/test_default_strategy.py index 315f80440..df7e35197 100644 --- a/tests/strategy/test_default_strategy.py +++ b/tests/strategy/test_default_strategy.py @@ -18,7 +18,6 @@ def test_default_strategy(result): metadata = {'pair': 'ETH/BTC'} assert type(strategy.minimal_roi) is dict assert type(strategy.stoploss) is float - assert type(strategy.ticker_interval) is str assert type(strategy.timeframe) is str indicators = strategy.populate_indicators(result, metadata) assert type(indicators) is DataFrame From af0f29e6b7b6647ce8e651d35b4a558fee09b578 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 10:02:24 +0200 Subject: [PATCH 2508/3421] Update persistence to use timeframe --- docs/sql_cheatsheet.md | 2 +- freqtrade/freqtradebot.py | 2 +- freqtrade/persistence.py | 19 ++++++++++++------- tests/test_persistence.py | 7 ++++--- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/docs/sql_cheatsheet.md b/docs/sql_cheatsheet.md index 895a0536a..b261904d7 100644 --- a/docs/sql_cheatsheet.md +++ b/docs/sql_cheatsheet.md @@ -70,7 +70,7 @@ CREATE TABLE trades min_rate FLOAT, sell_reason VARCHAR, strategy VARCHAR, - ticker_interval INTEGER, + timeframe INTEGER, PRIMARY KEY (id), CHECK (is_open IN (0, 1)) ); diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c52fe18d1..a8483051e 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -547,7 +547,7 @@ class FreqtradeBot: exchange=self.exchange.id, open_order_id=order_id, strategy=self.strategy.get_strategy_name(), - ticker_interval=timeframe_to_minutes(self.config['timeframe']) + timeframe=timeframe_to_minutes(self.config['timeframe']) ) # Update fees if order is closed diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 363ce35ad..f0b97be1e 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -86,7 +86,7 @@ def check_migrate(engine) -> None: logger.debug(f'trying {table_back_name}') # Check for latest column - if not has_column(cols, 'sell_order_status'): + if not has_column(cols, 'timeframe'): logger.info(f'Running database migration - backup available as {table_back_name}') fee_open = get_column_def(cols, 'fee_open', 'fee') @@ -107,7 +107,12 @@ def check_migrate(engine) -> None: min_rate = get_column_def(cols, 'min_rate', 'null') sell_reason = get_column_def(cols, 'sell_reason', 'null') strategy = get_column_def(cols, 'strategy', 'null') - ticker_interval = get_column_def(cols, 'ticker_interval', 'null') + # If ticker-interval existed use that, else null. + if has_column(cols, 'ticker_interval'): + timeframe = get_column_def(cols, 'timeframe', 'ticker_interval') + else: + timeframe = get_column_def(cols, 'timeframe', 'null') + open_trade_price = get_column_def(cols, 'open_trade_price', f'amount * open_rate * (1 + {fee_open})') close_profit_abs = get_column_def( @@ -133,7 +138,7 @@ def check_migrate(engine) -> None: stop_loss, stop_loss_pct, initial_stop_loss, initial_stop_loss_pct, stoploss_order_id, stoploss_last_update, max_rate, min_rate, sell_reason, sell_order_status, strategy, - ticker_interval, open_trade_price, close_profit_abs + timeframe, open_trade_price, close_profit_abs ) select id, lower(exchange), case @@ -155,7 +160,7 @@ def check_migrate(engine) -> None: {stoploss_order_id} stoploss_order_id, {stoploss_last_update} stoploss_last_update, {max_rate} max_rate, {min_rate} min_rate, {sell_reason} sell_reason, {sell_order_status} sell_order_status, - {strategy} strategy, {ticker_interval} ticker_interval, + {strategy} strategy, {timeframe} timeframe, {open_trade_price} open_trade_price, {close_profit_abs} close_profit_abs from {table_back_name} """) @@ -232,7 +237,7 @@ class Trade(_DECL_BASE): sell_reason = Column(String, nullable=True) sell_order_status = Column(String, nullable=True) strategy = Column(String, nullable=True) - ticker_interval = Column(Integer, nullable=True) + timeframe = Column(Integer, nullable=True) def __init__(self, **kwargs): super().__init__(**kwargs) @@ -287,8 +292,8 @@ class Trade(_DECL_BASE): 'min_rate': self.min_rate, 'max_rate': self.max_rate, 'strategy': self.strategy, - 'ticker_interval': self.ticker_interval, - 'timeframe': self.ticker_interval, + 'ticker_interval': self.timeframe, + 'timeframe': self.timeframe, 'open_order_id': self.open_order_id, 'exchange': self.exchange, } diff --git a/tests/test_persistence.py b/tests/test_persistence.py index c15936cf6..bc5b315a1 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -469,6 +469,7 @@ def test_migrate_old(mocker, default_conf, fee): assert trade.fee_open_currency is None assert trade.fee_close_cost is None assert trade.fee_close_currency is None + assert trade.timeframe is None trade = Trade.query.filter(Trade.id == 2).first() assert trade.close_rate is not None @@ -512,11 +513,11 @@ def test_migrate_new(mocker, default_conf, fee, caplog): );""" insert_table_old = """INSERT INTO trades (exchange, pair, is_open, fee, open_rate, stake_amount, amount, open_date, - stop_loss, initial_stop_loss, max_rate) + stop_loss, initial_stop_loss, max_rate, ticker_interval) VALUES ('binance', 'ETC/BTC', 1, {fee}, 0.00258580, {stake}, {amount}, '2019-11-28 12:44:24.000000', - 0.0, 0.0, 0.0) + 0.0, 0.0, 0.0, '5m') """.format(fee=fee.return_value, stake=default_conf.get("stake_amount"), amount=amount @@ -554,7 +555,7 @@ def test_migrate_new(mocker, default_conf, fee, caplog): assert trade.initial_stop_loss == 0.0 assert trade.sell_reason is None assert trade.strategy is None - assert trade.ticker_interval is None + assert trade.timeframe == '5m' assert trade.stoploss_order_id is None assert trade.stoploss_last_update is None assert log_has("trying trades_bak1", caplog) From f9bb1a7f22ee086042e37d563ee67d90a12577a1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 10:02:55 +0200 Subject: [PATCH 2509/3421] Update more occurances of ticker_interval --- freqtrade/data/btanalysis.py | 4 ++-- freqtrade/optimize/hyperopt_loss_interface.py | 1 - freqtrade/templates/sample_strategy.py | 2 +- tests/optimize/test_backtesting.py | 4 ++-- tests/optimize/test_hyperopt.py | 3 ++- tests/strategy/test_default_strategy.py | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index f98135c27..5948d933c 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -103,7 +103,7 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: "open_rate", "close_rate", "amount", "duration", "sell_reason", "fee_open", "fee_close", "open_rate_requested", "close_rate_requested", "stake_amount", "max_rate", "min_rate", "id", "exchange", - "stop_loss", "initial_stop_loss", "strategy", "ticker_interval"] + "stop_loss", "initial_stop_loss", "strategy", "timeframe"] trades = pd.DataFrame([(t.pair, t.open_date.replace(tzinfo=timezone.utc), @@ -121,7 +121,7 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: t.min_rate, t.id, t.exchange, t.stop_loss, t.initial_stop_loss, - t.strategy, t.ticker_interval + t.strategy, t.timeframe ) for t in Trade.get_trades().all()], columns=columns) diff --git a/freqtrade/optimize/hyperopt_loss_interface.py b/freqtrade/optimize/hyperopt_loss_interface.py index c2607a9a8..48407a8a8 100644 --- a/freqtrade/optimize/hyperopt_loss_interface.py +++ b/freqtrade/optimize/hyperopt_loss_interface.py @@ -14,7 +14,6 @@ class IHyperOptLoss(ABC): Interface for freqtrade hyperopt Loss functions. Defines the custom loss function (`hyperopt_loss_function()` which is evaluated every epoch.) """ - ticker_interval: str timeframe: str @staticmethod diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index f78489173..e269848d2 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -53,7 +53,7 @@ class SampleStrategy(IStrategy): # trailing_stop_positive_offset = 0.0 # Disabled / not configured # Optimal ticker interval for the strategy. - ticker_interval = '5m' + timeframe = '5m' # Run "populate_indicators()" only for new candle. process_only_new_candles = False diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 407604d9c..342d7689f 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -286,7 +286,7 @@ def test_backtesting_init(mocker, default_conf, order_types) -> None: assert not backtesting.strategy.order_types["stoploss_on_exchange"] -def test_backtesting_init_no_ticker_interval(mocker, default_conf, caplog) -> None: +def test_backtesting_init_no_timeframe(mocker, default_conf, caplog) -> None: patch_exchange(mocker) del default_conf['timeframe'] default_conf['strategy_list'] = ['DefaultStrategy', @@ -453,7 +453,7 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: t["close_rate"], 6) < round(ln.iloc[0]["high"], 6)) -def test_backtest_1min_ticker_interval(default_conf, fee, mocker, testdatadir) -> None: +def test_backtest_1min_timeframe(default_conf, fee, mocker, testdatadir) -> None: default_conf['ask_strategy']['use_sell_signal'] = False mocker.patch('freqtrade.exchange.Exchange.get_fee', fee) patch_exchange(mocker) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 4f5b3983a..564725709 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -197,7 +197,8 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None: "Using populate_sell_trend from the strategy.", caplog) assert log_has("Hyperopt class does not provide populate_buy_trend() method. " "Using populate_buy_trend from the strategy.", caplog) - assert hasattr(x, "ticker_interval") + assert hasattr(x, "ticker_interval") # DEPRECATED + assert hasattr(x, "timeframe") def test_hyperoptresolver_wrongname(mocker, default_conf, caplog) -> None: diff --git a/tests/strategy/test_default_strategy.py b/tests/strategy/test_default_strategy.py index df7e35197..1b1648db9 100644 --- a/tests/strategy/test_default_strategy.py +++ b/tests/strategy/test_default_strategy.py @@ -6,7 +6,7 @@ from .strats.default_strategy import DefaultStrategy def test_default_strategy_structure(): assert hasattr(DefaultStrategy, 'minimal_roi') assert hasattr(DefaultStrategy, 'stoploss') - assert hasattr(DefaultStrategy, 'ticker_interval') + assert hasattr(DefaultStrategy, 'timeframe') assert hasattr(DefaultStrategy, 'populate_indicators') assert hasattr(DefaultStrategy, 'populate_buy_trend') assert hasattr(DefaultStrategy, 'populate_sell_trend') From febc95dcdf95d9ee6a080d25684491320f24f236 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 10:03:23 +0200 Subject: [PATCH 2510/3421] Update documentation to remove ticker_interval --- docs/bot-usage.md | 25 ++++++++++++------------- docs/configuration.md | 4 ++-- docs/hyperopt.md | 8 ++++---- docs/plotting.md | 15 ++++++++------- docs/strategy-customization.md | 14 +++++++------- docs/strategy_analysis_example.md | 4 ++-- 6 files changed, 35 insertions(+), 35 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index b1649374a..b5af60f2b 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -72,7 +72,6 @@ Strategy arguments: Specify strategy class name which will be used by the bot. --strategy-path PATH Specify additional strategy lookup path. -. ``` @@ -197,7 +196,7 @@ Backtesting also uses the config specified via `-c/--config`. ``` usage: freqtrade backtesting [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME] - [--strategy-path PATH] [-i TICKER_INTERVAL] + [--strategy-path PATH] [-i TIMEFRAME] [--timerange TIMERANGE] [--max-open-trades INT] [--stake-amount STAKE_AMOUNT] [--fee FLOAT] [--eps] [--dmmp] @@ -206,7 +205,7 @@ usage: freqtrade backtesting [-h] [-v] [--logfile FILE] [-V] [-c PATH] optional arguments: -h, --help show this help message and exit - -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL + -i TIMEFRAME, --timeframe TIMEFRAME, --ticker-interval TIMEFRAME Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`). --timerange TIMERANGE @@ -280,7 +279,7 @@ to find optimal parameter values for your strategy. ``` usage: freqtrade hyperopt [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME] [--strategy-path PATH] - [-i TICKER_INTERVAL] [--timerange TIMERANGE] + [-i TIMEFRAME] [--timerange TIMERANGE] [--max-open-trades INT] [--stake-amount STAKE_AMOUNT] [--fee FLOAT] [--hyperopt NAME] [--hyperopt-path PATH] [--eps] @@ -292,7 +291,7 @@ usage: freqtrade hyperopt [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] optional arguments: -h, --help show this help message and exit - -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL + -i TIMEFRAME, --timeframe TIMEFRAME, --ticker-interval TIMEFRAME Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`). --timerange TIMERANGE @@ -323,7 +322,7 @@ optional arguments: --print-all Print all results, not only the best ones. --no-color Disable colorization of hyperopt results. May be useful if you are redirecting output to a file. - --print-json Print best results in JSON format. + --print-json Print output in JSON format. -j JOBS, --job-workers JOBS The number of concurrently running jobs for hyperoptimization (hyperopt worker processes). If -1 @@ -341,11 +340,11 @@ optional arguments: class (IHyperOptLoss). Different functions can generate completely different results, since the target for optimization is different. Built-in - Hyperopt-loss-functions are: - DefaultHyperOptLoss, OnlyProfitHyperOptLoss, - SharpeHyperOptLoss, SharpeHyperOptLossDaily, - SortinoHyperOptLoss, SortinoHyperOptLossDaily. - (default: `DefaultHyperOptLoss`). + Hyperopt-loss-functions are: DefaultHyperOptLoss, + OnlyProfitHyperOptLoss, SharpeHyperOptLoss, + SharpeHyperOptLossDaily, SortinoHyperOptLoss, + SortinoHyperOptLossDaily.(default: + `DefaultHyperOptLoss`). Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). @@ -378,13 +377,13 @@ To know your trade expectancy and winrate against historical data, you can use E ``` usage: freqtrade edge [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-s NAME] [--strategy-path PATH] - [-i TICKER_INTERVAL] [--timerange TIMERANGE] + [-i TIMEFRAME] [--timerange TIMERANGE] [--max-open-trades INT] [--stake-amount STAKE_AMOUNT] [--fee FLOAT] [--stoplosses STOPLOSS_RANGE] optional arguments: -h, --help show this help message and exit - -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL + -i TIMEFRAME, --timeframe TIMEFRAME, --ticker-interval TIMEFRAME Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`). --timerange TIMERANGE diff --git a/docs/configuration.md b/docs/configuration.md index a1cb45e0f..4dbcc6d2a 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -47,7 +47,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `amend_last_stake_amount` | Use reduced last stake amount if necessary. [More information below](#configuring-amount-per-trade).
            *Defaults to `false`.*
            **Datatype:** Boolean | `last_stake_amount_min_ratio` | Defines minimum stake amount that has to be left and executed. Applies only to the last stake amount when it's amended to a reduced value (i.e. if `amend_last_stake_amount` is set to `true`). [More information below](#configuring-amount-per-trade).
            *Defaults to `0.5`.*
            **Datatype:** Float (as ratio) | `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals.
            *Defaults to `0.05` (5%).*
            **Datatype:** Positive Float as ratio. -| `ticker_interval` | The timeframe (ticker interval) to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
            **Datatype:** String +| `timeframe` | The timeframe (former ticker interval) to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). [Strategy Override](#parameters-in-the-strategy).
            **Datatype:** String | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
            **Datatype:** String | `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
            *Defaults to `true`.*
            **Datatype:** Boolean | `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in the Dry Run mode.
            *Defaults to `1000`.*
            **Datatype:** Float @@ -125,7 +125,7 @@ The following parameters can be set in either configuration file or strategy. Values set in the configuration file always overwrite values set in the strategy. * `minimal_roi` -* `ticker_interval` +* `timeframe` * `stoploss` * `trailing_stop` * `trailing_stop_positive` diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 8efc51a39..a4d36530c 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -124,9 +124,9 @@ To avoid naming collisions in the search-space, please prefix all sell-spaces wi #### Using timeframe as a part of the Strategy -The Strategy class exposes the timeframe (ticker interval) value as the `self.ticker_interval` attribute. -The same value is available as class-attribute `HyperoptName.ticker_interval`. -In the case of the linked sample-value this would be `SampleHyperOpt.ticker_interval`. +The Strategy class exposes the timeframe value as the `self.timeframe` attribute. +The same value is available as class-attribute `HyperoptName.timeframe`. +In the case of the linked sample-value this would be `SampleHyperOpt.timeframe`. ## Solving a Mystery @@ -403,7 +403,7 @@ As stated in the comment, you can also use it as the value of the `minimal_roi` #### Default ROI Search Space -If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the ticker_interval used. By default the values vary in the following ranges (for some of the most used timeframes, values are rounded to 5 digits after the decimal point): +If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace for you -- it's the hyperspace of components for the ROI tables. By default, each ROI table generated by the Freqtrade consists of 4 rows (steps). Hyperopt implements adaptive ranges for ROI tables with ranges for values in the ROI steps that depend on the timeframe used. By default the values vary in the following ranges (for some of the most used timeframes, values are rounded to 5 digits after the decimal point): | # step | 1m | | 5m | | 1h | | 1d | | | ------ | ------ | ----------------- | -------- | ----------- | ---------- | ----------------- | ------------ | ----------------- | diff --git a/docs/plotting.md b/docs/plotting.md index be83065a6..d3a2df1c1 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -31,7 +31,7 @@ usage: freqtrade plot-dataframe [-h] [-v] [--logfile FILE] [-V] [-c PATH] [--plot-limit INT] [--db-url PATH] [--trade-source {DB,file}] [--export EXPORT] [--export-filename PATH] - [--timerange TIMERANGE] [-i TICKER_INTERVAL] + [--timerange TIMERANGE] [-i TIMEFRAME] [--no-trades] optional arguments: @@ -65,7 +65,7 @@ optional arguments: _today.json` --timerange TIMERANGE Specify what timerange of data to use. - -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL + -i TIMEFRAME, --timeframe TIMEFRAME, --ticker-interval TIMEFRAME Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`). --no-trades Skip using trades from backtesting file and DB. @@ -227,7 +227,7 @@ usage: freqtrade plot-profit [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-p PAIRS [PAIRS ...]] [--timerange TIMERANGE] [--export EXPORT] [--export-filename PATH] [--db-url PATH] - [--trade-source {DB,file}] [-i TICKER_INTERVAL] + [--trade-source {DB,file}] [-i TIMEFRAME] optional arguments: -h, --help show this help message and exit @@ -250,7 +250,7 @@ optional arguments: --trade-source {DB,file} Specify the source for trades (Can be DB or file (backtest file)) Default: file - -i TICKER_INTERVAL, --ticker-interval TICKER_INTERVAL + -i TIMEFRAME, --timeframe TIMEFRAME, --ticker-interval TIMEFRAME Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`). @@ -261,9 +261,10 @@ Common arguments: details. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: `config.json`). - Multiple --config options may be used. Can be set to - `-` to read config from stdin. + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. -d PATH, --datadir PATH Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 7197b0fba..ca0d9a9a3 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -248,7 +248,7 @@ minimal_roi = { While technically not completely disabled, this would sell once the trade reaches 10000% Profit. -To use times based on candle duration (ticker_interval or timeframe), the following snippet can be handy. +To use times based on candle duration (timeframe), the following snippet can be handy. This will allow you to change the ticket_interval for the strategy, and ROI times will still be set as candles (e.g. after 3 candles ...) ``` python @@ -256,12 +256,12 @@ from freqtrade.exchange import timeframe_to_minutes class AwesomeStrategy(IStrategy): - ticker_interval = "1d" - ticker_interval_mins = timeframe_to_minutes(ticker_interval) + timeframe = "1d" + timeframe_mins = timeframe_to_minutes(timeframe) minimal_roi = { "0": 0.05, # 5% for the first 3 candles - str(ticker_interval_mins * 3)): 0.02, # 2% after 3 candles - str(ticker_interval_mins * 6)): 0.01, # 1% After 6 candles + str(timeframe_mins * 3)): 0.02, # 2% after 3 candles + str(timeframe_mins * 6)): 0.01, # 1% After 6 candles } ``` @@ -290,7 +290,7 @@ Common values are `"1m"`, `"5m"`, `"15m"`, `"1h"`, however all values supported Please note that the same buy/sell signals may work well with one timeframe, but not with the others. -This setting is accessible within the strategy methods as the `self.ticker_interval` attribute. +This setting is accessible within the strategy methods as the `self.timeframe` attribute. ### Metadata dict @@ -400,7 +400,7 @@ This is where calling `self.dp.current_whitelist()` comes in handy. class SampleStrategy(IStrategy): # strategy init stuff... - ticker_interval = '5m' + timeframe = '5m' # more strategy init stuff.. diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index d26d684ce..6b4ad567f 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -18,7 +18,7 @@ config = Configuration.from_files([]) # config = Configuration.from_files(["config.json"]) # Define some constants -config["ticker_interval"] = "5m" +config["timeframe"] = "5m" # Name of the strategy class config["strategy"] = "SampleStrategy" # Location of the data @@ -33,7 +33,7 @@ pair = "BTC_USDT" from freqtrade.data.history import load_pair_history candles = load_pair_history(datadir=data_location, - timeframe=config["ticker_interval"], + timeframe=config["timeframe"], pair=pair) # Confirm success From 33b7046260fc500fe5ae2c60ab999f67ac7f0ff4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 10:06:26 +0200 Subject: [PATCH 2511/3421] Update more documentation --- README.md | 5 +++-- docs/backtesting.md | 10 +++++----- docs/bot-usage.md | 25 +++++++++++++++++++------ docs/edge.md | 2 +- docs/hyperopt.md | 2 +- docs/strategy-customization.md | 2 +- docs/utils.md | 2 +- freqtrade/commands/arguments.py | 2 +- 8 files changed, 32 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index cfb384702..7e0acde46 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,8 @@ positional arguments: new-hyperopt Create new hyperopt new-strategy Create new strategy download-data Download backtesting data. - convert-data Convert candle (OHLCV) data from one format to another. + convert-data Convert candle (OHLCV) data from one format to + another. convert-trade-data Convert trade data from one format to another. backtesting Backtesting module. edge Edge module. @@ -94,7 +95,7 @@ positional arguments: list-markets Print markets on exchange. list-pairs Print pairs on exchange. list-strategies Print available strategies. - list-timeframes Print available ticker intervals (timeframes) for the exchange. + list-timeframes Print available timeframes for the exchange. show-trades Show trades. test-pairlist Test your pairlist configuration. plot-dataframe Plot candles with indicators. diff --git a/docs/backtesting.md b/docs/backtesting.md index 9b2997510..51b2e953b 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -12,7 +12,7 @@ real data. This is what we call [backtesting](https://en.wikipedia.org/wiki/Backtesting). Backtesting will use the crypto-currencies (pairs) from your config file and load historical candle (OHCLV) data from `user_data/data/` by default. -If no data is available for the exchange / pair / timeframe (ticker interval) combination, backtesting will ask you to download them first using `freqtrade download-data`. +If no data is available for the exchange / pair / timeframe combination, backtesting will ask you to download them first using `freqtrade download-data`. For details on downloading, please refer to the [Data Downloading](data-download.md) section in the documentation. The result of backtesting will confirm if your bot has better odds of making a profit than a loss. @@ -35,7 +35,7 @@ freqtrade backtesting #### With 1 min candle (OHLCV) data ```bash -freqtrade backtesting --ticker-interval 1m +freqtrade backtesting --timeframe 1m ``` #### Using a different on-disk historical candle (OHLCV) data source @@ -58,7 +58,7 @@ Where `-s SampleStrategy` refers to the class name within the strategy file `sam #### Comparing multiple Strategies ```bash -freqtrade backtesting --strategy-list SampleStrategy1 AwesomeStrategy --ticker-interval 5m +freqtrade backtesting --strategy-list SampleStrategy1 AwesomeStrategy --timeframe 5m ``` Where `SampleStrategy1` and `AwesomeStrategy` refer to class names of strategies. @@ -228,13 +228,13 @@ You can then load the trades to perform further analysis as shown in our [data a To compare multiple strategies, a list of Strategies can be provided to backtesting. -This is limited to 1 timeframe (ticker interval) value per run. However, data is only loaded once from disk so if you have multiple +This is limited to 1 timeframe value per run. However, data is only loaded once from disk so if you have multiple strategies you'd like to compare, this will give a nice runtime boost. All listed Strategies need to be in the same directory. ``` bash -freqtrade backtesting --timerange 20180401-20180410 --ticker-interval 5m --strategy-list Strategy001 Strategy002 --export trades +freqtrade backtesting --timerange 20180401-20180410 --timeframe 5m --strategy-list Strategy001 Strategy002 --export trades ``` This will save the results to `user_data/backtest_results/backtest-result-.json`, injecting the strategy-name into the target filename. diff --git a/docs/bot-usage.md b/docs/bot-usage.md index b5af60f2b..40ff3d82b 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -9,22 +9,35 @@ This page explains the different parameters of the bot and how to run it. ``` usage: freqtrade [-h] [-V] - {trade,backtesting,edge,hyperopt,create-userdir,list-exchanges,list-timeframes,download-data,plot-dataframe,plot-profit} + {trade,create-userdir,new-config,new-hyperopt,new-strategy,download-data,convert-data,convert-trade-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,plot-dataframe,plot-profit} ... Free, open source crypto trading bot positional arguments: - {trade,backtesting,edge,hyperopt,create-userdir,list-exchanges,list-timeframes,download-data,plot-dataframe,plot-profit} + {trade,create-userdir,new-config,new-hyperopt,new-strategy,download-data,convert-data,convert-trade-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,plot-dataframe,plot-profit} trade Trade module. + create-userdir Create user-data directory. + new-config Create new config + new-hyperopt Create new hyperopt + new-strategy Create new strategy + download-data Download backtesting data. + convert-data Convert candle (OHLCV) data from one format to + another. + convert-trade-data Convert trade data from one format to another. backtesting Backtesting module. edge Edge module. hyperopt Hyperopt module. - create-userdir Create user-data directory. + hyperopt-list List Hyperopt results + hyperopt-show Show details of Hyperopt results list-exchanges Print available exchanges. - list-timeframes Print available ticker intervals (timeframes) for the - exchange. - download-data Download backtesting data. + list-hyperopts Print available hyperopt classes. + list-markets Print markets on exchange. + list-pairs Print pairs on exchange. + list-strategies Print available strategies. + list-timeframes Print available timeframes for the exchange. + show-trades Show trades. + test-pairlist Test your pairlist configuration. plot-dataframe Plot candles with indicators. plot-profit Generate plot showing profits. diff --git a/docs/edge.md b/docs/edge.md index 029844c0b..28a7f14cb 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -156,7 +156,7 @@ Edge module has following configuration options: | `minimum_winrate` | It filters out pairs which don't have at least minimum_winrate.
            This comes handy if you want to be conservative and don't comprise win rate in favour of risk reward ratio.
            *Defaults to `0.60`.*
            **Datatype:** Float | `minimum_expectancy` | It filters out pairs which have the expectancy lower than this number.
            Having an expectancy of 0.20 means if you put 10$ on a trade you expect a 12$ return.
            *Defaults to `0.20`.*
            **Datatype:** Float | `min_trade_number` | When calculating *W*, *R* and *E* (expectancy) against historical data, you always want to have a minimum number of trades. The more this number is the more Edge is reliable.
            Having a win rate of 100% on a single trade doesn't mean anything at all. But having a win rate of 70% over past 100 trades means clearly something.
            *Defaults to `10` (it is highly recommended not to decrease this number).*
            **Datatype:** Integer -| `max_trade_duration_minute` | Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign.
            **NOTICE:** While configuring this value, you should take into consideration your timeframe (ticker interval). As an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. Default value is set assuming your strategy interval is relatively small (1m or 5m, etc.).
            *Defaults to `1440` (one day).*
            **Datatype:** Integer +| `max_trade_duration_minute` | Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign.
            **NOTICE:** While configuring this value, you should take into consideration your timeframe. As an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. Default value is set assuming your strategy interval is relatively small (1m or 5m, etc.).
            *Defaults to `1440` (one day).*
            **Datatype:** Integer | `remove_pumps` | Edge will remove sudden pumps in a given market while going through historical data. However, given that pumps happen very often in crypto markets, we recommend you keep this off.
            *Defaults to `false`.*
            **Datatype:** Boolean ## Running Edge independently diff --git a/docs/hyperopt.md b/docs/hyperopt.md index a4d36530c..c9c87ead3 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -412,7 +412,7 @@ If you are optimizing ROI, Freqtrade creates the 'roi' optimization hyperspace f | 3 | 4...20 | 0.00387...0.01547 | 20...100 | 0.01...0.04 | 240...1200 | 0.02294...0.09177 | 5760...28800 | 0.04059...0.16237 | | 4 | 6...44 | 0.0 | 30...220 | 0.0 | 360...2640 | 0.0 | 8640...63360 | 0.0 | -These ranges should be sufficient in most cases. The minutes in the steps (ROI dict keys) are scaled linearly depending on the timeframe (ticker interval) used. The ROI values in the steps (ROI dict values) are scaled logarithmically depending on the timeframe used. +These ranges should be sufficient in most cases. The minutes in the steps (ROI dict keys) are scaled linearly depending on the timeframe used. The ROI values in the steps (ROI dict values) are scaled logarithmically depending on the timeframe used. If you have the `generate_roi_table()` and `roi_space()` methods in your custom hyperopt file, remove them in order to utilize these adaptive ROI tables and the ROI hyperoptimization space generated by Freqtrade by default. diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index ca0d9a9a3..70013c821 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -142,7 +142,7 @@ By letting the bot know how much history is needed, backtest trades can start at Let's try to backtest 1 month (January 2019) of 5m candles using the an example strategy with EMA100, as above. ``` bash -freqtrade backtesting --timerange 20190101-20190201 --ticker-interval 5m +freqtrade backtesting --timerange 20190101-20190201 --timeframe 5m ``` Assuming `startup_candle_count` is set to 100, backtesting knows it needs 100 candles to generate valid buy signals. It will load data from `20190101 - (100 * 5m)` - which is ~2019-12-31 15:30:00. diff --git a/docs/utils.md b/docs/utils.md index 7ed31376f..793c84a93 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -62,7 +62,7 @@ $ freqtrade new-config --config config_binance.json ? Please insert your stake currency: BTC ? Please insert your stake amount: 0.05 ? Please insert max_open_trades (Integer or 'unlimited'): 3 -? Please insert your timeframe (ticker interval): 5m +? Please insert your desired timeframe (e.g. 5m): 5m ? Please insert your display Currency (for reporting): USD ? Select exchange binance ? Do you want to enable Telegram? No diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 36e3dedf0..72f2a02f0 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -318,7 +318,7 @@ class Arguments: # Add list-timeframes subcommand list_timeframes_cmd = subparsers.add_parser( 'list-timeframes', - help='Print available ticker intervals (timeframes) for the exchange.', + help='Print available timeframes for the exchange.', parents=[_common_parser], ) list_timeframes_cmd.set_defaults(func=start_list_timeframes) From 8e1a664a48f7b315907a9bbdd3b7f8fd790a8211 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 10:11:50 +0200 Subject: [PATCH 2512/3421] Add test for deprecation updating --- tests/strategy/strats/legacy_strategy.py | 1 + tests/strategy/test_strategy.py | 2 ++ tests/test_configuration.py | 12 ++++++++++++ 3 files changed, 15 insertions(+) diff --git a/tests/strategy/strats/legacy_strategy.py b/tests/strategy/strats/legacy_strategy.py index 89ce3f8cb..9cbce0ad5 100644 --- a/tests/strategy/strats/legacy_strategy.py +++ b/tests/strategy/strats/legacy_strategy.py @@ -31,6 +31,7 @@ class TestStrategyLegacy(IStrategy): stoploss = -0.10 # Optimal ticker interval for the strategy + # Keep the legacy value here to test compatibility ticker_interval = '5m' def populate_indicators(self, dataframe: DataFrame) -> DataFrame: diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 1bb45f28c..f2cf11712 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -370,6 +370,8 @@ def test_call_deprecated_function(result, monkeypatch, default_conf): assert strategy._buy_fun_len == 2 assert strategy._sell_fun_len == 2 assert strategy.INTERFACE_VERSION == 1 + assert strategy.timeframe == '5m' + assert strategy.ticker_interval == '5m' indicator_df = strategy.advise_indicators(result, metadata=metadata) assert isinstance(indicator_df, DataFrame) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 1ed97f728..9602f6389 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -1137,3 +1137,15 @@ def test_process_deprecated_setting(mocker, default_conf, caplog): 'sectionB', 'deprecated_setting') assert not log_has_re('DEPRECATED', caplog) assert default_conf['sectionA']['new_setting'] == 'valA' + + +def test_process_deprecated_ticker_interval(mocker, default_conf, caplog): + message = "DEPRECATED: Please use 'timeframe' instead of 'ticker_interval." + process_temporary_deprecated_settings(default_conf) + assert not log_has(message, caplog) + + del default_conf['timeframe'] + default_conf['ticker_interval'] = '15m' + process_temporary_deprecated_settings(default_conf) + assert log_has(message, caplog) + assert default_conf['ticker_interval'] == '15m' From a8005819c97461055bf29a0bae4a1e662a313c28 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 10:19:27 +0200 Subject: [PATCH 2513/3421] Add class-level attributes to hyperopt and strategy --- freqtrade/optimize/hyperopt_interface.py | 3 ++- freqtrade/strategy/interface.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 20209d8a9..00353cbf4 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -31,7 +31,8 @@ class IHyperOpt(ABC): Class attributes you can use: ticker_interval -> int: value of the ticker interval to use for the strategy """ - ticker_interval: str + ticker_interval: str # deprecated + timeframe: str def __init__(self, config: dict) -> None: self.config = config diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 7bf750249..f9f3a3678 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -86,6 +86,7 @@ class IStrategy(ABC): trailing_only_offset_is_reached = False # associated timeframe + ticker_interval: str # DEPRECATED timeframe: str # Optional order types From b106c886309f446861bd01b4062e3e285c23a3ff Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 13:08:21 +0200 Subject: [PATCH 2514/3421] Add test case for strategy overwriting --- tests/strategy/test_strategy.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index f2cf11712..85cb8c132 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -358,8 +358,9 @@ def test_deprecate_populate_indicators(result, default_conf): @pytest.mark.filterwarnings("ignore:deprecated") -def test_call_deprecated_function(result, monkeypatch, default_conf): +def test_call_deprecated_function(result, monkeypatch, default_conf, caplog): default_location = Path(__file__).parent / "strats" + del default_conf['timeframe'] default_conf.update({'strategy': 'TestStrategyLegacy', 'strategy_path': default_location}) strategy = StrategyResolver.load_strategy(default_conf) @@ -385,6 +386,9 @@ def test_call_deprecated_function(result, monkeypatch, default_conf): assert isinstance(selldf, DataFrame) assert 'sell' in selldf + assert log_has('DEPRECATED: Please migrate to using timeframe instead of ticker_interval.', + caplog) + def test_strategy_interface_versioning(result, monkeypatch, default_conf): default_conf.update({'strategy': 'DefaultStrategy'}) From 9995a5899fb16dcfe1e13a7525077142a4152076 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Tue, 2 Jun 2020 16:25:22 +0300 Subject: [PATCH 2515/3421] Fix merge --- freqtrade/persistence.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index a3b394769..bb9db703d 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -108,7 +108,7 @@ def check_migrate(engine) -> None: sell_reason = get_column_def(cols, 'sell_reason', 'null') strategy = get_column_def(cols, 'strategy', 'null') # If ticker-interval existed use that, else null. - if has_column(cols, '): + if has_column(cols, 'ticker_interval'): timeframe = get_column_def(cols, 'timeframe', 'ticker_interval') else: timeframe = get_column_def(cols, 'timeframe', 'null') From edf8e39bc11c6c37b06459ac9d9bdfc38f86eb9a Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 2 Jun 2020 17:57:45 +0300 Subject: [PATCH 2516/3421] Fix tests after merge --- tests/rpc/test_rpc.py | 2 -- tests/rpc/test_rpc_apiserver.py | 4 +--- tests/test_persistence.py | 2 -- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 9a55c7639..44d54bad6 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -65,7 +65,6 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'min_rate': ANY, 'max_rate': ANY, 'strategy': ANY, - 'ticker_interval': ANY, 'timeframe': ANY, 'open_order_id': ANY, 'close_date': None, @@ -124,7 +123,6 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'min_rate': ANY, 'max_rate': ANY, 'strategy': ANY, - 'ticker_interval': ANY, 'timeframe': ANY, 'open_order_id': ANY, 'close_date': None, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index b3859c4e6..5547ee004 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -322,7 +322,7 @@ def test_api_show_config(botclient, mocker): assert_response(rc) assert 'dry_run' in rc.json assert rc.json['exchange'] == 'bittrex' - assert rc.json['ticker_interval'] == '5m' + assert rc.json['timeframe'] == '5m' assert rc.json['state'] == 'running' assert not rc.json['trailing_stop'] @@ -547,7 +547,6 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'sell_reason': None, 'sell_order_status': None, 'strategy': 'DefaultStrategy', - 'ticker_interval': 5, 'timeframe': 5, 'exchange': 'bittrex', }] @@ -671,7 +670,6 @@ def test_api_forcebuy(botclient, mocker, fee): 'sell_reason': None, 'sell_order_status': None, 'strategy': None, - 'ticker_interval': None, 'timeframe': None, 'exchange': 'bittrex', } diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 69ee014c5..d55f24719 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -776,7 +776,6 @@ def test_to_json(default_conf, fee): 'min_rate': None, 'max_rate': None, 'strategy': None, - 'ticker_interval': None, 'timeframe': None, 'exchange': 'bittrex', } @@ -838,7 +837,6 @@ def test_to_json(default_conf, fee): 'sell_reason': None, 'sell_order_status': None, 'strategy': None, - 'ticker_interval': None, 'timeframe': None, 'exchange': 'bittrex', } From 85fedf95e85a871579731a55911694d406660bb4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 2 Jun 2020 18:43:37 +0300 Subject: [PATCH 2517/3421] Make mypy happy --- freqtrade/exchange/exchange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 6275b0eda..397e0c1a7 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -890,7 +890,7 @@ class Exchange: logger.debug(f"_async_get_trade_history(), pair: {pair}, " f"since: {since}, until: {until}, from_id: {from_id}") - if not until: + if until is None: exchange_msec = ccxt.Exchange.milliseconds() logger.debug(f"Exchange milliseconds: {exchange_msec}") until = exchange_msec From f4c2bb13468d0edaf78dc3ab31b89c8876851e35 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 2 Jun 2020 19:37:08 +0300 Subject: [PATCH 2518/3421] Fix crash in #3404 --- freqtrade/data/converter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 0ef7955a4..f73775432 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -197,7 +197,7 @@ def trades_to_ohlcv(trades: List, timeframe: str) -> DataFrame: df_new['date'] = df_new.index # Drop 0 volume rows df_new = df_new.dropna() - return df_new[DEFAULT_DATAFRAME_COLUMNS] + return df_new.loc[:, DEFAULT_DATAFRAME_COLUMNS] def convert_trades_format(config: Dict[str, Any], convert_from: str, convert_to: str, erase: bool): From 1a5dba9a79a50e567bbc16da3da63a82294c7802 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 19:39:17 +0200 Subject: [PATCH 2519/3421] Revert "Fix tests after merge" This reverts commit edf8e39bc11c6c37b06459ac9d9bdfc38f86eb9a. --- tests/rpc/test_rpc.py | 2 ++ tests/rpc/test_rpc_apiserver.py | 4 +++- tests/test_persistence.py | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 44d54bad6..9a55c7639 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -65,6 +65,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'min_rate': ANY, 'max_rate': ANY, 'strategy': ANY, + 'ticker_interval': ANY, 'timeframe': ANY, 'open_order_id': ANY, 'close_date': None, @@ -123,6 +124,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'min_rate': ANY, 'max_rate': ANY, 'strategy': ANY, + 'ticker_interval': ANY, 'timeframe': ANY, 'open_order_id': ANY, 'close_date': None, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 5547ee004..b3859c4e6 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -322,7 +322,7 @@ def test_api_show_config(botclient, mocker): assert_response(rc) assert 'dry_run' in rc.json assert rc.json['exchange'] == 'bittrex' - assert rc.json['timeframe'] == '5m' + assert rc.json['ticker_interval'] == '5m' assert rc.json['state'] == 'running' assert not rc.json['trailing_stop'] @@ -547,6 +547,7 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'sell_reason': None, 'sell_order_status': None, 'strategy': 'DefaultStrategy', + 'ticker_interval': 5, 'timeframe': 5, 'exchange': 'bittrex', }] @@ -670,6 +671,7 @@ def test_api_forcebuy(botclient, mocker, fee): 'sell_reason': None, 'sell_order_status': None, 'strategy': None, + 'ticker_interval': None, 'timeframe': None, 'exchange': 'bittrex', } diff --git a/tests/test_persistence.py b/tests/test_persistence.py index d55f24719..69ee014c5 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -776,6 +776,7 @@ def test_to_json(default_conf, fee): 'min_rate': None, 'max_rate': None, 'strategy': None, + 'ticker_interval': None, 'timeframe': None, 'exchange': 'bittrex', } @@ -837,6 +838,7 @@ def test_to_json(default_conf, fee): 'sell_reason': None, 'sell_order_status': None, 'strategy': None, + 'ticker_interval': None, 'timeframe': None, 'exchange': 'bittrex', } From 02fca141a03fccf9fd49dffc3ba8b30e84c6dfbc Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 19:43:15 +0200 Subject: [PATCH 2520/3421] Readd ticker_interval to trade api response --- freqtrade/persistence.py | 1 + tests/rpc/test_rpc_apiserver.py | 1 + 2 files changed, 2 insertions(+) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index bb9db703d..628c9cf22 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -258,6 +258,7 @@ class Trade(_DECL_BASE): 'amount': round(self.amount, 8), 'stake_amount': round(self.stake_amount, 8), 'strategy': self.strategy, + 'ticker_interval': self.timeframe, # DEPRECATED 'timeframe': self.timeframe, 'fee_open': self.fee_open, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index b3859c4e6..daee0186a 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -323,6 +323,7 @@ def test_api_show_config(botclient, mocker): assert 'dry_run' in rc.json assert rc.json['exchange'] == 'bittrex' assert rc.json['ticker_interval'] == '5m' + assert rc.json['timeframe'] == '5m' assert rc.json['state'] == 'running' assert not rc.json['trailing_stop'] From 48117666fe9ef6fa9510e5daad86dd3a895a0ce1 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Tue, 2 Jun 2020 21:09:23 +0300 Subject: [PATCH 2521/3421] Update freqtrade/exchange/exchange.py Co-authored-by: Matthias --- freqtrade/exchange/exchange.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 397e0c1a7..031e464b7 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -891,9 +891,8 @@ class Exchange: f"since: {since}, until: {until}, from_id: {from_id}") if until is None: - exchange_msec = ccxt.Exchange.milliseconds() - logger.debug(f"Exchange milliseconds: {exchange_msec}") - until = exchange_msec + until = ccxt.Exchange.milliseconds() + logger.debug(f"Exchange milliseconds: {until}") if self._trades_pagination == 'time': return await self._async_get_trade_history_time( From b22e3a67d86b27d06ab2c1b4bee0d8f0b2f0f382 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 20:29:48 +0200 Subject: [PATCH 2522/3421] rename symbol_is_pair to market_is_tradable Make it part of the exchange class, so subclasses can override this --- freqtrade/commands/list_commands.py | 4 ++-- freqtrade/exchange/__init__.py | 3 +-- freqtrade/exchange/exchange.py | 31 +++++++++++++---------------- freqtrade/exchange/ftx.py | 12 ++++++++++- freqtrade/exchange/kraken.py | 12 ++++++++++- 5 files changed, 39 insertions(+), 23 deletions(-) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index bc4bd694f..503f8a4ee 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -14,7 +14,7 @@ from freqtrade.configuration import setup_utils_configuration from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGIES from freqtrade.exceptions import OperationalException from freqtrade.exchange import (available_exchanges, ccxt_exchanges, - market_is_active, symbol_is_pair) + market_is_active) from freqtrade.misc import plural from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.state import RunMode @@ -163,7 +163,7 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: tabular_data.append({'Id': v['id'], 'Symbol': v['symbol'], 'Base': v['base'], 'Quote': v['quote'], 'Active': market_is_active(v), - **({'Is pair': symbol_is_pair(v)} + **({'Is pair': exchange.market_is_tradable(v)} if not pairs_only else {})}) if (args.get('print_one_column', False) or diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index a39f8f5df..bdf1f91ec 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -12,8 +12,7 @@ from freqtrade.exchange.exchange import (timeframe_to_seconds, timeframe_to_msecs, timeframe_to_next_date, timeframe_to_prev_date) -from freqtrade.exchange.exchange import (market_is_active, - symbol_is_pair) +from freqtrade.exchange.exchange import (market_is_active) from freqtrade.exchange.kraken import Kraken from freqtrade.exchange.binance import Binance from freqtrade.exchange.bibox import Bibox diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 09f700bbb..bec8b9686 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -214,7 +214,7 @@ class Exchange: if quote_currencies: markets = {k: v for k, v in markets.items() if v['quote'] in quote_currencies} if pairs_only: - markets = {k: v for k, v in markets.items() if symbol_is_pair(v)} + markets = {k: v for k, v in markets.items() if self.symbol_is_pair(v)} if active_only: markets = {k: v for k, v in markets.items() if market_is_active(v)} return markets @@ -238,6 +238,19 @@ class Exchange: """ return self.markets.get(pair, {}).get('base', '') + def market_is_tradable(self, market: Dict[str, Any]) -> bool: + """ + Check if the market symbol is tradable by Freqtrade. + By default, checks if it's splittable by `/` and both sides correspond to base / quote + """ + symbol_parts = market['symbol'].split('/') + return (len(symbol_parts) == 2 and + len(symbol_parts[0]) > 0 and + len(symbol_parts[1]) > 0 and + symbol_parts[0] == market.get('base') and + symbol_parts[1] == market.get('quote') + ) + def klines(self, pair_interval: Tuple[str, str], copy: bool = True) -> DataFrame: if pair_interval in self._klines: return self._klines[pair_interval].copy() if copy else self._klines[pair_interval] @@ -1210,22 +1223,6 @@ def timeframe_to_next_date(timeframe: str, date: datetime = None) -> datetime: return datetime.fromtimestamp(new_timestamp, tz=timezone.utc) -def symbol_is_pair(market_symbol: Dict[str, Any], base_currency: str = None, - quote_currency: str = None) -> bool: - """ - Check if the market symbol is a pair, i.e. that its symbol consists of the base currency and the - quote currency separated by '/' character. If base_currency and/or quote_currency is passed, - it also checks that the symbol contains appropriate base and/or quote currency part before - and after the separating character correspondingly. - """ - symbol_parts = market_symbol['symbol'].split('/') - return (len(symbol_parts) == 2 and - (market_symbol.get('base') == base_currency - if base_currency else len(symbol_parts[0]) > 0) and - (market_symbol.get('quote') == quote_currency - if quote_currency else len(symbol_parts[1]) > 0)) - - def market_is_active(market: Dict) -> bool: """ Return True if the market is active. diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index 75915122b..cad11bbfa 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -1,6 +1,6 @@ """ FTX exchange subclass """ import logging -from typing import Dict +from typing import Any, Dict from freqtrade.exchange import Exchange @@ -12,3 +12,13 @@ class Ftx(Exchange): _ft_has: Dict = { "ohlcv_candle_limit": 1500, } + + def market_is_tradable(self, market: Dict[str, Any]) -> bool: + """ + Check if the market symbol is tradable by Freqtrade. + Default checks + check if pair is darkpool pair. + """ + parent_check = super().market_is_tradable(market) + + return (parent_check and + market.get('spot', False) is True) diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index 932d82a27..af75ef9b2 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -1,6 +1,6 @@ """ Kraken exchange subclass """ import logging -from typing import Dict +from typing import Any, Dict import ccxt @@ -21,6 +21,16 @@ class Kraken(Exchange): "trades_pagination_arg": "since", } + def market_is_tradable(self, market: Dict[str, Any]) -> bool: + """ + Check if the market symbol is tradable by Freqtrade. + Default checks + check if pair is darkpool pair. + """ + parent_check = super().market_is_tradable(market) + + return (parent_check and + market.get('darkpool', False) is False) + @retrier def get_balances(self) -> dict: if self._config['dry_run']: From b74a3addc65514aa8f7494ca995caa4bee74c4b5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 20:30:31 +0200 Subject: [PATCH 2523/3421] Update tests --- freqtrade/exchange/ftx.py | 2 +- tests/exchange/test_exchange.py | 55 +++++++++++++++++++++------------ 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index cad11bbfa..e5f083fb6 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -16,7 +16,7 @@ class Ftx(Exchange): def market_is_tradable(self, market: Dict[str, Any]) -> bool: """ Check if the market symbol is tradable by Freqtrade. - Default checks + check if pair is darkpool pair. + Default checks + check if pair is spot pair (no futures trading yet). """ parent_check = super().market_is_tradable(market) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index e40f691a8..b87acc27c 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -15,7 +15,7 @@ from freqtrade.exceptions import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange import Binance, Exchange, Kraken from freqtrade.exchange.common import API_RETRY_COUNT -from freqtrade.exchange.exchange import (market_is_active, symbol_is_pair, +from freqtrade.exchange.exchange import (market_is_active, timeframe_to_minutes, timeframe_to_msecs, timeframe_to_next_date, @@ -2117,25 +2117,42 @@ def test_timeframe_to_next_date(): assert timeframe_to_next_date("5m") > date -@pytest.mark.parametrize("market_symbol,base_currency,quote_currency,expected_result", [ - ("BTC/USDT", None, None, True), - ("USDT/BTC", None, None, True), - ("BTCUSDT", None, None, False), - ("BTC/USDT", None, "USDT", True), - ("USDT/BTC", None, "USDT", False), - ("BTCUSDT", None, "USDT", False), - ("BTC/USDT", "BTC", None, True), - ("USDT/BTC", "BTC", None, False), - ("BTCUSDT", "BTC", None, False), - ("BTC/USDT", "BTC", "USDT", True), - ("BTC/USDT", "USDT", "BTC", False), - ("BTC/USDT", "BTC", "USD", False), - ("BTCUSDT", "BTC", "USDT", False), - ("BTC/", None, None, False), - ("/USDT", None, None, False), +@pytest.mark.parametrize("market_symbol,base,quote,exchange,add_dict,expected_result", [ + ("BTC/USDT", 'BTC', 'USDT', "binance", {}, True), + ("USDT/BTC", 'USDT', 'BTC', "binance", {}, True), + ("USDT/BTC", 'BTC', 'USDT', "binance", {}, False), # Reversed currencies + ("BTCUSDT", 'BTC', 'USDT', "binance", {}, False), # No seperating / + ("BTCUSDT", None, "USDT", "binance", {}, False), # + ("USDT/BTC", "BTC", None, "binance", {}, False), + ("BTCUSDT", "BTC", None, "binance", {}, False), + ("BTC/USDT", "BTC", "USDT", "binance", {}, True), + ("BTC/USDT", "USDT", "BTC", "binance", {}, False), # reversed currencies + ("BTC/USDT", "BTC", "USD", "binance", {}, False), # Wrong quote currency + ("BTC/", "BTC", 'UNK', "binance", {}, False), + ("/USDT", 'UNK', 'USDT', "binance", {}, False), + ("BTC/EUR", 'BTC', 'EUR', "kraken", {"darkpool": False}, True), + ("EUR/BTC", 'EUR', 'BTC', "kraken", {"darkpool": False}, True), + ("EUR/BTC", 'BTC', 'EUR', "kraken", {"darkpool": False}, False), # Reversed currencies + ("BTC/EUR", 'BTC', 'USD', "kraken", {"darkpool": False}, False), # wrong quote currency + ("BTC/EUR", 'BTC', 'EUR', "kraken", {"darkpool": True}, False), # no darkpools + ("BTC/EUR.d", 'BTC', 'EUR', "kraken", {"darkpool": True}, False), # no darkpools + ("BTC/USD", 'BTC', 'USD', "ftx", {'spot': True}, True), + ("USD/BTC", 'USD', 'BTC', "ftx", {'spot': True}, True), + ("BTC/USD", 'BTC', 'USDT', "ftx", {'spot': True}, False), # Wrong quote currency + ("BTC/USD", 'USD', 'BTC', "ftx", {'spot': True}, False), # Reversed currencies + ("BTC/USD", 'BTC', 'USD', "ftx", {'spot': False}, False), # Can only trade spot markets + ("BTC-PERP", 'BTC', 'USD', "ftx", {'spot': False}, False), # Can only trade spot markets ]) -def test_symbol_is_pair(market_symbol, base_currency, quote_currency, expected_result) -> None: - assert symbol_is_pair(market_symbol, base_currency, quote_currency) == expected_result +def test_market_is_tradable(mocker, default_conf, market_symbol, base, + quote, add_dict, exchange, expected_result) -> None: + ex = get_patched_exchange(mocker, default_conf, id=exchange) + market = { + 'symbol': market_symbol, + 'base': base, + 'quote': quote, + **(add_dict), + } + assert ex.market_is_tradable(market) == expected_result @pytest.mark.parametrize("market,expected_result", [ From 08049d23b48242c5c468102b4ae8cb182a9236cc Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 20:41:29 +0200 Subject: [PATCH 2524/3421] Use "market_is_tradable" for whitelist validation --- freqtrade/exchange/exchange.py | 2 +- freqtrade/pairlist/IPairList.py | 5 +++++ tests/pairlist/test_pairlist.py | 4 +++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index bec8b9686..a2bb8627a 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -214,7 +214,7 @@ class Exchange: if quote_currencies: markets = {k: v for k, v in markets.items() if v['quote'] in quote_currencies} if pairs_only: - markets = {k: v for k, v in markets.items() if self.symbol_is_pair(v)} + markets = {k: v for k, v in markets.items() if self.market_is_tradable(v)} if active_only: markets = {k: v for k, v in markets.items() if market_is_active(v)} return markets diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index f48a7dcfd..61fdc73ad 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -159,6 +159,11 @@ class IPairList(ABC): f"{self._exchange.name}. Removing it from whitelist..") continue + if not self._exchange.market_is_tradable(markets[pair]): + logger.warning(f"Pair {pair} is not tradable with Freqtrade." + "Removing it from whitelist..") + continue + if self._exchange.get_pair_quote_currency(pair) != self._config['stake_currency']: logger.warning(f"Pair {pair} is not compatible with your stake currency " f"{self._config['stake_currency']}. Removing it from whitelist..") diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 421f06911..c6d1eeb38 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -400,7 +400,9 @@ def test_pairlist_class(mocker, whitelist_conf, markets, pairlist): # BCH/BTC not available (['ETH/BTC', 'TKN/BTC', 'BCH/BTC'], "is not compatible with exchange"), # BTT/BTC is inactive - (['ETH/BTC', 'TKN/BTC', 'BTT/BTC'], "Market is not active") + (['ETH/BTC', 'TKN/BTC', 'BTT/BTC'], "Market is not active"), + # XLTCUSDT is not a valid pair + (['ETH/BTC', 'TKN/BTC', 'XLTCUSDT'], "is not tradable with Freqtrade"), ]) def test__whitelist_for_active_markets(mocker, whitelist_conf, markets, pairlist, whitelist, caplog, log_message, tickers): From ea954b43389feef6ca0323c95f858df82b17cce6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 20:54:14 +0200 Subject: [PATCH 2525/3421] Add failing test with testcase from incident Full problem in #3431 --- tests/exchange/test_exchange.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 25aecba5c..32163f696 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -2192,12 +2192,18 @@ def test_extract_cost_curr_rate(mocker, default_conf, order, expected) -> None: 'fee': {'currency': 'NEO', 'cost': 0.0012}}, 0.001944), ({'symbol': 'ETH/BTC', 'amount': 2.21, 'cost': 0.02992561, 'fee': {'currency': 'NEO', 'cost': 0.00027452}}, 0.00074305), - # TODO: More tests here! # Rate included in return - return as is ({'symbol': 'ETH/BTC', 'amount': 0.04, 'cost': 0.05, 'fee': {'currency': 'USDT', 'cost': 0.34, 'rate': 0.01}}, 0.01), ({'symbol': 'ETH/BTC', 'amount': 0.04, 'cost': 0.05, 'fee': {'currency': 'USDT', 'cost': 0.34, 'rate': 0.005}}, 0.005), + # 0.1% filled - no costs (kraken - #3431) + ({'symbol': 'ETH/BTC', 'amount': 0.04, 'cost': 0.0, + 'fee': {'currency': 'BTC', 'cost': 0.0, 'rate': None}}, None), + ({'symbol': 'ETH/BTC', 'amount': 0.04, 'cost': 0.0, + 'fee': {'currency': 'ETH', 'cost': 0.0, 'rate': None}}, 0.0), + ({'symbol': 'ETH/BTC', 'amount': 0.04, 'cost': 0.0, + 'fee': {'currency': 'NEO', 'cost': 0.0, 'rate': None}}, None), ]) def test_calculate_fee_rate(mocker, default_conf, order, expected) -> None: mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', return_value={'last': 0.081}) From a2551daf12c68434449ea512433482cfc2736696 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 20:55:12 +0200 Subject: [PATCH 2526/3421] Fix ZeroDivision problem where cost is 0.0 --- freqtrade/exchange/exchange.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 7ef0d7750..4acee710a 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1104,9 +1104,12 @@ class Exchange: order['fee']['cost'] / safe_value_fallback(order, order, 'filled', 'amount'), 8) elif fee_curr in self.get_pair_quote_currency(order['symbol']): # Quote currency - divide by cost - return round(order['fee']['cost'] / order['cost'], 8) + return round(order['fee']['cost'] / order['cost'], 8) if order['cost'] else None else: # If Fee currency is a different currency + if not order['cost']: + # If cost is None or 0.0 -> falsy, return None + return None try: comb = self.get_valid_pair_combination(fee_curr, self._config['stake_currency']) tick = self.fetch_ticker(comb) From ad61673d6feec44a91c48cf805381cca28f11cee Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 2 Jun 2020 21:10:12 +0200 Subject: [PATCH 2527/3421] Fix missing key in test order --- tests/conftest.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/conftest.py b/tests/conftest.py index 971f7a5fa..1cd3bcc0f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1590,6 +1590,7 @@ def buy_order_fee(): 'datetime': str(arrow.utcnow().shift(minutes=-601).datetime), 'price': 0.245441, 'amount': 8.0, + 'cost': 1.963528, 'remaining': 90.99181073, 'status': 'closed', 'fee': None From 78dea19ffb4e0efa9fa7594fadfddd49010a06e7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 20:57:12 +0100 Subject: [PATCH 2528/3421] Implement first version of FTX stop --- freqtrade/exchange/ftx.py | 53 +++++++++++++++++ tests/exchange/test_ftx.py | 106 ++++++++++++++++++++++++++++++++++ tests/exchange/test_kraken.py | 10 ++-- 3 files changed, 164 insertions(+), 5 deletions(-) create mode 100644 tests/exchange/test_ftx.py diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index 75915122b..d06d49e5a 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -2,6 +2,10 @@ import logging from typing import Dict +import ccxt + +from freqtrade.exceptions import (DependencyException, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.exchange import Exchange logger = logging.getLogger(__name__) @@ -10,5 +14,54 @@ logger = logging.getLogger(__name__) class Ftx(Exchange): _ft_has: Dict = { + "stoploss_on_exchange": True, "ohlcv_candle_limit": 1500, } + + def stoploss_adjust(self, stop_loss: float, order: Dict) -> bool: + """ + Verify stop_loss against stoploss-order value (limit or price) + Returns True if adjustment is necessary. + """ + return order['type'] == 'stop' and stop_loss > float(order['price']) + + def stoploss(self, pair: str, amount: float, stop_price: float, order_types: Dict) -> Dict: + """ + Creates a stoploss market order. + Stoploss market orders is the only stoploss type supported by kraken. + """ + + ordertype = "stop" + + stop_price = self.price_to_precision(pair, stop_price) + + if self._config['dry_run']: + dry_order = self.dry_run_order( + pair, ordertype, "sell", amount, stop_price) + return dry_order + + try: + params = self._params.copy() + + amount = self.amount_to_precision(pair, amount) + + order = self._api.create_order(symbol=pair, type=ordertype, side='sell', + amount=amount, price=stop_price, params=params) + logger.info('stoploss order added for %s. ' + 'stop price: %s.', pair, stop_price) + return order + except ccxt.InsufficientFunds as e: + raise DependencyException( + f'Insufficient funds to create {ordertype} sell order on market {pair}.' + f'Tried to create stoploss with amount {amount} at stoploss {stop_price}. ' + f'Message: {e}') from e + except ccxt.InvalidOrder as e: + raise InvalidOrderException( + f'Could not create {ordertype} sell order on market {pair}. ' + f'Tried to create stoploss with amount {amount} at stoploss {stop_price}. ' + f'Message: {e}') from e + except (ccxt.NetworkError, ccxt.ExchangeError) as e: + raise TemporaryError( + f'Could not place sell order due to {e.__class__.__name__}. Message: {e}') from e + except ccxt.BaseError as e: + raise OperationalException(e) from e diff --git a/tests/exchange/test_ftx.py b/tests/exchange/test_ftx.py new file mode 100644 index 000000000..f17d5b42e --- /dev/null +++ b/tests/exchange/test_ftx.py @@ -0,0 +1,106 @@ +# pragma pylint: disable=missing-docstring, C0103, bad-continuation, global-statement +# pragma pylint: disable=protected-access +from random import randint +from unittest.mock import MagicMock + +import ccxt +import pytest + +from freqtrade.exceptions import (DependencyException, InvalidOrderException, + OperationalException, TemporaryError) +from tests.conftest import get_patched_exchange + + +STOPLOSS_ORDERTYPE = 'stop' + + +def test_stoploss_order_ftx(default_conf, mocker): + api_mock = MagicMock() + order_id = 'test_prod_buy_{}'.format(randint(0, 10 ** 6)) + + api_mock.create_order = MagicMock(return_value={ + 'id': order_id, + 'info': { + 'foo': 'bar' + } + }) + + default_conf['dry_run'] = False + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) + + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'ftx') + + # stoploss_on_exchange_limit_ratio is irrelevant for ftx market orders + order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=190, + order_types={'stoploss_on_exchange_limit_ratio': 1.05}) + assert api_mock.create_order.call_count == 1 + + api_mock.create_order.reset_mock() + + order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + + assert 'id' in order + assert 'info' in order + assert order['id'] == order_id + assert api_mock.create_order.call_args_list[0][1]['symbol'] == 'ETH/BTC' + assert api_mock.create_order.call_args_list[0][1]['type'] == STOPLOSS_ORDERTYPE + assert api_mock.create_order.call_args_list[0][1]['side'] == 'sell' + assert api_mock.create_order.call_args_list[0][1]['amount'] == 1 + assert api_mock.create_order.call_args_list[0][1]['price'] == 220 + + # test exception handling + with pytest.raises(DependencyException): + api_mock.create_order = MagicMock(side_effect=ccxt.InsufficientFunds("0 balance")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'ftx') + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + + with pytest.raises(InvalidOrderException): + api_mock.create_order = MagicMock( + side_effect=ccxt.InvalidOrder("ftx Order would trigger immediately.")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'ftx') + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + + with pytest.raises(TemporaryError): + api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No connection")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'ftx') + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + + with pytest.raises(OperationalException, match=r".*DeadBeef.*"): + api_mock.create_order = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'ftx') + exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + + +def test_stoploss_order_dry_run_ftx(default_conf, mocker): + api_mock = MagicMock() + default_conf['dry_run'] = True + mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) + + exchange = get_patched_exchange(mocker, default_conf, api_mock, 'ftx') + + api_mock.create_order.reset_mock() + + order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + + assert 'id' in order + assert 'info' in order + assert 'type' in order + + assert order['type'] == STOPLOSS_ORDERTYPE + assert order['price'] == 220 + assert order['amount'] == 1 + + +def test_stoploss_adjust_ftx(mocker, default_conf): + exchange = get_patched_exchange(mocker, default_conf, id='ftx') + order = { + 'type': STOPLOSS_ORDERTYPE, + 'price': 1500, + } + assert exchange.stoploss_adjust(1501, order) + assert not exchange.stoploss_adjust(1499, order) + # Test with invalid order case ... + order['type'] = 'stop_loss_limit' + assert not exchange.stoploss_adjust(1501, order) diff --git a/tests/exchange/test_kraken.py b/tests/exchange/test_kraken.py index d63dd66cc..0950979cf 100644 --- a/tests/exchange/test_kraken.py +++ b/tests/exchange/test_kraken.py @@ -11,6 +11,8 @@ from freqtrade.exceptions import (DependencyException, InvalidOrderException, from tests.conftest import get_patched_exchange from tests.exchange.test_exchange import ccxt_exceptionhandlers +STOPLOSS_ORDERTYPE = 'stop-loss' + def test_buy_kraken_trading_agreement(default_conf, mocker): api_mock = MagicMock() @@ -159,7 +161,6 @@ def test_get_balances_prod(default_conf, mocker): def test_stoploss_order_kraken(default_conf, mocker): api_mock = MagicMock() order_id = 'test_prod_buy_{}'.format(randint(0, 10 ** 6)) - order_type = 'stop-loss' api_mock.create_order = MagicMock(return_value={ 'id': order_id, @@ -187,7 +188,7 @@ def test_stoploss_order_kraken(default_conf, mocker): assert 'info' in order assert order['id'] == order_id assert api_mock.create_order.call_args_list[0][1]['symbol'] == 'ETH/BTC' - assert api_mock.create_order.call_args_list[0][1]['type'] == order_type + assert api_mock.create_order.call_args_list[0][1]['type'] == STOPLOSS_ORDERTYPE assert api_mock.create_order.call_args_list[0][1]['side'] == 'sell' assert api_mock.create_order.call_args_list[0][1]['amount'] == 1 assert api_mock.create_order.call_args_list[0][1]['price'] == 220 @@ -218,7 +219,6 @@ def test_stoploss_order_kraken(default_conf, mocker): def test_stoploss_order_dry_run_kraken(default_conf, mocker): api_mock = MagicMock() - order_type = 'stop-loss' default_conf['dry_run'] = True mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) @@ -233,7 +233,7 @@ def test_stoploss_order_dry_run_kraken(default_conf, mocker): assert 'info' in order assert 'type' in order - assert order['type'] == order_type + assert order['type'] == STOPLOSS_ORDERTYPE assert order['price'] == 220 assert order['amount'] == 1 @@ -241,7 +241,7 @@ def test_stoploss_order_dry_run_kraken(default_conf, mocker): def test_stoploss_adjust_kraken(mocker, default_conf): exchange = get_patched_exchange(mocker, default_conf, id='kraken') order = { - 'type': 'stop-loss', + 'type': STOPLOSS_ORDERTYPE, 'price': 1500, } assert exchange.stoploss_adjust(1501, order) From 68a59fd26d720efa3d22f9f67bbafac8ce2d280b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 24 Mar 2020 20:58:05 +0100 Subject: [PATCH 2529/3421] Add Hint to suggest this is still broken --- freqtrade/exchange/ftx.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index d06d49e5a..97257530e 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -28,7 +28,8 @@ class Ftx(Exchange): def stoploss(self, pair: str, amount: float, stop_price: float, order_types: Dict) -> Dict: """ Creates a stoploss market order. - Stoploss market orders is the only stoploss type supported by kraken. + Stoploss market orders is the only stoploss type supported by ftx. + TODO: This doesnot work yet as the order cannot be aquired via fetch_orders - so Freqtrade assumes the order as always missing. """ ordertype = "stop" From a808fb3b1068baa7a1c522ac4840ac93d8438b07 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Mar 2020 15:32:52 +0100 Subject: [PATCH 2530/3421] versionbump ccxt to first version that has FTX implemented correctly --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 20963a15f..6d832e3f5 100644 --- a/setup.py +++ b/setup.py @@ -63,7 +63,7 @@ setup(name='freqtrade', tests_require=['pytest', 'pytest-asyncio', 'pytest-cov', 'pytest-mock', ], install_requires=[ # from requirements-common.txt - 'ccxt>=1.18.1080', + 'ccxt>=1.24.96', 'SQLAlchemy', 'python-telegram-bot', 'arrow', From d90d6ed5d01283040b61416925a19dd1541fe037 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Mar 2020 15:50:33 +0100 Subject: [PATCH 2531/3421] Add ftx to tested exchanges --- tests/exchange/test_exchange.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 32163f696..d8950dd09 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -25,7 +25,7 @@ from freqtrade.resolvers.exchange_resolver import ExchangeResolver from tests.conftest import get_patched_exchange, log_has, log_has_re # Make sure to always keep one exchange here which is NOT subclassed!! -EXCHANGES = ['bittrex', 'binance', 'kraken', ] +EXCHANGES = ['bittrex', 'binance', 'kraken', 'ftx'] # Source: https://stackoverflow.com/questions/29881236/how-to-mock-asyncio-coroutines @@ -1258,7 +1258,8 @@ def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name): exchange._async_get_candle_history = Mock(wraps=mock_candle_hist) # one_call calculation * 1.8 should do 2 calls - since = 5 * 60 * 500 * 1.8 + + since = 5 * 60 * exchange._ft_has['ohlcv_candle_limit'] * 1.8 ret = exchange.get_historic_ohlcv(pair, "5m", int((arrow.utcnow().timestamp - since) * 1000)) assert exchange._async_get_candle_history.call_count == 2 From f83c1c5abf5d2b20ec29adfc84c85d3bcca6911d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Mar 2020 17:01:11 +0100 Subject: [PATCH 2532/3421] Use get_stoploss_order and cancel_stoploss_order This allows exchanges to use stoploss which don't have the same endpoints --- freqtrade/exchange/exchange.py | 8 ++++++- freqtrade/exchange/ftx.py | 44 ++++++++++++++++++++++++++++++++++ freqtrade/freqtradebot.py | 10 ++++---- 3 files changed, 56 insertions(+), 6 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 038fc22bc..e666b07ec 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -79,7 +79,7 @@ class Exchange: if config['dry_run']: logger.info('Instance is running with dry_run enabled') - + logger.info(f"Using CCXT {ccxt.__version__}") exchange_config = config['exchange'] # Deep merge ft_has with default ft_has options @@ -952,6 +952,9 @@ class Exchange: except ccxt.BaseError as e: raise OperationalException(e) from e + # Assign method to get_stoploss_order to allow easy overriding in other classes + cancel_stoploss_order = cancel_order + def is_cancel_order_result_suitable(self, corder) -> bool: if not isinstance(corder, dict): return False @@ -1004,6 +1007,9 @@ class Exchange: except ccxt.BaseError as e: raise OperationalException(e) from e + # Assign method to get_stoploss_order to allow easy overriding in other classes + get_stoploss_order = get_order + @retrier def fetch_l2_order_book(self, pair: str, limit: int = 100) -> dict: """ diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index 97257530e..70f140ac5 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -7,6 +7,7 @@ import ccxt from freqtrade.exceptions import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange import Exchange +from freqtrade.exchange.common import retrier logger = logging.getLogger(__name__) @@ -66,3 +67,46 @@ class Ftx(Exchange): f'Could not place sell order due to {e.__class__.__name__}. Message: {e}') from e except ccxt.BaseError as e: raise OperationalException(e) from e + + @retrier + def get_stoploss_order(self, order_id: str, pair: str) -> Dict: + if self._config['dry_run']: + try: + order = self._dry_run_open_orders[order_id] + return order + except KeyError as e: + # Gracefully handle errors with dry-run orders. + raise InvalidOrderException( + f'Tried to get an invalid dry-run-order (id: {order_id}). Message: {e}') from e + try: + orders = self._api.fetch_orders('BNB/USD', None, params={'type': 'stop'}) + + order = [order for order in orders if order['id'] == order_id] + if len(order) == 1: + return order[0] + else: + raise InvalidOrderException(f"Could not get Stoploss Order for id {order_id}") + + except ccxt.InvalidOrder as e: + raise InvalidOrderException( + f'Tried to get an invalid order (id: {order_id}). Message: {e}') from e + except (ccxt.NetworkError, ccxt.ExchangeError) as e: + raise TemporaryError( + f'Could not get order due to {e.__class__.__name__}. Message: {e}') from e + except ccxt.BaseError as e: + raise OperationalException(e) from e + + @retrier + def cancel_stoploss_order(self, order_id: str, pair: str) -> None: + if self._config['dry_run']: + return + try: + return self._api.cancel_order(order_id, pair, params={'type': 'stop'}) + except ccxt.InvalidOrder as e: + raise InvalidOrderException( + f'Could not cancel order. Message: {e}') from e + except (ccxt.NetworkError, ccxt.ExchangeError) as e: + raise TemporaryError( + f'Could not cancel order due to {e.__class__.__name__}. Message: {e}') from e + except ccxt.BaseError as e: + raise OperationalException(e) from e diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a74b0a5a1..4e4fe6e11 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -774,13 +774,13 @@ class FreqtradeBot: try: # First we check if there is already a stoploss on exchange - stoploss_order = self.exchange.get_order(trade.stoploss_order_id, trade.pair) \ + stoploss_order = self.exchange.get_stoploss_order(trade.stoploss_order_id, trade.pair) \ if trade.stoploss_order_id else None except InvalidOrderException as exception: logger.warning('Unable to fetch stoploss order: %s', exception) # We check if stoploss order is fulfilled - if stoploss_order and stoploss_order['status'] == 'closed': + if stoploss_order and stoploss_order['status'] in ('closed', 'triggered'): trade.sell_reason = SellType.STOPLOSS_ON_EXCHANGE.value self.update_trade_state(trade, stoploss_order, sl_order=True) # Lock pair for one candle to prevent immediate rebuys @@ -807,7 +807,7 @@ class FreqtradeBot: return False # If stoploss order is canceled for some reason we add it - if stoploss_order and stoploss_order['status'] == 'canceled': + if stoploss_order and stoploss_order['status'] in ('canceled', 'cancelled'): if self.create_stoploss_order(trade=trade, stop_price=trade.stop_loss, rate=trade.stop_loss): return False @@ -840,7 +840,7 @@ class FreqtradeBot: logger.info('Trailing stoploss: cancelling current stoploss on exchange (id:{%s}) ' 'in order to add another one ...', order['id']) try: - self.exchange.cancel_order(order['id'], trade.pair) + self.exchange.cancel_stoploss_order(order['id'], trade.pair) except InvalidOrderException: logger.exception(f"Could not cancel stoploss order {order['id']} " f"for pair {trade.pair}") @@ -1068,7 +1068,7 @@ class FreqtradeBot: # First cancelling stoploss on exchange ... if self.strategy.order_types.get('stoploss_on_exchange') and trade.stoploss_order_id: try: - self.exchange.cancel_order(trade.stoploss_order_id, trade.pair) + self.exchange.cancel_stoploss_order(trade.stoploss_order_id, trade.pair) except InvalidOrderException: logger.exception(f"Could not cancel stoploss order {trade.stoploss_order_id}") From cf50c1cb7be618f48ab9268be506a5b18765d871 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Mar 2020 17:01:45 +0100 Subject: [PATCH 2533/3421] Add tests for new exchange methods --- tests/exchange/test_exchange.py | 51 +++++++++++++++++++++++++++++++++ tests/exchange/test_ftx.py | 35 +++++++++++++++++++++- 2 files changed, 85 insertions(+), 1 deletion(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index d8950dd09..c06b934ba 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1734,6 +1734,7 @@ def test_cancel_order_dry_run(default_conf, mocker, exchange_name): default_conf['dry_run'] = True exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) assert exchange.cancel_order(order_id='123', pair='TKN/BTC') == {} + assert exchange.cancel_stoploss_order(order_id='123', pair='TKN/BTC') == {} @pytest.mark.parametrize("exchange_name", EXCHANGES) @@ -1818,6 +1819,25 @@ def test_cancel_order(default_conf, mocker, exchange_name): order_id='_', pair='TKN/BTC') +@pytest.mark.parametrize("exchange_name", EXCHANGES) +def test_cancel_stoploss_order(default_conf, mocker, exchange_name): + default_conf['dry_run'] = False + api_mock = MagicMock() + api_mock.cancel_order = MagicMock(return_value=123) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) + assert exchange.cancel_stoploss_order(order_id='_', pair='TKN/BTC') == 123 + + with pytest.raises(InvalidOrderException): + api_mock.cancel_order = MagicMock(side_effect=ccxt.InvalidOrder("Did not find order")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) + exchange.cancel_stoploss_order(order_id='_', pair='TKN/BTC') + assert api_mock.cancel_order.call_count == 1 + + ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, + "cancel_stoploss_order", "cancel_order", + order_id='_', pair='TKN/BTC') + + @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_get_order(default_conf, mocker, exchange_name): default_conf['dry_run'] = True @@ -1847,6 +1867,37 @@ def test_get_order(default_conf, mocker, exchange_name): order_id='_', pair='TKN/BTC') +@pytest.mark.parametrize("exchange_name", EXCHANGES) +def test_get_stoploss_order(default_conf, mocker, exchange_name): + # Don't test FTX here - that needs a seperate test + if exchange_name == 'ftx': + return + default_conf['dry_run'] = True + order = MagicMock() + order.myid = 123 + exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) + exchange._dry_run_open_orders['X'] = order + assert exchange.get_stoploss_order('X', 'TKN/BTC').myid == 123 + + with pytest.raises(InvalidOrderException, match=r'Tried to get an invalid dry-run-order.*'): + exchange.get_stoploss_order('Y', 'TKN/BTC') + + default_conf['dry_run'] = False + api_mock = MagicMock() + api_mock.fetch_order = MagicMock(return_value=456) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) + assert exchange.get_stoploss_order('X', 'TKN/BTC') == 456 + + with pytest.raises(InvalidOrderException): + api_mock.fetch_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) + exchange.get_stoploss_order(order_id='_', pair='TKN/BTC') + assert api_mock.fetch_order.call_count == 1 + + ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, + 'get_stoploss_order', 'fetch_order', + order_id='_', pair='TKN/BTC') + @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_name(default_conf, mocker, exchange_name): exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) diff --git a/tests/exchange/test_ftx.py b/tests/exchange/test_ftx.py index f17d5b42e..2b75e5324 100644 --- a/tests/exchange/test_ftx.py +++ b/tests/exchange/test_ftx.py @@ -9,7 +9,7 @@ import pytest from freqtrade.exceptions import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) from tests.conftest import get_patched_exchange - +from .test_exchange import ccxt_exceptionhandlers STOPLOSS_ORDERTYPE = 'stop' @@ -104,3 +104,36 @@ def test_stoploss_adjust_ftx(mocker, default_conf): # Test with invalid order case ... order['type'] = 'stop_loss_limit' assert not exchange.stoploss_adjust(1501, order) + + +def test_get_stoploss_order(default_conf, mocker): + default_conf['dry_run'] = True + order = MagicMock() + order.myid = 123 + exchange = get_patched_exchange(mocker, default_conf, id='ftx') + exchange._dry_run_open_orders['X'] = order + assert exchange.get_stoploss_order('X', 'TKN/BTC').myid == 123 + + with pytest.raises(InvalidOrderException, match=r'Tried to get an invalid dry-run-order.*'): + exchange.get_stoploss_order('Y', 'TKN/BTC') + + default_conf['dry_run'] = False + api_mock = MagicMock() + api_mock.fetch_orders = MagicMock(return_value=[{'id': 'X', 'status': '456'}]) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id='ftx') + assert exchange.get_stoploss_order('X', 'TKN/BTC')['status'] == '456' + + api_mock.fetch_orders = MagicMock(return_value=[{'id': 'Y', 'status': '456'}]) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id='ftx') + with pytest.raises(InvalidOrderException, match=r"Could not get Stoploss Order for id X"): + exchange.get_stoploss_order('X', 'TKN/BTC')['status'] + + with pytest.raises(InvalidOrderException): + api_mock.fetch_orders = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id='ftx') + exchange.get_stoploss_order(order_id='_', pair='TKN/BTC') + assert api_mock.fetch_orders.call_count == 1 + + ccxt_exceptionhandlers(mocker, default_conf, api_mock, 'ftx', + 'get_stoploss_order', 'fetch_orders', + order_id='_', pair='TKN/BTC') From 3174f37b41b515a886673501055ce4fe4d394947 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 25 Mar 2020 17:02:47 +0100 Subject: [PATCH 2534/3421] adapt tests to use stoploss_* methods --- tests/test_freqtradebot.py | 33 ++++++++++++++++++--------------- tests/test_integration.py | 4 ++-- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 487e3a60e..dc5a5c7d3 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1126,7 +1126,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, trade.stoploss_order_id = 100 hanging_stoploss_order = MagicMock(return_value={'status': 'open'}) - mocker.patch('freqtrade.exchange.Exchange.get_order', hanging_stoploss_order) + mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', hanging_stoploss_order) assert freqtrade.handle_stoploss_on_exchange(trade) is False assert trade.stoploss_order_id == 100 @@ -1139,7 +1139,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, trade.stoploss_order_id = 100 canceled_stoploss_order = MagicMock(return_value={'status': 'canceled'}) - mocker.patch('freqtrade.exchange.Exchange.get_order', canceled_stoploss_order) + mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', canceled_stoploss_order) stoploss.reset_mock() assert freqtrade.handle_stoploss_on_exchange(trade) is False @@ -1164,7 +1164,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, 'average': 2, 'amount': limit_buy_order['amount'], }) - mocker.patch('freqtrade.exchange.Exchange.get_order', stoploss_order_hit) + mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', stoploss_order_hit) assert freqtrade.handle_stoploss_on_exchange(trade) is True assert log_has('STOP_LOSS_LIMIT is hit for {}.'.format(trade), caplog) assert trade.stoploss_order_id is None @@ -1183,7 +1183,8 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, # It should try to add stoploss order trade.stoploss_order_id = 100 stoploss.reset_mock() - mocker.patch('freqtrade.exchange.Exchange.get_order', side_effect=InvalidOrderException()) + mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', + side_effect=InvalidOrderException()) mocker.patch('freqtrade.exchange.Exchange.stoploss', stoploss) freqtrade.handle_stoploss_on_exchange(trade) assert stoploss.call_count == 1 @@ -1214,7 +1215,7 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - get_order=MagicMock(return_value={'status': 'canceled'}), + get_stoploss_order=MagicMock(return_value={'status': 'canceled'}), stoploss=MagicMock(side_effect=DependencyException()), ) freqtrade = FreqtradeBot(default_conf) @@ -1331,7 +1332,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, } }) - mocker.patch('freqtrade.exchange.Exchange.get_order', stoploss_order_hanging) + mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', stoploss_order_hanging) # stoploss initially at 5% assert freqtrade.handle_trade(trade) is False @@ -1346,7 +1347,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, cancel_order_mock = MagicMock() stoploss_order_mock = MagicMock() - mocker.patch('freqtrade.exchange.Exchange.cancel_order', cancel_order_mock) + mocker.patch('freqtrade.exchange.Exchange.cancel_stoploss_order', cancel_order_mock) mocker.patch('freqtrade.exchange.Exchange.stoploss', stoploss_order_mock) # stoploss should not be updated as the interval is 60 seconds @@ -1429,8 +1430,9 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c 'stopPrice': '0.1' } } - mocker.patch('freqtrade.exchange.Exchange.cancel_order', side_effect=InvalidOrderException()) - mocker.patch('freqtrade.exchange.Exchange.get_order', stoploss_order_hanging) + mocker.patch('freqtrade.exchange.Exchange.cancel_stoploss_order', + side_effect=InvalidOrderException()) + mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', stoploss_order_hanging) freqtrade.handle_trailing_stoploss_on_exchange(trade, stoploss_order_hanging) assert log_has_re(r"Could not cancel stoploss order abcd for pair ETH/BTC.*", caplog) @@ -1439,7 +1441,7 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c # Fail creating stoploss order caplog.clear() - cancel_mock = mocker.patch("freqtrade.exchange.Exchange.cancel_order", MagicMock()) + cancel_mock = mocker.patch("freqtrade.exchange.Exchange.cancel_stoploss_order", MagicMock()) mocker.patch("freqtrade.exchange.Exchange.stoploss", side_effect=DependencyException()) freqtrade.handle_trailing_stoploss_on_exchange(trade, stoploss_order_hanging) assert cancel_mock.call_count == 1 @@ -1510,7 +1512,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, } }) - mocker.patch('freqtrade.exchange.Exchange.get_order', stoploss_order_hanging) + mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', stoploss_order_hanging) # stoploss initially at 20% as edge dictated it. assert freqtrade.handle_trade(trade) is False @@ -1519,7 +1521,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, cancel_order_mock = MagicMock() stoploss_order_mock = MagicMock() - mocker.patch('freqtrade.exchange.Exchange.cancel_order', cancel_order_mock) + mocker.patch('freqtrade.exchange.Exchange.cancel_stoploss_order', cancel_order_mock) mocker.patch('freqtrade.exchange.Binance.stoploss', stoploss_order_mock) # price goes down 5% @@ -2632,7 +2634,8 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.exchange.Exchange.cancel_order', side_effect=InvalidOrderException()) + mocker.patch('freqtrade.exchange.Exchange.cancel_stoploss_order', + side_effect=InvalidOrderException()) mocker.patch('freqtrade.wallets.Wallets.get_free', MagicMock(return_value=300)) sellmock = MagicMock() patch_exchange(mocker) @@ -2680,7 +2683,7 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, ticker, fee, ticke amount_to_precision=lambda s, x, y: y, price_to_precision=lambda s, x, y: y, stoploss=stoploss, - cancel_order=cancel_order, + cancel_stoploss_order=cancel_order, ) freqtrade = FreqtradeBot(default_conf) @@ -2771,7 +2774,7 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, f "fee": None, "trades": None }) - mocker.patch('freqtrade.exchange.Exchange.get_order', stoploss_executed) + mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', stoploss_executed) freqtrade.exit_positions(trades) assert trade.stoploss_order_id is None diff --git a/tests/test_integration.py b/tests/test_integration.py index 1396e86f5..57960503e 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -62,8 +62,8 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, get_fee=fee, amount_to_precision=lambda s, x, y: y, price_to_precision=lambda s, x, y: y, - get_order=stoploss_order_mock, - cancel_order=cancel_order_mock, + get_stoploss_order=stoploss_order_mock, + cancel_stoploss_order=cancel_order_mock, ) mocker.patch.multiple( From 11ebdefd09ef1d587e326b0d7d23020f32d71ebb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 18 Apr 2020 19:52:21 +0200 Subject: [PATCH 2535/3421] Fix bug after rebase --- freqtrade/exchange/ftx.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index 70f140ac5..0bd32b581 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -97,9 +97,9 @@ class Ftx(Exchange): raise OperationalException(e) from e @retrier - def cancel_stoploss_order(self, order_id: str, pair: str) -> None: + def cancel_stoploss_order(self, order_id: str, pair: str) -> Dict: if self._config['dry_run']: - return + return {} try: return self._api.cancel_order(order_id, pair, params={'type': 'stop'}) except ccxt.InvalidOrder as e: From b58fd179f231ed304d8d47d85c8d43169218b0a3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 10:05:14 +0200 Subject: [PATCH 2536/3421] Don't hardcode pair ... --- freqtrade/exchange/ftx.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index 0bd32b581..1bc97c4d3 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -79,7 +79,7 @@ class Ftx(Exchange): raise InvalidOrderException( f'Tried to get an invalid dry-run-order (id: {order_id}). Message: {e}') from e try: - orders = self._api.fetch_orders('BNB/USD', None, params={'type': 'stop'}) + orders = self._api.fetch_orders(pair, None, params={'type': 'stop'}) order = [order for order in orders if order['id'] == order_id] if len(order) == 1: From 1d9aeef792a4eaa100646f04aaf6e5d47a2169b9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 10:36:23 +0200 Subject: [PATCH 2537/3421] Support stop order in persistence --- freqtrade/persistence.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 823bf6dc0..2e02c3999 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -374,7 +374,7 @@ class Trade(_DECL_BASE): elif order_type in ('market', 'limit') and order['side'] == 'sell': self.close(order['price']) logger.info('%s_SELL has been fulfilled for %s.', order_type.upper(), self) - elif order_type in ('stop_loss_limit', 'stop-loss'): + elif order_type in ('stop_loss_limit', 'stop-loss', 'stop'): self.stoploss_order_id = None self.close_rate_requested = self.stop_loss logger.info('%s is hit for %s.', order_type.upper(), self) From 77a62b845a1d5c13146966e3609f40e99f39fbf2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 11:24:23 +0200 Subject: [PATCH 2538/3421] Fix some comments --- freqtrade/exchange/ftx.py | 2 +- tests/exchange/test_exchange.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index 1bc97c4d3..20d643a83 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -30,7 +30,6 @@ class Ftx(Exchange): """ Creates a stoploss market order. Stoploss market orders is the only stoploss type supported by ftx. - TODO: This doesnot work yet as the order cannot be aquired via fetch_orders - so Freqtrade assumes the order as always missing. """ ordertype = "stop" @@ -46,6 +45,7 @@ class Ftx(Exchange): params = self._params.copy() amount = self.amount_to_precision(pair, amount) + # set orderPrice to place limit order (?) order = self._api.create_order(symbol=pair, type=ordertype, side='sell', amount=amount, price=stop_price, params=params) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index c06b934ba..dc272de36 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1898,6 +1898,7 @@ def test_get_stoploss_order(default_conf, mocker, exchange_name): 'get_stoploss_order', 'fetch_order', order_id='_', pair='TKN/BTC') + @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_name(default_conf, mocker, exchange_name): exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) From f0eb0bc350a876c514deb63e331cedac6707a884 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 1 Jun 2020 11:33:40 +0200 Subject: [PATCH 2539/3421] Support limit orders --- freqtrade/exchange/ftx.py | 12 +++++++++--- tests/exchange/test_ftx.py | 24 ++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index 20d643a83..73347f1eb 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -28,9 +28,13 @@ class Ftx(Exchange): def stoploss(self, pair: str, amount: float, stop_price: float, order_types: Dict) -> Dict: """ - Creates a stoploss market order. - Stoploss market orders is the only stoploss type supported by ftx. + Creates a stoploss order. + depending on order_types.stoploss configuration, uses 'market' or limit order. + + Limit orders are defined by having orderPrice set, otherwise a market order is used. """ + limit_price_pct = order_types.get('stoploss_on_exchange_limit_ratio', 0.99) + limit_rate = stop_price * limit_price_pct ordertype = "stop" @@ -43,9 +47,11 @@ class Ftx(Exchange): try: params = self._params.copy() + if order_types.get('stoploss', 'market') == 'limit': + # set orderPrice to place limit order, otherwise it's a market order + params['orderPrice'] = limit_rate amount = self.amount_to_precision(pair, amount) - # set orderPrice to place limit order (?) order = self._api.create_order(symbol=pair, type=ordertype, side='sell', amount=amount, price=stop_price, params=params) diff --git a/tests/exchange/test_ftx.py b/tests/exchange/test_ftx.py index 2b75e5324..bead63096 100644 --- a/tests/exchange/test_ftx.py +++ b/tests/exchange/test_ftx.py @@ -34,6 +34,14 @@ def test_stoploss_order_ftx(default_conf, mocker): # stoploss_on_exchange_limit_ratio is irrelevant for ftx market orders order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=190, order_types={'stoploss_on_exchange_limit_ratio': 1.05}) + + assert api_mock.create_order.call_args_list[0][1]['symbol'] == 'ETH/BTC' + assert api_mock.create_order.call_args_list[0][1]['type'] == STOPLOSS_ORDERTYPE + assert api_mock.create_order.call_args_list[0][1]['side'] == 'sell' + assert api_mock.create_order.call_args_list[0][1]['amount'] == 1 + assert api_mock.create_order.call_args_list[0][1]['price'] == 190 + assert 'orderPrice' not in api_mock.create_order.call_args_list[0][1]['params'] + assert api_mock.create_order.call_count == 1 api_mock.create_order.reset_mock() @@ -48,6 +56,22 @@ def test_stoploss_order_ftx(default_conf, mocker): assert api_mock.create_order.call_args_list[0][1]['side'] == 'sell' assert api_mock.create_order.call_args_list[0][1]['amount'] == 1 assert api_mock.create_order.call_args_list[0][1]['price'] == 220 + assert 'orderPrice' not in api_mock.create_order.call_args_list[0][1]['params'] + + api_mock.create_order.reset_mock() + order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, + order_types={'stoploss': 'limit'}) + + assert 'id' in order + assert 'info' in order + assert order['id'] == order_id + assert api_mock.create_order.call_args_list[0][1]['symbol'] == 'ETH/BTC' + assert api_mock.create_order.call_args_list[0][1]['type'] == STOPLOSS_ORDERTYPE + assert api_mock.create_order.call_args_list[0][1]['side'] == 'sell' + assert api_mock.create_order.call_args_list[0][1]['amount'] == 1 + assert api_mock.create_order.call_args_list[0][1]['price'] == 220 + assert 'orderPrice' in api_mock.create_order.call_args_list[0][1]['params'] + assert api_mock.create_order.call_args_list[0][1]['params']['orderPrice'] == 217.8 # test exception handling with pytest.raises(DependencyException): From 0dc1a8e0379852c01289e851cb36a4c9f13b6327 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 3 Jun 2020 19:40:30 +0200 Subject: [PATCH 2540/3421] Add profit sum to api response --- freqtrade/rpc/rpc.py | 20 +++++++++++++++----- freqtrade/rpc/telegram.py | 13 +++++++++---- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 91b35e9ad..d3fef7041 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -283,8 +283,9 @@ class RPC: # Prepare data to display profit_closed_coin_sum = round(sum(profit_closed_coin), 8) - profit_closed_percent = (round(mean(profit_closed_ratio) * 100, 2) if profit_closed_ratio - else 0.0) + profit_closed_ratio_mean = mean(profit_closed_ratio) if profit_closed_ratio else 0.0 + profit_closed_ratio_sum = sum(profit_closed_ratio) if profit_closed_ratio else 0.0 + profit_closed_fiat = self._fiat_converter.convert_amount( profit_closed_coin_sum, stake_currency, @@ -292,7 +293,8 @@ class RPC: ) if self._fiat_converter else 0 profit_all_coin_sum = round(sum(profit_all_coin), 8) - profit_all_percent = round(mean(profit_all_ratio) * 100, 2) if profit_all_ratio else 0.0 + profit_all_ratio_mean = mean(profit_all_ratio) if profit_all_ratio else 0.0 + profit_all_ratio_sum = sum(profit_all_ratio) if profit_all_ratio else 0.0 profit_all_fiat = self._fiat_converter.convert_amount( profit_all_coin_sum, stake_currency, @@ -304,10 +306,18 @@ class RPC: num = float(len(durations) or 1) return { 'profit_closed_coin': profit_closed_coin_sum, - 'profit_closed_percent': profit_closed_percent, + 'profit_closed_percent': round(profit_closed_ratio_mean * 100, 2), # DEPRECATED + 'profit_closed_percent_mean': round(profit_closed_ratio_mean * 100, 2), + 'profit_closed_ratio_mean': profit_closed_ratio_mean, + 'profit_closed_percent_sum': round(profit_closed_ratio_sum * 100, 2), + 'profit_closed_ratio_sum': profit_closed_ratio_sum, 'profit_closed_fiat': profit_closed_fiat, 'profit_all_coin': profit_all_coin_sum, - 'profit_all_percent': profit_all_percent, + 'profit_all_percent': round(profit_all_ratio_mean * 100, 2), # DEPRECATED + 'profit_all_percent_mean': round(profit_all_ratio_mean * 100, 2), + 'profit_all_ratio_mean': profit_all_ratio_mean, + 'profit_all_percent_sum': round(profit_all_ratio_sum * 100, 2), + 'profit_all_ratio_sum': profit_all_ratio_sum, 'profit_all_fiat': profit_all_fiat, 'trade_count': len(trades), 'closed_trade_count': len([t for t in trades if not t.is_open]), diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 8fa973d73..02c580ebd 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -315,10 +315,12 @@ class Telegram(RPC): stake_cur, fiat_disp_cur) profit_closed_coin = stats['profit_closed_coin'] - profit_closed_percent = stats['profit_closed_percent'] + profit_closed_percent_mean = stats['profit_closed_percent_mean'] + profit_closed_percent_sum = stats['profit_closed_percent_sum'] profit_closed_fiat = stats['profit_closed_fiat'] profit_all_coin = stats['profit_all_coin'] - profit_all_percent = stats['profit_all_percent'] + profit_all_percent_mean = stats['profit_all_percent_mean'] + profit_all_percent_sum = stats['profit_all_percent_sum'] profit_all_fiat = stats['profit_all_fiat'] trade_count = stats['trade_count'] first_trade_date = stats['first_trade_date'] @@ -333,13 +335,16 @@ class Telegram(RPC): if stats['closed_trade_count'] > 0: markdown_msg = ("*ROI:* Closed trades\n" f"∙ `{profit_closed_coin:.8f} {stake_cur} " - f"({profit_closed_percent:.2f}%)`\n" + f"({profit_closed_percent_mean:.2f}%) " + f"({profit_closed_percent_sum} \N{GREEK CAPITAL LETTER SIGMA}%)`\n" f"∙ `{profit_closed_fiat:.3f} {fiat_disp_cur}`\n") else: markdown_msg = "`No closed trade` \n" markdown_msg += (f"*ROI:* All trades\n" - f"∙ `{profit_all_coin:.8f} {stake_cur} ({profit_all_percent:.2f}%)`\n" + f"∙ `{profit_all_coin:.8f} {stake_cur} " + f"({profit_all_percent_mean:.2f}%) " + f"({profit_all_percent_sum} \N{GREEK CAPITAL LETTER SIGMA}%)`\n" f"∙ `{profit_all_fiat:.3f} {fiat_disp_cur}`\n" f"*Total Trade Count:* `{trade_count}`\n" f"*First Trade opened:* `{first_trade_date}`\n" From 6997524a04f27334bf383b3e07a6267b4f8d6923 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 3 Jun 2020 19:40:49 +0200 Subject: [PATCH 2541/3421] Fix tests for additional info --- tests/rpc/test_rpc_apiserver.py | 8 ++++++++ tests/rpc/test_rpc_telegram.py | 9 ++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index cacf49f62..70a06557f 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -428,9 +428,17 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li 'profit_all_coin': 6.217e-05, 'profit_all_fiat': 0, 'profit_all_percent': 6.2, + 'profit_all_percent_mean': 6.2, + 'profit_all_ratio_mean': 0.06201058, + 'profit_all_percent_sum': 6.2, + 'profit_all_ratio_sum': 0.06201058, 'profit_closed_coin': 6.217e-05, 'profit_closed_fiat': 0, 'profit_closed_percent': 6.2, + 'profit_closed_ratio_mean': 0.06201058, + 'profit_closed_percent_mean': 6.2, + 'profit_closed_ratio_sum': 0.06201058, + 'profit_closed_percent_sum': 6.2, 'trade_count': 1, 'closed_trade_count': 1, } diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index f81127c4c..4895d67e4 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -434,7 +434,8 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, assert msg_mock.call_count == 1 assert 'No closed trade' in msg_mock.call_args_list[-1][0][0] assert '*ROI:* All trades' in msg_mock.call_args_list[-1][0][0] - assert '∙ `-0.00000500 BTC (-0.50%)`' in msg_mock.call_args_list[-1][0][0] + assert ('∙ `-0.00000500 BTC (-0.50%) (-0.5 \N{GREEK CAPITAL LETTER SIGMA}%)`' + in msg_mock.call_args_list[-1][0][0]) msg_mock.reset_mock() # Update the ticker with a market going up @@ -447,10 +448,12 @@ def test_profit_handle(default_conf, update, ticker, ticker_sell_up, fee, telegram._profit(update=update, context=MagicMock()) assert msg_mock.call_count == 1 assert '*ROI:* Closed trades' in msg_mock.call_args_list[-1][0][0] - assert '∙ `0.00006217 BTC (6.20%)`' in msg_mock.call_args_list[-1][0][0] + assert ('∙ `0.00006217 BTC (6.20%) (6.2 \N{GREEK CAPITAL LETTER SIGMA}%)`' + in msg_mock.call_args_list[-1][0][0]) assert '∙ `0.933 USD`' in msg_mock.call_args_list[-1][0][0] assert '*ROI:* All trades' in msg_mock.call_args_list[-1][0][0] - assert '∙ `0.00006217 BTC (6.20%)`' in msg_mock.call_args_list[-1][0][0] + assert ('∙ `0.00006217 BTC (6.20%) (6.2 \N{GREEK CAPITAL LETTER SIGMA}%)`' + in msg_mock.call_args_list[-1][0][0]) assert '∙ `0.933 USD`' in msg_mock.call_args_list[-1][0][0] assert '*Best Performing:* `ETH/BTC: 6.20%`' in msg_mock.call_args_list[-1][0][0] From 2f07d21629b8aade68a5916303652133bf57d3cd Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 3 Jun 2020 20:20:39 +0200 Subject: [PATCH 2542/3421] Update documentation with FTX Stoploss on exchange --- docs/configuration.md | 12 ++++++++---- docs/exchanges.md | 5 +++++ docs/stoploss.md | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index da0f015e8..467190463 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -272,7 +272,7 @@ the static list of pairs) if we should buy. ### Understand order_types -The `order_types` configuration parameter maps actions (`buy`, `sell`, `stoploss`) to order-types (`market`, `limit`, ...) as well as configures stoploss to be on the exchange and defines stoploss on exchange update interval in seconds. +The `order_types` configuration parameter maps actions (`buy`, `sell`, `stoploss`, `emergencysell`) to order-types (`market`, `limit`, ...) as well as configures stoploss to be on the exchange and defines stoploss on exchange update interval in seconds. This allows to buy using limit orders, sell using limit-orders, and create stoplosses using using market orders. It also allows to set the @@ -288,8 +288,12 @@ If this is configured, the following 4 values (`buy`, `sell`, `stoploss` and `emergencysell` is an optional value, which defaults to `market` and is used when creating stoploss on exchange orders fails. The below is the default which is used if this is not configured in either strategy or configuration file. -Since `stoploss_on_exchange` uses limit orders, the exchange needs 2 prices, the stoploss_price and the Limit price. -`stoploss` defines the stop-price - and limit should be slightly below this. This defaults to 0.99 / 1% (configurable via `stoploss_on_exchange_limit_ratio`). +Not all Exchanges support `stoploss_on_exchange`. If an exchange supports both limit and market stoploss orders, then the value of `stoploss` will be used to determine the stoploss type. + +If `stoploss_on_exchange` uses limit orders, the exchange needs 2 prices, the stoploss_price and the Limit price. +`stoploss` defines the stop-price - and limit should be slightly below this. + +This defaults to 0.99 / 1% (configurable via `stoploss_on_exchange_limit_ratio`). Calculation example: we bought the asset at 100$. Stop-price is 95$, then limit would be `95 * 0.99 = 94.05$` - so the stoploss will happen between 95$ and 94.05$. @@ -331,7 +335,7 @@ Configuration: refer to [the stoploss documentation](stoploss.md). !!! Note - If `stoploss_on_exchange` is enabled and the stoploss is cancelled manually on the exchange, then the bot will create a new order. + If `stoploss_on_exchange` is enabled and the stoploss is cancelled manually on the exchange, then the bot will create a new stoploss order. !!! Warning "Warning: stoploss_on_exchange failures" If stoploss on exchange creation fails for some reason, then an "emergency sell" is initiated. By default, this will sell the asset using a market order. The order-type for the emergency-sell can be changed by setting the `emergencysell` value in the `order_types` dictionary - however this is not advised. diff --git a/docs/exchanges.md b/docs/exchanges.md index 81f017023..cd210eb69 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -64,6 +64,11 @@ print(res) ## FTX +!!! Tip "Stoploss on Exchange" + FTX supports `stoploss_on_exchange` and can use both stop-loss-market and stop-loss-limit orders. It provides great advantages, so we recommend to benefit from it. + You can use either `"limit"` or `"market"` in the `order_types.stoploss` configuration setting to decide. + + ### Using subaccounts To use subaccounts with FTX, you need to edit the configuration and add the following: diff --git a/docs/stoploss.md b/docs/stoploss.md index 0e43817ec..cd90a71b4 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -27,7 +27,7 @@ So this parameter will tell the bot how often it should update the stoploss orde This same logic will reapply a stoploss order on the exchange should you cancel it accidentally. !!! Note - Stoploss on exchange is only supported for Binance (stop-loss-limit) and Kraken (stop-loss-market) as of now. + Stoploss on exchange is only supported for Binance (stop-loss-limit), Kraken (stop-loss-market) and FTX (stop limit and stop-market) as of now. ## Static Stop Loss From 5c5dc6fffe67decf8df285cfc28733c0bd07567a Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 4 Jun 2020 06:56:30 +0200 Subject: [PATCH 2543/3421] Update test to reflect real trade after one cycle --- tests/rpc/test_rpc_apiserver.py | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index cacf49f62..8743ec7ba 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -495,6 +495,10 @@ def test_api_status(botclient, mocker, ticker, fee, markets): assert rc.json == [] ftbot.enter_positions() + trades = Trade.get_open_trades() + trades[0].open_order_id = None + ftbot.exit_positions(trades) + rc = client_get(client, f"{BASE_URI}/status") assert_response(rc) assert len(rc.json) == 1 @@ -509,25 +513,26 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'close_rate': None, 'current_profit': -0.00408133, 'current_profit_pct': -0.41, + 'current_profit_abs': -4.09e-06, 'current_rate': 1.099e-05, 'open_date': ANY, 'open_date_hum': 'just now', 'open_timestamp': ANY, - 'open_order': '(limit buy rem=0.00000000)', + 'open_order': None, 'open_rate': 1.098e-05, 'pair': 'ETH/BTC', 'stake_amount': 0.001, - 'stop_loss': 0.0, - 'stop_loss_abs': 0.0, - 'stop_loss_pct': None, - 'stop_loss_ratio': None, + 'stop_loss': 9.882e-06, + 'stop_loss_abs': 9.882e-06, + 'stop_loss_pct': -10.0, + 'stop_loss_ratio': -0.1, 'stoploss_order_id': None, - 'stoploss_last_update': None, - 'stoploss_last_update_timestamp': None, - 'initial_stop_loss': 0.0, - 'initial_stop_loss_abs': 0.0, - 'initial_stop_loss_pct': None, - 'initial_stop_loss_ratio': None, + 'stoploss_last_update': ANY, + 'stoploss_last_update_timestamp': ANY, + 'initial_stop_loss': 9.882e-06, + 'initial_stop_loss_abs': 9.882e-06, + 'initial_stop_loss_pct': -10.0, + 'initial_stop_loss_ratio': -0.1, 'trade_id': 1, 'close_rate_requested': None, 'current_rate': 1.099e-05, @@ -539,9 +544,9 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'fee_open_currency': None, 'open_date': ANY, 'is_open': True, - 'max_rate': 0.0, - 'min_rate': None, - 'open_order_id': ANY, + 'max_rate': 1.099e-05, + 'min_rate': 1.098e-05, + 'open_order_id': None, 'open_rate_requested': 1.098e-05, 'open_trade_price': 0.0010025, 'sell_reason': None, From 412b50dac5471e5392395c771298fbb118dcc8bb Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 4 Jun 2020 06:56:59 +0200 Subject: [PATCH 2544/3421] Add current stoploss calculations --- freqtrade/rpc/rpc.py | 13 +++++++++++++ tests/rpc/test_rpc_apiserver.py | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 91b35e9ad..dd6b084a2 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -130,6 +130,14 @@ class RPC: except DependencyException: current_rate = NAN current_profit = trade.calc_profit_ratio(current_rate) + current_profit_abs = trade.calc_profit(current_rate) + # Calculate guaranteed profit (in case of trailing stop) + stoploss_entrypoint_dist = trade.open_rate - trade.stop_loss + stoploss_entrypoint_dist_ratio = stoploss_entrypoint_dist / trade.stop_loss + # calculate distance to stoploss + stoploss_current_dist = trade.stop_loss - current_rate + stoploss_current_dist_ratio = stoploss_current_dist / current_rate + fmt_close_profit = (f'{round(trade.close_profit * 100, 2):.2f}%' if trade.close_profit is not None else None) trade_dict = trade.to_json() @@ -140,6 +148,11 @@ class RPC: current_rate=current_rate, current_profit=current_profit, current_profit_pct=round(current_profit * 100, 2), + current_profit_abs=current_profit_abs, + stoploss_current_dist=stoploss_current_dist, + stoploss_current_dist_ratio=round(stoploss_current_dist_ratio, 8), + stoploss_entrypoint_dist=stoploss_entrypoint_dist, + stoploss_entrypoint_dist_ratio=round(stoploss_entrypoint_dist_ratio, 8), open_order='({} {} rem={:.8f})'.format( order['type'], order['side'], order['remaining'] ) if order else None, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 8743ec7ba..906e9f2fe 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -533,6 +533,10 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'initial_stop_loss_abs': 9.882e-06, 'initial_stop_loss_pct': -10.0, 'initial_stop_loss_ratio': -0.1, + 'stoploss_current_dist': -1.1080000000000002e-06, + 'stoploss_current_dist_ratio': -0.10081893, + 'stoploss_entrypoint_dist': 1.0980000000000003e-06, + 'stoploss_entrypoint_dist_ratio': 0.11111111, 'trade_id': 1, 'close_rate_requested': None, 'current_rate': 1.099e-05, From 7bd55aa2f1c6c60c6b50ffd7d8965146c633f4e7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 4 Jun 2020 07:04:32 +0200 Subject: [PATCH 2545/3421] Use correct calcuation for "locked in profit" --- freqtrade/rpc/rpc.py | 8 ++++---- tests/rpc/test_rpc_apiserver.py | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index dd6b084a2..fc774ded2 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -132,8 +132,8 @@ class RPC: current_profit = trade.calc_profit_ratio(current_rate) current_profit_abs = trade.calc_profit(current_rate) # Calculate guaranteed profit (in case of trailing stop) - stoploss_entrypoint_dist = trade.open_rate - trade.stop_loss - stoploss_entrypoint_dist_ratio = stoploss_entrypoint_dist / trade.stop_loss + stoploss_entry_dist = trade.calc_profit(trade.stop_loss) + stoploss_entry_dist_ratio = trade.calc_profit_ratio(trade.stop_loss) # calculate distance to stoploss stoploss_current_dist = trade.stop_loss - current_rate stoploss_current_dist_ratio = stoploss_current_dist / current_rate @@ -151,8 +151,8 @@ class RPC: current_profit_abs=current_profit_abs, stoploss_current_dist=stoploss_current_dist, stoploss_current_dist_ratio=round(stoploss_current_dist_ratio, 8), - stoploss_entrypoint_dist=stoploss_entrypoint_dist, - stoploss_entrypoint_dist_ratio=round(stoploss_entrypoint_dist_ratio, 8), + stoploss_entry_dist=stoploss_entry_dist, + stoploss_entry_dist_ratio=round(stoploss_entry_dist_ratio, 8), open_order='({} {} rem={:.8f})'.format( order['type'], order['side'], order['remaining'] ) if order else None, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 906e9f2fe..3555057a9 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -535,8 +535,8 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'initial_stop_loss_ratio': -0.1, 'stoploss_current_dist': -1.1080000000000002e-06, 'stoploss_current_dist_ratio': -0.10081893, - 'stoploss_entrypoint_dist': 1.0980000000000003e-06, - 'stoploss_entrypoint_dist_ratio': 0.11111111, + 'stoploss_entry_dist': -0.00010475, + 'stoploss_entry_dist_ratio': -0.10448878, 'trade_id': 1, 'close_rate_requested': None, 'current_rate': 1.099e-05, From 6a88eb603bde0eea17aa18bd318e50345b70baed Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 4 Jun 2020 07:20:50 +0200 Subject: [PATCH 2546/3421] Update failing test --- tests/rpc/test_rpc.py | 73 +++++++++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 30 deletions(-) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 1de73ada9..ef1c1bc16 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -42,8 +42,12 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: rpc._rpc_trade_status() freqtradebot.enter_positions() + trades = Trade.get_open_trades() + trades[0].open_order_id = None + freqtradebot.exit_positions(trades) + results = rpc._rpc_trade_status() - assert { + assert results[0] == { 'trade_id': 1, 'pair': 'ETH/BTC', 'base_currency': 'BTC', @@ -54,11 +58,11 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'fee_open': ANY, 'fee_open_cost': ANY, 'fee_open_currency': ANY, - 'fee_close': ANY, + 'fee_close': fee.return_value, 'fee_close_cost': ANY, 'fee_close_currency': ANY, 'open_rate_requested': ANY, - 'open_trade_price': ANY, + 'open_trade_price': 0.0010025, 'close_rate_requested': ANY, 'sell_reason': ANY, 'sell_order_status': ANY, @@ -80,28 +84,32 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'close_profit_abs': None, 'current_profit': -0.00408133, 'current_profit_pct': -0.41, - 'stop_loss': 0.0, - 'stop_loss_abs': 0.0, - 'stop_loss_pct': None, - 'stop_loss_ratio': None, + 'current_profit_abs': -4.09e-06, + 'stop_loss': 9.882e-06, + 'stop_loss_abs': 9.882e-06, + 'stop_loss_pct': -10.0, + 'stop_loss_ratio': -0.1, 'stoploss_order_id': None, - 'stoploss_last_update': None, - 'stoploss_last_update_timestamp': None, - 'initial_stop_loss': 0.0, - 'initial_stop_loss_abs': 0.0, - 'initial_stop_loss_pct': None, - 'initial_stop_loss_ratio': None, - 'open_order': '(limit buy rem=0.00000000)', + 'stoploss_last_update': ANY, + 'stoploss_last_update_timestamp': ANY, + 'initial_stop_loss': 9.882e-06, + 'initial_stop_loss_abs': 9.882e-06, + 'initial_stop_loss_pct': -10.0, + 'initial_stop_loss_ratio': -0.1, + 'stoploss_current_dist': -1.1080000000000002e-06, + 'stoploss_current_dist_ratio': -0.10081893, + 'stoploss_entry_dist': -0.00010475, + 'stoploss_entry_dist_ratio': -0.10448878, + 'open_order': None, 'exchange': 'bittrex', - - } == results[0] + } mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', MagicMock(side_effect=DependencyException("Pair 'ETH/BTC' not available"))) results = rpc._rpc_trade_status() assert isnan(results[0]['current_profit']) assert isnan(results[0]['current_rate']) - assert { + assert results[0] == { 'trade_id': 1, 'pair': 'ETH/BTC', 'base_currency': 'BTC', @@ -112,7 +120,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'fee_open': ANY, 'fee_open_cost': ANY, 'fee_open_currency': ANY, - 'fee_close': ANY, + 'fee_close': fee.return_value, 'fee_close_cost': ANY, 'fee_close_currency': ANY, 'open_rate_requested': ANY, @@ -138,20 +146,25 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'close_profit_abs': None, 'current_profit': ANY, 'current_profit_pct': ANY, - 'stop_loss': 0.0, - 'stop_loss_abs': 0.0, - 'stop_loss_pct': None, - 'stop_loss_ratio': None, + 'current_profit_abs': ANY, + 'stop_loss': 9.882e-06, + 'stop_loss_abs': 9.882e-06, + 'stop_loss_pct': -10.0, + 'stop_loss_ratio': -0.1, 'stoploss_order_id': None, - 'stoploss_last_update': None, - 'stoploss_last_update_timestamp': None, - 'initial_stop_loss': 0.0, - 'initial_stop_loss_abs': 0.0, - 'initial_stop_loss_pct': None, - 'initial_stop_loss_ratio': None, - 'open_order': '(limit buy rem=0.00000000)', + 'stoploss_last_update': ANY, + 'stoploss_last_update_timestamp': ANY, + 'initial_stop_loss': 9.882e-06, + 'initial_stop_loss_abs': 9.882e-06, + 'initial_stop_loss_pct': -10.0, + 'initial_stop_loss_ratio': -0.1, + 'stoploss_current_dist': ANY, + 'stoploss_current_dist_ratio': ANY, + 'stoploss_entry_dist': -0.00010475, + 'stoploss_entry_dist_ratio': -0.10448878, + 'open_order': None, 'exchange': 'bittrex', - } == results[0] + } def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: From b27348490d3d6883701c0f9dafe9ab0885f29034 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 5 Jun 2020 13:59:00 +0200 Subject: [PATCH 2547/3421] Add rate-limiting note for Kraken datadownload --- docs/exchanges.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/exchanges.md b/docs/exchanges.md index 81f017023..075329a07 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -30,6 +30,15 @@ Binance has been split into 3, and users must use the correct ccxt exchange ID f The Kraken API does only provide 720 historic candles, which is sufficient for Freqtrade dry-run and live trade modes, but is a problem for backtesting. To download data for the Kraken exchange, using `--dl-trades` is mandatory, otherwise the bot will download the same 720 candles over and over, and you'll not have enough backtest data. +Due to the heavy rate-limiting applied by Kraken, the follwoing configuration section should be used to download data: + +``` json + "ccxt_async_config": { + "enableRateLimit": true, + "rateLimit": 3100 + }, +``` + ## Bittrex ### Order types From ff289a71776239e2ac0dd35e2fb40cfa44a83e83 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Fri, 5 Jun 2020 19:08:54 +0200 Subject: [PATCH 2548/3421] Updated tests to work with Telegram emojis --- tests/rpc/test_rpc_telegram.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index f81127c4c..2cecc35d1 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1221,8 +1221,9 @@ def test_send_msg_buy_notification(default_conf, mocker) -> None: 'amount': 1333.3333333333335, 'open_date': arrow.utcnow().shift(hours=-1) }) + '🔵'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] \ - == '*Bittrex:* Buying ETH/BTC\n' \ + == '\N{LARGE BLUE CIRCLE} *Bittrex:* Buying ETH/BTC\n' \ '*Amount:* `1333.33333333`\n' \ '*Open Rate:* `0.00001099`\n' \ '*Current Rate:* `0.00001099`\n' \ @@ -1243,8 +1244,9 @@ def test_send_msg_buy_cancel_notification(default_conf, mocker) -> None: 'exchange': 'Bittrex', 'pair': 'ETH/BTC', }) + '⚠'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] \ - == ('*Bittrex:* Cancelling Open Buy Order for ETH/BTC') + == ('\N{WARNING SIGN} *Bittrex:* Cancelling Open Buy Order for ETH/BTC') def test_send_msg_sell_notification(default_conf, mocker) -> None: @@ -1276,8 +1278,9 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: 'open_date': arrow.utcnow().shift(hours=-1), 'close_date': arrow.utcnow(), }) + '⚠'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] \ - == ('*Binance:* Selling KEY/ETH\n' + == ('\N{WARNING SIGN} *Binance:* Selling KEY/ETH\n' '*Amount:* `1333.33333333`\n' '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' @@ -1305,7 +1308,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: 'close_date': arrow.utcnow(), }) assert msg_mock.call_args[0][0] \ - == ('*Binance:* Selling KEY/ETH\n' + == ('\N{WARNING SIGN} *Binance:* Selling KEY/ETH\n' '*Amount:* `1333.33333333`\n' '*Open Rate:* `0.00007500`\n' '*Current Rate:* `0.00003201`\n' @@ -1334,8 +1337,9 @@ def test_send_msg_sell_cancel_notification(default_conf, mocker) -> None: 'pair': 'KEY/ETH', 'reason': 'Cancelled on exchange' }) + '⚠'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] \ - == ('*Binance:* Cancelling Open Sell Order for KEY/ETH. Reason: Cancelled on exchange') + == ('\N{WARNING SIGN} *Binance:* Cancelling Open Sell Order for KEY/ETH. Reason: Cancelled on exchange') msg_mock.reset_mock() telegram.send_msg({ @@ -1345,7 +1349,7 @@ def test_send_msg_sell_cancel_notification(default_conf, mocker) -> None: 'reason': 'timeout' }) assert msg_mock.call_args[0][0] \ - == ('*Binance:* Cancelling Open Sell Order for KEY/ETH. Reason: timeout') + == ('\N{WARNING SIGN} *Binance:* Cancelling Open Sell Order for KEY/ETH. Reason: timeout') # Reset singleton function to avoid random breaks telegram._fiat_converter.convert_amount = old_convamount @@ -1379,7 +1383,8 @@ def test_warning_notification(default_conf, mocker) -> None: 'type': RPCMessageType.WARNING_NOTIFICATION, 'status': 'message' }) - assert msg_mock.call_args[0][0] == '*Warning:* `message`' + '⚠'.encode('ascii', 'namereplace') + assert msg_mock.call_args[0][0] == '\N{WARNING SIGN} *Warning:* `message`' def test_custom_notification(default_conf, mocker) -> None: @@ -1437,8 +1442,9 @@ def test_send_msg_buy_notification_no_fiat(default_conf, mocker) -> None: 'amount': 1333.3333333333335, 'open_date': arrow.utcnow().shift(hours=-1) }) + '🔵'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] \ - == '*Bittrex:* Buying ETH/BTC\n' \ + == '\N{LARGE BLUE CIRCLE} *Bittrex:* Buying ETH/BTC\n' \ '*Amount:* `1333.33333333`\n' \ '*Open Rate:* `0.00001099`\n' \ '*Current Rate:* `0.00001099`\n' \ @@ -1473,8 +1479,9 @@ def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None: 'open_date': arrow.utcnow().shift(hours=-2, minutes=-35, seconds=-3), 'close_date': arrow.utcnow(), }) + '⚠'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] \ - == '*Binance:* Selling KEY/ETH\n' \ + == '\N{WARNING SIGN} *Binance:* Selling KEY/ETH\n' \ '*Amount:* `1333.33333333`\n' \ '*Open Rate:* `0.00007500`\n' \ '*Current Rate:* `0.00003201`\n' \ From 080efd1102835367f135827c9a7dc4be1623be84 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Fri, 5 Jun 2020 19:09:49 +0200 Subject: [PATCH 2549/3421] Added unicoded emoji's to Telegram messages --- freqtrade/rpc/telegram.py | 61 +++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 8fa973d73..e496d3fa6 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -19,7 +19,6 @@ logger = logging.getLogger(__name__) logger.debug('Included module rpc.telegram ...') - MAX_TELEGRAM_MESSAGE_LENGTH = 4096 @@ -29,6 +28,7 @@ def authorized_only(command_handler: Callable[..., None]) -> Callable[..., Any]: :param command_handler: Telegram CommandHandler :return: decorated function """ + def wrapper(self, *args, **kwargs): """ Decorator logic """ update = kwargs.get('update') or args[0] @@ -126,6 +126,12 @@ class Telegram(RPC): def send_msg(self, msg: Dict[str, Any]) -> None: """ Send a message to telegram channel """ + '🔵'.encode('ascii', 'namereplace') + '🚀'.encode('ascii', 'namereplace') + '✳'.encode('ascii', 'namereplace') + '❌'.encode('ascii', 'namereplace') + '⚠'.encode('ascii', 'namereplace') + if msg['type'] == RPCMessageType.BUY_NOTIFICATION: if self._fiat_converter: msg['stake_amount_fiat'] = self._fiat_converter.convert_amount( @@ -133,7 +139,7 @@ class Telegram(RPC): else: msg['stake_amount_fiat'] = 0 - message = ("*{exchange}:* Buying {pair}\n" + message = ("\N{LARGE BLUE CIRCLE} *{exchange}:* Buying {pair}\n" "*Amount:* `{amount:.8f}`\n" "*Open Rate:* `{limit:.8f}`\n" "*Current Rate:* `{current_rate:.8f}`\n" @@ -144,7 +150,7 @@ class Telegram(RPC): message += ")`" elif msg['type'] == RPCMessageType.BUY_CANCEL_NOTIFICATION: - message = "*{exchange}:* Cancelling Open Buy Order for {pair}".format(**msg) + message = "\N{WARNING SIGN} *{exchange}:* Cancelling Open Buy Order for {pair}".format(**msg) elif msg['type'] == RPCMessageType.SELL_NOTIFICATION: msg['amount'] = round(msg['amount'], 8) @@ -153,33 +159,44 @@ class Telegram(RPC): microsecond=0) - msg['open_date'].replace(microsecond=0) msg['duration_min'] = msg['duration'].total_seconds() / 60 - message = ("*{exchange}:* Selling {pair}\n" - "*Amount:* `{amount:.8f}`\n" - "*Open Rate:* `{open_rate:.8f}`\n" - "*Current Rate:* `{current_rate:.8f}`\n" - "*Close Rate:* `{limit:.8f}`\n" - "*Sell Reason:* `{sell_reason}`\n" - "*Duration:* `{duration} ({duration_min:.1f} min)`\n" - "*Profit:* `{profit_percent:.2f}%`").format(**msg) + if float(msg['profit_percent']) >= 5.0: + message = ("\N{ROCKET} *{exchange}:* Selling {pair}\n").format(**msg) + + elif float(msg['profit_percent']) >= 0.0: + message = "\N{EIGHT SPOKED ASTERISK} *{exchange}:* Selling {pair}\n" + + elif msg['sell_reason'] == "stop_loss": + message = ("\N{WARNING SIGN} *{exchange}:* Selling {pair}\n").format(**msg) + + else: + message = ("\N{CROSS MARK} *{exchange}:* Selling {pair}\n").format(**msg) + + message += ("*Amount:* `{amount:.8f}`\n" + "*Open Rate:* `{open_rate:.8f}`\n" + "*Current Rate:* `{current_rate:.8f}`\n" + "*Close Rate:* `{limit:.8f}`\n" + "*Sell Reason:* `{sell_reason}`\n" + "*Duration:* `{duration} ({duration_min:.1f} min)`\n" + "*Profit:* `{profit_percent:.2f}%`").format(**msg) # Check if all sell properties are available. # This might not be the case if the message origin is triggered by /forcesell if (all(prop in msg for prop in ['gain', 'fiat_currency', 'stake_currency']) - and self._fiat_converter): + and self._fiat_converter): msg['profit_fiat'] = self._fiat_converter.convert_amount( msg['profit_amount'], msg['stake_currency'], msg['fiat_currency']) message += (' `({gain}: {profit_amount:.8f} {stake_currency}' ' / {profit_fiat:.3f} {fiat_currency})`').format(**msg) elif msg['type'] == RPCMessageType.SELL_CANCEL_NOTIFICATION: - message = ("*{exchange}:* Cancelling Open Sell Order " + message = ("\N{WARNING SIGN} *{exchange}:* Cancelling Open Sell Order " "for {pair}. Reason: {reason}").format(**msg) elif msg['type'] == RPCMessageType.STATUS_NOTIFICATION: message = '*Status:* `{status}`'.format(**msg) elif msg['type'] == RPCMessageType.WARNING_NOTIFICATION: - message = '*Warning:* `{status}`'.format(**msg) + message = '\N{WARNING SIGN} *Warning:* `{status}`'.format(**msg) elif msg['type'] == RPCMessageType.CUSTOM_NOTIFICATION: message = '{status}'.format(**msg) @@ -222,8 +239,8 @@ class Telegram(RPC): # Adding initial stoploss only if it is different from stoploss "*Initial Stoploss:* `{initial_stop_loss:.8f}` " + ("`({initial_stop_loss_pct:.2f}%)`") if ( - r['stop_loss'] != r['initial_stop_loss'] - and r['initial_stop_loss_pct'] is not None) else "", + r['stop_loss'] != r['initial_stop_loss'] + and r['initial_stop_loss_pct'] is not None) else "", # Adding stoploss and stoploss percentage only if it is not None "*Stoploss:* `{stop_loss:.8f}` " + @@ -363,14 +380,14 @@ class Telegram(RPC): "This mode is still experimental!\n" "Starting capital: " f"`{self._config['dry_run_wallet']}` {self._config['stake_currency']}.\n" - ) + ) for currency in result['currencies']: if currency['est_stake'] > 0.0001: curr_output = "*{currency}:*\n" \ - "\t`Available: {free: .8f}`\n" \ - "\t`Balance: {balance: .8f}`\n" \ - "\t`Pending: {used: .8f}`\n" \ - "\t`Est. {stake}: {est_stake: .8f}`\n".format(**currency) + "\t`Available: {free: .8f}`\n" \ + "\t`Balance: {balance: .8f}`\n" \ + "\t`Pending: {used: .8f}`\n" \ + "\t`Est. {stake}: {est_stake: .8f}`\n".format(**currency) else: curr_output = "*{currency}:* not showing <1$ amount \n".format(**currency) @@ -587,7 +604,7 @@ class Telegram(RPC): "*/profit:* `Lists cumulative profit from all finished trades`\n" \ "*/forcesell |all:* `Instantly sells the given trade or all trades, " \ "regardless of profit`\n" \ - f"{forcebuy_text if self._config.get('forcebuy_enable', False) else '' }" \ + f"{forcebuy_text if self._config.get('forcebuy_enable', False) else ''}" \ "*/performance:* `Show performance of each finished trade grouped by pair`\n" \ "*/daily :* `Shows profit or loss per day, over the last n days`\n" \ "*/count:* `Show number of trades running compared to allowed number of trades`" \ From 4c6a7a354dfae8d0a60f8243aefa91f400a01604 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Fri, 5 Jun 2020 20:04:11 +0200 Subject: [PATCH 2550/3421] Removed '.encode' lines, unessecary --- freqtrade/rpc/telegram.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index e496d3fa6..6b1450472 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -126,12 +126,6 @@ class Telegram(RPC): def send_msg(self, msg: Dict[str, Any]) -> None: """ Send a message to telegram channel """ - '🔵'.encode('ascii', 'namereplace') - '🚀'.encode('ascii', 'namereplace') - '✳'.encode('ascii', 'namereplace') - '❌'.encode('ascii', 'namereplace') - '⚠'.encode('ascii', 'namereplace') - if msg['type'] == RPCMessageType.BUY_NOTIFICATION: if self._fiat_converter: msg['stake_amount_fiat'] = self._fiat_converter.convert_amount( From 08b9abed3aeb722357ced69fe67489acc05e3eaa Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Fri, 5 Jun 2020 20:05:55 +0200 Subject: [PATCH 2551/3421] Removed '.encode', unecessary --- tests/rpc/test_rpc_telegram.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 2cecc35d1..129bdf9d1 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1221,7 +1221,6 @@ def test_send_msg_buy_notification(default_conf, mocker) -> None: 'amount': 1333.3333333333335, 'open_date': arrow.utcnow().shift(hours=-1) }) - '🔵'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] \ == '\N{LARGE BLUE CIRCLE} *Bittrex:* Buying ETH/BTC\n' \ '*Amount:* `1333.33333333`\n' \ @@ -1244,7 +1243,6 @@ def test_send_msg_buy_cancel_notification(default_conf, mocker) -> None: 'exchange': 'Bittrex', 'pair': 'ETH/BTC', }) - '⚠'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] \ == ('\N{WARNING SIGN} *Bittrex:* Cancelling Open Buy Order for ETH/BTC') @@ -1278,7 +1276,6 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None: 'open_date': arrow.utcnow().shift(hours=-1), 'close_date': arrow.utcnow(), }) - '⚠'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] \ == ('\N{WARNING SIGN} *Binance:* Selling KEY/ETH\n' '*Amount:* `1333.33333333`\n' @@ -1337,7 +1334,6 @@ def test_send_msg_sell_cancel_notification(default_conf, mocker) -> None: 'pair': 'KEY/ETH', 'reason': 'Cancelled on exchange' }) - '⚠'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] \ == ('\N{WARNING SIGN} *Binance:* Cancelling Open Sell Order for KEY/ETH. Reason: Cancelled on exchange') @@ -1383,7 +1379,6 @@ def test_warning_notification(default_conf, mocker) -> None: 'type': RPCMessageType.WARNING_NOTIFICATION, 'status': 'message' }) - '⚠'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] == '\N{WARNING SIGN} *Warning:* `message`' @@ -1442,7 +1437,6 @@ def test_send_msg_buy_notification_no_fiat(default_conf, mocker) -> None: 'amount': 1333.3333333333335, 'open_date': arrow.utcnow().shift(hours=-1) }) - '🔵'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] \ == '\N{LARGE BLUE CIRCLE} *Bittrex:* Buying ETH/BTC\n' \ '*Amount:* `1333.33333333`\n' \ @@ -1479,7 +1473,6 @@ def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None: 'open_date': arrow.utcnow().shift(hours=-2, minutes=-35, seconds=-3), 'close_date': arrow.utcnow(), }) - '⚠'.encode('ascii', 'namereplace') assert msg_mock.call_args[0][0] \ == '\N{WARNING SIGN} *Binance:* Selling KEY/ETH\n' \ '*Amount:* `1333.33333333`\n' \ From 6694ac50779619eec4f761a3f28175833d4080c9 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Fri, 5 Jun 2020 20:10:52 +0200 Subject: [PATCH 2552/3421] Splitted a line that was too long, resulting in flake8 error --- tests/rpc/test_rpc_telegram.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 129bdf9d1..15fe0eaf9 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1335,7 +1335,8 @@ def test_send_msg_sell_cancel_notification(default_conf, mocker) -> None: 'reason': 'Cancelled on exchange' }) assert msg_mock.call_args[0][0] \ - == ('\N{WARNING SIGN} *Binance:* Cancelling Open Sell Order for KEY/ETH. Reason: Cancelled on exchange') + == ('\N{WARNING SIGN} *Binance:* Cancelling Open Sell Order for KEY/ETH. ' + 'Reason: Cancelled on exchange') msg_mock.reset_mock() telegram.send_msg({ From f34bcc5fd3b629acfaeb55cd51854b1e719f44f8 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Fri, 5 Jun 2020 20:15:22 +0200 Subject: [PATCH 2553/3421] Splitted a line that was too long, resulting in error for flake8 --- freqtrade/rpc/telegram.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 6b1450472..7dbd9cd83 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -144,7 +144,8 @@ class Telegram(RPC): message += ")`" elif msg['type'] == RPCMessageType.BUY_CANCEL_NOTIFICATION: - message = "\N{WARNING SIGN} *{exchange}:* Cancelling Open Buy Order for {pair}".format(**msg) + message = "\N{WARNING SIGN} *{exchange}:* " \ + "Cancelling Open Buy Order for {pair}".format(**msg) elif msg['type'] == RPCMessageType.SELL_NOTIFICATION: msg['amount'] = round(msg['amount'], 8) From 5f9994c9ed1d7749412bf8201932f44e4e4b4c69 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 5 Jun 2020 20:24:21 +0200 Subject: [PATCH 2554/3421] Reduce verbosity of sell-rate fetching --- freqtrade/freqtradebot.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a74b0a5a1..5104e4f95 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -702,11 +702,10 @@ class FreqtradeBot: self.dataprovider.ohlcv(trade.pair, self.strategy.ticker_interval)) if config_ask_strategy.get('use_order_book', False): - # logger.debug('Order book %s',orderBook) order_book_min = config_ask_strategy.get('order_book_min', 1) order_book_max = config_ask_strategy.get('order_book_max', 1) - logger.info(f'Using order book between {order_book_min} and {order_book_max} ' - f'for selling {trade.pair}...') + logger.debug(f'Using order book between {order_book_min} and {order_book_max} ' + f'for selling {trade.pair}...') order_book = self._order_book_gen(trade.pair, f"{config_ask_strategy['price_side']}s", order_book_min=order_book_min, From 8c32d691c7ee4cee9ff860748b3ebee2c1187388 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 5 Jun 2020 20:31:40 +0200 Subject: [PATCH 2555/3421] Add information about bid and ask strategy to /showconfig --- freqtrade/rpc/rpc.py | 2 ++ freqtrade/rpc/telegram.py | 4 +++- tests/rpc/test_rpc_apiserver.py | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 91b35e9ad..a5005f35e 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -105,6 +105,8 @@ class RPC: 'exchange': config['exchange']['name'], 'strategy': config['strategy'], 'forcebuy_enabled': config.get('forcebuy_enable', False), + 'ask_strategy': config.get('ask_strategy', {}), + 'bid_strategy': config.get('bid_strategy', {}), 'state': str(self._freqtrade.state) } return val diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 8fa973d73..09a99ad85 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -636,13 +636,15 @@ class Telegram(RPC): else: sl_info = f"*Stoploss:* `{val['stoploss']}`\n" - + import json self._send_msg( f"*Mode:* `{'Dry-run' if val['dry_run'] else 'Live'}`\n" f"*Exchange:* `{val['exchange']}`\n" f"*Stake per trade:* `{val['stake_amount']} {val['stake_currency']}`\n" f"*Max open Trades:* `{val['max_open_trades']}`\n" f"*Minimum ROI:* `{val['minimal_roi']}`\n" + f"*Ask strategy:* ```\n{val['ask_strategy']}```\n" + f"*Bid strategy:* ```\n{json.dumps(val['bid_strategy'])}```\n" f"{sl_info}" f"*Ticker Interval:* `{val['ticker_interval']}`\n" f"*Strategy:* `{val['strategy']}`\n" diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index cacf49f62..6a850ecc5 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -325,6 +325,8 @@ def test_api_show_config(botclient, mocker): assert rc.json['ticker_interval'] == '5m' assert rc.json['state'] == 'running' assert not rc.json['trailing_stop'] + assert 'bid_strategy' in rc.json + assert 'ask_strategy' in rc.json def test_api_daily(botclient, mocker, ticker, fee, markets): From 1a5cd85900f232ee24022dd82b9ebb2732b88f4b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 6 Jun 2020 13:15:01 +0200 Subject: [PATCH 2556/3421] Fix typo Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/exchanges.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/exchanges.md b/docs/exchanges.md index 075329a07..aef356ea9 100644 --- a/docs/exchanges.md +++ b/docs/exchanges.md @@ -30,7 +30,7 @@ Binance has been split into 3, and users must use the correct ccxt exchange ID f The Kraken API does only provide 720 historic candles, which is sufficient for Freqtrade dry-run and live trade modes, but is a problem for backtesting. To download data for the Kraken exchange, using `--dl-trades` is mandatory, otherwise the bot will download the same 720 candles over and over, and you'll not have enough backtest data. -Due to the heavy rate-limiting applied by Kraken, the follwoing configuration section should be used to download data: +Due to the heavy rate-limiting applied by Kraken, the following configuration section should be used to download data: ``` json "ccxt_async_config": { From b2316cdd00fd1f946a8bd07cb55e39e0a8720859 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 6 Jun 2020 13:32:06 +0200 Subject: [PATCH 2557/3421] Extract sell_smoij logic into it's own function --- freqtrade/rpc/telegram.py | 41 +++++++++++++++++++--------------- tests/rpc/test_rpc_telegram.py | 23 +++++++++++++++++++ 2 files changed, 46 insertions(+), 18 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 7dbd9cd83..0dc57e5b9 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -154,25 +154,16 @@ class Telegram(RPC): microsecond=0) - msg['open_date'].replace(microsecond=0) msg['duration_min'] = msg['duration'].total_seconds() / 60 - if float(msg['profit_percent']) >= 5.0: - message = ("\N{ROCKET} *{exchange}:* Selling {pair}\n").format(**msg) + msg['emoij'] = self._get_sell_emoij(msg) - elif float(msg['profit_percent']) >= 0.0: - message = "\N{EIGHT SPOKED ASTERISK} *{exchange}:* Selling {pair}\n" - - elif msg['sell_reason'] == "stop_loss": - message = ("\N{WARNING SIGN} *{exchange}:* Selling {pair}\n").format(**msg) - - else: - message = ("\N{CROSS MARK} *{exchange}:* Selling {pair}\n").format(**msg) - - message += ("*Amount:* `{amount:.8f}`\n" - "*Open Rate:* `{open_rate:.8f}`\n" - "*Current Rate:* `{current_rate:.8f}`\n" - "*Close Rate:* `{limit:.8f}`\n" - "*Sell Reason:* `{sell_reason}`\n" - "*Duration:* `{duration} ({duration_min:.1f} min)`\n" - "*Profit:* `{profit_percent:.2f}%`").format(**msg) + message = ("{emoij} *{exchange}:* Selling {pair}\n" + "*Amount:* `{amount:.8f}`\n" + "*Open Rate:* `{open_rate:.8f}`\n" + "*Current Rate:* `{current_rate:.8f}`\n" + "*Close Rate:* `{limit:.8f}`\n" + "*Sell Reason:* `{sell_reason}`\n" + "*Duration:* `{duration} ({duration_min:.1f} min)`\n" + "*Profit:* `{profit_percent:.2f}%`").format(**msg) # Check if all sell properties are available. # This might not be the case if the message origin is triggered by /forcesell @@ -201,6 +192,20 @@ class Telegram(RPC): self._send_msg(message) + def _get_sell_emoij(self, msg): + """ + Get emoji for sell-side + """ + + if float(msg['profit_percent']) >= 5.0: + return "\N{ROCKET}" + elif float(msg['profit_percent']) >= 0.0: + return "\N{EIGHT SPOKED ASTERISK}" + elif msg['sell_reason'] == "stop_loss": + return"\N{WARNING SIGN}" + else: + return "\N{CROSS MARK}" + @authorized_only def _status(self, update: Update, context: CallbackContext) -> None: """ diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 15fe0eaf9..7fea19fa9 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1485,6 +1485,29 @@ def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None: '*Profit:* `-57.41%`' +@pytest.mark.parametrize('msg,expected', [ + ({'profit_percent': 20.1, 'sell_reason': 'roi'}, "\N{ROCKET}"), + ({'profit_percent': 5.1, 'sell_reason': 'roi'}, "\N{ROCKET}"), + ({'profit_percent': 2.56, 'sell_reason': 'roi'}, "\N{EIGHT SPOKED ASTERISK}"), + ({'profit_percent': 1.0, 'sell_reason': 'roi'}, "\N{EIGHT SPOKED ASTERISK}"), + ({'profit_percent': 0.0, 'sell_reason': 'roi'}, "\N{EIGHT SPOKED ASTERISK}"), + ({'profit_percent': -5.0, 'sell_reason': 'stop_loss'}, "\N{WARNING SIGN}"), + ({'profit_percent': -2.0, 'sell_reason': 'sell_signal'}, "\N{CROSS MARK}"), +]) +def test__sell_emoji(default_conf, mocker, msg, expected): + del default_conf['fiat_display_currency'] + msg_mock = MagicMock() + mocker.patch.multiple( + 'freqtrade.rpc.telegram.Telegram', + _init=MagicMock(), + _send_msg=msg_mock + ) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) + telegram = Telegram(freqtradebot) + + assert telegram._get_sell_emoij(msg) == expected + + def test__send_msg(default_conf, mocker) -> None: mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock()) bot = MagicMock() From 172ca761f2c472bc405e2933f0c4b0b81612e668 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Sat, 6 Jun 2020 15:38:42 +0200 Subject: [PATCH 2558/3421] Fixed typo 'emoij' --- freqtrade/rpc/telegram.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 0dc57e5b9..09be7793e 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -154,9 +154,9 @@ class Telegram(RPC): microsecond=0) - msg['open_date'].replace(microsecond=0) msg['duration_min'] = msg['duration'].total_seconds() / 60 - msg['emoij'] = self._get_sell_emoij(msg) + msg['emoji'] = self._get_sell_emoji(msg) - message = ("{emoij} *{exchange}:* Selling {pair}\n" + message = ("{emoji} *{exchange}:* Selling {pair}\n" "*Amount:* `{amount:.8f}`\n" "*Open Rate:* `{open_rate:.8f}`\n" "*Current Rate:* `{current_rate:.8f}`\n" @@ -192,7 +192,7 @@ class Telegram(RPC): self._send_msg(message) - def _get_sell_emoij(self, msg): + def _get_sell_emoji(self, msg): """ Get emoji for sell-side """ From d20762aa01c9f3e2ab61dca97d260737e93c6c4c Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Sat, 6 Jun 2020 15:46:19 +0200 Subject: [PATCH 2559/3421] Fixed typo 'emoij' in test file too --- tests/rpc/test_rpc_telegram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 7fea19fa9..423f27441 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1505,7 +1505,7 @@ def test__sell_emoji(default_conf, mocker, msg, expected): freqtradebot = get_patched_freqtradebot(mocker, default_conf) telegram = Telegram(freqtradebot) - assert telegram._get_sell_emoij(msg) == expected + assert telegram._get_sell_emoji(msg) == expected def test__send_msg(default_conf, mocker) -> None: From 3bd38171f80c7b420d259f573861a7fed8a6d031 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 6 Jun 2020 17:19:44 +0200 Subject: [PATCH 2560/3421] DOn't use json.dumps - it's not necessary --- freqtrade/rpc/telegram.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 09a99ad85..2ea697ed4 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -636,7 +636,7 @@ class Telegram(RPC): else: sl_info = f"*Stoploss:* `{val['stoploss']}`\n" - import json + self._send_msg( f"*Mode:* `{'Dry-run' if val['dry_run'] else 'Live'}`\n" f"*Exchange:* `{val['exchange']}`\n" @@ -644,7 +644,7 @@ class Telegram(RPC): f"*Max open Trades:* `{val['max_open_trades']}`\n" f"*Minimum ROI:* `{val['minimal_roi']}`\n" f"*Ask strategy:* ```\n{val['ask_strategy']}```\n" - f"*Bid strategy:* ```\n{json.dumps(val['bid_strategy'])}```\n" + f"*Bid strategy:* ```\n{val['bid_strategy']}```\n" f"{sl_info}" f"*Ticker Interval:* `{val['ticker_interval']}`\n" f"*Strategy:* `{val['strategy']}`\n" From 8d8cf5a2fde3ea20f66991b1eb978e84d514e9d4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 6 Jun 2020 17:28:00 +0200 Subject: [PATCH 2561/3421] Improve code formatting of telegram --- freqtrade/rpc/telegram.py | 72 +++++++++++++++++----------------- tests/rpc/test_rpc_telegram.py | 41 +++++++++---------- 2 files changed, 55 insertions(+), 58 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 965318f64..894955eb5 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -144,8 +144,8 @@ class Telegram(RPC): message += ")`" elif msg['type'] == RPCMessageType.BUY_CANCEL_NOTIFICATION: - message = "\N{WARNING SIGN} *{exchange}:* " \ - "Cancelling Open Buy Order for {pair}".format(**msg) + message = ("\N{WARNING SIGN} *{exchange}:* " + "Cancelling Open Buy Order for {pair}".format(**msg)) elif msg['type'] == RPCMessageType.SELL_NOTIFICATION: msg['amount'] = round(msg['amount'], 8) @@ -388,11 +388,11 @@ class Telegram(RPC): ) for currency in result['currencies']: if currency['est_stake'] > 0.0001: - curr_output = "*{currency}:*\n" \ - "\t`Available: {free: .8f}`\n" \ - "\t`Balance: {balance: .8f}`\n" \ - "\t`Pending: {used: .8f}`\n" \ - "\t`Est. {stake}: {est_stake: .8f}`\n".format(**currency) + curr_output = ("*{currency}:*\n" + "\t`Available: {free: .8f}`\n" + "\t`Balance: {balance: .8f}`\n" + "\t`Pending: {used: .8f}`\n" + "\t`Est. {stake}: {est_stake: .8f}`\n").format(**currency) else: curr_output = "*{currency}:* not showing <1$ amount \n".format(**currency) @@ -403,9 +403,9 @@ class Telegram(RPC): else: output += curr_output - output += "\n*Estimated Value*:\n" \ - "\t`{stake}: {total: .8f}`\n" \ - "\t`{symbol}: {value: .2f}`\n".format(**result) + output += ("\n*Estimated Value*:\n" + "\t`{stake}: {total: .8f}`\n" + "\t`{symbol}: {value: .2f}`\n").format(**result) self._send_msg(output) except RPCException as e: self._send_msg(str(e)) @@ -598,32 +598,32 @@ class Telegram(RPC): :param update: message update :return: None """ - forcebuy_text = "*/forcebuy []:* `Instantly buys the given pair. " \ - "Optionally takes a rate at which to buy.` \n" - message = "*/start:* `Starts the trader`\n" \ - "*/stop:* `Stops the trader`\n" \ - "*/status [table]:* `Lists all open trades`\n" \ - " *table :* `will display trades in a table`\n" \ - " `pending buy orders are marked with an asterisk (*)`\n" \ - " `pending sell orders are marked with a double asterisk (**)`\n" \ - "*/profit:* `Lists cumulative profit from all finished trades`\n" \ - "*/forcesell |all:* `Instantly sells the given trade or all trades, " \ - "regardless of profit`\n" \ - f"{forcebuy_text if self._config.get('forcebuy_enable', False) else ''}" \ - "*/performance:* `Show performance of each finished trade grouped by pair`\n" \ - "*/daily :* `Shows profit or loss per day, over the last n days`\n" \ - "*/count:* `Show number of trades running compared to allowed number of trades`" \ - "\n" \ - "*/balance:* `Show account balance per currency`\n" \ - "*/stopbuy:* `Stops buying, but handles open trades gracefully` \n" \ - "*/reload_conf:* `Reload configuration file` \n" \ - "*/show_config:* `Show running configuration` \n" \ - "*/whitelist:* `Show current whitelist` \n" \ - "*/blacklist [pair]:* `Show current blacklist, or adds one or more pairs " \ - "to the blacklist.` \n" \ - "*/edge:* `Shows validated pairs by Edge if it is enabled` \n" \ - "*/help:* `This help message`\n" \ - "*/version:* `Show version`" + forcebuy_text = ("*/forcebuy []:* `Instantly buys the given pair. " + "Optionally takes a rate at which to buy.` \n") + message = ("*/start:* `Starts the trader`\n" + "*/stop:* `Stops the trader`\n" + "*/status [table]:* `Lists all open trades`\n" + " *table :* `will display trades in a table`\n" + " `pending buy orders are marked with an asterisk (*)`\n" + " `pending sell orders are marked with a double asterisk (**)`\n" + "*/profit:* `Lists cumulative profit from all finished trades`\n" + "*/forcesell |all:* `Instantly sells the given trade or all trades, " + "regardless of profit`\n" + f"{forcebuy_text if self._config.get('forcebuy_enable', False) else ''}" + "*/performance:* `Show performance of each finished trade grouped by pair`\n" + "*/daily :* `Shows profit or loss per day, over the last n days`\n" + "*/count:* `Show number of trades running compared to allowed number of trades`" + "\n" + "*/balance:* `Show account balance per currency`\n" + "*/stopbuy:* `Stops buying, but handles open trades gracefully` \n" + "*/reload_conf:* `Reload configuration file` \n" + "*/show_config:* `Show running configuration` \n" + "*/whitelist:* `Show current whitelist` \n" + "*/blacklist [pair]:* `Show current blacklist, or adds one or more pairs " + "to the blacklist.` \n" + "*/edge:* `Shows validated pairs by Edge if it is enabled` \n" + "*/help:* `This help message`\n" + "*/version:* `Show version`") self._send_msg(message) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 21b9df81c..b18106ee5 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -71,10 +71,10 @@ def test_init(default_conf, mocker, caplog) -> None: assert start_polling.dispatcher.add_handler.call_count > 0 assert start_polling.start_polling.call_count == 1 - message_str = "rpc.telegram is listening for following commands: [['status'], ['profit'], " \ - "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], " \ - "['performance'], ['daily'], ['count'], ['reload_conf'], ['show_config'], " \ - "['stopbuy'], ['whitelist'], ['blacklist'], ['edge'], ['help'], ['version']]" + message_str = ("rpc.telegram is listening for following commands: [['status'], ['profit'], " + "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], " + "['performance'], ['daily'], ['count'], ['reload_conf'], ['show_config'], " + "['stopbuy'], ['whitelist'], ['blacklist'], ['edge'], ['help'], ['version']]") assert log_has(message_str, caplog) @@ -1016,9 +1016,8 @@ def test_count_handle(default_conf, update, ticker, fee, mocker) -> None: msg_mock.reset_mock() telegram._count(update=update, context=MagicMock()) - msg = '
              current    max    total stake\n---------  -----  -------------\n' \
            -          '        1      {}          {}
            '\ - .format( + msg = ('
              current    max    total stake\n---------  -----  -------------\n'
            +           '        1      {}          {}
            ').format( default_conf['max_open_trades'], default_conf['stake_amount'] ) @@ -1441,12 +1440,11 @@ def test_send_msg_buy_notification_no_fiat(default_conf, mocker) -> None: 'amount': 1333.3333333333335, 'open_date': arrow.utcnow().shift(hours=-1) }) - assert msg_mock.call_args[0][0] \ - == '\N{LARGE BLUE CIRCLE} *Bittrex:* Buying ETH/BTC\n' \ - '*Amount:* `1333.33333333`\n' \ - '*Open Rate:* `0.00001099`\n' \ - '*Current Rate:* `0.00001099`\n' \ - '*Total:* `(0.001000 BTC)`' + assert msg_mock.call_args[0][0] == ('\N{LARGE BLUE CIRCLE} *Bittrex:* Buying ETH/BTC\n' + '*Amount:* `1333.33333333`\n' + '*Open Rate:* `0.00001099`\n' + '*Current Rate:* `0.00001099`\n' + '*Total:* `(0.001000 BTC)`') def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None: @@ -1477,15 +1475,14 @@ def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None: 'open_date': arrow.utcnow().shift(hours=-2, minutes=-35, seconds=-3), 'close_date': arrow.utcnow(), }) - assert msg_mock.call_args[0][0] \ - == '\N{WARNING SIGN} *Binance:* Selling KEY/ETH\n' \ - '*Amount:* `1333.33333333`\n' \ - '*Open Rate:* `0.00007500`\n' \ - '*Current Rate:* `0.00003201`\n' \ - '*Close Rate:* `0.00003201`\n' \ - '*Sell Reason:* `stop_loss`\n' \ - '*Duration:* `2:35:03 (155.1 min)`\n' \ - '*Profit:* `-57.41%`' + assert msg_mock.call_args[0][0] == ('\N{WARNING SIGN} *Binance:* Selling KEY/ETH\n' + '*Amount:* `1333.33333333`\n' + '*Open Rate:* `0.00007500`\n' + '*Current Rate:* `0.00003201`\n' + '*Close Rate:* `0.00003201`\n' + '*Sell Reason:* `stop_loss`\n' + '*Duration:* `2:35:03 (155.1 min)`\n' + '*Profit:* `-57.41%`') @pytest.mark.parametrize('msg,expected', [ From db4576c50b97e89c524b2de69998e1431d963204 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 7 Jun 2020 10:09:39 +0200 Subject: [PATCH 2562/3421] Use json for *strategy dump --- freqtrade/rpc/telegram.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 894955eb5..eb53fc68f 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -3,6 +3,7 @@ """ This module manage Telegram communication """ +import json import logging from typing import Any, Callable, Dict @@ -665,8 +666,8 @@ class Telegram(RPC): f"*Stake per trade:* `{val['stake_amount']} {val['stake_currency']}`\n" f"*Max open Trades:* `{val['max_open_trades']}`\n" f"*Minimum ROI:* `{val['minimal_roi']}`\n" - f"*Ask strategy:* ```\n{val['ask_strategy']}```\n" - f"*Bid strategy:* ```\n{val['bid_strategy']}```\n" + f"*Ask strategy:* ```\n{json.dumps(val['ask_strategy'])}```\n" + f"*Bid strategy:* ```\n{json.dumps(val['bid_strategy'])}```\n" f"{sl_info}" f"*Ticker Interval:* `{val['ticker_interval']}`\n" f"*Strategy:* `{val['strategy']}`\n" From a6f67247520a9fb52271852cefc80dd05716977d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 7 Jun 2020 11:29:14 +0200 Subject: [PATCH 2563/3421] Reorder functions in optimize_report --- freqtrade/optimize/optimize_reports.py | 136 +++++++++++++------------ 1 file changed, 70 insertions(+), 66 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index c148f0f44..d70a80bb3 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -113,25 +113,6 @@ def generate_pair_metrics(data: Dict[str, Dict], stake_currency: str, max_open_t return tabular_data -def generate_text_table(pair_results: List[Dict[str, Any]], stake_currency: str) -> str: - """ - Generates and returns a text table for the given backtest data and the results dataframe - :param pair_results: List of Dictionaries - one entry per pair + final TOTAL row - :param stake_currency: stake-currency - used to correctly name headers - :return: pretty printed table with tabulate as string - """ - - headers = _get_line_header('Pair', stake_currency) - floatfmt = _get_line_floatfmt() - output = [[ - t['key'], t['trades'], t['profit_mean_pct'], t['profit_sum_pct'], t['profit_total_abs'], - t['profit_total_pct'], t['duration_avg'], t['wins'], t['draws'], t['losses'] - ] for t in pair_results] - # Ignore type as floatfmt does allow tuples but mypy does not know that - return tabulate(output, headers=headers, - floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") # type: ignore - - def generate_sell_reason_stats(max_open_trades: int, results: DataFrame) -> List[Dict]: """ Generate small table outlining Backtest results @@ -166,33 +147,6 @@ def generate_sell_reason_stats(max_open_trades: int, results: DataFrame) -> List return tabular_data -def generate_text_table_sell_reason(sell_reason_stats: List[Dict[str, Any]], - stake_currency: str) -> str: - """ - Generate small table outlining Backtest results - :param sell_reason_stats: Sell reason metrics - :param stake_currency: Stakecurrency used - :return: pretty printed table with tabulate as string - """ - headers = [ - 'Sell Reason', - 'Sells', - 'Wins', - 'Draws', - 'Losses', - 'Avg Profit %', - 'Cum Profit %', - f'Tot Profit {stake_currency}', - 'Tot Profit %', - ] - - output = [[ - t['sell_reason'], t['trades'], t['wins'], t['draws'], t['losses'], - t['profit_mean_pct'], t['profit_sum_pct'], t['profit_total_abs'], t['profit_pct_total'], - ] for t in sell_reason_stats] - return tabulate(output, headers=headers, tablefmt="orgtbl", stralign="right") - - def generate_strategy_metrics(stake_currency: str, max_open_trades: int, all_results: Dict) -> List[Dict]: """ @@ -209,26 +163,6 @@ def generate_strategy_metrics(stake_currency: str, max_open_trades: int, return tabular_data -def generate_text_table_strategy(strategy_results, stake_currency: str) -> str: - """ - Generate summary table per strategy - :param stake_currency: stake-currency - used to correctly name headers - :param max_open_trades: Maximum allowed open trades used for backtest - :param all_results: Dict of containing results for all strategies - :return: pretty printed table with tabulate as string - """ - floatfmt = _get_line_floatfmt() - headers = _get_line_header('Strategy', stake_currency) - - output = [[ - t['key'], t['trades'], t['profit_mean_pct'], t['profit_sum_pct'], t['profit_total_abs'], - t['profit_total_pct'], t['duration_avg'], t['wins'], t['draws'], t['losses'] - ] for t in strategy_results] - # Ignore type as floatfmt does allow tuples but mypy does not know that - return tabulate(output, headers=headers, - floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") # type: ignore - - def generate_edge_table(results: dict) -> str: floatfmt = ('s', '.10g', '.2f', '.2f', '.2f', '.2f', 'd', 'd', 'd') @@ -288,6 +222,76 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], return result +### +# Start output section +### + +def generate_text_table(pair_results: List[Dict[str, Any]], stake_currency: str) -> str: + """ + Generates and returns a text table for the given backtest data and the results dataframe + :param pair_results: List of Dictionaries - one entry per pair + final TOTAL row + :param stake_currency: stake-currency - used to correctly name headers + :return: pretty printed table with tabulate as string + """ + + headers = _get_line_header('Pair', stake_currency) + floatfmt = _get_line_floatfmt() + output = [[ + t['key'], t['trades'], t['profit_mean_pct'], t['profit_sum_pct'], t['profit_total_abs'], + t['profit_total_pct'], t['duration_avg'], t['wins'], t['draws'], t['losses'] + ] for t in pair_results] + # Ignore type as floatfmt does allow tuples but mypy does not know that + return tabulate(output, headers=headers, + floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") + + +def generate_text_table_sell_reason(sell_reason_stats: List[Dict[str, Any]], + stake_currency: str) -> str: + """ + Generate small table outlining Backtest results + :param sell_reason_stats: Sell reason metrics + :param stake_currency: Stakecurrency used + :return: pretty printed table with tabulate as string + """ + headers = [ + 'Sell Reason', + 'Sells', + 'Wins', + 'Draws', + 'Losses', + 'Avg Profit %', + 'Cum Profit %', + f'Tot Profit {stake_currency}', + 'Tot Profit %', + ] + + output = [[ + t['sell_reason'], t['trades'], t['wins'], t['draws'], t['losses'], + t['profit_mean_pct'], t['profit_sum_pct'], t['profit_total_abs'], t['profit_pct_total'], + ] for t in sell_reason_stats] + return tabulate(output, headers=headers, tablefmt="orgtbl", stralign="right") + + +def generate_text_table_strategy(strategy_results, stake_currency: str) -> str: + """ + Generate summary table per strategy + :param stake_currency: stake-currency - used to correctly name headers + :param max_open_trades: Maximum allowed open trades used for backtest + :param all_results: Dict of containing results for all strategies + :return: pretty printed table with tabulate as string + """ + floatfmt = _get_line_floatfmt() + headers = _get_line_header('Strategy', stake_currency) + + output = [[ + t['key'], t['trades'], t['profit_mean_pct'], t['profit_sum_pct'], t['profit_total_abs'], + t['profit_total_pct'], t['duration_avg'], t['wins'], t['draws'], t['losses'] + ] for t in strategy_results] + # Ignore type as floatfmt does allow tuples but mypy does not know that + return tabulate(output, headers=headers, + floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") + + def show_backtest_results(config: Dict, backtest_stats: Dict): stake_currency = config['stake_currency'] From 499c6772d170f30fb16a5410fd32f3c63c3dcfbd Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 7 Jun 2020 11:31:33 +0200 Subject: [PATCH 2564/3421] Rename tabulate methods they don't "generate" anything --- freqtrade/optimize/optimize_reports.py | 12 +++++------- tests/optimize/test_backtesting.py | 2 +- tests/optimize/test_optimize_reports.py | 14 +++++++------- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index d70a80bb3..789ad7d46 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -245,8 +245,7 @@ def generate_text_table(pair_results: List[Dict[str, Any]], stake_currency: str) floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") -def generate_text_table_sell_reason(sell_reason_stats: List[Dict[str, Any]], - stake_currency: str) -> str: +def text_table_sell_reason(sell_reason_stats: List[Dict[str, Any]], stake_currency: str) -> str: """ Generate small table outlining Backtest results :param sell_reason_stats: Sell reason metrics @@ -272,7 +271,7 @@ def generate_text_table_sell_reason(sell_reason_stats: List[Dict[str, Any]], return tabulate(output, headers=headers, tablefmt="orgtbl", stralign="right") -def generate_text_table_strategy(strategy_results, stake_currency: str) -> str: +def text_table_strategy(strategy_results, stake_currency: str) -> str: """ Generate summary table per strategy :param stake_currency: stake-currency - used to correctly name headers @@ -304,9 +303,8 @@ def show_backtest_results(config: Dict, backtest_stats: Dict): print(' BACKTESTING REPORT '.center(len(table.splitlines()[0]), '=')) print(table) - table = generate_text_table_sell_reason(sell_reason_stats=results['sell_reason_summary'], - stake_currency=stake_currency, - ) + table = text_table_sell_reason(sell_reason_stats=results['sell_reason_summary'], + stake_currency=stake_currency) if isinstance(table, str): print(' SELL REASON STATS '.center(len(table.splitlines()[0]), '=')) print(table) @@ -322,7 +320,7 @@ def show_backtest_results(config: Dict, backtest_stats: Dict): if len(backtest_stats['strategy']) > 1: # Print Strategy summary table - table = generate_text_table_strategy(backtest_stats['strategy_comparison'], stake_currency) + table = text_table_strategy(backtest_stats['strategy_comparison'], stake_currency) print(' STRATEGY SUMMARY '.center(len(table.splitlines()[0]), '=')) print(table) print('=' * len(table.splitlines()[0])) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 40c106975..04c8a4b0e 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -666,7 +666,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): mocker.patch.multiple('freqtrade.optimize.optimize_reports', generate_text_table=gen_table_mock, - generate_text_table_strategy=gen_strattable_mock, + text_table_strategy=gen_strattable_mock, generate_pair_metrics=MagicMock(), generate_sell_reason_stats=sell_reason_mock, generate_strategy_metrics=gen_strat_summary, diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 8bef6e2cc..b4105af7d 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -7,8 +7,8 @@ from arrow import Arrow from freqtrade.edge import PairInfo from freqtrade.optimize.optimize_reports import ( generate_pair_metrics, generate_edge_table, generate_sell_reason_stats, - generate_text_table, generate_text_table_sell_reason, generate_strategy_metrics, - generate_text_table_strategy, store_backtest_result) + generate_text_table, text_table_sell_reason, generate_strategy_metrics, + text_table_strategy, store_backtest_result) from freqtrade.strategy.interface import SellType from tests.conftest import patch_exchange @@ -69,7 +69,7 @@ def test_generate_pair_metrics(default_conf, mocker): pytest.approx(pair_results[-1]['profit_sum_pct']) == pair_results[-1]['profit_sum'] * 100) -def test_generate_text_table_sell_reason(default_conf): +def test_text_table_sell_reason(default_conf): results = pd.DataFrame( { @@ -97,8 +97,8 @@ def test_generate_text_table_sell_reason(default_conf): sell_reason_stats = generate_sell_reason_stats(max_open_trades=2, results=results) - assert generate_text_table_sell_reason(sell_reason_stats=sell_reason_stats, - stake_currency='BTC') == result_str + assert text_table_sell_reason(sell_reason_stats=sell_reason_stats, + stake_currency='BTC') == result_str def test_generate_sell_reason_stats(default_conf): @@ -136,7 +136,7 @@ def test_generate_sell_reason_stats(default_conf): assert stop_result['profit_mean_pct'] == round(stop_result['profit_mean'] * 100, 2) -def test_generate_text_table_strategy(default_conf, mocker): +def test_text_table_strategy(default_conf, mocker): results = {} results['TestStrategy1'] = pd.DataFrame( { @@ -178,7 +178,7 @@ def test_generate_text_table_strategy(default_conf, mocker): max_open_trades=2, all_results=results) - assert generate_text_table_strategy(strategy_results, 'BTC') == result_str + assert text_table_strategy(strategy_results, 'BTC') == result_str def test_generate_edge_table(edge_conf, mocker): From 070913f32729c053eb150db1d473c2c5c027e37d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 7 Jun 2020 11:35:02 +0200 Subject: [PATCH 2565/3421] Rename text_table generation --- freqtrade/optimize/optimize_reports.py | 6 +++--- tests/optimize/test_backtesting.py | 18 +++++++++--------- tests/optimize/test_optimize_reports.py | 7 +++---- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 789ad7d46..739640bc5 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -226,7 +226,7 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], # Start output section ### -def generate_text_table(pair_results: List[Dict[str, Any]], stake_currency: str) -> str: +def text_table_bt_results(pair_results: List[Dict[str, Any]], stake_currency: str) -> str: """ Generates and returns a text table for the given backtest data and the results dataframe :param pair_results: List of Dictionaries - one entry per pair + final TOTAL row @@ -298,7 +298,7 @@ def show_backtest_results(config: Dict, backtest_stats: Dict): # Print results print(f"Result for strategy {strategy}") - table = generate_text_table(results['results_per_pair'], stake_currency=stake_currency) + table = text_table_bt_results(results['results_per_pair'], stake_currency=stake_currency) if isinstance(table, str): print(' BACKTESTING REPORT '.center(len(table.splitlines()[0]), '=')) print(table) @@ -309,7 +309,7 @@ def show_backtest_results(config: Dict, backtest_stats: Dict): print(' SELL REASON STATS '.center(len(table.splitlines()[0]), '=')) print(table) - table = generate_text_table(results['left_open_trades'], stake_currency=stake_currency) + table = text_table_bt_results(results['left_open_trades'], stake_currency=stake_currency) if isinstance(table, str): print(' LEFT OPEN TRADES REPORT '.center(len(table.splitlines()[0]), '=')) print(table) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 04c8a4b0e..1c9810ec9 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -659,17 +659,17 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', PropertyMock(return_value=['UNITTEST/BTC'])) mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', backtestmock) - gen_table_mock = MagicMock() + text_table_mock = MagicMock() sell_reason_mock = MagicMock() - gen_strattable_mock = MagicMock() - gen_strat_summary = MagicMock() + strattable_mock = MagicMock() + strat_summary = MagicMock() mocker.patch.multiple('freqtrade.optimize.optimize_reports', - generate_text_table=gen_table_mock, - text_table_strategy=gen_strattable_mock, + text_table_bt_results=text_table_mock, + text_table_strategy=strattable_mock, generate_pair_metrics=MagicMock(), generate_sell_reason_stats=sell_reason_mock, - generate_strategy_metrics=gen_strat_summary, + generate_strategy_metrics=strat_summary, ) patched_configuration_load_config_file(mocker, default_conf) @@ -690,10 +690,10 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): start_backtesting(args) # 2 backtests, 4 tables assert backtestmock.call_count == 2 - assert gen_table_mock.call_count == 4 - assert gen_strattable_mock.call_count == 1 + assert text_table_mock.call_count == 4 + assert strattable_mock.call_count == 1 assert sell_reason_mock.call_count == 2 - assert gen_strat_summary.call_count == 1 + assert strat_summary.call_count == 1 # check the logs, that will contain the backtest result exists = [ diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index b4105af7d..175405e4c 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -7,13 +7,13 @@ from arrow import Arrow from freqtrade.edge import PairInfo from freqtrade.optimize.optimize_reports import ( generate_pair_metrics, generate_edge_table, generate_sell_reason_stats, - generate_text_table, text_table_sell_reason, generate_strategy_metrics, + text_table_bt_results, text_table_sell_reason, generate_strategy_metrics, text_table_strategy, store_backtest_result) from freqtrade.strategy.interface import SellType from tests.conftest import patch_exchange -def test_generate_text_table(default_conf, mocker): +def test_text_table_bt_results(default_conf, mocker): results = pd.DataFrame( { @@ -40,8 +40,7 @@ def test_generate_text_table(default_conf, mocker): pair_results = generate_pair_metrics(data={'ETH/BTC': {}}, stake_currency='BTC', max_open_trades=2, results=results) - assert generate_text_table(pair_results, - stake_currency='BTC') == result_str + assert text_table_bt_results(pair_results, stake_currency='BTC') == result_str def test_generate_pair_metrics(default_conf, mocker): From 04779411f5066c221ce7fd91a237f0caba9fbd81 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 7 Jun 2020 14:32:01 +0200 Subject: [PATCH 2566/3421] Add docstring to backtest_stats --- freqtrade/optimize/optimize_reports.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 739640bc5..9bcbb4dd7 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -190,7 +190,14 @@ def generate_edge_table(results: dict) -> str: def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], - all_results: Dict[str, DataFrame]): + all_results: Dict[str, DataFrame]) -> Dict[str, Any]: + """ + :param config: Configuration object used for backtest + :param btdata: Backtest data + :param all_results: backtest result - dictionary with { Strategy: results}. + :return: + Dictionary containing results per strategy and a stratgy summary. + """ stake_currency = config['stake_currency'] max_open_trades = config['max_open_trades'] result: Dict[str, Any] = {'strategy': {}} From 3f9ab0846d6b5197094fddb50f15c5fdfe409688 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 7 Jun 2020 15:17:35 +0200 Subject: [PATCH 2567/3421] Rename profitperc to profit_percent --- freqtrade/data/btanalysis.py | 15 ++++++++------- freqtrade/plot/plotting.py | 14 +++++++------- tests/data/test_btanalysis.py | 2 +- tests/test_plotting.py | 4 ++-- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index f98135c27..6c498a470 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -16,7 +16,7 @@ from freqtrade.persistence import Trade logger = logging.getLogger(__name__) # must align with columns in backtest.py -BT_DATA_COLUMNS = ["pair", "profitperc", "open_time", "close_time", "index", "duration", +BT_DATA_COLUMNS = ["pair", "profit_percent", "open_time", "close_time", "index", "duration", "open_rate", "close_rate", "open_at_end", "sell_reason"] @@ -99,7 +99,7 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: trades: pd.DataFrame = pd.DataFrame([], columns=BT_DATA_COLUMNS) persistence.init(db_url, clean_open_orders=False) - columns = ["pair", "open_time", "close_time", "profit", "profitperc", + columns = ["pair", "open_time", "close_time", "profit", "profit_percent", "open_rate", "close_rate", "amount", "duration", "sell_reason", "fee_open", "fee_close", "open_rate_requested", "close_rate_requested", "stake_amount", "max_rate", "min_rate", "id", "exchange", @@ -190,7 +190,7 @@ def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str, """ Adds a column `col_name` with the cumulative profit for the given trades array. :param df: DataFrame with date index - :param trades: DataFrame containing trades (requires columns close_time and profitperc) + :param trades: DataFrame containing trades (requires columns close_time and profit_percent) :param col_name: Column name that will be assigned the results :param timeframe: Timeframe used during the operations :return: Returns df with one additional column, col_name, containing the cumulative profit. @@ -201,7 +201,8 @@ def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str, from freqtrade.exchange import timeframe_to_minutes timeframe_minutes = timeframe_to_minutes(timeframe) # Resample to timeframe to make sure trades match candles - _trades_sum = trades.resample(f'{timeframe_minutes}min', on='close_time')[['profitperc']].sum() + _trades_sum = trades.resample(f'{timeframe_minutes}min', on='close_time' + )[['profit_percent']].sum() df.loc[:, col_name] = _trades_sum.cumsum() # Set first value to 0 df.loc[df.iloc[0].name, col_name] = 0 @@ -211,13 +212,13 @@ def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str, def calculate_max_drawdown(trades: pd.DataFrame, *, date_col: str = 'close_time', - value_col: str = 'profitperc' + value_col: str = 'profit_percent' ) -> Tuple[float, pd.Timestamp, pd.Timestamp]: """ Calculate max drawdown and the corresponding close dates - :param trades: DataFrame containing trades (requires columns close_time and profitperc) + :param trades: DataFrame containing trades (requires columns close_time and profit_percent) :param date_col: Column in DataFrame to use for dates (defaults to 'close_time') - :param value_col: Column in DataFrame to use for values (defaults to 'profitperc') + :param value_col: Column in DataFrame to use for values (defaults to 'profit_percent') :return: Tuple (float, highdate, lowdate) with absolute max drawdown, high and low time :raise: ValueError if trade-dataframe was found empty. """ diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index f1d114e2b..d519c5f4e 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -162,7 +162,7 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: # Trades can be empty if trades is not None and len(trades) > 0: # Create description for sell summarizing the trade - trades['desc'] = trades.apply(lambda row: f"{round(row['profitperc'] * 100, 1)}%, " + trades['desc'] = trades.apply(lambda row: f"{round(row['profit_percent'] * 100, 1)}%, " f"{row['sell_reason']}, {row['duration']} min", axis=1) trade_buys = go.Scatter( @@ -181,9 +181,9 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: ) trade_sells = go.Scatter( - x=trades.loc[trades['profitperc'] > 0, "close_time"], - y=trades.loc[trades['profitperc'] > 0, "close_rate"], - text=trades.loc[trades['profitperc'] > 0, "desc"], + x=trades.loc[trades['profit_percent'] > 0, "close_time"], + y=trades.loc[trades['profit_percent'] > 0, "close_rate"], + text=trades.loc[trades['profit_percent'] > 0, "desc"], mode='markers', name='Sell - Profit', marker=dict( @@ -194,9 +194,9 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: ) ) trade_sells_loss = go.Scatter( - x=trades.loc[trades['profitperc'] <= 0, "close_time"], - y=trades.loc[trades['profitperc'] <= 0, "close_rate"], - text=trades.loc[trades['profitperc'] <= 0, "desc"], + x=trades.loc[trades['profit_percent'] <= 0, "close_time"], + y=trades.loc[trades['profit_percent'] <= 0, "close_rate"], + text=trades.loc[trades['profit_percent'] <= 0, "desc"], mode='markers', name='Sell - Loss', marker=dict( diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 50cf9db3d..b65db7fd8 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -47,7 +47,7 @@ def test_load_trades_from_db(default_conf, fee, mocker): assert isinstance(trades, DataFrame) assert "pair" in trades.columns assert "open_time" in trades.columns - assert "profitperc" in trades.columns + assert "profit_percent" in trades.columns for col in BT_DATA_COLUMNS: if col not in ['index', 'open_at_end']: diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 5bb113784..150329c52 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -124,7 +124,7 @@ def test_plot_trades(testdatadir, caplog): trade_sell = find_trace_in_fig_data(figure.data, 'Sell - Profit') assert isinstance(trade_sell, go.Scatter) assert trade_sell.yaxis == 'y' - assert len(trades.loc[trades['profitperc'] > 0]) == len(trade_sell.x) + assert len(trades.loc[trades['profit_percent'] > 0]) == len(trade_sell.x) assert trade_sell.marker.color == 'green' assert trade_sell.marker.symbol == 'square-open' assert trade_sell.text[0] == '4.0%, roi, 15 min' @@ -132,7 +132,7 @@ def test_plot_trades(testdatadir, caplog): trade_sell_loss = find_trace_in_fig_data(figure.data, 'Sell - Loss') assert isinstance(trade_sell_loss, go.Scatter) assert trade_sell_loss.yaxis == 'y' - assert len(trades.loc[trades['profitperc'] <= 0]) == len(trade_sell_loss.x) + assert len(trades.loc[trades['profit_percent'] <= 0]) == len(trade_sell_loss.x) assert trade_sell_loss.marker.color == 'red' assert trade_sell_loss.marker.symbol == 'square-open' assert trade_sell_loss.text[5] == '-10.4%, stop_loss, 720 min' From 0f373e6bb9332500f00b735f4965201c8f34b031 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 7 Jun 2020 15:02:56 +0200 Subject: [PATCH 2568/3421] Update unrelated tests --- tests/test_persistence.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_persistence.py b/tests/test_persistence.py index ae639511b..fe2912486 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -298,7 +298,7 @@ def test_calc_profit(limit_buy_order, limit_sell_order, fee): fee_close=fee.return_value, exchange='bittrex', ) - trade.open_order_id = 'profit_percent' + trade.open_order_id = 'something' trade.update(limit_buy_order) # Buy @ 0.00001099 # Custom closing rate and regular fee rate @@ -332,7 +332,7 @@ def test_calc_profit_ratio(limit_buy_order, limit_sell_order, fee): fee_close=fee.return_value, exchange='bittrex', ) - trade.open_order_id = 'profit_percent' + trade.open_order_id = 'something' trade.update(limit_buy_order) # Buy @ 0.00001099 # Get percent of profit with a custom rate (Higher than open rate) From 68395d27454ee307680d381f16652c02ca8d2964 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 7 Jun 2020 15:13:59 +0200 Subject: [PATCH 2569/3421] Use bracket notation to query results in hyperopt --- docs/advanced-hyperopt.md | 4 ++-- freqtrade/optimize/default_hyperopt_loss.py | 4 ++-- freqtrade/optimize/hyperopt_loss_onlyprofit.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/advanced-hyperopt.md b/docs/advanced-hyperopt.md index 25b4bd900..5fc674b03 100644 --- a/docs/advanced-hyperopt.md +++ b/docs/advanced-hyperopt.md @@ -63,8 +63,8 @@ class SuperDuperHyperOptLoss(IHyperOptLoss): * 0.25: Avoiding trade loss * 1.0 to total profit, compared to the expected value (`EXPECTED_MAX_PROFIT`) defined above """ - total_profit = results.profit_percent.sum() - trade_duration = results.trade_duration.mean() + total_profit = results['profit_percent'].sum() + trade_duration = results['trade_duration'].mean() trade_loss = 1 - 0.25 * exp(-(trade_count - TARGET_TRADES) ** 2 / 10 ** 5.8) profit_loss = max(0, 1 - total_profit / EXPECTED_MAX_PROFIT) diff --git a/freqtrade/optimize/default_hyperopt_loss.py b/freqtrade/optimize/default_hyperopt_loss.py index 4ab9fbe44..9e780d0ea 100644 --- a/freqtrade/optimize/default_hyperopt_loss.py +++ b/freqtrade/optimize/default_hyperopt_loss.py @@ -42,8 +42,8 @@ class DefaultHyperOptLoss(IHyperOptLoss): * 0.25: Avoiding trade loss * 1.0 to total profit, compared to the expected value (`EXPECTED_MAX_PROFIT`) defined above """ - total_profit = results.profit_percent.sum() - trade_duration = results.trade_duration.mean() + total_profit = results['profit_percent'].sum() + trade_duration = results['trade_duration'].mean() trade_loss = 1 - 0.25 * exp(-(trade_count - TARGET_TRADES) ** 2 / 10 ** 5.8) profit_loss = max(0, 1 - total_profit / EXPECTED_MAX_PROFIT) diff --git a/freqtrade/optimize/hyperopt_loss_onlyprofit.py b/freqtrade/optimize/hyperopt_loss_onlyprofit.py index a1c50e727..43176dbad 100644 --- a/freqtrade/optimize/hyperopt_loss_onlyprofit.py +++ b/freqtrade/optimize/hyperopt_loss_onlyprofit.py @@ -34,5 +34,5 @@ class OnlyProfitHyperOptLoss(IHyperOptLoss): """ Objective function, returns smaller number for better results. """ - total_profit = results.profit_percent.sum() + total_profit = results['profit_percent'].sum() return 1 - total_profit / EXPECTED_MAX_PROFIT From a75b94f1437ad33664de4beb7c55ef7f77b5cd69 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 7 Jun 2020 15:30:41 +0200 Subject: [PATCH 2570/3421] use bracket notation for dataframe access --- freqtrade/optimize/optimize_reports.py | 30 +++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 9bcbb4dd7..d89860a73 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -65,25 +65,25 @@ def _generate_result_line(result: DataFrame, max_open_trades: int, first_column: """ return { 'key': first_column, - 'trades': len(result.index), - 'profit_mean': result.profit_percent.mean(), - 'profit_mean_pct': result.profit_percent.mean() * 100.0, - 'profit_sum': result.profit_percent.sum(), - 'profit_sum_pct': result.profit_percent.sum() * 100.0, - 'profit_total_abs': result.profit_abs.sum(), - 'profit_total_pct': result.profit_percent.sum() * 100.0 / max_open_trades, + 'trades': len(result), + 'profit_mean': result['profit_percent'].mean(), + 'profit_mean_pct': result['profit_percent'].mean() * 100.0, + 'profit_sum': result['profit_percent'].sum(), + 'profit_sum_pct': result['profit_percent'].sum() * 100.0, + 'profit_total_abs': result['profit_abs'].sum(), + 'profit_total_pct': result['profit_percent'].sum() * 100.0 / max_open_trades, 'duration_avg': str(timedelta( - minutes=round(result.trade_duration.mean())) + minutes=round(result['trade_duration'].mean())) ) if not result.empty else '0:00', # 'duration_max': str(timedelta( - # minutes=round(result.trade_duration.max())) + # minutes=round(result['trade_duration'].max())) # ) if not result.empty else '0:00', # 'duration_min': str(timedelta( - # minutes=round(result.trade_duration.min())) + # minutes=round(result['trade_duration'].min())) # ) if not result.empty else '0:00', - 'wins': len(result[result.profit_abs > 0]), - 'draws': len(result[result.profit_abs == 0]), - 'losses': len(result[result.profit_abs < 0]), + 'wins': len(result[result['profit_abs'] > 0]), + 'draws': len(result[result['profit_abs'] == 0]), + 'losses': len(result[result['profit_abs'] < 0]), } @@ -102,8 +102,8 @@ def generate_pair_metrics(data: Dict[str, Dict], stake_currency: str, max_open_t tabular_data = [] for pair in data: - result = results[results.pair == pair] - if skip_nan and result.profit_abs.isnull().all(): + result = results[results['pair'] == pair] + if skip_nan and result['profit_abs'].isnull().all(): continue tabular_data.append(_generate_result_line(result, max_open_trades, pair)) From 54226b45b1913383da8cc2922421ce01f83ffeac Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 7 Jun 2020 16:02:08 +0200 Subject: [PATCH 2571/3421] Add test verifying failure --- tests/optimize/test_backtesting.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 40c106975..b1e9dec56 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -401,6 +401,33 @@ def test_backtesting_no_pair_left(default_conf, mocker, caplog, testdatadir) -> Backtesting(default_conf) + +def test_backtesting_pairlist_list(default_conf, mocker, caplog, testdatadir, tickers) -> None: + mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) + mocker.patch('freqtrade.exchange.Exchange.get_tickers', tickers) + mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) + mocker.patch('freqtrade.data.history.get_timerange', get_timerange) + patch_exchange(mocker) + mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest') + mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', + PropertyMock(return_value=['XRP/BTC'])) + mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.refresh_pairlist') + + default_conf['ticker_interval'] = "1m" + default_conf['datadir'] = testdatadir + default_conf['export'] = None + # Use stoploss from strategy + del default_conf['stoploss'] + default_conf['timerange'] = '20180101-20180102' + + default_conf['pairlists'] = [{"method": "VolumePairList", "number_assets": 5}] + with pytest.raises(OperationalException, match='VolumePairList not allowed for backtesting.'): + Backtesting(default_conf) + + default_conf['pairlists'] = [{"method": "StaticPairList"}, {"method": "PrecisionFilter"}, ] + Backtesting(default_conf) + + def test_backtest(default_conf, fee, mocker, testdatadir) -> None: default_conf['ask_strategy']['use_sell_signal'] = False mocker.patch('freqtrade.exchange.Exchange.get_fee', fee) From 72ae4b15002801a47ad4b3ae0576b414d37020f4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 7 Jun 2020 16:06:20 +0200 Subject: [PATCH 2572/3421] Load pairlist after strategy to use strategy-config fail in certain conditions when using strategy-list Fix #3363 --- freqtrade/optimize/backtesting.py | 33 +++++++++++++++++------------- tests/optimize/test_backtesting.py | 7 ++++++- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index b47b38ea4..0c5bb1a0c 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -65,20 +65,6 @@ class Backtesting: self.strategylist: List[IStrategy] = [] self.exchange = ExchangeResolver.load_exchange(self.config['exchange']['name'], self.config) - self.pairlists = PairListManager(self.exchange, self.config) - if 'VolumePairList' in self.pairlists.name_list: - raise OperationalException("VolumePairList not allowed for backtesting.") - - self.pairlists.refresh_pairlist() - - if len(self.pairlists.whitelist) == 0: - raise OperationalException("No pair in whitelist.") - - if config.get('fee'): - self.fee = config['fee'] - else: - self.fee = self.exchange.get_fee(symbol=self.pairlists.whitelist[0]) - if self.config.get('runmode') != RunMode.HYPEROPT: self.dataprovider = DataProvider(self.config, self.exchange) IStrategy.dp = self.dataprovider @@ -101,6 +87,25 @@ class Backtesting: self.timeframe = str(self.config.get('ticker_interval')) self.timeframe_min = timeframe_to_minutes(self.timeframe) + self.pairlists = PairListManager(self.exchange, self.config) + if 'VolumePairList' in self.pairlists.name_list: + raise OperationalException("VolumePairList not allowed for backtesting.") + + if len(self.strategylist) > 1 and 'PrecisionFilter' in self.pairlists.name_list: + raise OperationalException( + "PrecisionFilter not allowed for backtesting multiple strategies." + ) + + self.pairlists.refresh_pairlist() + + if len(self.pairlists.whitelist) == 0: + raise OperationalException("No pair in whitelist.") + + if config.get('fee'): + self.fee = config['fee'] + else: + self.fee = self.exchange.get_fee(symbol=self.pairlists.whitelist[0]) + # Get maximum required startup period self.required_startup = max([strat.startup_candle_count for strat in self.strategylist]) # Load one (first) strategy diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index b1e9dec56..fc03223d2 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -401,7 +401,6 @@ def test_backtesting_no_pair_left(default_conf, mocker, caplog, testdatadir) -> Backtesting(default_conf) - def test_backtesting_pairlist_list(default_conf, mocker, caplog, testdatadir, tickers) -> None: mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) mocker.patch('freqtrade.exchange.Exchange.get_tickers', tickers) @@ -427,6 +426,12 @@ def test_backtesting_pairlist_list(default_conf, mocker, caplog, testdatadir, ti default_conf['pairlists'] = [{"method": "StaticPairList"}, {"method": "PrecisionFilter"}, ] Backtesting(default_conf) + # Multiple strategies + default_conf['strategy_list'] = ['DefaultStrategy', 'TestStrategyLegacy'] + with pytest.raises(OperationalException, + match='PrecisionFilter not allowed for backtesting multiple strategies.'): + Backtesting(default_conf) + def test_backtest(default_conf, fee, mocker, testdatadir) -> None: default_conf['ask_strategy']['use_sell_signal'] = False From bb07746bd5a6a6fcf2843bfe30d85ea5f5e9c16c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 8 Jun 2020 09:08:19 +0000 Subject: [PATCH 2573/3421] Bump pytest-mock from 3.1.0 to 3.1.1 Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.1.0 to 3.1.1. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.1.0...v3.1.1) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index e05231630..6393d2478 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,7 +11,7 @@ mypy==0.770 pytest==5.4.2 pytest-asyncio==0.12.0 pytest-cov==2.9.0 -pytest-mock==3.1.0 +pytest-mock==3.1.1 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents From 9f482d598ef3b66d3b170b09383f07abe0e9fa50 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 8 Jun 2020 09:09:38 +0000 Subject: [PATCH 2574/3421] Bump ccxt from 1.29.5 to 1.29.52 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.29.5 to 1.29.52. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.29.5...1.29.52) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 07bc5caa3..dab3a5da4 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.29.5 +ccxt==1.29.52 SQLAlchemy==1.3.17 python-telegram-bot==12.7 arrow==0.15.6 From 1c8243e9b31628c5b3f56f15f10937d61c878fb5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 8 Jun 2020 09:10:07 +0000 Subject: [PATCH 2575/3421] Bump numpy from 1.18.4 to 1.18.5 Bumps [numpy](https://github.com/numpy/numpy) from 1.18.4 to 1.18.5. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.18.4...v1.18.5) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index f5d09db4d..2c68b8f2c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Load common requirements -r requirements-common.txt -numpy==1.18.4 +numpy==1.18.5 pandas==1.0.4 From 81ed1d6f358cc6243edcdf2e4144e94917add5ba Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 8 Jun 2020 09:10:29 +0000 Subject: [PATCH 2576/3421] Bump mkdocs-material from 5.2.2 to 5.2.3 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.2.2 to 5.2.3. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.2.2...5.2.3) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 9997fa854..b8ea338de 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.2.2 +mkdocs-material==5.2.3 mdx_truly_sane_lists==1.2 From 4b5aee7d1ce36d8f3e9c5c567e0eeca271cbcb08 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 8 Jun 2020 09:21:08 +0000 Subject: [PATCH 2577/3421] Bump pytest from 5.4.2 to 5.4.3 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.4.2 to 5.4.3. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.4.2...5.4.3) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 6393d2478..0bb54679d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.8.2 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.770 -pytest==5.4.2 +pytest==5.4.3 pytest-asyncio==0.12.0 pytest-cov==2.9.0 pytest-mock==3.1.1 From 6029593c431bd11d9742c01d3468c8dfc24bf880 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 8 Jun 2020 09:49:08 +0000 Subject: [PATCH 2578/3421] Bump mypy from 0.770 to 0.780 Bumps [mypy](https://github.com/python/mypy) from 0.770 to 0.780. - [Release notes](https://github.com/python/mypy/releases) - [Commits](https://github.com/python/mypy/compare/v0.770...v0.780) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 0bb54679d..d62b768c1 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ coveralls==2.0.0 flake8==3.8.2 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 -mypy==0.770 +mypy==0.780 pytest==5.4.3 pytest-asyncio==0.12.0 pytest-cov==2.9.0 From ab0003f56517a51e358e24245f53ea054032d151 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 9 Jun 2020 14:33:57 +0200 Subject: [PATCH 2579/3421] fix #3463 by explicitly failing if no stoploss is defined --- freqtrade/pairlist/PrecisionFilter.py | 6 +++++- tests/pairlist/test_pairlist.py | 11 +++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 0331347be..45baf656c 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -5,7 +5,7 @@ import logging from typing import Any, Dict from freqtrade.pairlist.IPairList import IPairList - +from freqtrade.exceptions import OperationalException logger = logging.getLogger(__name__) @@ -17,6 +17,10 @@ class PrecisionFilter(IPairList): pairlist_pos: int) -> None: super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) + if 'stoploss' not in self._config: + raise OperationalException( + 'PrecisionFilter can only work with stoploss defined. Please add the ' + 'stoploss key to your configuration (overwrites eventual strategy settings).') self._stoploss = self._config['stoploss'] self._enabled = self._stoploss != 0 diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 421f06911..07f853342 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -362,6 +362,17 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t assert not log_has(logmsg, caplog) +def test_PrecisionFilter_error(mocker, whitelist_conf, tickers) -> None: + whitelist_conf['pairlists'] = [{"method": "StaticPairList"}, {"method": "PrecisionFilter"}] + del whitelist_conf['stoploss'] + + mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) + + with pytest.raises(OperationalException, + match=r"PrecisionFilter can only work with stoploss defined\..*"): + PairListManager(MagicMock, whitelist_conf) + + def test_gen_pair_whitelist_not_supported(mocker, default_conf, tickers) -> None: default_conf['pairlists'] = [{'method': 'VolumePairList', 'number_assets': 10}] From 05deb5ba05361df908e22c18ac02c222f9298a29 Mon Sep 17 00:00:00 2001 From: Mister Render Date: Tue, 9 Jun 2020 16:08:20 +0000 Subject: [PATCH 2580/3421] Fixed typo and missing { This should help with copy pasting the pairlists code block. Also fixed minor typo on line 594 (was: "I selects" and is now: "It selects") --- docs/configuration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index da0f015e8..c31af1cc9 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -591,7 +591,7 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis #### Volume Pair List -`VolumePairList` employs sorting/filtering of pairs by their trading volume. I selects `number_assets` top pairs with sorting based on the `sort_key` (which can only be `quoteVolume`). +`VolumePairList` employs sorting/filtering of pairs by their trading volume. It selects `number_assets` top pairs with sorting based on the `sort_key` (which can only be `quoteVolume`). When used in the chain of Pairlist Handlers in a non-leading position (after StaticPairList and other Pairlist Filters), `VolumePairList` considers outputs of previous Pairlist Handlers, adding its sorting/selection of the pairs by the trading volume. @@ -609,7 +609,7 @@ The `refresh_period` setting allows to define the period (in seconds), at which "number_assets": 20, "sort_key": "quoteVolume", "refresh_period": 1800, -], +}], ``` #### PrecisionFilter From bd942992ef80bff0c7768ffe7ee57c8965e40265 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 9 Jun 2020 20:47:52 +0200 Subject: [PATCH 2581/3421] Add documentation about pricing related to market orders --- docs/configuration.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/configuration.md b/docs/configuration.md index c31af1cc9..035a65abf 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -333,6 +333,9 @@ Configuration: !!! Note If `stoploss_on_exchange` is enabled and the stoploss is cancelled manually on the exchange, then the bot will create a new order. +!!! Warning "Using market orders" + Please read the section [Market order pricing](#market-order-pricing) section when using market orders. + !!! Warning "Warning: stoploss_on_exchange failures" If stoploss on exchange creation fails for some reason, then an "emergency sell" is initiated. By default, this will sell the asset using a market order. The order-type for the emergency-sell can be changed by setting the `emergencysell` value in the `order_types` dictionary - however this is not advised. @@ -459,6 +462,9 @@ Prices are always retrieved right before an order is placed, either by querying !!! Note Orderbook data used by Freqtrade are the data retrieved from exchange by the ccxt's function `fetch_order_book()`, i.e. are usually data from the L2-aggregated orderbook, while the ticker data are the structures returned by the ccxt's `fetch_ticker()`/`fetch_tickers()` functions. Refer to the ccxt library [documentation](https://github.com/ccxt/ccxt/wiki/Manual#market-data) for more details. +!!! Warning "Using market orders" + Please read the section [Market order pricing](#market-order-pricing) section when using market orders. + ### Buy price #### Check depth of market @@ -553,6 +559,29 @@ A fixed slot (mirroring `bid_strategy.order_book_top`) can be defined by setting When not using orderbook (`ask_strategy.use_order_book=False`), the price at the `ask_strategy.price_side` side (defaults to `"ask"`) from the ticker will be used as the sell price. +### Market order pricing + +When using market orders, prices should be configured to use the "correct" side of the orderbook to allow realistic pricing detection. +Assuming both buy and sell are using market orders, a configuration similar to the following might be used + +``` jsonc + "order_types": { + "buy": "market", + "sell": "market" + // ... + }, + "bid_strategy": { + "price_side": "ask", + //... + }, + "ask_strategy":{ + "price_side": "bid", + //... + }, +``` + +Obviously, if only one side is using limit orders, different pricing combinations can be used. + ## Pairlists and Pairlist Handlers Pairlist Handlers define the list of pairs (pairlist) that the bot should trade. They are configured in the `pairlists` section of the configuration settings. From 6744f8f052d66e1f7a49eff81c6ff57e65fec0cf Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 10 Jun 2020 01:22:55 +0300 Subject: [PATCH 2582/3421] Remove _load_async_markets --- freqtrade/exchange/exchange.py | 17 +++-------------- tests/exchange/test_exchange.py | 28 ---------------------------- 2 files changed, 3 insertions(+), 42 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 038fc22bc..773f7a0a4 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -256,32 +256,21 @@ class Exchange: "Please check your config.json") raise OperationalException(f'Exchange {name} does not provide a sandbox api') - def _load_async_markets(self, reload: bool = False) -> None: - try: - if self._api_async: - asyncio.get_event_loop().run_until_complete( - self._api_async.load_markets(reload=reload)) - - except ccxt.BaseError as e: - logger.warning('Could not load async markets. Reason: %s', e) - return - def _load_markets(self) -> None: - """ Initialize markets both sync and async """ + """ Initialize markets """ try: self._api.load_markets() - self._load_async_markets() self._last_markets_refresh = arrow.utcnow().timestamp except ccxt.BaseError as e: logger.warning('Unable to initialize markets. Reason: %s', e) def _reload_markets(self) -> None: - """Reload markets both sync and async, if refresh interval has passed""" + """Reload markets if refresh interval has passed""" # Check whether markets have to be reloaded if (self._last_markets_refresh > 0) and ( self._last_markets_refresh + self.markets_refresh_interval > arrow.utcnow().timestamp): - return None + return logger.debug("Performing scheduled market reload..") try: self._api.load_markets(reload=True) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 32163f696..31efc65ff 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -130,7 +130,6 @@ def test_init_exception(default_conf, mocker): def test_exchange_resolver(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=MagicMock())) - mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_pairs') mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') @@ -318,19 +317,6 @@ def test_set_sandbox_exception(default_conf, mocker): exchange.set_sandbox(exchange._api, default_conf['exchange'], 'Logname') -def test__load_async_markets(default_conf, mocker, caplog): - exchange = get_patched_exchange(mocker, default_conf) - exchange._api_async.load_markets = get_mock_coro(None) - exchange._load_async_markets() - assert exchange._api_async.load_markets.call_count == 1 - caplog.set_level(logging.DEBUG) - - exchange._api_async.load_markets = Mock(side_effect=ccxt.BaseError("deadbeef")) - exchange._load_async_markets() - - assert log_has('Could not load async markets. Reason: deadbeef', caplog) - - def test__load_markets(default_conf, mocker, caplog): caplog.set_level(logging.INFO) api_mock = MagicMock() @@ -338,7 +324,6 @@ def test__load_markets(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_pairs') mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') - mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) assert log_has('Unable to initialize markets. Reason: SomeError', caplog) @@ -406,7 +391,6 @@ def test_validate_stake_currency(default_conf, stake_currency, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_pairs') mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') - mocker.patch('freqtrade.exchange.Exchange._load_async_markets') Exchange(default_conf) @@ -420,7 +404,6 @@ def test_validate_stake_currency_error(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_pairs') mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') - mocker.patch('freqtrade.exchange.Exchange._load_async_markets') with pytest.raises(OperationalException, match=r'XRP is not available as stake on .*' 'Available currencies are: BTC, ETH, USDT'): @@ -470,7 +453,6 @@ def test_validate_pairs(default_conf, mocker): # test exchange.validate_pairs d mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') - mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) @@ -483,7 +465,6 @@ def test_validate_pairs_not_available(default_conf, mocker): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') - mocker.patch('freqtrade.exchange.Exchange._load_async_markets') with pytest.raises(OperationalException, match=r'not available'): Exchange(default_conf) @@ -498,7 +479,6 @@ def test_validate_pairs_exception(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', api_mock) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') - mocker.patch('freqtrade.exchange.Exchange._load_async_markets') with pytest.raises(OperationalException, match=r'Pair ETH/BTC is not available on Binance'): Exchange(default_conf) @@ -517,7 +497,6 @@ def test_validate_pairs_restricted(default_conf, mocker, caplog): }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') - mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) @@ -535,7 +514,6 @@ def test_validate_pairs_stakecompatibility(default_conf, mocker, caplog): }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') - mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) @@ -551,7 +529,6 @@ def test_validate_pairs_stakecompatibility_downloaddata(default_conf, mocker, ca }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') - mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) @@ -567,7 +544,6 @@ def test_validate_pairs_stakecompatibility_fail(default_conf, mocker, caplog): }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') - mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') with pytest.raises(OperationalException, match=r"Stake-currency 'BTC' not compatible with.*"): @@ -742,7 +718,6 @@ def test_validate_required_startup_candles(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', api_mock) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') - mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_pairs') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') @@ -1934,7 +1909,6 @@ def test_stoploss_order_unsupported_exchange(default_conf, mocker): def test_merge_ft_has_dict(default_conf, mocker): mocker.patch.multiple('freqtrade.exchange.Exchange', _init_ccxt=MagicMock(return_value=MagicMock()), - _load_async_markets=MagicMock(), validate_pairs=MagicMock(), validate_timeframes=MagicMock(), validate_stakecurrency=MagicMock() @@ -1968,7 +1942,6 @@ def test_merge_ft_has_dict(default_conf, mocker): def test_get_valid_pair_combination(default_conf, mocker, markets): mocker.patch.multiple('freqtrade.exchange.Exchange', _init_ccxt=MagicMock(return_value=MagicMock()), - _load_async_markets=MagicMock(), validate_pairs=MagicMock(), validate_timeframes=MagicMock(), markets=PropertyMock(return_value=markets)) @@ -2041,7 +2014,6 @@ def test_get_markets(default_conf, mocker, markets, expected_keys): mocker.patch.multiple('freqtrade.exchange.Exchange', _init_ccxt=MagicMock(return_value=MagicMock()), - _load_async_markets=MagicMock(), validate_pairs=MagicMock(), validate_timeframes=MagicMock(), markets=PropertyMock(return_value=markets)) From 7d451638a84e9d709291a4038cb06f760bfa9c80 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 10 Jun 2020 01:39:23 +0300 Subject: [PATCH 2583/3421] Make _reload_markets() public --- freqtrade/exchange/exchange.py | 4 ++-- freqtrade/freqtradebot.py | 4 ++-- tests/exchange/test_exchange.py | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 773f7a0a4..6802a6b9e 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -264,8 +264,8 @@ class Exchange: except ccxt.BaseError as e: logger.warning('Unable to initialize markets. Reason: %s', e) - def _reload_markets(self) -> None: - """Reload markets if refresh interval has passed""" + def reload_markets(self) -> None: + """Reload markets if refresh interval has passed """ # Check whether markets have to be reloaded if (self._last_markets_refresh > 0) and ( self._last_markets_refresh + self.markets_refresh_interval diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5104e4f95..8a66957c3 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -139,8 +139,8 @@ class FreqtradeBot: :return: True if one or more trades has been created or closed, False otherwise """ - # Check whether markets have to be reloaded - self.exchange._reload_markets() + # Check whether markets have to be reloaded and reload them when it's needed + self.exchange.reload_markets() # Query trades from persistence layer trades = Trade.get_open_trades() diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 31efc65ff..9914188b8 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -337,7 +337,7 @@ def test__load_markets(default_conf, mocker, caplog): assert ex.markets == expected_return -def test__reload_markets(default_conf, mocker, caplog): +def test_reload_markets(default_conf, mocker, caplog): caplog.set_level(logging.DEBUG) initial_markets = {'ETH/BTC': {}} @@ -356,17 +356,17 @@ def test__reload_markets(default_conf, mocker, caplog): assert exchange.markets == initial_markets # less than 10 minutes have passed, no reload - exchange._reload_markets() + exchange.reload_markets() assert exchange.markets == initial_markets # more than 10 minutes have passed, reload is executed exchange._last_markets_refresh = arrow.utcnow().timestamp - 15 * 60 - exchange._reload_markets() + exchange.reload_markets() assert exchange.markets == updated_markets assert log_has('Performing scheduled market reload..', caplog) -def test__reload_markets_exception(default_conf, mocker, caplog): +def test_reload_markets_exception(default_conf, mocker, caplog): caplog.set_level(logging.DEBUG) api_mock = MagicMock() @@ -375,7 +375,7 @@ def test__reload_markets_exception(default_conf, mocker, caplog): exchange = get_patched_exchange(mocker, default_conf, api_mock, id="binance") # less than 10 minutes have passed, no reload - exchange._reload_markets() + exchange.reload_markets() assert exchange._last_markets_refresh == 0 assert log_has_re(r"Could not reload markets.*", caplog) From 0067a3ab7ceb929b2ded3a7916a064f759f45c69 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 10 Jun 2020 06:30:29 +0300 Subject: [PATCH 2584/3421] Change logging level --- freqtrade/exchange/exchange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 6802a6b9e..e974655cb 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -190,7 +190,7 @@ class Exchange: def markets(self) -> Dict: """exchange ccxt markets""" if not self._api.markets: - logger.warning("Markets were not loaded. Loading them now..") + logger.info("Markets were not loaded. Loading them now..") self._load_markets() return self._api.markets From a198b91b873ca428ccb19dc5244a47104c228a2b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 10 Jun 2020 06:36:35 +0200 Subject: [PATCH 2585/3421] align Spaces in commented config section Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/configuration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 035a65abf..cb5b6c3ea 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -572,11 +572,11 @@ Assuming both buy and sell are using market orders, a configuration similar to t }, "bid_strategy": { "price_side": "ask", - //... + // ... }, "ask_strategy":{ "price_side": "bid", - //... + // ... }, ``` From ac92834693fe5e9a3c165c3529c7dbfc4f1a3798 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Tue, 9 Jun 2020 23:03:55 +0200 Subject: [PATCH 2586/3421] reload_conf & reload_config now both accepted, code is more consistent now --- docs/rest-api.md | 6 +++--- docs/stoploss.md | 2 +- docs/strategy-customization.md | 2 +- docs/telegram-usage.md | 8 ++++---- freqtrade/rpc/api_server.py | 10 +++++----- freqtrade/rpc/rpc.py | 8 ++++---- freqtrade/rpc/telegram.py | 12 +++++++----- freqtrade/state.py | 2 +- freqtrade/worker.py | 2 +- tests/rpc/test_rpc.py | 2 +- tests/rpc/test_rpc_apiserver.py | 6 +++--- tests/rpc/test_rpc_telegram.py | 13 +++++++------ tests/test_main.py | 4 ++-- 13 files changed, 40 insertions(+), 37 deletions(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index ed5f355b4..33f62f884 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -110,7 +110,7 @@ python3 scripts/rest_client.py --config rest_config.json [optional par | `start` | | Starts the trader | `stop` | | Stops the trader | `stopbuy` | | Stops the trader from opening new trades. Gracefully closes open trades according to their rules. -| `reload_conf` | | Reloads the configuration file +| `reload_config` | | Reloads the configuration file | `show_config` | | Shows part of the current configuration with relevant settings to operation | `status` | | Lists all open trades | `count` | | Displays number of trades used and available @@ -174,7 +174,7 @@ profit Returns the profit summary :returns: json object -reload_conf +reload_config Reload configuration :returns: json object @@ -196,7 +196,7 @@ stop stopbuy Stop buying (but handle sells gracefully). - use reload_conf to reset + use reload_config to reset :returns: json object version diff --git a/docs/stoploss.md b/docs/stoploss.md index 0e43817ec..7ebe98ee6 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -101,7 +101,7 @@ Simplified example: ## Changing stoploss on open trades -A stoploss on an open trade can be changed by changing the value in the configuration or strategy and use the `/reload_conf` command (alternatively, completely stopping and restarting the bot also works). +A stoploss on an open trade can be changed by changing the value in the configuration or strategy and use the `/reload_config` command (alternatively, completely stopping and restarting the bot also works). The new stoploss value will be applied to open trades (and corresponding log-messages will be generated). diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 7197b0fba..92e4453d2 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -557,7 +557,7 @@ Locks can also be lifted manually, by calling `self.unlock_pair(pair)`. To verify if a pair is currently locked, use `self.is_pair_locked(pair)`. !!! Note - Locked pairs are not persisted, so a restart of the bot, or calling `/reload_conf` will reset locked pairs. + Locked pairs are not persisted, so a restart of the bot, or calling `/reload_config` will reset locked pairs. !!! Warning Locking pairs is not functioning during backtesting. diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md index f683ae8da..f423a9376 100644 --- a/docs/telegram-usage.md +++ b/docs/telegram-usage.md @@ -52,7 +52,7 @@ official commands. You can ask at any moment for help with `/help`. | `/start` | | Starts the trader | `/stop` | | Stops the trader | `/stopbuy` | | Stops the trader from opening new trades. Gracefully closes open trades according to their rules. -| `/reload_conf` | | Reloads the configuration file +| `/reload_config` | | Reloads the configuration file | `/show_config` | | Shows part of the current configuration with relevant settings to operation | `/status` | | Lists all open trades | `/status table` | | List all open trades in a table format. Pending buy orders are marked with an asterisk (*) Pending sell orders are marked with a double asterisk (**) @@ -85,14 +85,14 @@ Below, example of Telegram message you will receive for each command. ### /stopbuy -> **status:** `Setting max_open_trades to 0. Run /reload_conf to reset.` +> **status:** `Setting max_open_trades to 0. Run /reload_config to reset.` Prevents the bot from opening new trades by temporarily setting "max_open_trades" to 0. Open trades will be handled via their regular rules (ROI / Sell-signal, stoploss, ...). After this, give the bot time to close off open trades (can be checked via `/status table`). Once all positions are sold, run `/stop` to completely stop the bot. -`/reload_conf` resets "max_open_trades" to the value set in the configuration and resets this command. +`/reload_config` resets "max_open_trades" to the value set in the configuration and resets this command. !!! Warning The stop-buy signal is ONLY active while the bot is running, and is not persisted anyway, so restarting the bot will cause this to reset. @@ -209,7 +209,7 @@ Shows the current whitelist Shows the current blacklist. If Pair is set, then this pair will be added to the pairlist. Also supports multiple pairs, seperated by a space. -Use `/reload_conf` to reset the blacklist. +Use `/reload_config` to reset the blacklist. > Using blacklist `StaticPairList` with 2 pairs >`DODGE/BTC`, `HOT/BTC`. diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 9d0899ccd..f424bea92 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -172,8 +172,8 @@ class ApiServer(RPC): self.app.add_url_rule(f'{BASE_URI}/stop', 'stop', view_func=self._stop, methods=['POST']) self.app.add_url_rule(f'{BASE_URI}/stopbuy', 'stopbuy', view_func=self._stopbuy, methods=['POST']) - self.app.add_url_rule(f'{BASE_URI}/reload_conf', 'reload_conf', - view_func=self._reload_conf, methods=['POST']) + self.app.add_url_rule(f'{BASE_URI}/reload_config', 'reload_config', + view_func=self._reload_config, methods=['POST']) # Info commands self.app.add_url_rule(f'{BASE_URI}/balance', 'balance', view_func=self._balance, methods=['GET']) @@ -304,12 +304,12 @@ class ApiServer(RPC): @require_login @rpc_catch_errors - def _reload_conf(self): + def _reload_config(self): """ - Handler for /reload_conf. + Handler for /reload_config. Triggers a config file reload """ - msg = self._rpc_reload_conf() + msg = self._rpc_reload_config() return self.rest_dump(msg) @require_login diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 00a170ee3..e4c96cf3b 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -418,9 +418,9 @@ class RPC: return {'status': 'already stopped'} - def _rpc_reload_conf(self) -> Dict[str, str]: - """ Handler for reload_conf. """ - self._freqtrade.state = State.RELOAD_CONF + def _rpc_reload_config(self) -> Dict[str, str]: + """ Handler for reload_config. """ + self._freqtrade.state = State.RELOAD_CONFIG return {'status': 'reloading config ...'} def _rpc_stopbuy(self) -> Dict[str, str]: @@ -431,7 +431,7 @@ class RPC: # Set 'max_open_trades' to 0 self._freqtrade.config['max_open_trades'] = 0 - return {'status': 'No more buy will occur from now. Run /reload_conf to reset.'} + return {'status': 'No more buy will occur from now. Run /reload_config to reset.'} def _rpc_forcesell(self, trade_id: str) -> Dict[str, str]: """ diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index eb53fc68f..e86f35687 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -95,7 +95,9 @@ class Telegram(RPC): CommandHandler('performance', self._performance), CommandHandler('daily', self._daily), CommandHandler('count', self._count), - CommandHandler('reload_conf', self._reload_conf), + CommandHandler('reload_conf', self._reload_config), + CommandHandler('reload_config', self._reload_config), + CommandHandler('show_conf', self._reload_config), CommandHandler('show_config', self._show_config), CommandHandler('stopbuy', self._stopbuy), CommandHandler('whitelist', self._whitelist), @@ -436,15 +438,15 @@ class Telegram(RPC): self._send_msg('Status: `{status}`'.format(**msg)) @authorized_only - def _reload_conf(self, update: Update, context: CallbackContext) -> None: + def _reload_config(self, update: Update, context: CallbackContext) -> None: """ - Handler for /reload_conf. + Handler for /reload_config. Triggers a config file reload :param bot: telegram bot :param update: message update :return: None """ - msg = self._rpc_reload_conf() + msg = self._rpc_reload_config() self._send_msg('Status: `{status}`'.format(**msg)) @authorized_only @@ -617,7 +619,7 @@ class Telegram(RPC): "\n" "*/balance:* `Show account balance per currency`\n" "*/stopbuy:* `Stops buying, but handles open trades gracefully` \n" - "*/reload_conf:* `Reload configuration file` \n" + "*/reload_config:* `Reload configuration file` \n" "*/show_config:* `Show running configuration` \n" "*/whitelist:* `Show current whitelist` \n" "*/blacklist [pair]:* `Show current blacklist, or adds one or more pairs " diff --git a/freqtrade/state.py b/freqtrade/state.py index 38784c6a4..8ddff71d9 100644 --- a/freqtrade/state.py +++ b/freqtrade/state.py @@ -12,7 +12,7 @@ class State(Enum): """ RUNNING = 1 STOPPED = 2 - RELOAD_CONF = 3 + RELOAD_CONFIG = 3 def __str__(self): return f"{self.name.lower()}" diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 3f5ab734e..5bdb166c2 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -71,7 +71,7 @@ class Worker: state = None while True: state = self._worker(old_state=state) - if state == State.RELOAD_CONF: + if state == State.RELOAD_CONFIG: self._reconfigure() def _worker(self, old_state: Optional[State]) -> State: diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index ef1c1bc16..88c82c5ea 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -592,7 +592,7 @@ def test_rpc_stopbuy(mocker, default_conf) -> None: assert freqtradebot.config['max_open_trades'] != 0 result = rpc._rpc_stopbuy() - assert {'status': 'No more buy will occur from now. Run /reload_conf to reset.'} == result + assert {'status': 'No more buy will occur from now. Run /reload_config to reset.'} == result assert freqtradebot.config['max_open_trades'] == 0 diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 9b247fefc..a6d38cc9f 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -251,10 +251,10 @@ def test_api_cleanup(default_conf, mocker, caplog): def test_api_reloadconf(botclient): ftbot, client = botclient - rc = client_post(client, f"{BASE_URI}/reload_conf") + rc = client_post(client, f"{BASE_URI}/reload_config") assert_response(rc) assert rc.json == {'status': 'reloading config ...'} - assert ftbot.state == State.RELOAD_CONF + assert ftbot.state == State.RELOAD_CONFIG def test_api_stopbuy(botclient): @@ -263,7 +263,7 @@ def test_api_stopbuy(botclient): rc = client_post(client, f"{BASE_URI}/stopbuy") assert_response(rc) - assert rc.json == {'status': 'No more buy will occur from now. Run /reload_conf to reset.'} + assert rc.json == {'status': 'No more buy will occur from now. Run /reload_config to reset.'} assert ftbot.config['max_open_trades'] == 0 diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index b18106ee5..afe007347 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -73,8 +73,9 @@ def test_init(default_conf, mocker, caplog) -> None: message_str = ("rpc.telegram is listening for following commands: [['status'], ['profit'], " "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], " - "['performance'], ['daily'], ['count'], ['reload_conf'], ['show_config'], " - "['stopbuy'], ['whitelist'], ['blacklist'], ['edge'], ['help'], ['version']]") + "['performance'], ['daily'], ['count'], ['reload_conf'], ['reload_config'], " + "['show_conf'], ['show_config'], ['stopbuy'], ['whitelist'], " + "['blacklist'], ['edge'], ['help'], ['version']]") assert log_has(message_str, caplog) @@ -666,11 +667,11 @@ def test_stopbuy_handle(default_conf, update, mocker) -> None: telegram._stopbuy(update=update, context=MagicMock()) assert freqtradebot.config['max_open_trades'] == 0 assert msg_mock.call_count == 1 - assert 'No more buy will occur from now. Run /reload_conf to reset.' \ + assert 'No more buy will occur from now. Run /reload_config to reset.' \ in msg_mock.call_args_list[0][0][0] -def test_reload_conf_handle(default_conf, update, mocker) -> None: +def test_reload_config_handle(default_conf, update, mocker) -> None: msg_mock = MagicMock() mocker.patch.multiple( 'freqtrade.rpc.telegram.Telegram', @@ -683,8 +684,8 @@ def test_reload_conf_handle(default_conf, update, mocker) -> None: freqtradebot.state = State.RUNNING assert freqtradebot.state == State.RUNNING - telegram._reload_conf(update=update, context=MagicMock()) - assert freqtradebot.state == State.RELOAD_CONF + telegram._reload_config(update=update, context=MagicMock()) + assert freqtradebot.state == State.RELOAD_CONFIG assert msg_mock.call_count == 1 assert 'reloading config' in msg_mock.call_args_list[0][0][0] diff --git a/tests/test_main.py b/tests/test_main.py index 11d0ede3a..48cc47104 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -141,12 +141,12 @@ def test_main_operational_exception1(mocker, default_conf, caplog) -> None: assert log_has_re(r'SIGINT.*', caplog) -def test_main_reload_conf(mocker, default_conf, caplog) -> None: +def test_main_reload_config(mocker, default_conf, caplog) -> None: patch_exchange(mocker) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.cleanup', MagicMock()) # Simulate Running, reload, running workflow worker_mock = MagicMock(side_effect=[State.RUNNING, - State.RELOAD_CONF, + State.RELOAD_CONFIG, State.RUNNING, OperationalException("Oh snap!")]) mocker.patch('freqtrade.worker.Worker._worker', worker_mock) From 04fa59769596506c4ff958b0554aaa0ca42c4a1d Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Wed, 10 Jun 2020 16:28:37 +0200 Subject: [PATCH 2587/3421] Test with multiple commands in one line --- freqtrade/rpc/telegram.py | 8 ++++---- tests/rpc/test_rpc_telegram.py | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index e86f35687..51130e653 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -95,10 +95,10 @@ class Telegram(RPC): CommandHandler('performance', self._performance), CommandHandler('daily', self._daily), CommandHandler('count', self._count), - CommandHandler('reload_conf', self._reload_config), - CommandHandler('reload_config', self._reload_config), - CommandHandler('show_conf', self._reload_config), - CommandHandler('show_config', self._show_config), + #CommandHandler('reload_conf', self._reload_config), + CommandHandler(('reload_config' or 'reload_con'), self._reload_config), + #CommandHandler('show_conf', self._reload_config), + CommandHandler('show_config' or 'show_conf', self._show_config), CommandHandler('stopbuy', self._stopbuy), CommandHandler('whitelist', self._whitelist), CommandHandler('blacklist', self._blacklist), diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index afe007347..ce0c9d1f0 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -73,8 +73,8 @@ def test_init(default_conf, mocker, caplog) -> None: message_str = ("rpc.telegram is listening for following commands: [['status'], ['profit'], " "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], " - "['performance'], ['daily'], ['count'], ['reload_conf'], ['reload_config'], " - "['show_conf'], ['show_config'], ['stopbuy'], ['whitelist'], " + "['performance'], ['daily'], ['count'], ['reload_config'], " + "['show_config'], ['stopbuy'], ['whitelist'], " "['blacklist'], ['edge'], ['help'], ['version']]") assert log_has(message_str, caplog) From 043397c5d7d70d2e7c3821b892486413a8a68a32 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Wed, 10 Jun 2020 16:34:46 +0200 Subject: [PATCH 2588/3421] reload_conf & reload_config now both accepted, code is more consistent now --- freqtrade/rpc/telegram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 51130e653..e7a8971ec 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -96,7 +96,7 @@ class Telegram(RPC): CommandHandler('daily', self._daily), CommandHandler('count', self._count), #CommandHandler('reload_conf', self._reload_config), - CommandHandler(('reload_config' or 'reload_con'), self._reload_config), + CommandHandler(('reload_config' or 'reload_conf'), self._reload_config), #CommandHandler('show_conf', self._reload_config), CommandHandler('show_config' or 'show_conf', self._show_config), CommandHandler('stopbuy', self._stopbuy), From 8c9dea988cf0665744dba54c7b9c0b4c2dfd3cfe Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Wed, 10 Jun 2020 16:55:47 +0200 Subject: [PATCH 2589/3421] Now supports both commands & fixed test --- freqtrade/rpc/telegram.py | 6 ++---- tests/rpc/test_rpc_telegram.py | 7 +++---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index e7a8971ec..006baee60 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -95,10 +95,8 @@ class Telegram(RPC): CommandHandler('performance', self._performance), CommandHandler('daily', self._daily), CommandHandler('count', self._count), - #CommandHandler('reload_conf', self._reload_config), - CommandHandler(('reload_config' or 'reload_conf'), self._reload_config), - #CommandHandler('show_conf', self._reload_config), - CommandHandler('show_config' or 'show_conf', self._show_config), + CommandHandler(['reload_config', 'reload_conf'], self._reload_config), + CommandHandler(['show_config', 'show_conf'], self._show_config), CommandHandler('stopbuy', self._stopbuy), CommandHandler('whitelist', self._whitelist), CommandHandler('blacklist', self._blacklist), diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index ce0c9d1f0..b19c6d9ee 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -72,10 +72,9 @@ def test_init(default_conf, mocker, caplog) -> None: assert start_polling.start_polling.call_count == 1 message_str = ("rpc.telegram is listening for following commands: [['status'], ['profit'], " - "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], " - "['performance'], ['daily'], ['count'], ['reload_config'], " - "['show_config'], ['stopbuy'], ['whitelist'], " - "['blacklist'], ['edge'], ['help'], ['version']]") + "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], ['performance'], " + "['daily'], ['count'], ['reload_config', 'reload_conf'], ['show_config', 'show_conf'], " + "['stopbuy'], ['whitelist'], ['blacklist'], ['edge'], ['help'], ['version']]") assert log_has(message_str, caplog) From 4f643f8481af5ed983615c9a88b9296cc9a21b92 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Wed, 10 Jun 2020 17:12:21 +0200 Subject: [PATCH 2590/3421] Fix Flake8 error: line too long --- tests/rpc/test_rpc_telegram.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index b19c6d9ee..0a4352f5b 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -72,9 +72,10 @@ def test_init(default_conf, mocker, caplog) -> None: assert start_polling.start_polling.call_count == 1 message_str = ("rpc.telegram is listening for following commands: [['status'], ['profit'], " - "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], ['performance'], " - "['daily'], ['count'], ['reload_config', 'reload_conf'], ['show_config', 'show_conf'], " - "['stopbuy'], ['whitelist'], ['blacklist'], ['edge'], ['help'], ['version']]") + "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], " + "['performance'], ['daily'], ['count'], ['reload_config', 'reload_conf'], " + "['show_config', 'show_conf'], ['stopbuy'], ['whitelist'], ['blacklist'], " + "['edge'], ['help'], ['version']]") assert log_has(message_str, caplog) From 69ac5c1ac7a6178113b8f6df8650661f6f3fa284 Mon Sep 17 00:00:00 2001 From: Felipe Lambert Date: Mon, 8 Jun 2020 14:55:28 -0300 Subject: [PATCH 2591/3421] change hyperopt return to better copy to strategy file --- freqtrade/optimize/hyperopt.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 3a28de785..58bcbd208 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -12,7 +12,7 @@ from math import ceil from collections import OrderedDict from operator import itemgetter from pathlib import Path -from pprint import pprint +from pprint import pformat from typing import Any, Dict, List, Optional import rapidjson @@ -244,11 +244,21 @@ class Hyperopt: def _params_pretty_print(params, space: str, header: str) -> None: if space in params: space_params = Hyperopt._space_params(params, space, 5) + print(f"\n # {header}") if space == 'stoploss': - print(header, space_params.get('stoploss')) + print(" stoploss =", space_params.get('stoploss')) + elif space == 'roi': + minimal_roi_result = rapidjson.dumps( + OrderedDict( + (str(k), v) for k, v in space_params.items() + ), + default=str, indent=4, number_mode=rapidjson.NM_NATIVE) + minimal_roi_result = minimal_roi_result.replace("\n", "\n ") + print(f" minimal_roi = {minimal_roi_result}") else: - print(header) - pprint(space_params, indent=4) + params_result = pformat(space_params, indent=4).replace("}", "\n}") + params_result = params_result.replace("{", "{\n ").replace("\n", "\n ") + print(f" {space}_params = {params_result}") @staticmethod def _space_params(params, space: str, r: int = None) -> Dict: From a7cd68121beb33cb40520b94439344879c1b7114 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 10 Jun 2020 19:44:34 +0200 Subject: [PATCH 2592/3421] Have rest-client use new reload_config endpoint --- scripts/rest_client.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/rest_client.py b/scripts/rest_client.py index b26c32479..1f96bcb69 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -80,18 +80,18 @@ class FtRestClient(): return self._post("stop") def stopbuy(self): - """Stop buying (but handle sells gracefully). Use `reload_conf` to reset. + """Stop buying (but handle sells gracefully). Use `reload_config` to reset. :return: json object """ return self._post("stopbuy") - def reload_conf(self): + def reload_config(self): """Reload configuration. :return: json object """ - return self._post("reload_conf") + return self._post("reload_config") def balance(self): """Get the account balance. From c66ca957d9a6c5adc2560042d802c29c966988c7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 10 Jun 2020 19:57:47 +0200 Subject: [PATCH 2593/3421] Add test verifying this behaviour --- tests/pairlist/test_pairlist.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 421f06911..c67f7ae1c 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -421,6 +421,23 @@ def test__whitelist_for_active_markets(mocker, whitelist_conf, markets, pairlist assert log_message in caplog.text +@pytest.mark.parametrize("pairlist", AVAILABLE_PAIRLISTS) +def test__whitelist_for_active_markets_empty(mocker, whitelist_conf, markets, pairlist, tickers): + whitelist_conf['pairlists'][0]['method'] = pairlist + + mocker.patch('freqtrade.exchange.Exchange.exchange_has', return_value=True) + + freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) + mocker.patch.multiple('freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=None), + get_tickers=tickers + ) + # Assign starting whitelist + pairlist_handler = freqtrade.pairlists._pairlist_handlers[0] + with pytest.raises(OperationalException, match=r'Markets not loaded.*'): + pairlist_handler._whitelist_for_active_markets(['ETH/BTC']) + + def test_volumepairlist_invalid_sortvalue(mocker, markets, whitelist_conf): whitelist_conf['pairlists'][0].update({"sort_key": "asdf"}) From 1e7826f3922748449554d01cfb81c7c366c5babb Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 10 Jun 2020 19:57:59 +0200 Subject: [PATCH 2594/3421] Explicitly raise OperationalException if markets are not loaded correctly --- freqtrade/pairlist/IPairList.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index f48a7dcfd..fd25e0766 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -150,6 +150,9 @@ class IPairList(ABC): black_listed """ markets = self._exchange.markets + if not markets: + raise OperationalException( + 'Markets not loaded. Make sure that exchange is initialized correctly.') sanitized_whitelist: List[str] = [] for pair in pairlist: From ab2f5579d8ad638d10a222ff1f84fdff41306c4e Mon Sep 17 00:00:00 2001 From: CoDaXe Date: Thu, 11 Jun 2020 20:34:14 -0400 Subject: [PATCH 2595/3421] Update strategy-customization.md Fix typo "the an" --- docs/strategy-customization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 92e4453d2..be41b196e 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -139,7 +139,7 @@ By letting the bot know how much history is needed, backtest trades can start at #### Example -Let's try to backtest 1 month (January 2019) of 5m candles using the an example strategy with EMA100, as above. +Let's try to backtest 1 month (January 2019) of 5m candles using an example strategy with EMA100, as above. ``` bash freqtrade backtesting --timerange 20190101-20190201 --ticker-interval 5m From 9615614e489d194155a896c6cb8c4ca86522ce8f Mon Sep 17 00:00:00 2001 From: CoDaXe Date: Fri, 12 Jun 2020 13:13:10 -0400 Subject: [PATCH 2596/3421] Update hyperopt.md Wrong flag name --- docs/hyperopt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 8efc51a39..f66534726 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -265,7 +265,7 @@ freqtrade hyperopt --timerange 20180401-20180501 Hyperopt can reuse `populate_indicators`, `populate_buy_trend`, `populate_sell_trend` from your strategy, assuming these methods are **not** in your custom hyperopt file, and a strategy is provided. ```bash -freqtrade hyperopt --strategy SampleStrategy --customhyperopt SampleHyperopt +freqtrade hyperopt --strategy SampleStrategy --hyperopt SampleHyperopt ``` ### Running Hyperopt with Smaller Search Space From 9890e26aeb7d1664088b1dc3cad3db1eba69a633 Mon Sep 17 00:00:00 2001 From: John Duong Date: Fri, 12 Jun 2020 22:10:18 -0700 Subject: [PATCH 2597/3421] fix SQL cheatsheet query (#3475) --- docs/sql_cheatsheet.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sql_cheatsheet.md b/docs/sql_cheatsheet.md index 895a0536a..88eb0d3d4 100644 --- a/docs/sql_cheatsheet.md +++ b/docs/sql_cheatsheet.md @@ -101,7 +101,7 @@ SET is_open=0, close_date=, close_rate=, close_profit=close_rate/open_rate-1, - close_profit_abs = (amount * * (1 - fee_close) - (amount * open_rate * 1 - fee_open), + close_profit_abs = (amount * * (1 - fee_close) - (amount * open_rate * 1 - fee_open)), sell_reason= WHERE id=; ``` @@ -114,7 +114,7 @@ SET is_open=0, close_date='2017-12-20 03:08:45.103418', close_rate=0.19638016, close_profit=0.0496, - close_profit_abs = (amount * 0.19638016 * (1 - fee_close) - (amount * open_rate * 1 - fee_open) + close_profit_abs = (amount * 0.19638016 * (1 - fee_close) - (amount * open_rate * 1 - fee_open)) sell_reason='force_sell' WHERE id=31; ``` From 37bc2d28ad4572234940689fa938a48732d11207 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 13 Jun 2020 13:34:29 +0300 Subject: [PATCH 2598/3421] Revert "Remove _load_async_markets" This reverts commit 6744f8f052d66e1f7a49eff81c6ff57e65fec0cf. --- freqtrade/exchange/exchange.py | 17 ++++++++++++++--- tests/exchange/test_exchange.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index e974655cb..bd44f56f2 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -256,21 +256,32 @@ class Exchange: "Please check your config.json") raise OperationalException(f'Exchange {name} does not provide a sandbox api') + def _load_async_markets(self, reload: bool = False) -> None: + try: + if self._api_async: + asyncio.get_event_loop().run_until_complete( + self._api_async.load_markets(reload=reload)) + + except ccxt.BaseError as e: + logger.warning('Could not load async markets. Reason: %s', e) + return + def _load_markets(self) -> None: - """ Initialize markets """ + """ Initialize markets both sync and async """ try: self._api.load_markets() + self._load_async_markets() self._last_markets_refresh = arrow.utcnow().timestamp except ccxt.BaseError as e: logger.warning('Unable to initialize markets. Reason: %s', e) def reload_markets(self) -> None: - """Reload markets if refresh interval has passed """ + """Reload markets both sync and async if refresh interval has passed """ # Check whether markets have to be reloaded if (self._last_markets_refresh > 0) and ( self._last_markets_refresh + self.markets_refresh_interval > arrow.utcnow().timestamp): - return + return None logger.debug("Performing scheduled market reload..") try: self._api.load_markets(reload=True) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 9914188b8..2b63eee23 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -130,6 +130,7 @@ def test_init_exception(default_conf, mocker): def test_exchange_resolver(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=MagicMock())) + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_pairs') mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') @@ -317,6 +318,19 @@ def test_set_sandbox_exception(default_conf, mocker): exchange.set_sandbox(exchange._api, default_conf['exchange'], 'Logname') +def test__load_async_markets(default_conf, mocker, caplog): + exchange = get_patched_exchange(mocker, default_conf) + exchange._api_async.load_markets = get_mock_coro(None) + exchange._load_async_markets() + assert exchange._api_async.load_markets.call_count == 1 + caplog.set_level(logging.DEBUG) + + exchange._api_async.load_markets = Mock(side_effect=ccxt.BaseError("deadbeef")) + exchange._load_async_markets() + + assert log_has('Could not load async markets. Reason: deadbeef', caplog) + + def test__load_markets(default_conf, mocker, caplog): caplog.set_level(logging.INFO) api_mock = MagicMock() @@ -324,6 +338,7 @@ def test__load_markets(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_pairs') mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) assert log_has('Unable to initialize markets. Reason: SomeError', caplog) @@ -391,6 +406,7 @@ def test_validate_stake_currency(default_conf, stake_currency, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_pairs') mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') Exchange(default_conf) @@ -404,6 +420,7 @@ def test_validate_stake_currency_error(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_pairs') mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') with pytest.raises(OperationalException, match=r'XRP is not available as stake on .*' 'Available currencies are: BTC, ETH, USDT'): @@ -453,6 +470,7 @@ def test_validate_pairs(default_conf, mocker): # test exchange.validate_pairs d mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) @@ -465,6 +483,7 @@ def test_validate_pairs_not_available(default_conf, mocker): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') with pytest.raises(OperationalException, match=r'not available'): Exchange(default_conf) @@ -479,6 +498,7 @@ def test_validate_pairs_exception(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', api_mock) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') with pytest.raises(OperationalException, match=r'Pair ETH/BTC is not available on Binance'): Exchange(default_conf) @@ -497,6 +517,7 @@ def test_validate_pairs_restricted(default_conf, mocker, caplog): }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) @@ -514,6 +535,7 @@ def test_validate_pairs_stakecompatibility(default_conf, mocker, caplog): }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) @@ -529,6 +551,7 @@ def test_validate_pairs_stakecompatibility_downloaddata(default_conf, mocker, ca }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') Exchange(default_conf) @@ -544,6 +567,7 @@ def test_validate_pairs_stakecompatibility_fail(default_conf, mocker, caplog): }) mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock)) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') with pytest.raises(OperationalException, match=r"Stake-currency 'BTC' not compatible with.*"): @@ -718,6 +742,7 @@ def test_validate_required_startup_candles(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange._init_ccxt', api_mock) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_async_markets') mocker.patch('freqtrade.exchange.Exchange.validate_pairs') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') @@ -1909,6 +1934,7 @@ def test_stoploss_order_unsupported_exchange(default_conf, mocker): def test_merge_ft_has_dict(default_conf, mocker): mocker.patch.multiple('freqtrade.exchange.Exchange', _init_ccxt=MagicMock(return_value=MagicMock()), + _load_async_markets=MagicMock(), validate_pairs=MagicMock(), validate_timeframes=MagicMock(), validate_stakecurrency=MagicMock() @@ -1942,6 +1968,7 @@ def test_merge_ft_has_dict(default_conf, mocker): def test_get_valid_pair_combination(default_conf, mocker, markets): mocker.patch.multiple('freqtrade.exchange.Exchange', _init_ccxt=MagicMock(return_value=MagicMock()), + _load_async_markets=MagicMock(), validate_pairs=MagicMock(), validate_timeframes=MagicMock(), markets=PropertyMock(return_value=markets)) @@ -2014,6 +2041,7 @@ def test_get_markets(default_conf, mocker, markets, expected_keys): mocker.patch.multiple('freqtrade.exchange.Exchange', _init_ccxt=MagicMock(return_value=MagicMock()), + _load_async_markets=MagicMock(), validate_pairs=MagicMock(), validate_timeframes=MagicMock(), markets=PropertyMock(return_value=markets)) From 3d9b1077612c272267363c72a1653ec39ffdaa83 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 13 Jun 2020 17:12:37 +0300 Subject: [PATCH 2599/3421] Changes after review --- freqtrade/optimize/hyperopt.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 58bcbd208..1136fc4a7 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -230,6 +230,9 @@ class Hyperopt: if space in ['buy', 'sell']: result_dict.setdefault('params', {}).update(space_params) elif space == 'roi': + # TODO: get rid of OrderedDict when support for python 3.6 will be + # dropped (dicts keep the order as the language feature) + # Convert keys in min_roi dict to strings because # rapidjson cannot dump dicts with integer keys... # OrderedDict is used to keep the numeric order of the items @@ -244,21 +247,24 @@ class Hyperopt: def _params_pretty_print(params, space: str, header: str) -> None: if space in params: space_params = Hyperopt._space_params(params, space, 5) - print(f"\n # {header}") + params_result = f"\n# {header}\n" if space == 'stoploss': - print(" stoploss =", space_params.get('stoploss')) + params_result += f"stoploss = {space_params.get('stoploss')}" elif space == 'roi': minimal_roi_result = rapidjson.dumps( + # TODO: get rid of OrderedDict when support for python 3.6 will be + # dropped (dicts keep the order as the language feature) OrderedDict( (str(k), v) for k, v in space_params.items() ), default=str, indent=4, number_mode=rapidjson.NM_NATIVE) - minimal_roi_result = minimal_roi_result.replace("\n", "\n ") - print(f" minimal_roi = {minimal_roi_result}") + params_result += f"minimal_roi = {minimal_roi_result}" else: - params_result = pformat(space_params, indent=4).replace("}", "\n}") - params_result = params_result.replace("{", "{\n ").replace("\n", "\n ") - print(f" {space}_params = {params_result}") + params_result += f"{space}_params = {pformat(space_params, indent=4)}" + params_result = params_result.replace("}", "\n}").replace("{", "{\n ") + + params_result = params_result.replace("\n", "\n ") + print(params_result) @staticmethod def _space_params(params, space: str, r: int = None) -> Dict: From ea77edce0519bdd7664fd20fd65416f85bdbaada Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 13 Jun 2020 18:54:54 +0300 Subject: [PATCH 2600/3421] Make flake happy --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 1136fc4a7..153ae3861 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -251,9 +251,9 @@ class Hyperopt: if space == 'stoploss': params_result += f"stoploss = {space_params.get('stoploss')}" elif space == 'roi': - minimal_roi_result = rapidjson.dumps( # TODO: get rid of OrderedDict when support for python 3.6 will be # dropped (dicts keep the order as the language feature) + minimal_roi_result = rapidjson.dumps( OrderedDict( (str(k), v) for k, v in space_params.items() ), From be03c22dba4037d371cb26ff43431e10c928f5a0 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 14 Jun 2020 00:35:58 +0300 Subject: [PATCH 2601/3421] Minor: Fix exception message --- freqtrade/exchange/binance.py | 2 +- freqtrade/exchange/kraken.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 4279f392c..4d76c7966 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -78,7 +78,7 @@ class Binance(Exchange): return order except ccxt.InsufficientFunds as e: raise DependencyException( - f'Insufficient funds to create {ordertype} sell order on market {pair}.' + f'Insufficient funds to create {ordertype} sell order on market {pair}. ' f'Tried to sell amount {amount} at rate {rate}. ' f'Message: {e}') from e except ccxt.InvalidOrder as e: diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index 932d82a27..cac9a945c 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -85,7 +85,7 @@ class Kraken(Exchange): return order except ccxt.InsufficientFunds as e: raise DependencyException( - f'Insufficient funds to create {ordertype} sell order on market {pair}.' + f'Insufficient funds to create {ordertype} sell order on market {pair}. ' f'Tried to create stoploss with amount {amount} at stoploss {stop_price}. ' f'Message: {e}') from e except ccxt.InvalidOrder as e: From 1bf333d3200ba931215303b6886be1be89065902 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 14 Jun 2020 00:57:13 +0300 Subject: [PATCH 2602/3421] Minor: fix test --- tests/exchange/test_exchange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 2b63eee23..48c4956cf 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -705,7 +705,7 @@ def test_validate_order_types(default_conf, mocker): 'buy': 'limit', 'sell': 'limit', 'stoploss': 'market', - 'stoploss_on_exchange': 'false' + 'stoploss_on_exchange': False } with pytest.raises(OperationalException, From 4660909e958eb8da2b79e989435c4e7426f5fbba Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 14 Jun 2020 01:07:00 +0300 Subject: [PATCH 2603/3421] Validate stoploss_on_exchange_limit_ratio at startup time --- freqtrade/exchange/exchange.py | 7 +++++++ tests/exchange/test_exchange.py | 26 +++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index bd44f56f2..820526b49 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -386,6 +386,13 @@ class Exchange: f'On exchange stoploss is not supported for {self.name}.' ) + # Limit price threshold: As limit price should always be below stop-price + # Used for limit stoplosses on exchange + limit_price_pct = order_types.get('stoploss_on_exchange_limit_ratio', 0.99) + if limit_price_pct >= 1.0 or limit_price_pct <= 0.0: + raise OperationalException( + "stoploss_on_exchange_limit_ratio should be < 1.0 and > 0.0") + def validate_order_time_in_force(self, order_time_in_force: Dict) -> None: """ Checks if order time in force configured in strategy/config are supported diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 48c4956cf..1aaf95379 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -689,13 +689,13 @@ def test_validate_order_types(default_conf, mocker): mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') mocker.patch('freqtrade.exchange.Exchange.name', 'Bittrex') + default_conf['order_types'] = { 'buy': 'limit', 'sell': 'limit', 'stoploss': 'market', 'stoploss_on_exchange': False } - Exchange(default_conf) type(api_mock).has = PropertyMock(return_value={'createMarketOrder': False}) @@ -707,7 +707,6 @@ def test_validate_order_types(default_conf, mocker): 'stoploss': 'market', 'stoploss_on_exchange': False } - with pytest.raises(OperationalException, match=r'Exchange .* does not support market orders.'): Exchange(default_conf) @@ -718,11 +717,32 @@ def test_validate_order_types(default_conf, mocker): 'stoploss': 'limit', 'stoploss_on_exchange': True } - with pytest.raises(OperationalException, match=r'On exchange stoploss is not supported for .*'): Exchange(default_conf) + default_conf['order_types'] = { + 'buy': 'limit', + 'sell': 'limit', + 'stoploss': 'limit', + 'stoploss_on_exchange': False, + 'stoploss_on_exchange_limit_ratio': 1.05 + } + with pytest.raises(OperationalException, + match=r'stoploss_on_exchange_limit_ratio should be < 1.0 and > 0.0'): + Exchange(default_conf) + + default_conf['order_types'] = { + 'buy': 'limit', + 'sell': 'limit', + 'stoploss': 'limit', + 'stoploss_on_exchange': False, + 'stoploss_on_exchange_limit_ratio': -0.1 + } + with pytest.raises(OperationalException, + match=r'stoploss_on_exchange_limit_ratio should be < 1.0 and > 0.0'): + Exchange(default_conf) + def test_validate_order_types_not_in_config(default_conf, mocker): api_mock = MagicMock() From de36f3d850b5f17f027ef2ac0fd1ad147d2c4a47 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 14 Jun 2020 01:42:45 +0300 Subject: [PATCH 2604/3421] Cosmetics in freqtradebot --- freqtrade/freqtradebot.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 8a66957c3..341cd5416 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -795,10 +795,8 @@ class FreqtradeBot: return False # If buy order is fulfilled but there is no stoploss, we add a stoploss on exchange - if (not stoploss_order): - + if not stoploss_order: stoploss = self.edge.stoploss(pair=trade.pair) if self.edge else self.strategy.stoploss - stop_price = trade.open_rate * (1 + stoploss) if self.create_stoploss_order(trade=trade, stop_price=stop_price, rate=stop_price): From f6f7c99b9c558a6410b98b4b884a5c952cce074a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 06:31:05 +0200 Subject: [PATCH 2605/3421] Adjust typography and add missing space Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- freqtrade/exchange/ftx.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index 73347f1eb..f16db96f5 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -60,7 +60,7 @@ class Ftx(Exchange): return order except ccxt.InsufficientFunds as e: raise DependencyException( - f'Insufficient funds to create {ordertype} sell order on market {pair}.' + f'Insufficient funds to create {ordertype} sell order on market {pair}. ' f'Tried to create stoploss with amount {amount} at stoploss {stop_price}. ' f'Message: {e}') from e except ccxt.InvalidOrder as e: @@ -91,7 +91,7 @@ class Ftx(Exchange): if len(order) == 1: return order[0] else: - raise InvalidOrderException(f"Could not get Stoploss Order for id {order_id}") + raise InvalidOrderException(f"Could not get stoploss order for id {order_id}") except ccxt.InvalidOrder as e: raise InvalidOrderException( From 534c242d1b44f0cda20202da85632936fc1e6ab3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 06:33:08 +0200 Subject: [PATCH 2606/3421] Apply typography to test too --- tests/exchange/test_ftx.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/exchange/test_ftx.py b/tests/exchange/test_ftx.py index bead63096..75e98740c 100644 --- a/tests/exchange/test_ftx.py +++ b/tests/exchange/test_ftx.py @@ -149,7 +149,7 @@ def test_get_stoploss_order(default_conf, mocker): api_mock.fetch_orders = MagicMock(return_value=[{'id': 'Y', 'status': '456'}]) exchange = get_patched_exchange(mocker, default_conf, api_mock, id='ftx') - with pytest.raises(InvalidOrderException, match=r"Could not get Stoploss Order for id X"): + with pytest.raises(InvalidOrderException, match=r"Could not get stoploss order for id X"): exchange.get_stoploss_order('X', 'TKN/BTC')['status'] with pytest.raises(InvalidOrderException): From 837aedb0c7622826a2e5b7f2fc2bf105e43d472c Mon Sep 17 00:00:00 2001 From: muletman <66912721+muletman@users.noreply.github.com> Date: Sun, 14 Jun 2020 17:03:18 +0100 Subject: [PATCH 2607/3421] Docs: Run multiple instances for new users This is my proposition of contribution for how new users could get up and running with multiple instances of the bot, based on the conversation I had on Slack with @hroff-1902 It appeared to me that the transparent creation and usage of the sqlite databases, and the necessity to create other databases to run multiple bots at the same time was not so straightforward to me in the first place, despite browsing through the docs. It is evident now ;) but that will maybe save time for devs if any other new user come on slack with the same issue. Thanks --- HowToRunMultipleInstances.md | 51 ++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 HowToRunMultipleInstances.md diff --git a/HowToRunMultipleInstances.md b/HowToRunMultipleInstances.md new file mode 100644 index 000000000..a5ec4c10c --- /dev/null +++ b/HowToRunMultipleInstances.md @@ -0,0 +1,51 @@ +# How to run multiple instances of freqtrade simultaneously + +This page is meant to be a quick tip for new users on how to run multiple bots a the same time, on the same computer (or other devices). + +In order to keep track of your trades, profits, etc., freqtrade is using a SQLite database where it stores various types of information such as the trades you performed in the past and the current position(s) you are holding at any time. This allow you to keep track of your profits, but most importantly, keep track of ongoing activity if the bot process would finish unexpectedly for one or another reason. + +As for various other things, upon docker or manual install, [freqtrade will create by default two different databases, one for dry-run, and the other for live trades.](https://www.freqtrade.io/en/latest/docker/#create-your-database-file) + +By default, executing the trade command in the command line interface, without specifying any database (`--db-url`) argument, freqtrade will store your trades and performance history in one of these two default databases, depending if dry-run mode is enabled or not. These databases are actual .sqlite files which are stored in your main freqtrade folder, under the name `tradesv3.dryrun.sqlite` for the dry-run mode, and `tradesv3.sqlite` for the live mode. + +The optional argument to the trade command used to specify the path of these files is `--db-url`. So when you are starting a bot with only the config and strategy arguments in dry-run mode for instance : + +``` +freqtrade trade -c MyConfig.json -s MyStrategy +``` + +is equivalent to : + +``` +freqtrade trade -c MyConfig.json -s MyStrategy --db-url sqlite:///tradesv3.dryrun.sqlite +``` + +That means that if you are running the trade command in two different terminals, for example to test your strategy both for trades in USDT and in another instance for trades in BTC, you will have to run them with different databases. Even if you are using the same configuration file and strategy. + + If you specify the URL of a database which does not exist, freqtrade will create one with the name you specified. So for example if you want to test your custom strategy in BTC vs USDT, you could type in one terminal : + +``` +freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite://path/tradesBTC.dryrun.sqlite +``` + +and in the other + +``` +freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite://path/path/tradesUSDT.dryrun.sqlite +``` + +Conversely, if you wish to do the same thing in production mode, you will also have to create at least one new database (in addition to the default one) and specify the path to the "live" databases, for example : + +``` +freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite://path/tradesBTC.live.sqlite +``` + +and in the other + +``` +freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite://path/path/tradesUSDT.live.sqlite +``` + +For more information regarding usage of the sqlite databases, for example to manually enter or remove trades, please refer to the following page : + +https://www.freqtrade.io/en/latest/sql_cheatsheet/ From d337fb6c6a4a3ca3e3f7bfb542b6bf7db0a788a8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 15 Jun 2020 06:35:31 +0200 Subject: [PATCH 2608/3421] Update some comments --- freqtrade/commands/pairlist_commands.py | 1 - freqtrade/optimize/hyperopt_interface.py | 4 ++-- freqtrade/resolvers/strategy_resolver.py | 2 +- tests/strategy/test_strategy.py | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/freqtrade/commands/pairlist_commands.py b/freqtrade/commands/pairlist_commands.py index dffe0c82e..77bcb04b4 100644 --- a/freqtrade/commands/pairlist_commands.py +++ b/freqtrade/commands/pairlist_commands.py @@ -25,7 +25,6 @@ def start_test_pairlist(args: Dict[str, Any]) -> None: results = {} for curr in quote_currencies: config['stake_currency'] = curr - # Do not use timeframe set in the config pairlists = PairListManager(exchange, config) pairlists.refresh_pairlist() results[curr] = pairlists.whitelist diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 00353cbf4..65069b984 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -31,14 +31,14 @@ class IHyperOpt(ABC): Class attributes you can use: ticker_interval -> int: value of the ticker interval to use for the strategy """ - ticker_interval: str # deprecated + ticker_interval: str # DEPRECATED timeframe: str def __init__(self, config: dict) -> None: self.config = config # Assign ticker_interval to be used in hyperopt - IHyperOpt.ticker_interval = str(config['timeframe']) # DEPRECTED + IHyperOpt.ticker_interval = str(config['timeframe']) # DEPRECATED IHyperOpt.timeframe = str(config['timeframe']) @staticmethod diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 26bce01ca..121a04877 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -54,7 +54,7 @@ class StrategyResolver(IResolver): # Assign ticker_interval to timeframe to keep compatibility if 'timeframe' not in config: logger.warning( - "DEPRECATED: Please migrate to using timeframe instead of ticker_interval." + "DEPRECATED: Please migrate to using 'timeframe' instead of 'ticker_interval'." ) strategy.timeframe = strategy.ticker_interval diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 85cb8c132..240f3d8ec 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -386,7 +386,7 @@ def test_call_deprecated_function(result, monkeypatch, default_conf, caplog): assert isinstance(selldf, DataFrame) assert 'sell' in selldf - assert log_has('DEPRECATED: Please migrate to using timeframe instead of ticker_interval.', + assert log_has("DEPRECATED: Please migrate to using 'timeframe' instead of 'ticker_interval'.", caplog) From 1853350c7d344a0860d2f2d371ca211dd5f3bb4b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2020 09:01:05 +0000 Subject: [PATCH 2609/3421] Bump mkdocs-material from 5.2.3 to 5.3.0 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.2.3 to 5.3.0. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.2.3...5.3.0) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index b8ea338de..666cf5ac4 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.2.3 +mkdocs-material==5.3.0 mdx_truly_sane_lists==1.2 From d66050522c30da1d7b39fee9ff1ac5b906f39587 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2020 09:02:14 +0000 Subject: [PATCH 2610/3421] Bump ccxt from 1.29.52 to 1.30.2 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.29.52 to 1.30.2. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.29.52...1.30.2) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index dab3a5da4..a6420d76a 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.29.52 +ccxt==1.30.2 SQLAlchemy==1.3.17 python-telegram-bot==12.7 arrow==0.15.6 From f38f3643f55157e52523df7651df79002b319433 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2020 09:02:34 +0000 Subject: [PATCH 2611/3421] Bump pytest-cov from 2.9.0 to 2.10.0 Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 2.9.0 to 2.10.0. - [Release notes](https://github.com/pytest-dev/pytest-cov/releases) - [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-cov/compare/v2.9.0...v2.10.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index d62b768c1..d8d09a0c5 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -10,7 +10,7 @@ flake8-tidy-imports==4.1.0 mypy==0.780 pytest==5.4.3 pytest-asyncio==0.12.0 -pytest-cov==2.9.0 +pytest-cov==2.10.0 pytest-mock==3.1.1 pytest-random-order==1.0.4 From df90d631fb3b32327dbae36d0e4d0b25205e7d98 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2020 10:05:20 +0000 Subject: [PATCH 2612/3421] Bump flake8 from 3.8.2 to 3.8.3 Bumps [flake8](https://gitlab.com/pycqa/flake8) from 3.8.2 to 3.8.3. - [Release notes](https://gitlab.com/pycqa/flake8/tags) - [Commits](https://gitlab.com/pycqa/flake8/compare/3.8.2...3.8.3) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index d8d09a0c5..840eff15f 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -4,7 +4,7 @@ -r requirements-hyperopt.txt coveralls==2.0.0 -flake8==3.8.2 +flake8==3.8.3 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.780 From e24ffebe691b3e90ac4c660edbb702aca1ca53c5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 15 Jun 2020 19:24:33 +0200 Subject: [PATCH 2613/3421] Move Multiple instances section to advanced-setup.md --- HowToRunMultipleInstances.md | 51 ----------------------------------- docs/advanced-setup.md | 52 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 51 deletions(-) delete mode 100644 HowToRunMultipleInstances.md diff --git a/HowToRunMultipleInstances.md b/HowToRunMultipleInstances.md deleted file mode 100644 index a5ec4c10c..000000000 --- a/HowToRunMultipleInstances.md +++ /dev/null @@ -1,51 +0,0 @@ -# How to run multiple instances of freqtrade simultaneously - -This page is meant to be a quick tip for new users on how to run multiple bots a the same time, on the same computer (or other devices). - -In order to keep track of your trades, profits, etc., freqtrade is using a SQLite database where it stores various types of information such as the trades you performed in the past and the current position(s) you are holding at any time. This allow you to keep track of your profits, but most importantly, keep track of ongoing activity if the bot process would finish unexpectedly for one or another reason. - -As for various other things, upon docker or manual install, [freqtrade will create by default two different databases, one for dry-run, and the other for live trades.](https://www.freqtrade.io/en/latest/docker/#create-your-database-file) - -By default, executing the trade command in the command line interface, without specifying any database (`--db-url`) argument, freqtrade will store your trades and performance history in one of these two default databases, depending if dry-run mode is enabled or not. These databases are actual .sqlite files which are stored in your main freqtrade folder, under the name `tradesv3.dryrun.sqlite` for the dry-run mode, and `tradesv3.sqlite` for the live mode. - -The optional argument to the trade command used to specify the path of these files is `--db-url`. So when you are starting a bot with only the config and strategy arguments in dry-run mode for instance : - -``` -freqtrade trade -c MyConfig.json -s MyStrategy -``` - -is equivalent to : - -``` -freqtrade trade -c MyConfig.json -s MyStrategy --db-url sqlite:///tradesv3.dryrun.sqlite -``` - -That means that if you are running the trade command in two different terminals, for example to test your strategy both for trades in USDT and in another instance for trades in BTC, you will have to run them with different databases. Even if you are using the same configuration file and strategy. - - If you specify the URL of a database which does not exist, freqtrade will create one with the name you specified. So for example if you want to test your custom strategy in BTC vs USDT, you could type in one terminal : - -``` -freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite://path/tradesBTC.dryrun.sqlite -``` - -and in the other - -``` -freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite://path/path/tradesUSDT.dryrun.sqlite -``` - -Conversely, if you wish to do the same thing in production mode, you will also have to create at least one new database (in addition to the default one) and specify the path to the "live" databases, for example : - -``` -freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite://path/tradesBTC.live.sqlite -``` - -and in the other - -``` -freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite://path/path/tradesUSDT.live.sqlite -``` - -For more information regarding usage of the sqlite databases, for example to manually enter or remove trades, please refer to the following page : - -https://www.freqtrade.io/en/latest/sql_cheatsheet/ diff --git a/docs/advanced-setup.md b/docs/advanced-setup.md index 95480a2c6..9848d04c8 100644 --- a/docs/advanced-setup.md +++ b/docs/advanced-setup.md @@ -4,6 +4,58 @@ This page explains some advanced tasks and configuration options that can be per If you do not know what things mentioned here mean, you probably do not need it. +## Running multiple instances of Freqtrade + +This page is meant to be a quick tip for new users on how to run multiple bots a the same time, on the same computer (or other devices). + +In order to keep track of your trades, profits, etc., freqtrade is using a SQLite database where it stores various types of information such as the trades you performed in the past and the current position(s) you are holding at any time. This allow you to keep track of your profits, but most importantly, keep track of ongoing activity if the bot process would finish unexpectedly for one or another reason. + +As for various other things, upon docker or manual install, [freqtrade will create by default two different databases, one for dry-run, and the other for live trades.](https://www.freqtrade.io/en/latest/docker/#create-your-database-file) + +By default, executing the trade command in the command line interface, without specifying any database (`--db-url`) argument, freqtrade will store your trades and performance history in one of these two default databases, depending if dry-run mode is enabled or not. These databases are actual .sqlite files which are stored in your main freqtrade folder, under the name `tradesv3.dryrun.sqlite` for the dry-run mode, and `tradesv3.sqlite` for the live mode. + +The optional argument to the trade command used to specify the path of these files is `--db-url`. So when you are starting a bot with only the config and strategy arguments in dry-run mode for instance : + +``` bash +freqtrade trade -c MyConfig.json -s MyStrategy +``` + +is equivalent to: + +``` bash +freqtrade trade -c MyConfig.json -s MyStrategy --db-url sqlite:///tradesv3.dryrun.sqlite +``` + +That means that if you are running the trade command in two different terminals, for example to test your strategy both for trades in USDT and in another instance for trades in BTC, you will have to run them with different databases. Even if you are using the same configuration file and strategy. + + If you specify the URL of a database which does not exist, freqtrade will create one with the name you specified. So for example if you want to test your custom strategy in BTC vs USDT, you could type in one terminal : + +``` bash +freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite://path/tradesBTC.dryrun.sqlite +``` + +and in the other + +``` bash +freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite://path/path/tradesUSDT.dryrun.sqlite +``` + +Conversely, if you wish to do the same thing in production mode, you will also have to create at least one new database (in addition to the default one) and specify the path to the "live" databases, for example : + +``` bash +freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite://path/tradesBTC.live.sqlite +``` + +and in the other + +``` bash +freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite://path/path/tradesUSDT.live.sqlite +``` + +For more information regarding usage of the sqlite databases, for example to manually enter or remove trades, please refer to the following page: + +https://www.freqtrade.io/en/latest/sql_cheatsheet/ + ## Configure the bot running as a systemd service Copy the `freqtrade.service` file to your systemd user directory (usually `~/.config/systemd/user`) and update `WorkingDirectory` and `ExecStart` to match your setup. From 61ce18a4abb17b3c5c7d46701b62a4b4504410ce Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 15 Jun 2020 19:35:57 +0200 Subject: [PATCH 2614/3421] Slightly reword certain things - add link in FAQ --- docs/advanced-setup.md | 56 ++++++++++++++++++++---------------------- docs/faq.md | 4 +++ 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/advanced-setup.md b/docs/advanced-setup.md index 9848d04c8..21e428fa7 100644 --- a/docs/advanced-setup.md +++ b/docs/advanced-setup.md @@ -6,55 +6,51 @@ If you do not know what things mentioned here mean, you probably do not need it. ## Running multiple instances of Freqtrade -This page is meant to be a quick tip for new users on how to run multiple bots a the same time, on the same computer (or other devices). +This section will show you how to run multiple bots a the same time, on the same computer (or other devices). -In order to keep track of your trades, profits, etc., freqtrade is using a SQLite database where it stores various types of information such as the trades you performed in the past and the current position(s) you are holding at any time. This allow you to keep track of your profits, but most importantly, keep track of ongoing activity if the bot process would finish unexpectedly for one or another reason. +### Things to consider -As for various other things, upon docker or manual install, [freqtrade will create by default two different databases, one for dry-run, and the other for live trades.](https://www.freqtrade.io/en/latest/docker/#create-your-database-file) +* use different database files. +* use different telegram Bots (requires 2 different configuration files). +* use different ports (*applies only when webserver is enabled). -By default, executing the trade command in the command line interface, without specifying any database (`--db-url`) argument, freqtrade will store your trades and performance history in one of these two default databases, depending if dry-run mode is enabled or not. These databases are actual .sqlite files which are stored in your main freqtrade folder, under the name `tradesv3.dryrun.sqlite` for the dry-run mode, and `tradesv3.sqlite` for the live mode. +#### Different database files -The optional argument to the trade command used to specify the path of these files is `--db-url`. So when you are starting a bot with only the config and strategy arguments in dry-run mode for instance : +In order to keep track of your trades, profits, etc., freqtrade is using a SQLite database where it stores various types of information such as the trades you performed in the past and the current position(s) you are holding at any time. This allows you to keep track of your profits, but most importantly, keep track of ongoing activity if the bot process would be restarted or would be terminated unexpectently. + +Freqtrade will, by default, use seperate database files for dry-run and live bots (this assumes no database-url is given in either configuration nor via command line argument). +For live trading mode, the default database will be `tradesv3.sqlite`, and for dry-run, it will be `tradesv3.dryrun.sqlite`. + +The optional argument to the trade command used to specify the path of these files is `--db-url`, which requires a valid SQLAlchemy url. +So when you are starting a bot with only the config and strategy arguments in dry-run mode, the following 2 commands would have the same outcome. ``` bash freqtrade trade -c MyConfig.json -s MyStrategy -``` - -is equivalent to: - -``` bash +# is equivalent to freqtrade trade -c MyConfig.json -s MyStrategy --db-url sqlite:///tradesv3.dryrun.sqlite ``` -That means that if you are running the trade command in two different terminals, for example to test your strategy both for trades in USDT and in another instance for trades in BTC, you will have to run them with different databases. Even if you are using the same configuration file and strategy. +That means that if you are running the trade command in two different terminals, for example to test your strategy both for trades in USDT and in another instance for trades in BTC, you will have to run them with different databases. - If you specify the URL of a database which does not exist, freqtrade will create one with the name you specified. So for example if you want to test your custom strategy in BTC vs USDT, you could type in one terminal : +If you specify the URL of a database which does not exist, freqtrade will create one with the name you specified. So to test your custom strategy in BTC and USDT, you could use the following commands (in 2 seperate terminals): ``` bash -freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite://path/tradesBTC.dryrun.sqlite +# Terminal 1: +freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite:///user_data/tradesBTC.dryrun.sqlite +# Terminal 2: +freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite:///user_data/tradesUSDT.dryrun.sqlite ``` -and in the other +Conversely, if you wish to do the same thing in production mode, you will also have to create at least one new database (in addition to the default one) and specify the path to the "live" databases, for example: ``` bash -freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite://path/path/tradesUSDT.dryrun.sqlite +# Terminal 1: +freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite:///user_data/tradesBTC.live.sqlite +# Terminal 2: +freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite:///user_data/tradesUSDT.live.sqlite ``` -Conversely, if you wish to do the same thing in production mode, you will also have to create at least one new database (in addition to the default one) and specify the path to the "live" databases, for example : - -``` bash -freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite://path/tradesBTC.live.sqlite -``` - -and in the other - -``` bash -freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite://path/path/tradesUSDT.live.sqlite -``` - -For more information regarding usage of the sqlite databases, for example to manually enter or remove trades, please refer to the following page: - -https://www.freqtrade.io/en/latest/sql_cheatsheet/ +For more information regarding usage of the sqlite databases, for example to manually enter or remove trades, please refer to the [SQL Cheatsheet](sql_cheatsheet.md) ## Configure the bot running as a systemd service diff --git a/docs/faq.md b/docs/faq.md index 8e8a1bf35..31c49171d 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -45,6 +45,10 @@ the tutorial [here|Testing-new-strategies-with-Hyperopt](bot-usage.md#hyperopt-c You can use the `/forcesell all` command from Telegram. +### I want to run multiple bots on the same machine + +Please look at the [advanced setup documentation Page](advanced-setup.md#running-multiple-instances-of-freqtrade). + ### I'm getting the "RESTRICTED_MARKET" message in the log Currently known to happen for US Bittrex users. From 5e4dd44155958487d5ae141953951f9471a3843f Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 15 Jun 2020 20:55:06 +0200 Subject: [PATCH 2615/3421] Fix formatting --- docs/advanced-setup.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/advanced-setup.md b/docs/advanced-setup.md index 21e428fa7..d3f692f33 100644 --- a/docs/advanced-setup.md +++ b/docs/advanced-setup.md @@ -6,13 +6,13 @@ If you do not know what things mentioned here mean, you probably do not need it. ## Running multiple instances of Freqtrade -This section will show you how to run multiple bots a the same time, on the same computer (or other devices). +This section will show you how to run multiple bots a the same time, on the same machine. ### Things to consider * use different database files. * use different telegram Bots (requires 2 different configuration files). -* use different ports (*applies only when webserver is enabled). +* use different ports (applies only when webserver is enabled). #### Different database files From 9cc04c929ff13595d0e29ab72c75673233eaa648 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 16 Jun 2020 07:17:15 +0200 Subject: [PATCH 2616/3421] Fix documentation typo --- docs/data-download.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/data-download.md b/docs/data-download.md index 903d62854..3fb775e69 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -109,7 +109,7 @@ The following command will convert all candle (OHLCV) data available in `~/.freq It'll also remove original json data files (`--erase` parameter). ``` bash -freqtrade convert-data --format-from json --format-to jsongz --data-dir ~/.freqtrade/data/binance -t 5m 15m --erase +freqtrade convert-data --format-from json --format-to jsongz --datadir ~/.freqtrade/data/binance -t 5m 15m --erase ``` #### Subcommand convert-trade data @@ -155,7 +155,7 @@ The following command will convert all available trade-data in `~/.freqtrade/dat It'll also remove original jsongz data files (`--erase` parameter). ``` bash -freqtrade convert-trade-data --format-from jsongz --format-to json --data-dir ~/.freqtrade/data/kraken --erase +freqtrade convert-trade-data --format-from jsongz --format-to json --datadir ~/.freqtrade/data/kraken --erase ``` ### Pairs file From 9dba2a34f9edc91a9e0e3ab0f970fb3286aa9b75 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 16 Jun 2020 10:16:23 +0200 Subject: [PATCH 2617/3421] Add note for hyperopt color support on windows --- docs/hyperopt.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 8efc51a39..9f7f97476 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -370,6 +370,9 @@ By default, hyperopt prints colorized results -- epochs with positive profit are You can use the `--print-all` command line option if you would like to see all results in the hyperopt output, not only the best ones. When `--print-all` is used, current best results are also colorized by default -- they are printed in bold (bright) style. This can also be switched off with the `--no-color` command line option. +!!! Note "Windows and color output" + Windows does not support color-output nativly, therefore it is automatically disabled. To have color-output for hyperopt running under windows, please consider using WSL. + ### Understand Hyperopt ROI results If you are optimizing ROI (i.e. if optimization search-space contains 'all', 'default' or 'roi'), your result will look as follows and include a ROI table: From 3517c86fa28786630bcb49c3c58bcddd41f0cf74 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 16 Jun 2020 16:02:38 +0200 Subject: [PATCH 2618/3421] Fail if both ticker_interval and timeframe are present in a configuration Otherwise the wrong might be used, as it's unclear which one the intend of the user is --- .../configuration/deprecated_settings.py | 5 +++++ tests/test_configuration.py | 20 ++++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/freqtrade/configuration/deprecated_settings.py b/freqtrade/configuration/deprecated_settings.py index cefc6ac14..03ed41ab8 100644 --- a/freqtrade/configuration/deprecated_settings.py +++ b/freqtrade/configuration/deprecated_settings.py @@ -72,4 +72,9 @@ def process_temporary_deprecated_settings(config: Dict[str, Any]) -> None: "DEPRECATED: " "Please use 'timeframe' instead of 'ticker_interval." ) + if 'timeframe' in config: + raise OperationalException( + "Both 'timeframe' and 'ticker_interval' detected." + "Please remove 'ticker_interval' from your configuration to continue operating." + ) config['timeframe'] = config['ticker_interval'] diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 689e62ab9..cccc87670 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -1144,11 +1144,21 @@ def test_process_deprecated_setting(mocker, default_conf, caplog): def test_process_deprecated_ticker_interval(mocker, default_conf, caplog): message = "DEPRECATED: Please use 'timeframe' instead of 'ticker_interval." - process_temporary_deprecated_settings(default_conf) + config = deepcopy(default_conf) + process_temporary_deprecated_settings(config) assert not log_has(message, caplog) - del default_conf['timeframe'] - default_conf['ticker_interval'] = '15m' - process_temporary_deprecated_settings(default_conf) + del config['timeframe'] + config['ticker_interval'] = '15m' + process_temporary_deprecated_settings(config) assert log_has(message, caplog) - assert default_conf['ticker_interval'] == '15m' + assert config['ticker_interval'] == '15m' + + config = deepcopy(default_conf) + # Have both timeframe and ticker interval in config + # Can also happen when using ticker_interval in configuration, and --timeframe as cli argument + config['timeframe'] = '5m' + config['ticker_interval'] = '4h' + with pytest.raises(OperationalException, + match=r"Both 'timeframe' and 'ticker_interval' detected."): + process_temporary_deprecated_settings(config) From d4fb5af456771083cf3facfd296fc59001d59fdb Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 17 Jun 2020 07:23:20 +0200 Subject: [PATCH 2619/3421] Also reload async markets fixes #2876 - Logs and Empty ticker history for new pair --- freqtrade/exchange/exchange.py | 2 ++ tests/exchange/test_exchange.py | 3 +++ 2 files changed, 5 insertions(+) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 35c62db27..b62410c34 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -285,6 +285,8 @@ class Exchange: logger.debug("Performing scheduled market reload..") try: self._api.load_markets(reload=True) + # Also reload async markets to avoid issues with newly listed pairs + self._load_async_markets(reload=True) self._last_markets_refresh = arrow.utcnow().timestamp except ccxt.BaseError: logger.exception("Could not reload markets.") diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 762ee295e..c9a600d50 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -365,6 +365,7 @@ def test_reload_markets(default_conf, mocker, caplog): default_conf['exchange']['markets_refresh_interval'] = 10 exchange = get_patched_exchange(mocker, default_conf, api_mock, id="binance", mock_markets=False) + exchange._load_async_markets = MagicMock() exchange._last_markets_refresh = arrow.utcnow().timestamp updated_markets = {'ETH/BTC': {}, "LTC/BTC": {}} @@ -373,11 +374,13 @@ def test_reload_markets(default_conf, mocker, caplog): # less than 10 minutes have passed, no reload exchange.reload_markets() assert exchange.markets == initial_markets + assert exchange._load_async_markets.call_count == 0 # more than 10 minutes have passed, reload is executed exchange._last_markets_refresh = arrow.utcnow().timestamp - 15 * 60 exchange.reload_markets() assert exchange.markets == updated_markets + assert exchange._load_async_markets.call_count == 1 assert log_has('Performing scheduled market reload..', caplog) From e2465f979bd6641f0413f58719622e471afef807 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 17 Jun 2020 08:33:53 +0200 Subject: [PATCH 2620/3421] Correctly mock out async_reload --- tests/conftest.py | 1 + tests/exchange/test_exchange.py | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 3ca431f40..a4106c767 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -56,6 +56,7 @@ def patched_configuration_load_config_file(mocker, config) -> None: def patch_exchange(mocker, api_mock=None, id='bittrex', mock_markets=True) -> None: + mocker.patch('freqtrade.exchange.Exchange._load_async_markets', MagicMock(return_value={})) mocker.patch('freqtrade.exchange.Exchange._load_markets', MagicMock(return_value={})) mocker.patch('freqtrade.exchange.Exchange.validate_pairs', MagicMock()) mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock()) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index c9a600d50..700aff969 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -319,7 +319,12 @@ def test_set_sandbox_exception(default_conf, mocker): def test__load_async_markets(default_conf, mocker, caplog): - exchange = get_patched_exchange(mocker, default_conf) + mocker.patch('freqtrade.exchange.Exchange._init_ccxt') + mocker.patch('freqtrade.exchange.Exchange.validate_pairs') + mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') + mocker.patch('freqtrade.exchange.Exchange._load_markets') + mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') + exchange = Exchange(default_conf) exchange._api_async.load_markets = get_mock_coro(None) exchange._load_async_markets() assert exchange._api_async.load_markets.call_count == 1 From 0b8cac68befa83b2e705da8d350442b7a06cfe8c Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Wed, 17 Jun 2020 22:49:01 +0300 Subject: [PATCH 2621/3421] Improve advanced-setup.md --- docs/advanced-setup.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/advanced-setup.md b/docs/advanced-setup.md index d3f692f33..f03bc10c0 100644 --- a/docs/advanced-setup.md +++ b/docs/advanced-setup.md @@ -6,20 +6,20 @@ If you do not know what things mentioned here mean, you probably do not need it. ## Running multiple instances of Freqtrade -This section will show you how to run multiple bots a the same time, on the same machine. +This section will show you how to run multiple bots at the same time, on the same machine. ### Things to consider -* use different database files. -* use different telegram Bots (requires 2 different configuration files). -* use different ports (applies only when webserver is enabled). +* Use different database files. +* Use different Telegram bots (requires multiple different configuration files; applies only when Telegram is enabled). +* Use different ports (applies only when Freqtrade REST API webserver is enabled). -#### Different database files +### Different database files -In order to keep track of your trades, profits, etc., freqtrade is using a SQLite database where it stores various types of information such as the trades you performed in the past and the current position(s) you are holding at any time. This allows you to keep track of your profits, but most importantly, keep track of ongoing activity if the bot process would be restarted or would be terminated unexpectently. +In order to keep track of your trades, profits, etc., freqtrade is using a SQLite database where it stores various types of information such as the trades you performed in the past and the current position(s) you are holding at any time. This allows you to keep track of your profits, but most importantly, keep track of ongoing activity if the bot process would be restarted or would be terminated unexpectedly. -Freqtrade will, by default, use seperate database files for dry-run and live bots (this assumes no database-url is given in either configuration nor via command line argument). -For live trading mode, the default database will be `tradesv3.sqlite`, and for dry-run, it will be `tradesv3.dryrun.sqlite`. +Freqtrade will, by default, use separate database files for dry-run and live bots (this assumes no database-url is given in either configuration nor via command line argument). +For live trading mode, the default database will be `tradesv3.sqlite` and for dry-run it will be `tradesv3.dryrun.sqlite`. The optional argument to the trade command used to specify the path of these files is `--db-url`, which requires a valid SQLAlchemy url. So when you are starting a bot with only the config and strategy arguments in dry-run mode, the following 2 commands would have the same outcome. @@ -30,9 +30,9 @@ freqtrade trade -c MyConfig.json -s MyStrategy freqtrade trade -c MyConfig.json -s MyStrategy --db-url sqlite:///tradesv3.dryrun.sqlite ``` -That means that if you are running the trade command in two different terminals, for example to test your strategy both for trades in USDT and in another instance for trades in BTC, you will have to run them with different databases. +It means that if you are running the trade command in two different terminals, for example to test your strategy both for trades in USDT and in another instance for trades in BTC, you will have to run them with different databases. -If you specify the URL of a database which does not exist, freqtrade will create one with the name you specified. So to test your custom strategy in BTC and USDT, you could use the following commands (in 2 seperate terminals): +If you specify the URL of a database which does not exist, freqtrade will create one with the name you specified. So to test your custom strategy with BTC and USDT stake currencies, you could use the following commands (in 2 separate terminals): ``` bash # Terminal 1: @@ -50,7 +50,7 @@ freqtrade trade -c MyConfigBTC.json -s MyCustomStrategy --db-url sqlite:///user_ freqtrade trade -c MyConfigUSDT.json -s MyCustomStrategy --db-url sqlite:///user_data/tradesUSDT.live.sqlite ``` -For more information regarding usage of the sqlite databases, for example to manually enter or remove trades, please refer to the [SQL Cheatsheet](sql_cheatsheet.md) +For more information regarding usage of the sqlite databases, for example to manually enter or remove trades, please refer to the [SQL Cheatsheet](sql_cheatsheet.md). ## Configure the bot running as a systemd service From fd97ad9b76973f7ec463591be62e577a9b703b1e Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 12 Jun 2020 14:02:21 +0200 Subject: [PATCH 2622/3421] Cache analyzed dataframe --- freqtrade/data/dataprovider.py | 34 ++++++++++++++++++++++++++++++--- freqtrade/strategy/interface.py | 10 +++------- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 058ca42da..8dc53b034 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -5,16 +5,16 @@ including ticker and orderbook data, live and historical candle (OHLCV) data Common Interface for bot and strategy to access data. """ import logging -from typing import Any, Dict, List, Optional +from typing import Any, Dict, List, Optional, Tuple +from arrow import Arrow from pandas import DataFrame +from freqtrade.constants import ListPairsWithTimeframes from freqtrade.data.history import load_pair_history from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.exchange import Exchange from freqtrade.state import RunMode -from freqtrade.constants import ListPairsWithTimeframes - logger = logging.getLogger(__name__) @@ -25,6 +25,21 @@ class DataProvider: self._config = config self._exchange = exchange self._pairlists = pairlists + self.__cached_pairs: Dict[Tuple(str, str), DataFrame] = {} + + def _set_cached_df(self, pair: str, timeframe: str, dataframe: DataFrame) -> None: + """ + Store cached Dataframe. + Using private method as this should never be used by a user + (but the class is exposed via `self.dp` to the strategy) + :param pair: pair to get the data for + :param timeframe: Timeframe to get data for + :param dataframe: analyzed dataframe + """ + self.__cached_pairs[(pair, timeframe)] = { + 'data': dataframe, + 'updated': Arrow.utcnow().datetime, + } def refresh(self, pairlist: ListPairsWithTimeframes, @@ -89,6 +104,19 @@ class DataProvider: logger.warning(f"No data found for ({pair}, {timeframe}).") return data + def get_analyzed_dataframe(self, pair: str, timeframe: str = None) -> DataFrame: + """ + :param pair: pair to get the data for + :param timeframe: timeframe to get data for + :return: Analyzed Dataframe for this pair + """ + # TODO: check updated time and don't return outdated data. + if (pair, timeframe) in self._set_cached_df: + return self._set_cached_df[(pair, timeframe)]['data'] + else: + # TODO: this is most likely wrong... + raise ValueError(f"No analyzed dataframe found for ({pair}, {timeframe})") + def market(self, pair: str) -> Optional[Dict[str, Any]]: """ Return market data for the pair diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index f9f3a3678..843197602 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -273,6 +273,7 @@ class IStrategy(ABC): # Defs that only make change on new candle data. dataframe = self.analyze_ticker(dataframe, metadata) self._last_candle_seen_per_pair[pair] = dataframe.iloc[-1]['date'] + self.dp._set_cached_df(pair, self.timeframe, dataframe) else: logger.debug("Skipping TA Analysis for already analyzed candle") dataframe['buy'] = 0 @@ -348,13 +349,8 @@ class IStrategy(ABC): return False, False (buy, sell) = latest[SignalType.BUY.value] == 1, latest[SignalType.SELL.value] == 1 - logger.debug( - 'trigger: %s (pair=%s) buy=%s sell=%s', - latest['date'], - pair, - str(buy), - str(sell) - ) + logger.debug('trigger: %s (pair=%s) buy=%s sell=%s', + latest['date'], pair, str(buy), str(sell)) return buy, sell def should_sell(self, trade: Trade, rate: float, date: datetime, buy: bool, From 9794914838e9f90bcdbf021583b75499db8ad7e8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 12 Jun 2020 14:12:33 +0200 Subject: [PATCH 2623/3421] store dataframe updated as tuple --- freqtrade/constants.py | 3 ++- freqtrade/data/dataprovider.py | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 6741e0605..45df778cd 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -336,4 +336,5 @@ CANCEL_REASON = { } # List of pairs with their timeframes -ListPairsWithTimeframes = List[Tuple[str, str]] +PairWithTimeframe = Tuple[str, str] +ListPairsWithTimeframes = List[PairWithTimeframe] diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 8dc53b034..d93b77121 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -5,12 +5,13 @@ including ticker and orderbook data, live and historical candle (OHLCV) data Common Interface for bot and strategy to access data. """ import logging +from datetime import datetime from typing import Any, Dict, List, Optional, Tuple from arrow import Arrow from pandas import DataFrame -from freqtrade.constants import ListPairsWithTimeframes +from freqtrade.constants import ListPairsWithTimeframes, PairWithTimeframe from freqtrade.data.history import load_pair_history from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.exchange import Exchange @@ -25,7 +26,7 @@ class DataProvider: self._config = config self._exchange = exchange self._pairlists = pairlists - self.__cached_pairs: Dict[Tuple(str, str), DataFrame] = {} + self.__cached_pairs: Dict[PairWithTimeframe, Tuple(DataFrame, datetime)] = {} def _set_cached_df(self, pair: str, timeframe: str, dataframe: DataFrame) -> None: """ @@ -36,10 +37,7 @@ class DataProvider: :param timeframe: Timeframe to get data for :param dataframe: analyzed dataframe """ - self.__cached_pairs[(pair, timeframe)] = { - 'data': dataframe, - 'updated': Arrow.utcnow().datetime, - } + self.__cached_pairs[(pair, timeframe)] = (dataframe, Arrow.utcnow().datetime) def refresh(self, pairlist: ListPairsWithTimeframes, @@ -104,15 +102,17 @@ class DataProvider: logger.warning(f"No data found for ({pair}, {timeframe}).") return data - def get_analyzed_dataframe(self, pair: str, timeframe: str = None) -> DataFrame: + def get_analyzed_dataframe(self, pair: str, + timeframe: str = None) -> Tuple[DataFrame, datetime]: """ :param pair: pair to get the data for :param timeframe: timeframe to get data for - :return: Analyzed Dataframe for this pair + :return: Tuple of (Analyzed Dataframe, lastrefreshed) for the requested pair / timeframe + combination """ # TODO: check updated time and don't return outdated data. - if (pair, timeframe) in self._set_cached_df: - return self._set_cached_df[(pair, timeframe)]['data'] + if (pair, timeframe) in self.__cached_pairs: + return self.__cached_pairs[(pair, timeframe)] else: # TODO: this is most likely wrong... raise ValueError(f"No analyzed dataframe found for ({pair}, {timeframe})") From 95f3ac08d406dd635f74dd68552fd93680c62267 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 13 Jun 2020 07:09:44 +0200 Subject: [PATCH 2624/3421] Update some comments --- freqtrade/strategy/interface.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 843197602..0ef92b315 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -204,6 +204,10 @@ class IStrategy(ABC): """ return [] +### +# END - Intended to be overridden by strategy +### + def get_strategy_name(self) -> str: """ Returns strategy class name @@ -308,6 +312,7 @@ class IStrategy(ABC): def get_signal(self, pair: str, interval: str, dataframe: DataFrame) -> Tuple[bool, bool]: """ Calculates current signal based several technical analysis indicators + Used by Bot to get the latest signal :param pair: pair in format ANT/BTC :param interval: Interval to use (in min) :param dataframe: Dataframe to analyze @@ -496,7 +501,8 @@ class IStrategy(ABC): def ohlcvdata_to_dataframe(self, data: Dict[str, DataFrame]) -> Dict[str, DataFrame]: """ - Creates a dataframe and populates indicators for given candle (OHLCV) data + Populates indicators for given candle (OHLCV) data (for multiple pairs) + Does not run advice_buy or advise_sell! Used by optimize operations only, not during dry / live runs. Using .copy() to get a fresh copy of the dataframe for every strategy run. Has positive effects on memory usage for whatever reason - also when From 273aaaff12e273c58adf2ba05170b189e5b24125 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 13 Jun 2020 18:06:52 +0200 Subject: [PATCH 2625/3421] Introduce .analyze() function for Strategy Fixing a few tests along the way --- freqtrade/freqtradebot.py | 10 +++--- freqtrade/strategy/interface.py | 59 +++++++++++++++++++++++---------- tests/conftest.py | 2 +- tests/test_freqtradebot.py | 1 + 4 files changed, 47 insertions(+), 25 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 289850709..3ad0d061a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -151,6 +151,8 @@ class FreqtradeBot: self.dataprovider.refresh(self.pairlists.create_pair_list(self.active_pair_whitelist), self.strategy.informative_pairs()) + self.strategy.analyze(self.active_pair_whitelist) + with self._sell_lock: # Check and handle any timed out open orders self.check_handle_timedout() @@ -420,9 +422,7 @@ class FreqtradeBot: return False # running get_signal on historical data fetched - (buy, sell) = self.strategy.get_signal( - pair, self.strategy.timeframe, - self.dataprovider.ohlcv(pair, self.strategy.timeframe)) + (buy, sell) = self.strategy.get_signal(pair, self.strategy.timeframe) if buy and not sell: stake_amount = self.get_trade_stake_amount(pair) @@ -697,9 +697,7 @@ class FreqtradeBot: if (config_ask_strategy.get('use_sell_signal', True) or config_ask_strategy.get('ignore_roi_if_buy_signal', False)): - (buy, sell) = self.strategy.get_signal( - trade.pair, self.strategy.timeframe, - self.dataprovider.ohlcv(trade.pair, self.strategy.timeframe)) + (buy, sell) = self.strategy.get_signal(trade.pair, self.strategy.timeframe) if config_ask_strategy.get('use_order_book', False): order_book_min = config_ask_strategy.get('order_book_min', 1) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 0ef92b315..9dcc2d613 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -7,20 +7,19 @@ import warnings from abc import ABC, abstractmethod from datetime import datetime, timezone from enum import Enum -from typing import Dict, NamedTuple, Optional, Tuple +from typing import Dict, List, NamedTuple, Optional, Tuple import arrow from pandas import DataFrame +from freqtrade.constants import ListPairsWithTimeframes from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import StrategyError from freqtrade.exchange import timeframe_to_minutes from freqtrade.persistence import Trade from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper -from freqtrade.constants import ListPairsWithTimeframes from freqtrade.wallets import Wallets - logger = logging.getLogger(__name__) @@ -289,6 +288,38 @@ class IStrategy(ABC): return dataframe + def analyze_pair(self, pair: str): + """ + Fetch data for this pair from dataprovider and analyze. + Stores the dataframe into the dataprovider. + The analyzed dataframe is then accessible via `dp.get_analyzed_dataframe()`. + :param pair: Pair to analyze. + """ + dataframe = self.dp.ohlcv(pair, self.timeframe) + if not isinstance(dataframe, DataFrame) or dataframe.empty: + logger.warning('Empty candle (OHLCV) data for pair %s', pair) + return + + try: + df_len, df_close, df_date = self.preserve_df(dataframe) + + dataframe = strategy_safe_wrapper( + self._analyze_ticker_internal, message="" + )(dataframe, {'pair': pair}) + + self.assert_df(dataframe, df_len, df_close, df_date) + except StrategyError as error: + logger.warning(f"Unable to analyze candle (OHLCV) data for pair {pair}: {error}") + return + + if dataframe.empty: + logger.warning('Empty dataframe for pair %s', pair) + return + + def analyze(self, pairs: List[str]): + for pair in pairs: + self.analyze_pair(pair) + @staticmethod def preserve_df(dataframe: DataFrame) -> Tuple[int, float, datetime]: """ keep some data for dataframes """ @@ -309,30 +340,22 @@ class IStrategy(ABC): else: raise StrategyError(f"Dataframe returned from strategy has mismatching {message}.") - def get_signal(self, pair: str, interval: str, dataframe: DataFrame) -> Tuple[bool, bool]: + def get_signal(self, pair: str, timeframe: str) -> Tuple[bool, bool]: """ Calculates current signal based several technical analysis indicators Used by Bot to get the latest signal :param pair: pair in format ANT/BTC - :param interval: Interval to use (in min) + :param timeframe: timeframe to use :param dataframe: Dataframe to analyze :return: (Buy, Sell) A bool-tuple indicating buy/sell signal """ + + dataframe, _ = self.dp.get_analyzed_dataframe(pair, timeframe) + if not isinstance(dataframe, DataFrame) or dataframe.empty: logger.warning('Empty candle (OHLCV) data for pair %s', pair) return False, False - try: - df_len, df_close, df_date = self.preserve_df(dataframe) - dataframe = strategy_safe_wrapper( - self._analyze_ticker_internal, message="" - )(dataframe, {'pair': pair}) - self.assert_df(dataframe, df_len, df_close, df_date) - except StrategyError as error: - logger.warning(f"Unable to analyze candle (OHLCV) data for pair {pair}: {error}") - - return False, False - if dataframe.empty: logger.warning('Empty dataframe for pair %s', pair) return False, False @@ -343,9 +366,9 @@ class IStrategy(ABC): latest_date = arrow.get(latest_date) # Check if dataframe is out of date - interval_minutes = timeframe_to_minutes(interval) + timeframe_minutes = timeframe_to_minutes(timeframe) offset = self.config.get('exchange', {}).get('outdated_offset', 5) - if latest_date < (arrow.utcnow().shift(minutes=-(interval_minutes * 2 + offset))): + if latest_date < (arrow.utcnow().shift(minutes=-(timeframe_minutes * 2 + offset))): logger.warning( 'Outdated history for pair %s. Last tick is %s minutes old', pair, diff --git a/tests/conftest.py b/tests/conftest.py index a4106c767..3be7bbd22 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -163,7 +163,7 @@ def patch_get_signal(freqtrade: FreqtradeBot, value=(True, False)) -> None: :param value: which value IStrategy.get_signal() must return :return: None """ - freqtrade.strategy.get_signal = lambda e, s, t: value + freqtrade.strategy.get_signal = lambda e, s: value freqtrade.exchange.refresh_latest_ohlcv = lambda p: None diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5d83c893e..e83ac2038 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -912,6 +912,7 @@ def test_process_informative_pairs_added(default_conf, ticker, mocker) -> None: refresh_latest_ohlcv=refresh_mock, ) inf_pairs = MagicMock(return_value=[("BTC/ETH", '1m'), ("ETH/USDT", "1h")]) + mocker.patch('freqtrade.strategy.interface.IStrategy.get_signal', return_value=(False, False)) mocker.patch('time.sleep', return_value=None) freqtrade = FreqtradeBot(default_conf) From 55fa514ec93a61994c4ee738a5ee4d443c8f15a3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 13 Jun 2020 19:40:58 +0200 Subject: [PATCH 2626/3421] Adapt most tests --- freqtrade/strategy/interface.py | 4 -- tests/strategy/test_interface.py | 72 +++++++++++++++----------------- 2 files changed, 34 insertions(+), 42 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 9dcc2d613..a7d467cb2 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -353,10 +353,6 @@ class IStrategy(ABC): dataframe, _ = self.dp.get_analyzed_dataframe(pair, timeframe) if not isinstance(dataframe, DataFrame) or dataframe.empty: - logger.warning('Empty candle (OHLCV) data for pair %s', pair) - return False, False - - if dataframe.empty: logger.warning('Empty dataframe for pair %s', pair) return False, False diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 59b4d5902..da8de947a 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -13,12 +13,14 @@ from freqtrade.exceptions import StrategyError from freqtrade.persistence import Trade from freqtrade.resolvers import StrategyResolver from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper +from freqtrade.data.dataprovider import DataProvider from tests.conftest import get_patched_exchange, log_has, log_has_re from .strats.default_strategy import DefaultStrategy # Avoid to reinit the same object again and again _STRATEGY = DefaultStrategy(config={}) +_STRATEGY.dp = DataProvider({}, None, None) def test_returns_latest_signal(mocker, default_conf, ohlcv_history): @@ -30,61 +32,65 @@ def test_returns_latest_signal(mocker, default_conf, ohlcv_history): mocked_history.loc[1, 'sell'] = 1 mocker.patch.object( - _STRATEGY, '_analyze_ticker_internal', - return_value=mocked_history + _STRATEGY.dp, 'get_analyzed_dataframe', + return_value=(mocked_history, 0) ) - assert _STRATEGY.get_signal('ETH/BTC', '5m', ohlcv_history) == (False, True) + assert _STRATEGY.get_signal('ETH/BTC', '5m') == (False, True) mocked_history.loc[1, 'sell'] = 0 mocked_history.loc[1, 'buy'] = 1 mocker.patch.object( - _STRATEGY, '_analyze_ticker_internal', - return_value=mocked_history + _STRATEGY.dp, 'get_analyzed_dataframe', + return_value=(mocked_history, 0) ) - assert _STRATEGY.get_signal('ETH/BTC', '5m', ohlcv_history) == (True, False) + assert _STRATEGY.get_signal('ETH/BTC', '5m') == (True, False) mocked_history.loc[1, 'sell'] = 0 mocked_history.loc[1, 'buy'] = 0 mocker.patch.object( - _STRATEGY, '_analyze_ticker_internal', - return_value=mocked_history + _STRATEGY.dp, 'get_analyzed_dataframe', + return_value=(mocked_history, 0) ) - assert _STRATEGY.get_signal('ETH/BTC', '5m', ohlcv_history) == (False, False) + assert _STRATEGY.get_signal('ETH/BTC', '5m') == (False, False) def test_get_signal_empty(default_conf, mocker, caplog): - assert (False, False) == _STRATEGY.get_signal('foo', default_conf['timeframe'], - DataFrame()) + mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(DataFrame(), 0)) + assert (False, False) == _STRATEGY.get_signal('foo', default_conf['timeframe']) assert log_has('Empty candle (OHLCV) data for pair foo', caplog) caplog.clear() - assert (False, False) == _STRATEGY.get_signal('bar', default_conf['timeframe'], - []) + mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(None, 0)) + assert (False, False) == _STRATEGY.get_signal('bar', default_conf['timeframe']) assert log_has('Empty candle (OHLCV) data for pair bar', caplog) def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ohlcv_history): caplog.set_level(logging.INFO) + mocker.patch.object(_STRATEGY.dp, 'ohlcv', return_value=ohlcv_history) mocker.patch.object( _STRATEGY, '_analyze_ticker_internal', side_effect=ValueError('xyz') ) - assert (False, False) == _STRATEGY.get_signal('foo', default_conf['timeframe'], - ohlcv_history) + _STRATEGY.analyze_pair('foo') + assert log_has_re(r'Strategy caused the following exception: xyz.*', caplog) + caplog.clear() + + mocker.patch.object( + _STRATEGY, 'analyze_ticker', + side_effect=Exception('invalid ticker history ') + ) + _STRATEGY.analyze_pair('foo') assert log_has_re(r'Strategy caused the following exception: xyz.*', caplog) def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ohlcv_history): caplog.set_level(logging.INFO) - mocker.patch.object( - _STRATEGY, '_analyze_ticker_internal', - return_value=DataFrame([]) - ) + mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(DataFrame([]), 0)) mocker.patch.object(_STRATEGY, 'assert_df') - assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['timeframe'], - ohlcv_history) + assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['timeframe']) assert log_has('Empty dataframe for pair xyz', caplog) @@ -99,13 +105,10 @@ def test_get_signal_old_dataframe(default_conf, mocker, caplog, ohlcv_history): mocked_history.loc[1, 'buy'] = 1 caplog.set_level(logging.INFO) - mocker.patch.object( - _STRATEGY, '_analyze_ticker_internal', - return_value=mocked_history - ) + mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(mocked_history, 0)) mocker.patch.object(_STRATEGY, 'assert_df') - assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['timeframe'], - ohlcv_history) + + assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['timeframe']) assert log_has('Outdated history for pair xyz. Last tick is 16 minutes old', caplog) @@ -120,12 +123,13 @@ def test_assert_df_raise(default_conf, mocker, caplog, ohlcv_history): mocked_history.loc[1, 'buy'] = 1 caplog.set_level(logging.INFO) + mocker.patch.object(_STRATEGY.dp, 'ohlcv', return_value=ohlcv_history) + mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(mocked_history, 0)) mocker.patch.object( _STRATEGY, 'assert_df', side_effect=StrategyError('Dataframe returned...') ) - assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['timeframe'], - ohlcv_history) + _STRATEGY.analyze_pair('xyz') assert log_has('Unable to analyze candle (OHLCV) data for pair xyz: Dataframe returned...', caplog) @@ -157,15 +161,6 @@ def test_assert_df(default_conf, mocker, ohlcv_history, caplog): _STRATEGY.disable_dataframe_checks = False -def test_get_signal_handles_exceptions(mocker, default_conf): - exchange = get_patched_exchange(mocker, default_conf) - mocker.patch.object( - _STRATEGY, 'analyze_ticker', - side_effect=Exception('invalid ticker history ') - ) - assert _STRATEGY.get_signal(exchange, 'ETH/BTC', '5m') == (False, False) - - def test_ohlcvdata_to_dataframe(default_conf, testdatadir) -> None: default_conf.update({'strategy': 'DefaultStrategy'}) strategy = StrategyResolver.load_strategy(default_conf) @@ -342,6 +337,7 @@ def test__analyze_ticker_internal_skip_analyze(ohlcv_history, mocker, caplog) -> ) strategy = DefaultStrategy({}) + strategy.dp = DataProvider({}, None, None) strategy.process_only_new_candles = True ret = strategy._analyze_ticker_internal(ohlcv_history, {'pair': 'ETH/BTC'}) From 8166b37253e06b1b600e2545fd69fab4cdcb1978 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 15 Jun 2020 14:08:57 +0200 Subject: [PATCH 2627/3421] Explicitly check if dp is available --- freqtrade/data/dataprovider.py | 5 ++--- freqtrade/strategy/interface.py | 9 +++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index d93b77121..adc9ea334 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -26,7 +26,7 @@ class DataProvider: self._config = config self._exchange = exchange self._pairlists = pairlists - self.__cached_pairs: Dict[PairWithTimeframe, Tuple(DataFrame, datetime)] = {} + self.__cached_pairs: Dict[PairWithTimeframe, Tuple[DataFrame, datetime]] = {} def _set_cached_df(self, pair: str, timeframe: str, dataframe: DataFrame) -> None: """ @@ -102,8 +102,7 @@ class DataProvider: logger.warning(f"No data found for ({pair}, {timeframe}).") return data - def get_analyzed_dataframe(self, pair: str, - timeframe: str = None) -> Tuple[DataFrame, datetime]: + def get_analyzed_dataframe(self, pair: str, timeframe: str) -> Tuple[DataFrame, datetime]: """ :param pair: pair to get the data for :param timeframe: timeframe to get data for diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index a7d467cb2..f7a918624 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -14,7 +14,7 @@ from pandas import DataFrame from freqtrade.constants import ListPairsWithTimeframes from freqtrade.data.dataprovider import DataProvider -from freqtrade.exceptions import StrategyError +from freqtrade.exceptions import StrategyError, OperationalException from freqtrade.exchange import timeframe_to_minutes from freqtrade.persistence import Trade from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper @@ -276,7 +276,8 @@ class IStrategy(ABC): # Defs that only make change on new candle data. dataframe = self.analyze_ticker(dataframe, metadata) self._last_candle_seen_per_pair[pair] = dataframe.iloc[-1]['date'] - self.dp._set_cached_df(pair, self.timeframe, dataframe) + if self.dp: + self.dp._set_cached_df(pair, self.timeframe, dataframe) else: logger.debug("Skipping TA Analysis for already analyzed candle") dataframe['buy'] = 0 @@ -295,6 +296,8 @@ class IStrategy(ABC): The analyzed dataframe is then accessible via `dp.get_analyzed_dataframe()`. :param pair: Pair to analyze. """ + if not self.dp: + raise OperationalException("DataProvider not found.") dataframe = self.dp.ohlcv(pair, self.timeframe) if not isinstance(dataframe, DataFrame) or dataframe.empty: logger.warning('Empty candle (OHLCV) data for pair %s', pair) @@ -349,6 +352,8 @@ class IStrategy(ABC): :param dataframe: Dataframe to analyze :return: (Buy, Sell) A bool-tuple indicating buy/sell signal """ + if not self.dp: + raise OperationalException("DataProvider not found.") dataframe, _ = self.dp.get_analyzed_dataframe(pair, timeframe) From 7da955556d18e0cd8d9cebcb8dc2b64436d49e26 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 13 Jun 2020 20:04:15 +0200 Subject: [PATCH 2628/3421] Add test for empty pair case --- tests/strategy/test_interface.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index da8de947a..94437d373 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -9,12 +9,12 @@ from pandas import DataFrame from freqtrade.configuration import TimeRange from freqtrade.data.history import load_data -from freqtrade.exceptions import StrategyError +from freqtrade.exceptions import StrategyError, OperationalException from freqtrade.persistence import Trade from freqtrade.resolvers import StrategyResolver from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from freqtrade.data.dataprovider import DataProvider -from tests.conftest import get_patched_exchange, log_has, log_has_re +from tests.conftest import log_has, log_has_re from .strats.default_strategy import DefaultStrategy @@ -55,6 +55,28 @@ def test_returns_latest_signal(mocker, default_conf, ohlcv_history): assert _STRATEGY.get_signal('ETH/BTC', '5m') == (False, False) +def test_trade_no_dataprovider(default_conf, mocker, caplog): + strategy = DefaultStrategy({}) + with pytest.raises(OperationalException, match="DataProvider not found."): + strategy.get_signal('ETH/BTC', '5m') + + with pytest.raises(OperationalException, match="DataProvider not found."): + strategy.analyze_pair('ETH/BTC') + + +def test_analyze_pair_empty(default_conf, mocker, caplog, ohlcv_history): + mocker.patch.object(_STRATEGY.dp, 'ohlcv', return_value=ohlcv_history) + mocker.patch.object( + _STRATEGY, '_analyze_ticker_internal', + return_value=DataFrame([]) + ) + mocker.patch.object(_STRATEGY, 'assert_df') + + _STRATEGY.analyze_pair('ETH/BTC') + + assert log_has('Empty dataframe for pair ETH/BTC', caplog) + + def test_get_signal_empty(default_conf, mocker, caplog): mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(DataFrame(), 0)) assert (False, False) == _STRATEGY.get_signal('foo', default_conf['timeframe']) From 77056a3119e5d7e7f9ab82104c09aa5013f6fd0b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 06:52:11 +0200 Subject: [PATCH 2629/3421] Add bot_loop_start callback --- freqtrade/strategy/interface.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index f7a918624..4483e1e8f 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -190,6 +190,15 @@ class IStrategy(ABC): """ return False + def bot_loop_start(self, **kwargs) -> None: + """ + Called at the start of the bot iteration (one loop). + Might be used to perform pair-independent tasks + (e.g. like lock pairs with negative profit in the last hour) + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + """ + pass + def informative_pairs(self) -> ListPairsWithTimeframes: """ Define additional, informative pair/interval combinations to be cached from the exchange. From bc821c7c208f9ebede5b02b2677416f1806fed31 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 07:00:55 +0200 Subject: [PATCH 2630/3421] Add documentation for bot_loop_start --- docs/strategy-advanced.md | 27 +++++++++++++++++++ freqtrade/freqtradebot.py | 2 ++ freqtrade/strategy/interface.py | 2 +- .../subtemplates/strategy_methods_advanced.j2 | 9 +++++++ tests/strategy/test_interface.py | 11 ++++++++ 5 files changed, 50 insertions(+), 1 deletion(-) diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index 69e2256a1..aba834c55 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -89,3 +89,30 @@ class Awesomestrategy(IStrategy): return True return False ``` + +## Bot loop start callback + +A simple callback which is called at the start of every bot iteration. +This can be used to perform calculations which are pair independent. + + +``` python +import requests + +class Awesomestrategy(IStrategy): + + # ... populate_* methods + + def bot_loop_start(self, **kwargs) -> None: + """ + Called at the start of the bot iteration (one loop). + Might be used to perform pair-independent tasks + (e.g. gather some remote ressource for comparison) + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + """ + if self.config['runmode'].value in ('live', 'dry_run'): + # Assign this to the class by using self.* + # can then be used by populate_* methods + self.remote_data = requests.get('https://some_remote_source.example.com') + +``` diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 3ad0d061a..a69178691 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -151,6 +151,8 @@ class FreqtradeBot: self.dataprovider.refresh(self.pairlists.create_pair_list(self.active_pair_whitelist), self.strategy.informative_pairs()) + strategy_safe_wrapper(self.strategy.bot_loop_start)() + self.strategy.analyze(self.active_pair_whitelist) with self._sell_lock: diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 4483e1e8f..2ee567c20 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -194,7 +194,7 @@ class IStrategy(ABC): """ Called at the start of the bot iteration (one loop). Might be used to perform pair-independent tasks - (e.g. like lock pairs with negative profit in the last hour) + (e.g. gather some remote ressource for comparison) :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. """ pass diff --git a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 index 0ca35e117..9af086c77 100644 --- a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 +++ b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 @@ -1,4 +1,13 @@ +def bot_loop_start(self, **kwargs) -> None: + """ + Called at the start of the bot iteration (one loop). + Might be used to perform pair-independent tasks + (e.g. gather some remote ressource for comparison) + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + """ + pass + def check_buy_timeout(self, pair: str, trade: 'Trade', order: dict, **kwargs) -> bool: """ Check buy timeout function callback. diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 94437d373..a50b4e1db 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -57,6 +57,9 @@ def test_returns_latest_signal(mocker, default_conf, ohlcv_history): def test_trade_no_dataprovider(default_conf, mocker, caplog): strategy = DefaultStrategy({}) + # Delete DP for sure (suffers from test leakage, as we update this in the base class) + if strategy.dp: + del strategy.dp with pytest.raises(OperationalException, match="DataProvider not found."): strategy.get_signal('ETH/BTC', '5m') @@ -418,6 +421,14 @@ def test_is_pair_locked(default_conf): assert not strategy.is_pair_locked(pair) +def test_is_informative_pairs_callback(default_conf): + default_conf.update({'strategy': 'TestStrategyLegacy'}) + strategy = StrategyResolver.load_strategy(default_conf) + # Should return empty + # Uses fallback to base implementation + assert [] == strategy.informative_pairs() + + @pytest.mark.parametrize('error', [ ValueError, KeyError, Exception, ]) From c047e48a47a7b06bba7525e8750fa006c58f9930 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 07:15:24 +0200 Subject: [PATCH 2631/3421] Add errorsupression to safe wrapper --- freqtrade/strategy/strategy_wrapper.py | 6 +++--- tests/strategy/test_interface.py | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/freqtrade/strategy/strategy_wrapper.py b/freqtrade/strategy/strategy_wrapper.py index 7b9da9140..8fc548074 100644 --- a/freqtrade/strategy/strategy_wrapper.py +++ b/freqtrade/strategy/strategy_wrapper.py @@ -5,7 +5,7 @@ from freqtrade.exceptions import StrategyError logger = logging.getLogger(__name__) -def strategy_safe_wrapper(f, message: str = "", default_retval=None): +def strategy_safe_wrapper(f, message: str = "", default_retval=None, supress_error=False): """ Wrapper around user-provided methods and functions. Caches all exceptions and returns either the default_retval (if it's not None) or raises @@ -20,7 +20,7 @@ def strategy_safe_wrapper(f, message: str = "", default_retval=None): f"Strategy caused the following exception: {error}" f"{f}" ) - if default_retval is None: + if default_retval is None and not supress_error: raise StrategyError(str(error)) from error return default_retval except Exception as error: @@ -28,7 +28,7 @@ def strategy_safe_wrapper(f, message: str = "", default_retval=None): f"{message}" f"Unexpected error {error} calling {f}" ) - if default_retval is None: + if default_retval is None and not supress_error: raise StrategyError(str(error)) from error return default_retval diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index a50b4e1db..63d3b85a1 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -448,6 +448,11 @@ def test_strategy_safe_wrapper_error(caplog, error): assert isinstance(ret, bool) assert ret + caplog.clear() + # Test supressing error + ret = strategy_safe_wrapper(failing_method, message='DeadBeef', supress_error=True)() + assert log_has_re(r'DeadBeef.*', caplog) + @pytest.mark.parametrize('value', [ 1, 22, 55, True, False, {'a': 1, 'b': '112'}, From dea7e3db014f2d8b1888035185b33ac98e37152c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 07:16:56 +0200 Subject: [PATCH 2632/3421] Use supress_errors in strategy wrapper - ensure it's called once --- freqtrade/freqtradebot.py | 2 +- tests/test_freqtradebot.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a69178691..77ded8355 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -151,7 +151,7 @@ class FreqtradeBot: self.dataprovider.refresh(self.pairlists.create_pair_list(self.active_pair_whitelist), self.strategy.informative_pairs()) - strategy_safe_wrapper(self.strategy.bot_loop_start)() + strategy_safe_wrapper(self.strategy.bot_loop_start, supress_error=True)() self.strategy.analyze(self.active_pair_whitelist) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index e83ac2038..381531eba 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1964,6 +1964,18 @@ def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order, freqtrade.handle_trade(trade) +def test_bot_loop_start_called_once(mocker, default_conf, caplog): + ftbot = get_patched_freqtradebot(mocker, default_conf) + patch_get_signal(ftbot) + ftbot.strategy.bot_loop_start = MagicMock(side_effect=ValueError) + ftbot.strategy.analyze = MagicMock() + + ftbot.process() + assert log_has_re(r'Strategy caused the following exception.*', caplog) + assert ftbot.strategy.bot_loop_start.call_count == 1 + assert ftbot.strategy.analyze.call_count == 1 + + def test_check_handle_timedout_buy_usercustom(default_conf, ticker, limit_buy_order_old, open_trade, fee, mocker) -> None: default_conf["unfilledtimeout"] = {"buy": 1400, "sell": 30} From 910100f1c88efa16622acc425a8ea41018482c8c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 07:27:13 +0200 Subject: [PATCH 2633/3421] Improve docstring comment --- freqtrade/strategy/interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 2ee567c20..abe5f7dfb 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -354,7 +354,7 @@ class IStrategy(ABC): def get_signal(self, pair: str, timeframe: str) -> Tuple[bool, bool]: """ - Calculates current signal based several technical analysis indicators + Calculates current signal based based on the buy / sell columns of the dataframe. Used by Bot to get the latest signal :param pair: pair in format ANT/BTC :param timeframe: timeframe to use From de676bcabac2ca49d5ceea9be5c85dd794b0dbfb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 10:08:06 +0200 Subject: [PATCH 2634/3421] Document get_analyzed_dataframe for dataprovider --- docs/strategy-customization.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 08e79d307..1c4c80c47 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -366,6 +366,7 @@ Please always check the mode of operation to select the correct method to get da - [`available_pairs`](#available_pairs) - Property with tuples listing cached pairs with their intervals (pair, interval). - [`current_whitelist()`](#current_whitelist) - Returns a current list of whitelisted pairs. Useful for accessing dynamic whitelists (ie. VolumePairlist) - [`get_pair_dataframe(pair, timeframe)`](#get_pair_dataframepair-timeframe) - This is a universal method, which returns either historical data (for backtesting) or cached live data (for the Dry-Run and Live-Run modes). +- [`get_analyzed_dataframe(pair, timeframe)`](#get_analyzed_dataframepair-timeframe) - Returns the analyzed dataframe (after calling `populate_indicators()`, `populate_buy()`, `populate_sell()`) and the time of the latest analysis. - `historic_ohlcv(pair, timeframe)` - Returns historical data stored on disk. - `market(pair)` - Returns market data for the pair: fees, limits, precisions, activity flag, etc. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#markets) for more details on the Market data structure. - `ohlcv(pair, timeframe)` - Currently cached candle (OHLCV) data for the pair, returns DataFrame or empty DataFrame. @@ -431,13 +432,25 @@ if self.dp: ``` !!! Warning "Warning about backtesting" - Be carefull when using dataprovider in backtesting. `historic_ohlcv()` (and `get_pair_dataframe()` + Be careful when using dataprovider in backtesting. `historic_ohlcv()` (and `get_pair_dataframe()` for the backtesting runmode) provides the full time-range in one go, so please be aware of it and make sure to not "look into the future" to avoid surprises when running in dry/live mode). !!! Warning "Warning in hyperopt" This option cannot currently be used during hyperopt. +#### *get_analyzed_dataframe(pair, timeframe)* + +This method is used by freqtrade internally to determine the last signal. +It can also be used in specific callbacks to get the signal that caused the action (see [Advanced Strategy Documentation](strategy-advanced.md) for more details on available callbacks). + +``` python +# fetch current dataframe +if self.dp: + dataframe, last_updated = self.dp.get_analyzed_dataframe(pair=metadata['pair'], + timeframe=self.ticker_interval) +``` + #### *orderbook(pair, maximum)* ``` python From 84329ad2ca7297491a11a0fa542fcc5ac729b0a9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 10:08:19 +0200 Subject: [PATCH 2635/3421] Add confirm_trade* methods to abort buying or selling --- docs/strategy-advanced.md | 83 ++++++++++++++++++- freqtrade/freqtradebot.py | 16 +++- freqtrade/strategy/interface.py | 48 +++++++++++ .../subtemplates/strategy_methods_advanced.j2 | 52 ++++++++++++ 4 files changed, 197 insertions(+), 2 deletions(-) diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index aba834c55..7edb0d05d 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -3,6 +3,9 @@ This page explains some advanced concepts available for strategies. If you're just getting started, please be familiar with the methods described in the [Strategy Customization](strategy-customization.md) documentation first. +!!! Note + All callback methods described below should only be implemented in a strategy if they are also actively used. + ## Custom order timeout rules Simple, timebased order-timeouts can be configured either via strategy or in the configuration in the `unfilledtimeout` section. @@ -95,7 +98,6 @@ class Awesomestrategy(IStrategy): A simple callback which is called at the start of every bot iteration. This can be used to perform calculations which are pair independent. - ``` python import requests @@ -116,3 +118,82 @@ class Awesomestrategy(IStrategy): self.remote_data = requests.get('https://some_remote_source.example.com') ``` + +## Bot order confirmation + +### Trade entry (buy order) confirmation + +`confirm_trade_entry()` an be used to abort a trade entry at the latest second (maybe because the price is not what we expect). + +``` python +class Awesomestrategy(IStrategy): + + # ... populate_* methods + + def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: float, + time_in_force: str, **kwargs) -> bool: + """ + Called right before placing a buy order. + Timing for this function is critical, so avoid doing heavy computations or + network reqeusts in this method. + + For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ + + When not implemented by a strategy, returns True (always confirming). + + :param pair: Pair that's about to be bought. + :param order_type: Order type (as configured in order_types). usually limit or market. + :param amount: Amount in target (quote) currency that's going to be traded. + :param rate: Rate that's going to be used when using limit orders + :param time_in_force: Time in force. Defaults to GTC (Good-til-cancelled). + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return bool: When True is returned, then the buy-order is placed on the exchange. + False aborts the process + """ + return True + +``` + +### Trade exit (sell order) confirmation + +`confirm_trade_exit()` an be used to abort a trade exit (sell) at the latest second (maybe because the price is not what we expect). + +``` python +from freqtrade.persistence import Trade + + +class Awesomestrategy(IStrategy): + + # ... populate_* methods + + def confirm_trade_exit(self, pair: str, trade: Trade, order_type: str, amount: float, rate: float, + time_in_force: str, sell_reason: str, ** kwargs) -> bool: + """ + Called right before placing a regular sell order. + Timing for this function is critical, so avoid doing heavy computations or + network reqeusts in this method. + + For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ + + When not implemented by a strategy, returns True (always confirming). + + :param pair: Pair that's about to be sold. + :param order_type: Order type (as configured in order_types). usually limit or market. + :param amount: Amount in quote currency. + :param rate: Rate that's going to be used when using limit orders + :param time_in_force: Time in force. Defaults to GTC (Good-til-cancelled). + :param sell_reason: Sell reason. + Can be any of ['roi', 'stop_loss', 'stoploss_on_exchange', 'trailing_stop_loss', + 'sell_signal', 'force_sell', 'emergency_sell'] + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return bool: When True is returned, then the sell-order is placed on the exchange. + False aborts the process + """ + if sell_reason == 'force_sell' and trade.calc_profit_ratio(rate) < 0: + # Reject force-sells with negative profit + # This is just a sample, please adjust to your needs + # (this does not necessarily make sense, assuming you know when you're force-selling) + return False + return True + +``` diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 77ded8355..09b794a99 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -497,6 +497,12 @@ class FreqtradeBot: amount = stake_amount / buy_limit_requested order_type = self.strategy.order_types['buy'] + if not strategy_safe_wrapper(self.strategy.confirm_trade_entry, default_retval=True)( + pair=pair, order_type=order_type, amount=amount, rate=buy_limit_requested, + time_in_force=time_in_force): + logger.info(f"User requested abortion of buying {pair}") + return False + order = self.exchange.buy(pair=pair, ordertype=order_type, amount=amount, rate=buy_limit_requested, time_in_force=time_in_force) @@ -1077,12 +1083,20 @@ class FreqtradeBot: order_type = self.strategy.order_types.get("emergencysell", "market") amount = self._safe_sell_amount(trade.pair, trade.amount) + time_in_force = self.strategy.order_time_in_force['sell'] + + if not strategy_safe_wrapper(self.strategy.confirm_trade_exit, default_retval=True)( + pair=trade.pair, trade=trade, order_type=order_type, amount=amount, rate=limit, + time_in_force=time_in_force, + sell_reason=sell_reason.value): + logger.info(f"User requested abortion of selling {trade.pair}") + return False # Execute sell and update trade record order = self.exchange.sell(pair=str(trade.pair), ordertype=order_type, amount=amount, rate=limit, - time_in_force=self.strategy.order_time_in_force['sell'] + time_in_force=time_in_force ) trade.open_order_id = order['id'] diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index abe5f7dfb..afa8c192e 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -199,6 +199,54 @@ class IStrategy(ABC): """ pass + def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: float, + time_in_force: str, **kwargs) -> bool: + """ + Called right before placing a buy order. + Timing for this function is critical, so avoid doing heavy computations or + network reqeusts in this method. + + For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ + + When not implemented by a strategy, returns True (always confirming). + + :param pair: Pair that's about to be bought. + :param order_type: Order type (as configured in order_types). usually limit or market. + :param amount: Amount in target (quote) currency that's going to be traded. + :param rate: Rate that's going to be used when using limit orders + :param time_in_force: Time in force. Defaults to GTC (Good-til-cancelled). + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return bool: When True is returned, then the buy-order is placed on the exchange. + False aborts the process + """ + return True + + def confirm_trade_exit(self, pair: str, trade: Trade, order_type: str, amount: float, rate: float, + time_in_force: str, sell_reason: str, ** kwargs) -> bool: + """ + Called right before placing a regular sell order. + Timing for this function is critical, so avoid doing heavy computations or + network reqeusts in this method. + + For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ + + When not implemented by a strategy, returns True (always confirming). + + :param pair: Pair that's about to be sold. + :param trade: trade object. + :param order_type: Order type (as configured in order_types). usually limit or market. + :param amount: Amount in quote currency. + :param rate: Rate that's going to be used when using limit orders + :param time_in_force: Time in force. Defaults to GTC (Good-til-cancelled). + :param sell_reason: Sell reason. + Can be any of ['roi', 'stop_loss', 'stoploss_on_exchange', 'trailing_stop_loss', + 'sell_signal', 'force_sell', 'emergency_sell'] + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return bool: When True is returned, then the sell-order is placed on the exchange. + False aborts the process + """ + return True + def informative_pairs(self) -> ListPairsWithTimeframes: """ Define additional, informative pair/interval combinations to be cached from the exchange. diff --git a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 index 9af086c77..782c5a475 100644 --- a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 +++ b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 @@ -4,10 +4,62 @@ def bot_loop_start(self, **kwargs) -> None: Called at the start of the bot iteration (one loop). Might be used to perform pair-independent tasks (e.g. gather some remote ressource for comparison) + + For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ + + When not implemented by a strategy, this simply does nothing. :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. """ pass +def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: float, + time_in_force: str, **kwargs) -> bool: + """ + Called right before placing a buy order. + Timing for this function is critical, so avoid doing heavy computations or + network reqeusts in this method. + + For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ + + When not implemented by a strategy, returns True (always confirming). + + :param pair: Pair that's about to be bought. + :param order_type: Order type (as configured in order_types). usually limit or market. + :param amount: Amount in target (quote) currency that's going to be traded. + :param rate: Rate that's going to be used when using limit orders + :param time_in_force: Time in force. Defaults to GTC (Good-til-cancelled). + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return bool: When True is returned, then the buy-order is placed on the exchange. + False aborts the process + """ + return True + +def confirm_trade_exit(self, pair: str, trade: 'Trade', order_type: str, amount: float, rate: float, + time_in_force: str, sell_reason: str, ** kwargs) -> bool: + """ + Called right before placing a regular sell order. + Timing for this function is critical, so avoid doing heavy computations or + network reqeusts in this method. + + For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ + + When not implemented by a strategy, returns True (always confirming). + + :param pair: Pair that's about to be sold. + :param trade: trade object. + :param order_type: Order type (as configured in order_types). usually limit or market. + :param amount: Amount in quote currency. + :param rate: Rate that's going to be used when using limit orders + :param time_in_force: Time in force. Defaults to GTC (Good-til-cancelled). + :param sell_reason: Sell reason. + Can be any of ['roi', 'stop_loss', 'stoploss_on_exchange', 'trailing_stop_loss', + 'sell_signal', 'force_sell', 'emergency_sell'] + :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. + :return bool: When True is returned, then the sell-order is placed on the exchange. + False aborts the process + """ + return True + def check_buy_timeout(self, pair: str, trade: 'Trade', order: dict, **kwargs) -> bool: """ Check buy timeout function callback. From 6d6e7196f43e97c16208c7685f51d3a39cae3206 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 10:20:23 +0200 Subject: [PATCH 2636/3421] Test trade entry / exit is called correctly --- tests/test_integration.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/test_integration.py b/tests/test_integration.py index 57960503e..fdc3ab1d0 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -79,10 +79,15 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, freqtrade.strategy.order_types['stoploss_on_exchange'] = True # Switch ordertype to market to close trade immediately freqtrade.strategy.order_types['sell'] = 'market' + freqtrade.strategy.confirm_trade_entry = MagicMock(return_value=True) + freqtrade.strategy.confirm_trade_exit = MagicMock(return_value=True) patch_get_signal(freqtrade) # Create some test data freqtrade.enter_positions() + assert freqtrade.strategy.confirm_trade_entry.call_count == 3 + freqtrade.strategy.confirm_trade_entry.reset_mock() + assert freqtrade.strategy.confirm_trade_exit.call_count == 0 wallets_mock.reset_mock() Trade.session = MagicMock() @@ -95,6 +100,9 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, n = freqtrade.exit_positions(trades) assert n == 2 assert should_sell_mock.call_count == 2 + assert freqtrade.strategy.confirm_trade_entry.call_count == 0 + assert freqtrade.strategy.confirm_trade_exit.call_count == 1 + freqtrade.strategy.confirm_trade_exit.reset_mock() # Only order for 3rd trade needs to be cancelled assert cancel_order_mock.call_count == 1 From 7c3fb111f283286a3c7297ab6aef604a9ab4b66d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 10:23:49 +0200 Subject: [PATCH 2637/3421] Confirm execute_sell calls confirm_trade_exit --- tests/test_freqtradebot.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 381531eba..fd903fe43 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2502,22 +2502,33 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, mocker) -> N patch_whitelist(mocker, default_conf) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) + freqtrade.strategy.confirm_trade_exit = MagicMock(return_value=False) # Create some test data freqtrade.enter_positions() + rpc_mock.reset_mock() trade = Trade.query.first() assert trade + assert freqtrade.strategy.confirm_trade_exit.call_count == 0 # Increase the price and sell it mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker_sell_up ) + # Prevented sell ... + freqtrade.execute_sell(trade=trade, limit=ticker_sell_up()['bid'], sell_reason=SellType.ROI) + assert rpc_mock.call_count == 0 + assert freqtrade.strategy.confirm_trade_exit.call_count == 1 + + # Repatch with true + freqtrade.strategy.confirm_trade_exit = MagicMock(return_value=True) freqtrade.execute_sell(trade=trade, limit=ticker_sell_up()['bid'], sell_reason=SellType.ROI) + assert freqtrade.strategy.confirm_trade_exit.call_count == 1 - assert rpc_mock.call_count == 2 + assert rpc_mock.call_count == 1 last_msg = rpc_mock.call_args_list[-1][0][0] assert { 'type': RPCMessageType.SELL_NOTIFICATION, From 1c1a7150ae9906f9d513c86c611bf51d70d728f8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 10:27:29 +0200 Subject: [PATCH 2638/3421] ensure confirm_trade_entry is called and has the desired effect --- tests/test_freqtradebot.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index fd903fe43..820e69bb0 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -975,6 +975,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: patch_RPCManager(mocker) patch_exchange(mocker) freqtrade = FreqtradeBot(default_conf) + freqtrade.strategy.confirm_trade_entry = MagicMock(return_value=False) stake_amount = 2 bid = 0.11 buy_rate_mock = MagicMock(return_value=bid) @@ -996,6 +997,13 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: ) pair = 'ETH/BTC' + assert not freqtrade.execute_buy(pair, stake_amount) + assert buy_rate_mock.call_count == 1 + assert buy_mm.call_count == 0 + assert freqtrade.strategy.confirm_trade_entry.call_count == 1 + buy_rate_mock.reset_mock() + + freqtrade.strategy.confirm_trade_entry = MagicMock(return_value=True) assert freqtrade.execute_buy(pair, stake_amount) assert buy_rate_mock.call_count == 1 assert buy_mm.call_count == 1 @@ -1003,6 +1011,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: assert call_args['pair'] == pair assert call_args['rate'] == bid assert call_args['amount'] == stake_amount / bid + buy_rate_mock.reset_mock() # Should create an open trade with an open order id # As the order is not fulfilled yet @@ -1015,7 +1024,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: fix_price = 0.06 assert freqtrade.execute_buy(pair, stake_amount, fix_price) # Make sure get_buy_rate wasn't called again - assert buy_rate_mock.call_count == 1 + assert buy_rate_mock.call_count == 0 assert buy_mm.call_count == 2 call_args = buy_mm.call_args_list[1][1] From 8b186dbe0eb3872ba685c7a8c156a1b266c4aa92 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 10:49:15 +0200 Subject: [PATCH 2639/3421] Add additional test scenarios --- docs/strategy-advanced.md | 4 +-- freqtrade/strategy/interface.py | 4 +-- .../subtemplates/strategy_methods_advanced.j2 | 4 +-- tests/conftest.py | 1 + tests/strategy/test_interface.py | 6 ++-- tests/test_freqtradebot.py | 33 +++++++++++++++++++ 6 files changed, 43 insertions(+), 9 deletions(-) diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index 7edb0d05d..f1d8c21dc 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -135,7 +135,7 @@ class Awesomestrategy(IStrategy): """ Called right before placing a buy order. Timing for this function is critical, so avoid doing heavy computations or - network reqeusts in this method. + network requests in this method. For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ @@ -171,7 +171,7 @@ class Awesomestrategy(IStrategy): """ Called right before placing a regular sell order. Timing for this function is critical, so avoid doing heavy computations or - network reqeusts in this method. + network requests in this method. For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index afa8c192e..fab438ae6 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -204,7 +204,7 @@ class IStrategy(ABC): """ Called right before placing a buy order. Timing for this function is critical, so avoid doing heavy computations or - network reqeusts in this method. + network requests in this method. For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ @@ -226,7 +226,7 @@ class IStrategy(ABC): """ Called right before placing a regular sell order. Timing for this function is critical, so avoid doing heavy computations or - network reqeusts in this method. + network requests in this method. For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ diff --git a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 index 782c5a475..28d2d1c1b 100644 --- a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 +++ b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 @@ -17,7 +17,7 @@ def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: f """ Called right before placing a buy order. Timing for this function is critical, so avoid doing heavy computations or - network reqeusts in this method. + network requests in this method. For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ @@ -39,7 +39,7 @@ def confirm_trade_exit(self, pair: str, trade: 'Trade', order_type: str, amount: """ Called right before placing a regular sell order. Timing for this function is critical, so avoid doing heavy computations or - network reqeusts in this method. + network requests in this method. For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/ diff --git a/tests/conftest.py b/tests/conftest.py index 3be7bbd22..c64f443bc 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -787,6 +787,7 @@ def limit_buy_order(): 'price': 0.00001099, 'amount': 90.99181073, 'filled': 90.99181073, + 'cost': 0.0009999, 'remaining': 0.0, 'status': 'closed' } diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 63d3b85a1..176fa43ca 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -57,9 +57,9 @@ def test_returns_latest_signal(mocker, default_conf, ohlcv_history): def test_trade_no_dataprovider(default_conf, mocker, caplog): strategy = DefaultStrategy({}) - # Delete DP for sure (suffers from test leakage, as we update this in the base class) - if strategy.dp: - del strategy.dp + # Delete DP for sure (suffers from test leakage, as this is updated in the base class) + if strategy.dp is not None: + strategy.dp = None with pytest.raises(OperationalException, match="DataProvider not found."): strategy.get_signal('ETH/BTC', '5m') diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 820e69bb0..047885942 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1070,6 +1070,39 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: assert not freqtrade.execute_buy(pair, stake_amount) +def test_execute_buy_confirm_error(mocker, default_conf, fee, limit_buy_order) -> None: + freqtrade = get_patched_freqtradebot(mocker, default_conf) + mocker.patch.multiple( + 'freqtrade.freqtradebot.FreqtradeBot', + get_buy_rate=MagicMock(return_value=0.11), + _get_min_pair_stake_amount=MagicMock(return_value=1) + ) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + fetch_ticker=MagicMock(return_value={ + 'bid': 0.00001172, + 'ask': 0.00001173, + 'last': 0.00001172 + }), + buy=MagicMock(return_value=limit_buy_order), + get_fee=fee, + ) + stake_amount = 2 + pair = 'ETH/BTC' + + freqtrade.strategy.confirm_trade_entry = MagicMock(side_effect=ValueError) + assert freqtrade.execute_buy(pair, stake_amount) + + freqtrade.strategy.confirm_trade_entry = MagicMock(side_effect=Exception) + assert freqtrade.execute_buy(pair, stake_amount) + + freqtrade.strategy.confirm_trade_entry = MagicMock(return_value=True) + assert freqtrade.execute_buy(pair, stake_amount) + + freqtrade.strategy.confirm_trade_entry = MagicMock(return_value=False) + assert not freqtrade.execute_buy(pair, stake_amount) + + def test_add_stoploss_on_exchange(mocker, default_conf, limit_buy_order) -> None: patch_RPCManager(mocker) patch_exchange(mocker) From e5f7610b5d7b1552f6809171812b3937133ccb12 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 11:38:56 +0200 Subject: [PATCH 2640/3421] Add bot basics documentation --- docs/bot-basics.md | 58 ++++++++++++++++++++++++++++++++++ docs/hyperopt.md | 5 --- docs/strategy-advanced.md | 4 ++- docs/strategy-customization.md | 5 ++- mkdocs.yml | 1 + 5 files changed, 66 insertions(+), 7 deletions(-) create mode 100644 docs/bot-basics.md diff --git a/docs/bot-basics.md b/docs/bot-basics.md new file mode 100644 index 000000000..728dcf46e --- /dev/null +++ b/docs/bot-basics.md @@ -0,0 +1,58 @@ +# Freqtrade basics + +This page will try to teach you some basic concepts on how freqtrade works and operates. + +## Freqtrade terminology + +* Trade: Open position +* Open Order: Order which is currently placed on the exchange, and is not yet complete. +* Pair: Tradable pair, usually in the format of Quote/Base (e.g. XRP/USDT). +* Timeframe: Candle length to use (e.g. `"5m"`, `"1h"`, ...). +* Indicators: Technical indicators (SMA, EMA, RSI, ...). +* Limit order: Limit orders which execute at the defined limit price or better. +* Market order: Guaranteed to fill, may move price depending on the order size. + +## Fee handling + +All profit calculations of Freqtrade include fees. For Backtesting / Hyperopt / Dry-run modes, the exchange default fee is used (lowest tier on the exchange). For live operations, fees are used as applied by the exchange (this includes BNB rebates etc.). + +## Bot execution logic + +Starting freqtrade in dry-run or live mode (using `freqtrade trade`) will start the bot and start the bot iteration loop. +By default, loop runs every few seconds (`internals.process_throttle_secs`) and does roughly the following in the following sequence: + +* Fetch open trades from persistence. +* Calculate current list of tradable pairs. +* Download ohlcv data for the pairlist including all [informative pairs](strategy-customization.md#get-data-for-non-tradeable-pairs) + This step is only executed once per Candle to avoid unnecessary network traffic. +* Call `bot_loop_start()` strategy callback. +* Analyze strategy per pair. + * Call `populate_indicators()` + * Call `populate_buy_trend()` + * Call `populate_sell_trend()` +* Check timeouts for open orders. + * Calls `check_buy_timeout()` strategy callback for open buy orders. + * Calls `check_sell_timeout()` strategy callback for open sell orders. +* Verifies existing positions and eventually places sell orders. + * Considers stoploss, ROI and sell-signal. + * Determine sell-price based on `ask_strategy` configuration setting. + * Before a sell order is placed, `confirm_trade_exit()` strategy callback is called. +* Check if trade-slots are still available (if `max_open_trades` is reached). +* Verifies buy signal trying to enter new positions. + * Determine buy-price based on `bid_strategy` configuration setting. + * Before a buy order is placed, `confirm_trade_entry()` strategy callback is called. + +This loop will be repeated again and again until the bot is stopped. + +## Backtesting / Hyperopt execution logic + +[backtesting](backtesting.md) or [hyperopt](hyperopt.md) do only part of the above logic, since most of the trading operations are fully simulated. + +* Load historic data for configured pairlist. +* Calculate indicators (calls `populate_indicators()`). +* Calls `populate_buy_trend()` and `populate_sell_trend()` +* Loops per candle simulating entry and exit points. +* Generate backtest report output + +!!! Note + Both Backtesting and Hyperopt include exchange default Fees in the calculation. Custom fees can be passed to backtesting / hyperopt by specifying the `--fee` argument. diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 9acb606c3..efb11e188 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -498,8 +498,3 @@ After you run Hyperopt for the desired amount of epochs, you can later list all Once the optimized strategy has been implemented into your strategy, you should backtest this strategy to make sure everything is working as expected. To achieve same results (number of trades, their durations, profit, etc.) than during Hyperopt, please use same set of arguments `--dmmp`/`--disable-max-market-positions` and `--eps`/`--enable-position-stacking` for Backtesting. - -## Next Step - -Now you have a perfect bot and want to control it from Telegram. Your -next step is to learn the [Telegram usage](telegram-usage.md). diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index f1d8c21dc..100e96b81 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -1,7 +1,9 @@ # Advanced Strategies This page explains some advanced concepts available for strategies. -If you're just getting started, please be familiar with the methods described in the [Strategy Customization](strategy-customization.md) documentation first. +If you're just getting started, please be familiar with the methods described in the [Strategy Customization](strategy-customization.md) documentation and with the [Freqtrade basics](bot-basics.md) first. + +[Freqtrade basics](bot-basics.md) describes in which sequence each method defined below is called, which can be helpful to understand which method to use. !!! Note All callback methods described below should only be implemented in a strategy if they are also actively used. diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 1c4c80c47..4a373fb0d 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -1,6 +1,8 @@ # Strategy Customization -This page explains where to customize your strategies, and add new indicators. +This page explains how to customize your strategies, and add new indicators. + +Please familiarize yourself with [Freqtrade basics](bot-basics.md) first. ## Install a custom strategy file @@ -385,6 +387,7 @@ if self.dp: ``` #### *current_whitelist()* + Imagine you've developed a strategy that trades the `5m` timeframe using signals generated from a `1d` timeframe on the top 10 volume pairs by volume. The strategy might look something like this: diff --git a/mkdocs.yml b/mkdocs.yml index ae24e150c..ebd32b3c1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -3,6 +3,7 @@ nav: - Home: index.md - Installation Docker: docker.md - Installation: installation.md + - Freqtrade Basics: bot-basics.md - Configuration: configuration.md - Strategy Customization: strategy-customization.md - Stoploss: stoploss.md From ab9382434fb7945cd882c6905daddf0664918889 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 11:51:20 +0200 Subject: [PATCH 2641/3421] Add test for get_analyzed_dataframe --- freqtrade/data/dataprovider.py | 10 +++++----- tests/data/test_dataprovider.py | 31 +++++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index adc9ea334..113a092bc 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -5,7 +5,7 @@ including ticker and orderbook data, live and historical candle (OHLCV) data Common Interface for bot and strategy to access data. """ import logging -from datetime import datetime +from datetime import datetime, timezone from typing import Any, Dict, List, Optional, Tuple from arrow import Arrow @@ -107,14 +107,14 @@ class DataProvider: :param pair: pair to get the data for :param timeframe: timeframe to get data for :return: Tuple of (Analyzed Dataframe, lastrefreshed) for the requested pair / timeframe - combination + combination. + Returns empty dataframe and Epoch 0 (1970-01-01) if no dataframe was cached. """ - # TODO: check updated time and don't return outdated data. if (pair, timeframe) in self.__cached_pairs: return self.__cached_pairs[(pair, timeframe)] else: - # TODO: this is most likely wrong... - raise ValueError(f"No analyzed dataframe found for ({pair}, {timeframe})") + + return (DataFrame(), datetime.fromtimestamp(0, tz=timezone.utc)) def market(self, pair: str) -> Optional[Dict[str, Any]]: """ diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index def3ad535..c572cd9f3 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -1,11 +1,12 @@ +from datetime import datetime, timezone from unittest.mock import MagicMock -from pandas import DataFrame import pytest +from pandas import DataFrame from freqtrade.data.dataprovider import DataProvider -from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.exceptions import DependencyException, OperationalException +from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.state import RunMode from tests.conftest import get_patched_exchange @@ -194,3 +195,29 @@ def test_current_whitelist(mocker, default_conf, tickers): with pytest.raises(OperationalException): dp = DataProvider(default_conf, exchange) dp.current_whitelist() + + +def test_get_analyzed_dataframe(mocker, default_conf, ohlcv_history): + + default_conf["runmode"] = RunMode.DRY_RUN + + timeframe = default_conf["timeframe"] + exchange = get_patched_exchange(mocker, default_conf) + + dp = DataProvider(default_conf, exchange) + dp._set_cached_df("XRP/BTC", timeframe, ohlcv_history) + dp._set_cached_df("UNITTEST/BTC", timeframe, ohlcv_history) + + assert dp.runmode == RunMode.DRY_RUN + dataframe, time = dp.get_analyzed_dataframe("UNITTEST/BTC", timeframe) + assert ohlcv_history.equals(dataframe) + assert isinstance(time, datetime) + + dataframe, time = dp.get_analyzed_dataframe("XRP/BTC", timeframe) + assert ohlcv_history.equals(dataframe) + assert isinstance(time, datetime) + + dataframe, time = dp.get_analyzed_dataframe("NOTHING/BTC", timeframe) + assert dataframe.empty + assert isinstance(time, datetime) + assert time == datetime(1970, 1, 1, tzinfo=timezone.utc) From 8472fcfff9a6ad93e96ac8800bfe8dbb90277a52 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 14 Jun 2020 11:52:42 +0200 Subject: [PATCH 2642/3421] Add empty to documentation --- docs/strategy-customization.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 4a373fb0d..0a1049f3b 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -454,6 +454,13 @@ if self.dp: timeframe=self.ticker_interval) ``` +!!! Note "No data available" + Returns an empty dataframe if the requested pair was not cached. + This should not happen when using whitelisted pairs. + +!!! Warning "Warning in hyperopt" + This option cannot currently be used during hyperopt. + #### *orderbook(pair, maximum)* ``` python From f2a778d294a435c2b775dae1c644eef042dfe1dd Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 18 Jun 2020 07:03:30 +0200 Subject: [PATCH 2643/3421] Combine tests for empty dataframe --- freqtrade/strategy/interface.py | 2 +- tests/strategy/test_interface.py | 14 +++++--------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index fab438ae6..5b5cce268 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -415,7 +415,7 @@ class IStrategy(ABC): dataframe, _ = self.dp.get_analyzed_dataframe(pair, timeframe) if not isinstance(dataframe, DataFrame) or dataframe.empty: - logger.warning('Empty dataframe for pair %s', pair) + logger.warning(f'Empty candle (OHLCV) data for pair {pair}') return False, False latest_date = dataframe['date'].max() diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 176fa43ca..835465f38 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -89,6 +89,11 @@ def test_get_signal_empty(default_conf, mocker, caplog): mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(None, 0)) assert (False, False) == _STRATEGY.get_signal('bar', default_conf['timeframe']) assert log_has('Empty candle (OHLCV) data for pair bar', caplog) + caplog.clear() + + mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(DataFrame([]), 0)) + assert (False, False) == _STRATEGY.get_signal('baz', default_conf['timeframe']) + assert log_has('Empty candle (OHLCV) data for pair baz', caplog) def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ohlcv_history): @@ -110,15 +115,6 @@ def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ohlcv_his assert log_has_re(r'Strategy caused the following exception: xyz.*', caplog) -def test_get_signal_empty_dataframe(default_conf, mocker, caplog, ohlcv_history): - caplog.set_level(logging.INFO) - mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(DataFrame([]), 0)) - mocker.patch.object(_STRATEGY, 'assert_df') - - assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['timeframe']) - assert log_has('Empty dataframe for pair xyz', caplog) - - def test_get_signal_old_dataframe(default_conf, mocker, caplog, ohlcv_history): # default_conf defines a 5m interval. we check interval * 2 + 5m # this is necessary as the last candle is removed (partial candles) by default From 48225e0d80669e100cb56518133a95cc8d6adad0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 18 Jun 2020 07:05:06 +0200 Subject: [PATCH 2644/3421] Improve interface docstrings for analyze functions --- freqtrade/strategy/interface.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 5b5cce268..279453920 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -346,7 +346,7 @@ class IStrategy(ABC): return dataframe - def analyze_pair(self, pair: str): + def analyze_pair(self, pair: str) -> None: """ Fetch data for this pair from dataprovider and analyze. Stores the dataframe into the dataprovider. @@ -376,7 +376,11 @@ class IStrategy(ABC): logger.warning('Empty dataframe for pair %s', pair) return - def analyze(self, pairs: List[str]): + def analyze(self, pairs: List[str]) -> None: + """ + Analyze all pairs using analyze_pair(). + :param pairs: List of pairs to analyze + """ for pair in pairs: self.analyze_pair(pair) @@ -386,7 +390,9 @@ class IStrategy(ABC): return len(dataframe), dataframe["close"].iloc[-1], dataframe["date"].iloc[-1] def assert_df(self, dataframe: DataFrame, df_len: int, df_close: float, df_date: datetime): - """ make sure data is unmodified """ + """ + Ensure dataframe (length, last candle) was not modified, and has all elements we need. + """ message = "" if df_len != len(dataframe): message = "length" @@ -403,10 +409,9 @@ class IStrategy(ABC): def get_signal(self, pair: str, timeframe: str) -> Tuple[bool, bool]: """ Calculates current signal based based on the buy / sell columns of the dataframe. - Used by Bot to get the latest signal + Used by Bot to get the signal to buy or sell :param pair: pair in format ANT/BTC :param timeframe: timeframe to use - :param dataframe: Dataframe to analyze :return: (Buy, Sell) A bool-tuple indicating buy/sell signal """ if not self.dp: @@ -429,8 +434,7 @@ class IStrategy(ABC): if latest_date < (arrow.utcnow().shift(minutes=-(timeframe_minutes * 2 + offset))): logger.warning( 'Outdated history for pair %s. Last tick is %s minutes old', - pair, - (arrow.utcnow() - latest_date).seconds // 60 + pair, (arrow.utcnow() - latest_date).seconds // 60 ) return False, False From f1993fb2f48b986caef0372f1d6e9e0fe39f3c29 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 18 Jun 2020 08:01:09 +0200 Subject: [PATCH 2645/3421] Pass analyzed dataframe to get_signal --- freqtrade/freqtradebot.py | 8 ++++-- freqtrade/strategy/interface.py | 8 ++---- tests/conftest.py | 2 +- tests/strategy/test_interface.py | 43 ++++++-------------------------- 4 files changed, 16 insertions(+), 45 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 09b794a99..59f4447d7 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -424,7 +424,8 @@ class FreqtradeBot: return False # running get_signal on historical data fetched - (buy, sell) = self.strategy.get_signal(pair, self.strategy.timeframe) + analyzed_df, _ = self.dataprovider.get_analyzed_dataframe(pair, self.strategy.timeframe) + (buy, sell) = self.strategy.get_signal(pair, self.strategy.timeframe, analyzed_df) if buy and not sell: stake_amount = self.get_trade_stake_amount(pair) @@ -705,7 +706,10 @@ class FreqtradeBot: if (config_ask_strategy.get('use_sell_signal', True) or config_ask_strategy.get('ignore_roi_if_buy_signal', False)): - (buy, sell) = self.strategy.get_signal(trade.pair, self.strategy.timeframe) + analyzed_df, _ = self.dataprovider.get_analyzed_dataframe(trade.pair, + self.strategy.timeframe) + + (buy, sell) = self.strategy.get_signal(trade.pair, self.strategy.timeframe, analyzed_df) if config_ask_strategy.get('use_order_book', False): order_book_min = config_ask_strategy.get('order_book_min', 1) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 279453920..969259446 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -406,19 +406,15 @@ class IStrategy(ABC): else: raise StrategyError(f"Dataframe returned from strategy has mismatching {message}.") - def get_signal(self, pair: str, timeframe: str) -> Tuple[bool, bool]: + def get_signal(self, pair: str, timeframe: str, dataframe: DataFrame) -> Tuple[bool, bool]: """ Calculates current signal based based on the buy / sell columns of the dataframe. Used by Bot to get the signal to buy or sell :param pair: pair in format ANT/BTC :param timeframe: timeframe to use + :param dataframe: Analyzed dataframe to get signal from. :return: (Buy, Sell) A bool-tuple indicating buy/sell signal """ - if not self.dp: - raise OperationalException("DataProvider not found.") - - dataframe, _ = self.dp.get_analyzed_dataframe(pair, timeframe) - if not isinstance(dataframe, DataFrame) or dataframe.empty: logger.warning(f'Empty candle (OHLCV) data for pair {pair}') return False, False diff --git a/tests/conftest.py b/tests/conftest.py index c64f443bc..8e8c1bfaa 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -163,7 +163,7 @@ def patch_get_signal(freqtrade: FreqtradeBot, value=(True, False)) -> None: :param value: which value IStrategy.get_signal() must return :return: None """ - freqtrade.strategy.get_signal = lambda e, s: value + freqtrade.strategy.get_signal = lambda e, s, x: value freqtrade.exchange.refresh_latest_ohlcv = lambda p: None diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 835465f38..70ae067d7 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -31,40 +31,15 @@ def test_returns_latest_signal(mocker, default_conf, ohlcv_history): mocked_history['buy'] = 0 mocked_history.loc[1, 'sell'] = 1 - mocker.patch.object( - _STRATEGY.dp, 'get_analyzed_dataframe', - return_value=(mocked_history, 0) - ) - - assert _STRATEGY.get_signal('ETH/BTC', '5m') == (False, True) + assert _STRATEGY.get_signal('ETH/BTC', '5m', mocked_history) == (False, True) mocked_history.loc[1, 'sell'] = 0 mocked_history.loc[1, 'buy'] = 1 - mocker.patch.object( - _STRATEGY.dp, 'get_analyzed_dataframe', - return_value=(mocked_history, 0) - ) - assert _STRATEGY.get_signal('ETH/BTC', '5m') == (True, False) + assert _STRATEGY.get_signal('ETH/BTC', '5m', mocked_history) == (True, False) mocked_history.loc[1, 'sell'] = 0 mocked_history.loc[1, 'buy'] = 0 - mocker.patch.object( - _STRATEGY.dp, 'get_analyzed_dataframe', - return_value=(mocked_history, 0) - ) - assert _STRATEGY.get_signal('ETH/BTC', '5m') == (False, False) - - -def test_trade_no_dataprovider(default_conf, mocker, caplog): - strategy = DefaultStrategy({}) - # Delete DP for sure (suffers from test leakage, as this is updated in the base class) - if strategy.dp is not None: - strategy.dp = None - with pytest.raises(OperationalException, match="DataProvider not found."): - strategy.get_signal('ETH/BTC', '5m') - - with pytest.raises(OperationalException, match="DataProvider not found."): - strategy.analyze_pair('ETH/BTC') + assert _STRATEGY.get_signal('ETH/BTC', '5m', mocked_history) == (False, False) def test_analyze_pair_empty(default_conf, mocker, caplog, ohlcv_history): @@ -81,18 +56,15 @@ def test_analyze_pair_empty(default_conf, mocker, caplog, ohlcv_history): def test_get_signal_empty(default_conf, mocker, caplog): - mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(DataFrame(), 0)) - assert (False, False) == _STRATEGY.get_signal('foo', default_conf['timeframe']) + assert (False, False) == _STRATEGY.get_signal('foo', default_conf['timeframe'], DataFrame()) assert log_has('Empty candle (OHLCV) data for pair foo', caplog) caplog.clear() - mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(None, 0)) - assert (False, False) == _STRATEGY.get_signal('bar', default_conf['timeframe']) + assert (False, False) == _STRATEGY.get_signal('bar', default_conf['timeframe'], None) assert log_has('Empty candle (OHLCV) data for pair bar', caplog) caplog.clear() - mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(DataFrame([]), 0)) - assert (False, False) == _STRATEGY.get_signal('baz', default_conf['timeframe']) + assert (False, False) == _STRATEGY.get_signal('baz', default_conf['timeframe'], DataFrame([])) assert log_has('Empty candle (OHLCV) data for pair baz', caplog) @@ -126,10 +98,9 @@ def test_get_signal_old_dataframe(default_conf, mocker, caplog, ohlcv_history): mocked_history.loc[1, 'buy'] = 1 caplog.set_level(logging.INFO) - mocker.patch.object(_STRATEGY.dp, 'get_analyzed_dataframe', return_value=(mocked_history, 0)) mocker.patch.object(_STRATEGY, 'assert_df') - assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['timeframe']) + assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['timeframe'], mocked_history) assert log_has('Outdated history for pair xyz. Last tick is 16 minutes old', caplog) From eef3c01da73008c9f9a4bb03ff5c4106cbbf68fa Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 18 Jun 2020 19:46:03 +0200 Subject: [PATCH 2646/3421] Fix function header formatting --- docs/strategy-advanced.md | 4 ++-- freqtrade/strategy/interface.py | 4 ++-- freqtrade/templates/subtemplates/strategy_methods_advanced.j2 | 4 ++-- tests/strategy/test_interface.py | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index 100e96b81..c576cb46e 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -168,8 +168,8 @@ class Awesomestrategy(IStrategy): # ... populate_* methods - def confirm_trade_exit(self, pair: str, trade: Trade, order_type: str, amount: float, rate: float, - time_in_force: str, sell_reason: str, ** kwargs) -> bool: + def confirm_trade_exit(self, pair: str, trade: Trade, order_type: str, amount: float, + rate: float, time_in_force: str, sell_reason: str, **kwargs) -> bool: """ Called right before placing a regular sell order. Timing for this function is critical, so avoid doing heavy computations or diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 969259446..f8e59ac7b 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -221,8 +221,8 @@ class IStrategy(ABC): """ return True - def confirm_trade_exit(self, pair: str, trade: Trade, order_type: str, amount: float, rate: float, - time_in_force: str, sell_reason: str, ** kwargs) -> bool: + def confirm_trade_exit(self, pair: str, trade: Trade, order_type: str, amount: float, + rate: float, time_in_force: str, sell_reason: str, **kwargs) -> bool: """ Called right before placing a regular sell order. Timing for this function is critical, so avoid doing heavy computations or diff --git a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 index 28d2d1c1b..c7ce41bb7 100644 --- a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 +++ b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 @@ -34,8 +34,8 @@ def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: f """ return True -def confirm_trade_exit(self, pair: str, trade: 'Trade', order_type: str, amount: float, rate: float, - time_in_force: str, sell_reason: str, ** kwargs) -> bool: +def confirm_trade_exit(self, pair: str, trade: Trade, order_type: str, amount: float, + rate: float, time_in_force: str, sell_reason: str, **kwargs) -> bool: """ Called right before placing a regular sell order. Timing for this function is critical, so avoid doing heavy computations or diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 70ae067d7..381454622 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -9,7 +9,7 @@ from pandas import DataFrame from freqtrade.configuration import TimeRange from freqtrade.data.history import load_data -from freqtrade.exceptions import StrategyError, OperationalException +from freqtrade.exceptions import StrategyError from freqtrade.persistence import Trade from freqtrade.resolvers import StrategyResolver from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper From f976905728c45ee21e6daccea25eb25d3ff3ec47 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 18 Jun 2020 20:00:18 +0200 Subject: [PATCH 2647/3421] Fix more exchange message typos --- freqtrade/exchange/exchange.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 48219096d..4564e671f 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -526,13 +526,13 @@ class Exchange: except ccxt.InsufficientFunds as e: raise DependencyException( - f'Insufficient funds to create {ordertype} {side} order on market {pair}.' + f'Insufficient funds to create {ordertype} {side} order on market {pair}. ' f'Tried to {side} amount {amount} at rate {rate}.' f'Message: {e}') from e except ccxt.InvalidOrder as e: raise DependencyException( - f'Could not create {ordertype} {side} order on market {pair}.' - f'Tried to {side} amount {amount} at rate {rate}.' + f'Could not create {ordertype} {side} order on market {pair}. ' + f'Tried to {side} amount {amount} at rate {rate}. ' f'Message: {e}') from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( From dbf14ccf13d00be1687d4d3b45af252384bbec7f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2020 09:13:36 +0000 Subject: [PATCH 2648/3421] Bump mypy from 0.780 to 0.781 Bumps [mypy](https://github.com/python/mypy) from 0.780 to 0.781. - [Release notes](https://github.com/python/mypy/releases) - [Commits](https://github.com/python/mypy/compare/v0.780...v0.781) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 840eff15f..91b33c573 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ coveralls==2.0.0 flake8==3.8.3 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 -mypy==0.780 +mypy==0.781 pytest==5.4.3 pytest-asyncio==0.12.0 pytest-cov==2.10.0 From 993333a61cdc99afbc04aa7e96ffcb582e181776 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2020 09:14:25 +0000 Subject: [PATCH 2649/3421] Bump pandas from 1.0.4 to 1.0.5 Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.0.4 to 1.0.5. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v1.0.4...v1.0.5) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2c68b8f2c..8376e41aa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ -r requirements-common.txt numpy==1.18.5 -pandas==1.0.4 +pandas==1.0.5 From 432c1b54bfc8332aab70f1a08ba491d08972b7a8 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2020 09:14:57 +0000 Subject: [PATCH 2650/3421] Bump arrow from 0.15.6 to 0.15.7 Bumps [arrow](https://github.com/crsmithdev/arrow) from 0.15.6 to 0.15.7. - [Release notes](https://github.com/crsmithdev/arrow/releases) - [Changelog](https://github.com/crsmithdev/arrow/blob/master/CHANGELOG.rst) - [Commits](https://github.com/crsmithdev/arrow/compare/0.15.6...0.15.7) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index a6420d76a..767e993de 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -3,7 +3,7 @@ ccxt==1.30.2 SQLAlchemy==1.3.17 python-telegram-bot==12.7 -arrow==0.15.6 +arrow==0.15.7 cachetools==4.1.0 requests==2.23.0 urllib3==1.25.9 From dcc95d09339a104977a347499ada458f1855fba7 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2020 09:15:33 +0000 Subject: [PATCH 2651/3421] Bump mkdocs-material from 5.3.0 to 5.3.2 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.3.0 to 5.3.2. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.3.0...5.3.2) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 666cf5ac4..7ddfc1dfb 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.3.0 +mkdocs-material==5.3.2 mdx_truly_sane_lists==1.2 From b29f12bfad2e526c4dd3ae2b1bc0fcebe5bc4a9f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2020 09:16:00 +0000 Subject: [PATCH 2652/3421] Bump scipy from 1.4.1 to 1.5.0 Bumps [scipy](https://github.com/scipy/scipy) from 1.4.1 to 1.5.0. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.4.1...v1.5.0) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index e1b3fef4f..aedfc0eaa 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -2,7 +2,7 @@ -r requirements.txt # Required for hyperopt -scipy==1.4.1 +scipy==1.5.0 scikit-learn==0.23.1 scikit-optimize==0.7.4 filelock==3.0.12 From 6d82e41dd1bcf966d89d4ae6d8d7104b8cb14809 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2020 09:17:07 +0000 Subject: [PATCH 2653/3421] Bump ccxt from 1.30.2 to 1.30.31 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.30.2 to 1.30.31. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.30.2...1.30.31) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index a6420d76a..2e90c6cc1 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.30.2 +ccxt==1.30.31 SQLAlchemy==1.3.17 python-telegram-bot==12.7 arrow==0.15.6 From 9af1dae53e40f35beb4fc41069a655c95449f52c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2020 09:48:54 +0000 Subject: [PATCH 2654/3421] Bump numpy from 1.18.5 to 1.19.0 Bumps [numpy](https://github.com/numpy/numpy) from 1.18.5 to 1.19.0. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.18.5...v1.19.0) Signed-off-by: dependabot-preview[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8376e41aa..1e61d165f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Load common requirements -r requirements-common.txt -numpy==1.18.5 +numpy==1.19.0 pandas==1.0.5 From 1854e3053890552e3892757568c359219c6a3106 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2020 11:56:51 +0000 Subject: [PATCH 2655/3421] Bump requests from 2.23.0 to 2.24.0 Bumps [requests](https://github.com/psf/requests) from 2.23.0 to 2.24.0. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/master/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.23.0...v2.24.0) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 767e993de..3519eda69 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -5,7 +5,7 @@ SQLAlchemy==1.3.17 python-telegram-bot==12.7 arrow==0.15.7 cachetools==4.1.0 -requests==2.23.0 +requests==2.24.0 urllib3==1.25.9 wrapt==1.12.1 jsonschema==3.2.0 From f2807143c65c7bb3e9f46566cb1e3d2f43952a22 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2020 12:10:52 +0000 Subject: [PATCH 2656/3421] Bump ccxt from 1.30.2 to 1.30.34 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.30.2 to 1.30.34. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.30.2...1.30.34) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 767e993de..1c981aee3 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.30.2 +ccxt==1.30.34 SQLAlchemy==1.3.17 python-telegram-bot==12.7 arrow==0.15.7 From 0509b9a8fce4eacfa55e01a876b909958ffcf4c3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 24 Jun 2020 06:43:19 +0200 Subject: [PATCH 2657/3421] Show winning vs. losing trades --- freqtrade/rpc/rpc.py | 8 ++++++++ freqtrade/rpc/telegram.py | 4 +++- tests/rpc/test_rpc_apiserver.py | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index aeaf82662..4cb432aea 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -269,6 +269,8 @@ class RPC: profit_closed_coin = [] profit_closed_ratio = [] durations = [] + winning_trades = 0 + losing_trades = 0 for trade in trades: current_rate: float = 0.0 @@ -282,6 +284,10 @@ class RPC: profit_ratio = trade.close_profit profit_closed_coin.append(trade.close_profit_abs) profit_closed_ratio.append(profit_ratio) + if trade.close_profit > 0: + winning_trades += 1 + else: + losing_trades += 1 else: # Get current rate try: @@ -344,6 +350,8 @@ class RPC: 'avg_duration': str(timedelta(seconds=sum(durations) / num)).split('.')[0], 'best_pair': best_pair[0] if best_pair else '', 'best_rate': round(best_pair[1] * 100, 2) if best_pair else 0, + 'winning_trades': winning_trades, + 'losing_trades': losing_trades, } def _rpc_balance(self, stake_currency: str, fiat_display_currency: str) -> Dict: diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 9b40ee2f6..13cc1afaf 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -366,7 +366,9 @@ class Telegram(RPC): f"∙ `{profit_all_fiat:.3f} {fiat_disp_cur}`\n" f"*Total Trade Count:* `{trade_count}`\n" f"*First Trade opened:* `{first_trade_date}`\n" - f"*Latest Trade opened:* `{latest_trade_date}`") + f"*Latest Trade opened:* `{latest_trade_date}\n`" + f"*Win / Loss:* `{stats['winning_trades']} / {stats['losing_trades']}`" + ) if stats['closed_trade_count'] > 0: markdown_msg += (f"\n*Avg. Duration:* `{avg_duration}`\n" f"*Best Performing:* `{best_pair}: {best_rate:.2f}%`") diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 8e73eacf8..77a3e5c30 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -444,6 +444,8 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li 'profit_closed_percent_sum': 6.2, 'trade_count': 1, 'closed_trade_count': 1, + 'winning_trades': 1, + 'losing_trades': 0, } From 3624aec059f0bfc5f8aa587c18fcc97cf7a5cd8b Mon Sep 17 00:00:00 2001 From: gambcl Date: Wed, 24 Jun 2020 15:21:28 +0100 Subject: [PATCH 2658/3421] Typos --- freqtrade/pairlist/IPairList.py | 2 +- freqtrade/pairlist/PrecisionFilter.py | 2 +- freqtrade/pairlist/PriceFilter.py | 2 +- freqtrade/pairlist/ShuffleFilter.py | 2 +- freqtrade/pairlist/SpreadFilter.py | 2 +- freqtrade/pairlist/StaticPairList.py | 2 +- freqtrade/pairlist/VolumePairList.py | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index fd25e0766..1cca00eba 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -68,7 +68,7 @@ class IPairList(ABC): def needstickers(self) -> bool: """ Boolean property defining if tickers are necessary. - If no Pairlist requries tickers, an empty List is passed + If no Pairlist requires tickers, an empty List is passed as tickers argument to filter_pairlist """ diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 0331347be..120f7c4e0 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -27,7 +27,7 @@ class PrecisionFilter(IPairList): def needstickers(self) -> bool: """ Boolean property defining if tickers are necessary. - If no Pairlist requries tickers, an empty List is passed + If no Pairlist requires tickers, an empty List is passed as tickers argument to filter_pairlist """ return True diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index b85d68269..29dd88a76 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -24,7 +24,7 @@ class PriceFilter(IPairList): def needstickers(self) -> bool: """ Boolean property defining if tickers are necessary. - If no Pairlist requries tickers, an empty List is passed + If no Pairlist requires tickers, an empty List is passed as tickers argument to filter_pairlist """ return True diff --git a/freqtrade/pairlist/ShuffleFilter.py b/freqtrade/pairlist/ShuffleFilter.py index ba3792213..eb4f6dcc3 100644 --- a/freqtrade/pairlist/ShuffleFilter.py +++ b/freqtrade/pairlist/ShuffleFilter.py @@ -25,7 +25,7 @@ class ShuffleFilter(IPairList): def needstickers(self) -> bool: """ Boolean property defining if tickers are necessary. - If no Pairlist requries tickers, an empty List is passed + If no Pairlist requires tickers, an empty List is passed as tickers argument to filter_pairlist """ return False diff --git a/freqtrade/pairlist/SpreadFilter.py b/freqtrade/pairlist/SpreadFilter.py index 0147c0068..2527a3131 100644 --- a/freqtrade/pairlist/SpreadFilter.py +++ b/freqtrade/pairlist/SpreadFilter.py @@ -24,7 +24,7 @@ class SpreadFilter(IPairList): def needstickers(self) -> bool: """ Boolean property defining if tickers are necessary. - If no Pairlist requries tickers, an empty List is passed + If no Pairlist requires tickers, an empty List is passed as tickers argument to filter_pairlist """ return True diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index b5c1bc767..aa6268ba3 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -28,7 +28,7 @@ class StaticPairList(IPairList): def needstickers(self) -> bool: """ Boolean property defining if tickers are necessary. - If no Pairlist requries tickers, an empty List is passed + If no Pairlist requires tickers, an empty List is passed as tickers argument to filter_pairlist """ return False diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index d32be3dc9..35dce93eb 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -54,7 +54,7 @@ class VolumePairList(IPairList): def needstickers(self) -> bool: """ Boolean property defining if tickers are necessary. - If no Pairlist requries tickers, an empty List is passed + If no Pairlist requires tickers, an empty List is passed as tickers argument to filter_pairlist """ return True From 676006b99c0610fcbb975325b4544597bc0fcaa7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 24 Jun 2020 17:40:23 +0200 Subject: [PATCH 2659/3421] --dl-trades should also support increasing download span (by downloading the whole dataset again to avoid missing data in the middle). --- freqtrade/data/history/history_utils.py | 5 +++++ tests/conftest.py | 2 +- tests/data/test_history.py | 22 ++++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index 4f3f75a87..58bd752ea 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -270,6 +270,11 @@ def _download_trades_history(exchange: Exchange, # DEFAULT_TRADES_COLUMNS: 0 -> timestamp # DEFAULT_TRADES_COLUMNS: 1 -> id + if trades and since < trades[0][0]: + # since is before the first trade + logger.info(f"Start earlier than available data. Redownloading trades for {pair}...") + trades = [] + from_id = trades[-1][1] if trades else None if trades and since < trades[-1][0]: # Reset since to the last available point diff --git a/tests/conftest.py b/tests/conftest.py index a4106c767..f2143e60e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1424,7 +1424,7 @@ def trades_for_order(): @pytest.fixture(scope="function") def trades_history(): - return [[1565798399463, '126181329', None, 'buy', 0.019627, 0.04, 0.00078508], + return [[1565798389463, '126181329', None, 'buy', 0.019627, 0.04, 0.00078508], [1565798399629, '126181330', None, 'buy', 0.019627, 0.244, 0.004788987999999999], [1565798399752, '126181331', None, 'sell', 0.019626, 0.011, 0.00021588599999999999], [1565798399862, '126181332', None, 'sell', 0.019626, 0.011, 0.00021588599999999999], diff --git a/tests/data/test_history.py b/tests/data/test_history.py index c52163bbc..c2eb2d715 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -557,6 +557,7 @@ def test_download_trades_history(trades_history, mocker, default_conf, testdatad assert ght_mock.call_count == 1 # Check this in seconds - since we had to convert to seconds above too. assert int(ght_mock.call_args_list[0][1]['since'] // 1000) == since_time2 - 5 + assert ght_mock.call_args_list[0][1]['from_id'] is not None # clean files freshly downloaded _clean_test_file(file1) @@ -568,6 +569,27 @@ def test_download_trades_history(trades_history, mocker, default_conf, testdatad pair='ETH/BTC') assert log_has_re('Failed to download historic trades for pair: "ETH/BTC".*', caplog) + file2 = testdatadir / 'XRP_ETH-trades.json.gz' + + _backup_file(file2, True) + + ght_mock.reset_mock() + mocker.patch('freqtrade.exchange.Exchange.get_historic_trades', + ght_mock) + # Since before first start date + since_time = int(trades_history[0][0] // 1000) - 500 + timerange = TimeRange('date', None, since_time, 0) + + assert _download_trades_history(data_handler=data_handler, exchange=exchange, + pair='XRP/ETH', timerange=timerange) + + assert ght_mock.call_count == 1 + + assert int(ght_mock.call_args_list[0][1]['since'] // 1000) == since_time + assert ght_mock.call_args_list[0][1]['from_id'] is None + assert log_has_re(r'Start earlier than available data. Redownloading trades for.*', caplog) + _clean_test_file(file2) + def test_convert_trades_to_ohlcv(mocker, default_conf, testdatadir, caplog): From b77a105778842ee012a122ac5f9a8f218fbc3716 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 24 Jun 2020 20:32:19 +0200 Subject: [PATCH 2660/3421] Add CORS_origins key to configuration --- config.json.example | 1 + config_binance.json.example | 1 + config_full.json.example | 1 + config_kraken.json.example | 1 + docs/rest-api.md | 24 ++++++++++++++++++++++++ freqtrade/constants.py | 2 ++ freqtrade/rpc/api_server.py | 4 +++- freqtrade/templates/base_config.json.j2 | 1 + 8 files changed, 34 insertions(+), 1 deletion(-) diff --git a/config.json.example b/config.json.example index 9e3daa2b5..77a147d0c 100644 --- a/config.json.example +++ b/config.json.example @@ -82,6 +82,7 @@ "listen_port": 8080, "verbosity": "info", "jwt_secret_key": "somethingrandom", + "CORS_origins": [], "username": "", "password": "" }, diff --git a/config_binance.json.example b/config_binance.json.example index b45e69bba..82943749d 100644 --- a/config_binance.json.example +++ b/config_binance.json.example @@ -87,6 +87,7 @@ "listen_port": 8080, "verbosity": "info", "jwt_secret_key": "somethingrandom", + "CORS_origins": [], "username": "", "password": "" }, diff --git a/config_full.json.example b/config_full.json.example index 1fd1b44a5..3a8667da4 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -123,6 +123,7 @@ "listen_port": 8080, "verbosity": "info", "jwt_secret_key": "somethingrandom", + "CORS_origins": [], "username": "freqtrader", "password": "SuperSecurePassword" }, diff --git a/config_kraken.json.example b/config_kraken.json.example index 7e4001ff3..fb983a4a3 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -93,6 +93,7 @@ "listen_port": 8080, "verbosity": "info", "jwt_secret_key": "somethingrandom", + "CORS_origins": [], "username": "", "password": "" }, diff --git a/docs/rest-api.md b/docs/rest-api.md index 33f62f884..630c952b4 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -13,6 +13,7 @@ Sample configuration: "listen_port": 8080, "verbosity": "info", "jwt_secret_key": "somethingrandom", + "CORS_origins": [], "username": "Freqtrader", "password": "SuperSecret1!" }, @@ -232,3 +233,26 @@ Since the access token has a short timeout (15 min) - the `token/refresh` reques > curl -X POST --header "Authorization: Bearer ${refresh_token}"http://localhost:8080/api/v1/token/refresh {"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1ODkxMTk5NzQsIm5iZiI6MTU4OTExOTk3NCwianRpIjoiMDBjNTlhMWUtMjBmYS00ZTk0LTliZjAtNWQwNTg2MTdiZDIyIiwiZXhwIjoxNTg5MTIwODc0LCJpZGVudGl0eSI6eyJ1IjoiRnJlcXRyYWRlciJ9LCJmcmVzaCI6ZmFsc2UsInR5cGUiOiJhY2Nlc3MifQ.1seHlII3WprjjclY6DpRhen0rqdF4j6jbvxIhUFaSbs"} ``` + +## CORS + +All web-based frontends are subject to [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) - Cross-Origin Resource Sharing. +Since most request to the Freqtrade API must be authenticated, a proper CORS policy is key to avoid security problems. +Also, the Standard disallows `*` CORS policies for requests with credentials, so this setting must be done appropriately. + +Users can configure this themselfs via the `CORS_origins` configuration setting. +It consists of a list of allowed sites that are allowed to consume resources from the bot's API. + +Assuming your Application would be deployed as `https://frequi.freqtrade.io/home/` - this would mean that the following configuration becomes necessary: + +```jsonc +{ + //... + "jwt_secret_key": "somethingrandom", + "CORS_origins": ["https://frequi.freqtrade.io"], + //... +} +``` + +!!! Note + We strongly recommend to also set `jwt_secret_key` to something random and known only to yourself to avoid unauthorized access to your bot. diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 6741e0605..1f8944ed9 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -221,6 +221,8 @@ CONF_SCHEMA = { }, 'username': {'type': 'string'}, 'password': {'type': 'string'}, + 'jwt_secret_key': {'type': 'string'}, + 'CORS_origins': {'type': 'array', 'items': {'type': 'string'}}, 'verbosity': {'type': 'string', 'enum': ['error', 'info']}, }, 'required': ['enabled', 'listen_ip_address', 'listen_port', 'username', 'password'] diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index f424bea92..a2cef9a98 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -90,7 +90,9 @@ class ApiServer(RPC): self._config = freqtrade.config self.app = Flask(__name__) self._cors = CORS(self.app, - resources={r"/api/*": {"supports_credentials": True, }} + resources={r"/api/*": { + "supports_credentials": True, + "origins": self._config['api_server'].get('CORS_origins', [])}} ) # Setup the Flask-JWT-Extended extension diff --git a/freqtrade/templates/base_config.json.j2 b/freqtrade/templates/base_config.json.j2 index 118ae348b..b362690f9 100644 --- a/freqtrade/templates/base_config.json.j2 +++ b/freqtrade/templates/base_config.json.j2 @@ -59,6 +59,7 @@ "listen_port": 8080, "verbosity": "info", "jwt_secret_key": "somethingrandom", + "CORS_origins": [], "username": "", "password": "" }, From 5423d8588ecb6bf1c9094f9ca89b19585fe3ddaf Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 24 Jun 2020 20:32:35 +0200 Subject: [PATCH 2661/3421] Test for cors settings --- tests/rpc/test_rpc_apiserver.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 8e73eacf8..0acb31282 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -24,6 +24,7 @@ def botclient(default_conf, mocker): default_conf.update({"api_server": {"enabled": True, "listen_ip_address": "127.0.0.1", "listen_port": 8080, + "CORS_origins": ['http://example.com'], "username": _TEST_USER, "password": _TEST_PASS, }}) @@ -40,13 +41,13 @@ def client_post(client, url, data={}): content_type="application/json", data=data, headers={'Authorization': _basic_auth_str(_TEST_USER, _TEST_PASS), - 'Origin': 'example.com'}) + 'Origin': 'http://example.com'}) def client_get(client, url): # Add fake Origin to ensure CORS kicks in return client.get(url, headers={'Authorization': _basic_auth_str(_TEST_USER, _TEST_PASS), - 'Origin': 'example.com'}) + 'Origin': 'http://example.com'}) def assert_response(response, expected_code=200, needs_cors=True): @@ -54,6 +55,7 @@ def assert_response(response, expected_code=200, needs_cors=True): assert response.content_type == "application/json" if needs_cors: assert ('Access-Control-Allow-Credentials', 'true') in response.headers._list + assert ('Access-Control-Allow-Origin', 'http://example.com') in response.headers._list def test_api_not_found(botclient): @@ -110,7 +112,7 @@ def test_api_token_login(botclient): rc = client.get(f"{BASE_URI}/count", content_type="application/json", headers={'Authorization': f'Bearer {rc.json["access_token"]}', - 'Origin': 'example.com'}) + 'Origin': 'http://example.com'}) assert_response(rc) @@ -122,7 +124,7 @@ def test_api_token_refresh(botclient): content_type="application/json", data=None, headers={'Authorization': f'Bearer {rc.json["refresh_token"]}', - 'Origin': 'example.com'}) + 'Origin': 'http://example.com'}) assert_response(rc) assert 'access_token' in rc.json assert 'refresh_token' not in rc.json From ab7f5a2bcf41e3e0c988b5e66d8f02d6ed39a4b4 Mon Sep 17 00:00:00 2001 From: gambcl Date: Wed, 24 Jun 2020 23:58:12 +0100 Subject: [PATCH 2662/3421] Added pairslist AgeFilter --- config_full.json.example | 1 + docs/configuration.md | 14 +++++- freqtrade/constants.py | 3 +- freqtrade/pairlist/AgeFilter.py | 76 +++++++++++++++++++++++++++++++++ tests/pairlist/test_pairlist.py | 76 +++++++++++++++++++++++++++++++-- 5 files changed, 164 insertions(+), 6 deletions(-) create mode 100644 freqtrade/pairlist/AgeFilter.py diff --git a/config_full.json.example b/config_full.json.example index 1fd1b44a5..5b8fa256b 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -64,6 +64,7 @@ "sort_key": "quoteVolume", "refresh_period": 1800 }, + {"method": "AgeFilter", "min_days_listed": 10}, {"method": "PrecisionFilter"}, {"method": "PriceFilter", "low_price_ratio": 0.01}, {"method": "SpreadFilter", "max_spread_ratio": 0.005} diff --git a/docs/configuration.md b/docs/configuration.md index 8438d55da..e7a79361a 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -592,7 +592,7 @@ Pairlist Handlers define the list of pairs (pairlist) that the bot should trade. In your configuration, you can use Static Pairlist (defined by the [`StaticPairList`](#static-pair-list) Pairlist Handler) and Dynamic Pairlist (defined by the [`VolumePairList`](#volume-pair-list) Pairlist Handler). -Additionaly, [`PrecisionFilter`](#precisionfilter), [`PriceFilter`](#pricefilter), [`ShuffleFilter`](#shufflefilter) and [`SpreadFilter`](#spreadfilter) act as Pairlist Filters, removing certain pairs and/or moving their positions in the pairlist. +Additionaly, [`AgeFilter`](#agefilter), [`PrecisionFilter`](#precisionfilter), [`PriceFilter`](#pricefilter), [`ShuffleFilter`](#shufflefilter) and [`SpreadFilter`](#spreadfilter) act as Pairlist Filters, removing certain pairs and/or moving their positions in the pairlist. If multiple Pairlist Handlers are used, they are chained and a combination of all Pairlist Handlers forms the resulting pairlist the bot uses for trading and backtesting. Pairlist Handlers are executed in the sequence they are configured. You should always configure either `StaticPairList` or `VolumePairList` as the starting Pairlist Handler. @@ -602,6 +602,7 @@ Inactive markets are always removed from the resulting pairlist. Explicitly blac * [`StaticPairList`](#static-pair-list) (default, if not configured differently) * [`VolumePairList`](#volume-pair-list) +* [`AgeFilter`](#agefilter) * [`PrecisionFilter`](#precisionfilter) * [`PriceFilter`](#pricefilter) * [`ShuffleFilter`](#shufflefilter) @@ -645,6 +646,16 @@ The `refresh_period` setting allows to define the period (in seconds), at which }], ``` +#### AgeFilter + +Removes pairs that have been listed on the exchange for less than `min_days_listed` days (defaults to `10`). + +When pairs are first listed on an exchange they can suffer huge price drops and volatility +in the first few days while the pair goes through its price-discovery period. Bots can often +be caught out buying before the pair has finished dropping in price. + +This filter allows freqtrade to ignore pairs until they have been listed for at least `min_days_listed` days. + #### PrecisionFilter Filters low-value coins which would not allow setting stoplosses. @@ -692,6 +703,7 @@ The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, "number_assets": 20, "sort_key": "quoteVolume", }, + {"method": "AgeFilter", "min_days_listed": 10}, {"method": "PrecisionFilter"}, {"method": "PriceFilter", "low_price_ratio": 0.01}, {"method": "SpreadFilter", "max_spread_ratio": 0.005}, diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 6741e0605..92824f4c4 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -22,7 +22,8 @@ ORDERBOOK_SIDES = ['ask', 'bid'] ORDERTYPE_POSSIBILITIES = ['limit', 'market'] ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc'] AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', - 'PrecisionFilter', 'PriceFilter', 'ShuffleFilter', 'SpreadFilter'] + 'AgeFilter', 'PrecisionFilter', 'PriceFilter', + 'ShuffleFilter', 'SpreadFilter'] AVAILABLE_DATAHANDLERS = ['json', 'jsongz'] DRY_RUN_WALLET = 1000 MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons diff --git a/freqtrade/pairlist/AgeFilter.py b/freqtrade/pairlist/AgeFilter.py new file mode 100644 index 000000000..a23682599 --- /dev/null +++ b/freqtrade/pairlist/AgeFilter.py @@ -0,0 +1,76 @@ +""" +Minimum age (days listed) pair list filter +""" +import logging +import arrow +from typing import Any, Dict + +from freqtrade.misc import plural +from freqtrade.pairlist.IPairList import IPairList + + +logger = logging.getLogger(__name__) + + +class AgeFilter(IPairList): + + # Checked symbols cache (dictionary of ticker symbol => timestamp) + _symbolsChecked: Dict[str, int] = {} + + def __init__(self, exchange, pairlistmanager, + config: Dict[str, Any], pairlistconfig: Dict[str, Any], + pairlist_pos: int) -> None: + super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) + + self._min_days_listed = pairlistconfig.get('min_days_listed', 10) + self._enabled = self._min_days_listed >= 1 + + @property + def needstickers(self) -> bool: + """ + Boolean property defining if tickers are necessary. + If no Pairlist requires tickers, an empty List is passed + as tickers argument to filter_pairlist + """ + return True + + def short_desc(self) -> str: + """ + Short whitelist method description - used for startup-messages + """ + return (f"{self.name} - Filtering pairs with age less than " + f"{self._min_days_listed} {plural(self._min_days_listed, 'day')}.") + + def _validate_pair(self, ticker: dict) -> bool: + """ + Validate age for the ticker + :param ticker: ticker dict as returned from ccxt.load_markets() + :return: True if the pair can stay, False if it should be removed + """ + + # Check symbol in cache + if ticker['symbol'] in self._symbolsChecked: + return True + + since_ms = int(arrow.utcnow() + .floor('day') + .shift(days=-self._min_days_listed) + .float_timestamp) * 1000 + + daily_candles = self._exchange.get_historic_ohlcv(pair=ticker['symbol'], + timeframe='1d', + since_ms=since_ms) + + if daily_candles is not None: + if len(daily_candles) > self._min_days_listed: + # We have fetched at least the minimum required number of daily candles + # Add to cache, store the time we last checked this symbol + self._symbolsChecked[ticker['symbol']] = int(arrow.utcnow().float_timestamp) * 1000 + return True + else: + self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, " + f"because age is less than " + f"{self._min_days_listed} " + f"{plural(self._min_days_listed, 'day')}") + return False + return False diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index c67f7ae1c..87ecced21 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -57,6 +57,31 @@ def whitelist_conf_2(default_conf): return default_conf +@pytest.fixture(scope="function") +def whitelist_conf_3(default_conf): + default_conf['stake_currency'] = 'BTC' + default_conf['exchange']['pair_whitelist'] = [ + 'ETH/BTC', 'TKN/BTC', 'BLK/BTC', 'LTC/BTC', + 'BTT/BTC', 'HOT/BTC', 'FUEL/BTC', 'XRP/BTC' + ] + default_conf['exchange']['pair_blacklist'] = [ + 'BLK/BTC' + ] + default_conf['pairlists'] = [ + { + "method": "VolumePairList", + "number_assets": 5, + "sort_key": "quoteVolume", + "refresh_period": 0, + }, + { + "method": "AgeFilter", + "min_days_listed": 2 + } + ] + return default_conf + + @pytest.fixture(scope="function") def static_pl_conf(whitelist_conf): whitelist_conf['pairlists'] = [ @@ -220,11 +245,20 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): # No pair for ETH, all handlers ([{"method": "StaticPairList"}, {"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, + {"method": "AgeFilter", "min_days_listed": 2}, {"method": "PrecisionFilter"}, {"method": "PriceFilter", "low_price_ratio": 0.03}, {"method": "SpreadFilter", "max_spread_ratio": 0.005}, {"method": "ShuffleFilter"}], "ETH", []), + # AgeFilter and VolumePairList (require 2 days only, all should pass age test) + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, + {"method": "AgeFilter", "min_days_listed": 2}], + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC']), + # AgeFilter and VolumePairList (require 10 days, all should fail age test) + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, + {"method": "AgeFilter", "min_days_listed": 10}], + "BTC", []), # Precisionfilter and quote volume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}], @@ -272,7 +306,10 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): # ShuffleFilter, no seed ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "ShuffleFilter"}], - "USDT", 3), # whitelist_result is integer -- check only lenght of randomized pairlist + "USDT", 3), # whitelist_result is integer -- check only length of randomized pairlist + # AgeFilter only + ([{"method": "AgeFilter", "min_days_listed": 2}], + "BTC", 'filter_at_the_beginning'), # OperationalException expected # PrecisionFilter after StaticPairList ([{"method": "StaticPairList"}, {"method": "PrecisionFilter"}], @@ -307,8 +344,8 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): "BTC", 'static_in_the_middle'), ]) def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, - pairlists, base_currency, whitelist_result, - caplog) -> None: + ohlcv_history_list, pairlists, base_currency, + whitelist_result, caplog) -> None: whitelist_conf['pairlists'] = pairlists whitelist_conf['stake_currency'] = base_currency @@ -324,8 +361,12 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) mocker.patch.multiple('freqtrade.exchange.Exchange', get_tickers=tickers, - markets=PropertyMock(return_value=shitcoinmarkets), + markets=PropertyMock(return_value=shitcoinmarkets) ) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_historic_ohlcv=MagicMock(return_value=ohlcv_history_list), + ) # Set whitelist_result to None if pairlist is invalid and should produce exception if whitelist_result == 'filter_at_the_beginning': @@ -346,6 +387,10 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t len(whitelist) == whitelist_result for pairlist in pairlists: + if pairlist['method'] == 'AgeFilter' and pairlist['min_days_listed'] and \ + len(ohlcv_history_list) <= pairlist['min_days_listed']: + assert log_has_re(r'^Removed .* from whitelist, because age is less than ' + r'.* day.*', caplog) if pairlist['method'] == 'PrecisionFilter' and whitelist_result: assert log_has_re(r'^Removed .* from whitelist, because stop price .* ' r'would be <= stop limit.*', caplog) @@ -468,6 +513,29 @@ def test_volumepairlist_caching(mocker, markets, whitelist_conf, tickers): assert freqtrade.pairlists._pairlist_handlers[0]._last_refresh == lrf +def test_agefilter_caching(mocker, markets, whitelist_conf_3, tickers, ohlcv_history_list): + + mocker.patch.multiple('freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=markets), + exchange_has=MagicMock(return_value=True), + get_tickers=tickers + ) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + get_historic_ohlcv=MagicMock(return_value=ohlcv_history_list), + ) + + freqtrade = get_patched_freqtradebot(mocker, whitelist_conf_3) + assert freqtrade.exchange.get_historic_ohlcv.call_count == 0 + freqtrade.pairlists.refresh_pairlist() + assert freqtrade.exchange.get_historic_ohlcv.call_count > 0 + + previous_call_count = freqtrade.exchange.get_historic_ohlcv.call_count + freqtrade.pairlists.refresh_pairlist() + # Should not have increased since first call. + assert freqtrade.exchange.get_historic_ohlcv.call_count == previous_call_count + + def test_pairlistmanager_no_pairlist(mocker, markets, whitelist_conf, caplog): mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) From 6734269bfcb253171a84a51efeb212b18b7cbff1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 25 Jun 2020 19:22:50 +0200 Subject: [PATCH 2663/3421] Use >= to compare for winning trades --- freqtrade/rpc/rpc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 4cb432aea..d6f840aa9 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -284,7 +284,7 @@ class RPC: profit_ratio = trade.close_profit profit_closed_coin.append(trade.close_profit_abs) profit_closed_ratio.append(profit_ratio) - if trade.close_profit > 0: + if trade.close_profit >= 0: winning_trades += 1 else: losing_trades += 1 From da8e87660e35e50f9d955dce703cd4cdfe9d50ca Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 06:39:47 +0200 Subject: [PATCH 2664/3421] Add missing data fillup to FAQ --- docs/faq.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/faq.md b/docs/faq.md index 31c49171d..7e9551051 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -49,6 +49,16 @@ You can use the `/forcesell all` command from Telegram. Please look at the [advanced setup documentation Page](advanced-setup.md#running-multiple-instances-of-freqtrade). +### I'm getting "Missing data fillup" messages in the log + +This message is just a warning that the latest candles had missing candles in them. +Depending on the exchange, this can indicate that the pair didn't have a trade for `` - and the exchange does only return candles with volume. +On low volume pairs, this is a rather common occurance. + +If this happens for all pairs in the pairlist, this might indicate a recent exchange downtime. Please check your exchange's public channels for details. + +Independently of the reason, Freqtrade will fill up these candles with "empty" candles, where open, high, low and close are set to the previous candle close - and volume is empty. In a chart, this will look like a `_` - and is aligned with how exchanges usually represent 0 volume candles. + ### I'm getting the "RESTRICTED_MARKET" message in the log Currently known to happen for US Bittrex users. From 185fab7b57fc7e47e05e06022a2df1ef32f688aa Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 27 Jun 2020 15:26:55 +0200 Subject: [PATCH 2665/3421] Change some wordings in documentation Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/rest-api.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index 630c952b4..a8d902b53 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -237,13 +237,13 @@ Since the access token has a short timeout (15 min) - the `token/refresh` reques ## CORS All web-based frontends are subject to [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) - Cross-Origin Resource Sharing. -Since most request to the Freqtrade API must be authenticated, a proper CORS policy is key to avoid security problems. -Also, the Standard disallows `*` CORS policies for requests with credentials, so this setting must be done appropriately. +Since most of the requests to the Freqtrade API must be authenticated, a proper CORS policy is key to avoid security problems. +Also, the standard disallows `*` CORS policies for requests with credentials, so this setting must be set appropriately. -Users can configure this themselfs via the `CORS_origins` configuration setting. +Users can configure this themselves via the `CORS_origins` configuration setting. It consists of a list of allowed sites that are allowed to consume resources from the bot's API. -Assuming your Application would be deployed as `https://frequi.freqtrade.io/home/` - this would mean that the following configuration becomes necessary: +Assuming your application is deployed as `https://frequi.freqtrade.io/home/` - this would mean that the following configuration becomes necessary: ```jsonc { From e11d22a6a2d997da487a298d87b6de7927f33a10 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 27 Jun 2020 15:31:37 +0200 Subject: [PATCH 2666/3421] Apply suggestions from code review Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/faq.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index 7e9551051..151b2c054 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -52,12 +52,12 @@ Please look at the [advanced setup documentation Page](advanced-setup.md#running ### I'm getting "Missing data fillup" messages in the log This message is just a warning that the latest candles had missing candles in them. -Depending on the exchange, this can indicate that the pair didn't have a trade for `` - and the exchange does only return candles with volume. +Depending on the exchange, this can indicate that the pair didn't have a trade for the timeframe you are using - and the exchange does only return candles with volume. On low volume pairs, this is a rather common occurance. If this happens for all pairs in the pairlist, this might indicate a recent exchange downtime. Please check your exchange's public channels for details. -Independently of the reason, Freqtrade will fill up these candles with "empty" candles, where open, high, low and close are set to the previous candle close - and volume is empty. In a chart, this will look like a `_` - and is aligned with how exchanges usually represent 0 volume candles. +Irrespectively of the reason, Freqtrade will fill up these candles with "empty" candles, where open, high, low and close are set to the previous candle close - and volume is empty. In a chart, this will look like a `_` - and is aligned with how exchanges usually represent 0 volume candles. ### I'm getting the "RESTRICTED_MARKET" message in the log From e813573f270eb8e5579b063d8426954cd87c1451 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Sat, 27 Jun 2020 18:35:46 +0200 Subject: [PATCH 2667/3421] Warning message for open trades when stopping bot --- freqtrade/freqtradebot.py | 13 +++++++++++++ freqtrade/worker.py | 3 +++ 2 files changed, 16 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 289850709..2a1a1492c 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -175,6 +175,19 @@ class FreqtradeBot: if self.config['cancel_open_orders_on_exit']: self.cancel_all_open_orders() + def check_for_open_trades(self): + open_trades = Trade.get_trades([Trade.is_open == True, + ]).all() + + if len(open_trades) is not 0: + msg = { + f'type': RPCMessageType.WARNING_NOTIFICATION, + f'status': f'{len(open_trades)} OPEN TRADES ACTIVE\n\n' + f'Handle these trades manually or \'/start\' the bot again ' + f'and use \'/stopbuy\' to handle open trades gracefully.' + } + self.rpc.send_msg(msg) + def _refresh_active_whitelist(self, trades: List[Trade] = []) -> List[str]: """ Refresh active whitelist from pairlist or edge and extend it with diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 5bdb166c2..2fc206bd5 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -90,6 +90,9 @@ class Worker: if state == State.RUNNING: self.freqtrade.startup() + if state == State.STOPPED: + self.freqtrade.check_for_open_trades() + # Reset heartbeat timestamp to log the heartbeat message at # first throttling iteration when the state changes self._heartbeat_msg = 0 From 0642ab76bf0f69180a498a3b48e7b5ca25a4b26e Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Sat, 27 Jun 2020 18:40:44 +0200 Subject: [PATCH 2668/3421] Added information to the new function --- freqtrade/freqtradebot.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 2a1a1492c..060250b49 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -176,6 +176,10 @@ class FreqtradeBot: self.cancel_all_open_orders() def check_for_open_trades(self): + """ + Notify the user when he stops the bot + and there are still open trades active. + """ open_trades = Trade.get_trades([Trade.is_open == True, ]).all() From 48289e8ca78236f6e2b9dc7eeb67409117f3d0eb Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Sat, 27 Jun 2020 20:24:50 +0200 Subject: [PATCH 2669/3421] Added exchange name, removed capital letters --- freqtrade/freqtradebot.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 060250b49..e3bb5b70b 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -177,7 +177,7 @@ class FreqtradeBot: def check_for_open_trades(self): """ - Notify the user when he stops the bot + Notify the user when the bot is stopped and there are still open trades active. """ open_trades = Trade.get_trades([Trade.is_open == True, @@ -186,9 +186,10 @@ class FreqtradeBot: if len(open_trades) is not 0: msg = { f'type': RPCMessageType.WARNING_NOTIFICATION, - f'status': f'{len(open_trades)} OPEN TRADES ACTIVE\n\n' - f'Handle these trades manually or \'/start\' the bot again ' - f'and use \'/stopbuy\' to handle open trades gracefully.' + f'status': f'{len(open_trades)} open trades active.\n\n' + f'Handle these trades manually on {self.exchange.name}, ' + f'or \'/start\' the bot again and use \'/stopbuy\' ' + f'to handle open trades gracefully.' } self.rpc.send_msg(msg) From b938c536fa5cd61f86311e6e83d3901228cc91b9 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Sat, 27 Jun 2020 21:46:53 +0200 Subject: [PATCH 2670/3421] Trying to fix flake8 errors --- freqtrade/freqtradebot.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e3bb5b70b..6d9002c77 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -180,16 +180,16 @@ class FreqtradeBot: Notify the user when the bot is stopped and there are still open trades active. """ - open_trades = Trade.get_trades([Trade.is_open == True, - ]).all() + open_trades = Trade.get_trades([Trade.is_open == 1, + ]).all() - if len(open_trades) is not 0: + if len(open_trades) != 0: msg = { - f'type': RPCMessageType.WARNING_NOTIFICATION, - f'status': f'{len(open_trades)} open trades active.\n\n' + 'type': RPCMessageType.WARNING_NOTIFICATION, + 'status': f'{len(open_trades)} open trades active.\n\n' f'Handle these trades manually on {self.exchange.name}, ' f'or \'/start\' the bot again and use \'/stopbuy\' ' - f'to handle open trades gracefully.' + f'to handle open trades gracefully.', } self.rpc.send_msg(msg) From e5676867a871771dbc887f332464a1b0509e233f Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Sat, 27 Jun 2020 21:53:12 +0200 Subject: [PATCH 2671/3421] Trying to fix flake8 errors --- freqtrade/freqtradebot.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 6d9002c77..a0bfe5bc4 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -180,8 +180,7 @@ class FreqtradeBot: Notify the user when the bot is stopped and there are still open trades active. """ - open_trades = Trade.get_trades([Trade.is_open == 1, - ]).all() + open_trades = Trade.get_trades([Trade.is_open == 1]).all() if len(open_trades) != 0: msg = { From 118f0511719a9479b83f5010367debc66c5b695d Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Sun, 28 Jun 2020 11:02:50 +0200 Subject: [PATCH 2672/3421] Added message in cleanup and fixes --- freqtrade/freqtradebot.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a0bfe5bc4..e9e65ccac 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -119,6 +119,8 @@ class FreqtradeBot: if self.config['cancel_open_orders_on_exit']: self.cancel_all_open_orders() + self.check_for_open_trades() + self.rpc.cleanup() persistence.cleanup() @@ -185,10 +187,11 @@ class FreqtradeBot: if len(open_trades) != 0: msg = { 'type': RPCMessageType.WARNING_NOTIFICATION, - 'status': f'{len(open_trades)} open trades active.\n\n' - f'Handle these trades manually on {self.exchange.name}, ' - f'or \'/start\' the bot again and use \'/stopbuy\' ' - f'to handle open trades gracefully.', + 'status': f"{len(open_trades)} open trades active.\n\n" + f"Handle these trades manually on {self.exchange.name}, " + f"or '/start' the bot again and use '/stopbuy' " + f"to handle open trades gracefully. \n" + f"{'Trades are simulated.' if self.config['dry_run'] else ''}", } self.rpc.send_msg(msg) From 2c45114a64c31ff1abaed6e6d22bf0fe0561e2f4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 11:17:06 +0200 Subject: [PATCH 2673/3421] Implement DDos backoff (1s) --- freqtrade/exceptions.py | 7 +++++++ freqtrade/exchange/binance.py | 7 +++++-- freqtrade/exchange/common.py | 8 +++++++- freqtrade/exchange/exchange.py | 30 ++++++++++++++++++++++++++---- freqtrade/exchange/ftx.py | 11 +++++++++-- freqtrade/exchange/kraken.py | 6 +++++- tests/exchange/test_exchange.py | 19 +++++++++++++++++-- 7 files changed, 76 insertions(+), 12 deletions(-) diff --git a/freqtrade/exceptions.py b/freqtrade/exceptions.py index 7cfed87e8..bc84f30b8 100644 --- a/freqtrade/exceptions.py +++ b/freqtrade/exceptions.py @@ -45,6 +45,13 @@ class TemporaryError(FreqtradeException): """ +class DDosProtection(TemporaryError): + """ + Temporary error caused by DDOS protection. + Bot will wait for a second and then retry. + """ + + class StrategyError(FreqtradeException): """ Errors with custom user-code deteced. diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 4279f392c..3a98f161b 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -4,8 +4,9 @@ from typing import Dict import ccxt -from freqtrade.exceptions import (DependencyException, InvalidOrderException, - OperationalException, TemporaryError) +from freqtrade.exceptions import (DDosProtection, DependencyException, + InvalidOrderException, OperationalException, + TemporaryError) from freqtrade.exchange import Exchange logger = logging.getLogger(__name__) @@ -88,6 +89,8 @@ class Binance(Exchange): f'Could not create {ordertype} sell order on market {pair}. ' f'Tried to sell amount {amount} at rate {rate}. ' f'Message: {e}') from e + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not place sell order due to {e.__class__.__name__}. Message: {e}') from e diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index a10d41247..1f74412c6 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -1,6 +1,8 @@ +import asyncio import logging +import time -from freqtrade.exceptions import TemporaryError +from freqtrade.exceptions import DDosProtection, TemporaryError logger = logging.getLogger(__name__) @@ -99,6 +101,8 @@ def retrier_async(f): count -= 1 kwargs.update({'count': count}) logger.warning('retrying %s() still for %s times', f.__name__, count) + if isinstance(ex, DDosProtection): + await asyncio.sleep(1) return await wrapper(*args, **kwargs) else: logger.warning('Giving up retrying: %s()', f.__name__) @@ -117,6 +121,8 @@ def retrier(f): count -= 1 kwargs.update({'count': count}) logger.warning('retrying %s() still for %s times', f.__name__, count) + if isinstance(ex, DDosProtection): + time.sleep(1) return wrapper(*args, **kwargs) else: logger.warning('Giving up retrying: %s()', f.__name__) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index b62410c34..09f27e638 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -18,12 +18,13 @@ from ccxt.base.decimal_to_precision import (ROUND_DOWN, ROUND_UP, TICK_SIZE, TRUNCATE, decimal_to_precision) from pandas import DataFrame +from freqtrade.constants import ListPairsWithTimeframes from freqtrade.data.converter import ohlcv_to_dataframe, trades_dict_to_list -from freqtrade.exceptions import (DependencyException, InvalidOrderException, - OperationalException, TemporaryError) +from freqtrade.exceptions import (DDosProtection, DependencyException, + InvalidOrderException, OperationalException, + TemporaryError) from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async from freqtrade.misc import deep_merge_dicts, safe_value_fallback -from freqtrade.constants import ListPairsWithTimeframes CcxtModuleType = Any @@ -527,6 +528,8 @@ class Exchange: f'Could not create {ordertype} {side} order on market {pair}.' f'Tried to {side} amount {amount} at rate {rate}.' f'Message: {e}') from e + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not place {side} order due to {e.__class__.__name__}. Message: {e}') from e @@ -606,6 +609,8 @@ class Exchange: balances.pop("used", None) return balances + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not get balance due to {e.__class__.__name__}. Message: {e}') from e @@ -620,6 +625,8 @@ class Exchange: raise OperationalException( f'Exchange {self._api.name} does not support fetching tickers in batch. ' f'Message: {e}') from e + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not load tickers due to {e.__class__.__name__}. Message: {e}') from e @@ -633,6 +640,8 @@ class Exchange: raise DependencyException(f"Pair {pair} not available") data = self._api.fetch_ticker(pair) return data + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not load ticker due to {e.__class__.__name__}. Message: {e}') from e @@ -766,6 +775,8 @@ class Exchange: raise OperationalException( f'Exchange {self._api.name} does not support fetching historical ' f'candle (OHLCV) data. Message: {e}') from e + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError(f'Could not fetch historical candle (OHLCV) data ' f'for pair {pair} due to {e.__class__.__name__}. ' @@ -802,6 +813,8 @@ class Exchange: raise OperationalException( f'Exchange {self._api.name} does not support fetching historical trade data.' f'Message: {e}') from e + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError(f'Could not load trade history due to {e.__class__.__name__}. ' f'Message: {e}') from e @@ -948,6 +961,8 @@ class Exchange: except ccxt.InvalidOrder as e: raise InvalidOrderException( f'Could not cancel order. Message: {e}') from e + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not cancel order due to {e.__class__.__name__}. Message: {e}') from e @@ -1003,6 +1018,8 @@ class Exchange: except ccxt.InvalidOrder as e: raise InvalidOrderException( f'Tried to get an invalid order (id: {order_id}). Message: {e}') from e + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not get order due to {e.__class__.__name__}. Message: {e}') from e @@ -1027,6 +1044,8 @@ class Exchange: raise OperationalException( f'Exchange {self._api.name} does not support fetching order book.' f'Message: {e}') from e + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not get order book due to {e.__class__.__name__}. Message: {e}') from e @@ -1063,7 +1082,8 @@ class Exchange: matched_trades = [trade for trade in my_trades if trade['order'] == order_id] return matched_trades - + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not get trades due to {e.__class__.__name__}. Message: {e}') from e @@ -1080,6 +1100,8 @@ class Exchange: return self._api.calculate_fee(symbol=symbol, type=type, side=side, amount=amount, price=price, takerOrMaker=taker_or_maker)['rate'] + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not get fee info due to {e.__class__.__name__}. Message: {e}') from e diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index f16db96f5..7d0778ae5 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -4,8 +4,9 @@ from typing import Dict import ccxt -from freqtrade.exceptions import (DependencyException, InvalidOrderException, - OperationalException, TemporaryError) +from freqtrade.exceptions import (DDosProtection, DependencyException, + InvalidOrderException, OperationalException, + TemporaryError) from freqtrade.exchange import Exchange from freqtrade.exchange.common import retrier @@ -68,6 +69,8 @@ class Ftx(Exchange): f'Could not create {ordertype} sell order on market {pair}. ' f'Tried to create stoploss with amount {amount} at stoploss {stop_price}. ' f'Message: {e}') from e + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not place sell order due to {e.__class__.__name__}. Message: {e}') from e @@ -96,6 +99,8 @@ class Ftx(Exchange): except ccxt.InvalidOrder as e: raise InvalidOrderException( f'Tried to get an invalid order (id: {order_id}). Message: {e}') from e + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not get order due to {e.__class__.__name__}. Message: {e}') from e @@ -111,6 +116,8 @@ class Ftx(Exchange): except ccxt.InvalidOrder as e: raise InvalidOrderException( f'Could not cancel order. Message: {e}') from e + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not cancel order due to {e.__class__.__name__}. Message: {e}') from e diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index 932d82a27..7710b8e9b 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -4,7 +4,7 @@ from typing import Dict import ccxt -from freqtrade.exceptions import (DependencyException, InvalidOrderException, +from freqtrade.exceptions import (DependencyException, InvalidOrderException, DDosProtection, OperationalException, TemporaryError) from freqtrade.exchange import Exchange from freqtrade.exchange.common import retrier @@ -45,6 +45,8 @@ class Kraken(Exchange): balances[bal]['free'] = balances[bal]['total'] - balances[bal]['used'] return balances + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not get balance due to {e.__class__.__name__}. Message: {e}') from e @@ -93,6 +95,8 @@ class Kraken(Exchange): f'Could not create {ordertype} sell order on market {pair}. ' f'Tried to create stoploss with amount {amount} at stoploss {stop_price}. ' f'Message: {e}') from e + except ccxt.DDoSProtection as e: + raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: raise TemporaryError( f'Could not place sell order due to {e.__class__.__name__}. Message: {e}') from e diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 700aff969..f3a3a3789 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -4,14 +4,14 @@ import copy import logging from datetime import datetime, timezone from random import randint -from unittest.mock import MagicMock, Mock, PropertyMock +from unittest.mock import MagicMock, Mock, PropertyMock, patch import arrow import ccxt import pytest from pandas import DataFrame -from freqtrade.exceptions import (DependencyException, InvalidOrderException, +from freqtrade.exceptions import (DependencyException, InvalidOrderException, DDosProtection, OperationalException, TemporaryError) from freqtrade.exchange import Binance, Exchange, Kraken from freqtrade.exchange.common import API_RETRY_COUNT @@ -38,6 +38,14 @@ def get_mock_coro(return_value): def ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, fun, mock_ccxt_fun, **kwargs): + + with patch('freqtrade.exchange.common.time.sleep'): + with pytest.raises(DDosProtection): + api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.DDoSProtection("DDos")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) + getattr(exchange, fun)(**kwargs) + assert api_mock.__dict__[mock_ccxt_fun].call_count == API_RETRY_COUNT + 1 + with pytest.raises(TemporaryError): api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.NetworkError("DeaDBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) @@ -52,6 +60,13 @@ def ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, async def async_ccxt_exception(mocker, default_conf, api_mock, fun, mock_ccxt_fun, **kwargs): + + with patch('freqtrade.exchange.common.asyncio.sleep'): + with pytest.raises(DDosProtection): + api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.DDoSProtection("DeadBeef")) + exchange = get_patched_exchange(mocker, default_conf, api_mock) + await getattr(exchange, fun)(**kwargs) + with pytest.raises(TemporaryError): api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.NetworkError("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock) From 5bd4798ed0953ab1b94fd5a2cc388cdd82eccf50 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 11:56:29 +0200 Subject: [PATCH 2674/3421] Add retrier to stoploss calls (but without retrying) --- freqtrade/exchange/binance.py | 2 ++ freqtrade/exchange/common.py | 44 +++++++++++++++++++-------------- freqtrade/exchange/ftx.py | 1 + freqtrade/exchange/kraken.py | 1 + tests/exchange/test_binance.py | 15 ++++------- tests/exchange/test_exchange.py | 24 ++++++++++++------ tests/exchange/test_ftx.py | 16 ++++-------- tests/exchange/test_kraken.py | 15 +++-------- 8 files changed, 61 insertions(+), 57 deletions(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 3a98f161b..ee9566282 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -8,6 +8,7 @@ from freqtrade.exceptions import (DDosProtection, DependencyException, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange import Exchange +from freqtrade.exchange.common import retrier logger = logging.getLogger(__name__) @@ -40,6 +41,7 @@ class Binance(Exchange): """ return order['type'] == 'stop_loss_limit' and stop_loss > float(order['info']['stopPrice']) + @retrier(retries=0) def stoploss(self, pair: str, amount: float, stop_price: float, order_types: Dict) -> Dict: """ creates a stoploss limit order. diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index 1f74412c6..d931e1789 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -1,6 +1,7 @@ import asyncio import logging import time +from functools import wraps from freqtrade.exceptions import DDosProtection, TemporaryError @@ -110,21 +111,28 @@ def retrier_async(f): return wrapper -def retrier(f): - def wrapper(*args, **kwargs): - count = kwargs.pop('count', API_RETRY_COUNT) - try: - return f(*args, **kwargs) - except TemporaryError as ex: - logger.warning('%s() returned exception: "%s"', f.__name__, ex) - if count > 0: - count -= 1 - kwargs.update({'count': count}) - logger.warning('retrying %s() still for %s times', f.__name__, count) - if isinstance(ex, DDosProtection): - time.sleep(1) - return wrapper(*args, **kwargs) - else: - logger.warning('Giving up retrying: %s()', f.__name__) - raise ex - return wrapper +def retrier(_func=None, retries=API_RETRY_COUNT): + def decorator(f): + @wraps(f) + def wrapper(*args, **kwargs): + count = kwargs.pop('count', retries) + try: + return f(*args, **kwargs) + except TemporaryError as ex: + logger.warning('%s() returned exception: "%s"', f.__name__, ex) + if count > 0: + count -= 1 + kwargs.update({'count': count}) + logger.warning('retrying %s() still for %s times', f.__name__, count) + if isinstance(ex, DDosProtection): + time.sleep(1) + return wrapper(*args, **kwargs) + else: + logger.warning('Giving up retrying: %s()', f.__name__) + raise ex + return wrapper + # Support both @retrier and @retrier() syntax + if _func is None: + return decorator + else: + return decorator(_func) diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index 7d0778ae5..f1bd23b52 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -27,6 +27,7 @@ class Ftx(Exchange): """ return order['type'] == 'stop' and stop_loss > float(order['price']) + @retrier(retries=0) def stoploss(self, pair: str, amount: float, stop_price: float, order_types: Dict) -> Dict: """ Creates a stoploss order. diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index 7710b8e9b..01aa647b4 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -60,6 +60,7 @@ class Kraken(Exchange): """ return order['type'] == 'stop-loss' and stop_loss > float(order['price']) + @retrier(retries=0) def stoploss(self, pair: str, amount: float, stop_price: float, order_types: Dict) -> Dict: """ Creates a stoploss market order. diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index 52faa284b..72da708b4 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -5,8 +5,9 @@ import ccxt import pytest from freqtrade.exceptions import (DependencyException, InvalidOrderException, - OperationalException, TemporaryError) + OperationalException) from tests.conftest import get_patched_exchange +from tests.exchange.test_exchange import ccxt_exceptionhandlers @pytest.mark.parametrize('limitratio,expected', [ @@ -62,15 +63,9 @@ def test_stoploss_order_binance(default_conf, mocker, limitratio, expected): exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) - with pytest.raises(TemporaryError): - api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No connection")) - exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) - - with pytest.raises(OperationalException, match=r".*DeadBeef.*"): - api_mock.create_order = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) - exchange = get_patched_exchange(mocker, default_conf, api_mock, 'binance') - exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + ccxt_exceptionhandlers(mocker, default_conf, api_mock, "binance", + "stoploss", "create_order", retries=1, + pair='ETH/BTC', amount=1, stop_price=220, order_types={}) def test_stoploss_order_dry_run_binance(default_conf, mocker): diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index f3a3a3789..15ab0d3d9 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -37,20 +37,20 @@ def get_mock_coro(return_value): def ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, - fun, mock_ccxt_fun, **kwargs): + fun, mock_ccxt_fun, retries=API_RETRY_COUNT + 1, **kwargs): with patch('freqtrade.exchange.common.time.sleep'): with pytest.raises(DDosProtection): api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.DDoSProtection("DDos")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) getattr(exchange, fun)(**kwargs) - assert api_mock.__dict__[mock_ccxt_fun].call_count == API_RETRY_COUNT + 1 + assert api_mock.__dict__[mock_ccxt_fun].call_count == retries with pytest.raises(TemporaryError): api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.NetworkError("DeaDBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) getattr(exchange, fun)(**kwargs) - assert api_mock.__dict__[mock_ccxt_fun].call_count == API_RETRY_COUNT + 1 + assert api_mock.__dict__[mock_ccxt_fun].call_count == retries with pytest.raises(OperationalException): api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) @@ -59,19 +59,21 @@ def ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, assert api_mock.__dict__[mock_ccxt_fun].call_count == 1 -async def async_ccxt_exception(mocker, default_conf, api_mock, fun, mock_ccxt_fun, **kwargs): +async def async_ccxt_exception(mocker, default_conf, api_mock, fun, mock_ccxt_fun, + retries=API_RETRY_COUNT + 1, **kwargs): with patch('freqtrade.exchange.common.asyncio.sleep'): with pytest.raises(DDosProtection): api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.DDoSProtection("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock) await getattr(exchange, fun)(**kwargs) + assert api_mock.__dict__[mock_ccxt_fun].call_count == retries with pytest.raises(TemporaryError): api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.NetworkError("DeadBeef")) exchange = get_patched_exchange(mocker, default_conf, api_mock) await getattr(exchange, fun)(**kwargs) - assert api_mock.__dict__[mock_ccxt_fun].call_count == API_RETRY_COUNT + 1 + assert api_mock.__dict__[mock_ccxt_fun].call_count == retries with pytest.raises(OperationalException): api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) @@ -1142,9 +1144,10 @@ def test_get_balance_prod(default_conf, mocker, exchange_name): exchange.get_balance(currency='BTC') -def test_get_balances_dry_run(default_conf, mocker): +@pytest.mark.parametrize("exchange_name", EXCHANGES) +def test_get_balances_dry_run(default_conf, mocker, exchange_name): default_conf['dry_run'] = True - exchange = get_patched_exchange(mocker, default_conf) + exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) assert exchange.get_balances() == {} @@ -2126,6 +2129,13 @@ def test_get_markets(default_conf, mocker, markets, assert sorted(pairs.keys()) == sorted(expected_keys) +def test_get_markets_error(default_conf, mocker): + ex = get_patched_exchange(mocker, default_conf) + mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=None)) + with pytest.raises(OperationalException, match="Markets were not loaded."): + ex.get_markets('LTC', 'USDT', True, False) + + def test_timeframe_to_minutes(): assert timeframe_to_minutes("5m") == 5 assert timeframe_to_minutes("10m") == 10 diff --git a/tests/exchange/test_ftx.py b/tests/exchange/test_ftx.py index 75e98740c..1b7d68770 100644 --- a/tests/exchange/test_ftx.py +++ b/tests/exchange/test_ftx.py @@ -6,9 +6,9 @@ from unittest.mock import MagicMock import ccxt import pytest -from freqtrade.exceptions import (DependencyException, InvalidOrderException, - OperationalException, TemporaryError) +from freqtrade.exceptions import DependencyException, InvalidOrderException from tests.conftest import get_patched_exchange + from .test_exchange import ccxt_exceptionhandlers STOPLOSS_ORDERTYPE = 'stop' @@ -85,15 +85,9 @@ def test_stoploss_order_ftx(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, api_mock, 'ftx') exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) - with pytest.raises(TemporaryError): - api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No connection")) - exchange = get_patched_exchange(mocker, default_conf, api_mock, 'ftx') - exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) - - with pytest.raises(OperationalException, match=r".*DeadBeef.*"): - api_mock.create_order = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) - exchange = get_patched_exchange(mocker, default_conf, api_mock, 'ftx') - exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + ccxt_exceptionhandlers(mocker, default_conf, api_mock, "ftx", + "stoploss", "create_order", retries=1, + pair='ETH/BTC', amount=1, stop_price=220, order_types={}) def test_stoploss_order_dry_run_ftx(default_conf, mocker): diff --git a/tests/exchange/test_kraken.py b/tests/exchange/test_kraken.py index 0950979cf..9451c0b9e 100644 --- a/tests/exchange/test_kraken.py +++ b/tests/exchange/test_kraken.py @@ -6,8 +6,7 @@ from unittest.mock import MagicMock import ccxt import pytest -from freqtrade.exceptions import (DependencyException, InvalidOrderException, - OperationalException, TemporaryError) +from freqtrade.exceptions import DependencyException, InvalidOrderException from tests.conftest import get_patched_exchange from tests.exchange.test_exchange import ccxt_exceptionhandlers @@ -206,15 +205,9 @@ def test_stoploss_order_kraken(default_conf, mocker): exchange = get_patched_exchange(mocker, default_conf, api_mock, 'kraken') exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) - with pytest.raises(TemporaryError): - api_mock.create_order = MagicMock(side_effect=ccxt.NetworkError("No connection")) - exchange = get_patched_exchange(mocker, default_conf, api_mock, 'kraken') - exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) - - with pytest.raises(OperationalException, match=r".*DeadBeef.*"): - api_mock.create_order = MagicMock(side_effect=ccxt.BaseError("DeadBeef")) - exchange = get_patched_exchange(mocker, default_conf, api_mock, 'kraken') - exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + ccxt_exceptionhandlers(mocker, default_conf, api_mock, "kraken", + "stoploss", "create_order", retries=1, + pair='ETH/BTC', amount=1, stop_price=220, order_types={}) def test_stoploss_order_dry_run_kraken(default_conf, mocker): From e74d2af85788b2e52a4025105e5f6063f29b50e9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 15:44:58 +0200 Subject: [PATCH 2675/3421] Have TemporaryError a subCategory of DependencyException so it's safe to raise out of the exchange --- freqtrade/exceptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/exceptions.py b/freqtrade/exceptions.py index bc84f30b8..1ddb2a396 100644 --- a/freqtrade/exceptions.py +++ b/freqtrade/exceptions.py @@ -37,7 +37,7 @@ class InvalidOrderException(FreqtradeException): """ -class TemporaryError(FreqtradeException): +class TemporaryError(DependencyException): """ Temporary network or exchange related error. This could happen when an exchange is congested, unavailable, or the user From bf61bc9d8329aed5ecc7fa034ccb458c1c442434 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 16:01:40 +0200 Subject: [PATCH 2676/3421] Introduce ExchangeError --- freqtrade/data/dataprovider.py | 4 ++-- freqtrade/exceptions.py | 9 ++++++++- freqtrade/exchange/binance.py | 4 ++-- freqtrade/exchange/exchange.py | 12 ++++++------ freqtrade/exchange/ftx.py | 4 ++-- freqtrade/exchange/kraken.py | 7 ++++--- freqtrade/freqtradebot.py | 8 ++++---- freqtrade/rpc/rpc.py | 12 ++++++------ 8 files changed, 34 insertions(+), 26 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 058ca42da..b677f374b 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -10,7 +10,7 @@ from typing import Any, Dict, List, Optional from pandas import DataFrame from freqtrade.data.history import load_pair_history -from freqtrade.exceptions import DependencyException, OperationalException +from freqtrade.exceptions import ExchangeError, OperationalException from freqtrade.exchange import Exchange from freqtrade.state import RunMode from freqtrade.constants import ListPairsWithTimeframes @@ -105,7 +105,7 @@ class DataProvider: """ try: return self._exchange.fetch_ticker(pair) - except DependencyException: + except ExchangeError: return {} def orderbook(self, pair: str, maximum: int) -> Dict[str, List]: diff --git a/freqtrade/exceptions.py b/freqtrade/exceptions.py index 1ddb2a396..995a2cdb7 100644 --- a/freqtrade/exceptions.py +++ b/freqtrade/exceptions.py @@ -37,7 +37,14 @@ class InvalidOrderException(FreqtradeException): """ -class TemporaryError(DependencyException): +class ExchangeError(DependencyException): + """ + Error raised out of the exchange. + Has multiple Errors to determine the appropriate error. + """ + + +class TemporaryError(ExchangeError): """ Temporary network or exchange related error. This could happen when an exchange is congested, unavailable, or the user diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index ee9566282..08e84ee34 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -4,7 +4,7 @@ from typing import Dict import ccxt -from freqtrade.exceptions import (DDosProtection, DependencyException, +from freqtrade.exceptions import (DDosProtection, ExchangeError, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange import Exchange @@ -80,7 +80,7 @@ class Binance(Exchange): 'stop price: %s. limit: %s', pair, stop_price, rate) return order except ccxt.InsufficientFunds as e: - raise DependencyException( + raise ExchangeError( f'Insufficient funds to create {ordertype} sell order on market {pair}.' f'Tried to sell amount {amount} at rate {rate}. ' f'Message: {e}') from e diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 09f27e638..d48e47909 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -20,7 +20,7 @@ from pandas import DataFrame from freqtrade.constants import ListPairsWithTimeframes from freqtrade.data.converter import ohlcv_to_dataframe, trades_dict_to_list -from freqtrade.exceptions import (DDosProtection, DependencyException, +from freqtrade.exceptions import (DDosProtection, ExchangeError, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async @@ -352,7 +352,7 @@ class Exchange: for pair in [f"{curr_1}/{curr_2}", f"{curr_2}/{curr_1}"]: if pair in self.markets and self.markets[pair].get('active'): return pair - raise DependencyException(f"Could not combine {curr_1} and {curr_2} to get a valid pair.") + raise ExchangeError(f"Could not combine {curr_1} and {curr_2} to get a valid pair.") def validate_timeframes(self, timeframe: Optional[str]) -> None: """ @@ -519,12 +519,12 @@ class Exchange: amount, rate_for_order, params) except ccxt.InsufficientFunds as e: - raise DependencyException( + raise ExchangeError( f'Insufficient funds to create {ordertype} {side} order on market {pair}.' f'Tried to {side} amount {amount} at rate {rate}.' f'Message: {e}') from e except ccxt.InvalidOrder as e: - raise DependencyException( + raise ExchangeError( f'Could not create {ordertype} {side} order on market {pair}.' f'Tried to {side} amount {amount} at rate {rate}.' f'Message: {e}') from e @@ -637,7 +637,7 @@ class Exchange: def fetch_ticker(self, pair: str) -> dict: try: if pair not in self._api.markets or not self._api.markets[pair].get('active'): - raise DependencyException(f"Pair {pair} not available") + raise ExchangeError(f"Pair {pair} not available") data = self._api.fetch_ticker(pair) return data except ccxt.DDoSProtection as e: @@ -1151,7 +1151,7 @@ class Exchange: fee_to_quote_rate = safe_value_fallback(tick, tick, 'last', 'ask') return round((order['fee']['cost'] * fee_to_quote_rate) / order['cost'], 8) - except DependencyException: + except ExchangeError: return None def extract_cost_curr_rate(self, order: Dict) -> Tuple[float, str, Optional[float]]: diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index f1bd23b52..be815d336 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -4,7 +4,7 @@ from typing import Dict import ccxt -from freqtrade.exceptions import (DDosProtection, DependencyException, +from freqtrade.exceptions import (DDosProtection, ExchangeError, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange import Exchange @@ -61,7 +61,7 @@ class Ftx(Exchange): 'stop price: %s.', pair, stop_price) return order except ccxt.InsufficientFunds as e: - raise DependencyException( + raise ExchangeError( f'Insufficient funds to create {ordertype} sell order on market {pair}. ' f'Tried to create stoploss with amount {amount} at stoploss {stop_price}. ' f'Message: {e}') from e diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index 01aa647b4..2ca4ba167 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -4,8 +4,9 @@ from typing import Dict import ccxt -from freqtrade.exceptions import (DependencyException, InvalidOrderException, DDosProtection, - OperationalException, TemporaryError) +from freqtrade.exceptions import (DDosProtection, ExchangeError, + InvalidOrderException, OperationalException, + TemporaryError) from freqtrade.exchange import Exchange from freqtrade.exchange.common import retrier @@ -87,7 +88,7 @@ class Kraken(Exchange): 'stop price: %s.', pair, stop_price) return order except ccxt.InsufficientFunds as e: - raise DependencyException( + raise ExchangeError( f'Insufficient funds to create {ordertype} sell order on market {pair}.' f'Tried to create stoploss with amount {amount} at stoploss {stop_price}. ' f'Message: {e}') from e diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 289850709..2e59d915d 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -11,14 +11,14 @@ from typing import Any, Dict, List, Optional import arrow from cachetools import TTLCache -from requests.exceptions import RequestException from freqtrade import __version__, constants, persistence from freqtrade.configuration import validate_config_consistency from freqtrade.data.converter import order_book_to_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.edge import Edge -from freqtrade.exceptions import DependencyException, InvalidOrderException, PricingError +from freqtrade.exceptions import (DependencyException, ExchangeError, + InvalidOrderException, PricingError) from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date from freqtrade.misc import safe_value_fallback from freqtrade.pairlist.pairlistmanager import PairListManager @@ -755,7 +755,7 @@ class FreqtradeBot: logger.warning('Selling the trade forcefully') self.execute_sell(trade, trade.stop_loss, sell_reason=SellType.EMERGENCY_SELL) - except DependencyException: + except ExchangeError: trade.stoploss_order_id = None logger.exception('Unable to place a stoploss order on exchange.') return False @@ -891,7 +891,7 @@ class FreqtradeBot: if not trade.open_order_id: continue order = self.exchange.get_order(trade.open_order_id, trade.pair) - except (RequestException, DependencyException, InvalidOrderException): + except (ExchangeError, InvalidOrderException): logger.info('Cannot query order for %s due to %s', trade, traceback.format_exc()) continue diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index aeaf82662..aab3da258 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -11,7 +11,7 @@ from typing import Any, Dict, List, Optional, Tuple import arrow from numpy import NAN, mean -from freqtrade.exceptions import DependencyException, TemporaryError +from freqtrade.exceptions import ExchangeError, PricingError from freqtrade.misc import shorten_date from freqtrade.persistence import Trade from freqtrade.rpc.fiat_convert import CryptoToFiatConverter @@ -130,7 +130,7 @@ class RPC: # calculate profit and send message to user try: current_rate = self._freqtrade.get_sell_rate(trade.pair, False) - except DependencyException: + except (ExchangeError, PricingError): current_rate = NAN current_profit = trade.calc_profit_ratio(current_rate) current_profit_abs = trade.calc_profit(current_rate) @@ -174,7 +174,7 @@ class RPC: # calculate profit and send message to user try: current_rate = self._freqtrade.get_sell_rate(trade.pair, False) - except DependencyException: + except (PricingError, ExchangeError): current_rate = NAN trade_percent = (100 * trade.calc_profit_ratio(current_rate)) trade_profit = trade.calc_profit(current_rate) @@ -286,7 +286,7 @@ class RPC: # Get current rate try: current_rate = self._freqtrade.get_sell_rate(trade.pair, False) - except DependencyException: + except (PricingError, ExchangeError): current_rate = NAN profit_ratio = trade.calc_profit_ratio(rate=current_rate) @@ -352,7 +352,7 @@ class RPC: total = 0.0 try: tickers = self._freqtrade.exchange.get_tickers() - except (TemporaryError, DependencyException): + except (ExchangeError): raise RPCException('Error getting current tickers.') self._freqtrade.wallets.update(require_update=False) @@ -373,7 +373,7 @@ class RPC: if pair.startswith(stake_currency): rate = 1.0 / rate est_stake = rate * balance.total - except (TemporaryError, DependencyException): + except (ExchangeError): logger.warning(f" Could not get rate for pair {coin}.") continue total = total + (est_stake or 0) From 29d3ff1bc922690b2aae5865cc574613ec454631 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 16:04:04 +0200 Subject: [PATCH 2677/3421] Adjust tests to work with ExchangeError --- tests/data/test_dataprovider.py | 6 +++--- tests/exchange/test_exchange.py | 2 +- tests/rpc/test_rpc.py | 11 ++++++----- tests/test_freqtradebot.py | 15 +++++++-------- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index def3ad535..2f91dcd38 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -1,11 +1,11 @@ from unittest.mock import MagicMock -from pandas import DataFrame import pytest +from pandas import DataFrame from freqtrade.data.dataprovider import DataProvider +from freqtrade.exceptions import ExchangeError, OperationalException from freqtrade.pairlist.pairlistmanager import PairListManager -from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.state import RunMode from tests.conftest import get_patched_exchange @@ -164,7 +164,7 @@ def test_ticker(mocker, default_conf, tickers): assert 'symbol' in res assert res['symbol'] == 'ETH/BTC' - ticker_mock = MagicMock(side_effect=DependencyException('Pair not found')) + ticker_mock = MagicMock(side_effect=ExchangeError('Pair not found')) mocker.patch("freqtrade.exchange.Exchange.fetch_ticker", ticker_mock) exchange = get_patched_exchange(mocker, default_conf) dp = DataProvider(default_conf, exchange) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 15ab0d3d9..64ea317aa 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -64,7 +64,7 @@ async def async_ccxt_exception(mocker, default_conf, api_mock, fun, mock_ccxt_fu with patch('freqtrade.exchange.common.asyncio.sleep'): with pytest.raises(DDosProtection): - api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.DDoSProtection("DeadBeef")) + api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.DDoSProtection("Dooh")) exchange = get_patched_exchange(mocker, default_conf, api_mock) await getattr(exchange, fun)(**kwargs) assert api_mock.__dict__[mock_ccxt_fun].call_count == retries diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 0ffbaa72a..45243e5e6 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -8,12 +8,13 @@ import pytest from numpy import isnan from freqtrade.edge import PairInfo -from freqtrade.exceptions import DependencyException, TemporaryError +from freqtrade.exceptions import ExchangeError, TemporaryError from freqtrade.persistence import Trade from freqtrade.rpc import RPC, RPCException from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.state import State -from tests.conftest import get_patched_freqtradebot, patch_get_signal, create_mock_trades +from tests.conftest import (create_mock_trades, get_patched_freqtradebot, + patch_get_signal) # Functions for recurrent object patching @@ -106,7 +107,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: } mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', - MagicMock(side_effect=DependencyException("Pair 'ETH/BTC' not available"))) + MagicMock(side_effect=ExchangeError("Pair 'ETH/BTC' not available"))) results = rpc._rpc_trade_status() assert isnan(results[0]['current_profit']) assert isnan(results[0]['current_rate']) @@ -209,7 +210,7 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None: assert '-0.41% (-0.06)' == result[0][3] mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', - MagicMock(side_effect=DependencyException("Pair 'ETH/BTC' not available"))) + MagicMock(side_effect=ExchangeError("Pair 'ETH/BTC' not available"))) result, headers = rpc._rpc_status_table(default_conf['stake_currency'], 'USD') assert 'instantly' == result[0][2] assert 'ETH/BTC' in result[0][1] @@ -365,7 +366,7 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, # Test non-available pair mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', - MagicMock(side_effect=DependencyException("Pair 'ETH/BTC' not available"))) + MagicMock(side_effect=ExchangeError("Pair 'ETH/BTC' not available"))) stats = rpc._rpc_trade_statistics(stake_currency, fiat_display_currency) assert stats['trade_count'] == 2 assert stats['first_trade_date'] == 'just now' diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5d83c893e..f2967411b 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -9,13 +9,12 @@ from unittest.mock import ANY, MagicMock, PropertyMock import arrow import pytest -import requests from freqtrade.constants import (CANCEL_REASON, MATH_CLOSE_PREC, UNLIMITED_STAKE_AMOUNT) -from freqtrade.exceptions import (DependencyException, InvalidOrderException, - OperationalException, PricingError, - TemporaryError) +from freqtrade.exceptions import (DependencyException, ExchangeError, + InvalidOrderException, OperationalException, + PricingError, TemporaryError) from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import Trade from freqtrade.rpc import RPCMessageType @@ -1172,7 +1171,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, mocker.patch( 'freqtrade.exchange.Exchange.stoploss', - side_effect=DependencyException() + side_effect=ExchangeError() ) trade.is_open = True freqtrade.handle_stoploss_on_exchange(trade) @@ -1216,7 +1215,7 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, get_stoploss_order=MagicMock(return_value={'status': 'canceled'}), - stoploss=MagicMock(side_effect=DependencyException()), + stoploss=MagicMock(side_effect=ExchangeError()), ) freqtrade = FreqtradeBot(default_conf) patch_get_signal(freqtrade) @@ -1442,7 +1441,7 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c # Fail creating stoploss order caplog.clear() cancel_mock = mocker.patch("freqtrade.exchange.Exchange.cancel_stoploss_order", MagicMock()) - mocker.patch("freqtrade.exchange.Exchange.stoploss", side_effect=DependencyException()) + mocker.patch("freqtrade.exchange.Exchange.stoploss", side_effect=ExchangeError()) freqtrade.handle_trailing_stoploss_on_exchange(trade, stoploss_order_hanging) assert cancel_mock.call_count == 1 assert log_has_re(r"Could not create trailing stoploss order for pair ETH/BTC\..*", caplog) @@ -2320,7 +2319,7 @@ def test_check_handle_timedout_exception(default_conf, ticker, open_trade, mocke mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, - get_order=MagicMock(side_effect=requests.exceptions.RequestException('Oh snap')), + get_order=MagicMock(side_effect=ExchangeError('Oh snap')), cancel_order=cancel_order_mock ) freqtrade = FreqtradeBot(default_conf) From e040c518cac73e6ee1ad551757eef93407fc6fdc Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 16:18:39 +0200 Subject: [PATCH 2678/3421] Dynamic backoff on DDos errors --- freqtrade/exchange/common.py | 11 +++++++++-- tests/exchange/test_exchange.py | 14 +++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index d931e1789..b0f6b14e3 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -91,6 +91,13 @@ MAP_EXCHANGE_CHILDCLASS = { } +def calculate_backoff(retry, max_retries): + """ + Calculate backoff + """ + return retry ** 2 + 1 + + def retrier_async(f): async def wrapper(*args, **kwargs): count = kwargs.pop('count', API_RETRY_COUNT) @@ -125,13 +132,13 @@ def retrier(_func=None, retries=API_RETRY_COUNT): kwargs.update({'count': count}) logger.warning('retrying %s() still for %s times', f.__name__, count) if isinstance(ex, DDosProtection): - time.sleep(1) + time.sleep(calculate_backoff(count, retries)) return wrapper(*args, **kwargs) else: logger.warning('Giving up retrying: %s()', f.__name__) raise ex return wrapper - # Support both @retrier and @retrier() syntax + # Support both @retrier and @retrier(retries=2) syntax if _func is None: return decorator else: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 64ea317aa..358452caf 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -14,7 +14,7 @@ from pandas import DataFrame from freqtrade.exceptions import (DependencyException, InvalidOrderException, DDosProtection, OperationalException, TemporaryError) from freqtrade.exchange import Binance, Exchange, Kraken -from freqtrade.exchange.common import API_RETRY_COUNT +from freqtrade.exchange.common import API_RETRY_COUNT, calculate_backoff from freqtrade.exchange.exchange import (market_is_active, symbol_is_pair, timeframe_to_minutes, timeframe_to_msecs, @@ -2296,3 +2296,15 @@ def test_calculate_fee_rate(mocker, default_conf, order, expected) -> None: ex = get_patched_exchange(mocker, default_conf) assert ex.calculate_fee_rate(order) == expected + + +@pytest.mark.parametrize('retry,max_retries,expected', [ + (0, 3, 1), + (1, 3, 2), + (2, 3, 5), + (3, 3, 10), + (0, 1, 1), + (1, 1, 2), +]) +def test_calculate_backoff(retry, max_retries, expected): + assert calculate_backoff(retry, max_retries) == expected From 92c70fb903f59d9651f50efb3061f36a32d13cf3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 16:27:35 +0200 Subject: [PATCH 2679/3421] Rename get_order to fetch_order (to align to ccxt naming) --- freqtrade/exchange/exchange.py | 10 +++--- freqtrade/freqtradebot.py | 6 ++-- freqtrade/persistence.py | 2 +- freqtrade/rpc/rpc.py | 4 +-- tests/exchange/test_exchange.py | 12 +++---- tests/rpc/test_rpc.py | 8 ++--- tests/test_freqtradebot.py | 60 ++++++++++++++++----------------- 7 files changed, 51 insertions(+), 51 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index d48e47909..5a19b34af 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -946,7 +946,7 @@ class Exchange: def check_order_canceled_empty(self, order: Dict) -> bool: """ Verify if an order has been cancelled without being partially filled - :param order: Order dict as returned from get_order() + :param order: Order dict as returned from fetch_order() :return: True if order has been cancelled without being filled, False otherwise. """ return order.get('status') in ('closed', 'canceled') and order.get('filled') == 0.0 @@ -983,7 +983,7 @@ class Exchange: """ Cancel order returning a result. Creates a fake result if cancel order returns a non-usable result - and get_order does not work (certain exchanges don't return cancelled orders) + and fetch_order does not work (certain exchanges don't return cancelled orders) :param order_id: Orderid to cancel :param pair: Pair corresponding to order_id :param amount: Amount to use for fake response @@ -996,7 +996,7 @@ class Exchange: except InvalidOrderException: logger.warning(f"Could not cancel order {order_id}.") try: - order = self.get_order(order_id, pair) + order = self.fetch_order(order_id, pair) except InvalidOrderException: logger.warning(f"Could not fetch cancelled order {order_id}.") order = {'fee': {}, 'status': 'canceled', 'amount': amount, 'info': {}} @@ -1004,7 +1004,7 @@ class Exchange: return order @retrier - def get_order(self, order_id: str, pair: str) -> Dict: + def fetch_order(self, order_id: str, pair: str) -> Dict: if self._config['dry_run']: try: order = self._dry_run_open_orders[order_id] @@ -1027,7 +1027,7 @@ class Exchange: raise OperationalException(e) from e # Assign method to get_stoploss_order to allow easy overriding in other classes - get_stoploss_order = get_order + get_stoploss_order = fetch_order @retrier def fetch_l2_order_book(self, pair: str, limit: int = 100) -> dict: diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 2e59d915d..0d9c5e27c 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -890,7 +890,7 @@ class FreqtradeBot: try: if not trade.open_order_id: continue - order = self.exchange.get_order(trade.open_order_id, trade.pair) + order = self.exchange.fetch_order(trade.open_order_id, trade.pair) except (ExchangeError, InvalidOrderException): logger.info('Cannot query order for %s due to %s', trade, traceback.format_exc()) continue @@ -923,7 +923,7 @@ class FreqtradeBot: for trade in Trade.get_open_order_trades(): try: - order = self.exchange.get_order(trade.open_order_id, trade.pair) + order = self.exchange.fetch_order(trade.open_order_id, trade.pair) except (DependencyException, InvalidOrderException): logger.info('Cannot query order for %s due to %s', trade, traceback.format_exc()) continue @@ -1202,7 +1202,7 @@ class FreqtradeBot: # Update trade with order values logger.info('Found open order for %s', trade) try: - order = action_order or self.exchange.get_order(order_id, trade.pair) + order = action_order or self.exchange.fetch_order(order_id, trade.pair) except InvalidOrderException as exception: logger.warning('Unable to fetch order %s: %s', order_id, exception) return False diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 097a2f984..a6c1de402 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -360,7 +360,7 @@ class Trade(_DECL_BASE): def update(self, order: Dict) -> None: """ Updates this entity with amount and actual open/close rates. - :param order: order retrieved by exchange.get_order() + :param order: order retrieved by exchange.fetch_order() :return: None """ order_type = order['type'] diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index aab3da258..cc5f35f0d 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -126,7 +126,7 @@ class RPC: for trade in trades: order = None if trade.open_order_id: - order = self._freqtrade.exchange.get_order(trade.open_order_id, trade.pair) + order = self._freqtrade.exchange.fetch_order(trade.open_order_id, trade.pair) # calculate profit and send message to user try: current_rate = self._freqtrade.get_sell_rate(trade.pair, False) @@ -442,7 +442,7 @@ class RPC: def _exec_forcesell(trade: Trade) -> None: # Check if there is there is an open order if trade.open_order_id: - order = self._freqtrade.exchange.get_order(trade.open_order_id, trade.pair) + order = self._freqtrade.exchange.fetch_order(trade.open_order_id, trade.pair) # Cancel open LIMIT_BUY orders and close trade if order and order['status'] == 'open' \ diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 358452caf..cf38b3cd5 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1865,31 +1865,31 @@ def test_cancel_stoploss_order(default_conf, mocker, exchange_name): @pytest.mark.parametrize("exchange_name", EXCHANGES) -def test_get_order(default_conf, mocker, exchange_name): +def test_fetch_order(default_conf, mocker, exchange_name): default_conf['dry_run'] = True order = MagicMock() order.myid = 123 exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) exchange._dry_run_open_orders['X'] = order - assert exchange.get_order('X', 'TKN/BTC').myid == 123 + assert exchange.fetch_order('X', 'TKN/BTC').myid == 123 with pytest.raises(InvalidOrderException, match=r'Tried to get an invalid dry-run-order.*'): - exchange.get_order('Y', 'TKN/BTC') + exchange.fetch_order('Y', 'TKN/BTC') default_conf['dry_run'] = False api_mock = MagicMock() api_mock.fetch_order = MagicMock(return_value=456) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) - assert exchange.get_order('X', 'TKN/BTC') == 456 + assert exchange.fetch_order('X', 'TKN/BTC') == 456 with pytest.raises(InvalidOrderException): api_mock.fetch_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) - exchange.get_order(order_id='_', pair='TKN/BTC') + exchange.fetch_order(order_id='_', pair='TKN/BTC') assert api_mock.fetch_order.call_count == 1 ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, - 'get_order', 'fetch_order', + 'fetch_order', 'fetch_order', order_id='_', pair='TKN/BTC') diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 45243e5e6..de9327ba9 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -607,7 +607,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: 'freqtrade.exchange.Exchange', fetch_ticker=ticker, cancel_order=cancel_order_mock, - get_order=MagicMock( + fetch_order=MagicMock( return_value={ 'status': 'closed', 'type': 'limit', @@ -653,7 +653,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: trade = Trade.query.filter(Trade.id == '1').first() filled_amount = trade.amount / 2 mocker.patch( - 'freqtrade.exchange.Exchange.get_order', + 'freqtrade.exchange.Exchange.fetch_order', return_value={ 'status': 'open', 'type': 'limit', @@ -672,7 +672,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: amount = trade.amount # make an limit-buy open trade, if there is no 'filled', don't sell it mocker.patch( - 'freqtrade.exchange.Exchange.get_order', + 'freqtrade.exchange.Exchange.fetch_order', return_value={ 'status': 'open', 'type': 'limit', @@ -689,7 +689,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: freqtradebot.enter_positions() # make an limit-sell open trade mocker.patch( - 'freqtrade.exchange.Exchange.get_order', + 'freqtrade.exchange.Exchange.fetch_order', return_value={ 'status': 'open', 'type': 'limit', diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index f2967411b..3b00f3371 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -762,7 +762,7 @@ def test_process_trade_creation(default_conf, ticker, limit_buy_order, 'freqtrade.exchange.Exchange', fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), - get_order=MagicMock(return_value=limit_buy_order), + fetch_order=MagicMock(return_value=limit_buy_order), get_fee=fee, ) freqtrade = FreqtradeBot(default_conf) @@ -831,7 +831,7 @@ def test_process_trade_handling(default_conf, ticker, limit_buy_order, fee, mock 'freqtrade.exchange.Exchange', fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), - get_order=MagicMock(return_value=limit_buy_order), + fetch_order=MagicMock(return_value=limit_buy_order), get_fee=fee, ) freqtrade = FreqtradeBot(default_conf) @@ -858,7 +858,7 @@ def test_process_trade_no_whitelist_pair(default_conf, ticker, limit_buy_order, 'freqtrade.exchange.Exchange', fetch_ticker=ticker, buy=MagicMock(return_value={'id': limit_buy_order['id']}), - get_order=MagicMock(return_value=limit_buy_order), + fetch_order=MagicMock(return_value=limit_buy_order), get_fee=fee, ) freqtrade = FreqtradeBot(default_conf) @@ -1063,7 +1063,7 @@ def test_add_stoploss_on_exchange(mocker, default_conf, limit_buy_order) -> None patch_RPCManager(mocker) patch_exchange(mocker) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_trade', MagicMock(return_value=True)) - mocker.patch('freqtrade.exchange.Exchange.get_order', return_value=limit_buy_order) + mocker.patch('freqtrade.exchange.Exchange.fetch_order', return_value=limit_buy_order) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=[]) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_real_amount', return_value=limit_buy_order['amount']) @@ -1178,7 +1178,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, assert log_has('Unable to place a stoploss order on exchange.', caplog) assert trade.stoploss_order_id is None - # Fifth case: get_order returns InvalidOrder + # Fifth case: fetch_order returns InvalidOrder # It should try to add stoploss order trade.stoploss_order_id = 100 stoploss.reset_mock() @@ -1193,7 +1193,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, trade.stoploss_order_id = None trade.is_open = False stoploss.reset_mock() - mocker.patch('freqtrade.exchange.Exchange.get_order') + mocker.patch('freqtrade.exchange.Exchange.fetch_order') mocker.patch('freqtrade.exchange.Exchange.stoploss', stoploss) assert freqtrade.handle_stoploss_on_exchange(trade) is False assert stoploss.call_count == 0 @@ -1248,7 +1248,7 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=sell_mock, get_fee=fee, - get_order=MagicMock(return_value={'status': 'canceled'}), + fetch_order=MagicMock(return_value={'status': 'canceled'}), stoploss=MagicMock(side_effect=InvalidOrderException()), ) freqtrade = FreqtradeBot(default_conf) @@ -1588,7 +1588,7 @@ def test_exit_positions(mocker, default_conf, limit_buy_order, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_trade', MagicMock(return_value=True)) - mocker.patch('freqtrade.exchange.Exchange.get_order', return_value=limit_buy_order) + mocker.patch('freqtrade.exchange.Exchange.fetch_order', return_value=limit_buy_order) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=[]) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_real_amount', return_value=limit_buy_order['amount']) @@ -1612,7 +1612,7 @@ def test_exit_positions(mocker, default_conf, limit_buy_order, caplog) -> None: def test_exit_positions_exception(mocker, default_conf, limit_buy_order, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.exchange.Exchange.get_order', return_value=limit_buy_order) + mocker.patch('freqtrade.exchange.Exchange.fetch_order', return_value=limit_buy_order) trade = MagicMock() trade.open_order_id = None @@ -1633,7 +1633,7 @@ def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> No freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_trade', MagicMock(return_value=True)) - mocker.patch('freqtrade.exchange.Exchange.get_order', return_value=limit_buy_order) + mocker.patch('freqtrade.exchange.Exchange.fetch_order', return_value=limit_buy_order) mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=[]) mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_real_amount', return_value=limit_buy_order['amount']) @@ -1672,8 +1672,8 @@ def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> No def test_update_trade_state_withorderdict(default_conf, trades_for_order, limit_buy_order, fee, mocker): mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) - # get_order should not be called!! - mocker.patch('freqtrade.exchange.Exchange.get_order', MagicMock(side_effect=ValueError)) + # fetch_order should not be called!! + mocker.patch('freqtrade.exchange.Exchange.fetch_order', MagicMock(side_effect=ValueError)) patch_exchange(mocker) Trade.session = MagicMock() amount = sum(x['amount'] for x in trades_for_order) @@ -1697,8 +1697,8 @@ def test_update_trade_state_withorderdict_rounding_fee(default_conf, trades_for_ limit_buy_order, mocker, caplog): trades_for_order[0]['amount'] = limit_buy_order['amount'] + 1e-14 mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) - # get_order should not be called!! - mocker.patch('freqtrade.exchange.Exchange.get_order', MagicMock(side_effect=ValueError)) + # fetch_order should not be called!! + mocker.patch('freqtrade.exchange.Exchange.fetch_order', MagicMock(side_effect=ValueError)) patch_exchange(mocker) Trade.session = MagicMock() amount = sum(x['amount'] for x in trades_for_order) @@ -1723,7 +1723,7 @@ def test_update_trade_state_withorderdict_rounding_fee(default_conf, trades_for_ def test_update_trade_state_exception(mocker, default_conf, limit_buy_order, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.exchange.Exchange.get_order', return_value=limit_buy_order) + mocker.patch('freqtrade.exchange.Exchange.fetch_order', return_value=limit_buy_order) trade = MagicMock() trade.open_order_id = '123' @@ -1740,7 +1740,7 @@ def test_update_trade_state_exception(mocker, default_conf, def test_update_trade_state_orderexception(mocker, default_conf, caplog) -> None: freqtrade = get_patched_freqtradebot(mocker, default_conf) - mocker.patch('freqtrade.exchange.Exchange.get_order', + mocker.patch('freqtrade.exchange.Exchange.fetch_order', MagicMock(side_effect=InvalidOrderException)) trade = MagicMock() @@ -1756,8 +1756,8 @@ def test_update_trade_state_orderexception(mocker, default_conf, caplog) -> None def test_update_trade_state_sell(default_conf, trades_for_order, limit_sell_order, mocker): mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order) - # get_order should not be called!! - mocker.patch('freqtrade.exchange.Exchange.get_order', MagicMock(side_effect=ValueError)) + # fetch_order should not be called!! + mocker.patch('freqtrade.exchange.Exchange.fetch_order', MagicMock(side_effect=ValueError)) wallet_mock = MagicMock() mocker.patch('freqtrade.wallets.Wallets.update', wallet_mock) @@ -1972,7 +1972,7 @@ def test_check_handle_timedout_buy_usercustom(default_conf, ticker, limit_buy_or mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, - get_order=MagicMock(return_value=limit_buy_order_old), + fetch_order=MagicMock(return_value=limit_buy_order_old), cancel_order=cancel_order_mock, get_fee=fee ) @@ -2021,7 +2021,7 @@ def test_check_handle_timedout_buy(default_conf, ticker, limit_buy_order_old, op mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, - get_order=MagicMock(return_value=limit_buy_order_old), + fetch_order=MagicMock(return_value=limit_buy_order_old), cancel_order_with_result=cancel_order_mock, get_fee=fee ) @@ -2051,7 +2051,7 @@ def test_check_handle_cancelled_buy(default_conf, ticker, limit_buy_order_old, o mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, - get_order=MagicMock(return_value=limit_buy_order_old), + fetch_order=MagicMock(return_value=limit_buy_order_old), cancel_order=cancel_order_mock, get_fee=fee ) @@ -2078,7 +2078,7 @@ def test_check_handle_timedout_buy_exception(default_conf, ticker, limit_buy_ord 'freqtrade.exchange.Exchange', validate_pairs=MagicMock(), fetch_ticker=ticker, - get_order=MagicMock(side_effect=DependencyException), + fetch_order=MagicMock(side_effect=DependencyException), cancel_order=cancel_order_mock, get_fee=fee ) @@ -2104,7 +2104,7 @@ def test_check_handle_timedout_sell_usercustom(default_conf, ticker, limit_sell_ mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, - get_order=MagicMock(return_value=limit_sell_order_old), + fetch_order=MagicMock(return_value=limit_sell_order_old), cancel_order=cancel_order_mock ) freqtrade = FreqtradeBot(default_conf) @@ -2151,7 +2151,7 @@ def test_check_handle_timedout_sell(default_conf, ticker, limit_sell_order_old, mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, - get_order=MagicMock(return_value=limit_sell_order_old), + fetch_order=MagicMock(return_value=limit_sell_order_old), cancel_order=cancel_order_mock ) freqtrade = FreqtradeBot(default_conf) @@ -2182,7 +2182,7 @@ def test_check_handle_cancelled_sell(default_conf, ticker, limit_sell_order_old, mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, - get_order=MagicMock(return_value=limit_sell_order_old), + fetch_order=MagicMock(return_value=limit_sell_order_old), cancel_order_with_result=cancel_order_mock ) freqtrade = FreqtradeBot(default_conf) @@ -2209,7 +2209,7 @@ def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, - get_order=MagicMock(return_value=limit_buy_order_old_partial), + fetch_order=MagicMock(return_value=limit_buy_order_old_partial), cancel_order_with_result=cancel_order_mock ) freqtrade = FreqtradeBot(default_conf) @@ -2237,7 +2237,7 @@ def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, cap mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, - get_order=MagicMock(return_value=limit_buy_order_old_partial), + fetch_order=MagicMock(return_value=limit_buy_order_old_partial), cancel_order_with_result=cancel_order_mock, get_trades_for_order=MagicMock(return_value=trades_for_order), ) @@ -2275,7 +2275,7 @@ def test_check_handle_timedout_partial_except(default_conf, ticker, open_trade, mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, - get_order=MagicMock(return_value=limit_buy_order_old_partial), + fetch_order=MagicMock(return_value=limit_buy_order_old_partial), cancel_order_with_result=cancel_order_mock, get_trades_for_order=MagicMock(return_value=trades_for_order), ) @@ -2319,7 +2319,7 @@ def test_check_handle_timedout_exception(default_conf, ticker, open_trade, mocke mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, - get_order=MagicMock(side_effect=ExchangeError('Oh snap')), + fetch_order=MagicMock(side_effect=ExchangeError('Oh snap')), cancel_order=cancel_order_mock ) freqtrade = FreqtradeBot(default_conf) @@ -4016,7 +4016,7 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order, @pytest.mark.usefixtures("init_persistence") def test_cancel_all_open_orders(mocker, default_conf, fee, limit_buy_order, limit_sell_order): default_conf['cancel_open_orders_on_exit'] = True - mocker.patch('freqtrade.exchange.Exchange.get_order', + mocker.patch('freqtrade.exchange.Exchange.fetch_order', side_effect=[DependencyException(), limit_sell_order, limit_buy_order]) buy_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_cancel_buy') sell_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_cancel_sell') From cbcbb4bdb533247076b338035b640dc0f29f0495 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 16:30:24 +0200 Subject: [PATCH 2680/3421] Rename get_stoploss_order to fetch_stoploss_order (align with fetch_order) --- freqtrade/exchange/exchange.py | 6 +++--- freqtrade/exchange/ftx.py | 2 +- freqtrade/freqtradebot.py | 4 ++-- tests/exchange/test_exchange.py | 12 ++++++------ tests/exchange/test_ftx.py | 14 +++++++------- tests/test_freqtradebot.py | 18 +++++++++--------- tests/test_integration.py | 2 +- 7 files changed, 29 insertions(+), 29 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 5a19b34af..daa73ca35 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -969,7 +969,7 @@ class Exchange: except ccxt.BaseError as e: raise OperationalException(e) from e - # Assign method to get_stoploss_order to allow easy overriding in other classes + # Assign method to fetch_stoploss_order to allow easy overriding in other classes cancel_stoploss_order = cancel_order def is_cancel_order_result_suitable(self, corder) -> bool: @@ -1026,8 +1026,8 @@ class Exchange: except ccxt.BaseError as e: raise OperationalException(e) from e - # Assign method to get_stoploss_order to allow easy overriding in other classes - get_stoploss_order = fetch_order + # Assign method to fetch_stoploss_order to allow easy overriding in other classes + fetch_stoploss_order = fetch_order @retrier def fetch_l2_order_book(self, pair: str, limit: int = 100) -> dict: diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index be815d336..b75f77ca4 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -79,7 +79,7 @@ class Ftx(Exchange): raise OperationalException(e) from e @retrier - def get_stoploss_order(self, order_id: str, pair: str) -> Dict: + def fetch_stoploss_order(self, order_id: str, pair: str) -> Dict: if self._config['dry_run']: try: order = self._dry_run_open_orders[order_id] diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 0d9c5e27c..bd6bba344 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -773,8 +773,8 @@ class FreqtradeBot: try: # First we check if there is already a stoploss on exchange - stoploss_order = self.exchange.get_stoploss_order(trade.stoploss_order_id, trade.pair) \ - if trade.stoploss_order_id else None + stoploss_order = self.exchange.fetch_stoploss_order( + trade.stoploss_order_id, trade.pair) if trade.stoploss_order_id else None except InvalidOrderException as exception: logger.warning('Unable to fetch stoploss order: %s', exception) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index cf38b3cd5..fc4bf490c 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1894,7 +1894,7 @@ def test_fetch_order(default_conf, mocker, exchange_name): @pytest.mark.parametrize("exchange_name", EXCHANGES) -def test_get_stoploss_order(default_conf, mocker, exchange_name): +def test_fetch_stoploss_order(default_conf, mocker, exchange_name): # Don't test FTX here - that needs a seperate test if exchange_name == 'ftx': return @@ -1903,25 +1903,25 @@ def test_get_stoploss_order(default_conf, mocker, exchange_name): order.myid = 123 exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) exchange._dry_run_open_orders['X'] = order - assert exchange.get_stoploss_order('X', 'TKN/BTC').myid == 123 + assert exchange.fetch_stoploss_order('X', 'TKN/BTC').myid == 123 with pytest.raises(InvalidOrderException, match=r'Tried to get an invalid dry-run-order.*'): - exchange.get_stoploss_order('Y', 'TKN/BTC') + exchange.fetch_stoploss_order('Y', 'TKN/BTC') default_conf['dry_run'] = False api_mock = MagicMock() api_mock.fetch_order = MagicMock(return_value=456) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) - assert exchange.get_stoploss_order('X', 'TKN/BTC') == 456 + assert exchange.fetch_stoploss_order('X', 'TKN/BTC') == 456 with pytest.raises(InvalidOrderException): api_mock.fetch_order = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) - exchange.get_stoploss_order(order_id='_', pair='TKN/BTC') + exchange.fetch_stoploss_order(order_id='_', pair='TKN/BTC') assert api_mock.fetch_order.call_count == 1 ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, - 'get_stoploss_order', 'fetch_order', + 'fetch_stoploss_order', 'fetch_order', order_id='_', pair='TKN/BTC') diff --git a/tests/exchange/test_ftx.py b/tests/exchange/test_ftx.py index 1b7d68770..eb7d83be3 100644 --- a/tests/exchange/test_ftx.py +++ b/tests/exchange/test_ftx.py @@ -124,34 +124,34 @@ def test_stoploss_adjust_ftx(mocker, default_conf): assert not exchange.stoploss_adjust(1501, order) -def test_get_stoploss_order(default_conf, mocker): +def test_fetch_stoploss_order(default_conf, mocker): default_conf['dry_run'] = True order = MagicMock() order.myid = 123 exchange = get_patched_exchange(mocker, default_conf, id='ftx') exchange._dry_run_open_orders['X'] = order - assert exchange.get_stoploss_order('X', 'TKN/BTC').myid == 123 + assert exchange.fetch_stoploss_order('X', 'TKN/BTC').myid == 123 with pytest.raises(InvalidOrderException, match=r'Tried to get an invalid dry-run-order.*'): - exchange.get_stoploss_order('Y', 'TKN/BTC') + exchange.fetch_stoploss_order('Y', 'TKN/BTC') default_conf['dry_run'] = False api_mock = MagicMock() api_mock.fetch_orders = MagicMock(return_value=[{'id': 'X', 'status': '456'}]) exchange = get_patched_exchange(mocker, default_conf, api_mock, id='ftx') - assert exchange.get_stoploss_order('X', 'TKN/BTC')['status'] == '456' + assert exchange.fetch_stoploss_order('X', 'TKN/BTC')['status'] == '456' api_mock.fetch_orders = MagicMock(return_value=[{'id': 'Y', 'status': '456'}]) exchange = get_patched_exchange(mocker, default_conf, api_mock, id='ftx') with pytest.raises(InvalidOrderException, match=r"Could not get stoploss order for id X"): - exchange.get_stoploss_order('X', 'TKN/BTC')['status'] + exchange.fetch_stoploss_order('X', 'TKN/BTC')['status'] with pytest.raises(InvalidOrderException): api_mock.fetch_orders = MagicMock(side_effect=ccxt.InvalidOrder("Order not found")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id='ftx') - exchange.get_stoploss_order(order_id='_', pair='TKN/BTC') + exchange.fetch_stoploss_order(order_id='_', pair='TKN/BTC') assert api_mock.fetch_orders.call_count == 1 ccxt_exceptionhandlers(mocker, default_conf, api_mock, 'ftx', - 'get_stoploss_order', 'fetch_orders', + 'fetch_stoploss_order', 'fetch_orders', order_id='_', pair='TKN/BTC') diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 3b00f3371..ef48bdc34 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1125,7 +1125,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, trade.stoploss_order_id = 100 hanging_stoploss_order = MagicMock(return_value={'status': 'open'}) - mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', hanging_stoploss_order) + mocker.patch('freqtrade.exchange.Exchange.fetch_stoploss_order', hanging_stoploss_order) assert freqtrade.handle_stoploss_on_exchange(trade) is False assert trade.stoploss_order_id == 100 @@ -1138,7 +1138,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, trade.stoploss_order_id = 100 canceled_stoploss_order = MagicMock(return_value={'status': 'canceled'}) - mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', canceled_stoploss_order) + mocker.patch('freqtrade.exchange.Exchange.fetch_stoploss_order', canceled_stoploss_order) stoploss.reset_mock() assert freqtrade.handle_stoploss_on_exchange(trade) is False @@ -1163,7 +1163,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, 'average': 2, 'amount': limit_buy_order['amount'], }) - mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', stoploss_order_hit) + mocker.patch('freqtrade.exchange.Exchange.fetch_stoploss_order', stoploss_order_hit) assert freqtrade.handle_stoploss_on_exchange(trade) is True assert log_has('STOP_LOSS_LIMIT is hit for {}.'.format(trade), caplog) assert trade.stoploss_order_id is None @@ -1182,7 +1182,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, # It should try to add stoploss order trade.stoploss_order_id = 100 stoploss.reset_mock() - mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', + mocker.patch('freqtrade.exchange.Exchange.fetch_stoploss_order', side_effect=InvalidOrderException()) mocker.patch('freqtrade.exchange.Exchange.stoploss', stoploss) freqtrade.handle_stoploss_on_exchange(trade) @@ -1214,7 +1214,7 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog, buy=MagicMock(return_value={'id': limit_buy_order['id']}), sell=MagicMock(return_value={'id': limit_sell_order['id']}), get_fee=fee, - get_stoploss_order=MagicMock(return_value={'status': 'canceled'}), + fetch_stoploss_order=MagicMock(return_value={'status': 'canceled'}), stoploss=MagicMock(side_effect=ExchangeError()), ) freqtrade = FreqtradeBot(default_conf) @@ -1331,7 +1331,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, } }) - mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', stoploss_order_hanging) + mocker.patch('freqtrade.exchange.Exchange.fetch_stoploss_order', stoploss_order_hanging) # stoploss initially at 5% assert freqtrade.handle_trade(trade) is False @@ -1431,7 +1431,7 @@ def test_handle_stoploss_on_exchange_trailing_error(mocker, default_conf, fee, c } mocker.patch('freqtrade.exchange.Exchange.cancel_stoploss_order', side_effect=InvalidOrderException()) - mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', stoploss_order_hanging) + mocker.patch('freqtrade.exchange.Exchange.fetch_stoploss_order', stoploss_order_hanging) freqtrade.handle_trailing_stoploss_on_exchange(trade, stoploss_order_hanging) assert log_has_re(r"Could not cancel stoploss order abcd for pair ETH/BTC.*", caplog) @@ -1511,7 +1511,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, } }) - mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', stoploss_order_hanging) + mocker.patch('freqtrade.exchange.Exchange.fetch_stoploss_order', stoploss_order_hanging) # stoploss initially at 20% as edge dictated it. assert freqtrade.handle_trade(trade) is False @@ -2773,7 +2773,7 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, f "fee": None, "trades": None }) - mocker.patch('freqtrade.exchange.Exchange.get_stoploss_order', stoploss_executed) + mocker.patch('freqtrade.exchange.Exchange.fetch_stoploss_order', stoploss_executed) freqtrade.exit_positions(trades) assert trade.stoploss_order_id is None diff --git a/tests/test_integration.py b/tests/test_integration.py index 57960503e..168286e6d 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -62,7 +62,7 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, get_fee=fee, amount_to_precision=lambda s, x, y: y, price_to_precision=lambda s, x, y: y, - get_stoploss_order=stoploss_order_mock, + fetch_stoploss_order=stoploss_order_mock, cancel_stoploss_order=cancel_order_mock, ) From 6362bfc36ef843c60046a94de8184b51a09f64e7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 19:40:33 +0200 Subject: [PATCH 2681/3421] Fix calculate_backoff implementation --- freqtrade/exchange/common.py | 4 ++-- tests/exchange/test_exchange.py | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index b0f6b14e3..d3ba8cef6 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -91,11 +91,11 @@ MAP_EXCHANGE_CHILDCLASS = { } -def calculate_backoff(retry, max_retries): +def calculate_backoff(retrycount, max_retries): """ Calculate backoff """ - return retry ** 2 + 1 + return (max_retries - retrycount) ** 2 + 1 def retrier_async(f): diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index fc4bf490c..8c397fe68 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -2298,13 +2298,13 @@ def test_calculate_fee_rate(mocker, default_conf, order, expected) -> None: assert ex.calculate_fee_rate(order) == expected -@pytest.mark.parametrize('retry,max_retries,expected', [ - (0, 3, 1), - (1, 3, 2), - (2, 3, 5), - (3, 3, 10), - (0, 1, 1), - (1, 1, 2), +@pytest.mark.parametrize('retrycount,max_retries,expected', [ + (0, 3, 10), + (1, 3, 5), + (2, 3, 2), + (3, 3, 1), + (0, 1, 2), + (1, 1, 1), ]) -def test_calculate_backoff(retry, max_retries, expected): - assert calculate_backoff(retry, max_retries) == expected +def test_calculate_backoff(retrycount, max_retries, expected): + assert calculate_backoff(retrycount, max_retries) == expected From c6124180fe14bcdf9f78676d021c2e8e6880d1e7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 19:45:42 +0200 Subject: [PATCH 2682/3421] Fix bug when fetching orders fails --- freqtrade/exceptions.py | 7 +++++++ freqtrade/exchange/common.py | 14 ++++++++------ freqtrade/exchange/exchange.py | 5 ++++- tests/exchange/test_exchange.py | 12 ++++++++++++ tests/test_freqtradebot.py | 2 +- 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/freqtrade/exceptions.py b/freqtrade/exceptions.py index 995a2cdb7..c85fccc4b 100644 --- a/freqtrade/exceptions.py +++ b/freqtrade/exceptions.py @@ -37,6 +37,13 @@ class InvalidOrderException(FreqtradeException): """ +class RetryableOrderError(InvalidOrderException): + """ + This is returned when the order is not found. + This Error will be repeated with increasing backof (in line with DDosError). + """ + + class ExchangeError(DependencyException): """ Error raised out of the exchange. diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index d3ba8cef6..9b7d8dfea 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -3,7 +3,8 @@ import logging import time from functools import wraps -from freqtrade.exceptions import DDosProtection, TemporaryError +from freqtrade.exceptions import (DDosProtection, RetryableOrderError, + TemporaryError) logger = logging.getLogger(__name__) @@ -109,8 +110,8 @@ def retrier_async(f): count -= 1 kwargs.update({'count': count}) logger.warning('retrying %s() still for %s times', f.__name__, count) - if isinstance(ex, DDosProtection): - await asyncio.sleep(1) + if isinstance(ex, DDosProtection) or isinstance(ex, RetryableOrderError): + await asyncio.sleep(calculate_backoff(count + 1, API_RETRY_COUNT)) return await wrapper(*args, **kwargs) else: logger.warning('Giving up retrying: %s()', f.__name__) @@ -125,14 +126,15 @@ def retrier(_func=None, retries=API_RETRY_COUNT): count = kwargs.pop('count', retries) try: return f(*args, **kwargs) - except TemporaryError as ex: + except (TemporaryError, RetryableOrderError) as ex: logger.warning('%s() returned exception: "%s"', f.__name__, ex) if count > 0: count -= 1 kwargs.update({'count': count}) logger.warning('retrying %s() still for %s times', f.__name__, count) - if isinstance(ex, DDosProtection): - time.sleep(calculate_backoff(count, retries)) + if isinstance(ex, DDosProtection) or isinstance(ex, RetryableOrderError): + # increasing backoff + time.sleep(calculate_backoff(count + 1, retries)) return wrapper(*args, **kwargs) else: logger.warning('Giving up retrying: %s()', f.__name__) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index daa73ca35..a3a548176 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -22,7 +22,7 @@ from freqtrade.constants import ListPairsWithTimeframes from freqtrade.data.converter import ohlcv_to_dataframe, trades_dict_to_list from freqtrade.exceptions import (DDosProtection, ExchangeError, InvalidOrderException, OperationalException, - TemporaryError) + RetryableOrderError, TemporaryError) from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async from freqtrade.misc import deep_merge_dicts, safe_value_fallback @@ -1015,6 +1015,9 @@ class Exchange: f'Tried to get an invalid dry-run-order (id: {order_id}). Message: {e}') from e try: return self._api.fetch_order(order_id, pair) + except ccxt.OrderNotFound as e: + raise RetryableOrderError( + f'Order not found (id: {order_id}). Message: {e}') from e except ccxt.InvalidOrder as e: raise InvalidOrderException( f'Tried to get an invalid order (id: {order_id}). Message: {e}') from e diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 8c397fe68..66f88d82f 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1888,6 +1888,18 @@ def test_fetch_order(default_conf, mocker, exchange_name): exchange.fetch_order(order_id='_', pair='TKN/BTC') assert api_mock.fetch_order.call_count == 1 + api_mock.fetch_order = MagicMock(side_effect=ccxt.OrderNotFound("Order not found")) + exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) + with patch('freqtrade.exchange.common.time.sleep') as tm: + with pytest.raises(InvalidOrderException): + exchange.fetch_order(order_id='_', pair='TKN/BTC') + # Ensure backoff is called + assert tm.call_args_list[0][0][0] == 1 + assert tm.call_args_list[1][0][0] == 2 + assert tm.call_args_list[2][0][0] == 5 + assert tm.call_args_list[3][0][0] == 10 + assert api_mock.fetch_order.call_count == API_RETRY_COUNT + 1 + ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, 'fetch_order', 'fetch_order', order_id='_', pair='TKN/BTC') diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index ef48bdc34..654e6ca4f 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2078,7 +2078,7 @@ def test_check_handle_timedout_buy_exception(default_conf, ticker, limit_buy_ord 'freqtrade.exchange.Exchange', validate_pairs=MagicMock(), fetch_ticker=ticker, - fetch_order=MagicMock(side_effect=DependencyException), + fetch_order=MagicMock(side_effect=ExchangeError), cancel_order=cancel_order_mock, get_fee=fee ) From 4d9ecf137b5d2d037e888a56eda4a0bd78925f7c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 20:17:03 +0200 Subject: [PATCH 2683/3421] Fix failing test in python 3.7 can't use Magicmock in 3.7 (works in 3.8 though). --- freqtrade/exchange/common.py | 2 +- tests/exchange/test_exchange.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index 9b7d8dfea..cc70bb875 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -110,7 +110,7 @@ def retrier_async(f): count -= 1 kwargs.update({'count': count}) logger.warning('retrying %s() still for %s times', f.__name__, count) - if isinstance(ex, DDosProtection) or isinstance(ex, RetryableOrderError): + if isinstance(ex, DDosProtection): await asyncio.sleep(calculate_backoff(count + 1, API_RETRY_COUNT)) return await wrapper(*args, **kwargs) else: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 66f88d82f..251f257f7 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -62,7 +62,7 @@ def ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, async def async_ccxt_exception(mocker, default_conf, api_mock, fun, mock_ccxt_fun, retries=API_RETRY_COUNT + 1, **kwargs): - with patch('freqtrade.exchange.common.asyncio.sleep'): + with patch('freqtrade.exchange.common.asyncio.sleep', get_mock_coro(None)): with pytest.raises(DDosProtection): api_mock.__dict__[mock_ccxt_fun] = MagicMock(side_effect=ccxt.DDoSProtection("Dooh")) exchange = get_patched_exchange(mocker, default_conf, api_mock) From fe0b17c70c82e429afbdf5a17e4242275548ad2f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2020 09:01:20 +0000 Subject: [PATCH 2684/3421] Bump progressbar2 from 3.51.3 to 3.51.4 Bumps [progressbar2](https://github.com/WoLpH/python-progressbar) from 3.51.3 to 3.51.4. - [Release notes](https://github.com/WoLpH/python-progressbar/releases) - [Changelog](https://github.com/WoLpH/python-progressbar/blob/develop/CHANGES.rst) - [Commits](https://github.com/WoLpH/python-progressbar/compare/v3.51.3...v3.51.4) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index aedfc0eaa..2784bc156 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -7,4 +7,4 @@ scikit-learn==0.23.1 scikit-optimize==0.7.4 filelock==3.0.12 joblib==0.15.1 -progressbar2==3.51.3 +progressbar2==3.51.4 From e06b00921416acdd8f05ab9a770ebe0a21689254 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2020 09:02:57 +0000 Subject: [PATCH 2685/3421] Bump plotly from 4.8.1 to 4.8.2 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.8.1 to 4.8.2. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.8.1...v4.8.2) Signed-off-by: dependabot-preview[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index cb13a59bf..ec5af3dbf 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.8.1 +plotly==4.8.2 From 4e5910afba3a72efe0735a0f257b6328ff3c8f24 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2020 09:03:19 +0000 Subject: [PATCH 2686/3421] Bump mkdocs-material from 5.3.2 to 5.3.3 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.3.2 to 5.3.3. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.3.2...5.3.3) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 7ddfc1dfb..a0505c84b 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.3.2 +mkdocs-material==5.3.3 mdx_truly_sane_lists==1.2 From be2b326a6e208d7f0835c7c899c6649764cdd924 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2020 09:03:58 +0000 Subject: [PATCH 2687/3421] Bump pytest-asyncio from 0.12.0 to 0.14.0 Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.12.0 to 0.14.0. - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases) - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.12.0...v0.14.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 91b33c573..7d68a0c3b 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -9,7 +9,7 @@ flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.781 pytest==5.4.3 -pytest-asyncio==0.12.0 +pytest-asyncio==0.14.0 pytest-cov==2.10.0 pytest-mock==3.1.1 pytest-random-order==1.0.4 From 9e1ce0c67ab1dbb505a35d1c3e1e24e5b946e9c7 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2020 09:04:12 +0000 Subject: [PATCH 2688/3421] Bump sqlalchemy from 1.3.17 to 1.3.18 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.17 to 1.3.18. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 916b0e24b..06549d2bf 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.30.34 -SQLAlchemy==1.3.17 +SQLAlchemy==1.3.18 python-telegram-bot==12.7 arrow==0.15.7 cachetools==4.1.0 From 449d4625336096658e1cbd39f8c9ed6ef9677af4 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2020 12:12:58 +0000 Subject: [PATCH 2689/3421] Bump python-telegram-bot from 12.7 to 12.8 Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.7 to 12.8. - [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases) - [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst) - [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.7...v12.8) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 06549d2bf..06eddb536 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -2,7 +2,7 @@ # mainly used for Raspberry pi installs ccxt==1.30.34 SQLAlchemy==1.3.18 -python-telegram-bot==12.7 +python-telegram-bot==12.8 arrow==0.15.7 cachetools==4.1.0 requests==2.24.0 From c06b2802882ec70b7f725ca39818212d75e0e1d5 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2020 12:14:27 +0000 Subject: [PATCH 2690/3421] Bump mypy from 0.781 to 0.782 Bumps [mypy](https://github.com/python/mypy) from 0.781 to 0.782. - [Release notes](https://github.com/python/mypy/releases) - [Commits](https://github.com/python/mypy/compare/v0.781...v0.782) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 7d68a0c3b..ed4f8f713 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ coveralls==2.0.0 flake8==3.8.3 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 -mypy==0.781 +mypy==0.782 pytest==5.4.3 pytest-asyncio==0.14.0 pytest-cov==2.10.0 From 8fb1683bdc1237ec55f2f5a47379b424ab6a5ea2 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2020 12:32:42 +0000 Subject: [PATCH 2691/3421] Bump cachetools from 4.1.0 to 4.1.1 Bumps [cachetools](https://github.com/tkem/cachetools) from 4.1.0 to 4.1.1. - [Release notes](https://github.com/tkem/cachetools/releases) - [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst) - [Commits](https://github.com/tkem/cachetools/compare/v4.1.0...v4.1.1) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 06eddb536..4c0f93ef7 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -4,7 +4,7 @@ ccxt==1.30.34 SQLAlchemy==1.3.18 python-telegram-bot==12.8 arrow==0.15.7 -cachetools==4.1.0 +cachetools==4.1.1 requests==2.24.0 urllib3==1.25.9 wrapt==1.12.1 From a9064117a5b35c7d6a2f63a0edce3c9188fa27de Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2020 12:53:58 +0000 Subject: [PATCH 2692/3421] Bump ccxt from 1.30.34 to 1.30.48 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.30.34 to 1.30.48. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.30.34...1.30.48) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 4c0f93ef7..2948b8f35 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.30.34 +ccxt==1.30.48 SQLAlchemy==1.3.18 python-telegram-bot==12.8 arrow==0.15.7 From b95065d70179318f1841708c64c7e333e763afb2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 29 Jun 2020 20:00:42 +0200 Subject: [PATCH 2693/3421] Log backoff --- freqtrade/exchange/common.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index cc70bb875..0610e8447 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -111,7 +111,9 @@ def retrier_async(f): kwargs.update({'count': count}) logger.warning('retrying %s() still for %s times', f.__name__, count) if isinstance(ex, DDosProtection): - await asyncio.sleep(calculate_backoff(count + 1, API_RETRY_COUNT)) + backoff_delay = calculate_backoff(count + 1, API_RETRY_COUNT) + logger.debug(f"Applying DDosProtection backoff delay: {backoff_delay}") + await asyncio.sleep(backoff_delay) return await wrapper(*args, **kwargs) else: logger.warning('Giving up retrying: %s()', f.__name__) @@ -134,7 +136,9 @@ def retrier(_func=None, retries=API_RETRY_COUNT): logger.warning('retrying %s() still for %s times', f.__name__, count) if isinstance(ex, DDosProtection) or isinstance(ex, RetryableOrderError): # increasing backoff - time.sleep(calculate_backoff(count + 1, retries)) + backoff_delay = calculate_backoff(count + 1, retries) + logger.debug(f"Applying DDosProtection backoff delay: {backoff_delay}") + time.sleep(backoff_delay) return wrapper(*args, **kwargs) else: logger.warning('Giving up retrying: %s()', f.__name__) From efd6e4a87535adb95fa4eb7710259dd130a7395e Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 30 Jun 2020 07:16:08 +0200 Subject: [PATCH 2694/3421] Add test for check_for_open_trades --- tests/test_freqtradebot.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5d83c893e..d3014d7a8 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -4029,3 +4029,19 @@ def test_cancel_all_open_orders(mocker, default_conf, fee, limit_buy_order, limi freqtrade.cancel_all_open_orders() assert buy_mock.call_count == 1 assert sell_mock.call_count == 1 + + +@pytest.mark.usefixtures("init_persistence") +def test_check_for_open_trades(mocker, default_conf, fee, limit_buy_order, limit_sell_order): + freqtrade = get_patched_freqtradebot(mocker, default_conf) + + freqtrade.check_for_open_trades() + assert freqtrade.rpc.send_msg.call_count == 0 + + create_mock_trades(fee) + trade = Trade.query.first() + trade.is_open = True + + freqtrade.check_for_open_trades() + assert freqtrade.rpc.send_msg.call_count == 1 + assert 'Handle these trades manually' in freqtrade.rpc.send_msg.call_args[0][0]['status'] From 2f759825e4c670af51e4e17b074f96f48ff5ce16 Mon Sep 17 00:00:00 2001 From: Confucius-The-Great <40965179+qkum@users.noreply.github.com> Date: Tue, 30 Jun 2020 11:01:00 +0200 Subject: [PATCH 2695/3421] Update faq.md Major changes :) --- docs/faq.md | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index 151b2c054..cc43e326d 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,5 +1,9 @@ # Freqtrade FAQ +## Beginner Tips & Tricks + +#1 When you work with your strategy & hyperopt file you should use a real programmer software like Pycharm. If you by accident moved some code and freqtrade says error and you cant find the place where you moved something, or you cant find line 180 where you messed something up. Then a program like Pycharm shows you where line 180 is in your strategy file so you can fix the problem, or Pycharm shows you with some color marking that "here is a line of code that does not belong here" and you found your error in no time! This will save you many hours of problemsolving when working with the bot. Pycharm also got a usefull "Debug" feature that can tell you exactly what command on that line is making the error :) + ## Freqtrade common issues ### The bot does not start @@ -15,10 +19,12 @@ This could have the following reasons: ### I have waited 5 minutes, why hasn't the bot made any trades yet?! -Depending on the buy strategy, the amount of whitelisted coins, the +#1 Depending on the buy strategy, the amount of whitelisted coins, the situation of the market etc, it can take up to hours to find good entry position for a trade. Be patient! +#2 Or it may because you made an human error? Like writing --dry-run when you wanted to trade live?. Maybe an error with the exchange API? Or something else. You will have to do the hard work of finding out the root cause of the problem :) + ### I have made 12 trades already, why is my total profit negative?! I understand your disappointment but unfortunately 12 trades is just @@ -129,25 +135,25 @@ to find a great result (unless if you are very lucky), so you probably have to run it for 10.000 or more. But it will take an eternity to compute. -We recommend you to run it at least 10.000 epochs: +We recommend you to run between 500-1000 epochs over and over untill you hit at least 10.000 epocs in total. You can best judge by looking at the results - if the bot keep discovering more profitable strategies or not. ```bash -freqtrade hyperopt -e 10000 +freqtrade hyperopt -e 1000 ``` or if you want intermediate result to see ```bash -for i in {1..100}; do freqtrade hyperopt -e 100; done +for i in {1..100}; do freqtrade hyperopt -e 1000; done ``` -### Why it is so long to run hyperopt? +### Why does it take so long time to run hyperopt? -Finding a great Hyperopt results takes time. +#1 Discovering a great strategy with Hyperopt takes time. Study www.freqtrade.io, the Freqtrade Github page, join the Freqtrade Discord - or something totally else. While you patiently wait for the most advanced, public known, crypto bot, in the world, to hand you a possible golden strategy specially designed just for you =) -If you wonder why it takes a while to find great hyperopt results +#2 If you wonder why it can take from 20 minutes to days to do 1000 epocs here are some answers: -This answer was written during the under the release 0.15.1, when we had: +This answer was written during the release 0.15.1, when we had: - 8 triggers - 9 guards: let's say we evaluate even 10 values from each @@ -157,7 +163,10 @@ The following calculation is still very rough and not very precise but it will give the idea. With only these triggers and guards there is already 8\*10^9\*10 evaluations. A roughly total of 80 billion evals. Did you run 100 000 evals? Congrats, you've done roughly 1 / 100 000 th -of the search space. +of the search space. If we assume that the bot never test the same strategy more than once. + +#3 The time it takes to run 1000 hyperopt epocs depends on things like: The cpu, harddisk, ram, motherboard, indicator settings, indicator count, amount of coins that hyperopt test strategies on, trade count - can be 650 trades in a year or 10.0000 trades depending on if the strategy aims for a high profit rarely or a low profit many many many times. Example: 4% profit 650 times vs 0,3% profit a trade 10.000 times in a year. If we assume you set the --timerange to 365 days. +Example: freqtrade --config config_mcd_1.json --strategy mcd_1 --hyperopt mcd_hyperopt_1 -e 1000 --timerange 20190601-20200601 ## Edge module From 61ae471eef74bd18619ce26710d5650e06d05ccb Mon Sep 17 00:00:00 2001 From: HumanBot Date: Tue, 30 Jun 2020 10:13:27 -0400 Subject: [PATCH 2696/3421] fixed --export trades command refers to issue 3413 @ https://github.com/freqtrade/freqtrade/issues/3413 --- docs/backtesting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 51b2e953b..ecd48bdc9 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -66,7 +66,7 @@ Where `SampleStrategy1` and `AwesomeStrategy` refer to class names of strategies #### Exporting trades to file ```bash -freqtrade backtesting --export trades +freqtrade backtesting --export trades --config config.json --strategy SampleStrategy ``` The exported trades can be used for [further analysis](#further-backtest-result-analysis), or can be used by the plotting script `plot_dataframe.py` in the scripts directory. From 81850b5fdf5b860db1802fbda0998a2d1662b4dd Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Thu, 2 Jul 2020 11:26:52 +0200 Subject: [PATCH 2697/3421] AgeFilter add actual amount of days in log message (debug info) --- freqtrade/pairlist/AgeFilter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/pairlist/AgeFilter.py b/freqtrade/pairlist/AgeFilter.py index a23682599..b489a59bc 100644 --- a/freqtrade/pairlist/AgeFilter.py +++ b/freqtrade/pairlist/AgeFilter.py @@ -69,7 +69,7 @@ class AgeFilter(IPairList): return True else: self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, " - f"because age is less than " + f"because age {len(daily_candles)} is less than " f"{self._min_days_listed} " f"{plural(self._min_days_listed, 'day')}") return False From 99ac2659f3566526ebbecf95af76a5030871f5fc Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Thu, 2 Jul 2020 11:27:33 +0200 Subject: [PATCH 2698/3421] Init FIAT converter in api_server.py --- freqtrade/rpc/api_server.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index a2cef9a98..351842e10 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -17,6 +17,7 @@ from werkzeug.serving import make_server from freqtrade.__init__ import __version__ from freqtrade.rpc.rpc import RPC, RPCException +from freqtrade.rpc.fiat_convert import CryptoToFiatConverter logger = logging.getLogger(__name__) @@ -105,6 +106,9 @@ class ApiServer(RPC): # Register application handling self.register_rest_rpc_urls() + if self._config.get('fiat_display_currency', None): + self._fiat_converter = CryptoToFiatConverter() + thread = threading.Thread(target=self.run, daemon=True) thread.start() From db965332b99622fa93ae1638a94cf49688bd1e81 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Thu, 2 Jul 2020 11:38:38 +0200 Subject: [PATCH 2699/3421] Update tests for AgeFilter message --- tests/pairlist/test_pairlist.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 072e497f3..a2644fe8c 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -389,7 +389,7 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t for pairlist in pairlists: if pairlist['method'] == 'AgeFilter' and pairlist['min_days_listed'] and \ len(ohlcv_history_list) <= pairlist['min_days_listed']: - assert log_has_re(r'^Removed .* from whitelist, because age is less than ' + assert log_has_re(r'^Removed .* from whitelist, because age .* is less than ' r'.* day.*', caplog) if pairlist['method'] == 'PrecisionFilter' and whitelist_result: assert log_has_re(r'^Removed .* from whitelist, because stop price .* ' From 39fa58973527431b5c66040d2b44f8f184abe788 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Thu, 2 Jul 2020 13:39:02 +0200 Subject: [PATCH 2700/3421] Update API test, currently just with 'ANY' --- tests/rpc/test_rpc_apiserver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index cd2b0d311..2935094a5 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -431,14 +431,14 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li 'latest_trade_date': 'just now', 'latest_trade_timestamp': ANY, 'profit_all_coin': 6.217e-05, - 'profit_all_fiat': 0, + 'profit_all_fiat': ANY, 'profit_all_percent': 6.2, 'profit_all_percent_mean': 6.2, 'profit_all_ratio_mean': 0.06201058, 'profit_all_percent_sum': 6.2, 'profit_all_ratio_sum': 0.06201058, 'profit_closed_coin': 6.217e-05, - 'profit_closed_fiat': 0, + 'profit_closed_fiat': ANY, 'profit_closed_percent': 6.2, 'profit_closed_ratio_mean': 0.06201058, 'profit_closed_percent_mean': 6.2, From f32e522bd73579d532541a7b444ced723a65e159 Mon Sep 17 00:00:00 2001 From: Theagainmen <24569139+Theagainmen@users.noreply.github.com> Date: Thu, 2 Jul 2020 20:03:15 +0200 Subject: [PATCH 2701/3421] Update API test, removed 'ANY' --- tests/rpc/test_rpc_apiserver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 2935094a5..45aa57588 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -431,14 +431,14 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li 'latest_trade_date': 'just now', 'latest_trade_timestamp': ANY, 'profit_all_coin': 6.217e-05, - 'profit_all_fiat': ANY, + 'profit_all_fiat': 0.76748865, 'profit_all_percent': 6.2, 'profit_all_percent_mean': 6.2, 'profit_all_ratio_mean': 0.06201058, 'profit_all_percent_sum': 6.2, 'profit_all_ratio_sum': 0.06201058, 'profit_closed_coin': 6.217e-05, - 'profit_closed_fiat': ANY, + 'profit_closed_fiat': 0.76748865, 'profit_closed_percent': 6.2, 'profit_closed_ratio_mean': 0.06201058, 'profit_closed_percent_mean': 6.2, From 23c0db925e22652b7e53b758bb21f0e6e1896600 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste LE STANG Date: Thu, 2 Jul 2020 20:55:16 +0200 Subject: [PATCH 2702/3421] Adding a dataprovider to the strategy before plotting --- freqtrade/plot/plotting.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index e8b0b4938..ae9f9c409 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -15,6 +15,7 @@ from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_prev_date from freqtrade.misc import pair_to_filename from freqtrade.resolvers import StrategyResolver +from freqtrade.data.dataprovider import DataProvider logger = logging.getLogger(__name__) @@ -474,6 +475,7 @@ def load_and_plot_trades(config: Dict[str, Any]): pair_counter += 1 logger.info("analyse pair %s", pair) + strategy.dp = DataProvider(config,config["exchange"]) df_analyzed = strategy.analyze_ticker(data, {'pair': pair}) trades_pair = trades.loc[trades['pair'] == pair] trades_pair = extract_trades_of_period(df_analyzed, trades_pair) From 20e8a29262e190f5be2d5f792a7bbaf03d6a2c73 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste LE STANG Date: Thu, 2 Jul 2020 20:55:16 +0200 Subject: [PATCH 2703/3421] Adding a dataprovider to the strategy before plotting Fix flake8 --- freqtrade/plot/plotting.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index e8b0b4938..db83448c0 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -15,6 +15,7 @@ from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_prev_date from freqtrade.misc import pair_to_filename from freqtrade.resolvers import StrategyResolver +from freqtrade.data.dataprovider import DataProvider logger = logging.getLogger(__name__) @@ -474,6 +475,7 @@ def load_and_plot_trades(config: Dict[str, Any]): pair_counter += 1 logger.info("analyse pair %s", pair) + strategy.dp = DataProvider(config, config["exchange"]) df_analyzed = strategy.analyze_ticker(data, {'pair': pair}) trades_pair = trades.loc[trades['pair'] == pair] trades_pair = extract_trades_of_period(df_analyzed, trades_pair) From 455b26ea48975178664d8da76c8b6d9fbbdf60b4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 8 Jun 2020 06:37:30 +0200 Subject: [PATCH 2704/3421] Add max drawdown to backtesting --- freqtrade/optimize/optimize_reports.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index d89860a73..5be1a47a9 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -6,6 +6,7 @@ from typing import Any, Dict, List from pandas import DataFrame from tabulate import tabulate +from freqtrade.data.btanalysis import calculate_max_drawdown from freqtrade.misc import file_dump_json logger = logging.getLogger(__name__) @@ -212,11 +213,20 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], max_open_trades=max_open_trades, results=results.loc[results['open_at_end']], skip_nan=True) + + max_drawdown, drawdown_start, drawdown_end = calculate_max_drawdown( + results, value_col='profit_percent') + strat_stats = { 'trades': backtest_result_to_list(results), 'results_per_pair': pair_results, 'sell_reason_summary': sell_reason_stats, 'left_open_trades': left_open_results, + 'max_drawdown': max_drawdown, + 'drawdown_start': drawdown_start, + 'drawdown_start_ts': drawdown_start.timestamp(), + 'drawdown_end': drawdown_end, + 'drawdown_end_ts': drawdown_end.timestamp(), } result['strategy'][strategy] = strat_stats @@ -298,6 +308,16 @@ def text_table_strategy(strategy_results, stake_currency: str) -> str: floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") +def text_table_add_metrics(strategy_results: Dict) -> str: + xxx = [ + ('Max Drawdown', f"{round(strategy_results['max_drawdown'] * 100, 2)}%"), + ('Drawdown Start', strategy_results['drawdown_start'].strftime('%Y-%m-%d %H:%M:%S')), + ('Drawdown End', strategy_results['drawdown_end'].strftime('%Y-%m-%d %H:%M:%S')), + ] + + return tabulate(xxx, headers=["Metric", "Value"], tablefmt="orgtbl") + + def show_backtest_results(config: Dict, backtest_stats: Dict): stake_currency = config['stake_currency'] @@ -320,6 +340,12 @@ def show_backtest_results(config: Dict, backtest_stats: Dict): if isinstance(table, str): print(' LEFT OPEN TRADES REPORT '.center(len(table.splitlines()[0]), '=')) print(table) + + table = text_table_add_metrics(results) + if isinstance(table, str): + print(' SUMMARY METRICS '.center(len(table.splitlines()[0]), '=')) + print(table) + if isinstance(table, str): print('=' * len(table.splitlines()[0])) print() From 6922fbc3aae545e4ef3020610e819199770171f7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 8 Jun 2020 06:38:29 +0200 Subject: [PATCH 2705/3421] Add max_drawdown error handler --- freqtrade/optimize/optimize_reports.py | 44 +++++++++++++++++--------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 5be1a47a9..0188761d4 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -1,5 +1,5 @@ import logging -from datetime import timedelta +from datetime import timedelta, datetime from pathlib import Path from typing import Any, Dict, List @@ -214,22 +214,33 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], results=results.loc[results['open_at_end']], skip_nan=True) - max_drawdown, drawdown_start, drawdown_end = calculate_max_drawdown( - results, value_col='profit_percent') - strat_stats = { 'trades': backtest_result_to_list(results), 'results_per_pair': pair_results, 'sell_reason_summary': sell_reason_stats, 'left_open_trades': left_open_results, - 'max_drawdown': max_drawdown, - 'drawdown_start': drawdown_start, - 'drawdown_start_ts': drawdown_start.timestamp(), - 'drawdown_end': drawdown_end, - 'drawdown_end_ts': drawdown_end.timestamp(), } result['strategy'][strategy] = strat_stats + try: + max_drawdown, drawdown_start, drawdown_end = calculate_max_drawdown( + results, value_col='profit_percent') + strat_stats.update({ + 'max_drawdown': max_drawdown, + 'drawdown_start': drawdown_start, + 'drawdown_start_ts': drawdown_start.timestamp(), + 'drawdown_end': drawdown_end, + 'drawdown_end_ts': drawdown_end.timestamp(), + }) + except ValueError: + strat_stats.update({ + 'max_drawdown': 0.0, + 'drawdown_start': datetime.min, + 'drawdown_start_ts': datetime.min.timestamp(), + 'drawdown_end': datetime.min, + 'drawdown_end_ts': datetime.min.timestamp(), + }) + strategy_results = generate_strategy_metrics(stake_currency=stake_currency, max_open_trades=max_open_trades, all_results=all_results) @@ -309,13 +320,16 @@ def text_table_strategy(strategy_results, stake_currency: str) -> str: def text_table_add_metrics(strategy_results: Dict) -> str: - xxx = [ - ('Max Drawdown', f"{round(strategy_results['max_drawdown'] * 100, 2)}%"), - ('Drawdown Start', strategy_results['drawdown_start'].strftime('%Y-%m-%d %H:%M:%S')), - ('Drawdown End', strategy_results['drawdown_end'].strftime('%Y-%m-%d %H:%M:%S')), - ] + if len(strategy_results['trades']) > 0: + metrics = [ + ('Max Drawdown', f"{round(strategy_results['max_drawdown'] * 100, 2)}%"), + ('Drawdown Start', strategy_results['drawdown_start'].strftime('%Y-%m-%d %H:%M:%S')), + ('Drawdown End', strategy_results['drawdown_end'].strftime('%Y-%m-%d %H:%M:%S')), + ] - return tabulate(xxx, headers=["Metric", "Value"], tablefmt="orgtbl") + return tabulate(metrics, headers=["Metric", "Value"], tablefmt="orgtbl") + else: + return def show_backtest_results(config: Dict, backtest_stats: Dict): From cbcf3dbb43222e4863d7dacc27a726a8b261a43f Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 9 Jun 2020 08:00:35 +0200 Subject: [PATCH 2706/3421] Add more metrics to summarytable --- freqtrade/optimize/backtesting.py | 3 ++- freqtrade/optimize/optimize_reports.py | 26 ++++++++++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index e5014dd5a..c7a3515b5 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -417,5 +417,6 @@ class Backtesting: if self.config.get('export', False): store_backtest_result(self.config['exportfilename'], all_results) # Show backtest results - stats = generate_backtest_stats(self.config, data, all_results) + stats = generate_backtest_stats(self.config, data, all_results, + min_date=min_date, max_date=max_date) show_backtest_results(self.config, stats) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 0188761d4..dc3b52377 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -1,8 +1,9 @@ import logging -from datetime import timedelta, datetime +from datetime import datetime, timedelta, timezone from pathlib import Path from typing import Any, Dict, List +from arrow import Arrow from pandas import DataFrame from tabulate import tabulate @@ -191,11 +192,15 @@ def generate_edge_table(results: dict) -> str: def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], - all_results: Dict[str, DataFrame]) -> Dict[str, Any]: + all_results: Dict[str, DataFrame], + min_date: Arrow, max_date: Arrow + ) -> Dict[str, Any]: """ :param config: Configuration object used for backtest :param btdata: Backtest data :param all_results: backtest result - dictionary with { Strategy: results}. + :param min_date: Backtest start date + :param max_date: Backtest end date :return: Dictionary containing results per strategy and a stratgy summary. """ @@ -214,11 +219,19 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], results=results.loc[results['open_at_end']], skip_nan=True) + backtest_days = (max_date - min_date).days strat_stats = { 'trades': backtest_result_to_list(results), 'results_per_pair': pair_results, 'sell_reason_summary': sell_reason_stats, 'left_open_trades': left_open_results, + 'total_trades': len(results), + 'backtest_start': min_date.datetime, + 'backtest_start_ts': min_date.timestamp, + 'backtest_end': max_date.datetime, + 'backtest_end_ts': max_date.timestamp, + 'backtest_days': backtest_days, + 'trades_per_day': round(len(results) / backtest_days, 2) if backtest_days > 0 else None } result['strategy'][strategy] = strat_stats @@ -321,7 +334,16 @@ def text_table_strategy(strategy_results, stake_currency: str) -> str: def text_table_add_metrics(strategy_results: Dict) -> str: if len(strategy_results['trades']) > 0: + min_trade = min(strategy_results['trades'], key=lambda x: x[2]) metrics = [ + ('Total trades', strategy_results['total_trades']), + ('First trade', datetime.fromtimestamp(min_trade[2], + tz=timezone.utc).strftime('%Y-%m-%d %H:%M:%S')), + ('First trade Pair', min_trade[0]), + ('Backtesting from', strategy_results['backtest_start'].strftime('%Y-%m-%d %H:%M:%S')), + ('Backtesting to', strategy_results['backtest_end'].strftime('%Y-%m-%d %H:%M:%S')), + ('Trades per day', strategy_results['trades_per_day']), + ('', ''), # Empty line to improve readability ('Max Drawdown', f"{round(strategy_results['max_drawdown'] * 100, 2)}%"), ('Drawdown Start', strategy_results['drawdown_start'].strftime('%Y-%m-%d %H:%M:%S')), ('Drawdown End', strategy_results['drawdown_end'].strftime('%Y-%m-%d %H:%M:%S')), From fbddfaeacf3d861da6c4b2023215fd31820bd992 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 9 Jun 2020 08:07:34 +0200 Subject: [PATCH 2707/3421] Introduce DatetimePrintFormat --- freqtrade/constants.py | 1 + freqtrade/edge/edge_positioning.py | 11 ++++------- freqtrade/optimize/backtesting.py | 16 ++++++++-------- freqtrade/optimize/hyperopt.py | 9 +++++---- freqtrade/optimize/optimize_reports.py | 11 ++++++----- freqtrade/rpc/api_server.py | 3 ++- 6 files changed, 26 insertions(+), 25 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 2cfff07cd..ccb05a60f 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -26,6 +26,7 @@ AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'ShuffleFilter', 'SpreadFilter'] AVAILABLE_DATAHANDLERS = ['json', 'jsongz'] DRY_RUN_WALLET = 1000 +DATETIME_PRINT_FORMAT = '%Y-%m-%d %H:%M:%S' MATH_CLOSE_PREC = 1e-14 # Precision used for float comparisons DEFAULT_DATAFRAME_COLUMNS = ['date', 'open', 'high', 'low', 'close', 'volume'] # Don't modify sequence of DEFAULT_TRADES_COLUMNS diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index 41252ee51..dd2f44f23 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -9,7 +9,7 @@ import utils_find_1st as utf1st from pandas import DataFrame from freqtrade.configuration import TimeRange -from freqtrade.constants import UNLIMITED_STAKE_AMOUNT +from freqtrade.constants import UNLIMITED_STAKE_AMOUNT, DATETIME_PRINT_FORMAT from freqtrade.exceptions import OperationalException from freqtrade.data.history import get_timerange, load_data, refresh_data from freqtrade.strategy.interface import SellType @@ -121,12 +121,9 @@ class Edge: # Print timeframe min_date, max_date = get_timerange(preprocessed) - logger.info( - 'Measuring data from %s up to %s (%s days) ...', - min_date.isoformat(), - max_date.isoformat(), - (max_date - min_date).days - ) + logger.info(f'Measuring data from {min_date.strftime(DATETIME_PRINT_FORMAT)} ' + f'up to {max_date.strftime(DATETIME_PRINT_FORMAT)} ' + f'({(max_date - min_date).days} days)..') headers = ['date', 'buy', 'open', 'close', 'sell', 'high', 'low'] trades: list = [] diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index c7a3515b5..847434789 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -11,6 +11,7 @@ from typing import Any, Dict, List, NamedTuple, Optional, Tuple import arrow from pandas import DataFrame +from freqtrade.constants import DATETIME_PRINT_FORMAT from freqtrade.configuration import (TimeRange, remove_credentials, validate_config_consistency) from freqtrade.data import history @@ -137,10 +138,10 @@ class Backtesting: min_date, max_date = history.get_timerange(data) - logger.info( - 'Loading data from %s up to %s (%s days)..', - min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days - ) + logger.info(f'Loading data from {min_date.strftime(DATETIME_PRINT_FORMAT)} ' + f'up to {max_date.strftime(DATETIME_PRINT_FORMAT)} ' + f'({(max_date - min_date).days} days)..') + # Adjust startts forward if not enough data is available timerange.adjust_start_if_necessary(timeframe_to_seconds(self.timeframe), self.required_startup, min_date) @@ -400,10 +401,9 @@ class Backtesting: preprocessed[pair] = trim_dataframe(df, timerange) min_date, max_date = history.get_timerange(preprocessed) - logger.info( - 'Backtesting with data from %s up to %s (%s days)..', - min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days - ) + logger.info(f'Backtesting with data from {min_date.strftime(DATETIME_PRINT_FORMAT)} ' + f'up to {max_date.strftime(DATETIME_PRINT_FORMAT)} ' + f'({(max_date - min_date).days} days)..') # Execute backtest and print results all_results[self.strategy.get_strategy_name()] = self.backtest( processed=preprocessed, diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 153ae3861..69dff463b 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -25,6 +25,7 @@ import tabulate from os import path import io +from freqtrade.constants import DATETIME_PRINT_FORMAT from freqtrade.data.converter import trim_dataframe from freqtrade.data.history import get_timerange from freqtrade.exceptions import OperationalException @@ -625,10 +626,10 @@ class Hyperopt: preprocessed[pair] = trim_dataframe(df, timerange) min_date, max_date = get_timerange(data) - logger.info( - 'Hyperopting with data from %s up to %s (%s days)..', - min_date.isoformat(), max_date.isoformat(), (max_date - min_date).days - ) + logger.info(f'Hyperopting with data from {min_date.strftime(DATETIME_PRINT_FORMAT)} ' + f'up to {max_date.strftime(DATETIME_PRINT_FORMAT)} ' + f'({(max_date - min_date).days} days)..') + dump(preprocessed, self.data_pickle_file) # We don't need exchange instance anymore while running hyperopt diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index dc3b52377..6efda2956 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -7,6 +7,7 @@ from arrow import Arrow from pandas import DataFrame from tabulate import tabulate +from freqtrade.constants import DATETIME_PRINT_FORMAT from freqtrade.data.btanalysis import calculate_max_drawdown from freqtrade.misc import file_dump_json @@ -338,15 +339,15 @@ def text_table_add_metrics(strategy_results: Dict) -> str: metrics = [ ('Total trades', strategy_results['total_trades']), ('First trade', datetime.fromtimestamp(min_trade[2], - tz=timezone.utc).strftime('%Y-%m-%d %H:%M:%S')), + tz=timezone.utc).strftime(DATETIME_PRINT_FORMAT)), ('First trade Pair', min_trade[0]), - ('Backtesting from', strategy_results['backtest_start'].strftime('%Y-%m-%d %H:%M:%S')), - ('Backtesting to', strategy_results['backtest_end'].strftime('%Y-%m-%d %H:%M:%S')), + ('Backtesting from', strategy_results['backtest_start'].strftime(DATETIME_PRINT_FORMAT)), + ('Backtesting to', strategy_results['backtest_end'].strftime(DATETIME_PRINT_FORMAT)), ('Trades per day', strategy_results['trades_per_day']), ('', ''), # Empty line to improve readability ('Max Drawdown', f"{round(strategy_results['max_drawdown'] * 100, 2)}%"), - ('Drawdown Start', strategy_results['drawdown_start'].strftime('%Y-%m-%d %H:%M:%S')), - ('Drawdown End', strategy_results['drawdown_end'].strftime('%Y-%m-%d %H:%M:%S')), + ('Drawdown Start', strategy_results['drawdown_start'].strftime(DATETIME_PRINT_FORMAT)), + ('Drawdown End', strategy_results['drawdown_end'].strftime(DATETIME_PRINT_FORMAT)), ] return tabulate(metrics, headers=["Metric", "Value"], tablefmt="orgtbl") diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index a2cef9a98..e86a4783f 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -16,6 +16,7 @@ from werkzeug.security import safe_str_cmp from werkzeug.serving import make_server from freqtrade.__init__ import __version__ +from freqtrade.constants import DATETIME_PRINT_FORMAT from freqtrade.rpc.rpc import RPC, RPCException logger = logging.getLogger(__name__) @@ -31,7 +32,7 @@ class ArrowJSONEncoder(JSONEncoder): elif isinstance(obj, date): return obj.strftime("%Y-%m-%d") elif isinstance(obj, datetime): - return obj.strftime("%Y-%m-%d %H:%M:%S") + return obj.strftime(DATETIME_PRINT_FORMAT) iterable = iter(obj) except TypeError: pass From cf044d166edc68ba427d8c3b86f13ebb252a490b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 9 Jun 2020 08:14:18 +0200 Subject: [PATCH 2708/3421] Tests should use new Datetime format too --- freqtrade/optimize/optimize_reports.py | 4 ++-- tests/optimize/test_backtesting.py | 28 +++++++++++++------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 6efda2956..1e2d41e32 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -250,9 +250,9 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], strat_stats.update({ 'max_drawdown': 0.0, 'drawdown_start': datetime.min, - 'drawdown_start_ts': datetime.min.timestamp(), + 'drawdown_start_ts': datetime(1970, 1, 1).timestamp(), 'drawdown_end': datetime.min, - 'drawdown_end_ts': datetime.min.timestamp(), + 'drawdown_end_ts': datetime(1970, 1, 1).timestamp(), }) strategy_results = generate_strategy_metrics(stake_currency=stake_currency, diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 67da38648..853780b82 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -349,8 +349,8 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: exists = [ 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', - 'Backtesting with data from 2017-11-14T21:17:00+00:00 ' - 'up to 2017-11-14T22:59:00+00:00 (0 days)..' + 'Backtesting with data from 2017-11-14 21:17:00 ' + 'up to 2017-11-14 22:59:00 (0 days)..' ] for line in exists: assert log_has(line, caplog) @@ -672,10 +672,10 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): f'Using data directory: {testdatadir} ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', - 'Loading data from 2017-11-14T20:57:00+00:00 ' - 'up to 2017-11-14T22:58:00+00:00 (0 days)..', - 'Backtesting with data from 2017-11-14T21:17:00+00:00 ' - 'up to 2017-11-14T22:58:00+00:00 (0 days)..', + 'Loading data from 2017-11-14 20:57:00 ' + 'up to 2017-11-14 22:58:00 (0 days)..', + 'Backtesting with data from 2017-11-14 21:17:00 ' + 'up to 2017-11-14 22:58:00 (0 days)..', 'Parameter --enable-position-stacking detected ...' ] @@ -735,10 +735,10 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): f'Using data directory: {testdatadir} ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', - 'Loading data from 2017-11-14T20:57:00+00:00 ' - 'up to 2017-11-14T22:58:00+00:00 (0 days)..', - 'Backtesting with data from 2017-11-14T21:17:00+00:00 ' - 'up to 2017-11-14T22:58:00+00:00 (0 days)..', + 'Loading data from 2017-11-14 20:57:00 ' + 'up to 2017-11-14 22:58:00 (0 days)..', + 'Backtesting with data from 2017-11-14 21:17:00 ' + 'up to 2017-11-14 22:58:00 (0 days)..', 'Parameter --enable-position-stacking detected ...', 'Running backtesting for Strategy DefaultStrategy', 'Running backtesting for Strategy TestStrategyLegacy', @@ -818,10 +818,10 @@ def test_backtest_start_multi_strat_nomock(default_conf, mocker, caplog, testdat f'Using data directory: {testdatadir} ...', 'Using stake_currency: BTC ...', 'Using stake_amount: 0.001 ...', - 'Loading data from 2017-11-14T20:57:00+00:00 ' - 'up to 2017-11-14T22:58:00+00:00 (0 days)..', - 'Backtesting with data from 2017-11-14T21:17:00+00:00 ' - 'up to 2017-11-14T22:58:00+00:00 (0 days)..', + 'Loading data from 2017-11-14 20:57:00 ' + 'up to 2017-11-14 22:58:00 (0 days)..', + 'Backtesting with data from 2017-11-14 21:17:00 ' + 'up to 2017-11-14 22:58:00 (0 days)..', 'Parameter --enable-position-stacking detected ...', 'Running backtesting for Strategy DefaultStrategy', 'Running backtesting for Strategy TestStrategyLegacy', From 5fce7f3b22e50b23944737f60758178a428c133b Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 25 Jun 2020 20:39:55 +0200 Subject: [PATCH 2709/3421] Add market Change closes #2524 and #3518 --- freqtrade/data/btanalysis.py | 20 ++++++++++++++++++++ freqtrade/optimize/optimize_reports.py | 12 ++++++++---- tests/data/test_btanalysis.py | 9 +++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index b169850ba..8601f8176 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -168,6 +168,26 @@ def extract_trades_of_period(dataframe: pd.DataFrame, trades: pd.DataFrame, return trades +def calculate_market_change(data: Dict[str, pd.DataFrame], column: str = "close") -> float: + """ + Calculate market change based on "column". + Calculation is done by taking the first non-null and the last non-null element of each column + and calculating the pctchange as "(last - first) / first". + Then the results per pair are combined as mean. + + :param data: Dict of Dataframes, dict key should be pair. + :param column: Column in the original dataframes to use + :return: + """ + tmp_means = [] + for pair, df in data.items(): + start = df[column].dropna().iloc[0] + end = df[column].dropna().iloc[-1] + tmp_means.append((end - start) / start) + + return np.mean(tmp_means) + + def combine_dataframes_with_mean(data: Dict[str, pd.DataFrame], column: str = "close") -> pd.DataFrame: """ diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 1e2d41e32..4ec3dc3ad 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -8,7 +8,7 @@ from pandas import DataFrame from tabulate import tabulate from freqtrade.constants import DATETIME_PRINT_FORMAT -from freqtrade.data.btanalysis import calculate_max_drawdown +from freqtrade.data.btanalysis import calculate_max_drawdown, calculate_market_change from freqtrade.misc import file_dump_json logger = logging.getLogger(__name__) @@ -208,6 +208,8 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], stake_currency = config['stake_currency'] max_open_trades = config['max_open_trades'] result: Dict[str, Any] = {'strategy': {}} + market_change = calculate_market_change(btdata, 'close') + for strategy, results in all_results.items(): pair_results = generate_pair_metrics(btdata, stake_currency=stake_currency, @@ -232,8 +234,9 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'backtest_end': max_date.datetime, 'backtest_end_ts': max_date.timestamp, 'backtest_days': backtest_days, - 'trades_per_day': round(len(results) / backtest_days, 2) if backtest_days > 0 else None - } + 'trades_per_day': round(len(results) / backtest_days, 2) if backtest_days > 0 else None, + 'market_change': market_change, + } result['strategy'][strategy] = strat_stats try: @@ -348,11 +351,12 @@ def text_table_add_metrics(strategy_results: Dict) -> str: ('Max Drawdown', f"{round(strategy_results['max_drawdown'] * 100, 2)}%"), ('Drawdown Start', strategy_results['drawdown_start'].strftime(DATETIME_PRINT_FORMAT)), ('Drawdown End', strategy_results['drawdown_end'].strftime(DATETIME_PRINT_FORMAT)), + ('Market change', f"{round(strategy_results['market_change'] * 100, 2)}%"), ] return tabulate(metrics, headers=["Metric", "Value"], tablefmt="orgtbl") else: - return + return '' def show_backtest_results(config: Dict, backtest_stats: Dict): diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index b65db7fd8..d571569b9 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -8,6 +8,7 @@ from pandas import DataFrame, DateOffset, Timestamp, to_datetime from freqtrade.configuration import TimeRange from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, analyze_trade_parallelism, + calculate_market_change, calculate_max_drawdown, combine_dataframes_with_mean, create_cum_profit, @@ -135,6 +136,14 @@ def test_load_trades(default_conf, mocker): assert bt_mock.call_count == 0 +def test_calculate_market_change(testdatadir): + pairs = ["ETH/BTC", "ADA/BTC"] + data = load_data(datadir=testdatadir, pairs=pairs, timeframe='5m') + result = calculate_market_change(data) + assert isinstance(result, float) + assert pytest.approx(result) == 0.00955514 + + def test_combine_dataframes_with_mean(testdatadir): pairs = ["ETH/BTC", "ADA/BTC"] data = load_data(datadir=testdatadir, pairs=pairs, timeframe='5m') From 480c5117f1d41315eb9742bd64b028363b68be13 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 06:47:04 +0200 Subject: [PATCH 2710/3421] Handle empty return strings --- freqtrade/optimize/optimize_reports.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 4ec3dc3ad..9feb7f20d 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -373,21 +373,21 @@ def show_backtest_results(config: Dict, backtest_stats: Dict): table = text_table_sell_reason(sell_reason_stats=results['sell_reason_summary'], stake_currency=stake_currency) - if isinstance(table, str): + if isinstance(table, str) and len(table) > 0: print(' SELL REASON STATS '.center(len(table.splitlines()[0]), '=')) print(table) table = text_table_bt_results(results['left_open_trades'], stake_currency=stake_currency) - if isinstance(table, str): + if isinstance(table, str) and len(table) > 0: print(' LEFT OPEN TRADES REPORT '.center(len(table.splitlines()[0]), '=')) print(table) table = text_table_add_metrics(results) - if isinstance(table, str): + if isinstance(table, str) and len(table) > 0: print(' SUMMARY METRICS '.center(len(table.splitlines()[0]), '=')) print(table) - if isinstance(table, str): + if isinstance(table, str) and len(table) > 0: print('=' * len(table.splitlines()[0])) print() From 81c8e8677dfa98f18661259389972bd844c111ef Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 06:56:59 +0200 Subject: [PATCH 2711/3421] use 0 as profit mean, not nan --- freqtrade/optimize/optimize_reports.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 9feb7f20d..b334917ba 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -69,8 +69,8 @@ def _generate_result_line(result: DataFrame, max_open_trades: int, first_column: return { 'key': first_column, 'trades': len(result), - 'profit_mean': result['profit_percent'].mean(), - 'profit_mean_pct': result['profit_percent'].mean() * 100.0, + 'profit_mean': result['profit_percent'].mean() if len(result) > 0 else 0.0, + 'profit_mean_pct': result['profit_percent'].mean() * 100.0 if len(result) > 0 else 0.0, 'profit_sum': result['profit_percent'].sum(), 'profit_sum_pct': result['profit_percent'].sum() * 100.0, 'profit_total_abs': result['profit_abs'].sum(), From 415853583bf39b3a62a84e24f60bc74b5addae3a Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 07:46:59 +0200 Subject: [PATCH 2712/3421] Save backtest-stats --- freqtrade/data/btanalysis.py | 19 ++++++++++++++++++- freqtrade/optimize/backtesting.py | 6 ++++-- freqtrade/optimize/optimize_reports.py | 21 ++++++++++++++++----- 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 8601f8176..ecedc55db 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -3,7 +3,7 @@ Helpers when analyzing backtest data """ import logging from pathlib import Path -from typing import Dict, Union, Tuple +from typing import Dict, Union, Tuple, Any import numpy as np import pandas as pd @@ -20,6 +20,23 @@ BT_DATA_COLUMNS = ["pair", "profit_percent", "open_time", "close_time", "index", "open_rate", "close_rate", "open_at_end", "sell_reason"] +def load_backtest_stats(filename: Union[Path, str]) -> Dict[str, Any]: + """ + Load backtest statistics file. + :param filename: pathlib.Path object, or string pointing to the file. + :return: a dictionary containing the resulting file. + """ + if isinstance(filename, str): + filename = Path(filename) + if not filename.is_file(): + raise ValueError(f"File {filename} does not exist.") + + with filename.open() as file: + data = json_load(file) + + return data + + def load_backtest_data(filename: Union[Path, str]) -> pd.DataFrame: """ Load backtest data file. diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 847434789..e4df80a82 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -11,9 +11,9 @@ from typing import Any, Dict, List, NamedTuple, Optional, Tuple import arrow from pandas import DataFrame -from freqtrade.constants import DATETIME_PRINT_FORMAT from freqtrade.configuration import (TimeRange, remove_credentials, validate_config_consistency) +from freqtrade.constants import DATETIME_PRINT_FORMAT from freqtrade.data import history from freqtrade.data.converter import trim_dataframe from freqtrade.data.dataprovider import DataProvider @@ -21,7 +21,8 @@ from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds from freqtrade.optimize.optimize_reports import (generate_backtest_stats, show_backtest_results, - store_backtest_result) + store_backtest_result, + store_backtest_stats) from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver @@ -420,3 +421,4 @@ class Backtesting: stats = generate_backtest_stats(self.config, data, all_results, min_date=min_date, max_date=max_date) show_backtest_results(self.config, stats) + store_backtest_stats(self.config['exportfilename'], stats) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index b334917ba..3c0bfcb96 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -14,6 +14,18 @@ from freqtrade.misc import file_dump_json logger = logging.getLogger(__name__) +def store_backtest_stats(recordfilename: Path, stats: Dict[str, DataFrame]) -> None: + + filename = Path.joinpath(recordfilename.parent, + f'{recordfilename.stem}-{datetime.now().isoformat()}' + ).with_suffix(recordfilename.suffix) + file_dump_json(filename, stats) + + latest_filename = Path.joinpath(recordfilename.parent, + '.last_result.json') + file_dump_json(latest_filename, {'latest_backtest': str(filename.name)}) + + def store_backtest_result(recordfilename: Path, all_results: Dict[str, DataFrame]) -> None: """ Stores backtest results to file (one file per strategy) @@ -224,7 +236,7 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], backtest_days = (max_date - min_date).days strat_stats = { - 'trades': backtest_result_to_list(results), + 'trades': results.to_dict(orient='records'), 'results_per_pair': pair_results, 'sell_reason_summary': sell_reason_stats, 'left_open_trades': left_open_results, @@ -338,12 +350,11 @@ def text_table_strategy(strategy_results, stake_currency: str) -> str: def text_table_add_metrics(strategy_results: Dict) -> str: if len(strategy_results['trades']) > 0: - min_trade = min(strategy_results['trades'], key=lambda x: x[2]) + min_trade = min(strategy_results['trades'], key=lambda x: x['open_time']) metrics = [ ('Total trades', strategy_results['total_trades']), - ('First trade', datetime.fromtimestamp(min_trade[2], - tz=timezone.utc).strftime(DATETIME_PRINT_FORMAT)), - ('First trade Pair', min_trade[0]), + ('First trade', min_trade['open_time'].strftime(DATETIME_PRINT_FORMAT)), + ('First trade Pair', min_trade['pair']), ('Backtesting from', strategy_results['backtest_start'].strftime(DATETIME_PRINT_FORMAT)), ('Backtesting to', strategy_results['backtest_end'].strftime(DATETIME_PRINT_FORMAT)), ('Trades per day', strategy_results['trades_per_day']), From b068e7c564021ba178c969602461e9d3f57d1790 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 09:19:44 +0200 Subject: [PATCH 2713/3421] Rename open_time and close_time to *date --- freqtrade/data/btanalysis.py | 28 +++++++++---------- freqtrade/edge/edge_positioning.py | 6 ++-- freqtrade/optimize/backtesting.py | 19 +++++++------ .../optimize/hyperopt_loss_sharpe_daily.py | 2 +- .../optimize/hyperopt_loss_sortino_daily.py | 2 +- freqtrade/optimize/optimize_reports.py | 8 +++--- freqtrade/plot/plotting.py | 10 +++---- 7 files changed, 38 insertions(+), 37 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index ecedc55db..f174b8ea9 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -16,7 +16,7 @@ from freqtrade.persistence import Trade logger = logging.getLogger(__name__) # must align with columns in backtest.py -BT_DATA_COLUMNS = ["pair", "profit_percent", "open_time", "close_time", "index", "duration", +BT_DATA_COLUMNS = ["pair", "profit_percent", "open_date", "close_date", "index", "duration", "open_rate", "close_rate", "open_at_end", "sell_reason"] @@ -54,18 +54,18 @@ def load_backtest_data(filename: Union[Path, str]) -> pd.DataFrame: df = pd.DataFrame(data, columns=BT_DATA_COLUMNS) - df['open_time'] = pd.to_datetime(df['open_time'], + df['open_date'] = pd.to_datetime(df['open_date'], unit='s', utc=True, infer_datetime_format=True ) - df['close_time'] = pd.to_datetime(df['close_time'], + df['close_date'] = pd.to_datetime(df['close_date'], unit='s', utc=True, infer_datetime_format=True ) df['profit'] = df['close_rate'] - df['open_rate'] - df = df.sort_values("open_time").reset_index(drop=True) + df = df.sort_values("open_date").reset_index(drop=True) return df @@ -79,9 +79,9 @@ def analyze_trade_parallelism(results: pd.DataFrame, timeframe: str) -> pd.DataF """ from freqtrade.exchange import timeframe_to_minutes timeframe_min = timeframe_to_minutes(timeframe) - dates = [pd.Series(pd.date_range(row[1].open_time, row[1].close_time, + dates = [pd.Series(pd.date_range(row[1]['open_date'], row[1]['close_date'], freq=f"{timeframe_min}min")) - for row in results[['open_time', 'close_time']].iterrows()] + for row in results[['open_date', 'close_date']].iterrows()] deltas = [len(x) for x in dates] dates = pd.Series(pd.concat(dates).values, name='date') df2 = pd.DataFrame(np.repeat(results.values, deltas, axis=0), columns=results.columns) @@ -116,7 +116,7 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: trades: pd.DataFrame = pd.DataFrame([], columns=BT_DATA_COLUMNS) persistence.init(db_url, clean_open_orders=False) - columns = ["pair", "open_time", "close_time", "profit", "profit_percent", + columns = ["pair", "open_date", "close_date", "profit", "profit_percent", "open_rate", "close_rate", "amount", "duration", "sell_reason", "fee_open", "fee_close", "open_rate_requested", "close_rate_requested", "stake_amount", "max_rate", "min_rate", "id", "exchange", @@ -180,8 +180,8 @@ def extract_trades_of_period(dataframe: pd.DataFrame, trades: pd.DataFrame, else: trades_start = dataframe.iloc[0]['date'] trades_stop = dataframe.iloc[-1]['date'] - trades = trades.loc[(trades['open_time'] >= trades_start) & - (trades['close_time'] <= trades_stop)] + trades = trades.loc[(trades['open_date'] >= trades_start) & + (trades['close_date'] <= trades_stop)] return trades @@ -227,7 +227,7 @@ def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str, """ Adds a column `col_name` with the cumulative profit for the given trades array. :param df: DataFrame with date index - :param trades: DataFrame containing trades (requires columns close_time and profit_percent) + :param trades: DataFrame containing trades (requires columns close_date and profit_percent) :param col_name: Column name that will be assigned the results :param timeframe: Timeframe used during the operations :return: Returns df with one additional column, col_name, containing the cumulative profit. @@ -238,7 +238,7 @@ def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str, from freqtrade.exchange import timeframe_to_minutes timeframe_minutes = timeframe_to_minutes(timeframe) # Resample to timeframe to make sure trades match candles - _trades_sum = trades.resample(f'{timeframe_minutes}min', on='close_time' + _trades_sum = trades.resample(f'{timeframe_minutes}min', on='close_date' )[['profit_percent']].sum() df.loc[:, col_name] = _trades_sum.cumsum() # Set first value to 0 @@ -248,13 +248,13 @@ def create_cum_profit(df: pd.DataFrame, trades: pd.DataFrame, col_name: str, return df -def calculate_max_drawdown(trades: pd.DataFrame, *, date_col: str = 'close_time', +def calculate_max_drawdown(trades: pd.DataFrame, *, date_col: str = 'close_date', value_col: str = 'profit_percent' ) -> Tuple[float, pd.Timestamp, pd.Timestamp]: """ Calculate max drawdown and the corresponding close dates - :param trades: DataFrame containing trades (requires columns close_time and profit_percent) - :param date_col: Column in DataFrame to use for dates (defaults to 'close_time') + :param trades: DataFrame containing trades (requires columns close_date and profit_percent) + :param date_col: Column in DataFrame to use for dates (defaults to 'close_date') :param value_col: Column in DataFrame to use for values (defaults to 'profit_percent') :return: Tuple (float, highdate, lowdate) with absolute max drawdown, high and low time :raise: ValueError if trade-dataframe was found empty. diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index dd2f44f23..169732314 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -237,7 +237,7 @@ class Edge: # All returned values are relative, they are defined as ratios. stake = 0.015 - result['trade_duration'] = result['close_time'] - result['open_time'] + result['trade_duration'] = result['close_date'] - result['open_date'] result['trade_duration'] = result['trade_duration'].map( lambda x: int(x.total_seconds() / 60)) @@ -427,8 +427,8 @@ class Edge: 'stoploss': stoploss, 'profit_ratio': '', 'profit_abs': '', - 'open_time': date_column[open_trade_index], - 'close_time': date_column[exit_index], + 'open_date': date_column[open_trade_index], + 'close_date': date_column[exit_index], 'open_index': start_point + open_trade_index, 'close_index': start_point + exit_index, 'trade_duration': '', diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index e4df80a82..4197ec087 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -39,8 +39,8 @@ class BacktestResult(NamedTuple): pair: str profit_percent: float profit_abs: float - open_time: datetime - close_time: datetime + open_date: datetime + close_date: datetime open_index: int close_index: int trade_duration: float @@ -248,8 +248,8 @@ class Backtesting: return BacktestResult(pair=pair, profit_percent=trade.calc_profit_ratio(rate=closerate), profit_abs=trade.calc_profit(rate=closerate), - open_time=buy_row.date, - close_time=sell_row.date, + open_date=buy_row.date, + close_date=sell_row.date, trade_duration=trade_dur, open_index=buy_row.Index, close_index=sell_row.Index, @@ -264,8 +264,8 @@ class Backtesting: bt_res = BacktestResult(pair=pair, profit_percent=trade.calc_profit_ratio(rate=sell_row.open), profit_abs=trade.calc_profit(rate=sell_row.open), - open_time=buy_row.date, - close_time=sell_row.date, + open_date=buy_row.date, + close_date=sell_row.date, trade_duration=int(( sell_row.date - buy_row.date).total_seconds() // 60), open_index=buy_row.Index, @@ -358,8 +358,8 @@ class Backtesting: if trade_entry: logger.debug(f"{pair} - Locking pair till " - f"close_time={trade_entry.close_time}") - lock_pair_until[pair] = trade_entry.close_time + f"close_date={trade_entry.close_date}") + lock_pair_until[pair] = trade_entry.close_date trades.append(trade_entry) else: # Set lock_pair_until to end of testing period if trade could not be closed @@ -421,4 +421,5 @@ class Backtesting: stats = generate_backtest_stats(self.config, data, all_results, min_date=min_date, max_date=max_date) show_backtest_results(self.config, stats) - store_backtest_stats(self.config['exportfilename'], stats) + if self.config.get('export', False): + store_backtest_stats(self.config['exportfilename'], stats) diff --git a/freqtrade/optimize/hyperopt_loss_sharpe_daily.py b/freqtrade/optimize/hyperopt_loss_sharpe_daily.py index e4cd1d749..bcba73a7f 100644 --- a/freqtrade/optimize/hyperopt_loss_sharpe_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sharpe_daily.py @@ -43,7 +43,7 @@ class SharpeHyperOptLossDaily(IHyperOptLoss): normalize=True) sum_daily = ( - results.resample(resample_freq, on='close_time').agg( + results.resample(resample_freq, on='close_date').agg( {"profit_percent_after_slippage": sum}).reindex(t_index).fillna(0) ) diff --git a/freqtrade/optimize/hyperopt_loss_sortino_daily.py b/freqtrade/optimize/hyperopt_loss_sortino_daily.py index cd6a8bcc2..3b099a253 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino_daily.py +++ b/freqtrade/optimize/hyperopt_loss_sortino_daily.py @@ -45,7 +45,7 @@ class SortinoHyperOptLossDaily(IHyperOptLoss): normalize=True) sum_daily = ( - results.resample(resample_freq, on='close_time').agg( + results.resample(resample_freq, on='close_date').agg( {"profit_percent_after_slippage": sum}).reindex(t_index).fillna(0) ) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 3c0bfcb96..63c2d2022 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -52,8 +52,8 @@ def backtest_result_to_list(results: DataFrame) -> List[List]: :param results: Dataframe containing results for one strategy :return: List of Lists containing the trades """ - return [[t.pair, t.profit_percent, t.open_time.timestamp(), - t.close_time.timestamp(), t.open_index - 1, t.trade_duration, + return [[t.pair, t.profit_percent, t.open_date.timestamp(), + t.open_date.timestamp(), t.open_index - 1, t.trade_duration, t.open_rate, t.close_rate, t.open_at_end, t.sell_reason.value] for index, t in results.iterrows()] @@ -350,10 +350,10 @@ def text_table_strategy(strategy_results, stake_currency: str) -> str: def text_table_add_metrics(strategy_results: Dict) -> str: if len(strategy_results['trades']) > 0: - min_trade = min(strategy_results['trades'], key=lambda x: x['open_time']) + min_trade = min(strategy_results['trades'], key=lambda x: x['open_date']) metrics = [ ('Total trades', strategy_results['total_trades']), - ('First trade', min_trade['open_time'].strftime(DATETIME_PRINT_FORMAT)), + ('First trade', min_trade['open_date'].strftime(DATETIME_PRINT_FORMAT)), ('First trade Pair', min_trade['pair']), ('Backtesting from', strategy_results['backtest_start'].strftime(DATETIME_PRINT_FORMAT)), ('Backtesting to', strategy_results['backtest_end'].strftime(DATETIME_PRINT_FORMAT)), diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index e8b0b4938..6d50defaf 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -63,7 +63,7 @@ def init_plotscript(config): exportfilename=config.get('exportfilename'), no_trades=no_trades ) - trades = trim_dataframe(trades, timerange, 'open_time') + trades = trim_dataframe(trades, timerange, 'open_date') return {"ohlcv": data, "trades": trades, @@ -166,7 +166,7 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: f"{row['sell_reason']}, {row['duration']} min", axis=1) trade_buys = go.Scatter( - x=trades["open_time"], + x=trades["open_date"], y=trades["open_rate"], mode='markers', name='Trade buy', @@ -181,7 +181,7 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: ) trade_sells = go.Scatter( - x=trades.loc[trades['profit_percent'] > 0, "close_time"], + x=trades.loc[trades['profit_percent'] > 0, "close_date"], y=trades.loc[trades['profit_percent'] > 0, "close_rate"], text=trades.loc[trades['profit_percent'] > 0, "desc"], mode='markers', @@ -194,7 +194,7 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: ) ) trade_sells_loss = go.Scatter( - x=trades.loc[trades['profit_percent'] <= 0, "close_time"], + x=trades.loc[trades['profit_percent'] <= 0, "close_date"], y=trades.loc[trades['profit_percent'] <= 0, "close_rate"], text=trades.loc[trades['profit_percent'] <= 0, "desc"], mode='markers', @@ -506,7 +506,7 @@ def plot_profit(config: Dict[str, Any]) -> None: # Remove open pairs - we don't know the profit yet so can't calculate profit for these. # Also, If only one open pair is left, then the profit-generation would fail. trades = trades[(trades['pair'].isin(plot_elements["pairs"])) - & (~trades['close_time'].isnull()) + & (~trades['close_date'].isnull()) ] if len(trades) == 0: raise OperationalException("No trades found, cannot generate Profit-plot without " From 28817187331fd7d84a55aa69cc38504263f43c0d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 09:21:28 +0200 Subject: [PATCH 2714/3421] Adapt tests for new column names --- tests/data/test_btanalysis.py | 24 ++++++++++++------------ tests/edge/test_edge.py | 16 ++++++++-------- tests/optimize/test_backtest_detail.py | 4 ++-- tests/optimize/test_backtesting.py | 16 ++++++++-------- tests/optimize/test_hyperopt.py | 2 +- tests/optimize/test_optimize_reports.py | 4 ++-- tests/test_plotting.py | 2 +- 7 files changed, 34 insertions(+), 34 deletions(-) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index d571569b9..077db19f1 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -47,7 +47,7 @@ def test_load_trades_from_db(default_conf, fee, mocker): assert len(trades) == 3 assert isinstance(trades, DataFrame) assert "pair" in trades.columns - assert "open_time" in trades.columns + assert "open_date" in trades.columns assert "profit_percent" in trades.columns for col in BT_DATA_COLUMNS: @@ -67,13 +67,13 @@ def test_extract_trades_of_period(testdatadir): {'pair': [pair, pair, pair, pair], 'profit_percent': [0.0, 0.1, -0.2, -0.5], 'profit_abs': [0.0, 1, -2, -5], - 'open_time': to_datetime([Arrow(2017, 11, 13, 15, 40, 0).datetime, + 'open_date': to_datetime([Arrow(2017, 11, 13, 15, 40, 0).datetime, Arrow(2017, 11, 14, 9, 41, 0).datetime, Arrow(2017, 11, 14, 14, 20, 0).datetime, Arrow(2017, 11, 15, 3, 40, 0).datetime, ], utc=True ), - 'close_time': to_datetime([Arrow(2017, 11, 13, 16, 40, 0).datetime, + 'close_date': to_datetime([Arrow(2017, 11, 13, 16, 40, 0).datetime, Arrow(2017, 11, 14, 10, 41, 0).datetime, Arrow(2017, 11, 14, 15, 25, 0).datetime, Arrow(2017, 11, 15, 3, 55, 0).datetime, @@ -82,10 +82,10 @@ def test_extract_trades_of_period(testdatadir): trades1 = extract_trades_of_period(data, trades) # First and last trade are dropped as they are out of range assert len(trades1) == 2 - assert trades1.iloc[0].open_time == Arrow(2017, 11, 14, 9, 41, 0).datetime - assert trades1.iloc[0].close_time == Arrow(2017, 11, 14, 10, 41, 0).datetime - assert trades1.iloc[-1].open_time == Arrow(2017, 11, 14, 14, 20, 0).datetime - assert trades1.iloc[-1].close_time == Arrow(2017, 11, 14, 15, 25, 0).datetime + assert trades1.iloc[0].open_date == Arrow(2017, 11, 14, 9, 41, 0).datetime + assert trades1.iloc[0].close_date == Arrow(2017, 11, 14, 10, 41, 0).datetime + assert trades1.iloc[-1].open_date == Arrow(2017, 11, 14, 14, 20, 0).datetime + assert trades1.iloc[-1].close_date == Arrow(2017, 11, 14, 15, 25, 0).datetime def test_analyze_trade_parallelism(default_conf, mocker, testdatadir): @@ -174,7 +174,7 @@ def test_create_cum_profit1(testdatadir): filename = testdatadir / "backtest-result_test.json" bt_data = load_backtest_data(filename) # Move close-time to "off" the candle, to make sure the logic still works - bt_data.loc[:, 'close_time'] = bt_data.loc[:, 'close_time'] + DateOffset(seconds=20) + bt_data.loc[:, 'close_date'] = bt_data.loc[:, 'close_date'] + DateOffset(seconds=20) timerange = TimeRange.parse_timerange("20180110-20180112") df = load_pair_history(pair="TRX/BTC", timeframe='5m', @@ -213,11 +213,11 @@ def test_calculate_max_drawdown2(): -0.033961, 0.010680, 0.010886, -0.029274, 0.011178, 0.010693, 0.010711] dates = [Arrow(2020, 1, 1).shift(days=i) for i in range(len(values))] - df = DataFrame(zip(values, dates), columns=['profit', 'open_time']) + df = DataFrame(zip(values, dates), columns=['profit', 'open_date']) # sort by profit and reset index df = df.sort_values('profit').reset_index(drop=True) df1 = df.copy() - drawdown, h, low = calculate_max_drawdown(df, date_col='open_time', value_col='profit') + drawdown, h, low = calculate_max_drawdown(df, date_col='open_date', value_col='profit') # Ensure df has not been altered. assert df.equals(df1) @@ -226,6 +226,6 @@ def test_calculate_max_drawdown2(): assert h < low assert drawdown == 0.091755 - df = DataFrame(zip(values[:5], dates[:5]), columns=['profit', 'open_time']) + df = DataFrame(zip(values[:5], dates[:5]), columns=['profit', 'open_date']) with pytest.raises(ValueError, match='No losing trade, therefore no drawdown.'): - calculate_max_drawdown(df, date_col='open_time', value_col='profit') + calculate_max_drawdown(df, date_col='open_date', value_col='profit') diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index cf9cb6fe1..ea1e709a2 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -163,8 +163,8 @@ def test_edge_results(edge_conf, mocker, caplog, data) -> None: for c, trade in enumerate(data.trades): res = results.iloc[c] assert res.exit_type == trade.sell_reason - assert res.open_time == _get_frame_time_from_offset(trade.open_tick).replace(tzinfo=None) - assert res.close_time == _get_frame_time_from_offset(trade.close_tick).replace(tzinfo=None) + assert res.open_date == _get_frame_time_from_offset(trade.open_tick).replace(tzinfo=None) + assert res.close_date == _get_frame_time_from_offset(trade.close_tick).replace(tzinfo=None) def test_adjust(mocker, edge_conf): @@ -354,8 +354,8 @@ def test_process_expectancy(mocker, edge_conf, fee, risk_reward_ratio, expectanc 'stoploss': -0.9, 'profit_percent': '', 'profit_abs': '', - 'open_time': np.datetime64('2018-10-03T00:05:00.000000000'), - 'close_time': np.datetime64('2018-10-03T00:10:00.000000000'), + 'open_date': np.datetime64('2018-10-03T00:05:00.000000000'), + 'close_date': np.datetime64('2018-10-03T00:10:00.000000000'), 'open_index': 1, 'close_index': 1, 'trade_duration': '', @@ -367,8 +367,8 @@ def test_process_expectancy(mocker, edge_conf, fee, risk_reward_ratio, expectanc 'stoploss': -0.9, 'profit_percent': '', 'profit_abs': '', - 'open_time': np.datetime64('2018-10-03T00:20:00.000000000'), - 'close_time': np.datetime64('2018-10-03T00:25:00.000000000'), + 'open_date': np.datetime64('2018-10-03T00:20:00.000000000'), + 'close_date': np.datetime64('2018-10-03T00:25:00.000000000'), 'open_index': 4, 'close_index': 4, 'trade_duration': '', @@ -380,8 +380,8 @@ def test_process_expectancy(mocker, edge_conf, fee, risk_reward_ratio, expectanc 'stoploss': -0.9, 'profit_percent': '', 'profit_abs': '', - 'open_time': np.datetime64('2018-10-03T00:30:00.000000000'), - 'close_time': np.datetime64('2018-10-03T00:40:00.000000000'), + 'open_date': np.datetime64('2018-10-03T00:30:00.000000000'), + 'close_date': np.datetime64('2018-10-03T00:40:00.000000000'), 'open_index': 6, 'close_index': 7, 'trade_duration': '', diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py index 9b3043086..f6ac95aeb 100644 --- a/tests/optimize/test_backtest_detail.py +++ b/tests/optimize/test_backtest_detail.py @@ -395,5 +395,5 @@ def test_backtest_results(default_conf, fee, mocker, caplog, data) -> None: for c, trade in enumerate(data.trades): res = results.iloc[c] assert res.sell_reason == trade.sell_reason - assert res.open_time == _get_frame_time_from_offset(trade.open_tick) - assert res.close_time == _get_frame_time_from_offset(trade.close_tick) + assert res.open_date == _get_frame_time_from_offset(trade.open_tick) + assert res.close_date == _get_frame_time_from_offset(trade.close_tick) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 853780b82..e7a13f251 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -459,10 +459,10 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: {'pair': [pair, pair], 'profit_percent': [0.0, 0.0], 'profit_abs': [0.0, 0.0], - 'open_time': pd.to_datetime([Arrow(2018, 1, 29, 18, 40, 0).datetime, + 'open_date': pd.to_datetime([Arrow(2018, 1, 29, 18, 40, 0).datetime, Arrow(2018, 1, 30, 3, 30, 0).datetime], utc=True ), - 'close_time': pd.to_datetime([Arrow(2018, 1, 29, 22, 35, 0).datetime, + 'close_date': pd.to_datetime([Arrow(2018, 1, 29, 22, 35, 0).datetime, Arrow(2018, 1, 30, 4, 10, 0).datetime], utc=True), 'open_index': [78, 184], 'close_index': [125, 192], @@ -475,12 +475,12 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: pd.testing.assert_frame_equal(results, expected) data_pair = processed[pair] for _, t in results.iterrows(): - ln = data_pair.loc[data_pair["date"] == t["open_time"]] + ln = data_pair.loc[data_pair["date"] == t["open_date"]] # Check open trade rate alignes to open rate assert ln is not None assert round(ln.iloc[0]["open"], 6) == round(t["open_rate"], 6) # check close trade rate alignes to close rate or is between high and low - ln = data_pair.loc[data_pair["date"] == t["close_time"]] + ln = data_pair.loc[data_pair["date"] == t["close_date"]] assert (round(ln.iloc[0]["open"], 6) == round(t["close_rate"], 6) or round(ln.iloc[0]["low"], 6) < round( t["close_rate"], 6) < round(ln.iloc[0]["high"], 6)) @@ -756,10 +756,10 @@ def test_backtest_start_multi_strat_nomock(default_conf, mocker, caplog, testdat pd.DataFrame({'pair': ['XRP/BTC', 'LTC/BTC'], 'profit_percent': [0.0, 0.0], 'profit_abs': [0.0, 0.0], - 'open_time': pd.to_datetime(['2018-01-29 18:40:00', + 'open_date': pd.to_datetime(['2018-01-29 18:40:00', '2018-01-30 03:30:00', ], utc=True ), - 'close_time': pd.to_datetime(['2018-01-29 20:45:00', + 'close_date': pd.to_datetime(['2018-01-29 20:45:00', '2018-01-30 05:35:00', ], utc=True), 'open_index': [78, 184], 'close_index': [125, 192], @@ -772,11 +772,11 @@ def test_backtest_start_multi_strat_nomock(default_conf, mocker, caplog, testdat pd.DataFrame({'pair': ['XRP/BTC', 'LTC/BTC', 'ETH/BTC'], 'profit_percent': [0.03, 0.01, 0.1], 'profit_abs': [0.01, 0.02, 0.2], - 'open_time': pd.to_datetime(['2018-01-29 18:40:00', + 'open_date': pd.to_datetime(['2018-01-29 18:40:00', '2018-01-30 03:30:00', '2018-01-30 05:30:00'], utc=True ), - 'close_time': pd.to_datetime(['2018-01-29 20:45:00', + 'close_date': pd.to_datetime(['2018-01-29 20:45:00', '2018-01-30 05:35:00', '2018-01-30 08:30:00'], utc=True), 'open_index': [78, 184, 185], diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 564725709..00edd8ad2 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -46,7 +46,7 @@ def hyperopt_results(): 'profit_abs': [-0.2, 0.4, 0.6], 'trade_duration': [10, 30, 10], 'sell_reason': [SellType.STOP_LOSS, SellType.ROI, SellType.ROI], - 'close_time': + 'close_date': [ datetime(2019, 1, 1, 9, 26, 3, 478039), datetime(2019, 2, 1, 9, 26, 3, 478039), diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 175405e4c..7efd87787 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -204,11 +204,11 @@ def test_backtest_record(default_conf, fee, mocker): "UNITTEST/BTC", "UNITTEST/BTC"], "profit_percent": [0.003312, 0.010801, 0.013803, 0.002780], "profit_abs": [0.000003, 0.000011, 0.000014, 0.000003], - "open_time": [Arrow(2017, 11, 14, 19, 32, 00).datetime, + "open_date": [Arrow(2017, 11, 14, 19, 32, 00).datetime, Arrow(2017, 11, 14, 21, 36, 00).datetime, Arrow(2017, 11, 14, 22, 12, 00).datetime, Arrow(2017, 11, 14, 22, 44, 00).datetime], - "close_time": [Arrow(2017, 11, 14, 21, 35, 00).datetime, + "close_date": [Arrow(2017, 11, 14, 21, 35, 00).datetime, Arrow(2017, 11, 14, 22, 10, 00).datetime, Arrow(2017, 11, 14, 22, 43, 00).datetime, Arrow(2017, 11, 14, 22, 58, 00).datetime], diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 05805eb24..83a41deeb 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -267,7 +267,7 @@ def test_generate_profit_graph(testdatadir): trades = load_backtest_data(filename) timerange = TimeRange.parse_timerange("20180110-20180112") pairs = ["TRX/BTC", "XLM/BTC"] - trades = trades[trades['close_time'] < pd.Timestamp('2018-01-12', tz='UTC')] + trades = trades[trades['close_date'] < pd.Timestamp('2018-01-12', tz='UTC')] data = history.load_data(datadir=testdatadir, pairs=pairs, From 04cbc2cde5a832119db5c95b75e720974794fa5d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 09:22:50 +0200 Subject: [PATCH 2715/3421] Shorten variable --- freqtrade/optimize/optimize_reports.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 63c2d2022..de609589a 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -1,5 +1,5 @@ import logging -from datetime import datetime, timedelta, timezone +from datetime import datetime, timedelta from pathlib import Path from typing import Any, Dict, List @@ -348,21 +348,21 @@ def text_table_strategy(strategy_results, stake_currency: str) -> str: floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") -def text_table_add_metrics(strategy_results: Dict) -> str: - if len(strategy_results['trades']) > 0: - min_trade = min(strategy_results['trades'], key=lambda x: x['open_date']) +def text_table_add_metrics(strat_results: Dict) -> str: + if len(strat_results['trades']) > 0: + min_trade = min(strat_results['trades'], key=lambda x: x['open_date']) metrics = [ - ('Total trades', strategy_results['total_trades']), + ('Total trades', strat_results['total_trades']), ('First trade', min_trade['open_date'].strftime(DATETIME_PRINT_FORMAT)), ('First trade Pair', min_trade['pair']), - ('Backtesting from', strategy_results['backtest_start'].strftime(DATETIME_PRINT_FORMAT)), - ('Backtesting to', strategy_results['backtest_end'].strftime(DATETIME_PRINT_FORMAT)), - ('Trades per day', strategy_results['trades_per_day']), + ('Backtesting from', strat_results['backtest_start'].strftime(DATETIME_PRINT_FORMAT)), + ('Backtesting to', strat_results['backtest_end'].strftime(DATETIME_PRINT_FORMAT)), + ('Trades per day', strat_results['trades_per_day']), ('', ''), # Empty line to improve readability - ('Max Drawdown', f"{round(strategy_results['max_drawdown'] * 100, 2)}%"), - ('Drawdown Start', strategy_results['drawdown_start'].strftime(DATETIME_PRINT_FORMAT)), - ('Drawdown End', strategy_results['drawdown_end'].strftime(DATETIME_PRINT_FORMAT)), - ('Market change', f"{round(strategy_results['market_change'] * 100, 2)}%"), + ('Max Drawdown', f"{round(strat_results['max_drawdown'] * 100, 2)}%"), + ('Drawdown Start', strat_results['drawdown_start'].strftime(DATETIME_PRINT_FORMAT)), + ('Drawdown End', strat_results['drawdown_end'].strftime(DATETIME_PRINT_FORMAT)), + ('Market change', f"{round(strat_results['market_change'] * 100, 2)}%"), ] return tabulate(metrics, headers=["Metric", "Value"], tablefmt="orgtbl") From 0fa56be9d2a06fcc11b4f9bcdfa5b3564315539d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 09:27:07 +0200 Subject: [PATCH 2716/3421] remove openIndex and closeIndex from backtest-report --- freqtrade/edge/edge_positioning.py | 2 -- freqtrade/optimize/backtesting.py | 6 ------ freqtrade/optimize/optimize_reports.py | 4 +++- tests/edge/test_edge.py | 6 ------ tests/optimize/test_backtesting.py | 6 ------ tests/optimize/test_optimize_reports.py | 2 -- 6 files changed, 3 insertions(+), 23 deletions(-) diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index 169732314..9843d4e83 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -429,8 +429,6 @@ class Edge: 'profit_abs': '', 'open_date': date_column[open_trade_index], 'close_date': date_column[exit_index], - 'open_index': start_point + open_trade_index, - 'close_index': start_point + exit_index, 'trade_duration': '', 'open_rate': round(open_price, 15), 'close_rate': round(exit_price, 15), diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 4197ec087..1eef4f4b9 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -41,8 +41,6 @@ class BacktestResult(NamedTuple): profit_abs: float open_date: datetime close_date: datetime - open_index: int - close_index: int trade_duration: float open_at_end: bool open_rate: float @@ -251,8 +249,6 @@ class Backtesting: open_date=buy_row.date, close_date=sell_row.date, trade_duration=trade_dur, - open_index=buy_row.Index, - close_index=sell_row.Index, open_at_end=False, open_rate=buy_row.open, close_rate=closerate, @@ -268,8 +264,6 @@ class Backtesting: close_date=sell_row.date, trade_duration=int(( sell_row.date - buy_row.date).total_seconds() // 60), - open_index=buy_row.Index, - close_index=sell_row.Index, open_at_end=True, open_rate=buy_row.open, close_rate=sell_row.open, diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index de609589a..8f9104640 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -52,8 +52,10 @@ def backtest_result_to_list(results: DataFrame) -> List[List]: :param results: Dataframe containing results for one strategy :return: List of Lists containing the trades """ + # Return 0 as "index" for compatibility reasons (for now) + # TODO: Evaluate if we can remove this return [[t.pair, t.profit_percent, t.open_date.timestamp(), - t.open_date.timestamp(), t.open_index - 1, t.trade_duration, + t.open_date.timestamp(), 0, t.trade_duration, t.open_rate, t.close_rate, t.open_at_end, t.sell_reason.value] for index, t in results.iterrows()] diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index ea1e709a2..cd5f623e3 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -356,8 +356,6 @@ def test_process_expectancy(mocker, edge_conf, fee, risk_reward_ratio, expectanc 'profit_abs': '', 'open_date': np.datetime64('2018-10-03T00:05:00.000000000'), 'close_date': np.datetime64('2018-10-03T00:10:00.000000000'), - 'open_index': 1, - 'close_index': 1, 'trade_duration': '', 'open_rate': 17, 'close_rate': 17, @@ -369,8 +367,6 @@ def test_process_expectancy(mocker, edge_conf, fee, risk_reward_ratio, expectanc 'profit_abs': '', 'open_date': np.datetime64('2018-10-03T00:20:00.000000000'), 'close_date': np.datetime64('2018-10-03T00:25:00.000000000'), - 'open_index': 4, - 'close_index': 4, 'trade_duration': '', 'open_rate': 20, 'close_rate': 20, @@ -382,8 +378,6 @@ def test_process_expectancy(mocker, edge_conf, fee, risk_reward_ratio, expectanc 'profit_abs': '', 'open_date': np.datetime64('2018-10-03T00:30:00.000000000'), 'close_date': np.datetime64('2018-10-03T00:40:00.000000000'), - 'open_index': 6, - 'close_index': 7, 'trade_duration': '', 'open_rate': 26, 'close_rate': 34, diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index e7a13f251..c0a9e798a 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -464,8 +464,6 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: ), 'close_date': pd.to_datetime([Arrow(2018, 1, 29, 22, 35, 0).datetime, Arrow(2018, 1, 30, 4, 10, 0).datetime], utc=True), - 'open_index': [78, 184], - 'close_index': [125, 192], 'trade_duration': [235, 40], 'open_at_end': [False, False], 'open_rate': [0.104445, 0.10302485], @@ -761,8 +759,6 @@ def test_backtest_start_multi_strat_nomock(default_conf, mocker, caplog, testdat ), 'close_date': pd.to_datetime(['2018-01-29 20:45:00', '2018-01-30 05:35:00', ], utc=True), - 'open_index': [78, 184], - 'close_index': [125, 192], 'trade_duration': [235, 40], 'open_at_end': [False, False], 'open_rate': [0.104445, 0.10302485], @@ -779,8 +775,6 @@ def test_backtest_start_multi_strat_nomock(default_conf, mocker, caplog, testdat 'close_date': pd.to_datetime(['2018-01-29 20:45:00', '2018-01-30 05:35:00', '2018-01-30 08:30:00'], utc=True), - 'open_index': [78, 184, 185], - 'close_index': [125, 224, 205], 'trade_duration': [47, 40, 20], 'open_at_end': [False, False, False], 'open_rate': [0.104445, 0.10302485, 0.122541], diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 7efd87787..9f06043cc 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -214,8 +214,6 @@ def test_backtest_record(default_conf, fee, mocker): Arrow(2017, 11, 14, 22, 58, 00).datetime], "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], "close_rate": [0.002546, 0.003014, 0.003103, 0.003217], - "open_index": [1, 119, 153, 185], - "close_index": [118, 151, 184, 199], "trade_duration": [123, 34, 31, 14], "open_at_end": [False, False, False, True], "sell_reason": [SellType.ROI, SellType.STOP_LOSS, From dacb40a9765249c949beb1e07ce57db1915b7eb2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 09:34:18 +0200 Subject: [PATCH 2717/3421] Add get_latest_backtest_filename --- freqtrade/data/btanalysis.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index f174b8ea9..89380059f 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -20,6 +20,34 @@ BT_DATA_COLUMNS = ["pair", "profit_percent", "open_date", "close_date", "index", "open_rate", "close_rate", "open_at_end", "sell_reason"] +def get_latest_backtest_filename(directory: Union[Path, str]) -> str: + """ + Get latest backtest export based on '.last_result.json'. + :param directory: Directory to search for last result + :return: string containing the filename of the latest backtest result + :raises: ValueError in the following cases: + * Directory does not exist + * `directory/.last_result.json` does not exist + * `directory/.last_result.json` has the wrong content + """ + if isinstance(directory, str): + directory = Path(directory) + if not directory.is_dir(): + raise ValueError(f"Directory {directory} does not exist.") + filename = directory / '.last_result.json' + + if not filename.is_file(): + raise ValueError(f"Directory {directory} does not seem to contain backtest statistics yet.") + + with filename.open() as file: + data = json_load(file) + + if 'latest_backtest' not in data: + raise ValueError("Invalid .last_result.json format") + + return data['latest_backtest'] + + def load_backtest_stats(filename: Union[Path, str]) -> Dict[str, Any]: """ Load backtest statistics file. From 075eb0a161496a59d067ef4385ffc51997d4e87a Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 19:20:51 +0200 Subject: [PATCH 2718/3421] Fix sequence of saving --- freqtrade/optimize/backtesting.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 1eef4f4b9..30418f0d7 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -409,11 +409,11 @@ class Backtesting: position_stacking=position_stacking, ) - if self.config.get('export', False): - store_backtest_result(self.config['exportfilename'], all_results) - # Show backtest results stats = generate_backtest_stats(self.config, data, all_results, min_date=min_date, max_date=max_date) - show_backtest_results(self.config, stats) if self.config.get('export', False): + store_backtest_result(self.config['exportfilename'], all_results) store_backtest_stats(self.config['exportfilename'], stats) + + # Show backtest results + show_backtest_results(self.config, stats) From af9a9592b78330925c4bd640b3280fdd4a96caff Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 19:32:47 +0200 Subject: [PATCH 2719/3421] Remove unnecessary statement --- freqtrade/data/btanalysis.py | 1 - 1 file changed, 1 deletion(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 89380059f..d6af67a32 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -141,7 +141,6 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: :param db_url: Sqlite url (default format sqlite:///tradesv3.dry-run.sqlite) :return: Dataframe containing Trades """ - trades: pd.DataFrame = pd.DataFrame([], columns=BT_DATA_COLUMNS) persistence.init(db_url, clean_open_orders=False) columns = ["pair", "open_date", "close_date", "profit", "profit_percent", From 03ab61959b6f0a53f74c50ca52190e96677ea45b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 20:08:45 +0200 Subject: [PATCH 2720/3421] Add test for generate_backtest_stats --- freqtrade/optimize/optimize_reports.py | 10 +-- tests/optimize/test_optimize_reports.py | 81 +++++++++++++++++++++++-- 2 files changed, 82 insertions(+), 9 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 8f9104640..d1c58617d 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -1,5 +1,5 @@ import logging -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from pathlib import Path from typing import Any, Dict, List @@ -266,10 +266,10 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], except ValueError: strat_stats.update({ 'max_drawdown': 0.0, - 'drawdown_start': datetime.min, - 'drawdown_start_ts': datetime(1970, 1, 1).timestamp(), - 'drawdown_end': datetime.min, - 'drawdown_end_ts': datetime(1970, 1, 1).timestamp(), + 'drawdown_start': datetime(1970, 1, 1, tzinfo=timezone.utc), + 'drawdown_start_ts': 0, + 'drawdown_end': datetime(1970, 1, 1, tzinfo=timezone.utc), + 'drawdown_end_ts': 0, }) strategy_results = generate_strategy_metrics(stake_currency=stake_currency, diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 9f06043cc..c46b96ab2 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -1,14 +1,22 @@ +from datetime import datetime from pathlib import Path import pandas as pd import pytest from arrow import Arrow +from freqtrade.configuration import TimeRange +from freqtrade.data import history from freqtrade.edge import PairInfo -from freqtrade.optimize.optimize_reports import ( - generate_pair_metrics, generate_edge_table, generate_sell_reason_stats, - text_table_bt_results, text_table_sell_reason, generate_strategy_metrics, - text_table_strategy, store_backtest_result) +from freqtrade.optimize.optimize_reports import (generate_backtest_stats, + generate_edge_table, + generate_pair_metrics, + generate_sell_reason_stats, + generate_strategy_metrics, + store_backtest_result, + text_table_bt_results, + text_table_sell_reason, + text_table_strategy) from freqtrade.strategy.interface import SellType from tests.conftest import patch_exchange @@ -43,6 +51,71 @@ def test_text_table_bt_results(default_conf, mocker): assert text_table_bt_results(pair_results, stake_currency='BTC') == result_str +def test_generate_backtest_stats(default_conf, testdatadir): + results = {'DefStrat': pd.DataFrame({"pair": ["UNITTEST/BTC", "UNITTEST/BTC", + "UNITTEST/BTC", "UNITTEST/BTC"], + "profit_percent": [0.003312, 0.010801, 0.013803, 0.002780], + "profit_abs": [0.000003, 0.000011, 0.000014, 0.000003], + "open_date": [Arrow(2017, 11, 14, 19, 32, 00).datetime, + Arrow(2017, 11, 14, 21, 36, 00).datetime, + Arrow(2017, 11, 14, 22, 12, 00).datetime, + Arrow(2017, 11, 14, 22, 44, 00).datetime], + "close_date": [Arrow(2017, 11, 14, 21, 35, 00).datetime, + Arrow(2017, 11, 14, 22, 10, 00).datetime, + Arrow(2017, 11, 14, 22, 43, 00).datetime, + Arrow(2017, 11, 14, 22, 58, 00).datetime], + "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], + "close_rate": [0.002546, 0.003014, 0.003103, 0.003217], + "trade_duration": [123, 34, 31, 14], + "open_at_end": [False, False, False, True], + "sell_reason": [SellType.ROI, SellType.STOP_LOSS, + SellType.ROI, SellType.FORCE_SELL] + })} + timerange = TimeRange.parse_timerange('1510688220-1510700340') + min_date = Arrow.fromtimestamp(1510688220) + max_date = Arrow.fromtimestamp(1510700340) + btdata = history.load_data(testdatadir, '1m', ['UNITTEST/BTC'], timerange=timerange, + fill_up_missing=True) + + stats = generate_backtest_stats(default_conf, btdata, results, min_date, max_date) + assert isinstance(stats, dict) + assert 'strategy' in stats + assert 'DefStrat' in stats['strategy'] + assert 'strategy_comparison' in stats + strat_stats = stats['strategy']['DefStrat'] + assert strat_stats['backtest_start'] == min_date.datetime + assert strat_stats['backtest_end'] == max_date.datetime + assert strat_stats['total_trades'] == len(results['DefStrat']) + # Above sample had no loosing trade + assert strat_stats['max_drawdown'] == 0.0 + + results = {'DefStrat': pd.DataFrame({"pair": ["UNITTEST/BTC", "UNITTEST/BTC", + "UNITTEST/BTC", "UNITTEST/BTC"], + "profit_percent": [0.003312, 0.010801, -0.013803, 0.002780], + "profit_abs": [0.000003, 0.000011, -0.000014, 0.000003], + "open_date": [Arrow(2017, 11, 14, 19, 32, 00).datetime, + Arrow(2017, 11, 14, 21, 36, 00).datetime, + Arrow(2017, 11, 14, 22, 12, 00).datetime, + Arrow(2017, 11, 14, 22, 44, 00).datetime], + "close_date": [Arrow(2017, 11, 14, 21, 35, 00).datetime, + Arrow(2017, 11, 14, 22, 10, 00).datetime, + Arrow(2017, 11, 14, 22, 43, 00).datetime, + Arrow(2017, 11, 14, 22, 58, 00).datetime], + "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], + "close_rate": [0.002546, 0.003014, 0.0032903, 0.003217], + "trade_duration": [123, 34, 31, 14], + "open_at_end": [False, False, False, True], + "sell_reason": [SellType.ROI, SellType.STOP_LOSS, + SellType.ROI, SellType.FORCE_SELL] + })} + + assert strat_stats['max_drawdown'] == 0.0 + assert strat_stats['drawdown_start'] == Arrow.fromtimestamp(0).datetime + assert strat_stats['drawdown_end'] == Arrow.fromtimestamp(0).datetime + assert strat_stats['drawdown_end_ts'] == 0 + assert strat_stats['drawdown_start_ts'] == 0 + + def test_generate_pair_metrics(default_conf, mocker): results = pd.DataFrame( From 6e947346787560085dcdb51970ddaa68e9525597 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 20:21:08 +0200 Subject: [PATCH 2721/3421] Add fee to backtestresult --- freqtrade/optimize/backtesting.py | 18 ++++++++++++------ tests/optimize/test_backtesting.py | 6 ++++-- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 30418f0d7..7021e85b6 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -40,11 +40,13 @@ class BacktestResult(NamedTuple): profit_percent: float profit_abs: float open_date: datetime + open_rate: float + open_fee: float close_date: datetime + close_rate: float + close_fee: float trade_duration: float open_at_end: bool - open_rate: float - close_rate: float sell_reason: SellType @@ -247,11 +249,13 @@ class Backtesting: profit_percent=trade.calc_profit_ratio(rate=closerate), profit_abs=trade.calc_profit(rate=closerate), open_date=buy_row.date, + open_rate=buy_row.open, + open_fee=self.fee, close_date=sell_row.date, + close_rate=closerate, + close_fee=self.fee, trade_duration=trade_dur, open_at_end=False, - open_rate=buy_row.open, - close_rate=closerate, sell_reason=sell.sell_type ) if partial_ohlcv: @@ -261,12 +265,14 @@ class Backtesting: profit_percent=trade.calc_profit_ratio(rate=sell_row.open), profit_abs=trade.calc_profit(rate=sell_row.open), open_date=buy_row.date, + open_rate=buy_row.open, + open_fee=self.fee, close_date=sell_row.date, + close_rate=sell_row.open, + close_fee=self.fee, trade_duration=int(( sell_row.date - buy_row.date).total_seconds() // 60), open_at_end=True, - open_rate=buy_row.open, - close_rate=sell_row.open, sell_reason=SellType.FORCE_SELL ) logger.debug(f"{pair} - Force selling still open trade, " diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index c0a9e798a..4ee03f6ba 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -462,12 +462,14 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: 'open_date': pd.to_datetime([Arrow(2018, 1, 29, 18, 40, 0).datetime, Arrow(2018, 1, 30, 3, 30, 0).datetime], utc=True ), + 'open_rate': [0.104445, 0.10302485], + 'open_fee': [0.0025, 0.0025], 'close_date': pd.to_datetime([Arrow(2018, 1, 29, 22, 35, 0).datetime, Arrow(2018, 1, 30, 4, 10, 0).datetime], utc=True), + 'close_rate': [0.104969, 0.103541], + 'close_fee': [0.0025, 0.0025], 'trade_duration': [235, 40], 'open_at_end': [False, False], - 'open_rate': [0.104445, 0.10302485], - 'close_rate': [0.104969, 0.103541], 'sell_reason': [SellType.ROI, SellType.ROI] }) pd.testing.assert_frame_equal(results, expected) From f368aabcc7bce32752f93f26d020be7222e12678 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 20:51:36 +0200 Subject: [PATCH 2722/3421] Add amount to backtest-result --- freqtrade/optimize/backtesting.py | 3 +++ freqtrade/optimize/optimize_reports.py | 1 + tests/optimize/test_backtesting.py | 1 + 3 files changed, 5 insertions(+) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 7021e85b6..d00f033cd 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -45,6 +45,7 @@ class BacktestResult(NamedTuple): close_date: datetime close_rate: float close_fee: float + amount: float trade_duration: float open_at_end: bool sell_reason: SellType @@ -254,6 +255,7 @@ class Backtesting: close_date=sell_row.date, close_rate=closerate, close_fee=self.fee, + amount=trade.amount, trade_duration=trade_dur, open_at_end=False, sell_reason=sell.sell_type @@ -270,6 +272,7 @@ class Backtesting: close_date=sell_row.date, close_rate=sell_row.open, close_fee=self.fee, + amount=trade.amount, trade_duration=int(( sell_row.date - buy_row.date).total_seconds() // 60), open_at_end=True, diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index d1c58617d..a7cc8a7d6 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -250,6 +250,7 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'backtest_days': backtest_days, 'trades_per_day': round(len(results) / backtest_days, 2) if backtest_days > 0 else None, 'market_change': market_change, + 'stake_amount': config['stake_amount'] } result['strategy'][strategy] = strat_stats diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 4ee03f6ba..d5a6f8888 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -468,6 +468,7 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: Arrow(2018, 1, 30, 4, 10, 0).datetime], utc=True), 'close_rate': [0.104969, 0.103541], 'close_fee': [0.0025, 0.0025], + 'amount': [0.009574, 0.009706], 'trade_duration': [235, 40], 'open_at_end': [False, False], 'sell_reason': [SellType.ROI, SellType.ROI] From 7727292861d661a09926cc1da3a5b9aaf4f501bf Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 26 Jun 2020 21:04:40 +0200 Subject: [PATCH 2723/3421] Rename duration to trade_duration --- freqtrade/data/btanalysis.py | 4 ++-- freqtrade/optimize/backtesting.py | 2 +- freqtrade/plot/plotting.py | 3 ++- tests/optimize/test_backtesting.py | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index d6af67a32..f34dbf313 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -16,7 +16,7 @@ from freqtrade.persistence import Trade logger = logging.getLogger(__name__) # must align with columns in backtest.py -BT_DATA_COLUMNS = ["pair", "profit_percent", "open_date", "close_date", "index", "duration", +BT_DATA_COLUMNS = ["pair", "profit_percent", "open_date", "close_date", "index", "trade_duration", "open_rate", "close_rate", "open_at_end", "sell_reason"] @@ -144,7 +144,7 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: persistence.init(db_url, clean_open_orders=False) columns = ["pair", "open_date", "close_date", "profit", "profit_percent", - "open_rate", "close_rate", "amount", "duration", "sell_reason", + "open_rate", "close_rate", "amount", "trade_duration", "sell_reason", "fee_open", "fee_close", "open_rate_requested", "close_rate_requested", "stake_amount", "max_rate", "min_rate", "id", "exchange", "stop_loss", "initial_stop_loss", "strategy", "timeframe"] diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index d00f033cd..18881f9db 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -228,7 +228,7 @@ class Backtesting: open_rate=buy_row.open, open_date=buy_row.date, stake_amount=stake_amount, - amount=stake_amount / buy_row.open, + amount=round(stake_amount / buy_row.open, 8), fee_open=self.fee, fee_close=self.fee, is_open=True, diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 6d50defaf..eee338a42 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -163,7 +163,8 @@ def plot_trades(fig, trades: pd.DataFrame) -> make_subplots: if trades is not None and len(trades) > 0: # Create description for sell summarizing the trade trades['desc'] = trades.apply(lambda row: f"{round(row['profit_percent'] * 100, 1)}%, " - f"{row['sell_reason']}, {row['duration']} min", + f"{row['sell_reason']}, " + f"{row['trade_duration']} min", axis=1) trade_buys = go.Scatter( x=trades["open_date"], diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index d5a6f8888..2c855fbc0 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -468,7 +468,7 @@ def test_backtest(default_conf, fee, mocker, testdatadir) -> None: Arrow(2018, 1, 30, 4, 10, 0).datetime], utc=True), 'close_rate': [0.104969, 0.103541], 'close_fee': [0.0025, 0.0025], - 'amount': [0.009574, 0.009706], + 'amount': [0.00957442, 0.0097064], 'trade_duration': [235, 40], 'open_at_end': [False, False], 'sell_reason': [SellType.ROI, SellType.ROI] From 04eaf2c39cc41d67e599dc8114f3247931110e9a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 27 Jun 2020 06:46:54 +0200 Subject: [PATCH 2724/3421] Add test for get_last_backtest_Result --- freqtrade/data/btanalysis.py | 6 +++--- tests/data/test_btanalysis.py | 19 +++++++++++++++++++ tests/testdata/.last_result.json | 1 + tests/testdata/backtest-result_new.json | 1 + tests/testdata/backtest-result_test copy.json | 7 ------- 5 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 tests/testdata/.last_result.json create mode 100644 tests/testdata/backtest-result_new.json delete mode 100644 tests/testdata/backtest-result_test copy.json diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index f34dbf313..a556207e5 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -33,17 +33,17 @@ def get_latest_backtest_filename(directory: Union[Path, str]) -> str: if isinstance(directory, str): directory = Path(directory) if not directory.is_dir(): - raise ValueError(f"Directory {directory} does not exist.") + raise ValueError(f"Directory '{directory}' does not exist.") filename = directory / '.last_result.json' if not filename.is_file(): - raise ValueError(f"Directory {directory} does not seem to contain backtest statistics yet.") + raise ValueError(f"Directory '{directory}' does not seem to contain backtest statistics yet.") with filename.open() as file: data = json_load(file) if 'latest_backtest' not in data: - raise ValueError("Invalid .last_result.json format") + raise ValueError("Invalid '.last_result.json' format.") return data['latest_backtest'] diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 077db19f1..fd3783bf2 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -13,12 +13,31 @@ from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, combine_dataframes_with_mean, create_cum_profit, extract_trades_of_period, + get_latest_backtest_filename, load_backtest_data, load_trades, load_trades_from_db) from freqtrade.data.history import load_data, load_pair_history from tests.conftest import create_mock_trades +def test_get_latest_backtest_filename(testdatadir, mocker): + with pytest.raises(ValueError, match=r"Directory .* does not exist\."): + get_latest_backtest_filename(testdatadir / 'does_not_exist') + + with pytest.raises(ValueError, + match=r"Directory .* does not seem to contain .*"): + get_latest_backtest_filename(testdatadir.parent) + + res = get_latest_backtest_filename(testdatadir) + assert res == 'backtest-result_new.json' + + mocker.patch("freqtrade.data.btanalysis.json_load", return_value={}) + + + with pytest.raises(ValueError, match=r"Invalid '.last_result.json' format."): + get_latest_backtest_filename(testdatadir) + + def test_load_backtest_data(testdatadir): filename = testdatadir / "backtest-result_test.json" diff --git a/tests/testdata/.last_result.json b/tests/testdata/.last_result.json new file mode 100644 index 000000000..98448e10f --- /dev/null +++ b/tests/testdata/.last_result.json @@ -0,0 +1 @@ +{"latest_backtest":"backtest-result_new.json"} diff --git a/tests/testdata/backtest-result_new.json b/tests/testdata/backtest-result_new.json new file mode 100644 index 000000000..457ad1bc7 --- /dev/null +++ b/tests/testdata/backtest-result_new.json @@ -0,0 +1 @@ +{"strategy": {"DefaultStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "profit": 4.348872180451118e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.1455639097744267e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.506315789473681e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "profit": 4.3741353383458455e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004726817042606385, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "profit": 0.00040896345864661204, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002323284210526272, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5368421052630647e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "profit": 8.471127819548868e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004577728320801916, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "profit": 0.00044601518796991146, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042907308270676014, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "profit": 3.745609022556351e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5147869674185174e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "profit": 6.107769423558838e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "profit": 0.0007175643609022495, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -3.650999999999996e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "profit": 0.0013269330827067605, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "profit": 1.2180451127819219e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "profit": 0.001139113784461146, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.4511278195488e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006626566416040071, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004417042606516125, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "profit": 0.00013451513784460897, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.232832080200495e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004403456641603881, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.558897243107704e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "profit": 5.954887218045116e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.4461152882205115e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003977443609022545, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "profit": 0.00024060150375938838, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.1759398496240516e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "profit": 1.2880501253132587e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.138847117794446e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.3709273182957117e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.039097744360846e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "profit": 5.554887218044781e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.9724310776941686e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "profit": 0.00024310791979949287, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004924821553884823, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.0165413533833987e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004891728822054991, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "profit": 4.676691729323286e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "profit": 1.5659197994987058e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "profit": 8.755839598997492e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "profit": 0.00036826295739347814, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004911979949874384, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004841604010024786, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "profit": 1.501804511278178e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004756736842105175, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035588972431077615, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "profit": 0.00023060155388470588, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.7308270676692514e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001523810025062626, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -5.8369999999999985e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "profit": 0.00023075689223057277, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "profit": 1.4378446115287727e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033743132832080025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004620357894736804, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "profit": 0.00041353383458646656, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.587819548872171e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "profit": 0.00022657644110275071, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.891729323308177e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001449783458646603, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.2927318295739246e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042529804511277913, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006552757894736777, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.063157894736843e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.6576441102756397e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "profit": 0.0013729321804511196, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "profit": 9.543859649122774e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042270857142856846, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "profit": -0.000258379, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -2.5590000000000004e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -7.619999999999998e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "profit": 0.00010368902255639091, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006812030075187946, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "profit": 0.00010632000000000003, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "profit": 0.0015806817042606502, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "profit": 9.924812030075114e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.479699248120277e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.7814536340851996e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002168922305764362, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.504761904761831e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034269764411026804, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.8195488721804031e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001408521303258095, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "profit": 0.00043363413533832607, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.8235588972430847e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "profit": 0.0010509013533834544, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.779448621553787e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "profit": 8.188105263157511e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "profit": 1.3520501253133123e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.1215538847117757e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.1954887218044365e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "profit": 0.00022252260651629135, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.2506265664159932e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014310776942355607, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.905263157894727e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002175600501253122, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002232809523809512, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.817042606516199e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.174937343358337e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "profit": 5.057644110275549e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "profit": 1.3559147869673764e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "profit": 0.00015037604010024672, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.736842105263053e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "profit": -0.0030822220000000025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "profit": 0.00044962401002504593, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "profit": 8.182962406014932e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035357393483707866, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.657142857142672e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.9824561403508552e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "profit": 3.8872932330826816e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.9563909774435151e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.624561403508717e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.5253132832080657e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "profit": 1.3468671679197925e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.0892230576441054e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.326466165413529e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.592481203007459e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.5839598997494e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035408521303258167, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "profit": 8.243022556390922e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "profit": 6.512781954887175e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.020050125313278e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004595341353383492, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003471167919799484, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.594987468671663e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002049122807017481, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.5814536340851513e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "profit": 0.00045472170426064107, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5679197994986587e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.789473684210343e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020451132832080554, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.587969924812037e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002025454135338306, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.5724310776941724e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.344962406015033e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5308270676691466e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.6431077694236234e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.7639097744360576e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.4666666666666543e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "profit": 1.3032581453634e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014034441102756326, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020445624060149575, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.4486215538846723e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020603007518796984, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.162406015037611e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.713784461152774e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002075577443608964, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "profit": 1.2747318295739177e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.810526315789381e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "profit": 1.2722105263157733e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020802005012530989, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.00150375939842e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "profit": 0.00013894967418546025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "profit": 0.00047425268170424306, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.814536340852038e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "profit": -4.120000000000001e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003458647117794422, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004736834586466093, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "profit": -0.001781610000000003, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014285714285713902, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014367779448621124, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "profit": 0.00047810025062657024, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033880160401002224, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "profit": 1.2957443609021985e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033576451127818874, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003394370927318202, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.6140350877192417e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "profit": 4.117428571428529e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "profit": 4.129804511278194e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "profit": 8.132721804511231e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034586466165412166, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.3884711779447504e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034214350877191657, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003365359398496137, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "profit": -1.3399999999999973e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0}}, "strategy_comparison": [{"key": "DefaultStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}]} diff --git a/tests/testdata/backtest-result_test copy.json b/tests/testdata/backtest-result_test copy.json deleted file mode 100644 index 0395830d4..000000000 --- a/tests/testdata/backtest-result_test copy.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "ASDF": {, - "trades": [], - "metrics":[], - } -} -[["TRX/BTC",0.03990025,1515568500.0,1515568800.0,27,5,9.64e-05,0.00010074887218045112,false,"roi"],["ADA/BTC",0.03990025,1515568500.0,1515569400.0,27,15,4.756e-05,4.9705563909774425e-05,false,"roi"],["XLM/BTC",0.03990025,1515569100.0,1515569700.0,29,10,3.339e-05,3.489631578947368e-05,false,"roi"],["TRX/BTC",0.03990025,1515569100.0,1515570000.0,29,15,9.696e-05,0.00010133413533834584,false,"roi"],["ETH/BTC",-0.0,1515569700.0,1515573300.0,31,60,0.0943,0.09477268170426063,false,"roi"],["XMR/BTC",0.00997506,1515570000.0,1515571800.0,32,30,0.02719607,0.02760503345864661,false,"roi"],["ZEC/BTC",0.0,1515572100.0,1515578100.0,39,100,0.04634952,0.046581848421052625,false,"roi"],["NXT/BTC",-0.0,1515595500.0,1515599400.0,117,65,3.066e-05,3.081368421052631e-05,false,"roi"],["LTC/BTC",0.0,1515602100.0,1515604500.0,139,40,0.0168999,0.016984611278195488,false,"roi"],["ETH/BTC",-0.0,1515602400.0,1515604800.0,140,40,0.09132568,0.0917834528320802,false,"roi"],["ETH/BTC",-0.0,1515610200.0,1515613500.0,166,55,0.08898003,0.08942604518796991,false,"roi"],["ETH/BTC",0.0,1515622500.0,1515625200.0,207,45,0.08560008,0.08602915308270676,false,"roi"],["ETC/BTC",0.00997506,1515624600.0,1515626400.0,214,30,0.00249083,0.0025282860902255634,false,"roi"],["NXT/BTC",-0.0,1515626100.0,1515629700.0,219,60,3.022e-05,3.037147869674185e-05,false,"roi"],["ETC/BTC",0.01995012,1515627600.0,1515629100.0,224,25,0.002437,0.0024980776942355883,false,"roi"],["ZEC/BTC",0.00997506,1515628800.0,1515630900.0,228,35,0.04771803,0.04843559436090225,false,"roi"],["XLM/BTC",-0.10448878,1515642000.0,1515644700.0,272,45,3.651e-05,3.2859000000000005e-05,false,"stop_loss"],["ETH/BTC",0.00997506,1515642900.0,1515644700.0,275,30,0.08824105,0.08956798308270676,false,"roi"],["ETC/BTC",-0.0,1515643200.0,1515646200.0,276,50,0.00243,0.002442180451127819,false,"roi"],["ZEC/BTC",0.01995012,1515645000.0,1515646500.0,282,25,0.04545064,0.046589753784461146,false,"roi"],["XLM/BTC",0.01995012,1515645000.0,1515646200.0,282,20,3.372e-05,3.456511278195488e-05,false,"roi"],["XMR/BTC",0.01995012,1515646500.0,1515647700.0,287,20,0.02644,0.02710265664160401,false,"roi"],["ETH/BTC",-0.0,1515669600.0,1515672000.0,364,40,0.08812,0.08856170426065162,false,"roi"],["XMR/BTC",-0.0,1515670500.0,1515672900.0,367,40,0.02683577,0.026970285137844607,false,"roi"],["ADA/BTC",0.01995012,1515679200.0,1515680700.0,396,25,4.919e-05,5.04228320802005e-05,false,"roi"],["ETH/BTC",-0.0,1515698700.0,1515702900.0,461,70,0.08784896,0.08828930566416039,false,"roi"],["ADA/BTC",-0.0,1515710100.0,1515713400.0,499,55,5.105e-05,5.130588972431077e-05,false,"roi"],["XLM/BTC",0.00997506,1515711300.0,1515713100.0,503,30,3.96e-05,4.019548872180451e-05,false,"roi"],["NXT/BTC",-0.0,1515711300.0,1515713700.0,503,40,2.885e-05,2.899461152882205e-05,false,"roi"],["XMR/BTC",0.00997506,1515713400.0,1515715500.0,510,35,0.02645,0.026847744360902256,false,"roi"],["ZEC/BTC",-0.0,1515714900.0,1515719700.0,515,80,0.048,0.04824060150375939,false,"roi"],["XLM/BTC",0.01995012,1515791700.0,1515793200.0,771,25,4.692e-05,4.809593984962405e-05,false,"roi"],["ETC/BTC",-0.0,1515804900.0,1515824400.0,815,325,0.00256966,0.0025825405012531327,false,"roi"],["ADA/BTC",0.0,1515840900.0,1515843300.0,935,40,6.262e-05,6.293388471177944e-05,false,"roi"],["XLM/BTC",0.0,1515848700.0,1516025400.0,961,2945,4.73e-05,4.753709273182957e-05,false,"roi"],["ADA/BTC",-0.0,1515850200.0,1515854700.0,966,75,6.063e-05,6.0933909774436085e-05,false,"roi"],["TRX/BTC",-0.0,1515850800.0,1515886200.0,968,590,0.00011082,0.00011137548872180449,false,"roi"],["ADA/BTC",-0.0,1515856500.0,1515858900.0,987,40,5.93e-05,5.9597243107769415e-05,false,"roi"],["ZEC/BTC",-0.0,1515861000.0,1515863400.0,1002,40,0.04850003,0.04874313791979949,false,"roi"],["ETH/BTC",-0.0,1515881100.0,1515911100.0,1069,500,0.09825019,0.09874267215538847,false,"roi"],["ADA/BTC",0.0,1515889200.0,1515970500.0,1096,1355,6.018e-05,6.048165413533834e-05,false,"roi"],["ETH/BTC",-0.0,1515933900.0,1515936300.0,1245,40,0.09758999,0.0980791628822055,false,"roi"],["ETC/BTC",0.00997506,1515943800.0,1515945600.0,1278,30,0.00311,0.0031567669172932328,false,"roi"],["ETC/BTC",-0.0,1515962700.0,1515968100.0,1341,90,0.00312401,0.003139669197994987,false,"roi"],["LTC/BTC",0.0,1515972900.0,1515976200.0,1375,55,0.0174679,0.017555458395989976,false,"roi"],["DASH/BTC",-0.0,1515973500.0,1515975900.0,1377,40,0.07346846,0.07383672295739348,false,"roi"],["ETH/BTC",-0.0,1515983100.0,1515985500.0,1409,40,0.097994,0.09848519799498745,false,"roi"],["ETH/BTC",-0.0,1516000800.0,1516003200.0,1468,40,0.09659,0.09707416040100249,false,"roi"],["TRX/BTC",0.00997506,1516004400.0,1516006500.0,1480,35,9.987e-05,0.00010137180451127818,false,"roi"],["ETH/BTC",0.0,1516018200.0,1516071000.0,1526,880,0.0948969,0.09537257368421052,false,"roi"],["DASH/BTC",-0.0,1516025400.0,1516038000.0,1550,210,0.071,0.07135588972431077,false,"roi"],["ZEC/BTC",-0.0,1516026600.0,1516029000.0,1554,40,0.04600501,0.046235611553884705,false,"roi"],["TRX/BTC",-0.0,1516039800.0,1516044300.0,1598,75,9.438e-05,9.485308270676691e-05,false,"roi"],["XMR/BTC",-0.0,1516041300.0,1516043700.0,1603,40,0.03040001,0.030552391002506264,false,"roi"],["ADA/BTC",-0.10448878,1516047900.0,1516091100.0,1625,720,5.837e-05,5.2533e-05,false,"stop_loss"],["ZEC/BTC",-0.0,1516048800.0,1516053600.0,1628,80,0.046036,0.04626675689223057,false,"roi"],["ETC/BTC",-0.0,1516062600.0,1516065000.0,1674,40,0.0028685,0.0028828784461152877,false,"roi"],["DASH/BTC",0.0,1516065300.0,1516070100.0,1683,80,0.06731755,0.0676549813283208,false,"roi"],["ETH/BTC",0.0,1516088700.0,1516092000.0,1761,55,0.09217614,0.09263817578947368,false,"roi"],["LTC/BTC",0.01995012,1516091700.0,1516092900.0,1771,20,0.0165,0.016913533834586467,false,"roi"],["TRX/BTC",0.03990025,1516091700.0,1516092000.0,1771,5,7.953e-05,8.311781954887218e-05,false,"roi"],["ZEC/BTC",-0.0,1516092300.0,1516096200.0,1773,65,0.045202,0.04542857644110275,false,"roi"],["ADA/BTC",0.00997506,1516094100.0,1516095900.0,1779,30,5.248e-05,5.326917293233082e-05,false,"roi"],["XMR/BTC",0.0,1516094100.0,1516096500.0,1779,40,0.02892318,0.02906815834586466,false,"roi"],["ADA/BTC",0.01995012,1516096200.0,1516097400.0,1786,20,5.158e-05,5.287273182957392e-05,false,"roi"],["ZEC/BTC",0.00997506,1516097100.0,1516099200.0,1789,35,0.04357584,0.044231115789473675,false,"roi"],["XMR/BTC",0.00997506,1516097100.0,1516098900.0,1789,30,0.02828232,0.02870761804511278,false,"roi"],["ADA/BTC",0.00997506,1516110300.0,1516112400.0,1833,35,5.362e-05,5.4426315789473676e-05,false,"roi"],["ADA/BTC",-0.0,1516123800.0,1516127100.0,1878,55,5.302e-05,5.328576441102756e-05,false,"roi"],["ETH/BTC",0.00997506,1516126500.0,1516128300.0,1887,30,0.09129999,0.09267292218045112,false,"roi"],["XLM/BTC",0.01995012,1516126500.0,1516127700.0,1887,20,3.808e-05,3.903438596491228e-05,false,"roi"],["XMR/BTC",0.00997506,1516129200.0,1516131000.0,1896,30,0.02811012,0.028532828571428567,false,"roi"],["ETC/BTC",-0.10448878,1516137900.0,1516141500.0,1925,60,0.00258379,0.002325411,false,"stop_loss"],["NXT/BTC",-0.10448878,1516137900.0,1516142700.0,1925,80,2.559e-05,2.3031e-05,false,"stop_loss"],["TRX/BTC",-0.10448878,1516138500.0,1516141500.0,1927,50,7.62e-05,6.858e-05,false,"stop_loss"],["LTC/BTC",0.03990025,1516141800.0,1516142400.0,1938,10,0.0151,0.015781203007518795,false,"roi"],["ETC/BTC",0.03990025,1516141800.0,1516142100.0,1938,5,0.00229844,0.002402129022556391,false,"roi"],["ETC/BTC",0.03990025,1516142400.0,1516142700.0,1940,5,0.00235676,0.00246308,false,"roi"],["DASH/BTC",0.01995012,1516142700.0,1516143900.0,1941,20,0.0630692,0.06464988170426066,false,"roi"],["NXT/BTC",0.03990025,1516143000.0,1516143300.0,1942,5,2.2e-05,2.2992481203007514e-05,false,"roi"],["ADA/BTC",0.00997506,1516159800.0,1516161600.0,1998,30,4.974e-05,5.048796992481203e-05,false,"roi"],["TRX/BTC",0.01995012,1516161300.0,1516162500.0,2003,20,7.108e-05,7.28614536340852e-05,false,"roi"],["ZEC/BTC",-0.0,1516181700.0,1516184100.0,2071,40,0.04327,0.04348689223057644,false,"roi"],["ADA/BTC",-0.0,1516184400.0,1516208400.0,2080,400,4.997e-05,5.022047619047618e-05,false,"roi"],["DASH/BTC",-0.0,1516185000.0,1516188300.0,2082,55,0.06836818,0.06871087764411027,false,"roi"],["XLM/BTC",-0.0,1516185000.0,1516187400.0,2082,40,3.63e-05,3.648195488721804e-05,false,"roi"],["XMR/BTC",-0.0,1516192200.0,1516226700.0,2106,575,0.0281,0.02824085213032581,false,"roi"],["ETH/BTC",-0.0,1516192500.0,1516208100.0,2107,260,0.08651001,0.08694364413533832,false,"roi"],["ADA/BTC",-0.0,1516251600.0,1516254900.0,2304,55,5.633e-05,5.6612355889724306e-05,false,"roi"],["DASH/BTC",0.00997506,1516252800.0,1516254900.0,2308,35,0.06988494,0.07093584135338346,false,"roi"],["ADA/BTC",-0.0,1516260900.0,1516263300.0,2335,40,5.545e-05,5.572794486215538e-05,false,"roi"],["LTC/BTC",-0.0,1516266000.0,1516268400.0,2352,40,0.01633527,0.016417151052631574,false,"roi"],["ETC/BTC",-0.0,1516293600.0,1516296000.0,2444,40,0.00269734,0.0027108605012531326,false,"roi"],["XLM/BTC",0.01995012,1516298700.0,1516300200.0,2461,25,4.475e-05,4.587155388471177e-05,false,"roi"],["NXT/BTC",0.00997506,1516299900.0,1516301700.0,2465,30,2.79e-05,2.8319548872180444e-05,false,"roi"],["ZEC/BTC",0.0,1516306200.0,1516308600.0,2486,40,0.04439326,0.04461578260651629,false,"roi"],["XLM/BTC",0.0,1516311000.0,1516322100.0,2502,185,4.49e-05,4.51250626566416e-05,false,"roi"],["XMR/BTC",-0.0,1516312500.0,1516338300.0,2507,430,0.02855,0.028693107769423555,false,"roi"],["ADA/BTC",0.0,1516313400.0,1516315800.0,2510,40,5.796e-05,5.8250526315789473e-05,false,"roi"],["ZEC/BTC",0.0,1516319400.0,1516321800.0,2530,40,0.04340323,0.04362079005012531,false,"roi"],["ZEC/BTC",0.0,1516380300.0,1516383300.0,2733,50,0.04454455,0.04476783095238095,false,"roi"],["ADA/BTC",-0.0,1516382100.0,1516391700.0,2739,160,5.62e-05,5.648170426065162e-05,false,"roi"],["XLM/BTC",-0.0,1516382400.0,1516392900.0,2740,175,4.339e-05,4.360749373433584e-05,false,"roi"],["TRX/BTC",0.0,1516423500.0,1516469700.0,2877,770,0.0001009,0.00010140576441102757,false,"roi"],["ETC/BTC",-0.0,1516423800.0,1516461300.0,2878,625,0.00270505,0.002718609147869674,false,"roi"],["XMR/BTC",-0.0,1516423800.0,1516431600.0,2878,130,0.03000002,0.030150396040100245,false,"roi"],["ADA/BTC",-0.0,1516438800.0,1516441200.0,2928,40,5.46e-05,5.4873684210526304e-05,false,"roi"],["XMR/BTC",-0.10448878,1516472700.0,1516852200.0,3041,6325,0.03082222,0.027739998000000002,false,"stop_loss"],["ETH/BTC",-0.0,1516487100.0,1516490100.0,3089,50,0.08969999,0.09014961401002504,false,"roi"],["LTC/BTC",0.0,1516503000.0,1516545000.0,3142,700,0.01632501,0.01640683962406015,false,"roi"],["DASH/BTC",-0.0,1516530000.0,1516532400.0,3232,40,0.070538,0.07089157393483708,false,"roi"],["ADA/BTC",-0.0,1516549800.0,1516560300.0,3298,175,5.301e-05,5.3275714285714276e-05,false,"roi"],["XLM/BTC",0.0,1516551600.0,1516554000.0,3304,40,3.955e-05,3.9748245614035085e-05,false,"roi"],["ETC/BTC",0.00997506,1516569300.0,1516571100.0,3363,30,0.00258505,0.002623922932330827,false,"roi"],["XLM/BTC",-0.0,1516569300.0,1516571700.0,3363,40,3.903e-05,3.922563909774435e-05,false,"roi"],["ADA/BTC",-0.0,1516581300.0,1516617300.0,3403,600,5.236e-05,5.262245614035087e-05,false,"roi"],["TRX/BTC",0.0,1516584600.0,1516587000.0,3414,40,9.028e-05,9.073253132832079e-05,false,"roi"],["ETC/BTC",-0.0,1516623900.0,1516631700.0,3545,130,0.002687,0.002700468671679198,false,"roi"],["XLM/BTC",-0.0,1516626900.0,1516629300.0,3555,40,4.168e-05,4.1888922305764405e-05,false,"roi"],["TRX/BTC",0.00997506,1516629600.0,1516631400.0,3564,30,8.821e-05,8.953646616541353e-05,false,"roi"],["ADA/BTC",-0.0,1516636500.0,1516639200.0,3587,45,5.172e-05,5.1979248120300745e-05,false,"roi"],["NXT/BTC",0.01995012,1516637100.0,1516638300.0,3589,20,3.026e-05,3.101839598997494e-05,false,"roi"],["DASH/BTC",0.0,1516650600.0,1516666200.0,3634,260,0.07064,0.07099408521303258,false,"roi"],["LTC/BTC",0.0,1516656300.0,1516658700.0,3653,40,0.01644483,0.01652726022556391,false,"roi"],["XLM/BTC",0.00997506,1516665900.0,1516667700.0,3685,30,4.331e-05,4.3961278195488714e-05,false,"roi"],["NXT/BTC",0.01995012,1516672200.0,1516673700.0,3706,25,3.2e-05,3.2802005012531326e-05,false,"roi"],["ETH/BTC",0.0,1516681500.0,1516684500.0,3737,50,0.09167706,0.09213659413533835,false,"roi"],["DASH/BTC",0.0,1516692900.0,1516698000.0,3775,85,0.0692498,0.06959691679197995,false,"roi"],["NXT/BTC",0.0,1516704600.0,1516712700.0,3814,135,3.182e-05,3.197949874686716e-05,false,"roi"],["ZEC/BTC",-0.0,1516705500.0,1516723500.0,3817,300,0.04088,0.04108491228070175,false,"roi"],["ADA/BTC",-0.0,1516719300.0,1516721700.0,3863,40,5.15e-05,5.175814536340851e-05,false,"roi"],["ETH/BTC",0.0,1516725300.0,1516752300.0,3883,450,0.09071698,0.09117170170426064,false,"roi"],["NXT/BTC",-0.0,1516728300.0,1516733100.0,3893,80,3.128e-05,3.1436791979949865e-05,false,"roi"],["TRX/BTC",-0.0,1516738500.0,1516744800.0,3927,105,9.555e-05,9.602894736842104e-05,false,"roi"],["ZEC/BTC",-0.0,1516746600.0,1516749000.0,3954,40,0.04080001,0.041004521328320796,false,"roi"],["ADA/BTC",-0.0,1516751400.0,1516764900.0,3970,225,5.163e-05,5.1888796992481196e-05,false,"roi"],["ZEC/BTC",0.0,1516753200.0,1516758600.0,3976,90,0.04040781,0.04061035541353383,false,"roi"],["ADA/BTC",-0.0,1516776300.0,1516778700.0,4053,40,5.132e-05,5.157724310776942e-05,false,"roi"],["ADA/BTC",0.03990025,1516803300.0,1516803900.0,4143,10,5.198e-05,5.432496240601503e-05,false,"roi"],["NXT/BTC",-0.0,1516805400.0,1516811700.0,4150,105,3.054e-05,3.069308270676692e-05,false,"roi"],["TRX/BTC",0.0,1516806600.0,1516810500.0,4154,65,9.263e-05,9.309431077694235e-05,false,"roi"],["ADA/BTC",-0.0,1516833600.0,1516836300.0,4244,45,5.514e-05,5.5416390977443596e-05,false,"roi"],["XLM/BTC",0.0,1516841400.0,1516843800.0,4270,40,4.921e-05,4.9456666666666664e-05,false,"roi"],["ETC/BTC",0.0,1516868100.0,1516882500.0,4359,240,0.0026,0.002613032581453634,false,"roi"],["XMR/BTC",-0.0,1516875900.0,1516896900.0,4385,350,0.02799871,0.028139054411027563,false,"roi"],["ZEC/BTC",-0.0,1516878000.0,1516880700.0,4392,45,0.04078902,0.0409934762406015,false,"roi"],["NXT/BTC",-0.0,1516885500.0,1516887900.0,4417,40,2.89e-05,2.904486215538847e-05,false,"roi"],["ZEC/BTC",-0.0,1516886400.0,1516889100.0,4420,45,0.041103,0.041309030075187964,false,"roi"],["XLM/BTC",0.00997506,1516895100.0,1516896900.0,4449,30,5.428e-05,5.5096240601503756e-05,false,"roi"],["XLM/BTC",-0.0,1516902300.0,1516922100.0,4473,330,5.414e-05,5.441137844611528e-05,false,"roi"],["ZEC/BTC",-0.0,1516914900.0,1516917300.0,4515,40,0.04140777,0.0416153277443609,false,"roi"],["ETC/BTC",0.0,1516932300.0,1516934700.0,4573,40,0.00254309,0.002555837318295739,false,"roi"],["ADA/BTC",-0.0,1516935300.0,1516979400.0,4583,735,5.607e-05,5.6351052631578935e-05,false,"roi"],["ETC/BTC",0.0,1516947000.0,1516958700.0,4622,195,0.00253806,0.0025507821052631577,false,"roi"],["ZEC/BTC",-0.0,1516951500.0,1516960500.0,4637,150,0.0415,0.04170802005012531,false,"roi"],["XLM/BTC",0.00997506,1516960500.0,1516962300.0,4667,30,5.321e-05,5.401015037593984e-05,false,"roi"],["XMR/BTC",-0.0,1516982700.0,1516985100.0,4741,40,0.02772046,0.02785940967418546,false,"roi"],["ETH/BTC",0.0,1517009700.0,1517012100.0,4831,40,0.09461341,0.09508766268170425,false,"roi"],["XLM/BTC",-0.0,1517013300.0,1517016600.0,4843,55,5.615e-05,5.643145363408521e-05,false,"roi"],["ADA/BTC",-0.07877175,1517013900.0,1517287500.0,4845,4560,5.556e-05,5.144e-05,true,"force_sell"],["DASH/BTC",-0.0,1517020200.0,1517052300.0,4866,535,0.06900001,0.06934587471177944,false,"roi"],["ETH/BTC",-0.0,1517034300.0,1517036700.0,4913,40,0.09449985,0.09497353345864659,false,"roi"],["ZEC/BTC",-0.04815133,1517046000.0,1517287200.0,4952,4020,0.0410697,0.03928809,true,"force_sell"],["XMR/BTC",-0.0,1517053500.0,1517056200.0,4977,45,0.0285,0.02864285714285714,false,"roi"],["XMR/BTC",-0.0,1517056500.0,1517066700.0,4987,170,0.02866372,0.02880739779448621,false,"roi"],["ETH/BTC",-0.0,1517068200.0,1517071800.0,5026,60,0.095381,0.09585910025062655,false,"roi"],["DASH/BTC",-0.0,1517072700.0,1517075100.0,5041,40,0.06759092,0.06792972160401002,false,"roi"],["ETC/BTC",-0.0,1517096400.0,1517101500.0,5120,85,0.00258501,0.002597967443609022,false,"roi"],["DASH/BTC",-0.0,1517106300.0,1517127000.0,5153,345,0.06698502,0.0673207845112782,false,"roi"],["DASH/BTC",-0.0,1517135100.0,1517157000.0,5249,365,0.0677177,0.06805713709273183,false,"roi"],["XLM/BTC",0.0,1517171700.0,1517175300.0,5371,60,5.215e-05,5.2411403508771925e-05,false,"roi"],["ETC/BTC",0.00997506,1517176800.0,1517178600.0,5388,30,0.00273809,0.002779264285714285,false,"roi"],["ETC/BTC",0.00997506,1517184000.0,1517185800.0,5412,30,0.00274632,0.002787618045112782,false,"roi"],["LTC/BTC",0.0,1517192100.0,1517194800.0,5439,45,0.01622478,0.016306107218045113,false,"roi"],["DASH/BTC",-0.0,1517195100.0,1517197500.0,5449,40,0.069,0.06934586466165413,false,"roi"],["TRX/BTC",-0.0,1517203200.0,1517208900.0,5476,95,8.755e-05,8.798884711779448e-05,false,"roi"],["DASH/BTC",-0.0,1517209200.0,1517253900.0,5496,745,0.06825763,0.06859977350877192,false,"roi"],["DASH/BTC",-0.0,1517255100.0,1517257500.0,5649,40,0.06713892,0.06747545593984962,false,"roi"],["TRX/BTC",-0.0199116,1517268600.0,1517287500.0,5694,315,8.934e-05,8.8e-05,true,"force_sell"]] From 133947988238905752513992b4ad2caafb5eead3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 27 Jun 2020 07:08:16 +0200 Subject: [PATCH 2725/3421] Have sell_type stringify correctly --- freqtrade/strategy/interface.py | 4 ++++ tests/test_freqtradebot.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index f9f3a3678..cee217ed5 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -45,6 +45,10 @@ class SellType(Enum): EMERGENCY_SELL = "emergency_sell" NONE = "" + def __str__(self): + # explicitly convert to String to help with exporting data. + return self.value + class SellCheckTuple(NamedTuple): """ diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 6496043f9..89991fde8 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -320,7 +320,7 @@ def test_edge_overrides_stoploss(limit_buy_order, fee, caplog, mocker, edge_conf # stoploss shoud be hit assert freqtrade.handle_trade(trade) is True - assert log_has('Executing Sell for NEO/BTC. Reason: SellType.STOP_LOSS', caplog) + assert log_has('Executing Sell for NEO/BTC. Reason: stop_loss', caplog) assert trade.sell_reason == SellType.STOP_LOSS.value From c13ec4a1d485e372c905a75a38ecc1bc42a60c6a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 27 Jun 2020 07:15:33 +0200 Subject: [PATCH 2726/3421] implement fallback loading for load_backtest_data --- freqtrade/data/btanalysis.py | 45 ++++++++++++++------------ freqtrade/optimize/optimize_reports.py | 2 +- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index a556207e5..adf01e33d 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -70,29 +70,34 @@ def load_backtest_data(filename: Union[Path, str]) -> pd.DataFrame: Load backtest data file. :param filename: pathlib.Path object, or string pointing to the file. :return: a dataframe with the analysis results + :raise: ValueError if loading goes wrong. """ - if isinstance(filename, str): - filename = Path(filename) + data = load_backtest_stats(filename) + if not isinstance(data, list): + # new format + if 'strategy' not in data: + raise ValueError("Unknown dataformat") + if len(data['strategy']) != 1: + raise ValueError("Detected new Format with more than one strategy") + strategy = list(data['strategy'].keys())[0] + data = data['strategy'][strategy]['trades'] + df = pd.DataFrame(data) - if not filename.is_file(): - raise ValueError(f"File {filename} does not exist.") + else: + # old format - only with lists. + df = pd.DataFrame(data, columns=BT_DATA_COLUMNS) - with filename.open() as file: - data = json_load(file) - - df = pd.DataFrame(data, columns=BT_DATA_COLUMNS) - - df['open_date'] = pd.to_datetime(df['open_date'], - unit='s', - utc=True, - infer_datetime_format=True - ) - df['close_date'] = pd.to_datetime(df['close_date'], - unit='s', - utc=True, - infer_datetime_format=True - ) - df['profit'] = df['close_rate'] - df['open_rate'] + df['open_date'] = pd.to_datetime(df['open_date'], + unit='s', + utc=True, + infer_datetime_format=True + ) + df['close_date'] = pd.to_datetime(df['close_date'], + unit='s', + utc=True, + infer_datetime_format=True + ) + df['profit_abs'] = df['close_rate'] - df['open_rate'] df = df.sort_values("open_date").reset_index(drop=True) return df diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index a7cc8a7d6..6f9d3f34e 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -55,7 +55,7 @@ def backtest_result_to_list(results: DataFrame) -> List[List]: # Return 0 as "index" for compatibility reasons (for now) # TODO: Evaluate if we can remove this return [[t.pair, t.profit_percent, t.open_date.timestamp(), - t.open_date.timestamp(), 0, t.trade_duration, + t.close_date.timestamp(), 0, t.trade_duration, t.open_rate, t.close_rate, t.open_at_end, t.sell_reason.value] for index, t in results.iterrows()] From afefe92523421c87b0e968aa79e25fde175687ba Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 27 Jun 2020 09:56:37 +0200 Subject: [PATCH 2727/3421] Add multi-strategy loading logic --- freqtrade/data/btanalysis.py | 47 ++++++++++++++----- .../testdata/backtest-result_multistrat.json | 1 + 2 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 tests/testdata/backtest-result_multistrat.json diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index adf01e33d..17d3fed14 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -3,7 +3,7 @@ Helpers when analyzing backtest data """ import logging from pathlib import Path -from typing import Dict, Union, Tuple, Any +from typing import Dict, Union, Tuple, Any, Optional import numpy as np import pandas as pd @@ -65,24 +65,41 @@ def load_backtest_stats(filename: Union[Path, str]) -> Dict[str, Any]: return data -def load_backtest_data(filename: Union[Path, str]) -> pd.DataFrame: +def load_backtest_data(filename: Union[Path, str], strategy: Optional[str] = None) -> pd.DataFrame: """ Load backtest data file. :param filename: pathlib.Path object, or string pointing to the file. + :param strategy: Strategy to load - mainly relevant for multi-strategy backtests + Can also serve as protection to load the correct result. :return: a dataframe with the analysis results :raise: ValueError if loading goes wrong. """ data = load_backtest_stats(filename) if not isinstance(data, list): - # new format + # new, nested format if 'strategy' not in data: - raise ValueError("Unknown dataformat") - if len(data['strategy']) != 1: - raise ValueError("Detected new Format with more than one strategy") - strategy = list(data['strategy'].keys())[0] + raise ValueError("Unknown dataformat.") + + if not strategy: + if len(data['strategy']) == 1: + strategy = list(data['strategy'].keys())[0] + else: + raise ValueError("Detected backtest result with more than one strategy. " + "Please specify a strategy.") + + if strategy not in data['strategy']: + raise ValueError(f"Strategy {strategy} not available in the backtest result.") + data = data['strategy'][strategy]['trades'] df = pd.DataFrame(data) - + df['open_date'] = pd.to_datetime(df['open_date'], + utc=True, + infer_datetime_format=True + ) + df['close_date'] = pd.to_datetime(df['close_date'], + utc=True, + infer_datetime_format=True + ) else: # old format - only with lists. df = pd.DataFrame(data, columns=BT_DATA_COLUMNS) @@ -140,10 +157,12 @@ def evaluate_result_multi(results: pd.DataFrame, timeframe: str, return df_final[df_final['open_trades'] > max_open_trades] -def load_trades_from_db(db_url: str) -> pd.DataFrame: +def load_trades_from_db(db_url: str, strategy: Optional[str] = None) -> pd.DataFrame: """ Load trades from a DB (using dburl) :param db_url: Sqlite url (default format sqlite:///tradesv3.dry-run.sqlite) + :param strategy: Strategy to load - mainly relevant for multi-strategy backtests + Can also serve as protection to load the correct result. :return: Dataframe containing Trades """ persistence.init(db_url, clean_open_orders=False) @@ -154,6 +173,10 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: "stake_amount", "max_rate", "min_rate", "id", "exchange", "stop_loss", "initial_stop_loss", "strategy", "timeframe"] + filters = [] + if strategy: + filters = Trade.strategy == strategy + trades = pd.DataFrame([(t.pair, t.open_date.replace(tzinfo=timezone.utc), t.close_date.replace(tzinfo=timezone.utc) if t.close_date else None, @@ -172,14 +195,14 @@ def load_trades_from_db(db_url: str) -> pd.DataFrame: t.stop_loss, t.initial_stop_loss, t.strategy, t.timeframe ) - for t in Trade.get_trades().all()], + for t in Trade.get_trades(filters).all()], columns=columns) return trades def load_trades(source: str, db_url: str, exportfilename: Path, - no_trades: bool = False) -> pd.DataFrame: + no_trades: bool = False, strategy: Optional[str] = None) -> pd.DataFrame: """ Based on configuration option "trade_source": * loads data from DB (using `db_url`) @@ -197,7 +220,7 @@ def load_trades(source: str, db_url: str, exportfilename: Path, if source == "DB": return load_trades_from_db(db_url) elif source == "file": - return load_backtest_data(exportfilename) + return load_backtest_data(exportfilename, strategy) def extract_trades_of_period(dataframe: pd.DataFrame, trades: pd.DataFrame, diff --git a/tests/testdata/backtest-result_multistrat.json b/tests/testdata/backtest-result_multistrat.json new file mode 100644 index 000000000..a58ab28cb --- /dev/null +++ b/tests/testdata/backtest-result_multistrat.json @@ -0,0 +1 @@ +{"strategy": {"DefaultStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "profit": 4.348872180451118e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.1455639097744267e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.506315789473681e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "profit": 4.3741353383458455e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004726817042606385, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "profit": 0.00040896345864661204, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002323284210526272, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5368421052630647e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "profit": 8.471127819548868e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004577728320801916, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "profit": 0.00044601518796991146, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042907308270676014, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "profit": 3.745609022556351e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5147869674185174e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "profit": 6.107769423558838e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "profit": 0.0007175643609022495, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -3.650999999999996e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "profit": 0.0013269330827067605, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "profit": 1.2180451127819219e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "profit": 0.001139113784461146, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.4511278195488e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006626566416040071, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004417042606516125, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "profit": 0.00013451513784460897, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.232832080200495e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004403456641603881, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.558897243107704e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "profit": 5.954887218045116e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.4461152882205115e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003977443609022545, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "profit": 0.00024060150375938838, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.1759398496240516e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "profit": 1.2880501253132587e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.138847117794446e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.3709273182957117e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.039097744360846e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "profit": 5.554887218044781e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.9724310776941686e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "profit": 0.00024310791979949287, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004924821553884823, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.0165413533833987e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004891728822054991, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "profit": 4.676691729323286e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "profit": 1.5659197994987058e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "profit": 8.755839598997492e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "profit": 0.00036826295739347814, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004911979949874384, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004841604010024786, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "profit": 1.501804511278178e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004756736842105175, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035588972431077615, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "profit": 0.00023060155388470588, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.7308270676692514e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001523810025062626, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -5.8369999999999985e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "profit": 0.00023075689223057277, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "profit": 1.4378446115287727e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033743132832080025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004620357894736804, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "profit": 0.00041353383458646656, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.587819548872171e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "profit": 0.00022657644110275071, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.891729323308177e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001449783458646603, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.2927318295739246e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042529804511277913, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006552757894736777, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.063157894736843e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.6576441102756397e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "profit": 0.0013729321804511196, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "profit": 9.543859649122774e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042270857142856846, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "profit": -0.000258379, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -2.5590000000000004e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -7.619999999999998e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "profit": 0.00010368902255639091, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006812030075187946, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "profit": 0.00010632000000000003, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "profit": 0.0015806817042606502, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "profit": 9.924812030075114e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.479699248120277e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.7814536340851996e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002168922305764362, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.504761904761831e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034269764411026804, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.8195488721804031e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001408521303258095, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "profit": 0.00043363413533832607, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.8235588972430847e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "profit": 0.0010509013533834544, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.779448621553787e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "profit": 8.188105263157511e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "profit": 1.3520501253133123e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.1215538847117757e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.1954887218044365e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "profit": 0.00022252260651629135, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.2506265664159932e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014310776942355607, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.905263157894727e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002175600501253122, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002232809523809512, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.817042606516199e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.174937343358337e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "profit": 5.057644110275549e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "profit": 1.3559147869673764e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "profit": 0.00015037604010024672, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.736842105263053e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "profit": -0.0030822220000000025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "profit": 0.00044962401002504593, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "profit": 8.182962406014932e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035357393483707866, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.657142857142672e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.9824561403508552e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "profit": 3.8872932330826816e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.9563909774435151e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.624561403508717e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.5253132832080657e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "profit": 1.3468671679197925e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.0892230576441054e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.326466165413529e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.592481203007459e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.5839598997494e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035408521303258167, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "profit": 8.243022556390922e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "profit": 6.512781954887175e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.020050125313278e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004595341353383492, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003471167919799484, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.594987468671663e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002049122807017481, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.5814536340851513e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "profit": 0.00045472170426064107, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5679197994986587e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.789473684210343e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020451132832080554, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.587969924812037e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002025454135338306, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.5724310776941724e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.344962406015033e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5308270676691466e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.6431077694236234e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.7639097744360576e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.4666666666666543e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "profit": 1.3032581453634e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014034441102756326, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020445624060149575, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.4486215538846723e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020603007518796984, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.162406015037611e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.713784461152774e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002075577443608964, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "profit": 1.2747318295739177e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.810526315789381e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "profit": 1.2722105263157733e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020802005012530989, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.00150375939842e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "profit": 0.00013894967418546025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "profit": 0.00047425268170424306, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.814536340852038e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "profit": -4.120000000000001e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003458647117794422, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004736834586466093, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "profit": -0.001781610000000003, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014285714285713902, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014367779448621124, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "profit": 0.00047810025062657024, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033880160401002224, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "profit": 1.2957443609021985e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033576451127818874, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003394370927318202, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.6140350877192417e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "profit": 4.117428571428529e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "profit": 4.129804511278194e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "profit": 8.132721804511231e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034586466165412166, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.3884711779447504e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034214350877191657, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003365359398496137, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "profit": -1.3399999999999973e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0}, "TestStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "profit": 4.348872180451118e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.1455639097744267e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.506315789473681e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "profit": 4.3741353383458455e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004726817042606385, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "profit": 0.00040896345864661204, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002323284210526272, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5368421052630647e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "profit": 8.471127819548868e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004577728320801916, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "profit": 0.00044601518796991146, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042907308270676014, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "profit": 3.745609022556351e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5147869674185174e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "profit": 6.107769423558838e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "profit": 0.0007175643609022495, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -3.650999999999996e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "profit": 0.0013269330827067605, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "profit": 1.2180451127819219e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "profit": 0.001139113784461146, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.4511278195488e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006626566416040071, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004417042606516125, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "profit": 0.00013451513784460897, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.232832080200495e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004403456641603881, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.558897243107704e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "profit": 5.954887218045116e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.4461152882205115e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003977443609022545, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "profit": 0.00024060150375938838, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.1759398496240516e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "profit": 1.2880501253132587e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.138847117794446e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.3709273182957117e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.039097744360846e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "profit": 5.554887218044781e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.9724310776941686e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "profit": 0.00024310791979949287, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004924821553884823, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.0165413533833987e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004891728822054991, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "profit": 4.676691729323286e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "profit": 1.5659197994987058e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "profit": 8.755839598997492e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "profit": 0.00036826295739347814, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004911979949874384, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004841604010024786, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "profit": 1.501804511278178e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004756736842105175, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035588972431077615, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "profit": 0.00023060155388470588, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.7308270676692514e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001523810025062626, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -5.8369999999999985e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "profit": 0.00023075689223057277, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "profit": 1.4378446115287727e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033743132832080025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004620357894736804, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "profit": 0.00041353383458646656, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.587819548872171e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "profit": 0.00022657644110275071, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.891729323308177e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001449783458646603, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.2927318295739246e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042529804511277913, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006552757894736777, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.063157894736843e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.6576441102756397e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "profit": 0.0013729321804511196, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "profit": 9.543859649122774e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042270857142856846, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "profit": -0.000258379, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -2.5590000000000004e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -7.619999999999998e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "profit": 0.00010368902255639091, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006812030075187946, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "profit": 0.00010632000000000003, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "profit": 0.0015806817042606502, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "profit": 9.924812030075114e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.479699248120277e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.7814536340851996e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002168922305764362, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.504761904761831e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034269764411026804, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.8195488721804031e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001408521303258095, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "profit": 0.00043363413533832607, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.8235588972430847e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "profit": 0.0010509013533834544, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.779448621553787e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "profit": 8.188105263157511e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "profit": 1.3520501253133123e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.1215538847117757e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.1954887218044365e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "profit": 0.00022252260651629135, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.2506265664159932e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014310776942355607, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.905263157894727e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002175600501253122, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002232809523809512, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.817042606516199e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.174937343358337e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "profit": 5.057644110275549e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "profit": 1.3559147869673764e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "profit": 0.00015037604010024672, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.736842105263053e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "profit": -0.0030822220000000025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "profit": 0.00044962401002504593, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "profit": 8.182962406014932e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035357393483707866, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.657142857142672e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.9824561403508552e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "profit": 3.8872932330826816e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.9563909774435151e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.624561403508717e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.5253132832080657e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "profit": 1.3468671679197925e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.0892230576441054e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.326466165413529e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.592481203007459e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.5839598997494e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035408521303258167, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "profit": 8.243022556390922e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "profit": 6.512781954887175e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.020050125313278e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004595341353383492, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003471167919799484, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.594987468671663e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002049122807017481, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.5814536340851513e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "profit": 0.00045472170426064107, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5679197994986587e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.789473684210343e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020451132832080554, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.587969924812037e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002025454135338306, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.5724310776941724e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.344962406015033e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5308270676691466e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.6431077694236234e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.7639097744360576e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.4666666666666543e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "profit": 1.3032581453634e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014034441102756326, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020445624060149575, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.4486215538846723e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020603007518796984, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.162406015037611e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.713784461152774e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002075577443608964, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "profit": 1.2747318295739177e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.810526315789381e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "profit": 1.2722105263157733e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020802005012530989, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.00150375939842e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "profit": 0.00013894967418546025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "profit": 0.00047425268170424306, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.814536340852038e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "profit": -4.120000000000001e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003458647117794422, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004736834586466093, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "profit": -0.001781610000000003, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014285714285713902, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014367779448621124, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "profit": 0.00047810025062657024, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033880160401002224, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "profit": 1.2957443609021985e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033576451127818874, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003394370927318202, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.6140350877192417e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "profit": 4.117428571428529e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "profit": 4.129804511278194e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "profit": 8.132721804511231e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034586466165412166, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.3884711779447504e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034214350877191657, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003365359398496137, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "profit": -1.3399999999999973e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0}}, "strategy_comparison": [{"key": "DefaultStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}, {"key": "TestStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}]} \ No newline at end of file From 573502d97226bdaea5ebb1d8eb92cdb078ad748d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 27 Jun 2020 09:59:23 +0200 Subject: [PATCH 2728/3421] Update test for load_trades_from_db --- tests/conftest.py | 9 ++++++--- tests/data/test_btanalysis.py | 9 +++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index f2143e60e..62810bd6e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -180,7 +180,8 @@ def create_mock_trades(fee): fee_close=fee.return_value, open_rate=0.123, exchange='bittrex', - open_order_id='dry_run_buy_12345' + open_order_id='dry_run_buy_12345', + strategy='DefaultStrategy', ) Trade.session.add(trade) @@ -195,7 +196,8 @@ def create_mock_trades(fee): close_profit=0.005, exchange='bittrex', is_open=False, - open_order_id='dry_run_sell_12345' + open_order_id='dry_run_sell_12345', + strategy='DefaultStrategy', ) Trade.session.add(trade) @@ -208,7 +210,8 @@ def create_mock_trades(fee): fee_close=fee.return_value, open_rate=0.123, exchange='bittrex', - open_order_id='prod_buy_12345' + open_order_id='prod_buy_12345', + strategy='DefaultStrategy', ) Trade.session.add(trade) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index fd3783bf2..32e476b6b 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -43,7 +43,7 @@ def test_load_backtest_data(testdatadir): filename = testdatadir / "backtest-result_test.json" bt_data = load_backtest_data(filename) assert isinstance(bt_data, DataFrame) - assert list(bt_data.columns) == BT_DATA_COLUMNS + ["profit"] + assert list(bt_data.columns) == BT_DATA_COLUMNS + ["profit_abs"] assert len(bt_data) == 179 # Test loading from string (must yield same result) @@ -72,6 +72,10 @@ def test_load_trades_from_db(default_conf, fee, mocker): for col in BT_DATA_COLUMNS: if col not in ['index', 'open_at_end']: assert col in trades.columns + trades = load_trades_from_db(db_url=default_conf['db_url'], strategy='DefaultStrategy') + assert len(trades) == 3 + trades = load_trades_from_db(db_url=default_conf['db_url'], strategy='NoneStrategy') + assert len(trades) == 0 def test_extract_trades_of_period(testdatadir): @@ -125,7 +129,8 @@ def test_load_trades(default_conf, mocker): load_trades("DB", db_url=default_conf.get('db_url'), exportfilename=default_conf.get('exportfilename'), - no_trades=False + no_trades=False, + strategy="DefaultStrategy", ) assert db_mock.call_count == 1 From f952f74bf18c71de95eb5db9e92218f3e166c567 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 27 Jun 2020 10:06:59 +0200 Subject: [PATCH 2729/3421] Add test for new format --- tests/data/test_btanalysis.py | 19 ++++++++++++++++++- tests/testdata/backtest-result_new.json | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 32e476b6b..9ae67ed58 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -17,6 +17,7 @@ from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, load_backtest_data, load_trades, load_trades_from_db) from freqtrade.data.history import load_data, load_pair_history +from freqtrade.optimize.backtesting import BacktestResult from tests.conftest import create_mock_trades @@ -38,7 +39,7 @@ def test_get_latest_backtest_filename(testdatadir, mocker): get_latest_backtest_filename(testdatadir) -def test_load_backtest_data(testdatadir): +def test_load_backtest_data_old_format(testdatadir): filename = testdatadir / "backtest-result_test.json" bt_data = load_backtest_data(filename) @@ -54,6 +55,22 @@ def test_load_backtest_data(testdatadir): load_backtest_data(str("filename") + "nofile") +def test_load_backtest_data_new_format(testdatadir): + + filename = testdatadir / "backtest-result_new.json" + bt_data = load_backtest_data(filename) + assert isinstance(bt_data, DataFrame) + assert set(bt_data.columns) == set(list(BacktestResult._fields) + ["profit_abs"]) + assert len(bt_data) == 179 + + # Test loading from string (must yield same result) + bt_data2 = load_backtest_data(str(filename)) + assert bt_data.equals(bt_data2) + + with pytest.raises(ValueError, match=r"File .* does not exist\."): + load_backtest_data(str("filename") + "nofile") + + @pytest.mark.usefixtures("init_persistence") def test_load_trades_from_db(default_conf, fee, mocker): diff --git a/tests/testdata/backtest-result_new.json b/tests/testdata/backtest-result_new.json index 457ad1bc7..a44597e82 100644 --- a/tests/testdata/backtest-result_new.json +++ b/tests/testdata/backtest-result_new.json @@ -1 +1 @@ -{"strategy": {"DefaultStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "profit": 4.348872180451118e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.1455639097744267e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.506315789473681e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "profit": 4.3741353383458455e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004726817042606385, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "profit": 0.00040896345864661204, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002323284210526272, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5368421052630647e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "profit": 8.471127819548868e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004577728320801916, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "profit": 0.00044601518796991146, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042907308270676014, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "profit": 3.745609022556351e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5147869674185174e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "profit": 6.107769423558838e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "profit": 0.0007175643609022495, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -3.650999999999996e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "profit": 0.0013269330827067605, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "profit": 1.2180451127819219e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "profit": 0.001139113784461146, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.4511278195488e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006626566416040071, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004417042606516125, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "profit": 0.00013451513784460897, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.232832080200495e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004403456641603881, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.558897243107704e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "profit": 5.954887218045116e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.4461152882205115e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003977443609022545, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "profit": 0.00024060150375938838, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.1759398496240516e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "profit": 1.2880501253132587e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.138847117794446e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.3709273182957117e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.039097744360846e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "profit": 5.554887218044781e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.9724310776941686e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "profit": 0.00024310791979949287, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004924821553884823, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.0165413533833987e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004891728822054991, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "profit": 4.676691729323286e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "profit": 1.5659197994987058e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "profit": 8.755839598997492e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "profit": 0.00036826295739347814, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004911979949874384, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004841604010024786, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "profit": 1.501804511278178e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004756736842105175, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035588972431077615, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "profit": 0.00023060155388470588, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.7308270676692514e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001523810025062626, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -5.8369999999999985e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "profit": 0.00023075689223057277, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "profit": 1.4378446115287727e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033743132832080025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004620357894736804, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "profit": 0.00041353383458646656, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.587819548872171e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "profit": 0.00022657644110275071, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.891729323308177e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001449783458646603, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.2927318295739246e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042529804511277913, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006552757894736777, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.063157894736843e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.6576441102756397e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "profit": 0.0013729321804511196, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "profit": 9.543859649122774e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042270857142856846, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "profit": -0.000258379, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -2.5590000000000004e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -7.619999999999998e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "profit": 0.00010368902255639091, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006812030075187946, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "profit": 0.00010632000000000003, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "profit": 0.0015806817042606502, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "profit": 9.924812030075114e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.479699248120277e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.7814536340851996e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002168922305764362, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.504761904761831e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034269764411026804, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.8195488721804031e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001408521303258095, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "profit": 0.00043363413533832607, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.8235588972430847e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "profit": 0.0010509013533834544, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.779448621553787e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "profit": 8.188105263157511e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "profit": 1.3520501253133123e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.1215538847117757e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.1954887218044365e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "profit": 0.00022252260651629135, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.2506265664159932e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014310776942355607, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.905263157894727e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002175600501253122, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002232809523809512, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.817042606516199e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.174937343358337e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "profit": 5.057644110275549e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "profit": 1.3559147869673764e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "profit": 0.00015037604010024672, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.736842105263053e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "profit": -0.0030822220000000025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "profit": 0.00044962401002504593, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "profit": 8.182962406014932e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035357393483707866, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.657142857142672e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.9824561403508552e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "profit": 3.8872932330826816e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.9563909774435151e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.624561403508717e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.5253132832080657e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "profit": 1.3468671679197925e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.0892230576441054e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.326466165413529e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.592481203007459e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.5839598997494e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035408521303258167, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "profit": 8.243022556390922e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "profit": 6.512781954887175e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.020050125313278e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004595341353383492, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003471167919799484, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.594987468671663e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002049122807017481, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.5814536340851513e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "profit": 0.00045472170426064107, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5679197994986587e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.789473684210343e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020451132832080554, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.587969924812037e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002025454135338306, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.5724310776941724e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.344962406015033e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5308270676691466e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.6431077694236234e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.7639097744360576e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.4666666666666543e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "profit": 1.3032581453634e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014034441102756326, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020445624060149575, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.4486215538846723e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020603007518796984, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.162406015037611e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.713784461152774e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002075577443608964, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "profit": 1.2747318295739177e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.810526315789381e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "profit": 1.2722105263157733e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020802005012530989, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.00150375939842e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "profit": 0.00013894967418546025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "profit": 0.00047425268170424306, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.814536340852038e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "profit": -4.120000000000001e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003458647117794422, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004736834586466093, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "profit": -0.001781610000000003, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014285714285713902, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014367779448621124, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "profit": 0.00047810025062657024, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033880160401002224, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "profit": 1.2957443609021985e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033576451127818874, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003394370927318202, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.6140350877192417e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "profit": 4.117428571428529e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "profit": 4.129804511278194e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "profit": 8.132721804511231e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034586466165412166, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.3884711779447504e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034214350877191657, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003365359398496137, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "profit": -1.3399999999999973e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0}}, "strategy_comparison": [{"key": "DefaultStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}]} +{"strategy": {"DefaultStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0}}, "strategy_comparison": [{"key": "DefaultStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}]} From 5b1a7ba00f8d9dbde687ba5f26ebfec3c420f38f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 27 Jun 2020 15:59:22 +0200 Subject: [PATCH 2730/3421] Test multistrat loading --- tests/data/test_btanalysis.py | 27 ++++++++++++++++++- .../testdata/backtest-result_multistrat.json | 2 +- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 9ae67ed58..63fe26eaa 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -32,8 +32,10 @@ def test_get_latest_backtest_filename(testdatadir, mocker): res = get_latest_backtest_filename(testdatadir) assert res == 'backtest-result_new.json' - mocker.patch("freqtrade.data.btanalysis.json_load", return_value={}) + res = get_latest_backtest_filename(str(testdatadir)) + assert res == 'backtest-result_new.json' + mocker.patch("freqtrade.data.btanalysis.json_load", return_value={}) with pytest.raises(ValueError, match=r"Invalid '.last_result.json' format."): get_latest_backtest_filename(testdatadir) @@ -70,6 +72,29 @@ def test_load_backtest_data_new_format(testdatadir): with pytest.raises(ValueError, match=r"File .* does not exist\."): load_backtest_data(str("filename") + "nofile") + with pytest.raises(ValueError, match=r"Unknown dataformat."): + load_backtest_data(testdatadir / '.last_result.json') + + +def test_load_backtest_data_multi(testdatadir): + + filename = testdatadir / "backtest-result_multistrat.json" + for strategy in ('DefaultStrategy', 'TestStrategy'): + bt_data = load_backtest_data(filename, strategy=strategy) + assert isinstance(bt_data, DataFrame) + assert set(bt_data.columns) == set(list(BacktestResult._fields) + ["profit_abs"]) + assert len(bt_data) == 179 + + # Test loading from string (must yield same result) + bt_data2 = load_backtest_data(str(filename), strategy=strategy) + assert bt_data.equals(bt_data2) + + with pytest.raises(ValueError, match=r"Strategy XYZ not available in the backtest result\."): + load_backtest_data(filename, strategy='XYZ') + + with pytest.raises(ValueError, match=r"Detected backtest result with more than one strategy.*"): + load_backtest_data(filename) + @pytest.mark.usefixtures("init_persistence") def test_load_trades_from_db(default_conf, fee, mocker): diff --git a/tests/testdata/backtest-result_multistrat.json b/tests/testdata/backtest-result_multistrat.json index a58ab28cb..88f021cb8 100644 --- a/tests/testdata/backtest-result_multistrat.json +++ b/tests/testdata/backtest-result_multistrat.json @@ -1 +1 @@ -{"strategy": {"DefaultStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "profit": 4.348872180451118e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.1455639097744267e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.506315789473681e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "profit": 4.3741353383458455e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004726817042606385, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "profit": 0.00040896345864661204, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002323284210526272, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5368421052630647e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "profit": 8.471127819548868e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004577728320801916, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "profit": 0.00044601518796991146, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042907308270676014, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "profit": 3.745609022556351e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5147869674185174e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "profit": 6.107769423558838e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "profit": 0.0007175643609022495, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -3.650999999999996e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "profit": 0.0013269330827067605, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "profit": 1.2180451127819219e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "profit": 0.001139113784461146, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.4511278195488e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006626566416040071, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004417042606516125, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "profit": 0.00013451513784460897, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.232832080200495e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004403456641603881, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.558897243107704e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "profit": 5.954887218045116e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.4461152882205115e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003977443609022545, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "profit": 0.00024060150375938838, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.1759398496240516e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "profit": 1.2880501253132587e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.138847117794446e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.3709273182957117e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.039097744360846e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "profit": 5.554887218044781e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.9724310776941686e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "profit": 0.00024310791979949287, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004924821553884823, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.0165413533833987e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004891728822054991, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "profit": 4.676691729323286e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "profit": 1.5659197994987058e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "profit": 8.755839598997492e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "profit": 0.00036826295739347814, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004911979949874384, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004841604010024786, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "profit": 1.501804511278178e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004756736842105175, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035588972431077615, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "profit": 0.00023060155388470588, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.7308270676692514e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001523810025062626, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -5.8369999999999985e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "profit": 0.00023075689223057277, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "profit": 1.4378446115287727e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033743132832080025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004620357894736804, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "profit": 0.00041353383458646656, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.587819548872171e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "profit": 0.00022657644110275071, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.891729323308177e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001449783458646603, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.2927318295739246e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042529804511277913, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006552757894736777, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.063157894736843e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.6576441102756397e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "profit": 0.0013729321804511196, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "profit": 9.543859649122774e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042270857142856846, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "profit": -0.000258379, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -2.5590000000000004e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -7.619999999999998e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "profit": 0.00010368902255639091, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006812030075187946, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "profit": 0.00010632000000000003, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "profit": 0.0015806817042606502, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "profit": 9.924812030075114e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.479699248120277e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.7814536340851996e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002168922305764362, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.504761904761831e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034269764411026804, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.8195488721804031e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001408521303258095, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "profit": 0.00043363413533832607, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.8235588972430847e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "profit": 0.0010509013533834544, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.779448621553787e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "profit": 8.188105263157511e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "profit": 1.3520501253133123e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.1215538847117757e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.1954887218044365e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "profit": 0.00022252260651629135, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.2506265664159932e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014310776942355607, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.905263157894727e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002175600501253122, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002232809523809512, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.817042606516199e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.174937343358337e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "profit": 5.057644110275549e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "profit": 1.3559147869673764e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "profit": 0.00015037604010024672, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.736842105263053e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "profit": -0.0030822220000000025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "profit": 0.00044962401002504593, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "profit": 8.182962406014932e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035357393483707866, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.657142857142672e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.9824561403508552e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "profit": 3.8872932330826816e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.9563909774435151e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.624561403508717e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.5253132832080657e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "profit": 1.3468671679197925e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.0892230576441054e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.326466165413529e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.592481203007459e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.5839598997494e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035408521303258167, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "profit": 8.243022556390922e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "profit": 6.512781954887175e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.020050125313278e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004595341353383492, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003471167919799484, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.594987468671663e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002049122807017481, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.5814536340851513e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "profit": 0.00045472170426064107, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5679197994986587e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.789473684210343e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020451132832080554, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.587969924812037e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002025454135338306, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.5724310776941724e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.344962406015033e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5308270676691466e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.6431077694236234e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.7639097744360576e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.4666666666666543e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "profit": 1.3032581453634e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014034441102756326, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020445624060149575, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.4486215538846723e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020603007518796984, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.162406015037611e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.713784461152774e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002075577443608964, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "profit": 1.2747318295739177e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.810526315789381e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "profit": 1.2722105263157733e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020802005012530989, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.00150375939842e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "profit": 0.00013894967418546025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "profit": 0.00047425268170424306, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.814536340852038e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "profit": -4.120000000000001e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003458647117794422, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004736834586466093, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "profit": -0.001781610000000003, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014285714285713902, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014367779448621124, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "profit": 0.00047810025062657024, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033880160401002224, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "profit": 1.2957443609021985e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033576451127818874, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003394370927318202, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.6140350877192417e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "profit": 4.117428571428529e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "profit": 4.129804511278194e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "profit": 8.132721804511231e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034586466165412166, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.3884711779447504e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034214350877191657, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003365359398496137, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "profit": -1.3399999999999973e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0}, "TestStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "profit": 4.348872180451118e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.1455639097744267e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.506315789473681e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "profit": 4.3741353383458455e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004726817042606385, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "profit": 0.00040896345864661204, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002323284210526272, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5368421052630647e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "profit": 8.471127819548868e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004577728320801916, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "profit": 0.00044601518796991146, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042907308270676014, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "profit": 3.745609022556351e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5147869674185174e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "profit": 6.107769423558838e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "profit": 0.0007175643609022495, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -3.650999999999996e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "profit": 0.0013269330827067605, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "profit": 1.2180451127819219e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "profit": 0.001139113784461146, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.4511278195488e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006626566416040071, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004417042606516125, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "profit": 0.00013451513784460897, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.232832080200495e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004403456641603881, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.558897243107704e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "profit": 5.954887218045116e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.4461152882205115e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003977443609022545, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "profit": 0.00024060150375938838, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.1759398496240516e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "profit": 1.2880501253132587e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.138847117794446e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.3709273182957117e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.039097744360846e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "profit": 5.554887218044781e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.9724310776941686e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "profit": 0.00024310791979949287, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004924821553884823, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.0165413533833987e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004891728822054991, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "profit": 4.676691729323286e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "profit": 1.5659197994987058e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "profit": 8.755839598997492e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "profit": 0.00036826295739347814, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004911979949874384, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004841604010024786, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "profit": 1.501804511278178e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004756736842105175, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035588972431077615, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "profit": 0.00023060155388470588, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.7308270676692514e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001523810025062626, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -5.8369999999999985e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "profit": 0.00023075689223057277, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "profit": 1.4378446115287727e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033743132832080025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004620357894736804, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "profit": 0.00041353383458646656, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "profit": 3.587819548872171e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "profit": 0.00022657644110275071, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.891729323308177e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001449783458646603, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.2927318295739246e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042529804511277913, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006552757894736777, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.063157894736843e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.6576441102756397e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "profit": 0.0013729321804511196, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "profit": 9.543859649122774e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "profit": 0.00042270857142856846, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "profit": -0.000258379, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -2.5590000000000004e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "profit": -7.619999999999998e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "profit": 0.00010368902255639091, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "profit": 0.0006812030075187946, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "profit": 0.00010632000000000003, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "profit": 0.0015806817042606502, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "profit": 9.924812030075114e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.479699248120277e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.7814536340851996e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002168922305764362, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.504761904761831e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034269764411026804, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.8195488721804031e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "profit": 0.0001408521303258095, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "profit": 0.00043363413533832607, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.8235588972430847e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "profit": 0.0010509013533834544, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.779448621553787e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "profit": 8.188105263157511e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "profit": 1.3520501253133123e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.1215538847117757e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.1954887218044365e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "profit": 0.00022252260651629135, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.2506265664159932e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014310776942355607, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.905263157894727e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002175600501253122, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002232809523809512, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.817042606516199e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.174937343358337e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "profit": 5.057644110275549e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "profit": 1.3559147869673764e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "profit": 0.00015037604010024672, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.736842105263053e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "profit": -0.0030822220000000025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "profit": 0.00044962401002504593, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "profit": 8.182962406014932e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035357393483707866, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.657142857142672e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.9824561403508552e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "profit": 3.8872932330826816e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.9563909774435151e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.624561403508717e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.5253132832080657e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "profit": 1.3468671679197925e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.0892230576441054e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.326466165413529e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.592481203007459e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "profit": 7.5839598997494e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "profit": 0.00035408521303258167, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "profit": 8.243022556390922e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "profit": 6.512781954887175e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.020050125313278e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004595341353383492, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003471167919799484, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.594987468671663e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002049122807017481, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.5814536340851513e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "profit": 0.00045472170426064107, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5679197994986587e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.789473684210343e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020451132832080554, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.587969924812037e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002025454135338306, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.5724310776941724e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.344962406015033e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.5308270676691466e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.6431077694236234e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.7639097744360576e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.4666666666666543e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "profit": 1.3032581453634e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014034441102756326, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020445624060149575, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "profit": 1.4486215538846723e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020603007518796984, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.162406015037611e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.713784461152774e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "profit": 0.0002075577443608964, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "profit": 1.2747318295739177e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.810526315789381e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "profit": 1.2722105263157733e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "profit": 0.00020802005012530989, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "profit": 8.00150375939842e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "profit": 0.00013894967418546025, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "profit": 0.00047425268170424306, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.814536340852038e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "profit": -4.120000000000001e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003458647117794422, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "profit": 0.0004736834586466093, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "profit": -0.001781610000000003, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014285714285713902, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "profit": 0.00014367779448621124, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "profit": 0.00047810025062657024, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033880160401002224, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "profit": 1.2957443609021985e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "profit": 0.00033576451127818874, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003394370927318202, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "profit": 2.6140350877192417e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "profit": 4.117428571428529e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "profit": 4.129804511278194e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "profit": 8.132721804511231e-05, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034586466165412166, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "profit": 4.3884711779447504e-07, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "profit": 0.00034214350877191657, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "profit": 0.0003365359398496137, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "profit": -1.3399999999999973e-06, "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0}}, "strategy_comparison": [{"key": "DefaultStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}, {"key": "TestStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}]} \ No newline at end of file +{"strategy": {"DefaultStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0}, "TestStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0}}, "strategy_comparison": [{"key": "DefaultStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}, {"key": "TestStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}]} \ No newline at end of file From 59ac4b9c9a2d0568252c82f8b48c833cb76bfd9e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 27 Jun 2020 19:48:45 +0200 Subject: [PATCH 2731/3421] Test writing statistics --- tests/data/test_history.py | 2 +- tests/optimize/test_optimize_reports.py | 27 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index c2eb2d715..8b3a3c568 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -36,7 +36,7 @@ def _backup_file(file: Path, copy_file: bool = False) -> None: """ Backup existing file to avoid deleting the user file :param file: complete path to the file - :param touch_file: create an empty file in replacement + :param copy_file: keep file in place too. :return: None """ file_swp = str(file) + '.swp' diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index c46b96ab2..690847adc 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -2,23 +2,27 @@ from datetime import datetime from pathlib import Path import pandas as pd +import re import pytest from arrow import Arrow from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.edge import PairInfo +from freqtrade.data.btanalysis import get_latest_backtest_filename from freqtrade.optimize.optimize_reports import (generate_backtest_stats, generate_edge_table, generate_pair_metrics, generate_sell_reason_stats, generate_strategy_metrics, store_backtest_result, + store_backtest_stats, text_table_bt_results, text_table_sell_reason, text_table_strategy) from freqtrade.strategy.interface import SellType from tests.conftest import patch_exchange +from tests.data.test_history import _backup_file, _clean_test_file def test_text_table_bt_results(default_conf, mocker): @@ -115,6 +119,29 @@ def test_generate_backtest_stats(default_conf, testdatadir): assert strat_stats['drawdown_end_ts'] == 0 assert strat_stats['drawdown_start_ts'] == 0 + # Test storing stats + filename = Path(testdatadir / 'btresult.json') + filename_last = Path(testdatadir / '.last_result.json') + _backup_file(filename_last, copy_file=True) + assert not filename.is_file() + + store_backtest_stats(filename, stats) + + # get real Filename (it's btresult-.json) + last_fn = get_latest_backtest_filename(filename_last.parent) + assert re.match(r"btresult-.*\.json", last_fn) + + filename1 = (testdatadir / last_fn) + assert filename1.is_file() + content = filename1.read_text() + assert 'max_drawdown' in content + assert 'strategy' in content + + assert filename_last.is_file() + + _clean_test_file(filename_last) + filename1.unlink() + def test_generate_pair_metrics(default_conf, mocker): From 59e0ca0aaab0543933d8bcd0961a62bb37db8916 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 09:04:19 +0200 Subject: [PATCH 2732/3421] Add pairlist to backtest-result --- freqtrade/optimize/optimize_reports.py | 1 + tests/optimize/test_optimize_reports.py | 2 ++ tests/testdata/backtest-result_multistrat.json | 2 +- tests/testdata/backtest-result_new.json | 2 +- 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 6f9d3f34e..b93e60dca 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -250,6 +250,7 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'backtest_days': backtest_days, 'trades_per_day': round(len(results) / backtest_days, 2) if backtest_days > 0 else None, 'market_change': market_change, + 'pairlist': list(btdata.keys()), 'stake_amount': config['stake_amount'] } result['strategy'][strategy] = strat_stats diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 690847adc..f908677d7 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -118,6 +118,7 @@ def test_generate_backtest_stats(default_conf, testdatadir): assert strat_stats['drawdown_end'] == Arrow.fromtimestamp(0).datetime assert strat_stats['drawdown_end_ts'] == 0 assert strat_stats['drawdown_start_ts'] == 0 + assert strat_stats['pairlist'] == ['UNITTEST/BTC'] # Test storing stats filename = Path(testdatadir / 'btresult.json') @@ -136,6 +137,7 @@ def test_generate_backtest_stats(default_conf, testdatadir): content = filename1.read_text() assert 'max_drawdown' in content assert 'strategy' in content + assert 'pairlist' in content assert filename_last.is_file() diff --git a/tests/testdata/backtest-result_multistrat.json b/tests/testdata/backtest-result_multistrat.json index 88f021cb8..0e5386ef3 100644 --- a/tests/testdata/backtest-result_multistrat.json +++ b/tests/testdata/backtest-result_multistrat.json @@ -1 +1 @@ -{"strategy": {"DefaultStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0}, "TestStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0}}, "strategy_comparison": [{"key": "DefaultStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}, {"key": "TestStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}]} \ No newline at end of file +{"strategy": {"DefaultStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0, "pairlist": ["TRX/BTC", "ADA/BTC", "XLM/BTC", "ETH/BTC", "XMR/BTC", "ZEC/BTC","NXT/BTC", "LTC/BTC", "ETC/BTC", "DASH/BTC"]}, "TestStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0,"pairlist": ["TRX/BTC", "ADA/BTC", "XLM/BTC", "ETH/BTC", "XMR/BTC", "ZEC/BTC","NXT/BTC", "LTC/BTC", "ETC/BTC", "DASH/BTC"]}}, "strategy_comparison": [{"key": "DefaultStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}, {"key": "TestStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}]} diff --git a/tests/testdata/backtest-result_new.json b/tests/testdata/backtest-result_new.json index a44597e82..f004e879a 100644 --- a/tests/testdata/backtest-result_new.json +++ b/tests/testdata/backtest-result_new.json @@ -1 +1 @@ -{"strategy": {"DefaultStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0}}, "strategy_comparison": [{"key": "DefaultStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}]} +{"strategy": {"DefaultStrategy": {"trades": [{"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:20:00+00:00", "trade_duration": 5, "open_rate": 9.64e-05, "close_rate": 0.00010074887218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1037.344398340249, "profit_abs": 0.00399999999999999}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:15:00+00:00", "close_date": "2018-01-10 07:30:00+00:00", "trade_duration": 15, "open_rate": 4.756e-05, "close_rate": 4.9705563909774425e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2102.6072329688814, "profit_abs": 0.00399999999999999}, {"pair": "XLM/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:35:00+00:00", "trade_duration": 10, "open_rate": 3.339e-05, "close_rate": 3.489631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2994.908655286014, "profit_abs": 0.0040000000000000036}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-10 07:25:00+00:00", "close_date": "2018-01-10 07:40:00+00:00", "trade_duration": 15, "open_rate": 9.696e-05, "close_rate": 0.00010133413533834584, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1031.3531353135315, "profit_abs": 0.00399999999999999}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 07:35:00+00:00", "close_date": "2018-01-10 08:35:00+00:00", "trade_duration": 60, "open_rate": 0.0943, "close_rate": 0.09477268170426063, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0604453870625663, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 07:40:00+00:00", "close_date": "2018-01-10 08:10:00+00:00", "trade_duration": 30, "open_rate": 0.02719607, "close_rate": 0.02760503345864661, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.677001860930642, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 08:15:00+00:00", "close_date": "2018-01-10 09:55:00+00:00", "trade_duration": 100, "open_rate": 0.04634952, "close_rate": 0.046581848421052625, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1575196463739, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 14:45:00+00:00", "close_date": "2018-01-10 15:50:00+00:00", "trade_duration": 65, "open_rate": 3.066e-05, "close_rate": 3.081368421052631e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3261.5786040443577, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 16:35:00+00:00", "close_date": "2018-01-10 17:15:00+00:00", "trade_duration": 40, "open_rate": 0.0168999, "close_rate": 0.016984611278195488, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.917194776300452, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 16:40:00+00:00", "close_date": "2018-01-10 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.09132568, "close_rate": 0.0917834528320802, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0949822656672252, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 18:50:00+00:00", "close_date": "2018-01-10 19:45:00+00:00", "trade_duration": 55, "open_rate": 0.08898003, "close_rate": 0.08942604518796991, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1238476768326557, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-10 22:15:00+00:00", "close_date": "2018-01-10 23:00:00+00:00", "trade_duration": 45, "open_rate": 0.08560008, "close_rate": 0.08602915308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1682232072680307, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-10 22:50:00+00:00", "close_date": "2018-01-10 23:20:00+00:00", "trade_duration": 30, "open_rate": 0.00249083, "close_rate": 0.0025282860902255634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 40.147260150231055, "profit_abs": 0.000999999999999987}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-10 23:15:00+00:00", "close_date": "2018-01-11 00:15:00+00:00", "trade_duration": 60, "open_rate": 3.022e-05, "close_rate": 3.037147869674185e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3309.0668431502318, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-10 23:40:00+00:00", "close_date": "2018-01-11 00:05:00+00:00", "trade_duration": 25, "open_rate": 0.002437, "close_rate": 0.0024980776942355883, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.03405826836274, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 00:00:00+00:00", "close_date": "2018-01-11 00:35:00+00:00", "trade_duration": 35, "open_rate": 0.04771803, "close_rate": 0.04843559436090225, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0956439316543456, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-11 03:40:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 45, "open_rate": 3.651e-05, "close_rate": 3.2859000000000005e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2738.9756231169545, "profit_abs": -0.01047499999999997}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 03:55:00+00:00", "close_date": "2018-01-11 04:25:00+00:00", "trade_duration": 30, "open_rate": 0.08824105, "close_rate": 0.08956798308270676, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1332594070446804, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 04:00:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 50, "open_rate": 0.00243, "close_rate": 0.002442180451127819, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 41.1522633744856, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:55:00+00:00", "trade_duration": 25, "open_rate": 0.04545064, "close_rate": 0.046589753784461146, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.200189040242338, "profit_abs": 0.001999999999999988}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:30:00+00:00", "close_date": "2018-01-11 04:50:00+00:00", "trade_duration": 20, "open_rate": 3.372e-05, "close_rate": 3.456511278195488e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2965.599051008304, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 04:55:00+00:00", "close_date": "2018-01-11 05:15:00+00:00", "trade_duration": 20, "open_rate": 0.02644, "close_rate": 0.02710265664160401, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7821482602118004, "profit_abs": 0.001999999999999988}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:20:00+00:00", "close_date": "2018-01-11 12:00:00+00:00", "trade_duration": 40, "open_rate": 0.08812, "close_rate": 0.08856170426065162, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1348161597821154, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 11:35:00+00:00", "close_date": "2018-01-11 12:15:00+00:00", "trade_duration": 40, "open_rate": 0.02683577, "close_rate": 0.026970285137844607, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.7263696923919087, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-11 14:00:00+00:00", "close_date": "2018-01-11 14:25:00+00:00", "trade_duration": 25, "open_rate": 4.919e-05, "close_rate": 5.04228320802005e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.9335230737956, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 19:25:00+00:00", "close_date": "2018-01-11 20:35:00+00:00", "trade_duration": 70, "open_rate": 0.08784896, "close_rate": 0.08828930566416039, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1383174029607181, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:35:00+00:00", "close_date": "2018-01-11 23:30:00+00:00", "trade_duration": 55, "open_rate": 5.105e-05, "close_rate": 5.130588972431077e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1958.8638589618022, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:25:00+00:00", "trade_duration": 30, "open_rate": 3.96e-05, "close_rate": 4.019548872180451e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2525.252525252525, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 22:55:00+00:00", "close_date": "2018-01-11 23:35:00+00:00", "trade_duration": 40, "open_rate": 2.885e-05, "close_rate": 2.899461152882205e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3466.204506065858, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-11 23:30:00+00:00", "close_date": "2018-01-12 00:05:00+00:00", "trade_duration": 35, "open_rate": 0.02645, "close_rate": 0.026847744360902256, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.780718336483932, "profit_abs": 0.0010000000000000148}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-11 23:55:00+00:00", "close_date": "2018-01-12 01:15:00+00:00", "trade_duration": 80, "open_rate": 0.048, "close_rate": 0.04824060150375939, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0833333333333335, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-12 21:15:00+00:00", "close_date": "2018-01-12 21:40:00+00:00", "trade_duration": 25, "open_rate": 4.692e-05, "close_rate": 4.809593984962405e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2131.287297527707, "profit_abs": 0.001999999999999974}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 00:55:00+00:00", "close_date": "2018-01-13 06:20:00+00:00", "trade_duration": 325, "open_rate": 0.00256966, "close_rate": 0.0025825405012531327, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.91565421106294, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 10:55:00+00:00", "close_date": "2018-01-13 11:35:00+00:00", "trade_duration": 40, "open_rate": 6.262e-05, "close_rate": 6.293388471177944e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1596.933886937081, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-13 13:05:00+00:00", "close_date": "2018-01-15 14:10:00+00:00", "trade_duration": 2945, "open_rate": 4.73e-05, "close_rate": 4.753709273182957e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2114.1649048625795, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:30:00+00:00", "close_date": "2018-01-13 14:45:00+00:00", "trade_duration": 75, "open_rate": 6.063e-05, "close_rate": 6.0933909774436085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1649.348507339601, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 13:40:00+00:00", "close_date": "2018-01-13 23:30:00+00:00", "trade_duration": 590, "open_rate": 0.00011082, "close_rate": 0.00011137548872180448, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 902.3641941887746, "profit_abs": -2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 15:15:00+00:00", "close_date": "2018-01-13 15:55:00+00:00", "trade_duration": 40, "open_rate": 5.93e-05, "close_rate": 5.9597243107769415e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1686.3406408094436, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 16:30:00+00:00", "close_date": "2018-01-13 17:10:00+00:00", "trade_duration": 40, "open_rate": 0.04850003, "close_rate": 0.04874313791979949, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.0618543947292407, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-13 22:05:00+00:00", "close_date": "2018-01-14 06:25:00+00:00", "trade_duration": 500, "open_rate": 0.09825019, "close_rate": 0.09874267215538848, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0178097365511456, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 00:20:00+00:00", "close_date": "2018-01-14 22:55:00+00:00", "trade_duration": 1355, "open_rate": 6.018e-05, "close_rate": 6.048165413533834e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1661.681621801263, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 12:45:00+00:00", "close_date": "2018-01-14 13:25:00+00:00", "trade_duration": 40, "open_rate": 0.09758999, "close_rate": 0.0980791628822055, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.024695258191952, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-14 15:30:00+00:00", "close_date": "2018-01-14 16:00:00+00:00", "trade_duration": 30, "open_rate": 0.00311, "close_rate": 0.0031567669172932328, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.154340836012864, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 20:45:00+00:00", "close_date": "2018-01-14 22:15:00+00:00", "trade_duration": 90, "open_rate": 0.00312401, "close_rate": 0.003139669197994987, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 32.010140812609436, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-14 23:35:00+00:00", "close_date": "2018-01-15 00:30:00+00:00", "trade_duration": 55, "open_rate": 0.0174679, "close_rate": 0.017555458395989976, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 5.724786608579165, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-14 23:45:00+00:00", "close_date": "2018-01-15 00:25:00+00:00", "trade_duration": 40, "open_rate": 0.07346846, "close_rate": 0.07383672295739348, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.3611282991367997, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 02:25:00+00:00", "close_date": "2018-01-15 03:05:00+00:00", "trade_duration": 40, "open_rate": 0.097994, "close_rate": 0.09848519799498744, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.020470641059657, "profit_abs": -2.7755575615628914e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 07:20:00+00:00", "close_date": "2018-01-15 08:00:00+00:00", "trade_duration": 40, "open_rate": 0.09659, "close_rate": 0.09707416040100247, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0353038616834043, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-15 08:20:00+00:00", "close_date": "2018-01-15 08:55:00+00:00", "trade_duration": 35, "open_rate": 9.987e-05, "close_rate": 0.00010137180451127818, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1001.3016921998599, "profit_abs": 0.0010000000000000009}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-15 12:10:00+00:00", "close_date": "2018-01-16 02:50:00+00:00", "trade_duration": 880, "open_rate": 0.0948969, "close_rate": 0.09537257368421052, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0537752023511833, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:10:00+00:00", "close_date": "2018-01-15 17:40:00+00:00", "trade_duration": 210, "open_rate": 0.071, "close_rate": 0.07135588972431077, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4084507042253522, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 14:30:00+00:00", "close_date": "2018-01-15 15:10:00+00:00", "trade_duration": 40, "open_rate": 0.04600501, "close_rate": 0.046235611553884705, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.173676301776698, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:10:00+00:00", "close_date": "2018-01-15 19:25:00+00:00", "trade_duration": 75, "open_rate": 9.438e-05, "close_rate": 9.485308270676693e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1059.5465140919687, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 18:35:00+00:00", "close_date": "2018-01-15 19:15:00+00:00", "trade_duration": 40, "open_rate": 0.03040001, "close_rate": 0.030552391002506264, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.2894726021471703, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-15 20:25:00+00:00", "close_date": "2018-01-16 08:25:00+00:00", "trade_duration": 720, "open_rate": 5.837e-05, "close_rate": 5.2533e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1713.2088401576154, "profit_abs": -0.010474999999999984}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-15 20:40:00+00:00", "close_date": "2018-01-15 22:00:00+00:00", "trade_duration": 80, "open_rate": 0.046036, "close_rate": 0.04626675689223057, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.1722130506560084, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 00:30:00+00:00", "close_date": "2018-01-16 01:10:00+00:00", "trade_duration": 40, "open_rate": 0.0028685, "close_rate": 0.0028828784461152877, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 34.86142583231654, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 01:15:00+00:00", "close_date": "2018-01-16 02:35:00+00:00", "trade_duration": 80, "open_rate": 0.06731755, "close_rate": 0.0676549813283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4854967241083492, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 07:45:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 55, "open_rate": 0.09217614, "close_rate": 0.09263817578947368, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0848794492804754, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:55:00+00:00", "trade_duration": 20, "open_rate": 0.0165, "close_rate": 0.016913533834586467, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.0606060606060606, "profit_abs": 0.0020000000000000018}, {"pair": "TRX/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 08:35:00+00:00", "close_date": "2018-01-16 08:40:00+00:00", "trade_duration": 5, "open_rate": 7.953e-05, "close_rate": 8.311781954887218e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1257.387149503332, "profit_abs": 0.00399999999999999}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 08:45:00+00:00", "close_date": "2018-01-16 09:50:00+00:00", "trade_duration": 65, "open_rate": 0.045202, "close_rate": 0.04542857644110275, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2122914915269236, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:45:00+00:00", "trade_duration": 30, "open_rate": 5.248e-05, "close_rate": 5.326917293233082e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1905.487804878049, "profit_abs": 0.0010000000000000009}, {"pair": "XMR/BTC", "profit_percent": 0.0, "open_date": "2018-01-16 09:15:00+00:00", "close_date": "2018-01-16 09:55:00+00:00", "trade_duration": 40, "open_rate": 0.02892318, "close_rate": 0.02906815834586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.457434486802627, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 09:50:00+00:00", "close_date": "2018-01-16 10:10:00+00:00", "trade_duration": 20, "open_rate": 5.158e-05, "close_rate": 5.287273182957392e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1938.735944164405, "profit_abs": 0.001999999999999988}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:35:00+00:00", "trade_duration": 30, "open_rate": 0.02828232, "close_rate": 0.02870761804511278, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5357778286929786, "profit_abs": 0.0010000000000000009}, {"pair": "ZEC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 10:05:00+00:00", "close_date": "2018-01-16 10:40:00+00:00", "trade_duration": 35, "open_rate": 0.04357584, "close_rate": 0.044231115789473675, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.294849623093898, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 13:45:00+00:00", "close_date": "2018-01-16 14:20:00+00:00", "trade_duration": 35, "open_rate": 5.362e-05, "close_rate": 5.442631578947368e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1864.975755315181, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-16 17:30:00+00:00", "close_date": "2018-01-16 18:25:00+00:00", "trade_duration": 55, "open_rate": 5.302e-05, "close_rate": 5.328576441102756e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.0807242549984, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:45:00+00:00", "trade_duration": 30, "open_rate": 0.09129999, "close_rate": 0.09267292218045112, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0952903718828448, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 18:15:00+00:00", "close_date": "2018-01-16 18:35:00+00:00", "trade_duration": 20, "open_rate": 3.808e-05, "close_rate": 3.903438596491228e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2626.0504201680674, "profit_abs": 0.0020000000000000018}, {"pair": "XMR/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-16 19:00:00+00:00", "close_date": "2018-01-16 19:30:00+00:00", "trade_duration": 30, "open_rate": 0.02811012, "close_rate": 0.028532828571428567, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.557437677249333, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 60, "open_rate": 0.00258379, "close_rate": 0.002325411, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.702835756775904, "profit_abs": -0.010474999999999984}, {"pair": "NXT/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:25:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 80, "open_rate": 2.559e-05, "close_rate": 2.3031e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3907.7764751856193, "profit_abs": -0.010474999999999998}, {"pair": "TRX/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-16 21:35:00+00:00", "close_date": "2018-01-16 22:25:00+00:00", "trade_duration": 50, "open_rate": 7.62e-05, "close_rate": 6.858e-05, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1312.3359580052495, "profit_abs": -0.010474999999999984}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:35:00+00:00", "trade_duration": 5, "open_rate": 0.00229844, "close_rate": 0.002402129022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 43.507770487809125, "profit_abs": 0.004000000000000017}, {"pair": "LTC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:30:00+00:00", "close_date": "2018-01-16 22:40:00+00:00", "trade_duration": 10, "open_rate": 0.0151, "close_rate": 0.015781203007518795, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.622516556291391, "profit_abs": 0.00399999999999999}, {"pair": "ETC/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:40:00+00:00", "close_date": "2018-01-16 22:45:00+00:00", "trade_duration": 5, "open_rate": 0.00235676, "close_rate": 0.00246308, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 42.431134269081284, "profit_abs": 0.0040000000000000036}, {"pair": "DASH/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-16 22:45:00+00:00", "close_date": "2018-01-16 23:05:00+00:00", "trade_duration": 20, "open_rate": 0.0630692, "close_rate": 0.06464988170426066, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.585559988076589, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-16 22:50:00+00:00", "close_date": "2018-01-16 22:55:00+00:00", "trade_duration": 5, "open_rate": 2.2e-05, "close_rate": 2.299248120300751e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 4545.454545454546, "profit_abs": 0.003999999999999976}, {"pair": "ADA/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-17 03:30:00+00:00", "close_date": "2018-01-17 04:00:00+00:00", "trade_duration": 30, "open_rate": 4.974e-05, "close_rate": 5.048796992481203e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2010.454362685967, "profit_abs": 0.0010000000000000009}, {"pair": "TRX/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-17 03:55:00+00:00", "close_date": "2018-01-17 04:15:00+00:00", "trade_duration": 20, "open_rate": 7.108e-05, "close_rate": 7.28614536340852e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1406.8655036578502, "profit_abs": 0.001999999999999974}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 09:35:00+00:00", "close_date": "2018-01-17 10:15:00+00:00", "trade_duration": 40, "open_rate": 0.04327, "close_rate": 0.04348689223057644, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.3110700254217704, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:20:00+00:00", "close_date": "2018-01-17 17:00:00+00:00", "trade_duration": 400, "open_rate": 4.997e-05, "close_rate": 5.022047619047618e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2001.2007204322595, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:25:00+00:00", "trade_duration": 55, "open_rate": 0.06836818, "close_rate": 0.06871087764411027, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4626687444363737, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 10:30:00+00:00", "close_date": "2018-01-17 11:10:00+00:00", "trade_duration": 40, "open_rate": 3.63e-05, "close_rate": 3.648195488721804e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2754.8209366391184, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:30:00+00:00", "close_date": "2018-01-17 22:05:00+00:00", "trade_duration": 575, "open_rate": 0.0281, "close_rate": 0.02824085213032581, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5587188612099645, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-17 12:35:00+00:00", "close_date": "2018-01-17 16:55:00+00:00", "trade_duration": 260, "open_rate": 0.08651001, "close_rate": 0.08694364413533832, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1559355963546878, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 05:00:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 55, "open_rate": 5.633e-05, "close_rate": 5.6612355889724306e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1775.2529735487308, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 05:20:00+00:00", "close_date": "2018-01-18 05:55:00+00:00", "trade_duration": 35, "open_rate": 0.06988494, "close_rate": 0.07093584135338346, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.430923457900944, "profit_abs": 0.0010000000000000009}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 07:35:00+00:00", "close_date": "2018-01-18 08:15:00+00:00", "trade_duration": 40, "open_rate": 5.545e-05, "close_rate": 5.572794486215538e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1803.4265103697026, "profit_abs": -1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 09:00:00+00:00", "close_date": "2018-01-18 09:40:00+00:00", "trade_duration": 40, "open_rate": 0.01633527, "close_rate": 0.016417151052631574, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.121723118136401, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 16:40:00+00:00", "close_date": "2018-01-18 17:20:00+00:00", "trade_duration": 40, "open_rate": 0.00269734, "close_rate": 0.002710860501253133, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.073561360451414, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-18 18:05:00+00:00", "close_date": "2018-01-18 18:30:00+00:00", "trade_duration": 25, "open_rate": 4.475e-05, "close_rate": 4.587155388471177e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2234.63687150838, "profit_abs": 0.0020000000000000018}, {"pair": "NXT/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-18 18:25:00+00:00", "close_date": "2018-01-18 18:55:00+00:00", "trade_duration": 30, "open_rate": 2.79e-05, "close_rate": 2.8319548872180444e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3584.2293906810037, "profit_abs": 0.000999999999999987}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 20:10:00+00:00", "close_date": "2018-01-18 20:50:00+00:00", "trade_duration": 40, "open_rate": 0.04439326, "close_rate": 0.04461578260651629, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.2525942001105577, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 21:30:00+00:00", "close_date": "2018-01-19 00:35:00+00:00", "trade_duration": 185, "open_rate": 4.49e-05, "close_rate": 4.51250626566416e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2227.1714922049, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-18 21:55:00+00:00", "close_date": "2018-01-19 05:05:00+00:00", "trade_duration": 430, "open_rate": 0.02855, "close_rate": 0.028693107769423555, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.502626970227671, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 22:10:00+00:00", "close_date": "2018-01-18 22:50:00+00:00", "trade_duration": 40, "open_rate": 5.796e-05, "close_rate": 5.8250526315789473e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1725.3278122843342, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-18 23:50:00+00:00", "close_date": "2018-01-19 00:30:00+00:00", "trade_duration": 40, "open_rate": 0.04340323, "close_rate": 0.04362079005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.303975994413319, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-19 16:45:00+00:00", "close_date": "2018-01-19 17:35:00+00:00", "trade_duration": 50, "open_rate": 0.04454455, "close_rate": 0.04476783095238095, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.244943545282195, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:15:00+00:00", "close_date": "2018-01-19 19:55:00+00:00", "trade_duration": 160, "open_rate": 5.62e-05, "close_rate": 5.648170426065162e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1779.3594306049824, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-19 17:20:00+00:00", "close_date": "2018-01-19 20:15:00+00:00", "trade_duration": 175, "open_rate": 4.339e-05, "close_rate": 4.360749373433584e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2304.6784973496196, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-20 04:45:00+00:00", "close_date": "2018-01-20 17:35:00+00:00", "trade_duration": 770, "open_rate": 0.0001009, "close_rate": 0.00010140576441102755, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 991.0802775024778, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 15:15:00+00:00", "trade_duration": 625, "open_rate": 0.00270505, "close_rate": 0.002718609147869674, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.96789338459548, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 04:50:00+00:00", "close_date": "2018-01-20 07:00:00+00:00", "trade_duration": 130, "open_rate": 0.03000002, "close_rate": 0.030150396040100245, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.3333311111125927, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 09:00:00+00:00", "close_date": "2018-01-20 09:40:00+00:00", "trade_duration": 40, "open_rate": 5.46e-05, "close_rate": 5.4873684210526304e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1831.5018315018317, "profit_abs": -1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.10448878, "open_date": "2018-01-20 18:25:00+00:00", "close_date": "2018-01-25 03:50:00+00:00", "trade_duration": 6325, "open_rate": 0.03082222, "close_rate": 0.027739998, "open_at_end": false, "sell_reason": "stop_loss", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.244412634781012, "profit_abs": -0.010474999999999998}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-20 22:25:00+00:00", "close_date": "2018-01-20 23:15:00+00:00", "trade_duration": 50, "open_rate": 0.08969999, "close_rate": 0.09014961401002504, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1148273260677064, "profit_abs": 0.0}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 02:50:00+00:00", "close_date": "2018-01-21 14:30:00+00:00", "trade_duration": 700, "open_rate": 0.01632501, "close_rate": 0.01640683962406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.125570520324337, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 10:20:00+00:00", "close_date": "2018-01-21 11:00:00+00:00", "trade_duration": 40, "open_rate": 0.070538, "close_rate": 0.07089157393483708, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.417675579120474, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 15:50:00+00:00", "close_date": "2018-01-21 18:45:00+00:00", "trade_duration": 175, "open_rate": 5.301e-05, "close_rate": 5.327571428571427e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1886.4365214110546, "profit_abs": -2.7755575615628914e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-21 16:20:00+00:00", "close_date": "2018-01-21 17:00:00+00:00", "trade_duration": 40, "open_rate": 3.955e-05, "close_rate": 3.9748245614035085e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2528.4450063211125, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:45:00+00:00", "trade_duration": 30, "open_rate": 0.00258505, "close_rate": 0.002623922932330827, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.6839712964933, "profit_abs": 0.0010000000000000009}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-21 21:15:00+00:00", "close_date": "2018-01-21 21:55:00+00:00", "trade_duration": 40, "open_rate": 3.903e-05, "close_rate": 3.922563909774435e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2562.1316935690497, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 00:35:00+00:00", "close_date": "2018-01-22 10:35:00+00:00", "trade_duration": 600, "open_rate": 5.236e-05, "close_rate": 5.262245614035087e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1909.8548510313217, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 01:30:00+00:00", "close_date": "2018-01-22 02:10:00+00:00", "trade_duration": 40, "open_rate": 9.028e-05, "close_rate": 9.07325313283208e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1107.6650420912717, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 12:25:00+00:00", "close_date": "2018-01-22 14:35:00+00:00", "trade_duration": 130, "open_rate": 0.002687, "close_rate": 0.002700468671679198, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 37.21622627465575, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 13:15:00+00:00", "close_date": "2018-01-22 13:55:00+00:00", "trade_duration": 40, "open_rate": 4.168e-05, "close_rate": 4.188892230576441e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2399.232245681382, "profit_abs": 1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-22 14:00:00+00:00", "close_date": "2018-01-22 14:30:00+00:00", "trade_duration": 30, "open_rate": 8.821e-05, "close_rate": 8.953646616541353e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1133.6583153837435, "profit_abs": 0.0010000000000000148}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-22 15:55:00+00:00", "close_date": "2018-01-22 16:40:00+00:00", "trade_duration": 45, "open_rate": 5.172e-05, "close_rate": 5.1979248120300745e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1933.4880123743235, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-22 16:05:00+00:00", "close_date": "2018-01-22 16:25:00+00:00", "trade_duration": 20, "open_rate": 3.026e-05, "close_rate": 3.101839598997494e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3304.692663582287, "profit_abs": 0.0020000000000000157}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 19:50:00+00:00", "close_date": "2018-01-23 00:10:00+00:00", "trade_duration": 260, "open_rate": 0.07064, "close_rate": 0.07099408521303258, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.415628539071348, "profit_abs": 1.3877787807814457e-17}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-22 21:25:00+00:00", "close_date": "2018-01-22 22:05:00+00:00", "trade_duration": 40, "open_rate": 0.01644483, "close_rate": 0.01652726022556391, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.080938507725528, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-23 00:05:00+00:00", "close_date": "2018-01-23 00:35:00+00:00", "trade_duration": 30, "open_rate": 4.331e-05, "close_rate": 4.3961278195488714e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2308.935580697299, "profit_abs": 0.0010000000000000148}, {"pair": "NXT/BTC", "profit_percent": 0.01995012, "open_date": "2018-01-23 01:50:00+00:00", "close_date": "2018-01-23 02:15:00+00:00", "trade_duration": 25, "open_rate": 3.2e-05, "close_rate": 3.2802005012531326e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3125.0000000000005, "profit_abs": 0.0020000000000000018}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 04:25:00+00:00", "close_date": "2018-01-23 05:15:00+00:00", "trade_duration": 50, "open_rate": 0.09167706, "close_rate": 0.09213659413533835, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0907854156754153, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 07:35:00+00:00", "close_date": "2018-01-23 09:00:00+00:00", "trade_duration": 85, "open_rate": 0.0692498, "close_rate": 0.06959691679197995, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4440474918339115, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 10:50:00+00:00", "close_date": "2018-01-23 13:05:00+00:00", "trade_duration": 135, "open_rate": 3.182e-05, "close_rate": 3.197949874686716e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3142.677561282213, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 11:05:00+00:00", "close_date": "2018-01-23 16:05:00+00:00", "trade_duration": 300, "open_rate": 0.04088, "close_rate": 0.04108491228070175, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4461839530332683, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 14:55:00+00:00", "close_date": "2018-01-23 15:35:00+00:00", "trade_duration": 40, "open_rate": 5.15e-05, "close_rate": 5.175814536340851e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1941.747572815534, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-23 16:35:00+00:00", "close_date": "2018-01-24 00:05:00+00:00", "trade_duration": 450, "open_rate": 0.09071698, "close_rate": 0.09117170170426064, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.1023294646713329, "profit_abs": 0.0}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 17:25:00+00:00", "close_date": "2018-01-23 18:45:00+00:00", "trade_duration": 80, "open_rate": 3.128e-05, "close_rate": 3.1436791979949865e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3196.9309462915603, "profit_abs": -2.7755575615628914e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 20:15:00+00:00", "close_date": "2018-01-23 22:00:00+00:00", "trade_duration": 105, "open_rate": 9.555e-05, "close_rate": 9.602894736842104e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1046.5724751439038, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 22:30:00+00:00", "close_date": "2018-01-23 23:10:00+00:00", "trade_duration": 40, "open_rate": 0.04080001, "close_rate": 0.0410045213283208, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.450979791426522, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-23 23:50:00+00:00", "close_date": "2018-01-24 03:35:00+00:00", "trade_duration": 225, "open_rate": 5.163e-05, "close_rate": 5.18887969924812e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1936.8584156498162, "profit_abs": 1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 00:20:00+00:00", "close_date": "2018-01-24 01:50:00+00:00", "trade_duration": 90, "open_rate": 0.04040781, "close_rate": 0.04061035541353383, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.474769110228938, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 06:45:00+00:00", "close_date": "2018-01-24 07:25:00+00:00", "trade_duration": 40, "open_rate": 5.132e-05, "close_rate": 5.157724310776942e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1948.5580670303975, "profit_abs": 0.0}, {"pair": "ADA/BTC", "profit_percent": 0.03990025, "open_date": "2018-01-24 14:15:00+00:00", "close_date": "2018-01-24 14:25:00+00:00", "trade_duration": 10, "open_rate": 5.198e-05, "close_rate": 5.432496240601503e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1923.8168526356292, "profit_abs": 0.0040000000000000036}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 14:50:00+00:00", "close_date": "2018-01-24 16:35:00+00:00", "trade_duration": 105, "open_rate": 3.054e-05, "close_rate": 3.069308270676692e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3274.3942370661425, "profit_abs": 0.0}, {"pair": "TRX/BTC", "profit_percent": 0.0, "open_date": "2018-01-24 15:10:00+00:00", "close_date": "2018-01-24 16:15:00+00:00", "trade_duration": 65, "open_rate": 9.263e-05, "close_rate": 9.309431077694236e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1079.5638562020945, "profit_abs": 2.7755575615628914e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-24 22:40:00+00:00", "close_date": "2018-01-24 23:25:00+00:00", "trade_duration": 45, "open_rate": 5.514e-05, "close_rate": 5.54163909774436e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1813.5654697134569, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 00:50:00+00:00", "close_date": "2018-01-25 01:30:00+00:00", "trade_duration": 40, "open_rate": 4.921e-05, "close_rate": 4.9456666666666664e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2032.1072952651903, "profit_abs": 1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-25 08:15:00+00:00", "close_date": "2018-01-25 12:15:00+00:00", "trade_duration": 240, "open_rate": 0.0026, "close_rate": 0.002613032581453634, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.46153846153847, "profit_abs": 1.3877787807814457e-17}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 10:25:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 350, "open_rate": 0.02799871, "close_rate": 0.028139054411027563, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.571593119825878, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 11:00:00+00:00", "close_date": "2018-01-25 11:45:00+00:00", "trade_duration": 45, "open_rate": 0.04078902, "close_rate": 0.0409934762406015, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4516401717913303, "profit_abs": -1.3877787807814457e-17}, {"pair": "NXT/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:05:00+00:00", "close_date": "2018-01-25 13:45:00+00:00", "trade_duration": 40, "open_rate": 2.89e-05, "close_rate": 2.904486215538847e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3460.2076124567475, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 13:20:00+00:00", "close_date": "2018-01-25 14:05:00+00:00", "trade_duration": 45, "open_rate": 0.041103, "close_rate": 0.04130903007518797, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4329124394813033, "profit_abs": 1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-25 15:45:00+00:00", "close_date": "2018-01-25 16:15:00+00:00", "trade_duration": 30, "open_rate": 5.428e-05, "close_rate": 5.509624060150376e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1842.2991893883568, "profit_abs": 0.0010000000000000148}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 17:45:00+00:00", "close_date": "2018-01-25 23:15:00+00:00", "trade_duration": 330, "open_rate": 5.414e-05, "close_rate": 5.441137844611528e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1847.063169560399, "profit_abs": -1.3877787807814457e-17}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-25 21:15:00+00:00", "close_date": "2018-01-25 21:55:00+00:00", "trade_duration": 40, "open_rate": 0.04140777, "close_rate": 0.0416153277443609, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.415005686130888, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 02:05:00+00:00", "close_date": "2018-01-26 02:45:00+00:00", "trade_duration": 40, "open_rate": 0.00254309, "close_rate": 0.002555837318295739, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.32224183965177, "profit_abs": 1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 02:55:00+00:00", "close_date": "2018-01-26 15:10:00+00:00", "trade_duration": 735, "open_rate": 5.607e-05, "close_rate": 5.6351052631578935e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1783.4849295523454, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETC/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 06:10:00+00:00", "close_date": "2018-01-26 09:25:00+00:00", "trade_duration": 195, "open_rate": 0.00253806, "close_rate": 0.0025507821052631577, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 39.400171784748984, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 07:25:00+00:00", "close_date": "2018-01-26 09:55:00+00:00", "trade_duration": 150, "open_rate": 0.0415, "close_rate": 0.04170802005012531, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4096385542168677, "profit_abs": 0.0}, {"pair": "XLM/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-26 09:55:00+00:00", "close_date": "2018-01-26 10:25:00+00:00", "trade_duration": 30, "open_rate": 5.321e-05, "close_rate": 5.401015037593984e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1879.3459875963165, "profit_abs": 0.000999999999999987}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-26 16:05:00+00:00", "close_date": "2018-01-26 16:45:00+00:00", "trade_duration": 40, "open_rate": 0.02772046, "close_rate": 0.02785940967418546, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.6074437437185387, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": 0.0, "open_date": "2018-01-26 23:35:00+00:00", "close_date": "2018-01-27 00:15:00+00:00", "trade_duration": 40, "open_rate": 0.09461341, "close_rate": 0.09508766268170424, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0569326272036914, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 00:35:00+00:00", "close_date": "2018-01-27 01:30:00+00:00", "trade_duration": 55, "open_rate": 5.615e-05, "close_rate": 5.643145363408521e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1780.9439002671415, "profit_abs": -1.3877787807814457e-17}, {"pair": "ADA/BTC", "profit_percent": -0.07877175, "open_date": "2018-01-27 00:45:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 4560, "open_rate": 5.556e-05, "close_rate": 5.144e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1799.8560115190785, "profit_abs": -0.007896868250539965}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 02:30:00+00:00", "close_date": "2018-01-27 11:25:00+00:00", "trade_duration": 535, "open_rate": 0.06900001, "close_rate": 0.06934587471177944, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492751522789635, "profit_abs": 0.0}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 06:25:00+00:00", "close_date": "2018-01-27 07:05:00+00:00", "trade_duration": 40, "open_rate": 0.09449985, "close_rate": 0.0949735334586466, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.058202737887944, "profit_abs": 0.0}, {"pair": "ZEC/BTC", "profit_percent": -0.04815133, "open_date": "2018-01-27 09:40:00+00:00", "close_date": "2018-01-30 04:40:00+00:00", "trade_duration": 4020, "open_rate": 0.0410697, "close_rate": 0.03928809, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 2.4348850855983852, "profit_abs": -0.004827170578309559}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 11:45:00+00:00", "close_date": "2018-01-27 12:30:00+00:00", "trade_duration": 45, "open_rate": 0.0285, "close_rate": 0.02864285714285714, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.5087719298245617, "profit_abs": 0.0}, {"pair": "XMR/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 12:35:00+00:00", "close_date": "2018-01-27 15:25:00+00:00", "trade_duration": 170, "open_rate": 0.02866372, "close_rate": 0.02880739779448621, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 3.4887307020861216, "profit_abs": -1.3877787807814457e-17}, {"pair": "ETH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 15:50:00+00:00", "close_date": "2018-01-27 16:50:00+00:00", "trade_duration": 60, "open_rate": 0.095381, "close_rate": 0.09585910025062656, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.0484268355332824, "profit_abs": 1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 17:05:00+00:00", "close_date": "2018-01-27 17:45:00+00:00", "trade_duration": 40, "open_rate": 0.06759092, "close_rate": 0.06792972160401002, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4794886650455417, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": -0.0, "open_date": "2018-01-27 23:40:00+00:00", "close_date": "2018-01-28 01:05:00+00:00", "trade_duration": 85, "open_rate": 0.00258501, "close_rate": 0.002597967443609022, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 38.684569885609726, "profit_abs": -1.3877787807814457e-17}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 02:25:00+00:00", "close_date": "2018-01-28 08:10:00+00:00", "trade_duration": 345, "open_rate": 0.06698502, "close_rate": 0.0673207845112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4928710926711672, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-28 10:25:00+00:00", "close_date": "2018-01-28 16:30:00+00:00", "trade_duration": 365, "open_rate": 0.0677177, "close_rate": 0.06805713709273183, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4767187899175547, "profit_abs": -1.3877787807814457e-17}, {"pair": "XLM/BTC", "profit_percent": 0.0, "open_date": "2018-01-28 20:35:00+00:00", "close_date": "2018-01-28 21:35:00+00:00", "trade_duration": 60, "open_rate": 5.215e-05, "close_rate": 5.2411403508771925e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1917.5455417066157, "profit_abs": 0.0}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-28 22:00:00+00:00", "close_date": "2018-01-28 22:30:00+00:00", "trade_duration": 30, "open_rate": 0.00273809, "close_rate": 0.002779264285714285, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.5218089982433, "profit_abs": 0.0010000000000000009}, {"pair": "ETC/BTC", "profit_percent": 0.00997506, "open_date": "2018-01-29 00:00:00+00:00", "close_date": "2018-01-29 00:30:00+00:00", "trade_duration": 30, "open_rate": 0.00274632, "close_rate": 0.002787618045112782, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 36.412362725392526, "profit_abs": 0.0010000000000000148}, {"pair": "LTC/BTC", "profit_percent": 0.0, "open_date": "2018-01-29 02:15:00+00:00", "close_date": "2018-01-29 03:00:00+00:00", "trade_duration": 45, "open_rate": 0.01622478, "close_rate": 0.016306107218045113, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 6.163411768911504, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 03:05:00+00:00", "close_date": "2018-01-29 03:45:00+00:00", "trade_duration": 40, "open_rate": 0.069, "close_rate": 0.06934586466165413, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4492753623188406, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 05:20:00+00:00", "close_date": "2018-01-29 06:55:00+00:00", "trade_duration": 95, "open_rate": 8.755e-05, "close_rate": 8.798884711779448e-05, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1142.204454597373, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 07:00:00+00:00", "close_date": "2018-01-29 19:25:00+00:00", "trade_duration": 745, "open_rate": 0.06825763, "close_rate": 0.06859977350877192, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4650376815016872, "profit_abs": 0.0}, {"pair": "DASH/BTC", "profit_percent": -0.0, "open_date": "2018-01-29 19:45:00+00:00", "close_date": "2018-01-29 20:25:00+00:00", "trade_duration": 40, "open_rate": 0.06713892, "close_rate": 0.06747545593984962, "open_at_end": false, "sell_reason": "roi", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1.4894490408841845, "profit_abs": -1.3877787807814457e-17}, {"pair": "TRX/BTC", "profit_percent": -0.0199116, "open_date": "2018-01-29 23:30:00+00:00", "close_date": "2018-01-30 04:45:00+00:00", "trade_duration": 315, "open_rate": 8.934e-05, "close_rate": 8.8e-05, "open_at_end": true, "sell_reason": "force_sell", "open_fee": 0.0025, "close_fee": 0.0025, "amount": 1119.3194537721067, "profit_abs": -0.0019961383478844796}], "results_per_pair": [{"key": "TRX/BTC", "trades": 15, "profit_mean": 0.0023467073333333323, "profit_mean_pct": 0.23467073333333321, "profit_sum": 0.035200609999999986, "profit_sum_pct": 3.5200609999999988, "profit_total_abs": 0.0035288616521155086, "profit_total_pct": 1.1733536666666662, "duration_avg": "2:28:00", "wins": 9, "draws": 2, "losses": 4}, {"key": "ADA/BTC", "trades": 29, "profit_mean": -0.0011598141379310352, "profit_mean_pct": -0.11598141379310352, "profit_sum": -0.03363461000000002, "profit_sum_pct": -3.3634610000000023, "profit_total_abs": -0.0033718682505400333, "profit_total_pct": -1.1211536666666675, "duration_avg": "5:35:00", "wins": 9, "draws": 11, "losses": 9}, {"key": "XLM/BTC", "trades": 21, "profit_mean": 0.0026243899999999994, "profit_mean_pct": 0.2624389999999999, "profit_sum": 0.05511218999999999, "profit_sum_pct": 5.511218999999999, "profit_total_abs": 0.005525000000000002, "profit_total_pct": 1.8370729999999995, "duration_avg": "3:21:00", "wins": 12, "draws": 3, "losses": 6}, {"key": "ETH/BTC", "trades": 21, "profit_mean": 0.0009500057142857142, "profit_mean_pct": 0.09500057142857142, "profit_sum": 0.01995012, "profit_sum_pct": 1.9950119999999998, "profit_total_abs": 0.0019999999999999463, "profit_total_pct": 0.6650039999999999, "duration_avg": "2:17:00", "wins": 5, "draws": 10, "losses": 6}, {"key": "XMR/BTC", "trades": 16, "profit_mean": -0.0027899012500000007, "profit_mean_pct": -0.2789901250000001, "profit_sum": -0.04463842000000001, "profit_sum_pct": -4.463842000000001, "profit_total_abs": -0.0044750000000000345, "profit_total_pct": -1.4879473333333337, "duration_avg": "8:41:00", "wins": 6, "draws": 5, "losses": 5}, {"key": "ZEC/BTC", "trades": 21, "profit_mean": -0.00039290904761904774, "profit_mean_pct": -0.03929090476190478, "profit_sum": -0.008251090000000003, "profit_sum_pct": -0.8251090000000003, "profit_total_abs": -0.000827170578309569, "profit_total_pct": -0.27503633333333344, "duration_avg": "4:17:00", "wins": 8, "draws": 7, "losses": 6}, {"key": "NXT/BTC", "trades": 12, "profit_mean": -0.0012261025000000006, "profit_mean_pct": -0.12261025000000006, "profit_sum": -0.014713230000000008, "profit_sum_pct": -1.4713230000000008, "profit_total_abs": -0.0014750000000000874, "profit_total_pct": -0.4904410000000003, "duration_avg": "0:57:00", "wins": 4, "draws": 3, "losses": 5}, {"key": "LTC/BTC", "trades": 8, "profit_mean": 0.00748129625, "profit_mean_pct": 0.748129625, "profit_sum": 0.05985037, "profit_sum_pct": 5.985037, "profit_total_abs": 0.006000000000000019, "profit_total_pct": 1.9950123333333334, "duration_avg": "1:59:00", "wins": 5, "draws": 2, "losses": 1}, {"key": "ETC/BTC", "trades": 20, "profit_mean": 0.0022568569999999997, "profit_mean_pct": 0.22568569999999996, "profit_sum": 0.04513713999999999, "profit_sum_pct": 4.513713999999999, "profit_total_abs": 0.004525000000000001, "profit_total_pct": 1.504571333333333, "duration_avg": "1:45:00", "wins": 11, "draws": 4, "losses": 5}, {"key": "DASH/BTC", "trades": 16, "profit_mean": 0.0018703237499999997, "profit_mean_pct": 0.18703237499999997, "profit_sum": 0.029925179999999996, "profit_sum_pct": 2.9925179999999996, "profit_total_abs": 0.002999999999999961, "profit_total_pct": 0.9975059999999999, "duration_avg": "3:03:00", "wins": 4, "draws": 7, "losses": 5}, {"key": "TOTAL", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}], "sell_reason_summary": [{"sell_reason": "roi", "trades": 170, "wins": 73, "draws": 54, "losses": 43, "profit_mean": 0.005398268352941177, "profit_mean_pct": 0.54, "profit_sum": 0.91770562, "profit_sum_pct": 91.77, "profit_total_abs": 0.09199999999999964, "profit_pct_total": 30.59}, {"sell_reason": "stop_loss", "trades": 6, "wins": 0, "draws": 0, "losses": 6, "profit_mean": -0.10448878000000002, "profit_mean_pct": -10.45, "profit_sum": -0.6269326800000001, "profit_sum_pct": -62.69, "profit_total_abs": -0.06284999999999992, "profit_pct_total": -20.9}, {"sell_reason": "force_sell", "trades": 3, "wins": 0, "draws": 0, "losses": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.89, "profit_sum": -0.14683468, "profit_sum_pct": -14.68, "profit_total_abs": -0.014720177176734003, "profit_pct_total": -4.89}], "left_open_trades": [{"key": "TRX/BTC", "trades": 1, "profit_mean": -0.0199116, "profit_mean_pct": -1.9911600000000003, "profit_sum": -0.0199116, "profit_sum_pct": -1.9911600000000003, "profit_total_abs": -0.0019961383478844796, "profit_total_pct": -0.6637200000000001, "duration_avg": "5:15:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ADA/BTC", "trades": 1, "profit_mean": -0.07877175, "profit_mean_pct": -7.877175, "profit_sum": -0.07877175, "profit_sum_pct": -7.877175, "profit_total_abs": -0.007896868250539965, "profit_total_pct": -2.625725, "duration_avg": "3 days, 4:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "ZEC/BTC", "trades": 1, "profit_mean": -0.04815133, "profit_mean_pct": -4.815133, "profit_sum": -0.04815133, "profit_sum_pct": -4.815133, "profit_total_abs": -0.004827170578309559, "profit_total_pct": -1.6050443333333335, "duration_avg": "2 days, 19:00:00", "wins": 0, "draws": 0, "losses": 1}, {"key": "TOTAL", "trades": 3, "profit_mean": -0.04894489333333333, "profit_mean_pct": -4.894489333333333, "profit_sum": -0.14683468, "profit_sum_pct": -14.683468, "profit_total_abs": -0.014720177176734003, "profit_total_pct": -4.8944893333333335, "duration_avg": "2 days, 1:25:00", "wins": 0, "draws": 0, "losses": 3}], "total_trades": 179, "backtest_start": "2018-01-30 04:45:00+00:00", "backtest_start_ts": 1517287500, "backtest_end": "2018-01-30 04:45:00+00:00", "backtest_end_ts": 1517287500, "backtest_days": 0, "trades_per_day": null, "market_change": 0.25, "stake_amount": 0.1, "max_drawdown": 0.21142322000000008, "drawdown_start": "2018-01-24 14:25:00+00:00", "drawdown_start_ts": 1516803900.0, "drawdown_end": "2018-01-30 04:45:00+00:00", "drawdown_end_ts": 1517287500.0, "pairlist": ["TRX/BTC", "ADA/BTC", "XLM/BTC", "ETH/BTC", "XMR/BTC", "ZEC/BTC","NXT/BTC", "LTC/BTC", "ETC/BTC", "DASH/BTC"]}}, "strategy_comparison": [{"key": "DefaultStrategy", "trades": 179, "profit_mean": 0.0008041243575418989, "profit_mean_pct": 0.0804124357541899, "profit_sum": 0.1439382599999999, "profit_sum_pct": 14.39382599999999, "profit_total_abs": 0.014429822823265714, "profit_total_pct": 4.797941999999996, "duration_avg": "3:40:00", "wins": 73, "draws": 54, "losses": 52}]} From 2ed808da1f4f45342a0a8fd41b158fb7b0e26b0d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 09:27:19 +0200 Subject: [PATCH 2733/3421] Extract .last_result.json to constant --- freqtrade/constants.py | 2 ++ freqtrade/data/btanalysis.py | 5 +-- freqtrade/optimize/optimize_reports.py | 5 ++- tests/data/test_btanalysis.py | 3 +- tests/optimize/test_optimize_reports.py | 46 ++++++++++++------------- 5 files changed, 32 insertions(+), 29 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index ccb05a60f..1b414adb4 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -33,6 +33,8 @@ DEFAULT_DATAFRAME_COLUMNS = ['date', 'open', 'high', 'low', 'close', 'volume'] # it has wide consequences for stored trades files DEFAULT_TRADES_COLUMNS = ['timestamp', 'id', 'type', 'side', 'price', 'amount', 'cost'] +LAST_BT_RESULT_FN = '.last_result.json' + USERPATH_HYPEROPTS = 'hyperopts' USERPATH_STRATEGIES = 'strategies' USERPATH_NOTEBOOKS = 'notebooks' diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 17d3fed14..0ae1809f3 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -10,6 +10,7 @@ import pandas as pd from datetime import timezone from freqtrade import persistence +from freqtrade.constants import LAST_BT_RESULT_FN from freqtrade.misc import json_load from freqtrade.persistence import Trade @@ -34,7 +35,7 @@ def get_latest_backtest_filename(directory: Union[Path, str]) -> str: directory = Path(directory) if not directory.is_dir(): raise ValueError(f"Directory '{directory}' does not exist.") - filename = directory / '.last_result.json' + filename = directory / LAST_BT_RESULT_FN if not filename.is_file(): raise ValueError(f"Directory '{directory}' does not seem to contain backtest statistics yet.") @@ -43,7 +44,7 @@ def get_latest_backtest_filename(directory: Union[Path, str]) -> str: data = json_load(file) if 'latest_backtest' not in data: - raise ValueError("Invalid '.last_result.json' format.") + raise ValueError(f"Invalid '{LAST_BT_RESULT_FN}' format.") return data['latest_backtest'] diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index b93e60dca..d1c45bd94 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -7,7 +7,7 @@ from arrow import Arrow from pandas import DataFrame from tabulate import tabulate -from freqtrade.constants import DATETIME_PRINT_FORMAT +from freqtrade.constants import DATETIME_PRINT_FORMAT, LAST_BT_RESULT_FN from freqtrade.data.btanalysis import calculate_max_drawdown, calculate_market_change from freqtrade.misc import file_dump_json @@ -21,8 +21,7 @@ def store_backtest_stats(recordfilename: Path, stats: Dict[str, DataFrame]) -> N ).with_suffix(recordfilename.suffix) file_dump_json(filename, stats) - latest_filename = Path.joinpath(recordfilename.parent, - '.last_result.json') + latest_filename = Path.joinpath(recordfilename.parent, LAST_BT_RESULT_FN) file_dump_json(latest_filename, {'latest_backtest': str(filename.name)}) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 63fe26eaa..144dc5162 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -6,6 +6,7 @@ from arrow import Arrow from pandas import DataFrame, DateOffset, Timestamp, to_datetime from freqtrade.configuration import TimeRange +from freqtrade.constants import LAST_BT_RESULT_FN from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, analyze_trade_parallelism, calculate_market_change, @@ -73,7 +74,7 @@ def test_load_backtest_data_new_format(testdatadir): load_backtest_data(str("filename") + "nofile") with pytest.raises(ValueError, match=r"Unknown dataformat."): - load_backtest_data(testdatadir / '.last_result.json') + load_backtest_data(testdatadir / LAST_BT_RESULT_FN) def test_load_backtest_data_multi(testdatadir): diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index f908677d7..2431fa716 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -1,15 +1,15 @@ -from datetime import datetime +import re from pathlib import Path import pandas as pd -import re import pytest from arrow import Arrow from freqtrade.configuration import TimeRange +from freqtrade.constants import LAST_BT_RESULT_FN from freqtrade.data import history -from freqtrade.edge import PairInfo from freqtrade.data.btanalysis import get_latest_backtest_filename +from freqtrade.edge import PairInfo from freqtrade.optimize.optimize_reports import (generate_backtest_stats, generate_edge_table, generate_pair_metrics, @@ -93,25 +93,25 @@ def test_generate_backtest_stats(default_conf, testdatadir): # Above sample had no loosing trade assert strat_stats['max_drawdown'] == 0.0 - results = {'DefStrat': pd.DataFrame({"pair": ["UNITTEST/BTC", "UNITTEST/BTC", - "UNITTEST/BTC", "UNITTEST/BTC"], - "profit_percent": [0.003312, 0.010801, -0.013803, 0.002780], - "profit_abs": [0.000003, 0.000011, -0.000014, 0.000003], - "open_date": [Arrow(2017, 11, 14, 19, 32, 00).datetime, - Arrow(2017, 11, 14, 21, 36, 00).datetime, - Arrow(2017, 11, 14, 22, 12, 00).datetime, - Arrow(2017, 11, 14, 22, 44, 00).datetime], - "close_date": [Arrow(2017, 11, 14, 21, 35, 00).datetime, - Arrow(2017, 11, 14, 22, 10, 00).datetime, - Arrow(2017, 11, 14, 22, 43, 00).datetime, - Arrow(2017, 11, 14, 22, 58, 00).datetime], - "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], - "close_rate": [0.002546, 0.003014, 0.0032903, 0.003217], - "trade_duration": [123, 34, 31, 14], - "open_at_end": [False, False, False, True], - "sell_reason": [SellType.ROI, SellType.STOP_LOSS, - SellType.ROI, SellType.FORCE_SELL] - })} + results = {'DefStrat': pd.DataFrame( + {"pair": ["UNITTEST/BTC", "UNITTEST/BTC", "UNITTEST/BTC", "UNITTEST/BTC"], + "profit_percent": [0.003312, 0.010801, -0.013803, 0.002780], + "profit_abs": [0.000003, 0.000011, -0.000014, 0.000003], + "open_date": [Arrow(2017, 11, 14, 19, 32, 00).datetime, + Arrow(2017, 11, 14, 21, 36, 00).datetime, + Arrow(2017, 11, 14, 22, 12, 00).datetime, + Arrow(2017, 11, 14, 22, 44, 00).datetime], + "close_date": [Arrow(2017, 11, 14, 21, 35, 00).datetime, + Arrow(2017, 11, 14, 22, 10, 00).datetime, + Arrow(2017, 11, 14, 22, 43, 00).datetime, + Arrow(2017, 11, 14, 22, 58, 00).datetime], + "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], + "close_rate": [0.002546, 0.003014, 0.0032903, 0.003217], + "trade_duration": [123, 34, 31, 14], + "open_at_end": [False, False, False, True], + "sell_reason": [SellType.ROI, SellType.STOP_LOSS, + SellType.ROI, SellType.FORCE_SELL] + })} assert strat_stats['max_drawdown'] == 0.0 assert strat_stats['drawdown_start'] == Arrow.fromtimestamp(0).datetime @@ -122,7 +122,7 @@ def test_generate_backtest_stats(default_conf, testdatadir): # Test storing stats filename = Path(testdatadir / 'btresult.json') - filename_last = Path(testdatadir / '.last_result.json') + filename_last = Path(testdatadir / LAST_BT_RESULT_FN) _backup_file(filename_last, copy_file=True) assert not filename.is_file() From 7c5587aeaafb0948e507d34cac6914a89b09af0e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 09:45:23 +0200 Subject: [PATCH 2734/3421] exportfilename can be a file or directory --- freqtrade/configuration/configuration.py | 2 +- freqtrade/data/btanalysis.py | 7 +++++-- freqtrade/optimize/optimize_reports.py | 13 +++++++++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 139e42084..bbd6ce747 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -199,7 +199,7 @@ class Configuration: config['exportfilename'] = Path(config['exportfilename']) else: config['exportfilename'] = (config['user_data_dir'] - / 'backtest_results/backtest-result.json') + / 'backtest_results') def _process_optimize_options(self, config: Dict[str, Any]) -> None: diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 0ae1809f3..07834d729 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -38,7 +38,8 @@ def get_latest_backtest_filename(directory: Union[Path, str]) -> str: filename = directory / LAST_BT_RESULT_FN if not filename.is_file(): - raise ValueError(f"Directory '{directory}' does not seem to contain backtest statistics yet.") + raise ValueError( + f"Directory '{directory}' does not seem to contain backtest statistics yet.") with filename.open() as file: data = json_load(file) @@ -57,9 +58,11 @@ def load_backtest_stats(filename: Union[Path, str]) -> Dict[str, Any]: """ if isinstance(filename, str): filename = Path(filename) + if filename.is_dir(): + filename = get_latest_backtest_filename(filename) if not filename.is_file(): raise ValueError(f"File {filename} does not exist.") - + logger.info(f"Loading backtest result from {filename}") with filename.open() as file: data = json_load(file) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index d1c45bd94..d0e29d98f 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -16,12 +16,17 @@ logger = logging.getLogger(__name__) def store_backtest_stats(recordfilename: Path, stats: Dict[str, DataFrame]) -> None: - filename = Path.joinpath(recordfilename.parent, - f'{recordfilename.stem}-{datetime.now().isoformat()}' - ).with_suffix(recordfilename.suffix) + if recordfilename.is_dir(): + filename = recordfilename / \ + f'backtest-result-{datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}.json' + else: + filename = Path.joinpath( + recordfilename.parent, + f'{recordfilename.stem}-{datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}' + ).with_suffix(recordfilename.suffix) file_dump_json(filename, stats) - latest_filename = Path.joinpath(recordfilename.parent, LAST_BT_RESULT_FN) + latest_filename = Path.joinpath(filename.parent, LAST_BT_RESULT_FN) file_dump_json(latest_filename, {'latest_backtest': str(filename.name)}) From d999fa2a7e82b3e1fb1c9e0da9b726379f1dc52d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 09:51:49 +0200 Subject: [PATCH 2735/3421] Test autogetting result filename --- freqtrade/data/btanalysis.py | 2 +- tests/data/test_btanalysis.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 07834d729..6931b1685 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -59,7 +59,7 @@ def load_backtest_stats(filename: Union[Path, str]) -> Dict[str, Any]: if isinstance(filename, str): filename = Path(filename) if filename.is_dir(): - filename = get_latest_backtest_filename(filename) + filename = filename / get_latest_backtest_filename(filename) if not filename.is_file(): raise ValueError(f"File {filename} does not exist.") logger.info(f"Loading backtest result from {filename}") diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 144dc5162..5e44b7d87 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -70,6 +70,10 @@ def test_load_backtest_data_new_format(testdatadir): bt_data2 = load_backtest_data(str(filename)) assert bt_data.equals(bt_data2) + # Test loading from folder (must yield same result) + bt_data3 = load_backtest_data(testdatadir) + assert bt_data.equals(bt_data3) + with pytest.raises(ValueError, match=r"File .* does not exist\."): load_backtest_data(str("filename") + "nofile") From 16a842f9f60f1c916d77a243e2f2e169dc0611fc Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 28 Jun 2020 10:17:08 +0200 Subject: [PATCH 2736/3421] Have plotting support folder-based exportfilename --- freqtrade/plot/plotting.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index eee338a42..16afaec3b 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -8,7 +8,9 @@ from freqtrade.configuration import TimeRange from freqtrade.data.btanalysis import (calculate_max_drawdown, combine_dataframes_with_mean, create_cum_profit, - extract_trades_of_period, load_trades) + extract_trades_of_period, + get_latest_backtest_filename, + load_trades) from freqtrade.data.converter import trim_dataframe from freqtrade.data.history import load_data from freqtrade.exceptions import OperationalException @@ -51,16 +53,18 @@ def init_plotscript(config): ) no_trades = False + filename = config.get('exportfilename') if config.get('no_trades', False): no_trades = True - elif not config['exportfilename'].is_file() and config['trade_source'] == 'file': - logger.warning("Backtest file is missing skipping trades.") - no_trades = True + elif config['trade_source'] == 'file': + if not filename.is_dir() and not filename.is_file(): + logger.warning("Backtest file is missing skipping trades.") + no_trades = True trades = load_trades( config['trade_source'], db_url=config.get('db_url'), - exportfilename=config.get('exportfilename'), + exportfilename=filename, no_trades=no_trades ) trades = trim_dataframe(trades, timerange, 'open_date') From 619eb183fe2454bce969760129385e142946ec4e Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jul 2020 06:58:06 +0200 Subject: [PATCH 2737/3421] Allow strategy for plot-profit to allow loading of multi-backtest files --- docs/plotting.md | 8 +++++++- freqtrade/commands/arguments.py | 2 +- freqtrade/plot/plotting.py | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/plotting.md b/docs/plotting.md index d3a2df1c1..7de5626b2 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -224,7 +224,8 @@ Possible options for the `freqtrade plot-profit` subcommand: ``` usage: freqtrade plot-profit [-h] [-v] [--logfile FILE] [-V] [-c PATH] - [-d PATH] [--userdir PATH] [-p PAIRS [PAIRS ...]] + [-d PATH] [--userdir PATH] [-s NAME] + [--strategy-path PATH] [-p PAIRS [PAIRS ...]] [--timerange TIMERANGE] [--export EXPORT] [--export-filename PATH] [--db-url PATH] [--trade-source {DB,file}] [-i TIMEFRAME] @@ -270,6 +271,11 @@ Common arguments: --userdir PATH, --user-data-dir PATH Path to userdata directory. +Strategy arguments: + -s NAME, --strategy NAME + Specify strategy class name which will be used by the + bot. + --strategy-path PATH Specify additional strategy lookup path. ``` The `-p/--pairs` argument, can be used to limit the pairs that are considered for this calculation. diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 72f2a02f0..6114fc589 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -354,7 +354,7 @@ class Arguments: plot_profit_cmd = subparsers.add_parser( 'plot-profit', help='Generate plot showing profits.', - parents=[_common_parser], + parents=[_common_parser, _strategy_parser], ) plot_profit_cmd.set_defaults(func=start_plot_profit) self._build_args(optionlist=ARGS_PLOT_PROFIT, parser=plot_profit_cmd) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 16afaec3b..b11f093d9 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -9,7 +9,6 @@ from freqtrade.data.btanalysis import (calculate_max_drawdown, combine_dataframes_with_mean, create_cum_profit, extract_trades_of_period, - get_latest_backtest_filename, load_trades) from freqtrade.data.converter import trim_dataframe from freqtrade.data.history import load_data @@ -65,7 +64,8 @@ def init_plotscript(config): config['trade_source'], db_url=config.get('db_url'), exportfilename=filename, - no_trades=no_trades + no_trades=no_trades, + strategy=config.get("strategy"), ) trades = trim_dataframe(trades, timerange, 'open_date') From d56f9655e2b019cf95af75c613257b9049661944 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jul 2020 07:20:43 +0200 Subject: [PATCH 2738/3421] Update notebook with new statistics example --- docs/plotting.md | 2 +- docs/strategy_analysis_example.md | 44 +++++++++++++++-- freqtrade/data/btanalysis.py | 2 +- .../templates/strategy_analysis_example.ipynb | 47 +++++++++++++++++-- 4 files changed, 85 insertions(+), 10 deletions(-) diff --git a/docs/plotting.md b/docs/plotting.md index 7de5626b2..09eb6ddb5 100644 --- a/docs/plotting.md +++ b/docs/plotting.md @@ -285,7 +285,7 @@ Examples: Use custom backtest-export file ``` bash -freqtrade plot-profit -p LTC/BTC --export-filename user_data/backtest_results/backtest-result-Strategy005.json +freqtrade plot-profit -p LTC/BTC --export-filename user_data/backtest_results/backtest-result.json ``` Use custom database diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index 6b4ad567f..8915ebe37 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -18,7 +18,7 @@ config = Configuration.from_files([]) # config = Configuration.from_files(["config.json"]) # Define some constants -config["timeframe"] = "5m" +config["ticker_interval"] = "5m" # Name of the strategy class config["strategy"] = "SampleStrategy" # Location of the data @@ -33,7 +33,7 @@ pair = "BTC_USDT" from freqtrade.data.history import load_pair_history candles = load_pair_history(datadir=data_location, - timeframe=config["timeframe"], + timeframe=config["ticker_interval"], pair=pair) # Confirm success @@ -85,10 +85,44 @@ Analyze a trades dataframe (also used below for plotting) ```python -from freqtrade.data.btanalysis import load_backtest_data +from freqtrade.data.btanalysis import load_backtest_data, load_backtest_stats -# Load backtest results -trades = load_backtest_data(config["user_data_dir"] / "backtest_results/backtest-result.json") +# if backtest_dir points to a directory, it'll automatically load the last backtest file. +backtest_dir = config["user_data_dir"] / "backtest_results" +# backtest_dir can also point to a specific file +# backtest_dir = config["user_data_dir"] / "backtest_results/backtest-result-2020-07-01_20-04-22.json" +``` + + +```python +# You can get the full backtest statistics by using the following command. +# This contains all information used to generate the backtest result. +stats = load_backtest_stats(backtest_dir) + +strategy = 'SampleStrategy' +# All statistics are available per strategy, so if `--strategy-list` was used during backtest, this will be reflected here as well. +# Example usages: +print(stats['strategy'][strategy]['results_per_pair']) +# Get pairlist used for this backtest +print(stats['strategy'][strategy]['pairlist']) +# Get market change (average change of all pairs from start to end of the backtest period) +print(stats['strategy'][strategy]['market_change']) +# Maximum drawdown () +print(stats['strategy'][strategy]['max_drawdown']) +# Maximum drawdown start and end +print(stats['strategy'][strategy]['drawdown_start']) +print(stats['strategy'][strategy]['drawdown_end']) + + +# Get strategy comparison (only relevant if multiple strategies were compared) +print(stats['strategy_comparison']) + +``` + + +```python +# Load backtested trades as dataframe +trades = load_backtest_data(backtest_dir) # Show value-counts per pair trades.groupby("pair")["sell_reason"].value_counts() diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 6931b1685..cf6e18e64 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -72,7 +72,7 @@ def load_backtest_stats(filename: Union[Path, str]) -> Dict[str, Any]: def load_backtest_data(filename: Union[Path, str], strategy: Optional[str] = None) -> pd.DataFrame: """ Load backtest data file. - :param filename: pathlib.Path object, or string pointing to the file. + :param filename: pathlib.Path object, or string pointing to a file or directory :param strategy: Strategy to load - mainly relevant for multi-strategy backtests Can also serve as protection to load the correct result. :return: a dataframe with the analysis results diff --git a/freqtrade/templates/strategy_analysis_example.ipynb b/freqtrade/templates/strategy_analysis_example.ipynb index dffa308ce..31a5b536a 100644 --- a/freqtrade/templates/strategy_analysis_example.ipynb +++ b/freqtrade/templates/strategy_analysis_example.ipynb @@ -136,10 +136,51 @@ "metadata": {}, "outputs": [], "source": [ - "from freqtrade.data.btanalysis import load_backtest_data\n", + "from freqtrade.data.btanalysis import load_backtest_data, load_backtest_stats\n", "\n", - "# Load backtest results\n", - "trades = load_backtest_data(config[\"user_data_dir\"] / \"backtest_results/backtest-result.json\")\n", + "# if backtest_dir points to a directory, it'll automatically load the last backtest file.\n", + "backtest_dir = config[\"user_data_dir\"] / \"backtest_results\"\n", + "# backtest_dir can also point to a specific file \n", + "# backtest_dir = config[\"user_data_dir\"] / \"backtest_results/backtest-result-2020-07-01_20-04-22.json\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# You can get the full backtest statistics by using the following command.\n", + "# This contains all information used to generate the backtest result.\n", + "stats = load_backtest_stats(backtest_dir)\n", + "\n", + "strategy = 'SampleStrategy'\n", + "# All statistics are available per strategy, so if `--strategy-list` was used during backtest, this will be reflected here as well.\n", + "# Example usages:\n", + "print(stats['strategy'][strategy]['results_per_pair'])\n", + "# Get pairlist used for this backtest\n", + "print(stats['strategy'][strategy]['pairlist'])\n", + "# Get market change (average change of all pairs from start to end of the backtest period)\n", + "print(stats['strategy'][strategy]['market_change'])\n", + "# Maximum drawdown ()\n", + "print(stats['strategy'][strategy]['max_drawdown'])\n", + "# Maximum drawdown start and end\n", + "print(stats['strategy'][strategy]['drawdown_start'])\n", + "print(stats['strategy'][strategy]['drawdown_end'])\n", + "\n", + "\n", + "# Get strategy comparison (only relevant if multiple strategies were compared)\n", + "print(stats['strategy_comparison'])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load backtested trades as dataframe\n", + "trades = load_backtest_data(backtest_dir)\n", "\n", "# Show value-counts per pair\n", "trades.groupby(\"pair\")[\"sell_reason\"].value_counts()" From 804c42933d5d1eb58e102dbbcb66e55f801b0bc8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jul 2020 08:02:27 +0200 Subject: [PATCH 2739/3421] Document summary-statistics --- docs/backtesting.md | 69 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 62 insertions(+), 7 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index ecd48bdc9..52506215d 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -157,17 +157,28 @@ A backtesting result will look like that: | ADA/BTC | 1 | 0.89 | 0.89 | 0.00004434 | 0.44 | 6:00:00 | 1 | 0 | 0 | | LTC/BTC | 1 | 0.68 | 0.68 | 0.00003421 | 0.34 | 2:00:00 | 1 | 0 | 0 | | TOTAL | 2 | 0.78 | 1.57 | 0.00007855 | 0.78 | 4:00:00 | 2 | 0 | 0 | +============ SUMMARY METRICS ============= +| Metric | Value | +|------------------+---------------------| +| Total trades | 429 | +| First trade | 2019-01-01 18:30:00 | +| First trade Pair | EOS/USDT | +| Backtesting from | 2019-01-01 00:00:00 | +| Backtesting to | 2019-05-01 00:00:00 | +| Trades per day | 3.575 | +| | | +| Max Drawdown | 50.63% | +| Drawdown Start | 2019-02-15 14:10:00 | +| Drawdown End | 2019-04-11 18:15:00 | +| Market change | -5.88% | +========================================== + ``` +### Backtesting report table + The 1st table contains all trades the bot made, including "left open trades". -The 2nd table contains a recap of sell reasons. -This table can tell you which area needs some additional work (i.e. all `sell_signal` trades are losses, so we should disable the sell-signal or work on improving that). - -The 3rd table contains all trades the bot had to `forcesell` at the end of the backtest period to present a full picture. -This is necessary to simulate realistic behaviour, since the backtest period has to end at some point, while realistically, you could leave the bot running forever. -These trades are also included in the first table, but are extracted separately for clarity. - The last line will give you the overall performance of your strategy, here: @@ -196,6 +207,50 @@ On the other hand, if you set a too high `minimal_roi` like `"0": 0.55` (55%), there is almost no chance that the bot will ever reach this profit. Hence, keep in mind that your performance is an integral mix of all different elements of the strategy, your configuration, and the crypto-currency pairs you have set up. +### Sell reasons table + +The 2nd table contains a recap of sell reasons. +This table can tell you which area needs some additional work (i.e. all `sell_signal` trades are losses, so we should disable the sell-signal or work on improving that). + +### Left open trades table + +The 3rd table contains all trades the bot had to `forcesell` at the end of the backtest period to present a full picture. +This is necessary to simulate realistic behaviour, since the backtest period has to end at some point, while realistically, you could leave the bot running forever. +These trades are also included in the first table, but are extracted separately for clarity. + +### Summary metrics + +The last element of the backtest report is the summary metrics table. +It contains some useful key metrics about your strategy. + +``` +============ SUMMARY METRICS ============= +| Metric | Value | +|------------------+---------------------| +| Total trades | 429 | +| First trade | 2019-01-01 18:30:00 | +| First trade Pair | EOS/USDT | +| Backtesting from | 2019-01-01 00:00:00 | +| Backtesting to | 2019-05-01 00:00:00 | +| Trades per day | 3.575 | +| | | +| Max Drawdown | 50.63% | +| Drawdown Start | 2019-02-15 14:10:00 | +| Drawdown End | 2019-04-11 18:15:00 | +| Market change | -5.88% | +========================================== + +``` + +- `Total trades`: Identical to the total trades of the backtest output table. +- `First trade`: First trade entered. +- `First trade pair`: Which pair was part of the first trade +- `Backtesting from` / `Backtesting to`: Backtesting range (usually defined as `--timerange from-to`) +- `Trades per day`: Total trades / Backtest duration (this will give you information about how many trades to expect from the strategy) +- `Max Drawdown`: Maximum drawown experienced. a value of 50% means that from highest to subsequent lowest point, a 50% drop was experiened). +- `Drawdown Start` / `Drawdown End`: From when to when was this large drawdown (can also be visualized via `plot-dataframe` subcommand) +- `Market change`: Change of the market during the backtest period. Calculated as average of all pairs changes from the first to the last candle using the "close" column. + ### Assumptions made by backtesting Since backtesting lacks some detailed information about what happens within a candle, it needs to take a few assumptions: From 42868ad24ac8812ec295867fd5f9728aaad9635a Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jul 2020 19:30:29 +0200 Subject: [PATCH 2740/3421] Add best / worst day to statistics --- docs/backtesting.md | 11 +++++++---- freqtrade/optimize/optimize_reports.py | 8 ++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 52506215d..6c01e1c62 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -233,6 +233,8 @@ It contains some useful key metrics about your strategy. | Backtesting from | 2019-01-01 00:00:00 | | Backtesting to | 2019-05-01 00:00:00 | | Trades per day | 3.575 | +| Best day | 25.27% | +| Worst day | -30.67% | | | | | Max Drawdown | 50.63% | | Drawdown Start | 2019-02-15 14:10:00 | @@ -244,11 +246,12 @@ It contains some useful key metrics about your strategy. - `Total trades`: Identical to the total trades of the backtest output table. - `First trade`: First trade entered. -- `First trade pair`: Which pair was part of the first trade -- `Backtesting from` / `Backtesting to`: Backtesting range (usually defined as `--timerange from-to`) -- `Trades per day`: Total trades / Backtest duration (this will give you information about how many trades to expect from the strategy) +- `First trade pair`: Which pair was part of the first trade. +- `Backtesting from` / `Backtesting to`: Backtesting range (usually defined as `--timerange from-to`). +- `Trades per day`: Total trades / Backtest duration (this will give you information about how many trades to expect from the strategy). +- `Best day` / `Worst day`: Best and worst day based on daily profit. - `Max Drawdown`: Maximum drawown experienced. a value of 50% means that from highest to subsequent lowest point, a 50% drop was experiened). -- `Drawdown Start` / `Drawdown End`: From when to when was this large drawdown (can also be visualized via `plot-dataframe` subcommand) +- `Drawdown Start` / `Drawdown End`: From when to when was this large drawdown (can also be visualized via `plot-dataframe` subcommand). - `Market change`: Change of the market during the backtest period. Calculated as average of all pairs changes from the first to the last candle using the "close" column. ### Assumptions made by backtesting diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index d0e29d98f..4f169c53a 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -239,6 +239,9 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], max_open_trades=max_open_trades, results=results.loc[results['open_at_end']], skip_nan=True) + daily_profit = results.resample('1d', on='close_date')['profit_percent'].sum() + worst = min(daily_profit) + best = max(daily_profit) backtest_days = (max_date - min_date).days strat_stats = { @@ -252,6 +255,9 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'backtest_end': max_date.datetime, 'backtest_end_ts': max_date.timestamp, 'backtest_days': backtest_days, + 'backtest_best_day': best, + 'backtest_worst_day': worst, + 'trades_per_day': round(len(results) / backtest_days, 2) if backtest_days > 0 else None, 'market_change': market_change, 'pairlist': list(btdata.keys()), @@ -366,6 +372,8 @@ def text_table_add_metrics(strat_results: Dict) -> str: ('Backtesting from', strat_results['backtest_start'].strftime(DATETIME_PRINT_FORMAT)), ('Backtesting to', strat_results['backtest_end'].strftime(DATETIME_PRINT_FORMAT)), ('Trades per day', strat_results['trades_per_day']), + ('Best day', f"{round(strat_results['backtest_best_day'] * 100, 2)}%"), + ('Worst day', f"{round(strat_results['backtest_worst_day'] * 100, 2)}%"), ('', ''), # Empty line to improve readability ('Max Drawdown', f"{round(strat_results['max_drawdown'] * 100, 2)}%"), ('Drawdown Start', strat_results['drawdown_start'].strftime(DATETIME_PRINT_FORMAT)), From 8e0ff4bd86effd9d44fb0d0fd82c10ce246c6141 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jul 2020 19:45:45 +0200 Subject: [PATCH 2741/3421] Add Win / draw / losing days --- freqtrade/optimize/optimize_reports.py | 28 ++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 4f169c53a..33157d50a 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -210,6 +210,23 @@ def generate_edge_table(results: dict) -> str: floatfmt=floatfmt, tablefmt="orgtbl", stralign="right") # type: ignore +def generate_daily_stats(results: DataFrame) -> Dict[str, Any]: + daily_profit = results.resample('1d', on='close_date')['profit_percent'].sum() + worst = min(daily_profit) + best = max(daily_profit) + winning_days = sum(daily_profit > 0) + draw_days = sum(daily_profit == 0) + losing_days = sum(daily_profit < 0) + + return { + 'backtest_best_day': best, + 'backtest_worst_day': worst, + 'winning_days': winning_days, + 'draw_days': draw_days, + 'losing_days': losing_days, + } + + def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], all_results: Dict[str, DataFrame], min_date: Arrow, max_date: Arrow @@ -239,9 +256,7 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], max_open_trades=max_open_trades, results=results.loc[results['open_at_end']], skip_nan=True) - daily_profit = results.resample('1d', on='close_date')['profit_percent'].sum() - worst = min(daily_profit) - best = max(daily_profit) + daily_stats = generate_daily_stats(results) backtest_days = (max_date - min_date).days strat_stats = { @@ -255,13 +270,12 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'backtest_end': max_date.datetime, 'backtest_end_ts': max_date.timestamp, 'backtest_days': backtest_days, - 'backtest_best_day': best, - 'backtest_worst_day': worst, 'trades_per_day': round(len(results) / backtest_days, 2) if backtest_days > 0 else None, 'market_change': market_change, 'pairlist': list(btdata.keys()), - 'stake_amount': config['stake_amount'] + 'stake_amount': config['stake_amount'], + **daily_stats, } result['strategy'][strategy] = strat_stats @@ -374,6 +388,8 @@ def text_table_add_metrics(strat_results: Dict) -> str: ('Trades per day', strat_results['trades_per_day']), ('Best day', f"{round(strat_results['backtest_best_day'] * 100, 2)}%"), ('Worst day', f"{round(strat_results['backtest_worst_day'] * 100, 2)}%"), + ('Days win/draw/lose', f"{strat_results['winning_days']} / " + f"{strat_results['draw_days']} / {strat_results['losing_days']}"), ('', ''), # Empty line to improve readability ('Max Drawdown', f"{round(strat_results['max_drawdown'] * 100, 2)}%"), ('Drawdown Start', strat_results['drawdown_start'].strftime(DATETIME_PRINT_FORMAT)), From 987188e41f15e5914686c2637f4ddee418af9be8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jul 2020 19:58:02 +0200 Subject: [PATCH 2742/3421] Add avgduration for winners and losers --- docs/backtesting.md | 40 ++++++++++++++------------ freqtrade/optimize/optimize_reports.py | 9 ++++++ 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 6c01e1c62..cb20c3e43 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -224,23 +224,26 @@ The last element of the backtest report is the summary metrics table. It contains some useful key metrics about your strategy. ``` -============ SUMMARY METRICS ============= -| Metric | Value | -|------------------+---------------------| -| Total trades | 429 | -| First trade | 2019-01-01 18:30:00 | -| First trade Pair | EOS/USDT | -| Backtesting from | 2019-01-01 00:00:00 | -| Backtesting to | 2019-05-01 00:00:00 | -| Trades per day | 3.575 | -| Best day | 25.27% | -| Worst day | -30.67% | -| | | -| Max Drawdown | 50.63% | -| Drawdown Start | 2019-02-15 14:10:00 | -| Drawdown End | 2019-04-11 18:15:00 | -| Market change | -5.88% | -========================================== +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| + +| Total trades | 429 | +| First trade | 2019-01-01 18:30:00 | +| First trade Pair | EOS/USDT | +| Backtesting from | 2019-01-01 00:00:00 | +| Backtesting to | 2019-05-01 00:00:00 | +| Trades per day | 3.575 | +| Best day | 25.27% | +| Worst day | -30.67% | +| Avg. Duration Winners | 4:23:00 | +| Avg. Duration Loser | 6:55:00 | +| | | +| Max Drawdown | 50.63% | +| Drawdown Start | 2019-02-15 14:10:00 | +| Drawdown End | 2019-04-11 18:15:00 | +| Market change | -5.88% | +=============================================== ``` @@ -250,10 +253,11 @@ It contains some useful key metrics about your strategy. - `Backtesting from` / `Backtesting to`: Backtesting range (usually defined as `--timerange from-to`). - `Trades per day`: Total trades / Backtest duration (this will give you information about how many trades to expect from the strategy). - `Best day` / `Worst day`: Best and worst day based on daily profit. +- `Avg. Duration Winners` / `Avg. Duration Loser`: Average durations for winning and losing trades. - `Max Drawdown`: Maximum drawown experienced. a value of 50% means that from highest to subsequent lowest point, a 50% drop was experiened). - `Drawdown Start` / `Drawdown End`: From when to when was this large drawdown (can also be visualized via `plot-dataframe` subcommand). - `Market change`: Change of the market during the backtest period. Calculated as average of all pairs changes from the first to the last candle using the "close" column. - + ### Assumptions made by backtesting Since backtesting lacks some detailed information about what happens within a candle, it needs to take a few assumptions: diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 33157d50a..f9b38caf0 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -218,12 +218,19 @@ def generate_daily_stats(results: DataFrame) -> Dict[str, Any]: draw_days = sum(daily_profit == 0) losing_days = sum(daily_profit < 0) + winning_trades = results.loc[results['profit_percent'] > 0] + losing_trades = results.loc[results['profit_percent'] < 0] + return { 'backtest_best_day': best, 'backtest_worst_day': worst, 'winning_days': winning_days, 'draw_days': draw_days, 'losing_days': losing_days, + 'winner_holding_avg': (timedelta(minutes=round(winning_trades['trade_duration'].mean())) + if not winning_trades.empty else '0:00'), + 'loser_holding_avg': (timedelta(minutes=round(losing_trades['trade_duration'].mean())) + if not losing_trades.empty else '0:00'), } @@ -390,6 +397,8 @@ def text_table_add_metrics(strat_results: Dict) -> str: ('Worst day', f"{round(strat_results['backtest_worst_day'] * 100, 2)}%"), ('Days win/draw/lose', f"{strat_results['winning_days']} / " f"{strat_results['draw_days']} / {strat_results['losing_days']}"), + ('Avg. Duration Winners', f"{strat_results['winner_holding_avg']}"), + ('Avg. Duration Loser', f"{strat_results['loser_holding_avg']}"), ('', ''), # Empty line to improve readability ('Max Drawdown', f"{round(strat_results['max_drawdown'] * 100, 2)}%"), ('Drawdown Start', strat_results['drawdown_start'].strftime(DATETIME_PRINT_FORMAT)), From 523437d9707e941c8ddd2e7a5585c97199300c80 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jul 2020 20:03:33 +0200 Subject: [PATCH 2743/3421] Add tst for daily stats --- tests/optimize/test_optimize_reports.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 2431fa716..6c1009e22 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -1,4 +1,5 @@ import re +from datetime import timedelta from pathlib import Path import pandas as pd @@ -8,9 +9,11 @@ from arrow import Arrow from freqtrade.configuration import TimeRange from freqtrade.constants import LAST_BT_RESULT_FN from freqtrade.data import history -from freqtrade.data.btanalysis import get_latest_backtest_filename +from freqtrade.data.btanalysis import (get_latest_backtest_filename, + load_backtest_data) from freqtrade.edge import PairInfo from freqtrade.optimize.optimize_reports import (generate_backtest_stats, + generate_daily_stats, generate_edge_table, generate_pair_metrics, generate_sell_reason_stats, @@ -170,6 +173,21 @@ def test_generate_pair_metrics(default_conf, mocker): pytest.approx(pair_results[-1]['profit_sum_pct']) == pair_results[-1]['profit_sum'] * 100) +def test_generate_daily_stats(testdatadir): + + filename = testdatadir / "backtest-result_new.json" + bt_data = load_backtest_data(filename) + res = generate_daily_stats(bt_data) + assert isinstance(res, dict) + assert round(res['backtest_best_day'], 4) == 0.1796 + assert round(res['backtest_worst_day'], 4) == -0.1468 + assert res['winning_days'] == 14 + assert res['draw_days'] == 4 + assert res['losing_days'] == 3 + assert res['winner_holding_avg'] == timedelta(seconds=1440) + assert res['loser_holding_avg'] == timedelta(days=1, seconds=21420) + + def test_text_table_sell_reason(default_conf): results = pd.DataFrame( From 0d15a87af8de45799677a221c7311390b7dbb7b3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jul 2020 20:15:20 +0200 Subject: [PATCH 2744/3421] Remove old store_backtest method --- freqtrade/optimize/backtesting.py | 2 - freqtrade/optimize/optimize_reports.py | 20 ------- tests/optimize/test_backtesting.py | 1 + tests/optimize/test_optimize_reports.py | 74 ------------------------- 4 files changed, 1 insertion(+), 96 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 18881f9db..3cd4f4fa2 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -21,7 +21,6 @@ from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds from freqtrade.optimize.optimize_reports import (generate_backtest_stats, show_backtest_results, - store_backtest_result, store_backtest_stats) from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.persistence import Trade @@ -421,7 +420,6 @@ class Backtesting: stats = generate_backtest_stats(self.config, data, all_results, min_date=min_date, max_date=max_date) if self.config.get('export', False): - store_backtest_result(self.config['exportfilename'], all_results) store_backtest_stats(self.config['exportfilename'], stats) # Show backtest results diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index f9b38caf0..67c8e3077 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -30,26 +30,6 @@ def store_backtest_stats(recordfilename: Path, stats: Dict[str, DataFrame]) -> N file_dump_json(latest_filename, {'latest_backtest': str(filename.name)}) -def store_backtest_result(recordfilename: Path, all_results: Dict[str, DataFrame]) -> None: - """ - Stores backtest results to file (one file per strategy) - :param recordfilename: Destination filename - :param all_results: Dict of Dataframes, one results dataframe per strategy - """ - for strategy, results in all_results.items(): - records = backtest_result_to_list(results) - - if records: - filename = recordfilename - if len(all_results) > 1: - # Inject strategy to filename - filename = Path.joinpath( - recordfilename.parent, - f'{recordfilename.stem}-{strategy}').with_suffix(recordfilename.suffix) - logger.info(f'Dumping backtest results to {filename}') - file_dump_json(filename, records) - - def backtest_result_to_list(results: DataFrame) -> List[List]: """ Converts a list of Backtest-results to list diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 2c855fbc0..04417848f 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -703,6 +703,7 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): generate_pair_metrics=MagicMock(), generate_sell_reason_stats=sell_reason_mock, generate_strategy_metrics=strat_summary, + generate_daily_stats=MagicMock(), ) patched_configuration_load_config_file(mocker, default_conf) diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 6c1009e22..2fab4578c 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -18,13 +18,11 @@ from freqtrade.optimize.optimize_reports import (generate_backtest_stats, generate_pair_metrics, generate_sell_reason_stats, generate_strategy_metrics, - store_backtest_result, store_backtest_stats, text_table_bt_results, text_table_sell_reason, text_table_strategy) from freqtrade.strategy.interface import SellType -from tests.conftest import patch_exchange from tests.data.test_history import _backup_file, _clean_test_file @@ -308,75 +306,3 @@ def test_generate_edge_table(edge_conf, mocker): assert generate_edge_table(results).count('| ETH/BTC |') == 1 assert generate_edge_table(results).count( '| Risk Reward Ratio | Required Risk Reward | Expectancy |') == 1 - - -def test_backtest_record(default_conf, fee, mocker): - names = [] - records = [] - patch_exchange(mocker) - mocker.patch('freqtrade.exchange.Exchange.get_fee', fee) - mocker.patch( - 'freqtrade.optimize.optimize_reports.file_dump_json', - new=lambda n, r: (names.append(n), records.append(r)) - ) - - results = {'DefStrat': pd.DataFrame({"pair": ["UNITTEST/BTC", "UNITTEST/BTC", - "UNITTEST/BTC", "UNITTEST/BTC"], - "profit_percent": [0.003312, 0.010801, 0.013803, 0.002780], - "profit_abs": [0.000003, 0.000011, 0.000014, 0.000003], - "open_date": [Arrow(2017, 11, 14, 19, 32, 00).datetime, - Arrow(2017, 11, 14, 21, 36, 00).datetime, - Arrow(2017, 11, 14, 22, 12, 00).datetime, - Arrow(2017, 11, 14, 22, 44, 00).datetime], - "close_date": [Arrow(2017, 11, 14, 21, 35, 00).datetime, - Arrow(2017, 11, 14, 22, 10, 00).datetime, - Arrow(2017, 11, 14, 22, 43, 00).datetime, - Arrow(2017, 11, 14, 22, 58, 00).datetime], - "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], - "close_rate": [0.002546, 0.003014, 0.003103, 0.003217], - "trade_duration": [123, 34, 31, 14], - "open_at_end": [False, False, False, True], - "sell_reason": [SellType.ROI, SellType.STOP_LOSS, - SellType.ROI, SellType.FORCE_SELL] - })} - store_backtest_result(Path("backtest-result.json"), results) - # Assert file_dump_json was only called once - assert names == [Path('backtest-result.json')] - records = records[0] - # Ensure records are of correct type - assert len(records) == 4 - - # reset test to test with strategy name - names = [] - records = [] - results['Strat'] = results['DefStrat'] - results['Strat2'] = results['DefStrat'] - store_backtest_result(Path("backtest-result.json"), results) - assert names == [ - Path('backtest-result-DefStrat.json'), - Path('backtest-result-Strat.json'), - Path('backtest-result-Strat2.json'), - ] - records = records[0] - # Ensure records are of correct type - assert len(records) == 4 - - # ('UNITTEST/BTC', 0.00331158, '1510684320', '1510691700', 0, 117) - # Below follows just a typecheck of the schema/type of trade-records - oix = None - for (pair, profit, date_buy, date_sell, buy_index, dur, - openr, closer, open_at_end, sell_reason) in records: - assert pair == 'UNITTEST/BTC' - assert isinstance(profit, float) - # FIX: buy/sell should be converted to ints - assert isinstance(date_buy, float) - assert isinstance(date_sell, float) - assert isinstance(openr, float) - assert isinstance(closer, float) - assert isinstance(open_at_end, bool) - assert isinstance(sell_reason, str) - isinstance(buy_index, pd._libs.tslib.Timestamp) - if oix: - assert buy_index > oix - oix = buy_index - assert dur > 0 From ea5e47657a9bf4d3969db4a762ea73d283d3abc3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jul 2020 20:26:55 +0200 Subject: [PATCH 2745/3421] Remove ticker_interval from jupyter notebook --- docs/strategy_analysis_example.md | 4 ++-- freqtrade/templates/strategy_analysis_example.ipynb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/strategy_analysis_example.md b/docs/strategy_analysis_example.md index 8915ebe37..90e39fd76 100644 --- a/docs/strategy_analysis_example.md +++ b/docs/strategy_analysis_example.md @@ -18,7 +18,7 @@ config = Configuration.from_files([]) # config = Configuration.from_files(["config.json"]) # Define some constants -config["ticker_interval"] = "5m" +config["timeframe"] = "5m" # Name of the strategy class config["strategy"] = "SampleStrategy" # Location of the data @@ -33,7 +33,7 @@ pair = "BTC_USDT" from freqtrade.data.history import load_pair_history candles = load_pair_history(datadir=data_location, - timeframe=config["ticker_interval"], + timeframe=config["timeframe"], pair=pair) # Confirm success diff --git a/freqtrade/templates/strategy_analysis_example.ipynb b/freqtrade/templates/strategy_analysis_example.ipynb index 31a5b536a..c6e64c74e 100644 --- a/freqtrade/templates/strategy_analysis_example.ipynb +++ b/freqtrade/templates/strategy_analysis_example.ipynb @@ -34,7 +34,7 @@ "# config = Configuration.from_files([\"config.json\"])\n", "\n", "# Define some constants\n", - "config[\"ticker_interval\"] = \"5m\"\n", + "config[\"timeframe\"] = \"5m\"\n", "# Name of the strategy class\n", "config[\"strategy\"] = \"SampleStrategy\"\n", "# Location of the data\n", @@ -53,7 +53,7 @@ "from freqtrade.data.history import load_pair_history\n", "\n", "candles = load_pair_history(datadir=data_location,\n", - " timeframe=config[\"ticker_interval\"],\n", + " timeframe=config[\"timeframe\"],\n", " pair=pair)\n", "\n", "# Confirm success\n", From 1fc4451d2f59e7631131c9409a101c3c6abf63e1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 3 Jul 2020 20:32:04 +0200 Subject: [PATCH 2746/3421] Avoid \ linebreak --- freqtrade/optimize/optimize_reports.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 67c8e3077..63fbfb48c 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -17,8 +17,8 @@ logger = logging.getLogger(__name__) def store_backtest_stats(recordfilename: Path, stats: Dict[str, DataFrame]) -> None: if recordfilename.is_dir(): - filename = recordfilename / \ - f'backtest-result-{datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}.json' + filename = (recordfilename / + f'backtest-result-{datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}.json') else: filename = Path.joinpath( recordfilename.parent, From c4a9a79be08fdc26865ac23b53879b81076f3c3f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 4 Jul 2020 09:43:49 +0200 Subject: [PATCH 2747/3421] Apply suggested documentation changes from code review Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/bot-basics.md | 4 ++-- docs/strategy-advanced.md | 12 ++++++------ docs/strategy-customization.md | 4 ++-- freqtrade/strategy/interface.py | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/bot-basics.md b/docs/bot-basics.md index 728dcf46e..44f493456 100644 --- a/docs/bot-basics.md +++ b/docs/bot-basics.md @@ -1,10 +1,10 @@ # Freqtrade basics -This page will try to teach you some basic concepts on how freqtrade works and operates. +This page provides you some basic concepts on how Freqtrade works and operates. ## Freqtrade terminology -* Trade: Open position +* Trade: Open position. * Open Order: Order which is currently placed on the exchange, and is not yet complete. * Pair: Tradable pair, usually in the format of Quote/Base (e.g. XRP/USDT). * Timeframe: Candle length to use (e.g. `"5m"`, `"1h"`, ...). diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index c576cb46e..a5977e5dc 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -3,7 +3,7 @@ This page explains some advanced concepts available for strategies. If you're just getting started, please be familiar with the methods described in the [Strategy Customization](strategy-customization.md) documentation and with the [Freqtrade basics](bot-basics.md) first. -[Freqtrade basics](bot-basics.md) describes in which sequence each method defined below is called, which can be helpful to understand which method to use. +[Freqtrade basics](bot-basics.md) describes in which sequence each method described below is called, which can be helpful to understand which method to use for your custom needs. !!! Note All callback methods described below should only be implemented in a strategy if they are also actively used. @@ -97,8 +97,8 @@ class Awesomestrategy(IStrategy): ## Bot loop start callback -A simple callback which is called at the start of every bot iteration. -This can be used to perform calculations which are pair independent. +A simple callback which is called once at the start of every bot throttling iteration. +This can be used to perform calculations which are pair independent (apply to all pairs), loading of external data, etc. ``` python import requests @@ -111,7 +111,7 @@ class Awesomestrategy(IStrategy): """ Called at the start of the bot iteration (one loop). Might be used to perform pair-independent tasks - (e.g. gather some remote ressource for comparison) + (e.g. gather some remote resource for comparison) :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. """ if self.config['runmode'].value in ('live', 'dry_run'): @@ -125,7 +125,7 @@ class Awesomestrategy(IStrategy): ### Trade entry (buy order) confirmation -`confirm_trade_entry()` an be used to abort a trade entry at the latest second (maybe because the price is not what we expect). +`confirm_trade_entry()` can be used to abort a trade entry at the latest second (maybe because the price is not what we expect). ``` python class Awesomestrategy(IStrategy): @@ -158,7 +158,7 @@ class Awesomestrategy(IStrategy): ### Trade exit (sell order) confirmation -`confirm_trade_exit()` an be used to abort a trade exit (sell) at the latest second (maybe because the price is not what we expect). +`confirm_trade_exit()` can be used to abort a trade exit (sell) at the latest second (maybe because the price is not what we expect). ``` python from freqtrade.persistence import Trade diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 0a1049f3b..50fec79dc 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -1,8 +1,8 @@ # Strategy Customization -This page explains how to customize your strategies, and add new indicators. +This page explains how to customize your strategies, add new indicators and set up trading rules. -Please familiarize yourself with [Freqtrade basics](bot-basics.md) first. +Please familiarize yourself with [Freqtrade basics](bot-basics.md) first, which provides overall info on how the bot operates. ## Install a custom strategy file diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index f8e59ac7b..f3c5e154d 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -194,7 +194,7 @@ class IStrategy(ABC): """ Called at the start of the bot iteration (one loop). Might be used to perform pair-independent tasks - (e.g. gather some remote ressource for comparison) + (e.g. gather some remote resource for comparison) :param **kwargs: Ensure to keep this here so updates to this won't break your strategy. """ pass From 75318525a96b018fe138aaaf3a51773a6b437e88 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 4 Jul 2020 16:41:19 +0200 Subject: [PATCH 2748/3421] Update docs/strategy-advanced.md Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/strategy-advanced.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index a5977e5dc..e4bab303e 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -6,7 +6,7 @@ If you're just getting started, please be familiar with the methods described in [Freqtrade basics](bot-basics.md) describes in which sequence each method described below is called, which can be helpful to understand which method to use for your custom needs. !!! Note - All callback methods described below should only be implemented in a strategy if they are also actively used. + All callback methods described below should only be implemented in a strategy if they are actually used. ## Custom order timeout rules From f63045b0e982940615dbe48d176d2fb9397837f0 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Jul 2020 09:11:49 +0000 Subject: [PATCH 2749/3421] Bump ccxt from 1.30.48 to 1.30.64 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.30.48 to 1.30.64. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.30.48...1.30.64) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 2948b8f35..2f225c93c 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.30.48 +ccxt==1.30.64 SQLAlchemy==1.3.18 python-telegram-bot==12.8 arrow==0.15.7 From 4c8bee1e5d23c947ae2e3a26157a0a7373249826 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Jul 2020 09:12:15 +0000 Subject: [PATCH 2750/3421] Bump mkdocs-material from 5.3.3 to 5.4.0 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.3.3 to 5.4.0. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.3.3...5.4.0) Signed-off-by: dependabot-preview[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index a0505c84b..3a236ee87 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.3.3 +mkdocs-material==5.4.0 mdx_truly_sane_lists==1.2 From 93dd70c77ddc717219b5d9cb9007f28d04469bfd Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Jul 2020 09:13:05 +0000 Subject: [PATCH 2751/3421] Bump joblib from 0.15.1 to 0.16.0 Bumps [joblib](https://github.com/joblib/joblib) from 0.15.1 to 0.16.0. - [Release notes](https://github.com/joblib/joblib/releases) - [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst) - [Commits](https://github.com/joblib/joblib/compare/0.15.1...0.16.0) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 2784bc156..da34e54b2 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -6,5 +6,5 @@ scipy==1.5.0 scikit-learn==0.23.1 scikit-optimize==0.7.4 filelock==3.0.12 -joblib==0.15.1 +joblib==0.16.0 progressbar2==3.51.4 From deb34d287990c5959afc34b04c270751f8336a21 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 6 Jul 2020 19:58:28 +0000 Subject: [PATCH 2752/3421] Bump scipy from 1.5.0 to 1.5.1 Bumps [scipy](https://github.com/scipy/scipy) from 1.5.0 to 1.5.1. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.5.0...v1.5.1) Signed-off-by: dependabot-preview[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index da34e54b2..4773d9877 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -2,7 +2,7 @@ -r requirements.txt # Required for hyperopt -scipy==1.5.0 +scipy==1.5.1 scikit-learn==0.23.1 scikit-optimize==0.7.4 filelock==3.0.12 From 2e45859aef515efa5136054835f876fcb4e614f3 Mon Sep 17 00:00:00 2001 From: gambcl Date: Wed, 8 Jul 2020 18:06:30 +0100 Subject: [PATCH 2753/3421] Added range checks to min_days_listed in AgeFilter --- freqtrade/exchange/exchange.py | 5 +++++ freqtrade/pairlist/AgeFilter.py | 10 ++++++++++ tests/pairlist/test_pairlist.py | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index a3a548176..8aab225c6 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -187,6 +187,11 @@ class Exchange: def timeframes(self) -> List[str]: return list((self._api.timeframes or {}).keys()) + @property + def ohlcv_candle_limit(self) -> int: + """exchange ohlcv candle limit""" + return int(self._ohlcv_candle_limit) + @property def markets(self) -> Dict: """exchange ccxt markets""" diff --git a/freqtrade/pairlist/AgeFilter.py b/freqtrade/pairlist/AgeFilter.py index b489a59bc..101f19cbe 100644 --- a/freqtrade/pairlist/AgeFilter.py +++ b/freqtrade/pairlist/AgeFilter.py @@ -23,6 +23,16 @@ class AgeFilter(IPairList): super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) self._min_days_listed = pairlistconfig.get('min_days_listed', 10) + + if self._min_days_listed < 1: + self.log_on_refresh(logger.info, "min_days_listed must be >= 1, " + "ignoring filter") + if self._min_days_listed > exchange.ohlcv_candle_limit: + self._min_days_listed = min(self._min_days_listed, exchange.ohlcv_candle_limit) + self.log_on_refresh(logger.info, "min_days_listed exceeds " + "exchange max request size " + f"({exchange.ohlcv_candle_limit}), using " + f"min_days_listed={self._min_days_listed}") self._enabled = self._min_days_listed >= 1 @property diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index a2644fe8c..6b96501c9 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -524,6 +524,38 @@ def test_volumepairlist_caching(mocker, markets, whitelist_conf, tickers): assert freqtrade.pairlists._pairlist_handlers[0]._last_refresh == lrf +def test_agefilter_min_days_listed_too_small(mocker, default_conf, markets, tickers, caplog) -> None: + default_conf['pairlists'] = [{'method': 'VolumePairList', 'number_assets': 10}, + {'method': 'AgeFilter', 'min_days_listed': -1}] + + mocker.patch.multiple('freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=markets), + exchange_has=MagicMock(return_value=True), + get_tickers=tickers + ) + + get_patched_freqtradebot(mocker, default_conf) + + assert log_has_re(r'min_days_listed must be >= 1, ' + r'ignoring filter', caplog) + + +def test_agefilter_min_days_listed_too_large(mocker, default_conf, markets, tickers, caplog) -> None: + default_conf['pairlists'] = [{'method': 'VolumePairList', 'number_assets': 10}, + {'method': 'AgeFilter', 'min_days_listed': 99999}] + + mocker.patch.multiple('freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=markets), + exchange_has=MagicMock(return_value=True), + get_tickers=tickers + ) + + get_patched_freqtradebot(mocker, default_conf) + + assert log_has_re(r'^min_days_listed exceeds ' + r'exchange max request size', caplog) + + def test_agefilter_caching(mocker, markets, whitelist_conf_3, tickers, ohlcv_history_list): mocker.patch.multiple('freqtrade.exchange.Exchange', From 091285ba43a9b17fd47b434e67f388dbf63f90cd Mon Sep 17 00:00:00 2001 From: gambcl Date: Wed, 8 Jul 2020 18:32:14 +0100 Subject: [PATCH 2754/3421] Fix flake8 error in test_pairlist.py --- tests/pairlist/test_pairlist.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 6b96501c9..f95f001c9 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -524,7 +524,7 @@ def test_volumepairlist_caching(mocker, markets, whitelist_conf, tickers): assert freqtrade.pairlists._pairlist_handlers[0]._last_refresh == lrf -def test_agefilter_min_days_listed_too_small(mocker, default_conf, markets, tickers, caplog) -> None: +def test_agefilter_min_days_listed_too_small(mocker, default_conf, markets, tickers, caplog): default_conf['pairlists'] = [{'method': 'VolumePairList', 'number_assets': 10}, {'method': 'AgeFilter', 'min_days_listed': -1}] @@ -540,7 +540,7 @@ def test_agefilter_min_days_listed_too_small(mocker, default_conf, markets, tick r'ignoring filter', caplog) -def test_agefilter_min_days_listed_too_large(mocker, default_conf, markets, tickers, caplog) -> None: +def test_agefilter_min_days_listed_too_large(mocker, default_conf, markets, tickers, caplog): default_conf['pairlists'] = [{'method': 'VolumePairList', 'number_assets': 10}, {'method': 'AgeFilter', 'min_days_listed': 99999}] From 14eab9be04569a16fea2a56ccb636fb0d205a267 Mon Sep 17 00:00:00 2001 From: gambcl Date: Wed, 8 Jul 2020 22:02:04 +0100 Subject: [PATCH 2755/3421] Added min_price, max_price to PriceFilter --- config_full.json.example | 2 +- docs/configuration.md | 15 ++++++++-- freqtrade/pairlist/PriceFilter.py | 49 ++++++++++++++++++++++++++----- tests/pairlist/test_pairlist.py | 17 ++++++++--- 4 files changed, 67 insertions(+), 16 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index e1be01690..d5bfd3fe1 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -66,7 +66,7 @@ }, {"method": "AgeFilter", "min_days_listed": 10}, {"method": "PrecisionFilter"}, - {"method": "PriceFilter", "low_price_ratio": 0.01}, + {"method": "PriceFilter", "low_price_ratio": 0.01, "min_price": 0.00000010}, {"method": "SpreadFilter", "max_spread_ratio": 0.005} ], "exchange": { diff --git a/docs/configuration.md b/docs/configuration.md index e7a79361a..74bacacc0 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -662,16 +662,25 @@ Filters low-value coins which would not allow setting stoplosses. #### PriceFilter -The `PriceFilter` allows filtering of pairs by price. +The `PriceFilter` allows filtering of pairs by price. Currently the following price filters are supported: +* `min_price` +* `max_price` +* `low_price_ratio` -Currently, only `low_price_ratio` setting is implemented, where a raise of 1 price unit (pip) is below the `low_price_ratio` ratio. +The `min_price` setting removes pairs where the price is below the specified price. This is useful if you wish to avoid trading very low-priced pairs. +This option is disabled by default, and will only apply if set to <> 0. + +The `max_price` setting removes pairs where the price is above the specified price. This is useful if you wish to trade only low-priced pairs. +This option is disabled by default, and will only apply if set to <> 0. + +The `low_price_ratio` setting removes pairs where a raise of 1 price unit (pip) is above the `low_price_ratio` ratio. This option is disabled by default, and will only apply if set to <> 0. Calculation example: Min price precision is 8 decimals. If price is 0.00000011 - one step would be 0.00000012 - which is almost 10% higher than the previous value. -These pairs are dangerous since it may be impossible to place the desired stoploss - and often result in high losses. Here is what the PriceFilters takes over. +These pairs are dangerous since it may be impossible to place the desired stoploss - and often result in high losses. #### ShuffleFilter diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index 29dd88a76..1afc60999 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -18,7 +18,11 @@ class PriceFilter(IPairList): super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) self._low_price_ratio = pairlistconfig.get('low_price_ratio', 0) - self._enabled = self._low_price_ratio != 0 + self._min_price = pairlistconfig.get('min_price', 0) + self._max_price = pairlistconfig.get('max_price', 0) + self._enabled = (self._low_price_ratio != 0) or \ + (self._min_price != 0) or \ + (self._max_price != 0) @property def needstickers(self) -> bool: @@ -33,7 +37,18 @@ class PriceFilter(IPairList): """ Short whitelist method description - used for startup-messages """ - return f"{self.name} - Filtering pairs priced below {self._low_price_ratio * 100}%." + active_price_filters = [] + if self._low_price_ratio != 0: + active_price_filters.append(f"below {self._low_price_ratio * 100}%") + if self._min_price != 0: + active_price_filters.append(f"below {self._min_price:.8f}") + if self._max_price != 0: + active_price_filters.append(f"above {self._max_price:.8f}") + + if len(active_price_filters): + return f"{self.name} - Filtering pairs priced {' or '.join(active_price_filters)}." + + return f"{self.name} - No price filters configured." def _validate_pair(self, ticker) -> bool: """ @@ -46,10 +61,28 @@ class PriceFilter(IPairList): f"Removed {ticker['symbol']} from whitelist, because " "ticker['last'] is empty (Usually no trade in the last 24h).") return False - compare = self._exchange.price_get_one_pip(ticker['symbol'], ticker['last']) - changeperc = compare / ticker['last'] - if changeperc > self._low_price_ratio: - self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, " - f"because 1 unit is {changeperc * 100:.3f}%") - return False + + # Perform low_price_ratio check. + if self._low_price_ratio != 0: + compare = self._exchange.price_get_one_pip(ticker['symbol'], ticker['last']) + changeperc = compare / ticker['last'] + if changeperc > self._low_price_ratio: + self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, " + f"because 1 unit is {changeperc * 100:.3f}%") + return False + + # Perform min_price check. + if self._min_price != 0: + if ticker['last'] < self._min_price: + self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, " + f"because last price < {self._min_price:.8f}") + return False + + # Perform max_price check. + if self._max_price != 0: + if ticker['last'] > self._max_price: + self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, " + f"because last price > {self._max_price:.8f}") + return False + return True diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index f95f001c9..09cbe9d5f 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -275,11 +275,16 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PriceFilter", "low_price_ratio": 0.03}], "USDT", ['ETH/USDT', 'NANO/USDT']), - # Hot is removed by precision_filter, Fuel by low_price_filter. + # Hot is removed by precision_filter, Fuel by low_price_ratio, Ripple by min_price. ([{"method": "VolumePairList", "number_assets": 6, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}, - {"method": "PriceFilter", "low_price_ratio": 0.02}], - "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), + {"method": "PriceFilter", "low_price_ratio": 0.02, "min_price": 0.01}], + "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC']), + # Hot is removed by precision_filter, Fuel by low_price_ratio, Ethereum by max_price. + ([{"method": "VolumePairList", "number_assets": 6, "sort_key": "quoteVolume"}, + {"method": "PrecisionFilter"}, + {"method": "PriceFilter", "low_price_ratio": 0.02, "max_price": 0.05}], + "BTC", ['TKN/BTC', 'LTC/BTC', 'XRP/BTC']), # HOT and XRP are removed because below 1250 quoteVolume ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume", "min_value": 1250}], @@ -319,7 +324,7 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): "BTC", 'filter_at_the_beginning'), # OperationalException expected # PriceFilter after StaticPairList ([{"method": "StaticPairList"}, - {"method": "PriceFilter", "low_price_ratio": 0.02}], + {"method": "PriceFilter", "low_price_ratio": 0.02, "min_price": 0.000001, "max_price": 0.1}], "BTC", ['ETH/BTC', 'TKN/BTC']), # PriceFilter only ([{"method": "PriceFilter", "low_price_ratio": 0.02}], @@ -396,6 +401,10 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t r'would be <= stop limit.*', caplog) if pairlist['method'] == 'PriceFilter' and whitelist_result: assert (log_has_re(r'^Removed .* from whitelist, because 1 unit is .*%$', caplog) or + log_has_re(r'^Removed .* from whitelist, ' + r'because last price < .*%$', caplog) or + log_has_re(r'^Removed .* from whitelist, ' + r'because last price > .*%$', caplog) or log_has_re(r"^Removed .* from whitelist, because ticker\['last'\] " r"is empty.*", caplog)) if pairlist['method'] == 'VolumePairList': From 40bdc93653bc97666145f914e5dcc2ea49b49c8a Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 10 Jul 2020 20:21:33 +0200 Subject: [PATCH 2756/3421] Add test for short_desc of priceFilter --- freqtrade/pairlist/PriceFilter.py | 6 +++--- tests/pairlist/test_pairlist.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index 1afc60999..5ee1df078 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -20,9 +20,9 @@ class PriceFilter(IPairList): self._low_price_ratio = pairlistconfig.get('low_price_ratio', 0) self._min_price = pairlistconfig.get('min_price', 0) self._max_price = pairlistconfig.get('max_price', 0) - self._enabled = (self._low_price_ratio != 0) or \ - (self._min_price != 0) or \ - (self._max_price != 0) + self._enabled = ((self._low_price_ratio != 0) or + (self._min_price != 0) or + (self._max_price != 0)) @property def needstickers(self) -> bool: diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 09cbe9d5f..cf54a09ae 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -588,6 +588,36 @@ def test_agefilter_caching(mocker, markets, whitelist_conf_3, tickers, ohlcv_his assert freqtrade.exchange.get_historic_ohlcv.call_count == previous_call_count +@pytest.mark.parametrize("pairlistconfig,expected", [ + ({"method": "PriceFilter", "low_price_ratio": 0.001, "min_price": 0.00000010, + "max_price": 1.0}, "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below " + "0.1% or below 0.00000010 or above 1.00000000.'}]" + ), + ({"method": "PriceFilter", "low_price_ratio": 0.001, "min_price": 0.00000010}, + "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below 0.1% or below 0.00000010.'}]" + ), + ({"method": "PriceFilter", "low_price_ratio": 0.001, "max_price": 1.00010000}, + "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below 0.1% or above 1.00010000.'}]" + ), + ({"method": "PriceFilter", "min_price": 0.00002000}, + "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below 0.00002000.'}]" + ), + ({"method": "PriceFilter"}, + "[{'PriceFilter': 'PriceFilter - No price filters configured.'}]" + ), +]) +def test_pricefilter_desc(mocker, whitelist_conf, markets, pairlistconfig, expected): + mocker.patch.multiple('freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=markets), + exchange_has=MagicMock(return_value=True) + ) + whitelist_conf['pairlists'] = [pairlistconfig] + + freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) + short_desc = str(freqtrade.pairlists.short_desc()) + assert short_desc == expected + + def test_pairlistmanager_no_pairlist(mocker, markets, whitelist_conf, caplog): mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) From 588043af86d86cce4b90f65e34a8f49e98767db8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 11 Jul 2020 07:29:11 +0200 Subject: [PATCH 2757/3421] Fix documentation brackets, add delete trade hints --- docs/sql_cheatsheet.md | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/docs/sql_cheatsheet.md b/docs/sql_cheatsheet.md index 1d396b8ce..3d34d6fe2 100644 --- a/docs/sql_cheatsheet.md +++ b/docs/sql_cheatsheet.md @@ -100,8 +100,8 @@ UPDATE trades SET is_open=0, close_date=, close_rate=, - close_profit=close_rate/open_rate-1, - close_profit_abs = (amount * * (1 - fee_close) - (amount * open_rate * 1 - fee_open)), + close_profit = close_rate / open_rate - 1, + close_profit_abs = (amount * * (1 - fee_close) - (amount * (open_rate * 1 - fee_open))), sell_reason= WHERE id=; ``` @@ -111,24 +111,39 @@ WHERE id=; ```sql UPDATE trades SET is_open=0, - close_date='2017-12-20 03:08:45.103418', + close_date='2020-06-20 03:08:45.103418', close_rate=0.19638016, close_profit=0.0496, - close_profit_abs = (amount * 0.19638016 * (1 - fee_close) - (amount * open_rate * 1 - fee_open)) + close_profit_abs = (amount * 0.19638016 * (1 - fee_close) - (amount * open_rate * (1 - fee_open))) sell_reason='force_sell' WHERE id=31; ``` -## Insert manually a new trade +## Manually insert a new trade ```sql INSERT INTO trades (exchange, pair, is_open, fee_open, fee_close, open_rate, stake_amount, amount, open_date) -VALUES ('bittrex', 'ETH/BTC', 1, 0.0025, 0.0025, , , , '') +VALUES ('binance', 'ETH/BTC', 1, 0.0025, 0.0025, , , , '') ``` -##### Example: +### Insert trade example ```sql INSERT INTO trades (exchange, pair, is_open, fee_open, fee_close, open_rate, stake_amount, amount, open_date) -VALUES ('bittrex', 'ETH/BTC', 1, 0.0025, 0.0025, 0.00258580, 0.002, 0.7715262081, '2017-11-28 12:44:24.000000') +VALUES ('binance', 'ETH/BTC', 1, 0.0025, 0.0025, 0.00258580, 0.002, 0.7715262081, '2020-06-28 12:44:24.000000') ``` + +## Remove trade from the database + +Maybe you'd like to remove a trade from the database, because something went wrong. + +```sql +DELETE FROM trades WHERE id = ; +``` + +```sql +DELETE FROM trades WHERE id = 31; +``` + +!!! Warning + This will remove this trade from the database. Please make sure you got the correct id and **NEVER** run this query without the where clause. From ecbca3fab023f7e82661fdd4eb10bb71c2a9e036 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 11 Jul 2020 07:29:34 +0200 Subject: [PATCH 2758/3421] Add sqlite3 to dockerfile --- Dockerfile | 2 +- Dockerfile.armhf | 2 +- docs/sql_cheatsheet.md | 9 +++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index b6333fb13..29808b383 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM python:3.8.3-slim-buster RUN apt-get update \ - && apt-get -y install curl build-essential libssl-dev \ + && apt-get -y install curl build-essential libssl-dev sqlite3 \ && apt-get clean \ && pip install --upgrade pip diff --git a/Dockerfile.armhf b/Dockerfile.armhf index d6e2aa3a1..45ed2dac9 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -1,7 +1,7 @@ FROM --platform=linux/arm/v7 python:3.7.7-slim-buster RUN apt-get update \ - && apt-get -y install curl build-essential libssl-dev libatlas3-base libgfortran5 \ + && apt-get -y install curl build-essential libssl-dev libatlas3-base libgfortran5 sqlite3 \ && apt-get clean \ && pip install --upgrade pip \ && echo "[global]\nextra-index-url=https://www.piwheels.org/simple" > /etc/pip.conf diff --git a/docs/sql_cheatsheet.md b/docs/sql_cheatsheet.md index 3d34d6fe2..56f76b5b7 100644 --- a/docs/sql_cheatsheet.md +++ b/docs/sql_cheatsheet.md @@ -13,6 +13,15 @@ Feel free to use a visual Database editor like SqliteBrowser if you feel more co sudo apt-get install sqlite3 ``` +### Using sqlite3 via docker-compose + +The freqtrade docker image does contain sqlite3, so you can edit the database without having to install anything on the host system. + +``` bash +docker-compose exec freqtrade /bin/bash +sqlite3 .sqlite +``` + ## Open the DB ```bash From f0a1a1720f861ba534be18d144b3ed08751975aa Mon Sep 17 00:00:00 2001 From: HumanBot Date: Sat, 11 Jul 2020 15:21:54 -0400 Subject: [PATCH 2759/3421] removed duplicate removed duplicate word using using --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index e7a79361a..09a1e76fe 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -275,7 +275,7 @@ the static list of pairs) if we should buy. The `order_types` configuration parameter maps actions (`buy`, `sell`, `stoploss`, `emergencysell`) to order-types (`market`, `limit`, ...) as well as configures stoploss to be on the exchange and defines stoploss on exchange update interval in seconds. This allows to buy using limit orders, sell using -limit-orders, and create stoplosses using using market orders. It also allows to set the +limit-orders, and create stoplosses using market orders. It also allows to set the stoploss "on exchange" which means stoploss order would be placed immediately once the buy order is fulfilled. If `stoploss_on_exchange` and `trailing_stop` are both set, then the bot will use `stoploss_on_exchange_interval` to check and update the stoploss on exchange periodically. From 422825ea1b57494716697e550884fd00b8bac80f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Jul 2020 09:50:53 +0200 Subject: [PATCH 2760/3421] Add ohlcv_get_available_data to find available data --- freqtrade/data/history/idatahandler.py | 9 +++++++++ freqtrade/data/history/jsondatahandler.py | 14 +++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index d5d7c16db..e255710cb 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -13,6 +13,7 @@ from typing import List, Optional, Type from pandas import DataFrame from freqtrade.configuration import TimeRange +from freqtrade.constants import ListPairsWithTimeframes from freqtrade.data.converter import (clean_ohlcv_dataframe, trades_remove_duplicates, trim_dataframe) from freqtrade.exchange import timeframe_to_seconds @@ -28,6 +29,14 @@ class IDataHandler(ABC): def __init__(self, datadir: Path) -> None: self._datadir = datadir + @abstractclassmethod + def ohlcv_get_available_data(cls, datadir: Path) -> ListPairsWithTimeframes: + """ + Returns a list of all pairs with ohlcv data available in this datadir + :param datadir: Directory to search for ohlcv files + :return: List of Pair + """ + @abstractclassmethod def ohlcv_get_pairs(cls, datadir: Path, timeframe: str) -> List[str]: """ diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 01320f129..79a848d07 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -8,7 +8,8 @@ from pandas import DataFrame, read_json, to_datetime from freqtrade import misc from freqtrade.configuration import TimeRange -from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS +from freqtrade.constants import (DEFAULT_DATAFRAME_COLUMNS, + ListPairsWithTimeframes) from freqtrade.data.converter import trades_dict_to_list from .idatahandler import IDataHandler, TradeList @@ -21,6 +22,17 @@ class JsonDataHandler(IDataHandler): _use_zip = False _columns = DEFAULT_DATAFRAME_COLUMNS + @classmethod + def ohlcv_get_available_data(cls, datadir: Path) -> ListPairsWithTimeframes: + """ + Returns a list of all pairs with ohlcv data available in this datadir + :param datadir: Directory to search for ohlcv files + :return: List of Pair + """ + _tmp = [re.search(r'^([a-zA-Z_]+)\-(\S+)(?=.json)', p.name) + for p in datadir.glob(f"*.{cls._get_file_extension()}")] + return [(match[1].replace('_', '/'), match[2]) for match in _tmp if len(match.groups()) > 1] + @classmethod def ohlcv_get_pairs(cls, datadir: Path, timeframe: str) -> List[str]: """ From d4fc52d2d5b6e9bd6a5fe06ce902ea6460375db4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Jul 2020 09:56:46 +0200 Subject: [PATCH 2761/3421] Add tests for ohlcv_get_available_data --- freqtrade/data/history/jsondatahandler.py | 5 +++-- tests/data/test_history.py | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 79a848d07..4ef35cf55 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -29,9 +29,10 @@ class JsonDataHandler(IDataHandler): :param datadir: Directory to search for ohlcv files :return: List of Pair """ - _tmp = [re.search(r'^([a-zA-Z_]+)\-(\S+)(?=.json)', p.name) + _tmp = [re.search(r'^([a-zA-Z_]+)\-(\d+\S+)(?=.json)', p.name) for p in datadir.glob(f"*.{cls._get_file_extension()}")] - return [(match[1].replace('_', '/'), match[2]) for match in _tmp if len(match.groups()) > 1] + return [(match[1].replace('_', '/'), match[2]) for match in _tmp + if match and len(match.groups()) > 1] @classmethod def ohlcv_get_pairs(cls, datadir: Path, timeframe: str) -> List[str]: diff --git a/tests/data/test_history.py b/tests/data/test_history.py index c2eb2d715..d84c212b1 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -631,6 +631,20 @@ def test_jsondatahandler_ohlcv_get_pairs(testdatadir): assert set(pairs) == {'UNITTEST/BTC'} +def test_jsondatahandler_ohlcv_get_available_data(testdatadir): + paircombs = JsonDataHandler.ohlcv_get_available_data(testdatadir) + # Convert to set to avoid failures due to sorting + assert set(paircombs) == {('UNITTEST/BTC', '5m'), ('ETH/BTC', '5m'), ('XLM/BTC', '5m'), + ('TRX/BTC', '5m'), ('LTC/BTC', '5m'), ('XMR/BTC', '5m'), + ('ZEC/BTC', '5m'), ('UNITTEST/BTC', '1m'), ('ADA/BTC', '5m'), + ('ETC/BTC', '5m'), ('NXT/BTC', '5m'), ('DASH/BTC', '5m'), + ('XRP/ETH', '1m'), ('XRP/ETH', '5m'), ('UNITTEST/BTC', '30m'), + ('UNITTEST/BTC', '8m')} + + paircombs = JsonGzDataHandler.ohlcv_get_available_data(testdatadir) + assert set(paircombs) == {('UNITTEST/BTC', '8m')} + + def test_jsondatahandler_trades_get_pairs(testdatadir): pairs = JsonGzDataHandler.trades_get_pairs(testdatadir) # Convert to set to avoid failures due to sorting From 02afde857d204f91d9170bb9bf22439b07e8c2cc Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Jul 2020 09:57:00 +0200 Subject: [PATCH 2762/3421] Add list-data command --- freqtrade/commands/__init__.py | 3 ++- freqtrade/commands/arguments.py | 15 +++++++++++++-- freqtrade/commands/data_commands.py | 23 +++++++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index 2d0c7733c..4ce3eb421 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -9,7 +9,8 @@ Note: Be careful with file-scoped imports in these subfiles. from freqtrade.commands.arguments import Arguments from freqtrade.commands.build_config_commands import start_new_config from freqtrade.commands.data_commands import (start_convert_data, - start_download_data) + start_download_data, + start_list_data) from freqtrade.commands.deploy_commands import (start_create_userdir, start_new_hyperopt, start_new_strategy) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 72f2a02f0..a49d917a5 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -54,6 +54,8 @@ ARGS_BUILD_HYPEROPT = ["user_data_dir", "hyperopt", "template"] ARGS_CONVERT_DATA = ["pairs", "format_from", "format_to", "erase"] ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes"] +ARGS_LIST_DATA = ["exchange", "dataformat_ohlcv"] + ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", "timeframes", "erase", "dataformat_ohlcv", "dataformat_trades"] @@ -78,7 +80,7 @@ ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperop "print_json", "hyperopt_show_no_header"] NO_CONF_REQURIED = ["convert-data", "convert-trade-data", "download-data", "list-timeframes", - "list-markets", "list-pairs", "list-strategies", + "list-markets", "list-pairs", "list-strategies", "list-data", "list-hyperopts", "hyperopt-list", "hyperopt-show", "plot-dataframe", "plot-profit", "show-trades"] @@ -159,7 +161,7 @@ class Arguments: self._build_args(optionlist=['version'], parser=self.parser) from freqtrade.commands import (start_create_userdir, start_convert_data, - start_download_data, + start_download_data, start_list_data, start_hyperopt_list, start_hyperopt_show, start_list_exchanges, start_list_hyperopts, start_list_markets, start_list_strategies, @@ -233,6 +235,15 @@ class Arguments: convert_trade_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=False)) self._build_args(optionlist=ARGS_CONVERT_DATA, parser=convert_trade_data_cmd) + # Add list-data subcommand + list_data_cmd = subparsers.add_parser( + 'list-data', + help='List downloaded data.', + parents=[_common_parser], + ) + list_data_cmd.set_defaults(func=start_list_data) + self._build_args(optionlist=ARGS_LIST_DATA, parser=list_data_cmd) + # Add backtesting subcommand backtesting_cmd = subparsers.add_parser('backtesting', help='Backtesting module.', parents=[_common_parser, _strategy_parser]) diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index fc3a49f1d..4a37bdc08 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -1,5 +1,6 @@ import logging import sys +from collections import defaultdict from typing import Any, Dict, List import arrow @@ -11,6 +12,7 @@ from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data, refresh_backtest_trades_data) from freqtrade.exceptions import OperationalException +from freqtrade.exchange import timeframe_to_minutes from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode @@ -88,3 +90,24 @@ def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None: convert_trades_format(config, convert_from=args['format_from'], convert_to=args['format_to'], erase=args['erase']) + + +def start_list_data(args: Dict[str, Any]) -> None: + """ + List available backtest data + """ + + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) + + from freqtrade.data.history.idatahandler import get_datahandlerclass + from tabulate import tabulate + dhc = get_datahandlerclass(config['dataformat_ohlcv']) + paircombs = dhc.ohlcv_get_available_data(config['datadir']) + + print(f"Found {len(paircombs)} pair / timeframe combinations.") + groupedpair = defaultdict(list) + for pair, timeframe in sorted(paircombs, key=lambda x: (x[0], timeframe_to_minutes(x[1]))): + groupedpair[pair].append(timeframe) + + print(tabulate([(pair, ', '.join(timeframes)) for pair, timeframes in groupedpair.items()], + headers=("pairs", "timeframe"))) From 5bb81abce26b4e1bc44f7bc28cc0cf04397fea57 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Jul 2020 10:01:37 +0200 Subject: [PATCH 2763/3421] Add test for start_list_data --- tests/commands/test_commands.py | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 46350beff..9c741e102 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -6,12 +6,12 @@ import pytest from freqtrade.commands import (start_convert_data, start_create_userdir, start_download_data, start_hyperopt_list, - start_hyperopt_show, start_list_exchanges, - start_list_hyperopts, start_list_markets, - start_list_strategies, start_list_timeframes, - start_new_hyperopt, start_new_strategy, - start_show_trades, start_test_pairlist, - start_trading) + start_hyperopt_show, start_list_data, + start_list_exchanges, start_list_hyperopts, + start_list_markets, start_list_strategies, + start_list_timeframes, start_new_hyperopt, + start_new_strategy, start_show_trades, + start_test_pairlist, start_trading) from freqtrade.configuration import setup_utils_configuration from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode @@ -1043,6 +1043,23 @@ def test_convert_data_trades(mocker, testdatadir): assert trades_mock.call_args[1]['erase'] is False +def test_start_list_data(testdatadir, capsys): + args = [ + "list-data", + "--data-format-ohlcv", + "json", + "--datadir", + str(testdatadir), + ] + pargs = get_args(args) + pargs['config'] = None + start_list_data(pargs) + captured = capsys.readouterr() + assert "Found 16 pair / timeframe combinations." in captured.out + assert "\npairs timeframe\n" in captured.out + assert "\nUNITTEST/BTC 1m, 5m, 8m, 30m\n" in captured.out + + @pytest.mark.usefixtures("init_persistence") def test_show_trades(mocker, fee, capsys, caplog): mocker.patch("freqtrade.persistence.init") From 33c3990972495f1754744b98775f63e99a85aa0b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Jul 2020 10:05:47 +0200 Subject: [PATCH 2764/3421] Add documentation for list-data command --- docs/data-download.md | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/docs/data-download.md b/docs/data-download.md index 3fb775e69..7fbad0b6c 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -158,6 +158,55 @@ It'll also remove original jsongz data files (`--erase` parameter). freqtrade convert-trade-data --format-from jsongz --format-to json --datadir ~/.freqtrade/data/kraken --erase ``` +### Subcommand list-data + +You can get a list of downloaded data using the `list-data` subcommand. + +``` +usage: freqtrade list-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] + [--userdir PATH] [--exchange EXCHANGE] + [--data-format-ohlcv {json,jsongz}] + +optional arguments: + -h, --help show this help message and exit + --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no + config is provided. + --data-format-ohlcv {json,jsongz} + Storage format for downloaded candle (OHLCV) data. + (default: `json`). + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. + +``` + +#### Example list-data + +```bash +> freqtrade list-data --userdir ~/.freqtrade/user_data/ + +Found 33 pair / timeframe combinations. +pairs timeframe +---------- ----------------------------------------- +ADA/BTC 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d +ADA/ETH 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d +ETH/BTC 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d +ETH/USDT 5m, 15m, 30m, 1h, 2h, 4h +``` + ### Pairs file In alternative to the whitelist from `config.json`, a `pairs.json` file can be used. From b035d9e2671b57cbb09ab340d432349b934182b1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Jul 2020 10:23:09 +0200 Subject: [PATCH 2765/3421] Update return type comment --- freqtrade/commands/data_commands.py | 5 +++-- freqtrade/data/history/idatahandler.py | 2 +- freqtrade/data/history/jsondatahandler.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index 4a37bdc08..d3f70b9ec 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -99,9 +99,10 @@ def start_list_data(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - from freqtrade.data.history.idatahandler import get_datahandlerclass + from freqtrade.data.history.idatahandler import get_datahandler from tabulate import tabulate - dhc = get_datahandlerclass(config['dataformat_ohlcv']) + dhc = get_datahandler(config['datadir'], config['dataformat_ohlcv']) + paircombs = dhc.ohlcv_get_available_data(config['datadir']) print(f"Found {len(paircombs)} pair / timeframe combinations.") diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index e255710cb..96d288e01 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -34,7 +34,7 @@ class IDataHandler(ABC): """ Returns a list of all pairs with ohlcv data available in this datadir :param datadir: Directory to search for ohlcv files - :return: List of Pair + :return: List of Tuples of (pair, timeframe) """ @abstractclassmethod diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 4ef35cf55..2e7c0f773 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -27,7 +27,7 @@ class JsonDataHandler(IDataHandler): """ Returns a list of all pairs with ohlcv data available in this datadir :param datadir: Directory to search for ohlcv files - :return: List of Pair + :return: List of Tuples of (pair, timeframe) """ _tmp = [re.search(r'^([a-zA-Z_]+)\-(\d+\S+)(?=.json)', p.name) for p in datadir.glob(f"*.{cls._get_file_extension()}")] From ed2e35ba5d01fda20ec867d1b28ca020c78752f3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 12 Jul 2020 12:36:16 +0200 Subject: [PATCH 2766/3421] Update docs/sql_cheatsheet.md Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/sql_cheatsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sql_cheatsheet.md b/docs/sql_cheatsheet.md index 56f76b5b7..f4cb473ff 100644 --- a/docs/sql_cheatsheet.md +++ b/docs/sql_cheatsheet.md @@ -155,4 +155,4 @@ DELETE FROM trades WHERE id = 31; ``` !!! Warning - This will remove this trade from the database. Please make sure you got the correct id and **NEVER** run this query without the where clause. + This will remove this trade from the database. Please make sure you got the correct id and **NEVER** run this query without the `where` clause. From 79af6180bddee3a442c730b24d47f4496980b402 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Jul 2020 09:00:50 +0000 Subject: [PATCH 2767/3421] Bump pytest-mock from 3.1.1 to 3.2.0 Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.1.1 to 3.2.0. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.1.1...v3.2.0) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index ed4f8f713..249aa9089 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,7 +11,7 @@ mypy==0.782 pytest==5.4.3 pytest-asyncio==0.14.0 pytest-cov==2.10.0 -pytest-mock==3.1.1 +pytest-mock==3.2.0 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents From 58eb26d73a44d782a56ae5a64bf5477dbde3f98e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Jul 2020 09:01:14 +0000 Subject: [PATCH 2768/3421] Bump pycoingecko from 1.2.0 to 1.3.0 Bumps [pycoingecko](https://github.com/man-c/pycoingecko) from 1.2.0 to 1.3.0. - [Release notes](https://github.com/man-c/pycoingecko/releases) - [Changelog](https://github.com/man-c/pycoingecko/blob/master/CHANGELOG.md) - [Commits](https://github.com/man-c/pycoingecko/compare/1.2.0...1.3.0) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 2f225c93c..34340612d 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -11,7 +11,7 @@ wrapt==1.12.1 jsonschema==3.2.0 TA-Lib==0.4.18 tabulate==0.8.7 -pycoingecko==1.2.0 +pycoingecko==1.3.0 jinja2==2.11.2 # find first, C search in arrays From d1e4e463ae7d2c9f7361e68581a1617652869ba6 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Jul 2020 09:01:58 +0000 Subject: [PATCH 2769/3421] Bump ccxt from 1.30.64 to 1.30.93 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.30.64 to 1.30.93. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.30.64...1.30.93) Signed-off-by: dependabot-preview[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 2f225c93c..fc38f4ee6 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.30.64 +ccxt==1.30.93 SQLAlchemy==1.3.18 python-telegram-bot==12.8 arrow==0.15.7 From 50573bd3978464d012f5c76408a4699b19c86fc0 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 13 Jul 2020 09:02:07 +0000 Subject: [PATCH 2770/3421] Bump coveralls from 2.0.0 to 2.1.1 Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 2.0.0 to 2.1.1. - [Release notes](https://github.com/coveralls-clients/coveralls-python/releases) - [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/coveralls-clients/coveralls-python/compare/2.0.0...2.1.1) Signed-off-by: dependabot-preview[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index ed4f8f713..2b9c4c8f9 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -3,7 +3,7 @@ -r requirements-plot.txt -r requirements-hyperopt.txt -coveralls==2.0.0 +coveralls==2.1.1 flake8==3.8.3 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 From 0b36693accbf5b0435ebf5daeea0485737d443dd Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 13 Jul 2020 19:48:21 +0200 Subject: [PATCH 2771/3421] Add filter for stoploss_on_exchange_limit_ratio to constants --- freqtrade/constants.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 8a5332475..1dadc6e16 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -156,7 +156,9 @@ CONF_SCHEMA = { 'emergencysell': {'type': 'string', 'enum': ORDERTYPE_POSSIBILITIES}, 'stoploss': {'type': 'string', 'enum': ORDERTYPE_POSSIBILITIES}, 'stoploss_on_exchange': {'type': 'boolean'}, - 'stoploss_on_exchange_interval': {'type': 'number'} + 'stoploss_on_exchange_interval': {'type': 'number'}, + 'stoploss_on_exchange_limit_ratio': {'type': 'number', 'minimum': 0.0, + 'maximum': 1.0} }, 'required': ['buy', 'sell', 'stoploss', 'stoploss_on_exchange'] }, From 01f325a9e4cd65a0bb117f031f25d0da593002c9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 13 Jul 2020 21:15:33 +0200 Subject: [PATCH 2772/3421] Send timeframe min and ms in show_config response --- freqtrade/rpc/rpc.py | 4 ++++ tests/rpc/test_rpc_apiserver.py | 2 ++ 2 files changed, 6 insertions(+) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index e0eb12d23..c73fcbf54 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -12,6 +12,8 @@ import arrow from numpy import NAN, mean from freqtrade.exceptions import ExchangeError, PricingError + +from freqtrade.exchange import timeframe_to_msecs, timeframe_to_minutes from freqtrade.misc import shorten_date from freqtrade.persistence import Trade from freqtrade.rpc.fiat_convert import CryptoToFiatConverter @@ -103,6 +105,8 @@ class RPC: 'trailing_only_offset_is_reached': config.get('trailing_only_offset_is_reached'), 'ticker_interval': config['timeframe'], # DEPRECATED 'timeframe': config['timeframe'], + 'timeframe_ms': timeframe_to_msecs(config['timeframe']), + 'timeframe_min': timeframe_to_minutes(config['timeframe']), 'exchange': config['exchange']['name'], 'strategy': config['strategy'], 'forcebuy_enabled': config.get('forcebuy_enable', False), diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 45aa57588..355b63f48 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -326,6 +326,8 @@ def test_api_show_config(botclient, mocker): assert rc.json['exchange'] == 'bittrex' assert rc.json['ticker_interval'] == '5m' assert rc.json['timeframe'] == '5m' + assert rc.json['timeframe_ms'] == 300000 + assert rc.json['timeframe_min'] == 5 assert rc.json['state'] == 'running' assert not rc.json['trailing_stop'] assert 'bid_strategy' in rc.json From 62c55b18631398c7447b5eed355fa495f0a299af Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Jul 2020 06:55:34 +0200 Subject: [PATCH 2773/3421] Enhance formatting, Add pair filter --- docs/data-download.md | 5 ++++- freqtrade/commands/arguments.py | 2 +- freqtrade/commands/data_commands.py | 6 +++++- tests/commands/test_commands.py | 21 +++++++++++++++++++-- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/docs/data-download.md b/docs/data-download.md index 7fbad0b6c..a2bbec837 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -166,6 +166,7 @@ You can get a list of downloaded data using the `list-data` subcommand. usage: freqtrade list-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--exchange EXCHANGE] [--data-format-ohlcv {json,jsongz}] + [-p PAIRS [PAIRS ...]] optional arguments: -h, --help show this help message and exit @@ -174,6 +175,9 @@ optional arguments: --data-format-ohlcv {json,jsongz} Storage format for downloaded candle (OHLCV) data. (default: `json`). + -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] + Show profits for only these pairs. Pairs are space- + separated. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). @@ -190,7 +194,6 @@ Common arguments: Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH Path to userdata directory. - ``` #### Example list-data diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index a49d917a5..e6f6f8167 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -54,7 +54,7 @@ ARGS_BUILD_HYPEROPT = ["user_data_dir", "hyperopt", "template"] ARGS_CONVERT_DATA = ["pairs", "format_from", "format_to", "erase"] ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes"] -ARGS_LIST_DATA = ["exchange", "dataformat_ohlcv"] +ARGS_LIST_DATA = ["exchange", "dataformat_ohlcv", "pairs"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", "timeframes", "erase", "dataformat_ohlcv", "dataformat_trades"] diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index d3f70b9ec..13b796a1e 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -105,10 +105,14 @@ def start_list_data(args: Dict[str, Any]) -> None: paircombs = dhc.ohlcv_get_available_data(config['datadir']) + if args['pairs']: + paircombs = [comb for comb in paircombs if comb[0] in args['pairs']] + print(f"Found {len(paircombs)} pair / timeframe combinations.") groupedpair = defaultdict(list) for pair, timeframe in sorted(paircombs, key=lambda x: (x[0], timeframe_to_minutes(x[1]))): groupedpair[pair].append(timeframe) print(tabulate([(pair, ', '.join(timeframes)) for pair, timeframes in groupedpair.items()], - headers=("pairs", "timeframe"))) + headers=("Pair", "Timeframe"), + tablefmt='psql', stralign='right')) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 9c741e102..ffced956d 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -1056,8 +1056,25 @@ def test_start_list_data(testdatadir, capsys): start_list_data(pargs) captured = capsys.readouterr() assert "Found 16 pair / timeframe combinations." in captured.out - assert "\npairs timeframe\n" in captured.out - assert "\nUNITTEST/BTC 1m, 5m, 8m, 30m\n" in captured.out + assert "\n| Pair | Timeframe |\n" in captured.out + assert "\n| UNITTEST/BTC | 1m, 5m, 8m, 30m |\n" in captured.out + + args = [ + "list-data", + "--data-format-ohlcv", + "json", + "--pairs", "XRP/ETH", + "--datadir", + str(testdatadir), + ] + pargs = get_args(args) + pargs['config'] = None + start_list_data(pargs) + captured = capsys.readouterr() + assert "Found 2 pair / timeframe combinations." in captured.out + assert "\n| Pair | Timeframe |\n" in captured.out + assert "UNITTEST/BTC" not in captured.out + assert "\n| XRP/ETH | 1m, 5m |\n" in captured.out @pytest.mark.usefixtures("init_persistence") From ae55d54967b22c0b9d41d533194ebb96a3b63d82 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 14 Jul 2020 06:33:57 +0000 Subject: [PATCH 2774/3421] Bump python from 3.8.3-slim-buster to 3.8.4-slim-buster Bumps python from 3.8.3-slim-buster to 3.8.4-slim-buster. Signed-off-by: dependabot-preview[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 29808b383..f27167cc5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8.3-slim-buster +FROM python:3.8.4-slim-buster RUN apt-get update \ && apt-get -y install curl build-essential libssl-dev sqlite3 \ From 0228b63418bb35d680c9c4bfe8e0c2b492cf3b6a Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Jul 2020 16:42:47 +0200 Subject: [PATCH 2775/3421] Don't print empty table --- freqtrade/commands/data_commands.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index 13b796a1e..aa0b826b5 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -113,6 +113,7 @@ def start_list_data(args: Dict[str, Any]) -> None: for pair, timeframe in sorted(paircombs, key=lambda x: (x[0], timeframe_to_minutes(x[1]))): groupedpair[pair].append(timeframe) - print(tabulate([(pair, ', '.join(timeframes)) for pair, timeframes in groupedpair.items()], - headers=("Pair", "Timeframe"), - tablefmt='psql', stralign='right')) + if groupedpair: + print(tabulate([(pair, ', '.join(timeframes)) for pair, timeframes in groupedpair.items()], + headers=("Pair", "Timeframe"), + tablefmt='psql', stralign='right')) From 2417898d0078143be347d50cecacfe04a9900fae Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Jul 2020 19:27:52 +0200 Subject: [PATCH 2776/3421] Apply documentation suggestions from code review Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/backtesting.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index cb20c3e43..7d6759df0 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -210,18 +210,18 @@ Hence, keep in mind that your performance is an integral mix of all different el ### Sell reasons table The 2nd table contains a recap of sell reasons. -This table can tell you which area needs some additional work (i.e. all `sell_signal` trades are losses, so we should disable the sell-signal or work on improving that). +This table can tell you which area needs some additional work (e,g. all or many of the `sell_signal` trades are losses, so we should disable the sell-signal or work on improving that). ### Left open trades table -The 3rd table contains all trades the bot had to `forcesell` at the end of the backtest period to present a full picture. +The 3rd table contains all trades the bot had to `forcesell` at the end of the backtesting period to present you the full picture. This is necessary to simulate realistic behaviour, since the backtest period has to end at some point, while realistically, you could leave the bot running forever. -These trades are also included in the first table, but are extracted separately for clarity. +These trades are also included in the first table, but are also shown separately in this table for clarity. ### Summary metrics The last element of the backtest report is the summary metrics table. -It contains some useful key metrics about your strategy. +It contains some useful key metrics about performance of your strategy on backtesting data. ``` =============== SUMMARY METRICS =============== @@ -250,12 +250,12 @@ It contains some useful key metrics about your strategy. - `Total trades`: Identical to the total trades of the backtest output table. - `First trade`: First trade entered. - `First trade pair`: Which pair was part of the first trade. -- `Backtesting from` / `Backtesting to`: Backtesting range (usually defined as `--timerange from-to`). -- `Trades per day`: Total trades / Backtest duration (this will give you information about how many trades to expect from the strategy). +- `Backtesting from` / `Backtesting to`: Backtesting range (usually defined with the `--timerange` option). +- `Trades per day`: Total trades divided by the backtesting duration in days (this will give you information about how many trades to expect from the strategy). - `Best day` / `Worst day`: Best and worst day based on daily profit. - `Avg. Duration Winners` / `Avg. Duration Loser`: Average durations for winning and losing trades. -- `Max Drawdown`: Maximum drawown experienced. a value of 50% means that from highest to subsequent lowest point, a 50% drop was experiened). -- `Drawdown Start` / `Drawdown End`: From when to when was this large drawdown (can also be visualized via `plot-dataframe` subcommand). +- `Max Drawdown`: Maximum drawdown experienced. For example, the value of 50% means that from highest to subsequent lowest point, a 50% drop was experienced). +- `Drawdown Start` / `Drawdown End`: Start and end datetimes for this largest drawdown (can also be visualized via the `plot-dataframe` subcommand). - `Market change`: Change of the market during the backtest period. Calculated as average of all pairs changes from the first to the last candle using the "close" column. ### Assumptions made by backtesting From bdf611352e7e516d6789cb6b5a40f89c38953f59 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Jul 2020 19:34:01 +0200 Subject: [PATCH 2777/3421] Update summary-metrics output --- docs/backtesting.md | 40 ++++++++++++++------------ freqtrade/optimize/optimize_reports.py | 4 +-- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 7d6759df0..b1dcd5dba 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -157,22 +157,25 @@ A backtesting result will look like that: | ADA/BTC | 1 | 0.89 | 0.89 | 0.00004434 | 0.44 | 6:00:00 | 1 | 0 | 0 | | LTC/BTC | 1 | 0.68 | 0.68 | 0.00003421 | 0.34 | 2:00:00 | 1 | 0 | 0 | | TOTAL | 2 | 0.78 | 1.57 | 0.00007855 | 0.78 | 4:00:00 | 2 | 0 | 0 | -============ SUMMARY METRICS ============= -| Metric | Value | -|------------------+---------------------| -| Total trades | 429 | -| First trade | 2019-01-01 18:30:00 | -| First trade Pair | EOS/USDT | -| Backtesting from | 2019-01-01 00:00:00 | -| Backtesting to | 2019-05-01 00:00:00 | -| Trades per day | 3.575 | -| | | -| Max Drawdown | 50.63% | -| Drawdown Start | 2019-02-15 14:10:00 | -| Drawdown End | 2019-04-11 18:15:00 | -| Market change | -5.88% | -========================================== - +=============== SUMMARY METRICS =============== +| Metric | Value | +|-----------------------+---------------------| +| Backtesting from | 2019-01-01 00:00:00 | +| Backtesting to | 2019-05-01 00:00:00 | +| Total trades | 429 | +| First trade | 2019-01-01 18:30:00 | +| First trade Pair | EOS/USDT | +| Trades per day | 3.575 | +| Best day | 25.27% | +| Worst day | -30.67% | +| Avg. Duration Winners | 4:23:00 | +| Avg. Duration Loser | 6:55:00 | +| | | +| Max Drawdown | 50.63% | +| Drawdown Start | 2019-02-15 14:10:00 | +| Drawdown End | 2019-04-11 18:15:00 | +| Market change | -5.88% | +=============================================== ``` ### Backtesting report table @@ -227,12 +230,11 @@ It contains some useful key metrics about performance of your strategy on backte =============== SUMMARY METRICS =============== | Metric | Value | |-----------------------+---------------------| - +| Backtesting from | 2019-01-01 00:00:00 | +| Backtesting to | 2019-05-01 00:00:00 | | Total trades | 429 | | First trade | 2019-01-01 18:30:00 | | First trade Pair | EOS/USDT | -| Backtesting from | 2019-01-01 00:00:00 | -| Backtesting to | 2019-05-01 00:00:00 | | Trades per day | 3.575 | | Best day | 25.27% | | Worst day | -30.67% | diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 63fbfb48c..3a42ba4a9 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -367,11 +367,11 @@ def text_table_add_metrics(strat_results: Dict) -> str: if len(strat_results['trades']) > 0: min_trade = min(strat_results['trades'], key=lambda x: x['open_date']) metrics = [ + ('Backtesting from', strat_results['backtest_start'].strftime(DATETIME_PRINT_FORMAT)), + ('Backtesting to', strat_results['backtest_end'].strftime(DATETIME_PRINT_FORMAT)), ('Total trades', strat_results['total_trades']), ('First trade', min_trade['open_date'].strftime(DATETIME_PRINT_FORMAT)), ('First trade Pair', min_trade['pair']), - ('Backtesting from', strat_results['backtest_start'].strftime(DATETIME_PRINT_FORMAT)), - ('Backtesting to', strat_results['backtest_end'].strftime(DATETIME_PRINT_FORMAT)), ('Trades per day', strat_results['trades_per_day']), ('Best day', f"{round(strat_results['backtest_best_day'] * 100, 2)}%"), ('Worst day', f"{round(strat_results['backtest_worst_day'] * 100, 2)}%"), From 82c68f07cd281e86ea39db9571cd3a4cae6a7481 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Jul 2020 20:16:18 +0200 Subject: [PATCH 2778/3421] Add stoploss-distance (to current price) to /status output --- freqtrade/rpc/rpc.py | 1 + freqtrade/rpc/telegram.py | 21 +++++++++++---------- tests/rpc/test_rpc.py | 2 ++ tests/rpc/test_rpc_apiserver.py | 1 + tests/rpc/test_rpc_telegram.py | 4 +++- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index c73fcbf54..4e4d3ed6a 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -158,6 +158,7 @@ class RPC: current_profit_abs=current_profit_abs, stoploss_current_dist=stoploss_current_dist, stoploss_current_dist_ratio=round(stoploss_current_dist_ratio, 8), + stoploss_current_dist_pct=round(stoploss_current_dist_ratio * 100, 2), stoploss_entry_dist=stoploss_entry_dist, stoploss_entry_dist_ratio=round(stoploss_entry_dist_ratio, 8), open_order='({} {} rem={:.8f})'.format( diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 13cc1afaf..09be60795 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -236,17 +236,18 @@ class Telegram(RPC): ("*Close Profit:* `{close_profit_pct}`" if r['close_profit_pct'] is not None else ""), "*Current Profit:* `{current_profit_pct:.2f}%`", - - # Adding initial stoploss only if it is different from stoploss - "*Initial Stoploss:* `{initial_stop_loss:.8f}` " + - ("`({initial_stop_loss_pct:.2f}%)`") if ( - r['stop_loss'] != r['initial_stop_loss'] - and r['initial_stop_loss_pct'] is not None) else "", - - # Adding stoploss and stoploss percentage only if it is not None - "*Stoploss:* `{stop_loss:.8f}` " + - ("`({stop_loss_pct:.2f}%)`" if r['stop_loss_pct'] else ""), ] + if (r['stop_loss'] != r['initial_stop_loss'] + and r['initial_stop_loss_pct'] is not None): + # Adding initial stoploss only if it is different from stoploss + lines.append("*Initial Stoploss:* `{initial_stop_loss:.8f}` " + "`({initial_stop_loss_pct:.2f}%)`") + + # Adding stoploss and stoploss percentage only if it is not None + lines.append("*Stoploss:* `{stop_loss:.8f}` " + + ("`({stop_loss_pct:.2f}%)`" if r['stop_loss_pct'] else "")) + lines.append("*Stoploss distance:* `{stoploss_current_dist:.8f}` " + "`({stoploss_current_dist_pct:.2f}%)`") if r['open_order']: if r['sell_order_status']: lines.append("*Open Order:* `{open_order}` - `{sell_order_status}`") diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index de9327ba9..6d2c38868 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -100,6 +100,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'initial_stop_loss_ratio': -0.1, 'stoploss_current_dist': -1.1080000000000002e-06, 'stoploss_current_dist_ratio': -0.10081893, + 'stoploss_current_dist_pct': -10.08, 'stoploss_entry_dist': -0.00010475, 'stoploss_entry_dist_ratio': -0.10448878, 'open_order': None, @@ -163,6 +164,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'initial_stop_loss_ratio': -0.1, 'stoploss_current_dist': ANY, 'stoploss_current_dist_ratio': ANY, + 'stoploss_current_dist_pct': ANY, 'stoploss_entry_dist': -0.00010475, 'stoploss_entry_dist_ratio': -0.10448878, 'open_order': None, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 355b63f48..04f9fc493 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -552,6 +552,7 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'initial_stop_loss_ratio': -0.1, 'stoploss_current_dist': -1.1080000000000002e-06, 'stoploss_current_dist_ratio': -0.10081893, + 'stoploss_current_dist_pct': -10.08, 'stoploss_entry_dist': -0.00010475, 'stoploss_entry_dist_ratio': -0.10448878, 'trade_id': 1, diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 0a4352f5b..a13d2e6c7 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -144,7 +144,7 @@ def test_authorized_only_exception(default_conf, mocker, caplog) -> None: assert log_has('Exception occurred within Telegram module', caplog) -def test_status(default_conf, update, mocker, fee, ticker,) -> None: +def test_telegram_status(default_conf, update, mocker, fee, ticker,) -> None: update.message.chat.id = "123" default_conf['telegram']['enabled'] = False default_conf['telegram']['chat_id'] = "123" @@ -174,6 +174,8 @@ def test_status(default_conf, update, mocker, fee, ticker,) -> None: 'stop_loss': 1.099e-05, 'sell_order_status': None, 'initial_stop_loss_pct': -0.05, + 'stoploss_current_dist': 1e-08, + 'stoploss_current_dist_pct': -0.02, 'stop_loss_pct': -0.01, 'open_order': '(limit buy rem=0.00000000)' }]), From 1051ab917ad999d09eb2964940a5e3f5381dc22c Mon Sep 17 00:00:00 2001 From: gambcl Date: Wed, 15 Jul 2020 12:40:54 +0100 Subject: [PATCH 2779/3421] Replaced logging with OperationalException when AgeFilter given invalid parameters --- freqtrade/pairlist/AgeFilter.py | 12 +++++------- tests/pairlist/test_pairlist.py | 15 +++++++-------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/freqtrade/pairlist/AgeFilter.py b/freqtrade/pairlist/AgeFilter.py index 101f19cbe..7b6b126c3 100644 --- a/freqtrade/pairlist/AgeFilter.py +++ b/freqtrade/pairlist/AgeFilter.py @@ -5,6 +5,7 @@ import logging import arrow from typing import Any, Dict +from freqtrade.exceptions import OperationalException from freqtrade.misc import plural from freqtrade.pairlist.IPairList import IPairList @@ -25,14 +26,11 @@ class AgeFilter(IPairList): self._min_days_listed = pairlistconfig.get('min_days_listed', 10) if self._min_days_listed < 1: - self.log_on_refresh(logger.info, "min_days_listed must be >= 1, " - "ignoring filter") + raise OperationalException("AgeFilter requires min_days_listed must be >= 1") if self._min_days_listed > exchange.ohlcv_candle_limit: - self._min_days_listed = min(self._min_days_listed, exchange.ohlcv_candle_limit) - self.log_on_refresh(logger.info, "min_days_listed exceeds " - "exchange max request size " - f"({exchange.ohlcv_candle_limit}), using " - f"min_days_listed={self._min_days_listed}") + raise OperationalException("AgeFilter requires min_days_listed must not exceed " + "exchange max request size " + f"({exchange.ohlcv_candle_limit})") self._enabled = self._min_days_listed >= 1 @property diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index cf54a09ae..e23102162 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -543,10 +543,9 @@ def test_agefilter_min_days_listed_too_small(mocker, default_conf, markets, tick get_tickers=tickers ) - get_patched_freqtradebot(mocker, default_conf) - - assert log_has_re(r'min_days_listed must be >= 1, ' - r'ignoring filter', caplog) + with pytest.raises(OperationalException, + match=r'AgeFilter requires min_days_listed must be >= 1'): + get_patched_freqtradebot(mocker, default_conf) def test_agefilter_min_days_listed_too_large(mocker, default_conf, markets, tickers, caplog): @@ -559,10 +558,10 @@ def test_agefilter_min_days_listed_too_large(mocker, default_conf, markets, tick get_tickers=tickers ) - get_patched_freqtradebot(mocker, default_conf) - - assert log_has_re(r'^min_days_listed exceeds ' - r'exchange max request size', caplog) + with pytest.raises(OperationalException, + match=r'AgeFilter requires min_days_listed must not exceed ' + r'exchange max request size \([0-9]+\)'): + get_patched_freqtradebot(mocker, default_conf) def test_agefilter_caching(mocker, markets, whitelist_conf_3, tickers, ohlcv_history_list): From c1191400a4f5c705b394e209c30810dd0d1e669f Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jul 2020 19:20:07 +0200 Subject: [PATCH 2780/3421] Allow 0 fee value by correctly checking for None --- freqtrade/optimize/backtesting.py | 2 +- tests/optimize/test_backtesting.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index e5014dd5a..214c92e0e 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -101,7 +101,7 @@ class Backtesting: if len(self.pairlists.whitelist) == 0: raise OperationalException("No pair in whitelist.") - if config.get('fee'): + if config.get('fee', None) is not None: self.fee = config['fee'] else: self.fee = self.exchange.get_fee(symbol=self.pairlists.whitelist[0]) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 67da38648..caa40fe84 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -308,6 +308,11 @@ def test_data_with_fee(default_conf, mocker, testdatadir) -> None: assert backtesting.fee == 0.1234 assert fee_mock.call_count == 0 + default_conf['fee'] = 0.0 + backtesting = Backtesting(default_conf) + assert backtesting.fee == 0.0 + assert fee_mock.call_count == 0 + def test_data_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: patch_exchange(mocker) From 5cebc9f39df700205711776c23949e7fc57ee7eb Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jul 2020 19:28:40 +0200 Subject: [PATCH 2781/3421] Move stoploss_on_exchange_limit_ratio to configuration schema --- freqtrade/exchange/exchange.py | 7 ------- tests/exchange/test_exchange.py | 22 ---------------------- tests/test_configuration.py | 8 ++++++++ 3 files changed, 8 insertions(+), 29 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index d91a33926..fd9c83d51 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -389,13 +389,6 @@ class Exchange: f'On exchange stoploss is not supported for {self.name}.' ) - # Limit price threshold: As limit price should always be below stop-price - # Used for limit stoplosses on exchange - limit_price_pct = order_types.get('stoploss_on_exchange_limit_ratio', 0.99) - if limit_price_pct >= 1.0 or limit_price_pct <= 0.0: - raise OperationalException( - "stoploss_on_exchange_limit_ratio should be < 1.0 and > 0.0") - def validate_order_time_in_force(self, order_time_in_force: Dict) -> None: """ Checks if order time in force configured in strategy/config are supported diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 1101f3e74..60c4847f6 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -746,28 +746,6 @@ def test_validate_order_types(default_conf, mocker): match=r'On exchange stoploss is not supported for .*'): Exchange(default_conf) - default_conf['order_types'] = { - 'buy': 'limit', - 'sell': 'limit', - 'stoploss': 'limit', - 'stoploss_on_exchange': False, - 'stoploss_on_exchange_limit_ratio': 1.05 - } - with pytest.raises(OperationalException, - match=r'stoploss_on_exchange_limit_ratio should be < 1.0 and > 0.0'): - Exchange(default_conf) - - default_conf['order_types'] = { - 'buy': 'limit', - 'sell': 'limit', - 'stoploss': 'limit', - 'stoploss_on_exchange': False, - 'stoploss_on_exchange_limit_ratio': -0.1 - } - with pytest.raises(OperationalException, - match=r'stoploss_on_exchange_limit_ratio should be < 1.0 and > 0.0'): - Exchange(default_conf) - def test_validate_order_types_not_in_config(default_conf, mocker): api_mock = MagicMock() diff --git a/tests/test_configuration.py b/tests/test_configuration.py index cccc87670..ca5d6eadc 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -871,6 +871,14 @@ def test_load_config_default_exchange_name(all_conf) -> None: validate_config_schema(all_conf) +def test_load_config_stoploss_exchange_limit_ratio(all_conf) -> None: + all_conf['order_types']['stoploss_on_exchange_limit_ratio'] = 1.15 + + with pytest.raises(ValidationError, + match=r"1.15 is greater than the maximum"): + validate_config_schema(all_conf) + + @pytest.mark.parametrize("keys", [("exchange", "sandbox", False), ("exchange", "key", ""), ("exchange", "secret", ""), From d13cb4c05569e1116f07f5fef0fb896f42c13b7d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jul 2020 19:49:51 +0200 Subject: [PATCH 2782/3421] Introduce safe_value_fallback_2 --- freqtrade/exchange/exchange.py | 6 ++--- freqtrade/freqtradebot.py | 4 ++-- freqtrade/misc.py | 16 ++++++++++++- tests/test_misc.py | 42 +++++++++++++++++++++++----------- 4 files changed, 49 insertions(+), 19 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index a3a548176..5c4e4c530 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -24,7 +24,7 @@ from freqtrade.exceptions import (DDosProtection, ExchangeError, InvalidOrderException, OperationalException, RetryableOrderError, TemporaryError) from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async -from freqtrade.misc import deep_merge_dicts, safe_value_fallback +from freqtrade.misc import deep_merge_dicts, safe_value_fallback2 CcxtModuleType = Any @@ -1139,7 +1139,7 @@ class Exchange: if fee_curr in self.get_pair_base_currency(order['symbol']): # Base currency - divide by amount return round( - order['fee']['cost'] / safe_value_fallback(order, order, 'filled', 'amount'), 8) + order['fee']['cost'] / safe_value_fallback2(order, order, 'filled', 'amount'), 8) elif fee_curr in self.get_pair_quote_currency(order['symbol']): # Quote currency - divide by cost return round(order['fee']['cost'] / order['cost'], 8) if order['cost'] else None @@ -1152,7 +1152,7 @@ class Exchange: comb = self.get_valid_pair_combination(fee_curr, self._config['stake_currency']) tick = self.fetch_ticker(comb) - fee_to_quote_rate = safe_value_fallback(tick, tick, 'last', 'ask') + fee_to_quote_rate = safe_value_fallback2(tick, tick, 'last', 'ask') return round((order['fee']['cost'] * fee_to_quote_rate) / order['cost'], 8) except ExchangeError: return None diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ab7c2b527..9a0b3c40f 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -20,7 +20,7 @@ from freqtrade.edge import Edge from freqtrade.exceptions import (DependencyException, ExchangeError, InvalidOrderException, PricingError) from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date -from freqtrade.misc import safe_value_fallback +from freqtrade.misc import safe_value_fallback2 from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver @@ -984,7 +984,7 @@ class FreqtradeBot: logger.info('Buy order %s for %s.', reason, trade) # Using filled to determine the filled amount - filled_amount = safe_value_fallback(corder, order, 'filled', 'filled') + filled_amount = safe_value_fallback2(corder, order, 'filled', 'filled') if isclose(filled_amount, 0.0, abs_tol=constants.MATH_CLOSE_PREC): logger.info('Buy order fully cancelled. Removing %s from database.', trade) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index ac6084eb7..623f6cb8f 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -134,7 +134,21 @@ def round_dict(d, n): return {k: (round(v, n) if isinstance(v, float) else v) for k, v in d.items()} -def safe_value_fallback(dict1: dict, dict2: dict, key1: str, key2: str, default_value=None): +def safe_value_fallback(obj: dict, key1: str, key2: str, default_value=None): + """ + Search a value in obj, return this if it's not None. + Then search key2 in obj - return that if it's not none - then use default_value. + Else falls back to None. + """ + if key1 in obj and obj[key1] is not None: + return obj[key1] + else: + if key2 in obj and obj[key2] is not None: + return obj[key2] + return default_value + + +def safe_value_fallback2(dict1: dict, dict2: dict, key1: str, key2: str, default_value=None): """ Search a value in dict1, return this if it's not None. Fall back to dict2 - return key2 from dict2 if it's not None. diff --git a/tests/test_misc.py b/tests/test_misc.py index 9fd6164d5..a185cbba4 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -11,7 +11,7 @@ from freqtrade.misc import (datesarray_to_datetimearray, file_dump_json, file_load_json, format_ms_time, pair_to_filename, plural, render_template, render_template_with_fallback, safe_value_fallback, - shorten_date) + safe_value_fallback2, shorten_date) def test_shorten_date() -> None: @@ -96,24 +96,40 @@ def test_format_ms_time() -> None: def test_safe_value_fallback(): + dict1 = {'keya': None, 'keyb': 2, 'keyc': 5, 'keyd': None} + assert safe_value_fallback(dict1, 'keya', 'keyb') == 2 + assert safe_value_fallback(dict1, 'keyb', 'keya') == 2 + + assert safe_value_fallback(dict1, 'keyb', 'keyc') == 2 + assert safe_value_fallback(dict1, 'keya', 'keyc') == 5 + + assert safe_value_fallback(dict1, 'keyc', 'keyb') == 5 + + assert safe_value_fallback(dict1, 'keya', 'keyd') is None + + assert safe_value_fallback(dict1, 'keyNo', 'keyNo') is None + assert safe_value_fallback(dict1, 'keyNo', 'keyNo', 55) == 55 + + +def test_safe_value_fallback2(): dict1 = {'keya': None, 'keyb': 2, 'keyc': 5, 'keyd': None} dict2 = {'keya': 20, 'keyb': None, 'keyc': 6, 'keyd': None} - assert safe_value_fallback(dict1, dict2, 'keya', 'keya') == 20 - assert safe_value_fallback(dict2, dict1, 'keya', 'keya') == 20 + assert safe_value_fallback2(dict1, dict2, 'keya', 'keya') == 20 + assert safe_value_fallback2(dict2, dict1, 'keya', 'keya') == 20 - assert safe_value_fallback(dict1, dict2, 'keyb', 'keyb') == 2 - assert safe_value_fallback(dict2, dict1, 'keyb', 'keyb') == 2 + assert safe_value_fallback2(dict1, dict2, 'keyb', 'keyb') == 2 + assert safe_value_fallback2(dict2, dict1, 'keyb', 'keyb') == 2 - assert safe_value_fallback(dict1, dict2, 'keyc', 'keyc') == 5 - assert safe_value_fallback(dict2, dict1, 'keyc', 'keyc') == 6 + assert safe_value_fallback2(dict1, dict2, 'keyc', 'keyc') == 5 + assert safe_value_fallback2(dict2, dict1, 'keyc', 'keyc') == 6 - assert safe_value_fallback(dict1, dict2, 'keyd', 'keyd') is None - assert safe_value_fallback(dict2, dict1, 'keyd', 'keyd') is None - assert safe_value_fallback(dict2, dict1, 'keyd', 'keyd', 1234) == 1234 + assert safe_value_fallback2(dict1, dict2, 'keyd', 'keyd') is None + assert safe_value_fallback2(dict2, dict1, 'keyd', 'keyd') is None + assert safe_value_fallback2(dict2, dict1, 'keyd', 'keyd', 1234) == 1234 - assert safe_value_fallback(dict1, dict2, 'keyNo', 'keyNo') is None - assert safe_value_fallback(dict2, dict1, 'keyNo', 'keyNo') is None - assert safe_value_fallback(dict2, dict1, 'keyNo', 'keyNo', 1234) == 1234 + assert safe_value_fallback2(dict1, dict2, 'keyNo', 'keyNo') is None + assert safe_value_fallback2(dict2, dict1, 'keyNo', 'keyNo') is None + assert safe_value_fallback2(dict2, dict1, 'keyNo', 'keyNo', 1234) == 1234 def test_plural() -> None: From c826f7a7077715f71416dd77001d927b858b0184 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jul 2020 20:15:29 +0200 Subject: [PATCH 2783/3421] Add amount_requested to database --- freqtrade/persistence.py | 9 ++++++--- tests/test_persistence.py | 6 ++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index a6c1de402..bdbb7628a 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -86,7 +86,7 @@ def check_migrate(engine) -> None: logger.debug(f'trying {table_back_name}') # Check for latest column - if not has_column(cols, 'timeframe'): + if not has_column(cols, 'amount_requested'): logger.info(f'Running database migration - backup available as {table_back_name}') fee_open = get_column_def(cols, 'fee_open', 'fee') @@ -119,6 +119,7 @@ def check_migrate(engine) -> None: cols, 'close_profit_abs', f"(amount * close_rate * (1 - {fee_close})) - {open_trade_price}") sell_order_status = get_column_def(cols, 'sell_order_status', 'null') + amount_requested = get_column_def(cols, 'amount_requested', 'amount') # Schema migration necessary engine.execute(f"alter table trades rename to {table_back_name}") @@ -134,7 +135,7 @@ def check_migrate(engine) -> None: fee_open, fee_open_cost, fee_open_currency, fee_close, fee_close_cost, fee_open_currency, open_rate, open_rate_requested, close_rate, close_rate_requested, close_profit, - stake_amount, amount, open_date, close_date, open_order_id, + stake_amount, amount, amount_requested, open_date, close_date, open_order_id, stop_loss, stop_loss_pct, initial_stop_loss, initial_stop_loss_pct, stoploss_order_id, stoploss_last_update, max_rate, min_rate, sell_reason, sell_order_status, strategy, @@ -153,7 +154,7 @@ def check_migrate(engine) -> None: {fee_close_cost} fee_close_cost, {fee_close_currency} fee_close_currency, open_rate, {open_rate_requested} open_rate_requested, close_rate, {close_rate_requested} close_rate_requested, close_profit, - stake_amount, amount, open_date, close_date, open_order_id, + stake_amount, amount, {amount_requested}, open_date, close_date, open_order_id, {stop_loss} stop_loss, {stop_loss_pct} stop_loss_pct, {initial_stop_loss} initial_stop_loss, {initial_stop_loss_pct} initial_stop_loss_pct, @@ -215,6 +216,7 @@ class Trade(_DECL_BASE): close_profit_abs = Column(Float) stake_amount = Column(Float, nullable=False) amount = Column(Float) + amount_requested = Column(Float) open_date = Column(DateTime, nullable=False, default=datetime.utcnow) close_date = Column(DateTime) open_order_id = Column(String) @@ -256,6 +258,7 @@ class Trade(_DECL_BASE): 'is_open': self.is_open, 'exchange': self.exchange, 'amount': round(self.amount, 8), + 'amount_requested': round(self.amount_requested, 8), 'stake_amount': round(self.stake_amount, 8), 'strategy': self.strategy, 'ticker_interval': self.timeframe, # DEPRECATED diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 8dd27e53a..c39b2015e 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -457,6 +457,7 @@ def test_migrate_old(mocker, default_conf, fee): assert trade.close_rate_requested is None assert trade.is_open == 1 assert trade.amount == amount + assert trade.amount_requested == amount assert trade.stake_amount == default_conf.get("stake_amount") assert trade.pair == "ETC/BTC" assert trade.exchange == "bittrex" @@ -546,6 +547,7 @@ def test_migrate_new(mocker, default_conf, fee, caplog): assert trade.close_rate_requested is None assert trade.is_open == 1 assert trade.amount == amount + assert trade.amount_requested == amount assert trade.stake_amount == default_conf.get("stake_amount") assert trade.pair == "ETC/BTC" assert trade.exchange == "binance" @@ -725,6 +727,7 @@ def test_to_json(default_conf, fee): pair='ETH/BTC', stake_amount=0.001, amount=123.0, + amount_requested=123.0, fee_open=fee.return_value, fee_close=fee.return_value, open_date=arrow.utcnow().shift(hours=-2).datetime, @@ -757,6 +760,7 @@ def test_to_json(default_conf, fee): 'close_rate': None, 'close_rate_requested': None, 'amount': 123.0, + 'amount_requested': 123.0, 'stake_amount': 0.001, 'close_profit': None, 'close_profit_abs': None, @@ -786,6 +790,7 @@ def test_to_json(default_conf, fee): pair='XRP/BTC', stake_amount=0.001, amount=100.0, + amount_requested=101.0, fee_open=fee.return_value, fee_close=fee.return_value, open_date=arrow.utcnow().shift(hours=-2).datetime, @@ -808,6 +813,7 @@ def test_to_json(default_conf, fee): 'open_rate': 0.123, 'close_rate': 0.125, 'amount': 100.0, + 'amount_requested': 101.0, 'stake_amount': 0.001, 'stop_loss': None, 'stop_loss_abs': None, From eafab38db3b35d66ba927b0bc69934c40178bdde Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jul 2020 20:20:14 +0200 Subject: [PATCH 2784/3421] Complete implementation of amount_requested --- freqtrade/freqtradebot.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 9a0b3c40f..c1149b8c2 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -532,6 +532,7 @@ class FreqtradeBot: # we assume the order is executed at the price requested buy_limit_filled_price = buy_limit_requested + amount_requested = amount if order_status == 'expired' or order_status == 'rejected': order_tif = self.strategy.order_time_in_force['buy'] @@ -568,6 +569,7 @@ class FreqtradeBot: pair=pair, stake_amount=stake_amount, amount=amount, + amount_requested=amount_requested, fee_open=fee, fee_close=fee, open_rate=buy_limit_filled_price, From c1c018d8feb1843c18271f821dd5d36185db3d13 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jul 2020 20:27:00 +0200 Subject: [PATCH 2785/3421] Fix tests that require amount_requested --- tests/conftest.py | 3 +++ tests/rpc/test_rpc.py | 2 ++ tests/rpc/test_rpc_apiserver.py | 3 +++ 3 files changed, 8 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 43dc8ca78..8501a98b9 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -176,6 +176,7 @@ def create_mock_trades(fee): pair='ETH/BTC', stake_amount=0.001, amount=123.0, + amount_requested=123.0, fee_open=fee.return_value, fee_close=fee.return_value, open_rate=0.123, @@ -188,6 +189,7 @@ def create_mock_trades(fee): pair='ETC/BTC', stake_amount=0.001, amount=123.0, + amount_requested=123.0, fee_open=fee.return_value, fee_close=fee.return_value, open_rate=0.123, @@ -204,6 +206,7 @@ def create_mock_trades(fee): pair='ETC/BTC', stake_amount=0.001, amount=123.0, + amount_requested=124.0, fee_open=fee.return_value, fee_close=fee.return_value, open_rate=0.123, diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index de9327ba9..ddbbe395c 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -80,6 +80,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'close_rate': None, 'current_rate': 1.099e-05, 'amount': 91.07468124, + 'amount_requested': 91.07468124, 'stake_amount': 0.001, 'close_profit': None, 'close_profit_pct': None, @@ -143,6 +144,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'close_rate': None, 'current_rate': ANY, 'amount': 91.07468124, + 'amount_requested': 91.07468124, 'stake_amount': 0.001, 'close_profit': None, 'close_profit_pct': None, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 355b63f48..13c11d29d 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -520,6 +520,7 @@ def test_api_status(botclient, mocker, ticker, fee, markets): assert_response(rc) assert len(rc.json) == 1 assert rc.json == [{'amount': 91.07468124, + 'amount_requested': 91.07468124, 'base_currency': 'BTC', 'close_date': None, 'close_date_hum': None, @@ -641,6 +642,7 @@ def test_api_forcebuy(botclient, mocker, fee): fbuy_mock = MagicMock(return_value=Trade( pair='ETH/ETH', amount=1, + amount_requested=1, exchange='bittrex', stake_amount=1, open_rate=0.245441, @@ -657,6 +659,7 @@ def test_api_forcebuy(botclient, mocker, fee): data='{"pair": "ETH/BTC"}') assert_response(rc) assert rc.json == {'amount': 1, + 'amount_requested': 1, 'trade_id': None, 'close_date': None, 'close_date_hum': None, From 3721736aafbcbd06b8cfd1e94e8244360d481b7b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jul 2020 20:28:07 +0200 Subject: [PATCH 2786/3421] Convert to real amount before placing order to keep the correct amount in the database --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c1149b8c2..5c0de94a1 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -523,7 +523,7 @@ class FreqtradeBot: time_in_force=time_in_force): logger.info(f"User requested abortion of buying {pair}") return False - + amount = self.exchange.amount_to_precision(pair, amount) order = self.exchange.buy(pair=pair, ordertype=order_type, amount=amount, rate=buy_limit_requested, time_in_force=time_in_force) From 98f2e79f27292b8e8d6feac5c6cd00660635c069 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jul 2020 20:51:52 +0200 Subject: [PATCH 2787/3421] Adjust tests to use correctly trimmed amount --- freqtrade/persistence.py | 2 +- tests/rpc/test_rpc.py | 8 ++++---- tests/rpc/test_rpc_apiserver.py | 6 +++--- tests/rpc/test_rpc_telegram.py | 12 ++++++------ tests/test_freqtradebot.py | 20 ++++++++++---------- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index bdbb7628a..245b1c790 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -276,7 +276,7 @@ class Trade(_DECL_BASE): 'open_timestamp': int(self.open_date.timestamp() * 1000), 'open_rate': self.open_rate, 'open_rate_requested': self.open_rate_requested, - 'open_trade_price': self.open_trade_price, + 'open_trade_price': round(self.open_trade_price, 8), 'close_date_hum': (arrow.get(self.close_date).humanize() if self.close_date else None), diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index ddbbe395c..2d5370e1e 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -79,8 +79,8 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_rate': 1.098e-05, 'close_rate': None, 'current_rate': 1.099e-05, - 'amount': 91.07468124, - 'amount_requested': 91.07468124, + 'amount': 91.07468123, + 'amount_requested': 91.07468123, 'stake_amount': 0.001, 'close_profit': None, 'close_profit_pct': None, @@ -143,8 +143,8 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_rate': 1.098e-05, 'close_rate': None, 'current_rate': ANY, - 'amount': 91.07468124, - 'amount_requested': 91.07468124, + 'amount': 91.07468123, + 'amount_requested': 91.07468123, 'stake_amount': 0.001, 'close_profit': None, 'close_profit_pct': None, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 13c11d29d..c7259bdc6 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -519,8 +519,8 @@ def test_api_status(botclient, mocker, ticker, fee, markets): rc = client_get(client, f"{BASE_URI}/status") assert_response(rc) assert len(rc.json) == 1 - assert rc.json == [{'amount': 91.07468124, - 'amount_requested': 91.07468124, + assert rc.json == [{'amount': 91.07468123, + 'amount_requested': 91.07468123, 'base_currency': 'BTC', 'close_date': None, 'close_date_hum': None, @@ -696,7 +696,7 @@ def test_api_forcebuy(botclient, mocker, fee): 'min_rate': None, 'open_order_id': '123456', 'open_rate_requested': None, - 'open_trade_price': 0.2460546025, + 'open_trade_price': 0.24605460, 'sell_reason': None, 'sell_order_status': None, 'strategy': None, diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 0a4352f5b..669c6dc89 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -690,7 +690,7 @@ def test_reload_config_handle(default_conf, update, mocker) -> None: assert 'reloading config' in msg_mock.call_args_list[0][0][0] -def test_forcesell_handle(default_conf, update, ticker, fee, +def test_telegram_forcesell_handle(default_conf, update, ticker, fee, ticker_sell_up, mocker) -> None: mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) rpc_mock = mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg', MagicMock()) @@ -729,7 +729,7 @@ def test_forcesell_handle(default_conf, update, ticker, fee, 'pair': 'ETH/BTC', 'gain': 'profit', 'limit': 1.173e-05, - 'amount': 91.07468123861567, + 'amount': 91.07468123, 'order_type': 'limit', 'open_rate': 1.098e-05, 'current_rate': 1.173e-05, @@ -743,8 +743,8 @@ def test_forcesell_handle(default_conf, update, ticker, fee, } == last_msg -def test_forcesell_down_handle(default_conf, update, ticker, fee, - ticker_sell_down, mocker) -> None: +def test_telegram_forcesell_down_handle(default_conf, update, ticker, fee, + ticker_sell_down, mocker) -> None: mocker.patch('freqtrade.rpc.fiat_convert.CryptoToFiatConverter._find_price', return_value=15000.0) rpc_mock = mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg', MagicMock()) @@ -788,7 +788,7 @@ def test_forcesell_down_handle(default_conf, update, ticker, fee, 'pair': 'ETH/BTC', 'gain': 'loss', 'limit': 1.043e-05, - 'amount': 91.07468123861567, + 'amount': 91.07468123, 'order_type': 'limit', 'open_rate': 1.098e-05, 'current_rate': 1.043e-05, @@ -836,7 +836,7 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None 'pair': 'ETH/BTC', 'gain': 'loss', 'limit': 1.099e-05, - 'amount': 91.07468123861567, + 'amount': 91.07468123, 'order_type': 'limit', 'open_rate': 1.098e-05, 'current_rate': 1.099e-05, diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index ada0d87fd..685b269d7 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -595,7 +595,7 @@ def test_create_trade_minimal_amount(default_conf, ticker, limit_buy_order, freqtrade.create_trade('ETH/BTC') rate, amount = buy_mock.call_args[1]['rate'], buy_mock.call_args[1]['amount'] - assert rate * amount >= default_conf['stake_amount'] + assert rate * amount <= default_conf['stake_amount'] def test_create_trade_too_small_stake_amount(default_conf, ticker, limit_buy_order, @@ -782,7 +782,7 @@ def test_process_trade_creation(default_conf, ticker, limit_buy_order, assert trade.open_date is not None assert trade.exchange == 'bittrex' assert trade.open_rate == 0.00001098 - assert trade.amount == 91.07468123861567 + assert trade.amount == 91.07468123 assert log_has( 'Buy signal found: about create a new trade with stake_amount: 0.001 ...', caplog @@ -1009,7 +1009,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: call_args = buy_mm.call_args_list[0][1] assert call_args['pair'] == pair assert call_args['rate'] == bid - assert call_args['amount'] == stake_amount / bid + assert call_args['amount'] == round(stake_amount / bid, 8) buy_rate_mock.reset_mock() # Should create an open trade with an open order id @@ -1029,7 +1029,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None: call_args = buy_mm.call_args_list[1][1] assert call_args['pair'] == pair assert call_args['rate'] == fix_price - assert call_args['amount'] == stake_amount / fix_price + assert call_args['amount'] == round(stake_amount / fix_price, 8) # In case of closed order limit_buy_order['status'] = 'closed' @@ -1407,7 +1407,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog, assert freqtrade.handle_stoploss_on_exchange(trade) is False cancel_order_mock.assert_called_once_with(100, 'ETH/BTC') - stoploss_order_mock.assert_called_once_with(amount=85.32423208191126, + stoploss_order_mock.assert_called_once_with(amount=85.32423208, pair='ETH/BTC', order_types=freqtrade.strategy.order_types, stop_price=0.00002346 * 0.95) @@ -1595,7 +1595,7 @@ def test_tsl_on_exchange_compatible_with_edge(mocker, edge_conf, fee, caplog, # stoploss should be set to 1% as trailing is on assert trade.stop_loss == 0.00002346 * 0.99 cancel_order_mock.assert_called_once_with(100, 'NEO/BTC') - stoploss_order_mock.assert_called_once_with(amount=2132892.491467577, + stoploss_order_mock.assert_called_once_with(amount=2132892.49146757, pair='NEO/BTC', order_types=freqtrade.strategy.order_types, stop_price=0.00002346 * 0.99) @@ -2577,7 +2577,7 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, mocker) -> N 'pair': 'ETH/BTC', 'gain': 'profit', 'limit': 1.172e-05, - 'amount': 91.07468123861567, + 'amount': 91.07468123, 'order_type': 'limit', 'open_rate': 1.098e-05, 'current_rate': 1.173e-05, @@ -2626,7 +2626,7 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, mocker) 'pair': 'ETH/BTC', 'gain': 'loss', 'limit': 1.044e-05, - 'amount': 91.07468123861567, + 'amount': 91.07468123, 'order_type': 'limit', 'open_rate': 1.098e-05, 'current_rate': 1.043e-05, @@ -2682,7 +2682,7 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe 'pair': 'ETH/BTC', 'gain': 'loss', 'limit': 1.08801e-05, - 'amount': 91.07468123861567, + 'amount': 91.07468123, 'order_type': 'limit', 'open_rate': 1.098e-05, 'current_rate': 1.043e-05, @@ -2887,7 +2887,7 @@ def test_execute_sell_market_order(default_conf, ticker, fee, 'pair': 'ETH/BTC', 'gain': 'profit', 'limit': 1.172e-05, - 'amount': 91.07468123861567, + 'amount': 91.07468123, 'order_type': 'market', 'open_rate': 1.098e-05, 'current_rate': 1.173e-05, From de46744aa9c80437767e86cf77aa95e8c43cddbd Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 15 Jul 2020 21:02:31 +0200 Subject: [PATCH 2788/3421] Use filled before amount for order data closes #3579 --- freqtrade/exchange/exchange.py | 1 - freqtrade/freqtradebot.py | 11 ++++++----- freqtrade/persistence.py | 3 ++- tests/rpc/test_rpc_telegram.py | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 5c4e4c530..e6ea75a63 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1167,7 +1167,6 @@ class Exchange: return (order['fee']['cost'], order['fee']['currency'], self.calculate_fee_rate(order)) - # calculate rate ? (order['fee']['cost'] / (order['amount'] * order['price'])) def is_exchange_bad(exchange_name: str) -> bool: diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5c0de94a1..5da7223c4 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -20,7 +20,7 @@ from freqtrade.edge import Edge from freqtrade.exceptions import (DependencyException, ExchangeError, InvalidOrderException, PricingError) from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date -from freqtrade.misc import safe_value_fallback2 +from freqtrade.misc import safe_value_fallback, safe_value_fallback2 from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver @@ -553,14 +553,14 @@ class FreqtradeBot: order['filled'], order['amount'], order['remaining'] ) stake_amount = order['cost'] - amount = order['amount'] + amount = order['filled'] buy_limit_filled_price = order['price'] order_id = None # in case of FOK the order may be filled immediately and fully elif order_status == 'closed': stake_amount = order['cost'] - amount = order['amount'] + amount = safe_value_fallback(order, 'filled', 'amount') buy_limit_filled_price = order['price'] # Fee is applied twice because we make a LIMIT_BUY and LIMIT_SELL @@ -1249,7 +1249,8 @@ class FreqtradeBot: # Try update amount (binance-fix) try: new_amount = self.get_real_amount(trade, order, order_amount) - if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): + if not isclose(safe_value_fallback(order, 'filled', 'amount'), new_amount, + abs_tol=constants.MATH_CLOSE_PREC): order['amount'] = new_amount order.pop('filled', None) trade.recalc_open_trade_price() @@ -1295,7 +1296,7 @@ class FreqtradeBot: """ # Init variables if order_amount is None: - order_amount = order['amount'] + order_amount = safe_value_fallback(order, 'filled', 'amount') # Only run for closed orders if trade.fee_updated(order.get('side', '')) or order['status'] == 'open': return order_amount diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 245b1c790..7dc533c07 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -17,6 +17,7 @@ from sqlalchemy.orm.session import sessionmaker from sqlalchemy.pool import StaticPool from freqtrade.exceptions import OperationalException +from freqtrade.misc import safe_value_fallback logger = logging.getLogger(__name__) @@ -376,7 +377,7 @@ class Trade(_DECL_BASE): if order_type in ('market', 'limit') and order['side'] == 'buy': # Update open rate and actual amount self.open_rate = Decimal(order['price']) - self.amount = Decimal(order.get('filled', order['amount'])) + self.amount = Decimal(safe_value_fallback(order, 'filled', 'amount')) self.recalc_open_trade_price() logger.info('%s_BUY has been fulfilled for %s.', order_type.upper(), self) self.open_order_id = None diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 669c6dc89..08d4dc7ec 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -691,7 +691,7 @@ def test_reload_config_handle(default_conf, update, mocker) -> None: def test_telegram_forcesell_handle(default_conf, update, ticker, fee, - ticker_sell_up, mocker) -> None: + ticker_sell_up, mocker) -> None: mocker.patch('freqtrade.rpc.rpc.CryptoToFiatConverter._find_price', return_value=15000.0) rpc_mock = mocker.patch('freqtrade.rpc.telegram.Telegram.send_msg', MagicMock()) mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock()) From eaf2b53d591001674a9a9ceb24c9e2cefae00387 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2020 05:10:46 +0000 Subject: [PATCH 2789/3421] Update Dependabot config file --- .dependabot/config.yml | 17 ----------------- .github/dependabot.yml | 13 +++++++++++++ 2 files changed, 13 insertions(+), 17 deletions(-) delete mode 100644 .dependabot/config.yml create mode 100644 .github/dependabot.yml diff --git a/.dependabot/config.yml b/.dependabot/config.yml deleted file mode 100644 index 66b91e99f..000000000 --- a/.dependabot/config.yml +++ /dev/null @@ -1,17 +0,0 @@ -version: 1 - -update_configs: - - package_manager: "python" - directory: "/" - update_schedule: "weekly" - allowed_updates: - - match: - update_type: "all" - target_branch: "develop" - - - package_manager: "docker" - directory: "/" - update_schedule: "daily" - allowed_updates: - - match: - update_type: "all" diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..44ff606b4 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,13 @@ +version: 2 +updates: +- package-ecosystem: docker + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 +- package-ecosystem: pip + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 + target-branch: develop From cd7ba99528576e2961d4e7f38bc47e7c3216c658 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2020 07:23:16 +0000 Subject: [PATCH 2790/3421] Bump ccxt from 1.30.93 to 1.31.37 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.30.93 to 1.31.37. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.30.93...1.31.37) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 1cfc44ab4..d5c5fd832 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.30.93 +ccxt==1.31.37 SQLAlchemy==1.3.18 python-telegram-bot==12.8 arrow==0.15.7 From 49395601e98cc0ba8824f96aab92ed7aebb430d7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 19 Jul 2020 10:02:06 +0200 Subject: [PATCH 2791/3421] Improve informative pair sample --- docs/strategy-customization.md | 47 +++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 50fec79dc..98c71b4b2 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -392,9 +392,9 @@ Imagine you've developed a strategy that trades the `5m` timeframe using signals The strategy might look something like this: -*Scan through the top 10 pairs by volume using the `VolumePairList` every 5 minutes and use a 14 day ATR to buy and sell.* +*Scan through the top 10 pairs by volume using the `VolumePairList` every 5 minutes and use a 14 day RSI to buy and sell.* -Due to the limited available data, it's very difficult to resample our `5m` candles into daily candles for use in a 14 day ATR. Most exchanges limit us to just 500 candles which effectively gives us around 1.74 daily candles. We need 14 days at least! +Due to the limited available data, it's very difficult to resample our `5m` candles into daily candles for use in a 14 day RSI. Most exchanges limit us to just 500 candles which effectively gives us around 1.74 daily candles. We need 14 days at least! Since we can't resample our data we will have to use an informative pair; and since our whitelist will be dynamic we don't know which pair(s) to use. @@ -410,18 +410,49 @@ class SampleStrategy(IStrategy): def informative_pairs(self): - # get access to all pairs available in whitelist. + # get access to all pairs available in whitelist. pairs = self.dp.current_whitelist() # Assign tf to each pair so they can be downloaded and cached for strategy. informative_pairs = [(pair, '1d') for pair in pairs] return informative_pairs - def populate_indicators(self, dataframe, metadata): + def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: + + inf_tf = '1d' # Get the informative pair informative = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe='1d') - # Get the 14 day ATR. - atr = ta.ATR(informative, timeperiod=14) + # Get the 14 day rsi + informative['rsi'] = ta.RSI(informative, timeperiod=14) + + # Rename columns to be unique + informative.columns = [f"{col}_{inf_tf}" for col in informative.columns] + # Assuming inf_tf = '1d' - then the columns will now be: + # date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d + + # Combine the 2 dataframes + # all indicators on the informative sample MUST be calculated before this point + dataframe = pd.merge(dataframe, informative, left_on='date', right_on=f'date_{inf_tf}', how='left') + # FFill to have the 1d value available in every row throughout the day. + # Without this, comparisons would only work once per day. + dataframe = dataframe.ffill() + # Calculate rsi of the original dataframe (5m timeframe) + dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14) + # Do other stuff + # ... + + return dataframe + + def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: + + dataframe.loc[ + ( + (qtpylib.crossed_above(dataframe['rsi'], 30)) & # Signal: RSI crosses above 30 + (dataframe['rsi_1d'] < 30) & # Ensure daily RSI is < 30 + (dataframe['volume'] > 0) # Ensure this candle had volume (important for backtesting) + ), + 'buy'] = 1 + ``` #### *get_pair_dataframe(pair, timeframe)* @@ -460,7 +491,7 @@ if self.dp: !!! Warning "Warning in hyperopt" This option cannot currently be used during hyperopt. - + #### *orderbook(pair, maximum)* ``` python @@ -493,6 +524,7 @@ if self.dp: data returned from the exchange and add appropriate error handling / defaults. *** + ### Additional data (Wallets) The strategy provides access to the `Wallets` object. This contains the current balances on the exchange. @@ -516,6 +548,7 @@ if self.wallets: - `get_total(asset)` - total available balance - sum of the 2 above *** + ### Additional data (Trades) A history of Trades can be retrieved in the strategy by querying the database. From 3271c773a76d93b361a8816d6e3ee39e20468186 Mon Sep 17 00:00:00 2001 From: Alex Pham <20041501+thopd88@users.noreply.github.com> Date: Sun, 19 Jul 2020 21:30:55 +0700 Subject: [PATCH 2792/3421] Fix SQL syntax error when compare pair strings First happens in Postgres --- freqtrade/rpc/rpc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index c73fcbf54..69faff533 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -523,7 +523,7 @@ class RPC: # check if valid pair # check if pair already has an open pair - trade = Trade.get_trades([Trade.is_open.is_(True), Trade.pair.is_(pair)]).first() + trade = Trade.get_trades([Trade.is_open.is_(True), Trade.pair == pair]).first() if trade: raise RPCException(f'position for {pair} already open - id: {trade.id}') @@ -532,7 +532,7 @@ class RPC: # execute buy if self._freqtrade.execute_buy(pair, stakeamount, price): - trade = Trade.get_trades([Trade.is_open.is_(True), Trade.pair.is_(pair)]).first() + trade = Trade.get_trades([Trade.is_open.is_(True), Trade.pair == pair]).first() return trade else: return None From dd3a2675b53c30e9f3ff23e9799d2cfd41352fb0 Mon Sep 17 00:00:00 2001 From: thopd88 <20041501+thopd88@users.noreply.github.com> Date: Sun, 19 Jul 2020 22:02:53 +0700 Subject: [PATCH 2793/3421] Add telegram trades command to list recent trades --- freqtrade/rpc/telegram.py | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 13cc1afaf..72dbd2ea7 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -92,6 +92,7 @@ class Telegram(RPC): CommandHandler('stop', self._stop), CommandHandler('forcesell', self._forcesell), CommandHandler('forcebuy', self._forcebuy), + CommandHandler('trades', self._trades), CommandHandler('performance', self._performance), CommandHandler('daily', self._daily), CommandHandler('count', self._count), @@ -496,6 +497,48 @@ class Telegram(RPC): except RPCException as e: self._send_msg(str(e)) + @authorized_only + def _trades(self, update: Update, context: CallbackContext) -> None: + """ + Handler for /trades + Returns last n recent trades. + :param bot: telegram bot + :param update: message update + :return: None + """ + stake_cur = self._config['stake_currency'] + fiat_disp_cur = self._config.get('fiat_display_currency', '') + try: + nrecent = int(context.args[0]) + except (TypeError, ValueError, IndexError): + nrecent = 10 + try: + trades = self._rpc_trade_history( + nrecent + ) + trades_tab = tabulate( + [[trade['open_date'], + trade['pair'], + f"{trade['open_rate']}", + f"{trade['stake_amount']}", + trade['close_date'], + f"{trade['close_rate']}", + f"{trade['close_profit_abs']}"] for trade in trades['trades']], + headers=[ + 'Open Date', + 'Pair', + 'Open rate', + 'Stake Amount', + 'Close date', + 'Close rate', + 'Profit', + ], + tablefmt='simple') + message = f'{nrecent} recent trades:\n
            {trades_tab}
            ' + self._send_msg(message, parse_mode=ParseMode.HTML) + except RPCException as e: + self._send_msg(str(e)) + @authorized_only def _performance(self, update: Update, context: CallbackContext) -> None: """ From 08fdd7d86331c5a2c55c69c130350a7b21a104e3 Mon Sep 17 00:00:00 2001 From: thopd88 <20041501+thopd88@users.noreply.github.com> Date: Sun, 19 Jul 2020 22:10:59 +0700 Subject: [PATCH 2794/3421] Add telegram /delete command to delete tradeid code inspired from _rpc_forcesell --- freqtrade/rpc/rpc.py | 22 ++++++++++++++++++++++ freqtrade/rpc/telegram.py | 19 +++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index c73fcbf54..2a3feea25 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -537,6 +537,28 @@ class RPC: else: return None + def _rpc_delete(self, trade_id: str) -> Dict[str, str]: + """ + Handler for delete . + Delete the given trade + """ + def _exec_delete(trade: Trade) -> None: + Trade.session.delete(trade) + Trade.session.flush() + + with self._freqtrade._sell_lock: + trade = Trade.get_trades( + trade_filter=[Trade.id == trade_id, ] + ).first() + if not trade: + logger.warning('delete: Invalid argument received') + raise RPCException('invalid argument') + + _exec_delete(trade) + Trade.session.flush() + self._freqtrade.wallets.update() + return {'result': f'Deleted trade {trade_id}.'} + def _rpc_performance(self) -> List[Dict[str, Any]]: """ Handler for performance. diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 72dbd2ea7..474376938 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -93,6 +93,7 @@ class Telegram(RPC): CommandHandler('forcesell', self._forcesell), CommandHandler('forcebuy', self._forcebuy), CommandHandler('trades', self._trades), + CommandHandler('delete', self._delete), CommandHandler('performance', self._performance), CommandHandler('daily', self._daily), CommandHandler('count', self._count), @@ -497,6 +498,24 @@ class Telegram(RPC): except RPCException as e: self._send_msg(str(e)) + @authorized_only + def _delete(self, update: Update, context: CallbackContext) -> None: + """ + Handler for /delete . + Delete the given trade + :param bot: telegram bot + :param update: message update + :return: None + """ + + trade_id = context.args[0] if len(context.args) > 0 else None + try: + msg = self._rpc_delete(trade_id) + self._send_msg('Delete Result: `{result}`'.format(**msg)) + + except RPCException as e: + self._send_msg(str(e)) + @authorized_only def _trades(self, update: Update, context: CallbackContext) -> None: """ From 37a9edfa35a8321ca38d353ab081a17263ea8f68 Mon Sep 17 00:00:00 2001 From: Pan Long Date: Mon, 20 Jul 2020 00:37:06 +0800 Subject: [PATCH 2795/3421] Correct a typo in stop loss doc. --- docs/stoploss.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index ed00c1e33..bf7270dff 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -84,7 +84,7 @@ This option can be used with or without `trailing_stop_positive`, but uses `trai ``` python trailing_stop_positive_offset = 0.011 - trailing_only_offset_is_reached = true + trailing_only_offset_is_reached = True ``` Simplified example: From 28f4a1101e58e38df1fddc22ff573e852a80de33 Mon Sep 17 00:00:00 2001 From: thopd88 <20041501+thopd88@users.noreply.github.com> Date: Mon, 20 Jul 2020 10:54:17 +0700 Subject: [PATCH 2796/3421] Revert "Add telegram /delete command to delete tradeid" This reverts commit 08fdd7d86331c5a2c55c69c130350a7b21a104e3. --- freqtrade/rpc/rpc.py | 22 ---------------------- freqtrade/rpc/telegram.py | 19 ------------------- 2 files changed, 41 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 2a3feea25..c73fcbf54 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -537,28 +537,6 @@ class RPC: else: return None - def _rpc_delete(self, trade_id: str) -> Dict[str, str]: - """ - Handler for delete . - Delete the given trade - """ - def _exec_delete(trade: Trade) -> None: - Trade.session.delete(trade) - Trade.session.flush() - - with self._freqtrade._sell_lock: - trade = Trade.get_trades( - trade_filter=[Trade.id == trade_id, ] - ).first() - if not trade: - logger.warning('delete: Invalid argument received') - raise RPCException('invalid argument') - - _exec_delete(trade) - Trade.session.flush() - self._freqtrade.wallets.update() - return {'result': f'Deleted trade {trade_id}.'} - def _rpc_performance(self) -> List[Dict[str, Any]]: """ Handler for performance. diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 474376938..72dbd2ea7 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -93,7 +93,6 @@ class Telegram(RPC): CommandHandler('forcesell', self._forcesell), CommandHandler('forcebuy', self._forcebuy), CommandHandler('trades', self._trades), - CommandHandler('delete', self._delete), CommandHandler('performance', self._performance), CommandHandler('daily', self._daily), CommandHandler('count', self._count), @@ -498,24 +497,6 @@ class Telegram(RPC): except RPCException as e: self._send_msg(str(e)) - @authorized_only - def _delete(self, update: Update, context: CallbackContext) -> None: - """ - Handler for /delete . - Delete the given trade - :param bot: telegram bot - :param update: message update - :return: None - """ - - trade_id = context.args[0] if len(context.args) > 0 else None - try: - msg = self._rpc_delete(trade_id) - self._send_msg('Delete Result: `{result}`'.format(**msg)) - - except RPCException as e: - self._send_msg(str(e)) - @authorized_only def _trades(self, update: Update, context: CallbackContext) -> None: """ From eaa7370174e1b5188192e99bb205f2f03e8063b0 Mon Sep 17 00:00:00 2001 From: thopd88 <20041501+thopd88@users.noreply.github.com> Date: Mon, 20 Jul 2020 11:08:18 +0700 Subject: [PATCH 2797/3421] add /delete command --- freqtrade/rpc/rpc.py | 22 ++++++++++++++++++++++ freqtrade/rpc/telegram.py | 20 ++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index c73fcbf54..b76259ad2 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -536,6 +536,28 @@ class RPC: return trade else: return None + + def _rpc_delete(self, trade_id: str) -> Dict[str, str]: + """ + Handler for delete . + Delete the given trade + """ + def _exec_delete(trade: Trade) -> None: + Trade.session.delete(trade) + Trade.session.flush() + + with self._freqtrade._sell_lock: + trade = Trade.get_trades( + trade_filter=[Trade.id == trade_id, ] + ).first() + if not trade: + logger.warning('delete: Invalid argument received') + raise RPCException('invalid argument') + + _exec_delete(trade) + Trade.session.flush() + self._freqtrade.wallets.update() + return {'result': f'Deleted trade {trade_id}.'} def _rpc_performance(self) -> List[Dict[str, Any]]: """ diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 13cc1afaf..7d006c4e5 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -92,6 +92,7 @@ class Telegram(RPC): CommandHandler('stop', self._stop), CommandHandler('forcesell', self._forcesell), CommandHandler('forcebuy', self._forcebuy), + CommandHandler('delete', self._delete), CommandHandler('performance', self._performance), CommandHandler('daily', self._daily), CommandHandler('count', self._count), @@ -496,6 +497,24 @@ class Telegram(RPC): except RPCException as e: self._send_msg(str(e)) + @authorized_only + def _delete(self, update: Update, context: CallbackContext) -> None: + """ + Handler for /delete . + Delete the given trade + :param bot: telegram bot + :param update: message update + :return: None + """ + + trade_id = context.args[0] if len(context.args) > 0 else None + try: + msg = self._rpc_delete(trade_id) + self._send_msg('Delete Result: `{result}`'.format(**msg)) + + except RPCException as e: + self._send_msg(str(e)) + @authorized_only def _performance(self, update: Update, context: CallbackContext) -> None: """ @@ -613,6 +632,7 @@ class Telegram(RPC): "*/forcesell |all:* `Instantly sells the given trade or all trades, " "regardless of profit`\n" f"{forcebuy_text if self._config.get('forcebuy_enable', False) else ''}" + "*/delete :* `Instantly delete the given trade in the database`\n" "*/performance:* `Show performance of each finished trade grouped by pair`\n" "*/daily :* `Shows profit or loss per day, over the last n days`\n" "*/count:* `Show number of trades running compared to allowed number of trades`" From 811028ae926c47ee60e1904da2a3468e2c753bdd Mon Sep 17 00:00:00 2001 From: gautier pialat Date: Mon, 20 Jul 2020 07:17:34 +0200 Subject: [PATCH 2798/3421] missing coma in sql request --- docs/sql_cheatsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sql_cheatsheet.md b/docs/sql_cheatsheet.md index f4cb473ff..748b16928 100644 --- a/docs/sql_cheatsheet.md +++ b/docs/sql_cheatsheet.md @@ -123,7 +123,7 @@ SET is_open=0, close_date='2020-06-20 03:08:45.103418', close_rate=0.19638016, close_profit=0.0496, - close_profit_abs = (amount * 0.19638016 * (1 - fee_close) - (amount * open_rate * (1 - fee_open))) + close_profit_abs = (amount * 0.19638016 * (1 - fee_close) - (amount * open_rate * (1 - fee_open))), sell_reason='force_sell' WHERE id=31; ``` From 4c97527b041234d6865d24fb490963b1c17b88ea Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 20 Jul 2020 19:11:15 +0200 Subject: [PATCH 2799/3421] FIx failing test --- freqtrade/rpc/telegram.py | 2 -- tests/rpc/test_rpc_telegram.py | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 72dbd2ea7..343b26072 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -506,8 +506,6 @@ class Telegram(RPC): :param update: message update :return: None """ - stake_cur = self._config['stake_currency'] - fiat_disp_cur = self._config.get('fiat_display_currency', '') try: nrecent = int(context.args[0]) except (TypeError, ValueError, IndexError): diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 0a4352f5b..1ea211584 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -60,7 +60,7 @@ def test__init__(default_conf, mocker) -> None: assert telegram._config == default_conf -def test_init(default_conf, mocker, caplog) -> None: +def test_telegram_init(default_conf, mocker, caplog) -> None: start_polling = MagicMock() mocker.patch('freqtrade.rpc.telegram.Updater', MagicMock(return_value=start_polling)) @@ -72,7 +72,7 @@ def test_init(default_conf, mocker, caplog) -> None: assert start_polling.start_polling.call_count == 1 message_str = ("rpc.telegram is listening for following commands: [['status'], ['profit'], " - "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], " + "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], ['trades'], " "['performance'], ['daily'], ['count'], ['reload_config', 'reload_conf'], " "['show_config', 'show_conf'], ['stopbuy'], ['whitelist'], ['blacklist'], " "['edge'], ['help'], ['version']]") From 47748961697994c82fa30b8b825699382ae0d446 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 20 Jul 2020 19:39:12 +0200 Subject: [PATCH 2800/3421] Evaluate average before price in order returns --- freqtrade/exchange/exchange.py | 1 + freqtrade/freqtradebot.py | 4 ++-- freqtrade/persistence.py | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index e6ea75a63..9858eb518 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -475,6 +475,7 @@ class Exchange: "id": order_id, 'pair': pair, 'price': rate, + 'average': rate, 'amount': _amount, 'cost': _amount * rate, 'type': ordertype, diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5da7223c4..8c5b5b460 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -554,14 +554,14 @@ class FreqtradeBot: ) stake_amount = order['cost'] amount = order['filled'] - buy_limit_filled_price = order['price'] + buy_limit_filled_price = safe_value_fallback(order, 'average', 'price') order_id = None # in case of FOK the order may be filled immediately and fully elif order_status == 'closed': stake_amount = order['cost'] amount = safe_value_fallback(order, 'filled', 'amount') - buy_limit_filled_price = order['price'] + buy_limit_filled_price = safe_value_fallback(order, 'average', 'price') # Fee is applied twice because we make a LIMIT_BUY and LIMIT_SELL fee = self.exchange.get_fee(symbol=pair, taker_or_maker='maker') diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 7dc533c07..fdb816eab 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -369,20 +369,20 @@ class Trade(_DECL_BASE): """ order_type = order['type'] # Ignore open and cancelled orders - if order['status'] == 'open' or order['price'] is None: + if order['status'] == 'open' or safe_value_fallback(order, 'average', 'price') is None: return logger.info('Updating trade (id=%s) ...', self.id) if order_type in ('market', 'limit') and order['side'] == 'buy': # Update open rate and actual amount - self.open_rate = Decimal(order['price']) + self.open_rate = Decimal(safe_value_fallback(order, 'average', 'price')) self.amount = Decimal(safe_value_fallback(order, 'filled', 'amount')) self.recalc_open_trade_price() logger.info('%s_BUY has been fulfilled for %s.', order_type.upper(), self) self.open_order_id = None elif order_type in ('market', 'limit') and order['side'] == 'sell': - self.close(order['price']) + self.close(safe_value_fallback(order, 'average', 'price')) logger.info('%s_SELL has been fulfilled for %s.', order_type.upper(), self) elif order_type in ('stop_loss_limit', 'stop-loss', 'stop'): self.stoploss_order_id = None From 21dcef113431e4b42be7acc33d6353f1db33d96e Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 20 Jul 2020 19:50:29 +0200 Subject: [PATCH 2801/3421] Add trade_id to webhooks allowing for easier corelation of different messages --- docs/webhook-config.md | 4 ++++ freqtrade/freqtradebot.py | 4 ++++ tests/rpc/test_rpc_telegram.py | 3 +++ tests/test_freqtradebot.py | 4 ++++ 4 files changed, 15 insertions(+) diff --git a/docs/webhook-config.md b/docs/webhook-config.md index 70a41dd46..db6d4d1ef 100644 --- a/docs/webhook-config.md +++ b/docs/webhook-config.md @@ -47,6 +47,7 @@ Different payloads can be configured for different events. Not all fields are ne The fields in `webhook.webhookbuy` are filled when the bot executes a buy. Parameters are filled using string.format. Possible parameters are: +* `trade_id` * `exchange` * `pair` * `limit` @@ -63,6 +64,7 @@ Possible parameters are: The fields in `webhook.webhookbuycancel` are filled when the bot cancels a buy order. Parameters are filled using string.format. Possible parameters are: +* `trade_id` * `exchange` * `pair` * `limit` @@ -79,6 +81,7 @@ Possible parameters are: The fields in `webhook.webhooksell` are filled when the bot sells a trade. Parameters are filled using string.format. Possible parameters are: +* `trade_id` * `exchange` * `pair` * `gain` @@ -100,6 +103,7 @@ Possible parameters are: The fields in `webhook.webhooksellcancel` are filled when the bot cancels a sell order. Parameters are filled using string.format. Possible parameters are: +* `trade_id` * `exchange` * `pair` * `gain` diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 38afe3230..a6d96ef77 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -598,6 +598,7 @@ class FreqtradeBot: Sends rpc notification when a buy occured. """ msg = { + 'trade_id': trade.id, 'type': RPCMessageType.BUY_NOTIFICATION, 'exchange': self.exchange.name.capitalize(), 'pair': trade.pair, @@ -621,6 +622,7 @@ class FreqtradeBot: current_rate = self.get_buy_rate(trade.pair, False) msg = { + 'trade_id': trade.id, 'type': RPCMessageType.BUY_CANCEL_NOTIFICATION, 'exchange': self.exchange.name.capitalize(), 'pair': trade.pair, @@ -1149,6 +1151,7 @@ class FreqtradeBot: msg = { 'type': RPCMessageType.SELL_NOTIFICATION, + 'trade_id': trade.id, 'exchange': trade.exchange.capitalize(), 'pair': trade.pair, 'gain': gain, @@ -1191,6 +1194,7 @@ class FreqtradeBot: msg = { 'type': RPCMessageType.SELL_CANCEL_NOTIFICATION, + 'trade_id': trade.id, 'exchange': trade.exchange.capitalize(), 'pair': trade.pair, 'gain': gain, diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 0a4352f5b..631817624 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -725,6 +725,7 @@ def test_forcesell_handle(default_conf, update, ticker, fee, last_msg = rpc_mock.call_args_list[-1][0][0] assert { 'type': RPCMessageType.SELL_NOTIFICATION, + 'trade_id': 1, 'exchange': 'Bittrex', 'pair': 'ETH/BTC', 'gain': 'profit', @@ -784,6 +785,7 @@ def test_forcesell_down_handle(default_conf, update, ticker, fee, last_msg = rpc_mock.call_args_list[-1][0][0] assert { 'type': RPCMessageType.SELL_NOTIFICATION, + 'trade_id': 1, 'exchange': 'Bittrex', 'pair': 'ETH/BTC', 'gain': 'loss', @@ -832,6 +834,7 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None msg = rpc_mock.call_args_list[0][0][0] assert { 'type': RPCMessageType.SELL_NOTIFICATION, + 'trade_id': 1, 'exchange': 'Bittrex', 'pair': 'ETH/BTC', 'gain': 'loss', diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index ada0d87fd..c7089abfe 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2572,6 +2572,7 @@ def test_execute_sell_up(default_conf, ticker, fee, ticker_sell_up, mocker) -> N assert rpc_mock.call_count == 1 last_msg = rpc_mock.call_args_list[-1][0][0] assert { + 'trade_id': 1, 'type': RPCMessageType.SELL_NOTIFICATION, 'exchange': 'Bittrex', 'pair': 'ETH/BTC', @@ -2622,6 +2623,7 @@ def test_execute_sell_down(default_conf, ticker, fee, ticker_sell_down, mocker) last_msg = rpc_mock.call_args_list[-1][0][0] assert { 'type': RPCMessageType.SELL_NOTIFICATION, + 'trade_id': 1, 'exchange': 'Bittrex', 'pair': 'ETH/BTC', 'gain': 'loss', @@ -2678,6 +2680,7 @@ def test_execute_sell_down_stoploss_on_exchange_dry_run(default_conf, ticker, fe assert { 'type': RPCMessageType.SELL_NOTIFICATION, + 'trade_id': 1, 'exchange': 'Bittrex', 'pair': 'ETH/BTC', 'gain': 'loss', @@ -2883,6 +2886,7 @@ def test_execute_sell_market_order(default_conf, ticker, fee, last_msg = rpc_mock.call_args_list[-1][0][0] assert { 'type': RPCMessageType.SELL_NOTIFICATION, + 'trade_id': 1, 'exchange': 'Bittrex', 'pair': 'ETH/BTC', 'gain': 'profit', From 7d6708fc6a3fa56381f72882ab09a330e207f792 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 20 Jul 2020 20:03:03 +0200 Subject: [PATCH 2802/3421] Reduce severity of hyperopt "does not provide" messages closes #3371 --- freqtrade/resolvers/hyperopt_resolver.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 633363134..abbfee6ed 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -42,14 +42,14 @@ class HyperOptResolver(IResolver): extra_dir=config.get('hyperopt_path')) if not hasattr(hyperopt, 'populate_indicators'): - logger.warning("Hyperopt class does not provide populate_indicators() method. " - "Using populate_indicators from the strategy.") + logger.info("Hyperopt class does not provide populate_indicators() method. " + "Using populate_indicators from the strategy.") if not hasattr(hyperopt, 'populate_buy_trend'): - logger.warning("Hyperopt class does not provide populate_buy_trend() method. " - "Using populate_buy_trend from the strategy.") + logger.info("Hyperopt class does not provide populate_buy_trend() method. " + "Using populate_buy_trend from the strategy.") if not hasattr(hyperopt, 'populate_sell_trend'): - logger.warning("Hyperopt class does not provide populate_sell_trend() method. " - "Using populate_sell_trend from the strategy.") + logger.info("Hyperopt class does not provide populate_sell_trend() method. " + "Using populate_sell_trend from the strategy.") return hyperopt From 939f91734f2723a72f6545feef2edfef8beaa9c4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 21 Jul 2020 20:34:19 +0200 Subject: [PATCH 2803/3421] Test confirming 0 division ... --- tests/conftest.py | 52 +++++++++++++++++++++++++++++++-- tests/pairlist/test_pairlist.py | 9 ++++-- 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 43dc8ca78..e2bdf7da5 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -661,7 +661,8 @@ def shitcoinmarkets(markets): Fixture with shitcoin markets - used to test filters in pairlists """ shitmarkets = deepcopy(markets) - shitmarkets.update({'HOT/BTC': { + shitmarkets.update({ + 'HOT/BTC': { 'id': 'HOTBTC', 'symbol': 'HOT/BTC', 'base': 'HOT', @@ -766,7 +767,32 @@ def shitcoinmarkets(markets): "spot": True, "future": False, "active": True - }, + }, + 'ADADOUBLE/USDT': { + "percentage": True, + "tierBased": False, + "taker": 0.001, + "maker": 0.001, + "precision": { + "base": 8, + "quote": 8, + "amount": 2, + "price": 4 + }, + "limits": { + }, + "id": "ADADOUBLEUSDT", + "symbol": "ADADOUBLE/USDT", + "base": "ADADOUBLE", + "quote": "USDT", + "baseId": "ADADOUBLE", + "quoteId": "USDT", + "info": {}, + "type": "spot", + "spot": True, + "future": False, + "active": True + }, }) return shitmarkets @@ -1388,6 +1414,28 @@ def tickers(): "quoteVolume": 0.0, "info": {} }, + "ADADOUBLE/USDT": { + "symbol": "ADADOUBLE/USDT", + "timestamp": 1580469388244, + "datetime": "2020-01-31T11:16:28.244Z", + "high": None, + "low": None, + "bid": 0.7305, + "bidVolume": None, + "ask": 0.7342, + "askVolume": None, + "vwap": None, + "open": None, + "close": None, + "last": 0, + "previousClose": None, + "change": None, + "percentage": 2.628, + "average": None, + "baseVolume": 0.0, + "quoteVolume": 0.0, + "info": {} + }, }) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index e23102162..efe4a784b 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -235,7 +235,7 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], "BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], - "USDT", ['ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT']), + "USDT", ['ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT', 'ADADOUBLE/USDT']), # No pair for ETH, VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], "ETH", []), @@ -303,11 +303,11 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): # ShuffleFilter ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "ShuffleFilter", "seed": 77}], - "USDT", ['ETH/USDT', 'ADAHALF/USDT', 'NANO/USDT']), + "USDT", ['ADADOUBLE/USDT', 'ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT']), # ShuffleFilter, other seed ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "ShuffleFilter", "seed": 42}], - "USDT", ['NANO/USDT', 'ETH/USDT', 'ADAHALF/USDT']), + "USDT", ['ADAHALF/USDT', 'NANO/USDT', 'ADADOUBLE/USDT', 'ETH/USDT']), # ShuffleFilter, no seed ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "ShuffleFilter"}], @@ -347,6 +347,9 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}, {"method": "StaticPairList"}], "BTC", 'static_in_the_middle'), + ([{"method": "VolumePairList", "number_assets": 20, "sort_key": "quoteVolume"}, + {"method": "PriceFilter", "low_price_ratio": 0.02}], + "USDT", ['ETH/USDT', 'NANO/USDT']), ]) def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, ohlcv_history_list, pairlists, base_currency, From 6a10c715fae72a466afb040dae8e1a55334c38f8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 21 Jul 2020 20:34:29 +0200 Subject: [PATCH 2804/3421] Fix 0 division (if last = 0, something went wrong!) --- freqtrade/pairlist/PriceFilter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index 5ee1df078..b3b2f43dc 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -56,7 +56,7 @@ class PriceFilter(IPairList): :param ticker: ticker dict as returned from ccxt.load_markets() :return: True if the pair can stay, false if it should be removed """ - if ticker['last'] is None: + if ticker['last'] is None or ticker['last'] == 0: self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, because " "ticker['last'] is empty (Usually no trade in the last 24h).") From 2a5f8d889588e258191bc67f524d3b72d6a47d66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2020 06:22:45 +0000 Subject: [PATCH 2805/3421] Bump python from 3.8.4-slim-buster to 3.8.5-slim-buster Bumps python from 3.8.4-slim-buster to 3.8.5-slim-buster. Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f27167cc5..e1220e3b8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8.4-slim-buster +FROM python:3.8.5-slim-buster RUN apt-get update \ && apt-get -y install curl build-essential libssl-dev sqlite3 \ From f5f529cacedd2fe9cb2807b1e6ce4b0b520158f2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 22 Jul 2020 15:15:50 +0200 Subject: [PATCH 2806/3421] Use correct initialization of DataProvider --- freqtrade/plot/plotting.py | 8 +++++--- tests/test_plotting.py | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index db83448c0..a933c6a76 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -10,12 +10,13 @@ from freqtrade.data.btanalysis import (calculate_max_drawdown, create_cum_profit, extract_trades_of_period, load_trades) from freqtrade.data.converter import trim_dataframe +from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import load_data from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_prev_date from freqtrade.misc import pair_to_filename -from freqtrade.resolvers import StrategyResolver -from freqtrade.data.dataprovider import DataProvider +from freqtrade.resolvers import ExchangeResolver, StrategyResolver +from freqtrade.strategy import IStrategy logger = logging.getLogger(__name__) @@ -468,6 +469,8 @@ def load_and_plot_trades(config: Dict[str, Any]): """ strategy = StrategyResolver.load_strategy(config) + exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config) + IStrategy.dp = DataProvider(config, exchange) plot_elements = init_plotscript(config) trades = plot_elements['trades'] pair_counter = 0 @@ -475,7 +478,6 @@ def load_and_plot_trades(config: Dict[str, Any]): pair_counter += 1 logger.info("analyse pair %s", pair) - strategy.dp = DataProvider(config, config["exchange"]) df_analyzed = strategy.analyze_ticker(data, {'pair': pair}) trades_pair = trades.loc[trades['pair'] == pair] trades_pair = extract_trades_of_period(df_analyzed, trades_pair) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 05805eb24..8f4512c4b 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -21,7 +21,7 @@ from freqtrade.plot.plotting import (add_indicators, add_profit, load_and_plot_trades, plot_profit, plot_trades, store_plot_file) from freqtrade.resolvers import StrategyResolver -from tests.conftest import get_args, log_has, log_has_re +from tests.conftest import get_args, log_has, log_has_re, patch_exchange def fig_generating_mock(fig, *args, **kwargs): @@ -316,6 +316,8 @@ def test_start_plot_dataframe(mocker): def test_load_and_plot_trades(default_conf, mocker, caplog, testdatadir): + patch_exchange(mocker) + default_conf['trade_source'] = 'file' default_conf["datadir"] = testdatadir default_conf['exportfilename'] = testdatadir / "backtest-result_test.json" From f6bde8bd9cbad8a50b75d5c26c16011b3d5448d0 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 22 Jul 2020 21:43:15 +0300 Subject: [PATCH 2807/3421] Improve exception message wordings --- freqtrade/pairlist/AgeFilter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/pairlist/AgeFilter.py b/freqtrade/pairlist/AgeFilter.py index 7b6b126c3..d199154ba 100644 --- a/freqtrade/pairlist/AgeFilter.py +++ b/freqtrade/pairlist/AgeFilter.py @@ -26,9 +26,9 @@ class AgeFilter(IPairList): self._min_days_listed = pairlistconfig.get('min_days_listed', 10) if self._min_days_listed < 1: - raise OperationalException("AgeFilter requires min_days_listed must be >= 1") + raise OperationalException("AgeFilter requires min_days_listed be >= 1") if self._min_days_listed > exchange.ohlcv_candle_limit: - raise OperationalException("AgeFilter requires min_days_listed must not exceed " + raise OperationalException("AgeFilter requires min_days_listed be not exceeding " "exchange max request size " f"({exchange.ohlcv_candle_limit})") self._enabled = self._min_days_listed >= 1 From 5213abf510de8a3b43b671c9cfab65a6f81896b1 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 22 Jul 2020 21:44:39 +0300 Subject: [PATCH 2808/3421] AgeFilter is always enabled --- freqtrade/pairlist/AgeFilter.py | 1 - 1 file changed, 1 deletion(-) diff --git a/freqtrade/pairlist/AgeFilter.py b/freqtrade/pairlist/AgeFilter.py index d199154ba..56e56ceeb 100644 --- a/freqtrade/pairlist/AgeFilter.py +++ b/freqtrade/pairlist/AgeFilter.py @@ -31,7 +31,6 @@ class AgeFilter(IPairList): raise OperationalException("AgeFilter requires min_days_listed be not exceeding " "exchange max request size " f"({exchange.ohlcv_candle_limit})") - self._enabled = self._min_days_listed >= 1 @property def needstickers(self) -> bool: From daee414d7a83e15123e025d4c6107ad0435f9d0f Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 22 Jul 2020 21:51:25 +0300 Subject: [PATCH 2809/3421] Fix docs formatting --- docs/configuration.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/configuration.md b/docs/configuration.md index a200d6411..0e3d23927 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -663,6 +663,7 @@ Filters low-value coins which would not allow setting stoplosses. #### PriceFilter The `PriceFilter` allows filtering of pairs by price. Currently the following price filters are supported: + * `min_price` * `max_price` * `low_price_ratio` From a1e292f56a068a2183aa59e59036bb5ce8abe0c5 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 22 Jul 2020 22:09:30 +0300 Subject: [PATCH 2810/3421] Improve docs --- docs/configuration.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 0e3d23927..f39a3c62d 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -669,19 +669,21 @@ The `PriceFilter` allows filtering of pairs by price. Currently the following pr * `low_price_ratio` The `min_price` setting removes pairs where the price is below the specified price. This is useful if you wish to avoid trading very low-priced pairs. -This option is disabled by default, and will only apply if set to <> 0. +This option is disabled by default (or set to 0), and will only apply if set to > 0. The `max_price` setting removes pairs where the price is above the specified price. This is useful if you wish to trade only low-priced pairs. -This option is disabled by default, and will only apply if set to <> 0. +This option is disabled by default (or set to 0), and will only apply if set to > 0. The `low_price_ratio` setting removes pairs where a raise of 1 price unit (pip) is above the `low_price_ratio` ratio. -This option is disabled by default, and will only apply if set to <> 0. +This option is disabled by default (or set to 0), and will only apply if set to > 0. + +For `PriceFiler` at least one of its `min_price`, `max_price` or `low_price_ratio` settings must be applied. Calculation example: -Min price precision is 8 decimals. If price is 0.00000011 - one step would be 0.00000012 - which is almost 10% higher than the previous value. +Min price precision for SHITCOIN/BTC is 8 decimals. If its price is 0.00000011 - one price step above would be 0.00000012, which is ~9% higher than the previous price value. You may filter out this pair by using PriceFilter with `low_price_ratio` set to 0.09 (9%) or with `min_price` set to 0.00000011, correspondingly. -These pairs are dangerous since it may be impossible to place the desired stoploss - and often result in high losses. +Low priced pairs are dangerous since they are often illiquid and it may also be impossible to place the desired stoploss, which can often result in high losses. Consider using PriceFilter with `low_price_ratio` set to a value which is less than the absolute value of your stoploss (for example, if your stoploss is -5% (-0.05), then the value for `low_price_ratio` can be 0.04 or even 0.02). #### ShuffleFilter From c78199d3d9fdd3c2a040a0fb476c053d60b6d7a1 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 22 Jul 2020 22:21:30 +0300 Subject: [PATCH 2811/3421] Add checks for parameters of PriceFilter --- freqtrade/pairlist/PriceFilter.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index b3b2f43dc..ae3ab9230 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -4,6 +4,7 @@ Price pair list filter import logging from typing import Any, Dict +from freqtrade.exceptions import OperationalException from freqtrade.pairlist.IPairList import IPairList @@ -18,11 +19,17 @@ class PriceFilter(IPairList): super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) self._low_price_ratio = pairlistconfig.get('low_price_ratio', 0) + if self._low_price_ratio < 0: + raise OperationalException("PriceFilter requires low_price_ratio be >= 0") self._min_price = pairlistconfig.get('min_price', 0) + if self._min_price < 0: + raise OperationalException("PriceFilter requires min_price be >= 0") self._max_price = pairlistconfig.get('max_price', 0) - self._enabled = ((self._low_price_ratio != 0) or - (self._min_price != 0) or - (self._max_price != 0)) + if self._max_price < 0: + raise OperationalException("PriceFilter requires max_price be >= 0") + self._enabled = ((self._low_price_ratio > 0) or + (self._min_price > 0) or + (self._max_price > 0)) @property def needstickers(self) -> bool: From 5c2481082ef11633c56bd5d631550b746b18d271 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 22 Jul 2020 22:46:30 +0300 Subject: [PATCH 2812/3421] Add tests for PriceFilter --- tests/pairlist/test_pairlist.py | 56 +++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index efe4a784b..5a9472ef9 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -590,34 +590,58 @@ def test_agefilter_caching(mocker, markets, whitelist_conf_3, tickers, ohlcv_his assert freqtrade.exchange.get_historic_ohlcv.call_count == previous_call_count -@pytest.mark.parametrize("pairlistconfig,expected", [ +@pytest.mark.parametrize("pairlistconfig,desc_expected,exception_expected", [ ({"method": "PriceFilter", "low_price_ratio": 0.001, "min_price": 0.00000010, - "max_price": 1.0}, "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below " - "0.1% or below 0.00000010 or above 1.00000000.'}]" - ), + "max_price": 1.0}, + "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below " + "0.1% or below 0.00000010 or above 1.00000000.'}]", + None + ), ({"method": "PriceFilter", "low_price_ratio": 0.001, "min_price": 0.00000010}, - "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below 0.1% or below 0.00000010.'}]" - ), + "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below 0.1% or below 0.00000010.'}]", + None + ), ({"method": "PriceFilter", "low_price_ratio": 0.001, "max_price": 1.00010000}, - "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below 0.1% or above 1.00010000.'}]" - ), + "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below 0.1% or above 1.00010000.'}]", + None + ), ({"method": "PriceFilter", "min_price": 0.00002000}, - "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below 0.00002000.'}]" - ), + "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below 0.00002000.'}]", + None + ), ({"method": "PriceFilter"}, - "[{'PriceFilter': 'PriceFilter - No price filters configured.'}]" - ), + "[{'PriceFilter': 'PriceFilter - No price filters configured.'}]", + None + ), + ({"method": "PriceFilter", "low_price_ratio": -0.001}, + None, + "PriceFilter requires low_price_ratio be >= 0" + ), # OperationalException expected + ({"method": "PriceFilter", "min_price": -0.00000010}, + None, + "PriceFilter requires min_price be >= 0" + ), # OperationalException expected + ({"method": "PriceFilter", "max_price": -1.00010000}, + None, + "PriceFilter requires max_price be >= 0" + ), # OperationalException expected ]) -def test_pricefilter_desc(mocker, whitelist_conf, markets, pairlistconfig, expected): +def test_pricefilter_desc(mocker, whitelist_conf, markets, pairlistconfig, + desc_expected, exception_expected): mocker.patch.multiple('freqtrade.exchange.Exchange', markets=PropertyMock(return_value=markets), exchange_has=MagicMock(return_value=True) ) whitelist_conf['pairlists'] = [pairlistconfig] - freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) - short_desc = str(freqtrade.pairlists.short_desc()) - assert short_desc == expected + if desc_expected is not None: + freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) + short_desc = str(freqtrade.pairlists.short_desc()) + assert short_desc == desc_expected + else: # # OperationalException expected + with pytest.raises(OperationalException, + match=exception_expected): + freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) def test_pairlistmanager_no_pairlist(mocker, markets, whitelist_conf, caplog): From 50767cd5694a79a4ac10ccba28f677470eb16725 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 22 Jul 2020 22:48:29 +0300 Subject: [PATCH 2813/3421] Adjust tests for AgeFilter --- tests/pairlist/test_pairlist.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 5a9472ef9..27b13bf69 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -547,7 +547,7 @@ def test_agefilter_min_days_listed_too_small(mocker, default_conf, markets, tick ) with pytest.raises(OperationalException, - match=r'AgeFilter requires min_days_listed must be >= 1'): + match=r'AgeFilter requires min_days_listed be >= 1'): get_patched_freqtradebot(mocker, default_conf) @@ -562,7 +562,7 @@ def test_agefilter_min_days_listed_too_large(mocker, default_conf, markets, tick ) with pytest.raises(OperationalException, - match=r'AgeFilter requires min_days_listed must not exceed ' + match=r'AgeFilter requires min_days_listed be not exceeding ' r'exchange max request size \([0-9]+\)'): get_patched_freqtradebot(mocker, default_conf) From f48250b4142acbe91c43e18f246b9f5889263095 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Wed, 22 Jul 2020 22:56:24 +0300 Subject: [PATCH 2814/3421] Make flake happy --- tests/pairlist/test_pairlist.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 27b13bf69..c235367be 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -596,35 +596,35 @@ def test_agefilter_caching(mocker, markets, whitelist_conf_3, tickers, ohlcv_his "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below " "0.1% or below 0.00000010 or above 1.00000000.'}]", None - ), + ), ({"method": "PriceFilter", "low_price_ratio": 0.001, "min_price": 0.00000010}, "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below 0.1% or below 0.00000010.'}]", None - ), + ), ({"method": "PriceFilter", "low_price_ratio": 0.001, "max_price": 1.00010000}, "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below 0.1% or above 1.00010000.'}]", None - ), + ), ({"method": "PriceFilter", "min_price": 0.00002000}, "[{'PriceFilter': 'PriceFilter - Filtering pairs priced below 0.00002000.'}]", None - ), + ), ({"method": "PriceFilter"}, "[{'PriceFilter': 'PriceFilter - No price filters configured.'}]", None - ), + ), ({"method": "PriceFilter", "low_price_ratio": -0.001}, None, "PriceFilter requires low_price_ratio be >= 0" - ), # OperationalException expected + ), # OperationalException expected ({"method": "PriceFilter", "min_price": -0.00000010}, None, "PriceFilter requires min_price be >= 0" - ), # OperationalException expected + ), # OperationalException expected ({"method": "PriceFilter", "max_price": -1.00010000}, None, "PriceFilter requires max_price be >= 0" - ), # OperationalException expected + ), # OperationalException expected ]) def test_pricefilter_desc(mocker, whitelist_conf, markets, pairlistconfig, desc_expected, exception_expected): @@ -638,7 +638,7 @@ def test_pricefilter_desc(mocker, whitelist_conf, markets, pairlistconfig, freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) short_desc = str(freqtrade.pairlists.short_desc()) assert short_desc == desc_expected - else: # # OperationalException expected + else: # OperationalException expected with pytest.raises(OperationalException, match=exception_expected): freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) From 0502fe0496382e6cc2a04161ad3a15f4f9f40e26 Mon Sep 17 00:00:00 2001 From: thopd88 <20041501+thopd88@users.noreply.github.com> Date: Thu, 23 Jul 2020 09:36:05 +0700 Subject: [PATCH 2815/3421] New /trades 3 columns and exclude open trades --- freqtrade/rpc/telegram.py | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 343b26072..87a0cdd62 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -5,6 +5,7 @@ This module manage Telegram communication """ import json import logging +import arrow from typing import Any, Callable, Dict from tabulate import tabulate @@ -506,6 +507,7 @@ class Telegram(RPC): :param update: message update :return: None """ + stake_cur = self._config['stake_currency'] try: nrecent = int(context.args[0]) except (TypeError, ValueError, IndexError): @@ -515,21 +517,13 @@ class Telegram(RPC): nrecent ) trades_tab = tabulate( - [[trade['open_date'], + [[arrow.get(trade['open_date']).humanize(), trade['pair'], - f"{trade['open_rate']}", - f"{trade['stake_amount']}", - trade['close_date'], - f"{trade['close_rate']}", - f"{trade['close_profit_abs']}"] for trade in trades['trades']], + f"{(100 * trade['close_profit']):.2f}% ({trade['close_profit_abs']})"] for trade in trades['trades'] if trade['close_profit'] is not None], headers=[ 'Open Date', 'Pair', - 'Open rate', - 'Stake Amount', - 'Close date', - 'Close rate', - 'Profit', + f'Profit ({stake_cur})', ], tablefmt='simple') message = f'{nrecent} recent trades:\n
            {trades_tab}
            ' From a3daf8e41c209e061a3e50f1b5fcba3802bf6421 Mon Sep 17 00:00:00 2001 From: thopd88 <20041501+thopd88@users.noreply.github.com> Date: Thu, 23 Jul 2020 09:47:53 +0700 Subject: [PATCH 2816/3421] Fix line too long --- freqtrade/rpc/telegram.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 87a0cdd62..943d092db 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -519,7 +519,8 @@ class Telegram(RPC): trades_tab = tabulate( [[arrow.get(trade['open_date']).humanize(), trade['pair'], - f"{(100 * trade['close_profit']):.2f}% ({trade['close_profit_abs']})"] for trade in trades['trades'] if trade['close_profit'] is not None], + f"{(100 * trade['close_profit']):.2f}% ({trade['close_profit_abs']})"] + for trade in trades['trades'] if trade['close_profit'] is not None], headers=[ 'Open Date', 'Pair', From 0bad55637e5e5907d9133df6973c1926056ac6d0 Mon Sep 17 00:00:00 2001 From: thopd88 <20041501+thopd88@users.noreply.github.com> Date: Thu, 23 Jul 2020 10:12:52 +0700 Subject: [PATCH 2817/3421] fix flake8 indent error --- freqtrade/rpc/telegram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 943d092db..66583fa53 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -520,7 +520,7 @@ class Telegram(RPC): [[arrow.get(trade['open_date']).humanize(), trade['pair'], f"{(100 * trade['close_profit']):.2f}% ({trade['close_profit_abs']})"] - for trade in trades['trades'] if trade['close_profit'] is not None], + for trade in trades['trades'] if trade['close_profit'] is not None], headers=[ 'Open Date', 'Pair', From 0f18b2a0d45d3056cd52830f3081b359895bb044 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 23 Jul 2020 07:12:14 +0200 Subject: [PATCH 2818/3421] Add test and fix case where no trades were closed yet --- freqtrade/rpc/telegram.py | 3 ++- tests/rpc/test_rpc_telegram.py | 35 ++++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 66583fa53..153be1e25 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -527,7 +527,8 @@ class Telegram(RPC): f'Profit ({stake_cur})', ], tablefmt='simple') - message = f'{nrecent} recent trades:\n
            {trades_tab}
            ' + message = (f"{min(trades['trades_count'], nrecent)} recent trades:\n" + + (f"
            {trades_tab}
            " if trades['trades_count'] > 0 else '')) self._send_msg(message, parse_mode=ParseMode.HTML) except RPCException as e: self._send_msg(str(e)) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 1ea211584..f011b631d 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -21,8 +21,9 @@ from freqtrade.rpc import RPCMessageType from freqtrade.rpc.telegram import Telegram, authorized_only from freqtrade.state import State from freqtrade.strategy.interface import SellType -from tests.conftest import (get_patched_freqtradebot, log_has, patch_exchange, - patch_get_signal, patch_whitelist) +from tests.conftest import (create_mock_trades, get_patched_freqtradebot, + log_has, patch_exchange, patch_get_signal, + patch_whitelist) class DummyCls(Telegram): @@ -1143,6 +1144,36 @@ def test_edge_enabled(edge_conf, update, mocker) -> None: assert 'Pair Winrate Expectancy Stoploss' in msg_mock.call_args_list[0][0][0] +def test_telegram_trades(mocker, update, default_conf, fee): + msg_mock = MagicMock() + mocker.patch.multiple( + 'freqtrade.rpc.telegram.Telegram', + _init=MagicMock(), + _send_msg=msg_mock + ) + + freqtradebot = get_patched_freqtradebot(mocker, default_conf) + telegram = Telegram(freqtradebot) + context = MagicMock() + context.args = [] + + telegram._trades(update=update, context=context) + assert "0 recent trades:" in msg_mock.call_args_list[0][0][0] + assert "

            $A|6t6{{N!4b!`2pVt8GJ0vYO| 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%0DKK9 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 literal 0 HcmV?d00001 diff --git a/build_helpers/install_windows.ps1 b/build_helpers/install_windows.ps1 index 7dbdd77dd..0a55b6ddd 100644 --- a/build_helpers/install_windows.ps1 +++ b/build_helpers/install_windows.ps1 @@ -7,10 +7,10 @@ python -m pip install --upgrade pip $pyv = python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')" if ($pyv -eq '3.7') { - pip install build_helpers\TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl + pip install build_helpers\TA_Lib-0.4.18-cp37-cp37m-win_amd64.whl } if ($pyv -eq '3.8') { - pip install build_helpers\TA_Lib-0.4.17-cp38-cp38-win_amd64.whl + pip install build_helpers\TA_Lib-0.4.18-cp38-cp38-win_amd64.whl } pip install -r requirements-dev.txt From a8f523adae66fb0eb4f28ffff4cd8394c7b6b0d4 Mon Sep 17 00:00:00 2001 From: "Paul D. Mendes" Date: Mon, 11 May 2020 19:32:28 +0400 Subject: [PATCH 2292/3421] attached pairlist manager onto dataprovider init for unified access to dynamic whitelist --- freqtrade/data/dataprovider.py | 12 +++++---- freqtrade/freqtradebot.py | 6 ++--- tests/data/test_dataprovider.py | 46 ++++++++++++++++++++------------- 3 files changed, 38 insertions(+), 26 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index af0914939..01397d6b7 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -10,6 +10,7 @@ from typing import Any, Dict, List, Optional, Tuple from pandas import DataFrame from freqtrade.data.history import load_pair_history +from freqtrade.exceptions import OperationalException from freqtrade.exchange import Exchange from freqtrade.state import RunMode @@ -18,9 +19,10 @@ logger = logging.getLogger(__name__) class DataProvider: - def __init__(self, config: dict, exchange: Exchange) -> None: + def __init__(self, config: dict, exchange: Exchange, pairlists=None) -> None: self._config = config self._exchange = exchange + self._pairlists: Optional = pairlists def refresh(self, pairlist: List[Tuple[str, str]], @@ -125,8 +127,8 @@ class DataProvider: As available pairs does not show whitelist until after informative pairs have been cached. :return: list of pairs in whitelist """ - from freqtrade.pairlist.pairlistmanager import PairListManager - pairlists = PairListManager(self._exchange, self._config) - pairlists.refresh_pairlist() - return pairlists.whitelist + if self._pairlists: + return self._pairlists.whitelist + else: + raise OperationalException("Dataprovider was not initialized with a pairlist provider.") diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4f4b3e3bb..73f0873e4 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -71,15 +71,15 @@ class FreqtradeBot: self.wallets = Wallets(self.config, self.exchange) - self.dataprovider = DataProvider(self.config, self.exchange) + self.pairlists = PairListManager(self.exchange, self.config) + + self.dataprovider = DataProvider(self.config, self.exchange, self.pairlists) # Attach Dataprovider to Strategy baseclass IStrategy.dp = self.dataprovider # Attach Wallets to Strategy baseclass IStrategy.wallets = self.wallets - self.pairlists = PairListManager(self.exchange, self.config) - # Initializing Edge only if enabled self.edge = Edge(self.config, self.exchange, self.strategy) if \ self.config.get('edge', {}).get('enabled', False) else None diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index e5af80bc8..247703619 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -1,10 +1,12 @@ -from unittest.mock import MagicMock, PropertyMock +from unittest.mock import MagicMock, patch from pandas import DataFrame +import pytest from freqtrade.data.dataprovider import DataProvider +from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode -from tests.conftest import get_patched_exchange, get_patched_freqtradebot +from tests.conftest import get_patched_exchange def test_ohlcv(mocker, default_conf, ohlcv_history): @@ -151,21 +153,29 @@ def test_market(mocker, default_conf, markets): assert res is None -def test_current_whitelist(mocker, shitcoinmarkets, tickers, default_conf): - default_conf.update( - {"pairlists": [{"method": "VolumePairList", - "number_assets": 10, - "sort_key": "quoteVolume"}], }, ) - default_conf['exchange']['pair_blacklist'] = ['BLK/BTC'] +@patch('freqtrade.pairlist.pairlistmanager.PairListManager') +@patch('freqtrade.exchange.Exchange') +def test_current_whitelist(exchange, PairListManager, default_conf): + # patch default conf to volumepairlist + default_conf['pairlists'][0] = {'method': 'VolumePairList', "number_assets": 5} - mocker.patch.multiple('freqtrade.exchange.Exchange', get_tickers=tickers, - exchange_has=MagicMock(return_value=True), ) - bot = get_patched_freqtradebot(mocker, default_conf) - # Remock markets with shitcoinmarkets since get_patched_freqtradebot uses the markets fixture - mocker.patch.multiple('freqtrade.exchange.Exchange', - markets=PropertyMock(return_value=shitcoinmarkets), ) - # argument: use the whitelist dynamically by exchange-volume - whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC', 'FUEL/BTC'] + pairlist = PairListManager(exchange, default_conf) + dp = DataProvider(default_conf, exchange, pairlist) - current_wl = bot.dataprovider.current_whitelist() - assert whitelist == current_wl + # Simulate volumepairs from exchange. + # pairlist.refresh_pairlist() + # Set the pairs manually... this would be done in refresh pairlist default whitelist + volumePL - blacklist + default_whitelist = default_conf['exchange']['pair_whitelist'] + default_blacklist = default_conf['exchange']['pair_blacklist'] + volume_pairlist = ['ETH/BTC', 'LINK/BTC', 'ZRX/BTC', 'BCH/BTC', 'XRP/BTC'] + current_whitelist = list(set(volume_pairlist + default_whitelist)) + for pair in default_blacklist: + if pair in current_whitelist: + current_whitelist.remove(pair) + pairlist._whitelist = current_whitelist + + assert dp.current_whitelist() == pairlist._whitelist + + with pytest.raises(OperationalException) as e: + dp = DataProvider(default_conf, exchange) + dp.current_whitelist() From bc9efc31ad6c6e0806111384e6fa8229285d298a Mon Sep 17 00:00:00 2001 From: "Paul D. Mendes" Date: Wed, 6 May 2020 19:48:57 +0400 Subject: [PATCH 2293/3421] Added Method for accessing current pair list on initialization for dynamic informative pairs moved import into function to avoid circular import with hyperopt --- freqtrade/data/dataprovider.py | 14 ++++++++++++++ tests/data/test_dataprovider.py | 33 +++++++++++++++++++++++++-------- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 1df710152..af0914939 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -116,3 +116,17 @@ class DataProvider: can be "live", "dry-run", "backtest", "edgecli", "hyperopt" or "other". """ return RunMode(self._config.get('runmode', RunMode.OTHER)) + + def current_whitelist(self) -> List[str]: + """ + fetch latest available whitelist. + + Useful when you have a large whitelist and need to call each pair as an informative pair. + As available pairs does not show whitelist until after informative pairs have been cached. + :return: list of pairs in whitelist + """ + from freqtrade.pairlist.pairlistmanager import PairListManager + + pairlists = PairListManager(self._exchange, self._config) + pairlists.refresh_pairlist() + return pairlists.whitelist diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index 2b3dda188..e5af80bc8 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -1,10 +1,10 @@ -from unittest.mock import MagicMock +from unittest.mock import MagicMock, PropertyMock from pandas import DataFrame from freqtrade.data.dataprovider import DataProvider from freqtrade.state import RunMode -from tests.conftest import get_patched_exchange +from tests.conftest import get_patched_exchange, get_patched_freqtradebot def test_ohlcv(mocker, default_conf, ohlcv_history): @@ -64,8 +64,8 @@ def test_get_pair_dataframe(mocker, default_conf, ohlcv_history): assert dp.get_pair_dataframe("NONESENSE/AAA", ticker_interval).empty # Test with and without parameter - assert dp.get_pair_dataframe("UNITTEST/BTC", - ticker_interval).equals(dp.get_pair_dataframe("UNITTEST/BTC")) + assert dp.get_pair_dataframe("UNITTEST/BTC", ticker_interval)\ + .equals(dp.get_pair_dataframe("UNITTEST/BTC")) default_conf["runmode"] = RunMode.LIVE dp = DataProvider(default_conf, exchange) @@ -90,10 +90,7 @@ def test_available_pairs(mocker, default_conf, ohlcv_history): dp = DataProvider(default_conf, exchange) assert len(dp.available_pairs) == 2 - assert dp.available_pairs == [ - ("XRP/BTC", ticker_interval), - ("UNITTEST/BTC", ticker_interval), - ] + assert dp.available_pairs == [("XRP/BTC", ticker_interval), ("UNITTEST/BTC", ticker_interval), ] def test_refresh(mocker, default_conf, ohlcv_history): @@ -152,3 +149,23 @@ def test_market(mocker, default_conf, markets): res = dp.market('UNITTEST/BTC') assert res is None + + +def test_current_whitelist(mocker, shitcoinmarkets, tickers, default_conf): + default_conf.update( + {"pairlists": [{"method": "VolumePairList", + "number_assets": 10, + "sort_key": "quoteVolume"}], }, ) + default_conf['exchange']['pair_blacklist'] = ['BLK/BTC'] + + mocker.patch.multiple('freqtrade.exchange.Exchange', get_tickers=tickers, + exchange_has=MagicMock(return_value=True), ) + bot = get_patched_freqtradebot(mocker, default_conf) + # Remock markets with shitcoinmarkets since get_patched_freqtradebot uses the markets fixture + mocker.patch.multiple('freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=shitcoinmarkets), ) + # argument: use the whitelist dynamically by exchange-volume + whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC', 'FUEL/BTC'] + + current_wl = bot.dataprovider.current_whitelist() + assert whitelist == current_wl From a5bfa5515cbdbab500dbe9df614730107804bacd Mon Sep 17 00:00:00 2001 From: "Paul D. Mendes" Date: Mon, 11 May 2020 20:13:06 +0400 Subject: [PATCH 2294/3421] Fix flake8 mypy --- freqtrade/data/dataprovider.py | 2 +- tests/data/test_dataprovider.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 01397d6b7..984652e24 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -22,7 +22,7 @@ class DataProvider: def __init__(self, config: dict, exchange: Exchange, pairlists=None) -> None: self._config = config self._exchange = exchange - self._pairlists: Optional = pairlists + self._pairlists = pairlists def refresh(self, pairlist: List[Tuple[str, str]], diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index 247703619..45ce1c009 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -164,7 +164,9 @@ def test_current_whitelist(exchange, PairListManager, default_conf): # Simulate volumepairs from exchange. # pairlist.refresh_pairlist() - # Set the pairs manually... this would be done in refresh pairlist default whitelist + volumePL - blacklist + + # Set the pairs manually... this would be done in refresh pairlist + # default whitelist + volumePL - blacklist default_whitelist = default_conf['exchange']['pair_whitelist'] default_blacklist = default_conf['exchange']['pair_blacklist'] volume_pairlist = ['ETH/BTC', 'LINK/BTC', 'ZRX/BTC', 'BCH/BTC', 'XRP/BTC'] @@ -176,6 +178,6 @@ def test_current_whitelist(exchange, PairListManager, default_conf): assert dp.current_whitelist() == pairlist._whitelist - with pytest.raises(OperationalException) as e: + with pytest.raises(OperationalException): dp = DataProvider(default_conf, exchange) dp.current_whitelist() From 9fbe1357902aa90243309781f164e7328fdc5b9a Mon Sep 17 00:00:00 2001 From: "Paul D. Mendes" Date: Mon, 11 May 2020 19:32:28 +0400 Subject: [PATCH 2295/3421] attached pairlist manager onto dataprovider init for unified access to dynamic whitelist --- freqtrade/data/dataprovider.py | 12 +++++---- freqtrade/freqtradebot.py | 6 ++--- tests/data/test_dataprovider.py | 48 ++++++++++++++++++++------------- 3 files changed, 40 insertions(+), 26 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index af0914939..984652e24 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -10,6 +10,7 @@ from typing import Any, Dict, List, Optional, Tuple from pandas import DataFrame from freqtrade.data.history import load_pair_history +from freqtrade.exceptions import OperationalException from freqtrade.exchange import Exchange from freqtrade.state import RunMode @@ -18,9 +19,10 @@ logger = logging.getLogger(__name__) class DataProvider: - def __init__(self, config: dict, exchange: Exchange) -> None: + def __init__(self, config: dict, exchange: Exchange, pairlists=None) -> None: self._config = config self._exchange = exchange + self._pairlists = pairlists def refresh(self, pairlist: List[Tuple[str, str]], @@ -125,8 +127,8 @@ class DataProvider: As available pairs does not show whitelist until after informative pairs have been cached. :return: list of pairs in whitelist """ - from freqtrade.pairlist.pairlistmanager import PairListManager - pairlists = PairListManager(self._exchange, self._config) - pairlists.refresh_pairlist() - return pairlists.whitelist + if self._pairlists: + return self._pairlists.whitelist + else: + raise OperationalException("Dataprovider was not initialized with a pairlist provider.") diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4f4b3e3bb..73f0873e4 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -71,15 +71,15 @@ class FreqtradeBot: self.wallets = Wallets(self.config, self.exchange) - self.dataprovider = DataProvider(self.config, self.exchange) + self.pairlists = PairListManager(self.exchange, self.config) + + self.dataprovider = DataProvider(self.config, self.exchange, self.pairlists) # Attach Dataprovider to Strategy baseclass IStrategy.dp = self.dataprovider # Attach Wallets to Strategy baseclass IStrategy.wallets = self.wallets - self.pairlists = PairListManager(self.exchange, self.config) - # Initializing Edge only if enabled self.edge = Edge(self.config, self.exchange, self.strategy) if \ self.config.get('edge', {}).get('enabled', False) else None diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index e5af80bc8..45ce1c009 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -1,10 +1,12 @@ -from unittest.mock import MagicMock, PropertyMock +from unittest.mock import MagicMock, patch from pandas import DataFrame +import pytest from freqtrade.data.dataprovider import DataProvider +from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode -from tests.conftest import get_patched_exchange, get_patched_freqtradebot +from tests.conftest import get_patched_exchange def test_ohlcv(mocker, default_conf, ohlcv_history): @@ -151,21 +153,31 @@ def test_market(mocker, default_conf, markets): assert res is None -def test_current_whitelist(mocker, shitcoinmarkets, tickers, default_conf): - default_conf.update( - {"pairlists": [{"method": "VolumePairList", - "number_assets": 10, - "sort_key": "quoteVolume"}], }, ) - default_conf['exchange']['pair_blacklist'] = ['BLK/BTC'] +@patch('freqtrade.pairlist.pairlistmanager.PairListManager') +@patch('freqtrade.exchange.Exchange') +def test_current_whitelist(exchange, PairListManager, default_conf): + # patch default conf to volumepairlist + default_conf['pairlists'][0] = {'method': 'VolumePairList', "number_assets": 5} - mocker.patch.multiple('freqtrade.exchange.Exchange', get_tickers=tickers, - exchange_has=MagicMock(return_value=True), ) - bot = get_patched_freqtradebot(mocker, default_conf) - # Remock markets with shitcoinmarkets since get_patched_freqtradebot uses the markets fixture - mocker.patch.multiple('freqtrade.exchange.Exchange', - markets=PropertyMock(return_value=shitcoinmarkets), ) - # argument: use the whitelist dynamically by exchange-volume - whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC', 'FUEL/BTC'] + pairlist = PairListManager(exchange, default_conf) + dp = DataProvider(default_conf, exchange, pairlist) - current_wl = bot.dataprovider.current_whitelist() - assert whitelist == current_wl + # Simulate volumepairs from exchange. + # pairlist.refresh_pairlist() + + # Set the pairs manually... this would be done in refresh pairlist + # default whitelist + volumePL - blacklist + default_whitelist = default_conf['exchange']['pair_whitelist'] + default_blacklist = default_conf['exchange']['pair_blacklist'] + volume_pairlist = ['ETH/BTC', 'LINK/BTC', 'ZRX/BTC', 'BCH/BTC', 'XRP/BTC'] + current_whitelist = list(set(volume_pairlist + default_whitelist)) + for pair in default_blacklist: + if pair in current_whitelist: + current_whitelist.remove(pair) + pairlist._whitelist = current_whitelist + + assert dp.current_whitelist() == pairlist._whitelist + + with pytest.raises(OperationalException): + dp = DataProvider(default_conf, exchange) + dp.current_whitelist() From c8f3ef884b13e359c572043b6e9e7892a448cb2d Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Mon, 11 May 2020 20:22:19 +0300 Subject: [PATCH 2296/3421] Minor: Add filterwarning for DeprecationWarning in test --- tests/optimize/test_backtesting.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 6c2d6c9dd..093cbf966 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -649,6 +649,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): assert log_has(line, caplog) +@pytest.mark.filterwarnings("ignore:deprecated") def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): patch_exchange(mocker) From 258071928f8c673ab18cff5442c9abf5c0026f0e Mon Sep 17 00:00:00 2001 From: prashanthsandela Date: Mon, 11 May 2020 17:21:04 -0700 Subject: [PATCH 2297/3421] Correct log path in doc. --- docs/docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docker.md b/docs/docker.md index cd24994bc..ad98864a6 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -65,7 +65,7 @@ docker-compose up -d #### Docker-compose logs -Logs will be written to `user_data/freqtrade.log`. +Logs will be written to `user_data/logs/freqtrade.log`. Alternatively, you can check the latest logs using `docker-compose logs -f`. #### Database From e864db1843c378b0eb8c6936f1b8a4aa3230eddc Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 May 2020 06:38:14 +0200 Subject: [PATCH 2298/3421] Update test for dp.current_whitelist --- tests/data/test_dataprovider.py | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index 45ce1c009..3e42abb95 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -1,9 +1,10 @@ -from unittest.mock import MagicMock, patch +from unittest.mock import MagicMock from pandas import DataFrame import pytest from freqtrade.data.dataprovider import DataProvider +from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode from tests.conftest import get_patched_exchange @@ -153,30 +154,24 @@ def test_market(mocker, default_conf, markets): assert res is None -@patch('freqtrade.pairlist.pairlistmanager.PairListManager') -@patch('freqtrade.exchange.Exchange') -def test_current_whitelist(exchange, PairListManager, default_conf): +def test_current_whitelist(mocker, default_conf, tickers): # patch default conf to volumepairlist default_conf['pairlists'][0] = {'method': 'VolumePairList', "number_assets": 5} + mocker.patch.multiple('freqtrade.exchange.Exchange', + exchange_has=MagicMock(return_value=True), + get_tickers=tickers) + exchange = get_patched_exchange(mocker, default_conf) + pairlist = PairListManager(exchange, default_conf) dp = DataProvider(default_conf, exchange, pairlist) # Simulate volumepairs from exchange. - # pairlist.refresh_pairlist() - - # Set the pairs manually... this would be done in refresh pairlist - # default whitelist + volumePL - blacklist - default_whitelist = default_conf['exchange']['pair_whitelist'] - default_blacklist = default_conf['exchange']['pair_blacklist'] - volume_pairlist = ['ETH/BTC', 'LINK/BTC', 'ZRX/BTC', 'BCH/BTC', 'XRP/BTC'] - current_whitelist = list(set(volume_pairlist + default_whitelist)) - for pair in default_blacklist: - if pair in current_whitelist: - current_whitelist.remove(pair) - pairlist._whitelist = current_whitelist + pairlist.refresh_pairlist() assert dp.current_whitelist() == pairlist._whitelist + # The identity of the 2 lists should be identical + assert dp.current_whitelist() is pairlist._whitelist with pytest.raises(OperationalException): dp = DataProvider(default_conf, exchange) From aa25461e8854cd7e525b3b7eeddf1bfd8ae3a8d3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 May 2020 07:20:59 +0200 Subject: [PATCH 2299/3421] Show forcebuy status so it's visible before calling forcebuy. --- freqtrade/rpc/rpc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 10eeb572f..851092f1a 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -104,6 +104,7 @@ class RPC: 'ticker_interval': config['ticker_interval'], 'exchange': config['exchange']['name'], 'strategy': config['strategy'], + 'forcebuy_enabled': self._freqtrade.config.get('forcebuy_enable', False), 'state': str(self._freqtrade.state) } return val From e2b9c248568a03b30016a3c13ac72b5f8f51ef91 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 12 May 2020 13:54:13 +0300 Subject: [PATCH 2300/3421] Docs: Fix sample in strategy-advanced --- docs/strategy-advanced.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index 39e92d651..684e58f22 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -20,7 +20,7 @@ It applies a tight timeout for higher priced assets, while allowing more time to The function must return either `True` (cancel order) or `False` (keep order alive). ``` python -from datetime import datetime, timestamp +from datetime import datetime from freqtrade.persistence import Trade class Awesomestrategy(IStrategy): @@ -59,7 +59,7 @@ class Awesomestrategy(IStrategy): ### Custom order timeout example (using additional data) ``` python -from datetime import datetime, timestamp +from datetime import datetime from freqtrade.persistence import Trade class Awesomestrategy(IStrategy): From 77c9334c50cc43453b71e5ab4bd9e3353e8f80c0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 12 May 2020 13:39:24 +0200 Subject: [PATCH 2301/3421] Use available config object Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- freqtrade/rpc/rpc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 851092f1a..d3b6b9639 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -104,7 +104,7 @@ class RPC: 'ticker_interval': config['ticker_interval'], 'exchange': config['exchange']['name'], 'strategy': config['strategy'], - 'forcebuy_enabled': self._freqtrade.config.get('forcebuy_enable', False), + 'forcebuy_enabled': config.get('forcebuy_enable', False), 'state': str(self._freqtrade.state) } return val From f1367b38a4c52c605287d876721c9070873eb901 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Tue, 12 May 2020 14:42:33 +0300 Subject: [PATCH 2302/3421] Docs: Fix the fix --- docs/strategy-advanced.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md index 684e58f22..69e2256a1 100644 --- a/docs/strategy-advanced.md +++ b/docs/strategy-advanced.md @@ -20,7 +20,7 @@ It applies a tight timeout for higher priced assets, while allowing more time to The function must return either `True` (cancel order) or `False` (keep order alive). ``` python -from datetime import datetime +from datetime import datetime, timedelta from freqtrade.persistence import Trade class Awesomestrategy(IStrategy): From 63dfe3669ff994b535adde5f1609bbba283de69f Mon Sep 17 00:00:00 2001 From: "Paul D. Mendes" Date: Wed, 13 May 2020 00:25:57 +0400 Subject: [PATCH 2303/3421] Updated docs for #3267 --- docs/strategy-customization.md | 160 +++++++++++++++++++++------------ 1 file changed, 105 insertions(+), 55 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index c4fc55811..20cde7556 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -324,62 +324,9 @@ class Awesomestrategy(IStrategy): !!! Note If the data is pair-specific, make sure to use pair as one of the keys in the dictionary. -### Additional data (DataProvider) +*** -The strategy provides access to the `DataProvider`. This allows you to get additional data to use in your strategy. - -All methods return `None` in case of failure (do not raise an exception). - -Please always check the mode of operation to select the correct method to get data (samples see below). - -#### Possible options for DataProvider - -- `available_pairs` - Property with tuples listing cached pairs with their intervals (pair, interval). -- `ohlcv(pair, timeframe)` - Currently cached candle (OHLCV) data for the pair, returns DataFrame or empty DataFrame. -- `historic_ohlcv(pair, timeframe)` - Returns historical data stored on disk. -- `get_pair_dataframe(pair, timeframe)` - This is a universal method, which returns either historical data (for backtesting) or cached live data (for the Dry-Run and Live-Run modes). -- `orderbook(pair, maximum)` - Returns latest orderbook data for the pair, a dict with bids/asks with a total of `maximum` entries. -- `market(pair)` - Returns market data for the pair: fees, limits, precisions, activity flag, etc. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#markets) for more details on Market data structure. -- `runmode` - Property containing the current runmode. - -#### Example: fetch live / historical candle (OHLCV) data for the first informative pair - -``` python -if self.dp: - inf_pair, inf_timeframe = self.informative_pairs()[0] - informative = self.dp.get_pair_dataframe(pair=inf_pair, - timeframe=inf_timeframe) -``` - -!!! Warning "Warning about backtesting" - Be carefull when using dataprovider in backtesting. `historic_ohlcv()` (and `get_pair_dataframe()` - for the backtesting runmode) provides the full time-range in one go, - so please be aware of it and make sure to not "look into the future" to avoid surprises when running in dry/live mode). - -!!! Warning "Warning in hyperopt" - This option cannot currently be used during hyperopt. - -#### Orderbook - -``` python -if self.dp: - if self.dp.runmode.value in ('live', 'dry_run'): - ob = self.dp.orderbook(metadata['pair'], 1) - dataframe['best_bid'] = ob['bids'][0][0] - dataframe['best_ask'] = ob['asks'][0][0] -``` - -!!! Warning - The order book is not part of the historic data which means backtesting and hyperopt will not work if this - method is used. - -#### Available Pairs - -``` python -if self.dp: - for pair, timeframe in self.dp.available_pairs: - print(f"available {pair}, {timeframe}") -``` +### Additional data (informative_pairs) #### Get data for non-tradeable pairs @@ -404,6 +351,108 @@ def informative_pairs(self): It is however better to use resampling to longer time-intervals when possible to avoid hammering the exchange with too many requests and risk being blocked. +*** + +### Additional data (DataProvider) + +The strategy provides access to the `DataProvider`. This allows you to get additional data to use in your strategy. + +All methods return `None` in case of failure (do not raise an exception). + +Please always check the mode of operation to select the correct method to get data (samples see below). + +#### Possible options for DataProvider + +- [`available_pairs`](#available_pairs) - Property with tuples listing cached pairs with their intervals (pair, interval). +- [`current_whitelist()`](#current_whitelist) - Returns a current list of whitelisted pairs. Useful for accessing dynamic whitelists (ie. VolumePairlist) +- [`get_pair_dataframe(pair, timeframe)`](#get_pair_dataframepair-timeframe) - This is a universal method, which returns either historical data (for backtesting) or cached live data (for the Dry-Run and Live-Run modes). +- `historic_ohlcv(pair, timeframe)` - Returns historical data stored on disk. +- `market(pair)` - Returns market data for the pair: fees, limits, precisions, activity flag, etc. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#markets) for more details on Market data structure. +- `ohlcv(pair, timeframe)` - Currently cached candle (OHLCV) data for the pair, returns DataFrame or empty DataFrame. +- [`orderbook(pair, maximum)`](#orderbookpair-maximum) - Returns latest orderbook data for the pair, a dict with bids/asks with a total of `maximum` entries. +- `runmode` - Property containing the current runmode. + +#### Example Usages: + +#### *available_pairs* + +``` python +if self.dp: + for pair, timeframe in self.dp.available_pairs: + print(f"available {pair}, {timeframe}") +``` + +#### *current_whitelist()* +Imagine you've developed a strategy that trades the `1m` timeframe using signals generated from a `1d` timeframe on the top 10 volume pairs by volume. + +The strategy might look something like this: + +*Scan through the top 10 pairs by volume using the `VolumePairList` every minute and use a 14 day ATR to buy and sell.* + +Due to the limited available data, it's impossible to resample our `1m` candles into daily candles for use in the 14 day ATR. Most exchanges limit us to just 500 candles which effectively gives us around 1/3 of a daily candle. We need 14 days at least! + +Since we can't resample our data we will have to use an informative pair; and since our whitelist will be dynamic we don't know which pair(s) to use. + +This is where calling `self.dp.current_whitelist()` comes in handy. + +```python +class SampleStrategy(IStrategy): + # strategy init stuff... + + ticker_interval = '1m' + + # more strategy init stuff.. + + def informative_pairs(self): + + # get access to all pairs available in whitelist. + pairs = self.dp.current_whitelist() + # Assign tf to each pair so they can be downloaded and cached for strategy. + informative_pairs = [(pair, '1d') for pair in pairs] + return informative_pairs + + def populate_indicators(self, dataframe, metadata): + # Get the informative pair + informative = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe='1d') + # Get the 14 day ATR. + atr = ta.ATR(informative, timeperiod=14) + # Assign the Daily atr to the 1 minute dataframe. + dataframe['daily_atr'] = atr +``` + +#### *get_pair_dataframe(pair, timeframe)* + +``` python +# fetch live / historical candle (OHLCV) data for the first informative pair +if self.dp: + inf_pair, inf_timeframe = self.informative_pairs()[0] + informative = self.dp.get_pair_dataframe(pair=inf_pair, + timeframe=inf_timeframe) +``` + +!!! Warning "Warning about backtesting" + Be carefull when using dataprovider in backtesting. `historic_ohlcv()` (and `get_pair_dataframe()` + for the backtesting runmode) provides the full time-range in one go, + so please be aware of it and make sure to not "look into the future" to avoid surprises when running in dry/live mode). + +!!! Warning "Warning in hyperopt" + This option cannot currently be used during hyperopt. + +#### *orderbook(pair, maximum)* + +``` python +if self.dp: + if self.dp.runmode.value in ('live', 'dry_run'): + ob = self.dp.orderbook(metadata['pair'], 1) + dataframe['best_bid'] = ob['bids'][0][0] + dataframe['best_ask'] = ob['asks'][0][0] +``` + +!!! Warning + The order book is not part of the historic data which means backtesting and hyperopt will not work if this + method is used. + +*** ### Additional data (Wallets) The strategy provides access to the `Wallets` object. This contains the current balances on the exchange. @@ -426,6 +475,7 @@ if self.wallets: - `get_used(asset)` - currently tied up balance (open orders) - `get_total(asset)` - total available balance - sum of the 2 above +*** ### Additional data (Trades) A history of Trades can be retrieved in the strategy by querying the database. From 0c3bdd66aca0dab2ce912a547c57e24239babc95 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 13 May 2020 06:50:52 +0200 Subject: [PATCH 2304/3421] Update sql cheatsheet iwth current table structure --- docs/sql_cheatsheet.md | 79 +++++++++++++++++++++++++++--------------- 1 file changed, 51 insertions(+), 28 deletions(-) diff --git a/docs/sql_cheatsheet.md b/docs/sql_cheatsheet.md index b7b38c3dc..895a0536a 100644 --- a/docs/sql_cheatsheet.md +++ b/docs/sql_cheatsheet.md @@ -1,13 +1,20 @@ # SQL Helper + This page contains some help if you want to edit your sqlite db. ## Install sqlite3 -**Ubuntu/Debian installation** + +Sqlite3 is a terminal based sqlite application. +Feel free to use a visual Database editor like SqliteBrowser if you feel more comfortable with that. + +### Ubuntu/Debian installation + ```bash sudo apt-get install sqlite3 ``` ## Open the DB + ```bash sqlite3 .open @@ -16,45 +23,61 @@ sqlite3 ## Table structure ### List tables + ```bash .tables ``` ### Display table structure + ```bash .schema ``` ### Trade table structure + ```sql -CREATE TABLE trades ( - id INTEGER NOT NULL, - exchange VARCHAR NOT NULL, - pair VARCHAR NOT NULL, - is_open BOOLEAN NOT NULL, - fee_open FLOAT NOT NULL, - fee_close FLOAT NOT NULL, - open_rate FLOAT, - open_rate_requested FLOAT, - close_rate FLOAT, - close_rate_requested FLOAT, - close_profit FLOAT, - stake_amount FLOAT NOT NULL, - amount FLOAT, - open_date DATETIME NOT NULL, - close_date DATETIME, - open_order_id VARCHAR, - stop_loss FLOAT, - initial_stop_loss FLOAT, - stoploss_order_id VARCHAR, - stoploss_last_update DATETIME, - max_rate FLOAT, - sell_reason VARCHAR, - strategy VARCHAR, - ticker_interval INTEGER, - PRIMARY KEY (id), - CHECK (is_open IN (0, 1)) +CREATE TABLE trades + id INTEGER NOT NULL, + exchange VARCHAR NOT NULL, + pair VARCHAR NOT NULL, + is_open BOOLEAN NOT NULL, + fee_open FLOAT NOT NULL, + fee_open_cost FLOAT, + fee_open_currency VARCHAR, + fee_close FLOAT NOT NULL, + fee_close_cost FLOAT, + fee_close_currency VARCHAR, + open_rate FLOAT, + open_rate_requested FLOAT, + open_trade_price FLOAT, + close_rate FLOAT, + close_rate_requested FLOAT, + close_profit FLOAT, + close_profit_abs FLOAT, + stake_amount FLOAT NOT NULL, + amount FLOAT, + open_date DATETIME NOT NULL, + close_date DATETIME, + open_order_id VARCHAR, + stop_loss FLOAT, + stop_loss_pct FLOAT, + initial_stop_loss FLOAT, + initial_stop_loss_pct FLOAT, + stoploss_order_id VARCHAR, + stoploss_last_update DATETIME, + max_rate FLOAT, + min_rate FLOAT, + sell_reason VARCHAR, + strategy VARCHAR, + ticker_interval INTEGER, + PRIMARY KEY (id), + CHECK (is_open IN (0, 1)) ); +CREATE INDEX ix_trades_stoploss_order_id ON trades (stoploss_order_id); +CREATE INDEX ix_trades_pair ON trades (pair); +CREATE INDEX ix_trades_is_open ON trades (is_open); + ``` ## Get all trades in the table From fe3ea8e7ec4f3c8af8dfec2a02b5299a926acf58 Mon Sep 17 00:00:00 2001 From: bmoulkaf Date: Wed, 13 May 2020 05:15:18 +0000 Subject: [PATCH 2305/3421] Fix stoploss on binance bug --- freqtrade/exchange/binance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index 875628af9..37183dc2c 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -72,7 +72,7 @@ class Binance(Exchange): rate = self.price_to_precision(pair, rate) order = self._api.create_order(symbol=pair, type=ordertype, side='sell', - amount=amount, price=stop_price, params=params) + amount=amount, price=rate, params=params) logger.info('stoploss limit order added for %s. ' 'stop price: %s. limit: %s', pair, stop_price, rate) return order From 6e86a47764d1d246d4603292c864547200fa5bbf Mon Sep 17 00:00:00 2001 From: "Paul D. Mendes" Date: Wed, 13 May 2020 14:49:16 +0400 Subject: [PATCH 2306/3421] updated docs --- docs/strategy-customization.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 20cde7556..d5bc76c65 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -383,13 +383,13 @@ if self.dp: ``` #### *current_whitelist()* -Imagine you've developed a strategy that trades the `1m` timeframe using signals generated from a `1d` timeframe on the top 10 volume pairs by volume. +Imagine you've developed a strategy that trades the `5m` timeframe using signals generated from a `1d` timeframe on the top 10 volume pairs by volume. The strategy might look something like this: -*Scan through the top 10 pairs by volume using the `VolumePairList` every minute and use a 14 day ATR to buy and sell.* +*Scan through the top 10 pairs by volume using the `VolumePairList` every 5 minutes and use a 14 day ATR to buy and sell.* -Due to the limited available data, it's impossible to resample our `1m` candles into daily candles for use in the 14 day ATR. Most exchanges limit us to just 500 candles which effectively gives us around 1/3 of a daily candle. We need 14 days at least! +Due to the limited available data, it's very difficult to resample our `5m` candles into daily candles for use in a 14 day ATR. Most exchanges limit us to just 500 candles which effectively gives us around 1.74 daily candles. We need 14 days at least! Since we can't resample our data we will have to use an informative pair; and since our whitelist will be dynamic we don't know which pair(s) to use. @@ -399,7 +399,7 @@ This is where calling `self.dp.current_whitelist()` comes in handy. class SampleStrategy(IStrategy): # strategy init stuff... - ticker_interval = '1m' + ticker_interval = '5m' # more strategy init stuff.. @@ -416,8 +416,7 @@ class SampleStrategy(IStrategy): informative = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe='1d') # Get the 14 day ATR. atr = ta.ATR(informative, timeperiod=14) - # Assign the Daily atr to the 1 minute dataframe. - dataframe['daily_atr'] = atr + # Do other stuff ``` #### *get_pair_dataframe(pair, timeframe)* From 6ff457e3911fecb1e471b1b4950c277eefc26300 Mon Sep 17 00:00:00 2001 From: Pedro Torres Date: Wed, 13 May 2020 20:50:11 +0800 Subject: [PATCH 2307/3421] Update doc Ta_lib MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update the document with the latest Ta_lib-0.4.18. 👍 The requirements-common.txt has been updated previously on commit a379e68cf441407c9c04264714bfc7dbcc8e635d --- docs/installation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 88e2ef6eb..f017bef96 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -248,14 +248,14 @@ git clone https://github.com/freqtrade/freqtrade.git Install ta-lib according to the [ta-lib documentation](https://github.com/mrjbq7/ta-lib#windows). -As compiling from source on windows has heavy dependencies (requires a partial visual studio installation), there is also a repository of unofficial precompiled windows Wheels [here](https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib), which needs to be downloaded and installed using `pip install TA_Lib‑0.4.17‑cp36‑cp36m‑win32.whl` (make sure to use the version matching your python version) +As compiling from source on windows has heavy dependencies (requires a partial visual studio installation), there is also a repository of unofficial precompiled windows Wheels [here](https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib), which needs to be downloaded and installed using `pip install TA_Lib‑0.4.18‑cp38‑cp38‑win_amd64.whl` (make sure to use the version matching your python version) ```cmd >cd \path\freqtrade-develop >python -m venv .env >.env\Scripts\activate.bat REM optionally install ta-lib from wheel -REM >pip install TA_Lib‑0.4.17‑cp36‑cp36m‑win32.whl +REM >pip install TA_Lib‑0.4.18‑cp38‑cp38‑win_amd64.whl >pip install -r requirements.txt >pip install -e . >freqtrade From b3dd0a68d56f179eb11a6d3996420a1490922836 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Wed, 13 May 2020 18:51:38 +0300 Subject: [PATCH 2308/3421] minor: fix typo in configuration.md --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 67e8578dd..eb7f02d5c 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -108,7 +108,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `forcebuy_enable` | Enables the RPC Commands to force a buy. More information below.
            **Datatype:** Boolean | `strategy` | **Required** Defines Strategy class to use. Recommended to be set via `--strategy NAME`.
            **Datatype:** ClassName | `strategy_path` | Adds an additional strategy lookup path (must be a directory).
            **Datatype:** String -| `internals.process_throttle_secs` | Set the process throttle. Value in second.
            *Defaults to `5` seconds.*
            **Datatype:** Positive Intege +| `internals.process_throttle_secs` | Set the process throttle. Value in second.
            *Defaults to `5` seconds.*
            **Datatype:** Positive Integer | `internals.heartbeat_interval` | Print heartbeat message every N seconds. Set to 0 to disable heartbeat messages.
            *Defaults to `60` seconds.*
            **Datatype:** Positive Integer or 0 | `internals.sd_notify` | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details.
            **Datatype:** Boolean | `logfile` | Specifies logfile name. Uses a rolling strategy for log file rotation for 10 files with the 1MB limit per file.
            **Datatype:** String From 60f26ba5014bccb42f6df91fd776b1f4ab5745f3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 13 May 2020 20:25:32 +0200 Subject: [PATCH 2309/3421] use update_trade_state also for closed stoploss orders --- freqtrade/freqtradebot.py | 59 ++++++++++++++++++++------------------ tests/test_freqtradebot.py | 3 +- tests/test_integration.py | 4 ++- 3 files changed, 36 insertions(+), 30 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 1f9573122..8732533f7 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -752,7 +752,7 @@ class FreqtradeBot: # We check if stoploss order is fulfilled if stoploss_order and stoploss_order['status'] == 'closed': trade.sell_reason = SellType.STOPLOSS_ON_EXCHANGE.value - trade.update(stoploss_order) + self.update_trade_state(trade, stoploss_order, sl_order=True) # Lock pair for one candle to prevent immediate rebuys self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['ticker_interval'])) @@ -1123,7 +1123,7 @@ class FreqtradeBot: # def update_trade_state(self, trade: Trade, action_order: dict = None, - order_amount: float = None) -> bool: + order_amount: float = None, sl_order: bool = False) -> bool: """ Checks trades with open orders and updates the amount if necessary Handles closing both buy and sell orders. @@ -1131,34 +1131,37 @@ class FreqtradeBot: """ # Get order details for actual price per unit if trade.open_order_id: - # Update trade with order values - logger.info('Found open order for %s', trade) - try: - order = action_order or self.exchange.get_order(trade.open_order_id, trade.pair) - except InvalidOrderException as exception: - logger.warning('Unable to fetch order %s: %s', trade.open_order_id, exception) - return False - # Try update amount (binance-fix) - try: - new_amount = self.get_real_amount(trade, order, order_amount) - if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): - order['amount'] = new_amount - order.pop('filled', None) - trade.recalc_open_trade_price() - except DependencyException as exception: - logger.warning("Could not update trade amount: %s", exception) + order_id = trade.open_order_id + elif trade.stoploss_order_id and sl_order: + order_id = trade.stoploss_order_id + else: + return False + # Update trade with order values + logger.info('Found open order for %s', trade) + try: + order = action_order or self.exchange.get_order(order_id, trade.pair) + except InvalidOrderException as exception: + logger.warning('Unable to fetch order %s: %s', order_id, exception) + return False + # Try update amount (binance-fix) + try: + new_amount = self.get_real_amount(trade, order, order_amount) + if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC): + order['amount'] = new_amount + order.pop('filled', None) + trade.recalc_open_trade_price() + except DependencyException as exception: + logger.warning("Could not update trade amount: %s", exception) - if self.exchange.check_order_canceled_empty(order): - # Trade has been cancelled on exchange - # Handling of this will happen in check_handle_timeout. - return True - trade.update(order) + if self.exchange.check_order_canceled_empty(order): + # Trade has been cancelled on exchange + # Handling of this will happen in check_handle_timeout. + return True + trade.update(order) - # Updating wallets when order is closed - if not trade.is_open: - self.wallets.update() - - return False + # Updating wallets when order is closed + if not trade.is_open: + self.wallets.update() def apply_fee_conditional(self, trade: Trade, trade_base_currency: str, amount: float, fee_abs: float) -> float: diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index b426368c9..2ff51dffd 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1140,7 +1140,8 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, 'status': 'closed', 'type': 'stop_loss_limit', 'price': 3, - 'average': 2 + 'average': 2, + 'amount': limit_buy_order['amount'], }) mocker.patch('freqtrade.exchange.Exchange.get_order', stoploss_order_hit) assert freqtrade.handle_stoploss_on_exchange(trade) is True diff --git a/tests/test_integration.py b/tests/test_integration.py index 90cdde61f..1396e86f5 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -44,6 +44,8 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, } stoploss_order_closed = stoploss_order_open.copy() stoploss_order_closed['status'] = 'closed' + stoploss_order_closed['filled'] = stoploss_order_closed['amount'] + # Sell first trade based on stoploss, keep 2nd and 3rd trade open stoploss_order_mock = MagicMock( side_effect=[stoploss_order_closed, stoploss_order_open, stoploss_order_open]) @@ -98,7 +100,7 @@ def test_may_execute_sell_stoploss_on_exchange_multi(default_conf, ticker, fee, assert cancel_order_mock.call_count == 1 # Wallets must be updated between stoploss cancellation and selling, and will be updated again # during update_trade_state - assert wallets_mock.call_count == 3 + assert wallets_mock.call_count == 4 trade = trades[0] assert trade.sell_reason == SellType.STOPLOSS_ON_EXCHANGE.value From 255ff6cd0641d2f5796038d34ae4ead799eecff3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 13 May 2020 20:52:40 +0200 Subject: [PATCH 2310/3421] Should return False if it's not been cancelled empty --- freqtrade/freqtradebot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 8732533f7..7b012d7d3 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1162,6 +1162,7 @@ class FreqtradeBot: # Updating wallets when order is closed if not trade.is_open: self.wallets.update() + return False def apply_fee_conditional(self, trade: Trade, trade_base_currency: str, amount: float, fee_abs: float) -> float: From ced812660bf6a0aeb41923ca82fada4c5df5c52c Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Wed, 13 May 2020 22:37:50 +0300 Subject: [PATCH 2311/3421] Minor fix in the strategy docs --- docs/strategy-customization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index d5bc76c65..dd451128c 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -331,7 +331,7 @@ class Awesomestrategy(IStrategy): #### Get data for non-tradeable pairs Data for additional, informative pairs (reference pairs) can be beneficial for some strategies. -Ohlcv data for these pairs will be downloaded as part of the regular whitelist refresh process and is available via `DataProvider` just as other pairs (see above). +Ohlcv data for these pairs will be downloaded as part of the regular whitelist refresh process and is available via `DataProvider` just as other pairs (see below). These parts will **not** be traded unless they are also specified in the pair whitelist, or have been selected by Dynamic Whitelisting. The pairs need to be specified as tuples in the format `("pair", "interval")`, with pair as the first and time interval as the second argument. From aae096c6ae30cbff0af2bf0db53f493b363e68cc Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 14 May 2020 13:36:48 +0300 Subject: [PATCH 2312/3421] Handle fetching ticker for non-existing pair safe way --- freqtrade/data/dataprovider.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 2efceae62..7ada4f642 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -10,7 +10,7 @@ from typing import Any, Dict, List, Optional, Tuple from pandas import DataFrame from freqtrade.data.history import load_pair_history -from freqtrade.exceptions import OperationalException +from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.exchange import Exchange from freqtrade.state import RunMode @@ -97,9 +97,14 @@ class DataProvider: def ticker(self, pair: str): """ - Return last ticker data + Return last ticker data from exchange + :param pair: Pair to get the data for + :return: Ticker dict from exchange or empty dict if ticker is not available for the pair """ - return self._exchange.fetch_ticker(pair) + try: + return self._exchange.fetch_ticker(pair) + except DependencyException: + return {} def orderbook(self, pair: str, maximum: int) -> Dict[str, List]: """ From 38fd361c6865ec3986748b27f25bb90452472c1c Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 14 May 2020 14:40:40 +0200 Subject: [PATCH 2313/3421] Add note about PI and docker --- docs/docker.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/docker.md b/docs/docker.md index ad98864a6..9e4e8eefc 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -22,6 +22,9 @@ Freqtrade provides an official Docker image on [Dockerhub](https://hub.docker.co !!! Note All below comands use relative directories and will have to be executed from the directory containing the `docker-compose.yml` file. +!!! Note "Docker on Raspberry" + If you're running freqtrade on a Raspberry PI, you must change the image from `freqtradeorg/freqtrade:master` to `freqtradeorg/freqtrade:master_pi` or ``freqtradeorg/freqtrade:develop_pi`, otherwise the image will not work. + ### Docker quick start Create a new directory and place the [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) in this directory. From 78b81bac48e2fbb5acee8f2f2ca897620b10a929 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Thu, 14 May 2020 16:43:16 +0300 Subject: [PATCH 2314/3421] Add test for dp.ticker() --- tests/data/test_dataprovider.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index 3e42abb95..32ddfe99e 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -154,6 +154,23 @@ def test_market(mocker, default_conf, markets): assert res is None +def test_ticker(mocker, default_conf, tickers, markets): + api_mock = MagicMock() + api_mock.markets = markets + api_mock.fetch_ticker = MagicMock(side_effect=lambda x: tickers().get(x)) + exchange = get_patched_exchange(mocker, default_conf, api_mock=api_mock) + + dp = DataProvider(default_conf, exchange) + res = dp.ticker('ETH/BTC') + + assert type(res) is dict + assert 'symbol' in res + assert res['symbol'] == 'ETH/BTC' + + res = dp.ticker('UNITTEST/BTC') + assert res == {} + + def test_current_whitelist(mocker, default_conf, tickers): # patch default conf to volumepairlist default_conf['pairlists'][0] = {'method': 'VolumePairList', "number_assets": 5} From fb92300cfab9da7069b506a9943699d268b8066e Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 14 May 2020 15:48:23 +0200 Subject: [PATCH 2315/3421] Update docs/docker.md Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docker.md b/docs/docker.md index 9e4e8eefc..92478088a 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -23,7 +23,7 @@ Freqtrade provides an official Docker image on [Dockerhub](https://hub.docker.co All below comands use relative directories and will have to be executed from the directory containing the `docker-compose.yml` file. !!! Note "Docker on Raspberry" - If you're running freqtrade on a Raspberry PI, you must change the image from `freqtradeorg/freqtrade:master` to `freqtradeorg/freqtrade:master_pi` or ``freqtradeorg/freqtrade:develop_pi`, otherwise the image will not work. + If you're running freqtrade on a Raspberry PI, you must change the image from `freqtradeorg/freqtrade:master` to `freqtradeorg/freqtrade:master_pi` or `freqtradeorg/freqtrade:develop_pi`, otherwise the image will not work. ### Docker quick start From 481f9ba6d6f10befedcddaddd63d973ed3aa7cb0 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 15 May 2020 03:00:55 +0300 Subject: [PATCH 2316/3421] Use list comprehension instead of filter() --- freqtrade/pairlist/VolumePairList.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index eb44fe725..7ac350de9 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -26,6 +26,7 @@ class VolumePairList(IPairList): raise OperationalException( f'`number_assets` not specified. Please check your configuration ' 'for "pairlist.config.number_assets"') + self._number_pairs = self._pairlistconfig['number_assets'] self._sort_key = self._pairlistconfig.get('sort_key', 'quoteVolume') self._min_value = self._pairlistconfig.get('min_value', 0) @@ -36,9 +37,11 @@ class VolumePairList(IPairList): 'Exchange does not support dynamic whitelist.' 'Please edit your config and restart the bot' ) + if not self._validate_keys(self._sort_key): raise OperationalException( f'key {self._sort_key} not in {SORT_VALUES}') + if self._sort_key != 'quoteVolume': logger.warning( "DEPRECATED: using any key other than quoteVolume for VolumePairList is deprecated." @@ -81,7 +84,9 @@ class VolumePairList(IPairList): self._sort_key, self._min_value) else: pairs = pairlist + self.log_on_refresh(logger.info, f"Searching {self._number_pairs} pairs: {pairs}") + return pairs def _gen_pair_whitelist(self, pairlist: List[str], tickers: Dict, @@ -100,11 +105,11 @@ class VolumePairList(IPairList): if (self._exchange.get_pair_quote_currency(k) == base_currency and v[key] is not None)] else: - # If other pairlist is in front, use the incomming pairlist. + # If other pairlist is in front, use the incoming pairlist. filtered_tickers = [v for k, v in tickers.items() if k in pairlist] if min_val > 0: - filtered_tickers = list(filter(lambda t: t[key] > min_val, filtered_tickers)) + filtered_tickers = [v for v in filtered_tickers if v[key] > min_val] sorted_tickers = sorted(filtered_tickers, reverse=True, key=lambda t: t[key]) From 2924b70fd70861555cfb664e0ce8c5ab3d6d359c Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 15 May 2020 03:41:41 +0300 Subject: [PATCH 2317/3421] Cosmetics in tests/pairlist/ --- tests/pairlist/test_pairlist.py | 48 ++++++++++++++++----------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index f9e2893c3..10886d87c 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -69,44 +69,44 @@ def test_log_on_refresh(mocker, static_pl_conf, markets, tickers): def test_load_pairlist_noexist(mocker, markets, default_conf): - bot = get_patched_freqtradebot(mocker, default_conf) + freqtrade = get_patched_freqtradebot(mocker, default_conf) mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) - plm = PairListManager(bot.exchange, default_conf) + plm = PairListManager(freqtrade.exchange, default_conf) with pytest.raises(OperationalException, match=r"Impossible to load Pairlist 'NonexistingPairList'. " r"This class does not exist or contains Python code errors."): - PairListResolver.load_pairlist('NonexistingPairList', bot.exchange, plm, + PairListResolver.load_pairlist('NonexistingPairList', freqtrade.exchange, plm, default_conf, {}, 1) def test_refresh_market_pair_not_in_whitelist(mocker, markets, static_pl_conf): - freqtradebot = get_patched_freqtradebot(mocker, static_pl_conf) + freqtrade = get_patched_freqtradebot(mocker, static_pl_conf) mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets)) - freqtradebot.pairlists.refresh_pairlist() + freqtrade.pairlists.refresh_pairlist() # List ordered by BaseVolume whitelist = ['ETH/BTC', 'TKN/BTC'] # Ensure all except those in whitelist are removed - assert set(whitelist) == set(freqtradebot.pairlists.whitelist) + assert set(whitelist) == set(freqtrade.pairlists.whitelist) # Ensure config dict hasn't been changed assert (static_pl_conf['exchange']['pair_whitelist'] == - freqtradebot.config['exchange']['pair_whitelist']) + freqtrade.config['exchange']['pair_whitelist']) def test_refresh_static_pairlist(mocker, markets, static_pl_conf): - freqtradebot = get_patched_freqtradebot(mocker, static_pl_conf) + freqtrade = get_patched_freqtradebot(mocker, static_pl_conf) mocker.patch.multiple( 'freqtrade.exchange.Exchange', exchange_has=MagicMock(return_value=True), markets=PropertyMock(return_value=markets), ) - freqtradebot.pairlists.refresh_pairlist() + freqtrade.pairlists.refresh_pairlist() # List ordered by BaseVolume whitelist = ['ETH/BTC', 'TKN/BTC'] # Ensure all except those in whitelist are removed - assert set(whitelist) == set(freqtradebot.pairlists.whitelist) - assert static_pl_conf['exchange']['pair_blacklist'] == freqtradebot.pairlists.blacklist + assert set(whitelist) == set(freqtrade.pairlists.whitelist) + assert static_pl_conf['exchange']['pair_blacklist'] == freqtrade.pairlists.blacklist def test_refresh_pairlist_dynamic(mocker, shitcoinmarkets, tickers, whitelist_conf): @@ -116,7 +116,7 @@ def test_refresh_pairlist_dynamic(mocker, shitcoinmarkets, tickers, whitelist_co get_tickers=tickers, exchange_has=MagicMock(return_value=True), ) - bot = get_patched_freqtradebot(mocker, whitelist_conf) + freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) # Remock markets with shitcoinmarkets since get_patched_freqtradebot uses the markets fixture mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -124,9 +124,9 @@ def test_refresh_pairlist_dynamic(mocker, shitcoinmarkets, tickers, whitelist_co ) # argument: use the whitelist dynamically by exchange-volume whitelist = ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC'] - bot.pairlists.refresh_pairlist() + freqtrade.pairlists.refresh_pairlist() - assert whitelist == bot.pairlists.whitelist + assert whitelist == freqtrade.pairlists.whitelist whitelist_conf['pairlists'] = [{'method': 'VolumePairList', 'config': {} @@ -136,7 +136,7 @@ def test_refresh_pairlist_dynamic(mocker, shitcoinmarkets, tickers, whitelist_co with pytest.raises(OperationalException, match=r'`number_assets` not specified. Please check your configuration ' r'for "pairlist.config.number_assets"'): - PairListManager(bot.exchange, whitelist_conf) + PairListManager(freqtrade.exchange, whitelist_conf) def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): @@ -144,13 +144,13 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): 'freqtrade.exchange.Exchange', exchange_has=MagicMock(return_value=True), ) - freqtradebot = get_patched_freqtradebot(mocker, whitelist_conf) + freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets_empty)) # argument: use the whitelist dynamically by exchange-volume whitelist = [] whitelist_conf['exchange']['pair_whitelist'] = [] - freqtradebot.pairlists.refresh_pairlist() + freqtrade.pairlists.refresh_pairlist() pairslist = whitelist_conf['exchange']['pair_whitelist'] assert set(whitelist) == set(pairslist) @@ -312,18 +312,18 @@ def test_volumepairlist_caching(mocker, markets, whitelist_conf, tickers): exchange_has=MagicMock(return_value=True), get_tickers=tickers ) - bot = get_patched_freqtradebot(mocker, whitelist_conf) - assert bot.pairlists._pairlists[0]._last_refresh == 0 + freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) + assert freqtrade.pairlists._pairlists[0]._last_refresh == 0 assert tickers.call_count == 0 - bot.pairlists.refresh_pairlist() + freqtrade.pairlists.refresh_pairlist() assert tickers.call_count == 1 - assert bot.pairlists._pairlists[0]._last_refresh != 0 - lrf = bot.pairlists._pairlists[0]._last_refresh - bot.pairlists.refresh_pairlist() + assert freqtrade.pairlists._pairlists[0]._last_refresh != 0 + lrf = freqtrade.pairlists._pairlists[0]._last_refresh + freqtrade.pairlists.refresh_pairlist() assert tickers.call_count == 1 # Time should not be updated. - assert bot.pairlists._pairlists[0]._last_refresh == lrf + assert freqtrade.pairlists._pairlists[0]._last_refresh == lrf def test_pairlistmanager_no_pairlist(mocker, markets, whitelist_conf, caplog): From f0c3a0d2f88ce57443c3313100cdb796f8c46f4a Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 15 May 2020 03:59:13 +0300 Subject: [PATCH 2318/3421] Simplify VolumePairList --- freqtrade/pairlist/VolumePairList.py | 25 ++++++++++++------------- tests/pairlist/test_pairlist.py | 2 +- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 7ac350de9..602a2e7cb 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -27,6 +27,7 @@ class VolumePairList(IPairList): f'`number_assets` not specified. Please check your configuration ' 'for "pairlist.config.number_assets"') + self._stake_currency = config['stake_currency'] self._number_pairs = self._pairlistconfig['number_assets'] self._sort_key = self._pairlistconfig.get('sort_key', 'quoteVolume') self._min_value = self._pairlistconfig.get('min_value', 0) @@ -79,9 +80,7 @@ class VolumePairList(IPairList): (self._last_refresh + self.refresh_period < datetime.now().timestamp())): self._last_refresh = int(datetime.now().timestamp()) - pairs = self._gen_pair_whitelist(pairlist, tickers, - self._config['stake_currency'], - self._sort_key, self._min_value) + pairs = self._gen_pair_whitelist(pairlist, tickers) else: pairs = pairlist @@ -89,29 +88,29 @@ class VolumePairList(IPairList): return pairs - def _gen_pair_whitelist(self, pairlist: List[str], tickers: Dict, - base_currency: str, key: str, min_val: int) -> List[str]: + def _gen_pair_whitelist(self, pairlist: List[str], tickers: Dict) -> List[str]: """ Updates the whitelist with with a dynamically generated list - :param base_currency: base currency as str - :param key: sort key (defaults to 'quoteVolume') + :param pairlist: pairlist to filter or sort :param tickers: Tickers (from exchange.get_tickers()). :return: List of pairs """ if self._pairlist_pos == 0: # If VolumePairList is the first in the list, use fresh pairlist # Check if pair quote currency equals to the stake currency. - filtered_tickers = [v for k, v in tickers.items() - if (self._exchange.get_pair_quote_currency(k) == base_currency - and v[key] is not None)] + filtered_tickers = [ + v for k, v in tickers.items() + if (self._exchange.get_pair_quote_currency(k) == self._stake_currency + and v[self._sort_key] is not None)] else: # If other pairlist is in front, use the incoming pairlist. filtered_tickers = [v for k, v in tickers.items() if k in pairlist] - if min_val > 0: - filtered_tickers = [v for v in filtered_tickers if v[key] > min_val] + if self._min_value > 0: + filtered_tickers = [ + v for v in filtered_tickers if v[self._sort_key] > self._min_value] - sorted_tickers = sorted(filtered_tickers, reverse=True, key=lambda t: t[key]) + sorted_tickers = sorted(filtered_tickers, reverse=True, key=lambda t: t[self._sort_key]) # Validate whitelist to only have active market pairs pairs = self._whitelist_for_active_markets([s['symbol'] for s in sorted_tickers]) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 10886d87c..61f6b4bd5 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -206,6 +206,7 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t pairlists, base_currency, whitelist_result, caplog) -> None: whitelist_conf['pairlists'] = pairlists + whitelist_conf['stake_currency'] = base_currency mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) freqtrade = get_patched_freqtradebot(mocker, whitelist_conf) @@ -215,7 +216,6 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t markets=PropertyMock(return_value=shitcoinmarkets), ) - freqtrade.config['stake_currency'] = base_currency freqtrade.pairlists.refresh_pairlist() whitelist = freqtrade.pairlists.whitelist From afa7a5846b29eaf0794a06e5ad9ec8514aca0fac Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 15 May 2020 04:05:31 +0300 Subject: [PATCH 2319/3421] Simplify PriceFilter --- freqtrade/pairlist/PriceFilter.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index 2f7e98e24..a7c2bd2d9 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -38,14 +38,12 @@ class PriceFilter(IPairList): :return: True if the pair can stay, false if it should be removed """ if ticker['last'] is None: - self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, because " "ticker['last'] is empty (Usually no trade in the last 24h).") return False - compare = ticker['last'] + self._exchange.price_get_one_pip(ticker['symbol'], - ticker['last']) - changeperc = (compare - ticker['last']) / ticker['last'] + compare = self._exchange.price_get_one_pip(ticker['symbol'], ticker['last']) + changeperc = compare / ticker['last'] if changeperc > self._low_price_ratio: self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, " f"because 1 unit is {changeperc * 100:.3f}%") From 794ed304b1a3356d010feafe7d57816dc07b657e Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 15 May 2020 04:17:23 +0300 Subject: [PATCH 2320/3421] Make stoploss an attribute --- freqtrade/pairlist/PrecisionFilter.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 2a2ba46b7..35eed5392 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -1,6 +1,6 @@ import logging from copy import deepcopy -from typing import Dict, List +from typing import Any, Dict, List from freqtrade.pairlist.IPairList import IPairList @@ -9,6 +9,16 @@ logger = logging.getLogger(__name__) class PrecisionFilter(IPairList): + def __init__(self, exchange, pairlistmanager, + config: Dict[str, Any], pairlistconfig: Dict[str, Any], + pairlist_pos: int) -> None: + super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) + + self._stoploss = self._config.get('stoploss') + if self._stoploss is not None: + # Precalculate sanitized stoploss value to avoid recalculation for every pair + self._stoploss = 1 - abs(self._stoploss) + @property def needstickers(self) -> bool: """ @@ -49,15 +59,12 @@ class PrecisionFilter(IPairList): """ Filters and sorts pairlists and assigns and returns them again. """ - stoploss = self._config.get('stoploss') - if stoploss is not None: - # Precalculate sanitized stoploss value to avoid recalculation for every pair - stoploss = 1 - abs(stoploss) # Copy list since we're modifying this list for p in deepcopy(pairlist): ticker = tickers.get(p) # Filter out assets which would not allow setting a stoploss - if not ticker or (stoploss and not self._validate_precision_filter(ticker, stoploss)): + if not ticker or (self._stoploss + and not self._validate_precision_filter(ticker, self._stoploss)): pairlist.remove(p) continue From 2aa80f915d5a494fc30637c5f785d9a92f05c72f Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 15 May 2020 04:24:18 +0300 Subject: [PATCH 2321/3421] Cosmetics: improve readability --- freqtrade/pairlist/PrecisionFilter.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 35eed5392..7491cf1b0 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -44,15 +44,19 @@ class PrecisionFilter(IPairList): :return: True if the pair can stay, false if it should be removed """ stop_price = ticker['ask'] * stoploss + # Adjust stop-prices to precision sp = self._exchange.price_to_precision(ticker["symbol"], stop_price) + stop_gap_price = self._exchange.price_to_precision(ticker["symbol"], stop_price * 0.99) logger.debug(f"{ticker['symbol']} - {sp} : {stop_gap_price}") + if sp <= stop_gap_price: self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, " f"because stop price {sp} would be <= stop limit {stop_gap_price}") return False + return True def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: From cbb2ce3708b7f1a88e6b255ef2006ac98b360788 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 15 May 2020 04:55:28 +0300 Subject: [PATCH 2322/3421] Simplify PriceFilter --- freqtrade/pairlist/PriceFilter.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index a7c2bd2d9..166515148 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -58,14 +58,12 @@ class PriceFilter(IPairList): :param tickers: Tickers (from exchange.get_tickers()). May be cached. :return: new whitelist """ - # Copy list since we're modifying this list - for p in deepcopy(pairlist): - ticker = tickers.get(p) - if not ticker: - pairlist.remove(p) - - # Filter out assets which would not allow setting a stoploss - if self._low_price_ratio and not self._validate_ticker_lowprice(ticker): - pairlist.remove(p) + if self._low_price_ratio: + # Copy list since we're modifying this list + for p in deepcopy(pairlist): + ticker = tickers[p] + # Filter out assets which would not allow setting a stoploss + if not self._validate_ticker_lowprice(ticker): + pairlist.remove(p) return pairlist From 143e6f52af7d9f177975226e4a699d23338d51d4 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 15 May 2020 05:14:06 +0300 Subject: [PATCH 2323/3421] Simplify SpreadFilter --- freqtrade/pairlist/PrecisionFilter.py | 17 +++++++------- freqtrade/pairlist/SpreadFilter.py | 33 ++++++++++++++++----------- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 7491cf1b0..422cd865c 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -41,7 +41,7 @@ class PrecisionFilter(IPairList): :param ticker: ticker dict as returned from ccxt.load_markets() :param stoploss: stoploss value as set in the configuration (already cleaned to be 1 - stoploss) - :return: True if the pair can stay, false if it should be removed + :return: True if the pair can stay, False if it should be removed """ stop_price = ticker['ask'] * stoploss @@ -63,13 +63,12 @@ class PrecisionFilter(IPairList): """ Filters and sorts pairlists and assigns and returns them again. """ - # Copy list since we're modifying this list - for p in deepcopy(pairlist): - ticker = tickers.get(p) - # Filter out assets which would not allow setting a stoploss - if not ticker or (self._stoploss - and not self._validate_precision_filter(ticker, self._stoploss)): - pairlist.remove(p) - continue + if self._stoploss: + # Copy list since we're modifying this list + for p in deepcopy(pairlist): + ticker = tickers[p] + # Filter out assets which would not allow setting a stoploss + if not self._validate_precision_filter(ticker, self._stoploss): + pairlist.remove(p) return pairlist diff --git a/freqtrade/pairlist/SpreadFilter.py b/freqtrade/pairlist/SpreadFilter.py index 49731ef11..5b886135f 100644 --- a/freqtrade/pairlist/SpreadFilter.py +++ b/freqtrade/pairlist/SpreadFilter.py @@ -31,8 +31,24 @@ class SpreadFilter(IPairList): return (f"{self.name} - Filtering pairs with ask/bid diff above " f"{self._max_spread_ratio * 100}%.") - def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: + def _validate_spread(self, ticker: dict) -> bool: + """ + Validate spread for the ticker + :param ticker: ticker dict as returned from ccxt.load_markets() + :return: True if the pair can stay, False if it should be removed + """ + if 'bid' in ticker and 'ask' in ticker: + spread = 1 - ticker['bid'] / ticker['ask'] + if spread > self._max_spread_ratio: + self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, " + f"because spread {spread * 100:.3f}% >" + f"{self._max_spread_ratio * 100}%") + return False + else: + return True + return False + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: """ Filters and sorts pairlist and returns the whitelist again. Called on each bot iteration - please use internal caching if necessary @@ -41,19 +57,10 @@ class SpreadFilter(IPairList): :return: new whitelist """ # Copy list since we're modifying this list - - spread = None for p in deepcopy(pairlist): - ticker = tickers.get(p) - assert ticker is not None - if 'bid' in ticker and 'ask' in ticker: - spread = 1 - ticker['bid'] / ticker['ask'] - if not ticker or spread > self._max_spread_ratio: - self.log_on_refresh(logger.info, f"Removed {ticker['symbol']} from whitelist, " - f"because spread {spread * 100:.3f}% >" - f"{self._max_spread_ratio * 100}%") - pairlist.remove(p) - else: + ticker = tickers[p] + # Filter out assets + if not self._validate_spread(ticker): pairlist.remove(p) return pairlist From 92b6d3e2fadb0d233839870e4a1e40f94eb496f8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 15 May 2020 08:04:14 +0200 Subject: [PATCH 2324/3421] Adjust test to reflect correct behaviour --- tests/exchange/test_binance.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index e4599dcd7..1753af363 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -42,7 +42,8 @@ def test_stoploss_order_binance(default_conf, mocker): assert api_mock.create_order.call_args_list[0][1]['type'] == order_type assert api_mock.create_order.call_args_list[0][1]['side'] == 'sell' assert api_mock.create_order.call_args_list[0][1]['amount'] == 1 - assert api_mock.create_order.call_args_list[0][1]['price'] == 220 + # Price should be 1% below stopprice + assert api_mock.create_order.call_args_list[0][1]['price'] == 220 * 0.99 assert api_mock.create_order.call_args_list[0][1]['params'] == {'stopPrice': 220} # test exception handling From a7b469e83d67e0f0201e7ef0489ca5aab83b6dc6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 15 May 2020 08:09:53 +0200 Subject: [PATCH 2325/3421] Add test verifying correct price reduction on limit stoploss orders --- tests/exchange/test_binance.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index 1753af363..52faa284b 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -9,7 +9,12 @@ from freqtrade.exceptions import (DependencyException, InvalidOrderException, from tests.conftest import get_patched_exchange -def test_stoploss_order_binance(default_conf, mocker): +@pytest.mark.parametrize('limitratio,expected', [ + (None, 220 * 0.99), + (0.99, 220 * 0.99), + (0.98, 220 * 0.98), +]) +def test_stoploss_order_binance(default_conf, mocker, limitratio, expected): api_mock = MagicMock() order_id = 'test_prod_buy_{}'.format(randint(0, 10 ** 6)) order_type = 'stop_loss_limit' @@ -20,7 +25,6 @@ def test_stoploss_order_binance(default_conf, mocker): 'foo': 'bar' } }) - default_conf['dry_run'] = False mocker.patch('freqtrade.exchange.Exchange.amount_to_precision', lambda s, x, y: y) mocker.patch('freqtrade.exchange.Exchange.price_to_precision', lambda s, x, y: y) @@ -32,8 +36,8 @@ def test_stoploss_order_binance(default_conf, mocker): order_types={'stoploss_on_exchange_limit_ratio': 1.05}) api_mock.create_order.reset_mock() - - order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types={}) + order_types = {} if limitratio is None else {'stoploss_on_exchange_limit_ratio': limitratio} + order = exchange.stoploss(pair='ETH/BTC', amount=1, stop_price=220, order_types=order_types) assert 'id' in order assert 'info' in order @@ -43,7 +47,7 @@ def test_stoploss_order_binance(default_conf, mocker): assert api_mock.create_order.call_args_list[0][1]['side'] == 'sell' assert api_mock.create_order.call_args_list[0][1]['amount'] == 1 # Price should be 1% below stopprice - assert api_mock.create_order.call_args_list[0][1]['price'] == 220 * 0.99 + assert api_mock.create_order.call_args_list[0][1]['price'] == expected assert api_mock.create_order.call_args_list[0][1]['params'] == {'stopPrice': 220} # test exception handling From 33091f95c29734c013d17acb88264dd2275f1ecb Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 15 May 2020 06:24:54 +0000 Subject: [PATCH 2326/3421] Bump python from 3.8.2-slim-buster to 3.8.3-slim-buster Bumps python from 3.8.2-slim-buster to 3.8.3-slim-buster. Signed-off-by: dependabot-preview[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d986f20ae..b6333fb13 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8.2-slim-buster +FROM python:3.8.3-slim-buster RUN apt-get update \ && apt-get -y install curl build-essential libssl-dev \ From 323b491962e468a75a99d48a21ee79b4ae6dac3e Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 15 May 2020 16:35:48 +0300 Subject: [PATCH 2327/3421] Add description and example for dp.ticker() to the docs --- docs/strategy-customization.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index dd451128c..42474c2dc 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -367,9 +367,10 @@ Please always check the mode of operation to select the correct method to get da - [`current_whitelist()`](#current_whitelist) - Returns a current list of whitelisted pairs. Useful for accessing dynamic whitelists (ie. VolumePairlist) - [`get_pair_dataframe(pair, timeframe)`](#get_pair_dataframepair-timeframe) - This is a universal method, which returns either historical data (for backtesting) or cached live data (for the Dry-Run and Live-Run modes). - `historic_ohlcv(pair, timeframe)` - Returns historical data stored on disk. -- `market(pair)` - Returns market data for the pair: fees, limits, precisions, activity flag, etc. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#markets) for more details on Market data structure. +- `market(pair)` - Returns market data for the pair: fees, limits, precisions, activity flag, etc. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#markets) for more details on the Market data structure. - `ohlcv(pair, timeframe)` - Currently cached candle (OHLCV) data for the pair, returns DataFrame or empty DataFrame. - [`orderbook(pair, maximum)`](#orderbookpair-maximum) - Returns latest orderbook data for the pair, a dict with bids/asks with a total of `maximum` entries. +- `ticker(pair)` - Returns current ticker data for the pair. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#price-tickers) for more details on the Ticker data structure. - `runmode` - Property containing the current runmode. #### Example Usages: @@ -451,6 +452,17 @@ if self.dp: The order book is not part of the historic data which means backtesting and hyperopt will not work if this method is used. +#### *ticker(pair)* + +``` python +if self.dp: + if self.dp.runmode.value in ('live', 'dry_run'): + ticker = self.dp.ticker(metadata['pair']) + dataframe['last_price'] = ticker['last'] + dataframe['volume24h'] = ticker['quoteVolume'] + dataframe['vwap'] = ticker['vwap'] +``` + *** ### Additional data (Wallets) From 06b12c0a7095e0b4ee611694cbff26bdb88fed1e Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 15 May 2020 18:46:28 +0300 Subject: [PATCH 2328/3421] Add warning to docs for ticker data --- docs/strategy-customization.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 42474c2dc..c50266183 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -370,7 +370,7 @@ Please always check the mode of operation to select the correct method to get da - `market(pair)` - Returns market data for the pair: fees, limits, precisions, activity flag, etc. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#markets) for more details on the Market data structure. - `ohlcv(pair, timeframe)` - Currently cached candle (OHLCV) data for the pair, returns DataFrame or empty DataFrame. - [`orderbook(pair, maximum)`](#orderbookpair-maximum) - Returns latest orderbook data for the pair, a dict with bids/asks with a total of `maximum` entries. -- `ticker(pair)` - Returns current ticker data for the pair. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#price-tickers) for more details on the Ticker data structure. +- [`ticker(pair)`](#tickerpair) - Returns current ticker data for the pair. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#price-tickers) for more details on the Ticker data structure. - `runmode` - Property containing the current runmode. #### Example Usages: @@ -463,6 +463,12 @@ if self.dp: dataframe['vwap'] = ticker['vwap'] ``` +!!! Warning + Although the ticker data structure is a part of the ccxt Unified Interface, the values returned by this method can + vary for different exchanges. For instance, many exchanges do not return `vwap` values, the FTX exchange + does not always fills in the `last` field (so it can be None), etc. So you need to carefully verify the ticker + data returned from the exchange you are working with. + *** ### Additional data (Wallets) From d84cb3be77b9aeda62331594ef1ce2500e5f7ee3 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Fri, 15 May 2020 19:19:52 +0300 Subject: [PATCH 2329/3421] Improve test --- tests/data/test_dataprovider.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index 32ddfe99e..c2d6e82f1 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -5,7 +5,7 @@ import pytest from freqtrade.data.dataprovider import DataProvider from freqtrade.pairlist.pairlistmanager import PairListManager -from freqtrade.exceptions import OperationalException +from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.state import RunMode from tests.conftest import get_patched_exchange @@ -154,19 +154,20 @@ def test_market(mocker, default_conf, markets): assert res is None -def test_ticker(mocker, default_conf, tickers, markets): - api_mock = MagicMock() - api_mock.markets = markets - api_mock.fetch_ticker = MagicMock(side_effect=lambda x: tickers().get(x)) - exchange = get_patched_exchange(mocker, default_conf, api_mock=api_mock) - +def test_ticker(mocker, default_conf, tickers): + ticker_mock = MagicMock(return_value=tickers()['ETH/BTC']) + mocker.patch("freqtrade.exchange.Exchange.fetch_ticker", ticker_mock) + exchange = get_patched_exchange(mocker, default_conf) dp = DataProvider(default_conf, exchange) res = dp.ticker('ETH/BTC') - assert type(res) is dict assert 'symbol' in res assert res['symbol'] == 'ETH/BTC' + ticker_mock = MagicMock(side_effect=DependencyException('Pair not found')) + mocker.patch("freqtrade.exchange.Exchange.fetch_ticker", ticker_mock) + exchange = get_patched_exchange(mocker, default_conf) + dp = DataProvider(default_conf, exchange) res = dp.ticker('UNITTEST/BTC') assert res == {} From ac076ee0af6b0ee95b902534af2a4ac51c855da8 Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Fri, 15 May 2020 21:51:33 +0300 Subject: [PATCH 2330/3421] Update docs/strategy-customization.md Co-authored-by: Matthias --- docs/strategy-customization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index c50266183..7197b0fba 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -467,7 +467,7 @@ if self.dp: Although the ticker data structure is a part of the ccxt Unified Interface, the values returned by this method can vary for different exchanges. For instance, many exchanges do not return `vwap` values, the FTX exchange does not always fills in the `last` field (so it can be None), etc. So you need to carefully verify the ticker - data returned from the exchange you are working with. + data returned from the exchange and add appropriate error handling / defaults. *** ### Additional data (Wallets) From 61f6acb5c99734542971e49b170663eda05a93f5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 16 May 2020 07:07:24 +0200 Subject: [PATCH 2331/3421] Add cors support - needed for UI --- freqtrade/rpc/api_server.py | 2 ++ requirements-common.txt | 1 + setup.py | 2 +- tests/rpc/test_rpc_apiserver.py | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 68f4b1ca9..61eacf639 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -7,6 +7,7 @@ from typing import Any, Callable, Dict from arrow import Arrow from flask import Flask, jsonify, request from flask.json import JSONEncoder +from flask_cors import CORS from flask_jwt_extended import (JWTManager, create_access_token, create_refresh_token, get_jwt_identity, jwt_refresh_token_required, @@ -88,6 +89,7 @@ class ApiServer(RPC): self._config = freqtrade.config self.app = Flask(__name__) + self._cors = CORS(self.app, resources={r"/api/*": {"origins": "*"}}) # Setup the Flask-JWT-Extended extension self.app.config['JWT_SECRET_KEY'] = self._config['api_server'].get( diff --git a/requirements-common.txt b/requirements-common.txt index 02c4ebc20..017974c9e 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -26,6 +26,7 @@ sdnotify==0.3.2 # Api server flask==1.1.2 flask-jwt-extended==3.24.1 +flask-cors==3.0.8 # Support for colorized terminal output colorama==0.4.3 diff --git a/setup.py b/setup.py index 8c0de095e..20963a15f 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ if readme_file.is_file(): readme_long = (Path(__file__).parent / "README.md").read_text() # Requirements used for submodules -api = ['flask', 'flask-jwt-extended'] +api = ['flask', 'flask-jwt-extended', 'flask-cors'] plot = ['plotly>=4.0'] hyperopt = [ 'scipy', diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index ffdd5be15..b953097d5 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -49,6 +49,7 @@ def client_get(client, url): def assert_response(response, expected_code=200): assert response.status_code == expected_code assert response.content_type == "application/json" + assert ('Access-Control-Allow-Origin', '*') in response.headers._list def test_api_not_found(botclient): From 1b3864ebf8eb29f8e089e721d17377f22ed44384 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 16 May 2020 09:21:36 +0300 Subject: [PATCH 2332/3421] Make flake happy --- freqtrade/pairlist/VolumePairList.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 602a2e7cb..46ff4b9c8 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -101,7 +101,7 @@ class VolumePairList(IPairList): filtered_tickers = [ v for k, v in tickers.items() if (self._exchange.get_pair_quote_currency(k) == self._stake_currency - and v[self._sort_key] is not None)] + and v[self._sort_key] is not None)] else: # If other pairlist is in front, use the incoming pairlist. filtered_tickers = [v for k, v in tickers.items() if k in pairlist] From c3f3242f28f01b282c6970b45a3f3bbfeea7955c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 16 May 2020 11:05:34 +0200 Subject: [PATCH 2333/3421] Add tests for cancel_open_orders_on_exit --- tests/test_freqtradebot.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 8adc834cf..8e3bc8928 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -48,13 +48,31 @@ def test_freqtradebot_state(mocker, default_conf, markets) -> None: assert freqtrade.state is State.STOPPED -def test_cleanup(mocker, default_conf, caplog) -> None: - mock_cleanup = MagicMock() - mocker.patch('freqtrade.persistence.cleanup', mock_cleanup) +def test_process_stopped(mocker, default_conf) -> None: + + freqtrade = get_patched_freqtradebot(mocker, default_conf) + coo_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.cancel_all_open_orders') + freqtrade.process_stopped() + assert coo_mock.call_count == 0 + + default_conf['cancel_open_orders_on_exit'] = True + freqtrade = get_patched_freqtradebot(mocker, default_conf) + freqtrade.process_stopped() + assert coo_mock.call_count == 1 + + +def test_bot_cleanup(mocker, default_conf, caplog) -> None: + mock_cleanup = mocker.patch('freqtrade.persistence.cleanup') + coo_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.cancel_all_open_orders') freqtrade = get_patched_freqtradebot(mocker, default_conf) freqtrade.cleanup() assert log_has('Cleaning up modules ...', caplog) assert mock_cleanup.call_count == 1 + assert coo_mock.call_count == 0 + + freqtrade.config['cancel_open_orders_on_exit'] = True + freqtrade.cleanup() + assert coo_mock.call_count == 1 def test_order_dict_dry_run(default_conf, mocker, caplog) -> None: From bf257469658d1917e8fe55ec7b28917e20863849 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 16 May 2020 11:09:50 +0300 Subject: [PATCH 2334/3421] Introduce datatype for informative pairs --- freqtrade/data/dataprovider.py | 8 +++++--- freqtrade/exchange/exchange.py | 3 ++- freqtrade/strategy/interface.py | 3 ++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 7ada4f642..58cd5442b 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -9,11 +9,13 @@ from typing import Any, Dict, List, Optional, Tuple from pandas import DataFrame +from freqtrade.data.common import ListPairsWithTimeframes from freqtrade.data.history import load_pair_history from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.exchange import Exchange from freqtrade.state import RunMode + logger = logging.getLogger(__name__) @@ -25,8 +27,8 @@ class DataProvider: self._pairlists = pairlists def refresh(self, - pairlist: List[Tuple[str, str]], - helping_pairs: List[Tuple[str, str]] = None) -> None: + pairlist: ListPairsWithTimeframes, + helping_pairs: ListPairsWithTimeframes = None) -> None: """ Refresh data, called with each cycle """ @@ -36,7 +38,7 @@ class DataProvider: self._exchange.refresh_latest_ohlcv(pairlist) @property - def available_pairs(self) -> List[Tuple[str, str]]: + def available_pairs(self) -> ListPairsWithTimeframes: """ Return a list of tuples containing (pair, timeframe) for which data is currently cached. Should be whitelist + open trades. diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 6ad7ad582..43ed65787 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -18,6 +18,7 @@ from ccxt.base.decimal_to_precision import (ROUND_DOWN, ROUND_UP, TICK_SIZE, TRUNCATE, decimal_to_precision) from pandas import DataFrame +from freqtrade.data.common import ListPairsWithTimeframes from freqtrade.data.converter import ohlcv_to_dataframe, trades_dict_to_list from freqtrade.exceptions import (DependencyException, InvalidOrderException, OperationalException, TemporaryError) @@ -676,7 +677,7 @@ class Exchange: logger.info("Downloaded data for %s with length %s.", pair, len(data)) return data - def refresh_latest_ohlcv(self, pair_list: List[Tuple[str, str]]) -> List[Tuple[str, List]]: + def refresh_latest_ohlcv(self, pair_list: ListPairsWithTimeframes) -> List[Tuple[str, List]]: """ Refresh in-memory OHLCV asynchronously and set `_klines` with the result Loops asynchronously over pair_list and downloads all pairs async (semi-parallel). diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 6268b8a43..68666efab 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -12,6 +12,7 @@ from typing import Dict, List, NamedTuple, Optional, Tuple import arrow from pandas import DataFrame +from freqtrade.data.common import ListPairsWithTimeframes from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import StrategyError from freqtrade.exchange import timeframe_to_minutes @@ -185,7 +186,7 @@ class IStrategy(ABC): """ return False - def informative_pairs(self) -> List[Tuple[str, str]]: + def informative_pairs(self) -> ListPairsWithTimeframes: """ Define additional, informative pair/interval combinations to be cached from the exchange. These pair/interval combinations are non-tradeable, unless they are part From 035a12ce6171289c26127b6f679df6e8de1f5836 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 16 May 2020 11:25:32 +0300 Subject: [PATCH 2335/3421] Move _create_pair_whitelist to dataprovider --- freqtrade/data/dataprovider.py | 11 +++++++++-- freqtrade/freqtradebot.py | 8 +------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 58cd5442b..ad7b7ada3 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -25,6 +25,7 @@ class DataProvider: self._config = config self._exchange = exchange self._pairlists = pairlists + self._timeframe = self._config['ticker_interval'] def refresh(self, pairlist: ListPairsWithTimeframes, @@ -45,6 +46,12 @@ class DataProvider: """ return list(self._exchange._klines.keys()) + def create_pair_list(self, pairs: List[str], timeframe: str = None) -> ListPairsWithTimeframes: + """ + Create list of pair tuples with (pair, ticker_interval) + """ + return [(pair, timeframe or self._timeframe) for pair in pairs] + def ohlcv(self, pair: str, timeframe: str = None, copy: bool = True) -> DataFrame: """ Get candle (OHLCV) data for the given pair as DataFrame @@ -55,7 +62,7 @@ class DataProvider: Use False only for read-only operations (where the dataframe is not modified) """ if self.runmode in (RunMode.DRY_RUN, RunMode.LIVE): - return self._exchange.klines((pair, timeframe or self._config['ticker_interval']), + return self._exchange.klines((pair, timeframe or self._timeframe), copy=copy) else: return DataFrame() @@ -67,7 +74,7 @@ class DataProvider: :param timeframe: timeframe to get data for """ return load_pair_history(pair=pair, - timeframe=timeframe or self._config['ticker_interval'], + timeframe=timeframe or self._timeframe, datadir=self._config['datadir'] ) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 3893a3ee0..f365a30fd 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -145,7 +145,7 @@ class FreqtradeBot: self.active_pair_whitelist = self._refresh_whitelist(trades) # Refreshing candles - self.dataprovider.refresh(self._create_pair_whitelist(self.active_pair_whitelist), + self.dataprovider.refresh(self.dataprovider.create_pair_list(self.active_pair_whitelist), self.strategy.informative_pairs()) with self._sell_lock: @@ -184,12 +184,6 @@ class FreqtradeBot: _whitelist.extend([trade.pair for trade in trades if trade.pair not in _whitelist]) return _whitelist - def _create_pair_whitelist(self, pairs: List[str]) -> List[Tuple[str, str]]: - """ - Create pair-whitelist tuple with (pair, ticker_interval) - """ - return [(pair, self.config['ticker_interval']) for pair in pairs] - def get_free_open_trades(self): """ Return the number of free open trades slots or 0 if From f8b01f5a43981e71534f2e4ce70717da9374a3ed Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 16 May 2020 11:28:36 +0300 Subject: [PATCH 2336/3421] Make flake happy --- freqtrade/data/dataprovider.py | 2 +- freqtrade/freqtradebot.py | 2 +- freqtrade/strategy/interface.py | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index ad7b7ada3..95348e56e 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -5,7 +5,7 @@ including ticker and orderbook data, live and historical candle (OHLCV) data Common Interface for bot and strategy to access data. """ import logging -from typing import Any, Dict, List, Optional, Tuple +from typing import Any, Dict, List, Optional from pandas import DataFrame diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index f365a30fd..151a319e2 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -7,7 +7,7 @@ import traceback from datetime import datetime from math import isclose from threading import Lock -from typing import Any, Dict, List, Optional, Tuple +from typing import Any, Dict, List, Optional import arrow from cachetools import TTLCache diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 68666efab..5173265bc 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -7,7 +7,7 @@ import warnings from abc import ABC, abstractmethod from datetime import datetime, timezone from enum import Enum -from typing import Dict, List, NamedTuple, Optional, Tuple +from typing import Dict, NamedTuple, Optional, Tuple import arrow from pandas import DataFrame @@ -20,6 +20,7 @@ from freqtrade.persistence import Trade from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from freqtrade.wallets import Wallets + logger = logging.getLogger(__name__) From facaaabc1eaec70639919087b8dcd5a55c882599 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 16 May 2020 11:49:24 +0300 Subject: [PATCH 2337/3421] Rename _refresh_whitelist() --- freqtrade/freqtradebot.py | 9 +++++---- tests/conftest.py | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 151a319e2..6b99e95b6 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -84,7 +84,7 @@ class FreqtradeBot: self.edge = Edge(self.config, self.exchange, self.strategy) if \ self.config.get('edge', {}).get('enabled', False) else None - self.active_pair_whitelist = self._refresh_whitelist() + self.active_pair_whitelist = self._refresh_active_whitelist() # Set initial bot state from config initial_state = self.config.get('initial_state') @@ -142,7 +142,7 @@ class FreqtradeBot: # Query trades from persistence layer trades = Trade.get_open_trades() - self.active_pair_whitelist = self._refresh_whitelist(trades) + self.active_pair_whitelist = self._refresh_active_whitelist(trades) # Refreshing candles self.dataprovider.refresh(self.dataprovider.create_pair_list(self.active_pair_whitelist), @@ -165,9 +165,10 @@ class FreqtradeBot: Trade.session.flush() - def _refresh_whitelist(self, trades: List[Trade] = []) -> List[str]: + def _refresh_active_whitelist(self, trades: List[Trade] = []) -> List[str]: """ - Refresh whitelist from pairlist or edge and extend it with trades. + Refresh active whitelist from pairlist or edge and extend it with + pairs that have open trades. """ # Refresh whitelist self.pairlists.refresh_pairlist() diff --git a/tests/conftest.py b/tests/conftest.py index 40ab436cf..623447e9c 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -92,7 +92,7 @@ def patch_wallet(mocker, free=999.9) -> None: def patch_whitelist(mocker, conf) -> None: - mocker.patch('freqtrade.freqtradebot.FreqtradeBot._refresh_whitelist', + mocker.patch('freqtrade.freqtradebot.FreqtradeBot._refresh_active_whitelist', MagicMock(return_value=conf['exchange']['pair_whitelist'])) From e7c11ed2cfe16574e455e0706da04a8982cda8bd Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 16 May 2020 11:59:47 +0300 Subject: [PATCH 2338/3421] Fix fetching timeframe (failed in backtesting) --- freqtrade/data/dataprovider.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 95348e56e..602a92358 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -25,7 +25,6 @@ class DataProvider: self._config = config self._exchange = exchange self._pairlists = pairlists - self._timeframe = self._config['ticker_interval'] def refresh(self, pairlist: ListPairsWithTimeframes, @@ -50,7 +49,7 @@ class DataProvider: """ Create list of pair tuples with (pair, ticker_interval) """ - return [(pair, timeframe or self._timeframe) for pair in pairs] + return [(pair, timeframe or self._config['ticker_interval']) for pair in pairs] def ohlcv(self, pair: str, timeframe: str = None, copy: bool = True) -> DataFrame: """ @@ -62,7 +61,7 @@ class DataProvider: Use False only for read-only operations (where the dataframe is not modified) """ if self.runmode in (RunMode.DRY_RUN, RunMode.LIVE): - return self._exchange.klines((pair, timeframe or self._timeframe), + return self._exchange.klines((pair, timeframe or self._config['ticker_interval']), copy=copy) else: return DataFrame() @@ -74,7 +73,7 @@ class DataProvider: :param timeframe: timeframe to get data for """ return load_pair_history(pair=pair, - timeframe=timeframe or self._timeframe, + timeframe=timeframe or self._config['ticker_interval'], datadir=self._config['datadir'] ) From 22a08768f73112f8f1e1cddbb63774cb988c0eba Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 16 May 2020 12:40:25 +0200 Subject: [PATCH 2339/3421] Add test for cancel_open_order --- tests/test_freqtradebot.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 8e3bc8928..940ae8e77 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -22,7 +22,7 @@ from freqtrade.strategy.interface import SellCheckTuple, SellType from freqtrade.worker import Worker from tests.conftest import (get_patched_freqtradebot, get_patched_worker, log_has, log_has_re, patch_edge, patch_exchange, - patch_get_signal, patch_wallet, patch_whitelist) + patch_get_signal, patch_wallet, patch_whitelist, create_mock_trades) def patch_RPCManager(mocker) -> MagicMock: @@ -3882,3 +3882,21 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order, assert log_has_re(r"Unable to create trade for XRP/BTC: " r"Available balance \(0.0 BTC\) is lower than stake amount \(0.001 BTC\)", caplog) + + +@pytest.mark.usefixtures("init_persistence") +def test_cancel_all_open_orders(mocker, default_conf, fee, limit_buy_order, limit_sell_order): + default_conf['cancel_open_orders_on_exit'] = True + mocker.patch('freqtrade.exchange.Exchange.get_order', + side_effect=[DependencyException(), limit_sell_order, limit_buy_order]) + buy_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_cancel_buy') + sell_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_cancel_sell') + + freqtrade = get_patched_freqtradebot(mocker, default_conf) + create_mock_trades(fee) + trades = Trade.query.all() + assert len(trades) == 3 + freqtrade.cancel_all_open_orders() + assert buy_mock.call_count == 1 + assert sell_mock.call_count == 1 + From 7a11219b613b2ce782afa113456e2571a54817cc Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 16 May 2020 13:17:48 +0200 Subject: [PATCH 2340/3421] Reword some documentation strings Co-authored-by: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> --- docs/configuration.md | 2 +- freqtrade/commands/cli_options.py | 2 +- freqtrade/freqtradebot.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index b0b840fcc..7405fc92e 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -51,7 +51,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency).
            **Datatype:** String | `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode.
            *Defaults to `true`.*
            **Datatype:** Boolean | `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in the Dry Run mode.
            *Defaults to `1000`.*
            **Datatype:** Float -| `cancel_open_orders_on_exit` | Cancel orders when `/stop` is issued or `ctrl+c` is pressed. This will allow you to use `/stop` to cancel unfilled orders in the event of a market crash. This will not impact open positions.
            *Defaults to `False`.*
            **Datatype:** Boolean +| `cancel_open_orders_on_exit` | Cancel open orders when the `/stop` RPC command is issued, `Ctrl+C` is pressed or the bot dies unexpectedly. When set to `true`, this allows you to use `/stop` to cancel unfilled and partially filled orders in the event of a market crash. It does not impact open positions.
            *Defaults to `false`.*
            **Datatype:** Boolean | `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
            *Defaults to `false`.*
            **Datatype:** Boolean | `minimal_roi` | **Required.** Set the threshold in percent the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy).
            **Datatype:** Dict | `stoploss` | **Required.** Value of the stoploss in percent used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
            **Datatype:** Float (as ratio) diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index cca9d7048..7a2110a91 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -111,7 +111,7 @@ AVAILABLE_CLI_OPTIONS = { ), "cancel_open_orders_on_exit": Arg( '--cancel-open-orders-on-exit', - help='Close unfilled open orders when the bot stops / exits', + help='Close unfilled and partially filled open orders when the bot stops / exits.', action='store_true', ), # Optimize common diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index cad8b4aea..3b3758f36 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -170,7 +170,7 @@ class FreqtradeBot: def process_stopped(self) -> None: """ - Close all trades that were left open + Close all orders that were left open """ if self.config['cancel_open_orders_on_exit']: self.cancel_all_open_orders() From fed75d8718303b837f5192711f9a68189a9c7efa Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 16 May 2020 13:23:40 +0200 Subject: [PATCH 2341/3421] remove --cancel_open_orders cli switch --- freqtrade/commands/arguments.py | 2 +- freqtrade/commands/cli_options.py | 5 ----- freqtrade/configuration/configuration.py | 5 ----- tests/test_arguments.py | 8 -------- tests/test_configuration.py | 2 -- 5 files changed, 1 insertion(+), 21 deletions(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 234b719f7..a03da00ab 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -13,7 +13,7 @@ ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir", "user_dat ARGS_STRATEGY = ["strategy", "strategy_path"] -ARGS_TRADE = ["db_url", "sd_notify", "dry_run", "cancel_open_orders_on_exit"] +ARGS_TRADE = ["db_url", "sd_notify", "dry_run"] ARGS_COMMON_OPTIMIZE = ["ticker_interval", "timerange", "max_open_trades", "stake_amount", "fee"] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 7a2110a91..a8f2ffdba 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -109,11 +109,6 @@ AVAILABLE_CLI_OPTIONS = { help='Enforce dry-run for trading (removes Exchange secrets and simulates trades).', action='store_true', ), - "cancel_open_orders_on_exit": Arg( - '--cancel-open-orders-on-exit', - help='Close unfilled and partially filled open orders when the bot stops / exits.', - action='store_true', - ), # Optimize common "ticker_interval": Arg( '-i', '--ticker-interval', diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 188d79f90..7edd9bca1 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -134,11 +134,6 @@ class Configuration: if config['runmode'] not in TRADING_MODES: return - if self.args.get('cancel_open_orders_on_exit', False): - config.update({ - 'cancel_open_orders_on_exit': self.args.get('cancel_open_orders_on_exit') - }) - if config.get('dry_run', False): logger.info('Dry run is enabled') if config.get('db_url') in [None, constants.DEFAULT_DB_PROD_URL]: diff --git a/tests/test_arguments.py b/tests/test_arguments.py index 91501384b..0052a61d0 100644 --- a/tests/test_arguments.py +++ b/tests/test_arguments.py @@ -64,14 +64,6 @@ def test_parse_args_db_url() -> None: assert args["db_url"] == 'sqlite:///test.sqlite' -def test_parse_args_cancel_open_orders_on_exit() -> None: - args = Arguments(['trade']).get_parsed_arg() - assert args["cancel_open_orders_on_exit"] is False - - args = Arguments(['trade', '--cancel-open-orders-on-exit']).get_parsed_arg() - assert args["cancel_open_orders_on_exit"] is True - - def test_parse_args_verbose() -> None: args = Arguments(['trade', '-v']).get_parsed_arg() assert args["verbosity"] == 1 diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 0315ffe1b..c89f1381e 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -250,7 +250,6 @@ def test_load_config_with_params(default_conf, mocker) -> None: '--strategy', 'TestStrategy', '--strategy-path', '/some/path', '--db-url', 'sqlite:///someurl', - '--cancel-open-orders-on-exit', ] args = Arguments(arglist).get_parsed_arg() configuration = Configuration(args) @@ -259,7 +258,6 @@ def test_load_config_with_params(default_conf, mocker) -> None: assert validated_conf.get('strategy') == 'TestStrategy' assert validated_conf.get('strategy_path') == '/some/path' assert validated_conf.get('db_url') == 'sqlite:///someurl' - assert validated_conf.get('cancel_open_orders_on_exit') is True # Test conf provided db_url prod conf = default_conf.copy() From 5f2a871637b62a0a327750118b4d28e86169c428 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sat, 16 May 2020 17:15:58 +0300 Subject: [PATCH 2342/3421] Add missing module --- freqtrade/data/common.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 freqtrade/data/common.py diff --git a/freqtrade/data/common.py b/freqtrade/data/common.py new file mode 100644 index 000000000..7a61d51ea --- /dev/null +++ b/freqtrade/data/common.py @@ -0,0 +1,7 @@ +""" +Common datatypes +""" +from typing import List, Tuple + +# List of pairs with their timeframes +ListPairsWithTimeframes = List[Tuple[str, str]] From baf5f4f29cd0caa5d0c76471e989a193daec0bcd Mon Sep 17 00:00:00 2001 From: hroff-1902 <47309513+hroff-1902@users.noreply.github.com> Date: Sat, 16 May 2020 21:28:54 +0300 Subject: [PATCH 2343/3421] Update freqtrade/constants.py --- freqtrade/constants.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 0c8dde8c4..e56586bbc 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -326,6 +326,6 @@ SCHEMA_MINIMAL_REQUIRED = [ CANCEL_REASON = { "TIMEOUT": "cancelled due to timeout", "PARTIALLY_FILLED": "partially filled - keeping order open", - "ALL_CANCELLED": "cancelled (all unfilled orders cancelled)", + "ALL_CANCELLED": "cancelled (all unfilled and partially filled open orders cancelled)", "CANCELLED_ON_EXCHANGE": "cancelled on exchange", } From d457542d962796011a4dd23259d1a453182720d2 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 17 May 2020 11:11:49 +0300 Subject: [PATCH 2344/3421] Fix PrecisionFilter --- freqtrade/pairlist/PrecisionFilter.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 422cd865c..85fa592f8 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -14,10 +14,8 @@ class PrecisionFilter(IPairList): pairlist_pos: int) -> None: super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) - self._stoploss = self._config.get('stoploss') - if self._stoploss is not None: - # Precalculate sanitized stoploss value to avoid recalculation for every pair - self._stoploss = 1 - abs(self._stoploss) + # Precalculate sanitized stoploss value to avoid recalculation for every pair + self._stoploss = 1 - abs(self._config['stoploss']) @property def needstickers(self) -> bool: @@ -63,12 +61,11 @@ class PrecisionFilter(IPairList): """ Filters and sorts pairlists and assigns and returns them again. """ - if self._stoploss: - # Copy list since we're modifying this list - for p in deepcopy(pairlist): - ticker = tickers[p] - # Filter out assets which would not allow setting a stoploss - if not self._validate_precision_filter(ticker, self._stoploss): - pairlist.remove(p) + # Copy list since we're modifying this list + for p in deepcopy(pairlist): + ticker = tickers[p] + # Filter out assets which would not allow setting a stoploss + if not self._validate_precision_filter(ticker, self._stoploss): + pairlist.remove(p) return pairlist From ce185a3b193429a0ca00cb8119ad8a99e786f422 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 17 May 2020 11:39:18 +0300 Subject: [PATCH 2345/3421] Remove pairs with no ticker available when it's needed --- freqtrade/pairlist/pairlistmanager.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 5b4c5b602..07dec912e 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -5,6 +5,7 @@ Provides lists as configured in config.json """ import logging +from copy import deepcopy from typing import Dict, List from cachetools import TTLCache, cached @@ -79,13 +80,14 @@ class PairListManager(): Run pairlist through all configured pairlists. """ - pairlist = self._whitelist.copy() - # tickers should be cached to avoid calling the exchange on each call. tickers: Dict = {} if self._tickers_needed: tickers = self._get_cached_tickers() + # Adjust whitelist if filters are using tickers + pairlist = self._prepare_whitelist(self._whitelist.copy(), tickers) + # Process all pairlists in chain for pl in self._pairlists: pairlist = pl.filter_pairlist(pairlist, tickers) @@ -94,3 +96,17 @@ class PairListManager(): pairlist = IPairList.verify_blacklist(pairlist, self.blacklist, True) self._whitelist = pairlist + + def _prepare_whitelist(self, pairlist: List[str], tickers) -> List[str]: + """ + Prepare pairlist for Pairlist Filters that use tickers data - remove + pairs that do not have ticker available + """ + if self._tickers_needed: + # Copy list since we're modifying this list + for p in deepcopy(pairlist): + ticker = tickers.get(p) + if not ticker: + pairlist.remove(p) + + return pairlist From 1e76bff1bd5cef49fa7f61de13ece4e5fc354b96 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 May 2020 10:52:20 +0200 Subject: [PATCH 2346/3421] Add sell_order_status to keep track of cancellations --- freqtrade/persistence.py | 9 +++++++-- freqtrade/rpc/telegram.py | 8 ++++++-- tests/rpc/test_rpc.py | 2 ++ tests/rpc/test_rpc_apiserver.py | 2 ++ tests/rpc/test_rpc_telegram.py | 1 + tests/test_persistence.py | 3 +++ 6 files changed, 21 insertions(+), 4 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index ea34fd5bf..3f7f4e0e9 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -86,7 +86,7 @@ def check_migrate(engine) -> None: logger.debug(f'trying {table_back_name}') # Check for latest column - if not has_column(cols, 'fee_close_cost'): + if not has_column(cols, 'sell_order_status'): logger.info(f'Running database migration - backup available as {table_back_name}') fee_open = get_column_def(cols, 'fee_open', 'fee') @@ -113,6 +113,7 @@ def check_migrate(engine) -> None: close_profit_abs = get_column_def( cols, 'close_profit_abs', f"(amount * close_rate * (1 - {fee_close})) - {open_trade_price}") + sell_order_status = get_column_def(cols, 'sell_order_status', 'null') # Schema migration necessary engine.execute(f"alter table trades rename to {table_back_name}") @@ -131,7 +132,7 @@ def check_migrate(engine) -> None: stake_amount, amount, open_date, close_date, open_order_id, stop_loss, stop_loss_pct, initial_stop_loss, initial_stop_loss_pct, stoploss_order_id, stoploss_last_update, - max_rate, min_rate, sell_reason, strategy, + max_rate, min_rate, sell_reason, sell_order_status, strategy, ticker_interval, open_trade_price, close_profit_abs ) select id, lower(exchange), @@ -153,6 +154,7 @@ def check_migrate(engine) -> None: {initial_stop_loss_pct} initial_stop_loss_pct, {stoploss_order_id} stoploss_order_id, {stoploss_last_update} stoploss_last_update, {max_rate} max_rate, {min_rate} min_rate, {sell_reason} sell_reason, + {sell_order_status} sell_order_status, {strategy} strategy, {ticker_interval} ticker_interval, {open_trade_price} open_trade_price, {close_profit_abs} close_profit_abs from {table_back_name} @@ -228,6 +230,7 @@ class Trade(_DECL_BASE): # Lowest price reached min_rate = Column(Float, nullable=True) sell_reason = Column(String, nullable=True) + sell_order_status = Column(String, nullable=True) strategy = Column(String, nullable=True) ticker_interval = Column(Integer, nullable=True) @@ -267,6 +270,7 @@ class Trade(_DECL_BASE): 'stake_amount': round(self.stake_amount, 8), 'close_profit': self.close_profit, 'sell_reason': self.sell_reason, + 'sell_order_status': self.sell_order_status, 'stop_loss': self.stop_loss, 'stop_loss_pct': (self.stop_loss_pct * 100) if self.stop_loss_pct else None, 'initial_stop_loss': self.initial_stop_loss, @@ -370,6 +374,7 @@ class Trade(_DECL_BASE): self.close_profit_abs = self.calc_profit() self.close_date = datetime.utcnow() self.is_open = False + self.sell_order_status = 'closed' self.open_order_id = None logger.info( 'Marking %s as closed as the trade is fulfilled and found no open orders for it.', diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 856b8f138..19307253c 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -226,9 +226,13 @@ class Telegram(RPC): # Adding stoploss and stoploss percentage only if it is not None "*Stoploss:* `{stop_loss:.8f}` " + ("`({stop_loss_pct:.2f}%)`" if r['stop_loss_pct'] else ""), - - "*Open Order:* `{open_order}`" if r['open_order'] else "" ] + if r['open_order']: + if r['sell_order_status']: + lines.append("*Open Order:* `{open_order}` - `{sell_order_status}`") + else: + lines.append("*Open Order:* `{open_order}`") + # Filter empty lines using list-comprehension messages.append("\n".join([l for l in lines if l]).format(**r)) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index a1e6d9f26..8a4c812a7 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -60,6 +60,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_trade_price': ANY, 'close_rate_requested': ANY, 'sell_reason': ANY, + 'sell_order_status': ANY, 'min_rate': ANY, 'max_rate': ANY, 'strategy': ANY, @@ -103,6 +104,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'open_trade_price': ANY, 'close_rate_requested': ANY, 'sell_reason': ANY, + 'sell_order_status': ANY, 'min_rate': ANY, 'max_rate': ANY, 'strategy': ANY, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index b953097d5..a0e8e0c9e 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -520,6 +520,7 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'open_rate_requested': 1.098e-05, 'open_trade_price': 0.0010025, 'sell_reason': None, + 'sell_order_status': None, 'strategy': 'DefaultStrategy', 'ticker_interval': 5}] @@ -626,6 +627,7 @@ def test_api_forcebuy(botclient, mocker, fee): 'open_rate_requested': None, 'open_trade_price': 0.2460546025, 'sell_reason': None, + 'sell_order_status': None, 'strategy': None, 'ticker_interval': None } diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index bbc961763..b84073dcc 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -170,6 +170,7 @@ def test_status(default_conf, update, mocker, fee, ticker,) -> None: 'current_profit': -0.59, 'initial_stop_loss': 1.098e-05, 'stop_loss': 1.099e-05, + 'sell_order_status': None, 'initial_stop_loss_pct': -0.05, 'stop_loss_pct': -0.01, 'open_order': '(limit buy rem=0.00000000)' diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 5c7686e28..25afed397 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -477,6 +477,7 @@ def test_migrate_old(mocker, default_conf, fee): assert trade.close_rate_requested is None assert trade.close_rate is not None assert pytest.approx(trade.close_profit_abs) == trade.calc_profit() + assert trade.sell_order_status is None def test_migrate_new(mocker, default_conf, fee, caplog): @@ -756,6 +757,7 @@ def test_to_json(default_conf, fee): 'stake_amount': 0.001, 'close_profit': None, 'sell_reason': None, + 'sell_order_status': None, 'stop_loss': None, 'stop_loss_pct': None, 'initial_stop_loss': None, @@ -810,6 +812,7 @@ def test_to_json(default_conf, fee): 'open_rate_requested': None, 'open_trade_price': 12.33075, 'sell_reason': None, + 'sell_order_status': None, 'strategy': None, 'ticker_interval': None} From dd55d2eea378fa385bbfa7a6ad7b9d6f81e1818a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 May 2020 10:53:07 +0200 Subject: [PATCH 2347/3421] Reduce spammyness of parcial cancel orders --- freqtrade/freqtradebot.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 3b3758f36..c0d7026b2 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -879,10 +879,10 @@ class FreqtradeBot: logger.info('Cannot query order for %s due to %s', trade, traceback.format_exc()) continue - trade_state_update = self.update_trade_state(trade, order) + fully_cancelled = self.update_trade_state(trade, order) if (order['side'] == 'buy' and ( - trade_state_update + fully_cancelled or self._check_timed_out('buy', order) or strategy_safe_wrapper(self.strategy.check_buy_timeout, default_retval=False)(pair=trade.pair, @@ -891,7 +891,7 @@ class FreqtradeBot: self.handle_cancel_buy(trade, order, constants.CANCEL_REASON['TIMEOUT']) elif (order['side'] == 'sell' and ( - trade_state_update + fully_cancelled or self._check_timed_out('sell', order) or strategy_safe_wrapper(self.strategy.check_sell_timeout, default_retval=False)(pair=trade.pair, @@ -1126,6 +1126,11 @@ class FreqtradeBot: """ Sends rpc notification when a sell cancel occured. """ + if trade.sell_order_status == reason: + return + else: + trade.sell_order_status = reason + profit_rate = trade.close_rate if trade.close_rate else trade.close_rate_requested profit_trade = trade.calc_profit(rate=profit_rate) current_rate = self.get_sell_rate(trade.pair, False) From 2074d986a6c91d4bc8d80e713a8d846a3307eb83 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 May 2020 11:12:30 +0200 Subject: [PATCH 2348/3421] Update test to verify we're not spamming messages --- freqtrade/freqtradebot.py | 4 ++-- tests/test_freqtradebot.py | 31 ++++++++++++++++++++++++------- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c0d7026b2..a6d32d8fe 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -881,7 +881,7 @@ class FreqtradeBot: fully_cancelled = self.update_trade_state(trade, order) - if (order['side'] == 'buy' and ( + if (order['side'] == 'buy' and (order['status'] == 'open' or fully_cancelled) and ( fully_cancelled or self._check_timed_out('buy', order) or strategy_safe_wrapper(self.strategy.check_buy_timeout, @@ -890,7 +890,7 @@ class FreqtradeBot: order=order))): self.handle_cancel_buy(trade, order, constants.CANCEL_REASON['TIMEOUT']) - elif (order['side'] == 'sell' and ( + elif (order['side'] == 'sell' and (order['status'] == 'open' or fully_cancelled) and ( fully_cancelled or self._check_timed_out('sell', order) or strategy_safe_wrapper(self.strategy.check_sell_timeout, diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 5c5785ca3..fb4765b48 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2407,30 +2407,47 @@ def test_handle_cancel_buy_corder_empty(mocker, default_conf, limit_buy_order, assert cancel_order_mock.call_count == 1 -def test_handle_cancel_sell_limit(mocker, default_conf) -> None: - patch_RPCManager(mocker) +def test_handle_cancel_sell_limit(mocker, default_conf, fee) -> None: + send_msg_mock = patch_RPCManager(mocker) patch_exchange(mocker) cancel_order_mock = MagicMock() mocker.patch.multiple( 'freqtrade.exchange.Exchange', - cancel_order=cancel_order_mock + cancel_order=cancel_order_mock, ) + mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_sell_rate', return_value=0.245441) freqtrade = FreqtradeBot(default_conf) - freqtrade._notify_sell_cancel = MagicMock() - trade = MagicMock() + trade = Trade( + pair='LTC/ETH', + amount=2, + exchange='binance', + open_rate=0.245441, + open_order_id="123456", + open_date=arrow.utcnow().datetime, + fee_open=fee.return_value, + fee_close=fee.return_value, + ) order = {'remaining': 1, 'amount': 1, 'status': "open"} reason = CANCEL_REASON['TIMEOUT'] assert freqtrade.handle_cancel_sell(trade, order, reason) assert cancel_order_mock.call_count == 1 + assert send_msg_mock.call_count == 1 + + send_msg_mock.reset_mock() + order['amount'] = 2 - assert (freqtrade.handle_cancel_sell(trade, order, reason) - == CANCEL_REASON['PARTIALLY_FILLED']) + assert freqtrade.handle_cancel_sell(trade, order, reason) == CANCEL_REASON['PARTIALLY_FILLED'] # Assert cancel_order was not called (callcount remains unchanged) assert cancel_order_mock.call_count == 1 + assert send_msg_mock.call_count == 1 + assert freqtrade.handle_cancel_sell(trade, order, reason) == CANCEL_REASON['PARTIALLY_FILLED'] + # Message should not be iterated again + assert trade.sell_order_status == CANCEL_REASON['PARTIALLY_FILLED'] + assert send_msg_mock.call_count == 1 def test_handle_cancel_sell_cancel_exception(mocker, default_conf) -> None: From 285bc2511e61eb37a852b651f1e76ffc1eafa01a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 May 2020 11:23:55 +0200 Subject: [PATCH 2349/3421] Improve testcov for default check_*_timeout methods --- tests/test_freqtradebot.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index fb4765b48..a1358abdc 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1976,6 +1976,10 @@ def test_check_handle_timedout_buy_usercustom(default_conf, ticker, limit_buy_or Trade.session.add(open_trade) + # Ensure default is to return empty (so not mocked yet) + freqtrade.check_handle_timedout() + assert cancel_order_mock.call_count == 0 + # Return false - trade remains open freqtrade.strategy.check_buy_timeout = MagicMock(return_value=False) freqtrade.check_handle_timedout() @@ -2106,6 +2110,9 @@ def test_check_handle_timedout_sell_usercustom(default_conf, ticker, limit_sell_ open_trade.is_open = False Trade.session.add(open_trade) + # Ensure default is false + freqtrade.check_handle_timedout() + assert cancel_order_mock.call_count == 0 freqtrade.strategy.check_sell_timeout = MagicMock(return_value=False) # Return false - No impact From 97c50f86e984c7b48ab6ec192c1835ba9b9ef178 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 17 May 2020 14:10:11 +0300 Subject: [PATCH 2350/3421] Cleanup pairlistmanager --- freqtrade/pairlist/pairlistmanager.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 07dec912e..b01f1342b 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -1,9 +1,6 @@ """ -Static List provider - -Provides lists as configured in config.json - - """ +PairList manager class +""" import logging from copy import deepcopy from typing import Dict, List @@ -14,6 +11,7 @@ from freqtrade.exceptions import OperationalException from freqtrade.pairlist.IPairList import IPairList from freqtrade.resolvers import PairListResolver + logger = logging.getLogger(__name__) @@ -79,8 +77,7 @@ class PairListManager(): """ Run pairlist through all configured pairlists. """ - - # tickers should be cached to avoid calling the exchange on each call. + # Tickers should be cached to avoid calling the exchange on each call. tickers: Dict = {} if self._tickers_needed: tickers = self._get_cached_tickers() @@ -92,21 +89,21 @@ class PairListManager(): for pl in self._pairlists: pairlist = pl.filter_pairlist(pairlist, tickers) - # Validation against blacklist happens after the pairlists to ensure blacklist is respected. + # Validation against blacklist happens after the pairlists to ensure + # blacklist is respected. pairlist = IPairList.verify_blacklist(pairlist, self.blacklist, True) self._whitelist = pairlist def _prepare_whitelist(self, pairlist: List[str], tickers) -> List[str]: """ - Prepare pairlist for Pairlist Filters that use tickers data - remove + Prepare sanitized pairlist for Pairlist Filters that use tickers data - remove pairs that do not have ticker available """ if self._tickers_needed: # Copy list since we're modifying this list for p in deepcopy(pairlist): - ticker = tickers.get(p) - if not ticker: + if p not in tickers: pairlist.remove(p) return pairlist From ae69d31095bb5241690036c39acb2ca768b96f26 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 17 May 2020 14:13:26 +0300 Subject: [PATCH 2351/3421] Cosmetics in IPairList --- freqtrade/pairlist/IPairList.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index e089e546c..e2eb364bc 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -1,9 +1,6 @@ """ -Static List provider - -Provides lists as configured in config.json - - """ +PairList base class +""" import logging from abc import ABC, abstractmethod, abstractproperty from copy import deepcopy @@ -13,6 +10,7 @@ from cachetools import TTLCache, cached from freqtrade.exchange import market_is_active + logger = logging.getLogger(__name__) From 16622bbfadc26561fe134a08f7bfeaba89134390 Mon Sep 17 00:00:00 2001 From: hroff-1902 Date: Sun, 17 May 2020 14:26:21 +0300 Subject: [PATCH 2352/3421] Cosmetics in pair lists --- freqtrade/pairlist/PrecisionFilter.py | 7 +++++-- freqtrade/pairlist/PriceFilter.py | 7 +++++-- freqtrade/pairlist/SpreadFilter.py | 4 ++++ freqtrade/pairlist/StaticPairList.py | 8 ++++---- freqtrade/pairlist/VolumePairList.py | 9 +++++---- 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 85fa592f8..6bd9c594e 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -1,9 +1,13 @@ +""" +Precision pair list filter +""" import logging from copy import deepcopy from typing import Any, Dict, List from freqtrade.pairlist.IPairList import IPairList + logger = logging.getLogger(__name__) @@ -63,9 +67,8 @@ class PrecisionFilter(IPairList): """ # Copy list since we're modifying this list for p in deepcopy(pairlist): - ticker = tickers[p] # Filter out assets which would not allow setting a stoploss - if not self._validate_precision_filter(ticker, self._stoploss): + if not self._validate_precision_filter(tickers[p], self._stoploss): pairlist.remove(p) return pairlist diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index 166515148..167717656 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -1,9 +1,13 @@ +""" +Price pair list filter +""" import logging from copy import deepcopy from typing import Any, Dict, List from freqtrade.pairlist.IPairList import IPairList + logger = logging.getLogger(__name__) @@ -61,9 +65,8 @@ class PriceFilter(IPairList): if self._low_price_ratio: # Copy list since we're modifying this list for p in deepcopy(pairlist): - ticker = tickers[p] # Filter out assets which would not allow setting a stoploss - if not self._validate_ticker_lowprice(ticker): + if not self._validate_ticker_lowprice(tickers[p]): pairlist.remove(p) return pairlist diff --git a/freqtrade/pairlist/SpreadFilter.py b/freqtrade/pairlist/SpreadFilter.py index 5b886135f..88e143a50 100644 --- a/freqtrade/pairlist/SpreadFilter.py +++ b/freqtrade/pairlist/SpreadFilter.py @@ -1,9 +1,13 @@ +""" +Spread pair list filter +""" import logging from copy import deepcopy from typing import Dict, List from freqtrade.pairlist.IPairList import IPairList + logger = logging.getLogger(__name__) diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index 0050fbd5c..07e559168 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -1,14 +1,14 @@ """ -Static List provider +Static Pair List provider -Provides lists as configured in config.json - - """ +Provides pair white list as it configured in config +""" import logging from typing import Dict, List from freqtrade.pairlist.IPairList import IPairList + logger = logging.getLogger(__name__) diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 46ff4b9c8..e20fb3577 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -1,9 +1,8 @@ """ Volume PairList provider -Provides lists as configured in config.json - - """ +Provides dynamic pair list based on trade volumes +""" import logging from datetime import datetime from typing import Any, Dict, List @@ -11,8 +10,10 @@ from typing import Any, Dict, List from freqtrade.exceptions import OperationalException from freqtrade.pairlist.IPairList import IPairList + logger = logging.getLogger(__name__) + SORT_VALUES = ['askVolume', 'bidVolume', 'quoteVolume'] @@ -115,7 +116,7 @@ class VolumePairList(IPairList): # Validate whitelist to only have active market pairs pairs = self._whitelist_for_active_markets([s['symbol'] for s in sorted_tickers]) pairs = self._verify_blacklist(pairs, aswarning=False) - # Limit to X number of pairs + # Limit pairlist to the requested number of pairs pairs = pairs[:self._number_pairs] return pairs From 943a2a08f858d472a84be39080dcc7c6cf93eb2f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 17 May 2020 20:12:01 +0200 Subject: [PATCH 2353/3421] Improve daily API format --- freqtrade/rpc/rpc.py | 26 ++++++++++++-------------- freqtrade/rpc/telegram.py | 20 ++++++++++++-------- tests/rpc/test_rpc.py | 16 +++++++++------- tests/rpc/test_rpc_apiserver.py | 6 ++++-- 4 files changed, 37 insertions(+), 31 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index d3b6b9639..7e2934579 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -206,28 +206,26 @@ class RPC: 'trades': len(trades) } - return [ - [ - key, - '{value:.8f} {symbol}'.format( - value=float(value['amount']), - symbol=stake_currency - ), - '{value:.3f} {symbol}'.format( + data = [ + { + 'date': key, + 'abs_profit': f'{float(value["amount"]):.8f}', + 'fiat_value': '{value:.3f}'.format( value=self._fiat_converter.convert_amount( value['amount'], stake_currency, fiat_display_currency ) if self._fiat_converter else 0, - symbol=fiat_display_currency ), - '{value} trade{s}'.format( - value=value['trades'], - s='' if value['trades'] < 2 else 's' - ), - ] + 'trade_count': f'{value["trades"]}', + } for key, value in profit_days.items() ] + return { + 'stake_currency': stake_currency, + 'fiat_display_currency': fiat_display_currency, + 'data': data + } def _rpc_trade_history(self, limit: int) -> Dict: """ Returns the X last trades """ diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 856b8f138..c77567429 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -276,14 +276,18 @@ class Telegram(RPC): stake_cur, fiat_disp_cur ) - stats_tab = tabulate(stats, - headers=[ - 'Day', - f'Profit {stake_cur}', - f'Profit {fiat_disp_cur}', - f'Trades' - ], - tablefmt='simple') + stats_tab = tabulate( + [[day['date'], + f"{day['abs_profit']} {stats['stake_currency']}", + f"{day['fiat_value']} {stats['fiat_display_currency']}", + f"{day['trade_count']} trades"] for day in stats['data']], + headers=[ + 'Day', + f'Profit {stake_cur}', + f'Profit {fiat_disp_cur}', + f'Trades', + ], + tablefmt='simple') message = f'Daily Profit over the last {timescale} days:\n

            " not in msg_mock.call_args_list[0][0][0]
            +
            +    msg_mock.reset_mock()
            +    create_mock_trades(fee)
            +
            +    context = MagicMock()
            +    context.args = [5]
            +    telegram._trades(update=update, context=context)
            +    msg_mock.call_count == 1
            +    assert "3 recent trades:" in msg_mock.call_args_list[0][0][0]
            +    assert "Profit (" in msg_mock.call_args_list[0][0][0]
            +    assert "Open Date" in msg_mock.call_args_list[0][0][0]
            +    assert "
            " in msg_mock.call_args_list[0][0][0]
            +
            +
             def test_help_handle(default_conf, update, mocker) -> None:
                 msg_mock = MagicMock()
                 mocker.patch.multiple(
            
            From 8300eb59d4b448b4f04da34b80efd603a32a6002 Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Thu, 23 Jul 2020 07:49:44 +0200
            Subject: [PATCH 2819/3421] Extend create_mock_trades to create 4 trades
            
            2 closed, and 2 open trades
            ---
             tests/commands/test_commands.py |  2 +-
             tests/conftest.py               | 14 ++++++++++++++
             tests/data/test_btanalysis.py   |  2 +-
             tests/test_freqtradebot.py      |  2 +-
             tests/test_persistence.py       |  6 +++---
             5 files changed, 20 insertions(+), 6 deletions(-)
            
            diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py
            index ffced956d..3ec7e4798 100644
            --- a/tests/commands/test_commands.py
            +++ b/tests/commands/test_commands.py
            @@ -1089,7 +1089,7 @@ def test_show_trades(mocker, fee, capsys, caplog):
                 pargs = get_args(args)
                 pargs['config'] = None
                 start_show_trades(pargs)
            -    assert log_has("Printing 3 Trades: ", caplog)
            +    assert log_has("Printing 4 Trades: ", caplog)
                 captured = capsys.readouterr()
                 assert "Trade(id=1" in captured.out
                 assert "Trade(id=2" in captured.out
            diff --git a/tests/conftest.py b/tests/conftest.py
            index 43dc8ca78..fe8d54480 100644
            --- a/tests/conftest.py
            +++ b/tests/conftest.py
            @@ -199,6 +199,20 @@ def create_mock_trades(fee):
                 )
                 Trade.session.add(trade)
             
            +    trade = Trade(
            +        pair='XRP/BTC',
            +        stake_amount=0.001,
            +        amount=123.0,
            +        fee_open=fee.return_value,
            +        fee_close=fee.return_value,
            +        open_rate=0.05,
            +        close_rate=0.06,
            +        close_profit=0.01,
            +        exchange='bittrex',
            +        is_open=False,
            +    )
            +    Trade.session.add(trade)
            +
                 # Simulate prod entry
                 trade = Trade(
                     pair='ETC/BTC',
            diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py
            index b65db7fd8..718c02f05 100644
            --- a/tests/data/test_btanalysis.py
            +++ b/tests/data/test_btanalysis.py
            @@ -43,7 +43,7 @@ def test_load_trades_from_db(default_conf, fee, mocker):
             
                 trades = load_trades_from_db(db_url=default_conf['db_url'])
                 assert init_mock.call_count == 1
            -    assert len(trades) == 3
            +    assert len(trades) == 4
                 assert isinstance(trades, DataFrame)
                 assert "pair" in trades.columns
                 assert "open_time" in trades.columns
            diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
            index ada0d87fd..54e33be4d 100644
            --- a/tests/test_freqtradebot.py
            +++ b/tests/test_freqtradebot.py
            @@ -4090,7 +4090,7 @@ def test_cancel_all_open_orders(mocker, default_conf, fee, limit_buy_order, limi
                 freqtrade = get_patched_freqtradebot(mocker, default_conf)
                 create_mock_trades(fee)
                 trades = Trade.query.all()
            -    assert len(trades) == 3
            +    assert len(trades) == 4
                 freqtrade.cancel_all_open_orders()
                 assert buy_mock.call_count == 1
                 assert sell_mock.call_count == 1
            diff --git a/tests/test_persistence.py b/tests/test_persistence.py
            index 8dd27e53a..ab23243a5 100644
            --- a/tests/test_persistence.py
            +++ b/tests/test_persistence.py
            @@ -989,7 +989,7 @@ def test_get_overall_performance(fee):
                 create_mock_trades(fee)
                 res = Trade.get_overall_performance()
             
            -    assert len(res) == 1
            +    assert len(res) == 2
                 assert 'pair' in res[0]
                 assert 'profit' in res[0]
                 assert 'count' in res[0]
            @@ -1004,5 +1004,5 @@ def test_get_best_pair(fee):
                 create_mock_trades(fee)
                 res = Trade.get_best_pair()
                 assert len(res) == 2
            -    assert res[0] == 'ETC/BTC'
            -    assert res[1] == 0.005
            +    assert res[0] == 'XRP/BTC'
            +    assert res[1] == 0.01
            
            From fdc84eef5905d81a69076199990d3e7bf999e938 Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Thu, 23 Jul 2020 07:50:45 +0200
            Subject: [PATCH 2820/3421] /trades shall only return closed trades
            
            ---
             freqtrade/rpc/rpc.py            |  5 +++--
             freqtrade/rpc/telegram.py       |  2 +-
             tests/rpc/test_rpc.py           | 11 +++++------
             tests/rpc/test_rpc_apiserver.py |  8 ++++----
             tests/rpc/test_rpc_telegram.py  |  2 +-
             5 files changed, 14 insertions(+), 14 deletions(-)
            
            diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py
            index c73fcbf54..b39d5aec4 100644
            --- a/freqtrade/rpc/rpc.py
            +++ b/freqtrade/rpc/rpc.py
            @@ -252,9 +252,10 @@ class RPC:
                 def _rpc_trade_history(self, limit: int) -> Dict:
                     """ Returns the X last trades """
                     if limit > 0:
            -            trades = Trade.get_trades().order_by(Trade.id.desc()).limit(limit)
            +            trades = Trade.get_trades([Trade.is_open.is_(False)]).order_by(
            +                Trade.id.desc()).limit(limit)
                     else:
            -            trades = Trade.get_trades().order_by(Trade.id.desc()).all()
            +            trades = Trade.get_trades([Trade.is_open.is_(False)]).order_by(Trade.id.desc()).all()
             
                     output = [trade.to_json() for trade in trades]
             
            diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py
            index 153be1e25..17f0e21f9 100644
            --- a/freqtrade/rpc/telegram.py
            +++ b/freqtrade/rpc/telegram.py
            @@ -520,7 +520,7 @@ class Telegram(RPC):
                             [[arrow.get(trade['open_date']).humanize(),
                               trade['pair'],
                               f"{(100 * trade['close_profit']):.2f}% ({trade['close_profit_abs']})"]
            -                 for trade in trades['trades'] if trade['close_profit'] is not None],
            +                 for trade in trades['trades']],
                             headers=[
                                 'Open Date',
                                 'Pair',
            diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py
            index de9327ba9..e5859fcd9 100644
            --- a/tests/rpc/test_rpc.py
            +++ b/tests/rpc/test_rpc.py
            @@ -284,12 +284,11 @@ def test_rpc_trade_history(mocker, default_conf, markets, fee):
                 assert isinstance(trades['trades'][1], dict)
             
                 trades = rpc._rpc_trade_history(0)
            -    assert len(trades['trades']) == 3
            -    assert trades['trades_count'] == 3
            -    # The first trade is for ETH ... sorting is descending
            -    assert trades['trades'][-1]['pair'] == 'ETH/BTC'
            -    assert trades['trades'][0]['pair'] == 'ETC/BTC'
            -    assert trades['trades'][1]['pair'] == 'ETC/BTC'
            +    assert len(trades['trades']) == 2
            +    assert trades['trades_count'] == 2
            +    # The first closed trade is for ETC ... sorting is descending
            +    assert trades['trades'][-1]['pair'] == 'ETC/BTC'
            +    assert trades['trades'][0]['pair'] == 'XRP/BTC'
             
             
             def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee,
            diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py
            index 355b63f48..f4d7b8ca3 100644
            --- a/tests/rpc/test_rpc_apiserver.py
            +++ b/tests/rpc/test_rpc_apiserver.py
            @@ -368,12 +368,12 @@ def test_api_trades(botclient, mocker, ticker, fee, markets):
             
                 rc = client_get(client, f"{BASE_URI}/trades")
                 assert_response(rc)
            -    assert len(rc.json['trades']) == 3
            -    assert rc.json['trades_count'] == 3
            -    rc = client_get(client, f"{BASE_URI}/trades?limit=2")
            -    assert_response(rc)
                 assert len(rc.json['trades']) == 2
                 assert rc.json['trades_count'] == 2
            +    rc = client_get(client, f"{BASE_URI}/trades?limit=1")
            +    assert_response(rc)
            +    assert len(rc.json['trades']) == 1
            +    assert rc.json['trades_count'] == 1
             
             
             def test_api_edge_disabled(botclient, mocker, ticker, fee, markets):
            diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py
            index f011b631d..cfe0ade6f 100644
            --- a/tests/rpc/test_rpc_telegram.py
            +++ b/tests/rpc/test_rpc_telegram.py
            @@ -1168,7 +1168,7 @@ def test_telegram_trades(mocker, update, default_conf, fee):
                 context.args = [5]
                 telegram._trades(update=update, context=context)
                 msg_mock.call_count == 1
            -    assert "3 recent trades:" in msg_mock.call_args_list[0][0][0]
            +    assert "2 recent trades:" in msg_mock.call_args_list[0][0][0]
                 assert "Profit (" in msg_mock.call_args_list[0][0][0]
                 assert "Open Date" in msg_mock.call_args_list[0][0][0]
                 assert "
            " in msg_mock.call_args_list[0][0][0]
            
            From e0c14e6214a79e25d0c6b1d6b189001d89d89e4f Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Thu, 23 Jul 2020 07:54:45 +0200
            Subject: [PATCH 2821/3421] Add /trades to help (so users know about it)
            
            ---
             docs/telegram-usage.md    | 1 +
             freqtrade/rpc/telegram.py | 1 +
             2 files changed, 2 insertions(+)
            
            diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md
            index f423a9376..250293d25 100644
            --- a/docs/telegram-usage.md
            +++ b/docs/telegram-usage.md
            @@ -56,6 +56,7 @@ official commands. You can ask at any moment for help with `/help`.
             | `/show_config` | | Shows part of the current configuration with relevant settings to operation
             | `/status` | | Lists all open trades
             | `/status table` | | List all open trades in a table format. Pending buy orders are marked with an asterisk (*) Pending sell orders are marked with a double asterisk (**)
            +| `/trades [limit]` | | List all recently closed trades in a table format.
             | `/count` | | Displays number of trades used and available
             | `/profit` | | Display a summary of your profit/loss from close trades and some stats about your performance
             | `/forcesell ` | | Instantly sells the given trade  (Ignoring `minimum_roi`).
            diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py
            index 17f0e21f9..ab784c962 100644
            --- a/freqtrade/rpc/telegram.py
            +++ b/freqtrade/rpc/telegram.py
            @@ -646,6 +646,7 @@ class Telegram(RPC):
                                "         *table :* `will display trades in a table`\n"
                                "                `pending buy orders are marked with an asterisk (*)`\n"
                                "                `pending sell orders are marked with a double asterisk (**)`\n"
            +                   "*/trades [limit]:* `Lists last closed trades (limited to 10 by default)`\n"
                                "*/profit:* `Lists cumulative profit from all finished trades`\n"
                                "*/forcesell |all:* `Instantly sells the given trade or all trades, "
                                "regardless of profit`\n"
            
            From 0614e599661a459d27a96bdbec00b4221709301d Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Sun, 12 Jul 2020 20:06:59 +0200
            Subject: [PATCH 2822/3421] Add tables dependency
            
            ---
             freqtrade/commands/arguments.py | 2 +-
             freqtrade/constants.py          | 2 +-
             requirements-common.txt         | 1 +
             setup.py                        | 1 +
             4 files changed, 4 insertions(+), 2 deletions(-)
            
            diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py
            index e6f6f8167..0899321db 100644
            --- a/freqtrade/commands/arguments.py
            +++ b/freqtrade/commands/arguments.py
            @@ -15,7 +15,7 @@ ARGS_STRATEGY = ["strategy", "strategy_path"]
             
             ARGS_TRADE = ["db_url", "sd_notify", "dry_run"]
             
            -ARGS_COMMON_OPTIMIZE = ["timeframe", "timerange",
            +ARGS_COMMON_OPTIMIZE = ["timeframe", "timerange", "dataformat_ohlcv",
                                     "max_open_trades", "stake_amount", "fee"]
             
             ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + ["position_stacking", "use_max_market_positions",
            diff --git a/freqtrade/constants.py b/freqtrade/constants.py
            index 1dadc6e16..a5a5a3339 100644
            --- a/freqtrade/constants.py
            +++ b/freqtrade/constants.py
            @@ -24,7 +24,7 @@ ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc']
             AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList',
                                    'AgeFilter', 'PrecisionFilter', 'PriceFilter',
                                    'ShuffleFilter', 'SpreadFilter']
            -AVAILABLE_DATAHANDLERS = ['json', 'jsongz']
            +AVAILABLE_DATAHANDLERS = ['json', 'jsongz', 'hdf5']
             DRY_RUN_WALLET = 1000
             MATH_CLOSE_PREC = 1e-14  # Precision used for float comparisons
             DEFAULT_DATAFRAME_COLUMNS = ['date', 'open', 'high', 'low', 'close', 'volume']
            diff --git a/requirements-common.txt b/requirements-common.txt
            index d5c5fd832..604a769d4 100644
            --- a/requirements-common.txt
            +++ b/requirements-common.txt
            @@ -13,6 +13,7 @@ TA-Lib==0.4.18
             tabulate==0.8.7
             pycoingecko==1.3.0
             jinja2==2.11.2
            +tables==3.6.1
             
             # find first, C search in arrays
             py_find_1st==1.1.4
            diff --git a/setup.py b/setup.py
            index 6d832e3f5..b1b500cc8 100644
            --- a/setup.py
            +++ b/setup.py
            @@ -85,6 +85,7 @@ setup(name='freqtrade',
                       # from requirements.txt
                       'numpy',
                       'pandas',
            +          'tables',
                   ],
                   extras_require={
                       'api': api,
            
            From 55591e287c567d1671811c441c15c3df0b0d0d85 Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Sun, 12 Jul 2020 20:17:21 +0200
            Subject: [PATCH 2823/3421] First version of hdf5handler - no proper support
             for trades yet
            
            ---
             freqtrade/data/history/hdf5datahandler.py | 184 ++++++++++++++++++++++
             freqtrade/data/history/idatahandler.py    |   7 +-
             2 files changed, 188 insertions(+), 3 deletions(-)
             create mode 100644 freqtrade/data/history/hdf5datahandler.py
            
            diff --git a/freqtrade/data/history/hdf5datahandler.py b/freqtrade/data/history/hdf5datahandler.py
            new file mode 100644
            index 000000000..21f521cc3
            --- /dev/null
            +++ b/freqtrade/data/history/hdf5datahandler.py
            @@ -0,0 +1,184 @@
            +import logging
            +import re
            +from pathlib import Path
            +from typing import List, Optional
            +
            +import pandas as pd
            +
            +from freqtrade import misc
            +from freqtrade.configuration import TimeRange
            +from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS
            +
            +from .idatahandler import IDataHandler, TradeList
            +
            +logger = logging.getLogger(__name__)
            +
            +
            +class HDF5Handler(IDataHandler):
            +
            +    _columns = DEFAULT_DATAFRAME_COLUMNS
            +
            +    @classmethod
            +    def ohlcv_get_pairs(cls, datadir: Path, timeframe: str) -> List[str]:
            +        """
            +        Returns a list of all pairs with ohlcv data available in this datadir
            +        for the specified timeframe
            +        :param datadir: Directory to search for ohlcv files
            +        :param timeframe: Timeframe to search pairs for
            +        :return: List of Pairs
            +        """
            +
            +        _tmp = [re.search(r'^(\S+)(?=\-' + timeframe + '.h5)', p.name)
            +                for p in datadir.glob(f"*{timeframe}.{cls._get_file_extension()}")]
            +        # Check if regex found something and only return these results
            +        return [match[0].replace('_', '/') for match in _tmp if match]
            +
            +    def ohlcv_store(self, pair: str, timeframe: str, data: pd.DataFrame) -> None:
            +        """
            +        Store data in hdf5 file.
            +        :param pair: Pair - used to generate filename
            +        :timeframe: Timeframe - used to generate filename
            +        :data: Dataframe containing OHLCV data
            +        :return: None
            +        """
            +        key = self._pair_ohlcv_key(pair, timeframe)
            +        _data = data.copy()
            +        # Convert date to int
            +        # _data['date'] = _data['date'].astype(np.int64) // 1000 // 1000
            +
            +        filename = self._pair_data_filename(self._datadir, pair, timeframe)
            +        ds = pd.HDFStore(filename, mode='a', complevel=9)
            +        ds.put(key, _data.loc[:, self._columns], format='table', data_columns=['date'])
            +
            +        ds.close()
            +
            +    def _ohlcv_load(self, pair: str, timeframe: str,
            +                    timerange: Optional[TimeRange] = None) -> pd.DataFrame:
            +        """
            +        Internal method used to load data for one pair from disk.
            +        Implements the loading and conversion to a Pandas dataframe.
            +        Timerange trimming and dataframe validation happens outside of this method.
            +        :param pair: Pair to load data
            +        :param timeframe: Timeframe (e.g. "5m")
            +        :param timerange: Limit data to be loaded to this timerange.
            +                        Optionally implemented by subclasses to avoid loading
            +                        all data where possible.
            +        :return: DataFrame with ohlcv data, or empty DataFrame
            +        """
            +        key = self._pair_ohlcv_key(pair, timeframe)
            +        filename = self._pair_data_filename(self._datadir, pair, timeframe)
            +
            +        if not filename.exists():
            +            return pd.DataFrame(columns=self._columns)
            +        where = []
            +        if timerange:
            +            if timerange.starttype == 'date':
            +                where.append(f"date >= Timestamp({timerange.startts * 1e9})")
            +            if timerange.stoptype == 'date':
            +                where.append(f"date < Timestamp({timerange.stopts * 1e9})")
            +
            +        pairdata = pd.read_hdf(filename, key=key, mode="r", where=where)
            +
            +        if list(pairdata.columns) != self._columns:
            +            raise ValueError("Wrong dataframe format")
            +        pairdata = pairdata.astype(dtype={'open': 'float', 'high': 'float',
            +                                          'low': 'float', 'close': 'float', 'volume': 'float'})
            +        return pairdata
            +
            +    def ohlcv_purge(self, pair: str, timeframe: str) -> bool:
            +        """
            +        Remove data for this pair
            +        :param pair: Delete data for this pair.
            +        :param timeframe: Timeframe (e.g. "5m")
            +        :return: True when deleted, false if file did not exist.
            +        """
            +        filename = self._pair_data_filename(self._datadir, pair, timeframe)
            +        if filename.exists():
            +            filename.unlink()
            +            return True
            +        return False
            +
            +    def ohlcv_append(self, pair: str, timeframe: str, data: pd.DataFrame) -> None:
            +        """
            +        Append data to existing data structures
            +        :param pair: Pair
            +        :param timeframe: Timeframe this ohlcv data is for
            +        :param data: Data to append.
            +        """
            +        raise NotImplementedError()
            +
            +    @classmethod
            +    def trades_get_pairs(cls, datadir: Path) -> List[str]:
            +        """
            +        Returns a list of all pairs for which trade data is available in this
            +        :param datadir: Directory to search for ohlcv files
            +        :return: List of Pairs
            +        """
            +        _tmp = [re.search(r'^(\S+)(?=\-trades.h5)', p.name)
            +                for p in datadir.glob(f"*trades.{cls._get_file_extension()}")]
            +        # Check if regex found something and only return these results to avoid exceptions.
            +        return [match[0].replace('_', '/') for match in _tmp if match]
            +
            +    def trades_store(self, pair: str, data: TradeList) -> None:
            +        """
            +        Store trades data (list of Dicts) to file
            +        :param pair: Pair - used for filename
            +        :param data: List of Lists containing trade data,
            +                     column sequence as in DEFAULT_TRADES_COLUMNS
            +        """
            +        key = self._pair_trades_key(pair)
            +        ds = pd.HDFStore(self.filename_trades, mode='a', complevel=9)
            +        ds.put(key, pd.DataFrame(data, columns=DEFAULT_TRADES_COLUMNS),
            +               format='table', data_columns=['timestamp'])
            +        ds.close()
            +
            +    def trades_append(self, pair: str, data: TradeList):
            +        """
            +        Append data to existing files
            +        :param pair: Pair - used for filename
            +        :param data: List of Lists containing trade data,
            +                     column sequence as in DEFAULT_TRADES_COLUMNS
            +        """
            +        raise NotImplementedError()
            +
            +    def _trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> TradeList:
            +        """
            +        Load a pair from file, either .json.gz or .json
            +        # TODO: respect timerange ...
            +        :param pair: Load trades for this pair
            +        :param timerange: Timerange to load trades for - currently not implemented
            +        :return: List of trades
            +        """
            +        raise NotImplementedError()
            +
            +    def trades_purge(self, pair: str) -> bool:
            +        """
            +        Remove data for this pair
            +        :param pair: Delete data for this pair.
            +        :return: True when deleted, false if file did not exist.
            +        """
            +        filename = self._pair_trades_filename(self._datadir, pair)
            +        if filename.exists():
            +            filename.unlink()
            +            return True
            +        return False
            +
            +    @classmethod
            +    def _pair_ohlcv_key(cls, pair: str, timeframe: str) -> Path:
            +        return f"{pair}/ohlcv/tf_{timeframe}"
            +
            +    @classmethod
            +    def _pair_trades_key(cls, pair: str) -> Path:
            +        return f"{pair}/trades"
            +
            +    @classmethod
            +    def _pair_data_filename(cls, datadir: Path, pair: str, timeframe: str) -> Path:
            +        pair_s = misc.pair_to_filename(pair)
            +        filename = datadir.joinpath(f'{pair_s}-{timeframe}.h5')
            +        return filename
            +
            +    @classmethod
            +    def _pair_trades_filename(cls, datadir: Path, pair: str) -> Path:
            +        pair_s = misc.pair_to_filename(pair)
            +        filename = datadir.joinpath(f'{pair_s}-trades.h5')
            +        return filename
            diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py
            index 96d288e01..be3e34e04 100644
            --- a/freqtrade/data/history/idatahandler.py
            +++ b/freqtrade/data/history/idatahandler.py
            @@ -50,9 +50,7 @@ class IDataHandler(ABC):
                 @abstractmethod
                 def ohlcv_store(self, pair: str, timeframe: str, data: DataFrame) -> None:
                     """
            -        Store data in json format "values".
            -            format looks as follows:
            -            [[,,,,]]
            +        Store ohlcv data.
                     :param pair: Pair - used to generate filename
                     :timeframe: Timeframe - used to generate filename
                     :data: Dataframe containing OHLCV data
            @@ -239,6 +237,9 @@ def get_datahandlerclass(datatype: str) -> Type[IDataHandler]:
                 elif datatype == 'jsongz':
                     from .jsondatahandler import JsonGzDataHandler
                     return JsonGzDataHandler
            +    elif datatype == 'hdf5':
            +        from .hdf5datahandler import HDF5Handler
            +        return HDF5Handler
                 else:
                     raise ValueError(f"No datahandler for datatype {datatype} available.")
             
            
            From d4540c846ae9fdf427364b8dd1664b3d0b604347 Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Sun, 12 Jul 2020 20:41:25 +0200
            Subject: [PATCH 2824/3421] Add trades_load method
            
            ---
             freqtrade/data/history/hdf5datahandler.py | 26 ++++++++++++++++-------
             1 file changed, 18 insertions(+), 8 deletions(-)
            
            diff --git a/freqtrade/data/history/hdf5datahandler.py b/freqtrade/data/history/hdf5datahandler.py
            index 21f521cc3..c99436b3c 100644
            --- a/freqtrade/data/history/hdf5datahandler.py
            +++ b/freqtrade/data/history/hdf5datahandler.py
            @@ -7,7 +7,7 @@ import pandas as pd
             
             from freqtrade import misc
             from freqtrade.configuration import TimeRange
            -from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS
            +from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS
             
             from .idatahandler import IDataHandler, TradeList
             
            @@ -29,7 +29,7 @@ class HDF5Handler(IDataHandler):
                     """
             
                     _tmp = [re.search(r'^(\S+)(?=\-' + timeframe + '.h5)', p.name)
            -                for p in datadir.glob(f"*{timeframe}.{cls._get_file_extension()}")]
            +                for p in datadir.glob(f"*{timeframe}.h5")]
                     # Check if regex found something and only return these results
                     return [match[0].replace('_', '/') for match in _tmp if match]
             
            @@ -43,8 +43,6 @@ class HDF5Handler(IDataHandler):
                     """
                     key = self._pair_ohlcv_key(pair, timeframe)
                     _data = data.copy()
            -        # Convert date to int
            -        # _data['date'] = _data['date'].astype(np.int64) // 1000 // 1000
             
                     filename = self._pair_data_filename(self._datadir, pair, timeframe)
                     ds = pd.HDFStore(filename, mode='a', complevel=9)
            @@ -115,7 +113,7 @@ class HDF5Handler(IDataHandler):
                     :return: List of Pairs
                     """
                     _tmp = [re.search(r'^(\S+)(?=\-trades.h5)', p.name)
            -                for p in datadir.glob(f"*trades.{cls._get_file_extension()}")]
            +                for p in datadir.glob("*trades.h5")]
                     # Check if regex found something and only return these results to avoid exceptions.
                     return [match[0].replace('_', '/') for match in _tmp if match]
             
            @@ -143,13 +141,25 @@ class HDF5Handler(IDataHandler):
             
                 def _trades_load(self, pair: str, timerange: Optional[TimeRange] = None) -> TradeList:
                     """
            -        Load a pair from file, either .json.gz or .json
            -        # TODO: respect timerange ...
            +        Load a pair from h5 file.
                     :param pair: Load trades for this pair
                     :param timerange: Timerange to load trades for - currently not implemented
                     :return: List of trades
                     """
            -        raise NotImplementedError()
            +        key = self._pair_trades_key(pair)
            +        filename = self._pair_trades_filename(self._datadir, pair)
            +
            +        if not filename.exists():
            +            return []
            +        where = []
            +        if timerange:
            +            if timerange.starttype == 'date':
            +                where.append(f"timestamp >= {timerange.startts * 1e3}")
            +            if timerange.stoptype == 'date':
            +                where.append(f"timestamp < {timerange.stopts * 1e3}")
            +
            +        trades = pd.read_hdf(filename, key=key, mode="r", where=where)
            +        return trades.values.tolist()
             
                 def trades_purge(self, pair: str) -> bool:
                     """
            
            From 31df42e7376b024c6a5cf7e6b8c01aff40be1734 Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Fri, 24 Jul 2020 17:30:16 +0200
            Subject: [PATCH 2825/3421] Implement get_available_data
            
            ---
             freqtrade/data/history/hdf5datahandler.py | 18 ++++++++++++++++--
             1 file changed, 16 insertions(+), 2 deletions(-)
            
            diff --git a/freqtrade/data/history/hdf5datahandler.py b/freqtrade/data/history/hdf5datahandler.py
            index c99436b3c..82298f38b 100644
            --- a/freqtrade/data/history/hdf5datahandler.py
            +++ b/freqtrade/data/history/hdf5datahandler.py
            @@ -7,7 +7,9 @@ import pandas as pd
             
             from freqtrade import misc
             from freqtrade.configuration import TimeRange
            -from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS
            +from freqtrade.constants import (DEFAULT_DATAFRAME_COLUMNS,
            +                                 DEFAULT_TRADES_COLUMNS,
            +                                 ListPairsWithTimeframes)
             
             from .idatahandler import IDataHandler, TradeList
             
            @@ -18,6 +20,18 @@ class HDF5Handler(IDataHandler):
             
                 _columns = DEFAULT_DATAFRAME_COLUMNS
             
            +    @classmethod
            +    def ohlcv_get_available_data(cls, datadir: Path) -> ListPairsWithTimeframes:
            +        """
            +        Returns a list of all pairs with ohlcv data available in this datadir
            +        :param datadir: Directory to search for ohlcv files
            +        :return: List of Tuples of (pair, timeframe)
            +        """
            +        _tmp = [re.search(r'^([a-zA-Z_]+)\-(\d+\S+)(?=.h5)', p.name)
            +                for p in datadir.glob("*.h5")]
            +        return [(match[1].replace('_', '/'), match[2]) for match in _tmp
            +                if match and len(match.groups()) > 1]
            +
                 @classmethod
                 def ohlcv_get_pairs(cls, datadir: Path, timeframe: str) -> List[str]:
                     """
            @@ -45,7 +59,7 @@ class HDF5Handler(IDataHandler):
                     _data = data.copy()
             
                     filename = self._pair_data_filename(self._datadir, pair, timeframe)
            -        ds = pd.HDFStore(filename, mode='a', complevel=9)
            +        ds = pd.HDFStore(filename, mode='a', complevel=9, complib='blosc')
                     ds.put(key, _data.loc[:, self._columns], format='table', data_columns=['date'])
             
                     ds.close()
            
            From 0f08addfbea44fd3bd3ce83bbffc2e81c5290333 Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Fri, 24 Jul 2020 17:37:07 +0200
            Subject: [PATCH 2826/3421] Don't store empty arrays
            
            ---
             freqtrade/data/converter.py | 9 +++++----
             1 file changed, 5 insertions(+), 4 deletions(-)
            
            diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py
            index 46b653eb0..100a578a2 100644
            --- a/freqtrade/data/converter.py
            +++ b/freqtrade/data/converter.py
            @@ -255,7 +255,8 @@ def convert_ohlcv_format(config: Dict[str, Any], convert_from: str, convert_to:
                                               drop_incomplete=False,
                                               startup_candles=0)
                         logger.info(f"Converting {len(data)} candles for {pair}")
            -            trg.ohlcv_store(pair=pair, timeframe=timeframe, data=data)
            -            if erase and convert_from != convert_to:
            -                logger.info(f"Deleting source data for {pair} / {timeframe}")
            -                src.ohlcv_purge(pair=pair, timeframe=timeframe)
            +            if len(data) > 0:
            +                trg.ohlcv_store(pair=pair, timeframe=timeframe, data=data)
            +                if erase and convert_from != convert_to:
            +                    logger.info(f"Deleting source data for {pair} / {timeframe}")
            +                    src.ohlcv_purge(pair=pair, timeframe=timeframe)
            
            From 3171ad33b756183e7240c38314abca4832583340 Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Fri, 24 Jul 2020 17:44:29 +0200
            Subject: [PATCH 2827/3421] Add blosc compression
            
            ---
             freqtrade/data/history/hdf5datahandler.py | 2 +-
             requirements-common.txt                   | 1 +
             setup.py                                  | 1 +
             3 files changed, 3 insertions(+), 1 deletion(-)
            
            diff --git a/freqtrade/data/history/hdf5datahandler.py b/freqtrade/data/history/hdf5datahandler.py
            index 82298f38b..d27b28c2d 100644
            --- a/freqtrade/data/history/hdf5datahandler.py
            +++ b/freqtrade/data/history/hdf5datahandler.py
            @@ -139,7 +139,7 @@ class HDF5Handler(IDataHandler):
                                  column sequence as in DEFAULT_TRADES_COLUMNS
                     """
                     key = self._pair_trades_key(pair)
            -        ds = pd.HDFStore(self.filename_trades, mode='a', complevel=9)
            +        ds = pd.HDFStore(self.filename_trades, mode='a', complevel=9, complib='blosc')
                     ds.put(key, pd.DataFrame(data, columns=DEFAULT_TRADES_COLUMNS),
                            format='table', data_columns=['timestamp'])
                     ds.close()
            diff --git a/requirements-common.txt b/requirements-common.txt
            index 604a769d4..3e58f15b4 100644
            --- a/requirements-common.txt
            +++ b/requirements-common.txt
            @@ -14,6 +14,7 @@ tabulate==0.8.7
             pycoingecko==1.3.0
             jinja2==2.11.2
             tables==3.6.1
            +blosc==1.9.1
             
             # find first, C search in arrays
             py_find_1st==1.1.4
            diff --git a/setup.py b/setup.py
            index b1b500cc8..7213d3092 100644
            --- a/setup.py
            +++ b/setup.py
            @@ -86,6 +86,7 @@ setup(name='freqtrade',
                       'numpy',
                       'pandas',
                       'tables',
            +          'blosc',
                   ],
                   extras_require={
                       'api': api,
            
            From 861e7099ccf14427313b79c5ceecd300963b3459 Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Fri, 24 Jul 2020 19:23:37 +0200
            Subject: [PATCH 2828/3421] Rename hdf5handler to hdf5DataHandler
            
            ---
             freqtrade/data/history/hdf5datahandler.py | 2 +-
             freqtrade/data/history/idatahandler.py    | 4 ++--
             2 files changed, 3 insertions(+), 3 deletions(-)
            
            diff --git a/freqtrade/data/history/hdf5datahandler.py b/freqtrade/data/history/hdf5datahandler.py
            index d27b28c2d..debbcce8b 100644
            --- a/freqtrade/data/history/hdf5datahandler.py
            +++ b/freqtrade/data/history/hdf5datahandler.py
            @@ -16,7 +16,7 @@ from .idatahandler import IDataHandler, TradeList
             logger = logging.getLogger(__name__)
             
             
            -class HDF5Handler(IDataHandler):
            +class HDF5DataHandler(IDataHandler):
             
                 _columns = DEFAULT_DATAFRAME_COLUMNS
             
            diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py
            index be3e34e04..01b14f501 100644
            --- a/freqtrade/data/history/idatahandler.py
            +++ b/freqtrade/data/history/idatahandler.py
            @@ -238,8 +238,8 @@ def get_datahandlerclass(datatype: str) -> Type[IDataHandler]:
                     from .jsondatahandler import JsonGzDataHandler
                     return JsonGzDataHandler
                 elif datatype == 'hdf5':
            -        from .hdf5datahandler import HDF5Handler
            -        return HDF5Handler
            +        from .hdf5datahandler import HDF5DataHandler
            +        return HDF5DataHandler
                 else:
                     raise ValueError(f"No datahandler for datatype {datatype} available.")
             
            
            From 6a0c84b64924db4889363e8b062d769c46f7deb4 Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Fri, 24 Jul 2020 19:23:56 +0200
            Subject: [PATCH 2829/3421] Add tests for hdf5
            
            ---
             tests/data/test_history.py | 18 ++++++++++++++----
             1 file changed, 14 insertions(+), 4 deletions(-)
            
            diff --git a/tests/data/test_history.py b/tests/data/test_history.py
            index d84c212b1..fd4f5a449 100644
            --- a/tests/data/test_history.py
            +++ b/tests/data/test_history.py
            @@ -1,5 +1,6 @@
             # pragma pylint: disable=missing-docstring, protected-access, C0103
             
            +from freqtrade.data.history.hdf5datahandler import HDF5DataHandler
             import json
             import uuid
             from pathlib import Path
            @@ -12,6 +13,7 @@ from pandas import DataFrame
             from pandas.testing import assert_frame_equal
             
             from freqtrade.configuration import TimeRange
            +from freqtrade.constants import AVAILABLE_DATAHANDLERS
             from freqtrade.data.converter import ohlcv_to_dataframe
             from freqtrade.data.history.history_utils import (
                 _download_pair_history, _download_trades_history,
            @@ -682,14 +684,16 @@ def test_jsondatahandler_trades_purge(mocker, testdatadir):
                 assert dh.trades_purge('UNITTEST/NONEXIST')
             
             
            -def test_jsondatahandler_ohlcv_append(testdatadir):
            -    dh = JsonGzDataHandler(testdatadir)
            +@pytest.mark.parametrize('datahandler', AVAILABLE_DATAHANDLERS)
            +def test_datahandler_ohlcv_append(datahandler, testdatadir, ):
            +    dh = get_datahandler(testdatadir, datahandler)
                 with pytest.raises(NotImplementedError):
                     dh.ohlcv_append('UNITTEST/ETH', '5m', DataFrame())
             
             
            -def test_jsondatahandler_trades_append(testdatadir):
            -    dh = JsonGzDataHandler(testdatadir)
            +@pytest.mark.parametrize('datahandler', AVAILABLE_DATAHANDLERS)
            +def test_datahandler_trades_append(datahandler, testdatadir):
            +    dh = get_datahandler(testdatadir, datahandler)
                 with pytest.raises(NotImplementedError):
                     dh.trades_append('UNITTEST/ETH', [])
             
            @@ -702,6 +706,9 @@ def test_gethandlerclass():
                 assert cl == JsonGzDataHandler
                 assert issubclass(cl, IDataHandler)
                 assert issubclass(cl, JsonDataHandler)
            +    cl = get_datahandlerclass('hdf5')
            +    assert cl == HDF5DataHandler
            +    assert issubclass(cl, IDataHandler)
                 with pytest.raises(ValueError, match=r"No datahandler for .*"):
                     get_datahandlerclass('DeadBeef')
             
            @@ -713,3 +720,6 @@ def test_get_datahandler(testdatadir):
                 assert type(dh) == JsonGzDataHandler
                 dh1 = get_datahandler(testdatadir, 'jsongz', dh)
                 assert id(dh1) == id(dh)
            +
            +    dh = get_datahandler(testdatadir, 'hdf5')
            +    assert type(dh) == HDF5DataHandler
            
            From e26e658f99bc82f9cd194a0dfb2239397cfc60e2 Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Fri, 24 Jul 2020 19:33:27 +0200
            Subject: [PATCH 2830/3421] Improve a few tests
            
            ---
             tests/data/test_history.py | 17 +++++++++++++----
             1 file changed, 13 insertions(+), 4 deletions(-)
            
            diff --git a/tests/data/test_history.py b/tests/data/test_history.py
            index fd4f5a449..2c0665b69 100644
            --- a/tests/data/test_history.py
            +++ b/tests/data/test_history.py
            @@ -622,7 +622,7 @@ def test_convert_trades_to_ohlcv(mocker, default_conf, testdatadir, caplog):
                 _clean_test_file(file5)
             
             
            -def test_jsondatahandler_ohlcv_get_pairs(testdatadir):
            +def test_datahandler_ohlcv_get_pairs(testdatadir):
                 pairs = JsonDataHandler.ohlcv_get_pairs(testdatadir, '5m')
                 # Convert to set to avoid failures due to sorting
                 assert set(pairs) == {'UNITTEST/BTC', 'XLM/BTC', 'ETH/BTC', 'TRX/BTC', 'LTC/BTC',
            @@ -632,8 +632,11 @@ def test_jsondatahandler_ohlcv_get_pairs(testdatadir):
                 pairs = JsonGzDataHandler.ohlcv_get_pairs(testdatadir, '8m')
                 assert set(pairs) == {'UNITTEST/BTC'}
             
            +    pairs = HDF5DataHandler.ohlcv_get_pairs(testdatadir, '5m')
            +    assert set(pairs) == {'UNITTEST/BTC'}
             
            -def test_jsondatahandler_ohlcv_get_available_data(testdatadir):
            +
            +def test_datahandler_ohlcv_get_available_data(testdatadir):
                 paircombs = JsonDataHandler.ohlcv_get_available_data(testdatadir)
                 # Convert to set to avoid failures due to sorting
                 assert set(paircombs) == {('UNITTEST/BTC', '5m'), ('ETH/BTC', '5m'), ('XLM/BTC', '5m'),
            @@ -645,6 +648,8 @@ def test_jsondatahandler_ohlcv_get_available_data(testdatadir):
             
                 paircombs = JsonGzDataHandler.ohlcv_get_available_data(testdatadir)
                 assert set(paircombs) == {('UNITTEST/BTC', '8m')}
            +    paircombs = HDF5DataHandler.ohlcv_get_available_data(testdatadir)
            +    assert set(paircombs) == {('UNITTEST/BTC', '5m')}
             
             
             def test_jsondatahandler_trades_get_pairs(testdatadir):
            @@ -655,12 +660,14 @@ def test_jsondatahandler_trades_get_pairs(testdatadir):
             
             def test_jsondatahandler_ohlcv_purge(mocker, testdatadir):
                 mocker.patch.object(Path, "exists", MagicMock(return_value=False))
            -    mocker.patch.object(Path, "unlink", MagicMock())
            +    unlinkmock = mocker.patch.object(Path, "unlink", MagicMock())
                 dh = JsonGzDataHandler(testdatadir)
                 assert not dh.ohlcv_purge('UNITTEST/NONEXIST', '5m')
            +    assert unlinkmock.call_count == 0
             
                 mocker.patch.object(Path, "exists", MagicMock(return_value=True))
                 assert dh.ohlcv_purge('UNITTEST/NONEXIST', '5m')
            +    assert unlinkmock.call_count == 1
             
             
             def test_jsondatahandler_trades_load(mocker, testdatadir, caplog):
            @@ -676,12 +683,14 @@ def test_jsondatahandler_trades_load(mocker, testdatadir, caplog):
             
             def test_jsondatahandler_trades_purge(mocker, testdatadir):
                 mocker.patch.object(Path, "exists", MagicMock(return_value=False))
            -    mocker.patch.object(Path, "unlink", MagicMock())
            +    unlinkmock = mocker.patch.object(Path, "unlink", MagicMock())
                 dh = JsonGzDataHandler(testdatadir)
                 assert not dh.trades_purge('UNITTEST/NONEXIST')
            +    assert unlinkmock.call_count == 0
             
                 mocker.patch.object(Path, "exists", MagicMock(return_value=True))
                 assert dh.trades_purge('UNITTEST/NONEXIST')
            +    assert unlinkmock.call_count == 1
             
             
             @pytest.mark.parametrize('datahandler', AVAILABLE_DATAHANDLERS)
            
            From 0a28818b46bf1ded08579c41e951db45ff31fdc9 Mon Sep 17 00:00:00 2001
            From: Matthias 
            Date: Fri, 24 Jul 2020 19:37:37 +0200
            Subject: [PATCH 2831/3421] Add some tests for hdf5
            
            ---
             freqtrade/data/history/hdf5datahandler.py |   3 ++-
             tests/data/test_history.py                |   6 ++++++
             tests/testdata/UNITTEST_BTC-5m.h5         | Bin 0 -> 261142 bytes
             tests/testdata/XRP_ETH-trades.h5          | Bin 0 -> 310513 bytes
             4 files changed, 8 insertions(+), 1 deletion(-)
             create mode 100644 tests/testdata/UNITTEST_BTC-5m.h5
             create mode 100644 tests/testdata/XRP_ETH-trades.h5
            
            diff --git a/freqtrade/data/history/hdf5datahandler.py b/freqtrade/data/history/hdf5datahandler.py
            index debbcce8b..6a4f45fa9 100644
            --- a/freqtrade/data/history/hdf5datahandler.py
            +++ b/freqtrade/data/history/hdf5datahandler.py
            @@ -139,7 +139,8 @@ class HDF5DataHandler(IDataHandler):
                                  column sequence as in DEFAULT_TRADES_COLUMNS
                     """
                     key = self._pair_trades_key(pair)
            -        ds = pd.HDFStore(self.filename_trades, mode='a', complevel=9, complib='blosc')
            +        ds = pd.HDFStore(self._pair_trades_filename(self._datadir, pair),
            +                         mode='a', complevel=9, complib='blosc')
                     ds.put(key, pd.DataFrame(data, columns=DEFAULT_TRADES_COLUMNS),
                            format='table', data_columns=['timestamp'])
                     ds.close()
            diff --git a/tests/data/test_history.py b/tests/data/test_history.py
            index 2c0665b69..003e90fbb 100644
            --- a/tests/data/test_history.py
            +++ b/tests/data/test_history.py
            @@ -707,6 +707,12 @@ def test_datahandler_trades_append(datahandler, testdatadir):
                     dh.trades_append('UNITTEST/ETH', [])
             
             
            +def test_hdf5datahandler_trades_get_pairs(testdatadir):
            +    pairs = HDF5DataHandler.trades_get_pairs(testdatadir)
            +    # Convert to set to avoid failures due to sorting
            +    assert set(pairs) == {'XRP/ETH'}
            +
            +
             def test_gethandlerclass():
                 cl = get_datahandlerclass('json')
                 assert cl == JsonDataHandler
            diff --git a/tests/testdata/UNITTEST_BTC-5m.h5 b/tests/testdata/UNITTEST_BTC-5m.h5
            new file mode 100644
            index 0000000000000000000000000000000000000000..52232af9e6a3fb48a11b1e28434d9ade31b363d2
            GIT binary patch
            literal 261142
            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%0DH8)0H>
            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
            M0Koj;+GPBH05iAmr~m)}
            
            literal 0
            HcmV?d00001
            
            diff --git a/tests/testdata/XRP_ETH-trades.h5 b/tests/testdata/XRP_ETH-trades.h5
            new file mode 100644
            index 0000000000000000000000000000000000000000..c13789e2acc9f44a81dbcc5907a7050fc3b933c7
            GIT binary patch
            literal 310513
            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

            T;^Q^qt>Gk#(5KGYRvJ&9zjaUv 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%0AdKwn?Z%@4G@`=UNuYIClBntX=}?+m{x-Wg zQILgHO{$xl>w34+(ecLg&Qj}}Hl1~Jw0b6I?6+O7%#IU0!kWcVWr0mjCf~9;Ih8du zCz`*VVbulM=9cdBrj_>dX2}{_SU!DB+L2!6#1ttf3H;c15F_ znHPWgL_FX-`g3+|QUMun-DZ0Gt$57c;6<}9a*kf+=#B0AS7fSuzx%xX`Su5{$??d1 zlg#V(goU{M`8U-pE+eSly)79H2c2kirJV^Z(9kC?|+HKi35ua6JnPkzzSDJs&_b7xzXd5j)e?_QVliEvg>&wt80lx|ky>S%1v zn;&zHH}SRI(2GIzg}aqV{n)z`fDub7cO1v=hDjw2_3ZwbzxFrFqWe52I=9Wip+_#> z)ge9Ur07K_k{Mr8C#!080us*7p5_<&2*oY`$`f&^3l7)Jy?K2OF9jnptVHr^45h-> zrOvAOB)Z$dMn6e)=O?Yt)g;5u$py&tMLQdbOYQKDPMzm{Aa}-IJ0oPU<3Jys zu6hckP|U{{-ATN>Ut%+OWp|WY{atRnd$*;>VqwS1p+iFdps8jod(IS6HJ*>HC0~s` z`XKK5HqpD1GbV2WM`M4T$^D8-H+>9Ob^=)uj!t zN#}eI+)~CHmKEvJXs6@7ACZMqYCL4@5A8i|y=zy(D7yG}AU8MnvX1}W#!inX^%s&S z9#yL11yL7c((zrp$^mnyx)AY~x3d1^;lPU)`RoMZ{_4g1g;|MDSKU=Wv{I;)h??E6 zs?-DQIT~@((|L(@_06+Gb@*dHo<};mxD-U9^X=OL{~@!e7l--kJno1T6d0u)K1^T{ zWUH~%#`Uf7qVK1pk}kLVm|uujil=DL4~q7lsL(ra;YDrfZ|qr;TStGkD|`C+{4BvX z7i4(mym(&&hV0Dfl9-)4OJ*cDyXK*J9v;=z%B8FOOB?Up2~@9jRxw)WbQ60|xblfI zQTN~wYMj}veq`+_ErrA8T>Ph7W(9jpWMySfxTdjXR&9S=HIJ4!7}#9w(G!#Ex~gk% zpwu&AeSO>WhPTom+@zP6H$VK13QAsmJ#bqde=Uj+74{&}`8Y-!2+Gl)4^#ou{Ki)ycEIz9O|(;lioUr^b%WEq+4h za`%WC?fcp4q_pK}rA4F8nb>`q{#r(fr5I&&rV_8hW#`V;>3#1uSLbHnnwQ78{OE<1(7ofnL z+1>jjtIdp>%^cLaf(jp-e&2_a&S-vReMyz8YKUIQYRNYI{=Uhv1>wkZ zt4gT#O)|1m`9xwjC!LM2L%5YENVrbwrXAHJ=SHFVEu0ft`blrd?Hh};(V-m8izPen zl${)Rd+$LoRS_wqR0!qVKo2#Dx2XTzs;^n|bM?*7P<}RYuD)c z5?8h*k{{m*BDg8(?w`N+Px!=4*4GEg!f4b#mpn}atILg+Pc~~SmPidaYF^wq7JriE zRCbM7*4a@MdHIVpT{OOLkoM}xkt4b`Uj#32QPargG$hbQ&SX4{fc?-#@_#

            61+ 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

              p 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 42Oawj1bj`}UciI)yUx96!Ft_&el5e!G%N>J$JI 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

              k* zAZ`JUhE4&3DR#oSzd zeGpxQbbLJRfh91k=qfAaC!%|L@@bFu7#6byVu>I~0RapQa6uf!+wlT)^z!eq{SQ_+ zPJkIrnW>N1`;=?bR!=H-Vi{-l+|qia>)=C)=D{i-Zg#9i5Uz%4PZ!Q-?s9;;+Uhc48oE5REw^_4K8Z zs<*PXC{+Y=bep8*un6_ zNRp3-hlC{e4(RKtWzH^T0j#`T9_H@Ob{xq9I|?8nID6Fduz?)%PY1Zh8HB38d~vzD z&Hq8Md8Qj*v{QH8^9K0Rk~fL3?~?SJ7i1=fLofQg*>+A&uHm!cJ)JtKH)dx!;U{TD zt(%+epAMLVk@lS9o)#soYZN?@Tc70Qlw5(Ge83L2T*fpeJSmuO3W&QfWApeX^M&yk zYSpYP2&N4tqT%rqAF&vUi77H!JD5n4o7?-Z$zl_z+vdYYdCZ^mA4tMe#|8!l!o`z~ zZ*$d@W%;YKqPILdBfdS8jxK6wh$R+7EO>ej*e8$yDD1#qJ4I6)sN6Qv>i(Gs1MD&G z(1hpp$dAJ3W8$q(R@cG8Oo2I;o15GE8Oi`7gN3UgIuM56IMMvEnasJ7>P|7;$OCd_ zsbuIuVAQ7|gq4(B0HVQGE5s`b_u+@HcoY|Fx6;1)v?6K6@sa4wa0}z{vjzq-hvYCb zJ9FFM%AE7S^UJhrf7EwZ4!^E^wuq5MU=uaUQ+;|RLDrfH&kuY%)$G-g`AjOU%*{*&JX9`kL9&$c* zEbCTLQN;@|YUqB|k1KKz0}+jmf5JfIv-96!VEX`4ARNH-0^3M30$=ZK8X84AK@=tf z16$i8?w-DZ(ZIM4Y-ng?BjMoW;pInMr!+IeMS-*3Z-)XB3)ZC%9*JOyiQ%d403<{h z<8Yr8+U^^8KDxZRuBCN(nS`90mWz*HQVLj&l*)S6PQmGgg?CGU>3^@o!~}!k00RpU zjQZ23Wh6vKA}1%mL)qs23V#U%Gz^@NPg+Y$QcBZp@WXeS?*ana?Z&2NM?Af}ZLVD} zs3fMR=Hk)?EBbpQc34_xAs~2MTo*eS#(*$b&%Vx*kWyr4*C$m(M=Pn)($SgO-LC=> z$LnxmvRa-z2W!WXCu1(8WmUAl=0e*=u zU*3T)Z^o`SGBI_J&wx?T&Rs=dh{wRl$i%^P5`1j=u%RJ59F2|yA)iuGZr>LcO&1jh z_2Cr(57As0i05+p-J+^Np=a+$_U+s6;2aPX8XAT^dAhB=ePUt~DCDVG3X1wg?D|gH}}5HvugRGu!uIWlIMdg5SMYQBm8`4+cj(5|)-$ zRyKRLZBsKfy)^!jcxUj1t6!NG7Jx*grKM+NWP*vPoU2!_Ul$C4=iUHurwWRSN=w1y zVFQRD1xTW2ZjN&F3_9T-a4ZV`Wv6#zV`Iyc?#0E$gtV(yZ+CQzlAn)@1JSKgQ!l4w zhp!ys1tLlU%DD+vSV+n%Dl4mz5EZ7b=`B!TfQJ{ioT8=Am6g3bF*!x&;=&6@U?2v5 zela6s(|y-&Kc!=2;?XtP3r6%_UP1XZ7eHXWk5e2#GC8?KcRD)G%|%@2R8x2J@C!yk zY@wmY!otu_&EbGUZ>n}f*J`ty9zRP4nTy+AuB?P~z36%U<{b)xzklBcw&^+kRRx69 z>va0=b(%b3?_Sw46)YCaXAO^kBKq`s77Sy*eVboItqu!eD=XXhz@)$)KwENhTAXar zfe8iRGtI!jj0Q2Tz(56J1+GI7TNVVd1D7R;1Iq|OoS^a$7f8SZe2<910x=%|!$D4d ze$ZF~;6@OaOb7u%TX9K+u~ZO<3j{%;XoyHmOdJ6{SZTNtzEXdE1-4R`|6oNr2?9G* z>C`}SXb{*-qlrur1YuNB-HC*NGB$phxneGiSsh+OT399s(gp?VAR(~!rw0n%g@j$LZn@; z$1+3EBb){F_D2*lqc^zwS?D|X{SL!je}#blf{0*@pa9TL;LjY87_<+h0?z+WL?PqN z0wM^4zu^M@-MW3J0K|JMF1c4)2E+$!)UX;ROcghlF9DUpRr#Mi;vg7$HN!KA2pJ5a z!0IT3#(M9EFj7beGy;SK1tKtL6bO4nBZYEGq6!B2uwXO*O4n9^(1`t{NbQ3t6qE%~qHzJqFj+Qe41${$J&D46 zgTPC(&}bX*HW-o};X`4Xg@#Zlj42kelia%E(x=E3(-avuBTSf&>WBA_i?s;E|9xyX%0R$u@YnzS_Q%+I#j{ zAE>+*j&c?g*}4_lx>eW18>M5GaoKqX zpY8n;7q51)#`~T6`6VDn$kPi}W2A!c$cYTi+2bw_C#0PUFR zamPUl&@WNz(jC&tZ-cv2UvBbbDkp!u>~=C9{X!|Z`>CDJT~qA~udW}t?q$RUZ=Z=I z|1^BI=&s<^>})sI)2B|6pV}TZpgvZmng0GH{Tuj)@h?|p4M>Q$zTeA&WNlXE*-E2< zrWtPLC_1?Nt2rv2fwBD@pZbv7HDq5bIrZ+@fa9PhN45C4TYTfL`J^d)jtwMTh9g%YVxq9Z12Gg$i!r?Rgo6aY{UND7g+l)0-p?X zV!JXjFH`v5s54#R?S8$7I+a}x9P!kLXD9FDUoHE@Y;P- zVcz2UYA0NpDfG?MqvhVROXL;sNvq`eGI^TZ+y!UZ?}cR2siN@MnZUu3#<4R!-6Q=C zl~8Qs?gm-5rc5|o(?C$N{mSS>16xp?Ret9<`*5WyP36fiNuuZGU%%W_&A_@Rm=AMQ z{#w6CmziCa;XZp%6XltdM7KjGT2B1NZ-%wym@qK5=rp#HOMdF5;Okcf8A_}7%$nk_m# zlwU3tpgNA58`0mr5&X>0&a@p)YPp5{hES)sQa<0FJsj}#`}f7~D=)l0sTiHmqo>ND z0~e=%_t7(6uT)SkS~Y}j8|o#IpAo0uRgai~tZio(ghv^Ch7pm+&vUKd&5aM$PD zZcvjaGg@iTJl42@?S@~Tr{oubXyTH*5eEK8ji14HdQ;aakMpyT(_K()JW8lZAaH$U z47MH_iQUr{{)Sk>{NQ27qv~MeDV4x(m2nPwczwal1W9}H>#^eYVN(+mA(O!O^dm2j z7oRiD32?GVGQzFdA*Y-7&kH`T0P2vfBGA%u*pj|~1-Jn&58miWdk-IekQ=&_d@IkT z8xOJ3>9VFxa!NFEN|z1%uD^V?l#?aSpnT5y&9}UE;gn9ltj5<1*!`d;V`VFms5;FG zlO1PG9+3!YG<~%tA9>9h)TYP|z9=HUOzD19E+k~SKhB*{lk(Wu*|}ukF zfGDB0uks;q2T$)Pz8%%y3?H0{imL0t<|h*6N6Bp2vap40%r!B;Vy?2h?$PML#3;PI z98t_X@|CBqVGe9ew2};5#}ix=SE7=WXG)tID-z+O#kmci?^ZX|H3`shV#sdDeBAfA>U(F^-J(~I>sJy$O%mS=4f8+h?Px4|)mt_2D)w=9 zZ(m7N?c`kSdGPH6{~Tr32-p^<sWE5f*+ad{21MpU(?eNyUpAS!hw5CKfhGF(lK z2mx`Q=nF|VZ`ytC`}}$0DL_htfHDO@d3$Q=%0gr$ z;^G3w!a^*7UIZv}x!i77($F}kp`bypW7i2#uD*JeE+3!_LHPh>BY<-8X(J;erF{PR z`R@Sb{UQrVV0UU4_Q^?q9pK~n&FA^cms+Ja78mamP_B6)jzoR}DBltiB05bJH#T;E zY>WY*{QVfSc+MM6DynJm-rhVvzZi`4ksR?`mWuo0Q{&^AuLGpUa43WKK+ynYKMW=Y z?9+Eli{S(VgD!Ze1yByRQOubf8`B+|93vXpmkCh5rKm_G2T+cVmIEjc0+fq@AK##d zTnH^~3_$rn2t)m@T?h6NB_&yU01vnL7ddeF5$SST+5!T~g-y$Te*OSuz6%#H7h&`u zB+~KYwgBb(-b=16v>q%hab4Wp!`|MOdwO{6XC3y5!6Zyn9ZbvVZrEr>BdWdYpiAc5b7a8v{UDN>z2d zs8)%Ww}6-T2#(4vEeCyFEc5dzmJS^{l9|~?^s&EN+)j3jeLwuPj%=6l%>$A|Q1M$d$Xh*(*fP@rkRFp-9i zo*uzY4AvPzd90+cmG6s-AfW!j0$A_`>%Gfl)YN2%aw1Bw!nCR_zyNDEL%3lt9zqx!Mfm050cNFY$cvk8-Sl?Og>E$+go|m~H7aP{=oECB zxKp9R^+-13G_QpM*zJ(gz&+;U$Fm18&p!af;UR%vCR&T-WBf(kNE?i9pVvM*`x=&r zC3U@C2B?+b@rzq>3d+J(~9b?fZ@w#Og7beTG&4w3Kzc5qbH^87wH(}lxFj?~NM z9S_c9RO@;?YiC@0p8UmLpKXYF)klv8<~UihA3o@Cd-xE9Bq`#|yM@#pc`jR-(sDT@ z9t~02x;?q%)Ye3GW!DU@ay6tLU<-g_FM%=|2i^$VWOf?R3cTnWkylVKvAvcLJTD); zgS50@l=O$7EPy}HJ@eq>QDuh4rWQvhfC~vb@Q{|%(Ac%_fPG#m3n*nrjnRXamRBYr zAv<>-^ztsb^mGnPb&?6`7#i+$*Pn8N$CvgQT(w7`Xk9%#BQ9sx)q^b)`kjtsw{*@i zae$b5oR(+hj-E)InX$E_H6)iv%{g>QQcA`l+P3T^K%Wfw3?PI)P0Xl$TSXtb43L7- z!2Ayg@(!Z=qaaHBblbIS*RCTV=oS_R;T-m%J3t>66cpkNlDjAfDgv{$;G?V(pe^r} zf@y#(hy(=sue=W?PpYbGYHA)}K!|pbrM~_VD5U`f!5W)T5DA#Bdjh&^qPDgU1O$8D z1yXf`zgM`q615sIlTreKs};2ss21}0aYIrI!PahYP~4%tLQxArFo+cVftfAvhdUU+ zKitubC0;$hTK$C}i#<9zxYYQ(KY!Q25NZ&g9-o`=bo2awg#!9I8m73q+N@O=v3B-e zXEX5=L3Si*I&fno36os$*%y8OZk&uankhX!+f`iHVh05Db_$) zefaVT`I^`6M+XRa;1hnM0hT*B26D@DfbWKkM}y zFsy&jZ&kmo>a-87u`uuqH^-t?B83{Z;&_Dz|Mgj6tK)MFI zEP%>`7yv`yc>=lGiiCCszLu-^G;2Ko45DAn=NI7Z<^*OlXXMTMBeVq;kIQqMKfhJ!)ewCk44;Vy^ z=bg0&FhV~^L`bn#&{};7mLQ@21b+1%!^?HWT5?j*>bMe!i1Ec!gLcNi9$b+WYZfap5itRURRjSUSJ{hctpwb|X>M-& zpZvIi-vOKo{HA6$l4>3$-hpA;{)6w zGXB@;Z1BmT==r}+hg?fX@%69MttI=9pNN6v;%K~)|9-ch+1QRh^d2ai7W@&~(cH_| z-{}y-%E3Lr$qzjLnU8!`u5@fHv<-~$`20h81bJ`=3~&do%)GUNe^(xU)Ekts{yo1d z4{PcH;PTt@u$uK>B@e&fUccz406jQX=?i|qu{*%yATYkYoDr)U6XEKKH^TpJyJh_s z?Y5?Ve%Q~1`ycJLp}+dwcEk5|zoo};eH;#rzoo~tG_-)}_fwDke!EGnw#%RF3-FW% z{1N1AkAvr7r=Mc>x8*GQM|Jph4j zKkO=ycKx`J&^G_dc3H3gjGYd-I(Q;{an19u(0~7x9EF4W;SK_k2>1W_cKU-ofJ5Vd ztQ^q;ln?j+LxzBbeX1~$RW`v>;GAML31^0Hpffazn4 zJto%cEVds-uGWMw4n?fhD{kVi$9Z_`39M9p{Ofdtw{VR9bvpgE_h!xhbvnGY51fOi z|2o}TasTlXflpG_<~wcHF!(7y8|LQ$99NS+_aDgBoCG^>{Wui9F8wYCKYzp?uONgU zen1+yIv_=e6ObayZkPn|MTNXqF|D>#Nb58 z_HX0!Ric6)Jh>p;dJ%2{4k8$`9%~l_1>>-G5xREvSUcnM@7hBsZ>^jk4+!l^pdTUK z@16np{P-{i7sBD1al<2zSxatNtj@avtVYLl#mUTdIX`;RXPEe$4$tsW=;5>iK z&#$=wj`$<|tkwp&;2+`B+8f{^e}wPX-2mVAM|guC9xg+m|62PKQiUkt;e>lg4u7?Q z%s;@J7n>B=q`)QxHYu=4fqw-Beq}F+{-SUR1AKq=1HPgAvfc>a(2=3n;9`XGH`ojL z8{r%5h0cxe4fev)M)(GMLD&$F@Q?RzuouiW!Vv^S@#mu(;evmJU*8DdU@tt|2;X2Y z%&);E2*qx&7X*wp5PZ#E*zlB)d-J?WflUf*Qecw;n-ut$P=MgyyU}0p=e#o6>b!-v z!5#~o%MNZH1m8CyR^Lw;1{07W%(oG`X~O(X#hQO%@Y;0Sf8|$;WX8V*xmIv9KmHy+ zn?iWo=J|gs1%BmMdsh(82L!%C3E}Te*9h^u^UNFRM<^Ggu(4d^YSKT=M+1A73qS~R zV1V;?$NRVwJn(<`gyIVLiQk5GBv8(#Unq`__<7Pzzfk-@1NNJKq0uaOzO7j0)_>>v z+#mcvaDBq+$nekpI`{z(L2lNs&#hl?{;&K(C%N(UTC3KdPK03@lIyS20Wn)WkgR{5 z&SouLmcU=9L$0Mm!2dekTC)H6>BqVRXr0vtg76ss)IdDS!EzXf4<(1{&)KyuD8=S{X+lew97x}cL;7W}QXF2* z{X6|aQCruBTHr)bfB!arxs86Ic^qpmU#sWF6W)4)pl@t{osNLG6w_a)(_ec*1>&#M z;jMiTsf+io({04}KXp%-SG&75UuU!S;@=k_7wWf2&{UM-WNuA01|E zegiU>;=D#@D29Dm5uNX z_CnJ}_y&7nY9ky$Koo!GuHJyZ;2+^S8{r%51+R_p4faCn8vIv&q4jI-o!$7oCbyaxx0i^0MW3?-iF7m6il~`}+p^1o+KO z&U~4j`Z^7w(Nob;(o)AppFexyOw2hG{auE;4UCPRH9u`>d))d&Qe>N$gy?qh!o1rz z3-a&W@^W!M;_2$)_IdQ<*u;lVke z@;!EN=9yG6Y=DA%mjI7cthZFL-%8$RJuQ?RiSBRy1fK%ClO>VB|5p&2rWr~+y-l`- zk2a!%0mDZ`ro}0B*L#v8TEAH&&t;T@12u=u8+D;Le+u*8|H%R-=d$>b#s3u)``5E3 zcIKH(9c-L}++Bd@Zmc&(it2Y+a*c^k*@3Zv&n(OT4%Ym)5L&tpHbOzZUx3H^Zxi~G zmEb0!|FNOm36Vzaq4xR9ys?f?QL8hvIJ&x|2>3t&8|bLGCNS z)BLvyEvMtZN$6h@x)A8-ehP9!0UnXRO=yejCpQWGOF{!3Jw`!(M1UvnZxcFzG+~p_ zza%u!(ZdwvwgNmZf1A*WPS-XG{Yydv9X&xo9xA{y`nL&P+HemL`cpd$=gwG{HD}^M zPtGVp!y$#jpkc&h_=||S2pAZy!&VdGe0X4pGRMAdB zo`Vq=5M?xowL<@^lrlvOJ$%DA`0 z$>j%&_X`$_%h~N!6)VqZx8;>lFS#j|t+1bVft;NZv(lTi6s|^W3mV<|P^Ru_^$Ej@ zc8MW2MX}8M#KfTwJDjKJ!osDycgO8wbej4$b&j~}ndL`0;yAbMm0P!N54v-5uT8?K zO9c)`*e_kWWV_$hM~R0h;uY0xf#X$OX2XD(+^+1drQV`=2TTxl@uF#6zmxrqgMNTfA>Lop7Zh@ z?7BxS8x(EWw{?$GoPBEgPC`?)0VTD~A->Szv7&WX#g?R7HxG3cChzyvzTQ?}my}+# zL`=*Q@gO%h@JMZSil=jRnZNOJPsw2?ldJm4U+$O%bTzpc3CwUGcr3f?KtUh%V^RAL zrTfR94rtigbkm)#c`JIzHoA3JHl@F&V}q}B)Lko>n~$3Eo~o=ZBb57fulq3+A9w%w z&R4vC0y#Cm_|ooU$KxSaV_x0|PJ7=ZCMElw?K)KFrI<0euezqQ&QLQ_eX4=^hJ~5) zwc59iQ;fqRIeE097~F3Tfg|x4;;i6 z?n`c?tiw-@p8A#@H&ym&3wGm13K=m>od zkIT`eg|BH-7D-c{rH?-F9|=o!7dq|Deq%Y-&(E)u-Lms-UY@C@F@?Ul{)YZ9 zoy^|P4s(jtuyYb0V+!Jv{Z?I?H*!8~MdIMNY(rAv=cOFOUJCnRareuYdlQjYwLVG3 zWImnd5Lew>=w9V*VbKK_rD_CXBePJl<&tO7?g#RiVTEDN3r3cy`&+)6jBPFYxWhj2 zMVT*Yq1dt11IdSab|JBY2Fb^d=VO_sy9y?rv=v;rygWJeH1$=5W3%;DiGoixaiY9e z(AD>HZidQnEe#qtnq4dlw3xYVHl1Cc(+{?}ympBF%ia*fT zx218|ip7oceS14>A?3S*@`v2S7csG!+UnuX4wMx7x3mNb7Zv2Hd)~3Cs$4B7Ec6;Z zp*uY_MM)vT{ibP#O)ikucvs=~DTm`nllN*A<=nhcXg@6_sV+iiGc>~^S@-UpA_4)$ z%zj}i=riKvR*9jZ3N5}@U0qF-9UUDbE^@~%M^%KRkyH4_y;kOv_TR1tbmt9P8mz?K zo%Eg*;yAy(^i^VV>b^G@y&V-5-;qz~$0m%_-8W9Yo|5WltWG-e%v~y3cE^1M`2e%t zeg;D=&$dYJ`|-nj1;F?n-p>Oh8ixQ`IJsqWb|-=62E()NuM*M^wKtBDro&4`j-rxv@(C<||XO5vdU*vLeDKCD=qX?E~Xw$zIn;E{V z<)XkgNIdy&^sO6(UdXl@u$!o_vxbjrN`C6~L_LQ)No8dhE?g)m$hfm)IWqpxq2ohp zPtPmsZor*(A?T}i+D<;&T_ z&&F)uyn6jQBbSoYT4uABWN2s%%k`;Tq$h-q=}~H7Ia=p%D0SobV9LoE$V; z#l??~b$#eO3^o-Xgpr;oL0`J`d`I*AiZ{&nB69Cu9UUD@T2pK5ZZxLvr0AXekPnxV z*enFI4E?{(WW|!v&>;0VxVShuxw+GjyNp{Yp0>8$nMF5hBW~ZJe1Re_Di3-);QxYC za3N+fGmejsFC%VTvAT9@c6Mrt^!xV*qiNY8BqT4drY0c3d@1qDm3Ti%Ma9oMuVrQ3t*E#*7<9J)9VQyt zdo42`ZDD0;sTMp5S-h-2O%GQK-DRo;6>!FQzM3X^I@vh<^5yJje}8n$jgo0sYwMsO zdJV7lVV2*6>5ycnm)}fEv7O_6*q2drvU=g+s6Fi2cm~*!_{;ohFtL- zq@<)mtVm;HE$>OhCkG;BW#!ONG9s6JSk2QJWF=eNZ!^xY99GjFXE3%e_ zuzh_?55v?~K9Y2zqf;R1h!r82l*@|!rw8aq@wof&14Kv9QBNhWULPb9)P6(~P07HF z*oxeRPQj>4M1&LjI%g*a!^~4#CXQ)z%NO;|rlfX$c_PO7`Q^mjB;|vug?0*$+y@$C zGIrE>_4+sPR?INbi9Oj_qf+(wUb(hx+Sk0f%Y4aWUgaD&l=XS+J=jpAtoDy8{Oi?? zTg53oJ$sT1S180TuBe==`Vv={aO=E*q`T(PoT!E8CB<~yg?V>u_+5?;4VK%yKd$!C zT7Wu$CG0iNjxXP;n(HDLC7t1_Hm`ci%zPV;ke81npATwNlE39EL!#}JnUN4Wq13%U zGr?JY{%m1q*~#N$Z*TY4uPvMDQ%AfVyL|bw8*%vb$2f(kb2)0s>mq|NK5uY>VH+y;OFUEFM5W9PZ|F8-*wRqaiTgl0G7n+*79`A#PN?b6}$F@FgbxSV=Yu2CM1gRRf z+6Iq(3F1E!7Z=wq5kHojZ(pn3@FlcpymfzqjKO=1NRhx1?&ee^X6qLI{H%r9ckFK} z5375|c2J(L?s>hFzdK1THumP~sw^snl)Qu=)s|lAH_}ENIZw?lvHxE1<4ZzD5s(cV z2E)Z*LrpUN@{S%cHwJp;`KrRFGuJpx1NG$Poi}A#4=?bl1Wgc~cz1Mm;$0P-j1Km& zuU-$072)7fp(7LCouPc3jH2yI6$MFh0R|JmQNe$U!=3N3%1DOBqub;qp645faSOlD z8GfiGK#L7+$c!>8{)~C3h3Svf&Wsg<;}(vad3U1ZWL8(x^=V*@eZ=}R^Lbx77&vgi zjXxp$U{Fb~Gl&~!9F^><|st#V)B1y2iXiUs?pV>|?yD5T&E9 zV{A~w8);W4rQLj4T2RHUI@Hx!(~v)QhJjc9(CqU0o+~z0S4tL}G8}h?zf~WO-7z;; zGZ*$bM)gUJwPopRsh|__AC|2#Z_3H(cqs1cvh`!?%2Z7AExveGEDb$LZkkP{PEgLG zxK0a^KYJ=KCFOnYRrS0TX+h`9mt{3ICa8pZ)>B`6jVn#w)O9I&&1T@aXj<1@Lryw@UGlX)8{_lub6&O zmoD1Z_c@QdFIjh#=bc3$>Gp%F&g46@lr6R=zn0vQS+qS1 z`EY=Qh;b`C$eJnBwoK{c@j>JmbIuJTvX0l6_whUN=3Tp{YiiX#_HrBF8T*W>v8Fj{ z#5cPXlt*nkV;m|CEmXuS{6*hcFu`fX?y>hFn5=)W6fjd zUa%v~UNeUaU0>qxo&C7CAU!?(lD`3E_Isf%ed!ivW*4XAj9U3pf6PES`EwyNRrALVbje);m&`<#!eGYe!)9&wZQKZ!dlp)o~C>3=0? zhT8Hrs}$22BzLwoU4hSes#l*q?gz|AWtg}h=+n#bt{N(66QqzPkg_9unfHq1(Zz-Lw6QU<(~lkr4!30rmYQ1a-tF`C ze!%7N?#TJk(NRwYg|bII%1X-c$(Yej&67@vNeU%4!}$U5r)2})N?R^+_{yI-uy=aj z_V{uO*Thp9+1bEo%71oJ+<3R{xAys#*UiOc!X_E2iRgzcNe^Yu<$HSWRZP9&wbMYt zvirHL_5jar!FX!%;A+yqz@r~iV?6BCyvWpJ!mM;Yym|BHXlTgk>o24@vYztQTD=+b zm8(4&SzlSpYo$9nKK`aMLsVgk526 z!_%ivg%=mTj-P+ruuau(tHP|Rzsm%~TVG$V3albxM{({TTh{p2$IZ$yGLTf}hCmDIPcZxY@5{!LM5Z=YN6Hy%pW!2LF+?T_2<<|El|Y!SGc zle3%pQ95&U%sG|t<%7@V^<~0u4G(H@Pb*ji(MP;&Yg@i(vVY>Rw5zLY&xgT57M3JY zF){JN{jQbNcLV(WeSHJJQqj=FM63D@+1fe>dNP(4Uu@ulvv>EN@Ac3_RD=WvBlX@r z;qKRJ6BWNY>#$$c-{tD;>};5JF3Z+l2b*K`NskrLDK7*$&8Jd@bwvu(2PSsYQ0`z& zyl7{$|82+8u(7v=T%H8e8Gq5fK-pcoy3SKfJ3_9(Dq<0w{-Hyk777XqCOq#%CY#I2 z%Ln++P6*w4W$LNw;u-RKYQN&VZXX7d+EiaG!pu`~_S11LKIfsqK^mH7CjG~cdwLog zT3ch4BHf&GzranG;HHbASlzyT)VI@g9hKV!OfT-bTtT0$ar8O62|KT;qW$wUPhz;z zw}l1nD0K1*dnviMB(NAcUYD}`GKx3KyrBv*^K+O6CE4XOL$PnlQX_(<1DnekCW9Xy z%$6ukZ!vtO{jg2ShS+pYbNTjrUS^CD?acy%EHd;vdq`4`(TpgE#Mzaoc1sS4Hs#aT zB#(5oDWjQEN-3kyL^Cl6AqJcuv$Um}_ZPCTJM~R=lWDnNHPZxIiVyZ`8+@)!Flv0H7QS?*f>$8N z@ABmMl*uc9RLFUfszF@C%iJM^U6g6_K5<*QoXy@Q4KqI?a%svJ>N96I$? zK+nbR?kT+wcg+3vHN@YD71~q%g5~YUxC`F!ejlB)GMu zH#tY;ckP4qvo@t5&%HjuDdd%*60u?K8L87Rnb~fbHt7ith~; zd#L&L`vl#*!MP`BH&e%hoMY9RTU<5wh;z<9B)O0w>OXbt&Z#`*nWFtirjI!|9u#bP z;eR&m%(&EIU~LljMKTf#3yW9dLqliCm~Ly0@AC7QSl)iH%|O6IvFzCPuBTF;4~0`x znr)Ffa4zpVXZ^#8xl@k*(Wj?F4;^8|zPx1_#2KYY>$7m@^W0^5v3JhJ+#DQ}9+XYZ zetu2V)O+es)^<`Ul-AX@7*!3cI!lYa4a^bV5BhRy+6)cpsIPPBmh)|OIDMh@>0syc z=L+<_EMn@lzOY`y-C=G5GRbCE&nUcllQ4aEKYGA#WoN^lT-ow!Cxz(HZ3-$e5maJZ zI!b2S&6IvKS_5y3nSpTXCwZY(>J@pXGFm0#-3@nqK+KK|?9NszpP7*x z8Rkl&y#*A&D>@kg2L9Ake#-tAZ^X7l!2Py9J8e$kz*p6qD(AvXv8DXO#V2n@WUlO} zbm}>18CveoPZ`k}HTczksvjgWF8= zq2gS36&fFH>CmZ$OEr|AIv?HbXs0+lAY3FZEj_O^rRO_Y6vSR=oH%z-G@02>H(^(^ zguL9~H8sboNXJD)^24E9j$%&xEbe)QiA%Wao_-x9jPUUoxc(fbHg5Cj{IKN&8tn+bV&ZLV>~VbY_3MSk zVe+l@i}{hKcG8R89OFI{$|mTf_A-`A^rYF{CpSN1)x#FF4`2BbarsQzq9?=jB-eEP z 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 literal 0 HcmV?d00001 From d9b339ee183f2dd276d5153d39b92ccd033e0f1f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 24 Jul 2020 20:09:59 +0200 Subject: [PATCH 2832/3421] Add some more tests for hdf5 --- tests/data/test_history.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 003e90fbb..2e703c72b 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -713,6 +713,41 @@ def test_hdf5datahandler_trades_get_pairs(testdatadir): assert set(pairs) == {'XRP/ETH'} +def test_hdf5datahandler_trades_load(mocker, testdatadir, caplog): + dh = HDF5DataHandler(testdatadir) + trades = dh.trades_load('XRP/ETH') + assert isinstance(trades, list) + + +def test_hdf5datahandler_trades_store(mocker, testdatadir, caplog): + dh = HDF5DataHandler(testdatadir) + trades = dh.trades_load('XRP/ETH') + + dh.trades_store('XRP/NEW', trades) + file = testdatadir / 'XRP_NEW-trades.h5' + assert file.is_file() + # Load trades back + trades_new = dh.trades_load('XRP/NEW') + + assert len(trades_new) == len(trades) + assert trades[0][0] == trades_new[0][0] + assert trades[0][1] == trades_new[0][1] + # assert trades[0][2] == trades_new[0][2] # This is nan - so comparison does not make sense + assert trades[0][3] == trades_new[0][3] + assert trades[0][4] == trades_new[0][4] + assert trades[0][5] == trades_new[0][5] + assert trades[0][6] == trades_new[0][6] + assert trades[-1][0] == trades_new[-1][0] + assert trades[-1][1] == trades_new[-1][1] + # assert trades[-1][2] == trades_new[-1][2] # This is nan - so comparison does not make sense + assert trades[-1][3] == trades_new[-1][3] + assert trades[-1][4] == trades_new[-1][4] + assert trades[-1][5] == trades_new[-1][5] + assert trades[-1][6] == trades_new[-1][6] + + _clean_test_file(file) + + def test_gethandlerclass(): cl = get_datahandlerclass('json') assert cl == JsonDataHandler From ed33d4781d9bce146e85ee23ddc46e840e9c20c8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 24 Jul 2020 20:19:34 +0200 Subject: [PATCH 2833/3421] Add more hdf5 tests --- tests/data/test_history.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 2e703c72b..3b20bd61d 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -670,7 +670,7 @@ def test_jsondatahandler_ohlcv_purge(mocker, testdatadir): assert unlinkmock.call_count == 1 -def test_jsondatahandler_trades_load(mocker, testdatadir, caplog): +def test_jsondatahandler_trades_load(testdatadir, caplog): dh = JsonGzDataHandler(testdatadir) logmsg = "Old trades format detected - converting" dh.trades_load('XRP/ETH') @@ -713,13 +713,13 @@ def test_hdf5datahandler_trades_get_pairs(testdatadir): assert set(pairs) == {'XRP/ETH'} -def test_hdf5datahandler_trades_load(mocker, testdatadir, caplog): +def test_hdf5datahandler_trades_load(testdatadir): dh = HDF5DataHandler(testdatadir) trades = dh.trades_load('XRP/ETH') assert isinstance(trades, list) -def test_hdf5datahandler_trades_store(mocker, testdatadir, caplog): +def test_hdf5datahandler_trades_store(testdatadir): dh = HDF5DataHandler(testdatadir) trades = dh.trades_load('XRP/ETH') @@ -748,6 +748,26 @@ def test_hdf5datahandler_trades_store(mocker, testdatadir, caplog): _clean_test_file(file) +def test_hdf5datahandler_ohlcv_load_and_resave(testdatadir): + dh = HDF5DataHandler(testdatadir) + ohlcv = dh.ohlcv_load('UNITTEST/BTC', '5m') + assert isinstance(ohlcv, DataFrame) + assert len(ohlcv) > 0 + + file = testdatadir / 'UNITTEST_NEW-5m.h5' + assert not file.is_file() + + dh.ohlcv_store('UNITTEST/NEW', '5m', ohlcv) + assert file.is_file() + + ohlcv1 = dh.ohlcv_load('UNITTEST/NEW', '5m') + # Account for the automatically dropped last candle + assert len(ohlcv) - 1 == len(ohlcv1) + assert ohlcv.iloc[:-1].equals(ohlcv1) + + _clean_test_file(file) + + def test_gethandlerclass(): cl = get_datahandlerclass('json') assert cl == JsonDataHandler From ae1c99bdd010c7f4e1bc122eb3e68a539a4f9912 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 24 Jul 2020 20:36:30 +0200 Subject: [PATCH 2834/3421] more tests --- tests/data/test_history.py | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 3b20bd61d..41b20e35b 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -718,6 +718,23 @@ def test_hdf5datahandler_trades_load(testdatadir): trades = dh.trades_load('XRP/ETH') assert isinstance(trades, list) + trades1 = dh.trades_load('UNITTEST/NONEXIST') + assert trades1 == [] + # data goes from 2019-10-11 - 2019-10-13 + timerange = TimeRange.parse_timerange('20191011-20191012') + + trades2 = dh._trades_load('XRP/ETH', timerange) + assert len(trades) > len(trades2) + + # unfiltered load has trades before starttime + assert len([t for t in trades if t[0] < timerange.startts * 1000]) >= 0 + # filtered list does not have trades before starttime + assert len([t for t in trades2 if t[0] < timerange.startts * 1000]) == 0 + # unfiltered load has trades after endtime + assert len([t for t in trades if t[0] > timerange.stopts * 1000]) > 0 + # filtered list does not have trades after endtime + assert len([t for t in trades2 if t[0] > timerange.stopts * 1000]) == 0 + def test_hdf5datahandler_trades_store(testdatadir): dh = HDF5DataHandler(testdatadir) @@ -760,13 +777,25 @@ def test_hdf5datahandler_ohlcv_load_and_resave(testdatadir): dh.ohlcv_store('UNITTEST/NEW', '5m', ohlcv) assert file.is_file() - ohlcv1 = dh.ohlcv_load('UNITTEST/NEW', '5m') - # Account for the automatically dropped last candle - assert len(ohlcv) - 1 == len(ohlcv1) - assert ohlcv.iloc[:-1].equals(ohlcv1) + assert not ohlcv[ohlcv['date'] < '2018-01-15'].empty + + # Data gores from 2018-01-10 - 2018-01-30 + timerange = TimeRange.parse_timerange('20180115-20180119') + + # Call private function to ensure timerange is filtered in hdf5 + ohlcv = dh._ohlcv_load('UNITTEST/BTC', '5m', timerange) + ohlcv1 = dh._ohlcv_load('UNITTEST/NEW', '5m', timerange) + assert len(ohlcv) == len(ohlcv1) + assert ohlcv.equals(ohlcv1) + assert ohlcv[ohlcv['date'] < '2018-01-15'].empty + assert ohlcv[ohlcv['date'] > '2018-01-19'].empty _clean_test_file(file) + # Try loading inexisting file + ohlcv = dh.ohlcv_load('UNITTEST/NONEXIST', '5m') + assert ohlcv.empty + def test_gethandlerclass(): cl = get_datahandlerclass('json') From edb582e5229b18052dd82ee930d0af2fa859732d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 24 Jul 2020 20:40:07 +0200 Subject: [PATCH 2835/3421] Add more tests --- tests/data/test_history.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 41b20e35b..c89156f4c 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -765,6 +765,18 @@ def test_hdf5datahandler_trades_store(testdatadir): _clean_test_file(file) +def test_hdf5datahandler_trades_purge(mocker, testdatadir): + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + unlinkmock = mocker.patch.object(Path, "unlink", MagicMock()) + dh = HDF5DataHandler(testdatadir) + assert not dh.trades_purge('UNITTEST/NONEXIST') + assert unlinkmock.call_count == 0 + + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + assert dh.trades_purge('UNITTEST/NONEXIST') + assert unlinkmock.call_count == 1 + + def test_hdf5datahandler_ohlcv_load_and_resave(testdatadir): dh = HDF5DataHandler(testdatadir) ohlcv = dh.ohlcv_load('UNITTEST/BTC', '5m') @@ -797,6 +809,18 @@ def test_hdf5datahandler_ohlcv_load_and_resave(testdatadir): assert ohlcv.empty +def test_hdf5datahandler_ohlcv_purge(mocker, testdatadir): + mocker.patch.object(Path, "exists", MagicMock(return_value=False)) + unlinkmock = mocker.patch.object(Path, "unlink", MagicMock()) + dh = HDF5DataHandler(testdatadir) + assert not dh.ohlcv_purge('UNITTEST/NONEXIST', '5m') + assert unlinkmock.call_count == 0 + + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + assert dh.ohlcv_purge('UNITTEST/NONEXIST', '5m') + assert unlinkmock.call_count == 1 + + def test_gethandlerclass(): cl = get_datahandlerclass('json') assert cl == JsonDataHandler From 119bf2a8ea66ecafc900677f998be2317c458f5b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Jul 2020 17:06:58 +0200 Subject: [PATCH 2836/3421] Document hdf5 dataformat --- docs/data-download.md | 118 ++++++++++++++-------- freqtrade/data/history/hdf5datahandler.py | 2 + freqtrade/data/history/history_utils.py | 8 +- 3 files changed, 84 insertions(+), 44 deletions(-) diff --git a/docs/data-download.md b/docs/data-download.md index a2bbec837..0b22ec9ce 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -15,61 +15,91 @@ Otherwise `--exchange` becomes mandatory. ### Usage ``` -usage: freqtrade download-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-p PAIRS [PAIRS ...]] - [--pairs-file FILE] [--days INT] [--dl-trades] [--exchange EXCHANGE] +usage: freqtrade download-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] + [-d PATH] [--userdir PATH] + [-p PAIRS [PAIRS ...]] [--pairs-file FILE] + [--days INT] [--dl-trades] + [--exchange EXCHANGE] [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...]] - [--erase] [--data-format-ohlcv {json,jsongz}] [--data-format-trades {json,jsongz}] + [--erase] + [--data-format-ohlcv {json,jsongz,hdf5}] + [--data-format-trades {json,jsongz,hdf5}] optional arguments: -h, --help show this help message and exit -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] - Show profits for only these pairs. Pairs are space-separated. + Show profits for only these pairs. Pairs are space- + separated. --pairs-file FILE File containing a list of pairs to download. --days INT Download data for given number of days. - --dl-trades Download trades instead of OHLCV data. The bot will resample trades to the desired timeframe as specified as - --timeframes/-t. - --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no config is provided. + --dl-trades Download trades instead of OHLCV data. The bot will + resample trades to the desired timeframe as specified + as --timeframes/-t. + --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no + config is provided. -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...] - Specify which tickers to download. Space-separated list. Default: `1m 5m`. - --erase Clean all existing data for the selected exchange/pairs/timeframes. - --data-format-ohlcv {json,jsongz} - Storage format for downloaded candle (OHLCV) data. (default: `json`). - --data-format-trades {json,jsongz} - Storage format for downloaded trades data. (default: `jsongz`). + Specify which tickers to download. Space-separated + list. Default: `1m 5m`. + --erase Clean all existing data for the selected + exchange/pairs/timeframes. + --data-format-ohlcv {json,jsongz,hdf5} + Storage format for downloaded candle (OHLCV) data. + (default: `json`). + --data-format-trades {json,jsongz,hdf5} + Storage format for downloaded trades data. (default: + `jsongz`). Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). - --logfile FILE Log to the file specified. Special values are: 'syslog', 'journald'. See the documentation for more details. + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-` - to read config from stdin. + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. -d PATH, --datadir PATH Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH Path to userdata directory. + ``` ### Data format -Freqtrade currently supports 2 dataformats, `json` (plain "text" json files) and `jsongz` (a gzipped version of json files). +Freqtrade currently supports 3 data-formats for both OHLCV and trades data: + +* `json` (plain "text" json files) +* `jsongz` (a gzip-zipped version of json files) +* `hdf5` (a high performance datastore) + By default, OHLCV data is stored as `json` data, while trades data is stored as `jsongz` data. -This can be changed via the `--data-format-ohlcv` and `--data-format-trades` parameters respectivly. +This can be changed via the `--data-format-ohlcv` and `--data-format-trades` command line arguments respectively. +To persist this change, you can should also add the following snippet to your configuration, so you don't have to insert the above arguments each time: -If the default dataformat has been changed during download, then the keys `dataformat_ohlcv` and `dataformat_trades` in the configuration file need to be adjusted to the selected dataformat as well. +``` jsonc + // ... + "dataformat_ohlcv": "hdf5", + "dataformat_trades": "hdf5", + // ... +``` + +If the default data-format has been changed during download, then the keys `dataformat_ohlcv` and `dataformat_trades` in the configuration file need to be adjusted to the selected dataformat as well. !!! Note - You can convert between data-formats using the [convert-data](#subcommand-convert-data) and [convert-trade-data](#subcommand-convert-trade-data) methods. + You can convert between data-formats using the [convert-data](#sub-command-convert-data) and [convert-trade-data](#sub-command-convert-trade-data) methods. -#### Subcommand convert data +#### Sub-command convert data ``` usage: freqtrade convert-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-p PAIRS [PAIRS ...]] --format-from - {json,jsongz} --format-to {json,jsongz} - [--erase] + {json,jsongz,hdf5} --format-to + {json,jsongz,hdf5} [--erase] [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...]] optional arguments: @@ -77,9 +107,9 @@ optional arguments: -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] Show profits for only these pairs. Pairs are space- separated. - --format-from {json,jsongz} + --format-from {json,jsongz,hdf5} Source format for data conversion. - --format-to {json,jsongz} + --format-to {json,jsongz,hdf5} Destination format for data conversion. --erase Clean all existing data for the selected exchange/pairs/timeframes. @@ -94,9 +124,10 @@ Common arguments: details. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: `config.json`). - Multiple --config options may be used. Can be set to - `-` to read config from stdin. + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. -d PATH, --datadir PATH Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH @@ -112,23 +143,23 @@ It'll also remove original json data files (`--erase` parameter). freqtrade convert-data --format-from json --format-to jsongz --datadir ~/.freqtrade/data/binance -t 5m 15m --erase ``` -#### Subcommand convert-trade data +#### Sub-command convert trade data ``` usage: freqtrade convert-trade-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-p PAIRS [PAIRS ...]] --format-from - {json,jsongz} --format-to {json,jsongz} - [--erase] + {json,jsongz,hdf5} --format-to + {json,jsongz,hdf5} [--erase] optional arguments: -h, --help show this help message and exit -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] Show profits for only these pairs. Pairs are space- separated. - --format-from {json,jsongz} + --format-from {json,jsongz,hdf5} Source format for data conversion. - --format-to {json,jsongz} + --format-to {json,jsongz,hdf5} Destination format for data conversion. --erase Clean all existing data for the selected exchange/pairs/timeframes. @@ -140,13 +171,15 @@ Common arguments: details. -V, --version show program's version number and exit -c PATH, --config PATH - Specify configuration file (default: `config.json`). - Multiple --config options may be used. Can be set to - `-` to read config from stdin. + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. -d PATH, --datadir PATH Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH Path to userdata directory. + ``` ##### Example converting trades @@ -158,21 +191,21 @@ It'll also remove original jsongz data files (`--erase` parameter). freqtrade convert-trade-data --format-from jsongz --format-to json --datadir ~/.freqtrade/data/kraken --erase ``` -### Subcommand list-data +### Sub-command list-data -You can get a list of downloaded data using the `list-data` subcommand. +You can get a list of downloaded data using the `list-data` sub-command. ``` usage: freqtrade list-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--exchange EXCHANGE] - [--data-format-ohlcv {json,jsongz}] + [--data-format-ohlcv {json,jsongz,hdf5}] [-p PAIRS [PAIRS ...]] optional arguments: -h, --help show this help message and exit --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no config is provided. - --data-format-ohlcv {json,jsongz} + --data-format-ohlcv {json,jsongz,hdf5} Storage format for downloaded candle (OHLCV) data. (default: `json`). -p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...] @@ -194,6 +227,7 @@ Common arguments: Path to directory with historical backtesting data. --userdir PATH, --user-data-dir PATH Path to userdata directory. + ``` #### Example list-data @@ -249,7 +283,7 @@ This will download historical candle (OHLCV) data for all the currency pairs you ### Other Notes - To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`. -- To change the exchange used to download the historical data from, please use a different configuration file (you'll probably need to adjust ratelimits etc.) +- To change the exchange used to download the historical data from, please use a different configuration file (you'll probably need to adjust rate limits etc.) - To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`. - To download historical candle (OHLCV) data for only 10 days, use `--days 10` (defaults to 30 days). - Use `--timeframes` to specify what timeframe download the historical candle (OHLCV) data for. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute data. @@ -257,7 +291,7 @@ This will download historical candle (OHLCV) data for all the currency pairs you ### Trades (tick) data -By default, `download-data` subcommand downloads Candles (OHLCV) data. Some exchanges also provide historic trade-data via their API. +By default, `download-data` sub-command downloads Candles (OHLCV) data. Some exchanges also provide historic trade-data via their API. This data can be useful if you need many different timeframes, since it is only downloaded once, and then resampled locally to the desired timeframes. Since this data is large by default, the files use gzip by default. They are stored in your data-directory with the naming convention of `-trades.json.gz` (`ETH_BTC-trades.json.gz`). Incremental mode is also supported, as for historic OHLCV data, so downloading the data once per week with `--days 8` will create an incremental data-repository. diff --git a/freqtrade/data/history/hdf5datahandler.py b/freqtrade/data/history/hdf5datahandler.py index 6a4f45fa9..c55c0c1e5 100644 --- a/freqtrade/data/history/hdf5datahandler.py +++ b/freqtrade/data/history/hdf5datahandler.py @@ -59,6 +59,7 @@ class HDF5DataHandler(IDataHandler): _data = data.copy() filename = self._pair_data_filename(self._datadir, pair, timeframe) + ds = pd.HDFStore(filename, mode='a', complevel=9, complib='blosc') ds.put(key, _data.loc[:, self._columns], format='table', data_columns=['date']) @@ -139,6 +140,7 @@ class HDF5DataHandler(IDataHandler): column sequence as in DEFAULT_TRADES_COLUMNS """ key = self._pair_trades_key(pair) + ds = pd.HDFStore(self._pair_trades_filename(self._datadir, pair), mode='a', complevel=9, complib='blosc') ds.put(key, pd.DataFrame(data, columns=DEFAULT_TRADES_COLUMNS), diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index 58bd752ea..dd09c4c05 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -9,7 +9,8 @@ from pandas import DataFrame from freqtrade.configuration import TimeRange from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS -from freqtrade.data.converter import (ohlcv_to_dataframe, +from freqtrade.data.converter import (clean_ohlcv_dataframe, + ohlcv_to_dataframe, trades_remove_duplicates, trades_to_ohlcv) from freqtrade.data.history.idatahandler import IDataHandler, get_datahandler @@ -202,7 +203,10 @@ def _download_pair_history(datadir: Path, if data.empty: data = new_dataframe else: - data = data.append(new_dataframe) + # Run cleaning again to ensure there were no duplicate candles + # Especially between existing and new data. + data = clean_ohlcv_dataframe(data.append(new_dataframe), timeframe, pair, + fill_missing=False, drop_incomplete=False) logger.debug("New Start: %s", f"{data.iloc[0]['date']:%Y-%m-%d %H:%M:%S}" if not data.empty else 'None') From bad89307dd752195100855a1c4f9cc942b9ef59d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 25 Jul 2020 17:19:41 +0200 Subject: [PATCH 2837/3421] Fix mypy error --- freqtrade/data/history/hdf5datahandler.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/history/hdf5datahandler.py b/freqtrade/data/history/hdf5datahandler.py index c55c0c1e5..594a1598a 100644 --- a/freqtrade/data/history/hdf5datahandler.py +++ b/freqtrade/data/history/hdf5datahandler.py @@ -191,11 +191,11 @@ class HDF5DataHandler(IDataHandler): return False @classmethod - def _pair_ohlcv_key(cls, pair: str, timeframe: str) -> Path: + def _pair_ohlcv_key(cls, pair: str, timeframe: str) -> str: return f"{pair}/ohlcv/tf_{timeframe}" @classmethod - def _pair_trades_key(cls, pair: str) -> Path: + def _pair_trades_key(cls, pair: str) -> str: return f"{pair}/trades" @classmethod From 6ce4fd7aff2c9cd78d86b4830e172526eb26877d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Jul 2020 08:37:10 +0000 Subject: [PATCH 2838/3421] Bump arrow from 0.15.7 to 0.15.8 Bumps [arrow](https://github.com/arrow-py/arrow) from 0.15.7 to 0.15.8. - [Release notes](https://github.com/arrow-py/arrow/releases) - [Changelog](https://github.com/arrow-py/arrow/blob/master/CHANGELOG.rst) - [Commits](https://github.com/arrow-py/arrow/compare/0.15.7...0.15.8) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index d5c5fd832..63b2c0441 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -3,7 +3,7 @@ ccxt==1.31.37 SQLAlchemy==1.3.18 python-telegram-bot==12.8 -arrow==0.15.7 +arrow==0.15.8 cachetools==4.1.1 requests==2.24.0 urllib3==1.25.9 From d1d6f69e43b31491edfc01efb74a12da1349e57e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Jul 2020 08:37:13 +0000 Subject: [PATCH 2839/3421] Bump scipy from 1.5.1 to 1.5.2 Bumps [scipy](https://github.com/scipy/scipy) from 1.5.1 to 1.5.2. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.5.1...v1.5.2) Signed-off-by: dependabot[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 4773d9877..ce08f08e0 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -2,7 +2,7 @@ -r requirements.txt # Required for hyperopt -scipy==1.5.1 +scipy==1.5.2 scikit-learn==0.23.1 scikit-optimize==0.7.4 filelock==3.0.12 From 2ff03e173d3634128f47666a3777e0f838ad9374 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Jul 2020 08:37:17 +0000 Subject: [PATCH 2840/3421] Bump numpy from 1.19.0 to 1.19.1 Bumps [numpy](https://github.com/numpy/numpy) from 1.19.0 to 1.19.1. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.19.0...v1.19.1) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 1e61d165f..2392d4cb2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Load common requirements -r requirements-common.txt -numpy==1.19.0 +numpy==1.19.1 pandas==1.0.5 From 838743bf01590b885e5bb1ddf5cacf009d02f673 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Jul 2020 08:37:25 +0000 Subject: [PATCH 2841/3421] Bump mkdocs-material from 5.4.0 to 5.5.0 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.4.0 to 5.5.0. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.4.0...5.5.0) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 3a236ee87..2a2405f8e 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.4.0 +mkdocs-material==5.5.0 mdx_truly_sane_lists==1.2 From 63e7490a55baae19beed1652c0bb0ba7c15e0cc9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Jul 2020 08:37:45 +0000 Subject: [PATCH 2842/3421] Bump plotly from 4.8.2 to 4.9.0 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.8.2 to 4.9.0. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.8.2...v4.9.0) Signed-off-by: dependabot[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index ec5af3dbf..51d14d636 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.8.2 +plotly==4.9.0 From b4d22f10001f8ad2c977bf1e47a79e39fc5094b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Jul 2020 08:53:36 +0000 Subject: [PATCH 2843/3421] Bump urllib3 from 1.25.9 to 1.25.10 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.9 to 1.25.10. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.25.9...1.25.10) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 63b2c0441..e0a9af77e 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -6,7 +6,7 @@ python-telegram-bot==12.8 arrow==0.15.8 cachetools==4.1.1 requests==2.24.0 -urllib3==1.25.9 +urllib3==1.25.10 wrapt==1.12.1 jsonschema==3.2.0 TA-Lib==0.4.18 From dbcccac6cd08bac45cec087f691300b77e962a2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Jul 2020 08:53:51 +0000 Subject: [PATCH 2844/3421] Bump ccxt from 1.31.37 to 1.32.3 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.31.37 to 1.32.3. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.31.37...1.32.3) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 63b2c0441..db06fee98 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.31.37 +ccxt==1.32.3 SQLAlchemy==1.3.18 python-telegram-bot==12.8 arrow==0.15.8 From 902e8fa62fce59c77bc809f4edad640e727c6f15 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jul 2020 14:39:00 +0200 Subject: [PATCH 2845/3421] Fix wrong spelling in one subcomponent --- freqtrade/optimize/optimize_reports.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 3a42ba4a9..7e0a60566 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -142,7 +142,7 @@ def generate_sell_reason_stats(max_open_trades: int, results: DataFrame) -> List 'profit_sum': profit_sum, 'profit_sum_pct': round(profit_sum * 100, 2), 'profit_total_abs': result['profit_abs'].sum(), - 'profit_pct_total': profit_percent_tot, + 'profit_total_pct': profit_percent_tot, } ) return tabular_data @@ -338,7 +338,7 @@ def text_table_sell_reason(sell_reason_stats: List[Dict[str, Any]], stake_curren output = [[ t['sell_reason'], t['trades'], t['wins'], t['draws'], t['losses'], - t['profit_mean_pct'], t['profit_sum_pct'], t['profit_total_abs'], t['profit_pct_total'], + t['profit_mean_pct'], t['profit_sum_pct'], t['profit_total_abs'], t['profit_total_pct'], ] for t in sell_reason_stats] return tabulate(output, headers=headers, tablefmt="orgtbl", stralign="right") From 9ed5fed88738214c5b22acfe0fb0c8b7d72cc2ac Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jul 2020 15:17:54 +0200 Subject: [PATCH 2846/3421] Fix output format to be of an identical type --- freqtrade/optimize/optimize_reports.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 7e0a60566..2db941db4 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -208,9 +208,9 @@ def generate_daily_stats(results: DataFrame) -> Dict[str, Any]: 'draw_days': draw_days, 'losing_days': losing_days, 'winner_holding_avg': (timedelta(minutes=round(winning_trades['trade_duration'].mean())) - if not winning_trades.empty else '0:00'), + if not winning_trades.empty else timedelta()), 'loser_holding_avg': (timedelta(minutes=round(losing_trades['trade_duration'].mean())) - if not losing_trades.empty else '0:00'), + if not losing_trades.empty else timedelta()), } From 8d0f338bf2eed48e5ec9d61a9a98ddf0ec575502 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jul 2020 15:23:21 +0200 Subject: [PATCH 2847/3421] Timestamps should be in ms --- freqtrade/optimize/optimize_reports.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 2db941db4..c0e1347cc 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -253,9 +253,9 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'left_open_trades': left_open_results, 'total_trades': len(results), 'backtest_start': min_date.datetime, - 'backtest_start_ts': min_date.timestamp, + 'backtest_start_ts': min_date.timestamp * 1000, 'backtest_end': max_date.datetime, - 'backtest_end_ts': max_date.timestamp, + 'backtest_end_ts': max_date.timestamp * 1000, 'backtest_days': backtest_days, 'trades_per_day': round(len(results) / backtest_days, 2) if backtest_days > 0 else None, @@ -272,9 +272,9 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], strat_stats.update({ 'max_drawdown': max_drawdown, 'drawdown_start': drawdown_start, - 'drawdown_start_ts': drawdown_start.timestamp(), + 'drawdown_start_ts': drawdown_start.timestamp() * 1000, 'drawdown_end': drawdown_end, - 'drawdown_end_ts': drawdown_end.timestamp(), + 'drawdown_end_ts': drawdown_end.timestamp() * 1000, }) except ValueError: strat_stats.update({ From 454046f74596123f7b0b3ba3f2a96f3d8dce32ef Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jul 2020 15:55:54 +0200 Subject: [PATCH 2848/3421] Add stake_currency and max_opeN_trades to backtest result --- freqtrade/optimize/optimize_reports.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index c0e1347cc..587ed303d 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -262,6 +262,8 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'market_change': market_change, 'pairlist': list(btdata.keys()), 'stake_amount': config['stake_amount'], + 'stake_currency': config['stake_currency'], + 'max_open_trades': config['max_open_trades'], **daily_stats, } result['strategy'][strategy] = strat_stats From 977a6d4e9cd8388eaf9a926aa7beaeb688573b3d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jul 2020 16:10:48 +0200 Subject: [PATCH 2849/3421] Add profit_total to results line --- freqtrade/optimize/optimize_reports.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 587ed303d..6e0f9acea 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -72,6 +72,7 @@ def _generate_result_line(result: DataFrame, max_open_trades: int, first_column: 'profit_sum': result['profit_percent'].sum(), 'profit_sum_pct': result['profit_percent'].sum() * 100.0, 'profit_total_abs': result['profit_abs'].sum(), + 'profit_total': result['profit_percent'].sum() / max_open_trades, 'profit_total_pct': result['profit_percent'].sum() * 100.0 / max_open_trades, 'duration_avg': str(timedelta( minutes=round(result['trade_duration'].mean())) From aab5596fa6ed145a5bf3afb9a700272704bffd9b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 27 Jul 2020 07:20:40 +0200 Subject: [PATCH 2850/3421] Convert trade open / close to timestamp (to allow uniform analysis of backtest and real trade data - while giving control of date-formatting to the endsystem. --- freqtrade/optimize/optimize_reports.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 6e0f9acea..f917e7cab 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -5,6 +5,7 @@ from typing import Any, Dict, List from arrow import Arrow from pandas import DataFrame +from numpy import int64 from tabulate import tabulate from freqtrade.constants import DATETIME_PRINT_FORMAT, LAST_BT_RESULT_FN @@ -246,6 +247,9 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], skip_nan=True) daily_stats = generate_daily_stats(results) + results['open_timestamp'] = results['open_date'].astype(int64) // 1e6 + results['close_timestamp'] = results['close_date'].astype(int64) // 1e6 + backtest_days = (max_date - min_date).days strat_stats = { 'trades': results.to_dict(orient='records'), From 7318d02ebc1331adba985d4c2525344c262437b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2020 07:05:17 +0000 Subject: [PATCH 2851/3421] Bump ccxt from 1.32.3 to 1.32.7 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.32.3 to 1.32.7. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.32.3...1.32.7) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index ba41d3ac2..942fe3792 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.32.3 +ccxt==1.32.7 SQLAlchemy==1.3.18 python-telegram-bot==12.8 arrow==0.15.8 From 14cb29aae1d5fba8fe7d735ddfff7f0aa451434a Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 28 Jul 2020 08:16:55 +0200 Subject: [PATCH 2852/3421] Add test for remove_pumps in edge --- tests/edge/test_edge.py | 95 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index cf9cb6fe1..7373778ad 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -409,3 +409,98 @@ def test_process_expectancy(mocker, edge_conf, fee, risk_reward_ratio, expectanc final = edge._process_expectancy(trades_df) assert len(final) == 0 assert isinstance(final, dict) + + +def test_process_expectancy_remove_pumps(mocker, edge_conf, fee,): + edge_conf['edge']['min_trade_number'] = 2 + edge_conf['edge']['remove_pumps'] = True + freqtrade = get_patched_freqtradebot(mocker, edge_conf) + + freqtrade.exchange.get_fee = fee + edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) + + trades = [ + {'pair': 'TEST/BTC', + 'stoploss': -0.9, + 'profit_percent': '', + 'profit_abs': '', + 'open_time': np.datetime64('2018-10-03T00:05:00.000000000'), + 'close_time': np.datetime64('2018-10-03T00:10:00.000000000'), + 'open_index': 1, + 'close_index': 1, + 'trade_duration': '', + 'open_rate': 17, + 'close_rate': 15, + 'exit_type': 'sell_signal'}, + + {'pair': 'TEST/BTC', + 'stoploss': -0.9, + 'profit_percent': '', + 'profit_abs': '', + 'open_time': np.datetime64('2018-10-03T00:20:00.000000000'), + 'close_time': np.datetime64('2018-10-03T00:25:00.000000000'), + 'open_index': 4, + 'close_index': 4, + 'trade_duration': '', + 'open_rate': 20, + 'close_rate': 10, + 'exit_type': 'sell_signal'}, + {'pair': 'TEST/BTC', + 'stoploss': -0.9, + 'profit_percent': '', + 'profit_abs': '', + 'open_time': np.datetime64('2018-10-03T00:20:00.000000000'), + 'close_time': np.datetime64('2018-10-03T00:25:00.000000000'), + 'open_index': 4, + 'close_index': 4, + 'trade_duration': '', + 'open_rate': 20, + 'close_rate': 10, + 'exit_type': 'sell_signal'}, + {'pair': 'TEST/BTC', + 'stoploss': -0.9, + 'profit_percent': '', + 'profit_abs': '', + 'open_time': np.datetime64('2018-10-03T00:20:00.000000000'), + 'close_time': np.datetime64('2018-10-03T00:25:00.000000000'), + 'open_index': 4, + 'close_index': 4, + 'trade_duration': '', + 'open_rate': 20, + 'close_rate': 10, + 'exit_type': 'sell_signal'}, + {'pair': 'TEST/BTC', + 'stoploss': -0.9, + 'profit_percent': '', + 'profit_abs': '', + 'open_time': np.datetime64('2018-10-03T00:20:00.000000000'), + 'close_time': np.datetime64('2018-10-03T00:25:00.000000000'), + 'open_index': 4, + 'close_index': 4, + 'trade_duration': '', + 'open_rate': 20, + 'close_rate': 10, + 'exit_type': 'sell_signal'}, + + {'pair': 'TEST/BTC', + 'stoploss': -0.9, + 'profit_percent': '', + 'profit_abs': '', + 'open_time': np.datetime64('2018-10-03T00:30:00.000000000'), + 'close_time': np.datetime64('2018-10-03T00:40:00.000000000'), + 'open_index': 6, + 'close_index': 7, + 'trade_duration': '', + 'open_rate': 26, + 'close_rate': 134, + 'exit_type': 'sell_signal'} + ] + + trades_df = DataFrame(trades) + trades_df = edge._fill_calculable_fields(trades_df) + final = edge._process_expectancy(trades_df) + + assert 'TEST/BTC' in final + assert final['TEST/BTC'].stoploss == -0.9 + assert final['TEST/BTC'].nb_trades == len(trades_df) - 1 + assert round(final['TEST/BTC'].winrate, 10) == 0.0 From d1cbc567e4895111f877827c9007030a8cf843c1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 28 Jul 2020 13:41:09 +0200 Subject: [PATCH 2853/3421] Fix filtering for bumped pairs --- freqtrade/edge/edge_positioning.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index 41252ee51..1993eded3 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -281,8 +281,8 @@ class Edge: # # Removing Pumps if self.edge_config.get('remove_pumps', False): - results = results.groupby(['pair', 'stoploss']).apply( - lambda x: x[x['profit_abs'] < 2 * x['profit_abs'].std() + x['profit_abs'].mean()]) + results = results[results['profit_abs'] < 2 * results['profit_abs'].std() + + results['profit_abs'].mean()] ########################################################################## # Removing trades having a duration more than X minutes (set in config) From 071e82043aabb4e63aa4fdbe8426ceadb449c015 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Aug 2020 15:59:50 +0200 Subject: [PATCH 2854/3421] Better handle cancelled buy orders --- freqtrade/exchange/exchange.py | 2 +- freqtrade/freqtradebot.py | 6 ++++++ tests/exchange/test_exchange.py | 2 +- tests/test_freqtradebot.py | 29 +++++++++++++++++++++++------ 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 04ad10a68..c3779ff8e 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -999,7 +999,7 @@ class Exchange: if self.is_cancel_order_result_suitable(corder): return corder except InvalidOrderException: - logger.warning(f"Could not cancel order {order_id}.") + logger.warning(f"Could not cancel order {order_id} for {pair}.") try: order = self.fetch_order(order_id, pair) except InvalidOrderException: diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index a6d96ef77..b866842b7 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -976,6 +976,12 @@ class FreqtradeBot: reason = constants.CANCEL_REASON['TIMEOUT'] corder = self.exchange.cancel_order_with_result(trade.open_order_id, trade.pair, trade.amount) + # Avoid race condition where the order could not be cancelled coz its already filled. + # Simply bailing here is the only safe way - as this order will then be + # handled in the next iteration. + if corder.get('status') not in ('canceled', 'closed'): + logger.warning(f"Order {trade.open_order_id} for {trade.pair} not cancelled.") + return False else: # Order was cancelled already, so we can reuse the existing dict corder = order diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 60c4847f6..4f5cfa9e1 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1818,7 +1818,7 @@ def test_cancel_order_with_result_error(default_conf, mocker, exchange_name, cap res = exchange.cancel_order_with_result('1234', 'ETH/BTC', 1541) assert isinstance(res, dict) - assert log_has("Could not cancel order 1234.", caplog) + assert log_has("Could not cancel order 1234 for ETH/BTC.", caplog) assert log_has("Could not fetch cancelled order 1234.", caplog) assert res['amount'] == 1541 diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index fd57eae6f..d93672ea7 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2023,11 +2023,16 @@ def test_check_handle_timedout_buy_usercustom(default_conf, ticker, limit_buy_or rpc_mock = patch_RPCManager(mocker) cancel_order_mock = MagicMock(return_value=limit_buy_order_old) + cancel_buy_order = deepcopy(limit_buy_order_old) + cancel_buy_order['status'] = 'canceled' + cancel_order_wr_mock = MagicMock(return_value=cancel_buy_order) + patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', fetch_ticker=ticker, fetch_order=MagicMock(return_value=limit_buy_order_old), + cancel_order_with_result=cancel_order_wr_mock, cancel_order=cancel_order_mock, get_fee=fee ) @@ -2060,7 +2065,7 @@ def test_check_handle_timedout_buy_usercustom(default_conf, ticker, limit_buy_or freqtrade.strategy.check_buy_timeout = MagicMock(return_value=True) # Trade should be closed since the function returns true freqtrade.check_handle_timedout() - assert cancel_order_mock.call_count == 1 + assert cancel_order_wr_mock.call_count == 1 assert rpc_mock.call_count == 1 trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() nb_trades = len(trades) @@ -2071,7 +2076,9 @@ def test_check_handle_timedout_buy_usercustom(default_conf, ticker, limit_buy_or def test_check_handle_timedout_buy(default_conf, ticker, limit_buy_order_old, open_trade, fee, mocker) -> None: rpc_mock = patch_RPCManager(mocker) - cancel_order_mock = MagicMock(return_value=limit_buy_order_old) + limit_buy_cancel = deepcopy(limit_buy_order_old) + limit_buy_cancel['status'] = 'canceled' + cancel_order_mock = MagicMock(return_value=limit_buy_cancel) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -2259,7 +2266,10 @@ def test_check_handle_cancelled_sell(default_conf, ticker, limit_sell_order_old, def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old_partial, open_trade, mocker) -> None: rpc_mock = patch_RPCManager(mocker) - cancel_order_mock = MagicMock(return_value=limit_buy_order_old_partial) + limit_buy_canceled = deepcopy(limit_buy_order_old_partial) + limit_buy_canceled['status'] = 'canceled' + + cancel_order_mock = MagicMock(return_value=limit_buy_canceled) patch_exchange(mocker) mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -2392,7 +2402,11 @@ def test_check_handle_timedout_exception(default_conf, ticker, open_trade, mocke def test_handle_cancel_buy(mocker, caplog, default_conf, limit_buy_order) -> None: patch_RPCManager(mocker) patch_exchange(mocker) - cancel_order_mock = MagicMock(return_value=limit_buy_order) + cancel_buy_order = deepcopy(limit_buy_order) + cancel_buy_order['status'] = 'canceled' + del cancel_buy_order['filled'] + + cancel_order_mock = MagicMock(return_value=cancel_buy_order) mocker.patch('freqtrade.exchange.Exchange.cancel_order_with_result', cancel_order_mock) freqtrade = FreqtradeBot(default_conf) @@ -2412,9 +2426,12 @@ def test_handle_cancel_buy(mocker, caplog, default_conf, limit_buy_order) -> Non assert not freqtrade.handle_cancel_buy(trade, limit_buy_order, reason) assert cancel_order_mock.call_count == 1 - limit_buy_order['filled'] = 2 - mocker.patch('freqtrade.exchange.Exchange.cancel_order', side_effect=InvalidOrderException) + # Order remained open for some reason (cancel failed) + cancel_buy_order['status'] = 'open' + cancel_order_mock = MagicMock(return_value=cancel_buy_order) + mocker.patch('freqtrade.exchange.Exchange.cancel_order_with_result', cancel_order_mock) assert not freqtrade.handle_cancel_buy(trade, limit_buy_order, reason) + assert log_has_re(r"Order .* for .* not cancelled.", caplog) @pytest.mark.parametrize("limit_buy_order_canceled_empty", ['binance', 'ftx', 'kraken', 'bittrex'], From 99bfa839ebcc6673ec435c53250b27b0ca9d437b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 2 Aug 2020 10:12:15 +0200 Subject: [PATCH 2855/3421] Improve logging for sell exception --- freqtrade/freqtradebot.py | 2 +- tests/test_freqtradebot.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index b866842b7..967f68b90 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -660,7 +660,7 @@ class FreqtradeBot: trades_closed += 1 except DependencyException as exception: - logger.warning('Unable to sell trade: %s', exception) + logger.warning('Unable to sell trade %s: %s', trade.pair, exception) # Updating wallets if any trade occured if trades_closed: diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index d93672ea7..15dd5d4ee 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1660,6 +1660,7 @@ def test_exit_positions_exception(mocker, default_conf, limit_buy_order, caplog) trade = MagicMock() trade.open_order_id = None trade.open_fee = 0.001 + trade.pair = 'ETH/BTC' trades = [trade] # Test raise of DependencyException exception @@ -1669,7 +1670,7 @@ def test_exit_positions_exception(mocker, default_conf, limit_buy_order, caplog) ) n = freqtrade.exit_positions(trades) assert n == 0 - assert log_has('Unable to sell trade: ', caplog) + assert log_has('Unable to sell trade ETH/BTC: ', caplog) def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> None: From 6c77feee8501a5290a4e6941ae873a31da92edcf Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 2 Aug 2020 10:18:19 +0200 Subject: [PATCH 2856/3421] Improve some exchange logs --- freqtrade/exchange/exchange.py | 4 ++-- tests/exchange/test_exchange.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index c3779ff8e..dcdb36c84 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1022,10 +1022,10 @@ class Exchange: return self._api.fetch_order(order_id, pair) except ccxt.OrderNotFound as e: raise RetryableOrderError( - f'Order not found (id: {order_id}). Message: {e}') from e + f'Order not found (pair: {pair} id: {order_id}). Message: {e}') from e except ccxt.InvalidOrder as e: raise InvalidOrderException( - f'Tried to get an invalid order (id: {order_id}). Message: {e}') from e + f'Tried to get an invalid order (pair: {pair} id: {order_id}). Message: {e}') from e except ccxt.DDoSProtection as e: raise DDosProtection(e) from e except (ccxt.NetworkError, ccxt.ExchangeError) as e: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 4f5cfa9e1..673399fa6 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -2315,6 +2315,18 @@ def test_calculate_fee_rate(mocker, default_conf, order, expected) -> None: (3, 3, 1), (0, 1, 2), (1, 1, 1), + (0, 4, 17), + (1, 4, 10), + (2, 4, 5), + (3, 4, 2), + (4, 4, 1), + (0, 5, 26), + (1, 5, 17), + (2, 5, 10), + (3, 5, 5), + (4, 5, 2), + (5, 5, 1), + ]) def test_calculate_backoff(retrycount, max_retries, expected): assert calculate_backoff(retrycount, max_retries) == expected From 3915101d2d8d0a7c4d3f0bfcc547cddbefa27205 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 2 Aug 2020 10:24:10 +0200 Subject: [PATCH 2857/3421] Add more backoff to fetch_order endpoint --- freqtrade/exchange/exchange.py | 2 +- freqtrade/exchange/ftx.py | 2 +- tests/exchange/test_exchange.py | 5 +++-- tests/exchange/test_ftx.py | 1 + 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index dcdb36c84..ec787ca3a 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1008,7 +1008,7 @@ class Exchange: return order - @retrier + @retrier(retries=5) def fetch_order(self, order_id: str, pair: str) -> Dict: if self._config['dry_run']: try: diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index b75f77ca4..01e8267ad 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -78,7 +78,7 @@ class Ftx(Exchange): except ccxt.BaseError as e: raise OperationalException(e) from e - @retrier + @retrier(retries=5) def fetch_stoploss_order(self, order_id: str, pair: str) -> Dict: if self._config['dry_run']: try: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 673399fa6..350c2d3cb 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1896,10 +1896,10 @@ def test_fetch_order(default_conf, mocker, exchange_name): assert tm.call_args_list[1][0][0] == 2 assert tm.call_args_list[2][0][0] == 5 assert tm.call_args_list[3][0][0] == 10 - assert api_mock.fetch_order.call_count == API_RETRY_COUNT + 1 + assert api_mock.fetch_order.call_count == 6 ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, - 'fetch_order', 'fetch_order', + 'fetch_order', 'fetch_order', retries=6, order_id='_', pair='TKN/BTC') @@ -1932,6 +1932,7 @@ def test_fetch_stoploss_order(default_conf, mocker, exchange_name): ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, 'fetch_stoploss_order', 'fetch_order', + retries=6, order_id='_', pair='TKN/BTC') diff --git a/tests/exchange/test_ftx.py b/tests/exchange/test_ftx.py index eb7d83be3..bed92d276 100644 --- a/tests/exchange/test_ftx.py +++ b/tests/exchange/test_ftx.py @@ -154,4 +154,5 @@ def test_fetch_stoploss_order(default_conf, mocker): ccxt_exceptionhandlers(mocker, default_conf, api_mock, 'ftx', 'fetch_stoploss_order', 'fetch_orders', + retries=6, order_id='_', pair='TKN/BTC') From 5ff09a06c7a74875184aea4cfc159d32825b4566 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2020 07:17:30 +0000 Subject: [PATCH 2858/3421] Bump pytest from 5.4.3 to 6.0.1 Bumps [pytest](https://github.com/pytest-dev/pytest) from 5.4.3 to 6.0.1. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.4.3...6.0.1) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 9f9be638d..c02a439d3 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.8.3 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.782 -pytest==5.4.3 +pytest==6.0.1 pytest-asyncio==0.14.0 pytest-cov==2.10.0 pytest-mock==3.2.0 From 809b3ddafc5863caab228cd75c10f5ae8e496e5a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2020 07:17:31 +0000 Subject: [PATCH 2859/3421] Bump mkdocs-material from 5.5.0 to 5.5.1 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.0 to 5.5.1. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.0...5.5.1) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 2a2405f8e..c30661b6a 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.5.0 +mkdocs-material==5.5.1 mdx_truly_sane_lists==1.2 From 1855a444fa29f574aa29f5f6e936c9bfd1d879e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2020 07:17:32 +0000 Subject: [PATCH 2860/3421] Bump pandas from 1.0.5 to 1.1.0 Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.0.5 to 1.1.0. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v1.0.5...v1.1.0) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2392d4cb2..d65f90325 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ -r requirements-common.txt numpy==1.19.1 -pandas==1.0.5 +pandas==1.1.0 From b3f04d89d259c49f8db954aababe9e812f6f4ca6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2020 07:17:50 +0000 Subject: [PATCH 2861/3421] Bump ccxt from 1.32.7 to 1.32.45 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.32.7 to 1.32.45. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.32.7...1.32.45) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 942fe3792..62cde9dbc 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.32.7 +ccxt==1.32.45 SQLAlchemy==1.3.18 python-telegram-bot==12.8 arrow==0.15.8 From a33346c6b660c518a70bdde9a56dc805046d08b8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 3 Aug 2020 19:21:46 +0200 Subject: [PATCH 2862/3421] Fix testing errors - which surfaced with pytest 6.0.1 --- freqtrade/exchange/exchange.py | 4 ++-- tests/test_freqtradebot.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 04ad10a68..c3fe3e601 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -258,8 +258,8 @@ class Exchange: api.urls['api'] = api.urls['test'] logger.info("Enabled Sandbox API on %s", name) else: - logger.warning(name, "No Sandbox URL in CCXT, exiting. " - "Please check your config.json") + logger.warning(f"No Sandbox URL in CCXT for {name}, exiting. " + "Please check your config.json") raise OperationalException(f'Exchange {name} does not provide a sandbox api') def _load_async_markets(self, reload: bool = False) -> None: diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index fd57eae6f..dcddf34e3 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1726,6 +1726,7 @@ def test_update_trade_state_withorderdict(default_conf, trades_for_order, limit_ amount=amount, exchange='binance', open_rate=0.245441, + open_date=arrow.utcnow().datetime, fee_open=fee.return_value, fee_close=fee.return_value, open_order_id="123456", @@ -1816,6 +1817,7 @@ def test_update_trade_state_sell(default_conf, trades_for_order, limit_sell_orde open_rate=0.245441, fee_open=0.0025, fee_close=0.0025, + open_date=arrow.utcnow().datetime, open_order_id="123456", is_open=True, ) From a3688b159fcf703a5cc390d0ae70d884db717762 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 3 Aug 2020 19:28:57 +0200 Subject: [PATCH 2863/3421] Improve formatting --- freqtrade/exchange/exchange.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index c3fe3e601..c4ed75878 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -258,8 +258,8 @@ class Exchange: api.urls['api'] = api.urls['test'] logger.info("Enabled Sandbox API on %s", name) else: - logger.warning(f"No Sandbox URL in CCXT for {name}, exiting. " - "Please check your config.json") + logger.warning( + f"No Sandbox URL in CCXT for {name}, exiting. Please check your config.json") raise OperationalException(f'Exchange {name} does not provide a sandbox api') def _load_async_markets(self, reload: bool = False) -> None: From 215972c68f3efa6397a6d5a6b17fa2c4ea1a3bea Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 4 Aug 2020 14:41:22 +0200 Subject: [PATCH 2864/3421] Implement /delete for api-server --- freqtrade/rpc/api_server.py | 11 +++++++++++ freqtrade/rpc/rpc.py | 4 ++-- freqtrade/rpc/telegram.py | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 351842e10..f7481fee4 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -200,6 +200,8 @@ class ApiServer(RPC): view_func=self._ping, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/trades', 'trades', view_func=self._trades, methods=['GET']) + self.app.add_url_rule(f'{BASE_URI}/trades/', 'trades_delete', + view_func=self._trades_delete, methods=['DELETE']) # Combined actions and infos self.app.add_url_rule(f'{BASE_URI}/blacklist', 'blacklist', view_func=self._blacklist, methods=['GET', 'POST']) @@ -424,6 +426,15 @@ class ApiServer(RPC): results = self._rpc_trade_history(limit) return self.rest_dump(results) + @require_login + @rpc_catch_errors + def _trades_delete(self, tradeid): + """ + Handler for DELETE /trades/ endpoint. + """ + result = self._rpc_delete(tradeid) + return self.rest_dump(result) + @require_login @rpc_catch_errors def _whitelist(self): diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index f6627ed16..b79cac243 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -537,7 +537,7 @@ class RPC: return trade else: return None - + def _rpc_delete(self, trade_id: str) -> Dict[str, str]: """ Handler for delete . @@ -558,7 +558,7 @@ class RPC: _exec_delete(trade) Trade.session.flush() self._freqtrade.wallets.update() - return {'result': f'Deleted trade {trade_id}.'} + return {'result_msg': f'Deleted trade {trade_id}.'} def _rpc_performance(self) -> List[Dict[str, Any]]: """ diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 20c1cc9dc..293e3a686 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -547,7 +547,7 @@ class Telegram(RPC): trade_id = context.args[0] if len(context.args) > 0 else None try: msg = self._rpc_delete(trade_id) - self._send_msg('Delete Result: `{result}`'.format(**msg)) + self._send_msg('Delete Result: `{result_msg}`'.format(**msg)) except RPCException as e: self._send_msg(str(e)) From 26c7341b7d712b4f1bb671722ee0bf0f6e55a42b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 4 Aug 2020 14:41:38 +0200 Subject: [PATCH 2865/3421] Add test for api-server DELETE trade --- tests/rpc/test_rpc_apiserver.py | 38 ++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index f4d7b8ca3..99f17383f 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -50,6 +50,12 @@ def client_get(client, url): 'Origin': 'http://example.com'}) +def client_delete(client, url): + # Add fake Origin to ensure CORS kicks in + return client.delete(url, headers={'Authorization': _basic_auth_str(_TEST_USER, _TEST_PASS), + 'Origin': 'http://example.com'}) + + def assert_response(response, expected_code=200, needs_cors=True): assert response.status_code == expected_code assert response.content_type == "application/json" @@ -352,7 +358,7 @@ def test_api_daily(botclient, mocker, ticker, fee, markets): assert rc.json['data'][0]['date'] == str(datetime.utcnow().date()) -def test_api_trades(botclient, mocker, ticker, fee, markets): +def test_api_trades(botclient, mocker, fee, markets): ftbot, client = botclient patch_get_signal(ftbot, (True, False)) mocker.patch.multiple( @@ -376,6 +382,36 @@ def test_api_trades(botclient, mocker, ticker, fee, markets): assert rc.json['trades_count'] == 1 +def test_api_delete_trade(botclient, mocker, fee, markets): + ftbot, client = botclient + patch_get_signal(ftbot, (True, False)) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + markets=PropertyMock(return_value=markets) + ) + rc = client_delete(client, f"{BASE_URI}/trades/1") + # Error - trade won't exist yet. + assert_response(rc, 502) + + create_mock_trades(fee) + trades = Trade.query.all() + assert len(trades) > 2 + + rc = client_delete(client, f"{BASE_URI}/trades/1") + assert_response(rc) + assert rc.json['result_msg'] == 'Deleted trade 1.' + assert len(trades) - 1 == len(Trade.query.all()) + + rc = client_delete(client, f"{BASE_URI}/trades/1") + # Trade is gone now. + assert_response(rc, 502) + assert len(trades) - 1 == len(Trade.query.all()) + rc = client_delete(client, f"{BASE_URI}/trades/2") + assert_response(rc) + assert rc.json['result_msg'] == 'Deleted trade 2.' + assert len(trades) - 2 == len(Trade.query.all()) + + def test_api_edge_disabled(botclient, mocker, ticker, fee, markets): ftbot, client = botclient patch_get_signal(ftbot, (True, False)) From 4b0164770c50d3efdef5fb979bdcf71452f01ef6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 4 Aug 2020 14:49:59 +0200 Subject: [PATCH 2866/3421] Add test for /delete --- freqtrade/rpc/telegram.py | 4 ++-- tests/rpc/test_rpc_telegram.py | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 293e3a686..19d3e1bd9 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -94,7 +94,7 @@ class Telegram(RPC): CommandHandler('forcesell', self._forcesell), CommandHandler('forcebuy', self._forcebuy), CommandHandler('trades', self._trades), - CommandHandler('delete', self._delete), + CommandHandler('delete', self._delete_trade), CommandHandler('performance', self._performance), CommandHandler('daily', self._daily), CommandHandler('count', self._count), @@ -535,7 +535,7 @@ class Telegram(RPC): self._send_msg(str(e)) @authorized_only - def _delete(self, update: Update, context: CallbackContext) -> None: + def _delete_trade(self, update: Update, context: CallbackContext) -> None: """ Handler for /delete . Delete the given trade diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 62a4f49a1..c8ac05d0d 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1177,6 +1177,33 @@ def test_telegram_trades(mocker, update, default_conf, fee): assert "

              " in msg_mock.call_args_list[0][0][0]
               
               
              +def test_telegram_delete_trade(mocker, update, default_conf, fee):
              +    msg_mock = MagicMock()
              +    mocker.patch.multiple(
              +        'freqtrade.rpc.telegram.Telegram',
              +        _init=MagicMock(),
              +        _send_msg=msg_mock
              +    )
              +
              +    freqtradebot = get_patched_freqtradebot(mocker, default_conf)
              +    telegram = Telegram(freqtradebot)
              +    context = MagicMock()
              +    context.args = []
              +
              +    telegram._delete_trade(update=update, context=context)
              +    assert "invalid argument" in msg_mock.call_args_list[0][0][0]
              +
              +    msg_mock.reset_mock()
              +    create_mock_trades(fee)
              +
              +    context = MagicMock()
              +    context.args = [1]
              +    telegram._delete_trade(update=update, context=context)
              +    msg_mock.call_count == 1
              +    assert "Delete Result" in msg_mock.call_args_list[0][0][0]
              +    assert "Deleted trade 1." in msg_mock.call_args_list[0][0][0]
              +
              +
               def test_help_handle(default_conf, update, mocker) -> None:
                   msg_mock = MagicMock()
                   mocker.patch.multiple(
              
              From b954af33cfa06387684297c3f6cce35813603414 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Tue, 4 Aug 2020 16:01:41 +0200
              Subject: [PATCH 2867/3421] Fix type erorr in callable
              
              ---
               freqtrade/rpc/api_server.py | 2 +-
               1 file changed, 1 insertion(+), 1 deletion(-)
              
              diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py
              index f7481fee4..f28a35ff0 100644
              --- a/freqtrade/rpc/api_server.py
              +++ b/freqtrade/rpc/api_server.py
              @@ -56,7 +56,7 @@ def require_login(func: Callable[[Any, Any], Any]):
               
               
               # Type should really be Callable[[ApiServer], Any], but that will create a circular dependency
              -def rpc_catch_errors(func: Callable[[Any], Any]):
              +def rpc_catch_errors(func: Callable[..., Any]):
               
                   def func_wrapper(obj, *args, **kwargs):
               
              
              From 9163c7f3d3bb0854bcaceea5cef2980ea8ef6a19 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Tue, 4 Aug 2020 19:43:05 +0200
              Subject: [PATCH 2868/3421] Improve api response
              
              ---
               freqtrade/rpc/api_server.py     |  4 ++++
               tests/rpc/test_rpc_apiserver.py | 17 ++++++++++++++---
               2 files changed, 18 insertions(+), 3 deletions(-)
              
              diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py
              index f28a35ff0..06926ac35 100644
              --- a/freqtrade/rpc/api_server.py
              +++ b/freqtrade/rpc/api_server.py
              @@ -431,6 +431,10 @@ class ApiServer(RPC):
                   def _trades_delete(self, tradeid):
                       """
                       Handler for DELETE /trades/ endpoint.
              +        Removes the trade from the database (tries to cancel open orders first!)
              +        get:
              +          param:
              +            tradeid: Numeric trade-id assigned to the trade.
                       """
                       result = self._rpc_delete(tradeid)
                       return self.rest_dump(result)
              diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py
              index 99f17383f..ccdec6fdc 100644
              --- a/tests/rpc/test_rpc_apiserver.py
              +++ b/tests/rpc/test_rpc_apiserver.py
              @@ -385,31 +385,42 @@ def test_api_trades(botclient, mocker, fee, markets):
               def test_api_delete_trade(botclient, mocker, fee, markets):
                   ftbot, client = botclient
                   patch_get_signal(ftbot, (True, False))
              +    stoploss_mock = MagicMock()
              +    cancel_mock = MagicMock()
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
              -        markets=PropertyMock(return_value=markets)
              +        markets=PropertyMock(return_value=markets),
              +        cancel_order=cancel_mock,
              +        cancel_stoploss_order=stoploss_mock,
                   )
                   rc = client_delete(client, f"{BASE_URI}/trades/1")
                   # Error - trade won't exist yet.
                   assert_response(rc, 502)
               
                   create_mock_trades(fee)
              +    ftbot.strategy.order_types['stoploss_on_exchange'] = True
                   trades = Trade.query.all()
              +    trades[1].stoploss_order_id = '1234'
                   assert len(trades) > 2
               
                   rc = client_delete(client, f"{BASE_URI}/trades/1")
                   assert_response(rc)
              -    assert rc.json['result_msg'] == 'Deleted trade 1.'
              +    assert rc.json['result_msg'] == 'Deleted trade 1. Closed 1 open orders.'
                   assert len(trades) - 1 == len(Trade.query.all())
              +    assert cancel_mock.call_count == 1
               
              +    cancel_mock.reset_mock()
                   rc = client_delete(client, f"{BASE_URI}/trades/1")
                   # Trade is gone now.
                   assert_response(rc, 502)
              +    assert cancel_mock.call_count == 0
              +
                   assert len(trades) - 1 == len(Trade.query.all())
                   rc = client_delete(client, f"{BASE_URI}/trades/2")
                   assert_response(rc)
              -    assert rc.json['result_msg'] == 'Deleted trade 2.'
              +    assert rc.json['result_msg'] == 'Deleted trade 2. Closed 2 open orders.'
                   assert len(trades) - 2 == len(Trade.query.all())
              +    assert stoploss_mock.call_count == 1
               
               
               def test_api_edge_disabled(botclient, mocker, ticker, fee, markets):
              
              From 817f5289db94895a6db6e0b045fcf40aa75047b1 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Tue, 4 Aug 2020 19:43:22 +0200
              Subject: [PATCH 2869/3421] /delete should Cancel open orders (and stoploss
               orders)
              
              ---
               freqtrade/rpc/rpc.py  | 46 +++++++++++++++++++++++-----------
               tests/rpc/test_rpc.py | 57 ++++++++++++++++++++++++++++++++++++++++++-
               2 files changed, 88 insertions(+), 15 deletions(-)
              
              diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py
              index b79cac243..58fdebe85 100644
              --- a/freqtrade/rpc/rpc.py
              +++ b/freqtrade/rpc/rpc.py
              @@ -11,9 +11,9 @@ from typing import Any, Dict, List, Optional, Tuple
               import arrow
               from numpy import NAN, mean
               
              -from freqtrade.exceptions import ExchangeError, PricingError
              -
              -from freqtrade.exchange import timeframe_to_msecs, timeframe_to_minutes
              +from freqtrade.exceptions import (ExchangeError, InvalidOrderException,
              +                                  PricingError)
              +from freqtrade.exchange import timeframe_to_minutes, timeframe_to_msecs
               from freqtrade.misc import shorten_date
               from freqtrade.persistence import Trade
               from freqtrade.rpc.fiat_convert import CryptoToFiatConverter
              @@ -541,24 +541,42 @@ class RPC:
                   def _rpc_delete(self, trade_id: str) -> Dict[str, str]:
                       """
                       Handler for delete .
              -        Delete the given trade
              +        Delete the given trade and close eventually existing open orders.
                       """
              -        def _exec_delete(trade: Trade) -> None:
              -            Trade.session.delete(trade)
              -            Trade.session.flush()
              -
                       with self._freqtrade._sell_lock:
              -            trade = Trade.get_trades(
              -                trade_filter=[Trade.id == trade_id, ]
              -            ).first()
              +            c_count = 0
              +            trade = Trade.get_trades(trade_filter=[Trade.id == trade_id]).first()
                           if not trade:
              -                logger.warning('delete: Invalid argument received')
              +                logger.warning('delete trade: Invalid argument received')
                               raise RPCException('invalid argument')
               
              -            _exec_delete(trade)
              +            # Try cancelling regular order if that exists
              +            if trade.open_order_id:
              +                try:
              +                    self._freqtrade.exchange.cancel_order(trade.open_order_id, trade.pair)
              +                    c_count += 1
              +                except (ExchangeError, InvalidOrderException):
              +                    pass
              +
              +            # cancel stoploss on exchange ...
              +            if (self._freqtrade.strategy.order_types.get('stoploss_on_exchange')
              +                    and trade.stoploss_order_id):
              +                try:
              +                    self._freqtrade.exchange.cancel_stoploss_order(trade.stoploss_order_id,
              +                                                                   trade.pair)
              +                    c_count += 1
              +                except (ExchangeError, InvalidOrderException):
              +                    pass
              +
              +            Trade.session.delete(trade)
                           Trade.session.flush()
                           self._freqtrade.wallets.update()
              -            return {'result_msg': f'Deleted trade {trade_id}.'}
              +            return {
              +                'result': 'success',
              +                'trade_id': trade_id,
              +                'result_msg': f'Deleted trade {trade_id}. Closed {c_count} open orders.',
              +                'cancel_order_count': c_count,
              +            }
               
                   def _rpc_performance(self) -> List[Dict[str, Any]]:
                       """
              diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py
              index e5859fcd9..b4a781459 100644
              --- a/tests/rpc/test_rpc.py
              +++ b/tests/rpc/test_rpc.py
              @@ -8,7 +8,7 @@ import pytest
               from numpy import isnan
               
               from freqtrade.edge import PairInfo
              -from freqtrade.exceptions import ExchangeError, TemporaryError
              +from freqtrade.exceptions import ExchangeError, InvalidOrderException, TemporaryError
               from freqtrade.persistence import Trade
               from freqtrade.rpc import RPC, RPCException
               from freqtrade.rpc.fiat_convert import CryptoToFiatConverter
              @@ -291,6 +291,61 @@ def test_rpc_trade_history(mocker, default_conf, markets, fee):
                   assert trades['trades'][0]['pair'] == 'XRP/BTC'
               
               
              +def test_rpc_delete_trade(mocker, default_conf, fee, markets, caplog):
              +    mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock())
              +    stoploss_mock = MagicMock()
              +    cancel_mock = MagicMock()
              +    mocker.patch.multiple(
              +        'freqtrade.exchange.Exchange',
              +        markets=PropertyMock(return_value=markets),
              +        cancel_order=cancel_mock,
              +        cancel_stoploss_order=stoploss_mock,
              +    )
              +
              +    freqtradebot = get_patched_freqtradebot(mocker, default_conf)
              +    freqtradebot.strategy.order_types['stoploss_on_exchange'] = True
              +    create_mock_trades(fee)
              +    rpc = RPC(freqtradebot)
              +    with pytest.raises(RPCException, match='invalid argument'):
              +        rpc._rpc_delete('200')
              +
              +    create_mock_trades(fee)
              +    trades = Trade.query.all()
              +    trades[1].stoploss_order_id = '1234'
              +    trades[2].stoploss_order_id = '1234'
              +    assert len(trades) > 2
              +
              +    res = rpc._rpc_delete('1')
              +    assert isinstance(res, dict)
              +    assert res['result'] == 'success'
              +    assert res['trade_id'] == '1'
              +    assert res['cancel_order_count'] == 1
              +    assert cancel_mock.call_count == 1
              +    assert stoploss_mock.call_count == 0
              +    cancel_mock.reset_mock()
              +    stoploss_mock.reset_mock()
              +
              +    res = rpc._rpc_delete('2')
              +    assert isinstance(res, dict)
              +    assert cancel_mock.call_count == 1
              +    assert stoploss_mock.call_count == 1
              +    assert res['cancel_order_count'] == 2
              +
              +    stoploss_mock = mocker.patch('freqtrade.exchange.Exchange.cancel_stoploss_order',
              +                                 side_effect=InvalidOrderException)
              +
              +    res = rpc._rpc_delete('3')
              +    assert stoploss_mock.call_count == 1
              +    stoploss_mock.reset_mock()
              +
              +    cancel_mock = mocker.patch('freqtrade.exchange.Exchange.cancel_order',
              +                               side_effect=InvalidOrderException)
              +
              +    res = rpc._rpc_delete('4')
              +    assert cancel_mock.call_count == 1
              +    assert stoploss_mock.call_count == 0
              +
              +
               def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee,
                                             limit_buy_order, limit_sell_order, mocker) -> None:
                   mocker.patch.multiple(
              
              From 075c73b9e38e7f71ce5eb32e2bc8930b1c947fa0 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Tue, 4 Aug 2020 19:56:49 +0200
              Subject: [PATCH 2870/3421] Improve formatting of telegram message
              
              ---
               freqtrade/rpc/rpc.py           | 4 ++--
               freqtrade/rpc/telegram.py      | 5 ++++-
               tests/rpc/test_rpc_telegram.py | 2 +-
               3 files changed, 7 insertions(+), 4 deletions(-)
              
              diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py
              index 58fdebe85..8a1ff7e96 100644
              --- a/freqtrade/rpc/rpc.py
              +++ b/freqtrade/rpc/rpc.py
              @@ -6,7 +6,7 @@ from abc import abstractmethod
               from datetime import date, datetime, timedelta
               from enum import Enum
               from math import isnan
              -from typing import Any, Dict, List, Optional, Tuple
              +from typing import Any, Dict, List, Optional, Tuple, Union
               
               import arrow
               from numpy import NAN, mean
              @@ -538,7 +538,7 @@ class RPC:
                       else:
                           return None
               
              -    def _rpc_delete(self, trade_id: str) -> Dict[str, str]:
              +    def _rpc_delete(self, trade_id: str) -> Dict[str, Union[str, int]]:
                       """
                       Handler for delete .
                       Delete the given trade and close eventually existing open orders.
              diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py
              index 19d3e1bd9..dde19fddb 100644
              --- a/freqtrade/rpc/telegram.py
              +++ b/freqtrade/rpc/telegram.py
              @@ -547,7 +547,10 @@ class Telegram(RPC):
                       trade_id = context.args[0] if len(context.args) > 0 else None
                       try:
                           msg = self._rpc_delete(trade_id)
              -            self._send_msg('Delete Result: `{result_msg}`'.format(**msg))
              +            self._send_msg((
              +                'Delete Result: `{result_msg}`'
              +                'Please make sure to take care of this asset on the exchange manually.'
              +            ).format(**msg))
               
                       except RPCException as e:
                           self._send_msg(str(e))
              diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py
              index c8ac05d0d..ac8dc62c6 100644
              --- a/tests/rpc/test_rpc_telegram.py
              +++ b/tests/rpc/test_rpc_telegram.py
              @@ -1200,8 +1200,8 @@ def test_telegram_delete_trade(mocker, update, default_conf, fee):
                   context.args = [1]
                   telegram._delete_trade(update=update, context=context)
                   msg_mock.call_count == 1
              -    assert "Delete Result" in msg_mock.call_args_list[0][0][0]
                   assert "Deleted trade 1." in msg_mock.call_args_list[0][0][0]
              +    assert "Please make sure to take care of this asset" in msg_mock.call_args_list[0][0][0]
               
               
               def test_help_handle(default_conf, update, mocker) -> None:
              
              From 8ed3b81c618293106ad821585ad3fbe89d8685e5 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Tue, 4 Aug 2020 19:57:28 +0200
              Subject: [PATCH 2871/3421] Implement /delete in rest client
              
              ---
               docs/rest-api.md          | 43 +++++++++++++++++++++------------------
               docs/telegram-usage.md    |  1 +
               freqtrade/rpc/telegram.py |  2 +-
               scripts/rest_client.py    | 12 +++++++++++
               4 files changed, 37 insertions(+), 21 deletions(-)
              
              diff --git a/docs/rest-api.md b/docs/rest-api.md
              index a8d902b53..2887a9ffc 100644
              --- a/docs/rest-api.md
              +++ b/docs/rest-api.md
              @@ -106,26 +106,29 @@ python3 scripts/rest_client.py --config rest_config.json  [optional par
               
               ## Available commands
               
              -|  Command | Default | Description |
              -|----------|---------|-------------|
              -| `start` | | Starts the trader
              -| `stop` | | Stops the trader
              -| `stopbuy` | | Stops the trader from opening new trades. Gracefully closes open trades according to their rules.
              -| `reload_config` | | Reloads the configuration file
              -| `show_config` | | Shows part of the current configuration with relevant settings to operation
              -| `status` | | Lists all open trades
              -| `count` | | Displays number of trades used and available
              -| `profit` | | Display a summary of your profit/loss from close trades and some stats about your performance
              -| `forcesell ` | | Instantly sells the given trade  (Ignoring `minimum_roi`).
              -| `forcesell all` | | Instantly sells all open trades (Ignoring `minimum_roi`).
              -| `forcebuy  [rate]` | | Instantly buys the given pair. Rate is optional. (`forcebuy_enable` must be set to True)
              -| `performance` | | Show performance of each finished trade grouped by pair
              -| `balance` | | Show account balance per currency
              -| `daily ` | 7 | Shows profit or loss per day, over the last n days
              -| `whitelist` | | Show the current whitelist
              -| `blacklist [pair]` | | Show the current blacklist, or adds a pair to the blacklist.
              -| `edge` | | Show validated pairs by Edge if it is enabled.
              -| `version` | | Show version
              +|  Command | Description |
              +|----------|-------------|
              +| `ping` | Simple command testing the API Readiness - requires no authentication.
              +| `start` | Starts the trader
              +| `stop` | Stops the trader
              +| `stopbuy` | Stops the trader from opening new trades. Gracefully closes open trades according to their rules.
              +| `reload_config` | Reloads the configuration file
              +| `trades` | List last trades.
              +| `delete_trade ` | Remove trade from the database. Tries to close open orders. Requires manual handling of this trade on the exchange.
              +| `show_config` | Shows part of the current configuration with relevant settings to operation
              +| `status` | Lists all open trades
              +| `count` | Displays number of trades used and available
              +| `profit` | Display a summary of your profit/loss from close trades and some stats about your performance
              +| `forcesell ` | Instantly sells the given trade  (Ignoring `minimum_roi`).
              +| `forcesell all` | Instantly sells all open trades (Ignoring `minimum_roi`).
              +| `forcebuy  [rate]` | Instantly buys the given pair. Rate is optional. (`forcebuy_enable` must be set to True)
              +| `performance` | Show performance of each finished trade grouped by pair
              +| `balance` | Show account balance per currency
              +| `daily ` | Shows profit or loss per day, over the last n days (n defaults to 7)
              +| `whitelist` | Show the current whitelist
              +| `blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist.
              +| `edge` | Show validated pairs by Edge if it is enabled.
              +| `version` | Show version
               
               Possible commands can be listed from the rest-client script using the `help` command.
               
              diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md
              index 250293d25..b81ef012b 100644
              --- a/docs/telegram-usage.md
              +++ b/docs/telegram-usage.md
              @@ -57,6 +57,7 @@ official commands. You can ask at any moment for help with `/help`.
               | `/status` | | Lists all open trades
               | `/status table` | | List all open trades in a table format. Pending buy orders are marked with an asterisk (*) Pending sell orders are marked with a double asterisk (**)
               | `/trades [limit]` | | List all recently closed trades in a table format.
              +| `/delete ` | | Delete a specific trade from the Database. Tries to close open orders. Requires manual handling of this trade on the exchange.
               | `/count` | | Displays number of trades used and available
               | `/profit` | | Display a summary of your profit/loss from close trades and some stats about your performance
               | `/forcesell ` | | Instantly sells the given trade  (Ignoring `minimum_roi`).
              diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py
              index dde19fddb..f1d3cde21 100644
              --- a/freqtrade/rpc/telegram.py
              +++ b/freqtrade/rpc/telegram.py
              @@ -548,7 +548,7 @@ class Telegram(RPC):
                       try:
                           msg = self._rpc_delete(trade_id)
                           self._send_msg((
              -                'Delete Result: `{result_msg}`'
              +                '`{result_msg}`\n'
                               'Please make sure to take care of this asset on the exchange manually.'
                           ).format(**msg))
               
              diff --git a/scripts/rest_client.py b/scripts/rest_client.py
              index 1f96bcb69..51ea596f6 100755
              --- a/scripts/rest_client.py
              +++ b/scripts/rest_client.py
              @@ -62,6 +62,9 @@ class FtRestClient():
                   def _get(self, apipath, params: dict = None):
                       return self._call("GET", apipath, params=params)
               
              +    def _delete(self, apipath, params: dict = None):
              +        return self._call("DELETE", apipath, params=params)
              +
                   def _post(self, apipath, params: dict = None, data: dict = None):
                       return self._call("POST", apipath, params=params, data=data)
               
              @@ -164,6 +167,15 @@ class FtRestClient():
                       """
                       return self._get("trades", params={"limit": limit} if limit else 0)
               
              +    def delete_trade(self, trade_id):
              +        """Delete trade from the database.
              +        Tries to close open orders. Requires manual handling of this asset on the exchange.
              +
              +        :param trade_id: Deletes the trade with this ID from the database.
              +        :return: json object
              +        """
              +        return self._delete("trades/{}".format(trade_id))
              +
                   def whitelist(self):
                       """Show the current whitelist.
               
              
              From 5082acc33f1220f95490c56c4fa1d8571ae6faf4 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 6 Aug 2020 07:54:54 +0200
              Subject: [PATCH 2872/3421] Fix typos in documentation
              
              ---
               docs/rest-api.md       | 2 +-
               docs/telegram-usage.md | 8 +++++---
               2 files changed, 6 insertions(+), 4 deletions(-)
              
              diff --git a/docs/rest-api.md b/docs/rest-api.md
              index 2887a9ffc..68754f79a 100644
              --- a/docs/rest-api.md
              +++ b/docs/rest-api.md
              @@ -46,7 +46,7 @@ secrets.token_hex()
               
               ### Configuration with docker
               
              -If you run your bot using docker, you'll need to have the bot listen to incomming connections. The security is then handled by docker.
              +If you run your bot using docker, you'll need to have the bot listen to incoming connections. The security is then handled by docker.
               
               ``` json
                   "api_server": {
              diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md
              index b81ef012b..b050a7a60 100644
              --- a/docs/telegram-usage.md
              +++ b/docs/telegram-usage.md
              @@ -9,7 +9,7 @@ Telegram user id.
               
               Start a chat with the [Telegram BotFather](https://telegram.me/BotFather)
               
              -Send the message `/newbot`. 
              +Send the message `/newbot`.
               
               *BotFather response:*
               
              @@ -115,6 +115,7 @@ For each open trade, the bot will send you the following message.
               ### /status table
               
               Return the status of all open trades in a table format.
              +
               ```
                  ID  Pair      Since    Profit
               ----  --------  -------  --------
              @@ -125,6 +126,7 @@ Return the status of all open trades in a table format.
               ### /count
               
               Return the number of trades used and available.
              +
               ```
               current    max
               ---------  -----
              @@ -210,7 +212,7 @@ Shows the current whitelist
               
               Shows the current blacklist.
               If Pair is set, then this pair will be added to the pairlist.
              -Also supports multiple pairs, seperated by a space.
              +Also supports multiple pairs, separated by a space.
               Use `/reload_config` to reset the blacklist.
               
               > Using blacklist `StaticPairList` with 2 pairs  
              @@ -218,7 +220,7 @@ Use `/reload_config` to reset the blacklist.
               
               ### /edge
               
              -Shows pairs validated by Edge along with their corresponding winrate, expectancy and stoploss values.
              +Shows pairs validated by Edge along with their corresponding win-rate, expectancy and stoploss values.
               
               > **Edge only validated following pairs:**
               ```
              
              From 8b6d10daf1cf3b384eb4732597e5835b97ced143 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 6 Aug 2020 08:50:41 +0200
              Subject: [PATCH 2873/3421] Move DefaultHyperopt to test folder (aligned to
               strategy)
              
              ---
               .../optimize => tests/optimize/hyperopts}/default_hyperopt.py     | 0
               1 file changed, 0 insertions(+), 0 deletions(-)
               rename {freqtrade/optimize => tests/optimize/hyperopts}/default_hyperopt.py (100%)
              
              diff --git a/freqtrade/optimize/default_hyperopt.py b/tests/optimize/hyperopts/default_hyperopt.py
              similarity index 100%
              rename from freqtrade/optimize/default_hyperopt.py
              rename to tests/optimize/hyperopts/default_hyperopt.py
              
              From 081625c5dcf14206683daa7c73f9a1848a157d9a Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 6 Aug 2020 08:51:01 +0200
              Subject: [PATCH 2874/3421] Have hyperopt tests use new hyperopt location
              
              ---
               tests/optimize/test_hyperopt.py | 235 ++++++++++++++------------------
               1 file changed, 106 insertions(+), 129 deletions(-)
              
              diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
              index 564725709..2f9f9bc56 100644
              --- a/tests/optimize/test_hyperopt.py
              +++ b/tests/optimize/test_hyperopt.py
              @@ -3,6 +3,7 @@ import locale
               import logging
               from datetime import datetime
               from pathlib import Path
              +from copy import deepcopy
               from typing import Dict, List
               from unittest.mock import MagicMock, PropertyMock
               
              @@ -16,7 +17,6 @@ from freqtrade.commands.optimize_commands import (setup_optimize_configuration,
                                                                 start_hyperopt)
               from freqtrade.data.history import load_data
               from freqtrade.exceptions import DependencyException, OperationalException
              -from freqtrade.optimize.default_hyperopt import DefaultHyperOpt
               from freqtrade.optimize.default_hyperopt_loss import DefaultHyperOptLoss
               from freqtrade.optimize.hyperopt import Hyperopt
               from freqtrade.resolvers.hyperopt_resolver import (HyperOptLossResolver,
              @@ -26,15 +26,28 @@ from freqtrade.strategy.interface import SellType
               from tests.conftest import (get_args, log_has, log_has_re, patch_exchange,
                                           patched_configuration_load_config_file)
               
              +from .hyperopts.default_hyperopt import DefaultHyperOpt
              +
               
               @pytest.fixture(scope='function')
              -def hyperopt(default_conf, mocker):
              -    default_conf.update({
              -        'spaces': ['default'],
              -        'hyperopt': 'DefaultHyperOpt',
              -    })
              +def hyperopt_conf(default_conf):
              +    hyperconf = deepcopy(default_conf)
              +    hyperconf.update({
              +                         'hyperopt': 'DefaultHyperOpt',
              +                         'hyperopt_path': str(Path(__file__).parent / 'hyperopts'),
              +                         'epochs': 1,
              +                         'timerange': None,
              +                         'spaces': ['default'],
              +                         'hyperopt_jobs': 1,
              +                         })
              +    return hyperconf
              +
              +
              +@pytest.fixture(scope='function')
              +def hyperopt(hyperopt_conf, mocker):
              +
                   patch_exchange(mocker)
              -    return Hyperopt(default_conf)
              +    return Hyperopt(hyperopt_conf)
               
               
               @pytest.fixture(scope='function')
              @@ -160,7 +173,7 @@ def test_setup_hyperopt_configuration_with_arguments(mocker, default_conf, caplo
                   assert log_has('Parameter --print-all detected ...', caplog)
               
               
              -def test_setup_hyperopt_configuration_unlimited_stake_amount(mocker, default_conf, caplog) -> None:
              +def test_setup_hyperopt_configuration_unlimited_stake_amount(mocker, default_conf) -> None:
                   default_conf['stake_amount'] = constants.UNLIMITED_STAKE_AMOUNT
               
                   patched_configuration_load_config_file(mocker, default_conf)
              @@ -201,7 +214,7 @@ def test_hyperoptresolver(mocker, default_conf, caplog) -> None:
                   assert hasattr(x, "timeframe")
               
               
              -def test_hyperoptresolver_wrongname(mocker, default_conf, caplog) -> None:
              +def test_hyperoptresolver_wrongname(default_conf) -> None:
                   default_conf.update({'hyperopt': "NonExistingHyperoptClass"})
               
                   with pytest.raises(OperationalException, match=r'Impossible to load Hyperopt.*'):
              @@ -216,7 +229,7 @@ def test_hyperoptresolver_noname(default_conf):
                       HyperOptResolver.load_hyperopt(default_conf)
               
               
              -def test_hyperoptlossresolver(mocker, default_conf, caplog) -> None:
              +def test_hyperoptlossresolver(mocker, default_conf) -> None:
               
                   hl = DefaultHyperOptLoss
                   mocker.patch(
              @@ -227,14 +240,14 @@ def test_hyperoptlossresolver(mocker, default_conf, caplog) -> None:
                   assert hasattr(x, "hyperopt_loss_function")
               
               
              -def test_hyperoptlossresolver_wrongname(mocker, default_conf, caplog) -> None:
              +def test_hyperoptlossresolver_wrongname(default_conf) -> None:
                   default_conf.update({'hyperopt_loss': "NonExistingLossClass"})
               
                   with pytest.raises(OperationalException, match=r'Impossible to load HyperoptLoss.*'):
                       HyperOptLossResolver.load_hyperoptloss(default_conf)
               
               
              -def test_start_not_installed(mocker, default_conf, caplog, import_fails) -> None:
              +def test_start_not_installed(mocker, default_conf) -> None:
                   start_mock = MagicMock()
                   patched_configuration_load_config_file(mocker, default_conf)
               
              @@ -253,9 +266,9 @@ def test_start_not_installed(mocker, default_conf, caplog, import_fails) -> None
                       start_hyperopt(pargs)
               
               
              -def test_start(mocker, default_conf, caplog) -> None:
              +def test_start(mocker, hyperopt_conf, caplog) -> None:
                   start_mock = MagicMock()
              -    patched_configuration_load_config_file(mocker, default_conf)
              +    patched_configuration_load_config_file(mocker, hyperopt_conf)
                   mocker.patch('freqtrade.optimize.hyperopt.Hyperopt.start', start_mock)
                   patch_exchange(mocker)
               
              @@ -272,8 +285,8 @@ def test_start(mocker, default_conf, caplog) -> None:
                   assert start_mock.call_count == 1
               
               
              -def test_start_no_data(mocker, default_conf, caplog) -> None:
              -    patched_configuration_load_config_file(mocker, default_conf)
              +def test_start_no_data(mocker, hyperopt_conf) -> None:
              +    patched_configuration_load_config_file(mocker, hyperopt_conf)
                   mocker.patch('freqtrade.data.history.load_pair_history', MagicMock(return_value=pd.DataFrame))
                   mocker.patch(
                       'freqtrade.optimize.hyperopt.get_timerange',
              @@ -293,9 +306,9 @@ def test_start_no_data(mocker, default_conf, caplog) -> None:
                       start_hyperopt(pargs)
               
               
              -def test_start_filelock(mocker, default_conf, caplog) -> None:
              -    start_mock = MagicMock(side_effect=Timeout(Hyperopt.get_lock_filename(default_conf)))
              -    patched_configuration_load_config_file(mocker, default_conf)
              +def test_start_filelock(mocker, hyperopt_conf, caplog) -> None:
              +    start_mock = MagicMock(side_effect=Timeout(Hyperopt.get_lock_filename(hyperopt_conf)))
              +    patched_configuration_load_config_file(mocker, hyperopt_conf)
                   mocker.patch('freqtrade.optimize.hyperopt.Hyperopt.start', start_mock)
                   patch_exchange(mocker)
               
              @@ -519,7 +532,7 @@ def test_roi_table_generation(hyperopt) -> None:
                   assert hyperopt.custom_hyperopt.generate_roi_table(params) == {0: 6, 15: 3, 25: 1, 30: 0}
               
               
              -def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None:
              +def test_start_calls_optimizer(mocker, hyperopt_conf, capsys) -> None:
                   dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
                   mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data',
                                MagicMock(return_value=(MagicMock(), None)))
              @@ -545,15 +558,9 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None:
                   )
                   patch_exchange(mocker)
                   # Co-test loading timeframe from strategy
              -    del default_conf['timeframe']
              -    default_conf.update({'config': 'config.json.example',
              -                         'hyperopt': 'DefaultHyperOpt',
              -                         'epochs': 1,
              -                         'timerange': None,
              -                         'spaces': 'default',
              -                         'hyperopt_jobs': 1, })
              +    del hyperopt_conf['timeframe']
               
              -    hyperopt = Hyperopt(default_conf)
              +    hyperopt = Hyperopt(hyperopt_conf)
                   hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock()
                   hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
               
              @@ -569,7 +576,7 @@ def test_start_calls_optimizer(mocker, default_conf, caplog, capsys) -> None:
                   assert hasattr(hyperopt.backtesting.strategy, "advise_sell")
                   assert hasattr(hyperopt.backtesting.strategy, "advise_buy")
                   assert hasattr(hyperopt, "max_open_trades")
              -    assert hyperopt.max_open_trades == default_conf['max_open_trades']
              +    assert hyperopt.max_open_trades == hyperopt_conf['max_open_trades']
                   assert hasattr(hyperopt, "position_stacking")
               
               
              @@ -686,13 +693,36 @@ def test_buy_strategy_generator(hyperopt, testdatadir) -> None:
                   assert 1 in result['buy']
               
               
              -def test_generate_optimizer(mocker, default_conf) -> None:
              -    default_conf.update({'config': 'config.json.example',
              -                         'hyperopt': 'DefaultHyperOpt',
              -                         'timerange': None,
              -                         'spaces': 'all',
              -                         'hyperopt_min_trades': 1,
              -                         })
              +def test_sell_strategy_generator(hyperopt, testdatadir) -> None:
              +    data = load_data(testdatadir, '1m', ['UNITTEST/BTC'], fill_up_missing=True)
              +    dataframes = hyperopt.backtesting.strategy.ohlcvdata_to_dataframe(data)
              +    dataframe = hyperopt.custom_hyperopt.populate_indicators(dataframes['UNITTEST/BTC'],
              +                                                             {'pair': 'UNITTEST/BTC'})
              +
              +    populate_sell_trend = hyperopt.custom_hyperopt.sell_strategy_generator(
              +        {
              +            'sell-adx-value': 20,
              +            'sell-fastd-value': 75,
              +            'sell-mfi-value': 80,
              +            'sell-rsi-value': 20,
              +            'sell-adx-enabled': True,
              +            'sell-fastd-enabled': True,
              +            'sell-mfi-enabled': True,
              +            'sell-rsi-enabled': True,
              +            'sell-trigger': 'sell-bb_upper'
              +        }
              +    )
              +    result = populate_sell_trend(dataframe, {'pair': 'UNITTEST/BTC'})
              +    # Check if some indicators are generated. We will not test all of them
              +    print(result)
              +    assert 'sell' in result
              +    assert 1 in result['sell']
              +
              +
              +def test_generate_optimizer(mocker, hyperopt_conf) -> None:
              +    hyperopt_conf.update({'spaces': 'all',
              +                          'hyperopt_min_trades': 1,
              +                          })
               
                   trades = [
                       ('TRX/BTC', 0.023117, 0.000233, 100)
              @@ -783,48 +813,35 @@ def test_generate_optimizer(mocker, default_conf) -> None:
                       'total_profit': 0.00023300
                   }
               
              -    hyperopt = Hyperopt(default_conf)
              +    hyperopt = Hyperopt(hyperopt_conf)
                   hyperopt.dimensions = hyperopt.hyperopt_space()
                   generate_optimizer_value = hyperopt.generate_optimizer(list(optimizer_param.values()))
                   assert generate_optimizer_value == response_expected
               
               
              -def test_clean_hyperopt(mocker, default_conf, caplog):
              +def test_clean_hyperopt(mocker, hyperopt_conf, caplog):
                   patch_exchange(mocker)
              -    default_conf.update({'config': 'config.json.example',
              -                         'hyperopt': 'DefaultHyperOpt',
              -                         'epochs': 1,
              -                         'timerange': None,
              -                         'spaces': 'default',
              -                         'hyperopt_jobs': 1,
              -                         })
              +
                   mocker.patch("freqtrade.optimize.hyperopt.Path.is_file", MagicMock(return_value=True))
                   unlinkmock = mocker.patch("freqtrade.optimize.hyperopt.Path.unlink", MagicMock())
              -    h = Hyperopt(default_conf)
              +    h = Hyperopt(hyperopt_conf)
               
                   assert unlinkmock.call_count == 2
                   assert log_has(f"Removing `{h.data_pickle_file}`.", caplog)
               
               
              -def test_continue_hyperopt(mocker, default_conf, caplog):
              +def test_continue_hyperopt(mocker, hyperopt_conf, caplog):
                   patch_exchange(mocker)
              -    default_conf.update({'config': 'config.json.example',
              -                         'hyperopt': 'DefaultHyperOpt',
              -                         'epochs': 1,
              -                         'timerange': None,
              -                         'spaces': 'default',
              -                         'hyperopt_jobs': 1,
              -                         'hyperopt_continue': True
              -                         })
              +    hyperopt_conf.update({'hyperopt_continue': True})
                   mocker.patch("freqtrade.optimize.hyperopt.Path.is_file", MagicMock(return_value=True))
                   unlinkmock = mocker.patch("freqtrade.optimize.hyperopt.Path.unlink", MagicMock())
              -    Hyperopt(default_conf)
              +    Hyperopt(hyperopt_conf)
               
                   assert unlinkmock.call_count == 0
                   assert log_has("Continuing on previous hyperopt results.", caplog)
               
               
              -def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None:
              +def test_print_json_spaces_all(mocker, hyperopt_conf, capsys) -> None:
                   dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
                   mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data',
                                MagicMock(return_value=(MagicMock(), None)))
              @@ -855,16 +872,12 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None:
                   )
                   patch_exchange(mocker)
               
              -    default_conf.update({'config': 'config.json.example',
              -                         'hyperopt': 'DefaultHyperOpt',
              -                         'epochs': 1,
              -                         'timerange': None,
              -                         'spaces': 'all',
              -                         'hyperopt_jobs': 1,
              -                         'print_json': True,
              -                         })
              +    hyperopt_conf.update({'spaces': 'all',
              +                          'hyperopt_jobs': 1,
              +                          'print_json': True,
              +                          })
               
              -    hyperopt = Hyperopt(default_conf)
              +    hyperopt = Hyperopt(hyperopt_conf)
                   hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock()
                   hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
               
              @@ -883,7 +896,7 @@ def test_print_json_spaces_all(mocker, default_conf, caplog, capsys) -> None:
                   assert dumper.call_count == 2
               
               
              -def test_print_json_spaces_default(mocker, default_conf, caplog, capsys) -> None:
              +def test_print_json_spaces_default(mocker, hyperopt_conf, capsys) -> None:
                   dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
                   mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data',
                                MagicMock(return_value=(MagicMock(), None)))
              @@ -913,16 +926,9 @@ def test_print_json_spaces_default(mocker, default_conf, caplog, capsys) -> None
                   )
                   patch_exchange(mocker)
               
              -    default_conf.update({'config': 'config.json.example',
              -                         'hyperopt': 'DefaultHyperOpt',
              -                         'epochs': 1,
              -                         'timerange': None,
              -                         'spaces': 'default',
              -                         'hyperopt_jobs': 1,
              -                         'print_json': True,
              -                         })
              +    hyperopt_conf.update({'print_json': True})
               
              -    hyperopt = Hyperopt(default_conf)
              +    hyperopt = Hyperopt(hyperopt_conf)
                   hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock()
                   hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
               
              @@ -937,7 +943,7 @@ def test_print_json_spaces_default(mocker, default_conf, caplog, capsys) -> None
                   assert dumper.call_count == 2
               
               
              -def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) -> None:
              +def test_print_json_spaces_roi_stoploss(mocker, hyperopt_conf, capsys) -> None:
                   dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
                   mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data',
                                MagicMock(return_value=(MagicMock(), None)))
              @@ -963,16 +969,12 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) ->
                   )
                   patch_exchange(mocker)
               
              -    default_conf.update({'config': 'config.json.example',
              -                         'hyperopt': 'DefaultHyperOpt',
              -                         'epochs': 1,
              -                         'timerange': None,
              -                         'spaces': 'roi stoploss',
              -                         'hyperopt_jobs': 1,
              -                         'print_json': True,
              -                         })
              +    hyperopt_conf.update({'spaces': 'roi stoploss',
              +                          'hyperopt_jobs': 1,
              +                          'print_json': True,
              +                          })
               
              -    hyperopt = Hyperopt(default_conf)
              +    hyperopt = Hyperopt(hyperopt_conf)
                   hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock()
                   hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
               
              @@ -987,7 +989,7 @@ def test_print_json_spaces_roi_stoploss(mocker, default_conf, caplog, capsys) ->
                   assert dumper.call_count == 2
               
               
              -def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys) -> None:
              +def test_simplified_interface_roi_stoploss(mocker, hyperopt_conf, capsys) -> None:
                   dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
                   mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data',
                                MagicMock(return_value=(MagicMock(), None)))
              @@ -1012,14 +1014,9 @@ def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys)
                   )
                   patch_exchange(mocker)
               
              -    default_conf.update({'config': 'config.json.example',
              -                         'hyperopt': 'DefaultHyperOpt',
              -                         'epochs': 1,
              -                         'timerange': None,
              -                         'spaces': 'roi stoploss',
              -                         'hyperopt_jobs': 1, })
              +    hyperopt_conf.update({'spaces': 'roi stoploss'})
               
              -    hyperopt = Hyperopt(default_conf)
              +    hyperopt = Hyperopt(hyperopt_conf)
                   hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock()
                   hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
               
              @@ -1040,11 +1037,11 @@ def test_simplified_interface_roi_stoploss(mocker, default_conf, caplog, capsys)
                   assert hasattr(hyperopt.backtesting.strategy, "advise_sell")
                   assert hasattr(hyperopt.backtesting.strategy, "advise_buy")
                   assert hasattr(hyperopt, "max_open_trades")
              -    assert hyperopt.max_open_trades == default_conf['max_open_trades']
              +    assert hyperopt.max_open_trades == hyperopt_conf['max_open_trades']
                   assert hasattr(hyperopt, "position_stacking")
               
               
              -def test_simplified_interface_all_failed(mocker, default_conf, caplog, capsys) -> None:
              +def test_simplified_interface_all_failed(mocker, hyperopt_conf) -> None:
                   mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
                   mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data',
                                MagicMock(return_value=(MagicMock(), None)))
              @@ -1055,14 +1052,9 @@ def test_simplified_interface_all_failed(mocker, default_conf, caplog, capsys) -
               
                   patch_exchange(mocker)
               
              -    default_conf.update({'config': 'config.json.example',
              -                         'hyperopt': 'DefaultHyperOpt',
              -                         'epochs': 1,
              -                         'timerange': None,
              -                         'spaces': 'all',
              -                         'hyperopt_jobs': 1, })
              +    hyperopt_conf.update({'spaces': 'all', })
               
              -    hyperopt = Hyperopt(default_conf)
              +    hyperopt = Hyperopt(hyperopt_conf)
                   hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock()
                   hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
               
              @@ -1075,7 +1067,7 @@ def test_simplified_interface_all_failed(mocker, default_conf, caplog, capsys) -
                       hyperopt.start()
               
               
              -def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None:
              +def test_simplified_interface_buy(mocker, hyperopt_conf, capsys) -> None:
                   dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
                   mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data',
                                MagicMock(return_value=(MagicMock(), None)))
              @@ -1100,14 +1092,9 @@ def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None:
                   )
                   patch_exchange(mocker)
               
              -    default_conf.update({'config': 'config.json.example',
              -                         'hyperopt': 'DefaultHyperOpt',
              -                         'epochs': 1,
              -                         'timerange': None,
              -                         'spaces': 'buy',
              -                         'hyperopt_jobs': 1, })
              +    hyperopt_conf.update({'spaces': 'buy'})
               
              -    hyperopt = Hyperopt(default_conf)
              +    hyperopt = Hyperopt(hyperopt_conf)
                   hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock()
                   hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
               
              @@ -1128,11 +1115,11 @@ def test_simplified_interface_buy(mocker, default_conf, caplog, capsys) -> None:
                   assert hasattr(hyperopt.backtesting.strategy, "advise_sell")
                   assert hasattr(hyperopt.backtesting.strategy, "advise_buy")
                   assert hasattr(hyperopt, "max_open_trades")
              -    assert hyperopt.max_open_trades == default_conf['max_open_trades']
              +    assert hyperopt.max_open_trades == hyperopt_conf['max_open_trades']
                   assert hasattr(hyperopt, "position_stacking")
               
               
              -def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None:
              +def test_simplified_interface_sell(mocker, hyperopt_conf, capsys) -> None:
                   dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
                   mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data',
                                MagicMock(return_value=(MagicMock(), None)))
              @@ -1157,14 +1144,9 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None
                   )
                   patch_exchange(mocker)
               
              -    default_conf.update({'config': 'config.json.example',
              -                         'hyperopt': 'DefaultHyperOpt',
              -                         'epochs': 1,
              -                         'timerange': None,
              -                         'spaces': 'sell',
              -                         'hyperopt_jobs': 1, })
              +    hyperopt_conf.update({'spaces': 'sell', })
               
              -    hyperopt = Hyperopt(default_conf)
              +    hyperopt = Hyperopt(hyperopt_conf)
                   hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock()
                   hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
               
              @@ -1185,7 +1167,7 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None
                   assert hasattr(hyperopt.backtesting.strategy, "advise_sell")
                   assert hasattr(hyperopt.backtesting.strategy, "advise_buy")
                   assert hasattr(hyperopt, "max_open_trades")
              -    assert hyperopt.max_open_trades == default_conf['max_open_trades']
              +    assert hyperopt.max_open_trades == hyperopt_conf['max_open_trades']
                   assert hasattr(hyperopt, "position_stacking")
               
               
              @@ -1195,7 +1177,7 @@ def test_simplified_interface_sell(mocker, default_conf, caplog, capsys) -> None
                   ('sell_strategy_generator', 'sell'),
                   ('sell_indicator_space', 'sell'),
               ])
              -def test_simplified_interface_failed(mocker, default_conf, caplog, capsys, method, space) -> None:
              +def test_simplified_interface_failed(mocker, hyperopt_conf, method, space) -> None:
                   mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
                   mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data',
                                MagicMock(return_value=(MagicMock(), None)))
              @@ -1206,14 +1188,9 @@ def test_simplified_interface_failed(mocker, default_conf, caplog, capsys, metho
               
                   patch_exchange(mocker)
               
              -    default_conf.update({'config': 'config.json.example',
              -                         'hyperopt': 'DefaultHyperOpt',
              -                         'epochs': 1,
              -                         'timerange': None,
              -                         'spaces': space,
              -                         'hyperopt_jobs': 1, })
              +    hyperopt_conf.update({'spaces': space})
               
              -    hyperopt = Hyperopt(default_conf)
              +    hyperopt = Hyperopt(hyperopt_conf)
                   hyperopt.backtesting.strategy.ohlcvdata_to_dataframe = MagicMock()
                   hyperopt.custom_hyperopt.generate_roi_table = MagicMock(return_value={})
               
              
              From 59370672b811aba5bcee1f3597f59375c5df2994 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 6 Aug 2020 09:00:28 +0200
              Subject: [PATCH 2875/3421] Fix more tests
              
              ---
               tests/commands/test_commands.py | 5 ++---
               tests/optimize/test_hyperopt.py | 4 +++-
               2 files changed, 5 insertions(+), 4 deletions(-)
              
              diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py
              index 3ec7e4798..6837ebe98 100644
              --- a/tests/commands/test_commands.py
              +++ b/tests/commands/test_commands.py
              @@ -667,7 +667,7 @@ def test_start_list_hyperopts(mocker, caplog, capsys):
                   args = [
                       "list-hyperopts",
                       "--hyperopt-path",
              -        str(Path(__file__).parent.parent / "optimize"),
              +        str(Path(__file__).parent.parent / "optimize" / "hyperopts"),
                       "-1"
                   ]
                   pargs = get_args(args)
              @@ -683,7 +683,7 @@ def test_start_list_hyperopts(mocker, caplog, capsys):
                   args = [
                       "list-hyperopts",
                       "--hyperopt-path",
              -        str(Path(__file__).parent.parent / "optimize"),
              +        str(Path(__file__).parent.parent / "optimize" / "hyperopts"),
                   ]
                   pargs = get_args(args)
                   # pargs['config'] = None
              @@ -692,7 +692,6 @@ def test_start_list_hyperopts(mocker, caplog, capsys):
                   assert "TestHyperoptLegacy" not in captured.out
                   assert "legacy_hyperopt.py" not in captured.out
                   assert "DefaultHyperOpt" in captured.out
              -    assert "test_hyperopt.py" in captured.out
               
               
               def test_start_test_pairlist(mocker, caplog, tickers, default_conf, capsys):
              diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
              index 2f9f9bc56..0d2ebf213 100644
              --- a/tests/optimize/test_hyperopt.py
              +++ b/tests/optimize/test_hyperopt.py
              @@ -247,7 +247,7 @@ def test_hyperoptlossresolver_wrongname(default_conf) -> None:
                       HyperOptLossResolver.load_hyperoptloss(default_conf)
               
               
              -def test_start_not_installed(mocker, default_conf) -> None:
              +def test_start_not_installed(mocker, default_conf, import_fails) -> None:
                   start_mock = MagicMock()
                   patched_configuration_load_config_file(mocker, default_conf)
               
              @@ -258,6 +258,8 @@ def test_start_not_installed(mocker, default_conf) -> None:
                       'hyperopt',
                       '--config', 'config.json',
                       '--hyperopt', 'DefaultHyperOpt',
              +        '--hyperopt-path',
              +        str(Path(__file__).parent / "hyperopts"),
                       '--epochs', '5'
                   ]
                   pargs = get_args(args)
              
              From 995d3e1ed5ee8548e55e5f5075b4533b6ff5d907 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 6 Aug 2020 09:07:48 +0200
              Subject: [PATCH 2876/3421] Don't search internal path for Hyperopt files
              
              ---
               freqtrade/resolvers/hyperopt_resolver.py | 2 +-
               1 file changed, 1 insertion(+), 1 deletion(-)
              
              diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py
              index abbfee6ed..5dcf73d67 100644
              --- a/freqtrade/resolvers/hyperopt_resolver.py
              +++ b/freqtrade/resolvers/hyperopt_resolver.py
              @@ -23,7 +23,7 @@ class HyperOptResolver(IResolver):
                   object_type = IHyperOpt
                   object_type_str = "Hyperopt"
                   user_subdir = USERPATH_HYPEROPTS
              -    initial_search_path = Path(__file__).parent.parent.joinpath('optimize').resolve()
              +    initial_search_path = None
               
                   @staticmethod
                   def load_hyperopt(config: Dict) -> IHyperOpt:
              
              From d01070dba81b19e3e3f9fc715e4d22022259e4b4 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 6 Aug 2020 09:22:41 +0200
              Subject: [PATCH 2877/3421] Increase coverage of edge_cli
              
              ---
               tests/optimize/test_edge_cli.py | 14 ++++++++++++++
               1 file changed, 14 insertions(+)
              
              diff --git a/tests/optimize/test_edge_cli.py b/tests/optimize/test_edge_cli.py
              index acec51f66..188b4aa5f 100644
              --- a/tests/optimize/test_edge_cli.py
              +++ b/tests/optimize/test_edge_cli.py
              @@ -105,3 +105,17 @@ def test_edge_init_fee(mocker, edge_conf) -> None:
                   edge_cli = EdgeCli(edge_conf)
                   assert edge_cli.edge.fee == 0.1234
                   assert fee_mock.call_count == 0
              +
              +
              +def test_edge_start(mocker, edge_conf) -> None:
              +    mock_calculate = mocker.patch('freqtrade.edge.edge_positioning.Edge.calculate',
              +                                  return_value=True)
              +    table_mock = mocker.patch('freqtrade.optimize.edge_cli.generate_edge_table')
              +
              +    patch_exchange(mocker)
              +    edge_conf['stake_amount'] = 20
              +
              +    edge_cli = EdgeCli(edge_conf)
              +    edge_cli.start()
              +    assert mock_calculate.call_count == 1
              +    assert table_mock.call_count == 1
              
              From eba73307e42ce6b94d5bed393c40c0bfbbafd05c Mon Sep 17 00:00:00 2001
              From: Fredrik81 
              Date: Fri, 7 Aug 2020 01:13:36 +0200
              Subject: [PATCH 2878/3421] Update strategy_methods_advanced.j2
              
              Fix def confirm_trade_exit arguments
              ---
               freqtrade/templates/subtemplates/strategy_methods_advanced.j2 | 2 +-
               1 file changed, 1 insertion(+), 1 deletion(-)
              
              diff --git a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2 b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2
              index c7ce41bb7..5ca6e6971 100644
              --- a/freqtrade/templates/subtemplates/strategy_methods_advanced.j2
              +++ b/freqtrade/templates/subtemplates/strategy_methods_advanced.j2
              @@ -34,7 +34,7 @@ def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: f
                   """
                   return True
               
              -def confirm_trade_exit(self, pair: str, trade: Trade, order_type: str, amount: float,
              +def confirm_trade_exit(self, pair: str, trade: 'Trade', order_type: str, amount: float,
                                      rate: float, time_in_force: str, sell_reason: str, **kwargs) -> bool:
                   """
                   Called right before placing a regular sell order.
              
              From f3ce54150e92f66c70b82f91276f10fab7e801a4 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Sat, 8 Aug 2020 15:06:13 +0200
              Subject: [PATCH 2879/3421] Simplify Telegram table
              
              ---
               docs/telegram-usage.md | 48 +++++++++++++++++++++---------------------
               1 file changed, 24 insertions(+), 24 deletions(-)
              
              diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md
              index b050a7a60..9776b26ba 100644
              --- a/docs/telegram-usage.md
              +++ b/docs/telegram-usage.md
              @@ -47,30 +47,30 @@ Per default, the Telegram bot shows predefined commands. Some commands
               are only available by sending them to the bot. The table below list the
               official commands. You can ask at any moment for help with `/help`.
               
              -|  Command | Default | Description |
              -|----------|---------|-------------|
              -| `/start` | | Starts the trader
              -| `/stop` | | Stops the trader
              -| `/stopbuy` | | Stops the trader from opening new trades. Gracefully closes open trades according to their rules.
              -| `/reload_config` | | Reloads the configuration file
              -| `/show_config` | | Shows part of the current configuration with relevant settings to operation
              -| `/status` | | Lists all open trades
              -| `/status table` | | List all open trades in a table format. Pending buy orders are marked with an asterisk (*) Pending sell orders are marked with a double asterisk (**)
              -| `/trades [limit]` | | List all recently closed trades in a table format.
              -| `/delete ` | | Delete a specific trade from the Database. Tries to close open orders. Requires manual handling of this trade on the exchange.
              -| `/count` | | Displays number of trades used and available
              -| `/profit` | | Display a summary of your profit/loss from close trades and some stats about your performance
              -| `/forcesell ` | | Instantly sells the given trade  (Ignoring `minimum_roi`).
              -| `/forcesell all` | | Instantly sells all open trades (Ignoring `minimum_roi`).
              -| `/forcebuy  [rate]` | | Instantly buys the given pair. Rate is optional. (`forcebuy_enable` must be set to True)
              -| `/performance` | | Show performance of each finished trade grouped by pair
              -| `/balance` | | Show account balance per currency
              -| `/daily ` | 7 | Shows profit or loss per day, over the last n days
              -| `/whitelist` | | Show the current whitelist
              -| `/blacklist [pair]` | | Show the current blacklist, or adds a pair to the blacklist.
              -| `/edge` | | Show validated pairs by Edge if it is enabled.
              -| `/help` | | Show help message
              -| `/version` | | Show version
              +|  Command | Description |
              +|----------|-------------|
              +| `/start` | Starts the trader
              +| `/stop` | Stops the trader
              +| `/stopbuy` | Stops the trader from opening new trades. Gracefully closes open trades according to their rules.
              +| `/reload_config` | Reloads the configuration file
              +| `/show_config` | Shows part of the current configuration with relevant settings to operation
              +| `/status` | Lists all open trades
              +| `/status table` | List all open trades in a table format. Pending buy orders are marked with an asterisk (*) Pending sell orders are marked with a double asterisk (**)
              +| `/trades [limit]` | List all recently closed trades in a table format.
              +| `/delete ` | Delete a specific trade from the Database. Tries to close open orders. Requires manual handling of this trade on the exchange.
              +| `/count` | Displays number of trades used and available
              +| `/profit` | Display a summary of your profit/loss from close trades and some stats about your performance
              +| `/forcesell ` | Instantly sells the given trade  (Ignoring `minimum_roi`).
              +| `/forcesell all` | Instantly sells all open trades (Ignoring `minimum_roi`).
              +| `/forcebuy  [rate]` | Instantly buys the given pair. Rate is optional. (`forcebuy_enable` must be set to True)
              +| `/performance` | Show performance of each finished trade grouped by pair
              +| `/balance` | Show account balance per currency
              +| `/daily ` | Shows profit or loss per day, over the last n days (n defaults to 7)
              +| `/whitelist` | Show the current whitelist
              +| `/blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist.
              +| `/edge` | Show validated pairs by Edge if it is enabled.
              +| `/help` | Show help message
              +| `/version` | Show version
               
               ## Telegram commands in action
               
              
              From dd430455e411bdfae6bef3162d03e3c893b2e883 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Sat, 8 Aug 2020 17:04:32 +0200
              Subject: [PATCH 2880/3421] Enable dataprovier for hyperopt
              
              ---
               freqtrade/optimize/backtesting.py |  5 ++---
               freqtrade/optimize/hyperopt.py    | 15 +++++++++------
               2 files changed, 11 insertions(+), 9 deletions(-)
              
              diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py
              index 214c92e0e..d058493cf 100644
              --- a/freqtrade/optimize/backtesting.py
              +++ b/freqtrade/optimize/backtesting.py
              @@ -65,9 +65,8 @@ class Backtesting:
                       self.strategylist: List[IStrategy] = []
                       self.exchange = ExchangeResolver.load_exchange(self.config['exchange']['name'], self.config)
               
              -        if self.config.get('runmode') != RunMode.HYPEROPT:
              -            self.dataprovider = DataProvider(self.config, self.exchange)
              -            IStrategy.dp = self.dataprovider
              +        dataprovider = DataProvider(self.config, self.exchange)
              +        IStrategy.dp = dataprovider
               
                       if self.config.get('strategy_list', None):
                           for strat in list(self.config['strategy_list']):
              diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py
              index 153ae3861..9bc0dadc0 100644
              --- a/freqtrade/optimize/hyperopt.py
              +++ b/freqtrade/optimize/hyperopt.py
              @@ -4,26 +4,26 @@
               This module contains the hyperopt logic
               """
               
              +import io
               import locale
               import logging
               import random
               import warnings
              -from math import ceil
               from collections import OrderedDict
              +from math import ceil
               from operator import itemgetter
              +from os import path
               from pathlib import Path
               from pprint import pformat
               from typing import Any, Dict, List, Optional
               
              +import progressbar
               import rapidjson
              +import tabulate
               from colorama import Fore, Style
               from joblib import (Parallel, cpu_count, delayed, dump, load,
                                   wrap_non_picklable_objects)
              -from pandas import DataFrame, json_normalize, isna
              -import progressbar
              -import tabulate
              -from os import path
              -import io
              +from pandas import DataFrame, isna, json_normalize
               
               from freqtrade.data.converter import trim_dataframe
               from freqtrade.data.history import get_timerange
              @@ -35,6 +35,7 @@ from freqtrade.optimize.hyperopt_interface import IHyperOpt  # noqa: F401
               from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss  # noqa: F401
               from freqtrade.resolvers.hyperopt_resolver import (HyperOptLossResolver,
                                                                  HyperOptResolver)
              +from freqtrade.strategy import IStrategy
               
               # Suppress scikit-learn FutureWarnings from skopt
               with warnings.catch_warnings():
              @@ -634,6 +635,8 @@ class Hyperopt:
                       # We don't need exchange instance anymore while running hyperopt
                       self.backtesting.exchange = None  # type: ignore
                       self.backtesting.pairlists = None  # type: ignore
              +        self.backtesting.strategy.dp = None  # type: ignore
              +        IStrategy.dp = None  # type: ignore
               
                       self.epochs = self.load_previous_results(self.results_file)
               
              
              From 5e1032c4af168aa744dccc626a17ee339219450f Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Sat, 8 Aug 2020 17:08:38 +0200
              Subject: [PATCH 2881/3421] Simplify strategy documentation, move
               "substrategies" to advanced page
              
              ---
               docs/strategy-advanced.md      | 21 +++++++++
               docs/strategy-customization.md | 78 +++++++++-------------------------
               2 files changed, 42 insertions(+), 57 deletions(-)
              
              diff --git a/docs/strategy-advanced.md b/docs/strategy-advanced.md
              index e4bab303e..359280694 100644
              --- a/docs/strategy-advanced.md
              +++ b/docs/strategy-advanced.md
              @@ -199,3 +199,24 @@ class Awesomestrategy(IStrategy):
                       return True
               
               ```
              +
              +## Derived strategies
              +
              +The strategies can be derived from other strategies. This avoids duplication of your custom strategy code. You can use this technique to override small parts of your main strategy, leaving the rest untouched:
              +
              +``` python
              +class MyAwesomeStrategy(IStrategy):
              +    ...
              +    stoploss = 0.13
              +    trailing_stop = False
              +    # All other attributes and methods are here as they
              +    # should be in any custom strategy...
              +    ...
              +
              +class MyAwesomeStrategy2(MyAwesomeStrategy):
              +    # Override something
              +    stoploss = 0.08
              +    trailing_stop = True
              +```
              +
              +Both attributes and methods may be overriden, altering behavior of the original strategy in a way you need.
              diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md
              index 98c71b4b2..ec521470a 100644
              --- a/docs/strategy-customization.md
              +++ b/docs/strategy-customization.md
              @@ -355,7 +355,7 @@ def informative_pairs(self):
               
               ***
               
              -### Additional data (DataProvider)
              +## Additional data (DataProvider)
               
               The strategy provides access to the `DataProvider`. This allows you to get additional data to use in your strategy.
               
              @@ -363,7 +363,7 @@ All methods return `None` in case of failure (do not raise an exception).
               
               Please always check the mode of operation to select the correct method to get data (samples see below).
               
              -#### Possible options for DataProvider
              +### Possible options for DataProvider
               
               - [`available_pairs`](#available_pairs) - Property with tuples listing cached pairs with their intervals (pair, interval).
               - [`current_whitelist()`](#current_whitelist) - Returns a current list of whitelisted pairs. Useful for accessing dynamic whitelists (ie. VolumePairlist)
              @@ -376,9 +376,9 @@ Please always check the mode of operation to select the correct method to get da
               - [`ticker(pair)`](#tickerpair) - Returns current ticker data for the pair. See [ccxt documentation](https://github.com/ccxt/ccxt/wiki/Manual#price-tickers) for more details on the Ticker data structure.
               - `runmode` - Property containing the current runmode.
               
              -#### Example Usages:
              +### Example Usages
               
              -#### *available_pairs*
              +### *available_pairs*
               
               ``` python
               if self.dp:
              @@ -386,7 +386,7 @@ if self.dp:
                       print(f"available {pair}, {timeframe}")
               ```
               
              -#### *current_whitelist()*
              +### *current_whitelist()*
               
               Imagine you've developed a strategy that trades the `5m` timeframe using signals generated from a `1d` timeframe on the top 10 volume pairs by volume. 
               
              @@ -420,7 +420,7 @@ class SampleStrategy(IStrategy):
               
                       inf_tf = '1d'
                       # Get the informative pair
              -        informative = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe='1d')
              +        informative = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe=inf_tf)
                       # Get the 14 day rsi
                       informative['rsi'] = ta.RSI(informative, timeperiod=14)
               
              @@ -455,7 +455,7 @@ class SampleStrategy(IStrategy):
               
               ```
               
              -#### *get_pair_dataframe(pair, timeframe)*
              +### *get_pair_dataframe(pair, timeframe)*
               
               ``` python
               # fetch live / historical candle (OHLCV) data for the first informative pair
              @@ -468,12 +468,9 @@ if self.dp:
               !!! Warning "Warning about backtesting"
                   Be careful when using dataprovider in backtesting. `historic_ohlcv()` (and `get_pair_dataframe()`
                   for the backtesting runmode) provides the full time-range in one go,
              -    so please be aware of it and make sure to not "look into the future" to avoid surprises when running in dry/live mode).
              +    so please be aware of it and make sure to not "look into the future" to avoid surprises when running in dry/live mode.
               
              -!!! Warning "Warning in hyperopt"
              -    This option cannot currently be used during hyperopt.
              -
              -#### *get_analyzed_dataframe(pair, timeframe)*
              +### *get_analyzed_dataframe(pair, timeframe)*
               
               This method is used by freqtrade internally to determine the last signal.
               It can also be used in specific callbacks to get the signal that caused the action (see [Advanced Strategy Documentation](strategy-advanced.md) for more details on available callbacks).
              @@ -489,10 +486,7 @@ if self.dp:
                   Returns an empty dataframe if the requested pair was not cached.
                   This should not happen when using whitelisted pairs.
               
              -!!! Warning "Warning in hyperopt"
              -    This option cannot currently be used during hyperopt.
              -
              -#### *orderbook(pair, maximum)*
              +### *orderbook(pair, maximum)*
               
               ``` python
               if self.dp:
              @@ -503,10 +497,9 @@ if self.dp:
               ```
               
               !!! Warning
              -    The order book is not part of the historic data which means backtesting and hyperopt will not work if this
              -    method is used.
              +    The order book is not part of the historic data which means backtesting and hyperopt will not work correctly if this method is used.
               
              -#### *ticker(pair)*
              +### *ticker(pair)*
               
               ``` python
               if self.dp:
              @@ -525,7 +518,7 @@ if self.dp:
               
               ***
               
              -### Additional data (Wallets)
              +## Additional data (Wallets)
               
               The strategy provides access to the `Wallets` object. This contains the current balances on the exchange.
               
              @@ -541,7 +534,7 @@ if self.wallets:
                   total_eth = self.wallets.get_total('ETH')
               ```
               
              -#### Possible options for Wallets
              +### Possible options for Wallets
               
               - `get_free(asset)` - currently available balance to trade
               - `get_used(asset)` - currently tied up balance (open orders)
              @@ -549,7 +542,7 @@ if self.wallets:
               
               ***
               
              -### Additional data (Trades)
              +## Additional data (Trades)
               
               A history of Trades can be retrieved in the strategy by querying the database.
               
              @@ -595,13 +588,13 @@ Sample return value: ETH/BTC had 5 trades, with a total profit of 1.5% (ratio of
               !!! Warning
                   Trade history is not available during backtesting or hyperopt.
               
              -### Prevent trades from happening for a specific pair
              +## Prevent trades from happening for a specific pair
               
               Freqtrade locks pairs automatically for the current candle (until that candle is over) when a pair is sold, preventing an immediate re-buy of that pair.
               
               Locked pairs will show the message `Pair  is currently locked.`.
               
              -#### Locking pairs from within the strategy
              +### Locking pairs from within the strategy
               
               Sometimes it may be desired to lock a pair after certain events happen (e.g. multiple losing trades in a row).
               
              @@ -618,7 +611,7 @@ To verify if a pair is currently locked, use `self.is_pair_locked(pair)`.
               !!! Warning
                   Locking pairs is not functioning during backtesting.
               
              -##### Pair locking example
              +#### Pair locking example
               
               ``` python
               from freqtrade.persistence import Trade
              @@ -640,7 +633,7 @@ if self.config['runmode'].value in ('live', 'dry_run'):
                       self.lock_pair(metadata['pair'], until=datetime.now(timezone.utc) + timedelta(hours=12))
               ```
               
              -### Print created dataframe
              +## Print created dataframe
               
               To inspect the created dataframe, you can issue a print-statement in either `populate_buy_trend()` or `populate_sell_trend()`.
               You may also want to print the pair so it's clear what data is currently shown.
              @@ -664,36 +657,7 @@ def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
               
               Printing more than a few rows is also possible (simply use  `print(dataframe)` instead of `print(dataframe.tail())`), however not recommended, as that will be very verbose (~500 lines per pair every 5 seconds).
               
              -### Specify custom strategy location
              -
              -If you want to use a strategy from a different directory you can pass `--strategy-path`
              -
              -```bash
              -freqtrade trade --strategy AwesomeStrategy --strategy-path /some/directory
              -```
              -
              -### Derived strategies
              -
              -The strategies can be derived from other strategies. This avoids duplication of your custom strategy code. You can use this technique to override small parts of your main strategy, leaving the rest untouched:
              -
              -``` python
              -class MyAwesomeStrategy(IStrategy):
              -    ...
              -    stoploss = 0.13
              -    trailing_stop = False
              -    # All other attributes and methods are here as they
              -    # should be in any custom strategy...
              -    ...
              -
              -class MyAwesomeStrategy2(MyAwesomeStrategy):
              -    # Override something
              -    stoploss = 0.08
              -    trailing_stop = True
              -```
              -
              -Both attributes and methods may be overriden, altering behavior of the original strategy in a way you need.
              -
              -### Common mistakes when developing strategies
              +## Common mistakes when developing strategies
               
               Backtesting analyzes the whole time-range at once for performance reasons. Because of this, strategy authors need to make sure that strategies do not look-ahead into the future.
               This is a common pain-point, which can cause huge differences between backtesting and dry/live run methods, since they all use data which is not available during dry/live runs, so these strategies will perform well during backtesting, but will fail / perform badly in real conditions.
              @@ -705,7 +669,7 @@ The following lists some common patterns which should be avoided to prevent frus
               - don't use `dataframe['volume'].mean()`. This uses the full DataFrame for backtesting, including data from the future. Use `dataframe['volume'].rolling().mean()` instead
               - don't use `.resample('1h')`. This uses the left border of the interval, so moves data from an hour to the start of the hour. Use `.resample('1h', label='right')` instead.
               
              -### Further strategy ideas
              +## Further strategy ideas
               
               To get additional Ideas for strategies, head over to our [strategy repository](https://github.com/freqtrade/freqtrade-strategies). Feel free to use them as they are - but results will depend on the current market situation, pairs used etc. - therefore please backtest the strategy for your exchange/desired pairs first, evaluate carefully, use at your own risk.
               Feel free to use any of them as inspiration for your own strategies.
              
              From 09aa954b68f5ca64ffec9508ff94cfb0998a97df Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Sat, 8 Aug 2020 17:24:19 +0200
              Subject: [PATCH 2882/3421] Update strategy-customization documentation
              
              ---
               docs/strategy-customization.md | 141 ++++++++++++++++++++-------------
               1 file changed, 84 insertions(+), 57 deletions(-)
              
              diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md
              index ec521470a..633b82385 100644
              --- a/docs/strategy-customization.md
              +++ b/docs/strategy-customization.md
              @@ -58,12 +58,12 @@ file as reference.**
               
               !!! Note "Strategies and Backtesting"
                   To avoid problems and unexpected differences between Backtesting and dry/live modes, please be aware
              -    that during backtesting the full time-interval is passed to the `populate_*()` methods at once.
              +    that during backtesting the full time range is passed to the `populate_*()` methods at once.
                   It is therefore best to use vectorized operations (across the whole dataframe, not loops) and
                   avoid index referencing (`df.iloc[-1]`), but instead use `df.shift()` to get to the previous candle.
               
               !!! Warning "Warning: Using future data"
              -    Since backtesting passes the full time interval to the `populate_*()` methods, the strategy author
              +    Since backtesting passes the full time range to the `populate_*()` methods, the strategy author
                   needs to take care to avoid having the strategy utilize data from the future.
                   Some common patterns for this are listed in the [Common Mistakes](#common-mistakes-when-developing-strategies) section of this document.
               
              @@ -251,7 +251,7 @@ minimal_roi = {
               While technically not completely disabled, this would sell once the trade reaches 10000% Profit.
               
               To use times based on candle duration (timeframe), the following snippet can be handy.
              -This will allow you to change the ticket_interval for the strategy, and ROI times will still be set as candles (e.g. after 3 candles ...)
              +This will allow you to change the timeframe for the strategy, and ROI times will still be set as candles (e.g. after 3 candles ...)
               
               ``` python
               from freqtrade.exchange import timeframe_to_minutes
              @@ -285,7 +285,7 @@ If your exchange supports it, it's recommended to also set `"stoploss_on_exchang
               
               For more information on order_types please look [here](configuration.md#understand-order_types).
               
              -### Timeframe (ticker interval)
              +### Timeframe (formerly ticker interval)
               
               This is the set of candles the bot should download and use for the analysis.
               Common values are `"1m"`, `"5m"`, `"15m"`, `"1h"`, however all values supported by your exchange should work.
              @@ -333,10 +333,10 @@ class Awesomestrategy(IStrategy):
               #### Get data for non-tradeable pairs
               
               Data for additional, informative pairs (reference pairs) can be beneficial for some strategies.
              -Ohlcv data for these pairs will be downloaded as part of the regular whitelist refresh process and is available via `DataProvider` just as other pairs (see below).
              +OHLCV data for these pairs will be downloaded as part of the regular whitelist refresh process and is available via `DataProvider` just as other pairs (see below).
               These parts will **not** be traded unless they are also specified in the pair whitelist, or have been selected by Dynamic Whitelisting.
               
              -The pairs need to be specified as tuples in the format `("pair", "interval")`, with pair as the first and time interval as the second argument.
              +The pairs need to be specified as tuples in the format `("pair", "timeframe")`, with pair as the first and timeframe as the second argument.
               
               Sample:
               
              @@ -349,8 +349,8 @@ def informative_pairs(self):
               
               !!! Warning
                   As these pairs will be refreshed as part of the regular whitelist refresh, it's best to keep this list short.
              -    All intervals and all pairs can be specified as long as they are available (and active) on the used exchange.
              -    It is however better to use resampling to longer time-intervals when possible
              +    All timeframes and all pairs can be specified as long as they are available (and active) on the used exchange.
              +    It is however better to use resampling to longer timeframes whenever possible
                   to avoid hammering the exchange with too many requests and risk being blocked.
               
               ***
              @@ -363,10 +363,14 @@ All methods return `None` in case of failure (do not raise an exception).
               
               Please always check the mode of operation to select the correct method to get data (samples see below).
               
              +!!! Warning "Hyperopt"
              +    Dataprovider is available during hyperopt, however it can only be used in `populate_indicators()`.
              +    It is not available in `populate_buy()` and `populate_sell()` methods.
              +
               ### Possible options for DataProvider
               
              -- [`available_pairs`](#available_pairs) - Property with tuples listing cached pairs with their intervals (pair, interval).
              -- [`current_whitelist()`](#current_whitelist) - Returns a current list of whitelisted pairs. Useful for accessing dynamic whitelists (ie. VolumePairlist)
              +- [`available_pairs`](#available_pairs) - Property with tuples listing cached pairs with their timeframe (pair, timeframe).
              +- [`current_whitelist()`](#current_whitelist) - Returns a current list of whitelisted pairs. Useful for accessing dynamic whitelists (i.e. VolumePairlist)
               - [`get_pair_dataframe(pair, timeframe)`](#get_pair_dataframepair-timeframe) - This is a universal method, which returns either historical data (for backtesting) or cached live data (for the Dry-Run and Live-Run modes).
               - [`get_analyzed_dataframe(pair, timeframe)`](#get_analyzed_dataframepair-timeframe) - Returns the analyzed dataframe (after calling `populate_indicators()`, `populate_buy()`, `populate_sell()`) and the time of the latest analysis.
               - `historic_ohlcv(pair, timeframe)` - Returns historical data stored on disk.
              @@ -401,58 +405,13 @@ Since we can't resample our data we will have to use an informative pair; and si
               This is where calling `self.dp.current_whitelist()` comes in handy.
               
               ```python
              -class SampleStrategy(IStrategy):
              -    # strategy init stuff...
              -
              -    timeframe = '5m'
              -
              -    # more strategy init stuff..
              -
                   def informative_pairs(self):
               
                       # get access to all pairs available in whitelist.
                       pairs = self.dp.current_whitelist()
                       # Assign tf to each pair so they can be downloaded and cached for strategy.
                       informative_pairs = [(pair, '1d') for pair in pairs]
              -        return informative_pairs
              -
              -    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
              -
              -        inf_tf = '1d'
              -        # Get the informative pair
              -        informative = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe=inf_tf)
              -        # Get the 14 day rsi
              -        informative['rsi'] = ta.RSI(informative, timeperiod=14)
              -
              -        # Rename columns to be unique
              -        informative.columns = [f"{col}_{inf_tf}" for col in informative.columns]
              -        # Assuming inf_tf = '1d' - then the columns will now be:
              -        # date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d
              -
              -        # Combine the 2 dataframes
              -        # all indicators on the informative sample MUST be calculated before this point
              -        dataframe = pd.merge(dataframe, informative, left_on='date', right_on=f'date_{inf_tf}', how='left')
              -        # FFill to have the 1d value available in every row throughout the day.
              -        # Without this, comparisons would only work once per day.
              -        dataframe = dataframe.ffill()
              -        # Calculate rsi of the original dataframe (5m timeframe)
              -        dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
              -
              -        # Do other stuff
              -        # ...
              -
              -        return dataframe
              -
              -    def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
              -
              -        dataframe.loc[
              -            (
              -                (qtpylib.crossed_above(dataframe['rsi'], 30)) &  # Signal: RSI crosses above 30
              -                (dataframe['rsi_1d'] < 30) &                     # Ensure daily RSI is < 30
              -                (dataframe['volume'] > 0)                        # Ensure this candle had volume (important for backtesting)
              -            ),
              -            'buy'] = 1
              -
              +        return informative_pairs   
               ```
               
               ### *get_pair_dataframe(pair, timeframe)*
              @@ -479,7 +438,7 @@ It can also be used in specific callbacks to get the signal that caused the acti
               # fetch current dataframe
               if self.dp:
                   dataframe, last_updated = self.dp.get_analyzed_dataframe(pair=metadata['pair'],
              -                                                             timeframe=self.ticker_interval)
              +                                                             timeframe=self.timeframe)
               ```
               
               !!! Note "No data available"
              @@ -516,6 +475,74 @@ if self.dp:
                   does not always fills in the `last` field (so it can be None), etc. So you need to carefully verify the ticker
                   data returned from the exchange and add appropriate error handling / defaults.
               
              +!!! Warning "Warning about backtesting"
              +    This method will always return up-to-date values - so usage during backtesting / hyperopt will lead to wrong results.
              +
              +### Complete Data-provider sample
              +
              +```python
              +class SampleStrategy(IStrategy):
              +    # strategy init stuff...
              +
              +    timeframe = '5m'
              +
              +    # more strategy init stuff..
              +
              +    def informative_pairs(self):
              +
              +        # get access to all pairs available in whitelist.
              +        pairs = self.dp.current_whitelist()
              +        # Assign tf to each pair so they can be downloaded and cached for strategy.
              +        informative_pairs = [(pair, '1d') for pair in pairs]
              +        # Optionally Add additional "static" pairs
              +        informative_pairs += [("ETH/USDT", "5m"),
              +                              ("BTC/TUSD", "15m"),
              +                            ]
              +        return informative_pairs
              +
              +    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
              +        if not self.dp:
              +            # Don't do anything if DataProvider is not available.
              +            return dataframe
              +
              +        inf_tf = '1d'
              +        # Get the informative pair
              +        informative = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe=inf_tf)
              +        # Get the 14 day rsi
              +        informative['rsi'] = ta.RSI(informative, timeperiod=14)
              +
              +        # Rename columns to be unique
              +        informative.columns = [f"{col}_{inf_tf}" for col in informative.columns]
              +        # Assuming inf_tf = '1d' - then the columns will now be:
              +        # date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d
              +
              +        # Combine the 2 dataframes
              +        # all indicators on the informative sample MUST be calculated before this point
              +        dataframe = pd.merge(dataframe, informative, left_on='date', right_on=f'date_{inf_tf}', how='left')
              +        # FFill to have the 1d value available in every row throughout the day.
              +        # Without this, comparisons would only work once per day.
              +        dataframe = dataframe.ffill()
              +
              +        # Calculate rsi of the original dataframe (5m timeframe)
              +        dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
              +
              +        # Do other stuff
              +        # ...
              +
              +        return dataframe
              +
              +    def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
              +
              +        dataframe.loc[
              +            (
              +                (qtpylib.crossed_above(dataframe['rsi'], 30)) &  # Signal: RSI crosses above 30
              +                (dataframe['rsi_1d'] < 30) &                     # Ensure daily RSI is < 30
              +                (dataframe['volume'] > 0)                        # Ensure this candle had volume (important for backtesting)
              +            ),
              +            'buy'] = 1
              +
              +```
              +
               ***
               
               ## Additional data (Wallets)
              
              From 2afe1d5b11b1e63ee403b147fcd0572a9723a716 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Sat, 8 Aug 2020 17:27:22 +0200
              Subject: [PATCH 2883/3421] Add link to full sample
              
              ---
               docs/strategy-customization.md    | 6 ++++--
               freqtrade/optimize/backtesting.py | 1 -
               2 files changed, 4 insertions(+), 3 deletions(-)
              
              diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md
              index 633b82385..73d085abd 100644
              --- a/docs/strategy-customization.md
              +++ b/docs/strategy-customization.md
              @@ -328,9 +328,9 @@ class Awesomestrategy(IStrategy):
               
               ***
               
              -### Additional data (informative_pairs)
              +## Additional data (informative_pairs)
               
              -#### Get data for non-tradeable pairs
              +### Get data for non-tradeable pairs
               
               Data for additional, informative pairs (reference pairs) can be beneficial for some strategies.
               OHLCV data for these pairs will be downloaded as part of the regular whitelist refresh process and is available via `DataProvider` just as other pairs (see below).
              @@ -347,6 +347,8 @@ def informative_pairs(self):
                           ]
               ```
               
              +A full sample can be found [in the DataProvider section](#complete-data-provider-sample).
              +
               !!! Warning
                   As these pairs will be refreshed as part of the regular whitelist refresh, it's best to keep this list short.
                   All timeframes and all pairs can be specified as long as they are available (and active) on the used exchange.
              diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py
              index d058493cf..f3070f10f 100644
              --- a/freqtrade/optimize/backtesting.py
              +++ b/freqtrade/optimize/backtesting.py
              @@ -24,7 +24,6 @@ from freqtrade.optimize.optimize_reports import (generate_backtest_stats,
               from freqtrade.pairlist.pairlistmanager import PairListManager
               from freqtrade.persistence import Trade
               from freqtrade.resolvers import ExchangeResolver, StrategyResolver
              -from freqtrade.state import RunMode
               from freqtrade.strategy.interface import IStrategy, SellCheckTuple, SellType
               
               logger = logging.getLogger(__name__)
              
              From fca41a44bb278b7544f6024ebff9f0fb2bd8d359 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Sat, 8 Aug 2020 20:20:58 +0200
              Subject: [PATCH 2884/3421] Also logg timeframe
              
              ---
               freqtrade/optimize/optimize_reports.py | 1 +
               1 file changed, 1 insertion(+)
              
              diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py
              index f917e7cab..8e25d9d89 100644
              --- a/freqtrade/optimize/optimize_reports.py
              +++ b/freqtrade/optimize/optimize_reports.py
              @@ -269,6 +269,7 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame],
                           'stake_amount': config['stake_amount'],
                           'stake_currency': config['stake_currency'],
                           'max_open_trades': config['max_open_trades'],
              +            'timeframe': config['timeframe'],
                           **daily_stats,
                       }
                       result['strategy'][strategy] = strat_stats
              
              From 2663aede24af7e5b3eab2608f9e5be6fef3c00d5 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Sun, 9 Aug 2020 10:28:11 +0200
              Subject: [PATCH 2885/3421] Update test to reflect new column naming
              
              ---
               tests/edge/test_edge.py | 24 ++++++++++++------------
               1 file changed, 12 insertions(+), 12 deletions(-)
              
              diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py
              index 969b0c44b..d35f7fcf6 100644
              --- a/tests/edge/test_edge.py
              +++ b/tests/edge/test_edge.py
              @@ -418,8 +418,8 @@ def test_process_expectancy_remove_pumps(mocker, edge_conf, fee,):
                        'stoploss': -0.9,
                        'profit_percent': '',
                        'profit_abs': '',
              -         'open_time': np.datetime64('2018-10-03T00:05:00.000000000'),
              -         'close_time': np.datetime64('2018-10-03T00:10:00.000000000'),
              +         'open_date': np.datetime64('2018-10-03T00:05:00.000000000'),
              +         'close_date': np.datetime64('2018-10-03T00:10:00.000000000'),
                        'open_index': 1,
                        'close_index': 1,
                        'trade_duration': '',
              @@ -431,8 +431,8 @@ def test_process_expectancy_remove_pumps(mocker, edge_conf, fee,):
                        'stoploss': -0.9,
                        'profit_percent': '',
                        'profit_abs': '',
              -         'open_time': np.datetime64('2018-10-03T00:20:00.000000000'),
              -         'close_time': np.datetime64('2018-10-03T00:25:00.000000000'),
              +         'open_date': np.datetime64('2018-10-03T00:20:00.000000000'),
              +         'close_date': np.datetime64('2018-10-03T00:25:00.000000000'),
                        'open_index': 4,
                        'close_index': 4,
                        'trade_duration': '',
              @@ -443,8 +443,8 @@ def test_process_expectancy_remove_pumps(mocker, edge_conf, fee,):
                        'stoploss': -0.9,
                        'profit_percent': '',
                        'profit_abs': '',
              -         'open_time': np.datetime64('2018-10-03T00:20:00.000000000'),
              -         'close_time': np.datetime64('2018-10-03T00:25:00.000000000'),
              +         'open_date': np.datetime64('2018-10-03T00:20:00.000000000'),
              +         'close_date': np.datetime64('2018-10-03T00:25:00.000000000'),
                        'open_index': 4,
                        'close_index': 4,
                        'trade_duration': '',
              @@ -455,8 +455,8 @@ def test_process_expectancy_remove_pumps(mocker, edge_conf, fee,):
                        'stoploss': -0.9,
                        'profit_percent': '',
                        'profit_abs': '',
              -         'open_time': np.datetime64('2018-10-03T00:20:00.000000000'),
              -         'close_time': np.datetime64('2018-10-03T00:25:00.000000000'),
              +         'open_date': np.datetime64('2018-10-03T00:20:00.000000000'),
              +         'close_date': np.datetime64('2018-10-03T00:25:00.000000000'),
                        'open_index': 4,
                        'close_index': 4,
                        'trade_duration': '',
              @@ -467,8 +467,8 @@ def test_process_expectancy_remove_pumps(mocker, edge_conf, fee,):
                        'stoploss': -0.9,
                        'profit_percent': '',
                        'profit_abs': '',
              -         'open_time': np.datetime64('2018-10-03T00:20:00.000000000'),
              -         'close_time': np.datetime64('2018-10-03T00:25:00.000000000'),
              +         'open_date': np.datetime64('2018-10-03T00:20:00.000000000'),
              +         'close_date': np.datetime64('2018-10-03T00:25:00.000000000'),
                        'open_index': 4,
                        'close_index': 4,
                        'trade_duration': '',
              @@ -480,8 +480,8 @@ def test_process_expectancy_remove_pumps(mocker, edge_conf, fee,):
                        'stoploss': -0.9,
                        'profit_percent': '',
                        'profit_abs': '',
              -         'open_time': np.datetime64('2018-10-03T00:30:00.000000000'),
              -         'close_time': np.datetime64('2018-10-03T00:40:00.000000000'),
              +         'open_date': np.datetime64('2018-10-03T00:30:00.000000000'),
              +         'close_date': np.datetime64('2018-10-03T00:40:00.000000000'),
                        'open_index': 6,
                        'close_index': 7,
                        'trade_duration': '',
              
              From 17613f203a2f898b8388a7eb85c82ac1acf5c5e8 Mon Sep 17 00:00:00 2001
              From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
              Date: Mon, 10 Aug 2020 06:17:04 +0000
              Subject: [PATCH 2886/3421] Bump mkdocs-material from 5.5.1 to 5.5.3
              
              Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.1 to 5.5.3.
              - [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
              - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md)
              - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.1...5.5.3)
              
              Signed-off-by: dependabot[bot] 
              ---
               docs/requirements-docs.txt | 2 +-
               1 file changed, 1 insertion(+), 1 deletion(-)
              
              diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt
              index c30661b6a..4068e364b 100644
              --- a/docs/requirements-docs.txt
              +++ b/docs/requirements-docs.txt
              @@ -1,2 +1,2 @@
              -mkdocs-material==5.5.1
              +mkdocs-material==5.5.3
               mdx_truly_sane_lists==1.2
              
              From 1afe4df7be5234630475ebdffc6d875c2467ddf1 Mon Sep 17 00:00:00 2001
              From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
              Date: Mon, 10 Aug 2020 06:17:36 +0000
              Subject: [PATCH 2887/3421] Bump ccxt from 1.32.45 to 1.32.88
              
              Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.32.45 to 1.32.88.
              - [Release notes](https://github.com/ccxt/ccxt/releases)
              - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst)
              - [Commits](https://github.com/ccxt/ccxt/compare/1.32.45...1.32.88)
              
              Signed-off-by: dependabot[bot] 
              ---
               requirements-common.txt | 2 +-
               1 file changed, 1 insertion(+), 1 deletion(-)
              
              diff --git a/requirements-common.txt b/requirements-common.txt
              index 62cde9dbc..b7e71eada 100644
              --- a/requirements-common.txt
              +++ b/requirements-common.txt
              @@ -1,6 +1,6 @@
               # requirements without requirements installable via conda
               # mainly used for Raspberry pi installs
              -ccxt==1.32.45
              +ccxt==1.32.88
               SQLAlchemy==1.3.18
               python-telegram-bot==12.8
               arrow==0.15.8
              
              From c9c43d2f0b6adc59811a292efe95448d411f1499 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Tue, 11 Aug 2020 15:27:41 +0200
              Subject: [PATCH 2888/3421] Move log-message of retrying before decrementing
               count
              
              Otherwise the message is always one round "late".
              ---
               freqtrade/exchange/common.py | 4 ++--
               1 file changed, 2 insertions(+), 2 deletions(-)
              
              diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py
              index 0610e8447..cbab742b7 100644
              --- a/freqtrade/exchange/common.py
              +++ b/freqtrade/exchange/common.py
              @@ -107,9 +107,9 @@ def retrier_async(f):
                       except TemporaryError as ex:
                           logger.warning('%s() returned exception: "%s"', f.__name__, ex)
                           if count > 0:
              +                logger.warning('retrying %s() still for %s times', f.__name__, count)
                               count -= 1
                               kwargs.update({'count': count})
              -                logger.warning('retrying %s() still for %s times', f.__name__, count)
                               if isinstance(ex, DDosProtection):
                                   backoff_delay = calculate_backoff(count + 1, API_RETRY_COUNT)
                                   logger.debug(f"Applying DDosProtection backoff delay: {backoff_delay}")
              @@ -131,9 +131,9 @@ def retrier(_func=None, retries=API_RETRY_COUNT):
                           except (TemporaryError, RetryableOrderError) as ex:
                               logger.warning('%s() returned exception: "%s"', f.__name__, ex)
                               if count > 0:
              +                    logger.warning('retrying %s() still for %s times', f.__name__, count)
                                   count -= 1
                                   kwargs.update({'count': count})
              -                    logger.warning('retrying %s() still for %s times', f.__name__, count)
                                   if isinstance(ex, DDosProtection) or isinstance(ex, RetryableOrderError):
                                       # increasing backoff
                                       backoff_delay = calculate_backoff(count + 1, retries)
              
              From d77c53960dfc789a5ae013ac89a04b26f4f4456f Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Tue, 11 Aug 2020 19:27:25 +0200
              Subject: [PATCH 2889/3421] Show API backoff in logs to better investigate
               eventual problems)
              
              ---
               freqtrade/exchange/common.py | 4 ++--
               1 file changed, 2 insertions(+), 2 deletions(-)
              
              diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py
              index cbab742b7..3bba9be72 100644
              --- a/freqtrade/exchange/common.py
              +++ b/freqtrade/exchange/common.py
              @@ -112,7 +112,7 @@ def retrier_async(f):
                               kwargs.update({'count': count})
                               if isinstance(ex, DDosProtection):
                                   backoff_delay = calculate_backoff(count + 1, API_RETRY_COUNT)
              -                    logger.debug(f"Applying DDosProtection backoff delay: {backoff_delay}")
              +                    logger.info(f"Applying DDosProtection backoff delay: {backoff_delay}")
                                   await asyncio.sleep(backoff_delay)
                               return await wrapper(*args, **kwargs)
                           else:
              @@ -137,7 +137,7 @@ def retrier(_func=None, retries=API_RETRY_COUNT):
                                   if isinstance(ex, DDosProtection) or isinstance(ex, RetryableOrderError):
                                       # increasing backoff
                                       backoff_delay = calculate_backoff(count + 1, retries)
              -                        logger.debug(f"Applying DDosProtection backoff delay: {backoff_delay}")
              +                        logger.info(f"Applying DDosProtection backoff delay: {backoff_delay}")
                                       time.sleep(backoff_delay)
                                   return wrapper(*args, **kwargs)
                               else:
              
              From 77541935a8d686b0b1feb1ce345261a2c40436e8 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Tue, 11 Aug 2020 20:10:43 +0200
              Subject: [PATCH 2890/3421] Fix small merge mistake
              
              ---
               freqtrade/commands/hyperopt_commands.py | 16 ++++-----
               tests/commands/test_commands.py         | 44 ++++++++++++++++---------
               2 files changed, 37 insertions(+), 23 deletions(-)
              
              diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py
              index 7b079bdfe..b769100be 100755
              --- a/freqtrade/commands/hyperopt_commands.py
              +++ b/freqtrade/commands/hyperopt_commands.py
              @@ -183,17 +183,17 @@ def _hyperopt_filter_epochs(epochs: List, filteroptions: dict) -> List:
                           if x['results_metrics']['profit'] < filteroptions['filter_max_total_profit']
                       ]
                   if filteroptions['filter_min_objective'] is not None:
              -        trials = [x for x in trials if x['results_metrics']['trade_count'] > 0]
              -        # trials = [x for x in trials if x['loss'] != 20]
              -        trials = [
              -            x for x in trials
              +        epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
              +        # epochs = [x for x in epochs if x['loss'] != 20]
              +        epochs = [
              +            x for x in epochs
                           if x['loss'] < filteroptions['filter_min_objective']
                       ]
                   if filteroptions['filter_max_objective'] is not None:
              -        trials = [x for x in trials if x['results_metrics']['trade_count'] > 0]
              -        # trials = [x for x in trials if x['loss'] != 20]
              -        trials = [
              -            x for x in trials
              +        epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
              +        # epochs = [x for x in epochs if x['loss'] != 20]
              +        epochs = [
              +            x for x in epochs
                           if x['loss'] > filteroptions['filter_max_objective']
                       ]
               
              diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py
              index 4ef4ec6c5..1eb017465 100644
              --- a/tests/commands/test_commands.py
              +++ b/tests/commands/test_commands.py
              @@ -736,7 +736,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
               
                   args = [
                       "hyperopt-list",
              -        "--no-details"
              +        "--no-details",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -749,7 +750,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                   args = [
                       "hyperopt-list",
                       "--best",
              -        "--no-details"
              +        "--no-details",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -763,7 +765,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                   args = [
                       "hyperopt-list",
                       "--profitable",
              -        "--no-details"
              +        "--no-details",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -776,7 +779,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                                        " 11/12", " 12/12"])
                   args = [
                       "hyperopt-list",
              -        "--profitable"
              +        "--profitable",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -792,7 +796,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "hyperopt-list",
                       "--no-details",
                       "--no-color",
              -        "--min-trades", "20"
              +        "--min-trades", "20",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -806,7 +811,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "hyperopt-list",
                       "--profitable",
                       "--no-details",
              -        "--max-trades", "20"
              +        "--max-trades", "20",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -821,7 +827,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "hyperopt-list",
                       "--profitable",
                       "--no-details",
              -        "--min-avg-profit", "0.11"
              +        "--min-avg-profit", "0.11",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -835,7 +842,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                   args = [
                       "hyperopt-list",
                       "--no-details",
              -        "--max-avg-profit", "0.10"
              +        "--max-avg-profit", "0.10",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -849,7 +857,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                   args = [
                       "hyperopt-list",
                       "--no-details",
              -        "--min-total-profit", "0.4"
              +        "--min-total-profit", "0.4",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -863,7 +872,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                   args = [
                       "hyperopt-list",
                       "--no-details",
              -        "--max-total-profit", "0.4"
              +        "--max-total-profit", "0.4",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -877,7 +887,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                   args = [
                       "hyperopt-list",
                       "--no-details",
              -        "--min-objective", "0.1"
              +        "--min-objective", "0.1",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -891,7 +902,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                   args = [
                       "hyperopt-list",
                       "--no-details",
              -        "--max-objective", "0.1"
              +        "--max-objective", "0.1",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -906,7 +918,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "hyperopt-list",
                       "--profitable",
                       "--no-details",
              -        "--min-avg-time", "2000"
              +        "--min-avg-time", "2000",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -920,7 +933,8 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                   args = [
                       "hyperopt-list",
                       "--no-details",
              -        "--max-avg-time", "1500"
              +        "--max-avg-time", "1500",
              +        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -934,7 +948,7 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                   args = [
                       "hyperopt-list",
                       "--no-details",
              -        "--export-csv", "test_file.csv"
              +        "--export-csv", "test_file.csv",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              
              From f51c03aa864e4489bb55886cf86b3be0bc413216 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Tue, 11 Aug 2020 20:29:47 +0200
              Subject: [PATCH 2891/3421] Revert changes to color using --no-color
              
              ---
               tests/commands/test_commands.py | 14 --------------
               1 file changed, 14 deletions(-)
              
              diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py
              index 1eb017465..69d80d2cd 100644
              --- a/tests/commands/test_commands.py
              +++ b/tests/commands/test_commands.py
              @@ -737,7 +737,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                   args = [
                       "hyperopt-list",
                       "--no-details",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -751,7 +750,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "hyperopt-list",
                       "--best",
                       "--no-details",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -766,7 +764,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "hyperopt-list",
                       "--profitable",
                       "--no-details",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -780,7 +777,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                   args = [
                       "hyperopt-list",
                       "--profitable",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -797,7 +793,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "--no-details",
                       "--no-color",
                       "--min-trades", "20",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -812,7 +807,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "--profitable",
                       "--no-details",
                       "--max-trades", "20",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -828,7 +822,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "--profitable",
                       "--no-details",
                       "--min-avg-profit", "0.11",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -843,7 +836,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "hyperopt-list",
                       "--no-details",
                       "--max-avg-profit", "0.10",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -858,7 +850,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "hyperopt-list",
                       "--no-details",
                       "--min-total-profit", "0.4",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -873,7 +864,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "hyperopt-list",
                       "--no-details",
                       "--max-total-profit", "0.4",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -888,7 +878,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "hyperopt-list",
                       "--no-details",
                       "--min-objective", "0.1",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -903,7 +892,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "hyperopt-list",
                       "--no-details",
                       "--max-objective", "0.1",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -919,7 +907,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "--profitable",
                       "--no-details",
                       "--min-avg-time", "2000",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              @@ -934,7 +921,6 @@ def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results):
                       "hyperopt-list",
                       "--no-details",
                       "--max-avg-time", "1500",
              -        "--no-color",
                   ]
                   pargs = get_args(args)
                   pargs['config'] = None
              
              From 56655b97cfc52116c7f990405dee6d5ebaea2ce7 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Tue, 11 Aug 2020 20:37:01 +0200
              Subject: [PATCH 2892/3421] Refactor hyperopt_filter method
              
              ---
               freqtrade/commands/hyperopt_commands.py | 38 ++++++++++++++++++++++---
               1 file changed, 34 insertions(+), 4 deletions(-)
              
              diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py
              index b769100be..a724443cf 100755
              --- a/freqtrade/commands/hyperopt_commands.py
              +++ b/freqtrade/commands/hyperopt_commands.py
              @@ -10,7 +10,7 @@ from freqtrade.state import RunMode
               
               logger = logging.getLogger(__name__)
               
              -# flake8: noqa C901
              +
               def start_hyperopt_list(args: Dict[str, Any]) -> None:
                   """
                   List hyperopt epochs previously evaluated
              @@ -47,7 +47,7 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None:
                   epochs = Hyperopt.load_previous_results(results_file)
                   total_epochs = len(epochs)
               
              -    epochs = _hyperopt_filter_epochs(epochs, filteroptions)
              +    epochs = hyperopt_filter_epochs(epochs, filteroptions)
               
                   if print_colorized:
                       colorama_init(autoreset=True)
              @@ -108,7 +108,7 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None:
                   epochs = Hyperopt.load_previous_results(results_file)
                   total_epochs = len(epochs)
               
              -    epochs = _hyperopt_filter_epochs(epochs, filteroptions)
              +    epochs = hyperopt_filter_epochs(epochs, filteroptions)
                   filtered_epochs = len(epochs)
               
                   if n > filtered_epochs:
              @@ -128,7 +128,7 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None:
                                                    header_str="Epoch details")
               
               
              -def _hyperopt_filter_epochs(epochs: List, filteroptions: dict) -> List:
              +def hyperopt_filter_epochs(epochs: List, filteroptions: dict) -> List:
                   """
                   Filter our items from the list of hyperopt results
                   """
              @@ -136,6 +136,20 @@ def _hyperopt_filter_epochs(epochs: List, filteroptions: dict) -> List:
                       epochs = [x for x in epochs if x['is_best']]
                   if filteroptions['only_profitable']:
                       epochs = [x for x in epochs if x['results_metrics']['profit'] > 0]
              +
              +    epochs = _hyperopt_filter_epochs_trade_count(epochs, filteroptions)
              +
              +    epochs = _hyperopt_filter_epochs_duration(epochs, filteroptions)
              +
              +    epochs = _hyperopt_filter_epochs_profit(epochs, filteroptions)
              +
              +    epochs = _hyperopt_filter_epochs_objective(epochs, filteroptions)
              +
              +    return epochs
              +
              +
              +def _hyperopt_filter_epochs_trade_count(epochs: List, filteroptions: dict) -> List:
              +
                   if filteroptions['filter_min_trades'] > 0:
                       epochs = [
                           x for x in epochs
              @@ -146,6 +160,11 @@ def _hyperopt_filter_epochs(epochs: List, filteroptions: dict) -> List:
                           x for x in epochs
                           if x['results_metrics']['trade_count'] < filteroptions['filter_max_trades']
                       ]
              +    return epochs
              +
              +
              +def _hyperopt_filter_epochs_duration(epochs: List, filteroptions: dict) -> List:
              +
                   if filteroptions['filter_min_avg_time'] is not None:
                       epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
                       epochs = [
              @@ -158,6 +177,12 @@ def _hyperopt_filter_epochs(epochs: List, filteroptions: dict) -> List:
                           x for x in epochs
                           if x['results_metrics']['duration'] < filteroptions['filter_max_avg_time']
                       ]
              +
              +    return epochs
              +
              +
              +def _hyperopt_filter_epochs_profit(epochs: List, filteroptions: dict) -> List:
              +
                   if filteroptions['filter_min_avg_profit'] is not None:
                       epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
                       epochs = [
              @@ -182,6 +207,11 @@ def _hyperopt_filter_epochs(epochs: List, filteroptions: dict) -> List:
                           x for x in epochs
                           if x['results_metrics']['profit'] < filteroptions['filter_max_total_profit']
                       ]
              +    return epochs
              +
              +
              +def _hyperopt_filter_epochs_objective(epochs: List, filteroptions: dict) -> List:
              +
                   if filteroptions['filter_min_objective'] is not None:
                       epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
                       # epochs = [x for x in epochs if x['loss'] != 20]
              
              From 2dc36bb79eece79fd20c7ffac92fb1c12ba4177e Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Tue, 11 Aug 2020 20:52:18 +0200
              Subject: [PATCH 2893/3421] Remove inversion of min/max objective selection
              
              ---
               freqtrade/commands/hyperopt_commands.py | 5 -----
               1 file changed, 5 deletions(-)
              
              diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py
              index a724443cf..d37c1f13b 100755
              --- a/freqtrade/commands/hyperopt_commands.py
              +++ b/freqtrade/commands/hyperopt_commands.py
              @@ -99,11 +99,6 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None:
                       'filter_max_objective': config.get('hyperopt_list_max_objective', None)
                   }
               
              -    if filteroptions['filter_min_objective'] is not None:
              -        filteroptions['filter_min_objective'] = -filteroptions['filter_min_objective']
              -    if filteroptions['filter_max_objective'] is not None:
              -        filteroptions['filter_max_objective'] = -filteroptions['filter_max_objective']
              -
                   # Previous evaluations
                   epochs = Hyperopt.load_previous_results(results_file)
                   total_epochs = len(epochs)
              
              From 2fed066e767bb3c3015af5d4a9f31ad588619fad Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Wed, 12 Aug 2020 10:39:53 +0200
              Subject: [PATCH 2894/3421] Simplify objective code formatting
              
              ---
               freqtrade/commands/hyperopt_commands.py | 21 +++++++--------------
               1 file changed, 7 insertions(+), 14 deletions(-)
              
              diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py
              index d37c1f13b..4fae51e28 100755
              --- a/freqtrade/commands/hyperopt_commands.py
              +++ b/freqtrade/commands/hyperopt_commands.py
              @@ -140,6 +140,10 @@ def hyperopt_filter_epochs(epochs: List, filteroptions: dict) -> List:
               
                   epochs = _hyperopt_filter_epochs_objective(epochs, filteroptions)
               
              +    logger.info(f"{len(epochs)} " +
              +                ("best " if filteroptions['only_best'] else "") +
              +                ("profitable " if filteroptions['only_profitable'] else "") +
              +                "epochs found.")
                   return epochs
               
               
              @@ -209,22 +213,11 @@ def _hyperopt_filter_epochs_objective(epochs: List, filteroptions: dict) -> List
               
                   if filteroptions['filter_min_objective'] is not None:
                       epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
              -        # epochs = [x for x in epochs if x['loss'] != 20]
              -        epochs = [
              -            x for x in epochs
              -            if x['loss'] < filteroptions['filter_min_objective']
              -        ]
              +
              +        epochs = [x for x in epochs if x['loss'] < filteroptions['filter_min_objective']]
                   if filteroptions['filter_max_objective'] is not None:
                       epochs = [x for x in epochs if x['results_metrics']['trade_count'] > 0]
              -        # epochs = [x for x in epochs if x['loss'] != 20]
              -        epochs = [
              -            x for x in epochs
              -            if x['loss'] > filteroptions['filter_max_objective']
              -        ]
               
              -    logger.info(f"{len(epochs)} " +
              -                ("best " if filteroptions['only_best'] else "") +
              -                ("profitable " if filteroptions['only_profitable'] else "") +
              -                "epochs found.")
              +        epochs = [x for x in epochs if x['loss'] > filteroptions['filter_max_objective']]
               
                   return epochs
              
              From 1f1a819b292ecf927c2d332a1fd788ac5b7359a6 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Wed, 12 Aug 2020 11:21:00 +0200
              Subject: [PATCH 2895/3421] Remove unused 3rd argument to create_stoploss call
              
              ---
               freqtrade/freqtradebot.py  | 10 ++++------
               tests/test_freqtradebot.py |  2 +-
               2 files changed, 5 insertions(+), 7 deletions(-)
              
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index 967f68b90..3168976e2 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -768,7 +768,7 @@ class FreqtradeBot:
                       logger.debug('Found no sell signal for %s.', trade)
                       return False
               
              -    def create_stoploss_order(self, trade: Trade, stop_price: float, rate: float) -> bool:
              +    def create_stoploss_order(self, trade: Trade, stop_price: float) -> bool:
                       """
                       Abstracts creating stoploss orders from the logic.
                       Handles errors and updates the trade database object.
              @@ -831,14 +831,13 @@ class FreqtradeBot:
                           stoploss = self.edge.stoploss(pair=trade.pair) if self.edge else self.strategy.stoploss
                           stop_price = trade.open_rate * (1 + stoploss)
               
              -            if self.create_stoploss_order(trade=trade, stop_price=stop_price, rate=stop_price):
              +            if self.create_stoploss_order(trade=trade, stop_price=stop_price):
                               trade.stoploss_last_update = datetime.now()
                               return False
               
                       # If stoploss order is canceled for some reason we add it
                       if stoploss_order and stoploss_order['status'] in ('canceled', 'cancelled'):
              -            if self.create_stoploss_order(trade=trade, stop_price=trade.stop_loss,
              -                                          rate=trade.stop_loss):
              +            if self.create_stoploss_order(trade=trade, stop_price=trade.stop_loss):
                               return False
                           else:
                               trade.stoploss_order_id = None
              @@ -875,8 +874,7 @@ class FreqtradeBot:
                                                    f"for pair {trade.pair}")
               
                               # Create new stoploss order
              -                if not self.create_stoploss_order(trade=trade, stop_price=trade.stop_loss,
              -                                                  rate=trade.stop_loss):
              +                if not self.create_stoploss_order(trade=trade, stop_price=trade.stop_loss):
                                   logger.warning(f"Could not create trailing stoploss order "
                                                  f"for pair {trade.pair}.")
               
              diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
              index 5c225bbc0..87071be3e 100644
              --- a/tests/test_freqtradebot.py
              +++ b/tests/test_freqtradebot.py
              @@ -1301,7 +1301,7 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee,
                   freqtrade.enter_positions()
                   trade = Trade.query.first()
                   caplog.clear()
              -    freqtrade.create_stoploss_order(trade, 200, 199)
              +    freqtrade.create_stoploss_order(trade, 200)
                   assert trade.stoploss_order_id is None
                   assert trade.sell_reason == SellType.EMERGENCY_SELL.value
                   assert log_has("Unable to place a stoploss order on exchange. ", caplog)
              
              From 6dfa159a914968d6a8838020521bfb1da5f1a905 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Wed, 12 Aug 2020 14:11:19 +0200
              Subject: [PATCH 2896/3421] Small comment adjustments in exchange class
              
              ---
               freqtrade/exchange/exchange.py | 10 +++++-----
               1 file changed, 5 insertions(+), 5 deletions(-)
              
              diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
              index 8438941f7..f8bac3a8d 100644
              --- a/freqtrade/exchange/exchange.py
              +++ b/freqtrade/exchange/exchange.py
              @@ -974,7 +974,7 @@ class Exchange:
                       except ccxt.BaseError as e:
                           raise OperationalException(e) from e
               
              -    # Assign method to fetch_stoploss_order to allow easy overriding in other classes
              +    # Assign method to cancel_stoploss_order to allow easy overriding in other classes
                   cancel_stoploss_order = cancel_order
               
                   def is_cancel_order_result_suitable(self, corder) -> bool:
              @@ -1040,10 +1040,10 @@ class Exchange:
                   @retrier
                   def fetch_l2_order_book(self, pair: str, limit: int = 100) -> dict:
                       """
              -        get order book level 2 from exchange
              -
              -        Notes:
              -        20180619: bittrex doesnt support limits -.-
              +        Get L2 order book from exchange.
              +        Can be limited to a certain amount (if supported).
              +        Returns a dict in the format
              +        {'asks': [price, volume], 'bids': [price, volume]}
                       """
                       try:
               
              
              From faa2bbb5553a19b21341c031e9eef46508551254 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Wed, 12 Aug 2020 14:25:50 +0200
              Subject: [PATCH 2897/3421] Document exception hierarchy
              
              ---
               docs/developer.md          | 29 +++++++++++++++++++++++++++++
               freqtrade/exceptions.py    | 16 ++++++++--------
               freqtrade/freqtradebot.py  |  4 ++--
               freqtrade/rpc/rpc.py       |  6 +++---
               tests/test_freqtradebot.py |  3 ++-
               5 files changed, 44 insertions(+), 14 deletions(-)
              
              diff --git a/docs/developer.md b/docs/developer.md
              index 036109d5b..ce454cec2 100644
              --- a/docs/developer.md
              +++ b/docs/developer.md
              @@ -85,6 +85,35 @@ docker-compose exec freqtrade_develop /bin/bash
               
               ![image](https://user-images.githubusercontent.com/419355/65456522-ba671a80-de06-11e9-9598-df9ca0d8dcac.png)
               
              +## ErrorHandling
              +
              +Freqtrade Exceptions all inherit from `FreqtradeException`.
              +This general class of error should however not be used directly, instead, multiple specialized sub-Exceptions exist.
              +
              +Below is an outline of exception inheritance hierarchy:
              +
              +```
              ++ FreqtradeException
              +|
              ++---+ OperationalException
              +|
              ++---+ DependencyException
              +|   |
              +|   +---+ PricingError
              +|   |
              +|   +---+ ExchangeError
              +|       |
              +|       +---+ TemporaryError
              +|       |
              +|       +---+ DDosProtection
              +|       |
              +|       +---+ InvalidOrderException
              +|           |
              +|           +---+ RetryableOrderError
              +|
              ++---+ StrategyError
              +```
              +
               ## Modules
               
               ### Dynamic Pairlist
              diff --git a/freqtrade/exceptions.py b/freqtrade/exceptions.py
              index c85fccc4b..e2bc969a9 100644
              --- a/freqtrade/exceptions.py
              +++ b/freqtrade/exceptions.py
              @@ -29,7 +29,14 @@ class PricingError(DependencyException):
                   """
               
               
              -class InvalidOrderException(FreqtradeException):
              +class ExchangeError(DependencyException):
              +    """
              +    Error raised out of the exchange.
              +    Has multiple Errors to determine the appropriate error.
              +    """
              +
              +
              +class InvalidOrderException(ExchangeError):
                   """
                   This is returned when the order is not valid. Example:
                   If stoploss on exchange order is hit, then trying to cancel the order
              @@ -44,13 +51,6 @@ class RetryableOrderError(InvalidOrderException):
                   """
               
               
              -class ExchangeError(DependencyException):
              -    """
              -    Error raised out of the exchange.
              -    Has multiple Errors to determine the appropriate error.
              -    """
              -
              -
               class TemporaryError(ExchangeError):
                   """
                   Temporary network or exchange related error.
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index 3168976e2..557aefe94 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -919,7 +919,7 @@ class FreqtradeBot:
                               if not trade.open_order_id:
                                   continue
                               order = self.exchange.fetch_order(trade.open_order_id, trade.pair)
              -            except (ExchangeError, InvalidOrderException):
              +            except (ExchangeError):
                               logger.info('Cannot query order for %s due to %s', trade, traceback.format_exc())
                               continue
               
              @@ -952,7 +952,7 @@ class FreqtradeBot:
                       for trade in Trade.get_open_order_trades():
                           try:
                               order = self.exchange.fetch_order(trade.open_order_id, trade.pair)
              -            except (DependencyException, InvalidOrderException):
              +            except (ExchangeError):
                               logger.info('Cannot query order for %s due to %s', trade, traceback.format_exc())
                               continue
               
              diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py
              index 8a1ff7e96..f4e20c16f 100644
              --- a/freqtrade/rpc/rpc.py
              +++ b/freqtrade/rpc/rpc.py
              @@ -11,7 +11,7 @@ from typing import Any, Dict, List, Optional, Tuple, Union
               import arrow
               from numpy import NAN, mean
               
              -from freqtrade.exceptions import (ExchangeError, InvalidOrderException,
              +from freqtrade.exceptions import (ExchangeError,
                                                 PricingError)
               from freqtrade.exchange import timeframe_to_minutes, timeframe_to_msecs
               from freqtrade.misc import shorten_date
              @@ -555,7 +555,7 @@ class RPC:
                               try:
                                   self._freqtrade.exchange.cancel_order(trade.open_order_id, trade.pair)
                                   c_count += 1
              -                except (ExchangeError, InvalidOrderException):
              +                except (ExchangeError):
                                   pass
               
                           # cancel stoploss on exchange ...
              @@ -565,7 +565,7 @@ class RPC:
                                   self._freqtrade.exchange.cancel_stoploss_order(trade.stoploss_order_id,
                                                                                  trade.pair)
                                   c_count += 1
              -                except (ExchangeError, InvalidOrderException):
              +                except (ExchangeError):
                                   pass
               
                           Trade.session.delete(trade)
              diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
              index 87071be3e..2c6d2314c 100644
              --- a/tests/test_freqtradebot.py
              +++ b/tests/test_freqtradebot.py
              @@ -1,6 +1,7 @@
               # pragma pylint: disable=missing-docstring, C0103
               # pragma pylint: disable=protected-access, too-many-lines, invalid-name, too-many-arguments
               
              +from freqtrade.exchange.exchange import Exchange
               import logging
               import time
               from copy import deepcopy
              @@ -4107,7 +4108,7 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order,
               def test_cancel_all_open_orders(mocker, default_conf, fee, limit_buy_order, limit_sell_order):
                   default_conf['cancel_open_orders_on_exit'] = True
                   mocker.patch('freqtrade.exchange.Exchange.fetch_order',
              -                 side_effect=[DependencyException(), limit_sell_order, limit_buy_order])
              +                 side_effect=[ExchangeError(), limit_sell_order, limit_buy_order])
                   buy_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_cancel_buy')
                   sell_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_cancel_sell')
               
              
              From 815d88fd4a4f2b133653df7fa75d6fa2c40c69ed Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Wed, 12 Aug 2020 15:32:56 +0200
              Subject: [PATCH 2898/3421] Fix test after merge, fix forgotten 'amount'
              
              ---
               freqtrade/freqtradebot.py | 2 +-
               freqtrade/persistence.py  | 2 +-
               2 files changed, 2 insertions(+), 2 deletions(-)
              
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index b4ef2b086..816d24e18 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -553,7 +553,7 @@ class FreqtradeBot:
                                              order['filled'], order['amount'], order['remaining']
                                              )
                               stake_amount = order['cost']
              -                amount = order['filled']
              +                amount = safe_value_fallback(order, 'filled', 'amount')
                               buy_limit_filled_price = safe_value_fallback(order, 'average', 'price')
                               order_id = None
               
              diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py
              index fdb816eab..28753ed48 100644
              --- a/freqtrade/persistence.py
              +++ b/freqtrade/persistence.py
              @@ -259,7 +259,7 @@ class Trade(_DECL_BASE):
                           'is_open': self.is_open,
                           'exchange': self.exchange,
                           'amount': round(self.amount, 8),
              -            'amount_requested': round(self.amount_requested, 8),
              +            'amount_requested': round(self.amount_requested, 8) if self.amount_requested else None,
                           'stake_amount': round(self.stake_amount, 8),
                           'strategy': self.strategy,
                           'ticker_interval': self.timeframe,  # DEPRECATED
              
              From 3afd5b631e39a85d3c0536979f8e529c6c82a917 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Wed, 12 Aug 2020 15:34:29 +0200
              Subject: [PATCH 2899/3421] Remove erroneous import
              
              ---
               tests/test_freqtradebot.py | 1 -
               1 file changed, 1 deletion(-)
              
              diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
              index 2c6d2314c..ec59ca5b0 100644
              --- a/tests/test_freqtradebot.py
              +++ b/tests/test_freqtradebot.py
              @@ -1,7 +1,6 @@
               # pragma pylint: disable=missing-docstring, C0103
               # pragma pylint: disable=protected-access, too-many-lines, invalid-name, too-many-arguments
               
              -from freqtrade.exchange.exchange import Exchange
               import logging
               import time
               from copy import deepcopy
              
              From 827c31d4bc4e7511acdf5d0f37313a1343251c8a Mon Sep 17 00:00:00 2001
              From: Blackhawke 
              Date: Wed, 12 Aug 2020 09:42:16 -0700
              Subject: [PATCH 2900/3421] Re-arranged the introduction to better explain the
               theory of operation and the limitations of Edge. Added paragraphs at the
               bottom of "running edge independently" to better explain Edge's order of
               operations processing and potential differences between historical output and
               live/dry-run operation.
              
              ---
               docs/edge.md | 14 ++++++++++----
               1 file changed, 10 insertions(+), 4 deletions(-)
              
              diff --git a/docs/edge.md b/docs/edge.md
              index c91e72a3a..ccbae1cb1 100644
              --- a/docs/edge.md
              +++ b/docs/edge.md
              @@ -2,11 +2,13 @@
               
               This page explains how to use Edge Positioning module in your bot in order to enter into a trade only if the trade has a reasonable win rate and risk reward ratio, and consequently adjust your position size and stoploss.
               
              -!!! Warning
              +  !!! Warning
                   Edge positioning is not compatible with dynamic (volume-based) whitelist.
               
              -!!! Note
              -    Edge does not consider anything else than buy/sell/stoploss signals. So trailing stoploss, ROI, and everything else are ignored in its calculation.
              +  !!! Note
              + 1. Edge does not consider anything other than *its own* buy/sell/stoploss signals. It ignores the stoploss, trailing stoploss, and ROI settings in the strategy configuration file.
              +
              + 2. Therefore, it is important to understand that Edge can improve the performance of some trading strategies but *decrease* the performance of others.
               
               ## Introduction
               
              @@ -89,7 +91,7 @@ You can also use this value to evaluate the effectiveness of modifications to th
               
               ## How does it work?
               
              -If enabled in config, Edge will go through historical data with a range of stoplosses in order to find buy and sell/stoploss signals. It then calculates win rate and expectancy over *N* trades for each stoploss. Here is an example:
              +Edge combines dynamic stoploss, dynamic positions, and whitelist generation into one isolated module which is then applied to the trading strategy. If enabled in config, Edge will go through historical data with a range of stoplosses in order to find buy and sell/stoploss signals. It then calculates win rate and expectancy over *N* trades for each stoploss. Here is an example:
               
               | Pair   |      Stoploss      |  Win Rate | Risk Reward Ratio | Expectancy |
               |----------|:-------------:|-------------:|------------------:|-----------:|
              @@ -186,6 +188,10 @@ An example of its output:
               | APPC/BTC  |      -0.02 |       0.44 |                2.28 |                   1.27 |         0.44 |                       25 |                       43 |
               | NEBL/BTC  |      -0.03 |       0.63 |                1.29 |                   0.58 |         0.44 |                       19 |                       59 |
               
              +Edge produced the above table by comparing ``calculate_since_number_of_days`` to ``minimum_expectancy`` to find ``min_trade_number``. Historical information based on the config file. The time frame Edge uses for its comparisons can be further limited by using the ``--timeframe`` switch.
              +
              +In live and dry-run modes, after the ``process_throttle_secs`` has passed, Edge will again process ``calculate_since_number_of_days`` against ``minimum_expectancy`` to find ``min_trade_number``. If no ``min_trade_number`` is found, the bot will return "whitelist empty". Depending on the trade strategy being deployed, "whitelist empty" may be return much of the time---or *all* of the time. The use of Edge may also cause trading to occur in bursts, though this is rare.
              +
               ### Update cached pairs with the latest data
               
               Edge requires historic data the same way as backtesting does.
              
              From 1dabade883f13dcdff990b6069fe9d8a1aab498c Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 08:02:36 +0200
              Subject: [PATCH 2901/3421] small rewording of FAQ documentation
              
              ---
               docs/faq.md | 24 +++++++++++++++---------
               1 file changed, 15 insertions(+), 9 deletions(-)
              
              diff --git a/docs/faq.md b/docs/faq.md
              index cc43e326d..514b01085 100644
              --- a/docs/faq.md
              +++ b/docs/faq.md
              @@ -19,11 +19,11 @@ This could have the following reasons:
               
               ### I have waited 5 minutes, why hasn't the bot made any trades yet?!
               
              -#1 Depending on the buy strategy, the amount of whitelisted coins, the
              +* Depending on the buy strategy, the amount of whitelisted coins, the
               situation of the market etc, it can take up to hours to find good entry
               position for a trade. Be patient!
               
              -#2 Or it may because you made an human error? Like writing --dry-run when you wanted to trade live?. Maybe an error with the exchange API? Or something else. You will have to do the hard work of finding out the root cause of the problem :) 
              +* Or it may because of a configuration error? Best check the logs, it's usually telling you if the bot is simply not getting buy signals (only heartbeat messages), or if there is something wrong (errors / exceptions in the log).
               
               ### I have made 12 trades already, why is my total profit negative?!
               
              @@ -135,7 +135,9 @@ to find a great result (unless if you are very lucky), so you probably
               have to run it for 10.000 or more. But it will take an eternity to
               compute.
               
              -We recommend you to run between 500-1000 epochs over and over untill you hit at least 10.000 epocs in total. You can best judge by looking at the results - if the bot keep discovering more profitable strategies or not. 
              +Since hyperopt uses Bayesian search, running for too many epochs may not produce greater results.
              +
              +It's therefore recommended to run between 500-1000 epochs over and over until you hit at least 10.000 epocs in total (or are satisfied with the result). You can best judge by looking at the results - if the bot keeps discovering better strategies, it's best to keep on going. 
               
               ```bash
               freqtrade hyperopt -e 1000
              @@ -147,11 +149,11 @@ or if you want intermediate result to see
               for i in {1..100}; do freqtrade hyperopt -e 1000; done
               ```
               
              -### Why does it take so long time to run hyperopt?
              +### Why does it take a long time to run hyperopt?
               
              -#1 Discovering a great strategy with Hyperopt takes time. Study www.freqtrade.io, the Freqtrade Github page, join the Freqtrade Discord - or something totally else. While you patiently wait for the most advanced, public known, crypto bot, in the world, to hand you a possible golden strategy specially designed just for you =) 
              +* Discovering a great strategy with Hyperopt takes time. Study www.freqtrade.io, the Freqtrade Documentation page, join the Freqtrade [Slack community](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) - or the Freqtrade [discord community](https://discord.gg/X89cVG). While you patiently wait for the most advanced, free crypto bot in the world, to hand you a possible golden strategy specially designed just for you.
               
              -#2 If you wonder why it can take from 20 minutes to days to do 1000 epocs here are some answers:
              +* If you wonder why it can take from 20 minutes to days to do 1000 epocs here are some answers:
               
               This answer was written during the release 0.15.1, when we had:
               
              @@ -163,10 +165,14 @@ The following calculation is still very rough and not very precise
               but it will give the idea. With only these triggers and guards there is
               already 8\*10^9\*10 evaluations. A roughly total of 80 billion evals.
               Did you run 100 000 evals? Congrats, you've done roughly 1 / 100 000 th
              -of the search space. If we assume that the bot never test the same strategy more than once.
              +of the search space, assuming that the bot never tests the same parameters more than once.
               
              -#3 The time it takes to run 1000 hyperopt epocs depends on things like: The cpu, harddisk, ram, motherboard, indicator settings, indicator count, amount of coins that hyperopt test strategies on, trade count - can be 650 trades in a year or 10.0000 trades depending on if the strategy aims for a high profit rarely or a low profit many many many times. Example: 4% profit 650 times vs 0,3% profit a trade 10.000 times in a year. If we assume you set the --timerange to 365 days. 
              -Example: freqtrade --config config_mcd_1.json --strategy mcd_1 --hyperopt mcd_hyperopt_1 -e 1000 --timerange 20190601-20200601 
              +* The time it takes to run 1000 hyperopt epocs depends on things like: The available cpu, harddisk, ram, timeframe, timerange, indicator settings, indicator count, amount of coins that hyperopt test strategies on and the resulting trade count - which can be 650 trades in a year or 10.0000 trades depending if the strategy aims for big profits by trading rarely or for many low profit trades. 
              +
              +Example: 4% profit 650 times vs 0,3% profit a trade 10.000 times in a year. If we assume you set the --timerange to 365 days. 
              +
              +Example: 
              +`freqtrade --config config.json --strategy SampleStrategy --hyperopt SampleHyperopt -e 1000 --timerange 20190601-20200601`
               
               ## Edge module
               
              
              From e45e41adb457d90db1b4c281275779f44f9d6157 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 08:05:05 +0200
              Subject: [PATCH 2902/3421] Improve docs test to catch !!! errors
              
              ---
               tests/test_docs.sh | 3 ++-
               1 file changed, 2 insertions(+), 1 deletion(-)
              
              diff --git a/tests/test_docs.sh b/tests/test_docs.sh
              index 09e142b99..8a354daad 100755
              --- a/tests/test_docs.sh
              +++ b/tests/test_docs.sh
              @@ -2,7 +2,8 @@
               # Test Documentation boxes -
               # !!! : is not allowed!
               # !!!  "title" - Title needs to be quoted!
              -grep -Er '^!{3}\s\S+:|^!{3}\s\S+\s[^"]' docs/*
              +# !!!  Spaces at the beginning are not allowed
              +grep -Er '^!{3}\s\S+:|^!{3}\s\S+\s[^"]|^\s+!{3}\s\S+' docs/*
               
               if  [ $? -ne 0 ]; then
                   echo "Docs test success."
              
              From 6b85b1a34d65a42a6e24347d9137a6b4f604aef9 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 08:06:57 +0200
              Subject: [PATCH 2903/3421] Don't only recommend pycharm, but keep it open to
               other editors too.
              
              ---
               docs/faq.md | 2 +-
               1 file changed, 1 insertion(+), 1 deletion(-)
              
              diff --git a/docs/faq.md b/docs/faq.md
              index 514b01085..48f52a566 100644
              --- a/docs/faq.md
              +++ b/docs/faq.md
              @@ -2,7 +2,7 @@
               
               ## Beginner Tips & Tricks
               
              -#1 When you work with your strategy & hyperopt file you should use a real programmer software like Pycharm. If you by accident moved some code and freqtrade says error and you cant find the place where you moved something, or you cant find line 180 where you messed something up. Then a program like Pycharm shows you where line 180 is in your strategy file so you can fix the problem, or Pycharm shows you with some color marking that "here is a line of code that does not belong here" and you found your error in no time! This will save you many hours of problemsolving when working with the bot. Pycharm also got a usefull "Debug" feature that can tell you exactly what command on that line is making the error :) 
              +* When you work with your strategy & hyperopt file you should use a proper code editor like vscode or Pycharm. A good code editor will provide syntax highlighting as well as line numbers, making it easy to find syntax errors (most likely, pointed out by Freqtrade during startup).
               
               ## Freqtrade common issues
               
              
              From 4109b31dac08b607603590c798b41fad745f6bdf Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 06:46:34 +0200
              Subject: [PATCH 2904/3421] Update wording in documentation
              
              ---
               docs/developer.md | 2 +-
               1 file changed, 1 insertion(+), 1 deletion(-)
              
              diff --git a/docs/developer.md b/docs/developer.md
              index ce454cec2..f09ae2c76 100644
              --- a/docs/developer.md
              +++ b/docs/developer.md
              @@ -88,7 +88,7 @@ docker-compose exec freqtrade_develop /bin/bash
               ## ErrorHandling
               
               Freqtrade Exceptions all inherit from `FreqtradeException`.
              -This general class of error should however not be used directly, instead, multiple specialized sub-Exceptions exist.
              +This general class of error should however not be used directly. Instead, multiple specialized sub-Exceptions exist.
               
               Below is an outline of exception inheritance hierarchy:
               
              
              From d76ee432461a438126439b01e69d00eea3a045fc Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 07:12:57 +0200
              Subject: [PATCH 2905/3421] Show wins / draws / losses in hyperopt table
              
              ---
               freqtrade/optimize/hyperopt.py  | 17 +++++++++++++----
               tests/optimize/test_hyperopt.py |  1 +
               2 files changed, 14 insertions(+), 4 deletions(-)
              
              diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py
              index 522b217f7..fbd523904 100644
              --- a/freqtrade/optimize/hyperopt.py
              +++ b/freqtrade/optimize/hyperopt.py
              @@ -312,11 +312,16 @@ class Hyperopt:
               
                       trials = json_normalize(results, max_level=1)
                       trials['Best'] = ''
              +        if 'results_metrics.winsdrawslosses' not in trials.columns:
              +            # Ensure compatibility with older versions of hyperopt results
              +            trials['results_metrics.winsdrawslosses'] = 'N/A'
              +
                       trials = trials[['Best', 'current_epoch', 'results_metrics.trade_count',
              +                         'results_metrics.winsdrawslosses',
                                        'results_metrics.avg_profit', 'results_metrics.total_profit',
                                        'results_metrics.profit', 'results_metrics.duration',
                                        'loss', 'is_initial_point', 'is_best']]
              -        trials.columns = ['Best', 'Epoch', 'Trades', 'Avg profit', 'Total profit',
              +        trials.columns = ['Best', 'Epoch', 'Trades', 'W/D/L', 'Avg profit', 'Total profit',
                                         'Profit', 'Avg duration', 'Objective', 'is_initial_point', 'is_best']
                       trials['is_profit'] = False
                       trials.loc[trials['is_initial_point'], 'Best'] = '*     '
              @@ -558,11 +563,15 @@ class Hyperopt:
                       }
               
                   def _calculate_results_metrics(self, backtesting_results: DataFrame) -> Dict:
              +        wins = len(backtesting_results[backtesting_results.profit_percent > 0])
              +        draws = len(backtesting_results[backtesting_results.profit_percent == 0])
              +        losses = len(backtesting_results[backtesting_results.profit_percent < 0])
                       return {
                           'trade_count': len(backtesting_results.index),
              -            'wins': len(backtesting_results[backtesting_results.profit_percent > 0]),
              -            'draws': len(backtesting_results[backtesting_results.profit_percent == 0]),
              -            'losses': len(backtesting_results[backtesting_results.profit_percent < 0]),
              +            'wins': wins,
              +            'draws': draws,
              +            'losses': losses,
              +            'winsdrawslosses': f"{wins}/{draws}/{losses}",
                           'avg_profit': backtesting_results.profit_percent.mean() * 100.0,
                           'median_profit': backtesting_results.profit_percent.median() * 100.0,
                           'total_profit': backtesting_results.profit_abs.sum(),
              diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
              index 4b178ca11..bd86e315f 100644
              --- a/tests/optimize/test_hyperopt.py
              +++ b/tests/optimize/test_hyperopt.py
              @@ -781,6 +781,7 @@ def test_generate_optimizer(mocker, default_conf) -> None:
                                           'draws': 0,
                                           'duration': 100.0,
                                           'losses': 0,
              +                            'winsdrawslosses': '1/0/0',
                                           'median_profit': 2.3117,
                                           'profit': 2.3117,
                                           'total_profit': 0.000233,
              
              From b98107375edc44ff6d90bfb67c038d839a5f0d47 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 07:31:14 +0200
              Subject: [PATCH 2906/3421] Improve formatting of result string to be a bit
               conciser
              
              ---
               freqtrade/optimize/hyperopt.py  | 5 ++---
               tests/optimize/test_hyperopt.py | 2 +-
               2 files changed, 3 insertions(+), 4 deletions(-)
              
              diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py
              index fbd523904..6d11e543b 100644
              --- a/freqtrade/optimize/hyperopt.py
              +++ b/freqtrade/optimize/hyperopt.py
              @@ -585,9 +585,8 @@ class Hyperopt:
                       """
                       stake_cur = self.config['stake_currency']
                       return (f"{results_metrics['trade_count']:6d} trades. "
              -                f"{results_metrics['wins']:6d} wins. "
              -                f"{results_metrics['draws']:6d} draws. "
              -                f"{results_metrics['losses']:6d} losses. "
              +                f"{results_metrics['wins']}/{results_metrics['draws']}"
              +                f"/{results_metrics['losses']} Wins/Draws/Losses. "
                               f"Avg profit {results_metrics['avg_profit']: 6.2f}%. "
                               f"Median profit {results_metrics['median_profit']: 6.2f}%. "
                               f"Total profit {results_metrics['total_profit']: 11.8f} {stake_cur} "
              diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py
              index bd86e315f..a6541f55b 100644
              --- a/tests/optimize/test_hyperopt.py
              +++ b/tests/optimize/test_hyperopt.py
              @@ -744,7 +744,7 @@ def test_generate_optimizer(mocker, default_conf) -> None:
                   }
                   response_expected = {
                       'loss': 1.9840569076926293,
              -        'results_explanation': ('     1 trades.      1 wins.      0 draws.      0 losses. '
              +        'results_explanation': ('     1 trades. 1/0/0 Wins/Draws/Losses. '
                                               'Avg profit   2.31%. Median profit   2.31%. Total profit  '
                                               '0.00023300 BTC (   2.31\N{GREEK CAPITAL LETTER SIGMA}%). '
                                               'Avg duration 100.0 min.'
              
              From 044df880e68d513d5e3baf2d451e656631e9194d Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 08:28:46 +0200
              Subject: [PATCH 2907/3421] Move persistence into it's own submodule
              
              ---
               freqtrade/persistence/__init__.py                   |  3 +++
               freqtrade/{persistence.py => persistence/models.py} |  0
               tests/test_persistence.py                           | 12 ++++++------
               3 files changed, 9 insertions(+), 6 deletions(-)
               create mode 100644 freqtrade/persistence/__init__.py
               rename freqtrade/{persistence.py => persistence/models.py} (100%)
              
              diff --git a/freqtrade/persistence/__init__.py b/freqtrade/persistence/__init__.py
              new file mode 100644
              index 000000000..0973fab3f
              --- /dev/null
              +++ b/freqtrade/persistence/__init__.py
              @@ -0,0 +1,3 @@
              +# flake8: noqa: F401
              +
              +from freqtrade.persistence.models import Trade, clean_dry_run_db, cleanup, init
              diff --git a/freqtrade/persistence.py b/freqtrade/persistence/models.py
              similarity index 100%
              rename from freqtrade/persistence.py
              rename to freqtrade/persistence/models.py
              diff --git a/tests/test_persistence.py b/tests/test_persistence.py
              index 65c83e05b..dbb62e636 100644
              --- a/tests/test_persistence.py
              +++ b/tests/test_persistence.py
              @@ -22,7 +22,7 @@ def test_init_create_session(default_conf):
               def test_init_custom_db_url(default_conf, mocker):
                   # Update path to a value other than default, but still in-memory
                   default_conf.update({'db_url': 'sqlite:///tmp/freqtrade2_test.sqlite'})
              -    create_engine_mock = mocker.patch('freqtrade.persistence.create_engine', MagicMock())
              +    create_engine_mock = mocker.patch('freqtrade.persistence.models.create_engine', MagicMock())
               
                   init(default_conf['db_url'], default_conf['dry_run'])
                   assert create_engine_mock.call_count == 1
              @@ -40,7 +40,7 @@ def test_init_prod_db(default_conf, mocker):
                   default_conf.update({'dry_run': False})
                   default_conf.update({'db_url': constants.DEFAULT_DB_PROD_URL})
               
              -    create_engine_mock = mocker.patch('freqtrade.persistence.create_engine', MagicMock())
              +    create_engine_mock = mocker.patch('freqtrade.persistence.models.create_engine', MagicMock())
               
                   init(default_conf['db_url'], default_conf['dry_run'])
                   assert create_engine_mock.call_count == 1
              @@ -51,7 +51,7 @@ def test_init_dryrun_db(default_conf, mocker):
                   default_conf.update({'dry_run': True})
                   default_conf.update({'db_url': constants.DEFAULT_DB_DRYRUN_URL})
               
              -    create_engine_mock = mocker.patch('freqtrade.persistence.create_engine', MagicMock())
              +    create_engine_mock = mocker.patch('freqtrade.persistence.models.create_engine', MagicMock())
               
                   init(default_conf['db_url'], default_conf['dry_run'])
                   assert create_engine_mock.call_count == 1
              @@ -440,7 +440,7 @@ def test_migrate_old(mocker, default_conf, fee):
                                                    amount=amount
                                                    )
                   engine = create_engine('sqlite://')
              -    mocker.patch('freqtrade.persistence.create_engine', lambda *args, **kwargs: engine)
              +    mocker.patch('freqtrade.persistence.models.create_engine', lambda *args, **kwargs: engine)
               
                   # Create table using the old format
                   engine.execute(create_table_old)
              @@ -524,7 +524,7 @@ def test_migrate_new(mocker, default_conf, fee, caplog):
                                                    amount=amount
                                                    )
                   engine = create_engine('sqlite://')
              -    mocker.patch('freqtrade.persistence.create_engine', lambda *args, **kwargs: engine)
              +    mocker.patch('freqtrade.persistence.models.create_engine', lambda *args, **kwargs: engine)
               
                   # Create table using the old format
                   engine.execute(create_table_old)
              @@ -601,7 +601,7 @@ def test_migrate_mid_state(mocker, default_conf, fee, caplog):
                                                    amount=amount
                                                    )
                   engine = create_engine('sqlite://')
              -    mocker.patch('freqtrade.persistence.create_engine', lambda *args, **kwargs: engine)
              +    mocker.patch('freqtrade.persistence.models.create_engine', lambda *args, **kwargs: engine)
               
                   # Create table using the old format
                   engine.execute(create_table_old)
              
              From 7d03a067ee107a7f2cd3dc48653a61b82e1988da Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 08:33:46 +0200
              Subject: [PATCH 2908/3421] Extract migrations ot seperate module
              
              ---
               freqtrade/persistence/migrations.py | 113 ++++++++++++++++++++++++++++
               freqtrade/persistence/models.py     | 112 +--------------------------
               2 files changed, 116 insertions(+), 109 deletions(-)
               create mode 100644 freqtrade/persistence/migrations.py
              
              diff --git a/freqtrade/persistence/migrations.py b/freqtrade/persistence/migrations.py
              new file mode 100644
              index 000000000..bd7dd103f
              --- /dev/null
              +++ b/freqtrade/persistence/migrations.py
              @@ -0,0 +1,113 @@
              +import logging
              +from typing import List
              +
              +from sqlalchemy import inspect
              +
              +logger = logging.getLogger(__name__)
              +
              +
              +def has_column(columns: List, searchname: str) -> bool:
              +    return len(list(filter(lambda x: x["name"] == searchname, columns))) == 1
              +
              +
              +def get_column_def(columns: List, column: str, default: str) -> str:
              +    return default if not has_column(columns, column) else column
              +
              +
              +def check_migrate(engine, decl_base) -> None:
              +    """
              +    Checks if migration is necessary and migrates if necessary
              +    """
              +    inspector = inspect(engine)
              +
              +    cols = inspector.get_columns('trades')
              +    tabs = inspector.get_table_names()
              +    table_back_name = 'trades_bak'
              +    for i, table_back_name in enumerate(tabs):
              +        table_back_name = f'trades_bak{i}'
              +        logger.debug(f'trying {table_back_name}')
              +
              +    # Check for latest column
              +    if not has_column(cols, 'amount_requested'):
              +        logger.info(f'Running database migration - backup available as {table_back_name}')
              +
              +        fee_open = get_column_def(cols, 'fee_open', 'fee')
              +        fee_open_cost = get_column_def(cols, 'fee_open_cost', 'null')
              +        fee_open_currency = get_column_def(cols, 'fee_open_currency', 'null')
              +        fee_close = get_column_def(cols, 'fee_close', 'fee')
              +        fee_close_cost = get_column_def(cols, 'fee_close_cost', 'null')
              +        fee_close_currency = get_column_def(cols, 'fee_close_currency', 'null')
              +        open_rate_requested = get_column_def(cols, 'open_rate_requested', 'null')
              +        close_rate_requested = get_column_def(cols, 'close_rate_requested', 'null')
              +        stop_loss = get_column_def(cols, 'stop_loss', '0.0')
              +        stop_loss_pct = get_column_def(cols, 'stop_loss_pct', 'null')
              +        initial_stop_loss = get_column_def(cols, 'initial_stop_loss', '0.0')
              +        initial_stop_loss_pct = get_column_def(cols, 'initial_stop_loss_pct', 'null')
              +        stoploss_order_id = get_column_def(cols, 'stoploss_order_id', 'null')
              +        stoploss_last_update = get_column_def(cols, 'stoploss_last_update', 'null')
              +        max_rate = get_column_def(cols, 'max_rate', '0.0')
              +        min_rate = get_column_def(cols, 'min_rate', 'null')
              +        sell_reason = get_column_def(cols, 'sell_reason', 'null')
              +        strategy = get_column_def(cols, 'strategy', 'null')
              +        # If ticker-interval existed use that, else null.
              +        if has_column(cols, 'ticker_interval'):
              +            timeframe = get_column_def(cols, 'timeframe', 'ticker_interval')
              +        else:
              +            timeframe = get_column_def(cols, 'timeframe', 'null')
              +
              +        open_trade_price = get_column_def(cols, 'open_trade_price',
              +                                          f'amount * open_rate * (1 + {fee_open})')
              +        close_profit_abs = get_column_def(
              +            cols, 'close_profit_abs',
              +            f"(amount * close_rate * (1 - {fee_close})) - {open_trade_price}")
              +        sell_order_status = get_column_def(cols, 'sell_order_status', 'null')
              +        amount_requested = get_column_def(cols, 'amount_requested', 'amount')
              +
              +        # Schema migration necessary
              +        engine.execute(f"alter table trades rename to {table_back_name}")
              +        # drop indexes on backup table
              +        for index in inspector.get_indexes(table_back_name):
              +            engine.execute(f"drop index {index['name']}")
              +        # let SQLAlchemy create the schema as required
              +        decl_base.metadata.create_all(engine)
              +
              +        # Copy data back - following the correct schema
              +        engine.execute(f"""insert into trades
              +                (id, exchange, pair, is_open,
              +                fee_open, fee_open_cost, fee_open_currency,
              +                fee_close, fee_close_cost, fee_open_currency, open_rate,
              +                open_rate_requested, close_rate, close_rate_requested, close_profit,
              +                stake_amount, amount, amount_requested, open_date, close_date, open_order_id,
              +                stop_loss, stop_loss_pct, initial_stop_loss, initial_stop_loss_pct,
              +                stoploss_order_id, stoploss_last_update,
              +                max_rate, min_rate, sell_reason, sell_order_status, strategy,
              +                timeframe, open_trade_price, close_profit_abs
              +                )
              +            select id, lower(exchange),
              +                case
              +                    when instr(pair, '_') != 0 then
              +                    substr(pair,    instr(pair, '_') + 1) || '/' ||
              +                    substr(pair, 1, instr(pair, '_') - 1)
              +                    else pair
              +                    end
              +                pair,
              +                is_open, {fee_open} fee_open, {fee_open_cost} fee_open_cost,
              +                {fee_open_currency} fee_open_currency, {fee_close} fee_close,
              +                {fee_close_cost} fee_close_cost, {fee_close_currency} fee_close_currency,
              +                open_rate, {open_rate_requested} open_rate_requested, close_rate,
              +                {close_rate_requested} close_rate_requested, close_profit,
              +                stake_amount, amount, {amount_requested}, open_date, close_date, open_order_id,
              +                {stop_loss} stop_loss, {stop_loss_pct} stop_loss_pct,
              +                {initial_stop_loss} initial_stop_loss,
              +                {initial_stop_loss_pct} initial_stop_loss_pct,
              +                {stoploss_order_id} stoploss_order_id, {stoploss_last_update} stoploss_last_update,
              +                {max_rate} max_rate, {min_rate} min_rate, {sell_reason} sell_reason,
              +                {sell_order_status} sell_order_status,
              +                {strategy} strategy, {timeframe} timeframe,
              +                {open_trade_price} open_trade_price, {close_profit_abs} close_profit_abs
              +                from {table_back_name}
              +             """)
              +
              +        # Reread columns - the above recreated the table!
              +        inspector = inspect(engine)
              +        cols = inspector.get_columns('trades')
              diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
              index 28753ed48..f56ff47fe 100644
              --- a/freqtrade/persistence/models.py
              +++ b/freqtrade/persistence/models.py
              @@ -8,7 +8,7 @@ from typing import Any, Dict, List, Optional
               
               import arrow
               from sqlalchemy import (Boolean, Column, DateTime, Float, Integer, String,
              -                        create_engine, desc, func, inspect)
              +                        create_engine, desc, func)
               from sqlalchemy.exc import NoSuchModuleError
               from sqlalchemy.ext.declarative import declarative_base
               from sqlalchemy.orm import Query
              @@ -18,6 +18,7 @@ from sqlalchemy.pool import StaticPool
               
               from freqtrade.exceptions import OperationalException
               from freqtrade.misc import safe_value_fallback
              +from freqtrade.persistence.migrations import check_migrate
               
               logger = logging.getLogger(__name__)
               
              @@ -58,120 +59,13 @@ def init(db_url: str, clean_open_orders: bool = False) -> None:
                   Trade.session = scoped_session(sessionmaker(bind=engine, autoflush=True, autocommit=True))
                   Trade.query = Trade.session.query_property()
                   _DECL_BASE.metadata.create_all(engine)
              -    check_migrate(engine)
              +    check_migrate(engine, decl_base=_DECL_BASE)
               
                   # Clean dry_run DB if the db is not in-memory
                   if clean_open_orders and db_url != 'sqlite://':
                       clean_dry_run_db()
               
               
              -def has_column(columns: List, searchname: str) -> bool:
              -    return len(list(filter(lambda x: x["name"] == searchname, columns))) == 1
              -
              -
              -def get_column_def(columns: List, column: str, default: str) -> str:
              -    return default if not has_column(columns, column) else column
              -
              -
              -def check_migrate(engine) -> None:
              -    """
              -    Checks if migration is necessary and migrates if necessary
              -    """
              -    inspector = inspect(engine)
              -
              -    cols = inspector.get_columns('trades')
              -    tabs = inspector.get_table_names()
              -    table_back_name = 'trades_bak'
              -    for i, table_back_name in enumerate(tabs):
              -        table_back_name = f'trades_bak{i}'
              -        logger.debug(f'trying {table_back_name}')
              -
              -    # Check for latest column
              -    if not has_column(cols, 'amount_requested'):
              -        logger.info(f'Running database migration - backup available as {table_back_name}')
              -
              -        fee_open = get_column_def(cols, 'fee_open', 'fee')
              -        fee_open_cost = get_column_def(cols, 'fee_open_cost', 'null')
              -        fee_open_currency = get_column_def(cols, 'fee_open_currency', 'null')
              -        fee_close = get_column_def(cols, 'fee_close', 'fee')
              -        fee_close_cost = get_column_def(cols, 'fee_close_cost', 'null')
              -        fee_close_currency = get_column_def(cols, 'fee_close_currency', 'null')
              -        open_rate_requested = get_column_def(cols, 'open_rate_requested', 'null')
              -        close_rate_requested = get_column_def(cols, 'close_rate_requested', 'null')
              -        stop_loss = get_column_def(cols, 'stop_loss', '0.0')
              -        stop_loss_pct = get_column_def(cols, 'stop_loss_pct', 'null')
              -        initial_stop_loss = get_column_def(cols, 'initial_stop_loss', '0.0')
              -        initial_stop_loss_pct = get_column_def(cols, 'initial_stop_loss_pct', 'null')
              -        stoploss_order_id = get_column_def(cols, 'stoploss_order_id', 'null')
              -        stoploss_last_update = get_column_def(cols, 'stoploss_last_update', 'null')
              -        max_rate = get_column_def(cols, 'max_rate', '0.0')
              -        min_rate = get_column_def(cols, 'min_rate', 'null')
              -        sell_reason = get_column_def(cols, 'sell_reason', 'null')
              -        strategy = get_column_def(cols, 'strategy', 'null')
              -        # If ticker-interval existed use that, else null.
              -        if has_column(cols, 'ticker_interval'):
              -            timeframe = get_column_def(cols, 'timeframe', 'ticker_interval')
              -        else:
              -            timeframe = get_column_def(cols, 'timeframe', 'null')
              -
              -        open_trade_price = get_column_def(cols, 'open_trade_price',
              -                                          f'amount * open_rate * (1 + {fee_open})')
              -        close_profit_abs = get_column_def(
              -            cols, 'close_profit_abs',
              -            f"(amount * close_rate * (1 - {fee_close})) - {open_trade_price}")
              -        sell_order_status = get_column_def(cols, 'sell_order_status', 'null')
              -        amount_requested = get_column_def(cols, 'amount_requested', 'amount')
              -
              -        # Schema migration necessary
              -        engine.execute(f"alter table trades rename to {table_back_name}")
              -        # drop indexes on backup table
              -        for index in inspector.get_indexes(table_back_name):
              -            engine.execute(f"drop index {index['name']}")
              -        # let SQLAlchemy create the schema as required
              -        _DECL_BASE.metadata.create_all(engine)
              -
              -        # Copy data back - following the correct schema
              -        engine.execute(f"""insert into trades
              -                (id, exchange, pair, is_open,
              -                fee_open, fee_open_cost, fee_open_currency,
              -                fee_close, fee_close_cost, fee_open_currency, open_rate,
              -                open_rate_requested, close_rate, close_rate_requested, close_profit,
              -                stake_amount, amount, amount_requested, open_date, close_date, open_order_id,
              -                stop_loss, stop_loss_pct, initial_stop_loss, initial_stop_loss_pct,
              -                stoploss_order_id, stoploss_last_update,
              -                max_rate, min_rate, sell_reason, sell_order_status, strategy,
              -                timeframe, open_trade_price, close_profit_abs
              -                )
              -            select id, lower(exchange),
              -                case
              -                    when instr(pair, '_') != 0 then
              -                    substr(pair,    instr(pair, '_') + 1) || '/' ||
              -                    substr(pair, 1, instr(pair, '_') - 1)
              -                    else pair
              -                    end
              -                pair,
              -                is_open, {fee_open} fee_open, {fee_open_cost} fee_open_cost,
              -                {fee_open_currency} fee_open_currency, {fee_close} fee_close,
              -                {fee_close_cost} fee_close_cost, {fee_close_currency} fee_close_currency,
              -                open_rate, {open_rate_requested} open_rate_requested, close_rate,
              -                {close_rate_requested} close_rate_requested, close_profit,
              -                stake_amount, amount, {amount_requested}, open_date, close_date, open_order_id,
              -                {stop_loss} stop_loss, {stop_loss_pct} stop_loss_pct,
              -                {initial_stop_loss} initial_stop_loss,
              -                {initial_stop_loss_pct} initial_stop_loss_pct,
              -                {stoploss_order_id} stoploss_order_id, {stoploss_last_update} stoploss_last_update,
              -                {max_rate} max_rate, {min_rate} min_rate, {sell_reason} sell_reason,
              -                {sell_order_status} sell_order_status,
              -                {strategy} strategy, {timeframe} timeframe,
              -                {open_trade_price} open_trade_price, {close_profit_abs} close_profit_abs
              -                from {table_back_name}
              -             """)
              -
              -        # Reread columns - the above recreated the table!
              -        inspector = inspect(engine)
              -        cols = inspector.get_columns('trades')
              -
              -
               def cleanup() -> None:
                   """
                   Flushes all pending operations to disk.
              
              From 171a52b21a076f6c20e21408b891258e40738bd6 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 09:34:53 +0200
              Subject: [PATCH 2909/3421] Introduce Order database model
              
              ---
               freqtrade/exchange/exchange.py    |  1 +
               freqtrade/freqtradebot.py         | 12 +++++-
               freqtrade/persistence/__init__.py |  3 +-
               freqtrade/persistence/models.py   | 64 +++++++++++++++++++++++++++++--
               4 files changed, 74 insertions(+), 6 deletions(-)
              
              diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
              index d32f79a3f..34d57ae4d 100644
              --- a/freqtrade/exchange/exchange.py
              +++ b/freqtrade/exchange/exchange.py
              @@ -487,6 +487,7 @@ class Exchange:
                           'side': side,
                           'remaining': _amount,
                           'datetime': arrow.utcnow().isoformat(),
              +            'timestamp': arrow.utcnow().timestamp,
                           'status': "closed" if ordertype == "market" else "open",
                           'fee': None,
                           'info': {}
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index 2a95f58fc..ff282aa77 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -22,7 +22,7 @@ from freqtrade.exceptions import (DependencyException, ExchangeError,
               from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date
               from freqtrade.misc import safe_value_fallback, safe_value_fallback2
               from freqtrade.pairlist.pairlistmanager import PairListManager
              -from freqtrade.persistence import Trade
              +from freqtrade.persistence import Order, Trade
               from freqtrade.resolvers import ExchangeResolver, StrategyResolver
               from freqtrade.rpc import RPCManager, RPCMessageType
               from freqtrade.state import State
              @@ -527,6 +527,7 @@ class FreqtradeBot:
                       order = self.exchange.buy(pair=pair, ordertype=order_type,
                                                 amount=amount, rate=buy_limit_requested,
                                                 time_in_force=time_in_force)
              +        order_obj = Order.parse_from_ccxt_object(order, pair)
                       order_id = order['id']
                       order_status = order.get('status', None)
               
              @@ -580,6 +581,7 @@ class FreqtradeBot:
                           strategy=self.strategy.get_strategy_name(),
                           timeframe=timeframe_to_minutes(self.config['timeframe'])
                       )
              +        trade.orders.append(order_obj)
               
                       # Update fees if order is closed
                       if order_status == 'closed':
              @@ -781,6 +783,9 @@ class FreqtradeBot:
                           stoploss_order = self.exchange.stoploss(pair=trade.pair, amount=trade.amount,
                                                                   stop_price=stop_price,
                                                                   order_types=self.strategy.order_types)
              +
              +            order_obj = Order.parse_from_ccxt_object(stoploss_order, trade.pair)
              +            trade.orders.append(order_obj)
                           trade.stoploss_order_id = str(stoploss_order['id'])
                           return True
                       except InvalidOrderException as e:
              @@ -1123,12 +1128,15 @@ class FreqtradeBot:
                           return False
               
                       # Execute sell and update trade record
              -        order = self.exchange.sell(pair=str(trade.pair),
              +        order = self.exchange.sell(pair=trade.pair,
                                                  ordertype=order_type,
                                                  amount=amount, rate=limit,
                                                  time_in_force=time_in_force
                                                  )
               
              +        order_obj = Order.parse_from_ccxt_object(order, trade.pair)
              +        trade.orders.append(order_obj)
              +
                       trade.open_order_id = order['id']
                       trade.close_rate_requested = limit
                       trade.sell_reason = sell_reason.value
              diff --git a/freqtrade/persistence/__init__.py b/freqtrade/persistence/__init__.py
              index 0973fab3f..764856f2b 100644
              --- a/freqtrade/persistence/__init__.py
              +++ b/freqtrade/persistence/__init__.py
              @@ -1,3 +1,4 @@
               # flake8: noqa: F401
               
              -from freqtrade.persistence.models import Trade, clean_dry_run_db, cleanup, init
              +from freqtrade.persistence.models import (Order, Trade, clean_dry_run_db,
              +                                          cleanup, init)
              diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
              index f56ff47fe..3b77438ea 100644
              --- a/freqtrade/persistence/models.py
              +++ b/freqtrade/persistence/models.py
              @@ -7,11 +7,11 @@ from decimal import Decimal
               from typing import Any, Dict, List, Optional
               
               import arrow
              -from sqlalchemy import (Boolean, Column, DateTime, Float, Integer, String,
              +from sqlalchemy import (Boolean, Column, DateTime, Float, Integer, String, ForeignKey,
                                       create_engine, desc, func)
               from sqlalchemy.exc import NoSuchModuleError
               from sqlalchemy.ext.declarative import declarative_base
              -from sqlalchemy.orm import Query
              +from sqlalchemy.orm import Query, relationship
               from sqlalchemy.orm.scoping import scoped_session
               from sqlalchemy.orm.session import sessionmaker
               from sqlalchemy.pool import StaticPool
              @@ -85,13 +85,71 @@ def clean_dry_run_db() -> None:
                           trade.open_order_id = None
               
               
              +class Order(_DECL_BASE):
              +    """
              +    Order database model
              +    Keeps a record of all orders placed on the exchange
              +
              +    One to many relationship with Trades:
              +      - One trade can have many orders
              +      - One Order can only be associated with one Trade
              +
              +    Mirrors CCXT Order structure
              +    """
              +    __tablename__ = 'orders'
              +
              +    id = Column(Integer, primary_key=True)
              +    trade_id = Column(Integer, ForeignKey('trades.id'), index=True)
              +
              +    order_id = Column(String, nullable=False, index=True)
              +    status = Column(String, nullable=False)
              +    symbol = Column(String, nullable=False)
              +    order_type = Column(String, nullable=False)
              +    side = Column(String, nullable=False)
              +    price = Column(Float, nullable=False)
              +    amount = Column(Float, nullable=False)
              +    filled = Column(Float, nullable=True)
              +    remaining = Column(Float, nullable=True)
              +    cost = Column(Float, nullable=True)
              +    order_date = Column(DateTime, nullable=False, default=datetime.utcnow)
              +    order_filled_date = Column(DateTime, nullable=True)
              +
              +    @staticmethod
              +    def parse_from_ccxt_object(order, pair) -> 'Order':
              +        """
              +        Parse an order from a ccxt object and return a new order Object.
              +        """
              +        o = Order(order_id=str(order['id']))
              +
              +        o.status = order['status']
              +        o.symbol = order.get('symbol', pair)
              +        o.order_type = order['type']
              +        o.side = order['side']
              +        o.price = order['price']
              +        o.amount = order['amount']
              +        o.filled = order.get('filled')
              +        o.remaining = order.get('remaining')
              +        o.cost = order.get('cost')
              +        o.order_date = datetime.fromtimestamp(order['timestamp'])
              +        return o
              +
              +    def __repr__(self):
              +
              +        return (f'Order(id={self.id}, trade_id={self.trade_id}, side={self.side}, '
              +                f'status={self.status})')
              +
              +
               class Trade(_DECL_BASE):
                   """
              -    Class used to define a trade structure
              +    Trade database model.
              +    Also handles updating and querying trades
                   """
                   __tablename__ = 'trades'
               
                   id = Column(Integer, primary_key=True)
              +
              +    orders = relationship("Order", order_by="Order.id")
              +
                   exchange = Column(String, nullable=False)
                   pair = Column(String, nullable=False, index=True)
                   is_open = Column(Boolean, nullable=False, default=True, index=True)
              
              From ed87abd93abe991f127fa9e0f1c8e03972e871d4 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 09:41:12 +0200
              Subject: [PATCH 2910/3421] Allow selecting only a certain table range in
               migration
              
              ---
               freqtrade/persistence/migrations.py | 5 ++++-
               1 file changed, 4 insertions(+), 1 deletion(-)
              
              diff --git a/freqtrade/persistence/migrations.py b/freqtrade/persistence/migrations.py
              index bd7dd103f..1bce8fef2 100644
              --- a/freqtrade/persistence/migrations.py
              +++ b/freqtrade/persistence/migrations.py
              @@ -5,6 +5,9 @@ from sqlalchemy import inspect
               
               logger = logging.getLogger(__name__)
               
              +def get_table_names_for_table(inspector, tabletype):
              +    return [t for t in inspector.get_table_names() if t.startswith(tabletype)]
              +
               
               def has_column(columns: List, searchname: str) -> bool:
                   return len(list(filter(lambda x: x["name"] == searchname, columns))) == 1
              @@ -21,7 +24,7 @@ def check_migrate(engine, decl_base) -> None:
                   inspector = inspect(engine)
               
                   cols = inspector.get_columns('trades')
              -    tabs = inspector.get_table_names()
              +    tabs = get_table_names_for_table(inspector, 'trades')
                   table_back_name = 'trades_bak'
                   for i, table_back_name in enumerate(tabs):
                       table_back_name = f'trades_bak{i}'
              
              From a66a3d047f0d65643c09d5fdd805307fc360bdc0 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 09:43:48 +0200
              Subject: [PATCH 2911/3421] Remove unneeded mocks
              
              ---
               tests/rpc/test_rpc_telegram.py | 2 --
               1 file changed, 2 deletions(-)
              
              diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py
              index bfa774856..113232add 100644
              --- a/tests/rpc/test_rpc_telegram.py
              +++ b/tests/rpc/test_rpc_telegram.py
              @@ -249,7 +249,6 @@ def test_status_table_handle(default_conf, update, ticker, fee, mocker) -> None:
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': 'mocked_order_id'}),
                       get_fee=fee,
                   )
                   msg_mock = MagicMock()
              @@ -1002,7 +1001,6 @@ def test_count_handle(default_conf, update, ticker, fee, mocker) -> None:
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': 'mocked_order_id'}),
                       get_fee=fee,
                   )
                   freqtradebot = get_patched_freqtradebot(mocker, default_conf)
              
              From 420a8c2b1c20d0b2f9d87363f68731daccfff172 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 11:36:58 +0200
              Subject: [PATCH 2912/3421] Improve tests for rpc/forcebuy
              
              ---
               tests/conftest.py     | 1 +
               tests/rpc/test_rpc.py | 3 ++-
               2 files changed, 3 insertions(+), 1 deletion(-)
              
              diff --git a/tests/conftest.py b/tests/conftest.py
              index 1ac8256a8..b8367f36d 100644
              --- a/tests/conftest.py
              +++ b/tests/conftest.py
              @@ -827,6 +827,7 @@ def limit_buy_order():
                       'side': 'buy',
                       'symbol': 'mocked',
                       'datetime': arrow.utcnow().isoformat(),
              +        'timestamp': arrow.utcnow().timestamp,
                       'price': 0.00001099,
                       'amount': 90.99181073,
                       'filled': 90.99181073,
              diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py
              index 9bbd34672..5af6a42cb 100644
              --- a/tests/rpc/test_rpc.py
              +++ b/tests/rpc/test_rpc.py
              @@ -817,7 +817,8 @@ def test_rpc_count(mocker, default_conf, ticker, fee) -> None:
               def test_rpcforcebuy(mocker, default_conf, ticker, fee, limit_buy_order) -> None:
                   default_conf['forcebuy_enable'] = True
                   mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock())
              -    buy_mm = MagicMock(return_value={'id': limit_buy_order['id']})
              +    limit_buy_order['status'] = 'open'
              +    buy_mm = MagicMock(return_value=limit_buy_order)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       get_balances=MagicMock(return_value=ticker),
              
              From ee7b235cdc0f3b782baaffd8fff185a18a86aeee Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 13:33:45 +0200
              Subject: [PATCH 2913/3421] Improve tests to use open_order mock where
               applicable
              
              ---
               tests/conftest.py          |  35 +++++++--
               tests/rpc/test_rpc.py      |   5 +-
               tests/test_freqtradebot.py | 150 ++++++++++++++++++-------------------
               3 files changed, 103 insertions(+), 87 deletions(-)
              
              diff --git a/tests/conftest.py b/tests/conftest.py
              index b8367f36d..68b499dda 100644
              --- a/tests/conftest.py
              +++ b/tests/conftest.py
              @@ -820,7 +820,7 @@ def markets_empty():
               
               
               @pytest.fixture(scope='function')
              -def limit_buy_order():
              +def limit_buy_order_open():
                   return {
                       'id': 'mocked_limit_buy',
                       'type': 'limit',
              @@ -830,13 +830,22 @@ def limit_buy_order():
                       'timestamp': arrow.utcnow().timestamp,
                       'price': 0.00001099,
                       'amount': 90.99181073,
              -        'filled': 90.99181073,
              +        'filled': 0.0,
                       'cost': 0.0009999,
              -        'remaining': 0.0,
              -        'status': 'closed'
              +        'remaining': 90.99181073,
              +        'status': 'open'
                   }
               
               
              +@pytest.fixture(scope='function')
              +def limit_buy_order(limit_buy_order_open):
              +    order = deepcopy(limit_buy_order_open)
              +    order['status'] = 'closed'
              +    order['filled'] = order['amount']
              +    order['remaining'] = 0.0
              +    return order
              +
              +
               @pytest.fixture(scope='function')
               def market_buy_order():
                   return {
              @@ -1019,21 +1028,31 @@ def limit_buy_order_canceled_empty(request):
               
               
               @pytest.fixture
              -def limit_sell_order():
              +def limit_sell_order_open():
                   return {
                       'id': 'mocked_limit_sell',
                       'type': 'limit',
                       'side': 'sell',
                       'pair': 'mocked',
                       'datetime': arrow.utcnow().isoformat(),
              +        'timestamp': arrow.utcnow().timestamp,
                       'price': 0.00001173,
                       'amount': 90.99181073,
              -        'filled': 90.99181073,
              -        'remaining': 0.0,
              -        'status': 'closed'
              +        'filled': 0.0,
              +        'remaining': 90.99181073,
              +        'status': 'open'
                   }
               
               
              +@pytest.fixture
              +def limit_sell_order(limit_sell_order_open):
              +    order = deepcopy(limit_sell_order_open)
              +    order['remaining'] = 0.0
              +    order['filled'] = order['amount']
              +    order['status'] = 'closed'
              +    return order
              +
              +
               @pytest.fixture
               def order_book_l2():
                   return MagicMock(return_value={
              diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py
              index 5af6a42cb..9a3e50a9e 100644
              --- a/tests/rpc/test_rpc.py
              +++ b/tests/rpc/test_rpc.py
              @@ -814,11 +814,10 @@ def test_rpc_count(mocker, default_conf, ticker, fee) -> None:
                   assert counts["current"] == 1
               
               
              -def test_rpcforcebuy(mocker, default_conf, ticker, fee, limit_buy_order) -> None:
              +def test_rpcforcebuy(mocker, default_conf, ticker, fee, limit_buy_order_open) -> None:
                   default_conf['forcebuy_enable'] = True
                   mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock())
              -    limit_buy_order['status'] = 'open'
              -    buy_mm = MagicMock(return_value=limit_buy_order)
              +    buy_mm = MagicMock(return_value=limit_buy_order_open)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       get_balances=MagicMock(return_value=ticker),
              diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
              index 3f42aa889..40340fcd0 100644
              --- a/tests/test_freqtradebot.py
              +++ b/tests/test_freqtradebot.py
              @@ -170,7 +170,7 @@ def test_get_trade_stake_amount(default_conf, ticker, mocker) -> None:
                                       (True, 0.0027, 3, 0.5, [0.001, 0.001, 0.000673]),
                                       (True, 0.0022, 3, 1, [0.001, 0.001, 0.0]),
                                       ])
              -def test_check_available_stake_amount(default_conf, ticker, mocker, fee, limit_buy_order,
              +def test_check_available_stake_amount(default_conf, ticker, mocker, fee, limit_buy_order_open,
                                                     amend_last, wallet, max_open, lsamr, expected) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
              @@ -178,7 +178,7 @@ def test_check_available_stake_amount(default_conf, ticker, mocker, fee, limit_b
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
                       get_balance=MagicMock(return_value=default_conf['stake_amount'] * 2),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee
                   )
                   default_conf['dry_run_wallet'] = wallet
              @@ -216,13 +216,13 @@ def test_get_trade_stake_amount_no_stake_amount(default_conf, mocker) -> None:
                                       (0.50, 0.0025),
                                       ])
               def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, balance_ratio, result1,
              -                                                 limit_buy_order, fee, mocker) -> None:
              +                                                 limit_buy_order_open, fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee
                   )
               
              @@ -303,7 +303,6 @@ def test_edge_overrides_stoploss(limit_buy_order, fee, caplog, mocker, edge_conf
                           'ask': buy_price * 0.79,
                           'last': buy_price * 0.79
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
                       get_fee=fee,
                   )
                   #############################################
              @@ -343,7 +342,6 @@ def test_edge_should_ignore_strategy_stoploss(limit_buy_order, fee,
                           'ask': buy_price * 0.85,
                           'last': buy_price * 0.85
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
                       get_fee=fee,
                   )
                   #############################################
              @@ -362,8 +360,7 @@ def test_edge_should_ignore_strategy_stoploss(limit_buy_order, fee,
                   assert freqtrade.handle_trade(trade) is False
               
               
              -def test_total_open_trades_stakes(mocker, default_conf, ticker,
              -                                  limit_buy_order, fee) -> None:
              +def test_total_open_trades_stakes(mocker, default_conf, ticker, fee) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   default_conf['stake_amount'] = 0.00098751
              @@ -371,7 +368,6 @@ def test_total_open_trades_stakes(mocker, default_conf, ticker,
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
                       get_fee=fee,
                   )
                   freqtrade = FreqtradeBot(default_conf)
              @@ -534,7 +530,6 @@ def test_create_trade(default_conf, ticker, limit_buy_order, fee, mocker) -> Non
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
                       get_fee=fee,
                   )
               
              @@ -568,7 +563,6 @@ def test_create_trade_no_stake_amount(default_conf, ticker, limit_buy_order,
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
                       get_fee=fee,
                   )
                   freqtrade = FreqtradeBot(default_conf)
              @@ -578,11 +572,11 @@ def test_create_trade_no_stake_amount(default_conf, ticker, limit_buy_order,
                       freqtrade.create_trade('ETH/BTC')
               
               
              -def test_create_trade_minimal_amount(default_conf, ticker, limit_buy_order,
              +def test_create_trade_minimal_amount(default_conf, ticker, limit_buy_order_open,
                                                    fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
              -    buy_mock = MagicMock(return_value={'id': limit_buy_order['id']})
              +    buy_mock = MagicMock(return_value=limit_buy_order_open)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              @@ -598,11 +592,11 @@ def test_create_trade_minimal_amount(default_conf, ticker, limit_buy_order,
                   assert rate * amount <= default_conf['stake_amount']
               
               
              -def test_create_trade_too_small_stake_amount(default_conf, ticker, limit_buy_order,
              +def test_create_trade_too_small_stake_amount(default_conf, ticker, limit_buy_order_open,
                                                            fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
              -    buy_mock = MagicMock(return_value={'id': limit_buy_order['id']})
              +    buy_mock = MagicMock(return_value=limit_buy_order_open)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              @@ -618,14 +612,14 @@ def test_create_trade_too_small_stake_amount(default_conf, ticker, limit_buy_ord
                   assert not freqtrade.create_trade('ETH/BTC')
               
               
              -def test_create_trade_limit_reached(default_conf, ticker, limit_buy_order,
              -                                    fee, markets, mocker) -> None:
              +def test_create_trade_limit_reached(default_conf, ticker, limit_buy_order_open,
              +                                    fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_balance=MagicMock(return_value=default_conf['stake_amount']),
                       get_fee=fee,
                   )
              @@ -639,14 +633,14 @@ def test_create_trade_limit_reached(default_conf, ticker, limit_buy_order,
                   assert freqtrade.get_trade_stake_amount('ETH/BTC') == 0
               
               
              -def test_enter_positions_no_pairs_left(default_conf, ticker, limit_buy_order, fee,
              +def test_enter_positions_no_pairs_left(default_conf, ticker, limit_buy_order_open, fee,
                                                      mocker, caplog) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
               
              @@ -702,7 +696,7 @@ def test_create_trade_no_signal(default_conf, fee, mocker) -> None:
               
               @pytest.mark.parametrize("max_open", range(0, 5))
               @pytest.mark.parametrize("tradable_balance_ratio,modifier", [(1.0, 1), (0.99, 0.8), (0.5, 0.5)])
              -def test_create_trades_multiple_trades(default_conf, ticker, fee, mocker,
              +def test_create_trades_multiple_trades(default_conf, ticker, fee, mocker, limit_buy_order_open,
                                                      max_open, tradable_balance_ratio, modifier) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
              @@ -713,7 +707,7 @@ def test_create_trades_multiple_trades(default_conf, ticker, fee, mocker,
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': "12355555"}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   freqtrade = FreqtradeBot(default_conf)
              @@ -727,14 +721,14 @@ def test_create_trades_multiple_trades(default_conf, ticker, fee, mocker,
                   assert len(trades) == max(int(max_open * modifier), 0)
               
               
              -def test_create_trades_preopen(default_conf, ticker, fee, mocker) -> None:
              +def test_create_trades_preopen(default_conf, ticker, fee, mocker, limit_buy_order_open) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   default_conf['max_open_trades'] = 4
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': "12355555"}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   freqtrade = FreqtradeBot(default_conf)
              @@ -754,14 +748,14 @@ def test_create_trades_preopen(default_conf, ticker, fee, mocker) -> None:
                   assert len(trades) == 4
               
               
              -def test_process_trade_creation(default_conf, ticker, limit_buy_order,
              +def test_process_trade_creation(default_conf, ticker, limit_buy_order, limit_buy_order_open,
                                               fee, mocker, caplog) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       fetch_order=MagicMock(return_value=limit_buy_order),
                       get_fee=fee,
                   )
              @@ -824,14 +818,14 @@ def test_process_operational_exception(default_conf, ticker, mocker) -> None:
                   assert 'OperationalException' in msg_mock.call_args_list[-1][0][0]['status']
               
               
              -def test_process_trade_handling(default_conf, ticker, limit_buy_order, fee, mocker) -> None:
              +def test_process_trade_handling(default_conf, ticker, limit_buy_order_open, fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              -        fetch_order=MagicMock(return_value=limit_buy_order),
              +        buy=MagicMock(return_value=limit_buy_order_open),
              +        fetch_order=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   freqtrade = FreqtradeBot(default_conf)
              @@ -970,7 +964,7 @@ def test_get_buy_rate(mocker, default_conf, caplog, side, ask, bid,
                   assert not log_has("Using cached buy rate for ETH/BTC.", caplog)
               
               
              -def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None:
              +def test_execute_buy(mocker, default_conf, fee, limit_buy_order, limit_buy_order_open) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   freqtrade = FreqtradeBot(default_conf)
              @@ -983,7 +977,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order) -> None:
                       get_buy_rate=buy_rate_mock,
                       _get_min_pair_stake_amount=MagicMock(return_value=1)
                   )
              -    buy_mm = MagicMock(return_value={'id': limit_buy_order['id']})
              +    buy_mm = MagicMock(return_value=limit_buy_order_open)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=MagicMock(return_value={
              @@ -1277,7 +1271,7 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog,
               
               
               def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee,
              -                                             limit_buy_order, limit_sell_order):
              +                                             limit_buy_order_open, limit_sell_order):
                   rpc_mock = patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   sell_mock = MagicMock(return_value={'id': limit_sell_order['id']})
              @@ -1288,7 +1282,7 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee,
                           'ask': 0.00001173,
                           'last': 0.00001172
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       sell=sell_mock,
                       get_fee=fee,
                       fetch_order=MagicMock(return_value={'status': 'canceled'}),
              @@ -1829,7 +1823,7 @@ def test_update_trade_state_sell(default_conf, trades_for_order, limit_sell_orde
                   assert not trade.is_open
               
               
              -def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, fee, mocker) -> None:
              +def test_handle_trade(default_conf, limit_buy_order, limit_sell_order_open, limit_sell_order, fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
              @@ -1839,8 +1833,8 @@ def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, fee, mock
                           'ask': 0.00001173,
                           'last': 0.00001172
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              -        sell=MagicMock(return_value={'id': limit_sell_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order),
              +        sell=MagicMock(return_value=limit_sell_order_open),
                       get_fee=fee,
                   )
                   freqtrade = FreqtradeBot(default_conf)
              @@ -1869,13 +1863,13 @@ def test_handle_trade(default_conf, limit_buy_order, limit_sell_order, fee, mock
                   assert trade.close_date is not None
               
               
              -def test_handle_overlapping_signals(default_conf, ticker, limit_buy_order, fee, mocker) -> None:
              +def test_handle_overlapping_signals(default_conf, ticker, limit_buy_order_open, fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
               
              @@ -1920,7 +1914,7 @@ def test_handle_overlapping_signals(default_conf, ticker, limit_buy_order, fee,
                   assert freqtrade.handle_trade(trades[0]) is True
               
               
              -def test_handle_trade_roi(default_conf, ticker, limit_buy_order,
              +def test_handle_trade_roi(default_conf, ticker, limit_buy_order_open,
                                         fee, mocker, caplog) -> None:
                   caplog.set_level(logging.DEBUG)
               
              @@ -1928,7 +1922,7 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order,
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
               
              @@ -1953,14 +1947,14 @@ def test_handle_trade_roi(default_conf, ticker, limit_buy_order,
               
               
               def test_handle_trade_use_sell_signal(
              -        default_conf, ticker, limit_buy_order, fee, mocker, caplog) -> None:
              +        default_conf, ticker, limit_buy_order_open, fee, mocker, caplog) -> None:
                   # use_sell_signal is True buy default
                   caplog.set_level(logging.DEBUG)
                   patch_RPCManager(mocker)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
               
              @@ -1981,14 +1975,14 @@ def test_handle_trade_use_sell_signal(
                                  caplog)
               
               
              -def test_close_trade(default_conf, ticker, limit_buy_order, limit_sell_order,
              +def test_close_trade(default_conf, ticker, limit_buy_order, limit_buy_order_open, limit_sell_order,
                                    fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   freqtrade = FreqtradeBot(default_conf)
              @@ -2804,7 +2798,7 @@ def test_execute_sell_with_stoploss_on_exchange(default_conf, ticker, fee, ticke
               
               
               def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf, ticker, fee,
              -                                                         limit_buy_order, mocker) -> None:
              +                                                         mocker) -> None:
                   default_conf['exchange']['name'] = 'binance'
                   rpc_mock = patch_RPCManager(mocker)
                   patch_exchange(mocker)
              @@ -2926,7 +2920,7 @@ def test_execute_sell_market_order(default_conf, ticker, fee,
                   } == last_msg
               
               
              -def test_sell_profit_only_enable_profit(default_conf, limit_buy_order,
              +def test_sell_profit_only_enable_profit(default_conf, limit_buy_order, limit_buy_order_open,
                                                       fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
              @@ -2937,7 +2931,7 @@ def test_sell_profit_only_enable_profit(default_conf, limit_buy_order,
                           'ask': 0.00002173,
                           'last': 0.00002172
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   default_conf['ask_strategy'] = {
              @@ -2958,7 +2952,7 @@ def test_sell_profit_only_enable_profit(default_conf, limit_buy_order,
                   assert trade.sell_reason == SellType.SELL_SIGNAL.value
               
               
              -def test_sell_profit_only_disable_profit(default_conf, limit_buy_order,
              +def test_sell_profit_only_disable_profit(default_conf, limit_buy_order, limit_buy_order_open,
                                                        fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
              @@ -2969,7 +2963,7 @@ def test_sell_profit_only_disable_profit(default_conf, limit_buy_order,
                           'ask': 0.00002173,
                           'last': 0.00002172
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   default_conf['ask_strategy'] = {
              @@ -2989,7 +2983,8 @@ def test_sell_profit_only_disable_profit(default_conf, limit_buy_order,
                   assert trade.sell_reason == SellType.SELL_SIGNAL.value
               
               
              -def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, mocker) -> None:
              +def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, limit_buy_order_open,
              +                                      fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
              @@ -2999,7 +2994,7 @@ def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, mocker
                           'ask': 0.00000173,
                           'last': 0.00000172
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   default_conf['ask_strategy'] = {
              @@ -3018,7 +3013,8 @@ def test_sell_profit_only_enable_loss(default_conf, limit_buy_order, fee, mocker
                   assert freqtrade.handle_trade(trade) is False
               
               
              -def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, mocker) -> None:
              +def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, limit_buy_order_open,
              +                                       fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
              @@ -3028,7 +3024,7 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, mocke
                           'ask': 0.0000173,
                           'last': 0.0000172
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   default_conf['ask_strategy'] = {
              @@ -3050,7 +3046,7 @@ def test_sell_profit_only_disable_loss(default_conf, limit_buy_order, fee, mocke
                   assert trade.sell_reason == SellType.SELL_SIGNAL.value
               
               
              -def test_sell_not_enough_balance(default_conf, limit_buy_order,
              +def test_sell_not_enough_balance(default_conf, limit_buy_order, limit_buy_order_open,
                                                fee, mocker, caplog) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
              @@ -3061,7 +3057,7 @@ def test_sell_not_enough_balance(default_conf, limit_buy_order,
                           'ask': 0.00002173,
                           'last': 0.00002172
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
               
              @@ -3169,7 +3165,8 @@ def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, mocker, caplo
                   assert log_has(f"Pair {trade.pair} is currently locked.", caplog)
               
               
              -def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, mocker) -> None:
              +def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, limit_buy_order_open,
              +                                  fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
              @@ -3179,7 +3176,7 @@ def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, mocker) ->
                           'ask': 0.0000173,
                           'last': 0.0000172
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   default_conf['ask_strategy'] = {
              @@ -3203,7 +3200,8 @@ def test_ignore_roi_if_buy_signal(default_conf, limit_buy_order, fee, mocker) ->
                   assert trade.sell_reason == SellType.ROI.value
               
               
              -def test_trailing_stop_loss(default_conf, limit_buy_order, fee, caplog, mocker) -> None:
              +def test_trailing_stop_loss(default_conf, limit_buy_order_open, limit_buy_order,
              +                            fee, caplog, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
              @@ -3213,7 +3211,7 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, caplog, mocker)
                           'ask': 0.00001099,
                           'last': 0.00001099
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   default_conf['trailing_stop'] = True
              @@ -3253,7 +3251,7 @@ def test_trailing_stop_loss(default_conf, limit_buy_order, fee, caplog, mocker)
                   assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value
               
               
              -def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee,
              +def test_trailing_stop_loss_positive(default_conf, limit_buy_order, limit_buy_order_open, fee,
                                                    caplog, mocker) -> None:
                   buy_price = limit_buy_order['price']
                   patch_RPCManager(mocker)
              @@ -3265,7 +3263,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee,
                           'ask': buy_price - 0.000001,
                           'last': buy_price - 0.000001
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   default_conf['trailing_stop'] = True
              @@ -3310,7 +3308,7 @@ def test_trailing_stop_loss_positive(default_conf, limit_buy_order, fee,
                       f"initial stoploss was at 0.000010, trade opened at 0.000011", caplog)
               
               
              -def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee,
              +def test_trailing_stop_loss_offset(default_conf, limit_buy_order, limit_buy_order_open, fee,
                                                  caplog, mocker) -> None:
                   buy_price = limit_buy_order['price']
                   patch_RPCManager(mocker)
              @@ -3322,7 +3320,7 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee,
                           'ask': buy_price - 0.000001,
                           'last': buy_price - 0.000001
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   patch_whitelist(mocker, default_conf)
              @@ -3368,7 +3366,7 @@ def test_trailing_stop_loss_offset(default_conf, limit_buy_order, fee,
                   assert trade.sell_reason == SellType.TRAILING_STOP_LOSS.value
               
               
              -def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee,
              +def test_tsl_only_offset_reached(default_conf, limit_buy_order, limit_buy_order_open, fee,
                                                caplog, mocker) -> None:
                   buy_price = limit_buy_order['price']
                   # buy_price: 0.00001099
              @@ -3382,7 +3380,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee,
                           'ask': buy_price,
                           'last': buy_price
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   patch_whitelist(mocker, default_conf)
              @@ -3431,7 +3429,7 @@ def test_tsl_only_offset_reached(default_conf, limit_buy_order, fee,
                   assert trade.stop_loss == 0.0000117705
               
               
              -def test_disable_ignore_roi_if_buy_signal(default_conf, limit_buy_order,
              +def test_disable_ignore_roi_if_buy_signal(default_conf, limit_buy_order, limit_buy_order_open,
                                                         fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
              @@ -3442,7 +3440,7 @@ def test_disable_ignore_roi_if_buy_signal(default_conf, limit_buy_order,
                           'ask': 0.00000173,
                           'last': 0.00000172
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
                   default_conf['ask_strategy'] = {
              @@ -3784,8 +3782,8 @@ def test_apply_fee_conditional(default_conf, fee, caplog, mocker,
                   assert walletmock.call_count == 1
               
               
              -def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee, mocker,
              -                                    order_book_l2):
              +def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order_open, limit_buy_order,
              +                                    fee, mocker, order_book_l2):
                   default_conf['bid_strategy']['check_depth_of_market']['enabled'] = True
                   default_conf['bid_strategy']['check_depth_of_market']['bids_to_ask_delta'] = 0.1
                   patch_RPCManager(mocker)
              @@ -3794,7 +3792,7 @@ def test_order_book_depth_of_market(default_conf, ticker, limit_buy_order, fee,
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
               
              @@ -3909,8 +3907,8 @@ def test_check_depth_of_market_buy(default_conf, mocker, order_book_l2) -> None:
                   assert freqtrade._check_depth_of_market_buy('ETH/BTC', conf) is False
               
               
              -def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order,
              -                                 fee, mocker, order_book_l2, caplog) -> None:
              +def test_order_book_ask_strategy(default_conf, limit_buy_order_open, limit_buy_order, fee,
              +                                 limit_sell_order_open, mocker, order_book_l2, caplog) -> None:
                   """
                   test order book ask strategy
                   """
              @@ -3929,8 +3927,8 @@ def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order
                           'ask': 0.00001173,
                           'last': 0.00001172
                       }),
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              -        sell=MagicMock(return_value={'id': limit_sell_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
              +        sell=MagicMock(return_value=limit_sell_order_open),
                       get_fee=fee,
                   )
                   freqtrade = FreqtradeBot(default_conf)
              @@ -4072,7 +4070,7 @@ def test_startup_trade_reinit(default_conf, edge_conf, mocker):
               
               
               @pytest.mark.usefixtures("init_persistence")
              -def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order, caplog):
              +def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order_open, caplog):
                   default_conf['dry_run'] = True
                   # Initialize to 2 times stake amount
                   default_conf['dry_run_wallet'] = 0.002
              @@ -4082,7 +4080,7 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order,
                   mocker.patch.multiple(
                       'freqtrade.exchange.Exchange',
                       fetch_ticker=ticker,
              -        buy=MagicMock(return_value={'id': limit_buy_order['id']}),
              +        buy=MagicMock(return_value=limit_buy_order_open),
                       get_fee=fee,
                   )
               
              
              From 4924d8487ee25f84e4d1e4b2dcce62603744f4ed Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 13:39:36 +0200
              Subject: [PATCH 2914/3421] Extract "update order from ccxt" to it's onw
               function
              
              ---
               freqtrade/freqtradebot.py       |  6 ++--
               freqtrade/persistence/models.py | 49 +++++++++++++++++++++------------
               tests/test_freqtradebot.py      |  8 ++++--
               3 files changed, 39 insertions(+), 24 deletions(-)
              
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index ff282aa77..c1a898c30 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -527,7 +527,7 @@ class FreqtradeBot:
                       order = self.exchange.buy(pair=pair, ordertype=order_type,
                                                 amount=amount, rate=buy_limit_requested,
                                                 time_in_force=time_in_force)
              -        order_obj = Order.parse_from_ccxt_object(order, pair)
              +        order_obj = Order.parse_from_ccxt_object(order, 'buy')
                       order_id = order['id']
                       order_status = order.get('status', None)
               
              @@ -784,7 +784,7 @@ class FreqtradeBot:
                                                                   stop_price=stop_price,
                                                                   order_types=self.strategy.order_types)
               
              -            order_obj = Order.parse_from_ccxt_object(stoploss_order, trade.pair)
              +            order_obj = Order.parse_from_ccxt_object(stoploss_order, 'stoploss')
                           trade.orders.append(order_obj)
                           trade.stoploss_order_id = str(stoploss_order['id'])
                           return True
              @@ -1134,7 +1134,7 @@ class FreqtradeBot:
                                                  time_in_force=time_in_force
                                                  )
               
              -        order_obj = Order.parse_from_ccxt_object(order, trade.pair)
              +        order_obj = Order.parse_from_ccxt_object(order, 'sell')
                       trade.orders.append(order_obj)
               
                       trade.open_order_id = order['id']
              diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
              index 3b77438ea..c50fcbe88 100644
              --- a/freqtrade/persistence/models.py
              +++ b/freqtrade/persistence/models.py
              @@ -101,36 +101,49 @@ class Order(_DECL_BASE):
                   id = Column(Integer, primary_key=True)
                   trade_id = Column(Integer, ForeignKey('trades.id'), index=True)
               
              +    ft_order_side = Column(String, nullable=False)
              +
                   order_id = Column(String, nullable=False, index=True)
              -    status = Column(String, nullable=False)
              -    symbol = Column(String, nullable=False)
              -    order_type = Column(String, nullable=False)
              -    side = Column(String, nullable=False)
              -    price = Column(Float, nullable=False)
              -    amount = Column(Float, nullable=False)
              +    status = Column(String, nullable=True)
              +    symbol = Column(String, nullable=True)
              +    order_type = Column(String, nullable=True)
              +    side = Column(String, nullable=True)
              +    price = Column(Float, nullable=True)
              +    amount = Column(Float, nullable=True)
                   filled = Column(Float, nullable=True)
                   remaining = Column(Float, nullable=True)
                   cost = Column(Float, nullable=True)
                   order_date = Column(DateTime, nullable=False, default=datetime.utcnow)
                   order_filled_date = Column(DateTime, nullable=True)
               
              +    def update_from_ccxt_object(self, order):
              +        """
              +        Update Order from ccxt response
              +        Only updates if fields are available from ccxt -
              +        """
              +        if self.order_id != str(order['id']):
              +            return OperationalException("Order-id's don't match")
              +
              +        self.status = order.get('status', self.status)
              +        self.symbol = order.get('symbol', self.symbol)
              +        self.order_type = order.get('type', self.order_type)
              +        self.side = order.get('side', self.side)
              +        self.price = order.get('price', self.price)
              +        self.amount = order.get('amount', self.amount)
              +        self.filled = order.get('filled', self.filled)
              +        self.remaining = order.get('remaining', self.remaining)
              +        self.cost = order.get('cost', self.cost)
              +        if 'timestamp' in order and order['timestamp'] is not None:
              +            self.order_date = datetime.fromtimestamp(order['timestamp'])
              +
                   @staticmethod
              -    def parse_from_ccxt_object(order, pair) -> 'Order':
              +    def parse_from_ccxt_object(order: Dict[str, Any], side: str) -> 'Order':
                       """
                       Parse an order from a ccxt object and return a new order Object.
                       """
              -        o = Order(order_id=str(order['id']))
              +        o = Order(order_id=str(order['id']), ft_order_side=side)
               
              -        o.status = order['status']
              -        o.symbol = order.get('symbol', pair)
              -        o.order_type = order['type']
              -        o.side = order['side']
              -        o.price = order['price']
              -        o.amount = order['amount']
              -        o.filled = order.get('filled')
              -        o.remaining = order.get('remaining')
              -        o.cost = order.get('cost')
              -        o.order_date = datetime.fromtimestamp(order['timestamp'])
              +        o.update_from_ccxt_object(order)
                       return o
               
                   def __repr__(self):
              diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
              index 40340fcd0..1621be6e5 100644
              --- a/tests/test_freqtradebot.py
              +++ b/tests/test_freqtradebot.py
              @@ -1313,7 +1313,7 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee,
                   assert rpc_mock.call_args_list[1][0][0]['order_type'] == 'market'
               
               
              -def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, caplog,
              +def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee,
                                                             limit_buy_order, limit_sell_order) -> None:
                   # When trailing stoploss is set
                   stoploss = MagicMock(return_value={'id': 13434334})
              @@ -1823,7 +1823,8 @@ def test_update_trade_state_sell(default_conf, trades_for_order, limit_sell_orde
                   assert not trade.is_open
               
               
              -def test_handle_trade(default_conf, limit_buy_order, limit_sell_order_open, limit_sell_order, fee, mocker) -> None:
              +def test_handle_trade(default_conf, limit_buy_order, limit_sell_order_open, limit_sell_order,
              +                      fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
              @@ -1863,7 +1864,8 @@ def test_handle_trade(default_conf, limit_buy_order, limit_sell_order_open, limi
                   assert trade.close_date is not None
               
               
              -def test_handle_overlapping_signals(default_conf, ticker, limit_buy_order_open, fee, mocker) -> None:
              +def test_handle_overlapping_signals(default_conf, ticker, limit_buy_order_open,
              +                                    fee, mocker) -> None:
                   patch_RPCManager(mocker)
                   patch_exchange(mocker)
                   mocker.patch.multiple(
              
              From 396e781bf43acc00776fde1545bfd91deac2dab2 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 14:13:58 +0200
              Subject: [PATCH 2915/3421] Update orders
              
              ---
               freqtrade/exchange/exchange.py  |  7 +++----
               freqtrade/freqtradebot.py       |  1 +
               freqtrade/persistence/models.py | 25 +++++++++++++++++++------
               3 files changed, 23 insertions(+), 10 deletions(-)
              
              diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
              index 34d57ae4d..533377746 100644
              --- a/freqtrade/exchange/exchange.py
              +++ b/freqtrade/exchange/exchange.py
              @@ -8,7 +8,6 @@ import logging
               from copy import deepcopy
               from datetime import datetime, timezone
               from math import ceil
              -from random import randint
               from typing import Any, Dict, List, Optional, Tuple
               
               import arrow
              @@ -474,11 +473,11 @@ class Exchange:
               
                   def dry_run_order(self, pair: str, ordertype: str, side: str, amount: float,
                                     rate: float, params: Dict = {}) -> Dict[str, Any]:
              -        order_id = f'dry_run_{side}_{randint(0, 10**6)}'
              +        order_id = f'dry_run_{side}_{datetime.now().timestamp()}'
                       _amount = self.amount_to_precision(pair, amount)
                       dry_order = {
              -            "id": order_id,
              -            'pair': pair,
              +            'id': order_id,
              +            'symbol': pair,
                           'price': rate,
                           'average': rate,
                           'amount': _amount,
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index c1a898c30..e2d504916 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -1260,6 +1260,7 @@ class FreqtradeBot:
                       except InvalidOrderException as exception:
                           logger.warning('Unable to fetch order %s: %s', order_id, exception)
                           return False
              +        Order.update_order(order)
                       # Try update amount (binance-fix)
                       try:
                           new_amount = self.get_real_amount(trade, order, order_amount)
              diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
              index c50fcbe88..12bbd8adc 100644
              --- a/freqtrade/persistence/models.py
              +++ b/freqtrade/persistence/models.py
              @@ -58,6 +58,10 @@ def init(db_url: str, clean_open_orders: bool = False) -> None:
                   # We should use the scoped_session object - not a seperately initialized version
                   Trade.session = scoped_session(sessionmaker(bind=engine, autoflush=True, autocommit=True))
                   Trade.query = Trade.session.query_property()
              +    # Copy session attributes to order object too
              +    Order.session = Trade.session
              +    Order.query = Order.session.query_property()
              +
                   _DECL_BASE.metadata.create_all(engine)
                   check_migrate(engine, decl_base=_DECL_BASE)
               
              @@ -103,7 +107,7 @@ class Order(_DECL_BASE):
               
                   ft_order_side = Column(String, nullable=False)
               
              -    order_id = Column(String, nullable=False, index=True)
              +    order_id = Column(String, nullable=False, unique=True, index=True)
                   status = Column(String, nullable=True)
                   symbol = Column(String, nullable=True)
                   order_type = Column(String, nullable=True)
              @@ -115,6 +119,12 @@ class Order(_DECL_BASE):
                   cost = Column(Float, nullable=True)
                   order_date = Column(DateTime, nullable=False, default=datetime.utcnow)
                   order_filled_date = Column(DateTime, nullable=True)
              +    order_update_date = Column(DateTime, nullable=True)
              +
              +    def __repr__(self):
              +
              +        return (f'Order(id={self.id}, order_id={self.order_id}, trade_id={self.trade_id}, '
              +                f'side={self.side}, status={self.status})')
               
                   def update_from_ccxt_object(self, order):
                       """
              @@ -136,6 +146,14 @@ class Order(_DECL_BASE):
                       if 'timestamp' in order and order['timestamp'] is not None:
                           self.order_date = datetime.fromtimestamp(order['timestamp'])
               
              +    @staticmethod
              +    def update_order(order: Dict[str, Any]):
              +        """
              +        """
              +        oobj = Order.query.filter(Order.order_id == order['id']).first()
              +        oobj.update_from_ccxt_object(order)
              +        oobj.order_update_date = datetime.now()
              +
                   @staticmethod
                   def parse_from_ccxt_object(order: Dict[str, Any], side: str) -> 'Order':
                       """
              @@ -146,11 +164,6 @@ class Order(_DECL_BASE):
                       o.update_from_ccxt_object(order)
                       return o
               
              -    def __repr__(self):
              -
              -        return (f'Order(id={self.id}, trade_id={self.trade_id}, side={self.side}, '
              -                f'status={self.status})')
              -
               
               class Trade(_DECL_BASE):
                   """
              
              From 73182bb2ddc41e05067bc317265ed445d5a2196a Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 14:50:57 +0200
              Subject: [PATCH 2916/3421] Update migrations to populate Orders table for open
               orders
              
              ---
               freqtrade/persistence/migrations.py | 201 ++++++++++++++++------------
               freqtrade/persistence/models.py     |  10 +-
               tests/test_persistence.py           |  34 +++--
               3 files changed, 148 insertions(+), 97 deletions(-)
              
              diff --git a/freqtrade/persistence/migrations.py b/freqtrade/persistence/migrations.py
              index 1bce8fef2..55825436d 100644
              --- a/freqtrade/persistence/migrations.py
              +++ b/freqtrade/persistence/migrations.py
              @@ -5,6 +5,7 @@ from sqlalchemy import inspect
               
               logger = logging.getLogger(__name__)
               
              +
               def get_table_names_for_table(inspector, tabletype):
                   return [t for t in inspector.get_table_names() if t.startswith(tabletype)]
               
              @@ -17,7 +18,110 @@ def get_column_def(columns: List, column: str, default: str) -> str:
                   return default if not has_column(columns, column) else column
               
               
              -def check_migrate(engine, decl_base) -> None:
              +def get_backup_name(tabs, backup_prefix: str):
              +    table_back_name = backup_prefix
              +    for i, table_back_name in enumerate(tabs):
              +        table_back_name = f'{backup_prefix}{i}'
              +        logger.debug(f'trying {table_back_name}')
              +
              +    return table_back_name
              +
              +
              +def migrate_trades_table(decl_base, inspector, engine, table_back_name: str, cols: List):
              +    fee_open = get_column_def(cols, 'fee_open', 'fee')
              +    fee_open_cost = get_column_def(cols, 'fee_open_cost', 'null')
              +    fee_open_currency = get_column_def(cols, 'fee_open_currency', 'null')
              +    fee_close = get_column_def(cols, 'fee_close', 'fee')
              +    fee_close_cost = get_column_def(cols, 'fee_close_cost', 'null')
              +    fee_close_currency = get_column_def(cols, 'fee_close_currency', 'null')
              +    open_rate_requested = get_column_def(cols, 'open_rate_requested', 'null')
              +    close_rate_requested = get_column_def(cols, 'close_rate_requested', 'null')
              +    stop_loss = get_column_def(cols, 'stop_loss', '0.0')
              +    stop_loss_pct = get_column_def(cols, 'stop_loss_pct', 'null')
              +    initial_stop_loss = get_column_def(cols, 'initial_stop_loss', '0.0')
              +    initial_stop_loss_pct = get_column_def(cols, 'initial_stop_loss_pct', 'null')
              +    stoploss_order_id = get_column_def(cols, 'stoploss_order_id', 'null')
              +    stoploss_last_update = get_column_def(cols, 'stoploss_last_update', 'null')
              +    max_rate = get_column_def(cols, 'max_rate', '0.0')
              +    min_rate = get_column_def(cols, 'min_rate', 'null')
              +    sell_reason = get_column_def(cols, 'sell_reason', 'null')
              +    strategy = get_column_def(cols, 'strategy', 'null')
              +    # If ticker-interval existed use that, else null.
              +    if has_column(cols, 'ticker_interval'):
              +        timeframe = get_column_def(cols, 'timeframe', 'ticker_interval')
              +    else:
              +        timeframe = get_column_def(cols, 'timeframe', 'null')
              +
              +    open_trade_price = get_column_def(cols, 'open_trade_price',
              +                                      f'amount * open_rate * (1 + {fee_open})')
              +    close_profit_abs = get_column_def(
              +        cols, 'close_profit_abs',
              +        f"(amount * close_rate * (1 - {fee_close})) - {open_trade_price}")
              +    sell_order_status = get_column_def(cols, 'sell_order_status', 'null')
              +    amount_requested = get_column_def(cols, 'amount_requested', 'amount')
              +
              +    # Schema migration necessary
              +    engine.execute(f"alter table trades rename to {table_back_name}")
              +    # drop indexes on backup table
              +    for index in inspector.get_indexes(table_back_name):
              +        engine.execute(f"drop index {index['name']}")
              +    # let SQLAlchemy create the schema as required
              +    decl_base.metadata.create_all(engine)
              +
              +    # Copy data back - following the correct schema
              +    engine.execute(f"""insert into trades
              +            (id, exchange, pair, is_open,
              +            fee_open, fee_open_cost, fee_open_currency,
              +            fee_close, fee_close_cost, fee_open_currency, open_rate,
              +            open_rate_requested, close_rate, close_rate_requested, close_profit,
              +            stake_amount, amount, amount_requested, open_date, close_date, open_order_id,
              +            stop_loss, stop_loss_pct, initial_stop_loss, initial_stop_loss_pct,
              +            stoploss_order_id, stoploss_last_update,
              +            max_rate, min_rate, sell_reason, sell_order_status, strategy,
              +            timeframe, open_trade_price, close_profit_abs
              +            )
              +        select id, lower(exchange),
              +            case
              +                when instr(pair, '_') != 0 then
              +                substr(pair,    instr(pair, '_') + 1) || '/' ||
              +                substr(pair, 1, instr(pair, '_') - 1)
              +                else pair
              +                end
              +            pair,
              +            is_open, {fee_open} fee_open, {fee_open_cost} fee_open_cost,
              +            {fee_open_currency} fee_open_currency, {fee_close} fee_close,
              +            {fee_close_cost} fee_close_cost, {fee_close_currency} fee_close_currency,
              +            open_rate, {open_rate_requested} open_rate_requested, close_rate,
              +            {close_rate_requested} close_rate_requested, close_profit,
              +            stake_amount, amount, {amount_requested}, open_date, close_date, open_order_id,
              +            {stop_loss} stop_loss, {stop_loss_pct} stop_loss_pct,
              +            {initial_stop_loss} initial_stop_loss,
              +            {initial_stop_loss_pct} initial_stop_loss_pct,
              +            {stoploss_order_id} stoploss_order_id, {stoploss_last_update} stoploss_last_update,
              +            {max_rate} max_rate, {min_rate} min_rate, {sell_reason} sell_reason,
              +            {sell_order_status} sell_order_status,
              +            {strategy} strategy, {timeframe} timeframe,
              +            {open_trade_price} open_trade_price, {close_profit_abs} close_profit_abs
              +            from {table_back_name}
              +            """)
              +
              +
              +def migrate_open_orders_to_trades(engine):
              +    engine.execute("""
              +    insert into orders (trade_id, order_id, ft_order_side)
              +    select id, open_order_id,
              +        case when close_rate_requested is null then 'buy'
              +        else 'sell' end ft_order_side
              +    from trades
              +    where open_order_id is not null
              +    union all
              +    select id, stoploss_order_id, 'stoploss'
              +    from trades
              +    where stoploss_order_id is not null
              +    """)
              +
              +
              +def check_migrate(engine, decl_base, previous_tables) -> None:
                   """
                   Checks if migration is necessary and migrates if necessary
                   """
              @@ -25,92 +129,21 @@ def check_migrate(engine, decl_base) -> None:
               
                   cols = inspector.get_columns('trades')
                   tabs = get_table_names_for_table(inspector, 'trades')
              -    table_back_name = 'trades_bak'
              -    for i, table_back_name in enumerate(tabs):
              -        table_back_name = f'trades_bak{i}'
              -        logger.debug(f'trying {table_back_name}')
              +    table_back_name = get_backup_name(tabs, 'trades_bak')
               
                   # Check for latest column
                   if not has_column(cols, 'amount_requested'):
              -        logger.info(f'Running database migration - backup available as {table_back_name}')
              -
              -        fee_open = get_column_def(cols, 'fee_open', 'fee')
              -        fee_open_cost = get_column_def(cols, 'fee_open_cost', 'null')
              -        fee_open_currency = get_column_def(cols, 'fee_open_currency', 'null')
              -        fee_close = get_column_def(cols, 'fee_close', 'fee')
              -        fee_close_cost = get_column_def(cols, 'fee_close_cost', 'null')
              -        fee_close_currency = get_column_def(cols, 'fee_close_currency', 'null')
              -        open_rate_requested = get_column_def(cols, 'open_rate_requested', 'null')
              -        close_rate_requested = get_column_def(cols, 'close_rate_requested', 'null')
              -        stop_loss = get_column_def(cols, 'stop_loss', '0.0')
              -        stop_loss_pct = get_column_def(cols, 'stop_loss_pct', 'null')
              -        initial_stop_loss = get_column_def(cols, 'initial_stop_loss', '0.0')
              -        initial_stop_loss_pct = get_column_def(cols, 'initial_stop_loss_pct', 'null')
              -        stoploss_order_id = get_column_def(cols, 'stoploss_order_id', 'null')
              -        stoploss_last_update = get_column_def(cols, 'stoploss_last_update', 'null')
              -        max_rate = get_column_def(cols, 'max_rate', '0.0')
              -        min_rate = get_column_def(cols, 'min_rate', 'null')
              -        sell_reason = get_column_def(cols, 'sell_reason', 'null')
              -        strategy = get_column_def(cols, 'strategy', 'null')
              -        # If ticker-interval existed use that, else null.
              -        if has_column(cols, 'ticker_interval'):
              -            timeframe = get_column_def(cols, 'timeframe', 'ticker_interval')
              -        else:
              -            timeframe = get_column_def(cols, 'timeframe', 'null')
              -
              -        open_trade_price = get_column_def(cols, 'open_trade_price',
              -                                          f'amount * open_rate * (1 + {fee_open})')
              -        close_profit_abs = get_column_def(
              -            cols, 'close_profit_abs',
              -            f"(amount * close_rate * (1 - {fee_close})) - {open_trade_price}")
              -        sell_order_status = get_column_def(cols, 'sell_order_status', 'null')
              -        amount_requested = get_column_def(cols, 'amount_requested', 'amount')
              -
              -        # Schema migration necessary
              -        engine.execute(f"alter table trades rename to {table_back_name}")
              -        # drop indexes on backup table
              -        for index in inspector.get_indexes(table_back_name):
              -            engine.execute(f"drop index {index['name']}")
              -        # let SQLAlchemy create the schema as required
              -        decl_base.metadata.create_all(engine)
              -
              -        # Copy data back - following the correct schema
              -        engine.execute(f"""insert into trades
              -                (id, exchange, pair, is_open,
              -                fee_open, fee_open_cost, fee_open_currency,
              -                fee_close, fee_close_cost, fee_open_currency, open_rate,
              -                open_rate_requested, close_rate, close_rate_requested, close_profit,
              -                stake_amount, amount, amount_requested, open_date, close_date, open_order_id,
              -                stop_loss, stop_loss_pct, initial_stop_loss, initial_stop_loss_pct,
              -                stoploss_order_id, stoploss_last_update,
              -                max_rate, min_rate, sell_reason, sell_order_status, strategy,
              -                timeframe, open_trade_price, close_profit_abs
              -                )
              -            select id, lower(exchange),
              -                case
              -                    when instr(pair, '_') != 0 then
              -                    substr(pair,    instr(pair, '_') + 1) || '/' ||
              -                    substr(pair, 1, instr(pair, '_') - 1)
              -                    else pair
              -                    end
              -                pair,
              -                is_open, {fee_open} fee_open, {fee_open_cost} fee_open_cost,
              -                {fee_open_currency} fee_open_currency, {fee_close} fee_close,
              -                {fee_close_cost} fee_close_cost, {fee_close_currency} fee_close_currency,
              -                open_rate, {open_rate_requested} open_rate_requested, close_rate,
              -                {close_rate_requested} close_rate_requested, close_profit,
              -                stake_amount, amount, {amount_requested}, open_date, close_date, open_order_id,
              -                {stop_loss} stop_loss, {stop_loss_pct} stop_loss_pct,
              -                {initial_stop_loss} initial_stop_loss,
              -                {initial_stop_loss_pct} initial_stop_loss_pct,
              -                {stoploss_order_id} stoploss_order_id, {stoploss_last_update} stoploss_last_update,
              -                {max_rate} max_rate, {min_rate} min_rate, {sell_reason} sell_reason,
              -                {sell_order_status} sell_order_status,
              -                {strategy} strategy, {timeframe} timeframe,
              -                {open_trade_price} open_trade_price, {close_profit_abs} close_profit_abs
              -                from {table_back_name}
              -             """)
              -
              +        logger.info(f'Running database migration for trades - backup: {table_back_name}')
              +        migrate_trades_table(decl_base, inspector, engine, table_back_name, cols)
                       # Reread columns - the above recreated the table!
                       inspector = inspect(engine)
                       cols = inspector.get_columns('trades')
              +
              +    if 'orders' not in previous_tables:
              +        logger.info('Moving open orders to Orders table.')
              +        migrate_open_orders_to_trades(engine)
              +    else:
              +        logger.info(f'Running database migration for orders - backup: {table_back_name}')
              +        pass
              +        # Empty for now - as there is only one iteration of the orders table so far.
              +        # table_back_name = get_backup_name(tabs, 'orders_bak')
              diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
              index 12bbd8adc..b0bde02fe 100644
              --- a/freqtrade/persistence/models.py
              +++ b/freqtrade/persistence/models.py
              @@ -7,8 +7,8 @@ from decimal import Decimal
               from typing import Any, Dict, List, Optional
               
               import arrow
              -from sqlalchemy import (Boolean, Column, DateTime, Float, Integer, String, ForeignKey,
              -                        create_engine, desc, func)
              +from sqlalchemy import (Boolean, Column, DateTime, Float, ForeignKey, Integer,
              +                        String, create_engine, desc, func, inspect)
               from sqlalchemy.exc import NoSuchModuleError
               from sqlalchemy.ext.declarative import declarative_base
               from sqlalchemy.orm import Query, relationship
              @@ -61,9 +61,9 @@ def init(db_url: str, clean_open_orders: bool = False) -> None:
                   # Copy session attributes to order object too
                   Order.session = Trade.session
                   Order.query = Order.session.query_property()
              -
              +    previous_tables = inspect(engine).get_table_names()
                   _DECL_BASE.metadata.create_all(engine)
              -    check_migrate(engine, decl_base=_DECL_BASE)
              +    check_migrate(engine, decl_base=_DECL_BASE, previous_tables=previous_tables)
               
                   # Clean dry_run DB if the db is not in-memory
                   if clean_open_orders and db_url != 'sqlite://':
              @@ -117,7 +117,7 @@ class Order(_DECL_BASE):
                   filled = Column(Float, nullable=True)
                   remaining = Column(Float, nullable=True)
                   cost = Column(Float, nullable=True)
              -    order_date = Column(DateTime, nullable=False, default=datetime.utcnow)
              +    order_date = Column(DateTime, nullable=True, default=datetime.utcnow)
                   order_filled_date = Column(DateTime, nullable=True)
                   order_update_date = Column(DateTime, nullable=True)
               
              diff --git a/tests/test_persistence.py b/tests/test_persistence.py
              index dbb62e636..c812c496f 100644
              --- a/tests/test_persistence.py
              +++ b/tests/test_persistence.py
              @@ -8,7 +8,7 @@ from sqlalchemy import create_engine
               
               from freqtrade import constants
               from freqtrade.exceptions import OperationalException
              -from freqtrade.persistence import Trade, clean_dry_run_db, init
              +from freqtrade.persistence import Trade, Order, clean_dry_run_db, init
               from tests.conftest import log_has, create_mock_trades
               
               
              @@ -421,9 +421,9 @@ def test_migrate_old(mocker, default_conf, fee):
                                               PRIMARY KEY (id),
                                               CHECK (is_open IN (0, 1))
                                               );"""
              -    insert_table_old = """INSERT INTO trades (exchange, pair, is_open, fee,
              +    insert_table_old = """INSERT INTO trades (exchange, pair, is_open, open_order_id, fee,
                                         open_rate, stake_amount, amount, open_date)
              -                          VALUES ('BITTREX', 'BTC_ETC', 1, {fee},
              +                          VALUES ('BITTREX', 'BTC_ETC', 1, '123123', {fee},
                                         0.00258580, {stake}, {amount},
                                         '2017-11-28 12:44:24.000000')
                                         """.format(fee=fee.return_value,
              @@ -481,6 +481,12 @@ def test_migrate_old(mocker, default_conf, fee):
                   assert pytest.approx(trade.close_profit_abs) == trade.calc_profit()
                   assert trade.sell_order_status is None
               
              +    # Should've created one order
              +    assert len(Order.query.all()) == 1
              +    order = Order.query.first()
              +    assert order.order_id == '123123'
              +    assert order.ft_order_side == 'buy'
              +
               
               def test_migrate_new(mocker, default_conf, fee, caplog):
                   """
              @@ -509,16 +515,19 @@ def test_migrate_new(mocker, default_conf, fee, caplog):
                                               sell_reason VARCHAR,
                                               strategy VARCHAR,
                                               ticker_interval INTEGER,
              +                                stoploss_order_id VARCHAR,
                                               PRIMARY KEY (id),
                                               CHECK (is_open IN (0, 1))
                                               );"""
                   insert_table_old = """INSERT INTO trades (exchange, pair, is_open, fee,
                                         open_rate, stake_amount, amount, open_date,
              -                          stop_loss, initial_stop_loss, max_rate, ticker_interval)
              +                          stop_loss, initial_stop_loss, max_rate, ticker_interval,
              +                          open_order_id, stoploss_order_id)
                                         VALUES ('binance', 'ETC/BTC', 1, {fee},
                                         0.00258580, {stake}, {amount},
                                         '2019-11-28 12:44:24.000000',
              -                          0.0, 0.0, 0.0, '5m')
              +                          0.0, 0.0, 0.0, '5m',
              +                          'buy_order', 'stop_order_id222')
                                         """.format(fee=fee.return_value,
                                                    stake=default_conf.get("stake_amount"),
                                                    amount=amount
              @@ -558,14 +567,23 @@ def test_migrate_new(mocker, default_conf, fee, caplog):
                   assert trade.sell_reason is None
                   assert trade.strategy is None
                   assert trade.timeframe == '5m'
              -    assert trade.stoploss_order_id is None
              +    assert trade.stoploss_order_id == 'stop_order_id222'
                   assert trade.stoploss_last_update is None
                   assert log_has("trying trades_bak1", caplog)
                   assert log_has("trying trades_bak2", caplog)
              -    assert log_has("Running database migration - backup available as trades_bak2", caplog)
              +    assert log_has("Running database migration for trades - backup: trades_bak2", caplog)
                   assert trade.open_trade_price == trade._calc_open_trade_price()
                   assert trade.close_profit_abs is None
               
              +    assert log_has("Moving open orders to Orders table.", caplog)
              +    orders = Order.query.all()
              +    assert len(orders) == 2
              +    assert orders[0].order_id == 'buy_order'
              +    assert orders[0].ft_order_side == 'buy'
              +
              +    assert orders[1].order_id == 'stop_order_id222'
              +    assert orders[1].ft_order_side == 'stoploss'
              +
               
               def test_migrate_mid_state(mocker, default_conf, fee, caplog):
                   """
              @@ -626,7 +644,7 @@ def test_migrate_mid_state(mocker, default_conf, fee, caplog):
                   assert trade.initial_stop_loss == 0.0
                   assert trade.open_trade_price == trade._calc_open_trade_price()
                   assert log_has("trying trades_bak0", caplog)
              -    assert log_has("Running database migration - backup available as trades_bak0", caplog)
              +    assert log_has("Running database migration for trades - backup: trades_bak0", caplog)
               
               
               def test_adjust_stop_loss(fee):
              
              From 0af9e913d4a3bd0c66b387e9d79fdd949d9da1d2 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 15:39:29 +0200
              Subject: [PATCH 2917/3421] Timestamps are in ms
              
              ---
               freqtrade/exchange/exchange.py  |  2 +-
               freqtrade/freqtradebot.py       |  5 ++++-
               freqtrade/persistence/models.py | 12 ++++++++----
               tests/exchange/test_exchange.py |  2 +-
               tests/test_freqtradebot.py      |  1 +
               5 files changed, 15 insertions(+), 7 deletions(-)
              
              diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
              index 533377746..bcb511010 100644
              --- a/freqtrade/exchange/exchange.py
              +++ b/freqtrade/exchange/exchange.py
              @@ -486,7 +486,7 @@ class Exchange:
                           'side': side,
                           'remaining': _amount,
                           'datetime': arrow.utcnow().isoformat(),
              -            'timestamp': arrow.utcnow().timestamp,
              +            'timestamp': int(arrow.utcnow().timestamp * 1000),
                           'status': "closed" if ordertype == "market" else "open",
                           'fee': None,
                           'info': {}
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index e2d504916..18d39e471 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -817,6 +817,9 @@ class FreqtradeBot:
                       except InvalidOrderException as exception:
                           logger.warning('Unable to fetch stoploss order: %s', exception)
               
              +        if stoploss_order:
              +            trade.update_order(stoploss_order)
              +
                       # We check if stoploss order is fulfilled
                       if stoploss_order and stoploss_order['status'] in ('closed', 'triggered'):
                           trade.sell_reason = SellType.STOPLOSS_ON_EXCHANGE.value
              @@ -1260,7 +1263,7 @@ class FreqtradeBot:
                       except InvalidOrderException as exception:
                           logger.warning('Unable to fetch order %s: %s', order_id, exception)
                           return False
              -        Order.update_order(order)
              +        trade.update_order(order)
                       # Try update amount (binance-fix)
                       try:
                           new_amount = self.get_real_amount(trade, order, order_amount)
              diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
              index b0bde02fe..5f85cdb4c 100644
              --- a/freqtrade/persistence/models.py
              +++ b/freqtrade/persistence/models.py
              @@ -107,7 +107,7 @@ class Order(_DECL_BASE):
               
                   ft_order_side = Column(String, nullable=False)
               
              -    order_id = Column(String, nullable=False, unique=True, index=True)
              +    order_id = Column(String, nullable=False, index=True)
                   status = Column(String, nullable=True)
                   symbol = Column(String, nullable=True)
                   order_type = Column(String, nullable=True)
              @@ -144,13 +144,14 @@ class Order(_DECL_BASE):
                       self.remaining = order.get('remaining', self.remaining)
                       self.cost = order.get('cost', self.cost)
                       if 'timestamp' in order and order['timestamp'] is not None:
              -            self.order_date = datetime.fromtimestamp(order['timestamp'])
              +            self.order_date = datetime.fromtimestamp(order['timestamp'] / 1000)
               
                   @staticmethod
              -    def update_order(order: Dict[str, Any]):
              +    def update_orders(orders: List['Order'], order: Dict[str, Any]):
                       """
                       """
              -        oobj = Order.query.filter(Order.order_id == order['id']).first()
              +        filtered_orders = [o for o in orders if o.order_id == order['id']]
              +        oobj = filtered_orders[0] if filtered_orders else None
                       oobj.update_from_ccxt_object(order)
                       oobj.order_update_date = datetime.now()
               
              @@ -417,6 +418,9 @@ class Trade(_DECL_BASE):
                       else:
                           return False
               
              +    def update_order(self, order: Dict) -> None:
              +        Order.update_orders(self.orders, order)
              +
                   def _calc_open_trade_price(self) -> float:
                       """
                       Calculate the open_rate including open_fee.
              diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py
              index 350c2d3cb..d0e303f5f 100644
              --- a/tests/exchange/test_exchange.py
              +++ b/tests/exchange/test_exchange.py
              @@ -807,7 +807,7 @@ def test_dry_run_order(default_conf, mocker, side, exchange_name):
                   assert f'dry_run_{side}_' in order["id"]
                   assert order["side"] == side
                   assert order["type"] == "limit"
              -    assert order["pair"] == "ETH/BTC"
              +    assert order["symbol"] == "ETH/BTC"
               
               
               @pytest.mark.parametrize("side", [
              diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
              index 1621be6e5..7257c73b9 100644
              --- a/tests/test_freqtradebot.py
              +++ b/tests/test_freqtradebot.py
              @@ -1194,6 +1194,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog,
                   assert trade
               
                   stoploss_order_hit = MagicMock(return_value={
              +        'id': 100,
                       'status': 'closed',
                       'type': 'stop_loss_limit',
                       'price': 3,
              
              From ebd755e36a842f63a62044ebbd68d6779720bdd0 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 15:54:36 +0200
              Subject: [PATCH 2918/3421] Improve order handling
              
              ---
               freqtrade/persistence/models.py |  9 ++++++---
               tests/test_freqtradebot.py      | 11 +++++++++--
               2 files changed, 15 insertions(+), 5 deletions(-)
              
              diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
              index 5f85cdb4c..d930fbeb7 100644
              --- a/freqtrade/persistence/models.py
              +++ b/freqtrade/persistence/models.py
              @@ -151,9 +151,12 @@ class Order(_DECL_BASE):
                       """
                       """
                       filtered_orders = [o for o in orders if o.order_id == order['id']]
              -        oobj = filtered_orders[0] if filtered_orders else None
              -        oobj.update_from_ccxt_object(order)
              -        oobj.order_update_date = datetime.now()
              +        if filtered_orders:
              +            oobj = filtered_orders[0]
              +            oobj.update_from_ccxt_object(order)
              +            oobj.order_update_date = datetime.now()
              +        else:
              +            logger.warning(f"Did not find order for {order['id']}.")
               
                   @staticmethod
                   def parse_from_ccxt_object(order: Dict[str, Any], side: str) -> 'Order':
              diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
              index 7257c73b9..1f7984a43 100644
              --- a/tests/test_freqtradebot.py
              +++ b/tests/test_freqtradebot.py
              @@ -1,6 +1,7 @@
               # pragma pylint: disable=missing-docstring, C0103
               # pragma pylint: disable=protected-access, too-many-lines, invalid-name, too-many-arguments
               
              +from freqtrade.persistence.models import Order
               import logging
               import time
               from copy import deepcopy
              @@ -1252,7 +1253,7 @@ def test_handle_sle_cancel_cant_recreate(mocker, default_conf, fee, caplog,
                       buy=MagicMock(return_value={'id': limit_buy_order['id']}),
                       sell=MagicMock(return_value={'id': limit_sell_order['id']}),
                       get_fee=fee,
              -        fetch_stoploss_order=MagicMock(return_value={'status': 'canceled'}),
              +        fetch_stoploss_order=MagicMock(return_value={'status': 'canceled', 'id': 100}),
                       stoploss=MagicMock(side_effect=ExchangeError()),
                   )
                   freqtrade = FreqtradeBot(default_conf)
              @@ -1794,7 +1795,8 @@ def test_update_trade_state_orderexception(mocker, default_conf, caplog) -> None
                   assert log_has(f'Unable to fetch order {trade.open_order_id}: ', caplog)
               
               
              -def test_update_trade_state_sell(default_conf, trades_for_order, limit_sell_order, mocker):
              +def test_update_trade_state_sell(default_conf, trades_for_order, limit_sell_order_open,
              +                                 limit_sell_order, mocker):
                   mocker.patch('freqtrade.exchange.Exchange.get_trades_for_order', return_value=trades_for_order)
                   # fetch_order should not be called!!
                   mocker.patch('freqtrade.exchange.Exchange.fetch_order', MagicMock(side_effect=ValueError))
              @@ -1817,11 +1819,16 @@ def test_update_trade_state_sell(default_conf, trades_for_order, limit_sell_orde
                       open_order_id="123456",
                       is_open=True,
                   )
              +    order = Order.parse_from_ccxt_object(limit_sell_order_open, 'sell')
              +    trade.orders.append(order)
              +    assert order.status == 'open'
                   freqtrade.update_trade_state(trade, limit_sell_order)
                   assert trade.amount == limit_sell_order['amount']
                   # Wallet needs to be updated after closing a limit-sell order to reenable buying
                   assert wallet_mock.call_count == 1
                   assert not trade.is_open
              +    # Order is updated by update_trade_state
              +    assert order.status == 'closed'
               
               
               def test_handle_trade(default_conf, limit_buy_order, limit_sell_order_open, limit_sell_order,
              
              From 4434a54d598b1a1ec3ea1fa2122d90834dfa91cf Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 16:14:28 +0200
              Subject: [PATCH 2919/3421] Add unique key to order-Model
              
              ---
               freqtrade/freqtradebot.py       | 6 +++---
               freqtrade/persistence/models.py | 9 +++++++--
               2 files changed, 10 insertions(+), 5 deletions(-)
              
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index 18d39e471..038bf1f4f 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -527,7 +527,7 @@ class FreqtradeBot:
                       order = self.exchange.buy(pair=pair, ordertype=order_type,
                                                 amount=amount, rate=buy_limit_requested,
                                                 time_in_force=time_in_force)
              -        order_obj = Order.parse_from_ccxt_object(order, 'buy')
              +        order_obj = Order.parse_from_ccxt_object(order, pair, 'buy')
                       order_id = order['id']
                       order_status = order.get('status', None)
               
              @@ -784,7 +784,7 @@ class FreqtradeBot:
                                                                   stop_price=stop_price,
                                                                   order_types=self.strategy.order_types)
               
              -            order_obj = Order.parse_from_ccxt_object(stoploss_order, 'stoploss')
              +            order_obj = Order.parse_from_ccxt_object(stoploss_order, trade.pair, 'stoploss')
                           trade.orders.append(order_obj)
                           trade.stoploss_order_id = str(stoploss_order['id'])
                           return True
              @@ -1137,7 +1137,7 @@ class FreqtradeBot:
                                                  time_in_force=time_in_force
                                                  )
               
              -        order_obj = Order.parse_from_ccxt_object(order, 'sell')
              +        order_obj = Order.parse_from_ccxt_object(order, trade.pair, 'sell')
                       trade.orders.append(order_obj)
               
                       trade.open_order_id = order['id']
              diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
              index d930fbeb7..14e2b0da8 100644
              --- a/freqtrade/persistence/models.py
              +++ b/freqtrade/persistence/models.py
              @@ -15,6 +15,7 @@ from sqlalchemy.orm import Query, relationship
               from sqlalchemy.orm.scoping import scoped_session
               from sqlalchemy.orm.session import sessionmaker
               from sqlalchemy.pool import StaticPool
              +from sqlalchemy.sql.schema import UniqueConstraint
               
               from freqtrade.exceptions import OperationalException
               from freqtrade.misc import safe_value_fallback
              @@ -101,11 +102,15 @@ class Order(_DECL_BASE):
                   Mirrors CCXT Order structure
                   """
                   __tablename__ = 'orders'
              +    # Uniqueness should be ensured over pair, order_id
              +    # its likely that order_id is unique per Pair on some exchanges.
              +    __table_args__ = (UniqueConstraint('ft_pair', 'order_id'),)
               
                   id = Column(Integer, primary_key=True)
                   trade_id = Column(Integer, ForeignKey('trades.id'), index=True)
               
                   ft_order_side = Column(String, nullable=False)
              +    ft_pair = Column(String, nullable=False)
               
                   order_id = Column(String, nullable=False, index=True)
                   status = Column(String, nullable=True)
              @@ -159,11 +164,11 @@ class Order(_DECL_BASE):
                           logger.warning(f"Did not find order for {order['id']}.")
               
                   @staticmethod
              -    def parse_from_ccxt_object(order: Dict[str, Any], side: str) -> 'Order':
              +    def parse_from_ccxt_object(order: Dict[str, Any], pair: str, side: str) -> 'Order':
                       """
                       Parse an order from a ccxt object and return a new order Object.
                       """
              -        o = Order(order_id=str(order['id']), ft_order_side=side)
              +        o = Order(order_id=str(order['id']), ft_order_side=side, ft_pair=pair)
               
                       o.update_from_ccxt_object(order)
                       return o
              
              From 2ca6547bafb88026b45e3075fef33858b879f1a8 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 16:14:41 +0200
              Subject: [PATCH 2920/3421] Update tests to have unique ordernumbers
              
              ---
               tests/test_freqtradebot.py | 16 ++++++++++++++--
               1 file changed, 14 insertions(+), 2 deletions(-)
              
              diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
              index 1f7984a43..17d1a7ea3 100644
              --- a/tests/test_freqtradebot.py
              +++ b/tests/test_freqtradebot.py
              @@ -192,6 +192,7 @@ def test_check_available_stake_amount(default_conf, ticker, mocker, fee, limit_b
                   for i in range(0, max_open):
               
                       if expected[i] is not None:
              +            limit_buy_order_open['id'] = str(i)
                           result = freqtrade.get_trade_stake_amount('ETH/BTC')
                           assert pytest.approx(result) == expected[i]
                           freqtrade.execute_buy('ETH/BTC', result)
              @@ -740,6 +741,8 @@ def test_create_trades_preopen(default_conf, ticker, fee, mocker, limit_buy_orde
                   freqtrade.execute_buy('NEO/BTC', default_conf['stake_amount'])
               
                   assert len(Trade.get_open_trades()) == 2
              +    # Change order_id for new orders
              +    limit_buy_order_open['id'] = '123444'
               
                   # Create 2 new trades using create_trades
                   assert freqtrade.create_trade('ETH/BTC')
              @@ -997,6 +1000,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order, limit_buy_order
                   assert freqtrade.strategy.confirm_trade_entry.call_count == 1
                   buy_rate_mock.reset_mock()
               
              +    limit_buy_order_open['id'] = '22'
                   freqtrade.strategy.confirm_trade_entry = MagicMock(return_value=True)
                   assert freqtrade.execute_buy(pair, stake_amount)
                   assert buy_rate_mock.call_count == 1
              @@ -1012,9 +1016,10 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order, limit_buy_order
                   trade = Trade.query.first()
                   assert trade
                   assert trade.is_open is True
              -    assert trade.open_order_id == limit_buy_order['id']
              +    assert trade.open_order_id == '22'
               
                   # Test calling with price
              +    limit_buy_order_open['id'] = '33'
                   fix_price = 0.06
                   assert freqtrade.execute_buy(pair, stake_amount, fix_price)
                   # Make sure get_buy_rate wasn't called again
              @@ -1030,6 +1035,8 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order, limit_buy_order
                   limit_buy_order['status'] = 'closed'
                   limit_buy_order['price'] = 10
                   limit_buy_order['cost'] = 100
              +    limit_buy_order['id'] = '444'
              +
                   mocker.patch('freqtrade.exchange.Exchange.buy', MagicMock(return_value=limit_buy_order))
                   assert freqtrade.execute_buy(pair, stake_amount)
                   trade = Trade.query.all()[2]
              @@ -1045,6 +1052,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order, limit_buy_order
                   limit_buy_order['remaining'] = 10.00
                   limit_buy_order['price'] = 0.5
                   limit_buy_order['cost'] = 40.495905365
              +    limit_buy_order['id'] = '555'
                   mocker.patch('freqtrade.exchange.Exchange.buy', MagicMock(return_value=limit_buy_order))
                   assert freqtrade.execute_buy(pair, stake_amount)
                   trade = Trade.query.all()[3]
              @@ -1060,6 +1068,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order, limit_buy_order
                   limit_buy_order['remaining'] = 90.99181073
                   limit_buy_order['price'] = 0.5
                   limit_buy_order['cost'] = 0.0
              +    limit_buy_order['id'] = '66'
                   mocker.patch('freqtrade.exchange.Exchange.buy', MagicMock(return_value=limit_buy_order))
                   assert not freqtrade.execute_buy(pair, stake_amount)
               
              @@ -1087,9 +1096,11 @@ def test_execute_buy_confirm_error(mocker, default_conf, fee, limit_buy_order) -
                   freqtrade.strategy.confirm_trade_entry = MagicMock(side_effect=ValueError)
                   assert freqtrade.execute_buy(pair, stake_amount)
               
              +    limit_buy_order['id'] = '222'
                   freqtrade.strategy.confirm_trade_entry = MagicMock(side_effect=Exception)
                   assert freqtrade.execute_buy(pair, stake_amount)
               
              +    limit_buy_order['id'] = '2223'
                   freqtrade.strategy.confirm_trade_entry = MagicMock(return_value=True)
                   assert freqtrade.execute_buy(pair, stake_amount)
               
              @@ -1315,6 +1326,7 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee,
                   assert rpc_mock.call_args_list[1][0][0]['order_type'] == 'market'
               
               
              +@pytest.mark.usefixtures("init_persistence")
               def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee,
                                                             limit_buy_order, limit_sell_order) -> None:
                   # When trailing stoploss is set
              @@ -1819,7 +1831,7 @@ def test_update_trade_state_sell(default_conf, trades_for_order, limit_sell_orde
                       open_order_id="123456",
                       is_open=True,
                   )
              -    order = Order.parse_from_ccxt_object(limit_sell_order_open, 'sell')
              +    order = Order.parse_from_ccxt_object(limit_sell_order_open, 'LTC/ETH', 'sell')
                   trade.orders.append(order)
                   assert order.status == 'open'
                   freqtrade.update_trade_state(trade, limit_sell_order)
              
              From 1a305ea8b0f20376faf0f7f650fa22d4ca505be4 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 16:18:03 +0200
              Subject: [PATCH 2921/3421] Fix migrations to use unique key
              
              ---
               freqtrade/freqtradebot.py           | 2 ++
               freqtrade/persistence/migrations.py | 6 +++---
               tests/test_freqtradebot.py          | 2 +-
               3 files changed, 6 insertions(+), 4 deletions(-)
              
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index 038bf1f4f..dac3b7ce1 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -1263,7 +1263,9 @@ class FreqtradeBot:
                       except InvalidOrderException as exception:
                           logger.warning('Unable to fetch order %s: %s', order_id, exception)
                           return False
              +
                       trade.update_order(order)
              +
                       # Try update amount (binance-fix)
                       try:
                           new_amount = self.get_real_amount(trade, order, order_amount)
              diff --git a/freqtrade/persistence/migrations.py b/freqtrade/persistence/migrations.py
              index 55825436d..15e5f56bf 100644
              --- a/freqtrade/persistence/migrations.py
              +++ b/freqtrade/persistence/migrations.py
              @@ -108,14 +108,14 @@ def migrate_trades_table(decl_base, inspector, engine, table_back_name: str, col
               
               def migrate_open_orders_to_trades(engine):
                   engine.execute("""
              -    insert into orders (trade_id, order_id, ft_order_side)
              -    select id, open_order_id,
              +    insert into orders (trade_id, ft_pair, order_id, ft_order_side)
              +    select id trade_id, pair ft_pair, open_order_id,
                       case when close_rate_requested is null then 'buy'
                       else 'sell' end ft_order_side
                   from trades
                   where open_order_id is not null
                   union all
              -    select id, stoploss_order_id, 'stoploss'
              +    select id trade_id, pair ft_pair, stoploss_order_id order_id, 'stoploss' ft_order_side
                   from trades
                   where stoploss_order_id is not null
                   """)
              diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py
              index 17d1a7ea3..a907ce5c2 100644
              --- a/tests/test_freqtradebot.py
              +++ b/tests/test_freqtradebot.py
              @@ -1396,7 +1396,7 @@ def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee,
                   }))
               
                   cancel_order_mock = MagicMock()
              -    stoploss_order_mock = MagicMock()
              +    stoploss_order_mock = MagicMock(return_value={'id': 13434334})
                   mocker.patch('freqtrade.exchange.Exchange.cancel_stoploss_order', cancel_order_mock)
                   mocker.patch('freqtrade.exchange.Exchange.stoploss', stoploss_order_mock)
               
              
              From da2a515d0be4597e5282dd58a3eedf28db281bf6 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 16:55:43 +0200
              Subject: [PATCH 2922/3421] Add delete cascade to alchemy model
              
              ---
               freqtrade/persistence/models.py | 2 +-
               1 file changed, 1 insertion(+), 1 deletion(-)
              
              diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
              index 14e2b0da8..4efdacef8 100644
              --- a/freqtrade/persistence/models.py
              +++ b/freqtrade/persistence/models.py
              @@ -183,7 +183,7 @@ class Trade(_DECL_BASE):
               
                   id = Column(Integer, primary_key=True)
               
              -    orders = relationship("Order", order_by="Order.id")
              +    orders = relationship("Order", order_by="Order.id", cascade="all, delete-orphan")
               
                   exchange = Column(String, nullable=False)
                   pair = Column(String, nullable=False, index=True)
              
              From c4d7aff5c33b8e069ff9d6f910c262f3c1a26ad4 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 17:17:52 +0200
              Subject: [PATCH 2923/3421] Order should have a "is_open" flag
              
              ---
               freqtrade/persistence/migrations.py |  9 +++++----
               freqtrade/persistence/models.py     | 12 ++++++++----
               2 files changed, 13 insertions(+), 8 deletions(-)
              
              diff --git a/freqtrade/persistence/migrations.py b/freqtrade/persistence/migrations.py
              index 15e5f56bf..96b3a0db6 100644
              --- a/freqtrade/persistence/migrations.py
              +++ b/freqtrade/persistence/migrations.py
              @@ -108,14 +108,15 @@ def migrate_trades_table(decl_base, inspector, engine, table_back_name: str, col
               
               def migrate_open_orders_to_trades(engine):
                   engine.execute("""
              -    insert into orders (trade_id, ft_pair, order_id, ft_order_side)
              -    select id trade_id, pair ft_pair, open_order_id,
              +    insert into orders (ft_trade_id, ft_pair, order_id, ft_order_side, ft_is_open)
              +    select id ft_trade_id, pair ft_pair, open_order_id,
                       case when close_rate_requested is null then 'buy'
              -        else 'sell' end ft_order_side
              +        else 'sell' end ft_order_side, true ft_is_open
                   from trades
                   where open_order_id is not null
                   union all
              -    select id trade_id, pair ft_pair, stoploss_order_id order_id, 'stoploss' ft_order_side
              +    select id ft_trade_id, pair ft_pair, stoploss_order_id order_id,
              +        'stoploss' ft_order_side, true ft_is_open
                   from trades
                   where stoploss_order_id is not null
                   """)
              diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
              index 4efdacef8..eb4d42ef5 100644
              --- a/freqtrade/persistence/models.py
              +++ b/freqtrade/persistence/models.py
              @@ -104,13 +104,14 @@ class Order(_DECL_BASE):
                   __tablename__ = 'orders'
                   # Uniqueness should be ensured over pair, order_id
                   # its likely that order_id is unique per Pair on some exchanges.
              -    __table_args__ = (UniqueConstraint('ft_pair', 'order_id'),)
              +    __table_args__ = (UniqueConstraint('ft_pair', 'order_id', name="_order_pair_order_id"),)
               
                   id = Column(Integer, primary_key=True)
              -    trade_id = Column(Integer, ForeignKey('trades.id'), index=True)
              +    ft_trade_id = Column(Integer, ForeignKey('trades.id'), index=True)
               
                   ft_order_side = Column(String, nullable=False)
                   ft_pair = Column(String, nullable=False)
              +    ft_is_open = Column(Boolean, nullable=False, default=True, index=True)
               
                   order_id = Column(String, nullable=False, index=True)
                   status = Column(String, nullable=True)
              @@ -128,7 +129,7 @@ class Order(_DECL_BASE):
               
                   def __repr__(self):
               
              -        return (f'Order(id={self.id}, order_id={self.order_id}, trade_id={self.trade_id}, '
              +        return (f'Order(id={self.id}, order_id={self.order_id}, trade_id={self.ft_trade_id}, '
                               f'side={self.side}, status={self.status})')
               
                   def update_from_ccxt_object(self, order):
              @@ -151,6 +152,10 @@ class Order(_DECL_BASE):
                       if 'timestamp' in order and order['timestamp'] is not None:
                           self.order_date = datetime.fromtimestamp(order['timestamp'] / 1000)
               
              +        if self.status in ('closed', 'canceled', 'cancelled'):
              +            self.ft_is_open = False
              +        self.order_update_date = datetime.now()
              +
                   @staticmethod
                   def update_orders(orders: List['Order'], order: Dict[str, Any]):
                       """
              @@ -159,7 +164,6 @@ class Order(_DECL_BASE):
                       if filtered_orders:
                           oobj = filtered_orders[0]
                           oobj.update_from_ccxt_object(order)
              -            oobj.order_update_date = datetime.now()
                       else:
                           logger.warning(f"Did not find order for {order['id']}.")
               
              
              From 95efc0d688556d80b869ae0c4533d9870414b58b Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 17:18:56 +0200
              Subject: [PATCH 2924/3421] Add open_order_updater
              
              ---
               freqtrade/freqtradebot.py       | 16 ++++++++++++++++
               freqtrade/persistence/models.py |  7 +++++++
               2 files changed, 23 insertions(+)
              
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index dac3b7ce1..db0c852fe 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -227,6 +227,22 @@ class FreqtradeBot:
                       open_trades = len(Trade.get_open_trades())
                       return max(0, self.config['max_open_trades'] - open_trades)
               
              +    def update_open_orders(self):
              +        """
              +        Updates open orders based on order list kept in the database
              +        """
              +        orders = Order.get_open_orders()
              +        logger.info(f"Updating {len(orders)} open orders.")
              +        for order in orders:
              +            try:
              +                if order.ft_order_side == 'stoposs':
              +                    fo = self.exchange.fetch_stoploss_order(order.order_id, order.ft_pair)
              +                else:
              +                    fo = self.exchange.fetch_order(order.order_id, order.ft_pair)
              +                order.update_from_ccxt_object(fo)
              +            except ExchangeError:
              +                logger.warning(f"Error updating {order.order_id}")
              +
               #
               # BUY / enter positions / open trades logic and methods
               #
              diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
              index eb4d42ef5..b6a96b8f3 100644
              --- a/freqtrade/persistence/models.py
              +++ b/freqtrade/persistence/models.py
              @@ -159,6 +159,7 @@ class Order(_DECL_BASE):
                   @staticmethod
                   def update_orders(orders: List['Order'], order: Dict[str, Any]):
                       """
              +        Get all non-closed orders - useful when trying to batch-update orders
                       """
                       filtered_orders = [o for o in orders if o.order_id == order['id']]
                       if filtered_orders:
              @@ -177,6 +178,12 @@ class Order(_DECL_BASE):
                       o.update_from_ccxt_object(order)
                       return o
               
              +    @staticmethod
              +    def get_open_orders():
              +        """
              +        """
              +        return Order.query.filter(Order.ft_is_open.is_(True)).all()
              +
               
               class Trade(_DECL_BASE):
                   """
              
              From 8458a380b8d8ffc0eb5cda78d317c9de17d247ed Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Thu, 13 Aug 2020 19:37:41 +0200
              Subject: [PATCH 2925/3421] Improve order catchup
              
              ---
               freqtrade/freqtradebot.py           |  8 ++++++--
               freqtrade/persistence/migrations.py | 25 ++++++++++++-------------
               freqtrade/persistence/models.py     |  4 +++-
               3 files changed, 21 insertions(+), 16 deletions(-)
              
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index db0c852fe..490169790 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -134,6 +134,8 @@ class FreqtradeBot:
                           # Adjust stoploss if it was changed
                           Trade.stoploss_reinitialization(self.strategy.stoploss)
               
              +        self.update_open_orders()
              +
                   def process(self) -> None:
                       """
                       Queries the persistence layer for open trades and handles them,
              @@ -235,11 +237,13 @@ class FreqtradeBot:
                       logger.info(f"Updating {len(orders)} open orders.")
                       for order in orders:
                           try:
              -                if order.ft_order_side == 'stoposs':
              +                if order.ft_order_side == 'stoploss':
                                   fo = self.exchange.fetch_stoploss_order(order.order_id, order.ft_pair)
                               else:
                                   fo = self.exchange.fetch_order(order.order_id, order.ft_pair)
              -                order.update_from_ccxt_object(fo)
              +
              +                self.update_trade_state(order.trade, fo, sl_order=order.ft_order_side == 'stoploss')
              +
                           except ExchangeError:
                               logger.warning(f"Error updating {order.order_id}")
               
              diff --git a/freqtrade/persistence/migrations.py b/freqtrade/persistence/migrations.py
              index 96b3a0db6..b6fa8f9ae 100644
              --- a/freqtrade/persistence/migrations.py
              +++ b/freqtrade/persistence/migrations.py
              @@ -108,18 +108,18 @@ def migrate_trades_table(decl_base, inspector, engine, table_back_name: str, col
               
               def migrate_open_orders_to_trades(engine):
                   engine.execute("""
              -    insert into orders (ft_trade_id, ft_pair, order_id, ft_order_side, ft_is_open)
              -    select id ft_trade_id, pair ft_pair, open_order_id,
              -        case when close_rate_requested is null then 'buy'
              -        else 'sell' end ft_order_side, true ft_is_open
              -    from trades
              -    where open_order_id is not null
              -    union all
              -    select id ft_trade_id, pair ft_pair, stoploss_order_id order_id,
              -        'stoploss' ft_order_side, true ft_is_open
              -    from trades
              -    where stoploss_order_id is not null
              -    """)
              +        insert into orders (ft_trade_id, ft_pair, order_id, ft_order_side, ft_is_open)
              +        select id ft_trade_id, pair ft_pair, open_order_id,
              +            case when close_rate_requested is null then 'buy'
              +            else 'sell' end ft_order_side, true ft_is_open
              +        from trades
              +        where open_order_id is not null
              +        union all
              +        select id ft_trade_id, pair ft_pair, stoploss_order_id order_id,
              +            'stoploss' ft_order_side, true ft_is_open
              +        from trades
              +        where stoploss_order_id is not null
              +        """)
               
               
               def check_migrate(engine, decl_base, previous_tables) -> None:
              @@ -144,7 +144,6 @@ def check_migrate(engine, decl_base, previous_tables) -> None:
                       logger.info('Moving open orders to Orders table.')
                       migrate_open_orders_to_trades(engine)
                   else:
              -        logger.info(f'Running database migration for orders - backup: {table_back_name}')
                       pass
                       # Empty for now - as there is only one iteration of the orders table so far.
                       # table_back_name = get_backup_name(tabs, 'orders_bak')
              diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
              index b6a96b8f3..3f918670a 100644
              --- a/freqtrade/persistence/models.py
              +++ b/freqtrade/persistence/models.py
              @@ -109,6 +109,8 @@ class Order(_DECL_BASE):
                   id = Column(Integer, primary_key=True)
                   ft_trade_id = Column(Integer, ForeignKey('trades.id'), index=True)
               
              +    trade = relationship("Trade", back_populates="orders")
              +
                   ft_order_side = Column(String, nullable=False)
                   ft_pair = Column(String, nullable=False)
                   ft_is_open = Column(Boolean, nullable=False, default=True, index=True)
              @@ -179,7 +181,7 @@ class Order(_DECL_BASE):
                       return o
               
                   @staticmethod
              -    def get_open_orders():
              +    def get_open_orders() -> List['Order']:
                       """
                       """
                       return Order.query.filter(Order.ft_is_open.is_(True)).all()
              
              From a6fc922f2830481c1d4b18b40a79acf9204c2b85 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 09:56:48 +0200
              Subject: [PATCH 2926/3421] Introduce insufficientFunds Exception
              
              ---
               docs/developer.md       | 2 ++
               freqtrade/exceptions.py | 7 +++++++
               2 files changed, 9 insertions(+)
              
              diff --git a/docs/developer.md b/docs/developer.md
              index f09ae2c76..b79930061 100644
              --- a/docs/developer.md
              +++ b/docs/developer.md
              @@ -110,6 +110,8 @@ Below is an outline of exception inheritance hierarchy:
               |       +---+ InvalidOrderException
               |           |
               |           +---+ RetryableOrderError
              +|           |
              +|           +---+ InsufficientFundsError
               |
               +---+ StrategyError
               ```
              diff --git a/freqtrade/exceptions.py b/freqtrade/exceptions.py
              index e2bc969a9..caf970606 100644
              --- a/freqtrade/exceptions.py
              +++ b/freqtrade/exceptions.py
              @@ -51,6 +51,13 @@ class RetryableOrderError(InvalidOrderException):
                   """
               
               
              +class InsufficientFundsError(InvalidOrderException):
              +    """
              +    This error is used when there are not enough funds available on the exchange
              +    to create an order.
              +    """
              +
              +
               class TemporaryError(ExchangeError):
                   """
                   Temporary network or exchange related error.
              
              From 22af82631a912b0e07c0b35138f2395d9db71d09 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 09:57:13 +0200
              Subject: [PATCH 2927/3421] Introduce InsufficientFundsError exception
              
              ---
               freqtrade/exchange/binance.py  | 4 ++--
               freqtrade/exchange/exchange.py | 3 ++-
               freqtrade/exchange/ftx.py      | 3 ++-
               freqtrade/exchange/kraken.py   | 4 ++--
               4 files changed, 8 insertions(+), 6 deletions(-)
              
              diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py
              index f2fe1d6ad..d7da34482 100644
              --- a/freqtrade/exchange/binance.py
              +++ b/freqtrade/exchange/binance.py
              @@ -4,7 +4,7 @@ from typing import Dict
               
               import ccxt
               
              -from freqtrade.exceptions import (DDosProtection, ExchangeError,
              +from freqtrade.exceptions import (DDosProtection, InsufficientFundsError,
                                                 InvalidOrderException, OperationalException,
                                                 TemporaryError)
               from freqtrade.exchange import Exchange
              @@ -80,7 +80,7 @@ class Binance(Exchange):
                                       'stop price: %s. limit: %s', pair, stop_price, rate)
                           return order
                       except ccxt.InsufficientFunds as e:
              -            raise ExchangeError(
              +            raise InsufficientFundsError(
                               f'Insufficient funds to create {ordertype} sell order on market {pair}. '
                               f'Tried to sell amount {amount} at rate {rate}. '
                               f'Message: {e}') from e
              diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
              index bcb511010..578d753a4 100644
              --- a/freqtrade/exchange/exchange.py
              +++ b/freqtrade/exchange/exchange.py
              @@ -20,6 +20,7 @@ from pandas import DataFrame
               from freqtrade.constants import ListPairsWithTimeframes
               from freqtrade.data.converter import ohlcv_to_dataframe, trades_dict_to_list
               from freqtrade.exceptions import (DDosProtection, ExchangeError,
              +                                  InsufficientFundsError,
                                                 InvalidOrderException, OperationalException,
                                                 RetryableOrderError, TemporaryError)
               from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async
              @@ -525,7 +526,7 @@ class Exchange:
                                                         amount, rate_for_order, params)
               
                       except ccxt.InsufficientFunds as e:
              -            raise ExchangeError(
              +            raise InsufficientFundsError(
                               f'Insufficient funds to create {ordertype} {side} order on market {pair}. '
                               f'Tried to {side} amount {amount} at rate {rate}.'
                               f'Message: {e}') from e
              diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py
              index 01e8267ad..9c506c88e 100644
              --- a/freqtrade/exchange/ftx.py
              +++ b/freqtrade/exchange/ftx.py
              @@ -5,6 +5,7 @@ from typing import Dict
               import ccxt
               
               from freqtrade.exceptions import (DDosProtection, ExchangeError,
              +                                  InsufficientFundsError,
                                                 InvalidOrderException, OperationalException,
                                                 TemporaryError)
               from freqtrade.exchange import Exchange
              @@ -61,7 +62,7 @@ class Ftx(Exchange):
                                       'stop price: %s.', pair, stop_price)
                           return order
                       except ccxt.InsufficientFunds as e:
              -            raise ExchangeError(
              +            raise InsufficientFundsError(
                               f'Insufficient funds to create {ordertype} sell order on market {pair}. '
                               f'Tried to create stoploss with amount {amount} at stoploss {stop_price}. '
                               f'Message: {e}') from e
              diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py
              index 7b9d0f09b..17e181527 100644
              --- a/freqtrade/exchange/kraken.py
              +++ b/freqtrade/exchange/kraken.py
              @@ -4,7 +4,7 @@ from typing import Dict
               
               import ccxt
               
              -from freqtrade.exceptions import (DDosProtection, ExchangeError,
              +from freqtrade.exceptions import (DDosProtection, InsufficientFundsError,
                                                 InvalidOrderException, OperationalException,
                                                 TemporaryError)
               from freqtrade.exchange import Exchange
              @@ -88,7 +88,7 @@ class Kraken(Exchange):
                                       'stop price: %s.', pair, stop_price)
                           return order
                       except ccxt.InsufficientFunds as e:
              -            raise ExchangeError(
              +            raise InsufficientFundsError(
                               f'Insufficient funds to create {ordertype} sell order on market {pair}. '
                               f'Tried to create stoploss with amount {amount} at stoploss {stop_price}. '
                               f'Message: {e}') from e
              
              From 552aaf79459fbc66ad02e4c517bfd5d69ff2d090 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 10:59:55 +0200
              Subject: [PATCH 2928/3421] add refind order logic
              
              ---
               freqtrade/freqtradebot.py | 55 ++++++++++++++++++++++++++++++++++-----
               1 file changed, 48 insertions(+), 7 deletions(-)
              
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index 490169790..91adbc598 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -17,7 +17,7 @@ from freqtrade.configuration import validate_config_consistency
               from freqtrade.data.converter import order_book_to_dataframe
               from freqtrade.data.dataprovider import DataProvider
               from freqtrade.edge import Edge
              -from freqtrade.exceptions import (DependencyException, ExchangeError,
              +from freqtrade.exceptions import (DependencyException, ExchangeError, InsufficientFundsError,
                                                 InvalidOrderException, PricingError)
               from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date
               from freqtrade.misc import safe_value_fallback, safe_value_fallback2
              @@ -247,6 +247,36 @@ class FreqtradeBot:
                           except ExchangeError:
                               logger.warning(f"Error updating {order.order_id}")
               
              +    def refind_lost_order(self, trade):
              +        """
              +        Try refinding a lost trade.
              +        Only used when InsufficientFunds appears on sell orders (stoploss or sell).
              +        Tries to walk the stored orders and sell them off eventually.
              +        """
              +        logger.info(f"Trying to refind lost order for {trade}")
              +        for order in trade.orders:
              +            logger.info(f"Trying to refind {order}")
              +            fo = None
              +            try:
              +                if order.ft_order_side == 'stoploss':
              +                    fo = self.exchange.fetch_stoploss_order(order.order_id, order.ft_pair)
              +                    if fo and fo['status'] == 'open':
              +                        # Assume this as the open stoploss order
              +                        trade.stoploss_order_id = order.order_id
              +                elif order.ft_order_side == 'sell':
              +                    fo = self.exchange.fetch_order(order.order_id, order.ft_pair)
              +                    if fo and fo['status'] == 'open':
              +                        # Assume this as the open order
              +                        trade.open_order_id = order.order_id
              +                else:
              +                    # No action for buy orders ...
              +                    continue
              +                if fo:
              +                    self.update_trade_state(trade, fo, sl_order=order.ft_order_side == 'stoploss')
              +
              +            except ExchangeError:
              +                logger.warning(f"Error updating {order.order_id}")
              +
               #
               # BUY / enter positions / open trades logic and methods
               #
              @@ -808,6 +838,11 @@ class FreqtradeBot:
                           trade.orders.append(order_obj)
                           trade.stoploss_order_id = str(stoploss_order['id'])
                           return True
              +        except InsufficientFundsError as e:
              +            logger.warning(f"Unable to place stoploss order {e}.")
              +            # Try refinding stoploss order
              +            self.refind_lost_order(trade)
              +
                       except InvalidOrderException as e:
                           trade.stoploss_order_id = None
                           logger.error(f'Unable to place a stoploss order on exchange. {e}')
              @@ -1150,12 +1185,18 @@ class FreqtradeBot:
                           logger.info(f"User requested abortion of selling {trade.pair}")
                           return False
               
              -        # Execute sell and update trade record
              -        order = self.exchange.sell(pair=trade.pair,
              -                                   ordertype=order_type,
              -                                   amount=amount, rate=limit,
              -                                   time_in_force=time_in_force
              -                                   )
              +        try:
              +            # Execute sell and update trade record
              +            order = self.exchange.sell(pair=trade.pair,
              +                                       ordertype=order_type,
              +                                       amount=amount, rate=limit,
              +                                       time_in_force=time_in_force
              +                                       )
              +        except InsufficientFundsError as e:
              +            logger.warning(f"Unable to place order {e}.")
              +            # Try refinding "lost" orders
              +            self.refind_lost_order(trade)
              +            return False
               
                       order_obj = Order.parse_from_ccxt_object(order, trade.pair, 'sell')
                       trade.orders.append(order_obj)
              
              From b25267ad3d78d1bf815d69ac0bc68a468e31ece4 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 11:13:55 +0200
              Subject: [PATCH 2929/3421] Build docker image for db_keep_orders branch
              
              ---
               .github/workflows/ci.yml | 1 +
               1 file changed, 1 insertion(+)
              
              diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
              index 239576c61..54f0e4444 100644
              --- a/.github/workflows/ci.yml
              +++ b/.github/workflows/ci.yml
              @@ -6,6 +6,7 @@ on:
                     - master
                     - develop
                     - github_actions_tests
              +      - db_keep_orders
                   tags:
                   release:
                     types: [published]
              
              From cfa352ecf2c275ce46defeac53460ef26d5b5c23 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 11:25:20 +0200
              Subject: [PATCH 2930/3421] Disable refind_lost_order for now
              
              ---
               freqtrade/freqtradebot.py | 9 ++++++---
               1 file changed, 6 insertions(+), 3 deletions(-)
              
              diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py
              index 91adbc598..0dac4d888 100644
              --- a/freqtrade/freqtradebot.py
              +++ b/freqtrade/freqtradebot.py
              @@ -841,7 +841,8 @@ class FreqtradeBot:
                       except InsufficientFundsError as e:
                           logger.warning(f"Unable to place stoploss order {e}.")
                           # Try refinding stoploss order
              -            self.refind_lost_order(trade)
              +            # TODO: Currently disabled to allow testing without this first
              +            # self.refind_lost_order(trade)
               
                       except InvalidOrderException as e:
                           trade.stoploss_order_id = None
              @@ -933,7 +934,8 @@ class FreqtradeBot:
                               logger.info('Trailing stoploss: cancelling current stoploss on exchange (id:{%s}) '
                                           'in order to add another one ...', order['id'])
                               try:
              -                    self.exchange.cancel_stoploss_order(order['id'], trade.pair)
              +                    co = self.exchange.cancel_stoploss_order(order['id'], trade.pair)
              +                    trade.update_order(co)
                               except InvalidOrderException:
                                   logger.exception(f"Could not cancel stoploss order {order['id']} "
                                                    f"for pair {trade.pair}")
              @@ -1195,7 +1197,8 @@ class FreqtradeBot:
                       except InsufficientFundsError as e:
                           logger.warning(f"Unable to place order {e}.")
                           # Try refinding "lost" orders
              -            self.refind_lost_order(trade)
              +            # TODO: Currently disabled to allow testing without this first
              +            # self.refind_lost_order(trade)
                           return False
               
                       order_obj = Order.parse_from_ccxt_object(order, trade.pair, 'sell')
              
              From d8fdd32b548222e3852adc401e14e1019258ee1c Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 11:25:40 +0200
              Subject: [PATCH 2931/3421] FIx migrations
              
              ---
               freqtrade/persistence/migrations.py | 4 ++--
               1 file changed, 2 insertions(+), 2 deletions(-)
              
              diff --git a/freqtrade/persistence/migrations.py b/freqtrade/persistence/migrations.py
              index b6fa8f9ae..5089953b2 100644
              --- a/freqtrade/persistence/migrations.py
              +++ b/freqtrade/persistence/migrations.py
              @@ -111,12 +111,12 @@ def migrate_open_orders_to_trades(engine):
                       insert into orders (ft_trade_id, ft_pair, order_id, ft_order_side, ft_is_open)
                       select id ft_trade_id, pair ft_pair, open_order_id,
                           case when close_rate_requested is null then 'buy'
              -            else 'sell' end ft_order_side, true ft_is_open
              +            else 'sell' end ft_order_side, 1 ft_is_open
                       from trades
                       where open_order_id is not null
                       union all
                       select id ft_trade_id, pair ft_pair, stoploss_order_id order_id,
              -            'stoploss' ft_order_side, true ft_is_open
              +            'stoploss' ft_order_side, 1 ft_is_open
                       from trades
                       where stoploss_order_id is not null
                       """)
              
              From 06125df10c5b9f041ad4d113e2fa673385895bf0 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 11:31:02 +0200
              Subject: [PATCH 2932/3421] Remove unused import
              
              ---
               freqtrade/exchange/ftx.py | 3 +--
               1 file changed, 1 insertion(+), 2 deletions(-)
              
              diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py
              index 9c506c88e..27051a945 100644
              --- a/freqtrade/exchange/ftx.py
              +++ b/freqtrade/exchange/ftx.py
              @@ -4,8 +4,7 @@ from typing import Dict
               
               import ccxt
               
              -from freqtrade.exceptions import (DDosProtection, ExchangeError,
              -                                  InsufficientFundsError,
              +from freqtrade.exceptions import (DDosProtection, InsufficientFundsError,
                                                 InvalidOrderException, OperationalException,
                                                 TemporaryError)
               from freqtrade.exchange import Exchange
              
              From 48944fd4cb441604703a338336a2786bcbca7a04 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 14:41:46 +0200
              Subject: [PATCH 2933/3421] Logging with queueHandler
              
              ---
               freqtrade/loggers.py | 38 +++++++++++++++++++++++++++++---------
               freqtrade/main.py    | 13 +++++++------
               2 files changed, 36 insertions(+), 15 deletions(-)
              
              diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py
              index aa08ee8a7..eed480164 100644
              --- a/freqtrade/loggers.py
              +++ b/freqtrade/loggers.py
              @@ -1,14 +1,15 @@
               import logging
              +import queue
               import sys
              -
               from logging import Formatter
              -from logging.handlers import RotatingFileHandler, SysLogHandler
              +from logging.handlers import RotatingFileHandler, SysLogHandler, QueueHandler, QueueListener
               from typing import Any, Dict, List
               
               from freqtrade.exceptions import OperationalException
               
              -
               logger = logging.getLogger(__name__)
              +log_queue = queue.Queue(-1)
              +LOGFORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
               
               
               def _set_loggers(verbosity: int = 0, api_verbosity: str = 'info') -> None:
              @@ -33,6 +34,25 @@ def _set_loggers(verbosity: int = 0, api_verbosity: str = 'info') -> None:
                   )
               
               
              +def setup_logging_pre() -> None:
              +    """
              +    Setup early logging.
              +    This uses a queuehandler, which delays logging.
              +    # TODO: How does QueueHandler work if no listenerhandler is attached??
              +    """
              +    logging.root.setLevel(logging.INFO)
              +    fmt = logging.Formatter(LOGFORMAT)
              +
              +    queue_handler = QueueHandler(log_queue)
              +    queue_handler.setFormatter(fmt)
              +    logger.root.addHandler(queue_handler)
              +
              +    # Add streamhandler here to capture Errors before QueueListener is started
              +    sth = logging.StreamHandler(sys.stderr)
              +    sth.setFormatter(fmt)
              +    logger.root.addHandler(sth)
              +
              +
               def setup_logging(config: Dict[str, Any]) -> None:
                   """
                   Process -v/--verbose, --logfile options
              @@ -41,7 +61,7 @@ def setup_logging(config: Dict[str, Any]) -> None:
                   verbosity = config['verbosity']
               
                   # Log to stderr
              -    log_handlers: List[logging.Handler] = [logging.StreamHandler(sys.stderr)]
              +    log_handlers: List[logging.Handler] = []
               
                   logfile = config.get('logfile')
                   if logfile:
              @@ -76,10 +96,10 @@ def setup_logging(config: Dict[str, Any]) -> None:
                                                                   maxBytes=1024 * 1024,  # 1Mb
                                                                   backupCount=10))
               
              -    logging.basicConfig(
              -        level=logging.INFO if verbosity < 1 else logging.DEBUG,
              -        format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
              -        handlers=log_handlers
              -    )
              +    listener = QueueListener(log_queue, *log_handlers)
              +
              +    # logging.root.setFormatter(logging.Formatter(LOGFORMAT))
              +    logging.root.setLevel(logging.INFO if verbosity < 1 else logging.DEBUG)
              +    listener.start()
                   _set_loggers(verbosity, config.get('api_server', {}).get('verbosity', 'info'))
                   logger.info('Verbosity set to %s', verbosity)
              diff --git a/freqtrade/main.py b/freqtrade/main.py
              index 08bdc5e32..eeb975953 100755
              --- a/freqtrade/main.py
              +++ b/freqtrade/main.py
              @@ -3,18 +3,18 @@
               Main Freqtrade bot script.
               Read the documentation to know what cli arguments you need.
               """
              -
              -from freqtrade.exceptions import FreqtradeException, OperationalException
              +# flake8: noqa E402
              +import logging
               import sys
              +from typing import Any, List
              +
               # check min. python version
               if sys.version_info < (3, 6):
                   sys.exit("Freqtrade requires Python version >= 3.6")
               
              -# flake8: noqa E402
              -import logging
              -from typing import Any, List
              -
               from freqtrade.commands import Arguments
              +from freqtrade.exceptions import FreqtradeException, OperationalException
              +from freqtrade.loggers import setup_logging_pre
               
               
               logger = logging.getLogger('freqtrade')
              @@ -28,6 +28,7 @@ def main(sysargv: List[str] = None) -> None:
               
                   return_code: Any = 1
                   try:
              +        setup_logging_pre()
                       arguments = Arguments(sysargv)
                       args = arguments.get_parsed_arg()
               
              
              From b989ba0f82c610b06ca8dbb2db4033a8e9b567a6 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 14:53:21 +0200
              Subject: [PATCH 2934/3421] Simplify setup of handlers
              
              ---
               freqtrade/loggers.py | 40 ++++++++++++++--------------------------
               1 file changed, 14 insertions(+), 26 deletions(-)
              
              diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py
              index eed480164..f5f383da7 100644
              --- a/freqtrade/loggers.py
              +++ b/freqtrade/loggers.py
              @@ -1,9 +1,8 @@
               import logging
               import queue
              -import sys
               from logging import Formatter
              -from logging.handlers import RotatingFileHandler, SysLogHandler, QueueHandler, QueueListener
              -from typing import Any, Dict, List
              +from logging.handlers import RotatingFileHandler, SysLogHandler
              +from typing import Any, Dict
               
               from freqtrade.exceptions import OperationalException
               
              @@ -40,17 +39,10 @@ def setup_logging_pre() -> None:
                   This uses a queuehandler, which delays logging.
                   # TODO: How does QueueHandler work if no listenerhandler is attached??
                   """
              -    logging.root.setLevel(logging.INFO)
              -    fmt = logging.Formatter(LOGFORMAT)
              -
              -    queue_handler = QueueHandler(log_queue)
              -    queue_handler.setFormatter(fmt)
              -    logger.root.addHandler(queue_handler)
              -
              -    # Add streamhandler here to capture Errors before QueueListener is started
              -    sth = logging.StreamHandler(sys.stderr)
              -    sth.setFormatter(fmt)
              -    logger.root.addHandler(sth)
              +    logging.basicConfig(
              +        level=logging.INFO,
              +        format=LOGFORMAT,
              +    )
               
               
               def setup_logging(config: Dict[str, Any]) -> None:
              @@ -60,9 +52,6 @@ def setup_logging(config: Dict[str, Any]) -> None:
                   # Log level
                   verbosity = config['verbosity']
               
              -    # Log to stderr
              -    log_handlers: List[logging.Handler] = []
              -
                   logfile = config.get('logfile')
                   if logfile:
                       s = logfile.split(':')
              @@ -78,7 +67,7 @@ def setup_logging(config: Dict[str, Any]) -> None:
                           # to perform reduction of repeating messages if this is set in the
                           # syslog config. The messages should be equal for this.
                           handler.setFormatter(Formatter('%(name)s - %(levelname)s - %(message)s'))
              -            log_handlers.append(handler)
              +            logging.root.addHandler(handler)
                       elif s[0] == 'journald':
                           try:
                               from systemd.journal import JournaldLogHandler
              @@ -90,16 +79,15 @@ def setup_logging(config: Dict[str, Any]) -> None:
                           # to perform reduction of repeating messages if this is set in the
                           # syslog config. The messages should be equal for this.
                           handler.setFormatter(Formatter('%(name)s - %(levelname)s - %(message)s'))
              -            log_handlers.append(handler)
              +            logging.root.addHandler(handler)
                       else:
              -            log_handlers.append(RotatingFileHandler(logfile,
              -                                                    maxBytes=1024 * 1024,  # 1Mb
              -                                                    backupCount=10))
              +            handler = RotatingFileHandler(logfile,
              +                                          maxBytes=1024 * 1024,  # 1Mb
              +                                          backupCount=10)
              +            handler.setFormatter(Formatter(LOGFORMAT))
              +            logging.root.addHandler(handler)
               
              -    listener = QueueListener(log_queue, *log_handlers)
              -
              -    # logging.root.setFormatter(logging.Formatter(LOGFORMAT))
                   logging.root.setLevel(logging.INFO if verbosity < 1 else logging.DEBUG)
              -    listener.start()
                   _set_loggers(verbosity, config.get('api_server', {}).get('verbosity', 'info'))
              +
                   logger.info('Verbosity set to %s', verbosity)
              
              From 5f79caa307bcb24e88bd14bba7c691b1ddc238b4 Mon Sep 17 00:00:00 2001
              From: Matthias 
              Date: Fri, 14 Aug 2020 15:44:36 +0200
              Subject: [PATCH 2935/3421] Implement /logs endpoints in telegram and restAPI
              
              ---
               freqtrade/loggers.py           |  7 ++++++-
               freqtrade/rpc/api_server.py    | 13 +++++++++++++
               freqtrade/rpc/rpc.py           | 22 ++++++++++++++++++++--
               freqtrade/rpc/telegram.py      | 30 ++++++++++++++++++++++++++++++
               tests/rpc/test_rpc_telegram.py |  2 +-
               5 files changed, 70 insertions(+), 4 deletions(-)
              
              diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py
              index f5f383da7..0b1337b2c 100644
              --- a/freqtrade/loggers.py
              +++ b/freqtrade/loggers.py
              @@ -1,7 +1,7 @@
               import logging
               import queue
               from logging import Formatter
              -from logging.handlers import RotatingFileHandler, SysLogHandler
              +from logging.handlers import RotatingFileHandler, SysLogHandler, BufferingHandler
               from typing import Any, Dict
               
               from freqtrade.exceptions import OperationalException
              @@ -10,6 +10,10 @@ logger = logging.getLogger(__name__)
               log_queue = queue.Queue(-1)
               LOGFORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
               
              +# Initialize bufferhandler - will be used for /log endpoints
              +bufferHandler = BufferingHandler(1000)
              +bufferHandler.setFormatter(Formatter(LOGFORMAT))
              +
               
               def _set_loggers(verbosity: int = 0, api_verbosity: str = 'info') -> None:
                   """
              @@ -51,6 +55,7 @@ def setup_logging(config: Dict[str, Any]) -> None:
                   """
                   # Log level
                   verbosity = config['verbosity']
              +    logging.root.addHandler(bufferHandler)
               
                   logfile = config.get('logfile')
                   if logfile:
              diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py
              index 06926ac35..cb2236878 100644
              --- a/freqtrade/rpc/api_server.py
              +++ b/freqtrade/rpc/api_server.py
              @@ -186,6 +186,7 @@ class ApiServer(RPC):
                       self.app.add_url_rule(f'{BASE_URI}/count', 'count', view_func=self._count, methods=['GET'])
                       self.app.add_url_rule(f'{BASE_URI}/daily', 'daily', view_func=self._daily, methods=['GET'])
                       self.app.add_url_rule(f'{BASE_URI}/edge', 'edge', view_func=self._edge, methods=['GET'])
              +        self.app.add_url_rule(f'{BASE_URI}/logs', 'log', view_func=self._get_logs, methods=['GET'])
                       self.app.add_url_rule(f'{BASE_URI}/profit', 'profit',
                                             view_func=self._profit, methods=['GET'])
                       self.app.add_url_rule(f'{BASE_URI}/performance', 'performance',
              @@ -348,6 +349,18 @@ class ApiServer(RPC):
               
                       return self.rest_dump(stats)
               
              +    @require_login
              +    @rpc_catch_errors
              +    def _get_logs(self):
              +        """
              +        Returns latest logs
              +         get:
              +          param:
              +            limit: Only get a certain number of records
              +        """
              +        limit = int(request.args.get('limit', 0)) or None
              +        return self.rest_dump(self._rpc_get_logs(limit))
              +
                   @require_login
                   @rpc_catch_errors
                   def _edge(self):
              diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py
              index f4e20c16f..5da428a9c 100644
              --- a/freqtrade/rpc/rpc.py
              +++ b/freqtrade/rpc/rpc.py
              @@ -11,9 +11,9 @@ from typing import Any, Dict, List, Optional, Tuple, Union
               import arrow
               from numpy import NAN, mean
               
              -from freqtrade.exceptions import (ExchangeError,
              -                                  PricingError)
              +from freqtrade.exceptions import ExchangeError, PricingError
               from freqtrade.exchange import timeframe_to_minutes, timeframe_to_msecs
              +from freqtrade.loggers import bufferHandler
               from freqtrade.misc import shorten_date
               from freqtrade.persistence import Trade
               from freqtrade.rpc.fiat_convert import CryptoToFiatConverter
              @@ -633,6 +633,24 @@ class RPC:
                              }
                       return res
               
              +    def _rpc_get_logs(self, limit: Optional[int]) -> Dict[str, List]:
              +        """Returns the last X logs"""
              +        if limit:
              +            buffer = bufferHandler.buffer[-limit:]
              +        else:
              +            buffer = bufferHandler.buffer
              +        records = [[r.asctime, r.created, r.name, r.levelname, r.message] for r in buffer]
              +
              +        return {'log_count': len(records), 'logs': records}
              +
              +    def _rpc_get_logs_as_string(self, limit: Optional[int]) -> Dict[str, List]:
              +        """Returns the last X logs"""
              +        if limit:
              +            buffer = bufferHandler.buffer[-limit:]
              +        else:
              +            buffer = bufferHandler.buffer
              +        return [bufferHandler.format(r) for r in buffer]
              +
                   def _rpc_edge(self) -> List[Dict[str, Any]]:
                       """ Returns information related to Edge """
                       if not self._freqtrade.edge:
              diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py
              index f1d3cde21..da93604d1 100644
              --- a/freqtrade/rpc/telegram.py
              +++ b/freqtrade/rpc/telegram.py
              @@ -103,6 +103,7 @@ class Telegram(RPC):
                           CommandHandler('stopbuy', self._stopbuy),
                           CommandHandler('whitelist', self._whitelist),
                           CommandHandler('blacklist', self._blacklist),
              +            CommandHandler('logs', self._logs),
                           CommandHandler('edge', self._edge),
                           CommandHandler('help', self._help),
                           CommandHandler('version', self._version),
              @@ -637,6 +638,34 @@ class Telegram(RPC):
                       except RPCException as e:
                           self._send_msg(str(e))
               
              +    @authorized_only
              +    def _logs(self, update: Update, context: CallbackContext) -> None:
              +        """
              +        Handler for /logs
              +        Shows the latest logs
              +        """
              +        try:
              +            try:
              +                limit = int(context.args[0])
              +            except (TypeError, ValueError, IndexError):
              +                limit = 10
              +            logs = self._rpc_get_logs_as_string(limit)
              +            msg = ''
              +            message_container = "
              {}
              " + for logrec in logs: + if len(msg + logrec) + 10 >= MAX_TELEGRAM_MESSAGE_LENGTH: + # Send message immediately if it would become too long + self._send_msg(message_container.format(msg), parse_mode=ParseMode.HTML) + msg = logrec + '\n' + else: + # Append message to messages to send + msg += logrec + '\n' + + if msg: + self._send_msg(message_container.format(msg), parse_mode=ParseMode.HTML) + except RPCException as e: + self._send_msg(str(e)) + @authorized_only def _edge(self, update: Update, context: CallbackContext) -> None: """ @@ -682,6 +711,7 @@ class Telegram(RPC): "*/stopbuy:* `Stops buying, but handles open trades gracefully` \n" "*/reload_config:* `Reload configuration file` \n" "*/show_config:* `Show running configuration` \n" + "*/logs [limit]:* `Show latest logs - defaults to 10` \n" "*/whitelist:* `Show current whitelist` \n" "*/blacklist [pair]:* `Show current blacklist, or adds one or more pairs " "to the blacklist.` \n" diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index bfa774856..8651b0613 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -76,7 +76,7 @@ def test_telegram_init(default_conf, mocker, caplog) -> None: "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], ['trades'], " "['delete'], ['performance'], ['daily'], ['count'], ['reload_config', " "'reload_conf'], ['show_config', 'show_conf'], ['stopbuy'], " - "['whitelist'], ['blacklist'], ['edge'], ['help'], ['version']]") + "['whitelist'], ['blacklist'], ['logs'], ['edge'], ['help'], ['version']]") assert log_has(message_str, caplog) From 904c4ecc23f14dd3f549ae9d98e773616206ed61 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Aug 2020 15:44:52 +0200 Subject: [PATCH 2936/3421] Document /logs endpoints --- docs/rest-api.md | 74 +++++++++++++++++++++++------------------- docs/telegram-usage.md | 1 + scripts/rest_client.py | 8 +++++ 3 files changed, 49 insertions(+), 34 deletions(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index 68754f79a..075bd7e64 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -116,6 +116,7 @@ python3 scripts/rest_client.py --config rest_config.json [optional par | `trades` | List last trades. | `delete_trade ` | Remove trade from the database. Tries to close open orders. Requires manual handling of this trade on the exchange. | `show_config` | Shows part of the current configuration with relevant settings to operation +| `logs` | Shows last log messages | `status` | Lists all open trades | `count` | Displays number of trades used and available | `profit` | Display a summary of your profit/loss from close trades and some stats about your performance @@ -138,78 +139,83 @@ python3 scripts/rest_client.py help ``` output Possible commands: + balance - Get the account balance - :returns: json object + Get the account balance. blacklist - Show the current blacklist + Show the current blacklist. + :param add: List of coins to add (example: "BNB/BTC") - :returns: json object count - Returns the amount of open trades - :returns: json object + Return the amount of open trades. daily - Returns the amount of open trades - :returns: json object + Return the amount of open trades. + +delete_trade + Delete trade from the database. + Tries to close open orders. Requires manual handling of this asset on the exchange. + + :param trade_id: Deletes the trade with this ID from the database. edge - Returns information about edge - :returns: json object + Return information about edge. forcebuy - Buy an asset + Buy an asset. + :param pair: Pair to buy (ETH/BTC) :param price: Optional - price to buy - :returns: json object of the trade forcesell - Force-sell a trade + Force-sell a trade. + :param tradeid: Id of the trade (can be received via status command) - :returns: json object + +logs + Show latest logs. + + :param limit: Limits log messages to the last logs. No limit to get all the trades. performance - Returns the performance of the different coins - :returns: json object + Return the performance of the different coins. profit - Returns the profit summary - :returns: json object + Return the profit summary. reload_config - Reload configuration - :returns: json object + Reload configuration. show_config + Returns part of the configuration, relevant for trading operations. - :return: json object containing the version start - Start the bot if it's in stopped state. - :returns: json object + Start the bot if it's in the stopped state. status - Get the status of open trades - :returns: json object + Get the status of open trades. stop - Stop the bot. Use start to restart - :returns: json object + Stop the bot. Use `start` to restart. stopbuy - Stop buying (but handle sells gracefully). - use reload_config to reset - :returns: json object + Stop buying (but handle sells gracefully). Use `reload_config` to reset. + +trades + Return trades history. + + :param limit: Limits trades to the X last trades. No limit to get all the trades. version - Returns the version of the bot - :returns: json object containing the version + Return the version of the bot. whitelist - Show the current whitelist - :returns: json object + Show the current whitelist. + + ``` ## Advanced API usage using JWT tokens diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md index 9776b26ba..5f804386d 100644 --- a/docs/telegram-usage.md +++ b/docs/telegram-usage.md @@ -54,6 +54,7 @@ official commands. You can ask at any moment for help with `/help`. | `/stopbuy` | Stops the trader from opening new trades. Gracefully closes open trades according to their rules. | `/reload_config` | Reloads the configuration file | `/show_config` | Shows part of the current configuration with relevant settings to operation +| `/logs [limit]` | Show last log messages. | `/status` | Lists all open trades | `/status table` | List all open trades in a table format. Pending buy orders are marked with an asterisk (*) Pending sell orders are marked with a double asterisk (**) | `/trades [limit]` | List all recently closed trades in a table format. diff --git a/scripts/rest_client.py b/scripts/rest_client.py index 51ea596f6..b100999a3 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -159,6 +159,14 @@ class FtRestClient(): """ return self._get("show_config") + def logs(self, limit=None): + """Show latest logs. + + :param limit: Limits log messages to the last logs. No limit to get all the trades. + :return: json object + """ + return self._get("logs", params={"limit": limit} if limit else 0) + def trades(self, limit=None): """Return trades history. From 47b215fe0aa23f6222b0b1e107e017d3009cf4e8 Mon Sep 17 00:00:00 2001 From: Blackhawke Date: Fri, 14 Aug 2020 09:25:53 -0700 Subject: [PATCH 2937/3421] Update docs/edge.md Co-authored-by: Matthias --- docs/edge.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index ccbae1cb1..1695732af 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -190,7 +190,9 @@ An example of its output: Edge produced the above table by comparing ``calculate_since_number_of_days`` to ``minimum_expectancy`` to find ``min_trade_number``. Historical information based on the config file. The time frame Edge uses for its comparisons can be further limited by using the ``--timeframe`` switch. -In live and dry-run modes, after the ``process_throttle_secs`` has passed, Edge will again process ``calculate_since_number_of_days`` against ``minimum_expectancy`` to find ``min_trade_number``. If no ``min_trade_number`` is found, the bot will return "whitelist empty". Depending on the trade strategy being deployed, "whitelist empty" may be return much of the time---or *all* of the time. The use of Edge may also cause trading to occur in bursts, though this is rare. +In live and dry-run modes, after the `process_throttle_secs` has passed, Edge will again process `calculate_since_number_of_days` against `minimum_expectancy` to find `min_trade_number`. If no `min_trade_number` is found, the bot will return "whitelist empty". Depending on the trade strategy being deployed, "whitelist empty" may be return much of the time - or *all* of the time. The use of Edge may also cause trading to occur in bursts, though this is rare. + +If you encounter "whitelist empty" a lot, condsider tuning `calculate_since_number_of_days`, `minimum_expectancy` and `min_trade_number` to align to the trading frequency of your strategy. ### Update cached pairs with the latest data From a14ce9d7d9df45bf5ba9ce8e02c559ae8477c064 Mon Sep 17 00:00:00 2001 From: Blackhawke Date: Fri, 14 Aug 2020 09:26:28 -0700 Subject: [PATCH 2938/3421] Update docs/edge.md Co-authored-by: Matthias --- docs/edge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index 1695732af..dad23bfd6 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -188,7 +188,7 @@ An example of its output: | APPC/BTC | -0.02 | 0.44 | 2.28 | 1.27 | 0.44 | 25 | 43 | | NEBL/BTC | -0.03 | 0.63 | 1.29 | 0.58 | 0.44 | 19 | 59 | -Edge produced the above table by comparing ``calculate_since_number_of_days`` to ``minimum_expectancy`` to find ``min_trade_number``. Historical information based on the config file. The time frame Edge uses for its comparisons can be further limited by using the ``--timeframe`` switch. +Edge produced the above table by comparing `calculate_since_number_of_days` to `minimum_expectancy` to find `min_trade_number` historical information based on the config file. The timerange Edge uses for its comparisons can be further limited by using the `--timerange` switch. In live and dry-run modes, after the `process_throttle_secs` has passed, Edge will again process `calculate_since_number_of_days` against `minimum_expectancy` to find `min_trade_number`. If no `min_trade_number` is found, the bot will return "whitelist empty". Depending on the trade strategy being deployed, "whitelist empty" may be return much of the time - or *all* of the time. The use of Edge may also cause trading to occur in bursts, though this is rare. From f3cedc849aa223407890d4c216cfec17cdfda02d Mon Sep 17 00:00:00 2001 From: Blackhawke Date: Fri, 14 Aug 2020 09:27:04 -0700 Subject: [PATCH 2939/3421] Update docs/edge.md Co-authored-by: Matthias --- docs/edge.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/edge.md b/docs/edge.md index dad23bfd6..2bc43a4e8 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -5,10 +5,9 @@ This page explains how to use Edge Positioning module in your bot in order to en !!! Warning Edge positioning is not compatible with dynamic (volume-based) whitelist. - !!! Note - 1. Edge does not consider anything other than *its own* buy/sell/stoploss signals. It ignores the stoploss, trailing stoploss, and ROI settings in the strategy configuration file. - - 2. Therefore, it is important to understand that Edge can improve the performance of some trading strategies but *decrease* the performance of others. +!!! Note + Edge does not consider anything other than *its own* buy/sell/stoploss signals. It ignores the stoploss, trailing stoploss, and ROI settings in the strategy configuration file. + Therefore, it is important to understand that Edge can improve the performance of some trading strategies but *decrease* the performance of others. ## Introduction From 5d691b5ee3872129c3cd6a7bdfd70836e79e72fd Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Aug 2020 19:34:22 +0200 Subject: [PATCH 2940/3421] Fix warning box typo --- docs/edge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index 2bc43a4e8..dcb559f96 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -2,7 +2,7 @@ This page explains how to use Edge Positioning module in your bot in order to enter into a trade only if the trade has a reasonable win rate and risk reward ratio, and consequently adjust your position size and stoploss. - !!! Warning +!!! Warning Edge positioning is not compatible with dynamic (volume-based) whitelist. !!! Note From 9ad8e74247ed1fb1bb50b39309e22528567e372f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Aug 2020 19:36:12 +0200 Subject: [PATCH 2941/3421] Add tests for log-endpoints --- freqtrade/main.py | 1 - freqtrade/rpc/rpc.py | 5 +++-- tests/rpc/test_rpc_apiserver.py | 27 ++++++++++++++++++++++++++- tests/rpc/test_rpc_telegram.py | 21 +++++++++++++++++++++ 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/freqtrade/main.py b/freqtrade/main.py index eeb975953..dc26c2a46 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -3,7 +3,6 @@ Main Freqtrade bot script. Read the documentation to know what cli arguments you need. """ -# flake8: noqa E402 import logging import sys from typing import Any, List diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 5da428a9c..dd35b9613 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -639,12 +639,13 @@ class RPC: buffer = bufferHandler.buffer[-limit:] else: buffer = bufferHandler.buffer - records = [[r.asctime, r.created, r.name, r.levelname, r.message] for r in buffer] + records = [[datetime.fromtimestamp(r.created), r.created, r.name, r.levelname, r.message] + for r in buffer] return {'log_count': len(records), 'logs': records} def _rpc_get_logs_as_string(self, limit: Optional[int]) -> Dict[str, List]: - """Returns the last X logs""" + """Returns the last X logs as formatted string (Using the default log format)""" if limit: buffer = bufferHandler.buffer[-limit:] else: diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 408f7e537..2fb1e3ec1 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -10,10 +10,12 @@ from flask import Flask from requests.auth import _basic_auth_str from freqtrade.__init__ import __version__ +from freqtrade.loggers import setup_logging, setup_logging_pre from freqtrade.persistence import Trade from freqtrade.rpc.api_server import BASE_URI, ApiServer from freqtrade.state import State -from tests.conftest import get_patched_freqtradebot, log_has, patch_get_signal, create_mock_trades +from tests.conftest import (create_mock_trades, get_patched_freqtradebot, + log_has, patch_get_signal) _TEST_USER = "FreqTrader" _TEST_PASS = "SuperSecurePassword1!" @@ -21,6 +23,9 @@ _TEST_PASS = "SuperSecurePassword1!" @pytest.fixture def botclient(default_conf, mocker): + setup_logging_pre() + setup_logging(default_conf) + default_conf.update({"api_server": {"enabled": True, "listen_ip_address": "127.0.0.1", "listen_port": 8080, @@ -423,6 +428,26 @@ def test_api_delete_trade(botclient, mocker, fee, markets): assert stoploss_mock.call_count == 1 +def test_api_logs(botclient): + ftbot, client = botclient + rc = client_get(client, f"{BASE_URI}/logs") + assert_response(rc) + assert len(rc.json) == 2 + assert 'logs' in rc.json + # Using a fixed comparison here would make this test fail! + assert rc.json['log_count'] > 10 + assert len(rc.json['logs']) == rc.json['log_count'] + + assert isinstance(rc.json['logs'][0], list) + # date + assert isinstance(rc.json['logs'][0][0], str) + # created_timestamp + assert isinstance(rc.json['logs'][0][1], float) + assert isinstance(rc.json['logs'][0][2], str) + assert isinstance(rc.json['logs'][0][3], str) + assert isinstance(rc.json['logs'][0][4], str) + + def test_api_edge_disabled(botclient, mocker, ticker, fee, markets): ftbot, client = botclient patch_get_signal(ftbot, (True, False)) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 8651b0613..1144d8279 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -16,6 +16,7 @@ from telegram.error import NetworkError from freqtrade import __version__ from freqtrade.edge import PairInfo from freqtrade.freqtradebot import FreqtradeBot +from freqtrade.loggers import setup_logging from freqtrade.persistence import Trade from freqtrade.rpc import RPCMessageType from freqtrade.rpc.telegram import Telegram, authorized_only @@ -1107,6 +1108,26 @@ def test_blacklist_static(default_conf, update, mocker) -> None: assert freqtradebot.pairlists.blacklist == ["DOGE/BTC", "HOT/BTC", "ETH/BTC"] +def test_telegram_logs(default_conf, update, mocker) -> None: + msg_mock = MagicMock() + mocker.patch.multiple( + 'freqtrade.rpc.telegram.Telegram', + _init=MagicMock(), + _send_msg=msg_mock + ) + setup_logging(default_conf) + + freqtradebot = get_patched_freqtradebot(mocker, default_conf) + + telegram = Telegram(freqtradebot) + context = MagicMock() + context.args = [] + telegram._logs(update=update, context=context) + assert msg_mock.call_count == 1 + assert "freqtrade.rpc.telegram" in msg_mock.call_args_list[0][0][0] + assert "freqtrade.resolvers.iresolver" in msg_mock.call_args_list[0][0][0] + + def test_edge_disabled(default_conf, update, mocker) -> None: msg_mock = MagicMock() mocker.patch.multiple( From 122c0e8ddc1771c977b4e42e0785621ea73080d4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Aug 2020 19:50:56 +0200 Subject: [PATCH 2942/3421] Readd accidentally dropped StreamHandler --- freqtrade/loggers.py | 7 ++++++- tests/test_configuration.py | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index 0b1337b2c..cb83f9144 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -1,7 +1,9 @@ import logging import queue +import sys from logging import Formatter -from logging.handlers import RotatingFileHandler, SysLogHandler, BufferingHandler +from logging.handlers import (BufferingHandler, RotatingFileHandler, + SysLogHandler) from typing import Any, Dict from freqtrade.exceptions import OperationalException @@ -58,6 +60,9 @@ def setup_logging(config: Dict[str, Any]) -> None: logging.root.addHandler(bufferHandler) logfile = config.get('logfile') + + logging.root.addHandler(logging.StreamHandler(sys.stderr)) + if logfile: s = logfile.split(':') if s[0] == 'syslog': diff --git a/tests/test_configuration.py b/tests/test_configuration.py index ca5d6eadc..dd96f9d73 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -675,7 +675,7 @@ def test_set_loggers_syslog(mocker): } setup_logging(config) - assert len(logger.handlers) == 2 + assert len(logger.handlers) == 3 assert [x for x in logger.handlers if type(x) == logging.handlers.SysLogHandler] assert [x for x in logger.handlers if type(x) == logging.StreamHandler] # reset handlers to not break pytest From 251eb5aa96cbfc385d3eb18347742fd1a10e5db9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Aug 2020 19:51:50 +0200 Subject: [PATCH 2943/3421] Test for bufferingHandler too --- tests/test_configuration.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index dd96f9d73..8c3a47f87 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -678,6 +678,7 @@ def test_set_loggers_syslog(mocker): assert len(logger.handlers) == 3 assert [x for x in logger.handlers if type(x) == logging.handlers.SysLogHandler] assert [x for x in logger.handlers if type(x) == logging.StreamHandler] + assert [x for x in logger.handlers if type(x) == logging.handlers.BufferingHandler] # reset handlers to not break pytest logger.handlers = orig_handlers From cdfcdb86c96fcb0f9b53236aafe1140964206350 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Aug 2020 20:00:09 +0200 Subject: [PATCH 2944/3421] Increase logfile size --- freqtrade/loggers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index cb83f9144..80759e202 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -92,7 +92,7 @@ def setup_logging(config: Dict[str, Any]) -> None: logging.root.addHandler(handler) else: handler = RotatingFileHandler(logfile, - maxBytes=1024 * 1024, # 1Mb + maxBytes=1024 * 1024 * 10, # 10Mb backupCount=10) handler.setFormatter(Formatter(LOGFORMAT)) logging.root.addHandler(handler) From c4f78203ab7875c3b23fb0a39787a2e96a469dc4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Aug 2020 20:08:55 +0200 Subject: [PATCH 2945/3421] Initialize streamhandler early to have it apply to all logs --- freqtrade/loggers.py | 3 +-- tests/test_configuration.py | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index 80759e202..c4a1af4f3 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -48,6 +48,7 @@ def setup_logging_pre() -> None: logging.basicConfig( level=logging.INFO, format=LOGFORMAT, + handlers=[logging.StreamHandler(sys.stderr)] ) @@ -61,8 +62,6 @@ def setup_logging(config: Dict[str, Any]) -> None: logfile = config.get('logfile') - logging.root.addHandler(logging.StreamHandler(sys.stderr)) - if logfile: s = logfile.split(':') if s[0] == 'syslog': diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 8c3a47f87..30e0718f7 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -21,7 +21,7 @@ from freqtrade.configuration.deprecated_settings import ( from freqtrade.configuration.load_config import load_config_file, log_config_error_range from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL from freqtrade.exceptions import OperationalException -from freqtrade.loggers import _set_loggers, setup_logging +from freqtrade.loggers import _set_loggers, setup_logging, setup_logging_pre from freqtrade.state import RunMode from tests.conftest import (log_has, log_has_re, patched_configuration_load_config_file) @@ -674,6 +674,7 @@ def test_set_loggers_syslog(mocker): 'logfile': 'syslog:/dev/log', } + setup_logging_pre() setup_logging(config) assert len(logger.handlers) == 3 assert [x for x in logger.handlers if type(x) == logging.handlers.SysLogHandler] From 9659e516c8c8298a376b131e24f281cfea537c0e Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 14 Aug 2020 20:12:59 +0200 Subject: [PATCH 2946/3421] Remove queue import Improve tests --- freqtrade/loggers.py | 9 ++++----- tests/rpc/test_rpc_apiserver.py | 8 ++++++++ tests/rpc/test_rpc_telegram.py | 15 +++++++++++++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index c4a1af4f3..6e66abeeb 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -1,5 +1,4 @@ import logging -import queue import sys from logging import Formatter from logging.handlers import (BufferingHandler, RotatingFileHandler, @@ -9,7 +8,6 @@ from typing import Any, Dict from freqtrade.exceptions import OperationalException logger = logging.getLogger(__name__) -log_queue = queue.Queue(-1) LOGFORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' # Initialize bufferhandler - will be used for /log endpoints @@ -41,9 +39,10 @@ def _set_loggers(verbosity: int = 0, api_verbosity: str = 'info') -> None: def setup_logging_pre() -> None: """ - Setup early logging. - This uses a queuehandler, which delays logging. - # TODO: How does QueueHandler work if no listenerhandler is attached?? + Early setup for logging. + Uses INFO loglevel and only the Streamhandler. + Early messages (before proper logging setup) will therefore only be available + after the proper logging setup. """ logging.basicConfig( level=logging.INFO, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 2fb1e3ec1..1dd0ecff8 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -447,6 +447,14 @@ def test_api_logs(botclient): assert isinstance(rc.json['logs'][0][3], str) assert isinstance(rc.json['logs'][0][4], str) + rc = client_get(client, f"{BASE_URI}/logs?limit=5") + assert_response(rc) + assert len(rc.json) == 2 + assert 'logs' in rc.json + # Using a fixed comparison here would make this test fail! + assert rc.json['log_count'] == 5 + assert len(rc.json['logs']) == rc.json['log_count'] + def test_api_edge_disabled(botclient, mocker, ticker, fee, markets): ftbot, client = botclient diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 1144d8279..e0df31437 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1127,6 +1127,21 @@ def test_telegram_logs(default_conf, update, mocker) -> None: assert "freqtrade.rpc.telegram" in msg_mock.call_args_list[0][0][0] assert "freqtrade.resolvers.iresolver" in msg_mock.call_args_list[0][0][0] + msg_mock.reset_mock() + context.args = ["1"] + telegram._logs(update=update, context=context) + assert msg_mock.call_count == 1 + + msg_mock.reset_mock() + # Test with changed MaxMessageLength + mocker.patch('freqtrade.rpc.telegram.MAX_TELEGRAM_MESSAGE_LENGTH', 200) + context = MagicMock() + context.args = [] + telegram._logs(update=update, context=context) + # Called at least 3 times. Exact times will change with unrelated changes to setup messages + # Therefore we don't test for this explicitly. + assert msg_mock.call_count > 3 + def test_edge_disabled(default_conf, update, mocker) -> None: msg_mock = MagicMock() From f5863a1c6fd3d8b29cde23561fb8b4dbfc86bf3d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 15 Aug 2020 08:15:18 +0200 Subject: [PATCH 2947/3421] Fix mypy errors --- freqtrade/loggers.py | 16 ++++++++-------- freqtrade/rpc/rpc.py | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index 6e66abeeb..263f97ce1 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -82,18 +82,18 @@ def setup_logging(config: Dict[str, Any]) -> None: except ImportError: raise OperationalException("You need the systemd python package be installed in " "order to use logging to journald.") - handler = JournaldLogHandler() + handler_jd = JournaldLogHandler() # No datetime field for logging into journald, to allow syslog # to perform reduction of repeating messages if this is set in the # syslog config. The messages should be equal for this. - handler.setFormatter(Formatter('%(name)s - %(levelname)s - %(message)s')) - logging.root.addHandler(handler) + handler_jd.setFormatter(Formatter('%(name)s - %(levelname)s - %(message)s')) + logging.root.addHandler(handler_jd) else: - handler = RotatingFileHandler(logfile, - maxBytes=1024 * 1024 * 10, # 10Mb - backupCount=10) - handler.setFormatter(Formatter(LOGFORMAT)) - logging.root.addHandler(handler) + handler_rf = RotatingFileHandler(logfile, + maxBytes=1024 * 1024 * 10, # 10Mb + backupCount=10) + handler_rf.setFormatter(Formatter(LOGFORMAT)) + logging.root.addHandler(handler_rf) logging.root.setLevel(logging.INFO if verbosity < 1 else logging.DEBUG) _set_loggers(verbosity, config.get('api_server', {}).get('verbosity', 'info')) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index dd35b9613..37538499d 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -633,7 +633,7 @@ class RPC: } return res - def _rpc_get_logs(self, limit: Optional[int]) -> Dict[str, List]: + def _rpc_get_logs(self, limit: Optional[int]) -> Dict[str, Any]: """Returns the last X logs""" if limit: buffer = bufferHandler.buffer[-limit:] @@ -644,7 +644,7 @@ class RPC: return {'log_count': len(records), 'logs': records} - def _rpc_get_logs_as_string(self, limit: Optional[int]) -> Dict[str, List]: + def _rpc_get_logs_as_string(self, limit: Optional[int]) -> List[str]: """Returns the last X logs as formatted string (Using the default log format)""" if limit: buffer = bufferHandler.buffer[-limit:] From 1ffa3d1ae0e4b12f082bc7628500d2940ae99291 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 15 Aug 2020 08:31:36 +0200 Subject: [PATCH 2948/3421] Improve telegram message formatting --- freqtrade/rpc/rpc.py | 11 ++--------- freqtrade/rpc/telegram.py | 20 +++++++++++--------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 37538499d..59c6acafa 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -639,19 +639,12 @@ class RPC: buffer = bufferHandler.buffer[-limit:] else: buffer = bufferHandler.buffer - records = [[datetime.fromtimestamp(r.created), r.created, r.name, r.levelname, r.message] + records = [[datetime.fromtimestamp(r.created).strftime("%Y-%m-%d %H:%M:%S"), + r.created, r.name, r.levelname, r.message] for r in buffer] return {'log_count': len(records), 'logs': records} - def _rpc_get_logs_as_string(self, limit: Optional[int]) -> List[str]: - """Returns the last X logs as formatted string (Using the default log format)""" - if limit: - buffer = bufferHandler.buffer[-limit:] - else: - buffer = bufferHandler.buffer - return [bufferHandler.format(r) for r in buffer] - def _rpc_edge(self) -> List[Dict[str, Any]]: """ Returns information related to Edge """ if not self._freqtrade.edge: diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index da93604d1..23c3e3689 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -649,20 +649,22 @@ class Telegram(RPC): limit = int(context.args[0]) except (TypeError, ValueError, IndexError): limit = 10 - logs = self._rpc_get_logs_as_string(limit) - msg = '' - message_container = "
              {}
              " + logs = self._rpc_get_logs(limit)['logs'] + msgs = '' + msg_template = "*{}* {}: {} - `{}`" for logrec in logs: - if len(msg + logrec) + 10 >= MAX_TELEGRAM_MESSAGE_LENGTH: + msg = msg_template.format(logrec[0], logrec[2], logrec[3], logrec[4]) + + if len(msgs + msg) + 10 >= MAX_TELEGRAM_MESSAGE_LENGTH: # Send message immediately if it would become too long - self._send_msg(message_container.format(msg), parse_mode=ParseMode.HTML) - msg = logrec + '\n' + self._send_msg(msgs, parse_mode=ParseMode.MARKDOWN) + msgs = msg + '\n' else: # Append message to messages to send - msg += logrec + '\n' + msgs += msg + '\n' - if msg: - self._send_msg(message_container.format(msg), parse_mode=ParseMode.HTML) + if msgs: + self._send_msg(msgs, parse_mode=ParseMode.MARKDOWN) except RPCException as e: self._send_msg(str(e)) From f3d4b114bbcb335b7225c0a984c0bdd8018814cd Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 15 Aug 2020 08:47:09 +0200 Subject: [PATCH 2949/3421] Skip windows test failure --- tests/test_configuration.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 30e0718f7..686f06057 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -729,7 +729,10 @@ def test_set_logfile(default_conf, mocker): assert validated_conf['logfile'] == "test_file.log" f = Path("test_file.log") assert f.is_file() - f.unlink() + try: + f.unlink() + except Exception: + pass def test_load_config_warn_forcebuy(default_conf, mocker, caplog) -> None: From 9dd2800b980d044a07febcc00e471b4691db6a6f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 15 Aug 2020 09:08:50 +0200 Subject: [PATCH 2950/3421] Apply some review changes --- docs/configuration.md | 6 +++--- freqtrade/pairlist/AgeFilter.py | 4 ++-- freqtrade/pairlist/PriceFilter.py | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index f39a3c62d..5fc28f3bf 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -669,13 +669,13 @@ The `PriceFilter` allows filtering of pairs by price. Currently the following pr * `low_price_ratio` The `min_price` setting removes pairs where the price is below the specified price. This is useful if you wish to avoid trading very low-priced pairs. -This option is disabled by default (or set to 0), and will only apply if set to > 0. +This option is disabled by default, and will only apply if set to > 0. The `max_price` setting removes pairs where the price is above the specified price. This is useful if you wish to trade only low-priced pairs. -This option is disabled by default (or set to 0), and will only apply if set to > 0. +This option is disabled by default, and will only apply if set to > 0. The `low_price_ratio` setting removes pairs where a raise of 1 price unit (pip) is above the `low_price_ratio` ratio. -This option is disabled by default (or set to 0), and will only apply if set to > 0. +This option is disabled by default, and will only apply if set to > 0. For `PriceFiler` at least one of its `min_price`, `max_price` or `low_price_ratio` settings must be applied. diff --git a/freqtrade/pairlist/AgeFilter.py b/freqtrade/pairlist/AgeFilter.py index 56e56ceeb..64f01cb61 100644 --- a/freqtrade/pairlist/AgeFilter.py +++ b/freqtrade/pairlist/AgeFilter.py @@ -26,9 +26,9 @@ class AgeFilter(IPairList): self._min_days_listed = pairlistconfig.get('min_days_listed', 10) if self._min_days_listed < 1: - raise OperationalException("AgeFilter requires min_days_listed be >= 1") + raise OperationalException("AgeFilter requires min_days_listed to be >= 1") if self._min_days_listed > exchange.ohlcv_candle_limit: - raise OperationalException("AgeFilter requires min_days_listed be not exceeding " + raise OperationalException("AgeFilter requires min_days_listed to not exceed " "exchange max request size " f"({exchange.ohlcv_candle_limit})") diff --git a/freqtrade/pairlist/PriceFilter.py b/freqtrade/pairlist/PriceFilter.py index ae3ab9230..8cd57ee1d 100644 --- a/freqtrade/pairlist/PriceFilter.py +++ b/freqtrade/pairlist/PriceFilter.py @@ -20,13 +20,13 @@ class PriceFilter(IPairList): self._low_price_ratio = pairlistconfig.get('low_price_ratio', 0) if self._low_price_ratio < 0: - raise OperationalException("PriceFilter requires low_price_ratio be >= 0") + raise OperationalException("PriceFilter requires low_price_ratio to be >= 0") self._min_price = pairlistconfig.get('min_price', 0) if self._min_price < 0: - raise OperationalException("PriceFilter requires min_price be >= 0") + raise OperationalException("PriceFilter requires min_price to be >= 0") self._max_price = pairlistconfig.get('max_price', 0) if self._max_price < 0: - raise OperationalException("PriceFilter requires max_price be >= 0") + raise OperationalException("PriceFilter requires max_price to be >= 0") self._enabled = ((self._low_price_ratio > 0) or (self._min_price > 0) or (self._max_price > 0)) From 142f87b68ce4bbe61d8f52581a3a44aa67ebdfae Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 15 Aug 2020 09:11:46 +0200 Subject: [PATCH 2951/3421] Adjust tests to new wordings --- tests/pairlist/test_pairlist.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index ad664abd2..9217abc46 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -549,7 +549,7 @@ def test_agefilter_min_days_listed_too_small(mocker, default_conf, markets, tick ) with pytest.raises(OperationalException, - match=r'AgeFilter requires min_days_listed be >= 1'): + match=r'AgeFilter requires min_days_listed to be >= 1'): get_patched_freqtradebot(mocker, default_conf) @@ -564,7 +564,7 @@ def test_agefilter_min_days_listed_too_large(mocker, default_conf, markets, tick ) with pytest.raises(OperationalException, - match=r'AgeFilter requires min_days_listed be not exceeding ' + match=r'AgeFilter requires min_days_listed to not exceed ' r'exchange max request size \([0-9]+\)'): get_patched_freqtradebot(mocker, default_conf) @@ -617,15 +617,15 @@ def test_agefilter_caching(mocker, markets, whitelist_conf_3, tickers, ohlcv_his ), ({"method": "PriceFilter", "low_price_ratio": -0.001}, None, - "PriceFilter requires low_price_ratio be >= 0" + "PriceFilter requires low_price_ratio to be >= 0" ), # OperationalException expected ({"method": "PriceFilter", "min_price": -0.00000010}, None, - "PriceFilter requires min_price be >= 0" + "PriceFilter requires min_price to be >= 0" ), # OperationalException expected ({"method": "PriceFilter", "max_price": -1.00010000}, None, - "PriceFilter requires max_price be >= 0" + "PriceFilter requires max_price to be >= 0" ), # OperationalException expected ]) def test_pricefilter_desc(mocker, whitelist_conf, markets, pairlistconfig, From cc91d5138910ce1d355a7eedb801274f05d0f7a0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 15 Aug 2020 09:18:00 +0200 Subject: [PATCH 2952/3421] Fix wording in configuration.md --- docs/configuration.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 5fc28f3bf..a366cde12 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -683,7 +683,8 @@ Calculation example: Min price precision for SHITCOIN/BTC is 8 decimals. If its price is 0.00000011 - one price step above would be 0.00000012, which is ~9% higher than the previous price value. You may filter out this pair by using PriceFilter with `low_price_ratio` set to 0.09 (9%) or with `min_price` set to 0.00000011, correspondingly. -Low priced pairs are dangerous since they are often illiquid and it may also be impossible to place the desired stoploss, which can often result in high losses. Consider using PriceFilter with `low_price_ratio` set to a value which is less than the absolute value of your stoploss (for example, if your stoploss is -5% (-0.05), then the value for `low_price_ratio` can be 0.04 or even 0.02). +!!! Warning "Low priced pairs" + Low priced pairs with high "1 pip movements" are dangerous since they are often illiquid and it may also be impossible to place the desired stoploss, which can often result in high losses since price needs to be rounded to the next tradable price - so instead of having a stoploss of -5%, you could end up with a stoploss of -9% simply due to price rounding. #### ShuffleFilter From c2573c998b98fb295c2c29f6bc092a89c829b7c2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 15 Aug 2020 16:26:47 +0200 Subject: [PATCH 2953/3421] Remove Hyperopt note about windows --- docs/hyperopt.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 6330a1a5e..9acb606c3 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -370,9 +370,6 @@ By default, hyperopt prints colorized results -- epochs with positive profit are You can use the `--print-all` command line option if you would like to see all results in the hyperopt output, not only the best ones. When `--print-all` is used, current best results are also colorized by default -- they are printed in bold (bright) style. This can also be switched off with the `--no-color` command line option. -!!! Note "Windows and color output" - Windows does not support color-output nativly, therefore it is automatically disabled. To have color-output for hyperopt running under windows, please consider using WSL. - ### Understand Hyperopt ROI results If you are optimizing ROI (i.e. if optimization search-space contains 'all', 'default' or 'roi'), your result will look as follows and include a ROI table: From 56ca37fd8bb95e27baca7f396a4ea385e67d3638 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 15 Aug 2020 20:15:02 +0200 Subject: [PATCH 2954/3421] Also provide stacktrace via log endpoints --- freqtrade/rpc/rpc.py | 3 ++- freqtrade/rpc/telegram.py | 13 ++++++++----- tests/rpc/test_rpc_telegram.py | 4 ++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 59c6acafa..b7a4f4f8c 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -640,7 +640,8 @@ class RPC: else: buffer = bufferHandler.buffer records = [[datetime.fromtimestamp(r.created).strftime("%Y-%m-%d %H:%M:%S"), - r.created, r.name, r.levelname, r.message] + r.created, r.name, r.levelname, + r.message + ('\n' + r.exc_text if r.exc_text else '')] for r in buffer] return {'log_count': len(records), 'logs': records} diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 23c3e3689..a095714a7 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -12,6 +12,7 @@ from tabulate import tabulate from telegram import ParseMode, ReplyKeyboardMarkup, Update from telegram.error import NetworkError, TelegramError from telegram.ext import CallbackContext, CommandHandler, Updater +from telegram.utils.helpers import escape_markdown from freqtrade.__init__ import __version__ from freqtrade.rpc import RPC, RPCException, RPCMessageType @@ -651,20 +652,22 @@ class Telegram(RPC): limit = 10 logs = self._rpc_get_logs(limit)['logs'] msgs = '' - msg_template = "*{}* {}: {} - `{}`" + msg_template = "*{}* {}: {} \\- `{}`" for logrec in logs: - msg = msg_template.format(logrec[0], logrec[2], logrec[3], logrec[4]) - + msg = msg_template.format(escape_markdown(logrec[0], version=2), + escape_markdown(logrec[2], version=2), + escape_markdown(logrec[3], version=2), + escape_markdown(logrec[4], version=2)) if len(msgs + msg) + 10 >= MAX_TELEGRAM_MESSAGE_LENGTH: # Send message immediately if it would become too long - self._send_msg(msgs, parse_mode=ParseMode.MARKDOWN) + self._send_msg(msgs, parse_mode=ParseMode.MARKDOWN_V2) msgs = msg + '\n' else: # Append message to messages to send msgs += msg + '\n' if msgs: - self._send_msg(msgs, parse_mode=ParseMode.MARKDOWN) + self._send_msg(msgs, parse_mode=ParseMode.MARKDOWN_V2) except RPCException as e: self._send_msg(str(e)) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index e0df31437..026a81ff8 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1124,8 +1124,8 @@ def test_telegram_logs(default_conf, update, mocker) -> None: context.args = [] telegram._logs(update=update, context=context) assert msg_mock.call_count == 1 - assert "freqtrade.rpc.telegram" in msg_mock.call_args_list[0][0][0] - assert "freqtrade.resolvers.iresolver" in msg_mock.call_args_list[0][0][0] + assert "freqtrade\\.rpc\\.telegram" in msg_mock.call_args_list[0][0][0] + assert "freqtrade\\.resolvers\\.iresolver" in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() context.args = ["1"] From b9e46a3c5a0d2f2ad4f8b18af9d31385fa73e325 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 03:02:10 +0200 Subject: [PATCH 2955/3421] Update stoploss.md Updated documentation to simplify examples --- docs/stoploss.md | 117 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 83 insertions(+), 34 deletions(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index bf7270dff..2945c18db 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -6,16 +6,10 @@ For example, value `-0.10` will cause immediate sell if the profit dips below -1 Most of the strategy files already include the optimal `stoploss` value. !!! Info - All stoploss properties mentioned in this file can be set in the Strategy, or in the configuration. Configuration values will override the strategy values. + All stoploss properties mentioned in this file can be set in the Strategy, or in the configuration. + Configuration values will override the strategy values. -## Stop Loss Types - -At this stage the bot contains the following stoploss support modes: - -1. Static stop loss. -2. Trailing stop loss. -3. Trailing stop loss, custom positive loss. -4. Trailing stop loss only once the trade has reached a certain offset. +## Stop Loss On-Exchange/Freqtrade Those stoploss modes can be *on exchange* or *off exchange*. If the stoploss is *on exchange* it means a stoploss limit order is placed on the exchange immediately after buy order happens successfully. This will protect you against sudden crashes in market as the order will be in the queue immediately and if market goes down then the order has more chance of being fulfilled. @@ -27,19 +21,58 @@ So this parameter will tell the bot how often it should update the stoploss orde This same logic will reapply a stoploss order on the exchange should you cancel it accidentally. !!! Note - Stoploss on exchange is only supported for Binance (stop-loss-limit), Kraken (stop-loss-market) and FTX (stop limit and stop-market) as of now. + Stoploss on exchange is only supported for Binance (stop-loss-limit), Kraken (stop-loss-market) and FTX (stop limit and stop-market) as of now. + Do not set too low stoploss value if using stop loss on exhange! -## Static Stop Loss +Stop loss on exchange is controlled with this value (default False): + +``` python + 'stoploss_on_exchange': False +``` + +Example from strategy file: + +``` python +order_types = { + 'buy': 'limit', + 'sell': 'limit', + 'stoploss': 'market', + 'stoploss_on_exchange': True +} +``` + +## Stop Loss Types + +At this stage the bot contains the following stoploss support modes: + +1. Static stop loss. +2. Trailing stop loss. +3. Trailing stop loss, custom positive loss. +4. Trailing stop loss only once the trade has reached a certain offset. + +### Static Stop Loss This is very simple, you define a stop loss of x (as a ratio of price, i.e. x * 100% of price). This will try to sell the asset once the loss exceeds the defined loss. -## Trailing Stop Loss +Example of stop loss: + +``` python + stoploss = -0.10 +``` + +For example, simplified math: +* the bot buys an asset at a price of 100$ +* the stop loss is defined at -10% +* the stop loss would get triggered once the asset dropps below 90$ + +### Trailing Stop Loss The initial value for this is `stoploss`, just as you would define your static Stop loss. To enable trailing stoploss: ``` python -trailing_stop = True + stoploss = -0.10 + trailing_stop = True ``` This will now activate an algorithm, which automatically moves the stop loss up every time the price of your asset increases. @@ -47,35 +80,40 @@ This will now activate an algorithm, which automatically moves the stop loss up For example, simplified math: * the bot buys an asset at a price of 100$ -* the stop loss is defined at 2% -* the stop loss would get triggered once the asset dropps below 98$ +* the stop loss is defined at -10% +* the stop loss would get triggered once the asset dropps below 90$ * assuming the asset now increases to 102$ -* the stop loss will now be 2% of 102$ or 99.96$ -* now the asset drops in value to 101$, the stop loss will still be 99.96$ and would trigger at 99.96$. +* the stop loss will now be -10% of 102$ = 91,8$ +* now the asset drops in value to 101$, the stop loss will still be 91,8$ and would trigger at 91,8$. In summary: The stoploss will be adjusted to be always be 2% of the highest observed price. -### Custom positive stoploss +### Trailing stop loss, custom positive loss -It is also possible to have a default stop loss, when you are in the red with your buy, but once your profit surpasses a certain percentage, the system will utilize a new stop loss, which can have a different value. -For example your default stop loss is 5%, but once you have 1.1% profit, it will be changed to be only a 1% stop loss, which trails the green candles until it goes below them. +It is also possible to have a default stop loss, when you are in the red with your buy (buy - fee), but once you hit possitive result the system will utilize a new stop loss, which can have a different value. +For example your default stop loss is -10%, but once you have more than 0% profit (example 0.1%) a different trailing stoploss will be used. -Both values require `trailing_stop` to be set to true. +Both values require `trailing_stop` to be set to true and trailing_stop_positive with a value. ``` python - trailing_stop_positive = 0.01 - trailing_stop_positive_offset = 0.011 + stoploss = -0.10 + trailing_stop = True + trailing_stop_positive = 0.02 ``` -The 0.01 would translate to a 1% stop loss, once you hit 1.1% profit. +For example, simplified math: + +* the bot buys an asset at a price of 100$ +* the stop loss is defined at -10% +* the stop loss would get triggered once the asset dropps below 90$ +* assuming the asset now increases to 102$ +* the stop loss will now be -2% of 102$ = 99,96$ +* now the asset drops in value to 101$, the stop loss will still be 99,96$ and would trigger at 99,96$ + +The 0.02 would translate to a -2% stop loss. Before this, `stoploss` is used for the trailing stoploss. -Read the [next section](#trailing-only-once-offset-is-reached) to keep stoploss at 5% of the entry point. - -!!! Tip - Make sure to have this value (`trailing_stop_positive_offset`) lower than minimal ROI, otherwise minimal ROI will apply first and sell the trade. - -### Trailing only once offset is reached +### Trailing stop loss only once the trade has reached a certain offset. It is also possible to use a static stoploss until the offset is reached, and then trail the trade to take profits once the market turns. @@ -87,17 +125,28 @@ This option can be used with or without `trailing_stop_positive`, but uses `trai trailing_only_offset_is_reached = True ``` -Simplified example: +Configuration (offset is buyprice + 3%): ``` python - stoploss = 0.05 + stoploss = -0.10 + trailing_stop = True + trailing_stop_positive = 0.02 trailing_stop_positive_offset = 0.03 trailing_only_offset_is_reached = True ``` +For example, simplified math: + * the bot buys an asset at a price of 100$ -* the stop loss is defined at 5% -* the stop loss will remain at 95% until profit reaches +3% +* the stop loss is defined at -10% +* the stop loss would get triggered once the asset dropps below 90$ +* stoploss will remain at 90$ unless asset increases to or above our configured offset +* assuming the asset now increases to 103$ (where we have the offset configured) +* the stop loss will now be -2% of 103$ = 100,94$ +* now the asset drops in value to 101$, the stop loss will still be 100,94$ and would trigger at 100,94$ + +!!! Tip + Make sure to have this value (`trailing_stop_positive_offset`) lower than minimal ROI, otherwise minimal ROI will apply first and sell the trade. ## Changing stoploss on open trades From bae8e5ed1a535435a580a2f39776929adc0046cd Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 13:03:56 +0200 Subject: [PATCH 2956/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 2945c18db..32c304e60 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -63,7 +63,7 @@ Example of stop loss: For example, simplified math: * the bot buys an asset at a price of 100$ * the stop loss is defined at -10% -* the stop loss would get triggered once the asset dropps below 90$ +* the stop loss would get triggered once the asset drops below 90$ ### Trailing Stop Loss From c60192e4bdd5440c9f1c5ff2d039c269935a71f4 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 13:05:07 +0200 Subject: [PATCH 2957/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 32c304e60..8bb68eb1d 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -81,7 +81,7 @@ For example, simplified math: * the bot buys an asset at a price of 100$ * the stop loss is defined at -10% -* the stop loss would get triggered once the asset dropps below 90$ +* the stop loss would get triggered once the asset drops below 90$ * assuming the asset now increases to 102$ * the stop loss will now be -10% of 102$ = 91,8$ * now the asset drops in value to 101$, the stop loss will still be 91,8$ and would trigger at 91,8$. From 1ce392f65208b9a1426d414eae4712ac72ed6ce1 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 13:05:38 +0200 Subject: [PATCH 2958/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 8bb68eb1d..dbe839cab 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -37,7 +37,9 @@ order_types = { 'buy': 'limit', 'sell': 'limit', 'stoploss': 'market', - 'stoploss_on_exchange': True + 'stoploss_on_exchange': True, + 'stoploss_on_exchange_interval': 60, + 'stoploss_on_exchange_limit_ratio': 0.99 } ``` From 4ade3daa1ef1fd25e523314acd6b209a494e2c8f Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 13:09:19 +0200 Subject: [PATCH 2959/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index dbe839cab..57d6c160e 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -85,8 +85,8 @@ For example, simplified math: * the stop loss is defined at -10% * the stop loss would get triggered once the asset drops below 90$ * assuming the asset now increases to 102$ -* the stop loss will now be -10% of 102$ = 91,8$ -* now the asset drops in value to 101$, the stop loss will still be 91,8$ and would trigger at 91,8$. +* the stop loss will now be -10% of 102$ = 91.8$ +* now the asset drops in value to 101$, the stop loss will still be 91.8$ and would trigger at 91,8$. In summary: The stoploss will be adjusted to be always be 2% of the highest observed price. From 902d40a32a7a9ed9992a4743e9a16cc7226cf28d Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 13:13:27 +0200 Subject: [PATCH 2960/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 57d6c160e..7942b4c68 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -95,7 +95,7 @@ In summary: The stoploss will be adjusted to be always be 2% of the highest obse It is also possible to have a default stop loss, when you are in the red with your buy (buy - fee), but once you hit possitive result the system will utilize a new stop loss, which can have a different value. For example your default stop loss is -10%, but once you have more than 0% profit (example 0.1%) a different trailing stoploss will be used. -Both values require `trailing_stop` to be set to true and trailing_stop_positive with a value. +Both values require `trailing_stop` to be set to true and `trailing_stop_positive` with a value. ``` python stoploss = -0.10 From e30a38932f47406dde2cef8ec956358ff95bbf48 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 13:13:40 +0200 Subject: [PATCH 2961/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 7942b4c68..e6cc59c83 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -107,7 +107,7 @@ For example, simplified math: * the bot buys an asset at a price of 100$ * the stop loss is defined at -10% -* the stop loss would get triggered once the asset dropps below 90$ +* the stop loss would get triggered once the asset drops below 90$ * assuming the asset now increases to 102$ * the stop loss will now be -2% of 102$ = 99,96$ * now the asset drops in value to 101$, the stop loss will still be 99,96$ and would trigger at 99,96$ From 4a0c988b678509cfe3fc61d87a015197b3d063a2 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 13:13:54 +0200 Subject: [PATCH 2962/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index e6cc59c83..142dfd2c9 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -109,8 +109,8 @@ For example, simplified math: * the stop loss is defined at -10% * the stop loss would get triggered once the asset drops below 90$ * assuming the asset now increases to 102$ -* the stop loss will now be -2% of 102$ = 99,96$ -* now the asset drops in value to 101$, the stop loss will still be 99,96$ and would trigger at 99,96$ +* the stop loss will now be -2% of 102$ = 99.96$ +* now the asset drops in value to 101$, the stop loss will still be 99.96$ and would trigger at 99.96$ The 0.02 would translate to a -2% stop loss. Before this, `stoploss` is used for the trailing stoploss. From 67e9721274aa2bd1e23654b0befadce93ade8ce0 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 13:14:50 +0200 Subject: [PATCH 2963/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 142dfd2c9..b866a3efa 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -115,7 +115,7 @@ For example, simplified math: The 0.02 would translate to a -2% stop loss. Before this, `stoploss` is used for the trailing stoploss. -### Trailing stop loss only once the trade has reached a certain offset. +### Trailing stop loss only once the trade has reached a certain offset It is also possible to use a static stoploss until the offset is reached, and then trail the trade to take profits once the market turns. From 8b348fc247416b04149d62a378c43bb6aa4dea89 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 13:16:35 +0200 Subject: [PATCH 2964/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index b866a3efa..30d866fff 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -92,7 +92,7 @@ In summary: The stoploss will be adjusted to be always be 2% of the highest obse ### Trailing stop loss, custom positive loss -It is also possible to have a default stop loss, when you are in the red with your buy (buy - fee), but once you hit possitive result the system will utilize a new stop loss, which can have a different value. +It is also possible to have a default stop loss, when you are in the red with your buy (buy - fee), but once you hit positive result the system will utilize a new stop loss, which can have a different value. For example your default stop loss is -10%, but once you have more than 0% profit (example 0.1%) a different trailing stoploss will be used. Both values require `trailing_stop` to be set to true and `trailing_stop_positive` with a value. From 5091767276073528930d58b1f9d96b4d31da8133 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 13:17:01 +0200 Subject: [PATCH 2965/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 30d866fff..ab3297ae9 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -141,7 +141,7 @@ For example, simplified math: * the bot buys an asset at a price of 100$ * the stop loss is defined at -10% -* the stop loss would get triggered once the asset dropps below 90$ +* the stop loss would get triggered once the asset drops below 90$ * stoploss will remain at 90$ unless asset increases to or above our configured offset * assuming the asset now increases to 103$ (where we have the offset configured) * the stop loss will now be -2% of 103$ = 100,94$ From 81a75c97cf6a17e7ff2683d9003696059993ba97 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 13:17:11 +0200 Subject: [PATCH 2966/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index ab3297ae9..2cee88748 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -144,8 +144,8 @@ For example, simplified math: * the stop loss would get triggered once the asset drops below 90$ * stoploss will remain at 90$ unless asset increases to or above our configured offset * assuming the asset now increases to 103$ (where we have the offset configured) -* the stop loss will now be -2% of 103$ = 100,94$ -* now the asset drops in value to 101$, the stop loss will still be 100,94$ and would trigger at 100,94$ +* the stop loss will now be -2% of 103$ = 100.94$ +* now the asset drops in value to 101$, the stop loss will still be 100.94$ and would trigger at 100.94$ !!! Tip Make sure to have this value (`trailing_stop_positive_offset`) lower than minimal ROI, otherwise minimal ROI will apply first and sell the trade. From ddba999fe2a25befa5ad6705956a6c9bc1776eb8 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 13:44:32 +0200 Subject: [PATCH 2967/3421] Update stoploss.md --- docs/stoploss.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 2cee88748..283826708 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -16,13 +16,14 @@ Those stoploss modes can be *on exchange* or *off exchange*. If the stoploss is In case of stoploss on exchange there is another parameter called `stoploss_on_exchange_interval`. This configures the interval in seconds at which the bot will check the stoploss and update it if necessary. For example, assuming the stoploss is on exchange, and trailing stoploss is enabled, and the market is going up, then the bot automatically cancels the previous stoploss order and puts a new one with a stop value higher than the previous stoploss order. -The bot cannot do this every 5 seconds (at each iteration), otherwise it would get banned by the exchange. +The bot cannot do these every 5 seconds (at each iteration), otherwise it would get banned by the exchange. So this parameter will tell the bot how often it should update the stoploss order. The default value is 60 (1 minute). This same logic will reapply a stoploss order on the exchange should you cancel it accidentally. !!! Note Stoploss on exchange is only supported for Binance (stop-loss-limit), Kraken (stop-loss-market) and FTX (stop limit and stop-market) as of now. - Do not set too low stoploss value if using stop loss on exhange! + Do not set too low stoploss value if using stop loss on exhange! +* If set to low/tight then you have greater risk of missing fill on the order and stoploss will not work Stop loss on exchange is controlled with this value (default False): @@ -88,12 +89,15 @@ For example, simplified math: * the stop loss will now be -10% of 102$ = 91.8$ * now the asset drops in value to 101$, the stop loss will still be 91.8$ and would trigger at 91,8$. -In summary: The stoploss will be adjusted to be always be 2% of the highest observed price. +In summary: The stoploss will be adjusted to be always be -10% of the highest observed price. ### Trailing stop loss, custom positive loss It is also possible to have a default stop loss, when you are in the red with your buy (buy - fee), but once you hit positive result the system will utilize a new stop loss, which can have a different value. -For example your default stop loss is -10%, but once you have more than 0% profit (example 0.1%) a different trailing stoploss will be used. +For example, your default stop loss is -10%, but once you have more than 0% profit (example 0.1%) a different trailing stoploss will be used. + +!!! Note + If you want the stoploss to only be changed when you break even of making a profit (what most users want) please refere to next section with [offset enabled](#Trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). Both values require `trailing_stop` to be set to true and `trailing_stop_positive` with a value. @@ -109,7 +113,7 @@ For example, simplified math: * the stop loss is defined at -10% * the stop loss would get triggered once the asset drops below 90$ * assuming the asset now increases to 102$ -* the stop loss will now be -2% of 102$ = 99.96$ +* the stop loss will now be -2% of 102$ = 99.96$ (99.96$ stop loss will be locked in and will follow asset price increasements with -2%) * now the asset drops in value to 101$, the stop loss will still be 99.96$ and would trigger at 99.96$ The 0.02 would translate to a -2% stop loss. From f8efb87a676d872e950a496e52ef0de88d32216c Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 14:57:53 +0200 Subject: [PATCH 2968/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 283826708..5a8a553e7 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -87,7 +87,7 @@ For example, simplified math: * the stop loss would get triggered once the asset drops below 90$ * assuming the asset now increases to 102$ * the stop loss will now be -10% of 102$ = 91.8$ -* now the asset drops in value to 101$, the stop loss will still be 91.8$ and would trigger at 91,8$. +* now the asset drops in value to 101$, the stop loss will still be 91.8$ and would trigger at 91.8$. In summary: The stoploss will be adjusted to be always be -10% of the highest observed price. From bd308889fcb49ba4decb7dc969d6b3886e3e49fc Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Sun, 16 Aug 2020 14:58:06 +0200 Subject: [PATCH 2969/3421] Update docs/stoploss.md Co-authored-by: Matthias --- docs/stoploss.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 5a8a553e7..d0b7f654d 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -97,7 +97,7 @@ It is also possible to have a default stop loss, when you are in the red with yo For example, your default stop loss is -10%, but once you have more than 0% profit (example 0.1%) a different trailing stoploss will be used. !!! Note - If you want the stoploss to only be changed when you break even of making a profit (what most users want) please refere to next section with [offset enabled](#Trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). + If you want the stoploss to only be changed when you break even of making a profit (what most users want) please refer to next section with [offset enabled](#Trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). Both values require `trailing_stop` to be set to true and `trailing_stop_positive` with a value. From 4619a50097074ff5686ecbff47594092fb169b5a Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Mon, 17 Aug 2020 02:07:25 +0200 Subject: [PATCH 2970/3421] Update configuration.md --- docs/configuration.md | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index a200d6411..ad18ac713 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -55,9 +55,9 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy).
              *Defaults to `false`.*
              **Datatype:** Boolean | `minimal_roi` | **Required.** Set the threshold as ratio the bot will use to sell a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Dict | `stoploss` | **Required.** Value as ratio of the stoploss used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Float (as ratio) -| `trailing_stop` | Enables trailing stoploss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Boolean -| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Float -| `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
              *Defaults to `0.0` (no offset).*
              **Datatype:** Float +| `trailing_stop` | Enables trailing stoploss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md#trailing-stop-loss). [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Boolean +| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-custom-positive-loss). [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Float +| `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). [Strategy Override](#parameters-in-the-strategy).
              *Defaults to `0.0` (no offset).*
              **Datatype:** Float | `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
              *Defaults to `false`.*
              **Datatype:** Boolean | `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Integer | `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Integer @@ -278,24 +278,13 @@ This allows to buy using limit orders, sell using limit-orders, and create stoplosses using market orders. It also allows to set the stoploss "on exchange" which means stoploss order would be placed immediately once the buy order is fulfilled. -If `stoploss_on_exchange` and `trailing_stop` are both set, then the bot will use `stoploss_on_exchange_interval` to check and update the stoploss on exchange periodically. -`order_types` can be set in the configuration file or in the strategy. + `order_types` set in the configuration file overwrites values set in the strategy as a whole, so you need to configure the whole `order_types` dictionary in one place. If this is configured, the following 4 values (`buy`, `sell`, `stoploss` and `stoploss_on_exchange`) need to be present, otherwise the bot will fail to start. -`emergencysell` is an optional value, which defaults to `market` and is used when creating stoploss on exchange orders fails. -The below is the default which is used if this is not configured in either strategy or configuration file. - -Not all Exchanges support `stoploss_on_exchange`. If an exchange supports both limit and market stoploss orders, then the value of `stoploss` will be used to determine the stoploss type. - -If `stoploss_on_exchange` uses limit orders, the exchange needs 2 prices, the stoploss_price and the Limit price. -`stoploss` defines the stop-price - and limit should be slightly below this. - -This defaults to 0.99 / 1% (configurable via `stoploss_on_exchange_limit_ratio`). -Calculation example: we bought the asset at 100$. -Stop-price is 95$, then limit would be `95 * 0.99 = 94.05$` - so the stoploss will happen between 95$ and 94.05$. +For information on (`emergencysell`,`stoploss_on_exchange`,`stoploss_on_exchange_interval`,`stoploss_on_exchange_limit_ratio`) please see stop loss documentation [stop loss on exchange](stoploss.md) Syntax for Strategy: From 2a6faaae64f6e5e3a5d85a7cf60d4574031e7189 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Mon, 17 Aug 2020 02:07:32 +0200 Subject: [PATCH 2971/3421] Update stoploss.md --- docs/stoploss.md | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index d0b7f654d..ffa125fa5 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -11,25 +11,47 @@ Most of the strategy files already include the optimal `stoploss` value. ## Stop Loss On-Exchange/Freqtrade -Those stoploss modes can be *on exchange* or *off exchange*. If the stoploss is *on exchange* it means a stoploss limit order is placed on the exchange immediately after buy order happens successfully. This will protect you against sudden crashes in market as the order will be in the queue immediately and if market goes down then the order has more chance of being fulfilled. +Those stoploss modes can be *on exchange* or *off exchange*. -In case of stoploss on exchange there is another parameter called `stoploss_on_exchange_interval`. This configures the interval in seconds at which the bot will check the stoploss and update it if necessary. +These modes can be configured with these values: + +``` python + 'emergencysell': 'market', + 'stoploss_on_exchange': False + 'stoploss_on_exchange_interval': 60, + 'stoploss_on_exchange_limit_ratio': 0.99 +``` + +### stoploss_on_exchange +Enable or Disable stop loss on exchange. +If the stoploss is *on exchange* it means a stoploss limit order is placed on the exchange immediately after buy order happens successfully. This will protect you against sudden crashes in market as the order will be in the queue immediately and if market goes down then the order has more chance of being fulfilled. + +If `stoploss_on_exchange` uses limit orders, the exchange needs 2 prices, the stoploss_price and the Limit price. +`stoploss` defines the stop-price - and limit should be slightly below this. +If an exchange supports both limit and market stoploss orders, then the value of `stoploss` will be used to determine the stoploss type. For example, assuming the stoploss is on exchange, and trailing stoploss is enabled, and the market is going up, then the bot automatically cancels the previous stoploss order and puts a new one with a stop value higher than the previous stoploss order. + +### stoploss_on_exchange_interval +In case of stoploss on exchange there is another parameter called `stoploss_on_exchange_interval`. This configures the interval in seconds at which the bot will check the stoploss and update it if necessary. The bot cannot do these every 5 seconds (at each iteration), otherwise it would get banned by the exchange. So this parameter will tell the bot how often it should update the stoploss order. The default value is 60 (1 minute). This same logic will reapply a stoploss order on the exchange should you cancel it accidentally. +### emergencysell and stoploss_on_exchange_limit_ratio +`emergencysell` is an optional value, which defaults to `market` and is used when creating stop loss on exchange orders fails. +The below is the default which is used if this is not configured in either strategy or configuration file. + +This defaults to 0.99 / 1% (configurable via `stoploss_on_exchange_limit_ratio`). +Calculation example: we bought the asset at 100$. +Stop-price is 95$, then limit would be `95 * 0.99 = 94.05$` - so the stoploss will happen between 95$ and 94.05$. + + !!! Note Stoploss on exchange is only supported for Binance (stop-loss-limit), Kraken (stop-loss-market) and FTX (stop limit and stop-market) as of now. Do not set too low stoploss value if using stop loss on exhange! * If set to low/tight then you have greater risk of missing fill on the order and stoploss will not work -Stop loss on exchange is controlled with this value (default False): - -``` python - 'stoploss_on_exchange': False -``` Example from strategy file: @@ -37,6 +59,7 @@ Example from strategy file: order_types = { 'buy': 'limit', 'sell': 'limit', + 'emergencysell': 'market', 'stoploss': 'market', 'stoploss_on_exchange': True, 'stoploss_on_exchange_interval': 60, From d6ea442588a92493acaf9c9720e2f910028cc957 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Mon, 17 Aug 2020 02:10:56 +0200 Subject: [PATCH 2972/3421] Update stoploss.md --- docs/stoploss.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index ffa125fa5..bbb0be566 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -49,7 +49,7 @@ Stop-price is 95$, then limit would be `95 * 0.99 = 94.05$` - so the stoploss wi !!! Note Stoploss on exchange is only supported for Binance (stop-loss-limit), Kraken (stop-loss-market) and FTX (stop limit and stop-market) as of now. - Do not set too low stoploss value if using stop loss on exhange! + Do not set too low stoploss value if using stop loss on exchange! * If set to low/tight then you have greater risk of missing fill on the order and stoploss will not work From da6672841a1a5e5c118718e1165c9ed7e9ac1765 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2020 06:24:49 +0000 Subject: [PATCH 2973/3421] Bump mkdocs-material from 5.5.3 to 5.5.7 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.3 to 5.5.7. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.3...5.5.7) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 4068e364b..ab5aebb79 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.5.3 +mkdocs-material==5.5.7 mdx_truly_sane_lists==1.2 From 7af7fb261b015522ac92b51f2eea5eb468e15675 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2020 06:24:50 +0000 Subject: [PATCH 2974/3421] Bump pytest-cov from 2.10.0 to 2.10.1 Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 2.10.0 to 2.10.1. - [Release notes](https://github.com/pytest-dev/pytest-cov/releases) - [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-cov/compare/v2.10.0...v2.10.1) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index c02a439d3..e51713ceb 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -10,7 +10,7 @@ flake8-tidy-imports==4.1.0 mypy==0.782 pytest==6.0.1 pytest-asyncio==0.14.0 -pytest-cov==2.10.0 +pytest-cov==2.10.1 pytest-mock==3.2.0 pytest-random-order==1.0.4 From 988bff9eaec92c3553d4997be3e8b79a02471164 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2020 06:24:54 +0000 Subject: [PATCH 2975/3421] Bump ccxt from 1.32.88 to 1.33.18 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.32.88 to 1.33.18. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.32.88...1.33.18) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index b7e71eada..df11ea3de 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.32.88 +ccxt==1.33.18 SQLAlchemy==1.3.18 python-telegram-bot==12.8 arrow==0.15.8 From c8ddd5654adee8d69ee9243855c3cf483e0f6039 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2020 06:25:04 +0000 Subject: [PATCH 2976/3421] Bump prompt-toolkit from 3.0.5 to 3.0.6 Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.5 to 3.0.6. - [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases) - [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG) - [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.5...3.0.6) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index b7e71eada..2d7e9be3e 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -32,4 +32,4 @@ flask-cors==3.0.8 colorama==0.4.3 # Building config files interactively questionary==1.5.2 -prompt-toolkit==3.0.5 +prompt-toolkit==3.0.6 From 30a2df14cbb09e30fb12059467e951b73ce888e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2020 06:25:10 +0000 Subject: [PATCH 2977/3421] Bump coveralls from 2.1.1 to 2.1.2 Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 2.1.1 to 2.1.2. - [Release notes](https://github.com/coveralls-clients/coveralls-python/releases) - [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/coveralls-clients/coveralls-python/compare/2.1.1...2.1.2) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index c02a439d3..41500764c 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -3,7 +3,7 @@ -r requirements-plot.txt -r requirements-hyperopt.txt -coveralls==2.1.1 +coveralls==2.1.2 flake8==3.8.3 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 From ce15c55185f4c1e78ab084f26a3991c286062cd8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 17 Aug 2020 20:24:30 +0200 Subject: [PATCH 2978/3421] Add libffi-dev to rpi image --- Dockerfile.armhf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 45ed2dac9..5c5e4a885 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -1,7 +1,7 @@ FROM --platform=linux/arm/v7 python:3.7.7-slim-buster RUN apt-get update \ - && apt-get -y install curl build-essential libssl-dev libatlas3-base libgfortran5 sqlite3 \ + && apt-get -y install curl build-essential libssl-dev libffi-dev libatlas3-base libgfortran5 sqlite3 \ && apt-get clean \ && pip install --upgrade pip \ && echo "[global]\nextra-index-url=https://www.piwheels.org/simple" > /etc/pip.conf From aa866294cd7fb93ff25c89007b288a9c4d5e767b Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 18 Aug 2020 14:02:22 +0200 Subject: [PATCH 2979/3421] Reformulate documentation --- docs/backtesting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index b1dcd5dba..149d1c104 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -213,7 +213,7 @@ Hence, keep in mind that your performance is an integral mix of all different el ### Sell reasons table The 2nd table contains a recap of sell reasons. -This table can tell you which area needs some additional work (e,g. all or many of the `sell_signal` trades are losses, so we should disable the sell-signal or work on improving that). +This table can tell you which area needs some additional work (e.g. all or many of the `sell_signal` trades are losses, so you should work on improving the sell signal, or consider disabling it). ### Left open trades table From 4eb17b4daf692041b7504a980edf84e0fd5b769a Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 18 Aug 2020 15:20:37 +0200 Subject: [PATCH 2980/3421] Remove unneeded function --- freqtrade/data/btanalysis.py | 2 +- freqtrade/optimize/optimize_reports.py | 14 -------------- tests/optimize/test_optimize_reports.py | 19 +++++++++++++++++++ 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index cf6e18e64..972961b36 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -179,7 +179,7 @@ def load_trades_from_db(db_url: str, strategy: Optional[str] = None) -> pd.DataF filters = [] if strategy: - filters = Trade.strategy == strategy + filters.append(Trade.strategy == strategy) trades = pd.DataFrame([(t.pair, t.open_date.replace(tzinfo=timezone.utc), diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 8e25d9d89..c69442d46 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -31,20 +31,6 @@ def store_backtest_stats(recordfilename: Path, stats: Dict[str, DataFrame]) -> N file_dump_json(latest_filename, {'latest_backtest': str(filename.name)}) -def backtest_result_to_list(results: DataFrame) -> List[List]: - """ - Converts a list of Backtest-results to list - :param results: Dataframe containing results for one strategy - :return: List of Lists containing the trades - """ - # Return 0 as "index" for compatibility reasons (for now) - # TODO: Evaluate if we can remove this - return [[t.pair, t.profit_percent, t.open_date.timestamp(), - t.close_date.timestamp(), 0, t.trade_duration, - t.open_rate, t.close_rate, t.open_at_end, t.sell_reason.value] - for index, t in results.iterrows()] - - def _get_line_floatfmt() -> List[str]: """ Generate floatformat (goes in line with _generate_result_line()) diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 2fab4578c..e5d98ca43 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -146,6 +146,25 @@ def test_generate_backtest_stats(default_conf, testdatadir): filename1.unlink() +def test_store_backtest_stats(testdatadir, mocker): + + dump_mock = mocker.patch('freqtrade.optimize.optimize_reports.file_dump_json') + + store_backtest_stats(testdatadir, {}) + + assert dump_mock.call_count == 2 + assert isinstance(dump_mock.call_args_list[0][0][0], Path) + assert str(dump_mock.call_args_list[0][0][0]).startswith(str(testdatadir/'backtest-result')) + + dump_mock.reset_mock() + filename = testdatadir / 'testresult.json' + store_backtest_stats(filename, {}) + assert dump_mock.call_count == 2 + assert isinstance(dump_mock.call_args_list[0][0][0], Path) + # result will be testdatadir / testresult-.json + assert str(dump_mock.call_args_list[0][0][0]).startswith(str(testdatadir / 'testresult')) + + def test_generate_pair_metrics(default_conf, mocker): results = pd.DataFrame( From 668d167adcb103309c44e8d87be97133fc7fbe87 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 18 Aug 2020 16:15:24 +0200 Subject: [PATCH 2981/3421] Add docstring to store_backtest_stats --- freqtrade/optimize/optimize_reports.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index c69442d46..bf4e518ba 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -16,7 +16,13 @@ logger = logging.getLogger(__name__) def store_backtest_stats(recordfilename: Path, stats: Dict[str, DataFrame]) -> None: - + """ + Stores backtest results + :param recordfilename: Path object, which can either be a filename or a directory. + Filenames will be appended with a timestamp right before the suffix + while for diectories, /backtest-result-.json will be used as filename + :param stats: Dataframe containing the backtesting statistics + """ if recordfilename.is_dir(): filename = (recordfilename / f'backtest-result-{datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}.json') From 9982ad2f365b715f8bf2dd225bdcff509c6d8030 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 18 Aug 2020 16:59:24 +0200 Subject: [PATCH 2982/3421] Add profit to backtest summary output --- docs/backtesting.md | 1 + freqtrade/optimize/optimize_reports.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/docs/backtesting.md b/docs/backtesting.md index 149d1c104..20e69f52f 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -165,6 +165,7 @@ A backtesting result will look like that: | Total trades | 429 | | First trade | 2019-01-01 18:30:00 | | First trade Pair | EOS/USDT | +| Total Profit % | 152.41% | | Trades per day | 3.575 | | Best day | 25.27% | | Worst day | -30.67% | diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index bf4e518ba..0799ebb23 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -249,6 +249,9 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'sell_reason_summary': sell_reason_stats, 'left_open_trades': left_open_results, 'total_trades': len(results), + 'profit_mean': results['profit_percent'].mean(), + 'profit_total': results['profit_percent'].sum(), + 'profit_total_abs': results['profit_abs'].sum(), 'backtest_start': min_date.datetime, 'backtest_start_ts': min_date.timestamp * 1000, 'backtest_end': max_date.datetime, @@ -372,6 +375,7 @@ def text_table_add_metrics(strat_results: Dict) -> str: ('Total trades', strat_results['total_trades']), ('First trade', min_trade['open_date'].strftime(DATETIME_PRINT_FORMAT)), ('First trade Pair', min_trade['pair']), + ('Total Profit %', f"{round(strat_results['profit_total'] * 100, 2)}%"), ('Trades per day', strat_results['trades_per_day']), ('Best day', f"{round(strat_results['backtest_best_day'] * 100, 2)}%"), ('Worst day', f"{round(strat_results['backtest_worst_day'] * 100, 2)}%"), From d8e1f97465922f71128a4cffe37c582ea7721c00 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 18 Aug 2020 19:44:44 +0200 Subject: [PATCH 2983/3421] Fix documentation typo --- docs/backtesting.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/backtesting.md b/docs/backtesting.md index 20e69f52f..84911568b 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -219,7 +219,7 @@ This table can tell you which area needs some additional work (e.g. all or many ### Left open trades table The 3rd table contains all trades the bot had to `forcesell` at the end of the backtesting period to present you the full picture. -This is necessary to simulate realistic behaviour, since the backtest period has to end at some point, while realistically, you could leave the bot running forever. +This is necessary to simulate realistic behavior, since the backtest period has to end at some point, while realistically, you could leave the bot running forever. These trades are also included in the first table, but are also shown separately in this table for clarity. ### Summary metrics @@ -236,6 +236,7 @@ It contains some useful key metrics about performance of your strategy on backte | Total trades | 429 | | First trade | 2019-01-01 18:30:00 | | First trade Pair | EOS/USDT | +| Total Profit % | 152.41% | | Trades per day | 3.575 | | Best day | 25.27% | | Worst day | -30.67% | @@ -254,11 +255,12 @@ It contains some useful key metrics about performance of your strategy on backte - `First trade`: First trade entered. - `First trade pair`: Which pair was part of the first trade. - `Backtesting from` / `Backtesting to`: Backtesting range (usually defined with the `--timerange` option). +- `Total Profit %`: Total profit per stake amount. Aligned to the TOTAL column of the first table. - `Trades per day`: Total trades divided by the backtesting duration in days (this will give you information about how many trades to expect from the strategy). - `Best day` / `Worst day`: Best and worst day based on daily profit. - `Avg. Duration Winners` / `Avg. Duration Loser`: Average durations for winning and losing trades. - `Max Drawdown`: Maximum drawdown experienced. For example, the value of 50% means that from highest to subsequent lowest point, a 50% drop was experienced). -- `Drawdown Start` / `Drawdown End`: Start and end datetimes for this largest drawdown (can also be visualized via the `plot-dataframe` subcommand). +- `Drawdown Start` / `Drawdown End`: Start and end datetimes for this largest drawdown (can also be visualized via the `plot-dataframe` sub-command). - `Market change`: Change of the market during the backtest period. Calculated as average of all pairs changes from the first to the last candle using the "close" column. ### Assumptions made by backtesting From 375e671aafc508e91c0ab4fd9b33f74d2eba7400 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 18 Aug 2020 20:12:14 +0200 Subject: [PATCH 2984/3421] Move formatting of /daily to telegram so /daily can return numbers in the API --- freqtrade/rpc/rpc.py | 10 ++++------ freqtrade/rpc/telegram.py | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index f4e20c16f..7be49b948 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -224,22 +224,20 @@ class RPC: ]).order_by(Trade.close_date).all() curdayprofit = sum(trade.close_profit_abs for trade in trades) profit_days[profitday] = { - 'amount': f'{curdayprofit:.8f}', + 'amount': curdayprofit, 'trades': len(trades) } data = [ { 'date': key, - 'abs_profit': f'{float(value["amount"]):.8f}', - 'fiat_value': '{value:.3f}'.format( - value=self._fiat_converter.convert_amount( + 'abs_profit': value["amount"], + 'fiat_value': self._fiat_converter.convert_amount( value['amount'], stake_currency, fiat_display_currency ) if self._fiat_converter else 0, - ), - 'trade_count': f'{value["trades"]}', + 'trade_count': value["trades"], } for key, value in profit_days.items() ] diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index f1d3cde21..809deb765 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -305,8 +305,8 @@ class Telegram(RPC): ) stats_tab = tabulate( [[day['date'], - f"{day['abs_profit']} {stats['stake_currency']}", - f"{day['fiat_value']} {stats['fiat_display_currency']}", + f"{day['abs_profit']:.8f} {stats['stake_currency']}", + f"{day['fiat_value']:.3f} {stats['fiat_display_currency']}", f"{day['trade_count']} trades"] for day in stats['data']], headers=[ 'Day', From e206cc9c216bbf7f140797c001692f41c0d7fd48 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 18 Aug 2020 20:15:41 +0200 Subject: [PATCH 2985/3421] Adjust tests --- tests/rpc/test_rpc.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 9bbd34672..164c825ba 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -255,11 +255,11 @@ def test_rpc_daily_profit(default_conf, update, ticker, fee, assert days['fiat_display_currency'] == default_conf['fiat_display_currency'] for day in days['data']: # [datetime.date(2018, 1, 11), '0.00000000 BTC', '0.000 USD'] - assert (day['abs_profit'] == '0.00000000' or - day['abs_profit'] == '0.00006217') + assert (day['abs_profit'] == 0.0 or + day['abs_profit'] == 0.00006217) - assert (day['fiat_value'] == '0.000' or - day['fiat_value'] == '0.767') + assert (day['fiat_value'] == 0.0 or + day['fiat_value'] == 0.76748865) # ensure first day is current date assert str(days['data'][0]['date']) == str(datetime.utcnow().date()) From 55c6e56762dc3d2523415641d1d25d903919de0c Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Wed, 19 Aug 2020 23:07:03 +0200 Subject: [PATCH 2986/3421] Update stoploss.md --- docs/stoploss.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index bbb0be566..2595a3f55 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -22,7 +22,7 @@ These modes can be configured with these values: 'stoploss_on_exchange_limit_ratio': 0.99 ``` -### stoploss_on_exchange +### stoploss_on_exchange and stoploss_on_exchange_limit_ratio Enable or Disable stop loss on exchange. If the stoploss is *on exchange* it means a stoploss limit order is placed on the exchange immediately after buy order happens successfully. This will protect you against sudden crashes in market as the order will be in the queue immediately and if market goes down then the order has more chance of being fulfilled. @@ -30,6 +30,10 @@ If `stoploss_on_exchange` uses limit orders, the exchange needs 2 prices, the st `stoploss` defines the stop-price - and limit should be slightly below this. If an exchange supports both limit and market stoploss orders, then the value of `stoploss` will be used to determine the stoploss type. +If `stoploss_on_exchange` fails to fill we can use `stoploss_on_exchange_limit_ratio` that defaults to 0.99 / 1% to perform an [emergency sell](#emergencysell). +Calculation example: we bought the asset at 100$. +Stop-price is 95$, then limit would be `95 * 0.99 = 94.05$` - so the stoploss(emergency sell) will happen between 95$ and 94.05$. + For example, assuming the stoploss is on exchange, and trailing stoploss is enabled, and the market is going up, then the bot automatically cancels the previous stoploss order and puts a new one with a stop value higher than the previous stoploss order. ### stoploss_on_exchange_interval @@ -38,15 +42,10 @@ The bot cannot do these every 5 seconds (at each iteration), otherwise it would So this parameter will tell the bot how often it should update the stoploss order. The default value is 60 (1 minute). This same logic will reapply a stoploss order on the exchange should you cancel it accidentally. -### emergencysell and stoploss_on_exchange_limit_ratio +### emergencysell `emergencysell` is an optional value, which defaults to `market` and is used when creating stop loss on exchange orders fails. The below is the default which is used if this is not configured in either strategy or configuration file. -This defaults to 0.99 / 1% (configurable via `stoploss_on_exchange_limit_ratio`). -Calculation example: we bought the asset at 100$. -Stop-price is 95$, then limit would be `95 * 0.99 = 94.05$` - so the stoploss will happen between 95$ and 94.05$. - - !!! Note Stoploss on exchange is only supported for Binance (stop-loss-limit), Kraken (stop-loss-market) and FTX (stop limit and stop-market) as of now. Do not set too low stoploss value if using stop loss on exchange! From bca24c8b6b584e012e573b8aeb393a1e8e54ab93 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 20 Aug 2020 19:35:40 +0200 Subject: [PATCH 2987/3421] Clarify hyperopt dataprovider usage --- docs/strategy-customization.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 73d085abd..be08faa2d 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -366,8 +366,8 @@ All methods return `None` in case of failure (do not raise an exception). Please always check the mode of operation to select the correct method to get data (samples see below). !!! Warning "Hyperopt" - Dataprovider is available during hyperopt, however it can only be used in `populate_indicators()`. - It is not available in `populate_buy()` and `populate_sell()` methods. + Dataprovider is available during hyperopt, however it can only be used in `populate_indicators()` within a strategy. + It is not available in `populate_buy()` and `populate_sell()` methods, nor in `populate_indicators()`, if this method located in the hyperopt file. ### Possible options for DataProvider From f5a9001dc05effd378f07de663a30a88fa6201ec Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 20 Aug 2020 19:51:36 +0200 Subject: [PATCH 2988/3421] Handle backtest results without any trades --- freqtrade/optimize/optimize_reports.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 0799ebb23..0681eed7b 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -31,6 +31,7 @@ def store_backtest_stats(recordfilename: Path, stats: Dict[str, DataFrame]) -> N recordfilename.parent, f'{recordfilename.stem}-{datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}' ).with_suffix(recordfilename.suffix) + print(stats) file_dump_json(filename, stats) latest_filename = Path.joinpath(filename.parent, LAST_BT_RESULT_FN) @@ -185,6 +186,16 @@ def generate_edge_table(results: dict) -> str: def generate_daily_stats(results: DataFrame) -> Dict[str, Any]: + if len(results) == 0: + return { + 'backtest_best_day': 0, + 'backtest_worst_day': 0, + 'winning_days': 0, + 'draw_days': 0, + 'losing_days': 0, + 'winner_holding_avg': timedelta(), + 'loser_holding_avg': timedelta(), + } daily_profit = results.resample('1d', on='close_date')['profit_percent'].sum() worst = min(daily_profit) best = max(daily_profit) @@ -249,7 +260,7 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'sell_reason_summary': sell_reason_stats, 'left_open_trades': left_open_results, 'total_trades': len(results), - 'profit_mean': results['profit_percent'].mean(), + 'profit_mean': results['profit_percent'].mean() if len(results) > 0 else 0, 'profit_total': results['profit_percent'].sum(), 'profit_total_abs': results['profit_abs'].sum(), 'backtest_start': min_date.datetime, @@ -258,7 +269,7 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'backtest_end_ts': max_date.timestamp * 1000, 'backtest_days': backtest_days, - 'trades_per_day': round(len(results) / backtest_days, 2) if backtest_days > 0 else None, + 'trades_per_day': round(len(results) / backtest_days, 2) if backtest_days > 0 else 0, 'market_change': market_change, 'pairlist': list(btdata.keys()), 'stake_amount': config['stake_amount'], From 4f1179d85c3d3aa11a76768c8aaa6af922157e96 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 20 Aug 2020 19:56:41 +0200 Subject: [PATCH 2989/3421] Test for empty case --- freqtrade/optimize/optimize_reports.py | 1 - tests/optimize/test_optimize_reports.py | 8 ++++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 0681eed7b..94729b6a5 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -31,7 +31,6 @@ def store_backtest_stats(recordfilename: Path, stats: Dict[str, DataFrame]) -> N recordfilename.parent, f'{recordfilename.stem}-{datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}' ).with_suffix(recordfilename.suffix) - print(stats) file_dump_json(filename, stats) latest_filename = Path.joinpath(filename.parent, LAST_BT_RESULT_FN) diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index e5d98ca43..4f62e2e23 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -204,6 +204,14 @@ def test_generate_daily_stats(testdatadir): assert res['winner_holding_avg'] == timedelta(seconds=1440) assert res['loser_holding_avg'] == timedelta(days=1, seconds=21420) + # Select empty dataframe! + res = generate_daily_stats(bt_data.loc[bt_data['open_date'] == '2000-01-01', :]) + assert isinstance(res, dict) + assert round(res['backtest_best_day'], 4) == 0.0 + assert res['winning_days'] == 0 + assert res['draw_days'] == 0 + assert res['losing_days'] == 0 + def test_text_table_sell_reason(default_conf): From 838985f6a06d7f1851282c30ef202eb8eeb214c3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 21 Aug 2020 07:13:13 +0200 Subject: [PATCH 2990/3421] Don't reset open-order-id just yet it's needed to get the fees --- freqtrade/freqtradebot.py | 1 - tests/test_freqtradebot.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 0dac4d888..fd5847a94 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -606,7 +606,6 @@ class FreqtradeBot: stake_amount = order['cost'] amount = safe_value_fallback(order, 'filled', 'amount') buy_limit_filled_price = safe_value_fallback(order, 'average', 'price') - order_id = None # in case of FOK the order may be filled immediately and fully elif order_status == 'closed': diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index a907ce5c2..9a3dcbd78 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1057,7 +1057,7 @@ def test_execute_buy(mocker, default_conf, fee, limit_buy_order, limit_buy_order assert freqtrade.execute_buy(pair, stake_amount) trade = Trade.query.all()[3] assert trade - assert trade.open_order_id is None + assert trade.open_order_id == '555' assert trade.open_rate == 0.5 assert trade.stake_amount == 40.495905365 From 0b6014fae3aea892a85bc5e85a6c52f41796a652 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 21 Aug 2020 07:17:52 +0200 Subject: [PATCH 2991/3421] update_trade_state should take the order id directly - not from the trade object --- freqtrade/freqtradebot.py | 29 +++++++++++++---------------- tests/test_freqtradebot.py | 18 +++++++++--------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index fd5847a94..929066c18 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -242,7 +242,7 @@ class FreqtradeBot: else: fo = self.exchange.fetch_order(order.order_id, order.ft_pair) - self.update_trade_state(order.trade, fo, sl_order=order.ft_order_side == 'stoploss') + self.update_trade_state(order.trade, order.order_id, fo) except ExchangeError: logger.warning(f"Error updating {order.order_id}") @@ -272,7 +272,7 @@ class FreqtradeBot: # No action for buy orders ... continue if fo: - self.update_trade_state(trade, fo, sl_order=order.ft_order_side == 'stoploss') + self.update_trade_state(trade, order.order_id, fo) except ExchangeError: logger.warning(f"Error updating {order.order_id}") @@ -634,7 +634,7 @@ class FreqtradeBot: # Update fees if order is closed if order_status == 'closed': - self.update_trade_state(trade, order) + self.update_trade_state(trade, order_id, order) Trade.session.add(trade) Trade.session.flush() @@ -878,7 +878,7 @@ class FreqtradeBot: # We check if stoploss order is fulfilled if stoploss_order and stoploss_order['status'] in ('closed', 'triggered'): trade.sell_reason = SellType.STOPLOSS_ON_EXCHANGE.value - self.update_trade_state(trade, stoploss_order, sl_order=True) + self.update_trade_state(trade, trade.stoploss_order_id, stoploss_order) # Lock pair for one candle to prevent immediate rebuys self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['timeframe'])) @@ -989,7 +989,7 @@ class FreqtradeBot: logger.info('Cannot query order for %s due to %s', trade, traceback.format_exc()) continue - fully_cancelled = self.update_trade_state(trade, order) + fully_cancelled = self.update_trade_state(trade, trade.open_order_id, order) if (order['side'] == 'buy' and (order['status'] == 'open' or fully_cancelled) and ( fully_cancelled @@ -1070,7 +1070,7 @@ class FreqtradeBot: # we need to fall back to the values from order if corder does not contain these keys. trade.amount = filled_amount trade.stake_amount = trade.amount * trade.open_rate - self.update_trade_state(trade, corder, trade.amount) + self.update_trade_state(trade, trade.open_order_id, corder, trade.amount) trade.open_order_id = None logger.info('Partial buy order timeout for %s.', trade) @@ -1208,7 +1208,7 @@ class FreqtradeBot: trade.sell_reason = sell_reason.value # In case of market sell orders the order can be closed immediately if order.get('status', 'unknown') == 'closed': - self.update_trade_state(trade, order) + self.update_trade_state(trade, trade.open_order_id, order) Trade.session.flush() # Lock pair for one candle to prevent immediate rebuys @@ -1305,20 +1305,17 @@ class FreqtradeBot: # Common update trade state methods # - def update_trade_state(self, trade: Trade, action_order: dict = None, - order_amount: float = None, sl_order: bool = False) -> bool: + def update_trade_state(self, trade: Trade, order_id: str, action_order: dict = None, + order_amount: float = None) -> bool: """ Checks trades with open orders and updates the amount if necessary Handles closing both buy and sell orders. :return: True if order has been cancelled without being filled partially, False otherwise """ - # Get order details for actual price per unit - if trade.open_order_id: - order_id = trade.open_order_id - elif trade.stoploss_order_id and sl_order: - order_id = trade.stoploss_order_id - else: - return False + if not order_id: + logger.warning(f'Orderid for trade {trade} is empty.') + False + # Update trade with order values logger.info('Found open order for %s', trade) try: diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 9a3dcbd78..93b71f176 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1699,7 +1699,7 @@ def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> No amount=11, ) # Add datetime explicitly since sqlalchemy defaults apply only once written to database - freqtrade.update_trade_state(trade) + freqtrade.update_trade_state(trade, '123') # Test amount not modified by fee-logic assert not log_has_re(r'Applying fee to .*', caplog) assert trade.open_order_id is None @@ -1709,14 +1709,14 @@ def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> No mocker.patch('freqtrade.freqtradebot.FreqtradeBot.get_real_amount', return_value=90.81) assert trade.amount != 90.81 # test amount modified by fee-logic - freqtrade.update_trade_state(trade) + freqtrade.update_trade_state(trade, '123') assert trade.amount == 90.81 assert trade.open_order_id is None trade.is_open = True trade.open_order_id = None # Assert we call handle_trade() if trade is feasible for execution - freqtrade.update_trade_state(trade) + freqtrade.update_trade_state(trade, '123') assert log_has_re('Found open order for.*', caplog) @@ -1741,7 +1741,7 @@ def test_update_trade_state_withorderdict(default_conf, trades_for_order, limit_ open_order_id="123456", is_open=True, ) - freqtrade.update_trade_state(trade, limit_buy_order) + freqtrade.update_trade_state(trade, '123456', limit_buy_order) assert trade.amount != amount assert trade.amount == limit_buy_order['amount'] @@ -1763,11 +1763,11 @@ def test_update_trade_state_withorderdict_rounding_fee(default_conf, trades_for_ open_rate=0.245441, fee_open=fee.return_value, fee_close=fee.return_value, - open_order_id="123456", + open_order_id='123456', is_open=True, open_date=arrow.utcnow().datetime, ) - freqtrade.update_trade_state(trade, limit_buy_order) + freqtrade.update_trade_state(trade, '123456', limit_buy_order) assert trade.amount != amount assert trade.amount == limit_buy_order['amount'] assert log_has_re(r'Applying fee on amount for .*', caplog) @@ -1787,7 +1787,7 @@ def test_update_trade_state_exception(mocker, default_conf, 'freqtrade.freqtradebot.FreqtradeBot.get_real_amount', side_effect=DependencyException() ) - freqtrade.update_trade_state(trade) + freqtrade.update_trade_state(trade, trade.open_order_id) assert log_has('Could not update trade amount: ', caplog) @@ -1802,7 +1802,7 @@ def test_update_trade_state_orderexception(mocker, default_conf, caplog) -> None # Test raise of OperationalException exception grm_mock = mocker.patch("freqtrade.freqtradebot.FreqtradeBot.get_real_amount", MagicMock()) - freqtrade.update_trade_state(trade) + freqtrade.update_trade_state(trade, trade.open_order_id) assert grm_mock.call_count == 0 assert log_has(f'Unable to fetch order {trade.open_order_id}: ', caplog) @@ -1834,7 +1834,7 @@ def test_update_trade_state_sell(default_conf, trades_for_order, limit_sell_orde order = Order.parse_from_ccxt_object(limit_sell_order_open, 'LTC/ETH', 'sell') trade.orders.append(order) assert order.status == 'open' - freqtrade.update_trade_state(trade, limit_sell_order) + freqtrade.update_trade_state(trade, trade.open_order_id, limit_sell_order) assert trade.amount == limit_sell_order['amount'] # Wallet needs to be updated after closing a limit-sell order to reenable buying assert wallet_mock.call_count == 1 From 3be14933d4cc048096177b3274d78dde47f9ed87 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 21 Aug 2020 07:24:49 +0200 Subject: [PATCH 2992/3421] Add comment explaining update_open_orders --- freqtrade/freqtradebot.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 929066c18..3305bb584 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -134,6 +134,8 @@ class FreqtradeBot: # Adjust stoploss if it was changed Trade.stoploss_reinitialization(self.strategy.stoploss) + # Only update open orders on startup + # This will update the database after the initial migration self.update_open_orders() def process(self) -> None: From 357d7714ec9fa6da153c3ca1d87599ea2adc7419 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 21 Aug 2020 07:31:22 +0200 Subject: [PATCH 2993/3421] Add docstring to update_trade_state --- freqtrade/freqtradebot.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 3305bb584..4a660d867 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1312,6 +1312,11 @@ class FreqtradeBot: """ Checks trades with open orders and updates the amount if necessary Handles closing both buy and sell orders. + :param trade: Trade object of the trade we're analyzing + :param order_id: Order-id of the order we're analyzing + :param action_order: Already aquired order object + :param order_amount: Order-amount - only used in case of partially cancelled buy order + TODO: Investigate if this is really needed, or covered by getting filled in here again. :return: True if order has been cancelled without being filled partially, False otherwise """ if not order_id: From fa0c8fa0b332e144556851cde5de218bca77f56d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 21 Aug 2020 14:26:23 +0200 Subject: [PATCH 2994/3421] Readd note about windows hyperopt color output --- docs/hyperopt.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 9acb606c3..6330a1a5e 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -370,6 +370,9 @@ By default, hyperopt prints colorized results -- epochs with positive profit are You can use the `--print-all` command line option if you would like to see all results in the hyperopt output, not only the best ones. When `--print-all` is used, current best results are also colorized by default -- they are printed in bold (bright) style. This can also be switched off with the `--no-color` command line option. +!!! Note "Windows and color output" + Windows does not support color-output nativly, therefore it is automatically disabled. To have color-output for hyperopt running under windows, please consider using WSL. + ### Understand Hyperopt ROI results If you are optimizing ROI (i.e. if optimization search-space contains 'all', 'default' or 'roi'), your result will look as follows and include a ROI table: From 3d93236709f93e0380659e074e2b44c518a1cc11 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 21 Aug 2020 14:55:47 +0200 Subject: [PATCH 2995/3421] Remove unused import --- freqtrade/optimize/hyperopt.py | 1 - 1 file changed, 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 3e7e2ca57..b9db3c09a 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -12,7 +12,6 @@ import warnings from collections import OrderedDict from math import ceil from operator import itemgetter -from os import path from pathlib import Path from pprint import pformat from typing import Any, Dict, List, Optional From 0e368b16aba83de72328b52f1e867d6ee5c9bcd1 Mon Sep 17 00:00:00 2001 From: Fredrik81 Date: Fri, 21 Aug 2020 18:25:45 +0200 Subject: [PATCH 2996/3421] Update stoploss.md --- docs/stoploss.md | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 2595a3f55..2518df846 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -6,8 +6,8 @@ For example, value `-0.10` will cause immediate sell if the profit dips below -1 Most of the strategy files already include the optimal `stoploss` value. !!! Info - All stoploss properties mentioned in this file can be set in the Strategy, or in the configuration. - Configuration values will override the strategy values. +* All stoploss properties mentioned in this file can be set in the Strategy, or in the configuration. +* Configuration values will override the strategy values. ## Stop Loss On-Exchange/Freqtrade @@ -22,35 +22,33 @@ These modes can be configured with these values: 'stoploss_on_exchange_limit_ratio': 0.99 ``` +!!! Note +* Stoploss on exchange is only supported for Binance (stop-loss-limit), Kraken (stop-loss-market) and FTX (stop limit and stop-market) as of now. +* Do not set too low stoploss value if using stop loss on exchange! +* If set to low/tight then you have greater risk of missing fill on the order and stoploss will not work + ### stoploss_on_exchange and stoploss_on_exchange_limit_ratio Enable or Disable stop loss on exchange. If the stoploss is *on exchange* it means a stoploss limit order is placed on the exchange immediately after buy order happens successfully. This will protect you against sudden crashes in market as the order will be in the queue immediately and if market goes down then the order has more chance of being fulfilled. -If `stoploss_on_exchange` uses limit orders, the exchange needs 2 prices, the stoploss_price and the Limit price. -`stoploss` defines the stop-price - and limit should be slightly below this. -If an exchange supports both limit and market stoploss orders, then the value of `stoploss` will be used to determine the stoploss type. +If `stoploss_on_exchange` uses limit orders, the exchange needs 2 prices, the stoploss_price and the Limit price. +`stoploss` defines the stop-price where the limit order is placed - and limit should be slightly below this. +If an exchange supports both limit and market stoploss orders, then the value of `stoploss` will be used to determine the stoploss type. -If `stoploss_on_exchange` fails to fill we can use `stoploss_on_exchange_limit_ratio` that defaults to 0.99 / 1% to perform an [emergency sell](#emergencysell). -Calculation example: we bought the asset at 100$. -Stop-price is 95$, then limit would be `95 * 0.99 = 94.05$` - so the stoploss(emergency sell) will happen between 95$ and 94.05$. +Calculation example: we bought the asset at 100$. +Stop-price is 95$, then limit would be `95 * 0.99 = 94.05$` - so the limit order fill can happen between 95$ and 94.05$. For example, assuming the stoploss is on exchange, and trailing stoploss is enabled, and the market is going up, then the bot automatically cancels the previous stoploss order and puts a new one with a stop value higher than the previous stoploss order. ### stoploss_on_exchange_interval -In case of stoploss on exchange there is another parameter called `stoploss_on_exchange_interval`. This configures the interval in seconds at which the bot will check the stoploss and update it if necessary. +In case of stoploss on exchange there is another parameter called `stoploss_on_exchange_interval`. This configures the interval in seconds at which the bot will check the stoploss and update it if necessary. The bot cannot do these every 5 seconds (at each iteration), otherwise it would get banned by the exchange. So this parameter will tell the bot how often it should update the stoploss order. The default value is 60 (1 minute). This same logic will reapply a stoploss order on the exchange should you cancel it accidentally. ### emergencysell `emergencysell` is an optional value, which defaults to `market` and is used when creating stop loss on exchange orders fails. -The below is the default which is used if this is not configured in either strategy or configuration file. - -!!! Note - Stoploss on exchange is only supported for Binance (stop-loss-limit), Kraken (stop-loss-market) and FTX (stop limit and stop-market) as of now. - Do not set too low stoploss value if using stop loss on exchange! -* If set to low/tight then you have greater risk of missing fill on the order and stoploss will not work - +The below is the default which is used if not changed in strategy or configuration file. Example from strategy file: @@ -119,7 +117,7 @@ It is also possible to have a default stop loss, when you are in the red with yo For example, your default stop loss is -10%, but once you have more than 0% profit (example 0.1%) a different trailing stoploss will be used. !!! Note - If you want the stoploss to only be changed when you break even of making a profit (what most users want) please refer to next section with [offset enabled](#Trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). +* If you want the stoploss to only be changed when you break even of making a profit (what most users want) please refer to next section with [offset enabled](#Trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). Both values require `trailing_stop` to be set to true and `trailing_stop_positive` with a value. @@ -174,7 +172,7 @@ For example, simplified math: * now the asset drops in value to 101$, the stop loss will still be 100.94$ and would trigger at 100.94$ !!! Tip - Make sure to have this value (`trailing_stop_positive_offset`) lower than minimal ROI, otherwise minimal ROI will apply first and sell the trade. +* Make sure to have this value (`trailing_stop_positive_offset`) lower than minimal ROI, otherwise minimal ROI will apply first and sell the trade. ## Changing stoploss on open trades From 2d6bcbb454fe2c485148bfcf02a067cba2e57077 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 21 Aug 2020 19:51:31 +0200 Subject: [PATCH 2997/3421] Fix small error in trades updating --- freqtrade/freqtradebot.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4a660d867..c4147e7e4 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -254,6 +254,8 @@ class FreqtradeBot: Try refinding a lost trade. Only used when InsufficientFunds appears on sell orders (stoploss or sell). Tries to walk the stored orders and sell them off eventually. + + TODO: maybe remove this method again. """ logger.info(f"Trying to refind lost order for {trade}") for order in trade.orders: @@ -1407,7 +1409,7 @@ class FreqtradeBot: """ fee-detection fallback to Trades. Parses result of fetch_my_trades to get correct fee. """ - trades = self.exchange.get_trades_for_order(trade.open_order_id, trade.pair, + trades = self.exchange.get_trades_for_order(order['id'], trade.pair, trade.open_date) if len(trades) == 0: From fc42d552ab63f0d6bfb0c7646e088561e6168cfc Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 21 Aug 2020 20:13:06 +0200 Subject: [PATCH 2998/3421] Convert logs to fstrings --- freqtrade/persistence/models.py | 6 +++--- tests/test_freqtradebot.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 3f918670a..31f40f713 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -379,15 +379,15 @@ class Trade(_DECL_BASE): self.open_rate = Decimal(safe_value_fallback(order, 'average', 'price')) self.amount = Decimal(safe_value_fallback(order, 'filled', 'amount')) self.recalc_open_trade_price() - logger.info('%s_BUY has been fulfilled for %s.', order_type.upper(), self) + logger.info(f'{order_type.upper()}_BUY has been fulfilled for {self}.') self.open_order_id = None elif order_type in ('market', 'limit') and order['side'] == 'sell': self.close(safe_value_fallback(order, 'average', 'price')) - logger.info('%s_SELL has been fulfilled for %s.', order_type.upper(), self) + logger.info(f'{order_type.upper()}_SELL has been fulfilled for {self}.') elif order_type in ('stop_loss_limit', 'stop-loss', 'stop'): self.stoploss_order_id = None self.close_rate_requested = self.stop_loss - logger.info('%s is hit for %s.', order_type.upper(), self) + logger.info(f'{order_type.upper()} is hit for {self}.') self.close(order['average']) else: raise ValueError(f'Unknown order type: {order_type}') diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 93b71f176..aefaebad5 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1215,7 +1215,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf, fee, caplog, }) mocker.patch('freqtrade.exchange.Exchange.fetch_stoploss_order', stoploss_order_hit) assert freqtrade.handle_stoploss_on_exchange(trade) is True - assert log_has('STOP_LOSS_LIMIT is hit for {}.'.format(trade), caplog) + assert log_has_re(r'STOP_LOSS_LIMIT is hit for Trade\(id=1, .*\)\.', caplog) assert trade.stoploss_order_id is None assert trade.is_open is False From 39beb5c8375c8abe0fbce95c13f2346e7fe16bee Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Aug 2020 08:39:10 +0200 Subject: [PATCH 2999/3421] Add method to update fees on closed trades --- freqtrade/freqtradebot.py | 22 +++++++++++++++++++++- freqtrade/persistence/models.py | 24 +++++++++++++++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c4147e7e4..3783908a2 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -138,6 +138,8 @@ class FreqtradeBot: # This will update the database after the initial migration self.update_open_orders() + self.update_closed_trades_without_assigned_fees() + def process(self) -> None: """ Queries the persistence layer for open trades and handles them, @@ -148,6 +150,8 @@ class FreqtradeBot: # Check whether markets have to be reloaded and reload them when it's needed self.exchange.reload_markets() + self.update_closed_trades_without_assigned_fees() + # Query trades from persistence layer trades = Trade.get_open_trades() @@ -233,7 +237,8 @@ class FreqtradeBot: def update_open_orders(self): """ - Updates open orders based on order list kept in the database + Updates open orders based on order list kept in the database. + Mainly updates the state of orders - but may also close trades """ orders = Order.get_open_orders() logger.info(f"Updating {len(orders)} open orders.") @@ -249,6 +254,21 @@ class FreqtradeBot: except ExchangeError: logger.warning(f"Error updating {order.order_id}") + def update_closed_trades_without_assigned_fees(self): + """ + Update closed trades without close fees assigned. + Only works when Orders are in the database, otherwise the last orderid is unknown. + """ + trades: List[Trade] = Trade.get_sold_trades_without_assigned_fees() + for trade in trades: + + if not trade.is_open and not trade.fee_updated('sell'): + # Get sell fee + order = trade.select_order('sell', 'closed') + if order: + logger.info(f"Updating sell-fee on trade {trade} for order {order.order_id}.") + self.update_trade_state(trade, order.order_id) + def refind_lost_order(self, trade): """ Try refinding a lost trade. diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 31f40f713..01d2286f9 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -8,7 +8,7 @@ from typing import Any, Dict, List, Optional import arrow from sqlalchemy import (Boolean, Column, DateTime, Float, ForeignKey, Integer, - String, create_engine, desc, func, inspect) + String, create_engine, desc, func, inspect, or_) from sqlalchemy.exc import NoSuchModuleError from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import Query, relationship @@ -508,6 +508,17 @@ class Trade(_DECL_BASE): profit_ratio = (close_trade_price / self.open_trade_price) - 1 return float(f"{profit_ratio:.8f}") + def select_order(self, order_side: str, status: str): + """ + Returns latest order for this orderside and status + Returns None if nothing is found + """ + orders = [o for o in self.orders if o.side == order_side and o.status == status] + if len(orders) > 0: + return orders[-1] + else: + return None + @staticmethod def get_trades(trade_filter=None) -> Query: """ @@ -539,6 +550,17 @@ class Trade(_DECL_BASE): """ return Trade.get_trades(Trade.open_order_id.isnot(None)).all() + @staticmethod + def get_sold_trades_without_assigned_fees(): + """ + Returns all closed trades which don't have fees set correctly + """ + return Trade.get_trades([Trade.fee_close_currency.is_(None), + Trade.id == 100, + Trade.orders.any(), + Trade.is_open.is_(False), + ]).all() + @staticmethod def total_open_trades_stakes() -> float: """ From fc2104bfad5715d3a9db6e9a5644071dafce6c8f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Aug 2020 09:12:09 +0200 Subject: [PATCH 3000/3421] Fix bug with time when updating order_date --- freqtrade/persistence/models.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 01d2286f9..a5c047cf4 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -2,7 +2,7 @@ This module contains the class to persist trades into SQLite """ import logging -from datetime import datetime +from datetime import datetime, timezone from decimal import Decimal from typing import Any, Dict, List, Optional @@ -152,11 +152,13 @@ class Order(_DECL_BASE): self.remaining = order.get('remaining', self.remaining) self.cost = order.get('cost', self.cost) if 'timestamp' in order and order['timestamp'] is not None: - self.order_date = datetime.fromtimestamp(order['timestamp'] / 1000) + self.order_date = datetime.fromtimestamp(order['timestamp'] / 1000, tz=timezone.utc) if self.status in ('closed', 'canceled', 'cancelled'): self.ft_is_open = False - self.order_update_date = datetime.now() + if order.get('filled', 0) > 0: + self.order_filled_date = arrow.utcnow().datetime + self.order_update_date = arrow.utcnow().datetime @staticmethod def update_orders(orders: List['Order'], order: Dict[str, Any]): From f2b390a27113be687d488df18bd73c014380073d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Aug 2020 09:24:14 +0200 Subject: [PATCH 3001/3421] Add fetch_order_or_stoploss wrapper --- freqtrade/exchange/exchange.py | 11 +++++++++++ tests/exchange/test_exchange.py | 25 +++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 578d753a4..64d1a75de 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1039,6 +1039,17 @@ class Exchange: # Assign method to fetch_stoploss_order to allow easy overriding in other classes fetch_stoploss_order = fetch_order + def fetch_order_or_stoploss_order(self, order_id: str, pair: str, + stoploss_order: bool = False) -> Dict: + """ + Simple wrapper calling either fetch_order or fetch_stoploss_order depending on + the stoploss_order parameter + :param stoploss_order: If true, uses fetch_stoploss_order, otherwise fetch_order. + """ + if stoploss_order: + return self.fetch_stoploss_order(order_id, pair) + return self.fetch_order(order_id, pair) + @retrier def fetch_l2_order_book(self, pair: str, limit: int = 100) -> dict: """ diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index d0e303f5f..e68629d3d 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1936,6 +1936,31 @@ def test_fetch_stoploss_order(default_conf, mocker, exchange_name): order_id='_', pair='TKN/BTC') +def test_fetch_order_or_stoploss_order(default_conf, mocker): + exchange = get_patched_exchange(mocker, default_conf, id='binance') + fetch_order_mock = MagicMock() + fetch_stoploss_order_mock = MagicMock() + mocker.patch.multiple('freqtrade.exchange.Exchange', + fetch_order=fetch_order_mock, + fetch_stoploss_order=fetch_stoploss_order_mock, + ) + + exchange.fetch_order_or_stoploss_order('1234', 'ETH/BTC', False) + assert fetch_order_mock.call_count == 1 + assert fetch_order_mock.call_args_list[0][0][0] == '1234' + assert fetch_order_mock.call_args_list[0][0][1] == 'ETH/BTC' + assert fetch_stoploss_order_mock.call_count == 0 + + fetch_order_mock.reset_mock() + fetch_stoploss_order_mock.reset_mock() + + exchange.fetch_order_or_stoploss_order('1234', 'ETH/BTC', True) + assert fetch_order_mock.call_count == 0 + assert fetch_stoploss_order_mock.call_count == 1 + assert fetch_stoploss_order_mock.call_args_list[0][0][0] == '1234' + assert fetch_stoploss_order_mock.call_args_list[0][0][1] == 'ETH/BTC' + + @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_name(default_conf, mocker, exchange_name): exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) From 3b4446339e9df77044a99c55d5df9cb2a15ac227 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Aug 2020 09:30:25 +0200 Subject: [PATCH 3002/3421] Use fetch_order_or_stoploss order --- freqtrade/freqtradebot.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 3783908a2..ea1cb5322 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -138,6 +138,7 @@ class FreqtradeBot: # This will update the database after the initial migration self.update_open_orders() + # TODO: remove next call once testing is done - this is called on every iteration. self.update_closed_trades_without_assigned_fees() def process(self) -> None: @@ -244,10 +245,8 @@ class FreqtradeBot: logger.info(f"Updating {len(orders)} open orders.") for order in orders: try: - if order.ft_order_side == 'stoploss': - fo = self.exchange.fetch_stoploss_order(order.order_id, order.ft_pair) - else: - fo = self.exchange.fetch_order(order.order_id, order.ft_pair) + fo = self.exchange.fetch_order_or_stoploss_order(order.order_id, order.ft_pair, + order.ft_order_side == 'stoploss') self.update_trade_state(order.trade, order.order_id, fo) @@ -257,7 +256,7 @@ class FreqtradeBot: def update_closed_trades_without_assigned_fees(self): """ Update closed trades without close fees assigned. - Only works when Orders are in the database, otherwise the last orderid is unknown. + Only acts when Orders are in the database, otherwise the last orderid is unknown. """ trades: List[Trade] = Trade.get_sold_trades_without_assigned_fees() for trade in trades: @@ -267,7 +266,8 @@ class FreqtradeBot: order = trade.select_order('sell', 'closed') if order: logger.info(f"Updating sell-fee on trade {trade} for order {order.order_id}.") - self.update_trade_state(trade, order.order_id) + self.update_trade_state(trade, order.order_id, + order.ft_order_side == 'stoploss') def refind_lost_order(self, trade): """ @@ -282,13 +282,13 @@ class FreqtradeBot: logger.info(f"Trying to refind {order}") fo = None try: + fo = self.exchange.fetch_order_or_stoploss_order(order.order_id, order.ft_pair, + order.ft_order_side == 'stoploss') if order.ft_order_side == 'stoploss': - fo = self.exchange.fetch_stoploss_order(order.order_id, order.ft_pair) if fo and fo['status'] == 'open': # Assume this as the open stoploss order trade.stoploss_order_id = order.order_id elif order.ft_order_side == 'sell': - fo = self.exchange.fetch_order(order.order_id, order.ft_pair) if fo and fo['status'] == 'open': # Assume this as the open order trade.open_order_id = order.order_id @@ -296,7 +296,8 @@ class FreqtradeBot: # No action for buy orders ... continue if fo: - self.update_trade_state(trade, order.order_id, fo) + self.update_trade_state(trade, order.order_id, fo, + order.ft_order_side == 'stoploss') except ExchangeError: logger.warning(f"Error updating {order.order_id}") @@ -902,7 +903,8 @@ class FreqtradeBot: # We check if stoploss order is fulfilled if stoploss_order and stoploss_order['status'] in ('closed', 'triggered'): trade.sell_reason = SellType.STOPLOSS_ON_EXCHANGE.value - self.update_trade_state(trade, trade.stoploss_order_id, stoploss_order) + self.update_trade_state(trade, trade.stoploss_order_id, stoploss_order, + stoploss_order=True) # Lock pair for one candle to prevent immediate rebuys self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['timeframe'])) @@ -1330,7 +1332,7 @@ class FreqtradeBot: # def update_trade_state(self, trade: Trade, order_id: str, action_order: dict = None, - order_amount: float = None) -> bool: + order_amount: float = None, stoploss_order: bool = False) -> bool: """ Checks trades with open orders and updates the amount if necessary Handles closing both buy and sell orders. @@ -1348,7 +1350,9 @@ class FreqtradeBot: # Update trade with order values logger.info('Found open order for %s', trade) try: - order = action_order or self.exchange.fetch_order(order_id, trade.pair) + order = action_order or self.exchange.fetch_order_or_stoploss_order(order_id, + trade.pair, + stoploss_order) except InvalidOrderException as exception: logger.warning('Unable to fetch order %s: %s', order_id, exception) return False From 637147f89c59a5fe431cd6d0f91f54345922c875 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Aug 2020 09:33:35 +0200 Subject: [PATCH 3003/3421] Update sql cheatsheet parentheses --- docs/sql_cheatsheet.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sql_cheatsheet.md b/docs/sql_cheatsheet.md index 748b16928..cf785ced6 100644 --- a/docs/sql_cheatsheet.md +++ b/docs/sql_cheatsheet.md @@ -110,7 +110,7 @@ SET is_open=0, close_date=, close_rate=, close_profit = close_rate / open_rate - 1, - close_profit_abs = (amount * * (1 - fee_close) - (amount * (open_rate * 1 - fee_open))), + close_profit_abs = (amount * * (1 - fee_close) - (amount * (open_rate * (1 - fee_open)))), sell_reason= WHERE id=; ``` @@ -123,7 +123,7 @@ SET is_open=0, close_date='2020-06-20 03:08:45.103418', close_rate=0.19638016, close_profit=0.0496, - close_profit_abs = (amount * 0.19638016 * (1 - fee_close) - (amount * open_rate * (1 - fee_open))), + close_profit_abs = (amount * 0.19638016 * (1 - fee_close) - (amount * (open_rate * (1 - fee_open)))), sell_reason='force_sell' WHERE id=31; ``` From fd33282eb1ecbd954c2d757b3e4efef9f174365a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Aug 2020 15:48:00 +0200 Subject: [PATCH 3004/3421] Add handle_insufficient exception --- freqtrade/freqtradebot.py | 31 +++++++++++++++++++++++++------ freqtrade/persistence/models.py | 7 ++++--- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ea1cb5322..2656d3d3a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -269,6 +269,27 @@ class FreqtradeBot: self.update_trade_state(trade, order.order_id, order.ft_order_side == 'stoploss') + def handle_insufficient_funds(self, trade: Trade): + """ + """ + sell_order = trade.select_order('sell', None) + if sell_order: + self.refind_lost_order(trade) + else: + self.reupdate_buy_order_fees(trade) + + # See if we ever opened a sell order for this + # If not, try update buy fees + + def reupdate_buy_order_fees(self, trade: Trade): + """ + """ + logger.info(f"Trying to reupdate buy fees for {trade}") + order = trade.select_order('buy', 'closed') + if order: + logger.info(f"Updating buy-fee on trade {trade} for order {order.order_id}.") + self.update_trade_state(trade, order.order_id) + def refind_lost_order(self, trade): """ Try refinding a lost trade. @@ -864,9 +885,8 @@ class FreqtradeBot: return True except InsufficientFundsError as e: logger.warning(f"Unable to place stoploss order {e}.") - # Try refinding stoploss order - # TODO: Currently disabled to allow testing without this first - # self.refind_lost_order(trade) + # Try to figure out what went wrong + self.handle_insufficient_funds(trade) except InvalidOrderException as e: trade.stoploss_order_id = None @@ -1221,9 +1241,8 @@ class FreqtradeBot: ) except InsufficientFundsError as e: logger.warning(f"Unable to place order {e}.") - # Try refinding "lost" orders - # TODO: Currently disabled to allow testing without this first - # self.refind_lost_order(trade) + # Try to figure out what went wrong + self.handle_insufficient_funds(trade) return False order_obj = Order.parse_from_ccxt_object(order, trade.pair, 'sell') diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index a5c047cf4..d66108fce 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -510,12 +510,14 @@ class Trade(_DECL_BASE): profit_ratio = (close_trade_price / self.open_trade_price) - 1 return float(f"{profit_ratio:.8f}") - def select_order(self, order_side: str, status: str): + def select_order(self, order_side: str, status: Optional[str]): """ Returns latest order for this orderside and status Returns None if nothing is found """ - orders = [o for o in self.orders if o.side == order_side and o.status == status] + orders = [o for o in self.orders if o.side == order_side] + if status: + orders = [o for o in orders if o.status == status] if len(orders) > 0: return orders[-1] else: @@ -558,7 +560,6 @@ class Trade(_DECL_BASE): Returns all closed trades which don't have fees set correctly """ return Trade.get_trades([Trade.fee_close_currency.is_(None), - Trade.id == 100, Trade.orders.any(), Trade.is_open.is_(False), ]).all() From 11e69bdd65b5951fbf4bfb33678cb3c90e7649e5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Aug 2020 15:48:42 +0200 Subject: [PATCH 3005/3421] Update open trades too --- freqtrade/freqtradebot.py | 21 ++++++++++++++------- freqtrade/persistence/models.py | 12 +++++++++++- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 2656d3d3a..5e782a353 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -267,10 +267,20 @@ class FreqtradeBot: if order: logger.info(f"Updating sell-fee on trade {trade} for order {order.order_id}.") self.update_trade_state(trade, order.order_id, - order.ft_order_side == 'stoploss') + stoploss_order=order.ft_order_side == 'stoploss') + + trades: List[Trade] = Trade.get_open_trades_without_assigned_fees() + for trade in trades: + if trade.is_open and not trade.fee_updated('buy'): + order = trade.select_order('buy', 'closed') + if order: + logger.info(f"Updating buy-fee on trade {trade} for order {order.order_id}.") + self.update_trade_state(trade, order.order_id) def handle_insufficient_funds(self, trade: Trade): """ + Determine if we ever opened a sell order for this trade. + If not, try update buy fees - otherwise "refind" the open order we obviously lost. """ sell_order = trade.select_order('sell', None) if sell_order: @@ -278,11 +288,10 @@ class FreqtradeBot: else: self.reupdate_buy_order_fees(trade) - # See if we ever opened a sell order for this - # If not, try update buy fees - def reupdate_buy_order_fees(self, trade: Trade): """ + Get buy order from database, and try to reupdate. + Handles trades where the initial fee-update did not work. """ logger.info(f"Trying to reupdate buy fees for {trade}") order = trade.select_order('buy', 'closed') @@ -295,8 +304,6 @@ class FreqtradeBot: Try refinding a lost trade. Only used when InsufficientFunds appears on sell orders (stoploss or sell). Tries to walk the stored orders and sell them off eventually. - - TODO: maybe remove this method again. """ logger.info(f"Trying to refind lost order for {trade}") for order in trade.orders: @@ -318,7 +325,7 @@ class FreqtradeBot: continue if fo: self.update_trade_state(trade, order.order_id, fo, - order.ft_order_side == 'stoploss') + stoploss_order=order.ft_order_side == 'stoploss') except ExchangeError: logger.warning(f"Error updating {order.order_id}") diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index d66108fce..f9eeedd4b 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -8,7 +8,7 @@ from typing import Any, Dict, List, Optional import arrow from sqlalchemy import (Boolean, Column, DateTime, Float, ForeignKey, Integer, - String, create_engine, desc, func, inspect, or_) + String, create_engine, desc, func, inspect) from sqlalchemy.exc import NoSuchModuleError from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import Query, relationship @@ -554,6 +554,16 @@ class Trade(_DECL_BASE): """ return Trade.get_trades(Trade.open_order_id.isnot(None)).all() + @staticmethod + def get_open_trades_without_assigned_fees(): + """ + Returns all open trades which don't have open fees set correctly + """ + return Trade.get_trades([Trade.fee_open_currency.is_(None), + Trade.orders.any(), + Trade.is_open.is_(True), + ]).all() + @staticmethod def get_sold_trades_without_assigned_fees(): """ From 3d7e800ff2e00c2e8e580d2868b07d6cf21fbb88 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Aug 2020 16:08:54 +0200 Subject: [PATCH 3006/3421] Remove test code --- freqtrade/freqtradebot.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5e782a353..6d2f9ddcc 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -138,9 +138,6 @@ class FreqtradeBot: # This will update the database after the initial migration self.update_open_orders() - # TODO: remove next call once testing is done - this is called on every iteration. - self.update_closed_trades_without_assigned_fees() - def process(self) -> None: """ Queries the persistence layer for open trades and handles them, From 674b510d2345ebcb7a8207588b44a1a6b25d9465 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 22 Aug 2020 17:35:42 +0200 Subject: [PATCH 3007/3421] Parametrize fetch_order retry counts --- freqtrade/exchange/common.py | 4 ++++ freqtrade/exchange/exchange.py | 5 +++-- freqtrade/exchange/ftx.py | 4 ++-- tests/exchange/test_exchange.py | 22 ++++++++++++---------- tests/exchange/test_ftx.py | 5 ++--- tests/exchange/test_kraken.py | 2 -- 6 files changed, 23 insertions(+), 19 deletions(-) diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index 3bba9be72..539bcef22 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -9,7 +9,11 @@ from freqtrade.exceptions import (DDosProtection, RetryableOrderError, logger = logging.getLogger(__name__) +# Maximum default retry count. +# Functions are always called RETRY_COUNT + 1 times (for the original call) API_RETRY_COUNT = 4 +API_FETCH_ORDER_RETRY_COUNT = 3 + BAD_EXCHANGES = { "bitmex": "Various reasons.", "bitstamp": "Does not provide history. " diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 64d1a75de..3b2b56d13 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -23,7 +23,8 @@ from freqtrade.exceptions import (DDosProtection, ExchangeError, InsufficientFundsError, InvalidOrderException, OperationalException, RetryableOrderError, TemporaryError) -from freqtrade.exchange.common import BAD_EXCHANGES, retrier, retrier_async +from freqtrade.exchange.common import (API_FETCH_ORDER_RETRY_COUNT, + BAD_EXCHANGES, retrier, retrier_async) from freqtrade.misc import deep_merge_dicts, safe_value_fallback2 CcxtModuleType = Any @@ -1010,7 +1011,7 @@ class Exchange: return order - @retrier(retries=5) + @retrier(retries=API_FETCH_ORDER_RETRY_COUNT) def fetch_order(self, order_id: str, pair: str) -> Dict: if self._config['dry_run']: try: diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index 27051a945..39100d0b7 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -8,7 +8,7 @@ from freqtrade.exceptions import (DDosProtection, InsufficientFundsError, InvalidOrderException, OperationalException, TemporaryError) from freqtrade.exchange import Exchange -from freqtrade.exchange.common import retrier +from freqtrade.exchange.common import API_FETCH_ORDER_RETRY_COUNT, retrier logger = logging.getLogger(__name__) @@ -78,7 +78,7 @@ class Ftx(Exchange): except ccxt.BaseError as e: raise OperationalException(e) from e - @retrier(retries=5) + @retrier(retries=API_FETCH_ORDER_RETRY_COUNT) def fetch_stoploss_order(self, order_id: str, pair: str) -> Dict: if self._config['dry_run']: try: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index e68629d3d..a05377702 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1,5 +1,3 @@ -# pragma pylint: disable=missing-docstring, C0103, bad-continuation, global-statement -# pragma pylint: disable=protected-access import copy import logging from datetime import datetime, timezone @@ -11,10 +9,12 @@ import ccxt import pytest from pandas import DataFrame -from freqtrade.exceptions import (DependencyException, InvalidOrderException, DDosProtection, - OperationalException, TemporaryError) +from freqtrade.exceptions import (DDosProtection, DependencyException, + InvalidOrderException, OperationalException, + TemporaryError) from freqtrade.exchange import Binance, Exchange, Kraken -from freqtrade.exchange.common import API_RETRY_COUNT, calculate_backoff +from freqtrade.exchange.common import (API_RETRY_COUNT, API_FETCH_ORDER_RETRY_COUNT, + calculate_backoff) from freqtrade.exchange.exchange import (market_is_active, symbol_is_pair, timeframe_to_minutes, timeframe_to_msecs, @@ -1894,12 +1894,14 @@ def test_fetch_order(default_conf, mocker, exchange_name): # Ensure backoff is called assert tm.call_args_list[0][0][0] == 1 assert tm.call_args_list[1][0][0] == 2 - assert tm.call_args_list[2][0][0] == 5 - assert tm.call_args_list[3][0][0] == 10 - assert api_mock.fetch_order.call_count == 6 + if API_FETCH_ORDER_RETRY_COUNT > 2: + assert tm.call_args_list[2][0][0] == 5 + if API_FETCH_ORDER_RETRY_COUNT > 3: + assert tm.call_args_list[3][0][0] == 10 + assert api_mock.fetch_order.call_count == API_FETCH_ORDER_RETRY_COUNT + 1 ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, - 'fetch_order', 'fetch_order', retries=6, + 'fetch_order', 'fetch_order', retries=API_FETCH_ORDER_RETRY_COUNT + 1, order_id='_', pair='TKN/BTC') @@ -1932,7 +1934,7 @@ def test_fetch_stoploss_order(default_conf, mocker, exchange_name): ccxt_exceptionhandlers(mocker, default_conf, api_mock, exchange_name, 'fetch_stoploss_order', 'fetch_order', - retries=6, + retries=API_FETCH_ORDER_RETRY_COUNT + 1, order_id='_', pair='TKN/BTC') diff --git a/tests/exchange/test_ftx.py b/tests/exchange/test_ftx.py index bed92d276..16789af2c 100644 --- a/tests/exchange/test_ftx.py +++ b/tests/exchange/test_ftx.py @@ -1,5 +1,3 @@ -# pragma pylint: disable=missing-docstring, C0103, bad-continuation, global-statement -# pragma pylint: disable=protected-access from random import randint from unittest.mock import MagicMock @@ -7,6 +5,7 @@ import ccxt import pytest from freqtrade.exceptions import DependencyException, InvalidOrderException +from freqtrade.exchange.common import API_FETCH_ORDER_RETRY_COUNT from tests.conftest import get_patched_exchange from .test_exchange import ccxt_exceptionhandlers @@ -154,5 +153,5 @@ def test_fetch_stoploss_order(default_conf, mocker): ccxt_exceptionhandlers(mocker, default_conf, api_mock, 'ftx', 'fetch_stoploss_order', 'fetch_orders', - retries=6, + retries=API_FETCH_ORDER_RETRY_COUNT + 1, order_id='_', pair='TKN/BTC') diff --git a/tests/exchange/test_kraken.py b/tests/exchange/test_kraken.py index 9451c0b9e..8f774a7ec 100644 --- a/tests/exchange/test_kraken.py +++ b/tests/exchange/test_kraken.py @@ -1,5 +1,3 @@ -# pragma pylint: disable=missing-docstring, C0103, bad-continuation, global-statement -# pragma pylint: disable=protected-access from random import randint from unittest.mock import MagicMock From d8a6410fd145d38a01f40b5cbc3757f76db2ea2c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Aug 2020 09:00:57 +0200 Subject: [PATCH 3008/3421] Fix small bug when using max-open-trades -1 in backtesting --- freqtrade/optimize/optimize_reports.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 94729b6a5..b5e5da4af 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -273,7 +273,8 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'pairlist': list(btdata.keys()), 'stake_amount': config['stake_amount'], 'stake_currency': config['stake_currency'], - 'max_open_trades': config['max_open_trades'], + 'max_open_trades': (config['max_open_trades'] + if config['max_open_trades'] != float('inf') else -1), 'timeframe': config['timeframe'], **daily_stats, } From 2701a7cb12ce57769ad79cd0b52a38cb27ad87df Mon Sep 17 00:00:00 2001 From: Martin Schultheiss Date: Sun, 23 Aug 2020 09:11:34 +0200 Subject: [PATCH 3009/3421] update bad exchanges --- freqtrade/exchange/common.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index 3bba9be72..7f6dfe0eb 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -16,6 +16,7 @@ BAD_EXCHANGES = { "Details in https://github.com/freqtrade/freqtrade/issues/1983", "hitbtc": "This API cannot be used with Freqtrade. " "Use `hitbtc2` exchange id to access this exchange.", + "phemex": "Does not provide history. ", **dict.fromkeys([ 'adara', 'anxpro', From 73417f11f1db843244ac321d91beaaf88ae30c83 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Aug 2020 09:11:52 +0200 Subject: [PATCH 3010/3421] Fix rendering issue on readthedocs --- docs/stoploss.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/stoploss.md b/docs/stoploss.md index 2518df846..fa888cd47 100644 --- a/docs/stoploss.md +++ b/docs/stoploss.md @@ -6,8 +6,8 @@ For example, value `-0.10` will cause immediate sell if the profit dips below -1 Most of the strategy files already include the optimal `stoploss` value. !!! Info -* All stoploss properties mentioned in this file can be set in the Strategy, or in the configuration. -* Configuration values will override the strategy values. + All stoploss properties mentioned in this file can be set in the Strategy, or in the configuration. + Configuration values will override the strategy values. ## Stop Loss On-Exchange/Freqtrade @@ -23,9 +23,9 @@ These modes can be configured with these values: ``` !!! Note -* Stoploss on exchange is only supported for Binance (stop-loss-limit), Kraken (stop-loss-market) and FTX (stop limit and stop-market) as of now. -* Do not set too low stoploss value if using stop loss on exchange! -* If set to low/tight then you have greater risk of missing fill on the order and stoploss will not work + Stoploss on exchange is only supported for Binance (stop-loss-limit), Kraken (stop-loss-market) and FTX (stop limit and stop-market) as of now. + Do not set too low stoploss value if using stop loss on exchange! + If set to low/tight then you have greater risk of missing fill on the order and stoploss will not work ### stoploss_on_exchange and stoploss_on_exchange_limit_ratio Enable or Disable stop loss on exchange. @@ -117,7 +117,7 @@ It is also possible to have a default stop loss, when you are in the red with yo For example, your default stop loss is -10%, but once you have more than 0% profit (example 0.1%) a different trailing stoploss will be used. !!! Note -* If you want the stoploss to only be changed when you break even of making a profit (what most users want) please refer to next section with [offset enabled](#Trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). + If you want the stoploss to only be changed when you break even of making a profit (what most users want) please refer to next section with [offset enabled](#Trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). Both values require `trailing_stop` to be set to true and `trailing_stop_positive` with a value. @@ -172,7 +172,7 @@ For example, simplified math: * now the asset drops in value to 101$, the stop loss will still be 100.94$ and would trigger at 100.94$ !!! Tip -* Make sure to have this value (`trailing_stop_positive_offset`) lower than minimal ROI, otherwise minimal ROI will apply first and sell the trade. + Make sure to have this value (`trailing_stop_positive_offset`) lower than minimal ROI, otherwise minimal ROI will apply first and sell the trade. ## Changing stoploss on open trades From 05ec56d906b025f15032f513a1b68b4c2fec44fb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Aug 2020 10:16:28 +0200 Subject: [PATCH 3011/3421] Dates should be changed to UTC to provide the correct timestamp --- freqtrade/persistence.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 28753ed48..9eebadd8d 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -2,7 +2,7 @@ This module contains the class to persist trades into SQLite """ import logging -from datetime import datetime +from datetime import datetime, timezone from decimal import Decimal from typing import Any, Dict, List, Optional @@ -274,7 +274,7 @@ class Trade(_DECL_BASE): 'open_date_hum': arrow.get(self.open_date).humanize(), 'open_date': self.open_date.strftime("%Y-%m-%d %H:%M:%S"), - 'open_timestamp': int(self.open_date.timestamp() * 1000), + 'open_timestamp': int(self.open_date.replace(tzinfo=timezone.utc).timestamp() * 1000), 'open_rate': self.open_rate, 'open_rate_requested': self.open_rate_requested, 'open_trade_price': round(self.open_trade_price, 8), @@ -283,7 +283,8 @@ class Trade(_DECL_BASE): if self.close_date else None), 'close_date': (self.close_date.strftime("%Y-%m-%d %H:%M:%S") if self.close_date else None), - 'close_timestamp': int(self.close_date.timestamp() * 1000) if self.close_date else None, + 'close_timestamp': int(self.close_date.replace( + tzinfo=timezone.utc).timestamp() * 1000) if self.close_date else None, 'close_rate': self.close_rate, 'close_rate_requested': self.close_rate_requested, 'close_profit': self.close_profit, @@ -298,8 +299,8 @@ class Trade(_DECL_BASE): 'stoploss_order_id': self.stoploss_order_id, 'stoploss_last_update': (self.stoploss_last_update.strftime("%Y-%m-%d %H:%M:%S") if self.stoploss_last_update else None), - 'stoploss_last_update_timestamp': (int(self.stoploss_last_update.timestamp() * 1000) - if self.stoploss_last_update else None), + 'stoploss_last_update_timestamp': int(self.stoploss_last_update.replace( + tzinfo=timezone.utc).timestamp() * 1000) if self.stoploss_last_update else None, 'initial_stop_loss': self.initial_stop_loss, # Deprecated - should not be used 'initial_stop_loss_abs': self.initial_stop_loss, 'initial_stop_loss_ratio': (self.initial_stop_loss_pct From 9ba9f73706361e8f5d8cd93b778645d636dead15 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Aug 2020 16:04:32 +0200 Subject: [PATCH 3012/3421] Improve logging, don't search for buy orders in refind_lost_order --- freqtrade/freqtradebot.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 6d2f9ddcc..9db60be43 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -306,6 +306,9 @@ class FreqtradeBot: for order in trade.orders: logger.info(f"Trying to refind {order}") fo = None + if order.ft_order_side == 'buy': + # Skip buy side - this is handled by reupdate_buy_order_fees + continue try: fo = self.exchange.fetch_order_or_stoploss_order(order.order_id, order.ft_pair, order.ft_order_side == 'stoploss') @@ -321,6 +324,7 @@ class FreqtradeBot: # No action for buy orders ... continue if fo: + logger.info(f"Found {order} for trade {trade}.jj") self.update_trade_state(trade, order.order_id, fo, stoploss_order=order.ft_order_side == 'stoploss') From ec949614374925d076febb3c140fc22aa4cedea9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Aug 2020 19:14:28 +0200 Subject: [PATCH 3013/3421] Reduce loglevel of "using cached rate" --- freqtrade/freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 2a95f58fc..2fcb9f3f9 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -275,7 +275,7 @@ class FreqtradeBot: rate = self._buy_rate_cache.get(pair) # Check if cache has been invalidated if rate: - logger.info(f"Using cached buy rate for {pair}.") + logger.debug(f"Using cached buy rate for {pair}.") return rate bid_strategy = self.config.get('bid_strategy', {}) @@ -693,7 +693,7 @@ class FreqtradeBot: rate = self._sell_rate_cache.get(pair) # Check if cache has been invalidated if rate: - logger.info(f"Using cached sell rate for {pair}.") + logger.debug(f"Using cached sell rate for {pair}.") return rate ask_strategy = self.config.get('ask_strategy', {}) From a55dd8444df6c07fae14d467efc8006ae869b341 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Aug 2020 19:31:35 +0200 Subject: [PATCH 3014/3421] Fix loglevel of using_cached-rate --- tests/test_freqtradebot.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index c6413cb5d..0d7968e26 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -953,6 +953,7 @@ def test_process_informative_pairs_added(default_conf, ticker, mocker) -> None: ]) def test_get_buy_rate(mocker, default_conf, caplog, side, ask, bid, last, last_ab, expected) -> None: + caplog.set_level(logging.DEBUG) default_conf['bid_strategy']['ask_last_balance'] = last_ab default_conf['bid_strategy']['price_side'] = side freqtrade = get_patched_freqtradebot(mocker, default_conf) @@ -3969,6 +3970,8 @@ def test_order_book_ask_strategy(default_conf, limit_buy_order, limit_sell_order ('ask', 0.006, 1.0, 0.006), ]) def test_get_sell_rate(default_conf, mocker, caplog, side, bid, ask, expected) -> None: + caplog.set_level(logging.DEBUG) + default_conf['ask_strategy']['price_side'] = side mocker.patch('freqtrade.exchange.Exchange.fetch_ticker', return_value={'ask': ask, 'bid': bid}) pair = "ETH/BTC" @@ -3990,6 +3993,7 @@ def test_get_sell_rate(default_conf, mocker, caplog, side, bid, ask, expected) - ('ask', 0.043949), # Value from order_book_l2 fiture - asks side ]) def test_get_sell_rate_orderbook(default_conf, mocker, caplog, side, expected, order_book_l2): + caplog.set_level(logging.DEBUG) # Test orderbook mode default_conf['ask_strategy']['price_side'] = side default_conf['ask_strategy']['use_order_book'] = True From 8940ba828f621963528578defe7c34f7cf48eb3c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Aug 2020 21:12:08 +0200 Subject: [PATCH 3015/3421] Update sandbox documentation --- docs/sandbox-testing.md | 150 ++++++++++++++-------------------------- 1 file changed, 51 insertions(+), 99 deletions(-) diff --git a/docs/sandbox-testing.md b/docs/sandbox-testing.md index 7f3457d15..bb075217f 100644 --- a/docs/sandbox-testing.md +++ b/docs/sandbox-testing.md @@ -1,104 +1,59 @@ # Sandbox API testing -Where an exchange provides a sandbox for risk-free integration, or end-to-end, testing CCXT provides access to these. +Some exchanges provide sandboxes or testbeds for risk-free testing, while running the bot against a real exchange. +With some configuration, freqtrade (in combination with ccxt) provides access to these. -This document is a *light overview of configuring Freqtrade and GDAX sandbox. -This can be useful to developers and trader alike as Freqtrade is quite customisable. +This document is a light overview of configuring Freqtrade to be used with sandboxes. +This can be useful to developers and trader alike. + +## Exchanges known to have a sandbox / testnet + +* [binance](https://testnet.binance.vision/) +* [coinbasepro](https://public.sandbox.pro.coinbase.com) +* [gemini](https://exchange.sandbox.gemini.com/) +* [huobipro](https://www.testnet.huobi.pro/) +* [kucoin](https://sandbox.kucoin.com/) +* [phemex](https://testnet.phemex.com/) + +!!! Note + We did not test correct functioning of all of the above testnets. Please report your experiences with each sandbox. + +--- + +## Configure a Sandbox account When testing your API connectivity, make sure to use the following URLs. -***Website** -https://public.sandbox.gdax.com -***REST API** -https://api-public.sandbox.gdax.com ---- +In general, you should follow these steps to enable an exchange's sandbox: -# Configure a Sandbox account on Gdax +- Figure out if an exchange has a sandbox (most likely by using google or the exchange's support documents) +- Create a sandbox account (often the sandbox-account requires separate registration) +- [Add some test assets to account](#add-test-funds) +- Create API keys -Aim of this document section +### Add test funds -- An sanbox account -- create 2FA (needed to create an API) -- Add test 50BTC to account -- Create : -- - API-KEY -- - API-Secret -- - API Password +Usually, sandbox exchanges allow depositing funds directly via web-interface. +You should make sure to have a realistic amount of funds available to your test-account, so results are representable of your real account funds. -## Acccount +!!! Warning + Test exchanges will NEVER require your real credit card or banking details! -This link will redirect to the sandbox main page to login / create account dialogues: -https://public.sandbox.pro.coinbase.com/orders/ +## Configure freqtrade to use a exchange's sandbox -After registration and Email confimation you wil be redirected into your sanbox account. It is easy to verify you're in sandbox by checking the URL bar. -> https://public.sandbox.pro.coinbase.com/ - -## Enable 2Fa (a prerequisite to creating sandbox API Keys) - -From within sand box site select your profile, top right. ->Or as a direct link: https://public.sandbox.pro.coinbase.com/profile - -From the menu panel to the left of the screen select - -> Security: "*View or Update*" - -In the new site select "enable authenticator" as typical google Authenticator. - -- open Google Authenticator on your phone -- scan barcode -- enter your generated 2fa - -## Enable API Access - -From within sandbox select profile>api>create api-keys ->or as a direct link: https://public.sandbox.pro.coinbase.com/profile/api - -Click on "create one" and ensure **view** and **trade** are "checked" and sumbit your 2FA - -- **Copy and paste the Passphase** into a notepade this will be needed later -- **Copy and paste the API Secret** popup into a notepad this will needed later -- **Copy and paste the API Key** into a notepad this will needed later - -## Add 50 BTC test funds - -To add funds, use the web interface deposit and withdraw buttons. - -To begin select 'Wallets' from the top menu. -> Or as a direct link: https://public.sandbox.pro.coinbase.com/wallets - -- Deposits (bottom left of screen) -- - Deposit Funds Bitcoin -- - - Coinbase BTC Wallet -- - - - Max (50 BTC) -- - - - - Deposit - -*This process may be repeated for other currencies, ETH as example* - ---- - -# Configure Freqtrade to use Gax Sandbox - -The aim of this document section - -- Enable sandbox URLs in Freqtrade -- Configure API -- - secret -- - key -- - passphrase - -## Sandbox URLs +### Sandbox URLs Freqtrade makes use of CCXT which in turn provides a list of URLs to Freqtrade. These include `['test']` and `['api']`. -- `[Test]` if available will point to an Exchanges sandbox. -- `[Api]` normally used, and resolves to live API target on the exchange +- `[Test]` if available will point to an Exchanges sandbox. +- `[Api]` normally used, and resolves to live API target on the exchange. To make use of sandbox / test add "sandbox": true, to your config.json ```json "exchange": { - "name": "gdax", + "name": "coinbasepro", "sandbox": true, "key": "5wowfxemogxeowo;heiohgmd", "secret": "/ZMH1P62rCVmwefewrgcewX8nh4gob+lywxfwfxwwfxwfNsH1ySgvWCUR/w==", @@ -106,36 +61,33 @@ To make use of sandbox / test add "sandbox": true, to your config.json "outdated_offset": 5 "pair_whitelist": [ "BTC/USD" + ] + }, + "datadir": "user_data/data/coinbasepro_sandbox" ``` -Also insert your +Also the following information: -- api-key (noted earlier) +- api-key (created for the sandbox webpage) - api-secret (noted earlier) - password (the passphrase - noted earlier) +!!! Tip "Different data directory" + We also recommend to set `datadir` to something identifying downloaded data as sandbox data, to avoid having sandbox data mixed with data from the real exchange. + This can be done by adding the `"datadir"` key to the configuration. + Now, whenever you use this configuration, your data directory will be set to this directory. + --- ## You should now be ready to test your sandbox -Ensure Freqtrade logs show the sandbox URL, and trades made are shown in sandbox. -** Typically the BTC/USD has the most activity in sandbox to test against. +Ensure Freqtrade logs show the sandbox URL, and trades made are shown in sandbox. Also make sure to select a pair which shows at least some decent value (which very often is BTC/). -## GDAX - Old Candles problem +## Common problems with sandbox exchanges -It is my experience that GDAX sandbox candles may be 20+- minutes out of date. This can cause trades to fail as one of Freqtrades safety checks. +Sandbox exchange instances often have very low volume, which can cause some problems which usually are not seen on a real exchange instance. -To disable this check, add / change the `"outdated_offset"` parameter in the exchange section of your configuration to adjust for this delay. -Example based on the above configuration: +### Old Candles problem -```json - "exchange": { - "name": "gdax", - "sandbox": true, - "key": "5wowfxemogxeowo;heiohgmd", - "secret": "/ZMH1P62rCVmwefewrgcewX8nh4gob+lywxfwfxwwfxwfNsH1ySgvWCUR/w==", - "password": "1bkjfkhfhfu6sr", - "outdated_offset": 30 - "pair_whitelist": [ - "BTC/USD" -``` +Since Sandboxes often have low volume, candles can be quite old and show no volume. +To disable the error "Outdated history for pair ...", best increase the parameter `"outdated_offset"` to a number that seems realistic for the sandbox you're using. From 8478e083dc6e3e0ec40721c71c580500ef2484fb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 23 Aug 2020 21:16:44 +0200 Subject: [PATCH 3016/3421] Improve wording of sandbox documentation --- docs/sandbox-testing.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/sandbox-testing.md b/docs/sandbox-testing.md index bb075217f..9556dd014 100644 --- a/docs/sandbox-testing.md +++ b/docs/sandbox-testing.md @@ -3,7 +3,7 @@ Some exchanges provide sandboxes or testbeds for risk-free testing, while running the bot against a real exchange. With some configuration, freqtrade (in combination with ccxt) provides access to these. -This document is a light overview of configuring Freqtrade to be used with sandboxes. +This document is an overview to configure Freqtrade to be used with sandboxes. This can be useful to developers and trader alike. ## Exchanges known to have a sandbox / testnet @@ -22,14 +22,14 @@ This can be useful to developers and trader alike. ## Configure a Sandbox account -When testing your API connectivity, make sure to use the following URLs. +When testing your API connectivity, make sure to use the appropriate sandbox / testnet URL. In general, you should follow these steps to enable an exchange's sandbox: -- Figure out if an exchange has a sandbox (most likely by using google or the exchange's support documents) -- Create a sandbox account (often the sandbox-account requires separate registration) -- [Add some test assets to account](#add-test-funds) -- Create API keys +* Figure out if an exchange has a sandbox (most likely by using google or the exchange's support documents) +* Create a sandbox account (often the sandbox-account requires separate registration) +* [Add some test assets to account](#add-test-funds) +* Create API keys ### Add test funds @@ -37,7 +37,7 @@ Usually, sandbox exchanges allow depositing funds directly via web-interface. You should make sure to have a realistic amount of funds available to your test-account, so results are representable of your real account funds. !!! Warning - Test exchanges will NEVER require your real credit card or banking details! + Test exchanges will **NEVER** require your real credit card or banking details! ## Configure freqtrade to use a exchange's sandbox @@ -46,8 +46,8 @@ You should make sure to have a realistic amount of funds available to your test- Freqtrade makes use of CCXT which in turn provides a list of URLs to Freqtrade. These include `['test']` and `['api']`. -- `[Test]` if available will point to an Exchanges sandbox. -- `[Api]` normally used, and resolves to live API target on the exchange. +* `[Test]` if available will point to an Exchanges sandbox. +* `[Api]` normally used, and resolves to live API target on the exchange. To make use of sandbox / test add "sandbox": true, to your config.json @@ -68,9 +68,9 @@ To make use of sandbox / test add "sandbox": true, to your config.json Also the following information: -- api-key (created for the sandbox webpage) -- api-secret (noted earlier) -- password (the passphrase - noted earlier) +* api-key (created for the sandbox webpage) +* api-secret (noted earlier) +* password (the passphrase - noted earlier) !!! Tip "Different data directory" We also recommend to set `datadir` to something identifying downloaded data as sandbox data, to avoid having sandbox data mixed with data from the real exchange. From 38809acde817c27262c119b7bab157b19ad9e34a Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Aug 2020 06:50:43 +0200 Subject: [PATCH 3017/3421] Don't rerun for known closed orders --- freqtrade/freqtradebot.py | 4 ++++ freqtrade/persistence/models.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index cb44165f4..498b3eea6 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -306,6 +306,10 @@ class FreqtradeBot: for order in trade.orders: logger.info(f"Trying to refind {order}") fo = None + if not order.ft_is_open: + # TODO: Does this need to be info level? + logger.info(f"Order {order} is no longer open.") + continue if order.ft_order_side == 'buy': # Skip buy side - this is handled by reupdate_buy_order_fees continue diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index c3a112828..e0b9624dd 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -132,7 +132,7 @@ class Order(_DECL_BASE): def __repr__(self): return (f'Order(id={self.id}, order_id={self.order_id}, trade_id={self.ft_trade_id}, ' - f'side={self.side}, status={self.status})') + f'side={self.side}, order_type={self.order_type}, status={self.status})') def update_from_ccxt_object(self, order): """ From 26f45c83234900dd8c2f6407138c2aa454d32f81 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Aug 2020 06:56:56 +0200 Subject: [PATCH 3018/3421] Improve logmessage for trailing stoploss --- freqtrade/freqtradebot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 498b3eea6..faa67f504 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -988,8 +988,8 @@ class FreqtradeBot: update_beat = self.strategy.order_types.get('stoploss_on_exchange_interval', 60) if (datetime.utcnow() - trade.stoploss_last_update).total_seconds() >= update_beat: # cancelling the current stoploss on exchange first - logger.info('Trailing stoploss: cancelling current stoploss on exchange (id:{%s}) ' - 'in order to add another one ...', order['id']) + logger.info(f"Cancelling current stoploss on exchange for pair {trade.pair} " + f"(orderid:{order['id']}) in order to add another one ...") try: co = self.exchange.cancel_stoploss_order(order['id'], trade.pair) trade.update_order(co) From 5799cc51f28bf06f9b7f208250b9169d454d3162 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2020 06:44:50 +0000 Subject: [PATCH 3019/3421] Bump mkdocs-material from 5.5.7 to 5.5.8 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.7 to 5.5.8. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.7...5.5.8) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index ab5aebb79..5226db750 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.5.7 +mkdocs-material==5.5.8 mdx_truly_sane_lists==1.2 From 4c48fe96edbc1e2528f980e1a0cc8c3e73b0c24d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2020 06:44:52 +0000 Subject: [PATCH 3020/3421] Bump pytest-mock from 3.2.0 to 3.3.0 Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.2.0 to 3.3.0. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.2.0...v3.3.0) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 3c10fe445..1f5b68a73 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,7 +11,7 @@ mypy==0.782 pytest==6.0.1 pytest-asyncio==0.14.0 pytest-cov==2.10.1 -pytest-mock==3.2.0 +pytest-mock==3.3.0 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents From 74c97369d9f6a57e577672ab6a6ba6803432b6f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2020 06:44:54 +0000 Subject: [PATCH 3021/3421] Bump arrow from 0.15.8 to 0.16.0 Bumps [arrow](https://github.com/arrow-py/arrow) from 0.15.8 to 0.16.0. - [Release notes](https://github.com/arrow-py/arrow/releases) - [Changelog](https://github.com/arrow-py/arrow/blob/master/CHANGELOG.rst) - [Commits](https://github.com/arrow-py/arrow/compare/0.15.8...0.16.0) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 712cf820d..7f81d6265 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -3,7 +3,7 @@ ccxt==1.33.18 SQLAlchemy==1.3.18 python-telegram-bot==12.8 -arrow==0.15.8 +arrow==0.16.0 cachetools==4.1.1 requests==2.24.0 urllib3==1.25.10 From 0e20b8f530f3b93cfb2eb0e70a969aaf52b5dbec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2020 06:45:12 +0000 Subject: [PATCH 3022/3421] Bump ccxt from 1.33.18 to 1.33.52 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.33.18 to 1.33.52. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.33.18...1.33.52) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 712cf820d..3cd764693 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.33.18 +ccxt==1.33.52 SQLAlchemy==1.3.18 python-telegram-bot==12.8 arrow==0.15.8 From f22fc8ef3ee05e39c00aec8d84914fa2f487aa5d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2020 06:45:20 +0000 Subject: [PATCH 3023/3421] Bump pandas from 1.1.0 to 1.1.1 Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.1.0 to 1.1.1. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v1.1.0...v1.1.1) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d65f90325..66f4cbc5f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ -r requirements-common.txt numpy==1.19.1 -pandas==1.1.0 +pandas==1.1.1 From 7ece7294b2a0d7431cea91a674b785bc3bd0e7c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2020 07:18:00 +0000 Subject: [PATCH 3024/3421] Bump sqlalchemy from 1.3.18 to 1.3.19 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.18 to 1.3.19. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 27a233604..b6e2d329f 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,7 +1,7 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs ccxt==1.33.52 -SQLAlchemy==1.3.18 +SQLAlchemy==1.3.19 python-telegram-bot==12.8 arrow==0.16.0 cachetools==4.1.1 From c272944834b73f6705ab92d6eef1e956e3666cb0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Aug 2020 11:09:09 +0200 Subject: [PATCH 3025/3421] Lock pair until a new candle arrives --- freqtrade/freqtradebot.py | 5 ++-- freqtrade/strategy/interface.py | 20 +++++++++------ tests/strategy/test_interface.py | 43 ++++++++++++++++++++------------ 3 files changed, 42 insertions(+), 26 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 2fcb9f3f9..eee60cc22 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -433,7 +433,9 @@ class FreqtradeBot: """ logger.debug(f"create_trade for pair {pair}") - if self.strategy.is_pair_locked(pair): + analyzed_df, _ = self.dataprovider.get_analyzed_dataframe(pair, self.strategy.timeframe) + if self.strategy.is_pair_locked( + pair, analyzed_df.iloc[-1]['date'] if len(analyzed_df) > 0 else None): logger.info(f"Pair {pair} is currently locked.") return False @@ -444,7 +446,6 @@ class FreqtradeBot: return False # running get_signal on historical data fetched - analyzed_df, _ = self.dataprovider.get_analyzed_dataframe(pair, self.strategy.timeframe) (buy, sell) = self.strategy.get_signal(pair, self.strategy.timeframe, analyzed_df) if buy and not sell: diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index efc4b8430..4a3a78c8f 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -2,6 +2,7 @@ IStrategy interface This module defines the interface to apply for strategies """ +from freqtrade.exchange.exchange import timeframe_to_next_date import logging import warnings from abc import ABC, abstractmethod @@ -297,13 +298,22 @@ class IStrategy(ABC): if pair in self._pair_locked_until: del self._pair_locked_until[pair] - def is_pair_locked(self, pair: str) -> bool: + def is_pair_locked(self, pair: str, candle_date: datetime = None) -> bool: """ Checks if a pair is currently locked """ if pair not in self._pair_locked_until: return False - return self._pair_locked_until[pair] >= datetime.now(timezone.utc) + if not candle_date: + return self._pair_locked_until[pair] >= datetime.now(timezone.utc) + else: + # Locking should happen until a new candle arrives + lock_time = timeframe_to_next_date(self.timeframe, candle_date) + # lock_time = candle_date + timedelta(minutes=timeframe_to_minutes(self.timeframe)) + res = self._pair_locked_until[pair] > lock_time + logger.debug(f"pair time = {lock_time} - pair_lock = {self._pair_locked_until[pair]} " + f"- res: {res}") + return res def analyze_ticker(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ @@ -438,12 +448,6 @@ class IStrategy(ABC): ) return False, False - # Check if dataframe has new candle - if (arrow.utcnow() - latest_date).total_seconds() // 60 >= timeframe_minutes: - logger.warning('Old candle for pair %s. Last candle is %s minutes old', - pair, int((arrow.utcnow() - latest_date).total_seconds() // 60)) - return False, False - (buy, sell) = latest[SignalType.BUY.value] == 1, latest[SignalType.SELL.value] == 1 logger.debug('trigger: %s (pair=%s) buy=%s sell=%s', latest['date'], pair, str(buy), str(sell)) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index bca7cc0d9..f1b5d0244 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -1,6 +1,7 @@ # pragma pylint: disable=missing-docstring, C0103 import logging +from datetime import datetime, timedelta, timezone from unittest.mock import MagicMock import arrow @@ -8,12 +9,12 @@ import pytest from pandas import DataFrame from freqtrade.configuration import TimeRange +from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import load_data from freqtrade.exceptions import StrategyError from freqtrade.persistence import Trade from freqtrade.resolvers import StrategyResolver from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper -from freqtrade.data.dataprovider import DataProvider from tests.conftest import log_has, log_has_re from .strats.default_strategy import DefaultStrategy @@ -87,21 +88,6 @@ def test_get_signal_exception_valueerror(default_conf, mocker, caplog, ohlcv_his assert log_has_re(r'Strategy caused the following exception: xyz.*', caplog) -def test_get_signal_old_candle(default_conf, mocker, caplog, ohlcv_history): - caplog.set_level(logging.INFO) - # default_conf defines a 5m interval. we check interval of previous candle - # this is necessary as the last candle is removed (partial candles) by default - oldtime = arrow.utcnow().shift(minutes=-10) - ticks = DataFrame([{'buy': 1, 'date': oldtime}]) - mocker.patch.object( - _STRATEGY, '_analyze_ticker_internal', - return_value=DataFrame(ticks) - ) - assert (False, False) == _STRATEGY.get_signal('xyz', default_conf['timeframe'], - ohlcv_history) - assert log_has('Old candle for pair xyz. Last candle is 10 minutes old', caplog) - - def test_get_signal_old_dataframe(default_conf, mocker, caplog, ohlcv_history): # default_conf defines a 5m interval. we check interval * 2 + 5m # this is necessary as the last candle is removed (partial candles) by default @@ -402,6 +388,31 @@ def test_is_pair_locked(default_conf): strategy.unlock_pair(pair) assert not strategy.is_pair_locked(pair) + pair = 'BTC/USDT' + # Lock until 14:30 + lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=timezone.utc) + strategy.lock_pair(pair, lock_time) + # Lock is in the past ... + assert not strategy.is_pair_locked(pair) + # latest candle is from 14:20, lock goes to 14:30 + assert strategy.is_pair_locked(pair, lock_time + timedelta(minutes=-10)) + assert strategy.is_pair_locked(pair, lock_time + timedelta(minutes=-50)) + + # latest candle is from 14:25 (lock should be lifted) + # Since this is the "new candle" available at 14:30 + assert not strategy.is_pair_locked(pair, lock_time + timedelta(minutes=-4)) + + # Should not be locked after time expired + assert not strategy.is_pair_locked(pair, lock_time + timedelta(minutes=10)) + + # Change timeframe to 15m + strategy.timeframe = '15m' + # Candle from 14:14 - lock goes until 14:30 + assert strategy.is_pair_locked(pair, lock_time + timedelta(minutes=-16)) + assert strategy.is_pair_locked(pair, lock_time + timedelta(minutes=-15, seconds=-2)) + # Candle from 14:15 - lock goes until 14:30 + assert not strategy.is_pair_locked(pair, lock_time + timedelta(minutes=-15)) + def test_is_informative_pairs_callback(default_conf): default_conf.update({'strategy': 'TestStrategyLegacy'}) From 502e21b2cb6da649c97a00b0a484a2ab1b1ba408 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Aug 2020 11:17:27 +0200 Subject: [PATCH 3026/3421] Add unfilled explanation for sandboxes --- docs/sandbox-testing.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/sandbox-testing.md b/docs/sandbox-testing.md index 9556dd014..9c14412de 100644 --- a/docs/sandbox-testing.md +++ b/docs/sandbox-testing.md @@ -91,3 +91,27 @@ Sandbox exchange instances often have very low volume, which can cause some prob Since Sandboxes often have low volume, candles can be quite old and show no volume. To disable the error "Outdated history for pair ...", best increase the parameter `"outdated_offset"` to a number that seems realistic for the sandbox you're using. + +### Unfilled orders + +Sandboxes often have very low volumes - which means that many trades can go unfilled, or can go unfilled for a very long time. + +To mitigate this, you can try to match the first order on the opposite orderbook side using the following configuration: + +``` jsonc + "order_types": { + "buy": "limit", + "sell": "limit" + // ... + }, + "bid_strategy": { + "price_side": "ask", + // ... + }, + "ask_strategy":{ + "price_side": "bid", + // ... + }, + ``` + + The configuration is similar to the suggested configuration for market orders - however by using limit-orders you can avoid moving the price too much, and you can set the worst price you might get. From 354a40624866645b191dde458c857588c17a211b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Aug 2020 11:44:32 +0200 Subject: [PATCH 3027/3421] Sort imports in interface.py --- freqtrade/strategy/interface.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 4a3a78c8f..9673b0c68 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -2,7 +2,6 @@ IStrategy interface This module defines the interface to apply for strategies """ -from freqtrade.exchange.exchange import timeframe_to_next_date import logging import warnings from abc import ABC, abstractmethod @@ -15,8 +14,9 @@ from pandas import DataFrame from freqtrade.constants import ListPairsWithTimeframes from freqtrade.data.dataprovider import DataProvider -from freqtrade.exceptions import StrategyError, OperationalException +from freqtrade.exceptions import OperationalException, StrategyError from freqtrade.exchange import timeframe_to_minutes +from freqtrade.exchange.exchange import timeframe_to_next_date from freqtrade.persistence import Trade from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from freqtrade.wallets import Wallets @@ -310,10 +310,7 @@ class IStrategy(ABC): # Locking should happen until a new candle arrives lock_time = timeframe_to_next_date(self.timeframe, candle_date) # lock_time = candle_date + timedelta(minutes=timeframe_to_minutes(self.timeframe)) - res = self._pair_locked_until[pair] > lock_time - logger.debug(f"pair time = {lock_time} - pair_lock = {self._pair_locked_until[pair]} " - f"- res: {res}") - return res + return self._pair_locked_until[pair] > lock_time def analyze_ticker(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ From fca11160e443470aea767bb4e7d43c021fd5d149 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Aug 2020 17:18:57 +0200 Subject: [PATCH 3028/3421] Improve docstring of is_pair_locked --- freqtrade/strategy/interface.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 9673b0c68..69d9333e2 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -301,6 +301,11 @@ class IStrategy(ABC): def is_pair_locked(self, pair: str, candle_date: datetime = None) -> bool: """ Checks if a pair is currently locked + The 2nd, optional parameter ensures that locks are applied until the new candle arrives, + and not stop at 14:00:00 - while the next candle arrives at 14:00:02 leaving a gap + of 2 seconds for a buy to happen on an old signal. + :param: pair: "Pair to check" + :param candle_date: Date of the last candle. Optional, defaults to current date """ if pair not in self._pair_locked_until: return False From 3bb69bc1bd5b78498a9c2d236a7f32a9779dc322 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Aug 2020 17:31:00 +0200 Subject: [PATCH 3029/3421] Add returns statement to docstring --- freqtrade/strategy/interface.py | 1 + 1 file changed, 1 insertion(+) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 69d9333e2..92d9f6c48 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -306,6 +306,7 @@ class IStrategy(ABC): of 2 seconds for a buy to happen on an old signal. :param: pair: "Pair to check" :param candle_date: Date of the last candle. Optional, defaults to current date + :returns: locking state of the pair in question. """ if pair not in self._pair_locked_until: return False From 9d4ecb625a004a45dc58c0f942394f0f4b80d277 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Aug 2020 07:16:29 +0200 Subject: [PATCH 3030/3421] Allow numpy numbers as comparisons, too --- freqtrade/vendor/qtpylib/indicators.py | 2 +- tests/test_indicators.py | 18 ++++++++++++++++++ tests/test_talib.py | 2 -- 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 tests/test_indicators.py diff --git a/freqtrade/vendor/qtpylib/indicators.py b/freqtrade/vendor/qtpylib/indicators.py index bef140396..e5a404862 100644 --- a/freqtrade/vendor/qtpylib/indicators.py +++ b/freqtrade/vendor/qtpylib/indicators.py @@ -222,7 +222,7 @@ def crossed(series1, series2, direction=None): if isinstance(series1, np.ndarray): series1 = pd.Series(series1) - if isinstance(series2, (float, int, np.ndarray)): + if isinstance(series2, (float, int, np.ndarray, np.integer, np.floating)): series2 = pd.Series(index=series1.index, data=series2) if direction is None or direction == "above": diff --git a/tests/test_indicators.py b/tests/test_indicators.py new file mode 100644 index 000000000..2f9bdc0f9 --- /dev/null +++ b/tests/test_indicators.py @@ -0,0 +1,18 @@ +import freqtrade.vendor.qtpylib.indicators as qtpylib +import numpy as np +import pandas as pd + + +def test_crossed_numpy_types(): + """ + This test is only present since this method currently diverges from the qtpylib implementation. + And we must ensure to not break this again once we update from the original source. + """ + series = pd.Series([56, 97, 19, 76, 65, 25, 87, 91, 79, 79]) + expected_result = pd.Series([False, True, False, True, False, False, True, False, False, False]) + + assert qtpylib.crossed_above(series, 60).equals(expected_result) + assert qtpylib.crossed_above(series, 60.0).equals(expected_result) + assert qtpylib.crossed_above(series, np.int32(60)).equals(expected_result) + assert qtpylib.crossed_above(series, np.int64(60)).equals(expected_result) + assert qtpylib.crossed_above(series, np.float64(60.0)).equals(expected_result) diff --git a/tests/test_talib.py b/tests/test_talib.py index 2c7f73eb1..4effc129b 100644 --- a/tests/test_talib.py +++ b/tests/test_talib.py @@ -1,5 +1,3 @@ - - import talib.abstract as ta import pandas as pd From 309ea1246aab34310aa9cf8aef32170bb5b3ccac Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Aug 2020 20:52:09 +0200 Subject: [PATCH 3031/3421] Update config to use single quotes --- freqtrade/commands/data_commands.py | 16 +-- freqtrade/commands/deploy_commands.py | 8 +- freqtrade/configuration/configuration.py | 40 +++---- freqtrade/data/btanalysis.py | 2 +- freqtrade/exchange/exchange.py | 4 +- freqtrade/plot/plotting.py | 22 ++-- scripts/rest_client.py | 10 +- tests/conftest.py | 2 +- tests/rpc/test_rpc_apiserver.py | 10 +- tests/test_arguments.py | 132 +++++++++++------------ tests/test_configuration.py | 2 +- tests/test_main.py | 14 +-- tests/test_plotting.py | 12 +-- 13 files changed, 137 insertions(+), 137 deletions(-) diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index aa0b826b5..da1eb0cf5 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -35,8 +35,8 @@ def start_download_data(args: Dict[str, Any]) -> None: "Downloading data requires a list of pairs. " "Please check the documentation on how to configure this.") - logger.info(f'About to download pairs: {config["pairs"]}, ' - f'intervals: {config["timeframes"]} to {config["datadir"]}') + logger.info(f"About to download pairs: {config['pairs']}, " + f"intervals: {config['timeframes']} to {config['datadir']}") pairs_not_available: List[str] = [] @@ -51,21 +51,21 @@ def start_download_data(args: Dict[str, Any]) -> None: if config.get('download_trades'): pairs_not_available = refresh_backtest_trades_data( - exchange, pairs=config["pairs"], datadir=config['datadir'], - timerange=timerange, erase=bool(config.get("erase")), + exchange, pairs=config['pairs'], datadir=config['datadir'], + timerange=timerange, erase=bool(config.get('erase')), data_format=config['dataformat_trades']) # Convert downloaded trade data to different timeframes convert_trades_to_ohlcv( - pairs=config["pairs"], timeframes=config["timeframes"], - datadir=config['datadir'], timerange=timerange, erase=bool(config.get("erase")), + pairs=config['pairs'], timeframes=config['timeframes'], + datadir=config['datadir'], timerange=timerange, erase=bool(config.get('erase')), data_format_ohlcv=config['dataformat_ohlcv'], data_format_trades=config['dataformat_trades'], ) else: pairs_not_available = refresh_backtest_ohlcv_data( - exchange, pairs=config["pairs"], timeframes=config["timeframes"], - datadir=config['datadir'], timerange=timerange, erase=bool(config.get("erase")), + exchange, pairs=config['pairs'], timeframes=config['timeframes'], + datadir=config['datadir'], timerange=timerange, erase=bool(config.get('erase')), data_format=config['dataformat_ohlcv']) except KeyboardInterrupt: diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index 86562fa7c..bfd68cb9b 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -75,7 +75,7 @@ def start_new_strategy(args: Dict[str, Any]) -> None: if args["strategy"] == "DefaultStrategy": raise OperationalException("DefaultStrategy is not allowed as name.") - new_path = config['user_data_dir'] / USERPATH_STRATEGIES / (args["strategy"] + ".py") + new_path = config['user_data_dir'] / USERPATH_STRATEGIES / (args['strategy'] + '.py') if new_path.exists(): raise OperationalException(f"`{new_path}` already exists. " @@ -125,11 +125,11 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - if "hyperopt" in args and args["hyperopt"]: - if args["hyperopt"] == "DefaultHyperopt": + if 'hyperopt' in args and args['hyperopt']: + if args['hyperopt'] == 'DefaultHyperopt': raise OperationalException("DefaultHyperopt is not allowed as name.") - new_path = config['user_data_dir'] / USERPATH_HYPEROPTS / (args["hyperopt"] + ".py") + new_path = config['user_data_dir'] / USERPATH_HYPEROPTS / (args['hyperopt'] + '.py') if new_path.exists(): raise OperationalException(f"`{new_path}` already exists. " diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 01e42144a..930917fae 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -54,7 +54,7 @@ class Configuration: :param files: List of file paths :return: configuration dictionary """ - c = Configuration({"config": files}, RunMode.OTHER) + c = Configuration({'config': files}, RunMode.OTHER) return c.get_config() def load_from_files(self, files: List[str]) -> Dict[str, Any]: @@ -123,10 +123,10 @@ class Configuration: the -v/--verbose, --logfile options """ # Log level - config.update({'verbosity': self.args.get("verbosity", 0)}) + config.update({'verbosity': self.args.get('verbosity', 0)}) - if 'logfile' in self.args and self.args["logfile"]: - config.update({'logfile': self.args["logfile"]}) + if 'logfile' in self.args and self.args['logfile']: + config.update({'logfile': self.args['logfile']}) setup_logging(config) @@ -149,22 +149,22 @@ class Configuration: def _process_common_options(self, config: Dict[str, Any]) -> None: # Set strategy if not specified in config and or if it's non default - if self.args.get("strategy") or not config.get('strategy'): - config.update({'strategy': self.args.get("strategy")}) + if self.args.get('strategy') or not config.get('strategy'): + config.update({'strategy': self.args.get('strategy')}) self._args_to_config(config, argname='strategy_path', logstring='Using additional Strategy lookup path: {}') - if ('db_url' in self.args and self.args["db_url"] and - self.args["db_url"] != constants.DEFAULT_DB_PROD_URL): - config.update({'db_url': self.args["db_url"]}) + if ('db_url' in self.args and self.args['db_url'] and + self.args['db_url'] != constants.DEFAULT_DB_PROD_URL): + config.update({'db_url': self.args['db_url']}) logger.info('Parameter --db-url detected ...') if config.get('forcebuy_enable', False): logger.warning('`forcebuy` RPC message enabled.') # Support for sd_notify - if 'sd_notify' in self.args and self.args["sd_notify"]: + if 'sd_notify' in self.args and self.args['sd_notify']: config['internals'].update({'sd_notify': True}) def _process_datadir_options(self, config: Dict[str, Any]) -> None: @@ -173,24 +173,24 @@ class Configuration: --user-data, --datadir """ # Check exchange parameter here - otherwise `datadir` might be wrong. - if "exchange" in self.args and self.args["exchange"]: - config['exchange']['name'] = self.args["exchange"] + if 'exchange' in self.args and self.args['exchange']: + config['exchange']['name'] = self.args['exchange'] logger.info(f"Using exchange {config['exchange']['name']}") if 'pair_whitelist' not in config['exchange']: config['exchange']['pair_whitelist'] = [] - if 'user_data_dir' in self.args and self.args["user_data_dir"]: - config.update({'user_data_dir': self.args["user_data_dir"]}) + if 'user_data_dir' in self.args and self.args['user_data_dir']: + config.update({'user_data_dir': self.args['user_data_dir']}) elif 'user_data_dir' not in config: # Default to cwd/user_data (legacy option ...) - config.update({'user_data_dir': str(Path.cwd() / "user_data")}) + config.update({'user_data_dir': str(Path.cwd() / 'user_data')}) # reset to user_data_dir so this contains the absolute path. config['user_data_dir'] = create_userdata_dir(config['user_data_dir'], create_dir=False) logger.info('Using user-data directory: %s ...', config['user_data_dir']) - config.update({'datadir': create_datadir(config, self.args.get("datadir", None))}) + config.update({'datadir': create_datadir(config, self.args.get('datadir', None))}) logger.info('Using data directory: %s ...', config.get('datadir')) if self.args.get('exportfilename'): @@ -219,8 +219,8 @@ class Configuration: config.update({'use_max_market_positions': False}) logger.info('Parameter --disable-max-market-positions detected ...') logger.info('max_open_trades set to unlimited ...') - elif 'max_open_trades' in self.args and self.args["max_open_trades"]: - config.update({'max_open_trades': self.args["max_open_trades"]}) + elif 'max_open_trades' in self.args and self.args['max_open_trades']: + config.update({'max_open_trades': self.args['max_open_trades']}) logger.info('Parameter --max-open-trades detected, ' 'overriding max_open_trades to: %s ...', config.get('max_open_trades')) elif config['runmode'] in NON_UTIL_MODES: @@ -447,12 +447,12 @@ class Configuration: config['pairs'].sort() return - if "config" in self.args and self.args["config"]: + if 'config' in self.args and self.args['config']: logger.info("Using pairlist from configuration.") config['pairs'] = config.get('exchange', {}).get('pair_whitelist') else: # Fall back to /dl_path/pairs.json - pairs_file = config['datadir'] / "pairs.json" + pairs_file = config['datadir'] / 'pairs.json' if pairs_file.exists(): with pairs_file.open('r') as f: config['pairs'] = json_load(f) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 972961b36..2d45a7222 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -208,7 +208,7 @@ def load_trades_from_db(db_url: str, strategy: Optional[str] = None) -> pd.DataF def load_trades(source: str, db_url: str, exportfilename: Path, no_trades: bool = False, strategy: Optional[str] = None) -> pd.DataFrame: """ - Based on configuration option "trade_source": + Based on configuration option 'trade_source': * loads data from DB (using `db_url`) * loads data from backtestfile (using `exportfilename`) :param source: "DB" or "file" - specify source to load from diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index c9c5a0027..d84fe7b82 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -85,8 +85,8 @@ class Exchange: # Deep merge ft_has with default ft_has options self._ft_has = deep_merge_dicts(self._ft_has, deepcopy(self._ft_has_default)) - if exchange_config.get("_ft_has_params"): - self._ft_has = deep_merge_dicts(exchange_config.get("_ft_has_params"), + if exchange_config.get('_ft_has_params'): + self._ft_has = deep_merge_dicts(exchange_config.get('_ft_has_params'), self._ft_has) logger.info("Overriding exchange._ft_has with config params, result: %s", self._ft_has) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index b420db770..270fe615b 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -38,15 +38,15 @@ def init_plotscript(config): """ if "pairs" in config: - pairs = config["pairs"] + pairs = config['pairs'] else: - pairs = config["exchange"]["pair_whitelist"] + pairs = config['exchange']['pair_whitelist'] # Set timerange to use - timerange = TimeRange.parse_timerange(config.get("timerange")) + timerange = TimeRange.parse_timerange(config.get('timerange')) data = load_data( - datadir=config.get("datadir"), + datadir=config.get('datadir'), pairs=pairs, timeframe=config.get('timeframe', '5m'), timerange=timerange, @@ -67,7 +67,7 @@ def init_plotscript(config): db_url=config.get('db_url'), exportfilename=filename, no_trades=no_trades, - strategy=config.get("strategy"), + strategy=config.get('strategy'), ) trades = trim_dataframe(trades, timerange, 'open_date') @@ -491,13 +491,13 @@ def load_and_plot_trades(config: Dict[str, Any]): pair=pair, data=df_analyzed, trades=trades_pair, - indicators1=config.get("indicators1", []), - indicators2=config.get("indicators2", []), + indicators1=config.get('indicators1', []), + indicators2=config.get('indicators2', []), plot_config=strategy.plot_config if hasattr(strategy, 'plot_config') else {} ) store_plot_file(fig, filename=generate_plot_filename(pair, config['timeframe']), - directory=config['user_data_dir'] / "plot") + directory=config['user_data_dir'] / 'plot') logger.info('End of plotting process. %s plots generated', pair_counter) @@ -514,7 +514,7 @@ def plot_profit(config: Dict[str, Any]) -> None: # Filter trades to relevant pairs # Remove open pairs - we don't know the profit yet so can't calculate profit for these. # Also, If only one open pair is left, then the profit-generation would fail. - trades = trades[(trades['pair'].isin(plot_elements["pairs"])) + trades = trades[(trades['pair'].isin(plot_elements['pairs'])) & (~trades['close_date'].isnull()) ] if len(trades) == 0: @@ -523,7 +523,7 @@ def plot_profit(config: Dict[str, Any]) -> None: # Create an average close price of all the pairs that were involved. # this could be useful to gauge the overall market trend - fig = generate_profit_graph(plot_elements["pairs"], plot_elements["ohlcv"], + fig = generate_profit_graph(plot_elements['pairs'], plot_elements['ohlcv'], trades, config.get('timeframe', '5m')) store_plot_file(fig, filename='freqtrade-profit-plot.html', - directory=config['user_data_dir'] / "plot", auto_open=True) + directory=config['user_data_dir'] / 'plot', auto_open=True) diff --git a/scripts/rest_client.py b/scripts/rest_client.py index 51ea596f6..598a82040 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -276,11 +276,11 @@ def main(args): print_commands() sys.exit() - config = load_config(args["config"]) - url = config.get("api_server", {}).get("server_url", "127.0.0.1") - port = config.get("api_server", {}).get("listen_port", "8080") - username = config.get("api_server", {}).get("username") - password = config.get("api_server", {}).get("password") + config = load_config(args['config']) + url = config.get('api_server', {}).get('server_url', '127.0.0.1') + port = config.get('api_server', {}).get('listen_port', '8080') + username = config.get('api_server', {}).get('username') + password = config.get('api_server', {}).get('password') server_url = f"http://{url}:{port}" client = FtRestClient(server_url, username, password) diff --git a/tests/conftest.py b/tests/conftest.py index a40bfbc6c..dbed08ec5 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -78,7 +78,7 @@ def patch_exchange(mocker, api_mock=None, id='bittrex', mock_markets=True) -> No def get_patched_exchange(mocker, config, api_mock=None, id='bittrex', mock_markets=True) -> Exchange: patch_exchange(mocker, api_mock, id, mock_markets) - config["exchange"]["name"] = id + config['exchange']['name'] = id try: exchange = ExchangeResolver.load_exchange(id, config) except ImportError: diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index a3a2c9a1f..2513f751b 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -87,20 +87,20 @@ def test_api_unauthorized(botclient): assert rc.json == {'error': 'Unauthorized'} # Change only username - ftbot.config['api_server']['username'] = "Ftrader" + ftbot.config['api_server']['username'] = 'Ftrader' rc = client_get(client, f"{BASE_URI}/version") assert_response(rc, 401) assert rc.json == {'error': 'Unauthorized'} # Change only password ftbot.config['api_server']['username'] = _TEST_USER - ftbot.config['api_server']['password'] = "WrongPassword" + ftbot.config['api_server']['password'] = 'WrongPassword' rc = client_get(client, f"{BASE_URI}/version") assert_response(rc, 401) assert rc.json == {'error': 'Unauthorized'} - ftbot.config['api_server']['username'] = "Ftrader" - ftbot.config['api_server']['password'] = "WrongPassword" + ftbot.config['api_server']['username'] = 'Ftrader' + ftbot.config['api_server']['password'] = 'WrongPassword' rc = client_get(client, f"{BASE_URI}/version") assert_response(rc, 401) @@ -677,7 +677,7 @@ def test_api_forcebuy(botclient, mocker, fee): assert rc.json == {"error": "Error querying _forcebuy: Forcebuy not enabled."} # enable forcebuy - ftbot.config["forcebuy_enable"] = True + ftbot.config['forcebuy_enable'] = True fbuy_mock = MagicMock(return_value=None) mocker.patch("freqtrade.rpc.RPC._rpc_forcebuy", fbuy_mock) diff --git a/tests/test_arguments.py b/tests/test_arguments.py index 457683598..2af36277b 100644 --- a/tests/test_arguments.py +++ b/tests/test_arguments.py @@ -19,64 +19,64 @@ def test_parse_args_none() -> None: def test_parse_args_defaults(mocker) -> None: - mocker.patch.object(Path, "is_file", MagicMock(side_effect=[False, True])) + mocker.patch.object(Path, 'is_file', MagicMock(side_effect=[False, True])) args = Arguments(['trade']).get_parsed_arg() - assert args["config"] == ['config.json'] - assert args["strategy_path"] is None - assert args["datadir"] is None - assert args["verbosity"] == 0 + assert args['config'] == ['config.json'] + assert args['strategy_path'] is None + assert args['datadir'] is None + assert args['verbosity'] == 0 def test_parse_args_default_userdatadir(mocker) -> None: - mocker.patch.object(Path, "is_file", MagicMock(return_value=True)) + mocker.patch.object(Path, 'is_file', MagicMock(return_value=True)) args = Arguments(['trade']).get_parsed_arg() # configuration defaults to user_data if that is available. - assert args["config"] == [str(Path('user_data/config.json'))] - assert args["strategy_path"] is None - assert args["datadir"] is None - assert args["verbosity"] == 0 + assert args['config'] == [str(Path('user_data/config.json'))] + assert args['strategy_path'] is None + assert args['datadir'] is None + assert args['verbosity'] == 0 def test_parse_args_userdatadir(mocker) -> None: - mocker.patch.object(Path, "is_file", MagicMock(return_value=True)) + mocker.patch.object(Path, 'is_file', MagicMock(return_value=True)) args = Arguments(['trade', '--user-data-dir', 'user_data']).get_parsed_arg() # configuration defaults to user_data if that is available. - assert args["config"] == [str(Path('user_data/config.json'))] - assert args["strategy_path"] is None - assert args["datadir"] is None - assert args["verbosity"] == 0 + assert args['config'] == [str(Path('user_data/config.json'))] + assert args['strategy_path'] is None + assert args['datadir'] is None + assert args['verbosity'] == 0 def test_parse_args_config() -> None: args = Arguments(['trade', '-c', '/dev/null']).get_parsed_arg() - assert args["config"] == ['/dev/null'] + assert args['config'] == ['/dev/null'] args = Arguments(['trade', '--config', '/dev/null']).get_parsed_arg() - assert args["config"] == ['/dev/null'] + assert args['config'] == ['/dev/null'] args = Arguments(['trade', '--config', '/dev/null', '--config', '/dev/zero'],).get_parsed_arg() - assert args["config"] == ['/dev/null', '/dev/zero'] + assert args['config'] == ['/dev/null', '/dev/zero'] def test_parse_args_db_url() -> None: args = Arguments(['trade', '--db-url', 'sqlite:///test.sqlite']).get_parsed_arg() - assert args["db_url"] == 'sqlite:///test.sqlite' + assert args['db_url'] == 'sqlite:///test.sqlite' def test_parse_args_verbose() -> None: args = Arguments(['trade', '-v']).get_parsed_arg() - assert args["verbosity"] == 1 + assert args['verbosity'] == 1 args = Arguments(['trade', '--verbose']).get_parsed_arg() - assert args["verbosity"] == 1 + assert args['verbosity'] == 1 def test_common_scripts_options() -> None: args = Arguments(['download-data', '-p', 'ETH/BTC', 'XRP/BTC']).get_parsed_arg() - assert args["pairs"] == ['ETH/BTC', 'XRP/BTC'] - assert "func" in args + assert args['pairs'] == ['ETH/BTC', 'XRP/BTC'] + assert 'func' in args def test_parse_args_version() -> None: @@ -91,7 +91,7 @@ def test_parse_args_invalid() -> None: def test_parse_args_strategy() -> None: args = Arguments(['trade', '--strategy', 'SomeStrategy']).get_parsed_arg() - assert args["strategy"] == 'SomeStrategy' + assert args['strategy'] == 'SomeStrategy' def test_parse_args_strategy_invalid() -> None: @@ -101,7 +101,7 @@ def test_parse_args_strategy_invalid() -> None: def test_parse_args_strategy_path() -> None: args = Arguments(['trade', '--strategy-path', '/some/path']).get_parsed_arg() - assert args["strategy_path"] == '/some/path' + assert args['strategy_path'] == '/some/path' def test_parse_args_strategy_path_invalid() -> None: @@ -127,13 +127,13 @@ def test_parse_args_backtesting_custom() -> None: 'SampleStrategy' ] call_args = Arguments(args).get_parsed_arg() - assert call_args["config"] == ['test_conf.json'] - assert call_args["verbosity"] == 0 - assert call_args["command"] == 'backtesting' - assert call_args["func"] is not None - assert call_args["timeframe"] == '1m' - assert type(call_args["strategy_list"]) is list - assert len(call_args["strategy_list"]) == 2 + assert call_args['config'] == ['test_conf.json'] + assert call_args['verbosity'] == 0 + assert call_args['command'] == 'backtesting' + assert call_args['func'] is not None + assert call_args['timeframe'] == '1m' + assert type(call_args['strategy_list']) is list + assert len(call_args['strategy_list']) == 2 def test_parse_args_hyperopt_custom() -> None: @@ -144,13 +144,13 @@ def test_parse_args_hyperopt_custom() -> None: '--spaces', 'buy' ] call_args = Arguments(args).get_parsed_arg() - assert call_args["config"] == ['test_conf.json'] - assert call_args["epochs"] == 20 - assert call_args["verbosity"] == 0 - assert call_args["command"] == 'hyperopt' - assert call_args["spaces"] == ['buy'] - assert call_args["func"] is not None - assert callable(call_args["func"]) + assert call_args['config'] == ['test_conf.json'] + assert call_args['epochs'] == 20 + assert call_args['verbosity'] == 0 + assert call_args['command'] == 'hyperopt' + assert call_args['spaces'] == ['buy'] + assert call_args['func'] is not None + assert callable(call_args['func']) def test_download_data_options() -> None: @@ -163,10 +163,10 @@ def test_download_data_options() -> None: ] pargs = Arguments(args).get_parsed_arg() - assert pargs["pairs_file"] == 'file_with_pairs' - assert pargs["datadir"] == 'datadir/directory' - assert pargs["days"] == 30 - assert pargs["exchange"] == 'binance' + assert pargs['pairs_file'] == 'file_with_pairs' + assert pargs['datadir'] == 'datadir/directory' + assert pargs['days'] == 30 + assert pargs['exchange'] == 'binance' def test_plot_dataframe_options() -> None: @@ -180,10 +180,10 @@ def test_plot_dataframe_options() -> None: ] pargs = Arguments(args).get_parsed_arg() - assert pargs["indicators1"] == ["sma10", "sma100"] - assert pargs["indicators2"] == ["macd", "fastd", "fastk"] - assert pargs["plot_limit"] == 30 - assert pargs["pairs"] == ["UNITTEST/BTC"] + assert pargs['indicators1'] == ['sma10', 'sma100'] + assert pargs['indicators2'] == ['macd', 'fastd', 'fastk'] + assert pargs['plot_limit'] == 30 + assert pargs['pairs'] == ['UNITTEST/BTC'] def test_plot_profit_options() -> None: @@ -191,66 +191,66 @@ def test_plot_profit_options() -> None: 'plot-profit', '-p', 'UNITTEST/BTC', '--trade-source', 'DB', - "--db-url", "sqlite:///whatever.sqlite", + '--db-url', 'sqlite:///whatever.sqlite', ] pargs = Arguments(args).get_parsed_arg() - assert pargs["trade_source"] == "DB" - assert pargs["pairs"] == ["UNITTEST/BTC"] - assert pargs["db_url"] == "sqlite:///whatever.sqlite" + assert pargs['trade_source'] == 'DB' + assert pargs['pairs'] == ['UNITTEST/BTC'] + assert pargs['db_url'] == 'sqlite:///whatever.sqlite' def test_config_notallowed(mocker) -> None: - mocker.patch.object(Path, "is_file", MagicMock(return_value=False)) + mocker.patch.object(Path, 'is_file', MagicMock(return_value=False)) args = [ 'create-userdir', ] pargs = Arguments(args).get_parsed_arg() - assert "config" not in pargs + assert 'config' not in pargs # When file exists: - mocker.patch.object(Path, "is_file", MagicMock(return_value=True)) + mocker.patch.object(Path, 'is_file', MagicMock(return_value=True)) args = [ 'create-userdir', ] pargs = Arguments(args).get_parsed_arg() # config is not added even if it exists, since create-userdir is in the notallowed list - assert "config" not in pargs + assert 'config' not in pargs def test_config_notrequired(mocker) -> None: - mocker.patch.object(Path, "is_file", MagicMock(return_value=False)) + mocker.patch.object(Path, 'is_file', MagicMock(return_value=False)) args = [ 'download-data', ] pargs = Arguments(args).get_parsed_arg() - assert pargs["config"] is None + assert pargs['config'] is None # When file exists: - mocker.patch.object(Path, "is_file", MagicMock(side_effect=[False, True])) + mocker.patch.object(Path, 'is_file', MagicMock(side_effect=[False, True])) args = [ 'download-data', ] pargs = Arguments(args).get_parsed_arg() # config is added if it exists - assert pargs["config"] == ['config.json'] + assert pargs['config'] == ['config.json'] def test_check_int_positive() -> None: - assert check_int_positive("3") == 3 - assert check_int_positive("1") == 1 - assert check_int_positive("100") == 100 + assert check_int_positive('3') == 3 + assert check_int_positive('1') == 1 + assert check_int_positive('100') == 100 with pytest.raises(argparse.ArgumentTypeError): - check_int_positive("-2") + check_int_positive('-2') with pytest.raises(argparse.ArgumentTypeError): - check_int_positive("0") + check_int_positive('0') with pytest.raises(argparse.ArgumentTypeError): - check_int_positive("3.5") + check_int_positive('3.5') with pytest.raises(argparse.ArgumentTypeError): - check_int_positive("DeadBeef") + check_int_positive('DeadBeef') diff --git a/tests/test_configuration.py b/tests/test_configuration.py index ca5d6eadc..8549f00c9 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -1005,7 +1005,7 @@ def test_pairlist_resolving_fallback(mocker): args = Arguments(arglist).get_parsed_arg() # Fix flaky tests if config.json exists - args["config"] = None + args['config'] = None configuration = Configuration(args, RunMode.OTHER) config = configuration.get_config() diff --git a/tests/test_main.py b/tests/test_main.py index d5309ae3f..dd0c877e8 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -44,19 +44,19 @@ def test_parse_args_backtesting(mocker) -> None: def test_main_start_hyperopt(mocker) -> None: - mocker.patch.object(Path, "is_file", MagicMock(side_effect=[False, True])) + mocker.patch.object(Path, 'is_file', MagicMock(side_effect=[False, True])) hyperopt_mock = mocker.patch('freqtrade.commands.start_hyperopt', MagicMock()) - hyperopt_mock.__name__ = PropertyMock("start_hyperopt") + hyperopt_mock.__name__ = PropertyMock('start_hyperopt') # it's sys.exit(0) at the end of hyperopt with pytest.raises(SystemExit): main(['hyperopt']) assert hyperopt_mock.call_count == 1 call_args = hyperopt_mock.call_args[0][0] - assert call_args["config"] == ['config.json'] - assert call_args["verbosity"] == 0 - assert call_args["command"] == 'hyperopt' - assert call_args["func"] is not None - assert callable(call_args["func"]) + assert call_args['config'] == ['config.json'] + assert call_args['verbosity'] == 0 + assert call_args['command'] == 'hyperopt' + assert call_args['func'] is not None + assert callable(call_args['func']) def test_main_fatal_exception(mocker, default_conf, caplog) -> None: diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 28c486877..bcababbf1 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -362,22 +362,22 @@ def test_start_plot_profit(mocker): def test_start_plot_profit_error(mocker): args = [ - "plot-profit", - "--pairs", "ETH/BTC" + 'plot-profit', + '--pairs', 'ETH/BTC' ] argsp = get_args(args) # Make sure we use no config. Details: #2241 # not resetting config causes random failures if config.json exists - argsp["config"] = [] + argsp['config'] = [] with pytest.raises(OperationalException): start_plot_profit(argsp) def test_plot_profit(default_conf, mocker, testdatadir, caplog): default_conf['trade_source'] = 'file' - default_conf["datadir"] = testdatadir - default_conf['exportfilename'] = testdatadir / "backtest-result_test_nofile.json" - default_conf['pairs'] = ["ETH/BTC", "LTC/BTC"] + default_conf['datadir'] = testdatadir + default_conf['exportfilename'] = testdatadir / 'backtest-result_test_nofile.json' + default_conf['pairs'] = ['ETH/BTC', 'LTC/BTC'] profit_mock = MagicMock() store_mock = MagicMock() From d161b94d7241e9f5c5bc873a8e8f1282aba1738e Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Aug 2020 21:22:36 +0200 Subject: [PATCH 3032/3421] Allow simulating cancelled orders in dry-run --- freqtrade/exchange/exchange.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index d84fe7b82..b89da14eb 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -973,7 +973,12 @@ class Exchange: @retrier def cancel_order(self, order_id: str, pair: str) -> Dict: if self._config['dry_run']: - return {} + order = self._dry_run_open_orders.get(order_id) + if order: + order.update({'status': 'canceled', 'filled': 0.0, 'remaining': order['amount']}) + return order + else: + return {} try: return self._api.cancel_order(order_id, pair) From add78414e4c9aa1d1b3a9847d3ae0a20fb332e1d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Aug 2020 21:24:47 +0200 Subject: [PATCH 3033/3421] Don't overwrite cancel_reason --- freqtrade/constants.py | 1 + freqtrade/freqtradebot.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 1f8cebd0d..f44be220e 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -341,6 +341,7 @@ CANCEL_REASON = { "PARTIALLY_FILLED": "partially filled - keeping order open", "ALL_CANCELLED": "cancelled (all unfilled and partially filled open orders cancelled)", "CANCELLED_ON_EXCHANGE": "cancelled on exchange", + "FORCE_SELL": "forcesold", } # List of pairs with their timeframes diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index eee60cc22..917bb356f 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -974,7 +974,8 @@ class FreqtradeBot: # Cancelled orders may have the status of 'canceled' or 'closed' if order['status'] not in ('canceled', 'closed'): - reason = constants.CANCEL_REASON['TIMEOUT'] + # TODO: this reason will overwrite the input in all cases + # reason = constants.CANCEL_REASON['TIMEOUT'] corder = self.exchange.cancel_order_with_result(trade.open_order_id, trade.pair, trade.amount) # Avoid race condition where the order could not be cancelled coz its already filled. From 85e71275d3c555b04a7ab8bb15269c0a6711830f Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Aug 2020 21:27:09 +0200 Subject: [PATCH 3034/3421] Simplify forcesell method by using freqtrade methods --- freqtrade/rpc/rpc.py | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 12e79d35b..25a85ac02 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -11,6 +11,7 @@ from typing import Any, Dict, List, Optional, Tuple, Union import arrow from numpy import NAN, mean +from freqtrade.constants import CANCEL_REASON from freqtrade.exceptions import (ExchangeError, PricingError) from freqtrade.exchange import timeframe_to_minutes, timeframe_to_msecs @@ -453,29 +454,22 @@ class RPC: """ def _exec_forcesell(trade: Trade) -> None: # Check if there is there is an open order + fully_canceled = False if trade.open_order_id: order = self._freqtrade.exchange.fetch_order(trade.open_order_id, trade.pair) - # Cancel open LIMIT_BUY orders and close trade - if order and order['status'] == 'open' \ - and order['type'] == 'limit' \ - and order['side'] == 'buy': - self._freqtrade.exchange.cancel_order(trade.open_order_id, trade.pair) - trade.close(order.get('price') or trade.open_rate) - # Do the best effort, if we don't know 'filled' amount, don't try selling - if order['filled'] is None: - return - trade.amount = order['filled'] + if order['side'] == 'buy': + fully_canceled = self._freqtrade.handle_cancel_buy( + trade, order, CANCEL_REASON['FORCE_SELL']) - # Ignore trades with an attached LIMIT_SELL order - if order and order['status'] == 'open' \ - and order['type'] == 'limit' \ - and order['side'] == 'sell': - return + if order['side'] == 'sell': + # Cancel order - so it is placed anew with a fresh price. + self._freqtrade.handle_cancel_sell(trade, order, CANCEL_REASON['FORCE_SELL']) - # Get current rate and execute sell - current_rate = self._freqtrade.get_sell_rate(trade.pair, False) - self._freqtrade.execute_sell(trade, current_rate, SellType.FORCE_SELL) + if not fully_canceled: + # Get current rate and execute sell + current_rate = self._freqtrade.get_sell_rate(trade.pair, False) + self._freqtrade.execute_sell(trade, current_rate, SellType.FORCE_SELL) # ---- EOF def _exec_forcesell ---- if self._freqtrade.state != State.RUNNING: From 5e75caa91778908abd14bbd8bcfc4c59e2d0c2ec Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Aug 2020 21:37:52 +0200 Subject: [PATCH 3035/3421] Adjust tests to new forcesell --- tests/rpc/test_rpc.py | 33 +++++++++++++++++++++++++++------ tests/rpc/test_rpc_telegram.py | 10 ++++++---- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index c370dce8f..102ed12fe 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -669,7 +669,8 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: return_value={ 'status': 'closed', 'type': 'limit', - 'side': 'buy' + 'side': 'buy', + 'filled': 0.0, } ), get_fee=fee, @@ -695,6 +696,7 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: msg = rpc._rpc_forcesell('all') assert msg == {'result': 'Created sell orders for all open trades.'} + freqtradebot.enter_positions() msg = rpc._rpc_forcesell('1') assert msg == {'result': 'Created sell order for trade 1.'} @@ -707,17 +709,24 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: freqtradebot.state = State.RUNNING assert cancel_order_mock.call_count == 0 + freqtradebot.enter_positions() # make an limit-buy open trade trade = Trade.query.filter(Trade.id == '1').first() filled_amount = trade.amount / 2 + # Fetch order - it's open first, and closed after cancel_order is called. mocker.patch( 'freqtrade.exchange.Exchange.fetch_order', - return_value={ + side_effect=[{ 'status': 'open', 'type': 'limit', 'side': 'buy', 'filled': filled_amount - } + }, { + 'status': 'closed', + 'type': 'limit', + 'side': 'buy', + 'filled': filled_amount + }] ) # check that the trade is called, which is done by ensuring exchange.cancel_order is called # and trade amount is updated @@ -725,6 +734,16 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: assert cancel_order_mock.call_count == 1 assert trade.amount == filled_amount + mocker.patch( + 'freqtrade.exchange.Exchange.fetch_order', + return_value={ + 'status': 'open', + 'type': 'limit', + 'side': 'buy', + 'filled': filled_amount + }) + + freqtradebot.config['max_open_trades'] = 3 freqtradebot.enter_positions() trade = Trade.query.filter(Trade.id == '2').first() amount = trade.amount @@ -744,20 +763,22 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: assert cancel_order_mock.call_count == 2 assert trade.amount == amount - freqtradebot.enter_positions() # make an limit-sell open trade mocker.patch( 'freqtrade.exchange.Exchange.fetch_order', return_value={ 'status': 'open', 'type': 'limit', - 'side': 'sell' + 'side': 'sell', + 'amount': amount, + 'remaining': amount, + 'filled': 0.0 } ) msg = rpc._rpc_forcesell('3') assert msg == {'result': 'Created sell order for trade 3.'} # status quo, no exchange calls - assert cancel_order_mock.call_count == 2 + assert cancel_order_mock.call_count == 3 def test_performance_handle(default_conf, ticker, limit_buy_order, fee, diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 10738ada3..b11409767 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -724,7 +724,7 @@ def test_telegram_forcesell_handle(default_conf, update, ticker, fee, context.args = ["1"] telegram._forcesell(update=update, context=context) - assert rpc_mock.call_count == 2 + assert rpc_mock.call_count == 4 last_msg = rpc_mock.call_args_list[-1][0][0] assert { 'type': RPCMessageType.SELL_NOTIFICATION, @@ -783,7 +783,7 @@ def test_telegram_forcesell_down_handle(default_conf, update, ticker, fee, context.args = ["1"] telegram._forcesell(update=update, context=context) - assert rpc_mock.call_count == 2 + assert rpc_mock.call_count == 4 last_msg = rpc_mock.call_args_list[-1][0][0] assert { @@ -833,8 +833,10 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None context.args = ["all"] telegram._forcesell(update=update, context=context) - assert rpc_mock.call_count == 4 - msg = rpc_mock.call_args_list[0][0][0] + # Called for all trades 3 times + # cancel notification (wtf??), sell notification, buy_cancel + assert rpc_mock.call_count == 12 + msg = rpc_mock.call_args_list[2][0][0] assert { 'type': RPCMessageType.SELL_NOTIFICATION, 'trade_id': 1, From 9c0a3fffd733dc22f0498ea9cb72758d61ff0738 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Aug 2020 22:17:43 +0200 Subject: [PATCH 3036/3421] Avoid double notifications in case of partially filled buy orders --- freqtrade/constants.py | 4 +++- freqtrade/freqtradebot.py | 15 +++++++-------- freqtrade/rpc/telegram.py | 2 +- tests/rpc/test_rpc_telegram.py | 6 ++++-- tests/test_freqtradebot.py | 6 +++--- 5 files changed, 18 insertions(+), 15 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index f44be220e..b92ab3eeb 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -338,7 +338,9 @@ SCHEMA_MINIMAL_REQUIRED = [ CANCEL_REASON = { "TIMEOUT": "cancelled due to timeout", - "PARTIALLY_FILLED": "partially filled - keeping order open", + "PARTIALLY_FILLED_KEEP_OPEN": "partially filled - keeping order open", + "PARTIALLY_FILLED": "partially filled", + "FULLY_CANCELLED": "fully cancelled", "ALL_CANCELLED": "cancelled (all unfilled and partially filled open orders cancelled)", "CANCELLED_ON_EXCHANGE": "cancelled on exchange", "FORCE_SELL": "forcesold", diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 917bb356f..d53902633 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -618,7 +618,7 @@ class FreqtradeBot: # Send the message self.rpc.send_msg(msg) - def _notify_buy_cancel(self, trade: Trade, order_type: str) -> None: + def _notify_buy_cancel(self, trade: Trade, order_type: str, reason: str) -> None: """ Sends rpc notification when a buy cancel occured. """ @@ -637,6 +637,7 @@ class FreqtradeBot: 'amount': trade.amount, 'open_date': trade.open_date, 'current_rate': current_rate, + 'reason': reason, } # Send the message @@ -993,13 +994,13 @@ class FreqtradeBot: # Using filled to determine the filled amount filled_amount = safe_value_fallback2(corder, order, 'filled', 'filled') - if isclose(filled_amount, 0.0, abs_tol=constants.MATH_CLOSE_PREC): logger.info('Buy order fully cancelled. Removing %s from database.', trade) # if trade is not partially completed, just delete the trade Trade.session.delete(trade) Trade.session.flush() was_trade_fully_canceled = True + reason += f", {constants.CANCEL_REASON['FULLY_CANCELLED']}" else: # if trade is partially complete, edit the stake details for the trade # and close the order @@ -1012,13 +1013,11 @@ class FreqtradeBot: trade.open_order_id = None logger.info('Partial buy order timeout for %s.', trade) - self.rpc.send_msg({ - 'type': RPCMessageType.STATUS_NOTIFICATION, - 'status': f'Remaining buy order for {trade.pair} cancelled due to timeout' - }) + reason += f", {constants.CANCEL_REASON['PARTIALLY_FILLED']}" self.wallets.update() - self._notify_buy_cancel(trade, order_type=self.strategy.order_types['buy']) + self._notify_buy_cancel(trade, order_type=self.strategy.order_types['buy'], + reason=reason) return was_trade_fully_canceled def handle_cancel_sell(self, trade: Trade, order: Dict, reason: str) -> str: @@ -1049,7 +1048,7 @@ class FreqtradeBot: trade.open_order_id = None else: # TODO: figure out how to handle partially complete sell orders - reason = constants.CANCEL_REASON['PARTIALLY_FILLED'] + reason = constants.CANCEL_REASON['PARTIALLY_FILLED_KEEP_OPEN'] self.wallets.update() self._notify_sell_cancel( diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 458007c04..ecf907f54 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -149,7 +149,7 @@ class Telegram(RPC): elif msg['type'] == RPCMessageType.BUY_CANCEL_NOTIFICATION: message = ("\N{WARNING SIGN} *{exchange}:* " - "Cancelling Open Buy Order for {pair}".format(**msg)) + "Cancelling open buy Order for {pair}. Reason: {reason}.".format(**msg)) elif msg['type'] == RPCMessageType.SELL_NOTIFICATION: msg['amount'] = round(msg['amount'], 8) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index b11409767..145df9ed7 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -14,6 +14,7 @@ from telegram import Chat, Message, Update from telegram.error import NetworkError from freqtrade import __version__ +from freqtrade.constants import CANCEL_REASON from freqtrade.edge import PairInfo from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import Trade @@ -1310,9 +1311,10 @@ def test_send_msg_buy_cancel_notification(default_conf, mocker) -> None: 'type': RPCMessageType.BUY_CANCEL_NOTIFICATION, 'exchange': 'Bittrex', 'pair': 'ETH/BTC', + 'reason': CANCEL_REASON['TIMEOUT'] }) - assert msg_mock.call_args[0][0] \ - == ('\N{WARNING SIGN} *Bittrex:* Cancelling Open Buy Order for ETH/BTC') + assert (msg_mock.call_args[0][0] == '\N{WARNING SIGN} *Bittrex:* ' + 'Cancelling open buy Order for ETH/BTC. Reason: cancelled due to timeout.') def test_send_msg_sell_notification(default_conf, mocker) -> None: diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 0d7968e26..7b4ed47f1 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2527,13 +2527,13 @@ def test_handle_cancel_sell_limit(mocker, default_conf, fee) -> None: send_msg_mock.reset_mock() order['amount'] = 2 - assert freqtrade.handle_cancel_sell(trade, order, reason) == CANCEL_REASON['PARTIALLY_FILLED'] + assert freqtrade.handle_cancel_sell(trade, order, reason) == CANCEL_REASON['PARTIALLY_FILLED_KEEP_OPEN'] # Assert cancel_order was not called (callcount remains unchanged) assert cancel_order_mock.call_count == 1 assert send_msg_mock.call_count == 1 - assert freqtrade.handle_cancel_sell(trade, order, reason) == CANCEL_REASON['PARTIALLY_FILLED'] + assert freqtrade.handle_cancel_sell(trade, order, reason) == CANCEL_REASON['PARTIALLY_FILLED_KEEP_OPEN'] # Message should not be iterated again - assert trade.sell_order_status == CANCEL_REASON['PARTIALLY_FILLED'] + assert trade.sell_order_status == CANCEL_REASON['PARTIALLY_FILLED_KEEP_OPEN'] assert send_msg_mock.call_count == 1 From b2373fccfd8a5441c4639f8934d344a40a921e2b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 26 Aug 2020 22:24:45 +0200 Subject: [PATCH 3037/3421] Adjust tests as send_msg is only called once --- freqtrade/freqtradebot.py | 2 -- tests/rpc/test_rpc_telegram.py | 10 +++++----- tests/test_freqtradebot.py | 12 +++++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index d53902633..66d687536 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -975,8 +975,6 @@ class FreqtradeBot: # Cancelled orders may have the status of 'canceled' or 'closed' if order['status'] not in ('canceled', 'closed'): - # TODO: this reason will overwrite the input in all cases - # reason = constants.CANCEL_REASON['TIMEOUT'] corder = self.exchange.cancel_order_with_result(trade.open_order_id, trade.pair, trade.amount) # Avoid race condition where the order could not be cancelled coz its already filled. diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 145df9ed7..a5e501390 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -725,7 +725,7 @@ def test_telegram_forcesell_handle(default_conf, update, ticker, fee, context.args = ["1"] telegram._forcesell(update=update, context=context) - assert rpc_mock.call_count == 4 + assert rpc_mock.call_count == 3 last_msg = rpc_mock.call_args_list[-1][0][0] assert { 'type': RPCMessageType.SELL_NOTIFICATION, @@ -784,7 +784,7 @@ def test_telegram_forcesell_down_handle(default_conf, update, ticker, fee, context.args = ["1"] telegram._forcesell(update=update, context=context) - assert rpc_mock.call_count == 4 + assert rpc_mock.call_count == 3 last_msg = rpc_mock.call_args_list[-1][0][0] assert { @@ -836,8 +836,8 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None # Called for all trades 3 times # cancel notification (wtf??), sell notification, buy_cancel - assert rpc_mock.call_count == 12 - msg = rpc_mock.call_args_list[2][0][0] + assert rpc_mock.call_count == 8 + msg = rpc_mock.call_args_list[1][0][0] assert { 'type': RPCMessageType.SELL_NOTIFICATION, 'trade_id': 1, @@ -1314,7 +1314,7 @@ def test_send_msg_buy_cancel_notification(default_conf, mocker) -> None: 'reason': CANCEL_REASON['TIMEOUT'] }) assert (msg_mock.call_args[0][0] == '\N{WARNING SIGN} *Bittrex:* ' - 'Cancelling open buy Order for ETH/BTC. Reason: cancelled due to timeout.') + 'Cancelling open buy Order for ETH/BTC. Reason: cancelled due to timeout.') def test_send_msg_sell_notification(default_conf, mocker) -> None: diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 7b4ed47f1..ac6d3791a 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2289,7 +2289,7 @@ def test_check_handle_timedout_partial(default_conf, ticker, limit_buy_order_old # note this is for a partially-complete buy order freqtrade.check_handle_timedout() assert cancel_order_mock.call_count == 1 - assert rpc_mock.call_count == 2 + assert rpc_mock.call_count == 1 trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() assert len(trades) == 1 assert trades[0].amount == 23.0 @@ -2324,7 +2324,7 @@ def test_check_handle_timedout_partial_fee(default_conf, ticker, open_trade, cap assert log_has_re(r"Applying fee on amount for Trade.*", caplog) assert cancel_order_mock.call_count == 1 - assert rpc_mock.call_count == 2 + assert rpc_mock.call_count == 1 trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() assert len(trades) == 1 # Verify that trade has been updated @@ -2364,7 +2364,7 @@ def test_check_handle_timedout_partial_except(default_conf, ticker, open_trade, assert log_has_re(r"Could not update trade amount: .*", caplog) assert cancel_order_mock.call_count == 1 - assert rpc_mock.call_count == 2 + assert rpc_mock.call_count == 1 trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all() assert len(trades) == 1 # Verify that trade has been updated @@ -2527,11 +2527,13 @@ def test_handle_cancel_sell_limit(mocker, default_conf, fee) -> None: send_msg_mock.reset_mock() order['amount'] = 2 - assert freqtrade.handle_cancel_sell(trade, order, reason) == CANCEL_REASON['PARTIALLY_FILLED_KEEP_OPEN'] + assert freqtrade.handle_cancel_sell(trade, order, reason + ) == CANCEL_REASON['PARTIALLY_FILLED_KEEP_OPEN'] # Assert cancel_order was not called (callcount remains unchanged) assert cancel_order_mock.call_count == 1 assert send_msg_mock.call_count == 1 - assert freqtrade.handle_cancel_sell(trade, order, reason) == CANCEL_REASON['PARTIALLY_FILLED_KEEP_OPEN'] + assert freqtrade.handle_cancel_sell(trade, order, reason + ) == CANCEL_REASON['PARTIALLY_FILLED_KEEP_OPEN'] # Message should not be iterated again assert trade.sell_order_status == CANCEL_REASON['PARTIALLY_FILLED_KEEP_OPEN'] assert send_msg_mock.call_count == 1 From bf5a082358f93adfd2bbe771b76d7ab7928fc3cf Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 27 Aug 2020 11:37:20 +0200 Subject: [PATCH 3038/3421] bufferhandler should log right from the beginning --- freqtrade/loggers.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index 263f97ce1..8f5da9bee 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -41,13 +41,14 @@ def setup_logging_pre() -> None: """ Early setup for logging. Uses INFO loglevel and only the Streamhandler. - Early messages (before proper logging setup) will therefore only be available - after the proper logging setup. + Early messages (before proper logging setup) will therefore only be sent to additional + logging handlers after the real initialization, because we don't know which + ones the user desires beforehand. """ logging.basicConfig( level=logging.INFO, format=LOGFORMAT, - handlers=[logging.StreamHandler(sys.stderr)] + handlers=[logging.StreamHandler(sys.stderr), bufferHandler] ) From cf719bc5d32a53aea394e8a2473812dff1412340 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 27 Aug 2020 12:04:55 +0200 Subject: [PATCH 3039/3421] Fix logformat to use epoch timestamp in ms --- freqtrade/rpc/rpc.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index b7a4f4f8c..fed170001 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -640,10 +640,15 @@ class RPC: else: buffer = bufferHandler.buffer records = [[datetime.fromtimestamp(r.created).strftime("%Y-%m-%d %H:%M:%S"), - r.created, r.name, r.levelname, + r.created * 1000, r.name, r.levelname, r.message + ('\n' + r.exc_text if r.exc_text else '')] for r in buffer] + # Logs format: + # [logtime-formatted, logepoch, logger-name, loglevel, message \n + exception] + # e.g. ["2020-08-27 11:35:01", 1598520901097.9397, + # "freqtrade.worker", "INFO", "Starting worker develop"] + return {'log_count': len(records), 'logs': records} def _rpc_edge(self) -> List[Dict[str, Any]]: From dc6d71f651cc087ba943efe2e9e73d399f75bce5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 27 Aug 2020 14:41:31 +0200 Subject: [PATCH 3040/3421] Improve comment formatting --- freqtrade/rpc/rpc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index fed170001..13a799ef2 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -644,10 +644,10 @@ class RPC: r.message + ('\n' + r.exc_text if r.exc_text else '')] for r in buffer] - # Logs format: + # Log format: # [logtime-formatted, logepoch, logger-name, loglevel, message \n + exception] # e.g. ["2020-08-27 11:35:01", 1598520901097.9397, - # "freqtrade.worker", "INFO", "Starting worker develop"] + # "freqtrade.worker", "INFO", "Starting worker develop"] return {'log_count': len(records), 'logs': records} From 289425a434e5e7b3f010beca8639623a5e6982a3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 Aug 2020 10:07:02 +0200 Subject: [PATCH 3041/3421] Add test for dry-run-cancel order --- tests/exchange/test_exchange.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 571053b44..c254d6a09 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1761,6 +1761,14 @@ def test_cancel_order_dry_run(default_conf, mocker, exchange_name): assert exchange.cancel_order(order_id='123', pair='TKN/BTC') == {} assert exchange.cancel_stoploss_order(order_id='123', pair='TKN/BTC') == {} + order = exchange.buy('ETH/BTC', 'limit', 5, 0.55, 'gtc') + + cancel_order = exchange.cancel_order(order_id=order['id'], pair='ETH/BTC') + assert order['id'] == cancel_order['id'] + assert order['amount'] == cancel_order['amount'] + assert order['pair'] == cancel_order['pair'] + assert cancel_order['status'] == 'canceled' + @pytest.mark.parametrize("exchange_name", EXCHANGES) @pytest.mark.parametrize("order,result", [ From a595d23bf16b7488ac5c5c0e3d16ac7c2fa96411 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 Aug 2020 10:14:49 +0200 Subject: [PATCH 3042/3421] Improve comment in test --- tests/rpc/test_rpc_telegram.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index bce20a043..51298d8f3 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -835,8 +835,7 @@ def test_forcesell_all_handle(default_conf, update, ticker, fee, mocker) -> None context.args = ["all"] telegram._forcesell(update=update, context=context) - # Called for all trades 3 times - # cancel notification (wtf??), sell notification, buy_cancel + # Called for each trade 3 times assert rpc_mock.call_count == 8 msg = rpc_mock.call_args_list[1][0][0] assert { From 2ae04af6946097b555d28addecd771bb44ca707d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 29 Aug 2020 10:26:26 +0200 Subject: [PATCH 3043/3421] Improve some doc wording --- README.md | 1 - docs/deprecated.md | 11 +++++------ tests/rpc/test_rpc_telegram.py | 1 - 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 7e0acde46..90f303c6d 100644 --- a/README.md +++ b/README.md @@ -123,7 +123,6 @@ Telegram is not mandatory. However, this is a great way to control your bot. Mor - `/help`: Show help message - `/version`: Show version - ## Development branches The project is currently setup in two main branches: diff --git a/docs/deprecated.md b/docs/deprecated.md index a7b57b10e..44f0b686a 100644 --- a/docs/deprecated.md +++ b/docs/deprecated.md @@ -9,21 +9,20 @@ and are no longer supported. Please avoid their usage in your configuration. ### the `--refresh-pairs-cached` command line option `--refresh-pairs-cached` in the context of backtesting, hyperopt and edge allows to refresh candle data for backtesting. -Since this leads to much confusion, and slows down backtesting (while not being part of backtesting) this has been singled out -as a seperate freqtrade subcommand `freqtrade download-data`. +Since this leads to much confusion, and slows down backtesting (while not being part of backtesting) this has been singled out as a separate freqtrade sub-command `freqtrade download-data`. -This command line option was deprecated in 2019.7-dev (develop branch) and removed in 2019.9 (master branch). +This command line option was deprecated in 2019.7-dev (develop branch) and removed in 2019.9. ### The **--dynamic-whitelist** command line option This command line option was deprecated in 2018 and removed freqtrade 2019.6-dev (develop branch) -and in freqtrade 2019.7 (master branch). +and in freqtrade 2019.7. ### the `--live` command line option `--live` in the context of backtesting allowed to download the latest tick data for backtesting. Did only download the latest 500 candles, so was ineffective in getting good backtest data. -Removed in 2019-7-dev (develop branch) and in freqtrade 2019-8 (master branch) +Removed in 2019-7-dev (develop branch) and in freqtrade 2019.8. ### Allow running multiple pairlists in sequence @@ -31,6 +30,6 @@ The former `"pairlist"` section in the configuration has been removed, and is re The old section of configuration parameters (`"pairlist"`) has been deprecated in 2019.11 and has been removed in 2020.4. -### deprecation of bidVolume and askVolume from volumepairlist +### deprecation of bidVolume and askVolume from volume-pairlist Since only quoteVolume can be compared between assets, the other options (bidVolume, askVolume) have been deprecated in 2020.4. diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index bb63f283a..c962f68db 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1127,7 +1127,6 @@ def test_telegram_logs(default_conf, update, mocker) -> None: telegram._logs(update=update, context=context) assert msg_mock.call_count == 1 assert "freqtrade\\.rpc\\.telegram" in msg_mock.call_args_list[0][0][0] - assert "freqtrade\\.resolvers\\.iresolver" in msg_mock.call_args_list[0][0][0] msg_mock.reset_mock() context.args = ["1"] From 284d39930fc6b94912cdb4d45bc8e8df7307feb0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 30 Aug 2020 10:07:28 +0200 Subject: [PATCH 3044/3421] Allow using pairlists through dataprovider in backtesting --- freqtrade/data/dataprovider.py | 6 ++++++ freqtrade/optimize/backtesting.py | 1 + 2 files changed, 7 insertions(+) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 3b4de823f..ccb6cbf56 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -39,6 +39,12 @@ class DataProvider: """ self.__cached_pairs[(pair, timeframe)] = (dataframe, Arrow.utcnow().datetime) + def add_pairlisthandler(self, pairlists) -> None: + """ + Allow adding pairlisthandler after initialization + """ + self._pairlists = pairlists + def refresh(self, pairlist: ListPairsWithTimeframes, helping_pairs: ListPairsWithTimeframes = None) -> None: diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 3bd75f61a..005ec9fb8 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -96,6 +96,7 @@ class Backtesting: "PrecisionFilter not allowed for backtesting multiple strategies." ) + dataprovider.add_pairlisthandler(self.pairlists) self.pairlists.refresh_pairlist() if len(self.pairlists.whitelist) == 0: From 842eff95eba81ddaa34e71ac1d4082ed163d6630 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 30 Aug 2020 10:07:58 +0200 Subject: [PATCH 3045/3421] Add simple verification to ensure pairlists is iitialized --- tests/optimize/test_backtesting.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 52d8f217c..f5c313520 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -359,6 +359,7 @@ def test_backtesting_start(default_conf, mocker, testdatadir, caplog) -> None: ] for line in exists: assert log_has(line, caplog) + assert backtesting.strategy.dp._pairlists is not None def test_backtesting_start_no_data(default_conf, mocker, caplog, testdatadir) -> None: From 3d39f05c8fabe2d237a9207aab026dcbc6878fbe Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 30 Aug 2020 10:23:14 +0200 Subject: [PATCH 3046/3421] Improve release documetation --- docs/developer.md | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/docs/developer.md b/docs/developer.md index f09ae2c76..8bee1fd8e 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -52,6 +52,7 @@ The fastest and easiest way to start up is to use docker-compose.develop which g * [docker-compose](https://docs.docker.com/compose/install/) #### Starting the bot + ##### Use the develop dockerfile ``` bash @@ -74,7 +75,7 @@ docker-compose up docker-compose build ``` -##### Execing (effectively SSH into the container) +##### Executing (effectively SSH into the container) The `exec` command requires that the container already be running, if you want to start it that can be effected by `docker-compose up` or `docker-compose run freqtrade_develop` @@ -127,7 +128,7 @@ First of all, have a look at the [VolumePairList](https://github.com/freqtrade/f This is a simple Handler, which however serves as a good example on how to start developing. -Next, modify the classname of the Handler (ideally align this with the module filename). +Next, modify the class-name of the Handler (ideally align this with the module filename). The base-class provides an instance of the exchange (`self._exchange`) the pairlist manager (`self._pairlistmanager`), as well as the main configuration (`self._config`), the pairlist dedicated configuration (`self._pairlistconfig`) and the absolute position within the list of pairlists. @@ -147,7 +148,7 @@ Configuration for the chain of Pairlist Handlers is done in the bot configuratio By convention, `"number_assets"` is used to specify the maximum number of pairs to keep in the pairlist. Please follow this to ensure a consistent user experience. -Additional parameters can be configured as needed. For instance, `VolumePairList` uses `"sort_key"` to specify the sorting value - however feel free to specify whatever is necessary for your great algorithm to be successfull and dynamic. +Additional parameters can be configured as needed. For instance, `VolumePairList` uses `"sort_key"` to specify the sorting value - however feel free to specify whatever is necessary for your great algorithm to be successful and dynamic. #### short_desc @@ -163,7 +164,7 @@ This is called with each iteration of the bot (only if the Pairlist Handler is a It must return the resulting pairlist (which may then be passed into the chain of Pairlist Handlers). -Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filtering. Use this if you limit your result to a certain number of pairs - so the endresult is not shorter than expected. +Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filtering. Use this if you limit your result to a certain number of pairs - so the end-result is not shorter than expected. #### filter_pairlist @@ -171,13 +172,13 @@ This method is called for each Pairlist Handler in the chain by the pairlist man This is called with each iteration of the bot - so consider implementing caching for compute/network heavy calculations. -It get's passed a pairlist (which can be the result of previous pairlists) as well as `tickers`, a pre-fetched version of `get_tickers()`. +It gets passed a pairlist (which can be the result of previous pairlists) as well as `tickers`, a pre-fetched version of `get_tickers()`. The default implementation in the base class simply calls the `_validate_pair()` method for each pair in the pairlist, but you may override it. So you should either implement the `_validate_pair()` in your Pairlist Handler or override `filter_pairlist()` to do something else. If overridden, it must return the resulting pairlist (which may then be passed into the next Pairlist Handler in the chain). -Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filters. Use this if you limit your result to a certain number of pairs - so the endresult is not shorter than expected. +Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filters. Use this if you limit your result to a certain number of pairs - so the end result is not shorter than expected. In `VolumePairList`, this implements different methods of sorting, does early validation so only the expected number of pairs is returned. @@ -201,7 +202,7 @@ Most exchanges supported by CCXT should work out of the box. Check if the new exchange supports Stoploss on Exchange orders through their API. -Since CCXT does not provide unification for Stoploss On Exchange yet, we'll need to implement the exchange-specific parameters ourselfs. Best look at `binance.py` for an example implementation of this. You'll need to dig through the documentation of the Exchange's API on how exactly this can be done. [CCXT Issues](https://github.com/ccxt/ccxt/issues) may also provide great help, since others may have implemented something similar for their projects. +Since CCXT does not provide unification for Stoploss On Exchange yet, we'll need to implement the exchange-specific parameters ourselves. Best look at `binance.py` for an example implementation of this. You'll need to dig through the documentation of the Exchange's API on how exactly this can be done. [CCXT Issues](https://github.com/ccxt/ccxt/issues) may also provide great help, since others may have implemented something similar for their projects. ### Incomplete candles @@ -274,6 +275,7 @@ git checkout -b new_release Determine if crucial bugfixes have been made between this commit and the current state, and eventually cherry-pick these. +* Merge the release branch (master) into this branch. * Edit `freqtrade/__init__.py` and add the version matching the current date (for example `2019.7` for July 2019). Minor versions can be `2019.7.1` should we need to do a second release that month. Version numbers must follow allowed versions from PEP0440 to avoid failures pushing to pypi. * Commit this part * push that branch to the remote and create a PR against the master branch @@ -281,14 +283,14 @@ Determine if crucial bugfixes have been made between this commit and the current ### Create changelog from git commits !!! Note - Make sure that the master branch is uptodate! + Make sure that the master branch is up-to-date! ``` bash # Needs to be done before merging / pulling that branch. git log --oneline --no-decorate --no-merges master..new_release ``` -To keep the release-log short, best wrap the full git changelog into a collapsible details secction. +To keep the release-log short, best wrap the full git changelog into a collapsible details section. ```markdown
              @@ -312,6 +314,9 @@ Once the PR against master is merged (best right after merging): ### pypi +!!! Note + This process is now automated as part of Github Actions. + To create a pypi release, please run the following commands: Additional requirement: `wheel`, `twine` (for uploading), account on pypi with proper permissions. From 7f74ff53b12c5baff8c497227b8dd49ddcc4d499 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 31 Aug 2020 07:34:43 +0200 Subject: [PATCH 3047/3421] Move clock warning to installation pages --- docs/bot-usage.md | 3 +++ docs/docker.md | 3 +++ docs/index.md | 6 +----- docs/installation.md | 3 +++ 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 40ff3d82b..4a4496bbc 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -5,6 +5,9 @@ This page explains the different parameters of the bot and how to run it. !!! Note If you've used `setup.sh`, don't forget to activate your virtual environment (`source .env/bin/activate`) before running freqtrade commands. +!!! Warning "Up-to-date clock" + The clock on the system running the bot must be accurate, synchronized to a NTP server frequently enough to avoid problems with communication to the exchanges. + ## Bot commands ``` diff --git a/docs/docker.md b/docs/docker.md index 92478088a..b9508648b 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -12,6 +12,9 @@ Optionally, [docker-compose](https://docs.docker.com/compose/install/) should be Once you have Docker installed, simply prepare the config file (e.g. `config.json`) and run the image for `freqtrade` as explained below. +!!! Warning "Up-to-date clock" + The clock on the system running the bot must be accurate, synchronized to a NTP server frequently enough to avoid problems with communication to the exchanges. + ## Freqtrade with docker-compose Freqtrade provides an official Docker image on [Dockerhub](https://hub.docker.com/r/freqtradeorg/freqtrade/), as well as a [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) ready for usage. diff --git a/docs/index.md b/docs/index.md index adc661300..397c549aa 100644 --- a/docs/index.md +++ b/docs/index.md @@ -37,13 +37,9 @@ Freqtrade is a crypto-currency algorithmic trading software developed in python ## Requirements -### Up to date clock - -The clock on the system running the bot must be accurate, synchronized to a NTP server frequently enough to avoid problems with communication to the exchanges. - ### Hardware requirements -To run this bot we recommend you a cloud instance with a minimum of: +To run this bot we recommend you a linux cloud instance with a minimum of: - 2GB RAM - 1GB disk space diff --git a/docs/installation.md b/docs/installation.md index c03be55d1..ec5e40965 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -18,6 +18,9 @@ Click each one for install guide: We also recommend a [Telegram bot](telegram-usage.md#setup-your-telegram-bot), which is optional but recommended. +!!! Warning "Up-to-date clock" + The clock on the system running the bot must be accurate, synchronized to a NTP server frequently enough to avoid problems with communication to the exchanges. + ## Quick start Freqtrade provides the Linux/MacOS Easy Installation script to install all dependencies and help you configure the bot. From f83633ff4e9ded4689ccc70a0af9b7efe0ea26fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2020 06:38:24 +0000 Subject: [PATCH 3048/3421] Bump prompt-toolkit from 3.0.6 to 3.0.7 Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.6 to 3.0.7. - [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases) - [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG) - [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.6...3.0.7) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index b6e2d329f..9e1dbf86f 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -32,4 +32,4 @@ flask-cors==3.0.8 colorama==0.4.3 # Building config files interactively questionary==1.5.2 -prompt-toolkit==3.0.6 +prompt-toolkit==3.0.7 From 4adf012ee68f200ab185a49a0b9c437e22ee2f8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2020 06:38:35 +0000 Subject: [PATCH 3049/3421] Bump flask-cors from 3.0.8 to 3.0.9 Bumps [flask-cors](https://github.com/corydolphin/flask-cors) from 3.0.8 to 3.0.9. - [Release notes](https://github.com/corydolphin/flask-cors/releases) - [Changelog](https://github.com/corydolphin/flask-cors/blob/master/CHANGELOG.md) - [Commits](https://github.com/corydolphin/flask-cors/compare/3.0.8...3.0.9) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index b6e2d329f..d543f206d 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -26,7 +26,7 @@ sdnotify==0.3.2 # Api server flask==1.1.2 flask-jwt-extended==3.24.1 -flask-cors==3.0.8 +flask-cors==3.0.9 # Support for colorized terminal output colorama==0.4.3 From 821af9be9e36ff5a5c4f632c309409034467c8a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2020 06:38:36 +0000 Subject: [PATCH 3050/3421] Bump mkdocs-material from 5.5.8 to 5.5.11 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.8 to 5.5.11. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.8...5.5.11) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 5226db750..c8f08d12a 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.5.8 +mkdocs-material==5.5.11 mdx_truly_sane_lists==1.2 From 55a49bfc5325364a0c5da7190e723b2a3c261089 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2020 06:38:38 +0000 Subject: [PATCH 3051/3421] Bump progressbar2 from 3.51.4 to 3.52.1 Bumps [progressbar2](https://github.com/WoLpH/python-progressbar) from 3.51.4 to 3.52.1. - [Release notes](https://github.com/WoLpH/python-progressbar/releases) - [Changelog](https://github.com/WoLpH/python-progressbar/blob/develop/CHANGES.rst) - [Commits](https://github.com/WoLpH/python-progressbar/compare/v3.51.4...v3.52.1) Signed-off-by: dependabot[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index ce08f08e0..fbc679eaa 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -7,4 +7,4 @@ scikit-learn==0.23.1 scikit-optimize==0.7.4 filelock==3.0.12 joblib==0.16.0 -progressbar2==3.51.4 +progressbar2==3.52.1 From 8969ab4aa3026f3536980a34d6612bdb0a9dde38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2020 06:38:55 +0000 Subject: [PATCH 3052/3421] Bump pytest-mock from 3.3.0 to 3.3.1 Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.3.0 to 3.3.1. - [Release notes](https://github.com/pytest-dev/pytest-mock/releases) - [Changelog](https://github.com/pytest-dev/pytest-mock/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.3.0...v3.3.1) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 1f5b68a73..44f0c7265 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,7 +11,7 @@ mypy==0.782 pytest==6.0.1 pytest-asyncio==0.14.0 pytest-cov==2.10.1 -pytest-mock==3.3.0 +pytest-mock==3.3.1 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents From c5b8993e9d061e7f839be9c40bc54769ec997991 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2020 06:38:56 +0000 Subject: [PATCH 3053/3421] Bump ccxt from 1.33.52 to 1.33.72 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.33.52 to 1.33.72. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.33.52...1.33.72) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index b6e2d329f..6f4ae45b3 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.33.52 +ccxt==1.33.72 SQLAlchemy==1.3.19 python-telegram-bot==12.8 arrow==0.16.0 From 24df8d6bf5c81c3bfc9127b0d3cd1c01b4a99780 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 31 Aug 2020 15:46:31 +0200 Subject: [PATCH 3054/3421] Sort imports --- tests/data/test_history.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/data/test_history.py b/tests/data/test_history.py index c89156f4c..2d6aed8f6 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -1,6 +1,5 @@ # pragma pylint: disable=missing-docstring, protected-access, C0103 -from freqtrade.data.history.hdf5datahandler import HDF5DataHandler import json import uuid from pathlib import Path @@ -15,6 +14,7 @@ from pandas.testing import assert_frame_equal from freqtrade.configuration import TimeRange from freqtrade.constants import AVAILABLE_DATAHANDLERS from freqtrade.data.converter import ohlcv_to_dataframe +from freqtrade.data.history.hdf5datahandler import HDF5DataHandler from freqtrade.data.history.history_utils import ( _download_pair_history, _download_trades_history, _load_cached_data_for_updating, convert_trades_to_ohlcv, get_timerange, From a4e3edbcc597fc05f9be1eec2aa827593e1d33e7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 1 Sep 2020 07:10:48 +0200 Subject: [PATCH 3055/3421] Fix stoploss_last_update beein updated with date object in wrong timezone --- freqtrade/freqtradebot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index eee60cc22..768f283ab 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -835,7 +835,7 @@ class FreqtradeBot: stop_price = trade.open_rate * (1 + stoploss) if self.create_stoploss_order(trade=trade, stop_price=stop_price): - trade.stoploss_last_update = datetime.now() + trade.stoploss_last_update = datetime.utcnow() return False # If stoploss order is canceled for some reason we add it From 3bc6cb36c60155a8de4e25cfd1879d1b260a4348 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 1 Sep 2020 08:00:20 +0200 Subject: [PATCH 3056/3421] Remove deprectead volumepairlist options --- docs/deprecated.md | 2 +- freqtrade/pairlist/VolumePairList.py | 7 +------ tests/pairlist/test_pairlist.py | 13 ------------- 3 files changed, 2 insertions(+), 20 deletions(-) diff --git a/docs/deprecated.md b/docs/deprecated.md index 44f0b686a..312f2c74f 100644 --- a/docs/deprecated.md +++ b/docs/deprecated.md @@ -32,4 +32,4 @@ The old section of configuration parameters (`"pairlist"`) has been deprecated i ### deprecation of bidVolume and askVolume from volume-pairlist -Since only quoteVolume can be compared between assets, the other options (bidVolume, askVolume) have been deprecated in 2020.4. +Since only quoteVolume can be compared between assets, the other options (bidVolume, askVolume) have been deprecated in 2020.4, and have been removed in 2020.9. diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index 35dce93eb..44e5c52d7 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -14,7 +14,7 @@ from freqtrade.pairlist.IPairList import IPairList logger = logging.getLogger(__name__) -SORT_VALUES = ['askVolume', 'bidVolume', 'quoteVolume'] +SORT_VALUES = ['quoteVolume'] class VolumePairList(IPairList): @@ -45,11 +45,6 @@ class VolumePairList(IPairList): raise OperationalException( f'key {self._sort_key} not in {SORT_VALUES}') - if self._sort_key != 'quoteVolume': - logger.warning( - "DEPRECATED: using any key other than quoteVolume for VolumePairList is deprecated." - ) - @property def needstickers(self) -> bool: """ diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index 9217abc46..a5e479912 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -231,9 +231,6 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): # VolumePairList only ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC', 'HOT/BTC']), - # Different sorting depending on quote or bid volume - ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], - "BTC", ['HOT/BTC', 'FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}], "USDT", ['ETH/USDT', 'NANO/USDT', 'ADAHALF/USDT', 'ADADOUBLE/USDT']), # No pair for ETH, VolumePairList @@ -263,10 +260,6 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PrecisionFilter"}], "BTC", ['ETH/BTC', 'TKN/BTC', 'LTC/BTC', 'XRP/BTC']), - # Precisionfilter bid - ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}, - {"method": "PrecisionFilter"}], - "BTC", ['FUEL/BTC', 'XRP/BTC', 'LTC/BTC', 'TKN/BTC']), # PriceFilter and VolumePairList ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "PriceFilter", "low_price_ratio": 0.03}], @@ -293,9 +286,6 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): ([{"method": "StaticPairList"}], "BTC", ['ETH/BTC', 'TKN/BTC', 'HOT/BTC']), # Static Pairlist before VolumePairList - sorting changes - ([{"method": "StaticPairList"}, - {"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}], - "BTC", ['HOT/BTC', 'TKN/BTC', 'ETH/BTC']), # SpreadFilter ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, {"method": "SpreadFilter", "max_spread_ratio": 0.005}], @@ -344,9 +334,6 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): ([{"method": "SpreadFilter", "max_spread_ratio": 0.005}], "BTC", 'filter_at_the_beginning'), # OperationalException expected # Static Pairlist after VolumePairList, on a non-first position - ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "bidVolume"}, - {"method": "StaticPairList"}], - "BTC", 'static_in_the_middle'), ([{"method": "VolumePairList", "number_assets": 20, "sort_key": "quoteVolume"}, {"method": "PriceFilter", "low_price_ratio": 0.02}], "USDT", ['ETH/USDT', 'NANO/USDT']), From d44418282935c97eb17181fa4e564bc2abf10d61 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 1 Sep 2020 10:31:11 +0200 Subject: [PATCH 3057/3421] Reinstate wrongly removed pairlist test --- tests/pairlist/test_pairlist.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/pairlist/test_pairlist.py b/tests/pairlist/test_pairlist.py index a5e479912..1f05bef1e 100644 --- a/tests/pairlist/test_pairlist.py +++ b/tests/pairlist/test_pairlist.py @@ -334,6 +334,9 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): ([{"method": "SpreadFilter", "max_spread_ratio": 0.005}], "BTC", 'filter_at_the_beginning'), # OperationalException expected # Static Pairlist after VolumePairList, on a non-first position + ([{"method": "VolumePairList", "number_assets": 5, "sort_key": "quoteVolume"}, + {"method": "StaticPairList"}], + "BTC", 'static_in_the_middle'), ([{"method": "VolumePairList", "number_assets": 20, "sort_key": "quoteVolume"}, {"method": "PriceFilter", "low_price_ratio": 0.02}], "USDT", ['ETH/USDT', 'NANO/USDT']), From dff0ac276803e480c03ba6fb33620b7179307824 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 1 Sep 2020 19:16:11 +0200 Subject: [PATCH 3058/3421] Remove trailing_stop from default config example - it'll be misleading --- config.json.example | 1 - config_binance.json.example | 1 - config_kraken.json.example | 1 - 3 files changed, 3 deletions(-) diff --git a/config.json.example b/config.json.example index 77a147d0c..ab517b77c 100644 --- a/config.json.example +++ b/config.json.example @@ -7,7 +7,6 @@ "timeframe": "5m", "dry_run": false, "cancel_open_orders_on_exit": false, - "trailing_stop": false, "unfilledtimeout": { "buy": 10, "sell": 30 diff --git a/config_binance.json.example b/config_binance.json.example index 82943749d..f3f8eb659 100644 --- a/config_binance.json.example +++ b/config_binance.json.example @@ -7,7 +7,6 @@ "timeframe": "5m", "dry_run": true, "cancel_open_orders_on_exit": false, - "trailing_stop": false, "unfilledtimeout": { "buy": 10, "sell": 30 diff --git a/config_kraken.json.example b/config_kraken.json.example index fb983a4a3..fd0b2b95d 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -7,7 +7,6 @@ "timeframe": "5m", "dry_run": true, "cancel_open_orders_on_exit": false, - "trailing_stop": false, "unfilledtimeout": { "buy": 10, "sell": 30 From f54fecaebaaa009dd4a5da2c83dcb85516be8a6a Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 2 Sep 2020 19:58:26 +0200 Subject: [PATCH 3059/3421] Expose helpermethods thorugh freqtrade.strategy --- freqtrade/strategy/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/freqtrade/strategy/__init__.py b/freqtrade/strategy/__init__.py index 40a4a0bea..91ea0e075 100644 --- a/freqtrade/strategy/__init__.py +++ b/freqtrade/strategy/__init__.py @@ -1 +1,4 @@ -from freqtrade.strategy.interface import IStrategy # noqa: F401 +# flake8: noqa: F401 +from freqtrade.exchange import (timeframe_to_minutes, timeframe_to_prev_date, + timeframe_to_seconds, timeframe_to_next_date, timeframe_to_msecs) +from freqtrade.strategy.interface import IStrategy From e268bd192e85868cb4da9e74dceb652d249ffbe6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 2 Sep 2020 19:59:04 +0200 Subject: [PATCH 3060/3421] Fix informative sample documentation --- docs/strategy-customization.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index be08faa2d..4362c251f 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -483,6 +483,10 @@ if self.dp: ### Complete Data-provider sample ```python +from freqtrade.strategy import IStrategy, timeframe_to_minutes +from pandas import DataFrame +import pandas as pd + class SampleStrategy(IStrategy): # strategy init stuff... @@ -518,9 +522,15 @@ class SampleStrategy(IStrategy): # Assuming inf_tf = '1d' - then the columns will now be: # date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d + # Shift date by 1 Frequency unit + # This is necessary since the data is always the "open date" + # and a 15m candle starting at 12:15 should not know the close of the 1h candle from 12:00 to 13:00 + minutes = timeframe_to_minutes(inf_tf) + informative['date_merge'] = informative["date"] + pd.to_timedelta(minutes, 'm') + # Combine the 2 dataframes # all indicators on the informative sample MUST be calculated before this point - dataframe = pd.merge(dataframe, informative, left_on='date', right_on=f'date_{inf_tf}', how='left') + dataframe = pd.merge(dataframe, informative, left_on='date', right_on=f'date_merge_{inf_tf}', how='left') # FFill to have the 1d value available in every row throughout the day. # Without this, comparisons would only work once per day. dataframe = dataframe.ffill() From 79ea8cf7719879e942d4c49dddd63cafd2d38cfe Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 2 Sep 2020 20:02:41 +0200 Subject: [PATCH 3061/3421] Improve wording --- docs/strategy-customization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 4362c251f..e2548e510 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -522,7 +522,7 @@ class SampleStrategy(IStrategy): # Assuming inf_tf = '1d' - then the columns will now be: # date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d - # Shift date by 1 Frequency unit + # Shift date by 1 candle # This is necessary since the data is always the "open date" # and a 15m candle starting at 12:15 should not know the close of the 1h candle from 12:00 to 13:00 minutes = timeframe_to_minutes(inf_tf) From 295ecaa9b20e688a4735a7a9fe1cd9bbbea2f7d0 Mon Sep 17 00:00:00 2001 From: silvavn <37382997+silvavn@users.noreply.github.com> Date: Wed, 2 Sep 2020 16:58:54 -0600 Subject: [PATCH 3062/3421] Updating Edge Positioning Doc. Integrated MathJax Included worked out examples Changed Language to achieve a middle ground. Minor formatting improvements --- docs/edge.md | 204 +++++++++++++++++++++++-------------- docs/javascripts/config.js | 12 +++ mkdocs.yml | 8 +- 3 files changed, 149 insertions(+), 75 deletions(-) create mode 100644 docs/javascripts/config.js diff --git a/docs/edge.md b/docs/edge.md index dcb559f96..182c47651 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -1,92 +1,141 @@ # Edge positioning -This page explains how to use Edge Positioning module in your bot in order to enter into a trade only if the trade has a reasonable win rate and risk reward ratio, and consequently adjust your position size and stoploss. +The `Edge Positioning` module uses probability to calculate your win rate and risk reward ration. It will use these statistics to control your strategy trade entry points, position side and, stoploss. !!! Warning - Edge positioning is not compatible with dynamic (volume-based) whitelist. + `Edge positioning` is not compatible with dynamic (volume-based) whitelist. !!! Note - Edge does not consider anything other than *its own* buy/sell/stoploss signals. It ignores the stoploss, trailing stoploss, and ROI settings in the strategy configuration file. - Therefore, it is important to understand that Edge can improve the performance of some trading strategies but *decrease* the performance of others. + `Edge Positioning` only considers *its own* buy/sell/stoploss signals. It ignores the stoploss, trailing stoploss, and ROI settings in the strategy configuration file. + `Edge Positioning` improves the performance of some trading strategies and *decreases* the performance of others. ## Introduction -Trading is all about probability. No one can claim that he has a strategy working all the time. You have to assume that sometimes you lose. +Trading strategies are not perfect. They are frameworks that are susceptible to the market and its indicators. Because the market is not at all predictable, sometimes a strategy will win and sometimes the same strategy will lose. -But it doesn't mean there is no rule, it only means rules should work "most of the time". Let's play a game: we toss a coin, heads: I give you 10$, tails: you give me 10$. Is it an interesting game? No, it's quite boring, isn't it? +To obtain an edge in the market, a strategy has to make more money than it loses. Marking money in trading is not only about *how often* the strategy makes or loses money. -But let's say the probability that we have heads is 80% (because our coin has the displaced distribution of mass or other defect), and the probability that we have tails is 20%. Now it is becoming interesting... +!!! tip "It doesn't matter how often, but how much!" + A bad strategy might make 1 penny in *ten* transactions but lose 1 dollar in *one* transaction. If one only checks the number of winning trades, it would be misleading to think that the strategy is actually making a profit. -That means 10$ X 80% versus 10$ X 20%. 8$ versus 2$. That means over time you will win 8$ risking only 2$ on each toss of coin. +The Edge Positioning module seeks to improve a strategy's winning probability and the money that the strategy will make *on the long run*. -Let's complicate it more: you win 80% of the time but only 2$, I win 20% of the time but 8$. The calculation is: 80% X 2$ versus 20% X 8$. It is becoming boring again because overtime you win $1.6$ (80% X 2$) and me $1.6 (20% X 8$) too. +We raise the following question[^1]: -The question is: How do you calculate that? How do you know if you wanna play? +!!! Question "Which trade is a better option?" + a) A trade with 80% of chance of losing $100 and 20% chance of winning $200
              + b) A trade with 100% of chance of losing $30 -The answer comes to two factors: +??? Info "Answer" + The expected value of *a)* is smaller than the expected value of *b)*.
              + Hence, *b*) represents a smaller loss in the long run.
              + However, the answer is: *it depends* -- Win Rate -- Risk Reward Ratio +Another way to look at it is to ask a similar question: -### Win Rate +!!! Question "Which trade is a better option?" + a) A trade with 80% of chance of winning 100 and 20% chance of losing $200
              + b) A trade with 100% of chance of winning $30 -Win Rate (*W*) is is the mean over some amount of trades (*N*) what is the percentage of winning trades to total number of trades (note that we don't consider how much you gained but only if you won or not). +Edge positioning tries to answer the hard questions about risk/reward and position size automatically, seeking to minimizes the chances of losing of a given strategy. -``` -W = (Number of winning trades) / (Total number of trades) = (Number of winning trades) / N -``` +### Trading, winning and losing -Complementary Loss Rate (*L*) is defined as +Let's call $o$ the return of a single transaction $o$ where $o \in \mathbb{R}$. The collection $O = \{o_1, o_2, ..., o_N\}$ is the set of all returns of transactions made during a trading session. We say that $N$ is the cardinality of $O$, or, in lay terms, it is the number of transactions made in a trading session. -``` -L = (Number of losing trades) / (Total number of trades) = (Number of losing trades) / N -``` +!!! Example + In a session where a strategy made three transactions we can say that $O = \{3.5, -1, 15\}$. That means that $N = 3$ and $o_1 = 3.5$, $o_2 = -1$, $o = 15$. -or, which is the same, as +A winning trade is a trade where a strategy *made* money. Making money means that the strategy closed the position in a value that returned a profit, after all deducted fees. Formally, a winning trade will have a return $o_i > 0$. Similarly, a losing trade will have a return $o_j \leq 0$. With that, we can discover the set of all winning trades, $T_{win}$, as follows: -``` -L = 1 – W -``` +$$ T_{win} = \{ o \in O | o > 0 \} $$ + +Similarly, we can discover the set of losing trades $T_{lose}$ as follows: + +$$ T_{lose} = \{o \in O | o \leq 0\} $$ + +!!! Example + In a section where a strategy made three transactions $O = \{3.5, -1, 15, 0\}$:
              + $T_{win} = \{3.5, 15\}$
              + $T_{lose} = \{-1, 0\}$
              + +### Win Rate and Lose Rate + +The win rate $W$ is the proportion of winning trades with respect to all the trades made by a strategy. We use the following function to compute the win rate: + +$$W = \frac{\sum^{o \in T_{win}} o}{N}$$ + +Where $W$ is the win rate, $N$ is the number of trades and, $T_{win}$ is the set of all trades where the strategy made money. + +Similarly, we can compute the rate of losing trades: + +$$ + L = \frac{\sum^{o \in T_{lose}} o}{N} +$$ + +Where $L$ is the lose rate, $N$ is the amount of trades made and, $T_{lose}$ is the set of all trades where the strategy lost money. Note that the above formula is the same as calculating $L = 1 – W$ or $W = 1 – L$ ### Risk Reward Ratio -Risk Reward Ratio (*R*) is a formula used to measure the expected gains of a given investment against the risk of loss. It is basically what you potentially win divided by what you potentially lose: +Risk Reward Ratio (*R*) is a formula used to measure the expected gains of a given investment against the risk of loss. It is basically what you potentially win divided by what you potentially lose. Formally: -``` -R = Profit / Loss -``` +$$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$ -Over time, on many trades, you can calculate your risk reward by dividing your average profit on winning trades by your average loss on losing trades: +??? Example "Worked example of $R$ calculation" + Let's say that you think that the price of *stonecoin* today is $10.0. You believe that, because they will start mining stonecoin it will go up to $15.0 tomorrow. There is the risk that the stone is too hard, and the GPUs can't mine it, so the price might go to $0 tomorrow. You are planning to invest $100.
              + Your potential profit is calculated as:
              + $\begin{aligned} + \text{potential_profit} &= (\text{potential_price} - \text{cost_per_unit}) * \frac{\text{investment}}{\text{cost_per_unit}} \\ + &= (15 - 10) * \frac{100}{15}\\ + &= 33.33 + \end{aligned}$
              + Since the price might go to $0, the $100 dolars invested could turn into 0. We can compute the Risk Reward Ratio as follows:
              + $\begin{aligned} + R &= \frac{\text{potential_profit}}{\text{potential_loss}}\\ + &= \frac{33.33}{100}\\ + &= 0.333... + \end{aligned}$
              + What it effectivelly means is that the strategy have the potential to make $0.33 for each $1 invested. -``` -Average profit = (Sum of profits) / (Number of winning trades) +On a long horizonte, that is, on many trades, we can calculate the risk reward by dividing the strategy' average profit on winning trades by the strategy' average loss on losing trades. We can calculate the average profit, $\mu_{win}$, as follows: -Average loss = (Sum of losses) / (Number of losing trades) +$$ \text{average_profit} = \mu_{win} = \frac{\text{sum_of_profits}}{\text{count_winning_trades}} = \frac{\sum^{o \in T_{win}} o}{|T_{win}|} $$ -R = (Average profit) / (Average loss) -``` +Similarly, we can calculate the average loss, $\mu_{lose}$, as follows: + +$$ \text{average_loss} = \mu_{lose} = \frac{\text{sum_of_losses}}{\text{count_losing_trades}} = \frac{\sum^{o \in T_{lose}} o}{|T_{lose}|} $$ + +Finally, we can calculate the Risk Reward ratio as follows: + +$$ R = \frac{\text{average_profit}}{\text{average_loss}} = \frac{\mu_{win}}{\mu_{lose}}\\ $$ + + +??? Example "Worked example of $R$ calculation using mean profit/loss" + Let's say the strategy that we are using makes an average win $\mu_{win} = 2.06$ and an average loss $\mu_{loss} = 4.11$.
              + We calculate the risk reward ratio as follows:
              + $R = \frac{\mu_{win}}{\mu_{loss}} = \frac{2.06}{4.11} = 0.5012...$ + ### Expectancy -At this point we can combine *W* and *R* to create an expectancy ratio. This is a simple process of multiplying the risk reward ratio by the percentage of winning trades and subtracting the percentage of losing trades, which is calculated as follows: +By combining the Win Rate $W$ and and the Risk Reward ratio $R$ to create an expectancy ratio $E$. A expectance ratio is the expected return of the investment made in a trade. We can compute the value of $E$ as follows: -``` -Expectancy Ratio = (Risk Reward Ratio X Win Rate) – Loss Rate = (R X W) – L -``` +$$E = R * W - L$$ -So lets say your Win rate is 28% and your Risk Reward Ratio is 5: +!!! Example "Calculating $E$" + Let's say that a strategy has a win rate $W = 0.28$ and a risk reward ratio $R = 5$. What this means is that the strategy is expected to make 5 times the investment around on 28% of the trades it makes. Working out the example:
              + $E = R * W - L = 5 * 0.28 - 0.72 = 0.68$ +
              -``` -Expectancy = (5 X 0.28) – 0.72 = 0.68 -``` +The expectancy worked out in the example above means that, on average, this strategy' trades will return 1.68 times the size of its losses. Said another way, the strategy makes $1.68 for every $1 it loses, on average. -Superficially, this means that on average you expect this strategy’s trades to return 1.68 times the size of your loses. Said another way, you can expect to win $1.68 for every $1 you lose. This is important for two reasons: First, it may seem obvious, but you know right away that you have a positive return. Second, you now have a number you can compare to other candidate systems to make decisions about which ones you employ. +You canThis is important for two reasons: First, it may seem obvious, but you know right away that you have a positive return. Second, you now have a number you can compare to other candidate systems to make decisions about which ones you employ. It is important to remember that any system with an expectancy greater than 0 is profitable using past data. The key is finding one that will be profitable in the future. You can also use this value to evaluate the effectiveness of modifications to this system. -**NOTICE:** It's important to keep in mind that Edge is testing your expectancy using historical data, there's no guarantee that you will have a similar edge in the future. It's still vital to do this testing in order to build confidence in your methodology, but be wary of "curve-fitting" your approach to the historical data as things are unlikely to play out the exact same way for future trades. +**NOTICE:** It's important to keep in mind that Edge is testing your expectancy using historical data, there's no guarantee that you will have a similar edge in the future. It's still vital to do this testing in order to build confidence in your methodology but be wary of "curve-fitting" your approach to the historical data as things are unlikely to play out the exact same way for future trades. ## How does it work? @@ -99,13 +148,13 @@ Edge combines dynamic stoploss, dynamic positions, and whitelist generation into | XZC/ETH | -0.03 | 0.52 |1.359670 | 0.228 | | XZC/ETH | -0.04 | 0.51 |1.234539 | 0.117 | -The goal here is to find the best stoploss for the strategy in order to have the maximum expectancy. In the above example stoploss at 3% leads to the maximum expectancy according to historical data. +The goal here is to find the best stoploss for the strategy in order to have the maximum expectancy. In the above example stoploss at $3% $leads to the maximum expectancy according to historical data. Edge module then forces stoploss value it evaluated to your strategy dynamically. ### Position size -Edge also dictates the stake amount for each trade to the bot according to the following factors: +Edge dictates the amount at stake for each trade to the bot according to the following factors: - Allowed capital at risk - Stoploss @@ -116,9 +165,9 @@ Allowed capital at risk is calculated as follows: Allowed capital at risk = (Capital available_percentage) X (Allowed risk per trade) ``` -Stoploss is calculated as described above against historical data. +Stoploss is calculated as described above with respect to historical data. -Your position size then will be: +The position size is calculated as follows: ``` Position size = (Allowed capital at risk) / Stoploss @@ -126,19 +175,23 @@ Position size = (Allowed capital at risk) / Stoploss Example: -Let's say the stake currency is ETH and you have 10 ETH on the exchange, your capital available percentage is 50% and you would allow 1% of risk for each trade. thus your available capital for trading is **10 x 0.5 = 5 ETH** and allowed capital at risk would be **5 x 0.01 = 0.05 ETH**. +Let's say the stake currency is **ETH** and there is $10$ **ETH** on the wallet. The capital available percentage is $50%$ and the allowed risk per trade is $1\%$. Thus, the available capital for trading is $10 * 0.5 = 5$ **ETH** and the allowed capital at risk would be $5 * 0.01 = 0.05$ **ETH**. -Let's assume Edge has calculated that for **XLM/ETH** market your stoploss should be at 2%. So your position size will be **0.05 / 0.02 = 2.5 ETH**. +- **Trade 1:** The strategy detects a new buy signal in the **XLM/ETH** market. `Edge Positioning` calculates a stoploss of $2\%$ and a position of $0.05 / 0.02 = 2.5$ **ETH**. The bot takes a position of $2.5$ **ETH** in the **XLM/ETH** market. -Bot takes a position of 2.5 ETH on XLM/ETH (call it trade 1). Up next, you receive another buy signal while trade 1 is still open. This time on **BTC/ETH** market. Edge calculated stoploss for this market at 4%. So your position size would be 0.05 / 0.04 = 1.25 ETH (call it trade 2). +- **Trade 2:** The strategy detects a buy signal on the **BTC/ETH** market while **Trade 1** is still open. `Edge Positioning` calculates the stoploss of $4\%$ on this market. Thus, **Trade 2** position size is $0.05 / 0.04 = 1.25$ **ETH**. -Note that available capital for trading didn’t change for trade 2 even if you had already trade 1. The available capital doesn’t mean the free amount on your wallet. +!!! Tip "Available Capital $\neq$ Available in wallet" + The available capital for trading didn't change in **Trade 2** even with **Trade 1** still open. The available capital **is not** the free amount in the wallet. -Now you have two trades open. The bot receives yet another buy signal for another market: **ADA/ETH**. This time the stoploss is calculated at 1%. So your position size is **0.05 / 0.01 = 5 ETH**. But there are already 3.75 ETH blocked in two previous trades. So the position size for this third trade would be **5 – 3.75 = 1.25 ETH**. +- **Trade 3:** The strategy detects a buy signal in the **ADA/ETH** market. `Edge Positioning` calculates a stoploss of $1\%$ and a position of $0.05 / 0.01 = 5$ **ETH**. Since **Trade 1** has $2.5$ **ETH** blocked and **Trade 2** has $1.25$ **ETH** blocked, there is only $5 - 1.25 - 2.5 = 1.25$ **ETH** available. Hence, the position size of **Trade 3** is $1.25$ **ETH**. -Available capital doesn’t change before a position is sold. Let’s assume that trade 1 receives a sell signal and it is sold with a profit of 1 ETH. Your total capital on exchange would be 11 ETH and the available capital for trading becomes 5.5 ETH. +!!! Tip "Available Capital Updates" + The available capital does not change before a position is sold. After a trade is closed the Available Capital goes up if the trade was profitable or goes down if the trade was a loss. -So the Bot receives another buy signal for trade 4 with a stoploss at 2% then your position size would be **0.055 / 0.02 = 2.75 ETH**. +- The strategy detects a sell signal in the **XLM/ETH** market. The bot exits **Trade 1** for a profit of $1$ **ETH**. The total capital in the wallet becomes $11$ **ETH** and the available capital for trading becomes $5.5$ **ETH**. + +- **Trade 4** The strategy detects a new buy signal int the **XLM/ETH** market. `Edge Positioning` calculates the stoploss of $2%$, and the position size of $0.055 / 0.02 = 2.75$ **ETH**. ## Configurations @@ -169,23 +222,23 @@ freqtrade edge An example of its output: -| pair | stoploss | win rate | risk reward ratio | required risk reward | expectancy | total number of trades | average duration (min) | -|:----------|-----------:|-----------:|--------------------:|-----------------------:|-------------:|-------------------------:|-------------------------:| -| AGI/BTC | -0.02 | 0.64 | 5.86 | 0.56 | 3.41 | 14 | 54 | -| NXS/BTC | -0.03 | 0.64 | 2.99 | 0.57 | 1.54 | 11 | 26 | -| LEND/BTC | -0.02 | 0.82 | 2.05 | 0.22 | 1.50 | 11 | 36 | -| VIA/BTC | -0.01 | 0.55 | 3.01 | 0.83 | 1.19 | 11 | 48 | -| MTH/BTC | -0.09 | 0.56 | 2.82 | 0.80 | 1.12 | 18 | 52 | -| ARDR/BTC | -0.04 | 0.42 | 3.14 | 1.40 | 0.73 | 12 | 42 | -| BCPT/BTC | -0.01 | 0.71 | 1.34 | 0.40 | 0.67 | 14 | 30 | -| WINGS/BTC | -0.02 | 0.56 | 1.97 | 0.80 | 0.65 | 27 | 42 | -| VIBE/BTC | -0.02 | 0.83 | 0.91 | 0.20 | 0.59 | 12 | 35 | -| MCO/BTC | -0.02 | 0.79 | 0.97 | 0.27 | 0.55 | 14 | 31 | -| GNT/BTC | -0.02 | 0.50 | 2.06 | 1.00 | 0.53 | 18 | 24 | -| HOT/BTC | -0.01 | 0.17 | 7.72 | 4.81 | 0.50 | 209 | 7 | -| SNM/BTC | -0.03 | 0.71 | 1.06 | 0.42 | 0.45 | 17 | 38 | -| APPC/BTC | -0.02 | 0.44 | 2.28 | 1.27 | 0.44 | 25 | 43 | -| NEBL/BTC | -0.03 | 0.63 | 1.29 | 0.58 | 0.44 | 19 | 59 | +| **pair** | **stoploss** | **win rate** | **risk reward ratio** | **required risk reward** | **expectancy** | **total number of trades** | **average duration (min)** | +|:----------|-----------:|-----------:|--------------------:|-----------------------:|-------------:|-----------------:|---------------:| +| **AGI/BTC** | -0.02 | 0.64 | 5.86 | 0.56 | 3.41 | 14 | 54 | +| **NXS/BTC** | -0.03 | 0.64 | 2.99 | 0.57 | 1.54 | 11 | 26 | +| **LEND/BTC** | -0.02 | 0.82 | 2.05 | 0.22 | 1.50 | 11 | 36 | +| **VIA/BTC** | -0.01 | 0.55 | 3.01 | 0.83 | 1.19 | 11 | 48 | +| **MTH/BTC** | -0.09 | 0.56 | 2.82 | 0.80 | 1.12 | 18 | 52 | +| **ARDR/BTC** | -0.04 | 0.42 | 3.14 | 1.40 | 0.73 | 12 | 42 | +| **BCPT/BTC** | -0.01 | 0.71 | 1.34 | 0.40 | 0.67 | 14 | 30 | +| **WINGS/BTC** | -0.02 | 0.56 | 1.97 | 0.80 | 0.65 | 27 | 42 | +| **VIBE/BTC** | -0.02 | 0.83 | 0.91 | 0.20 | 0.59 | 12 | 35 | +| **MCO/BTC** | -0.02 | 0.79 | 0.97 | 0.27 | 0.55 | 14 | 31 | +| **GNT/BTC** | -0.02 | 0.50 | 2.06 | 1.00 | 0.53 | 18 | 24 | +| **HOT/BTC** | -0.01 | 0.17 | 7.72 | 4.81 | 0.50 | 209 | 7 | +| **SNM/BTC** | -0.03 | 0.71 | 1.06 | 0.42 | 0.45 | 17 | 38 | +| **APPC/BTC** | -0.02 | 0.44 | 2.28 | 1.27 | 0.44 | 25 | 43 | +| **NEBL/BTC** | -0.03 | 0.63 | 1.29 | 0.58 | 0.44 | 19 | 59 | Edge produced the above table by comparing `calculate_since_number_of_days` to `minimum_expectancy` to find `min_trade_number` historical information based on the config file. The timerange Edge uses for its comparisons can be further limited by using the `--timerange` switch. @@ -218,3 +271,6 @@ The full timerange specification: * Use tickframes since 2018/01/31: `--timerange=20180131-` * Use tickframes since 2018/01/31 till 2018/03/01 : `--timerange=20180131-20180301` * Use tickframes between POSIX timestamps 1527595200 1527618600: `--timerange=1527595200-1527618600` + + +[^1]: Question extracted from MIT Opencourseware S096 - Mathematics with applications in Finance: https://ocw.mit.edu/courses/mathematics/18-s096-topics-in-mathematics-with-applications-in-finance-fall-2013/ diff --git a/docs/javascripts/config.js b/docs/javascripts/config.js new file mode 100644 index 000000000..95d619efc --- /dev/null +++ b/docs/javascripts/config.js @@ -0,0 +1,12 @@ +window.MathJax = { + tex: { + inlineMath: [["\\(", "\\)"]], + displayMath: [["\\[", "\\]"]], + processEscapes: true, + processEnvironments: true + }, + options: { + ignoreHtmlClass: ".*|", + processHtmlClass: "arithmatex" + } +}; \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index ebd32b3c1..324dc46db 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -39,13 +39,19 @@ theme: accent: 'tear' extra_css: - 'stylesheets/ft.extra.css' +extra_javascript: + - javascripts/config.js + - https://polyfill.io/v3/polyfill.min.js?features=es6 + - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js markdown_extensions: - admonition + - footnotes - codehilite: guess_lang: false - toc: permalink: true - - pymdownx.arithmatex + - pymdownx.arithmatex: + generic: true - pymdownx.caret - pymdownx.critic - pymdownx.details From 47352e17215731b02748ee05aedfd08fd7fc9c71 Mon Sep 17 00:00:00 2001 From: silvavn <37382997+silvavn@users.noreply.github.com> Date: Wed, 2 Sep 2020 20:37:45 -0600 Subject: [PATCH 3063/3421] Address issue #2487 Breakdown insllation instructions Make installation instructions shorter Separate Windows from the remainder Use tabs for better navigation Minor language improvements --- docs/docker.md | 349 ++++++--------------------------- docs/docker_compose.md | 44 +++++ docs/installation.md | 146 ++++---------- docs/windows_installation.md | 49 +++++ docs/without_docker_compose.md | 201 +++++++++++++++++++ mkdocs.yml | 10 +- 6 files changed, 405 insertions(+), 394 deletions(-) create mode 100644 docs/docker_compose.md create mode 100644 docs/windows_installation.md create mode 100644 docs/without_docker_compose.md diff --git a/docs/docker.md b/docs/docker.md index 92478088a..83f2d06e3 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -8,7 +8,7 @@ Start by downloading and installing Docker CE for your platform: * [Windows](https://docs.docker.com/docker-for-windows/install/) * [Linux](https://docs.docker.com/install/) -Optionally, [docker-compose](https://docs.docker.com/compose/install/) should be installed and available to follow the [docker quick start guide](#docker-quick-start). +Optionally, [`docker-compose`](https://docs.docker.com/compose/install/) should be installed and available to follow the [docker quick start guide](#docker-quick-start). Once you have Docker installed, simply prepare the config file (e.g. `config.json`) and run the image for `freqtrade` as explained below. @@ -17,325 +17,96 @@ Once you have Docker installed, simply prepare the config file (e.g. `config.jso Freqtrade provides an official Docker image on [Dockerhub](https://hub.docker.com/r/freqtradeorg/freqtrade/), as well as a [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) ready for usage. !!! Note - The following section assumes that docker and docker-compose is installed and available to the logged in user. - -!!! Note - All below comands use relative directories and will have to be executed from the directory containing the `docker-compose.yml` file. - -!!! Note "Docker on Raspberry" - If you're running freqtrade on a Raspberry PI, you must change the image from `freqtradeorg/freqtrade:master` to `freqtradeorg/freqtrade:master_pi` or `freqtradeorg/freqtrade:develop_pi`, otherwise the image will not work. + - The following section assumes that `docker` and `docker-compose` are installed and available to the logged in user. + - All below comands use relative directories and will have to be executed from the directory containing the `docker-compose.yml` file. + ### Docker quick start Create a new directory and place the [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) in this directory. -``` bash -mkdir ft_userdata -cd ft_userdata/ -# Download the docker-compose file from the repository -curl https://raw.githubusercontent.com/freqtrade/freqtrade/develop/docker-compose.yml -o docker-compose.yml +=== "PC/MAC/Linux" + ``` bash + mkdir ft_userdata + cd ft_userdata/ + # Download the docker-compose file from the repository + curl https://raw.githubusercontent.com/freqtrade/freqtrade/master/docker-compose.yml -o docker-compose.yml -# Pull the freqtrade image -docker-compose pull + # Pull the freqtrade image + docker-compose pull -# Create user directory structure -docker-compose run --rm freqtrade create-userdir --userdir user_data + # Create user directory structure + docker-compose run --rm freqtrade create-userdir --userdir user_data -# Create configuration - Requires answering interactive questions -docker-compose run --rm freqtrade new-config --config user_data/config.json -``` + # Create configuration - Requires answering interactive questions + docker-compose run --rm freqtrade new-config --config user_data/config.json + ``` -The above snippet creates a new directory called "ft_userdata", downloads the latest compose file and pulls the freqtrade image. -The last 2 steps in the snippet create the directory with user-data, as well as (interactively) the default configuration based on your selections. +=== "RaspberryPi" + ``` bash + mkdir ft_userdata + cd ft_userdata/ + # Download the docker-compose file from the repository + curl https://raw.githubusercontent.com/freqtrade/freqtrade/master_pi/docker-compose.yml -o docker-compose.yml -!!! Note + # Pull the freqtrade image + docker-compose pull + + # Create user directory structure + docker-compose run --rm freqtrade create-userdir --userdir user_data + + # Create configuration - Requires answering interactive questions + docker-compose run --rm freqtrade new-config --config user_data/config.json + ``` + +The above snippet creates a new directory called `ft_userdata`, downloads the latest compose file and pulls the freqtrade image. +The last 2 steps in the snippet create the directory with `user_data`, as well as (interactively) the default configuration based on your selections. + +!!! Question "How to edit the bot configuration?" You can edit the configuration at any time, which is available as `user_data/config.json` (within the directory `ft_userdata`) when using the above configuration. -#### Adding your strategy +#### Adding a custom strategy -The configuration is now available as `user_data/config.json`. -You should now copy your strategy to `user_data/strategies/` - and add the Strategy class name to the `docker-compose.yml` file, replacing `SampleStrategy`. If you wish to run the bot with the SampleStrategy, just leave it as it is. +1. The configuration is now available as `user_data/config.json` +2. Copy a custom strategy to the directory `user_data/strategies/` +3. add the Strategy' class name to the `docker-compose.yml` file -!!! Warning +The `SampleStrategy` is run by default. + +!!! Warning "`SampleStrategy` is just a demo!" The `SampleStrategy` is there for your reference and give you ideas for your own strategy. Please always backtest the strategy and use dry-run for some time before risking real money! Once this is done, you're ready to launch the bot in trading mode (Dry-run or Live-trading, depending on your answer to the corresponding question you made above). -``` bash -docker-compose up -d -``` +=== "Docker Compose" + ``` bash + docker-compose up -d + ``` #### Docker-compose logs -Logs will be written to `user_data/logs/freqtrade.log`. -Alternatively, you can check the latest logs using `docker-compose logs -f`. +Logs will be located at: `user_data/logs/freqtrade.log`. +You can check the latest log with the command `docker-compose logs -f`. #### Database -The database will be in the user_data directory as well, and will be called `user_data/tradesv3.sqlite`. +The database will be at: `user_data/tradesv3.sqlite` #### Updating freqtrade with docker-compose -To update freqtrade when using docker-compose is as simple as running the following 2 commands: +To update freqtrade when using `docker-compose` is as simple as running the following 2 commands: -``` bash -# Download the latest image -docker-compose pull -# Restart the image -docker-compose up -d -``` +=== "Docker Compose" + ``` bash + # Download the latest image + docker-compose pull + # Restart the image + docker-compose up -d + ``` This will first pull the latest image, and will then restart the container with the just pulled version. -!!! Note +!!! Warning "Check the Changelog" You should always check the changelog for breaking changes / manual interventions required and make sure the bot starts correctly after the update. -#### Going from here - -Advanced users may edit the docker-compose file further to include all possible options or arguments. - -All possible freqtrade arguments will be available by running `docker-compose run --rm freqtrade `. - -!!! Note "`docker-compose run --rm`" - Including `--rm` will clean up the container after completion, and is highly recommended for all modes except trading mode (running with `freqtrade trade` command). - -##### Example: Download data with docker-compose - -Download backtesting data for 5 days for the pair ETH/BTC and 1h timeframe from Binance. The data will be stored in the directory `user_data/data/` on the host. - -``` bash -docker-compose run --rm freqtrade download-data --pairs ETH/BTC --exchange binance --days 5 -t 1h -``` - -Head over to the [Data Downloading Documentation](data-download.md) for more details on downloading data. - -##### Example: Backtest with docker-compose - -Run backtesting in docker-containers for SampleStrategy and specified timerange of historical data, on 5m timeframe: - -``` bash -docker-compose run --rm freqtrade backtesting --config user_data/config.json --strategy SampleStrategy --timerange 20190801-20191001 -i 5m -``` - -Head over to the [Backtesting Documentation](backtesting.md) to learn more. - -#### Additional dependencies with docker-compose - -If your strategy requires dependencies not included in the default image (like [technical](https://github.com/freqtrade/technical)) - it will be necessary to build the image on your host. -For this, please create a Dockerfile containing installation steps for the additional dependencies (have a look at [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/Dockerfile.technical) for an example). - -You'll then also need to modify the `docker-compose.yml` file and uncomment the build step, as well as rename the image to avoid naming collisions. - -``` yaml - image: freqtrade_custom - build: - context: . - dockerfile: "./Dockerfile." -``` - -You can then run `docker-compose build` to build the docker image, and run it using the commands described above. - -## Freqtrade with docker without docker-compose - -!!! Warning - The below documentation is provided for completeness and assumes that you are somewhat familiar with running docker containers. If you're just starting out with docker, we recommend to follow the [Freqtrade with docker-compose](#freqtrade-with-docker-compose) instructions. - -### Download the official Freqtrade docker image - -Pull the image from docker hub. - -Branches / tags available can be checked out on [Dockerhub tags page](https://hub.docker.com/r/freqtradeorg/freqtrade/tags/). - -```bash -docker pull freqtradeorg/freqtrade:develop -# Optionally tag the repository so the run-commands remain shorter -docker tag freqtradeorg/freqtrade:develop freqtrade -``` - -To update the image, simply run the above commands again and restart your running container. - -Should you require additional libraries, please [build the image yourself](#build-your-own-docker-image). - -!!! Note "Docker image update frequency" - The official docker images with tags `master`, `develop` and `latest` are automatically rebuild once a week to keep the base image uptodate. - In addition to that, every merge to `develop` will trigger a rebuild for `develop` and `latest`. - -### Prepare the configuration files - -Even though you will use docker, you'll still need some files from the github repository. - -#### Clone the git repository - -Linux/Mac/Windows with WSL - -```bash -git clone https://github.com/freqtrade/freqtrade.git -``` - -Windows with docker - -```bash -git clone --config core.autocrlf=input https://github.com/freqtrade/freqtrade.git -``` - -#### Copy `config.json.example` to `config.json` - -```bash -cd freqtrade -cp -n config.json.example config.json -``` - -> To understand the configuration options, please refer to the [Bot Configuration](configuration.md) page. - -#### Create your database file - -Production - -```bash -touch tradesv3.sqlite -```` - -Dry-Run - -```bash -touch tradesv3.dryrun.sqlite -``` - -!!! Note - Make sure to use the path to this file when starting the bot in docker. - -### Build your own Docker image - -Best start by pulling the official docker image from dockerhub as explained [here](#download-the-official-docker-image) to speed up building. - -To add additional libraries to your docker image, best check out [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/Dockerfile.technical) which adds the [technical](https://github.com/freqtrade/technical) module to the image. - -```bash -docker build -t freqtrade -f Dockerfile.technical . -``` - -If you are developing using Docker, use `Dockerfile.develop` to build a dev Docker image, which will also set up develop dependencies: - -```bash -docker build -f Dockerfile.develop -t freqtrade-dev . -``` - -!!! Note - For security reasons, your configuration file will not be included in the image, you will need to bind mount it. It is also advised to bind mount an SQLite database file (see the "5. Run a restartable docker image" section) to keep it between updates. - -#### Verify the Docker image - -After the build process you can verify that the image was created with: - -```bash -docker images -``` - -The output should contain the freqtrade image. - -### Run the Docker image - -You can run a one-off container that is immediately deleted upon exiting with the following command (`config.json` must be in the current working directory): - -```bash -docker run --rm -v `pwd`/config.json:/freqtrade/config.json -it freqtrade -``` - -!!! Warning - In this example, the database will be created inside the docker instance and will be lost when you will refresh your image. - -#### Adjust timezone - -By default, the container will use UTC timezone. -Should you find this irritating please add the following to your docker commands: - -##### Linux - -``` bash --v /etc/timezone:/etc/timezone:ro - -# Complete command: -docker run --rm -v /etc/timezone:/etc/timezone:ro -v `pwd`/config.json:/freqtrade/config.json -it freqtrade -``` - -##### MacOS - -There is known issue in OSX Docker versions after 17.09.1, whereby `/etc/localtime` cannot be shared causing Docker to not start. A work-around for this is to start with the following cmd. - -```bash -docker run --rm -e TZ=`ls -la /etc/localtime | cut -d/ -f8-9` -v `pwd`/config.json:/freqtrade/config.json -it freqtrade -``` - -More information on this docker issue and work-around can be read [here](https://github.com/docker/for-mac/issues/2396). - -### Run a restartable docker image - -To run a restartable instance in the background (feel free to place your configuration and database files wherever it feels comfortable on your filesystem). - -#### Move your config file and database - -The following will assume that you place your configuration / database files to `~/.freqtrade`, which is a hidden directory in your home directory. Feel free to use a different directory and replace the directory in the upcomming commands. - -```bash -mkdir ~/.freqtrade -mv config.json ~/.freqtrade -mv tradesv3.sqlite ~/.freqtrade -``` - -#### Run the docker image - -```bash -docker run -d \ - --name freqtrade \ - -v ~/.freqtrade/config.json:/freqtrade/config.json \ - -v ~/.freqtrade/user_data/:/freqtrade/user_data \ - -v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \ - freqtrade trade --db-url sqlite:///tradesv3.sqlite --strategy MyAwesomeStrategy -``` - -!!! Note - When using docker, it's best to specify `--db-url` explicitly to ensure that the database URL and the mounted database file match. - -!!! Note - All available bot command line parameters can be added to the end of the `docker run` command. - -!!! Note - You can define a [restart policy](https://docs.docker.com/config/containers/start-containers-automatically/) in docker. It can be useful in some cases to use the `--restart unless-stopped` flag (crash of freqtrade or reboot of your system). - -### Monitor your Docker instance - -You can use the following commands to monitor and manage your container: - -```bash -docker logs freqtrade -docker logs -f freqtrade -docker restart freqtrade -docker stop freqtrade -docker start freqtrade -``` - -For more information on how to operate Docker, please refer to the [official Docker documentation](https://docs.docker.com/). - -!!! Note - You do not need to rebuild the image for configuration changes, it will suffice to edit `config.json` and restart the container. - -### Backtest with docker - -The following assumes that the download/setup of the docker image have been completed successfully. -Also, backtest-data should be available at `~/.freqtrade/user_data/`. - -```bash -docker run -d \ - --name freqtrade \ - -v /etc/localtime:/etc/localtime:ro \ - -v ~/.freqtrade/config.json:/freqtrade/config.json \ - -v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \ - -v ~/.freqtrade/user_data/:/freqtrade/user_data/ \ - freqtrade backtesting --strategy AwsomelyProfitableStrategy -``` - -Head over to the [Backtesting Documentation](backtesting.md) for more details. - -!!! Note - Additional bot command line parameters can be appended after the image name (`freqtrade` in the above example). diff --git a/docs/docker_compose.md b/docs/docker_compose.md new file mode 100644 index 000000000..302d3b358 --- /dev/null +++ b/docs/docker_compose.md @@ -0,0 +1,44 @@ +#### Editing the docker-compose file + +Advanced users may edit the docker-compose file further to include all possible options or arguments. + +All possible freqtrade arguments will be available by running `docker-compose run --rm freqtrade `. + +!!! Note "`docker-compose run --rm`" + Including `--rm` will clean up the container after completion, and is highly recommended for all modes except trading mode (running with `freqtrade trade` command). + +##### Example: Download data with docker-compose + +Download backtesting data for 5 days for the pair ETH/BTC and 1h timeframe from Binance. The data will be stored in the directory `user_data/data/` on the host. + +``` bash +docker-compose run --rm freqtrade download-data --pairs ETH/BTC --exchange binance --days 5 -t 1h +``` + +Head over to the [Data Downloading Documentation](data-download.md) for more details on downloading data. + +##### Example: Backtest with docker-compose + +Run backtesting in docker-containers for SampleStrategy and specified timerange of historical data, on 5m timeframe: + +``` bash +docker-compose run --rm freqtrade backtesting --config user_data/config.json --strategy SampleStrategy --timerange 20190801-20191001 -i 5m +``` + +Head over to the [Backtesting Documentation](backtesting.md) to learn more. + +#### Additional dependencies with docker-compose + +If your strategy requires dependencies not included in the default image (like [technical](https://github.com/freqtrade/technical)) - it will be necessary to build the image on your host. +For this, please create a Dockerfile containing installation steps for the additional dependencies (have a look at [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/Dockerfile.technical) for an example). + +You'll then also need to modify the `docker-compose.yml` file and uncomment the build step, as well as rename the image to avoid naming collisions. + +``` yaml + image: freqtrade_custom + build: + context: . + dockerfile: "./Dockerfile." +``` + +You can then run `docker-compose build` to build the docker image, and run it using the commands described above. \ No newline at end of file diff --git a/docs/installation.md b/docs/installation.md index c03be55d1..979679c9f 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -79,6 +79,20 @@ This option will hard reset your branch (only if you are on either `master` or ` DEPRECATED - use `freqtrade new-config -c config.json` instead. +### MacOS installation error + +Newer versions of MacOS may have installation failed with errors like `error: command 'g++' failed with exit status 1`. + +This error will require explicit installation of the SDK Headers, which are not installed by default in this version of MacOS. +For MacOS 10.14, this can be accomplished with the below command. + +``` bash +open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg +``` + +If this file is inexistant, then you're probably on a different version of MacOS, so you may need to consult the internet for specific resolution details. + + ------ ## Custom Installation @@ -89,36 +103,44 @@ OS Specific steps are listed first, the [Common](#common) section below is neces !!! Note Python3.6 or higher and the corresponding pip are assumed to be available. -### Linux - Ubuntu 16.04 +=== "Ubuntu 16.04" + #### Install necessary dependencies -#### Install necessary dependencies + ```bash + sudo apt-get update + sudo apt-get install build-essential git + ``` -```bash -sudo apt-get update -sudo apt-get install build-essential git -``` +=== "RaspberryPi/Raspbian" + The following assumes the latest [Raspbian Buster lite image](https://www.raspberrypi.org/downloads/raspbian/) from at least September 2019. + This image comes with python3.7 preinstalled, making it easy to get freqtrade up and running. -### Raspberry Pi / Raspbian + Tested using a Raspberry Pi 3 with the Raspbian Buster lite image, all updates applied. -The following assumes the latest [Raspbian Buster lite image](https://www.raspberrypi.org/downloads/raspbian/) from at least September 2019. -This image comes with python3.7 preinstalled, making it easy to get freqtrade up and running. + ``` bash + sudo apt-get install python3-venv libatlas-base-dev + git clone https://github.com/freqtrade/freqtrade.git + cd freqtrade -Tested using a Raspberry Pi 3 with the Raspbian Buster lite image, all updates applied. + bash setup.sh -i + ``` -``` bash -sudo apt-get install python3-venv libatlas-base-dev -git clone https://github.com/freqtrade/freqtrade.git -cd freqtrade + !!! Note "Installation duration" + Depending on your internet speed and the Raspberry Pi version, installation can take multiple hours to complete. -bash setup.sh -i -``` + !!! Note + The above does not install hyperopt dependencies. To install these, please use `python3 -m pip install -e .[hyperopt]`. + We do not advise to run hyperopt on a Raspberry Pi, since this is a very resource-heavy operation, which should be done on powerful machine. -!!! Note "Installation duration" - Depending on your internet speed and the Raspberry Pi version, installation can take multiple hours to complete. +=== "Anaconda" + Freqtrade can also be installed using Anaconda (or Miniconda). -!!! Note - The above does not install hyperopt dependencies. To install these, please use `python3 -m pip install -e .[hyperopt]`. - We do not advise to run hyperopt on a Raspberry Pi, since this is a very resource-heavy operation, which should be done on powerful machine. + !!! Note + This requires the [ta-lib](#1-install-ta-lib) C-library to be installed first. See below. + + ``` bash + conda env create -f environment.yml + ``` ### Common @@ -169,11 +191,6 @@ Clone the git repository: ```bash git clone https://github.com/freqtrade/freqtrade.git cd freqtrade -``` - -Optionally checkout the master branch to get the latest stable release: - -```bash git checkout master ``` @@ -212,83 +229,6 @@ On Linux, as an optional post-installation task, you may wish to setup the bot t ------ -## Using Conda - -Freqtrade can also be installed using Anaconda (or Miniconda). - -``` bash -conda env create -f environment.yml -``` - -!!! Note - This requires the [ta-lib](#1-install-ta-lib) C-library to be installed first. - -## Windows - -We recommend that Windows users use [Docker](docker.md) as this will work much easier and smoother (also more secure). - -If that is not possible, try using the Windows Linux subsystem (WSL) - for which the Ubuntu instructions should work. -If that is not available on your system, feel free to try the instructions below, which led to success for some. - -### Install freqtrade manually - -!!! Note - Make sure to use 64bit Windows and 64bit Python to avoid problems with backtesting or hyperopt due to the memory constraints 32bit applications have under Windows. - -!!! Hint - Using the [Anaconda Distribution](https://www.anaconda.com/distribution/) under Windows can greatly help with installation problems. Check out the [Conda section](#using-conda) in this document for more information. - -#### Clone the git repository - -```bash -git clone https://github.com/freqtrade/freqtrade.git -``` - -#### Install ta-lib - -Install ta-lib according to the [ta-lib documentation](https://github.com/mrjbq7/ta-lib#windows). - -As compiling from source on windows has heavy dependencies (requires a partial visual studio installation), there is also a repository of unofficial precompiled windows Wheels [here](https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib), which needs to be downloaded and installed using `pip install TA_Lib‑0.4.18‑cp38‑cp38‑win_amd64.whl` (make sure to use the version matching your python version) - -```cmd ->cd \path\freqtrade-develop ->python -m venv .env ->.env\Scripts\activate.bat -REM optionally install ta-lib from wheel -REM >pip install TA_Lib‑0.4.18‑cp38‑cp38‑win_amd64.whl ->pip install -r requirements.txt ->pip install -e . ->freqtrade -``` - -> Thanks [Owdr](https://github.com/Owdr) for the commands. Source: [Issue #222](https://github.com/freqtrade/freqtrade/issues/222) - -#### Error during installation under Windows - -``` bash -error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools -``` - -Unfortunately, many packages requiring compilation don't provide a pre-build wheel. It is therefore mandatory to have a C/C++ compiler installed and available for your python environment to use. - -The easiest way is to download install Microsoft Visual Studio Community [here](https://visualstudio.microsoft.com/downloads/) and make sure to install "Common Tools for Visual C++" to enable building c code on Windows. Unfortunately, this is a heavy download / dependency (~4Gb) so you might want to consider WSL or [docker](docker.md) first. - ---- - Now you have an environment ready, the next step is [Bot Configuration](configuration.md). -## Troubleshooting - -### MacOS installation error - -Newer versions of MacOS may have installation failed with errors like `error: command 'g++' failed with exit status 1`. - -This error will require explicit installation of the SDK Headers, which are not installed by default in this version of MacOS. -For MacOS 10.14, this can be accomplished with the below command. - -``` bash -open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -``` - -If this file is inexistant, then you're probably on a different version of MacOS, so you may need to consult the internet for specific resolution details. diff --git a/docs/windows_installation.md b/docs/windows_installation.md new file mode 100644 index 000000000..1cdb3d613 --- /dev/null +++ b/docs/windows_installation.md @@ -0,0 +1,49 @@ +We **strongly** recommend that Windows users use [Docker](docker.md) as this will work much easier and smoother (also more secure). + +If that is not possible, try using the Windows Linux subsystem (WSL) - for which the Ubuntu instructions should work. +Otherwise, try the instructions below. + +## Install freqtrade manually + +!!! Note + Make sure to use 64bit Windows and 64bit Python to avoid problems with backtesting or hyperopt due to the memory constraints 32bit applications have under Windows. + +!!! Hint + Using the [Anaconda Distribution](https://www.anaconda.com/distribution/) under Windows can greatly help with installation problems. Check out the [Conda section](#using-conda) in this document for more information. + +### 1. Clone the git repository + +```bash +git clone https://github.com/freqtrade/freqtrade.git +``` + +### 2. Install ta-lib + +Install ta-lib according to the [ta-lib documentation](https://github.com/mrjbq7/ta-lib#windows). + +As compiling from source on windows has heavy dependencies (requires a partial visual studio installation), there is also a repository of unofficial precompiled windows Wheels [here](https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib), which needs to be downloaded and installed using `pip install TA_Lib‑0.4.18‑cp38‑cp38‑win_amd64.whl` (make sure to use the version matching your python version) + +```cmd +>cd \path\freqtrade-develop +>python -m venv .env +>.env\Scripts\activate.bat +REM optionally install ta-lib from wheel +REM >pip install TA_Lib‑0.4.18‑cp38‑cp38‑win_amd64.whl +>pip install -r requirements.txt +>pip install -e . +>freqtrade +``` + +> Thanks [Owdr](https://github.com/Owdr) for the commands. Source: [Issue #222](https://github.com/freqtrade/freqtrade/issues/222) + +### Error during installation on Windows + +``` bash +error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools +``` + +Unfortunately, many packages requiring compilation don't provide a pre-build wheel. It is therefore mandatory to have a C/C++ compiler installed and available for your python environment to use. + +The easiest way is to download install Microsoft Visual Studio Community [here](https://visualstudio.microsoft.com/downloads/) and make sure to install "Common Tools for Visual C++" to enable building c code on Windows. Unfortunately, this is a heavy download / dependency (~4Gb) so you might want to consider WSL or [docker](docker.md) first. + +--- diff --git a/docs/without_docker_compose.md b/docs/without_docker_compose.md new file mode 100644 index 000000000..23994f38f --- /dev/null +++ b/docs/without_docker_compose.md @@ -0,0 +1,201 @@ +## Freqtrade with docker without docker-compose + +!!! Warning + The below documentation is provided for completeness and assumes that you are familiar with running docker containers. If you're just starting out with Docker, we recommend to follow the [Quickstart](docker.md) instructions. + +### Download the official Freqtrade docker image + +Pull the image from docker hub. + +Branches / tags available can be checked out on [Dockerhub tags page](https://hub.docker.com/r/freqtradeorg/freqtrade/tags/). + +```bash +docker pull freqtradeorg/freqtrade:master +# Optionally tag the repository so the run-commands remain shorter +docker tag freqtradeorg/freqtrade:master freqtrade +``` + +To update the image, simply run the above commands again and restart your running container. + +Should you require additional libraries, please [build the image yourself](#build-your-own-docker-image). + +!!! Note "Docker image update frequency" + The official docker images with tags `master`, `develop` and `latest` are automatically rebuild once a week to keep the base image uptodate. + In addition to that, every merge to `develop` will trigger a rebuild for `develop` and `latest`. + +### Prepare the configuration files + +Even though you will use docker, you'll still need some files from the github repository. + +#### Clone the git repository + +Linux/Mac/Windows with WSL + +```bash +git clone https://github.com/freqtrade/freqtrade.git +``` + +Windows with docker + +```bash +git clone --config core.autocrlf=input https://github.com/freqtrade/freqtrade.git +``` + +#### Copy `config.json.example` to `config.json` + +```bash +cd freqtrade +cp -n config.json.example config.json +``` + +> To understand the configuration options, please refer to the [Bot Configuration](configuration.md) page. + +#### Create your database file + +=== "Dry-Run" + ``` bash + touch tradesv3.dryrun.sqlite + ``` + +=== "Production" + ``` bash + touch tradesv3.sqlite + ``` + + +!!! Warning Database File Path + Make sure to use the path to the correct database file when starting the bot in Docker. + +### Build your own Docker image + +Best start by pulling the official docker image from dockerhub as explained [here](#download-the-official-docker-image) to speed up building. + +To add additional libraries to your docker image, best check out [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/Dockerfile.technical) which adds the [technical](https://github.com/freqtrade/technical) module to the image. + +```bash +docker build -t freqtrade -f Dockerfile.technical . +``` + +If you are developing using Docker, use `Dockerfile.develop` to build a dev Docker image, which will also set up develop dependencies: + +```bash +docker build -f Dockerfile.develop -t freqtrade-dev . +``` + +!!! Warning Include your config file manually + For security reasons, your configuration file will not be included in the image, you will need to bind mount it. It is also advised to bind mount an SQLite database file (see [5. Run a restartable docker image](#run-a-restartable-docker-image)") to keep it between updates. + +#### Verify the Docker image + +After the build process you can verify that the image was created with: + +```bash +docker images +``` + +The output should contain the freqtrade image. + +### Run the Docker image + +You can run a one-off container that is immediately deleted upon exiting with the following command (`config.json` must be in the current working directory): + +```bash +docker run --rm -v `pwd`/config.json:/freqtrade/config.json -it freqtrade +``` + +!!! Warning + In this example, the database will be created inside the docker instance and will be lost when you refresh your image. + +#### Adjust timezone + +By default, the container will use UTC timezone. +If you would like to change the timezone use the following commands: + +=== "Linux" + ``` bash + -v /etc/timezone:/etc/timezone:ro + + # Complete command: + docker run --rm -v /etc/timezone:/etc/timezone:ro -v `pwd`/config.json:/freqtrade/config.json -it freqtrade + ``` + +=== "MacOS" + ```bash + docker run --rm -e TZ=`ls -la /etc/localtime | cut -d/ -f8-9` -v `pwd`/config.json:/freqtrade/config.json -it freqtrade + ``` + +!!! Note MacOS Issues + The OSX Docker versions after 17.09.1 have a known issue whereby `/etc/localtime` cannot be shared causing Docker to not start.
              + A work-around for this is to start with the MacOS command above + More information on this docker issue and work-around can be read [here](https://github.com/docker/for-mac/issues/2396). + +### Run a restartable docker image + +To run a restartable instance in the background (feel free to place your configuration and database files wherever it feels comfortable on your filesystem). + +#### 1. Move your config file and database + +The following will assume that you place your configuration / database files to `~/.freqtrade`, which is a hidden directory in your home directory. Feel free to use a different directory and replace the directory in the upcomming commands. + +```bash +mkdir ~/.freqtrade +mv config.json ~/.freqtrade +mv tradesv3.sqlite ~/.freqtrade +``` + +#### 2. Run the docker image + +```bash +docker run -d \ + --name freqtrade \ + -v ~/.freqtrade/config.json:/freqtrade/config.json \ + -v ~/.freqtrade/user_data/:/freqtrade/user_data \ + -v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \ + freqtrade trade --db-url sqlite:///tradesv3.sqlite --strategy MyAwesomeStrategy +``` + +!!! Note + When using docker, it's best to specify `--db-url` explicitly to ensure that the database URL and the mounted database file match. + +!!! Note + All available bot command line parameters can be added to the end of the `docker run` command. + +!!! Note + You can define a [restart policy](https://docs.docker.com/config/containers/start-containers-automatically/) in docker. It can be useful in some cases to use the `--restart unless-stopped` flag (crash of freqtrade or reboot of your system). + +### Monitor your Docker instance + +You can use the following commands to monitor and manage your container: + +```bash +docker logs freqtrade +docker logs -f freqtrade +docker restart freqtrade +docker stop freqtrade +docker start freqtrade +``` + +For more information on how to operate Docker, please refer to the [official Docker documentation](https://docs.docker.com/). + +!!! Note + You do not need to rebuild the image for configuration changes, it will suffice to edit `config.json` and restart the container. + +### Backtest with docker + +The following assumes that the download/setup of the docker image have been completed successfully. +Also, backtest-data should be available at `~/.freqtrade/user_data/`. + +```bash +docker run -d \ + --name freqtrade \ + -v /etc/localtime:/etc/localtime:ro \ + -v ~/.freqtrade/config.json:/freqtrade/config.json \ + -v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \ + -v ~/.freqtrade/user_data/:/freqtrade/user_data/ \ + freqtrade backtesting --strategy AwsomelyProfitableStrategy +``` + +Head over to the [Backtesting Documentation](backtesting.md) for more details. + +!!! Note + Additional bot command line parameters can be appended after the image name (`freqtrade` in the above example). diff --git a/mkdocs.yml b/mkdocs.yml index 324dc46db..2750ed3a5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,8 +1,13 @@ site_name: Freqtrade nav: - Home: index.md - - Installation Docker: docker.md - - Installation: installation.md + - Installation Docker: + - Quickstart: docker.md + - Freqtrade with Docker Compose (Advanced): docker_compose.md + - Freqtrade without docker-compose: without_docker_compose.md + - Installation: + - Linux/MacOS/Raspberry: installation.md + - Windows: windows_installation.md - Freqtrade Basics: bot-basics.md - Configuration: configuration.md - Strategy Customization: strategy-customization.md @@ -59,6 +64,7 @@ markdown_extensions: - pymdownx.magiclink - pymdownx.mark - pymdownx.smartsymbols + - pymdownx.tabbed - pymdownx.superfences - pymdownx.tasklist: custom_checkbox: true From 5c5cf782f53597f27bf0c361f86268d1c07a8ebf Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 3 Sep 2020 19:29:48 +0200 Subject: [PATCH 3064/3421] Fix small bug with /daily if close_profit_abs is not yet filled --- freqtrade/rpc/rpc.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 802c8372b..b89a95ee8 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -224,7 +224,8 @@ class RPC: Trade.close_date >= profitday, Trade.close_date < (profitday + timedelta(days=1)) ]).order_by(Trade.close_date).all() - curdayprofit = sum(trade.close_profit_abs for trade in trades) + curdayprofit = sum( + trade.close_profit_abs for trade in trades if trade.close_profit_abs is not None) profit_days[profitday] = { 'amount': curdayprofit, 'trades': len(trades) From 27362046d474744da563d74bd370da70eb82cd3b Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 3 Sep 2020 19:33:34 +0200 Subject: [PATCH 3065/3421] Add documentation section about running docs locally --- docs/developer.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/developer.md b/docs/developer.md index 8bee1fd8e..111c7a96f 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -10,6 +10,15 @@ Documentation is available at [https://freqtrade.io](https://www.freqtrade.io/) Special fields for the documentation (like Note boxes, ...) can be found [here](https://squidfunk.github.io/mkdocs-material/extensions/admonition/). +To test the documentation locally use the following commands. + +``` bash +pip install -r docs/requirements-docs.txt +mkdocs serve +``` + +This will spin up a local server (usually on port 8000) so you can see if everything looks as you'd like it to. + ## Developer setup To configure a development environment, best use the `setup.sh` script and answer "y" when asked "Do you want to install dependencies for dev [y/N]? ". From ec9b51d60a49feda0ab4d8dbb477780ffe149bca Mon Sep 17 00:00:00 2001 From: Victor Silva <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 12:49:32 -0600 Subject: [PATCH 3066/3421] Update docs/edge.md Co-authored-by: Matthias --- docs/edge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index 182c47651..6d43b0ea9 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -13,7 +13,7 @@ The `Edge Positioning` module uses probability to calculate your win rate and ri Trading strategies are not perfect. They are frameworks that are susceptible to the market and its indicators. Because the market is not at all predictable, sometimes a strategy will win and sometimes the same strategy will lose. -To obtain an edge in the market, a strategy has to make more money than it loses. Marking money in trading is not only about *how often* the strategy makes or loses money. +To obtain an edge in the market, a strategy has to make more money than it loses. Making money in trading is not only about *how often* the strategy makes or loses money. !!! tip "It doesn't matter how often, but how much!" A bad strategy might make 1 penny in *ten* transactions but lose 1 dollar in *one* transaction. If one only checks the number of winning trades, it would be misleading to think that the strategy is actually making a profit. From 69349a9d8d047c762e567723637a68259a478bd2 Mon Sep 17 00:00:00 2001 From: Victor Silva <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 12:49:54 -0600 Subject: [PATCH 3067/3421] Update docs/edge.md Co-authored-by: Matthias --- docs/edge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index 6d43b0ea9..8fae683a5 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -82,7 +82,7 @@ Risk Reward Ratio (*R*) is a formula used to measure the expected gains of a giv $$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$ ??? Example "Worked example of $R$ calculation" - Let's say that you think that the price of *stonecoin* today is $10.0. You believe that, because they will start mining stonecoin it will go up to $15.0 tomorrow. There is the risk that the stone is too hard, and the GPUs can't mine it, so the price might go to $0 tomorrow. You are planning to invest $100.
              + Let's say that you think that the price of *stonecoin* today is $10.0. You believe that, because they will start mining stonecoin, it will go up to $15.0 tomorrow. There is the risk that the stone is too hard, and the GPUs can't mine it, so the price might go to $0 tomorrow. You are planning to invest $100.
              Your potential profit is calculated as:
              $\begin{aligned} \text{potential_profit} &= (\text{potential_price} - \text{cost_per_unit}) * \frac{\text{investment}}{\text{cost_per_unit}} \\ From 70eaf971cd55c45c9e27c8420f23e5c41a875ecc Mon Sep 17 00:00:00 2001 From: Victor Silva <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 12:50:23 -0600 Subject: [PATCH 3068/3421] Update docs/edge.md Co-authored-by: Matthias --- docs/edge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index 8fae683a5..7634718ae 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -77,7 +77,7 @@ Where $L$ is the lose rate, $N$ is the amount of trades made and, $T_{lose}$ is ### Risk Reward Ratio -Risk Reward Ratio (*R*) is a formula used to measure the expected gains of a given investment against the risk of loss. It is basically what you potentially win divided by what you potentially lose. Formally: +Risk Reward Ratio ($R$) is a formula used to measure the expected gains of a given investment against the risk of loss. It is basically what you potentially win divided by what you potentially lose. Formally: $$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$ From 5f9c449d8eecd8a1af79c2a1e7a3f5b897ea5eb6 Mon Sep 17 00:00:00 2001 From: Victor Silva <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 12:53:33 -0600 Subject: [PATCH 3069/3421] Update docs/edge.md Co-authored-by: Matthias --- docs/edge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index 7634718ae..e6b27a340 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -97,7 +97,7 @@ $$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$ \end{aligned}$
              What it effectivelly means is that the strategy have the potential to make $0.33 for each $1 invested. -On a long horizonte, that is, on many trades, we can calculate the risk reward by dividing the strategy' average profit on winning trades by the strategy' average loss on losing trades. We can calculate the average profit, $\mu_{win}$, as follows: +On a long horizon, that is, on many trades, we can calculate the risk reward by dividing the strategy' average profit on winning trades by the strategy' average loss on losing trades. We can calculate the average profit, $\mu_{win}$, as follows: $$ \text{average_profit} = \mu_{win} = \frac{\text{sum_of_profits}}{\text{count_winning_trades}} = \frac{\sum^{o \in T_{win}} o}{|T_{win}|} $$ From 08e35461209d47ab0b57b838da55add33d8a5575 Mon Sep 17 00:00:00 2001 From: Victor Silva <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 12:55:07 -0600 Subject: [PATCH 3070/3421] Update docs/edge.md Co-authored-by: Matthias --- docs/edge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index e6b27a340..8c8b230c9 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -105,7 +105,7 @@ Similarly, we can calculate the average loss, $\mu_{lose}$, as follows: $$ \text{average_loss} = \mu_{lose} = \frac{\text{sum_of_losses}}{\text{count_losing_trades}} = \frac{\sum^{o \in T_{lose}} o}{|T_{lose}|} $$ -Finally, we can calculate the Risk Reward ratio as follows: +Finally, we can calculate the Risk Reward ratio, $R$, as follows: $$ R = \frac{\text{average_profit}}{\text{average_loss}} = \frac{\mu_{win}}{\mu_{lose}}\\ $$ From 1f13a8b91d28d5f25579b2010e9b4246bece4a90 Mon Sep 17 00:00:00 2001 From: Victor Silva <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 12:55:49 -0600 Subject: [PATCH 3071/3421] Update docs/edge.md Co-authored-by: Matthias --- docs/edge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index 8c8b230c9..a5df45901 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -129,7 +129,7 @@ $$E = R * W - L$$ The expectancy worked out in the example above means that, on average, this strategy' trades will return 1.68 times the size of its losses. Said another way, the strategy makes $1.68 for every $1 it loses, on average. -You canThis is important for two reasons: First, it may seem obvious, but you know right away that you have a positive return. Second, you now have a number you can compare to other candidate systems to make decisions about which ones you employ. +This is important for two reasons: First, it may seem obvious, but you know right away that you have a positive return. Second, you now have a number you can compare to other candidate systems to make decisions about which ones you employ. It is important to remember that any system with an expectancy greater than 0 is profitable using past data. The key is finding one that will be profitable in the future. From 93d1ad5ed9569072a51678e3a3b2634be41bc8fd Mon Sep 17 00:00:00 2001 From: Victor Silva <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 12:56:54 -0600 Subject: [PATCH 3072/3421] Update docs/edge.md Co-authored-by: Matthias --- docs/edge.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index a5df45901..f7870ac1a 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -135,7 +135,8 @@ It is important to remember that any system with an expectancy greater than 0 is You can also use this value to evaluate the effectiveness of modifications to this system. -**NOTICE:** It's important to keep in mind that Edge is testing your expectancy using historical data, there's no guarantee that you will have a similar edge in the future. It's still vital to do this testing in order to build confidence in your methodology but be wary of "curve-fitting" your approach to the historical data as things are unlikely to play out the exact same way for future trades. +!!! Note + It's important to keep in mind that Edge is testing your expectancy using historical data, there's no guarantee that you will have a similar edge in the future. It's still vital to do this testing in order to build confidence in your methodology but be wary of "curve-fitting" your approach to the historical data as things are unlikely to play out the exact same way for future trades. ## How does it work? From 47f0e69072975469acabe808304f1a9491086db2 Mon Sep 17 00:00:00 2001 From: Victor Silva <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 12:57:15 -0600 Subject: [PATCH 3073/3421] Update docs/edge.md Co-authored-by: Matthias --- docs/edge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index f7870ac1a..593137c8d 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -149,7 +149,7 @@ Edge combines dynamic stoploss, dynamic positions, and whitelist generation into | XZC/ETH | -0.03 | 0.52 |1.359670 | 0.228 | | XZC/ETH | -0.04 | 0.51 |1.234539 | 0.117 | -The goal here is to find the best stoploss for the strategy in order to have the maximum expectancy. In the above example stoploss at $3% $leads to the maximum expectancy according to historical data. +The goal here is to find the best stoploss for the strategy in order to have the maximum expectancy. In the above example stoploss at $3%$ leads to the maximum expectancy according to historical data. Edge module then forces stoploss value it evaluated to your strategy dynamically. From 714264701c5bcc338ebee9b1dd8286e3d7cb90cd Mon Sep 17 00:00:00 2001 From: silvavn <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 13:11:04 -0600 Subject: [PATCH 3074/3421] Fixes typos --- docs/without_docker_compose.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/without_docker_compose.md b/docs/without_docker_compose.md index 23994f38f..3fe335cf0 100644 --- a/docs/without_docker_compose.md +++ b/docs/without_docker_compose.md @@ -63,7 +63,7 @@ cp -n config.json.example config.json ``` -!!! Warning Database File Path +!!! Warning "Database File Path" Make sure to use the path to the correct database file when starting the bot in Docker. ### Build your own Docker image @@ -82,7 +82,7 @@ If you are developing using Docker, use `Dockerfile.develop` to build a dev Dock docker build -f Dockerfile.develop -t freqtrade-dev . ``` -!!! Warning Include your config file manually +!!! Warning "Include your config file manually" For security reasons, your configuration file will not be included in the image, you will need to bind mount it. It is also advised to bind mount an SQLite database file (see [5. Run a restartable docker image](#run-a-restartable-docker-image)") to keep it between updates. #### Verify the Docker image @@ -124,7 +124,7 @@ If you would like to change the timezone use the following commands: docker run --rm -e TZ=`ls -la /etc/localtime | cut -d/ -f8-9` -v `pwd`/config.json:/freqtrade/config.json -it freqtrade ``` -!!! Note MacOS Issues +!!! Note "MacOS Issues" The OSX Docker versions after 17.09.1 have a known issue whereby `/etc/localtime` cannot be shared causing Docker to not start.
              A work-around for this is to start with the MacOS command above More information on this docker issue and work-around can be read [here](https://github.com/docker/for-mac/issues/2396). From f6a8dda8e5600ca8a95108013cb1903240085bec Mon Sep 17 00:00:00 2001 From: silvavn <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 13:12:43 -0600 Subject: [PATCH 3075/3421] Reorganize structure - Quickstart moved out of installation - Installation now contains only advanced modes. - Joined quickstart with Docker --- mkdocs.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 2750ed3a5..5d936687f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,11 +1,9 @@ site_name: Freqtrade nav: - Home: index.md - - Installation Docker: - - Quickstart: docker.md - - Freqtrade with Docker Compose (Advanced): docker_compose.md - - Freqtrade without docker-compose: without_docker_compose.md + - Quickstart with Docker: docker.md - Installation: + - Freqtrade without docker-compose: without_docker_compose.md - Linux/MacOS/Raspberry: installation.md - Windows: windows_installation.md - Freqtrade Basics: bot-basics.md From 66505bd9bf2f281417044b5259db345b4621b6c8 Mon Sep 17 00:00:00 2001 From: silvavn <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 13:18:15 -0600 Subject: [PATCH 3076/3421] Fixes Raspberri Pi Image config --- docs/docker.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/docker.md b/docs/docker.md index 83f2d06e3..9c8cc1683 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -47,7 +47,7 @@ Create a new directory and place the [docker-compose file](https://github.com/fr mkdir ft_userdata cd ft_userdata/ # Download the docker-compose file from the repository - curl https://raw.githubusercontent.com/freqtrade/freqtrade/master_pi/docker-compose.yml -o docker-compose.yml + curl https://raw.githubusercontent.com/freqtrade/freqtrade/master/docker-compose.yml -o docker-compose.yml # Pull the freqtrade image docker-compose pull @@ -59,6 +59,13 @@ Create a new directory and place the [docker-compose file](https://github.com/fr docker-compose run --rm freqtrade new-config --config user_data/config.json ``` + !!! Note "Change your docker Image" + You should change the docker image in your config file for your Raspeberry build to work properly. + ``` bash + image: freqtradeorg/freqtrade:master_pi + # image: freqtradeorg/freqtrade:develop_pi + ``` + The above snippet creates a new directory called `ft_userdata`, downloads the latest compose file and pulls the freqtrade image. The last 2 steps in the snippet create the directory with `user_data`, as well as (interactively) the default configuration based on your selections. From e6058b716b1be8711d54d9274b0509700fdda5dd Mon Sep 17 00:00:00 2001 From: silvavn <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 13:19:05 -0600 Subject: [PATCH 3077/3421] removes prolixity docker-compose --- docs/docker.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/docker.md b/docs/docker.md index 9c8cc1683..9f90502bf 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -104,13 +104,13 @@ The database will be at: `user_data/tradesv3.sqlite` To update freqtrade when using `docker-compose` is as simple as running the following 2 commands: -=== "Docker Compose" - ``` bash - # Download the latest image - docker-compose pull - # Restart the image - docker-compose up -d - ``` + +``` bash +# Download the latest image +docker-compose pull +# Restart the image +docker-compose up -d +``` This will first pull the latest image, and will then restart the container with the just pulled version. From 29fe2ffff74de8f1ee2f3ce1f53f1da4f6cbf960 Mon Sep 17 00:00:00 2001 From: silvavn <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 13:22:22 -0600 Subject: [PATCH 3078/3421] Added that the user can edit docker-compose.yml --- docs/docker.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/docker.md b/docs/docker.md index 9f90502bf..ae16fe922 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -60,7 +60,7 @@ Create a new directory and place the [docker-compose file](https://github.com/fr ``` !!! Note "Change your docker Image" - You should change the docker image in your config file for your Raspeberry build to work properly. + You should change the docker image in your config file for your Raspberry build to work properly. ``` bash image: freqtradeorg/freqtrade:master_pi # image: freqtradeorg/freqtrade:develop_pi @@ -72,6 +72,8 @@ The last 2 steps in the snippet create the directory with `user_data`, as well a !!! Question "How to edit the bot configuration?" You can edit the configuration at any time, which is available as `user_data/config.json` (within the directory `ft_userdata`) when using the above configuration. + You can also change the both Strategy and commands by editing the `docker-compose.yml` file. + #### Adding a custom strategy 1. The configuration is now available as `user_data/config.json` From 34b27d2f96808846e64430a9c19724519cfb5309 Mon Sep 17 00:00:00 2001 From: silvavn <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 13:32:07 -0600 Subject: [PATCH 3079/3421] Moving stuff around - Mac troubleshooting to the end - optional master checkout - Anaconda moved to the end --- docs/installation.md | 50 +++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 979679c9f..83dd2938c 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -38,7 +38,7 @@ This can be achieved with the following commands: ```bash git clone https://github.com/freqtrade/freqtrade.git cd freqtrade -git checkout master # Optional, see (1) +# git checkout master # Optional, see (1) ./setup.sh --install ``` @@ -79,18 +79,7 @@ This option will hard reset your branch (only if you are on either `master` or ` DEPRECATED - use `freqtrade new-config -c config.json` instead. -### MacOS installation error -Newer versions of MacOS may have installation failed with errors like `error: command 'g++' failed with exit status 1`. - -This error will require explicit installation of the SDK Headers, which are not installed by default in this version of MacOS. -For MacOS 10.14, this can be accomplished with the below command. - -``` bash -open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -``` - -If this file is inexistant, then you're probably on a different version of MacOS, so you may need to consult the internet for specific resolution details. ------ @@ -132,16 +121,6 @@ OS Specific steps are listed first, the [Common](#common) section below is neces The above does not install hyperopt dependencies. To install these, please use `python3 -m pip install -e .[hyperopt]`. We do not advise to run hyperopt on a Raspberry Pi, since this is a very resource-heavy operation, which should be done on powerful machine. -=== "Anaconda" - Freqtrade can also be installed using Anaconda (or Miniconda). - - !!! Note - This requires the [ta-lib](#1-install-ta-lib) C-library to be installed first. See below. - - ``` bash - conda env create -f environment.yml - ``` - ### Common #### 1. Install TA-Lib @@ -229,6 +208,33 @@ On Linux, as an optional post-installation task, you may wish to setup the bot t ------ +### Anaconda + +Freqtrade can also be installed using Anaconda (or Miniconda). + +!!! Note + This requires the [ta-lib](#1-install-ta-lib) C-library to be installed first. See below. + +``` bash +conda env create -f environment.yml +``` + +----- + Now you have an environment ready, the next step is [Bot Configuration](configuration.md). +----- + +### MacOS installation error + +Newer versions of MacOS may have installation failed with errors like `error: command 'g++' failed with exit status 1`. + +This error will require explicit installation of the SDK Headers, which are not installed by default in this version of MacOS. +For MacOS 10.14, this can be accomplished with the below command. + +``` bash +open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg +``` + +If this file is inexistant, then you're probably on a different version of MacOS, so you may need to consult the internet for specific resolution details. \ No newline at end of file From 275d8534323129124a1a5ed369fe7a38576e7251 Mon Sep 17 00:00:00 2001 From: silvavn <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 13:38:46 -0600 Subject: [PATCH 3080/3421] Updated W, L Formulas --- docs/edge.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/edge.md b/docs/edge.md index 593137c8d..e147cc15e 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -26,7 +26,7 @@ We raise the following question[^1]: a) A trade with 80% of chance of losing $100 and 20% chance of winning $200
              b) A trade with 100% of chance of losing $30 -??? Info "Answer" +???+ Info "Answer" The expected value of *a)* is smaller than the expected value of *b)*.
              Hence, *b*) represents a smaller loss in the long run.
              However, the answer is: *it depends* @@ -63,14 +63,14 @@ $$ T_{lose} = \{o \in O | o \leq 0\} $$ The win rate $W$ is the proportion of winning trades with respect to all the trades made by a strategy. We use the following function to compute the win rate: -$$W = \frac{\sum^{o \in T_{win}} o}{N}$$ +$$W = \frac{|T_{win}|}{N}$$ Where $W$ is the win rate, $N$ is the number of trades and, $T_{win}$ is the set of all trades where the strategy made money. Similarly, we can compute the rate of losing trades: $$ - L = \frac{\sum^{o \in T_{lose}} o}{N} + L = \frac{|T_{lose}|}{N} $$ Where $L$ is the lose rate, $N$ is the amount of trades made and, $T_{lose}$ is the set of all trades where the strategy lost money. Note that the above formula is the same as calculating $L = 1 – W$ or $W = 1 – L$ @@ -81,7 +81,7 @@ Risk Reward Ratio ($R$) is a formula used to measure the expected gains of a giv $$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$ -??? Example "Worked example of $R$ calculation" +???+ Example "Worked example of $R$ calculation" Let's say that you think that the price of *stonecoin* today is $10.0. You believe that, because they will start mining stonecoin, it will go up to $15.0 tomorrow. There is the risk that the stone is too hard, and the GPUs can't mine it, so the price might go to $0 tomorrow. You are planning to invest $100.
              Your potential profit is calculated as:
              $\begin{aligned} @@ -110,7 +110,7 @@ Finally, we can calculate the Risk Reward ratio, $R$, as follows: $$ R = \frac{\text{average_profit}}{\text{average_loss}} = \frac{\mu_{win}}{\mu_{lose}}\\ $$ -??? Example "Worked example of $R$ calculation using mean profit/loss" +???+ Example "Worked example of $R$ calculation using mean profit/loss" Let's say the strategy that we are using makes an average win $\mu_{win} = 2.06$ and an average loss $\mu_{loss} = 4.11$.
              We calculate the risk reward ratio as follows:
              $R = \frac{\mu_{win}}{\mu_{loss}} = \frac{2.06}{4.11} = 0.5012...$ From 32005b886a9cc5916e015cb1308ce3e78572db7b Mon Sep 17 00:00:00 2001 From: silvavn <37382997+silvavn@users.noreply.github.com> Date: Thu, 3 Sep 2020 13:39:38 -0600 Subject: [PATCH 3081/3421] small typo --- docs/edge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/edge.md b/docs/edge.md index e147cc15e..500c3c833 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -44,7 +44,7 @@ Edge positioning tries to answer the hard questions about risk/reward and positi Let's call $o$ the return of a single transaction $o$ where $o \in \mathbb{R}$. The collection $O = \{o_1, o_2, ..., o_N\}$ is the set of all returns of transactions made during a trading session. We say that $N$ is the cardinality of $O$, or, in lay terms, it is the number of transactions made in a trading session. !!! Example - In a session where a strategy made three transactions we can say that $O = \{3.5, -1, 15\}$. That means that $N = 3$ and $o_1 = 3.5$, $o_2 = -1$, $o = 15$. + In a session where a strategy made three transactions we can say that $O = \{3.5, -1, 15\}$. That means that $N = 3$ and $o_1 = 3.5$, $o_2 = -1$, $o_3 = 15$. A winning trade is a trade where a strategy *made* money. Making money means that the strategy closed the position in a value that returned a profit, after all deducted fees. Formally, a winning trade will have a return $o_i > 0$. Similarly, a losing trade will have a return $o_j \leq 0$. With that, we can discover the set of all winning trades, $T_{win}$, as follows: From 1406691945511db6c1de8f69b89f03fd1a09af75 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 4 Sep 2020 07:12:08 +0200 Subject: [PATCH 3082/3421] Rename files to have clearer paths --- docs/docker.md | 304 +++++++++++++++++++++------------ docs/docker_compose.md | 44 ----- docs/docker_quickstart.md | 162 ++++++++++++++++++ docs/installation.md | 13 +- docs/without_docker_compose.md | 201 ---------------------- mkdocs.yml | 6 +- 6 files changed, 364 insertions(+), 366 deletions(-) delete mode 100644 docs/docker_compose.md create mode 100644 docs/docker_quickstart.md delete mode 100644 docs/without_docker_compose.md diff --git a/docs/docker.md b/docs/docker.md index ae16fe922..3fe335cf0 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -1,121 +1,201 @@ -# Using Freqtrade with Docker +## Freqtrade with docker without docker-compose -## Install Docker +!!! Warning + The below documentation is provided for completeness and assumes that you are familiar with running docker containers. If you're just starting out with Docker, we recommend to follow the [Quickstart](docker.md) instructions. -Start by downloading and installing Docker CE for your platform: +### Download the official Freqtrade docker image -* [Mac](https://docs.docker.com/docker-for-mac/install/) -* [Windows](https://docs.docker.com/docker-for-windows/install/) -* [Linux](https://docs.docker.com/install/) +Pull the image from docker hub. -Optionally, [`docker-compose`](https://docs.docker.com/compose/install/) should be installed and available to follow the [docker quick start guide](#docker-quick-start). +Branches / tags available can be checked out on [Dockerhub tags page](https://hub.docker.com/r/freqtradeorg/freqtrade/tags/). -Once you have Docker installed, simply prepare the config file (e.g. `config.json`) and run the image for `freqtrade` as explained below. - -## Freqtrade with docker-compose - -Freqtrade provides an official Docker image on [Dockerhub](https://hub.docker.com/r/freqtradeorg/freqtrade/), as well as a [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) ready for usage. - -!!! Note - - The following section assumes that `docker` and `docker-compose` are installed and available to the logged in user. - - All below comands use relative directories and will have to be executed from the directory containing the `docker-compose.yml` file. - - -### Docker quick start - -Create a new directory and place the [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) in this directory. - -=== "PC/MAC/Linux" - ``` bash - mkdir ft_userdata - cd ft_userdata/ - # Download the docker-compose file from the repository - curl https://raw.githubusercontent.com/freqtrade/freqtrade/master/docker-compose.yml -o docker-compose.yml - - # Pull the freqtrade image - docker-compose pull - - # Create user directory structure - docker-compose run --rm freqtrade create-userdir --userdir user_data - - # Create configuration - Requires answering interactive questions - docker-compose run --rm freqtrade new-config --config user_data/config.json - ``` - -=== "RaspberryPi" - ``` bash - mkdir ft_userdata - cd ft_userdata/ - # Download the docker-compose file from the repository - curl https://raw.githubusercontent.com/freqtrade/freqtrade/master/docker-compose.yml -o docker-compose.yml - - # Pull the freqtrade image - docker-compose pull - - # Create user directory structure - docker-compose run --rm freqtrade create-userdir --userdir user_data - - # Create configuration - Requires answering interactive questions - docker-compose run --rm freqtrade new-config --config user_data/config.json - ``` - - !!! Note "Change your docker Image" - You should change the docker image in your config file for your Raspberry build to work properly. - ``` bash - image: freqtradeorg/freqtrade:master_pi - # image: freqtradeorg/freqtrade:develop_pi - ``` - -The above snippet creates a new directory called `ft_userdata`, downloads the latest compose file and pulls the freqtrade image. -The last 2 steps in the snippet create the directory with `user_data`, as well as (interactively) the default configuration based on your selections. - -!!! Question "How to edit the bot configuration?" - You can edit the configuration at any time, which is available as `user_data/config.json` (within the directory `ft_userdata`) when using the above configuration. - - You can also change the both Strategy and commands by editing the `docker-compose.yml` file. - -#### Adding a custom strategy - -1. The configuration is now available as `user_data/config.json` -2. Copy a custom strategy to the directory `user_data/strategies/` -3. add the Strategy' class name to the `docker-compose.yml` file - -The `SampleStrategy` is run by default. - -!!! Warning "`SampleStrategy` is just a demo!" - The `SampleStrategy` is there for your reference and give you ideas for your own strategy. - Please always backtest the strategy and use dry-run for some time before risking real money! - -Once this is done, you're ready to launch the bot in trading mode (Dry-run or Live-trading, depending on your answer to the corresponding question you made above). - -=== "Docker Compose" - ``` bash - docker-compose up -d - ``` - -#### Docker-compose logs - -Logs will be located at: `user_data/logs/freqtrade.log`. -You can check the latest log with the command `docker-compose logs -f`. - -#### Database - -The database will be at: `user_data/tradesv3.sqlite` - -#### Updating freqtrade with docker-compose - -To update freqtrade when using `docker-compose` is as simple as running the following 2 commands: - - -``` bash -# Download the latest image -docker-compose pull -# Restart the image -docker-compose up -d +```bash +docker pull freqtradeorg/freqtrade:master +# Optionally tag the repository so the run-commands remain shorter +docker tag freqtradeorg/freqtrade:master freqtrade ``` -This will first pull the latest image, and will then restart the container with the just pulled version. +To update the image, simply run the above commands again and restart your running container. -!!! Warning "Check the Changelog" - You should always check the changelog for breaking changes / manual interventions required and make sure the bot starts correctly after the update. +Should you require additional libraries, please [build the image yourself](#build-your-own-docker-image). +!!! Note "Docker image update frequency" + The official docker images with tags `master`, `develop` and `latest` are automatically rebuild once a week to keep the base image uptodate. + In addition to that, every merge to `develop` will trigger a rebuild for `develop` and `latest`. + +### Prepare the configuration files + +Even though you will use docker, you'll still need some files from the github repository. + +#### Clone the git repository + +Linux/Mac/Windows with WSL + +```bash +git clone https://github.com/freqtrade/freqtrade.git +``` + +Windows with docker + +```bash +git clone --config core.autocrlf=input https://github.com/freqtrade/freqtrade.git +``` + +#### Copy `config.json.example` to `config.json` + +```bash +cd freqtrade +cp -n config.json.example config.json +``` + +> To understand the configuration options, please refer to the [Bot Configuration](configuration.md) page. + +#### Create your database file + +=== "Dry-Run" + ``` bash + touch tradesv3.dryrun.sqlite + ``` + +=== "Production" + ``` bash + touch tradesv3.sqlite + ``` + + +!!! Warning "Database File Path" + Make sure to use the path to the correct database file when starting the bot in Docker. + +### Build your own Docker image + +Best start by pulling the official docker image from dockerhub as explained [here](#download-the-official-docker-image) to speed up building. + +To add additional libraries to your docker image, best check out [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/Dockerfile.technical) which adds the [technical](https://github.com/freqtrade/technical) module to the image. + +```bash +docker build -t freqtrade -f Dockerfile.technical . +``` + +If you are developing using Docker, use `Dockerfile.develop` to build a dev Docker image, which will also set up develop dependencies: + +```bash +docker build -f Dockerfile.develop -t freqtrade-dev . +``` + +!!! Warning "Include your config file manually" + For security reasons, your configuration file will not be included in the image, you will need to bind mount it. It is also advised to bind mount an SQLite database file (see [5. Run a restartable docker image](#run-a-restartable-docker-image)") to keep it between updates. + +#### Verify the Docker image + +After the build process you can verify that the image was created with: + +```bash +docker images +``` + +The output should contain the freqtrade image. + +### Run the Docker image + +You can run a one-off container that is immediately deleted upon exiting with the following command (`config.json` must be in the current working directory): + +```bash +docker run --rm -v `pwd`/config.json:/freqtrade/config.json -it freqtrade +``` + +!!! Warning + In this example, the database will be created inside the docker instance and will be lost when you refresh your image. + +#### Adjust timezone + +By default, the container will use UTC timezone. +If you would like to change the timezone use the following commands: + +=== "Linux" + ``` bash + -v /etc/timezone:/etc/timezone:ro + + # Complete command: + docker run --rm -v /etc/timezone:/etc/timezone:ro -v `pwd`/config.json:/freqtrade/config.json -it freqtrade + ``` + +=== "MacOS" + ```bash + docker run --rm -e TZ=`ls -la /etc/localtime | cut -d/ -f8-9` -v `pwd`/config.json:/freqtrade/config.json -it freqtrade + ``` + +!!! Note "MacOS Issues" + The OSX Docker versions after 17.09.1 have a known issue whereby `/etc/localtime` cannot be shared causing Docker to not start.
              + A work-around for this is to start with the MacOS command above + More information on this docker issue and work-around can be read [here](https://github.com/docker/for-mac/issues/2396). + +### Run a restartable docker image + +To run a restartable instance in the background (feel free to place your configuration and database files wherever it feels comfortable on your filesystem). + +#### 1. Move your config file and database + +The following will assume that you place your configuration / database files to `~/.freqtrade`, which is a hidden directory in your home directory. Feel free to use a different directory and replace the directory in the upcomming commands. + +```bash +mkdir ~/.freqtrade +mv config.json ~/.freqtrade +mv tradesv3.sqlite ~/.freqtrade +``` + +#### 2. Run the docker image + +```bash +docker run -d \ + --name freqtrade \ + -v ~/.freqtrade/config.json:/freqtrade/config.json \ + -v ~/.freqtrade/user_data/:/freqtrade/user_data \ + -v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \ + freqtrade trade --db-url sqlite:///tradesv3.sqlite --strategy MyAwesomeStrategy +``` + +!!! Note + When using docker, it's best to specify `--db-url` explicitly to ensure that the database URL and the mounted database file match. + +!!! Note + All available bot command line parameters can be added to the end of the `docker run` command. + +!!! Note + You can define a [restart policy](https://docs.docker.com/config/containers/start-containers-automatically/) in docker. It can be useful in some cases to use the `--restart unless-stopped` flag (crash of freqtrade or reboot of your system). + +### Monitor your Docker instance + +You can use the following commands to monitor and manage your container: + +```bash +docker logs freqtrade +docker logs -f freqtrade +docker restart freqtrade +docker stop freqtrade +docker start freqtrade +``` + +For more information on how to operate Docker, please refer to the [official Docker documentation](https://docs.docker.com/). + +!!! Note + You do not need to rebuild the image for configuration changes, it will suffice to edit `config.json` and restart the container. + +### Backtest with docker + +The following assumes that the download/setup of the docker image have been completed successfully. +Also, backtest-data should be available at `~/.freqtrade/user_data/`. + +```bash +docker run -d \ + --name freqtrade \ + -v /etc/localtime:/etc/localtime:ro \ + -v ~/.freqtrade/config.json:/freqtrade/config.json \ + -v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \ + -v ~/.freqtrade/user_data/:/freqtrade/user_data/ \ + freqtrade backtesting --strategy AwsomelyProfitableStrategy +``` + +Head over to the [Backtesting Documentation](backtesting.md) for more details. + +!!! Note + Additional bot command line parameters can be appended after the image name (`freqtrade` in the above example). diff --git a/docs/docker_compose.md b/docs/docker_compose.md deleted file mode 100644 index 302d3b358..000000000 --- a/docs/docker_compose.md +++ /dev/null @@ -1,44 +0,0 @@ -#### Editing the docker-compose file - -Advanced users may edit the docker-compose file further to include all possible options or arguments. - -All possible freqtrade arguments will be available by running `docker-compose run --rm freqtrade `. - -!!! Note "`docker-compose run --rm`" - Including `--rm` will clean up the container after completion, and is highly recommended for all modes except trading mode (running with `freqtrade trade` command). - -##### Example: Download data with docker-compose - -Download backtesting data for 5 days for the pair ETH/BTC and 1h timeframe from Binance. The data will be stored in the directory `user_data/data/` on the host. - -``` bash -docker-compose run --rm freqtrade download-data --pairs ETH/BTC --exchange binance --days 5 -t 1h -``` - -Head over to the [Data Downloading Documentation](data-download.md) for more details on downloading data. - -##### Example: Backtest with docker-compose - -Run backtesting in docker-containers for SampleStrategy and specified timerange of historical data, on 5m timeframe: - -``` bash -docker-compose run --rm freqtrade backtesting --config user_data/config.json --strategy SampleStrategy --timerange 20190801-20191001 -i 5m -``` - -Head over to the [Backtesting Documentation](backtesting.md) to learn more. - -#### Additional dependencies with docker-compose - -If your strategy requires dependencies not included in the default image (like [technical](https://github.com/freqtrade/technical)) - it will be necessary to build the image on your host. -For this, please create a Dockerfile containing installation steps for the additional dependencies (have a look at [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/Dockerfile.technical) for an example). - -You'll then also need to modify the `docker-compose.yml` file and uncomment the build step, as well as rename the image to avoid naming collisions. - -``` yaml - image: freqtrade_custom - build: - context: . - dockerfile: "./Dockerfile." -``` - -You can then run `docker-compose build` to build the docker image, and run it using the commands described above. \ No newline at end of file diff --git a/docs/docker_quickstart.md b/docs/docker_quickstart.md new file mode 100644 index 000000000..c033e827b --- /dev/null +++ b/docs/docker_quickstart.md @@ -0,0 +1,162 @@ +# Using Freqtrade with Docker + +## Install Docker + +Start by downloading and installing Docker CE for your platform: + +* [Mac](https://docs.docker.com/docker-for-mac/install/) +* [Windows](https://docs.docker.com/docker-for-windows/install/) +* [Linux](https://docs.docker.com/install/) + +Optionally, [`docker-compose`](https://docs.docker.com/compose/install/) should be installed and available to follow the [docker quick start guide](#docker-quick-start). + +Once you have Docker installed, simply prepare the config file (e.g. `config.json`) and run the image for `freqtrade` as explained below. + +## Freqtrade with docker-compose + +Freqtrade provides an official Docker image on [Dockerhub](https://hub.docker.com/r/freqtradeorg/freqtrade/), as well as a [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) ready for usage. + +!!! Note + - The following section assumes that `docker` and `docker-compose` are installed and available to the logged in user. + - All below commands use relative directories and will have to be executed from the directory containing the `docker-compose.yml` file. + +### Docker quick start + +Create a new directory and place the [docker-compose file](https://github.com/freqtrade/freqtrade/blob/develop/docker-compose.yml) in this directory. + +=== "PC/MAC/Linux" + ``` bash + mkdir ft_userdata + cd ft_userdata/ + # Download the docker-compose file from the repository + curl https://raw.githubusercontent.com/freqtrade/freqtrade/master/docker-compose.yml -o docker-compose.yml + + # Pull the freqtrade image + docker-compose pull + + # Create user directory structure + docker-compose run --rm freqtrade create-userdir --userdir user_data + + # Create configuration - Requires answering interactive questions + docker-compose run --rm freqtrade new-config --config user_data/config.json + ``` + +=== "RaspberryPi" + ``` bash + mkdir ft_userdata + cd ft_userdata/ + # Download the docker-compose file from the repository + curl https://raw.githubusercontent.com/freqtrade/freqtrade/master/docker-compose.yml -o docker-compose.yml + + # Pull the freqtrade image + docker-compose pull + + # Create user directory structure + docker-compose run --rm freqtrade create-userdir --userdir user_data + + # Create configuration - Requires answering interactive questions + docker-compose run --rm freqtrade new-config --config user_data/config.json + ``` + + !!! Note "Change your docker Image" + You have to change the docker image in the docker-compose file for your Raspberry build to work properly. + ``` yml + image: freqtradeorg/freqtrade:master_pi + # image: freqtradeorg/freqtrade:develop_pi + ``` + +The above snippet creates a new directory called `ft_userdata`, downloads the latest compose file and pulls the freqtrade image. +The last 2 steps in the snippet create the directory with `user_data`, as well as (interactively) the default configuration based on your selections. + +!!! Question "How to edit the bot configuration?" + You can edit the configuration at any time, which is available as `user_data/config.json` (within the directory `ft_userdata`) when using the above configuration. + + You can also change the both Strategy and commands by editing the `docker-compose.yml` file. + +#### Adding a custom strategy + +1. The configuration is now available as `user_data/config.json` +2. Copy a custom strategy to the directory `user_data/strategies/` +3. add the Strategy' class name to the `docker-compose.yml` file + +The `SampleStrategy` is run by default. + +!!! Warning "`SampleStrategy` is just a demo!" + The `SampleStrategy` is there for your reference and give you ideas for your own strategy. + Please always backtest the strategy and use dry-run for some time before risking real money! + +Once this is done, you're ready to launch the bot in trading mode (Dry-run or Live-trading, depending on your answer to the corresponding question you made above). + +``` bash +docker-compose up -d +``` + +#### Docker-compose logs + +Logs will be located at: `user_data/logs/freqtrade.log`. +You can check the latest log with the command `docker-compose logs -f`. + +#### Database + +The database will be at: `user_data/tradesv3.sqlite` + +#### Updating freqtrade with docker-compose + +To update freqtrade when using `docker-compose` is as simple as running the following 2 commands: + +``` bash +# Download the latest image +docker-compose pull +# Restart the image +docker-compose up -d +``` + +This will first pull the latest image, and will then restart the container with the just pulled version. + +!!! Warning "Check the Changelog" + You should always check the changelog for breaking changes / manual interventions required and make sure the bot starts correctly after the update. + +### Editing the docker-compose file + +Advanced users may edit the docker-compose file further to include all possible options or arguments. + +All possible freqtrade arguments will be available by running `docker-compose run --rm freqtrade `. + +!!! Note "`docker-compose run --rm`" + Including `--rm` will clean up the container after completion, and is highly recommended for all modes except trading mode (running with `freqtrade trade` command). + +#### Example: Download data with docker-compose + +Download backtesting data for 5 days for the pair ETH/BTC and 1h timeframe from Binance. The data will be stored in the directory `user_data/data/` on the host. + +``` bash +docker-compose run --rm freqtrade download-data --pairs ETH/BTC --exchange binance --days 5 -t 1h +``` + +Head over to the [Data Downloading Documentation](data-download.md) for more details on downloading data. + +#### Example: Backtest with docker-compose + +Run backtesting in docker-containers for SampleStrategy and specified timerange of historical data, on 5m timeframe: + +``` bash +docker-compose run --rm freqtrade backtesting --config user_data/config.json --strategy SampleStrategy --timerange 20190801-20191001 -i 5m +``` + +Head over to the [Backtesting Documentation](backtesting.md) to learn more. + +### Additional dependencies with docker-compose + +If your strategy requires dependencies not included in the default image (like [technical](https://github.com/freqtrade/technical)) - it will be necessary to build the image on your host. +For this, please create a Dockerfile containing installation steps for the additional dependencies (have a look at [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/Dockerfile.technical) for an example). + +You'll then also need to modify the `docker-compose.yml` file and uncomment the build step, as well as rename the image to avoid naming collisions. + +``` yaml + image: freqtrade_custom + build: + context: . + dockerfile: "./Dockerfile." +``` + +You can then run `docker-compose build` to build the docker image, and run it using the commands described above. diff --git a/docs/installation.md b/docs/installation.md index 83dd2938c..baa4a64d7 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -220,11 +220,7 @@ conda env create -f environment.yml ``` ----- - -Now you have an environment ready, the next step is -[Bot Configuration](configuration.md). - ------ +## Troubleshooting ### MacOS installation error @@ -237,4 +233,9 @@ For MacOS 10.14, this can be accomplished with the below command. open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg ``` -If this file is inexistant, then you're probably on a different version of MacOS, so you may need to consult the internet for specific resolution details. \ No newline at end of file +If this file is inexistent, then you're probably on a different version of MacOS, so you may need to consult the internet for specific resolution details. + +----- + +Now you have an environment ready, the next step is +[Bot Configuration](configuration.md). diff --git a/docs/without_docker_compose.md b/docs/without_docker_compose.md deleted file mode 100644 index 3fe335cf0..000000000 --- a/docs/without_docker_compose.md +++ /dev/null @@ -1,201 +0,0 @@ -## Freqtrade with docker without docker-compose - -!!! Warning - The below documentation is provided for completeness and assumes that you are familiar with running docker containers. If you're just starting out with Docker, we recommend to follow the [Quickstart](docker.md) instructions. - -### Download the official Freqtrade docker image - -Pull the image from docker hub. - -Branches / tags available can be checked out on [Dockerhub tags page](https://hub.docker.com/r/freqtradeorg/freqtrade/tags/). - -```bash -docker pull freqtradeorg/freqtrade:master -# Optionally tag the repository so the run-commands remain shorter -docker tag freqtradeorg/freqtrade:master freqtrade -``` - -To update the image, simply run the above commands again and restart your running container. - -Should you require additional libraries, please [build the image yourself](#build-your-own-docker-image). - -!!! Note "Docker image update frequency" - The official docker images with tags `master`, `develop` and `latest` are automatically rebuild once a week to keep the base image uptodate. - In addition to that, every merge to `develop` will trigger a rebuild for `develop` and `latest`. - -### Prepare the configuration files - -Even though you will use docker, you'll still need some files from the github repository. - -#### Clone the git repository - -Linux/Mac/Windows with WSL - -```bash -git clone https://github.com/freqtrade/freqtrade.git -``` - -Windows with docker - -```bash -git clone --config core.autocrlf=input https://github.com/freqtrade/freqtrade.git -``` - -#### Copy `config.json.example` to `config.json` - -```bash -cd freqtrade -cp -n config.json.example config.json -``` - -> To understand the configuration options, please refer to the [Bot Configuration](configuration.md) page. - -#### Create your database file - -=== "Dry-Run" - ``` bash - touch tradesv3.dryrun.sqlite - ``` - -=== "Production" - ``` bash - touch tradesv3.sqlite - ``` - - -!!! Warning "Database File Path" - Make sure to use the path to the correct database file when starting the bot in Docker. - -### Build your own Docker image - -Best start by pulling the official docker image from dockerhub as explained [here](#download-the-official-docker-image) to speed up building. - -To add additional libraries to your docker image, best check out [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/Dockerfile.technical) which adds the [technical](https://github.com/freqtrade/technical) module to the image. - -```bash -docker build -t freqtrade -f Dockerfile.technical . -``` - -If you are developing using Docker, use `Dockerfile.develop` to build a dev Docker image, which will also set up develop dependencies: - -```bash -docker build -f Dockerfile.develop -t freqtrade-dev . -``` - -!!! Warning "Include your config file manually" - For security reasons, your configuration file will not be included in the image, you will need to bind mount it. It is also advised to bind mount an SQLite database file (see [5. Run a restartable docker image](#run-a-restartable-docker-image)") to keep it between updates. - -#### Verify the Docker image - -After the build process you can verify that the image was created with: - -```bash -docker images -``` - -The output should contain the freqtrade image. - -### Run the Docker image - -You can run a one-off container that is immediately deleted upon exiting with the following command (`config.json` must be in the current working directory): - -```bash -docker run --rm -v `pwd`/config.json:/freqtrade/config.json -it freqtrade -``` - -!!! Warning - In this example, the database will be created inside the docker instance and will be lost when you refresh your image. - -#### Adjust timezone - -By default, the container will use UTC timezone. -If you would like to change the timezone use the following commands: - -=== "Linux" - ``` bash - -v /etc/timezone:/etc/timezone:ro - - # Complete command: - docker run --rm -v /etc/timezone:/etc/timezone:ro -v `pwd`/config.json:/freqtrade/config.json -it freqtrade - ``` - -=== "MacOS" - ```bash - docker run --rm -e TZ=`ls -la /etc/localtime | cut -d/ -f8-9` -v `pwd`/config.json:/freqtrade/config.json -it freqtrade - ``` - -!!! Note "MacOS Issues" - The OSX Docker versions after 17.09.1 have a known issue whereby `/etc/localtime` cannot be shared causing Docker to not start.
              - A work-around for this is to start with the MacOS command above - More information on this docker issue and work-around can be read [here](https://github.com/docker/for-mac/issues/2396). - -### Run a restartable docker image - -To run a restartable instance in the background (feel free to place your configuration and database files wherever it feels comfortable on your filesystem). - -#### 1. Move your config file and database - -The following will assume that you place your configuration / database files to `~/.freqtrade`, which is a hidden directory in your home directory. Feel free to use a different directory and replace the directory in the upcomming commands. - -```bash -mkdir ~/.freqtrade -mv config.json ~/.freqtrade -mv tradesv3.sqlite ~/.freqtrade -``` - -#### 2. Run the docker image - -```bash -docker run -d \ - --name freqtrade \ - -v ~/.freqtrade/config.json:/freqtrade/config.json \ - -v ~/.freqtrade/user_data/:/freqtrade/user_data \ - -v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \ - freqtrade trade --db-url sqlite:///tradesv3.sqlite --strategy MyAwesomeStrategy -``` - -!!! Note - When using docker, it's best to specify `--db-url` explicitly to ensure that the database URL and the mounted database file match. - -!!! Note - All available bot command line parameters can be added to the end of the `docker run` command. - -!!! Note - You can define a [restart policy](https://docs.docker.com/config/containers/start-containers-automatically/) in docker. It can be useful in some cases to use the `--restart unless-stopped` flag (crash of freqtrade or reboot of your system). - -### Monitor your Docker instance - -You can use the following commands to monitor and manage your container: - -```bash -docker logs freqtrade -docker logs -f freqtrade -docker restart freqtrade -docker stop freqtrade -docker start freqtrade -``` - -For more information on how to operate Docker, please refer to the [official Docker documentation](https://docs.docker.com/). - -!!! Note - You do not need to rebuild the image for configuration changes, it will suffice to edit `config.json` and restart the container. - -### Backtest with docker - -The following assumes that the download/setup of the docker image have been completed successfully. -Also, backtest-data should be available at `~/.freqtrade/user_data/`. - -```bash -docker run -d \ - --name freqtrade \ - -v /etc/localtime:/etc/localtime:ro \ - -v ~/.freqtrade/config.json:/freqtrade/config.json \ - -v ~/.freqtrade/tradesv3.sqlite:/freqtrade/tradesv3.sqlite \ - -v ~/.freqtrade/user_data/:/freqtrade/user_data/ \ - freqtrade backtesting --strategy AwsomelyProfitableStrategy -``` - -Head over to the [Backtesting Documentation](backtesting.md) for more details. - -!!! Note - Additional bot command line parameters can be appended after the image name (`freqtrade` in the above example). diff --git a/mkdocs.yml b/mkdocs.yml index 5d936687f..26494ae45 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,9 +1,9 @@ site_name: Freqtrade nav: - Home: index.md - - Quickstart with Docker: docker.md - - Installation: - - Freqtrade without docker-compose: without_docker_compose.md + - Quickstart with Docker: docker_quickstart.md + - Installation: + - Docker without docker-compose: docker.md - Linux/MacOS/Raspberry: installation.md - Windows: windows_installation.md - Freqtrade Basics: bot-basics.md From bc5cc48f67ddb494ad320e93817e7f8f7e44606b Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 4 Sep 2020 07:28:21 +0200 Subject: [PATCH 3083/3421] Adjust windows docs, fix failing doc-test --- docs/windows_installation.md | 28 ++++++++++++++++++---------- tests/test_docs.sh | 3 +-- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/docs/windows_installation.md b/docs/windows_installation.md index 1cdb3d613..f7900d85a 100644 --- a/docs/windows_installation.md +++ b/docs/windows_installation.md @@ -9,7 +9,7 @@ Otherwise, try the instructions below. Make sure to use 64bit Windows and 64bit Python to avoid problems with backtesting or hyperopt due to the memory constraints 32bit applications have under Windows. !!! Hint - Using the [Anaconda Distribution](https://www.anaconda.com/distribution/) under Windows can greatly help with installation problems. Check out the [Conda section](#using-conda) in this document for more information. + Using the [Anaconda Distribution](https://www.anaconda.com/distribution/) under Windows can greatly help with installation problems. Check out the [Anaconda installation section](installation.md#Anaconda) in this document for more information. ### 1. Clone the git repository @@ -23,17 +23,25 @@ Install ta-lib according to the [ta-lib documentation](https://github.com/mrjbq7 As compiling from source on windows has heavy dependencies (requires a partial visual studio installation), there is also a repository of unofficial precompiled windows Wheels [here](https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib), which needs to be downloaded and installed using `pip install TA_Lib‑0.4.18‑cp38‑cp38‑win_amd64.whl` (make sure to use the version matching your python version) -```cmd ->cd \path\freqtrade-develop ->python -m venv .env ->.env\Scripts\activate.bat -REM optionally install ta-lib from wheel -REM >pip install TA_Lib‑0.4.18‑cp38‑cp38‑win_amd64.whl ->pip install -r requirements.txt ->pip install -e . ->freqtrade +Freqtrade provides these dependencies for the latest 2 Python versions (3.7 and 3.8) and for 64bit Windows. +Other versions must be downloaded from the above link. + +``` powershell +cd \path\freqtrade +python -m venv .env +.env\Scripts\activate.ps1 +# optionally install ta-lib from wheel +# Eventually adjust the below filename to match the downloaded wheel +pip install build_helpes/TA_Lib‑0.4.18‑cp38‑cp38‑win_amd64.whl +pip install -r requirements.txt +pip install -e . +freqtrade ``` +!!! Note "Use Powershell" + The above installation script assumes you're using powershell on a 64bit windows. + Commands for the legacy CMD windows console may differ. + > Thanks [Owdr](https://github.com/Owdr) for the commands. Source: [Issue #222](https://github.com/freqtrade/freqtrade/issues/222) ### Error during installation on Windows diff --git a/tests/test_docs.sh b/tests/test_docs.sh index 8a354daad..09e142b99 100755 --- a/tests/test_docs.sh +++ b/tests/test_docs.sh @@ -2,8 +2,7 @@ # Test Documentation boxes - # !!! : is not allowed! # !!! "title" - Title needs to be quoted! -# !!! Spaces at the beginning are not allowed -grep -Er '^!{3}\s\S+:|^!{3}\s\S+\s[^"]|^\s+!{3}\s\S+' docs/* +grep -Er '^!{3}\s\S+:|^!{3}\s\S+\s[^"]' docs/* if [ $? -ne 0 ]; then echo "Docs test success." From bd4f3d838ab959c3c8ff9f0e39daaeb62c3bddce Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 4 Sep 2020 19:44:35 +0200 Subject: [PATCH 3084/3421] Implement merge_informative_pairs helper --- freqtrade/strategy/__init__.py | 1 + freqtrade/strategy/strategy_helper.py | 39 ++++++++++++++++ tests/strategy/test_strategy_helpers.py | 61 +++++++++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 freqtrade/strategy/strategy_helper.py create mode 100644 tests/strategy/test_strategy_helpers.py diff --git a/freqtrade/strategy/__init__.py b/freqtrade/strategy/__init__.py index 91ea0e075..5758bbbcc 100644 --- a/freqtrade/strategy/__init__.py +++ b/freqtrade/strategy/__init__.py @@ -2,3 +2,4 @@ from freqtrade.exchange import (timeframe_to_minutes, timeframe_to_prev_date, timeframe_to_seconds, timeframe_to_next_date, timeframe_to_msecs) from freqtrade.strategy.interface import IStrategy +from freqtrade.strategy.strategy_helper import merge_informative_pairs diff --git a/freqtrade/strategy/strategy_helper.py b/freqtrade/strategy/strategy_helper.py new file mode 100644 index 000000000..ce98cccba --- /dev/null +++ b/freqtrade/strategy/strategy_helper.py @@ -0,0 +1,39 @@ +import pandas as pd +from freqtrade.exchange import timeframe_to_minutes + + +def merge_informative_pairs(dataframe: pd.DataFrame, informative: pd.DataFrame, + timeframe_inf: str, ffill: bool = True) -> pd.DataFrame: + """ + Correctly merge informative samples to the original dataframe, avoiding lookahead bias. + + Since dates are candle open dates, merging a 15m candle that starts at 15:00, and a + 1h candle that starts at 15:00 will result in all candles to know the close at 16:00 + which they should not know. + + Moves the date of the informative pair by 1 time interval forward. + This way, the 14:00 1h candle is merged to 15:00 15m candle, since the 14:00 1h candle is the + last candle that's closed at 15:00, 15:15, 15:30 or 15:45. + + :param dataframe: Original dataframe + :param informative: Informative pair, most likely loaded via dp.get_pair_dataframe + :param timeframe_inf: Timeframe of the informative pair sample. + :param ffill: Forwardfill missing values - optional but usually required + """ + # Rename columns to be unique + + minutes = timeframe_to_minutes(timeframe_inf) + informative['date_merge'] = informative["date"] + pd.to_timedelta(minutes, 'm') + + informative.columns = [f"{col}_{timeframe_inf}" for col in informative.columns] + + # Combine the 2 dataframes + # all indicators on the informative sample MUST be calculated before this point + dataframe = pd.merge(dataframe, informative, left_on='date', + right_on=f'date_merge_{timeframe_inf}', how='left') + dataframe = dataframe.drop(f'date_merge_{timeframe_inf}', axis=1) + + if ffill: + dataframe = dataframe.ffill() + + return dataframe diff --git a/tests/strategy/test_strategy_helpers.py b/tests/strategy/test_strategy_helpers.py new file mode 100644 index 000000000..89bbba2c1 --- /dev/null +++ b/tests/strategy/test_strategy_helpers.py @@ -0,0 +1,61 @@ +import pandas as pd +import numpy as np + +from freqtrade.strategy import merge_informative_pairs, timeframe_to_minutes + + +def generate_test_data(timeframe: str, size: int): + np.random.seed(42) + tf_mins = timeframe_to_minutes(timeframe) + + base = np.random.normal(20, 2, size=size) + + date = pd.period_range('2020-07-05', periods=size, freq=f'{tf_mins}min').to_timestamp() + df = pd.DataFrame({ + 'date': date, + 'open': base, + 'high': base + np.random.normal(2, 1, size=size), + 'low': base - np.random.normal(2, 1, size=size), + 'close': base + np.random.normal(0, 1, size=size), + 'volume': np.random.normal(200, size=size) + } + ) + df = df.dropna() + return df + + +def test_merge_informative_pairs(): + data = generate_test_data('15m', 40) + informative = generate_test_data('1h', 40) + + result = merge_informative_pairs(data, informative, '1h', ffill=True) + assert isinstance(result, pd.DataFrame) + assert len(result) == len(data) + assert 'date' in result.columns + assert result['date'].equals(data['date']) + assert 'date_1h' in result.columns + + assert 'open' in result.columns + assert 'open_1h' in result.columns + assert result['open'].equals(data['open']) + + assert 'close' in result.columns + assert 'close_1h' in result.columns + assert result['close'].equals(data['close']) + + assert 'volume' in result.columns + assert 'volume_1h' in result.columns + assert result['volume'].equals(data['volume']) + + # First 4 rows are empty + assert result.iloc[0]['date_1h'] is pd.NaT + assert result.iloc[1]['date_1h'] is pd.NaT + assert result.iloc[2]['date_1h'] is pd.NaT + assert result.iloc[3]['date_1h'] is pd.NaT + # Next 4 rows contain the starting date (0:00) + assert result.iloc[4]['date_1h'] == result.iloc[0]['date'] + assert result.iloc[5]['date_1h'] == result.iloc[0]['date'] + assert result.iloc[6]['date_1h'] == result.iloc[0]['date'] + assert result.iloc[7]['date_1h'] == result.iloc[0]['date'] + # Next 4 rows contain the next Hourly date original date row 4 + assert result.iloc[8]['date_1h'] == result.iloc[4]['date'] From 7bc89279148872e43d4f6f6233ffbc864bc1f436 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 4 Sep 2020 20:02:31 +0200 Subject: [PATCH 3085/3421] Add documentation for merge_informative_pair helper --- docs/strategy-customization.md | 79 +++++++++++++++++++------ freqtrade/strategy/__init__.py | 2 +- freqtrade/strategy/strategy_helper.py | 7 ++- tests/strategy/test_strategy_helpers.py | 6 +- 4 files changed, 71 insertions(+), 23 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index e2548e510..c791be615 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -483,9 +483,8 @@ if self.dp: ### Complete Data-provider sample ```python -from freqtrade.strategy import IStrategy, timeframe_to_minutes +from freqtrade.strategy import IStrategy, merge_informative_pairs from pandas import DataFrame -import pandas as pd class SampleStrategy(IStrategy): # strategy init stuff... @@ -517,23 +516,12 @@ class SampleStrategy(IStrategy): # Get the 14 day rsi informative['rsi'] = ta.RSI(informative, timeperiod=14) - # Rename columns to be unique - informative.columns = [f"{col}_{inf_tf}" for col in informative.columns] - # Assuming inf_tf = '1d' - then the columns will now be: - # date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d - - # Shift date by 1 candle - # This is necessary since the data is always the "open date" - # and a 15m candle starting at 12:15 should not know the close of the 1h candle from 12:00 to 13:00 - minutes = timeframe_to_minutes(inf_tf) - informative['date_merge'] = informative["date"] + pd.to_timedelta(minutes, 'm') - - # Combine the 2 dataframes - # all indicators on the informative sample MUST be calculated before this point - dataframe = pd.merge(dataframe, informative, left_on='date', right_on=f'date_merge_{inf_tf}', how='left') + # Use the helper function merge_informative_pair to safely merge the pair + # Automatically renames the columns and merges a shorter timeframe dataframe and a longer timeframe informative pair # FFill to have the 1d value available in every row throughout the day. # Without this, comparisons would only work once per day. - dataframe = dataframe.ffill() + # Full documentation of this method, see below + dataframe = merge_informative_pair(dataframe, informative_pairs, inf_tf, ffill=True) # Calculate rsi of the original dataframe (5m timeframe) dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14) @@ -557,6 +545,63 @@ class SampleStrategy(IStrategy): *** +## Helper functions + +### *merge_informative_pair()* + +This method helps you merge an informative pair to a regular dataframe without lookahead bias. +It's there to help you merge the dataframe in a safe and consistent way. + +Options: + +- Rename the columns for you to create unique columns +- Merge the dataframe without lookahead bias +- Forward-fill (optional) + +All columns of the informative dataframe will be available on the returning dataframe in a renamed fashion: + +!!! Example "Column renaming" + Assuming `inf_tf = '1d'` the resulting columns will be: + + ``` python + 'date', 'open', 'high', 'low', 'close', 'rsi' # from the original dataframe + 'date_1d', 'open_1d', 'high_1d', 'low_1d', 'close_1d', 'rsi_1d' # from the informative dataframe + ``` + +??? Example "Column renaming - 1h" + Assuming `inf_tf = '1h'` the resulting columns will be: + + ``` python + 'date', 'open', 'high', 'low', 'close', 'rsi' # from the original dataframe + 'date_1h', 'open_1h', 'high_1h', 'low_1h', 'close_1h', 'rsi_1h' # from the informative dataframe + ``` + +??? Example "Custom implementation" + A custom implementation for this is possible, and can be done as follows: + + ``` python + # Rename columns to be unique + informative.columns = [f"{col}_{inf_tf}" for col in informative.columns] + # Assuming inf_tf = '1d' - then the columns will now be: + # date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d + + # Shift date by 1 candle + # This is necessary since the data is always the "open date" + # and a 15m candle starting at 12:15 should not know the close of the 1h candle from 12:00 to 13:00 + minutes = timeframe_to_minutes(inf_tf) + informative['date_merge'] = informative["date"] + pd.to_timedelta(minutes, 'm') + + # Combine the 2 dataframes + # all indicators on the informative sample MUST be calculated before this point + dataframe = pd.merge(dataframe, informative, left_on='date', right_on=f'date_merge_{inf_tf}', how='left') + # FFill to have the 1d value available in every row throughout the day. + # Without this, comparisons would only work once per day. + dataframe = dataframe.ffill() + + ``` + +*** + ## Additional data (Wallets) The strategy provides access to the `Wallets` object. This contains the current balances on the exchange. diff --git a/freqtrade/strategy/__init__.py b/freqtrade/strategy/__init__.py index 5758bbbcc..d1510489e 100644 --- a/freqtrade/strategy/__init__.py +++ b/freqtrade/strategy/__init__.py @@ -2,4 +2,4 @@ from freqtrade.exchange import (timeframe_to_minutes, timeframe_to_prev_date, timeframe_to_seconds, timeframe_to_next_date, timeframe_to_msecs) from freqtrade.strategy.interface import IStrategy -from freqtrade.strategy.strategy_helper import merge_informative_pairs +from freqtrade.strategy.strategy_helper import merge_informative_pair diff --git a/freqtrade/strategy/strategy_helper.py b/freqtrade/strategy/strategy_helper.py index ce98cccba..2684e7b03 100644 --- a/freqtrade/strategy/strategy_helper.py +++ b/freqtrade/strategy/strategy_helper.py @@ -2,8 +2,8 @@ import pandas as pd from freqtrade.exchange import timeframe_to_minutes -def merge_informative_pairs(dataframe: pd.DataFrame, informative: pd.DataFrame, - timeframe_inf: str, ffill: bool = True) -> pd.DataFrame: +def merge_informative_pair(dataframe: pd.DataFrame, informative: pd.DataFrame, + timeframe_inf: str, ffill: bool = True) -> pd.DataFrame: """ Correctly merge informative samples to the original dataframe, avoiding lookahead bias. @@ -15,6 +15,9 @@ def merge_informative_pairs(dataframe: pd.DataFrame, informative: pd.DataFrame, This way, the 14:00 1h candle is merged to 15:00 15m candle, since the 14:00 1h candle is the last candle that's closed at 15:00, 15:15, 15:30 or 15:45. + Assuming inf_tf = '1d' - then the resulting columns will be: + date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d + :param dataframe: Original dataframe :param informative: Informative pair, most likely loaded via dp.get_pair_dataframe :param timeframe_inf: Timeframe of the informative pair sample. diff --git a/tests/strategy/test_strategy_helpers.py b/tests/strategy/test_strategy_helpers.py index 89bbba2c1..9201d91e1 100644 --- a/tests/strategy/test_strategy_helpers.py +++ b/tests/strategy/test_strategy_helpers.py @@ -1,7 +1,7 @@ import pandas as pd import numpy as np -from freqtrade.strategy import merge_informative_pairs, timeframe_to_minutes +from freqtrade.strategy import merge_informative_pair, timeframe_to_minutes def generate_test_data(timeframe: str, size: int): @@ -24,11 +24,11 @@ def generate_test_data(timeframe: str, size: int): return df -def test_merge_informative_pairs(): +def test_merge_informative_pair(): data = generate_test_data('15m', 40) informative = generate_test_data('1h', 40) - result = merge_informative_pairs(data, informative, '1h', ffill=True) + result = merge_informative_pair(data, informative, '1h', ffill=True) assert isinstance(result, pd.DataFrame) assert len(result) == len(data) assert 'date' in result.columns From cc684c51415afd7e1b682242ecd8c76f594e8c1d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 4 Sep 2020 20:09:02 +0200 Subject: [PATCH 3086/3421] Correctly handle identical timerame merges --- docs/strategy-customization.md | 7 +++--- freqtrade/strategy/strategy_helper.py | 11 +++++++--- tests/strategy/test_strategy_helpers.py | 29 ++++++++++++++++++++++++- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index c791be615..7396f2a89 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -518,10 +518,10 @@ class SampleStrategy(IStrategy): # Use the helper function merge_informative_pair to safely merge the pair # Automatically renames the columns and merges a shorter timeframe dataframe and a longer timeframe informative pair - # FFill to have the 1d value available in every row throughout the day. - # Without this, comparisons would only work once per day. + # use ffill to have the 1d value available in every row throughout the day. + # Without this, comparisons between columns of the original and the informative pair would only work once per day. # Full documentation of this method, see below - dataframe = merge_informative_pair(dataframe, informative_pairs, inf_tf, ffill=True) + dataframe = merge_informative_pair(dataframe, informative_pairs, self.timeframe, inf_tf, ffill=True) # Calculate rsi of the original dataframe (5m timeframe) dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14) @@ -589,6 +589,7 @@ All columns of the informative dataframe will be available on the returning data # This is necessary since the data is always the "open date" # and a 15m candle starting at 12:15 should not know the close of the 1h candle from 12:00 to 13:00 minutes = timeframe_to_minutes(inf_tf) + # Only do this if the timeframes are different: informative['date_merge'] = informative["date"] + pd.to_timedelta(minutes, 'm') # Combine the 2 dataframes diff --git a/freqtrade/strategy/strategy_helper.py b/freqtrade/strategy/strategy_helper.py index 2684e7b03..0fa7f4258 100644 --- a/freqtrade/strategy/strategy_helper.py +++ b/freqtrade/strategy/strategy_helper.py @@ -3,7 +3,7 @@ from freqtrade.exchange import timeframe_to_minutes def merge_informative_pair(dataframe: pd.DataFrame, informative: pd.DataFrame, - timeframe_inf: str, ffill: bool = True) -> pd.DataFrame: + timeframe: str, timeframe_inf: str, ffill: bool = True) -> pd.DataFrame: """ Correctly merge informative samples to the original dataframe, avoiding lookahead bias. @@ -20,13 +20,18 @@ def merge_informative_pair(dataframe: pd.DataFrame, informative: pd.DataFrame, :param dataframe: Original dataframe :param informative: Informative pair, most likely loaded via dp.get_pair_dataframe + :param timeframe: Timeframe of the original pair sample. :param timeframe_inf: Timeframe of the informative pair sample. :param ffill: Forwardfill missing values - optional but usually required """ # Rename columns to be unique - minutes = timeframe_to_minutes(timeframe_inf) - informative['date_merge'] = informative["date"] + pd.to_timedelta(minutes, 'm') + minutes_inf = timeframe_to_minutes(timeframe_inf) + if timeframe == timeframe_inf: + # No need to forwardshift if the timeframes are identical + informative['date_merge'] = informative["date"] + else: + informative['date_merge'] = informative["date"] + pd.to_timedelta(minutes_inf, 'm') informative.columns = [f"{col}_{timeframe_inf}" for col in informative.columns] diff --git a/tests/strategy/test_strategy_helpers.py b/tests/strategy/test_strategy_helpers.py index 9201d91e1..4b29bf304 100644 --- a/tests/strategy/test_strategy_helpers.py +++ b/tests/strategy/test_strategy_helpers.py @@ -28,7 +28,7 @@ def test_merge_informative_pair(): data = generate_test_data('15m', 40) informative = generate_test_data('1h', 40) - result = merge_informative_pair(data, informative, '1h', ffill=True) + result = merge_informative_pair(data, informative, '15m', '1h', ffill=True) assert isinstance(result, pd.DataFrame) assert len(result) == len(data) assert 'date' in result.columns @@ -59,3 +59,30 @@ def test_merge_informative_pair(): assert result.iloc[7]['date_1h'] == result.iloc[0]['date'] # Next 4 rows contain the next Hourly date original date row 4 assert result.iloc[8]['date_1h'] == result.iloc[4]['date'] + + +def test_merge_informative_pair_same(): + data = generate_test_data('15m', 40) + informative = generate_test_data('15m', 40) + + result = merge_informative_pair(data, informative, '15m', '15m', ffill=True) + assert isinstance(result, pd.DataFrame) + assert len(result) == len(data) + assert 'date' in result.columns + assert result['date'].equals(data['date']) + assert 'date_15m' in result.columns + + assert 'open' in result.columns + assert 'open_15m' in result.columns + assert result['open'].equals(data['open']) + + assert 'close' in result.columns + assert 'close_15m' in result.columns + assert result['close'].equals(data['close']) + + assert 'volume' in result.columns + assert 'volume_15m' in result.columns + assert result['volume'].equals(data['volume']) + + # Dates match 1:1 + assert result['date_15m'].equals(result['date']) From 71af64af94ba07a19181618e58f0dbfa8480709f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 4 Sep 2020 20:10:43 +0200 Subject: [PATCH 3087/3421] Move comment to the right place --- freqtrade/strategy/strategy_helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/strategy/strategy_helper.py b/freqtrade/strategy/strategy_helper.py index 0fa7f4258..1fbf618bd 100644 --- a/freqtrade/strategy/strategy_helper.py +++ b/freqtrade/strategy/strategy_helper.py @@ -24,7 +24,6 @@ def merge_informative_pair(dataframe: pd.DataFrame, informative: pd.DataFrame, :param timeframe_inf: Timeframe of the informative pair sample. :param ffill: Forwardfill missing values - optional but usually required """ - # Rename columns to be unique minutes_inf = timeframe_to_minutes(timeframe_inf) if timeframe == timeframe_inf: @@ -33,6 +32,7 @@ def merge_informative_pair(dataframe: pd.DataFrame, informative: pd.DataFrame, else: informative['date_merge'] = informative["date"] + pd.to_timedelta(minutes_inf, 'm') + # Rename columns to be unique informative.columns = [f"{col}_{timeframe_inf}" for col in informative.columns] # Combine the 2 dataframes From c18441f36fe5fa25012f0b363153d41df93c4955 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 5 Sep 2020 16:44:23 +0200 Subject: [PATCH 3088/3421] Fix typo in reloading_conf --- freqtrade/rpc/rpc.py | 2 +- tests/rpc/test_rpc_apiserver.py | 2 +- tests/rpc/test_rpc_telegram.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index b89a95ee8..0b9196f2e 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -436,7 +436,7 @@ class RPC: def _rpc_reload_config(self) -> Dict[str, str]: """ Handler for reload_config. """ self._freqtrade.state = State.RELOAD_CONFIG - return {'status': 'reloading config ...'} + return {'status': 'Reloading config ...'} def _rpc_stopbuy(self) -> Dict[str, str]: """ diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index d2b69ee4f..d9f5bf781 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -266,7 +266,7 @@ def test_api_reloadconf(botclient): rc = client_post(client, f"{BASE_URI}/reload_config") assert_response(rc) - assert rc.json == {'status': 'reloading config ...'} + assert rc.json == {'status': 'Reloading config ...'} assert ftbot.state == State.RELOAD_CONFIG diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 71898db8c..762780111 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -692,7 +692,7 @@ def test_reload_config_handle(default_conf, update, mocker) -> None: telegram._reload_config(update=update, context=MagicMock()) assert freqtradebot.state == State.RELOAD_CONFIG assert msg_mock.call_count == 1 - assert 'reloading config' in msg_mock.call_args_list[0][0][0] + assert 'Reloading config' in msg_mock.call_args_list[0][0][0] def test_telegram_forcesell_handle(default_conf, update, ticker, fee, From 8c9297e1f0effeccd5490652f83b91a0a3105507 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 5 Sep 2020 16:51:19 +0200 Subject: [PATCH 3089/3421] Don't crash if a strategy imports something wrongly --- freqtrade/resolvers/iresolver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 52d944f2c..b7d25ef2c 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -59,7 +59,7 @@ class IResolver: module = importlib.util.module_from_spec(spec) try: spec.loader.exec_module(module) # type: ignore # importlib does not use typehints - except (ModuleNotFoundError, SyntaxError) as err: + except (ModuleNotFoundError, SyntaxError, ImportError) as err: # Catch errors in case a specific module is not installed logger.warning(f"Could not import {module_path} due to '{err}'") if enum_failed: From b4c35291358fa33613b1eeae72f3a6bbdabef15d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 6 Sep 2020 14:05:15 +0200 Subject: [PATCH 3090/3421] Add orders to mock_trades fixture --- tests/conftest.py | 67 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 08061f647..591fd47bb 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,4 +1,5 @@ # pragma pylint: disable=missing-docstring +from freqtrade.persistence.models import Order import json import logging import re @@ -184,6 +185,17 @@ def create_mock_trades(fee): open_order_id='dry_run_buy_12345', strategy='DefaultStrategy', ) + o = Order.parse_from_ccxt_object({ + 'id': '1234', + 'symbol': 'ETH/BTC', + 'status': 'closed', + 'side': 'buy', + 'price': 0.123, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + }, 'ETH/BTC', 'buy') + trade.orders.append(o) Trade.session.add(trade) trade = Trade( @@ -201,6 +213,28 @@ def create_mock_trades(fee): open_order_id='dry_run_sell_12345', strategy='DefaultStrategy', ) + o = Order.parse_from_ccxt_object({ + 'id': '1235', + 'symbol': 'ETC/BTC', + 'status': 'closed', + 'side': 'buy', + 'price': 0.123, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + }, 'ETH/BTC', 'buy') + trade.orders.append(o) + o = Order.parse_from_ccxt_object({ + 'id': '12366', + 'symbol': 'ETC/BTC', + 'status': 'closed', + 'side': 'sell', + 'price': 0.128, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + }, 'ETH/BTC', 'sell') + trade.orders.append(o) Trade.session.add(trade) trade = Trade( @@ -215,6 +249,28 @@ def create_mock_trades(fee): exchange='bittrex', is_open=False, ) + o = Order.parse_from_ccxt_object({ + 'id': '41231a12a', + 'symbol': 'XRP/BTC', + 'status': 'closed', + 'side': 'buy', + 'price': 0.05, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + }, 'ETH/BTC', 'buy') + trade.orders.append(o) + o = Order.parse_from_ccxt_object({ + 'id': '41231a666a', + 'symbol': 'XRP/BTC', + 'status': 'closed', + 'side': 'stop_loss', + 'price': 0.06, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + }, 'ETH/BTC', 'sell') + trade.orders.append(o) Trade.session.add(trade) # Simulate prod entry @@ -230,6 +286,17 @@ def create_mock_trades(fee): open_order_id='prod_buy_12345', strategy='DefaultStrategy', ) + o = Order.parse_from_ccxt_object({ + 'id': 'prod_buy_12345', + 'symbol': 'ETC/BTC', + 'status': 'open', + 'side': 'buy', + 'price': 0.123, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + }, 'ETH/BTC', 'buy') + trade.orders.append(o) Trade.session.add(trade) From b7662722bacb8635c4733abe450214c8d5297bb5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 6 Sep 2020 14:17:45 +0200 Subject: [PATCH 3091/3421] Add tests for Order object parsing --- freqtrade/persistence/models.py | 1 + tests/test_persistence.py | 47 +++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index e0b9624dd..891822064 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -154,6 +154,7 @@ class Order(_DECL_BASE): if 'timestamp' in order and order['timestamp'] is not None: self.order_date = datetime.fromtimestamp(order['timestamp'] / 1000, tz=timezone.utc) + self.ft_is_open = True if self.status in ('closed', 'canceled', 'cancelled'): self.ft_is_open = False if order.get('filled', 0) > 0: diff --git a/tests/test_persistence.py b/tests/test_persistence.py index c812c496f..b6623d461 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -1030,3 +1030,50 @@ def test_get_best_pair(fee): assert len(res) == 2 assert res[0] == 'XRP/BTC' assert res[1] == 0.01 + + +@pytest.mark.usefixtures("init_persistence") +def test_update_order_from_ccxt(): + # Most basic order return (only has orderid) + o = Order.parse_from_ccxt_object({'id': '1234'}, 'ETH/BTC', 'buy') + assert isinstance(o, Order) + assert o.ft_pair == 'ETH/BTC' + assert o.ft_order_side == 'buy' + assert o.order_id == '1234' + assert o.ft_is_open + ccxt_order = { + 'id': '1234', + 'side': 'buy', + 'symbol': 'ETH/BTC', + 'type': 'limit', + 'price': 1234.5, + 'amount': 20.0, + 'filled': 9, + 'remaining': 11, + 'status': 'open', + 'timestamp': 1599394315123 + } + o = Order.parse_from_ccxt_object(ccxt_order, 'ETH/BTC', 'buy') + assert isinstance(o, Order) + assert o.ft_pair == 'ETH/BTC' + assert o.ft_order_side == 'buy' + assert o.order_id == '1234' + assert o.order_type == 'limit' + assert o.price == 1234.5 + assert o.filled == 9 + assert o.remaining == 11 + assert o.order_date is not None + assert o.ft_is_open + assert o.order_filled_date is None + + # Order has been closed + ccxt_order.update({'filled': 20.0, 'remaining': 0.0, 'status': 'closed'}) + o.update_from_ccxt_object(ccxt_order) + + assert o.filled == 20.0 + assert o.remaining == 0.0 + assert not o.ft_is_open + assert o.order_filled_date is not None + + + From a78d61150c5ab7346fe9a3557de0cc3b282d2e67 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 6 Sep 2020 14:27:36 +0200 Subject: [PATCH 3092/3421] Deleting must delete orders first --- freqtrade/freqtradebot.py | 3 +-- freqtrade/persistence/models.py | 8 ++++++++ freqtrade/rpc/rpc.py | 3 +-- tests/rpc/test_rpc.py | 1 - tests/test_persistence.py | 3 --- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 3e9f8c75c..f2cd4c5dd 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1118,8 +1118,7 @@ class FreqtradeBot: if isclose(filled_amount, 0.0, abs_tol=constants.MATH_CLOSE_PREC): logger.info('Buy order fully cancelled. Removing %s from database.', trade) # if trade is not partially completed, just delete the trade - Trade.session.delete(trade) - Trade.session.flush() + trade.delete() was_trade_fully_canceled = True else: # if trade is partially complete, edit the stake details for the trade diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 891822064..9759ac830 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -446,6 +446,14 @@ class Trade(_DECL_BASE): def update_order(self, order: Dict) -> None: Order.update_orders(self.orders, order) + def delete(self) -> None: + + for order in self.orders: + Order.session.delete(order) + + Trade.session.delete(self) + Trade.session.flush() + def _calc_open_trade_price(self) -> float: """ Calculate the open_rate including open_fee. diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 9b5d79267..6ace0bb88 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -567,8 +567,7 @@ class RPC: except (ExchangeError): pass - Trade.session.delete(trade) - Trade.session.flush() + trade.delete() self._freqtrade.wallets.update() return { 'result': 'success', diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 42025b3a3..8c13bc00f 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -313,7 +313,6 @@ def test_rpc_delete_trade(mocker, default_conf, fee, markets, caplog): with pytest.raises(RPCException, match='invalid argument'): rpc._rpc_delete('200') - create_mock_trades(fee) trades = Trade.query.all() trades[1].stoploss_order_id = '1234' trades[2].stoploss_order_id = '1234' diff --git a/tests/test_persistence.py b/tests/test_persistence.py index b6623d461..707247e99 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -1074,6 +1074,3 @@ def test_update_order_from_ccxt(): assert o.remaining == 0.0 assert not o.ft_is_open assert o.order_filled_date is not None - - - From 68d51a97878e8b31e8fe49013d3cced2136ffa51 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 6 Sep 2020 14:33:45 +0200 Subject: [PATCH 3093/3421] Don't raise OperationalException when orderid's dont' match --- freqtrade/persistence/models.py | 4 ++-- tests/test_persistence.py | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 9759ac830..096cf6209 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -17,7 +17,7 @@ from sqlalchemy.orm.session import sessionmaker from sqlalchemy.pool import StaticPool from sqlalchemy.sql.schema import UniqueConstraint -from freqtrade.exceptions import OperationalException +from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.misc import safe_value_fallback from freqtrade.persistence.migrations import check_migrate @@ -140,7 +140,7 @@ class Order(_DECL_BASE): Only updates if fields are available from ccxt - """ if self.order_id != str(order['id']): - return OperationalException("Order-id's don't match") + raise DependencyException("Order-id's don't match") self.status = order.get('status', self.status) self.symbol = order.get('symbol', self.symbol) diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 707247e99..788debace 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -7,9 +7,9 @@ import pytest from sqlalchemy import create_engine from freqtrade import constants -from freqtrade.exceptions import OperationalException -from freqtrade.persistence import Trade, Order, clean_dry_run_db, init -from tests.conftest import log_has, create_mock_trades +from freqtrade.exceptions import DependencyException, OperationalException +from freqtrade.persistence import Order, Trade, clean_dry_run_db, init +from tests.conftest import create_mock_trades, log_has def test_init_create_session(default_conf): @@ -1074,3 +1074,7 @@ def test_update_order_from_ccxt(): assert o.remaining == 0.0 assert not o.ft_is_open assert o.order_filled_date is not None + + ccxt_order.update({'id': 'somethingelse'}) + with pytest.raises(DependencyException, match=r"Order-id's don't match"): + o.update_from_ccxt_object(ccxt_order) From cec98ad407b2814b7266ae9d21a2ee4b1da066ab Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 6 Sep 2020 14:51:11 +0200 Subject: [PATCH 3094/3421] Test stoploss insufficient funds handling --- tests/test_freqtradebot.py | 40 +++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index f89befc55..850ddaeeb 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -13,7 +13,7 @@ import pytest from freqtrade.constants import (CANCEL_REASON, MATH_CLOSE_PREC, UNLIMITED_STAKE_AMOUNT) -from freqtrade.exceptions import (DependencyException, ExchangeError, +from freqtrade.exceptions import (DependencyException, ExchangeError, InsufficientFundsError, InvalidOrderException, OperationalException, PricingError, TemporaryError) from freqtrade.freqtradebot import FreqtradeBot @@ -1327,6 +1327,44 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, assert rpc_mock.call_args_list[1][0][0]['order_type'] == 'market' +def test_create_stoploss_order_insufficient_funds(mocker, default_conf, caplog, fee, + limit_buy_order_open, limit_sell_order): + sell_mock = MagicMock(return_value={'id': limit_sell_order['id']}) + freqtrade = get_patched_freqtradebot(mocker, default_conf) + + mock_insuf = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_insufficient_funds') + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + fetch_ticker=MagicMock(return_value={ + 'bid': 0.00001172, + 'ask': 0.00001173, + 'last': 0.00001172 + }), + buy=MagicMock(return_value=limit_buy_order_open), + sell=sell_mock, + get_fee=fee, + fetch_order=MagicMock(return_value={'status': 'canceled'}), + stoploss=MagicMock(side_effect=InsufficientFundsError()), + ) + patch_get_signal(freqtrade) + freqtrade.strategy.order_types['stoploss_on_exchange'] = True + + freqtrade.enter_positions() + trade = Trade.query.first() + caplog.clear() + freqtrade.create_stoploss_order(trade, 200) + # stoploss_orderid was empty before + assert trade.stoploss_order_id is None + assert mock_insuf.call_count == 1 + mock_insuf.reset_mock() + + trade.stoploss_order_id = 'stoploss_orderid' + freqtrade.create_stoploss_order(trade, 200) + # No change to stoploss-orderid + assert trade.stoploss_order_id == 'stoploss_orderid' + assert mock_insuf.call_count == 1 + + @pytest.mark.usefixtures("init_persistence") def test_handle_stoploss_on_exchange_trailing(mocker, default_conf, fee, limit_buy_order, limit_sell_order) -> None: From 7c1f111ddfd50eeb4cc770aaa8564497cf12ea64 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 6 Sep 2020 14:59:30 +0200 Subject: [PATCH 3095/3421] Add insufficient_funds_test --- tests/test_freqtradebot.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 850ddaeeb..2f8e5aef6 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -2981,6 +2981,35 @@ def test_execute_sell_market_order(default_conf, ticker, fee, } == last_msg +def test_execute_sell_insufficient_funds_error(default_conf, ticker, fee, + ticker_sell_up, mocker) -> None: + freqtrade = get_patched_freqtradebot(mocker, default_conf) + mock_insuf = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_insufficient_funds') + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + fetch_ticker=ticker, + get_fee=fee, + sell=MagicMock(side_effect=InsufficientFundsError()) + ) + patch_get_signal(freqtrade) + + # Create some test data + freqtrade.enter_positions() + + trade = Trade.query.first() + assert trade + + # Increase the price and sell it + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + fetch_ticker=ticker_sell_up + ) + + assert not freqtrade.execute_sell(trade=trade, limit=ticker_sell_up()['bid'], + sell_reason=SellType.ROI) + assert mock_insuf.call_count == 1 + + def test_sell_profit_only_enable_profit(default_conf, limit_buy_order, limit_buy_order_open, fee, mocker) -> None: patch_RPCManager(mocker) From b4da36d6e9a94bd81b9da90a5e0350b931793f4c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 6 Sep 2020 15:05:47 +0200 Subject: [PATCH 3096/3421] Fix small typo and add small testcase --- freqtrade/freqtradebot.py | 2 +- tests/test_freqtradebot.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index f2cd4c5dd..44d1c31eb 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -1376,7 +1376,7 @@ class FreqtradeBot: """ if not order_id: logger.warning(f'Orderid for trade {trade} is empty.') - False + return False # Update trade with order values logger.info('Found open order for %s', trade) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 2f8e5aef6..fe5b64d5b 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1737,6 +1737,8 @@ def test_update_trade_state(mocker, default_conf, limit_buy_order, caplog) -> No open_date=arrow.utcnow().datetime, amount=11, ) + assert not freqtrade.update_trade_state(trade, None) + assert log_has_re(r'Orderid for trade .* is empty.', caplog) # Add datetime explicitly since sqlalchemy defaults apply only once written to database freqtrade.update_trade_state(trade, '123') # Test amount not modified by fee-logic From a0fd7f46445e32c7f92d339fd398de3a2151c528 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 6 Sep 2020 15:27:16 +0200 Subject: [PATCH 3097/3421] Update tests to merged version --- tests/exchange/test_exchange.py | 2 +- tests/rpc/test_rpc.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 64de1f171..e0b97d157 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1765,7 +1765,7 @@ def test_cancel_order_dry_run(default_conf, mocker, exchange_name): cancel_order = exchange.cancel_order(order_id=order['id'], pair='ETH/BTC') assert order['id'] == cancel_order['id'] assert order['amount'] == cancel_order['amount'] - assert order['pair'] == cancel_order['pair'] + assert order['symbol'] == cancel_order['symbol'] assert cancel_order['status'] == 'canceled' diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 5f11532b0..c2dee6439 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -716,11 +716,13 @@ def test_rpc_forcesell(default_conf, ticker, fee, mocker) -> None: mocker.patch( 'freqtrade.exchange.Exchange.fetch_order', side_effect=[{ + 'id': '1234', 'status': 'open', 'type': 'limit', 'side': 'buy', 'filled': filled_amount }, { + 'id': '1234', 'status': 'closed', 'type': 'limit', 'side': 'buy', From f6ebe51314875b42596b4e21ea4e9acf6761822f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 6 Sep 2020 19:32:00 +0200 Subject: [PATCH 3098/3421] Add test for update_open_orders --- freqtrade/freqtradebot.py | 4 ++-- tests/test_freqtradebot.py | 29 ++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4f68a1112..1af0e85b7 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -247,8 +247,8 @@ class FreqtradeBot: self.update_trade_state(order.trade, order.order_id, fo) - except ExchangeError: - logger.warning(f"Error updating {order.order_id}") + except ExchangeError as e: + logger.warning(f"Error updating Order {order.order_id} due to {e}") def update_closed_trades_without_assigned_fees(self): """ diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index c366b6777..0f340ae8f 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -4216,7 +4216,7 @@ def test_cancel_all_open_orders(mocker, default_conf, fee, limit_buy_order, limi @pytest.mark.usefixtures("init_persistence") -def test_check_for_open_trades(mocker, default_conf, fee, limit_buy_order, limit_sell_order): +def test_check_for_open_trades(mocker, default_conf, fee): freqtrade = get_patched_freqtradebot(mocker, default_conf) freqtrade.check_for_open_trades() @@ -4229,3 +4229,30 @@ def test_check_for_open_trades(mocker, default_conf, fee, limit_buy_order, limit freqtrade.check_for_open_trades() assert freqtrade.rpc.send_msg.call_count == 1 assert 'Handle these trades manually' in freqtrade.rpc.send_msg.call_args[0][0]['status'] + + +@pytest.mark.usefixtures("init_persistence") +def test_update_open_orders(mocker, default_conf, fee, caplog): + freqtrade = get_patched_freqtradebot(mocker, default_conf) + create_mock_trades(fee) + + freqtrade.update_open_orders() + assert log_has_re(r"Error updating Order .*", caplog) + caplog.clear() + + assert len(Order.get_open_orders()) == 1 + + matching_buy_order = { + 'id': 'prod_buy_12345', + 'symbol': 'ETC/BTC', + 'status': 'closed', + 'side': 'buy', + 'type': 'limit', + 'price': 0.123, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + } + mocker.patch('freqtrade.exchange.Exchange.fetch_order', return_value=matching_buy_order) + freqtrade.update_open_orders() + assert len(Order.get_open_orders()) == 0 From cad0275b3282b30f50bd62d034a79add1a575f87 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 7 Sep 2020 06:39:48 +0200 Subject: [PATCH 3099/3421] Extract mock_trade generation to sepearate file --- tests/conftest.py | 134 +------------------------------- tests/conftest_trades.py | 162 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+), 130 deletions(-) create mode 100644 tests/conftest_trades.py diff --git a/tests/conftest.py b/tests/conftest.py index 591fd47bb..2181388fa 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,4 +1,5 @@ # pragma pylint: disable=missing-docstring +from tests.conftest_trades import create_mock_trades from freqtrade.persistence.models import Order import json import logging @@ -168,136 +169,9 @@ def patch_get_signal(freqtrade: FreqtradeBot, value=(True, False)) -> None: freqtrade.exchange.refresh_latest_ohlcv = lambda p: None -def create_mock_trades(fee): - """ - Create some fake trades ... - """ - # Simulate dry_run entries - trade = Trade( - pair='ETH/BTC', - stake_amount=0.001, - amount=123.0, - amount_requested=123.0, - fee_open=fee.return_value, - fee_close=fee.return_value, - open_rate=0.123, - exchange='bittrex', - open_order_id='dry_run_buy_12345', - strategy='DefaultStrategy', - ) - o = Order.parse_from_ccxt_object({ - 'id': '1234', - 'symbol': 'ETH/BTC', - 'status': 'closed', - 'side': 'buy', - 'price': 0.123, - 'amount': 123.0, - 'filled': 123.0, - 'remaining': 0.0, - }, 'ETH/BTC', 'buy') - trade.orders.append(o) - Trade.session.add(trade) - - trade = Trade( - pair='ETC/BTC', - stake_amount=0.001, - amount=123.0, - amount_requested=123.0, - fee_open=fee.return_value, - fee_close=fee.return_value, - open_rate=0.123, - close_rate=0.128, - close_profit=0.005, - exchange='bittrex', - is_open=False, - open_order_id='dry_run_sell_12345', - strategy='DefaultStrategy', - ) - o = Order.parse_from_ccxt_object({ - 'id': '1235', - 'symbol': 'ETC/BTC', - 'status': 'closed', - 'side': 'buy', - 'price': 0.123, - 'amount': 123.0, - 'filled': 123.0, - 'remaining': 0.0, - }, 'ETH/BTC', 'buy') - trade.orders.append(o) - o = Order.parse_from_ccxt_object({ - 'id': '12366', - 'symbol': 'ETC/BTC', - 'status': 'closed', - 'side': 'sell', - 'price': 0.128, - 'amount': 123.0, - 'filled': 123.0, - 'remaining': 0.0, - }, 'ETH/BTC', 'sell') - trade.orders.append(o) - Trade.session.add(trade) - - trade = Trade( - pair='XRP/BTC', - stake_amount=0.001, - amount=123.0, - fee_open=fee.return_value, - fee_close=fee.return_value, - open_rate=0.05, - close_rate=0.06, - close_profit=0.01, - exchange='bittrex', - is_open=False, - ) - o = Order.parse_from_ccxt_object({ - 'id': '41231a12a', - 'symbol': 'XRP/BTC', - 'status': 'closed', - 'side': 'buy', - 'price': 0.05, - 'amount': 123.0, - 'filled': 123.0, - 'remaining': 0.0, - }, 'ETH/BTC', 'buy') - trade.orders.append(o) - o = Order.parse_from_ccxt_object({ - 'id': '41231a666a', - 'symbol': 'XRP/BTC', - 'status': 'closed', - 'side': 'stop_loss', - 'price': 0.06, - 'amount': 123.0, - 'filled': 123.0, - 'remaining': 0.0, - }, 'ETH/BTC', 'sell') - trade.orders.append(o) - Trade.session.add(trade) - - # Simulate prod entry - trade = Trade( - pair='ETC/BTC', - stake_amount=0.001, - amount=123.0, - amount_requested=124.0, - fee_open=fee.return_value, - fee_close=fee.return_value, - open_rate=0.123, - exchange='bittrex', - open_order_id='prod_buy_12345', - strategy='DefaultStrategy', - ) - o = Order.parse_from_ccxt_object({ - 'id': 'prod_buy_12345', - 'symbol': 'ETC/BTC', - 'status': 'open', - 'side': 'buy', - 'price': 0.123, - 'amount': 123.0, - 'filled': 123.0, - 'remaining': 0.0, - }, 'ETH/BTC', 'buy') - trade.orders.append(o) - Trade.session.add(trade) +@pytest.fixture(scope='function') +def mock_trades(fee): + return create_mock_trades(fee) @pytest.fixture(autouse=True) diff --git a/tests/conftest_trades.py b/tests/conftest_trades.py new file mode 100644 index 000000000..6966eb68f --- /dev/null +++ b/tests/conftest_trades.py @@ -0,0 +1,162 @@ +import pytest + +from freqtrade.persistence.models import Order, Trade + + +def mock_trade_1(fee): + trade = Trade( + pair='ETH/BTC', + stake_amount=0.001, + amount=123.0, + amount_requested=123.0, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_rate=0.123, + exchange='bittrex', + open_order_id='dry_run_buy_12345', + strategy='DefaultStrategy', + ) + o = Order.parse_from_ccxt_object({ + 'id': '1234', + 'symbol': 'ETH/BTC', + 'status': 'closed', + 'side': 'buy', + 'price': 0.123, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + }, 'ETH/BTC', 'buy') + trade.orders.append(o) + return trade + + +def mock_trade_2(fee): + """ + Closed trade... + """ + trade = Trade( + pair='ETC/BTC', + stake_amount=0.001, + amount=123.0, + amount_requested=123.0, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_rate=0.123, + close_rate=0.128, + close_profit=0.005, + exchange='bittrex', + is_open=False, + open_order_id='dry_run_sell_12345', + strategy='DefaultStrategy', + ) + o = Order.parse_from_ccxt_object({ + 'id': '1235', + 'symbol': 'ETC/BTC', + 'status': 'closed', + 'side': 'buy', + 'price': 0.123, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + }, 'ETH/BTC', 'buy') + trade.orders.append(o) + o = Order.parse_from_ccxt_object({ + 'id': '12366', + 'symbol': 'ETC/BTC', + 'status': 'closed', + 'side': 'sell', + 'price': 0.128, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + }, 'ETH/BTC', 'sell') + trade.orders.append(o) + return trade + + +def mock_trade_3(fee): + """ + Closed trade + """ + trade = Trade( + pair='XRP/BTC', + stake_amount=0.001, + amount=123.0, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_rate=0.05, + close_rate=0.06, + close_profit=0.01, + exchange='bittrex', + is_open=False, + ) + o = Order.parse_from_ccxt_object({ + 'id': '41231a12a', + 'symbol': 'XRP/BTC', + 'status': 'closed', + 'side': 'buy', + 'price': 0.05, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + }, 'ETH/BTC', 'buy') + trade.orders.append(o) + o = Order.parse_from_ccxt_object({ + 'id': '41231a666a', + 'symbol': 'XRP/BTC', + 'status': 'closed', + 'side': 'stop_loss', + 'price': 0.06, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + }, 'ETH/BTC', 'sell') + trade.orders.append(o) + return trade + + +def mock_trade_4(fee): + """ + Simulate prod entry + """ + trade = Trade( + pair='ETC/BTC', + stake_amount=0.001, + amount=123.0, + amount_requested=124.0, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_rate=0.123, + exchange='bittrex', + open_order_id='prod_buy_12345', + strategy='DefaultStrategy', + ) + o = Order.parse_from_ccxt_object({ + 'id': 'prod_buy_12345', + 'symbol': 'ETC/BTC', + 'status': 'open', + 'side': 'buy', + 'price': 0.123, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + }, 'ETH/BTC', 'buy') + trade.orders.append(o) + + +def create_mock_trades(fee): + """ + Create some fake trades ... + """ + # Simulate dry_run entries + trade = mock_trade_1(fee) + Trade.session.add(trade) + + trade = mock_trade_2(fee) + Trade.session.add(trade) + + trade = mock_trade_3(fee) + Trade.session.add(trade) + + trade = mock_trade_4(fee) + Trade.session.add(trade) From da0ceb7d87314242b73edc400e4ea30d2e894874 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 7 Sep 2020 06:48:34 +0200 Subject: [PATCH 3100/3421] Extract orders for mock trades --- tests/conftest.py | 2 +- tests/conftest_trades.py | 143 ++++++++++++++++++++++++--------------- 2 files changed, 88 insertions(+), 57 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 2181388fa..b966cde5b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -170,7 +170,7 @@ def patch_get_signal(freqtrade: FreqtradeBot, value=(True, False)) -> None: @pytest.fixture(scope='function') -def mock_trades(fee): +def mock_trades(init_persistence, fee): return create_mock_trades(fee) diff --git a/tests/conftest_trades.py b/tests/conftest_trades.py index 6966eb68f..b2aff2ee7 100644 --- a/tests/conftest_trades.py +++ b/tests/conftest_trades.py @@ -3,6 +3,20 @@ import pytest from freqtrade.persistence.models import Order, Trade +def mock_order_1(): + return { + 'id': '1234', + 'symbol': 'ETH/BTC', + 'status': 'closed', + 'side': 'buy', + 'type': 'limit', + 'price': 0.123, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + } + + def mock_trade_1(fee): trade = Trade( pair='ETH/BTC', @@ -16,18 +30,37 @@ def mock_trade_1(fee): open_order_id='dry_run_buy_12345', strategy='DefaultStrategy', ) - o = Order.parse_from_ccxt_object({ - 'id': '1234', - 'symbol': 'ETH/BTC', + o = Order.parse_from_ccxt_object(mock_order_1(), 'ETH/BTC', 'buy') + trade.orders.append(o) + return trade + + +def mock_order_2(): + return { + 'id': '1235', + 'symbol': 'ETC/BTC', 'status': 'closed', 'side': 'buy', + 'type': 'limit', 'price': 0.123, 'amount': 123.0, 'filled': 123.0, 'remaining': 0.0, - }, 'ETH/BTC', 'buy') - trade.orders.append(o) - return trade + } + + +def mock_order_2_sell(): + return { + 'id': '12366', + 'symbol': 'ETC/BTC', + 'status': 'closed', + 'side': 'sell', + 'type': 'limit', + 'price': 0.128, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + } def mock_trade_2(fee): @@ -49,31 +82,41 @@ def mock_trade_2(fee): open_order_id='dry_run_sell_12345', strategy='DefaultStrategy', ) - o = Order.parse_from_ccxt_object({ - 'id': '1235', - 'symbol': 'ETC/BTC', - 'status': 'closed', - 'side': 'buy', - 'price': 0.123, - 'amount': 123.0, - 'filled': 123.0, - 'remaining': 0.0, - }, 'ETH/BTC', 'buy') + o = Order.parse_from_ccxt_object(mock_order_2(), 'ETH/BTC', 'buy') trade.orders.append(o) - o = Order.parse_from_ccxt_object({ - 'id': '12366', - 'symbol': 'ETC/BTC', - 'status': 'closed', - 'side': 'sell', - 'price': 0.128, - 'amount': 123.0, - 'filled': 123.0, - 'remaining': 0.0, - }, 'ETH/BTC', 'sell') + o = Order.parse_from_ccxt_object(mock_order_2_sell(), 'ETH/BTC', 'sell') trade.orders.append(o) return trade +def mock_order_3(): + return { + 'id': '41231a12a', + 'symbol': 'XRP/BTC', + 'status': 'closed', + 'side': 'buy', + 'type': 'limit', + 'price': 0.05, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + } + + +def mock_order_3_sell(): + return { + 'id': '41231a666a', + 'symbol': 'XRP/BTC', + 'status': 'closed', + 'side': 'stop_loss', + 'type': 'limit', + 'price': 0.06, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + } + + def mock_trade_3(fee): """ Closed trade @@ -90,31 +133,27 @@ def mock_trade_3(fee): exchange='bittrex', is_open=False, ) - o = Order.parse_from_ccxt_object({ - 'id': '41231a12a', - 'symbol': 'XRP/BTC', - 'status': 'closed', - 'side': 'buy', - 'price': 0.05, - 'amount': 123.0, - 'filled': 123.0, - 'remaining': 0.0, - }, 'ETH/BTC', 'buy') + o = Order.parse_from_ccxt_object(mock_order_3(), 'ETH/BTC', 'buy') trade.orders.append(o) - o = Order.parse_from_ccxt_object({ - 'id': '41231a666a', - 'symbol': 'XRP/BTC', - 'status': 'closed', - 'side': 'stop_loss', - 'price': 0.06, - 'amount': 123.0, - 'filled': 123.0, - 'remaining': 0.0, - }, 'ETH/BTC', 'sell') + o = Order.parse_from_ccxt_object(mock_order_3_sell(), 'ETH/BTC', 'sell') trade.orders.append(o) return trade +def mock_order_4(): + return { + 'id': 'prod_buy_12345', + 'symbol': 'ETC/BTC', + 'status': 'open', + 'side': 'buy', + 'type': 'limit', + 'price': 0.123, + 'amount': 123.0, + 'filled': 0.0, + 'remaining': 123.0, + } + + def mock_trade_4(fee): """ Simulate prod entry @@ -131,17 +170,9 @@ def mock_trade_4(fee): open_order_id='prod_buy_12345', strategy='DefaultStrategy', ) - o = Order.parse_from_ccxt_object({ - 'id': 'prod_buy_12345', - 'symbol': 'ETC/BTC', - 'status': 'open', - 'side': 'buy', - 'price': 0.123, - 'amount': 123.0, - 'filled': 123.0, - 'remaining': 0.0, - }, 'ETH/BTC', 'buy') + o = Order.parse_from_ccxt_object(mock_order_4(), 'ETH/BTC', 'buy') trade.orders.append(o) + return trade def create_mock_trades(fee): From f113b45036c39d216c6cfdca7702d816901b4f3b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 7 Sep 2020 06:49:30 +0200 Subject: [PATCH 3101/3421] Refactor test to not duplicate order info --- tests/conftest.py | 23 ++++++++++++++++++----- tests/conftest_trades.py | 18 ------------------ tests/test_freqtradebot.py | 20 +++++++------------- 3 files changed, 25 insertions(+), 36 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index b966cde5b..a63b4e314 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,6 +1,4 @@ # pragma pylint: disable=missing-docstring -from tests.conftest_trades import create_mock_trades -from freqtrade.persistence.models import Order import json import logging import re @@ -24,6 +22,8 @@ from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver from freqtrade.worker import Worker +from tests.conftest_trades import (mock_trade_1, mock_trade_2, mock_trade_3, + mock_trade_4) logging.getLogger('').setLevel(logging.INFO) @@ -169,9 +169,22 @@ def patch_get_signal(freqtrade: FreqtradeBot, value=(True, False)) -> None: freqtrade.exchange.refresh_latest_ohlcv = lambda p: None -@pytest.fixture(scope='function') -def mock_trades(init_persistence, fee): - return create_mock_trades(fee) +def create_mock_trades(fee): + """ + Create some fake trades ... + """ + # Simulate dry_run entries + trade = mock_trade_1(fee) + Trade.session.add(trade) + + trade = mock_trade_2(fee) + Trade.session.add(trade) + + trade = mock_trade_3(fee) + Trade.session.add(trade) + + trade = mock_trade_4(fee) + Trade.session.add(trade) @pytest.fixture(autouse=True) diff --git a/tests/conftest_trades.py b/tests/conftest_trades.py index b2aff2ee7..1990725ee 100644 --- a/tests/conftest_trades.py +++ b/tests/conftest_trades.py @@ -173,21 +173,3 @@ def mock_trade_4(fee): o = Order.parse_from_ccxt_object(mock_order_4(), 'ETH/BTC', 'buy') trade.orders.append(o) return trade - - -def create_mock_trades(fee): - """ - Create some fake trades ... - """ - # Simulate dry_run entries - trade = mock_trade_1(fee) - Trade.session.add(trade) - - trade = mock_trade_2(fee) - Trade.session.add(trade) - - trade = mock_trade_3(fee) - Trade.session.add(trade) - - trade = mock_trade_4(fee) - Trade.session.add(trade) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 0f340ae8f..0d2e70f1e 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1,7 +1,6 @@ # pragma pylint: disable=missing-docstring, C0103 # pragma pylint: disable=protected-access, too-many-lines, invalid-name, too-many-arguments -from freqtrade.persistence.models import Order import logging import time from copy import deepcopy @@ -13,11 +12,13 @@ import pytest from freqtrade.constants import (CANCEL_REASON, MATH_CLOSE_PREC, UNLIMITED_STAKE_AMOUNT) -from freqtrade.exceptions import (DependencyException, ExchangeError, InsufficientFundsError, +from freqtrade.exceptions import (DependencyException, ExchangeError, + InsufficientFundsError, InvalidOrderException, OperationalException, PricingError, TemporaryError) from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import Trade +from freqtrade.persistence.models import Order from freqtrade.rpc import RPCMessageType from freqtrade.state import RunMode, State from freqtrade.strategy.interface import SellCheckTuple, SellType @@ -26,6 +27,7 @@ from tests.conftest import (create_mock_trades, get_patched_freqtradebot, get_patched_worker, log_has, log_has_re, patch_edge, patch_exchange, patch_get_signal, patch_wallet, patch_whitelist) +from tests.conftest_trades import mock_order_4 def patch_RPCManager(mocker) -> MagicMock: @@ -4241,18 +4243,10 @@ def test_update_open_orders(mocker, default_conf, fee, caplog): caplog.clear() assert len(Order.get_open_orders()) == 1 - - matching_buy_order = { - 'id': 'prod_buy_12345', - 'symbol': 'ETC/BTC', + matching_buy_order = mock_order_4() + matching_buy_order.update({ 'status': 'closed', - 'side': 'buy', - 'type': 'limit', - 'price': 0.123, - 'amount': 123.0, - 'filled': 123.0, - 'remaining': 0.0, - } + }) mocker.patch('freqtrade.exchange.Exchange.fetch_order', return_value=matching_buy_order) freqtrade.update_open_orders() assert len(Order.get_open_orders()) == 0 From 26a5cc5959de01f1a3c410409ddf12db461f0f9d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 7 Sep 2020 07:41:58 +0200 Subject: [PATCH 3102/3421] Add return-type for select_order --- freqtrade/persistence/models.py | 2 +- tests/conftest_trades.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 096cf6209..79b3d491b 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -520,7 +520,7 @@ class Trade(_DECL_BASE): profit_ratio = (close_trade_price / self.open_trade_price) - 1 return float(f"{profit_ratio:.8f}") - def select_order(self, order_side: str, status: Optional[str]): + def select_order(self, order_side: str, status: Optional[str]) -> Optional[Order]: """ Returns latest order for this orderside and status Returns None if nothing is found diff --git a/tests/conftest_trades.py b/tests/conftest_trades.py index 1990725ee..723a3fe58 100644 --- a/tests/conftest_trades.py +++ b/tests/conftest_trades.py @@ -108,9 +108,10 @@ def mock_order_3_sell(): 'id': '41231a666a', 'symbol': 'XRP/BTC', 'status': 'closed', - 'side': 'stop_loss', - 'type': 'limit', + 'side': 'sell', + 'type': 'stop_loss_limit', 'price': 0.06, + 'average': 0.06, 'amount': 123.0, 'filled': 123.0, 'remaining': 0.0, From 6518e7a7892e4b71771fe540e5a18ef8a5438fb4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 7 Sep 2020 07:47:38 +0200 Subject: [PATCH 3103/3421] Add test for update_closed_trades_without_fees --- tests/test_freqtradebot.py | 51 +++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 0d2e70f1e..b6e5c80c8 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -27,7 +27,7 @@ from tests.conftest import (create_mock_trades, get_patched_freqtradebot, get_patched_worker, log_has, log_has_re, patch_edge, patch_exchange, patch_get_signal, patch_wallet, patch_whitelist) -from tests.conftest_trades import mock_order_4 +from tests.conftest_trades import mock_order_1, mock_order_2, mock_order_2_sell, mock_order_3, mock_order_3_sell, mock_order_4 def patch_RPCManager(mocker) -> MagicMock: @@ -4250,3 +4250,52 @@ def test_update_open_orders(mocker, default_conf, fee, caplog): mocker.patch('freqtrade.exchange.Exchange.fetch_order', return_value=matching_buy_order) freqtrade.update_open_orders() assert len(Order.get_open_orders()) == 0 + + +@pytest.mark.usefixtures("init_persistence") +def test_update_closed_trades_without_assigned_fees(mocker, default_conf, fee): + freqtrade = get_patched_freqtradebot(mocker, default_conf) + + def patch_with_fee(order): + order.update({'fee': {'cost': 0.1, 'rate': 0.2, + 'currency': order['symbol'].split('/')[0]}}) + return order + + mocker.patch('freqtrade.exchange.Exchange.fetch_order_or_stoploss_order', + side_effect=[ + patch_with_fee(mock_order_2_sell()), + patch_with_fee(mock_order_3_sell()), + patch_with_fee(mock_order_1()), + patch_with_fee(mock_order_2()), + patch_with_fee(mock_order_3()), + patch_with_fee(mock_order_4()), + ] + ) + + create_mock_trades(fee) + trades = Trade.get_trades().all() + assert len(trades) == 4 + for trade in trades: + assert trade.fee_open_cost is None + assert trade.fee_open_currency is None + assert trade.fee_close_cost is None + assert trade.fee_close_currency is None + + freqtrade.update_closed_trades_without_assigned_fees() + + # trades = Trade.get_trades().all() + assert len(trades) == 4 + + for trade in trades: + if trade.is_open: + # Exclude Trade 4 - as the order is still open. + if trade.select_order('buy', 'closed'): + assert trade.fee_open_cost is not None + assert trade.fee_open_currency is not None + else: + assert trade.fee_open_cost is None + assert trade.fee_open_currency is None + + else: + assert trade.fee_close_cost is not None + assert trade.fee_close_currency is not None From f3e0370d4da308e40ecf5cf21b2844c4d1166de0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 7 Sep 2020 07:54:55 +0200 Subject: [PATCH 3104/3421] Stylistic fixes --- tests/conftest_trades.py | 2 -- tests/test_freqtradebot.py | 4 +++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/conftest_trades.py b/tests/conftest_trades.py index 723a3fe58..c990f6cdc 100644 --- a/tests/conftest_trades.py +++ b/tests/conftest_trades.py @@ -1,5 +1,3 @@ -import pytest - from freqtrade.persistence.models import Order, Trade diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index b6e5c80c8..f9bf37938 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -27,7 +27,9 @@ from tests.conftest import (create_mock_trades, get_patched_freqtradebot, get_patched_worker, log_has, log_has_re, patch_edge, patch_exchange, patch_get_signal, patch_wallet, patch_whitelist) -from tests.conftest_trades import mock_order_1, mock_order_2, mock_order_2_sell, mock_order_3, mock_order_3_sell, mock_order_4 +from tests.conftest_trades import (mock_order_1, mock_order_2, + mock_order_2_sell, mock_order_3, + mock_order_3_sell, mock_order_4) def patch_RPCManager(mocker) -> MagicMock: From 7852feab0566ecdda19e705cd88c7c7bd61cd52b Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 7 Sep 2020 09:06:43 +0200 Subject: [PATCH 3105/3421] support smaller timeframes --- docs/strategy-customization.md | 6 +++++- freqtrade/strategy/strategy_helper.py | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 7396f2a89..a1de1044c 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -521,7 +521,7 @@ class SampleStrategy(IStrategy): # use ffill to have the 1d value available in every row throughout the day. # Without this, comparisons between columns of the original and the informative pair would only work once per day. # Full documentation of this method, see below - dataframe = merge_informative_pair(dataframe, informative_pairs, self.timeframe, inf_tf, ffill=True) + dataframe = merge_informative_pair(dataframe, informative, self.timeframe, inf_tf, ffill=True) # Calculate rsi of the original dataframe (5m timeframe) dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14) @@ -601,6 +601,10 @@ All columns of the informative dataframe will be available on the returning data ``` +!!! Warning "Informative timeframe < timeframe" + Using informative timeframes smaller than the dataframe timeframe is not recommended with this method, as it will not use any of the additional information this would provide. + To use the more detailed information properly, more advanced methods should be applied (which are out of scope for freqtrade documentation, as it'll depend on the respective need). + *** ## Additional data (Wallets) diff --git a/freqtrade/strategy/strategy_helper.py b/freqtrade/strategy/strategy_helper.py index 1fbf618bd..1a5b2d0f8 100644 --- a/freqtrade/strategy/strategy_helper.py +++ b/freqtrade/strategy/strategy_helper.py @@ -26,7 +26,8 @@ def merge_informative_pair(dataframe: pd.DataFrame, informative: pd.DataFrame, """ minutes_inf = timeframe_to_minutes(timeframe_inf) - if timeframe == timeframe_inf: + minutes = timeframe_to_minutes(timeframe) + if minutes >= minutes_inf: # No need to forwardshift if the timeframes are identical informative['date_merge'] = informative["date"] else: From 014fcb36f4e6b3da535dcc7ebaa604ea47f9e2d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2020 07:09:07 +0000 Subject: [PATCH 3106/3421] Bump mkdocs-material from 5.5.11 to 5.5.12 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.11 to 5.5.12. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.11...5.5.12) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index c8f08d12a..6408616a0 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.5.11 +mkdocs-material==5.5.12 mdx_truly_sane_lists==1.2 From 534404c284a3de1b8bc9b6cb4f8e9603c32f81c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2020 07:09:22 +0000 Subject: [PATCH 3107/3421] Bump ccxt from 1.33.72 to 1.34.3 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.33.72 to 1.34.3. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.33.72...1.34.3) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index f305d8793..58912bc0c 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.33.72 +ccxt==1.34.3 SQLAlchemy==1.3.19 python-telegram-bot==12.8 arrow==0.16.0 From ff0e73a9e592e4c61eca8fce97b0c84d5b886844 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2020 07:09:23 +0000 Subject: [PATCH 3108/3421] Bump scikit-optimize from 0.7.4 to 0.8.1 Bumps [scikit-optimize](https://github.com/scikit-optimize/scikit-optimize) from 0.7.4 to 0.8.1. - [Release notes](https://github.com/scikit-optimize/scikit-optimize/releases) - [Changelog](https://github.com/scikit-optimize/scikit-optimize/blob/master/CHANGELOG.md) - [Commits](https://github.com/scikit-optimize/scikit-optimize/compare/v0.7.4...v0.8.1) Signed-off-by: dependabot[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index fbc679eaa..ea24196b9 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -4,7 +4,7 @@ # Required for hyperopt scipy==1.5.2 scikit-learn==0.23.1 -scikit-optimize==0.7.4 +scikit-optimize==0.8.1 filelock==3.0.12 joblib==0.16.0 progressbar2==3.52.1 From f20318fad1b27039c8269984f4ea78cecb1aab90 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Sep 2020 07:37:12 +0000 Subject: [PATCH 3109/3421] Bump scikit-learn from 0.23.1 to 0.23.2 Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 0.23.1 to 0.23.2. - [Release notes](https://github.com/scikit-learn/scikit-learn/releases) - [Commits](https://github.com/scikit-learn/scikit-learn/compare/0.23.1...0.23.2) Signed-off-by: dependabot[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index ea24196b9..4d884b4fe 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -3,7 +3,7 @@ # Required for hyperopt scipy==1.5.2 -scikit-learn==0.23.1 +scikit-learn==0.23.2 scikit-optimize==0.8.1 filelock==3.0.12 joblib==0.16.0 From f63a3789672b7a5e58ce264688e26f895f26d747 Mon Sep 17 00:00:00 2001 From: Allen Day Date: Mon, 7 Sep 2020 23:26:55 +0800 Subject: [PATCH 3110/3421] Update hyperopt.py zero pad wins/draws/losses (W/D/L) column to preserve alignment in console pretty print --- freqtrade/optimize/hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index b9db3c09a..6d29be08e 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -574,7 +574,7 @@ class Hyperopt: 'wins': wins, 'draws': draws, 'losses': losses, - 'winsdrawslosses': f"{wins}/{draws}/{losses}", + 'winsdrawslosses': f"{wins:04}/{draws:04}/{losses:04}", 'avg_profit': backtesting_results.profit_percent.mean() * 100.0, 'median_profit': backtesting_results.profit_percent.median() * 100.0, 'total_profit': backtesting_results.profit_abs.sum(), From 3fe2ed0e189a2843c570e84395aea3c99e5b8af8 Mon Sep 17 00:00:00 2001 From: Allen Day Date: Mon, 7 Sep 2020 23:38:51 +0800 Subject: [PATCH 3111/3421] zero pad in test --- tests/optimize/test_hyperopt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index bb6f043e7..e7a26cd5f 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -813,7 +813,7 @@ def test_generate_optimizer(mocker, hyperopt_conf) -> None: 'draws': 0, 'duration': 100.0, 'losses': 0, - 'winsdrawslosses': '1/0/0', + 'winsdrawslosses': '0001/0000/0000', 'median_profit': 2.3117, 'profit': 2.3117, 'total_profit': 0.000233, From 8af610b543a82c8ebef54aeeaf834d092dceeea1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 9 Sep 2020 06:40:40 +0200 Subject: [PATCH 3112/3421] Add Test for reupdate_buy_order_fees --- tests/test_freqtradebot.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index f9bf37938..aef9b5f29 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -4301,3 +4301,40 @@ def test_update_closed_trades_without_assigned_fees(mocker, default_conf, fee): else: assert trade.fee_close_cost is not None assert trade.fee_close_currency is not None + + +@pytest.mark.usefixtures("init_persistence") +def test_reupdate_buy_order_fees(mocker, default_conf, fee, caplog): + freqtrade = get_patched_freqtradebot(mocker, default_conf) + mock_uts = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.update_trade_state') + + create_mock_trades(fee) + trades = Trade.get_trades().all() + + freqtrade.reupdate_buy_order_fees(trades[0]) + assert log_has_re(r"Trying to reupdate buy fees for .*", caplog) + assert mock_uts.call_count == 1 + assert mock_uts.call_args_list[0][0][0] == trades[0] + assert mock_uts.call_args_list[0][0][1] == '1234' + assert log_has_re(r"Updating buy-fee on trade .* for order .*\.", caplog) + mock_uts.reset_mock() + caplog.clear() + + # Test with trade without orders + trade = Trade( + pair='XRP/ETH', + stake_amount=0.001, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_date=arrow.utcnow().datetime, + is_open=True, + amount=20, + open_rate=0.01, + exchange='bittrex', + ) + Trade.session.add(trade) + + freqtrade.reupdate_buy_order_fees(trade) + assert log_has_re(r"Trying to reupdate buy fees for .*", caplog) + assert mock_uts.call_count == 0 + assert not log_has_re(r"Updating buy-fee on trade .* for order .*\.", caplog) From caf0476717c90f1c98d07fb6875ee4a60eeeda0d Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 9 Sep 2020 06:46:38 +0200 Subject: [PATCH 3113/3421] Add test for handle_insufficient_funds --- tests/test_freqtradebot.py | 64 +++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index aef9b5f29..c95a085a6 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -4315,7 +4315,7 @@ def test_reupdate_buy_order_fees(mocker, default_conf, fee, caplog): assert log_has_re(r"Trying to reupdate buy fees for .*", caplog) assert mock_uts.call_count == 1 assert mock_uts.call_args_list[0][0][0] == trades[0] - assert mock_uts.call_args_list[0][0][1] == '1234' + assert mock_uts.call_args_list[0][0][1] == mock_order_1()['id'] assert log_has_re(r"Updating buy-fee on trade .* for order .*\.", caplog) mock_uts.reset_mock() caplog.clear() @@ -4338,3 +4338,65 @@ def test_reupdate_buy_order_fees(mocker, default_conf, fee, caplog): assert log_has_re(r"Trying to reupdate buy fees for .*", caplog) assert mock_uts.call_count == 0 assert not log_has_re(r"Updating buy-fee on trade .* for order .*\.", caplog) + + +@pytest.mark.usefixtures("init_persistence") +def test_handle_insufficient_funds(mocker, default_conf, fee): + freqtrade = get_patched_freqtradebot(mocker, default_conf) + mock_rlo = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.refind_lost_order') + mock_bof = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.reupdate_buy_order_fees') + create_mock_trades(fee) + trades = Trade.get_trades().all() + + # Trade 0 has only a open buy order, no closed order + freqtrade.handle_insufficient_funds(trades[0]) + assert mock_rlo.call_count == 0 + assert mock_bof.call_count == 1 + + mock_rlo.reset_mock() + mock_bof.reset_mock() + + # Trade 1 has closed buy and sell orders + freqtrade.handle_insufficient_funds(trades[1]) + assert mock_rlo.call_count == 1 + assert mock_bof.call_count == 0 + + mock_rlo.reset_mock() + mock_bof.reset_mock() + + # Trade 2 has closed buy and sell orders + freqtrade.handle_insufficient_funds(trades[2]) + assert mock_rlo.call_count == 1 + assert mock_bof.call_count == 0 + + mock_rlo.reset_mock() + mock_bof.reset_mock() + + # Trade 3 has an opne buy order + freqtrade.handle_insufficient_funds(trades[3]) + assert mock_rlo.call_count == 0 + assert mock_bof.call_count == 1 + + +@pytest.mark.usefixtures("init_persistence") +def test_refind_lost_order(mocker, default_conf, fee, caplog): + freqtrade = get_patched_freqtradebot(mocker, default_conf) + mock_rlo = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.refind_lost_order') + mock_bof = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.reupdate_buy_order_fees') + + mocker.patch('freqtrade.exchange.Exchange.fetch_order_or_stoploss_order', + side_effect=[ + mock_order_2_sell(), + mock_order_3_sell(), + mock_order_1(), + mock_order_2(), + mock_order_3(), + mock_order_4(), + ]) + + create_mock_trades(fee) + trades = Trade.get_trades().all() + + # freqtrade.refind_lost_order(trades[0]) + + # TODO: Implement test here. From 98840eef3cd9d7f1008b95f4dad8b36a9d3ab66b Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 9 Sep 2020 07:01:43 +0200 Subject: [PATCH 3114/3421] Add 5th mock trade --- tests/commands/test_commands.py | 2 +- tests/conftest.py | 5 +++- tests/conftest_trades.py | 51 +++++++++++++++++++++++++++++++++ tests/data/test_btanalysis.py | 2 +- tests/test_freqtradebot.py | 13 +++++---- tests/test_persistence.py | 4 +-- 6 files changed, 66 insertions(+), 11 deletions(-) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 26875fb7f..290a3fa77 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -1116,7 +1116,7 @@ def test_show_trades(mocker, fee, capsys, caplog): pargs = get_args(args) pargs['config'] = None start_show_trades(pargs) - assert log_has("Printing 4 Trades: ", caplog) + assert log_has("Printing 5 Trades: ", caplog) captured = capsys.readouterr() assert "Trade(id=1" in captured.out assert "Trade(id=2" in captured.out diff --git a/tests/conftest.py b/tests/conftest.py index a63b4e314..1ef495301 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -23,7 +23,7 @@ from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver from freqtrade.worker import Worker from tests.conftest_trades import (mock_trade_1, mock_trade_2, mock_trade_3, - mock_trade_4) + mock_trade_4, mock_trade_5) logging.getLogger('').setLevel(logging.INFO) @@ -186,6 +186,9 @@ def create_mock_trades(fee): trade = mock_trade_4(fee) Trade.session.add(trade) + trade = mock_trade_5(fee) + Trade.session.add(trade) + @pytest.fixture(autouse=True) def patch_coingekko(mocker) -> None: diff --git a/tests/conftest_trades.py b/tests/conftest_trades.py index c990f6cdc..d3e19603b 100644 --- a/tests/conftest_trades.py +++ b/tests/conftest_trades.py @@ -172,3 +172,54 @@ def mock_trade_4(fee): o = Order.parse_from_ccxt_object(mock_order_4(), 'ETH/BTC', 'buy') trade.orders.append(o) return trade + + +def mock_order_5(): + return { + 'id': 'prod_buy_3455', + 'symbol': 'XRP/BTC', + 'status': 'closed', + 'side': 'buy', + 'type': 'limit', + 'price': 0.123, + 'amount': 123.0, + 'filled': 123.0, + 'remaining': 0.0, + } + + +def mock_order_5_stoploss(): + return { + 'id': 'prod_stoploss_3455', + 'symbol': 'XRP/BTC', + 'status': 'open', + 'side': 'sell', + 'type': 'stop_loss_limit', + 'price': 0.123, + 'amount': 123.0, + 'filled': 0.0, + 'remaining': 123.0, + } + + +def mock_trade_5(fee): + """ + Simulate prod entry with stoploss + """ + trade = Trade( + pair='XRP/BTC', + stake_amount=0.001, + amount=123.0, + amount_requested=124.0, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_rate=0.123, + exchange='bittrex', + strategy='SampleStrategy', + stoploss_order_id='prod_stoploss_3455' + ) + o = Order.parse_from_ccxt_object(mock_order_5(), 'ETH/BTC', 'buy') + trade.orders.append(o) + o = Order.parse_from_ccxt_object(mock_order_5_stoploss(), 'ETH/BTC', 'sell') + trade.orders.append(o) + return trade diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index e2ca66bd8..3b5672e65 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -110,7 +110,7 @@ def test_load_trades_from_db(default_conf, fee, mocker): trades = load_trades_from_db(db_url=default_conf['db_url']) assert init_mock.call_count == 1 - assert len(trades) == 4 + assert len(trades) == 5 assert isinstance(trades, DataFrame) assert "pair" in trades.columns assert "open_date" in trades.columns diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index c95a085a6..883c63737 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -4213,7 +4213,7 @@ def test_cancel_all_open_orders(mocker, default_conf, fee, limit_buy_order, limi freqtrade = get_patched_freqtradebot(mocker, default_conf) create_mock_trades(fee) trades = Trade.query.all() - assert len(trades) == 4 + assert len(trades) == 5 freqtrade.cancel_all_open_orders() assert buy_mock.call_count == 1 assert sell_mock.call_count == 1 @@ -4244,14 +4244,15 @@ def test_update_open_orders(mocker, default_conf, fee, caplog): assert log_has_re(r"Error updating Order .*", caplog) caplog.clear() - assert len(Order.get_open_orders()) == 1 + assert len(Order.get_open_orders()) == 2 matching_buy_order = mock_order_4() matching_buy_order.update({ 'status': 'closed', }) mocker.patch('freqtrade.exchange.Exchange.fetch_order', return_value=matching_buy_order) freqtrade.update_open_orders() - assert len(Order.get_open_orders()) == 0 + # Only stoploss order is kept open + assert len(Order.get_open_orders()) == 1 @pytest.mark.usefixtures("init_persistence") @@ -4276,7 +4277,7 @@ def test_update_closed_trades_without_assigned_fees(mocker, default_conf, fee): create_mock_trades(fee) trades = Trade.get_trades().all() - assert len(trades) == 4 + assert len(trades) == 5 for trade in trades: assert trade.fee_open_cost is None assert trade.fee_open_currency is None @@ -4285,8 +4286,8 @@ def test_update_closed_trades_without_assigned_fees(mocker, default_conf, fee): freqtrade.update_closed_trades_without_assigned_fees() - # trades = Trade.get_trades().all() - assert len(trades) == 4 + trades = Trade.get_trades().all() + assert len(trades) == 5 for trade in trades: if trade.is_open: diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 788debace..48b918128 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -734,7 +734,7 @@ def test_adjust_min_max_rates(fee): def test_get_open(default_conf, fee): create_mock_trades(fee) - assert len(Trade.get_open_trades()) == 2 + assert len(Trade.get_open_trades()) == 3 @pytest.mark.usefixtures("init_persistence") @@ -1004,7 +1004,7 @@ def test_total_open_trades_stakes(fee): assert res == 0 create_mock_trades(fee) res = Trade.total_open_trades_stakes() - assert res == 0.002 + assert res == 0.003 @pytest.mark.usefixtures("init_persistence") From 25938efee665389eb8c013b942205dceaf1e23d0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 9 Sep 2020 07:50:52 +0200 Subject: [PATCH 3115/3421] Add partial test for refind_order --- freqtrade/freqtradebot.py | 2 +- tests/conftest_trades.py | 2 +- tests/test_freqtradebot.py | 51 +++++++++++++++++++++++++++----------- 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 1af0e85b7..c20a57205 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -333,7 +333,7 @@ class FreqtradeBot: stoploss_order=order.ft_order_side == 'stoploss') except ExchangeError: - logger.warning(f"Error updating {order.order_id}") + logger.warning(f"Error updating {order.order_id}.") # # BUY / enter positions / open trades logic and methods diff --git a/tests/conftest_trades.py b/tests/conftest_trades.py index d3e19603b..03af7fa1d 100644 --- a/tests/conftest_trades.py +++ b/tests/conftest_trades.py @@ -220,6 +220,6 @@ def mock_trade_5(fee): ) o = Order.parse_from_ccxt_object(mock_order_5(), 'ETH/BTC', 'buy') trade.orders.append(o) - o = Order.parse_from_ccxt_object(mock_order_5_stoploss(), 'ETH/BTC', 'sell') + o = Order.parse_from_ccxt_object(mock_order_5_stoploss(), 'ETH/BTC', 'stoploss') trade.orders.append(o) return trade diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 883c63737..625c6ed7e 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -29,7 +29,7 @@ from tests.conftest import (create_mock_trades, get_patched_freqtradebot, patch_wallet, patch_whitelist) from tests.conftest_trades import (mock_order_1, mock_order_2, mock_order_2_sell, mock_order_3, - mock_order_3_sell, mock_order_4) + mock_order_3_sell, mock_order_4, mock_order_5_stoploss) def patch_RPCManager(mocker) -> MagicMock: @@ -4382,22 +4382,45 @@ def test_handle_insufficient_funds(mocker, default_conf, fee): @pytest.mark.usefixtures("init_persistence") def test_refind_lost_order(mocker, default_conf, fee, caplog): freqtrade = get_patched_freqtradebot(mocker, default_conf) - mock_rlo = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.refind_lost_order') - mock_bof = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.reupdate_buy_order_fees') + mock_uts = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.update_trade_state') - mocker.patch('freqtrade.exchange.Exchange.fetch_order_or_stoploss_order', - side_effect=[ - mock_order_2_sell(), - mock_order_3_sell(), - mock_order_1(), - mock_order_2(), - mock_order_3(), - mock_order_4(), - ]) + mock_fo = mocker.patch('freqtrade.exchange.Exchange.fetch_order_or_stoploss_order') create_mock_trades(fee) trades = Trade.get_trades().all() - # freqtrade.refind_lost_order(trades[0]) + caplog.clear() - # TODO: Implement test here. + # No open order + freqtrade.refind_lost_order(trades[0]) + order = mock_order_1() + assert log_has_re(r"Order Order(.*order_id=" + order['id'] + ".*) is no longer open.", caplog) + assert mock_fo.call_count == 0 + assert mock_uts.call_count == 0 + + caplog.clear() + mock_fo.reset_mock() + + # Open buy order + freqtrade.refind_lost_order(trades[3]) + order = mock_order_4() + assert log_has_re(r"Trying to refind Order\(.*", caplog) + assert mock_fo.call_count == 0 + assert mock_uts.call_count == 0 + + caplog.clear() + mock_fo.reset_mock() + + # Open stoploss order + freqtrade.refind_lost_order(trades[4]) + order = mock_order_5_stoploss() + assert log_has_re(r"Trying to refind Order\(.*", caplog) + assert mock_fo.call_count == 1 + assert mock_uts.call_count == 1 + + # Test error case + mock_fo = mocker.patch('freqtrade.exchange.Exchange.fetch_order_or_stoploss_order', + side_effect=ExchangeError()) + freqtrade.refind_lost_order(trades[4]) + caplog.clear() + assert log_has(f"Error updating {order['id']}.", caplog) From 083c358044d53b2303f2dbbeb260d2b1fad09dd9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 9 Sep 2020 07:57:02 +0200 Subject: [PATCH 3116/3421] Fix wrong sequence in test --- tests/test_freqtradebot.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 625c6ed7e..542206e62 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -4418,9 +4418,10 @@ def test_refind_lost_order(mocker, default_conf, fee, caplog): assert mock_fo.call_count == 1 assert mock_uts.call_count == 1 + caplog.clear() + # Test error case mock_fo = mocker.patch('freqtrade.exchange.Exchange.fetch_order_or_stoploss_order', side_effect=ExchangeError()) freqtrade.refind_lost_order(trades[4]) - caplog.clear() assert log_has(f"Error updating {order['id']}.", caplog) From 4cf66e2fba76d3aab734bffe94063ca906c74bbc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Sep 2020 13:29:22 +0000 Subject: [PATCH 3117/3421] Bump progressbar2 from 3.52.1 to 3.53.1 Bumps [progressbar2](https://github.com/WoLpH/python-progressbar) from 3.52.1 to 3.53.1. - [Release notes](https://github.com/WoLpH/python-progressbar/releases) - [Changelog](https://github.com/WoLpH/python-progressbar/blob/develop/CHANGES.rst) - [Commits](https://github.com/WoLpH/python-progressbar/compare/v3.52.1...v3.53.1) Signed-off-by: dependabot[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 4d884b4fe..b47331aa3 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -7,4 +7,4 @@ scikit-learn==0.23.2 scikit-optimize==0.8.1 filelock==3.0.12 joblib==0.16.0 -progressbar2==3.52.1 +progressbar2==3.53.1 From 986e767d6c4ec460cc35b95db178e19bbef9de2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Sep 2020 13:29:27 +0000 Subject: [PATCH 3118/3421] Bump blosc from 1.9.1 to 1.9.2 Bumps [blosc](https://github.com/blosc/python-blosc) from 1.9.1 to 1.9.2. - [Release notes](https://github.com/blosc/python-blosc/releases) - [Changelog](https://github.com/Blosc/python-blosc/blob/master/RELEASE_NOTES.rst) - [Commits](https://github.com/blosc/python-blosc/compare/v1.9.1...v1.9.2) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 58912bc0c..5efc6a2ee 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -14,7 +14,7 @@ tabulate==0.8.7 pycoingecko==1.3.0 jinja2==2.11.2 tables==3.6.1 -blosc==1.9.1 +blosc==1.9.2 # find first, C search in arrays py_find_1st==1.1.4 From d8dae46544987a2f5d672d1128851d47d5f6d9bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Sep 2020 13:29:31 +0000 Subject: [PATCH 3119/3421] Bump ccxt from 1.34.3 to 1.34.11 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.34.3 to 1.34.11. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.34.3...1.34.11) Signed-off-by: dependabot[bot] --- requirements-common.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-common.txt b/requirements-common.txt index 58912bc0c..faa022c4c 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -1,6 +1,6 @@ # requirements without requirements installable via conda # mainly used for Raspberry pi installs -ccxt==1.34.3 +ccxt==1.34.11 SQLAlchemy==1.3.19 python-telegram-bot==12.8 arrow==0.16.0 From 8c97b83b8c44de9f7b921cba6bec3bdeb39e5527 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Sep 2020 13:29:36 +0000 Subject: [PATCH 3120/3421] Bump pandas from 1.1.1 to 1.1.2 Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.1.1 to 1.1.2. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v1.1.1...v1.1.2) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 66f4cbc5f..a1a1fb250 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ -r requirements-common.txt numpy==1.19.1 -pandas==1.1.1 +pandas==1.1.2 From 4480b3b39374439296407128b816a797749865c9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 9 Sep 2020 15:39:35 +0200 Subject: [PATCH 3121/3421] Fix error in documentation (wrong sequence of steps) --- docs/strategy-customization.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index a1de1044c..615be0247 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -580,10 +580,6 @@ All columns of the informative dataframe will be available on the returning data A custom implementation for this is possible, and can be done as follows: ``` python - # Rename columns to be unique - informative.columns = [f"{col}_{inf_tf}" for col in informative.columns] - # Assuming inf_tf = '1d' - then the columns will now be: - # date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d # Shift date by 1 candle # This is necessary since the data is always the "open date" @@ -592,6 +588,11 @@ All columns of the informative dataframe will be available on the returning data # Only do this if the timeframes are different: informative['date_merge'] = informative["date"] + pd.to_timedelta(minutes, 'm') + # Rename columns to be unique + informative.columns = [f"{col}_{inf_tf}" for col in informative.columns] + # Assuming inf_tf = '1d' - then the columns will now be: + # date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d + # Combine the 2 dataframes # all indicators on the informative sample MUST be calculated before this point dataframe = pd.merge(dataframe, informative, left_on='date', right_on=f'date_merge_{inf_tf}', how='left') From c3e0397743a61227c741585fc5c97bb45a486cee Mon Sep 17 00:00:00 2001 From: Blackhawke Date: Wed, 9 Sep 2020 09:16:11 -0700 Subject: [PATCH 3122/3421] Added full "source" command to virtualenv in easy install --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index c03be55d1..da82d632f 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -63,7 +63,7 @@ With this option, the script will install the bot and most dependencies: You will need to have git and python3.6+ installed beforehand for this to work. * Mandatory software as: `ta-lib` -* Setup your virtualenv under `.env/` +* Setup your virtualenv: `source .env/bin/activate` This option is a combination of installation tasks, `--reset` and `--config`. From 3c521f55b234bd1f7109342c963d72cdf5fec9a3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 10 Sep 2020 07:40:19 +0200 Subject: [PATCH 3123/3421] Add 6th mock trade --- tests/commands/test_commands.py | 3 +- tests/conftest.py | 5 ++- tests/conftest_trades.py | 68 +++++++++++++++++++++++++++++---- tests/data/test_btanalysis.py | 3 +- tests/test_freqtradebot.py | 18 ++++----- tests/test_persistence.py | 6 +-- 6 files changed, 81 insertions(+), 22 deletions(-) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 290a3fa77..a35fc9fb8 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -18,6 +18,7 @@ from freqtrade.state import RunMode from tests.conftest import (create_mock_trades, get_args, log_has, log_has_re, patch_exchange, patched_configuration_load_config_file) +from tests.conftest_trades import MOCK_TRADE_COUNT def test_setup_utils_configuration(): @@ -1116,7 +1117,7 @@ def test_show_trades(mocker, fee, capsys, caplog): pargs = get_args(args) pargs['config'] = None start_show_trades(pargs) - assert log_has("Printing 5 Trades: ", caplog) + assert log_has(f"Printing {MOCK_TRADE_COUNT} Trades: ", caplog) captured = capsys.readouterr() assert "Trade(id=1" in captured.out assert "Trade(id=2" in captured.out diff --git a/tests/conftest.py b/tests/conftest.py index 1ef495301..fe55c8784 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -23,7 +23,7 @@ from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver from freqtrade.worker import Worker from tests.conftest_trades import (mock_trade_1, mock_trade_2, mock_trade_3, - mock_trade_4, mock_trade_5) + mock_trade_4, mock_trade_5, mock_trade_6) logging.getLogger('').setLevel(logging.INFO) @@ -189,6 +189,9 @@ def create_mock_trades(fee): trade = mock_trade_5(fee) Trade.session.add(trade) + trade = mock_trade_6(fee) + Trade.session.add(trade) + @pytest.fixture(autouse=True) def patch_coingekko(mocker) -> None: diff --git a/tests/conftest_trades.py b/tests/conftest_trades.py index 03af7fa1d..43bf15e51 100644 --- a/tests/conftest_trades.py +++ b/tests/conftest_trades.py @@ -1,6 +1,9 @@ from freqtrade.persistence.models import Order, Trade +MOCK_TRADE_COUNT = 6 + + def mock_order_1(): return { 'id': '1234', @@ -80,9 +83,9 @@ def mock_trade_2(fee): open_order_id='dry_run_sell_12345', strategy='DefaultStrategy', ) - o = Order.parse_from_ccxt_object(mock_order_2(), 'ETH/BTC', 'buy') + o = Order.parse_from_ccxt_object(mock_order_2(), 'ETC/BTC', 'buy') trade.orders.append(o) - o = Order.parse_from_ccxt_object(mock_order_2_sell(), 'ETH/BTC', 'sell') + o = Order.parse_from_ccxt_object(mock_order_2_sell(), 'ETC/BTC', 'sell') trade.orders.append(o) return trade @@ -132,9 +135,9 @@ def mock_trade_3(fee): exchange='bittrex', is_open=False, ) - o = Order.parse_from_ccxt_object(mock_order_3(), 'ETH/BTC', 'buy') + o = Order.parse_from_ccxt_object(mock_order_3(), 'XRP/BTC', 'buy') trade.orders.append(o) - o = Order.parse_from_ccxt_object(mock_order_3_sell(), 'ETH/BTC', 'sell') + o = Order.parse_from_ccxt_object(mock_order_3_sell(), 'XRP/BTC', 'sell') trade.orders.append(o) return trade @@ -169,7 +172,7 @@ def mock_trade_4(fee): open_order_id='prod_buy_12345', strategy='DefaultStrategy', ) - o = Order.parse_from_ccxt_object(mock_order_4(), 'ETH/BTC', 'buy') + o = Order.parse_from_ccxt_object(mock_order_4(), 'ETC/BTC', 'buy') trade.orders.append(o) return trade @@ -218,8 +221,59 @@ def mock_trade_5(fee): strategy='SampleStrategy', stoploss_order_id='prod_stoploss_3455' ) - o = Order.parse_from_ccxt_object(mock_order_5(), 'ETH/BTC', 'buy') + o = Order.parse_from_ccxt_object(mock_order_5(), 'XRP/BTC', 'buy') trade.orders.append(o) - o = Order.parse_from_ccxt_object(mock_order_5_stoploss(), 'ETH/BTC', 'stoploss') + o = Order.parse_from_ccxt_object(mock_order_5_stoploss(), 'XRP/BTC', 'stoploss') + trade.orders.append(o) + return trade + + +def mock_order_6(): + return { + 'id': 'prod_buy_6', + 'symbol': 'LTC/BTC', + 'status': 'closed', + 'side': 'buy', + 'type': 'limit', + 'price': 0.15, + 'amount': 2.0, + 'filled': 2.0, + 'remaining': 0.0, + } + + +def mock_order_6_sell(): + return { + 'id': 'prod_sell_6', + 'symbol': 'LTC/BTC', + 'status': 'open', + 'side': 'sell', + 'type': 'limit', + 'price': 0.20, + 'amount': 2.0, + 'filled': 0.0, + 'remaining': 2.0, + } + + +def mock_trade_6(fee): + """ + Simulate prod entry with open sell order + """ + trade = Trade( + pair='LTC/BTC', + stake_amount=0.001, + amount=2.0, + amount_requested=2.0, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_rate=0.15, + exchange='bittrex', + strategy='SampleStrategy', + open_order_id="prod_sell_6", + ) + o = Order.parse_from_ccxt_object(mock_order_6(), 'LTC/BTC', 'buy') + trade.orders.append(o) + o = Order.parse_from_ccxt_object(mock_order_6_sell(), 'LTC/BTC', 'stoploss') trade.orders.append(o) return trade diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 3b5672e65..564dae0b1 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -20,6 +20,7 @@ from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, from freqtrade.data.history import load_data, load_pair_history from freqtrade.optimize.backtesting import BacktestResult from tests.conftest import create_mock_trades +from tests.conftest_trades import MOCK_TRADE_COUNT def test_get_latest_backtest_filename(testdatadir, mocker): @@ -110,7 +111,7 @@ def test_load_trades_from_db(default_conf, fee, mocker): trades = load_trades_from_db(db_url=default_conf['db_url']) assert init_mock.call_count == 1 - assert len(trades) == 5 + assert len(trades) == MOCK_TRADE_COUNT assert isinstance(trades, DataFrame) assert "pair" in trades.columns assert "open_date" in trades.columns diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 542206e62..ace44bfae 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -27,7 +27,7 @@ from tests.conftest import (create_mock_trades, get_patched_freqtradebot, get_patched_worker, log_has, log_has_re, patch_edge, patch_exchange, patch_get_signal, patch_wallet, patch_whitelist) -from tests.conftest_trades import (mock_order_1, mock_order_2, +from tests.conftest_trades import (MOCK_TRADE_COUNT, mock_order_1, mock_order_2, mock_order_2_sell, mock_order_3, mock_order_3_sell, mock_order_4, mock_order_5_stoploss) @@ -4206,17 +4206,17 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order_ def test_cancel_all_open_orders(mocker, default_conf, fee, limit_buy_order, limit_sell_order): default_conf['cancel_open_orders_on_exit'] = True mocker.patch('freqtrade.exchange.Exchange.fetch_order', - side_effect=[ExchangeError(), limit_sell_order, limit_buy_order]) + side_effect=[ExchangeError(), limit_sell_order, limit_buy_order, limit_sell_order, ]) buy_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_cancel_buy') sell_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_cancel_sell') freqtrade = get_patched_freqtradebot(mocker, default_conf) create_mock_trades(fee) trades = Trade.query.all() - assert len(trades) == 5 + assert len(trades) == MOCK_TRADE_COUNT freqtrade.cancel_all_open_orders() assert buy_mock.call_count == 1 - assert sell_mock.call_count == 1 + assert sell_mock.call_count == 2 @pytest.mark.usefixtures("init_persistence") @@ -4244,15 +4244,15 @@ def test_update_open_orders(mocker, default_conf, fee, caplog): assert log_has_re(r"Error updating Order .*", caplog) caplog.clear() - assert len(Order.get_open_orders()) == 2 + assert len(Order.get_open_orders()) == 3 matching_buy_order = mock_order_4() matching_buy_order.update({ 'status': 'closed', }) mocker.patch('freqtrade.exchange.Exchange.fetch_order', return_value=matching_buy_order) freqtrade.update_open_orders() - # Only stoploss order is kept open - assert len(Order.get_open_orders()) == 1 + # Only stoploss and sell orders are kept open + assert len(Order.get_open_orders()) == 2 @pytest.mark.usefixtures("init_persistence") @@ -4277,7 +4277,7 @@ def test_update_closed_trades_without_assigned_fees(mocker, default_conf, fee): create_mock_trades(fee) trades = Trade.get_trades().all() - assert len(trades) == 5 + assert len(trades) == MOCK_TRADE_COUNT for trade in trades: assert trade.fee_open_cost is None assert trade.fee_open_currency is None @@ -4287,7 +4287,7 @@ def test_update_closed_trades_without_assigned_fees(mocker, default_conf, fee): freqtrade.update_closed_trades_without_assigned_fees() trades = Trade.get_trades().all() - assert len(trades) == 5 + assert len(trades) == MOCK_TRADE_COUNT for trade in trades: if trade.is_open: diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 48b918128..d2da1c6a2 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -731,10 +731,10 @@ def test_adjust_min_max_rates(fee): @pytest.mark.usefixtures("init_persistence") -def test_get_open(default_conf, fee): +def test_get_open(fee): create_mock_trades(fee) - assert len(Trade.get_open_trades()) == 3 + assert len(Trade.get_open_trades()) == 4 @pytest.mark.usefixtures("init_persistence") @@ -1004,7 +1004,7 @@ def test_total_open_trades_stakes(fee): assert res == 0 create_mock_trades(fee) res = Trade.total_open_trades_stakes() - assert res == 0.003 + assert res == 0.004 @pytest.mark.usefixtures("init_persistence") From 23f569ea38aded041e61ad5b3daa6f73d37b8247 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 10 Sep 2020 08:03:26 +0200 Subject: [PATCH 3124/3421] Add test for sell order refind, improve overall test for this function --- tests/conftest_trades.py | 2 +- tests/test_freqtradebot.py | 60 ++++++++++++++++++++++++++++++++++---- 2 files changed, 56 insertions(+), 6 deletions(-) diff --git a/tests/conftest_trades.py b/tests/conftest_trades.py index 43bf15e51..78388f022 100644 --- a/tests/conftest_trades.py +++ b/tests/conftest_trades.py @@ -274,6 +274,6 @@ def mock_trade_6(fee): ) o = Order.parse_from_ccxt_object(mock_order_6(), 'LTC/BTC', 'buy') trade.orders.append(o) - o = Order.parse_from_ccxt_object(mock_order_6_sell(), 'LTC/BTC', 'stoploss') + o = Order.parse_from_ccxt_object(mock_order_6_sell(), 'LTC/BTC', 'sell') trade.orders.append(o) return trade diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index ace44bfae..29792c248 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -29,7 +29,7 @@ from tests.conftest import (create_mock_trades, get_patched_freqtradebot, patch_wallet, patch_whitelist) from tests.conftest_trades import (MOCK_TRADE_COUNT, mock_order_1, mock_order_2, mock_order_2_sell, mock_order_3, - mock_order_3_sell, mock_order_4, mock_order_5_stoploss) + mock_order_3_sell, mock_order_4, mock_order_5_stoploss, mock_order_6_sell) def patch_RPCManager(mocker) -> MagicMock: @@ -4384,7 +4384,12 @@ def test_refind_lost_order(mocker, default_conf, fee, caplog): freqtrade = get_patched_freqtradebot(mocker, default_conf) mock_uts = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.update_trade_state') - mock_fo = mocker.patch('freqtrade.exchange.Exchange.fetch_order_or_stoploss_order') + mock_fo = mocker.patch('freqtrade.exchange.Exchange.fetch_order_or_stoploss_order', + return_value={'status': 'open'}) + + def reset_open_orders(trade): + trade.open_order_id = None + trade.stoploss_order_id = None create_mock_trades(fee) trades = Trade.get_trades().all() @@ -4392,36 +4397,81 @@ def test_refind_lost_order(mocker, default_conf, fee, caplog): caplog.clear() # No open order - freqtrade.refind_lost_order(trades[0]) + trade = trades[0] + reset_open_orders(trade) + assert trade.open_order_id is None + assert trade.stoploss_order_id is None + + freqtrade.refind_lost_order(trade) order = mock_order_1() assert log_has_re(r"Order Order(.*order_id=" + order['id'] + ".*) is no longer open.", caplog) assert mock_fo.call_count == 0 assert mock_uts.call_count == 0 + # No change to orderid - as update_trade_state is mocked + assert trade.open_order_id is None + assert trade.stoploss_order_id is None caplog.clear() mock_fo.reset_mock() # Open buy order - freqtrade.refind_lost_order(trades[3]) + trade = trades[3] + reset_open_orders(trade) + assert trade.open_order_id is None + assert trade.stoploss_order_id is None + + freqtrade.refind_lost_order(trade) order = mock_order_4() assert log_has_re(r"Trying to refind Order\(.*", caplog) assert mock_fo.call_count == 0 assert mock_uts.call_count == 0 + # No change to orderid - as update_trade_state is mocked + assert trade.open_order_id is None + assert trade.stoploss_order_id is None caplog.clear() mock_fo.reset_mock() # Open stoploss order - freqtrade.refind_lost_order(trades[4]) + trade = trades[4] + reset_open_orders(trade) + assert trade.open_order_id is None + assert trade.stoploss_order_id is None + + freqtrade.refind_lost_order(trade) order = mock_order_5_stoploss() assert log_has_re(r"Trying to refind Order\(.*", caplog) assert mock_fo.call_count == 1 assert mock_uts.call_count == 1 + # stoploss_order_id is "refound" and added to the trade + assert trade.open_order_id is None + assert trade.stoploss_order_id is not None + + caplog.clear() + mock_fo.reset_mock() + mock_uts.reset_mock() + + # Open sell order + trade = trades[5] + reset_open_orders(trade) + assert trade.open_order_id is None + assert trade.stoploss_order_id is None + + freqtrade.refind_lost_order(trade) + order = mock_order_6_sell() + assert log_has_re(r"Trying to refind Order\(.*", caplog) + assert mock_fo.call_count == 1 + assert mock_uts.call_count == 1 + # sell-orderid is "refound" and added to the trade + assert trade.open_order_id == order['id'] + assert trade.stoploss_order_id is None caplog.clear() # Test error case mock_fo = mocker.patch('freqtrade.exchange.Exchange.fetch_order_or_stoploss_order', side_effect=ExchangeError()) + order = mock_order_5_stoploss() + freqtrade.refind_lost_order(trades[4]) assert log_has(f"Error updating {order['id']}.", caplog) From 6a08fee25b88b8f4824bcc5f76f2dc3ee7c96529 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 10 Sep 2020 08:04:04 +0200 Subject: [PATCH 3125/3421] Fix wrong import in documentation --- docs/strategy-customization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 615be0247..14d5fcd84 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -483,7 +483,7 @@ if self.dp: ### Complete Data-provider sample ```python -from freqtrade.strategy import IStrategy, merge_informative_pairs +from freqtrade.strategy import IStrategy, merge_informative_pair from pandas import DataFrame class SampleStrategy(IStrategy): From 4db8c779fc30eb5efb0ec6661e0cfa46a47ff007 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 10 Sep 2020 08:19:40 +0200 Subject: [PATCH 3126/3421] Fix formatting issues --- tests/test_freqtradebot.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 29792c248..03b338bab 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -27,9 +27,11 @@ from tests.conftest import (create_mock_trades, get_patched_freqtradebot, get_patched_worker, log_has, log_has_re, patch_edge, patch_exchange, patch_get_signal, patch_wallet, patch_whitelist) -from tests.conftest_trades import (MOCK_TRADE_COUNT, mock_order_1, mock_order_2, - mock_order_2_sell, mock_order_3, - mock_order_3_sell, mock_order_4, mock_order_5_stoploss, mock_order_6_sell) +from tests.conftest_trades import (MOCK_TRADE_COUNT, mock_order_1, + mock_order_2, mock_order_2_sell, + mock_order_3, mock_order_3_sell, + mock_order_4, mock_order_5_stoploss, + mock_order_6_sell) def patch_RPCManager(mocker) -> MagicMock: @@ -4206,7 +4208,8 @@ def test_sync_wallet_dry_run(mocker, default_conf, ticker, fee, limit_buy_order_ def test_cancel_all_open_orders(mocker, default_conf, fee, limit_buy_order, limit_sell_order): default_conf['cancel_open_orders_on_exit'] = True mocker.patch('freqtrade.exchange.Exchange.fetch_order', - side_effect=[ExchangeError(), limit_sell_order, limit_buy_order, limit_sell_order, ]) + side_effect=[ + ExchangeError(), limit_sell_order, limit_buy_order, limit_sell_order]) buy_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_cancel_buy') sell_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_cancel_sell') From 85d90645c73a7fbef781c6afe998f8cfad84beca Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 10 Sep 2020 15:42:34 +0200 Subject: [PATCH 3127/3421] Remove duplciate check for buy orders --- freqtrade/freqtradebot.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c20a57205..7d94b6cee 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -324,9 +324,6 @@ class FreqtradeBot: if fo and fo['status'] == 'open': # Assume this as the open order trade.open_order_id = order.order_id - else: - # No action for buy orders ... - continue if fo: logger.info(f"Found {order} for trade {trade}.jj") self.update_trade_state(trade, order.order_id, fo, From b8773de5b0d39163c9ded61e312578791ad9bb98 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 11 Sep 2020 06:44:20 +0200 Subject: [PATCH 3128/3421] scoped sessions should be closed after requests --- freqtrade/rpc/api_server.py | 10 +++++++++- tests/rpc/test_rpc_apiserver.py | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 4bbc8a1dc..0ae0698cd 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -17,8 +17,9 @@ from werkzeug.serving import make_server from freqtrade.__init__ import __version__ from freqtrade.constants import DATETIME_PRINT_FORMAT -from freqtrade.rpc.rpc import RPC, RPCException +from freqtrade.persistence import Trade from freqtrade.rpc.fiat_convert import CryptoToFiatConverter +from freqtrade.rpc.rpc import RPC, RPCException logger = logging.getLogger(__name__) @@ -70,6 +71,11 @@ def rpc_catch_errors(func: Callable[..., Any]): return func_wrapper +def shutdown_session(exception=None): + # Remove scoped session + Trade.session.remove() + + class ApiServer(RPC): """ This class runs api server and provides rpc.rpc functionality to it @@ -104,6 +110,8 @@ class ApiServer(RPC): self.jwt = JWTManager(self.app) self.app.json_encoder = ArrowJSONEncoder + self.app.teardown_appcontext(shutdown_session) + # Register application handling self.register_rest_rpc_urls() diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index d9f5bf781..f8256f1ba 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -471,6 +471,7 @@ def test_api_edge_disabled(botclient, mocker, ticker, fee, markets): assert rc.json == {"error": "Error querying _edge: Edge is not enabled."} +@pytest.mark.usefixtures("init_persistence") def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, limit_sell_order): ftbot, client = botclient patch_get_signal(ftbot, (True, False)) @@ -498,6 +499,7 @@ def test_api_profit(botclient, mocker, ticker, fee, markets, limit_buy_order, li assert rc.json['best_pair'] == '' assert rc.json['best_rate'] == 0 + trade = Trade.query.first() trade.update(limit_sell_order) trade.close_date = datetime.utcnow() From 41942e3af1c93a7d1301724c4467863c124f3110 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 11 Sep 2020 06:59:07 +0200 Subject: [PATCH 3129/3421] Update docstring for select_order --- freqtrade/persistence/models.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 79b3d491b..dc123a8d9 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -522,8 +522,10 @@ class Trade(_DECL_BASE): def select_order(self, order_side: str, status: Optional[str]) -> Optional[Order]: """ - Returns latest order for this orderside and status - Returns None if nothing is found + Finds latest order for this orderside and status + :param order_side: Side of the order (either 'buy' or 'sell') + :param status: Optionally filter on open / closed orders + :return: latest Order object if it exists, else None """ orders = [o for o in self.orders if o.side == order_side] if status: From aa8832f70e3b8fa8451664d7b802b2603213ebeb Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 11 Sep 2020 07:12:10 +0200 Subject: [PATCH 3130/3421] Convert select_order to use ft_is_open flag --- freqtrade/freqtradebot.py | 6 ++--- freqtrade/persistence/models.py | 8 +++--- tests/test_freqtradebot.py | 2 +- tests/test_persistence.py | 45 +++++++++++++++++++++++++++++++++ 4 files changed, 53 insertions(+), 8 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 7d94b6cee..71ced3212 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -260,7 +260,7 @@ class FreqtradeBot: if not trade.is_open and not trade.fee_updated('sell'): # Get sell fee - order = trade.select_order('sell', 'closed') + order = trade.select_order('sell', False) if order: logger.info(f"Updating sell-fee on trade {trade} for order {order.order_id}.") self.update_trade_state(trade, order.order_id, @@ -269,7 +269,7 @@ class FreqtradeBot: trades: List[Trade] = Trade.get_open_trades_without_assigned_fees() for trade in trades: if trade.is_open and not trade.fee_updated('buy'): - order = trade.select_order('buy', 'closed') + order = trade.select_order('buy', False) if order: logger.info(f"Updating buy-fee on trade {trade} for order {order.order_id}.") self.update_trade_state(trade, order.order_id) @@ -291,7 +291,7 @@ class FreqtradeBot: Handles trades where the initial fee-update did not work. """ logger.info(f"Trying to reupdate buy fees for {trade}") - order = trade.select_order('buy', 'closed') + order = trade.select_order('buy', False) if order: logger.info(f"Updating buy-fee on trade {trade} for order {order.order_id}.") self.update_trade_state(trade, order.order_id) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index dc123a8d9..5e7adfc74 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -520,16 +520,16 @@ class Trade(_DECL_BASE): profit_ratio = (close_trade_price / self.open_trade_price) - 1 return float(f"{profit_ratio:.8f}") - def select_order(self, order_side: str, status: Optional[str]) -> Optional[Order]: + def select_order(self, order_side: str, is_open: Optional[bool]) -> Optional[Order]: """ Finds latest order for this orderside and status :param order_side: Side of the order (either 'buy' or 'sell') - :param status: Optionally filter on open / closed orders + :param is_open: Only search for open orders? :return: latest Order object if it exists, else None """ orders = [o for o in self.orders if o.side == order_side] - if status: - orders = [o for o in orders if o.status == status] + if is_open is not None: + orders = [o for o in orders if o.ft_is_open == is_open] if len(orders) > 0: return orders[-1] else: diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 03b338bab..3c5621e7a 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -4295,7 +4295,7 @@ def test_update_closed_trades_without_assigned_fees(mocker, default_conf, fee): for trade in trades: if trade.is_open: # Exclude Trade 4 - as the order is still open. - if trade.select_order('buy', 'closed'): + if trade.select_order('buy', False): assert trade.fee_open_cost is not None assert trade.fee_open_currency is not None else: diff --git a/tests/test_persistence.py b/tests/test_persistence.py index d2da1c6a2..2bf2ce311 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -1078,3 +1078,48 @@ def test_update_order_from_ccxt(): ccxt_order.update({'id': 'somethingelse'}) with pytest.raises(DependencyException, match=r"Order-id's don't match"): o.update_from_ccxt_object(ccxt_order) + + +@pytest.mark.usefixtures("init_persistence") +def test_select_order(fee): + create_mock_trades(fee) + + trades = Trade.get_trades().all() + + # Open buy order, no sell order + order = trades[0].select_order('buy', True) + assert order is None + order = trades[0].select_order('buy', False) + assert order is not None + order = trades[0].select_order('sell', None) + assert order is None + + # closed buy order, and open sell order + order = trades[1].select_order('buy', True) + assert order is None + order = trades[1].select_order('buy', False) + assert order is not None + order = trades[1].select_order('buy', None) + assert order is not None + order = trades[1].select_order('sell', True) + assert order is None + order = trades[1].select_order('sell', False) + assert order is not None + + # Has open buy order + order = trades[3].select_order('buy', True) + assert order is not None + order = trades[3].select_order('buy', False) + assert order is None + + # Open sell order + order = trades[4].select_order('buy', True) + assert order is None + order = trades[4].select_order('buy', False) + assert order is not None + + order = trades[4].select_order('sell', True) + assert order is not None + assert order.ft_order_side == 'stoploss' + order = trades[4].select_order('sell', False) + assert order is None From 0c9301e74a313a40e3829aed1ab701e04858d262 Mon Sep 17 00:00:00 2001 From: caudurodev Date: Fri, 11 Sep 2020 08:41:33 +0200 Subject: [PATCH 3131/3421] FIX: added missing ) for SQLite insert --- docs/sql_cheatsheet.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/sql_cheatsheet.md b/docs/sql_cheatsheet.md index cf785ced6..249e935ef 100644 --- a/docs/sql_cheatsheet.md +++ b/docs/sql_cheatsheet.md @@ -47,6 +47,7 @@ sqlite3 ```sql CREATE TABLE trades +( id INTEGER NOT NULL, exchange VARCHAR NOT NULL, pair VARCHAR NOT NULL, From 90d97c536d5b0a8ad7d863304023e418fe6f766e Mon Sep 17 00:00:00 2001 From: caudurodev Date: Fri, 11 Sep 2020 08:42:42 +0200 Subject: [PATCH 3132/3421] FIX: added missing ) for SQLite insert --- docs/sql_cheatsheet.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/sql_cheatsheet.md b/docs/sql_cheatsheet.md index 249e935ef..168d416ab 100644 --- a/docs/sql_cheatsheet.md +++ b/docs/sql_cheatsheet.md @@ -46,8 +46,7 @@ sqlite3 ### Trade table structure ```sql -CREATE TABLE trades -( +CREATE TABLE trades( id INTEGER NOT NULL, exchange VARCHAR NOT NULL, pair VARCHAR NOT NULL, From 50f0483d9aab4a0c73b6f7eb65d7babd3946817d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 11 Sep 2020 20:00:36 +0200 Subject: [PATCH 3133/3421] FIx fluky test in test_api_logs --- tests/rpc/test_rpc_apiserver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index f8256f1ba..626586a4a 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -435,7 +435,7 @@ def test_api_logs(botclient): assert len(rc.json) == 2 assert 'logs' in rc.json # Using a fixed comparison here would make this test fail! - assert rc.json['log_count'] > 10 + assert rc.json['log_count'] > 1 assert len(rc.json['logs']) == rc.json['log_count'] assert isinstance(rc.json['logs'][0], list) From 77c28187a6a63b250eecd7ed0a8151665efbff3e Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 11 Sep 2020 20:06:05 +0200 Subject: [PATCH 3134/3421] Don't run refind order on stoploss --- freqtrade/freqtradebot.py | 4 ++- tests/test_freqtradebot.py | 66 +++++++++++++++++++------------------- 2 files changed, 36 insertions(+), 34 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 71ced3212..4ecafca67 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -897,7 +897,9 @@ class FreqtradeBot: except InsufficientFundsError as e: logger.warning(f"Unable to place stoploss order {e}.") # Try to figure out what went wrong - self.handle_insufficient_funds(trade) + # TODO: test without refinding order logic + # TODO: Also reenable the test test_create_stoploss_order_insufficient_funds + # self.handle_insufficient_funds(trade) except InvalidOrderException as e: trade.stoploss_order_id = None diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 3c5621e7a..90e398c91 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1333,42 +1333,42 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, assert rpc_mock.call_args_list[1][0][0]['order_type'] == 'market' -def test_create_stoploss_order_insufficient_funds(mocker, default_conf, caplog, fee, - limit_buy_order_open, limit_sell_order): - sell_mock = MagicMock(return_value={'id': limit_sell_order['id']}) - freqtrade = get_patched_freqtradebot(mocker, default_conf) +# def test_create_stoploss_order_insufficient_funds(mocker, default_conf, caplog, fee, +# limit_buy_order_open, limit_sell_order): +# sell_mock = MagicMock(return_value={'id': limit_sell_order['id']}) +# freqtrade = get_patched_freqtradebot(mocker, default_conf) - mock_insuf = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_insufficient_funds') - mocker.patch.multiple( - 'freqtrade.exchange.Exchange', - fetch_ticker=MagicMock(return_value={ - 'bid': 0.00001172, - 'ask': 0.00001173, - 'last': 0.00001172 - }), - buy=MagicMock(return_value=limit_buy_order_open), - sell=sell_mock, - get_fee=fee, - fetch_order=MagicMock(return_value={'status': 'canceled'}), - stoploss=MagicMock(side_effect=InsufficientFundsError()), - ) - patch_get_signal(freqtrade) - freqtrade.strategy.order_types['stoploss_on_exchange'] = True +# mock_insuf = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_insufficient_funds') +# mocker.patch.multiple( +# 'freqtrade.exchange.Exchange', +# fetch_ticker=MagicMock(return_value={ +# 'bid': 0.00001172, +# 'ask': 0.00001173, +# 'last': 0.00001172 +# }), +# buy=MagicMock(return_value=limit_buy_order_open), +# sell=sell_mock, +# get_fee=fee, +# fetch_order=MagicMock(return_value={'status': 'canceled'}), +# stoploss=MagicMock(side_effect=InsufficientFundsError()), +# ) +# patch_get_signal(freqtrade) +# freqtrade.strategy.order_types['stoploss_on_exchange'] = True - freqtrade.enter_positions() - trade = Trade.query.first() - caplog.clear() - freqtrade.create_stoploss_order(trade, 200) - # stoploss_orderid was empty before - assert trade.stoploss_order_id is None - assert mock_insuf.call_count == 1 - mock_insuf.reset_mock() +# freqtrade.enter_positions() +# trade = Trade.query.first() +# caplog.clear() +# freqtrade.create_stoploss_order(trade, 200) +# # stoploss_orderid was empty before +# assert trade.stoploss_order_id is None +# assert mock_insuf.call_count == 1 +# mock_insuf.reset_mock() - trade.stoploss_order_id = 'stoploss_orderid' - freqtrade.create_stoploss_order(trade, 200) - # No change to stoploss-orderid - assert trade.stoploss_order_id == 'stoploss_orderid' - assert mock_insuf.call_count == 1 +# trade.stoploss_order_id = 'stoploss_orderid' +# freqtrade.create_stoploss_order(trade, 200) +# # No change to stoploss-orderid +# assert trade.stoploss_order_id == 'stoploss_orderid' +# assert mock_insuf.call_count == 1 @pytest.mark.usefixtures("init_persistence") From 3f52b6d6d5115e7cfa22d8b1860104223e4a15e2 Mon Sep 17 00:00:00 2001 From: Blackhawke Date: Fri, 11 Sep 2020 12:01:45 -0700 Subject: [PATCH 3135/3421] Move "source" restored ".env/" --- docs/installation.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index da82d632f..153de7065 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -63,7 +63,7 @@ With this option, the script will install the bot and most dependencies: You will need to have git and python3.6+ installed beforehand for this to work. * Mandatory software as: `ta-lib` -* Setup your virtualenv: `source .env/bin/activate` +* Setup your virtualenv under `.env/` This option is a combination of installation tasks, `--reset` and `--config`. @@ -79,6 +79,12 @@ This option will hard reset your branch (only if you are on either `master` or ` DEPRECATED - use `freqtrade new-config -c config.json` instead. +** Setup your virtual environment ** + +Each time you open a new terminal, you must run `source .env/bin/activate` + + + ------ ## Custom Installation From ba8e93e2a11ce397dab9528b39a7529f7db82fcd Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 13 Sep 2020 16:43:22 +0200 Subject: [PATCH 3136/3421] Remove requirements-common.txt in an attempt to simplify installation --- Dockerfile | 2 +- Dockerfile.armhf | 2 +- requirements-common.txt | 37 ------------------------------------- requirements.txt | 39 ++++++++++++++++++++++++++++++++++++--- setup.py | 3 +-- 5 files changed, 39 insertions(+), 44 deletions(-) delete mode 100644 requirements-common.txt diff --git a/Dockerfile b/Dockerfile index e1220e3b8..22b0c43a7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,7 +16,7 @@ RUN cd /tmp && /tmp/install_ta-lib.sh && rm -r /tmp/*ta-lib* ENV LD_LIBRARY_PATH /usr/local/lib # Install dependencies -COPY requirements.txt requirements-common.txt requirements-hyperopt.txt /freqtrade/ +COPY requirements.txt requirements-hyperopt.txt /freqtrade/ RUN pip install numpy --no-cache-dir \ && pip install -r requirements-hyperopt.txt --no-cache-dir diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 5c5e4a885..0633008ea 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -17,7 +17,7 @@ RUN cd /tmp && /tmp/install_ta-lib.sh && rm -r /tmp/*ta-lib* ENV LD_LIBRARY_PATH /usr/local/lib # Install dependencies -COPY requirements.txt requirements-common.txt /freqtrade/ +COPY requirements.txt /freqtrade/ RUN pip install numpy --no-cache-dir \ && pip install -r requirements.txt --no-cache-dir diff --git a/requirements-common.txt b/requirements-common.txt deleted file mode 100644 index d0f0ef370..000000000 --- a/requirements-common.txt +++ /dev/null @@ -1,37 +0,0 @@ -# requirements without requirements installable via conda -# mainly used for Raspberry pi installs -ccxt==1.34.11 -SQLAlchemy==1.3.19 -python-telegram-bot==12.8 -arrow==0.16.0 -cachetools==4.1.1 -requests==2.24.0 -urllib3==1.25.10 -wrapt==1.12.1 -jsonschema==3.2.0 -TA-Lib==0.4.18 -tabulate==0.8.7 -pycoingecko==1.3.0 -jinja2==2.11.2 -tables==3.6.1 -blosc==1.9.2 - -# find first, C search in arrays -py_find_1st==1.1.4 - -# Load ticker files 30% faster -python-rapidjson==0.9.1 - -# Notify systemd -sdnotify==0.3.2 - -# Api server -flask==1.1.2 -flask-jwt-extended==3.24.1 -flask-cors==3.0.9 - -# Support for colorized terminal output -colorama==0.4.3 -# Building config files interactively -questionary==1.5.2 -prompt-toolkit==3.0.7 diff --git a/requirements.txt b/requirements.txt index a1a1fb250..73ad7f4ab 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,38 @@ -# Load common requirements --r requirements-common.txt - numpy==1.19.1 pandas==1.1.2 + +ccxt==1.34.11 +SQLAlchemy==1.3.19 +python-telegram-bot==12.8 +arrow==0.16.0 +cachetools==4.1.1 +requests==2.24.0 +urllib3==1.25.10 +wrapt==1.12.1 +jsonschema==3.2.0 +TA-Lib==0.4.18 +tabulate==0.8.7 +pycoingecko==1.3.0 +jinja2==2.11.2 +tables==3.6.1 +blosc==1.9.2 + +# find first, C search in arrays +py_find_1st==1.1.4 + +# Load ticker files 30% faster +python-rapidjson==0.9.1 + +# Notify systemd +sdnotify==0.3.2 + +# Api server +flask==1.1.2 +flask-jwt-extended==3.24.1 +flask-cors==3.0.9 + +# Support for colorized terminal output +colorama==0.4.3 +# Building config files interactively +questionary==1.5.2 +prompt-toolkit==3.0.7 diff --git a/setup.py b/setup.py index 7213d3092..88d754668 100644 --- a/setup.py +++ b/setup.py @@ -62,7 +62,7 @@ setup(name='freqtrade', setup_requires=['pytest-runner', 'numpy'], tests_require=['pytest', 'pytest-asyncio', 'pytest-cov', 'pytest-mock', ], install_requires=[ - # from requirements-common.txt + # from requirements.txt 'ccxt>=1.24.96', 'SQLAlchemy', 'python-telegram-bot', @@ -82,7 +82,6 @@ setup(name='freqtrade', 'jinja2', 'questionary', 'prompt-toolkit', - # from requirements.txt 'numpy', 'pandas', 'tables', From d65d886d7de343d763c83f602fe9dc1d3da5ac39 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 13 Sep 2020 16:54:21 +0200 Subject: [PATCH 3137/3421] add branch to CI - change branch-detection to support tags as well --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c6141344..a50b0886e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,6 +6,7 @@ on: - master - develop - github_actions_tests + - reduce_requirements_files tags: release: types: [published] @@ -226,7 +227,7 @@ jobs: - name: Extract branch name shell: bash - run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" + run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF##*/})" id: extract_branch - name: Build distribution From 07ccda9146ba8faf89ef509574b0183359e50255 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 13 Sep 2020 16:59:45 +0200 Subject: [PATCH 3138/3421] Fix syntax for released CI --- .github/workflows/ci.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a50b0886e..16bf1959d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,10 +6,9 @@ on: - master - develop - github_actions_tests - - reduce_requirements_files tags: - release: - types: [published] + release: + types: [published] pull_request: schedule: - cron: '0 5 * * 4' From 60538368aca0c24bc03f5ac00c2daa67666ce04e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2020 06:35:00 +0000 Subject: [PATCH 3139/3421] Bump pytest from 6.0.1 to 6.0.2 Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/6.0.1...6.0.2) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 44f0c7265..aa7145053 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.8.3 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.782 -pytest==6.0.1 +pytest==6.0.2 pytest-asyncio==0.14.0 pytest-cov==2.10.1 pytest-mock==3.3.1 From 3c76945d5e5c0929fdae88f07b741a1ef6a2e2f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2020 06:35:14 +0000 Subject: [PATCH 3140/3421] Bump numpy from 1.19.1 to 1.19.2 Bumps [numpy](https://github.com/numpy/numpy) from 1.19.1 to 1.19.2. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.19.1...v1.19.2) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 73ad7f4ab..34b8381e5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -numpy==1.19.1 +numpy==1.19.2 pandas==1.1.2 ccxt==1.34.11 From 9d3caae9e3f302409e65dd75e151240bf5f3ea18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2020 06:35:36 +0000 Subject: [PATCH 3141/3421] Bump plotly from 4.9.0 to 4.10.0 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.9.0 to 4.10.0. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.9.0...v4.10.0) Signed-off-by: dependabot[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index 51d14d636..a91b3bd38 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.9.0 +plotly==4.10.0 From 23c1ae5d4af117d17da8bee6bee26d82cee80e82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2020 06:35:41 +0000 Subject: [PATCH 3142/3421] Bump nbconvert from 5.6.1 to 6.0.2 Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 5.6.1 to 6.0.2. - [Release notes](https://github.com/jupyter/nbconvert/releases) - [Commits](https://github.com/jupyter/nbconvert/compare/5.6.1...6.0.2) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 44f0c7265..72d5a795d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -15,4 +15,4 @@ pytest-mock==3.3.1 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents -nbconvert==5.6.1 +nbconvert==6.0.2 From 6d30740b55f41d6d878e08ce120e2bfcc0b508d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2020 07:07:14 +0000 Subject: [PATCH 3143/3421] Bump ccxt from 1.34.11 to 1.34.25 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.34.11 to 1.34.25. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.34.11...1.34.25) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 34b8381e5..5da544a3c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.19.2 pandas==1.1.2 -ccxt==1.34.11 +ccxt==1.34.25 SQLAlchemy==1.3.19 python-telegram-bot==12.8 arrow==0.16.0 From 962fed24b090b76f4bac0468b949fea493b5d333 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 14 Sep 2020 17:34:13 +0200 Subject: [PATCH 3144/3421] Readd refind_order logic --- freqtrade/freqtradebot.py | 4 +-- tests/test_freqtradebot.py | 66 +++++++++++++++++++------------------- 2 files changed, 34 insertions(+), 36 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 4ecafca67..71ced3212 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -897,9 +897,7 @@ class FreqtradeBot: except InsufficientFundsError as e: logger.warning(f"Unable to place stoploss order {e}.") # Try to figure out what went wrong - # TODO: test without refinding order logic - # TODO: Also reenable the test test_create_stoploss_order_insufficient_funds - # self.handle_insufficient_funds(trade) + self.handle_insufficient_funds(trade) except InvalidOrderException as e: trade.stoploss_order_id = None diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 90e398c91..3c5621e7a 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -1333,42 +1333,42 @@ def test_create_stoploss_order_invalid_order(mocker, default_conf, caplog, fee, assert rpc_mock.call_args_list[1][0][0]['order_type'] == 'market' -# def test_create_stoploss_order_insufficient_funds(mocker, default_conf, caplog, fee, -# limit_buy_order_open, limit_sell_order): -# sell_mock = MagicMock(return_value={'id': limit_sell_order['id']}) -# freqtrade = get_patched_freqtradebot(mocker, default_conf) +def test_create_stoploss_order_insufficient_funds(mocker, default_conf, caplog, fee, + limit_buy_order_open, limit_sell_order): + sell_mock = MagicMock(return_value={'id': limit_sell_order['id']}) + freqtrade = get_patched_freqtradebot(mocker, default_conf) -# mock_insuf = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_insufficient_funds') -# mocker.patch.multiple( -# 'freqtrade.exchange.Exchange', -# fetch_ticker=MagicMock(return_value={ -# 'bid': 0.00001172, -# 'ask': 0.00001173, -# 'last': 0.00001172 -# }), -# buy=MagicMock(return_value=limit_buy_order_open), -# sell=sell_mock, -# get_fee=fee, -# fetch_order=MagicMock(return_value={'status': 'canceled'}), -# stoploss=MagicMock(side_effect=InsufficientFundsError()), -# ) -# patch_get_signal(freqtrade) -# freqtrade.strategy.order_types['stoploss_on_exchange'] = True + mock_insuf = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.handle_insufficient_funds') + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + fetch_ticker=MagicMock(return_value={ + 'bid': 0.00001172, + 'ask': 0.00001173, + 'last': 0.00001172 + }), + buy=MagicMock(return_value=limit_buy_order_open), + sell=sell_mock, + get_fee=fee, + fetch_order=MagicMock(return_value={'status': 'canceled'}), + stoploss=MagicMock(side_effect=InsufficientFundsError()), + ) + patch_get_signal(freqtrade) + freqtrade.strategy.order_types['stoploss_on_exchange'] = True -# freqtrade.enter_positions() -# trade = Trade.query.first() -# caplog.clear() -# freqtrade.create_stoploss_order(trade, 200) -# # stoploss_orderid was empty before -# assert trade.stoploss_order_id is None -# assert mock_insuf.call_count == 1 -# mock_insuf.reset_mock() + freqtrade.enter_positions() + trade = Trade.query.first() + caplog.clear() + freqtrade.create_stoploss_order(trade, 200) + # stoploss_orderid was empty before + assert trade.stoploss_order_id is None + assert mock_insuf.call_count == 1 + mock_insuf.reset_mock() -# trade.stoploss_order_id = 'stoploss_orderid' -# freqtrade.create_stoploss_order(trade, 200) -# # No change to stoploss-orderid -# assert trade.stoploss_order_id == 'stoploss_orderid' -# assert mock_insuf.call_count == 1 + trade.stoploss_order_id = 'stoploss_orderid' + freqtrade.create_stoploss_order(trade, 200) + # No change to stoploss-orderid + assert trade.stoploss_order_id == 'stoploss_orderid' + assert mock_insuf.call_count == 1 @pytest.mark.usefixtures("init_persistence") From ec01f20bf85a8b960bf607ec5f224accc52194a1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 16 Sep 2020 20:26:55 +0200 Subject: [PATCH 3145/3421] Add ratio to sell reason stats --- freqtrade/optimize/optimize_reports.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index b5e5da4af..771ac91fb 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -122,7 +122,7 @@ def generate_sell_reason_stats(max_open_trades: int, results: DataFrame) -> List profit_mean = result['profit_percent'].mean() profit_sum = result["profit_percent"].sum() - profit_percent_tot = round(result['profit_percent'].sum() * 100.0 / max_open_trades, 2) + profit_percent_tot = result['profit_percent'].sum() / max_open_trades tabular_data.append( { @@ -136,7 +136,8 @@ def generate_sell_reason_stats(max_open_trades: int, results: DataFrame) -> List 'profit_sum': profit_sum, 'profit_sum_pct': round(profit_sum * 100, 2), 'profit_total_abs': result['profit_abs'].sum(), - 'profit_total_pct': profit_percent_tot, + 'profit_total': profit_percent_tot, + 'profit_total_pct': round(profit_percent_tot * 100, 2), } ) return tabular_data From dd87938a5eb8ae78c371d2a0c95fce686c217dab Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 08:33:12 +0200 Subject: [PATCH 3146/3421] Fix bug causing close_date to be set again --- freqtrade/persistence/models.py | 11 +++++++---- tests/test_persistence.py | 31 ++++++++++++++++++------------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 5e7adfc74..816e23fd3 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -383,15 +383,18 @@ class Trade(_DECL_BASE): self.open_rate = Decimal(safe_value_fallback(order, 'average', 'price')) self.amount = Decimal(safe_value_fallback(order, 'filled', 'amount')) self.recalc_open_trade_price() - logger.info(f'{order_type.upper()}_BUY has been fulfilled for {self}.') + if self.is_open: + logger.info(f'{order_type.upper()}_BUY has been fulfilled for {self}.') self.open_order_id = None elif order_type in ('market', 'limit') and order['side'] == 'sell': + if self.is_open: + logger.info(f'{order_type.upper()}_SELL has been fulfilled for {self}.') self.close(safe_value_fallback(order, 'average', 'price')) - logger.info(f'{order_type.upper()}_SELL has been fulfilled for {self}.') elif order_type in ('stop_loss_limit', 'stop-loss', 'stop'): self.stoploss_order_id = None self.close_rate_requested = self.stop_loss - logger.info(f'{order_type.upper()} is hit for {self}.') + if self.is_open: + logger.info(f'{order_type.upper()} is hit for {self}.') self.close(order['average']) else: raise ValueError(f'Unknown order type: {order_type}') @@ -405,7 +408,7 @@ class Trade(_DECL_BASE): self.close_rate = Decimal(rate) self.close_profit = self.calc_profit_ratio() self.close_profit_abs = self.calc_profit() - self.close_date = datetime.utcnow() + self.close_date = self.close_date or datetime.utcnow() self.is_open = False self.sell_order_status = 'closed' self.open_order_id = None diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 2bf2ce311..723143cfc 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -9,7 +9,7 @@ from sqlalchemy import create_engine from freqtrade import constants from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.persistence import Order, Trade, clean_dry_run_db, init -from tests.conftest import create_mock_trades, log_has +from tests.conftest import create_mock_trades, log_has, log_has_re def test_init_create_session(default_conf): @@ -93,6 +93,8 @@ def test_update_with_bittrex(limit_buy_order, limit_sell_order, fee, caplog): stake_amount=0.001, open_rate=0.01, amount=5, + is_open=True, + open_date=arrow.utcnow().datetime, fee_open=fee.return_value, fee_close=fee.return_value, exchange='bittrex', @@ -107,9 +109,9 @@ def test_update_with_bittrex(limit_buy_order, limit_sell_order, fee, caplog): assert trade.open_rate == 0.00001099 assert trade.close_profit is None assert trade.close_date is None - assert log_has("LIMIT_BUY has been fulfilled for Trade(id=2, " - "pair=ETH/BTC, amount=90.99181073, open_rate=0.00001099, open_since=closed).", - caplog) + assert log_has_re(r"LIMIT_BUY has been fulfilled for Trade\(id=2, " + r"pair=ETH/BTC, amount=90.99181073, open_rate=0.00001099, open_since=.*\).", + caplog) caplog.clear() trade.open_order_id = 'something' @@ -118,9 +120,9 @@ def test_update_with_bittrex(limit_buy_order, limit_sell_order, fee, caplog): assert trade.close_rate == 0.00001173 assert trade.close_profit == 0.06201058 assert trade.close_date is not None - assert log_has("LIMIT_SELL has been fulfilled for Trade(id=2, " - "pair=ETH/BTC, amount=90.99181073, open_rate=0.00001099, open_since=closed).", - caplog) + assert log_has_re(r"LIMIT_SELL has been fulfilled for Trade\(id=2, " + r"pair=ETH/BTC, amount=90.99181073, open_rate=0.00001099, open_since=.*\).", + caplog) @pytest.mark.usefixtures("init_persistence") @@ -131,8 +133,10 @@ def test_update_market_order(market_buy_order, market_sell_order, fee, caplog): stake_amount=0.001, amount=5, open_rate=0.01, + is_open=True, fee_open=fee.return_value, fee_close=fee.return_value, + open_date=arrow.utcnow().datetime, exchange='bittrex', ) @@ -142,20 +146,21 @@ def test_update_market_order(market_buy_order, market_sell_order, fee, caplog): assert trade.open_rate == 0.00004099 assert trade.close_profit is None assert trade.close_date is None - assert log_has("MARKET_BUY has been fulfilled for Trade(id=1, " - "pair=ETH/BTC, amount=91.99181073, open_rate=0.00004099, open_since=closed).", - caplog) + assert log_has_re(r"MARKET_BUY has been fulfilled for Trade\(id=1, " + r"pair=ETH/BTC, amount=91.99181073, open_rate=0.00004099, open_since=.*\).", + caplog) caplog.clear() + trade.is_open = True trade.open_order_id = 'something' trade.update(market_sell_order) assert trade.open_order_id is None assert trade.close_rate == 0.00004173 assert trade.close_profit == 0.01297561 assert trade.close_date is not None - assert log_has("MARKET_SELL has been fulfilled for Trade(id=1, " - "pair=ETH/BTC, amount=91.99181073, open_rate=0.00004099, open_since=closed).", - caplog) + assert log_has_re(r"MARKET_SELL has been fulfilled for Trade\(id=1, " + r"pair=ETH/BTC, amount=91.99181073, open_rate=0.00004099, open_since=.*\).", + caplog) @pytest.mark.usefixtures("init_persistence") From 254875e6b362fd8acb2aff51289b5d6fad8adbd6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 08:42:15 +0200 Subject: [PATCH 3147/3421] Add test for new close functionality * Don't updates close_date if the trade was already closed --- tests/test_persistence.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 723143cfc..adfa18876 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -189,6 +189,36 @@ def test_calc_open_close_trade_price(limit_buy_order, limit_sell_order, fee): assert trade.calc_profit_ratio() == 0.06201058 +@pytest.mark.usefixtures("init_persistence") +def test_trade_close(limit_buy_order, limit_sell_order, fee): + trade = Trade( + pair='ETH/BTC', + stake_amount=0.001, + open_rate=0.01, + amount=5, + is_open=True, + fee_open=fee.return_value, + fee_close=fee.return_value, + open_date=arrow.Arrow(2020, 2, 1, 15, 5, 1).datetime, + exchange='bittrex', + ) + assert trade.close_profit is None + assert trade.close_date is None + assert trade.is_open is True + trade.close(0.02) + assert trade.is_open is False + assert trade.close_profit == 0.99002494 + assert trade.close_date is not None + + new_date = arrow.Arrow(2020, 2, 2, 15, 6, 1).datetime, + assert trade.close_date != new_date + # Close should NOT update close_date if the trade has been closed already + assert trade.is_open is False + trade.close_date = new_date + trade.close(0.02) + assert trade.close_date == new_date + + @pytest.mark.usefixtures("init_persistence") def test_calc_close_trade_price_exception(limit_buy_order, fee): trade = Trade( From bfd0e3553accf22775de52e4aec00b038de33116 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 08:42:37 +0200 Subject: [PATCH 3148/3421] Don't build this branch anymore in CI --- .github/workflows/ci.yml | 2 -- freqtrade/exchange/common.py | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 81e450c0f..2bb7b195a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,8 +5,6 @@ on: branches: - master - develop - - github_actions_tests - - db_keep_orders tags: release: types: [published] diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index 2abac9286..9abd42aa7 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -12,7 +12,7 @@ logger = logging.getLogger(__name__) # Maximum default retry count. # Functions are always called RETRY_COUNT + 1 times (for the original call) API_RETRY_COUNT = 4 -API_FETCH_ORDER_RETRY_COUNT = 3 +API_FETCH_ORDER_RETRY_COUNT = 5 BAD_EXCHANGES = { "bitmex": "Various reasons.", From 35857b3ddea9c4a73332a38677db533cacd8e55b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 09:10:34 +0200 Subject: [PATCH 3149/3421] Datetime should support --timerange too --- freqtrade/commands/arguments.py | 2 +- freqtrade/commands/data_commands.py | 6 ++++ tests/commands/test_commands.py | 45 +++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 7268c3c8f..498c73fb3 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -57,7 +57,7 @@ ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes"] ARGS_LIST_DATA = ["exchange", "dataformat_ohlcv", "pairs"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", - "timeframes", "erase", "dataformat_ohlcv", "dataformat_trades"] + "timeframes", "erase", "dataformat_ohlcv", "dataformat_trades", "timerange"] ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", "trade_source", "export", "exportfilename", diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index da1eb0cf5..956a8693e 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -25,11 +25,17 @@ def start_download_data(args: Dict[str, Any]) -> None: """ config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) + if 'days' in config and 'timerange' in config: + raise OperationalException("--days and --timerange are mutually exclusive. " + "You can only specify one or the other.") timerange = TimeRange() if 'days' in config: time_since = arrow.utcnow().shift(days=-config['days']).strftime("%Y%m%d") timerange = TimeRange.parse_timerange(f'{time_since}-') + if 'timerange' in config: + timerange = timerange.parse_timerange(config['timerange']) + if 'pairs' not in config: raise OperationalException( "Downloading data requires a list of pairs. " diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 26875fb7f..99b7139b0 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -2,6 +2,7 @@ import re from pathlib import Path from unittest.mock import MagicMock, PropertyMock +import arrow import pytest from freqtrade.commands import (start_convert_data, start_create_userdir, @@ -552,6 +553,50 @@ def test_download_data_keyboardInterrupt(mocker, caplog, markets): assert dl_mock.call_count == 1 +def test_download_data_timerange(mocker, caplog, markets): + dl_mock = mocker.patch('freqtrade.commands.data_commands.refresh_backtest_ohlcv_data', + MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) + patch_exchange(mocker) + mocker.patch( + 'freqtrade.exchange.Exchange.markets', PropertyMock(return_value=markets) + ) + args = [ + "download-data", + "--exchange", "binance", + "--pairs", "ETH/BTC", "XRP/BTC", + "--days", "20", + "--timerange", "20200101-" + ] + with pytest.raises(OperationalException, + match=r"--days and --timerange are mutually.*"): + start_download_data(get_args(args)) + assert dl_mock.call_count == 0 + + args = [ + "download-data", + "--exchange", "binance", + "--pairs", "ETH/BTC", "XRP/BTC", + "--days", "20", + ] + start_download_data(get_args(args)) + assert dl_mock.call_count == 1 + # 20days ago + days_ago = arrow.get(arrow.utcnow().shift(days=-20).date()).timestamp + assert dl_mock.call_args_list[0][1]['timerange'].startts == days_ago + + dl_mock.reset_mock() + args = [ + "download-data", + "--exchange", "binance", + "--pairs", "ETH/BTC", "XRP/BTC", + "--timerange", "20200101-" + ] + start_download_data(get_args(args)) + assert dl_mock.call_count == 1 + + assert dl_mock.call_args_list[0][1]['timerange'].startts == arrow.Arrow(2020, 1, 1).timestamp + + def test_download_data_no_markets(mocker, caplog): dl_mock = mocker.patch('freqtrade.commands.data_commands.refresh_backtest_ohlcv_data', MagicMock(return_value=["ETH/BTC", "XRP/BTC"])) From 2f6b00555a09da306f321a2effef242e958a60da Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 09:13:43 +0200 Subject: [PATCH 3150/3421] Document support for --timerange in download-data --- docs/data-download.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/data-download.md b/docs/data-download.md index 0b22ec9ce..932b84557 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -8,9 +8,11 @@ If no additional parameter is specified, freqtrade will download data for `"1m"` Exchange and pairs will come from `config.json` (if specified using `-c/--config`). Otherwise `--exchange` becomes mandatory. +You can use a relative timerange (`--days 20`) or an absolute starting point (`--timerange 20200101`). For incremental downloads, the relative approach should be used. + !!! Tip "Tip: Updating existing data" If you already have backtesting data available in your data-directory and would like to refresh this data up to today, use `--days xx` with a number slightly higher than the missing number of days. Freqtrade will keep the available data and only download the missing data. - Be carefull though: If the number is too small (which would result in a few missing days), the whole dataset will be removed and only xx days will be downloaded. + Be careful though: If the number is too small (which would result in a few missing days), the whole dataset will be removed and only xx days will be downloaded. ### Usage @@ -24,6 +26,7 @@ usage: freqtrade download-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [--erase] [--data-format-ohlcv {json,jsongz,hdf5}] [--data-format-trades {json,jsongz,hdf5}] + [--timerange TIMERANGE] optional arguments: -h, --help show this help message and exit @@ -48,6 +51,8 @@ optional arguments: --data-format-trades {json,jsongz,hdf5} Storage format for downloaded trades data. (default: `jsongz`). + --timerange TIMERANGE + Specify what timerange of data to use. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). @@ -286,6 +291,7 @@ This will download historical candle (OHLCV) data for all the currency pairs you - To change the exchange used to download the historical data from, please use a different configuration file (you'll probably need to adjust rate limits etc.) - To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`. - To download historical candle (OHLCV) data for only 10 days, use `--days 10` (defaults to 30 days). +- To download historical candle (OHLCV) data from a fixed starting point, use `--timerange 20200101-` - which will download all data from January 1st, 2020. - Use `--timeframes` to specify what timeframe download the historical candle (OHLCV) data for. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute data. - To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options. From 77d01896954c69cd10f8097713b3b39ce3dc7284 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 09:37:11 +0200 Subject: [PATCH 3151/3421] Remove not needed argument in update_trade_state --- freqtrade/data/history/history_utils.py | 1 - freqtrade/freqtradebot.py | 18 +++++++----------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index dd09c4c05..ac234a72e 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -136,7 +136,6 @@ def _load_cached_data_for_updating(pair: str, timeframe: str, timerange: Optiona start = None if timerange: if timerange.starttype == 'date': - # TODO: convert to date for conversion start = datetime.fromtimestamp(timerange.startts, tz=timezone.utc) # Intentionally don't pass timerange in - since we need to load the full dataset. diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 71ced3212..eec09a17c 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -307,8 +307,7 @@ class FreqtradeBot: logger.info(f"Trying to refind {order}") fo = None if not order.ft_is_open: - # TODO: Does this need to be info level? - logger.info(f"Order {order} is no longer open.") + logger.debug(f"Order {order} is no longer open.") continue if order.ft_order_side == 'buy': # Skip buy side - this is handled by reupdate_buy_order_fees @@ -1125,7 +1124,7 @@ class FreqtradeBot: # we need to fall back to the values from order if corder does not contain these keys. trade.amount = filled_amount trade.stake_amount = trade.amount * trade.open_rate - self.update_trade_state(trade, trade.open_order_id, corder, trade.amount) + self.update_trade_state(trade, trade.open_order_id, corder) trade.open_order_id = None logger.info('Partial buy order timeout for %s.', trade) @@ -1357,16 +1356,14 @@ class FreqtradeBot: # Common update trade state methods # - def update_trade_state(self, trade: Trade, order_id: str, action_order: dict = None, - order_amount: float = None, stoploss_order: bool = False) -> bool: + def update_trade_state(self, trade: Trade, order_id: str, action_order: Dict[str, Any] = None, + stoploss_order: bool = False) -> bool: """ Checks trades with open orders and updates the amount if necessary Handles closing both buy and sell orders. :param trade: Trade object of the trade we're analyzing :param order_id: Order-id of the order we're analyzing :param action_order: Already aquired order object - :param order_amount: Order-amount - only used in case of partially cancelled buy order - TODO: Investigate if this is really needed, or covered by getting filled in here again. :return: True if order has been cancelled without being filled partially, False otherwise """ if not order_id: @@ -1387,7 +1384,7 @@ class FreqtradeBot: # Try update amount (binance-fix) try: - new_amount = self.get_real_amount(trade, order, order_amount) + new_amount = self.get_real_amount(trade, order) if not isclose(safe_value_fallback(order, 'filled', 'amount'), new_amount, abs_tol=constants.MATH_CLOSE_PREC): order['amount'] = new_amount @@ -1425,7 +1422,7 @@ class FreqtradeBot: return real_amount return amount - def get_real_amount(self, trade: Trade, order: Dict, order_amount: float = None) -> float: + def get_real_amount(self, trade: Trade, order: Dict) -> float: """ Detect and update trade fee. Calls trade.update_fee() uppon correct detection. @@ -1434,8 +1431,7 @@ class FreqtradeBot: :return: identical (or new) amount for the trade """ # Init variables - if order_amount is None: - order_amount = safe_value_fallback(order, 'filled', 'amount') + order_amount = safe_value_fallback(order, 'filled', 'amount') # Only run for closed orders if trade.fee_updated(order.get('side', '')) or order['status'] == 'open': return order_amount From 1f086e1466e80cb138227bf42fe75360c199504d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 09:46:32 +0200 Subject: [PATCH 3152/3421] Modify test loglevel --- tests/test_freqtradebot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 3c5621e7a..0c12c05bb 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -4384,6 +4384,7 @@ def test_handle_insufficient_funds(mocker, default_conf, fee): @pytest.mark.usefixtures("init_persistence") def test_refind_lost_order(mocker, default_conf, fee, caplog): + caplog.set_level(logging.DEBUG) freqtrade = get_patched_freqtradebot(mocker, default_conf) mock_uts = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.update_trade_state') From 5daaed144949e8ffde666c2e7fc22b9e9db85ee9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 11:25:00 +0200 Subject: [PATCH 3153/3421] Help endpoint does not make sense for the rest api server. therefore, remove the TODO. --- freqtrade/rpc/api_server.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 0ae0698cd..db22ce453 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -222,9 +222,6 @@ class ApiServer(RPC): self.app.add_url_rule(f'{BASE_URI}/forcesell', 'forcesell', view_func=self._forcesell, methods=['POST']) - # TODO: Implement the following - # help (?) - @require_login def page_not_found(self, error): """ From bf95fe2e5cee112fddf83e8d9b09cfa5d3e9e916 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 11:33:55 +0200 Subject: [PATCH 3154/3421] have the 2 timerange arguments next to each other --- docs/data-download.md | 9 ++++----- freqtrade/commands/arguments.py | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/data-download.md b/docs/data-download.md index 932b84557..9065bb050 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -20,13 +20,12 @@ You can use a relative timerange (`--days 20`) or an absolute starting point (`- usage: freqtrade download-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [-p PAIRS [PAIRS ...]] [--pairs-file FILE] - [--days INT] [--dl-trades] - [--exchange EXCHANGE] + [--days INT] [--timerange TIMERANGE] + [--dl-trades] [--exchange EXCHANGE] [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...]] [--erase] [--data-format-ohlcv {json,jsongz,hdf5}] [--data-format-trades {json,jsongz,hdf5}] - [--timerange TIMERANGE] optional arguments: -h, --help show this help message and exit @@ -35,6 +34,8 @@ optional arguments: separated. --pairs-file FILE File containing a list of pairs to download. --days INT Download data for given number of days. + --timerange TIMERANGE + Specify what timerange of data to use. --dl-trades Download trades instead of OHLCV data. The bot will resample trades to the desired timeframe as specified as --timeframes/-t. @@ -51,8 +52,6 @@ optional arguments: --data-format-trades {json,jsongz,hdf5} Storage format for downloaded trades data. (default: `jsongz`). - --timerange TIMERANGE - Specify what timerange of data to use. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index 498c73fb3..b61a4933e 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -56,8 +56,8 @@ ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes"] ARGS_LIST_DATA = ["exchange", "dataformat_ohlcv", "pairs"] -ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", - "timeframes", "erase", "dataformat_ohlcv", "dataformat_trades", "timerange"] +ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "timerange", "download_trades", "exchange", + "timeframes", "erase", "dataformat_ohlcv", "dataformat_trades"] ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", "trade_source", "export", "exportfilename", From 476319da45b017bdc09e7691a93102ab4481583d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 17:21:56 +0200 Subject: [PATCH 3155/3421] Clarify --timerange documentation --- docs/data-download.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data-download.md b/docs/data-download.md index 9065bb050..9f0486262 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -290,7 +290,7 @@ This will download historical candle (OHLCV) data for all the currency pairs you - To change the exchange used to download the historical data from, please use a different configuration file (you'll probably need to adjust rate limits etc.) - To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`. - To download historical candle (OHLCV) data for only 10 days, use `--days 10` (defaults to 30 days). -- To download historical candle (OHLCV) data from a fixed starting point, use `--timerange 20200101-` - which will download all data from January 1st, 2020. +- To download historical candle (OHLCV) data from a fixed starting point, use `--timerange 20200101-` - which will download all data from January 1st, 2020. Eventually set end dates are ignored. - Use `--timeframes` to specify what timeframe download the historical candle (OHLCV) data for. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute data. - To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options. From f0d7f18cf98c9ebd6d2b381fd9e092cb824f47af Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 17:32:22 +0200 Subject: [PATCH 3156/3421] Pad wins / draws / losses for hyperopt with spaces instead of 0's --- freqtrade/optimize/hyperopt.py | 7 ++++--- tests/optimize/test_hyperopt.py | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 6d29be08e..37de3bc4b 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -324,8 +324,9 @@ class Hyperopt: 'results_metrics.avg_profit', 'results_metrics.total_profit', 'results_metrics.profit', 'results_metrics.duration', 'loss', 'is_initial_point', 'is_best']] - trials.columns = ['Best', 'Epoch', 'Trades', 'W/D/L', 'Avg profit', 'Total profit', - 'Profit', 'Avg duration', 'Objective', 'is_initial_point', 'is_best'] + trials.columns = ['Best', 'Epoch', 'Trades', ' Win Draw Loss', 'Avg profit', + 'Total profit', 'Profit', 'Avg duration', 'Objective', + 'is_initial_point', 'is_best'] trials['is_profit'] = False trials.loc[trials['is_initial_point'], 'Best'] = '* ' trials.loc[trials['is_best'], 'Best'] = 'Best' @@ -574,7 +575,7 @@ class Hyperopt: 'wins': wins, 'draws': draws, 'losses': losses, - 'winsdrawslosses': f"{wins:04}/{draws:04}/{losses:04}", + 'winsdrawslosses': f"{wins:>4} {draws:>4} {losses:>4}", 'avg_profit': backtesting_results.profit_percent.mean() * 100.0, 'median_profit': backtesting_results.profit_percent.median() * 100.0, 'total_profit': backtesting_results.profit_abs.sum(), diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index e7a26cd5f..d58b91209 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -813,7 +813,7 @@ def test_generate_optimizer(mocker, hyperopt_conf) -> None: 'draws': 0, 'duration': 100.0, 'losses': 0, - 'winsdrawslosses': '0001/0000/0000', + 'winsdrawslosses': ' 1 0 0', 'median_profit': 2.3117, 'profit': 2.3117, 'total_profit': 0.000233, From 2a7935e35e55cf6daeeb937a0f16ff1bfcdaa8fc Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 17:51:31 +0200 Subject: [PATCH 3157/3421] Rename custom_notification to startup_notification --- freqtrade/rpc/rpc.py | 2 +- freqtrade/rpc/rpc_manager.py | 4 ++-- freqtrade/rpc/telegram.py | 2 +- freqtrade/rpc/webhook.py | 2 +- tests/rpc/test_rpc_manager.py | 4 ++-- tests/rpc/test_rpc_telegram.py | 4 ++-- tests/rpc/test_rpc_webhook.py | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index f4e5d3b8e..649dd0f58 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -27,7 +27,7 @@ logger = logging.getLogger(__name__) class RPCMessageType(Enum): STATUS_NOTIFICATION = 'status' WARNING_NOTIFICATION = 'warning' - CUSTOM_NOTIFICATION = 'custom' + STARTUP_NOTIFICATION = 'startup' BUY_NOTIFICATION = 'buy' BUY_CANCEL_NOTIFICATION = 'buy_cancel' SELL_NOTIFICATION = 'sell' diff --git a/freqtrade/rpc/rpc_manager.py b/freqtrade/rpc/rpc_manager.py index 2cb44fec8..a9038d81c 100644 --- a/freqtrade/rpc/rpc_manager.py +++ b/freqtrade/rpc/rpc_manager.py @@ -76,7 +76,7 @@ class RPCManager: exchange_name = config['exchange']['name'] strategy_name = config.get('strategy', '') self.send_msg({ - 'type': RPCMessageType.CUSTOM_NOTIFICATION, + 'type': RPCMessageType.STARTUP_NOTIFICATION, 'status': f'*Exchange:* `{exchange_name}`\n' f'*Stake per trade:* `{stake_amount} {stake_currency}`\n' f'*Minimum ROI:* `{minimal_roi}`\n' @@ -85,7 +85,7 @@ class RPCManager: f'*Strategy:* `{strategy_name}`' }) self.send_msg({ - 'type': RPCMessageType.STATUS_NOTIFICATION, + 'type': RPCMessageType.STARTUP_NOTIFICATION, 'status': f'Searching for {stake_currency} pairs to buy and sell ' f'based on {pairlist.short_desc()}' }) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index a01efaed6..6d529a69f 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -190,7 +190,7 @@ class Telegram(RPC): elif msg['type'] == RPCMessageType.WARNING_NOTIFICATION: message = '\N{WARNING SIGN} *Warning:* `{status}`'.format(**msg) - elif msg['type'] == RPCMessageType.CUSTOM_NOTIFICATION: + elif msg['type'] == RPCMessageType.STARTUP_NOTIFICATION: message = '{status}'.format(**msg) else: diff --git a/freqtrade/rpc/webhook.py b/freqtrade/rpc/webhook.py index 322d990ee..7235e7c15 100644 --- a/freqtrade/rpc/webhook.py +++ b/freqtrade/rpc/webhook.py @@ -48,7 +48,7 @@ class Webhook(RPC): elif msg['type'] == RPCMessageType.SELL_CANCEL_NOTIFICATION: valuedict = self._config['webhook'].get('webhooksellcancel', None) elif msg['type'] in (RPCMessageType.STATUS_NOTIFICATION, - RPCMessageType.CUSTOM_NOTIFICATION, + RPCMessageType.STARTUP_NOTIFICATION, RPCMessageType.WARNING_NOTIFICATION): valuedict = self._config['webhook'].get('webhookstatus', None) else: diff --git a/tests/rpc/test_rpc_manager.py b/tests/rpc/test_rpc_manager.py index edf6bae4d..5972bf864 100644 --- a/tests/rpc/test_rpc_manager.py +++ b/tests/rpc/test_rpc_manager.py @@ -124,10 +124,10 @@ def test_send_msg_webhook_CustomMessagetype(mocker, default_conf, caplog) -> Non rpc_manager = RPCManager(get_patched_freqtradebot(mocker, default_conf)) assert 'webhook' in [mod.name for mod in rpc_manager.registered_modules] - rpc_manager.send_msg({'type': RPCMessageType.CUSTOM_NOTIFICATION, + rpc_manager.send_msg({'type': RPCMessageType.STARTUP_NOTIFICATION, 'status': 'TestMessage'}) assert log_has( - "Message type RPCMessageType.CUSTOM_NOTIFICATION not implemented by handler webhook.", + "Message type RPCMessageType.STARTUP_NOTIFICATION not implemented by handler webhook.", caplog) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 6feacd4bd..20f478b8a 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1485,7 +1485,7 @@ def test_warning_notification(default_conf, mocker) -> None: assert msg_mock.call_args[0][0] == '\N{WARNING SIGN} *Warning:* `message`' -def test_custom_notification(default_conf, mocker) -> None: +def test_startup_notification(default_conf, mocker) -> None: msg_mock = MagicMock() mocker.patch.multiple( 'freqtrade.rpc.telegram.Telegram', @@ -1495,7 +1495,7 @@ def test_custom_notification(default_conf, mocker) -> None: freqtradebot = get_patched_freqtradebot(mocker, default_conf) telegram = Telegram(freqtradebot) telegram.send_msg({ - 'type': RPCMessageType.CUSTOM_NOTIFICATION, + 'type': RPCMessageType.STARTUP_NOTIFICATION, 'status': '*Custom:* `Hello World`' }) assert msg_mock.call_args[0][0] == '*Custom:* `Hello World`' diff --git a/tests/rpc/test_rpc_webhook.py b/tests/rpc/test_rpc_webhook.py index 1ced62746..2d2c5a4f4 100644 --- a/tests/rpc/test_rpc_webhook.py +++ b/tests/rpc/test_rpc_webhook.py @@ -150,7 +150,7 @@ def test_send_msg(default_conf, mocker): default_conf["webhook"]["webhooksellcancel"]["value3"].format(**msg)) for msgtype in [RPCMessageType.STATUS_NOTIFICATION, RPCMessageType.WARNING_NOTIFICATION, - RPCMessageType.CUSTOM_NOTIFICATION]: + RPCMessageType.STARTUP_NOTIFICATION]: # Test notification msg = { 'type': msgtype, From e53b88bde38b4309cef663436020e50e873716fe Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 19:38:33 +0200 Subject: [PATCH 3158/3421] Introduce notification_settings for telegram --- config_full.json.example | 11 ++++++++++- freqtrade/constants.py | 14 ++++++++++++++ freqtrade/rpc/telegram.py | 18 ++++++++++++++---- 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/config_full.json.example b/config_full.json.example index d5bfd3fe1..659580fb1 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -116,7 +116,16 @@ "telegram": { "enabled": true, "token": "your_telegram_token", - "chat_id": "your_telegram_chat_id" + "chat_id": "your_telegram_chat_id", + "notification_settings": { + "status": "on", + "warning": "on", + "startup": "on", + "buy": "on", + "sell": "on", + "buy_cancel": "on", + "sell_cancel": "on" + } }, "api_server": { "enabled": false, diff --git a/freqtrade/constants.py b/freqtrade/constants.py index c71b94bcb..de663bd4b 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -39,6 +39,8 @@ USERPATH_HYPEROPTS = 'hyperopts' USERPATH_STRATEGIES = 'strategies' USERPATH_NOTEBOOKS = 'notebooks' +TELEGRAM_SETTING_OPTIONS = ['on', 'off', 'silent'] + # Soure files with destination directories within user-directory USER_DATA_FILES = { 'sample_strategy.py': USERPATH_STRATEGIES, @@ -201,6 +203,18 @@ CONF_SCHEMA = { 'enabled': {'type': 'boolean'}, 'token': {'type': 'string'}, 'chat_id': {'type': 'string'}, + 'notification_settings': { + 'type': 'object', + 'properties': { + 'status': {'type': 'string', 'enum': TELEGRAM_SETTING_OPTIONS}, + 'warning': {'type': 'string', 'enum': TELEGRAM_SETTING_OPTIONS}, + 'startup': {'type': 'string', 'enum': TELEGRAM_SETTING_OPTIONS}, + 'buy': {'type': 'string', 'enum': TELEGRAM_SETTING_OPTIONS}, + 'sell': {'type': 'string', 'enum': TELEGRAM_SETTING_OPTIONS}, + 'buy_cancel': {'type': 'string', 'enum': TELEGRAM_SETTING_OPTIONS}, + 'sell_cancel': {'type': 'string', 'enum': TELEGRAM_SETTING_OPTIONS} + } + } }, 'required': ['enabled', 'token', 'chat_id'] }, diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 6d529a69f..905ed6755 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -132,6 +132,13 @@ class Telegram(RPC): def send_msg(self, msg: Dict[str, Any]) -> None: """ Send a message to telegram channel """ + noti = self._config['telegram'].get('notification_settings', {} + ).get(msg['type'].value, 'on') + if noti == 'off': + logger.info(f"Notification {msg['type']} not sent.") + # Notification disabled + return + if msg['type'] == RPCMessageType.BUY_NOTIFICATION: if self._fiat_converter: msg['stake_amount_fiat'] = self._fiat_converter.convert_amount( @@ -196,7 +203,7 @@ class Telegram(RPC): else: raise NotImplementedError('Unknown message type: {}'.format(msg['type'])) - self._send_msg(message) + self._send_msg(message, disable_notification=(noti == 'silent')) def _get_sell_emoji(self, msg): """ @@ -773,7 +780,8 @@ class Telegram(RPC): f"*Current state:* `{val['state']}`" ) - def _send_msg(self, msg: str, parse_mode: ParseMode = ParseMode.MARKDOWN) -> None: + def _send_msg(self, msg: str, parse_mode: ParseMode = ParseMode.MARKDOWN, + disable_notification: bool = False) -> None: """ Send given markdown message :param msg: message @@ -794,7 +802,8 @@ class Telegram(RPC): self._config['telegram']['chat_id'], text=msg, parse_mode=parse_mode, - reply_markup=reply_markup + reply_markup=reply_markup, + disable_notification=disable_notification, ) except NetworkError as network_err: # Sometimes the telegram server resets the current connection, @@ -807,7 +816,8 @@ class Telegram(RPC): self._config['telegram']['chat_id'], text=msg, parse_mode=parse_mode, - reply_markup=reply_markup + reply_markup=reply_markup, + disable_notification=disable_notification, ) except TelegramError as telegram_err: logger.warning( From 413d7ddf70f5750858d2bafb618deceb1ae01d39 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 19:42:56 +0200 Subject: [PATCH 3159/3421] Document telegram notification settings --- docs/telegram-usage.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md index 5f804386d..b718d40a6 100644 --- a/docs/telegram-usage.md +++ b/docs/telegram-usage.md @@ -41,6 +41,34 @@ Talk to the [userinfobot](https://telegram.me/userinfobot) Get your "Id", you will use it for the config parameter `chat_id`. +## Control telegram noise + +Freqtrade provides means to control the verbosity of your telegram bot. +Each setting has the follwoing possible values: + +* `on` - Messages will be sent, and user will be notified. +* `silent` - Message will be sent, Notification will be without sound / vibration. +* `off` - Skip sending a message-type all together. + +Example configuration showing the different settings: + +``` json +"telegram": { + "enabled": true, + "token": "your_telegram_token", + "chat_id": "your_telegram_chat_id", + "notification_settings": { + "status": "silent", + "warning": "on", + "startup": "off", + "buy": "silent", + "sell": "on", + "buy_cancel": "silent", + "sell_cancel": "on" + } + }, +``` + ## Telegram commands Per default, the Telegram bot shows predefined commands. Some commands From 2554dc48e4958cfb38733d1ce3c49cf6c256f9a0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 20:04:12 +0200 Subject: [PATCH 3160/3421] Add test for notification settings --- freqtrade/rpc/rpc.py | 3 +++ freqtrade/rpc/rpc_manager.py | 2 +- freqtrade/rpc/telegram.py | 4 ++-- freqtrade/rpc/webhook.py | 2 +- tests/rpc/test_rpc_manager.py | 2 +- tests/rpc/test_rpc_telegram.py | 26 +++++++++++++++++++++----- tests/rpc/test_rpc_webhook.py | 2 +- 7 files changed, 30 insertions(+), 11 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 649dd0f58..b32af1596 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -36,6 +36,9 @@ class RPCMessageType(Enum): def __repr__(self): return self.value + def __str__(self): + return self.value + class RPCException(Exception): """ diff --git a/freqtrade/rpc/rpc_manager.py b/freqtrade/rpc/rpc_manager.py index a9038d81c..e54749369 100644 --- a/freqtrade/rpc/rpc_manager.py +++ b/freqtrade/rpc/rpc_manager.py @@ -59,7 +59,7 @@ class RPCManager: try: mod.send_msg(msg) except NotImplementedError: - logger.error(f"Message type {msg['type']} not implemented by handler {mod.name}.") + logger.error(f"Message type '{msg['type']}' not implemented by handler {mod.name}.") def startup_messages(self, config: Dict[str, Any], pairlist) -> None: if config['dry_run']: diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 905ed6755..75c330dd0 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -133,9 +133,9 @@ class Telegram(RPC): """ Send a message to telegram channel """ noti = self._config['telegram'].get('notification_settings', {} - ).get(msg['type'].value, 'on') + ).get(msg['type'], 'on') if noti == 'off': - logger.info(f"Notification {msg['type']} not sent.") + logger.info(f"Notification '{msg['type']}' not sent.") # Notification disabled return diff --git a/freqtrade/rpc/webhook.py b/freqtrade/rpc/webhook.py index 7235e7c15..f089550c3 100644 --- a/freqtrade/rpc/webhook.py +++ b/freqtrade/rpc/webhook.py @@ -54,7 +54,7 @@ class Webhook(RPC): else: raise NotImplementedError('Unknown message type: {}'.format(msg['type'])) if not valuedict: - logger.info("Message type %s not configured for webhooks", msg['type']) + logger.info("Message type '%s' not configured for webhooks", msg['type']) return payload = {key: value.format(**msg) for (key, value) in valuedict.items()} diff --git a/tests/rpc/test_rpc_manager.py b/tests/rpc/test_rpc_manager.py index 5972bf864..e8d0f648e 100644 --- a/tests/rpc/test_rpc_manager.py +++ b/tests/rpc/test_rpc_manager.py @@ -127,7 +127,7 @@ def test_send_msg_webhook_CustomMessagetype(mocker, default_conf, caplog) -> Non rpc_manager.send_msg({'type': RPCMessageType.STARTUP_NOTIFICATION, 'status': 'TestMessage'}) assert log_has( - "Message type RPCMessageType.STARTUP_NOTIFICATION not implemented by handler webhook.", + "Message type 'startup' not implemented by handler webhook.", caplog) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 20f478b8a..3958a825a 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1299,16 +1299,14 @@ def test_show_config_handle(default_conf, update, mocker) -> None: assert '*Initial Stoploss:* `-0.1`' in msg_mock.call_args_list[0][0][0] -def test_send_msg_buy_notification(default_conf, mocker) -> None: +def test_send_msg_buy_notification(default_conf, mocker, caplog) -> None: msg_mock = MagicMock() mocker.patch.multiple( 'freqtrade.rpc.telegram.Telegram', _init=MagicMock(), _send_msg=msg_mock ) - freqtradebot = get_patched_freqtradebot(mocker, default_conf) - telegram = Telegram(freqtradebot) - telegram.send_msg({ + msg = { 'type': RPCMessageType.BUY_NOTIFICATION, 'exchange': 'Bittrex', 'pair': 'ETH/BTC', @@ -1321,7 +1319,10 @@ def test_send_msg_buy_notification(default_conf, mocker) -> None: 'current_rate': 1.099e-05, 'amount': 1333.3333333333335, 'open_date': arrow.utcnow().shift(hours=-1) - }) + } + freqtradebot = get_patched_freqtradebot(mocker, default_conf) + telegram = Telegram(freqtradebot) + telegram.send_msg(msg) assert msg_mock.call_args[0][0] \ == '\N{LARGE BLUE CIRCLE} *Bittrex:* Buying ETH/BTC\n' \ '*Amount:* `1333.33333333`\n' \ @@ -1329,6 +1330,21 @@ def test_send_msg_buy_notification(default_conf, mocker) -> None: '*Current Rate:* `0.00001099`\n' \ '*Total:* `(0.001000 BTC, 12.345 USD)`' + freqtradebot.config['telegram']['notification_settings'] = {'buy': 'off'} + caplog.clear() + msg_mock.reset_mock() + telegram.send_msg(msg) + msg_mock.call_count == 0 + log_has("Notification 'buy' not sent.", caplog) + + freqtradebot.config['telegram']['notification_settings'] = {'buy': 'silent'} + caplog.clear() + msg_mock.reset_mock() + + telegram.send_msg(msg) + msg_mock.call_count == 1 + msg_mock.call_args_list[0][1]['disable_notification'] is True + def test_send_msg_buy_cancel_notification(default_conf, mocker) -> None: msg_mock = MagicMock() diff --git a/tests/rpc/test_rpc_webhook.py b/tests/rpc/test_rpc_webhook.py index 2d2c5a4f4..9256a5316 100644 --- a/tests/rpc/test_rpc_webhook.py +++ b/tests/rpc/test_rpc_webhook.py @@ -174,7 +174,7 @@ def test_exception_send_msg(default_conf, mocker, caplog): webhook = Webhook(get_patched_freqtradebot(mocker, default_conf)) webhook.send_msg({'type': RPCMessageType.BUY_NOTIFICATION}) - assert log_has(f"Message type {RPCMessageType.BUY_NOTIFICATION} not configured for webhooks", + assert log_has(f"Message type '{RPCMessageType.BUY_NOTIFICATION}' not configured for webhooks", caplog) default_conf["webhook"] = get_webhook_dict() From a95dbdbde4a2706a19e3edf4190695b644902a6b Mon Sep 17 00:00:00 2001 From: HumanBot Date: Sat, 19 Sep 2020 14:31:23 -0400 Subject: [PATCH 3161/3421] Added 1M and 1y timeframes Huobi Pro allows monthly and yearly data downloading --- freqtrade/commands/cli_options.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 8eb5c3ce8..458aae325 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -375,7 +375,7 @@ AVAILABLE_CLI_OPTIONS = { help='Specify which tickers to download. Space-separated list. ' 'Default: `1m 5m`.', choices=['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', - '6h', '8h', '12h', '1d', '3d', '1w'], + '6h', '8h', '12h', '1d', '3d', '1w','1M', '1y'], default=['1m', '5m'], nargs='+', ), From 8c9a600dec579bb8d960cb53e5c6e8907bf5fa0f Mon Sep 17 00:00:00 2001 From: HumanBot Date: Sat, 19 Sep 2020 14:36:12 -0400 Subject: [PATCH 3162/3421] changed epochs from 5000 to 500 5000 is an overkill for the hyperopt process, repetitive 500 produce better predictions --- docs/hyperopt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 530faf700..3f7a27ef0 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -229,7 +229,7 @@ Because hyperopt tries a lot of combinations to find the best parameters it will We strongly recommend to use `screen` or `tmux` to prevent any connection loss. ```bash -freqtrade hyperopt --config config.json --hyperopt -e 5000 --spaces all +freqtrade hyperopt --config config.json --hyperopt -e 500 --spaces all ``` Use `` as the name of the custom hyperopt used. From a31de431edfa46fcce2d411e8dd17180e20204a2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 19 Sep 2020 20:38:42 +0200 Subject: [PATCH 3163/3421] Explicitly convert to type to string --- freqtrade/rpc/telegram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 75c330dd0..87e52980a 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -133,7 +133,7 @@ class Telegram(RPC): """ Send a message to telegram channel """ noti = self._config['telegram'].get('notification_settings', {} - ).get(msg['type'], 'on') + ).get(str(msg['type']), 'on') if noti == 'off': logger.info(f"Notification '{msg['type']}' not sent.") # Notification disabled From f51f445011f216dc491faf33cb659908d6b37263 Mon Sep 17 00:00:00 2001 From: HumanBot Date: Sat, 19 Sep 2020 14:45:36 -0400 Subject: [PATCH 3164/3421] 1M and 1y timeframes added Huobi Pro timeframes added --- docs/data-download.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data-download.md b/docs/data-download.md index 9f0486262..63a56959f 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -22,7 +22,7 @@ usage: freqtrade download-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-p PAIRS [PAIRS ...]] [--pairs-file FILE] [--days INT] [--timerange TIMERANGE] [--dl-trades] [--exchange EXCHANGE] - [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...]] + [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} ...]] [--erase] [--data-format-ohlcv {json,jsongz,hdf5}] [--data-format-trades {json,jsongz,hdf5}] @@ -41,7 +41,7 @@ optional arguments: as --timeframes/-t. --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no config is provided. - -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...] + -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} ...] Specify which tickers to download. Space-separated list. Default: `1m 5m`. --erase Clean all existing data for the selected @@ -104,7 +104,7 @@ usage: freqtrade convert-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-p PAIRS [PAIRS ...]] --format-from {json,jsongz,hdf5} --format-to {json,jsongz,hdf5} [--erase] - [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...]] + [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} ...]] optional arguments: -h, --help show this help message and exit @@ -117,7 +117,7 @@ optional arguments: Destination format for data conversion. --erase Clean all existing data for the selected exchange/pairs/timeframes. - -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} ...] + -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} ...] Specify which tickers to download. Space-separated list. Default: `1m 5m`. From c349499985714ac6c6616f7a4b8e64816f994bfb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 11:18:45 +0200 Subject: [PATCH 3165/3421] Also add 2w (supported by kraken) --- docs/data-download.md | 8 ++++---- freqtrade/commands/cli_options.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/data-download.md b/docs/data-download.md index 63a56959f..3a7e47c8b 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -22,7 +22,7 @@ usage: freqtrade download-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-p PAIRS [PAIRS ...]] [--pairs-file FILE] [--days INT] [--timerange TIMERANGE] [--dl-trades] [--exchange EXCHANGE] - [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} ...]] + [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} ...]] [--erase] [--data-format-ohlcv {json,jsongz,hdf5}] [--data-format-trades {json,jsongz,hdf5}] @@ -41,7 +41,7 @@ optional arguments: as --timeframes/-t. --exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no config is provided. - -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} ...] + -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} ...] Specify which tickers to download. Space-separated list. Default: `1m 5m`. --erase Clean all existing data for the selected @@ -104,7 +104,7 @@ usage: freqtrade convert-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-p PAIRS [PAIRS ...]] --format-from {json,jsongz,hdf5} --format-to {json,jsongz,hdf5} [--erase] - [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} ...]] + [-t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} ...]] optional arguments: -h, --help show this help message and exit @@ -117,7 +117,7 @@ optional arguments: Destination format for data conversion. --erase Clean all existing data for the selected exchange/pairs/timeframes. - -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M,1y} ...] + -t {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} ...], --timeframes {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} [{1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,2w,1M,1y} ...] Specify which tickers to download. Space-separated list. Default: `1m 5m`. diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 458aae325..81b8de1af 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -375,7 +375,7 @@ AVAILABLE_CLI_OPTIONS = { help='Specify which tickers to download. Space-separated list. ' 'Default: `1m 5m`.', choices=['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h', - '6h', '8h', '12h', '1d', '3d', '1w','1M', '1y'], + '6h', '8h', '12h', '1d', '3d', '1w', '2w', '1M', '1y'], default=['1m', '5m'], nargs='+', ), From 2b1d0b4ab5f78c2825c49d228eb3725ed647799f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 11:45:08 +0200 Subject: [PATCH 3166/3421] Rename references to "master" branch to "stable" closes #2496 --- .github/workflows/ci.yml | 7 ++++--- .github/workflows/docker_update_readme.yml | 2 +- CONTRIBUTING.md | 9 +++++---- README.md | 8 ++++---- docker-compose.yml | 2 +- docs/configuration.md | 2 +- docs/developer.md | 18 +++++++++--------- docs/docker.md | 6 +++--- docs/docker_quickstart.md | 6 +++--- docs/index.md | 2 +- docs/installation.md | 12 ++++++------ setup.sh | 14 +++++++------- 12 files changed, 45 insertions(+), 43 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e8bc01fa6..392641677 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,6 +4,7 @@ on: push: branches: - master + - stable - develop tags: release: @@ -193,7 +194,7 @@ jobs: steps: - name: Cleanup previous runs on this branch uses: rokroskar/workflow-run-cleanup-action@v0.2.2 - if: "!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/master' && github.repository == 'freqtrade/freqtrade'" + if: "!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/stable' && github.repository == 'freqtrade/freqtrade'" env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" @@ -235,7 +236,7 @@ jobs: - name: Publish to PyPI (Test) uses: pypa/gh-action-pypi-publish@master - if: (steps.extract_branch.outputs.branch == 'master' || github.event_name == 'release') + if: (steps.extract_branch.outputs.branch == 'stable' || github.event_name == 'release') with: user: __token__ password: ${{ secrets.pypi_test_password }} @@ -243,7 +244,7 @@ jobs: - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@master - if: (steps.extract_branch.outputs.branch == 'master' || github.event_name == 'release') + if: (steps.extract_branch.outputs.branch == 'stable' || github.event_name == 'release') with: user: __token__ password: ${{ secrets.pypi_password }} diff --git a/.github/workflows/docker_update_readme.yml b/.github/workflows/docker_update_readme.yml index 57a7e591e..95e69be2a 100644 --- a/.github/workflows/docker_update_readme.yml +++ b/.github/workflows/docker_update_readme.yml @@ -2,7 +2,7 @@ name: Update Docker Hub Description on: push: branches: - - master + - stable jobs: dockerHubDescription: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 90594866a..97f62154d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,8 +8,9 @@ Issues labeled [good first issue](https://github.com/freqtrade/freqtrade/labels/ Few pointers for contributions: -- Create your PR against the `develop` branch, not `master`. -- New features need to contain unit tests and must be PEP8 conformant (max-line-length = 100). +- Create your PR against the `develop` branch, not `stable`. +- New features need to contain unit tests, must conform to PEP8 (max-line-length = 100) and should be documented with the introduction PR. +- PR's can be declared as `[WIP]` - which signify Work in Progress Pull Requests (which are not finished). If you are unsure, discuss the feature on our [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) or in a [issue](https://github.com/freqtrade/freqtrade/issues) before a PR. @@ -18,7 +19,7 @@ or in a [issue](https://github.com/freqtrade/freqtrade/issues) before a PR. Best start by reading the [documentation](https://www.freqtrade.io/) to get a feel for what is possible with the bot, or head straight to the [Developer-documentation](https://www.freqtrade.io/en/latest/developer/) (WIP) which should help you getting started. -## Before sending the PR: +## Before sending the PR ### 1. Run unit tests @@ -114,6 +115,6 @@ Contributors may be given commit privileges. Preference will be given to those w 1. Access to resources for cross-platform development and testing. 1. Time to devote to the project regularly. -Being a Committer does not grant write permission on `develop` or `master` for security reasons (Users trust Freqtrade with their Exchange API keys). +Being a Committer does not grant write permission on `develop` or `stable` for security reasons (Users trust Freqtrade with their Exchange API keys). After being Committer for some time, a Committer may be named Core Committer and given full repository access. diff --git a/README.md b/README.md index 90f303c6d..feea47299 100644 --- a/README.md +++ b/README.md @@ -127,8 +127,8 @@ Telegram is not mandatory. However, this is a great way to control your bot. Mor The project is currently setup in two main branches: -- `develop` - This branch has often new features, but might also cause breaking changes. -- `master` - This branch contains the latest stable release. The bot 'should' be stable on this branch, and is generally well tested. +- `develop` - This branch has often new features, but might also contain breaking changes. We try hard to keep this branch as stable as possible. +- `stable` - This branch contains the latest stable release. This branch is generally well tested. - `feat/*` - These are feature branches, which are being worked on heavily. Please don't use these unless you want to test a specific feature. ## Support @@ -171,11 +171,11 @@ Issues labeled [good first issue](https://github.com/freqtrade/freqtrade/labels/ **Note** before starting any major new feature work, *please open an issue describing what you are planning to do* or talk to us on [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE). This will ensure that interested parties can give valuable feedback on the feature, and let others know that you are working on it. -**Important:** Always create your PR against the `develop` branch, not `master`. +**Important:** Always create your PR against the `develop` branch, not `stable`. ## Requirements -### Uptodate clock +### Up-to-date clock The clock must be accurate, syncronized to a NTP server very frequently to avoid problems with communication to the exchanges. diff --git a/docker-compose.yml b/docker-compose.yml index 49d83aa5e..527e6d62a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: freqtrade: - image: freqtradeorg/freqtrade:master + image: freqtradeorg/freqtrade:stable # image: freqtradeorg/freqtrade:develop # Build step - only needed when additional dependencies are needed # build: diff --git a/docs/configuration.md b/docs/configuration.md index bf141f8e8..d6e26f80e 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -375,7 +375,7 @@ Freqtrade is based on [CCXT library](https://github.com/ccxt/ccxt) that supports exchange markets and trading APIs. The complete up-to-date list can be found in the [CCXT repo homepage](https://github.com/ccxt/ccxt/tree/master/python). However, the bot was tested by the development team with only Bittrex, Binance and Kraken, - so the these are the only officially supported exhanges: + so the these are the only officially supported exchanges: - [Bittrex](https://bittrex.com/): "bittrex" - [Binance](https://www.binance.com/): "binance" diff --git a/docs/developer.md b/docs/developer.md index 9d47258b7..6eeaf47f4 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -263,13 +263,13 @@ jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to markdown freqtrade This documents some decisions taken for the CI Pipeline. * CI runs on all OS variants, Linux (ubuntu), macOS and Windows. -* Docker images are build for the branches `master` and `develop`. -* Raspberry PI Docker images are postfixed with `_pi` - so tags will be `:master_pi` and `develop_pi`. +* Docker images are build for the branches `stable` and `develop`. +* Raspberry PI Docker images are postfixed with `_pi` - so tags will be `:stable_pi` and `develop_pi`. * Docker images contain a file, `/freqtrade/freqtrade_commit` containing the commit this image is based of. * Full docker image rebuilds are run once a week via schedule. * Deployments run on ubuntu. * ta-lib binaries are contained in the build_helpers directory to avoid fails related to external unavailability. -* All tests must pass for a PR to be merged to `master` or `develop`. +* All tests must pass for a PR to be merged to `stable` or `develop`. ## Creating a release @@ -286,19 +286,19 @@ git checkout -b new_release Determine if crucial bugfixes have been made between this commit and the current state, and eventually cherry-pick these. -* Merge the release branch (master) into this branch. +* Merge the release branch (stable) into this branch. * Edit `freqtrade/__init__.py` and add the version matching the current date (for example `2019.7` for July 2019). Minor versions can be `2019.7.1` should we need to do a second release that month. Version numbers must follow allowed versions from PEP0440 to avoid failures pushing to pypi. * Commit this part -* push that branch to the remote and create a PR against the master branch +* push that branch to the remote and create a PR against the stable branch ### Create changelog from git commits !!! Note - Make sure that the master branch is up-to-date! + Make sure that the release branch is up-to-date! ``` bash # Needs to be done before merging / pulling that branch. -git log --oneline --no-decorate --no-merges master..new_release +git log --oneline --no-decorate --no-merges stable..new_release ``` To keep the release-log short, best wrap the full git changelog into a collapsible details section. @@ -314,11 +314,11 @@ To keep the release-log short, best wrap the full git changelog into a collapsib ### Create github release / tag -Once the PR against master is merged (best right after merging): +Once the PR against stable is merged (best right after merging): * Use the button "Draft a new release" in the Github UI (subsection releases). * Use the version-number specified as tag. -* Use "master" as reference (this step comes after the above PR is merged). +* Use "stable" as reference (this step comes after the above PR is merged). * Use the above changelog as release comment (as codeblock) ## Releases diff --git a/docs/docker.md b/docs/docker.md index 3fe335cf0..601c842f7 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -10,9 +10,9 @@ Pull the image from docker hub. Branches / tags available can be checked out on [Dockerhub tags page](https://hub.docker.com/r/freqtradeorg/freqtrade/tags/). ```bash -docker pull freqtradeorg/freqtrade:master +docker pull freqtradeorg/freqtrade:stable # Optionally tag the repository so the run-commands remain shorter -docker tag freqtradeorg/freqtrade:master freqtrade +docker tag freqtradeorg/freqtrade:stable freqtrade ``` To update the image, simply run the above commands again and restart your running container. @@ -20,7 +20,7 @@ To update the image, simply run the above commands again and restart your runnin Should you require additional libraries, please [build the image yourself](#build-your-own-docker-image). !!! Note "Docker image update frequency" - The official docker images with tags `master`, `develop` and `latest` are automatically rebuild once a week to keep the base image uptodate. + The official docker images with tags `stable`, `develop` and `latest` are automatically rebuild once a week to keep the base image up-to-date. In addition to that, every merge to `develop` will trigger a rebuild for `develop` and `latest`. ### Prepare the configuration files diff --git a/docs/docker_quickstart.md b/docs/docker_quickstart.md index c033e827b..caea4f599 100644 --- a/docs/docker_quickstart.md +++ b/docs/docker_quickstart.md @@ -29,7 +29,7 @@ Create a new directory and place the [docker-compose file](https://github.com/fr mkdir ft_userdata cd ft_userdata/ # Download the docker-compose file from the repository - curl https://raw.githubusercontent.com/freqtrade/freqtrade/master/docker-compose.yml -o docker-compose.yml + curl https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml -o docker-compose.yml # Pull the freqtrade image docker-compose pull @@ -46,7 +46,7 @@ Create a new directory and place the [docker-compose file](https://github.com/fr mkdir ft_userdata cd ft_userdata/ # Download the docker-compose file from the repository - curl https://raw.githubusercontent.com/freqtrade/freqtrade/master/docker-compose.yml -o docker-compose.yml + curl https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml -o docker-compose.yml # Pull the freqtrade image docker-compose pull @@ -61,7 +61,7 @@ Create a new directory and place the [docker-compose file](https://github.com/fr !!! Note "Change your docker Image" You have to change the docker image in the docker-compose file for your Raspberry build to work properly. ``` yml - image: freqtradeorg/freqtrade:master_pi + image: freqtradeorg/freqtrade:stable_pi # image: freqtradeorg/freqtrade:develop_pi ``` diff --git a/docs/index.md b/docs/index.md index 397c549aa..e7fc54628 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,7 +8,7 @@
              Fork -Download +Download Follow @freqtrade diff --git a/docs/installation.md b/docs/installation.md index 5f4807b99..9b15c9685 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -31,7 +31,7 @@ Freqtrade provides the Linux/MacOS Easy Installation script to install all depen The easiest way to install and run Freqtrade is to clone the bot Github repository and then run the Easy Installation script, if it's available for your platform. !!! Note "Version considerations" - When cloning the repository the default working branch has the name `develop`. This branch contains all last features (can be considered as relatively stable, thanks to automated tests). The `master` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable). + When cloning the repository the default working branch has the name `develop`. This branch contains all last features (can be considered as relatively stable, thanks to automated tests). The `stable` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable). !!! Note Python3.6 or higher and the corresponding `pip` are assumed to be available. The install-script will warn you and stop if that's not the case. `git` is also needed to clone the Freqtrade repository. @@ -41,11 +41,11 @@ This can be achieved with the following commands: ```bash git clone https://github.com/freqtrade/freqtrade.git cd freqtrade -# git checkout master # Optional, see (1) +# git checkout stable # Optional, see (1) ./setup.sh --install ``` -(1) This command switches the cloned repository to the use of the `master` branch. It's not needed if you wish to stay on the `develop` branch. You may later switch between branches at any time with the `git checkout master`/`git checkout develop` commands. +(1) This command switches the cloned repository to the use of the `stable` branch. It's not needed if you wish to stay on the `develop` branch. You may later switch between branches at any time with the `git checkout stable`/`git checkout develop` commands. ## Easy Installation Script (Linux/MacOS) @@ -56,7 +56,7 @@ $ ./setup.sh usage: -i,--install Install freqtrade from scratch -u,--update Command git pull to update. - -r,--reset Hard reset your develop/master branch. + -r,--reset Hard reset your develop/stable branch. -c,--config Easy config generator (Will override your existing file). ``` @@ -76,7 +76,7 @@ This option will pull the last version of your current branch and update your vi ** --reset ** -This option will hard reset your branch (only if you are on either `master` or `develop`) and recreate your virtualenv. +This option will hard reset your branch (only if you are on either `stable` or `develop`) and recreate your virtualenv. ** --config ** @@ -174,7 +174,7 @@ Clone the git repository: ```bash git clone https://github.com/freqtrade/freqtrade.git cd freqtrade -git checkout master +git checkout stable ``` #### 4. Install python dependencies diff --git a/setup.sh b/setup.sh index 918c41e6b..049a6a77e 100755 --- a/setup.sh +++ b/setup.sh @@ -120,13 +120,13 @@ function update() { updateenv } -# Reset Develop or Master branch +# Reset Develop or Stable branch function reset() { echo "----------------------------" echo "Reseting branch and virtual env" echo "----------------------------" - if [ "1" == $(git branch -vv |grep -cE "\* develop|\* master") ] + if [ "1" == $(git branch -vv |grep -cE "\* develop|\* stable") ] then read -p "Reset git branch? (This will remove all changes you made!) [y/N]? " @@ -138,14 +138,14 @@ function reset() { then echo "- Hard resetting of 'develop' branch." git reset --hard origin/develop - elif [ "1" == $(git branch -vv |grep -c "* master") ] + elif [ "1" == $(git branch -vv |grep -c "* stable") ] then - echo "- Hard resetting of 'master' branch." - git reset --hard origin/master + echo "- Hard resetting of 'stable' branch." + git reset --hard origin/stable fi fi else - echo "Reset ignored because you are not on 'master' or 'develop'." + echo "Reset ignored because you are not on 'stable' or 'develop'." fi if [ -d ".env" ]; then @@ -270,7 +270,7 @@ function help() { echo "usage:" echo " -i,--install Install freqtrade from scratch" echo " -u,--update Command git pull to update." - echo " -r,--reset Hard reset your develop/master branch." + echo " -r,--reset Hard reset your develop/stable branch." echo " -c,--config Easy config generator (Will override your existing file)." echo " -p,--plot Install dependencies for Plotting scripts." } From b3f0bfd77f8b2f5f5c107a7f6b2880ddf9ba0896 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 11:51:12 +0200 Subject: [PATCH 3167/3421] Fix a few random typos --- docs/faq.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index 48f52a566..beed89801 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -89,7 +89,7 @@ Same fix should be done in the configuration file, if order types are defined in ### How do I search the bot logs for something? -By default, the bot writes its log into stderr stream. This is implemented this way so that you can easily separate the bot's diagnostics messages from Backtesting, Edge and Hyperopt results, output from other various Freqtrade utility subcommands, as well as from the output of your custom `print()`'s you may have inserted into your strategy. So if you need to search the log messages with the grep utility, you need to redirect stderr to stdout and disregard stdout. +By default, the bot writes its log into stderr stream. This is implemented this way so that you can easily separate the bot's diagnostics messages from Backtesting, Edge and Hyperopt results, output from other various Freqtrade utility sub-commands, as well as from the output of your custom `print()`'s you may have inserted into your strategy. So if you need to search the log messages with the grep utility, you need to redirect stderr to stdout and disregard stdout. * In unix shells, this normally can be done as simple as: ```shell @@ -114,7 +114,7 @@ and then grep it as: ```shell $ cat /path/to/mylogfile.log | grep 'something' ``` -or even on the fly, as the bot works and the logfile grows: +or even on the fly, as the bot works and the log file grows: ```shell $ tail -f /path/to/mylogfile.log | grep 'something' ``` @@ -137,7 +137,7 @@ compute. Since hyperopt uses Bayesian search, running for too many epochs may not produce greater results. -It's therefore recommended to run between 500-1000 epochs over and over until you hit at least 10.000 epocs in total (or are satisfied with the result). You can best judge by looking at the results - if the bot keeps discovering better strategies, it's best to keep on going. +It's therefore recommended to run between 500-1000 epochs over and over until you hit at least 10.000 epochs in total (or are satisfied with the result). You can best judge by looking at the results - if the bot keeps discovering better strategies, it's best to keep on going. ```bash freqtrade hyperopt -e 1000 @@ -153,7 +153,7 @@ for i in {1..100}; do freqtrade hyperopt -e 1000; done * Discovering a great strategy with Hyperopt takes time. Study www.freqtrade.io, the Freqtrade Documentation page, join the Freqtrade [Slack community](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) - or the Freqtrade [discord community](https://discord.gg/X89cVG). While you patiently wait for the most advanced, free crypto bot in the world, to hand you a possible golden strategy specially designed just for you. -* If you wonder why it can take from 20 minutes to days to do 1000 epocs here are some answers: +* If you wonder why it can take from 20 minutes to days to do 1000 epochs here are some answers: This answer was written during the release 0.15.1, when we had: @@ -167,7 +167,7 @@ already 8\*10^9\*10 evaluations. A roughly total of 80 billion evals. Did you run 100 000 evals? Congrats, you've done roughly 1 / 100 000 th of the search space, assuming that the bot never tests the same parameters more than once. -* The time it takes to run 1000 hyperopt epocs depends on things like: The available cpu, harddisk, ram, timeframe, timerange, indicator settings, indicator count, amount of coins that hyperopt test strategies on and the resulting trade count - which can be 650 trades in a year or 10.0000 trades depending if the strategy aims for big profits by trading rarely or for many low profit trades. +* The time it takes to run 1000 hyperopt epochs depends on things like: The available cpu, hard-disk, ram, timeframe, timerange, indicator settings, indicator count, amount of coins that hyperopt test strategies on and the resulting trade count - which can be 650 trades in a year or 10.0000 trades depending if the strategy aims for big profits by trading rarely or for many low profit trades. Example: 4% profit 650 times vs 0,3% profit a trade 10.000 times in a year. If we assume you set the --timerange to 365 days. @@ -180,7 +180,7 @@ Example: The Edge module is mostly a result of brainstorming of [@mishaker](https://github.com/mishaker) and [@creslinux](https://github.com/creslinux) freqtrade team members. -You can find further info on expectancy, winrate, risk management and position size in the following sources: +You can find further info on expectancy, win rate, risk management and position size in the following sources: - https://www.tradeciety.com/ultimate-math-guide-for-traders/ - http://www.vantharp.com/tharp-concepts/expectancy.asp From 637fe35549ab3c9d30f6361adc02f53a11b5ba2a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 11:53:47 +0200 Subject: [PATCH 3168/3421] Fix typo in release documentation --- docs/developer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developer.md b/docs/developer.md index 6eeaf47f4..21934916f 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -294,7 +294,7 @@ Determine if crucial bugfixes have been made between this commit and the current ### Create changelog from git commits !!! Note - Make sure that the release branch is up-to-date! + Make sure that the `stable` branch is up-to-date! ``` bash # Needs to be done before merging / pulling that branch. From b72cccae3c04e279f9f1e09580789576f7721e79 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 13:09:34 +0200 Subject: [PATCH 3169/3421] Add note about download-data in combination with startup period closes #2673 --- docs/data-download.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/data-download.md b/docs/data-download.md index 3a7e47c8b..e9c5c1865 100644 --- a/docs/data-download.md +++ b/docs/data-download.md @@ -71,6 +71,11 @@ Common arguments: ``` +!!! Note "Startup period" + `download-data` is a strategy-independent command. The idea is to download a big chunk of data once, and then iteratively increase the amount of data stored. + + For that reason, `download-data` does not care about the "startup-period" defined in a strategy. It's up to the user to download additional days if the backtest should start at a specific point in time (while respecting startup period). + ### Data format Freqtrade currently supports 3 data-formats for both OHLCV and trades data: From 8ff7ce8b17ad8b9df409f64a314e99ec44d67099 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 11:40:16 +0000 Subject: [PATCH 3170/3421] Introduce devcontainer --- .devcontainer/devcontainer.json | 38 ++++++++++++++++++++++++++++++++ .devcontainer/docker-compose.yml | 10 +++++++++ 2 files changed, 48 insertions(+) create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/docker-compose.yml diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..916f4e911 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,38 @@ +{ + "name": "freqtrade Develop", + + // Update the 'dockerComposeFile' list if you have more compose files or use different names. + // The .devcontainer/docker-compose.yml file contains any overrides you need/want to make. + "dockerComposeFile": [ + "docker-compose.yml" + // "docker-compose.vscode.yml" + ], + + "service": "freqtrade_develop", + + // The optional 'workspaceFolder' property is the path VS Code should open by default when + // connected. This is typically a file mount in .devcontainer/docker-compose.yml + "workspaceFolder": "/freqtrade/", + + "settings": { + "terminal.integrated.shell.linux": null + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [], + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Uncomment the next line if you want start specific services in your Docker Compose config. + // "runServices": [], + + // Uncomment the next line if you want to keep your containers running after VS Code shuts down. + // "shutdownAction": "none", + + // Uncomment the next line to run commands after the container is created - for example installing curl. + // "postCreateCommand": "sudo apt-get update && apt-get install -y git", + + // Uncomment to connect as a non-root user if you've added one. See https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "ftuser" +} diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 000000000..d5927c4a9 --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,10 @@ +--- +version: '3' +services: + freqtrade_develop: + build: + context: .. + dockerfile: "Dockerfile.develop" + volumes: + - ..:/freqtrade:cached + command: /bin/sh -c "while sleep 1000; do :; done" From 7ead4f9fa3625dc06872494c34a7c198bd264e41 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 14:16:36 +0200 Subject: [PATCH 3171/3421] Update devcontainer settings --- .devcontainer/devcontainer.json | 63 +++++++++++++++++++------------- .devcontainer/docker-compose.yml | 9 ++++- 2 files changed, 45 insertions(+), 27 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 916f4e911..7a5e43cf1 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,38 +1,49 @@ { - "name": "freqtrade Develop", + "name": "freqtrade Develop", - // Update the 'dockerComposeFile' list if you have more compose files or use different names. - // The .devcontainer/docker-compose.yml file contains any overrides you need/want to make. - "dockerComposeFile": [ - "docker-compose.yml" - // "docker-compose.vscode.yml" - ], + // Update the 'dockerComposeFile' list if you have more compose files or use different names. + // The .devcontainer/docker-compose.yml file contains any overrides you need/want to make. + "dockerComposeFile": [ + "docker-compose.yml" + // "docker-compose.vscode.yml" + ], - "service": "freqtrade_develop", + "service": "ft_vscode", - // The optional 'workspaceFolder' property is the path VS Code should open by default when - // connected. This is typically a file mount in .devcontainer/docker-compose.yml - "workspaceFolder": "/freqtrade/", + // The optional 'workspaceFolder' property is the path VS Code should open by default when + // connected. This is typically a file mount in .devcontainer/docker-compose.yml + "workspaceFolder": "/freqtrade/", - "settings": { - "terminal.integrated.shell.linux": null - }, + "settings": { + "terminal.integrated.shell.linux": "/bin/bash", + "editor.insertSpaces": true, + "files.trimTrailingWhitespace": true, + "[markdown]": { + "files.trimTrailingWhitespace": false, + }, + "python.pythonPath": "/usr/local/bin/python", + }, - // Add the IDs of extensions you want installed when the container is created. - "extensions": [], + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "ms-python.python", + "ms-python.vscode-pylance", + "davidanson.vscode-markdownlint", + "ms-azuretools.vscode-docker", + ], - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], - // Uncomment the next line if you want start specific services in your Docker Compose config. - // "runServices": [], + // Uncomment the next line if you want start specific services in your Docker Compose config. + // "runServices": [], - // Uncomment the next line if you want to keep your containers running after VS Code shuts down. - // "shutdownAction": "none", + // Uncomment the next line if you want to keep your containers running after VS Code shuts down. + // "shutdownAction": "none", - // Uncomment the next line to run commands after the container is created - for example installing curl. - // "postCreateCommand": "sudo apt-get update && apt-get install -y git", + // Uncomment the next line to run commands after the container is created - for example installing curl. + // "postCreateCommand": "sudo apt-get update && apt-get install -y git", - // Uncomment to connect as a non-root user if you've added one. See https://aka.ms/vscode-remote/containers/non-root. - "remoteUser": "ftuser" + // Uncomment to connect as a non-root user if you've added one. See https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "ftuser" } diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index d5927c4a9..93ffee309 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -1,10 +1,17 @@ --- version: '3' services: - freqtrade_develop: + ft_vscode: build: context: .. dockerfile: "Dockerfile.develop" volumes: - ..:/freqtrade:cached + - freqtrade-vscode-server:/home/ftuser/.vscode-server + - freqtrade-bashhistory:/home/ftuser/commandhistory + command: /bin/sh -c "while sleep 1000; do :; done" + +volumes: + freqtrade-vscode-server: + freqtrade-bashhistory: From 20e5c1b3885229af7fc1479346953404d7dabc2e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 12:16:58 +0000 Subject: [PATCH 3172/3421] Update Developer documentation related to docker --- docs/developer.md | 44 ++++++-------------------------------------- 1 file changed, 6 insertions(+), 38 deletions(-) diff --git a/docs/developer.md b/docs/developer.md index 9d47258b7..e359ff34a 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -50,50 +50,18 @@ def test_method_to_test(caplog): ``` -### Local docker usage +### Devcontainer setup -The fastest and easiest way to start up is to use docker-compose.develop which gives developers the ability to start the bot up with all the required dependencies, *without* needing to install any freqtrade specific dependencies on your local machine. +The fastest and easiest way to get started is to use [VSCode](https://code.visualstudio.com/) with the Remote container extension. +This gives developers the ability to start the bot with all required dependencies *without* needing to install any freqtrade specific dependencies on your local machine. #### Install -* [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) +* [VSCode](https://code.visualstudio.com/) * [docker](https://docs.docker.com/install/) -* [docker-compose](https://docs.docker.com/compose/install/) +* [Remote container extension documentation](https://code.visualstudio.com/docs/remote) -#### Starting the bot - -##### Use the develop dockerfile - -``` bash -rm docker-compose.yml && mv docker-compose.develop.yml docker-compose.yml -``` - -#### Docker Compose - -##### Starting - -``` bash -docker-compose up -``` - -![Docker compose up](https://user-images.githubusercontent.com/419355/65456322-47f63a80-de06-11e9-90c6-3c74d1bad0b8.png) - -##### Rebuilding - -``` bash -docker-compose build -``` - -##### Executing (effectively SSH into the container) - -The `exec` command requires that the container already be running, if you want to start it -that can be effected by `docker-compose up` or `docker-compose run freqtrade_develop` - -``` bash -docker-compose exec freqtrade_develop /bin/bash -``` - -![image](https://user-images.githubusercontent.com/419355/65456522-ba671a80-de06-11e9-9598-df9ca0d8dcac.png) +For more information about the [Remote container extension](https://code.visualstudio.com/docs/remote), best consult the documentation. ## ErrorHandling From cf85a178f33da910010a423cebe90f0aa076d0df Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 12:34:57 +0000 Subject: [PATCH 3173/3421] Update developer documentation related to devcontainer --- docs/developer.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/developer.md b/docs/developer.md index e359ff34a..22de01f78 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -21,11 +21,24 @@ This will spin up a local server (usually on port 8000) so you can see if everyt ## Developer setup -To configure a development environment, best use the `setup.sh` script and answer "y" when asked "Do you want to install dependencies for dev [y/N]? ". -Alternatively (if your system is not supported by the setup.sh script), follow the manual installation process and run `pip3 install -e .[all]`. +To configure a development environment, you can either use the provided [DevContainer](#devcontainer-setup), or use the `setup.sh` script and answer "y" when asked "Do you want to install dependencies for dev [y/N]? ". +Alternatively (e.g. if your system is not supported by the setup.sh script), follow the manual installation process and run `pip3 install -e .[all]`. This will install all required tools for development, including `pytest`, `flake8`, `mypy`, and `coveralls`. +### Devcontainer setup + +The fastest and easiest way to get started is to use [VSCode](https://code.visualstudio.com/) with the Remote container extension. +This gives developers the ability to start the bot with all required dependencies *without* needing to install any freqtrade specific dependencies on your local machine. + +#### Devcontainer dependencies + +* [VSCode](https://code.visualstudio.com/) +* [docker](https://docs.docker.com/install/) +* [Remote container extension documentation](https://code.visualstudio.com/docs/remote) + +For more information about the [Remote container extension](https://code.visualstudio.com/docs/remote), best consult the documentation. + ### Tests New code should be covered by basic unittests. Depending on the complexity of the feature, Reviewers may request more in-depth unittests. @@ -50,19 +63,6 @@ def test_method_to_test(caplog): ``` -### Devcontainer setup - -The fastest and easiest way to get started is to use [VSCode](https://code.visualstudio.com/) with the Remote container extension. -This gives developers the ability to start the bot with all required dependencies *without* needing to install any freqtrade specific dependencies on your local machine. - -#### Install - -* [VSCode](https://code.visualstudio.com/) -* [docker](https://docs.docker.com/install/) -* [Remote container extension documentation](https://code.visualstudio.com/docs/remote) - -For more information about the [Remote container extension](https://code.visualstudio.com/docs/remote), best consult the documentation. - ## ErrorHandling Freqtrade Exceptions all inherit from `FreqtradeException`. From 0a7b6f73c9fc895869ab4b2b4c0178e95bd8de3d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 12:35:08 +0000 Subject: [PATCH 3174/3421] Move devcontainer stuff to .devcontainer --- .devcontainer/Dockerfile | 22 ++++++++++++++++++++++ .devcontainer/devcontainer.json | 5 ----- .devcontainer/docker-compose.yml | 7 +++++-- docker-compose.develop.yml | 20 -------------------- 4 files changed, 27 insertions(+), 27 deletions(-) create mode 100644 .devcontainer/Dockerfile delete mode 100644 docker-compose.develop.yml diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 000000000..1c2ab8de0 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,22 @@ +FROM freqtradeorg/freqtrade:develop + +# Install dependencies +COPY requirements-dev.txt /freqtrade/ +RUN apt-get update \ + && apt-get -y install git sudo vim \ + && apt-get clean \ + && pip install numpy --no-cache-dir \ + # Install ALL dependencies + && pip install -r requirements-dev.txt --no-cache-dir \ + # Install documentation dependencies (to enable mkdocs) + && pip install -r docs/requirements-docs.txt --no-cache-dir \ + && useradd -m ftuser \ + && mkdir -p /home/ftuser/.vscode-server /home/ftuser/.vscode-server-insiders /home/ftuser/commandhistory \ + && echo "export PROMPT_COMMAND='history -a'" >> /home/ftuser/.bashrc \ + && echo "export HISTFILE=~/commandhistory/.bash_history" >> /home/ftuser/.bashrc \ + && chown ftuser: -R /home/ftuser/ + +USER ftuser + +# Empty the ENTRYPOINT to allow all commands +ENTRYPOINT [] diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7a5e43cf1..1882e3bdf 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,17 +1,12 @@ { "name": "freqtrade Develop", - // Update the 'dockerComposeFile' list if you have more compose files or use different names. - // The .devcontainer/docker-compose.yml file contains any overrides you need/want to make. "dockerComposeFile": [ "docker-compose.yml" - // "docker-compose.vscode.yml" ], "service": "ft_vscode", - // The optional 'workspaceFolder' property is the path VS Code should open by default when - // connected. This is typically a file mount in .devcontainer/docker-compose.yml "workspaceFolder": "/freqtrade/", "settings": { diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 93ffee309..7cf3ba2f5 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -4,14 +4,17 @@ services: ft_vscode: build: context: .. - dockerfile: "Dockerfile.develop" + dockerfile: ".devcontainer/Dockerfile" volumes: - ..:/freqtrade:cached - freqtrade-vscode-server:/home/ftuser/.vscode-server - freqtrade-bashhistory:/home/ftuser/commandhistory - + # Expose API port + ports: + - "127.0.0.1:8080:8080" command: /bin/sh -c "while sleep 1000; do :; done" + volumes: freqtrade-vscode-server: freqtrade-bashhistory: diff --git a/docker-compose.develop.yml b/docker-compose.develop.yml deleted file mode 100644 index 562b5960a..000000000 --- a/docker-compose.develop.yml +++ /dev/null @@ -1,20 +0,0 @@ ---- -version: '3' -services: - freqtrade_develop: - build: - context: . - dockerfile: "./Dockerfile.develop" - volumes: - - ".:/freqtrade" - entrypoint: - - "freqtrade" - - freqtrade_bash: - build: - context: . - dockerfile: "./Dockerfile.develop" - volumes: - - ".:/freqtrade" - entrypoint: - - "/bin/bash" From 4355f36cd6eae5e96acf8bef52bcbb9a8c6cd795 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 12:36:47 +0000 Subject: [PATCH 3175/3421] Add gitconfig to devcontainer --- .devcontainer/docker-compose.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 7cf3ba2f5..7b5e64609 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -6,7 +6,11 @@ services: context: .. dockerfile: ".devcontainer/Dockerfile" volumes: + # Allow git usage within container + - "/home/${USER}/.ssh:/home/ftuser/.ssh:ro" + - "/home/${USER}/.gitconfig:/home/ftuser/.gitconfig:ro" - ..:/freqtrade:cached + # Persist bash-history - freqtrade-vscode-server:/home/ftuser/.vscode-server - freqtrade-bashhistory:/home/ftuser/commandhistory # Expose API port From 096079a595f03294ffea6a03f70b2f4c90fbea93 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 12:41:17 +0000 Subject: [PATCH 3176/3421] Install autopep8 --- .devcontainer/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 1c2ab8de0..3430cac5a 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -5,7 +5,7 @@ COPY requirements-dev.txt /freqtrade/ RUN apt-get update \ && apt-get -y install git sudo vim \ && apt-get clean \ - && pip install numpy --no-cache-dir \ + && pip install autopep8--no-cache-dir \ # Install ALL dependencies && pip install -r requirements-dev.txt --no-cache-dir \ # Install documentation dependencies (to enable mkdocs) From 129cbf5ef58ad991465dbd5b2ce1971f63ac035a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 14:58:15 +0200 Subject: [PATCH 3177/3421] Add more Dockerfiles --- Dockerfile.develop => docker/Dockerfile.develop | 1 + docker/Dockerfile.jupyter | 7 +++++++ docker/Dockerfile.plot | 9 +++++++++ .../Dockerfile.technical | 0 docker/docker-compose-jupyter.yml | 16 ++++++++++++++++ 5 files changed, 33 insertions(+) rename Dockerfile.develop => docker/Dockerfile.develop (99%) create mode 100644 docker/Dockerfile.jupyter create mode 100644 docker/Dockerfile.plot rename Dockerfile.technical => docker/Dockerfile.technical (100%) create mode 100644 docker/docker-compose-jupyter.yml diff --git a/Dockerfile.develop b/docker/Dockerfile.develop similarity index 99% rename from Dockerfile.develop rename to docker/Dockerfile.develop index 8f6871c55..cb49984e2 100644 --- a/Dockerfile.develop +++ b/docker/Dockerfile.develop @@ -2,6 +2,7 @@ FROM freqtradeorg/freqtrade:develop # Install dependencies COPY requirements-dev.txt /freqtrade/ + RUN pip install numpy --no-cache-dir \ && pip install -r requirements-dev.txt --no-cache-dir diff --git a/docker/Dockerfile.jupyter b/docker/Dockerfile.jupyter new file mode 100644 index 000000000..b7499eeef --- /dev/null +++ b/docker/Dockerfile.jupyter @@ -0,0 +1,7 @@ +FROM freqtradeorg/freqtrade:develop_plot + + +RUN pip install jupyterlab --no-cache-dir + +# Empty the ENTRYPOINT to allow all commands +ENTRYPOINT [] diff --git a/docker/Dockerfile.plot b/docker/Dockerfile.plot new file mode 100644 index 000000000..9313a34b9 --- /dev/null +++ b/docker/Dockerfile.plot @@ -0,0 +1,9 @@ +FROM freqtradeorg/freqtrade:develop + +# Install dependencies +COPY requirements-plot.txt /freqtrade/ + +RUN pip install -r requirements-plot.txt --no-cache-dir + +# Empty the ENTRYPOINT to allow all commands +ENTRYPOINT [] diff --git a/Dockerfile.technical b/docker/Dockerfile.technical similarity index 100% rename from Dockerfile.technical rename to docker/Dockerfile.technical diff --git a/docker/docker-compose-jupyter.yml b/docker/docker-compose-jupyter.yml new file mode 100644 index 000000000..4b396d0f5 --- /dev/null +++ b/docker/docker-compose-jupyter.yml @@ -0,0 +1,16 @@ +--- +version: '3' +services: + freqtrade: + build: + context: .. + dockerfile: docker/Dockerfile.jupyter + restart: unless-stopped + container_name: freqtrade + ports: + - "18889:8888" + volumes: + - "./user_data:/freqtrade/user_data" + # Default command used when running `docker compose up` + command: > + jupyter lab --port=8888 --ip 0.0.0.0 --allow-root From 85ab6e43baee20e9b6666f7077fa7f6760af3c9d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 14:58:27 +0200 Subject: [PATCH 3178/3421] Build _plot dockerfile --- build_helpers/publish_docker.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build_helpers/publish_docker.sh b/build_helpers/publish_docker.sh index 03a95161b..8e132ecba 100755 --- a/build_helpers/publish_docker.sh +++ b/build_helpers/publish_docker.sh @@ -2,6 +2,7 @@ # Replace / with _ to create a valid tag TAG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g") +TAG_PLOT=${TAG}_plot echo "Running for ${TAG}" # Add commit and commit_message to docker container @@ -16,6 +17,7 @@ else docker pull ${IMAGE_NAME}:${TAG} docker build --cache-from ${IMAGE_NAME}:${TAG} -t freqtrade:${TAG} . fi +docker build --cache-from freqtrade:${TAG} -t freqtrade:${TAG_PLOT} -f docker/Dockerfile.plot . if [ $? -ne 0 ]; then echo "failed building image" @@ -32,6 +34,7 @@ fi # Tag image for upload docker tag freqtrade:$TAG ${IMAGE_NAME}:$TAG +docker tag freqtrade:$TAG_PLOT ${IMAGE_NAME}:$TAG_PLOT if [ $? -ne 0 ]; then echo "failed tagging image" return 1 From 40132bbea400497143f464688d9733f6e4a0bdf0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 14:58:37 +0200 Subject: [PATCH 3179/3421] Add this branch to CI --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e8bc01fa6..34683ce9b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,6 +5,7 @@ on: branches: - master - develop + - add_devcontainer tags: release: types: [published] From f9efbed0765ed0597544f7c2f798219088086478 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 14:59:13 +0200 Subject: [PATCH 3180/3421] Ignore userdata from docker build --- .dockerignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.dockerignore b/.dockerignore index 223b3b110..09f4c9f0c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -13,3 +13,4 @@ CONTRIBUTING.md MANIFEST.in README.md freqtrade.service +user_data From 30c1253f75949871011843c96e5ea9c12a507aeb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 15:02:07 +0200 Subject: [PATCH 3181/3421] Use correct ports for jupyter compose file --- docker/docker-compose-jupyter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/docker-compose-jupyter.yml b/docker/docker-compose-jupyter.yml index 4b396d0f5..14e45983d 100644 --- a/docker/docker-compose-jupyter.yml +++ b/docker/docker-compose-jupyter.yml @@ -8,7 +8,7 @@ services: restart: unless-stopped container_name: freqtrade ports: - - "18889:8888" + - "127.0.0.1:8888:8888" volumes: - "./user_data:/freqtrade/user_data" # Default command used when running `docker compose up` From ab190f7a5b5acc9ca02935b08edad81c442a96e9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 15:12:30 +0200 Subject: [PATCH 3182/3421] Document jupyter with docker usage --- docs/data-analysis.md | 22 +++++++++++++++------- docs/docker_quickstart.md | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/docs/data-analysis.md b/docs/data-analysis.md index fc4693b17..17da98935 100644 --- a/docs/data-analysis.md +++ b/docs/data-analysis.md @@ -1,12 +1,22 @@ # Analyzing bot data with Jupyter notebooks -You can analyze the results of backtests and trading history easily using Jupyter notebooks. Sample notebooks are located at `user_data/notebooks/`. +You can analyze the results of backtests and trading history easily using Jupyter notebooks. Sample notebooks are located at `user_data/notebooks/` after initializing the user directory with `freqtrade create-userdir --userdir user_data`. -## Pro tips +## Quick start with docker + +Freqtrade provides a docker-compose file which starts up a jupyter lab server. +You can run this server using the following command: `docker-compose -f docker/docker-compose-jupyter.yml up` + +This will create a dockercontainer running jupyter lab, which will be accessible using `https://127.0.0.1:8888/lab`. +Please use the link that's printed in the console after startup for simplified login. + +For more information, Please visit the [Data analysis with Docker](docker_quickstart.md#data-analayis-using-docker-compose) section. + +### Pro tips * See [jupyter.org](https://jupyter.org/documentation) for usage instructions. * Don't forget to start a Jupyter notebook server from within your conda or venv environment or use [nb_conda_kernels](https://github.com/Anaconda-Platform/nb_conda_kernels)* -* Copy the example notebook before use so your changes don't get clobbered with the next freqtrade update. +* Copy the example notebook before use so your changes don't get overwritten with the next freqtrade update. ### Using virtual environment with system-wide Jupyter installation @@ -28,10 +38,8 @@ ipython kernel install --user --name=freqtrade !!! Note This section is provided for completeness, the Freqtrade Team won't provide full support for problems with this setup and will recommend to install Jupyter in the virtual environment directly, as that is the easiest way to get jupyter notebooks up and running. For help with this setup please refer to the [Project Jupyter](https://jupyter.org/) [documentation](https://jupyter.org/documentation) or [help channels](https://jupyter.org/community). - -## Fine print - -Some tasks don't work especially well in notebooks. For example, anything using asynchronous execution is a problem for Jupyter. Also, freqtrade's primary entry point is the shell cli, so using pure python in a notebook bypasses arguments that provide required objects and parameters to helper functions. You may need to set those values or create expected objects manually. +!!! Warning + Some tasks don't work especially well in notebooks. For example, anything using asynchronous execution is a problem for Jupyter. Also, freqtrade's primary entry point is the shell cli, so using pure python in a notebook bypasses arguments that provide required objects and parameters to helper functions. You may need to set those values or create expected objects manually. ## Recommended workflow diff --git a/docs/docker_quickstart.md b/docs/docker_quickstart.md index c033e827b..853d57f3d 100644 --- a/docs/docker_quickstart.md +++ b/docs/docker_quickstart.md @@ -160,3 +160,21 @@ You'll then also need to modify the `docker-compose.yml` file and uncomment the ``` You can then run `docker-compose build` to build the docker image, and run it using the commands described above. + +## Data analayis using docker compose + +Freqtrade provides a docker-compose file which starts up a jupyter lab server. +You can run this server using the following command: + +``` bash +docker-compose -f docker/docker-compose-jupyter.yml up +``` + +This will create a dockercontainer running jupyter lab, which will be accessible using `https://127.0.0.1:8888/lab`. +Please use the link that's printed in the console after startup for simplified login. + +Since part of this image is built on your machine, it is recommended to rebuild the image from time to time to keep freqtrade (and dependencies) uptodate. + +``` bash +docker-compose -f docker/docker-compose-jupyter.yml build --no-cache +``` From b02c0904b6bcbbc1616798fb0edfb2fd67cc9d9c Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 15:17:54 +0200 Subject: [PATCH 3183/3421] Use buildarg to use correct parent variable --- build_helpers/publish_docker.sh | 2 +- docker/Dockerfile.plot | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/build_helpers/publish_docker.sh b/build_helpers/publish_docker.sh index 8e132ecba..53e18063c 100755 --- a/build_helpers/publish_docker.sh +++ b/build_helpers/publish_docker.sh @@ -17,7 +17,7 @@ else docker pull ${IMAGE_NAME}:${TAG} docker build --cache-from ${IMAGE_NAME}:${TAG} -t freqtrade:${TAG} . fi -docker build --cache-from freqtrade:${TAG} -t freqtrade:${TAG_PLOT} -f docker/Dockerfile.plot . +docker build --cache-from freqtrade:${TAG} --build-arg sourceimage=${TAG} -t freqtrade:${TAG_PLOT} -f docker/Dockerfile.plot . if [ $? -ne 0 ]; then echo "failed building image" diff --git a/docker/Dockerfile.plot b/docker/Dockerfile.plot index 9313a34b9..1843efdcb 100644 --- a/docker/Dockerfile.plot +++ b/docker/Dockerfile.plot @@ -1,4 +1,5 @@ -FROM freqtradeorg/freqtrade:develop +ARG sourceimage=develop +FROM freqtradeorg/freqtrade:${sourceimage} # Install dependencies COPY requirements-plot.txt /freqtrade/ From 8ff1429e68b611db4d90ed4d4e5a6f3ecd5e6267 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 15:38:53 +0200 Subject: [PATCH 3184/3421] Add user_data to backtesting --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 22b0c43a7..cdf96abcd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,7 +22,8 @@ RUN pip install numpy --no-cache-dir \ # Install and execute COPY . /freqtrade/ -RUN pip install -e . --no-cache-dir +RUN pip install -e . --no-cache-dir \ + && mkdir /freqtrade/user_data/ ENTRYPOINT ["freqtrade"] # Default to trade mode CMD [ "trade" ] From 3c460d37b66744a43ab6eaaa6fed19bcb0556231 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 16:20:01 +0200 Subject: [PATCH 3185/3421] Document existence of PLOT image --- docker-compose.yml | 2 ++ docs/developer.md | 1 + docs/docker_quickstart.md | 11 +++++++++++ 3 files changed, 14 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 49d83aa5e..ca8554b43 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,8 @@ services: freqtrade: image: freqtradeorg/freqtrade:master # image: freqtradeorg/freqtrade:develop + # Use plotting image + # image: freqtradeorg/freqtrade:develop_plot # Build step - only needed when additional dependencies are needed # build: # context: . diff --git a/docs/developer.md b/docs/developer.md index 22de01f78..7c0d61094 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -232,6 +232,7 @@ This documents some decisions taken for the CI Pipeline. * CI runs on all OS variants, Linux (ubuntu), macOS and Windows. * Docker images are build for the branches `master` and `develop`. +* Docker images containing Plot dependencies are also available as `master_plot` and `develop_plot`. * Raspberry PI Docker images are postfixed with `_pi` - so tags will be `:master_pi` and `develop_pi`. * Docker images contain a file, `/freqtrade/freqtrade_commit` containing the commit this image is based of. * Full docker image rebuilds are run once a week via schedule. diff --git a/docs/docker_quickstart.md b/docs/docker_quickstart.md index 853d57f3d..857c3d0cc 100644 --- a/docs/docker_quickstart.md +++ b/docs/docker_quickstart.md @@ -161,6 +161,17 @@ You'll then also need to modify the `docker-compose.yml` file and uncomment the You can then run `docker-compose build` to build the docker image, and run it using the commands described above. +## Plotting with docker-compose + +Commands `freqtrade plot-profit` and `freqtrade plot-dataframe` ([Documentation](plotting.md)) are available by changing the image to `*_plot` in your docker-compose.yml file. +You can then use these commands as follows: + +``` bash +docker-compose run --rm freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH --timerange=20180801-20180805 +``` + +The output will be stored in the `user_data/plot` directory, and can be opened with any modern browser. + ## Data analayis using docker compose Freqtrade provides a docker-compose file which starts up a jupyter lab server. From 261b267160a240f196bdafc44fd848a4ae2e6879 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 16:20:17 +0200 Subject: [PATCH 3186/3421] Don't build devcontainer on push --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 34683ce9b..e8bc01fa6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,6 @@ on: branches: - master - develop - - add_devcontainer tags: release: types: [published] From 7dadca421aca7dea08415061dba2adb3fd4c9a97 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 16:26:48 +0200 Subject: [PATCH 3187/3421] Update location of docker files --- docs/docker.md | 8 ++++---- docs/docker_quickstart.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/docker.md b/docs/docker.md index 3fe335cf0..59d03164b 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -70,16 +70,16 @@ cp -n config.json.example config.json Best start by pulling the official docker image from dockerhub as explained [here](#download-the-official-docker-image) to speed up building. -To add additional libraries to your docker image, best check out [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/Dockerfile.technical) which adds the [technical](https://github.com/freqtrade/technical) module to the image. +To add additional libraries to your docker image, best check out [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/docker/Dockerfile.technical) which adds the [technical](https://github.com/freqtrade/technical) module to the image. ```bash -docker build -t freqtrade -f Dockerfile.technical . +docker build -t freqtrade -f docker/Dockerfile.technical . ``` -If you are developing using Docker, use `Dockerfile.develop` to build a dev Docker image, which will also set up develop dependencies: +If you are developing using Docker, use `docker/Dockerfile.develop` to build a dev Docker image, which will also set up develop dependencies: ```bash -docker build -f Dockerfile.develop -t freqtrade-dev . +docker build -f docker/Dockerfile.develop -t freqtrade-dev . ``` !!! Warning "Include your config file manually" diff --git a/docs/docker_quickstart.md b/docs/docker_quickstart.md index 857c3d0cc..ad82aea3f 100644 --- a/docs/docker_quickstart.md +++ b/docs/docker_quickstart.md @@ -148,7 +148,7 @@ Head over to the [Backtesting Documentation](backtesting.md) to learn more. ### Additional dependencies with docker-compose If your strategy requires dependencies not included in the default image (like [technical](https://github.com/freqtrade/technical)) - it will be necessary to build the image on your host. -For this, please create a Dockerfile containing installation steps for the additional dependencies (have a look at [Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/Dockerfile.technical) for an example). +For this, please create a Dockerfile containing installation steps for the additional dependencies (have a look at [docker/Dockerfile.technical](https://github.com/freqtrade/freqtrade/blob/develop/docker/Dockerfile.technical) for an example). You'll then also need to modify the `docker-compose.yml` file and uncomment the build step, as well as rename the image to avoid naming collisions. From 50aec1d6d3d224023ffe278f1eca1601b0e6e8ba Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 20 Sep 2020 20:19:07 +0200 Subject: [PATCH 3188/3421] Jupyter service should be called differently --- .devcontainer/Dockerfile | 8 ++------ docker/docker-compose-jupyter.yml | 2 +- docs/docker_quickstart.md | 2 +- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 3430cac5a..b333dc19d 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -5,12 +5,8 @@ COPY requirements-dev.txt /freqtrade/ RUN apt-get update \ && apt-get -y install git sudo vim \ && apt-get clean \ - && pip install autopep8--no-cache-dir \ - # Install ALL dependencies - && pip install -r requirements-dev.txt --no-cache-dir \ - # Install documentation dependencies (to enable mkdocs) - && pip install -r docs/requirements-docs.txt --no-cache-dir \ - && useradd -m ftuser \ + && pip install autopep8 -r docs/requirements-docs.txt -r requirements-dev.txt --no-cache-dir \ + && useradd -u 1000 -U -m ftuser \ && mkdir -p /home/ftuser/.vscode-server /home/ftuser/.vscode-server-insiders /home/ftuser/commandhistory \ && echo "export PROMPT_COMMAND='history -a'" >> /home/ftuser/.bashrc \ && echo "export HISTFILE=~/commandhistory/.bash_history" >> /home/ftuser/.bashrc \ diff --git a/docker/docker-compose-jupyter.yml b/docker/docker-compose-jupyter.yml index 14e45983d..11a01705c 100644 --- a/docker/docker-compose-jupyter.yml +++ b/docker/docker-compose-jupyter.yml @@ -1,7 +1,7 @@ --- version: '3' services: - freqtrade: + ft_jupyterlab: build: context: .. dockerfile: docker/Dockerfile.jupyter diff --git a/docs/docker_quickstart.md b/docs/docker_quickstart.md index ad82aea3f..dd89ff2e7 100644 --- a/docs/docker_quickstart.md +++ b/docs/docker_quickstart.md @@ -178,7 +178,7 @@ Freqtrade provides a docker-compose file which starts up a jupyter lab server. You can run this server using the following command: ``` bash -docker-compose -f docker/docker-compose-jupyter.yml up +docker-compose --rm -f docker/docker-compose-jupyter.yml up ``` This will create a dockercontainer running jupyter lab, which will be accessible using `https://127.0.0.1:8888/lab`. From 4cb5c9c85fa941e09e256148d38b815becac5395 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2020 05:39:56 +0000 Subject: [PATCH 3189/3421] Bump mkdocs-material from 5.5.12 to 5.5.13 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.12 to 5.5.13. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.12...5.5.13) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 6408616a0..d4c93928e 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.5.12 +mkdocs-material==5.5.13 mdx_truly_sane_lists==1.2 From d1b3a16c1369d8af8f4ed6ed5b1442b8b002a363 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2020 05:39:56 +0000 Subject: [PATCH 3190/3421] Bump ccxt from 1.34.25 to 1.34.40 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.34.25 to 1.34.40. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.34.25...1.34.40) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 5da544a3c..44d2f29a2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.19.2 pandas==1.1.2 -ccxt==1.34.25 +ccxt==1.34.40 SQLAlchemy==1.3.19 python-telegram-bot==12.8 arrow==0.16.0 From be33556838161a1ee3b7657a54737318863b2f0b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2020 05:40:00 +0000 Subject: [PATCH 3191/3421] Bump nbconvert from 6.0.2 to 6.0.4 Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 6.0.2 to 6.0.4. - [Release notes](https://github.com/jupyter/nbconvert/releases) - [Commits](https://github.com/jupyter/nbconvert/compare/6.0.2...6.0.4) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index c14a146fa..ffe2763a6 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -15,4 +15,4 @@ pytest-mock==3.3.1 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents -nbconvert==6.0.2 +nbconvert==6.0.4 From 4b06c9e0aeb03bb2fcbf1c3dc260c09fccd95edb Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 22 Sep 2020 19:37:18 +0200 Subject: [PATCH 3192/3421] Add test verifying wrong behaviour --- tests/test_wallets.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/test_wallets.py b/tests/test_wallets.py index 884470014..450dabc4d 100644 --- a/tests/test_wallets.py +++ b/tests/test_wallets.py @@ -19,12 +19,17 @@ def test_sync_wallet_at_boot(mocker, default_conf): "used": 0.0, "total": 0.260739 }, + "USDT": { + "free": 20, + "used": 20, + "total": 40 + }, }) ) freqtrade = get_patched_freqtradebot(mocker, default_conf) - assert len(freqtrade.wallets._wallets) == 2 + assert len(freqtrade.wallets._wallets) == 3 assert freqtrade.wallets._wallets['BNT'].free == 1.0 assert freqtrade.wallets._wallets['BNT'].used == 2.0 assert freqtrade.wallets._wallets['BNT'].total == 3.0 @@ -32,6 +37,7 @@ def test_sync_wallet_at_boot(mocker, default_conf): assert freqtrade.wallets._wallets['GAS'].used == 0.0 assert freqtrade.wallets._wallets['GAS'].total == 0.260739 assert freqtrade.wallets.get_free('BNT') == 1.0 + assert 'USDT' in freqtrade.wallets._wallets assert freqtrade.wallets._last_wallet_refresh > 0 mocker.patch.multiple( 'freqtrade.exchange.Exchange', @@ -51,6 +57,7 @@ def test_sync_wallet_at_boot(mocker, default_conf): freqtrade.wallets.update() + # USDT is missing from the 2nd result - so should not be in this either. assert len(freqtrade.wallets._wallets) == 2 assert freqtrade.wallets._wallets['BNT'].free == 1.2 assert freqtrade.wallets._wallets['BNT'].used == 1.9 From 6b46a35b19737009db78ca82c843a550a64a6243 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 22 Sep 2020 19:37:31 +0200 Subject: [PATCH 3193/3421] Fix bug of balances not disappearing --- freqtrade/wallets.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index b913155bc..ac08f337c 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -2,6 +2,7 @@ """ Wallet """ import logging +from copy import deepcopy from typing import Any, Dict, NamedTuple import arrow @@ -93,6 +94,10 @@ class Wallets: balances[currency].get('used', None), balances[currency].get('total', None) ) + # Remove currencies no longer in get_balances output + for currency in deepcopy(self._wallets): + if currency not in balances: + del self._wallets[currency] def update(self, require_update: bool = True) -> None: """ From bb56d392a92e250ccedc3df5b01c42860cfad99a Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 22 Sep 2020 20:19:46 +0200 Subject: [PATCH 3194/3421] Fix typo in documentation --- docs/telegram-usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md index b718d40a6..ce2d715a0 100644 --- a/docs/telegram-usage.md +++ b/docs/telegram-usage.md @@ -44,7 +44,7 @@ Get your "Id", you will use it for the config parameter `chat_id`. ## Control telegram noise Freqtrade provides means to control the verbosity of your telegram bot. -Each setting has the follwoing possible values: +Each setting has the following possible values: * `on` - Messages will be sent, and user will be notified. * `silent` - Message will be sent, Notification will be without sound / vibration. From 378f03a5b187da0a264003d6c583197d9a7e2632 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 25 Sep 2020 06:37:40 +0200 Subject: [PATCH 3195/3421] Add relevant parameters to stored backtest result --- freqtrade/optimize/optimize_reports.py | 10 ++++++++++ tests/optimize/test_optimize_reports.py | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 771ac91fb..18ca7a3a7 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -277,6 +277,16 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'max_open_trades': (config['max_open_trades'] if config['max_open_trades'] != float('inf') else -1), 'timeframe': config['timeframe'], + # Parameters relevant for backtesting + 'stoploss': config['stoploss'], + 'trailing_stop': config.get('trailing_stop', False), + 'trailing_stop_positive': config.get('trailing_stop_positive'), + 'trailing_stop_positive_offset': config.get('trailing_stop_positive_offset', 0.0), + 'trailing_only_offset_is_reached': config.get('trailing_only_offset_is_reached', False), + 'minimal_roi': config['minimal_roi'], + 'use_sell_signal': config['ask_strategy']['use_sell_signal'], + 'sell_profit_only': config['ask_strategy']['sell_profit_only'], + 'ignore_roi_if_buy_signal': config['ask_strategy']['ignore_roi_if_buy_signal'], **daily_stats, } result['strategy'][strategy] = strat_stats diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index 4f62e2e23..d61fd2bc5 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -5,7 +5,6 @@ from pathlib import Path import pandas as pd import pytest from arrow import Arrow - from freqtrade.configuration import TimeRange from freqtrade.constants import LAST_BT_RESULT_FN from freqtrade.data import history @@ -22,6 +21,7 @@ from freqtrade.optimize.optimize_reports import (generate_backtest_stats, text_table_bt_results, text_table_sell_reason, text_table_strategy) +from freqtrade.resolvers.strategy_resolver import StrategyResolver from freqtrade.strategy.interface import SellType from tests.data.test_history import _backup_file, _clean_test_file @@ -57,6 +57,9 @@ def test_text_table_bt_results(default_conf, mocker): def test_generate_backtest_stats(default_conf, testdatadir): + default_conf.update({'strategy': 'DefaultStrategy'}) + StrategyResolver.load_strategy(default_conf) + results = {'DefStrat': pd.DataFrame({"pair": ["UNITTEST/BTC", "UNITTEST/BTC", "UNITTEST/BTC", "UNITTEST/BTC"], "profit_percent": [0.003312, 0.010801, 0.013803, 0.002780], From d49488bf0e56fb7708b81903abef2a1540cb6325 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 25 Sep 2020 05:47:58 +0000 Subject: [PATCH 3196/3421] Bump python from 3.8.5-slim-buster to 3.8.6-slim-buster Bumps python from 3.8.5-slim-buster to 3.8.6-slim-buster. Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index cdf96abcd..2be65274e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8.5-slim-buster +FROM python:3.8.6-slim-buster RUN apt-get update \ && apt-get -y install curl build-essential libssl-dev sqlite3 \ From ff3e2641aed30b31dcdafcd3c87c7c5be2f3e53d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 25 Sep 2020 20:39:00 +0200 Subject: [PATCH 3197/3421] generate_backtest_stats must take config options from the strategy config as a strategy can override certain options. --- freqtrade/optimize/backtesting.py | 23 ++++-- freqtrade/optimize/optimize_reports.py | 33 ++++---- tests/optimize/test_optimize_reports.py | 101 +++++++++++++----------- 3 files changed, 85 insertions(+), 72 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 005ec9fb8..bfdb67ec2 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -380,12 +380,6 @@ class Backtesting: logger.info('Using stake_currency: %s ...', self.config['stake_currency']) logger.info('Using stake_amount: %s ...', self.config['stake_amount']) - # Use max_open_trades in backtesting, except --disable-max-market-positions is set - if self.config.get('use_max_market_positions', True): - max_open_trades = self.config['max_open_trades'] - else: - logger.info('Ignoring max_open_trades (--disable-max-market-positions was used) ...') - max_open_trades = 0 position_stacking = self.config.get('position_stacking', False) data, timerange = self.load_bt_data() @@ -395,6 +389,15 @@ class Backtesting: logger.info("Running backtesting for Strategy %s", strat.get_strategy_name()) self._set_strategy(strat) + # Use max_open_trades in backtesting, except --disable-max-market-positions is set + if self.config.get('use_max_market_positions', True): + # Must come from strategy config, as the strategy may modify this setting. + max_open_trades = self.strategy.config['max_open_trades'] + else: + logger.info( + 'Ignoring max_open_trades (--disable-max-market-positions was used) ...') + max_open_trades = 0 + # need to reprocess data every time to populate signals preprocessed = self.strategy.ohlcvdata_to_dataframe(data) @@ -407,7 +410,7 @@ class Backtesting: f'up to {max_date.strftime(DATETIME_PRINT_FORMAT)} ' f'({(max_date - min_date).days} days)..') # Execute backtest and print results - all_results[self.strategy.get_strategy_name()] = self.backtest( + results = self.backtest( processed=preprocessed, stake_amount=self.config['stake_amount'], start_date=min_date, @@ -415,8 +418,12 @@ class Backtesting: max_open_trades=max_open_trades, position_stacking=position_stacking, ) + all_results[self.strategy.get_strategy_name()] = { + 'results': results, + 'config': self.strategy.config, + } - stats = generate_backtest_stats(self.config, data, all_results, + stats = generate_backtest_stats(data, all_results, min_date=min_date, max_date=max_date) if self.config.get('export', False): store_backtest_stats(self.config['exportfilename'], stats) diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 18ca7a3a7..696e63b25 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -1,7 +1,7 @@ import logging from datetime import datetime, timedelta, timezone from pathlib import Path -from typing import Any, Dict, List +from typing import Any, Dict, List, Union from arrow import Arrow from pandas import DataFrame @@ -143,19 +143,18 @@ def generate_sell_reason_stats(max_open_trades: int, results: DataFrame) -> List return tabular_data -def generate_strategy_metrics(stake_currency: str, max_open_trades: int, - all_results: Dict) -> List[Dict]: +def generate_strategy_metrics(all_results: Dict) -> List[Dict]: """ Generate summary per strategy - :param stake_currency: stake-currency - used to correctly name headers - :param max_open_trades: Maximum allowed open trades used for backtest :param all_results: Dict of containing results for all strategies :return: List of Dicts containing the metrics per Strategy """ tabular_data = [] for strategy, results in all_results.items(): - tabular_data.append(_generate_result_line(results, max_open_trades, strategy)) + tabular_data.append(_generate_result_line( + results['results'], results['config']['max_open_trades'], strategy) + ) return tabular_data @@ -219,25 +218,29 @@ def generate_daily_stats(results: DataFrame) -> Dict[str, Any]: } -def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], - all_results: Dict[str, DataFrame], +def generate_backtest_stats(btdata: Dict[str, DataFrame], + all_results: Dict[str, Dict[str, Union[DataFrame, Dict]]], min_date: Arrow, max_date: Arrow ) -> Dict[str, Any]: """ - :param config: Configuration object used for backtest :param btdata: Backtest data - :param all_results: backtest result - dictionary with { Strategy: results}. + :param all_results: backtest result - dictionary in the form: + { Strategy: {'results: results, 'config: config}}. :param min_date: Backtest start date :param max_date: Backtest end date :return: Dictionary containing results per strategy and a stratgy summary. """ - stake_currency = config['stake_currency'] - max_open_trades = config['max_open_trades'] result: Dict[str, Any] = {'strategy': {}} market_change = calculate_market_change(btdata, 'close') - for strategy, results in all_results.items(): + for strategy, content in all_results.items(): + results: Dict[str, DataFrame] = content['results'] + if not isinstance(results, DataFrame): + continue + config = content['config'] + max_open_trades = config['max_open_trades'] + stake_currency = config['stake_currency'] pair_results = generate_pair_metrics(btdata, stake_currency=stake_currency, max_open_trades=max_open_trades, @@ -310,9 +313,7 @@ def generate_backtest_stats(config: Dict, btdata: Dict[str, DataFrame], 'drawdown_end_ts': 0, }) - strategy_results = generate_strategy_metrics(stake_currency=stake_currency, - max_open_trades=max_open_trades, - all_results=all_results) + strategy_results = generate_strategy_metrics(all_results=all_results) result['strategy_comparison'] = strategy_results diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index d61fd2bc5..fe030e315 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -60,32 +60,35 @@ def test_generate_backtest_stats(default_conf, testdatadir): default_conf.update({'strategy': 'DefaultStrategy'}) StrategyResolver.load_strategy(default_conf) - results = {'DefStrat': pd.DataFrame({"pair": ["UNITTEST/BTC", "UNITTEST/BTC", - "UNITTEST/BTC", "UNITTEST/BTC"], - "profit_percent": [0.003312, 0.010801, 0.013803, 0.002780], - "profit_abs": [0.000003, 0.000011, 0.000014, 0.000003], - "open_date": [Arrow(2017, 11, 14, 19, 32, 00).datetime, - Arrow(2017, 11, 14, 21, 36, 00).datetime, - Arrow(2017, 11, 14, 22, 12, 00).datetime, - Arrow(2017, 11, 14, 22, 44, 00).datetime], - "close_date": [Arrow(2017, 11, 14, 21, 35, 00).datetime, - Arrow(2017, 11, 14, 22, 10, 00).datetime, - Arrow(2017, 11, 14, 22, 43, 00).datetime, - Arrow(2017, 11, 14, 22, 58, 00).datetime], - "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], - "close_rate": [0.002546, 0.003014, 0.003103, 0.003217], - "trade_duration": [123, 34, 31, 14], - "open_at_end": [False, False, False, True], - "sell_reason": [SellType.ROI, SellType.STOP_LOSS, - SellType.ROI, SellType.FORCE_SELL] - })} + results = {'DefStrat': { + 'results': pd.DataFrame({"pair": ["UNITTEST/BTC", "UNITTEST/BTC", + "UNITTEST/BTC", "UNITTEST/BTC"], + "profit_percent": [0.003312, 0.010801, 0.013803, 0.002780], + "profit_abs": [0.000003, 0.000011, 0.000014, 0.000003], + "open_date": [Arrow(2017, 11, 14, 19, 32, 00).datetime, + Arrow(2017, 11, 14, 21, 36, 00).datetime, + Arrow(2017, 11, 14, 22, 12, 00).datetime, + Arrow(2017, 11, 14, 22, 44, 00).datetime], + "close_date": [Arrow(2017, 11, 14, 21, 35, 00).datetime, + Arrow(2017, 11, 14, 22, 10, 00).datetime, + Arrow(2017, 11, 14, 22, 43, 00).datetime, + Arrow(2017, 11, 14, 22, 58, 00).datetime], + "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], + "close_rate": [0.002546, 0.003014, 0.003103, 0.003217], + "trade_duration": [123, 34, 31, 14], + "open_at_end": [False, False, False, True], + "sell_reason": [SellType.ROI, SellType.STOP_LOSS, + SellType.ROI, SellType.FORCE_SELL] + }), + 'config': default_conf} + } timerange = TimeRange.parse_timerange('1510688220-1510700340') min_date = Arrow.fromtimestamp(1510688220) max_date = Arrow.fromtimestamp(1510700340) btdata = history.load_data(testdatadir, '1m', ['UNITTEST/BTC'], timerange=timerange, fill_up_missing=True) - stats = generate_backtest_stats(default_conf, btdata, results, min_date, max_date) + stats = generate_backtest_stats(btdata, results, min_date, max_date) assert isinstance(stats, dict) assert 'strategy' in stats assert 'DefStrat' in stats['strategy'] @@ -93,29 +96,32 @@ def test_generate_backtest_stats(default_conf, testdatadir): strat_stats = stats['strategy']['DefStrat'] assert strat_stats['backtest_start'] == min_date.datetime assert strat_stats['backtest_end'] == max_date.datetime - assert strat_stats['total_trades'] == len(results['DefStrat']) + assert strat_stats['total_trades'] == len(results['DefStrat']['results']) # Above sample had no loosing trade assert strat_stats['max_drawdown'] == 0.0 - results = {'DefStrat': pd.DataFrame( - {"pair": ["UNITTEST/BTC", "UNITTEST/BTC", "UNITTEST/BTC", "UNITTEST/BTC"], - "profit_percent": [0.003312, 0.010801, -0.013803, 0.002780], - "profit_abs": [0.000003, 0.000011, -0.000014, 0.000003], - "open_date": [Arrow(2017, 11, 14, 19, 32, 00).datetime, - Arrow(2017, 11, 14, 21, 36, 00).datetime, - Arrow(2017, 11, 14, 22, 12, 00).datetime, - Arrow(2017, 11, 14, 22, 44, 00).datetime], - "close_date": [Arrow(2017, 11, 14, 21, 35, 00).datetime, - Arrow(2017, 11, 14, 22, 10, 00).datetime, - Arrow(2017, 11, 14, 22, 43, 00).datetime, - Arrow(2017, 11, 14, 22, 58, 00).datetime], - "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], - "close_rate": [0.002546, 0.003014, 0.0032903, 0.003217], - "trade_duration": [123, 34, 31, 14], - "open_at_end": [False, False, False, True], - "sell_reason": [SellType.ROI, SellType.STOP_LOSS, - SellType.ROI, SellType.FORCE_SELL] - })} + results = {'DefStrat': { + 'results': pd.DataFrame( + {"pair": ["UNITTEST/BTC", "UNITTEST/BTC", "UNITTEST/BTC", "UNITTEST/BTC"], + "profit_percent": [0.003312, 0.010801, -0.013803, 0.002780], + "profit_abs": [0.000003, 0.000011, -0.000014, 0.000003], + "open_date": [Arrow(2017, 11, 14, 19, 32, 00).datetime, + Arrow(2017, 11, 14, 21, 36, 00).datetime, + Arrow(2017, 11, 14, 22, 12, 00).datetime, + Arrow(2017, 11, 14, 22, 44, 00).datetime], + "close_date": [Arrow(2017, 11, 14, 21, 35, 00).datetime, + Arrow(2017, 11, 14, 22, 10, 00).datetime, + Arrow(2017, 11, 14, 22, 43, 00).datetime, + Arrow(2017, 11, 14, 22, 58, 00).datetime], + "open_rate": [0.002543, 0.003003, 0.003089, 0.003214], + "close_rate": [0.002546, 0.003014, 0.0032903, 0.003217], + "trade_duration": [123, 34, 31, 14], + "open_at_end": [False, False, False, True], + "sell_reason": [SellType.ROI, SellType.STOP_LOSS, + SellType.ROI, SellType.FORCE_SELL] + }), + 'config': default_conf} + } assert strat_stats['max_drawdown'] == 0.0 assert strat_stats['drawdown_start'] == Arrow.fromtimestamp(0).datetime @@ -283,9 +289,10 @@ def test_generate_sell_reason_stats(default_conf): assert stop_result['profit_mean_pct'] == round(stop_result['profit_mean'] * 100, 2) -def test_text_table_strategy(default_conf, mocker): +def test_text_table_strategy(default_conf): + default_conf['max_open_trades'] = 2 results = {} - results['TestStrategy1'] = pd.DataFrame( + results['TestStrategy1'] = {'results': pd.DataFrame( { 'pair': ['ETH/BTC', 'ETH/BTC', 'ETH/BTC'], 'profit_percent': [0.1, 0.2, 0.3], @@ -296,8 +303,8 @@ def test_text_table_strategy(default_conf, mocker): 'losses': [0, 0, 1], 'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] } - ) - results['TestStrategy2'] = pd.DataFrame( + ), 'config': default_conf} + results['TestStrategy2'] = {'results': pd.DataFrame( { 'pair': ['LTC/BTC', 'LTC/BTC', 'LTC/BTC'], 'profit_percent': [0.4, 0.2, 0.3], @@ -308,7 +315,7 @@ def test_text_table_strategy(default_conf, mocker): 'losses': [0, 0, 1], 'sell_reason': [SellType.ROI, SellType.ROI, SellType.STOP_LOSS] } - ) + ), 'config': default_conf} result_str = ( '| Strategy | Buys | Avg Profit % | Cum Profit % | Tot' @@ -321,9 +328,7 @@ def test_text_table_strategy(default_conf, mocker): ' 45.00 | 0:20:00 | 3 | 0 | 0 |' ) - strategy_results = generate_strategy_metrics(stake_currency='BTC', - max_open_trades=2, - all_results=results) + strategy_results = generate_strategy_metrics(all_results=results) assert text_table_strategy(strategy_results, 'BTC') == result_str From c56dd487f25a215a20f78939f81ee59651b7c68f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 25 Sep 2020 21:00:58 +0200 Subject: [PATCH 3198/3421] Fix test failure --- tests/optimize/test_backtesting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index f5c313520..78a7130f9 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -14,7 +14,7 @@ from freqtrade.commands.optimize_commands import (setup_optimize_configuration, start_backtesting) from freqtrade.configuration import TimeRange from freqtrade.data import history -from freqtrade.data.btanalysis import evaluate_result_multi +from freqtrade.data.btanalysis import BT_DATA_COLUMNS, evaluate_result_multi from freqtrade.data.converter import clean_ohlcv_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import get_timerange @@ -694,7 +694,7 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir): def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): patch_exchange(mocker) - backtestmock = MagicMock() + backtestmock = MagicMock(return_value=pd.DataFrame(columns=BT_DATA_COLUMNS + ['profit_abs'])) mocker.patch('freqtrade.pairlist.pairlistmanager.PairListManager.whitelist', PropertyMock(return_value=['UNITTEST/BTC'])) mocker.patch('freqtrade.optimize.backtesting.Backtesting.backtest', backtestmock) From bb27b236ceb29ad0a37fefb8f1b290654c6ff5ec Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 26 Sep 2020 14:55:12 +0200 Subject: [PATCH 3199/3421] Remove unused arguments --- freqtrade/optimize/backtesting.py | 4 ++-- tests/optimize/test_optimize_reports.py | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index bfdb67ec2..8d4a3a205 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -423,8 +423,8 @@ class Backtesting: 'config': self.strategy.config, } - stats = generate_backtest_stats(data, all_results, - min_date=min_date, max_date=max_date) + stats = generate_backtest_stats(data, all_results, min_date=min_date, max_date=max_date) + if self.config.get('export', False): store_backtest_stats(self.config['exportfilename'], stats) diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index fe030e315..b484e4390 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -26,7 +26,7 @@ from freqtrade.strategy.interface import SellType from tests.data.test_history import _backup_file, _clean_test_file -def test_text_table_bt_results(default_conf, mocker): +def test_text_table_bt_results(): results = pd.DataFrame( { @@ -174,7 +174,7 @@ def test_store_backtest_stats(testdatadir, mocker): assert str(dump_mock.call_args_list[0][0][0]).startswith(str(testdatadir / 'testresult')) -def test_generate_pair_metrics(default_conf, mocker): +def test_generate_pair_metrics(): results = pd.DataFrame( { @@ -222,7 +222,7 @@ def test_generate_daily_stats(testdatadir): assert res['losing_days'] == 0 -def test_text_table_sell_reason(default_conf): +def test_text_table_sell_reason(): results = pd.DataFrame( { @@ -254,7 +254,7 @@ def test_text_table_sell_reason(default_conf): stake_currency='BTC') == result_str -def test_generate_sell_reason_stats(default_conf): +def test_generate_sell_reason_stats(): results = pd.DataFrame( { @@ -333,7 +333,7 @@ def test_text_table_strategy(default_conf): assert text_table_strategy(strategy_results, 'BTC') == result_str -def test_generate_edge_table(edge_conf, mocker): +def test_generate_edge_table(): results = {} results['ETH/BTC'] = PairInfo(-0.01, 0.60, 2, 1, 3, 10, 60) From b736691e0e5a80a54108f20e3d438d265a281ca8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Sep 2020 16:18:28 +0200 Subject: [PATCH 3200/3421] Remove hyperopt --continue --- freqtrade/commands/arguments.py | 2 +- freqtrade/commands/cli_options.py | 7 ------- freqtrade/configuration/configuration.py | 3 --- freqtrade/optimize/hyperopt.py | 5 +---- tests/optimize/test_hyperopt.py | 11 ----------- 5 files changed, 2 insertions(+), 26 deletions(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index b61a4933e..a9ad6bc63 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -26,7 +26,7 @@ ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + ["hyperopt", "hyperopt_path", "use_max_market_positions", "print_all", "print_colorized", "print_json", "hyperopt_jobs", "hyperopt_random_state", "hyperopt_min_trades", - "hyperopt_continue", "hyperopt_loss"] + "hyperopt_loss"] ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"] diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 81b8de1af..eeadd62f6 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -252,13 +252,6 @@ AVAILABLE_CLI_OPTIONS = { metavar='INT', default=1, ), - "hyperopt_continue": Arg( - "--continue", - help="Continue hyperopt from previous runs. " - "By default, temporary files will be removed and hyperopt will start from scratch.", - default=False, - action='store_true', - ), "hyperopt_loss": Arg( '--hyperopt-loss', help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). ' diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 930917fae..4a53ef7e5 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -295,9 +295,6 @@ class Configuration: self._args_to_config(config, argname='hyperopt_min_trades', logstring='Parameter --min-trades detected: {}') - self._args_to_config(config, argname='hyperopt_continue', - logstring='Hyperopt continue: {}') - self._args_to_config(config, argname='hyperopt_loss', logstring='Using Hyperopt loss class name: {}') diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 37de3bc4b..8682aa08d 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -86,10 +86,7 @@ class Hyperopt: self.current_best_loss = 100 - if not self.config.get('hyperopt_continue'): - self.clean_hyperopt() - else: - logger.info("Continuing on previous hyperopt results.") + self.clean_hyperopt() self.num_epochs_saved = 0 diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index d58b91209..a35b8b655 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -839,17 +839,6 @@ def test_clean_hyperopt(mocker, hyperopt_conf, caplog): assert log_has(f"Removing `{h.data_pickle_file}`.", caplog) -def test_continue_hyperopt(mocker, hyperopt_conf, caplog): - patch_exchange(mocker) - hyperopt_conf.update({'hyperopt_continue': True}) - mocker.patch("freqtrade.optimize.hyperopt.Path.is_file", MagicMock(return_value=True)) - unlinkmock = mocker.patch("freqtrade.optimize.hyperopt.Path.unlink", MagicMock()) - Hyperopt(hyperopt_conf) - - assert unlinkmock.call_count == 0 - assert log_has("Continuing on previous hyperopt results.", caplog) - - def test_print_json_spaces_all(mocker, hyperopt_conf, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', From 7a652b07d587acfef3cc5cd090289a38948ea475 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Sep 2020 16:21:55 +0200 Subject: [PATCH 3201/3421] UPdate documentation to remove --continue --- docs/bot-usage.md | 5 +---- docs/hyperopt.md | 15 ++++++--------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 4a4496bbc..62c515b44 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -303,7 +303,7 @@ usage: freqtrade hyperopt [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--spaces {all,buy,sell,roi,stoploss,trailing,default} [{all,buy,sell,roi,stoploss,trailing,default} ...]] [--dmmp] [--print-all] [--no-color] [--print-json] [-j JOBS] [--random-state INT] [--min-trades INT] - [--continue] [--hyperopt-loss NAME] + [--hyperopt-loss NAME] optional arguments: -h, --help show this help message and exit @@ -349,9 +349,6 @@ optional arguments: reproducible hyperopt results. --min-trades INT Set minimal desired number of trades for evaluations in the hyperopt optimization path (default: 1). - --continue Continue hyperopt from previous runs. By default, - temporary files will be removed and hyperopt will - start from scratch. --hyperopt-loss NAME Specify the class name of the hyperopt loss function class (IHyperOptLoss). Different functions can generate completely different results, since the diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 3f7a27ef0..6162f766a 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -102,7 +102,7 @@ There you have two different types of indicators: 1. `guards` and 2. `triggers`. 1. Guards are conditions like "never buy if ADX < 10", or never buy if current price is over EMA10. 2. Triggers are ones that actually trigger buy in specific moment, like "buy when EMA5 crosses over EMA10" or "buy when close price touches lower Bollinger band". -Hyperoptimization will, for each eval round, pick one trigger and possibly +Hyper-optimization will, for each epoch round, pick one trigger and possibly multiple guards. The constructed strategy will be something like "*buy exactly when close price touches lower Bollinger band, BUT only if ADX > 10*". @@ -240,10 +240,7 @@ running at least several thousand evaluations. The `--spaces all` option determines that all possible parameters should be optimized. Possibilities are listed below. !!! Note - By default, hyperopt will erase previous results and start from scratch. Continuation can be archived by using `--continue`. - -!!! Warning - When switching parameters or changing configuration options, make sure to not use the argument `--continue` so temporary results can be removed. + By default, hyperopt will erase previous results and start from scratch. ### Execute Hyperopt with different historical data source @@ -253,7 +250,7 @@ uses data from directory `user_data/data`. ### Running Hyperopt with Smaller Testset -Use the `--timerange` argument to change how much of the testset you want to use. +Use the `--timerange` argument to change how much of the test-set you want to use. For example, to use one month of data, pass the following parameter to the hyperopt call: ```bash @@ -318,7 +315,7 @@ The initial state for generation of these random values (random state) is contro If you have not set this value explicitly in the command line options, Hyperopt seeds the random state with some random value for you. The random state value for each Hyperopt run is shown in the log, so you can copy and paste it into the `--random-state` command line option to repeat the set of the initial random epochs used. -If you have not changed anything in the command line options, configuration, timerange, Strategy and Hyperopt classes, historical data and the Loss Function -- you should obtain same hyperoptimization results with same random state value used. +If you have not changed anything in the command line options, configuration, timerange, Strategy and Hyperopt classes, historical data and the Loss Function -- you should obtain same hyper-optimization results with same random state value used. ## Understand the Hyperopt Result @@ -371,7 +368,7 @@ By default, hyperopt prints colorized results -- epochs with positive profit are You can use the `--print-all` command line option if you would like to see all results in the hyperopt output, not only the best ones. When `--print-all` is used, current best results are also colorized by default -- they are printed in bold (bright) style. This can also be switched off with the `--no-color` command line option. !!! Note "Windows and color output" - Windows does not support color-output nativly, therefore it is automatically disabled. To have color-output for hyperopt running under windows, please consider using WSL. + Windows does not support color-output natively, therefore it is automatically disabled. To have color-output for hyperopt running under windows, please consider using WSL. ### Understand Hyperopt ROI results @@ -494,7 +491,7 @@ Override the `trailing_space()` method and define the desired range in it if you ## Show details of Hyperopt results -After you run Hyperopt for the desired amount of epochs, you can later list all results for analysis, select only best or profitable once, and show the details for any of the epochs previously evaluated. This can be done with the `hyperopt-list` and `hyperopt-show` subcommands. The usage of these subcommands is described in the [Utils](utils.md#list-hyperopt-results) chapter. +After you run Hyperopt for the desired amount of epochs, you can later list all results for analysis, select only best or profitable once, and show the details for any of the epochs previously evaluated. This can be done with the `hyperopt-list` and `hyperopt-show` sub-commands. The usage of these sub-commands is described in the [Utils](utils.md#list-hyperopt-results) chapter. ## Validate backtesting results From ff96cf154c5c8b9c9595f695b0f048765af59be8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Sep 2020 16:33:26 +0200 Subject: [PATCH 3202/3421] Keep hyperopt result history --- freqtrade/optimize/hyperopt.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 8682aa08d..c07fa1788 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -10,6 +10,7 @@ import logging import random import warnings from collections import OrderedDict +from datetime import datetime from math import ceil from operator import itemgetter from pathlib import Path @@ -25,16 +26,15 @@ from joblib import (Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects) from pandas import DataFrame, isna, json_normalize -from freqtrade.constants import DATETIME_PRINT_FORMAT +from freqtrade.constants import DATETIME_PRINT_FORMAT, LAST_BT_RESULT_FN from freqtrade.data.converter import trim_dataframe from freqtrade.data.history import get_timerange from freqtrade.exceptions import OperationalException -from freqtrade.misc import plural, round_dict +from freqtrade.misc import file_dump_json, plural, round_dict from freqtrade.optimize.backtesting import Backtesting # Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules from freqtrade.optimize.hyperopt_interface import IHyperOpt # noqa: F401 -from freqtrade.optimize.hyperopt_loss_interface import \ - IHyperOptLoss # noqa: F401 +from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss # noqa: F401 from freqtrade.resolvers.hyperopt_resolver import (HyperOptLossResolver, HyperOptResolver) from freqtrade.strategy import IStrategy @@ -77,9 +77,9 @@ class Hyperopt: self.custom_hyperoptloss = HyperOptLossResolver.load_hyperoptloss(self.config) self.calculate_loss = self.custom_hyperoptloss.hyperopt_loss_function - + time_now = datetime.now().strftime("%Y-%m-%d_%H-%M-%S") self.results_file = (self.config['user_data_dir'] / - 'hyperopt_results' / 'hyperopt_results.pickle') + 'hyperopt_results' / f'hyperopt_results_{time_now}.pickle') self.data_pickle_file = (self.config['user_data_dir'] / 'hyperopt_results' / 'hyperopt_tickerdata.pkl') self.total_epochs = config.get('epochs', 0) @@ -162,6 +162,9 @@ class Hyperopt: self.num_epochs_saved = num_epochs logger.debug(f"{self.num_epochs_saved} {plural(self.num_epochs_saved, 'epoch')} " f"saved to '{self.results_file}'.") + # Store hyperopt filename + latest_filename = Path.joinpath(self.results_file.parent, LAST_BT_RESULT_FN) + file_dump_json(latest_filename, {'latest_hyperopt': str(self.results_file.name)}) @staticmethod def _read_results(results_file: Path) -> List: From c42a924df85150092d106bfd739f78a325513f25 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Sep 2020 16:50:22 +0200 Subject: [PATCH 3203/3421] Load latest file --- freqtrade/commands/hyperopt_commands.py | 8 ++-- freqtrade/data/btanalysis.py | 50 +++++++++++++++++++++++-- freqtrade/optimize/hyperopt.py | 2 - tests/optimize/test_hyperopt.py | 2 + 4 files changed, 53 insertions(+), 9 deletions(-) diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index 4fae51e28..de8764369 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -7,6 +7,7 @@ from colorama import init as colorama_init from freqtrade.configuration import setup_utils_configuration from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode +from freqtrade.data.btanalysis import get_latest_hyperopt_file logger = logging.getLogger(__name__) @@ -40,8 +41,7 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: 'filter_max_objective': config.get('hyperopt_list_max_objective', None), } - results_file = (config['user_data_dir'] / - 'hyperopt_results' / 'hyperopt_results.pickle') + results_file = get_latest_hyperopt_file(config['user_data_dir'] / 'hyperopt_results') # Previous evaluations epochs = Hyperopt.load_previous_results(results_file) @@ -80,8 +80,8 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: print_json = config.get('print_json', False) no_header = config.get('hyperopt_show_no_header', False) - results_file = (config['user_data_dir'] / - 'hyperopt_results' / 'hyperopt_results.pickle') + results_file = get_latest_hyperopt_file(config['user_data_dir'] / 'hyperopt_results') + n = config.get('hyperopt_show_index', -1) filteroptions = { diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 2d45a7222..55e4f11c4 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -21,10 +21,11 @@ BT_DATA_COLUMNS = ["pair", "profit_percent", "open_date", "close_date", "index", "open_rate", "close_rate", "open_at_end", "sell_reason"] -def get_latest_backtest_filename(directory: Union[Path, str]) -> str: +def get_latest_optimize_filename(directory: Union[Path, str], variant: str) -> str: """ Get latest backtest export based on '.last_result.json'. :param directory: Directory to search for last result + :param variant: 'backtest' or 'hyperopt' - the method to return :return: string containing the filename of the latest backtest result :raises: ValueError in the following cases: * Directory does not exist @@ -44,10 +45,53 @@ def get_latest_backtest_filename(directory: Union[Path, str]) -> str: with filename.open() as file: data = json_load(file) - if 'latest_backtest' not in data: + if f'latest_{variant}' not in data: raise ValueError(f"Invalid '{LAST_BT_RESULT_FN}' format.") - return data['latest_backtest'] + return data[f'latest_{variant}'] + + +def get_latest_backtest_filename(directory: Union[Path, str]) -> str: + """ + Get latest backtest export based on '.last_result.json'. + :param directory: Directory to search for last result + :return: string containing the filename of the latest backtest result + :raises: ValueError in the following cases: + * Directory does not exist + * `directory/.last_result.json` does not exist + * `directory/.last_result.json` has the wrong content + """ + return get_latest_optimize_filename(directory, 'backtest') + + +def get_latest_hyperopt_filename(directory: Union[Path, str]) -> str: + """ + Get latest hyperopt export based on '.last_result.json'. + :param directory: Directory to search for last result + :return: string containing the filename of the latest hyperopt result + :raises: ValueError in the following cases: + * Directory does not exist + * `directory/.last_result.json` does not exist + * `directory/.last_result.json` has the wrong content + """ + try: + return get_latest_optimize_filename(directory, 'hyperopt') + except ValueError: + # Return default (legacy) pickle filename + return 'hyperopt_results.pickle' + + +def get_latest_hyperopt_file(directory: Union[Path, str]) -> Path: + """ + Get latest hyperopt export based on '.last_result.json'. + :param directory: Directory to search for last result + :return: string containing the filename of the latest hyperopt result + :raises: ValueError in the following cases: + * Directory does not exist + * `directory/.last_result.json` does not exist + * `directory/.last_result.json` has the wrong content + """ + return directory / get_latest_hyperopt_filename(directory) def load_backtest_stats(filename: Union[Path, str]) -> Dict[str, Any]: diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index c07fa1788..9d16bc6ba 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -657,8 +657,6 @@ class Hyperopt: self.backtesting.strategy.dp = None # type: ignore IStrategy.dp = None # type: ignore - self.epochs = self.load_previous_results(self.results_file) - cpus = cpu_count() logger.info(f"Found {cpus} CPU cores. Let's make them scream!") config_jobs = self.config.get('hyperopt_jobs', -1) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index a35b8b655..ec911c113 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -497,6 +497,7 @@ def test_no_log_if_loss_does_not_improve(hyperopt, caplog) -> None: def test_save_results_saves_epochs(mocker, hyperopt, testdatadir, caplog) -> None: epochs = create_results(mocker, hyperopt, testdatadir) mock_dump = mocker.patch('freqtrade.optimize.hyperopt.dump', return_value=None) + mock_dump_json = mocker.patch('freqtrade.optimize.hyperopt.file_dump_json', return_value=None) results_file = testdatadir / 'optimize' / 'ut_results.pickle' caplog.set_level(logging.DEBUG) @@ -505,6 +506,7 @@ def test_save_results_saves_epochs(mocker, hyperopt, testdatadir, caplog) -> Non hyperopt._save_results() assert log_has(f"1 epoch saved to '{results_file}'.", caplog) mock_dump.assert_called_once() + mock_dump_json.assert_called_once() hyperopt.epochs = epochs + epochs hyperopt._save_results() From 3cb1a9a5a959a0c34ccf50219c5cb31aa194a557 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Sep 2020 17:00:23 +0200 Subject: [PATCH 3204/3421] Support loading results from a specific hyperopt history file --- freqtrade/commands/arguments.py | 4 ++-- freqtrade/commands/cli_options.py | 6 ++++++ freqtrade/commands/hyperopt_commands.py | 9 +++++++-- freqtrade/configuration/configuration.py | 3 +++ freqtrade/data/btanalysis.py | 5 ++++- tests/data/test_btanalysis.py | 9 +++++++++ 6 files changed, 31 insertions(+), 5 deletions(-) diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index a9ad6bc63..72f60eb32 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -75,10 +75,10 @@ ARGS_HYPEROPT_LIST = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_list_min_total_profit", "hyperopt_list_max_total_profit", "hyperopt_list_min_objective", "hyperopt_list_max_objective", "print_colorized", "print_json", "hyperopt_list_no_details", - "export_csv"] + "hyperoptexportfilename", "export_csv"] ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperopt_show_index", - "print_json", "hyperopt_show_no_header"] + "print_json", "hyperoptexportfilename", "hyperopt_show_no_header"] NO_CONF_REQURIED = ["convert-data", "convert-trade-data", "download-data", "list-timeframes", "list-markets", "list-pairs", "list-strategies", "list-data", diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index eeadd62f6..cd0bc426d 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -263,6 +263,12 @@ AVAILABLE_CLI_OPTIONS = { metavar='NAME', default=constants.DEFAULT_HYPEROPT_LOSS, ), + "hyperoptexportfilename": Arg( + '--hyperopt-filename', + help='Hyperopt result filename.' + 'Example: `--hyperopt-filename=hyperopt_results_2020-09-27_16-20-48.pickle`', + metavar='PATH', + ), # List exchanges "print_one_column": Arg( '-1', '--one-column', diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index de8764369..9075d19d2 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -41,7 +41,9 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None: 'filter_max_objective': config.get('hyperopt_list_max_objective', None), } - results_file = get_latest_hyperopt_file(config['user_data_dir'] / 'hyperopt_results') + results_file = get_latest_hyperopt_file( + config['user_data_dir'] / 'hyperopt_results', + config.get('hyperoptexportfilename')) # Previous evaluations epochs = Hyperopt.load_previous_results(results_file) @@ -80,7 +82,10 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: print_json = config.get('print_json', False) no_header = config.get('hyperopt_show_no_header', False) - results_file = get_latest_hyperopt_file(config['user_data_dir'] / 'hyperopt_results') + results_file = get_latest_hyperopt_file( + config['user_data_dir'] / 'hyperopt_results', + config.get('hyperoptexportfilename')) + n = config.get('hyperopt_show_index', -1) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 4a53ef7e5..d022c1e62 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -263,6 +263,9 @@ class Configuration: self._args_to_config(config, argname='hyperopt_path', logstring='Using additional Hyperopt lookup path: {}') + self._args_to_config(config, argname='hyperoptexportfilename', + logstring='Using hyperopt file: {}') + self._args_to_config(config, argname='epochs', logstring='Parameter --epochs detected ... ' 'Will run Hyperopt with for {} epochs ...' diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 55e4f11c4..d4edd41a8 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -81,7 +81,7 @@ def get_latest_hyperopt_filename(directory: Union[Path, str]) -> str: return 'hyperopt_results.pickle' -def get_latest_hyperopt_file(directory: Union[Path, str]) -> Path: +def get_latest_hyperopt_file(directory: Union[Path, str], predef_filename: str = None) -> Path: """ Get latest hyperopt export based on '.last_result.json'. :param directory: Directory to search for last result @@ -91,6 +91,9 @@ def get_latest_hyperopt_file(directory: Union[Path, str]) -> Path: * `directory/.last_result.json` does not exist * `directory/.last_result.json` has the wrong content """ + + if predef_filename: + return directory / predef_filename return directory / get_latest_hyperopt_filename(directory) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 564dae0b1..43b1a7a4b 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -15,6 +15,7 @@ from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, create_cum_profit, extract_trades_of_period, get_latest_backtest_filename, + get_latest_hyperopt_file, load_backtest_data, load_trades, load_trades_from_db) from freqtrade.data.history import load_data, load_pair_history @@ -43,6 +44,14 @@ def test_get_latest_backtest_filename(testdatadir, mocker): get_latest_backtest_filename(testdatadir) +def test_get_latest_hyperopt_file(testdatadir, mocker): + res = get_latest_hyperopt_file(testdatadir / 'does_not_exist', 'testfile.pickle') + assert res == testdatadir / 'does_not_exist/testfile.pickle' + + res = get_latest_hyperopt_file(testdatadir.parent) + assert res == testdatadir.parent / "hyperopt_results.pickle" + + def test_load_backtest_data_old_format(testdatadir): filename = testdatadir / "backtest-result_test.json" From 8de9c46110f6420d12570d55a07b6c6d8c3bc85a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Sep 2020 17:09:33 +0200 Subject: [PATCH 3205/3421] Document hyperopt-filename usage --- docs/hyperopt.md | 3 +- docs/utils.md | 62 +++++++++++++++++++++++-------- freqtrade/commands/cli_options.py | 2 +- 3 files changed, 50 insertions(+), 17 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 6162f766a..8bfd2cf7d 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -240,7 +240,8 @@ running at least several thousand evaluations. The `--spaces all` option determines that all possible parameters should be optimized. Possibilities are listed below. !!! Note - By default, hyperopt will erase previous results and start from scratch. + Hyperopt will store hyperopt results with the timestamp of the hyperopt start time. + Reading commands (`hyperopt-list`, `hyperopt-show`) can use `--hyperopt-filename ` to read and display older hyperopt results. ### Execute Hyperopt with different historical data source diff --git a/docs/utils.md b/docs/utils.md index 8c7e381ff..409bcc134 100644 --- a/docs/utils.md +++ b/docs/utils.md @@ -423,7 +423,7 @@ freqtrade test-pairlist --config config.json --quote USDT BTC ## List Hyperopt results -You can list the hyperoptimization epochs the Hyperopt module evaluated previously with the `hyperopt-list` subcommand. +You can list the hyperoptimization epochs the Hyperopt module evaluated previously with the `hyperopt-list` sub-command. ``` usage: freqtrade hyperopt-list [-h] [-v] [--logfile FILE] [-V] [-c PATH] @@ -432,10 +432,11 @@ usage: freqtrade hyperopt-list [-h] [-v] [--logfile FILE] [-V] [-c PATH] [--max-trades INT] [--min-avg-time FLOAT] [--max-avg-time FLOAT] [--min-avg-profit FLOAT] [--max-avg-profit FLOAT] - [--min-total-profit FLOAT] [--max-total-profit FLOAT] + [--min-total-profit FLOAT] + [--max-total-profit FLOAT] [--min-objective FLOAT] [--max-objective FLOAT] [--no-color] [--print-json] [--no-details] - [--export-csv FILE] + [--hyperopt-filename PATH] [--export-csv FILE] optional arguments: -h, --help show this help message and exit @@ -443,24 +444,27 @@ optional arguments: --profitable Select only profitable epochs. --min-trades INT Select epochs with more than INT trades. --max-trades INT Select epochs with less than INT trades. - --min-avg-time FLOAT Select epochs on above average time. - --max-avg-time FLOAT Select epochs on under average time. + --min-avg-time FLOAT Select epochs above average time. + --max-avg-time FLOAT Select epochs below average time. --min-avg-profit FLOAT - Select epochs on above average profit. + Select epochs above average profit. --max-avg-profit FLOAT - Select epochs on below average profit. + Select epochs below average profit. --min-total-profit FLOAT - Select epochs on above total profit. + Select epochs above total profit. --max-total-profit FLOAT - Select epochs on below total profit. + Select epochs below total profit. --min-objective FLOAT - Select epochs on above objective (- is added by default). + Select epochs above objective. --max-objective FLOAT - Select epochs on below objective (- is added by default). + Select epochs below objective. --no-color Disable colorization of hyperopt results. May be useful if you are redirecting output to a file. - --print-json Print best result detailization in JSON format. + --print-json Print output in JSON format. --no-details Do not print best epoch details. + --hyperopt-filename FILENAME + Hyperopt result filename.Example: `--hyperopt- + filename=hyperopt_results_2020-09-27_16-20-48.pickle` --export-csv FILE Export to CSV-File. This will disable table print. Example: --export-csv hyperopt.csv @@ -480,7 +484,11 @@ Common arguments: --userdir PATH, --user-data-dir PATH Path to userdata directory. ``` - + +!!! Note + `hyperopt-list` will automatically use the latest available hyperopt results file. + You can override this using the `--hyperopt-filename` argument, and specify another, available filename (without path!). + ### Examples List all results, print details of the best result at the end: @@ -501,17 +509,41 @@ You can show the details of any hyperoptimization epoch previously evaluated by usage: freqtrade hyperopt-show [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--best] [--profitable] [-n INT] [--print-json] - [--no-header] + [--hyperopt-filename PATH] [--no-header] optional arguments: -h, --help show this help message and exit --best Select only best epochs. --profitable Select only profitable epochs. -n INT, --index INT Specify the index of the epoch to print details for. - --print-json Print best result detailization in JSON format. + --print-json Print output in JSON format. + --hyperopt-filename FILENAME + Hyperopt result filename.Example: `--hyperopt- + filename=hyperopt_results_2020-09-27_16-20-48.pickle` --no-header Do not print epoch details header. + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. + ``` +!!! Note + `hyperopt-show` will automatically use the latest available hyperopt results file. + You can override this using the `--hyperopt-filename` argument, and specify another, available filename (without path!). + ### Examples Print details for the epoch 168 (the number of the epoch is shown by the `hyperopt-list` subcommand or by Hyperopt itself during hyperoptimization run): diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index cd0bc426d..3c5775768 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -267,7 +267,7 @@ AVAILABLE_CLI_OPTIONS = { '--hyperopt-filename', help='Hyperopt result filename.' 'Example: `--hyperopt-filename=hyperopt_results_2020-09-27_16-20-48.pickle`', - metavar='PATH', + metavar='FILENAME', ), # List exchanges "print_one_column": Arg( From 5769b9244f83343c66309e7b4c4eb73cce03f1b7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Sep 2020 19:34:47 +0200 Subject: [PATCH 3206/3421] Mock test correctly --- tests/optimize/test_hyperopt.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index ec911c113..c57ff6852 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -843,6 +843,8 @@ def test_clean_hyperopt(mocker, hyperopt_conf, caplog): def test_print_json_spaces_all(mocker, hyperopt_conf, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) + mocker.patch('freqtrade.optimize.hyperopt.file_dump_json') + mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( From 6e70ae6e95758e0b5de881d956a81fbb88b0b0be Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Sep 2020 19:40:55 +0200 Subject: [PATCH 3207/3421] Improve code quality --- freqtrade/commands/hyperopt_commands.py | 1 - freqtrade/data/btanalysis.py | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index 9075d19d2..fb567321d 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -86,7 +86,6 @@ def start_hyperopt_show(args: Dict[str, Any]) -> None: config['user_data_dir'] / 'hyperopt_results', config.get('hyperoptexportfilename')) - n = config.get('hyperopt_show_index', -1) filteroptions = { diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index d4edd41a8..b309a7634 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -91,7 +91,8 @@ def get_latest_hyperopt_file(directory: Union[Path, str], predef_filename: str = * `directory/.last_result.json` does not exist * `directory/.last_result.json` has the wrong content """ - + if isinstance(directory, str): + directory = Path(directory) if predef_filename: return directory / predef_filename return directory / get_latest_hyperopt_filename(directory) From f3de74f817ef9e5c0a6f3cecd327c2ffa9018c75 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Sep 2020 19:48:11 +0200 Subject: [PATCH 3208/3421] Mock all occurances of hyperopt.dump --- tests/optimize/test_hyperopt.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index c57ff6852..b889114e1 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -86,6 +86,7 @@ def create_results(mocker, hyperopt, testdatadir) -> List[Dict]: mocker.patch.object(Path, "unlink", MagicMock(return_value=True)) mocker.patch('freqtrade.optimize.hyperopt.dump', return_value=None) + mocker.patch('freqtrade.optimize.hyperopt.file_dump_json') return [{'loss': 1, 'result': 'foo', 'params': {}}] @@ -538,6 +539,8 @@ def test_roi_table_generation(hyperopt) -> None: def test_start_calls_optimizer(mocker, hyperopt_conf, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) + mocker.patch('freqtrade.optimize.hyperopt.file_dump_json') + mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( @@ -900,6 +903,7 @@ def test_print_json_spaces_all(mocker, hyperopt_conf, capsys) -> None: def test_print_json_spaces_default(mocker, hyperopt_conf, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) + mocker.patch('freqtrade.optimize.hyperopt.file_dump_json') mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( @@ -947,6 +951,7 @@ def test_print_json_spaces_default(mocker, hyperopt_conf, capsys) -> None: def test_print_json_spaces_roi_stoploss(mocker, hyperopt_conf, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) + mocker.patch('freqtrade.optimize.hyperopt.file_dump_json') mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( @@ -993,6 +998,7 @@ def test_print_json_spaces_roi_stoploss(mocker, hyperopt_conf, capsys) -> None: def test_simplified_interface_roi_stoploss(mocker, hyperopt_conf, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) + mocker.patch('freqtrade.optimize.hyperopt.file_dump_json') mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( @@ -1045,6 +1051,7 @@ def test_simplified_interface_roi_stoploss(mocker, hyperopt_conf, capsys) -> Non def test_simplified_interface_all_failed(mocker, hyperopt_conf) -> None: mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) + mocker.patch('freqtrade.optimize.hyperopt.file_dump_json') mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( @@ -1071,6 +1078,7 @@ def test_simplified_interface_all_failed(mocker, hyperopt_conf) -> None: def test_simplified_interface_buy(mocker, hyperopt_conf, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) + mocker.patch('freqtrade.optimize.hyperopt.file_dump_json') mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( @@ -1123,6 +1131,7 @@ def test_simplified_interface_buy(mocker, hyperopt_conf, capsys) -> None: def test_simplified_interface_sell(mocker, hyperopt_conf, capsys) -> None: dumper = mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) + mocker.patch('freqtrade.optimize.hyperopt.file_dump_json') mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( @@ -1181,6 +1190,7 @@ def test_simplified_interface_sell(mocker, hyperopt_conf, capsys) -> None: ]) def test_simplified_interface_failed(mocker, hyperopt_conf, method, space) -> None: mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock()) + mocker.patch('freqtrade.optimize.hyperopt.file_dump_json') mocker.patch('freqtrade.optimize.backtesting.Backtesting.load_bt_data', MagicMock(return_value=(MagicMock(), None))) mocker.patch( From 15bb0af1b354ddb197f081bb8b456269dc73841d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Sep 2020 00:35:19 +0200 Subject: [PATCH 3209/3421] Add some test-coverage --- tests/data/test_btanalysis.py | 3 +++ tests/optimize/test_hyperopt.py | 30 ++++++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 43b1a7a4b..62d0415f2 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -51,6 +51,9 @@ def test_get_latest_hyperopt_file(testdatadir, mocker): res = get_latest_hyperopt_file(testdatadir.parent) assert res == testdatadir.parent / "hyperopt_results.pickle" + res = get_latest_hyperopt_file(str(testdatadir.parent)) + assert res == testdatadir.parent / "hyperopt_results.pickle" + def test_load_backtest_data_old_format(testdatadir): diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index b889114e1..ce23af0d8 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -5,7 +5,7 @@ from datetime import datetime from pathlib import Path from copy import deepcopy from typing import Dict, List -from unittest.mock import MagicMock, PropertyMock +from unittest.mock import MagicMock import pandas as pd import pytest @@ -81,14 +81,14 @@ def create_results(mocker, hyperopt, testdatadir) -> List[Dict]: mocker.patch.object(Path, "is_file", MagicMock(return_value=False)) stat_mock = MagicMock() - stat_mock.st_size = PropertyMock(return_value=1) - mocker.patch.object(Path, "stat", MagicMock(return_value=False)) + stat_mock.st_size = 1 + mocker.patch.object(Path, "stat", MagicMock(return_value=stat_mock)) mocker.patch.object(Path, "unlink", MagicMock(return_value=True)) mocker.patch('freqtrade.optimize.hyperopt.dump', return_value=None) mocker.patch('freqtrade.optimize.hyperopt.file_dump_json') - return [{'loss': 1, 'result': 'foo', 'params': {}}] + return [{'loss': 1, 'result': 'foo', 'params': {}, 'is_best': True}] def test_setup_hyperopt_configuration_without_arguments(mocker, default_conf, caplog) -> None: @@ -524,6 +524,28 @@ def test_read_results_returns_epochs(mocker, hyperopt, testdatadir, caplog) -> N mock_load.assert_called_once() +def test_load_previous_results(mocker, hyperopt, testdatadir, caplog) -> None: + epochs = create_results(mocker, hyperopt, testdatadir) + mock_load = mocker.patch('freqtrade.optimize.hyperopt.load', return_value=epochs) + mocker.patch.object(Path, 'is_file', MagicMock(return_value=True)) + statmock = MagicMock() + statmock.st_size = 5 + # mocker.patch.object(Path, 'stat', MagicMock(return_value=statmock)) + + results_file = testdatadir / 'optimize' / 'ut_results.pickle' + + hyperopt_epochs = hyperopt.load_previous_results(results_file) + + assert hyperopt_epochs == epochs + mock_load.assert_called_once() + + del epochs[0]['is_best'] + mock_load = mocker.patch('freqtrade.optimize.hyperopt.load', return_value=epochs) + + with pytest.raises(OperationalException): + hyperopt.load_previous_results(results_file) + + def test_roi_table_generation(hyperopt) -> None: params = { 'roi_t1': 5, From 48347b49fd696583fcdf34560243a76a1dc55224 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Sep 2020 05:48:08 +0000 Subject: [PATCH 3210/3421] Bump pytest from 6.0.2 to 6.1.0 Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.0.2 to 6.1.0. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/6.0.2...6.1.0) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index ffe2763a6..a21604701 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.8.3 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.782 -pytest==6.0.2 +pytest==6.1.0 pytest-asyncio==0.14.0 pytest-cov==2.10.1 pytest-mock==3.3.1 From 1dee0eed75c529ba23b047a5af6ad29a03fe6240 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Sep 2020 05:48:12 +0000 Subject: [PATCH 3211/3421] Bump ccxt from 1.34.40 to 1.34.59 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.34.40 to 1.34.59. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.34.40...1.34.59) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 44d2f29a2..7f1a3dabe 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.19.2 pandas==1.1.2 -ccxt==1.34.40 +ccxt==1.34.59 SQLAlchemy==1.3.19 python-telegram-bot==12.8 arrow==0.16.0 From 6d8fadd560e055d898c51ac848024d491728c78c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Sep 2020 05:48:14 +0000 Subject: [PATCH 3212/3421] Bump nbconvert from 6.0.4 to 6.0.6 Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 6.0.4 to 6.0.6. - [Release notes](https://github.com/jupyter/nbconvert/releases) - [Commits](https://github.com/jupyter/nbconvert/compare/6.0.4...6.0.6) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index ffe2763a6..b6ab80648 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -15,4 +15,4 @@ pytest-mock==3.3.1 pytest-random-order==1.0.4 # Convert jupyter notebooks to markdown documents -nbconvert==6.0.4 +nbconvert==6.0.6 From dd4d458ca82b76a36b7820b5c6775c0fcb77caf6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Sep 2020 05:48:15 +0000 Subject: [PATCH 3213/3421] Bump mkdocs-material from 5.5.13 to 6.0.1 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 5.5.13 to 6.0.1. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/5.5.13...6.0.1) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index d4c93928e..091eacc9b 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==5.5.13 +mkdocs-material==6.0.1 mdx_truly_sane_lists==1.2 From 700529fe06e22443283271f7c494a70e2084fdeb Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Sep 2020 08:36:40 +0200 Subject: [PATCH 3214/3421] Tag image before building next image --- build_helpers/publish_docker.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/build_helpers/publish_docker.sh b/build_helpers/publish_docker.sh index 53e18063c..ac0cd2461 100755 --- a/build_helpers/publish_docker.sh +++ b/build_helpers/publish_docker.sh @@ -17,8 +17,13 @@ else docker pull ${IMAGE_NAME}:${TAG} docker build --cache-from ${IMAGE_NAME}:${TAG} -t freqtrade:${TAG} . fi +# Tag image for upload and next build step +docker tag freqtrade:$TAG ${IMAGE_NAME}:$TAG + docker build --cache-from freqtrade:${TAG} --build-arg sourceimage=${TAG} -t freqtrade:${TAG_PLOT} -f docker/Dockerfile.plot . +docker tag freqtrade:$TAG_PLOT ${IMAGE_NAME}:$TAG_PLOT + if [ $? -ne 0 ]; then echo "failed building image" return 1 @@ -32,9 +37,6 @@ if [ $? -ne 0 ]; then return 1 fi -# Tag image for upload -docker tag freqtrade:$TAG ${IMAGE_NAME}:$TAG -docker tag freqtrade:$TAG_PLOT ${IMAGE_NAME}:$TAG_PLOT if [ $? -ne 0 ]; then echo "failed tagging image" return 1 From 17e605e130f9306d06987b685148032efd7b0f0e Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Sep 2020 15:22:06 +0200 Subject: [PATCH 3215/3421] Make it clear in samples that strategy is mandatory --- docs/advanced-hyperopt.md | 4 ++-- docs/faq.md | 8 +------- docs/hyperopt.md | 4 ++-- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/docs/advanced-hyperopt.md b/docs/advanced-hyperopt.md index 5fc674b03..dfabf2b91 100644 --- a/docs/advanced-hyperopt.md +++ b/docs/advanced-hyperopt.md @@ -27,9 +27,9 @@ class MyAwesomeHyperOpt2(MyAwesomeHyperOpt): and then quickly switch between hyperopt classes, running optimization process with hyperopt class you need in each particular case: ``` -$ freqtrade hyperopt --hyperopt MyAwesomeHyperOpt ... +$ freqtrade hyperopt --hyperopt MyAwesomeHyperOpt --strategy MyAwesomeStrategy ... or -$ freqtrade hyperopt --hyperopt MyAwesomeHyperOpt2 ... +$ freqtrade hyperopt --hyperopt MyAwesomeHyperOpt2 --strategy MyAwesomeStrategy ... ``` ## Creating and using a custom loss function diff --git a/docs/faq.md b/docs/faq.md index beed89801..d8af7798c 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -140,13 +140,7 @@ Since hyperopt uses Bayesian search, running for too many epochs may not produce It's therefore recommended to run between 500-1000 epochs over and over until you hit at least 10.000 epochs in total (or are satisfied with the result). You can best judge by looking at the results - if the bot keeps discovering better strategies, it's best to keep on going. ```bash -freqtrade hyperopt -e 1000 -``` - -or if you want intermediate result to see - -```bash -for i in {1..100}; do freqtrade hyperopt -e 1000; done +freqtrade hyperopt --hyperop SampleHyperopt --strategy SampleStrategy -e 1000 ``` ### Why does it take a long time to run hyperopt? diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 8bfd2cf7d..d26cbeeb2 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -229,7 +229,7 @@ Because hyperopt tries a lot of combinations to find the best parameters it will We strongly recommend to use `screen` or `tmux` to prevent any connection loss. ```bash -freqtrade hyperopt --config config.json --hyperopt -e 500 --spaces all +freqtrade hyperopt --config config.json --hyperopt --strategy -e 500 --spaces all ``` Use `` as the name of the custom hyperopt used. @@ -255,7 +255,7 @@ Use the `--timerange` argument to change how much of the test-set you want to us For example, to use one month of data, pass the following parameter to the hyperopt call: ```bash -freqtrade hyperopt --timerange 20180401-20180501 +freqtrade hyperopt --hyperopt --strategy --timerange 20180401-20180501 ``` ### Running Hyperopt using methods from a strategy From 7623691a5feb2366b3261410df011cb287f2af7d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Sep 2020 08:53:53 +0200 Subject: [PATCH 3216/3421] PyPi Publis should only run for releases --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 392641677..f4ef3ba7e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -236,7 +236,7 @@ jobs: - name: Publish to PyPI (Test) uses: pypa/gh-action-pypi-publish@master - if: (steps.extract_branch.outputs.branch == 'stable' || github.event_name == 'release') + if: (github.event_name == 'release') with: user: __token__ password: ${{ secrets.pypi_test_password }} @@ -244,7 +244,7 @@ jobs: - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@master - if: (steps.extract_branch.outputs.branch == 'stable' || github.event_name == 'release') + if: (github.event_name == 'release') with: user: __token__ password: ${{ secrets.pypi_password }} From 287604efd21891c1233ecb84b4ea0ce7a923ac9f Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Sep 2020 17:35:04 +0200 Subject: [PATCH 3217/3421] Add isort to project dev dependencies --- .github/workflows/ci.yml | 8 ++++++++ requirements-dev.txt | 1 + setup.cfg | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f4ef3ba7e..19c5479a4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -94,6 +94,10 @@ jobs: run: | flake8 + - name: Sort imports (isort) + run: | + isort --check . + - name: Mypy run: | mypy freqtrade scripts @@ -156,6 +160,10 @@ jobs: run: | flake8 + - name: Sort imports (isort) + run: | + isort --check . + - name: Mypy run: | mypy freqtrade scripts diff --git a/requirements-dev.txt b/requirements-dev.txt index b71f1abfd..c16e387ef 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -13,6 +13,7 @@ pytest-asyncio==0.14.0 pytest-cov==2.10.1 pytest-mock==3.3.1 pytest-random-order==1.0.4 +isort==5.5.3 # Convert jupyter notebooks to markdown documents nbconvert==6.0.6 diff --git a/setup.cfg b/setup.cfg index 34f25482b..57a0c42e7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -8,6 +8,10 @@ exclude = .eggs, user_data, +[isort] +line_length=100 +multi_line_output=0 + [mypy] ignore_missing_imports = True From 201e71434343f8110944f96a0021d84ef92faf63 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Sep 2020 17:37:14 +0200 Subject: [PATCH 3218/3421] include isort to contributing --- CONTRIBUTING.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 97f62154d..399588f88 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -65,6 +65,14 @@ Guide for installing them is [here](http://flake8.pycqa.org/en/latest/user/using mypy freqtrade ``` +### 4. Ensure all imports are correct + +#### Run isort + +``` bash +isort . +``` + ## (Core)-Committer Guide ### Process: Pull Requests From 253b7b763eaae842f15b1a6e989d355481432106 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Sep 2020 19:39:41 +0200 Subject: [PATCH 3219/3421] Apply isort to freqtrade codebase --- freqtrade/__main__.py | 1 + freqtrade/commands/__init__.py | 24 +++++++------------ freqtrade/commands/arguments.py | 15 ++++++------ freqtrade/commands/build_config_commands.py | 6 +++-- freqtrade/commands/data_commands.py | 10 ++++---- freqtrade/commands/deploy_commands.py | 4 ++-- freqtrade/commands/hyperopt_commands.py | 1 + freqtrade/commands/list_commands.py | 11 +++++---- freqtrade/commands/optimize_commands.py | 3 +++ freqtrade/commands/pairlist_commands.py | 1 + freqtrade/commands/trade_commands.py | 1 - freqtrade/configuration/__init__.py | 6 ++--- freqtrade/configuration/check_exchange.py | 6 ++--- freqtrade/configuration/config_setup.py | 6 +++-- freqtrade/configuration/config_validation.py | 1 + freqtrade/configuration/configuration.py | 4 ++-- .../configuration/directory_operations.py | 3 ++- freqtrade/configuration/load_config.py | 1 + freqtrade/data/btanalysis.py | 5 ++-- freqtrade/data/converter.py | 4 ++-- freqtrade/data/dataprovider.py | 1 + freqtrade/data/history/__init__.py | 10 ++++---- freqtrade/data/history/hdf5datahandler.py | 4 ++-- freqtrade/data/history/history_utils.py | 7 +++--- freqtrade/data/history/idatahandler.py | 4 ++-- freqtrade/data/history/jsondatahandler.py | 4 ++-- freqtrade/edge/edge_positioning.py | 5 ++-- freqtrade/exchange/__init__.py | 24 ++++++++----------- freqtrade/exchange/bibox.py | 1 + freqtrade/exchange/binance.py | 6 ++--- freqtrade/exchange/common.py | 4 ++-- freqtrade/exchange/exchange.py | 16 ++++++------- freqtrade/exchange/ftx.py | 6 ++--- freqtrade/exchange/kraken.py | 6 ++--- freqtrade/freqtradebot.py | 1 + freqtrade/loggers.py | 4 ++-- freqtrade/main.py | 1 + freqtrade/misc.py | 1 + freqtrade/optimize/backtesting.py | 7 +++--- freqtrade/optimize/edge_cli.py | 4 ++-- freqtrade/optimize/hyperopt.py | 10 ++++---- freqtrade/optimize/hyperopt_interface.py | 1 + freqtrade/optimize/hyperopt_loss_sharpe.py | 2 +- freqtrade/optimize/hyperopt_loss_sortino.py | 2 +- freqtrade/optimize/optimize_reports.py | 5 ++-- freqtrade/pairlist/AgeFilter.py | 3 ++- freqtrade/pairlist/PrecisionFilter.py | 3 ++- freqtrade/pairlist/pairlistmanager.py | 2 +- freqtrade/persistence/__init__.py | 3 +-- freqtrade/persistence/migrations.py | 1 + freqtrade/persistence/models.py | 5 ++-- freqtrade/plot/plotting.py | 12 ++++------ freqtrade/resolvers/__init__.py | 16 +++++++++---- freqtrade/resolvers/exchange_resolver.py | 3 ++- freqtrade/resolvers/hyperopt_resolver.py | 1 + freqtrade/resolvers/iresolver.py | 1 + freqtrade/resolvers/pairlist_resolver.py | 1 + freqtrade/resolvers/strategy_resolver.py | 4 ++-- freqtrade/rpc/__init__.py | 5 ++-- freqtrade/rpc/api_server.py | 6 ++--- freqtrade/rpc/rpc.py | 1 + freqtrade/rpc/rpc_manager.py | 1 + freqtrade/rpc/telegram.py | 3 ++- freqtrade/rpc/webhook.py | 4 ++-- freqtrade/strategy/__init__.py | 4 ++-- freqtrade/strategy/interface.py | 1 + freqtrade/strategy/strategy_helper.py | 1 + freqtrade/strategy/strategy_wrapper.py | 1 + freqtrade/templates/sample_hyperopt.py | 1 + .../templates/sample_hyperopt_advanced.py | 2 +- freqtrade/templates/sample_hyperopt_loss.py | 3 ++- freqtrade/templates/sample_strategy.py | 2 +- freqtrade/vendor/qtpylib/indicators.py | 3 ++- freqtrade/wallets.py | 1 + freqtrade/worker.py | 1 + scripts/rest_client.py | 3 ++- setup.cfg | 1 + 77 files changed, 188 insertions(+), 160 deletions(-) diff --git a/freqtrade/__main__.py b/freqtrade/__main__.py index 97ed9ae67..881a2f562 100644 --- a/freqtrade/__main__.py +++ b/freqtrade/__main__.py @@ -8,5 +8,6 @@ To launch Freqtrade as a module from freqtrade import main + if __name__ == '__main__': main.main() diff --git a/freqtrade/commands/__init__.py b/freqtrade/commands/__init__.py index 4ce3eb421..21c5d6812 100644 --- a/freqtrade/commands/__init__.py +++ b/freqtrade/commands/__init__.py @@ -8,23 +8,15 @@ Note: Be careful with file-scoped imports in these subfiles. """ from freqtrade.commands.arguments import Arguments from freqtrade.commands.build_config_commands import start_new_config -from freqtrade.commands.data_commands import (start_convert_data, - start_download_data, +from freqtrade.commands.data_commands import (start_convert_data, start_download_data, start_list_data) -from freqtrade.commands.deploy_commands import (start_create_userdir, - start_new_hyperopt, +from freqtrade.commands.deploy_commands import (start_create_userdir, start_new_hyperopt, start_new_strategy) -from freqtrade.commands.hyperopt_commands import (start_hyperopt_list, - start_hyperopt_show) -from freqtrade.commands.list_commands import (start_list_exchanges, - start_list_hyperopts, - start_list_markets, - start_list_strategies, - start_list_timeframes, - start_show_trades) -from freqtrade.commands.optimize_commands import (start_backtesting, - start_edge, start_hyperopt) +from freqtrade.commands.hyperopt_commands import start_hyperopt_list, start_hyperopt_show +from freqtrade.commands.list_commands import (start_list_exchanges, start_list_hyperopts, + start_list_markets, start_list_strategies, + start_list_timeframes, start_show_trades) +from freqtrade.commands.optimize_commands import start_backtesting, start_edge, start_hyperopt from freqtrade.commands.pairlist_commands import start_test_pairlist -from freqtrade.commands.plot_commands import (start_plot_dataframe, - start_plot_profit) +from freqtrade.commands.plot_commands import start_plot_dataframe, start_plot_profit from freqtrade.commands.trade_commands import start_trading diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index b61a4933e..3f970c6eb 100644 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -9,6 +9,7 @@ from typing import Any, Dict, List, Optional from freqtrade.commands.cli_options import AVAILABLE_CLI_OPTIONS from freqtrade.constants import DEFAULT_CONFIG + ARGS_COMMON = ["verbosity", "logfile", "version", "config", "datadir", "user_data_dir"] ARGS_STRATEGY = ["strategy", "strategy_path"] @@ -161,16 +162,14 @@ class Arguments: self.parser = argparse.ArgumentParser(description='Free, open source crypto trading bot') self._build_args(optionlist=['version'], parser=self.parser) - from freqtrade.commands import (start_create_userdir, start_convert_data, - start_download_data, start_list_data, - start_hyperopt_list, start_hyperopt_show, + from freqtrade.commands import (start_backtesting, start_convert_data, start_create_userdir, + start_download_data, start_edge, start_hyperopt, + start_hyperopt_list, start_hyperopt_show, start_list_data, start_list_exchanges, start_list_hyperopts, start_list_markets, start_list_strategies, - start_list_timeframes, start_new_config, - start_new_hyperopt, start_new_strategy, - start_plot_dataframe, start_plot_profit, start_show_trades, - start_backtesting, start_hyperopt, start_edge, - start_test_pairlist, start_trading) + start_list_timeframes, start_new_config, start_new_hyperopt, + start_new_strategy, start_plot_dataframe, start_plot_profit, + start_show_trades, start_test_pairlist, start_trading) subparsers = self.parser.add_subparsers(dest='command', # Use custom message when no subhandler is added diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py index 0c98b2e55..79256db1d 100644 --- a/freqtrade/commands/build_config_commands.py +++ b/freqtrade/commands/build_config_commands.py @@ -5,9 +5,11 @@ from typing import Any, Dict from questionary import Separator, prompt from freqtrade.constants import UNLIMITED_STAKE_AMOUNT -from freqtrade.exchange import available_exchanges, MAP_EXCHANGE_CHILDCLASS -from freqtrade.misc import render_template from freqtrade.exceptions import OperationalException +from freqtrade.exchange import MAP_EXCHANGE_CHILDCLASS, available_exchanges +from freqtrade.misc import render_template + + logger = logging.getLogger(__name__) diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index 956a8693e..7102eee38 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -6,16 +6,15 @@ from typing import Any, Dict, List import arrow from freqtrade.configuration import TimeRange, setup_utils_configuration -from freqtrade.data.converter import (convert_ohlcv_format, - convert_trades_format) -from freqtrade.data.history import (convert_trades_to_ohlcv, - refresh_backtest_ohlcv_data, +from freqtrade.data.converter import convert_ohlcv_format, convert_trades_format +from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data, refresh_backtest_trades_data) from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode + logger = logging.getLogger(__name__) @@ -105,8 +104,9 @@ def start_list_data(args: Dict[str, Any]) -> None: config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - from freqtrade.data.history.idatahandler import get_datahandler from tabulate import tabulate + + from freqtrade.data.history.idatahandler import get_datahandler dhc = get_datahandler(config['datadir'], config['dataformat_ohlcv']) paircombs = dhc.ohlcv_get_available_data(config['datadir']) diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index bfd68cb9b..0a49c55de 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -4,13 +4,13 @@ from pathlib import Path from typing import Any, Dict from freqtrade.configuration import setup_utils_configuration -from freqtrade.configuration.directory_operations import (copy_sample_files, - create_userdata_dir) +from freqtrade.configuration.directory_operations import copy_sample_files, create_userdata_dir from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGIES from freqtrade.exceptions import OperationalException from freqtrade.misc import render_template, render_template_with_fallback from freqtrade.state import RunMode + logger = logging.getLogger(__name__) diff --git a/freqtrade/commands/hyperopt_commands.py b/freqtrade/commands/hyperopt_commands.py index 4fae51e28..94447e6f9 100755 --- a/freqtrade/commands/hyperopt_commands.py +++ b/freqtrade/commands/hyperopt_commands.py @@ -8,6 +8,7 @@ from freqtrade.configuration import setup_utils_configuration from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode + logger = logging.getLogger(__name__) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index c8c820c61..e81ecf871 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -5,20 +5,20 @@ from collections import OrderedDict from pathlib import Path from typing import Any, Dict, List -from colorama import init as colorama_init -from colorama import Fore, Style import rapidjson +from colorama import Fore, Style +from colorama import init as colorama_init from tabulate import tabulate from freqtrade.configuration import setup_utils_configuration from freqtrade.constants import USERPATH_HYPEROPTS, USERPATH_STRATEGIES from freqtrade.exceptions import OperationalException -from freqtrade.exchange import (available_exchanges, ccxt_exchanges, - market_is_active) +from freqtrade.exchange import available_exchanges, ccxt_exchanges, market_is_active from freqtrade.misc import plural from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.state import RunMode + logger = logging.getLogger(__name__) @@ -203,8 +203,9 @@ def start_show_trades(args: Dict[str, Any]) -> None: """ Show trades """ - from freqtrade.persistence import init, Trade import json + + from freqtrade.persistence import Trade, init config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) if 'db_url' not in config: diff --git a/freqtrade/commands/optimize_commands.py b/freqtrade/commands/optimize_commands.py index 2fc605926..7411ca9c6 100644 --- a/freqtrade/commands/optimize_commands.py +++ b/freqtrade/commands/optimize_commands.py @@ -6,6 +6,7 @@ from freqtrade.configuration import setup_utils_configuration from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.state import RunMode + logger = logging.getLogger(__name__) @@ -58,6 +59,7 @@ def start_hyperopt(args: Dict[str, Any]) -> None: # Import here to avoid loading hyperopt module when it's not used try: from filelock import FileLock, Timeout + from freqtrade.optimize.hyperopt import Hyperopt except ImportError as e: raise OperationalException( @@ -98,6 +100,7 @@ def start_edge(args: Dict[str, Any]) -> None: :return: None """ from freqtrade.optimize.edge_cli import EdgeCli + # Initialize configuration config = setup_optimize_configuration(args, RunMode.EDGE) logger.info('Starting freqtrade in Edge mode') diff --git a/freqtrade/commands/pairlist_commands.py b/freqtrade/commands/pairlist_commands.py index 77bcb04b4..e4ee80ca5 100644 --- a/freqtrade/commands/pairlist_commands.py +++ b/freqtrade/commands/pairlist_commands.py @@ -7,6 +7,7 @@ from freqtrade.configuration import setup_utils_configuration from freqtrade.resolvers import ExchangeResolver from freqtrade.state import RunMode + logger = logging.getLogger(__name__) diff --git a/freqtrade/commands/trade_commands.py b/freqtrade/commands/trade_commands.py index c058e4f9d..535844844 100644 --- a/freqtrade/commands/trade_commands.py +++ b/freqtrade/commands/trade_commands.py @@ -1,5 +1,4 @@ import logging - from typing import Any, Dict diff --git a/freqtrade/configuration/__init__.py b/freqtrade/configuration/__init__.py index d41ac97ec..607f9cdef 100644 --- a/freqtrade/configuration/__init__.py +++ b/freqtrade/configuration/__init__.py @@ -1,7 +1,7 @@ # flake8: noqa: F401 -from freqtrade.configuration.config_setup import setup_utils_configuration from freqtrade.configuration.check_exchange import check_exchange, remove_credentials -from freqtrade.configuration.timerange import TimeRange -from freqtrade.configuration.configuration import Configuration +from freqtrade.configuration.config_setup import setup_utils_configuration from freqtrade.configuration.config_validation import validate_config_consistency +from freqtrade.configuration.configuration import Configuration +from freqtrade.configuration.timerange import TimeRange diff --git a/freqtrade/configuration/check_exchange.py b/freqtrade/configuration/check_exchange.py index 92daaf251..aa36de3ff 100644 --- a/freqtrade/configuration/check_exchange.py +++ b/freqtrade/configuration/check_exchange.py @@ -2,11 +2,11 @@ import logging from typing import Any, Dict from freqtrade.exceptions import OperationalException -from freqtrade.exchange import (available_exchanges, get_exchange_bad_reason, - is_exchange_bad, is_exchange_known_ccxt, - is_exchange_officially_supported) +from freqtrade.exchange import (available_exchanges, get_exchange_bad_reason, is_exchange_bad, + is_exchange_known_ccxt, is_exchange_officially_supported) from freqtrade.state import RunMode + logger = logging.getLogger(__name__) diff --git a/freqtrade/configuration/config_setup.py b/freqtrade/configuration/config_setup.py index 64f283e42..3b0f778f4 100644 --- a/freqtrade/configuration/config_setup.py +++ b/freqtrade/configuration/config_setup.py @@ -1,10 +1,12 @@ import logging from typing import Any, Dict +from freqtrade.state import RunMode + +from .check_exchange import remove_credentials from .config_validation import validate_config_consistency from .configuration import Configuration -from .check_exchange import remove_credentials -from freqtrade.state import RunMode + logger = logging.getLogger(__name__) diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index 5ba7ff294..d4612d8e0 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -9,6 +9,7 @@ from freqtrade import constants from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode + logger = logging.getLogger(__name__) diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 930917fae..83be28956 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -10,14 +10,14 @@ from typing import Any, Callable, Dict, List, Optional from freqtrade import constants from freqtrade.configuration.check_exchange import check_exchange from freqtrade.configuration.deprecated_settings import process_temporary_deprecated_settings -from freqtrade.configuration.directory_operations import (create_datadir, - create_userdata_dir) +from freqtrade.configuration.directory_operations import create_datadir, create_userdata_dir from freqtrade.configuration.load_config import load_config_file from freqtrade.exceptions import OperationalException from freqtrade.loggers import setup_logging from freqtrade.misc import deep_merge_dicts, json_load from freqtrade.state import NON_UTIL_MODES, TRADING_MODES, RunMode + logger = logging.getLogger(__name__) diff --git a/freqtrade/configuration/directory_operations.py b/freqtrade/configuration/directory_operations.py index 6b8c8cb5a..51310f013 100644 --- a/freqtrade/configuration/directory_operations.py +++ b/freqtrade/configuration/directory_operations.py @@ -3,8 +3,9 @@ import shutil from pathlib import Path from typing import Any, Dict, Optional -from freqtrade.exceptions import OperationalException from freqtrade.constants import USER_DATA_FILES +from freqtrade.exceptions import OperationalException + logger = logging.getLogger(__name__) diff --git a/freqtrade/configuration/load_config.py b/freqtrade/configuration/load_config.py index a24ee3d0a..726126034 100644 --- a/freqtrade/configuration/load_config.py +++ b/freqtrade/configuration/load_config.py @@ -11,6 +11,7 @@ import rapidjson from freqtrade.exceptions import OperationalException + logger = logging.getLogger(__name__) diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 2d45a7222..887c30621 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -2,18 +2,19 @@ Helpers when analyzing backtest data """ import logging +from datetime import timezone from pathlib import Path -from typing import Dict, Union, Tuple, Any, Optional +from typing import Any, Dict, Optional, Tuple, Union import numpy as np import pandas as pd -from datetime import timezone from freqtrade import persistence from freqtrade.constants import LAST_BT_RESULT_FN from freqtrade.misc import json_load from freqtrade.persistence import Trade + logger = logging.getLogger(__name__) # must align with columns in backtest.py diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 100a578a2..38fa670e9 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -10,8 +10,8 @@ from typing import Any, Dict, List import pandas as pd from pandas import DataFrame, to_datetime -from freqtrade.constants import (DEFAULT_DATAFRAME_COLUMNS, - DEFAULT_TRADES_COLUMNS) +from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS + logger = logging.getLogger(__name__) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index ccb6cbf56..07dd94fc1 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -17,6 +17,7 @@ from freqtrade.exceptions import ExchangeError, OperationalException from freqtrade.exchange import Exchange from freqtrade.state import RunMode + logger = logging.getLogger(__name__) diff --git a/freqtrade/data/history/__init__.py b/freqtrade/data/history/__init__.py index 23f635a98..107f9c401 100644 --- a/freqtrade/data/history/__init__.py +++ b/freqtrade/data/history/__init__.py @@ -5,10 +5,8 @@ Includes: * load data for a pair (or a list of pairs) from disk * download data from exchange and store to disk """ - -from .history_utils import (convert_trades_to_ohlcv, # noqa: F401 - get_timerange, load_data, load_pair_history, - refresh_backtest_ohlcv_data, - refresh_backtest_trades_data, refresh_data, +# flake8: noqa: F401 +from .history_utils import (convert_trades_to_ohlcv, get_timerange, load_data, load_pair_history, + refresh_backtest_ohlcv_data, refresh_backtest_trades_data, refresh_data, validate_backtest_data) -from .idatahandler import get_datahandler # noqa: F401 +from .idatahandler import get_datahandler diff --git a/freqtrade/data/history/hdf5datahandler.py b/freqtrade/data/history/hdf5datahandler.py index 594a1598a..f6cf9e0d9 100644 --- a/freqtrade/data/history/hdf5datahandler.py +++ b/freqtrade/data/history/hdf5datahandler.py @@ -7,12 +7,12 @@ import pandas as pd from freqtrade import misc from freqtrade.configuration import TimeRange -from freqtrade.constants import (DEFAULT_DATAFRAME_COLUMNS, - DEFAULT_TRADES_COLUMNS, +from freqtrade.constants import (DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS, ListPairsWithTimeframes) from .idatahandler import IDataHandler, TradeList + logger = logging.getLogger(__name__) diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index ac234a72e..a420b9dcc 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -9,15 +9,14 @@ from pandas import DataFrame from freqtrade.configuration import TimeRange from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS -from freqtrade.data.converter import (clean_ohlcv_dataframe, - ohlcv_to_dataframe, - trades_remove_duplicates, - trades_to_ohlcv) +from freqtrade.data.converter import (clean_ohlcv_dataframe, ohlcv_to_dataframe, + trades_remove_duplicates, trades_to_ohlcv) from freqtrade.data.history.idatahandler import IDataHandler, get_datahandler from freqtrade.exceptions import OperationalException from freqtrade.exchange import Exchange from freqtrade.misc import format_ms_time + logger = logging.getLogger(__name__) diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index 01b14f501..a170a9dc5 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -14,10 +14,10 @@ from pandas import DataFrame from freqtrade.configuration import TimeRange from freqtrade.constants import ListPairsWithTimeframes -from freqtrade.data.converter import (clean_ohlcv_dataframe, - trades_remove_duplicates, trim_dataframe) +from freqtrade.data.converter import clean_ohlcv_dataframe, trades_remove_duplicates, trim_dataframe from freqtrade.exchange import timeframe_to_seconds + logger = logging.getLogger(__name__) # Type for trades list diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 2e7c0f773..6436aa13d 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -8,12 +8,12 @@ from pandas import DataFrame, read_json, to_datetime from freqtrade import misc from freqtrade.configuration import TimeRange -from freqtrade.constants import (DEFAULT_DATAFRAME_COLUMNS, - ListPairsWithTimeframes) +from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS, ListPairsWithTimeframes from freqtrade.data.converter import trades_dict_to_list from .idatahandler import IDataHandler, TradeList + logger = logging.getLogger(__name__) diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index 3213c1ef8..6a95ad91f 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -9,11 +9,12 @@ import utils_find_1st as utf1st from pandas import DataFrame from freqtrade.configuration import TimeRange -from freqtrade.constants import UNLIMITED_STAKE_AMOUNT, DATETIME_PRINT_FORMAT -from freqtrade.exceptions import OperationalException +from freqtrade.constants import DATETIME_PRINT_FORMAT, UNLIMITED_STAKE_AMOUNT from freqtrade.data.history import get_timerange, load_data, refresh_data +from freqtrade.exceptions import OperationalException from freqtrade.strategy.interface import SellType + logger = logging.getLogger(__name__) diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index bdf1f91ec..cbcf961bc 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -1,19 +1,15 @@ # flake8: noqa: F401 +# isort: off from freqtrade.exchange.common import MAP_EXCHANGE_CHILDCLASS from freqtrade.exchange.exchange import Exchange -from freqtrade.exchange.exchange import (get_exchange_bad_reason, - is_exchange_bad, - is_exchange_known_ccxt, - is_exchange_officially_supported, - ccxt_exchanges, - available_exchanges) -from freqtrade.exchange.exchange import (timeframe_to_seconds, - timeframe_to_minutes, - timeframe_to_msecs, - timeframe_to_next_date, - timeframe_to_prev_date) -from freqtrade.exchange.exchange import (market_is_active) -from freqtrade.exchange.kraken import Kraken -from freqtrade.exchange.binance import Binance +# isort: on from freqtrade.exchange.bibox import Bibox +from freqtrade.exchange.binance import Binance +from freqtrade.exchange.exchange import (available_exchanges, ccxt_exchanges, + get_exchange_bad_reason, is_exchange_bad, + is_exchange_known_ccxt, is_exchange_officially_supported, + market_is_active, timeframe_to_minutes, timeframe_to_msecs, + timeframe_to_next_date, timeframe_to_prev_date, + timeframe_to_seconds) from freqtrade.exchange.ftx import Ftx +from freqtrade.exchange.kraken import Kraken diff --git a/freqtrade/exchange/bibox.py b/freqtrade/exchange/bibox.py index 229abe766..f0c2dd00b 100644 --- a/freqtrade/exchange/bibox.py +++ b/freqtrade/exchange/bibox.py @@ -4,6 +4,7 @@ from typing import Dict from freqtrade.exchange import Exchange + logger = logging.getLogger(__name__) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index d7da34482..b85802aad 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -4,12 +4,12 @@ from typing import Dict import ccxt -from freqtrade.exceptions import (DDosProtection, InsufficientFundsError, - InvalidOrderException, OperationalException, - TemporaryError) +from freqtrade.exceptions import (DDosProtection, InsufficientFundsError, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.exchange import Exchange from freqtrade.exchange.common import retrier + logger = logging.getLogger(__name__) diff --git a/freqtrade/exchange/common.py b/freqtrade/exchange/common.py index 9abd42aa7..ce0fde9e4 100644 --- a/freqtrade/exchange/common.py +++ b/freqtrade/exchange/common.py @@ -3,8 +3,8 @@ import logging import time from functools import wraps -from freqtrade.exceptions import (DDosProtection, RetryableOrderError, - TemporaryError) +from freqtrade.exceptions import DDosProtection, RetryableOrderError, TemporaryError + logger = logging.getLogger(__name__) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index aac45967d..bbb94e61f 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -13,20 +13,20 @@ from typing import Any, Dict, List, Optional, Tuple import arrow import ccxt import ccxt.async_support as ccxt_async -from ccxt.base.decimal_to_precision import (ROUND_DOWN, ROUND_UP, TICK_SIZE, - TRUNCATE, decimal_to_precision) +from ccxt.base.decimal_to_precision import (ROUND_DOWN, ROUND_UP, TICK_SIZE, TRUNCATE, + decimal_to_precision) from pandas import DataFrame from freqtrade.constants import ListPairsWithTimeframes from freqtrade.data.converter import ohlcv_to_dataframe, trades_dict_to_list -from freqtrade.exceptions import (DDosProtection, ExchangeError, - InsufficientFundsError, - InvalidOrderException, OperationalException, - RetryableOrderError, TemporaryError) -from freqtrade.exchange.common import (API_FETCH_ORDER_RETRY_COUNT, - BAD_EXCHANGES, retrier, retrier_async) +from freqtrade.exceptions import (DDosProtection, ExchangeError, InsufficientFundsError, + InvalidOrderException, OperationalException, RetryableOrderError, + TemporaryError) +from freqtrade.exchange.common import (API_FETCH_ORDER_RETRY_COUNT, BAD_EXCHANGES, retrier, + retrier_async) from freqtrade.misc import deep_merge_dicts, safe_value_fallback2 + CcxtModuleType = Any diff --git a/freqtrade/exchange/ftx.py b/freqtrade/exchange/ftx.py index a5ee0c408..f05490cbb 100644 --- a/freqtrade/exchange/ftx.py +++ b/freqtrade/exchange/ftx.py @@ -4,12 +4,12 @@ from typing import Any, Dict import ccxt -from freqtrade.exceptions import (DDosProtection, InsufficientFundsError, - InvalidOrderException, OperationalException, - TemporaryError) +from freqtrade.exceptions import (DDosProtection, InsufficientFundsError, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.exchange import Exchange from freqtrade.exchange.common import API_FETCH_ORDER_RETRY_COUNT, retrier + logger = logging.getLogger(__name__) diff --git a/freqtrade/exchange/kraken.py b/freqtrade/exchange/kraken.py index e6b5da88e..5b7aa5c5b 100644 --- a/freqtrade/exchange/kraken.py +++ b/freqtrade/exchange/kraken.py @@ -4,12 +4,12 @@ from typing import Any, Dict import ccxt -from freqtrade.exceptions import (DDosProtection, InsufficientFundsError, - InvalidOrderException, OperationalException, - TemporaryError) +from freqtrade.exceptions import (DDosProtection, InsufficientFundsError, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.exchange import Exchange from freqtrade.exchange.common import retrier + logger = logging.getLogger(__name__) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index eec09a17c..2bdd8da4b 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -30,6 +30,7 @@ from freqtrade.strategy.interface import IStrategy, SellType from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from freqtrade.wallets import Wallets + logger = logging.getLogger(__name__) diff --git a/freqtrade/loggers.py b/freqtrade/loggers.py index 8f5da9bee..169cd2610 100644 --- a/freqtrade/loggers.py +++ b/freqtrade/loggers.py @@ -1,12 +1,12 @@ import logging import sys from logging import Formatter -from logging.handlers import (BufferingHandler, RotatingFileHandler, - SysLogHandler) +from logging.handlers import BufferingHandler, RotatingFileHandler, SysLogHandler from typing import Any, Dict from freqtrade.exceptions import OperationalException + logger = logging.getLogger(__name__) LOGFORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' diff --git a/freqtrade/main.py b/freqtrade/main.py index dc26c2a46..5f8d5d19d 100755 --- a/freqtrade/main.py +++ b/freqtrade/main.py @@ -7,6 +7,7 @@ import logging import sys from typing import Any, List + # check min. python version if sys.version_info < (3, 6): sys.exit("Freqtrade requires Python version >= 3.6") diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 623f6cb8f..35c69db98 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -12,6 +12,7 @@ from typing.io import IO import numpy as np import rapidjson + logger = logging.getLogger(__name__) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 8d4a3a205..afdb4fc37 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -11,22 +11,21 @@ from typing import Any, Dict, List, NamedTuple, Optional, Tuple import arrow from pandas import DataFrame -from freqtrade.configuration import (TimeRange, remove_credentials, - validate_config_consistency) +from freqtrade.configuration import TimeRange, remove_credentials, validate_config_consistency from freqtrade.constants import DATETIME_PRINT_FORMAT from freqtrade.data import history from freqtrade.data.converter import trim_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes, timeframe_to_seconds -from freqtrade.optimize.optimize_reports import (generate_backtest_stats, - show_backtest_results, +from freqtrade.optimize.optimize_reports import (generate_backtest_stats, show_backtest_results, store_backtest_stats) from freqtrade.pairlist.pairlistmanager import PairListManager from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.strategy.interface import IStrategy, SellCheckTuple, SellType + logger = logging.getLogger(__name__) diff --git a/freqtrade/optimize/edge_cli.py b/freqtrade/optimize/edge_cli.py index be19688d8..a5f505bee 100644 --- a/freqtrade/optimize/edge_cli.py +++ b/freqtrade/optimize/edge_cli.py @@ -7,12 +7,12 @@ import logging from typing import Any, Dict from freqtrade import constants -from freqtrade.configuration import (TimeRange, remove_credentials, - validate_config_consistency) +from freqtrade.configuration import TimeRange, remove_credentials, validate_config_consistency from freqtrade.edge import Edge from freqtrade.optimize.optimize_reports import generate_edge_table from freqtrade.resolvers import ExchangeResolver, StrategyResolver + logger = logging.getLogger(__name__) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 37de3bc4b..49c49c3b8 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -21,8 +21,7 @@ import rapidjson import tabulate from colorama import Fore, Style from colorama import init as colorama_init -from joblib import (Parallel, cpu_count, delayed, dump, load, - wrap_non_picklable_objects) +from joblib import Parallel, cpu_count, delayed, dump, load, wrap_non_picklable_objects from pandas import DataFrame, isna, json_normalize from freqtrade.constants import DATETIME_PRINT_FORMAT @@ -33,12 +32,11 @@ from freqtrade.misc import plural, round_dict from freqtrade.optimize.backtesting import Backtesting # Import IHyperOpt and IHyperOptLoss to allow unpickling classes from these modules from freqtrade.optimize.hyperopt_interface import IHyperOpt # noqa: F401 -from freqtrade.optimize.hyperopt_loss_interface import \ - IHyperOptLoss # noqa: F401 -from freqtrade.resolvers.hyperopt_resolver import (HyperOptLossResolver, - HyperOptResolver) +from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss # noqa: F401 +from freqtrade.resolvers.hyperopt_resolver import HyperOptLossResolver, HyperOptResolver from freqtrade.strategy import IStrategy + # Suppress scikit-learn FutureWarnings from skopt with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=FutureWarning) diff --git a/freqtrade/optimize/hyperopt_interface.py b/freqtrade/optimize/hyperopt_interface.py index 65069b984..b8c44ed59 100644 --- a/freqtrade/optimize/hyperopt_interface.py +++ b/freqtrade/optimize/hyperopt_interface.py @@ -13,6 +13,7 @@ from freqtrade.exceptions import OperationalException from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import round_dict + logger = logging.getLogger(__name__) diff --git a/freqtrade/optimize/hyperopt_loss_sharpe.py b/freqtrade/optimize/hyperopt_loss_sharpe.py index 29377bdd5..232fb33b6 100644 --- a/freqtrade/optimize/hyperopt_loss_sharpe.py +++ b/freqtrade/optimize/hyperopt_loss_sharpe.py @@ -6,8 +6,8 @@ Hyperoptimization. """ from datetime import datetime -from pandas import DataFrame import numpy as np +from pandas import DataFrame from freqtrade.optimize.hyperopt import IHyperOptLoss diff --git a/freqtrade/optimize/hyperopt_loss_sortino.py b/freqtrade/optimize/hyperopt_loss_sortino.py index d470a9977..c0ff0773a 100644 --- a/freqtrade/optimize/hyperopt_loss_sortino.py +++ b/freqtrade/optimize/hyperopt_loss_sortino.py @@ -6,8 +6,8 @@ Hyperoptimization. """ from datetime import datetime -from pandas import DataFrame import numpy as np +from pandas import DataFrame from freqtrade.optimize.hyperopt import IHyperOptLoss diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 696e63b25..3db9a312a 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -4,14 +4,15 @@ from pathlib import Path from typing import Any, Dict, List, Union from arrow import Arrow -from pandas import DataFrame from numpy import int64 +from pandas import DataFrame from tabulate import tabulate from freqtrade.constants import DATETIME_PRINT_FORMAT, LAST_BT_RESULT_FN -from freqtrade.data.btanalysis import calculate_max_drawdown, calculate_market_change +from freqtrade.data.btanalysis import calculate_market_change, calculate_max_drawdown from freqtrade.misc import file_dump_json + logger = logging.getLogger(__name__) diff --git a/freqtrade/pairlist/AgeFilter.py b/freqtrade/pairlist/AgeFilter.py index 64f01cb61..19cf1c090 100644 --- a/freqtrade/pairlist/AgeFilter.py +++ b/freqtrade/pairlist/AgeFilter.py @@ -2,9 +2,10 @@ Minimum age (days listed) pair list filter """ import logging -import arrow from typing import Any, Dict +import arrow + from freqtrade.exceptions import OperationalException from freqtrade.misc import plural from freqtrade.pairlist.IPairList import IPairList diff --git a/freqtrade/pairlist/PrecisionFilter.py b/freqtrade/pairlist/PrecisionFilter.py index 3061d3d01..cf853397b 100644 --- a/freqtrade/pairlist/PrecisionFilter.py +++ b/freqtrade/pairlist/PrecisionFilter.py @@ -4,8 +4,9 @@ Precision pair list filter import logging from typing import Any, Dict -from freqtrade.pairlist.IPairList import IPairList from freqtrade.exceptions import OperationalException +from freqtrade.pairlist.IPairList import IPairList + logger = logging.getLogger(__name__) diff --git a/freqtrade/pairlist/pairlistmanager.py b/freqtrade/pairlist/pairlistmanager.py index 81e52768e..89bab99be 100644 --- a/freqtrade/pairlist/pairlistmanager.py +++ b/freqtrade/pairlist/pairlistmanager.py @@ -7,10 +7,10 @@ from typing import Dict, List from cachetools import TTLCache, cached +from freqtrade.constants import ListPairsWithTimeframes from freqtrade.exceptions import OperationalException from freqtrade.pairlist.IPairList import IPairList from freqtrade.resolvers import PairListResolver -from freqtrade.constants import ListPairsWithTimeframes logger = logging.getLogger(__name__) diff --git a/freqtrade/persistence/__init__.py b/freqtrade/persistence/__init__.py index 764856f2b..ee2e40267 100644 --- a/freqtrade/persistence/__init__.py +++ b/freqtrade/persistence/__init__.py @@ -1,4 +1,3 @@ # flake8: noqa: F401 -from freqtrade.persistence.models import (Order, Trade, clean_dry_run_db, - cleanup, init) +from freqtrade.persistence.models import Order, Trade, clean_dry_run_db, cleanup, init diff --git a/freqtrade/persistence/migrations.py b/freqtrade/persistence/migrations.py index 5089953b2..84f3ed7e6 100644 --- a/freqtrade/persistence/migrations.py +++ b/freqtrade/persistence/migrations.py @@ -3,6 +3,7 @@ from typing import List from sqlalchemy import inspect + logger = logging.getLogger(__name__) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 816e23fd3..8455a3b77 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -7,8 +7,8 @@ from decimal import Decimal from typing import Any, Dict, List, Optional import arrow -from sqlalchemy import (Boolean, Column, DateTime, Float, ForeignKey, Integer, - String, create_engine, desc, func, inspect) +from sqlalchemy import (Boolean, Column, DateTime, Float, ForeignKey, Integer, String, + create_engine, desc, func, inspect) from sqlalchemy.exc import NoSuchModuleError from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import Query, relationship @@ -21,6 +21,7 @@ from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.misc import safe_value_fallback from freqtrade.persistence.migrations import check_migrate + logger = logging.getLogger(__name__) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 270fe615b..a89732df5 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -5,11 +5,8 @@ from typing import Any, Dict, List import pandas as pd from freqtrade.configuration import TimeRange -from freqtrade.data.btanalysis import (calculate_max_drawdown, - combine_dataframes_with_mean, - create_cum_profit, - extract_trades_of_period, - load_trades) +from freqtrade.data.btanalysis import (calculate_max_drawdown, combine_dataframes_with_mean, + create_cum_profit, extract_trades_of_period, load_trades) from freqtrade.data.converter import trim_dataframe from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import load_data @@ -19,13 +16,14 @@ from freqtrade.misc import pair_to_filename from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.strategy import IStrategy + logger = logging.getLogger(__name__) try: - from plotly.subplots import make_subplots - from plotly.offline import plot import plotly.graph_objects as go + from plotly.offline import plot + from plotly.subplots import make_subplots except ImportError: logger.exception("Module plotly not found \n Please install using `pip3 install plotly`") exit(1) diff --git a/freqtrade/resolvers/__init__.py b/freqtrade/resolvers/__init__.py index 8f79349fe..b42ec4931 100644 --- a/freqtrade/resolvers/__init__.py +++ b/freqtrade/resolvers/__init__.py @@ -1,6 +1,12 @@ -from freqtrade.resolvers.iresolver import IResolver # noqa: F401 -from freqtrade.resolvers.exchange_resolver import ExchangeResolver # noqa: F401 +# flake8: noqa: F401 +# isort: off +from freqtrade.resolvers.iresolver import IResolver +from freqtrade.resolvers.exchange_resolver import ExchangeResolver +# isort: on # Don't import HyperoptResolver to avoid loading the whole Optimize tree -# from freqtrade.resolvers.hyperopt_resolver import HyperOptResolver # noqa: F401 -from freqtrade.resolvers.pairlist_resolver import PairListResolver # noqa: F401 -from freqtrade.resolvers.strategy_resolver import StrategyResolver # noqa: F401 +# from freqtrade.resolvers.hyperopt_resolver import HyperOptResolver +from freqtrade.resolvers.pairlist_resolver import PairListResolver +from freqtrade.resolvers.strategy_resolver import StrategyResolver + + + diff --git a/freqtrade/resolvers/exchange_resolver.py b/freqtrade/resolvers/exchange_resolver.py index 2b6a731a9..ed6715d15 100644 --- a/freqtrade/resolvers/exchange_resolver.py +++ b/freqtrade/resolvers/exchange_resolver.py @@ -3,10 +3,11 @@ This module loads custom exchanges """ import logging -from freqtrade.exchange import Exchange, MAP_EXCHANGE_CHILDCLASS import freqtrade.exchange as exchanges +from freqtrade.exchange import MAP_EXCHANGE_CHILDCLASS, Exchange from freqtrade.resolvers import IResolver + logger = logging.getLogger(__name__) diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 5dcf73d67..5e73498ae 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -13,6 +13,7 @@ from freqtrade.optimize.hyperopt_interface import IHyperOpt from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss from freqtrade.resolvers import IResolver + logger = logging.getLogger(__name__) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index b7d25ef2c..846c85a5c 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -11,6 +11,7 @@ from typing import Any, Dict, Iterator, List, Optional, Tuple, Type, Union from freqtrade.exceptions import OperationalException + logger = logging.getLogger(__name__) diff --git a/freqtrade/resolvers/pairlist_resolver.py b/freqtrade/resolvers/pairlist_resolver.py index 77db74084..4df5da37c 100644 --- a/freqtrade/resolvers/pairlist_resolver.py +++ b/freqtrade/resolvers/pairlist_resolver.py @@ -9,6 +9,7 @@ from pathlib import Path from freqtrade.pairlist.IPairList import IPairList from freqtrade.resolvers import IResolver + logger = logging.getLogger(__name__) diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index 121a04877..ead7424ec 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -11,12 +11,12 @@ from inspect import getfullargspec from pathlib import Path from typing import Any, Dict, Optional -from freqtrade.constants import (REQUIRED_ORDERTIF, REQUIRED_ORDERTYPES, - USERPATH_STRATEGIES) +from freqtrade.constants import REQUIRED_ORDERTIF, REQUIRED_ORDERTYPES, USERPATH_STRATEGIES from freqtrade.exceptions import OperationalException from freqtrade.resolvers import IResolver from freqtrade.strategy.interface import IStrategy + logger = logging.getLogger(__name__) diff --git a/freqtrade/rpc/__init__.py b/freqtrade/rpc/__init__.py index 31c854f82..88978519b 100644 --- a/freqtrade/rpc/__init__.py +++ b/freqtrade/rpc/__init__.py @@ -1,2 +1,3 @@ -from .rpc import RPC, RPCMessageType, RPCException # noqa -from .rpc_manager import RPCManager # noqa +# flake8: noqa: F401 +from .rpc import RPC, RPCException, RPCMessageType +from .rpc_manager import RPCManager diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index db22ce453..588062023 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -8,9 +8,8 @@ from arrow import Arrow from flask import Flask, jsonify, request from flask.json import JSONEncoder from flask_cors import CORS -from flask_jwt_extended import (JWTManager, create_access_token, - create_refresh_token, get_jwt_identity, - jwt_refresh_token_required, +from flask_jwt_extended import (JWTManager, create_access_token, create_refresh_token, + get_jwt_identity, jwt_refresh_token_required, verify_jwt_in_request_optional) from werkzeug.security import safe_str_cmp from werkzeug.serving import make_server @@ -21,6 +20,7 @@ from freqtrade.persistence import Trade from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.rpc.rpc import RPC, RPCException + logger = logging.getLogger(__name__) BASE_URI = "/api/v1" diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index b32af1596..e4ac65981 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -21,6 +21,7 @@ from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.state import State from freqtrade.strategy.interface import SellType + logger = logging.getLogger(__name__) diff --git a/freqtrade/rpc/rpc_manager.py b/freqtrade/rpc/rpc_manager.py index e54749369..b97a5357b 100644 --- a/freqtrade/rpc/rpc_manager.py +++ b/freqtrade/rpc/rpc_manager.py @@ -6,6 +6,7 @@ from typing import Any, Dict, List from freqtrade.rpc import RPC, RPCMessageType + logger = logging.getLogger(__name__) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 87e52980a..01d21c53c 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -5,9 +5,9 @@ This module manage Telegram communication """ import json import logging -import arrow from typing import Any, Callable, Dict +import arrow from tabulate import tabulate from telegram import ParseMode, ReplyKeyboardMarkup, Update from telegram.error import NetworkError, TelegramError @@ -18,6 +18,7 @@ from freqtrade.__init__ import __version__ from freqtrade.rpc import RPC, RPCException, RPCMessageType from freqtrade.rpc.fiat_convert import CryptoToFiatConverter + logger = logging.getLogger(__name__) logger.debug('Included module rpc.telegram ...') diff --git a/freqtrade/rpc/webhook.py b/freqtrade/rpc/webhook.py index f089550c3..21413f165 100644 --- a/freqtrade/rpc/webhook.py +++ b/freqtrade/rpc/webhook.py @@ -2,9 +2,9 @@ This module manages webhook communication """ import logging -from typing import Any, Dict +from typing import Any, Dict -from requests import post, RequestException +from requests import RequestException, post from freqtrade.rpc import RPC, RPCMessageType diff --git a/freqtrade/strategy/__init__.py b/freqtrade/strategy/__init__.py index d1510489e..662156ae9 100644 --- a/freqtrade/strategy/__init__.py +++ b/freqtrade/strategy/__init__.py @@ -1,5 +1,5 @@ # flake8: noqa: F401 -from freqtrade.exchange import (timeframe_to_minutes, timeframe_to_prev_date, - timeframe_to_seconds, timeframe_to_next_date, timeframe_to_msecs) +from freqtrade.exchange import (timeframe_to_minutes, timeframe_to_msecs, timeframe_to_next_date, + timeframe_to_prev_date, timeframe_to_seconds) from freqtrade.strategy.interface import IStrategy from freqtrade.strategy.strategy_helper import merge_informative_pair diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 92d9f6c48..04d7055ba 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -21,6 +21,7 @@ from freqtrade.persistence import Trade from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from freqtrade.wallets import Wallets + logger = logging.getLogger(__name__) diff --git a/freqtrade/strategy/strategy_helper.py b/freqtrade/strategy/strategy_helper.py index 1a5b2d0f8..ea0e234ec 100644 --- a/freqtrade/strategy/strategy_helper.py +++ b/freqtrade/strategy/strategy_helper.py @@ -1,4 +1,5 @@ import pandas as pd + from freqtrade.exchange import timeframe_to_minutes diff --git a/freqtrade/strategy/strategy_wrapper.py b/freqtrade/strategy/strategy_wrapper.py index 8fc548074..121189b68 100644 --- a/freqtrade/strategy/strategy_wrapper.py +++ b/freqtrade/strategy/strategy_wrapper.py @@ -2,6 +2,7 @@ import logging from freqtrade.exceptions import StrategyError + logger = logging.getLogger(__name__) diff --git a/freqtrade/templates/sample_hyperopt.py b/freqtrade/templates/sample_hyperopt.py index 0b6d030db..10743e911 100644 --- a/freqtrade/templates/sample_hyperopt.py +++ b/freqtrade/templates/sample_hyperopt.py @@ -1,4 +1,5 @@ # pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement +# isort: skip_file # --- Do not remove these libs --- from functools import reduce diff --git a/freqtrade/templates/sample_hyperopt_advanced.py b/freqtrade/templates/sample_hyperopt_advanced.py index 7f05c4430..52e397466 100644 --- a/freqtrade/templates/sample_hyperopt_advanced.py +++ b/freqtrade/templates/sample_hyperopt_advanced.py @@ -1,5 +1,5 @@ # pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement - +# isort: skip_file # --- Do not remove these libs --- from functools import reduce from typing import Any, Callable, Dict, List diff --git a/freqtrade/templates/sample_hyperopt_loss.py b/freqtrade/templates/sample_hyperopt_loss.py index 4173d97f5..59e6d814a 100644 --- a/freqtrade/templates/sample_hyperopt_loss.py +++ b/freqtrade/templates/sample_hyperopt_loss.py @@ -1,10 +1,11 @@ -from math import exp from datetime import datetime +from math import exp from pandas import DataFrame from freqtrade.optimize.hyperopt import IHyperOptLoss + # Define some constants: # set TARGET_TRADES to suit your number concurrent trades so its realistic diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index e269848d2..103f68a43 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -1,5 +1,5 @@ # pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement - +# isort: skip_file # --- Do not remove these libs --- import numpy as np # noqa import pandas as pd # noqa diff --git a/freqtrade/vendor/qtpylib/indicators.py b/freqtrade/vendor/qtpylib/indicators.py index e5a404862..4c0fb5b5c 100644 --- a/freqtrade/vendor/qtpylib/indicators.py +++ b/freqtrade/vendor/qtpylib/indicators.py @@ -19,14 +19,15 @@ # limitations under the License. # -import warnings import sys +import warnings from datetime import datetime, timedelta import numpy as np import pandas as pd from pandas.core.base import PandasObject + # ============================================= # check min, python version if sys.version_info < (3, 4): diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index ac08f337c..21a9466e1 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -10,6 +10,7 @@ import arrow from freqtrade.exchange import Exchange from freqtrade.persistence import Trade + logger = logging.getLogger(__name__) diff --git a/freqtrade/worker.py b/freqtrade/worker.py index 2fc206bd5..ec9331eef 100755 --- a/freqtrade/worker.py +++ b/freqtrade/worker.py @@ -15,6 +15,7 @@ from freqtrade.exceptions import OperationalException, TemporaryError from freqtrade.freqtradebot import FreqtradeBot from freqtrade.state import State + logger = logging.getLogger(__name__) diff --git a/scripts/rest_client.py b/scripts/rest_client.py index 95685fd64..8512777df 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -10,8 +10,8 @@ so it can be used as a standalone script. import argparse import inspect import json -import re import logging +import re import sys from pathlib import Path from urllib.parse import urlencode, urlparse, urlunparse @@ -20,6 +20,7 @@ import rapidjson import requests from requests.exceptions import ConnectionError + logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', diff --git a/setup.cfg b/setup.cfg index 57a0c42e7..be2cd450c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -11,6 +11,7 @@ exclude = [isort] line_length=100 multi_line_output=0 +lines_after_imports=2 [mypy] ignore_missing_imports = True From 9df366d9431b902a4061fa09dd9a230f0e28d196 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Sep 2020 19:43:15 +0200 Subject: [PATCH 3220/3421] Apply isort to tests --- tests/commands/test_build_config.py | 6 ++---- tests/commands/test_commands.py | 17 +++++++---------- tests/conftest.py | 5 +++-- tests/data/test_btanalysis.py | 15 +++++---------- tests/data/test_converter.py | 12 +++++------- tests/data/test_history.py | 21 ++++++++++----------- tests/edge/test_edge.py | 3 ++- tests/exchange/test_binance.py | 3 +-- tests/exchange/test_exchange.py | 15 ++++++--------- tests/exchange/test_ftx.py | 1 + tests/exchange/test_kraken.py | 1 + tests/optimize/__init__.py | 1 + tests/optimize/test_backtest_detail.py | 1 + tests/optimize/test_backtesting.py | 4 ++-- tests/optimize/test_hyperopt.py | 8 +++----- tests/optimize/test_optimize_reports.py | 16 ++++++---------- tests/rpc/test_rpc.py | 3 +-- tests/rpc/test_rpc_apiserver.py | 4 ++-- tests/rpc/test_rpc_manager.py | 6 +++--- tests/rpc/test_rpc_telegram.py | 5 ++--- tests/strategy/strats/legacy_strategy.py | 9 +++++---- tests/strategy/test_interface.py | 1 + tests/strategy/test_strategy_helpers.py | 2 +- tests/test_configuration.py | 12 +++++------- tests/test_directory_operations.py | 3 +-- tests/test_freqtradebot.py | 23 +++++++++-------------- tests/test_indicators.py | 3 ++- tests/test_main.py | 2 +- tests/test_misc.py | 5 ++--- tests/test_plotting.py | 11 ++++------- tests/test_talib.py | 2 +- 31 files changed, 96 insertions(+), 124 deletions(-) diff --git a/tests/commands/test_build_config.py b/tests/commands/test_build_config.py index 69b277e3b..291720f4b 100644 --- a/tests/commands/test_build_config.py +++ b/tests/commands/test_build_config.py @@ -4,10 +4,8 @@ from unittest.mock import MagicMock import pytest import rapidjson -from freqtrade.commands.build_config_commands import (ask_user_config, - ask_user_overwrite, - start_new_config, - validate_is_float, +from freqtrade.commands.build_config_commands import (ask_user_config, ask_user_overwrite, + start_new_config, validate_is_float, validate_is_int) from freqtrade.exceptions import OperationalException from tests.conftest import get_args, log_has_re diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 192e125f8..5b125697c 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -5,19 +5,16 @@ from unittest.mock import MagicMock, PropertyMock import arrow import pytest -from freqtrade.commands import (start_convert_data, start_create_userdir, - start_download_data, start_hyperopt_list, - start_hyperopt_show, start_list_data, - start_list_exchanges, start_list_hyperopts, - start_list_markets, start_list_strategies, - start_list_timeframes, start_new_hyperopt, - start_new_strategy, start_show_trades, - start_test_pairlist, start_trading) +from freqtrade.commands import (start_convert_data, start_create_userdir, start_download_data, + start_hyperopt_list, start_hyperopt_show, start_list_data, + start_list_exchanges, start_list_hyperopts, start_list_markets, + start_list_strategies, start_list_timeframes, start_new_hyperopt, + start_new_strategy, start_show_trades, start_test_pairlist, + start_trading) from freqtrade.configuration import setup_utils_configuration from freqtrade.exceptions import OperationalException from freqtrade.state import RunMode -from tests.conftest import (create_mock_trades, get_args, log_has, log_has_re, - patch_exchange, +from tests.conftest import (create_mock_trades, get_args, log_has, log_has_re, patch_exchange, patched_configuration_load_config_file) from tests.conftest_trades import MOCK_TRADE_COUNT diff --git a/tests/conftest.py b/tests/conftest.py index fe55c8784..dbd0df8f6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -22,8 +22,9 @@ from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import Trade from freqtrade.resolvers import ExchangeResolver from freqtrade.worker import Worker -from tests.conftest_trades import (mock_trade_1, mock_trade_2, mock_trade_3, - mock_trade_4, mock_trade_5, mock_trade_6) +from tests.conftest_trades import (mock_trade_1, mock_trade_2, mock_trade_3, mock_trade_4, + mock_trade_5, mock_trade_6) + logging.getLogger('').setLevel(logging.INFO) diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 564dae0b1..a6270e92d 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -7,16 +7,11 @@ from pandas import DataFrame, DateOffset, Timestamp, to_datetime from freqtrade.configuration import TimeRange from freqtrade.constants import LAST_BT_RESULT_FN -from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, - analyze_trade_parallelism, - calculate_market_change, - calculate_max_drawdown, - combine_dataframes_with_mean, - create_cum_profit, - extract_trades_of_period, - get_latest_backtest_filename, - load_backtest_data, load_trades, - load_trades_from_db) +from freqtrade.data.btanalysis import (BT_DATA_COLUMNS, analyze_trade_parallelism, + calculate_market_change, calculate_max_drawdown, + combine_dataframes_with_mean, create_cum_profit, + extract_trades_of_period, get_latest_backtest_filename, + load_backtest_data, load_trades, load_trades_from_db) from freqtrade.data.history import load_data, load_pair_history from freqtrade.optimize.backtesting import BacktestResult from tests.conftest import create_mock_trades diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index 4a580366f..fdba7900f 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -2,13 +2,11 @@ import logging from freqtrade.configuration.timerange import TimeRange -from freqtrade.data.converter import (convert_ohlcv_format, - convert_trades_format, - ohlcv_fill_up_missing_data, - ohlcv_to_dataframe, trades_dict_to_list, - trades_remove_duplicates, trim_dataframe) -from freqtrade.data.history import (get_timerange, load_data, - load_pair_history, validate_backtest_data) +from freqtrade.data.converter import (convert_ohlcv_format, convert_trades_format, + ohlcv_fill_up_missing_data, ohlcv_to_dataframe, + trades_dict_to_list, trades_remove_duplicates, trim_dataframe) +from freqtrade.data.history import (get_timerange, load_data, load_pair_history, + validate_backtest_data) from tests.conftest import log_has from tests.data.test_history import _backup_file, _clean_test_file diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 787f62a75..c8324cf0b 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -15,20 +15,19 @@ from freqtrade.configuration import TimeRange from freqtrade.constants import AVAILABLE_DATAHANDLERS from freqtrade.data.converter import ohlcv_to_dataframe from freqtrade.data.history.hdf5datahandler import HDF5DataHandler -from freqtrade.data.history.history_utils import ( - _download_pair_history, _download_trades_history, - _load_cached_data_for_updating, convert_trades_to_ohlcv, get_timerange, - load_data, load_pair_history, refresh_backtest_ohlcv_data, - refresh_backtest_trades_data, refresh_data, validate_backtest_data) -from freqtrade.data.history.idatahandler import (IDataHandler, get_datahandler, - get_datahandlerclass) -from freqtrade.data.history.jsondatahandler import (JsonDataHandler, - JsonGzDataHandler) +from freqtrade.data.history.history_utils import (_download_pair_history, _download_trades_history, + _load_cached_data_for_updating, + convert_trades_to_ohlcv, get_timerange, load_data, + load_pair_history, refresh_backtest_ohlcv_data, + refresh_backtest_trades_data, refresh_data, + validate_backtest_data) +from freqtrade.data.history.idatahandler import IDataHandler, get_datahandler, get_datahandlerclass +from freqtrade.data.history.jsondatahandler import JsonDataHandler, JsonGzDataHandler from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import file_dump_json from freqtrade.resolvers import StrategyResolver -from tests.conftest import (get_patched_exchange, log_has, log_has_re, - patch_exchange) +from tests.conftest import get_patched_exchange, log_has, log_has_re, patch_exchange + # Change this if modifying UNITTEST/BTC testdatafile _BTC_UNITTEST_LENGTH = 13681 diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index d35f7fcf6..f19590490 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -10,14 +10,15 @@ import numpy as np import pytest from pandas import DataFrame, to_datetime -from freqtrade.exceptions import OperationalException from freqtrade.data.converter import ohlcv_to_dataframe from freqtrade.edge import Edge, PairInfo +from freqtrade.exceptions import OperationalException from freqtrade.strategy.interface import SellType from tests.conftest import get_patched_freqtradebot, log_has from tests.optimize import (BTContainer, BTrade, _build_backtest_dataframe, _get_frame_time_from_offset) + # Cases to be tested: # 1) Open trade should be removed from the end # 2) Two complete trades within dataframe (with sell hit for all) diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index 72da708b4..f2b508761 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -4,8 +4,7 @@ from unittest.mock import MagicMock import ccxt import pytest -from freqtrade.exceptions import (DependencyException, InvalidOrderException, - OperationalException) +from freqtrade.exceptions import DependencyException, InvalidOrderException, OperationalException from tests.conftest import get_patched_exchange from tests.exchange.test_exchange import ccxt_exceptionhandlers diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index e0b97d157..7be9c77ac 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -9,21 +9,18 @@ import ccxt import pytest from pandas import DataFrame -from freqtrade.exceptions import (DDosProtection, DependencyException, - InvalidOrderException, OperationalException, - TemporaryError) +from freqtrade.exceptions import (DDosProtection, DependencyException, InvalidOrderException, + OperationalException, TemporaryError) from freqtrade.exchange import Binance, Exchange, Kraken -from freqtrade.exchange.common import (API_RETRY_COUNT, API_FETCH_ORDER_RETRY_COUNT, +from freqtrade.exchange.common import (API_FETCH_ORDER_RETRY_COUNT, API_RETRY_COUNT, calculate_backoff) -from freqtrade.exchange.exchange import (market_is_active, - timeframe_to_minutes, - timeframe_to_msecs, - timeframe_to_next_date, - timeframe_to_prev_date, +from freqtrade.exchange.exchange import (market_is_active, timeframe_to_minutes, timeframe_to_msecs, + timeframe_to_next_date, timeframe_to_prev_date, timeframe_to_seconds) from freqtrade.resolvers.exchange_resolver import ExchangeResolver from tests.conftest import get_patched_exchange, log_has, log_has_re + # Make sure to always keep one exchange here which is NOT subclassed!! EXCHANGES = ['bittrex', 'binance', 'kraken', 'ftx'] diff --git a/tests/exchange/test_ftx.py b/tests/exchange/test_ftx.py index 16789af2c..17cfb26fa 100644 --- a/tests/exchange/test_ftx.py +++ b/tests/exchange/test_ftx.py @@ -10,6 +10,7 @@ from tests.conftest import get_patched_exchange from .test_exchange import ccxt_exceptionhandlers + STOPLOSS_ORDERTYPE = 'stop' diff --git a/tests/exchange/test_kraken.py b/tests/exchange/test_kraken.py index 8f774a7ec..31b79a202 100644 --- a/tests/exchange/test_kraken.py +++ b/tests/exchange/test_kraken.py @@ -8,6 +8,7 @@ from freqtrade.exceptions import DependencyException, InvalidOrderException from tests.conftest import get_patched_exchange from tests.exchange.test_exchange import ccxt_exceptionhandlers + STOPLOSS_ORDERTYPE = 'stop-loss' diff --git a/tests/optimize/__init__.py b/tests/optimize/__init__.py index 8bc66f02c..306850ff6 100644 --- a/tests/optimize/__init__.py +++ b/tests/optimize/__init__.py @@ -6,6 +6,7 @@ from pandas import DataFrame from freqtrade.exchange import timeframe_to_minutes from freqtrade.strategy.interface import SellType + tests_start_time = arrow.get(2018, 10, 3) tests_timeframe = '1h' diff --git a/tests/optimize/test_backtest_detail.py b/tests/optimize/test_backtest_detail.py index f6ac95aeb..a5de64fe4 100644 --- a/tests/optimize/test_backtest_detail.py +++ b/tests/optimize/test_backtest_detail.py @@ -11,6 +11,7 @@ from tests.conftest import patch_exchange from tests.optimize import (BTContainer, BTrade, _build_backtest_dataframe, _get_frame_time_from_offset, tests_timeframe) + # Test 0: Sell with signal sell in candle 3 # Test with Stop-loss at 1% tc0 = BTContainer(data=[ diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 78a7130f9..45cbea68e 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -10,8 +10,7 @@ import pytest from arrow import Arrow from freqtrade import constants -from freqtrade.commands.optimize_commands import (setup_optimize_configuration, - start_backtesting) +from freqtrade.commands.optimize_commands import setup_optimize_configuration, start_backtesting from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import BT_DATA_COLUMNS, evaluate_result_multi @@ -26,6 +25,7 @@ from freqtrade.strategy.interface import SellType from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, patched_configuration_load_config_file) + ORDER_TYPES = [ { 'buy': 'limit', diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index d58b91209..bf8a720b5 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -1,9 +1,9 @@ # pragma pylint: disable=missing-docstring,W0212,C0103 import locale import logging +from copy import deepcopy from datetime import datetime from pathlib import Path -from copy import deepcopy from typing import Dict, List from unittest.mock import MagicMock, PropertyMock @@ -13,14 +13,12 @@ from arrow import Arrow from filelock import Timeout from freqtrade import constants -from freqtrade.commands.optimize_commands import (setup_optimize_configuration, - start_hyperopt) +from freqtrade.commands.optimize_commands import setup_optimize_configuration, start_hyperopt from freqtrade.data.history import load_data from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.optimize.default_hyperopt_loss import DefaultHyperOptLoss from freqtrade.optimize.hyperopt import Hyperopt -from freqtrade.resolvers.hyperopt_resolver import (HyperOptLossResolver, - HyperOptResolver) +from freqtrade.resolvers.hyperopt_resolver import HyperOptLossResolver, HyperOptResolver from freqtrade.state import RunMode from freqtrade.strategy.interface import SellType from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, diff --git a/tests/optimize/test_optimize_reports.py b/tests/optimize/test_optimize_reports.py index b484e4390..d04929164 100644 --- a/tests/optimize/test_optimize_reports.py +++ b/tests/optimize/test_optimize_reports.py @@ -5,21 +5,17 @@ from pathlib import Path import pandas as pd import pytest from arrow import Arrow + from freqtrade.configuration import TimeRange from freqtrade.constants import LAST_BT_RESULT_FN from freqtrade.data import history -from freqtrade.data.btanalysis import (get_latest_backtest_filename, - load_backtest_data) +from freqtrade.data.btanalysis import get_latest_backtest_filename, load_backtest_data from freqtrade.edge import PairInfo -from freqtrade.optimize.optimize_reports import (generate_backtest_stats, - generate_daily_stats, - generate_edge_table, - generate_pair_metrics, +from freqtrade.optimize.optimize_reports import (generate_backtest_stats, generate_daily_stats, + generate_edge_table, generate_pair_metrics, generate_sell_reason_stats, - generate_strategy_metrics, - store_backtest_stats, - text_table_bt_results, - text_table_sell_reason, + generate_strategy_metrics, store_backtest_stats, + text_table_bt_results, text_table_sell_reason, text_table_strategy) from freqtrade.resolvers.strategy_resolver import StrategyResolver from freqtrade.strategy.interface import SellType diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index c2dee6439..977dfbc20 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -13,8 +13,7 @@ from freqtrade.persistence import Trade from freqtrade.rpc import RPC, RPCException from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.state import State -from tests.conftest import (create_mock_trades, get_patched_freqtradebot, - patch_get_signal) +from tests.conftest import create_mock_trades, get_patched_freqtradebot, patch_get_signal # Functions for recurrent object patching diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 626586a4a..fea7b1c73 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -14,8 +14,8 @@ from freqtrade.loggers import setup_logging, setup_logging_pre from freqtrade.persistence import Trade from freqtrade.rpc.api_server import BASE_URI, ApiServer from freqtrade.state import State -from tests.conftest import (create_mock_trades, get_patched_freqtradebot, - log_has, patch_get_signal) +from tests.conftest import create_mock_trades, get_patched_freqtradebot, log_has, patch_get_signal + _TEST_USER = "FreqTrader" _TEST_PASS = "SuperSecurePassword1!" diff --git a/tests/rpc/test_rpc_manager.py b/tests/rpc/test_rpc_manager.py index e8d0f648e..4b715fc37 100644 --- a/tests/rpc/test_rpc_manager.py +++ b/tests/rpc/test_rpc_manager.py @@ -1,10 +1,10 @@ # pragma pylint: disable=missing-docstring, C0103 -import time import logging +import time from unittest.mock import MagicMock -from freqtrade.rpc import RPCMessageType, RPCManager -from tests.conftest import log_has, get_patched_freqtradebot +from freqtrade.rpc import RPCManager, RPCMessageType +from tests.conftest import get_patched_freqtradebot, log_has def test__init__(mocker, default_conf) -> None: diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 3958a825a..aee88104b 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -23,9 +23,8 @@ from freqtrade.rpc import RPCMessageType from freqtrade.rpc.telegram import Telegram, authorized_only from freqtrade.state import State from freqtrade.strategy.interface import SellType -from tests.conftest import (create_mock_trades, get_patched_freqtradebot, - log_has, patch_exchange, patch_get_signal, - patch_whitelist) +from tests.conftest import (create_mock_trades, get_patched_freqtradebot, log_has, patch_exchange, + patch_get_signal, patch_whitelist) class DummyCls(Telegram): diff --git a/tests/strategy/strats/legacy_strategy.py b/tests/strategy/strats/legacy_strategy.py index 9cbce0ad5..1e7bb5e1e 100644 --- a/tests/strategy/strats/legacy_strategy.py +++ b/tests/strategy/strats/legacy_strategy.py @@ -1,12 +1,13 @@ # --- Do not remove these libs --- -from freqtrade.strategy.interface import IStrategy -from pandas import DataFrame -# -------------------------------- - # Add your lib to import here import talib.abstract as ta +from pandas import DataFrame +from freqtrade.strategy.interface import IStrategy + + +# -------------------------------- # This class is a sample. Feel free to customize it. class TestStrategyLegacy(IStrategy): diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index f1b5d0244..729b14f7b 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -19,6 +19,7 @@ from tests.conftest import log_has, log_has_re from .strats.default_strategy import DefaultStrategy + # Avoid to reinit the same object again and again _STRATEGY = DefaultStrategy(config={}) _STRATEGY.dp = DataProvider({}, None, None) diff --git a/tests/strategy/test_strategy_helpers.py b/tests/strategy/test_strategy_helpers.py index 4b29bf304..1d3e80d24 100644 --- a/tests/strategy/test_strategy_helpers.py +++ b/tests/strategy/test_strategy_helpers.py @@ -1,5 +1,5 @@ -import pandas as pd import numpy as np +import pandas as pd from freqtrade.strategy import merge_informative_pair, timeframe_to_minutes diff --git a/tests/test_configuration.py b/tests/test_configuration.py index 4428fe240..7d6c81f74 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -11,20 +11,18 @@ import pytest from jsonschema import ValidationError from freqtrade.commands import Arguments -from freqtrade.configuration import (Configuration, check_exchange, - remove_credentials, +from freqtrade.configuration import (Configuration, check_exchange, remove_credentials, validate_config_consistency) from freqtrade.configuration.config_validation import validate_config_schema -from freqtrade.configuration.deprecated_settings import ( - check_conflicting_settings, process_deprecated_setting, - process_temporary_deprecated_settings) +from freqtrade.configuration.deprecated_settings import (check_conflicting_settings, + process_deprecated_setting, + process_temporary_deprecated_settings) from freqtrade.configuration.load_config import load_config_file, log_config_error_range from freqtrade.constants import DEFAULT_DB_DRYRUN_URL, DEFAULT_DB_PROD_URL from freqtrade.exceptions import OperationalException from freqtrade.loggers import _set_loggers, setup_logging, setup_logging_pre from freqtrade.state import RunMode -from tests.conftest import (log_has, log_has_re, - patched_configuration_load_config_file) +from tests.conftest import log_has, log_has_re, patched_configuration_load_config_file @pytest.fixture(scope="function") diff --git a/tests/test_directory_operations.py b/tests/test_directory_operations.py index 71c91549f..a8058c514 100644 --- a/tests/test_directory_operations.py +++ b/tests/test_directory_operations.py @@ -4,8 +4,7 @@ from unittest.mock import MagicMock import pytest -from freqtrade.configuration.directory_operations import (copy_sample_files, - create_datadir, +from freqtrade.configuration.directory_operations import (copy_sample_files, create_datadir, create_userdata_dir) from freqtrade.exceptions import OperationalException from tests.conftest import log_has, log_has_re diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 0c12c05bb..8af3e12a7 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -10,12 +10,10 @@ from unittest.mock import ANY, MagicMock, PropertyMock import arrow import pytest -from freqtrade.constants import (CANCEL_REASON, MATH_CLOSE_PREC, - UNLIMITED_STAKE_AMOUNT) -from freqtrade.exceptions import (DependencyException, ExchangeError, - InsufficientFundsError, - InvalidOrderException, OperationalException, - PricingError, TemporaryError) +from freqtrade.constants import CANCEL_REASON, MATH_CLOSE_PREC, UNLIMITED_STAKE_AMOUNT +from freqtrade.exceptions import (DependencyException, ExchangeError, InsufficientFundsError, + InvalidOrderException, OperationalException, PricingError, + TemporaryError) from freqtrade.freqtradebot import FreqtradeBot from freqtrade.persistence import Trade from freqtrade.persistence.models import Order @@ -23,15 +21,12 @@ from freqtrade.rpc import RPCMessageType from freqtrade.state import RunMode, State from freqtrade.strategy.interface import SellCheckTuple, SellType from freqtrade.worker import Worker -from tests.conftest import (create_mock_trades, get_patched_freqtradebot, - get_patched_worker, log_has, log_has_re, - patch_edge, patch_exchange, patch_get_signal, +from tests.conftest import (create_mock_trades, get_patched_freqtradebot, get_patched_worker, + log_has, log_has_re, patch_edge, patch_exchange, patch_get_signal, patch_wallet, patch_whitelist) -from tests.conftest_trades import (MOCK_TRADE_COUNT, mock_order_1, - mock_order_2, mock_order_2_sell, - mock_order_3, mock_order_3_sell, - mock_order_4, mock_order_5_stoploss, - mock_order_6_sell) +from tests.conftest_trades import (MOCK_TRADE_COUNT, mock_order_1, mock_order_2, mock_order_2_sell, + mock_order_3, mock_order_3_sell, mock_order_4, + mock_order_5_stoploss, mock_order_6_sell) def patch_RPCManager(mocker) -> MagicMock: diff --git a/tests/test_indicators.py b/tests/test_indicators.py index 2f9bdc0f9..8d02330a1 100644 --- a/tests/test_indicators.py +++ b/tests/test_indicators.py @@ -1,7 +1,8 @@ -import freqtrade.vendor.qtpylib.indicators as qtpylib import numpy as np import pandas as pd +import freqtrade.vendor.qtpylib.indicators as qtpylib + def test_crossed_numpy_types(): """ diff --git a/tests/test_main.py b/tests/test_main.py index dd0c877e8..9106d4c12 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,11 +1,11 @@ # pragma pylint: disable=missing-docstring from copy import deepcopy +from pathlib import Path from unittest.mock import MagicMock, PropertyMock import pytest -from pathlib import Path from freqtrade.commands import Arguments from freqtrade.exceptions import FreqtradeException, OperationalException from freqtrade.freqtradebot import FreqtradeBot diff --git a/tests/test_misc.py b/tests/test_misc.py index a185cbba4..6dcd9fbe5 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -7,9 +7,8 @@ from unittest.mock import MagicMock import pytest from freqtrade.data.converter import ohlcv_to_dataframe -from freqtrade.misc import (datesarray_to_datetimearray, file_dump_json, - file_load_json, format_ms_time, pair_to_filename, - plural, render_template, +from freqtrade.misc import (datesarray_to_datetimearray, file_dump_json, file_load_json, + format_ms_time, pair_to_filename, plural, render_template, render_template_with_fallback, safe_value_fallback, safe_value_fallback2, shorten_date) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index bcababbf1..401f66b60 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -13,13 +13,10 @@ from freqtrade.configuration import TimeRange from freqtrade.data import history from freqtrade.data.btanalysis import create_cum_profit, load_backtest_data from freqtrade.exceptions import OperationalException -from freqtrade.plot.plotting import (add_indicators, add_profit, - create_plotconfig, - generate_candlestick_graph, - generate_plot_filename, - generate_profit_graph, init_plotscript, - load_and_plot_trades, plot_profit, - plot_trades, store_plot_file) +from freqtrade.plot.plotting import (add_indicators, add_profit, create_plotconfig, + generate_candlestick_graph, generate_plot_filename, + generate_profit_graph, init_plotscript, load_and_plot_trades, + plot_profit, plot_trades, store_plot_file) from freqtrade.resolvers import StrategyResolver from tests.conftest import get_args, log_has, log_has_re, patch_exchange diff --git a/tests/test_talib.py b/tests/test_talib.py index 4effc129b..f526fdd4d 100644 --- a/tests/test_talib.py +++ b/tests/test_talib.py @@ -1,5 +1,5 @@ -import talib.abstract as ta import pandas as pd +import talib.abstract as ta def test_talib_bollingerbands_near_zero_values(): From ce228f19dccda1f2604e9e8b575b314d39615dc4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Sep 2020 19:43:32 +0200 Subject: [PATCH 3221/3421] Apply isort to setup.py --- setup.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.py b/setup.py index 88d754668..c17722ade 100644 --- a/setup.py +++ b/setup.py @@ -1,12 +1,15 @@ from sys import version_info + from setuptools import setup + if version_info.major == 3 and version_info.minor < 6 or \ version_info.major < 3: print('Your Python interpreter must be 3.6 or greater!') exit(1) from pathlib import Path # noqa: E402 + from freqtrade import __version__ # noqa: E402 From 0ea56548e4a435b403fb7ba48c48c7f433a0e4d4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Sep 2020 19:50:22 +0200 Subject: [PATCH 3222/3421] Try fix random test failure --- tests/rpc/test_rpc_telegram.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 3958a825a..400e33c6b 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1139,9 +1139,9 @@ def test_telegram_logs(default_conf, update, mocker) -> None: context = MagicMock() context.args = [] telegram._logs(update=update, context=context) - # Called at least 3 times. Exact times will change with unrelated changes to setup messages + # Called at least 2 times. Exact times will change with unrelated changes to setup messages # Therefore we don't test for this explicitly. - assert msg_mock.call_count > 3 + assert msg_mock.call_count >= 2 def test_edge_disabled(default_conf, update, mocker) -> None: From ace28792657ece704189e04e4c06b5079dfa9d2a Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Sep 2020 19:53:29 +0200 Subject: [PATCH 3223/3421] Don't run isort on windows - once is enough --- .github/workflows/ci.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 19c5479a4..e6c6521eb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -160,10 +160,6 @@ jobs: run: | flake8 - - name: Sort imports (isort) - run: | - isort --check . - - name: Mypy run: | mypy freqtrade scripts From 2be8e8070ae1e4fd7874c72c01bd05ac13eabb7c Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 28 Sep 2020 20:01:59 +0200 Subject: [PATCH 3224/3421] Add Python 3.8 to setup.py classifiers --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index c17722ade..9b57e8d2c 100644 --- a/setup.py +++ b/setup.py @@ -111,6 +111,7 @@ setup(name='freqtrade', 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', 'Operating System :: MacOS', 'Operating System :: Unix', 'Topic :: Office/Business :: Financial :: Investment', From 9dfbc1a7ff1b1dfa8263714f028ba6fa3b9d572c Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 12 Jun 2020 19:32:44 +0200 Subject: [PATCH 3225/3421] Add analyzed_history endpoint --- freqtrade/rpc/api_server.py | 14 ++++++++++++++ freqtrade/rpc/rpc.py | 10 ++++++++++ 2 files changed, 24 insertions(+) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 588062023..7fe178288 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -212,6 +212,8 @@ class ApiServer(RPC): view_func=self._trades, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/trades/', 'trades_delete', view_func=self._trades_delete, methods=['DELETE']) + self.app.add_url_rule(f'{BASE_URI}/pair_history', 'pair_history', + view_func=self._analysed_history, methods=['GET']) # Combined actions and infos self.app.add_url_rule(f'{BASE_URI}/blacklist', 'blacklist', view_func=self._blacklist, methods=['GET', 'POST']) @@ -500,3 +502,15 @@ class ApiServer(RPC): tradeid = request.json.get("tradeid") results = self._rpc_forcesell(tradeid) return self.rest_dump(results) + + @require_login + @rpc_catch_errors + def _analysed_history(self): + """ + Handler for /pair_history. + """ + pair = request.args.get("pair") + timeframe = request.args.get("timeframe") + + results = self._rpc_analysed_history(pair, timeframe) + return self.rest_dump(results) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index e4ac65981..621971952 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -653,3 +653,13 @@ class RPC: if not self._freqtrade.edge: raise RPCException('Edge is not enabled.') return self._freqtrade.edge.accepted_pairs() + + def _rpc_analysed_history(self, pair, timeframe): + + data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe(pair, timeframe) + return { + 'columns': data.columns, + 'data': data.values.tolist(), + 'length': len(data), + 'last_analyzed': last_analyzed, + } From a38b33cd9cbe6236d9dd5793f7c173d50d6bc83f Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 15 Jun 2020 07:53:23 +0200 Subject: [PATCH 3226/3421] Support limiting analyzed history --- freqtrade/rpc/api_server.py | 17 ++++++++++++----- freqtrade/rpc/rpc.py | 4 +++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 7fe178288..78f5c5046 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -26,15 +26,15 @@ logger = logging.getLogger(__name__) BASE_URI = "/api/v1" -class ArrowJSONEncoder(JSONEncoder): +class FTJSONEncoder(JSONEncoder): def default(self, obj): try: if isinstance(obj, Arrow): return obj.for_json() - elif isinstance(obj, date): - return obj.strftime("%Y-%m-%d") elif isinstance(obj, datetime): return obj.strftime(DATETIME_PRINT_FORMAT) + elif isinstance(obj, date): + return obj.strftime("%Y-%m-%d") iterable = iter(obj) except TypeError: pass @@ -108,7 +108,7 @@ class ApiServer(RPC): 'jwt_secret_key', 'super-secret') self.jwt = JWTManager(self.app) - self.app.json_encoder = ArrowJSONEncoder + self.app.json_encoder = FTJSONEncoder self.app.teardown_appcontext(shutdown_session) @@ -508,9 +508,16 @@ class ApiServer(RPC): def _analysed_history(self): """ Handler for /pair_history. + Takes the following get arguments: + get: + parameters: + - pair: Pair + - timeframe: Timeframe to get data for (should be aligned to strategy.timeframe) + - limit: Limit return length to the latest X candles """ pair = request.args.get("pair") timeframe = request.args.get("timeframe") + limit = request.args.get("limit") - results = self._rpc_analysed_history(pair, timeframe) + results = self._rpc_analysed_history(pair, timeframe, limit) return self.rest_dump(results) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 621971952..a6215a892 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -654,9 +654,11 @@ class RPC: raise RPCException('Edge is not enabled.') return self._freqtrade.edge.accepted_pairs() - def _rpc_analysed_history(self, pair, timeframe): + def _rpc_analysed_history(self, pair, timeframe, limit): data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe(pair, timeframe) + if limit: + data = data.iloc[:-limit] return { 'columns': data.columns, 'data': data.values.tolist(), From 133ca9c770181387a9f9020953564171f996d03c Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 15 Jun 2020 08:47:18 +0200 Subject: [PATCH 3227/3421] Convert types to support valid json --- freqtrade/rpc/api_server.py | 2 +- freqtrade/rpc/rpc.py | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 78f5c5046..a04452afd 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -517,7 +517,7 @@ class ApiServer(RPC): """ pair = request.args.get("pair") timeframe = request.args.get("timeframe") - limit = request.args.get("limit") + limit = request.args.get("limit", type=int) results = self._rpc_analysed_history(pair, timeframe, limit) return self.rest_dump(results) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index a6215a892..4b83a3da6 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -9,7 +9,7 @@ from math import isnan from typing import Any, Dict, List, Optional, Tuple, Union import arrow -from numpy import NAN, mean +from numpy import NAN, mean, int64 from freqtrade.constants import CANCEL_REASON from freqtrade.exceptions import ExchangeError, PricingError @@ -656,12 +656,14 @@ class RPC: def _rpc_analysed_history(self, pair, timeframe, limit): - data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe(pair, timeframe) + _data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe(pair, timeframe) if limit: - data = data.iloc[:-limit] + _data = _data.iloc[-limit:] + _data = _data.replace({NAN: None}) + _data['date'] = _data['date'].astype(int64) // 1000 // 1000 return { - 'columns': data.columns, - 'data': data.values.tolist(), - 'length': len(data), + 'columns': list(_data.columns), + 'data': _data.values.tolist(), + 'length': len(_data), 'last_analyzed': last_analyzed, } From d528c44974a318d5b40176a45c0d54c7255587a7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 15 Jun 2020 08:47:43 +0200 Subject: [PATCH 3228/3421] Add test for pair_history --- tests/rpc/test_rpc_apiserver.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index fea7b1c73..bb13531b5 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -811,3 +811,27 @@ def test_api_forcesell(botclient, mocker, ticker, fee, markets): data='{"tradeid": "1"}') assert_response(rc) assert rc.json == {'result': 'Created sell order for trade 1.'} + + +def test_api_pair_history(botclient, ohlcv_history): + ftbot, client = botclient + timeframe = '5m' + amount = 2 + ohlcv_history['sma'] = ohlcv_history['close'].rolling(2).mean() + ftbot.dataprovider._set_cached_df("XRP/BTC", timeframe, ohlcv_history) + + rc = client_get(client, + f"{BASE_URI}/pair_history?limit={amount}&pair=XRP%2FBTC&timeframe={timeframe}") + assert_response(rc) + assert 'columns' in rc.json + assert isinstance(rc.json['columns'], list) + assert rc.json['columns'] == ['date', 'open', 'high', 'low', 'close', 'volume', 'sma'] + + assert 'data' in rc.json + assert len(rc.json['data']) == amount + + assert (rc.json['data'] == + [[1511686200000, 8.794e-05, 8.948e-05, 8.794e-05, 8.88e-05, 0.0877869, None], + [1511686500000, 8.88e-05, 8.942e-05, 8.88e-05, + 8.893e-05, 0.05874751, 8.886500000000001e-05] + ]) From 677078350f1fcdabdccc5162ad99e8f801808db5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 23 Jun 2020 06:49:53 +0200 Subject: [PATCH 3229/3421] Add plot_config endpoint --- freqtrade/rpc/api_server.py | 10 ++++++++++ freqtrade/rpc/rpc.py | 6 +++++- tests/rpc/test_rpc_apiserver.py | 15 +++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index a04452afd..5f84713f2 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -214,6 +214,8 @@ class ApiServer(RPC): view_func=self._trades_delete, methods=['DELETE']) self.app.add_url_rule(f'{BASE_URI}/pair_history', 'pair_history', view_func=self._analysed_history, methods=['GET']) + self.app.add_url_rule(f'{BASE_URI}/plot_config', 'plot_config', + view_func=self._plot_config, methods=['GET']) # Combined actions and infos self.app.add_url_rule(f'{BASE_URI}/blacklist', 'blacklist', view_func=self._blacklist, methods=['GET', 'POST']) @@ -521,3 +523,11 @@ class ApiServer(RPC): results = self._rpc_analysed_history(pair, timeframe, limit) return self.rest_dump(results) + + @require_login + @rpc_catch_errors + def _plot_config(self): + """ + Handler for /plot_config. + """ + return self.rest_dump(self._rpc_plot_config()) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 4b83a3da6..e8ec099e5 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -654,7 +654,7 @@ class RPC: raise RPCException('Edge is not enabled.') return self._freqtrade.edge.accepted_pairs() - def _rpc_analysed_history(self, pair, timeframe, limit): + def _rpc_analysed_history(self, pair, timeframe, limit) -> Dict[str, Any]: _data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe(pair, timeframe) if limit: @@ -667,3 +667,7 @@ class RPC: 'length': len(_data), 'last_analyzed': last_analyzed, } + + def _rpc_plot_config(self) -> Dict[str, Any]: + + return self._freqtrade.strategy.plot_config diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index bb13531b5..9c814e1ac 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -835,3 +835,18 @@ def test_api_pair_history(botclient, ohlcv_history): [1511686500000, 8.88e-05, 8.942e-05, 8.88e-05, 8.893e-05, 0.05874751, 8.886500000000001e-05] ]) + + +def test_api_plot_config(botclient): + ftbot, client = botclient + + rc = client_get(client, f"{BASE_URI}/plot_config") + assert_response(rc) + assert rc.json == {} + + ftbot.strategy.plot_config = {'main_plot': {'sma': {}}, + 'subplots': {'RSI': {'rsi': {'color': 'red'}}}} + rc = client_get(client, f"{BASE_URI}/plot_config") + assert_response(rc) + assert rc.json == ftbot.strategy.plot_config + assert isinstance(rc.json['main_plot'], dict) From f5dc10e4aeafb50634cdaa8d476845fe32f8fc5a Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jul 2020 07:10:56 +0200 Subject: [PATCH 3230/3421] Add pair_history endpoint --- freqtrade/rpc/api_server.py | 29 ++++++++++++++++++++-- freqtrade/rpc/rpc.py | 44 +++++++++++++++++++++++++-------- tests/rpc/test_rpc_apiserver.py | 6 +++-- 3 files changed, 65 insertions(+), 14 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 5f84713f2..081dcd623 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -212,6 +212,8 @@ class ApiServer(RPC): view_func=self._trades, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/trades/', 'trades_delete', view_func=self._trades_delete, methods=['DELETE']) + self.app.add_url_rule(f'{BASE_URI}/pair_candles', 'pair_candles', + view_func=self._analysed_candles, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/pair_history', 'pair_history', view_func=self._analysed_history, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/plot_config', 'plot_config', @@ -507,9 +509,10 @@ class ApiServer(RPC): @require_login @rpc_catch_errors - def _analysed_history(self): + def _analysed_candles(self): """ Handler for /pair_history. + Returns the dataframe the bot is using during live/dry operations. Takes the following get arguments: get: parameters: @@ -521,9 +524,31 @@ class ApiServer(RPC): timeframe = request.args.get("timeframe") limit = request.args.get("limit", type=int) - results = self._rpc_analysed_history(pair, timeframe, limit) + results = self._analysed_dataframe(pair, timeframe, limit) return self.rest_dump(results) + @require_login + @rpc_catch_errors + def _analysed_history(self): + """ + Handler for /pair_history. + Returns the dataframe of a given timerange + Takes the following get arguments: + get: + parameters: + - pair: Pair + - timeframe: Timeframe to get data for (should be aligned to strategy.timeframe) + - timerange: timerange in the format YYYYMMDD-YYYYMMDD (YYYYMMDD- or (-YYYYMMDD)) + are als possible. If omitted uses all available data. + """ + pair = request.args.get("pair") + timeframe = request.args.get("timeframe") + timerange = request.args.get("timerange") + + results = self._rpc_analysed_history_full(pair, timeframe, timerange) + return self.rest_dump(results) + + @require_login @rpc_catch_errors def _plot_config(self): diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index e8ec099e5..c9d589c31 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -9,9 +9,11 @@ from math import isnan from typing import Any, Dict, List, Optional, Tuple, Union import arrow -from numpy import NAN, mean, int64 +from numpy import NAN, int64, mean +from freqtrade.configuration.timerange import TimeRange from freqtrade.constants import CANCEL_REASON +from freqtrade.data.history import load_data from freqtrade.exceptions import ExchangeError, PricingError from freqtrade.exchange import timeframe_to_minutes, timeframe_to_msecs from freqtrade.loggers import bufferHandler @@ -654,19 +656,41 @@ class RPC: raise RPCException('Edge is not enabled.') return self._freqtrade.edge.accepted_pairs() - def _rpc_analysed_history(self, pair, timeframe, limit) -> Dict[str, Any]: + def _convert_dataframe_to_dict(self, pair, dataframe, last_analyzed): + dataframe = dataframe.replace({NAN: None}) + dataframe['date'] = dataframe['date'].astype(int64) // 1000 // 1000 + return { + 'pair': pair, + 'columns': list(dataframe.columns), + 'data': dataframe.values.tolist(), + 'length': len(dataframe), + 'last_analyzed': last_analyzed, + } + + def _analysed_dataframe(self, pair: str, timeframe: str, limit: int) -> Dict[str, Any]: _data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe(pair, timeframe) if limit: _data = _data.iloc[-limit:] - _data = _data.replace({NAN: None}) - _data['date'] = _data['date'].astype(int64) // 1000 // 1000 - return { - 'columns': list(_data.columns), - 'data': _data.values.tolist(), - 'length': len(_data), - 'last_analyzed': last_analyzed, - } + return self._convert_dataframe_to_dict(pair, _data, last_analyzed) + + def _rpc_analysed_history_full(self, pair: str, timeframe: str, + timerange: str) -> Dict[str, Any]: + timerange = TimeRange.parse_timerange(None if self.config.get( + 'timerange') is None else str(self.config.get('timerange'))) + + _data = load_data( + datadir=self._freqtrade.config.get("datadir"), + pairs=[pair], + timeframe=self._freqtrade.config.get('timeframe', '5m'), + timerange=timerange, + data_format=self._freqtrade.config.get('dataformat_ohlcv', 'json'), + ) + from freqtrade.resolvers.strategy_resolver import StrategyResolver + strategy = StrategyResolver.load_strategy(self._freqtrade.config) + df_analyzed = strategy.analyze_ticker(_data, {'pair': pair}) + + return self._convert_dataframe_to_dict(pair, df_analyzed, arrow.Arrow.utcnow().datetime) def _rpc_plot_config(self) -> Dict[str, Any]: diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 9c814e1ac..91870aa6b 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -813,7 +813,7 @@ def test_api_forcesell(botclient, mocker, ticker, fee, markets): assert rc.json == {'result': 'Created sell order for trade 1.'} -def test_api_pair_history(botclient, ohlcv_history): +def test_api_pair_candles(botclient, ohlcv_history): ftbot, client = botclient timeframe = '5m' amount = 2 @@ -821,11 +821,13 @@ def test_api_pair_history(botclient, ohlcv_history): ftbot.dataprovider._set_cached_df("XRP/BTC", timeframe, ohlcv_history) rc = client_get(client, - f"{BASE_URI}/pair_history?limit={amount}&pair=XRP%2FBTC&timeframe={timeframe}") + f"{BASE_URI}/pair_candles?limit={amount}&pair=XRP%2FBTC&timeframe={timeframe}") assert_response(rc) assert 'columns' in rc.json assert isinstance(rc.json['columns'], list) assert rc.json['columns'] == ['date', 'open', 'high', 'low', 'close', 'volume', 'sma'] + assert 'pair' in rc.json + assert rc.json['pair'] == 'XRP/BTC' assert 'data' in rc.json assert len(rc.json['data']) == amount From 482f1faa88b9c0545185870e9b03b9d3dc149d4f Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 2 Jul 2020 08:39:07 +0200 Subject: [PATCH 3231/3421] Don't fail if no buy-signal is present --- freqtrade/rpc/rpc.py | 15 +++++++++++---- tests/rpc/test_rpc_apiserver.py | 13 ++++++++++--- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index c9d589c31..ef44aeee2 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -657,8 +657,16 @@ class RPC: return self._freqtrade.edge.accepted_pairs() def _convert_dataframe_to_dict(self, pair, dataframe, last_analyzed): - dataframe = dataframe.replace({NAN: None}) dataframe['date'] = dataframe['date'].astype(int64) // 1000 // 1000 + # Move open to seperate column when signal for easy plotting + if 'buy' in dataframe.columns: + buy_mask = (dataframe['buy'] == 1) + dataframe.loc[buy_mask, '_buy_signal_open'] = dataframe.loc[buy_mask, 'open'] + if 'sell' in dataframe.columns: + sell_mask = (dataframe['sell'] == 1) + dataframe.loc[sell_mask, '_sell_signal_open'] = dataframe.loc[sell_mask, 'open'] + dataframe = dataframe.replace({NAN: None}) + return { 'pair': pair, 'columns': list(dataframe.columns), @@ -676,8 +684,7 @@ class RPC: def _rpc_analysed_history_full(self, pair: str, timeframe: str, timerange: str) -> Dict[str, Any]: - timerange = TimeRange.parse_timerange(None if self.config.get( - 'timerange') is None else str(self.config.get('timerange'))) + timerange = TimeRange.parse_timerange(timerange) _data = load_data( datadir=self._freqtrade.config.get("datadir"), @@ -688,7 +695,7 @@ class RPC: ) from freqtrade.resolvers.strategy_resolver import StrategyResolver strategy = StrategyResolver.load_strategy(self._freqtrade.config) - df_analyzed = strategy.analyze_ticker(_data, {'pair': pair}) + df_analyzed = strategy.analyze_ticker(_data[pair], {'pair': pair}) return self._convert_dataframe_to_dict(pair, df_analyzed, arrow.Arrow.utcnow().datetime) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 91870aa6b..d084bd64a 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -818,6 +818,10 @@ def test_api_pair_candles(botclient, ohlcv_history): timeframe = '5m' amount = 2 ohlcv_history['sma'] = ohlcv_history['close'].rolling(2).mean() + ohlcv_history['buy'] = 0 + ohlcv_history.iloc[1]['buy'] = 1 + ohlcv_history['sell'] = 0 + ftbot.dataprovider._set_cached_df("XRP/BTC", timeframe, ohlcv_history) rc = client_get(client, @@ -825,7 +829,9 @@ def test_api_pair_candles(botclient, ohlcv_history): assert_response(rc) assert 'columns' in rc.json assert isinstance(rc.json['columns'], list) - assert rc.json['columns'] == ['date', 'open', 'high', 'low', 'close', 'volume', 'sma'] + assert rc.json['columns'] == ['date', 'open', 'high', + 'low', 'close', 'volume', 'sma', 'buy', 'sell', + '_buy_signal_open', '_sell_signal_open'] assert 'pair' in rc.json assert rc.json['pair'] == 'XRP/BTC' @@ -833,9 +839,10 @@ def test_api_pair_candles(botclient, ohlcv_history): assert len(rc.json['data']) == amount assert (rc.json['data'] == - [[1511686200000, 8.794e-05, 8.948e-05, 8.794e-05, 8.88e-05, 0.0877869, None], + [[1511686200000, 8.794e-05, 8.948e-05, 8.794e-05, 8.88e-05, 0.0877869, + None, 0, 0, None, None], [1511686500000, 8.88e-05, 8.942e-05, 8.88e-05, - 8.893e-05, 0.05874751, 8.886500000000001e-05] + 8.893e-05, 0.05874751, 8.886500000000001e-05, 0, 0, None, None] ]) From b93ad8840a2d053cae06b15f0b122456d35c2f7f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 11 Jul 2020 15:20:50 +0200 Subject: [PATCH 3232/3421] Return date column unmodified --- freqtrade/rpc/api_server.py | 1 - freqtrade/rpc/rpc.py | 9 ++++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 081dcd623..b0620d6e2 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -548,7 +548,6 @@ class ApiServer(RPC): results = self._rpc_analysed_history_full(pair, timeframe, timerange) return self.rest_dump(results) - @require_login @rpc_catch_errors def _plot_config(self): diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index ef44aeee2..fa125721c 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -10,6 +10,7 @@ from typing import Any, Dict, List, Optional, Tuple, Union import arrow from numpy import NAN, int64, mean +from pandas import DataFrame from freqtrade.configuration.timerange import TimeRange from freqtrade.constants import CANCEL_REASON @@ -656,8 +657,9 @@ class RPC: raise RPCException('Edge is not enabled.') return self._freqtrade.edge.accepted_pairs() - def _convert_dataframe_to_dict(self, pair, dataframe, last_analyzed): - dataframe['date'] = dataframe['date'].astype(int64) // 1000 // 1000 + def _convert_dataframe_to_dict(self, pair: str, dataframe: DataFrame, last_analyzed: datetime): + + dataframe.loc[:, '__date_ts'] = dataframe.loc[:, 'date'].astype(int64) // 1000 // 1000 # Move open to seperate column when signal for easy plotting if 'buy' in dataframe.columns: buy_mask = (dataframe['buy'] == 1) @@ -673,13 +675,14 @@ class RPC: 'data': dataframe.values.tolist(), 'length': len(dataframe), 'last_analyzed': last_analyzed, + 'last_analyzed_ts': int(last_analyzed.timestamp()), } def _analysed_dataframe(self, pair: str, timeframe: str, limit: int) -> Dict[str, Any]: _data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe(pair, timeframe) if limit: - _data = _data.iloc[-limit:] + _data = _data.iloc[-limit:].copy() return self._convert_dataframe_to_dict(pair, _data, last_analyzed) def _rpc_analysed_history_full(self, pair: str, timeframe: str, From bf0e75e2a5e6bde4fec4f4598939944282cb479d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 13 Jul 2020 21:06:10 +0200 Subject: [PATCH 3233/3421] Include data start and end date in dataframe api --- freqtrade/rpc/rpc.py | 4 ++++ tests/rpc/test_rpc_apiserver.py | 18 +++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index fa125721c..e66314230 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -676,6 +676,10 @@ class RPC: 'length': len(dataframe), 'last_analyzed': last_analyzed, 'last_analyzed_ts': int(last_analyzed.timestamp()), + 'data_start': str(dataframe.iloc[0]['date']), + 'data_start_ts': int(dataframe.iloc[0]['__date_ts']), + 'data_stop': str(dataframe.iloc[-1]['date']), + 'data_stop_ts': int(dataframe.iloc[-1]['__date_ts']), } def _analysed_dataframe(self, pair: str, timeframe: str, limit: int) -> Dict[str, Any]: diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index d084bd64a..a46caaee1 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -828,10 +828,18 @@ def test_api_pair_candles(botclient, ohlcv_history): f"{BASE_URI}/pair_candles?limit={amount}&pair=XRP%2FBTC&timeframe={timeframe}") assert_response(rc) assert 'columns' in rc.json + assert 'data_start_ts' in rc.json + assert 'data_start' in rc.json + assert 'data_stop' in rc.json + assert 'data_stop_ts' in rc.json + assert rc.json['data_start'] == '2017-11-26 08:50:00+00:00' + assert rc.json['data_start_ts'] == 1511686200000 + assert rc.json['data_stop'] == '2017-11-26 08:55:00+00:00' + assert rc.json['data_stop_ts'] == 1511686500000 assert isinstance(rc.json['columns'], list) assert rc.json['columns'] == ['date', 'open', 'high', 'low', 'close', 'volume', 'sma', 'buy', 'sell', - '_buy_signal_open', '_sell_signal_open'] + '__date_ts', '_buy_signal_open', '_sell_signal_open'] assert 'pair' in rc.json assert rc.json['pair'] == 'XRP/BTC' @@ -839,10 +847,10 @@ def test_api_pair_candles(botclient, ohlcv_history): assert len(rc.json['data']) == amount assert (rc.json['data'] == - [[1511686200000, 8.794e-05, 8.948e-05, 8.794e-05, 8.88e-05, 0.0877869, - None, 0, 0, None, None], - [1511686500000, 8.88e-05, 8.942e-05, 8.88e-05, - 8.893e-05, 0.05874751, 8.886500000000001e-05, 0, 0, None, None] + [['2017-11-26 08:50:00', 8.794e-05, 8.948e-05, 8.794e-05, 8.88e-05, 0.0877869, + None, 0, 0, 1511686200000, None, None], + ['2017-11-26 08:55:00', 8.88e-05, 8.942e-05, 8.88e-05, + 8.893e-05, 0.05874751, 8.886500000000001e-05, 0, 0, 1511686500000, None, None] ]) From f227f6a755b093a3bd8d93deb8f8eca29083ac28 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 26 Jul 2020 20:31:11 +0200 Subject: [PATCH 3234/3421] Use passed in config object to allow this to work in webserver mode --- freqtrade/rpc/api_server.py | 10 ++++++++-- freqtrade/rpc/rpc.py | 10 +++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index b0620d6e2..be8c01b8b 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -1,3 +1,4 @@ +from copy import deepcopy import logging import threading from datetime import date, datetime @@ -538,14 +539,19 @@ class ApiServer(RPC): parameters: - pair: Pair - timeframe: Timeframe to get data for (should be aligned to strategy.timeframe) + - strategy: Strategy to use - Must exist in configured strategy-path! - timerange: timerange in the format YYYYMMDD-YYYYMMDD (YYYYMMDD- or (-YYYYMMDD)) are als possible. If omitted uses all available data. """ pair = request.args.get("pair") timeframe = request.args.get("timeframe") timerange = request.args.get("timerange") - - results = self._rpc_analysed_history_full(pair, timeframe, timerange) + strategy = request.args.get("strategy") + config = deepcopy(self._config) + config.update({ + 'strategy': strategy, + }) + results = self._rpc_analysed_history_full(config, pair, timeframe, timerange) return self.rest_dump(results) @require_login diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index e66314230..c40bface3 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -689,19 +689,19 @@ class RPC: _data = _data.iloc[-limit:].copy() return self._convert_dataframe_to_dict(pair, _data, last_analyzed) - def _rpc_analysed_history_full(self, pair: str, timeframe: str, + def _rpc_analysed_history_full(self, config: Dict[str, any], pair: str, timeframe: str, timerange: str) -> Dict[str, Any]: timerange = TimeRange.parse_timerange(timerange) _data = load_data( - datadir=self._freqtrade.config.get("datadir"), + datadir=config.get("datadir"), pairs=[pair], - timeframe=self._freqtrade.config.get('timeframe', '5m'), + timeframe=timeframe, timerange=timerange, - data_format=self._freqtrade.config.get('dataformat_ohlcv', 'json'), + data_format=config.get('dataformat_ohlcv', 'json'), ) from freqtrade.resolvers.strategy_resolver import StrategyResolver - strategy = StrategyResolver.load_strategy(self._freqtrade.config) + strategy = StrategyResolver.load_strategy(config) df_analyzed = strategy.analyze_ticker(_data[pair], {'pair': pair}) return self._convert_dataframe_to_dict(pair, df_analyzed, arrow.Arrow.utcnow().datetime) From 18bbfdd34190154100b6acc28b53689f46c8b7e9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 31 Jul 2020 07:31:20 +0200 Subject: [PATCH 3235/3421] Add /strategies endpoint --- freqtrade/rpc/api_server.py | 19 +++++++++++++++++-- tests/rpc/test_rpc_apiserver.py | 9 +++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index be8c01b8b..8978117e9 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -1,8 +1,9 @@ -from copy import deepcopy import logging import threading +from copy import deepcopy from datetime import date, datetime from ipaddress import IPv4Address +from pathlib import Path from typing import Any, Callable, Dict from arrow import Arrow @@ -16,7 +17,7 @@ from werkzeug.security import safe_str_cmp from werkzeug.serving import make_server from freqtrade.__init__ import __version__ -from freqtrade.constants import DATETIME_PRINT_FORMAT +from freqtrade.constants import DATETIME_PRINT_FORMAT, USERPATH_STRATEGIES from freqtrade.persistence import Trade from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.rpc.rpc import RPC, RPCException @@ -219,6 +220,9 @@ class ApiServer(RPC): view_func=self._analysed_history, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/plot_config', 'plot_config', view_func=self._plot_config, methods=['GET']) + self.app.add_url_rule(f'{BASE_URI}/strategies', 'strategies', + view_func=self._list_strategies, methods=['GET']) + # Combined actions and infos self.app.add_url_rule(f'{BASE_URI}/blacklist', 'blacklist', view_func=self._blacklist, methods=['GET', 'POST']) @@ -561,3 +565,14 @@ class ApiServer(RPC): Handler for /plot_config. """ return self.rest_dump(self._rpc_plot_config()) + + @require_login + @rpc_catch_errors + def _list_strategies(self): + directory = Path(self._config.get( + 'strategy_path', self._config['user_data_dir'] / USERPATH_STRATEGIES)) + from freqtrade.resolvers.strategy_resolver import StrategyResolver + strategy_objs = StrategyResolver.search_all_objects(directory, False) + strategy_objs = sorted(strategy_objs, key=lambda x: x['name']) + + return self.rest_dump([x['name'] for x in strategy_objs]) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index a46caaee1..4bd65fc24 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -867,3 +867,12 @@ def test_api_plot_config(botclient): assert_response(rc) assert rc.json == ftbot.strategy.plot_config assert isinstance(rc.json['main_plot'], dict) + + +def test_api_strategies(botclient): + ftbot, client = botclient + + rc = client_get(client, f"{BASE_URI}/strategies") + + assert_response(rc) + assert rc.json == ['DefaultStrategy', 'TestStrategyLegacy'] From 32e6ea314c3cd01ce35fedb5329c57a9da621c55 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 31 Jul 2020 07:32:27 +0200 Subject: [PATCH 3236/3421] Return strategy with analyzed data --- freqtrade/rpc/rpc.py | 10 +++++++--- tests/rpc/test_rpc_apiserver.py | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index c40bface3..df361cc4b 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -657,7 +657,8 @@ class RPC: raise RPCException('Edge is not enabled.') return self._freqtrade.edge.accepted_pairs() - def _convert_dataframe_to_dict(self, pair: str, dataframe: DataFrame, last_analyzed: datetime): + def _convert_dataframe_to_dict(self, strategy: str, pair: str, dataframe: DataFrame, + last_analyzed: datetime): dataframe.loc[:, '__date_ts'] = dataframe.loc[:, 'date'].astype(int64) // 1000 // 1000 # Move open to seperate column when signal for easy plotting @@ -671,6 +672,7 @@ class RPC: return { 'pair': pair, + 'strategy': strategy, 'columns': list(dataframe.columns), 'data': dataframe.values.tolist(), 'length': len(dataframe), @@ -687,7 +689,8 @@ class RPC: _data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe(pair, timeframe) if limit: _data = _data.iloc[-limit:].copy() - return self._convert_dataframe_to_dict(pair, _data, last_analyzed) + return self._convert_dataframe_to_dict(self._freqtrade.config['strategy'], + pair, _data, last_analyzed) def _rpc_analysed_history_full(self, config: Dict[str, any], pair: str, timeframe: str, timerange: str) -> Dict[str, Any]: @@ -704,7 +707,8 @@ class RPC: strategy = StrategyResolver.load_strategy(config) df_analyzed = strategy.analyze_ticker(_data[pair], {'pair': pair}) - return self._convert_dataframe_to_dict(pair, df_analyzed, arrow.Arrow.utcnow().datetime) + return self._convert_dataframe_to_dict(strategy.get_strategy_name(), pair, df_analyzed, + arrow.Arrow.utcnow().datetime) def _rpc_plot_config(self) -> Dict[str, Any]: diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 4bd65fc24..fc46d0a7f 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -827,6 +827,8 @@ def test_api_pair_candles(botclient, ohlcv_history): rc = client_get(client, f"{BASE_URI}/pair_candles?limit={amount}&pair=XRP%2FBTC&timeframe={timeframe}") assert_response(rc) + assert 'strategy' in rc.json + assert rc.json['strategy'] == 'DefaultStrategy' assert 'columns' in rc.json assert 'data_start_ts' in rc.json assert 'data_start' in rc.json From 6a59740f8394962f95603df5ee7231875b92eafb Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Aug 2020 17:12:32 +0200 Subject: [PATCH 3237/3421] Strategies should be a nested object --- freqtrade/rpc/api_server.py | 6 +++++- tests/rpc/test_rpc_apiserver.py | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 8978117e9..61081157b 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -551,6 +551,10 @@ class ApiServer(RPC): timeframe = request.args.get("timeframe") timerange = request.args.get("timerange") strategy = request.args.get("strategy") + + if not pair or not timeframe or not timerange or not strategy: + return self.rest_error("Mandatory parameter missing.") + config = deepcopy(self._config) config.update({ 'strategy': strategy, @@ -575,4 +579,4 @@ class ApiServer(RPC): strategy_objs = StrategyResolver.search_all_objects(directory, False) strategy_objs = sorted(strategy_objs, key=lambda x: x['name']) - return self.rest_dump([x['name'] for x in strategy_objs]) + return self.rest_dump({'strategies': [x['name'] for x in strategy_objs]}) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index fc46d0a7f..fbee1cf64 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -877,4 +877,4 @@ def test_api_strategies(botclient): rc = client_get(client, f"{BASE_URI}/strategies") assert_response(rc) - assert rc.json == ['DefaultStrategy', 'TestStrategyLegacy'] + assert rc.json == {'strategies': ['DefaultStrategy', 'TestStrategyLegacy']} From 1de248fe38af6bc2c4a88183bee53fc48bcce0ef Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Aug 2020 17:49:59 +0200 Subject: [PATCH 3238/3421] add list_available_pairs endpoint --- freqtrade/rpc/api_server.py | 39 ++++++++++++++++++++++++++++++++- tests/conftest.py | 1 + tests/rpc/test_rpc_apiserver.py | 26 ++++++++++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 61081157b..51610bd98 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -222,6 +222,8 @@ class ApiServer(RPC): view_func=self._plot_config, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/strategies', 'strategies', view_func=self._list_strategies, methods=['GET']) + self.app.add_url_rule(f'{BASE_URI}/available_pairs', 'pairs', + view_func=self._list_available_pairs, methods=['GET']) # Combined actions and infos self.app.add_url_rule(f'{BASE_URI}/blacklist', 'blacklist', view_func=self._blacklist, @@ -540,7 +542,7 @@ class ApiServer(RPC): Returns the dataframe of a given timerange Takes the following get arguments: get: - parameters: + parameters: - pair: Pair - timeframe: Timeframe to get data for (should be aligned to strategy.timeframe) - strategy: Strategy to use - Must exist in configured strategy-path! @@ -580,3 +582,38 @@ class ApiServer(RPC): strategy_objs = sorted(strategy_objs, key=lambda x: x['name']) return self.rest_dump({'strategies': [x['name'] for x in strategy_objs]}) + + @require_login + @rpc_catch_errors + def _list_available_pairs(self): + """ + Handler for /available_pairs. + Returns an object, with pairs, available pair length and pair_interval combinations + Takes the following get arguments: + get: + parameters: + - stake_currency: Filter on this stake currency + - timeframe: Timeframe to get data for Filter elements to this timeframe + """ + timeframe = request.args.get("timeframe") + stake_currency = request.args.get("stake_currency") + + from freqtrade.data.history import get_datahandler + dh = get_datahandler(self._config['datadir'], self._config.get('dataformat_ohlcv', None)) + + pair_interval = dh.ohlcv_get_available_data(self._config['datadir']) + + if timeframe: + pair_interval = [pair for pair in pair_interval if pair[1] == timeframe] + if stake_currency: + pair_interval = [pair for pair in pair_interval if pair[0].endswith(stake_currency)] + pair_interval = sorted(pair_interval, key=lambda x: x[0]) + + pairs = list({x[0] for x in pair_interval}) + + result = { + 'length': len(pairs), + 'pairs': pairs, + 'pair_interval': pair_interval, + } + return self.rest_dump(result) diff --git a/tests/conftest.py b/tests/conftest.py index dbd0df8f6..2153fd327 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -146,6 +146,7 @@ def get_patched_freqtradebot(mocker, config) -> FreqtradeBot: :return: FreqtradeBot """ patch_freqtradebot(mocker, config) + config['datadir'] = Path(config['datadir']) return FreqtradeBot(config) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index fbee1cf64..d6c938373 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -878,3 +878,29 @@ def test_api_strategies(botclient): assert_response(rc) assert rc.json == {'strategies': ['DefaultStrategy', 'TestStrategyLegacy']} + + +def test_list_available_pairs(botclient): + ftbot, client = botclient + + rc = client_get(client, f"{BASE_URI}/available_pairs") + + assert_response(rc) + assert rc.json['length'] == 12 + assert isinstance(rc.json['pairs'], list) + + rc = client_get(client, f"{BASE_URI}/available_pairs?timeframe=5m") + assert_response(rc) + assert rc.json['length'] == 12 + + rc = client_get(client, f"{BASE_URI}/available_pairs?stake_currency=ETH") + assert_response(rc) + assert rc.json['length'] == 1 + assert rc.json['pairs'] == ['XRP/ETH'] + assert len(rc.json['pair_interval']) == 2 + + rc = client_get(client, f"{BASE_URI}/available_pairs?stake_currency=ETH&timeframe=5m") + assert_response(rc) + assert rc.json['length'] == 1 + assert rc.json['pairs'] == ['XRP/ETH'] + assert len(rc.json['pair_interval']) == 1 From c59a1be154acc35851f11c6c6e6c655052182dfa Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 1 Aug 2020 17:55:03 +0200 Subject: [PATCH 3239/3421] show_config should not use freqtrade object --- freqtrade/rpc/api_server.py | 2 +- freqtrade/rpc/rpc.py | 5 ++--- freqtrade/rpc/telegram.py | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 51610bd98..e2189b8e9 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -328,7 +328,7 @@ class ApiServer(RPC): """ Prints the bot's version """ - return self.rest_dump(self._rpc_show_config()) + return self.rest_dump(self._rpc_show_config(self._config)) @require_login @rpc_catch_errors diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index df361cc4b..d3df9f4bd 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -93,13 +93,12 @@ class RPC: def send_msg(self, msg: Dict[str, str]) -> None: """ Sends a message to all registered rpc modules """ - def _rpc_show_config(self) -> Dict[str, Any]: + def _rpc_show_config(self, config) -> Dict[str, Any]: """ Return a dict of config options. Explicitly does NOT return the full config to avoid leakage of sensitive information via rpc. """ - config = self._freqtrade.config val = { 'dry_run': config['dry_run'], 'stake_currency': config['stake_currency'], @@ -120,7 +119,7 @@ class RPC: 'forcebuy_enabled': config.get('forcebuy_enable', False), 'ask_strategy': config.get('ask_strategy', {}), 'bid_strategy': config.get('bid_strategy', {}), - 'state': str(self._freqtrade.state) + 'state': str(self._freqtrade.state) if self._freqtrade else '', } return val diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 01d21c53c..7a6607632 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -755,7 +755,7 @@ class Telegram(RPC): :param update: message update :return: None """ - val = self._rpc_show_config() + val = self._rpc_show_config(self._freqtrade.config) if val['trailing_stop']: sl_info = ( f"*Initial Stoploss:* `{val['stoploss']}`\n" From c0654f3caf2b07fcff4a9bd51b6ba4462af43771 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 24 Aug 2020 20:38:01 +0200 Subject: [PATCH 3240/3421] Add resiliancy against not having a analyzed dataframe yet --- freqtrade/rpc/rpc.py | 46 +++++++++++++++++++++------------ tests/rpc/test_rpc_apiserver.py | 10 +++++++ 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index d3df9f4bd..94a4bbed3 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -657,19 +657,21 @@ class RPC: return self._freqtrade.edge.accepted_pairs() def _convert_dataframe_to_dict(self, strategy: str, pair: str, dataframe: DataFrame, - last_analyzed: datetime): + last_analyzed: datetime) -> Dict[str, Any]: + has_content = len(dataframe) != 0 + if has_content: - dataframe.loc[:, '__date_ts'] = dataframe.loc[:, 'date'].astype(int64) // 1000 // 1000 - # Move open to seperate column when signal for easy plotting - if 'buy' in dataframe.columns: - buy_mask = (dataframe['buy'] == 1) - dataframe.loc[buy_mask, '_buy_signal_open'] = dataframe.loc[buy_mask, 'open'] - if 'sell' in dataframe.columns: - sell_mask = (dataframe['sell'] == 1) - dataframe.loc[sell_mask, '_sell_signal_open'] = dataframe.loc[sell_mask, 'open'] - dataframe = dataframe.replace({NAN: None}) + dataframe.loc[:, '__date_ts'] = dataframe.loc[:, 'date'].astype(int64) // 1000 // 1000 + # Move open to seperate column when signal for easy plotting + if 'buy' in dataframe.columns: + buy_mask = (dataframe['buy'] == 1) + dataframe.loc[buy_mask, '_buy_signal_open'] = dataframe.loc[buy_mask, 'open'] + if 'sell' in dataframe.columns: + sell_mask = (dataframe['sell'] == 1) + dataframe.loc[sell_mask, '_sell_signal_open'] = dataframe.loc[sell_mask, 'open'] + dataframe = dataframe.replace({NAN: None}) - return { + res = { 'pair': pair, 'strategy': strategy, 'columns': list(dataframe.columns), @@ -677,17 +679,27 @@ class RPC: 'length': len(dataframe), 'last_analyzed': last_analyzed, 'last_analyzed_ts': int(last_analyzed.timestamp()), - 'data_start': str(dataframe.iloc[0]['date']), - 'data_start_ts': int(dataframe.iloc[0]['__date_ts']), - 'data_stop': str(dataframe.iloc[-1]['date']), - 'data_stop_ts': int(dataframe.iloc[-1]['__date_ts']), + 'data_start': '', + 'data_start_ts': 0, + 'data_stop': '', + 'data_stop_ts': 0, } + if has_content: + res.update({ + 'data_start': str(dataframe.iloc[0]['date']), + 'data_start_ts': int(dataframe.iloc[0]['__date_ts']), + 'data_stop': str(dataframe.iloc[-1]['date']), + 'data_stop_ts': int(dataframe.iloc[-1]['__date_ts']), + }) + return res def _analysed_dataframe(self, pair: str, timeframe: str, limit: int) -> Dict[str, Any]: - _data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe(pair, timeframe) + _data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe( + pair, timeframe) + _data = _data.copy() if limit: - _data = _data.iloc[-limit:].copy() + _data = _data.iloc[-limit:] return self._convert_dataframe_to_dict(self._freqtrade.config['strategy'], pair, _data, last_analyzed) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index d6c938373..b98483061 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -817,6 +817,16 @@ def test_api_pair_candles(botclient, ohlcv_history): ftbot, client = botclient timeframe = '5m' amount = 2 + + rc = client_get(client, + f"{BASE_URI}/pair_candles?limit={amount}&pair=XRP%2FBTC&timeframe={timeframe}") + assert_response(rc) + assert 'columns' in rc.json + assert 'data_start_ts' in rc.json + assert 'data_start' in rc.json + assert 'data_stop' in rc.json + assert 'data_stop_ts' in rc.json + assert len(rc.json['data']) == 0 ohlcv_history['sma'] = ohlcv_history['close'].rolling(2).mean() ohlcv_history['buy'] = 0 ohlcv_history.iloc[1]['buy'] = 1 From bb4993dc20064c9368790d753fce3dc690b6d0b6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 11 Sep 2020 20:15:54 +0200 Subject: [PATCH 3241/3421] Add new endpoints to the documentation --- docs/rest-api.md | 7 ++++++- freqtrade/rpc/api_server.py | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index 075bd7e64..fc628ac71 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -104,7 +104,7 @@ By default, the script assumes `127.0.0.1` (localhost) and port `8080` to be use python3 scripts/rest_client.py --config rest_config.json [optional parameters] ``` -## Available commands +## Available endpoints | Command | Description | |----------|-------------| @@ -129,6 +129,11 @@ python3 scripts/rest_client.py --config rest_config.json [optional par | `whitelist` | Show the current whitelist | `blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist. | `edge` | Show validated pairs by Edge if it is enabled. +| `pair_candles` | Returns dataframe for a pair / timeframe combination while the bot is running. +| `pair_history` | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy. +| `plot_config` | Get plot config from the strategy (or nothing if not configured). +| `strategies` | List strategies in strategy directory. +| `available_pairs` | List available backtest data. | `version` | Show version Possible commands can be listed from the rest-client script using the `help` command. diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index e2189b8e9..4d1c5731c 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -214,6 +214,7 @@ class ApiServer(RPC): view_func=self._trades, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/trades/', 'trades_delete', view_func=self._trades_delete, methods=['DELETE']) + self.app.add_url_rule(f'{BASE_URI}/pair_candles', 'pair_candles', view_func=self._analysed_candles, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/pair_history', 'pair_history', @@ -518,7 +519,7 @@ class ApiServer(RPC): @rpc_catch_errors def _analysed_candles(self): """ - Handler for /pair_history. + Handler for /pair_candles. Returns the dataframe the bot is using during live/dry operations. Takes the following get arguments: get: From f82d39e1b05dcc3a7549293118be5173b725127f Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 11 Sep 2020 20:31:02 +0200 Subject: [PATCH 3242/3421] Enhance restclient and add tests for new api methods --- docs/rest-api.md | 28 ++++++++++++++++- freqtrade/rpc/api_server.py | 8 +++-- scripts/rest_client.py | 56 +++++++++++++++++++++++++++++++++ tests/rpc/test_rpc_apiserver.py | 10 ++++++ 4 files changed, 98 insertions(+), 4 deletions(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index fc628ac71..73a7b9c89 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -145,6 +145,12 @@ python3 scripts/rest_client.py help ``` output Possible commands: +available_pairs + Return available pair (backtest data) based on timeframe / stake_currency selection + + :param timeframe: Only pairs with this timeframe available. + :param stake_currency: Only pairs that include this timeframe + balance Get the account balance. @@ -184,9 +190,27 @@ logs :param limit: Limits log messages to the last logs. No limit to get all the trades. +pair_candles + Return live dataframe for . + + :param pair: Pair to get data for + :param timeframe: Only pairs with this timeframe available. + :param limit: Limit result to the last n candles. + +pair_history + Return historic, analyzed dataframe + + :param pair: Pair to get data for + :param timeframe: Only pairs with this timeframe available. + :param strategy: Strategy to analyze and get values for + :param timerange: Timerange to get data for (same format than --timerange endpoints) + performance Return the performance of the different coins. +plot_config + Return plot configuration if the strategy defines one. + profit Return the profit summary. @@ -209,6 +233,9 @@ stop stopbuy Stop buying (but handle sells gracefully). Use `reload_config` to reset. +strategies + Lists available strategies + trades Return trades history. @@ -220,7 +247,6 @@ version whitelist Show the current whitelist. - ``` ## Advanced API usage using JWT tokens diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 4d1c5731c..0b80283d9 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -166,8 +166,8 @@ class ApiServer(RPC): """ Helper function to jsonify object for a webserver """ return jsonify(return_value) - def rest_error(self, error_msg): - return jsonify({"error": error_msg}), 502 + def rest_error(self, error_msg, error_code=502): + return jsonify({"error": error_msg}), error_code def register_rest_rpc_urls(self): """ @@ -531,6 +531,8 @@ class ApiServer(RPC): pair = request.args.get("pair") timeframe = request.args.get("timeframe") limit = request.args.get("limit", type=int) + if not pair or not timeframe: + return self.rest_error("Mandatory parameter missing.", 400) results = self._analysed_dataframe(pair, timeframe, limit) return self.rest_dump(results) @@ -556,7 +558,7 @@ class ApiServer(RPC): strategy = request.args.get("strategy") if not pair or not timeframe or not timerange or not strategy: - return self.rest_error("Mandatory parameter missing.") + return self.rest_error("Mandatory parameter missing.", 400) config = deepcopy(self._config) config.update({ diff --git a/scripts/rest_client.py b/scripts/rest_client.py index 8512777df..8889b82c1 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -224,6 +224,62 @@ class FtRestClient(): return self._post("forcesell", data={"tradeid": tradeid}) + def strategies(self): + """Lists available strategies + + :return: json object + """ + return self._get("strategies") + + def plot_config(self): + """Return plot configuration if the strategy defines one. + + :return: json object + """ + return self._get("plot_config") + + def available_pairs(self, timeframe=None, stake_currency=None): + """Return available pair (backtest data) based on timeframe / stake_currency selection + + :param timeframe: Only pairs with this timeframe available. + :param stake_currency: Only pairs that include this timeframe + :return: json object + """ + return self._get("available_pairs", params={ + "stake_currency": stake_currency if timeframe else '', + "timeframe": timeframe if timeframe else '', + }) + + def pair_candles(self, pair, timeframe, limit=None): + """Return live dataframe for . + + :param pair: Pair to get data for + :param timeframe: Only pairs with this timeframe available. + :param limit: Limit result to the last n candles. + :return: json object + """ + return self._get("available_pairs", params={ + "pair": pair, + "timeframe": timeframe, + "limit": limit, + }) + + def pair_history(self, pair, timeframe, strategy, timerange=None): + """Return historic, analyzed dataframe + + :param pair: Pair to get data for + :param timeframe: Only pairs with this timeframe available. + :param strategy: Strategy to analyze and get values for + :param timerange: Timerange to get data for (same format than --timerange endpoints) + :return: json object + """ + return self._get("pair_history", params={ + "pair": pair, + "timeframe": timeframe, + "strategy": strategy, + "timerange": timerange if timerange else '', + }) + def add_arguments(): parser = argparse.ArgumentParser() diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index b98483061..47afc61a1 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -818,6 +818,16 @@ def test_api_pair_candles(botclient, ohlcv_history): timeframe = '5m' amount = 2 + # No pair + rc = client_get(client, + f"{BASE_URI}/pair_candles?limit={amount}&timeframe={timeframe}") + assert_response(rc, 400) + + # No timeframe + rc = client_get(client, + f"{BASE_URI}/pair_candles?pair=XRP%2FBTC") + assert_response(rc, 400) + rc = client_get(client, f"{BASE_URI}/pair_candles?limit={amount}&pair=XRP%2FBTC&timeframe={timeframe}") assert_response(rc) From 816c8295f1ba20622fce1e686bf480165c4b78ac Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 11 Sep 2020 20:45:59 +0200 Subject: [PATCH 3243/3421] Add test for pair_history --- tests/rpc/test_rpc_apiserver.py | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 47afc61a1..2972324ba 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -876,6 +876,52 @@ def test_api_pair_candles(botclient, ohlcv_history): ]) +def test_api_pair_history(botclient, ohlcv_history): + ftbot, client = botclient + timeframe = '5m' + + # No pair + rc = client_get(client, + f"{BASE_URI}/pair_history?timeframe={timeframe}" + "&timerange=20180111-20180112&strategy=DefaultStrategy") + assert_response(rc, 400) + + # No Timeframe + rc = client_get(client, + f"{BASE_URI}/pair_history?pair=UNITTEST%2FBTC" + "&timerange=20180111-20180112&strategy=DefaultStrategy") + assert_response(rc, 400) + + # No timerange + rc = client_get(client, + f"{BASE_URI}/pair_history?pair=UNITTEST%2FBTC&timeframe={timeframe}" + "&strategy=DefaultStrategy") + assert_response(rc, 400) + + # No strategy + rc = client_get(client, + f"{BASE_URI}/pair_history?pair=UNITTEST%2FBTC&timeframe={timeframe}" + "&timerange=20180111-20180112") + assert_response(rc, 400) + + # Working + rc = client_get(client, + f"{BASE_URI}/pair_history?pair=UNITTEST%2FBTC&timeframe={timeframe}" + "&timerange=20180111-20180112&strategy=DefaultStrategy") + assert_response(rc, 200) + assert rc.json['length'] == 289 + assert len(rc.json['data']) == rc.json['length'] + assert 'columns' in rc.json + assert 'data' in rc.json + assert rc.json['pair'] == 'UNITTEST/BTC' + assert rc.json['strategy'] == 'DefaultStrategy' + assert rc.json['data_start'] == '2018-01-11 00:00:00+00:00' + assert rc.json['data_start_ts'] == 1515628800000 + assert rc.json['data_stop'] == '2018-01-12 00:00:00+00:00' + assert rc.json['data_stop_ts'] == 1515715200000 + + + def test_api_plot_config(botclient): ftbot, client = botclient From a3d0889dab7314b902507f68782fba37cf7c9845 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 13 Sep 2020 20:09:54 +0200 Subject: [PATCH 3244/3421] Add alpha to endpoint documentation --- docs/rest-api.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index 73a7b9c89..b832b8b0c 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -129,13 +129,16 @@ python3 scripts/rest_client.py --config rest_config.json [optional par | `whitelist` | Show the current whitelist | `blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist. | `edge` | Show validated pairs by Edge if it is enabled. -| `pair_candles` | Returns dataframe for a pair / timeframe combination while the bot is running. -| `pair_history` | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy. -| `plot_config` | Get plot config from the strategy (or nothing if not configured). -| `strategies` | List strategies in strategy directory. -| `available_pairs` | List available backtest data. +| `pair_candles` | Returns dataframe for a pair / timeframe combination while the bot is running. **Alpha** +| `pair_history` | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy. **Alpha** +| `plot_config` | Get plot config from the strategy (or nothing if not configured). **Alpha** +| `strategies` | List strategies in strategy directory. **Alpha** +| `available_pairs` | List available backtest data. **Alpha** | `version` | Show version +!!! Warning "Alpha status" + Endpoints labeled with *Alpha status* above may change at any time without notice. + Possible commands can be listed from the rest-client script using the `help` command. ``` bash From 4b6b7f83433bc41265b038c5525a3865108eb5d9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 14 Sep 2020 07:59:47 +0200 Subject: [PATCH 3245/3421] Add timeframe to candle return values --- freqtrade/rpc/rpc.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 94a4bbed3..db1343455 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -656,8 +656,8 @@ class RPC: raise RPCException('Edge is not enabled.') return self._freqtrade.edge.accepted_pairs() - def _convert_dataframe_to_dict(self, strategy: str, pair: str, dataframe: DataFrame, - last_analyzed: datetime) -> Dict[str, Any]: + def _convert_dataframe_to_dict(self, strategy: str, pair: str, timeframe: str, + dataframe: DataFrame, last_analyzed: datetime) -> Dict[str, Any]: has_content = len(dataframe) != 0 if has_content: @@ -673,6 +673,8 @@ class RPC: res = { 'pair': pair, + 'timeframe': timeframe, + 'timeframe_ms': timeframe_to_msecs(timeframe), 'strategy': strategy, 'columns': list(dataframe.columns), 'data': dataframe.values.tolist(), @@ -701,7 +703,7 @@ class RPC: if limit: _data = _data.iloc[-limit:] return self._convert_dataframe_to_dict(self._freqtrade.config['strategy'], - pair, _data, last_analyzed) + pair, timeframe, _data, last_analyzed) def _rpc_analysed_history_full(self, config: Dict[str, any], pair: str, timeframe: str, timerange: str) -> Dict[str, Any]: @@ -718,8 +720,8 @@ class RPC: strategy = StrategyResolver.load_strategy(config) df_analyzed = strategy.analyze_ticker(_data[pair], {'pair': pair}) - return self._convert_dataframe_to_dict(strategy.get_strategy_name(), pair, df_analyzed, - arrow.Arrow.utcnow().datetime) + return self._convert_dataframe_to_dict(strategy.get_strategy_name(), pair, timeframe, + df_analyzed, arrow.Arrow.utcnow().datetime) def _rpc_plot_config(self) -> Dict[str, Any]: From ba10bd77565e8f86e0a0525ffbbcdd3bfadc98b3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 17 Sep 2020 06:56:51 +0200 Subject: [PATCH 3246/3421] Add strategy code to __code__ --- freqtrade/resolvers/iresolver.py | 22 ++++++++++++---------- freqtrade/rpc/api_server.py | 20 ++++++++++++++++++++ 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 846c85a5c..83c614650 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -67,9 +67,10 @@ class IResolver: return iter([None]) valid_objects_gen = ( - obj for name, obj in inspect.getmembers(module, inspect.isclass) - if ((object_name is None or object_name == name) and - issubclass(obj, cls.object_type) and obj is not cls.object_type) + (obj, inspect.getsource(module)) for name, obj in inspect.getmembers( + module, inspect.isclass) if ((object_name is None or object_name == name) + and issubclass(obj, cls.object_type) + and obj is not cls.object_type) ) return valid_objects_gen @@ -93,7 +94,8 @@ class IResolver: obj = next(cls._get_valid_object(module_path, object_name), None) if obj: - return (obj, module_path) + obj[0].__code__ = obj[1] + return (obj[0], module_path) return (None, None) @classmethod @@ -133,10 +135,10 @@ class IResolver: user_subdir=cls.user_subdir, extra_dir=extra_dir) - pairlist = cls._load_object(paths=abs_paths, object_name=object_name, - kwargs=kwargs) - if pairlist: - return pairlist + found_object = cls._load_object(paths=abs_paths, object_name=object_name, + kwargs=kwargs) + if found_object: + return found_object raise OperationalException( f"Impossible to load {cls.object_type_str} '{object_name}'. This class does not exist " "or contains Python code errors." @@ -164,8 +166,8 @@ class IResolver: for obj in cls._get_valid_object(module_path, object_name=None, enum_failed=enum_failed): objects.append( - {'name': obj.__name__ if obj is not None else '', - 'class': obj, + {'name': obj[0].__name__ if obj is not None else '', + 'class': obj[0] if obj is not None else None, 'location': entry, }) return objects diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 0b80283d9..21c0e5629 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -223,6 +223,8 @@ class ApiServer(RPC): view_func=self._plot_config, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/strategies', 'strategies', view_func=self._list_strategies, methods=['GET']) + self.app.add_url_rule(f'{BASE_URI}/strategy/', 'strategy', + view_func=self._get_strategy, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/available_pairs', 'pairs', view_func=self._list_available_pairs, methods=['GET']) @@ -586,6 +588,24 @@ class ApiServer(RPC): return self.rest_dump({'strategies': [x['name'] for x in strategy_objs]}) + @require_login + @rpc_catch_errors + def _get_strategy(self, strategy: str): + """ + Get a single strategy + get: + parameters: + - strategy: Only get this strategy + """ + config = deepcopy(self._config) + from freqtrade.resolvers.strategy_resolver import StrategyResolver + strategy_obj = StrategyResolver._load_strategy(strategy, config, None) + + return self.rest_dump({ + 'strategy': strategy_obj.get_strategy_name(), + 'code': strategy_obj.__code__, + }) + @require_login @rpc_catch_errors def _list_available_pairs(self): From becccca3d15fccca3a8f1554b2a7450bcdaa5440 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 17 Sep 2020 07:38:56 +0200 Subject: [PATCH 3247/3421] Add test for __code__ loading --- freqtrade/resolvers/iresolver.py | 17 +++++++++++------ freqtrade/resolvers/strategy_resolver.py | 4 +++- tests/rpc/test_rpc_apiserver.py | 1 - tests/strategy/test_strategy.py | 9 +++++++-- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 83c614650..801ad956b 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -51,7 +51,8 @@ class IResolver: :param object_name: Class name of the object :param enum_failed: If True, will return None for modules which fail. Otherwise, failing modules are skipped. - :return: generator containing matching objects + :return: generator containing tuple of matching objects + Tuple format: [Object, source] """ # Generate spec based on absolute path @@ -67,7 +68,8 @@ class IResolver: return iter([None]) valid_objects_gen = ( - (obj, inspect.getsource(module)) for name, obj in inspect.getmembers( + (obj, inspect.getsource(module)) for + name, obj in inspect.getmembers( module, inspect.isclass) if ((object_name is None or object_name == name) and issubclass(obj, cls.object_type) and obj is not cls.object_type) @@ -75,7 +77,7 @@ class IResolver: return valid_objects_gen @classmethod - def _search_object(cls, directory: Path, object_name: str + def _search_object(cls, directory: Path, object_name: str, add_source: bool = False ) -> Union[Tuple[Any, Path], Tuple[None, None]]: """ Search for the objectname in the given directory @@ -94,12 +96,14 @@ class IResolver: obj = next(cls._get_valid_object(module_path, object_name), None) if obj: - obj[0].__code__ = obj[1] + obj[0].__file__ = str(entry) + if add_source: + obj[0].__code__ = obj[1] return (obj[0], module_path) return (None, None) @classmethod - def _load_object(cls, paths: List[Path], object_name: str, + def _load_object(cls, paths: List[Path], object_name: str, add_source: bool = False, kwargs: dict = {}) -> Optional[Any]: """ Try to load object from path list. @@ -108,7 +112,8 @@ class IResolver: for _path in paths: try: (module, module_path) = cls._search_object(directory=_path, - object_name=object_name) + object_name=object_name, + add_source=add_source) if module: logger.info( f"Using resolved {cls.object_type.__name__.lower()[1:]} {object_name} " diff --git a/freqtrade/resolvers/strategy_resolver.py b/freqtrade/resolvers/strategy_resolver.py index ead7424ec..63a3f784e 100644 --- a/freqtrade/resolvers/strategy_resolver.py +++ b/freqtrade/resolvers/strategy_resolver.py @@ -174,7 +174,9 @@ class StrategyResolver(IResolver): strategy = StrategyResolver._load_object(paths=abs_paths, object_name=strategy_name, - kwargs={'config': config}) + add_source=True, + kwargs={'config': config}, + ) if strategy: strategy._populate_fun_len = len(getfullargspec(strategy.populate_indicators).args) strategy._buy_fun_len = len(getfullargspec(strategy.populate_buy_trend).args) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 2972324ba..8e1d09b95 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -921,7 +921,6 @@ def test_api_pair_history(botclient, ohlcv_history): assert rc.json['data_stop_ts'] == 1515715200000 - def test_api_plot_config(botclient): ftbot, client = botclient diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 240f3d8ec..1641098e9 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -18,13 +18,15 @@ def test_search_strategy(): s, _ = StrategyResolver._search_object( directory=default_location, - object_name='DefaultStrategy' + object_name='DefaultStrategy', + add_source=True, ) assert issubclass(s, IStrategy) s, _ = StrategyResolver._search_object( directory=default_location, - object_name='NotFoundStrategy' + object_name='NotFoundStrategy', + add_source=True, ) assert s is None @@ -53,6 +55,9 @@ def test_load_strategy(default_conf, result): 'strategy_path': str(Path(__file__).parents[2] / 'freqtrade/templates') }) strategy = StrategyResolver.load_strategy(default_conf) + assert isinstance(strategy.__code__, str) + assert 'class SampleStrategy' in strategy.__code__ + assert isinstance(strategy.__file__, str) assert 'rsi' in strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) From b38f68b3b09a1e969e7514b74a59f44c6b81f252 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 17 Sep 2020 07:53:22 +0200 Subject: [PATCH 3248/3421] Add 404 when strategy is not found --- docs/rest-api.md | 6 ++++++ freqtrade/rpc/api_server.py | 7 ++++++- scripts/rest_client.py | 8 ++++++++ tests/rpc/test_rpc_apiserver.py | 16 ++++++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index b832b8b0c..44f0b07cf 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -133,6 +133,7 @@ python3 scripts/rest_client.py --config rest_config.json [optional par | `pair_history` | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy. **Alpha** | `plot_config` | Get plot config from the strategy (or nothing if not configured). **Alpha** | `strategies` | List strategies in strategy directory. **Alpha** +| `strategy ` | Get specific Strategy content. **Alpha** | `available_pairs` | List available backtest data. **Alpha** | `version` | Show version @@ -239,6 +240,11 @@ stopbuy strategies Lists available strategies +strategy + Get strategy details + + :param strategy: Strategy class name + trades Return trades history. diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 21c0e5629..489b8760a 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -1,3 +1,4 @@ +from freqtrade.exceptions import OperationalException import logging import threading from copy import deepcopy @@ -599,7 +600,11 @@ class ApiServer(RPC): """ config = deepcopy(self._config) from freqtrade.resolvers.strategy_resolver import StrategyResolver - strategy_obj = StrategyResolver._load_strategy(strategy, config, None) + try: + strategy_obj = StrategyResolver._load_strategy(strategy, config, + extra_dir=config.get('strategy_path')) + except OperationalException: + return self.rest_error("Strategy not found.", 404) return self.rest_dump({ 'strategy': strategy_obj.get_strategy_name(), diff --git a/scripts/rest_client.py b/scripts/rest_client.py index 8889b82c1..46966d447 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -231,6 +231,14 @@ class FtRestClient(): """ return self._get("strategies") + def strategy(self, strategy): + """Get strategy details + + :param strategy: Strategy class name + :return: json object + """ + return self._get(f"strategy/{strategy}") + def plot_config(self): """Return plot configuration if the strategy defines one. diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 8e1d09b95..4cc947159 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -3,6 +3,7 @@ Unit test file for rpc/api_server.py """ from datetime import datetime +from pathlib import Path from unittest.mock import ANY, MagicMock, PropertyMock import pytest @@ -945,6 +946,21 @@ def test_api_strategies(botclient): assert rc.json == {'strategies': ['DefaultStrategy', 'TestStrategyLegacy']} +def test_api_strategy(botclient): + ftbot, client = botclient + + rc = client_get(client, f"{BASE_URI}/strategy/DefaultStrategy") + + assert_response(rc) + assert rc.json['strategy'] == 'DefaultStrategy' + + data = (Path(__file__).parents[1] / "strategy/strats/default_strategy.py").read_text() + assert rc.json['code'] == data + + rc = client_get(client, f"{BASE_URI}/strategy/NoStrat") + assert_response(rc, 404) + + def test_list_available_pairs(botclient): ftbot, client = botclient From 350fcc071e07952e50a518f27b79de6b387cab19 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 26 Sep 2020 16:33:48 +0200 Subject: [PATCH 3249/3421] Don't use __code__ __code__ is a special method name used by python already source: https://docs.python.org/3/reference/datamodel.html#special-method-names --- freqtrade/resolvers/iresolver.py | 2 +- freqtrade/rpc/api_server.py | 2 +- tests/strategy/test_strategy.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 801ad956b..9c3a33f2b 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -98,7 +98,7 @@ class IResolver: if obj: obj[0].__file__ = str(entry) if add_source: - obj[0].__code__ = obj[1] + obj[0].__source__ = obj[1] return (obj[0], module_path) return (None, None) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 489b8760a..ea616c0ec 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -608,7 +608,7 @@ class ApiServer(RPC): return self.rest_dump({ 'strategy': strategy_obj.get_strategy_name(), - 'code': strategy_obj.__code__, + 'code': strategy_obj.__source__, }) @require_login diff --git a/tests/strategy/test_strategy.py b/tests/strategy/test_strategy.py index 1641098e9..1c692d2da 100644 --- a/tests/strategy/test_strategy.py +++ b/tests/strategy/test_strategy.py @@ -55,8 +55,8 @@ def test_load_strategy(default_conf, result): 'strategy_path': str(Path(__file__).parents[2] / 'freqtrade/templates') }) strategy = StrategyResolver.load_strategy(default_conf) - assert isinstance(strategy.__code__, str) - assert 'class SampleStrategy' in strategy.__code__ + assert isinstance(strategy.__source__, str) + assert 'class SampleStrategy' in strategy.__source__ assert isinstance(strategy.__file__, str) assert 'rsi' in strategy.advise_indicators(result, {'pair': 'ETH/BTC'}) From 62110dc2fcb4c9a76c96579249eda5a10ab07e48 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 27 Sep 2020 09:24:39 +0200 Subject: [PATCH 3250/3421] Add buy / sell signal count to dataframe interface --- freqtrade/rpc/rpc.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index db1343455..db44ecda4 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -659,15 +659,19 @@ class RPC: def _convert_dataframe_to_dict(self, strategy: str, pair: str, timeframe: str, dataframe: DataFrame, last_analyzed: datetime) -> Dict[str, Any]: has_content = len(dataframe) != 0 + buy_signals = 0 + sell_signals = 0 if has_content: dataframe.loc[:, '__date_ts'] = dataframe.loc[:, 'date'].astype(int64) // 1000 // 1000 # Move open to seperate column when signal for easy plotting if 'buy' in dataframe.columns: buy_mask = (dataframe['buy'] == 1) + buy_signals = int(buy_mask.sum()) dataframe.loc[buy_mask, '_buy_signal_open'] = dataframe.loc[buy_mask, 'open'] if 'sell' in dataframe.columns: sell_mask = (dataframe['sell'] == 1) + sell_signals = int(sell_mask.sum()) dataframe.loc[sell_mask, '_sell_signal_open'] = dataframe.loc[sell_mask, 'open'] dataframe = dataframe.replace({NAN: None}) @@ -679,6 +683,8 @@ class RPC: 'columns': list(dataframe.columns), 'data': dataframe.values.tolist(), 'length': len(dataframe), + 'buy_signals': buy_signals, + 'sell_signals': sell_signals, 'last_analyzed': last_analyzed, 'last_analyzed_ts': int(last_analyzed.timestamp()), 'data_start': '', From 66b77d2f53cddb752737ae7604d99f9336abd3f5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 2 Oct 2020 06:41:28 +0200 Subject: [PATCH 3251/3421] Fix some types --- freqtrade/rpc/rpc.py | 6 +++--- freqtrade/strategy/interface.py | 2 ++ tests/rpc/test_rpc_apiserver.py | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index db44ecda4..effe4725e 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -711,15 +711,15 @@ class RPC: return self._convert_dataframe_to_dict(self._freqtrade.config['strategy'], pair, timeframe, _data, last_analyzed) - def _rpc_analysed_history_full(self, config: Dict[str, any], pair: str, timeframe: str, + def _rpc_analysed_history_full(self, config, pair: str, timeframe: str, timerange: str) -> Dict[str, Any]: - timerange = TimeRange.parse_timerange(timerange) + timerange_parsed = TimeRange.parse_timerange(timerange) _data = load_data( datadir=config.get("datadir"), pairs=[pair], timeframe=timeframe, - timerange=timerange, + timerange=timerange_parsed, data_format=config.get('dataformat_ohlcv', 'json'), ) from freqtrade.resolvers.strategy_resolver import StrategyResolver diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 04d7055ba..b6b36b1a4 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -123,6 +123,8 @@ class IStrategy(ABC): # and wallets - access to the current balance. dp: Optional[DataProvider] = None wallets: Optional[Wallets] = None + # container variable for strategy source code + __source__: str = '' # Definition of plot_config. See plotting documentation for more details. plot_config: Dict = {} diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 4cc947159..d0e5d3c37 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -840,7 +840,7 @@ def test_api_pair_candles(botclient, ohlcv_history): assert len(rc.json['data']) == 0 ohlcv_history['sma'] = ohlcv_history['close'].rolling(2).mean() ohlcv_history['buy'] = 0 - ohlcv_history.iloc[1]['buy'] = 1 + ohlcv_history.loc[1, 'buy'] = 1 ohlcv_history['sell'] = 0 ftbot.dataprovider._set_cached_df("XRP/BTC", timeframe, ohlcv_history) @@ -873,7 +873,7 @@ def test_api_pair_candles(botclient, ohlcv_history): [['2017-11-26 08:50:00', 8.794e-05, 8.948e-05, 8.794e-05, 8.88e-05, 0.0877869, None, 0, 0, 1511686200000, None, None], ['2017-11-26 08:55:00', 8.88e-05, 8.942e-05, 8.88e-05, - 8.893e-05, 0.05874751, 8.886500000000001e-05, 0, 0, 1511686500000, None, None] + 8.893e-05, 0.05874751, 8.886500000000001e-05, 1, 0, 1511686500000, 8.88e-05, None] ]) From 176006da29cb21dbbaa6c901a2ee93915de7541c Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 2 Oct 2020 07:00:45 +0200 Subject: [PATCH 3252/3421] Sort imports --- freqtrade/rpc/api_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index ea616c0ec..fcbdc003f 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -1,4 +1,3 @@ -from freqtrade.exceptions import OperationalException import logging import threading from copy import deepcopy @@ -19,6 +18,7 @@ from werkzeug.serving import make_server from freqtrade.__init__ import __version__ from freqtrade.constants import DATETIME_PRINT_FORMAT, USERPATH_STRATEGIES +from freqtrade.exceptions import OperationalException from freqtrade.persistence import Trade from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.rpc.rpc import RPC, RPCException From cb74c9bcde49ab35b8c64f7d104a764ffec3e8e6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 3 Oct 2020 13:27:06 +0200 Subject: [PATCH 3253/3421] Fix hyperopt output --- freqtrade/misc.py | 8 +++++--- freqtrade/optimize/hyperopt.py | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 35c69db98..071693f8d 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -42,7 +42,7 @@ def datesarray_to_datetimearray(dates: np.ndarray) -> np.ndarray: return dates.dt.to_pydatetime() -def file_dump_json(filename: Path, data: Any, is_zip: bool = False) -> None: +def file_dump_json(filename: Path, data: Any, is_zip: bool = False, log: bool = True) -> None: """ Dump JSON data into a file :param filename: file to create @@ -53,12 +53,14 @@ def file_dump_json(filename: Path, data: Any, is_zip: bool = False) -> None: if is_zip: if filename.suffix != '.gz': filename = filename.with_suffix('.gz') - logger.info(f'dumping json to "{filename}"') + if log: + logger.info(f'dumping json to "{filename}"') with gzip.open(filename, 'w') as fp: rapidjson.dump(data, fp, default=str, number_mode=rapidjson.NM_NATIVE) else: - logger.info(f'dumping json to "{filename}"') + if log: + logger.info(f'dumping json to "{filename}"') with open(filename, 'w') as fp: rapidjson.dump(data, fp, default=str, number_mode=rapidjson.NM_NATIVE) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 75a4e7810..edb51677e 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -163,7 +163,8 @@ class Hyperopt: f"saved to '{self.results_file}'.") # Store hyperopt filename latest_filename = Path.joinpath(self.results_file.parent, LAST_BT_RESULT_FN) - file_dump_json(latest_filename, {'latest_hyperopt': str(self.results_file.name)}) + file_dump_json(latest_filename, {'latest_hyperopt': str(self.results_file.name)}, + log=False) @staticmethod def _read_results(results_file: Path) -> List: From 63e1cba5979e60b7dd9271122bfaf769ecbc27ba Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 4 Oct 2020 09:12:52 +0200 Subject: [PATCH 3254/3421] fix some typos --- freqtrade/resolvers/iresolver.py | 6 +++--- freqtrade/rpc/api_server.py | 6 +++--- freqtrade/rpc/rpc.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/freqtrade/resolvers/iresolver.py b/freqtrade/resolvers/iresolver.py index 9c3a33f2b..37cfd70e6 100644 --- a/freqtrade/resolvers/iresolver.py +++ b/freqtrade/resolvers/iresolver.py @@ -77,7 +77,7 @@ class IResolver: return valid_objects_gen @classmethod - def _search_object(cls, directory: Path, object_name: str, add_source: bool = False + def _search_object(cls, directory: Path, *, object_name: str, add_source: bool = False ) -> Union[Tuple[Any, Path], Tuple[None, None]]: """ Search for the objectname in the given directory @@ -103,7 +103,7 @@ class IResolver: return (None, None) @classmethod - def _load_object(cls, paths: List[Path], object_name: str, add_source: bool = False, + def _load_object(cls, paths: List[Path], *, object_name: str, add_source: bool = False, kwargs: dict = {}) -> Optional[Any]: """ Try to load object from path list. @@ -125,7 +125,7 @@ class IResolver: return None @classmethod - def load_object(cls, object_name: str, config: dict, kwargs: dict, + def load_object(cls, object_name: str, config: dict, *, kwargs: dict, extra_dir: Optional[str] = None) -> Any: """ Search and loads the specified object as configured in hte child class. diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index fcbdc003f..3d9e24481 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -172,7 +172,7 @@ class ApiServer(RPC): def register_rest_rpc_urls(self): """ - Registers flask app URLs that are calls to functonality in rpc.rpc. + Registers flask app URLs that are calls to functionality in rpc.rpc. First two arguments passed are /URL and 'Label' Label can be used as a shortcut when refactoring @@ -314,7 +314,7 @@ class ApiServer(RPC): @rpc_catch_errors def _ping(self): """ - simple poing version + simple ping version """ return self.rest_dump({"status": "pong"}) @@ -537,7 +537,7 @@ class ApiServer(RPC): if not pair or not timeframe: return self.rest_error("Mandatory parameter missing.", 400) - results = self._analysed_dataframe(pair, timeframe, limit) + results = self._rpc_analysed_dataframe(pair, timeframe, limit) return self.rest_dump(results) @require_login diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index effe4725e..b89284acf 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -701,7 +701,7 @@ class RPC: }) return res - def _analysed_dataframe(self, pair: str, timeframe: str, limit: int) -> Dict[str, Any]: + def _rpc_analysed_dataframe(self, pair: str, timeframe: str, limit: int) -> Dict[str, Any]: _data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe( pair, timeframe) From c9b3766fa3deb06f7c5ae1f997c713d3400a8599 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 4 Oct 2020 09:14:46 +0200 Subject: [PATCH 3255/3421] Remove rest_dump it's just a wrapper around jsonify with no benefits --- freqtrade/rpc/api_server.py | 68 +++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 3d9e24481..4e262b1ec 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -163,10 +163,6 @@ class ApiServer(RPC): """ pass - def rest_dump(self, return_value): - """ Helper function to jsonify object for a webserver """ - return jsonify(return_value) - def rest_error(self, error_msg, error_code=502): return jsonify({"error": error_msg}), error_code @@ -244,7 +240,7 @@ class ApiServer(RPC): """ Return "404 not found", 404. """ - return self.rest_dump({ + return jsonify({ 'status': 'error', 'reason': f"There's no API call for {request.base_url}.", 'code': 404 @@ -264,7 +260,7 @@ class ApiServer(RPC): 'access_token': create_access_token(identity=keystuff), 'refresh_token': create_refresh_token(identity=keystuff), } - return self.rest_dump(ret) + return jsonify(ret) return jsonify({"error": "Unauthorized"}), 401 @@ -279,7 +275,7 @@ class ApiServer(RPC): new_token = create_access_token(identity=current_user, fresh=False) ret = {'access_token': new_token} - return self.rest_dump(ret) + return jsonify(ret) @require_login @rpc_catch_errors @@ -289,7 +285,7 @@ class ApiServer(RPC): Starts TradeThread in bot if stopped. """ msg = self._rpc_start() - return self.rest_dump(msg) + return jsonify(msg) @require_login @rpc_catch_errors @@ -299,7 +295,7 @@ class ApiServer(RPC): Stops TradeThread in bot if running """ msg = self._rpc_stop() - return self.rest_dump(msg) + return jsonify(msg) @require_login @rpc_catch_errors @@ -309,14 +305,14 @@ class ApiServer(RPC): Sets max_open_trades to 0 and gracefully sells all open trades """ msg = self._rpc_stopbuy() - return self.rest_dump(msg) + return jsonify(msg) @rpc_catch_errors def _ping(self): """ simple ping version """ - return self.rest_dump({"status": "pong"}) + return jsonify({"status": "pong"}) @require_login @rpc_catch_errors @@ -324,7 +320,7 @@ class ApiServer(RPC): """ Prints the bot's version """ - return self.rest_dump({"version": __version__}) + return jsonify({"version": __version__}) @require_login @rpc_catch_errors @@ -332,7 +328,7 @@ class ApiServer(RPC): """ Prints the bot's version """ - return self.rest_dump(self._rpc_show_config(self._config)) + return jsonify(self._rpc_show_config(self._config)) @require_login @rpc_catch_errors @@ -342,7 +338,7 @@ class ApiServer(RPC): Triggers a config file reload """ msg = self._rpc_reload_config() - return self.rest_dump(msg) + return jsonify(msg) @require_login @rpc_catch_errors @@ -352,7 +348,7 @@ class ApiServer(RPC): Returns the number of trades running """ msg = self._rpc_count() - return self.rest_dump(msg) + return jsonify(msg) @require_login @rpc_catch_errors @@ -370,7 +366,7 @@ class ApiServer(RPC): self._config.get('fiat_display_currency', '') ) - return self.rest_dump(stats) + return jsonify(stats) @require_login @rpc_catch_errors @@ -382,7 +378,7 @@ class ApiServer(RPC): limit: Only get a certain number of records """ limit = int(request.args.get('limit', 0)) or None - return self.rest_dump(self._rpc_get_logs(limit)) + return jsonify(self._rpc_get_logs(limit)) @require_login @rpc_catch_errors @@ -393,7 +389,7 @@ class ApiServer(RPC): """ stats = self._rpc_edge() - return self.rest_dump(stats) + return jsonify(stats) @require_login @rpc_catch_errors @@ -409,7 +405,7 @@ class ApiServer(RPC): self._config.get('fiat_display_currency') ) - return self.rest_dump(stats) + return jsonify(stats) @require_login @rpc_catch_errors @@ -422,7 +418,7 @@ class ApiServer(RPC): """ stats = self._rpc_performance() - return self.rest_dump(stats) + return jsonify(stats) @require_login @rpc_catch_errors @@ -434,9 +430,9 @@ class ApiServer(RPC): """ try: results = self._rpc_trade_status() - return self.rest_dump(results) + return jsonify(results) except RPCException: - return self.rest_dump([]) + return jsonify([]) @require_login @rpc_catch_errors @@ -448,7 +444,7 @@ class ApiServer(RPC): """ results = self._rpc_balance(self._config['stake_currency'], self._config.get('fiat_display_currency', '')) - return self.rest_dump(results) + return jsonify(results) @require_login @rpc_catch_errors @@ -460,7 +456,7 @@ class ApiServer(RPC): """ limit = int(request.args.get('limit', 0)) results = self._rpc_trade_history(limit) - return self.rest_dump(results) + return jsonify(results) @require_login @rpc_catch_errors @@ -473,7 +469,7 @@ class ApiServer(RPC): tradeid: Numeric trade-id assigned to the trade. """ result = self._rpc_delete(tradeid) - return self.rest_dump(result) + return jsonify(result) @require_login @rpc_catch_errors @@ -482,7 +478,7 @@ class ApiServer(RPC): Handler for /whitelist. """ results = self._rpc_whitelist() - return self.rest_dump(results) + return jsonify(results) @require_login @rpc_catch_errors @@ -492,7 +488,7 @@ class ApiServer(RPC): """ add = request.json.get("blacklist", None) if request.method == 'POST' else None results = self._rpc_blacklist(add) - return self.rest_dump(results) + return jsonify(results) @require_login @rpc_catch_errors @@ -504,9 +500,9 @@ class ApiServer(RPC): price = request.json.get("price", None) trade = self._rpc_forcebuy(asset, price) if trade: - return self.rest_dump(trade.to_json()) + return jsonify(trade.to_json()) else: - return self.rest_dump({"status": f"Error buying pair {asset}."}) + return jsonify({"status": f"Error buying pair {asset}."}) @require_login @rpc_catch_errors @@ -516,7 +512,7 @@ class ApiServer(RPC): """ tradeid = request.json.get("tradeid") results = self._rpc_forcesell(tradeid) - return self.rest_dump(results) + return jsonify(results) @require_login @rpc_catch_errors @@ -538,7 +534,7 @@ class ApiServer(RPC): return self.rest_error("Mandatory parameter missing.", 400) results = self._rpc_analysed_dataframe(pair, timeframe, limit) - return self.rest_dump(results) + return jsonify(results) @require_login @rpc_catch_errors @@ -568,7 +564,7 @@ class ApiServer(RPC): 'strategy': strategy, }) results = self._rpc_analysed_history_full(config, pair, timeframe, timerange) - return self.rest_dump(results) + return jsonify(results) @require_login @rpc_catch_errors @@ -576,7 +572,7 @@ class ApiServer(RPC): """ Handler for /plot_config. """ - return self.rest_dump(self._rpc_plot_config()) + return jsonify(self._rpc_plot_config()) @require_login @rpc_catch_errors @@ -587,7 +583,7 @@ class ApiServer(RPC): strategy_objs = StrategyResolver.search_all_objects(directory, False) strategy_objs = sorted(strategy_objs, key=lambda x: x['name']) - return self.rest_dump({'strategies': [x['name'] for x in strategy_objs]}) + return jsonify({'strategies': [x['name'] for x in strategy_objs]}) @require_login @rpc_catch_errors @@ -606,7 +602,7 @@ class ApiServer(RPC): except OperationalException: return self.rest_error("Strategy not found.", 404) - return self.rest_dump({ + return jsonify({ 'strategy': strategy_obj.get_strategy_name(), 'code': strategy_obj.__source__, }) @@ -644,4 +640,4 @@ class ApiServer(RPC): 'pairs': pairs, 'pair_interval': pair_interval, } - return self.rest_dump(result) + return jsonify(result) From 887b2fdb5e66b8a2ab9c293ab1bac1d91d323d4f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Oct 2020 05:41:23 +0000 Subject: [PATCH 3256/3421] Bump isort from 5.5.3 to 5.5.4 Bumps [isort](https://github.com/pycqa/isort) from 5.5.3 to 5.5.4. - [Release notes](https://github.com/pycqa/isort/releases) - [Changelog](https://github.com/PyCQA/isort/blob/develop/CHANGELOG.md) - [Commits](https://github.com/pycqa/isort/compare/5.5.3...5.5.4) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index c16e387ef..5e7c9ff06 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -13,7 +13,7 @@ pytest-asyncio==0.14.0 pytest-cov==2.10.1 pytest-mock==3.3.1 pytest-random-order==1.0.4 -isort==5.5.3 +isort==5.5.4 # Convert jupyter notebooks to markdown documents nbconvert==6.0.6 From 80890e0f596687cb47dbe9608e4eea6f79b49c79 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Oct 2020 05:41:37 +0000 Subject: [PATCH 3257/3421] Bump flake8 from 3.8.3 to 3.8.4 Bumps [flake8](https://gitlab.com/pycqa/flake8) from 3.8.3 to 3.8.4. - [Release notes](https://gitlab.com/pycqa/flake8/tags) - [Commits](https://gitlab.com/pycqa/flake8/compare/3.8.3...3.8.4) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index c16e387ef..030b4b2a2 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -4,7 +4,7 @@ -r requirements-hyperopt.txt coveralls==2.1.2 -flake8==3.8.3 +flake8==3.8.4 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.782 From 8d4f7ce84f8c2d983756b7dfde3e57fa9fd686fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Oct 2020 05:41:39 +0000 Subject: [PATCH 3258/3421] Bump ccxt from 1.34.59 to 1.35.22 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.34.59 to 1.35.22. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.34.59...1.35.22) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 7f1a3dabe..fdd616770 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.19.2 pandas==1.1.2 -ccxt==1.34.59 +ccxt==1.35.22 SQLAlchemy==1.3.19 python-telegram-bot==12.8 arrow==0.16.0 From 0574a406934d1abd081f4910097d0704a34c1b16 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Oct 2020 05:41:39 +0000 Subject: [PATCH 3259/3421] Bump questionary from 1.5.2 to 1.6.0 Bumps [questionary](https://github.com/tmbo/questionary) from 1.5.2 to 1.6.0. - [Release notes](https://github.com/tmbo/questionary/releases) - [Commits](https://github.com/tmbo/questionary/compare/1.5.2...1.6.0) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 7f1a3dabe..0a5f3581d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,5 +34,5 @@ flask-cors==3.0.9 # Support for colorized terminal output colorama==0.4.3 # Building config files interactively -questionary==1.5.2 +questionary==1.6.0 prompt-toolkit==3.0.7 From 52b6f6b940009b11c342da46e5e883dfe72d4dc9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Oct 2020 05:41:40 +0000 Subject: [PATCH 3260/3421] Bump pycoingecko from 1.3.0 to 1.4.0 Bumps [pycoingecko](https://github.com/man-c/pycoingecko) from 1.3.0 to 1.4.0. - [Release notes](https://github.com/man-c/pycoingecko/releases) - [Changelog](https://github.com/man-c/pycoingecko/blob/master/CHANGELOG.md) - [Commits](https://github.com/man-c/pycoingecko/compare/1.3.0...1.4.0) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 7f1a3dabe..40eeb59c5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,7 +12,7 @@ wrapt==1.12.1 jsonschema==3.2.0 TA-Lib==0.4.18 tabulate==0.8.7 -pycoingecko==1.3.0 +pycoingecko==1.4.0 jinja2==2.11.2 tables==3.6.1 blosc==1.9.2 From 56647bb4985d258c67b6c7094162b633c906c3ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Oct 2020 05:41:42 +0000 Subject: [PATCH 3261/3421] Bump plotly from 4.10.0 to 4.11.0 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.10.0 to 4.11.0. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.10.0...v4.11.0) Signed-off-by: dependabot[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index a91b3bd38..7c3e04723 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.10.0 +plotly==4.11.0 From 64de911e16bae16f9a8f2da11bb16c0d79ecdcee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Oct 2020 05:41:44 +0000 Subject: [PATCH 3262/3421] Bump pytest from 6.1.0 to 6.1.1 Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.1.0 to 6.1.1. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/6.1.0...6.1.1) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index c16e387ef..820febc26 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.8.3 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.782 -pytest==6.1.0 +pytest==6.1.1 pytest-asyncio==0.14.0 pytest-cov==2.10.1 pytest-mock==3.3.1 From 688442507e4069b0e6c90c59162b2b8e297c09ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Oct 2020 05:41:44 +0000 Subject: [PATCH 3263/3421] Bump mkdocs-material from 6.0.1 to 6.0.2 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/6.0.1...6.0.2) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 091eacc9b..66225d6d4 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,2 @@ -mkdocs-material==6.0.1 +mkdocs-material==6.0.2 mdx_truly_sane_lists==1.2 From 234f6c2f5e2b4e1fb5621bd5c01d258fc1a84212 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Oct 2020 05:41:44 +0000 Subject: [PATCH 3264/3421] Bump joblib from 0.16.0 to 0.17.0 Bumps [joblib](https://github.com/joblib/joblib) from 0.16.0 to 0.17.0. - [Release notes](https://github.com/joblib/joblib/releases) - [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst) - [Commits](https://github.com/joblib/joblib/compare/0.16.0...0.17.0) Signed-off-by: dependabot[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index b47331aa3..d267961bd 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -6,5 +6,5 @@ scipy==1.5.2 scikit-learn==0.23.2 scikit-optimize==0.8.1 filelock==3.0.12 -joblib==0.16.0 +joblib==0.17.0 progressbar2==3.53.1 From 40b61bbfe37582575c9c94944da23676a8b56e70 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Oct 2020 07:44:12 +0200 Subject: [PATCH 3265/3421] Adjust trailing-stop to be python compliant --- freqtrade/optimize/hyperopt.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index edb51677e..5997e077b 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -262,6 +262,11 @@ class Hyperopt: ), default=str, indent=4, number_mode=rapidjson.NM_NATIVE) params_result += f"minimal_roi = {minimal_roi_result}" + elif space == 'trailing': + + for k, v in space_params.items(): + params_result += f'{k} = {v}\n' + else: params_result += f"{space}_params = {pformat(space_params, indent=4)}" params_result = params_result.replace("}", "\n}").replace("{", "{\n ") From 06759234b64b5bf93598243cad3f01053299785d Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Oct 2020 08:07:53 +0200 Subject: [PATCH 3266/3421] Add test to verify output of roi / trailing stop hyperopt --- tests/optimize/test_hyperopt.py | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 7f0e0eb6d..6c49f090c 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -1,6 +1,7 @@ # pragma pylint: disable=missing-docstring,W0212,C0103 import locale import logging +import re from copy import deepcopy from datetime import datetime from pathlib import Path @@ -1230,3 +1231,39 @@ def test_simplified_interface_failed(mocker, hyperopt_conf, method, space) -> No with pytest.raises(OperationalException, match=f"The '{space}' space is included into *"): hyperopt.start() + + +def test_print_epoch_details(capsys): + test_result = { + 'params_details': { + 'trailing': { + 'trailing_stop': True, + 'trailing_stop_positive': 0.02, + 'trailing_stop_positive_offset': 0.04, + 'trailing_only_offset_is_reached': True + }, + 'roi': { + 0: 0.18, + 90: 0.14, + 225: 0.05, + 430: 0}, + }, + 'results_explanation': 'foo result', + 'is_initial_point': False, + 'total_profit': 0, + 'current_epoch': 2, # This starts from 1 (in a human-friendly manner) + 'is_best': True + } + + Hyperopt.print_epoch_details(test_result, 5, False, no_header=True) + captured = capsys.readouterr() + assert '# Trailing stop:' in captured.out + # re.match(r"Pairs for .*", captured.out) + assert re.search(r'^\s+trailing_stop = True$', captured.out, re.MULTILINE) + assert re.search(r'^\s+trailing_stop_positive = 0.02$', captured.out, re.MULTILINE) + assert re.search(r'^\s+trailing_stop_positive_offset = 0.04$', captured.out, re.MULTILINE) + assert re.search(r'^\s+trailing_only_offset_is_reached = True$', captured.out, re.MULTILINE) + + assert '# ROI table:' in captured.out + assert re.search(r'^\s+minimal_roi = \{$', captured.out, re.MULTILINE) + assert re.search(r'^\s+\"90\"\:\s0.14,\s*$', captured.out, re.MULTILINE) From 14c66afecc4c10f90b7238b99abe1ae5a12f77d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Oct 2020 07:11:13 +0000 Subject: [PATCH 3267/3421] Bump ta-lib from 0.4.18 to 0.4.19 Bumps [ta-lib](https://github.com/mrjbq7/ta-lib) from 0.4.18 to 0.4.19. - [Release notes](https://github.com/mrjbq7/ta-lib/releases) - [Changelog](https://github.com/mrjbq7/ta-lib/blob/master/CHANGELOG) - [Commits](https://github.com/mrjbq7/ta-lib/compare/TA_Lib-0.4.18...TA_Lib-0.4.19) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 510e77dbe..7d219f7ff 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,7 +10,7 @@ requests==2.24.0 urllib3==1.25.10 wrapt==1.12.1 jsonschema==3.2.0 -TA-Lib==0.4.18 +TA-Lib==0.4.19 tabulate==0.8.7 pycoingecko==1.4.0 jinja2==2.11.2 From 4b53c2bca4aabe75b73fdc0714a4072c17319deb Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Oct 2020 16:12:41 +0200 Subject: [PATCH 3268/3421] Complete TA-lib update with new binary files --- .../TA_Lib-0.4.18-cp37-cp37m-win_amd64.whl | Bin 537651 -> 0 bytes .../TA_Lib-0.4.18-cp38-cp38-win_amd64.whl | Bin 555204 -> 0 bytes .../TA_Lib-0.4.19-cp37-cp37m-win_amd64.whl | Bin 0 -> 482390 bytes .../TA_Lib-0.4.19-cp38-cp38-win_amd64.whl | Bin 0 -> 504687 bytes build_helpers/install_windows.ps1 | 4 ++-- docs/windows_installation.md | 4 ++-- 6 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 build_helpers/TA_Lib-0.4.18-cp37-cp37m-win_amd64.whl delete mode 100644 build_helpers/TA_Lib-0.4.18-cp38-cp38-win_amd64.whl create mode 100644 build_helpers/TA_Lib-0.4.19-cp37-cp37m-win_amd64.whl create mode 100644 build_helpers/TA_Lib-0.4.19-cp38-cp38-win_amd64.whl diff --git a/build_helpers/TA_Lib-0.4.18-cp37-cp37m-win_amd64.whl b/build_helpers/TA_Lib-0.4.18-cp37-cp37m-win_amd64.whl deleted file mode 100644 index bd61e812bed0dd263dbe3da2b490a2fef17165ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537651 zcmV)8K*qmNO9KQH000080CFgoPAwF1{9OqE03;m%01*HH0CZt&X<{#5UukY>bYEXC zaCwy(ZExC0`a8d3lxhW36t$Pt>C{!F8*B%>7!PX?p}i=w92kNx#JXELrTl@{yNXR&`EYhUe+kC*=tgFHf6p;NzKYS&(jJu#ML%VGD+L)vz0=7DdVE* zblxF%gNis?$3Ur2{2V7~{E)JNU_f=8CJ$0L$+HSoIjXmD4gatMs`dp}1v;dHVaUpa zfu5|`*PXgNeC{Cl2>VA9(s;uNh^Sac66&zm6)S4w3Kpj<^HRzm)uSx0&m9DCn`Dou z&V{dnH{fu5aEUlQ-xn>)kx5uOGOEUlbTVzOLPe?9z|!zw9PduZ@WY4G!mbrdT1QxKt@In}gV zvU*=;qN|M}s=D5xMa7!JbkQcwscylRqh z7+3Y7U_GI^{}(BiRsh>tr?VP!JNF8c3=V96fBKA`|BmtJ7Sqoc8ibpE8lY!xyXh$y zMLTGzA8I;FR_)Uo-1u9mUv1gyiLdU8G49<9Lyvp{psFreyyHt>DpcgeT8d7V9{xtzGi=l7{pC3OPZ;GeMNaJbs;>vjGDNuS|}!U6&`$3L^Of-x6GgOg~* z>S)gs4f|CDwvv3!v(>kGbfCq4y2Q>VOR)JBr_I8y{jgNR|E8z<_~cS6JUVSeARqwRRs*}nWbMo^*g-I zTx*oYJHA7<3&<9g)mukLFSNZJf{{xT$b&bf%{EoFQwNGx$$ARp?!>R(KjfhD^_|xd_8)aH%CGt{Y4f~gpYO-=i{!EJAh1wXJ`~O$^rTFCn z81$c)K=;P1MD(@{f!6&v{B`*0UtMv`%}`#h;YbJ@3g4;W>SORCc63#wFnyiu$4k;SWeh$gJ$Ibg82h@pELK76+W6ynpT<^Uf-{O|~R z_Aube^uVzcfABydMBB)TqZep{9KrD&zDn;05DIh#<3~)C3%{i(sCzr@$G`wRma_E_ z-6R=&gB-nVnJ|1zUQy;NR#k}KLn`6>aYBMF&S$y@by5avuiugPm|@8tlL}6Zz4J-i z=XE`L6+M>uzNkcfzl;9pT89;+%7sj?;yN#@?q_s&n)clZjcjY~1TL|=106lVp`&3r zjszMqbbXzV299sfh<%Q~mtVWHxZWaC@RP6M54IIQZ1?sYoZ+t;==!#!;#^+?+gNl( z0%I~RJbDg?i;)V>E=5PnIIEzAc3N~63C}g)Q1up5tiYDzdJ3$H12{Q{ov-tA@Wvx* zsXRrwN5-E%D)Fe!0H|mW{|J<9XubkCX-fypfUMr{E_NWcm7D{p_>AX70RuvO13^OT z95*6L9xTgMz?q`a)>_K4b=dhzb<~ZkO5M0xJ1xS;uqmZ+0r%nkn%^Xq?vQ6^ zrC!bqD^0J0$Jyg)Gii!dJ{{8G+qqgjdrn-R>bStQ6e}SPG*D}vP_;v^6-bK(a;hSh z3V2N598L=i&g=nO<&S*Z$TKyGmhJt+3dm9&9=3Nq@~|~+rMQ0RD#Ke~c~V30YHCo( zg0=~S6hoi*A&@6JZ8>qN6B5sMoj|vbdD)5Y*dsjprqk?O>|4&rBi2+SjU10oK%H zcUw?ARXRGrW8&X<-&#Z*f4uN+z%fjTzM!$8wot}+&I`!@L}7GtfN!DnydcfeC>DJf6E_hv@!5 z#6EQ`>|M951lRW+qrR>WWu=bY8u-+;re<9l?C2Y>oUs_7sck115lYo9fs=?o_MGw9 zv0E}Ph}xtB^o5R|VQNjl36CsIO3S*Lk>Dr2)KFU}q%CK2Smu_Q7nq>aaDta+p9F5` z+`ziKo;l#0trsSA=Fl_Ll?gDY6GCXacR&hgOVYwQ)EY#nc6tB`1veaf4r|>BbT>oF zBY<(WbS=HC6i*j{UNefr#ngrMrsF5UBBW-9VBWSwvGCnL7S46xngeDbRx%i99r|Az zVoO?28%mk1*u^vK?bz7%W{$ZP(rdgmjDBPCB=F3PFk|rHiLw zs#Me0U>ZOaZRrEm``zVh9#)n%wzZ=f8Qpeul|MQi{(BC8_&VKrd(8vK)zy{wKM;?F za1}-=)QVO9KQH000080Bb0zP*Ge%j~w&|000^o03ZMW0CZt&X<{#5bYWj?X<{y8 za5Fb8cWG{4VQpkKG%j#?WaPbne3aFdKR%O8UFr&}l z3}PE4X$OK0wN$O;V+sCPe}Ey;_+%8f*4lowWq0ka+qJFjYKvC8`2k7zoq))12%?xU zq9OQWKxDq>ea?NJnF*m{m(T7WUtVP9ndiCBx#ymH?!D)nd(OGxZ!NcF+H5ul{Us7M z+e(}KE4O|AKd0Sh8-3BMqirvZ*zl#5_RxkeRV?`akBS!F`NQwsdGim7YHq&cjvp>6 z`p$QY?yS9|==*mR`LF+G(GPw&|GN`MjmmZ_7(X6mv~IioohQt{z4?ou*hk;>j<=U@ zrSB&7UGL~wzKg&2FPG;B`TqTvy}kSme)sJsH2T)F4lh5Kzu#H@CV!v*gnYltzrXSQ zngyt5a9d^tY_|Cg!)*U|${**N_xf#LE*hCJ+GTU(*=#or<9kp3nJDGr%O!Sv;yS}- z8>ZedzilrT2vPa*JiGal`E}}VxqR`{F}4VO=bRX0TY;PN3T$zFuQ=EC_Dd-UFD$Ul zx{}`M&a)N%l|Cw_=QexFjiNl;ykVy;ZkxF1yLT_5?;mC62|{SQBfU%!VKwp2`8O}R z*=Boez|JsjAJVroFRffT{huhsY(@WvxU49jDxhy_+n{pI6BkNBZX>nT_DA}@Z=F(Z+UY6r|BrvVk+syDZ!?y3(T}=j zN89@Je~lGx*EetSRp?9Kdyz^6jUz#0yWiMfzviCYl{o;gbQK=>B6GjpR=-($qaACaQ?&l|mwPokgjgax08=V`j zPiV`WC{g#C+XW8RmK`I;?VXWGB>ZJPel67FZ+y-Ty!~ZwJ@7T%Smp+&cc^wPb33hH zCC#XZF)@~+dpTSDHpV50T{sstzt*aUw6!2JBn}G=w@L??6SIJ8MWgFG#3|j*v)6vt#mafAFpnw zzx<2=t#W6~;nO_yvoc1ouR>A3-APZ&owyF!U39H8pbC2dUC%Gxg+N^%nqtkoB(yt+7b;#Hl;%-EL8ry>2E!>OKG*>>5b%BP`i=+9blRhK)w%BA~ z=fSNU7k4IIIh+bLRp=DVK*K{iVOINd@aEW(*N8Wx*Y)7X1?SL@>!UeG^tz7EwDB*w zmk_RjlEd2g``imd-cNP!(SWf#P_j8>jJxeC`P7V@Pjy3vUm#j*_pPL{m(aa2;~DpM zZtXHRn(J@$yNhnoF7n%KxA?R>mhqrGsvT^mUlW_PM}JE1YxPgiXMM9)e5*MHrZ!%(UZMC zZF)O>@2BrK%eu7s$5c806c^q0xdQauSJqs64{laWDexKX^!7ak^l+Otof_e%hmpGD z39bGFW&sa9p0l2)-9{xk7f++Yp~*yHmt!*BXjwd&E+gal#(28XwwS0eDKy!&7!V`l zU5ioen~SsQ^DXV+3+$MQe2LZ58XZ41X$Oj&uP73sHc!`F?kUvbsyN+=dyjmcA$GHSkMp zxaQePr0pUYTK!#ecW2+7xF~y5tDi~T%|xgsBFq61TC|2KbW;dHzjG#Q4Ia5cgrFOR zZRM-wuJEri&F`Z^b5WNRL z^J(U+d@JU}yg`3Gbbq%mL6dijGl;)LtBeE8DgLru+GEboXi%v2#&4)4N%PSBPoKON zcxb_(Pg+1U4-GZVBSSA_$l8K2_B@XxkGYD43|WZ$jYTEReP2J8NUVgU(|0+pMh#lP zQr7ERw24{HSMqH4W-J<`&0Yhxz3cDkGwVNB=GpEl)QwU9crh*aOHqgM1TZaY)n>NV zHD|POqlQ}lXZvoX1Lp;Q)`-+ zgO&d|cd=b0fFe8Ad0N)5%E9_h3;yLfvLZv2<^}&^zVV#<5x()Zwk(fsP**N0v@5C_jdbNjlj-qm+l@w~_puhY-o z%_kv8&}trP_BSqbLqrdhwLCBdJ@9mz9I+xrjsSAp9z(S!+4zug!IfX8Nwe`8_d?u? zR-T0XQ;t$3M3nNf-|zGOXBSIEFS$K*r|$g>OvF6H8vOz9f7-a6A8X@ZV?OXDHj*gO z#Ig$sA8Y8xlgwbo`*iu7`$Z8=gjq1hUwS^Z*bkV?<&}^9fCY9V3N3Q$WkeZ)&f zo41|ik-d!Ak1-kHo?f%DuGgU_TEfN~Exj3Gqa$o=2zj@Kyd5F$CR!3UC7S)l_UMEL z?V@s9{pQ*{p1QK*JZaHfwI>#;J8l;-B{G7?X~Y?)rTchB?If9;u*hb|%>w4q%^vR*+Y%0Tu0TgXyVAGA}r5@vLQDFMV!dSI$DK=bTx{1(!~Z~f*))84nQsG zh^RBdT&ja+$-e?FGQuT0{uUQ=?!Nj|XdX>7gBWQH!-VW~`zp;f#EwTyGB9co~+#2%%%~5<4 zvSYqIHVHU>g+-GQOuT6|k5x!aZ7B^OvOA690xfkZ!O4eYkUiH);@@R(HLO{p;16>A6b~T1b2r(XE<-k}) zO{U?flXx{x_jU)3)r}Fin{LvOUM6Z2Jz5ZoIyMn~=;kx-X52)dUcR*-vKl>Ks7Ld+ zV)i1k>fRPT>R4@4ua;8LnbG{B5KZ&tbm75;hb~HWqaD}9RA5GQLeb3V<)t&CIkY^r z0y<$i3-8T{7M6yLtFFEvpX9?D`;6#R4+Ox6E%{HIxLSME!Q$UZbTO?D^(&NwR|wHI zQaB7<1}TrkzhAQS7obI(#onpI0-EOyqEuuX2`SqH#EZB1wMkpFhD9`i;qqNxv`E}r zRTn2Z&%x~gA%Lm#XaE@a8HM*S@7EvXG4SvSC3ZcG%18)^WPlGyzu?)cZw*R;fpQgp zO$U~JRj3G@Q^Esb7|$0TlLeJ(K(9nUGs0^`1-^DCM?O}mp2igHBTKxz{+|$vQ znScyumr)lPF1TdINh2W1W-?2v87vq28BZ>vgcdvi3(^}EnKEULMpYvS@LocQ>XPOH z6f}f)LEK+LPyxV2XtAeFRiSw{4ro1dGZIAKIAy zAnkf4Z9CJn_D+B$y%M@f2IdZ8?F&}?E|06r!F`uIL-Vwtvx)5^tCU>7TIBj?ZMLvjz1DQcQl zog+AAS|ahcxtF%aMnb-J>mZ&;#b1+t+SdoU7Xm;NixI)-b@l{l4AUDOKMNR-uNUsF z9j_ZSSX0@X+YE+}6oI`kN%j58WHBy2iPJ$SCgD) z0hz}S&W-&CxncMyF7jH zaMx#Yy&l!lt$iz)`RuiSj~6^4W4^mMoy}9;a>O1)&)u5N@={X@!^`Ue3Voc(pi{>I z1p7>GEP#8srPHa;JyMOeGP$^sTN#uIWG9+<6iozKxQT_#EBxu2Z*v03e2>%W%qG>u zLhga#cw>GhtLKH>uK5mU>^3xPUUCpPhFj1pJWhTw!+a6iip8OYCWmh4rApaNut>3q zr3V#Mz$lRHGblmCz|>__g*(V50oS;{dm+z83#ze0H(4)O7TrQM)qIpai)FX=zT|8-OKq9u%g)CM8!{V(+1YW2= zkb!kWq+{6VSXwqjf^Kx0vN(;od3=L(p?g0xb)khHCUqfG2qy*S_vb*tVHx>}yXkgW zmo~G@SlTR?*S98`+tT$LUxjZrDL8C(G>-X=HDRO2Z){FAapIY;+7}@WXS4RmFc)-% zZmsDvO(gj)n^IS{XiAY;t4aHcS&{izTlNaySjG(v)9SPAc};YZS)!BtjDGfhoo$<) zq?2^|8=FKcC|mo$WuQa3q8RE*>Lz-sjWY#LXdy)`*tb9lVOhbr^r^A=tc&#WLU;s* z&mO)!2E!*7UvE7~=6xNtcwYw1pgkxpW0~r6(npr3>LbD%<0I~c^f{mAAChgx{o}7$ z54qhvi^?6=YqrymMecHFB;lGJe%PFf=?94@5qD9L^yugV84!Bfbkk6}6FnbY#FMSx z?F<{8It-=8mZ0%w2EoQt4KK~ndHYb5sOyBGG8Uu_1&@SQtXLr z3do43*b_x5vB$0Fraduk*%RZIJ#mLj63Sl6@}W(vh!~W*C?#x(tb|gs3dQ^BVm%PS zk0X6=DSIg!ZrP5PpFujwF^JXBN$i&S)@E7!#AKUd@aqPwfwO0Jm3EyyyXy`%mHI6? zcs}bSG6=ZK4O_B{9lOIuSJ>DTHrm77ndn(#i=H%>7P^$tdw1*_%UoJ0Q>`sl0vs=~ z45cph&=l5P<_f_pToON))sM2p^rw2wzK{`P%$8<|U4~IjVajdHlw!PRrrZLignd`6 z_r#lEOyWqOpURYMAN?QU%ul}dU}Lvy5Mz<=Yc81TDIemu_n_%pp`uWo$Gcs-PnTqsldaSQX~Yig2=r}E>*Gvh}l z80)gqkZEV9^A8c|tIu#diP^AMu^|+`!5c~K5Ss(C`f22bf>DH>=#LmkA6k2W4 z3GJaSJ2$gFb@QwxRlhdsWy7fUZtUIAi`xLK??09P!A-7^CRb3Ce+HZ{Wi1L##tsfC z_SJ9Td5GKFijhHGP2gJlZWBGXn_G@ep{=a`&XU`$eb*^7#b{Ql_OU9pH-)bG`>0s6 z=GjDbbYSQZH6vXpma~^C>1MhL^liN5^g3E2RBdIdf+j!VeMQZKmp7ppCIzC;TCL$l zu{liYcm>u0ZTd#yZ>@fhO{jJ^_r^954wZK?_3qVcuQBQuF_SFvm$eA;Ir{{w*kwTe zB6Z78XoDl@kps39=7vtjdJSW}kE0Ww0V+2!tL$b-J5^D02X3c&No?EloGB_+3wp~mcI>qF>h@ZDbvx*9zYGyf1*RH5 zP7xXVs)rPj>C^q5MdXLn_%Sg@$qy9fDEa=GU@k9--NofNl!7_lde16($W+?%-ye+m zYxX4OpAzQdc?#Rfa^L*pGL!A*?UeZ^;uiMH74{dJ6CO$@%z2MXpNz+TVA&r+GSm8{ zWW@>oC2;vYSRbZq)uG)M2-E(6h3t4z{KTbnLdD5=dRt`2v^kh)(-UpM#A-d!p(k2p z)6~zqrpw#~Y-%`sOiT?>V-2wi__0Nbozq3Ub9y`PoRU(>JE{xWys*SHFDy6B3oDd) z;YFL67qIAH3w66qr1&0NimQM{3ItFy)GP%c)7S@g44Po(XH+ERByi_>;OONaER zQkW#shVjA0#)oE@7{pa%J4_6n{KBQ9v+{XI7~KT>f@M}%qRa|DZ#@X;^FDhwv&8rc zwk<@!2IJ?mN#X4fn-p$$mxoD2u8G6Sz$S)bh$B~w`FWlVmIZdrxo40I)*Ir2l@BsS zuW_cjV69g!SYguzYoqRcGvsYoE?7h8Z+p+W{uVo9{jJ>;oHqgy5uD#n)!+Vhm#{%H z?%C1c&Z1A3rNPBSYW|Mtht*`WI+uENZ`gPvWULOu2Mhg(4o&mHvWyCQ&$dw^W*QZC zg^XP~Q2UASp{2YXWRDTzQaw7;=`((^h#4|xhmKA6H>en4uGjTC2z$MyHzV1CL~|fo zSm$R3r;8zW;rGVEL+!$s{tdhER_`4+<8656%brxe+}{Uz=+tfa$zNm}-qPjX8fqW@ z$}hYRKLos#jrh{PVIy8Kfb7H{puQu{oC{AAqe9I^PYHW2veOu3BeCYtBYkZdc=SjG@)qDURLhnKPHXNdyuue-E^&c->0P$n};Qd zU`=bFWY^4S{>hN{V>rXeRQ?jLz{JAsY%XR`TUtBIS+z0!19@ss(QwwWhJ#IM;;+Tb z9XSKyd+;U;*gnz=ij6Fn)9 z)LtK}%v79^TOZqGDGsDt&fSPYD;cXlmNX|irZqZ#p*V`V^&-`+kel<-xfnF(OAixQ z-wXPmr$~b`=Lij`P~j!92>RmsQ~H9g&Ofz7p#9{t80*ujvq41`$tWS2n*TK0_#*{4Zphxm?oOV z9kJC3*IRK*Y~zWntWA6Drzb?JE|sk_n@H7*SgO9ArRw=CRkJwdVbRLdWJ=XCY9UOo zP{Q#!^!{gm?`Jk2mMu{m9&$+w)O!bIz0tN&YSWre616k#6kJX>J=4 z^=0UFtBSte_6lNH5@RR!wDAU~-Z)a;5P6$w^H5cbyt?6Y0dDrn#xV@k)3&q}Ko(`M)NJZb zV(d%%av|H|2ftrFn;;bH#&H6oEz4xNdb76dIM;T&+f#B_Z@fg0R=CUYv$A*haGqCu zdgCIj>J{!;2I(=z#@-SqKe#v=F2s(Po*3)fhsJIPQWxlrlccdE4CuOncMXD0cobKY zIK9BpxF83u?XcziA?Kg<#_29>{x@dQK&~Wuwd~JKj6JfK;5ANn62L`azmZw8IoQ&Z zN#yLkr_MoQ#?~p`#okcV@2>P2n+c;9LG{bJah(&p(YWnPwCatHZhzUBJGbhM7g3Mi z3NIpK9U<6@aG<^$6RL*=x77YzbhSz3kt>ZcX3s4x1EFH0#k(qh7}b)RQfx3*dOQtYyLX@`y48zPeBCcU}{y-?hjWHnPKn zT20XKF(tpH8^rt_A#XFUU)mpC)3iV4*u34f!$}GwCO%xhc~KFmxil7iWxMYDua#M< zAB)kCrD#!gTc~j~G^X^MLZm@A`L_@_c{7C`RNI$9y9<_1vH!vT&$XHkL>n`JYi3Dv z+e!p?wJ`v^<~KH@bP!X%zoc1S3O3qmCx@sL&{9vJ><0IbJi2iMb=~ILVJjactlDN6 z`I}#1{OUIc8(o^eWiVvVd$d;)HAx;YQGOXcn`5lqV^nq7QL3r;I3Kbl~UH( zX=nC6Jy`nnM;h@tHameyR2udF4>IP;I;=H zgvuRG<9ZLVZyfr%ZU5;dv4`Pp28^x}|04<=W{qFT2z%dEpLp$#v$Wsmad*_0z^bHzme? zvOQPk6ALa+Cd1Xli+KdE+^8G&rKPB3(J+2U<#eo)wT`H7SR01xWx7%BqM_IFmP60% z(v4}D3(dK~u+{ZukPNhV*h(kf_BUo=;^Bb>_&4arh^14~;rl!SfX86jEYFW77_B_z zWYV-4YDLRT@O4ux$kcuLtrqO{De}WkR8)!C@SDlnMp{k%wpHawuF||Ws~E40r3Mva z!puo@HD;Qt4%e|EyEJw_saMI&LMswy=8n5Iq8Gs?Q1^*};bH^)_`cC46KXOjas<9Rf}n`LPYBhF<8B08LT86Vj71&sJIdAq32qm4@ra7 zw860t+fwXHjJQ);=1ggsQ(ERU3s^04CR^rAZ&?aJmjFzU9ASV~0Sllj3DAlh**C~u zHSZ)u{!!mQJjUj;Tw=Ex1;$j9JMALLCZcxuH%-fhXa ze`<($YHbWMV+IqgGoyt+=o+PHWT2 zmClgj&8qx?A{;dxa;iNiuG-pjYB9Z8ErvYOx6j&hnr6Cl zGmz3M-f(g`Q(7f#=yY1o%~n|(POkK6@@NV;-fwcbQoso}I$hRt6P&f*99en}Ri~bZ=)cI<-9%b#D-Pr%5>_uA*^g`SfRY>Y3XSC{`58>`%(aw65e5hPP;U zEKLa#>(CzMc>DT~A-upn=I1sQ;g6lB^Cb$NU2T5GA!66a9+c}6y4z1BKH|74t>OrY zvPZRshzbu|ErCQUA;|f(>CGHYbhWsXEwy$bxc&oNKfH;IrTNN7r%oYJ!JAy)K*&dT zUn^k20xaQS=krEkUf&!J595d}&BddY5R?MuW+9rgolWTI$UF`XyM)7z_OXR`w*-g5 z>q;}X4YF}j)~sge^JU)6bH=U~=dNkyUe`BdXq;~{%M7!m#V(_WT~anDUdgw-d}LE- z7ZLXf-ep0U3j>|uJT?15m-Y}M`8XwjPn*+AxB9e(m`!MEOQGq#x7XfkER|q8HGlDb z*|%Igf8As?D{{W96nU-~QxGe~H)L#PTLsLqnVnoI@?>z1GU*53tL=5KpvJ-OOFwg} zhK2CH>pL!vhT`zEovLANi^r#io;3r#bFuaG34K)d)3c3>hs%CQ2J8XLSU=FCGwr^_ zYG0${MVj%ie0z+|Z!}0SSaa=Hbhg)9Y)m!hm-3e8RF&7Eo4t>GvY{Z{f^CJb3sYf= zEQ{4JQD&c>t#q|3AYM~nH@VA|Q);+fZrK|8FljDH7C)m#@1$)%X~G?lDD zhF zu3nX&!+`RhN$~M0%t$ZZnB00DZ@H;mVg_jKLkuRnN0Cs_>eTBx=x;Tt>qmHP@t3`( zJfpU#Ago!khvPE$aK5Ndl<5og+#p{l<>aJ%p;YDxXtBJHbL|mxALptg$$cD4Q%%|v zmL8*fOKOL|0;_i{JL)@m)h`$wol>g^a;|M&%|1L`0rez9g9m7%m(9LtwnAL*QlL~lIDYP zFVm0Md1#kUo3u)M_<*t??AIRNt_hi$ys$=e@QtkVd!X9ikhnIQ{|)02wE3E7{tdn| zntx{QEZh6QSJ46Jo02u+kY;YG0hkK0n-44DpjMkjjdfzG;BzqMY zrG>Ls&BHeN4tA@WMbq`J#sa;jCDGzbtO*$1Yzru7CU2%SmrVi4chthB02h5ubM?Kd3%uc_zOWDH+&UgCp0qOJ0xFG&- zEkeqI+5>_5%@3SUnD{c+((BDAfkEO+tfeOp_7iSY?*Yy89%|K^qRbL!P;3>cW zdJp2WwW?|T>_t#D1E{Rxaar{ph>yJ}gxWi$AV7lveYg*=;Fi=vJ@oe;&|tS9QP_TVBXk z?dpX{LXW%D4 zR`w)8G9*xHt&b^nl=yd}kZLscB`i_}O;TN-N-9t)Ngtm{AfHL0{xmZAPDdyDogK6Y zwOTckpZBvnL{*0nkLK@<0#{I9dur(xvvlVvrT3p&TIi5g5QWrpejs#4z9k~_^+e{( zwc!*hrw~~+!^xmdCG}vyMD#DpO!jY|A=%4qr|{=c^bdd#pW6vT6TV&1 zL@3mm))N7|6_BxdCa>~q8QjUKuXYU@7jK;*I3emONTj@AmgPdyhg(i^AI>}DK4jQ` zwIffdi8}S)(W6_aM|Vn(J`4L8btla`DRWNOpgE`W^XD7Yn*osP45yznBBu{82h5lK zs#j9GdZ$!++Cg^)08_^0V1Pr6%QFCIu|N{mX*$NIYUjBaFY{YsV|e@|=Fc?`+`;qb zn)EegjkTsQcF8Wl5`#)VpDE0`ll4+<4?aV@5UN=RM%fiC>((Bh&vDr;y0=w_-w{k% z8(HCR2}ftS=r*zIX1%UA6F#a`B$~5SkLEwb{t}-*{*xR-SKH5MI{q6OhgI)@IiBgx z_Cc(~)&H$rG!*nSzOta7AxotJPQpyb zwq|yklTYf@lhdUqS_gF;<{wq#8B9W_$AfBrz<`w9^!+>=dplA+h?83df#_8`t1ugB z{io8N<46W`)$#8`to0ls7(CCuhr9dz+U!d`x8`xa6_6+L5#W!z;QJ8bt6;jUI)dBp zKzfbyzJgDYzm;txNKE5XEncI%JJGIowG>hJ=ANsUy{SF^TqflD_S9j~4#RJ>kW(+o zhzZdzwtGb{-`WdTDhw0vKJn(>r$?_Z(7m4oGq;B`w+A!(36MXUUvK9ZFoMkSvyU(+ zoNOZ4Zz9-}GK93s-P{#4dX&%X_SEhe%x`IZB5f5G>O8e~EDBkJb&J{SN%ANWrJHdR zI^EDO=B6t5NV;=?wck~0b@-x~{S~Anm(UQXm}tNXUKKeHa{g|yB8qq^D=4!nBZ}5B z`ihP$4VlAW`~MWxa?Nfwsdh%g>Te=c3XPoDY?0~Ukn}WGg#9Kr@&}V2Tcy% zR)1#K&~pQjPMaUp)X-(FN5Es#|4d_Y**TV4@Yt+`SW$XJf1c`Q8;XlXr{ZdvfVVgN}Bs>`%RO`ZT$c$YPe|{5nX)!dc=Qq!GWTfx5aHq2a3Dx zL*<{b{3mYW95gT*1dSu%p^|K}A3(JV3VU?4@}5{aIvEUxR5Y;muoJ}G(JDIZ#?fN` zDKcZg{G*e(ci@xeVgHJWqthb8E~1~k6aS{jFf$?ybu_2ro)#JQg7RnBZU%{^M2Nk& zaZGAt*fKNWOtTdx=95%4KJT-|gF?i3zhcb%JX_FNd?20^HocJCKr!CM8@_9}MVBF+ta&l)=(I$QZePJ!kU?n;B^O7bM03pAI>hNmQuPtW(k ztoW$S>ep0OTz48)wDyv>oW<<%$y^_ynhJMO(AXI^c81EfY0;kz3SNBA3|nK#*z(?l>z_#r2S-$HzujPm0M#tLUVEy^#R3}hUUlI+}! zT^!tl1Aje!QT7&Zu=uh+l`oG-Tz;j6{R~kH5GK_JA$(%v6@V4SQR{#y&G(G3?zDDEYV~5%#`I4BVot28N8Tu(z9A z)d4}xqc_Tfq(1}4Gg`aea@+yjBD8u)LmbbDz%PVzjYQ*p%BJ`%Z%AvdDQK#Dq{K6> zS6&S35PYXKysF|E>x(&_@e`H!<3m-=pShZsdCsVxAn}YpL_FiKQyH}|n=5z5>ct5Q zyo(&CcJ)v)f#xdLgcg%wD|d3F4=A1VP2h+|l@GP0?+Pm+3}9vtm}#}+8MPP4AmgY- z4ry$+;7UwmSJD%~SNHk^%N3!8JC`Z+lTsD&IU$=f@kI8jV8)$V!wQq~cQX~|ylYYa z-mlhPVTE@tx(xUcaW|m)9B1syKu$xvBL60I)-gJr$@C|_)chyijLv4D!wFDC^@(5_ zmHa1*ISkN0604#wPIr1150|{O8Q8dcQnEHiuebXW?TwCC6>}nRz(c(8CFTw4|4G6i z=5{r4NyULaLv`bq;W=EOh+%dovkkxIo)EhoT|4`9U2DD0gUIEWr20Z2q-|Q$Ses<+ zSxMD4VHHOZY+>>M?XjTT7OBxWAm(3Onr+$mB?3Z@rXn2tF;rWd7PS~w)8 z7o7&vi_$P1qc9yQkWR%^IdJThuueDxKw;7A+UdH@88nXZOjjmHOlXfi{OSM0_|Dgq zqreNwQ9u+ne`B$!^s$3L!GNg^j~*Bl=vh5CMZX;!uu%TZoAjDiQgQVf?BqLHxm8C; z-3|@8O>3H;)JvPSWkI{rVSgR5e;=Z7wv;47MyFo3U3)wMJV-z>4RVP2 zMqpF{3CQs6vcW|S@mj&?OxMh4K8?-7VmxDuowt2PbOPO)TFl0~wp5$;)Os=F<=3U} zzfO}wL@FJ$eC7K3d9@u05u}pElUx=@Tn==7CB%+g@%23q5?CdB*X9N-+e__>A&Ds> zjA4*1(Q7(F-nAj+*&21c8I0aw&pd8Qzm+yQ@h8_Vd_!W}+niV!bn+lZ7dhSuWKm;5 zNi&g|?{mM=5AL<}<3l)JR!k3;m&D2o=^{2d>PuYpOLmgr#8#V4H;ODO9?SOC9dl|A za})rLq6deo7+SggTec%1P$gPNi-*y))N?=G$y}4z?=w1kd%r_$+$H7d=PN(RNd37s z{poeIDyICLa4<9V=d?UC!kg+h&$BENAl;sAqfp>4B&3Hdlv#zlq2#1aZdNk)F z7f%cOW<>MtA@7b5N%K+1N8tI8w>ccW;RO7XS;gE-%H_1^gr{aibABTBplSWVM#mWX zjt3k4uDEVw&~F#Q$ne{#N54_T&eL0iWozy~U$0pmjOMpfDSF`48y%z_w9u3L4g){< z*GgU{LLI!k;1t?%d-Kt}npQnJ*0Yqlu<0S!Qn;b6P3$*YX>8$8O@j|q@R+diqp0`8 z8;I$)$9{e$Wh-w(Sx%UDCdGHWWkd0)XIT8#f3lsFXiqP5OwAhT~y3dArUtCi)tKF`L7TU>Axt~PRnD(Wf) z@Z!{(Je-2OsQ2}&z&;y{?TN9MPz6R?Usf8X06Rqi`)hDk?;wP?_jP`jNcaJS59j3M1XJ{Ot#9HrInT+tu`U2mL)uf9vV*Q~JAv2Jx?!$T+v=OJkJp zRoHv)wx=DaWEy$dz8fOU3Q{tSFJO(S$8WTTjc&hjEHy|D&s3)IX6=!DK1-=XYZ{p& zL2{LLG4qz1#@ybKxY(>M+c#2H?GhuvV*;@PC;rG3-51n3er@z@W%aG zDDH2RgO~zkaXC%##WV}=N_%?lFUG{o+@69rOuX}0PV7MR+ANO1qmg{Yd9RG2tG8k7 z(n8G|<$E#_XnnSW{q>JwQU;}`>S-C~Qqsv34 zJwasB8!WSGwwP66ji@~AlcR#1iWGiMfea6n$&#KAWYTN)@zTLER>WNyEZd_+M+<5A ze8a>#Aqny$nuCgb#faz03k49L*PaH(0&h_Acom>&IT|w432UKt!Ja|-`lPVn=;WR-jk(_Dt zj?X-@NHI#~fRJcnLS~Li;T;&gma`{Bd(hhgcH=-GoXHbF@Vgwz)5T(Ei=QSeHXuM0 z2w)7Y=3}~6$YYM5=j1Q%bAD4!4b$iQGaSy5G}r%r+~~$ds4vbgs554;Fmu5-=-U^a z{_HIQZBmO&fAkr07i-hI`23dXEjS8srh`3H?|6#CE&|%Y&Gf>=t?Z=Vpz_L|gXwkW z4Bmlf9dN%^(G#0(9Zoa<1CD*0e>fid8hYUpb(4xWBNq_8QVk0Nrx@kaL_&vQ8r~lp zNsr%&Wzn;_I6^6_mMSqGThEr>jM^;CvyL_G^=R2|RSH;anMS&`3heM&j9=^D+ohyh?PvW3165{!2VV;q{eN^5A%U_=K3 z1f7x89(|7OH@{%gFLD97d+EJ5d32y&*SPQL(#1cdZ$Kt2?>o%CGkho#=f{Nua<|s- z9f^3E*sVR<&2W)atA0)G09in$zipgw`F(s6Hz8OCGv~*;ct{+fu{Y57noUwlVdJ^m zs=o4#*g4wl&1gGzqvvknz?ARGQH~evzLrrNx9VD;*48%<#vn7+>hcc&Wzk_tC zOx2;EuNZ_(vnmX>Nu_jlTk=U1LRfs{ypF6<7z6RX=IO7CXN*6J@VxcxfMDf=2 zM;7;BF(4|zlDip4acT|M*!hU4iF>FFwy>-F?hV#nYx2mo=mu^>&IbyKSP5vu(~{$Z zR4i8~vFwbErq1PKmo_n^8r$&(P4!+aVNjiU&n@8}ahwbQ{48}GU{_8lON4CGmtU4tIlVgaIl zeFgmrWVe|eTl)(X9Zp4K&%ow%G2wS|@dZ4muszGCO>c{7+ySppDbQ66Tr6Eg=h+bk z2EoFYXl1)^sByl#cv_=lX^`eQQC=U*K6W6wT+O z$$~~J&4{6>qmEJk}9RNu?ayTWLc4|XpRi(z1b7RW& zxhwHg zo_6%4>1ATds-9))xFeAZ07dc+o5vi9AZ%s`hpA0YIWmQBLT`y_aBH-VJ$f+Z*dt5o zHuVvs+lCF z&EoD1Q}Kdga;vgTl)uiNZzL$q(v7S7UKnHZm#uz4^Ba!?TSTX1cE&RO#s(fnfijxj zL)|57{AHUTC~A~(gf9Ywxrw2G2^e*~X0yN1MerWHJ6O}ICujzD6}HhF)5d!YZF*Vj z{jZ0-yF$hq-P=Wa$}Oh78eByk4+)7!I(zD^phKT*pR# z^agt{(c&}K>fWujuk>*!gtr@BCPh>~O~70~DHm->ae}BCha3Ja05`P_q^fUzAQ(2* zg}m$FbYOdSD)X!^&2*yr(?)2kLcF#777AM6woV$Y-> zX)){9Eczayf#%C$BL2+o)bzS9@=WwcrGY6UmWCPiNyx?bdgo%QTvGz*oi zg81)LL*K>YWIxu;q6|KH4AWErU-s*bP3&G~?1TYf77PeFt*UqHDnE{{Jf#BlZ{L&6 z1GH}`1ioF`BbS|n@wr=T8h?)DkLfY>|Iz0t*RZT}WY)1|DAW3fW5qJy%wWsFJNSuI zXuIj6w~y1_^!T+Qr%pd{qIQEu?jYTURWKB-K-6|*;txn0>0iskNMziE+Rhp?L7aLwD$ zj9=pU99I>56e6@Ne8J~T%YBYR{_tD2P6qJ8cDZ=L9XIdvt3o(!KB+Rkzz2YX7%T`i z%BgzcviG#;_w2Iej?M{2uj%(&$%A`!Y`brRAy$-dY{75EF_d3ZI|SH`usM|qt-Nn+ z;(eo4bZ8Zu#Py#()@T*m`rfdqb14zT?#Q5z5PQO~ACLIUh%*aZc&s=3o|V@~J!s%o zx?~2)vGI<+KuS95SlKiNOvjsQ%)xWu5=P)Qb0tn5(xxvB(&ezNgFw5IrN*7QdzRfZsy-@hh?Q4A75^jg3? zi4*`tjOXk^mypr+SK0CJ%?&GY1{3GNN~Q?>Y_y7feGi)?xj-=tGo35KoPh2}L0HF* z;V6#NahEE8Dv!aRMG-~0uh}f~m`bh0g+A6idlk2s!`;d-f0>-(EMqxTvo8c8l=);) zhRT1@mXhfuYG!&NIw)_^kg-lOy(G`%N@jY2wt@A?TVi^O<5^t%?P8aw zIG)9mUV1ju3rdfhj(N#!Av_jZt=ZwP`sS&wX{ITHP{3tN-yYi#2MbL8LasZR$kIT- z+J^AVyZnoK=2=Y|!ZGjiFY1_=DFcE%pIW8A7piH3W@_$bIgZQB^b#_tJLM!UGl!J% zhIr>OF6@x#LjS2mFFsB=KHm&}T!{l5pbuiIxoXrJ`%D!8)iSI+bb9?UnR&Aw~Y<;v(dEO99 zZ6dC=%yI9E!RKJV*jm2C=D2swD3>|w2XNw$lwf1aD9y8xohNWm^#)lELC~bj4pxen zO~V|48qlgXvcW0s?4r_PQXq05E{D^=ym~N>R_;J6`AqSbvLFU{wr~=Ii3l30Mp$g_ zlj2A5=tpdB`+&`DTK&^vyWFB|m)l?~TXDG;|L(L9@n%7XwD2H8(^5&R*21(ixYtP98k|vv8nlX0Bd*A^^}VFV?igN?-evn| z#ld)Agza`Jm5l%0IGX?o=MyDtA)LbvX;r1cjeVE}VLyU3rGi#Y92AD7KTlZ(Tj@>S zy|i3XbD*C@at?}{--Wz7zAL>qXWf7TpL3AAR)ZZ4phJ+U=5D|n_&N4A0*gGZuCX_i z2stMpxbz6yh9hi2nL9wV?AIDH9IWX~+NCvolF0_PNxQX%_tfPktzmyAGj3GG$z8;^ zYlx)l?wwm3G3uLyS@Q_Nx6$}_wTf}=sGLvN8pWn@7{Q5KFJmi%hmY8z`|mP`5z*de zk2fjAOF6abZM16cetAP`!Fy<1*5j9{wq?~`#%9%@Jk1LaY2XaN4*^ z2C}Mel5#{GftUT%FKi0BG?(x~g%_*s32QECS91x{VeldsD}crj%L`z5QZ;S-em8-a z=8_TsKv`6obkoLSCgrc7)1cY!f}X3aaZf}*eBs(5a6*ftZS};gb+0FrJGEG+@BK!6Y3Cvr)rQ3vOOB=ssnZyn%S>#}n`CVqz&s=h zb|`wQ-Ir*AWV_H0^J1gp32VV(qkrT;Kc9q#q3pWqH3CB7YV6zCmH552ghgZtqe5cn zoy_YRzv;r8)6^=Y4p%#9mL4#(8nIwR@FN7DYUXKrejC?3znui+cgBhN5X+UP(v?NNa<7n;7l!i+B%Y*UM zx(`aa!2@x#h*|f6WCF~CR=&Z#W+fGEa#&?Mi@C{4Dmr9+YLBNK?@9Uvv)wGzOTlsCtE} znhy%fcgDUBXjfWDnQ<67YJ)|+FytPK@CtLuGx?(M<;n#%TD~;oM$1Um!pEeAO=q`- zyvd^RhK`&Nl-y(iA`Z>mWZ{jN(WkUT?Xf(Q-)mE?;apVKPD>fPR4I#-@tpGiy&XPv zqUXzs!M?U;7Q4#SVKcy7?h`I2LcH7e3$>hFqRj5}f@xq>Bg-5DJZfkh+(!-La<$bm z(A1miB_EHEp~qetC^?&w$C2`2mjPsrpD{#L9zrSLjS!rGBD+lui537FVGDwZReC~( zKoG}Qw$g%7t|yvJa~x}~A?3mmG`5Bs=_NRBR4RR}EablXLG+eoQ*pgu`74Pz!H?~& zzMl`E3!2!5OGNPa%}pY|xl6=*O%mDaF)frHv0L(9(>%M{Yg%YmdreE!Uej{5*R(?I zHNm>tXosqZ8eu(dw3jsZ1rM1UN>?9J8%ljw(bb^*@p{!eNaC6@*8jR zRjAzWFDgSYmgBIoU#~gDY2f?n*W5GKbZ%GP=FZ{mq+P>du0E_aZ5}S^-#LRk zjM9G^u3X%HJ6y7-+w97I{p@gMw|;WC*sY7iqphBP_Re6BwqCy$>h-G-V}IG<2TFA7 z=xS^PnIS$L+YR9HA@I|UQS<+Cj4fd7fm0hhw@2rkgbf}>T+?}nP18T)tbNMi%vTr7 z5MwmY51(?*wS^p_JWpAmBkox&l-&Lm6{cLy5y{1Vq?Cm@2|26VtivjeCy<{J`!T_q zb^It~yosQ=i_l4850fE7;1 zZB*fO(*}jpnfa?z@#AnhE1GV;h*Ck#hFx7&y-*>!ZgL%lWkQ?1?M!b{W<%UWw`T@)s!8D zE`8_XJPep%&7PpKEr?9ptKfw}(sGd;R_HU1I`V^n`6UyjpVb>S_(GZi?p za21<;9(pzj;SUVq1<~M_{fAmi?=``@S!cduc?_>aUl(Z}-hGH9(;w2Xkw4aFTa*d_YM)9W3sGlsf?hA$fZSlTvf} zIIz?|8v8R<>r^=H+%@o1>eL?kl}#LqLG5cA^B-Z;*ko8YT|TF%={QnPysTW~S;wnh zt$DV=^uj@RSFkO2v`e8@?Q_xX_~HwvbvPb@vl0(nklb~%Q$b@u5D)fHd33<`#S=^@ z+8l%_GLY8A=Ku(6kU6PHnoJu^v?MxMHB>UD2*3HGSs)n?PUX>gANs05^_5Sh(B-}; z93QI&$-ZGSuEVL=7sGY@Q0$BT9mxU^JY2_{`x+1g2cHtSS!S@v7Cq6X2KRtowpV-X z$LdVL0`V*1Wf9S0#T+eG&e3ACI9hBT=R#R1GKEda6gDMO*u+l-YoQzg=u+F+SP|J# z<#%yYuJ~0v>8O&nuBOWub_4PSpJU#9^-$;SxZq`y+*FUg;C>N}S^C~A2XC&I|4?nN z*RNo=l9yLxVj4Q88}-j;@^*U2_|=PW~I-Mj`d;6~DU>hN*TxO_T24 zi*L^5{IPFch$H8+#ymO(wu(;U5pHqI)nz-h&<>g%vVMOdj7qs-;^?_Y=pum4xmu5} zY~KUZ{f(1Kn*EIv*;CFTeNoP>k8+z!*7x2y%t1;XNr(#j{9^T431_Ho@71>}`+{#5D)5su8 z7D#%celCz(U7ru7;PasreLfUV8k8Ym6e}2!4FV{Ec%5%8w4exJlq~&xgvvi3 zA^r2A%=&yNm4l%$dkq0=Ub1<_ZV3IaI?fLkpxiNiX)9Db7-m1y>-tD4d+M`9g2Wse zZ*!Kw2aB}1XtPZ`w&^-N&u47r3zDs84CAXu__I@w*1MEXNO*Zb&dJV=!s~-XBEEZf zK+c%X4R_Ji5x#nwjj6cW&YvszEz>h3s?KQ24VnH4v$#|be?HGeoT}33^H$jf^2NGn zxR*a)lw0NUwNSoNJy*j0{JE0mL64SO&%TZD-lco9=r`0;x?Dh)J$xDE1tGUSF27)G z;c!@MyoMTGp~hKG`g7^g@^bp#PJcc0*Gqr>^cM%oYqwEBB1a1f`^rAi9)E8by-a%0 z-C^T6wvlSiXA}FS2MT1@;^OmY`m7<*Gf)(aHpqc1Cuc+*&FsO`lPNm(xb;+AZ@fP> z|Ew$LB$4|lamN*p6<}g+VMd`DV>R)~6|Dtq7Op(zhmo1MK`vTuf>^0Lof{ZInN^J z0*jo*spRY*kcoiW)z6jD9A5Q4?@cZo;P4WyGKNvObu8!2-4Eocxyckt0OWVVKtjn2usnC?R_TRhB4=_hZG+s>){|6Z!)rNIrI-vId5o)R;RyMRDe?}X^3oojS7s*$v`Z2o z#4$AWBu*e4F0Exzs0%kX-;})3qu1}M9scLZ&|Nb1#JWU>uk7S~za@zGy8^P3xoQg# zi=tIzeMm@QQ?f;Ccv05Exk$I#+PjD#`mvAg2US5CABqOFN$Yv96nAEGE9Z)b(BcvJ z%JQNVDR^0z(S^GA!+eOm_uKTc`-`+DPPE287*zpJ@6?+RKTKjc7}`-J4=S@>8^a7o z1^y0*zz^S-KwsxN+}NKh3f8T1#)1&2f0oBRMjGW!$~9%};?Z31y9A`qr*3v@4OhyB zan@a9WU6oOn*bvrfD;DpU^Hw8ac(Tu6CJ#YG~}__1M5!>U9xy|K{vgfK>Nr2ls|YgntIo}M@@U~o}+{9 zxj?^{2{&;S8dZ_Y!)5G;xqMVd4m9JtyzI@c8_jcR`5A3yf<&p+-!~M|LRZt^;SGkD`*{UzBTX&Nw(&!xy}@2hDw^@S zja?3F3(Uaoh+0fTwTGLOnp`DSM_HZ_jrBNqxxvdBWyGBN5 zA|J~^j!5{d$Q5U#ctRItD22`?r5&xT)!Fzq3$K*}tb$dpVJ#2+$C^SVT&%J-YCQd| zRV$vOm7j>t*2V&Rsm(e6{{l8Za1;HdqDYA`;e@Q zuUT=K!^+5<7v)x|e3i?W@}FnjWezJNb5`uVdLewKkHF`Do>i+ zvjC*#V|WSX3~>Br)i^yz+*+VQU?_}xFo#o-_xr@5C{nwGxeFVUP-xv)v!qMJL1-^@ ziM$-1Mdr9fINBr{#0D`z`}Y*-(dnc?KvD|rVg3V?L4VNeKFz>j%OwCLO~-xFayzRK z#E7gxpnwuoA7NOfel5^Uu!MtHQmxtzha#$$;g_Z<5-UdvW~L(1D~bdl%_1pu4I{1u z%wmB7;gI0WN>d;fj)bVSl|@~hZfs-eRyUoy@v#hwMqqdfqX zBg@S=Rh?j2cb27mgpw*qZmVsF-wY?cZ*VSrLJ zAWSnKR%QJ|wvrj{9aEbdH1<&+uk$0LQlE6y+(RVJ_I^E_OHJ*h=Pc*mEhYX#I&;|` zQNPfaO?y)HET}12!EA0ZR23J?@vN|H7lj3HKW)A}xZ|4kJUv)lIWa=|&Qw==MO^_H zQI@i@g+hIb?Nr}2?MYRiSX24EfV#2A?88c{4=Wj<=uug(F#gn=mC}*9Pwwfo)Du^L z4Se4fSghzsAI`H>osd#^tUjDK!t6uPW2o+PjeFZEf_AbSFBy^2js2Fs$dd}`g4~5p z-l$j?`?A?@4cBqMNvH9A0N@WZaMus8?a`-9vaV4(oM30{^lhb;zI$;2*A2f@!pilN z9`5YwuGlcfd!ft)SjHm2dh9nCXoOF5p;eUw)T=h}xh(YSn9_WBx{rs-YMu9;i+M1= z)WR1s4bCqSz;C`{%Cey=DgM9}wd;*A-U_-Ns!zTy(IX^7mX) z_&NmHtY`U7)u6-<;g?=Vbp-ix?1JHW ztU`Do10m#;=C-O&>B$^g^{YN4Vtj(>{-5YwED(=<^*ADoYYSMCo|T~_Y0UkQq_H}% zvy?m#*`}nKMRO(ph*-oTya-Aj5uaE_FV7IOJOr*l5H5!NPt)@2L<)G51 z$mezMB{w|ux>Y(mVL)yv>(-h$@TtCe(LICD$Qx z0O~KX{K*L9-&?twFafGmQ+`A=B45)u6B{!wQ@6r0_4NF7jf>o_*}z7x87S-Y8{IzR z7-E&RP?x{#%?Hi{&|*14kERqkKW~w{pt>z!tmVxlzqga5U6R0j#*Vs#U3=`muxVYh zCRnpsFI%fc#fzm?_qHIG=e`Gnbu5!)-hzJ~b zCh;M0n7DD82#3zvQXcH*qKLFDN-IWBI3eKg2&emtj8<<;rU(=3^h8U_`#tphzJtM< zmXb9{fmO748f|kFDGeNI1e_i&W{#z^1Sq#kO9Y z1yILan0huVrz%Wexg&ygEzVF``vbpM2?nu82PzBIi`l8Bx=roxed&kL7va1^cjTx8 zcne7o$`MJ5XB~3D@e_09EXNPCge%|6k_gG=%s8(}cpf(8)?_I^pyn*ugyhgzs9e9x z5|2nuWr<{1zsM3#A=ub$+Oo @P=lyz#M&c-Ho?CmUddCi7nP+S2o0F&2hk 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

              IPlCCYj=`Vt#Y;I&%yr}E(uKPBICs?@ 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

              gdRa>+ep+<(`?3@ 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 GjQ8h_aJB9Llx7LrH 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

              1$o_ns8 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�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

              n@Q9P#TzkJd-0T)Ne(b|%PuZ6u@ymIf|EuvR zy2b>N4u_L`8An z`O%w7?S_f$QE&Znr}pWA2iU5Mq?E@viS3Yn_P4<+z$M0WJ;g4Y6+p&QL1b{y#C|R` zaZ352zEsO@Ef?pC@qF3mVoo04Yu=`Y1Yb?IsA3)8;|jd1yDWsh7d-m8VRGYG@<@Rj zoAbYSxH{hQw4N3DB_e4~l05uXH%MRaWHHle_G2^Zz69q~4JyDe9I;~)dREMR3WK{! z`TWLNSoFJd{QGeX-@2pNZw@4Uu@57oniH;P%1M4QQZ82yHmm+u;q811AQRANie}dGg!-XSyU=VaWhg7g#Bd6JJ@eusOgg+=I7|ybYDA z`AJ-!Zl&n-6a8z(y7%2~tyvvK1HY5(q2okMtWSJ^#>8~>U&&|(GZf2#|1b^_1t`^f zsxP}x$b5Z(x<@;6Zs?<_#wdPIdi{1K(@v1iV(p;@@+pW zypE`TfHkW*Ec}vtfaZWd7JYzo+CZjxxx09qzI0g$0ozU^4^P3O|1Ck@CD=kp|72l% zH$d1}frast->7*Z@3{cESjs)2+*)QxH8K;oEKUghp(B_(tfh_P>NAjlW^!EUE)WvvQsb#X7Pajf<2i?kOi$=wzWtuexiOOqr!r$r%Z--c-eDH^`QML;EK#$$*Pk#H6E}XOBWVUAOP% z4WmnQIsC_!7!qzfH|LPF3*jX4wF8{uj13;b)DLtv{U&fyU3y$> ztZ7Co)mxc>ijd99yQ7`j2`o}obE~Ie9NUT=v6VF zpT4yg{RHD_ALu9L!`sC>j+g31C079qHV=!oCFtErmncS0w+_}MF5WQ}Hg%Gs46gL` zH`@RS3P{3hTdvww<=D-O!|jcysihgM^ku&W_fnzc&}AE^5L<`k#LIW z!{Sd;J=9^K+X~w=rzelsd-D$D;$Gei)XjvBPz3PpHPm~?SaWXt;z^yEas?_6aALil zou>5j$q=L6X@itiDDZSWN{l&Cik>WmU?w(r76`#}RjEf9#w-8u5|6;H6r}C+Zm_>+ zF22LT9g~WUAy_4Hh!25m|6# ziI+AcG2IlOKKM4n

              zAPCLr!C+n?nbZ&{gbLU%IFC}Z+{=J=ARu_@&Q8}7;Xkd2t z?ym^V*;aGdzgH1xYjVTHv%x%)Hg51Ue)S_VlQvAvJ<~E1T8f`-^I^osJ-?rwiheHO z{vpIa`>}x_>QBx_ZzG8v&!KN+cp}F{(bPskq$omh7%e~ETT-ss&Tsr*FJrU+fN;ks z(6@FNohrq@^1uQy=v5o$1zdguKdNLqa}1b~+2q|~)-U5Gmlo(!M{Zf<$N&scd0Kdw zHblqR(hK5o0_G;E9~qhC$*8U{IUE9$b< znu`63X0ISOqKf=y7AURP!Hn&duiMWnsDeV|C=>>{NvW?uIPt2YdJ9tG*{nAX0i>+B z(0CD#^*D#k3P+Np9|mA1jlK9=&*{S4R0iS62#=)G%lB&Mr8|uheX*nE=#tI0F1E)G zPI0d~XN^wfZ7Hti#7i}@+Ttk%rF zLnV<38VHkNkrC%J$nza4!Z(rtw&G3(Zq*w1lgKC59ROq=$BEvpmy0>lW{!cTPmvF` zgPtdnc#pnfz9pjUef0^N)?~K;G{^)nS^Yf#SMaz3uHL-D;%r1ej#wF?pN`hu?u|`; zj4FL`M!=NtvU20i7B5yIS1O>Sg8|KN&fwIL>%X2!CcB9?yVyc6WPmKm6amvj+T-Wj zymt*u80!ioxeL^l11ze80+4uO5b!fy=^s~ixUs3&I7pvxwTp-uUnW1QfHW!gb)x|4 zfuCirHoCRWyYG{pYVdCt47a0FC5G*y%%xVUV%G=%74(=3@yspHge&90v-8s&R>;jUy&u^E6A>)TFUbFWGI1NtF z2r3e64<;-S+NXW8?WaU0P4kGqq$Z@Y#_dAGAAe|lq+HK5T=la91OiSbY(7RvH%8zS zf%hU*ETud01?(r1g2B(o+>d;p*YmAK7bUnLEFS)M4%Ikl%cJ5bt$!~iYImKBD5AOo zUKM(@UWBM&7F?Cl%7k`au0k$e+cmje?#9+n1HPUDXt(*Y6bZrrIY? za0hxkO`d+18Og*(0?K&bxj zf83HK+qBC%?J8M{tYd#krO+bTlY|tqj&(vtB}oYthGZ$rShJ5kGBIPx*vHTq`;4*8 zFwFNkuh;wY`~6e*a_{qb&f}c(IFILbmx+xD2lu;HG-{nlK$pp)+Mi4+rR)H@leRr~ zfW6Jt!t#3k_kxR7AYl6+^HbUGc9$i?m2!}{me9>jI&muQiQ1sv4rU8zqC*Y2UEW3I zk<&_9$c@x2mIH6gw#OM8!b7kAT-W8bYxPdDKM}bIcP7z5Bo=P0=*9~LKWCeV7@E8=&cv>-eC#>#B7rTzXUQ(_;K5!PR4zxy)ena{d zyoQDo1LOK?&O>6j@DqaKAE)c^YW4fW!tr$Euk@dy8(HRWw}mA!;+2=tEE%veW;uxW z^8V4xJ8NSuAhL1aHWcb!=_HHYSSuprCT9oT<*N_8Q%{Uvp$=8f%_mIELu``IG?-=t zNM$i2=CldBOLNZ;yIR!en!ZbIK~lwk=E**dVu7Zjs*C7_Iy|!H#MWjA)1Gm%Wmpkdn zwNSBw^CJpaBJOawrO@F-oPYK83|?s}b+ z6WSjy&U}j>4lK1o3!J}-e)M^K=lU|Us;MZ5$?V<^uKz^dD5ds{P?U+dYD=Q*p=_(M zBDBe;Vdr(pFjy>m=QRoQeHRKeC8w7+^q?bIUX^Eh<i#i-m1Htdbc<$0vVTyVmUOWt_rJFD7lptLnK{Un0i8V}-o%+}6@G zT%12Y>Z)nB?K~$GhH(g|{tgFHo3-(i1=bQ*ab>nBuV;UgtFNIP4zhK6gX_c6k21R? z2TYzmavUj!I^EKlRG*&;x}w;ZEVXXnw!IhArtH~+F>j^mD*bK{7|Fq@H&f5onV~mS z9ymU%l$uOnO(M7Rg^C1_VO6SZ8Rr&_8M&|$5$ceu+s=KdrJ?m34F!+D8lwq8$?a3# z>8(3~87fA!AzV9^cOEjRuyt@n|5rnx+Cqpcb7L8~n+qt@*rJ-grTf{0RY- zzZT4NVd(5eu6Vfb$ZY>X2FX=!Aa`znt33Cs1UlL&n%dw`4!3kJeV`Ik;fM6tf%+&f zzRKLA^>+In$jOC>Y`^%suiD_Gp1{M)ida#~ghH=8?$mZ@U@Fn-kp^`pGsx@_I$T%c zZ-e8=7hGTx>T|7GL%6VoPV-k>TLYBb8hcBpE?;y$tVqDAWrsU1e@JmVcsOTA&4UpJ z9$=A;%kLz1Wru4Hf5ip9W9t@>9Qwr00OP~shNJNSZo&(a+~%GZ2-x-a z;YD;>rZ1$^_rmS?Gc6mbdpikV!nm1%re`k7>jzt!uN);;^Ms?{Iys)av`&3a+7QTf zPn}gy?K5AYT8UDexBETUkSkyIv+CkWp=K8w+O@!X_S80buLbqa>xN|2{^MqJ+eaD* zn>nZ+vAcormng9eRwl&NgV?mEQxUJE>AvciFmdu|PtpI~Ac$<~$+RG3cGqm?=tTVZ zxrt1xh=}tqRM;AR&0Jo2K~6INi13|S3z1Z-P+NN9rf^b6lRbqFm`ii3(a#HtyAI{)S$op zaaD6UxCG;lTB-ZaU#Eu+{{G7AyX&Llv&-+5_N?}elM-8MQs+j_%o($i=$mYfUn<*b zHynl#HbsSA-xeX&!=}hiBS|a**Cpa3GmzHQcXwJD35wu z+8xe4ACXE8psbhlv+je(IN1LrqGaT>FRhzoH;jg-tkr_oWEIx`uso`?qjQQK-lsH_ zd3xw5@qUl2ZLSPLFOD#dd$p}5k-40RV+))J>VqBK67A8=>3+XehGFGwCJ~|OV-!nr zocC7!?Z@nitT$|}ckz_#lN#a@jzty3#hn42CyQ}i+Sqdl0jQPZks(5C+WP50jD^9J z^W3d3GS>(+&sqS2Y_hjktMaVUIU%CLOU%LlHv z5*4#iL#J|}`KPwYi~jok0>otUvQ0t5cL$ckh45}&gdz&zICke#sOci)psKEG(u=i~ zu*hl4+YJjc_qX>!eOTIgY}fRp%|7l=t_k&>|Fo|1QpDp-iZ&CHI`jLf!#{LtB}*{5 zaPph>Qk}mW)lX|X8g6wU+Itjqy%OxNjLUZ(4Jw<`yXsRKt~m6|OMAx|T#{lK>%6WT zO?dyPPNj?Tfcb0P(ah^iWxLhOsSir?3_Y`TxxUlU)V&m|>~+WY+tY}HiRg`nvBh+E zOeY~KRC;Qo>lY5?yS1{RNXPU9ORC?AU6e)OmmRN6#Zm1i87Zt(C*5PSA>ZifYhJL3Phug#f>R1D3TgH$%GI;ZPBtMbNH8Qsic&M$P`eo9@Np z0@nW7f{aA*9-QHq_`9ORimB`PM#*gOQr|89FFxlt2V0`E?|O|aI(;1- zBM`-P9-9c9!HiwJw;?KGQp+D~xIV#Mi@l^9rgI|%{HH(px|y9$vPS4`qA@Sje<8thbm)`$Sr<>!Ip@Y9@<1>unRMUA7Z?@ zY1D%;@{KR-bO~`Q4*aV301dq0{a!r0B=bBKJWtS}F}(jr%q9M>F+OTl;9-3K{v`?N zXNZ1TL79bDhR@a)?YEB~y+ciiAYr0-tLc}lcRKQe|Ih|3>pi5U6f67IiyUfm^Bah| zc%r{|%Ae9Q6>oTX*%IwdLPYv$pQQpLT5w39QEfw6_BYHAe^;sfgvN|9Jq>SV)m_$? zjzt;09m%dyAwy2W<+IXBxmC# zv&!g!0dx0FOpfh2W1iM#Vo~ljal{6E!ex$R_imyFDW(lMA9p{znz6K;qF9_`;81_G z{9&Ft;fE?xiyXXt*@~@C$b4&CoidQQhi}bII8Ze6!<^5Yv-nJ@%#!4fEQ@Jvk#&yDuh-ZjR^{`8F2 z){!~XhM2VHFAu3o)A=iR*nxDH#rol2PcL2+^f>8f*`eM4XAE-ktc4o*US8FBLhAIY zv5`@=?#X$3Kkq$cS&fCe&z#zK{ZkX{S(b0achdg29^w6b&UyqUFHK4E+RqH<^C3oA zXqO?%@5_Q|Fg@aT@=tB{fj+BK*_lW0pi_GfK1hrG=N;)dKNfLNN-9N(E+x^?-k{*e zc+-?QUVZ-l+IO9N%CLf7dV!6jO6q?92i{dma#cGl73I8^=D}wA{Hx*Z%py|WxtPo% z3<-bdwYg5FplR;q7U2)U+NzZi?S88-hs*}_^KBMMw28|IrN2)@+&rt^@gF%F?O*+- z=4|D~KXtj^cAJZ~lnw>1X6C>7XAzIbPwY|oW%t1+XYfpAn91RmS6yY)FA=ASMAYKy zHPUZ7Su%D6nlg)txUYRCUXNU(tzB!fx#`sF#P)U9ei(Pj6g!zYido3Hk#y6$zak$R z<*y_)ZseA3)IC!%?kVc@ko$>YQcHFB&-r&yl5%&vpEhqG#XHX=Mq%ZN7KSp%6YjX5Gob8QvlS<92JqfEDS|j6^f@)jkMV|WB z=9J}rtIsYh`s&@&es*N>Q}~uBcVV4yvkS^+Y-zS~@${8(#bqI*QSbr1aiMRany z=_Dc^R!}-Nx2g~;>Y4Meg@uGa*$(sH*=zL>VIJDe|K9WLtEQG$)xMv?P5!BL z4)q|{$Md1xSfBgvHCx@mnaP9G?Ni``up`6x9?z2Q$3o&^zdbF3J;}~#wWEya^LHt# z)%JaXH4k*dJX1f=ds~%W_oxvdbkB`dn>ibGc>UFSCBfvd2bFZ@yE#i~wDR-aHv;l| zooZi?rX)(D8^xv#UyUmGclrs997j2PT;`29l&_3jxYHSDe4y9&^|k6{+aJ^lA?K>< zu|ALCz5(k7+i!Y&q|*3bg;&r$ZylX)gvXIs#_i|wHD~PB&sY1;o}q*Q13*exZeGjL3M!^G2V~_a z`sAm3JudP(ebR0{VeC72v2{JhC@mg1+}c%mIoF|9j03|pPnTeYxUSA13xleK;)`1yG|&MB5S@y?Q> z?23xaD^>`9R`X#`PvhVa-fZ&cSh=slsGFm&R#&(7@{yu-Jw4l2{J|3^wuV1BnIVq~ zOgjF*Edo{!>M)b#k6rekRj*hWo%j>2uBP5^=o%2voTyqpaBi2o%np_pppSWdN3TC5%L*s!0s87|){5>)!O zqso=I50u2E%8=k%+pF?cPXRLOl_6T9ao2}K=RRxAtPrj*u*^-vUizr$<;H3fX*D%J zUC-O?@C-^TCZRP#Lrm|Dlg?JJpzXUg>jDVrcm9Oy8^B9&c3ZE=dNH)cimtXrm^egt zTk7iTcD0p3Ne4^RkM*B5_D?RmIy!qArJ`adDfU;x%np{~cjoAS)Gj*ha~yf&uJ5b4 zwhwhH=68kod#dkV^T&Z9xNvi3K;TeA!PccxDI#a)kVJ*;7;B7gMG zpVY|}`#7RhP>3e{{OqNHGwFpU`}MCi7yl{dm8tXAJ&HZyrPp~am!@g|n~97K4)7$+ z1v^>L2umaOBX%c}Z=&9>D2Z6RAuO3Zad+E#+wIBy`83TEhx;9dTlt-Y-qBHu%6z|& zwkh$g4yMxUhVOQ@wl<%u&&%hA38D6{95gyKOtipkCe2IQ&)=Ezo!etQj=Nq}DqEqf zb$u%a$R1J*_I_m#5qIWCSto7ObD8yLQ$!i#7{$NBU{1@$E-7kRXUFYedc z+5b$r7ZA|vS5^>wP*-kR9(k_3;YX;bcA#2+nb_T$v1EX4Rnj~=7|fD#Lap4>%iSw* z+#uNwF{^3$uho^pWrzI+7S&ZR-a9j`RP8|Ln6(7V%9JG!)N1HiYNop&EUP6yZ>W|3 zQ19RJ2&6vTIQGE?%GC6KVOK;sWoI8xpU#RiUg^2i2J>-ZeIS4La`W^m$bT~YcOfas z4mzvpfB8mr`g?Cn9hO3E=0e2JG*N|WKKpNLz`AH)aA{~(%#si|I0-~f57)rd`P?Oq*p;b2nYW@;jO z56G@f`UfZI>F^TpmICosNBg4bG-YV@^{@0{*CkC&V)NVRb*p4_UC`xameEC}yN7{q z0YARPR#a4~swY-1B>=!W$ibe?AJ+1^>M<_mIO3qgk1)RwhqLh>uPIt~mMCPsD5c!- zE+aLi;V_sFN&isqcv>%4EP=c;`dog#r_R^BPs}yV@=om`m>gN@Iq>j%=vrZgw(X}t z)iM3F`u>0q|K~VgmyKD-mAQN03=a)ETIp75eVoMVuK3HZA&sS;1e?b zZf^F_RJEAZK<>9}1$Aupb@sav>tHjPo3}BP6LyyIi-n>UwU0Lbj9cW$9sv2H#L1u1 zP|@p5f~U)${0Yr7jz=G4Zd;P`3yHSE+vDT?lMCmQzN6{B-#IuY#iu1a@HjZ&h5eSi zntJx%BS#W#J<2ofrKD^|uA-BH-Tw?^fh4hps2z;ddE_zF=g?hk$^19@VP>6H|NRV~Q9wUA4{cLgKl5%rk|B?+sNdbEy%BgR zTUU-O{~x}rtcaTK!WiuQV^!woirP|TXK z6%RM`pCngBPV*V-^VMzSBBGOd!}4ytRoqAzE5Z?$#(p(8Dqe{f{x=-86oTSHRvz|` zA{w=#ORhOMOK~`RcqD6}x~fAOU6GwVRP7Z{=sI8yhWj)7;h4Ex`bo0ws}UU?3g&Q` zT`I7{2RgL46B=gXabxTWMP! zY#Zc_3b0bu>L=*z>)O81c8W@SgsoBV(?FmC6w%$`t6K?|U6-u(k8Yvt6o=aX-s#L7 zJHytDrbb+wtep=(&k=hVj3Ec~Lg36%OOlxXy^b4Oh?@|W(N7#?a@ z%~lBvX;9NK4z<*;-subtY0gX^c?CVKjyXFqM7K%?>%fNh?C&u-qh|LLGBL6N6?WdPb?_`mG#oz$jDx~Hv6YM{q$Q?&7Dv5WGls+ zA8$_ml08*flDf&dg0`HxuIu2C4Zmhwr>ooSu@Jk0-4}?QUM)AjsPs0yZwMlUQwiF- zk#2jfVar=pwQjGG)AHs$XT@vu!0=*&dWQ_C-|2PSc4%bq80Gm2)Y>8w>&t}RnIHz# zqVuOG53&vzEurlyQ;JrigdPPgSf=K7vg;x;M}3$7VOK*n@OpaU=n1*KJ_vG6wx6%w zie=>)wE)_pFKMz(-Q8uuO-WuZ}V)N}++tTXq^0jYI8y(Jco6jOaK)U>%i$)Tcsmo;(?mo+J0 zeEfB0kF6X-Q0_l1lkuMHx%l_$x$y4l)1!~|(%^oD@VzyyUOgkeHHYg4^$-b_wJZwo zht<9PakOYw_0w>OqC?XMV)ShCg5uT6iSGMxsn6kwMH4`irdOW(P!EmN$0nDB3oOZ#q|~Xq(zuTqd3{ftHQP%x(lHL_Qi}?^vut5lyu;E?cl4h* z%BN3jv)%S`W1Q#5EIP9^(*M)Q4$thbRzDXmiw8*eP2FO-lL{^T6hBf_9cRk>vk3x7lwp{`A+t^NuPnW;- zns39Yk((SXWy*Xm{KIrWWma>@6|?k(B~(+3CQK5ph}+-@ z_KER+nf|}X@6$PR-yvJUKVPz5TnvvZ&la+FV^7k%?1k+e>YvYlRRDu|RNA_*@k?;Ru*oihAG^pI?iLI#vtElMtD#SnNp$ zyj^hEe<#P%eX9qm&gndDI5hOH+22DcHt5Msm^Lu^tH(>z0rCGIu_F5P@i->)a+YdC zN^-3RYSJSL+bg``5u@;5P|a(Ks~#{-{|AtIps2SsJy}sP=|7)-q`x5W+H$;CWRlT~ z3T3Iy#x0!PHs(uluH+)rq%UXh6{}N$Xjj8WPmLcriDF%>CRdcfOVA4{j+Lh2rXh4$*=#SG-QAjI*WPu<6OOk-Pe2$XkX}8#7C1x9eV#A^*gIOh~2nt zV{OV=_q35e*B<&&7yMFusPo@Ele1U0EyY~M9o+hh{dcTS9!aHt70B9F( z-|pvaxL87dQaYMpSAt8eJJj2dXV+_7bdq2aTr?=>_=ayS@QhVYMV`wndUDe0Ur3VC zjNv|z=fO|F7rp*9>Y!bS&7JzMu{JLMCiLgppXGHvuf);+XU7X0A9m8eX`t9`UN=#` z>hp?Y6}c{B$C&)C2%=D}+w0q=%k(*yhj?1u8hh0g9nZ1HP7~NuW#>zHp7aNi9ee%1 z;rA;^E7&jn2W%U&%YNQE9Tq*W&&i^tNmi?{p=ok1BNaFqcq7~|ukZ+Uj(;Hs&Zr2u613r~c3zisFoSm6V7N#U$ z2O|+_V^0bvYi%jP?fd?w#kMO&-Oil%&8~2*-`cp}z4j^_h69c1@b#H>7<=4^s7FzJ zoVZ=MZ~hw%7e>qQY%sE~jMm!X2Yt&JPMx?Mh#}0 zBf&XGJijg91}i^DJKcba8@P$g%U0#+T6BX_@Len7zR8l+OZ-UR4ekIfl}V=7!#qzlIX6CyzMu1Ca?Mx!m3NM@+R zva_?hMIp9K?X1E2J11L})-!{XXT3UI1&|9lh3lD3;|V)&yH<%;7M=NFa|^2VfIA%njNE-h+%A5lFZ`Qj#x>s@K>mvwxHez}sBo`218-bzvZg4Gk1 zm1z})g%#?41N@Rh(aBvQpFS;g966`hU~)&qRs24`7{T8dX+77?mtt1;MFbMCW^nMy z`ov;prju&KqKy5;Px7v?TO=!CuRiU$dIDqg7Y*H>aLTGDx>vXrDhSXhq-my()oTck0e8HPtzV+h{BOE z`rNd=6Y=^6G>Hjp$tU5c$_T57V-peq&n`8oypCMr$I%X-=1wQY7|1oL)Cu@W!dkGE zwgW8_5}W#9cD<^xU+UZ}6E$WUa#M<$fz;9h{|Sk3!Tw$8B&^pzpCetXg#375E%N%gjdIW8pLIWTW&HU(0ZbN| zai@t8h!3qP?7Ryx7mq;U$gT`7#$nog#t}F&Dy4cO%9SBL*p@XR;aR)?2^dcduL>YD zum)ggbZinoXtE^oz|iq^+-ty%$_z=G2riN}A)%;q-+HSlaA%+nTlZLhEwPxbL#6eIxu!IKyl=Y^u zT^|bu3)1TpN+-#1F!tj12Lt_tWWXjQcF28s+HmB-{T<@4md@Q2YbZ@8;|xv2aoHTd zpC)1zRXQQDbo~n~{?4?r;4ptWNic7BC=a|#9DfPKf$LR-E8~P4n3&CforCDsJ!+#0 zEL4xqgQFeA_qLz)W%O;Ox$-)e6nN=!X*Qxr5R8x}II@?mj{^BC;CBGl0*QPRf#abD z?b)TfdlbR{L`0V-l`D-0SG;WdmKTmhY{|@k|9~4RA2jO(%Edw@XPAnAxzb7X9B(T1 zgd{+^^2!L{l*P1mr;~Uy`hZ`D68Ul7Q_jUw6A})P((s!fTV&q?um#;tGIrsUBcvNu zLKozU*}w_DIe=9p%J9@gePjHyH^8G#lz|wCHg_67uK3WZG8~C!YntX?h}n49V~()- z*dn0+8I)&y!OCNP#&=?-2+fsoBu@s`5@WDEAu-MrNCXpkvG!^K6A_U)O)8<%s=T_w zqZ+Xo5CTEBS=?D)IK+()j&$AG6(W{S`hd$&XjFO31Hv-MFBIiE$oDG3oXdp$`Uf|T zMnD*ZM7YA29dCe)seG2s1LeZZqPy?@1c5K3xz3avvc^Kuze$WQ#sgZQ#%=04gg_<< z9oU7#3%`nla1kL|Lg`Lj?~Lz&IK^~3J^+!@5Df-9j(}NkJW4^!Us4s%Kjuzj|KlP? zgxCNK#q~!TRalaFyJ0P=rv=kV=UxoCBK^hBl^z4WinxiuT9Smtt#>Esdh2mYQ)xz( z@j@UxBL>v&3Ydr=)*`HQNfv;yO*bBxMp;eMsDL~~*n1D~qj+|NQ~?gxM|}c`us=^cbRUC$5f7z_c;#82LTk0od&#vh`cbN(kSdW zH3I?cY0XdxmCu_@2Bp8N18|6=fdftCRz@&Q1cHtlZB&sCmRS{owM=CI2f?QTcX3GLCN27l1s?$ts5{iL3lu{@;}1~uI{4i*5foP%Ked{Bc2rP`C!JIY?z{(97Yh3@ zue*qe`*Zd@c`BkdxU(_ak$nwBNqfn?(LfG z%s$%gJ)bLGBa&t958aO zhg1O-nh;-L1ky?QZwz+;oV+?9O)h40gehB z0O8q<-vuXzh+BK{Uk85CHT)p37BxIz@f?G)2??{PZg!Z97=qshL=0*$4@QDR|B9qL z;kJ5|KyGmZNJ3Rk0|T^)RM_WT4~f)rnHESmmosQYKlNS*0AN(0MljIN`4qN|T*Mm0 zY`ArWSHnlI#E>@h=K&C5kYPSpi=3SD67Wuy!{6EL=XH$&5xXrwbYCKVt^n3t)tmuv z5Kbmg`#xxfc8R}Lha-~#juL9m)}tU?P#%z{Rdh!SewxTe%SfY!!v{>uk|*WYStk8tD%2;AL1 zJqIYfr~R!s90}!01F7Sjae$#(tjRkDY&JBjOfH;`9-d=x4#yE_c)t$}@G!dhWD>M-k zeRtaViPi!Y#6yOF1^>=9?0CE5x3fIG4(@- zFsua^!80N85Gc*{ld*-K7Jx!>4LDrN1Bi&^>~Y9;Kj45e_mYc%;3)d8)}I;?0%>gV z8D$#!voupVbZok9K!~9t&GQ7<9+q(ms87IZ=}!9&aO3bbp-(+WUGECKYC@4J^`8RV z;C!86+^d}AM?LEWY$=ooa!SIY%`ss*scqnoZR%=R6lC9+0&wk2vyYXHP$f zJdV@!cXs;$8(oX+9*==q?=8%Oz>!#k+$NJ0=!_FhB+#y6kkfF*mmD5<0Vyh7-er^2 zVwu4OS1R_cJZ=k+Z1#-=3E3~v3^3*?tb#O4={f02?C- z$J5%dK7+j9!47^t&9$#_V$U!ikfl6ykjm#@E7L^e4fX;=m`iN~hvCRS83*7v2M&1Z1N0T8L2`rgb`se+UPO1sGRD6!;Ccj7t#B;|ZmvD}2jKormzgZx^&y4;}$R>2C2 zxOIvnxtCRkcbHfohSXaCK|>_Z1TVXKux4I6)^`hKeUBX2a|uwHj>TbE3opb-4^WH> zr@S?Qh9b!sxHif~m^8!yiBPq+<)*?ZtDv*^9DoQ|(TM8l4*}lCnOm3xW;HMY;TJhA zrYmf>aw`#Z8NH}?pmVT9I4xR;LwZnI6Tnw2SjS4Fi)JWSxmX?LW!r!Qr!4gZIGs62 zFXkE;a7ZZw1-cg>kk2$pPJga9HqmZGv`raD)dI`wZ!O$(?kTyPJ@*9;x`6b;Pea#mpoh09su$O(Od;dCxz&nN4RQ; zamJKm|Al?#4^EG`jsTe)zPB8xnynoHIybHuXLCQgNky7p2H3BNKTmr)!J9EU%FD3D z>(E@Qp7!jU2iZvA#Hv_;v#kA3DCTCoT1h5*KVIJFp$SKd*So!}5CgTSXm_8}p!&;N zInr>in>2^mP5}z1o-{204I({kXx}_wQd|ggA2xWoR2p;OHs83w>xjYOIMVlnrUj1} zDnL25(j!1PE`YvLEXxsv0RSU|iCY}C>Up=m^%D=y+jecAJm4W$eRIIOqWE56ykcX+ z9c}spM$N^yye!bu20$Cs<%kFrkT$LSG~A1L*}i(jz~kb1VGBW{f}t@kVm{3phoR8p3=@ttP~k= zT7>WnsP>JB91z(V8;;sBLAyMuI~UU+pa25gpbxGc!0KiE!S+!OtG4T#G`U77<=eiS z_Yk4-bLwJ#?uIO&?p<2IrCPAa717&ev$=0Zj;87c;Qb?NT5u373AuxsR0;-5S^;eg ziV8(?1US%%JX%7!{H!st+{XjmCkJ%#=K%%Nv*G~gBfIRuf-YQrSP<5t-0|HmsiiU! zEI%>(%O$|d`56yrcqRsqAKzyTJWPyh69|{&ED@weZUAwyKcjEKdO}+}>27?nY6O%k zC`kbes^!nb`^Iy5V5I>We^v_0JdCo>15i!?WEGS{MFwaPo_s)Q^2+j+RA{zPHkvsk zbC4q#AM;sblgTuwKJe508Hf#BFHbg9h_TKKmb_0Vm;y2%L!Rkc=&>YrBo2TaHg;MC zJ=9T1OKhA!osZMuf9lRC0Ct1z`V87eB}cUFNZx+B_W@7cgT`5ch^@XQDD!X*2Pi!Q z7XrdX`@uyF$$nff_ZyMsOP~^XL9naNm9~BYmpM+l0sgYQ@h?UC%B?c90YQs$7GaBl zTDYIj%p=uWP^2bxeb8~1LXJNGtFeBz(=2N$KNY-hk~w$HcCr1V$N9kbPVUum0`or( zcZb>9ToZfcRBD^$v>|;C`OB@`Q$_BO>3bv7*pK^7vz*Gy?^fJ?eJbXT!p7g$W1m7% zXb(y}Ws2#SYEKE%B~WU9{P`YaXId`({GpAQfq(+a>iqAW3Q5hCWv86a?c_7wDM<)K zlD|e%sZIfM!xX#Q;ZY0J$nHnuC zn~V#6v!$$ni<hm3bg&=@V7a3P-ZI{sm|pgBZ=Riky9Egy=#^dI-M0J4!b`5}#be_m;*&OtT-bf|@%U<`yr+V{ zuME5;l%U*(>OE&XP6Rr zp5j`kcKCnv(Fb}8q!ds(NNe-5$BtZQ%0mx6z=zj?M`w|AUODY+YVlZv0k=YO+N3hM z+>WoJoCQ;z(_q-TWs`52`=^N6=_);p*`fde6BuKVMRFYTsgX?ZV?a_6L3RGT|?$WS5 zspX-+jTbD3UlN`z#rd?i*(t#kHw=zG8HI^ob+48>>&7hnWv5*}DzsQ$ClNfO$P$<# zK>uncUyzE&=I1Kges>AkU*%RUKz9#PO2i+vOI<8RKrTD*9|Y+I`yk;K#Bj0GD-S(Z z-uDZB=y5KYl&pOXBxn}6%?MBb^;UPhREOKg4dSpXs5~_&t>r)uUC-+tzfCynltXe7 z3Tb8&E)hI?#4PpKc3e_&#FPkjosT`u?(rchjHv?iuzS#?%&4uKrqsT^b0bnq56l1? zY5ECL&)o+`_F^v@W92jN;F`_^YG313@QQwDvlO9d)7_99W{QnBq<>6W44E!=b<>>H zefY(Nz?*7fgE=7N9;B7n<50)5s`Bs&gCSroFKhmj2@$ggf4H}3nKFRQ9$nX5Y?5yo zLzBD5_ZBU) zlV+nZVRKixpA2u0%%nW0{beH^g_R(IQnG6g7%6bGsxY{Dl@Z*>6284W=N(8YF^{IS z#x^gu$22b%JWQXX1y8P##3o;w$55KEEi#RJF*Ml!&gwGk?r8>l{#CWKR@dgOJ!mm7 z?AC%sEo};ijDHDS>G%HqiIxfvtBQh8egPXnRlFLL)nMbldAnAmSD3)mO>cqa)?u(g z_Xbc*{%d^llniHHrRM}`BD)#CcJqyTowA?8uBXHAG6SZzlAoiZ2+wOpA!w;!vkTp5 zVMhXEtcIrBDp#kmDlMMAJ&A7*UVh~*K*M-{&KC0>@1<3|7FU$n9OTkH>`5`TqbiB& z$U*g>OI$mP*)(64m~R>)Z{^=Jyhv(FzNyJE!%>t5X^hu|C~2u#u3=v~l+bX&k2upD zgk`Yur>3H@$aHG^o6XFS+ZV!*jdDv@!s-yTZEVb&*%n8n_6zeMe>YKk#z(7|bZBEk zy<~b&bc@c)|#sl{F|Lgb(NOicf+x;!GgfHTHr%nwh*78B93p~)R6;-J0BluO z-MW^~cp(V_xNw!aWEuwqFR**IahcaBzIM4Rf+pK2UL>g%=oz~8o%WOl$!|u9k58_! zY>gJ%n<|kGR#59Nm z?m;b^F}5e$s3KuSk6Q*l(b^{k2qHSU(uj(OZex*fJ5%_R<%Z07#l|iLBgdGI&*S73 z%)lXBXgqFy{~(SrQ~`@AYO*!Zb1auJ`5_iYJ%Zq?faMA}F6%nx_sPNpy06CGY`7lHN_=C zvo7zYI}Dm(DPEKF*KE4^r|$EIk{@E!vg>W7A09u^;{*MQ_qi`ljZRW&%8GB3KZ;7y z&Ul*yF_KV_d*U+YChowsRzAuVS3WBGq#TyV&PhX+Rc6K~CF{RP(&KF(TJVLrOQ8+0 z)xgFNz{a?V%n{nlk&hpfR5ITF5Oo1P@M1ZXEw)ykS{3Eo1&@< zKl+u>W;;;~KA0Jy8M95}Lx~@GXZF)I;(frB{Ly9U?Hygp{&(&}Jzbg^gD6oaNGW5#Qh&j@Dx(5wdE%AHEGir^kyMLKSku z+JnB3hbCaj+fho}>6-44a98zt(@Ii~!}QlEjVBO~>$S^X6WQ-Kw0_5JrMzD!p#eF! zXX-x8CSTdAPI6~nn8ACH!daFz)sXa#uxs)TJu8lYM(=$ zv^0By0e8Ip{Ause)QiWOzkYi<-XS=ZQ_uLGBKY2jGDXO+fX0S2nPT+}B@|FHQcj`e zp=bL0=;z#Wq8Lk6f_-MmQ{gjT<5Zd%PTC64Xk8n#7xBtbeityZUvOoQW8TCnzbsF^ zXPn}vCE>_xUCtst7o5r@i)X$~+R98-%R2V^)zrt2ViWOA=Gc0?K6Y8|pOiZ`vb^@? z!j9YqHW=Yew`wtdcc!TK!(zGR^Dp_k5i===GN6kIkm*@n$f{CwC}D<>Oi|cDXROcp4}^`t9l5DEO>< zDC>kITRz$!Xtjkw!S{w(!gy%G(>{9GThrvJEQ`xn+m-l>C(9RV$ailU)h=7%3#O(P ztlK|{4aY$A#TD3g-UYK+I&3|DbTyKh+)gx$kpRa`1EidgaSDd^Pbh z7&+O1Ux6s7SzfnUdilLcCCN)MUe!VC`Fzo9RTn=l1dlFItN!IIzFlt2q5NalwH4I$ z-vZIHN5PBFmzydc=qTl$`iLd}wTFJABZKUWb~dx|{1vClEU(+$>BbDn`vSz`8#RK- zr)qWMPnU*c)Vp4*rUfh5sm2b?_^|eATu>N6N4`%YK09C&&bTw3Np`)brO?37SI*j- zh_|nzbYH%e@XgWOdFRXJTjto3JsISw%(Nu!ofaEBU0qops~0t8h+QvfOLZK6nNM|6 z8;&Q|tM@+Wc~UjAb9pKgyBwSS`;vgSg9IgUeUcBNBDL7^G2X|_9fA>^bFV(kQyvN} z@AH|10gWZ>^ehR@-)@|=IC3OneUf+O<9oFa3Dd27zpuzmb)N;b%Sg^mxrO^Sy#~_H z6!k_myIh)!2#ycTNcU_R2~EhcZf`m$eEhnU0xk@BG1~>Y%blrtIAfdf+4Upye)nF* z{5aK@c;)Azc6?8pi=JB2C@ozyQ9lP@122~V_O_vsa`A(<>~MH#ptw3 zdEeb`xmJf5j=yD9YUL)r-Uzh(*kSko$JKX7HMIucg7l6eA{|5lg@E+l6%c7wBvLLt z0R-v2Hx(&fFo^UfDj*7x-V`YsdQc2qG4$R;edB#={a*RQwOlTfbMnp1o;`cdNzRR7 zmI%oPIETqsM6MUhKX#gVRuDgunQb@ZU9@nIS5}YE1S)c5Pb@RCCysA8o_ium_RyPK zeOl*TOjyOl!!hL^A>NjSVUm9xLt3d5HB#azdMl6UDVj$V$^Ccx*K_W3MrDan8|ro; zD9P-huOG{1CO3^16_DBQ(|2@nZnH(i>%T59eX6W_fA@G`hikE3BA58HY?K16#5sT_ zd3PSAHTkt9U&onglOuAP6B_k!W;#rW3FfUp#OTjfrJ|8lc^K%jSOXqA>{nTKY2sKQ z6*ZU$SbnobN9y4?v+eZ>Z?c&!k7dZ&_c=q~y&g^{W$Fz_xofl_=adxZX7uq_>sJS@ z?}@3=upE7B+&LBU;0(H*-?7(ejc3#=dgFTBYP5z@GnV^)$CY#_cavxfWKZ-7q#M^6 z2Lm*T?R6fpJTII1H=?z`u#)STegsVtg^2y^6qV7$E#&7L{;|jTDirpuCnX!>jup;* zv+pXH!Wg=cn~rIY_Eml~ z^{=@O+_7>D0acy(nFq_s?Vzi*c^cimG`*4z!@1dMfzD>9VDb58zXn)Ajh(}d=5 z1LQdLzlOh^*c_RPE+U?peML0t)5A@CvQaMV=$X!R!23_sW?IX+?a|DnxwU2p#9>Bc zUL;`ZKV7F;8(_#cRN`&PkS;JRB+cm@9Ku}LPf{Fi_0bZU3e&oXFo~f@Hl1`vlQ1O(hT)i% zIG9Gb0#N}<(I}GILyPvHPmQ&UjkwLqmp2@LZo#CRM5%z_m}miUVk7qvCMQmMIH`K{ zw8L8o{K^O2bPXrZ?tz|+g0A8FKZCqE#x>%7@GigV2#adU;X^w72*1x{h>3?PGdrHR zZ8cyBCYs7it#{finz8)N6ja!T9vrENSpG?mW=-Y7jdqjjUn$E@5C|64mh9Z_sM0%} zE>~$DuG@7bw|cF*urHE$4ztZt%}u}V{h8e<%vIe4#&_w>*u^Dn zT*c`@tLTYY^g*igDbLvlFUw@A@Y3u66Icnv5Ktqm0Wl8yX8Lv7&CP5M#ui^Py``5+ z9g_OB4)$%|QK`+uh~jt8?I*akS|c1B)o9EbKZnBChxv76TepWTDAk~-Ht1ORP$2gZmCaa|F-%}a)Opxl^M&lF+k|6W_| zD~F9U<$Aad?IYPkF2x<))q#r2bhS4f9`u8=ySrYmi=%c0WCuJ~d8db_{K@LP59Dr4 zv(pZckM@7w!&}z;vCP)PwXLjKp=xc=b+nuTw)#RcEPoJ~Q%s*=CLuWJA^3?p>z;XVHpFLEN)>9|lNS5)4Z zq8)=w$(mf>b)14W(85{Uo)Ynq5rM~;9W5^2&m!(K3v|OVk|Up7u{6ho?!AGY^4-iM zxfzq*Pa}Dm7=;!4EVL4BC~};kTUniNn<+=bn`e~K5<7~G_jyH>r|n-CnXGxK7PX^! z0^Eme;g36JE+Vu0 zdb_ZTv3xK=YXcV`_eyZ6XUs>}a{Y_0-6Na1mXP+z8)?M=*~o5y4$!#WFQ^(6u7sAf zqC{XVXqK>}lw;V@O|i;1Ys!zZ-3a4!*Ra8?7FeDw?x8{N5CoUQG>bI!uoCD%Wv05g zj8A&FjHC*Y@BRu{{Q60t-fLkVOZavFvxS!aF?P|9vp?0gs0cjA1PNqeSTyAk{EEKO zU(Kd$TJ>H?Bl(!_V1wm%(E*oad;7|z5-)S->%H);W8jYzK(J_QAUfKgUYzo-pm-1Z6myb%B0YhAi3YgbnLJcU8skX;>E$EN7LFp$fp+QJ^N%Hr3xXLE_q z`*dhlYd&=8)~_-?>iXz9qjdtop>qkrk;H8?>a5DL4w5EFF_%DENify%`*qO?4&;+p zZUP3En}R6;;Qj8Da5?U~Kj(Q1cY+neML23{RDi~xJ~--gl^|)*f_lV!2~|tyjINz) zI4PXlz5uWE(`G^NN3$aI9G+fIN0~E{nL#oPt%UxDDcUCT_1ujtI?9_w|tGRNhDX_uhitFMdW?JW`2;mUqv)svYD=2bGF zEf+_`V?d8kXCd)-tha`2?P{JHaRaglV${n5U|>sjons4Y@#9ruq4qCCb5IZhu3 zxqM}!H0S!Cy}Bdu=J-+9q{D4-RCI<$?3tg zP|&^sVNTOzL6k=Vf2Hg|EHbGQsg`g2ty2y}nwBuaEGiCDvQVSb9vBT0n+2-!_)VwrY8Q8>|giShx=^14-|EkxwDAK zCz?y7Fg3u@ysU+Lc>ldi2Un2y9Mc;sfy}0F#L~F?ClO{Pf@w3WkySJhV7nntKD5$y z$np*6V6M}B>r|%NI5VvakUBo_6B8Gg8~J5M%JyVT7fC*&1t=vtP?Ra5f7310-gO5- z`2>KA5K#9q;E+_8v$lWz%8}w;`oaborxN{1-q2FA>nhapz?%f4=4WUwsN(!8rgL ze4iA@x|)TxZk4y=07-^EdqeibU>o?q&9Y`UX8e~rOprR=kUG48$#Lax2K{*%2iA=r zHI0EL{4ZL`S<*Uez*zM-?7#BtEGFI+%_nx78sjp;{yll|iy>S=DGNM!bX>k&Gm<%9k|%l|v&rV_T%z{Hx838{Jf(=&r19;;8Q~%bLxK+^({ae>? z*C1)waw9MzJSqd&H)|K*IFZc`-pTv*002uTH7z7Z#1R$#W zI=6l`^}J(&nm;oos+JK6?WPV@8`!0fFK)-R+;9aHqyrSZ2}No@AgHPmLwK@PNh8#K zPPCAy41{0!FaN~raW!+5N8Lq^(`7-=iNx~AxfOEeX8DJ5RgSgQww4H{W9|z=9!F(h z6im*dJ)!4--*FNOWw%lnp3LWCNx(9c>(A79ldXiify8WuR40o=lX}CR${LqD?AL6( zh{N=T8zOz9I$Q`nF(;JycPu;qL$^l(keu`AfD_oh^%%DvUW7H%AvTzXallhaaiz+2 zNc-E^o*He>uheJ4S$~u6IxYYJtqm%r?Uo)_4p(oKF4F2m8Mc8QkWgrIz|#NQ^Gp?x zF2gtYaK4-%JjsC(u=n%LJy_<$u5+p_oSzm|#eY@rAPpNH4oG zQTd)_#gPwbe4>K~w@s;ENTk~V*w{VQnMdRnOv0>COClu0>4)RuG+NZ2`2Kzj1F<2v zJ!r^OJfE#Pw9>?V@evm2nUc}B0qWBM>Vs1MgZdcAq6=6H#^*ccRq-<(07iTu*PWUz zB;H{yBqm&bm~#}&78FWeIo6xq;U$oc!3iW_Ny$LB{(!LIJD;O!%R4|K3!aT-!&XwKp%&{>jejK=DeysA(ZweDnJl$!Jspb!haO$ z`2V$#wf#&Lxony&Yy&0CFznHgX^P)|Zuoyw{;%>N!5F2X@>H=FjoFY8xZFt05SWtg zG1SO$mNIYJ-lM04Z<`xRiva+^%HS^wKMMX?F@}8%r!WM~XC;~ksZLA6@_bAWF;-bS zc<>*-t>Qh!WPyIb=j~Rhp@yRSuY&+F>InOEn1boh;ad7E1{li=JTDCslnY+9=0ybm zZY;cQ+>$LHu)H#0dEWi&w`Ysg{9D}|3+h){CWF6J9Lk*UU+169C&~rwTIhi2Yl54I zNW-vbk%ac@C4W|GT+Y}F6Y4&TDkOgB(*`4ZMhLUy6=p9F%I+;ULJy4yVuI!(_TW5t zlEI%PgBi1)iome%6j?o5F(%s*AP%P1iBRMb*9mV{ccrd?+f#8#519tkEl~O00!wY* zllNXb1f49zuhVzFB06+j$p}WeMMxu;BQF6t4@Ih<=*D{8!>03dJ{U&xhq6aPOE?6_ z@U^G#@_(WsPbU?@uMoA(8~tKpO!C!zk0p)#Zg06G+6L?>xdZk*L0^_F&v3r2>n82osNQ324?h~rXz zRKEGXV>Y;fooh?6r|HQ;+V z6%4W^&q-RHE$SD(kq{PXINWghfpLU5^5}@kF_*Yz)S!TD;+aR)o<4z9oj01!P4U>g z-{2>w&c<{6(KV-^=RqbmlWGo2(@{3v45PX5pIOrGQ@O6(nJID6f{nFlzuJib!QjK7 zQFn9zFO=Ev$1WWjkM;f00yM{VDC>hj5GiG$AuQ^ZvLlk>qD2DKd#pNq_6nPh9?L7} z2qW~uz8x13Z?Ddi6bHYO^1Fq%$#d~w2(*DGVOpbbXPRm7JgTko=w?H zRp4Ej$$pT^x-quiU>2pdR=_0P`+G8njPB`k&1R44E zO?(9hHJaawy8k<7Y0t~n@B||4gd5UWQK8+i*m8FYXJ<$b_CoJtspr^(F?Oj}7>u5Y z9iJM1Z?ptbofLZ(e;w!5LXzF5`iiZ+*nU1D1Cw*)_w;KXaVR$$qY+_%RNpyc z1u5`*Bw$5Z_+6t+`zFA_OqgvK*-|Uho`T^B&%sznhbKOc*Z4EqPyER;hHW?jzPlXsyd90-qiQaM!MF)3yU$Gdgnjas43Sb=UmuT?i-k5!{%Q2fz)X0s)2vy6lAdaUPj)I;! z1Sx~1CIujxl5B(%6HH^C{K415I~Jp3dJWgC#e~ocZq3dm3e_w6VS^8DB6AwKPh8 zSQZ+PHHS305#@2Ps;UFVcA2GVhTnz;Ox&!RJpoG%hoYWY;bJ!5o_pyV!5!n zsA7X@4Nyw+$F@cnmcF=aA;x0=@-#nK!kS@>mwN!ra*qr@AX-$d7 zs&WEwUp?QEPuv1^w>&qK`FD|!T|yG`qzUkO1uYqb1{a%)GL+>e-jm_Q1WNOY8;KM1ESf1UtodL_;P*^|TSGLH(70BuO- zeb)9=a}JwJAX=d(qO%CI#L<%=2V(&jd}^UTeU`h~-aRKR6HD^KF&w}G!ZJGd`qp2E zy$?eLsABshf(4=ubuzA%l7m7XyFs{)Ri(+4G_T^&q+e>Cv0!x>`1`ho$WXzQkNL#! zz`D5eGM7K^SagoR!mZi9E^^QSd8pM5d=`#>Ogp}~w9Hkzu7ukwKT45^my;NdDb~J- z2m;E4_wq*|o9Kr@lc+=2((j=(-qkz_(cWLZsUJY7XoL}8^?>UgFOrWT2CGVEfL2gf zj%w6WDNm5IYcavu<=yD**eIVG*T&)U%sOCWglsH!W}MXpz9@~wivAk5fd{4_f4-SW zOoz5Q0=9^k+Vz|~C9L{$x^4KNLw_(Whh0QcsRlwaj*pkWnE^bLY?b(p`~bLtdyWJv z=C5!AcYkET>m?8-k=nxvNj;8bC?}gzCH7#fDjzhXIp23K$mQrISYZS!P2-pabmcYv z$;5Bk~r+QkRMk0nD> zKO*00#CMb8LXl1U%=q;w*2A|B^?`i*nHaOk49rkO945+i^{vA`ZE9Z+{jv>1jpN|1 z_bMLt-}G@4hiOoedbw#Bwj6sHQaH|;z3>}-_y}jRX8oFZyt$ZMPnH|Xl7!V>Ajk1eEBj&}?8Rtk#rZTjXz^BlVv$%Ry}iG=+7Nexco8jRi?+Nh!# zKs3@#hC{xXtcR=CJ_*7ZDPynF^22nMmHI@#l?5FFd%y#T6A$O_69hY$6A`oF4nf>7 zY?y$qm>5#Zvh*cmr&8UU^_VIK%dq`uBSmPjSp9~R3an0Slibb32LE@K}8A+bK!Phl9I+Y@!iZ&&o9qnkcBaWFvLrNdZ zlxv1FPu>L``(($LbYH-k5WpE~w89Zz{=~G)+2GTsP)fGC&?6n9YDp8&|vlnR3GQ~nu+B($?jCOu)BL@wkT!o-7^nI&5g+d)-hK?;-f^F z$5>Sr;T~WyQ;8?krd>t6ChlZMTe>kXe-5phxAgdP zR;Rs;t(pE8G(07Uk&^|#pQd1(`1ze+a`1pT3Y570wJtVuvEg_e6~g`Ke&(Be;vvWc z8hKg1iHS1qpM2|>{Ipq0WL*gj~BPio@_WXW!L_Nb4X<`q)XB3l6_wV12of- zlqo|#umWJyBDu>Id*HWC0 zX|P|4VgCXG;u-I-@26kf&1vD648EM$pT6}+vOOw@q!?*rHl_M-LNiTR{1G4BHoI(} z=a+PkSLqlhlSeYV*aO8){JQN~*Z!UL#ga<%UcYqyeSsKE4h;ujx;WBJIn4`{?YvZs zpUwqDhW9&yA7Z2+?-{VQYYirHO{eQ%R+}v%9@h)>0J-Z=-pqDTfusv&s+kKu*u47J zPE^nm1n@Y8RR7fNid8+y1s@PQz{e9rHzb+$6c1U)-}O6lVEvr_Jr{x%-5YN*YqfOJ zY_J8T8;nvndoChY$Rwdb((j)U7&;guw{=W=J62lB5Pnew z&()HuEk0#B2a|!T&RTOHF*0Py=>+x|kLZJsu9D#f!*RuyyiU$@@b2XB?p%O;yrAbC zUe=6TmBFXagdAqLcsQzE!F!5;z7E?$#I>Oh9VpVN&f*6;bO;SbcI?54!GU#^zSXAC zEWw^kKeipV;RN@XC9DOd7BZWG0((H{?%IxU2x2K5SeGJs2&Z67VtK$y4@UM-NoFNA zH#`rL=KXTA+5^OBE-s*~*n#z|zuT%wI*%~cMOv95>OqP ztqJVG9tB)r0Y=j1I4&f7oe)}SP78Q9<81Djf49)0PaV?=$V$sJ8_yi}MbG!G4|agh z?W84-NYmj%G}B(i9%LW!Bf`j=k~ZDxA2#0hT`tVGgH~yAC4qK)H&e(i(zSA@~?WkDh`cN8sJAB zn6^7W_c7TFIACjX!P&^-u#&|6W839wEPpvn!OO6bFir)xvI80t@#|zU@jftR{s>>> zyC^phL)7b-a(3wVGkmA+3+9bgSW*J{;21y$*r~xK+(ccgT{DQmUc}3XR8?g}BC$i`VS(PYqbZ2skG(l8>v7oB zeTexRjcg3Jpe95Esw@~r_4Rv-hPdO%SrhRQ1)WofG-&-UpN#g`=*r-tDQotk`9vP* zUFoJ*aphqkRX6Z~IuZmXWSEvDLL{Wq6`M)^j9anT-$-RA>~B20Asz~_lm(g|i5fof z{XEYohkdEn1;jM)vhIURQlAIgYYXxo$Hg0KQvfP=SP3?Szr^jJ83FM=X$f<94m}k% zSSr=~UeyLX8*x1kZoPSF@@OKjIqKyG)e<(7+7cUla&urk60|O&Lvl@j#TYdjd%$Er z0CHCzajN;Z7hX4{xp%8Re*akaFeETj5_+fc>ms5h@Sm{bL;@;68hGv*5b5+<*4{YO zGoM1&Qr!fY8dvX8SZc2Z+d?8T7>eTp_FyR#t}>DL43l&mu>;S0XmbFOO~b_h6E4y5 zj3#|a2KHds1fOGM1hX*3kbli21|UtkAbm6f47O7L+`wisBESsb#nSj4lY6u3@%$R? z_msWji>&I z!t%*1%n}9bJl55OYgzVLhWN;kCOslZ&@RPc|01-9A>RDAp%dY(8IK{=NQ7WEW59(WORo2b3vlt%V4B& z?`GN zGLU3jYP&1O{!%6~=pb6KAG6LVnoA7IO@#*t43KWo%E;xuFg*Ab-xn>xuYjXVgW54` zwLy+6Wf7|GSFvcpB8NgNdK3%aHi1&2p-0uS8i4ce7lpqKj`qB6j}SrxD7Q(tJTi1v z7*g@-WlfyB)*oiv_8I*`VkiK9XL@Ec?_Q8yO{kL;p7~H+a)yB(T?<}xfXwZI^~cq4 z(>V-f*hP3K;D`nCz8T)3JaUSm=OUlkA6YuEpvX87GeG(|z#pAJIQ|U340*ykFI6AgsNq6 z2J_|c@=n;_Sa3ruM8H=~#w4kJhFHAK{5W6bnnUph8+^gO&-3J;KF|Z$s4`LDrI9|=0>Hs43Fkx70hGW7azH<*36I- zkD=J2z~TI`Krq7wAO4-AfJ_l97I2#b#<|`IS7g&EPjsz5ge~=N*cf`${)R0A!j=wUqd`c{K^|E#MM2mU!Me!- z!>ORzRvu{_BMt`8qOEm5gbk!`3I_-qOxANM5H=UE{u}#v;e@F|um@b=3yZKG^3I$# zA#{A)%R0)W+F|O=0~{odqUDJG-d_LaS2SMw$OqVTivRsLW#aed~^$ zdBpw>8E%+mJz-J88AXzS_+5hGhI;mAL0G)V_|xl86vl!!-6y_ea6;7w{IiV&n>hkA zlxR~0H^mF0q6YA#jw~K`@G+Rap_RCUVGlw7u|nwIJt5ePj%G$C^5W|H*Da^u);Kgj ztK+syz=K;5h{8lASN2w@(FR~;*u{&Bq@NJ zC+*$uDGdIj1Y;j*7Z*=B-Z!V=`IV^f70bf}vK}=+=YI1pI6`25E`ll+$`4|!3%uSs z@40;1myG>N^ILU1l5t>7M#EEwWaq-(yXsl?{AHu|0~Oq=8t@DpH2YA%U6RskSm%u{ z`FZRuoedsl56Gg~be6zI<^HnKPiq>u?VV)c5L%ZIB1X`&dct{z6NW5$`3go>`G6~h zLJSMQPP(=69~%_`Hku5=GAp8)CNUJZ&5^80v*uI%CF8U*zXr1#v_-H==wX|>IUGvs zXBn^`5giJU9T3=H3h#mSkUpKXsfp#u#{Owz^)u(fu&zl_l*nvaK+Ruaa0Rcwo^ixE zSiAg&CdsY#laD@R**8h>(-Z^xM}y#p-m_k)v?zsaqRyldAFSf-JT=}dMAI!?*F zj^w-B=F;aW4a;`goyA0Ma2Qsi=<9fntCB;mW;pHMqn))|Q$!UJAA^X>@f|?knk5my zBM34!1ahuihk7jb{u!`zYuMX3U#N8mHlqP6d+PG16MQIsf>j+zF;-}2}Dj%Nno6>jzWZMU2=RoM z>jKMlhx-pZytMxWLnE-pf%6@u2egz0{JEHX7=L6r?eDd=u*fdgL}h>``9j<&65yZ{ zL!+QmeC;E}A2pda{Xn*57pHvSWLSS7n$3LfwM+cFsfV9i_- z5k^h)X7#InFEaSE0aw?z{t&A82DsREKh{alFd`93_5=tbxSF7moEkuDyn7I@VD1b* zO9IXI2`Yf&AS`Hx`_hOHW-SXlFDtCPGn%;&PEKPORQzw@E!ND~!gLd5{wsQA(x%C^ z!qvvJhceS&F1JN)xwGpf6hJ*I%1KV4Ssal^mPHH@@szT1ZCY4JM_XUTbXLa z?EZb1^2Q1Hm;kcgNd)jeGTE9yavutM(#O?x(43IcZ3S>1_{kI5b`gns@&? z+?hT6{9}rm4`M+KzTI7LVWeWGNdEX{=+H#+irAKky_#Uqe9qTzU$ggI%5f`3+wfz@ zcb=<#Pub!m+|rO-sH~VUI9!pWxBjYL`@AW6>*eB`-cESaJ(-H}WVNlGV}sT6LG%1L zgC-yI?`5SO4km|hOZnkG@|w?Bz?+hr7gg^bKeO_TRrz(3AX(HTydYCitiD;ju1wmv zIU%`l2QG8YMQFcaP{Coze&zaMd~*t^bLY8okWSzR;wVeJ-z-eBchleeyLIw&xZ+d= zUy9n6S4B4b-Nb?D(2Ut@Jr+3dZ77{L>AbY&Q>ZSo5WD!MS!@AcQG66pI(>2_;429u zz60;Tzo$oP#AWXZRan7$u$z~|-?=NcE8N$W%$pY9(3tBHZiSe$Ow_`AEfHs$z0AMo zV4gn@F`u8$`7_hpYM!?^kvgFi^yXNiL^NoA<5;}>>h_??w>rW7xY~)$#AwdwLH`8YG&U1|<(N{<*h(|BYXhcnG{suj!mdHQb`Oi{$>>LCMZ_I0=o_ zI{}D_UW3DY@tKT);+tU`F6$Qd69-&gI`6+&&8Ia>sGbY5cK+Q=dA-8Kz$i?|s&cXN zX4qz8!PgUD8{IPs-`O?I(zY{-;;zd$< z=^m+9L-e@YYL&FpIOIWJA(nQlXT@TbJtyFu?}qN)^99MQM*saEm1Y_Tx3``5_R415 zn^%9AS%+-TONK6rqE+$7t7BW zn+NWacYIA^nEG8KE0H8NHD4qDE{S_;x<<~oW87cKDq(1<+h1ioVP~rKCqI8j&v~h9 z#y3+o&&zx@_Dne_ynNBvAZ5K!`i-%3%3h%q+8D{^_uB}Q^4(sIU|5whX0M@Sc<|NZ zw;>yTP*$zmuo6EitAQ}Sj$g-0ml?a@+p$UyjKTA=5ClAcE>hz^xgD3P9M!fe!P%#TJFj~IF%3rtJ0So_X#%By@@hT*_p-Da{-Ro zSu@iy0UlN_(`KFr_*msAOm_#kEcY~$oSU-Ur$jJ7L&y4+h-&f47yR4q6dalZ1$g)n%Z^>=6tlo>|-3p&&aTZEsWX|_h)`OX0l5d`+ zbK1yr-;b6qLnGb3B}-L}+ZBz@?!zP7?;73theJo^&MSX4ew(svuUu=~bZhpsN|ABx zt))TbE#m_GB39W7PQvF$mXXs4!H=1@*=td8?25v7BR`ojSB0T&zxc76)uUzJC1c3y z{s+GIEvpxN(#CxJ@MFGyV<9_zYQ9-k`Du$qfpb<>X$!=l7^@Fv^LGNjTa}ru$OU$1 zk8A|u#@|*iKM1TJZ}OWZHQM#giR`}#t;?Bn+OG}GvtCTwgH>ParI8wot)WAsu#t(a zosj0RMU|*80!sQ!(ou^73Y{$UQNPJ7%xFGph4h`pQZKh~i?jDsM~(fXp~!gf$s_r! zaNHZ4z!#j3aU>g?dpwv}qK(5n?jLapHeNru>RO2pkY2Dt(Xh$uN^l6=7uN<;bSLBGeJr)*P$ifTPiE2l;k`4_b6 zDVB~Z>wA~g>NggfD(fZCK9*Wr7F!SYjCPQ^J{ij&E9T|LToB(Mh|OWkyoWt7$r9JE zhY?$uOL|;v;sQ1te%b_;)DH|;df&Y`TejD@|2Fh@@V3_8lXu^cymvk-e@jWs&)FWh z{?)g2{>8`dQXRh1v#GYlwmy$te7;I7CKql#noEw{)Hkmy;M?w~sHfkb>f35P(!cJ0 zx;fr5PsO$%@VCI>q`rpz_$xN~0g9kG^3@!AWwHZ~DCXAzOrM&?I<4b=?ljsxI_whV zwry5@8~xKgVU%@$q+jAosBI?Whp_(955ubU$FW*nO zAXMWRTk6EF<*p;>cj5I|H_Jvt?rl5o+MnV29q4SuHX6C1;<3!n_U6g67p*4fi;GXE z%*3>nMC!h;xxMQZUG7C6@=y828VaBLzZ@>7oo--1&0$7m_c9{MGU09M>Vr3CXDsB# zV^r^-vbaNKMs1`NlUwmnxQ0M~Kk|irOUl(xbfRc_ZFzd`BYhd$yQifA?FhwKkRCTERtI5u6KK_Z=tyi700(rV97*Roy4rQGK_+Gv_G9@$DXF*n^v zjHcTasl=1&dwDe0xAXqNtLHkmJTe_?5`Nc&|KjOTyHPjdA(!9BtW?Cuh|hyR2=<|+ z=!IYf!Iy#}&UvEFT1Q8B7n);#s}t<`efV@(4ASI;OH5~ISyYVIZp_%^suK6-)ig>{ zRPO{e)u*W6(MbDY`f_4xMe~?iwtQoFYvD)WKS7VMND39AuPdyVq;|s(hNiRo&cW{;sXpP=e98rR%n^9e(Fnha!z#J-y|6 zn@()Zzw`xx^LMWhe|#VPE;>eU5E9d;Pl)VBJ~Dh*d*_Ahqo=E{eOzy4w+?9A$XW-S zdFDwKWc5h(;Y_MY))`$>!Jf(PyKhy~J_bqz*~p%DzBE|;Oxa-|F#q~i=GEtX&n2#= zIDRj^`fMKUve2LP`i8ZK71GhQP%HiY!--3S+0WLm_&J{`73H(9;^K>@N@~2)8NQn1 z*!+?h@{hVdd?Qt++1XU>rud%{FLUVRw1ni$pVK){izs`RD6Ztn+F!bzY}os@h__(w zP5NbCL*w@h++2h60dzvjg2ta-Yl+Uv{-jKMSg3U#B^xTfZd<}|GM&Tl48`~$@}ZI? zl|kP_Cv7Q_2J<=*iG+?5&)co#PFOe-X(WE>wmu!c!KuOiM!iP+p}CsRD~{hcD|5F^ zT#B}^eg^asAH4=t?|tN9dp$~(!clI2*_`$=+TzrUFM<&UYL9P`OEA!<4|8%_Q%dg` zY$<(m{SiuQk-zt{5%aQtVO(B5hwTGhR<)xyBD1eQ_y?Xd^_7G2%rQr1vn}`^Z%NxrC-@jxpzRQS3FF8?AX&FQb&aKEE{F zLUz6!{uq8Ui|u?A!HRK{dz8Q^o2iRVWiC9CdL~9AebMpVNI>}Z#lU=y743N>iA}97 zK|`rGhwF`_XGyK4hEL|si`ufoYwDXK?@?k8g?A4M;yX;W4@ex%WuNoqIAFdp8oF3x9#6xzM$hPk7%wt?VJV+{Z9lGi|#1rXL;b|3?cM z!9d9N5_ownfw|@$#ewzd7M1iPWKQ|@pZX{vaUiuD4vvL6!)xuqCGYz#yoXQ7?4QuA=$9l zN2Zp%zD*gtgtX#ivJsdCexBmiJPCw&ZX%UO~sS)2N!J4a_c$l zD*tx&-y0XtdVg^1#yzg%Xg}vm*;QF7cD2G|Ov5Q=>}Cu0&MsS#Jw;eag(r&RO!8(6 zZhg$SS(_}aveaJX=vf-l$>oyBfGGdXcaAP1t7Fu}lkNBEe^F1|_?*h*@j#@m#B@RT zrM6wo>GhA?`DeQRy~K%iF1%~kq$z~j{M0JUv`!U99klxXE={&J_r1#WYSH04Q(b?ukkygzUBjhP zHqIu>b-hfu_~WH*f5_~#Pb6A8^O204-LlAyo92wd8v34g4QGoKp7}-6FdbiAEDkWK z80*b>ulu=(*nm-T|}%5|Bw6B*OGNPNTI3A8DIH( zMU7sCxw?$U7n9b+`MCIUJYB&-SsLy2c$t6i}(lAYW-Oyi3u3hqLT0ez(BMY3(G1 ze5!3i@v1L%PGukRmZ5*>`bbTJ>Rmb0^0JmK_tHhFH$P2#1NNhFjV^V1oOk4}czC~Z zn6BX$ULxIN#?z*VwmuS23gGzH=4y&Y#Ge+IGLtN`-fs7i2XfCtobEi{mL1xXquVjx(8zUtv{AF$O^4Zt_N9yztX!*?I|->e=^Q=v zyphFN+Ulz5l+V>4n7^Qkbra-L--_}UC<^AlkN#8Z%ZzJ^`D6Ivo!Rm?nta#mmEte& z=7V@rw7j~%;-&T>d#Pw<|02jCY*}gm`xab`{V7in{xAmf9`VCDsy+n zGt1GRp1yE3q0f2H(OY7W@nlJFw4s}G@vCXWPD2kBNuR1>W1&f_kRE4a^O7H&E~@nd z2N^eOzQ0CX9F$L8ek$C=KTUZtJ}P1PscC&}a>Ul)&~k}e5!Ft+tCFfnWK==AyKty< zUk>R7O{KX%+ur5%Qt!*hAK6rrhC=-LC~f7eZsZKd6GRF|E{o`Q^yrk#42T!dW7nUK zrma~$+gR6Ye=rwKmc+hu_n*N`^vg=#D1)W!0WG&XjD*35bH;D3-;*t`cO8-ng>?|zMc5?p|aC~F+uP7yLOYwr47ILwR9x>`BIOg zhLJV*sFXLeui`^`ukHtr{94gAOJ%ft=CQSkE+qGjkbIKapd}??wc#x0y*4e+kVzkV z{gS(!^AFt*wzoUhOn6twGj0i8Wq7A0i*np6u=#X(=VnX!FC*1cFJi<#iBlZs4>?t- zBma?7WL%s?)wGd2P9m`9^vOm3iT-M!`{gzjyQuam8Q0`RMS8|?va?S_SajCD1Ppf> zVEHQl73oU-Qm|?f@K*I!wy4FI$}hh@>%3<*NjhlDeDz7)FQ?GbBar1wZ~u#c_snz* zt`ztdnJxuc&Ok=D2y;{0*OwLBR_QGMy*tx0{NXd-s7tugDudyr-4pM^FPh%&68=ff zdxy;`oDIGJl-z=hCHKW_7*-?1MBS)E#-ndzCZAr+$UF zS*cf)V^^JivEL9o&n)U9OMh5s?3H51lO|(0CzMKO@bYVmp=Nw;&W&DwO=%iovV)}c zaFR{PZE0lGzUXVl8oq43`?<0Gr)!i4DN7Ugu3pUz`sJa>^N}H_b=3ZDNqA*H-R$tq zT-K+`iqr(ML`HdCriad&%rTxZVIJ1@CoW5tGR%CgHVl37GrO#%U z!uzZjlUa*uYd_av8>7%;n?R}hKFcn|X%2M(cK^Gc9FC_q=!#;#Y1>IRf3z~jn=umyQ}`Qr)BBssoI`O3+7zNy80|vSN~j}Ac}R9W|?U$!d=JX z>_@F1;ok)8H2J-3!=;7YuinWOHD&XcJw-LjNgsKhoGL;{hkUB7k14{j(A5#b$7nh#(T7pS_N>4s;+{* zW}~C0t!ez)SU#yp-uy){OhpYvMYkJc4_9R`+c^xgFI+Lr>3iXAI&seA{^P2z)Ji$E zJ71snRA_0Y;&{qrT3r3bT1OYdQ}7W_n#3_b@Qo32GhKjaRYF#Y{`bhyV%li0Sx;(RIAI;L2B{>%G-Hgl>S>+U71 zX^&05*jY8L{ngA1yrY8ECg$@tZfD2NtdC5;iq5+0BL1$dbXdu+F8{;q+j@-4!n>kR zzx`H2oOd*ug!qpsOs`W=o+cwBqb0kaC1xm8^X9rEIT;y01sT~%_*ZWmSG299jjflr zr;VMr#KVAuo0cx0FP{$SEwAx@^xfx(%!b8nmeqpyUd|PX>IcZWk4D#SR!MD7aNv;( z-tQaE?=1YuOtHUup^(}r;Eb^;+e==3tswiyr>VSSO6RNw9SUV`47b}&lG|QxZTk_% zh;iXRBy0pnp$0Avo!y9@w-76oZohZs$p`LSMd}Om%z{_lSI*l}Jrlh&kW7nCLEh{l z`kYyEsJYjjEk7=3u_rl_%TZpfmG%!KTkGkoyHBX@+`0SeA&WI*R|Sk<>Qt@Iu^6|Y zG{3hAFYoGtz-07lU`&ibhO3 z|FyEah;>-If1kqt-oMgqHb*DdzDaX3r)J%x#{cZJqt!?-_bVZ`+S5ig{Sz-(`_3UC z(5YHyS-BCn?`P=|miObtS?_HP8SaZ{3GHvsRpte`GkO@+2OJ-z&OCb6vo+h_0w*}ywfWgdh27E0~OrvfITxRI0JR%4{JpR&8MKRLBAa7#{H zu9ocoy>L{N5!|d1L8^CrB9v^^?lyFKPszU z{l89Uvp&xBQCW$-8670BBpKP6|G8OjhyPXBR{+PAEA5(@nH{rZW{;VfnVFfHIp)O7 z%oH;-W6T^g$INU$@Ba6{+1+>FeN%O+B+cosG)FCUx6aoiCuhCC=y6@!o zPYj50Ks^(M8rJZ;JHpUL9~NK?tvIY`wd zDgrphtHrQn0i~+oVq$@nL%-@~0QnY@ro_1(`BzB;!QURJQo~8ExJg3z7k`bI4N~If z%bAB?1IS9$BgrPFj}9roK)>iGkq0-_mSUgDT;pKq0Lc1dFjoM;eq~siQ(j@YBc1DZmP!xo{fOF!T`l>Q> zn?o=XiK09?EyBv#3c~Db0wD1<64sYZG}r$0ICP)g>p72a0KN4_1yyhgMNpwHa6Ckb zObW`S4_ZibrQKci4G+tpm-)%D|GhKKlFMvu-C^w_yBO{2mhG>I}0yEuALbVr;Jm`0ramEMS~>?s}^ zK{-AKtqYv;-Is#i7~I4=3Z>);MAL^+i0WmI++~Sfi1cWqZ&1 zvlV#a9UVP|-uJV)my#lrFL@tlUcTJ6mo6a6LmE!#^<>>mjZBoptaMJ>9%B}0QJ%zQRgdeO6s^33pF zj;FS{SYWQyv0?>x{i>kijBd)CyBs&3g~UC8l*%z$okIJbrs)kl97Oj>v94Xy*zPbd zl0GV5Xmo(0oO%UZIa0oMPmAV8H~3Dk0Cbhr1ssm*zpX9czzZkxZf_UVSF>$Ir0|w; zxM3GIgmPmmZDA-Q{T?sO>{7|3y!7IDyZ7r(Z?OvObzx^0qF50MJ1x+{d2Qk863&S4vAi47x~)H7>MX$8 z0b3#wi;{K9ZWJ#5?Z%;<-_RnBMW!VPhmXC`AJ!jI*7Qyh3&fQdN9~A&4el zwrVd^V9z?*T~W7{Xuu)U1AYOcB50?VphGk`OhH1FtF|t?Sy<<0nW6qn&VMRuS5r-^ zXJYW+RvaLwz`XPGRDf&CT3=9v3EL!0$J-$zzpKpls=zCG~&J#{mY#3r(m~fK^0=NU%0-KJvGT&b>WtKdy$1Lf6`&5!@R}c$9FGg0AX!pG0z}%8bNsUuE!J5PZ zDG->T#yy;pL%&!=?WWk)@p5)+OYw7cA#%~+9$D>0Yr1~iI&GopZB~UsYe5np;7oo` zclOj9^2!R$ilm;%XLOUe-+v*Q znA@SC5q<~3dh6MTjRFaQ3>wfu{JoNE%_M8~i*5_2 z@+qgSYNlzhd=;%knxaHGhpeIplCONyprd{(`Ff-ehDBBt5zM;+xqZ?Us)mrl0MsaS zICby4_)J0z$JO&~GW`ZsoIl(M2_FB4f{nnvX9TYwPsN+$!KS>J_QFO zjuS&sT78eK`Q*Y5oMxC-%J()>lV7~_tJK0X$(|0n;sm0zCl}r3#1d{wCU5QOkkM(q zBqv0#IACHTWpxV-|S#}cuvPbO>$i%*nd$W`h= zU+!x^7YA>OBWw%f6ZRK<0VdG{9j6MinT%|FR70oUM}Z0alcMuU?IN~WEhR*KiF7qu zPZyb|S5uS~CH6IN=Q>ABr@n8qHd$FG#}-ZzN|M<{?sv-B23n!Vq(U|MUA^VWp@)Rz zu0fb|w@MlZ$Ir9Oi!GL|GpcV#az!IkqD9DIvY|{pB+GK5cyS0AWF*M@-%j}RqXs_+ zxnFk7nq=b3{k%ZweY^A3)-hc5I=^IZkec7$Q#q3(jmh49i&C=72Cuy&-wAd9-emnC zSl@u(B z{V<5J!sQJ;O)e^&2NE(pdL`PVOM49Ep0N$}hYbnN3tQu42Ny#IV)J-rz)^ zMWgBJ$ zZ6R3bR0d%RlVjP$lLAEx-Ne05{0WqLogT4=&&p`^*1Ew>N<|%qLmx4RcI=ko`J$RF7BbX*TcZD9zjO8DxL`c?lkSC=j>D z7Q^nEwMM1+ke-+OT;~|~LQFS1ib!n5q+s|LAq*(XGv^Zn-g1(*e0quQuiqpCv*J}{cJ1sD4H!MxI#Hox=>rsN-YhkrCNV-+ElHK=lg8=&-&7Ev%t z8>aNDSlJ{<%Y76W{%rLf73!sOV01P-?4Js^kcP{|;#{5{NpNCuo@T+AV9F9VcaTJ)MgBb-;(xixcprSWe)j#S)X6$l)N?_u^_oHx)jLXX@hgqx>;#LgF2TZTGo#Sf^1eIJK;W>G#`Y-ze8CFGOlX{Mdv+ z684)b_c>lAhFQG^Sj!aDF?TdYr(=Ea>Cle@Zq;m&*(`Sfw!+};D(&e?)x7$WU^erI zk}?debLhm2W;Af>Sl!C~BnAwL(Kw4{6?XpW*TFTCHI+O>r}YX_Sm?u|#^`<^r`u`< z@-V<17Jfl#RD}ZU)q$aEc(&d8H7Ort!lw3$2zo zfNRiz^KgR+gF@Ei`lsnL%tvd=9^;J;A}1g;IzZgKPoE*JeAU2RSb7>1t%C2E)L=3V zVcZ^i=V7TgSg}bFJ%%tPv3)sb_w+rPek|$Jt;ZjtnX(;o2MoUEph4JNQu6?t9W8MU z2JOH_xmdKB>@N|W-i!t$)I+jk4Yg(zzaVg3-qLbG+cq#$DFBvKD`zeDq%%N(~9hdEf}@2}zEKlk~N@^13xX>EYRA?Q3-wXl1mEDqUF zWh#K-f}b!GlY2I=CC^eMH@2>o9rO9U+#pQfAFrM3eViMJrXL7kCO`+^90It#Gh=CW zZEdx&*pPX#G_ek`G(+u8Q09G_Qi4n2$ibbk;2^PkbofW~i$(LW#vdyW)3FAIwHUW< zbamOIw3?GLafEO~q?n?olNI%EoK~d=dmFDY5C%=$tH2>hm{Samj8n!x%otq7Vpx zfbpB@laLX3qL@7{#kegzTW%vT2%UVV^IYTL6edv^5VfV=b11IQ_`pd$Y&7o_Ra_vf zffrB+L{&Gv?&m|e=SfqVvHpihj+i)b0V(lK_NlQhP>~<$5YSP(jEeTt>ib`J@Xy^* z13+vZjU9)LM8?W(f?HRjPm+k?s!V1HWx$M4K&7>B*-lMk)0EO}Rmyf){T-Mpr5~%W zTm_=HlISVkji>Fr$1FSFCb)L%=c);042=6cFd?EF3AX*0w$=z(ukji-EyRLcHy#jh ze>i`QZB{VyH#W``h+HNjV65u=k{r6bA4m%U3LnINfVbs2Rh8bBe{ICs^sEoDG3x!* zz&5hyKGyFIDR52N6|aWzM;JQVjw3m)SFLg?*M?%l%YN~2CYZeQU;$cQ)U)0 z2#-K)I9mL*q@}d&edLHVEOvW!VChB{A_N5f7-TAB)f~B!#lWEXh<5Ucm*_TaY{zD_ zhEEduL_72xI>P{_x?i>1>TP!=J%xYL6Fh5&xZ=meq;sXmuiy@HB&I~iaE9qI&#Dr z3U3}F3O8$z`Uz_a&$|@Ov0pUO&Nr@todHSvH06Ov!TG9D8*NnR$-A`0Juc0`1eJP_ zglh7OG;)C{ini?zD964msgC3MH0cg~wy9&(Osq(;N6%aPu`T0sOlh3e-DdGx(A=Cwwkh--&4_afpWV4bh)YH&37#wp1RERXd0CnkPX+As1!PVxPB!T zP!)FE)SbzGKIm*Pm=algm~`tbFV_Eh`gXbZBDx~wai!T82^aZ=d9*Gkil-@3JOvt; znJkpu)PN@0R5d;Ikf{A44#^cPs`lHQdf&t`jOcyqe2m6o442(FniB?Y@sx zg5jz9oz=v+#W768GBs!#NeS&JV_%e4;AAU#c83tz7hrt1nT zJJv7Q3mRkxd%yAyPY^?_5S`rN(zB^U@jp0otJNnT&xw^bS**~OA`~+AfS@zLz(p!A zHiE(KdR(GO+CVk^b>9%nc~uLUyJ2Fh-^DM~W?-#tLw>4=5ZFp17;11yZ@-HS=q!pmk}C4aC~_3G^RY?q7>v`ppq)l<8CRTM z@H|~HCz_?e{m?~I;dBK%NzULN4zRZ4%VgvLmf5_Aq<$f0vhzCq$ag-{xkgEvy6#lF zGgo$%0g$mcoV3S&o(&#lu#OI7Z`!L#Pmxs)4qt=KXcSh2>X*R@{dFRCEu*qAX|JT( zwUzi+Whf<;1w(B2u@xi5@ngxI#{t<&>w|2qOXbNj=2#rq*(1Qa*x<35os@SIlZ|xx z`!c~e;SL61=PVt7Guq0?3`Gv@tOwpfvST8?;>{_9N}XpB-Q~xH8hu-5(a%~g60S))0oh8hBSDBW}RSq?>C#I|5TR$y){hQl)C%6agw`8N|C6%|4LKPqLsanC~1CCJ+rl z%SyO~u&gvGLFmh;=~=~mn^`*)?hsJS^Q7stEdcM1s}<8=kagx~(4k8Vh{zSVCfifj zpOzps{QlNMR;f*kn}mj*w6R;n0z=aVAs}V5K$a0g)z{2L$fz=`R>;p%<=K_#DZvRc zLOQt?Pqi|87VrLxLo_2*o>a+Bq(fqLcY!ZGXrlEEd^;!UR(n{OPtH1%OPn$>i=V7H z6MO?)?TEfGuP_jS`$RVuH>qr^NB!nd)SX9x+anA|y97Wv;w5M=;Dd+YmB zD+-}Am3w{6SaL*mlzKfDHW$crEtoHX9MG*90dGLUH~tDW;DZqZq9LO<`zTeVD`etO!eGVJ@zNZ_^G<%UJ>`&<)LD zsu`U{1K{Cdxa`##d^-Z%MZu>OK7P>(28*uPEIG2RJ}r_(mzACyIKxb@Vr#E>W!iDT zDrmsg(Ih_ngycI@j^LAr(<6VgEiyMDmkSYqqa1qktCc0tWvxPn5NGRFnY7gAO|g~q z0J$Wq=wLW(5WFX)^{2;DIVbkR6^dmWcS$beV6ylv#;xU&4vV))YfJ`JDF=aaW?~~C ze*vjF{)b(&N?Fg5L2zp6O)f-qQ?t{N!(9v}_xu^gsZm!Df<9}<#!(9m|a=`5E z>$5?Mo03Iu4OQQSiyW(Mcjo$gr`NrsZ)Y7}%NBU^)s{3t?<3)0($@tB@erT zgh33xpmT0Kr{$*)(xs;DBSEog7nCIu6b#)rEeL}yrUQYObaw<21K-|`lhEPddM$`? z&r@i{d}BKfr$A{4N;>BeoVv| zZjRc6mv&)sZW@Mz0tSw;-2!_BVv282CSyCRlO?{V{`EW4o ztzVmmY2+b#3-o#sUoZ2kh3{a?N}u}OIi$PXssW&(#&;yg`HASuq7G17B5zkTVV732 z-6M&&tHSQ#g+`9QE>#TGq=^;2h{afHX2aRc2)9-Y&ML7fxrR&zsq+|fhI^oT7vum_ zXj6W|k+w%G^>=j7LMV0|QYb+}LA6vX(UB-ZqV$LAr_X>c7gkd3&9)aLlE!Ip$cXBD z)HWW>ZtQ)j%3Z2SWl9}_shv;`o^sy-nf;{}4w;hlUCx`y<;G!iI-5=&;VV3qg#{-i z7D6m|nc(D^f|Y`*LZ z4~3d__ZVHkPA`f56ORjT&i6-S&G_w`i0*tD@3+oxr?=kMM>o$q$3xjeGpj=fvunk( zgp2nZlf`Xe9}(?y)AjZ3@v^Ct;k%pLsvVviJ>nuF;b6p`&U@2Kzy)M_iPx*={o{^U zx<{uUM^_7iHbQUEK>?t&&ySK7@ZudV3Elp-@s=l#@FM!&Q7jOmp{nvm#W#<23fo&2u?> z)a%O3)|Kw7?gLq&wy?C5HE9drpJFAoJR_x#Q1M)1n z{JuC_mJoxS@6`)K1@j&9_fFd~dZdio+zD$xI1msA?*FyZX6j;V^s&=6udZRY!-n+7 z3(qOY)k?vO8T2_sSyw^~9g4^Tb6BhZfgwra?j&sqSvLCDQ~bC%nvq)C1NHi=9wFup zIJ04*uq{V)3hao5v3c0I&k?E=_Y&>G3KoKSJT;+abp1>eS_+6$dyG*61!5C!A&<}4pmDd zBizkmIPykv*@2|+J0*MoE`f_Vh-voiVt&mjnc{fn=LNw!f*z3g^&Ai=wlu1F<{YV2 zU`&C8AYL$yM0b56OD~mr2F=R4BPSFw#Mu)Q^aOu2_#Rkwawboxrv!ELs&&LZN?h}Z z0|u`Ot@iiFXPs)rJV&Hk$|HAg)-$PAT1+&bVS?Ep!E?--@c~KI;#^vmp%Pc$+e&(D zKs-j5njxj`9Re2F4_ro;AB`g<*c~J5r!1(BR>MG@hk4OeU@VeoX$vmSJ}xdAn$hrO zv&}U#PZ3UrUuo*gNu$qCeZ?1m<4|g^>BH>sm3iUcl7m*plU))_9UGyFsJ{eVwr8+} z9SA8d?OeOhC1Y$qH`pp@Y9Kz)kkS}y4cC0NBBCekfVQ!yt~5jhyYt`am^;)YC?zaS zd!*B?GRFAPE0WTIXRsTczzOo$!&@R%d`_BaXsQLL^l*>@kniRlR+$|PUMcJA32x5% z<(NC@BeN%v_|%xkontWpy+fZIauokbhrU+O?=}wrX}rb65Q7I3gpb3{!v`TT^$uxi z05f_I->(m(fZWN&W*!8?RcnccM_a!?Pb%E?2}TSg+h~yl5=ui&unG#h@sUVy`jdBD zq{~-~I<$}Tpn1%VQkX7wmgaP{`$uWVa1zo?5W!^Nr>$Md757|HLD z@!@+0cd-~W2hx};G~*s)U_UOn&5MUGZ|jS*QnPah2r!0b==CE=ZIQ?eUcx13v9$(H zl=_~<^%UyFe$T8Yt1*L^v=PCPs9A8~+;b-M`p)!?n|bMk@%hsnsFhY070+DctbERv z{C8QSfZ9@cg~lrvYp^$E@VL4;pd)lJiVdaRK1=%+tQM^(y=GsvQ%8ab{K@qT>!M8x7Zh{&fhQT;(?yYu znGO!gt=`5%tuozJwZvZtuJ~T>_EwCm7Y~6h`=7@p+d)k$MXr9LH_n=>RV%EvNQW>t#v*OYT^&8eQ)MYi5r z%WKE`sc#t-(SS)wW&Qx{S2bd8t$4OxFwoDnS!u?m*7)cXC3sqju+4)Wm%4>`(n=LE z3K+ri^qN}cw%M+_GB=!G@XUL7`XW|qd|qVNYrGP*5x@%f#gY!fzx5X46(8YJIvd*c z`uvz)Xs4vgIRCgzI>VDG!Iig&0hcIH*owsQ3+Qez(ArNEF;bJ`rmnS$Xn$p2%(4_i z;x@pA%XGCD`FItz@bNnZkHYm#S?;qx8N7S?k)d`!dPf< zwtOtKfc3V#=xHNe4Uv2fk@20hAB1xp{?EYlCN%O8xb|KVo+Np!I{ur)St`eW5s zUbWq3K=PSXdq6JGpsqp95$C=DE}>Rg!3>_NW~7!1-x-uudGpOo2`1N}GRG{~H#K8& z@{TbhXId1o2rqN=`DFfOCg6rVn#u*j?TBS5SwvRZ0IWge8@A((fRV68({@YmIR7)% zgesMh!YfARL{cJ@rg>!QPmgg^$w~&-^t=I#r2%mVL1oWKlW@qLWSBtZ6A9FMPwnWz zYyajQ@H$DXT6^y!B~(65zF?N%jXzMMyO+?9m71 z6uv7Shi_d-;Y9|m!=iuhd$tXQVHY%sxW5pb(tU=&u4#M~s+6){|FBU^K*3$kfMGVe zIZv?;VMNPj50C%V+#5LS&&M22=P906N-o|PHdlm}UlFg}b!|_5Lg&({p?|FFFpW`aN3S!Hj!Fm8m2PtxDWX4rU+w^ua zxnxwLfK!I-4?}&kvZpfCbTV0Zv6^&*PoFB`d51t3G}WP~y_&r}!`CN-C{iUbl&lGQ7X1{!Tfh*^NP2@GIEP1?ZR^w%r8ZBkrN=H1 zxz}rglv1%7S1w(kq_|jr(*_f0543o`H3-^VA0~AH>8U&r*T9z`D}A=yyA0Ep8Q#J*;iZdnt|3ILGfNbuz(s0QqVclj}|l?C)Zm@>2s zbS!j?06Jp}Cudp~{R&R%*hEeYsnao)EG`-%mIZdW~=&$`6Rb zg8Ur%Ku=z$T9#M}i;M_6p)dC!Zs?Q9FYeEE?>cu{XVLUegvJPVx?K;lccy2L4+#iB z;dq;UvY~-^T~YDe)iWGEvpaWr7!17Tx(xZYBX1vP6R019^tM5+S8>&Rf7b{7vFhUM z$9X3t?!3cb`!s&RLl|RkEyUM)$Kc~H+Z4}9kFi;J5(kIH+Jsw*45(_*R0;t9xhByU zUQYd0r6-$qGgdR7F^6TUj4nK~S!!$)B~4mBFq(n(!V*-2OoIHE0Dg@CA?eK140XhadKRPu?RZXpa zQY}q>4kbXL45vXtYqzX6Z7FlRA8t82Bk_T}7Z#&{u?c(f>5F4%&%&s53XapZKgXwY zqFc5|O826kb9l^4A~Z)b%=U$1zgeUx4m*~rJRMQ}wA317+{kMAGVv(*U#xrPwziZYLbGLNtQF=6*f7T8-Hy! zGprN-aXifQEe<)rz_6u*GI9lOO7{c`ola6yKanIG2EEvNc#~BRHC3J8t`>JBO-7TW z6Vmk-LzlakMu&Jxd)QEB`mQDA``XlFIH~dDRaE-MrQF}O_7qJ^z5Qbi>ip2!Pya=0 zWki$(gawoZ5);-OXBm(}&Tr8?fmiF{6E4vuK!rZZFu4e|tPSI8=~qUPvhSX1v`BDa zV<~P(tY4qTI`3-1$qV}L;&Ohc-MeDyK!RmR8GCkMTExA?^N5d`iM-D{i~??&+_NOK zlyW@Cv6&vJbP?OFV@;`-cZlN*W}B>)3~OC27)={*CQR2`#9p*k=R5<1kL_V<#bV-G3Y=IOn04j}2GFeuqHK@9AId>2K@lKPK;bd{#fVDOa%@I!&5L zmf`#k?Q>oum*$@ky1yZu%i!#HV?W<(tb2D|SijNYc z-?iOVdn5gb&U&txeHpJD_vEJl$)txL0&o*0C*Jm6L@|@fU-kM_ z-Pw=DIru}(3H}R|qKJ^3qOi-%NL-#I8pNg#AMDcja2{p}6xFAAveprCh;JUl(!kko zp84gRC(TW&X7>Xe?|uvwSBDfp9`Qy%7;DnGT)VM~rqr6{r&KEhCtCH=$GK!8@0#=*G*Y zkc0qrfq|SaWiVJ4L49!)=*(zb5$Gl&yPeipMBLq2T{hvj8P_|*<-BmUzN7g=p(o_W zh;Go*=A+V)$=3!g-$n=&YV*7WC05`q;2hH06^hF*a@~CVy7sq=QVPp!MKVr?Q%Ud% zDjm~|AM-_%70#Fv=fJ*lhMgoCgY;bd;1^(tuf$bY@TKmXSGTDG+262}b`%J%`s_Vu) z(LyUH^c3B4?C|Z0MH`vVGLKs8=eyl-I$mI+9mP1}&*#dJ>0o*HD0_@G%_@lMx_@?lb1|l=2zfFNw>3SL{29r+v)M=-*S4i^+ku#g|TZ1_xmb z;u9O_RTM>y=5#4#y$u3j#<}xSL#p+YBT2lZkJ zbbN!6ts8s2jTax7=2QMe-WkgPiWiDV8EdKhW4&GrL(@VslLeR@=m>ru@z*C~L0IvH zFAj9_8?#xByq>rbPnU@DQotZ+f5sb7K!5n2v}g`5Iv;)~>BrRnBSYkWKaBx@l>R3s z(bKcAwQ$zc`v^$>DsJ^LH5IglV)1Sufq-zZ{xloE#iKqz|0V8hp!bn>LT6;p%uefO zVXJ3gW6Z|#0cQMHwEvW@@*8dc74lzbe@O!PtN4FPtoSYN_5Q!&e@nCYC%``wC4K{( z{2Sok9{FE||5M_^Z{gIBY@EMDcmL%V{F8C_8-o<)Zy5jL-~F`@|7jobw|or#-{k+b ztN2&>{}hw{mJcNPoBY2c)W0J9rULKNBG5dPzH{7?S#Zv;&WsQ;fg{nzgN0rpR~ z<~JA;)&Cppf1R9vqW#lU{zikL`G2GRX*mB0^-r7j8>-^JK>f|a{S)$^w(Wl*>w)k8 d3*`S;I(aGZKdkFVdJrNI=7(*BVEDt}{vRCoo1_2$ diff --git a/build_helpers/TA_Lib-0.4.18-cp38-cp38-win_amd64.whl b/build_helpers/TA_Lib-0.4.18-cp38-cp38-win_amd64.whl deleted file mode 100644 index f81addb44a7c943135e3a113fe3a25987af8a23d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555204 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%0Ap6GvR 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�Uz)P1LKJsVu9Cm{s{1?<7h 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

              6&y*MJ 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

              l{PithDa{q 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

              d5>^1clM71`yiuah zkw=TE*+XS>4sDk0bxOH-oFF&5Q_Q@`Q~aEbPqf;LM`<1EkISGEIf`d1&OFdyUnxYw znv7arYe8MM(4*6?T)DjFjP)@Ud+I^R8#;56d_!7A=A#O|*|Cyw-I0vc2&))4A~Up?%t*$qrSoTTgiZ;A zLK4=4uM_PMi6*6ZgXP;KG>@nH4+!?v{2%GN&v0b1Wn%E0@n>cVpG3xRQr{P3e&!k9 z;CgEYeoaCS0h1KhK%+I+3G@kf_5Eb^SLu9KoDVfi54+2~jI<)mx`Y6wzMxNB2i)gD zg~aYAH<@8Vm?|WnZcA{qE*^X}Qp}n*d0Vi^s8Gy?Ct{x}^?w>P^;SPR*7dSC~fOPXA&?L3Bu9 zqx+JA05|DMj3kwyRD?OBm;W8M72ZFg{H`1CrhIGkM`8tNEF%z}5a9Rw(}d}hF`~SJdy1YBqB=0)7=N%XX47V?lp>-Ho^kg-bX`J?Uxir;}WE=_M%gkj&?sz=S^d0a;K0=QdurNEleaa;QyQ5`*S%37%HzU?m-^T?1YXx)w3<4t_(LU(Jq52nj8)p2`tv9D*OA@F&U|N>keeZGPQ9F z;Q*hl#Z$p83KG8q9Kg2Wu01#_PlMGsKOZObCD4J-25Bd}S-Ln?Wd$+g62|zX&=JIMrAX1*R+;A`Gu@ShEI5jt&0QoFHu;b zbrB(7q3aZjl4;%wdqUM5-yAl2>-d}<9^jf+gN0T+{vE+@fUyECgp&h+g%dh;Xr1aw z63w1KU*R3XTWB3rfnN0VUgQW`x5x9h)cxurp4769FraHd(pvQW<6x4B`Gw=LRM=_r z1$lhX#MAz=*CzU$mu+U9Z~zp$1|gCEyG+7;TWY2%)EaE?_tc+tTJ{;3bF5D z7?soPVtD20?qDh4fZUO1qZZ+zJdFUHxx4`ho}eo5$4?Qa^i&P zx?VOsM4Lo~$vB7^h#?-5##nt{_&?H9oULH!_2t?-@RJ{@Gj0Ya$UlVLEB8Is_zA^e zp~&5GaL&I6qLxB8vP%@S0rVS}01?GhM{!~0LHGzYyYds=)oF*%xEsU+P63V>Iq7Xb;B; z>WsxDBu?v~z}x&ho9?3*)2?o`sjOBs{XiUyzq}Hwj|dzRoo~tb3S4=sdG9dR$<{Q|@ANT0TGmgk$>AVNMa?$*1$JPu#^D`9( z>-LNi%8v)Pztr3k;yVQ@V4p)ID{vc&SlyLz^W|ZPZ_9&QD@V~ggF6m!fWnU-dPyjS zg@wr9a47Nbp`mt$MZyn4fPUw)pYi2{n(KDZ(kq3Xab+x`@ObT;F-ItoG_y!zMbd0k{SBG z)wcu2xxa_RfTNxcPVwb!~suCMRd+XVAO_)itGtb;3xJaCgU zCSTsy?IqtXfO+_8Hl>kl20*ILNoqmbI&N0U;$Dhwjygyof2aM5LV}C*#UbW#kvbP* z-`m5|u~hTIw{9kMzX@gElu+E1klgL0zi*l|Mmk1*TR9;TOhE33`$uWUe6m4E;5C=8 z5r-f(g+TE>CA`wJDq>yP@m`jwSwxw4a;nANg6O-!X-L12;7nPge&h|e#q2xbkQ8(- z0vgP&hD+{Z0RBzCWW{?7&HOr#C4>vR`#Pye5wi~o2Lb0ezhRq*UU1`vXO4%q?5uwA z5|d_GocSzlBFRABo_wye77(-Js~XX<>w7T&@+x_{GVFQWOuo9VRg-@1F1i2CA$r&l z5}-Bk3DPVy^4GJNIQcy6_f^_?MUf`ly-;z=x!T>|t4E}uEIP>oFV`mcB)YKs5{L&XzFD-9I`EiXP?=#Ct6}YQ2B>8-7IqIrYl}H@u;2ggH z_Cp#XV;B}m{iU>ta~(>J0|Rw&K1F-{4dvW%I-iVb=IF2*$kFVmggAOHm3{qb8h^RcQ;!&eV z$rkfjp%TIe{^HLPklNnYcf+lwrAukr_x7twIRtK@r1fUsWLxWTcE`1To8GvFYqefq z5|jJs)aSHs;i4I8_7<)?hsp_k03{~O4UpMghw3J)mJy?!7fk5PSC-KBF+?~Zt-IzB zcwAK&vGyM&BR6U8tT7EXVKe!F1H~hM*1Z(q5g1t4cbPLyhZ0?n>QNG8H{nhHkkW^$H>ZXI z`if*<;n*67y2(1k64J-D{(dj7fp+vHmo6;3BuJ0}OLqEM${=NoX)i4!Fa@=n8CC}$ z)ynmFwMxp?>XBj7n!Ahs2>UE1RovP1JzwC3C_-)zLpBG4ut-W6)?fbM zC=exssqO1nEN_%9`_f~8`b!xA|3J=I5UKRl#KLKb_u_D)!G%iFVJa(zDz6ur>EOh$ zZSzEfMcI1Y<`|fN*lgbf*}v3UT1sq3*lY%|6b$mzbZ|Q`8*|)*8Iar$g_8~EiaXX@zC7z06Gx64G zpG-2YX77ToB{PzW-)S59?PTY+D@gedK8jNL-ec3*WK~xBMdK*KW(M;)!sh1SR%wz-F|?9XXbk4Y9g0s^SDdLu)Z;3 z)hgH=w2>Y6?WvLF(F=c_l&adB$pOm3N0sRbD**|vH(S6wGIqeaQvVyjm#sEnop0Ok zm=vD^PF4>tsj1`tPC>K-N8fqfn35Flg2pjB8T4aEMUw&gB}wB>MoE5&vbY6t*OT-{ zLqbc^AAM`K`fESSc~*yaj4}So#w=_9FDJDY+1JyB4V7q}kg*oEG-7HY!UluHvUMtR z#3{Is+|^M}4HB~KdI8x3YSmE0eIq}Q?tJ(mqZjvHir=40bwI|AxKoCn>-`L8razd8 zGSREsEH36hA^si<)ZsNHoD6_qsGllU`t9~xL}+E)?#Fmy*o~Szlb4u{IQPa@-lP@o z1k~_E#JkOl28~e1aN$KS@w`XV(LQCkNbZ(++%WA;`H0E;5I)U}tveZ{(9aBhwE5!a zHETA=Piq^ew$b~hOF&l8gw;Lez=kkE%3;7V&Vh$v1h*JZ7p>1neRHTy`?rOn&PQ|i zdzrXBV`Z7n@G%lBxX*^CqmvHP&0OHlDyFZ*EKx)i-lw`gTR%ju7>6REwIQ}z*o6H`!j)VGnhcR1`H}{VnTcHqy<^kFp4qF>PFB0^CwJf%j@Gx#M4!}`dx_HMifL_R>eep z>l_$yo<^tb8w4w8A4y|hN1!N(A)O%6nHzLNb&FdP&z-Q={Q1L1HYH-opj>Ons&)Tn5d|!tD4r@pQYtD;5;6W->mjWca8*O` zIG^=mFAe3V1&$H|){_H%?X0t3)qKef&T88+^}L#3SXX0jFBd#8-j|Lj#nZJ%!(quR zbJlj}S;vdo^mCZt_ul(tJmVajH6#D(0IT9WQhxQ1>w!IIHmd2}*X)t*`+LND;ZL_Y z-^$Bfg+EEp={j;jO+CnC0lhTb#xK(mH!LBijjIeggk_wa%8w;cDPUCnVFrUOZOHz` zzt0-)Q+0ls_k5-)-p`Wzm;F<>Rju%YSZE?n;20J2k~;+nv=GfR8>84ztPGCk?ju49 z)$Xscxwl>CN<_=D??h1a-WYr(usz7}|5@lNWp7u=4^C&rPASG2F7iAf`b{_U^eucU zQzS|0?qm5oUeU;3po7tws)}ONtU(WYzW$q;iOZjXT7j53^;qt{U7;ijRbwD7vZFJ0 zT|ySmg(eiqCqNfvdq%vOwQt?jAvNaLTqnG+ZA;^d@QYsy5ngmN$X1iQA87#tm+!v+ zs&YJ~!h`J;OSVHsIBtx2@R5U@>CNDNv*z?}N5sfBjDAgfxD;IS?1!e@W}5KM8a{ZP z`7)2Q1iywxv4h7skI|$1;+{%%>-1ODmW7aF9xnz14gX02Cvly;p#@HYg9$TQX%EW5 zV?-liuk8kpiO}hf6%2z=zT^bk*L~rk!nFh*p6CsVUV_IN2_<9$NefQW(Omc%?-i-4?PdtR7|JN0gzr;%Z%@WV7` zN(aCG2!HmrL7bnu>}u5?V4W5GZ@jDGu4(Rmtvs{2O9cY*e;WWb#$pOcH(Fn250?b0 z!;`yWM1eCp=u7*%-(4{^=d0ogl0Y2Zuetl5`)$#O+cDkqa zs_kVUQDItcStzh{D)V;gpRx<>6Twq=v^ue1q`ppaxstxlZt@n3Bf~|2z`&1b(d?mp z0gP+o$1S6Ce9`$|YYbKB)tPJdi&v2<((k@Ev~VUG#83U*A*#3GJW1i&=Av$zL-K!S}N8sd*2ge1Qj75OLDJ zM7+DDqVz54^6oXrkl6le3LZ$pkG8o9w0Zv|^GbRm`UyIR(~;;nKy7KS``Zs?L4Gft z{pz^`?rNFq-Q(`Nw=XY&>&auF?)bQKDI7}?TP|@x%laMMJukuxL-$Q!XIU^EDlx$> z*D8jv7p4q0Lh9<%CEn)byjruWQ>o(FIwjV(E-4hPiX92W7W=gf(V=#ZF9rs|ej?W< zdhe*Hd1QpBXjX!A7pSmgH}hD`Q1WP*cD~dK!$UGv#|E)4$V8Z3_8GeurFSG(Hzf(k z!(&rz^9XaEJ)%e^|Hg=Kt~7_wqh0;f>MXs5Td2{K&Xi<~*2}Gfx1BFZ)yQeS9V#@6 z=nU+urB=lE`GeM66S%A~G^W_H$W+_$bb~HpiIP0z4?@zg*FyD*Krzo)Nx@a7oF=Qz zhWCtM$bc*3K$l=7@oVy>F8(!%^roZ2MQg{KaKqdA(jl@hWBOJ^>YC?-OPoRddQwk} z;f$+?2ZP(cx+ob3ITUpjjnD8|3QnYv3Oho3` zvmVKAm#5FRKv!LmSt(5A9Mh-dt6wMgaeQ4z)QVF=MbiG2?MjGxevmUn^2Zj+GWg|B z7|f0}RaYR6G2=9fQ6e7UL^&`gHOa%K=~zkdDVgZ{ot}-!X#++=5AK`QKl;SjpV}! zEAoSZaj%oGg&@_!DHzQU^}Y^u`O8_+7KKX)>ZSl}3Re^fuW%afUJ7W?4V7Nfn*6$t%M1 zM{G;0>_ae@%)RDI(B}ZAKLhZs3`|vMUeR2RAJh1c;F{1HS&WuljwgAmSu;7#O2nKw}036`IfNcK+r)mVzdV&gd)s^!Z7r)ZX$m3 znhqppKAoQsCKT#>QYw0(Gl#KrQ7iCliv(>z@fVTy|3+dytfk?lKcvGZv)igUnHQ(tzDV-Mtcu2{s~CSwQeJ7iK4sZ~0-jiV{~FYqz11w^Mo_rWKFyr{>41oa0>^ z($_Nr{ry|&H_BGo;J?T(4UGmOCtOPxIqJn`*))ycJ4n+GyB#>;3Q}+h6en_T^R2_h zCyN_eP;TlC;7ONJw0|Z#XAS8b|Afn7dVP;IEfiz(OVp+k<9=lIQHRZa-?&I};0r5s3$Q*_uy!)}ep7%k0z<@OeRtsLaU^Nu_tR_kwfH!`~ll5%Bd8?EW2 zL1pPH*G@XBp*tQm2~t#$VwJ&W-v65QneZoC!7`c~<6{>IO8Xy@uXaV(B-^ELW|ReA zbtF?z!ZZa0fJktIOwYd?jvbsBCFXnX6@VqD0ksOAB0PxU@B*U^YiL9^d=;3$k#_yM zhAJ#v|+}Y5lS@1TMZwVKr@=j*XtAq5I<)hPR`Hqr;Cd@T>*9)2ryFuN3=3bb; zz6)lRL7|Wy(C-j26JF_CiFczLm4v(VwT&>-SDI9~&~PmvF)G}| zOs7?Bf;u3x(tJ%v_tDH9$4m=w-=rMZ`+#})y-P#zbA%%n&$3%Ax*-WddFg30>V4(B z-qfv>#>cAdo}FZ7{+r8ZE$!$U`{ih=^IevjL1G2(+?nKId%qXl7R7yAyXrmxI8Gwl zmh_D4zuB7L*U&Ath?_r6d}M`|3@^P@qh8Eh5+4G@mHe$tand3jw=JZO?vPiSp7hzYr1`)ms@nMKY9AO13;H$`APs(Z z_?dpXa`0UoJoP<84qvzzUyd-`0%%tm4pizDh5|m5UBFRUD?5L`Ws^kToh)JGTMSln znC!pD(+TQx(}J=sDpDp2psA*$ zS>{X@Pkrt>!8__KxWf}=Njd0Z+>BmbPJu)?4Sl}QHjRv-C3A4oLUPdK3Zs~3n!EZ^ z>xlo393kb~iM0Hk!9%?yl-!p!0r-V_vYK4f5vh^!wlB^2PgU98py+hRK#O z0>3ha%9u1A7WhZ0x&qi15*ISM*b7>MbW*QXK}e3P!q!mZ_Tn8eo$t!ybK^<%8hEV2 zXbZ8-$_z}8I;N^bE?$|H&X@@jeGzYtiHn#ChS-j_XG|~QVQzHCf%9)hKS(glpS#vE zo-`<7t986qB9BpA@P?7d{|Y+?;v`7D`7BXA{G2*8zkG2#EEsr^clvm(rn&8F+UKir5=CG#?YxTZeecZ`HP*&{?34a;Q6;s+NOK5|1P1D!u4rQ?kq>)A)U3}3wTLMz;K|4>pDQDy`}7al>L}JO#K(@}qp-R3 zu(*eL&pJJ|==?6m_aEdGgeWzR(-aXQ&klGT9`XR$49UBPx-X1syWcTgG6>|KWEn6; z?D4VX8NQ1lkN2D<_KHW|%aeuGf4;zDSqTPCL24b>B)aR-cL#i8<%v1ra;j0#+v*3q z$_W2qcapGTR+F)_pP`av25L1K3qeu8WMAn`Er>v!?L#kK_LdU5*4PSP#hB83uZU|M zJP14F)5ff*Vh0ZKpu$s0_+Xp2I>7-HKQ)897^qJDdN|4CpwzUGl?7&Xv@;#WkHPb@ zD#{m0T4jj$Bm*oxR^-SyZN%p8)Mm$1W6Ecf)BYdUY89NE=n~PFeESNH5X4DZt9CqMyd$Smik0#7OPTn?CM~@P| zb|8ez(RvabT_|RtyER4PHLH7C$uW?QVu^nvoAe=Ws@nyEGz!AFKjtRiOfz+gst(M@-p|((+0l&NsgD+^Ea%^>ZPj z{5~7%Mkl@eMSwm&ddr1=_yp4VJBX0q?W#^dCi2JzR=4pQ7r4rKK#<~-mYn~Hl4kkMGw>xnjs&GUfm^U+Z zaxrFCGx6cz$%6Yn-QeIt@jERy%T>O-o6RYRx~p$K;aX|a+bt7sp};-n~>(4}bGmegpoQZy}1GyHm+@WKx1 z);=()X1Wa+K>Znrh_MpvIuc>^E%G1McQ9!JRY_bp2w4eK&z07xCaFGP5Xwp+H2@1` ztT$2zG|+)~OOfscT9L{IXb+Y!lhy`4c?lKItQi9>B!gCmlWQ?GIO~X#JIGz$3>X_K#n-wvfi4no z_|*`Jd{Ug__4GA2rv`~_kdc|i1=!uY143S(-ikg+2Tlq|Er?&+nY$jytdN-Hhq<}a z%zwggb7$}5Vh%DPu_T%MaE zdbufk%zw7T-iaeShhHp45w6jBXnr^WufJtU-ZG%x9@u;rK2tQLg8oe1g%XZ6-HMNV zjus7{O6#FfaC_%uyYWIAqZ5kcRW3EJqi9M@8s}|>c!C-8u1{M;m8i3iOFHJPEmRfP zu6^8iW+PL9q9_ADBs=5%@H&^%i9C{Pppd6emO<#>*x&?@E?Mf zxY!9fUb-cd(N;2|O@m5!r7 zKz}zKsOJe;oa=uS{Wp!)0yZDYEY9pFuw}gT^Vy2cP%@&Tush^x=m85D;i~bYoBy&F z=gt*csSXjuif}ZWJSZDX7a&RwA9FtQ5W)V%!v#^O~M}(2P4H(BQ6# z{eJ*bK&`*X6^nRk);$fTqBT41nu?Y&+!sU8L12Iv+{RMT4qheeyo(3T7!J3sr@3B} zJuxe*wxG=Q>LbXRS-Gb$Gb`y6=hWUMMB`1`e^sg^n~M3u4$oNfs{WNJ<5OSw&~P|m z>ccS|OqmXGVfsEW%><@6sW8wu#yHsTLmJoDz&Y$-Y(t0PLk;YlxSAI6OeQ!FkIFzY zzFvrK+K>xyXVfD6)?S{dI{{!#%%&z@EYU4`RkxEhTy8rg^~Ya;GilCvvZ9`(6Qn2h zifC?mp7; z22T4E#K5`zH5fR5*$qzC$CvcLs026+k0sP%o&y*-QsI2oRb)Svvj0kE50-HtvCdP* zQeW*A2;-`lIK_KQ@cV8L2ETJV@ybNG8J(Ciu`rw}6V1O0henweBJ3T8i4HAB83bKM zFA0AC0sl}!xz@<(0w@z+fWGBDBxT|vpzl%Zq7)Xay?|XFLJa(rSnTp|&}Ba#`Jy_r z(4JU1v2*fQ64~*xq2rK#H4DAJC?{!w|?;ARC*C zdNMZSk?l=jyI+SZXeU> z*+XFV2{JS6grt_R+i}GRV>4NDxKkRwNB**RX5r%z9A?Yd`eDP>wtXEu54}K=F)PIMY6mgi=HY zCX~MEp%6;5dN85n)r<+HXJMRB`sbM_ltMm`gwoUYD3r`SltL-th1N+Zc_&LkDIjGs zzCcarUVkr?LWF;oTw5Vh)CP)i)Myx*`{q(8N|HjWR)7>TQz<0;;a&~OZy`rWePsZ3=Jdj%?+nG z*5MNC_krSf57jm6|8-Ysw(s^~v)!zx+@;($CtXp>wW}ry&+`-f1tZO~K%TKVIXGigj48u`^(4yr z7&=E_;)cr;N9-w;%!R1>u(v5QBW31eOc{qtnnlp9$c2f5vbz`c!R=C>lC&_UOy-`~ zA6*V^FS)I85G4m$*a1Y-QfXg|LXS1nVKBkxhGop_DSypuJ%dwPkdzi zWaJuVpA5L7W}jRH=83w*sY?4~=TzC0D0Ki$iPEE;O$p6ottP3@6?OY$CS}}Us%)P` zb4+JtAk%%LoSCj6I&jj5SMsn=9sp-*pB#Clb#I?|(8ZZ=`=k``rS?gqY^``7>lN8P zNgd4DC&d^^rKAy8&^{Sa0PT}W>0qCX1pB1kFok_GBR}?uMYu?8lWuZ==9~KklmVI> z=7e58=7f<}Eu4jQ64d=i;o4yN&+o3j045^8rRc6xFj^x%YDCKFoH%hi7A z(q00OpZ3R z8GjkHh8IypDNyzAslmH@H=c?wF^|*rkETh!y~hJ{G4mwaHpg9P2&^jbE=cwi8Tug= z5jY%%J7g(xL7}~3PzbINNF^qC@&J6>ndEKlpOO~(Sv%20hbI`ms-il9OYUpMb9Z48 zd;)9+BAYodkD)YSVxk2PWq~ry3TtH_IHQ~kl%GPLtJ4Uu^p|LhQ~fpWK8NAd18MP0 zfxK=FdG;{mcoaD9pjq}q8-iAH|GxUWL#Ovb!$H_^B{ZB#8pbXm%PqMUmp8MnmYg>e z9XEq@#TG~3P*YbnfXd!QkO9`i|;C%71KINy25m&m`Q64-^vayAPOzTTq)x zxWw9=ggcuhO1P?RB?%|Ij}or;2TBPy`JS_cd-l6R!le;oJ2@JAc^-NhKzeBu+C#*L z4D*w_TG5GbrRwsoi$K+z276YRrFR+Ej=f7KGau}!-O9{@J)P>)U{5)7eePWfWohv? z3qjY@EWJy$b`b2T?PK=CAVC2L%fQR5zpE94J$LBK)czflL0Z)kffFFoP zeb&;bPr235zo%^I?pUg>))zl54bwfPOk3 z?twm9ppWdxdeS!YASQYl6We<_3_oPiB@)BpJU+%<9-t&O zgO~I*C3MHKr|zUvVu%Ozkx>xhxkF%QPoUL%l{89?jJpbv*0>_c>Z}637*&TIJuqx? zaExv6Gg@*R^O{(Y;c6+^r|Gy)V{hX=eV1*}B3JNnTfjv|8lu3zqmM7}j3ymYkz~us zh5RRHNqrL>ntWshA}XmYqLRTPDm1dP2qP%yeAxBpFayHBV!d}^6 zcW1A(tIXLU9c^yym8umux*E2;?3JCa_KMFRoV}9#6SG&IUsAJIYT3}Nxb%_IUhyBx z*(*EIv>4If*|g|Dbl;?$OX~K@Nh>m*^^t6^Z2O3_S9Ty%gA3E=MCVQNxtxc+Vzf#2 zO8HxP*ee}xznQ%<+$z~CpV>rv#p|+cuLN}G?3F<_(O%JBMtda*Z23h0naN3 zdQXMD@=<>5mGG|JFqSgo4t;&y-+xQ?3P_)j114b))PL3kJ0+BenUL&|tVsC(8`k#w z(Rzrkf!4#<=Oya_N@5>wBc@5>1UDtIp&;IHlObDHGzy_@EB@~edRog%`h*g->HW|0 z6TrW@jo9faZP8(L_9B@;eL*Mt#9`>e)^c}?>=vB?&7!c`9cXse4_D?FEhTL9j$+t2 zwVlEZHl`h`xF}qWR$MgKRpZ=X_x};yU@clo*qCfVH&}yqoExmP!|?4bEvvY=K)qna zR!Cm3g2t4)(6R4*sqqqO7W59ovs;qmj}Y7kf(gDjWfN{_p%fQdpI!(pwWt>B@9WInY(BHy7Vi4@Zo17DtQWOS?JJgQ6b^YH@NX@z2 zgcSbijVDCxPdVsMZ*SFExl)0jl~R9;vl0YtDtoKW%EzhlW*V2l;!=a`Mvt&n8W|n+Ynwlle zzbMVUL)=x-EJ?L#r#^_rtSR$DvV*f1Azp~grUCArb%Bf`$ z1_eSkP-O&m;Sf!AKkICcFl(e0SR);-gEa#8zkxB*B{-TUb+w`SXK=&-WG%v3y5v7G z*6$Z{nP(||NI$Skwy(T28aH`JkpJMk@R%V|oHImp)DQ{8{-8-DbapaEMpIivw3i~N zEdsrq;A|{0D}=0tRJgRN)oT*Zj9`hR43l05N(Rs%@x4Ydx}K;!uo)NwGw_2aeQ9r~ zB_OW}s?Bj!Ku7Hk#7hHr6NT*%nMvzMKg#3ASWE;KAE0Rh8jRB3aM^%o6=3Cg88@JT zY+yKZlRUwgG7b27db(~!vebjgQa3paKVFm^9i`=_DIKvt3D7>Bo^N#!3C~#HStw-| zlxBpH&~Q{Rv1tWpfTz>C?0rK*QOs0@?q)j-oiEAVjb+`P1Fbu`s`t5b);oeNUz zzO>vlr4x2{A+!&q-7SONJ!zfvoixg&8KK3~eq*V_FK8&yWKtonaP0FEysDBpmFqq>mq8phKFuKpIjt`rm*)LS;mA3h^WA zfnC%mz!gEpl(nQ03YAQ>aWhRP{ZoW?`tEexdG>bX!CNn}-OrBB=cq zgk!VFUNRCZl}7Att(PKpz1yLUP|P(^a6g#E)VuHptMwJnLtvV^m=Ze|8*o^W|MX`EsrCi~huFY)2>U4x!AJ+V9oy_ zrhIZ?*nB$*ULgBowLi>wzhcKXhvj>BVsdB8JNPrc%b!uhL;uPe`d>Jg_WUpJH4=*_}OGQQ6~ z@X=VCj}t5F!IWy=NbasbboV(PoD=C|5nh5s=+2$%5svvZ`!4X=JxT;^JpsDk7`k5syWa%5|DvFTwPXk@R#f%E zmp&(_uCT^o(0EWm)tYnvN)0jB-s(9|tgpvsC)=cFw}9rxg1CN1ozZFpyBUHmHO<0Q zRB|i98K~$R_l5_nCCg*rAWXM{^et{8L4cC~so1x7!f>*FhN%1JS*oJ=|g%1HwDshg8>G9K!OerK48Dl-VamN_op5U#X0yO7cKRk4@ zzeRY&Hdw20w!yI8M=~aAe-kRk2TD*yyrCJd&^%+o4R+@g^F`{KzAJ6892kRy+TD>8 z*4YvGf8n9;KQT(%vW>#jTfVVq0%|GjZ!34T8nh;VW^# zBu2jjBb(|WIL}=bL|uvFS`ErpAG4!?S;)2*LI-@C6LOX)W4s9%&((oQS8m=2IM9)F zb|&1)77I6XKML0`+Nb~WFh;A6It=fgjp~^_qN0o zVi@UbtcCn>`w01?6%?JN?}c+E9ERyf_^0~;qi?;$M2c0YI>WJLAk0b`cNBu(W8rsz z;T$6J=*0;xRY_TK4WJiMVM7D-iG4kBBma4nh>8G!ueL(7tAvBuvDaSyePQy=K=z>s z^!l`T-qH(p?pipW%BWV0r2FAGOhTshi(%q$=x4$C&A0}CKPIk0{j53C89xrgkRzi0 zrk^#`LuKM|@jO><8zQG4SqC+MtBRk(Sr<<=oCFq+?uH;mhsbyb?hpN}CwRP??#VGN zy1=8O!k+49(Ia)c1czHs4;6)U?07uI;;8k+C!%2*+f7BjL&$-ch8Oo~@l?0Uw5Q~m z^nvlS6o*~d;>gG3^0+j+z{Kr?Q*Y?!j^wkwCHv4Geq2RO+f)ei7Dk^Xw}CfLZ!kqs81@ef&TVUI?Q3&KflXCe7r}P2qDb@pDM3aYrb8 zQ_=&rM#xc$twiz}#vG<`6QQVeM?*YsWY#~pfA0RJRay6Nwk|qD;fVHdG;S@-78Gqm zi&%6rWmMHJwQRF7|z}K4C*y`e*|khoSk1?sQKFoPse2ke1U1&vm%pPwm3kB?fXOlQ&KL+8m# zKB=M6W7=W7{s0eLC7c#@ruP;>oc9>~E%+Zlh?aHHCG_;@>V$XImd@ecLI<>(q;$gE z{)tJLA_kCKljiddVgR{SXE}iUac4Pz{NvAPu%9wIb4`tQD4K`Yfvc48dE-`M0Ju!-LvqQm?E}h{F_CE{8M|(g}HA@(g@) z{kN&+u;coO-2`*qkBUDKR|@0~_S|6Wz>eI`NY`rYO-*p1cA{?0Pk2Q79|w?Tak#H0 zN-zh?$7??aVtz#wn5uT0^M}YP%z`ClYr8;$0|@Vj;)# zrBTQ+3UxrDPJ_{^K$d1ZA4v5owA*3Wc2M+n>Sxi@c%uR$g>E z{d;3ys`>ZW`s^w%&qNcfON<>vTgjLt#9Xx`OgL-p^efKPnin`zd$)5d^9f){%C>W4 zu{}^*nbY=hD>EC3(|~xdM#?^ZDLjc38b=aYI15TwhUzQKLdO`ylg0HJnBlrUBf#k* zu213c8!gX3rt9=|U7p6UY*?R1t$!`WxAynL{di;>w?1?6MXcx0&27olveT(eY`!B_>sBCQUK6g81N)+fE^IJBSQeg<1X zCCmaAGHAt18wCHQ82fz2+#Iv2GdIV~8j6@{Yz-DOE$BgGrVTwkI5&rGuNX7!93;6p zLaSrUv`GzR%=EW?ikRsUYxP+)JOOvWz1{`$6ns(<73 zUdfN@x3d>CqrjmXwddalxi^gAg52Lsd4nJ~SiY5aj)18bnpZrH+n6o8?%WEnI4?x- zObbVhi5)$xA+hkh!Wc?DU`i+quhy7wJ4vknouhG49e~gV>RLwZHz-@*E(8Sqn~a%o z+B&Tv1~-ZVsULqKb{gI+BdHP{6jxd({?B&krDFYv@~)+iMc6~;jQ?-MV90IjC_^n{0#Q; zb2C3nq4Rh_Cd|)d@)U3@z&W}ni16BRmIx&{kLZ10JXvuv*+;5p25scrMel90mu3A2=l@57`5BYcs$xAjfW;x8jt0v>f@n1p4WKj=X2w+ z>D~Xxcyu*(AtO>9Mg&iZ=p7txggj=vZt5W!q3aJpK|aDp2+wwi0uQ=8Qqd_|4ZXjD z9-kK^W)e0&M&2e9L9HcuC)*GY=5jk^oi$Q&G6gV_2p~D48XVV6K}8q@{vf!93XyZZ>Iil4l3U=r{8sA8oNPJzwriQB<@-VpB6hhSDWfA_C6b&p>?Z7S{>kZ7uJ^Af?RPX}^Um|G>n6{;+-vi^={iu$^S+toE9Y+yPj<@lhC||L zp7&1`D_!b!GE&*QpoqV3WMo}?7Ur0 z*<;M^1G9HjLIx1e+m84130V%qM@d}#Vn4QYK+7RsV7t*dIfK#4ueNew2}&&yR3#$V9K!zK2K?|V87m$th+$qyPH_mumTiG6y$ z#ijR!fO4g$TA1UAS$JWcUCyabg`vTCl{7JzSs+tgg3QD&cqryC{6YS*wSzqfW9ork z+Mw-RFf#+65R!>ij1}w%Y#}#yQv<|L%QluZb&I*c&1n!qCTVzox9W$8dO$$2bCeM1a{e<;*gr*FPH2{ zxa5M!)QBx;Ba@CD!siTu=d2}v5}61yb4Q$+D%W9Vpjgck*03*mcY4pJobGY{u`0gS z+{*2vWB81@@C*|+ZU+S>OCI}TOjV_Imb@AZ8dK)cS+|$M&E_y1mG@5#W6HPWS9}5i z%*E+iF`h788B~p>C#72;TLG@&NQfc2k$=<^U&8M_`Dt)%7WiY5k7Acs65jT9Dz(Vp zmPf1DI(Uqv9JEM2f^9ZsVpocySI12$t_4}PmRZ`Hsw`4#Yp`^j9?qV!l|E(de$hWM zPmpfc8dHtPGGcw{8f_M5vDRi9P@--IcDr6I74F^fy6wEqqX<<$k3zm*wm+QPw4s1_ zzbxT6A|Ns(8$^5u(VhQ{QwDY+=MAz z9R~hhBKViuNWgy!@Mib7uAO>U;4ZsM2?y2)P9P1XjZZc>rzCSwC(Imr46 zta!5dKF^^QmEAG^Re)Y%I+r@_`ztRoMSp0A0D6X=X~rE)H32=P`+Yb;&jQZ-31^MM zMYwI-EF3^RhG;E)E+Kk?1~|BDzoF0zl^n33u0x z`y_b;b)Ouz8hg8UpP2FZ0PI00xd$IX4~`dB(WW3NI2P^;xI^@x^;+rZE(0|F9UD)D z#yfp!lFeB;3+Ox{kL^YNNLWYy=mY?mzMm!-R9GkZmEnZ{3}S=tT8GT$oPzPU+eZ7+ zd;{*1tFnw_E#Lsd*H<0puCE%VrTGRO;J_u+S5?p0r`5HFF*dh=_hP-AVDJKyDNdS%3~R&Qa+1Oc zb#?X#B>o*kbM+3KEuqo@-3mYEtZm{i6lRX!qD2+8{9fdveF)jl6Nyf2?_v_lePqW7 z+6X_c3|_a6`8RZ({bc`dVJzw2T|`;Z|J!=4Q%Qfd59QmH9$wfZW*8NSlvHNR$x$d|AUF`n1zEbx+^w|B1Tp{6`$lNS_EttBrCFBYV5QDojxRiUiE%WGn- zbW#cETq~ZaHrV>R97u`wP+cv$R%>Wl5;$O+nuKwIprgEN5++dxYyr5p+39!^i=cbC zTB~6vynNc72ogw@w&8b&tOJI!VNua_U`@hs9aMGyu;c}L#3KIbym6?!IAbmME2^vd z_(m@rj$N3plTzk1u6Z&&X5pgE;730>r#4um;&#LRE9eD)311 z$oldrV0O`#>MMP9k$v?$e67R#TrPf_FK3;C3*T~Zap;5=07PA+sP+ikCJad+sFV0*nV?_gGf%O6I+ z#;cE~ho@qpD?c^N>FE+zJc*OM9%9h<{#%h2wGzM2ej+`neI4DZ&-uh>e8rSj@muAX zVYy07eZgn^%S8E0zWC(_{g(&iFO$pR#twfwQp*Rr^eyeq7u)#Gw{VZy~Wwi*06V9@_VWj4&RYlfXEEnC~#4Ok3f!NPgf{N6~RP0iwIcY?qY@)sY zt8|%8Xg}`g;BYNElIv&F8~wyv+T`2P~q715F zN&WHr1&w>aJG8glUUPRercoz-p{=w4^C@R)(2EClm0g<*PCY3ctM=?$I>Flzoo(dK zj-j({Fsl@?YMml&+#oGrt$sB>|Iu{E{#+HHn<)Am$|E8AMBkazcY5Nk#KTzWh5mYk zGpf5(uX_e{yF}<`Nc0NF$fT*)StY_hQHw|P7Js6JKimYma2mfk;hKgX7MhQ8F{Rn{ z7?}3TOZM{*rYouwxS|r`+6xMK%qTFZ3U|d$!&_HKyW>Zf3%g^Qt!=q>MLGV3-Z~bo zGs0EcXbsQ}7?>K4O*Z^=g&F(^dM3a!%0*w4#9zVgh$S#TPLIw=o&Hw`yo8!_5Op3(0`=dr_7O z2N_e&@)DB5s#;+3MuIolwp zDI3Ji+?!oP+65J!R4zyyEsuEaV8JD|yFR z`m<8Tn_lsn1ny3yMc0q$EMLc27IZ&?u#qAd`?8}k!l{z4h{mT@-& z(M?IDgr~{YeKZ=U3Z4Ec{n4MjEu=7{@~e>+)f-XOCdgifqL&Gp>&1MAejYaz^}Dhg z%S!j7Qa9m$Az7{2jL zBl0ZM**ko-i0CefmxWt^Xb&<7D=*Vf^Np5ni{=+o#FeslKN3<#a^f|0J8ikk8RpC2 zaY~W5Vs{;E_A#iebfdZ0N=sqigV0ux z8Iuv3y+{!Gp+)#T6>3>aSJ=K>8e2=6!f9Mv3PZEHUTv8I5EY1PzMD>dL78|164&(rsIAB#uBnj6I*c` z#1b^vZ1bmW7W_e2d>2j9EWS5Z#Pb!$S{&~W_82Lyb)_u4cYB-(Zcl2w3io00l%MI9 zF%4XPDc|=p@INKQ`+)oh3G5fSJvoJLV1Q9e=$}RO&oV6lbtaWo(?5muPmw0VpU852 zDfJ(fASM2z=F>m3IZlie|BqTDMgODL`t3uP=oZrJGkMoO-cL(Bo`7r5u^H(i4BTff z|9i=xX&%juH=yyb1f!*FA9G6Y-IpR|bQweQ0yM9iU`AECVVyyM&07D(NKV2IS;oB_ zyqJD<#4*f};uG#Rn0!!DJuaBB6QyoZj{lb#SFo#ZulhfxXIr1oJ_Pt{drGlBgQ z&=JtmsW=Hy#;&BB{3T=UZ ztM3j`V>j1G`#PSt2Ae5022)CcYczSe`n{>U$MopeU}or$E!u6l)il)7 zYoasnFrA3fIT}C+3UO)@4R^>r>AI%jD~4ocHh`9VV6ke+_SqrLlC6(JV9=T`$WhV5 zTocYk`mR=9qTcGPUO1Rk0jb$xxobS{iKlAR4M);gHo#TRrW)arQ+KF_#b3MAz4+dttwD0@*8 zcS(3KZi(NXxmbJj3F{x>5t?Fz|J9}u#jQJ!TlZXTBM|7b+w?Gh(r&g23C3^_ZO~)y z+8PC^(4biv^hd|%=#MluaiNEC^jQN85iOI@vS#gIo>~6h5x-xlCCQEN_%W1SFRvDj zoMQO<>3W9?nQS;sB)cYLvf?G6DV_qBK$pE4{q?_iu_C`k`&E!Or;yn@@yyn@Q=D~JIj+>2V3=RdrgJFCEpTK#G7_7|TCmc!DMSOkc#jBCY|;QGaauS!@yp8H>b{);f4xP1dqo?ZhlgDCFw zR(ME(8Exmt9^%$d;1)~J;>jA!Jy?&%h(J2&%Wy+X?!|M)2QiU5ScwkOxdUs%Mf7$7 z>H*wRh<~7~+CKsJrIi+jJKQ7;H%6=tE=Ja$A>!*m)OhGs0NoQiupk`@AnZw75HJtL=Pu z;(4R`o{mvJ+aBf7PGYpW)q}uhZTb5t{JymsQ=S=$Hv^0s{r@|m zze3G4Az#cUSovZk!^&ecVs^ZcFIGHjpc=qMH|egV{bi&TRQm%1xzLnF2pOvpG|H2{ z+JyWD)4vDu#!L`nu}qAqf@tVdF2YJ_7j07-qye0g?o=xS0Q}s<#FUP@A8XfVB*-gp zy;NR-YnP2zzm4v~7-rkASUERE-CJRF)^^>;nZWsPg*h zyfy6(ECm#z%fPak^x1@D=6mbke%W9AKxL{mnP*lNOX{wdE2Er@vVcogl$%$^rc_^` zBk;aYX$XATc}Cy^2~T+bktBXbQ{>P1RYL#=hy{h)rFGahF>(M#06nSbOP2Gv3i!C9 z5+COP+HY@-ZW0lbZxUtW~3t<`BAwz-uS^-fFlHh(|OxVuZPX6k-kO~h$l z&2(z)ot2`8*_C7chOrLCVWMAggqcs~OCut!N-?TD8ut&B!E9kfo1rh-sxKNlva-zL z7kUinZ8nc)IfTW>8TGk~4w>#;Z;xT;MB{KY-f1(##GV;NZY6se8=d<-LJP) zbGiBLXujDNILziCJ!79HM- z4*jq@6n53L-aqGQa8E3>1?rqYo#Yd?JjBJ(k1YIvIsZ4$a8!AMfkQ9P-XiX4UL>2E zCb2nVXP45SCsaKzx{%~H&1dGebB`wj{8Zh!dk!h-z>h02ff$o>3)T>L0>dj z7#osP(6_ewLF3jEfCv{BUl-Uof)47Tc>)-U`OM?)N2B}OV_Bw&EB1UL{b9>{l%@J9 zd-GI6oUh*&`m}4Vdj0O4XCT1&`t{G#2yoH+MD)JDqFAjhw-?LGiOSuOXPn7=t~(QT zmsiwgvY2O*d)i`7xc|`3uvMamJoGSctYW-E}Mgvb8)WAzQW01idDu zNyrwxnIT)HV+`58Awt@_D#-xZ#8~q%)};zMWczxqq~5eD2rXQ^q{2UeY~P9nW0#oT zWf>5i*y3F6`aH#bE<>L)DoB!|QJ&$|hzf6@!VsV`rbC(y{VFw3viIeEf&glanCcl@j~oF1VKbJl8OQM{rSkTfDC_v0jsz zuR1PXm}f?zH$25~oC~;z!{}jgc|LwgQylQtOg8Zq5%rIu{)qCde=yExp};fvwTrMX zzdjp*{t#bN80T&G#qhOEpBu0VqM;8BW6LusoFpQpiF`mRX(p7q3Qhhz;4+y#N5Kb-EbnV8T-n6;KzCsapIm& zVx%`m@KqZ)JK(C>a);bRvVKHJ){l56-61#vv0*jB%n!i+z&c#-9g<;t5Fv!7%;HGw z^S?3`Lb{Mg5fe?G6lYuTEr$UzT~g7uK=junOrXC;^xyT*@{LW!jV)KsL`=zo_`90o zP_qG_R!nDipV|OZb8m#X^J8~KM)Sn;?Gx~qEv<>iV8|O`CghfOfA?)Ry}u7l(+yO5@sQR%IjRnD z(x;jZuty`I_NX@1sP?$UWJqarxI-$Oi4k~qs+izGQy?cH++>1q9j*tPZR#r+{6!#; z8zh0;006lc1!ad9RWB?Qkh`~m2ILB+Fu=I;Hx0=B?2nQ_?kW7G!i>+TqU`+>^u85l zWCbhmCk)rtza;1{hJSkb2+B+J@*#$QC@&GRZz}ty$-*`i#>>JM6h_RfOLMHrbF}yU zGXM-Wq_4gw z0NG5_Va=rfN=BjS*P?%6pXoLOb)n+eDy*#yY0W93(*}o=K|aQTGKNTM2F~DjzkNxL zW+~9d4J$NG*^rUEeP(M1cuU0n&qfs%@iuYa*3x*ZI7VVB9M|CmOt*5xUKpyE1C=;2 z@mn~`vpSc{e;^~zZ(A6HL(aEO&me@K{Fn5O7FLfLHuoR&COuaHVs^TPfB0VS z=w>WekKOq2etPteV6MJuxG!i^{3UP2U$*@BgoJ!g7C-e)^swnORtHb)p{GIMWE4T) z=H~FsRA*N~s+5 z1|_%OJo23!`xlJ8&thW58pL?2>uUI^>AFTuHmqwX`o4m`f8sr{UYhtHWBJ{2yBf>y z(>ga_QByH$G+)bh1rS3JC><9NbqhEtIPg};rMCXibg5Gx6=nrZHVwmwb}^!RZlu(M z9d>atDZ1rxKbOh~ZK*PB-w+X0)`>`L!LgC>KezIo%QHCI0xYL4O z*NL3WK4S=;g-}SIktf{Bd1`UW0rQ)kOww?IG1{nl9Oa_2h?OA>RPIYaT`fWeYfYbd zRQP%r!)7)1^`;&8aJeClMVpC{#-JEkGu4P#!fec5f1RPSb)wK9Rp8)xAe3cgSi2Hv zah#713VIQC&=BZ)aU&V@;#J(Eg~B3P4RpPdf$YpUUsbHomMcOz&?{t$$@ z9ZZWG)6}I*COkKd7@nUHeZuIr0H!P2(Vx%TDS~8i^0*Nrh#zV^bxf%!+?3k5pdHD+r~^gfDZkE)OVh4)MwM~>HB zL}-TJ&!icOKGM*~NYhlo)|q3(jtLLR`_&zrBJ7iB$8H1z-Xqwj&l;I%=on^@rLXp@NS@SZpOo4{w9<6HiXSnkD!TD#?_;#saz^v_ zBj%0Ydqg8#aF6pK+Y^0!h&~d`e5|EW9iZ@4!i$e+8m8{ta041H;_Zm-zdeRA6AsLl z2OTIKTij-OY!kK`kFCXUD*A>|tGaK}9~pFP)!sB5+eeuaPh0)lv}4)jYFuhoJE56ZYv+)@nc-=6+1rLeiQLNu=(Jsj>e%tNNei6fw z=ICvg!yRdrsos$iF}n{NOCnoDcFG~XTF&kqX4f>_h^U&qVEUj2KdeD7^wC!D;{y6v z7iNm6zIsp~s&wXjhBBgRfdnKRt||h4bY)O`hO$j!_ZpQ2=W`VI?Dx(I6-canrmg#r>@PqQMi)vL- z?dbrjDB&H`9gTTNdvUSrdvW7B)Y#Xbnv8ly732Etlf(eAa)7$1)4J?l^UL}Q>i-Ao zY0*$0b!@tgYV#6lxw9b+4B_w`B2HltPnLlkBODxAL|L3?(JY3*hD|fia(6Sl;8y7bHAIK?3qgOiB;vLdbG3Ks+8wfARX zMN>igmmo;Fh^%e@nC_B8`NKR|`7a{{b)U-aKv}~7Y>*a=JFehP+=&hI_rT#L%!n70 z%`e^Jks4lX?p9L9Wkp(KA5ZPENJmCtbEyH=-%NaY=xJXW4xM_5%KcAP!*tvvkd%xd z)vC72{eK=CI&>7?^ldc7-IKK`zJw_f1Q^5+ppSw5?-DFq#Z><^5TzOXm^wYEJ?z^G zI&iNa?ctnc4@|}tLO6D3N9mV%)Z6H2soz(F#F4vU}TR!ZGk#N~oUEZR@o4Tq`nB5ex|&={4IcV{K~?Gg90Bg$>C2ZmiR z@_8;}VB6sVhFeyI-Dn1ZIX?Spx!^`2O-Tr)DpNQKPP@LtBiTs4mft>cguq|w=v^@S zaWD?~9Q$IwcmG|Sz2&zzIA={)=L%YB?7(dI7<)&ytuDsnSOG)3!&bWK!G(;3@%ct0kRr z;{YrWQ_S0yeXFBjFsdv>6&VfXA}#@+2w~yN!FsieczkIe_LXN)1RB6H+wI7mr5$U1?zu&>XcM*!!1Kw^H-NU~z z_=hsvF4)kki1YSRjBwK5XXgJiOjl_hU}E0dYKR_iC|M0S)aIrEhun(DRx1M!jgKLS z7KeBQ;^P6YyZTK75ZQ9?F-^WIl%hf`ZK7OJMVO7BF^~T@RJ~5N+#^gKs}m~n`eJnL z@mrB5qG82)_C8g$`{Y7RwL3XVsCJWw=zR|~jg+*2VG2)wsmPnFTnJtSLTGn2%=4-t zI{HC2?VEI;enR^q%w~FkPS;z0bE#iB3(fHogNur)Fvu&h!u|FK4coOK++;}Q zUVTo3O#@EwDjRA;Ha3ZBfg#~)o8KeCZ$CF!?{Q<8$&m4eRW2~q&GRZh+N2ISFf4eL z(0~GL$4{@phQ381Gxtn@mF@eo*Up`o>iaV$_3*MIa{e=Ae3HA4us$~?B zZ$!Oy6fpkXml-Vwu+Os6;lb08S4ez4^w^Q;(N7q=`k!}oU? zW@u4o&_J7E{w~7|Pu(Yf*KD_x;}6-!AGu)r^|1Fs3QzOX#XQYCw>nK*-gtPe=f`$z zMpK>fyJ4!!ulW51%^9^_1z1K}H(9=n@@c(%3FYrlzFk-r?%{A5h%&iD{~DuzU8A=> zi?+-3@*gNK(#xk&hW&oQZCu`s@ z!xTyNdky|C19ktGP3-^jh~Iu}fQkQ0Frq=?9Z5t0*7xefS73y~SKx_m`W0Z^XMSw; zrgR0SdQ1I8x)smnSxw<>x>nGbuT+a)GGT3D;4rko%oyHKv8?=AGx<&D7~;y04Io^U zrP{3T>&Ua7D`=>_F718YLNorp3C+0ZHzIyx1KaQM+dTt?T=%wuR=n5Adw2=;Gu2Fv zty*evJ$@;oE`(9V0zr<_<_!V^Hry@JiolRcaAEHWRk2iXn+FLpCm%u@kmL$H6xtqv zQ;`Hmmm+$6+Qp!JdePEGfz@{TV;i0#+FS(kwXW(dW8bI8bJ+WgH7@0{+mk)ph15yB z+8>>sq4S;j2x0EYUgpRj5Jvx91SQ!Z)W}RvER^x?53p@Qx^g28#;Oj5`paI;nM=Ld zmrL1}G*u6Wm-6;Qk(N#2%*wpBlkWP5l`R$o)e`zQr62X5pT1f|x7f!?SMaX{{43QP zSz5~eem%;G0G_$c5ttR~zUeU4onhjGsB*^0pE5s&Ge@PG5F^d{t9nHa_#Y+HwG{d7 z(F0h;RG3p??$t1dvctBx5E>`j{JBvAzNVHj&Y}T8GWCp*eH`$9e?#sAcRrhmOirFY zoJAiunew{}LQi>0KOI5V;6ANY`+zIFL3f!C$EDn0hPRDdnHCQ=yjKS2GeTld!k!>w zPn31EfoRNv#EVSSC)2iMyNHyVotED@oGwgZdg3mmEZgJUd@913-@nk={2*=oTBj$w z$eR~;SzBlJs7+Qr& zwq5`>=cM1>tGBSAJY$x5C+IotOlt@vZz--59Q+xU$4MCi}h(I><+UKDZD zXZ&H9wz1W&8aK9c;Kn-4Cv>=%e)X=0-*jX5Ya6@Y>jT7)=kdA8M#+suXt?1sv9Tq7 z`=y>@V;?i6&)u-II9UeH9G5rffVblnAg|{ipcC)9bBsyyKEDi7d+7Y& zNbDUZ$JuiKVxPB^i*E|MInRt`96OG7hL(8a`9LFHj?3&nSd7Ts68QZhfnWOy^r;+w ziY=ns+*mJ{N4c6_jxG{SBJ@w?nXY)5|`TH|piRvdKI66v>|o z`O`^!g@e|n^89r$W|XU!2cev$mj|HypkD5WazB(~xa>kXO)qyrxvgGK(zuBU(M zT%=8;0=}~4<%ah9*S})4uWj|O|HIb^{`#rDlwJDQkM*yg;Hw}!-qgRo%CYL1UsDlR z0v&k7Frrd!;mS{H!(}Lc6hBS%9ju?x+~W`MTRn@{C8E@)Y#*w%o?nFEm46fuj8UPC zVjT~f8_r#wROhb5KQkI{Jem@2!PTL*WHZ3=&xxm0|H|oyh_~#0((484)Zc@ z!5z^iPPc3%rdT(rUI+*dvMksEIAgw3amB$jX^?a7Wj`-t@DN%?9QVIgF5^rTPV{hh zW8Q$2M7`dZvflP6h;kxX2qa>*yy-ODf;d@yJ*GV+$~5@5hTX?@Q?a{5?LT!_QTqsI zS=4^XC3glBdwH-nv5j(Kw?~CQ_yQ*p)jOC^$~ue<=v*i z^)PTH9(cDL_>*#4CIz2UW>R>$tIVW;bV!4QIQNdOy7FCiaS*%IyPS&O)(V;Kj3p4u zHjs4=qfU!*Y9w*|w2W9xKK~6s#_6_p27sceww*0F+L-&sOph}hSLXN9mF00FlBgn*U%M`wH zWe&qBkktVh7L1;3`XVPRt^H8S5j`3OdQ`1Q2XyLv8M~$kjFO05)9`m4%~vmH_WYbm z|7DPJLaXMt*X|-@JGuL$Jl3hcmqlnH$4jS&;-rU?u^R8hmOIyq7g6X`&)=5YPek`u zBi6j1t|Rj4rg83*>v+1VKtQ|Yb*?+*Ew3{zJ>ZrT-(9JzO2Aezk>BRgvS%zILW2`9 zq|bMSB8y=DEXX4I%X{=MeZN*ox^1{y#2z&9K9D5LN%$+yl9um5@1j*#eP23qpVob8 z5V12u>(qEDSOp}xki?2rp)elSA{IoML@c290=p~=GgR_fou;v}({Up*C9iXq`6+ZF z_^GqR?$E>W5~)$@Z5N@rCy&@<=SOtcE*Lb6*mWi7?LkZ;fR*ZF>>mfnyi~O0rKoe_ zC}+fZyL_e%UIG*(hksr z3kO+7&uwIp%hT^bya2l12g3AOEDsCTldwkI>^@#j3%-xzx~TWj*SYL{oRg;B$9g7m zV)Z^gbrq2fG{Sdmjw#`LJxzZvUs?i*db@giD+&O@{8Fs?x3}_zQfU;Bl^IN=+bhgs zQw?OU0R`MJjpN+k5wrmsTlDo6zh7RBF1Q*nKy&y-K`xhj9ICqKLB z^Q-t=g+Eu5pWDcC)mXSUB(6uD;ruD(_;-5gP~0Nk6`)|5!=?FR7w1jSR{7Q(X6S(^NIs)>(`Iok_<2m+dPkel}Sd$@N8hZG@> zDVJ|Y#+r1HfU%D{RLaMJz!%B8nI4QCbGLkdjtWKDRb0w0zum$!v+wE*tIWdmyu!y* zLH`h2zNvsX5>3i&k;u{NBkY;b^9 z&+D!B>#Z7I7tTii;KbB-ZjqG zm4KZ>ES~d-{q`?B{xX)CeqChlf0r3T-c468BOaMDTRm6GnKGfBtu=5}I=QU4Z|GcF;0{rtfeyaKBO|7Q-=WTvR_s<*hspg;ON{+N_9I+F<)%mQ) zKlRVMV22yaH4FRa4fyci`sYRd_TT*T+{$-!S>~KB}TA`*1S#t zcKckOF=rjhc9&<`DTi_f-cJtYx?A}%!!!9HU8M}qv?AN$EpE>LnruCh0-5~f4CO3# zCKd3J{+mR^u&+ofr;pewhBtG$c$||J1!^qK+G9e?<)1rOm#!mK(W!K&D||WJmN%Q9%CvZzZFY=XxkP^__=usr)2Ymg z#zlcys);l|1Co=hP)_hkxEda){>_rV80Z?8`6I`Esq2zA`iph~`YGSDu~iGVGKDX7 zLm6tCFLh9;X_l2LU(2}fJ{&_{0X}U`%Xfqet`}k)X!%rq@^mWGr5WyRdr{-}^DYUl zWVDm+`Coj`-`W8zdIq?`Ja>cXn+f5(Yi4LJ2>neq&A@isY9jQvh-k<;xTdq*w04Km zD^A%m_f&og^WS5X&2C!KM64|>|K4!7SXw65HIbwLjYW*q)aa5e3E7cOrDuG}mhcQ^ zt4leY6_uX2iw+>%e^9;C$mbgB?fXW|-As)6_&fE>92qXEMPe+7=31j9VFnvQg{bMf z#zWn$fBp=gkBZMt_0KQh^E&#>AzG%iW-sG4ZwG{EnL}TFjezD%wb$PbU`OezcO+ovu>|XhTFScuu3pfoI&6>GA zY>gVZfWxS9q0VM^MYGIBv;3%a*Ew_`Rbud_s|>;(nJ&5i~a_y?$jW8PkGa5#h8vHRF~ zVibk@n77M$HEV5Ypv~`2$OQ)(Q&i5Emw2{C81?ni?~K`fLlCw&5d=X<5oqILZBNAr z$Ce>5cRS4&z^VK$00g2Bc*q(Wu(DzvTqC3 zaq(hqCS6#Ef(1_)X`x z(S6u0D7s&o%Rr<5I+j7L-&FSGjT5CIT^-RkJhbJ|7F@+!Bh2^`I70y3T^-J@C>*iQ z1Z?KE2#7y0lsMmwzjNQQ==*}2@;BMq>~_iHeBF#Q4H;5YPH3j9FJJE{MIL#mY_v0ipY=``{5=VY^={58jRrz{$wswE4U@MkFkjX>DsJ@gzW3SAPLmTm ziOUKF_$iIFJ7$qbE}HG6qHNZ4y9{e5%MO&6u`GOJbDa*szDPQx%d<>}O!C{O-)2IG z_@gqE-ykPw3Q*cg2Ge06KoB8>AtJ$oKqW$dRwAew3Z0N+ZIu_S^>#K!r?uuLvwNAT zGmZ(H!>*+BBfzF?hbw8FrNWhTVsVB^azfY(*SZ?;9kQx;hIf4pM#CJfDmFfk!5(4V zbmbbsJr421(C+hm=^Q?Ec0k~V9#r&=q^5bJB#fIr$^hdgG*tsXY|PbQ+#~rM_@T;d zL*NI3aaEdWFz%XwanE@9@`37~2oRhpVn7_h4i>E3N@skY8EV!X+bcBHqj`%eZ=%X* z6PF;+uMt*@1uj4RnyA4*j&h@q(dcCn1hv;AF&0(j99mNJO;baFg0Hxf0(8<}2*$=V z{;!btjUQCV+vG@S$cs%u65r$wkrp}pUJO6a6#6p6ETt)B^`<}GYD9lHIrHmQ0Wnh= z1uf@{E9&&g5YPFOLYB%|neJ4fGA^{=n&;5uqirB6ywafQ#-kH*voyaY%jFsu{%3oIwFGXyYCl)mV#A1-X_x1|7-3f z5q%#IGo~cp(SX^hhsT+!idL)bzv1?s(EdeXaliec20E6fotV;|cH$IwJb9ap zS}LR6XEhe2H(yLK_6$_XW&Ax6Mg|CS&q)DeC$MxNtdZ9F?Eu%@j7F){9$`iEsCAI} zLGfD_GY8Jt0gchsaUyKJ6;7&hlRL6A>0U#7e~(xSE9RqC46_A z2wc2pzAX(-z=N*kP|t7UCG=>g`n0UP9<2rot@J{v-xN26L`!@+@6?MFr(<1)zZg*? zT%4wP3m}}?-vrP&4%9GP$cS)4UK$O9sb@q zL4<2l?u%#3C!dx5)H(Y_W43(0=kQfP;#uud!Q#4*CM;><7_wV~nBR z5A{Sn&g$+~1H?rN{o1x`!2#k97DcH6;`Vzd9~W%ax=CB53l~q6oxSLW{9KRKXwSbx zO?IX=ga?v^_^0hCi$1N7U*p)`^+1!);49~x>krQwLA@>% zz25zfmeox_OU6YT9EIx`k{ zI1q`1&yE8)z#qx8Qb>&Gzq8An>B+j{Oot;y8hhBVBEpj^*m23cEo&8NDR`d=-!@wi zNoKz(L@3T6dS;%&i?k zcv3O61<~=#stJUy?8iDHgR}LS+9HGV9;q(#+ndxD`gtK^keaehUD4q!kwKa=gqO~4 z;MnBC?|($-nliDL4D9QJ4HHb`8$fcws(s~RhH~0gm+fKO>WZ_A5lk<&uOsNCVNjf1 z6>2iytp=T$X5}g%;tLU)y6lr$Qe9R-u&Tb=P?rfg{2sr(Q!QP?FvrxrM5@a!8q{T8 zHIjbaaG@?M6G=Zh+^8-a5aw;aL#WGs4uiTZ+hSxZRS6{rm3)u?WaX!s+a=#e++b-g zU{dKlDIP@h`+2>E%z=dv8ccBmrex@9y2$VVHQk@8ny#f#)1_Oap3atcuRlQa-Hk8H z?%Fy>{w7ml$DrJZ*rh8sW|_Lg2onSW_OiQyg0a;W`i)LuW&li;47~k-x&2dZU9TrX zgj?ULp$1aO=&uD*XtqQ6?3}Nu&wG^##B@uc8m)(=1$#J3{@7Z~r4MBNu$gFyzZEn8axg zR4+e$E#*zCb-S#E#km!d5T4SiEN%R%Wtn)OJ^ts)X*4;6?2%O zxW{k*I^N8lkGGFVdtY@X?H7zNlJ>UTSFs%bq2gC~S);b_JE7Up9MuWNKsG{;Xp!m5 z3GK`M4^^t_eGxK?4Hu$?YW28xv_co|Hov_!U!BLR(o|*=^Ix!rr@D`(>f1vM$5S<- zzKCpyDK3%1+$6Waf73-|-d;{2{T*Uvo^~@~OePCs%;mxV|IxSeYlNb2-*g%1*4wIw zq;H?>ZKxMk{U-G7Qj-A4y$THU?Q?r2ee2(BM&CwOXG-+5*8}O>UtZU#QP+81Gg{CD~Q6*^`qrvDwHh5ij+TK(X0()yj&^?)yq08lmdS68R88hSeZ8eD^qCfw|+DKHU+3Pm2K>Wgjo1 zk5^fE^hFgN#a^hSq1e=^sutj}O2JYam%m(w@+-^rO|$@+rj|OaGx!Hu0CAV*ZN_s4Ork8m_ zB?H$_JGJp_A;xZZcYWBJ{WGrr+gtu4*I#+J%JnZ<|2JI!M!%TXTlFGu%Juj30cX7` zxc)v*+=T1bQ#y{#f(%7Sz4jdKVQN z);nhQ|J!=Y$lKoQ7iztoZ@HPgts>2MV~@fhd0V788u=?WK;E|hR%+d=@ZZVXMpXEZ zFK@{X_2u2V_V49wZ7{d{3vVuOYvjd|JS|?{iJAX*@;0~fUH`tW{4r~tb54uEx7K>m zY78b?sTF#Br}B-D<^W2Oe z!%PTbJR3M;GcL8=t)vv!jG~1uOOm}g9c@0})7e~~>Eb&!K1u&%Q49xYnagov3d8g=FpqBMbpCF z!Yf;aMpJ8;Y451{&du!ikZiqwf6J%Yi>|D?i{4S5%FxVvU`ME`IUv^OhqB;+__-kA50AM2gc*g4}y;v z@tW3NQQ*va#<}oR>bR4Cu;p)HadUV#rS>Tn^lk(9(aU!`|M)unNWc7O{G~GOf`b?d z$pRc@(K}}-y$~{*tJTJaY9}Q~sx(?=V;?j$0MNLGNpX62h;oeWR&iye^J;`G_c~+ugWn7d@2BGOK>9|D{YDx z>5Vo21c;4-92D3;KMfJj*bKrIO-$Is$`>$SN8O}+$n)dLFEsbYaevX}Vj3Z6_L7Uf|Bci>t zSs&dQVWK`U2^Q=GAc3zLo`Bg6s}n&p%AYK;i9d~Ab%%09XubNOAhbqB>TK(JnHqc| z!Zmu*%(FgP_k>4U1XS&isP@)V_Ez1{TYnKz;r4QHPA+lS7Vl8am{p&-^t=*Vu1IZd zwGNj8m=3Y$AC%9)6M%2)OjYsi*97*w-))u8U{4A^gCPRnenySGackvH5(oQan2Jt= zLtz}%La*U3@2-z^&B2`}ngd#Lmo|7tJ9+&l{r2M#LT_-+RE*CYtbJM%An86=pe{sx zfYwM|c>qNbM=ChV;nk+f&cBnLYq92gfdx$h6tm@Z2=K$;@GZrS_}j^{09pqIYdZx- z*@Bn_QMM+~e-jG}CiCk(>)3DxFm_>;z>g*P__+A^7=QHg_x1(!eMIp0M0|Gze{YTN zt;P2#hVR|+y;|^h7rx)9%-^#O-y7h2vG|^4_+A~~57Bp?x?@8$%A57_b*$r~%7Kgf z4j-2qKZ?%2!S~$CkZ~LdmjPpzvUJ5>Axx8V3>wXHjtYMJLQABjcp6opet>M1Qnjbu z=&2+36cetYz_Tg}{Jt_!V2)$M{h02=%0?J|n>ov{B}}7Ys&dm21rXwRsn_B|mDs>; zXGaiKBAZBqFs7g4X=XWw6^_Js%PX0P3(J5ZeLgRBHJwizeLnG^|9C~y92>^-w9Xd4 zQpreIeVT0A$r+1ASkXw+{!XgT1?P@d{3lR5am8iy(0?l$V^)qnyZA#EsgdnE0xag84oOn7-Q(O697_1 z@{~ARejVZUcbF!hUDc_C=?MjR{_st$ea`qn&{#*cD2`ex`j7796=*eEfJt0QBUM@BPd8AFY|pMRtiSoO6imx}$aR-C)d48k{{LsDsi z|1pNO7GA}tKa^uCb=A_XOo)d#Qzxv_Eq_l~ou#g`?_qMHOf1<0lFC`jRL;0HMBc3R zc37v~vitKVPA6D|^ZX!|PvIK+njAzljWG6pf;#5NM+dbivg3-V>x14~H|VsB!tRx3 zN=;m2T6gvg{U-Y+G2wLMdW2L)5$VB-aoI_f+mng=)5DWxq@9j3?NlOYr)vq`@oV+* z?+Y_y1{rZO8TL1Hlu610VmJ~rU?}Q3}-nuRNEwQQ!%HwQN;#pQ%!MG?^A4z9KQ!03Z53UjB^&^MYw8mf3 zQK>FTyeTS`IJC#dswDB~ihqVYF_%*@fpba3TpTgMd!!$c{ch7E`k+)hqAIep_VS1e zIMSp2_V$t_q7#ZMlmO&8B4xZY zKa~I^uN4E3lTHR8cS4%|@oJsB9vi9CKpmTeL}zvXDudn|3R%+^=RpXSNJ5C9%pC+= zI08l^Euwz8P!aXhw2=B<>R!ZvY!wg#Qje+cWnv}!l-o1P>uvp!cD+Uvyj4HZg$U!qLj;;&@`M(iJ=s8^_#R?X=)%Pa zO(b{57{anVjIruG}s8K4?3&TYDye>)J*h2SX)CH!`$vk zzrFZe1Pf%~z-E%>vL(~DWejZuW;k$%DM*jjHZ5x`f!weQ*c2iBnZaY_+-0UIVIfcw zQ+RA4!B?Po#Z{v9#BE-U+k8w2bLO$=oSvRzLoq&Y3i|vTKCc#^pVU8phtJOhef}Ds zrv`mKj?W{5K7WPJZt*!!|GW#I+rc_iOn4p2jr8(|DBJb&LX@p~c>&6QvB^o=Ih~N4 z{ijAq?i;8Qk`aFf6OvNTZ=cte5t=jbO4)Hd)g+3Tj-m2+sC&<96r>iVt3?t=AJIO)%3yq@3i({Xg7vB3Pz%< zJmyl=X?#*M)HGVF(-_Lr7=^Z9N1IZhGrKYk0|V3N?vk$9Z2}3U1}>SW`}Y zEm(HwR=URf?LYr6@DR1@s@arwy$d#_b-bXW=p|a|-Xl-<{L>LKPxrS_wIA?Cy{qwN zx8zSA<|vqexxN}L)+x5=NFCEH+Tc^gOxPl7Itfj?aTIrJ&tmPu{PREsJLH{t_5~5B zfIWe-SKj2>n8XFcHKNJP#$+~@yV*6mT07MFO*$>lZy2B7T=Z4Ll!M?sB24;)4~Jkc zZDs0)TTkupe(oiNH1OXg{Rrk25`_-C)Us&xM8 z+WEH}z&6FHE`v=m&i{Ay{QbhDIO=Uxyoh}p?kISH&%d1Uo;Pn0YM)#_xvt^7t|e%D z&NRzt>7lYrm=Yyjz;K&KK|Id!FMCyywe` z%iQz2tBv=3q@!Rt=K7g%S6lw;e}!%*-cX_2u;>0By3w#}Fl=MfV1?>-ZwPrUzbTg6 zJ(9Qk6ZG|jX=2paCiiID-L|*f?gq|)?XK#S+kH=Mx!oOW8@4cCUHUxZMvr3N~V{T?7x7_{)FY?$OKC?f&zbzu#^eb`OUA!qnMK-R_K# zP<)J6Zuf({-TTp36%+Gz+QPLCZM)BOklVdDBVfDpGURq2ttq#APff#i-};NX-D4fv zcE8bqx4T& zH%8=DH%Ised(p4qaBueOnog%a*NYePeEwpDII2essX&MQJz3r*nga#fS5*ylF>oGq zkj)Fm@If{d<27Qb1p*}~1<`8qPj5fA_oM-=jc|&HZ^6!FYS=Up|6rI|#IRI^&4Dve z4z=!j(kd)F(;5!SfFsv=zkQl^FS3Y#=t8_nX~fJH>mrx|+wZrp_(9vjdS%y{SXlfC zKgX1eq!@NH^}NSX`fLLW*_kNuj9YmqPKz-*9F%!4)ferIEq61!ifn^@&u#3B7SB#) zF-~QCQ?5%pnIPSvW^$g$RG*av8JrgB(vM86$sTUu9$Ik^J$;jC_ia^TgeMBz&7M6a z*v?cnNyuFo+>guia7{zKM`S%GS2|!(D}7VhP$^wj>Lo+w4Wl~5+SwNFVfVGzIvb;j zTfP)%?B~~W#67AM zpBbgaXWuZuFpl58>U$cb;Rg0fsB|tO7+eO4nP4S7Wj(B<@3XL#^vAu`810!5^h|_n z^)ibV`2qIcCdrIsWEurk`&!3D4_8+K3Z*}vZ5tf2G*CS{SpP4o1 zI}Q5lmL4}XbSE@*gdrQ-yRY>~#m1(p!qVf#7jJI%-koNVj9H|w4{i1ikx039IM753 zdm{YM)6^5e-2KGF6~T1>7RQE+|M7i@{hRYgnf*)p_CM_3b5*qc%b73tZ&nqte*<6m z`~ACm<{#|ejN+vk3-(-$zH|RS zu1_KK?~ERR)nyWJNi1=C2GPWKJ3X015L|J4hM!VSx;>dE(iN}UGx4C?lT+k<@@*`h zGxWu+8$=UztnF2m9>4+K9ipMGmyH5RYwjQCR$4*vxpozy>5-=#bFcZS`8aOg2hBy; zmVMsp{V)2dVtRh3NVo?kEoV+3J9eFi>-ML*zK3b^T_b6z)VTEK7v1?4i)a)gE!+)T zIr0bi)0KURyL#kDo^s~PxD*1h$Rs6IT)_2xB=gr!FJbPK2?A2&fW(GU&C< z-IjU3=EwcF{`_>d?9%_c!KEJ|fP?(`Mf9+n`SY*+8ar?{z@NXduLl95TVo7<`u84> zF#7XnJ?12O2(->$Jc9l0I78*zj|(m?S_~^|?qS-;>bp1CsejrWgHwOO0_oHrPv=p* zp8JPWzlcIHBhFWmS2&HQI@USYA13s*`LSQ6v1T=IcoYUIxL=D1yn^Vh#9cBVus@6l zkaU`b?bXdr|7H>W2E8b;M~+2+LfK87wCW*a0@wX2!m{pmJo3cAom8ddoxJaLDfKI* z2r<{rZ}-c^H(S?e9p9v3UcO0Be}WgBLbuCX+lBYb@zFQYKeOF@MeO550FFK0np*wwT)!3S3svME z+`z#4`@O%f)FifX>!xy()@X7EH`(t}N`eKl?2T1#1sa|b@d4L8$t~NUB?7f)C_Umh z<~7vk1LM38z8+zb5tWpKqQxR^k%$&s@Oc3TB=_F;5`fv>wEWw{9YltXc~xD`dtARg z>LXI3d!&pN1x5@&?I*X=Jq}qLy5(0zJQs^=6!vTAS8{nKeC2V&6L)#reRm06K;LGbR+0dH@BhLVwqy-~ zzDabo5r;bf^rcg+>&$*~Bx_dhh7h38?-N6qDosalR8xbOr6S6^(T!ZqmE@xP3rhWd zW6%qRm&mClZsmv67;l7>wrECTRQQ- z10t+jn8)qhiuq>xqp9Tl9;Ns7NW64*BsLtD9#mGea(VGLJ4-S090o}J`j7^Hg`RyFhjV~J{_}W4y^jv5jH@)0MQm$P zZ($8XJFwhumFM)VbDSw?iu0fNpp z^v!{!^J9zdHL$a4XDdW!7Y}l0qeW*uf;wx9&SKEn8s-tF2wW49HI7ea7&4U*LF}4) zBZ5Y{m8MO7cXa}j6jHyJ-=_}e7SeC_^IgIE--tlCd8(R-NntLC^La4B0GBuKry*O@ zkiOKw+ofGBzGYxk8Pzya3DumCsAlmY71cERl3(tHANb`Cc^{~zHc-t+of*|2Gs${^ zYWf4!geMDBlLSLj*U0sZbYZ*_( zSJjQYn4CxLE11fAGcN;!!7zpx_;(wKBzz1u=5CvaIG~2?dja?>^S|J)r(RP5c<;4< zl(ztY&kBvd?$hcI<@z?%?-?3@HG9o~zeaPDI5esKclc|>QX~G#=9ZPv@<$W=wQ>pL zFHpuxk!UfCTU4$p@4R=;&lmiJwP;uN0&#u(g1U}ZxS|~u=Sjph``;t3BqL?sN+K?m zIB&{`OT|`q&SOG-iJh_4-?H44vB*7) zKUx^^)mAq7nA()Hh!DLhp~;XkXljT7O%2h|)L!xKoDi$>07kKDA72(hkjz^Q`9PBQ zl)+9N7&}2?8eiE^ugV?`I~gqex!zf0J>PDLorIV+Yk9c6;_YCx6Lm+ligxyT zr_PpWrxIP2;;R-lt%kNn4zWkq>xbPes(iL@phR^`Up=7Lo2waJ)a_grU08P!?2g3% zFAKTnV$oT8-$03KwxP4pqO-$}vYo9hqRyh$BA^E&o^n7RSr1aLcZpvA>?6=BB&iJy zJ^uC<_c%MK$A{2k!diYL-+arDWW`%R4A-mBLtoN~5d#M$;+t?^0$&$_AAW2r@I!mx zhuSoW);tOO?p_iReYR~B{pqW0AgsAYD5h4Xa>GY86Z=(BHc>$E65+^U^N(a9w%aDIwKcuqoxH>#5*haepwcdN zYq}p&k=AzvNJZ*Dqe?|y3LfvdN|&ycQDBPHqUiWxD~AwqY~4Gg*nj zWPb|=6ZbXcwi^FW(3vyJvmz=>687VZq_xU+^ksyY{d}|NP3^xFty9%8J2XX&SY{3KQC9v|2w)y?1q08Q6QkK; zj%oIkX%cug{sMLZVL|}I$Cz6D0$=U%$j-~jnV#UcMN6H`OC9Z;dp%4<;37bn7-JDi z#QfM+Jy;r3M9|Bg60K6^)>VQszmMj;7U0sBv4y6ywMUeY!|-d*x3B0Vg)z@=C79-* zX<=64=aa}t!?7|`!+`l1oSte13!kYQKEp9UCeK@i7 z-4;O)@a#jjJKCL^6ls~-F+0g`Z!G(1v99A6{0#C~JQKTPIe_Z-0IK)g$v_p>uGC$- zqmvL#6~uu3nU(^e4g^50K`TDBjRET8-6cRBw1vP~H^9O1Ed?Be{mM3GSOzT*knGe+ zHp0PKXjsYC^kfS+(fHCnd=`!{du8D=1b2SNak7GCKLG-qAnl83rU#xd-l;|S;tWy&d33{7QM0z3pE8`&k zI>or+5jMHHQO-7RRye4;7Jm-8;CCpwpRInYqQw=l-A@fWr&4cpnw^vAzo!IW4~Jg} zjnWSitOBV;2qe46?U_;NtHvcomZJGDWkw;B;Wf4hjnmv4R@=NQtSVXX*)|?(pZ^EM z9St|o&7W)nR!J{Zts5$6LZWBN8LBN1)rwTyb4HU9JrZT8HcC`G$aSjAt|0u0Wm%a0 zm$T7&<)lplI!5tQWyPNbdRpK&RJ0i?o>D8W7Znq)8Y=!;pjY&&6`vIhK>K@)I4q-( zpyI%BQF?yCsaYJW-Gi{&>*DAR7k|YgOo=Nl68LCYR}(qWwDydR_7*VMeS-#3EjH@4 zH^STs8wm|v{0tuaLWI?)tBDA!h3IXj=&gaFw zG9o_0LJ*LV_PC~HBwqJ#WCUD#k3_)7*RjNFndE7_O*Dq34)yDEW&}yRw(C{e6KmpY zMBwdUfWT`Bs=d}k6L{@;nQz3{4FP;jMxyaHe8}_g)p9Et2MK8*9D_?a4!0yWI~iUI zxmU(n;Pp@A1b+i~PLOXlLq46w`Ty8^53neb=ka?12?EPvz??D16^?Bj$B6aXMLvX<yL0&s=y@_xTT_`LpX8oZRItab+aV*jR7I(lDdt9(+iaoW_Tw zYb02hrC?z?l{J+=TU}fyfA$(*gwxChg0&eK%jM64i;ITj^#a5Bv(A#p%{qqjXSIrp z`Li_((9UH0U1nzWPL95LlKoHjDK{ zQ;T6eQO){TPc*ciSWncpoNhf)`&x$Ti9&aY^+ZW!g%nmo48cn2SX1>xz9qPNq8+>0 zB5%=H)Fuba94VX41r`MZi{hOP))N&jtW!@kWEVonvW@_uM?0i?qO?L{J<++H7_i)o zkY$}VxbXDI9`haQiL%BFt4SO)M(>8_%RlqXa2?MxV-^k{!80RuPb$xhy<-?NHll3c zcVfncJ;;n+FOV6l*Ko`@h&LKdnc?y$e#>L#5N13p@$=Rny6!Z_ixo*60&Z+K&5N=c zPI&8f6TIj>Tb~zO`f|Kz*hk<+?cG`AMf*a?3rknzMZ?-6FG`ly<;B%-L%e9aUF1bf zDS;O&w-R17-))K)6^d}Yn7D)S!hJVt(%r+TNiD;H7u|pt%ZeG~#q)eRyr{n&d2zLd zz>C-|5-(2Y6M3jqo0B_WZvf>M-GL(^O!ipnBes2H5 zW}7iy486@EVAE#Py!iN#6As>Nf*0dv>hq#&EshrsJq2F)?#d!BO65adT&<40aHuZw z;%#wVUOW#o#EX)fMP7sy7kDvjBjJVrE>pbtlAq&6%Pou-19zb|ZQqaD)ISV((GYks zq>w>g9L%l53;WH;i*;25UQF2_@ggd>$P2$s$cs-iWV~orjOWFs4d1I?`J3`pOM+P5 zX8lgAKmJO-YLFiKFKf!*c&|CjSs z2Uq`x@>MY#Oy{eDG+chE`8uQdDwk)RT*-At^HqxHeEw^#>3r3Oa{3IOZpGDm&FmsD zxZh6G`Ks4zF&VVFqC8)9siKq+dQc7%LX`{YCWM@bvmW=`PAOltmQL2bqC8(Um7DA! zo$NtD-N{a`CX@N@G?1@qL1)!gkn&a4xfutS#Tg^?W*h}G2JXa%Ph}hDR9Aa${_XQ|ox9&#mIX8(Q)<5^p?N9DqZOor6a*1;h zJ4c)LCpX>Tgeydw@F#bN=(8+kFyH^yUSQeen5_1{DQW*(S=#^RBK5!J)%7P!g&6FA zTPgLw{7-l<_qxBw+U;RY~HxYJ!li)n(>FwWd|lh*&t<+xB0r~aIi*8l9lZ!)c-gd z-~#z66}W(Bin;<48tZp}@jE5p$F19W9(vqUzKsd_@X2ItY`oPs;oKM-swTbIN`B;W zRFg{1f|@9o!U{T>#`PFzN)a2>lxjrs?K0GqR^w%waxNFIDV6!rmo*AFnFM~}UQgEa zp~VnRADZA7nwWWg2pPcZLnj=5gX+W8T{3;J>dW*Y0Htn!vpy6mjCP{$J=BMc*_=Lv z;na7jK1|t$`k)LZ`rzsCZ|OrVD;<59x)k-HNC`n7(xYVh;9w={!^0)04?V}p^xU+wOle0Lzd5pI^O7+Hj3+m1LF+^`1?f+}_aOS^c=BrBpxu zs;F2$e$_#$A8%g}BZmTuWcA~r#pLzly&VK+rVa6V<3?`(TK)JfE3SULQWUEn@4sEI ze!Oa=q5AP$3&r~J=q9Xw{K+C#KR#qTJ_a5e@iA~14UW-z@@Qx*vdikn7c>#;$6K4} z)Q?9mM99@CEI=;b0#-j>$xN&tw^)dLiykH8+Z}tJZ;cjwwSL_D@6@c;k7qHyD%Y0- zVeB?w#gd$vj<0-s@gV#Qhr_{RVtlpVQI@a2-HlQ3G0LvY`F-N67MBf#&LImOhPgJ53(~KUDcrHO( zM~#y&U`XQ@nht``QE)s6f}f-*vjIG@gr?!d^HyKcbn46)lpWC!0t_1At@eS0Iuzt9 zXd3?&0Lk0pj92e?Z;L-Y%BMqm9Zq^}M}066MQ-68wQ?Mls*4%*yN3}+wL>`^6~TK> zrZ_sd3Ki&@Kf%!?a|1ZC@+KcV#gUj$rzGNX;J67Verf?`WQ4 zxgkNbyoms?IYh;hHwgfvFBo^BAzym-*_cF*%Og)s|D8ulB!9|@iR5OMLL%9mC6X%= z$30HH6;jil>OjX7E6>mjb4*R|4#!#hzswDxt<=`GHvfn3l>?&Si!| z%9&-Qu@wJL5XnVFpcMa$A3BcrXUS5|e_HTRbEdP~Va7R8(;lJb3lJLuv3@Ll_yA@- zWO_?@<{su*%ss4eK3Ior-@$XzGmMppJM^4jO@nlURmV5LGxZ%Hnuq#6EIq2z3EGZm z^80cNg!i_<)7lkKGQ#izp_jTTQH>77A#w!`Y2Jw^(K{U84Te`YgMPJH&ezc~x+1o& z2|a5ieN%Zx#kOO7bwrr;gehLpp$NU}nzZZ;qqv3KsmD>Q4~Sr;MwLFS0k_)6@OaP04|7ng+dF*z`827$9;0cx?W_$sjmz0~I98ECi&&FmXO1l|LTEVYIB1f5 zLBnu7OQMsm)5K7AfG4gnK7#yIPuAp?hKr2v^maqqi5oIQ%h?s$-(*|*tyVo{=jl84 z3Qvop+9VP$xk3Qj)6kYkq7wrPkVB|D$aX*Sg2oQm3>;Zn3hCSo{~S!?LG;3a)>DYq zDzJlxfM8x62hejfbXFg~;Il;=#CFk$Hvga8fMqk}{vwr}K_wUMe=<;?_n%xj-fwFl@IH)uB*{Uz&>KLV zD#rWKjwuysubA+`(VwEkpQf@fdlYkPGt6k?Sh(ei_cn?+OB!Z}If`NSP_4BXW>*`C zwA?*i7G@X9ArG^^WC&PJnM!!SYm3N%5w2g;6L5CL4zi+}E~%+nck1#wX`QwTpP+5r zGBRh%7>59Y{khGV1APLhvbqbchHukZ+!{D_kELGq;nUSKCj2-ka05%#uj@918B zExtfjq{FN($l$+Q-0&uf(}|d0FY@+;hVtB0hF0lB3)a@tTk0(*5y&^Rm!Ip0?d1+f z(HQR-#TjDHOAGZGGkl-B^yy=Y!`_S;ekHH7$>|Z#yBS}`+;CFpBIT&!u*S6 zwgcVZVO$ijKcY8XwBN@1(-%$nXZ`6di_re`R!{yH{pn*usXdqVrw@4|^`|#J&ei$k zf)aj%{pqhyabnLxER6K0pE=EmouFby`_m7`aKcd`7DoHiy$^GO!#F|R{`9T~IKifz zpk9BvwO)UEe=n{-{bo(BKfU>8IMPI?KV6aCK!5tJRInb(3L$7FT3bsU<&#o*8!?zT zym6Ib+7Rl$?Xoe@pB_$UyE_qQyKE)RR$Vq*VVJEZ%vS9m_NNyl^RoW*6ie2he&Pe< z)0F3J#Qt;(8>v6N(L@XGwagt)UdwQJE$eCOG3)*5MKxbufOnB3co!`~n0L{W%$w5M zUHwq%P`~(sa~Yi3Hy+m)B+Ed5dUY+$(QSOeypU>Ir_U3qV41iBdxFwvkt1?Vo^7Lpw{sX{a7-p-5h>pjB8+lf`)Vau2-@b*#cF zDT&m#(CtviN~|Ry_C=G*DzPT@Ku7P)cv)Dyzrj>f5-VCu@$XW1+HEP?Kv&$0_8^MItKnapR|%lRxZMtqhS z$!8hB`7Awkd={22=p^_odnKQx74unM(Rb%be$>z(8w;O+@zetIWJa1{p-hcf^kg3U zah}X6e1G|jdNKoonJ04@CG%5H#%&gYp_(u8WGtT>_hh(if-z?%!jv;(Y!hahWH9Q_ z95LYtnTzcD*2uh7ENza&~5phVKh>H2Nw; zM`MZBN^~@?jp7{*mq6lZl-q<4DdvyDm3umY^?siN_IFQC#S=Ju@`8b@aF!alSJc48 z=omP7zTrN)-kkCU`d{5gq5l=yN%FsTKj-c3@&NKu&Xf0=?5`!ZHC*{9!%E+qJNz7H zbELCXVkIFZLGnhrRtrvCJ7@6X*59LETpjS@ib6e90D5t=KU+~R&JT;p zPbD8D!@&I-e^2z%ns%U$TzkopI|L$KB#|{At*ImTlsR(l;@;ZTsaSO)_O3lTa%KTC zNAAJjyeha0FQf*%evebc-ylxiQ!n)uC`}>^cLg)(j;SVi{xl0dplg?$jmSU#+g_1K zt`p=sNUlBP+D5K*jUtKbx9$VS% zfZ{K5e9sy?|NH2IsP|F75Et=q&6aPc=$Z})aLCz&zKbiLi*Bxu%MAFwUT)!T)a z64nRqZun>Qc9C~%#Cp4sG%L0c(D$jd5Kxik3^oswEd=EHXeC<+c>6>MSRW7_2)th`TEa8+4|3*OxL4lzW#D^Jx(VUuE#C1St0cihHR?}H)S&gI z>M!H3r%LsgMF+9^%iilzn_@+gI`(5v zKU9+z&jmH9*hgkR8eSCbN3MRTDH>0iraZqbi~sw4=l-^#H939Ai(i$0=Jg@EDz6U} zaQFzS5AVmx^r3VmrVpMd75L5iFr)?DS7$BiLy=CLK6JyWM^k-RI|}t-T{EH&0}}r& zedv&&qYvx)pguHA5%i((Z!&$TlpyMZMIY3Mw5Ia@kDI(cH2N(w{sh!#PkQEJCakSw zwnSS9!c}F1HoB|IHjW~Hc+MbyLP<6Jx(046-9c@6J z&Ka-kepZdsz~MNgEeu&=X2g5Jy6!yH_`2@#IIJBE>un~l>uykqcWIAQAH9mQ-yn3Ib z&&3z08K=)hJ7<5W!h}b{KFL$v#F4pFjm@YRH2{9`6n^Q6ucQ-wC9UWy@uaV$G5qCA zUu7TqDu;+kit@G4VZTj*d$1k%fbGSX*@Zq}O-AAa*2kSZVAfX*JYZ0H?yhp7l^W!S zwdi1xA7}!C{ICEQeaH{A#)kYrmu*xo2XIkG_X^FhRZZW5D=ek*e0ig7 zqMi~PY^PLsSscgwF9E2>Uh;P*@^_4o58f!`gQJCfaFmb_ju7&}Gd$HJFds~QC;n+* z2yAi_1nT9VQdj(Uwd~(Zi2tS*|II=AUF{CBaRRES*6BS4gxAT7&#s!jnS6px)U#qY z;;W9w#hC-ExOB^$?$pyoTi}nmoZrQTmqF_|$-aVQ5L=+>VJ`0X|KU^pij%>?N(w^QdxPOuLrxRD7~qJkm(jP*Fd7$#^*1y}NKCMPGjmkHjcOFtu? z$O8v|Vybc$;LZ|Vmy@pjl!mpRmuq0{2e!`Hi+lKBI|8o#{C>q+vCo#S{k(W=Ev)_Y zyn<^#1D{y2wVxG_rL~`%zWmxxg|2W2!dgUB^iV|9{YK#3yMlM$JwaIeIRd$wDmx)p zvkXb@rS968@O$Jd^2fL&50y)k3*?XHN5~&-W5^#}qsbq=Bgh|vL&zVyVL69ob)>Z- ztH%b`itb;=yjwM2H0UeI+rqaE`ygHBt@&``+{W!EpG|UO1cLa)_>w1RoL6|$3}WwW zRMSu48c(TeX>VYSXUc`|_l$SRM<|Z>6@J5Dv?t`(j@x7dd)Z(X`5SmkoF&Uw&<9ng zsZF2_*uYVaDM~=E(?#+=+##jsuBwzewqRg>t3(j_)$j7kR3d?45qqD_mozgquY)4?WQ*^dVUD#~pV76Iwwv$ADFU;1E z%$Cqmm<=+%!%;tc_G+DCIe#%ndN;ibTfM6cQ@MSCv?|8kPRDi1s`_+B2Ri+p z;6UH*V4+AZ`-QH?y*wr^wLPjwcdnwVac*K+RXi1`0{eU2#piNKC)qOFxCH*0yaUsp zArU!xN394P?oyA+(?@-RI#uLJxJ>;jSL#<)p?;MM^{a|$#=O&NlV^}QMrTthdXuX; zxhj*Z47rMuD=)cJjMLTkhC)av%C6FtPT*a-(WusK& zB9|SxEXeiQTB&$Tt`u@TB-br+#T$wT#9FH?#RJ5*QMr89)GEVV*NoNR6P5?pwXtz8 z->MAf<=d`-Ar)YV(xjJPr8Mv5=fPnWVc0c=+{^D+g729shJuwqa2s76h!xz*Q$*V} ze@}YHH%h6Cve2|Xj;jixX%M>L@ze!R=Uwo|q6@AOTyR;llPllsR0WmB1s(BXnm;FD zOXvKV=veph;vDPNc<1WWvHrV1TCFB^h-1C|v=PTz1ra!F8mKZO zuc04i6I2pa=qHBxJw+(nW+A~PfR&CM4xq3tLaMqoX zt$(y89?oi*z9fcm6C6{>7pgH27%QthrcNQGX6mJp*;kP{_GP0^q1z4S6gEGDPGP&- zqEi@lOL7WNwBen?yl~$HxbGH)Tyave(Kjh53VA5NZh^eGQaO&TRDNs?W{bpNl^RUb zS}4XA3M`;?iWfd{Rot=F(6j_TQn3tBAD@?C2D_2zPPfuGgDWw&PR}-Aryx_zxK8`8s&BDs(-{}?#AKJO}^ngy!ZLKzFEfcN_)^dAG z?1~)$mhjI5qOnY=L5*bxou1p32gIJ+y@~i0`?Z!C%ND2kuQ!Iyo?GQ|k0uj*)F-{v zS2Z*6ymy~e@VO7HqxDu7g!n!L|0W0{Y>Ch*zS6Ho_@@0Ii*dHc63vxe=GVs#6yg&| z1#q~MUmw%iPrQD9W=?9MtmAiDA9Hs>>)}JKN9iV<^=OVa%1N!q)?TPC4XVTbkAME$ z>tlOc8CxGK62kBQ*uwPs*rw@x{bvgk>tofg>aUNT&B^coXdy84#Hy_B|F|F5$EGIY z`q-gs;`-Q{6T0hT%dZ$(AG_=$?f-Z}SRX6uO}KYsmC5}d4|3~c+7@hm?9wW_|6>o- zCRJ5{Pnsj_|9HgU`k3Edo%OK;K1iPSR|N9ZXwL2bxK~^sE9`?NV|5kz{*T9ataNVv zL(d=RQi$V4xmECNJ#)-7FJ|TAdC>@mzi{MuQSh{k7xqq!7hO^Iwd42U#ex=?#_hHc zdGVnk#|wYF(OXCShJ(A|H|$ZF@S^ddpPLsmyp8eV#W)TDWq&ozi!q^`@E0!=yr^7B zzdiicT`P$fv$d&|7k@`*kr(U!Kwh-JjJ%kAN#w=Iqq@9URngFXMr*u8UMP+Vym;A+ z@FFAH6fc7JalA@(0JoiLiY_A~W#i_$QFUmIip}Z)UkK;wlXn3~HWu6zlxp`jn!Qlx!FH(-l_dj!F zya++rOW%nXvB#)?F^TSfR+r;NB;M!><%KuqUzFX-!~SP+KQ}Krc^c!zq0#*QXC9_` z;Wd%p|IEV#FPa$GD}Qhfe*d%20xwiqUr!de_J;_ya$C@%`Nr}cVe2rrWM{M@{7aW}?`*&{gw z{N-kv7x{T-WSN@@UUV&O;C!RcoPPoPs~|6Gtjr=WJa*9iz|J5qDxDE|k!znWFV2-R z#ET|wA}^x%3cQ%pi15O5r72z%+R5=^*e{G1ZYxon&bOiUdZq9zSK!60-3EDaXNwLm zD!3spPMi{Wv9_Vai@jS!UW7NM^?J@SUiANi=fz(Qe<&}`s5o9MUV%k-ndik9JDwNY zarj)G7wY{oUIg1PUYtSM1>cDmkIb-+FFgo((XSfEi+gyZg_IZ1TH!YwUXt)4X6Mh% zi?l|@c+q_rhk(TmO!Fdn6em2SfeBvhKCYj?NO{NcBIAv~i_R;u$P1?}$cqyvkrx>! zL|#0M)#XL{F+=%_Tn$8C_{R#o=uwaG!f%BsUOd~%@uE>f#*2O{P@7h?KyB(#9M4+? zUij`X$ct?oba?TlKJp^+n81sGx)LvDY!G?Ttv>SNO)(iSYVYQGvAFI(;|1(RDDR&u zW|$etj2Ry4G|hZF4jYG-V`-(_QG%7u+e~03>)mu44PwP`H=RyDT?b*WzhSk+HoBhBMn_l2Jk=+V zG@tbL`12Q<=zhVcv8sM6-7s-|%*eKFBl3CDo;pw3Q%7ht2>VE`3q5rOak>WhXD_;` zA3QU{)-6s42XV|va}@zam$c3(q+%=jQk=4lR?#b^uOa)mQbvlgeDTQ5S&3My}%A4`}?GQ-Vo;cWX z^We3uRDAubmF>t^M01+(O05xg*(+GbLfB<*5}7WgtvZFfgYKW(c<4IUBm?uftIuNlvpa0Za!s@2 zleE8$H+j^c|6eWj>k&;D>3*A`9g_vIII=(5&1%iN@jeaL?Q~db`&0KH+8(G!K)8^am3IJ zbAjb=QMMhhe0-L6x|Sa!sk_rP?ED&~5caH5yh0yw%pipMFD@L+ZP1i-pfEq(6qV~n zeggAZ8;n#){7ai&8#ymByb6C_K5|uY20yLdydGZ zjp5|pR-CuVUxAa_Sd(o5b*X} zCV&@97VNQPp+A0L-N^Kv>GWsF^j@J_b6U9&uKb(K<)&JGg3R8Z9>@m%B>6|L&=ck; zsPZ{Y#$AfD5?%%vBVvc)j?>5;Q>x&X%)VdpRW$-cd|JhMygt>L$2)NuUH@%@&&HiR z0N#24-a%^-yla@pD|AWkUq;beouStj--gqgy#jhCS0)7Y!}EWaiIoE5^YFWK<2Gc+ zK_qaQxDD9~jP{jHs>&(_oHz1xo(6O0aK{57p^c4*i{@^ z1x7;Lr+Z%Tluzcca~QT*sE^Pg_i#v67y?@j6CWGT4IY>s7$5HuUI9FK&CE1&;r)C@ z`5O5C74+O-#9!9V4Q?!V-|22%QIY|mTX``zo^8+NoE_O8*`4aFMPJDJnX!P+3G>+5^_bfYGHmvBTex{r5&&OyTB@3!=3afk2zl`#Ym z4ictyZ*}m`u1LF4$xEsGU)rB*4ER_%;1JD9A~QXvAzV~4>GSp@juH`BfP5p1J?lZeTk8j_by=I*}+GA&2oOdFUt^oRxY zWvl@clwl!M&9#k{s^;dD=d0%KmnF9hA-7CvEY~hku~5r|ExPM#dM#za12Igo6_{Zf zvlJg($nTKbEpr6JQ~(Uq#pP(2E|K@MpQd84h^@pzYM5ME&*bp(Xqaqw35F@z1aXe zX2rU%;;q;b7h3P;4FQxlaQiCk=&c!m^=?9dadv{tj``zx6Os-4*7I{>KQd}>TY@!d zj;7DgnF8`Gu-Jz~92~!Te$MtZb1twrfx}de2F}m9`p%pSED})A(UF~>^R$ud{G5Dm zSX7aMg1H>O`}sNT+hCh;tv+Z@QVVkCM1fY$iJFt~bx|uDIuLW>w)DRhN*KyV|LF5` z+LtwUe$M_*9Ed-Z7EOTe`8n#IoZR`+vLHe4{G3bM_470{=W*vLbh|Aud-xKg=jZ%Y z8vXIHJLK;E<{eg|yFYe26c0ODuh4b(pF2awd5MAZb4JoxopBa=eoiNDMjJZgp5?kT zE`=Ey&p@Y z<2%*A;g7GirS(952+-g2Z~!fUFYAK}Rl0snROy=82|yJK|4;hkuZ#Rw{qe+-ne@jO z_TeBqu((lwyy*Z=&aJpnf4s;*PA-3O6aM&+E}Z1cVkZ3Y4%Yhq_=*(HAD?thVEc&0 zM*Z=1n+*8lAyLS)i^b4|{$PbJbonS<7dl5#LgE37C4aorCIkL>bvoG;I@wM-+1*9D zlN~QYCi`u1CjIg4o6sLmT*UlwH!IN}pS(!sk00A8`QzH6yg%L=ZaH&trv34Yb2xw8 zxj6I3Ll@(N8(I|~+_jcqi*AA~a+_z+AD=f<#~;666b;eX^@1VlTv+Ch51J|3qI#Bw z{qbg!h~q{R{&>-uqRrA|Lx22v5t+?8AIaOSDupxQkJlUdKk>(%UodL_5rrk7D%1Y> zyXTxgehi14SAEqVFY=uC#}jZ^g35qD?vc#<<2O+7f{OX$9c#$^@flB;KmHyCFRQ-0 zKW@1T&B=-mXioY&a^}Pqt>RT`PM%jnt!!#R%*oC<|Gz)3>yMu(Y|I~T+nfV&zk){n z@rS>1at#Zb_Q%c54V-Uw#7gqV&s`9hJub?qKVGLGdd`2Zk^AEX)=J*5QfHX0(GDXGEd4Vg4vwsW1Zu?gs`o2sh@B ztEcMt<2UgIIE`E-V6aU-$sg}GRRr83g<*fZ$yAYTLlnri90g=-dlSL4tzEuv_Q$i@ z|B}p+DQOWroI6yR?|*r0&J~Wl$Kg9weE&mBkw;@uz>4x7su#k)Zb zlXy2MKMKxMarF)d8_GPP33nKcYNBkU>VH}95JGNFzSA46kx^}|IY#}8w_ijVb-fg7 z)zMFcQOl@9Xhq=$`Z=wG+OUq)0vaA$ochphnCH`0he-^ zu6HQ+Q6HAw_i`IF^g1QLa@RuB^$w?VpldW{iQM7p946H}oJ+%WrB#@&d-P025V&!n zsd|Tjbo!f1N);pXXr&I4x0N;kw?nMG|=Q*%?hmGSz@2xMH*HFE~)NxY1 z!(vPrv~`quZ#Aa#NM7jh)q00DeST2A!`OQa(QhLGGDE+TU;R~-*P{HeujE$?+~e}A zc4!6sGnHR$eTUDl=Eaf2jpbJt+|bXj7RMnYbn~l!&3Vt~SC=HR_tOC71OJu$>XbR? zpQg7&_IEJj*xv?U)@aK9+eN8=`kt^qI^_Rkesym4|7w19v_mHItF>BkL34I{qxsb* zZ8*96c1H87huU&-`|M2QSM5Fc{V(lIPlNazxvvS-15)JOy^gJkLB{K$L*M5+8>Dz zZplKl-r+SErmkR^?gtypuT~4x$*)ebMZ;8Ju3(rxTFdgQwt-T;1DV`Ve)Va9lwX~1 zBENb#K&p3mgh#I_|t3U?~7!kIioRPFfdIE+Fm1?8eDEir4A)aDc7hgjMm9bMS zS7)bni^bxaqGU&EV8-P~J@tM`3``@U(J47F=b^z=k=B}gEyWC`Ka5$6C}RNxSPw8X zJ$VxX-6kZe;Pm4M=0k#PjO9b_*5*_RKlwI>Wr}>$uyTw5vD}q=quh@JqiZ9ITv0v~1h# z`ORHpPI3k8e14m!4`Uti^%BUt7{RfrJi4-1ml~|3WB+{O&>?Y==r{M0!mqKD;?jNr zFG1hzj?Vu1?%YquIQ$P}upr{W3&9 zy>Tz5Mes`f;wV^lkSkq$d#(;qZldT>=$`xUKky|cm@`gjsPZDr%a2Y*d!hMFB{ zfJ|a~F7|d{jEzC3_WbmQ|709D_?Ce=_E)PBnYzgp_~*|ZB?BIf1)0?qFqziC9>E3@M#%L(7j=P%C{?xWAQcBOPXGKIsp`=vL>f5gs=DLUDs zO=@Z9_`b<|a=sTfnk9}3u>u9;j+3puY+e7glA_Gq@=-cw(N-voe6&3jC{Bv8D4V^fv~Qntej-HG zAtqv&Pdl#f-toN6bR&YLvLkbe%um}x;L`HoO){<1qnF>N&>}gn!pwWKHzZWP$#M_S zmK9dNP08Tx{)9xd6<~x2@6!ppZffxV451fc#FvGxE{tZx9~I3EG@kih9CY@@{#k!- zmZPR*Hufpy!m?K@k9JY^LD1|W6~1|$%B^)MMw?gfi#G%7-PdrhJ&aeJ5C?h%iovlV zGE&4*xjuZgGA28kG81%Rp#-EW$lA#u!<@NCz9Q{6BWCV*fEqG3lHS5r^)&6d6meyz zfn`8J+>%4QQRCS=3%&DT6cwy@8(@2XRz-GiWnd2sTxb+&j&r!3SXn^UmcC=VJ+DUS zL!-F#cW{sW9h}_*TlyFS4ZbXmRFkzkQJQCY)EvS$<6YUd*ls(F1N>Q)UD{tC)lIM zy@xh9egM>ecXzg{za>j6^Aup$lON!3%B;P+?0yfeG2nXnTj%|kZCL;v3TOJx<P*^#1aUtFC{JCgg%96>C7Ds3)}9r#^4qdFN?oT!X2 zdb%0Vl&CZ?C6I?BRj#LF1jNF<>RnA zy6$L`n6Ul78=<}?=7N{eIaW9|SC4ckWvVRAx z+plsbB-zc<4w2ve5ObR$LDqQ~2f%#jbyVW_K4(ZuS$6}3d)GnCRb>DW+nKP}` zxMGq_y?%rp3j?c@pViyE)TFGLHF=e!eprfU$XlJBh>WgXW-8!(1`zWvpg&St(c<+~ z?5v=--@)gS7S-dl5r0{H9WPdUea_V-Qz|__7>pOdAZ-9x`*nl>AK5Axs;y9UN5DUX z?U5xO8J*Q$fWNsBA#1f3x7;u^8dViyROA*_zeSeV`xlGPtK4Y@D9Rk=icqEfe}Vd2 z`0YImJs3)KMoU}CeF-jY3)(gZbh=g$VwPGy;%ev)|#!cWxq|D_IYFs9E4A9S~o(lS^R9lhL#aflB+y`GYn znO1a7YT(E78>Jee_a{@p1F~b@H1tNPDBg`Lfd^4kXvewDBK_8P|%~5r1nPjDfuhgBlN>LF$+~ z%Mc1yu0>{nU+WtP8uU6k&xzyz5X>adKJEHXL=@lgG;ZRXM?)4tgm90YftEfGSCv~g z+2mn)zPU$H^p6h%{aoKH#wX?rjZs`#QZ~hjW)|a)AB*E4!Xj_Gw-;3@V=?QVQVfhj zg`IN`3M?#7-+vPB*HlZas#-VV?lwG43<*7@Z&FjruPe{^ZoOria< z*`jr&%TJQHq#E|Uz{`}5zmL6Gm4Sx;y~&Fry_`4t+^tP14m_XU&CykADg!^UutvHMqKy4Qe@~_B0D4>W%F0w;FHC}dQ1|wx_ht5M@Z^r{+Ki_ z1KDhll3zB6ql^gcW$X%&wO;@Br?|+y;O$A~kl{Zk-^t|Jlr_J^k)T_Ky5dTShh`ng z$gM2qRkGIoi+;DOk5; zd@`4rKvf`vxwUc&hC0ojNF*K`g`!sZlbOZ6jF_3XX)fTPD;%H@!KD2oz{3ay&7ViX zQ;$$fusxOEc_IcVAC~_OYt^&rd_ZE@oe{#q*Y&Z&JTK+gH){v+E9~z3ADWD%8l&2N3w%1VvpFH z5rzGe<3y9o1HN^u35s%;Br_f5sj*Ztu4tF&-tF{$|2_c&uhE!=vB3nI?Tr*sG!ug> zoBg>{-%*0k`#;Wfl3Wztk|fir7!h8q6i z9XxY1x0taIc5cE?4C39km}w$maGcm8S9z{8yo2=J@|ST`?XwU!H~6iwkXDyX_VcvJ zT!UN+{A)1ySc$X0l6LA#yXtWL?&Zkz@oMq57Ta?P=CkAogOOC1T8A-9j(LlH&W;#9 z#KlV;!iG#%^|0>w-z-D*5Y(1I29;sPkNPoYLE(`Q6@pQF-z@y5yDySUdbV#CkVd+> z)8<@5=Cw8g%!a2rG*`*!2}}Kd<0`BqgFx#7zjZ<8EUpVK#E_k(j637b>uruVfz>U= z>xEpGz~ZRPZ^UB*(Fj2D{%cKXW*S<( z*oV4@dY$-ecU$$F$JXj}GELG|KXO;vl14Q&h^bscn z`M*l|yg=OSB{f>|M*41Qyv@FHZD7j-nc!u11!pB;bE~EX?;TgZ1gMigiQ|teYf4b` zrRBlRl8tv?Qk^#R{hD(pZcQH9XFmo#aA9YTYsv&2>0Vbbddi9gh7T zOiK~{-!E}_Mb5p7n~z%>0>gI^28sGTA6cs-T;2w(ychT!lZfO=p4aNGgt+2mwbX)n zoeA+JVxtEbA+7^M4}^ls7WRGeV3qG-!+71#1NA67sNr%}e;5nO)azbOW+pjYJN(j> zcHN*{D!R$V3DDaPZDn~&UNsFS=`(0KkpCWGn63SriG4<{ipe+1)`@c+kk;P=l|r1& zQtwS@61T^;BRdk2Z-jRJD!}#+vI^Albbk&BIl3cD;>)n_m9Dd@^*mqxkZe6lt;B8R z9Lw0pUi7!XoBTLQ-mReaNk)-}e~L)4)AF++s+03a^Y40j`p@t3g_sLlPcuIY)+kjLg|_iL{QRL2JtiAwdtV{iyZFKW z5$@ko2lmSz*9Th$GMjzxeN?UD`97VC>*>oO1pk);gH5&d?E46OcyG}yM9)T=v*`>Vru6J8 zmn6zes^e6)HV6Hf)&(Oc0N+c|@DOpmcRrurMVlSH zSNC~rtJ~{mzf62dzscbdQs(&2&G+~^b|^eZ#fYk>pU)CnBrE^0UJL$CUo7Kq=A&yX zcO6G?yD#B-`!bt=fLw2CFSaFKT7wAZnb`1)%;L5e ze3J5lHc77EKL!eZ2+PTw+z5PTGZ|7PJd#2d*-gs{7d7p)3=&|&9)0QzV}#??{T;6ftsT3NB#N3ta@Kdd8GIuGg8&Bb@$15*#~ zJ^15^oGE+og!_fga4oxnX&c=d!rz- zIx@y1s{8-GV8po^Xvx$*JI8UT9-=)iq~Ed*98HS<#zpM-B2`MZ{u*;9Fg30ar=o|*&Ko7_15NPIaDux7s{eT4n|{PcmgW_c+YG!^Az<( z2c`JB)4z2U_nukf<0Bb~A*z=EbAP?((~a!x9{QZ%k2VMNHUDzQU(UXh+trY>0W$VJ zlFfOd%ch^AXsS?~Vo;RU=Od8VN7%0S@I5o#5RzGA=u)z2J!O6Kh4|s3@)5r7Cwq3* zRCZRd?kBTfnNsTfetn9$Ren^%bEV^X7@9|P!RjfSOG3O}f`ycfFIaQ;U$KT9r6oJK zMtbq}5(2BGx`D{92C?(=Qb9(Cz|8vfp*E5Kz3BKNY6;Yh5^Wo#aGLPIqiGXZ#E@dLMzKcj% zF$US*+lD#zgwb4UF%89Gr)PsS&~t6yKVchpdez{~1+*`%_>QM1jg0w``rTk5&OfEA z;_Y7>kq3@{^U3~?`$p;cnrC#VmzyK~2WttFUljavU2$6NW9p#v2i4B-{69lyAF{LR zzoX70 zOqzCWBWGr+A})>V(%g*C19DhP6$GpFX1EHwCXk(sYa1OmGP7izjTxL+?x^V2k^pX; z&y$}>`L&3*l-H$mNYOHtRZBLqh-F`XdoK#Zi^(_{z z?ol40MyxHtgc-=5&a#1=U&2%jpKt=HSK|B3@y%t#{DV}o=GvGp{+pW5EFs~-BySS@qeJ@q^*NG!8>q3O(_Yuh z6|RCWPs*oz;sPj^Sf6j$}@IKhS{>L;|K*yb~%3RIO zw5V3>5&aJmdfiCOgUC;k@5Ks=b=cGYTG7;DRK})KUK?nlM!xnwJi1!<-avQpDc!Is z{=K1_ib2{Osr4Y0VSYs-W=^-gaMf4`mcXHj+rNpI3#6Q_X+wB(LFX_@@u5V8a&ZXhQq7VP=EU#~1O zKtZMa(7$9+8o>n-W5rd**#lXbhG?xdkqZOpIiwpyWf$|KL+0CEVi7VzvQh5 z=n9;Ybe=$T6rUn)-p<4DQplF%UvlKQ0PHi#Kgj%Kbyk3%>@T;cB~LU@!ehTx&;0%{ z?>`{%XP)F{xC)L0?9BTcQFj~RJz+$g&b;!~Mn`|miLaY&_f)AmSL=3)HF2hCtl6v5 z!);H2_lhqoDBgH{PuZK<#Q0qH{io#oG`Fh-YjxpuV8-``yacjuGlF-)6NW^jN}8_h z_349Y>%N=j_s(yCT*I6n);L@|uy>?x3BXJYCMCX^Q%irszG3=;>ClHuk<}rsCU%JWkU2bnV zW-LttPPnU;u$_ErDk$E)^<=G?woOt@MRC-^kTujK#Zz@;jniMQWpXikWF7=e= z{mw`yV@i7>L=A4Qm*~uczESCO@lm@hrn4+P3fce7o5P+Kv4J?OQW153nwNgD<0M(r z+qLn|jshn$wm_fRf&vGVR}?PUqwvn*i~28TufVl0@6F>}G0IgZS^ikeB>1ZpWaWi_ zev8`R9~GTxR?EWoTGVX8-_fdSF;Ez8OMdMjtSY}uyAphEplID#kU}pgHoR81r8>;@ z!o)?}n$)2<@spEAU+^yfJm{Giz40>v z6z^tTQu6RxM5J%{pxrnTefV<6`+lsSdfJ42*l+pmEuYIW z9d3s7Cj{aZnu;b_!!_)xuLMhD1$vfj9hVi<`$&b1)EE-9I1smZaK^X%+$inhxt=6@ zSJ*H_(M%r=ZK{#$u$Nq9iL#||OD;Nh-dWvA7g#IF*!6?@u{kBks(rv4zc9(etd35pvExX%H(H^j+fkT!FN*h zTiHaeBx&CNh0%$9If!$13Yqv;aX$o(Yh-|AY|O&hA*Bqx;6Gc0J-nK>SPv|+C76&} ziW%yuIRg-un;k)m)M@(jH`_1VM;ik44LiRc2nra|)4QNkTIsiwf6g|mQgS%b(9342 z3H?{>f@iE!>L!hwy{&~WTt;_{q7BQYsy8VW#~VG**7d{_Mb<0J_b5H={)87;;Fpo{ z>(+X6Um-V`$6&n#40-uSz0s)xfp_G6*PAk`)X1-a?AO@v%|5o-DB4Q#z`I~w+5#lG zD>_Y7w?H9T&D$rQKz36(6=qDIUov8|l-HYxFIh6yJGAi4OYhmJ?lWJOi2;Rn%Hb@}aU?K9q1u#l)z*W|@Po>C}QCzD6dh4H5< zym>Q6bLm>)W~PPC9~-HCQD5Dp(P=lN$-t~Nc;4VwHFzQ%741wdoFh~I8$&!>{u>dL zq0H`?ErV_!3rgp)I*Ht2AzaP%@W1p0<#rp ztKVk*;&a}w>l@_fP~4f0Ay7V*SyMMQZ>b910b6DFMWK#p2rZZm9fr@OF%*0IIf*v? z_xFyW&w4*-hlz+U3Wsr%X{VL2&BhE>d@bx!Xd^Ds&Z?&53l=K@`x(EnLU!YK|C#0B znvIRPB+>e~ADkEV;O_KC$6)f#*QEQ_iAD{@p2LS?@vdw-4gi_xz;1{C1$JY*cO3A& z$g9ReM|S_%L~{_g&lS;ovXl!JU-s>O&opUduCKNg`FwlL%u8ORl3RyCq^N|l-^H=d zL!{=|>yGck_a0X)PPzPMo{*7O<`;A`9Ur>J3CIksLTStP=)^!Qw9T^m%4{LDe)S_n zWen)ZZt5i37rSUq0QWB_NCHaE>t0Raw+WEjP)ht9PP@zcbF0502kq{ww&`I1=vT)= z(`aXdeQrs0-UA(e$=k%?h4vo`U$WF!q2s#0MbiqVvGBH4E1S*6BwZAG2j$Vm7NI+q zLA>wF?@TFWJSsRD>noc_OCbh)I~nW$xO3l1X4$b2Q(uXW#itSK^DW+cy`xl(!@!%c z6+f?I#;_2v?uvBmiA^#=6AU!K0t2zCwBp#rCU)7h_cb0paQ*C!{!!OJvswC~eAJZ2 zhEnH8LupiZULI;gVG_jtIv16s;v#$N8n!Q6g^oBEBa=i~h;J&5eq@~lxo%8?zJKjF z&v}pjm3LCj#OcT+=qN|0bViUZdQE~1LOKqNV{%coagwN4?VeA)gl+lv+z14jM*S6Y z#-o-Q@#VHJ1!E}e8vVHHL!@|bHqOak@QQ$vPEd=97h5bNkwI)`J8N+r>_99(3+nER zErPXgoV)#1CwC-2bb6oif1?>8+N1FoEU)tv<#J0({V2R6sG0!wp|swDBl9_EvxE{Xd&fHv^qAeJ1oXJaYv#ld+ES;Mk4; z;IE=Qxa@T~83NmV_|CUtJ2xL?dAx2>CZQeWhB+sw7yTzFJB|}nYv$>`jA9q6tjG~H zSq|zUx};dN=D;)ac{vzMMYXwjWRZW!aF^5tBz<5dJ+ny^Ki@1k^VLZ^=>KqmQG#5c z9|@TpdQZ9{{LF*8pO=OH>5GSBt)j?vk>mM#-1=A8;S|d0*2;ZD0^vfm`rz|y97Jn_ zIQ!uDv}`g0;#E+O&O$#2$)U@2B1j%;qFyEqHhHM%_V7DsxI^adW)EIKL+Vq8)B?f- z%$S+3&5={MCD|`#qsFSDzkS)v9-4SF8}-v7N9KC4qO)A)dgVKk&y{l;Z~qt-DYL^r zGac1Mq|GcqNPu*;?fS%Q#{ND~j3yfC>L2roIb-<>`71X+3r=38_$-jHVi5|s=J?id z7BF2hwEV;2jFAsRM#nb54F$pG^@>csF>`b}Kk9G3O&HuPvA7c~)XsjqwJ724vhxk3 zT|t%7S2CN#h1$rUXNH~~EzQQG52JK;k0S)A{4ZDO(VG=|z8;=|p{TO{xjrIhgO(xfjChGdEIKK$AeeH4Yd)LumVPGu#xX|=p@S(r&>_PXx2BR%T%W|L>`u^qm)=vUEZR-RA} z{6NP$gU769#_TO}B zF00~=jxF~ z+9#RsI^-)dUFIVcsI_TTAEVp&JTc3N=F5rN%inbvE5qytDNPrCK3RFn1DNL_(CMgK zL2c%*`{dW%E|H&@SvzRq1t*_o@qX5!(+hkXfc56QST|&D^4YsC;0yZPfbQhS6TiUn z$lllGGP7|Rhl&u9Ps~QYW*=PUqh8HT;SfkgBB!J?XQI}`yxz=3si+-Dn3GRO#pk0F z7#Q4rQDJ79lnc!KMR{GYER-cf9LRN~nEIle3=wLL)G~1BKkV(ZLxuVOdCMrC`&^Jl zW@ghn3xKj4-S@EFK2P?3@Y5izFJEb=o{1Z0mmE30-|=APID9IKIz&zyXlRmd$A^~Z zG5p1jzT99pKq0=#X$BPnPY(~3p`fP?^z1Fj=5e1K@+3I-UdG3j6bsf*atF_EQ;=z% zSg5K&b#y-ty=FW>Ch8cW5SAsWlbyc>TAl=z&_^s%@#%`=)NV3X>gam+f2&cStPm@u zR_OaGEJ3OML#&*7*FGt7cNM_%f6Pn3WOdP(VKhc%ja8#M9$waY;U|Gnz`Y7S z*GpO1$>^Jqsm_2uTYeg5M^I1Ne=s?6QMlT|U{vUPvDR+XpHekrn!3n@5WH$?smH6h z{9!$fwEVEkYWXKoE8~njDA2waXI;(h1O0QI#q%{6nVkw> zNeg-cW-lU@mA6D9R3``J1m~Mg6qFMdOVNr;-Q)`~0O?p~BY&&)fVOlkoRv#UM~|DJ zi2|Ss5Jet)OS7emssCnK(feTryxDqYF12=_!;MB!~mH~taM$WTs|lx9JpHP zDmgAM!MRTYX|!{oFvXvw|NfXW++b!kNjr*JUAjVd{%1#ehdN25rH^C2I8M~0*#QvfqTrKDwR9h`ryI#QmJP0xG6>gFb?~t4w z&T+n($6eF`K#V_HIJZQ&V*7RBT3D5{k<)Ab2qpzy_!uJv5e(mWbybLMz(fI%-Tr{t zZrOI0Y30qYc1dN@171vTHJ>5WZetGKIqUmhzG3sxOS-alDj6nZZQgpu)@+dEfKyI4 zxRkj!lUHUNAU!zbnYE)`v4D~gS%^-s4)Dz1qVXe&CAdztEvO=_!TQ1DD#f}A?W z7`=b^gDl$>nX86fWJIll9hHL}^j|d9nD{%un+bc9pZu~R2aj{gZ zB4+P$MEs8v#icDqmln(Oh~k}_$Vg+C4Uyvttxtl%F6yhG3oK9qhqL@ht_8AspQIZ8 zbvExgwr`cCEwZEFKbHx$FWX7Ky#dlL-;_LpwvUy>s z=~nOI!OI$*q&KpBmrHtGCTuAJPfwpXl=D%h+7l)ea9z`Kk#KPKIP7?(>8z|Tu`SX0 zVvf(M^5v`u&sY7lX{?YCrQi@eU76?NE<>lujSn3K@6dknHG7`Jz8}gT_erGv*fDEv z7z5br$AezhJ2@xCIlVT!bZi$mQppwdY2cS;l@5 zyB_7dp>U}lQo4PcxGcW8AxCv_|1Su6$DV1=(SJs|yNGyI)bJeg!~gr_?HsXMOET7j z()Mlhr02GejjZBDz_1*D5SbsVuRyPI54x&){~3VE?IK`Qd#r+xA%5vkAf5fpb=QB- zs(CO*lFD$mZ^Ldqw|ws9iig`KG1W`slD2Nk11uj-X@i~ZLb~ejIt>XEW7JsdFM4N8N0< zBoVcq4`=Lw`11>aEA*F;L{#I$8RP218GbhEk-hw*D9G>WHX#kg7?QoUWSoam&)5Y$ zLazM(5{hatk8J6C@mwKY3oyWBByM+JzsX9z4qX>0nwFB8Y8}ms!g}lB2bnS`MtFe| zvj%e{Iw5npj7ip~D~8VRGVi4yny)REco+j)juMf4LZ7Gb@(Tn44}#QYqmG`+$?`g_ zk-vZ=u-@8&EJL!S3EB~pxW0T|p)LxdRAs!LvUb`(MF|&t!(|j@S_NX(%*1s9eqB=s zk-$tLyr}*~LK$La*6Q-nsE@JQu8`_lk{>@M%u;1Gu$VbktH-aM$wrtkJL&UFJ`8_u z!b);3#-?vq;s}plwZt_yRm}Z1J8s%3wkj3YEUVx(BaH3k@rkVPCm`j?SUz>_smjym z*LBDP1(6jz!N506g*#^pn5X317dk&hK_qycXz;u{!2ti43U{2j3OBYZdc#-Y?&xvV zQ#{2J-DoDZPZeOgkvAU51^;5Qe77!u|JwURoW-_x6wbs#RIR70fYVwr+3)e(yJ{O( zkKVE-;14GC#78UsO5QL26MBlqL-{x}Mbrs2v^f>_@5NK7B~-Zn*2tIH$?XYXE0)op zaob=lc17vjc`|>&?#V?;&ywW-TIZa=ajvCo48(*_k8KLQy$tbsJ%bW{UIxBj)7hl{ zEvzysS9+$f=dQ~mEC03mK8}?3xC}v_0$>}{PRiSUBzNn>2nLpf-%M#qvGv~e>Jp%X@|P?1&Wj+Lsgn+r0ReAOuaVll@hQ({knu!?Xn%j z^*3*(!QzAGMX|=HIf8tjwuSlIxOPWXeEtzgB!Yv?*$#k5G1IH3^7RMK-GNLU%(zoL zksl0#h?|}pm4gyO`z;LDewRH>6RbZ!do+zwJU;$!Lp9B*bh}fb@y^$UgcM*o+8@9X zVe=U<`kOzLNqKR%X`O9NQp4dd&@w4~1}Of;ted{Nxatpc6q0-`qV}?v9ypg>_*Df3obLb<_WT%X$-Wg^l^CKj0>s!PKAF-1Cqwc*&C;zp+Av?boQ@ zFST=$u#2_UScwa>f~OBZq$hFOxDQ_U2hj7zT&&#%T}w442!N}%8JU>wkq@=LXIknB z)a@!g9>T0wPmh(qJ3t`1sKlbDPL5QCURy2a6lJ6Z zCcdJCkYOjrUr$^YfJ&6=R5j{I5eCu07QVPwH$$broCCq-)wMm7prF+)VVemT6tj;l zhQ89x6X=Z%b#1M&<0o!D40)|SW%+(m6D%q!dZlNkl8cSd(>Cvda)($;C}-7b9U;mi z&%<^vt4;8s>mKj=*1rw_zs;Fs+?eRd7rgD*Ke*vpF}`|yw0gP<$S;qNlTAMPK$I)z z|Il&0IhfoV`)?pWXjV;5@vr+j*O9cvXnfx{+L~361ip+=sY?dzILzDMCZ*}V8~7+$ zPF4tan3KH+4?)Z10t1YgOGR?;xcFN+m#$cd9-btpUXi5Vc6=k0yNPbofRad6_2t=) zvr_w+yAA^4mLH}_Sb#-OTQW(v(S$<-YoMZB3&#ISXqta&@js_~h;?fi?i0Huo!I1wvy0g+gxQOkG9C< zPbfGey9ENb+kz`(uAjGhVKAtpcOZPKR1uDAySazZ;2aW++G^mF#9$P16a;%?$g33rhCy)WB0MSQiE1_T43f``^k%0F zW=UndDNj-)dXMyo5P{p<`%^k0cP0ZemT$#RQl zMi&h^wKP+Daj~Kk?%b`08k(05f)5%E`Slz#QReu@y%AXrwRdF-nRrAV$q~Cn7O~$J zENO1oh=_okc_5`iK1rIJoou0FhC@dZ58P?8KJ)32#5nG-nHPc7`pX>f!iv#61gqA zVbzdq*AEG_%=CwiCDK*T#B5DCTz77Zgy*Yb|h(IEzmqjm}0g)Z7en*Cy8yr(U(s}^+8 zUExXij=x-s%~C~0?5b(o;~X27$U0Ju-NWP(gAXIbI~c}?5jDFUkNu?VS$c$rQGE#k zlPy{6b>$KM8-}iMQ5<0|S6mAF68x_Gr;!f6ffPwBdyfFsdz2EFvo{=ySlzpfr2bIe zNsLVlLG7?UBapQ`=U*oR`2mURw3$}~H#^?k{_-OXu>X2;zK37}_Uri0?k&4W6)gr0 z7SgZ&)dm*R3dhm2pU*`_1h%s6IT$_@35!q~>OuaiO~#_WLyG*TqrXOV=l__ODWadU?krwT_K^XX>if@<3IY!s1-Rmt_k4GjLV0^geFw!Qp2lHb~0JSSvOn=7( zSluCuwDJLA;70@!@~bNt7XTA~)y4WZDbycf)bV@|w$9g*#0nsLmU0EBj^i1-f)DVE z1DI*$fa92aycrX~Kv&8P?9SZ(fG2zLcSg@hYq7T-C|5k{er~AWwH@wE4ni-UUZjIN zjShEU&ST@e#;JiKxLlUY!dQzZJ2F*0(B&#{I`m&l=uS zf#z@Jv~e({fwMRO`OI^ZPyt*5K<`EpLqk730y%dPvtbdqk1lZY-$V+g^*9|pQ zSRIt41IDimUI{NU-Yv}o`k+Q^`~cef!#&s;*S}2gBaz#Ku|%+02xK9=Q(@(VaVG2(0G)zf($FcZ9Qe(qyjec#LIK6*+v*gIuyeEQ`2 zud4aqeJ@2Tx#_w>V5w)RL$e`YK&Ld`f&FLZ={Z~^4v{jnJi#?4uTt}1>3E7vLtm+j z#vx4`VZU9L3dZoLL+w_MKr;`^oqvHj0gtu?5&$$_G9F2&#Sz&Xu(CGyE`Mj0+bEx2 zk34+9GKto%gBxIDJYCJQ%gBT#^D4m9Tx0*W&YrI*%b1b z^Y>JWxV8K1cs;|*<)pg~g*<^zo$|5(O_v|%!ek67+w)h-T@%-o7x2Ursb|~vTvuLk zT9mrW*nnkxueu95AWwVlex-`j28_*x0^q{X2lTr7Hx5Orp#^`_D*mK?tO@QWXe!+Y z`!Kd5v$Q}n^Vbhvf&d8ik;`Is9wbtdrK=|5RkM@V1fYHIFK`tj>}nw)}s?iO(D0CE?oBy6Yp+_M&n<-tNzftD6Ut> zv8%FT7SwnCe}a^EVM~z`2qcBa%$#C67|vSMcFgn}7${DCzkZ5Fd+d89wiWgB#vpZZ zfDcgq3L31b+%MVd}+IIQ^RfoFbW0BC1vFTC!Y$DlvGysqGDIp|U4Yd``h5E=6G z7e9z(9~LFwDR1?3GzrxVMn2MAL3?h#gQxj+g4Yn0el%mye!jb3dk1ABOwWYRT zgZj!{8AoL!&>H8zKXV5AfpDpJd}TT|<`c}z#beRsN}0MH`G56QXlMdHjX@I!!)u$< zUsk1akEKUaAG4jq|8RxJi?Qy(B%U?JMi`FvC`<3=o9d#j-ciTX(Au7upY0U*42^A1|b+lkBj zFB3wu2a{BIw2Vi<)EsJLu#bLx8v~G`vnG>9yi$Wt0Q3#ayAqDL*uJ7lQvn*SNXYgZKe~+6%D)qcIBaqc>-e?}sZ`#J;w+0PhV6H5*|uwYe|t_0%|MK?n` zn=bEXs<`PQ-OwY2)zQ~u+6M;Y7~HDLW#dlwdS`S<4+$$nsNi>~>^=GNbwdoDD}dDJqm+7kalMYzZO%QC^j zS_?unA}TZ@p^=X>DjN=8X_{Q3GQl4u!)wtsjA`~h^)lURZ@_Ncla`#K{z7rs-E8e}QK&wWtujXv?!ofu7Pbim*;N@IF+;_0j{)JYD zu3i>+egE?9axD78BV6EoB}39x^Koc1JNeD{)m-FJJd)gkc>I;J4S%ZFg9S2M$cf~ zlkq}Wrh5o#{OahblIjW|s`>y`KX`JL--EnMMu7VXJZhp|q8hQ$B{2v(h&KMcQ7{5r zUkemE*1^977#eIS^8;RMFMOoAv922fy^XKlbo`!z8qwhqVL?&9-LsDNu!(+cw{=Cn z2l*1Fd#e|84&VTYPN+qoBovPz8Rkzgi3t!7=MBL2T+1;V&<~6w zUq}J0uJ}=nEejx1_DewQ(JdgVq!ERT+|KvHzXPKsx&t){BrW%u$%N$X!-y0Eo#GJ= zV-9^#cfR6;H3Tf277Y<|SJQEXLpR9!3X043C$Bch_qXF?tq)6~175k0rfpkOHX$sE zz6q}_Z!F|Mf}C_Jb-IyYg{odMDQarY;s&jh*r0?#Xe3v#_&-9|7C=13rx5RfCx=&F zs7A>f08zyqxaGi2o(dRv#J&$}S6cveI_|*g){dSW(2}glxC2+>?2UO^Kfz40P)5Og z`&uqLkb1tex&PC%c?=iQ#RX95o`sQ}oyn+?p028tJ23lL^8c@8pLC`_KrzQarV$U& z&k9?8CS#!Vw|iyL`u>8bM$DWJVUG}$Dq6+PB}54;96@N%LM5C4jkDbVUi-2$ja6(x z2;Vk%WM2XzB<@L!o?zB_U}1LwlrUrg^r*fA*_%6q+-N$Wgrm3DW6d@o_GAB3t$ER^ zwbj#7KDhaaPgjKr7dK5AeUepXw(8YP}0R4-a0x$v*BV zxC~1b8!>wZ8mqd`zlfRM*giSXykGEk4SxIFB6XzaqkUd35y1n$2kLXVc#n#%)&Na3ijBID3@GID@yZ<0%v*Cl+xbWC4u z19dxQ1Uzw7o6rw<{xc^Fu%4!Qy8lU44#0Y6-{?AHpj_Sy04@F)M@kj~oNDvr@TDi`P&yf9kCqR@vgdFMaVs{iKip_m<1+ZIa$y0seQVSF!Lx9=&+0+N+RkC0HU}DTl73yI8dWLvvW8*jew|+dVbg= z{_iB$9^@;!oa+4(j2HR;Xgc#isQT}ZSBkP$)~u<75Gq?@ifB<$DoWfC(g-Dl;Z}CC zl#(ooRLU|aOJs&Y$W~cKim}d=AoFqK6=lsv&ZAC#`{e#{W*rp1r8_AK~v^ zRnHN6VQvckhz@X6^3XIB(l>Ix-p40@0!BQ&3}t~>da(s&wjxE98wf5v1r6lugRt4< zNvxwpAljeF#_v@_=qK))*zeIt4K7iM52;`EYJ^rI=bNW)1i|NJ>DoT6a=`VPILw2H zmWWLp2o@T}8~>+<>q9lz`18Qqtr6_|R94Xz2ILVB=^P#JQwBcYG$4`n@6kVSKpMdo z_Q92I2>n(!T)B~p&pRL``_fU1i?=uiU(BB-ii6?tUA>Et&^)f|fkkkBnbT#>CFn>z z&mn-1VC&v5L3n?j(^n;)gBT%(!OY4VdEV#%6Gm1sxdyC@Ea7piwy4STCwQu?KBU_; z8kvc64n5UP{-L*&ss}6S<`SP7N3u9u1Qkz$mnj$~o53}^=ldA~<3&ohL|eB&6E`bp zHn?g-n{53_+64B=oXnO-_@quI2cMC(;npU?9%wG~GTQI>dXgCG4vy*!NCCtG$AUI; z75aI3!{R0IT;*631cM!xq2F4mAwSN>qx;WYP8R#oGLz!E2W5us+-qqU48m&Jpyp;Y zFkxd5TPv#aVf2S@Wdp+x&`eR+?XTk4wc^n_?ydtBWwe4416HsDxD(gnHQQjT_#VQ+ z@$NhjhIfkp>gJJs{HJ$st^5;)7U0ZeGeKlMJWV92nh>5fv+=0sW;VV)M1#uB?<7ZB zw0HFEWbK#e@A|R`g)wkB{4K1DX}p*+bpPQ=BIyvF0XY>^qM^wX&=sS32v{=%pDV;n zG+=QSwH=6xK=aNszg%c0pVYhZ#)VL7oW!n`5Y+9R#O9>kBq+z0>mPu^BhanOP|9|~ zNaX5{-lzB{ZlmmzEyKWL*DNs26i1JLBBvJnAe;yDl@>(cuTRZA&l1e}na5Nh>}@xc z`3`7Ztoy&C)<7#l_wpbN88(2UB+iWIau;8;5u*9+S?n*$szo_lZohNSZiba&dF17W zY(W9AY#kvfF8j8@{I#xTt?~b_aycD5hi~!n*MdO|73nZK)#(69EsZNhl{|<(`P#L= zP7_22Cd+Y>m}~_Cf{%{PtrzjDhcnR3EvKAggCF7TH6d-~4RIH~H zL-hU#kky?ZC^l3gVMnKCuk=bN4UPIIXt(}P&`QrG@Em}itpPVTXBVg^i#8%u)S$@RE7o0ZioBhlqpXh|cPqBxx77eiEvn>3f zGpMw9JLo3vhQn3Iv0t|;Cv50>#O9dU&0oxYx*}vt=Z$qxgH#%}!>fT@_GBBOimti{ z<1$nHfOaR#l;=T#I0HgloI{@JQ(5lt5E4u zaz9T8Ap1kBaR^7@zL<aMG9G>qNLfaX+5%KypNKc;3y zGYRUONJ}C}BlSB?YegCKLNRc;wenCgRSiXy$rXtRT>^n2ly| zM)Zd^(&AUWAG_ONAQA*xa7l+<`Hq8Wr@-UCuSzg+_sR-ZDHq3ccyycYcQjkeM)8n`ol411I~Y}!VG5Uh`vP(odc4!d?SkSY zTjt8cta+hoXE?P#7vpDc=eo~_lST`Jqlhj?+Tcu=wSs=HM4x5&OzC+Dsm+Skm6iLQ zIgr2edXd5RkNNj|OJ!Q{F8S#Y#(0#i%K{X(K{%VacxLYn;ne zeg`)9#Er`yaC1JMzXy9hC^N@PJk5IEBcn&@N8YF5V;-cCe|UqKw7eXs8Ch zana~Zi=KKI9bRuk^8H%YSB7i;-c33>&|UjqOSOPqmXsSaa(y2dzbcj z?&x*>ej{{lY4_AqosgWQ>+QKam8+xNVqd*(A1oO8 zg!_}Llq+zov0ds0&0aA!&F@EEC;geYbdgh+o{_?D!}sSC+$AS|wg;u-BAklU0)!yqUuiQ`Ay0_|4PwjkH zAo3}~^}M_C;@)37Ln5=RE2TMiUc4{JwfpuseWP9PJGn}cMDM57c0tCE9z9m`Fsj)j z@k>Tft}c2_@%uHJT{xlI=z_X@-?0-4KXr`L1R~Dg|74J~e@eFhZ@yojK~2pQ{nA$c zVK`$l)+Uv_?}4G%)FsDW|Fypk<8MsZexWN}SN>^Q8~j}CaL)x=>-Q`rRVb^SEWapi zNuZ|T10JH>Id0a+{Dh-DSk`;xu3yX)@)BK2!qS{a@wzVKM><24#?WU zo5W)s?=xlpA_^wCw4XcpR`<~!3UsR;!7R&$kR0K1|4;CDh&6&>n6kau8=KMNc68lR zsly)F&3&B2V^*iX53X%N@&okG_L?86Ctgk8B7Od(-K?(6&s3(Ydirx@{OtR3Vw~8( zjP4TTFsoakw#q#vXw$N6N0x|`Zis-!AIhcU3)glG_-}RmrJGE-Q>N;q&+ge;)Z^}j^<0+n(;066> zbX{I%J14QNdmPD^3m@Y)a=3{f$!x@pxucYLJ1CN_yZPQ&XrJ64`e4YXUWD{;N%pBi zA}2959tUq4RsF4d9*RZsUCPRd8n?ulvX9N8xP0;>u83*g6@~#58IL!G44+s3M%;*| z6zDxckZ*P6V4X$6zNng;QP$N5%sXXdW(TT);0oVUuchj-R<6BS>M-T?9G5WHY6!;~!<-DvMK zic@AAW%roiQ<3~<%iyMFK&)JDq8a}Jybv-1Zt4zaHn^!%{u5v39$tj?jb(Q+2n7R> z@syQ^)o#rtSx>fI7g4sKo9Li9U@AKek7%_N-T;LQtzQt~qW zr+?|*d{<^a+stpdD3u-^U6~&J;cHpDk^v_%M|M>DxZtk8vSRW#_*Ok4;Ku%R8h{>M zSO24%j99tcb~wW4w~R1w@R&g+T{nOCO@0eC+24#Kd8aK^R+0_?~U<4A)n31kLNhd>28av*p_p0S$5W$jg0?< zzCe%6bfd`lp|ap>KCvI?#Y&lF--xS^(}z-b$y894X63%v1( z7?<+;WHH8Z+)Knr@u7PF+>M%RUWC6q z-(~wX;`LdcUtaUXBTcj}p)7)sla4w^L-72LbT*}Y+cpWj)*{jNmkaE#3t!|?7{*A+ zHBk66_1VYsBSdKR&AtCRPh@ih?1&xKP3W^&R;YZ;Ox0I9-17-nFC4i%c$Gu>y2uO< zcAari@C~OVU0H{Q?cX-zAXkRT+3;iAmVsp^+gA)(RzB<~bajjP9?~c0$h2GB4bw20 zwW2d&mF_~^^;;I|5Y63pr{cLOy0gs;ta5G&d&_g>NX5qKED=*cvbWw{7#C=P;~RIj zk-KO6`ExHo`6WpW33mUBd+gqcmZ~v`5|Y$gS5ts_W$0Q9#PH~{Pul-gUe>)of-G-Z zuP~;yQh4!fB^7(P_8fD^ULA31M?K%D;U1t#n~x}YETh=Zf6(6MyR%Qx@GYl?j~~&5 z9P9|siooWx?qeSs1F9~wU2KX_3leOiobV&LkVUaL*1X9cskW2-Y0-i1Ze>*d+(d;{ zWVjTA!^rX>J`&vh9`FDrh}F8UTJwrx1W;{}J;=W#Mj&K2_T!^CA@Vr0eF6)CBBEeR ziPw7NO867oD6)@z(F7N^3S*l{18t;Ny=9q)jw41kW`B}-e!;2>HFt;6 zf2Eb6L!GF(z-!-(yNiKqKxJj|%{%M8tUlt=MkJFp-A^?!^g3a-^ z!<>!8H*SiT%2rkaAcf80)>rTyivlj7WoH2cTH5Cyf3*iVMtrqH>P`hL9%4 z3T5bbLh497D^y6_Uv#2K=cjZ9W6+Ytarh04+EERRdg}YjH2gwF7CWeLv2y;%*=5hV zT~H5vDDcJ)u;Kipwd-Q#@LH%TsGYsPe8UnkOaWNjZWtXA|LA?rX&ffYWY~wwGKd|Y zd2=OECR1x3pk1V5Y$E%jKy>|ZJJ0XJ;CgwgR2=Z&s-BbMaNP!1p$i$++MQ2hq{YuJ z5~~kgGcuZlUo>lLFNAM-ik_7Bu;d>E-WF@WJTDGPl8^8ga?XswvX3|vfag5M-awXR z%2DUk*nG0MG+MU`dI-mAqE3bHmircoBJ()2_c?5e6L4nl2Wb5TB6|Jl0J7|u4Bwso zC0+CQ6Aj;p3zsPLD_LM;tq2iY`>MaPcm^hl3xT4d8@_Pa^rq7p_y>A5B~%*zMQn#T zoFicQVeC%a~3aSaO>nO|(qF8>fbM_7Urr!5RM82!siyROwV_VLHM z08VqO2?_Sv4k`TrPOAX6oR@YW!3MYB+j|+r#15X{w_b&cYD;7}biLEWHY)a`NG+z5 zbm@vK`>JDl&`PMiyW5Rm{g06<$mm3OUN32UoAVIuI-_$bbtM*DcSEXIm?-W3WHyES zoj-Q+5gq^@3L>vaXtx@ZIFCeS4MH0)F-)4`xNi2H&qerJLN@ERuW~9nfSY9 zt+J{l-#Y@u9qZ|JPli=oj;secJ|XquZ%AtgNS)f2dpdR$H`>0?d{PAP^Ysy%Z&!h6vCTcZ4k;CdX>)fM^-99t&(q^IkqiZa5!nUFi+ zhiGjL^ay#6-Uv}$_$+_4c&AOLt>o-b1wSR2^u{zu43HzA9WbqDXJ8-oVN?!qO7B6v zp$pl#Q28#W3^O7Bk5d|V0BIe-DLJ3Sq7%g=9zSv7mabOq})R%T_|z633pv2l5usBc`z;; z?|j+E#vDFXP1Z3(6Q5D-YJ-RbnqD+>D*5gXLNzaVq*_jH_Qm(bitIiCmY&?HlCjD`Yv-gYlsJ;#JmIYVk#bMj@+Xk`wz8;kKXyO|B zpc5zkrz1Eyi~ZS)%n#1HmM~T6e_+wr$&39-#1Duk3%M%vrdkmpO2SNae))}Qyz&l2A-SA3FDsSE(9X^K-8 zwa5&Dgr_l%SycM)NF4s0YugcQ4$f>q09+%ATq$WGi#t!@n0L!_OH2q zuIUb3()$EYbY3$SJft*QWF<9DUvJznHvoQpp#MW9czF&?Qtoild;5K8rt3E5PTUwhpGYKzYENNZ9O&aC(1V|)v3wO^^! zW=4O0SwnVZ;$4%RcgLSjn8oU;S5-EUu>q>u`KcNBI*~k@-@CHxiZa~-NdrZ1o%z6B zA^|!(sMz(wMI9u!cSoBHzv)?GU-DBfOux8y6?K0kSGj(3Y}@9@tK%grzqsFjdH`DM zTWm0l4(^xcs;E2JEMb6%_?by*BR?g^vp7cdP4jHLXW`Ck znh;%QEg>RPXPhqP)ag)7xy7hNdiPO_!X1)fm5X=Lw~gdF=Nit5l18|Hll?*z+19VBPfy0?rC5R`%9aAxw4PqS--(pO5^y#^PD;rgiQiX%l_yu)ed zZ=%vDQ-0Te{id~0R@Y-j;HkimX!+|0_#YQRg>WxOGdqnFsQ>}<7H2>uR}d|4WwES_ zs_5hB$Dehm*j2)N%gU6}LBcPldI%HSYRaq1&ko2EO{)1>v4&P$oqJqXgBR_zXm^)EhF~^7BNT-7+*` zH(a$o5M}C~mEDpzPJDL6YIysJ`M?fQ69~_m;HO{}*tKOZYfa60}gLtFmt^@*>cAcgjSLe`dVPpB;cm7Rx;e` zbZ5n+BpiQTVQx_)`H9X4j*}h6HWD8Tm?ZOPRR(i0&}wfdIau%Z-JKAf)z0Q9ecCteRYQNPoJ>LSGMJH&t0vh+3CRpJX!3uZHnvi@w?+-EA z11U;shATH^1Q_3A<5gaEY8u4od7TxRB*p;ev+g9bHGI~Hge@PEPuI&d7k#^KrFLkp zutF4N$ci{^7s)!+B>3JAoSnXbog`iqi8tN37d@B$%UaT_5|98Vj03|?3IelM&SCjD z{@&9hvaNdtdaa#}f69Cs%Wd`Js^;Q{kd$w{tBEQ>R2hiM*qpDWo#R*B@~4ZH#qrgp~RX+Zg6b0U&s zC8+e1a*CcMQ?#GH8Y~mp?_XN=Zq*pjXpi`adCPdlZPeZNu*2Slg+hSLefBF0Ww8yP z(^y_`4&*fesYG|EUwo1dq{Dm z{&?;GFgDv+)$2?=~i)pn5HFTjTr& zhXrVkp*Aq~3fSA1P?C;@=F;dK{Z3d305G}k1bIO^cpz8UAu$t#KOnkNixp%rJDw9N z1tG0PCjB`fNf1gi+XMwSrmm_75Z)>VQ$y6ZsGa;Z&;y}gkQ+*-VK0|TfLgoZINiR` zFBb&aXOfTJ0T987 zcG%;MOzt|uz~T63+W)l!i28owk#G3${pDDApnO#TdgumTqHQ1qN-&WR@J<|14PL99 zu${Exy3Lr*N9eA;by-+8e!~HXBJPf0;c}EC$1o_wN1#kcfMEohAY#ix=(!2R|E5xD z#O6MS-Wm+<89sL%v)=&V%6*4$&cc@0e$`_RG)e=UU+$7U1MzQ^U*tCZaP`q~<v|*y>XNcQBP*q<5%3kzyY~Q?9|pjDv)@h6dH;Z+k1~u(ZDFlu(zYwE;occ(#E0lm zA{&oiM{t34c36vD0RdPabMo&ZaNG5u@VRxxtPw^`M&Pu^1_-|lxB;8(P!39r5(B9SGLz+TB@Rjpf!jpe0f^C3@1G$C={J%y!>4dv-bsA&0c(QH)wh7uaz*GEH$o8i$mQ;O=qVa% z`8nGlXMMopK2Vny33~`cm9JFQy=bxY=yl)9W==jphXDR^3;;uF8(hsC9W^gFo|jL5 z`DTS{GfP`bh{ATH@m_Sd2ZoeIZ z0;RZkuMmwP=II5fXI@Rh@&p@i;mk7?BUnEhW6N(M@yMsZGp5W4ym169U&)~6s&$jc zSQ0?{k2k?nbSDdbn3fp&7%vgSkpQ;>yRMmRt~dGOu?t$MNTut^@!F5~!a6!My0IMh zd%^^r221nE599DQt_{TVzdOixQ4&L~wt`(`70^t+?th0;l7SAXocfktUx7a@5`Zy^%29d1w(V|0u&Kah6}k9Bz_7wIL_r{B?3HY>`-zfQ5? zlMhmfBYPJEJ?{X{rrWaI+vp!NG}5&a0;~>@N3q{005n(!LSPBFB85FI^PB^o%&gj+5VB@_CIzucnk2Fz|R-X0a!d7TusLdR{E~$Kdo4G zgHa2v(#jPMUU}3zQ)1NionM5UK)8I>KsGaqZaxo&@@X$%_daA*>NB9a#y8mBO@MH7 zph*J4P2wofkl+rwPGVnr0$gO3L`$3aE+7Xs|7?7O*5=}i7ODlIi6sWkV6K5jrh-eP zz~T-AcYO=oHPN5f(J%Kua>yz#;_?>uu|$jMW<~t0=i{a7Nw{dc@Gd)S{E|3#1ffS2-clSblJoR zR9XqDD;eAHUro<(k9iL17snGC$WvCK!pr}%-U@OKuq0M zA{^cTHda_y!pJAt6~huboBC=0C2SuFEmW@mFJXJrm5}~l!dAVGhxiA|)!EfxvK=De znmU1TtcYCMjvT;X@0n*_2L!M4CMb-wdbc}H%)8YbzHY@QhXW_w8v^#S=F9;)u^X&Y zmSFh@aD@V(0Z#*q7LF570gYuTi7TO4bUXB1v6&=Bup3yltw(@O+j!&vH-hjwisb(q;~;X@b&Zy|PR(H$v#< z>Da6D2AOzNm}zOilFt@f=$B8$oX~~LX7r$dhEctfgc0CDm0RyCb%U<4wb6WN?{>n# zz11(iJ;m$nTm>BwzrrP+x58Z)7BY@m=wEs2lm5Qo5`DRBR_#xn7mI<%!~eM`p%y&u z#xukL0H>(Cp_R!A=>82rjhvWg`n#JzHi}1ZB?|*>|XHty7@nd&Q1muCH zjO~O2w|8Fnxqd~batc<^pbQ0(tnDHShnlE{7GUlA5o`grY#T|%j{jw9t&G5?6${9v zwP1hcrUg-nzTl<+GRVifnMZ!*KmCez2W(n10|R#P$OdPCN@PGOH;|$tfLAwJ-uRf3 zfYxT}ZkX3!0kB78_pxey4SLA^4g}|CMQ1z>OcySL)TlG`# zrsU*kV&d8@&F+Dp1Q(d(=LCZi%A4-Nn>fBep`RsP{mtGbtY`C}tlo}0;@)|Y<-sL- z?!<=Cs$2fM?e8o3ir>$P-hy4tKWMstNszrQil8TMAD6hl*w^Z3-Iy3<6h*kujy{B=P_&}Y0B5@Wu@Iw*w{}j2{1~bi(=(d>(8Hp= zKXyaIv^jpfx+ZZG(Ix&7VRtodo9PHm4wtKEJgqc_CvRHJeIea_ zpgi#UFy?pq6VW3EW5wL=_cA~;xvEkx+-6O1{TQ+S7p$~1DYj#cDpH^}X?rYIE>S_i zy+>cW`?<){_WESjmeag@M`p6e3X9dXOuM@G#va?ws)%`U`a<~mpiS5IFbu3(pJ%Qq zrV93H>ybhiOXfG8`SnFfnouI>)s_nVvQqm-CzN;R=+SD`se!%Q|C;~SR3_6lzvj6& zGq3uEnvxJhR|*Q?LIb=?@wJ}6`OAo`rC#?H{)Qs*Bw&?0`)Hm#f>bbol2S!=>8WAm;2 zELZc8F)zYAqCOY?ho9VYw_x;2LJdPR*{JQo{zoChy?Jg-<>kFklWr+o)M~jAxp4h- zqh7B<=@H`XM&{LI(^*ydFUsS8ul-W3D5H2WE0*^>U<=<8{owBS|JcfR0m8}F$?#9f zW8&=7JDv5GMDR~G^w{tG-6Lp}bWQ8;>LcFmkVU+Sj_UJQUi#N$WqKR9-5>8-*cI}$`~E_S}$-NybE+1YHTdt%U)E6 zMkb4t*>4XKx{o1q#5vv19^-9t6ISK+R-i=wIqjBNpF{sI-R^m2UET;d<>(W`Np#mM z$Q(ho@#?lr>vlJdPG|D1M(~~$$hhGBlDt9aZ#Un106NR{`DErTZ(aK;4E`D@^Q(av zbQf{+y3q#>T1=eF`X9UEJpBOK7QzOYgQC_lU{_qd9O2U)v&0$QfpZ*yIiOLhaSnyg z2cVj${5^ExYy6gp#=@Cr@7&-USJuD%K36;f`FN)Ydzlt3$r{kxxQWY!L=FCzLFoPb zw;5gGM*v;1$hlkI5){u(JW;eZA-7meit_Qy@r4gl>rW_zY~Wh~ZYuC~4RP?pne|yM zq}n!;{8znT-8^EPu7s<7Py#p6MWfhEq(e=Fdoew#f9cyV-Iy{5R@iF`*tO~*U6)#S zgWvK=x&qne9a}?`vxQg=x&U&Rzlnog0|B*?X&k_}3f8SrE{UyE4@$Y@4WG_flC6Id z&q=JgO&|`M*?xl@8>@fIz3Uo;?rTPJ5-%{KXwfyhmSy=-n_&kgLUPi0XW~;!)X+kP&cUZolw|bQ}rxBxMx0IXc)z>2w`gnlNZukRw5`xa~aa%vgF6HK&#i$JO zw7`c)7?rr0M8220J^jbqc8rQ+h+MdND)&{nYGI$X`{wGDV)1cG`Wv8r!Am(4k3hkiQK1V<#X1IZq059*k&ScO27DUac_o+F z6J0*1!=?q-hwCioN^WwkCf%`3|IOo-8qMEb#oYJ?&6eD>v_o-J)`p64aHap)Wsin{ zo+U>$^us~xsiKpob8uq6lK3=>w>a<)-+xEuTrxO*#_9YJ;PynHDDf*Q9QESIgIA%U1n10Cd2 zTRljKG^zzk5=(a79Dr>5jHd@-7`jF zyw1r$v+ZXvw&3o4XL5V$zYW0=Z43DOruA$5%J+rC#@TqhAk#?)^!qQ-=n4nbydq`YxuB@*X^YL%`4C3z~SKIp#^dn70gFpDJ$;TS^%^mZq z4GLSm9LpaPaIV+h5nN#+#%I;IY_6Lmr>#;Mzg3aBFnNYqL=!gyjR$aH0 z3ve5n;UHY)u#hWIhWhy3!;=#~v#*t}T3}Ax*bb=}*)8V+V&>z)ag6T949WA4*gc?e zDF8Gsam7;6PLdnVhDT#tIG+1oX~Ng=Ao5NLcrwoN-mU6VPY3>C8smkJr`OK#^DDjFEIlB5U{^k#SfS0{@hX^RO#8V zLko5}0Hl{l|2=w25q}%*5ZFX`TmiB+jRSs)tSeO30z834NaiFs(*L2hn z$$EO{#{>VkL^)qmsXKd@uB^WIBmV{bx8FH*AlU3ZFP9vw@@A`u-La#HwcxZ6ws{Ys4&&!-bz9SM9WxRbp?%_#H=Ya28 zj$NQ}_1rDdYJygn8Lr}W|c_5I2TdxAteI=^yCO9XDWIZd5* zp%_?de0b^<9`0b9=hL{YmtJ>GVw4=5)FC!}ujFN+6U%GI9~oY!eI23bhN&67&agUI zj~j`zO2e;Tls-j>sYKCw0$r`ArIo31i{t%M1=CC>#&8h%aNEUZO#Hb?|?-nB1H9CB`;mfUOjVjKo zmRlJ{Zpd<2-LqWMOSYF{CW*TrU?Wz6O5}MIxU~GmB z?J}}#2aq3*N7J{^6@X>HzWF`=E@{Nm3y>;4YsIo42{uLB2a0M&lQ)vYEA;#>Wb75o zI%nICBI0j`x2<3;@5-8&Ew3QU#2q)B%&4#_NbMObc=!o@9x2WPG**}m-_LkQ>*q9M zH0z@j;FlOu%+IgJ;pK6gMX$Y6ut?wsFD#o<&th{`g{UyRSCUPMv_h60_6{S#jQ1lb zOS_f$F7UT>&6`jBh06qFe;*h7Qw7YJ!rbF{0*j~hY$Xuxsdh0(RN&jf3??M^(}IDp zeo0nvC(eHnem^;v@!L-ZRb>Sof(?3G|FJ{nZx)%U3gE}2?Si=ECawy6hFato4j?ymNgV%? z6=-qS`pREmC0P?ry(#+akYbz4^ew)EPTW`%FyQIRRat&A3-j*kdAT{?#jBWG3}%*t zG<1qINwECCI*Q?|(grdH^j$ly^j$kT%PbY-`k?M0evzhkfy(_Eolp7vl+$i~y5Q`E z@uQhFWxIc%gE7M@X!K&G_!Rxq$eTg5=G`sS9auZ@#Rq;01yE-NdnH=Jt9Ef!MAW`k zy;{P^OuN1Ip6{>T+e3a^1z-ZuautD`dyg)d4&!Dgvj(^-xudM=dhvQehc6k#ohr0x zi9_L5V2VQs0TJzU05b(Xfz(D)tm`J(~@^SWq$ z%JO!Sr(lKyn0w^OQSyynzTwGLL6g=ytrsubxxE;#mR)e}Iw$~|t+WdR%WQkG$n0~< z!F4$+%)vZBQ#9@d#Z=IFRf&&Z#zd5Kl6PGC%X<8VUG$hl>w&it#GS5BV$uCzgb7Qy zf-3q1u#AdbP{|{2J$Rb!?^?FU-(dc~rN^0nkmtm!5a zA?nx?#v0IYj#1jhx?&=wfO1)|IqJM6W(gy1$#6(_Jei)6yEC~2@P+TUWY>miYd|7r z2%NxUElBI#Z~PP>Y%F7Ma#b+03zY#|C9E7o9`jS8H;0MX1A7Nr8;7 zMaSVq>JpbQ5wEiFnt#0O(S_B?aN@OIt+E_2M<50di7}Tz*E@pa8x{rw(+`;5VTEpt zxzcM2>kuRu2I7KV+RIJk2MO&D#DFOzQEWx=TA-EL!Dh*$!Z$#YjcG2L&fhAb-9J}_zW^jDW zmcOutON`&i3f2979O2Dw8AOxx7b{O*4@8YNRa^q?SCqSJ0$!z(^AJDvrzkf{@3qzS zNwlI&J#RBA8*T8v#_Zx_;G}tUnN=Qe@MvMzp#Ldy#@iBb@!1}`Ni@ItG(~mcT3IKm zmQ<1Fb)AYv+)bj_SCg^f`9NtqWM8lWs`EmxW+E{bU z<}4q|>xSQ_qd)G^uqF?Wk@L(pEmWRA@&M&J8bNR{$h8K`wi0jn{*~vEESk_M`fE$R zjffcf1P`re;QXqRVYqk$Pm#u#;S($4ZKRh1Oj#hYcDAt7UjJeDoB9d`w}J z>x65AP~u-TAAMWLL(Zl97%(0b1|tP{R~mT~3IB%?d^eBu!F{6uiF=5K>AqO(rQWpNup%_Vld>$?k%r!EZ20v~=`tBO8}{ty$#mcK_D zDk~eT+JiocF#)}qL~Z72zZD}-sHonE)7FpMX&C5^%qbWLHkqFxjJ(3-jO>v{{M_H5 zBC(S-mFhHfWD^)^^yz>U5obrG%jHe-gd}m-xA%RQ=wE~t7&xWBt67}irEz$pp*SAJ zw3dC5qE^DEbSa{t9{?!}foAQx_#zciChcFdwu%T7BpBrh8x{6(DWkE^K}m8ooELC8L-8&-&}h*tl(6`dZ$Fo>GH zx|;!eJDNMJ_;u9o6~6{u#bzF^5&N`XgYL{QfivnshY&y6TX2RN^`Tlsl6rhU82!MN z$gYirP7{=$;{tsj3ZrEEX%sXS8_qSei3{5ZhVxPbM)hZ?Sk=58s1{f-MpgZ5a???| zYO!DF2As3Mb2E7i*@iA>`VvO8a>XOQaSRj%_}H&S^E*X)dvcZA$wG(to+}^0c%$Vg zj*iT$Tucru<~FlcuA<+9#(16PaQRbA)97`Xi#@q6tU4aM*WPs|NaQ8WR{hVDIluCN zEz8cO_a4+~fBRv#$Xcb+DpMx(^So)2f1QN*4T+|bu?^YpUObch8DqrxDyDWF(>{^U zMyJ)oVzHA9DGXS6uSOchUGSgU0}pH@q=^vH31+Gl$$ zRi(er(;y+@%*zvndO`sk9`OoRqmIY;1u+4sx$lD#Hj$rR^X440*`4`@eGIR=dMsTi zKHhx9q3jMpef88X&T-8riOurn{ZhPw$J)h#sTsfe?FPMNmKu)82POO^#26W@!)V@# z{=POo9_c%>KC6jD1$4)^GA{!IUcs{Lm~`k`P1dmqoH6D%ZrjurW?FXmm54J(pAXu8 z2E6b=9e%_&nuuq1?!FLFntD$C70*)0nv{_nNuKzF!kDXV`05VSYzvjqdH;ERE4TufgqWdY}8gIcYiV znpw23>g2sbr>iqbbdgXri^=j*D}=@D{h9PVetE?lqvz1DceQdhUUJu*zxyY5{{+-{P=@>(urEZ}lzAi;EG+Zk10+t@B?4ho6v7 z5N5&zcG#=lErAH~H@ll1CU)c_%GlD+4y#cbLD~1GdG&5VD`%$Ib=SpLK1ec_kEcvB zmQ8ZzkskLXvBrA&w~S!M-qgw$FR!4qbW--xh~?#L0>PU0HV=Hi`xnLN!4zpBS2L#s zu(6IV@p7G$KiahU)PpjtK@>a8PbMAzGGmFL;iK_C$Z2<<-4OcprLy1MCD`}wpA^iU z=7EaCMwzTy!R*>BKhhh8r8^bDJ3Ra-LqOqtx2i=M-p?0`J%1uS<@s!`vFx*a%A8gY z#Z*}B$y`O?Z5&;liK{oW?O|KF76T6rg!uZ}`KwDlrBOdfdgM1r$HCu7xR``eq)y0Ycxh0maLHu+mnp9{68d z`3=xkUiAr?(?3UeR^0-Q9)wcvIxevl)Q*;a+$5y`y0;7~`%Yqg0t3-yxhs{|wk^O} z&uQ)>g4CbEkJ-d46>i4ol|Y>Dtc_o(9XUq)udQ6EFqsF*RN>2;(d*h#{BRM{M-SKT zeLlf~YUr{?K@j#n4|?>Aw3$MF$Ro|MGZ@9gWx7EPh)fGyv#nk64}cm^GiViRNka)}?l z4WT*h3v(w8Lf84a<&B|>OiJEJ&%XuudQl|g15R0QC+sI}gu%M&Cq>2T%l+)M=tXmO zIbocYV+^ZD2W)lam#nF%_10R$dz|yXPdJF&d^A~do0}ueBL3LuY}&B8%JtT;|LRj; ze~>pg3!Oz8f4`kU|8#)P^6;bob(a4CQ|m0-&$pq&-~&P(1jkMXNCaGE)aa0PdmUk% zjl~r{z-PS$>n>N7p7R>mOGD4A!{Bmv&08Rv}%k1lIxf4q)A zL#RDX@Vx~RV)PwMc!l#f9OY5W+)#3StQ$$%gRoojxFG}>mpm}@%kv_Fm+T>@JKVvC zEXDIF$G4%uDG?}nH&}GvD5AbKU$FimVuYQxW78^@_3s2%#+2go2=~C`OfZc$B2rZv z@QgeE6X8&rQ-o0YLk-&er z(+b{i0t^^>x@n*6%8IL7sfOqZD>VH_I}PrTRYQYK3rdTVc$6WF@pr_n<(VtA)1_Gw zk0R;6h#<04*oe;##D_pJiX8i=80{Ro(cxW7u*ia)Hv7pQh%T%K^*mi6`>Ven>G(gE z&N85l=6l;fad#*##U&IeRvb!!;!-GHic{PzP~3~VyK9S+QnW~LD}~^}gFDGT&+mP| zCA*u=&b^bfCo}iC2EjLaDY8d*<~8-E8Dacx2jM&eLwrJlrz8`%A)7TD3Byl*qLKWhqbp)%b($p+Q+do|4qwwd{$IM-EsZqj zEm7tNt|fHdTbFX1r5|UE`Zv|GQgfsCVPk!gB5{Z?n@xi@9Ib4jEn19 z@oOMn`ESG|-~YO8tN!j2L}m!?;>-}s+{_JcEOmv5E~X)P=9M}e??H)g%^3^6z+wJK zaX;)J;MEX>dT=2!)?p_C9c!j}&V)SXE|>fRpS`Pq&d&aDhp8pTZx2*^{~So;b> znE{hX_+=6S65J5g-#GDOuaO?}&tBuL<-VhbGu(leBNy~8oTV!`?7?U6;3+Ucp~>Xo zhOel0fmCtncp4BW5Tz^Zz?fGenMBt0W*iYVr@w+Q%|=2;FDsErdC$8l<2K}f%hxeg z&KnN;eGf9qUVXJlqT~$*xBI8B-x_Zd$L{^hh1L-7c{!1 z-GeZ!;V{*Qv?}gVgeit43B_RGnklN3d051M zW}7nf)1J&T9!6i@gE-yhNs#*g=jPwwoC&#%ex zdy&5j^GP3_z6@Nsz##PNkI3-g;ecYExsKA;Q1BlBi13VN+tCjh9&S%iHjirQWLV9U z`2QdW%^#yQ`ho}lc_wJ@I`(2!@dw0no106&^HLd4yQjGo<(6okKsUccu4?&%q5y>1 zhJ?|yBNyoE#&5yQOt}M+1Q1KwdkFqw&6pbGBMMo_nwHgw`ky^|HCgRH{T|Z) z3&F@5;3sqPy`leC$C~A6jf@UlWg5IOPmmP(t;C=S1k%XQrfiK}gVbiy^@4C&`Q8DU zkbA#J>dN{*U2`*$VRs0rYh=_`RPTSfy4y5zA(nC)d5%kV5uYvtPe7UXAhkib3t=*% z`#lKps0uJ&SqQ%eaUo$nrR&6Pd)I6`EKFV;!m)J0g(mt>ERql=yWaQH{t`3OQC91B zs#jgz$=^0bz20eTAKA)2vwwmpB_u=1!X5-x(k-bYwL%4}Sq6T(%q!!tS_PFfX!#-* za|wG~(03fDJ0lVUiJ~v2Fu994LakPvVm@}`1>n+TK0Ak!7#~DiT@_~A<@&PU5#0aC zcN7~~`6qSwX{)~BU%Ln8VfAdbaBhLzT85zT_gd=Bf{*vgbP2Rmqh469%O?Pau*#r6 zsOQvqZ2cSZsA2W_Iwe_Ev@2Rg#S6N3ZNgixr(OF!6$c(&4ZEoc@cQZLx}(>^BZ*pw zY4%8Gi2W<7U}-)f3K#H0jdfKPML*P%eON`KZWZqBJ6*Sr82)EAgS-SN89ICUXpcX2 zn`Yr5XfXas{Vn>4c)<(0Kkd#bJ~jvn*bT4XWVfY?8Z|6(ZSWF=LAs7{NypFrsr42HqoDnJ`XEv>@YJYCGo3=Ooi#AE!%Lj zdexrcF@-4{`D1n}xsVbU15)dy6@~`))%`8_OM^`cRCJ@`1g549*)tn{R5_)b=QaG_ z4is`BTff~~nofD^Fz_V5a1a*TOrTl26^)qalb#d1cNYs zcmf7YQ0A}4AVGC%$K;`c>O6t}Np-=NU1!L%!`RC}p8o9BuY6DV>n@d?CW_jIyh251 zg7?8yev;t#y>d3BhxGYa^LX5LWd%ocMeCnguW546t72I;rvi89dHB-8B~nv#SPn%t zsxwnA3RsQmPtF|g9UG#*} zkFk>fLSDsdnYV*WNcIe8!o8)ixeV@MrQ-xqSa-gXqu}p?oF!0Etx7S z)!O7_F)s46DwivH9D{scY8#c6bRh)ET0ZTj-vRt0#OJz^^K8u-_W+^&QZjB9L_~xU zlwyj=u}An zF?W$C(xNrBiE zGAHdrnkQN2>A9Xe6 z2NTmAhwPR|LAO;&o;Ldw*CFbJQH2^Ni=i*fZgH8Sb+|ifP+{_)L4;1f(G}z^-^)l0 z=2#v2{Q2%kUW@lv=!2kHLZs#MWP;}5S=V=I>KmeiG#^)H9MFW(Ylo{;6o)bO2>NV!J`mCbhzj_+rj?B94H z&QRhBo1aJ0k0nEUno8V1C%l}V}CH-s}p|_DH^>f_UPEV(wQ^D&_)4Jp#RxepxjWxA;&|< zJuU0$iwrQE9faoNgyE`hzEoUKWo`BA>^Wn7Z>M31PNd?0#BiNIfuK%AQN$CRF)|(_ z*4&W8m?*41v!PaL63Pj-l2gK2xR|B7DW)R*Mt>JTj<_{nF8p)5g2E7=Mo=*lvva+V zx2)i4jiNDbYc=X+xhc)F`C5UNC86zHNM}a~Wedi z#}6lDIHBe(ag7iho8NOGflDpdg*L;r_2NE1P9!6KhxGk|ojDWPUb1^U;B#HPIC{U8 zS|J~(Mfkv3MDF1qc=cI2oyX%h(Q_yCsQHOW;ddM0=Few?}1XtaI#k~&KyV_k|^ucc7La^JX z=eH`?^$ikUhx65~3+~CRg;a2+(YA7tNRmvKilnE2Z`HAZIQedUQo1UfMW z1yPm5C?J-0C)Znx&5y-bU%67pwjI#4Bbi!sv~)m9q(MHA2>)brEfN6b{U@Q=>yq&E)3; z>{w#DueuCNplT!#K2r+f^C0;_XmGyUS#0x)CnBX3whS9ph`}b>-L^6PM+6H@5vZ5_ zn))^61f*2!D&WXmsNm-5t^G%}n7U%^!vyFivxr*9GUqDEn}ATM^GCzWzH(9p{8J+Q z&Q5cB9L99qFKS z;%^Eh97boj+Gq9r|B9NuWB)>&i8|)Z zgLf+Ys|YZTk2z=_Wjp)ZhDY&r7}jhXSeQie2`+2*W?+sW_Mj9NIl6E8cZ^lVun=W! zIojcM=@+~W-xC3?)|YGmywJ5Aiibq6-%5PcO5t4X9_X80Z(TI&He)jbql%-cP9vp${PaYlRiw-e^)%U3vZ^YW*S$S}ICwnepY>X5<|xjS@dlia#`xdk=)pUB2U&r<>AO>97b7q>hR%Au z7-dS`^yWvJq`<%mnxs6X^pO)0h66XYK~_Lf4F~n3zVnA@WsSn(LDo#2`#hk>TlXW! zoqzSd8EwxpzhgaaJ><_`6%PP<4MuBMWur7{-@Bf|8KadMdX8m8817H3AE}e_;NM7T zOnmHTeRo81)7<;iQioZm)=Ex+o%7NRes>1t)1zv)#7T5sjwMHilG-uK>xJX~w@KT` z!-zW5EWWCXjIbgKYK}j4M)bUcEh+H6?wZRCEeLe!AxR1h7DqKsaY$5NZ$#rVs6Xv(C=omlx6%B*V%et`~YY=>N?y z6XpDE_}!3iPEYRE??jU%TmdqQjo2yg6J%?*IWl~AwB)&JO|5!;hjet`ww#cy0iH)D zZ_Y>Gm5z>!!k8J1oYIWlN6og9qkttNtYM<5_gC#Usg0}8SOkJrwlkSG0zUESuVZ#$3r3^~QeAG2lkBQ4TZ0#+L@w41xkcR$o* zM~Wbd*-k&cH2&^863DE-0_n0GdQNI|8&GvS`a|Pv__7f2sH?t9bl2`=xbh>8zfuyq zR7QxP(VDl6pQd4-w|t>w9og7PGH-bbHbtD%8XSXV6ydtJwfLr8wn3G!kA9n?hxbug zN|2Y2`Wa6eQV8PKeMu{j>VeQ9JTt2pMtW2G4<4;^k(HGZ2panxuUPJ5n^!30F%elf!Ren+kNE;}}rXvZx2y--y2mbqU{_baPW4PUnKbEq}k<^uG z4bxCplRapx9ypKmElNB-bE_q=NDbUHnU^0Y4F{(my-%g5e{J8w_^79DK(-$B%pGUG zTuM0J_$xw~ijyCIxWW(KKftME&%>IU!Hdk5usxK}troNSNsGCcoRYkCyt}bSQ*kP;eRpO7ecf`gR+ba_fvw22+2^@N@Acj-vau^HnMG zLr%uPawaHVAu7*#8|o?PwU%w9$WL8CHS z^@8n657)jiuA5nHMIob;%-av;X7_;0ffb+R)m4AS^MNGk2*x*L`%CCDbfzMzfDVG>V8;{>7B~_N3qsTt53lU0&Iqy}b{asu40+ZBh;G zz%H;&?{ll3Rqu0()pD>&&{o0Hst-E$MpvV*`gzPR<#)oxUi2$LQ9;6kE$i@S7J=Ux zg&mdGH`ZuRl_+MWE;7Ux=l%i15}oUCJs9zk|KpN*c@DCbk$mg^pJ%UcSl4wIS7`wm zHtPV5vd;5E_szn3B_Y^5;mhEg&=dbhtX00FlkI9+BV*8)8UHEy&h z@V0kQ?{j1Im(GR7T;BE)BK`gV#P8mQcA4{uzQ*=$I_fZD!7e`+!3VtN9e9GFJ0g1U zO5gVV>*q%@t!a}4!Sl_X&;H<-VQdc!e;3e^J>Nh3X~sZ$l;M zMHmU^g&bB^nUv}s7eK`iBscc>k8wXj$aekxg|wh%=IwxF63fnC9a5@)ZZ?EA&sNF9 zc&96R7ZSxUfAX=N0)q(bB9DARY{bIT`cdkS@hM+mElOS)_QtEfn!&jai2ro_`c1N) zsj%^al3)Uz`j6W*Bi@t>@uV2YBr$kbC6r z9zxY3-asx5$XJ+|(Ry8dY4!}CIqtO#)XXdsn!j&%0@{xVE8;&Z!DP-3{ZI#N7s z6y0*E#usDl?0)T>XVKxGogbvvD;-g)qC}VEH4O3o9YPP^`&a|>+3>XwBVz9CqmJ0Z z#V7mw5PZM?xM@@6P1^PQS@*?n2Vp}TbSh@i>wH~>)6K$DmgFbPh|k{`HR?ri<&Khw zSKqFoeS2fuoq$tt7>mef`--n*_+t3ek!%%vwB{N;a(4Sg^kM&wB<>%3i3q#o!u=}A zJ?!Tsl6Cvb1nfqh;MdB&rsq(%gcbJRwC{{iX8S@ESGi(H*0o}T!rOoKv+&AWu0O$r zGr#AoVzySKxb(jGq%^He+TpPe(mWRZRNcId(OUb1fNkv!^FbG2_C=R`c;7_mr}&0Q zU&a|z)reex&Q=q@QHx>PzZN;Jm8y)Zu@vRl6vu^>2nQ9ZpN|wuI&%#O=y!CZfPZdc zR_9H~Djs*9V9{vDvwFS`{l+>qE8%mghS9#skmRGyf;8(v<$CFYj-@_t#CDxZ6R$ z8VW`!E~Uxw`e~Sxr18cQooN*0cG!8_K8oeIAc{Ih<34vxY_4Zl%s8Vh;3Q$@E=g zGxq}9tvRNS@l@U;S*3UfOW>%CaV<39Q%PT{?RFq;`cuJqNn^nL6Zo&x2aG#c)=bcGQ%OYyMY@(tKPHcR8Qj| zUe#A7e2_W+O$Gn^%&NDi2`k9g7pZC2zmcIHT-Mu2C7n^)KozVga=xXzdi~pUn{)~9 zv3e|?eB6I?lOuN#58>ByJf)?>3N3$u} zYmxtTMDQ%(fpVS;yUgxR@BjAIQ>}aEwm48#%`U`w^}0Tos*2mDI~N--;f=J_LJ=K# zC;pZLUaEfp(7y-dW`HM0kCJD2Woi2L@ALtq%E4iFQ$SDSl1*>ZuGcJq%LLnNAAO;UyteckE} zRDI2Q=71jeT>D+7fhDtywW&PpPRQSW8m_G1YYtrq{)l&7ytHZ|I>Mxo4|6oMES9dJ}{x?pYroHnBeev zsWs)Wv38MX*8r?q1LE&e3PKFkN$odA0V~q-gdK?5FI*>Eh>x0H939sEYF{egQ!<*O+ z>D4fJ&FTF0(!Rh!BaSuuv&a^PJ}^S)nC<34a#`bKh;GHe)-!iw8K1tn(6LZ^3iT#i~sH4%I6h|K&k+^rjqUquSkXmZ!o-4m^2yj$loeS|-L`l)mgNJR6%K&Q%a{RxZv3?Ka zs~@{i9r7E+88ZF+@C8{~_pzqZq>^0Hi2Nv{Rx+qdL+Z@G+%Si8QNfyUMsBTBmFqG& zcPx6LuvIsn7%J8RXz6>%*11z@uP6*TPR9UINp#&(srGm1G-*=)JATv?IUGLy(4U`V16Gx$ zhk2%lbBhub?Y2q&%BWOfOK*`e_^x}rcY0}L6E`H05h9NzIYkrVorq=!S}UX+n=QaE zvwz8!+l-hZEWTbA<;0IW1dh^1K1}&kA0qsl`XvD<_z!>|xtJ-}3kMsqnOEFyMqf)! z4rp+mjx*d=1jGG4KbdQFX&Ms3;O{;Wc7_>kcW!imRoz1(8*`O+0znLXQBzuPr}kfs zGpA=9xS6sXC64gD8?Y6Mu5$d@JfrpT!#f2cS_1VXTBtaRGqCMdza6J&?4S&4De4FM zytA=C->(giUzIK!hNrz4^3EcP6u#&uK5<*?={N-pVy;%?PQ;lb%&bGhaCU>S(0Kbj znAxOG@4A@~?o0L5xqS0$Fp!dN=@%5fgfJJf49r9Pr7@@$d(M=dGfjTA*Dpx^nGe~M z=?mb;e#q`wI~iP%XlfoD0>ayX;ohyH0CA2a&!NF%>ykm+YpF)F?sjh}uV=)g{}NtUg{qVad)Tk!DbQ@m6dBGB^I@QBsKlDnd~_~J^A3Zz4k-zY|4;0T^j=7 zr`GaWOJFEIkA*Z=F*&#ICq0#!`g9&PbUPh2NGd~e@a&F;ls=|1Aa3xLl6Ue7OI#zW!aAuX+!C zaS5O@W_4{v_iGv-TEsr*{rRp4#Q%1AWr$^&g{dOdi4Foo#W{CVbfW`tO`9&RJ#fk2 zGA)l9Y5(~56K&0UO%4mE7=QWQ%O!jY+~cDp(x8cI;JnE4Q4rPan%;(00a|ItrQBz; z7y%4xi)nLiCc|;_*Dfx;`xKpxMItA~Nuzvpf9==S&-|pZ4{$~tUKQjBKHg#-eU_1E zprX(k>0@c?rzgRaB&gh+q5BMNFoM7X<2J5#y*>fPG9lW?uid}^$(dHV>uhl4(F?S3Q7 z`;prwRj3To1%UF#SZPlW-ui0+fE4M<+MvqIeW(pLeCb*bgKbkfUs=Yv;}E!}lAdgJ z8_4jS{el!+>QYo=EaJxyw3ZisxvyEt17GyegJYaP0vLiGbv|iH+R>|gL3~kS0V!j9 z451y6=&0gUA&M&c$rv?f37iA@1; z>21E!FK0h+-G-Sz8097s#akY&DU5iTgs}S-fm0PRRZas#=rTz^O3MWvx$z8wg;2MQ z2y=SK)a)(_e3`jBl(k5MZbthGm8be3Tb{gZX)S{7O=FLOQ%`WvW5VNWD2E>c66BvO z(<}Og2!;?Eo6H8a-y+s39cOtUtnF5(dY6v~23?VZdcQ|F9OQW8&+uHC59!)N89D?V zQ0j8OwD#j*dXS!D^)_CflkyWYB`T zs+f9o|1d4GseI+Uo16P0_C@$1#4FhG4}cHaUNFU)*t>7Ex9p)Inh)WAE)Nbqx_cYT z_NCC}Z`##BDff|HVc+egagq6`h-*=ax-$I>uc^*6sQq7;sFa@w_Q244?$^4g#S7|4Ans&kPb%tS~^Wzd--1UvFMSUDHoHe4)&^_&L( z5Dx#hJKI*W_%trzLajjmXiVWceou6&=0Z5U9@666LFr_@pK=6R=J+Mk?K_r>eGy1R ze$l0Q$R%Fgy;DYyCzQxF+t!FDC>V9zE@1U}=^{19z0cd`i^G*b#X(gg-ex7a|Ckev zoM!b^oB6R5bc6D?roq$agmTF!_oJtvOffjlHvgMw)W&a|GcCwdqjnjwlAr_tUGOT& zW4IlqV#Rm{1^(o5xAOVG^I>?J{8D?=_Ab{$I}4!nPRwS2{{oGUR*syI^n3WZ&_h7O ze$DJaX>OvhKj&lGX9x!|<-j=jdr;SzO}VBcNaw+GWoA*D-g&7qz0F;)$4lbc9{;+U z@=^FQRO&|M3d(jorMRz|JDVF{vH8vg8!?H7n2bh9h9G`asy)FvRQf>yvi-nuZRBPN z_@#7fKO&+O8?h9NgBXW0!FQv9Pw=2$AiQ%K_U){|9s&=U7na}oj8QiE74HBYfCu52 zGh0z^>?9o$>1>kIS(5c>moV1`**nhAGiWQxCX3?T^W#mpYj8x?xyGGZrD=_A`N$rc zLxhCG>FU9iEMyGeRrk&lGqJ2X_z>(9?rI%YCN32_b$m@-4X0!vR9S zqQRRnpDgo_(4XcWGnvmSWqzQptNzkl8Z>p+_|`+s)Hug%KK|YONj~ar+ofF9B2ZYq zzB%jxTW*r6#=qzlbTfWr5Vo_m#|0;v>&Z#~LESVzwUt8$Yi@B-e4M~+xOd_)V{ zL%cz3TD;mv_j~bp%==V1%!Arp;=!qwpFUrHAQ8Yr`HSewhAzRzfW%0&CF7cT)OT}4 zF2T+=_JtkYjs1D-(_My3z?-tc!@iXiQpwSULv+bQ^9HZ#XQPf_>{G^lv?B9W%nR+} z^!|!%$*FP!8#>gTC+WgbBOOB4e_o=W1)at$5ZYhzg6&>w2oVcUJ1&69i!zM}rm#-b zS0i|73@;GlLA&jLlt^3|Tiu6BM$fwK1L6jxn1MC==il6W;FGIJUVILiAkET z@7p4-t3l8YGk$ZqPTDK?1U=_r3Q3n@_tghNkOJveQ-2*Mzi6G%`(50|{UjV9R{`a4 zK5UGj)Z+D&v=PYkY6@om_k#6%)(RQhYX!xU@#HKrp%#Q5IfMo%3jYMDGGTGJBV{>M z8{yO#5q!PcfRZ9H#g+nZ#ebjUMU~P9OiRxjBEt~hzKrPJlz%Z3N5v=^GT0eI*|-~+ z)ORHnQ|$0FWgxG*(NF6PC<{k@f@^0MYq(zn|63x6}u&;<^z`>4AZ#f;&Aj% zT-ugn0ej>!K<^z5x!V1D;;}4?Q?KP+OiIYRf_iB159h<=rqI*n)kb*wnUdJ3uYB#d z`i>q8HAKJ{bkpPgMM9Q!J_WUfyD_n1(--IHdu1FGZbf(n0-ssqRP8gbhP&&VlO7URM|@LzYljS`i|yS5pw6yO|iAjfi`$a$Z_C7jo};#Jd$JU zL`&b{XxFA2<=c`a>~|jY!Q{YQSDYbzC+>Qi5ZhBl>yp941lXUaW-vYMzQ^QxU9_Xu z`-N34KL5mIcJ($OP3{G+vEWFq_4pOf^xytxpYyh4jvVW8><3E$$EBFA5TpB_dbqz3i$f~)VTn5?URgbCX0fe1+!lpK}Jj#``lhq&TV!W460rE zCFd$&w(1*g$V(Rj{NZj?m=np*mtn8~$<#A!?_jZqdh^ zMweIGPfi| z^@}QrCs?B&t?ssgL;8i7=Z#p#jy>p=E5Du9-Kl|aL{e}(QxLJ52SLRR^x{4mv_fV2C?8aOa7}o4wkS3< zus!0yz=L8N)dkyGeKX8jJoiwz?)Y8a78!qqF^}26tyI^Xa8@(;PBN%+Eq>r#v4Y-q zXWjI*YqE5qH~7iTb-H9qC|PGuE>9MZJ!n`=x;1{}{O--1SfbOmn~DCwc1O>j9*20M}Q%8mo-C?8Q=4~q)<=E3pVz7_1zZE&YCFpfH;5IALbXzfr#CXcDsr`f(=?NTPIbRp5UP+WP&^F^FP` zYww&c@=f4egm4-oYBcS{f&1HGQu6 zo%^=0VH2(QP6c1znkn8YS$B#LBtVxaITvSoth@p~94nRGtBM+=z2V%|5MOK>nT{oG z*Tg3=m>-xUtFM}<6)^0TH`F$USn?b)>{JHWhoEZvuc5?`RF9Bmf!^Bv)Nf%B;` zrN?okwk1-P*1Jpp<@N(H@r%h*b3^eIhR7-{m)Cs;Z$I-W5?shiUC3r-5ZVbTmh>t4 z{n9C7S|bC#tXe--u7P=vm|qO8+8tfyh+5f$`$Zpb87Cg7ykl%QqkhVw_h4&0R*1h3 z5wa8N=Ly<2BTE%7IHWno^r3w|Wa0F~%BZ7ZL(dmvlsaE3PAaWRV(ZA<$nU#2Qlc}l zwI{)%y2c-QP;!isdWb@lKCPd;ABF+1xdZ8_Q_~>r7-{a{*WOQH$>g_6F;DBknl=5f z)%J0=FG3&?=Us2K0o^Rz4U`QTk+N`w`a}%oe_XfQ1wWL!UN4Wq>~iP)LKoY*Pet#7 z9-lD>YcU4@p+`qC4+^1!0ELQA(&fZ{{b5h14y>zB+UkGzplYjm%UG~&48N_Ic5Jf~ zd9xEaGd|iVHmij(!P8}qRWMrBRK*2 zkt#P+;uRYkCp{zq$c`~;9-Y#`(eew1Li>~5T zK0!x*QpcK4NJFG$G`NMaBr0jEgBD-gk-7#vQbWb~y{bj(ysex;P~_kFQe_~@4QUZR z9sj4gVF%r+9DPxuTmFS=4~RnrSguy@Fz<38{X>5Ho}iamcC8llfE7LCyp37S>u|z2 zVP4#JJl(#{6st;zyxIe1H45p^M_yD?u+unjxE?lKpeObMJjv zsPTZ7*K338G7fLDDj^r?lArX|LSk9h=bInschZ>*##P%}!y+}!N_1`KDL&*6Gzgx9 zr)#q$G^Z>N-wG-hgC7RikPBU_RDyXj$zVNQ!xNIWjP{%PklxA*jbaa7p)DHfnhWrP zhf_6~wEQl8RTo{Y2A#vWq_SDj1^BX*V!ac;HmDoK2a9)_t!}+ntIQxAvq|d#IGl z=ieg{cW=oTsxMD;w(@hLvwhkI_$j9UAX-{cIhp`Mfmf>n{lPOq29M z44=m(<7)KRjyo^Q<(B(OU#9_uZy#e&WpF_ReOBul&4qD*va2ulknm;AcX}&?Dq1Z zgso>9o2y7!T%G+%-JTs}(tX}dHkE@-T&H-JfNQ z*E^-^bfF1DAM$VF)O$SEhCa}b@K%7UjBvefXt|IB;EUC*Hm}dYd2y3H9>9zUpW)u} zi^TCxd!8-Tkq*ywmGfmC=yNhROm+dL9b^$I^pjbZ`cIZRC?|fUP3-yW1 zk|;E@+@g<{A@;ht6!hxj(XG1t!<^#79_4u$PDui5Gq>E!|G~=FBjnjVCg}{V5G7fv z6i)XEKKNOVr12g02-S(;>q8{)8$Ewo=E-DM#S2{!vrGzn&hu$bluUMvottr*_={bk zhV!Yg(QnIfi3|>L)h0aDDA4z~^&a;ltU&2? z8ia7higP3kA#m-B>#1=<=S3|}iif<5Z43TIOEi+%fmQMD>jBjjH(;uh{KZbbxWC<4tF)Oty%)XhK9P2f zW^Ggg?Y9TbdpGP>0h*@SZM`y#J?%Fp=b8D_8mcuF%Fw0gcQ-I6iiE&m8sV+pS(6{~SIHh6ECK zK%~QY41Bx_gC%6eKBM;s@3Ie6GWPsAI{>vHtO*)xeIYi#n- zV$+1g@5TXhpig9YqRI9}USD^^vdD5Fx696IC9z5HkW(IM!C$_HI}PaAnxhTa5whl_6fcjaPNV#*_}s%ur2 z$xEv@K7Az0qxFvdXuORBa|t01Gdg(3Bi<&jFM~rPiB97o9rwm_IEPkbt!aQFwN}_T zw=I&`7faOITB;K8n+|IuZ;C;a?6wV38jxh0Q$cH+^H9lN;O^fGo92rNXh->li*oj; zVwdwaSKa1~XYZ>%f-ISoxW%E%j(h~ZiDslZohOX!B(kY@)_{{JiwJL(9XvT-F#rj? zi~9xnbk|J=F9-)^ZZ=ZE`$9osHG)63HvmL%)y*j^;Oo2YF79(D;o!G!wiVD1mD?8s zCSi}oD*o$T$)=}^PvlDywtHy}^$q=Qm1T}OI>Bb_r!t9>^h4)-4Wixw;J=#_9kt^g zdvCGIjANIaVz`RDJB;xtw1D(AMor(328{FUCi*siM<~KVeO;b&8usG3OwUjC5q|;O zk&{dmF8eJjN*J#sj&|dZy63M=*AYt+PokZp(msq#_xwmt7~7;$49;Xn6fQsN4_k>^ z6od1a4$W;8(rTe}Wd;SN%dM*)ve}B!u_nUi+9Xet9*hf<(R)8itb2Cb)b-|0OiXxLxo#sDb z+2DkEX2C#biFN)tbxyvY2g4St{&qnNr<*8N6u+WvV(6g5n`K$8r%^v23K^Un zR~Zvrm^2+1lgV(dZWWA785~|v5fJu7Jni9VJ*z*+)h)c(m9fe)Ww8Q$`~K)9I|5r+{>->9>s%l=A1QrTpvU# zA1BEVNb+nv{3R+GG@u?`;d2ZBeMN7c^Uf8924do1{^h>{d7NL7suTKib^AfQFBzZIAfc?}P2U zb@0KI7=g#9fdjw1f{6n=4Ir;g@a~nmMz>gRCQ|t$@%;bp!-%UtbrK}>=_!chHun;% zLk8x7R7lg^pQG|?o*CGlzOpesI8SN4e94_5MNpKHU3Ibo~>um9UjJ zvn)2wT_>*_dYy%>SWl?t|4u~CLYe9COxz);zY7y6Oj%{hyO}8oCI6_Gkxt3_gV^~8 zx}GULw*2Iw>np9J#>ClaeJoTbJ)TI^nt1fUekFB+zUb0dZLf$;c3k;U-x!8}(1tb= zEc9ny;EJ~Enn+mvw3Wb*#l#oxF6oN?>rSbkZY8mFa=t;OawcmkbkkT?M>nD!Zy6${ zpnInZ>oZs-j{V#n$5LD&P(}dXC^3|puBlUm8uz62xyMqg`6RdhGc~MZ26Qy1CeCV2 zY&zMwc7%l*{#qh7JZ<#&qM+?l?c;6jWp8BtV{SW?!>4@pz^%|cFBM5{c(r9rx$rsk z9Vkmox2aw{`tc8;`fUGLjw+CyDkF2U{+G18#sJs%S%KeyT%4C%f%w92M1KF{2qi9M4aOx&s1w<7SDLq9DVkp5Q`YIv~BV;JU`r}l6-?LQF)?LbVYq(@fyL=zv zvB_kjYs6A+LieTfFCw$=8WAr=JHJr+tmfK++sV8qrxe6VI>(*tcIQ#_LOT8WSLR^O zrgig!mVnlgA90 z%93*{8ka@Ah5*AVSxX@-Bo0|$xZu~?gYVUO(TL}oJ9BdKQt69} z%+pwRp8Nj#hvROs`wGg{67l{Y09-($zp6jk0Ydm>2hAM9Z%L@3sS$`uLjr=rvA~c0 zax4wR>K(CqdN6T%b`Al9F4l+YCOYQU2cVtB{$)TtDv%w`fiHd-2F!^Hf<+xm>-|B1 zFNlb6O+>@CnaEH}j35>g4U_b7NXa?zK!b;B8+_5I14JLTV@zQ}-e(zj2ZEtKhr;*_ zxGaN5W+bD7j?jXO{k1XTGr=d&IAILfg_a^}AR8Nfk!1=`0mTWBWC`xIJqJt`J(vI= zwdF~b&IuCY1f7i#$47n0Q3}cG@YAAb_62IOlP`2!AOr{gRt;E( zBGrqR;=_eG0@HbQuxGRNh%mj1OrY}4JH+jCqa?|6uJ&VBM5U1fki@#031NC zrEysj@G%1{44rIZ18B=S&zLhnQB5=`JAtV^0qEZp399qdOh9ZVMB38eF%m~8p9Gr& z_ac}3gVCl486z}|#OA(+rN}cN`2uweFwzt>llQ_L$MMAb(S*^G90C~Pj|~eaGAay9 z63flB`U&G^YST3Mdu|kbVqXySBX!B4n`jPKr~ynLN9D4xpLOIMm|sQJUT3+pq#8}V z;_~Xsd0tSGW_^vnlisf^cb3ioJyl%gRerB5mpT!EqN)Kqk?bw7c*-gYQI}K}6&23` zJE5eE^{IdfinF4^Y^RcGQ8BB$QtF!u$VaOHIue6k1RdEIOqiUTJ8|L!Fvl)*oZ~3) z`yzoT2*wLAXW~T4oWavr|1lRbOZ`otiyELL6yw@@!6uMw1O_23wJt zhBgG+_n2GV1RPr(sEZ2tXo_oS>?-yXa;FYK+CRB$cca~gMpQZE6@==@UM6KIen(SB zn~U}+efOdrzR(wq)iJHfo`DpLpbe$X4lWLcmIfWgkqC$zv+ys5U(m0jcDGpUGMP4NwcVI$9iHa-elH5qx}u&cwe_um`DQ6T{5`qH~M} z%vn^V^Jyit0$NkUz6mQy@IRPa8rH#l!;7HbXex?X=tMlwrq-gMlBB~{Rxn4$!&zQj zg_D5j(&(dciPks8pi@DHha*wxThQR29`TdahNgl@WA31+i=@+vLgZ)R@IY(+$O7O+ zqETg8p-aHRrnPV=Z1M{m4BU&Vm|tNEBP>gQ1O|bioF|^L(i!Nc0pAz9J!W}QST-Bo zHfLp}vv8*7tvQ7J*BVa4oVIY<#%VjJ9h{1Gz;-UJbQd~3Q=}0dTu|p<0^Wr5AHbE+ z8UZmJ8*p2ZGSYEH)-?H(h$k^&wc$b+`05;GWKa;(6*!B4R_7HLRszpW_eId(nNl{p z60LY`f$;APr%8@MZ5@y-MEGH7 z7c?=n>|ohJ-4fvnP1pJQZ{&Y+|IEBpT813QJit5xF17{=UE71$(<(s7fI2Ni=NID< zFiC_QDtD9PBMeGS8y98YPPphAj-d`pxNMB0aI{i1_V;JF=7PVj8GLKRR)h|4+3}|v zoS8-V;#Gz-rN9HdWJb5ha~d}xrC9!olsq@o!S2Q|2q}`D8lBkJgD9ZWJ;mDGLXU8+ zQI7k9#9uUUAooY&{G|X1h*E9?iSH=`aW|vHSw6d(R^l8) z%Vb=1ssm}L$OH1T8E1;|sCGw5iQrihS{mvB(K@yh5^)^#x2QjYt`#5*W>z>$i{`q4 zQlxHNII0THb6yeLN=bUDFvDU~vsg_$U8OuY(EnHRto z6j$o;71ZI#X^@FRR0Txk%W1U9Ue+DOt%ut^eeDCtG|1V6TmO9H<{#i;4_y=E27xL8pJAap#` zbq8Q^Rj*6?DSKR0pPw?`pr{gwhuP?*xiZJA_lM-5A$MiaU%;z$R?MF123rW93krbN zmiUXlMqnzeY0^Jmtl(FHCUavLrow_iLqIHv>GNInsqmBS3odg6>xlT+Nd#ukx2EMI z()Bn`VO~!NEu2t}mYSmi7b{@8*7=)hqJjffT{gX%!c)~)5$7yu+#IqQN#^Ksqd^z_ zJWi#CayIbL?Gr;kh-a`POzW%qqLgXe44G>5YYHL;MqUMA>(VS}DC@N3(rG3`&iEbd zM6b(PQ6|NKS>G#$CiwtBw?#?#9uXqD2WBlU#sOk3#-GfQMHX`d^%J^<6mSsX3&Gde z5%jk$b}q)wCSmx^2;6Zn&T+N_WW z^3k%ct&8Z&NFcm7f13M0Bgyi%Iu81Z82L!JU~2wdkA1S9*6EHhEydNsdF6|QLP1&p zg%3{=Tu}*vN-CsvmB6B=P?Jf&7FC(sqqvj7e}+uAU1-z{KUB&dcql6^EfxYrv$NMY zew-|HoTKxVS@FP!RGJxIWIvb+7&YO1bh;I}#rDs_1|ON&(!Wz(Bf)>w!aX2k z>v$Ve86IYP*&&^*=n=tp_O=kwP+y-ug`O$asyGVOyqrtX8W7>d)1APB6^2}4F{S7s zUNoqtfmZlak3Hh2PF*)L=%91F$)6FS1dRf^{4r*KDAbTc{Wq9S9Vf;{!NZU@GQbI+ zl47&GWqfoOO4uQW|03;2j9>HbCXtU;JWd|lO%+7f07XuurO9?{(t&c$nW5w7ED|!n z#6PU6YjLSmk8A;46u44Y;7U-n@T5$7+0FhIFB8}MqK>5za5@}yz#YM;4oox0hZS)x z{UV)ntYLh;PtmC=-U(w2^l}!>ae{eU06x%6WnL$QTU0o5DG0`~!s&3<`NC+P+lXQ{ zUTn3Yxqmp7O5L+&7f&g7&yfnC8tDduC47IwPDDQC@B@8RI*NTK!Zxi7EL`Z1h|NpR zO5NFl2B@m2QCb)Vd#7p4PCM!?6h zXa_z1Zi>C(#~R20-AM6}(87h#MkpBZ1MQ=J!@nqk-cN@f6`T22(K8e#(C062^r3xN z2HQ)2H=*mOMRa#dV|iLSgW`#--wVo%oim+to%76ePK;?6V~D~$&ytZF=Ur1HOcOQE zXB)US!vjtbE(r!@BSEkpj3@v(3Z+gD1_H{Y9%OyxDl4lrj9H$SsB3uJjfPamd1s9~ zs_Sa_iTJ|}zFNN)i1{0pbwRo9O(SEN{Vvp6(lM5HzjS?NK!NR{8U7$lIpOl|%aVhx zXGqAg6KZH1n|)~P5|M3a{@o<;dA=AjU!5OH{0#LVnE#Do^Zd~jme`9|Ew`O%u0S+K zTN4ua!^B>CJ}*}#`XgpHS?oUp8Oi*u+cLb)))=UR>B|dki~WY(ZC&S;29EI0jR+FM zl}k&?I-D7WMCQiSutz5=<7P4m=z}poHJ+`;Yq%cm`B3=LLv)>BIhxDYjtdCtLGf8<$-dh=S-{MnjPkg{hKF>!UeQTxM0{sA{-G z_n(Y?V5C-P=hZlXV$8ni$&N*!(Rl_+c(~5a<7#ZM(Z{Dkc2^6As{PF%<3LQ?`uQe# zoNNJ9v}0Nj()}bfGI7r~Mox&j#K0Ic;=p>(m{p{|Ugb5xGx4~&9dj6x@L`)ZfI1e^1^z|4VX4b=Tx1sbn_LvB zr@duH|CDVUy#Gb)Eys_Es2axhs%f{7^aCUuQ{2b8Af=h?PgR}D_7e9MDKc61Lk(e~ z-6Hqa@UwYOQd1B`f*$#u>1$dDdMBxg&;3%DuQk>2RO~oi2iAtd%VhhyKPC1Md8A;T zZn2wGI|p-dH%+Ccf&}IrM3jS5aAgw$4 zgQ2EH_4{UNVw@RaOXpYWOAqL>#67AWXxP}BiXYnJQ-}Mygk#nih~lpEYH4fh`)rgw z6P&O6OiDlXC2wONs_A#q3r>#*M7y&R-962KXZu^?xhDs0W8q^@YFv(FEZg(e(5WgH zC`O>meT$;2r|7JV-%(0?%ox7})tjtCx}U*ks1$qKWZTX4gJFkbYLV;p{swZ*tcDpm zc9x*)jPkPCUQ^Un)BKHLT1moQF@4E5Fyarw?2ZAqESQK|4pL2*GszAFfeuM_B1n7; zdsdVD-H7`x#l9uYuy@$S5YNV1jA?zU7&@3_bqYwLuT81r%g4hg?yTaW#K975Dv}Gz ze%w99G4{6bA@)5Qa?RL>s`9yc4GU$Tv_}j)ZNsP<@41)pi1Ng9RA%3@x*DuzADs^& z390B&)7}YdkOf7Dvixj{Hz?aIh0f;1t7_UsCO+!=5n3j44{VVyTJJ~k#QIu+i;hVG z)hpF=W87B@e_hh#tAmD`BD9xN338ACJw@1RsQxjgEhCZ4=h0dp*y2$-5yNM6@El%+ zv2O0HHZ7eScCX1z);PeZd#)5eXP;RU^tCk*&GXT%5#v`H{%=tz7L)W++-#c9xYQ`+ zuvE;IPGjwp=|fA|vYwR7GQ1AIL$AR(G3~cV^bz!Us%51bV5@Gaw3ie1wOaWhYV7s4 zhAai%W=2r$N)s~}`;vs>u`ZaiKW%mCHPv3mj}kYuNixi4RREGC4S`WKu=KX$3aD&Y+uy-zL3PgZK=yW6)W72s@!k${G-xpEv z)?)!n7-1v+p1_w)xVOWGCF$c^vdFYg!)gr5xT19n0m^}ZvM}Kf){&9xw4a%lcA|3ko<;_ob)H){W@s{oX5tHd zZ;xg9Tkw(G(5}#3?n%()Ljs=}=6_Lf!uqNnvylyR9Gtf7%JU}1JV}hH%W;-E%M@Io ze(=f(?h6Iewxqa%dQ_+$HqmIGrs=3vG@&1+Z33EM8;TVf(>@$!XON6V+KhuK;HI`? zvpq#iFrqXaK804L92!W zn)!ey@RvNP&JhTyAf(+vu}!&&*aX+KtyCMiLfrH5hh-xDq*SNKd|0q(eCM z@b58B58`qj{{2bLAIs@{hI=okyEr|W>wUuYp5b&C*ZYirZ{YHO;O7-w?qtS)HJ5Ms z@K8#to)>BUEh6pRDpK$3B5iwve}6*UM>6oNc!tT>znlBV{cpa5$L|_ZKL1*Cz3yLfzdA&k%k5P? z$n|dEdN-QurT>cS-Ny9bdVP$CcAY5SzS>-`=K=A1_%R+|?q@cqUDu29;dSPE+P&O= zZZDtv=i>aXpD{guW}#<0^UM7rUCVgx;P%7Zzn&Y+^)}oie$V524sNezgLv*>I%c+6 z+GBcmGyE=YuZQvOy^`s<%3Ntq<2S(k)pjS>=X&W(7jKer(71d(k4FpRsqwt;Vf=Ehw$O$7 zqL1n6;(D1(uNLlK=1L1+Gd?Zcu9xf8{F=wF#lGHd9`8(^4_@wH56?d@&x4+8%=NOF zUwRq-TCTUA^TRiDy_?PTTA2O=3_oAacWz%}eyO?AGLN`l8+iWiVENL_{LtPi%4-%p z!;If(rcWNXyZ$a72cEb2*PG>F2lGok^M}Ut?~#0VE05o87JABg!2CJD{aed;55z@z z@6XNk>gBxSavQjwi}@k<7m0jL<1O)%@{GqpV>tP@*~?vx+v{Sw=JC8sXL@;=9$nUX z%k-|{ex`GKeM~Qn(^PQeqo)0jdJvdMxvygXz}JbRXdUZD4o~rbml~E?&l`>sL}QF`qFU@3r=NvtG_mrh5;! zm(BB8<9S|VneUklx9btfH=8k`S>&1I-*zeQnP2#M zV4Xc*_j3Ph7~d9dZ-D95#`GAl(8a;{4X}J}=JrNQIn48@UC~GQs_%A|6D}^-#qI9k z{GKaV4z`%*Q5Ey&4yHpd^Gh$c-;zWwWwV^_;`TJD-=!XAIXLhOOFjO*kMZi`_VSs} z+t`j6u-Fq`{(XS?Wi-<>m-#cF^-4?JT(4QugU2hE`Lu)iLF4hW+I6E@jkD2H`BL+=TYV@miAbF_HzGfxPSF>KC&L_vgo5WX;1KYcQBs$ z+)qc`o-S*pUB>;%yuoIU020)>tQ@y((YmWJJ{~YwD=v(JlMzcKga=M$xzgOmSJ6)Fca;2Q){&*Qbuhj3W?DcIr%aIM7j+XM1;q)+{jid66M=|Wv-Xc<(oNmaCwc>9`=iKE%kEw z_gt>mEByve+qt}Bg}L6qZ@K*MSUx?&&z$Do!*Z8X!Ug&2n@rO)!oxK4X~y^WEO$7b zv7Vp38<<}A8F=755$hR`>`um;`xE{RKi|#x-(#+)F`ju`u9@3$ZDc$iFzXxn>G-?( z{@E^m-nd!K@153TDJT26oAK=8_BuH2<$ko?XYQx`+@6GPRg7=D>_5Y)XSlidCDIM= z?O4lna&h_f%-1cyk@McHH&eOY`mfFXYT;+^Tju;WOF3D;?<;fu?yv0YYhT;bFO&Q0 z;{J9szI~iO@IYdJkzeb%d>*ImTt1WO)WiHy^Gh?I?2vIa=JWN;ryDr!xIfV@p?Zv0 z6{qdYZ#%f%j(b_|TgLfbn{h_``{X=jJlYsuJ&#{5?Mj44@`vkb47ZQz>|*%sOxMhN&2$=IIpJ^9(q z{mhi(!D;%p_VZ;U^G7qc(=6p3x8K6!)AOKNzGYkFPF@oEmTx1U@P3>grbqfFrVG!j zOpfDw@8o%Ur$HC2w}Z>)ak&nz*UkAgcX7SD%yikYJ8?cDyf%i@%V{^mTg&h?Za?3G z$7udNo9k_qcu2gsymptlUKRhop6jlq9y^ zdb!;VGL?2cKW8$&UIlNAziGUF(%!}V!Oz+J+|iyW-?5&Hf6wFcZT#HAX=bu|n^|6Q zxh_t7IIXd%NA%}<_1s<`_b-p@wcTx&*Rr0*^)_#I*QOrg*}}hfF#IZRx0j!_ zyA$!mvGVeIRu8A^Iql;5HMfiMUALR{Ko9?(&gDD!xl7h(KR#2bhiHuE-#2hNAo-l1 z9k<)-v6}CB{-&GxYvaGn^SYa#n@##b%ir;@#QBf?$bXLYDzEdUbK1=LHJ9@|xZI47 z>-$8$M$~$^UOvOg<>yS9a$Kb53iCLu=ifC>cguJtKZmcdr;GNzMIU`{-+#yV_WGz< z=4TrHKzlRyMQ)eZ8%OhcV($ygS5MjV;STP1J(ug|=k@&D_LMyzZjj}$HLI?Z>~J`&q^9*KoU;oZtJTy&sdwC0>uuzA)486;`Rx`whrwS4{2iz zcvSIvdp(z1%c+a=dw-M2H%No^T&|bXJZ`T?w)dOF_DH8P+yO4vEbDWA%Wv%GRTuxh zo6~gOH_*Y)xx8-Q{^ldxSs40$mG=BbspZDkI^*oM4`MHMuF5OH}>LVR7Rq2>FI5^nN-_w<_hYrZuOc?&8bAK`|`D-n3+WFb>x@b@M&)cVUSjx%oxfVK=gz)fI zQ==7=pGLoP6X++uyDa=6KR<0gC+CM9%nup-Ebk#I_t%CN;r?FZh$wybMnCcCO`u;1 z?m@1M_=3@ep-7`LpHl4c+Rb>$c`N(tNHv$wO||Q9c7A@UJwMl5@|$hzPt9LzDJSL4 zfR&D1&Kf^RPqiOUN0R99cKaKy!Ch!N1 zS6LWObP!8>>9C?PfIp4@68XD^?d=0B{jak0tKPQ%T7Gj9I(9SPjNxZ#pR9eG_3?JL z_oRLL7TYJkPPC&4AO3wK@5c;tz54Ak4q|VAdEa6CiOc12+QIuWJ32T%^O)I=YUB2L zxqKD3*T(g<4*T}HxPJp&Z#1WwvVYvpfYKh>r3^Qn@y+DtX0Gpely!1%kSW{{Smga9yQamkAGjw_3D|P zUHqJDGww*w7Vh6}Za16pTrcS=`}ernpIyu4!dyR}+izw#`8ke315tw2#bj;;qxn_8ZXC0%w4q9XrhJ?f!}FN&D2=Uiwgr z{XNvayG{nE*z;?LCBHjK{T)g8)obCy`Xv0?e4u^(e9Jtl8fIU=ewaPI zvMqe(+TVV>s*>%XHpNW-67<5-+L^-Io-(Vz{9K`AGGLWuIJ)( zH>W$eo|dFuI{)tFbUmk4TtA=nT-zh&db_z?J(tVlw43wWleAaEzi;3)m(PzhbA7K( zJw(6fPpk(&;CP&j_xzFVhUJNR6>a%EE+6J{JGi}chF8P&dX}5xk}f`9)6Vs}xn4Hs zw_V2e&1L5PWpjBi!*Bir$G`YFpZC3VSoXi%)iv!UI)WXmvrU!M)Pxc znf>?;NcwTR>$zT-+v~EaN9z^*`vBJqbJ{1zhwwWeb*Q@&y}(c->ANhN}weeZio=L0sse71oL)@(K4uEe$ye zBlyNS@hPlpm~48sTwGCEAMyJg1r5I1#nyULD3>#>_xXr=?qD=f=XcBwPb%W`=~z$X z8tthUPEoxHcpU?{(viSozr$z`b48|RdY_rmUKzfn+teV|<6ONxyK}9gK3>=#1*{#F z_3#jCis|nGK{)iQJ7~^Nc3&>RbJi_^p~I7(bL#^!1ldp*pnK;L9_1NX5?p_U>VidvqX+jU%dcFV1OeSqKgi&p2!k8*8BSl{0*@Qcu9}ZZ_IMZ9P5Ro z1rfh*v2UqwnNnWON_HVkVMB-x;+Oa$O$$QHn-n_pPv&2e-Oo@Mg0A@JZNEqcN5xWl zc_6_NKVf!sF60_;EbpZdaGLP;315sagrNGA<&;^nzU{qKMZO43kcLoGoud$M5L5bt zKhZDh5AxiuyvqX1;aBVZRhUU^slbCQJ;(MkCaeddCKO!Qu*@M^z+^)gtO zudz`MG?Z5#6Yh_8fgTX^AZV1QERj=ad4G)yPqGJ$!J+b)rNUP(_~!B;rK3@GNcDR3 zi~0S3)J|Yg{e-#DQAeTaep0L#SQNxx^!D^a_f&83VjoCt*%XzhEX`70Tw+oJ%8Oo! zZmp=cN57QN#R1j}m|USoV%ESSe~9J1$l{#BB=5s<*Wo2owfNe0lGIYSL4EzFDT>0g zUdZ4MPAK(*PE`8o4q}d`l()H9!5st{fHw{?S5Q5XW#tpoy%IA6wTp4;L3#PrQqFwu z5f^eya4f(#oGidMoYdhB2tXTX9V8{bj~Z`{!dp=cQER|2SmvSo=Jj?=m$iF*b$Ag- zK`0grHHvy7i*u4)REsx9J3RhHi|8V6MGirI_(}X?o>!&|5k!474-)v2>dTvF3N7z% zu+cN7EbF~1CB9f~JrWQv?UCh07Uih-HVXJLhs#i#T;9mBy-bAoKaxyd@=po!(sVhn ztgpyR&eG+j=>q1mM7}Mv@U7{7T`$-swTbEg>&c&FJ=2SC%7KZZ^}eN2ut9m5MLEgt z?I{nS?w>Rr^fk6BCT9t~9X+bUiTd&PDN1(IdwVPJrL8`CceY3B0EScHr{$G^;2L9| zn=T}(s1Jo=3W2d6XHia}<$VS8)-oFg74;%9$)JUn3(zaVfglZJWhgAma~96w%N`Qcd~*w zTSlUVuabdY32(bG6&|ek+pE-WKuF6s94>V}>59^eaY3M!H;XO6H zoL&~K4Ky_P=q|3p#*ij2+Vp}ViH3qFM#0RDMEninRg;Aw|H6fV+5lc4njOKB7QfP6 ze`>oxV_+9(1l+hAq-;>*LqG)L+O&jQXMz48hbd{X(rh;bU|V?~4@Wxtvd4fFz!c`;fq=rhAz=70ns> z_<9UYf2oxLPqqub9(-Hm2aj)3Q9ypha`@6i&3Ioqrb0^LD`_Gj7*f0~zQpMeS4(2~ z;^vrs-|s%PrK0F!Y;1T!e(l~gG7YWYB3&+GIyN;$Py}S~c!zZsH z_cbgEMF36tJ`kNR7zXi$0?%Vy+PiP?kghN|kWR-`zQ=TL?>j2N%Vss>U5@5)W%-XW zEaeVnicr1$;p<_xaiQKHUxd3Hp~grsF8+a7q>i65g{|5~vG@0w5NJ6d`=n z3;*DEuk!kfg!ggc?^NGXQ|600r8NHgKt8A!DRDtfB=r(Z{#HeizyC|dO<4V z1HPiRw!P^A2bK`WM8Fha$MRih$SED*J7#Hi7i7b6C# zuT>%j-l~WZqgJf)-Orpk$;{bJ)8O}AAJ=u0-p@Jn%$zwh_dGM_?3|5;f&4w@{=(jU zMpNY{$t8x_w87acdW*`(v0@~jl`;VF@6vVGC04rgLieL2sr<@G?!v|ePV%Jv!BeHX zQ1;?wtgvz2Cf?)v&FdKV59inH;hygfr1Gay#BbT6>vNfG->UsAbGLH!?!znd3Wl>Q z*4?mq-IgsQZw)$jnqBVM=RYZ3oFfYd!r^odh4;gH$>|ntykWhO&Y`1zr#Lyi+WmL! zx~68k+=f{`o}t_S(oHwSmrI+GAYmyl*8T9$$Z_X8K<+=>y+DuW<6%qIIb)oBY&p5V zaoCq*{J-pFnyN>;Bf^pvJ#H^wvt->Zm#X;-|8b-9QSP|VKY^a~- zm8~e!~&v$z3bvrUQDz_f~ zY3@?)A(={cgTdIX3tCJb8BFy7$p>^SarWTt8c8b5a#6E;(n0429Rl zb$OlXNZh#)+SDK?A04f~k+r>2ZLBOGZCtnZI%gm5`YqQx}Wq)t^1t)sQ#HoWxqRye>bTVP8hL~$J?~_m-~<+P zlKjkd{j6Nac}QZ!k=M`WP4T%KjR3{tXWsDrXuNTA;@IVxx7qOHerx7Zip2)D8gqV2 z8yThvmPYigS{^|b1{UFI$-%+|)&l_&ssBY5*OV4pWWUu)pG{8O%o5SLlIsaa< z&i$Y!?amithtHE^)%x$ru8ukJhq1q~s?TL^Y88jwxMAyt;hI$6M~ScJ7{&P%uWy4s zek&_WzHqcw^)$7wx0}@3&)e~TT}$1_yd#Bw6`yX_Ip{M|<)9B4Ie6NG(~pe+ZloPp z#WKbdhmVXW4qvVoCK4X2PFJ^XBL(t0^T!EZld*oH@*Y0w$dU8eST$YbO!c~r6eX6@ zu|hry<<#5A3Ir$U>ffo?9gKAkeeG(#eT;e-UXHO=Ka6>{POIkG$K%IZh0%T%86RcP zcGEO6x}~(sJU+oVK<>Qc;NE@fdns=Fk|WB`d2xfK_Um;dA5W1Tve#@{PyKa1rLs~l zggW)neBI_|)l#AU8NbXdg8I*~JF`ZaaV6ZiXimIZ)zPA@&6{S$&vuABs+kpE;EcC@OK%=5-qwk~y31JA38F zw={2R5-;le7$>PkYUh)}T1b-an|z^X9p;-~b#!E7JnEx*)`aYxH}m^}R=?xi@7$JVPV?3&v0)#SrAWxV|wWJP{urfW(#<9+!r7{o-q_bqX=fzIa5L)wpL!@|vwT zu20CN$t}<)8=oZ^(Rq(wF`0ht_4^Ii-Q@bzCyLKG@k_UCy>9*b_r*neC^qv9|4UN% zUvj+umkgKLD6hRP?-b*B*5#d3z1P1ag})`o@6TP3m-QAY9c-=+4}V-){@uKZ0ge1H zRsY*8kKCsvDem*})R#W-nD@i+Z(XlWc0AYXoH}xSs#U_~BiDPL_j*-&ho7gbwki#`vFEzx{+{=9+ZRGBMwG5|kg6URT{{l_gcQX!tASqv+xy=Kc+!v?$R6_3`QBI$st6oQK{_r-C^7 zsPCdRTQ;rV+MMEPCXdVW%&pCfgPe74=i+lU*ztyaBpmJsPf)@`uBWaTR0)wKYM3;r#}Am;oteWzmsvi z_bzmQ=UyRhC%vTY{R=N}Hila`=bg%b{cY>3!~4lC$zN9U(F_##k#a7j?m0=ZsW89{9iTU#KB3_3sj{ zcYaUMczx=9o&H~yXSDy$Kc{}FY|ao{9>bjGbuGDzK47VhU-?X z6HY%X4<#cuwdPk#n{f|nR2k06!~1iFZKtXm-H?Z-S$@pXpRQ`!QHU5-aL$@7&YDht zA)en)-lR`xFG7PV^OntPtE$y{X9I0*BevnS%VYiL%SlI$uLz;8U_&|w?#fsIv7tPK z>dO&lLt&Frby0a`Hm>aSqrM}6Q`*vTVrvjn2lA2MSAbA+A--4)>?g_#a~&To83;9o z5MVccJ0CbGKIGRv^bN0Xmc!(}>;STTGmz1n-sF_03Zd?4h_iAVh$V%tuPVT6f20JD z90}nghcj{e!7w)WWZ{O6D6VYF#`2aJ&S=cVoPnt*Pn>{)`soPO%)!N_j8BM0Nk1uo zNu3d7w&p0?GZWeN3!O4r=Si83e0@0q)?)=igTb!KP#Qu5Wx!NmF>yrB|J)>e?uZ|s zI2^!^gXy@VCx}}+GjMZ92#K~#T-6%Jik2*#-ZufWo69jdF%kLolUP1pqt}=CZ;ap| z`89K>%0*J1wB+;T1{>U|*NMpJPj685+FhpZa}$+eAF)ULObTLBUn%mNCou2HSXm2P zO{^-GHW0&=hyA$dU;t5?_S@6t-rvtXayo zYyogcm6dIPen3B*b)K7R}pQlttM0PX5xurCl4>T(#Y;B^aJ__(^`2*J2AK~ zCy1Ox26AfncWzdbFXTt)?!aJL7j)hn1=;VX5!EG9o&eID>ECM)2N51%o~e$h>&n0l z57r`~z3P3Hsm z5usAuRy{VKI?o4RK>!8pN74SQ-pWZKOk$rYVZVqCNn4$S+KYe>61B1#VUQ~WrwzSOxU zFE{=BqUng%6eH>@K#*cwDgCR5_p`YO?Hol85pR_0wo5y__M7r>(-GkM!#=D&n1*GY z0i4=FZEXvpvNZ$wEg|-uOgwiL@H|ma=9Iz9O`pE}0P@+#BZFb5j}MekJIk>BCgA(T zc1iQ85`2pN@1yL0&Fp{c*#E9&|GSv|?`-zJQ`rBeQ3EDX1M=D5LQ}bk z64NI*erzs!=SeGCU~pe7$orauSWPx!yCVInEjC9{cL(qZV#fsCSL!2*|B2Y6{n%Xk z8QVM0v(ic#y#4@-`$_{S_02}!V64lzA1AOKpNIwqYEKZca;Di;gk486vHf5cZtaO+ zT}L)nx8-1EYYg)n^DwV(I;J zptQw@^u{#&j`mF-rM#ExI!f{dicE2XOz;#7G0;yIaGn#4&VXeuv;## z?ZyJ!c+iivJpt5rrsJZHAeOXcV18?e@n$B<8^b7Qma%^#CVl}pfrw3V%HZXu-_p5R zs7&laWzB=A^nFO$Tz_^~q$x|+WjiIPQuLv539or4+V=rxe-+rKec7CChv&h2-VHI_ zaAZENIlKUu9y|-@cP^x6)uO6x5%OCXvkjhu-}BtR5j~T1UG|)<_;b%NjMaIWymVG3 zCe&Ps3BDDG^oM&xO&JaD{qL9i&$zASNCmDv9LIYOR^o!5$(Y|c1yeezP}ay8Zs-cs zeH-{M&QfbC=zm!V%i5-5Uh6crN%ptyRqEKw&#~!NIQe_InO?;X>_@)E=~!IDzLD@F z*aRIv<&VTq&73#XGj4yL;R|s{d|j4@%R16f*XGBP)&Nd!Nym&v>iJMM3j3%<-E7k} zCHT;bz;2=@?&=EzWv?&MGlM(%S0ba!jf<(x^>OslPwZ#FYVq}O5gzWzz|PJPZtcj# zd)vaewlxb&S|V7`7{$p06H(DO2?Ytpsx{Ma%dcgR2jGBP4*G=GCtz_Evn*!JB5i(R z023J>h+gcZpYIR@k|r8JlzNd~6H>N65rf*7%^iKP(#m|!;J!#YB9j?e_XfJscpoY! zhcI~{4aJEpMC-#UUTc4aeW9O4uhenDfcRxxz~e|d4vYH=Gf`MG6NSFX$R1QJuuJZ@ zs^i2A*70;yzY07;?APgS&U%xd1$fW)yUHq2_P~z)E}%%uU4^WcNWLuFb4k)%w-HzGDVNYLura{ zC90sK^_;)dP&?nI?*EhXj43)MZWLXYF_G~w&jZgx(s{7?=>eQxBV%hAb?*T0f5)98 zNc)j?8nW$k!G*o~C@+{$X)vu38MGdQoG!+HFa<^t+SA?v3c zFGPGeNCc+3ba!{$z$X{8lCH2CnmdQj`KJFkxUu#XrLKX(-24)(bX>~jt5b62v@)w9nn zV4pjc{cSe;shW2uoO$<-2|hebG)>d-75inL?su2w`jAuXL&-GHyx7c7#twt4F>Q^W zV{#tXMc;oQ+Qi4~2xbq-y+}tP+fFvynAAPI=SjOC3aI*U=7M3}?n9pQ(o&>_&808M zJ?8yupXkF+2^AYo4`Vvp{A|5redJ6;y5FkLP2@pc=kN2!~?>XOhSN;hr!<1+C-ZS&eGc)X^ zz0pIP^~qrw&^LJWqLIdr!}~aex;US0E`0Yc)7~x1R%KRKs~gP;Vt4=HM%!k5I6Sp7 zrju_+aP@Oz6A&C&zr3Ctu)$H#CbN=L?V3pcqRnz3Iqo7#W&VUw)USf4z<;YHT>Z{1 znf=T1=_#kThc4vagHvUh>un)t%ikvmBQe!^x!q*&6n|w^@R~qNe)BoXyHgiHSD!!H zmWeeXI*sYJu(|C02yH+fAr$AUf8;4{O^3iN&Zyb%=lHk2wzYjgWoU=yq^H}sz1Nxs zC$Ev)=e1-I@3cLllBX9j%{2qvyWChYq_QjdX9e#~&imQ;wpfoMAH*Q*^x*UGbK6}y zoP7~EDZx*!bv)};lM4SLu1>+CKFcq4^5f#oN!q%tbEC(r1oM0c>W{s-TO74HtU6z46076y{WdrI1voGI#-=J|g=C@lda^~4*3j{*a%UfQXxZ6#c&$qv82^4)mU z?2W%!-uv(!`1(r(B{R3-=g8|OLhBq-oHooZbRe|teo0x?Qxl~81>axITiB!c zO1`hQ>K9%-c@U{0=oZ?<^k@_&yE}X6ti?AB^$_q53mQb%xqG`}rQfYkzORobuIMv6 ztlvEihbj+ZP2Yxw96n#aJk!j-e82jvkD2>9j+(b)WCc0b&mXqG2w`f!*^AD$nD1|} zZXSBn=8n5GX*nB?&R`CAwTQK(ec}R(E%cdCnqcl*KPK~;_Oz0W0oC`O zNCCKH(C<{ff)3KB3nM%2K0dA@n5B#awu!>eKWgGAi;w&<#^&2cef?{H+YG_T%V2r? zt2M6EoM*gmhieT`f0{H#@#tVRbRBp-XXMbx8wnzOr(LexyXAi^?u}PxV8V7(P}qpI zp!$4v{)sqMfv{q`hJ~ifR@xrQHOM>>LdItAa0|eKF zCcfV*y5vo4y^Q^v8S6e_X~gQR8U;E?+MeCW79%$wv)FZ&DI ziC+u0ZsCh^ndLQptKP|jP0zNyei6vGH80{hGJ{;bHhKG9S^3Kn)qA^y2W5>n6>sGU zvK8suk2>Sk7i&_2dtKECw<^1&9H4^eVa=-`ro9azxG@GKk&qk&8ni5oZOT1mZyYmf zNhcoIYY!pM3%h?kXF&`fdYvK5gn8bn-gD_%{C56JOzaErN?T5QYqGya zsf2mhZ=)A*cYM=>Jw2gYqg`$2a>W4)gO;13Gpe13f5rQr#I503@xF=Vz(O$PHUhFX zxcK_1pt*HH-`ZrySioo_$@F|ydN

              uzGMG++@R(+9r3f|V+xc{=FG*$#}fZ;bHp6@ayt>1D>cVrA%zBzndUzVrftq~5=Z~8(T*EHN$2;YBJ{zv8N zQDJpM_rNthCYMK?qNa^5C;IlhK_-Eh2BA%71i>F)H!?+UAaiehQm^v9Yr}4VaKUG% z@%2Cwo=*Q_N5tNo4@CQ=EI(f*KULUl`kL-vn|L7&geHP!?xH0cDl!E#1e^A|xIDJv zm~STTnN08qK+Wrukq)9|uBn>qTBX&A5!Gh|L43c?Un#_sbFU!+T%MTfUa+Wjo&!l+ zN#vO!x55RX#wpn=DJZld9eJNQspwe;%8j9IlNFUXrmr=`=2^57@Qcf853LNI!|V2Mp9=n7Cx%w;F>ZgSb3b>1@g-{Ys%GN$?OHmPxnTs(LZ#`<02&Y`oQ zIm@6iZ>-@vaKzu}PlL8=4C1*I2J-S?wq`R{FY--N{cWd*C}37zkx?a(_s4XTrD-2c zWxyM;@jmdgCA7_b7aV#f)Fd?aSi-&J{Z<0_E!jcdORIg`C~zPHn~vcs&jS^;hSy$u zmD92{o7H|rEkX#@@#QkR|M{eXX}b+Ri@xP%WlJpQ{nNs6qBVu3BZH@w!aJfDXhS|~ z4vsIaOiMN;CqeBjYbbQ@OAL>*%pD*y|NDjSTrl%n0@6f`&KJ$Wa#%@l&rE4kddu$Y z8-*QB|NGMxF+ZWsb~kj(ov$rxT4GBkul@FmG(ucNLH_CFp?937NuF^Xq;bwdo*pp4#5sbMbL)9@dj2 zF>_%vDJ7P0OuyWUrz7he#E(yeb&fE&u&207Ho=FNN)HV&9)y=N1cP5JgiB7txXbVl zrWO*e^4U#wBYnmCHE_cU(}I-|%Xy+Id69B!fiYhRPpWCLs`-PHw&3#$gL)1Mbs<+e z>sf{83zPN_*_AlfzaBLkmf8P$xhC?QV7Yez^_$68s_DJc?72iwMm{E4NGfH<_hIj* zw>qlkP|H;cYn~BBjfrH~vHashI!aJH)XI(u<*cJb#POUjZ~B^WE^zVpZZ?B#s%yR7 zqHUe2BW!ovGU6-WD1UAYgF0UITLEj;gs5LGnz&^1S|;sFd5phLT5h~R_S3eJV`0^j9Ey$^o zp~1S}FvswrnDK))HErs+df)Yx6HbP3AX8(4o1fM8MGZN(+5}et@XZP%=je{qC{ViG zpUoHZc5#cRhH}%QJlmHUcEdiy{OZ>4I8(3twBE5B>3oU6hdJwmb3A>%BuA&)EI$Ll zKDBf4K)b4^W_wL@xazX8+B16>Z&#y-GNivFC4tY)!tA076|8jIKYSgxhzifH3XAef zi&k?TZ&gF{XIEjn)zCT^E6i-RvlijTusnqO?=}abbmONYJ9DY~)ZQ50qVrTTuV?Y6 zDwMz|-8_2_Zf6gL$e@7Du2HSTl?5q5 zxzF2Gd!Vy*gg@hTn;UneG%Vxqf#Pq~;Q82Vq-Skunw_p&LUa2bP6A;0+?O&gAaKHY z*{AeMU8>?b1s#4Zbry%U080#J@;qo)Q70s zIeEeM%a0S=l;V>}8m1%c=|Zkpmei$+aEGW8Ag47c!iipYGX zeRKOa=n(V*-&1mQX0fNcD<0zs{M!SvRwOy@YmoqU!bgp5>1QwrvsJy z!h{(0V-O-<8s5`=)nV~aE?bb;R8KvkhqFQ9@2?%f8x8HKEv__`1Mk^~CxDk1a{4*j zyLwG}?rU4>mYpZ<`{I&4e$=s{uXb1YxiYrEoJDOdIdMRV4U5%ZxJWmR8z-%DtN)@gJM)(0!UOvu`1DxbQti{ zC2ma;SQJe!Cc0R=Ell&+f&#Y<-}Z=SQ*FDcnkW5n586&^cLmoUOofsgUBcqq017Lwgs)j*=y36F&-{g z!wXOE=<-}r!@c(hT!E9p(k-HidK1>cOx>_SReHr-Q{9{GB`!k8*80vr5T5B9E11#E zcbcf=UWt&%j!wBnn{`e9tW~2J!0;apunwRtvP(&dS3ie^E=KrH9&hi=#PBm^j@)*Qw-RB z2y%{oBcukL#k=`MvuNYsq5Feblf>3J%%K?5a%9L+!Itdp)fz=xoigMHx46^dM(m|Z z!f?=oGS1L@Tvy8~AB|XO5hcGz^%S1<89oRDtnogkwbgeO&SZ8+*j-=S_e9oz$wN&$?jzS+facbD9KJj17lhh2J@X z`fxVUVBS_N&oAepLpH@toiuo{N!b`F@8w;wv-E`L`;n2|(Ega_%vZ|S-Hrj4?W_MZ zx6UF1)!6a=^92+^x0vRfs88{kM_V4Y7`Yh`-)SQ}*R5!$e>(n=*S znM}9(K{|oF%a*|p`*-}tH$t5tggus+{eGlk;GUYU`zOJ7 zR!}LsmBiR@D{9fH=}X0}(WnKelWifnbGh;LQj+2p_3AXNG(m2kePlo3IzS{sDb=?+ zL2m90cn+N)H%`=dluzdEgTBZN(Af0Kqh+i0!bIASoQ3`6YqA$Idk(Sk%dTK^d)5LT z+h$!ewiM)2S>TngrMqS44xo{$)lz|bD$c)+wOV0qXg;vL*Ecx=ZIBk^8sZzuHu*r| zu-K}CK;szQhANa-yG2qj4XB;JdAnMr^y!{m>dDTYse4QLf^-A$MEmGfIop0bs@tfO zn}0cD^waC{_n8@rk3Zw|v)+=-sGB(LCDzj@h7kqg}Gc@?~k)^=rm z;9c)=?K^{nvSbvp}?8SQIwnnBSd-!U)laqJ+Nmp#cus|*RaNy%;@UQ6?7ijl}`sU!kzUvn% z?RFlFWUAq^p%sGZto|gQut`m6wesgVtvR^oa`Nji{}Mud_yV7evvdZ2Y9DHAw3_}h z-Nn>ZzQq6OQ1!E?I!;n*0-Qy0;(*(WXK z(24zhvl1&D$<#tr(lkz?e2jy`MsM9O`$(*7zECS@&}P0e%CjESmsaf##Qb*iEbY11={{;ziV*|SvLanl$?U=jhqGT-#>iji?@0qO`Fos z=zH|e^#>!ww#Feql;WBmRih2Z!O;|Gs=QZtyl^>Apl3C9lE!HaK(HEYQJ zF+1$$E%BMC1$=WoxKkb*1&&TzT;d4*m_b?KR>zKA$jP4Se1&s?P{G>MsY-%6-$>J6 zaVVv(31`h;zFiFy(YOA*v{CU{9o-+dU3~kqVo|M9IbkBwb*?&hKcm0?#94mV>s4zW z^Mk=xeJnBc*WNNDW+$35<-O)EXHW|m`R-(zW%UZ3-DI$yOi3sOuALj&k5cdaC)vkFNKwc|kEginHNl350aJNltWc4!m1W^1y4$ zWJGLIkc{tvQDOC3Zh5D(vicacW>GbH_bUY9;VDbD3twyNpkOxeAMrZY zV)_8b2JzC+_J%uC(bHh#6Y&~@@Xx|AU7lMu;oMAZ7)zZNbM;`3F`nN8ASib4LFb_( zo2S;&#;Cw{!Hk|5IIBn^B26|{KWl;F?e-kv+PGKEGRTDue4%XQY~>0sGtKBblcoS$ zV4%ibHy+C-e7^TQB73`|@79&ZN23=B2ES!R)L&*cVfFm{1u9(ZY}*?$`a&|giBhh1 z^NcB_^?4!2Ia=k4tT=hbjB^I33r`Nda(k4QSGZc(J5Km~C-=Q-OFhpAoR9G@WS<;a zgs0NiiGeV635_hh+*o`s&=i7r1W`7DczqpFeCUq(GLrq^{U`nA%mKT^i=A3hp4BU;=jY~It?Nie6u^>FM#5Tzf!+Nq^ZSqXnR z@*WPuto8jgiVgpm2Ztq&+0#V{JPo!Z!9Sxs7TwE~W(c8gIonV#xVU*YX54U}bGd(P4 z_jZZ{T2X~C>(Y$yyI8raxgUO`(x3cL;-=aWp=2Me{j7OG_d48k;7{n6viOXn@Oj8G zk<@~xHIEEGG!}Ry6A8>210CN~DlJoZHKuSc{lTx)7b%zEfTO)$lem>#K-N=D_8AYe z4e>sSA!+g!1xRU|*+_5Ma62KSIzP4S!IM;l2z?hFjry#LJv5`&W(v9m@{R8CWFLAM z<$Q(wRaxRSIDc@S7I}1={yE|==MuUbwYTPc$PYGWMjfnuJyEz;W-)n(*q_idkf z6KD+=erGM%A+Hfwq3m$kZ&k9x2dDO=O}yTVfdG$@($b1X;ZF7Z+HcztG*3|ifSn`P#nOmSPT7l37-wl~Ib#B16E{5LaMNAzo`Dm& zf02OG3ET-GmB}yRrfJ`$Uga5Gxc0-mR)Q2fP-sv={{FPbUhr|KU5#JU{zdrI6f7Q< zjT1k&=49Y7aB6Y6je7G`P;}jBuR<4-)OvCa#%??^Y1-Rvq3e3K=C69WNvN4&Vu<;) zJ@+rk_AfOD4VLF-lf}+^2bJUd7BSmCk~#Bk-VSeRG@s_awtNq%xjNr-1XhLf^0zXN z&>0Z|)TC9DzltKS*uI}C)?W&pSvUFRmviuE2%k=|wG7+KNj&$QMk)129I>4mlLx(8 ze=DQ0hG66fJa_=#q&8{RSj>>QJ&LrS@eg9n-%f@M{Ka;0l?eaZ1m(zCe!z#GLj_t@ zbrJXwujDL~LUMzj+n=apBaYU?^##zgn-a9)84O8r`}4YOGPH0!r!DxI0cg;JP;-T~ zQAB$3>G(g&+c(V+vU#k(>;eBSE3qnZS+{vo2mFKwonCzxUl)FvgVJ#rqa;6)dzqH4 zptZG5p5x*W#Qb^_dA*0&)!u`-bgjZ11s^ z)to4`qN6>Ie1HvYHoXFbwsfhsHMRcxxedhQ{J8u)DL|BDWsKi7u0day+e*4-pC|aM zhT+uG@R6s0KAE)XzMtYVIqV6j`TEV!Lv=MsukwqK`S0*MD_()#{1YRrcRwyV-AizY+`B+9 zsP(O=$px+{$#w@k8^p_)8kZ}nUmTyDy2OgH1sp0TZpIw&PQg?B?p7Levt3@_*%n$R z2)CdFJ}=(5WTNZ9#4_2Q7t)y;l{%DNRjjsMtWs5?lzgzIw#ZTJnkZPO{tCtl`Ln-O zW=_XIS{F`AHGJHiNprtu3`&L{>hmhqZ9}2l*$&fn)VHah^N#c@p7L$m7Y0XMoQ}A` zD4no7s&Hi2yBByCk7MAX=K|kk@RM!{5V2cGGa|J&c_Ufr%5Tg(H{7t#dG>; zqK1iCo?}Gpg|bm~51;;1`Nq?wcqN7Rwpk0tia=OHlj3}H>ab0{5|fS1VO@jVtFw2X z_VE7s9lImDpAZ~Md|Ygw7Bd5bZh z$ED9Jizh-xh;l~nTSbNn9I0c!HKjB!XG^ryIyz*vA(eAz&*iE8+T_~9lfY?H@WOs{ zOzUoaTg%g{(?8zr*4>^Qb9jflH{|8rO$2r$hB3{~?>dGX9brU}W1e2Ac|_o5rG~@! zRgVGE-4`~>zm59~kNEHI-J{^1D%F}0H6Y(gNLB|i*x$^TvJ_1I)cyS6S>f&FMR&$A z-S2u;dHzT22Th&(>EG^`zoCu+IB|EIAyiwP+1PcnUV3n2NR3$9>s{Qy zfa0^g!Yd@ulhoJy{xpjd3V8&aVF=bhweNQaB5tYQ`A2;Z_!QF4h3jl4@KkYi-tY zls)Io%hE7Temc?YcHjoayEe%f^8ocq2YzgLF1v>J4+j3XUhEv@;CT^EP`eft?VKJo zJ<~=thEYggr3}8yw%x#pi27h2X;K)@K0#)w$*Q@+gSFthk37HhPl!Ii7k?>H*PGM5> z=@c!axF?SkCZ7xS1bpfW=&lR)8h`R2!X$kQ?Ve6Ck0u(woP(T{0xrvRSE)Ci8(I8p zTJf0DA?5xZKTR8&+Wa|P93e1yRC!{K?n0mb?xYfFL&5B%_Hn)QRL%2Ljkssj5>n(? zO%CAme*xSk3moOY`zMZfh??(J-z_XoIIPUxZt?9DSn$(7r`Anb^zZmo7P>mkP98{kvS^|2Y#%3j6##EJ^;AcKhZY0__t1Ul|`-W#+L(Q** zpR*4giAy-rGb1GA?c_#AYP#xpsektx4gn@npMGN?GsBi;gY(~<^q}hIxbK8#7hR3- zOkRl>n{w}i?oP%Jz~h&ihI1@}Jb%=wfZ_(_l2jeP)&hS(?wnx5LT9A2rW^Z%`^2&u z1a5C$!h-|@TO1+kRm~-2HrCL#4S^4AgK(cm>J!%3UCqg~1_-yNS%lQZ(r{kA6+gA< z_J>=KTb}^e0n{C6FS8>8aR%NT!+F!h$^gpS@8qsfwd?J?3=aoDOz_3}?7_T*iSI8D zb1XNsinI*9)=Z>Gg_pg>D(c?tYL>``1X00tV{X<+j>IKILQa-$fRIro!{bKW%jbI`=b-nb z>J6z?byZQG6GNe8S;K7QFI){Uvl-da#4(z@C==Y1nzoSF*g_J&HbXDX}&?zSEvBcuUlO?ArE8iAg_~aiJK> zvzf<^%WGcaKiR=qmi~=4$}7_+ND5Bu@I2kJmZ`2ubb0m9+-G~TIjoB`nSWYM;kQT3 zE2)wO6csL{JYqoy^OUuIl}&D5Gj;f}dRD`9#_NHDM=8EuHU}dcHZCi*yj%SDYB-kB z_gwB48_{GwxVcB9y>^fN?pcq4oXzrMZ^ZN)8 zF7CbXR0O_e1d0&6Py(v%2)NoGQUt^us|>0+@u1`vEq)*B1uV<;uAvOStaJ}B>qT3p zz2CBWs~hT0tC8UTIMHu3MWIxHl={`dknZ6w}iPGrRFvldfiJzrb!8mC85 zA6Jc^cwCHTVQHl&hMS7gnQ3hc z-B0Tsr8v=3IYo(fhD~3#tAjsH5dUsn-#!zWj!Cf$WbF>W_d~z1#q+vzGN^8>;!@E2 zvmO?!VANdl3_0UZX3s{`m*%Nr!+9w9>$_uIs{xe+^Qx zlT5K(gkts{zsf0k`}g)sTsbPglNpt-IZX|7reEqW4G*r*MC=^ITKcQTHAIfreHJ@k zlOvZsofN-<(99nD1ap%<3v9yv*?-6=y6>V!dX7G7FqF4er!=7X3+$DsA33oa7_!D<;3A7AU)X4)i!dr{>FXK=XeDpN zdxWy#jFi5NqKBHYrc3slZT+Ab zD0At{^J@v3R-q5HA8WGE?_W@AH(DE=$7F+|{m34e@qz>fA@Ru$HQ*sYzcTkxu}Wdc zlXe2;{M|ivxzFLB!XD@SH0C5q2Ue9me>SW}QB9|)Ml}^Bni3x^j}#Sy+7VRKC62WP zZ6eLORuibBAZp%M(0*a6#1CyALr!GQ71q;AA+Cz_D6>9kj#<;y9*)M!M|0~s%O%E% zQ)OcZ!SgBoi*74Z%#zIrtKhDKs#XyWX%~;jhmKn{N{IubrIdHxSNbW}8-Zo5W4;3c zzu?kfLOr0DBQ~kJCsxcOzOIqR-rs zaCt^X>GOk%{t8OR=AbA2i(r&lu4hSeNb^tQ+!WRs{y#Uaoxw75fX}Ua`OMRJy-_ z_UW*0?sBRwGD$ZfctfiS`je~je9+WpUi2+k#x6^_@j2P@6sr9nDrRr>9s$Wj%zbfJ zZhqZ&;%~-wxt!zDTIC~H1e$A6SXd5tJiG(7#ToJ5?{@yoYnBLLRZFJ}=nC|GLSJfL z6bgaskOcAe3cH8{-1V@W3t=zkKY8*>t(RH3UU$7`-mSiRPgG{x*)est579ceVz)_< z|1^Y*-pYP?A6mq&^SC));Pzc>Q7=*QQnjd{eWYNUF60_p%k_h)Lq@Gtrv&162Io0~ z_AVxg_!E!<%cFB`nROzPY?F+~H4!XbTTgJw7uR5Gjsj1fi-#>#s;9-e#_UDvH2(1T zvFB5MI(QB~A%r+RH+^1rPHuLTSwqku5!DU_!7T`+1#|06IzR$m6^LwKJ1S;RCRFO` zWI=nGT?l4n)}y3WeUw;MQ}k@^d^-!?`q&_7#%t+LY6ZKqgj3B$E_0RbZ>GEw zGJ3h>bjK4}Iaf#ge+BTaI2}&$n~_%sgL)ftjw6Go?GOX*S*hvI(_3NVg{CQ?IIGN{ zSgx%U8;|Gk)(VqWrGKAa4W?JL&oPnnH4FLpN8UfNC1g=%%peDCBGimHkVkHVv?I+8cGBERa z>AT}1&+y6`Q_5}SVspV&HlyzuMv*w$*@{%i<{08_M!~LFlQ**F1WByD2u~F@J?6cCyH;@1;hC zty`okb|(!;E47*FOSP@2a$N7wLr1!>0IhJ1xj!`@>ll%|G`N7MAAu+|m*QOP^Ks_{ zYoRzJMv)QlNz3Y~3TRevER;74dl0Uolu|r_2hx$5 zheIDNsjL~Z>XV<-5Ox2NpE0AzmEdk^1aPX29Wd}|z=Ph>TLaBnwxcO;v(l9J>UKlL zlv2iM4`9$i#HZ)I zSsl-FZXDX5v?bPNP7gyAWcwkJFq@VZZAOt#lb{2`$?J}xp+E&`hK_-a|2H%5;3NC~ z47nAJv+oO*_eP7qY4;X^)Qu)j=932{US^XyV-Aen`D^P&d;ojn0ej=mMbs`p4n&nw z0Yp1^gkI3hz0>Cw@lia;mRR3WlM9##q_WKlQrT;ij+mkpm$x6GKn+Hd%K4J__B)PF z^cSHae&s}$5R1{?Chbv1EiXH|TurJaof}qhY{`9tOLj$oCGiT@qtX@rQvenk04y{B zSRjJGAy~~qk8?Yf9|Ac}rv`skIpQDhZl^NX*xOh|dV% zQJ+jVb%l*Bu>r8SKVWhHNSKC9MC2#EGg_p6KLCgDzM{W= z01m%vRqkTvtowkXbAh6Bfueo(9g4rTp9Ct1h+cXCR1o}tZ{WE5>VV9AfXsaU%`A&Y zPcblPCksF!Iq?`Zr`y-Bl;b!?4?GJ4cPD%FcP3}>BM{&M6xJ%_3;=3#wxWpZ0BDd& zmIr75D#Z5y`F-!s|HrI|_XFI(b3Rva;;1Jyw6dR*Cd(2K25#z5whPWFp zpfCSbG)N?&DAo(G3Lt-m|H|LxrNjR$R-r8@W{m87OuOjkG~Z)XKTtbz{_oZ%w~gry zX)Xh$B3NpSkDDQQZ6$B$z|*H32cWM7Kwk@hKAKhzk6zR4zv`!Z%q8B~KNkPp2F^!! zW1Af|msC6%V!|CBe8E-AiZ%HEmr)3h?)EuNt!@M97PRrm<4)sqoYea7+I<^(m_Ji` zENkK{^cO%YK%v}|3l=s1*LW?H`HJ!}e zTv7+Dx27QRGKZ|DP5b{50*Z-EtcoTu7MaZ5kMoTOQ6u?C|Ha$&xa=i~p;7g0+cYJ!z3k z$n}07VD#9mECSNy-FShl@CVq90@$4husac8xB8K4O-j%-pw6DcR|>_Chu!JF|G{n> zRLeioBI~p$pimpb)kB?2{Kuk4;k8BqqK5@UuMQBsx>j7dKqpeqP$VsE@L&6_AT$59 z-wkBRfA;O>e$~)`(TnsVtfQpZo%4^DRM-6G_fD4MIY!mJ3IqMIJ^C-PfL?4uO!Z@F z=QRP5Hvu%cz9W~$-}$WptNb6yNIL-RePUh5|HfXO|6%Y8 z36otopdqxgj$O4ii2$Vjm!8?6B6OtxXHW(G&!CzNP7e6|-^K$2ok0ma zuAXu}P2+eBIv+#B^{WG-j0bp&0(gsJg!cHNA&mC^Pz5{^WlzhxB_os;uyCaXB@=cQ zuIG_U8S8+Gz>(;GT@m@iQFNy?>DA*yBoV*%KsJN)pIR|(c3wH^Ev{^nciSIYcny%o z+mC{UcI?C=vh->9*8ZIzdA81=qypn8UGBK~J?-jb#?aq2?Df;dsG^6SG+R z!R%OB7WetPT*_9U8Dqpnym|hinix~EAPF+at6Q(Dfpc*X4$ySP0YO=Y)u8k+So_i4 zxr=rJSsIi!y-H7Wdmu_da9f47a-s$Ie8YK`!?BB^Gts<3Ve`l7dr=%)VE4oN{%y!3 z6wr`bsvP;wMd#U}9;v2HP_4ilf#bz>OGBB|VYcO8(A@Eqy<{RV;s!&62qI9d76KO( z33z_Ir^sIwUK%d!>x_$8(c8D1eRyX7w8{LAv#_=&;}GgqlT-?`?i4WzG$ajV7?4YH zjEH1kD-Cz#$h}U6MtlvwNLPlFs9kINtKe%5Eu@rjU^zNpNZ&-zjwG!1culC0Nk1>r zRp2}4yPVlVf81nX1bc6h0ap^%sf{j&UOXB}iJPk~cWk%9#mC$Qd+)xbsIizL7-HJM z-jms@SJzkVM97k{1%QC)^Y+09fjKniVCG>Rxq54zQBj3KG8Q4YI1zffKj12y5^bb) zykOo9w2-I{q?T9(C0y7Yn~+5Gv7QBWO-PbmW0yfj)5?J_NB%Xjf$J7s8~38mMMEr? z#N96pEIXL!ilR|3zK3xUgkyKfmdi{RcOmW)Kwia)PDue z+A32d5c*AXP$)zBabnkwTnU6#?~^1KtlbJ`7BiLiE;*Jg*cif38Jn49d4>GP;j`@D z^slc`qs25G@&n7Z`*z5|N8CCKufiCBTef4b;e|VAJ+k~^&t`e@$t^p3t{bzUs|8T) z(PzpfG>-W!ED)Y>`Kxdxj3zm|$Bj*X7r|0K0qY81yIzgfLdM?meIcKN8ySguILY@r zj2s!f8&Zkczuf~7HBR`Q6E5DE0>qGY21}vFd!HIOO~y4))7N`{YiO?q+g*u-9Z{l zoyUjZjQ8iGeSbJzi)v)u7hgf&GxEzl(8*ik$?d))*T3E5CA`%OLZ6GLZqfck$hbb- zPeZ7DcpZmip0pG7wZd6R1^z?EQtdg8?mVW|?tOr~dOM_I>=9~xiC0r|E==RzKq(|O zdbieeRWmI0qep(?3U!fM(MMxDbcD$wnD)#Qt{k3ofhE2{J9v@+ z^~>`E78!6$b$>7FLyiEpQ2W2TXgsjq9`$T;sPWl9lAD}4^y;kh!1;|K2gj#tw*^*( zqOd#XEO1(mO@-Bgrpn5U+TN$p@<~VWTnh8vSNI)Q#o?>S>I+ESp+jxdz_~!j7OMo> z_eY&j5v>F(dX1^@o>2c$^8A4cEY)aBVMO|N2eT+!E+Cm&(cNjr=V$JVb@+|+4-w)VZd%+hO}O4LPeDQFr=+Vi7q_*~ z82^Apax}WROGuS#ieeyjku>-=_Fq%4IAaS3VId_ao}jJ(ncHm(>5|Z zBcoyFU_@o0lJeK$f`JD=1A8vsue>tEND?`Geg<~MY}RS2ibXIZZWZa4fO0Vjb;+k} zT}WiEk$q7vS7+Rr_4*bE+`jKgrUIdmsT(q`uRkcFyyg!bU$1uP5351R<99A*S9Jic zZ6v8t^38)l-5(az+TcI?0!)49`=SYla+MKfv~LT!S}3`&AepRana(g-R{e;yQj~up zZ#H_7?1NnjAa5n%TdtYYdL*g<80vT$W1xnS!oi$RHiTK)1!6uETy+kOn%QmS`Y8&5 zz1}yVoYcp2KQNPvMrB^#(u2C&dc$Dum9hm$@>=5O^sx~_+IWdDaHnQ9x!(B-yeCu2 z&vM*Bn7pF~%x=1~or}@~fM^}06K2-Ach1bOH~&O4OnbvUA6T@;>oP+wZ`doiJj13; za?Umftk`3M-xr5>0ZvUr@Hd5V1aD-)`f0_VIz=OKyVL3SmgtYq9FZ?H*vl{04Y|PI z#S$ERiQdnEEeh6r2Oy>f6E>pP=huYo3GCVTj0*+t1tYSqtPJ+80fFU?bJKZZxKOyU z$ON=vva};76!I;d4ETnSD1TCUcmo$q>jC5S?+yaZF!W|g`+jS1ivK!kk`Y6_r;< zM6M-_h5q%DbfjK~lb-n6uu%22Yme<{10RSdhty?~8r>xA>{y!qDLd*|@)t!p2=PSB z&Mz+%!c2$;Be3<6Q0uOym*Ri+WKO@EVy#v6*}k@WB<{1pDIAUk#`89J0n{unIN{oz zp~Joy$noe!HTqHx7lcEYHRyz~iJJri5%P1oz1M-7jHjUweNI;URInUH+L!{Xf)W&&?!!gyxj?=G7}$TjlOfF1qM*4T%3 z!yzdtG&Vf%kPV}{je(xWA?bYa!_45+vTNtWZ@`UwV@9#s{JgWD8)rR& zsYEamR?lP~w+Y#>V40_XqV0SD9mSR>1RXux+7lx$Yq!``ypBO}JXCf=r3p?UJb6FX zSry8mbo>qXJC#zO5Qr>c@5gA8luy~T;SMrmKFwlX>HTWC3|YXDUWs+@CXb!MsJvcA zZxxW@J@2xrpkLZjbI^Oc-_@X3KfB#}(-^zkq7{Hk^II3QhOW)8EfnVAS0+(ko@&tb z)~+QUhRkbC0!P>eZo#~&>7X}au?H49ql{`tiv1gL_(`;(AU$@Sa-{I)t~Ns~! z<-!bNHTP~+DaDmY4;|@@bUe%sv3vl^HUMSkk3@=uCycG7MF&hq-SAqZMtIT#14(~p ziIOLUOj20iw>(8ASIO0jWZH`n?Ez`)Gn=g#L5z3hLRTWI^Z(SRJOtx%5)1h_CPMX1^X4*cC{UHfW3w!E7JR~6L7{BqwB z>7xX#ealtVPi%>fX#x)Xk1OBs86;)+MY9vtn*9p6ZcNx$jrz5d106~3T|_lU<2=rL zMKY1SIlFw4%{y0_RJQrI`6Z2e8nzR}wREMz!*?>w5+gD#cMtB{P5hgeTwZVR%8ywO z#KpP4!~p)dwaE6_(PZMoRVEf)|7qpXzRKR60Wt^>iza_Auu7b1Yz|!`gui>UDh5Q? zcodCbe1P52c)?#dfM+QArhT{}x08Vyl#O#7d0LJ-wx`oHWVd&3OB{29%qP$c>E67j zjhanr_~8k31TJt;rO{lc-+1T{<7MGUb;u_NcCG2HMu@CL5K>wfjT(Or=&#Nns}Gb@ zr<}jUXIjFcecb7&TReazI)Z?~-N|lo_C4Zo;jS8j2RPmbZatd;)VzOBp3-GX*b)GOyrzi9Y@#!0PBDk7!(3>r+XCu6U82CX{ z&{m?74mZPALt;`bU!LCT5O9_s=;!dVfN*vT)*z=HEm2gZun;6+NA4JefM?X*m8Mc9 z6N^wu^Z^GQR<_&c6dj9SadJfx#9>}2fWb*Ue+K47$LL;5D)L~6sTHZ^2I5FRE>8AV)=&4Qv7 za%XbIf5sN7=(be)HhmZ)7bgEJw}XA(!CW2V?Yzg}&C}=W|F`N11V0_HlhoF%xR)>w zeV$x(i)zI|I*rG^Re=84Y>Zh1*Hf;qz>jl=Q6~krJdKAdwui9Q0T%4(tXyCF;x61& zRgs>>R=@Ha9Q)_WuBr|QV@48 z*o)Zs=WN2Ghh_;Z)Q&VxZ2_W^KCIr+K?m^7&jFheX1MVH0ai(_upz1)&p#zFzeH%W z{Y@PIJgAcPjD3`~^k_9r#dwoZd#=wb*w50w2--1i;6bfQK8{>B3kFUHenm1uZArYP zKMB0ffg>T4VBU_vm^Zc9pD1=ZMCd5ZhAfW8gbwButcJHQL(~>FfHjr<;E$~jO0toH zRH_7YUQ3J=ln@3MBWtq{#^l!OkS2Y@l>3Xew|xhrt2pdpgccokh8k^5+bzabV!lQA zP<0bgz{ZQ~nl!maygT+vTP?6*1go*0}vJwbAe`785;DjmXN4k>^M>DBlY94lG@&^E-R}No*+3w z)4~fmE*%f8Ev$Q4iRGHu9l00NTfFebg;EXFa}>Bxl-V#sVFKfN<>_33lEo1Bd9))vI)c?t9z_KEKqQUfXgOap04sYohx z|27Q0btYY)n&y<(4_X)eL|R*}%qO2B1O8z$wB7bhq#`20azFI1>{7`m-#sV!XIVWB zab5=vbtxUsLqCGO=FIgRc{DTzob3rfnmRgZnlRqJcw9b)Eulwd0(08!Pk%XT9he_q zIdOw7s2r=O2hSh&M=Cv!R5E$|2x&KFCT)^wjJ#s`pAg8^3 z?fN251m5lyZO#A^Jh?YPQL24J<6uZ=SDTc?f8*Z-x*FRDaC! z5E$Jfx<|{+X-q>Z@(WOGqU7+HQ5}brD)Oa*`E#L#L!z&XYcESUy__M5tvU{CtPCy&{N`Oxu-_2$RmW`R2;Va@qW_} zfIXPqL%Sm9QezmaqQKte!h&1g(j(I4)yC1j6RY&tdKN9}-Ktc@;)9f()_9#PCJ zTSE`&F!k^o7Zb~@DjU`M(So(7q|jyicz9$8&#fOPRYVun?93jz->^VsGsbV`c~oO|ru~K&JvS(sd*;VR`pk};;R-Eedp!+>)^9#}on(c-^T*}qz?^9Ha6VqHCrVZ;A zZG*pE)DI*7(V>~oRvSnD;~3<&E%?9v_i6r`6GK1v6pGbP5!ztYgZzgowBc|Kj_QB* zDLwvyziMt01b36ed==Epn@~E*x(k1iE+NEr{{MR~2h}QaQ=3mEKZxs*&z^e^_))*S zk-f{++>{)&9x%^0s8D1m>V3-!zU1t5&AC;O<*!P55MOhao%k8`AP&Jxa4`7tU#8Om z5$=W0%0`K4btgk?)5{4OIqXpHtO+7}L{~xgS=9Q@0YO+KWd!LGPc#dWw~|30bw-=0 zSo7;?C^YZI*KlNA38BsdWZxtF7w{+HTJKk|5TS##8gMURDcO1lHxK}Gicoxk&T@>r znHO?>ju`x$;H2YB(m-XBV+Fv6LT~ppgDONeJ3+*B3-45!P)MY+gw+j#J2(&hPo{`a zQ-Uv1&oFB$vW;H|Z{g45KiK@jJr4gi7d4jujC~~aRM7pF)qFKxY?iKiMJd+sR@X7DJs5&?p$183SMfk&B1^LyvaEEhUB8b!w@;3cs;7YYcsc zfr5Fe%esVx`adAjd$>;=9vaBJ^@Re(+Zl7^jCx)>({CTNBLf-uvNAAp6_n1~J*Kl6 zs^5mHx?`T5-iY=$!`qJo2c7f0<$r*}sx$X}l`)Ii6 z>y+_i8&fePABx#)oq<7^DuUUIMnXQMbD(&pp)RrH-+T<=lm3Ng9|ITNkYaE8f_*Ji zoai1E3kya1uByI<^J^gfY`;*?pzL4ftPs~KHgKXrN!AqWjeY%SY0OfkX@{}7Al~ZT z5gH2%F;7rELL{Tzf>OuIv|ngukfBCaewlBVVc%VLo)Q`X+nWQl_`jAE35O!Vv5Eh( zf)kn*rvI{n?8Gu0iPtfX%_IxFUd3LXTW^hu|+IJjF@=e!=?to-Ul z{<9$Nv-VdPkgQeygC2s9c;RQ4O8&t*8e`A_vX|4-MZ?{{xj z_-Wj`EJAqpzBX?s{D}a5ckQ-S5+@D7+%vBX{=a;c{KwZThLzi!6?)l41Ny6PP_;c| zuir(jUPoYb(++z7S8aP9*lGQ7|wdzmh~8I^DJEb zN~fplzd|8^hQj=hiuxD9Y~egVq4|ZEKnaBA*OY_~{(lbzGn87I|ESeA3)e~xy#sHF zpu6#dk20`^`D+*AYzo^F!9O8ud%F-7}cnkS*T3zcR?}1iWBMS*?#$@o?GuJ^g=35sT;eqGyOf`1Ls01w_pT zE%!HnmB>@P_4?*N5WIxSO{mzkS`*4Zif|rVXbsK#dR^Qd{#OQ#VxYm^{tGrvB`JT1 zhN9&|qzViWadwG-kP~gwG1%=I?f<20>3>sJ0xGT_vha2PDnTp1_7ZM42#c}pQ_VZv zze3m~1r@@`e?ll9fOXAZEDy?un&f;{zd}OSg@euu*6)#e(*6s6TqykS{=v`MLI$;c z57n$iH0v2?Zh_#e=Tn1O|4ZB6K?gwo?*Qmgi1;Bu4U05Kg_imyGFxYLkhdFUXeg$x z>NI-()^LZ4{~mv+X(0RlMSL*DPnACe-B4VM2j3d}Ro6k=Z(bjJp~f5rI7d=hg@23Q z5c6HoOW5yr?b>%=qb1Son`+*D?SfZzt2dJWr$qLVP%Xs$SD(}TkgoaZroKe6!a}D8 z=?3P;@-VLm#VbD%bpL6gl{{46(*A+fv~!i;MKi(pZ>sg4^!l`;h|21_@ zkZwY0lKR`F=`^Siv;Gre`;kTQK*=BLKcMh8erR?6`PY;+0iuie|Hp~iB;_+?>4o%& zGpm}5bsLBEhcdXqW;LwP(+~UAGT{fXc5m#wWmi~i_E{i|K+DfzS?IPcf03GEy>wse zZ|%3QpRR?%HG5$n+Vn4Bf7hDil$#PjM+`x%_)c%|)w<*Mi|q1G{-w^n;KeQ^>wB9* z)N^R%3?A^&2f4PGrFx7Ard!>oiTVy~v}%xT&_ zZX&KQ_bfPijTUtr*QSTq*>O~tQO_@M>8NY{=-aU@g0R@B!Ll9cx)9cJJvkmVmeEYi zkJbe@TT+W^>#{IM7~athTi8oz{Lk6$sX*m3)--CuV0GdUYcfsgI5){msO zek2y#>aA3x(~)Cy?sV*(1nIU9g0 zh)stFK{2oJ@z6ViE+o~PxZdUzXB`}tg(D%hhh?JPWt!wJ?doTWVr0+h?+BeZFEX;p z*?K0FVbOmQ#N({bIT3O8^%`Y{r7yax>ZXcA1_fG9ORCuW%l^%KT)&y*5Kl4I$VMLtj%)0ZbPg8zznLxJx2pk6 zVOPDP7H5*7J&F%nf2`4}-u4c&VR34aX(OARAxqJMf#$lxx)BaK40IkmB@mDltJ@3Z+UTxzSKd*}r$ba14tBYF_Q*SWibQMXiel%uKYpJ}pPJtb@Myf% zPUyJ64j9{eYcDFY2uYjjx3T~8DJe(!i$uWj#@vQ?P!l&?yM$mepv`4>DGWhGqp$u4 zaBfNCpkXX$0}te$3nEu5%`q&gL?m+xD3;S*+nWiPKA5ox@P+q}zj=$danBcjyX08U zr)GSS>!*wQT!z}Uw-xUFD9sSPou!JuDNu}0x9%HsOEb({$xL<{HRRKDQ|hr+bEC{M zLqHj!7kJY2TUqJ~tC7xRnT@G{b)$jiHKy4ygpUMC(8m>)|17+#O?0K<>*~V-<_gE= zZm91fB6Vl5FE6Yndb2eHKm8`;>(MutdAL)-?gT*6H z%~1M5aa1w|B=^7p&MSs6r%>GyS@nT@;W5NMduLv*0P7%t3J5MZ7dUzc`fx6W2#~vp zQ4v#oKmaGF1cqM9Fao3>oJYH49;Ata-V9id=NH{J%TE_572nH1T?NRy|Fpu%8z95Zys%(6Es7(3i1t9aF$@nTf3RHO&kvVVW zOEXk_XiPaP^`im-5SEET_deQjm_RN|RcUeeY404BulXl(xUv019d)^Vq}fSk~g| z`LRG+lV+qzpBT)wEOz4kRdS{QCk~;0>(@-<(69|w4%XC}O$2ENGMuy{TTalbt|@%& zFOMF0w-hNmhptG=q?dgdzUxL6KBLQd8xO>9R_7B z8v!2$GWO3dErf70v;uo0sLP+Z=j#C3VRA+YIL9(|urpY9Bfm~0KMRQ%8U3_Q4)qCH z3eeY95RNZ*eLO2FK$R(Di;c7N7@k0`TJth(V(8Zh;=t$ z6en44_KmM3CF-qBZ#c#}^1dN;wxK+kicG#W^Pwh3o<)nTP?+I0WasfE71DoV+Uq;k zn*4-$t>f#EKP2mk7!%~gg2VasM{e-9V@_OYp@p_^1h6~x`vSM-#U+AM(dl`+VhP-; z0RzIePTHAheFrIJBm*T8WS2-gyKd^vz&A^Lv}6j>(9GB`P_{s0({|h(xvj`Uo^qB)H?K&SrG^YrVU-(LkhlJ z#xP>x{?F2OcX~{dW-fB%&zK`pghFgZqWL4iLwQ#jB9uqDs;hH5c7X=F%li(Ku0aC= zRPv-p@;f{W$zzur?MzA(JdzxgN1=5f<`~Pj#c_07p0RFqoE{uu3d2mqeUw2}FuO?g zE8BkkrKZ|Nw25zqxQzWEuoaE9B1=KR5Fc7<@ax-{+jRl9{F4_mmRFoBr%G|<8&b?IFY=c6O)br1K%;dzyOt2Qibo9Qcy&nc_5CI)8{l6D-yx=HLQc@=Z+hH@<@hr`tQu=SQJt} z^nCFgw_&V?Y0jOa8jz?eWGWCp&o(Gsy!TdPgkNeCt7g{-@Yk6k+$19~BRTD;n{Im9p|Lx0M42+hZ>M!Uy2W2^bqg9x!&ut4 zBTh;6$Y2=3fj_<=lWhuKHbWa~uvTb9oosu^=lqy{b=&%79;JK0#9)>*wv#Pe0LJli z61oMuht|GXRp1R=YU%GadZ)?o6OBSLRI}|Z_g?)Bt6%ItMUCS+V2|&;M3#T9(>#4A?qO_#BYOU~l@(hSDc^`BO2~qDwa87RH0WnkG%+nyUTovtUZli&4pG$}i!g zG7xoWs3NENX_>eFyp@^H+;2(%;SJEbcskx!mLyM)-hr730#HDN=Iy}jvYx<3q5!@m>;3QpMWmGg zP9#|(WD`UYoke<;vnPqXWDqdXBCZK96chOikaNt-MRJn77ansh&H}55D`R~IsD39Y z&egGsLR(2}&~2X?IIrs}?K6y(2DeJ8Q$~})J%3|9&4;z*XA^ZK?MSx%A10MIfDw!X@NF_kQEbc zt6bQVuwIZpQoo))3GK?f99ywbQ_!;ap|VY zLb>-7zcp|W<0}aNx*_E(4^;0PyW4zKiOA(OymCwmhx4j0-GB65ha7tIuwput7**$tq!lVoH%wcVHhR4`L|s? zfRBE%PPW3#U0p5je&b&^@-^`wp0_Bo{^?j^?Yu1=)Zfr|?0eGj_capPzEQmL*%ov3 zm7J^6Fzhq<=E>U_mRUepY3~`0ik#W*+ws(~+X2Jh@c1=K)P6&Jhz)e+Auc*C5^*QN zx}o7G=hOvk{9=36$SJaaQ~H%3AMUpH4MTkVf?wOXhs`z8?S~wSSjc1t&-0DRTvO6jX({)diQk1+%ez zW6EvHrK^n26>y8t{*(`>0WXDYzLZX4@BHe@?69||@90rBHJuY17WUxud!nrOUm>BG z*!T*ZXb0@rT5ZIFSJ1o?!l{$Pchf{Cp0*NotdM(r?|f7Um5BCoSQI21(cOOwubqw}!CKk)Wyj)z#UW zMLPu!A-MJ<`=!~>a0)`=UrDpz+WZQzkIpmGow4Ykp1|#z! zdAArPQ~5Cb?k#__dxXyS~Zh=-hJ8!b;OLNMrL-T5qYpSKeIKBQ~~V0n70WFj;prhbx41{9~DH$6fW^5;lD!*LGvL_M6Q zDGo2YuCzZvSkCOM!*R2_`1Yx*h7_7hX3j!nB5V9Q^gBVntr4M%gFRJ)gj+(r_PZdC zX%0sjNqImZGxOvn-*0#NoCIXA00n#2L;8BhU`NdF?%#z%_sUUt)eOIzfA}3pO}$H% zuy=sjF~NRO-&Meib>?Vo5B?S;T-$+MT}v-gHWx-eU$AUkI0vVvo97@OBjOORl4 z4xtCW3x^yGZ)Xtk9HA&JMTrDJXpi^Ob3kVKF1Jmtg_KQ6tJW;P4St}-8GM+pGK-oE z#I`ib$oukb;Au{piB*hU=E9w*XIkc*|3S@nc0`Yb{G+YwV;z_g&8rb&yH$bCoG2bdxI#^3G$k@Fxz>iYtzm@7_y$>8CQ9y1|J2 z>OJzO-h6*>lPN*_f$)#fjg+L$)K@PBDh^3X(V-!DbGZ*TkYo3^DAu5;M`OZ86& zyBYVH9M;X~H7&5%F2;ycj{~~bNC)fYyE~2kpAJANkO z`}NopT@*gC{i$5@f{ytl(Rq?E`xYY5pg;PwBLYhc*tK&S?ZpfMKVae4Bh0_)Astw`vl^^9-^XqpJ^Buywa z_?_iml!HzpSe636!gxP=p*cofxO`Xh%Lx_s_G?oGC|o!RPz{5P3F#wi1c5Z&#C!xs z8SIqO1e=N_0a2j><9*C;&eEP!{F>i&t9rW>A!t?Qm8O_!MNFf45n7Ho=~CV{j({1} zx1GeyXo<^eq`rqcbLma*1q=lCGqNJyGCPTfa$=14NwiReL;-rreqGkg#))K)_l-7h z8(UD8R#d@__bQ=oRCdeKg$sL(+;|S3#HtzM9@}dgM{Xn(YTn~(!detm!+6SpL)yTP z-ddkI@^H7$#Y+6IjJd%%g+6MNTJ%#IYnvVz+U=-jDa2>U|%g zr5$kr&;EdetZW*{@He+YL zpVNom{U9J}h|H@Dua6V>L`b1Ixpdi^6}U%{rCGhOwMc#xPnz+|VQ|9dGCy&lPl(l& z6eovZ(RQVGx%^aqi!ItrNb)Wd$Ihbcf&b;4Q}`y+$wXF3YWyH{Vz<$cm^p=Yx=szG zVq2&^{`0pboQ`qM@arym*nto)O{@CWj&$9AcF&i z(y(i@y#Dc25(>*$H+-AO_yKl3lcs2cWA8;eHEEM*%FtX;;ZSmT(>}v2l5-9Jf-g06 z@d0=!+TsN{q@>MWpk2~|uSGzSno4+pcyY~OVG3X??)fAE_pV6;i5K(m#2p;#s4Sb4 zP_yVcE&aHJZ-9o8Zh9>ryKotM$gO(Di+4vowSagIo4xNBYdYuptR+EcgvQYZKP3S@ zhFJp^zug)b6yd3{CrOunbj)zn6hFnfRVNOIJz?(iwcFb=*^^(>PGnV2zM^*I_1|2q z!PFqz2MS3K@V<*d+pON)iZodzkG>;5u#*rg0FWg&lhG#5lZE+gcU$vh!%7p^*s-l4 zXv<*r7Gt!c)Z6X^ffa`8RIHGQzu4!)k4^J5YV4dxFQ&*J{n-;uqRfEMgcO0yAMkrz z0psaEaX|{(cSna9kylnltZW=!y&cF*&iDswy^BjuH6R#2LLN!@x9+5rEUt5Li1ed0 z21y*h7bi*>j`t51mh?7sS8{$U*j`RA8#$muc4*mTs=E2U=AaNiTRWXh4=-$<-fJNZ z@q)ZPMhSKrONPURifp(kgE+fG8ouXh25~zo3E+Gx1g{bxt$MafmlIUOi3;DW*b6I0 zO0YDjvZ-8oIKSJUxL<*>BnvFC!e~dohTe>BCbXJ0cDP(@{cNp*tc9>JtL=u`t4)!; zTO7AK_r~09MHjlcxmn&%tG2HfTxnH0q8$|cePDZ9xZRLRIh61KnKDB-mcjLvMIAl& zQ+5SLf@D3;~ZnG$O}Ru*Vga+92-hBk#P_ zVcBi^-iM>t<8aBgNxE0Ebg^ZA5!e{yox{6X;vn7GC+meqUbiXEh5Gx0S0KIL#H>QF zgY^B!$*-98Po@`MEFuXlsvvxZ@c1P15H$;`om5Io|N8e7ViBtcxJdVNz(FQM&?ZLO zz&*-FS|2GKwRxGl(SGl^TMH~2WBnXyfw~`r?w6UMyoK(-(4WtSPyTwMx1rqHRh&)x zBwl8)q$t~ydNWvKblWW~SR8&C2Fk2Un`QE%gc0xxb)xZX$}MW3fDWVM1U;v@?u%H= zd^ksW%6@Bn_V4>nT`F~$Ga;;}yDY@Qk_#B%DI&KL=#!wJ>vaV4@g!{_i5>H;gl@CT z^M`f4iaM(;4ZnlUYv7Mb%}g}<^}#gYz*|PYz$EGX17DXwJkVK8xY}my-doNhk)Hu* zv4WTNV|$)yQTkf~oqEMjk8W4b{osdpV>p=183v43SF`tK!YX=5mdD*e=deYy@cjB~ zpTN+|C$7j5@540x-S?*oFU-z+2LZ)o6ymWKc$<=0XFMN-WCLNqc($$|F z**xD?L9}nwgx1Rsb|(qZeVfS)M}*;TIl4?oy!F2IBD+|lypr~`$c_}nHrxHJpfe@am$*|fK_KYi=KMa5Y%F6f=zAyfvEMtF-V^KO!zriNfr$QY91%ox zeDm*~=X(P$YT4O+ZtVjr2q!@->bIk!I$NwRVGWpshSlUo3`ytc01lEVOeYP$NJ#&<7@p$_RH7*2 zM?Tk;rGneG*bRfLHS5+Lk4t1IrY1g7&R!@>QLM>&=M|8kQ`2{CaTt>DlIrq>ryZFO zEq%=xCcdm|cBrN86rmaxsl|>zs$c*xuwya%cQni{lvyMDljy!xs0^dknYs?!_Je-y z#J#io^IRwNIO6vO=8UR^k_XB1IXXblC5KF=b$~3xK^ILTGHlywXo6L~M{+ke8;uvU z^&H8baqvy9#uiR^At;4EZFFwEM<78*#V2dRGKDKAh`D5dBX82kNvh>kVEy95q+7&z z1UJQ7HNVo3?Me%2DSCTL>2W!*?xlY|QP+juZrosL2oj~h1e|Kj&g7v&?4y`tx6Nn! z89Y&(ZKI$Q|1Gz1H}zjxdjkjq}OZ9BSp{d2mgE$WFK z`jGg3B2tFvNaD(i#orSbK$=uh9!cIYVS5r#5hrpIj#2-dP%_z9d9vDD z_1g`l#)FDr?IjyZSo&J8mkY#SadHc59$%|Bnq`P-ek&UZq82Nt!9gS ze$t=M-V3u5@Sskc?$G3y3oHDMdZ)JO8uhlRPc==>_cjm&6fd#h#{55;OtHi zuQbr%&a{EXk4@R|!IWT^x$+QEo=*LP*AW4@(r3|+?Kr(ldH;!!BN#V*q{K^E5OxY2Y7C!ldI2_b)hG=9qLB;OLKrij zyveyzV~~6l&4o^3$cXbP2^9zfk8C@9kVetHf^EX4)0* zob{V>cafP1=MP^`JgrDSzrz!_qKf;ec$|S+DW6l_gLfH zy8)m2;*<37!X-R1cXDIyXGp@-JvE(?lq`62#ug$U%l>h1Yt>~-b_Fu5Y3z52*O`-* zH+IS8d6f49c*Ud~&{5J(eJpC~h_c5X{j@#4eKDb}OuI%_vTb6efj^b91(%-3)ri_O zDec{pY-}AuJNKPLc?X_@>s!W5Pg2>Z^xKJOCnQx$``>nPAKxdA?Z?(O82?b;B_f62_04}T zT;_K8Xf^O)cu52^8Z)(;bU;9ur~3$hSz(}|R@ID?Tb*WcEjgp*$YY4dTAkFy7Z0Bt zmn4iIJ#<3}|K6TfzA2t@!^h52RLrd0T z>e6gSL*(x@4xCrzpKwOk;?F;HRd>!#lKCg*Y1&r+B~+=8Sy!V4-7xi7Za?kv+%Sh7pn{A0)jf-$u)M%Htk6hVR8pl0eiA7 zIiJ_?&hKEM_3ijP#ClQoxVwzs?5M5#U-3J;Z8|$_I!B`RtaILF?ehePb)A>U0Jk4# zMCL-U#mS>?H2yGhGCQ|N8mhW`XEBmTZgwV`@nw;hcW+1pWa{X!LN1VK2?2PNUN40W zo!a-08eAX$DBo+fK9nFa5XxUEuN_L7nn39M1zSF+|KQ9P`wBf0`Xe=yV2#wu5%y;*!z|UH*sY~AMPVu3M5h(qixaiYySETs6 zoQ~^^`Lg$?26}MHyCdEBx{f-j3c+^ESk6t=fmt9TRIgPXQn=21c?M8Se9RX9N9e8N zqLR<`vkQ5Xx6d!TPwAMxArl+VRa6bA{XSS`g2!0U4rChRYj6M9#gsU1P~vIcr~fQXSltNYlZ6PJy-Qy4V-xocpNixVZQbQIrC(aZ)>IL6UMpUJq9IR|G>)ieWnsOR$IrhtegbcFlAnEq z6~Bcm-4&ihJsE7v@7Z_N?Ad3XI9{oYs5$M4}F<6i&HCeP_2qHfiYaq!E=K8MZAycAUk4;5p+j&=7Uj zI%(`3ves-)ml1DBgpKwICddYgEbn~G8HYHtYv+hrHbAM+LrH5j<0iC)Tn!SY4sJqV zd+s87798eu>x90W_GiuCyt@byT)IS#p~1%XTl7R<%l$OaC#jF|VGKI)?N`&izcwL? zW^(eGfsDBXI}TLd@$ujXo^?Ao%DWg*lk_|gtbvm_{t&$0PNInf2Hi8Z%tbAaUMWXX z40Wc@2jz`kg?%sp8ZRV_Z|z+e*=_AXn4A(0HjoUbpCMUcX1jc{?e$0_WarEil-!oJgOy=}k&CYX)K5?o=LG5FIAn+bG zpd-%n$7(9jes=?O?SALax9RlZrrQwXK_a21TMT<%!(##bSn~^!$S5&0w}Bk~=GnV5 zm_P#&F8m@A$Xla~nGzzUvCn_@xd3mxpz}wwJVPPJlaySbMO@yk=x#s&u==B9c5lR9$>{$qYjF$2+WB{sy7Wym}Cf$SHFVkzty@ zIJizTLv!uUNps~+y<=?EaQ|ck`e=5H2GSqiZXtj?Z`VVf40k~uSB}SPAl&z$H}57| z(bODvKWBQU)NmxzAIG~2cOL#)!Yf0TjEz-zl6(BddM$KoEak}aX0Uge`>g=_>Ni4)ndKJ`>F&cd2=wcY%jO%5p#&bpUo!^ z5qiw+t!YkRw)*SpC*le!o;DhYO z-iLd>>h04;4Ucc{btJ7{bxM2rYB2lJ*k>`mA&(gDfi#hT9VzV0+d2*(kK*(BsaX*t zscH+COP9nQx=(G5%MQxj64AiSx>CxKR0~{FchjjGQVq|a zHQ6qF5s%B(W@h7TX-bIW2t7&(DkIhN#dpqXUc$ITS&r2&c?=`CuyEqce@)^B9z5xn z-9PEavOdZAQWbJ~oFf8agK_}4XgrPlnUAwz6kK8o?A{&#ZN^wP0enNL_vYrvO|z+A z@Sb4seY$Tk?Hdx&IkGsifpB4s=_4|WCuDi6N9u-plI-kDNkcAWSBd;sC%X8}$ND}c zWQ4TKKZwGV2|3W!#r6>6PQV=bK1!ILAu&99;+PpTB$m?!4ed&MpkC9PnfjQleuLXW z!yMy&Qs9xaFll}OL82WXD8FS?p#{}k-;nv5Y$scmgBAgPNI0s{yM)`WLR%cAmct_ z9(y(y@ALsEEUT=nMiVX2dvrX*B8ycRek-U(83%SBi!Y6@YdbcjKEZiq*R#DOFuxSx zuF>RKL&fk{`9&kh+t)Y1*C5ov#?oimCs0BAtSPmrBdnuqt+TAi9eCuYh}T)Nq`7q^ z$R2j{<z8uaN`w;0m`fZ4k1_VkbD33Q9tu|bPGeGCoc>wbZn18);U9-Yw5ZPCQ) zbaUG~z$RC107u9Gx!fpp&!u7I5kGFn;Cw9SOIfEdU%6rZ^Wn*2Ue&%FokQ6Ry|7Fv z|6AB&HdKOG^SZUJieGm(*ZK9&^?I{EiI48yUdM-Qh^tx3Mu~ARI|iyxPG=|)h-}QkBY(szTX<*fz zk?qsOXXKTU5~t^NLeFYEzYTNshu`YYP{$h!%)0q_4n3ClEKke$Xw~xd&eFi_DDp{H zM_1m$3vm7AzgL{fKj#`?JQPl{n9AE&-n(R6EJ4iv(ih&~cloYFF&oo-cm3Gsk`E!-CGWRtsxXEmXr@dNb z_W?uT6%TsPXqNBf0r8}y=H;5w2B_QcrSE3TEzn|bbs(7p*e)69`yxKb)*eT!(OcZe zY)UCR>%NKIrNuDmbT$l-xzTj?$0ibBnQE7ieK860ql|M>(9zs+nmKSd=kO@ib>vD^ zc)#s@r3d7z_6|5B5o0Rr&VB^LMZ>$Ht;vP560)Fsr9bC@Slr`6A@fiSQ(^LZ6ROlUkLkGNjxt?By z#O;NKg{kJx{;`DQD=UKJgsUwPC*!O4&$fRxKkse6rv8D+i80l}c{5|}MA-;=d7k|s zv{sjgbvPOJ45=N??|!649=K3`Jd&{l+sd%>y=n@anPh;FcPtHlC7i+Mo;=M-8r+=~ zghHovzE-V36(8@G`&c|*TDoJ{ai#r8<2&oj1y^p-%SF90-AU$gPvlq@-8cM(sqox1 z{?QCszg5btIGH(C(XXL&3l_gt7>8p9ZZyc=bpO%?02LH zq}-jgOwekxn=#d{Ps7lW;ZQRUz*l);l&Z1bDK0wr=E2}p7fMb3A*O;ZKoZpx$4>Gx zJV|h!+_H28hN1F37Qv6GZ}rA}#&Pi>ZH4z<8-x$M^{f`68CG0G;i}feISVNnm2k9g z7l6FUn3faaXcHq$_QU3NBd`YUn6IX;1w{&@F=8D*(eD;L-RI3>yg+G??eVi~#(|3= z+m&4}&|%?_8HP|{WNU_lDT5tNwB^7fTD1m^b>h`mphC?GrSfg|S(FtuU_A%lcU;tz|rwsdY0 zF59JgmM$FStjsKxH^ifvbY;6mw!0C-h7A!i8ncfe^cPWsKwIr+uiMTXi3DQDmtDc(@INYqvU(K0PAh4PfcY?jTt$+9PdJvEO&@OgX%)zu^V9V~ z$gk*NJ8zWlQ;I@W=gIy)C=SYm;0UkFkks$xf%hcZ_dAtZdM9b8KuLf=QmJ~uQN9aD z(Q-VbmNe<0!CUeD_upZ~GmAt=u>~0O#r$38dCe@Zz6%9)edn57?gHNpUBLN~bH_bJvEb*OeBAHG(}tN{3bb4CCU1MgIhj_~Ry-9$f5QI)vJBUC@A6s)zt`5(F- zcJ^-W!D0ra}8f1)rVQfTS*Sz|Yrimw_;Kz$6x_-T; zZBzCmJd&!=H|5g15SW|0`stcQ#hSKl?Itn=;I&@pJt>F_M4x~=E%xrl91CYSCJ z6(D`ypZwrL=?rmhaV=7N%B>eu9#i_ceFrjcB}6fJ^vqz(ZHBbYxYwN=A;mvueZHgX zseiRt&-Kgx=~m&i9>3$0g?b7}bnk#7$MXtE%M+G4hs0Orjom2R1rFbppisVGWqI6l z+xjSJyv!fD15ytz@yMSmc=h!HCs-Ix#Ls7gZ~XPJerzk1SgI#pp$3=P?_?j@Y6`xF z>YZ`)6m`{{KhO7cc-G!nCq_%0_;bn6S*TTv;SW{B1RPDkm^9}Pd_ikKF$Hv_n;8m3f& z%j{OdpOE`rE3S!pxL>XPsesk|>~-y#S4!tw0}%f&g%H=aAD6BX7bH2QbljrxI4rBuW=U_h6n#KNN2q?R{vgP?7m%zg?8fxSBX@q@r8_tFyyTVcuJpVa1T#ngTux-Kk2w5PzD57yIq-3oqUuOMQQT zI;M%Av(?|%R(|x1++-s2FIql7K~iG!Fb&)ECTr{2-dCdlu`v0_6zyp)Pxoy5rRH&( z`zc_H*mHM!wO7Thk`V~ces(I)2k>(4U9|iNTwCeVm)KSa4*jhS;M^AU{-{Dr4y zxlMKD-5@wXrBCfOGDro!5~+{Uo5X9kqD}XEDPOxdCY52VDc#So3AVLAM#;l+yHZ*| zc1eUVU8+Kni*3hPxv$QN5|KfrY)G`62+J#MP8<}?lcA*XQk_Qjd$Y`PSGI6nai#h3 zB!7t}XVZeL%d6ia;D=SG;tcmTg3`*puAf+g!2uDVXPxi4caL-IW^V2HDwxZF_fTmn zdExr%;l#(h-2<1rk)+x$w`uJGl^|CQ5{!6?wX{zpW(X+V2SUkUcTJW@cOi3OaNI<^wLs3OEKoewR-@{~~hM6IelkP$npa&GxDxSnDHDnkue8|<7~ zj@e`U2pV@;k_NG?+)st@D5)wv>=+8g6JZV1Kiq%Yv_*HW;_2!+(%c&>l56|Te8Y!F zUR#kqr`zB#w3@p3igoD@bQdFtV|FV+5i9&ZG`)FPlIhz%{?6OXI5SOIQ;n4gQ&zU> zr_4-cnN}-PGBa~!%FJ9zQIY*qPT8hZrshgzX0GHGf(n%-sVTXE3P_5Iia>~nEDwBn zkKgg*PmcRJ?&rFn>pHLdx|j3(sFC`@qK@)k9`V%n{|G;!`2%81VhPwi7VI6PpohAjsEzeeLIss6>3Ei{RKq?kJMog7`G&6Hh)%+-+4Z|Y4G6pEiC+cR5= zSWWnFB>p?ek+us=fp6nGBd!njf70BMv|k_-LwVuuP)wmd(nKp1G-lQCcS}wTN=F`_ z!K{0)Kli+_3H)EmQCIAnENhR{+1y04_Zo=7ivcvzx-?IASyd2&EexfL0G2ePfQwD>fdo z*KG(81dPQz{C3yuSYxFdPdVCXj!(!dFrHsSRXfgCkEnnBM>DtDw9gSX6e&~p(w513vOQDXCcTsoQxi_Lu zmwVa;%o3NsEMuB;CcQ$)K#;=9n1`FQe^{6r|}rr$x$89!(mJ7+TL-*4p~h&Fd6 zm%l%49L4lI#jE|Ce*@4)ojLdnyWD)o6#v3OlaWF164( zF%zCZ8bWBjvsgvjnXlYJ@3DQ?It?u>muB&~GZMI~nd^;WbaZudJLF%zzkfsXB=5Ka zb07m=S)8rPUj;4zv~jmFYA@k5Ce0P*(3R$M{q;M__Ic<1;m{hNoXkrm$T;T7w}jGA zH|XFoj{N}1w*qzh8zVA8kA)%R`j>s+`#;hw$daL`Bwl!HmHcCRY;gc!7qMxFMCEuZ z(-Pz)UVi4Uwv4lrEWhXV1>f2ZCcR?CRnz=0hVrFwM_M5=3|y8=_ds!4Hu;8CH*|f3 zh|B@=ngQ`eID7WjKyan{R=oNKfpzK8NaHMZE%ZC>eDQS9GpYByw5LmdN0~cjP&5(W z6euUuPgB&7Q`AxyGiAYfGW>}X%!ljHGzFenGba6~s{$2e0Oqx$;a;MsGWeK;DjJh>J*B@$38&5|(HX>Bm4I6DLV3Tlq zs$Yh)$ap8P4lfM*vbyE<(hs`ACAUubfnnOIn-m*`GqAC^X>^Bc@q{*tED7<^@Xxby z*TPF?v9oNcdU7i~O<+q;{reXEEKx|Suy4{~8BlEg8?4W2V~cRK=*P0Pdh9sPxpW%i zPyG|>iDw)mJG@WmbOQ)QX#(p;yA!8IfhSy0E{(f8=}I}tF}>|a$}aAt8yFF9ifo(@ zq0fgeKt_8kiOFXA;Y7Xw?mv1c3{WlQs`HSphMGOD1lB#aXP%h-PJ0w`wc9+`HDM}n zXo~hOCOL<-FRcz=X~|2ULMi8K4TnViKZ0qG4YwQ=@bdX*MCy0+M~;NY_cI@nAN{`d z{eAQJ7P=$OqVlnoYYr)fyjIUgW3v$&QnNJrBX`02iGIoWrcOB-Rtj$arT7p1;X?SB zDYoS_C?M@eaCsdlKxk@eR65&qYNF4JOAl%iJuvEBSVHoe!k}z6A}C#Ay3A0~YQBda zykx$xdEB$fj89RdzQ;VGuA&|PDSCO~BaV~T%6e1R`lgT+t zU$}x*gd<~AI(n4rzjP>}Mu;Ra;X&K9HVDmW&6wrfT(Mt$dD%5P@8?{^_d6?y5Lik9 z+zB&U@!5QSdZT^n$nBbawj{3%nVRdbE!#a0tz2l^^qxDku#Boa%YP)@saQ0hZMV@8 zxAoLlYN01B_C-Game4qa^6Xx6$-EGE6Lq1u3qZlZrEl>7ZWm(yn?nuGK!>%=+hAJ8yA3% zZ|*btYxyE&N3RB6{a6MLU$U~_17;zxCc`kW)VkK)yeFr(zdep|apcamZCdS?LAY*R z9!no~!Te#fesmJ!_@u@uth2_+?xpf-{F50i;pUjr{Q zQ(9ztI#vnm>_mti#PpqQiOtfr*_2qp+Jx82pp9aa*@0fR=yhAU!r_mOJtU2lwKoSf zI$dyc+xG&p>8-r6F)zOxcaZSz^Yq=VB+2yI{dT==Gp0=-@#pn*CER}Q^m=n}Ab8;C zr!DLFR9XOSI0=7DNwGWdN5TE+^HfPYXEn@`wS&?;!r$jUd&)A6Ji%!kN<_;pqqiTqhjjS4tB+m=!4k?y-Z+=8N#9=bK3X& z9<9`VT;apM-#W%lZ(AVFxZ);EBVMHc?Ff|P0=Y@#rwbeDPSzdr05kV@^5m;H{@~U5 zk0;t<&s=$4k53Fd%1-p-WM3SOZ^;m!Aa&W*L8&DB66N|{K5!Vj=>a=86tVuqj~gLz z-&~LU{qoX}`JC(VBPlBkxS%bTTe@d)hR7u~e3zuM+^(HmGjzAv$?+6eYRElRH`1IJ zf_UX>=M{mq5i|w_?+FJ9Dpvka^E~&gncLF=c<48tp!di>yx1cy2OSqb+StAJ=eKUf zSbTP;`N+MAndOOOr=I=Be;%|8!Wb6C-b+h6>o^*)CCjkxkGXEH2EM*n#z^HE|Km{9 zc@JED*86anyH^?6ewa1}-f4QbnHSaq9l$N29xrJj72nO#DeQgg72WOWIdX*0Ba_y; zYa!VW2>6kZJN|c+)D}x;KI{t)`9~OiCm)@fWZ|r?w;T=e}Y_vagZYhF{WIHti z4yVE*BO|ay=HGPq13prCcpUZISi=p+yaM8d8Kv<70obRoF`wgENt6kTWsherlK1#F zg`wGfiGPZv&)$=y0Nf@P;YayFpsHhb(dIMji{UN*hS8b86MIX!9j zpKZCnSCd{rR@i$SGDiebVwAgS(A)LGV*gV~N$@Ya)o@$M_z@M88%r>OXpFIVma}Nax|1K0z7gWZy z{Xhx*jY0J+H4FS$uja_<&a&nC4gsGZ6cDdZb7)(ic5sAAWLN&+y z&Nc9>i_dAezi8O(*)0qrnPU9ug(utRm1pxwg*cI8&e$5zZdp1fLc z?#75X5+(bw#Pb$75}3v7YfA%`H;RObP1eSVe0pE1LL-vNX#`D9L-g63f`biYKNNJ}&$ z9QUG(*&{Hcb}f{>nA-^%mz{#ILW*|g(e%yhN$covan=kNv`y!r3pGBfV}1AhU3^A^ z5Zm+Ny4)o2Al$6H2VKhCV{Wtvas)L=Cnm6tA0((-qnJ(!V?f_2r+CfiOyFIKODCh| zSCyuGg?rB*mJp)~jb{8hz*D`VpEJ3rB|jXKezp!ZdSHPq$>(2jYJk$Sq~Pt#C#{%A zJYqR*zv$8=l@a7pgZn)GZgFp89r0=Ff2Ue^f(ka}(h#JV2XHo@!&chX!Mp&+N^vH& z-v!o9Q#}a;@#DQR%=xF3duR8vOVUq)9}^2n&HKTc-`l_r<^eTYXHuC{aso`1+woN9 z@w;qERjX`?FzEW^(9HdwMT$A|k?AX`6a{oF{no20gIJ}rc7I>Mut za32*vS7qTCv8d?EYo?+J@&f7#8M|OVhjST(BezkgBhn7mxk6v@W&_Q=nhTzsPb%Jm zpk;GB%k}cBAg8#;lQAajFsVYb_aP~NGqKdqa)~>qmr~oJ@SC9j0Wmxqm-^zbaV8cQ zF@?fZdKPsT3m#5=feh;@rk^y$YVSabU(q7?o(!`2snD#~&$ru}vx7&E&b#WaMvy;+ z&gm%E0Y*>`Me*;J z7B;4>ZUkLuG<7V0qPwx?SmbSk{k%p`aTBm7XX~%dT5}7krFfySAaT;Xz9Zd)tTXjq zgTBs^NFF9Nx8yTlEBymUa7vYVovT+Das zXU$U!%=ITt1#bg$5OVuESc8TWMM^X!U|TY&_6FM&;L!_JZBr1*G{^l-QnJZ>p+wIV z|HXF&mTlBFP`#Arrn2g9Ev^H?J;=|58o0?%;3q=87u=^gB=1%`c^xwwSLT^!0`}`I z@Dn?aPK1PbY&NvDm^Mu6oL|Cav~yGHQ)Io4l!NHd`{P|3cb7Ri_S2V$Skl`Gohys9 zxH-s_SR(hNDts9o_6`LYQQ81a+Ez2gIUELa>FIsNE>j;Qp}Km?)Gw#d4+h zVDfxo=?Hg6Bb&_r1574i7pu?f=O%!Cb)IbqTJGfC1$JCUse)e15XTvFaG@FLo~bQv zH6J~RUH#n68)4nulCmhmx(r`@5_tm(2vtPxT@0#wp?$GxxzkDExs zTw;DU$6;m+n%D9X`yxye;0>g^3)%%*HjreRY(y~@wHxkX7Rde!Qr9a$V0=qhJmgY9 z{G%!9t0*XDfihtLCcp?}#Yfw*$xp86t;+I$$5H0J-DVXa4*UdaDTe?B<^;3wDl}mQ z)mmKn#Z&j0?O?uM>$7O>DLoahBemP+ky}oei}!{l#F1gh(TcfTgI`_1RC+(+Y-5Ef;>%qJ6d+IU7Ag*Y6M_dJf5{Q=?`@kMUKn8(5i+Q5y z`a!z*))uUO34evzWl9F-7dU&6@N)k}Dircors7Dl%r3N_h+TDLRWMZDa$1WANcd3dNF+l zg$r}l<)J%q#yw)X+vRFhR~$Qf#O!K{h#-$=^A;GY;CNm50T7cKFy+DTGcXCJ)U0_^ z=3ymfUT5NeHvMZhPR>X?o1oaROb%dHJhRR}8v6WiKYVxrt@dtbvx5CbB@-Guc7n*t z^TzwPn&KL>D|r4nt<>$_Rg>4F%y$MeB87z%ZxjwVow*QZHT6Q;_omS ze`#~gA{BuBjm_pmZe(E%Id{p}Tir>brLQ-IvB2ol!`6(&iHZJhaJkfAKKPkbxM)53 zsVryy>rkLxzn;uq{6W_AMyT6ut;INZ5=`c^@bB2$pa{4S)o)p-1hv^bNp(0XN#o(0 zE3;EA(vJ9Ruv*gLVdN5GEBT{x&NX(FKd!bWKbs>DwY2Eo>|=pc7OwJ^>?v2QQBzn4 zE?n&5Kca?`k1)*6Nkz&sw$CsH_+iBJv}$Nh(rLOy?K8>}`5vby*f|R~7E|)rpYYd2 zX$ArE{NirH4ZY=#Ev)+Un(BfF-_@%~ujU*=Uh15q$!5DmLo)e}!U2F2(+I7s?#-jS zFA=f@VJRlG^UNc+I)f+#zFS5h^*JL zsUe*JQAFR=}?OJ6ujgY}4mH=OHHF1?s@ zdNNCKw5WQy?o#&lF-|ldpu$YQ4wD98-QT$nVP4QzEnMTicJqlKr>_=FkZOavP~{T* zgZ7M+YKZupdGl@MRyQ!ncVT+fr{h}#N`8=GSsU+#8~I&Ygz_cv{1uE0Sy@$pdVwZh z8;xB&5@9Ft=P7OG#Snh5g%=yUWqxV57U<3rflFs4%}qr>&L+>&+g)n@)g@ftXQpB*;j4Wo{vLJopPkBhc~FJv^s5K|>NXXqQ@1w( z!&~U)?;e2$#6!>w>jVf@KVb#w(4x&2Vc%CeLpZ@iJddSL5Lc>yU6E03XZpu0ydOj( z6v}7pY$Z3Tbn4g$qxUi;FKf%%0%*- zM&X3-uH44A_ASESHR5jYKa-AccG6Eu_d*Dt88GXN+?enl!k0$?Vd@#0s6IdfH4jcQ z22jpG58?cyLOuLrXXq8b_#3hx#xX_SjN_v{+CyrO)ALC)tEGv~YpR49X+6fwK76Rj z`jGn37Hl5zPPX75zxcw5mZ_EQp7pOcbzME_1DqG%I;dIkc#|-BC{G;pxUwKrkIB?~ zJ7BSmD~OTYd!N@`Z_b4}x)y4>MvFzez&<77rz5qKkADQHhJSljl z>czV5ruW~b_>RyL56ucm_UEaQU-DSLj)&izK(%@^ei{#7%&HQ0#dcy(q8vq&AxP&A zB2=T?SdgfmP?m1L$jB8uv9)L11101bR@b;H5^8AqOVx(Ic1vq_x}Mf#h$g>qew@ju zwRY=zziEce+ROqy~%JzuwUO1h}dg1t7ud8F7d_F48I zp_35`xk522(XVKk3-`^>(1sQL?t+tSv?1fVS@}bxThTV6yE#mn62Bc*0sFRvOaMqj z*bv@Xb0*>QFbF#hh?y7b2&$`_wHUZi=yrDM<-S*Uwmnv%y9 zVOug*gIzH0TIHtdtS>Fx|LYn4N|EviztJRt`nLUbhMfS~uknuC( zJ*s`cLo|C3P1XWElP9hfIuUq*VXsb^reI@2$NC0jMAQ%?wEdJ)AKt?qyer<7Ybx4Q zk_b+o!aQE6F~3oxV_vgnx$d$wpU3QJ&mvvuiv$?p*^{`cRO+}Xfk$rKT2?}D9ugzY zk%iJd0pWyEnW#sPecZ16&|GK;e>zgChxQPb?jp_dp2=4y!4Jf;J>)^lL)Px}dg_Fe z%eWAgc3y0JSikAPBWiyUdhx!^UCL6NBgqa*-#0Z!p*$jC4^4%L59!DpPSH$(gZ@R7 zjp2l3ek8q6cK>nVTjo-&=%aEhtw*KYLy2scx4U(1?|@gMRrix$C{N|4G7I!{b$<`n zZY%rBgQX_ns}SdGkFh?-jXEbj^Rw5Jc7f&Fb2`EYP|LL*oZvMtIVeIIng|+~oS>&t z^_T~9oD3diaOyRDDhf1VITu&a5!OQzx{)fk0Cgu9C7mx4_Y^!&SrjVvXhmzu4+u}Q z@ul93D4gOC4M%42%N?WC?Pd!h&E$!w5T6z9{jQ!8!i{$2I?ErQL4z$_jF1(oO1ngo z;y)c-6U~Kk&H*IqxvA-+ZCs&>;=>dGZxV_#UxxwFLIwc0gcArVJls<--ojAn+XKwEI3}hX+ zKE23LT`=*F@eP{2LcKKYC?(mJsQv_wUWoVeb<5F38GDQ@bVzTv*vas;o}9l$XG{7z z?3DLB;XooqZR|SGh?augwH%1f$%HtRTd)}l12#ydE75>Oo=)z9&hWJj(p<5C~l8JuE?s0!4*h15_>e;E%U{EU%Ca971i)BtH{ggZ6~ zS3SUa6M$Y&{9KSI+FCYvr3^FlBzOxW->Wte^>(LCsjBzX z;=Fr7;+m~awq&kb&FgLWQC&i0YcL|^>Vzfet6yLrmL9gjpOSQ=%g~TRhv)l%Q&PSA zsj#5_o&@fejIO5paMnA1NtCH{x*0j(xUr+_G8OGXc@!Ea$GoEDOy3`!4MDoXF@|UL zq`+q+ThkLX<5WI95PCJJc_8n-iiL?Tr^`_A2~gA z9G$@ikDWu_Tli{k6*}d=#O%6cV|dRky5k1tBLH6v1FK^!MCA&d!h(*d?6AE=6VA<*p;G=(7rzcltt7KOPVJ zQ`ho08*R>10b8^lg2Ne8d$*5DVgqb+xSw<}DKd6HfoKj*QT^4G^P23?Uf9+BJ$c+? zZhU`^e?OWND*@#Ut^tdvZ|?8Dc+iVmvi= zBA;uJtc(OgyeFrWNsg|^7hM(m!3R$+_Nfnh=)#BBigQonT2hOt5j*F@DNS?qr!P}} zZ53mUEBjONhvXsgH|BUlq8|BvFMU#pg%slXVvMPwo_&z3y?eD#GXv@HS96Lapp1n< zKS#OiVTt53r%2A((yKkgMiY}4gcZ$20!F?*JiE*EeCIBVGOkC{ofURpIQ7A*QS2NT z$*#|8pDaDvqdDFIe@&*L*~wWgo6s9PHRlzl=)@B*m9%M#Lu7K6m-MK<9ng6XT3PU6 z$Ds7?NCq<6CYt?|4YBc<+%-1=gbF_<9sqmDq&tSY5+0{D$90yT^Z`F$eEi`fhv*3S z9!+!scG@tc2K(EEI=gKKeE2}153p4`jB)RJf2a|;fbL0j_X6;9=pK#tSr2RT4KLwQ z{p7_F2J2Lx_C7UH<#0-2700js4DvNcgRj4$6?D3g2N)qxRj~QjNZ7fx={VESE!gAA zQja3}haH*%&L_~|Dqs4}Y$vy+K#S*+pfj7Bb>r?Z zYXSvLlw1kmoG8+K{bMjd?b(xXZAC|vHoZ_PyINkv0bQ>_|pIKp#*D>*x0R|Ag1j`d+ zK)ITi$XU?!;((|rv4io!efTMPA+tMA>|28XTT-?=DgK>h@Rz|mvKOB@gZr;o#gN3< z7M+gNT8K9LJTzuBH=ys0pk~bVT9Ybatp;pv@Q$k3;a0V(vGaNPiXhn!KW({iX5^)J z>_}nMZ-;xgdiQOAxZN}HdDPBT&;EY+zd!u;Als(%qczUzVWfsA_w5Uqe=tlB}Ex){B@NiKxA867g>*nKA#Nwwg z)(So&*Xb${*1!?FsWm{-1W7xunE`%z+YF}fkzvLm`iMptLdotfAzxI6r!?`ssL92{ zV_{BtIQZ@O>tY2-B*w)j!&$9*qc8Tk!8A2%cv9>oq}$fBs8O2r7)|o{w}TX*(bSWa zf%kYl0PLSu8Ci$LRBhN83!H~Dc8RA(YkpqPO#GK)xO$XHNaHtwDLyjdDvEZ)?S+Kp z@hJ#Ct;>el-wGs8lLj!^oTV2O!MjieXRm;1k|m?8L`VEBVMlM4u4iP!wYm#Wv&R%h4qL|_+ zYay2yRCWV$C*?|t`cZPxv}*J^+Y$NgPpyiJYIR6W!!vziTHFOha{5B@<#Z1I@M$W2 zzGg9%^h}1p65v^t^a9J`uu9%9AtqHDnwpVH)U_-;3DCPIaJva&1JHI$>7v7ypFkWXkb+eo0K`7u!ANdw#*J_HZ4x0 zHixo&DAM`OGU7iJ?ctkDLJ>&0=IV?J75uT4P~;wZj9)L_9Qsxvt&LOYB4(xJzyPMU z1R^4PwJCJRHCUIVTzu=otjdie!v)X{pXDG)jRw$pgAC6p!5W-a?OUq>dNVA~1}XPy znkW{31Fwruw1kf%vYaDUGn38J@?^Gk_gfZ%HP8xnnU?gHa$L%^g!*Lj`aYn02Kx1| zNYU&LEtUmx4?}u_hjE0_ktq^!)qu1_4gy|#QQ=QGhT0!Q3QxyGL~gYpDu*v_PS#xp zDbbqQ#Q;LB#peZwGdWGXO0K8Dj!oa+ueqoO7h10VE@MKu?t*YaFZZV-x%gN<4)Ohj z7T3X-|5Ly*U6qmYO3XE~B~$sR7z+ZbkJ598LHsh`7*np5kX{f85CIY`@TpP z@i#^LLn~W5HxmB%#P6J?z^vj(8iu6j|X56#rzY1j`hw?%h*7zZ^e1nTLhD8XS40t| z71TDj?ye{0TxT|42}dNHv>BAB=jugtK?xNZ@vn$3<7?;yhq$uX>}WP zYV$ACM!jRwtS3_>Q==L=1~LN&v0GdUtG-BI#wM`}jL@fd!$Mg@{t6BMpKkuR3h+Hi zwJ`=TmCFAr*dlr}eK(s`ynu&jX9nbdUB7`R%lh~+M+HzlO_7_2!4<-*RHG6`oeTFW znTBV^%RF+tMB0+0d~`}KN4*)kGFd#<>r}1V5RZYgKItKTLlTm(N{rvY=m!XE>lIcs zv{+1v0W}yz{hz7~sTAc&Z7?tm(Z%PkkgOu?bZ20NBus(Wl@5Z zEU=D;4u%%Hvus`pqLeEX29GL1*SD)$S?(PcsFU>tAPhti5d@kc+3y$?UICqwcl7Ia zQh@b!Q{fATP?NK=xj+!Nw}fYm0Re6Ko{b%nW)HTedB`=j!4GO$kqW_74M?JHNs`}= zTFaCwSy7E3xw%h5Eaw~Dm{0?I48}^Dmgl@}M!8lP1T6(ZN^otBG@619u&ToTp-6$# zQl?Yj4Wj@yv>0T5fg@AAPe;B$NL>@N4Maj3h<{VtET#pqsm00!cz`IrICp zq2<2{OBh82vg-pFB48F)d zko_EQdhVFT7O!Fuk_nlLSvhMcCT^zScmP3+qo^xjARj{Xvc44V1blF-Dn38ptSYm}NpsF{QkHAE}xiItf?OPJ2VaPhVIrRJbo z7s@Lb%STP~m#GfmEZ%eMJXpMmqFqxh9`*}pM$&`X%ip-pjrvq-miDL8E%ES`e@Rpz zG|>7qEnG=+=VcMs^I((I^%~InL1MT?5K;68o513gG98uE^yh#Cy_jNw;K4~*i!gjs z-Kea&n@BcPX&2fQ!2ZjCV>Tc2fk#Nq#T8m5Gg-|-?a@HBwT4+Hd&}agQ?36wNzWxv zlw5!(#zUrpm3*%C`80#B`W#(4=OLtfyryt|phzu>;MA`%pcq-R2Sp2cp*OxY@6sBN z=v%-cGF72hu2W=*Aw^w{{iEi4YELPrvUs_O;`tFrS;T3L^BUa_Iv+?)no-g0$4P|d zg#_9BXIdW)-YbF5_z;CRMG9`4dzJX`&{#2&tw32a>hUR=tg&jP*5naOq)b~tuacXK z|G!Wjl&WvXh&ZaJ3aJRBWUQD5eo1O7>*C2PK9mr6%4;j|53C0DO)l6L^L{-(3Z%{b z#3ZzducNq!iLLl14tBc$#|>{akgm+C7jDQz6wVu1{3V+75)&M!d7T?CW5_L$Z~Ikp z!u(0WPlht7o-M^-q*V7D|Yz@A( z6vWROWZErYjnH>`k+`p3q_*wj+ZJi@6J?y||5O@GDbt3L(HNn@Gu?&qoI})-M5c|3 zB(Bpnpr}V;inCzjmxU$MwPRpHEfiL!-8-Me z+?%Op& z&3?BekF?mB<^my?-OAGm!&znm6oyG9*ksWJQK|@qHdn+m{tHt3CIzz1weKaY5BaE` z@Q~#*l7mB%Q7$?e{#zV6r3c1rX#B){vwe1jVgecMaezf)!$Q#J3mW7@67FqJe- zb8FEhiV9KI1>rzL-{m`WNq~NW3^puL77}@QAxPb@B3QixD|DTjkzb8V5mR6?Z7gKu z29nOMiUVn}dS<;WL<>w00wp7oRx=?c>=%lXY)B@hxi)LXFv}imJ+yfFw7SClgEk3j zne=_@t@*i1>!3_@5|b(|i-RQintp&TwxG#snf6pX+6mdHV7J;Z%WP{|!4LrvBCloH zXrFo#*$U}qin4PVGt^((B()*}bhc?T!;sx~2W$gYHv$**0OFhpKN>7?6 zaBBg5V+=3kRvM~FjJDRW#A-G~+nf&)y7 z6-m}SDidl;hV)@_AFYX3N(p|&QQ3W!V?RrTL} zCJgvl3#sr+`nl+vwv&r9u3P$fRrym(>X1xKIz?#^5hDB5m9dx z$o3%w7AfG%m3Z9|9#AU53$HSN4uvJ(HKe3h>mE8`*zjF%NuHLIK}l^m;rfrDq?EOSl$iFU)+AgDWjLlgGARvje$C^{+gzDt%LBOu zZy8`Qq?P^t|7I|LC_XtGPwuKCab*{@qz17brnI0VuA1$NGlC{8_N(v^Fu0cGH)4T7 zmd4}1p$biIOt(}ZArb1UWEpXancEuR43%U26UtMr#1qWV7nb<_)1#E1lReh61OSW? zK&2-_r&@(H!TWbug&^+DRN3%UF*3&ml*B0OYUso?8d5x}WtA=p-MV0QFmsql=;865 z0$V}+VID>a;@a=3)_KKa5d41tB2y%ByTdY1x3smk{#Yf}XqNC{GzAzau$0@iqa{nX z@y%S`WLL|8eG!O*Z!Ja!N^Wq_O=mLC)fO zSp5=0RQK}Lmb$W(W^ZZA4%DZ9giLvZ>J(aNG2W_*U5_{R1k#hixNHOISe0}hq`qPK zvY!NF3B-u*Wr}^u3sg-pi__w4s8$xW7UP4tu01Jm@J^Ys5u_Y*nN~kCZ`9&4XHzyZ zK1+(Of>i)>3is zKP}@aU&STRatXxHI`ekRT;Pt2c&t$&=&qmQ8*Xy|#wcZFD7k~}8SzR+AI%Drk?cHP z2)r;f4*F+N*nVXSTe&ibi&UWD;?$aKpS(V2VK(GI+Ut;)r z3A$2)69z2EBn47caS~latmcRZFYB4{R1W4KQSY8YBf&qYh#OnMX&^E2geIkaK^!Az zr&Zw7X9wgJXOXUMt>lN64F8nVl4c1f)iaKA!_`@R%zP>pIip^9!@)P$>6_N!S^}72 zoYQ9swD@#P*c@Kezf%NXseQ`X9Ss0|;qaf60Lz51EPoL$V|~!KI?J@YD(RSBY*J?) z5cvDNIxGVUjRo+3_N2$;Zw%nle&e72Rq&x&<07m0(d#gmVB2MCAkKXwPNVME8vf4M0M>I>|0@40 ziLn9nOI{U;boGP2$O)9kBdwF+C_k-{wVK^RYh1QBOIh&EFkJnH_}27DA_mp!c^R;U z@z3ywpI&6WxA}6tRL$LW`V09w4X>+Cz$C$W`7;1zJ1_kE1!sa+V~44#>ffcIE%n9f zWVhQ=hny1gcITG2<)zhO|JxVq4bUa4Q9`M)c?BatA;glWn#qskMU-w zUJXs_0bgW&TuivhK(4kElanvEzD7PBTOre=tn5BHhoQ(MSyQHi2WsN}Gux#PoifD9 z|Ei*>t^W`Nesgzjq5II=TJLJWMx=Agw)5gmRJI06)6kCc`@eVJ)vVRM47C0s)Vc^U zq#yRbY7Ar&|D75d;RI1sk%fR*pG)^qDqY1{Z(3(dy5$j#(|Yrn%LG#G1~E-yC2nXe zV9S87a<`nKi_}^lG_ef&Mql4rZDEwo58joZD4FLhQIWWPLBsIO=ftIu=i6Qb2>7Bae$izY*Lo3X5#bLpIpgnvDCPnKLR*IS?dC#~5mMI0Xj!o>iPj z@*q$3u(w?YSKiVb8fbM+fLz!xMY55plcmZvhPVS295j)Ajp({BNUV3?ym0HIs+#?I zlqBp@HnJs3YqLmG)M;DS6K?I0DINqnYstkm)M@D&$x#C($&S7IUROYM)sDd0q{2zs zz~lzg;qk@GkxwT#C^bi3!QfM7=UVtDM;_lLL+?J;(zZsBZHm-5RGO-=_p7wmI;+k#XWi9dKoRZ1 zfQv}QK1?yst_&t2W^w%z-|z6dnp}+^G4yh1I)8f(U4611a+nD6+x>?juBzt&`8cx7 z%JgVR86HqD)~wNZFDO2${_`E`3<;(oLm#FBmjDBbj^u3G-o$D(j|f7UI;(}`!{0_f znpU~LG<3Kzf%9zFS|TV0L^(rj*-{xNsoF28Og06&I!uX&p9yHNu=j9>V${4jj$M3G zNG=2Frkv_WIrLF6eN;!8r7R*C0mr=tFju#oxfxl|CJW__55DT`h#)_*FdiBNc^`j+S zDdviWraoQTN8Fv!_}iFi+;6OZY#k{7kv;bkn=88h5L}wBWEQy>Dj_s!tR@m{mg^#> zRZZj_2`xR=PbUw(=1|ATBjczuEv(aYGcH41!tq48UVMrZs+nPp3ae`MQx~TqB7nge ztCd#ivD`R)foAF4!&G6jIGh)m2@_8^c~^0##gH1$SUFUr2i5kJ(YC*JHfye8>#C*y zdGv9~WZs$)`RlgtIMSnd-OtsAci6iE>lB9!o4YO#ubMU!$={S`HgW&gK?d-F1Nl+K zPA9l#EmO(%Bj1~r)m|fw>ss(xjMkN+nr1}8H9oINHTrS>M-7@5+X`><_(SX91-GfH z$af|m4))JxH^PLYBOypBDn80&IYEMMvpu3Qxv3Gq{5XG%hW1H^>FaNxYZ%fWQ{r)y8LC0_f)O4_x* zq=OmW8DlF<*YEo%X;F)=2kEzB@?&Jc-Wa0`>23c-+eLaKttPG_Dkkgij_TTOWB@q2 znpXWQpWhwc=x%1_uP_a2t~At4Lf#5aUNyPMCxR@pLafH>+S0%aE8~B0Z8*Ti>> zG0%qk5t|Z3L(%95-8C`gF{lbHx5(L?nsTXzU2_W;9sg_n*!8$Hc4O=C+sFHU=JO74 zR~TY~^MAEA6v+6zf6MHzzKyAEj~Ay#{u5jibY_8Io_}#~yrQn}!_E29-KEU@V59fm z?ig8cdDq$3rP(+S-k~s;?zv+bRXe*QL-D~ED{8A@dp=dF_@^}VDp)h?U@Sco}0%P!y}G*@AizU?Ijo!;)ca%`=_k? zpYrMFT1{`;Gc;<8s^Q;~10#QIsP&d=Y`ZU<5C1tR+1EejWz}!zi@q}|)?|XA;+jfp z{!{3UgN?85hQbDi^cS0Y<7Q`rZA)#Q9_E<_m(Zp2Utq~0N6JorE*brD>jH0myqZ?C z`Q1j>sfO;dyPaYB7z;5XVgXhzZ@*eW?U_c3u5G%}esvh1pFR9ZYPj!yWN!WO$A_827J5|Lo@d-7szY?EJR}5f?-Lu;_ z`i6w}PwrbDz>jYzY`;#d>@AyM+*p4=gbL4mx-;+8_%K4i1Vq`8NOYzO@CD zi!{`?hH?5qWC`L}2>`H*r~xex2<`9d+QGMH+NUNG`bee?%0&Oc*~Rwlx0Bk*_9*nl z{z$LVs*5p%z#49yyH!1dcOapzCaWJ0O^+W`s=7m)oyg0q7I=VFTIs?`6Jc0A27_=E1Sdqj7Tk2MavLX)>E)bIZ9+pj)2w{3xa z!ST!z()#y-*rB;S)JsoF|J5J43F@Bo&r0aMJmDLea*Z(&{h({x*66tMYE(=Cg4p=D zfj76lT}Qjyx;d{kM5W31N$oUHoO5hi`jb@q%5(gre&>RMio*z(?`+g2&KhlUf9~@7 z)24Ja%GzRNrxD=_#^ZUId;eeKsrrhB7qOG$4dZK$4m9QZO(7Gmer;q)#^swOp*}_C z&TUbH|9@MlU)Z@BW>M|Z(!=vzKC zOp|PxvCde3m-~KyzP~^6XqdTN*E!GgJkN8^%j;Ft)AU(7Yh}G-nyPyfUW9JCr}xfn zmrX8fv?Z38EVFX=b8rvt4LL ztmFjQm{lN)_xr;rOfr$o9&}T8+;vJ5>z+K3B|c9+8-jhB;;?hiPu)M%F^-(XcUWvJ z#D=K-sd1q;)M_gw3tYA++uyj5oTTMQV1MB^*p?8fe`CPs`~42=bW(>)DD?)6C$)qr zxbD~y^dgFjl^)rJ8BBv~*tQj2{g9>6G+-h3hC5BO8efYEelk*J7Ozzq!`U?|y z1abVRU06`1cbR9*Dw(X`!FL)LqF%m}q)^lqrl+G9h;8I)dN^CQf_oj86g!6Qq|pqo z1A9DlRzLmv{IVUo8MlrZXzTcvM(uQHe}8ihOFmXUqrainz3RgopY#p^RZqxYc=ENc z0r(tEe#lZsFSWIe>9*G|BsUF}SchB%)HoQU;riWm=lOA*-t4C_-38$O4%i0i`pn|D z!M2XqR*yax^{pYbfX}8sEWEV4`-Qt>{?-0rLe$qb4Ud)UavO^E@X7qU4JZQPYn$k4 zGVC+AC=@spV0JSE`h9N16&RN-<nrgjb8CO3m|NB{+NuoF-z9!~dn)paS1-_rjC30h)dAxuXkRS+f zY?BJ{==B~%8{g$sKU!cuvH!h&Y=atgg!Fo*99IqgmG|00)86`p{JD;`+Nv-)F#Aa= zTDq4u#DXIXD{Q`ikATSODJp(F9v zmCo4vtmjl{3Y(PJ(ygW85rw6TjrYEn`V`F^^k#gKbm&lfx4m>S)U4&{PpVdG;y;Dd z!5dP1D?cSBT*GePPL@YkKgae+D@i=DUedd}RR6j@$Gq$B7|pbbSA^s^W(2pwq1*A! zO~*!j6Gb%9H=CC9>poHcD|NDX@65%vB#&GC;|+8d#i z5XY2c5A2pobxugrv;+8d36@9GaEc3m#C;nU)|{r$MHo~A0mWs`Yd?$&zR^{St9 z{J3kE6fn-Ga4fD9nqqP5Wmu$f@SexKdfUIdPxU^o>ul@iw_b-bRLy?4tp?L6XU-IfDby&YX1AT<$)Y7fx1dhVxf zHSHy?u1-m$$;w-qnN`)kTD`L3>N>jRU=21>VzYFeI2bCJ1}}QYVVEkEBBJIu`==>H zyXfT?-T-;KFIA3g<0A$; zLVgG}<$w#m{&RW6as=({Dlz4Y!?n8k@70<7%HJt}Xrdj=SA$Y9XTHwAj?zqXYr7fE zN0l64CiZ>{T3>AM0E_#w+5^O&V|OTiwuE}K)(a zcYeeMj3*s8v`kS@T6*8^Z$lk^?}3tZssfKDv%G_@B)GRdA5ivpHrc2h9r1mdzTnld z+$KKE5JOn|n*NLB+l{xjex^)FobPw+SOkxiwzjdVF7@*MK1)?^8UrA@R$3EqcES}U zl=k*H)Epu!%N?J|^4pkf{9oXCwoT_n4Ct}N_1FaJ>$uKhwk%55Qan)R1(+JD_(l=I zy}&!=4Q#V0Bn#l7<4nquZEV13k{(Tujm+I6ebF~-@#H?Rr1pX3z0b2upeej=z-K{l?z>pEL2q(=r>f1D+l4?W)(Z_90w?l{&F;LQcK> ztR78n5M1mT)T6Zi2$aB@e`0L7l_cKETU#jQY}^L6+Xtot>q(0B7e*q2G5>u|W#4Gx zWM|^f+h*wJ(|0}ppOX`5)W@AYML%}^Hh=!}Iw(8YtHTE_OIuc0n~Wc@{eRoUuk~N5 z>*&~z&x(;RTqd^VZCo3E=-KI&n#=9=S?Blk+TRS%*6?K`754i7iB%|?K%41>y9KuY zo5@O6lu^yiY9B`;cTG<#*vWlr%<|cZ7)-O8L==5Zqz;Vfo~z3W3O>%&YnDZ}ux|>J zI3luCrMue>JFb;v5U%e1ETC?=s_OVJZ18YnV8Qzs3|w<2%{U}uHrbt+7VIbwVOi^~V=<_RWa3lYmENtQWzLVbGjFuYYL|CE2J zv`J%^T=hY3P`QMd_f50y?rYNvt$|xT_#AX)`t~J@XGg7m? zdC8_BUTVBxn<|&~@ceAydkzddICU^&tIk$4+f#oqK~+YsK(|hRo@eQNW zvQ;%~q2GpmMNxiWH{z)Fnyi<5b4Mtf)dClfpPPhb-TU;N)D3g@YP9P^{r*Sn;Wjp6 zB?K?xx$`+fz`RUtvz2?e=10lWoA!aW9l=P3Cy^Y>%0LxQ*}#f4i6$zWE9??93BxpD z2X=));ZTEYcd084gQ?w*$=1!d;<=VVP!TWO~ z0ryMSR{dCsTOMs=q=eX2+r$?gwZwtkolJqL`m!0uHpb5?s3=Gx!Gt@Y!Y;;pP>bF} z6LAx+ruTDAnvZPVA=2c}75V;XJX%o{0(0#2(@DZcv~TKUoAfDV2ZtoXjYS?Bzx+c) zd#$$Az_EVQD?=T@@)JIf3a=wNx*D1i3*Ki52#hF8$p%cAXg>?QS*!l8cH`o`!ok6R zG|vZW`{sEqF$QlG6&*LZ|8&*y5A|b?u$DU3@6^)J8cGPJMyp};f`S2g77doQ9Z#NQ zu!y>$9N`_|Gu5^hsK-6)b2ajo3%Xy-rC|YHH%t{oG9AsHRAe+$lFoRn@wQW+l-a zCYzGis=D%F>5L$&KW68O&`u4)C^;jpV>iS9p{!G#n*r@ z9#E&cyyaum{NNeCU!Nv>7~qQnLt?{1k9WfY$JJy$g`JS`6Rzpz0ylN#Tl@6m3q_*$ zY!^7&y7Y^|bOCqG8S2_@^Y07au5C>x_XstP?;!O|{>c`5cmuOoh3<@fv)DmqH8c&) zlTrH;#zfX`*>8Y4)+9JTzgQHXzCi!E{8pN^T$(39Htb63&sy(x(+&ot{i530=#%!u zW|FnZh~ee^Z`4@YG(K>|G13>9o$A#&AF`Ps2}yZY+@qB`o+TtQQhnXE-831J0=CBQ zv>k$$31bDuO&3G&`?_fg+%XHcjmLo!u|oCJL6*hr4H&{_n^hh&Dny^?_7Lk>2fp#nr9GfI7P`TPu@y zjYo4ltfmQLaUKmn|LI>ed4PH9ldu%@`tQ}C*PkARDCN?AE}k(F)hd7VENIl8CJ4mk zHQIZlJ6Vr*#)jX=-0)Km40aeiko0EPLjbxj1{Men-Zd{i&4#D!Z&jvRO~Yg9A~{{L zzjFWemodYv0~dGJ(`)}V1@D-sC#!uq;Z1L>e9^a_-xoeoHG5(Ownq2;a6g!;nUs*- zv@ny&1()*ZP&M)xrM(AdJYTnS?FcyI@`d-*2T)#tSq-3?FgIE50^@}tME8Ha2(}Th zy?t_xQ1$IiJYeAdK5hux05>+}?^@572i2&Y+5fru!`^~;<5~Dj z+s`$DB1@yN`q=riG4WqV{*IPPA*()f+t>B`9~Ju-a@Pj)65s4-+}NJmH_#WFVa~cA zb}P+i^w$3@7MHp1XS3y)S^Rb1p+AAc95fnz&KVOQ>^pE^-CZEB@JEx!{{iq5m+>IN zc{=EeWd52~39xvT5iDbU_Zz^p2)yIw$E3uJnkEEB{-2YA5-X4bg@-KuivomqMBnPXviJX@vdFIVMm<(z=llwIBNj3@y^879qfJPx5H_( z;uY^!z0Dm??47G~A2Ze~-BK&^DJ_&~ zDm=>O@BDLWkI59!o(A_tLro|(mNW)>)V2g}IT2UZyD>A1Nw@3{6 z23@+_rQaJwi)M=d3O?4^r4y80OPDR(uT=oIeHqgK0H43CLIDqE*q=i@+{)C~_)^jE zvHK-oW#@L*pi)ynPLGTekrF#*jW#{&3(XjuR*9Y;NihC9`5~bHkt*}XVfpJabNRX2 zHX~I?+O`|%9arwnj?9p}w++?Rjc<(-dPL5ySQR`&s$W^!xY*iI{XWY4(QL`CKiq%O zXf4z=Ai-$Oe>X!FWrVn48scl~V6>vOH@9BdRF1T<6FpZ~?%kcSIlTF+GV$R#xiF(| zlcN)24==3us!y)}^35o@-B749ar=038Z_&!1;6|=E`(*7EV%oRm9Y2Qz`q5kj+eWp zqT5t*RloemIxu)6jnMKzCE2M(xR0^t z1Upa5@8V4$qaAF7|-J8IH*tV8hC$uaF2FJgQ6>kuEB$vGMU<$bltEOYxE=^}+@o*zwsR@)fD+97-WM#1fnBHNBf zs5xb3XmTVUX{PTlV&y_mfh?W0R(uda6!xFOLB}rz(n&RsDwiz2QZK{2Vy)?Xc`x6 z=d9HML2a;i{DqL$6UR`l58M)_!=3+=Xe<8_>vR2HG*yh!MAh0|D@eoseZq3C$tDclcfhw@$!WTLQea3hTPcO(I%svhl_!gi<9 zPaG5(K1U}xn+hYgPtTFSMz?_--Sv+W>5z`+C^SZSGzR+T5(k5{ly`Ld7_FUnbID1r!~QE`*HI>buYR|-z_mzgKVe%{&D5<^iPii7SR zXrs$sYRJXVIS^u(+b|Ss5I5sqPel}n5RVo}Q{dBd6T#sb zGZeXU_q5_8E=5hdmojf(Fh&(XXFNdKlv;o8L$lKe2C(2Y~V>de>YOgeibXfuyEK)hu z3`9|Zizx8<;wOlvq0AxlHykj1K)xlNR6qtVnZg-6BKQ_mE*pk23An!awxYt+PUQ)J zfI)Jx0Fe$&S+yY2T>;x+kBWbC&c24Uv*&4ng!v0?At#;b?=oZ_NTM$~s%#}fbDofx zSjo|NsKn(T7z)v9R1%G`74Hy5Z0l+RzNjg)4`YzV`YHG|5h9GmFk_y2KEG~{Ss0aR z|KK9EJ@8#jY9Q*KpvcBuudnJud=%2uN5EVdcvHfc?{)N;g&!5Zc7z))zGE|uTkK)QvWWseWXnVD<4Pe3zpNS3# zUoMiUNDUpJysPon+XrL!>`Q&Yn@OJ#w6S+H3Y;bpo_}=g=4l zQgJDh{(~OYCqz`-xVtWn7~d8H-}Sr{ypO4qNOnt}f%W|bIMJ9tE33F(7SAp_Z5oHj z)7q|NqKuVtzVNiNAxxb}xDMiHrDlj)(+zb7>8*<<@~_@qW$Fp!;jl!YFJ^X0-XJdr z;Z$Rxw@><)_DnM~vCbPE9a7xPZ?O39Mm{C5?J-FGz`(De;k7<)Az?vR>OQf;-S?h_|iH$ zDbAD!K@>Vdsi)+BuC0iw$U92HNr|aiIKo#&w$FFALEOxM<1QC4A2QhiLlb@4Z+(q| z?y|Jazd8}U204mKwJ{W$%RVulXy0hf$uE>$W5c(s!7@s>G4|AsZ$fCMhad^UVJ0;Z z)^+Q{34bas#`G`(3jw@<*L+xdq8UXfCluQi(f=0&2k~u)B)LWw< zav|cMV(tloOqYhu@naz)m+m4h9I3eXeRn~66C`om`|9)lA#Nnkn1nOQl_1iWq%)S3 zFM71y`kDlF$_;tW7oP_}sP34Y+w4r&_}Kv&vAkh%kVs#9Us%dcto-c;I96-L&1sV} zYtKJX9L?kh!m#%hct;=shS;WCB_2g%etrD;{%nqSn ze%A*GJ`EHq^WB@GQZ!K!3L;g?#-p$|2JRw^z;0!f08ywoZYvXh^5EAj#Q#ixE^;3cEpKCWyzdr(jUDo7+?!rdn zpqmnBkD!@cew+xNS6yd+9;(m*iJfa_HH=8-0SjpTDKfV>ix$3OTcx12HWM#}v6lo< zUw)-x>NNfC>NzxX74hxQO?*qF(kRF=YJ#62llqca`iS{gM-wBJoG{+j(_yVjr)-!P z=AL7xGC~MIL!SbBUwLZHCuvo^}K}XJD`1a-1PyNm`IpG)(FXC<9b=HPMqJ)tC{o}?P)Sg9B(L2s zv_Whk_t+V2yReA?dk4J;SwHX%#k2teX2zId4j;?5tv^42M+A< zMM)bBDcKbiNlZuJgfcym0%W9QazauwD$j;k={9%a!vVzhRB%zrO;Eg@E-V2wsy}?; zcnbveWRo6xCxM+#nr(D_00j51n4%Jp?OT!OjaX@0JQBENI;&FPOGBnt&w^{|ORwBL z>d*RdXZnyyl`XN7AMk-(9~!HIWfO0PB;hrUj!%FhEc43{TRao-KJ=rt9Pnm{Z`{RH3`G_|Q#tL1`4J4|0Z_cE`45Se;vO9Vq$Y$C zxiHn(-1${@6vR4CT^~cqEFhdER(h$ANpFa_UjkM0F~Md?#TB4+-%3X%H9J4c%8W`Y zd*%LI;?E^O$85&|_~KthRw)pxp8H(Qp|cC#nN`N9$+jC%6iYurJhfh|$3jCtKFAo2 zf^NFG0;yKihbGc*`SIiV)J}g?gZ30VjGwf@oYx?doGZmx3{tQe5P$r@-l!}7z&@-K zqg;)m5{<)UEAlUss`(YR)kdE}8*9RML7{nB9Mv_7`V^clD3iA@xnzLM_6yW` zUdAtx{&l@mMQX=Du#`y22)z|L=^@~v1sxsi;hdnA3)GCeOntsJ z-CD19IKh_a#XHvqas=Fo1#$#(KSv0onE@A~pvLtnbtK69K8o`uPblNIGRz*5VN^@6 zcR2`3v|GS_k9$av7&A_Mm}rQYKS&ArZ!r|-8Z##%U63FO>NB7?+Q&rV=p^XUtBJ;G zWehfIvkjuzf0;-Z1$uD&gwjgv)zSK{cen0%tNC9&0gx4*)Epn|atPoJ6c6ZVAVw|o z!FD)Le1h10>p@a+xmzwPc55QzPe94ty^%hfPsbOBdr{WK3BE+SB*+ot+wf^RX}+<8 z0Ys0k=QM8eN(^2vhaL!$b=mke5jx3pDGw-6UzpP*gMohaW=BUtvBXTZQoO2*STR#N)NRT9)O-HQ@#ck?!pewLuO9KLsX z%<+emI^tyD#wBK(a7efpP-`(DOmvz2TAL$-@iQ+-c|{k??KVWp4Bj&&nYI`B5b~@e z{^3w$*gv5$&|NmbjC+wmj5)p0#W<%X{@c007XkZ+cL2WF-R~Sl{-(<=2gaVy133l) z1S)fsyx*~y*vt2r!ojY9T0*M-5tbhr1IjkYo=)}@?oB^G`dhp{oz!)-({xc8vu<4$ z33?2m-gEUF1nM+@QgwyV>T@QHDiq4+A(cQsnv%O;0AxSU1$~EJQ1mJCIS%!)PeA~q z-BDN31+nEicz)*xGULwo^3d3;emVr@ z7gaRoTn2F0D=e0?r<-zd8fV$tZ3dG890?P%I-`?d+#si(`x{&a@mPaqfR|A3_z9#ZO6aCWv z{8%%@ zqPs$m;x79cB8P{R4aSmdtR3QvjopodhH{F3+OmghL_vG*q~_kr@15c>DFXQGc*PAs z@qolZNpKNB*V1`5+0l3C$2%WG(d#PJAeiIOEs&+lBF=-+_Uj`elXOzBDKDA{sCmDb z%J2py-|@M2Aap?kjO-#6DjZrpEVl7iB^OBXpeYvvZA^@&lRo+{Y^ft7QCHs6LAy`^ z%@pixh1gwb!`SZtjz@osP^I9Yxeu{3CtL%P1rYK&d>|A=r9okT2-K%AU0tSd*Mkci zdKj4#VA%_uF3TcXv+kS1=sWStbdpq$y$Aw(P=yjh*;6$$Celm!L%0z{*xI!dFMSmj zB@o*xU?UQj0Dk>Nx2k)b>GzXCEmJ+{L??Zp@!qDBn%NUiqiYZQQ*g&!M3ILBP6l?A z!6ZIBt2;H$_eL#aM~~@CctO`;eq3>#VV)$~ZG~c1&kfGB*7r$p#Vpl7Ryv4hOGDp# zD92gR*C^VE4gXkPr>Oh3u1{W91uLM*S7^9_N>4*$7DlBi}kT{Cs|61y%27YkSSEc3?G|J}cLKp|$e2Xpl7> zy|_i;sQBM|;zs#e^Wb&66oo|xub!`US#X$>;Tl{)^dAyYT zzXkFYr2btX^o4?y`v@>iaYJ3YmgjIFspA7IN^0%57Nud-fU;`sms4rGWy~b(pWWI& zyLGK5W2Zm>>HX$Al$}BxyMgB$nJgS^HXtm;C|9SuZdV3n{u!ZfjrnOt8B9JbCuh4OF06v-#Y>5tPJMce&q>9wA7?~bB(jBMGN z8N8N!H*5Ijd`OuefHZbR@tCkuA3D&v7f+jpSf>dfV<(a|Vmgqo=Q+wluGXCW_cV)= zww7kgNf{ItJ-YbeAv$DIDajV;zMa^^vCGojB+_lm`y1UhImNciKiX2pmuA-wAig61 z!n1PHdrxWw70vE=EgIYQ(q}aNkzRikviWQ(06g`#beJVEYr7$7z@73ufii{_?!kSiKjnB*nj2`Mf1rrks3W}tS9-jh5MDz~lj zd?RkXrR&G9hDdrqanc2jsb!eY+eAK+T0annFJb9pvN*R7o{s}uo5cT&pqZA7G4|{E zh0sv_tpf}CrESiYcHjYKu83`yrn|-{v01fw9n6oU?>P(5g{^n#`pk&+m?_sJ@Ygk` zdOd2ZFE58CSDI}7peJ{HEI(z$^JqJH9z~=Jfz0zqF9kzU#j7 zK{@akScBdj1@D_JL!omG$&E#zm~0yc%ur@Y!vYG7Ye4NW`3h(qL(m(>%ppWFFC!z{ zJ}2>!s-!;Vw8n&{hxxduWLxKF}eWgJ3I_%L3ao)=aYUP+p zap6OMivxApRzKkPb0=Dywe`mI(`Pn$CZfT##!l-j7(4nhKTevSBUT;*wSa9^JQVrl zGT2LQNU{i+!PsK#4}mK2p^hfwDCjXnLY+`X=?v0+(4$bzJ&Khg3OQC+DPTDrDO;2Z zQ`J!Z#;4nuHR~S8ezlI*JBUTf>ju7E-Uvxl2i2!R4rLsa9#b0&X+Qbwn0D(B6wf?w zUn-sSVz)UEg0P8rM2%F8Sihb_|K>c4VjjS*s*jqyA*Nkz;PufuqfO*>tY-1_1m{qn zLd(J8oC>Vdv`-wAR)pyu*z;m!GRVj?4Og?NE1nRA_-S&orGDyIy_oQXCPISh)tUsL9JehxP`(&0%Rxaq^VxXgESk2VE z9_@^%)|GxCtlGBBsI2R~KYRVWj@DkoD9{#$A#r)nQP>@R{|L*ypLMHtL$R-8$o-iZ z3UBiFKgvv={R;10g*TCYkXdtdUAzMAybyNi+6l}&c;YYiaO3j14&F%?Y#9@$8m;!E z?yT6Zgh!e`<+SHu02ml>tJp5KI~%2!OJr!+E~a=GWtQjkzAR@4N0}cidUN!PZ@b^x z_pVu4s@5Dwb^dpzG4nHc1)bz`Zg8%X737;~2&gMfUZsEAFtYS#9vFY3;b>bc0J0bA ziZz2IvxF}Pm1%z8Ln8eO0Sd#h8QiespzG9%iht_3C+$`jMAO2zNIkP!QpWIigW&@e zJ7~d+{ucJr?|3tWFYo5HLnuc0?3_FpC%i9w!%p-Pp94}ZUjoZhj(U2YstHCZe4rl< z%HEm%sgtJ*XGLO8Ir1qGtcX)zDazlXoIpB%WrJ12a?>al>wf-cWs|*_6MRONpgSnP z$w^!KCqTXMO;~Q_YrM9t(cW*r4<)*dr!&hXK$CZ;lI5@f*&m4|LfcJYq5S1q(VHEX zt-V_%VOWrpx+1 z?B}k5QPYI~sQm*ubn!BuxhCT-J(OUw9P^zmrbH5}vY-Q0!QcJ%vc5nPt>(23xnucL z1!0B1Vq+>$=XK%DZyH4&ur{2FaiE{h0cZog6Dd-93_*kfy+}i4<*Hr_`o_!`DHVl9 zY=vs+dbIM9!g9edN(l5^B-USu$VNkvtKWG1!F)Gz2(D0z!=uY;NC0}_O9*F758+s-a&Dl*^x$Dzg6tYQ=X~k3w zg{vvoJ@aB>B{yvf=Vp2UjF&;%g_^V9S8|n(hvp=zQgQQr!$v-dh4M}K+-lF~E5CTw ztO=lvQShHWmZ$4M_LFVbgPlj0a7Ed?t3pah@kub+9=fa32B3W=`c0!`P< ziI=%xAns-gD$S?sHqw)OJ*EM>nIX*vlrNq=rl94yu-9d(i=kj&D=drHJa(e2*i)^O zMPLz=*%>9vAiNl^>2vZ}9)*|BN=}^7wuuGW(oWA7LphY5{y-GXlm-L3UG~KmK9bx- zX309}Nr!+DcjaP8In`)8yk<@nQU2hE`1wg+UZ^Td*s^KzB=n ztW}mD3TpmmbzRPMWHK&^#HVVCO8cT|l|J`35a>D4*BPX<#U~Kh56^;HA<8}b$lmYj zZ}U8zUZJFS6ST1^?z&(Ev;yj7=8Di9n11ti*MVjqOq!$Oa{2=UIsfn^5 zUKau}3&puQfTx2Hj(`F|`w4Ux49`2J$l?TtZN;qW@G1&!NiPPBJlwl(rCTz2s!xKM zgADgnJw*m;8pFii@so6HXgpm=7_(d56z=ff|9xI$2fO{->07;vu_l^u>DQ6wZf>jNE!VgnIp28jhkQ7z|U{q@HFlM70T z70Cx1qs~`@>nOG_c7Sf**-pT)2`K7IKqE)?XYjiaP`;1jPFer_Zdquxd4|f4x$cAE?L^?0w z0JzZMDZ{LG-X#7wGxX&Obn`Uw0GP79`wP!k)6{uKa+XqV-zh(9-y=DFMq6tZpKLeK zx_Em3t8K;L?pf_F79TBbRdEL1iI50|IoixCW2j?d=0qFupf zrIxSV>7ehSw#8|Zp=93uCw0C(y;RY+5XdQtCuqEmYlHs-hhG6{0agl(9J!QULIMNn ziD2haP*j(-I+rRCD@8zCMsYNDDGJ))SvWcfA9I=$9PBK#6T(2U{Q`f094Jae8C7U_W zG!Oz)0KQ$+Vm6;&mScE@-K!6|>4nOY&pr!feNASMU3?{TShe{v{L|UyS8uPBUA!dM za>Vf;{ZrOnx2>NTLfJj#!bLlO+9|shemQyMioE~O?Fc9G<0Ds8n~UEb2A@81g$IM5 z-01%M9PUSO@AvwdKiUSpfmn%G1W%`lrJae5Ov0t7#*|ja4$&3V9X=DyiE%DotMWbJ z3T61@K^lR0km$!55RsIcU->k3CUs?WVAEw--&8!sX1Yg&z5dKy7%&mC=T zg+6R=g@isDSiUa&dZ%{9ru|w6T~X}&LX{S`Qyh6&QaX zgRIcpE%438GHQ3bV|)THCG^R_vV!m{T8QEmvWd;7;2Y%L$E-Dkm@r{I+tsn#biksB(*Q(?s9Fnw}};w7?4%Sm|C;e3MDL77pTcClR^hkCqv zyy(4y@QRr8R*f8`F0AU~He>=8aoFV}B!aMg#=Vec|D^94k-ie2us)SiiBGlEd7e5# zI%?H82eE;4E0EQ6MBtNbDTHnQp*|lJbM|7+A~=Zv0%t_9Ve2MfMXtEAvfR?^30Udg!lyGDXy1!aNUVW1u~l(>w_z6G4qbIYhdVOM&I%&`rz`%%EVO5 z%L0oX+4I7p;;pTfFH#L8jma_hQ1B+E$}qPTk|%I)&@r&*E%7!1dp>z^`6hh;O=Q4C zM8!!vrY7Y2SI<&6TFzO8PCxnsA#C$}a%EXu?OWFLdYl@!bZ;>am{?83I<67*bmQoC z*N<#kgmDPjh1GJT%gpLeq`p-scZLh=tV=G9>q)=U>5-8d5z)ogBZ}9_^Y-znOW`tB zjf)S5-^AFYF0t{!1H#i%@lnSKT0H)K#}GV9s-uyXBqu90o4pkpqUp*iU8+R)FB>W9 zlLK1Lz)^=2-zt!IrY1_445l~h@b5gnra##@`oQHQ_XAhf`Qjp)uf)BEJQ`W@26;p` zKGicun?PjK|E-8*@;i)`qJm>KyyZrwS`~n$uaV<&lT%H&m3ghue|;cem4^D4q4wHv zwM)P4cS42AD|p-2D|dNd69&Ng=89LzY}v#l!uGoAu$)!SWE+O0K#prRBF|iAgI7d7 z7){a){?FWrz}#1Xxs~Bf)sbsYQzvmcR=f8Q702Oetry{lLxY{;tt|%s8C!>3-)u zkJidxNK<$C7t{;6v;xJ;!HjnAcKsMHRM(u(-3c~hs|k(*!uBW02}7$;c7PX);(S`b zJ#9D?=9Dw|koYUwZ8XHYOsBBDl7|Fo`&?&w@JnSr3RP-;Pl{ELg0(7kug9A z6!tp?KXuPaSklo^5@ZFUPY#E**{LCeh>8RzE=~v*KhM)khjn0_-hx|`IjGl zII^-n`gZ?i)hH$lIHb6cHfDbunEC)PHAGl6o7A>4lObe1is0eUMtUtp^B}T^d|Y$cHgof)Ai$2q;I!|Rp{2Ik4^&cUWC1tHo)|~ z$Em$INh>th7m4hOnT#H`_=H4?z1J1nRD;~8R6ZSbcoU}6=6!rBUnD+t2K#d4DIn`3 z1fpPuD`J9a_OHQ#{cZmNObsXlf9LZEVCqX>c++T>x$&u!;j&f=NdIz1Kd`vNe-_V4 zwSE0l{#6GHa}1G?Os+E-lq~%9rApOA$g;j z8&Js$Un6b!B*cg?4#;-<%oPCbX}~09f4dVnDu4^nY%d5zA+ZnzvSqgNNb zlWOImHl15n$sKk*L3-q(OX48GCJ<~6Wx52aM9n@XM!f4+(&E{24HSG%z;Y(`ExX~V z4O==F$;(%_TT|1B5!NHX1Cqb@B$;L?=GgEYSFDKSshVmU6ro%RM^5HaiKWowntig#TU=_*=X(@eI z0e3Vhs%k{XH%t}M6zF}+ zFDm0xV{%i$O!>!uMh*wU<4NksWe)fxcm}f}IiQ&n9tLf9QRg-%5IM3?_x{+ga605? zV`SvF!pT0znSeO%fb^u*3BoT8Sj~Sm1z<(4i1t>Zz6%zWHm`AIj5(5B58^q6C zOQY$TUIw{P9bR!50i;JT$ZxH!KuqNK?dL*})tG`y;&52>MR>2s&kuRD7nB2V1n$~s zoEooE^$#1nTG(~hKq$r~5GJ2blUi2-;U@x&W|WPAv8MBxSo+=2i*6#rdb+Z z(<}_%*u7j)LSBw+wTVRe-TiZj4~}9(TZM7~z#JahF`dNsuC1MN$PcMKs5-bD#5uUE z4YZJ_C=GCWFpwhk_nxQze^h;YJkx*tJ;^PhLdY%MRGQn8J0Xce5;FIMxuslkx8&Bv zrBZV@ca_UxliY8iYz)hmd(zCzCS>mXUVR?F$M^gD{ZWryz2EQG^K#DfoYywge&ccX zFtKsaF}6kAigeZ&L5b;c06HK7F!f>Uw38w3^nd|QCh;u9nXM5n(=u)SFVH%Gkl6p^ zfrRK!rUD`pm0Ud-zas)h1zC;Lw9Iu#-~f)jmmEhJssy2CIU#{v(A6~K{9Ec z+TI%fa7R0oA`>R#rPm^Ibo+;U7ZgkXr?rNYsJdel+`4QM%6w6pF5(q)lN1~SE4?iKd!;YR5zWO};? zY*#yIU^)3?n!qpa+27eZL1KD2>He>S4x+&K#)y|uI0IMu{vk#R==&l+OPklXw>SEZ3*GkwQ2T%6;7O!VDFxl30BaFSm^+mBfRb%FDm6A`6cD9T{Z@bR@=g+gIgrFmYokKGPx$7}$;smFiHRI(zw}EQ1dzji6 z_(s{sM5O=bgBI}u3P0%dGLP-_g6$^Rje;cimWwt@-XT%ip!d z&KMVQ{0go$P6@IneHW{tIu$wRws8ie2PYtz!yq!Y?ZOZ;68fpk0m<>RfO6)~(6Y@P zeO#)(loUC2Xa7nv>leWQ^bvMVxW@LkNGKpU0IkYoH{R^}QX>QDnHy(}xR-3cN`S12 zI{}N9?1gW%n08;qjk$3^A5s)G=_<+T&?ce(GqsFKHym?U@Vu480x{6^_5gp6L( zYjk|djI$vG(z<-QbZ@TKrF(#(K4y1n3yt0q#6mT2M?1=qWAm+8+anjwwCJJ zHlXPgAbn{UQ#9XgWbQh|M+Pp0I}uQ{R&sa4;Fp~IolsI;7-Ds8NgVK_;VBBah$7Q| z7ShTNi11)PM#hiidw%a%f!K4$| zcf=OpeQL2-?w(OG0%3LQ{YqaTBPr4Rmve|xo@})CE}yzrJ@&UI`?9HVqoSIz6afsfk+pGvgZ97hRyBrrF`F!rw z?n!_;Xs%2sR-5iM%LPHPv%^}1FAW47yhP;PKDtl{c-u>)ZSqRiK!98Z!1lG>JaUY{ zOnqWTCw7~VD9!;{j5($m*L5B>^q^`QtAdc zdP=a^N)j%B$CM_v%X@oZ*=nSp9|$qpM6YC}Y*TNvZ?8U2P;FR74q8y2Aa( zMy!a^Z=sGChU|&=9>K3zEC(tEXP9a}wa-T)x%+3Sg%m32dNK)05a)1#*82vCOImuZ zWY?=lHg$9bR=&myq!rGDj;JJli$I3Ow{r5qH-@f@aX`@AGEyCDj`K?3`z}3WH1RW_ zeKw*WWbk9P_gTX79;-tTENIhi5E}~9;d;hPMmM6QQ$24cxU(!OMH$TIE2fF(%7j9X zG-0vL?An-)z1pzN2;5@{gOFRA0Js18Wy1WQ=ek2$3o0*xRsO>Rh2 z-hM*fFH`?Qd7$(enzNU7N_zcM=WSZgPilSw62V)GZJN73357Wc$b!xi=cO0D>Ky7k zC;Vt~Mk%)Sft~JQFl-orl@W~3NZWEm%7eMunTvwm76f^v)n4a}kbc@3r@L7&ISYo1@ucrg@i;Ivo!nN*) z7V34jyH+8<7{?yT{bq3aD!2e=?S3C4od0DV2toR1b5ZX4F2LG3r4&PM09?wTz;v+N z>k3ZtuxNoZUSX2U(X^V#?KFHKOd&pCG&ZC=ta46$k{i$wF+eGb^gMuG!Va+I^cT2Z zbg-aXiB;%`U{rI9$Iz{#4V}YN%XAzbN61xu}6aE6`8*3gVI3(cS7^VG>CL%R)+5dmc{fI;jDJsq+aU(9Y?AJ9fL$Gqe(3 zFS3mt7i8B=QH<_)eS#H4h-Z0iT%F6Ogl%Qo0={+CD@+`WE!SPHhDH5(rl^Fzx;h07 z$Or`FUoqwYZ1=aKou1bS_bQ;}B;xW_o%%_E%W&vwUb9suy9oLwzX@Y*E z8{!E1gVz;sGygd7y2zp^1R)IIo%3TBYns0mAi3eXcbc;#kiH%w#IzDoh#?OHV;kcVmKgV6*T6fW>!1X*7^z1t^7H%0e5cjr~E2u(gkx_DZHL5r#0BFMS47l4Y9Ql)@_*h z=Mo@lQa7*T(s!kt|8Zkk*d&`2c3Wwo*loRc1!TFNK*w32>$w5_s1&||YR0eFIwG~& z4RLz=6(Ok|2Vl{BHpJO|RgDw}AFKq5R~87IF!)Bviwr6jAXFKp@P)V_knjM-b>8`_ zou=09lQPAr1|jT5%xZuxegyOiwN7u?BoDniNcY!heG(adV~^iz_6Qc__n`uco`Wu7 zq0l|iKhI=n*$a@P^!5t!=SL6rJjK;Tu*yvzb6KKYC0T=kBVjAlXP+_G2bdkE2Z$3uZ{(Vr+L-~}uV8$c+f!<6(Jjn%-XAQVE z%_)%fkH!*Wfs`PShTYc73SAUvyr8#F8aB!2q#1*5$_|UXL){FUz4T6Np=R3xR3~~< zv`Qc5#0>^w!CzR(`2A8nBH)|s3&AXq@dmdX{PSA<1yn;O`6*J5QxzM@58A<1o&o*H zTTr?Rqx&rg{tFj5i1PtMti#4}w}I4l)IZgfSJMCUg(-eMxW++gu%_Wp$%(9Aiuw@9 z6b~T%QeX)XQ5kD5kO*+xJRuLMe2Ntyq=eX0jLvLLJMKB9U0LCscJ~eEb~D^o!D}Rf z*ahI|OvjcHPR{To#8zJjf_{8-G<9#N^9S7X%~IQO2tpDd`h?aUZg{N_DF;E&l>z6gGf;)B88Qy4fP)??2C(%EDHHYN;m|S$ z%m;!U(VFr8QLm%EAKr2DWd$o4;p~t5cern;HEw8nZDh#&OD3^MtVGDp(=9%!&c*_u zUw3f9bf@JiP@oF~wn$OBSg^>T=GCOH1{zEy62ke6&p06E+L~xJ+waRV+&~O&4+U`C zChBWbJwb;SYLxv`id(kUqw17UxWMFC=PD=F(Ph|Vv$^zx!w|du7C`~eB!g2Ce7pjg z)pPos>YU2@$pgEy>w@fD}O~Ex3+nZC7dItd4xxfQ9o{4t&)7CP;@1Z5|K*~Ub zr*^DU*YBBiyK|KdR+%M7HCb&+}sL=X4xgGqSNmhE& ziJ;2%7Q%M3z|xq*c7+ZO&2l=ai4CUqKtQTfjm3cU%-*k8e}S-jn!Jzk#XkRuz|2`N zo%%cfj@nDZEi3N|{6(a|`vN#c?l5Opj% zqG7wg#C)W{lPP+Q7yP-@AZsyH!e*d=hH+E>Dwq!c^WZzS|NvR zIz$?j9v76DQ;$A;X>b{xpNVXRwr9X`|0cU>Hb3!{fpbmE7D+2oOvO;h8xZYK_=cQ6 z#DdQSiXMGtdsH}sjnO0FD&z-vRhT>w4mjo9 ziYRKwO>mr5`vT*T7KwJH0|BZ4l)cXuaeQw5+;)5DVdNn|i_`%raRdzY`gJiOh_k?9 zSXH7UcH0l2vL8qc8N=u1KYyk1C25ond|nE;a~Y=!Sd}d}{M4Q+K%>;lkAd&Q1&fxt zL=4Ew28zbHg9FmzH(@SZwByV;4$#Pi!Srj_17=h8w;*EM0K>5kE!P6e2bRl#9*q#+ zhut>g8IskG43FU*G|_I%aZW`_0pG2x?GVJdJ_Ed`&m~13h>F640sn->&1Iia*qlm}3*zx_bKvg^$bkM?~P4#LvUwyPIX~6(T z0gmAca114o%9sArH8l>b0v_@YL=2uHQyraLIML^=yUhhEAwMBF3BmAI(sJ>*@n|9oPzmjohHua zT>=w;$!M%Z%NIS|%w|{aO;emD7)$Qoxr+051kHLR7y|4i#RM~KBrkR#KL7dbS4-Dw0V-Tk!)FW!cGmyRTS%& zD$vR3z%vYKi-s`;!QrF1mS>NGi{ivaZudC|Vk6IodTki|0sHbwVpdTCGtD3KkcmLT zcTPA8)2)65;wBCX2ltZ=vc~~zt21A5iXaZBK^!VPcgp%04y}O2;o6OHR3O5)Y)OD? z)&k=P;-E4tn)4SBnzp>^PksFXS7Z4B9bd*j?uc;##SC1wJ-{vJ))$CGq^DZ-ED`wB z91xUX_CJ9QUVoTt?s&=$-=dCG54UU1r-J~k71U=z!kqd7ghhTJEczQjAbJObu}yqn z^5F3;O#89n2uNmfx?v8|2h1Jlgi{cIFQ6Kaa~pBSgG&P9c&sUGw~b@l0nCVZj3OR% z8sZ%_pK1YJvgl(bGQ= z3S_1kEDtI^9HzTpAJ)G(BYg$uKA?}oxyUg(?WNrvOFBapPkDv$bbD>MD^(fbx>7+_ zJM9y}I;>={QsR;Rk71xM&3o1JlZeXNOZx+pF6sT;jOPJBquHbnc}tr zMs9zH0Zxxw4U($Q2_cO3k#A@%^~zwXhCm(c!#44PWwYTKT;>B_C%_oM)?F0IybzRt z8>j-HLm!ird$8BFV*%a(IufwD{&BoU(B?h)|5e&P(3oKWO(zZ&QFs;#Af3^m2vF{M zzzUMQVOc;q_5c_HU}o7uw1eh;7)W+ope~#fufqDrfJaj=41){a7n_Ea#C{gy^3pf} z%n~(Vc-SkdeEMa8t3u2G;@SlSzw5wM4F<$mt<76AF45T)aZPS%;ndpV43}F8E8i33xZyXPCx~A5Ck5b0MMa#$>4(ZI4nU8 zs6%A-w3w-&1|;(-eA7H22m;Ej7QZ*UA^@>6ylIY8j0Ho^l#4HzJxGHA{9r`l2M8Nt z@CG^NA}ZA>B(!}Dc!+c$-q%Y4pC|04?Jf8Q$poCyn!X5R4Q#|f2t>oAV}pVEWzp0F zT2W*oD9f2-uxw@@Um)uYo*7h`!KtpXg_95vKGP)Hh*9)GaU8SL}TeYvIF2N2+V0Fu)IJ6U|p4vTL3hY1)Zu$`eT#{sT^n2rPl zO66<`#r>xK)*mEs-A6NN?FkB0ZXRex#~~=E{vYr#je`TrwLl)40>`}{BMcFItP!tK z(Hg?#R@5gqn;j1fMG6p?R)7yb<=7qyuNMM|nhN$1pf4vO%YaFgej(SNMZCYDl}OG7 zad^2lZGg+p2Wqc@I7HA^SsLuAD2IPQ?G$ji3HP zftCa~k1XIkxPRM5S^-%L<9+kyD6A?b0M^3(0ls1WXD~owohFud2e)0;X9f`A8SpnV z!Mp;-?rr+n!((Q5WpM-;1hcUmbYqM={$~D>P0K>dFf5^$OB|v2OO!Qh%$Y3 zR~*Q#JP@rG-6_EMiJ+S+0yWW@@0{l2Eq~8lRPX8w!H#{P98_S@qTmE7j)P;!gDpZn zt{jjl{%kLe6JQt9!2w=}rdJwQ8fvGX-rXdd9`N1e2 zxsnB%Lb}0A*3Sg96|<)Tzs#QwA;HpxbRL3Gr*PnsW%1_$+mQuSEge7!8Bi@XP@Ub+ zfN=^i!Cp)dq6OG9YM(2tWjVUr5R6OFpd*340J>7xA;~fkm@XS1faTGS@sj3Hevm3U zK-1L%O;Kj57o3kB*kxk~y25rMHCr8$-X0C)b#A!Kz;jZxDj3AOv8KjyZVurKdy6+SR!m7TMC1ieiAKf~%&2{T6BqF1}@=fE@LLJ_}5> zW0BZxdq8q~SOGdi=1t2Hc*JO`nn4Cq4M+`j202LQAK$$#){jH#eM|)1z}V#}2!K9IBuccZ zkpLF#+%&*V=(&Lw%SB+xh3sdrN08@EBc`TnT{5CTE17T9O(bohobm{8FvAG?Q^&wzK|2kcr$ z$yDyokY%@i#FA*+^f_!K$D4rwHlUxZx>tF^cGE2} zcD%$P%K%9dmHa0;P=KDPUGy(ia*$*IAu_piKzSdD;Aq-0~-~~Fed(ggC78g*(I;;Q!61GpS`TPUkf#qZHQjXAlC$JhF zTWrd(7Wfklpmkh+jgcT zuorMQ^Wl(klb|M0pzmU}4@AH>)RYWx{wI?$d!~Q;<4{#h|PmY!lZl>^8rW=TXqz z|Jik>H1%EgSH#-`UfKPmcY+lVooVCWk&XntsQ)WqiiL32uQ}TWyA0OM-yaC|*{DwC*d1 zZ**SIDa}J(m%SG8M-R*_i-{hvXt6@<_JM^VLagBBC+5=uf-_|lZ?PhGnHz%vJd#vl z*yO(Znn{8=?dvq*$vs}DK+R{K2w*xQ>G@emj*rg;esPFILN-H|7}s-4E%o$tH*T~j zjGjbwNs^{|{HW??8OX%l6!7|~$NT+0@sfzKf9mmQ5Hc~vEN z06$zNj&@4-AtyZ+xS~G;&4q}BXU-MwDT4un)G#xz`nmJn=g{>2d@(@Mt9kurIhg!ECrd62bxw9v4h5?~tj)m{owZcTp3dURS}Mx@hAKr6F)+TStLHYnk*r2)Z2dG_UN`=LI2tILTm1v` zwb_FatXA3L%2=f;!0LY$rrIh5Ow};6YRl2@TfG=rfud1SeUKOZdj6B+AAIiDyZ0rN zNr;I)i;pa1pr~qOFhirx!M1L;+vonqda|0s+Hm&$dK!+d8$DsBmKWFuQB&9*6@M|V z=7eD-D5C4#C#V4k)t%edRrEv=OU_F*JA2!Dtwi+_zu+;hPhEAHkBM0v?fs?wH$4MA zKSPJa>5>aju;bn>X~_>g!JKlc)A`u^FycW3ku|`YWlS?(F{&9HV>4sib#k9leJ$?G zjOC5$)=&KXy{aBz8a}S$u9KJ7EA4L)oQf{{)C0a*TWHQ}ftPi0H7-0WqC@9Z-W|ea zizd&Ha)Z#Jv;}c`=7REI(>o~aNU*WaVDCFMnAEC~Pf_sTWvueCq)SGIgAXnqNjBmx zT$*zUI+c}_Vq`V=?cK=qxMfXebCGYNr!ggEUaCc^R%=^p{?YzN`$H}=co^`>!;^_(Bu*OA$t;?R=KdsvRT^<-)RnRj+yM9bn&Idh2VJooQ%F~rhQVprs#@{En99{cqc5ow*AStF7}hgJQg zS{px_HP+$x>eC(jCclr6!AnC(UkRUVUnnDt(a(DQD5SBhxn^R_X@cp4_Cxy!V%0uz zk7bVe$@AFt-bXxAPUYo5`%;ptR{!4zXEh(x;)8l!^wH+WNvuE~*` zoSXGFQ$u4weDOw5O3)dt9!;yuIkR(x0Pmru@)*)*DA8Xnp|uqS>R z_%!P`?WgRMB6$D0uf)iuPmo%_fNWYXJ>XG&V{e1D<6Fncs`;u>1%$1mZGL&R{11_N zZ{~pzqlUYV9FDP$&#GQk-6P+z{eZi&e4_uF$rq_}FK%CLdNu!4@s`Ar@xE8x*OZ2Y zd5yA8zPffn<VHqf+u2_-ON(v z&5*#5&ssxL^pp_rtAY*24QUf@6KNA35tEOotk>XYit`w6$C}5=>*(k4&0K-#wsE@R z+B~kA6@YFUrz^Y-oOo;I92i~IfLA5st<&pgk2nOo(d7GEMw>{hvr~f^ft6hWRkg}= z)4+hYv|}q22j_wux{nfdQ$>SpdzzeHRe5=H-dlIR_m|RLSW2IR)oGHoyR(%p{X-4< z{Tcd)=MRj!>I;KZ%}UX7YUI~dr}S(sXT2W=G~cU2dRK|+*_yI6#eZrJTEF(jImo&@ zoXnK}LQoz0Iy|Ty6?O2FTq#UMzN_Z_{a^IY}PuN?#%j+zeH#;)moJ`yBV z+^}4+v1sDVp0yWDlfS&8m(#M3>*PuN-tAN9F%6xy=80iqU~9FOy3U&01P3t?QK6-( zvoD1u)3pi<{P4<7tW+&D}*_Z57+z_K7Vf)&e|V1`@-Wz zVrF635to!7(0fYFXEZZ~vJUIobleG_xW2@sH?RGGzp)2={P+fVDtH7tEIkoYyNP!Q+Xp4(eN7sc({S54ms!1Uhq~4l zO_!Feu_^qls>iVY+OlX8viq3sjE#4V zz85^Xvoqsa5wCJ%M(eJYE>>oRor!$n^@&*t1E(=OE?%~FTDRGFSgJN|WVV`BHkwVc zYqW~+%o<7e2q_uS@p@$ZVXGo4J-Ljm-RVg3n{b7$*)sI9>l-~5E7OP}HWB2^k-+)M zW6Y-|ixn)*4A07#hO*g7i@<)J@#|?7ksjGmGPSnNFrO}>)OV*vY&kaMO=fL>3&K0M zyq1YFqise$Y5Ss zR#B#SR-@MUCP`eqq4y;ZX39v!OxsrfwFpJ{)L}-H%OlYYjSz}m$kp6>@4bnzOgnj1 zc_{s!Rk+irPw{L?zjdY~s#(Q@)V1*8UG0-Fajo_%Qz1^HjXDuh-;lA(KgL`!cg?xI&;@9V!!*pO&VaaFU$t%b&#W@=!~ z6tU^A3Ur6Gqk*9ko4!khUud4f;qePQBYHCexf4t7ivuGQdClaNGS3f8{K!@S>vvJE zllvxK=<5ijix|hM^&Hq92(HeWd!X7ED>G#f7}T6V0TCR_-#?p)bU>_3FQyne{!M z%s*N0Sth6RqE9G!ROV+khO_ddbEoRw~?2hCA)!Fhz7*6iLI;3ra_F^v+292<(B(YRqM)g{!JE1#Cyx&^(VH3Yj z=-;MllY1SjrxwqDjmmp#hk@GapWoSEej!TaH}lj&`DLwVYxdO);_aEgntrIFAcZ=@ z@6$A)HzAw*-|FbmG(Qr|-AHe5F1J{eEntXvAJ^q~)LX2S&&pA%ab>8hBeqv&!#|=7 z-C3OtM@~3!#*%oop?j)p81SP?6$Jdo`rmK3=+WDkbO?bcXxC8r>eJvOP$D513e|e4 zo2qIrSA%y_Yb^WdS?%#L?^i-V-ucs&o~BT;H)3<)ZJ39ax?5|uT{%Opww~a15}GIX z@Q6v?OI=K3W*NIrV)n?ytgd^Xwp(9R$Goew2dlcBhKYD2Fv~o4zH-NR*6V`~2X}>r z`rW>cg|yodR2MztzNqIP9Q_{YnA^$M=tw{#5-*2eN+|OzgzE4$)0%x*yk4x0cbRz+ zqd1R8+}~)>MvtuK<;_xC#|W|}aJ~-ojf#TC}cRw$rKs$x$ybpf_iV zp{f`W(2Fm|Ul_`q2q&R5+Yg#AS~5Ie>-r4ia)#Y#Wv^HZH5T*CzqD`Zx;pNxch!Hv z_wd}9a$2h?cVgK^pYrTZei)vWO=^A}Tu7wW~Yd|T_+*!xQ?o}~reX3>hH z_Q+1E5h*p)F}&yN5zlM&gp(X3-Q#aCLSp!^@ZUMge2i7abzS+N5!B)-*q%z+haZ*} zGtjM=O!@pr9Q76_Fod7ihayM|zJ6Gnj-th#`jtx&-8Fhkz1oQH3w=4&3vyPOT2ZqK zdy{rKInkr{7hRwj^)27?fpQjhK80zS3%N^@rCyuoB0P-nx~_!WZ!i%k%F*jg839)M zbwPW6H#cIm2378vx9^@_SwI+f8}mx;p!vqple^Ome~>pB5Vk^!*{T2 z)o)2snUH z6EyRx+DluJ$Md3fUz#r3LoEgZQ7CHvbwmnW+%lWN1l*P{4CN1l1G@?l}Y zlfC^Ud^CpCkm&g+o0T-|sI9S+>BE$(Vr9yQe$T}1Rt&4ZxM3B}s70lF%P zt=4_Xs>>wUsQP4AM0v7O5PvYa`=gSvl&5PO#<2g|A+4Qud> zJSMC@?`7j*>$0egp`!6L`3RP2uxG#hXy9h06$wv#I}2w**%=q17?mx%l-VNxaMivY zr$^UsdE8%8N7?V`z9mcI zo44rOY3lPrF$+XCkoAwpb>_eR6)GRMkj0={$I1|WeeJYW=t^Ah?B>QKbPsPKgPEe; zMXfT@b_b_sUT+AbiU?6O2YMkse3slK$xOJ|cA;Uv>*-)l4h96GNNu zWnPfR5SH>z2x*)NG3#T(Rne+Ns@cJ7WNDkgI~G+J5m0(*|FtX(OkUMF*q`h$Or6Ur z$tr+})SmFR_)vQ@@Yaf@Pd+O@D?Tfx!PbZRKCDcmtk%5IY$9EiaIq(-V-OSGcVXh0 zYEe)g$zcdq8hitKtvrLI)F+h-{~Ko&c$JQ1J>) zlLv^Y#LA90w0s*NCt z-y}!|aSv>wa}#Z%D>p|^`=ARJM~4&)eVR#O3I z)!e^W`$2JwEn$Ww)^ISzPD@A!HB7W)T*FEXrtvTgvD|~ZhGl9Dt)TnFl#`gT0Sp&I zfC+41``g0~v9v#wr<;7ir$zbu*bPNZas93jw z`_t%%_&tw^_yOm&1AC0M1JkWckzM;mk-Mz=xqna9Ma1JVVq211lZ!Q?_1ueE8_}5ayb-`qavs(<_muSDJ-bfp5nbcllcgRC!ifd*+m^rPj_) z3rj9OmPp`XEY@JjNo#wK`m{wsQ{hY<;?$Tua(DOXxaaURZK_UbIdAdsvbmo8LFrYR zsfUgECyzYQdArrED3#paFq=CpnMehlm2<94hi%2(32(&C)E;GTNAc!$j{U-HY-~Ji z_PO#mPJVuW-GiNtO@@Pw?J#&W$ko^DuA=MRz@PwEw;+WFVac}~eL9qcqX_8FK~IN+ zciCJ8@6R1_kh+7qqEP1tYp69dx%EkzH6==f(StrVom!*+&Plsxbh?g*yR4kCSIc1BhrW8p*R$YLvT^A7UGD&2Rk zJg=6>SLZr?KtR^WfAN$X=c}{lhhFk{rNM6DDZxh>?w{}U8HCK z6zUWoDjB=^^|h1RIjsAVy*)?ho!2T|uDgeqdR4>) z-sIlmBL4X5#-o>P7gA2?yvGyU;_^bazREo;+_TP*so9L%3UPdhC?M?<3u5U(CC+&% z81%l?nwOQx?mwtIO}2j5?~W__(sz7I0H9GoP`3jS`%HdJ*}Q_{4t zZNI_Kq~jK6abt&j|HLaBB#HQnJU_BBWTkpRwVv(&Kj4eb`kcq$Kn>uZ;Qt&Du6@%ZC=$1=o6(q+ES)@HRm#4`@d|Ojwq`T#9 zf#~tqDt$=~4_^H|W$eJeXC}lim3x0yDMvBk23ZDuh3#ieengqv>6D{Un=<3<{TT+* z8gELQ(aGG*hc&$)hAyN^R6Ku9xfcBX<8Ec$pZ{ld{x&Awd|Fw4&z2V?up%4V(f>Kw zAosu^=l>^f`(XC|GoMAG3FzZWg0I=y`%3J5`G2>M;0w>4N$Wb50XejPpWoo8VApeQoZNnnr!L4dakVw?j|#^g zPhTkVzVY*7ruW`(PdKv)@0sGNO?l#aXG-@NZ-W=1YHjapX2(&`4FYVIMTwUHxRV+Z7k{w{VB! z8$D~Nj__eASKjH}^E|~29_b1feR|K?!>2g3TsTTDEIYJSy;6VjtdA=8+jQV+$XZ?N zHpY7ICnT+FDB|ENNI`VSbN7Fr$h&(DVsD7*`kUXH%#7xdtW zb#AS?^hB?Yu1P1UMF!!UTcQNN#QihTh-|~4fTmcw_@zrWm0?}8-T{jV`V2zer}okX zKS!seHf^sjEv2jbu6$YD(7BQWk0e!_-FI#tt&ZrvKUQ#WY?2}bdHJk)^B1p^B`CHp_JiQ?_F_)ec!_lnt0Uu=2D zuAZa;tNn7&EV}VipZCk{Yq2#dA|~v1pH5u-Me#l7!}*q_peW~zW`5s(SL*(>kjrpq zd$s93N$@83-9G2`Jl4RszIQ33Era*z;xb7WubR2;&#E)wkGy{V$_*s`tC2ga%GFDB z`jTaYeDu=NI!MGr zw_xNoKJSor*P%>}-j5lOy)0NH``1{74Y^5&>Q7A%hmEp(Z!0&*IyW^-y;{w1?M~`%n-x zdfRsV(a`s`N8#}deVvKR=f6?0S524FmcBIW&wq_LsO4_m4;z!>+v`S_dz+YmX+~ICDIA8JdfOPVi5uc_HmTGyl-=lZ# zo75gV?aaQt|GadQqKSf_>s-bmL5q*RAO4aiwJ#3IpF4Azan-;2BgEO=bv>jk#=;Uh zGtSW0n)Y=uFj5hBPjrlYm{atr4SH6uY=@5KA8#u5I#4O+I(MW{Vani(eUwO>r`XpX z{W#w*B5C82O^%0=zxMrb>K+(k5?ViCLyp{Bn?)Bp+qJdaXm{`WxTp@1y{2?asbl*4 zJHs=c`4_((nRf9+etB7RjGaR=;SI);@0JkP8()vlw8wtQ1*?pvMT{n@`yS_*M4{Ch zMm_`frUsgw|)Cl|NS5r;5DDt^eeWt@hW9 zd_{7pe8{cF=56NceYx>5(hIWd+F{#m`#~(;H;YuaOSG1=Cz(pA2c20{U~YCKt-Dcw zeq6b1)%Yn83b~Xy=&Em>cG2B7VIqTWcCoI~JCM#8J9Ou*p4;EIvtRz0zAb3Bw0p+l zQe6%26cL+P>f<(QP=^Ki)Es}HwCvCKA~XC$(N~U`<`d{jtqJ!$;!~%3&D#vk`!=~A zaW|_VCRw*k$~DYyg&m5%iR=z=X*e_aBI>ADUX|>DJ
              kOM+?hL&ACy}ZxlJNB*( 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 Oc{PsjG+)Ow*#85I*)doE literal 0 HcmV?d00001 diff --git a/build_helpers/TA_Lib-0.4.19-cp38-cp38-win_amd64.whl b/build_helpers/TA_Lib-0.4.19-cp38-cp38-win_amd64.whl new file mode 100644 index 0000000000000000000000000000000000000000..b652c7ee042df991c4820569f660cd4ca04c7bf5 GIT binary patch literal 504687 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 M09=V6&=7T#bp;_A!3;nVRZF z7!*`CPR)bLtWNdp_%MT$=#O+1*TUgxE~IcEaBk-c?8HYD`puBS8m(S{Fj9>kZ21(6 z`y;%(r|TmEq3Qm#jb=XI5LqL{wTTSgb z+)4?W{?-r0G}Db{W(RzlAi*$_mX2Rdjd&0}DIqZ)M-Iho3IaEcQ=_5Vmq!S1{hi$tfQ2xp0iVh!tno*MvLtZ83|5-N&I(v_M@cvi)�I> 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

              0{$ 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 z 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≠O?X;6^Y+{~rKL95;`ECEi30GV`_7fCP|>L2E(GxmT+EcG^w=`K5tYFjib<18u;J?|>CA{}WhoK^Ddas$qn8uq6*HHlKG?RM>;M53i_TeU9A1 z1x}o_S~2FS)W}Y$g~1CLH@8=6q3r?`%#O&V76h})JL@Z~p7)>CSNPPx>MQs^{Qps3 zVb1rAe{1S1ggsR2D?}3O<8f+LaCq$2SNQ0S0OriV?9^9yDT3Yj*6E$~74F{=fVX_> zlzV-JX9D1K0noa>g7jDb>@5IV*H;+W#HPN&^l+iRLZfOzeT6o#gEKE%)mQNJu~T2+ zRRNa&{w=YE$xYOX2ullyJYn2C;I|(m+DS}aJ6Og}eT9t-+l%>x%}K!4QG=}-VynB3 z>kI!$eTBva)cOh~8q4(+?s!mrg_~uR`U-{0sPz@P&UX^}vUD!=Wd!zR6*Dcqe|?2A z=IeJ*n#kbN#K3Q5X(Al(X0;ELZmSg*w%!p$geLNgCk;TzidbKvwuRZ?X55jbj#?H& zAr4qEY4AFh|GJupRKIyBC6q!bA?Geh38=V8*}TR=T4}2&!t?V;Na$aZ3kfYibIDw$ zV^M_lG8FyRX`W4m1&Sgpq=F1>U|nH>A_>1ous?5Q%aMdz=hB+^ZLUTQK9Nsc52c_N zS!Lw<3Q?@SLKw&&pi20d0T-*!e?%^`Q0iFryUHvKOnh)Jzb*qlr{QxLJ}L0o1)oju zDVCLA=MSGj@R8uN13ovhv@(fC9$E0=@<>!)nf->Xr7ES!R6E+pBh$WS@<@;Z9zo!G z1ow5cmPfjL&E%0HeFb?WiduMLizhbni0{{;JkmB?lt(5}LoaOjlO1_vP8i7}$bT68 zR|H=W;p0(|i1U4-#Dw0dwH?rh%o?weH z$z{NDA_@cNfaH>SJ9o)NupL+lFRx}Z;U&?I@N#Q56JBh>R}NDnW>K(~U)IfL^2>fZ z^2@B*vi!2(@8p++p}xPsR@}lQm^(9N38pBQU2?e-Tw`V5IR-#rqXQ=Mj$ zAaWUZDR#bxBG$BiCV*9AV7E-%OmRU0EB9Og%frC#63kmctXaXtnj$v@;9q8`LdZiI za2x|%c~1b`A^>K~fE^fM$p-@9bOF#J12Uz|P({SpTL5&G0a=-MLoKn7bp=4Z40xFd zN*iZs1f|QsY;NW#g3@WTmoF2P@VvmJ7oc`zeTq_&wP5j^3kVi&Ot9!MOBO6;@ zZHpB{gQgvd*pc3vx)5*uGJ)i+LkX(9b=z6wulpqE%IP&|-L(KOP4I9oVn=#==uFre zFl@sFZ1XhOK1Xa95L;ObS_IfC&+1`JX!!jQR}yt`=O zN+AywX{)Sx_;r-FNHl`Qkdwd`gGZ7c20L>WJUfsoRb?}1|LcmS2cVBD(1j5?oS?A) zmW9b(WzC)dA0Kpt!+)>97en|O03Sad1rb+-{>c2>HCdbk!EacCEclg1V5hfK8A{I} z_gs_ZxuPI&DZJm5kYAax1Qd>im+RDI`l$uFW+opnCYD>VpFzHC< zK4^yG*7!?`RQ9FB1h>wr;Ff|QJyej})w$qyR~Fm?m0Iw%8CY!qt0U2Js3d6ww}Ou1 zQs~b+QV07VbOb~U5aR9zOBXQI2xxc%J&Rv;4Yd@aYR52|hdEa|1qkp6AzDUgXzh!{;G{-{385n8*C4;m^s*Z>w{M0`sK{@f#88n&)H=&c8#A})%5yPV`aSP=Ild3=%qOkCO$7A@rrzmieZ0zRi^)asWI%g@YEXiYro~B zt>83ZE`P25yLh=FmxOq^7t>{8dVjS|yxikBd+~DDrYZ4qlWNQHa+{{h@p4aA(>5?H zplvY!OJv&@k!^o-MH4R#n!5$47igMEkG&{LQXRmE+}3pH=MfC#Dgzt@@?L z9>4Lmt3YHeQ~x$zE`QSd#ml{4{Qjnn0s(Ba8tKF_FT3&k$y03z;IHk(818n|`h*w7 z?~fX%i4`7XlIh+Mf;#Q>q4E2@%93|>(Vs-)+KrNF+$6$#meIHd^J#K_jsqH(e94N& zJ)Pq89`XC>2yGR=zjcaC*8WNSehCk&`2EUpw0idD<*VoW$u{x((@!h$`*Blg85N7u zETe%h#bvZ-@`uFlZ)-1v2?%p<8^6DQvQ7N{oseASew=yi7)|{Ckk)qQ{zKyT`})w- zFTY1q-zm!O)Hj_=Q-5g+O#OiiR#TrdDYvP&n)NdXXdS?7{h~ zsAQ*?-FVdolWg{2FOw*Qtf$tSyo7kw*Vi>W@rF?`MG)*(uYV_Awft$4J^r{wle7B^ zd2+7PQ?|3oS@JbaPWQ<$IlkwuCa32_r}vFl^_%EqFJ9GaqP#!poUJ`%{Pt?j1+IZD+cIquv7UESO6z1YVmsRf>uX-^r#j6f*qj=Rt zu1dV>H!obR;#G&0wHL3tcY+eH>hpq=K1(c!1cO(-D_%A1v=Fa)m%n`Fq<*VtMYT<& z6;*K}vhnYbjh{SgH(qs~t5v+}iU~x8>$>o+6pmHnRo#v$@v1Hpi2No^(2(D|&qVUu zF!sNe@A|flKr8mH#J!bZpI_&XwV@R?jUvrHORZ-!etmePhDz)Xl&Qp@1oia?^XoSQ z$%T9AJkf>4!)3bQKy+a)qYE=;(JYP`4|E~_87sQbV%+=iYr{BOe(f;sefaed7b|`} zHkMXOJ}16X?v1hG*Ow0~{QAN;S}+G zV~1bo9rI84_51C=2}WW66{Ycsw7>sm#@Ot?t%2ekRHfEmu>IFEQnUZ+2gq|^B&g^Q z-hca=6JNf0i6)`U5P1@M5#G^k65J%3gkoc15@w#TnuJ56-)H~L8*RJ)CXarf{g>rn zwf|nm(EgJwdD#9NJj!PObv>l)zfLi<|N4y4?7w;s#r-#9)Q9Z9DJ_NlC(OO={!1KX zv;THB&t>k%nOhIn?7zmJ*qQqe*?$N9Y3grZpsDx$%6ozWHR=fGo}|5?fgx8Uh3#jFX`SMpx~e~dHWPhyP4VuAk)BG~^W z-Pr#%M)+?|4V3+n16JT5bnsGQyhJbTS=240Gv>rVVa7*Li;iUAbFj|ySQMq?dF*W= z=6Q^#R-Ld_xPvy&+FNZ1yPR~lD0seZHR&iv?*1FZMk zK^`5Gl%PRLIzHj-??yA((5*h>Or zFAfoko13Y;~ z0K6Qj0w&6UYZ>7AQv%>70dRo~IEew?J0Ji~69AXUfL$5jXNLvAFadCl3|O53CW;tq z3xHc>Ko2V}#s|`?FEq##tiua?f*JlOVdKVJ;4wicQ1JNG&2>y)A2-5qtI17K;?1w)cx4@sC zOW;qxMEEmg68zbY?qAs|tooK;WaqK8BqdpK$rISx?X>9GCI$?eQMoS%uhh`4t&g!qGl| zp@cIs$)*e8KT=r`M_n>d$7tBnE!qtk-zd*44Pz9S8Vk^k7JplMb z8C#GBTOWok(PF5^uw@{&y9}G7f~^Q*OM64u{s8y|GPdj?BDU@f+X9Q>)=? z*mew;v6VnDHm zm|ri#MTV3r4HuU&|@@$)_v!SdqBlF$|C}Eci8AuHPIi)9m+Sfxg zZuxP)iF@)CqCfu1Vj+~OgsBEhn5w~qDL*Dm`IzIMSuB|| z0LOGM58X)k^n}kR@Tm`2eD30PK@VMH`1FTQ0(^GC=N5e2 z3VG;i;>X~jD+iwv@F@hJeDHCC&#S^7x~K5Tf{#7R(1MsXnQJAl2txjxDNU3wIl-{%C|E)!(TvO7%skRW&c3WF|`W`Rj=J zlRgAk9Rb%d$KnnyM;?KNZoU=uOiY^euPLj3O{iT>RQ;k!y?XQU3W-fAT z5+56giH|jCz4(#f?PJ~@Md68S_L3m&-cuH&+tXufGeP>vSmIVa2ZJCzYOj?by>XB% zNbCJ#eM8A9iArK5Dv2>Bo+N={@C-ZQfu9dzVsN6Ju)>amoP@AKtr%Q?kSqq{a{1IY zo6){J9I+G@7(Pp0H9!ht`^&;DD7RyIszfl_{()~j!5oRpPbuOMg*7v(ZqS#3WF2oy ze{0d-g3K523#}bF#Hj}lD90SeUUyCL(YH+T!!BplQSM5@-O|b(iQmbuTuH+&Q|3h1 z&nP?ry9d1}N>6S;f4h^Veq!cw<|?RuR7g6=LIxd+REH zNr#qU5+lk;HM~GZl0qIL8|($>_Vlx5gAXl+rTvx2iIxTB$cZS9uUgX4WkeRPjUuwp ze;^96MNx?DzMEVwoWRw6>4}jOl*w4;ftxl5zxn{;mZ@2sTQ2HLS@K^XC;WP|!Yp46 zV9c_MRSy2=o0S~=qi)132lUr4%eL3V>0QFG7uNgTVitrD>2R=g(LCcXir&jcnR~+m z7N2>RYxR@pKM*n?GKp5fns&@rAK>q8R7}z8~9#&m68WpG39-_ZD ztc0dM(f!IYOQ}b&p8t}+w{8jIAiWs}Ir9IQyXt_dmgi4{!1ZEa7bZ3~Ch`OyC@6LZ zVqjw(A#Oyr(id=iIxypU=$f z>`ZIQAWh*ZISGTr4u_@Eq9U$&%(%;|c^Ilhf#q(Y#|3BosH#R`+ytmR0<_Nci zzv1)V1N#}_lKuwHdmCBF&wCG+V$OThQaB7fwaUoz-si8O9><7RR`@~N60PWY@0#1v z^WLqNO6R>7y7T9~F1NX(Gi^77dv{hDI`172%bfRq@u%m#|Ez)))paPWsG>bE_@p`@ z@VUQJ@w|6kqK){xcXxL{9?zE?@|5f9@`6fc6{DW4o*b|(bE>~`pm@WNt;1TX4#F&Zyyx+vnsht7WpUQFnwh8JmD7zl9c zVi+&NcQeADI~%|Yw{CL0xc9+Iz>7;CIlOqa(n!46qX)e3d;xed?m3Sa!>&v5VnQDwSfytsq$V#_u~ycqFZ zf)|rJ170{jv_C*-U;yHNEZ=aocV{vi~JpbD_-0!%iu-xm3V(8DC32` zgA6Y;rCGe_38OEwcyWKPxc*^riWd_=_Mcyb7wh&C`(h{H1hnG3L*xnZ5MG1p=VIRZR zKkPv9q7cE0w7#&S+&V&cdyE%jH!0UYd?LY%*6jf=oSMyCl)WlVRS5u7h86U@S;l*iWloZcGoY$ zi>LymKX5GIMJ+Fi7jf{EJp?a`1;Xrxw?}xfHb#OM_gWi`7cs3B@nTNvKLjs|wNt~3 z9+;6?v-a=hr2oxzJiuQiy{wryvTJ? ziWd*sD&a-l);wOUyujhb_?8GSyjB>(i~DOByy(-0;)VMPSW%ZCo}p>i7J8Lqyzp7C zh!>6zBzRG>HQ>dbyBuE3Zz15t^yNHWOld{>_q7q>MW6F5UL0ugTk#^qiNTA-%OR6c z884={km1GF!Yp2FgVA$XycoMpgclVHP`o$~vh#ltUflQ$$x+!i0bW>pP`r2qPgy|l z;(Y+j?yA-ZFNUv`;KgP?qwylxPZ2Nt{r(WVc;8YDF9xk-AYhK4VZ8Xdff4TMX8(h@8z(fmixns8r%~4iDSGdv|14_p5K<>#pmXL7gKI>c+t~W zz>D_LJYKYE4tQbKQiK<^PP2Fs?)$&t1+GmhzHeJh88Z?oW_apS^^FQMuyJG=q)+0F zpCp5g7QQmr7@41ijcYJ^r~}tq6Bj0dd-b{-?z+qRIx9p7lH^DcgvOP{YgTwQ=W=d#%<-SqtxT#pO zEZm7DwH)f}J)-$a5!KQiFL9#Iak^!&$7(?MM$^C-18pY^w7Zt__j^5XLNi?L9e2$} ze6=^C3BYWTs~pV!{M+0lsX5etp3h(HeeVq*d&5Trvj4=hAX^f-AW3;VbQhpJf(Ne9 zbW?xyn^5n{2W_=#7xfj!3HN)^O6c#3leoGH8Ei4l92V*F`_ z5wp51G2+SJBr#%DUM4Z(7>sC+N0`YHBews|Cq`V%!zM-~z$iaF>Y|A_G2&BBHZkHB z2)4k2YXG`0>i>G0!X`shbD+5W31nMi+zv6Svc0$|vb3^2uKK*lgsWg>`4ldzEMEe^ z{iQYqZX4i?wgk8zcYsA@+7$PHkCp)UlEyS6A~Qwq2V!ZZBKNHulk^9r8qcncN%{j@ zDzvGYYx}V;NK0-flx%1j=kF}7Hu;U)ZXtW>`P2dr<@i8f| z0QDGknk)E85tgGbS&0hh_dP6>ySMZP^EA(4Ye~8L*NqU+_Fl>XEuOo-6fB3 zV+elYRP@9o7no!^zi6u5Ff81i&sem*8dHmQ{8Cc?s4eUXjTZ*mx)^AiECirkLoHga zibAeS1Zt~Ms4Wg3!*SOI4r=HAg%EQf_`kFHOn|L_v(@;a4B<&E(rY$fhVW7%Fj*%L zQ6_-LK^Bb{VBI-9prJ7?w6I>@(0EO7rWzWH`rQX-rQdy>oD`LJEP*sK41zOFIV+g2 z9M}}!!$SaT$BQ2Z@k&^{iwwjIf%ql;{Txic`*Sd&G9FQ$Ru1I*-M?~Y``zbuU@HgS zfPpS};71dAzx#IfP&p88P3YpukVi123Lb)|9a+%WG}e#(fh*u#^o*#0?Q?w>Tl#6f zgM4)?Kih=#y$8%QuJ3(Av2jkS`7IJ4pOo^WMmjCeSL+9O|7T~D{I}{9?Hzz=Y7(^n z*a}v5fG5s>Lwf*MO%d|n8e+7^75I`lJAD8K+MXEDC587UVNs>Ka(&?!W06%a;Q+se zgacqHN{FL+L%htvs(0@yixx0^AXM_7Q(v&|efYA#xcfX5@t0Zmj%K7nU`qh%dUETY z6mFB7fJ2Lsy8XjxbVqW^eUw72oApy!diw%YLDPJnhJ6PFNkzwIg} z@jpjH-rOgNZC&|07gp;SxkNXfAqbNsnozlitlTk9&JP3I7;3rCBNS3$AtSlaP07aZ z%iTF>B1$n_MwS?DLTc&0n$ELRAEZ3V+lQ^C zdldQ~3nJa0TAL)5#W?+ej-vL~XvjEoQ0$Mjs4j6N+S@UX!~qzQ z-9fQGR`0sJBN1lHIufT~l-5C^Kh`EI){(djf({O}Kh}?`qW)NK%&8ZV1cJF7etCba zex5)k{iA?P4ppRNVgdx`NXTTJFRaFqZir0E&XTwe-Rl_RI#jKr;yUE7qwYHVtSxsP zl;X?3yFXTFJ+=N=-@_T;EmDVvd})8I3v(E`l-eSvK-M2C=VN&s=I%PCUrNGd4x@)e ztM_28uc7D#Egz+gU8LsFmgZSpTE_9cM+s?BHU&L*Hl>?e7aUiT$nP z#m|8FTdkt~y|gB=zdKto_V+ay@lLB~fA_1&+TZgnSo`}C41BLuvA=Jb$nEb$81g|Y zvA+wYePZqJ2We*9r?CV){H*;i?C&!_p}TYBa)8WmX9}4G;GI&mu$YH>!D1d$2SH}a zbcy|4u|}rtZ?hUI_IF}+75n>2b#?oDcXgxf?;KVCRQo%ZPOYN-ozI2X-?!7v1pE60jJTv# zw7*|e=Iw8D7)0&w%P{J)R>A%*_uY)KzwdzH6)m;D$CeS<-vd+4IQu&p1g~j-x&2*k z9h|v7od#r5uQ(+WTOh<6giK2P1*>sZbwnl`CrRw@$CZq+zjszrvA-8rQn$ZDEB%@F z_fHo!`+Ln;26&fOQnkOUv2r6T8MeP$R+D3No$FSD{q1{_!{{-KRPFB}mB3Oiuup7% zH`ymx%O9%(tnOPUwU#3)AdDNeNWuOtNVJ~ZE7;$udj*Y=L}M?R#=2PJ^hL1Bj=I4r z^Q($6?;ys!`V-XbZ}WW;`#UGRfa99o9PCXhFWBEBgLy!ESw-3YZWYX9*`X?cW!@D< zSXOl{i)E9`XW9NXGGD9-!V5m}paE6eALHC)AIO%z3*P2BE(n7`muhL}B1QW&$x9H1gntC+v= zt~77<*r%{&j}}JF(JJIGRQt%9J^4X!u9nGP_*g|``3!qUk*Eg9Mrr>)^B4A10gt*; z7|DOnPw}Y5y0UyKh(7wa!oVSF@zaG#X0rIH6AT$Dji1_wiSiegCDKn*ALK{;H}TU+V2yU42x#w} zi=ur?c&AYW?W;lU~Bd$3Di+=fi&d#p%4P{l~F?c)OCYG{Imp7 zHh?HAMU-8Nk}6w^l|@HoGJZO11H@0yMA7)^vJ!m!bZC?)e!6D85I=ocn2n!S!H+y1 zmFf8D#DPrw)V?Ssrh`$ieTP+s?fauRWH4i5`Y>2Aej2x45KFkT8@}%7Zk-$ z%LVf6w6M5x{M1?y2|8&Ye)^~nA9L_14l#!tg+wfNWFE_64h1t2KP}iIqxdPlf6}Hc z?@#dePl6HhegseA0r4arV^2c&6IkoyE5}X@nMmQwd`_8w6 z2MtY*r~@z1Rx9aCdnP~Mm-clbN-~W>wjCjvgbJ`qw-rMq(*mvMq#O|A&_iG--5O0w zF=cl`%otts6UJDi;5Gb(e}@PJQ%!e{MJnazJqbx&rr#R>D5x6$=*z}G@@EkL2x8+O z`3=NBRuq*(birF}{9`)@(HrI)8~<2K;vcI?{9~06|A>^vKe827x?g)QpAi3ur16iu zxPt6_gYl0*HvUn7g5d7?B>qtjme;5v7zArW{G*?8{9~0g{*jNwKUUEAM;<2r5g^1r z@&S$577@okW{ct_Ssj3;_)v5m(ug0ARywVNO6SDq^YuWl>@yvn|e$1C%hQoQPNNGV=h zJ~xk7kva~q2IoY0b$*^9yt){`;8i zAv@n$_JBR#ae>hq_I#(_AW>%=-#av_>I1S4isw7ijXvM8geEMSnghxGFLMeW{_vEX z1Uw#>fZ6rWhwp#&l-~bxF#3Ea&_VHhr-j2Ga=!C8ry5>#?an~JLC?c61;e(1-uxsfWwQ{ z8UZi7I`VkosRg_^?I^;FGE-T+7_IrO^+W1BVDO^hT&QQ5UAg|LMuryy@345$21dWl z&ek*RC&G(2Hz-~V0of1Pe^LFAVsKxyS$|UhG~JBDi>dIGPuWTR)1olD;kj}B)9%vx zr}jqUg{!?HUO3tRA$Sp+T@5cPb!O|I+8f4;0|9LPQ+oq=QDV2;zF4x8!Hcw29A20h zixCdx{qtf)`yO zw4-U46Y3daytv;*x&G;VY5h|>zzfg0wEk%}rv7PLq5i2IsW+5ET>o^UsQziT|L8o} z|%Ds^WYrW$a(P9+l&hp03#BzE1m~5ePvi%&GR7+*{mA za48POC1`Q?Vl7alxI4k!o#O89BqaYlzxR4S;WM(HbbI(fGZBK;)*UYCv zQTs|&R){Ap+CoM?#>*G z_k%}>h6qiBZb}MrZ^?5m)6@5!f0?&iR*M{mJt>t7Q=!O}0s%BRrq`&ssQDAtPZA<5 ziK0!|HM)|xPSQb1<@UMPK3CCI;|NCfeTO~n^g^+ zIowjXCKBo*xK&BiTXokW$38CfDkwfe?pV2~)pbbsO-VbqTVlIUw_5=ezBCXCZBLpU z_ogQa@02&b1-DcSx2CI2SiSNFT45ePk^OcQOqL0W1DPmQ!7kt!aa3hU31WIz0b>5`DK@_KgC5G!720 z&GxacLTm)PBf3^#$F|n-z*XO@#?4;SJI}?y(~d8eAe|1yFYa%KFCcOc*@cA5&VR%c zU!2*AXubNhJPG~%FVXCOS5sHP7Ih6_6XUjE?q$`Pz*}Lk%vtjz$+w5qU+E67!UBB{ zt4lcl6_6i{#ErrO_d8c!oMS{H{}S23hhR_y&5oZ3X4B6DDY+XreBNxu!6HeH~KlwKGVc?+}85PY6>k`UqT^Q7GGsO0WP z<13-fzISbVN3Fi~-Qg|gL&+H~oR!Jkr1Ln3e@1(7mAHDQ`<`c+_tCP}( zvH2$}Pfp-zo^FQR!2&htA6PoTRB5lI=i#kdf=C;KcxP*N85$KYFu zT-HY^S;$es(dtGm@W){P7)1ZY!V<0BoZ1+fUQ)^G+Fx}Q^*Jn|<(yFJN?DWUDLWpV zjSW!}zQQ1@-!!}5Ja7t1MUrsDf}P7?OsJtCBavA+l~Ff5Qt~Z18!kFOtjXN+z3f|Qrzer0!^yH0dovYV z0y{5Q%>(LRTMqp={8GtA)a_T$LN19>(p_1fz-*-V5r-})+9;L(`W>g4IqoE1kq8y~ z2n7?aWEi+gG!C#V-OcGxaS5^ZhU~YXo@Hh^!44m>_bvewsyl8L=Yg^-#swAcbgbo5 z(`-_ynMR#((>PXtq*)D(jz{rp6r4F`E`JA#Xnz)pXPX;IeYUU?(kE{a8Df8LSfh1E z(g#M~eJR|xLu|If$;6X?ly#14A%aI^FOqtWBT1T#eS;`4MM+7&=uJ9Zk`1n$hk1DX z9M~Km4!tis>Zz)CWxzJs@%F*QUI?>_&*c&JUpxL6rc@-_qvqY(!cmWCKDvV3pUT^p zLm4Y7Jcuf?)SIeOwB4qIjh@0ZtJ=*&w4G_eFw}Yp%G{Ry8N6C z&6RWzNmu8RCTJ|yyE>BI++gf7~mWgN?p6*e(_<7-Nz!|oI@MKsBNAV}l3hgt#ioc2yKlBOdZ-4k=C8d;n zQL~6LotCzJ8<}%lR$4?n=TE0bL=!6mAQoxBhTq$5Jy#DUUT= z-nR%G`CLdn^ee#U z*TEK_?m{J+?!sI`_5`PJR2)W$lPqi!pVja7gs-B`=m|efA6e#p=Kzx@Qe{L@lP9!g zM8~$gfE%xay=B%MkCYRud{IdXSErnt&T9)vNk-ixW$Vsd$t<{v5wR8*!Z`C^q_Y0_ zf?U=4O+9m6&Brf<)m!4cUsz2aDiLR0#uhcu#4yJ-TQ>DGYy(I*)||(OY#r3zt0&o= zg$btTzbQY%4-r5=wR)Tfi?Iojwge89L zgT*fW{m+;w&@S7?+1nM}=xe;)DUjbng!eEVzzzBu8!|5HtxSo;pTKSUBJQt1H#eu{ z3yr&l#7V#gWr!w0*U~Wb>%^fa{<53rW^q60YtOi;1k+56B#dQ=K6RHK2-GT#07Xf{ z@&gbDmfR5PIOFWf`FO*tw3baY@U`uLt1!<>;ca`+d zIuL&kvKqTL=06amNjeFlWY34YR`P%#)c53k(eNwr4!wy-_^mT!5kFl)vr_JGGeGum z(;3$69a($0sX*2dnT1X)rZWlJ9KA9(rHUbqF#AqC^X#Q{{rqSWP3rZb>4hgcpT(#f zJ5{1`&#?Uez43_K*jc#~}>d@dXAI5yub+m`$Da`ya4 z+2`%r9V!V6v_Rl-<4)X_gSEo%G8wwL6~mw2vj_2Gf=`q_2l$w}za+;F@95yV_YbQi zO#PELpJ#E;?WOO3y+o5TS|{H+Q&mJxztwmDiSPz*JFckYr$7L7@1*K< z7w9X+)z0P=L&wvs%y;PP39t_n3K3skzP%JVVWD35=p);4Ej|V(#}__6K^#Iwh#uozKfH8(RKYsAp#0|W@9#V@y`H*Xg}xnp zFRe+}@+wjr`a%7auf88UT*qzz9y!H#KX=RYI{w9d^cbKK}+qABSuz{P_(>?DYQvzlzZ*ze6&2CDKcp}!ZvR|MsM=!m=|Yjn4x>SF zJewiZ^|I=5ICDoCajbnoDmG56W<$TpnkoCBMF`)PP~Xqwvh_+8>8(E=eQ{6hMNZ!; zGPIV#oqeH^NhphoZNT_< z61&fYwF7=t^~0hUW0NGpG-b*+3jv>IeHo7QQ|!3vlGOogmR$PDxJ+H;J&78_D#}vZ zVnM;I0ED-0U447EI-$Ik*_??}LLb`hnA{tNTJ+7!dXmqAPI!WV>eyRPHs@LbDMk31 z0R>;ZH@(0{_QjW-iPXHK;Zr!75RwCrE%&6$)g}S)5I*;V zZO%yo#Q{_@<6&o`!23kNQo4;MO~@0p|Q! zVp9L+aF?tmhv~q|TUN)FEwaj6;eg|>SUQzI5k-F=VX9ZKw4ZCfmSx>FsYIM}5uS(7 zIA7a3XxQcQ*uitEDG=e;PEAat20#(7arGe$=ziN)q&zoxvQpn#*52{lVZSwI8obr0 zyk&GVUW_z893%?E{?>9Ive?F{KkG8UoNmD!`FLJpeXrn%)39$5y<%}WmK6=XV z6=e!qk!1Y6?5>);^Jw-&bid+zqS|7&c_q#aiQ2q|+l3%3^%OL3W`2AbLc=k&ZeM7-t6EmC+2e_ze_)3W`JQil}N5?~JkUx>i2 zCaxVt$CcXUytEm#KE)fd+gvou1slgEu&l@{6T+Sr_d>=(V zaoWbs|Kd)t-Ofd5fYJLNJr+%xm8N$=&kfgX*A%MxDEIoB)X+y`C>e##q+}|>(TbAZ zhlXk_jc|L*q>RBBwX_BIhhcb?&FnVe*6>9Mur?6QW;ja-wscN=|6SzNgb}pHs_wF@ zNxSZr<)4dWY(r&avHPyuD}}aMa3;vF+d8ha1Lno%MF`DsI2#cSxgM|N8vn&P$mx|CgJ=nGM#Ovh)?M)*_vs(eBX&dOyp^r|o5`9y_>??dss>P6 zD(grHrZV?+-{U<;M7m-jdzKly{#x>h1~F}OHpVz*($QdV^9Sm|w3zg~*yfG=1yIk& zWVy!}iV7gV7mkS<(=;-nXkRdCExbUV{JS0nFIHUs|a`EWvJJk+fQd*%J96t zVw^(`JJUwWBe90)JV-*16%9<}+EK~YBxid25pnhNErj|1h)ueQ68zegSp2d;Wbt4X z;Fdw8SzMUMj^kHUQMeU=Wl305K|EY=`6i%L`&H0{2~qZ)SyBm0$gpF;nb^VPE_GsC z>>r%I_@kpBcO#^OzIOWNxt>A@NTj+~d@I)FaVBLgpd(a(k%Hfgj*+YC>XEKz&jvzf zqgZZAon`)F@|8{sTp)HO(>|6;yU}a(HSI>`0USv?9!&dJvH)_0Z3&}?B!a2AX8U;X zq`CgaJ|Wg46>nW_`De0U-7!?NNDLe3(#poZ*w;)IX}_@?l>9`@_kq}4*cJ~;Jz0(b zh*YUMa+y+P!)6#og?@c@#+~004jrw3c7DVfa)y-uuh8#2D4kJw+sUp9Del3;$;}R@ z%!VyS?1Ao?o}CdtL5)=GAP0Q{1JIJkrzf?~DnDVKsKKrYE}_rP`^%7K@O;<>k^0Rh z9Y*2tEtbqK4pv+^2gf1kjpFU*1(K}#b;+}Ha~7mo^AmLSE5b-a2}5GV!lzW2rx6i| zJu&SGJ0^+{Fof5a(Or<&y<>p{hdgqb(ARjUcbj*Vy!!$W{89G(y}j5*wmol~L{ZIC ze6M-ms<#CsPFGeOBc^i^iOU?1HM8X{QAHm{I{llr5oRsKF(=co8F%`uA(q51o^ohm z9VNkui;Yqxex}7OM`m4b?snW1R&{UiS*K}3@0U=iI(xQD<4Ic)7$^mEc$DOvPLcKa zMSL-fgzQ=p2|^36HK`<-w~jWk;@`T7{QKHH^FXsU)LTkE^}Cohq0pukc)im_(%}=1 zo6slgORsvT|K#a3=UigV-J*V7#nOFw?oJd4=!;lk2;W>0_IX+li0F0Z7gdp@1-~Tgk#=)|k*8lQ3A?SJZ^+mTy@5RGFdq0z-AJQ zKQ86%8LGGptCe0|P0<5xi%oJ0c^k#uh$^BArwcGI+1@|kQ-v?!_IyEWf9FP&=YcPd zv6St$)^JMOueM&&ck%a44@umTjHdW zcE>7ZewMSqRcuGM!E|jliJAIKVHYjecv-?qxZQYxZ1q(#t|{?SMEX-Q&4mx9g~-cB zWoy=azhF*$oYCF*)w|~DL@(JkAM~|5p|q4P_grN^b306?a|3J}_W=4?b>=6MRz+U{ zo^=$JO;r^IP(MDuZRu$dOgrbt>`k$F{BGF!?oW&DI7Kqo?8&8{!+GrLg?7U+-;_vI zjP1E7qb&nUBq&V?=H_p9<|#fXkKHJXoAxZ~v&UsHdolQLzPSyce}7K06m(fA=Hf36 ziOy0o&wZbavQ)y0*M*sU`izSgmm6wJWNnQ-X0^VO2|k*&P;jSxm&eM=&3K{>8INHA;m|8>?RrfhIzf&wO+{nF=GAR zdc`&?`yR@FYW)#w!j*lQu-25#n4U!rbDHn%sja;-RwO5r?2loRlnUt4J7cQrIvZIf z0V$Yw_(5)Hq~@N`rbytd`!Lx;V&k~uIs77Y6JF||H?LrQ;9aNzF0S?m=y z=g!f7XoHB@_o&p6Q24sg24Ro2&dxDX{B+-z;<3TZ`P1|v<*UoxdTNU~X~GvHItmky zxulEoWU(u$yZ^mz<@rdlMT$)%OR8#x|*$m8o?3}74QC;yy=Q~~d9{Q%1q zPTn`^=TqWL#9hLE^}N!2$TdZ*C8e(BKaGvn_lyR4X{iq>u*38<*BqiqYK5x&4l9I1 zk*>UGDNE`qT?<|C$fgs|T?%0Chs~)R4U$p&22xX(>zDpT!PV%Mwg%Lp#dK1a0bRANo2dLMk&>QKQ2SN}p1e!p(TqHn03~I-m%&wcW63@IO=jWv zdKi*A%YkugATjAn;V?srYZ}wG-v3t4%i;4K7ZQEv=c*+CI3WVy!Y;$rQd~L}@LUS@ zIkGFW%lzgFdeVmZ0pR5vd1U_&z!k7gFXQfeL~x~q(^4sX&$?U?#WSmg<(ZUmg}qJT zx}nLp-|l%0GkXQ!orIVVK#A-78qijdwgF?Fnhcr>M?v&8T=h5)*_|7l|_hp$S|vP zH7-7*h#OwCO`(A^OZ9bdtjb5O8yOJ#Kigmx^ltPm6^~$ht6bcO`;K8A8t7Z`fST1Q z5-#NqEvTY4Y@YjYLyGvYl69F&y}H;0ehnHhGd0pD2fvFgS~r01?RKK6UgAeqNXX(O zt(NO+MRrucnlVw6%Cx2#RQc%fjuo7`cz%hnOWu*arETPiiFd6GlSyC?lo0#Tf_@|- zj5h7MNscdeU{5cvKq-tv4aoa+l!@7AfSXC|`RPgD2tS~&Bi18eo2#*^^18cD0o|k+ zt2%;*P3+*$)j{$_OEMuhv5hn_Ny|O8{uZAeUx#4-l@POZ_o|53dVnEpO~cK0W*3WY zjTK-BgD^=ph-8OKH;8ypT%A{!Gx)E5&L3#5_BO@AU4Iki@Wk&Iarrd8Q`>yO1hh4~ z&)qWe3UfwNeepB%@1rrYVILH92#>?#!C7!w_=aUKk{D6{*EiiE^88?%`Rnh|pukoC zx6_6i!B|RIN?_HNqQ9s_(>S@Qi2qU)5vSk7&j9_d7W>)ao)I_7r9uN`pq8CZhf<|6 zJk*kz%6(Ae$C3lx8$Jhx;Ok>BDOo;`8fzJz{YX=|Mx#AKr&3{w*pNo8S9WA$KW$$y@1SM248@~6NX=7iG zt;p{3UMEtxG`S$E$PQI&^&kwOnlZwt#^w2CXQ=-{FzIeDr6%YbfQ0+khR4dA20#Vk zZ@w(>g*V2?8tcem;Gr?gVNjM|%h?a9y5LU z;K=}BZtq$%{=r5kBtXclTeN^!H6W4qKG^caNGPmK!!4-Hxl_UQ8Y4=8MQf|(v(2I`V=J;4QpmjPU8 z)H?mtN9Iv!NA{rhfwE?>BtK;GbLm~UJuKSv;g_U;rt?GeBmM(z`gsrPcEy)VltSRL zz$3o(+sF&X?^((=g;K-CtFWJ7G{2B-fB#^@V<3?VYYDT&K&q;GEhn$&^VIJVgHyV5 z;P+u$ajApEtl5At(Fme5Z-b6K;T#)M@xPvVoojhf@2SKspCsBHoaDWs^vH)RK2xKP z7a@|Fw`U)@MYF-?nMsE$jvZSP;8s?6tLwd~dUu_SJR1#(!tZ%sAMt>Bopls8HVFwb zo)5dcGKVXV=kTUd5yw6cxx8@n0fDJpr+6IpVTLXDX#m{qW+U#ayo1b)i->Xg93!*+ zj2d=(cC72~Z#w!hXtS(D?rOD!0~3Ub16c&C&~IazXruRmPxJUqRHftCc-qc4nSve-ez`qJWcxb&pfDXCPiut&pd~waynAM z*E?K;F`t@7;qCrB^MDnhD#$-!brB;#KEfNo1EL9)^t(x58Ph0m<<{uBV1(!`&p&lI zY$%c6q+ye>FJ?N5%j7O%MnS)$bXqBlR9c4JL=}0(0))nsEdD9*VZNgXcKSA&RArl; z70skyMpm}|nyeQSm(mWlv<`R1E;-3{l-7Z9dt#nCzj@DehnxfJ;J){qdJAy=nNScZ z<<7o$Z7Y)&&pSUt9G)AvH+ICS2%ZRO7FLuu4J+y(;&JQed;qQw?8^1sG{8pG!$|j8 z$j^Z0lMm7>GS>wta6}3o=S-}0^tCzTV9Zkb=&Qzw61;Du4qL4VI1T+)xVs_7Cd`s_ zOD?aFp`+#<>j|(9ep;7Ya1@qFY*yss62Dc4%LaWP=H_P-9tN{J3=*Ee2I6hGUfXC= zqYs|hxOaef^Cq zl$4Y8!%h^xNs&|1w%qm%m&sZ1456$yes1s1Kpj32PgRJ+GJL|6GeM+wi+j)|jA&Ax zEp{z5lkd_P_1WAw+XDg(II`YfTw-Rte{WVqlIjV=J?%3A*%T%c5GU>rLB}L;c+^r( zPt0jH95yr?_@={lcxyn&3x}sogO`A(;2WYz>R&|fnMSb$(n{sw6ZSK`-Wa}YIGD>g zr!S_E@_N4%{l`_owAWi6A&1}Id@e{8rDqXla_j#ht_!3GW3r^RQm+csJkU+<*08*j zjKlk4PWg~ba?}p4cjj5TV*%xS|_4u|! zEEdlOmd);@mstZyGDlRK8k!{+E%=d$UGu}=lFr$zzB|<%QGe>UwHN|~-9OY-*o2l5 zh3;6Ew_Ne8>jq82ux&taykbBopAC+l@bDBBj`L?x_rzS`)M^e<=hAw7-O=#THRY8C z6VHvBD=iF3=S*5;OcwtH+n!ji(RZ2kr}b_dF8)mJ8{OmWkdEz9-xVL3o6l)Jw1w3I zcLIJJH9m>G9b=P}#WwyMrf+=(J?$2~|M|Vs&GFns<~_&uEVKi?=mK8$gp&OR)16o+r(>UR&Hc*pEpi>&MNK;O{hsA@iHj zU>*URz{bPw9*yg>8rTJQ5#bE#oo`B%2>LboL};!pLx(0aAzxr6AGmtJ@EKYT5~>F~ zyEBhKV~kM2)pl>3U};8-t3aR4TQJX~*fLPZGx`Cb{LvHUQ#mpUg+spTVVOP|m(n1? zI(Wj|n$eDgnTT<9_y``M7`J(8w_TtQ)x{l>s^EII0XvOl^Aa~?- z$+58)YF{Uoau|>({BGWO-|>KM!y2A8A=xLzXA{qw18Hb`N{c{4&cMLxmsa_*8>Y+s z*}{jWwNGrZ@8T48H78#FWL%Gc2L|!)bFLk*&TIzv{dnH?)ahTfp!U7ZbnzWnqULo@8o5TkNOLN?U{iB$|iSY4Z z2?0fi@3I1k?rMbvDMZ-EfX>B20WgR9Dw|FT9fP$=-Qrj;9yWc3#2K+wPib;mp4KY? zJp=NBW^^GhRJ=Qc?NWp<)A!G4DD@*ths9FkFRDoFtFZk0=RgsZtji*#UEExmr4sZC zQNQCCuJ#;2{)Fz#y&Y~HMV%DqWzao&>zm4{ue5a?Qo9*t)l-dQd#3_!2G&b9hU6nJ z^A$n&tsO+oQZgCQi-*5t0|OoaIH$Ke)-x}69+pdo(SOLRH44u&5)orxld%{3+{NX< zRxg^*&o*>p7ILO{D&jQ&w|_AV*bBZh$JNN1)n|3zKx?(3%b!He6-jc`GL+q?!T)g5 zqu=xc-)jl|{=@&88#WyOj&Cq9t6tU#6!vbU;x$=Y*&O6=grV|DFT{x8wZQ5@r9GqL zb=H@CMDHJ)A&H=S?U=dmcipoLrB|}g<_BM$K(g{6ItKx0`rrw6B=#O(!hjEtwrru2!z1Er6hP?7yT*DGzSKNs!z|O%> zqWJr-Hud^VFpdZFLwXeXd{*#OMaVF4b6?}o3{jEU(g&8yi5qVm$(~8A^8Gu5Q0T^( zB?F6$gq)Tu@=vtvrQ|3VBg=8M#hG-y)Hu}Q;AqQO^~6wVKXM3-`Bl3}B_F1sqHw)}Id8*&%#2(yGp=w8LkTEMd7gr01Xj zYWRtI$YnkT8$fByg!4PAsR+07e;Rs#Lq7gUaTlpW-bBVB{(Rr zQtyHr4ZZL`fs$->cFVUUUK|JVP@HVbRnixRQtz;G-{)Q>j_V#{fTIxQT&5o9A`C2^qV3E*RH+T(F=!^xA@IU|AIc%gyQvHdJy;h-U5>9 zc&dsgmK?a8mdO0NHxhe&#btmKdfBu$bu>oTh%(q$&^fW7If*${iVZtQi4-D;#$^<- z&9>!UgG}+|4goZ?D>(ts%@b_K43W5DpBeslQ7qaQ^qgL?DYt!}1%IUDXDWQd(f00F ze3vsABnn9R!&4URS@xG|oHBJ=g&VMl%RV0LL)|b=Anqb)FboH#5v1BmP-j-879 z#NJ9y9N7gqGM0ZTY4Wp!XF}Gd>27JV!1!cCS^;LAj$zR$pC;R~qhKrlkh;J!YCV#A z-#qvj%hoG+(1+SP{=Jd}S1`Y`Z+3hp<>&7u`L>cj+ZXxQikIfbcJy2{uamVL zFA7|P9*Ahu7+(>DR0S1e@ri^6_pNqLOG9lQr#yFfs=NXY~K=a2honrOP2H9 zzmRQAX560}@#RJ1$ZOYXolUKX$2v<8E+#ul)Z@wPG-@49wU&|lbv0w4l&{P{bEH4X zzKU+X|MPHbhF4+tI0kl4k3r&Z^+X=tn?_S+fpsH)MbD}TrHe0~HI`+ua#mJ7zE~C> z{SKV`t8Z8)Z39(0@rkpv-`$E7we9x z3m+{Un^r^o;{H~EqC^iRZc6J91#Y|o#cPOJTI)op&O@NkU4tk`$M*nQLFS}Bc?>UM;^Amr&9>pm}j6_?YKGQ@?^@Vi+s0w zD7H77zoZTn=$A7NfUU^RJLAe9l02U-$U=ROHi?`sf*dvg`_+2Lz|M1Gge*@Pw&9NO zl08u$!q@xy-_g*Q_-W~WfV0TQ34nBRcgvQ>Cv5QPhA`Ro z`tP@p`=Ttjr=wIS_9wV5KNILz7<;#*V2KP|pQV7@zt!yknQ*Tt|D=`D8Ub7qje<|F z^IN$)%&{(-g+~)X&|QYzY7I(-xKjK=xH%&C4d+QZ4zh9^_hf!+#ZmQAP4XfL^UeEK zGxgKWa5SjzIQa$uAe_DzaoT@>DOLN~m30pYH~q#`^EmgK%E2=+G)t{;3@$Z?4cF{^ zvk)45;fYmm3V-sw{9W+m+b&PUJo|xTL8$!t{zaJn5BE98R>Cv4(+f84f7Z22Ql{u?FE_nRFxP&GNko}2 zYwFev!1aXl#PozxRY4218)A8KU&v1mkQP&>@9MIfua@5AxDl?0jrKmeYx%%*$e34w z+!VF$(+KjLEa1xlx*2HuzWm`YM#c598|Wzk;vnpgA1}HBcvguF%a=A$DH5Iaa7=54 zNm~T2j07bOo`EPB_rX(kMSNfl8-^9&Ora?(O{1O(JmneY01FU>TkED6N1kuA;T=E! zSO-or*44qH{rLZ%`OKZ1eii7r_P@=20Rc{;2l(IS?t2uusSpy$3T9J>r$pZK_u>Ef z!ePU#MJpna0-kbg>4kC%OQakc`GZ!*pCAsPm0|h$b6Pg8r+ zRyQx1D?$Qqiq$y|&0zbh0L*+Hy28sbnSKf$X?ty_sBwas<4M?#-S4?CeVuQ1NbmK9 z=AX>^Y#`SuTuDTb?LW6i{~c161R4|hC!y;Rt<{k;tvZS$#+U(k+Q=sR>UT%X^+n&1 z^hGGy@}){}8(`)Bpddsk713r!OY|%C#iR3xlt809J^c80%#(b)X$>=}aSe>d{W!@h z1o>p!no%|H=G@k?zw!B>o3n^rt8i-58s%gI{L{E*kIVTrAuocqJ3YrSizu3ooA@uO z3-z@WHXmU|j#_xBGg5N);@GmVVX9fhOkyJ>(gZ^!D$szuzi~1ze4PpyJb~^d9 z9mE})G;$eBTZ5GTB(me4xqZ=ggn1e=uSb7UnB;p|^IhNrfC}`XZLM)ko&LOy!DTA~ z3_NwcdPpTl`xY=&;93qcbgK^LJT4Yr?9sUUq@n8e`~2Bd%2i7T3v=c=HsZ@SwtL<+ zh3>peQS^tfeUvk^iUFD*=jd0wi=S~r%ccF!%Ntt?Pe32LjrzJ=Iu_g#vy^5(sOp)Z zKHCnoT{|>OTSBR_=Q)IsIta;gx_%WW0CB+7415@ae-%NN3}_};g_|> z_Kq|Yl3mg!Y_e?IMVDCC7zg5A(&x7$4h1hB%TEIoWYmsh{XG8Tat4PH_L}n&7aZOC!)fMqQ0Sb#s-RYX4z z3zlvSporT16M;H1_7G3620T6(l`Im#HNq27S`5f~8ekUq=j_yybR8pEhM<_op8oW4 zH<{ZGV!kY32kGSpX+q3L5TpXlZercv(BAjG9{iw;2F#21{~F5*Ci*Id9YL&PM^#a( zV8Pp_+H+L5A88ITm#u3Q3FPxZ_!YCuit|;{)W4h=|9}>a&4b^)LcK zn)X@WL>wag|(t%K|JQC3_!QVRuZ^WU#VhR{L7md@XH7 zYSH7GvgoG5f%N(61X!aT+#5nJY1m*&B4JG$+ohokDFNE^9S93Ny1|YEXtQ8@`d{G* zI*)`s2%j}njEUg?OQ3VE*s8C|ukZtU#5vSoyYVt#e)ia&NcSrhZ?tN#yq4T;U_j@} zH?r>X6#*>D|NaZo_osyi>GwXugY@&=P(`(#UAzjew#=6sdynbiQTj=!Qu3DZBCj!B zAJtC2bW&lIv3Q46CC^ihqpTe`Y-D?D8=61}Bfa`}%B{*i4fv*L{~i)7^%jft>fPzH zg#JTS+|ii6EbVz8TNmowDL}LR&YsMpfmEGXna)N~WX$%Xj*t->PwaWfkm1i{sEVmz z3WS=cW7Kr;D~HTKJRy8rP5>*}KVsYgHP5>U73Pv`TA4x*y+kIc(>*okj?F;IQU&e} zw8?lCuNt8MN5Bo?xajo%N9GGSVeJzqWw*yht#`Cbxv-|FF#fy<-%KjT|1uX|j9*Fg z2Y=f{(;q1*O(0VsV6yk06QKuRAK=w4^cik2;K(m^bMAYVr8frP4!t2=f#f47NzG75 z8WyKuj_h`_+b_57c8zoGWG4EMTETfjvJ4jny$jBU%yhM3sLwu7u zUz4^Qkxm1ZjA!#DKdkuv9gk&e&thUb{g^74%s!To#!aK#T%k^=lIo#I0B+unt&5g5 z7^N<&iy8Ka%oZl1{UxKBoaUwf^9|K6FDAo@Bof*Sgiew|*YVHOExN^gDE4cTL`@F= zc$e#}ewh2sV6Mhkc!hRm=D(+NXTfx_<#P&mvrivma#N}!u_0*f;S@EQaWC$9a7tAA zo;1c}*c$$*C5-bi@C40=okre^)mO#`$G`AAL#izU$oQ;@aA3D+VJ?L?f zpZN+mL@D5!ehW-;Px{;?)NEj1#MtqE!|&JidrMlMV<$XSQ2yv1jYkZBrr+J^^PMB} zsCUK>)4j^LsO_Jz8guOgQj()Fn{Teg^!+PiHLAZe`%{d>fDo?R^!>vmpet!tWkBX1 z8q&RyzD*t-`Np9YdWI$@4Epez&zIB^$a7CKTga;& zSM-+Rij@nT)J~qnwpG<5%I9tvM13LN!8Q*JnBCUcUmE)=Fj6h3!KZz=X^;jOqPE`q z=B2y8q&&0?*_<4O{5%(7ylYEA3_KV3JXw9f!}TUm@-=vOiCjke`Cf;0E8AzPAL6@{ z)h+6SigegwoZ=QweB-%OjD!E=LH=d&DJv78z&{G5Mi|Y5GU|B#Le>;Ai|nq3BPNzg zlArhr9XP)7Fd)9CWxuZdfYV3xbNUGO#{6Mxu%OatYZ>5p z^<*Xh({VxqWa7iIy`*rZ9RE>6B+zlgq`w+_>AFb23B(T~A(5SZA>UfsYwTE4EXR7f zUo*@D=sh9_O8)!UU(KhdANaaBi3c*Vd=`}45xzaG;7>(-MEO{d#Sf~oRd{NoJ($o5y>?TIz!;S*wBrA1EBcXV_<%BygDuV%UfeHvfZmChv;ilVd>uLW4SVKtVrNk zF&VDs6(htqoOBa=XS1GtFf{)?E2Ql&TVM4x?~a1dfcMqI0YPA{VdVZ&4DW+YQ|wO9 zz|GiBkFc4op%4Xbpa7)sJuPhS=7$BjFX_0mRPkDuBm@>$zvZe6*cKITE#SH0)H z1302-xpDp*db_7nI$wL6ke1m}!NmN^LPwTZd)J*{chzBl06A{e?48E`TtQ&g-dq`% z#>JJ+{+!AxS*r^`M~b>Rz=B#OG0LXt8y-=2&D;OHPsU)6L%J9br%$j=g{AqX6Tu zJkqvxr&BKw-5&1@K_1s^%~UptP~ zeDjsBMt#qN1I{&VoE~d`=~4l6>^HF2VC+jlEk+^BdtIA(>bM1R!N0YL^4Lx}%)t9^ zh0AM%;F37X(1{O1wR7%#Q`N zJ<<$SJB7lW z&OV}ORLI;)@GUyzUm}}|D&DPqp!^Ddfx}-_1DlG98@e}v0s9|!Hqntlc}jTi|KZ0i zSW!6E%7Z@E1lu%*WBWHy-}UuFzJYjeAr$#^+e>3`k+;s{0y%lehy;AKzAZZ1P|pGg zhA8HFzJ0oX<}z`5jev{1ZmvAQ?mr}ulQYxKlAJ3SsLO4t0rcWD?|iW2D$0iZK#BG! zp8C45auEi|zTIK`D51UrIKNPTY9!;4Lhr}r0GI2mp@RZlOrJbRVnvG1s*8nFuTIsl z$Es&|A6$Mwza>_V1HNL)BwRti$)#v$0tNs5FkA9YlzsrzpT2y*(rYXa{_6Pmi)SZd zwO2^ZX+(OB=wXxmnV5NA*w^M3tMRJ2b?s%3nryN5CO0jcB}1pT%Z))sEUybu_fTyq z>a)C+C!VpCVyBbq%`^u{bFeSO3;Pr%^f?MvWwi^!#=1JrN_Uf*@JNV*nH)Yf+x?n5MHwnBe>y@KGn_fn`+?+EI#G4JS#>!22EXA68JeZw z)bQIHn4`%?iBHw4S(3WxHor6>8E`T8GYZB}fgCw#({6RW*`{bw8O#J-rD}56Aj#CQ z;LWG`=_m_%Ym2kX`qw5ktnp9mk~xC>#=t1_uMzb-Xm(t*7vi<86>#A<4k>JZ037l} zUB4#on)^$PF=VYXjoQy1)0&I0%0J`P z8)Ia@F&eS1?0vOFL6b4oJ3YGSRG@EfOKUH~5Y8~jM6s~a)ceJ2JMzDd)Yjw~;Z?AU(>7?XW0J-{U zSLN;Gebu>U{rXnGMjv=(y1KB{lOW#U59_1qL7;HjOSud@z;px7vsn!HdVl~y;$;t# zVGT(2ieLisTJuT`+Hzxn(rA_a)_pHpdz;Lif)>QNzp8{qW%)irW$?^*RWAH%LR)G5 zDFvyAXYPS{&{uG)5p=aHgQ_O<$izyS1b12eMM&!`4~jV7d&~o04#r`A7w$o=7nrkmrCiNqC*5Eq}jjtb-@b?5{Jf+h2zQ01iAoq;4A($F9vqAv;VQ9 zunzREQ{q2fu@ClUg)hFc&pRl10zO%J-h%o%&`%R}3fOD!jh#E$Dzgkw@Tk6QtJ;L# zLcDvqsskjpNB}M$l8bFSV(cqrG!23QCrVqndjN4iF=D^zWb&V2d3Pf8mR_FpJQ%Ow z@txFsMlW>Y$mT0l=PvIpMIQSr@GYk9B-XI70#SZKPe=uNk~jEQ|4iVV(?$!81^27VsJ2Ym1g_t-UOf%i0%5ei@jE6 zyt>j8uCH|=y8ItoUmg$D_x~SCmSo9RvV@AnShAC3X|aV6;#xu(q3jwa`>tf)qoT4* zk|oQGT`|Zymh8K+jWNt%+~4i}d3^u-{WEjto_lBJ-q(4(p3m3oJnuP%M@-_&*ToW) zmd$|>K!U?b(Xsu=wOtH;JB1}#oY>J-zQ;x8f+jBPYJnO8h0Gr;-AzeN6F)R&60iSb z5dyfdl?^+b3f^dadge3h1r#jZ^>4U5dQ)#Lf9MKf=D;(bi-=F_&s@fBR&WIKpFu4= z{hlz7yK`CRDA0+)D7Je|oQOBqeDYMC?np)F?S!v79kkF%_%cq7^cu)c=O&ckWzztc z6zmU-O8qQ* zr`)t)>7%o~*f)5*h!gJ8ztpF`_X|z7oC|+jd7{YW^)*v9M_(VQ@|N=PxwZ9!-}iED zJe1Gd;gpK?4@wMmz=t=7)39zw>5IS33?X#6=XQjo$!vlrK>q+ zSXdgaKZX;&J9d2Q%CTO`@Dy~8Y?m&ZlOj*o9Oltj@2yW{SpUI|$bayXKO#y1GCL9< z%~##x0Ly5teeDfuF-(N%0^K&G;{AC{JLG`s2_QFANIWEnKB_Ice`LW%dDQyg$l@(u z%3H`k1pA7aUEh*D*k2qe-sc1*bDklG%Z9fSL3C04ei7?mz--S#kZW!Z(?GUhgS}rz zb#VXtQ0pZ0U(?lppHSy-_Rxqhi655qFyEWU#9Ytkj;x4~gLqqhc2}=OchjhF119j- zQSv&%3{0^f(v@yng}`NP>5svW4mP`?>M`*T)loPJP2ORaIgP9)*Jxv-Gw-C=YG}{P zt@Y4eiw~@Qt@5G#+WX$mrcAtcLrt`nI~H#isiqX4R|Wbz@I2|rwZF^|WZ-1tA0N|x zJ<1AF!-Go}OE_)w6^CG`@72fNzParc3E(`I$v%#PX2I(Df@J4WR~byXrKG1}*|jF+ zvtA!_h{CYB9G{?*!7P`%?xVPgaBJN$MV<$~!X{tcWX!7z-!!45w8wJI9D;i~#8mZD z5>mv8&0XC4#xuBj%H5+^sZFRubH)qZ=MpYEUBE1AUYI{Y)_fk!!Mq-qG6DcJU6}s}te?wrPs_3lA4@KkVcGhU9!b zs(a2UqIk7f787||?l#@a3o|(D#f76fXhL>Wf}>J!!g^U3iu#gvdcjI~38$-<;qR$D zlQZfmzO3(aD@U%frU?}h^L?=2A=n^>JB6x~a_U#ga7S0s9{2wun(m!AijT+#>^re; z5z{@ZxHx5!`3#P&uuA(!6KaDup|vZtBYE)Cg%1@SW{viAJmNHbwfdH|eX+OhV{QmR z6o5x^7UvG}zPY9f&eBHsMPp)#{V17Ul+3_T;Uia=4Rlne^W!+I0XlxE*)Lyjsxfj zuey!`^|i=8b99k_U~}|g*O7{~$SiKk&obB`w1QQ3!6MoEWw1eH1#3Vsf4xmFs#lRW zxQ8aP>0CCL0Z3NUVWjxZ9@Pm=rp)68pmgTB-K#_x(}Y|V=bQy`lOwpyF<%C=RADiT z%lBP7I%qS@1&qd^3I|002qn*|p=@UQne1=W^C-E8iv5PEKsu}4g39QZ9eAaXZh363 zEGCV=g<)(0I>YMn;!&UjYby$7{_;rWYx*_J_&Ck`7O=1)GQZl!q3ySjH_&stYG0N9y0jlzp}dwTBE zOiR!khR$Di6M@s#apbC3@B-WLWLeAzkG7QZ`5B8ln(h?z8M1su>H}B{Bbk(x5DoMt zLNM{#r-)MZlnRvyCfrTvA5Wg!tb{5H#u6>4`2fOmA%S8nD#<(?p!yS(*fc(4QOD4S zTzA={zzez;O_p$7<{ZIQbsal+jept9QQgk>9AK+;R3sD}*RzGqxzVWgq2p`oC@jBq7?+p+XUd$ORiuO|3<0Mxx8#~LJ zVo~z{*CV;7hYK}$iTf5`|B0e0!5r+coiBhu=l{e5na-Hi= zo?8ip;#*S`&olEsCor4#3l4HKI8VVmK!f{4Fu%vOIb4%n8ZiGBmIP5Bt9eBtys|rm zrj>3cxCG+dt($C6H6wr^#`ea1$%2Os^B#$eiAB*8E_WTdGR-j_IHvOkPcn(5K~`M6 zVG4zHOw$gY=3jyn{M_HX7j@Nc{be5D5_!3sEWdrD74^oh=_{B8ctvTd7m3p}p%kZ0 zgQ;gwHIdtR5&8RI8X+eijCd@cZ_TdP)Bw=DMa_bAo((igRa~0Y8 zRBh$%!St^ik#-5s>F$DjuST1~_-BJ9mT(nl-Ca!P^$jE)YQf)0cmtX2dJX!szmpwa zx~Cp1hW?`bjXaoUc==2Q%5W@=@_^HeSEwH7%4_0ox{?@vpJxb26KCrVvidX(jY+PwZXPmlYh>R z$}1&($E*7{O1G3Bv#|^urJk$6dwDR{bKn1+VPl$XHcB%7u2P?O*W3li@|%9tNB28N z{k84Ys5i)K`8N;V-MjhxZ|WlEiP_EE;j|>8q50w&MH7Hl5$vF6q^yYssQZIAV?R&W-`Z-p@^ws9XzhlekShtPTqqFLjn|6)8hP+$ z`1|eX&&%5D;`SGXa zZl*A_Vt}~Kh^Y>`$mczAy4VdZuwATOlD9Ss*Qetc=fxyfq=*r~{9idC+xgcg>&3rp`%N!xe|{WW?ljZFsd z2xoBi+X>68$Ch4HklW~)!H-;>SrZiA_Mu-KO;kc}iukDQ^D2+;MKZ1vxn4c8T#6!= zWuTU=&-dZPFL9uIBlHFyUMQP~yQf8?lnwmFbgjQr0yWlAsJQjQ|ZYn1&n&v%n$s%^OK z-7eWqaWC{#sOff$zO)RlsM+`0Iq?<@T{L|XACz^Ew?0UteRSGRn^~>pPRD3iCP#!v8y zro&hiQ{r?ij0Nc87_Ph{ivqwC1K`Y0z7>1XWDXsg1hvB+Luz;c;cSax@6OH&~v-N)_D z?<@{W*{3_itOMJWj>xCwVa{L9jtsgR2t0I(i|%5M@yw;Dz7@@B4cBMi=ynRvojKsGOOC1Yrc&cKXPRo8eUNiN6R`p(rb;5 z@HMtl4!6%H^e;Nh(ao}c{WYYr@RW{*P2*HgvP!TG<=ISZM;x;jV1X!-P? z$a746DWCp;O%Py^6dTLirrwzj+B`Ju3n_h%;(hT{^RBMN*XnLY^9jYXnfXRs<7yu* z%bmkE;l_$nr97qgPffRc9l8_Y7`>(xnK5?KA^P?L(QRFcb*nlgy4gi6hBs>_y5J&u z>#Ro6(wLA#P@gJgxjI&tQ6Q!hMfVG$hpZWjqC&&Th1X?N$BZrl>#JfJ zBw^=9Cuf5S%g1lofX59i&hrN`^Kr*1md_o`A3N{yUS=g!XwuKcU0UEbIgpuSHoGH* zW;nJhh=WyAy658fg4zjCfu-ZTW=AKFh&zE0aV0hm_IS&a(4HXlD7E@Fsm*o&74r|1 z%vo|vuPrC=H>0_er|$r|JFprdbOte73e6iB77GhB<5{C_LDtgKG?{IDi7>wX_EX=0 zAn?Ruem*XFO9);2%9Inxfg5%5EV?7$2xHyn`iP`G7j`q*Kz?Z1son7qTR!lJouISg zoS2vy!h6%>dL|)aPbCI6PT0W-A>qH{VS$gY5_FVp%b8ks{L--G!c89zKy6aHohQP+ z?UkN0g0Pw;impAn$`7Q3RtR2aY3I=z>7I|fCcXFJvIJV`;dbhEbjHs#)QRR_u(SXH zU{``+Lnk!rHiEEuod+Pdo?5bM(eM2gnt72#-_8>Rzc&|``UUC(A56IB;>y2t5p=pA zE|Lphe$6AdTqi+&fWQ1`ncOmv-^P>ecMO|nPRCDk0i{oMG>;y}njk_BH3{G4#qSf^ z3zt&d9y7_Ic?ry)2u8+02)l{YkPDMp*qP&bS8+f+!ZK zr`orbK6$T%{`L`jg`-k^Ym?Z}V}givhpiU4%Tv@NEy(28k$;?Ca!_d?|#EuDu=$ zqYoG$v==ORB*5k*<6~e}&tZjM-`H~fDLEO)r3s7MfO;x81$yz{>1b7#_Ah_*{SbL2 zd2~*hb)ZrRXL6>);)x7nwiIRCO zqwqBPL!?yt#`3GvS}5z6hm^>~AW1w3t;7*zM<+8P*{wDe^!5VnWYx0yC91}o7qj8~ zkEi%K46zvIbI_x7VmW^vChdU@PyP2pCUqhvPp`#w)w9~#JeUgd+z8E^JWb$<|J!Fl z$4^J!Yt$sfj={;-!hQ8hqKG3HfG5~#-NJg6G8DuBBu zeVChJmYNx)6orl4e}91Fkn1#bsAK(z{TprhwWJihs=zlIHVh`$PT}v8z>gRGH0V3O z$acDqzA$GU0MEsWno|WGM+7=cH;iZb4v@a@_P}txfi~Zn17sf8hGK?EXz|kEb!K1C zNb}`IJ9c}tO@mzH)p?;N|*pw19TEbTv}~LlCHch7q3q(k&ZX93w5<`)(4HGj17Ni+h%5 z8&Pq1on;Tqflc?N(>w0}Gn3Wd7Os$okGD(Vwajdc?HpxUX1 z^BW?o;Hrpp=MIf@XWge#aG9|!M_}^HaeiBA-J1*)P0HBML%YcN6Zb$PH|{^VYv4Vs zyT9H6(!{yH&8-xRWzMGfxIji^EKizx2pV}b69&~if21l0t0i8%<9n5=VQNp?`L`88 zr6ZEOVmwyBRmlyIG5sR}-U*#0H3z>e&)QDEKZ>B5gr`6HJJ^cj)J#_xe*pFgs{u8~ z%m|xTx7%=;JvvYiKHr!RqfW9e;lEKX(o{`ut2Dgr!EHN+qYN7m;=gz*C~JQ4+rwGu z9w#Uc3V?*52%=H-%^dtp{G*m7JnC3w|`Kynti;zy|3FUU_tp*!Oj;1_#(>hEw;4yuGFL1MHp;P>#;AyUAeDBqO^ znMa!yQ2g|p5{Oc3x7bfqL07L9{RN2(+Z{y-A3+zs5M}hUrkv4^@5lL3Y+jG+jj0+j zW6%5`BltC!^2*>v z*u>2L)`h-kv_emD0F-0AvRyxsfx=5+!h;oNXKKq+S8C>$w78 z!OW3A5lFruyfPQby9PcJ-!=Mq3gM$7I#-e#_8D|(=tr>hQJN8wvT-6apUeIE1$vg? z?fxyeT`|L(=NBAD5k1Pc$QQc1T|(5tdvK1Y832(&F|?Oc=m5iCw_ z$}zybRu0~S?%^wTFIS&W2gr^P%WugUC_S-C<2LL=XJ1Fwo7=;w|D5B#Y7AxVUS^f3 z^9vs+$W>TIl$S!zMADY{3c5%%8)q{m20116RD3YCfG+BczFqM{EN)sFuwDQokMqku zQZ@Ezf#oVFWNmU2s?uYl=Du($0M<X0u$xqe84$RRX`xJ@`JxB(&hOSNLFW^YP| zY(?>lMJ3y5pEwMLH`;KZt-=Qp3859aEK?pfipIVepG#*pTBbd!Tw(b9m+rJWINm>g zeegQN{jjy|zld8nXXHz7b;fj_yDL`bziOKIpoHpfX=!;0x4|+zF(4UiqYxsFCFT!J{~{g)c_N_br6XlZt`3L5jzj>|(_mDJu`+ z1@g{fM3r3={3cpzvNYNTeuvbL(y^rG5Yf{Fclr60*|vVr1vlu`nu2URH!gosQ<8sTU|Q{ zL#f{x-s3}>qgANSMFGWuzYRYulTdw359%bdxhQoVvAsyeN{UJW!{xOKOI9Gc_cz6L zJbVtGY_5V1KKoz+UenXWH%RY*R=M#$@3ha^jLLFI+wZ6-ywm`dMqPEVb8B&wgKucN zk+cj-H`djmGM$DNIHwRY)^y;2mMX^HXv5xi_C16>*%N);jMHozE12xY-9_ z#rK;Dax$qk)W{qYc44q;}|)$^p8YG~&b74#JTBNV;(x1F^N?ty(- zv|a;7C%kg>?q!-fNIDn>Ui}JQm0|uYzJ&MgT4#0G`}%Qcef`1{-w)>?W|hGOHI#@r zjl9Wto{|}1Un!CM2!bBGyXsf4ICsW>QAx=+MR}wp5v7`RoUdw6+ozOB$zml|_3F)2 zvh1&JfIqp(DxXwvpjTBbxa=qpdn&P#VrB96BmZElg_ov9b0384*Yi*qK|1u6GWLCN z=nq1&cKj*&E9%G&U4FiW{oCEE4QDam?Vu~wA*_rFF6T5vvQ0;Uzv0vxXkqFIA0=#qVh6A z7Emqw(~5JJK%>Cr0mve=CGiV*t*mSv3$dMHfuOB$h$3=Pvi4F3_^o@F@F9=y|8V^& zfbLbgzKl;Tf=m*qg3iN#hD@To-BA?_p*vTIvH>fdmux9ithA2J@TwE}cjp_+uCIdk zG8aXhnVp>JDlBi``DdsJ6H6?PFZEOlcd7K~D4zcdVg3(o>Y!uJQ zdu3sP8_=cEr%8h zd6?oV!?N`lqU=Y;w)_X!)f(CWrfd|9n;pHmu1Bc45r5Z-NLmqQ1k!hlC{`>TwsOC4 z2bwR@BViS|0QATgVU0I~pHBbtr5STuVpYHR44zNhqzyMXsEpnV?XK4%U#Lu4cNu>} zUfaIgg41MXAr1!>&;od=hfDDOh%Q7>jDR$Dq7SW; zvkq2ZDLsonD-JtyC`TSot3_Xv+^(WuRC)nZl6t3nwk5HXYEP?iNO#3^u+ejhi|F%9 zeV$_VB|aQQnt6AF@v;xXM)gh`E}+I=Okk>Y3I9OzyWJZBbRA=zvJ^ep>VUfscjeV< z)LMWr8eQ|AGVYt$k07a2!YEnXzu32ZPb+P8LA>^93y#+|k8wxc4ShxX9NKVp5v7Sv z@4->}!%-V_;^?oh_g}c7_u|vGtL`agp(5gvixvAPsBkoj~BLA@2{-Z#){ zQT#|5pi;%r9cBXrAIsA^=&77j4KY8U8(Wjml(Q_;lyjf*5gVX-PR7OfbO@@ytu!Vf z1J#^jsU}nJAS^!-+Oy=%Mqbm$evgfzSY^p(>tc(#v4M7#nf$znpo^!Zb8u zS+`Df>dJP8j=s=4ozdiF-g5HnG|jS&48T0CkcVPy7eyF^>J99EA0Z4si;PB*P&*H9 zj5RNnqzc`eERRC5mT%XY_poe}nz-^%1rs4C895z>cik@))R zcx!-#0E=aM#mW zD3sm0Nf?5ER$>{?!&@J}T$27%4QaDv069|lSqX>%qu{M{5)FbhfMkakqAIG}+JJn3 z5ZCV$M~a{m(NeSckuQ-Hm7uS*K$IbriX49FLOfS9V+HgKs8Z;}c(NsB+^a4Lp>E(s z)cGh3#Hqdab`jyC1d1jPl)ZUE^aaBODSrSFuNSAiGchaG^Z4dHBj>@6i4rr?f&h63Agq)dI6_}sFw&myjq~orM zLSgXsPynvS&fLa%FM!GYcqp$KXW2Gf@U{teobo~9MZOl zgTxZPx}<|xWpRlSh-$t3?BOYIgaIoLL7t+<+I}y46fr4vSH%s=W1ode{c1h|)aNZz z4tzznhZUg&(Ru3`x|a#+-d_6+Pijo#mg$<|qmkn-$1p5DVviw45pxf-ljmVauz09*Aq z>H-a93&B~@PsdToDXRz9^fSwGExUi@Z(>J}qY5-6jD}}*cf7Cn{3hAQs;R$>8Zclm zU0D5A?|sbIvGipblk(XxLm+SIxLN6qSMJ;w9T|S3Flq{PNi;xt#=Qf#&S*X z%b0>2_e|#+^6ulUOcN@rcxNiU`Ndak1)uN5^W8t~`dGAecLjD)wivwJQDtK6vZ)xEKW%yoZ}~J^))y)r=;}>GGBg+4eQC1p(uT z1_G7U?`Y*X>bcTf&wd24%q_3zjfk2}ceh1YgGhF9#XN)2o$Vb-p{=&1XKhL?rs)ct zM*A(%Clri=I`16{Ru=^Xp6T#a_%(RaWsEX{w0p{vSL`>{eZZ*Uu0z;mU#VY~H=3NL zGtz^&eEpdP|AX^Vu(#Vor@m^Kn~ezN<*7)_t}e5+sx=A}HVuBb)TK7bR)`%ue<{#k zMXc>^p6vxv<<9Pkk|Q4T>;`x{1&{gSO;yzXdHgE59E=njLO$!?kO}l34@k`^{($Ny zO^2%F1s-0*Av@n5Z1Kpwpz?q=3l&$`ISC| zEN)Jj{6X7WbDO%qt2l(zu)e#7`2hXWhs^S0Rg=e{dW+V#C8mf2ln|xvF+kmyMoF0T zJb>Q&1~t->54OZ!P!;tag8cS3jPgB>`bmIGqW^r*45H*V)i1pKxVyVJv?1yLwwFU1 zD*m^P*Cu###Xl{40P;(ffz|H=>dtp4$Ug>sQgBG<=?!ND)z4b#!|_Cl@R|| zVTFq-x+xkuYZ%N6?Z(sTI1>vn;q|I=uy{Er0L>Q|b>0}{FM|F^QSq^=z7f?g1AVad zZL0)4d;Bjxg;$V(tZY~$bXSvC4z?aF9&9|mGe?ek1OQ? zY5LN~<3n96j?Uv`C3Dtw!5_4`(Pe2Dsdtonz1ur)4d1Ntm5j1Kbk)_kW}dAu(_o`_For4M+a0GQGFkO148 zXBRFg05Fz6!^mu7L_#?Gl1yX{!24PSQZgBXC3tj2=xV_Wq9QQC$Qi0 z`a6W!x{h|B$)r~kE@2XyDWL zqWtAYtib+hBo7d`2Ng-ORGaRi=?DMj2$ufB@w8V<)k3+{0K59lWU8nG~ z_z%i2(VJ3t38al;#c-5UBZTT#c>TTRGBZ%9JVtD$>gkL@d}4~S!GZ8n$}TrKus|>) zA?V5yUbm~1PNp&`(}~pFlh<$xZFtF9K0k&so+>-YRykPn$+_g49oDeCt`a}kH(`2>WSdh#|`?<;Nih!dWC;W#@QCE^fH zZLSN}a2j;*=%sbmJQhUI6vVRdiqFs^2R%>GBi4Iil)#TPcW(K? zl%`#K7vLryEx4Zz4RpVNY&l9@x#BDwW-D-VM{!9Xow#m59)C~Mj?&I*Z}GlZ7{KJc_x1}LMKr#6$HC780b;D&c|_x_eGLSpN4N=F zJdVyo;3wp}2w!;RYHPGGXE~gi-;*nx2S)W-* z8h_h}KI=CIz;98t;4D`bYPs%w5AI`tMjdD`nfTggqM2f@07UtTAj&$s`89)6dn}gS z!%^34H|ckvT3DPfRM&l&JO_Wpo7A-g543m&wyxa(=^#`_z*WK|E>FLqS<)R$8X?&U(fJ!Csv&MDN zy>4hjCHgH5zOMchrOls0J~8*A7pbf;&9-DKk7ej41u2feK?!sdtj>}gzC%B&}VlP(V+d%n@!}S z2oXC%wI>=fK$XTUoCAhB`7g_G_7+0ebavxkBVgGmRaG{0V(D!{)%o~nN1}W~*bmTN z2g=0%%QAYzC6-HA|I0ES&?p0XsRd*e2KtLwIC{^+ zd`(o0G<49_<9e&t4l5{DDv2CHd&7R9e98-SmDnV>9g>Lpo!3QW4GK}@E03cDE~@xI zjk_9ZB2I>kf^9j(yoaEc1GlFQ7PtBjHulzj46T^ z3)}L|GW2Q*c`{->0QkrHFSsq*gA29o*w;9s z-r3i<-p#(9d^*R&i6~#hKa2OYbzf!tmw@LEByJC9rcb;^$Yi57CfL#3l2HCF{BN`a z-tG%g*~?JGi>%ON+3~S`5fD@>6K`{6CrjyU19@D4z7#Tq!oUdt9H&K;O}(3k zOFy1+ZL#nX`UzeLg}O@`M1gMES{N)w~WYh!O?{s|Ts9>Z1ttZ(*Crm4YZ#-yONUe8&3zo?awL7FE*o<>(xI)-FyA{cL=Yd8P3b1ZM3KN@}|EysBt{u^s zbUj1?q>|^Ql^7!c1wD(GpbuvbB+^sI z9Pu3pUeP0~@JQV=T`f#R{VZ#zvMw|419z_NYH*4&>#qF^PJcBr_*RfgKrN{9Zdb#b zXJ11NLSHz19%9_b5QA-3rahjZ{|Dh~6It74J>B^sh%?!!RI77n=TXm{H$trTL{fyr zEZ&eW7RB9kSOJOGd{Xx`en54QGaZTl>LBJ&fiSFMJ^+1o6^678Oux+uWH-N#fk6DQ zxd~SncNc8!xCk`P{u}7%@D5$IL@GfYMtdCGwh%cGJpMWaZ8)L1sb-ldkH^rkMO`=K z5#9%u6swA=Bt)*EmsfF|FaSH&+}D6A=J>jJSX^b-H9!5u~-X>fXb0K7BsRZD0T z@T@SEHMfn*x<7z;J~2Q(j{1N}K+T^=Bv9$mU*U;&u??0PA7(85l!&p$Nmm@*e3@HD zF#!Qgzf>Ip;^Ql#te_|K2s`ycTjBo%bP4X7ym*@ohjmk4_SbjFzj!AaBf=|KnE%96 zPdKX1SG4cS>@_G$`wH|xv+L8>%~X6@*#f?n?T>EWK|Yws?R9%`FQsp8+Sj>Ad|%Ey zJZX~f%k0F2&dhp5Z~{XSZ>|4{NXaAlIdQZ!)|3^s^76NUm4)_n%gXfg(#Dx-hQ@y9 z-x*~@Z#N(M>N!lz;>w|k4QHRlg&Nj(UefMy*XjQHRxf)_Fi1(iof$dbrDcvkE%Y}p zN2Gb9cP*&n@k}lik1N)$-Tp%u>0#VMcvs^WW&D@Soj} zup1LOj+_2hyaJ|ty;o0Shi?+1{X^-ve0pT6c`@}_Yuos=m{q)Ix5zc=Fh@^%hi`ja zb0}-tgD5{)Y5&vCo(mRUr1;5|F0O&2QA; zPqw)KwjKX--}dQmVr*8*3YYwiOZ6v@(#`h)%B<0N0U4iCVmTdJF)R+R{AC#-bBa*Nv6xmc_;Y5N=H%c%37yXXQLVhs zWzT3}R^?33S}Fb;clZ-ejM^@v;j5CoK%V3A2DY0&W>)e5_2)&5*vX0!%Swj+(@M0n zu>w5jCZAj#R#f5@s}V83|MQCh`=ah_&DMQv7e{4sXPfr)If;zR`*f94vXw=nZVU<% z`dBFiy2=+&)0R=Dq^NVdlk=Nwp-MY9U(U1(Cw=4(&K98J$1FwC`~4U-dwPc|Kj90nL^OF=W|YmvE#x>b1diQ~ z|Brr-Hze4t%Es{9IJ#mfB<9+WfV-8C6H5N+=Yq>sOYd8&+nc@Ih;w9cxu`YT6Utl2 zMp5INu8pz?j^@p~{5HCPF_E{cK#-_s8qK?Ov0vwmmT_TH>c=>qKx(hnv7sR6nfSdC zU+%frj@w6mn%|lA*gg}k7qvuiJu<)jR=w}`>}>o`58D8v~~c zBkB#b`&)i)c>j2C*2dG<$!)nzef|^4aBrxn>A?MtKZ(MB>{JLywdDC-IeVe&%$5JY zgf4xl!2I$D9Q$sp7K(qRioNj(ei>9lGsw@c)ON767SpJr|0oC(bX0B8Tnj9aMC*;N zC|azud;ZpDQzC2)YHBw%y@pmgD{`S?KF;XuJM!H3*hH9A%V-BANV^0){7#-ziGSV_ z54(v>>Ew~q_)>dwKzcxCYd%iVaYo5A;tLzlP}0%Pb4qCaAfk=uyt{OAWnclhaLfB1 zqT+i&5~2NbBojdg7x_;>_3vddGH{N$G7^+WuRPe&=;TS05k-&wT}7S;YHu8rlO5Wb znC6Nvh_&%&kLwAz3b!={7i1y ziI+k@-Ex*jlk4*w5J?ysY2Rg<7l?}B%3FlDLhoz)oWOvT`Q-#!ZTo_jE+9{)a%~4<5d#xM;@?-mSYRd!A`D;G~ z*#+OV4;*@cLNgU2VLc= zYPDqYLI9H+NoUleC-(ur59(tHFLtt>%3H}eYl67ceiMjna3 ztYY_+t3?t`of0R%eei-0fESwMr9FsMBoL(^f2Ygw)5PVAqQiiOb7=eg_o*QKSO4pZxl55TC8q-}ejgbAM7;c>AdZSm+Pm|3>|2N`Te-!uKh|UXH)Hj2%0VIPN0VMwZA9) zrCFjcJO~w86R%ZEIht8r9XeU$^76Fy&^gD;+SEtwkc6s4jE&^U1xct-g^+~GY?saF zR_a#Wba3fhUl)$o8XC5^t+x+;F8qaifA_vcT`W{B$3jLkb0*5iap$5+qfkGCk~0nG8_lpd7VA?>ZDbm+(saE{;x}OjLm7(@RC2T>smuXQ|G>GR zZM{wQ%h*dd^HE4R6y)IR7?*)MB_^lnpkVI26w!12F_gkvGCmfmVL(jQ=y*O}VNR@; z?R>-a){(^`qbZrM<)r(393?A~auAS0KqO2G&*F`1MH8m4@B?@=HbT{aoj@!P0+Lb5 zMyDUmeuzSehi+~-(IF;fqnAtSS+{+j>#zeZQU#R2%7*^^i9sq-8i-O~WLVjeu#HL{ zMXT$1!& ztR{LdP;42m&HE~K89u8YpplfhFOHUqpuz2Ap-csnf`tb|P#$rfh)Mc%zp!ojNr9r` zN}f4*{wxQ&TnwIpa_qjgE&r`l7O?5MMy#^3R7dmxd-de;`XMOShE{dlkxyJ&nv{)2 zP*su!_{Baz)u~x;5GCt|)-@>5*6M=B^}y`s7Qz3J-ruoO6KjEE z846gghGbL}lO=svLk^q_Pp@3*LB6jfM5#hC@F_M+u-K8R`;1-kA~?!Py2czL^qJ zadu#1X#l|@X@3J~ZG^--acT<;PnSb+v%GT7>a`AxkecdrP6PWd$DRz*%te-2_;r{c zJ;e}eBxgi!%g@oYTflfLy5lWb^GcGo<;g%6%EoTpT~3Q+XI57#aKv|J(y;><2J6n7 zetaCRv#&lPfuPbU>5NSB-s>R$h%0Ia=(5_>jPqKuN?Gl?EIupmxSK~G)qhlJys(-m;|=QZ>EzKT6cYhH z1tb2ef2gqMyW8H$5+5{h_hXAa6!HFn)0RKMPb}MuZTIhi-Kj$qXGs0@GOZMJGH%N_ z(%K;l6prp60xg%HjY!TP0AHc- z^lFx(n6R^G<0Y}`DvV2cNle+@a!UK zsMnvA8#n7|-7$oWWh-(G2(WzH*SfPITU37ScE)&EI_?AoaXtUK7zbqrKpwzKaca3NVsMQ*nliC;2guq+s%P5p{YNTw#G3& zUT3QAbv1k&I4=9DC2nbT=@Zr3;?9HbK@k~;H4b-7vLYf<_C3lrZZn?dGMN&bx?PRL z_mPH<%M|cFwKq4Pc!K7>H0@Mtfr!_hFmC8^k$pe=^pv7g58QjVOu9%q)r7;`aH@4a zQ|MSebGtU6o#}K$>ntT(`EJxLJ^33Fep&|K@IZf8A!Tg3ZQUn){YdV>Zmvf8{3vEo zXUcx-cE@p9JcBzp^8cuM52z-dsNq`_1XOxedT-K^UR0WN1u4=(5fD&%ClEoJfOP4E zCQ>B=(jlP;NbkLb-XTC}Atd?of8OVN&v|oBlHIv;c6Miy*`0fT_ulU9CG4+xs#=T% zF@4OHdwrifaIyayV-ZS(|8QS#!dMtT^h7rr=Gs_g8`IB}0J1k2IUn^=qJm>C-Sd_Q z5%89#=e3{%eS#RqsNqTVM=R-5SmB)n#Z4pTd358z!<1hM1L($;8)Pju`Wykj>C1=1 zwsuIyyJ~KWKG?d-vIqkku4gb7Y!-}lpo0UmdO_m$i7_F%c9Ejly&4=G-572tC%xhx zIWC!IMZxCw!Y(eTO_6xBd+x%+=^?d6Spdo@iNa~NJI);cgkt!B&SKNQi%aA8!P?$7 z9?Qtsn=6uyXL0_`dYr)xi8lRQQ+yrNH2X4833y8+Xzxyb@8y}iJsZt^rmlQ)Zj1`N z+=nAl)N)0Z+K~HuM7c$Uz%g!KeE~N)6obuo)W)a`r%7JkcN}=!+N*2Oi(NTK-+;1j zt5B_}k;y1@FNY7#z^LbzC7*#BUoN(_YL$jj>a z@9OVf_)>Q8-bXw}H2+c`T}`!zdn|Z>a}FPCsG$3gS?O`+!Kl0i<)=S*M0nsd{oXuI=|uyMN#XdT`VELa znpAO?pstbF5pkG+fATOA`X55LKePV=H)Qa(kkGXLaec$Aab0t;wgxax!RF(}fEYsiMW(9go!sQpZ2@BM7`ON6CCYs%X-~FQ&3ZXA5cZWAirB?kpz7Iycl)$ zuH^6Jv#_-4O8vgoas&4p6oY(TTIn-Tv09`rC$9lyUNWF1t0Gz@7qYPzpB}3yeEqo1 z&j61puDlHsmplv;4=pZ8bvAVwdggc&O8G3NZ$z2v!h&u)uzb6 z)I}>m`^+*=ciNbin{N_txK{XS>fuaEY8L_BoE3PNSIi(D`0|E7?w@Uxk`aQv*>tVE zqkXkj&k4x)EkVL(KSIGr8ebdQ@hbljKQE{?Ds}zf{GB|M+_muE>@P^?ASfjhlAKDo zZMHz*?R8%#%ln4MZlr+zF5uqRtR8N0K+bE&4A;-|_p{~+Kh88pc9^=_`LXK`%~pwZ zetahWFez)g)A5BcBk&uDs5+#J5Gqo_Tvz#}IBV#1`{5?z%3WTMBstyHl4)_kpe=O8 zPZA74c5wr(9%lR~XRFw#yoro~RG28z>XX5=M=>~+*HSp1cte5Hn%tz z$oFp=53X`YpIpqniG@VlMm$ph=mp_vlwMUSz-ZT8(S4-x&b?aT#e+w}y*rf#-CjRX z`voDiR{3A7Q)hk1$iGZ#Zrp}d&mz2ho_+aH$X$3KPLr7{RKeNOf)Olqos;bLIXcq~ ztJWV)+cUq&lCToa-zz-WDAm}mJgUPZ#PVB={gdCM_(YYAH}@pjTCnK1$)&FHV$)57>yb!2*e*TOVHs_-$_7$>m| z69{r3x)1bP)7jRxh z!dcV*ti~xdbQjYgBCE>!sC}4T064uIZ`_~f1gGEVy~Pbn$OBlcPc>&jSKfbfCYT{@ z26|bj3i-GbsjnHM_fe8Yj?nC6t$>z<4AFZiZ~R`1Wa^2}W@v0Fs4IpUzyAa*@C$cb z68PkyJs|VRfT_3N0CGBj5j~NH$p0ibYO2#?sHPW5;I50zEQ7dqBPP0gd8rLY z4F)@DgK>lxY?ZlQ*C>PGl2K65`^+->MB12}^FoO?qDpUh_gA8WVpfY+mP~aVFrYJ2iPD!U zIqIT@iJ+I9jzm#-)c#dgGgaL;i8`^5CZ%!*D1*PgSFiU`2C77T%O&{hd7n`KyV&3R z?6$N~EDW8|3vB;}GB4eeQN%fyoudq{!tgP3yhlMdrhiRgL5j3>+5(C=tt4iF5(LU1 z{P@7|9S;Moj{ye~t*1YWlL&o5KcEHXj<9;xt ziM7{y8`UDbS8|AoMavigl^)$Q#IK=3Qf+V(KceuBo6171qXt_wuK#nbH?E_`j|=(4 zj!FsB_Cc=?5mcj82z_i!pL^EJV;Cn!3i$lpU2fjyoU!;rsYMT-8}K3?gXPz+;BTRXeA!Ja*e6l0wnL zADQ2cf?DoXV>_pi`TTtbJ^!#f3ALEf#w2?#&CCwvQM`8$Z8uOU0u=;Z!H|0V4e}Q=QAqY$eL$-~9muCOC!!`YAW$X=A?9$IDB_`T z1$(6{Nh~SXRrWTDlzUjO31j|)VAT( z*zZg*gDM7_)FL%|GT!VYjyxJ)TlkUHiPZdZ>iPT5ieyZ9lE5cvtKc+E15e~H(I+*RuXTe=jOe6?B4k_<$s;S z=k>^PRpj&UBF38dHg4aDx*y+;C%;@m6?d)Rn@@PLj@0}gpYMjO)1AZ=NJSG;lLO|x zlPJ9lrT4|_R=*gRuX1JDOGkPCnOLvNX%Ftm`310f}-a5v}*?8GY*Kt}9mEWxVU*Ys+#$ zQvL_LOe1hMUV%*nLrNO*Do<+wgniB zZ`6{l6^jav)JPlQ{+b5^6{t6g?)Srm%>N;;#zV?)m8u~k?62I5GGXvG66@r=o2BFg(_>lb6gm38337TicSp6NNtfV{>SSo^8a;S6 zkXI3Rw6I{pj30Z`Z#3;oL29UAjG>}>es(R=U+9I`(pv*8wtyRw!)(hAQhA*+3jd-P z_D_6AUCnx1n+A0%SBxK!3N}l&{I+l|n@(Q5W7*L5!IF0b1lra{_%Hf5YTRG)+*2~4SxFtcj=m$^>PkIwpQ8&%`ZOYJ( z%008zVm3b3NZ&UqWr+rrM8JC4zo*X#MMNV`E>Oam;C5X~fF@qWI(v5hD8TrF200Bkut}f^V!H*dnHX+AeL=&I z4X_V`;MvRy$o~Vckw2rq&h~sVR0PCZvR8#NOMpam`x14de97-D?e7Des7#3gVGxW! zU&Y^37oGAAlf!^t;<`5I1FzPJ?LUVkDeU+CZsta#TfotlMai!VA1G zhN@8ioKU*RByje}tpj{4L`n}9W3W~Dap3I8j< zw(0K4-tgmje$`PG!4Bk~Zi`jtV_PZ%Nv5x0d|K*V%!IxuNX$UgMQ+{7zeC9VleEDk z1vR*OYwPNTb@cG$+?R+_u7E)De+T&EdEyCKb)D05$@t$+$f>J>h|+1N3B_TG-w>yy zQc@!aMdACZ2S`P-CE<;|4Y&Y!;mZogXkg33fY_@VPO#tn$mtZF2t<6X{NY*XuAmC2E5_zbD+%4xlgyhNdB>>Xoc;7vrZs$zQxM{we|LE%=9H5xf#A zqa#!M!r=lg`!_R?{4FLU^O@%Df^0kGZc7)B?2#@w^ zB$U;!o=LUbAOteOMqtjOgodOUkUt)@T`s|&Oo{H)Woz2kg@6p!qV$D}kPCPwel4qX z#n?YPDJ26qe7osN#nggrHNsC?+W1wIzBC{s$EVl`X;z(imxM3e_c29D>P zSxPPdc;iNe0Db^Os&S#f;TN7S(_dmtldj+IRpK7B@Pv>}gTB%uFC2KwalJ7Iuxa%R z_)+gH2!X-#!`um$r~1@GF2933#a@Z$=UPv73W`4y|!gEqzgHcZsP+fsF7*}{(u17Z z0T|+zxvOy|l+z%YCjeYKruYEH!F*bDu<`wh4L=v*IRAtGGrrs^;-P;K6*ysa3lw&H zH>Z>ezta-&T5*|_OQbe%AD!_Bs}Q@rXUmxL9zPd#zgJYcrHo>vHJUwUK zg>1?h4C1Gm(7Ry2cLS&AN|x3S{?A-g@qYCNp+IV&;x1N%ZGBOWe`l34N%JFpdhaVK zvi#|syFs+zZw#6^iImdmhm*I91^*^(9eptVUpNhfHcJm+Omm9=c`4yhw$e`%n~E%Y zJEfk(K8hDr5KA29UK^*Y&OWT3s8*#V-|a~j`^l8l+AM!dK*8uC@L*RSW%)-SOCh|OZJTXu1DW~G`}BOTE_UpWuq}y? zTRp<_`V*7YE%^y#ln5OB6}%fBaO}zFDt9bQ<7uEnzMxT0ziYa$xP(!(A+29JA_b*af~1J>fCQq<*D+p}JZo0;i4tg_4=&F5E}~a=^K}CyZ#?fI-Ni_v zNtdaEZs=L+LE1gi^Oc4SRd;=*2SI&Lb_-^!SV51zM}vhk&4e3D?nJ^M{{~!Q$*R1Z zOznm;5g#bn%RUv~3lku|OA}EV5PXPHCvs$Mpe>M)|ElLj@Z1WiM^wW(SLL~xrTp$};rJmJ4 zmjutor(&^h*wbb!646>~s8A@&DX43ahuobIHJ5Hygx(0-8O3w>p1rKaQr4jM%uxtWsgvJHOO;!Lsn^Ha-&RD`=# zmhw^ZqZg0zH;0)|!tBhB;({Ju!iI?x&v#~!%9jC0xjiGqsp%;|4-ru|axY;8Hp|Ae z0tka>KFQhqA<$#fFoi;T*I?_5q>Y-C0-KMyU_Y_WdC6WQW$%c1CPnXM%GQ@k+g(d# zHbq6vnZy8B13@;$J2ynQVxZV*FtYPopf*y7(+)JLoL6hG=rM%G|K;GIP28 zugK23Y47mS-u?$Kn7WJyo@~EN!KKrjb%tz}wHtiu95>m%_Eh$&a;GrzI|GP0p!sY` z^gAeTZ#%AmVhy;1D% zVgGtZM+IG3oU7#4|k2uQafIm??Pc~Oxkw=Ora5XsMb=ugH+S1VT z@|RP0)P`G0z}z&s6LA|B@D`6;8vBCecz5IuRZs&$U7o5l2A>FnpEWu0&Xf`QI|3v| zfx9iwEVNb9Qhs$pd%rkp?afY@@NvvXl6LG&7E{Z{)2EX>XAkN1iPt=yE`5#=SwLo? z>;Q!T|CHcAzw+WPUAEgrHrIcx%8Ij!&E1=N;9n&WhwX)j&kU3rNgn zi93A$fg@(Zh8DM9G8F`S`}mwryxCB?vvzmlTd6Pc&WR64dnBiCi?hMBckU}M<5P}j zHZ#oBoeW*c>`yi2J;m=PLv}VPQTve$ePR<1WsSnbROcoC46~BX7Ywd#>!|yKlpM$z zXPyd_!{3oC2c_qKnZEeb?B+Y%_p7?naifO~)@gnnYrq@$MtNz26w`G#ImE$ErIOoi zIyHv^z-HaHk(?11bRn>5&D5%z0}kDmm6QKY5%EKBG@N>gGZ9LO4;)y3q9Cn-$h2Zp zet(QqXZucLP48H^Wq`KMxbM8}<(w2^l}TgkYO8|iefdiBVQpaPT3lxKA&AQ$8A$P~2ivFS>M7cy zl;ES}C!+3^dnYl5Z>;dqfX@f5YC<7N>lC()iQG78vW#uZ*JDqfvCr$}gk?A|99j4d zQ=zB*AXCr!+(+7`zYPf9-Cy1MDQrz|I#3&1^)5-M0Aa_M#xK?Fsh2#G#KB!wMsxh7 zv-@GNk91hVtLTrCZ=0@0duA5q8?sLNTmyQ(>2>$iaW{Tg1P1i5?2WG3-8Z|oi(BUn z@P$68yhiJ?S=Ul>hguRPrdp0x4eQK=|4>S|j99X#vMh7!ce6rsS=Sa1@~l_;$y)5b zl!%v3vb_#eXVB*!MznoYVjfx7F^CFOTUh4VHSu(EduOm&OZBJ9DaD~3tK&N^W})yQ z@vT6e>XS`&zE|X467k)GtWCP0_zd%@AZ02Z0b-9wF=svV%;eP17n4`n?dX6P?qCgB zG0jx&)-=s(9_#v|-eQ%ku2}*C4ws0$1(Bf!hI8w)ms$7w|1=Q9wEY1|WZZ~Key>Yu zl_ce?mfZI*J;8NrJ(x8!$f)|5ueBe954(6Zt)2q$r=sEx>Igb-?=>ZY8=dp0KSwEk zJBW=A{aQ?75Ctt>TyJ)UtwIB4JpgT*D?sZzA*cGO`$qAB`qh5>BLo27Pp6bw*@5bM zL8Y#7SC+HXhg3H*v5dy>XkB?P?n@VU{hP)BShKo;QIW=8gmNKza2U^&`F=8+AQNJE7ux z#NJgaBd|96IQ&G8uSzF^%$wgfR^N=W&+LsGLiQJ_?TiUu_PdqYv97BN4~ zvm8Q=(l=Irb5=!{e)wN!kQ)0?=Gwsto^-;y@SXO7`g|qH?Y9Lcg!1Wgv^fNKWH>|8)FR$b))kl&-&3$)mH$~+yH71{QX5PdsB0!u)GzIZx`ck-#MfYtXkE#@Z{xpg{ zUi2%lF1qpv%6Z{EQo;D?S&Es`=rl09SEk+~`d4f;?clWKrZVo@Yi@wPPhCIYg=qf3 zG&76Wvm9T+*6RV^SGWU*lU8sbb2t4?TGse1L4%|%DYRJi6T`C?pPb0+F{Srh;0!aE zY)GM*Kr7cdOplkj2ZfL-n=?^z)A#mSbdroM2Ap=(Hq{n4=(zty#q2l&-&XP#nvw*OsY60{>8?+4tvE|cipqid(*f%& zD*!XAmc);swl-54vS{C zD-t?}ymw5PJJiNYGMUL8Y0l!1)52-<)^;W@9WUQgOSHa@djojHQ*DfVc+oSGW^cS6 zaQ5pz#13fk@aM-!l$gULh282q`_*49?|~uXqOc#(IT{hIRQu`;8^g>pXr@Q{r~;bh z{Vap&!<22}izxZwsEi+|z7TRjeGIaZ6K4W+t+GGcu zUDl?h*`hi>KBjezrs8*O+(>@tW%QIH?Zqil?X$;rq2E+!YKvIcqr@`dMRzYZ&UW}_ zJ)fSMCgX<$V(8ocs~joc44FXxNDlf5GQLVT=wBxNrJ{qflc?16U(NYH`F0;}_D7{k z%M{949y)XYW?qwn>{qiNP~9d6#Z8xDNI(P(JWTpUs>Z!;vM4g0cTD<X+8d>5+5 zu}u20(fe?ZE_s~HvD32qgru$t;u^!N=Qe%?<9!vtcPJB>sj)YrpLC)>=kCRwH}NZ< z{Y1Y3{^Nv4Th1+9I}oPjqN<@Z1rE0kt|t%LaTPq4DNj$Vf&aZBvIhNX(f=G_ucdmY zvy)k}pFSD2;X%`s-4&X8z#EU@<@4&m2Loo(8j9*4GPkc&efDk1-7cTvGUr@V`aP__ z4BG%PR=^g-;&=P z_wWM~LhofEN5!vld?b@!yRQZmtn@*CZkl>>sr`X(E_t#V=U@K5%K1pmJ#uk=C_}0; zlKK(J%Kq-3ELDFvc$_`Pi=?b0YCa*l)h^^yp68Ko z{3pq>6en_TE+L7kIXc(%=~LDlW5*+-y=(92Vl75xp#oo3hS<1Y7jJI!n^%ZL4<3so z=Xj*nT#KR9s7UR9F|p%=Y>*H#jH2nDO0ggjEGuDp_5tsD=Q zF`w_I=J`78miuVSJm>>_EwWvC1dzQJxt!G;Wzg;N$7{nE*ye^}{fZ+`|BzU4JV9rE zg}$2bdk$~U**)+-sFVX@?yo}tbZrP(LTD(B$^kTVS)4MNv~bb{yqT4wU`=qQ>4tAlqqG z(C+!5QOh!v%s4rYy>uRlK)#y4tz3%5KHBcwRg=K2-;dpf|J+`3`c3v02fVr!Vk3== zlyh2D&0NetQznEVh|W0T^B=Hk3kIZza&_J&`=h!5?7|TPYKd6U%77(+GBlQNwOp1kqUL~fVW0P9N zTq;TJL9c#rwX1M5MSyZ%qgAmXNva46x$y{euJGEudD}Bwv&s(u)dyJZCL{2%)50h#N`+c_b3nN!LBD_d_lULfvfbn z4NrTW2Zy_dFdR(QIdNCfhff|Yd4=FjSl`2zut|oVKzT10N&IEywBKTr_8OADzNese z;50={s8uSDtzs#o>w6Itr)3eYE_qweo`o8-el~UZBkR;uaB-(0rj5r!?YL_I*z&kh zf~`7%A@gwn#}cPS7KDsl2sz<6l~-IRc6YSD%5!PpHj?Rd_Rg)vt4<;0>Cf|l+`Gj^ zx;|GqZEIkvcUg7J?@MbYUVLNANq4Y+neH_E$P8?8Ae}lVy&4*BQ1DH9oDR~Q$0?V^ zOIF6DmHvBmw6ntg`F$X6-qey!5#86ZGxDm|)JtMVfl z^nL#hIGrEB_;;;?{11|pJSe)$6f~s~@rC%5gt%wyh61gsk=9i&eJ)(aE!6N;{6sp_ z#^!U?1Am1~NY_^aPtHt{hOY!Q0-1sh7w@H)4Dm@@l~t%jS186t;|`q4971e=bBa1* zRrl@_Gi|F+*t$GN+F;sZ&_*M1CYMv8T}Al-8teGV>U@TaFP$g7lH#HxD^vmFSc6&| zIw6h0n&06oo4FO6sK~`V^!8{^8>7z-E)z|CT^9S}w2vyDlX}XAFs=0S{V>YsR{F7Jh|>UZHuEAOL?~{L9$)!eK8CzQT8*z6~)vSH}W;Lr#%T z_&oVo3;t}rMzWcmo~2|Pce8-F;FNSRESc8e0Sr7%ARCt-ez6& z@VS;i83TqU7;tT~R)E`GaUFnV(9^xR9oJ_eo;cCBA*b`^R)Bb&X$E^YocsZ)Y5zgc zcZY~FF06Vw8WOn$H8nq0Kl*a-O89Nm1Y-DQvr+VfH(R|TiJ8u}3RK#GAM+wXDR*E_ z?s+ql*cHWx2WmrN0Sln@u*;T>^2F(yi&!~Bu>_t@C^?b6P*A&7-%OxvLvK%T9=C4~ zqfXxX>m8Z2@^3HS{|vK2N!@R)%6aeAt1aM^__HV{A{XP7Vz%8D{Cvdv>`(V$s9;Qc zKzt(x@zf=izvGGLb^-n0iX6gr=DN>ge`i#WI=YZu1Ta&Mr#=Bhv_% zPusI;X>}FONfZcCGHuTtPz-6C-Sqxt8;=9#B`3z!_y^8Rf3QAlnD)9{>A?A9lLBg9|8EE2NG+dOupQcTG#;eb!nN@OR_n(LG{+SLM=3wleA~!6Dh^-0sgPHT@9j0UCa^OxSZ;4gM}G})QoQ&}Z1*RblOj0W_(XU(L2E-tQsuWzvePa91YHP6y zb-V!|-)_AZLp$mZ_p2_9*`+Yuc+nuKiFe#sec=E_Mz{%QDMO!~RZi z-g8iiv`b9eul?W0#$1_*(2c0%T*wKo5GJDdBKAbnag5W^A5-uAeGH&ewW+|5dgPDU z0`Q#A7V`1m9MBDjPg;TW-j(b_y0R*;`z7&pQIi0ClCztGowO~&Qf$!L_e5h%{g&Cg zoKb$vA&v!e@!*sCen8myth04FtT&Y$%ym9{N;XCCGnDCk_NqbQd=?_8Q3V5+F=~L8 zt;OT9E|rYdplK7}C(Ol!9M1G&*1l4s3|1Xzu7oSFGsF1qd+(!&>ALqJ-F_7Zu)D-# z09RHMLnyuMXRN%dT?KaGqNxaWJU@6->Dc@GrV^DQa#MLjW++E-|JBy*g_xn-2Hc|} zmtvFv1v-9Y0dl}isDoHIKL4WX0Mm5%9eLhejP1B9iEmN_!?Oo*!W%Pv&u!DO=B=8O zfX3Ud8Gwo~{-iw3Hh(_mngK8@SMEYU#6PgwBL&A6MmkbW`xa#|-XiSHNvJ92Voa3z z=AhYY0^o#;znDFg&;#i;FB<9_!M3Vl%CJFgiGW>#^VvoJcQ=)#U(RO}N5;=*iSzltV73?2RN8udh0qoCJ%pn^ zR#ag8-mKIZej;xLm2wFglU=^HUb?Kiaxc5z1GX58Qh3b-o~~NZTQWi)RU$gtz zS8C~G61%tfa8uN$Vv?xmWnL`HbMhnL`O#Z@Vuw=rZa4Rk3oM_3}_!JMfezr zyz?aUIVz6haA!FqqzzrmFx9x{4v)$43cj7SnrL^IXs<_F$YWe!KXQILtHE|@6h7l# zkZ&=8kBf^|m~SY#0msDyJ_E{28Xi_}8pT-ote=e-RwQYMK@R>5)C4 zEL4!kTlnow!7%MuHsPOqfV=8qokgUd%1Z^(LQEWC+$z^fVFWt0kJqAK!h&!67a{FJ zOxt^vH00gq!EVfY@g>tQ1!&>`T{rfREqLFy8@QRh#aY1Xra|!eiW?PHaamk|rP1~b z8TUcua_6G;66D&U5|Jcnp?Oy&E<~jNi+?)j5X~a&^VGdAuj^ix39o-F153lCPDfR; zVD7oYXKEt{5Y@r8QT`$rh~XW%{Rg|yXHUq65pwZSl_R`Gj?iw6?$W{j54#Sa)24p+LwKN=%#;6lJL&%P+r{PcQ_%q3=2cnC zLbXRiR4c7H)_j(4)qekMD-i|AqJ^8?Y;+bPi=7#-4 zjHcK*c<(L2#djGZ=_Whd6Fnw7IDa^!c32Z32iTX{b3U#zW>6XsnR1DDNq1V&NV#Oy z{w5q2$M9-BAyDVllF{pReIi0~K0*mZ@E4wAIutjwiyt)ue^1)KXId^q{^77bXB*~L z8?jMpn&NRz=hEf5hFrMK_^fOl|M>n(KmoJmm%$?@&-Qv*Yl6A@_+AUq%CiI5X+wJ+cxyL;+%#-Cr*>mY1YN35?Df26!xD4w6E-p)(MS4vY&JDnCv z!y0dZP;C(xJL7~4ixer3R%%`itmab%DZRW8rzu$R?Ac=f;`GV)-|DkKK!|nMdYkQt zP9~U7!_Y0oUl+`%)tr}c(pU1*t`(f|+i8zvRL9I?8#j%l{%NGi*cnKg?^}Tc=m^^) z6h+s9uY~rhEnG;0cLGT>lncP1k-gj<9^Do_EuZ^*UP_|2BcR@&W#2luVuifU49q^| zz9$d1?%LBKopA>+73XDms3i(-!aBO08{Ri4Z78bROlPrg8i*Yssj*)41g#hK;tPSK z5UAt5V4XV_X?G882pzL814;AlW+I+h71j%O98+~*PyW!%J#@PBTj1wlAgR;CG7!i& z-q*V8>w~{JQ1%!LBX;W;%8bk@2b{UK)g@Brb>W(Mby#mga(;#lber+*5MP=^E5MfS zYMBS$7)#C(noHDEMYOPA|7;i5OAfMrnVfeVp#xoSizt?{$gaBuNVVh!{QN0Lod5RO z&b*EW(E8<`Iv~)xYjzQFxy2D>D?HKqUjBipl(6MxD@zNZ{U7z9hvbG=ip#pqo^+eg zIAUw7vLpXszxY23Y$b1-$_`)+@FP*SWY5r<_8*K;1p~pT4ANu2LPlu@nhd2TQrhl9 z8F^Y&g5!3k(@=cMx}!OS^u7-(GVud!vBi`by(}%l@skCXlXYnjXLQ+$Id^e|Euu@~ z0?)rKEEGGjn#%EG{@?~e8^?)-iseg=jILT8a?@+!M`?d-7w`cXz?Pq2i^yWj1uP6- zm>TMG6Rux_4M}jFbbt3k5BEVx3iE@BSr1{QXgR519wN`{bL_7`$OQ|6G3|Ok3Cj8~ z_@h`qT0dLud%Pj%Z0n{l;_rH6n<*@GFTg!m=RS93AO=AZ zyx12EVWOy6Dsl?xp7Hu0 zDH6E1p4U-&P%v5WZ5)hRs|%Pqc(Px04+f-AmwoeoedJ+6Pxpo5Q7ggpVMYzW>P#Bg zKsI1uK(PE+G2IMJDmwmg{QguPQxb(21f6#O-8T7{qADR*J?8KR%u`V@b&|PV?nma3 zr_nrHPCPsLG~GA5U`D{|*CbD$?7{h}g?XM|{v+R(TgHk>NQP0Kh()4rMW_6)dEl!2 z*PFJ4i~g`1AO8BRImOOuvNc>v2ae}2?q03|Ch9Nj`Y{m*(fR<}T1t8gs6BzBe@5Xx z{KZW>uix^8;oP&Sa9)3L)vlW1AenWQ5YBi><*ZEc1&yY~;4Qc3O-xi+C3awV%=7i(s&h^VXw<`kFC*1cB>j>EX zAYc4zaDQ?avq?s_8$ft-?{16PZuZ8%PKmW^Zju_}=k~#X14ruYf{3qSx(w)!NU+%& z554s-1tRN2*sr(O8v<|FQq>|&_nOoh?zrJH!<+K{(v8#!-j4TE|L*@R1UC^>?5{ZC zXW6AC%+{g<3kl|0yrNU)BcKc2uShm#L@mErBxE=K$T5x0?V4*{F%)YJiTzs@ni%!Y zLd3@JineR7`fk^rsptFMjsAR3I>|rZtflRDc-cH}ht0`+hDPtq_N){xuN?4N%}X4; zUOx|}*RteO79a_rEtKPz#S9jgJMbbx^qabg!NDvw_3>Z*ckVS5mwWPZmBJt4sy_}t zQU7KAzB3d>N`OYm2+wW!vkI9jxdNWut)3xhMUS=GNMw4se6LCA=|8Td!rtfmRD=51L`SeW}E&G-nN^O8oBzzmwPZ!g3 zt*(mxxj*u&23eD0V*y-axtnqvdAHZQ?r@lDW!h3SP;Tjnv>z9If1P1air>zQ(H-BZ+*ZqR7Z&{H%*e`2rz8M zvwgo1{+Zq4mJ!+#E1od&;WUAwAW zf^>}T!HGYHtpxLq@Q(KMK`)_U#WMXz44SIJ;_J~zAGwuSQgzG z^wCRmLpdA{2D;i@mZVUoMoZ+c`)v4Y@LP2{phc)RCNKYpENK_yiakTj_wfF*A_i^r1A;mZF9lR>EcdIb!++I zjTF@d{)>!4HCLAd4(r+Nj3(GOR zUe@h&`|B^w_h3bBoLW`xWFko2T2VqXLx^3}x;W+k1GGR(zx^}41J5=~i2*6Euu?X$ z#MpZ`rz{(IvlUYAXW3FYN0%+jF59UbtH{=6%VG3kDD#ZjmVo*211Vr8&KXv~ zyxRUAXwuIPB>@w?LEQg6)kVN8A~(&1e_x3ApKeMKF#kT0!~&kP4FZPlPO#i`+b_U9 zUU$)i$1vNxH2Y{^!_)hR5a`5{1R}>m`A?oss6=-DCW{bRvJMbAYZEIE%aWn|-{Aaj z&$ja?9QnV%ihQ}zncvoTyPFj;|K@Dj6zy5mXyJV`KxOQDihM9HUPg2?r-Hw9!@9b)P`A`*^mCuCwu3sN!>`J3cuApZNlxj-y@hStszBiTDh) zy5f^7@Cmx%gZh93vB^f_geUGnL+ukV6tldirM>@yG^6=A$X$T;8(?@S>6>FthSz<# zd;Q_d;fLSbe&)TGW4@pI+n3||uM=33r_~TRFO)H1^AFGzKIWf~r_sz(ns;c-z9~bQ zo@`O~v5S7OZ#>$8gRcrJnWOw|(9>Vd%0Y z2I&@L2`AsgtFITmau1iRzu7M{ePlB<~TG&wMkpZ2c!a%jk*&ohuxdL#bjyQr=P>~=i)c5cU89@Eiq; ze|s6XGcJ*Kx~>j{o_%>5CyBh99WCfu~fv+JFspb39x zH{peJNHY0pVI(#0P8iZ|X@PX_9VMG^mu$j%xgK3qf()-GUl-@Z*nST}AB$G36 z((}bNlz*P*RBVh70Bm!Vra`lCt$D37FM1HcdUIeyTrrLBWmpqlyntHs!=q?98H(Ar zAEWMBxrMst$C;wp=e+n$O1SSRDt6B)ve|pu)F zVdDWf!eK9?JKUtbNuc01iWMM#SGSuTF@;r!+0igk3)@s>R%)^^ft3!V7!XuFcG^?2JJLn}(0-Z55KQHR#0T2a;4 z;;g{M!ioy)U@PigqhYY z&QZcvxs+^`q0z}8`l|%gw;viqh@h=9MuE6gK#Zk8T!s)IqlMlRb}k};y{{H+mGjV6 z@g|8GrU*mjJYlH#+o>7e8<_HMvDBm*8KD6gAx3U{T5OV{a7iAp6v$8ax9`F8Sgt~< z5Bl0)_qTV@a`LO+O{RH<-rWZS-U4a`Vm9I00ugW&ptx%l65v!?u<^#gj~*3rwtb9u zs0YW~R}VE8K+3-?gp`%M+>ZU9v<&}k91l_zi=jZ^_?m=pgIjDZ+~8KW_UVEx9SOc- zeE2`g?-|Dr$M4Hx3Lif{eOP|axlT!U-E=p8=apWM)THwJ{`8zhx~lgCF_5@*=X$A2FnDex9_=3)0COlX=1wX^^!|@M<^mYA^EYZPN`y zVbfTyWK$556`22xfoYGVGU_RiwlFt^QI9@GGV0qwg;96L0J|YDz^#P)r!i}epc4+W zKG9qRSp8{BDXteVtsR<~pdKEEA^esN9?!1I$}hJ8#w%clWWH;(lvj!w=a_NoE(| zb{^t(%fSdzHqo7zyEf6MRIYFxZizwGHJG*XU`=O#m$uua^{pdI!`J@yqF)SUo()t6 z1{VcZVXosTmt|$4%N^JK-Dc5d`U6ax55A?+=FHc=#k4tf1Jh>S28A}pG=XD#+N-x( zw0RFtaJufy8wk=6(&iwf&Hcwn+6)QWoc{t_oI_B-4f&p3VMKL9I)YrDP7CWYAG^?% zHht4<_T3VLtm`oA8R=RruOz>3+6$Wyv-glTLqnN4Q<*l%C=tvxE?uK&@f4!XXWzDH zv#FhFGx~cP-~9anrp=V~Oq)sT725o6isYMzzHQNFemn8ajt6wU**wj`H%p&a`KG|L zs|8U#{~(ob_BFfG=7p&$-$2%lnAJQ;t7Scn_S4!ns(f?!6oqdt!CZeDr%`ml(L|e{ zZ?$Msbq~|#nynh&Y}m@Q`7+70`A1TrP0!JiZ*JUb(dLMIh;Po=s`E|bR0rS8*s1bO zp=Z~%i0aaDD&IWY>Pnl=DJtJU*6T3qSiP1jvWPad4JzM!mZk8`4Vde#G>xK}G&Gs8 z>lTYPsZ9YmcZGM(eX!A&xUY}Tu+SEDEiOI zM4NkWwrF$IW~R-fH)(wH-J6&;uf~}+Ka4B1={QRA&8nL%+PrZs@lEYbI^Udpw1aQ< zJ*)D~GS99D5Y>ams(cfTyV9m1OXVBL`hCp$<1tz-kDz@FX^k-p-3T={;CEuL>EsHkOuNQoCz0NmTSq{E= z`x%vQmV0(Rg{bZut@6#4b*{AWAEojQWPJv+c8%6*`T3DVo1Uo3H}_^LeDfUU+BjOH z=u1ZuZ7%GvX!H4sqjq?=Aym% zHboyef@o86lSP~Nq@LP&jm9?*U&FMCN0~O^s6v}Fj+A^e`X-Au*9tuqyGG}m{!9no z-1d~pH$Km2)oke$V`iG#&3y1*7qmVjx}Zd$KgbnK$FTeO-B%6#uL;0 z6tj5M^Z#*Ke|u3n8i|=FfvH00a=htp-@J{Ae;tc|2aBI2I_BD4dBPV#Ej6zm2If8j zN6VP=XqSM#bbBtv>C3>f4ws&ZlGT<&>iLlHOepa7Pa@C6ahZn8WD^e49D5!#f7QNE zb$=E5bC3Fr{3Z<-iTSUw!YZEugN3_il4JAqokvZkQNvGG;rv&~^6D!7lJf*s?ME8y z)pVKt=JLM(4=QgkM&cG zDLdcFr1CPcJg;kc8%22!AMw@YT`S7#OHg@XrMzNCc@M0F^7?Ar$~#1qx8$qK^S1Bt zKslqh9Q4Nj{&*^9+|DhcoC~m=SdG&g|6duuFB)e2e%x1%-^&gkZu~y3K^d2SJkc?J zf8H9u-&(DtdwrtY_#HRp!4UcViq!FYSEn+5zwZGazlVTAd;6^MJFXI^)r0_K!#1%w z7RT8Sy3HQLmu|Di z@M9`y4FAG4PM|j<&^Q3ym*W_v;}qEYRdQl0cPR6+41>4OMlxy4|A9$daBTp`)wnBo zpf*TjesSDo043d$V|pQ5`)iQA{xGJ&#I4=FCGSiud|A^0NT_BLlQ|Ys+Dj=F+Rjg6#BV*=vV?jEQrFr@73q8TMpTXV^!|fni^){&Z;H z7}wC7*{x1s#@ zt(P0E8HRVvJ3}AgyvkuLRntzxU(i`Dz{N&sg!>_#=B6jGTGWH+vi*|cSjHX)zxdwov?2?KC5Xcg5&I1b?mUEhuZUfcl(8qmue~>j*e9(T zKM23@q}#N`jWQ|+e(kG+s5fh5)XVT|UjU*$xj;q@z%M*gChezI-QR>?`{qG=4GkFv zNED#U8jCLQYu_Y@O0SnuU)H6OlQhrM-h|L@|$A}V@pG> z=f&}ve4_MoVlV#1GrdEZKbxSKoS13?rn;JhO%d7(-s>8Gb7Q8sydHPR*8w4hGOG`@ zO39{asfPJbSR4xTyl4W9iC2r0vp`iB9ReV)F!b@S@G0%2;y=JOSl@rZnl(EPfO%e= zLEZM0>FDgh>5u}N4jDX{Tx<6H$REiA^fsN(rWDXiEA3DDaGGKKa6Z~4FJ_aK1hp=1 ze+&5jkELi{{0NuJufe%v_+pBUX}Itq<^11+al;7rgkLvj7@xu4q3bh@D&}cM4&%W-+ zZr_%?QQqr38H>7K_72Uu9m-eIpPPZ}i`zYBQTuN1JA?iueV&Qm?e?E`t_k7pqN{f& z6;OS?Ed>gw5)~B73*npJ?Lp)99dS?8cs$wv>h6|_i@Mu;uKZ&3#H}xZ6x`bFvP=pH zvt-Z2o4d9Bb;94jWx_YgkX;TQFZnEa7T%Xvh7uBrd7K?hpys&Yj!Gv(vH3(`kG~&6 z67<1@l37~v#*5a|3Xug)D@ae`=8e@NPj3n585+mN{;SlGJ6u4B1$vop zvSY`4UE0P?FaXG)*lWpCl-96`Mgq;yEhl_>Fcnb@MeMCbSQ%$R4AdblA5tY34rO?D zP{fwZmk5msyAQ_WczOt-x5lMnFx0UPVy_&W05HDXm}Vq0MT}?11k%EpvjNV&XNEdD z#-XhZ#MzShoniuAe=zID^)7JHy1*mar$E|$@6rb`7q3~ycmTx&T5Na_@W-tH$FY7I zzK`(^jgqlGG|&$5L4Ag1HKe45^pF%4P%*CSY~SN+e`f%zL1!RK%PTKXgu7aP?z!@} zgZ}o{J)aq4{q650kMOkTr5D$fjs3jOKjs~8O^<)ZJHDEi&u%{wTB9JN-J6c1q0b6O zjhUDnKk*p|uk7FNAJgMs1jW35{@#0*fN4K#A4s^NS-+zHZ`1$d#^V1O^nVupKau{= zrvG#3|2+CXpZ+hP|BLAVDfIsv^#3&azl8puIacdPb#)V``)StIf^r$~wUz~^J zzF_Z~!cT{OY()>W=6^bLeeq)PEzkOv3*Wr$quMj*IFjosKqPIM@bT#=o{D1aD?#lS zR}cKa^XX6rE~UHRWz0o67QKG?;xxnPhF;qK62u$-lTTag;S_G=@KFwTbNFix|IJ~> zMiI{BFptCYIE-<44Tqf^zQEzT9Lnd0i^cmD9JX+H>Lw9>%IUx4aPlTSe=WbSam3%s zaK6Lg_c(l%!)G{rfx}lg+{59!9QJY8&*2|9{40l_arp0x_3}Spd=BCGPxyT!hfi^M z2Zx(Ej5z91?sz{vF5dkd)^V8R@CFV$Iqc%_6%PA2{4K`@DUDobNDWY{TzPE;kcv-r*U`^hi7oOio**z+{ocp4jfH5|q`yn@569Ny32GaSCk;YS>P#^JaYt`CPf z9OiLY!C?c37jt+shub;q=I~t(|G?pA9FAkTGKIrz4$t85JPwa#Iv>X2{utAV!<`&H z#Nk#Bui&tO!%7bGIh@I128W+TnQuAV!{H7N@8Yn9!)gvoI9$l#WDXDG_8ZObpGKHZ zxgG-?zRTe&96rL~tsHLVa6N}>I9w*-Fu#1n@ZaTdH-`^#cn60Ub9f<#l^mYM;Yl1$ z;cy&>15HeK4tH_*5Qp11{1^8R`RsUkY#Z7P<|P>v{&zo}dol@b-W!=3{H9<_EEEq% zYxzBqjE90vRmHv%UrAw6rQr`pLKq*csR=cP;=yD%8i72G(MY`!4<%*#fr@~w6 z$30&G02oRbMq_k?QI!l<)rXR$&B<7EvMd-6HieR*xGz!{HH>19VMLpgk+lH1DHKU! zIje$=&7p)D55?l41jL!ah}j$i6wStPQ#gs~6NnNNShT7LkX&9^dbTf6;VFkc7g#3o z@f4H>j9|RpsPI(zeI-Sn^75kPRlbsnqVj^GvI?*^%S%g3pgj0qPzoRY;&<^fAJ8O0 z`HDTO%8b%@Z73e9EezKrjexHN%Wn$S)F#69kzga%wINs=-LNVYZ}lTdWclT#1?3BJ zb3x9;qkw#})e!JKNT23dZ7>N`E%dFT@(caTJ!Ju3VG;hV_WCM{fHo`r6_^J;dVMQa zcve7ML4nU$)*Pw9Hpl^@R>dSe6NVtL8BUl%vnCj+Z44!n;hJ?4ez|8=QJ|u0$>wH5j0RmJRFSFH#Y|3W^r_VI8twV)&m>VBU99d zYNEC9qdef_a*9fpuk_TOW@$#~^GBMe36cK&#SXi*G%ZK<7oGEq#S$<-UR<19`!Rl{8DD zNz>EVX!;`IWH{Iu-WaMivmvRkq-Xlg*qKl zc?6hDsrm`1af6KQX5_$u5AuB3Rq?xw_Czo+iF5DgpZgmNPwCn;kq!uu}U%PqH!}J zh%~<@8cD{Zjg0~>@(uLY;9U9L0!^UoJ_w?!76exkdJuIK5MV(01XRF+VFKtxIFU@4 z(K?_;b#*PsmFjAEBUshdk>;jYD?|t`GqV9JOeR_?rw~9a!{Vx|XU{dGk&sA7$cKV8 z4G0y)O=K=XYY5jj%r!v>&o!y%5Ps{Ujm=F!RB93s6z19x*2~-wPBxgy271vrJ$p6* zgDN&eYje!i4Phu}U8ohPM+veMv*AYwngL@Hf?x@ALqjM6@C6YOu0}L0n~4m$L3FGrIP|P)(Bf zOz;U5P8b7r(G7?i$i}8%yj9^Tpf~}NEWx#Q=YZ2i4d%h4mOQ`0GfzUCXR#52oEMEW zs-+di`=~Fol|(W-e5y}mpRXpHdx3er5FGfe3b2mGtJZD6mkVYKWDBD;&8U+} z;S+-mlfh;pXmILk(5bjR36d0`P<0R*5$J0OEFP@~Z~(oA+GTw>$P7>yovX0{l;!Ma z%o(7la%{@ZV`|R>`ZvcTYCqKph{Z%nTiQHE;t1uFU~}MJ5Vpm>0?&3#zL$kS3&j)GI2lsyMd{l%%e&@jL1LigHiM za?n#nm1WBJigKwF0Vt{(uoKDN0*j|KP=LCmqOh=N71#;IrL0c{Oi-MGfNrOfX%RT5 zyh7@m0K}tJ02N6>Eh1+2`STX$=H}$g19R*G^Gq{86pV)xAQ;cbn4BDnT+ZFt`j`um zC81`}MU9XWl5uV;VKYcJf&w3~00J!{XS1ybctcf-mVrsJsJIA>V5B*ap&84WQjzY1@IKDcNFE+hK*TUr~Fc}Rrf-U%H_ee==vlW?XXhWcVkFizFz_C@~+Ju0QrnrH| zu3|qScUlmn{gcafH`;AzM3qBaezcbCWm1OXJDNJiYP3h`cNyB@b-_fkmT67)41|~j zZ75@9WL+e>Az~KA;~;L3e^-{QC@EcCQdLx5KHH+xGJk1lxoy8BjAhX{NF@_KleGXE zpayJpv^c=zKHe%73HZE+maWAZ7 zeuXZKupIRf7=$CTpZH5lmg6uD_`b;J*X2n;=}H{7c`7PA1uKlQw!>-sTFqgM!!`~( zIPB!Gi$hTk*v=&tz507`P$~(7#tGQ+h0$hcS+l4m24-Od`)lfW4fu!pSzu+pRbL$M&OSua zr_fWrqQGCevaq0ZRT1?IU=grqsCf+#WU5@iF?v;%9FGAm*!QcdfHahg3azh>LYl?x8BI#++4tUFn0y^DaWUMami@`O@@nD4biy98({*l;!$w305 zl*>Tk`%6LGEid+zugot!Z>3?3)B3p|#AQ)=erZJo_Cd5vW+hHHk%o#qpm8?iOg+7vR)lo$G17*Gv z^fpwKmKnM~uD}b?{?gUVSEayd%gcPri%LtBbooVoX09;?`&if@8Kt#PnXjn4fU#8L zQ)MdhCi2lJs=p;B45@6XUneX+)f&F4swoK82&MOzE?>a*0jg3%%2(S)l_HjG(%FLE zRx=pnH)MU}1ATRC@eG&xVsq6 zB5I>G6bgA^>(SKlh&7H(9gHknSyE8pD=nF=`>92FLMQ@XMQfWI87qVAsC8Agd=e$w z{;_hOMSrmQ{n6+;VH+#{UHZ;`R~`g!48@}YzDHP&h_7vef&wiq5C$mPd(zf3EO})2 zF&w7Z@tP=C@IsmhU%E03(E4YAPo$TPCUvTC?)eP#hz6jefUsv@D0)EyE5Y_CuP7>< z?cf`yxKjI*YR2gLW;g+8=a*t$zT?oyKnIq^S3HlPDm;580qr2cgR=dk3sS)YKFQWM zj6Ajr_4bQ|>Y>fnhlE`AtXNs@v*}GR{o%E7bOj;ZoL*$VFQ2HV`j1t9Ot9TA`OoG) z!?I6G3W_}bd{6$lfz@bkX?}1v3uJoG|0~(5Dzo~HrUGuBU(IZxB*^E219cpdLob3~f+bUww}g9cnPr#YBgQm1(;%J{Hms7` zNYYEN$uQzj(u?#7KCY8X0>4znXjt~W;S|j{Sy2igEIibC2VikkuS@$Wdsf2gpVHr; zs1k{XZuC-LSyg7$hvc9wccs%`z^m{CR<7`YErjp+`9N!j|HYak&=MPl9G|aK@C%^H z+!TYZur}Nn7E@wYe^w*-VD5aYO&^i2$9@X^dS0|{UO8H7W&kHE zpu5(FTBxJK0IaHXSrxgbsxTw=S28tZ2chK!H&@8 zSFK4Yt=(*yYS(KKA_hiY0I>BM4m6Z`S{l+BnjvR@2RpIM>j{)faiHsa#n7ZN0MM;| z7`{h@$nJq&i<5DHn3wS zZ>#NK&4|$$2`5bT@0RbA^|VEI^l2$WE$mmpcr+TJ2~c>ri{Ok(1XNN1&8vj#o1@K| zel4uj%Ok&&&40E`cb#Z7>~W}+J@8UmQc@%Yis5FjvHy5D*YRwNuXM!&52-XAUt~Y% z3g|WAcpP*qa*OSsy2c=x*m8WQ4vhr=Rf*vN@q>cDVkb05!l=i1%p$E$RQStit`cj6 z7ANWYWguM9N<#Uh>T_#8T1?~G`j4I1(&<&Se0fo!thj}@-Id{GWf>1h7b<#0@SVFY zL^QPKrx(yW`C65MLKRQvlD7s#c+oNs@L<4}D=elIJ;aj+Rn*W5e_Fmrd}`HsBbyEu z$7|ym;Yu*bq05im`=imu*;Id<>C|>&Y!p0fc_SU1@Dvy6@|N+jhET!|vBxjcenkH@ zf7e7lTJhLXia8ck&VSzJ2 zRbnKi>17{}w|JVkA(${X#9`23)&h4#5*9E+_YW)LT8@h>&T+c&tvca(a7L;=mu(F6 z@)WM}fO(q_W1tmEzfN(tsBq*|5VT{!V|r?XF*MIzM6v2GcG}QfKkP~+zH?R@sg*)GP|698$eI1SIV3g^NBT} zLxD%qHvnP)Mup0_4`s?S9-dnMRUVsLV{(UHSOzQ^hcS*rJ6QgA&G&|n(~$wXk^CXi zx;iK$8i|L1_KA=^z9@v+FM}Et>HMqc8FCX?{g)T|&^j!e?d5nkrRu0ftl^fy^0Z_* z`4d^c=a(0GR(Mu>&eiFh>eDVl7lq!>h9fujyXGe7CaRy$)p4!E15OY_5_HPOBVaw) zUH}>>lz9B;2q=|$koA?fw6wxDX1QOYuHj`j22vgSozw5A&a2@Q55*dTH6bIM3^gh9 zf^ylLLB=qTyHIP%fw8pv< zvHlEXB=fgr%kVr~Q@9qoFHf|s3)yzJbDmckIAVNmdyp8eoLW-mnbq&MqEh^onvGNu zjhan3_M(9@h`4%E=ZVwJP)iIH5VZR&9M#K_XNo`79)~$y&W`lFuCKUMUFT-a{fPWL zhn;^edY3A^N;)~^FV_c1lb+}KEYr>|&x6BPRMw~&3>X*{7L)-ymTKcAxnzO;Lafvb zF|Q>3w~~*PC60z%07Oef8qJa*&O2FFwqaP4Jp9lUf^9B3?J+rhCfijVdI>(|2>`?c zmx?-;0Z=~VO}qY@xo)Ho#9-fu&i5(4=PK-VC{)!}(~s)2yl=RdttG<0pF^7^xLnc{K~5*u5_? z*Q^JP&OK1V!+CaYS9^ht)jk1PT_X~$3blZY12OG7&e!Dea1)@S9Bo3#8YiKViEFmm zGimY=P2d4t&g%&jaXa#QRkx`@!*#+%H@8g`1GBo>BRj0DN)OAIQOqTUfU6^RM$h9^6uCGaIj-W`eJijY~ z&2^x6hBfiIUh4FO9HPKkBEZ-VWi8VxiDVUcz>?YMtLbLRMlNW+d7dqx; zw5aoECC;3cxWKTM?jp}wQpwQQDe3jlWIo8Y#!#>}!P_xZ{{qoK_5(T4*5@^1(L`9x zYlt~ZTf#~?Do4PHb>Uc5T{xa#M=MF8Dtp2kWRbPNwk{ZMl&fz;WZshhU!AsB^@E@F z6|IG0JIru)EPEeAbUg||o?@9j!$cmNO0> zRhldG8qV!+uM6Y(UE!y)Jwp{9du(p=i#^nGDqNfIb-gS7deX5d;Mh983Tq189qDsn zH0J~=SxSM=2R5?tBOIIcML_M&GiinL-KbMuDcZLmJHk8;UR{2 zx94KC`KcnP;4rgOKoV9!7p=6%WM^mSR(pTu|2I9>|aJRTCd#-J>nn>~*Lr zpX+m2DEp*6V&m!RMm2cNz4S+vr|zTD$Cg!9U^NG6e+WrPMUQH0C!9_e6dlU+v*vG5 zmRSm&&68JEw2DkT>iiK}CUOmIVKC7ULh;1t z9lk@YVQ`|Yw@4i$SpHPUOf|q(ho#b9PFdILdU$+2CWc&gUnU$EEo*tV_4 zzs}*E;hfNSPHK=WNU*=EQA!_u-a+L-ZQY{cd#(%CB%^U_KGO1iqMtlmGz zT?~D_pW@tL^9$^qi<-l6U=i9K3C5TlJPgC0MoB0bSMauc0qYrI+y9=zm(94g!-Xa3 z39hf#)@eA6LFrd?E+IfU5LPB8LXlcBay{&MRo5dp$%8UX&bL${Aa?E}SCgMhnHMRE zM&?CmZJLQ)$fWhmG_{kEtM?2t;GF&3xiG_!J~WLlthGIk>2JYDazVR7cey6Pk`F0- zW}E+oMJe;Emd{2O%zkiMvMcwS*!?8cr!L!B>MYHSxrfqRifNE5rZZLI7T;`LT3 zRii~&%DM@~U#88ClD_2q1a>>5&eb9>DO1?Gd^D`}F~cp})aF%b2_a8d*3#q>^IzDW zFULwRP&6^%zmRl_#xJS9*#K@AcbPc0*TZ-n?V+)Wp>Oa6{*pV@*#jXJgtR-zw<#A9 zYjCw?rN+#=#CacozFmZ$ZWH1A{J!Q65uS0U2#@4&4S&Ci!)csu4S#=y<4@+Wk>NhY z;aHA8gY$jL`F_mdSdRZUhZl3cKlA$yobC+9e=Eal8#+Sl&-%Rx_xFl$;I|?y`xHv8Upj}2IW!*<=eM+Ri22eHFaEw=mdBx& z!|rGJ+?QwVe7Ij_KY#Dxu>Y?DpMD94%js&h^BshEF}=&)5MkHfM83^CIp3`!{r+3^ zd;_mB9bRPoxc+6&bNM%l^m#Yw`8r<`-&@|2?JM%-GQ9q+obTIuzWyH0$L-g``MNpY z_?AfDd6k}T`;QpEx0$Y7PlLnmn??HAb$Y%&#mH`SQ5D#jkR^FdZ{G9OW^+I~jgIm$#kq?!SWRd8MAOn(5uk z_1Pim$?qnY)8;5Ii|IMQ{9!Pj{hY7=YA){@JzwsRxgGY1a2x0AVE)Uy%Dw%1n7 zZ}FSler@jgdbzy^I9-hEx1H%*#{Ho8Mm?Xw{IY}dZRdP3j*s2O`EJwmRWkj17=E?v z@7x~^=9lU#9Q}yv)yDl|kmXAmw?pR^k=}6N>1F)(bGi&JH}*qr2ky6dH|uh6GxJLx zw^tw2cl*oCXLoS>-RYnwx7#*u{|u%}HRHX%U8FC&LC=@R?J&sn>tVW>%n!M@r1CYj zx5SU@S;pn{F`T?R-Q{i{*JB&gHAD6vu6G&JqubeUnU0IOp4nVpH|H~0u2ehZ%VMVY z4z5ogw?hM$+p*cbyaq0(hwEo@d4mkEi~CQ;W=DTux_G&MSxiqa%O&&b)c%fP3(NB! z#&bXCYvB02JKX6RV|wD|ZaDrG;Cb_w%I z#?^Yh4Cb$GoUcXdY37$|mM`7ka>z5*3!6Di=X?W_zSp_)^$u=_#f)z!=j-8o9ZZk? z4!R7o{OVzT+{Sd-&v5d%A9X7F2(Qj=VYy^7J-2cCE{^ZLjOAdP-j8ybKf9!T#O3Ya z^4o@yO9tb)jmtARUq92SgXQ4We3-Z)@`dZ&%lahOVb|p{-L^BH4btvm{JYrh z$#9H2%DBC~l0LG2tfw;MxWggOdbobMjAs^?m%;5|aye~|^7b>IWV2lB<@Vpf?`2$0 zx1+ptuKysHmo4?Rv=gp$*SG!B&SH78SjtbPOE2?D?iO86EarZl%l$7)$}w)AHrAWH zcR1u3f8W7)cFXaY)EC3Z`3|P%cFvzG+mGwr&w40tnBkl0$>j_w#!%kBf61`7$_N2B+)hu#3Y^PH$dp=cB7w z`dF^W@RwY#54gO0IN!Y@luz#wleG7Ke$V?*J>Ru|>3&B#S#HtW2ua`H5@!fp5PRCAuFZ)D4Pq)jFPUcT{ z#AgkY-#k3Ey^z1Mm_7rHcNyc`{R`$3=8x+8bpG1ReA&S5?dA5a8I@`4yLTM*R14d-ZcY@)%wg*C&_p==`1zFP-^!tO5_iZpNdZ;dF8P zS8_f3AJp4lJ}pP4!Xx|`uP%nWjo$|uekap4<9?k^olM8YT<###yM^CPPT#@dXfC&F zlHSfe{JuluhvW15Cb{!N2A4a)<#ckG$M~CE|JZ}NoEqeG*&OC_{nEJ|y0&vYAJpk) z9;xGz%kLR1Z|=Aqp9h!bInv1|cBIZ1)^mg&zv;+Fmw&kNs-^h<$VdOSbhIOW5k0?M zD&L1ok8jIA+_O~Rwbx1~`KOxOcQNy24~KnB*D{A3kooesKP+Z?r869_YzId^`DAfD zGh{n*n0=I9e_ z7l*R!tfSoJdpGxoF3#T~{pgHO+4fXAy&PZtUC#Giy?q9=Qsn}|+s1GPWGL-ihG%g3c@8{G{+`SE`XnCw-o@#S@9O!g z`Fkhl@0NaYneT3qe*fJ%{$)qI_pi#M^?J!?AS<=KuF)lA% z&gXExj(bw=21>{Ix;ZptK7KEA$wz)k{=P%v#pMq0yKzq{p4e8EJfGFaVJC+@oWJ@m zk-qybT_5%F_Y6+IgWr4jy_?7J8A?7x!{qN>9A`ZQtk(r>i9HFOXX`st&j708O~yU&*CtH{UX(u zIpiUKPnYSLF4_DZyUd*~<}`=CoaSEtylL+Ga+{3Lu*e=Oe(!kNoe#TYdM>Y@!%ohh%lX=#*6VK^qt`2g->d&F>R(6CAC_hu z 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 Date: Mon, 5 Oct 2020 16:17:37 +0200 Subject: [PATCH 3269/3421] Update typehint --- freqtrade/commands/build_config_commands.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/commands/build_config_commands.py b/freqtrade/commands/build_config_commands.py index 79256db1d..7bdbcc057 100644 --- a/freqtrade/commands/build_config_commands.py +++ b/freqtrade/commands/build_config_commands.py @@ -1,6 +1,6 @@ import logging from pathlib import Path -from typing import Any, Dict +from typing import Any, Dict, List from questionary import Separator, prompt @@ -48,7 +48,7 @@ def ask_user_config() -> Dict[str, Any]: Interactive questions built using https://github.com/tmbo/questionary :returns: Dict with keys to put into template """ - questions = [ + questions: List[Dict[str, Any]] = [ { "type": "confirm", "name": "dry_run", From 378b214a565c425e42309c9e94e0f08c008666db Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Oct 2020 19:27:28 +0200 Subject: [PATCH 3270/3421] Remove hyperopt-loss default option Force users to make a concious choice on a hyperopt-loss function --- .github/workflows/ci.yml | 2 +- .travis.yml | 2 +- docs/advanced-hyperopt.md | 4 ++-- docs/bot-usage.md | 3 +-- docs/faq.md | 2 +- docs/hyperopt.md | 12 +++++------- freqtrade/commands/cli_options.py | 4 +--- freqtrade/constants.py | 1 - freqtrade/resolvers/hyperopt_resolver.py | 10 +++++----- 9 files changed, 17 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e6c6521eb..fa599f361 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -88,7 +88,7 @@ jobs: run: | cp config.json.example config.json freqtrade create-userdir --userdir user_data - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt --print-all + freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt --hyperopt-loss SharpeHyperOptLossDaily --print-all - name: Flake8 run: | diff --git a/.travis.yml b/.travis.yml index 0cb76b78b..9b8448db5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,7 +33,7 @@ jobs: - script: - cp config.json.example config.json - freqtrade create-userdir --userdir user_data - - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt + - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt --hyperopt-loss SharpeHyperOptLossDaily name: hyperopt - script: flake8 name: flake8 diff --git a/docs/advanced-hyperopt.md b/docs/advanced-hyperopt.md index dfabf2b91..59ebc16b5 100644 --- a/docs/advanced-hyperopt.md +++ b/docs/advanced-hyperopt.md @@ -27,9 +27,9 @@ class MyAwesomeHyperOpt2(MyAwesomeHyperOpt): and then quickly switch between hyperopt classes, running optimization process with hyperopt class you need in each particular case: ``` -$ freqtrade hyperopt --hyperopt MyAwesomeHyperOpt --strategy MyAwesomeStrategy ... +$ freqtrade hyperopt --hyperopt MyAwesomeHyperOpt --hyperopt-loss SharpeHyperOptLossDaily --strategy MyAwesomeStrategy ... or -$ freqtrade hyperopt --hyperopt MyAwesomeHyperOpt2 --strategy MyAwesomeStrategy ... +$ freqtrade hyperopt --hyperopt MyAwesomeHyperOpt2 --hyperopt-loss SharpeHyperOptLossDaily --strategy MyAwesomeStrategy ... ``` ## Creating and using a custom loss function diff --git a/docs/bot-usage.md b/docs/bot-usage.md index 62c515b44..a07a34b94 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -356,8 +356,7 @@ optional arguments: Hyperopt-loss-functions are: DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss, SharpeHyperOptLossDaily, SortinoHyperOptLoss, - SortinoHyperOptLossDaily.(default: - `DefaultHyperOptLoss`). + SortinoHyperOptLossDaily. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). diff --git a/docs/faq.md b/docs/faq.md index d8af7798c..a775060de 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -140,7 +140,7 @@ Since hyperopt uses Bayesian search, running for too many epochs may not produce It's therefore recommended to run between 500-1000 epochs over and over until you hit at least 10.000 epochs in total (or are satisfied with the result). You can best judge by looking at the results - if the bot keeps discovering better strategies, it's best to keep on going. ```bash -freqtrade hyperopt --hyperop SampleHyperopt --strategy SampleStrategy -e 1000 +freqtrade hyperopt --hyperop SampleHyperopt --hyperopt-loss SharpeHyperOptLossDaily --strategy SampleStrategy -e 1000 ``` ### Why does it take a long time to run hyperopt? diff --git a/docs/hyperopt.md b/docs/hyperopt.md index d26cbeeb2..ff1c4a3d7 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -80,7 +80,7 @@ Rarely you may also need to override: # Have a working strategy at hand. freqtrade new-hyperopt --hyperopt EmptyHyperopt - freqtrade hyperopt --hyperopt EmptyHyperopt --spaces roi stoploss trailing --strategy MyWorkingStrategy --config config.json -e 100 + freqtrade hyperopt --hyperopt EmptyHyperopt --hyperopt-loss SharpeHyperOptLossDaily --spaces roi stoploss trailing --strategy MyWorkingStrategy --config config.json -e 100 ``` ### 1. Install a Custom Hyperopt File @@ -205,14 +205,12 @@ add it to the `populate_indicators()` method in your custom hyperopt file. Each hyperparameter tuning requires a target. This is usually defined as a loss function (sometimes also called objective function), which should decrease for more desirable results, and increase for bad results. -By default, Freqtrade uses a loss function, which has been with freqtrade since the beginning and optimizes mostly for short trade duration and avoiding losses. - -A different loss function can be specified by using the `--hyperopt-loss ` argument. +A loss function must be specified via the `--hyperopt-loss ` argument (or optionally via the configuration under the `"hyperopt_loss"` key). This class should be in its own file within the `user_data/hyperopts/` directory. Currently, the following loss functions are builtin: -* `DefaultHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function) +* `DefaultHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function) - Mostly for short trade duration and avoiding losses. * `OnlyProfitHyperOptLoss` (which takes only amount of profit into consideration) * `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on trade returns relative to standard deviation) * `SharpeHyperOptLossDaily` (optimizes Sharpe Ratio calculated on **daily** trade returns relative to standard deviation) @@ -229,7 +227,7 @@ Because hyperopt tries a lot of combinations to find the best parameters it will We strongly recommend to use `screen` or `tmux` to prevent any connection loss. ```bash -freqtrade hyperopt --config config.json --hyperopt --strategy -e 500 --spaces all +freqtrade hyperopt --config config.json --hyperopt --hyperopt-loss --strategy -e 500 --spaces all ``` Use `` as the name of the custom hyperopt used. @@ -263,7 +261,7 @@ freqtrade hyperopt --hyperopt --strategy --timeran Hyperopt can reuse `populate_indicators`, `populate_buy_trend`, `populate_sell_trend` from your strategy, assuming these methods are **not** in your custom hyperopt file, and a strategy is provided. ```bash -freqtrade hyperopt --strategy SampleStrategy --hyperopt SampleHyperopt +freqtrade hyperopt --hyperopt SampleHyperopt --hyperopt-loss SharpeHyperOptLossDaily --strategy SampleStrategy ``` ### Running Hyperopt with Smaller Search Space diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 3c5775768..f991f6a4d 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -258,10 +258,8 @@ AVAILABLE_CLI_OPTIONS = { 'Different functions can generate completely different results, ' 'since the target for optimization is different. Built-in Hyperopt-loss-functions are: ' 'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss, SharpeHyperOptLossDaily, ' - 'SortinoHyperOptLoss, SortinoHyperOptLossDaily.' - '(default: `%(default)s`).', + 'SortinoHyperOptLoss, SortinoHyperOptLossDaily.', metavar='NAME', - default=constants.DEFAULT_HYPEROPT_LOSS, ), "hyperoptexportfilename": Arg( '--hyperopt-filename', diff --git a/freqtrade/constants.py b/freqtrade/constants.py index de663bd4b..8e92d3ed8 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -11,7 +11,6 @@ DEFAULT_EXCHANGE = 'bittrex' PROCESS_THROTTLE_SECS = 5 # sec HYPEROPT_EPOCH = 100 # epochs RETRY_TIMEOUT = 30 # sec -DEFAULT_HYPEROPT_LOSS = 'DefaultHyperOptLoss' DEFAULT_DB_PROD_URL = 'sqlite:///tradesv3.sqlite' DEFAULT_DB_DRYRUN_URL = 'sqlite:///tradesv3.dryrun.sqlite' UNLIMITED_STAKE_AMOUNT = 'unlimited' diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 5e73498ae..2fd7abb93 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -7,7 +7,7 @@ import logging from pathlib import Path from typing import Dict -from freqtrade.constants import DEFAULT_HYPEROPT_LOSS, USERPATH_HYPEROPTS +from freqtrade.constants import USERPATH_HYPEROPTS from freqtrade.exceptions import OperationalException from freqtrade.optimize.hyperopt_interface import IHyperOpt from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss @@ -70,10 +70,10 @@ class HyperOptLossResolver(IResolver): :param config: configuration dictionary """ - # Verify the hyperopt_loss is in the configuration, otherwise fallback to the - # default hyperopt loss - hyperoptloss_name = config.get('hyperopt_loss') or DEFAULT_HYPEROPT_LOSS - + hyperoptloss_name = config.get('hyperopt_loss') + if not hyperoptloss_name: + raise OperationalException("No Hyperopt loss set. Please use `--hyperopt-loss` to " + "specify the Hyperopt-Loss class to use.") hyperoptloss = HyperOptLossResolver.load_object(hyperoptloss_name, config, kwargs={}, extra_dir=config.get('hyperopt_path')) From fa1d1679f0310c5ee2cd7942a45a57f873ab0149 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Oct 2020 19:33:50 +0200 Subject: [PATCH 3271/3421] Adapt tests to work without default hyperoptloss --- tests/optimize/test_hyperopt.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 6c49f090c..636c24c97 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -33,6 +33,7 @@ def hyperopt_conf(default_conf): hyperconf = deepcopy(default_conf) hyperconf.update({ 'hyperopt': 'DefaultHyperOpt', + 'hyperopt_loss': 'DefaultHyperOptLoss', 'hyperopt_path': str(Path(__file__).parent / 'hyperopts'), 'epochs': 1, 'timerange': None, @@ -236,6 +237,7 @@ def test_hyperoptlossresolver(mocker, default_conf) -> None: 'freqtrade.resolvers.hyperopt_resolver.HyperOptLossResolver.load_object', MagicMock(return_value=hl) ) + default_conf.update({'hyperopt_loss': 'DefaultHyperoptLoss'}) x = HyperOptLossResolver.load_hyperoptloss(default_conf) assert hasattr(x, "hyperopt_loss_function") @@ -278,6 +280,7 @@ def test_start(mocker, hyperopt_conf, caplog) -> None: 'hyperopt', '--config', 'config.json', '--hyperopt', 'DefaultHyperOpt', + '--hyperopt-loss', 'DefaultHyperOptLoss', '--epochs', '5' ] pargs = get_args(args) @@ -301,6 +304,7 @@ def test_start_no_data(mocker, hyperopt_conf) -> None: 'hyperopt', '--config', 'config.json', '--hyperopt', 'DefaultHyperOpt', + '--hyperopt-loss', 'DefaultHyperOptLoss', '--epochs', '5' ] pargs = get_args(args) @@ -318,6 +322,7 @@ def test_start_filelock(mocker, hyperopt_conf, caplog) -> None: 'hyperopt', '--config', 'config.json', '--hyperopt', 'DefaultHyperOpt', + '--hyperopt-loss', 'DefaultHyperOptLoss', '--epochs', '5' ] pargs = get_args(args) @@ -325,8 +330,8 @@ def test_start_filelock(mocker, hyperopt_conf, caplog) -> None: assert log_has("Another running instance of freqtrade Hyperopt detected.", caplog) -def test_loss_calculation_prefer_correct_trade_count(default_conf, hyperopt_results) -> None: - hl = HyperOptLossResolver.load_hyperoptloss(default_conf) +def test_loss_calculation_prefer_correct_trade_count(hyperopt_conf, hyperopt_results) -> None: + hl = HyperOptLossResolver.load_hyperoptloss(hyperopt_conf) correct = hl.hyperopt_loss_function(hyperopt_results, 600, datetime(2019, 1, 1), datetime(2019, 5, 1)) over = hl.hyperopt_loss_function(hyperopt_results, 600 + 100, @@ -337,11 +342,11 @@ def test_loss_calculation_prefer_correct_trade_count(default_conf, hyperopt_resu assert under > correct -def test_loss_calculation_prefer_shorter_trades(default_conf, hyperopt_results) -> None: +def test_loss_calculation_prefer_shorter_trades(hyperopt_conf, hyperopt_results) -> None: resultsb = hyperopt_results.copy() resultsb.loc[1, 'trade_duration'] = 20 - hl = HyperOptLossResolver.load_hyperoptloss(default_conf) + hl = HyperOptLossResolver.load_hyperoptloss(hyperopt_conf) longer = hl.hyperopt_loss_function(hyperopt_results, 100, datetime(2019, 1, 1), datetime(2019, 5, 1)) shorter = hl.hyperopt_loss_function(resultsb, 100, @@ -349,13 +354,13 @@ def test_loss_calculation_prefer_shorter_trades(default_conf, hyperopt_results) assert shorter < longer -def test_loss_calculation_has_limited_profit(default_conf, hyperopt_results) -> None: +def test_loss_calculation_has_limited_profit(hyperopt_conf, hyperopt_results) -> None: results_over = hyperopt_results.copy() results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 results_under = hyperopt_results.copy() results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 - hl = HyperOptLossResolver.load_hyperoptloss(default_conf) + hl = HyperOptLossResolver.load_hyperoptloss(hyperopt_conf) correct = hl.hyperopt_loss_function(hyperopt_results, 600, datetime(2019, 1, 1), datetime(2019, 5, 1)) over = hl.hyperopt_loss_function(results_over, 600, From a4a8abfdc058542b8a2b85db3625318bc842cd1e Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Oct 2020 20:06:34 +0200 Subject: [PATCH 3272/3421] Update hyperopt documentation --- docs/hyperopt.md | 80 +++++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 32 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index ff1c4a3d7..87302a675 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -37,12 +37,20 @@ pip install -r requirements-hyperopt.txt Before we start digging into Hyperopt, we recommend you to take a look at the sample hyperopt file located in [user_data/hyperopts/](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt.py). -Configuring hyperopt is similar to writing your own strategy, and many tasks will be similar and a lot of code can be copied across from the strategy. +Configuring hyperopt is similar to writing your own strategy, and many tasks will be similar. -The simplest way to get started is to use `freqtrade new-hyperopt --hyperopt AwesomeHyperopt`. -This will create a new hyperopt file from a template, which will be located under `user_data/hyperopts/AwesomeHyperopt.py`. +!!! Tip "About this page" + For this page, we will be using a fictional strategy called `AwesomeStrategy` - which will be optimized using the `AwesomeHyperopt` class. -### Checklist on all tasks / possibilities in hyperopt +The simplest way to get started is to use the following, command, which will create a new hyperopt file from a template, which will be located under `user_data/hyperopts/AwesomeHyperopt.py`. + +``` bash +freqtrade new-hyperopt --hyperopt AwesomeHyperopt +``` + +### Hyperopt checklist + +Checklist on all tasks / possibilities in hyperopt Depending on the space you want to optimize, only some of the below are required: @@ -54,17 +62,15 @@ Depending on the space you want to optimize, only some of the below are required !!! Note `populate_indicators` needs to create all indicators any of thee spaces may use, otherwise hyperopt will not work. -Optional - can also be loaded from a strategy: +Optional in hyperopt - can also be loaded from a strategy (recommended): * copy `populate_indicators` from your strategy - otherwise default-strategy will be used * copy `populate_buy_trend` from your strategy - otherwise default-strategy will be used * copy `populate_sell_trend` from your strategy - otherwise default-strategy will be used -!!! Note - Assuming the optional methods are not in your hyperopt file, please use `--strategy AweSomeStrategy` which contains these methods so hyperopt can use these methods instead. - !!! Note You always have to provide a strategy to Hyperopt, even if your custom Hyperopt class contains all methods. + Assuming the optional methods are not in your hyperopt file, please use `--strategy AweSomeStrategy` which contains these methods so hyperopt can use these methods instead. Rarely you may also need to override: @@ -83,14 +89,17 @@ Rarely you may also need to override: freqtrade hyperopt --hyperopt EmptyHyperopt --hyperopt-loss SharpeHyperOptLossDaily --spaces roi stoploss trailing --strategy MyWorkingStrategy --config config.json -e 100 ``` -### 1. Install a Custom Hyperopt File +### Create a Custom Hyperopt File -Put your hyperopt file into the directory `user_data/hyperopts`. +Let assume you want a hyperopt file `AwesomeHyperopt.py`: -Let assume you want a hyperopt file `awesome_hyperopt.py`: -Copy the file `user_data/hyperopts/sample_hyperopt.py` into `user_data/hyperopts/awesome_hyperopt.py` +``` bash +freqtrade new-hyperopt --hyperopt AwesomeHyperopt +``` -### 2. Configure your Guards and Triggers +This command will create a new hyperopt file from a template, allowing you to get started quickly. + +### Configure your Guards and Triggers There are two places you need to change in your hyperopt file to add a new buy hyperopt for testing: @@ -102,14 +111,16 @@ There you have two different types of indicators: 1. `guards` and 2. `triggers`. 1. Guards are conditions like "never buy if ADX < 10", or never buy if current price is over EMA10. 2. Triggers are ones that actually trigger buy in specific moment, like "buy when EMA5 crosses over EMA10" or "buy when close price touches lower Bollinger band". +!!! Hint "Guards and Triggers" + Technically, there is no difference between Guards and Triggers. + However, this guide will make this distinction to make it clear that signals should not be "sticking". + Sticking signals are signals that are active for multiple candles. This can lead into buying a signal late (right before the signal disappears - which means that the chance of success is a lot lower than right at the beginning). + Hyper-optimization will, for each epoch round, pick one trigger and possibly -multiple guards. The constructed strategy will be something like -"*buy exactly when close price touches lower Bollinger band, BUT only if +multiple guards. The constructed strategy will be something like "*buy exactly when close price touches lower Bollinger band, BUT only if ADX > 10*". -If you have updated the buy strategy, i.e. changed the contents of -`populate_buy_trend()` method, you have to update the `guards` and -`triggers` your hyperopt must use correspondingly. +If you have updated the buy strategy, i.e. changed the contents of `populate_buy_trend()` method, you have to update the `guards` and `triggers` your hyperopt must use correspondingly. #### Sell optimization @@ -154,7 +165,7 @@ We will start by defining a search space: Above definition says: I have five parameters I want you to randomly combine to find the best combination. Two of them are integer values (`adx-value` -and `rsi-value`) and I want you test in the range of values 20 to 40. +and `rsi-value`) and I want you test in the range of values 20 to 40. Then we have three category variables. First two are either `True` or `False`. We use these to either enable or disable the ADX and RSI guards. The last one we call `trigger` and use it to decide which buy trigger we want to use. @@ -192,14 +203,14 @@ So let's write the buy strategy using these values: return populate_buy_trend ``` -Hyperopting will now call this `populate_buy_trend` as many times you ask it (`epochs`) -with different value combinations. It will then use the given historical data and make -buys based on the buy signals generated with the above function and based on the results -it will end with telling you which parameter combination produced the best profits. +Hyperopt will now call `populate_buy_trend()` many times (`epochs`) with different value combinations. +It will use the given historical data and make buys based on the buy signals generated with the above function. +Based on the results, hyperopt will tell you which parameter combination produced the best results (based on the configured [loss function](#loss-functions)). -The above setup expects to find ADX, RSI and Bollinger Bands in the populated indicators. -When you want to test an indicator that isn't used by the bot currently, remember to -add it to the `populate_indicators()` method in your custom hyperopt file. +!!! Note + The above setup expects to find ADX, RSI and Bollinger Bands in the populated indicators. + When you want to test an indicator that isn't used by the bot currently, remember to + add it to the `populate_indicators()` method in your strategy or hyperopt file. ## Loss-functions @@ -232,14 +243,15 @@ freqtrade hyperopt --config config.json --hyperopt --hyperopt-los Use `` as the name of the custom hyperopt used. -The `-e` option will set how many evaluations hyperopt will do. We recommend -running at least several thousand evaluations. +The `-e` option will set how many evaluations hyperopt will do. Since hyperopt uses Bayesian search, running too many epochs at once may not produce greater results. Experience has shown that best results are usually not improving much after 500-1000 epochs. +Doing multiple runs (executions) with a few 1000 epochs and different random state will most likely produce different results. The `--spaces all` option determines that all possible parameters should be optimized. Possibilities are listed below. !!! Note Hyperopt will store hyperopt results with the timestamp of the hyperopt start time. Reading commands (`hyperopt-list`, `hyperopt-show`) can use `--hyperopt-filename ` to read and display older hyperopt results. + You can find a list of filenames with `ls -l user_data/hyperopt_results/`. ### Execute Hyperopt with different historical data source @@ -247,7 +259,7 @@ If you would like to hyperopt parameters using an alternate historical data set you have on-disk, use the `--datadir PATH` option. By default, hyperopt uses data from directory `user_data/data`. -### Running Hyperopt with Smaller Testset +### Running Hyperopt with a smaller test-set Use the `--timerange` argument to change how much of the test-set you want to use. For example, to use one month of data, pass the following parameter to the hyperopt call: @@ -437,7 +449,7 @@ Stoploss: -0.27996 In order to use this best stoploss value found by Hyperopt in backtesting and for live trades/dry-run, copy-paste it as the value of the `stoploss` attribute of your custom strategy: -``` +``` python # Optimal stoploss designed for the strategy # This attribute will be overridden if the config file contains "stoploss" stoploss = -0.27996 @@ -471,7 +483,7 @@ Trailing stop: In order to use these best trailing stop parameters found by Hyperopt in backtesting and for live trades/dry-run, copy-paste them as the values of the corresponding attributes of your custom strategy: -``` +``` python # Trailing stop # These attributes will be overridden if the config file contains corresponding values. trailing_stop = True @@ -496,4 +508,8 @@ After you run Hyperopt for the desired amount of epochs, you can later list all Once the optimized strategy has been implemented into your strategy, you should backtest this strategy to make sure everything is working as expected. -To achieve same results (number of trades, their durations, profit, etc.) than during Hyperopt, please use same set of arguments `--dmmp`/`--disable-max-market-positions` and `--eps`/`--enable-position-stacking` for Backtesting. +To achieve same results (number of trades, their durations, profit, etc.) than during Hyperopt, please use same configuration and parameters (timerange, timeframe, ...) used for hyperopt `--dmmp`/`--disable-max-market-positions` and `--eps`/`--enable-position-stacking` for Backtesting. + +Should results don't match, please double-check to make sure you transferred all conditions correctly. +Pay special care to the stoploss (and trailing stoploss) parameters, as these are often set in configuration files, which override changes to the strategy. +You should also carefully review the log of your backtest to ensure that there were no parameters inadvertently set by the configuration (like `stoploss` or `trailing_stop`). From 14e87ed4a172ae3ecaa80cfce2f7a0130e36d150 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Oct 2020 20:13:09 +0200 Subject: [PATCH 3273/3421] Improvements to hyperopt docs --- docs/hyperopt.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 87302a675..91bc32e48 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -137,7 +137,7 @@ To avoid naming collisions in the search-space, please prefix all sell-spaces wi The Strategy class exposes the timeframe value as the `self.timeframe` attribute. The same value is available as class-attribute `HyperoptName.timeframe`. -In the case of the linked sample-value this would be `SampleHyperOpt.timeframe`. +In the case of the linked sample-value this would be `AwesomeHyperopt.timeframe`. ## Solving a Mystery @@ -273,16 +273,15 @@ freqtrade hyperopt --hyperopt --strategy --timeran Hyperopt can reuse `populate_indicators`, `populate_buy_trend`, `populate_sell_trend` from your strategy, assuming these methods are **not** in your custom hyperopt file, and a strategy is provided. ```bash -freqtrade hyperopt --hyperopt SampleHyperopt --hyperopt-loss SharpeHyperOptLossDaily --strategy SampleStrategy +freqtrade hyperopt --hyperopt AwesomeHyperopt --hyperopt-loss SharpeHyperOptLossDaily --strategy AwesomeStrategy ``` ### Running Hyperopt with Smaller Search Space Use the `--spaces` option to limit the search space used by hyperopt. -Letting Hyperopt optimize everything is a huuuuge search space. Often it -might make more sense to start by just searching for initial buy algorithm. -Or maybe you just want to optimize your stoploss or roi table for that awesome -new buy strategy you have. +Letting Hyperopt optimize everything is a huuuuge search space. +Often it might make more sense to start by just searching for initial buy algorithm. +Or maybe you just want to optimize your stoploss or roi table for that awesome new buy strategy you have. Legal values are: @@ -427,7 +426,9 @@ These ranges should be sufficient in most cases. The minutes in the steps (ROI d If you have the `generate_roi_table()` and `roi_space()` methods in your custom hyperopt file, remove them in order to utilize these adaptive ROI tables and the ROI hyperoptimization space generated by Freqtrade by default. -Override the `roi_space()` method if you need components of the ROI tables to vary in other ranges. Override the `generate_roi_table()` and `roi_space()` methods and implement your own custom approach for generation of the ROI tables during hyperoptimization if you need a different structure of the ROI tables or other amount of rows (steps). A sample for these methods can be found in [user_data/hyperopts/sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_advanced.py). +Override the `roi_space()` method if you need components of the ROI tables to vary in other ranges. Override the `generate_roi_table()` and `roi_space()` methods and implement your own custom approach for generation of the ROI tables during hyperoptimization if you need a different structure of the ROI tables or other amount of rows (steps). + +A sample for these methods can be found in [sample_hyperopt_advanced.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_hyperopt_advanced.py). ### Understand Hyperopt Stoploss results From 8c2f7631939e89118715349ef3277b4b942652cf Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 5 Oct 2020 20:36:16 +0200 Subject: [PATCH 3274/3421] Add test to ensure --hyperopt-loss is mandatory --- .github/workflows/ci.yml | 2 +- freqtrade/resolvers/hyperopt_resolver.py | 4 ---- tests/optimize/test_hyperopt.py | 7 +++++++ 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa599f361..5e9612837 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -154,7 +154,7 @@ jobs: run: | cp config.json.example config.json freqtrade create-userdir --userdir user_data - freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt --print-all + freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt SampleHyperOpt --hyperopt-loss SharpeHyperOptLossDaily --print-all - name: Flake8 run: | diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 2fd7abb93..328dc488b 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -82,8 +82,4 @@ class HyperOptLossResolver(IResolver): hyperoptloss.__class__.ticker_interval = str(config['timeframe']) hyperoptloss.__class__.timeframe = str(config['timeframe']) - if not hasattr(hyperoptloss, 'hyperopt_loss_function'): - raise OperationalException( - f"Found HyperoptLoss class {hyperoptloss_name} does not " - "implement `hyperopt_loss_function`.") return hyperoptloss diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 636c24c97..f699473f7 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -230,6 +230,13 @@ def test_hyperoptresolver_noname(default_conf): HyperOptResolver.load_hyperopt(default_conf) +def test_hyperoptlossresolver_noname(default_conf): + with pytest.raises(OperationalException, + match="No Hyperopt loss set. Please use `--hyperopt-loss` to specify " + "the Hyperopt-Loss class to use."): + HyperOptLossResolver.load_hyperoptloss(default_conf) + + def test_hyperoptlossresolver(mocker, default_conf) -> None: hl = DefaultHyperOptLoss From 299285a7bb89c397357a5b0cc913683094661c21 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 6 Oct 2020 09:18:49 +0200 Subject: [PATCH 3275/3421] Update actions image to ubuntu20.04 --- .github/workflows/ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e6c6521eb..2aecd7010 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ ubuntu-18.04, macos-latest ] + os: [ ubuntu-18.04, ubuntu-20.04, macos-latest ] python-version: [3.7, 3.8] steps: @@ -70,7 +70,7 @@ jobs: pytest --random-order --cov=freqtrade --cov-config=.coveragerc - name: Coveralls - if: (startsWith(matrix.os, 'ubuntu') && matrix.python-version == '3.8') + if: (startsWith(matrix.os, 'ubuntu-20') && matrix.python-version == '3.8') env: # Coveralls token. Not used as secret due to github not providing secrets to forked repositories COVERALLS_REPO_TOKEN: 6D1m0xupS3FgutfuGao8keFf9Hc0FpIXu @@ -176,7 +176,7 @@ jobs: url: ${{ secrets.SLACK_WEBHOOK }} docs_check: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 @@ -194,7 +194,7 @@ jobs: url: ${{ secrets.SLACK_WEBHOOK }} cleanup-prior-runs: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Cleanup previous runs on this branch uses: rokroskar/workflow-run-cleanup-action@v0.2.2 @@ -205,7 +205,7 @@ jobs: # Notify on slack only once - when CI completes (and after deploy) in case it's successfull notify-complete: needs: [ build, build_windows, docs_check ] - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - name: Slack Notification uses: homoluctus/slatify@v1.8.0 @@ -218,7 +218,7 @@ jobs: deploy: needs: [ build, build_windows, docs_check ] - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade' steps: - uses: actions/checkout@v2 From 72cf3147b865063000100fee974a5e4ae4a7ef04 Mon Sep 17 00:00:00 2001 From: apneamona <65978183+apneamona@users.noreply.github.com> Date: Tue, 6 Oct 2020 20:17:05 +0200 Subject: [PATCH 3276/3421] Update configuration.md --- docs/configuration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index d6e26f80e..44736e0ba 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -59,8 +59,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-custom-positive-loss). [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Float | `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). [Strategy Override](#parameters-in-the-strategy).
              *Defaults to `0.0` (no offset).*
              **Datatype:** Float | `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy).
              *Defaults to `false`.*
              **Datatype:** Boolean -| `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Integer -| `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Integer +| `unfilledtimeout.buy` | **Required.** How long (in minutes) the bot will wait for an unfilled buy order to complete, after which the order will be cancelled and repeated at current (new) price, as long as there is a signal. [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Integer +| `unfilledtimeout.sell` | **Required.** How long (in minutes) the bot will wait for an unfilled sell order to complete, after which the order will be cancelled and repeated at current (new) price, as long as there is a signal. [Strategy Override](#parameters-in-the-strategy).
              **Datatype:** Integer | `bid_strategy.price_side` | Select the side of the spread the bot should look at to get the buy rate. [More information below](#buy-price-side).
              *Defaults to `bid`.*
              **Datatype:** String (either `ask` or `bid`). | `bid_strategy.ask_last_balance` | **Required.** Set the bidding price. More information [below](#buy-price-without-orderbook-enabled). | `bid_strategy.use_order_book` | Enable buying using the rates in [Order Book Bids](#buy-price-with-orderbook-enabled).
              **Datatype:** Boolean From 52502193c43a4c060c755dc13095ad4e7fbf1ba1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 7 Oct 2020 20:59:05 +0200 Subject: [PATCH 3277/3421] Backtesting should not double-loop for sell signals --- freqtrade/optimize/backtesting.py | 182 +++++++++++++++--------------- 1 file changed, 89 insertions(+), 93 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index afdb4fc37..c29240994 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -4,6 +4,7 @@ This module contains the backtesting logic """ import logging +from collections import defaultdict from copy import deepcopy from datetime import datetime, timedelta from typing import Any, Dict, List, NamedTuple, Optional, Tuple @@ -215,72 +216,29 @@ class Backtesting: else: return sell_row.open - def _get_sell_trade_entry( - self, pair: str, buy_row: DataFrame, - partial_ohlcv: List, trade_count_lock: Dict, - stake_amount: float, max_open_trades: int) -> Optional[BacktestResult]: + def _get_sell_trade_entry(self, trade: Trade, sell_row: DataFrame) -> Optional[BacktestResult]: - trade = Trade( - pair=pair, - open_rate=buy_row.open, - open_date=buy_row.date, - stake_amount=stake_amount, - amount=round(stake_amount / buy_row.open, 8), - fee_open=self.fee, - fee_close=self.fee, - is_open=True, - ) - logger.debug(f"{pair} - Backtesting emulates creation of new trade: {trade}.") - # calculate win/lose forwards from buy point - for sell_row in partial_ohlcv: - if max_open_trades > 0: - # Increase trade_count_lock for every iteration - trade_count_lock[sell_row.date] = trade_count_lock.get(sell_row.date, 0) + 1 + sell = self.strategy.should_sell(trade, sell_row.open, sell_row.date, sell_row.buy, + sell_row.sell, low=sell_row.low, high=sell_row.high) + if sell.sell_flag: + logger.debug(f"Fund sell signal {sell.sell_flag}") + trade_dur = int((sell_row.date - trade.open_date).total_seconds() // 60) + closerate = self._get_close_rate(sell_row, trade, sell, trade_dur) - sell = self.strategy.should_sell(trade, sell_row.open, sell_row.date, sell_row.buy, - sell_row.sell, low=sell_row.low, high=sell_row.high) - if sell.sell_flag: - trade_dur = int((sell_row.date - buy_row.date).total_seconds() // 60) - closerate = self._get_close_rate(sell_row, trade, sell, trade_dur) - - return BacktestResult(pair=pair, - profit_percent=trade.calc_profit_ratio(rate=closerate), - profit_abs=trade.calc_profit(rate=closerate), - open_date=buy_row.date, - open_rate=buy_row.open, - open_fee=self.fee, - close_date=sell_row.date, - close_rate=closerate, - close_fee=self.fee, - amount=trade.amount, - trade_duration=trade_dur, - open_at_end=False, - sell_reason=sell.sell_type - ) - if partial_ohlcv: - # no sell condition found - trade stil open at end of backtest period - sell_row = partial_ohlcv[-1] - bt_res = BacktestResult(pair=pair, - profit_percent=trade.calc_profit_ratio(rate=sell_row.open), - profit_abs=trade.calc_profit(rate=sell_row.open), - open_date=buy_row.date, - open_rate=buy_row.open, - open_fee=self.fee, - close_date=sell_row.date, - close_rate=sell_row.open, - close_fee=self.fee, - amount=trade.amount, - trade_duration=int(( - sell_row.date - buy_row.date).total_seconds() // 60), - open_at_end=True, - sell_reason=SellType.FORCE_SELL - ) - logger.debug(f"{pair} - Force selling still open trade, " - f"profit percent: {bt_res.profit_percent}, " - f"profit abs: {bt_res.profit_abs}") - - return bt_res - return None + return BacktestResult(pair=trade.pair, + profit_percent=trade.calc_profit_ratio(rate=closerate), + profit_abs=trade.calc_profit(rate=closerate), + open_date=trade.open_date, + open_rate=trade.open_rate, + open_fee=self.fee, + close_date=sell_row.date, + close_rate=closerate, + close_fee=self.fee, + amount=trade.amount, + trade_duration=trade_dur, + open_at_end=False, + sell_reason=sell.sell_type + ) def backtest(self, processed: Dict, stake_amount: float, start_date: arrow.Arrow, end_date: arrow.Arrow, @@ -305,19 +263,21 @@ class Backtesting: f"max_open_trades: {max_open_trades}, position_stacking: {position_stacking}" ) trades = [] - trade_count_lock: Dict = {} # Use dict of lists with data for performance # (looping lists is a lot faster than pandas DataFrames) data: Dict = self._get_ohlcv_as_lists(processed) - lock_pair_until: Dict = {} # Indexes per pair, so some pairs are allowed to have a missing start. indexes: Dict = {} tmp = start_date + timedelta(minutes=self.timeframe_min) + open_trades: Dict[str, List] = defaultdict(list) + open_trade_count = 0 + # Loop timerange and get candle for each pair at that point in time - while tmp < end_date: + while tmp <= end_date: + open_trade_count_start = open_trade_count for i, pair in enumerate(data): if pair not in indexes: @@ -336,37 +296,73 @@ class Backtesting: indexes[pair] += 1 - if row.buy == 0 or row.sell == 1: - continue # skip rows where no buy signal or that would immediately sell off + # without positionstacking, we can only have one open trade per pair. + # max_open_trades must be respected + # don't open on the last row + if ((position_stacking or len(open_trades[pair]) == 0) + and max_open_trades > 0 and open_trade_count_start < max_open_trades + and tmp != end_date + and row.buy == 1 and row.sell != 1): + # Enter trade + trade = Trade( + pair=pair, + open_rate=row.open, + open_date=row.date, + stake_amount=stake_amount, + amount=round(stake_amount / row.open, 8), + fee_open=self.fee, + fee_close=self.fee, + is_open=True, + ) + # TODO: hacky workaround to avoid opening > max_open_trades + # This emulates previous behaviour - not sure if this is correct + # Prevents buying if the trade-slot was freed in this candle + open_trade_count_start += 1 + open_trade_count += 1 + logger.debug(f"{pair} - Backtesting emulates creation of new trade: {trade}.") + open_trades[pair].append(trade) - if (not position_stacking and pair in lock_pair_until - and row.date <= lock_pair_until[pair]): - # without positionstacking, we can only have one open trade per pair. - continue + for trade in open_trades[pair]: + # logger.debug(f"{pair} - Checking for sells for {trade} at {row.date}") - if max_open_trades > 0: - # Check if max_open_trades has already been reached for the given date - if not trade_count_lock.get(row.date, 0) < max_open_trades: - continue - trade_count_lock[row.date] = trade_count_lock.get(row.date, 0) + 1 - - # since indexes has been incremented before, we need to go one step back to - # also check the buying candle for sell conditions. - trade_entry = self._get_sell_trade_entry(pair, row, data[pair][indexes[pair]-1:], - trade_count_lock, stake_amount, - max_open_trades) - - if trade_entry: - logger.debug(f"{pair} - Locking pair till " - f"close_date={trade_entry.close_date}") - lock_pair_until[pair] = trade_entry.close_date - trades.append(trade_entry) - else: - # Set lock_pair_until to end of testing period if trade could not be closed - lock_pair_until[pair] = end_date.datetime + # since indexes has been incremented before, we need to go one step back to + # also check the buying candle for sell conditions. + trade_entry = self._get_sell_trade_entry(trade, row) + # Sell occured + if trade_entry: + logger.debug(f"{pair} - Backtesting sell {trade}") + open_trade_count -= 1 + open_trades[pair].remove(trade) + trades.append(trade_entry) # Move time one configured time_interval ahead. tmp += timedelta(minutes=self.timeframe_min) + + # Handle trades that were left open + for pair in open_trades.keys(): + if len(open_trades[pair]) == 0: + continue + else: + for trade in open_trades[pair]: + sell_row = data[pair][-1] + trade_entry = BacktestResult(pair=trade.pair, + profit_percent=trade.calc_profit_ratio( + rate=sell_row.open), + profit_abs=trade.calc_profit(rate=sell_row.open), + open_date=trade.open_date, + open_rate=trade.open_rate, + open_fee=self.fee, + close_date=sell_row.date, + close_rate=sell_row.open, + close_fee=self.fee, + amount=trade.amount, + trade_duration=int(( + sell_row.date - trade.open_date).total_seconds() // 60), + open_at_end=True, + sell_reason=SellType.FORCE_SELL + ) + trades.append(trade_entry) + return DataFrame.from_records(trades, columns=BacktestResult._fields) def start(self) -> None: From 1b5cb3427e36498efa85e0bf432b3238b34cb78d Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 8 Oct 2020 08:09:55 +0200 Subject: [PATCH 3278/3421] Fix example R calculation in edge documentation --- docs/edge.md | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/docs/edge.md b/docs/edge.md index 500c3c833..7b6a6d8e8 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -82,20 +82,33 @@ Risk Reward Ratio ($R$) is a formula used to measure the expected gains of a giv $$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$ ???+ Example "Worked example of $R$ calculation" - Let's say that you think that the price of *stonecoin* today is $10.0. You believe that, because they will start mining stonecoin, it will go up to $15.0 tomorrow. There is the risk that the stone is too hard, and the GPUs can't mine it, so the price might go to $0 tomorrow. You are planning to invest $100.
              - Your potential profit is calculated as:
              + Let's say that you think that the price of *stonecoin* today is $10.0. You believe that, because they will start mining stonecoin, it will go up to $15.0 tomorrow. There is the risk that the stone is too hard, and the GPUs can't mine it, so the price might go to $0 tomorrow. You are planning to invest $100. + + Your potential profit is calculated as: + $\begin{aligned} - \text{potential_profit} &= (\text{potential_price} - \text{cost_per_unit}) * \frac{\text{investment}}{\text{cost_per_unit}} \\ - &= (15 - 10) * \frac{100}{15}\\ - &= 33.33 - \end{aligned}$
              - Since the price might go to $0, the $100 dolars invested could turn into 0. We can compute the Risk Reward Ratio as follows:
              + \text{potential_profit} &= (\text{potential_price} - \text{entry_price}) * \text{investment} \\ + &= (15 - 10) * 100\\ + &= 500 + \end{aligned}$ + + Since the price might go to $0, the $100 dollars invested could turn into 0. + + We do however use a stoploss of 15% - so in the worst case, we'll sell 15% below entry price (or at 8.5). + + $\begin{aligned} + \text{risk} &= (\text{entry_price} - \text{stoploss}) * \text{investment} \\ + &= (10 - (10 * (1 - 0.15))) * 100\\ + &= 150 + \end{aligned}$ + + We can compute the Risk Reward Ratio as follows:
              $\begin{aligned} R &= \frac{\text{potential_profit}}{\text{potential_loss}}\\ - &= \frac{33.33}{100}\\ - &= 0.333... + &= \frac{500}{150}\\ + &= 3.33 \end{aligned}$
              - What it effectivelly means is that the strategy have the potential to make $0.33 for each $1 invested. + What it effectively means is that the strategy have the potential to make 3$ for each $1 invested. On a long horizon, that is, on many trades, we can calculate the risk reward by dividing the strategy' average profit on winning trades by the strategy' average loss on losing trades. We can calculate the average profit, $\mu_{win}$, as follows: From 48750b0ef85c3c52cc20c5431bee13c68ab619ba Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 8 Oct 2020 08:23:56 +0200 Subject: [PATCH 3279/3421] Improve wording in formula --- docs/edge.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/edge.md b/docs/edge.md index 7b6a6d8e8..0891a851e 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -93,11 +93,11 @@ $$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$ \end{aligned}$ Since the price might go to $0, the $100 dollars invested could turn into 0. - + We do however use a stoploss of 15% - so in the worst case, we'll sell 15% below entry price (or at 8.5). $\begin{aligned} - \text{risk} &= (\text{entry_price} - \text{stoploss}) * \text{investment} \\ + \text{potential_loss} &= (\text{entry_price} - \text{stoploss}) * \text{investment} \\ &= (10 - (10 * (1 - 0.15))) * 100\\ &= 150 \end{aligned}$ From 6bb045f5655959c01455d4a886ac6485f17e354b Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 8 Oct 2020 08:30:30 +0200 Subject: [PATCH 3280/3421] Simplify stoploss calculation --- docs/edge.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/edge.md b/docs/edge.md index 0891a851e..d3a6af8ba 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -94,11 +94,11 @@ $$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$ Since the price might go to $0, the $100 dollars invested could turn into 0. - We do however use a stoploss of 15% - so in the worst case, we'll sell 15% below entry price (or at 8.5). + We do however use a stoploss of 15% - so in the worst case, we'll sell 15% below entry price (or at 8.5$). $\begin{aligned} \text{potential_loss} &= (\text{entry_price} - \text{stoploss}) * \text{investment} \\ - &= (10 - (10 * (1 - 0.15))) * 100\\ + &= (10 - 8.5) * 100\\ &= 150 \end{aligned}$ @@ -108,7 +108,7 @@ $$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$ &= \frac{500}{150}\\ &= 3.33 \end{aligned}$
              - What it effectively means is that the strategy have the potential to make 3$ for each $1 invested. + What it effectively means is that the strategy have the potential to make 3.33$ for each $1 invested. On a long horizon, that is, on many trades, we can calculate the risk reward by dividing the strategy' average profit on winning trades by the strategy' average loss on losing trades. We can calculate the average profit, $\mu_{win}$, as follows: From 7f0afe12446fa879463b91ad1dda3611caec7948 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 8 Oct 2020 10:24:52 +0200 Subject: [PATCH 3281/3421] Fix calculation to not show losses > initial investment --- docs/edge.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/docs/edge.md b/docs/edge.md index d3a6af8ba..7442f1927 100644 --- a/docs/edge.md +++ b/docs/edge.md @@ -82,14 +82,14 @@ Risk Reward Ratio ($R$) is a formula used to measure the expected gains of a giv $$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$ ???+ Example "Worked example of $R$ calculation" - Let's say that you think that the price of *stonecoin* today is $10.0. You believe that, because they will start mining stonecoin, it will go up to $15.0 tomorrow. There is the risk that the stone is too hard, and the GPUs can't mine it, so the price might go to $0 tomorrow. You are planning to invest $100. + Let's say that you think that the price of *stonecoin* today is $10.0. You believe that, because they will start mining stonecoin, it will go up to $15.0 tomorrow. There is the risk that the stone is too hard, and the GPUs can't mine it, so the price might go to $0 tomorrow. You are planning to invest $100, which will give you 10 shares (100 / 10). Your potential profit is calculated as: $\begin{aligned} - \text{potential_profit} &= (\text{potential_price} - \text{entry_price}) * \text{investment} \\ - &= (15 - 10) * 100\\ - &= 500 + \text{potential_profit} &= (\text{potential_price} - \text{entry_price}) * \frac{\text{investment}}{\text{entry_price}} \\ + &= (15 - 10) * (100 / 10) \\ + &= 50 \end{aligned}$ Since the price might go to $0, the $100 dollars invested could turn into 0. @@ -97,15 +97,16 @@ $$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$ We do however use a stoploss of 15% - so in the worst case, we'll sell 15% below entry price (or at 8.5$). $\begin{aligned} - \text{potential_loss} &= (\text{entry_price} - \text{stoploss}) * \text{investment} \\ - &= (10 - 8.5) * 100\\ - &= 150 + \text{potential_loss} &= (\text{entry_price} - \text{stoploss}) * \frac{\text{investment}}{\text{entry_price}} \\ + &= (10 - 8.5) * (100 / 10)\\ + &= 15 \end{aligned}$ - We can compute the Risk Reward Ratio as follows:
              + We can compute the Risk Reward Ratio as follows: + $\begin{aligned} R &= \frac{\text{potential_profit}}{\text{potential_loss}}\\ - &= \frac{500}{150}\\ + &= \frac{50}{15}\\ &= 3.33 \end{aligned}$
              What it effectively means is that the strategy have the potential to make 3.33$ for each $1 invested. From d1db847612cbac7618a170e538cb1878b538608e Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 8 Oct 2020 19:27:00 +0200 Subject: [PATCH 3282/3421] Fix "storing information" documentation closes #3843 --- docs/strategy-customization.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 14d5fcd84..a6cdef864 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -312,12 +312,17 @@ The name of the variable can be chosen at will, but should be prefixed with `cus class Awesomestrategy(IStrategy): # Create custom dictionary cust_info = {} + def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: # Check if the entry already exists + if not metadata["pair"] in self._cust_info: + # Create empty entry for this pair + self._cust_info[metadata["pair"]] = {} + if "crosstime" in self.cust_info[metadata["pair"]: - self.cust_info[metadata["pair"]["crosstime"] += 1 + self.cust_info[metadata["pair"]]["crosstime"] += 1 else: - self.cust_info[metadata["pair"]["crosstime"] = 1 + self.cust_info[metadata["pair"]]["crosstime"] = 1 ``` !!! Warning From e8f2c09f08a583f307ad188d638243ff042d563b Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 8 Oct 2020 20:10:00 +0200 Subject: [PATCH 3283/3421] Extract handling of left open trades to seperate method --- freqtrade/optimize/backtesting.py | 56 ++++++++++++++++++------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index c29240994..236b86eb1 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -239,6 +239,37 @@ class Backtesting: open_at_end=False, sell_reason=sell.sell_type ) + return None + + def handle_left_open(self, open_trades: Dict[str, List], + data: Dict[str, DataFrame]) -> List[BacktestResult]: + """ + Handling of left open trades at the end of backtesting + """ + trades = [] + for pair in open_trades.keys(): + if len(open_trades[pair]) > 0: + for trade in open_trades[pair]: + sell_row = data[pair][-1] + trade_entry = BacktestResult(pair=trade.pair, + profit_percent=trade.calc_profit_ratio( + rate=sell_row.open), + profit_abs=trade.calc_profit(rate=sell_row.open), + open_date=trade.open_date, + open_rate=trade.open_rate, + open_fee=self.fee, + close_date=sell_row.date, + close_rate=sell_row.open, + close_fee=self.fee, + amount=trade.amount, + trade_duration=int(( + sell_row.date - trade.open_date + ).total_seconds() // 60), + open_at_end=True, + sell_reason=SellType.FORCE_SELL + ) + trades.append(trade_entry) + return trades def backtest(self, processed: Dict, stake_amount: float, start_date: arrow.Arrow, end_date: arrow.Arrow, @@ -338,30 +369,7 @@ class Backtesting: # Move time one configured time_interval ahead. tmp += timedelta(minutes=self.timeframe_min) - # Handle trades that were left open - for pair in open_trades.keys(): - if len(open_trades[pair]) == 0: - continue - else: - for trade in open_trades[pair]: - sell_row = data[pair][-1] - trade_entry = BacktestResult(pair=trade.pair, - profit_percent=trade.calc_profit_ratio( - rate=sell_row.open), - profit_abs=trade.calc_profit(rate=sell_row.open), - open_date=trade.open_date, - open_rate=trade.open_rate, - open_fee=self.fee, - close_date=sell_row.date, - close_rate=sell_row.open, - close_fee=self.fee, - amount=trade.amount, - trade_duration=int(( - sell_row.date - trade.open_date).total_seconds() // 60), - open_at_end=True, - sell_reason=SellType.FORCE_SELL - ) - trades.append(trade_entry) + trades += self.handle_left_open(open_trades, data=data) return DataFrame.from_records(trades, columns=BacktestResult._fields) From 23278e52db01f1b2a351d20c1206d796e2abb35c Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 8 Oct 2020 20:22:45 +0200 Subject: [PATCH 3284/3421] remove obsolete logging statements --- freqtrade/optimize/backtesting.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 236b86eb1..f59a782e8 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -221,7 +221,6 @@ class Backtesting: sell = self.strategy.should_sell(trade, sell_row.open, sell_row.date, sell_row.buy, sell_row.sell, low=sell_row.low, high=sell_row.high) if sell.sell_flag: - logger.debug(f"Fund sell signal {sell.sell_flag}") trade_dur = int((sell_row.date - trade.open_date).total_seconds() // 60) closerate = self._get_close_rate(sell_row, trade, sell, trade_dur) @@ -354,8 +353,6 @@ class Backtesting: open_trades[pair].append(trade) for trade in open_trades[pair]: - # logger.debug(f"{pair} - Checking for sells for {trade} at {row.date}") - # since indexes has been incremented before, we need to go one step back to # also check the buying candle for sell conditions. trade_entry = self._get_sell_trade_entry(trade, row) From f676156ec79348adfe82727845eb71ea2dd929a9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 9 Oct 2020 06:39:13 +0200 Subject: [PATCH 3285/3421] Implement division/0 checks for win and loss columns in edge closes #3839 --- freqtrade/edge/edge_positioning.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index 6a95ad91f..a40b63d67 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -310,8 +310,10 @@ class Edge: # Calculating number of losing trades, average win and average loss df['nb_loss_trades'] = df['nb_trades'] - df['nb_win_trades'] - df['average_win'] = df['profit_sum'] / df['nb_win_trades'] - df['average_loss'] = df['loss_sum'] / df['nb_loss_trades'] + df['average_win'] = np.where(df['nb_win_trades'] == 0, 0.0, + df['profit_sum'] / df['nb_win_trades']) + df['average_loss'] = np.where(df['nb_loss_trades'] == 0, 0.0, + df['loss_sum'] / df['nb_loss_trades']) # Win rate = number of profitable trades / number of trades df['winrate'] = df['nb_win_trades'] / df['nb_trades'] From 59b00ad6624645776be1f09ee6baf8856feaf933 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 9 Oct 2020 06:47:02 +0200 Subject: [PATCH 3286/3421] Add test for only-win scenario --- tests/edge/test_edge.py | 58 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index f19590490..a4bfa1085 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -499,3 +499,61 @@ def test_process_expectancy_remove_pumps(mocker, edge_conf, fee,): assert final['TEST/BTC'].stoploss == -0.9 assert final['TEST/BTC'].nb_trades == len(trades_df) - 1 assert round(final['TEST/BTC'].winrate, 10) == 0.0 + + +def test_process_expectancy_only_wins(mocker, edge_conf, fee,): + edge_conf['edge']['min_trade_number'] = 2 + freqtrade = get_patched_freqtradebot(mocker, edge_conf) + + freqtrade.exchange.get_fee = fee + edge = Edge(edge_conf, freqtrade.exchange, freqtrade.strategy) + + trades = [ + {'pair': 'TEST/BTC', + 'stoploss': -0.9, + 'profit_percent': '', + 'profit_abs': '', + 'open_date': np.datetime64('2018-10-03T00:05:00.000000000'), + 'close_date': np.datetime64('2018-10-03T00:10:00.000000000'), + 'open_index': 1, + 'close_index': 1, + 'trade_duration': '', + 'open_rate': 15, + 'close_rate': 17, + 'exit_type': 'sell_signal'}, + {'pair': 'TEST/BTC', + 'stoploss': -0.9, + 'profit_percent': '', + 'profit_abs': '', + 'open_date': np.datetime64('2018-10-03T00:20:00.000000000'), + 'close_date': np.datetime64('2018-10-03T00:25:00.000000000'), + 'open_index': 4, + 'close_index': 4, + 'trade_duration': '', + 'open_rate': 10, + 'close_rate': 20, + 'exit_type': 'sell_signal'}, + {'pair': 'TEST/BTC', + 'stoploss': -0.9, + 'profit_percent': '', + 'profit_abs': '', + 'open_date': np.datetime64('2018-10-03T00:30:00.000000000'), + 'close_date': np.datetime64('2018-10-03T00:40:00.000000000'), + 'open_index': 6, + 'close_index': 7, + 'trade_duration': '', + 'open_rate': 26, + 'close_rate': 134, + 'exit_type': 'sell_signal'} + ] + + trades_df = DataFrame(trades) + trades_df = edge._fill_calculable_fields(trades_df) + final = edge._process_expectancy(trades_df) + + assert 'TEST/BTC' in final + assert final['TEST/BTC'].stoploss == -0.9 + assert final['TEST/BTC'].nb_trades == len(trades_df) + assert round(final['TEST/BTC'].winrate, 10) == 1.0 + assert round(final['TEST/BTC'].risk_reward_ratio, 10) == float('inf') + assert round(final['TEST/BTC'].expectancy, 10) == float('inf') From 53984a059f43f004e2877d9363f0ae849375a2ee Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 9 Oct 2020 09:02:20 +0200 Subject: [PATCH 3287/3421] Configure mkdocs to allow page includes --- .github/workflows/ci.yml | 5 +++++ docs/developer.md | 2 +- docs/requirements-docs.txt | 1 + mkdocs.yml | 8 ++++---- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5dad1443b..a89254349 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -184,6 +184,11 @@ jobs: run: | ./tests/test_docs.sh + - name: Documentation build + run: | + pip install -r docs/requirements-docs.txt + mkdocs build + - name: Slack Notification uses: homoluctus/slatify@v1.8.0 if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) diff --git a/docs/developer.md b/docs/developer.md index 788e961cd..8ef816d5d 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -96,7 +96,7 @@ Below is an outline of exception inheritance hierarchy: ## Modules -### Dynamic Pairlist +### Pairlists You have a great idea for a new pair selection algorithm you would like to try out? Great. Hopefully you also want to contribute this back upstream. diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 66225d6d4..69ae33649 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,2 +1,3 @@ mkdocs-material==6.0.2 mdx_truly_sane_lists==1.2 +pymdown-extensions==8.0.1 diff --git a/mkdocs.yml b/mkdocs.yml index 26494ae45..8d1ce1cfe 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -55,16 +55,16 @@ markdown_extensions: permalink: true - pymdownx.arithmatex: generic: true - - pymdownx.caret - - pymdownx.critic - pymdownx.details - pymdownx.inlinehilite - pymdownx.magiclink - - pymdownx.mark + - pymdownx.pathconverter - pymdownx.smartsymbols + - pymdownx.snippets: + base_path: docs + check_paths: true - pymdownx.tabbed - pymdownx.superfences - pymdownx.tasklist: custom_checkbox: true - - pymdownx.tilde - mdx_truly_sane_lists From f43bd250a2155ea276f9e30f8a9bf0c0728ca03d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 9 Oct 2020 09:02:44 +0200 Subject: [PATCH 3288/3421] Extract pairlists from configuration --- docs/configuration.md | 139 +------------------------------------ docs/includes/pairlists.md | 137 ++++++++++++++++++++++++++++++++++++ 2 files changed, 138 insertions(+), 138 deletions(-) create mode 100644 docs/includes/pairlists.md diff --git a/docs/configuration.md b/docs/configuration.md index d6e26f80e..f8e8aabcd 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -574,144 +574,7 @@ Assuming both buy and sell are using market orders, a configuration similar to t ``` Obviously, if only one side is using limit orders, different pricing combinations can be used. - -## Pairlists and Pairlist Handlers - -Pairlist Handlers define the list of pairs (pairlist) that the bot should trade. They are configured in the `pairlists` section of the configuration settings. - -In your configuration, you can use Static Pairlist (defined by the [`StaticPairList`](#static-pair-list) Pairlist Handler) and Dynamic Pairlist (defined by the [`VolumePairList`](#volume-pair-list) Pairlist Handler). - -Additionaly, [`AgeFilter`](#agefilter), [`PrecisionFilter`](#precisionfilter), [`PriceFilter`](#pricefilter), [`ShuffleFilter`](#shufflefilter) and [`SpreadFilter`](#spreadfilter) act as Pairlist Filters, removing certain pairs and/or moving their positions in the pairlist. - -If multiple Pairlist Handlers are used, they are chained and a combination of all Pairlist Handlers forms the resulting pairlist the bot uses for trading and backtesting. Pairlist Handlers are executed in the sequence they are configured. You should always configure either `StaticPairList` or `VolumePairList` as the starting Pairlist Handler. - -Inactive markets are always removed from the resulting pairlist. Explicitly blacklisted pairs (those in the `pair_blacklist` configuration setting) are also always removed from the resulting pairlist. - -### Available Pairlist Handlers - -* [`StaticPairList`](#static-pair-list) (default, if not configured differently) -* [`VolumePairList`](#volume-pair-list) -* [`AgeFilter`](#agefilter) -* [`PrecisionFilter`](#precisionfilter) -* [`PriceFilter`](#pricefilter) -* [`ShuffleFilter`](#shufflefilter) -* [`SpreadFilter`](#spreadfilter) - -!!! Tip "Testing pairlists" - Pairlist configurations can be quite tricky to get right. Best use the [`test-pairlist`](utils.md#test-pairlist) utility subcommand to test your configuration quickly. - -#### Static Pair List - -By default, the `StaticPairList` method is used, which uses a statically defined pair whitelist from the configuration. - -It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklist`. - -```json -"pairlists": [ - {"method": "StaticPairList"} - ], -``` - -#### Volume Pair List - -`VolumePairList` employs sorting/filtering of pairs by their trading volume. It selects `number_assets` top pairs with sorting based on the `sort_key` (which can only be `quoteVolume`). - -When used in the chain of Pairlist Handlers in a non-leading position (after StaticPairList and other Pairlist Filters), `VolumePairList` considers outputs of previous Pairlist Handlers, adding its sorting/selection of the pairs by the trading volume. - -When used on the leading position of the chain of Pairlist Handlers, it does not consider `pair_whitelist` configuration setting, but selects the top assets from all available markets (with matching stake-currency) on the exchange. - -The `refresh_period` setting allows to define the period (in seconds), at which the pairlist will be refreshed. Defaults to 1800s (30 minutes). - -`VolumePairList` is based on the ticker data from exchange, as reported by the ccxt library: - -* The `quoteVolume` is the amount of quote (stake) currency traded (bought or sold) in last 24 hours. - -```json -"pairlists": [{ - "method": "VolumePairList", - "number_assets": 20, - "sort_key": "quoteVolume", - "refresh_period": 1800, -}], -``` - -#### AgeFilter - -Removes pairs that have been listed on the exchange for less than `min_days_listed` days (defaults to `10`). - -When pairs are first listed on an exchange they can suffer huge price drops and volatility -in the first few days while the pair goes through its price-discovery period. Bots can often -be caught out buying before the pair has finished dropping in price. - -This filter allows freqtrade to ignore pairs until they have been listed for at least `min_days_listed` days. - -#### PrecisionFilter - -Filters low-value coins which would not allow setting stoplosses. - -#### PriceFilter - -The `PriceFilter` allows filtering of pairs by price. Currently the following price filters are supported: - -* `min_price` -* `max_price` -* `low_price_ratio` - -The `min_price` setting removes pairs where the price is below the specified price. This is useful if you wish to avoid trading very low-priced pairs. -This option is disabled by default, and will only apply if set to > 0. - -The `max_price` setting removes pairs where the price is above the specified price. This is useful if you wish to trade only low-priced pairs. -This option is disabled by default, and will only apply if set to > 0. - -The `low_price_ratio` setting removes pairs where a raise of 1 price unit (pip) is above the `low_price_ratio` ratio. -This option is disabled by default, and will only apply if set to > 0. - -For `PriceFiler` at least one of its `min_price`, `max_price` or `low_price_ratio` settings must be applied. - -Calculation example: - -Min price precision for SHITCOIN/BTC is 8 decimals. If its price is 0.00000011 - one price step above would be 0.00000012, which is ~9% higher than the previous price value. You may filter out this pair by using PriceFilter with `low_price_ratio` set to 0.09 (9%) or with `min_price` set to 0.00000011, correspondingly. - -!!! Warning "Low priced pairs" - Low priced pairs with high "1 pip movements" are dangerous since they are often illiquid and it may also be impossible to place the desired stoploss, which can often result in high losses since price needs to be rounded to the next tradable price - so instead of having a stoploss of -5%, you could end up with a stoploss of -9% simply due to price rounding. - -#### ShuffleFilter - -Shuffles (randomizes) pairs in the pairlist. It can be used for preventing the bot from trading some of the pairs more frequently then others when you want all pairs be treated with the same priority. - -!!! Tip - You may set the `seed` value for this Pairlist to obtain reproducible results, which can be useful for repeated backtesting sessions. If `seed` is not set, the pairs are shuffled in the non-repeatable random order. - -#### SpreadFilter - -Removes pairs that have a difference between asks and bids above the specified ratio, `max_spread_ratio` (defaults to `0.005`). - -Example: - -If `DOGE/BTC` maximum bid is 0.00000026 and minimum ask is 0.00000027, the ratio is calculated as: `1 - bid/ask ~= 0.037` which is `> 0.005` and this pair will be filtered out. - -### Full example of Pairlist Handlers - -The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, sorting pairs by `quoteVolume` and applies both [`PrecisionFilter`](#precisionfilter) and [`PriceFilter`](#price-filter), filtering all assets where 1 priceunit is > 1%. Then the `SpreadFilter` is applied and pairs are finally shuffled with the random seed set to some predefined value. - -```json -"exchange": { - "pair_whitelist": [], - "pair_blacklist": ["BNB/BTC"] -}, -"pairlists": [ - { - "method": "VolumePairList", - "number_assets": 20, - "sort_key": "quoteVolume", - }, - {"method": "AgeFilter", "min_days_listed": 10}, - {"method": "PrecisionFilter"}, - {"method": "PriceFilter", "low_price_ratio": 0.01}, - {"method": "SpreadFilter", "max_spread_ratio": 0.005}, - {"method": "ShuffleFilter", "seed": 42} - ], -``` +--8<-- "includes/pairlists.md" ## Switch to Dry-run mode diff --git a/docs/includes/pairlists.md b/docs/includes/pairlists.md new file mode 100644 index 000000000..ae4ec818d --- /dev/null +++ b/docs/includes/pairlists.md @@ -0,0 +1,137 @@ +## Pairlists and Pairlist Handlers + +Pairlist Handlers define the list of pairs (pairlist) that the bot should trade. They are configured in the `pairlists` section of the configuration settings. + +In your configuration, you can use Static Pairlist (defined by the [`StaticPairList`](#static-pair-list) Pairlist Handler) and Dynamic Pairlist (defined by the [`VolumePairList`](#volume-pair-list) Pairlist Handler). + +Additionally, [`AgeFilter`](#agefilter), [`PrecisionFilter`](#precisionfilter), [`PriceFilter`](#pricefilter), [`ShuffleFilter`](#shufflefilter) and [`SpreadFilter`](#spreadfilter) act as Pairlist Filters, removing certain pairs and/or moving their positions in the pairlist. + +If multiple Pairlist Handlers are used, they are chained and a combination of all Pairlist Handlers forms the resulting pairlist the bot uses for trading and backtesting. Pairlist Handlers are executed in the sequence they are configured. You should always configure either `StaticPairList` or `VolumePairList` as the starting Pairlist Handler. + +Inactive markets are always removed from the resulting pairlist. Explicitly blacklisted pairs (those in the `pair_blacklist` configuration setting) are also always removed from the resulting pairlist. + +### Available Pairlist Handlers + +* [`StaticPairList`](#static-pair-list) (default, if not configured differently) +* [`VolumePairList`](#volume-pair-list) +* [`AgeFilter`](#agefilter) +* [`PrecisionFilter`](#precisionfilter) +* [`PriceFilter`](#pricefilter) +* [`ShuffleFilter`](#shufflefilter) +* [`SpreadFilter`](#spreadfilter) + +!!! Tip "Testing pairlists" + Pairlist configurations can be quite tricky to get right. Best use the [`test-pairlist`](utils.md#test-pairlist) utility sub-command to test your configuration quickly. + +#### Static Pair List + +By default, the `StaticPairList` method is used, which uses a statically defined pair whitelist from the configuration. + +It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklist`. + +```json +"pairlists": [ + {"method": "StaticPairList"} + ], +``` + +#### Volume Pair List + +`VolumePairList` employs sorting/filtering of pairs by their trading volume. It selects `number_assets` top pairs with sorting based on the `sort_key` (which can only be `quoteVolume`). + +When used in the chain of Pairlist Handlers in a non-leading position (after StaticPairList and other Pairlist Filters), `VolumePairList` considers outputs of previous Pairlist Handlers, adding its sorting/selection of the pairs by the trading volume. + +When used on the leading position of the chain of Pairlist Handlers, it does not consider `pair_whitelist` configuration setting, but selects the top assets from all available markets (with matching stake-currency) on the exchange. + +The `refresh_period` setting allows to define the period (in seconds), at which the pairlist will be refreshed. Defaults to 1800s (30 minutes). + +`VolumePairList` is based on the ticker data from exchange, as reported by the ccxt library: + +* The `quoteVolume` is the amount of quote (stake) currency traded (bought or sold) in last 24 hours. + +```json +"pairlists": [{ + "method": "VolumePairList", + "number_assets": 20, + "sort_key": "quoteVolume", + "refresh_period": 1800, +}], +``` + +#### AgeFilter + +Removes pairs that have been listed on the exchange for less than `min_days_listed` days (defaults to `10`). + +When pairs are first listed on an exchange they can suffer huge price drops and volatility +in the first few days while the pair goes through its price-discovery period. Bots can often +be caught out buying before the pair has finished dropping in price. + +This filter allows freqtrade to ignore pairs until they have been listed for at least `min_days_listed` days. + +#### PrecisionFilter + +Filters low-value coins which would not allow setting stoplosses. + +#### PriceFilter + +The `PriceFilter` allows filtering of pairs by price. Currently the following price filters are supported: + +* `min_price` +* `max_price` +* `low_price_ratio` + +The `min_price` setting removes pairs where the price is below the specified price. This is useful if you wish to avoid trading very low-priced pairs. +This option is disabled by default, and will only apply if set to > 0. + +The `max_price` setting removes pairs where the price is above the specified price. This is useful if you wish to trade only low-priced pairs. +This option is disabled by default, and will only apply if set to > 0. + +The `low_price_ratio` setting removes pairs where a raise of 1 price unit (pip) is above the `low_price_ratio` ratio. +This option is disabled by default, and will only apply if set to > 0. + +For `PriceFiler` at least one of its `min_price`, `max_price` or `low_price_ratio` settings must be applied. + +Calculation example: + +Min price precision for SHITCOIN/BTC is 8 decimals. If its price is 0.00000011 - one price step above would be 0.00000012, which is ~9% higher than the previous price value. You may filter out this pair by using PriceFilter with `low_price_ratio` set to 0.09 (9%) or with `min_price` set to 0.00000011, correspondingly. + +!!! Warning "Low priced pairs" + Low priced pairs with high "1 pip movements" are dangerous since they are often illiquid and it may also be impossible to place the desired stoploss, which can often result in high losses since price needs to be rounded to the next tradable price - so instead of having a stoploss of -5%, you could end up with a stoploss of -9% simply due to price rounding. + +#### ShuffleFilter + +Shuffles (randomizes) pairs in the pairlist. It can be used for preventing the bot from trading some of the pairs more frequently then others when you want all pairs be treated with the same priority. + +!!! Tip + You may set the `seed` value for this Pairlist to obtain reproducible results, which can be useful for repeated backtesting sessions. If `seed` is not set, the pairs are shuffled in the non-repeatable random order. + +#### SpreadFilter + +Removes pairs that have a difference between asks and bids above the specified ratio, `max_spread_ratio` (defaults to `0.005`). + +Example: + +If `DOGE/BTC` maximum bid is 0.00000026 and minimum ask is 0.00000027, the ratio is calculated as: `1 - bid/ask ~= 0.037` which is `> 0.005` and this pair will be filtered out. + +### Full example of Pairlist Handlers + +The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets, sorting pairs by `quoteVolume` and applies both [`PrecisionFilter`](#precisionfilter) and [`PriceFilter`](#price-filter), filtering all assets where 1 price unit is > 1%. Then the `SpreadFilter` is applied and pairs are finally shuffled with the random seed set to some predefined value. + +```json +"exchange": { + "pair_whitelist": [], + "pair_blacklist": ["BNB/BTC"] +}, +"pairlists": [ + { + "method": "VolumePairList", + "number_assets": 20, + "sort_key": "quoteVolume", + }, + {"method": "AgeFilter", "min_days_listed": 10}, + {"method": "PrecisionFilter"}, + {"method": "PriceFilter", "low_price_ratio": 0.01}, + {"method": "SpreadFilter", "max_spread_ratio": 0.005}, + {"method": "ShuffleFilter", "seed": 42} + ], +``` From cedddd02dac533ab79799c0dea8b0da5536797fe Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 9 Oct 2020 09:08:58 +0200 Subject: [PATCH 3289/3421] Install mkdocs for ci --- .github/workflows/ci.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a89254349..f259129d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} @@ -125,7 +125,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} @@ -184,9 +184,15 @@ jobs: run: | ./tests/test_docs.sh + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.8 + - name: Documentation build run: | pip install -r docs/requirements-docs.txt + pip install mkdocs mkdocs build - name: Slack Notification @@ -229,7 +235,7 @@ jobs: - uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: 3.8 From 23bad8fd9f320d2754c9d71e134c40a771b4e88f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 10 Oct 2020 14:22:29 +0200 Subject: [PATCH 3290/3421] Rename DefahltHyperoptLoss function to ShortTradeDurHyperOptLoss --- docs/bot-usage.md | 2 +- docs/hyperopt.md | 2 +- freqtrade/commands/cli_options.py | 4 ++-- freqtrade/optimize/default_hyperopt_loss.py | 8 ++++++-- tests/optimize/test_hyperopt.py | 16 ++++++++-------- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/docs/bot-usage.md b/docs/bot-usage.md index a07a34b94..4d07435c7 100644 --- a/docs/bot-usage.md +++ b/docs/bot-usage.md @@ -353,7 +353,7 @@ optional arguments: class (IHyperOptLoss). Different functions can generate completely different results, since the target for optimization is different. Built-in - Hyperopt-loss-functions are: DefaultHyperOptLoss, + Hyperopt-loss-functions are: ShortTradeDurHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss, SharpeHyperOptLossDaily, SortinoHyperOptLoss, SortinoHyperOptLossDaily. diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 91bc32e48..5f5ffbee0 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -221,7 +221,7 @@ This class should be in its own file within the `user_data/hyperopts/` directory Currently, the following loss functions are builtin: -* `DefaultHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function) - Mostly for short trade duration and avoiding losses. +* `ShortTradeHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function) - Mostly for short trade duration and avoiding losses. * `OnlyProfitHyperOptLoss` (which takes only amount of profit into consideration) * `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on trade returns relative to standard deviation) * `SharpeHyperOptLossDaily` (optimizes Sharpe Ratio calculated on **daily** trade returns relative to standard deviation) diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index f991f6a4d..8ea945ae7 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -257,8 +257,8 @@ AVAILABLE_CLI_OPTIONS = { help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). ' 'Different functions can generate completely different results, ' 'since the target for optimization is different. Built-in Hyperopt-loss-functions are: ' - 'DefaultHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss, SharpeHyperOptLossDaily, ' - 'SortinoHyperOptLoss, SortinoHyperOptLossDaily.', + 'ShortTradeDurHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss, ' + 'SharpeHyperOptLossDaily, SortinoHyperOptLoss, SortinoHyperOptLossDaily.', metavar='NAME', ), "hyperoptexportfilename": Arg( diff --git a/freqtrade/optimize/default_hyperopt_loss.py b/freqtrade/optimize/default_hyperopt_loss.py index 9e780d0ea..9dbdc4403 100644 --- a/freqtrade/optimize/default_hyperopt_loss.py +++ b/freqtrade/optimize/default_hyperopt_loss.py @@ -1,5 +1,5 @@ """ -DefaultHyperOptLoss +ShortTradeDurHyperOptLoss This module defines the default HyperoptLoss class which is being used for Hyperoptimization. """ @@ -26,7 +26,7 @@ EXPECTED_MAX_PROFIT = 3.0 MAX_ACCEPTED_TRADE_DURATION = 300 -class DefaultHyperOptLoss(IHyperOptLoss): +class ShortTradeDurHyperOptLoss(IHyperOptLoss): """ Defines the default loss function for hyperopt """ @@ -50,3 +50,7 @@ class DefaultHyperOptLoss(IHyperOptLoss): duration_loss = 0.4 * min(trade_duration / MAX_ACCEPTED_TRADE_DURATION, 1) result = trade_loss + profit_loss + duration_loss return result + + +# Create an alias for This to allow the legacy Method to work as well. +DefaultHyperOptLoss = ShortTradeDurHyperOptLoss diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index f699473f7..41ad6f5de 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -17,7 +17,7 @@ from freqtrade import constants from freqtrade.commands.optimize_commands import setup_optimize_configuration, start_hyperopt from freqtrade.data.history import load_data from freqtrade.exceptions import DependencyException, OperationalException -from freqtrade.optimize.default_hyperopt_loss import DefaultHyperOptLoss +from freqtrade.optimize.default_hyperopt_loss import ShortTradeDurHyperOptLoss from freqtrade.optimize.hyperopt import Hyperopt from freqtrade.resolvers.hyperopt_resolver import HyperOptLossResolver, HyperOptResolver from freqtrade.state import RunMode @@ -33,7 +33,7 @@ def hyperopt_conf(default_conf): hyperconf = deepcopy(default_conf) hyperconf.update({ 'hyperopt': 'DefaultHyperOpt', - 'hyperopt_loss': 'DefaultHyperOptLoss', + 'hyperopt_loss': 'ShortTradeDurHyperOptLoss', 'hyperopt_path': str(Path(__file__).parent / 'hyperopts'), 'epochs': 1, 'timerange': None, @@ -239,12 +239,12 @@ def test_hyperoptlossresolver_noname(default_conf): def test_hyperoptlossresolver(mocker, default_conf) -> None: - hl = DefaultHyperOptLoss + hl = ShortTradeDurHyperOptLoss mocker.patch( 'freqtrade.resolvers.hyperopt_resolver.HyperOptLossResolver.load_object', MagicMock(return_value=hl) ) - default_conf.update({'hyperopt_loss': 'DefaultHyperoptLoss'}) + default_conf.update({'hyperopt_loss': 'SharpeHyperOptLossDaily'}) x = HyperOptLossResolver.load_hyperoptloss(default_conf) assert hasattr(x, "hyperopt_loss_function") @@ -287,7 +287,7 @@ def test_start(mocker, hyperopt_conf, caplog) -> None: 'hyperopt', '--config', 'config.json', '--hyperopt', 'DefaultHyperOpt', - '--hyperopt-loss', 'DefaultHyperOptLoss', + '--hyperopt-loss', 'SharpeHyperOptLossDaily', '--epochs', '5' ] pargs = get_args(args) @@ -311,7 +311,7 @@ def test_start_no_data(mocker, hyperopt_conf) -> None: 'hyperopt', '--config', 'config.json', '--hyperopt', 'DefaultHyperOpt', - '--hyperopt-loss', 'DefaultHyperOptLoss', + '--hyperopt-loss', 'SharpeHyperOptLossDaily', '--epochs', '5' ] pargs = get_args(args) @@ -329,7 +329,7 @@ def test_start_filelock(mocker, hyperopt_conf, caplog) -> None: 'hyperopt', '--config', 'config.json', '--hyperopt', 'DefaultHyperOpt', - '--hyperopt-loss', 'DefaultHyperOptLoss', + '--hyperopt-loss', 'SharpeHyperOptLossDaily', '--epochs', '5' ] pargs = get_args(args) @@ -384,7 +384,7 @@ def test_sharpe_loss_prefers_higher_profits(default_conf, hyperopt_results) -> N results_under = hyperopt_results.copy() results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 - default_conf.update({'hyperopt_loss': 'SharpeHyperOptLoss'}) + default_conf.update({'hyperopt_loss': 'SharpeHyperOptLossDaily'}) hl = HyperOptLossResolver.load_hyperoptloss(default_conf) correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), datetime(2019, 1, 1), datetime(2019, 5, 1)) From 3d911557d1aed4301a2d38679b24027e54c9bc5e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 11 Oct 2020 08:37:47 +0200 Subject: [PATCH 3291/3421] Fix typo in docs --- docs/hyperopt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hyperopt.md b/docs/hyperopt.md index 5f5ffbee0..fc7a0dd93 100644 --- a/docs/hyperopt.md +++ b/docs/hyperopt.md @@ -221,7 +221,7 @@ This class should be in its own file within the `user_data/hyperopts/` directory Currently, the following loss functions are builtin: -* `ShortTradeHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function) - Mostly for short trade duration and avoiding losses. +* `ShortTradeDurHyperOptLoss` (default legacy Freqtrade hyperoptimization loss function) - Mostly for short trade duration and avoiding losses. * `OnlyProfitHyperOptLoss` (which takes only amount of profit into consideration) * `SharpeHyperOptLoss` (optimizes Sharpe Ratio calculated on trade returns relative to standard deviation) * `SharpeHyperOptLossDaily` (optimizes Sharpe Ratio calculated on **daily** trade returns relative to standard deviation) From fa7dc742d0b288c10c44665ec774a63ce5b7ebc3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Oct 2020 06:07:57 +0200 Subject: [PATCH 3292/3421] Plot-image should have freqtrade as entrypoint --- docker/Dockerfile.plot | 3 --- 1 file changed, 3 deletions(-) diff --git a/docker/Dockerfile.plot b/docker/Dockerfile.plot index 1843efdcb..40bc72bc5 100644 --- a/docker/Dockerfile.plot +++ b/docker/Dockerfile.plot @@ -5,6 +5,3 @@ FROM freqtradeorg/freqtrade:${sourceimage} COPY requirements-plot.txt /freqtrade/ RUN pip install -r requirements-plot.txt --no-cache-dir - -# Empty the ENTRYPOINT to allow all commands -ENTRYPOINT [] From 491af5a0cbe6af346745558735b9e8972bc7a496 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Oct 2020 05:43:19 +0000 Subject: [PATCH 3293/3421] Bump pandas from 1.1.2 to 1.1.3 Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.1.2 to 1.1.3. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v1.1.2...v1.1.3) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 51313c32c..47847c637 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ numpy==1.19.2 -pandas==1.1.2 +pandas==1.1.3 ccxt==1.35.22 SQLAlchemy==1.3.19 From a2bc9d60a08890d5002aa2c5ebcc3760cebc7d42 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Oct 2020 05:43:23 +0000 Subject: [PATCH 3294/3421] Bump arrow from 0.16.0 to 0.17.0 Bumps [arrow](https://github.com/arrow-py/arrow) from 0.16.0 to 0.17.0. - [Release notes](https://github.com/arrow-py/arrow/releases) - [Changelog](https://github.com/arrow-py/arrow/blob/master/CHANGELOG.rst) - [Commits](https://github.com/arrow-py/arrow/compare/0.16.0...0.17.0) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 51313c32c..b0f9a84e4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ pandas==1.1.2 ccxt==1.35.22 SQLAlchemy==1.3.19 python-telegram-bot==12.8 -arrow==0.16.0 +arrow==0.17.0 cachetools==4.1.1 requests==2.24.0 urllib3==1.25.10 From a33865e8c289d24b11269e6d88528e0aaaf41175 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Oct 2020 05:43:37 +0000 Subject: [PATCH 3295/3421] Bump nbconvert from 6.0.6 to 6.0.7 Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 6.0.6 to 6.0.7. - [Release notes](https://github.com/jupyter/nbconvert/releases) - [Commits](https://github.com/jupyter/nbconvert/compare/6.0.6...6.0.7) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 0710882a4..7330d079b 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -16,4 +16,4 @@ pytest-random-order==1.0.4 isort==5.5.4 # Convert jupyter notebooks to markdown documents -nbconvert==6.0.6 +nbconvert==6.0.7 From 80569c5f2179d4ba6ac8cf7df3f9fa9561297a65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Oct 2020 05:43:38 +0000 Subject: [PATCH 3296/3421] Bump mypy from 0.782 to 0.790 Bumps [mypy](https://github.com/python/mypy) from 0.782 to 0.790. - [Release notes](https://github.com/python/mypy/releases) - [Commits](https://github.com/python/mypy/compare/v0.782...v0.790) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 0710882a4..a622bac5d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ coveralls==2.1.2 flake8==3.8.4 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 -mypy==0.782 +mypy==0.790 pytest==6.1.1 pytest-asyncio==0.14.0 pytest-cov==2.10.1 From 623cee61e676362dbdd8c2f13c69dcfd7facd7cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Oct 2020 07:31:08 +0000 Subject: [PATCH 3297/3421] Bump isort from 5.5.4 to 5.6.3 Bumps [isort](https://github.com/pycqa/isort) from 5.5.4 to 5.6.3. - [Release notes](https://github.com/pycqa/isort/releases) - [Changelog](https://github.com/PyCQA/isort/blob/develop/CHANGELOG.md) - [Commits](https://github.com/pycqa/isort/compare/5.5.4...5.6.3) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 7330d079b..316c8cb8e 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -13,7 +13,7 @@ pytest-asyncio==0.14.0 pytest-cov==2.10.1 pytest-mock==3.3.1 pytest-random-order==1.0.4 -isort==5.5.4 +isort==5.6.3 # Convert jupyter notebooks to markdown documents nbconvert==6.0.7 From e39c2f4a9630072546b54015b9bd8ff74297a59b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Oct 2020 07:35:11 +0000 Subject: [PATCH 3298/3421] Bump ccxt from 1.35.22 to 1.36.2 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.35.22 to 1.36.2. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.35.22...1.36.2) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8c6635aaa..1d0290b3c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.19.2 pandas==1.1.3 -ccxt==1.35.22 +ccxt==1.36.2 SQLAlchemy==1.3.19 python-telegram-bot==12.8 arrow==0.17.0 From f299c4188b1f1372c23c7e77fe6cad49ffed8c71 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Oct 2020 08:13:28 +0000 Subject: [PATCH 3299/3421] Bump python-telegram-bot from 12.8 to 13.0 Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 12.8 to 13.0. - [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases) - [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst) - [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v12.8...v13.0) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 1d0290b3c..8a344a716 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ pandas==1.1.3 ccxt==1.36.2 SQLAlchemy==1.3.19 -python-telegram-bot==12.8 +python-telegram-bot==13.0 arrow==0.17.0 cachetools==4.1.1 requests==2.24.0 From 44e374878c3443745fe17e13c6326fffee7e2f74 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Oct 2020 19:28:14 +0200 Subject: [PATCH 3300/3421] Fix mypy errors due to new version --- freqtrade/freqtradebot.py | 4 ++-- freqtrade/misc.py | 4 ++-- freqtrade/pairlist/IPairList.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 2bdd8da4b..9562519aa 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -58,8 +58,8 @@ class FreqtradeBot: # Cache values for 1800 to avoid frequent polling of the exchange for prices # Caching only applies to RPC methods, so prices for open trades are still # refreshed once every iteration. - self._sell_rate_cache = TTLCache(maxsize=100, ttl=1800) - self._buy_rate_cache = TTLCache(maxsize=100, ttl=1800) + self._sell_rate_cache: TTLCache = TTLCache(maxsize=100, ttl=1800) + self._buy_rate_cache: TTLCache = TTLCache(maxsize=100, ttl=1800) self.strategy: IStrategy = StrategyResolver.load_strategy(self.config) diff --git a/freqtrade/misc.py b/freqtrade/misc.py index 071693f8d..359d0d0e4 100644 --- a/freqtrade/misc.py +++ b/freqtrade/misc.py @@ -56,8 +56,8 @@ def file_dump_json(filename: Path, data: Any, is_zip: bool = False, log: bool = if log: logger.info(f'dumping json to "{filename}"') - with gzip.open(filename, 'w') as fp: - rapidjson.dump(data, fp, default=str, number_mode=rapidjson.NM_NATIVE) + with gzip.open(filename, 'w') as fpz: + rapidjson.dump(data, fpz, default=str, number_mode=rapidjson.NM_NATIVE) else: if log: logger.info(f'dumping json to "{filename}"') diff --git a/freqtrade/pairlist/IPairList.py b/freqtrade/pairlist/IPairList.py index 67a96cc60..6b5bd11e7 100644 --- a/freqtrade/pairlist/IPairList.py +++ b/freqtrade/pairlist/IPairList.py @@ -36,7 +36,7 @@ class IPairList(ABC): self._pairlist_pos = pairlist_pos self.refresh_period = self._pairlistconfig.get('refresh_period', 1800) self._last_refresh = 0 - self._log_cache = TTLCache(maxsize=1024, ttl=self.refresh_period) + self._log_cache: TTLCache = TTLCache(maxsize=1024, ttl=self.refresh_period) @property def name(self) -> str: From a39898a5b3cb3bd55c0567e2dbe0fb18ce88b885 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Oct 2020 19:44:13 +0200 Subject: [PATCH 3301/3421] Fix mock for telegram update --- tests/conftest.py | 2 +- tests/rpc/test_rpc_telegram.py | 17 +++++------------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 2153fd327..f90f0e62b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -297,7 +297,7 @@ def default_conf(testdatadir): @pytest.fixture def update(): _update = Update(0) - _update.message = Message(0, 0, datetime.utcnow(), Chat(0, 0)) + _update.message = Message(0, datetime.utcnow(), Chat(0, 0)) return _update diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index c62282cf0..230df0df9 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -82,7 +82,7 @@ def test_telegram_init(default_conf, mocker, caplog) -> None: assert log_has(message_str, caplog) -def test_cleanup(default_conf, mocker) -> None: +def test_cleanup(default_conf, mocker, ) -> None: updater_mock = MagicMock() updater_mock.stop = MagicMock() mocker.patch('freqtrade.rpc.telegram.Updater', updater_mock) @@ -92,13 +92,9 @@ def test_cleanup(default_conf, mocker) -> None: assert telegram._updater.stop.call_count == 1 -def test_authorized_only(default_conf, mocker, caplog) -> None: +def test_authorized_only(default_conf, mocker, caplog, update) -> None: patch_exchange(mocker) - chat = Chat(0, 0) - update = Update(randint(1, 100)) - update.message = Message(randint(1, 100), 0, datetime.utcnow(), chat) - default_conf['telegram']['enabled'] = False bot = FreqtradeBot(default_conf) patch_get_signal(bot, (True, False)) @@ -114,7 +110,7 @@ def test_authorized_only_unauthorized(default_conf, mocker, caplog) -> None: patch_exchange(mocker) chat = Chat(0xdeadbeef, 0) update = Update(randint(1, 100)) - update.message = Message(randint(1, 100), 0, datetime.utcnow(), chat) + update.message = Message(randint(1, 100), datetime.utcnow(), chat) default_conf['telegram']['enabled'] = False bot = FreqtradeBot(default_conf) @@ -127,12 +123,9 @@ def test_authorized_only_unauthorized(default_conf, mocker, caplog) -> None: assert not log_has('Exception occurred within Telegram module', caplog) -def test_authorized_only_exception(default_conf, mocker, caplog) -> None: +def test_authorized_only_exception(default_conf, mocker, caplog, update) -> None: patch_exchange(mocker) - update = Update(randint(1, 100)) - update.message = Message(randint(1, 100), 0, datetime.utcnow(), Chat(0, 0)) - default_conf['telegram']['enabled'] = False bot = FreqtradeBot(default_conf) @@ -146,7 +139,7 @@ def test_authorized_only_exception(default_conf, mocker, caplog) -> None: assert log_has('Exception occurred within Telegram module', caplog) -def test_telegram_status(default_conf, update, mocker, fee, ticker,) -> None: +def test_telegram_status(default_conf, update, mocker) -> None: update.message.chat.id = "123" default_conf['telegram']['enabled'] = False default_conf['telegram']['chat_id'] = "123" From 5aa0d3e05c08a8ecfe15428173de3596c17a5e27 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Oct 2020 20:08:40 +0200 Subject: [PATCH 3302/3421] Add multidict and aiohttp requirements --- requirements.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/requirements.txt b/requirements.txt index 51313c32c..986739b46 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,8 @@ numpy==1.19.2 pandas==1.1.2 ccxt==1.35.22 +multidict==4.7.6 +aiohttp==3.6.3 SQLAlchemy==1.3.19 python-telegram-bot==12.8 arrow==0.16.0 From ecddaa663b3c8be6af8f305efd5f48548e52d2b7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 12 Oct 2020 19:58:04 +0200 Subject: [PATCH 3303/3421] Convert timestamp to int_timestamp for all arrow occurances --- freqtrade/configuration/timerange.py | 8 ++++---- freqtrade/edge/edge_positioning.py | 4 ++-- freqtrade/exchange/exchange.py | 12 ++++++------ freqtrade/optimize/optimize_reports.py | 4 ++-- freqtrade/wallets.py | 4 ++-- tests/commands/test_commands.py | 5 +++-- tests/conftest.py | 12 ++++++------ tests/data/test_history.py | 4 ++-- tests/edge/test_edge.py | 12 ++++++------ tests/exchange/test_exchange.py | 23 ++++++++++++----------- 10 files changed, 45 insertions(+), 43 deletions(-) diff --git a/freqtrade/configuration/timerange.py b/freqtrade/configuration/timerange.py index 151003999..32bbd02a0 100644 --- a/freqtrade/configuration/timerange.py +++ b/freqtrade/configuration/timerange.py @@ -52,11 +52,11 @@ class TimeRange: :return: None (Modifies the object in place) """ if (not self.starttype or (startup_candles - and min_date.timestamp >= self.startts)): + and min_date.int_timestamp >= self.startts)): # If no startts was defined, or backtest-data starts at the defined backtest-date logger.warning("Moving start-date by %s candles to account for startup time.", startup_candles) - self.startts = (min_date.timestamp + timeframe_secs * startup_candles) + self.startts = (min_date.int_timestamp + timeframe_secs * startup_candles) self.starttype = 'date' @staticmethod @@ -89,7 +89,7 @@ class TimeRange: if stype[0]: starts = rvals[index] if stype[0] == 'date' and len(starts) == 8: - start = arrow.get(starts, 'YYYYMMDD').timestamp + start = arrow.get(starts, 'YYYYMMDD').int_timestamp elif len(starts) == 13: start = int(starts) // 1000 else: @@ -98,7 +98,7 @@ class TimeRange: if stype[1]: stops = rvals[index] if stype[1] == 'date' and len(stops) == 8: - stop = arrow.get(stops, 'YYYYMMDD').timestamp + stop = arrow.get(stops, 'YYYYMMDD').int_timestamp elif len(stops) == 13: stop = int(stops) // 1000 else: diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index a40b63d67..037717c68 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -87,7 +87,7 @@ class Edge: heartbeat = self.edge_config.get('process_throttle_secs') if (self._last_updated > 0) and ( - self._last_updated + heartbeat > arrow.utcnow().timestamp): + self._last_updated + heartbeat > arrow.utcnow().int_timestamp): return False data: Dict[str, Any] = {} @@ -146,7 +146,7 @@ class Edge: # Fill missing, calculable columns, profit, duration , abs etc. trades_df = self._fill_calculable_fields(DataFrame(trades)) self._cached_pairs = self._process_expectancy(trades_df) - self._last_updated = arrow.utcnow().timestamp + self._last_updated = arrow.utcnow().int_timestamp return True diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index bbb94e61f..d6836ee73 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -291,7 +291,7 @@ class Exchange: try: self._api.load_markets() self._load_async_markets() - self._last_markets_refresh = arrow.utcnow().timestamp + self._last_markets_refresh = arrow.utcnow().int_timestamp except ccxt.BaseError as e: logger.warning('Unable to initialize markets. Reason: %s', e) @@ -300,14 +300,14 @@ class Exchange: # Check whether markets have to be reloaded if (self._last_markets_refresh > 0) and ( self._last_markets_refresh + self.markets_refresh_interval - > arrow.utcnow().timestamp): + > arrow.utcnow().int_timestamp): return None logger.debug("Performing scheduled market reload..") try: self._api.load_markets(reload=True) # Also reload async markets to avoid issues with newly listed pairs self._load_async_markets(reload=True) - self._last_markets_refresh = arrow.utcnow().timestamp + self._last_markets_refresh = arrow.utcnow().int_timestamp except ccxt.BaseError: logger.exception("Could not reload markets.") @@ -501,7 +501,7 @@ class Exchange: 'side': side, 'remaining': _amount, 'datetime': arrow.utcnow().isoformat(), - 'timestamp': int(arrow.utcnow().timestamp * 1000), + 'timestamp': int(arrow.utcnow().int_timestamp * 1000), 'status': "closed" if ordertype == "market" else "open", 'fee': None, 'info': {} @@ -696,7 +696,7 @@ class Exchange: ) input_coroutines = [self._async_get_candle_history( pair, timeframe, since) for since in - range(since_ms, arrow.utcnow().timestamp * 1000, one_call)] + range(since_ms, arrow.utcnow().int_timestamp * 1000, one_call)] results = await asyncio.gather(*input_coroutines, return_exceptions=True) @@ -759,7 +759,7 @@ class Exchange: interval_in_sec = timeframe_to_seconds(timeframe) return not ((self._pairs_last_refresh_time.get((pair, timeframe), 0) - + interval_in_sec) >= arrow.utcnow().timestamp) + + interval_in_sec) >= arrow.utcnow().int_timestamp) @retrier_async async def _async_get_candle_history(self, pair: str, timeframe: str, diff --git a/freqtrade/optimize/optimize_reports.py b/freqtrade/optimize/optimize_reports.py index 3db9a312a..c977a991b 100644 --- a/freqtrade/optimize/optimize_reports.py +++ b/freqtrade/optimize/optimize_reports.py @@ -268,9 +268,9 @@ def generate_backtest_stats(btdata: Dict[str, DataFrame], 'profit_total': results['profit_percent'].sum(), 'profit_total_abs': results['profit_abs'].sum(), 'backtest_start': min_date.datetime, - 'backtest_start_ts': min_date.timestamp * 1000, + 'backtest_start_ts': min_date.int_timestamp * 1000, 'backtest_end': max_date.datetime, - 'backtest_end_ts': max_date.timestamp * 1000, + 'backtest_end_ts': max_date.int_timestamp * 1000, 'backtest_days': backtest_days, 'trades_per_day': round(len(results) / backtest_days, 2) if backtest_days > 0 else 0, diff --git a/freqtrade/wallets.py b/freqtrade/wallets.py index 21a9466e1..3680dd416 100644 --- a/freqtrade/wallets.py +++ b/freqtrade/wallets.py @@ -108,13 +108,13 @@ class Wallets: for trading operations, the latest balance is needed. :param require_update: Allow skipping an update if balances were recently refreshed """ - if (require_update or (self._last_wallet_refresh + 3600 < arrow.utcnow().timestamp)): + if (require_update or (self._last_wallet_refresh + 3600 < arrow.utcnow().int_timestamp)): if self._config['dry_run']: self._update_dry() else: self._update_live() logger.info('Wallets synced.') - self._last_wallet_refresh = arrow.utcnow().timestamp + self._last_wallet_refresh = arrow.utcnow().int_timestamp def get_all_balances(self) -> Dict[str, Any]: return self._wallets diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 5b125697c..bf845a2e1 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -579,7 +579,7 @@ def test_download_data_timerange(mocker, caplog, markets): start_download_data(get_args(args)) assert dl_mock.call_count == 1 # 20days ago - days_ago = arrow.get(arrow.utcnow().shift(days=-20).date()).timestamp + days_ago = arrow.get(arrow.utcnow().shift(days=-20).date()).int_timestamp assert dl_mock.call_args_list[0][1]['timerange'].startts == days_ago dl_mock.reset_mock() @@ -592,7 +592,8 @@ def test_download_data_timerange(mocker, caplog, markets): start_download_data(get_args(args)) assert dl_mock.call_count == 1 - assert dl_mock.call_args_list[0][1]['timerange'].startts == arrow.Arrow(2020, 1, 1).timestamp + assert dl_mock.call_args_list[0][1]['timerange'].startts == arrow.Arrow( + 2020, 1, 1).int_timestamp def test_download_data_no_markets(mocker, caplog): diff --git a/tests/conftest.py b/tests/conftest.py index 2153fd327..a99404ac2 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -792,7 +792,7 @@ def limit_buy_order_open(): 'side': 'buy', 'symbol': 'mocked', 'datetime': arrow.utcnow().isoformat(), - 'timestamp': arrow.utcnow().timestamp, + 'timestamp': arrow.utcnow().int_timestamp, 'price': 0.00001099, 'amount': 90.99181073, 'filled': 0.0, @@ -911,7 +911,7 @@ def limit_buy_order_canceled_empty(request): 'info': {}, 'id': '1234512345', 'clientOrderId': None, - 'timestamp': arrow.utcnow().shift(minutes=-601).timestamp, + 'timestamp': arrow.utcnow().shift(minutes=-601).int_timestamp, 'datetime': arrow.utcnow().shift(minutes=-601).isoformat(), 'lastTradeTimestamp': None, 'symbol': 'LTC/USDT', @@ -932,7 +932,7 @@ def limit_buy_order_canceled_empty(request): 'info': {}, 'id': 'AZNPFF-4AC4N-7MKTAT', 'clientOrderId': None, - 'timestamp': arrow.utcnow().shift(minutes=-601).timestamp, + 'timestamp': arrow.utcnow().shift(minutes=-601).int_timestamp, 'datetime': arrow.utcnow().shift(minutes=-601).isoformat(), 'lastTradeTimestamp': None, 'status': 'canceled', @@ -953,7 +953,7 @@ def limit_buy_order_canceled_empty(request): 'info': {}, 'id': '1234512345', 'clientOrderId': 'alb1234123', - 'timestamp': arrow.utcnow().shift(minutes=-601).timestamp, + 'timestamp': arrow.utcnow().shift(minutes=-601).int_timestamp, 'datetime': arrow.utcnow().shift(minutes=-601).isoformat(), 'lastTradeTimestamp': None, 'symbol': 'LTC/USDT', @@ -974,7 +974,7 @@ def limit_buy_order_canceled_empty(request): 'info': {}, 'id': '1234512345', 'clientOrderId': 'alb1234123', - 'timestamp': arrow.utcnow().shift(minutes=-601).timestamp, + 'timestamp': arrow.utcnow().shift(minutes=-601).int_timestamp, 'datetime': arrow.utcnow().shift(minutes=-601).isoformat(), 'lastTradeTimestamp': None, 'symbol': 'LTC/USDT', @@ -1000,7 +1000,7 @@ def limit_sell_order_open(): 'side': 'sell', 'pair': 'mocked', 'datetime': arrow.utcnow().isoformat(), - 'timestamp': arrow.utcnow().timestamp, + 'timestamp': arrow.utcnow().int_timestamp, 'price': 0.00001173, 'amount': 90.99181073, 'filled': 0.0, diff --git a/tests/data/test_history.py b/tests/data/test_history.py index c8324cf0b..bbc6e55b4 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -323,7 +323,7 @@ def test_load_partial_missing(testdatadir, caplog) -> None: start = arrow.get('2018-01-01T00:00:00') end = arrow.get('2018-01-11T00:00:00') data = load_data(testdatadir, '5m', ['UNITTEST/BTC'], startup_candles=20, - timerange=TimeRange('date', 'date', start.timestamp, end.timestamp)) + timerange=TimeRange('date', 'date', start.int_timestamp, end.int_timestamp)) assert log_has( 'Using indicator startup period: 20 ...', caplog ) @@ -339,7 +339,7 @@ def test_load_partial_missing(testdatadir, caplog) -> None: start = arrow.get('2018-01-10T00:00:00') end = arrow.get('2018-02-20T00:00:00') data = load_data(datadir=testdatadir, timeframe='5m', pairs=['UNITTEST/BTC'], - timerange=TimeRange('date', 'date', start.timestamp, end.timestamp)) + timerange=TimeRange('date', 'date', start.int_timestamp, end.int_timestamp)) # timedifference in 5 minutes td = ((end - start).total_seconds() // 60 // 5) + 1 assert td != len(data['UNITTEST/BTC']) diff --git a/tests/edge/test_edge.py b/tests/edge/test_edge.py index a4bfa1085..f25dad35b 100644 --- a/tests/edge/test_edge.py +++ b/tests/edge/test_edge.py @@ -50,7 +50,7 @@ def _build_dataframe(buy_ohlc_sell_matrice): 'date': tests_start_time.shift( minutes=( ohlc[0] * - timeframe_in_minute)).timestamp * + timeframe_in_minute)).int_timestamp * 1000, 'buy': ohlc[1], 'open': ohlc[2], @@ -71,7 +71,7 @@ def _build_dataframe(buy_ohlc_sell_matrice): def _time_on_candle(number): return np.datetime64(tests_start_time.shift( - minutes=(number * timeframe_in_minute)).timestamp * 1000, 'ms') + minutes=(number * timeframe_in_minute)).int_timestamp * 1000, 'ms') # End helper functions @@ -251,7 +251,7 @@ def test_edge_heartbeat_calculate(mocker, edge_conf): heartbeat = edge_conf['edge']['process_throttle_secs'] # should not recalculate if heartbeat not reached - edge._last_updated = arrow.utcnow().timestamp - heartbeat + 1 + edge._last_updated = arrow.utcnow().int_timestamp - heartbeat + 1 assert edge.calculate() is False @@ -263,7 +263,7 @@ def mocked_load_data(datadir, pairs=[], timeframe='0m', NEOBTC = [ [ - tests_start_time.shift(minutes=(x * timeframe_in_minute)).timestamp * 1000, + tests_start_time.shift(minutes=(x * timeframe_in_minute)).int_timestamp * 1000, math.sin(x * hz) / 1000 + base, math.sin(x * hz) / 1000 + base + 0.0001, math.sin(x * hz) / 1000 + base - 0.0001, @@ -275,7 +275,7 @@ def mocked_load_data(datadir, pairs=[], timeframe='0m', base = 0.002 LTCBTC = [ [ - tests_start_time.shift(minutes=(x * timeframe_in_minute)).timestamp * 1000, + tests_start_time.shift(minutes=(x * timeframe_in_minute)).int_timestamp * 1000, math.sin(x * hz) / 1000 + base, math.sin(x * hz) / 1000 + base + 0.0001, math.sin(x * hz) / 1000 + base - 0.0001, @@ -299,7 +299,7 @@ def test_edge_process_downloaded_data(mocker, edge_conf): assert edge.calculate() assert len(edge._cached_pairs) == 2 - assert edge._last_updated <= arrow.utcnow().timestamp + 2 + assert edge._last_updated <= arrow.utcnow().int_timestamp + 2 def test_edge_process_no_data(mocker, edge_conf, caplog): diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 7be9c77ac..7df596098 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -385,7 +385,7 @@ def test_reload_markets(default_conf, mocker, caplog): exchange = get_patched_exchange(mocker, default_conf, api_mock, id="binance", mock_markets=False) exchange._load_async_markets = MagicMock() - exchange._last_markets_refresh = arrow.utcnow().timestamp + exchange._last_markets_refresh = arrow.utcnow().int_timestamp updated_markets = {'ETH/BTC': {}, "LTC/BTC": {}} assert exchange.markets == initial_markets @@ -396,7 +396,7 @@ def test_reload_markets(default_conf, mocker, caplog): assert exchange._load_async_markets.call_count == 0 # more than 10 minutes have passed, reload is executed - exchange._last_markets_refresh = arrow.utcnow().timestamp - 15 * 60 + exchange._last_markets_refresh = arrow.utcnow().int_timestamp - 15 * 60 exchange.reload_markets() assert exchange.markets == updated_markets assert exchange._load_async_markets.call_count == 1 @@ -1264,7 +1264,7 @@ def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name): exchange = get_patched_exchange(mocker, default_conf, id=exchange_name) ohlcv = [ [ - arrow.utcnow().timestamp * 1000, # unix timestamp ms + arrow.utcnow().int_timestamp * 1000, # unix timestamp ms 1, # open 2, # high 3, # low @@ -1281,7 +1281,8 @@ def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name): # one_call calculation * 1.8 should do 2 calls since = 5 * 60 * exchange._ft_has['ohlcv_candle_limit'] * 1.8 - ret = exchange.get_historic_ohlcv(pair, "5m", int((arrow.utcnow().timestamp - since) * 1000)) + ret = exchange.get_historic_ohlcv(pair, "5m", int(( + arrow.utcnow().int_timestamp - since) * 1000)) assert exchange._async_get_candle_history.call_count == 2 # Returns twice the above OHLCV data @@ -1291,7 +1292,7 @@ def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name): def test_refresh_latest_ohlcv(mocker, default_conf, caplog) -> None: ohlcv = [ [ - (arrow.utcnow().timestamp - 1) * 1000, # unix timestamp ms + (arrow.utcnow().int_timestamp - 1) * 1000, # unix timestamp ms 1, # open 2, # high 3, # low @@ -1299,7 +1300,7 @@ def test_refresh_latest_ohlcv(mocker, default_conf, caplog) -> None: 5, # volume (in quote currency) ], [ - arrow.utcnow().timestamp * 1000, # unix timestamp ms + arrow.utcnow().int_timestamp * 1000, # unix timestamp ms 3, # open 1, # high 4, # low @@ -1345,7 +1346,7 @@ def test_refresh_latest_ohlcv(mocker, default_conf, caplog) -> None: async def test__async_get_candle_history(default_conf, mocker, caplog, exchange_name): ohlcv = [ [ - arrow.utcnow().timestamp * 1000, # unix timestamp ms + arrow.utcnow().int_timestamp * 1000, # unix timestamp ms 1, # open 2, # high 3, # low @@ -1380,14 +1381,14 @@ async def test__async_get_candle_history(default_conf, mocker, caplog, exchange_ api_mock.fetch_ohlcv = MagicMock(side_effect=ccxt.BaseError("Unknown error")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) await exchange._async_get_candle_history(pair, "5m", - (arrow.utcnow().timestamp - 2000) * 1000) + (arrow.utcnow().int_timestamp - 2000) * 1000) with pytest.raises(OperationalException, match=r'Exchange.* does not support fetching ' r'historical candle \(OHLCV\) data\..*'): api_mock.fetch_ohlcv = MagicMock(side_effect=ccxt.NotSupported("Not supported")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) await exchange._async_get_candle_history(pair, "5m", - (arrow.utcnow().timestamp - 2000) * 1000) + (arrow.utcnow().int_timestamp - 2000) * 1000) @pytest.mark.asyncio @@ -1599,13 +1600,13 @@ async def test__async_fetch_trades(default_conf, mocker, caplog, exchange_name, with pytest.raises(OperationalException, match=r'Could not fetch trade data*'): api_mock.fetch_trades = MagicMock(side_effect=ccxt.BaseError("Unknown error")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) - await exchange._async_fetch_trades(pair, since=(arrow.utcnow().timestamp - 2000) * 1000) + await exchange._async_fetch_trades(pair, since=(arrow.utcnow().int_timestamp - 2000) * 1000) with pytest.raises(OperationalException, match=r'Exchange.* does not support fetching ' r'historical trade data\..*'): api_mock.fetch_trades = MagicMock(side_effect=ccxt.NotSupported("Not supported")) exchange = get_patched_exchange(mocker, default_conf, api_mock, id=exchange_name) - await exchange._async_fetch_trades(pair, since=(arrow.utcnow().timestamp - 2000) * 1000) + await exchange._async_fetch_trades(pair, since=(arrow.utcnow().int_timestamp - 2000) * 1000) @pytest.mark.asyncio From 43532a2ffa265129498bbb3135ba952a68e7f74b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 12:39:31 +0000 Subject: [PATCH 3304/3421] Bump colorama from 0.4.3 to 0.4.4 Bumps [colorama](https://github.com/tartley/colorama) from 0.4.3 to 0.4.4. - [Release notes](https://github.com/tartley/colorama/releases) - [Changelog](https://github.com/tartley/colorama/blob/master/CHANGELOG.rst) - [Commits](https://github.com/tartley/colorama/commits) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ef9182f3b..a03b4ba20 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,7 +34,7 @@ flask-jwt-extended==3.24.1 flask-cors==3.0.9 # Support for colorized terminal output -colorama==0.4.3 +colorama==0.4.4 # Building config files interactively questionary==1.6.0 prompt-toolkit==3.0.7 From 5f5fc513fa710ec83423af4f3c250cebf166b259 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 12:39:35 +0000 Subject: [PATCH 3305/3421] Bump isort from 5.6.3 to 5.6.4 Bumps [isort](https://github.com/pycqa/isort) from 5.6.3 to 5.6.4. - [Release notes](https://github.com/pycqa/isort/releases) - [Changelog](https://github.com/PyCQA/isort/blob/develop/CHANGELOG.md) - [Commits](https://github.com/pycqa/isort/compare/5.6.3...5.6.4) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 33aae2dfb..916bb2ec2 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -13,7 +13,7 @@ pytest-asyncio==0.14.0 pytest-cov==2.10.1 pytest-mock==3.3.1 pytest-random-order==1.0.4 -isort==5.6.3 +isort==5.6.4 # Convert jupyter notebooks to markdown documents nbconvert==6.0.7 From fd9c8df049eda9598b596458e6263af5cdb08720 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 12:39:47 +0000 Subject: [PATCH 3306/3421] Bump ccxt from 1.36.2 to 1.36.12 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.36.2 to 1.36.12. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.36.2...1.36.12) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ef9182f3b..17008d48a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.19.2 pandas==1.1.3 -ccxt==1.36.2 +ccxt==1.36.12 multidict==4.7.6 aiohttp==3.6.3 SQLAlchemy==1.3.19 From 7c1402ef1144d76f612d9194cfd0f4960e4390d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 13:06:37 +0000 Subject: [PATCH 3307/3421] Bump prompt-toolkit from 3.0.7 to 3.0.8 Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.7 to 3.0.8. - [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases) - [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG) - [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/commits) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index a03b4ba20..9b0b53cae 100644 --- a/requirements.txt +++ b/requirements.txt @@ -37,4 +37,4 @@ flask-cors==3.0.9 colorama==0.4.4 # Building config files interactively questionary==1.6.0 -prompt-toolkit==3.0.7 +prompt-toolkit==3.0.8 From 6a0ab83684fc1a2234408362b8e22d0237d538e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 13:20:24 +0000 Subject: [PATCH 3308/3421] Bump sqlalchemy from 1.3.19 to 1.3.20 Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.3.19 to 1.3.20. - [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases) - [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/master/CHANGES) - [Commits](https://github.com/sqlalchemy/sqlalchemy/commits) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 786b1d4a7..72d16465c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ pandas==1.1.3 ccxt==1.36.12 multidict==4.7.6 aiohttp==3.6.3 -SQLAlchemy==1.3.19 +SQLAlchemy==1.3.20 python-telegram-bot==13.0 arrow==0.17.0 cachetools==4.1.1 From 077374ac42eda2fb4166d46288cee439f3acd245 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Oct 2020 20:02:47 +0200 Subject: [PATCH 3309/3421] Implement generic solution for l2 limited limit --- freqtrade/exchange/binance.py | 13 +------------ freqtrade/exchange/exchange.py | 15 +++++++++++++-- tests/exchange/test_exchange.py | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 14 deletions(-) diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index b85802aad..099f282a2 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -20,20 +20,9 @@ class Binance(Exchange): "order_time_in_force": ['gtc', 'fok', 'ioc'], "trades_pagination": "id", "trades_pagination_arg": "fromId", + "l2_limit_range": [5, 10, 20, 50, 100, 500, 1000], } - def fetch_l2_order_book(self, pair: str, limit: int = 100) -> dict: - """ - get order book level 2 from exchange - - 20180619: binance support limits but only on specific range - """ - limit_range = [5, 10, 20, 50, 100, 500, 1000] - # get next-higher step in the limit_range list - limit = min(list(filter(lambda x: limit <= x, limit_range))) - - return super().fetch_l2_order_book(pair, limit) - def stoploss_adjust(self, stop_loss: float, order: Dict) -> bool: """ Verify stop_loss against stoploss-order value (limit or price) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index bbb94e61f..66126785f 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -53,7 +53,7 @@ class Exchange: "ohlcv_partial_candle": True, "trades_pagination": "time", # Possible are "time" or "id" "trades_pagination_arg": "since", - + "l2_limit_range": None, } _ft_has: Dict = {} @@ -1069,6 +1069,16 @@ class Exchange: return self.fetch_stoploss_order(order_id, pair) return self.fetch_order(order_id, pair) + @staticmethod + def get_next_limit_in_list(limit: int, limit_range: Optional[List[int]]): + """ + Get next greater limit + """ + if not limit_range: + return limit + + return min(list(filter(lambda x: limit <= x, limit_range))) + @retrier def fetch_l2_order_book(self, pair: str, limit: int = 100) -> dict: """ @@ -1077,9 +1087,10 @@ class Exchange: Returns a dict in the format {'asks': [price, volume], 'bids': [price, volume]} """ + limit1 = self.get_next_limit_in_list(limit, self._ft_has['l2_limit_range']) try: - return self._api.fetch_l2_order_book(pair, limit) + return self._api.fetch_l2_order_book(pair, limit1) except ccxt.NotSupported as e: raise OperationalException( f'Exchange {self._api.name} does not support fetching order book.' diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 7be9c77ac..4adc8b2ea 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1438,6 +1438,25 @@ def test_refresh_latest_ohlcv_inv_result(default_conf, mocker, caplog): assert log_has("Async code raised an exception: TypeError", caplog) +def test_get_next_limit_in_list(): + limit_range = [5, 10, 20, 50, 100, 500, 1000] + assert Exchange.get_next_limit_in_list(1, limit_range) == 5 + assert Exchange.get_next_limit_in_list(5, limit_range) == 5 + assert Exchange.get_next_limit_in_list(6, limit_range) == 10 + assert Exchange.get_next_limit_in_list(9, limit_range) == 10 + assert Exchange.get_next_limit_in_list(10, limit_range) == 10 + assert Exchange.get_next_limit_in_list(11, limit_range) == 20 + assert Exchange.get_next_limit_in_list(19, limit_range) == 20 + assert Exchange.get_next_limit_in_list(21, limit_range) == 50 + assert Exchange.get_next_limit_in_list(51, limit_range) == 100 + assert Exchange.get_next_limit_in_list(1000, limit_range) == 1000 + # assert Exchange.get_next_limit_in_list(1001, limit_range) == 1001 + + assert Exchange.get_next_limit_in_list(21, None) == 21 + assert Exchange.get_next_limit_in_list(100, None) == 100 + assert Exchange.get_next_limit_in_list(1000, None) == 1000 + + @pytest.mark.parametrize("exchange_name", EXCHANGES) def test_fetch_l2_order_book(default_conf, mocker, order_book_l2, exchange_name): default_conf['exchange']['name'] = exchange_name @@ -1450,6 +1469,20 @@ def test_fetch_l2_order_book(default_conf, mocker, order_book_l2, exchange_name) assert 'asks' in order_book assert len(order_book['bids']) == 10 assert len(order_book['asks']) == 10 + assert api_mock.fetch_l2_order_book.call_args_list[0][0][0] == 'ETH/BTC' + assert api_mock.fetch_l2_order_book.call_args_list[0][0][1] == 10 + + for val in [1, 5, 12, 20, 50, 100]: + api_mock.fetch_l2_order_book.reset_mock() + + order_book = exchange.fetch_l2_order_book(pair='ETH/BTC', limit=val) + assert api_mock.fetch_l2_order_book.call_args_list[0][0][0] == 'ETH/BTC' + # Not all exchanges support all limits for orderbook + if not exchange._ft_has['l2_limit_range'] or val in exchange._ft_has['l2_limit_range']: + assert api_mock.fetch_l2_order_book.call_args_list[0][0][1] == val + else: + next_limit = exchange.get_next_limit_in_list(val, exchange._ft_has['l2_limit_range']) + assert api_mock.fetch_l2_order_book.call_args_list[0][0][1] == next_limit @pytest.mark.parametrize("exchange_name", EXCHANGES) From 8962b6d5c9ec49462b43d09c9e66b9b88b87284d Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Oct 2020 20:09:43 +0200 Subject: [PATCH 3310/3421] Add Bittrex subclass to correctly handle L2 orderbook --- freqtrade/exchange/__init__.py | 1 + freqtrade/exchange/bittrex.py | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 freqtrade/exchange/bittrex.py diff --git a/freqtrade/exchange/__init__.py b/freqtrade/exchange/__init__.py index cbcf961bc..5b58d7a95 100644 --- a/freqtrade/exchange/__init__.py +++ b/freqtrade/exchange/__init__.py @@ -5,6 +5,7 @@ from freqtrade.exchange.exchange import Exchange # isort: on from freqtrade.exchange.bibox import Bibox from freqtrade.exchange.binance import Binance +from freqtrade.exchange.bittrex import Bittrex from freqtrade.exchange.exchange import (available_exchanges, ccxt_exchanges, get_exchange_bad_reason, is_exchange_bad, is_exchange_known_ccxt, is_exchange_officially_supported, diff --git a/freqtrade/exchange/bittrex.py b/freqtrade/exchange/bittrex.py new file mode 100644 index 000000000..4318f9cf0 --- /dev/null +++ b/freqtrade/exchange/bittrex.py @@ -0,0 +1,23 @@ +""" Bittrex exchange subclass """ +import logging +from typing import Dict + +from freqtrade.exchange import Exchange + + +logger = logging.getLogger(__name__) + + +class Bittrex(Exchange): + """ + Bittrex exchange class. Contains adjustments needed for Freqtrade to work + with this exchange. + + Please note that this exchange is not included in the list of exchanges + officially supported by the Freqtrade development team. So some features + may still not work as expected. + """ + + _ft_has: Dict = { + "l2_limit_range": [1, 25, 500], + } From 2ed20eee4e5a5e5c4b66deba5400293744271931 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Oct 2020 20:10:50 +0200 Subject: [PATCH 3311/3421] Configs should default to dry-run --- config.json.example | 4 ++-- config_full.json.example | 2 +- config_kraken.json.example | 5 ++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/config.json.example b/config.json.example index ab517b77c..af45dac74 100644 --- a/config.json.example +++ b/config.json.example @@ -5,15 +5,15 @@ "tradable_balance_ratio": 0.99, "fiat_display_currency": "USD", "timeframe": "5m", - "dry_run": false, + "dry_run": true, "cancel_open_orders_on_exit": false, "unfilledtimeout": { "buy": 10, "sell": 30 }, "bid_strategy": { - "ask_last_balance": 0.0, "use_order_book": false, + "ask_last_balance": 0.0, "order_book_top": 1, "check_depth_of_market": { "enabled": false, diff --git a/config_full.json.example b/config_full.json.example index 659580fb1..45c5c695c 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -7,7 +7,7 @@ "amount_reserve_percent": 0.05, "amend_last_stake_amount": false, "last_stake_amount_min_ratio": 0.5, - "dry_run": false, + "dry_run": true, "cancel_open_orders_on_exit": false, "timeframe": "5m", "trailing_stop": false, diff --git a/config_kraken.json.example b/config_kraken.json.example index fd0b2b95d..5f3b57854 100644 --- a/config_kraken.json.example +++ b/config_kraken.json.example @@ -27,12 +27,11 @@ "use_sell_signal": true, "sell_profit_only": false, "ignore_roi_if_buy_signal": false - }, "exchange": { "name": "kraken", - "key": "", - "secret": "", + "key": "your_exchange_key", + "secret": "your_exchange_key", "ccxt_config": {"enableRateLimit": true}, "ccxt_async_config": { "enableRateLimit": true, From 8165cc11df8f3b68806ae2668b377ae4c17d4084 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Oct 2020 20:29:51 +0200 Subject: [PATCH 3312/3421] Change get_next_limit_in_list to use list comprehension --- freqtrade/exchange/exchange.py | 6 +++--- tests/data/test_dataprovider.py | 2 +- tests/exchange/test_exchange.py | 15 +++++++++++---- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 66126785f..ffe81ab39 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1072,12 +1072,12 @@ class Exchange: @staticmethod def get_next_limit_in_list(limit: int, limit_range: Optional[List[int]]): """ - Get next greater limit + Get next greater value in the list. + Used by fetch_l2_order_book if the api only supports a limited range """ if not limit_range: return limit - - return min(list(filter(lambda x: limit <= x, limit_range))) + return min([x for x in limit_range if limit <= x]) @retrier def fetch_l2_order_book(self, pair: str, limit: int = 100) -> dict: diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index c2ecf4b80..a64dce908 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -132,7 +132,7 @@ def test_orderbook(mocker, default_conf, order_book_l2): res = dp.orderbook('ETH/BTC', 5) assert order_book_l2.call_count == 1 assert order_book_l2.call_args_list[0][0][0] == 'ETH/BTC' - assert order_book_l2.call_args_list[0][0][1] == 5 + assert order_book_l2.call_args_list[0][0][1] >= 5 assert type(res) is dict assert 'bids' in res diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 4adc8b2ea..7b86d3866 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -11,7 +11,7 @@ from pandas import DataFrame from freqtrade.exceptions import (DDosProtection, DependencyException, InvalidOrderException, OperationalException, TemporaryError) -from freqtrade.exchange import Binance, Exchange, Kraken +from freqtrade.exchange import Binance, Bittrex, Exchange, Kraken from freqtrade.exchange.common import (API_FETCH_ORDER_RETRY_COUNT, API_RETRY_COUNT, calculate_backoff) from freqtrade.exchange.exchange import (market_is_active, timeframe_to_minutes, timeframe_to_msecs, @@ -148,11 +148,19 @@ def test_exchange_resolver(default_conf, mocker, caplog): mocker.patch('freqtrade.exchange.Exchange.validate_pairs') mocker.patch('freqtrade.exchange.Exchange.validate_timeframes') mocker.patch('freqtrade.exchange.Exchange.validate_stakecurrency') - exchange = ExchangeResolver.load_exchange('Bittrex', default_conf) + + exchange = ExchangeResolver.load_exchange('huobi', default_conf) assert isinstance(exchange, Exchange) assert log_has_re(r"No .* specific subclass found. Using the generic class instead.", caplog) caplog.clear() + exchange = ExchangeResolver.load_exchange('Bittrex', default_conf) + assert isinstance(exchange, Exchange) + assert isinstance(exchange, Bittrex) + assert not log_has_re(r"No .* specific subclass found. Using the generic class instead.", + caplog) + caplog.clear() + exchange = ExchangeResolver.load_exchange('kraken', default_conf) assert isinstance(exchange, Exchange) assert isinstance(exchange, Kraken) @@ -1470,9 +1478,8 @@ def test_fetch_l2_order_book(default_conf, mocker, order_book_l2, exchange_name) assert len(order_book['bids']) == 10 assert len(order_book['asks']) == 10 assert api_mock.fetch_l2_order_book.call_args_list[0][0][0] == 'ETH/BTC' - assert api_mock.fetch_l2_order_book.call_args_list[0][0][1] == 10 - for val in [1, 5, 12, 20, 50, 100]: + for val in [1, 5, 10, 12, 20, 50, 100]: api_mock.fetch_l2_order_book.reset_mock() order_book = exchange.fetch_l2_order_book(pair='ETH/BTC', limit=val) From 07da21e6335bc511e7ba363545b6b47b590721da Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 13 Oct 2020 20:38:02 +0200 Subject: [PATCH 3313/3421] Fix problem when limit is > max allowed limit --- freqtrade/exchange/exchange.py | 2 +- tests/exchange/test_exchange.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index ffe81ab39..c0d737f26 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -1077,7 +1077,7 @@ class Exchange: """ if not limit_range: return limit - return min([x for x in limit_range if limit <= x]) + return min([x for x in limit_range if limit <= x] + [max(limit_range)]) @retrier def fetch_l2_order_book(self, pair: str, limit: int = 100) -> dict: diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 7b86d3866..19f2c7239 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1458,7 +1458,9 @@ def test_get_next_limit_in_list(): assert Exchange.get_next_limit_in_list(21, limit_range) == 50 assert Exchange.get_next_limit_in_list(51, limit_range) == 100 assert Exchange.get_next_limit_in_list(1000, limit_range) == 1000 - # assert Exchange.get_next_limit_in_list(1001, limit_range) == 1001 + # Going over the limit ... + assert Exchange.get_next_limit_in_list(1001, limit_range) == 1000 + assert Exchange.get_next_limit_in_list(2000, limit_range) == 1000 assert Exchange.get_next_limit_in_list(21, None) == 21 assert Exchange.get_next_limit_in_list(100, None) == 100 From ec713ff5aee4657a3e968ed515906d5c95ca1bb9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Oct 2020 06:26:57 +0200 Subject: [PATCH 3314/3421] Convert _rpc_analysed_history_full to static method --- freqtrade/rpc/api_server.py | 2 +- freqtrade/rpc/rpc.py | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 4e262b1ec..f31d7b0b5 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -563,7 +563,7 @@ class ApiServer(RPC): config.update({ 'strategy': strategy, }) - results = self._rpc_analysed_history_full(config, pair, timeframe, timerange) + results = RPC._rpc_analysed_history_full(config, pair, timeframe, timerange) return jsonify(results) @require_login diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index b89284acf..911b2d731 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -656,8 +656,9 @@ class RPC: raise RPCException('Edge is not enabled.') return self._freqtrade.edge.accepted_pairs() - def _convert_dataframe_to_dict(self, strategy: str, pair: str, timeframe: str, - dataframe: DataFrame, last_analyzed: datetime) -> Dict[str, Any]: + @staticmethod + def _convert_dataframe_to_dict(strategy: str, pair: str, timeframe: str, dataframe: DataFrame, + last_analyzed: datetime) -> Dict[str, Any]: has_content = len(dataframe) != 0 buy_signals = 0 sell_signals = 0 @@ -711,7 +712,8 @@ class RPC: return self._convert_dataframe_to_dict(self._freqtrade.config['strategy'], pair, timeframe, _data, last_analyzed) - def _rpc_analysed_history_full(self, config, pair: str, timeframe: str, + @staticmethod + def _rpc_analysed_history_full(config, pair: str, timeframe: str, timerange: str) -> Dict[str, Any]: timerange_parsed = TimeRange.parse_timerange(timerange) @@ -726,8 +728,8 @@ class RPC: strategy = StrategyResolver.load_strategy(config) df_analyzed = strategy.analyze_ticker(_data[pair], {'pair': pair}) - return self._convert_dataframe_to_dict(strategy.get_strategy_name(), pair, timeframe, - df_analyzed, arrow.Arrow.utcnow().datetime) + return RPC._convert_dataframe_to_dict(strategy.get_strategy_name(), pair, timeframe, + df_analyzed, arrow.Arrow.utcnow().datetime) def _rpc_plot_config(self) -> Dict[str, Any]: From 685d18940a52eff4534d1a87bdb440cabb413bf1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Oct 2020 08:13:31 +0200 Subject: [PATCH 3315/3421] specify min-version for arrow int_timestamp was introduced in this version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 9b57e8d2c..b47427709 100644 --- a/setup.py +++ b/setup.py @@ -69,7 +69,7 @@ setup(name='freqtrade', 'ccxt>=1.24.96', 'SQLAlchemy', 'python-telegram-bot', - 'arrow', + 'arrow>=0.17.0', 'cachetools', 'requests', 'urllib3', From 8cdc795a44306a57bccd4f7caf64c36a5d8d48b3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 16 Oct 2020 07:39:12 +0200 Subject: [PATCH 3316/3421] Rename persistence.init to init_db --- freqtrade/commands/list_commands.py | 4 ++-- freqtrade/data/btanalysis.py | 5 ++--- freqtrade/freqtradebot.py | 8 ++++---- freqtrade/persistence/__init__.py | 2 +- freqtrade/persistence/models.py | 6 +++--- tests/commands/test_commands.py | 2 +- tests/conftest.py | 8 ++++---- tests/data/test_btanalysis.py | 2 +- tests/test_freqtradebot.py | 5 ++--- tests/test_main.py | 10 +++++----- tests/test_persistence.py | 20 ++++++++++---------- 11 files changed, 35 insertions(+), 37 deletions(-) diff --git a/freqtrade/commands/list_commands.py b/freqtrade/commands/list_commands.py index e81ecf871..9e6076dfb 100644 --- a/freqtrade/commands/list_commands.py +++ b/freqtrade/commands/list_commands.py @@ -205,14 +205,14 @@ def start_show_trades(args: Dict[str, Any]) -> None: """ import json - from freqtrade.persistence import Trade, init + from freqtrade.persistence import Trade, init_db config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) if 'db_url' not in config: raise OperationalException("--db-url is required for this command.") logger.info(f'Using DB: "{config["db_url"]}"') - init(config['db_url'], clean_open_orders=False) + init_db(config['db_url'], clean_open_orders=False) tfilter = [] if config.get('trade_ids'): diff --git a/freqtrade/data/btanalysis.py b/freqtrade/data/btanalysis.py index 6af685712..513fba9e7 100644 --- a/freqtrade/data/btanalysis.py +++ b/freqtrade/data/btanalysis.py @@ -9,10 +9,9 @@ from typing import Any, Dict, Optional, Tuple, Union import numpy as np import pandas as pd -from freqtrade import persistence from freqtrade.constants import LAST_BT_RESULT_FN from freqtrade.misc import json_load -from freqtrade.persistence import Trade +from freqtrade.persistence import Trade, init_db logger = logging.getLogger(__name__) @@ -218,7 +217,7 @@ def load_trades_from_db(db_url: str, strategy: Optional[str] = None) -> pd.DataF Can also serve as protection to load the correct result. :return: Dataframe containing Trades """ - persistence.init(db_url, clean_open_orders=False) + init_db(db_url, clean_open_orders=False) columns = ["pair", "open_date", "close_date", "profit", "profit_percent", "open_rate", "close_rate", "amount", "trade_duration", "sell_reason", diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 9562519aa..cfc68a3ec 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -12,7 +12,7 @@ from typing import Any, Dict, List, Optional import arrow from cachetools import TTLCache -from freqtrade import __version__, constants, persistence +from freqtrade import __version__, constants from freqtrade.configuration import validate_config_consistency from freqtrade.data.converter import order_book_to_dataframe from freqtrade.data.dataprovider import DataProvider @@ -22,7 +22,7 @@ from freqtrade.exceptions import (DependencyException, ExchangeError, Insufficie from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date from freqtrade.misc import safe_value_fallback, safe_value_fallback2 from freqtrade.pairlist.pairlistmanager import PairListManager -from freqtrade.persistence import Order, Trade +from freqtrade.persistence import Order, Trade, cleanup_db, init_db from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.rpc import RPCManager, RPCMessageType from freqtrade.state import State @@ -68,7 +68,7 @@ class FreqtradeBot: self.exchange = ExchangeResolver.load_exchange(self.config['exchange']['name'], self.config) - persistence.init(self.config.get('db_url', None), clean_open_orders=self.config['dry_run']) + init_db(self.config.get('db_url', None), clean_open_orders=self.config['dry_run']) self.wallets = Wallets(self.config, self.exchange) @@ -123,7 +123,7 @@ class FreqtradeBot: self.check_for_open_trades() self.rpc.cleanup() - persistence.cleanup() + cleanup_db() def startup(self) -> None: """ diff --git a/freqtrade/persistence/__init__.py b/freqtrade/persistence/__init__.py index ee2e40267..a3ec13e98 100644 --- a/freqtrade/persistence/__init__.py +++ b/freqtrade/persistence/__init__.py @@ -1,3 +1,3 @@ # flake8: noqa: F401 -from freqtrade.persistence.models import Order, Trade, clean_dry_run_db, cleanup, init +from freqtrade.persistence.models import Order, Trade, clean_dry_run_db, cleanup_db, init_db diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 8455a3b77..e5acbf937 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -29,7 +29,7 @@ _DECL_BASE: Any = declarative_base() _SQL_DOCS_URL = 'http://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls' -def init(db_url: str, clean_open_orders: bool = False) -> None: +def init_db(db_url: str, clean_open_orders: bool = False) -> None: """ Initializes this module with the given config, registers all known command handlers @@ -72,7 +72,7 @@ def init(db_url: str, clean_open_orders: bool = False) -> None: clean_dry_run_db() -def cleanup() -> None: +def cleanup_db() -> None: """ Flushes all pending operations to disk. :return: None @@ -399,7 +399,7 @@ class Trade(_DECL_BASE): self.close(order['average']) else: raise ValueError(f'Unknown order type: {order_type}') - cleanup() + cleanup_db() def close(self, rate: float) -> None: """ diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 5b125697c..713386a8e 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -1149,7 +1149,7 @@ def test_start_list_data(testdatadir, capsys): @pytest.mark.usefixtures("init_persistence") def test_show_trades(mocker, fee, capsys, caplog): - mocker.patch("freqtrade.persistence.init") + mocker.patch("freqtrade.persistence.init_db") create_mock_trades(fee) args = [ "show-trades", diff --git a/tests/conftest.py b/tests/conftest.py index f90f0e62b..520b53b31 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -13,13 +13,13 @@ import numpy as np import pytest from telegram import Chat, Message, Update -from freqtrade import constants, persistence +from freqtrade import constants from freqtrade.commands import Arguments from freqtrade.data.converter import ohlcv_to_dataframe from freqtrade.edge import Edge, PairInfo from freqtrade.exchange import Exchange from freqtrade.freqtradebot import FreqtradeBot -from freqtrade.persistence import Trade +from freqtrade.persistence import Trade, init_db from freqtrade.resolvers import ExchangeResolver from freqtrade.worker import Worker from tests.conftest_trades import (mock_trade_1, mock_trade_2, mock_trade_3, mock_trade_4, @@ -131,7 +131,7 @@ def patch_freqtradebot(mocker, config) -> None: :return: None """ mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) - persistence.init(config['db_url']) + init_db(config['db_url']) patch_exchange(mocker) mocker.patch('freqtrade.freqtradebot.RPCManager._init', MagicMock()) mocker.patch('freqtrade.freqtradebot.RPCManager.send_msg', MagicMock()) @@ -219,7 +219,7 @@ def patch_coingekko(mocker) -> None: @pytest.fixture(scope='function') def init_persistence(default_conf): - persistence.init(default_conf['db_url'], default_conf['dry_run']) + init_db(default_conf['db_url'], default_conf['dry_run']) @pytest.fixture(scope="function") diff --git a/tests/data/test_btanalysis.py b/tests/data/test_btanalysis.py index 7696dd96a..1592fac10 100644 --- a/tests/data/test_btanalysis.py +++ b/tests/data/test_btanalysis.py @@ -114,7 +114,7 @@ def test_load_trades_from_db(default_conf, fee, mocker): create_mock_trades(fee) # remove init so it does not init again - init_mock = mocker.patch('freqtrade.persistence.init', MagicMock()) + init_mock = mocker.patch('freqtrade.data.btanalysis.init_db', MagicMock()) trades = load_trades_from_db(db_url=default_conf['db_url']) assert init_mock.call_count == 1 diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 8af3e12a7..bb7ff26e7 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -15,8 +15,7 @@ from freqtrade.exceptions import (DependencyException, ExchangeError, Insufficie InvalidOrderException, OperationalException, PricingError, TemporaryError) from freqtrade.freqtradebot import FreqtradeBot -from freqtrade.persistence import Trade -from freqtrade.persistence.models import Order +from freqtrade.persistence import Order, Trade from freqtrade.rpc import RPCMessageType from freqtrade.state import RunMode, State from freqtrade.strategy.interface import SellCheckTuple, SellType @@ -66,7 +65,7 @@ def test_process_stopped(mocker, default_conf) -> None: def test_bot_cleanup(mocker, default_conf, caplog) -> None: - mock_cleanup = mocker.patch('freqtrade.persistence.cleanup') + mock_cleanup = mocker.patch('freqtrade.freqtradebot.cleanup_db') coo_mock = mocker.patch('freqtrade.freqtradebot.FreqtradeBot.cancel_all_open_orders') freqtrade = get_patched_freqtradebot(mocker, default_conf) freqtrade.cleanup() diff --git a/tests/test_main.py b/tests/test_main.py index 9106d4c12..f55aea336 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -65,7 +65,7 @@ def test_main_fatal_exception(mocker, default_conf, caplog) -> None: mocker.patch('freqtrade.worker.Worker._worker', MagicMock(side_effect=Exception)) patched_configuration_load_config_file(mocker, default_conf) mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) - mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock()) + mocker.patch('freqtrade.freqtradebot.init_db', MagicMock()) args = ['trade', '-c', 'config.json.example'] @@ -83,7 +83,7 @@ def test_main_keyboard_interrupt(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) mocker.patch('freqtrade.wallets.Wallets.update', MagicMock()) - mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock()) + mocker.patch('freqtrade.freqtradebot.init_db', MagicMock()) args = ['trade', '-c', 'config.json.example'] @@ -104,7 +104,7 @@ def test_main_operational_exception(mocker, default_conf, caplog) -> None: patched_configuration_load_config_file(mocker, default_conf) mocker.patch('freqtrade.wallets.Wallets.update', MagicMock()) mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) - mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock()) + mocker.patch('freqtrade.freqtradebot.init_db', MagicMock()) args = ['trade', '-c', 'config.json.example'] @@ -155,7 +155,7 @@ def test_main_reload_config(mocker, default_conf, caplog) -> None: reconfigure_mock = mocker.patch('freqtrade.worker.Worker._reconfigure', MagicMock()) mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) - mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock()) + mocker.patch('freqtrade.freqtradebot.init_db', MagicMock()) args = Arguments(['trade', '-c', 'config.json.example']).get_parsed_arg() worker = Worker(args=args, config=default_conf) @@ -178,7 +178,7 @@ def test_reconfigure(mocker, default_conf) -> None: mocker.patch('freqtrade.wallets.Wallets.update', MagicMock()) patched_configuration_load_config_file(mocker, default_conf) mocker.patch('freqtrade.freqtradebot.RPCManager', MagicMock()) - mocker.patch('freqtrade.freqtradebot.persistence.init', MagicMock()) + mocker.patch('freqtrade.freqtradebot.init_db', MagicMock()) args = Arguments(['trade', '-c', 'config.json.example']).get_parsed_arg() worker = Worker(args=args, config=default_conf) diff --git a/tests/test_persistence.py b/tests/test_persistence.py index adfa18876..4216565ac 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -8,13 +8,13 @@ from sqlalchemy import create_engine from freqtrade import constants from freqtrade.exceptions import DependencyException, OperationalException -from freqtrade.persistence import Order, Trade, clean_dry_run_db, init +from freqtrade.persistence import Order, Trade, clean_dry_run_db, init_db from tests.conftest import create_mock_trades, log_has, log_has_re def test_init_create_session(default_conf): # Check if init create a session - init(default_conf['db_url'], default_conf['dry_run']) + init_db(default_conf['db_url'], default_conf['dry_run']) assert hasattr(Trade, 'session') assert 'scoped_session' in type(Trade.session).__name__ @@ -24,7 +24,7 @@ def test_init_custom_db_url(default_conf, mocker): default_conf.update({'db_url': 'sqlite:///tmp/freqtrade2_test.sqlite'}) create_engine_mock = mocker.patch('freqtrade.persistence.models.create_engine', MagicMock()) - init(default_conf['db_url'], default_conf['dry_run']) + init_db(default_conf['db_url'], default_conf['dry_run']) assert create_engine_mock.call_count == 1 assert create_engine_mock.mock_calls[0][1][0] == 'sqlite:///tmp/freqtrade2_test.sqlite' @@ -33,7 +33,7 @@ def test_init_invalid_db_url(default_conf): # Update path to a value other than default, but still in-memory default_conf.update({'db_url': 'unknown:///some.url'}) with pytest.raises(OperationalException, match=r'.*no valid database URL*'): - init(default_conf['db_url'], default_conf['dry_run']) + init_db(default_conf['db_url'], default_conf['dry_run']) def test_init_prod_db(default_conf, mocker): @@ -42,7 +42,7 @@ def test_init_prod_db(default_conf, mocker): create_engine_mock = mocker.patch('freqtrade.persistence.models.create_engine', MagicMock()) - init(default_conf['db_url'], default_conf['dry_run']) + init_db(default_conf['db_url'], default_conf['dry_run']) assert create_engine_mock.call_count == 1 assert create_engine_mock.mock_calls[0][1][0] == 'sqlite:///tradesv3.sqlite' @@ -53,7 +53,7 @@ def test_init_dryrun_db(default_conf, mocker): create_engine_mock = mocker.patch('freqtrade.persistence.models.create_engine', MagicMock()) - init(default_conf['db_url'], default_conf['dry_run']) + init_db(default_conf['db_url'], default_conf['dry_run']) assert create_engine_mock.call_count == 1 assert create_engine_mock.mock_calls[0][1][0] == 'sqlite:///tradesv3.dryrun.sqlite' @@ -482,7 +482,7 @@ def test_migrate_old(mocker, default_conf, fee): engine.execute(insert_table_old) engine.execute(insert_table_old2) # Run init to test migration - init(default_conf['db_url'], default_conf['dry_run']) + init_db(default_conf['db_url'], default_conf['dry_run']) assert len(Trade.query.filter(Trade.id == 1).all()) == 1 trade = Trade.query.filter(Trade.id == 1).first() @@ -581,7 +581,7 @@ def test_migrate_new(mocker, default_conf, fee, caplog): engine.execute("create table trades_bak1 as select * from trades") # Run init to test migration - init(default_conf['db_url'], default_conf['dry_run']) + init_db(default_conf['db_url'], default_conf['dry_run']) assert len(Trade.query.filter(Trade.id == 1).all()) == 1 trade = Trade.query.filter(Trade.id == 1).first() @@ -661,7 +661,7 @@ def test_migrate_mid_state(mocker, default_conf, fee, caplog): engine.execute(insert_table_old) # Run init to test migration - init(default_conf['db_url'], default_conf['dry_run']) + init_db(default_conf['db_url'], default_conf['dry_run']) assert len(Trade.query.filter(Trade.id == 1).all()) == 1 trade = Trade.query.filter(Trade.id == 1).first() @@ -904,7 +904,7 @@ def test_to_json(default_conf, fee): def test_stoploss_reinitialization(default_conf, fee): - init(default_conf['db_url']) + init_db(default_conf['db_url']) trade = Trade( pair='ETH/BTC', stake_amount=0.001, From cd940daaf42cd5736876439b6c960b39acc8370c Mon Sep 17 00:00:00 2001 From: sanket-k Date: Sat, 17 Oct 2020 17:17:43 +0530 Subject: [PATCH 3317/3421] updated discord link to documentation. --- README.md | 4 ++++ docs/index.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/README.md b/README.md index feea47299..a3c6168fa 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,10 @@ information about the bot, we encourage you to join our slack channel. - [Click here to join Slack channel](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE). +To those interested to check out the newly created discord channel. Click [here](https://discord.gg/MA9v74M) + +P.S. currently since discord channel is relatively new, answers to questions might be slightly delayed as currently the user base quite small. + ### [Bugs / Issues](https://github.com/freqtrade/freqtrade/issues?q=is%3Aissue) If you discover a bug in the bot, please diff --git a/docs/index.md b/docs/index.md index e7fc54628..b2f3e417e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -64,6 +64,10 @@ For any questions not covered by the documentation or for further information ab Click [here](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) to join the Freqtrade Slack channel. +To those interested to check out the newly created discord channel. Click [here](https://discord.gg/MA9v74M) + +P.S. currently since discord channel is relatively new, answers to questions might be slightly delayed as currently the user base quite small. + ## Ready to try? Begin by reading our installation guide [for docker](docker.md), or for [installation without docker](installation.md). From 2591a34db4167cfb64f680493be1a0899719f02e Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Oct 2020 16:18:52 +0200 Subject: [PATCH 3318/3421] Don't use arrow objects for backtesting --- freqtrade/optimize/backtesting.py | 11 +++++------ freqtrade/optimize/hyperopt.py | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index f59a782e8..61a83afc1 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -9,7 +9,6 @@ from copy import deepcopy from datetime import datetime, timedelta from typing import Any, Dict, List, NamedTuple, Optional, Tuple -import arrow from pandas import DataFrame from freqtrade.configuration import TimeRange, remove_credentials, validate_config_consistency @@ -173,7 +172,7 @@ class Backtesting: # Convert from Pandas to list for performance reasons # (Looping Pandas is slow.) - data[pair] = [x for x in df_analyzed.itertuples()] + data[pair] = [x for x in df_analyzed.itertuples(index=False)] return data def _get_close_rate(self, sell_row, trade: Trade, sell: SellCheckTuple, @@ -271,7 +270,7 @@ class Backtesting: return trades def backtest(self, processed: Dict, stake_amount: float, - start_date: arrow.Arrow, end_date: arrow.Arrow, + start_date: datetime, end_date: datetime, max_open_trades: int = 0, position_stacking: bool = False) -> DataFrame: """ Implement backtesting functionality @@ -321,7 +320,7 @@ class Backtesting: continue # Waits until the time-counter reaches the start of the data for this pair. - if row.date > tmp.datetime: + if row.date > tmp: continue indexes[pair] += 1 @@ -413,8 +412,8 @@ class Backtesting: results = self.backtest( processed=preprocessed, stake_amount=self.config['stake_amount'], - start_date=min_date, - end_date=max_date, + start_date=min_date.datetime, + end_date=max_date.datetime, max_open_trades=max_open_trades, position_stacking=position_stacking, ) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 5997e077b..e24212536 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -538,8 +538,8 @@ class Hyperopt: backtesting_results = self.backtesting.backtest( processed=processed, stake_amount=self.config['stake_amount'], - start_date=min_date, - end_date=max_date, + start_date=min_date.datetime, + end_date=max_date.datetime, max_open_trades=self.max_open_trades, position_stacking=self.position_stacking, ) From b80a219d035a11c665f3a683e25d3d7b3341f0d1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Oct 2020 16:35:23 +0200 Subject: [PATCH 3319/3421] Improve typehints for backtesting --- freqtrade/optimize/backtesting.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 61a83afc1..01885de26 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -147,7 +147,7 @@ class Backtesting: return data, timerange - def _get_ohlcv_as_lists(self, processed: Dict) -> Dict[str, DataFrame]: + def _get_ohlcv_as_lists(self, processed: Dict[str, DataFrame]) -> Dict[str, DataFrame]: """ Helper function to convert a processed dataframes into lists for performance reasons. @@ -215,7 +215,10 @@ class Backtesting: else: return sell_row.open - def _get_sell_trade_entry(self, trade: Trade, sell_row: DataFrame) -> Optional[BacktestResult]: + def _get_sell_trade_entry(self, trade: Trade, sell_row) -> Optional[BacktestResult]: + """ + sell_row is a named tuple with attributes for date, buy, open, close, sell, low, high. + """ sell = self.strategy.should_sell(trade, sell_row.open, sell_row.date, sell_row.buy, sell_row.sell, low=sell_row.low, high=sell_row.high) @@ -322,7 +325,6 @@ class Backtesting: # Waits until the time-counter reaches the start of the data for this pair. if row.date > tmp: continue - indexes[pair] += 1 # without positionstacking, we can only have one open trade per pair. From 5d3a67d324166cf68671d257be08b86f1f5d9152 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Oct 2020 16:38:16 +0200 Subject: [PATCH 3320/3421] Don't debug-log during backtesting. Even though log-messages are surpressed, calling "debug" will always have to do something. --- freqtrade/optimize/backtesting.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 01885de26..8b0c05718 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -350,7 +350,7 @@ class Backtesting: # Prevents buying if the trade-slot was freed in this candle open_trade_count_start += 1 open_trade_count += 1 - logger.debug(f"{pair} - Backtesting emulates creation of new trade: {trade}.") + # logger.debug(f"{pair} - Backtesting emulates creation of new trade: {trade}.") open_trades[pair].append(trade) for trade in open_trades[pair]: @@ -359,7 +359,7 @@ class Backtesting: trade_entry = self._get_sell_trade_entry(trade, row) # Sell occured if trade_entry: - logger.debug(f"{pair} - Backtesting sell {trade}") + # logger.debug(f"{pair} - Backtesting sell {trade}") open_trade_count -= 1 open_trades[pair].remove(trade) trades.append(trade_entry) From cf2ae788d74a189e5fbca693020cdad84288c4af Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Oct 2020 17:16:57 +0200 Subject: [PATCH 3321/3421] Convert backtesting rows to Tuples for performance gains --- freqtrade/optimize/backtesting.py | 71 +++++++++++++++++-------------- freqtrade/optimize/hyperopt.py | 24 +++++------ 2 files changed, 52 insertions(+), 43 deletions(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 8b0c05718..47bb9edd9 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -28,6 +28,15 @@ from freqtrade.strategy.interface import IStrategy, SellCheckTuple, SellType logger = logging.getLogger(__name__) +# Indexes for backtest tuples +DATE_IDX = 0 +BUY_IDX = 1 +OPEN_IDX = 2 +CLOSE_IDX = 3 +SELL_IDX = 4 +LOW_IDX = 5 +HIGH_IDX = 6 + class BacktestResult(NamedTuple): """ @@ -115,7 +124,7 @@ class Backtesting: """ Load strategy into backtesting """ - self.strategy = strategy + self.strategy: IStrategy = strategy # Set stoploss_on_exchange to false for backtesting, # since a "perfect" stoploss-sell is assumed anyway # And the regular "stoploss" function would not apply to that case @@ -147,12 +156,14 @@ class Backtesting: return data, timerange - def _get_ohlcv_as_lists(self, processed: Dict[str, DataFrame]) -> Dict[str, DataFrame]: + def _get_ohlcv_as_lists(self, processed: Dict[str, DataFrame]) -> Dict[str, Tuple]: """ Helper function to convert a processed dataframes into lists for performance reasons. Used by backtest() - so keep this optimized for performance. """ + # Every change to this headers list must evaluate further usages of the resulting tuple + # and eventually change the constants for indexes at the top headers = ['date', 'buy', 'open', 'close', 'sell', 'low', 'high'] data: Dict = {} # Create dict with data @@ -172,10 +183,10 @@ class Backtesting: # Convert from Pandas to list for performance reasons # (Looping Pandas is slow.) - data[pair] = [x for x in df_analyzed.itertuples(index=False)] + data[pair] = [x for x in df_analyzed.itertuples(index=False, name=None)] return data - def _get_close_rate(self, sell_row, trade: Trade, sell: SellCheckTuple, + def _get_close_rate(self, sell_row: Tuple, trade: Trade, sell: SellCheckTuple, trade_dur: int) -> float: """ Get close rate for backtesting result @@ -186,12 +197,12 @@ class Backtesting: return trade.stop_loss elif sell.sell_type == (SellType.ROI): roi_entry, roi = self.strategy.min_roi_reached_entry(trade_dur) - if roi is not None: + if roi is not None and roi_entry is not None: if roi == -1 and roi_entry % self.timeframe_min == 0: # When forceselling with ROI=-1, the roi time will always be equal to trade_dur. # If that entry is a multiple of the timeframe (so on candle open) # - we'll use open instead of close - return sell_row.open + return sell_row[OPEN_IDX] # - (Expected abs profit + open_rate + open_fee) / (fee_close -1) close_rate = - (trade.open_rate * roi + trade.open_rate * @@ -199,31 +210,29 @@ class Backtesting: if (trade_dur > 0 and trade_dur == roi_entry and roi_entry % self.timeframe_min == 0 - and sell_row.open > close_rate): + and sell_row[OPEN_IDX] > close_rate): # new ROI entry came into effect. # use Open rate if open_rate > calculated sell rate - return sell_row.open + return sell_row[OPEN_IDX] # Use the maximum between close_rate and low as we # cannot sell outside of a candle. # Applies when a new ROI setting comes in place and the whole candle is above that. - return max(close_rate, sell_row.low) + return max(close_rate, sell_row[LOW_IDX]) else: # This should not be reached... - return sell_row.open + return sell_row[OPEN_IDX] else: - return sell_row.open + return sell_row[OPEN_IDX] - def _get_sell_trade_entry(self, trade: Trade, sell_row) -> Optional[BacktestResult]: - """ - sell_row is a named tuple with attributes for date, buy, open, close, sell, low, high. - """ + def _get_sell_trade_entry(self, trade: Trade, sell_row: Tuple) -> Optional[BacktestResult]: - sell = self.strategy.should_sell(trade, sell_row.open, sell_row.date, sell_row.buy, - sell_row.sell, low=sell_row.low, high=sell_row.high) + sell = self.strategy.should_sell(trade, sell_row[OPEN_IDX], sell_row[DATE_IDX], + sell_row[BUY_IDX], sell_row[SELL_IDX], + low=sell_row[LOW_IDX], high=sell_row[HIGH_IDX]) if sell.sell_flag: - trade_dur = int((sell_row.date - trade.open_date).total_seconds() // 60) + trade_dur = int((sell_row[DATE_IDX] - trade.open_date).total_seconds() // 60) closerate = self._get_close_rate(sell_row, trade, sell, trade_dur) return BacktestResult(pair=trade.pair, @@ -232,7 +241,7 @@ class Backtesting: open_date=trade.open_date, open_rate=trade.open_rate, open_fee=self.fee, - close_date=sell_row.date, + close_date=sell_row[DATE_IDX], close_rate=closerate, close_fee=self.fee, amount=trade.amount, @@ -242,8 +251,8 @@ class Backtesting: ) return None - def handle_left_open(self, open_trades: Dict[str, List], - data: Dict[str, DataFrame]) -> List[BacktestResult]: + def handle_left_open(self, open_trades: Dict[str, List[Trade]], + data: Dict[str, List[Tuple]]) -> List[BacktestResult]: """ Handling of left open trades at the end of backtesting """ @@ -254,17 +263,17 @@ class Backtesting: sell_row = data[pair][-1] trade_entry = BacktestResult(pair=trade.pair, profit_percent=trade.calc_profit_ratio( - rate=sell_row.open), - profit_abs=trade.calc_profit(rate=sell_row.open), + rate=sell_row[OPEN_IDX]), + profit_abs=trade.calc_profit(sell_row[OPEN_IDX]), open_date=trade.open_date, open_rate=trade.open_rate, open_fee=self.fee, - close_date=sell_row.date, - close_rate=sell_row.open, + close_date=sell_row[DATE_IDX], + close_rate=sell_row[OPEN_IDX], close_fee=self.fee, amount=trade.amount, trade_duration=int(( - sell_row.date - trade.open_date + sell_row[DATE_IDX] - trade.open_date ).total_seconds() // 60), open_at_end=True, sell_reason=SellType.FORCE_SELL @@ -323,7 +332,7 @@ class Backtesting: continue # Waits until the time-counter reaches the start of the data for this pair. - if row.date > tmp: + if row[DATE_IDX] > tmp: continue indexes[pair] += 1 @@ -333,14 +342,14 @@ class Backtesting: if ((position_stacking or len(open_trades[pair]) == 0) and max_open_trades > 0 and open_trade_count_start < max_open_trades and tmp != end_date - and row.buy == 1 and row.sell != 1): + and row[BUY_IDX] == 1 and row[SELL_IDX] != 1): # Enter trade trade = Trade( pair=pair, - open_rate=row.open, - open_date=row.date, + open_rate=row[OPEN_IDX], + open_date=row[DATE_IDX], stake_amount=stake_amount, - amount=round(stake_amount / row.open, 8), + amount=round(stake_amount / row[OPEN_IDX], 8), fee_open=self.fee, fee_close=self.fee, is_open=True, diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index e24212536..7870ba1cf 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -94,14 +94,14 @@ class Hyperopt: # Populate functions here (hasattr is slow so should not be run during "regular" operations) if hasattr(self.custom_hyperopt, 'populate_indicators'): - self.backtesting.strategy.advise_indicators = \ - self.custom_hyperopt.populate_indicators # type: ignore + self.backtesting.strategy.advise_indicators = ( # type: ignore + self.custom_hyperopt.populate_indicators) # type: ignore if hasattr(self.custom_hyperopt, 'populate_buy_trend'): - self.backtesting.strategy.advise_buy = \ - self.custom_hyperopt.populate_buy_trend # type: ignore + self.backtesting.strategy.advise_buy = ( # type: ignore + self.custom_hyperopt.populate_buy_trend) # type: ignore if hasattr(self.custom_hyperopt, 'populate_sell_trend'): - self.backtesting.strategy.advise_sell = \ - self.custom_hyperopt.populate_sell_trend # type: ignore + self.backtesting.strategy.advise_sell = ( # type: ignore + self.custom_hyperopt.populate_sell_trend) # type: ignore # Use max_open_trades for hyperopt as well, except --disable-max-market-positions is set if self.config.get('use_max_market_positions', True): @@ -508,16 +508,16 @@ class Hyperopt: params_details = self._get_params_details(params_dict) if self.has_space('roi'): - self.backtesting.strategy.minimal_roi = \ - self.custom_hyperopt.generate_roi_table(params_dict) + self.backtesting.strategy.minimal_roi = ( # type: ignore + self.custom_hyperopt.generate_roi_table(params_dict)) if self.has_space('buy'): - self.backtesting.strategy.advise_buy = \ - self.custom_hyperopt.buy_strategy_generator(params_dict) + self.backtesting.strategy.advise_buy = ( # type: ignore + self.custom_hyperopt.buy_strategy_generator(params_dict)) if self.has_space('sell'): - self.backtesting.strategy.advise_sell = \ - self.custom_hyperopt.sell_strategy_generator(params_dict) + self.backtesting.strategy.advise_sell = ( # type: ignore + self.custom_hyperopt.sell_strategy_generator(params_dict)) if self.has_space('stoploss'): self.backtesting.strategy.stoploss = params_dict['stoploss'] From 79972985380df1f5dbf2500be32beafce8ac51c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2020 05:37:36 +0000 Subject: [PATCH 3322/3421] Bump scipy from 1.5.2 to 1.5.3 Bumps [scipy](https://github.com/scipy/scipy) from 1.5.2 to 1.5.3. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.5.2...v1.5.3) Signed-off-by: dependabot[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index d267961bd..5b68c1ea1 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -2,7 +2,7 @@ -r requirements.txt # Required for hyperopt -scipy==1.5.2 +scipy==1.5.3 scikit-learn==0.23.2 scikit-optimize==0.8.1 filelock==3.0.12 From 8975558595e9d12641c0e8f001723f145dd68a5f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2020 05:37:54 +0000 Subject: [PATCH 3323/3421] Bump questionary from 1.6.0 to 1.7.0 Bumps [questionary](https://github.com/tmbo/questionary) from 1.6.0 to 1.7.0. - [Release notes](https://github.com/tmbo/questionary/releases) - [Commits](https://github.com/tmbo/questionary/compare/1.6.0...1.7.0) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 35f1e4c18..b1d21e697 100644 --- a/requirements.txt +++ b/requirements.txt @@ -36,5 +36,5 @@ flask-cors==3.0.9 # Support for colorized terminal output colorama==0.4.4 # Building config files interactively -questionary==1.6.0 +questionary==1.7.0 prompt-toolkit==3.0.8 From b7eec3fc8240f7c6430609a1cad1a9d3a4761613 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2020 05:37:57 +0000 Subject: [PATCH 3324/3421] Bump mkdocs-material from 6.0.2 to 6.1.0 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 6.0.2 to 6.1.0. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/6.0.2...6.1.0) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 69ae33649..f30710a1f 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,3 +1,3 @@ -mkdocs-material==6.0.2 +mkdocs-material==6.1.0 mdx_truly_sane_lists==1.2 pymdown-extensions==8.0.1 From 3e7c9bd485d53b89f357a9e062aada6377f1da6c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2020 11:57:03 +0000 Subject: [PATCH 3325/3421] Bump ccxt from 1.36.12 to 1.36.66 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.36.12 to 1.36.66. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.36.12...1.36.66) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b1d21e697..76e92eb3f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.19.2 pandas==1.1.3 -ccxt==1.36.12 +ccxt==1.36.66 multidict==4.7.6 aiohttp==3.6.3 SQLAlchemy==1.3.20 From 2d04c2dd4fd5ab2b24a438fd7a25927e08fe3ec1 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 20 Oct 2020 06:24:46 +0200 Subject: [PATCH 3326/3421] Fix small bug when cancel-order does not contain id happens with kraken ... --- freqtrade/persistence/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index e5acbf937..93b39860a 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -167,12 +167,12 @@ class Order(_DECL_BASE): """ Get all non-closed orders - useful when trying to batch-update orders """ - filtered_orders = [o for o in orders if o.order_id == order['id']] + filtered_orders = [o for o in orders if o.order_id == order.get('id')] if filtered_orders: oobj = filtered_orders[0] oobj.update_from_ccxt_object(order) else: - logger.warning(f"Did not find order for {order['id']}.") + logger.warning(f"Did not find order for {order}.") @staticmethod def parse_from_ccxt_object(order: Dict[str, Any], pair: str, side: str) -> 'Order': From 6eab20e337c5b855fd89e48a8a44a097e144a09f Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Oct 2020 11:25:42 +0200 Subject: [PATCH 3327/3421] Use constant to format datetime --- freqtrade/persistence/models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 93b39860a..03133107a 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -17,6 +17,7 @@ from sqlalchemy.orm.session import sessionmaker from sqlalchemy.pool import StaticPool from sqlalchemy.sql.schema import UniqueConstraint +from freqtrade.constants import DATETIME_PRINT_FORMAT from freqtrade.exceptions import DependencyException, OperationalException from freqtrade.misc import safe_value_fallback from freqtrade.persistence.migrations import check_migrate @@ -251,7 +252,7 @@ class Trade(_DECL_BASE): self.recalc_open_trade_price() def __repr__(self): - open_since = self.open_date.strftime('%Y-%m-%d %H:%M:%S') if self.is_open else 'closed' + open_since = self.open_date.strftime(DATETIME_PRINT_FORMAT) if self.is_open else 'closed' return (f'Trade(id={self.id}, pair={self.pair}, amount={self.amount:.8f}, ' f'open_rate={self.open_rate:.8f}, open_since={open_since})') From e513871fd5eed769558159f64c6187390fa8565b Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Oct 2020 11:28:34 +0200 Subject: [PATCH 3328/3421] Persist pairlocks closes #3034 --- docs/strategy-customization.md | 6 +-- freqtrade/freqtradebot.py | 7 +-- freqtrade/persistence/__init__.py | 3 +- freqtrade/persistence/models.py | 76 +++++++++++++++++++++++++++++++ freqtrade/strategy/interface.py | 29 ++++++------ tests/strategy/test_interface.py | 18 ++++---- tests/test_freqtradebot.py | 4 +- 7 files changed, 111 insertions(+), 32 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index a6cdef864..c0506203f 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -693,15 +693,15 @@ Locked pairs will show the message `Pair is currently locked.`. Sometimes it may be desired to lock a pair after certain events happen (e.g. multiple losing trades in a row). -Freqtrade has an easy method to do this from within the strategy, by calling `self.lock_pair(pair, until)`. -`until` must be a datetime object in the future, after which trading will be reenabled for that pair. +Freqtrade has an easy method to do this from within the strategy, by calling `self.lock_pair(pair, until, [reason])`. +`until` must be a datetime object in the future, after which trading will be re-enabled for that pair, while `reason` is an optional string detailing why the pair was locked. Locks can also be lifted manually, by calling `self.unlock_pair(pair)`. To verify if a pair is currently locked, use `self.is_pair_locked(pair)`. !!! Note - Locked pairs are not persisted, so a restart of the bot, or calling `/reload_config` will reset locked pairs. + Locked pairs will always be rounded up to the next candle. So assuming a `5m` timeframe, a lock with `until` set to 10:18 will lock the pair until the candle from 10:15-10:20 will be finished. !!! Warning Locking pairs is not functioning during backtesting. diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index cfc68a3ec..e004ed51c 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -937,8 +937,8 @@ class FreqtradeBot: self.update_trade_state(trade, trade.stoploss_order_id, stoploss_order, stoploss_order=True) # Lock pair for one candle to prevent immediate rebuys - self.strategy.lock_pair(trade.pair, - timeframe_to_next_date(self.config['timeframe'])) + self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['timeframe']), + reason='auto_lock_1_candle') self._notify_sell(trade, "stoploss") return True @@ -1264,7 +1264,8 @@ class FreqtradeBot: Trade.session.flush() # Lock pair for one candle to prevent immediate rebuys - self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['timeframe'])) + self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['timeframe']), + reason='auto_lock_1_candle') self._notify_sell(trade, order_type) diff --git a/freqtrade/persistence/__init__.py b/freqtrade/persistence/__init__.py index a3ec13e98..e184e7d9a 100644 --- a/freqtrade/persistence/__init__.py +++ b/freqtrade/persistence/__init__.py @@ -1,3 +1,4 @@ # flake8: noqa: F401 -from freqtrade.persistence.models import Order, Trade, clean_dry_run_db, cleanup_db, init_db +from freqtrade.persistence.models import (Order, PairLock, Trade, clean_dry_run_db, cleanup_db, + init_db) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 03133107a..b2f8f4274 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -64,6 +64,9 @@ def init_db(db_url: str, clean_open_orders: bool = False) -> None: # Copy session attributes to order object too Order.session = Trade.session Order.query = Order.session.query_property() + PairLock.session = Trade.session + PairLock.query = PairLock.session.query_property() + previous_tables = inspect(engine).get_table_names() _DECL_BASE.metadata.create_all(engine) check_migrate(engine, decl_base=_DECL_BASE, previous_tables=previous_tables) @@ -655,3 +658,76 @@ class Trade(_DECL_BASE): trade.stop_loss = None trade.adjust_stop_loss(trade.open_rate, desired_stoploss) logger.info(f"New stoploss: {trade.stop_loss}.") + + +class PairLock(_DECL_BASE): + """ + Pair Locks database model. + """ + __tablename__ = 'pair_lock' + + id = Column(Integer, primary_key=True) + + pair = Column(String, nullable=False) + reason = Column(String, nullable=True) + # Time the pair was locked (start time) + lock_time = Column(DateTime, nullable=False) + # Time until the pair is locked (end time) + lock_end_time = Column(DateTime, nullable=False) + + active = Column(Boolean, nullable=False, default=True) + + def __repr__(self): + lock_time = self.open_date.strftime(DATETIME_PRINT_FORMAT) + lock_end_time = self.open_date.strftime(DATETIME_PRINT_FORMAT) + return (f'PairLock(id={self.id}, pair={self.pair}, lock_time={lock_time}, ' + f'lock_end_time={lock_end_time})') + + @staticmethod + def get_pair_locks(pair: str, now: Optional[datetime] = None) -> List['PairLock']: + """ + Get all locks for this pair + :param pair: Pair to check for + :param now: Datetime object (generated via datetime.utcnow()). defaults to datetime.utcnow() + """ + if not now: + now = datetime.now(timezone.utc) + + return PairLock.query.filter( + PairLock.pair == pair, + func.datetime(PairLock.lock_time) <= now, + func.datetime(PairLock.lock_end_time) >= now, + # Only active locks + PairLock.active.is_(True), + ).all() + + @staticmethod + def unlock_pair(pair: str, now: Optional[datetime] = None) -> None: + """ + Release all locks for this pair. + """ + if not now: + now = datetime.now(timezone.utc) + + logger.info(f"Releasing all locks for {pair}.") + locks = PairLock.get_pair_locks(pair, now) + for lock in locks: + lock.active = False + PairLock.session.flush() + + @staticmethod + def is_pair_locked(pair: str, now: Optional[datetime] = None) -> bool: + """ + :param pair: Pair to check for + :param now: Datetime object (generated via datetime.utcnow()). defaults to datetime.utcnow() + """ + if not now: + now = datetime.now(timezone.utc) + + return PairLock.query.filter( + PairLock.pair == pair, + func.datetime(PairLock.lock_time) <= now, + func.datetime(PairLock.lock_end_time) >= now, + # Only active locks + PairLock.active.is_(True), + ).scalar() is not None diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index b6b36b1a4..d9485e27a 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -17,7 +17,7 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import OperationalException, StrategyError from freqtrade.exchange import timeframe_to_minutes from freqtrade.exchange.exchange import timeframe_to_next_date -from freqtrade.persistence import Trade +from freqtrade.persistence import PairLock, Trade from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from freqtrade.wallets import Wallets @@ -133,7 +133,6 @@ class IStrategy(ABC): self.config = config # Dict to determine if analysis is necessary self._last_candle_seen_per_pair: Dict[str, datetime] = {} - self._pair_locked_until: Dict[str, datetime] = {} @abstractmethod def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: @@ -278,7 +277,7 @@ class IStrategy(ABC): """ return self.__class__.__name__ - def lock_pair(self, pair: str, until: datetime) -> None: + def lock_pair(self, pair: str, until: datetime, reason: str = None) -> None: """ Locks pair until a given timestamp happens. Locked pairs are not analyzed, and are prevented from opening new trades. @@ -288,8 +287,15 @@ class IStrategy(ABC): :param until: datetime in UTC until the pair should be blocked from opening new trades. Needs to be timezone aware `datetime.now(timezone.utc)` """ - if pair not in self._pair_locked_until or self._pair_locked_until[pair] < until: - self._pair_locked_until[pair] = until + lock = PairLock( + pair=pair, + lock_time=datetime.now(timezone.utc), + lock_end_time=until, + reason=reason, + active=True + ) + PairLock.session.add(lock) + PairLock.session.flush() def unlock_pair(self, pair: str) -> None: """ @@ -298,8 +304,7 @@ class IStrategy(ABC): manually from within the strategy, to allow an easy way to unlock pairs. :param pair: Unlock pair to allow trading again """ - if pair in self._pair_locked_until: - del self._pair_locked_until[pair] + PairLock.unlock_pair(pair, datetime.now(timezone.utc)) def is_pair_locked(self, pair: str, candle_date: datetime = None) -> bool: """ @@ -311,15 +316,13 @@ class IStrategy(ABC): :param candle_date: Date of the last candle. Optional, defaults to current date :returns: locking state of the pair in question. """ - if pair not in self._pair_locked_until: - return False + if not candle_date: - return self._pair_locked_until[pair] >= datetime.now(timezone.utc) + # Simple call ... + return PairLock.is_pair_locked(pair, candle_date) else: - # Locking should happen until a new candle arrives lock_time = timeframe_to_next_date(self.timeframe, candle_date) - # lock_time = candle_date + timedelta(minutes=timeframe_to_minutes(self.timeframe)) - return self._pair_locked_until[pair] > lock_time + return PairLock.is_pair_locked(pair, lock_time) def analyze_ticker(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 729b14f7b..e9d9bcc75 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -1,5 +1,4 @@ # pragma pylint: disable=missing-docstring, C0103 - import logging from datetime import datetime, timedelta, timezone from unittest.mock import MagicMock @@ -12,7 +11,7 @@ from freqtrade.configuration import TimeRange from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import load_data from freqtrade.exceptions import StrategyError -from freqtrade.persistence import Trade +from freqtrade.persistence import PairLock, Trade from freqtrade.resolvers import StrategyResolver from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from tests.conftest import log_has, log_has_re @@ -360,11 +359,12 @@ def test__analyze_ticker_internal_skip_analyze(ohlcv_history, mocker, caplog) -> assert log_has('Skipping TA Analysis for already analyzed candle', caplog) +@pytest.mark.usefixtures("init_persistence") def test_is_pair_locked(default_conf): default_conf.update({'strategy': 'DefaultStrategy'}) strategy = StrategyResolver.load_strategy(default_conf) - # dict should be empty - assert not strategy._pair_locked_until + # No lock should be present + assert len(PairLock.query.all()) == 0 pair = 'ETH/BTC' assert not strategy.is_pair_locked(pair) @@ -372,11 +372,6 @@ def test_is_pair_locked(default_conf): # ETH/BTC locked for 4 minutes assert strategy.is_pair_locked(pair) - # Test lock does not change - lock = strategy._pair_locked_until[pair] - strategy.lock_pair(pair, arrow.utcnow().shift(minutes=2).datetime) - assert lock == strategy._pair_locked_until[pair] - # XRP/BTC should not be locked now pair = 'XRP/BTC' assert not strategy.is_pair_locked(pair) @@ -393,7 +388,10 @@ def test_is_pair_locked(default_conf): # Lock until 14:30 lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=timezone.utc) strategy.lock_pair(pair, lock_time) - # Lock is in the past ... + # Lock is in the past, so we must fake the lock + lock = PairLock.query.filter(PairLock.pair == pair).first() + lock.lock_time = lock_time - timedelta(hours=2) + assert not strategy.is_pair_locked(pair) # latest candle is from 14:20, lock goes to 14:30 assert strategy.is_pair_locked(pair, lock_time + timedelta(minutes=-10)) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index bb7ff26e7..2a1b0c3cc 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -15,7 +15,7 @@ from freqtrade.exceptions import (DependencyException, ExchangeError, Insufficie InvalidOrderException, OperationalException, PricingError, TemporaryError) from freqtrade.freqtradebot import FreqtradeBot -from freqtrade.persistence import Order, Trade +from freqtrade.persistence import Order, PairLock, Trade from freqtrade.rpc import RPCMessageType from freqtrade.state import RunMode, State from freqtrade.strategy.interface import SellCheckTuple, SellType @@ -2799,6 +2799,7 @@ def test_execute_sell_sloe_cancel_exception(mocker, default_conf, ticker, fee, c trade = Trade.query.first() Trade.session = MagicMock() + PairLock.session = MagicMock() freqtrade.config['dry_run'] = False trade.stoploss_order_id = "abcd" @@ -3249,7 +3250,6 @@ def test_locked_pairs(default_conf, ticker, fee, ticker_sell_down, mocker, caplo freqtrade.execute_sell(trade=trade, limit=ticker_sell_down()['bid'], sell_reason=SellType.STOP_LOSS) trade.close(ticker_sell_down()['bid']) - assert trade.pair in freqtrade.strategy._pair_locked_until assert freqtrade.strategy.is_pair_locked(trade.pair) # reinit - should buy other pair. From 7caa6cfe312621dae341245d973c4fcda6920c0a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Oct 2020 11:40:01 +0200 Subject: [PATCH 3329/3421] Add tests for pairlock --- freqtrade/persistence/models.py | 16 ++++++++++-- freqtrade/strategy/interface.py | 10 +------ tests/test_persistence.py | 46 ++++++++++++++++++++++++++++++++- 3 files changed, 60 insertions(+), 12 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index b2f8f4274..4394b783a 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -678,11 +678,23 @@ class PairLock(_DECL_BASE): active = Column(Boolean, nullable=False, default=True) def __repr__(self): - lock_time = self.open_date.strftime(DATETIME_PRINT_FORMAT) - lock_end_time = self.open_date.strftime(DATETIME_PRINT_FORMAT) + lock_time = self.lock_time.strftime(DATETIME_PRINT_FORMAT) + lock_end_time = self.lock_end_time.strftime(DATETIME_PRINT_FORMAT) return (f'PairLock(id={self.id}, pair={self.pair}, lock_time={lock_time}, ' f'lock_end_time={lock_end_time})') + @staticmethod + def lock_pair(pair: str, until: datetime, reason: str = None) -> None: + lock = PairLock( + pair=pair, + lock_time=datetime.now(timezone.utc), + lock_end_time=until, + reason=reason, + active=True + ) + PairLock.session.add(lock) + PairLock.session.flush() + @staticmethod def get_pair_locks(pair: str, now: Optional[datetime] = None) -> List['PairLock']: """ diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index d9485e27a..36abfd05a 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -287,15 +287,7 @@ class IStrategy(ABC): :param until: datetime in UTC until the pair should be blocked from opening new trades. Needs to be timezone aware `datetime.now(timezone.utc)` """ - lock = PairLock( - pair=pair, - lock_time=datetime.now(timezone.utc), - lock_end_time=until, - reason=reason, - active=True - ) - PairLock.session.add(lock) - PairLock.session.flush() + PairLock.lock_pair(pair, until, reason) def unlock_pair(self, pair: str) -> None: """ diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 4216565ac..6ac1e36a4 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -1,5 +1,6 @@ # pragma pylint: disable=missing-docstring, C0103 import logging +from datetime import datetime, timedelta, timezone from unittest.mock import MagicMock import arrow @@ -8,7 +9,7 @@ from sqlalchemy import create_engine from freqtrade import constants from freqtrade.exceptions import DependencyException, OperationalException -from freqtrade.persistence import Order, Trade, clean_dry_run_db, init_db +from freqtrade.persistence import Order, PairLock, Trade, clean_dry_run_db, init_db from tests.conftest import create_mock_trades, log_has, log_has_re @@ -1158,3 +1159,46 @@ def test_select_order(fee): assert order.ft_order_side == 'stoploss' order = trades[4].select_order('sell', False) assert order is None + + +@pytest.mark.usefixtures("init_persistence") +def test_PairLock(default_conf): + # No lock should be present + assert len(PairLock.query.all()) == 0 + + pair = 'ETH/BTC' + assert not PairLock.is_pair_locked(pair) + PairLock.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime) + # ETH/BTC locked for 4 minutes + assert PairLock.is_pair_locked(pair) + + # XRP/BTC should not be locked now + pair = 'XRP/BTC' + assert not PairLock.is_pair_locked(pair) + + # Unlocking a pair that's not locked should not raise an error + PairLock.unlock_pair(pair) + + # Unlock original pair + pair = 'ETH/BTC' + PairLock.unlock_pair(pair) + assert not PairLock.is_pair_locked(pair) + + pair = 'BTC/USDT' + # Lock until 14:30 + lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=timezone.utc) + PairLock.lock_pair(pair, lock_time) + # Lock is in the past, so we must fake the lock + lock = PairLock.query.filter(PairLock.pair == pair).first() + lock.lock_time = lock_time - timedelta(hours=2) + + assert not PairLock.is_pair_locked(pair) + assert PairLock.is_pair_locked(pair, lock_time + timedelta(minutes=-10)) + assert PairLock.is_pair_locked(pair, lock_time + timedelta(minutes=-50)) + + # Should not be locked after time expired + assert not PairLock.is_pair_locked(pair, lock_time + timedelta(minutes=10)) + + locks = PairLock.get_pair_locks(pair, lock_time + timedelta(minutes=-2)) + assert len(locks) == 1 + assert 'PairLock' in str(locks[0]) From 7a9768ffa67a3640073c5bd5176fe5f24e054f61 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Oct 2020 15:15:35 +0200 Subject: [PATCH 3330/3421] Add /locks Telegram endpoint --- freqtrade/persistence/models.py | 35 ++++++++++++++++++--------- freqtrade/rpc/rpc.py | 13 +++++++++- freqtrade/rpc/telegram.py | 27 +++++++++++++++++++++ tests/rpc/test_rpc_telegram.py | 42 +++++++++++++++++++++++++++++++-- tests/test_persistence.py | 8 ++++++- 5 files changed, 110 insertions(+), 15 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 4394b783a..1f9a9a5b0 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -668,14 +668,14 @@ class PairLock(_DECL_BASE): id = Column(Integer, primary_key=True) - pair = Column(String, nullable=False) + pair = Column(String, nullable=False, index=True) reason = Column(String, nullable=True) # Time the pair was locked (start time) lock_time = Column(DateTime, nullable=False) # Time until the pair is locked (end time) lock_end_time = Column(DateTime, nullable=False) - active = Column(Boolean, nullable=False, default=True) + active = Column(Boolean, nullable=False, default=True, index=True) def __repr__(self): lock_time = self.lock_time.strftime(DATETIME_PRINT_FORMAT) @@ -696,21 +696,24 @@ class PairLock(_DECL_BASE): PairLock.session.flush() @staticmethod - def get_pair_locks(pair: str, now: Optional[datetime] = None) -> List['PairLock']: + def get_pair_locks(pair: Optional[str], now: Optional[datetime] = None) -> List['PairLock']: """ Get all locks for this pair - :param pair: Pair to check for - :param now: Datetime object (generated via datetime.utcnow()). defaults to datetime.utcnow() + :param pair: Pair to check for. Returns all current locks if pair is empty + :param now: Datetime object (generated via datetime.now(timezone.utc)). + defaults to datetime.utcnow() """ if not now: now = datetime.now(timezone.utc) + filters = [func.datetime(PairLock.lock_time) <= now, + func.datetime(PairLock.lock_end_time) >= now, + # Only active locks + PairLock.active.is_(True), ] + if pair: + filters.append(PairLock.pair == pair) return PairLock.query.filter( - PairLock.pair == pair, - func.datetime(PairLock.lock_time) <= now, - func.datetime(PairLock.lock_end_time) >= now, - # Only active locks - PairLock.active.is_(True), + *filters ).all() @staticmethod @@ -731,7 +734,8 @@ class PairLock(_DECL_BASE): def is_pair_locked(pair: str, now: Optional[datetime] = None) -> bool: """ :param pair: Pair to check for - :param now: Datetime object (generated via datetime.utcnow()). defaults to datetime.utcnow() + :param now: Datetime object (generated via datetime.now(timezone.utc)). + defaults to datetime.utcnow() """ if not now: now = datetime.now(timezone.utc) @@ -743,3 +747,12 @@ class PairLock(_DECL_BASE): # Only active locks PairLock.active.is_(True), ).scalar() is not None + + def to_json(self) -> Dict[str, Any]: + return { + 'pair': self.pair, + 'lock_time': self.lock_time, + 'lock_end_time': self.lock_end_time, + 'reason': self.reason, + 'active': self.active, + } diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 911b2d731..dbdb956b6 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -19,7 +19,7 @@ from freqtrade.exceptions import ExchangeError, PricingError from freqtrade.exchange import timeframe_to_minutes, timeframe_to_msecs from freqtrade.loggers import bufferHandler from freqtrade.misc import shorten_date -from freqtrade.persistence import Trade +from freqtrade.persistence import PairLock, Trade from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.state import State from freqtrade.strategy.interface import SellType @@ -599,6 +599,17 @@ class RPC: 'total_stake': sum((trade.open_rate * trade.amount) for trade in trades) } + def _rpc_locks(self) -> Dict[str, Any]: + """ Returns the current locks""" + if self._freqtrade.state != State.RUNNING: + raise RPCException('trader is not running') + + locks = PairLock.get_pair_locks(None) + return { + 'lock_count': len(locks), + 'locks': [lock.to_json() for lock in locks] + } + def _rpc_whitelist(self) -> Dict: """ Returns the currently active whitelist""" res = {'method': self._freqtrade.pairlists.name_list, diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 7a6607632..6a0fd5acd 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -15,6 +15,7 @@ from telegram.ext import CallbackContext, CommandHandler, Updater from telegram.utils.helpers import escape_markdown from freqtrade.__init__ import __version__ +from freqtrade.constants import DATETIME_PRINT_FORMAT from freqtrade.rpc import RPC, RPCException, RPCMessageType from freqtrade.rpc.fiat_convert import CryptoToFiatConverter @@ -100,6 +101,8 @@ class Telegram(RPC): CommandHandler('performance', self._performance), CommandHandler('daily', self._daily), CommandHandler('count', self._count), + CommandHandler('locks', self._locks), + CommandHandler(['reload_config', 'reload_conf'], self._reload_config), CommandHandler(['show_config', 'show_conf'], self._show_config), CommandHandler('stopbuy', self._stopbuy), @@ -608,6 +611,29 @@ class Telegram(RPC): except RPCException as e: self._send_msg(str(e)) + @authorized_only + def _locks(self, update: Update, context: CallbackContext) -> None: + """ + Handler for /locks. + Returns the number of trades running + :param bot: telegram bot + :param update: message update + :return: None + """ + try: + locks = self._rpc_locks() + message = tabulate([[ + lock['pair'], + lock['lock_end_time'].strftime(DATETIME_PRINT_FORMAT), + lock['reason']] for lock in locks['locks']], + headers=['Pair', 'Until', 'Reason'], + tablefmt='simple') + message = "

              {}
              ".format(message) + logger.debug(message) + self._send_msg(message, parse_mode=ParseMode.HTML) + except RPCException as e: + self._send_msg(str(e)) + @authorized_only def _whitelist(self, update: Update, context: CallbackContext) -> None: """ @@ -720,6 +746,7 @@ class Telegram(RPC): "*/performance:* `Show performance of each finished trade grouped by pair`\n" "*/daily :* `Shows profit or loss per day, over the last n days`\n" "*/count:* `Show number of trades running compared to allowed number of trades`" + "*/locks:* `Show currently locked pairs`" "\n" "*/balance:* `Show account balance per currency`\n" "*/stopbuy:* `Stops buying, but handles open trades gracefully` \n" diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 230df0df9..47d0a90c9 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -2,6 +2,7 @@ # pragma pylint: disable=protected-access, unused-argument, invalid-name # pragma pylint: disable=too-many-lines, too-many-arguments +from freqtrade.persistence.models import PairLock import re from datetime import datetime from random import choice, randint @@ -75,8 +76,8 @@ def test_telegram_init(default_conf, mocker, caplog) -> None: message_str = ("rpc.telegram is listening for following commands: [['status'], ['profit'], " "['balance'], ['start'], ['stop'], ['forcesell'], ['forcebuy'], ['trades'], " - "['delete'], ['performance'], ['daily'], ['count'], ['reload_config', " - "'reload_conf'], ['show_config', 'show_conf'], ['stopbuy'], " + "['delete'], ['performance'], ['daily'], ['count'], ['locks'], " + "['reload_config', 'reload_conf'], ['show_config', 'show_conf'], ['stopbuy'], " "['whitelist'], ['blacklist'], ['logs'], ['edge'], ['help'], ['version']]") assert log_has(message_str, caplog) @@ -1024,6 +1025,43 @@ def test_count_handle(default_conf, update, ticker, fee, mocker) -> None: assert msg in msg_mock.call_args_list[0][0][0] +def test_telegram_lock_handle(default_conf, update, ticker, fee, mocker) -> None: + msg_mock = MagicMock() + mocker.patch.multiple( + 'freqtrade.rpc.telegram.Telegram', + _init=MagicMock(), + _send_msg=msg_mock + ) + mocker.patch.multiple( + 'freqtrade.exchange.Exchange', + fetch_ticker=ticker, + get_fee=fee, + ) + freqtradebot = get_patched_freqtradebot(mocker, default_conf) + patch_get_signal(freqtradebot, (True, False)) + telegram = Telegram(freqtradebot) + + freqtradebot.state = State.STOPPED + telegram._locks(update=update, context=MagicMock()) + assert msg_mock.call_count == 1 + assert 'not running' in msg_mock.call_args_list[0][0][0] + msg_mock.reset_mock() + freqtradebot.state = State.RUNNING + + PairLock.lock_pair('ETH/BTC', arrow.utcnow().shift(minutes=4).datetime, 'randreason') + PairLock.lock_pair('XRP/BTC', arrow.utcnow().shift(minutes=20).datetime, 'deadbeef') + + telegram._locks(update=update, context=MagicMock()) + + assert 'Pair' in msg_mock.call_args_list[0][0][0] + assert 'Until' in msg_mock.call_args_list[0][0][0] + assert 'Reason\n' in msg_mock.call_args_list[0][0][0] + assert 'ETH/BTC' in msg_mock.call_args_list[0][0][0] + assert 'XRP/BTC' in msg_mock.call_args_list[0][0][0] + assert 'deadbeef' in msg_mock.call_args_list[0][0][0] + assert 'randreason' in msg_mock.call_args_list[0][0][0] + + def test_whitelist_static(default_conf, update, mocker) -> None: msg_mock = MagicMock() mocker.patch.multiple( diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 6ac1e36a4..59b1fa31b 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -1175,10 +1175,16 @@ def test_PairLock(default_conf): # XRP/BTC should not be locked now pair = 'XRP/BTC' assert not PairLock.is_pair_locked(pair) - # Unlocking a pair that's not locked should not raise an error PairLock.unlock_pair(pair) + PairLock.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime) + assert PairLock.is_pair_locked(pair) + + # Get both locks from above + locks = PairLock.get_pair_locks(None) + assert len(locks) == 2 + # Unlock original pair pair = 'ETH/BTC' PairLock.unlock_pair(pair) From cd2866eaec6898299336128d52f32bd1c33528a5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Oct 2020 17:58:07 +0200 Subject: [PATCH 3331/3421] Add rest endpoint for /locks --- freqtrade/persistence/models.py | 7 +++++-- freqtrade/rpc/api_server.py | 10 ++++++++++ scripts/rest_client.py | 7 +++++++ tests/rpc/test_rpc_apiserver.py | 29 +++++++++++++++++++++++++++-- 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 1f9a9a5b0..2621bb852 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -751,8 +751,11 @@ class PairLock(_DECL_BASE): def to_json(self) -> Dict[str, Any]: return { 'pair': self.pair, - 'lock_time': self.lock_time, - 'lock_end_time': self.lock_end_time, + 'lock_time': self.lock_time.strftime("%Y-%m-%d %H:%M:%S"), + 'lock_timestamp': int(self.lock_time.replace(tzinfo=timezone.utc).timestamp() * 1000), + 'lock_end_time': self.lock_end_time.strftime("%Y-%m-%d %H:%M:%S"), + 'lock_end_timestamp': int(self.lock_end_time.replace(tzinfo=timezone.utc + ).timestamp() * 1000), 'reason': self.reason, 'active': self.active, } diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index f31d7b0b5..89e0f88c7 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -192,6 +192,7 @@ class ApiServer(RPC): self.app.add_url_rule(f'{BASE_URI}/balance', 'balance', view_func=self._balance, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/count', 'count', view_func=self._count, methods=['GET']) + self.app.add_url_rule(f'{BASE_URI}/locks', 'locks', view_func=self._locks, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/daily', 'daily', view_func=self._daily, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/edge', 'edge', view_func=self._edge, methods=['GET']) self.app.add_url_rule(f'{BASE_URI}/logs', 'log', view_func=self._get_logs, methods=['GET']) @@ -350,6 +351,15 @@ class ApiServer(RPC): msg = self._rpc_count() return jsonify(msg) + @require_login + @rpc_catch_errors + def _locks(self): + """ + Handler for /locks. + Returns the number of trades running + """ + return jsonify(self._rpc_locks()) + @require_login @rpc_catch_errors def _daily(self): diff --git a/scripts/rest_client.py b/scripts/rest_client.py index 46966d447..268e81397 100755 --- a/scripts/rest_client.py +++ b/scripts/rest_client.py @@ -111,6 +111,13 @@ class FtRestClient(): """ return self._get("count") + def locks(self): + """Return current locks + + :return: json object + """ + return self._get("locks") + def daily(self, days=None): """Return the amount of open trades. diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index d0e5d3c37..2b4242f5a 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -2,8 +2,9 @@ Unit test file for rpc/api_server.py """ -from datetime import datetime +from datetime import datetime, timedelta from pathlib import Path +from time import sleep from unittest.mock import ANY, MagicMock, PropertyMock import pytest @@ -12,7 +13,7 @@ from requests.auth import _basic_auth_str from freqtrade.__init__ import __version__ from freqtrade.loggers import setup_logging, setup_logging_pre -from freqtrade.persistence import Trade +from freqtrade.persistence import PairLock, Trade from freqtrade.rpc.api_server import BASE_URI, ApiServer from freqtrade.state import State from tests.conftest import create_mock_trades, get_patched_freqtradebot, log_has, patch_get_signal @@ -328,6 +329,30 @@ def test_api_count(botclient, mocker, ticker, fee, markets): assert rc.json["max"] == 1.0 +def test_api_locks(botclient): + ftbot, client = botclient + + rc = client_get(client, f"{BASE_URI}/locks") + assert_response(rc) + + assert 'locks' in rc.json + + assert rc.json['lock_count'] == 0 + assert rc.json['lock_count'] == len(rc.json['locks']) + + PairLock.lock_pair('ETH/BTC', datetime.utcnow() + timedelta(minutes=4), 'randreason') + PairLock.lock_pair('XRP/BTC', datetime.utcnow() + timedelta(minutes=20), 'deadbeef') + + rc = client_get(client, f"{BASE_URI}/locks") + assert_response(rc) + + assert rc.json['lock_count'] == 2 + assert rc.json['lock_count'] == len(rc.json['locks']) + assert 'ETH/BTC' in (rc.json['locks'][0]['pair'], rc.json['locks'][1]['pair']) + assert 'randreason' in (rc.json['locks'][0]['reason'], rc.json['locks'][1]['reason']) + assert 'deadbeef' in (rc.json['locks'][0]['reason'], rc.json['locks'][1]['reason']) + + def test_api_show_config(botclient, mocker): ftbot, client = botclient patch_get_signal(ftbot, (True, False)) From 0daf77f313c71f00951787cbaa74cf2cc5a32dca Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Oct 2020 19:41:58 +0200 Subject: [PATCH 3332/3421] Don't check for lock start date --- freqtrade/persistence/models.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 2621bb852..da53a827f 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -706,8 +706,7 @@ class PairLock(_DECL_BASE): if not now: now = datetime.now(timezone.utc) - filters = [func.datetime(PairLock.lock_time) <= now, - func.datetime(PairLock.lock_end_time) >= now, + filters = [func.datetime(PairLock.lock_end_time) >= now, # Only active locks PairLock.active.is_(True), ] if pair: @@ -742,7 +741,6 @@ class PairLock(_DECL_BASE): return PairLock.query.filter( PairLock.pair == pair, - func.datetime(PairLock.lock_time) <= now, func.datetime(PairLock.lock_end_time) >= now, # Only active locks PairLock.active.is_(True), From 1156f5e68629bae8344a053c43f2cf48b8171a19 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 17 Oct 2020 20:32:23 +0200 Subject: [PATCH 3333/3421] Use constant for times --- freqtrade/persistence/models.py | 10 +++++----- freqtrade/rpc/rpc.py | 4 ++-- freqtrade/rpc/telegram.py | 3 +-- tests/rpc/test_rpc_telegram.py | 3 +-- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index da53a827f..b06aab7df 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -281,7 +281,7 @@ class Trade(_DECL_BASE): 'fee_close_currency': self.fee_close_currency, 'open_date_hum': arrow.get(self.open_date).humanize(), - 'open_date': self.open_date.strftime("%Y-%m-%d %H:%M:%S"), + 'open_date': self.open_date.strftime(DATETIME_PRINT_FORMAT), 'open_timestamp': int(self.open_date.replace(tzinfo=timezone.utc).timestamp() * 1000), 'open_rate': self.open_rate, 'open_rate_requested': self.open_rate_requested, @@ -289,7 +289,7 @@ class Trade(_DECL_BASE): 'close_date_hum': (arrow.get(self.close_date).humanize() if self.close_date else None), - 'close_date': (self.close_date.strftime("%Y-%m-%d %H:%M:%S") + 'close_date': (self.close_date.strftime(DATETIME_PRINT_FORMAT) if self.close_date else None), 'close_timestamp': int(self.close_date.replace( tzinfo=timezone.utc).timestamp() * 1000) if self.close_date else None, @@ -305,7 +305,7 @@ class Trade(_DECL_BASE): 'stop_loss_ratio': self.stop_loss_pct if self.stop_loss_pct else None, 'stop_loss_pct': (self.stop_loss_pct * 100) if self.stop_loss_pct else None, 'stoploss_order_id': self.stoploss_order_id, - 'stoploss_last_update': (self.stoploss_last_update.strftime("%Y-%m-%d %H:%M:%S") + 'stoploss_last_update': (self.stoploss_last_update.strftime(DATETIME_PRINT_FORMAT) if self.stoploss_last_update else None), 'stoploss_last_update_timestamp': int(self.stoploss_last_update.replace( tzinfo=timezone.utc).timestamp() * 1000) if self.stoploss_last_update else None, @@ -749,9 +749,9 @@ class PairLock(_DECL_BASE): def to_json(self) -> Dict[str, Any]: return { 'pair': self.pair, - 'lock_time': self.lock_time.strftime("%Y-%m-%d %H:%M:%S"), + 'lock_time': self.lock_time.strftime(DATETIME_PRINT_FORMAT), 'lock_timestamp': int(self.lock_time.replace(tzinfo=timezone.utc).timestamp() * 1000), - 'lock_end_time': self.lock_end_time.strftime("%Y-%m-%d %H:%M:%S"), + 'lock_end_time': self.lock_end_time.strftime(DATETIME_PRINT_FORMAT), 'lock_end_timestamp': int(self.lock_end_time.replace(tzinfo=timezone.utc ).timestamp() * 1000), 'reason': self.reason, diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index dbdb956b6..de8bcaefb 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -13,7 +13,7 @@ from numpy import NAN, int64, mean from pandas import DataFrame from freqtrade.configuration.timerange import TimeRange -from freqtrade.constants import CANCEL_REASON +from freqtrade.constants import CANCEL_REASON, DATETIME_PRINT_FORMAT from freqtrade.data.history import load_data from freqtrade.exceptions import ExchangeError, PricingError from freqtrade.exchange import timeframe_to_minutes, timeframe_to_msecs @@ -649,7 +649,7 @@ class RPC: buffer = bufferHandler.buffer[-limit:] else: buffer = bufferHandler.buffer - records = [[datetime.fromtimestamp(r.created).strftime("%Y-%m-%d %H:%M:%S"), + records = [[datetime.fromtimestamp(r.created).strftime(DATETIME_PRINT_FORMAT), r.created * 1000, r.name, r.levelname, r.message + ('\n' + r.exc_text if r.exc_text else '')] for r in buffer] diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 6a0fd5acd..f3581c38f 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -102,7 +102,6 @@ class Telegram(RPC): CommandHandler('daily', self._daily), CommandHandler('count', self._count), CommandHandler('locks', self._locks), - CommandHandler(['reload_config', 'reload_conf'], self._reload_config), CommandHandler(['show_config', 'show_conf'], self._show_config), CommandHandler('stopbuy', self._stopbuy), @@ -624,7 +623,7 @@ class Telegram(RPC): locks = self._rpc_locks() message = tabulate([[ lock['pair'], - lock['lock_end_time'].strftime(DATETIME_PRINT_FORMAT), + lock['lock_end_time'], lock['reason']] for lock in locks['locks']], headers=['Pair', 'Until', 'Reason'], tablefmt='simple') diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 47d0a90c9..c412313ad 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -2,7 +2,6 @@ # pragma pylint: disable=protected-access, unused-argument, invalid-name # pragma pylint: disable=too-many-lines, too-many-arguments -from freqtrade.persistence.models import PairLock import re from datetime import datetime from random import choice, randint @@ -19,7 +18,7 @@ from freqtrade.constants import CANCEL_REASON from freqtrade.edge import PairInfo from freqtrade.freqtradebot import FreqtradeBot from freqtrade.loggers import setup_logging -from freqtrade.persistence import Trade +from freqtrade.persistence import PairLock, Trade from freqtrade.rpc import RPCMessageType from freqtrade.rpc.telegram import Telegram, authorized_only from freqtrade.state import State From 64e680d7eeb5f664cb241ecc596db962d0bbbe52 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 18 Oct 2020 10:48:39 +0200 Subject: [PATCH 3334/3421] Document new api method --- docs/rest-api.md | 27 ++++++++++++++------------- freqtrade/rpc/telegram.py | 5 ++--- tests/strategy/test_interface.py | 3 --- tests/test_persistence.py | 3 --- 4 files changed, 16 insertions(+), 22 deletions(-) diff --git a/docs/rest-api.md b/docs/rest-api.md index 44f0b07cf..7726ab875 100644 --- a/docs/rest-api.md +++ b/docs/rest-api.md @@ -109,24 +109,25 @@ python3 scripts/rest_client.py --config rest_config.json [optional par | Command | Description | |----------|-------------| | `ping` | Simple command testing the API Readiness - requires no authentication. -| `start` | Starts the trader -| `stop` | Stops the trader +| `start` | Starts the trader. +| `stop` | Stops the trader. | `stopbuy` | Stops the trader from opening new trades. Gracefully closes open trades according to their rules. -| `reload_config` | Reloads the configuration file +| `reload_config` | Reloads the configuration file. | `trades` | List last trades. | `delete_trade ` | Remove trade from the database. Tries to close open orders. Requires manual handling of this trade on the exchange. -| `show_config` | Shows part of the current configuration with relevant settings to operation -| `logs` | Shows last log messages -| `status` | Lists all open trades -| `count` | Displays number of trades used and available -| `profit` | Display a summary of your profit/loss from close trades and some stats about your performance +| `show_config` | Shows part of the current configuration with relevant settings to operation. +| `logs` | Shows last log messages. +| `status` | Lists all open trades. +| `count` | Displays number of trades used and available. +| `locks` | Displays currently locked pairs. +| `profit` | Display a summary of your profit/loss from close trades and some stats about your performance. | `forcesell ` | Instantly sells the given trade (Ignoring `minimum_roi`). | `forcesell all` | Instantly sells all open trades (Ignoring `minimum_roi`). | `forcebuy [rate]` | Instantly buys the given pair. Rate is optional. (`forcebuy_enable` must be set to True) -| `performance` | Show performance of each finished trade grouped by pair -| `balance` | Show account balance per currency -| `daily ` | Shows profit or loss per day, over the last n days (n defaults to 7) -| `whitelist` | Show the current whitelist +| `performance` | Show performance of each finished trade grouped by pair. +| `balance` | Show account balance per currency. +| `daily ` | Shows profit or loss per day, over the last n days (n defaults to 7). +| `whitelist` | Show the current whitelist. | `blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist. | `edge` | Show validated pairs by Edge if it is enabled. | `pair_candles` | Returns dataframe for a pair / timeframe combination while the bot is running. **Alpha** @@ -135,7 +136,7 @@ python3 scripts/rest_client.py --config rest_config.json [optional par | `strategies` | List strategies in strategy directory. **Alpha** | `strategy ` | Get specific Strategy content. **Alpha** | `available_pairs` | List available backtest data. **Alpha** -| `version` | Show version +| `version` | Show version. !!! Warning "Alpha status" Endpoints labeled with *Alpha status* above may change at any time without notice. diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index f3581c38f..18360c418 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -744,9 +744,8 @@ class Telegram(RPC): "*/delete :* `Instantly delete the given trade in the database`\n" "*/performance:* `Show performance of each finished trade grouped by pair`\n" "*/daily :* `Shows profit or loss per day, over the last n days`\n" - "*/count:* `Show number of trades running compared to allowed number of trades`" - "*/locks:* `Show currently locked pairs`" - "\n" + "*/count:* `Show number of active trades compared to allowed number of trades`\n" + "*/locks:* `Show currently locked pairs`\n" "*/balance:* `Show account balance per currency`\n" "*/stopbuy:* `Stops buying, but handles open trades gracefully` \n" "*/reload_config:* `Reload configuration file` \n" diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index e9d9bcc75..dc5cd47e7 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -388,9 +388,6 @@ def test_is_pair_locked(default_conf): # Lock until 14:30 lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=timezone.utc) strategy.lock_pair(pair, lock_time) - # Lock is in the past, so we must fake the lock - lock = PairLock.query.filter(PairLock.pair == pair).first() - lock.lock_time = lock_time - timedelta(hours=2) assert not strategy.is_pair_locked(pair) # latest candle is from 14:20, lock goes to 14:30 diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 59b1fa31b..243da3396 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -1194,9 +1194,6 @@ def test_PairLock(default_conf): # Lock until 14:30 lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=timezone.utc) PairLock.lock_pair(pair, lock_time) - # Lock is in the past, so we must fake the lock - lock = PairLock.query.filter(PairLock.pair == pair).first() - lock.lock_time = lock_time - timedelta(hours=2) assert not PairLock.is_pair_locked(pair) assert PairLock.is_pair_locked(pair, lock_time + timedelta(minutes=-10)) From 5f63fdd8adb1533322afa5b8f3d67b3a77d70ec8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 20 Oct 2020 19:39:38 +0200 Subject: [PATCH 3335/3421] Use better lock message --- freqtrade/freqtradebot.py | 4 ++-- freqtrade/rpc/api_server.py | 2 +- freqtrade/rpc/telegram.py | 6 +----- tests/rpc/test_rpc_apiserver.py | 1 - 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index e004ed51c..6112a599e 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -938,7 +938,7 @@ class FreqtradeBot: stoploss_order=True) # Lock pair for one candle to prevent immediate rebuys self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['timeframe']), - reason='auto_lock_1_candle') + reason='Auto lock') self._notify_sell(trade, "stoploss") return True @@ -1265,7 +1265,7 @@ class FreqtradeBot: # Lock pair for one candle to prevent immediate rebuys self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['timeframe']), - reason='auto_lock_1_candle') + reason='Auto lock') self._notify_sell(trade, order_type) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 89e0f88c7..be21179ad 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -356,7 +356,7 @@ class ApiServer(RPC): def _locks(self): """ Handler for /locks. - Returns the number of trades running + Returns the currently active locks. """ return jsonify(self._rpc_locks()) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 18360c418..3dcb7ab72 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -15,7 +15,6 @@ from telegram.ext import CallbackContext, CommandHandler, Updater from telegram.utils.helpers import escape_markdown from freqtrade.__init__ import __version__ -from freqtrade.constants import DATETIME_PRINT_FORMAT from freqtrade.rpc import RPC, RPCException, RPCMessageType from freqtrade.rpc.fiat_convert import CryptoToFiatConverter @@ -614,10 +613,7 @@ class Telegram(RPC): def _locks(self, update: Update, context: CallbackContext) -> None: """ Handler for /locks. - Returns the number of trades running - :param bot: telegram bot - :param update: message update - :return: None + Returns the currently active locks """ try: locks = self._rpc_locks() diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 2b4242f5a..34e959875 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -4,7 +4,6 @@ Unit test file for rpc/api_server.py from datetime import datetime, timedelta from pathlib import Path -from time import sleep from unittest.mock import ANY, MagicMock, PropertyMock import pytest From adffd402ea6aff03719d21bf725448f8da0d8b27 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 20 Oct 2020 20:11:38 +0200 Subject: [PATCH 3336/3421] Replace some pointless occurances of arrow --- freqtrade/commands/data_commands.py | 4 ++-- freqtrade/data/dataprovider.py | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index 7102eee38..c12c20ddd 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -1,9 +1,9 @@ import logging import sys from collections import defaultdict +from datetime import datetime, timedelta from typing import Any, Dict, List -import arrow from freqtrade.configuration import TimeRange, setup_utils_configuration from freqtrade.data.converter import convert_ohlcv_format, convert_trades_format @@ -29,7 +29,7 @@ def start_download_data(args: Dict[str, Any]) -> None: "You can only specify one or the other.") timerange = TimeRange() if 'days' in config: - time_since = arrow.utcnow().shift(days=-config['days']).strftime("%Y%m%d") + time_since = (datetime.now() - timedelta(days=config['days'])).strftime("%Y%m%d") timerange = TimeRange.parse_timerange(f'{time_since}-') if 'timerange' in config: diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 07dd94fc1..ba43044a1 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -8,7 +8,6 @@ import logging from datetime import datetime, timezone from typing import Any, Dict, List, Optional, Tuple -from arrow import Arrow from pandas import DataFrame from freqtrade.constants import ListPairsWithTimeframes, PairWithTimeframe @@ -38,7 +37,7 @@ class DataProvider: :param timeframe: Timeframe to get data for :param dataframe: analyzed dataframe """ - self.__cached_pairs[(pair, timeframe)] = (dataframe, Arrow.utcnow().datetime) + self.__cached_pairs[(pair, timeframe)] = (dataframe, datetime.now(timezone.utc)) def add_pairlisthandler(self, pairlists) -> None: """ From fd6018f67aaa9620c237098f8139bcfb06832d62 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 21 Oct 2020 06:21:13 +0200 Subject: [PATCH 3337/3421] Fix dependency sorting --- freqtrade/commands/data_commands.py | 1 - 1 file changed, 1 deletion(-) diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index c12c20ddd..b28e0c357 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -4,7 +4,6 @@ from collections import defaultdict from datetime import datetime, timedelta from typing import Any, Dict, List - from freqtrade.configuration import TimeRange, setup_utils_configuration from freqtrade.data.converter import convert_ohlcv_format, convert_trades_format from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data, From 42d9e2e7dc2b69e7120d2b47a3cae20ffb674070 Mon Sep 17 00:00:00 2001 From: pure <37597027+deeppaz@users.noreply.github.com> Date: Wed, 21 Oct 2020 17:06:26 +0300 Subject: [PATCH 3338/3421] update quick start steps --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index a3c6168fa..4290dec8f 100644 --- a/README.md +++ b/README.md @@ -55,9 +55,8 @@ Please find the complete documentation on our [website](https://www.freqtrade.io Freqtrade provides a Linux/macOS script to install all dependencies and help you to configure the bot. ```bash -git clone git@github.com:freqtrade/freqtrade.git +git clone -b develop https://github.com/freqtrade/freqtrade.git cd freqtrade -git checkout develop ./setup.sh --install ``` From a143f7bc434deb7cac6d37fe43dd66ce2d74a25a Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 21 Oct 2020 19:35:57 +0200 Subject: [PATCH 3339/3421] Improve pairlock docstrings --- freqtrade/persistence/models.py | 3 +++ freqtrade/strategy/interface.py | 1 + 2 files changed, 4 insertions(+) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index b06aab7df..f1f9a4e67 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -719,6 +719,9 @@ class PairLock(_DECL_BASE): def unlock_pair(pair: str, now: Optional[datetime] = None) -> None: """ Release all locks for this pair. + :param pair: Pair to unlock + :param now: Datetime object (generated via datetime.now(timezone.utc)). + defaults to datetime.utcnow() """ if not now: now = datetime.now(timezone.utc) diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index 36abfd05a..e6256cafb 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -286,6 +286,7 @@ class IStrategy(ABC): :param pair: Pair to lock :param until: datetime in UTC until the pair should be blocked from opening new trades. Needs to be timezone aware `datetime.now(timezone.utc)` + :param reason: Optional string explaining why the pair was locked. """ PairLock.lock_pair(pair, until, reason) From cf1a7261987b806ac8004ac6cd7247cd0115e1da Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Oct 2020 07:35:25 +0200 Subject: [PATCH 3340/3421] Rename table to be inline with other table naming --- freqtrade/persistence/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index f1f9a4e67..477a94bad 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -664,7 +664,7 @@ class PairLock(_DECL_BASE): """ Pair Locks database model. """ - __tablename__ = 'pair_lock' + __tablename__ = 'pairlocks' id = Column(Integer, primary_key=True) @@ -673,7 +673,7 @@ class PairLock(_DECL_BASE): # Time the pair was locked (start time) lock_time = Column(DateTime, nullable=False) # Time until the pair is locked (end time) - lock_end_time = Column(DateTime, nullable=False) + lock_end_time = Column(DateTime, nullable=False, index=True) active = Column(Boolean, nullable=False, default=True, index=True) From ffcc47d8dd0f150f1b6610e8badc9711e48aaf67 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Oct 2020 07:42:47 +0200 Subject: [PATCH 3341/3421] Cleanup sql cheatsheet --- docs/sql_cheatsheet.md | 71 +++++------------------------------------- 1 file changed, 7 insertions(+), 64 deletions(-) diff --git a/docs/sql_cheatsheet.md b/docs/sql_cheatsheet.md index 168d416ab..569af33ff 100644 --- a/docs/sql_cheatsheet.md +++ b/docs/sql_cheatsheet.md @@ -43,52 +43,6 @@ sqlite3 .schema ``` -### Trade table structure - -```sql -CREATE TABLE trades( - id INTEGER NOT NULL, - exchange VARCHAR NOT NULL, - pair VARCHAR NOT NULL, - is_open BOOLEAN NOT NULL, - fee_open FLOAT NOT NULL, - fee_open_cost FLOAT, - fee_open_currency VARCHAR, - fee_close FLOAT NOT NULL, - fee_close_cost FLOAT, - fee_close_currency VARCHAR, - open_rate FLOAT, - open_rate_requested FLOAT, - open_trade_price FLOAT, - close_rate FLOAT, - close_rate_requested FLOAT, - close_profit FLOAT, - close_profit_abs FLOAT, - stake_amount FLOAT NOT NULL, - amount FLOAT, - open_date DATETIME NOT NULL, - close_date DATETIME, - open_order_id VARCHAR, - stop_loss FLOAT, - stop_loss_pct FLOAT, - initial_stop_loss FLOAT, - initial_stop_loss_pct FLOAT, - stoploss_order_id VARCHAR, - stoploss_last_update DATETIME, - max_rate FLOAT, - min_rate FLOAT, - sell_reason VARCHAR, - strategy VARCHAR, - timeframe INTEGER, - PRIMARY KEY (id), - CHECK (is_open IN (0, 1)) -); -CREATE INDEX ix_trades_stoploss_order_id ON trades (stoploss_order_id); -CREATE INDEX ix_trades_pair ON trades (pair); -CREATE INDEX ix_trades_is_open ON trades (is_open); - -``` - ## Get all trades in the table ```sql @@ -98,11 +52,11 @@ SELECT * FROM trades; ## Fix trade still open after a manual sell on the exchange !!! Warning - Manually selling a pair on the exchange will not be detected by the bot and it will try to sell anyway. Whenever possible, forcesell should be used to accomplish the same thing. - It is strongly advised to backup your database file before making any manual changes. + Manually selling a pair on the exchange will not be detected by the bot and it will try to sell anyway. Whenever possible, forcesell should be used to accomplish the same thing. + It is strongly advised to backup your database file before making any manual changes. !!! Note - This should not be necessary after /forcesell, as forcesell orders are closed automatically by the bot on the next iteration. + This should not be necessary after /forcesell, as forcesell orders are closed automatically by the bot on the next iteration. ```sql UPDATE trades @@ -128,23 +82,12 @@ SET is_open=0, WHERE id=31; ``` -## Manually insert a new trade - -```sql -INSERT INTO trades (exchange, pair, is_open, fee_open, fee_close, open_rate, stake_amount, amount, open_date) -VALUES ('binance', 'ETH/BTC', 1, 0.0025, 0.0025, , , , '') -``` - -### Insert trade example - -```sql -INSERT INTO trades (exchange, pair, is_open, fee_open, fee_close, open_rate, stake_amount, amount, open_date) -VALUES ('binance', 'ETH/BTC', 1, 0.0025, 0.0025, 0.00258580, 0.002, 0.7715262081, '2020-06-28 12:44:24.000000') -``` - ## Remove trade from the database -Maybe you'd like to remove a trade from the database, because something went wrong. +!!! Tip "Use RPC Methods to delete trades" + Consider using `/delete ` via telegram or rest API. That's the recommended way to deleting trades. + +If you'd still like to remove a trade from the database directly, you can use the below query. ```sql DELETE FROM trades WHERE id = ; From cd8610cb2456b60bef31381fb9c999dade7a5738 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Oct 2020 07:50:09 +0200 Subject: [PATCH 3342/3421] Update readme.md files --- README.md | 29 ++++++++++++++--------------- docs/index.md | 10 ++++++---- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 4290dec8f..c9f4d0a52 100644 --- a/README.md +++ b/README.md @@ -110,17 +110,17 @@ optional arguments: Telegram is not mandatory. However, this is a great way to control your bot. More details and the full command list on our [documentation](https://www.freqtrade.io/en/latest/telegram-usage/) -- `/start`: Starts the trader -- `/stop`: Stops the trader -- `/status [table]`: Lists all open trades -- `/count`: Displays number of open trades +- `/start`: Starts the trader. +- `/stop`: Stops the trader. +- `/stopbuy`: Stop entering new trades. +- `/status [table]`: Lists all open trades. - `/profit`: Lists cumulative profit from all finished trades - `/forcesell |all`: Instantly sells the given trade (Ignoring `minimum_roi`). - `/performance`: Show performance of each finished trade grouped by pair -- `/balance`: Show account balance per currency -- `/daily `: Shows profit or loss per day, over the last n days -- `/help`: Show help message -- `/version`: Show version +- `/balance`: Show account balance per currency. +- `/daily `: Shows profit or loss per day, over the last n days. +- `/help`: Show help message. +- `/version`: Show version. ## Development branches @@ -132,16 +132,15 @@ The project is currently setup in two main branches: ## Support -### Help / Slack +### Help / Slack / Discord -For any questions not covered by the documentation or for further -information about the bot, we encourage you to join our slack channel. +For any questions not covered by the documentation or for further information about the bot, we encourage you to join our slack channel. - [Click here to join Slack channel](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE). -To those interested to check out the newly created discord channel. Click [here](https://discord.gg/MA9v74M) +Alternatively, check out the newly created [discord server](https://discord.gg/MA9v74M). -P.S. currently since discord channel is relatively new, answers to questions might be slightly delayed as currently the user base quite small. +*Note*: Since the discord server is relatively new, answers to questions might be slightly delayed as currently the user base quite small. ### [Bugs / Issues](https://github.com/freqtrade/freqtrade/issues?q=is%3Aissue) @@ -169,7 +168,7 @@ Please read our [Contributing document](https://github.com/freqtrade/freqtrade/blob/develop/CONTRIBUTING.md) to understand the requirements before sending your pull-requests. -Coding is not a neccessity to contribute - maybe start with improving our documentation? +Coding is not a necessity to contribute - maybe start with improving our documentation? Issues labeled [good first issue](https://github.com/freqtrade/freqtrade/labels/good%20first%20issue) can be good first contributions, and will help get you familiar with the codebase. **Note** before starting any major new feature work, *please open an issue describing what you are planning to do* or talk to us on [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE). This will ensure that interested parties can give valuable feedback on the feature, and let others know that you are working on it. @@ -180,7 +179,7 @@ Issues labeled [good first issue](https://github.com/freqtrade/freqtrade/labels/ ### Up-to-date clock -The clock must be accurate, syncronized to a NTP server very frequently to avoid problems with communication to the exchanges. +The clock must be accurate, synchronized to a NTP server very frequently to avoid problems with communication to the exchanges. ### Min hardware required diff --git a/docs/index.md b/docs/index.md index b2f3e417e..5608587db 100644 --- a/docs/index.md +++ b/docs/index.md @@ -59,15 +59,17 @@ Alternatively ## Support -### Help / Slack +### Help / Slack / Discord + For any questions not covered by the documentation or for further information about the bot, we encourage you to join our passionate Slack community. Click [here](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) to join the Freqtrade Slack channel. -To those interested to check out the newly created discord channel. Click [here](https://discord.gg/MA9v74M) +Alternatively, check out the newly created [discord server](https://discord.gg/MA9v74M). -P.S. currently since discord channel is relatively new, answers to questions might be slightly delayed as currently the user base quite small. +!!! Note + Since the discord server is relatively new, answers to questions might be slightly delayed as currently the user base quite small. ## Ready to try? -Begin by reading our installation guide [for docker](docker.md), or for [installation without docker](installation.md). +Begin by reading our installation guide [for docker](docker.md) (recommended), or for [installation without docker](installation.md). From 99990179534f947b25a465d3c890489ad1136bd0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 22 Oct 2020 08:04:48 +0200 Subject: [PATCH 3343/3421] Fix small bug in case of duplicate locks --- freqtrade/persistence/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 477a94bad..22efed78d 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -747,7 +747,7 @@ class PairLock(_DECL_BASE): func.datetime(PairLock.lock_end_time) >= now, # Only active locks PairLock.active.is_(True), - ).scalar() is not None + ).first() is not None def to_json(self) -> Dict[str, Any]: return { From b8c12f657670ecc52bcb15bb9c600e63c4408314 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 23 Oct 2020 07:45:11 +0200 Subject: [PATCH 3344/3421] Test if return value is an exception when downloading historic data --- freqtrade/exchange/exchange.py | 17 ++++++++++++----- tests/exchange/test_exchange.py | 9 +++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index c0d737f26..da3c83b0c 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -687,6 +687,9 @@ class Exchange: async def _async_get_historic_ohlcv(self, pair: str, timeframe: str, since_ms: int) -> List: + """ + Download historic ohlcv + """ one_call = timeframe_to_msecs(timeframe) * self._ohlcv_candle_limit logger.debug( @@ -702,9 +705,14 @@ class Exchange: # Combine gathered results data: List = [] - for p, timeframe, res in results: + for res in results: + if isinstance(res, Exception): + logger.warning("Async code raised an exception: %s", res.__class__.__name__) + continue + # Deconstruct tuple if it's not an exception + p, _, new_data = res if p == pair: - data.extend(res) + data.extend(new_data) # Sort data again after extending the result - above calls return in "async order" data = sorted(data, key=lambda x: x[0]) logger.info("Downloaded data for %s with length %s.", pair, len(data)) @@ -741,9 +749,8 @@ class Exchange: if isinstance(res, Exception): logger.warning("Async code raised an exception: %s", res.__class__.__name__) continue - pair = res[0] - timeframe = res[1] - ticks = res[2] + # Deconstruct tuple (has 3 elements) + pair, timeframe, ticks = res # keeping last candle time as last refreshed time of the pair if ticks: self._pairs_last_refresh_time[(pair, timeframe)] = ticks[-1][0] // 1000 diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index 19f2c7239..b23c18bb3 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1295,6 +1295,15 @@ def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name): # Returns twice the above OHLCV data assert len(ret) == 2 + caplog.clear() + + async def mock_get_candle_hist_error(pair, *args, **kwargs): + raise TimeoutError() + + exchange._async_get_candle_history = MagicMock(side_effect=mock_get_candle_hist_error) + ret = exchange.get_historic_ohlcv(pair, "5m", int((arrow.utcnow().timestamp - since) * 1000)) + assert log_has_re(r"Async code raised an exception: .*", caplog) + def test_refresh_latest_ohlcv(mocker, default_conf, caplog) -> None: ohlcv = [ From 3439e6c5c42693f5c75e2eb76557405e53806983 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Oct 2020 05:45:13 +0000 Subject: [PATCH 3345/3421] Bump urllib3 from 1.25.10 to 1.25.11 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.10 to 1.25.11. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.25.10...1.25.11) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 76e92eb3f..c03f852c4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ python-telegram-bot==13.0 arrow==0.17.0 cachetools==4.1.1 requests==2.24.0 -urllib3==1.25.10 +urllib3==1.25.11 wrapt==1.12.1 jsonschema==3.2.0 TA-Lib==0.4.19 From df5e6aa58b9d4e049a10e62b5c756da035d5bda5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Oct 2020 05:45:32 +0000 Subject: [PATCH 3346/3421] Bump aiohttp from 3.6.3 to 3.7.1 Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.6.3 to 3.7.1. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.6.3...v3.7.1) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 76e92eb3f..bf597c256 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ pandas==1.1.3 ccxt==1.36.66 multidict==4.7.6 -aiohttp==3.6.3 +aiohttp==3.7.1 SQLAlchemy==1.3.20 python-telegram-bot==13.0 arrow==0.17.0 From 2831a78d0e0bf51bbd9388f6b3506658617cac2c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Oct 2020 05:45:33 +0000 Subject: [PATCH 3347/3421] Bump ccxt from 1.36.66 to 1.36.85 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.36.66 to 1.36.85. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.36.66...1.36.85) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 76e92eb3f..dcd02c752 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.19.2 pandas==1.1.3 -ccxt==1.36.66 +ccxt==1.36.85 multidict==4.7.6 aiohttp==3.6.3 SQLAlchemy==1.3.20 From 95d11bd0d24318bb9846bf0a00b7b688ebccba72 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Oct 2020 05:45:34 +0000 Subject: [PATCH 3348/3421] Bump python-rapidjson from 0.9.1 to 0.9.3 Bumps [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) from 0.9.1 to 0.9.3. - [Release notes](https://github.com/python-rapidjson/python-rapidjson/releases) - [Changelog](https://github.com/python-rapidjson/python-rapidjson/blob/master/CHANGES.rst) - [Commits](https://github.com/python-rapidjson/python-rapidjson/compare/v0.9.1...v0.9.3) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 76e92eb3f..fb961e5d5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,7 +23,7 @@ blosc==1.9.2 py_find_1st==1.1.4 # Load ticker files 30% faster -python-rapidjson==0.9.1 +python-rapidjson==0.9.3 # Notify systemd sdnotify==0.3.2 From 066ea45ce0e6ac37ca39261354cfcc82c4ac5030 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Oct 2020 05:45:39 +0000 Subject: [PATCH 3349/3421] Bump plotly from 4.11.0 to 4.12.0 Bumps [plotly](https://github.com/plotly/plotly.py) from 4.11.0 to 4.12.0. - [Release notes](https://github.com/plotly/plotly.py/releases) - [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md) - [Commits](https://github.com/plotly/plotly.py/compare/v4.11.0...v4.12.0) Signed-off-by: dependabot[bot] --- requirements-plot.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-plot.txt b/requirements-plot.txt index 7c3e04723..bd40bc0b5 100644 --- a/requirements-plot.txt +++ b/requirements-plot.txt @@ -1,5 +1,5 @@ # Include all requirements to run the bot. -r requirements.txt -plotly==4.11.0 +plotly==4.12.0 From 442e9d20e12061e94e652070818414e724a9535a Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 26 Oct 2020 16:25:46 +0100 Subject: [PATCH 3350/3421] Remove pinned dependency of multidict --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 1b97965f6..baf368adf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,6 @@ numpy==1.19.2 pandas==1.1.3 ccxt==1.36.85 -multidict==4.7.6 aiohttp==3.7.1 SQLAlchemy==1.3.20 python-telegram-bot==13.0 From 69e8da30e53ee6a69183b9ce645b632eda37b0e4 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Oct 2020 10:13:54 +0100 Subject: [PATCH 3351/3421] Ensure times that fall on a candle are also shifted --- tests/exchange/test_exchange.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index b23c18bb3..a01700e5d 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1,6 +1,6 @@ import copy import logging -from datetime import datetime, timezone +from datetime import datetime, timedelta, timezone from random import randint from unittest.mock import MagicMock, Mock, PropertyMock, patch @@ -2300,6 +2300,9 @@ def test_timeframe_to_next_date(): date = datetime.now(tz=timezone.utc) assert timeframe_to_next_date("5m") > date + date = datetime(2019, 8, 12, 13, 30, 0, tzinfo=timezone.utc) + assert timeframe_to_next_date("5m", date) == date + timedelta(minutes=5) + @pytest.mark.parametrize("market_symbol,base,quote,exchange,add_dict,expected_result", [ ("BTC/USDT", 'BTC', 'USDT', "binance", {}, True), From e602ac3406ae2d23210811bc2b21503b39303fa9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 25 Oct 2020 10:54:30 +0100 Subject: [PATCH 3352/3421] Introduce Pairlocks middleware --- freqtrade/freqtradebot.py | 32 +++---- freqtrade/persistence/__init__.py | 4 +- freqtrade/persistence/models.py | 50 +--------- freqtrade/persistence/pairlock_middleware.py | 97 ++++++++++++++++++++ freqtrade/rpc/rpc.py | 4 +- freqtrade/strategy/interface.py | 10 +- tests/pairlist/test_pairlocks.py | 81 ++++++++++++++++ tests/rpc/test_rpc_apiserver.py | 6 +- tests/rpc/test_rpc_telegram.py | 6 +- tests/strategy/test_interface.py | 4 +- tests/test_freqtradebot.py | 3 +- tests/test_persistence.py | 49 +--------- 12 files changed, 216 insertions(+), 130 deletions(-) create mode 100644 freqtrade/persistence/pairlock_middleware.py create mode 100644 tests/pairlist/test_pairlocks.py diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 6112a599e..5a399801a 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -345,23 +345,23 @@ class FreqtradeBot: whitelist = copy.deepcopy(self.active_pair_whitelist) if not whitelist: logger.info("Active pair whitelist is empty.") - else: - # Remove pairs for currently opened trades from the whitelist - for trade in Trade.get_open_trades(): - if trade.pair in whitelist: - whitelist.remove(trade.pair) - logger.debug('Ignoring %s in pair whitelist', trade.pair) + return trades_created + # Remove pairs for currently opened trades from the whitelist + for trade in Trade.get_open_trades(): + if trade.pair in whitelist: + whitelist.remove(trade.pair) + logger.debug('Ignoring %s in pair whitelist', trade.pair) - if not whitelist: - logger.info("No currency pair in active pair whitelist, " - "but checking to sell open trades.") - else: - # Create entity and execute trade for each pair from whitelist - for pair in whitelist: - try: - trades_created += self.create_trade(pair) - except DependencyException as exception: - logger.warning('Unable to create trade for %s: %s', pair, exception) + if not whitelist: + logger.info("No currency pair in active pair whitelist, " + "but checking to sell open trades.") + return trades_created + # Create entity and execute trade for each pair from whitelist + for pair in whitelist: + try: + trades_created += self.create_trade(pair) + except DependencyException as exception: + logger.warning('Unable to create trade for %s: %s', pair, exception) if not trades_created: logger.debug("Found no buy signals for whitelisted currencies. " diff --git a/freqtrade/persistence/__init__.py b/freqtrade/persistence/__init__.py index e184e7d9a..35f2bc406 100644 --- a/freqtrade/persistence/__init__.py +++ b/freqtrade/persistence/__init__.py @@ -1,4 +1,4 @@ # flake8: noqa: F401 -from freqtrade.persistence.models import (Order, PairLock, Trade, clean_dry_run_db, cleanup_db, - init_db) +from freqtrade.persistence.models import Order, Trade, clean_dry_run_db, cleanup_db, init_db +from freqtrade.persistence.pairlock_middleware import PairLocks diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 22efed78d..62b033bdf 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -684,19 +684,7 @@ class PairLock(_DECL_BASE): f'lock_end_time={lock_end_time})') @staticmethod - def lock_pair(pair: str, until: datetime, reason: str = None) -> None: - lock = PairLock( - pair=pair, - lock_time=datetime.now(timezone.utc), - lock_end_time=until, - reason=reason, - active=True - ) - PairLock.session.add(lock) - PairLock.session.flush() - - @staticmethod - def get_pair_locks(pair: Optional[str], now: Optional[datetime] = None) -> List['PairLock']: + def query_pair_locks(pair: Optional[str], now: Optional[datetime] = None) -> Query: """ Get all locks for this pair :param pair: Pair to check for. Returns all current locks if pair is empty @@ -713,41 +701,7 @@ class PairLock(_DECL_BASE): filters.append(PairLock.pair == pair) return PairLock.query.filter( *filters - ).all() - - @staticmethod - def unlock_pair(pair: str, now: Optional[datetime] = None) -> None: - """ - Release all locks for this pair. - :param pair: Pair to unlock - :param now: Datetime object (generated via datetime.now(timezone.utc)). - defaults to datetime.utcnow() - """ - if not now: - now = datetime.now(timezone.utc) - - logger.info(f"Releasing all locks for {pair}.") - locks = PairLock.get_pair_locks(pair, now) - for lock in locks: - lock.active = False - PairLock.session.flush() - - @staticmethod - def is_pair_locked(pair: str, now: Optional[datetime] = None) -> bool: - """ - :param pair: Pair to check for - :param now: Datetime object (generated via datetime.now(timezone.utc)). - defaults to datetime.utcnow() - """ - if not now: - now = datetime.now(timezone.utc) - - return PairLock.query.filter( - PairLock.pair == pair, - func.datetime(PairLock.lock_end_time) >= now, - # Only active locks - PairLock.active.is_(True), - ).first() is not None + ) def to_json(self) -> Dict[str, Any]: return { diff --git a/freqtrade/persistence/pairlock_middleware.py b/freqtrade/persistence/pairlock_middleware.py new file mode 100644 index 000000000..ca2c31e36 --- /dev/null +++ b/freqtrade/persistence/pairlock_middleware.py @@ -0,0 +1,97 @@ + + +import logging +from datetime import datetime, timezone +from typing import List, Optional + +from freqtrade.persistence.models import PairLock + + +logger = logging.getLogger(__name__) + + +class PairLocks(): + """ + Pairlocks intermediate class + + """ + + use_db = True + locks: List[PairLock] = [] + + @staticmethod + def lock_pair(pair: str, until: datetime, reason: str = None) -> None: + lock = PairLock( + pair=pair, + lock_time=datetime.now(timezone.utc), + lock_end_time=until, + reason=reason, + active=True + ) + if PairLocks.use_db: + PairLock.session.add(lock) + PairLock.session.flush() + else: + PairLocks.locks.append(lock) + + @staticmethod + def get_pair_locks(pair: Optional[str], now: Optional[datetime] = None) -> List[PairLock]: + """ + Get all currently active locks for this pair + :param pair: Pair to check for. Returns all current locks if pair is empty + :param now: Datetime object (generated via datetime.now(timezone.utc)). + defaults to datetime.utcnow() + """ + if not now: + now = datetime.now(timezone.utc) + + if PairLocks.use_db: + return PairLock.query_pair_locks(pair, now).all() + else: + locks = [lock for lock in PairLocks.locks if ( + lock.lock_end_time > now + and lock.active is True + and (pair is None or lock.pair == pair) + )] + return locks + + @staticmethod + def unlock_pair(pair: str, now: Optional[datetime] = None) -> None: + """ + Release all locks for this pair. + :param pair: Pair to unlock + :param now: Datetime object (generated via datetime.now(timezone.utc)). + defaults to datetime.now(timezone.utc) + """ + if not now: + now = datetime.now(timezone.utc) + + logger.info(f"Releasing all locks for {pair}.") + locks = PairLocks.get_pair_locks(pair, now) + for lock in locks: + lock.active = False + if PairLocks.use_db: + PairLock.session.flush() + + @staticmethod + def is_global_lock(now: Optional[datetime] = None) -> bool: + """ + :param now: Datetime object (generated via datetime.now(timezone.utc)). + defaults to datetime.now(timezone.utc) + """ + if not now: + now = datetime.now(timezone.utc) + + return len(PairLocks.get_pair_locks('*', now)) > 0 + + @staticmethod + def is_pair_locked(pair: str, now: Optional[datetime] = None) -> bool: + """ + :param pair: Pair to check for + :param now: Datetime object (generated via datetime.now(timezone.utc)). + defaults to datetime.now(timezone.utc) + """ + if not now: + now = datetime.now(timezone.utc) + + return len(PairLocks.get_pair_locks(pair, now)) > 0 or PairLocks.is_global_lock(now) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index de8bcaefb..10aaf56fa 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -19,7 +19,7 @@ from freqtrade.exceptions import ExchangeError, PricingError from freqtrade.exchange import timeframe_to_minutes, timeframe_to_msecs from freqtrade.loggers import bufferHandler from freqtrade.misc import shorten_date -from freqtrade.persistence import PairLock, Trade +from freqtrade.persistence import PairLocks, Trade from freqtrade.rpc.fiat_convert import CryptoToFiatConverter from freqtrade.state import State from freqtrade.strategy.interface import SellType @@ -604,7 +604,7 @@ class RPC: if self._freqtrade.state != State.RUNNING: raise RPCException('trader is not running') - locks = PairLock.get_pair_locks(None) + locks = PairLocks.get_pair_locks(None) return { 'lock_count': len(locks), 'locks': [lock.to_json() for lock in locks] diff --git a/freqtrade/strategy/interface.py b/freqtrade/strategy/interface.py index e6256cafb..1c6aa535d 100644 --- a/freqtrade/strategy/interface.py +++ b/freqtrade/strategy/interface.py @@ -17,7 +17,7 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.exceptions import OperationalException, StrategyError from freqtrade.exchange import timeframe_to_minutes from freqtrade.exchange.exchange import timeframe_to_next_date -from freqtrade.persistence import PairLock, Trade +from freqtrade.persistence import PairLocks, Trade from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from freqtrade.wallets import Wallets @@ -288,7 +288,7 @@ class IStrategy(ABC): Needs to be timezone aware `datetime.now(timezone.utc)` :param reason: Optional string explaining why the pair was locked. """ - PairLock.lock_pair(pair, until, reason) + PairLocks.lock_pair(pair, until, reason) def unlock_pair(self, pair: str) -> None: """ @@ -297,7 +297,7 @@ class IStrategy(ABC): manually from within the strategy, to allow an easy way to unlock pairs. :param pair: Unlock pair to allow trading again """ - PairLock.unlock_pair(pair, datetime.now(timezone.utc)) + PairLocks.unlock_pair(pair, datetime.now(timezone.utc)) def is_pair_locked(self, pair: str, candle_date: datetime = None) -> bool: """ @@ -312,10 +312,10 @@ class IStrategy(ABC): if not candle_date: # Simple call ... - return PairLock.is_pair_locked(pair, candle_date) + return PairLocks.is_pair_locked(pair, candle_date) else: lock_time = timeframe_to_next_date(self.timeframe, candle_date) - return PairLock.is_pair_locked(pair, lock_time) + return PairLocks.is_pair_locked(pair, lock_time) def analyze_ticker(self, dataframe: DataFrame, metadata: dict) -> DataFrame: """ diff --git a/tests/pairlist/test_pairlocks.py b/tests/pairlist/test_pairlocks.py new file mode 100644 index 000000000..3ed7d643e --- /dev/null +++ b/tests/pairlist/test_pairlocks.py @@ -0,0 +1,81 @@ +from datetime import datetime, timedelta, timezone + +import arrow +import pytest + +from freqtrade.persistence import PairLocks +from freqtrade.persistence.models import PairLock + + +@pytest.mark.parametrize('use_db', (False, True)) +@pytest.mark.usefixtures("init_persistence") +def test_PairLocks(use_db): + # No lock should be present + if use_db: + assert len(PairLock.query.all()) == 0 + else: + PairLocks.use_db = False + + assert PairLocks.use_db == use_db + + pair = 'ETH/BTC' + assert not PairLocks.is_pair_locked(pair) + PairLocks.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime) + # ETH/BTC locked for 4 minutes + assert PairLocks.is_pair_locked(pair) + + # XRP/BTC should not be locked now + pair = 'XRP/BTC' + assert not PairLocks.is_pair_locked(pair) + # Unlocking a pair that's not locked should not raise an error + PairLocks.unlock_pair(pair) + + PairLocks.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime) + assert PairLocks.is_pair_locked(pair) + + # Get both locks from above + locks = PairLocks.get_pair_locks(None) + assert len(locks) == 2 + + # Unlock original pair + pair = 'ETH/BTC' + PairLocks.unlock_pair(pair) + assert not PairLocks.is_pair_locked(pair) + assert not PairLocks.is_global_lock() + + pair = 'BTC/USDT' + # Lock until 14:30 + lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=timezone.utc) + PairLocks.lock_pair(pair, lock_time) + + assert not PairLocks.is_pair_locked(pair) + assert PairLocks.is_pair_locked(pair, lock_time + timedelta(minutes=-10)) + assert not PairLocks.is_global_lock(lock_time + timedelta(minutes=-10)) + assert PairLocks.is_pair_locked(pair, lock_time + timedelta(minutes=-50)) + assert not PairLocks.is_global_lock(lock_time + timedelta(minutes=-50)) + + # Should not be locked after time expired + assert not PairLocks.is_pair_locked(pair, lock_time + timedelta(minutes=10)) + + locks = PairLocks.get_pair_locks(pair, lock_time + timedelta(minutes=-2)) + assert len(locks) == 1 + assert 'PairLock' in str(locks[0]) + + # Unlock all + PairLocks.unlock_pair(pair, lock_time + timedelta(minutes=-2)) + assert not PairLocks.is_global_lock(lock_time + timedelta(minutes=-50)) + + # Global lock + PairLocks.lock_pair('*', lock_time) + assert PairLocks.is_global_lock(lock_time + timedelta(minutes=-50)) + # Global lock also locks every pair seperately + assert PairLocks.is_pair_locked(pair, lock_time + timedelta(minutes=-50)) + assert PairLocks.is_pair_locked('XRP/USDT', lock_time + timedelta(minutes=-50)) + + if use_db: + assert len(PairLock.query.all()) > 0 + else: + # Nothing was pushed to the database + assert len(PairLock.query.all()) == 0 + # Reset use-db variable + PairLocks.use_db = True diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 34e959875..0dd15a777 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -12,7 +12,7 @@ from requests.auth import _basic_auth_str from freqtrade.__init__ import __version__ from freqtrade.loggers import setup_logging, setup_logging_pre -from freqtrade.persistence import PairLock, Trade +from freqtrade.persistence import PairLocks, Trade from freqtrade.rpc.api_server import BASE_URI, ApiServer from freqtrade.state import State from tests.conftest import create_mock_trades, get_patched_freqtradebot, log_has, patch_get_signal @@ -339,8 +339,8 @@ def test_api_locks(botclient): assert rc.json['lock_count'] == 0 assert rc.json['lock_count'] == len(rc.json['locks']) - PairLock.lock_pair('ETH/BTC', datetime.utcnow() + timedelta(minutes=4), 'randreason') - PairLock.lock_pair('XRP/BTC', datetime.utcnow() + timedelta(minutes=20), 'deadbeef') + PairLocks.lock_pair('ETH/BTC', datetime.utcnow() + timedelta(minutes=4), 'randreason') + PairLocks.lock_pair('XRP/BTC', datetime.utcnow() + timedelta(minutes=20), 'deadbeef') rc = client_get(client, f"{BASE_URI}/locks") assert_response(rc) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index c412313ad..f1246005f 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -18,7 +18,7 @@ from freqtrade.constants import CANCEL_REASON from freqtrade.edge import PairInfo from freqtrade.freqtradebot import FreqtradeBot from freqtrade.loggers import setup_logging -from freqtrade.persistence import PairLock, Trade +from freqtrade.persistence import PairLocks, Trade from freqtrade.rpc import RPCMessageType from freqtrade.rpc.telegram import Telegram, authorized_only from freqtrade.state import State @@ -1047,8 +1047,8 @@ def test_telegram_lock_handle(default_conf, update, ticker, fee, mocker) -> None msg_mock.reset_mock() freqtradebot.state = State.RUNNING - PairLock.lock_pair('ETH/BTC', arrow.utcnow().shift(minutes=4).datetime, 'randreason') - PairLock.lock_pair('XRP/BTC', arrow.utcnow().shift(minutes=20).datetime, 'deadbeef') + PairLocks.lock_pair('ETH/BTC', arrow.utcnow().shift(minutes=4).datetime, 'randreason') + PairLocks.lock_pair('XRP/BTC', arrow.utcnow().shift(minutes=20).datetime, 'deadbeef') telegram._locks(update=update, context=MagicMock()) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index dc5cd47e7..96d4882da 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -11,7 +11,7 @@ from freqtrade.configuration import TimeRange from freqtrade.data.dataprovider import DataProvider from freqtrade.data.history import load_data from freqtrade.exceptions import StrategyError -from freqtrade.persistence import PairLock, Trade +from freqtrade.persistence import PairLocks, Trade from freqtrade.resolvers import StrategyResolver from freqtrade.strategy.strategy_wrapper import strategy_safe_wrapper from tests.conftest import log_has, log_has_re @@ -364,7 +364,7 @@ def test_is_pair_locked(default_conf): default_conf.update({'strategy': 'DefaultStrategy'}) strategy = StrategyResolver.load_strategy(default_conf) # No lock should be present - assert len(PairLock.query.all()) == 0 + assert len(PairLocks.get_pair_locks(None)) == 0 pair = 'ETH/BTC' assert not strategy.is_pair_locked(pair) diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 2a1b0c3cc..29df9c012 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -15,7 +15,8 @@ from freqtrade.exceptions import (DependencyException, ExchangeError, Insufficie InvalidOrderException, OperationalException, PricingError, TemporaryError) from freqtrade.freqtradebot import FreqtradeBot -from freqtrade.persistence import Order, PairLock, Trade +from freqtrade.persistence import Order, PairLocks, Trade +from freqtrade.persistence.models import PairLock from freqtrade.rpc import RPCMessageType from freqtrade.state import RunMode, State from freqtrade.strategy.interface import SellCheckTuple, SellType diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 243da3396..4216565ac 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -1,6 +1,5 @@ # pragma pylint: disable=missing-docstring, C0103 import logging -from datetime import datetime, timedelta, timezone from unittest.mock import MagicMock import arrow @@ -9,7 +8,7 @@ from sqlalchemy import create_engine from freqtrade import constants from freqtrade.exceptions import DependencyException, OperationalException -from freqtrade.persistence import Order, PairLock, Trade, clean_dry_run_db, init_db +from freqtrade.persistence import Order, Trade, clean_dry_run_db, init_db from tests.conftest import create_mock_trades, log_has, log_has_re @@ -1159,49 +1158,3 @@ def test_select_order(fee): assert order.ft_order_side == 'stoploss' order = trades[4].select_order('sell', False) assert order is None - - -@pytest.mark.usefixtures("init_persistence") -def test_PairLock(default_conf): - # No lock should be present - assert len(PairLock.query.all()) == 0 - - pair = 'ETH/BTC' - assert not PairLock.is_pair_locked(pair) - PairLock.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime) - # ETH/BTC locked for 4 minutes - assert PairLock.is_pair_locked(pair) - - # XRP/BTC should not be locked now - pair = 'XRP/BTC' - assert not PairLock.is_pair_locked(pair) - # Unlocking a pair that's not locked should not raise an error - PairLock.unlock_pair(pair) - - PairLock.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime) - assert PairLock.is_pair_locked(pair) - - # Get both locks from above - locks = PairLock.get_pair_locks(None) - assert len(locks) == 2 - - # Unlock original pair - pair = 'ETH/BTC' - PairLock.unlock_pair(pair) - assert not PairLock.is_pair_locked(pair) - - pair = 'BTC/USDT' - # Lock until 14:30 - lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=timezone.utc) - PairLock.lock_pair(pair, lock_time) - - assert not PairLock.is_pair_locked(pair) - assert PairLock.is_pair_locked(pair, lock_time + timedelta(minutes=-10)) - assert PairLock.is_pair_locked(pair, lock_time + timedelta(minutes=-50)) - - # Should not be locked after time expired - assert not PairLock.is_pair_locked(pair, lock_time + timedelta(minutes=10)) - - locks = PairLock.get_pair_locks(pair, lock_time + timedelta(minutes=-2)) - assert len(locks) == 1 - assert 'PairLock' in str(locks[0]) From 9c54c9a2bfdec85369c02d93d649f45e130ba72c Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 26 Oct 2020 07:36:25 +0100 Subject: [PATCH 3353/3421] Use correct timezone for tests --- tests/rpc/test_rpc_apiserver.py | 6 +++--- tests/strategy/test_interface.py | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 0dd15a777..7b4e2e153 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -2,7 +2,7 @@ Unit test file for rpc/api_server.py """ -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from pathlib import Path from unittest.mock import ANY, MagicMock, PropertyMock @@ -339,8 +339,8 @@ def test_api_locks(botclient): assert rc.json['lock_count'] == 0 assert rc.json['lock_count'] == len(rc.json['locks']) - PairLocks.lock_pair('ETH/BTC', datetime.utcnow() + timedelta(minutes=4), 'randreason') - PairLocks.lock_pair('XRP/BTC', datetime.utcnow() + timedelta(minutes=20), 'deadbeef') + PairLocks.lock_pair('ETH/BTC', datetime.now(timezone.utc) + timedelta(minutes=4), 'randreason') + PairLocks.lock_pair('XRP/BTC', datetime.now(timezone.utc) + timedelta(minutes=20), 'deadbeef') rc = client_get(client, f"{BASE_URI}/locks") assert_response(rc) diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index 96d4882da..e87fb7182 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -362,13 +362,14 @@ def test__analyze_ticker_internal_skip_analyze(ohlcv_history, mocker, caplog) -> @pytest.mark.usefixtures("init_persistence") def test_is_pair_locked(default_conf): default_conf.update({'strategy': 'DefaultStrategy'}) + PairLocks.timeframe = default_conf['timeframe'] strategy = StrategyResolver.load_strategy(default_conf) # No lock should be present assert len(PairLocks.get_pair_locks(None)) == 0 pair = 'ETH/BTC' assert not strategy.is_pair_locked(pair) - strategy.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime) + strategy.lock_pair(pair, arrow.now(timezone.utc).shift(minutes=4).datetime) # ETH/BTC locked for 4 minutes assert strategy.is_pair_locked(pair) From 6c913fa6179e93ba922a6a7ef62fec839391d485 Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 26 Oct 2020 07:37:07 +0100 Subject: [PATCH 3354/3421] Fix locking - should round before storing to have a consistent picture --- docs/strategy-customization.md | 2 +- freqtrade/freqtradebot.py | 18 ++++++++++-------- freqtrade/persistence/models.py | 2 +- freqtrade/persistence/pairlock_middleware.py | 7 +++++-- tests/strategy/test_interface.py | 3 ++- tests/test_freqtradebot.py | 2 +- 6 files changed, 20 insertions(+), 14 deletions(-) diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index c0506203f..6c7d78864 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -704,7 +704,7 @@ To verify if a pair is currently locked, use `self.is_pair_locked(pair)`. Locked pairs will always be rounded up to the next candle. So assuming a `5m` timeframe, a lock with `until` set to 10:18 will lock the pair until the candle from 10:15-10:20 will be finished. !!! Warning - Locking pairs is not functioning during backtesting. + Locking pairs is not available during backtesting. #### Pair locking example diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index 5a399801a..ae46d335b 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -4,7 +4,7 @@ Freqtrade is the main module of this bot. It contains the class Freqtrade() import copy import logging import traceback -from datetime import datetime +from datetime import datetime, timezone from math import isclose from threading import Lock from typing import Any, Dict, List, Optional @@ -19,10 +19,10 @@ from freqtrade.data.dataprovider import DataProvider from freqtrade.edge import Edge from freqtrade.exceptions import (DependencyException, ExchangeError, InsufficientFundsError, InvalidOrderException, PricingError) -from freqtrade.exchange import timeframe_to_minutes, timeframe_to_next_date +from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import safe_value_fallback, safe_value_fallback2 from freqtrade.pairlist.pairlistmanager import PairListManager -from freqtrade.persistence import Order, Trade, cleanup_db, init_db +from freqtrade.persistence import Order, Trade, cleanup_db, init_db, PairLocks from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.rpc import RPCManager, RPCMessageType from freqtrade.state import State @@ -72,6 +72,8 @@ class FreqtradeBot: self.wallets = Wallets(self.config, self.exchange) + PairLocks.timeframe = self.config['timeframe'] + self.pairlists = PairListManager(self.exchange, self.config) self.dataprovider = DataProvider(self.config, self.exchange, self.pairlists) @@ -363,9 +365,9 @@ class FreqtradeBot: except DependencyException as exception: logger.warning('Unable to create trade for %s: %s', pair, exception) - if not trades_created: - logger.debug("Found no buy signals for whitelisted currencies. " - "Trying again...") + if not trades_created: + logger.debug("Found no buy signals for whitelisted currencies. " + "Trying again...") return trades_created @@ -937,7 +939,7 @@ class FreqtradeBot: self.update_trade_state(trade, trade.stoploss_order_id, stoploss_order, stoploss_order=True) # Lock pair for one candle to prevent immediate rebuys - self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['timeframe']), + self.strategy.lock_pair(trade.pair, datetime.now(timezone.utc), reason='Auto lock') self._notify_sell(trade, "stoploss") return True @@ -1264,7 +1266,7 @@ class FreqtradeBot: Trade.session.flush() # Lock pair for one candle to prevent immediate rebuys - self.strategy.lock_pair(trade.pair, timeframe_to_next_date(self.config['timeframe']), + self.strategy.lock_pair(trade.pair, datetime.now(timezone.utc), reason='Auto lock') self._notify_sell(trade, order_type) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 62b033bdf..3c62a7268 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -694,7 +694,7 @@ class PairLock(_DECL_BASE): if not now: now = datetime.now(timezone.utc) - filters = [func.datetime(PairLock.lock_end_time) >= now, + filters = [PairLock.lock_end_time > now, # Only active locks PairLock.active.is_(True), ] if pair: diff --git a/freqtrade/persistence/pairlock_middleware.py b/freqtrade/persistence/pairlock_middleware.py index ca2c31e36..c1acc2423 100644 --- a/freqtrade/persistence/pairlock_middleware.py +++ b/freqtrade/persistence/pairlock_middleware.py @@ -5,6 +5,7 @@ from datetime import datetime, timezone from typing import List, Optional from freqtrade.persistence.models import PairLock +from freqtrade.exchange import timeframe_to_next_date logger = logging.getLogger(__name__) @@ -19,12 +20,14 @@ class PairLocks(): use_db = True locks: List[PairLock] = [] + timeframe: str = '' + @staticmethod def lock_pair(pair: str, until: datetime, reason: str = None) -> None: lock = PairLock( pair=pair, lock_time=datetime.now(timezone.utc), - lock_end_time=until, + lock_end_time=timeframe_to_next_date(PairLocks.timeframe, until), reason=reason, active=True ) @@ -49,7 +52,7 @@ class PairLocks(): return PairLock.query_pair_locks(pair, now).all() else: locks = [lock for lock in PairLocks.locks if ( - lock.lock_end_time > now + lock.lock_end_time >= now and lock.active is True and (pair is None or lock.pair == pair) )] diff --git a/tests/strategy/test_interface.py b/tests/strategy/test_interface.py index e87fb7182..7cf9a0624 100644 --- a/tests/strategy/test_interface.py +++ b/tests/strategy/test_interface.py @@ -388,7 +388,8 @@ def test_is_pair_locked(default_conf): pair = 'BTC/USDT' # Lock until 14:30 lock_time = datetime(2020, 5, 1, 14, 30, 0, tzinfo=timezone.utc) - strategy.lock_pair(pair, lock_time) + # Subtract 2 seconds, as locking rounds up to the next candle. + strategy.lock_pair(pair, lock_time - timedelta(seconds=2)) assert not strategy.is_pair_locked(pair) # latest candle is from 14:20, lock goes to 14:30 diff --git a/tests/test_freqtradebot.py b/tests/test_freqtradebot.py index 29df9c012..1f5b3ecaa 100644 --- a/tests/test_freqtradebot.py +++ b/tests/test_freqtradebot.py @@ -15,7 +15,7 @@ from freqtrade.exceptions import (DependencyException, ExchangeError, Insufficie InvalidOrderException, OperationalException, PricingError, TemporaryError) from freqtrade.freqtradebot import FreqtradeBot -from freqtrade.persistence import Order, PairLocks, Trade +from freqtrade.persistence import Order, Trade from freqtrade.persistence.models import PairLock from freqtrade.rpc import RPCMessageType from freqtrade.state import RunMode, State From 5c8779b1550ab2cd8ad4649420833e5c7fb592e7 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 27 Oct 2020 08:09:18 +0100 Subject: [PATCH 3355/3421] Sort imports --- freqtrade/freqtradebot.py | 2 +- freqtrade/persistence/pairlock_middleware.py | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ae46d335b..7416d8236 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -22,7 +22,7 @@ from freqtrade.exceptions import (DependencyException, ExchangeError, Insufficie from freqtrade.exchange import timeframe_to_minutes from freqtrade.misc import safe_value_fallback, safe_value_fallback2 from freqtrade.pairlist.pairlistmanager import PairListManager -from freqtrade.persistence import Order, Trade, cleanup_db, init_db, PairLocks +from freqtrade.persistence import Order, PairLocks, Trade, cleanup_db, init_db from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.rpc import RPCManager, RPCMessageType from freqtrade.state import State diff --git a/freqtrade/persistence/pairlock_middleware.py b/freqtrade/persistence/pairlock_middleware.py index c1acc2423..44fc228f6 100644 --- a/freqtrade/persistence/pairlock_middleware.py +++ b/freqtrade/persistence/pairlock_middleware.py @@ -1,11 +1,9 @@ - - import logging from datetime import datetime, timezone from typing import List, Optional -from freqtrade.persistence.models import PairLock from freqtrade.exchange import timeframe_to_next_date +from freqtrade.persistence.models import PairLock logger = logging.getLogger(__name__) @@ -13,8 +11,9 @@ logger = logging.getLogger(__name__) class PairLocks(): """ - Pairlocks intermediate class - + Pairlocks middleware class + Abstracts the database layer away so it becomes optional - which will be necessary to support + backtesting and hyperopt in the future. """ use_db = True @@ -43,7 +42,7 @@ class PairLocks(): Get all currently active locks for this pair :param pair: Pair to check for. Returns all current locks if pair is empty :param now: Datetime object (generated via datetime.now(timezone.utc)). - defaults to datetime.utcnow() + defaults to datetime.now(timezone.utc) """ if not now: now = datetime.now(timezone.utc) From 72f61f4682e926a33018e6767b005a1bd78236c6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 27 Oct 2020 10:08:24 +0100 Subject: [PATCH 3356/3421] Remove optional, now is not optional --- freqtrade/persistence/models.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 3c62a7268..7e6d967c1 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -684,15 +684,12 @@ class PairLock(_DECL_BASE): f'lock_end_time={lock_end_time})') @staticmethod - def query_pair_locks(pair: Optional[str], now: Optional[datetime] = None) -> Query: + def query_pair_locks(pair: Optional[str], now: datetime) -> Query: """ Get all locks for this pair :param pair: Pair to check for. Returns all current locks if pair is empty :param now: Datetime object (generated via datetime.now(timezone.utc)). - defaults to datetime.utcnow() """ - if not now: - now = datetime.now(timezone.utc) filters = [PairLock.lock_end_time > now, # Only active locks From 28d6c3419b90c2dad1105f6631a42903cba41edc Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 27 Oct 2020 20:01:23 +0100 Subject: [PATCH 3357/3421] Fix random test failure in pairlocks --- tests/pairlist/test_pairlocks.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/pairlist/test_pairlocks.py b/tests/pairlist/test_pairlocks.py index 3ed7d643e..0b6b89717 100644 --- a/tests/pairlist/test_pairlocks.py +++ b/tests/pairlist/test_pairlocks.py @@ -10,6 +10,7 @@ from freqtrade.persistence.models import PairLock @pytest.mark.parametrize('use_db', (False, True)) @pytest.mark.usefixtures("init_persistence") def test_PairLocks(use_db): + PairLocks.timeframe = '5m' # No lock should be present if use_db: assert len(PairLock.query.all()) == 0 From 5cb3735a57448c6fd83d9ffcb290f44d0e8616b6 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 28 Oct 2020 07:58:55 +0100 Subject: [PATCH 3358/3421] Improve error when hyperopt-loss-function is missing --- freqtrade/commands/cli_options.py | 4 ++-- freqtrade/constants.py | 3 +++ freqtrade/resolvers/hyperopt_resolver.py | 9 ++++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 8ea945ae7..4769bccde 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -4,6 +4,7 @@ Definition of cli arguments used in arguments.py from argparse import ArgumentTypeError from freqtrade import __version__, constants +from freqtrade.constants import HYPEROPT_LOSS_BUILTIN def check_int_positive(value: str) -> int: @@ -257,8 +258,7 @@ AVAILABLE_CLI_OPTIONS = { help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). ' 'Different functions can generate completely different results, ' 'since the target for optimization is different. Built-in Hyperopt-loss-functions are: ' - 'ShortTradeDurHyperOptLoss, OnlyProfitHyperOptLoss, SharpeHyperOptLoss, ' - 'SharpeHyperOptLossDaily, SortinoHyperOptLoss, SortinoHyperOptLossDaily.', + f'{", ".join(HYPEROPT_LOSS_BUILTIN)}', metavar='NAME', ), "hyperoptexportfilename": Arg( diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 8e92d3ed8..dc5384f6f 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -20,6 +20,9 @@ REQUIRED_ORDERTYPES = ['buy', 'sell', 'stoploss', 'stoploss_on_exchange'] ORDERBOOK_SIDES = ['ask', 'bid'] ORDERTYPE_POSSIBILITIES = ['limit', 'market'] ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc'] +HYPEROPT_LOSS_BUILTIN = ['ShortTradeDurHyperOptLoss', 'OnlyProfitHyperOptLoss', + 'SharpeHyperOptLoss', 'SharpeHyperOptLossDaily', + 'SortinoHyperOptLoss', 'SortinoHyperOptLossDaily'] AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'AgeFilter', 'PrecisionFilter', 'PriceFilter', 'ShuffleFilter', 'SpreadFilter'] diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py index 328dc488b..8327a4d13 100644 --- a/freqtrade/resolvers/hyperopt_resolver.py +++ b/freqtrade/resolvers/hyperopt_resolver.py @@ -7,7 +7,7 @@ import logging from pathlib import Path from typing import Dict -from freqtrade.constants import USERPATH_HYPEROPTS +from freqtrade.constants import HYPEROPT_LOSS_BUILTIN, USERPATH_HYPEROPTS from freqtrade.exceptions import OperationalException from freqtrade.optimize.hyperopt_interface import IHyperOpt from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss @@ -72,8 +72,11 @@ class HyperOptLossResolver(IResolver): hyperoptloss_name = config.get('hyperopt_loss') if not hyperoptloss_name: - raise OperationalException("No Hyperopt loss set. Please use `--hyperopt-loss` to " - "specify the Hyperopt-Loss class to use.") + raise OperationalException( + "No Hyperopt loss set. Please use `--hyperopt-loss` to " + "specify the Hyperopt-Loss class to use.\n" + f"Built-in Hyperopt-loss-functions are: {', '.join(HYPEROPT_LOSS_BUILTIN)}" + ) hyperoptloss = HyperOptLossResolver.load_object(hyperoptloss_name, config, kwargs={}, extra_dir=config.get('hyperopt_path')) From e1e2829ef3b5b1cbd77cac106039ceddda8ab621 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 28 Oct 2020 14:36:19 +0100 Subject: [PATCH 3359/3421] Improve and refactor hyperopt tests --- tests/optimize/conftest.py | 51 +++++++ tests/optimize/test_hyperopt.py | 206 +--------------------------- tests/optimize/test_hyperoptloss.py | 165 ++++++++++++++++++++++ 3 files changed, 219 insertions(+), 203 deletions(-) create mode 100644 tests/optimize/conftest.py create mode 100644 tests/optimize/test_hyperoptloss.py diff --git a/tests/optimize/conftest.py b/tests/optimize/conftest.py new file mode 100644 index 000000000..f06b0ecd3 --- /dev/null +++ b/tests/optimize/conftest.py @@ -0,0 +1,51 @@ +from copy import deepcopy +from datetime import datetime +from pathlib import Path + +import pandas as pd +import pytest + +from freqtrade.optimize.hyperopt import Hyperopt +from freqtrade.strategy.interface import SellType +from tests.conftest import patch_exchange + + +@pytest.fixture(scope='function') +def hyperopt_conf(default_conf): + hyperconf = deepcopy(default_conf) + hyperconf.update({ + 'hyperopt': 'DefaultHyperOpt', + 'hyperopt_loss': 'ShortTradeDurHyperOptLoss', + 'hyperopt_path': str(Path(__file__).parent / 'hyperopts'), + 'epochs': 1, + 'timerange': None, + 'spaces': ['default'], + 'hyperopt_jobs': 1, + }) + return hyperconf + + +@pytest.fixture(scope='function') +def hyperopt(hyperopt_conf, mocker): + + patch_exchange(mocker) + return Hyperopt(hyperopt_conf) + + +@pytest.fixture(scope='function') +def hyperopt_results(): + return pd.DataFrame( + { + 'pair': ['ETH/BTC', 'ETH/BTC', 'ETH/BTC'], + 'profit_percent': [-0.1, 0.2, 0.3], + 'profit_abs': [-0.2, 0.4, 0.6], + 'trade_duration': [10, 30, 10], + 'sell_reason': [SellType.STOP_LOSS, SellType.ROI, SellType.ROI], + 'close_date': + [ + datetime(2019, 1, 1, 9, 26, 3, 478039), + datetime(2019, 2, 1, 9, 26, 3, 478039), + datetime(2019, 3, 1, 9, 26, 3, 478039) + ] + } + ) diff --git a/tests/optimize/test_hyperopt.py b/tests/optimize/test_hyperopt.py index 41ad6f5de..82be894d3 100644 --- a/tests/optimize/test_hyperopt.py +++ b/tests/optimize/test_hyperopt.py @@ -2,7 +2,6 @@ import locale import logging import re -from copy import deepcopy from datetime import datetime from pathlib import Path from typing import Dict, List @@ -17,58 +16,15 @@ from freqtrade import constants from freqtrade.commands.optimize_commands import setup_optimize_configuration, start_hyperopt from freqtrade.data.history import load_data from freqtrade.exceptions import DependencyException, OperationalException -from freqtrade.optimize.default_hyperopt_loss import ShortTradeDurHyperOptLoss from freqtrade.optimize.hyperopt import Hyperopt -from freqtrade.resolvers.hyperopt_resolver import HyperOptLossResolver, HyperOptResolver +from freqtrade.resolvers.hyperopt_resolver import HyperOptResolver from freqtrade.state import RunMode -from freqtrade.strategy.interface import SellType from tests.conftest import (get_args, log_has, log_has_re, patch_exchange, patched_configuration_load_config_file) from .hyperopts.default_hyperopt import DefaultHyperOpt -@pytest.fixture(scope='function') -def hyperopt_conf(default_conf): - hyperconf = deepcopy(default_conf) - hyperconf.update({ - 'hyperopt': 'DefaultHyperOpt', - 'hyperopt_loss': 'ShortTradeDurHyperOptLoss', - 'hyperopt_path': str(Path(__file__).parent / 'hyperopts'), - 'epochs': 1, - 'timerange': None, - 'spaces': ['default'], - 'hyperopt_jobs': 1, - }) - return hyperconf - - -@pytest.fixture(scope='function') -def hyperopt(hyperopt_conf, mocker): - - patch_exchange(mocker) - return Hyperopt(hyperopt_conf) - - -@pytest.fixture(scope='function') -def hyperopt_results(): - return pd.DataFrame( - { - 'pair': ['ETH/BTC', 'ETH/BTC', 'ETH/BTC'], - 'profit_percent': [-0.1, 0.2, 0.3], - 'profit_abs': [-0.2, 0.4, 0.6], - 'trade_duration': [10, 30, 10], - 'sell_reason': [SellType.STOP_LOSS, SellType.ROI, SellType.ROI], - 'close_date': - [ - datetime(2019, 1, 1, 9, 26, 3, 478039), - datetime(2019, 2, 1, 9, 26, 3, 478039), - datetime(2019, 3, 1, 9, 26, 3, 478039) - ] - } - ) - - # Functions for recurrent object patching def create_results(mocker, hyperopt, testdatadir) -> List[Dict]: """ @@ -230,32 +186,6 @@ def test_hyperoptresolver_noname(default_conf): HyperOptResolver.load_hyperopt(default_conf) -def test_hyperoptlossresolver_noname(default_conf): - with pytest.raises(OperationalException, - match="No Hyperopt loss set. Please use `--hyperopt-loss` to specify " - "the Hyperopt-Loss class to use."): - HyperOptLossResolver.load_hyperoptloss(default_conf) - - -def test_hyperoptlossresolver(mocker, default_conf) -> None: - - hl = ShortTradeDurHyperOptLoss - mocker.patch( - 'freqtrade.resolvers.hyperopt_resolver.HyperOptLossResolver.load_object', - MagicMock(return_value=hl) - ) - default_conf.update({'hyperopt_loss': 'SharpeHyperOptLossDaily'}) - x = HyperOptLossResolver.load_hyperoptloss(default_conf) - assert hasattr(x, "hyperopt_loss_function") - - -def test_hyperoptlossresolver_wrongname(default_conf) -> None: - default_conf.update({'hyperopt_loss': "NonExistingLossClass"}) - - with pytest.raises(OperationalException, match=r'Impossible to load HyperoptLoss.*'): - HyperOptLossResolver.load_hyperoptloss(default_conf) - - def test_start_not_installed(mocker, default_conf, import_fails) -> None: start_mock = MagicMock() patched_configuration_load_config_file(mocker, default_conf) @@ -269,7 +199,8 @@ def test_start_not_installed(mocker, default_conf, import_fails) -> None: '--hyperopt', 'DefaultHyperOpt', '--hyperopt-path', str(Path(__file__).parent / "hyperopts"), - '--epochs', '5' + '--epochs', '5', + '--hyperopt-loss', 'SharpeHyperOptLossDaily', ] pargs = get_args(args) @@ -337,137 +268,6 @@ def test_start_filelock(mocker, hyperopt_conf, caplog) -> None: assert log_has("Another running instance of freqtrade Hyperopt detected.", caplog) -def test_loss_calculation_prefer_correct_trade_count(hyperopt_conf, hyperopt_results) -> None: - hl = HyperOptLossResolver.load_hyperoptloss(hyperopt_conf) - correct = hl.hyperopt_loss_function(hyperopt_results, 600, - datetime(2019, 1, 1), datetime(2019, 5, 1)) - over = hl.hyperopt_loss_function(hyperopt_results, 600 + 100, - datetime(2019, 1, 1), datetime(2019, 5, 1)) - under = hl.hyperopt_loss_function(hyperopt_results, 600 - 100, - datetime(2019, 1, 1), datetime(2019, 5, 1)) - assert over > correct - assert under > correct - - -def test_loss_calculation_prefer_shorter_trades(hyperopt_conf, hyperopt_results) -> None: - resultsb = hyperopt_results.copy() - resultsb.loc[1, 'trade_duration'] = 20 - - hl = HyperOptLossResolver.load_hyperoptloss(hyperopt_conf) - longer = hl.hyperopt_loss_function(hyperopt_results, 100, - datetime(2019, 1, 1), datetime(2019, 5, 1)) - shorter = hl.hyperopt_loss_function(resultsb, 100, - datetime(2019, 1, 1), datetime(2019, 5, 1)) - assert shorter < longer - - -def test_loss_calculation_has_limited_profit(hyperopt_conf, hyperopt_results) -> None: - results_over = hyperopt_results.copy() - results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 - results_under = hyperopt_results.copy() - results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 - - hl = HyperOptLossResolver.load_hyperoptloss(hyperopt_conf) - correct = hl.hyperopt_loss_function(hyperopt_results, 600, - datetime(2019, 1, 1), datetime(2019, 5, 1)) - over = hl.hyperopt_loss_function(results_over, 600, - datetime(2019, 1, 1), datetime(2019, 5, 1)) - under = hl.hyperopt_loss_function(results_under, 600, - datetime(2019, 1, 1), datetime(2019, 5, 1)) - assert over < correct - assert under > correct - - -def test_sharpe_loss_prefers_higher_profits(default_conf, hyperopt_results) -> None: - results_over = hyperopt_results.copy() - results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 - results_under = hyperopt_results.copy() - results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 - - default_conf.update({'hyperopt_loss': 'SharpeHyperOptLossDaily'}) - hl = HyperOptLossResolver.load_hyperoptloss(default_conf) - correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - assert over < correct - assert under > correct - - -def test_sharpe_loss_daily_prefers_higher_profits(default_conf, hyperopt_results) -> None: - results_over = hyperopt_results.copy() - results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 - results_under = hyperopt_results.copy() - results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 - - default_conf.update({'hyperopt_loss': 'SharpeHyperOptLossDaily'}) - hl = HyperOptLossResolver.load_hyperoptloss(default_conf) - correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - assert over < correct - assert under > correct - - -def test_sortino_loss_prefers_higher_profits(default_conf, hyperopt_results) -> None: - results_over = hyperopt_results.copy() - results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 - results_under = hyperopt_results.copy() - results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 - - default_conf.update({'hyperopt_loss': 'SortinoHyperOptLoss'}) - hl = HyperOptLossResolver.load_hyperoptloss(default_conf) - correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - assert over < correct - assert under > correct - - -def test_sortino_loss_daily_prefers_higher_profits(default_conf, hyperopt_results) -> None: - results_over = hyperopt_results.copy() - results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 - results_under = hyperopt_results.copy() - results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 - - default_conf.update({'hyperopt_loss': 'SortinoHyperOptLossDaily'}) - hl = HyperOptLossResolver.load_hyperoptloss(default_conf) - correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - assert over < correct - assert under > correct - - -def test_onlyprofit_loss_prefers_higher_profits(default_conf, hyperopt_results) -> None: - results_over = hyperopt_results.copy() - results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 - results_under = hyperopt_results.copy() - results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 - - default_conf.update({'hyperopt_loss': 'OnlyProfitHyperOptLoss'}) - hl = HyperOptLossResolver.load_hyperoptloss(default_conf) - correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), - datetime(2019, 1, 1), datetime(2019, 5, 1)) - assert over < correct - assert under > correct - - def test_log_results_if_loss_improves(hyperopt, capsys) -> None: hyperopt.current_best_loss = 2 hyperopt.total_epochs = 2 diff --git a/tests/optimize/test_hyperoptloss.py b/tests/optimize/test_hyperoptloss.py new file mode 100644 index 000000000..63012ee48 --- /dev/null +++ b/tests/optimize/test_hyperoptloss.py @@ -0,0 +1,165 @@ +from datetime import datetime +from unittest.mock import MagicMock + +import pytest + +from freqtrade.exceptions import OperationalException +from freqtrade.optimize.default_hyperopt_loss import ShortTradeDurHyperOptLoss +from freqtrade.resolvers.hyperopt_resolver import HyperOptLossResolver + + +def test_hyperoptlossresolver_noname(default_conf): + with pytest.raises(OperationalException, + match="No Hyperopt loss set. Please use `--hyperopt-loss` to specify " + "the Hyperopt-Loss class to use."): + HyperOptLossResolver.load_hyperoptloss(default_conf) + + +def test_hyperoptlossresolver(mocker, default_conf) -> None: + + hl = ShortTradeDurHyperOptLoss + mocker.patch( + 'freqtrade.resolvers.hyperopt_resolver.HyperOptLossResolver.load_object', + MagicMock(return_value=hl) + ) + default_conf.update({'hyperopt_loss': 'SharpeHyperOptLossDaily'}) + x = HyperOptLossResolver.load_hyperoptloss(default_conf) + assert hasattr(x, "hyperopt_loss_function") + + +def test_hyperoptlossresolver_wrongname(default_conf) -> None: + default_conf.update({'hyperopt_loss': "NonExistingLossClass"}) + + with pytest.raises(OperationalException, match=r'Impossible to load HyperoptLoss.*'): + HyperOptLossResolver.load_hyperoptloss(default_conf) + + +def test_loss_calculation_prefer_correct_trade_count(hyperopt_conf, hyperopt_results) -> None: + hl = HyperOptLossResolver.load_hyperoptloss(hyperopt_conf) + correct = hl.hyperopt_loss_function(hyperopt_results, 600, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(hyperopt_results, 600 + 100, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(hyperopt_results, 600 - 100, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + assert over > correct + assert under > correct + + +def test_loss_calculation_prefer_shorter_trades(hyperopt_conf, hyperopt_results) -> None: + resultsb = hyperopt_results.copy() + resultsb.loc[1, 'trade_duration'] = 20 + + hl = HyperOptLossResolver.load_hyperoptloss(hyperopt_conf) + longer = hl.hyperopt_loss_function(hyperopt_results, 100, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + shorter = hl.hyperopt_loss_function(resultsb, 100, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + assert shorter < longer + + +def test_loss_calculation_has_limited_profit(hyperopt_conf, hyperopt_results) -> None: + results_over = hyperopt_results.copy() + results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 + results_under = hyperopt_results.copy() + results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 + + hl = HyperOptLossResolver.load_hyperoptloss(hyperopt_conf) + correct = hl.hyperopt_loss_function(hyperopt_results, 600, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(results_over, 600, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(results_under, 600, + datetime(2019, 1, 1), datetime(2019, 5, 1)) + assert over < correct + assert under > correct + + +def test_sharpe_loss_prefers_higher_profits(default_conf, hyperopt_results) -> None: + results_over = hyperopt_results.copy() + results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 + results_under = hyperopt_results.copy() + results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 + + default_conf.update({'hyperopt_loss': 'SharpeHyperOptLoss'}) + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) + correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + assert over < correct + assert under > correct + + +def test_sharpe_loss_daily_prefers_higher_profits(default_conf, hyperopt_results) -> None: + results_over = hyperopt_results.copy() + results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 + results_under = hyperopt_results.copy() + results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 + + default_conf.update({'hyperopt_loss': 'SharpeHyperOptLossDaily'}) + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) + correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + assert over < correct + assert under > correct + + +def test_sortino_loss_prefers_higher_profits(default_conf, hyperopt_results) -> None: + results_over = hyperopt_results.copy() + results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 + results_under = hyperopt_results.copy() + results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 + + default_conf.update({'hyperopt_loss': 'SortinoHyperOptLoss'}) + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) + correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + assert over < correct + assert under > correct + + +def test_sortino_loss_daily_prefers_higher_profits(default_conf, hyperopt_results) -> None: + results_over = hyperopt_results.copy() + results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 + results_under = hyperopt_results.copy() + results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 + + default_conf.update({'hyperopt_loss': 'SortinoHyperOptLossDaily'}) + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) + correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + assert over < correct + assert under > correct + + +def test_onlyprofit_loss_prefers_higher_profits(default_conf, hyperopt_results) -> None: + results_over = hyperopt_results.copy() + results_over['profit_percent'] = hyperopt_results['profit_percent'] * 2 + results_under = hyperopt_results.copy() + results_under['profit_percent'] = hyperopt_results['profit_percent'] / 2 + + default_conf.update({'hyperopt_loss': 'OnlyProfitHyperOptLoss'}) + hl = HyperOptLossResolver.load_hyperoptloss(default_conf) + correct = hl.hyperopt_loss_function(hyperopt_results, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + over = hl.hyperopt_loss_function(results_over, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + under = hl.hyperopt_loss_function(results_under, len(hyperopt_results), + datetime(2019, 1, 1), datetime(2019, 5, 1)) + assert over < correct + assert under > correct From ffa67979586447479e4fdf6ccdd03559f0e7f2c3 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 28 Oct 2020 16:29:08 +0100 Subject: [PATCH 3360/3421] Improve test coverage --- tests/test_arguments.py | 3 +++ tests/test_wallets.py | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/tests/test_arguments.py b/tests/test_arguments.py index 2af36277b..315d47876 100644 --- a/tests/test_arguments.py +++ b/tests/test_arguments.py @@ -249,6 +249,9 @@ def test_check_int_positive() -> None: with pytest.raises(argparse.ArgumentTypeError): check_int_positive('0') + with pytest.raises(argparse.ArgumentTypeError): + check_int_positive(0) + with pytest.raises(argparse.ArgumentTypeError): check_int_positive('3.5') diff --git a/tests/test_wallets.py b/tests/test_wallets.py index 450dabc4d..b7aead0c4 100644 --- a/tests/test_wallets.py +++ b/tests/test_wallets.py @@ -74,6 +74,10 @@ def test_sync_wallet_at_boot(mocker, default_conf): freqtrade.wallets.update() assert update_mock.call_count == 1 + assert freqtrade.wallets.get_free('NOCURRENCY') == 0 + assert freqtrade.wallets.get_used('NOCURRENCY') == 0 + assert freqtrade.wallets.get_total('NOCURRENCY') == 0 + def test_sync_wallet_missing_data(mocker, default_conf): default_conf['dry_run'] = False From 86725847edb3ea10ec6922cd87498de1d992b729 Mon Sep 17 00:00:00 2001 From: Matthias Date: Wed, 28 Oct 2020 16:58:39 +0100 Subject: [PATCH 3361/3421] Add explicit test for check_int_nonzero --- tests/test_arguments.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/tests/test_arguments.py b/tests/test_arguments.py index 315d47876..e2a1ae53c 100644 --- a/tests/test_arguments.py +++ b/tests/test_arguments.py @@ -6,7 +6,7 @@ from unittest.mock import MagicMock import pytest from freqtrade.commands import Arguments -from freqtrade.commands.cli_options import check_int_positive +from freqtrade.commands.cli_options import check_int_nonzero, check_int_positive # Parse common command-line-arguments. Used for all tools @@ -257,3 +257,23 @@ def test_check_int_positive() -> None: with pytest.raises(argparse.ArgumentTypeError): check_int_positive('DeadBeef') + + +def test_check_int_nonzero() -> None: + assert check_int_nonzero('3') == 3 + assert check_int_nonzero('1') == 1 + assert check_int_nonzero('100') == 100 + + assert check_int_nonzero('-2') == -2 + + with pytest.raises(argparse.ArgumentTypeError): + check_int_nonzero('0') + + with pytest.raises(argparse.ArgumentTypeError): + check_int_nonzero(0) + + with pytest.raises(argparse.ArgumentTypeError): + check_int_nonzero('3.5') + + with pytest.raises(argparse.ArgumentTypeError): + check_int_nonzero('DeadBeef') From 19fcbc92a7d0fe4570f34c9ed5cdb9394373aa15 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 29 Oct 2020 07:43:40 +0100 Subject: [PATCH 3362/3421] Remove stake-currency for download-data - it's not needed --- freqtrade/commands/data_commands.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/freqtrade/commands/data_commands.py b/freqtrade/commands/data_commands.py index 7102eee38..df4c52de0 100644 --- a/freqtrade/commands/data_commands.py +++ b/freqtrade/commands/data_commands.py @@ -35,6 +35,9 @@ def start_download_data(args: Dict[str, Any]) -> None: if 'timerange' in config: timerange = timerange.parse_timerange(config['timerange']) + # Remove stake-currency to skip checks which are not relevant for datadownload + config['stake_currency'] = '' + if 'pairs' not in config: raise OperationalException( "Downloading data requires a list of pairs. " From f4d39f2a12538a3e75d921f737b961ee0ee29b38 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 29 Oct 2020 07:44:03 +0100 Subject: [PATCH 3363/3421] Improve test coverage of deploy_commands --- freqtrade/commands/deploy_commands.py | 2 +- tests/commands/test_commands.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/freqtrade/commands/deploy_commands.py b/freqtrade/commands/deploy_commands.py index 0a49c55de..a0105e140 100644 --- a/freqtrade/commands/deploy_commands.py +++ b/freqtrade/commands/deploy_commands.py @@ -133,7 +133,7 @@ def start_new_hyperopt(args: Dict[str, Any]) -> None: if new_path.exists(): raise OperationalException(f"`{new_path}` already exists. " - "Please choose another Strategy Name.") + "Please choose another Hyperopt Name.") deploy_new_hyperopt(args['hyperopt'], new_path, args['template']) else: raise OperationalException("`new-hyperopt` requires --hyperopt to be set.") diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 713386a8e..6861e0cd9 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -476,6 +476,12 @@ def test_start_new_strategy(mocker, caplog): assert "CoolNewStrategy" in wt_mock.call_args_list[0][0][0] assert log_has_re("Writing strategy to .*", caplog) + mocker.patch('freqtrade.commands.deploy_commands.setup_utils_configuration') + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + with pytest.raises(OperationalException, + match=r".* already exists. Please choose another Strategy Name\."): + start_new_strategy(get_args(args)) + def test_start_new_strategy_DefaultStrat(mocker, caplog): args = [ @@ -512,6 +518,12 @@ def test_start_new_hyperopt(mocker, caplog): assert "CoolNewhyperopt" in wt_mock.call_args_list[0][0][0] assert log_has_re("Writing hyperopt to .*", caplog) + mocker.patch('freqtrade.commands.deploy_commands.setup_utils_configuration') + mocker.patch.object(Path, "exists", MagicMock(return_value=True)) + with pytest.raises(OperationalException, + match=r".* already exists. Please choose another Hyperopt Name\."): + start_new_hyperopt(get_args(args)) + def test_start_new_hyperopt_DefaultHyperopt(mocker, caplog): args = [ From d8ff79a2faa69ac714d5898ca1b1386cf70afacf Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 29 Oct 2020 07:54:42 +0100 Subject: [PATCH 3364/3421] Improve tests of list commands --- tests/commands/test_commands.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 6861e0cd9..305b6b376 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -435,6 +435,16 @@ def test_list_markets(mocker, markets, capsys): assert re.search(r"^BLK/BTC$", captured.out, re.MULTILINE) assert re.search(r"^LTC/USD$", captured.out, re.MULTILINE) + mocker.patch('freqtrade.exchange.Exchange.markets', PropertyMock(side_effect=ValueError)) + # Test --one-column + args = [ + "list-markets", + '--config', 'config.json.example', + "--one-column" + ] + with pytest.raises(OperationalException, match=r"Cannot get markets.*"): + start_list_markets(get_args(args), False) + def test_create_datadir_failed(caplog): @@ -707,6 +717,7 @@ def test_start_list_strategies(mocker, caplog, capsys): "list-strategies", "--strategy-path", str(Path(__file__).parent.parent / "strategy" / "strats"), + '--no-color', ] pargs = get_args(args) # pargs['config'] = None From 3ca97223f21c820363386aa0a68570388660b31c Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 29 Oct 2020 08:09:50 +0100 Subject: [PATCH 3365/3421] Improve test for test_pairlist --- tests/commands/test_commands.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/commands/test_commands.py b/tests/commands/test_commands.py index 305b6b376..a392b74cf 100644 --- a/tests/commands/test_commands.py +++ b/tests/commands/test_commands.py @@ -792,6 +792,25 @@ def test_start_test_pairlist(mocker, caplog, tickers, default_conf, capsys): assert re.match(r"Pairs for .*", captured.out) assert re.match("['ETH/BTC', 'TKN/BTC', 'BLK/BTC', 'LTC/BTC', 'XRP/BTC']", captured.out) + args = [ + 'test-pairlist', + '-c', 'config.json.example', + '--one-column', + ] + start_test_pairlist(get_args(args)) + captured = capsys.readouterr() + assert re.match(r"ETH/BTC\nTKN/BTC\nBLK/BTC\nLTC/BTC\nXRP/BTC\n", captured.out) + + args = [ + 'test-pairlist', + '-c', 'config.json.example', + '--print-json', + ] + start_test_pairlist(get_args(args)) + captured = capsys.readouterr() + assert re.match(r'Pairs for BTC: \n\["ETH/BTC","TKN/BTC","BLK/BTC","LTC/BTC","XRP/BTC"\]\n', + captured.out) + def test_hyperopt_list(mocker, capsys, caplog, hyperopt_results): mocker.patch( From 38fc5d680b937c7aff9ed148ecab34804dd9dfa0 Mon Sep 17 00:00:00 2001 From: Matthias Spiller Date: Sat, 31 Oct 2020 10:31:58 +0000 Subject: [PATCH 3366/3421] Enable usage of devcontainer for macOS users --- .devcontainer/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 7b5e64609..20ec247d1 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -7,8 +7,8 @@ services: dockerfile: ".devcontainer/Dockerfile" volumes: # Allow git usage within container - - "/home/${USER}/.ssh:/home/ftuser/.ssh:ro" - - "/home/${USER}/.gitconfig:/home/ftuser/.gitconfig:ro" + - "${HOME}/.ssh:/home/ftuser/.ssh:ro" + - "${HOME}/.gitconfig:/home/ftuser/.gitconfig:ro" - ..:/freqtrade:cached # Persist bash-history - freqtrade-vscode-server:/home/ftuser/.vscode-server From 78874fa86573f810d0c57e248651fc8aa1d80286 Mon Sep 17 00:00:00 2001 From: Matthias Spiller Date: Sat, 31 Oct 2020 10:53:51 +0000 Subject: [PATCH 3367/3421] informative_pairs does not honor dataformat --- freqtrade/data/dataprovider.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/dataprovider.py b/freqtrade/data/dataprovider.py index 07dd94fc1..3ca38e865 100644 --- a/freqtrade/data/dataprovider.py +++ b/freqtrade/data/dataprovider.py @@ -88,7 +88,8 @@ class DataProvider: """ return load_pair_history(pair=pair, timeframe=timeframe or self._config['timeframe'], - datadir=self._config['datadir'] + datadir=self._config['datadir'], + data_format=self._config.get('dataformat_ohlcv', 'json') ) def get_pair_dataframe(self, pair: str, timeframe: str = None) -> DataFrame: From 0d11f0bd75da23e2c285778a435cb7cf2f65bff4 Mon Sep 17 00:00:00 2001 From: Matthias Spiller Date: Sat, 31 Oct 2020 11:45:46 +0000 Subject: [PATCH 3368/3421] Add unit test for hdf5 dataformat for informative pairs --- tests/data/test_dataprovider.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/data/test_dataprovider.py b/tests/data/test_dataprovider.py index a64dce908..a3c57a77b 100644 --- a/tests/data/test_dataprovider.py +++ b/tests/data/test_dataprovider.py @@ -52,6 +52,31 @@ def test_historic_ohlcv(mocker, default_conf, ohlcv_history): assert historymock.call_args_list[0][1]["timeframe"] == "5m" +def test_historic_ohlcv_dataformat(mocker, default_conf, ohlcv_history): + hdf5loadmock = MagicMock(return_value=ohlcv_history) + jsonloadmock = MagicMock(return_value=ohlcv_history) + mocker.patch("freqtrade.data.history.hdf5datahandler.HDF5DataHandler._ohlcv_load", hdf5loadmock) + mocker.patch("freqtrade.data.history.jsondatahandler.JsonDataHandler._ohlcv_load", jsonloadmock) + + default_conf["runmode"] = RunMode.BACKTEST + exchange = get_patched_exchange(mocker, default_conf) + dp = DataProvider(default_conf, exchange) + data = dp.historic_ohlcv("UNITTEST/BTC", "5m") + assert isinstance(data, DataFrame) + hdf5loadmock.assert_not_called() + jsonloadmock.assert_called_once() + + # Swiching to dataformat hdf5 + hdf5loadmock.reset_mock() + jsonloadmock.reset_mock() + default_conf["dataformat_ohlcv"] = "hdf5" + dp = DataProvider(default_conf, exchange) + data = dp.historic_ohlcv("UNITTEST/BTC", "5m") + assert isinstance(data, DataFrame) + hdf5loadmock.assert_called_once() + jsonloadmock.assert_not_called() + + def test_get_pair_dataframe(mocker, default_conf, ohlcv_history): default_conf["runmode"] = RunMode.DRY_RUN timeframe = default_conf["timeframe"] From e73203acb85b16ef79bfebac6b0275ca72ddf8f9 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 1 Nov 2020 10:51:07 +0100 Subject: [PATCH 3369/3421] FIx bug with dmmp --- freqtrade/optimize/backtesting.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 47bb9edd9..883f7338c 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -340,7 +340,7 @@ class Backtesting: # max_open_trades must be respected # don't open on the last row if ((position_stacking or len(open_trades[pair]) == 0) - and max_open_trades > 0 and open_trade_count_start < max_open_trades + and (max_open_trades <= 0 or open_trade_count_start < max_open_trades) and tmp != end_date and row[BUY_IDX] == 1 and row[SELL_IDX] != 1): # Enter trade From 81fb0c572614805a393fa5a10ad4389877f65498 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2020 05:54:57 +0000 Subject: [PATCH 3370/3421] Bump numpy from 1.19.2 to 1.19.3 Bumps [numpy](https://github.com/numpy/numpy) from 1.19.2 to 1.19.3. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.19.2...v1.19.3) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 7d2017beb..e2687539e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -numpy==1.19.2 +numpy==1.19.3 pandas==1.1.3 ccxt==1.36.85 From 6c3753ac7f64c1d61e8b4ecfcace66db9c5d5946 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2020 05:55:07 +0000 Subject: [PATCH 3371/3421] Bump mkdocs-material from 6.1.0 to 6.1.2 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 6.1.0 to 6.1.2. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/6.1.0...6.1.2) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index f30710a1f..47f0eff1c 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,3 +1,3 @@ -mkdocs-material==6.1.0 +mkdocs-material==6.1.2 mdx_truly_sane_lists==1.2 pymdown-extensions==8.0.1 From 21b22760a7087409cf3f91ea860f29329d831745 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2020 05:55:12 +0000 Subject: [PATCH 3372/3421] Bump pytest from 6.1.1 to 6.1.2 Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.1.1 to 6.1.2. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/6.1.1...6.1.2) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 916bb2ec2..1c96a880a 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ flake8==3.8.4 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 mypy==0.790 -pytest==6.1.1 +pytest==6.1.2 pytest-asyncio==0.14.0 pytest-cov==2.10.1 pytest-mock==3.3.1 From aed44ef6b36f071d784bda57c9f910e90c4d953a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2020 07:46:28 +0000 Subject: [PATCH 3373/3421] Bump pandas from 1.1.3 to 1.1.4 Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.1.3 to 1.1.4. - [Release notes](https://github.com/pandas-dev/pandas/releases) - [Changelog](https://github.com/pandas-dev/pandas/blob/master/RELEASE.md) - [Commits](https://github.com/pandas-dev/pandas/compare/v1.1.3...v1.1.4) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e2687539e..05520d4d9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ numpy==1.19.3 -pandas==1.1.3 +pandas==1.1.4 ccxt==1.36.85 aiohttp==3.7.1 From 74d8a985e22d0b6d2881b4d3dcd989186f3ad7b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2020 08:44:26 +0000 Subject: [PATCH 3374/3421] Bump aiohttp from 3.7.1 to 3.7.2 Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.7.1 to 3.7.2. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.7.1...v3.7.2) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 05520d4d9..3df54ad06 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ numpy==1.19.3 pandas==1.1.4 ccxt==1.36.85 -aiohttp==3.7.1 +aiohttp==3.7.2 SQLAlchemy==1.3.20 python-telegram-bot==13.0 arrow==0.17.0 From d56da41679f022365ab6ac913989f09d88ff920d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2020 13:50:07 +0000 Subject: [PATCH 3375/3421] Bump ccxt from 1.36.85 to 1.37.14 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.36.85 to 1.37.14. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.36.85...1.37.14) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 3df54ad06..afe48171c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.19.3 pandas==1.1.4 -ccxt==1.36.85 +ccxt==1.37.14 aiohttp==3.7.2 SQLAlchemy==1.3.20 python-telegram-bot==13.0 From cf89a773da498915cb7f08e590d1d061c3d46bc8 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Nov 2020 07:34:21 +0100 Subject: [PATCH 3376/3421] Standardize trade api outputs there should be no difference between current_profit and close_profit it's always profit, and the information if it's a closed trade is available elsewhere --- freqtrade/persistence/models.py | 9 +++++++-- freqtrade/rpc/rpc.py | 13 +++++++------ tests/rpc/test_rpc.py | 8 +++++++- tests/rpc/test_rpc_apiserver.py | 7 +++++++ tests/test_persistence.py | 8 ++++++++ 5 files changed, 36 insertions(+), 9 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 7e6d967c1..3019d3d5f 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -295,8 +295,13 @@ class Trade(_DECL_BASE): tzinfo=timezone.utc).timestamp() * 1000) if self.close_date else None, 'close_rate': self.close_rate, 'close_rate_requested': self.close_rate_requested, - 'close_profit': self.close_profit, - 'close_profit_abs': self.close_profit_abs, + 'close_profit': self.close_profit, # Deprecated + 'close_profit_pct': round(self.close_profit * 100, 2) if self.close_profit else None, + 'close_profit_abs': self.close_profit_abs, # Deprecated + + 'profit_ratio': self.close_profit, + 'profit_pct': round(self.close_profit * 100, 2) if self.close_profit else None, + 'profit_abs': self.close_profit_abs, 'sell_reason': self.sell_reason, 'sell_order_status': self.sell_order_status, diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 10aaf56fa..4370fe897 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -152,17 +152,18 @@ class RPC: stoploss_current_dist = trade.stop_loss - current_rate stoploss_current_dist_ratio = stoploss_current_dist / current_rate - fmt_close_profit = (f'{round(trade.close_profit * 100, 2):.2f}%' - if trade.close_profit is not None else None) trade_dict = trade.to_json() trade_dict.update(dict( base_currency=self._freqtrade.config['stake_currency'], close_profit=trade.close_profit if trade.close_profit is not None else None, - close_profit_pct=fmt_close_profit, current_rate=current_rate, - current_profit=current_profit, - current_profit_pct=round(current_profit * 100, 2), - current_profit_abs=current_profit_abs, + current_profit=current_profit, # Deprectated + current_profit_pct=round(current_profit * 100, 2), # Deprectated + current_profit_abs=current_profit_abs, # Deprectated + profit_ratio=current_profit, + profit_pct=round(current_profit * 100, 2), + profit_abs=current_profit_abs, + stoploss_current_dist=stoploss_current_dist, stoploss_current_dist_ratio=round(stoploss_current_dist_ratio, 8), stoploss_current_dist_pct=round(stoploss_current_dist_ratio * 100, 2), diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 977dfbc20..4a4f3053e 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -70,7 +70,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'max_rate': ANY, 'strategy': ANY, 'ticker_interval': ANY, - 'timeframe': ANY, + 'timeframe': 5, 'open_order_id': ANY, 'close_date': None, 'close_date_hum': None, @@ -87,6 +87,9 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'current_profit': -0.00408133, 'current_profit_pct': -0.41, 'current_profit_abs': -4.09e-06, + 'profit_ratio': -0.00408133, + 'profit_pct': -0.41, + 'profit_abs': -4.09e-06, 'stop_loss': 9.882e-06, 'stop_loss_abs': 9.882e-06, 'stop_loss_pct': -10.0, @@ -152,6 +155,9 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'current_profit': ANY, 'current_profit_pct': ANY, 'current_profit_abs': ANY, + 'profit_ratio': ANY, + 'profit_pct': ANY, + 'profit_abs': ANY, 'stop_loss': 9.882e-06, 'stop_loss_abs': 9.882e-06, 'stop_loss_pct': -10.0, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 7b4e2e153..fd5d2fce2 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -639,6 +639,9 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'current_profit': -0.00408133, 'current_profit_pct': -0.41, 'current_profit_abs': -4.09e-06, + 'profit_ratio': -0.00408133, + 'profit_pct': -0.41, + 'profit_abs': -4.09e-06, 'current_rate': 1.099e-05, 'open_date': ANY, 'open_date_hum': 'just now', @@ -791,8 +794,12 @@ def test_api_forcebuy(botclient, mocker, fee): 'initial_stop_loss_pct': None, 'initial_stop_loss_ratio': None, 'close_profit': None, + 'close_profit_pct': None, 'close_profit_abs': None, 'close_rate_requested': None, + 'profit_ratio': None, + 'profit_pct': None, + 'profit_abs': None, 'fee_close': 0.0025, 'fee_close_cost': None, 'fee_close_currency': None, diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 4216565ac..b2d2b716c 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -816,7 +816,11 @@ def test_to_json(default_conf, fee): 'amount_requested': 123.0, 'stake_amount': 0.001, 'close_profit': None, + 'close_profit_pct': None, 'close_profit_abs': None, + 'profit_ratio': None, + 'profit_pct': None, + 'profit_abs': None, 'sell_reason': None, 'sell_order_status': None, 'stop_loss': None, @@ -880,7 +884,11 @@ def test_to_json(default_conf, fee): 'initial_stop_loss_pct': None, 'initial_stop_loss_ratio': None, 'close_profit': None, + 'close_profit_pct': None, 'close_profit_abs': None, + 'profit_ratio': None, + 'profit_pct': None, + 'profit_abs': None, 'close_rate_requested': None, 'fee_close': 0.0025, 'fee_close_cost': None, From d1dab2328379446b502287fdbba0deb842fcb68a Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Nov 2020 08:25:47 +0100 Subject: [PATCH 3377/3421] Remove deprecated api fields --- freqtrade/persistence/models.py | 3 --- freqtrade/rpc/rpc.py | 1 - freqtrade/rpc/telegram.py | 4 ++-- tests/rpc/test_rpc.py | 6 ------ tests/rpc/test_rpc_apiserver.py | 7 ------- tests/test_persistence.py | 6 ------ 6 files changed, 2 insertions(+), 25 deletions(-) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 3019d3d5f..8160ffbbf 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -270,7 +270,6 @@ class Trade(_DECL_BASE): 'amount_requested': round(self.amount_requested, 8) if self.amount_requested else None, 'stake_amount': round(self.stake_amount, 8), 'strategy': self.strategy, - 'ticker_interval': self.timeframe, # DEPRECATED 'timeframe': self.timeframe, 'fee_open': self.fee_open, @@ -305,7 +304,6 @@ class Trade(_DECL_BASE): 'sell_reason': self.sell_reason, 'sell_order_status': self.sell_order_status, - 'stop_loss': self.stop_loss, # Deprecated - should not be used 'stop_loss_abs': self.stop_loss, 'stop_loss_ratio': self.stop_loss_pct if self.stop_loss_pct else None, 'stop_loss_pct': (self.stop_loss_pct * 100) if self.stop_loss_pct else None, @@ -314,7 +312,6 @@ class Trade(_DECL_BASE): if self.stoploss_last_update else None), 'stoploss_last_update_timestamp': int(self.stoploss_last_update.replace( tzinfo=timezone.utc).timestamp() * 1000) if self.stoploss_last_update else None, - 'initial_stop_loss': self.initial_stop_loss, # Deprecated - should not be used 'initial_stop_loss_abs': self.initial_stop_loss, 'initial_stop_loss_ratio': (self.initial_stop_loss_pct if self.initial_stop_loss_pct else None), diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 4370fe897..efeb361ae 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -110,7 +110,6 @@ class RPC: 'trailing_stop_positive': config.get('trailing_stop_positive'), 'trailing_stop_positive_offset': config.get('trailing_stop_positive_offset'), 'trailing_only_offset_is_reached': config.get('trailing_only_offset_is_reached'), - 'ticker_interval': config['timeframe'], # DEPRECATED 'timeframe': config['timeframe'], 'timeframe_ms': timeframe_to_msecs(config['timeframe']), 'timeframe_min': timeframe_to_minutes(config['timeframe']), diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 3dcb7ab72..9bbae871d 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -251,14 +251,14 @@ class Telegram(RPC): if r['close_profit_pct'] is not None else ""), "*Current Profit:* `{current_profit_pct:.2f}%`", ] - if (r['stop_loss'] != r['initial_stop_loss'] + if (r['stop_loss_abs'] != r['initial_stop_loss_abs'] and r['initial_stop_loss_pct'] is not None): # Adding initial stoploss only if it is different from stoploss lines.append("*Initial Stoploss:* `{initial_stop_loss:.8f}` " "`({initial_stop_loss_pct:.2f}%)`") # Adding stoploss and stoploss percentage only if it is not None - lines.append("*Stoploss:* `{stop_loss:.8f}` " + + lines.append("*Stoploss:* `{stop_loss_abs:.8f}` " + ("`({stop_loss_pct:.2f}%)`" if r['stop_loss_pct'] else "")) lines.append("*Stoploss distance:* `{stoploss_current_dist:.8f}` " "`({stoploss_current_dist_pct:.2f}%)`") diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 4a4f3053e..23ca53e53 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -69,7 +69,6 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'min_rate': ANY, 'max_rate': ANY, 'strategy': ANY, - 'ticker_interval': ANY, 'timeframe': 5, 'open_order_id': ANY, 'close_date': None, @@ -90,14 +89,12 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'profit_ratio': -0.00408133, 'profit_pct': -0.41, 'profit_abs': -4.09e-06, - 'stop_loss': 9.882e-06, 'stop_loss_abs': 9.882e-06, 'stop_loss_pct': -10.0, 'stop_loss_ratio': -0.1, 'stoploss_order_id': None, 'stoploss_last_update': ANY, 'stoploss_last_update_timestamp': ANY, - 'initial_stop_loss': 9.882e-06, 'initial_stop_loss_abs': 9.882e-06, 'initial_stop_loss_pct': -10.0, 'initial_stop_loss_ratio': -0.1, @@ -137,7 +134,6 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'min_rate': ANY, 'max_rate': ANY, 'strategy': ANY, - 'ticker_interval': ANY, 'timeframe': ANY, 'open_order_id': ANY, 'close_date': None, @@ -158,14 +154,12 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'profit_ratio': ANY, 'profit_pct': ANY, 'profit_abs': ANY, - 'stop_loss': 9.882e-06, 'stop_loss_abs': 9.882e-06, 'stop_loss_pct': -10.0, 'stop_loss_ratio': -0.1, 'stoploss_order_id': None, 'stoploss_last_update': ANY, 'stoploss_last_update_timestamp': ANY, - 'initial_stop_loss': 9.882e-06, 'initial_stop_loss_abs': 9.882e-06, 'initial_stop_loss_pct': -10.0, 'initial_stop_loss_ratio': -0.1, diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index fd5d2fce2..80de839e4 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -360,7 +360,6 @@ def test_api_show_config(botclient, mocker): assert_response(rc) assert 'dry_run' in rc.json assert rc.json['exchange'] == 'bittrex' - assert rc.json['ticker_interval'] == '5m' assert rc.json['timeframe'] == '5m' assert rc.json['timeframe_ms'] == 300000 assert rc.json['timeframe_min'] == 5 @@ -650,14 +649,12 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'open_rate': 1.098e-05, 'pair': 'ETH/BTC', 'stake_amount': 0.001, - 'stop_loss': 9.882e-06, 'stop_loss_abs': 9.882e-06, 'stop_loss_pct': -10.0, 'stop_loss_ratio': -0.1, 'stoploss_order_id': None, 'stoploss_last_update': ANY, 'stoploss_last_update_timestamp': ANY, - 'initial_stop_loss': 9.882e-06, 'initial_stop_loss_abs': 9.882e-06, 'initial_stop_loss_pct': -10.0, 'initial_stop_loss_ratio': -0.1, @@ -685,7 +682,6 @@ def test_api_status(botclient, mocker, ticker, fee, markets): 'sell_reason': None, 'sell_order_status': None, 'strategy': 'DefaultStrategy', - 'ticker_interval': 5, 'timeframe': 5, 'exchange': 'bittrex', }] @@ -782,14 +778,12 @@ def test_api_forcebuy(botclient, mocker, fee): 'open_rate': 0.245441, 'pair': 'ETH/ETH', 'stake_amount': 1, - 'stop_loss': None, 'stop_loss_abs': None, 'stop_loss_pct': None, 'stop_loss_ratio': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, - 'initial_stop_loss': None, 'initial_stop_loss_abs': None, 'initial_stop_loss_pct': None, 'initial_stop_loss_ratio': None, @@ -815,7 +809,6 @@ def test_api_forcebuy(botclient, mocker, fee): 'sell_reason': None, 'sell_order_status': None, 'strategy': None, - 'ticker_interval': None, 'timeframe': None, 'exchange': 'bittrex', } diff --git a/tests/test_persistence.py b/tests/test_persistence.py index b2d2b716c..41b99b34f 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -823,21 +823,18 @@ def test_to_json(default_conf, fee): 'profit_abs': None, 'sell_reason': None, 'sell_order_status': None, - 'stop_loss': None, 'stop_loss_abs': None, 'stop_loss_ratio': None, 'stop_loss_pct': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, - 'initial_stop_loss': None, 'initial_stop_loss_abs': None, 'initial_stop_loss_pct': None, 'initial_stop_loss_ratio': None, 'min_rate': None, 'max_rate': None, 'strategy': None, - 'ticker_interval': None, 'timeframe': None, 'exchange': 'bittrex', } @@ -872,14 +869,12 @@ def test_to_json(default_conf, fee): 'amount': 100.0, 'amount_requested': 101.0, 'stake_amount': 0.001, - 'stop_loss': None, 'stop_loss_abs': None, 'stop_loss_pct': None, 'stop_loss_ratio': None, 'stoploss_order_id': None, 'stoploss_last_update': None, 'stoploss_last_update_timestamp': None, - 'initial_stop_loss': None, 'initial_stop_loss_abs': None, 'initial_stop_loss_pct': None, 'initial_stop_loss_ratio': None, @@ -905,7 +900,6 @@ def test_to_json(default_conf, fee): 'sell_reason': None, 'sell_order_status': None, 'strategy': None, - 'ticker_interval': None, 'timeframe': None, 'exchange': 'bittrex', } From b58d6d38b5e080d7bfcf06d9813f55f55bd55e69 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Nov 2020 08:34:12 +0100 Subject: [PATCH 3378/3421] Use correct fields in telegram --- freqtrade/rpc/telegram.py | 7 +++---- tests/rpc/test_rpc_telegram.py | 11 ++++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 9bbae871d..31ec33b63 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -247,14 +247,13 @@ class Telegram(RPC): "*Open Rate:* `{open_rate:.8f}`", "*Close Rate:* `{close_rate}`" if r['close_rate'] else "", "*Current Rate:* `{current_rate:.8f}`", - ("*Close Profit:* `{close_profit_pct}`" - if r['close_profit_pct'] is not None else ""), - "*Current Profit:* `{current_profit_pct:.2f}%`", + ("*Current Profit:* " if r['is_open'] else "*Close Profit: *") + + "`{profit_pct:.2f}%`", ] if (r['stop_loss_abs'] != r['initial_stop_loss_abs'] and r['initial_stop_loss_pct'] is not None): # Adding initial stoploss only if it is different from stoploss - lines.append("*Initial Stoploss:* `{initial_stop_loss:.8f}` " + lines.append("*Initial Stoploss:* `{initial_stop_loss_abs:.8f}` " "`({initial_stop_loss_pct:.2f}%)`") # Adding stoploss and stoploss percentage only if it is not None diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index f1246005f..8e81db106 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -163,16 +163,17 @@ def test_telegram_status(default_conf, update, mocker) -> None: 'amount': 90.99181074, 'stake_amount': 90.99181074, 'close_profit_pct': None, - 'current_profit': -0.0059, - 'current_profit_pct': -0.59, - 'initial_stop_loss': 1.098e-05, - 'stop_loss': 1.099e-05, + 'profit': -0.0059, + 'profit_pct': -0.59, + 'initial_stop_loss_abs': 1.098e-05, + 'stop_loss_abs': 1.099e-05, 'sell_order_status': None, 'initial_stop_loss_pct': -0.05, 'stoploss_current_dist': 1e-08, 'stoploss_current_dist_pct': -0.02, 'stop_loss_pct': -0.01, - 'open_order': '(limit buy rem=0.00000000)' + 'open_order': '(limit buy rem=0.00000000)', + 'is_open': True }]), _status_table=status_table, _send_msg=msg_mock From 7d2bd00f0ca421857ba475838269397bc64ec536 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 3 Nov 2020 09:23:07 +0100 Subject: [PATCH 3379/3421] Update forgotten arrow.timestamp occurance --- tests/exchange/test_exchange.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/exchange/test_exchange.py b/tests/exchange/test_exchange.py index af08d753e..e4452a83c 100644 --- a/tests/exchange/test_exchange.py +++ b/tests/exchange/test_exchange.py @@ -1302,7 +1302,8 @@ def test_get_historic_ohlcv(default_conf, mocker, caplog, exchange_name): raise TimeoutError() exchange._async_get_candle_history = MagicMock(side_effect=mock_get_candle_hist_error) - ret = exchange.get_historic_ohlcv(pair, "5m", int((arrow.utcnow().timestamp - since) * 1000)) + ret = exchange.get_historic_ohlcv(pair, "5m", int( + (arrow.utcnow().int_timestamp - since) * 1000)) assert log_has_re(r"Async code raised an exception: .*", caplog) From 2af1c80fd536a94aca53f45e5cd0f3c2f8a69781 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 8 Nov 2020 11:26:02 +0100 Subject: [PATCH 3380/3421] Convert _rpc_show_config to static method --- freqtrade/rpc/api_server.py | 2 +- freqtrade/rpc/rpc.py | 20 ++++++++++++-------- freqtrade/rpc/telegram.py | 3 ++- tests/rpc/test_rpc_apiserver.py | 4 ++-- tests/rpc/test_rpc_telegram.py | 3 ++- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index be21179ad..7f4773d57 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -329,7 +329,7 @@ class ApiServer(RPC): """ Prints the bot's version """ - return jsonify(self._rpc_show_config(self._config)) + return jsonify(RPC._rpc_show_config(self._config, self._freqtrade.state)) @require_login @rpc_catch_errors diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index efeb361ae..888dc11ec 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -93,7 +93,8 @@ class RPC: def send_msg(self, msg: Dict[str, str]) -> None: """ Sends a message to all registered rpc modules """ - def _rpc_show_config(self, config) -> Dict[str, Any]: + @staticmethod + def _rpc_show_config(config, botstate: State) -> Dict[str, Any]: """ Return a dict of config options. Explicitly does NOT return the full config to avoid leakage of sensitive @@ -104,21 +105,24 @@ class RPC: 'stake_currency': config['stake_currency'], 'stake_amount': config['stake_amount'], 'max_open_trades': config['max_open_trades'], - 'minimal_roi': config['minimal_roi'].copy(), - 'stoploss': config['stoploss'], - 'trailing_stop': config['trailing_stop'], + 'minimal_roi': config['minimal_roi'].copy() if 'minimal_roi' in config else {}, + 'stoploss': config.get('stoploss'), + 'trailing_stop': config.get('trailing_stop'), 'trailing_stop_positive': config.get('trailing_stop_positive'), 'trailing_stop_positive_offset': config.get('trailing_stop_positive_offset'), 'trailing_only_offset_is_reached': config.get('trailing_only_offset_is_reached'), - 'timeframe': config['timeframe'], - 'timeframe_ms': timeframe_to_msecs(config['timeframe']), - 'timeframe_min': timeframe_to_minutes(config['timeframe']), + 'timeframe': config.get('timeframe'), + 'timeframe_ms': timeframe_to_msecs(config['timeframe'] + ) if 'timeframe' in config else '', + 'timeframe_min': timeframe_to_minutes(config['timeframe'] + ) if 'timeframe' in config else '', 'exchange': config['exchange']['name'], 'strategy': config['strategy'], 'forcebuy_enabled': config.get('forcebuy_enable', False), 'ask_strategy': config.get('ask_strategy', {}), 'bid_strategy': config.get('bid_strategy', {}), - 'state': str(self._freqtrade.state) if self._freqtrade else '', + 'state': str(botstate), + 'runmode': config['runmode'].value } return val diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 31ec33b63..31d5bbfbd 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -775,7 +775,8 @@ class Telegram(RPC): :param update: message update :return: None """ - val = self._rpc_show_config(self._freqtrade.config) + val = RPC._rpc_show_config(self._freqtrade.config, self._freqtrade.state) + if val['trailing_stop']: sl_info = ( f"*Initial Stoploss:* `{val['stoploss']}`\n" diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py index 80de839e4..0dc43474f 100644 --- a/tests/rpc/test_rpc_apiserver.py +++ b/tests/rpc/test_rpc_apiserver.py @@ -14,7 +14,7 @@ from freqtrade.__init__ import __version__ from freqtrade.loggers import setup_logging, setup_logging_pre from freqtrade.persistence import PairLocks, Trade from freqtrade.rpc.api_server import BASE_URI, ApiServer -from freqtrade.state import State +from freqtrade.state import RunMode, State from tests.conftest import create_mock_trades, get_patched_freqtradebot, log_has, patch_get_signal @@ -26,7 +26,7 @@ _TEST_PASS = "SuperSecurePassword1!" def botclient(default_conf, mocker): setup_logging_pre() setup_logging(default_conf) - + default_conf['runmode'] = RunMode.DRY_RUN default_conf.update({"api_server": {"enabled": True, "listen_ip_address": "127.0.0.1", "listen_port": 8080, diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 8e81db106..7885a251d 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -21,7 +21,7 @@ from freqtrade.loggers import setup_logging from freqtrade.persistence import PairLocks, Trade from freqtrade.rpc import RPCMessageType from freqtrade.rpc.telegram import Telegram, authorized_only -from freqtrade.state import State +from freqtrade.state import RunMode, State from freqtrade.strategy.interface import SellType from tests.conftest import (create_mock_trades, get_patched_freqtradebot, log_has, patch_exchange, patch_get_signal, patch_whitelist) @@ -1309,6 +1309,7 @@ def test_show_config_handle(default_conf, update, mocker) -> None: _init=MagicMock(), _send_msg=msg_mock ) + default_conf['runmode'] = RunMode.DRY_RUN freqtradebot = get_patched_freqtradebot(mocker, default_conf) telegram = Telegram(freqtradebot) From 5243214a36a880a1ee830e9fe1b89bf1fcece92f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Nov 2020 05:44:29 +0000 Subject: [PATCH 3381/3421] Bump mkdocs-material from 6.1.2 to 6.1.4 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 6.1.2 to 6.1.4. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/6.1.2...6.1.4) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 47f0eff1c..f034b0b36 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,3 +1,3 @@ -mkdocs-material==6.1.2 +mkdocs-material==6.1.4 mdx_truly_sane_lists==1.2 pymdown-extensions==8.0.1 From 42d9e3a28f788e2fd7f59f42f620d6a991dc6ed2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Nov 2020 05:44:40 +0000 Subject: [PATCH 3382/3421] Bump numpy from 1.19.3 to 1.19.4 Bumps [numpy](https://github.com/numpy/numpy) from 1.19.3 to 1.19.4. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/master/doc/HOWTO_RELEASE.rst.txt) - [Commits](https://github.com/numpy/numpy/compare/v1.19.3...v1.19.4) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index afe48171c..818741207 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -numpy==1.19.3 +numpy==1.19.4 pandas==1.1.4 ccxt==1.37.14 From 6063f2f91f319593085fe0bab300df638fd08faf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Nov 2020 05:44:49 +0000 Subject: [PATCH 3383/3421] Bump questionary from 1.7.0 to 1.8.0 Bumps [questionary](https://github.com/tmbo/questionary) from 1.7.0 to 1.8.0. - [Release notes](https://github.com/tmbo/questionary/releases) - [Commits](https://github.com/tmbo/questionary/compare/1.7.0...1.8.0) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index afe48171c..2789ca16a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -35,5 +35,5 @@ flask-cors==3.0.9 # Support for colorized terminal output colorama==0.4.4 # Building config files interactively -questionary==1.7.0 +questionary==1.8.0 prompt-toolkit==3.0.8 From 88b2f3f0d1b914f76e1a9921b3547a81d2040ea1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Nov 2020 05:44:51 +0000 Subject: [PATCH 3384/3421] Bump scipy from 1.5.3 to 1.5.4 Bumps [scipy](https://github.com/scipy/scipy) from 1.5.3 to 1.5.4. - [Release notes](https://github.com/scipy/scipy/releases) - [Commits](https://github.com/scipy/scipy/compare/v1.5.3...v1.5.4) Signed-off-by: dependabot[bot] --- requirements-hyperopt.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 5b68c1ea1..7e480b8c9 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -2,7 +2,7 @@ -r requirements.txt # Required for hyperopt -scipy==1.5.3 +scipy==1.5.4 scikit-learn==0.23.2 scikit-optimize==0.8.1 filelock==3.0.12 From 59e846d554f36d1eb126f5ae0d0e52ad22a0a6af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Nov 2020 07:48:14 +0000 Subject: [PATCH 3385/3421] Bump ccxt from 1.37.14 to 1.37.41 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.37.14 to 1.37.41. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.37.14...1.37.41) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 37a57e3f5..4622afa15 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.19.4 pandas==1.1.4 -ccxt==1.37.14 +ccxt==1.37.41 aiohttp==3.7.2 SQLAlchemy==1.3.20 python-telegram-bot==13.0 From 13da8f936812bbfd255c4dfce4dd451dc9134c46 Mon Sep 17 00:00:00 2001 From: Daniel Goller Date: Mon, 9 Nov 2020 08:34:40 +0000 Subject: [PATCH 3386/3421] Added ConstPairList handler to skip validation of pairs if you want to backtest a pair that's not live any more, e.g. expiring contracts. --- freqtrade/constants.py | 2 +- freqtrade/pairlist/ConstPairList.py | 60 +++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 freqtrade/pairlist/ConstPairList.py diff --git a/freqtrade/constants.py b/freqtrade/constants.py index dc5384f6f..21308b2dc 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -23,7 +23,7 @@ ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc'] HYPEROPT_LOSS_BUILTIN = ['ShortTradeDurHyperOptLoss', 'OnlyProfitHyperOptLoss', 'SharpeHyperOptLoss', 'SharpeHyperOptLossDaily', 'SortinoHyperOptLoss', 'SortinoHyperOptLossDaily'] -AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', +AVAILABLE_PAIRLISTS = ['ConstPairList', 'StaticPairList', 'VolumePairList', 'AgeFilter', 'PrecisionFilter', 'PriceFilter', 'ShuffleFilter', 'SpreadFilter'] AVAILABLE_DATAHANDLERS = ['json', 'jsongz', 'hdf5'] diff --git a/freqtrade/pairlist/ConstPairList.py b/freqtrade/pairlist/ConstPairList.py new file mode 100644 index 000000000..e5b009c55 --- /dev/null +++ b/freqtrade/pairlist/ConstPairList.py @@ -0,0 +1,60 @@ +""" +Const Pair List provider + +Provides pair white list as it configured in config without checking for active markets +""" +import logging +from typing import Any, Dict, List + +from freqtrade.exceptions import OperationalException +from freqtrade.pairlist.IPairList import IPairList + + +logger = logging.getLogger(__name__) + + +class ConstPairList(IPairList): + + def __init__(self, exchange, pairlistmanager, + config: Dict[str, Any], pairlistconfig: Dict[str, Any], + pairlist_pos: int) -> None: + super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) + + if self._pairlist_pos != 0: + raise OperationalException(f"{self.name} can only be used in the first position " + "in the list of Pairlist Handlers.") + + @property + def needstickers(self) -> bool: + """ + Boolean property defining if tickers are necessary. + If no Pairlist requires tickers, an empty List is passed + as tickers argument to filter_pairlist + """ + return False + + def short_desc(self) -> str: + """ + Short whitelist method description - used for startup-messages + -> Please overwrite in subclasses + """ + return f"{self.name}" + + def gen_pairlist(self, cached_pairlist: List[str], tickers: Dict) -> List[str]: + """ + Generate the pairlist + :param cached_pairlist: Previously generated pairlist (cached) + :param tickers: Tickers (from exchange.get_tickers()). + :return: List of pairs + """ + return self._config['exchange']['pair_whitelist'] + + def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: + """ + Filters and sorts pairlist and returns the whitelist again. + Called on each bot iteration - please use internal caching if necessary + :param pairlist: pairlist to filter or sort + :param tickers: Tickers (from exchange.get_tickers()). May be cached. + :return: new whitelist + """ + return pairlist From 916776bb53642b25c4be09bca82ef0c1467798d8 Mon Sep 17 00:00:00 2001 From: Daniel Goller Date: Mon, 9 Nov 2020 08:37:38 +0000 Subject: [PATCH 3387/3421] Option to skip exchange validation, required to backtest pairs that are not live on the exchange any more. --- freqtrade/exchange/exchange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 659ff59bc..baa379db1 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -115,7 +115,7 @@ class Exchange: logger.info('Using Exchange "%s"', self.name) - if validate: + if validate and not exchange_config.get('skip_validation'): # Check if timeframe is available self.validate_timeframes(config.get('timeframe')) From 2640dfee9387613480e66da00a4fac5b260c1e41 Mon Sep 17 00:00:00 2001 From: Daniel Goller Date: Thu, 12 Nov 2020 11:27:30 +0000 Subject: [PATCH 3388/3421] Revert "Added ConstPairList handler to skip validation of pairs if you want to backtest a pair that's not live any more, e.g. expiring contracts." This reverts commit 13da8f936812bbfd255c4dfce4dd451dc9134c46. --- freqtrade/constants.py | 2 +- freqtrade/pairlist/ConstPairList.py | 60 ----------------------------- 2 files changed, 1 insertion(+), 61 deletions(-) delete mode 100644 freqtrade/pairlist/ConstPairList.py diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 21308b2dc..dc5384f6f 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -23,7 +23,7 @@ ORDERTIF_POSSIBILITIES = ['gtc', 'fok', 'ioc'] HYPEROPT_LOSS_BUILTIN = ['ShortTradeDurHyperOptLoss', 'OnlyProfitHyperOptLoss', 'SharpeHyperOptLoss', 'SharpeHyperOptLossDaily', 'SortinoHyperOptLoss', 'SortinoHyperOptLossDaily'] -AVAILABLE_PAIRLISTS = ['ConstPairList', 'StaticPairList', 'VolumePairList', +AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'AgeFilter', 'PrecisionFilter', 'PriceFilter', 'ShuffleFilter', 'SpreadFilter'] AVAILABLE_DATAHANDLERS = ['json', 'jsongz', 'hdf5'] diff --git a/freqtrade/pairlist/ConstPairList.py b/freqtrade/pairlist/ConstPairList.py deleted file mode 100644 index e5b009c55..000000000 --- a/freqtrade/pairlist/ConstPairList.py +++ /dev/null @@ -1,60 +0,0 @@ -""" -Const Pair List provider - -Provides pair white list as it configured in config without checking for active markets -""" -import logging -from typing import Any, Dict, List - -from freqtrade.exceptions import OperationalException -from freqtrade.pairlist.IPairList import IPairList - - -logger = logging.getLogger(__name__) - - -class ConstPairList(IPairList): - - def __init__(self, exchange, pairlistmanager, - config: Dict[str, Any], pairlistconfig: Dict[str, Any], - pairlist_pos: int) -> None: - super().__init__(exchange, pairlistmanager, config, pairlistconfig, pairlist_pos) - - if self._pairlist_pos != 0: - raise OperationalException(f"{self.name} can only be used in the first position " - "in the list of Pairlist Handlers.") - - @property - def needstickers(self) -> bool: - """ - Boolean property defining if tickers are necessary. - If no Pairlist requires tickers, an empty List is passed - as tickers argument to filter_pairlist - """ - return False - - def short_desc(self) -> str: - """ - Short whitelist method description - used for startup-messages - -> Please overwrite in subclasses - """ - return f"{self.name}" - - def gen_pairlist(self, cached_pairlist: List[str], tickers: Dict) -> List[str]: - """ - Generate the pairlist - :param cached_pairlist: Previously generated pairlist (cached) - :param tickers: Tickers (from exchange.get_tickers()). - :return: List of pairs - """ - return self._config['exchange']['pair_whitelist'] - - def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: - """ - Filters and sorts pairlist and returns the whitelist again. - Called on each bot iteration - please use internal caching if necessary - :param pairlist: pairlist to filter or sort - :param tickers: Tickers (from exchange.get_tickers()). May be cached. - :return: new whitelist - """ - return pairlist From 2424ac94c27c146a553aed362c04ac1850733381 Mon Sep 17 00:00:00 2001 From: Daniel Goller Date: Thu, 12 Nov 2020 11:29:46 +0000 Subject: [PATCH 3389/3421] skip the check for active markets with flag for existing StaticPairList --- freqtrade/pairlist/StaticPairList.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/freqtrade/pairlist/StaticPairList.py b/freqtrade/pairlist/StaticPairList.py index aa6268ba3..3b6440763 100644 --- a/freqtrade/pairlist/StaticPairList.py +++ b/freqtrade/pairlist/StaticPairList.py @@ -24,6 +24,8 @@ class StaticPairList(IPairList): raise OperationalException(f"{self.name} can only be used in the first position " "in the list of Pairlist Handlers.") + self._allow_inactive = self._pairlistconfig.get('allow_inactive', False) + @property def needstickers(self) -> bool: """ @@ -47,7 +49,10 @@ class StaticPairList(IPairList): :param tickers: Tickers (from exchange.get_tickers()). :return: List of pairs """ - return self._whitelist_for_active_markets(self._config['exchange']['pair_whitelist']) + if self._allow_inactive: + return self._config['exchange']['pair_whitelist'] + else: + return self._whitelist_for_active_markets(self._config['exchange']['pair_whitelist']) def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: """ From 2d6bfe1592ab61258d523065cdf4b38cb3857521 Mon Sep 17 00:00:00 2001 From: Daniel Goller Date: Thu, 12 Nov 2020 11:32:45 +0000 Subject: [PATCH 3390/3421] only skip pair validation rather than all of it --- freqtrade/exchange/exchange.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index baa379db1..0e982a06f 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -115,7 +115,7 @@ class Exchange: logger.info('Using Exchange "%s"', self.name) - if validate and not exchange_config.get('skip_validation'): + if validate: # Check if timeframe is available self.validate_timeframes(config.get('timeframe')) @@ -124,7 +124,8 @@ class Exchange: # Check if all pairs are available self.validate_stakecurrency(config['stake_currency']) - self.validate_pairs(config['exchange']['pair_whitelist']) + if not exchange_config.get('skip_pair_validation'): + self.validate_pairs(config['exchange']['pair_whitelist']) self.validate_ordertypes(config.get('order_types', {})) self.validate_order_time_in_force(config.get('order_time_in_force', {})) self.validate_required_startup_candles(config.get('startup_candle_count', 0)) From 4eb96cfc4f24bb2a7e5c3b93f4374b2d8a14c088 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 13 Nov 2020 06:51:45 +0100 Subject: [PATCH 3391/3421] Allow locks to be gathered even when the bot is stopped --- freqtrade/rpc/rpc.py | 2 -- tests/rpc/test_rpc_telegram.py | 7 ------- 2 files changed, 9 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 888dc11ec..90564a19d 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -605,8 +605,6 @@ class RPC: def _rpc_locks(self) -> Dict[str, Any]: """ Returns the current locks""" - if self._freqtrade.state != State.RUNNING: - raise RPCException('trader is not running') locks = PairLocks.get_pair_locks(None) return { diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 7885a251d..ace44a34a 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -1041,13 +1041,6 @@ def test_telegram_lock_handle(default_conf, update, ticker, fee, mocker) -> None patch_get_signal(freqtradebot, (True, False)) telegram = Telegram(freqtradebot) - freqtradebot.state = State.STOPPED - telegram._locks(update=update, context=MagicMock()) - assert msg_mock.call_count == 1 - assert 'not running' in msg_mock.call_args_list[0][0][0] - msg_mock.reset_mock() - freqtradebot.state = State.RUNNING - PairLocks.lock_pair('ETH/BTC', arrow.utcnow().shift(minutes=4).datetime, 'randreason') PairLocks.lock_pair('XRP/BTC', arrow.utcnow().shift(minutes=20).datetime, 'deadbeef') From 08b52926c816331033087b47c2afd1cb047c4452 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 13 Nov 2020 10:43:48 +0100 Subject: [PATCH 3392/3421] Catch asyncio.TimeoutError when reloading async markets --- freqtrade/exchange/exchange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 659ff59bc..e74f5668c 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -282,7 +282,7 @@ class Exchange: asyncio.get_event_loop().run_until_complete( self._api_async.load_markets(reload=reload)) - except ccxt.BaseError as e: + except (asyncio.TimeoutError, ccxt.BaseError) as e: logger.warning('Could not load async markets. Reason: %s', e) return From 164105acf24503a7349621add1c3b178b74ec5ff Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 14 Nov 2020 08:25:57 +0100 Subject: [PATCH 3393/3421] Adjust startup_candle_count of sample strategies --- freqtrade/templates/base_strategy.py.j2 | 2 +- freqtrade/templates/sample_strategy.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/templates/base_strategy.py.j2 b/freqtrade/templates/base_strategy.py.j2 index ce2c6d5c0..4a1b43e36 100644 --- a/freqtrade/templates/base_strategy.py.j2 +++ b/freqtrade/templates/base_strategy.py.j2 @@ -63,7 +63,7 @@ class {{ strategy }}(IStrategy): ignore_roi_if_buy_signal = False # Number of candles the strategy requires before producing valid signals - startup_candle_count: int = 20 + startup_candle_count: int = 30 # Optional order type mapping. order_types = { diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index 103f68a43..44590dbbe 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -64,7 +64,7 @@ class SampleStrategy(IStrategy): ignore_roi_if_buy_signal = False # Number of candles the strategy requires before producing valid signals - startup_candle_count: int = 20 + startup_candle_count: int = 30 # Optional order type mapping. order_types = { From 05f0cc787c432235fb31255725645fb42bb32fd0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 14 Nov 2020 09:28:00 +0100 Subject: [PATCH 3394/3421] Plotting should use startup_candles too closes #3943 --- freqtrade/plot/plotting.py | 18 ++++++++++++++---- tests/test_plotting.py | 3 ++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index a89732df5..f7d300593 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -9,9 +9,9 @@ from freqtrade.data.btanalysis import (calculate_max_drawdown, combine_dataframe create_cum_profit, extract_trades_of_period, load_trades) from freqtrade.data.converter import trim_dataframe from freqtrade.data.dataprovider import DataProvider -from freqtrade.data.history import load_data +from freqtrade.data.history import get_timerange, load_data from freqtrade.exceptions import OperationalException -from freqtrade.exchange import timeframe_to_prev_date +from freqtrade.exchange import timeframe_to_prev_date, timeframe_to_seconds from freqtrade.misc import pair_to_filename from freqtrade.resolvers import ExchangeResolver, StrategyResolver from freqtrade.strategy import IStrategy @@ -29,7 +29,7 @@ except ImportError: exit(1) -def init_plotscript(config): +def init_plotscript(config, startup_candles: int = 0): """ Initialize objects needed for plotting :return: Dict with candle (OHLCV) data, trades and pairs @@ -48,9 +48,16 @@ def init_plotscript(config): pairs=pairs, timeframe=config.get('timeframe', '5m'), timerange=timerange, + startup_candles=startup_candles, data_format=config.get('dataformat_ohlcv', 'json'), ) + if startup_candles: + min_date, max_date = get_timerange(data) + logger.info(f"Loading data from {min_date} to {max_date}") + timerange.adjust_start_if_necessary(timeframe_to_seconds(config.get('timeframe', '5m')), + startup_candles, min_date) + no_trades = False filename = config.get('exportfilename') if config.get('no_trades', False): @@ -72,6 +79,7 @@ def init_plotscript(config): return {"ohlcv": data, "trades": trades, "pairs": pairs, + "timerange": timerange, } @@ -474,7 +482,8 @@ def load_and_plot_trades(config: Dict[str, Any]): exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config) IStrategy.dp = DataProvider(config, exchange) - plot_elements = init_plotscript(config) + plot_elements = init_plotscript(config, strategy.startup_candle_count) + timerange = plot_elements['timerange'] trades = plot_elements['trades'] pair_counter = 0 for pair, data in plot_elements["ohlcv"].items(): @@ -482,6 +491,7 @@ def load_and_plot_trades(config: Dict[str, Any]): logger.info("analyse pair %s", pair) df_analyzed = strategy.analyze_ticker(data, {'pair': pair}) + df_analyzed = trim_dataframe(df_analyzed, timerange) trades_pair = trades.loc[trades['pair'] == pair] trades_pair = extract_trades_of_period(df_analyzed, trades_pair) diff --git a/tests/test_plotting.py b/tests/test_plotting.py index 401f66b60..d3f97013d 100644 --- a/tests/test_plotting.py +++ b/tests/test_plotting.py @@ -51,9 +51,10 @@ def test_init_plotscript(default_conf, mocker, testdatadir): assert "ohlcv" in ret assert "trades" in ret assert "pairs" in ret + assert 'timerange' in ret default_conf['pairs'] = ["TRX/BTC", "ADA/BTC"] - ret = init_plotscript(default_conf) + ret = init_plotscript(default_conf, 20) assert "ohlcv" in ret assert "TRX/BTC" in ret["ohlcv"] assert "ADA/BTC" in ret["ohlcv"] From 7243c8ee56852d1fd649ffcbc5bff28fd57e7e8a Mon Sep 17 00:00:00 2001 From: SamVerhaegen Date: Sun, 15 Nov 2020 13:06:05 +0100 Subject: [PATCH 3395/3421] Fix typo in windows installation docs. --- docs/windows_installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows_installation.md b/docs/windows_installation.md index 0ef0f131f..924459a6d 100644 --- a/docs/windows_installation.md +++ b/docs/windows_installation.md @@ -32,7 +32,7 @@ python -m venv .env .env\Scripts\activate.ps1 # optionally install ta-lib from wheel # Eventually adjust the below filename to match the downloaded wheel -pip install build_helpes/TA_Lib‑0.4.19‑cp38‑cp38‑win_amd64.whl +pip install build_helpers/TA_Lib-0.4.19-cp38-cp38-win_amd64.whl pip install -r requirements.txt pip install -e . freqtrade From da16474b2561a12636e0440d2100b0bb691a8f2d Mon Sep 17 00:00:00 2001 From: Aleksey Savin Date: Sun, 15 Nov 2020 15:13:44 +0300 Subject: [PATCH 3396/3421] Update telegram-usage.md --- docs/telegram-usage.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md index ce2d715a0..5def6efd2 100644 --- a/docs/telegram-usage.md +++ b/docs/telegram-usage.md @@ -35,12 +35,16 @@ Copy the API Token (`22222222:APITOKEN` in the above example) and keep use it fo Don't forget to start the conversation with your bot, by clicking `/START` button -### 2. Get your user id +### 2. Telegram user_id +#### Get your user id Talk to the [userinfobot](https://telegram.me/userinfobot) Get your "Id", you will use it for the config parameter `chat_id`. +#### Use Group id +You can use bots in telegram groups just adding them to it. You can find the group id by adding a [RawDataBot](https://telegram.me/rawdatabot) to it, group id is the `"chat":{"id":-1001332619709}` in the [RawDataBot](https://telegram.me/rawdatabot) message. Dont forget about "-" (minus symbol) in start of value if it is and use string type in config, for example: `"chat_id":"-1001332619709"`. + ## Control telegram noise Freqtrade provides means to control the verbosity of your telegram bot. From 7b4c1ec3ced1ebcc2f8be06e2602f7223d964d5d Mon Sep 17 00:00:00 2001 From: Matthias Date: Sun, 15 Nov 2020 15:40:40 +0100 Subject: [PATCH 3397/3421] Small wording changes --- docs/telegram-usage.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md index 5def6efd2..09cf21223 100644 --- a/docs/telegram-usage.md +++ b/docs/telegram-usage.md @@ -36,6 +36,7 @@ Copy the API Token (`22222222:APITOKEN` in the above example) and keep use it fo Don't forget to start the conversation with your bot, by clicking `/START` button ### 2. Telegram user_id + #### Get your user id Talk to the [userinfobot](https://telegram.me/userinfobot) @@ -43,7 +44,20 @@ Talk to the [userinfobot](https://telegram.me/userinfobot) Get your "Id", you will use it for the config parameter `chat_id`. #### Use Group id -You can use bots in telegram groups just adding them to it. You can find the group id by adding a [RawDataBot](https://telegram.me/rawdatabot) to it, group id is the `"chat":{"id":-1001332619709}` in the [RawDataBot](https://telegram.me/rawdatabot) message. Dont forget about "-" (minus symbol) in start of value if it is and use string type in config, for example: `"chat_id":"-1001332619709"`. + +You can use bots in telegram groups by just adding them to the group. You can find the group id by first adding a [RawDataBot](https://telegram.me/rawdatabot) to your group. The Group id is shown as id in the `"chat"` section, which the RawDataBot will send to you: + +``` json +"chat":{ + "id":-1001332619709 +} +``` + +For the Freqtrade configuration, you can then use the the full value (including `-` if it's there) as string: + +```json + "chat_id": "-1001332619709" +``` ## Control telegram noise From 6ebc2f38974eff34140d63b2955f1e1b54f82b3e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Nov 2020 05:40:25 +0000 Subject: [PATCH 3398/3421] Bump mkdocs-material from 6.1.4 to 6.1.5 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 6.1.4 to 6.1.5. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/6.1.4...6.1.5) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index f034b0b36..cd294bef6 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,3 +1,3 @@ -mkdocs-material==6.1.4 +mkdocs-material==6.1.5 mdx_truly_sane_lists==1.2 pymdown-extensions==8.0.1 From e52c181a2a2a8a369a69fdff2f758767bb42b969 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Nov 2020 05:40:35 +0000 Subject: [PATCH 3399/3421] Bump flask-jwt-extended from 3.24.1 to 3.25.0 Bumps [flask-jwt-extended](https://github.com/vimalloc/flask-jwt-extended) from 3.24.1 to 3.25.0. - [Release notes](https://github.com/vimalloc/flask-jwt-extended/releases) - [Commits](https://github.com/vimalloc/flask-jwt-extended/compare/3.24.1...3.25.0) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 4622afa15..ea33cdf3c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -29,7 +29,7 @@ sdnotify==0.3.2 # Api server flask==1.1.2 -flask-jwt-extended==3.24.1 +flask-jwt-extended==3.25.0 flask-cors==3.0.9 # Support for colorized terminal output From 23947cf30b0dcfc7aab066d48237e0dcd229fb6b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Nov 2020 05:40:50 +0000 Subject: [PATCH 3400/3421] Bump requests from 2.24.0 to 2.25.0 Bumps [requests](https://github.com/psf/requests) from 2.24.0 to 2.25.0. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/master/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.24.0...v2.25.0) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 4622afa15..e56dcf4d1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,7 @@ SQLAlchemy==1.3.20 python-telegram-bot==13.0 arrow==0.17.0 cachetools==4.1.1 -requests==2.24.0 +requests==2.25.0 urllib3==1.25.11 wrapt==1.12.1 jsonschema==3.2.0 From f092a923990515976cfccabc59010d8ccddfd5ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Nov 2020 07:51:10 +0000 Subject: [PATCH 3401/3421] Bump urllib3 from 1.25.11 to 1.26.2 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.11 to 1.26.2. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/master/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.25.11...1.26.2) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 5ce060819..d60a0ebba 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ python-telegram-bot==13.0 arrow==0.17.0 cachetools==4.1.1 requests==2.25.0 -urllib3==1.25.11 +urllib3==1.26.2 wrapt==1.12.1 jsonschema==3.2.0 TA-Lib==0.4.19 From 3f2addb729f0d462ec11a40197eba4f00c17706a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Nov 2020 09:17:22 +0000 Subject: [PATCH 3402/3421] Bump ccxt from 1.37.41 to 1.37.69 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.37.41 to 1.37.69. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.37.41...1.37.69) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d60a0ebba..67b69a5dd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.19.4 pandas==1.1.4 -ccxt==1.37.41 +ccxt==1.37.69 aiohttp==3.7.2 SQLAlchemy==1.3.20 python-telegram-bot==13.0 From 9621734adc37eb6f6edbd24907e42d35628d70ea Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 17 Nov 2020 06:53:38 +0100 Subject: [PATCH 3403/3421] Allow setting datafromat via configuration closes #3953 --- freqtrade/commands/cli_options.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index 4769bccde..619a300ae 100644 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -354,13 +354,11 @@ AVAILABLE_CLI_OPTIONS = { '--data-format-ohlcv', help='Storage format for downloaded candle (OHLCV) data. (default: `%(default)s`).', choices=constants.AVAILABLE_DATAHANDLERS, - default='json' ), "dataformat_trades": Arg( '--data-format-trades', help='Storage format for downloaded trades data. (default: `%(default)s`).', choices=constants.AVAILABLE_DATAHANDLERS, - default='jsongz' ), "exchange": Arg( '--exchange', From 4a215821cdc2c3017c15fff2082a2b5e58773c61 Mon Sep 17 00:00:00 2001 From: Samaoo Date: Tue, 17 Nov 2020 14:07:24 +0100 Subject: [PATCH 3404/3421] Fix typo in windows installation docs --- docs/windows_installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows_installation.md b/docs/windows_installation.md index 924459a6d..0c1eeef64 100644 --- a/docs/windows_installation.md +++ b/docs/windows_installation.md @@ -50,7 +50,7 @@ freqtrade error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools ``` -Unfortunately, many packages requiring compilation don't provide a pre-build wheel. It is therefore mandatory to have a C/C++ compiler installed and available for your python environment to use. +Unfortunately, many packages requiring compilation don't provide a pre-built wheel. It is therefore mandatory to have a C/C++ compiler installed and available for your python environment to use. The easiest way is to download install Microsoft Visual Studio Community [here](https://visualstudio.microsoft.com/downloads/) and make sure to install "Common Tools for Visual C++" to enable building c code on Windows. Unfortunately, this is a heavy download / dependency (~4Gb) so you might want to consider WSL or [docker](docker.md) first. From 854d0c481f0b7569f4e28418a64e088aeb6c0bd4 Mon Sep 17 00:00:00 2001 From: Samaoo Date: Tue, 17 Nov 2020 14:14:42 +0100 Subject: [PATCH 3405/3421] Update windows_installation.md --- docs/windows_installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows_installation.md b/docs/windows_installation.md index 0c1eeef64..5341ce96b 100644 --- a/docs/windows_installation.md +++ b/docs/windows_installation.md @@ -52,6 +52,6 @@ error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Unfortunately, many packages requiring compilation don't provide a pre-built wheel. It is therefore mandatory to have a C/C++ compiler installed and available for your python environment to use. -The easiest way is to download install Microsoft Visual Studio Community [here](https://visualstudio.microsoft.com/downloads/) and make sure to install "Common Tools for Visual C++" to enable building c code on Windows. Unfortunately, this is a heavy download / dependency (~4Gb) so you might want to consider WSL or [docker](docker.md) first. +The easiest way is to download install Microsoft Visual Studio Community [here](https://visualstudio.microsoft.com/downloads/) and make sure to install "Common Tools for Visual C++" to enable building C code on Windows. Unfortunately, this is a heavy download / dependency (~4Gb) so you might want to consider WSL or [docker](docker.md) first. --- From 52c9a2c37f62196d43f09b41fb0a90dc187a37e2 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 19 Nov 2020 07:30:28 +0100 Subject: [PATCH 3406/3421] Convert np to None when loading hdf5 trades to allow duplicate detection --- freqtrade/data/history/hdf5datahandler.py | 4 +++- tests/data/test_history.py | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/freqtrade/data/history/hdf5datahandler.py b/freqtrade/data/history/hdf5datahandler.py index f6cf9e0d9..00e41673d 100644 --- a/freqtrade/data/history/hdf5datahandler.py +++ b/freqtrade/data/history/hdf5datahandler.py @@ -3,6 +3,7 @@ import re from pathlib import Path from typing import List, Optional +import numpy as np import pandas as pd from freqtrade import misc @@ -175,7 +176,8 @@ class HDF5DataHandler(IDataHandler): if timerange.stoptype == 'date': where.append(f"timestamp < {timerange.stopts * 1e3}") - trades = pd.read_hdf(filename, key=key, mode="r", where=where) + trades: pd.DataFrame = pd.read_hdf(filename, key=key, mode="r", where=where) + trades[['id', 'type']] = trades[['id', 'type']].replace({np.nan: None}) return trades.values.tolist() def trades_purge(self, pair: str) -> bool: diff --git a/tests/data/test_history.py b/tests/data/test_history.py index bbc6e55b4..538a0840f 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -724,6 +724,8 @@ def test_hdf5datahandler_trades_load(testdatadir): trades2 = dh._trades_load('XRP/ETH', timerange) assert len(trades) > len(trades2) + # Check that ID is None (If it's nan, it's wrong) + assert trades2[0][2] is None # unfiltered load has trades before starttime assert len([t for t in trades if t[0] < timerange.startts * 1000]) >= 0 From f88fe5d950daf3ab68f9153648bf8d94f20593b0 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 19 Nov 2020 19:14:43 +0100 Subject: [PATCH 3407/3421] Document new "allow_inactive" option --- docs/includes/pairlists.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/includes/pairlists.md b/docs/includes/pairlists.md index ae4ec818d..aebd084ab 100644 --- a/docs/includes/pairlists.md +++ b/docs/includes/pairlists.md @@ -35,6 +35,10 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis ], ``` +By default, only currently enabled pairs are allowed. +To skip pair validation against active markets, set `"allow_inactive": true` within the `StaticPairList` configuration. +This can be useful for backtesting expired pairs (like quarterly spot-markets). + #### Volume Pair List `VolumePairList` employs sorting/filtering of pairs by their trading volume. It selects `number_assets` top pairs with sorting based on the `sort_key` (which can only be `quoteVolume`). From 97e58a42f4caf1803af411937123461bda7ca244 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 19 Nov 2020 19:17:31 +0100 Subject: [PATCH 3408/3421] Update documentation with new options --- docs/configuration.md | 1 + docs/includes/pairlists.md | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/configuration.md b/docs/configuration.md index 47362e525..080ddd046 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -87,6 +87,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `exchange.ccxt_sync_config` | Additional CCXT parameters passed to the regular (sync) ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
              **Datatype:** Dict | `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation)
              **Datatype:** Dict | `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded.
              *Defaults to `60` minutes.*
              **Datatype:** Positive Integer +| `exchange.skip_pair_validation` | Skip pairlist validation on startup.
              *Defaults to `false`
              **Datatype:** Boolean | `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation. | `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now.
              *Defaults to `true`.*
              **Datatype:** Boolean | `pairlists` | Define one or more pairlists to be used. [More information below](#pairlists-and-pairlist-handlers).
              *Defaults to `StaticPairList`.*
              **Datatype:** List of Dicts diff --git a/docs/includes/pairlists.md b/docs/includes/pairlists.md index aebd084ab..e6a9fc1a8 100644 --- a/docs/includes/pairlists.md +++ b/docs/includes/pairlists.md @@ -38,6 +38,7 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis By default, only currently enabled pairs are allowed. To skip pair validation against active markets, set `"allow_inactive": true` within the `StaticPairList` configuration. This can be useful for backtesting expired pairs (like quarterly spot-markets). +This option must be configured along with `exchange.skip_pair_validation` in the exchange configuration. #### Volume Pair List From aa0c3dced8bac13b35e241f287d1d9a4cbcecd31 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 20 Nov 2020 13:14:02 +0100 Subject: [PATCH 3409/3421] Improve order types documentation --- docs/configuration.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 080ddd046..56ba13414 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -314,22 +314,21 @@ Configuration: } ``` -!!! Note +!!! Note "Market order support" Not all exchanges support "market" orders. The following message will be shown if your exchange does not support market orders: - `"Exchange does not support market orders."` + `"Exchange does not support market orders."` and the bot will refuse to start. -!!! Note - Stoploss on exchange interval is not mandatory. Do not change its value if you are +!!! Warning "Using market orders" + Please carefully read the section [Market order pricing](#market-order-pricing) section when using market orders. + +!!! Note "Stoploss on exchange" + `stoploss_on_exchange_interval` is not mandatory. Do not change its value if you are unsure of what you are doing. For more information about how stoploss works please refer to [the stoploss documentation](stoploss.md). -!!! Note If `stoploss_on_exchange` is enabled and the stoploss is cancelled manually on the exchange, then the bot will create a new stoploss order. -!!! Warning "Using market orders" - Please read the section [Market order pricing](#market-order-pricing) section when using market orders. - !!! Warning "Warning: stoploss_on_exchange failures" If stoploss on exchange creation fails for some reason, then an "emergency sell" is initiated. By default, this will sell the asset using a market order. The order-type for the emergency-sell can be changed by setting the `emergencysell` value in the `order_types` dictionary - however this is not advised. From 5ed85963a950eada9571b2f6f19130ff15878157 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 21 Nov 2020 10:39:49 +0100 Subject: [PATCH 3410/3421] Allow forcebuy price to be a string by converting it to float fix #3970 --- freqtrade/rpc/api_server.py | 2 ++ freqtrade/rpc/rpc.py | 2 +- tests/rpc/test_rpc.py | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 7f4773d57..384d7c6c2 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -508,6 +508,8 @@ class ApiServer(RPC): """ asset = request.json.get("pair") price = request.json.get("price", None) + price = float(price) if price is not None else price + trade = self._rpc_forcebuy(asset, price) if trade: return jsonify(trade.to_json()) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 90564a19d..e608a2274 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -524,7 +524,7 @@ class RPC: stake_currency = self._freqtrade.config.get('stake_currency') if not self._freqtrade.exchange.get_pair_quote_currency(pair) == stake_currency: raise RPCException( - f'Wrong pair selected. Please pairs with stake {stake_currency} pairs only') + f'Wrong pair selected. Only pairs with stake-currency {stake_currency} allowed.') # check if valid pair # check if pair already has an open pair diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 23ca53e53..47e0f763d 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -868,7 +868,8 @@ def test_rpcforcebuy(mocker, default_conf, ticker, fee, limit_buy_order_open) -> assert trade.open_rate == 0.0001 # Test buy pair not with stakes - with pytest.raises(RPCException, match=r'Wrong pair selected. Please pairs with stake.*'): + with pytest.raises(RPCException, + match=r'Wrong pair selected. Only pairs with stake-currency.*'): rpc._rpc_forcebuy('LTC/ETH', 0.0001) pair = 'XRP/BTC' From 83861fabdea798100c5322a9efe5db4f7a23c84a Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 21 Nov 2020 10:52:15 +0100 Subject: [PATCH 3411/3421] Fix #3967, move TradeList type to constants --- freqtrade/constants.py | 3 +++ freqtrade/data/converter.py | 10 +++++---- freqtrade/data/history/hdf5datahandler.py | 4 ++-- freqtrade/data/history/idatahandler.py | 5 +---- freqtrade/data/history/jsondatahandler.py | 4 ++-- tests/data/test_converter.py | 27 ++++++++++++++++++++++- 6 files changed, 40 insertions(+), 13 deletions(-) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index dc5384f6f..3271dda39 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -365,3 +365,6 @@ CANCEL_REASON = { # List of pairs with their timeframes PairWithTimeframe = Tuple[str, str] ListPairsWithTimeframes = List[PairWithTimeframe] + +# Type for trades list +TradeList = List[List] diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 38fa670e9..09930950a 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -10,7 +10,7 @@ from typing import Any, Dict, List import pandas as pd from pandas import DataFrame, to_datetime -from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS +from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS, TradeList logger = logging.getLogger(__name__) @@ -168,7 +168,7 @@ def trades_remove_duplicates(trades: List[List]) -> List[List]: return [i for i, _ in itertools.groupby(sorted(trades, key=itemgetter(0)))] -def trades_dict_to_list(trades: List[Dict]) -> List[List]: +def trades_dict_to_list(trades: List[Dict]) -> TradeList: """ Convert fetch_trades result into a List (to be more memory efficient). :param trades: List of trades, as returned by ccxt.fetch_trades. @@ -177,16 +177,18 @@ def trades_dict_to_list(trades: List[Dict]) -> List[List]: return [[t[col] for col in DEFAULT_TRADES_COLUMNS] for t in trades] -def trades_to_ohlcv(trades: List, timeframe: str) -> DataFrame: +def trades_to_ohlcv(trades: TradeList, timeframe: str) -> DataFrame: """ Converts trades list to OHLCV list - TODO: This should get a dedicated test :param trades: List of trades, as returned by ccxt.fetch_trades. :param timeframe: Timeframe to resample data to :return: OHLCV Dataframe. + :raises: Valueerror if no trades are provided """ from freqtrade.exchange import timeframe_to_minutes timeframe_minutes = timeframe_to_minutes(timeframe) + if not trades: + raise ValueError('Trade-list empty.') df = pd.DataFrame(trades, columns=DEFAULT_TRADES_COLUMNS) df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms', utc=True,) diff --git a/freqtrade/data/history/hdf5datahandler.py b/freqtrade/data/history/hdf5datahandler.py index 00e41673d..d116637e7 100644 --- a/freqtrade/data/history/hdf5datahandler.py +++ b/freqtrade/data/history/hdf5datahandler.py @@ -9,9 +9,9 @@ import pandas as pd from freqtrade import misc from freqtrade.configuration import TimeRange from freqtrade.constants import (DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS, - ListPairsWithTimeframes) + ListPairsWithTimeframes, TradeList) -from .idatahandler import IDataHandler, TradeList +from .idatahandler import IDataHandler logger = logging.getLogger(__name__) diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index a170a9dc5..070d9039d 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -13,16 +13,13 @@ from typing import List, Optional, Type from pandas import DataFrame from freqtrade.configuration import TimeRange -from freqtrade.constants import ListPairsWithTimeframes +from freqtrade.constants import ListPairsWithTimeframes, TradeList from freqtrade.data.converter import clean_ohlcv_dataframe, trades_remove_duplicates, trim_dataframe from freqtrade.exchange import timeframe_to_seconds logger = logging.getLogger(__name__) -# Type for trades list -TradeList = List[List] - class IDataHandler(ABC): diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 6436aa13d..9122170d5 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -8,10 +8,10 @@ from pandas import DataFrame, read_json, to_datetime from freqtrade import misc from freqtrade.configuration import TimeRange -from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS, ListPairsWithTimeframes +from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS, ListPairsWithTimeframes, TradeList from freqtrade.data.converter import trades_dict_to_list -from .idatahandler import IDataHandler, TradeList +from .idatahandler import IDataHandler logger = logging.getLogger(__name__) diff --git a/tests/data/test_converter.py b/tests/data/test_converter.py index fdba7900f..4fdcce4d2 100644 --- a/tests/data/test_converter.py +++ b/tests/data/test_converter.py @@ -1,10 +1,13 @@ # pragma pylint: disable=missing-docstring, C0103 import logging +import pytest + from freqtrade.configuration.timerange import TimeRange from freqtrade.data.converter import (convert_ohlcv_format, convert_trades_format, ohlcv_fill_up_missing_data, ohlcv_to_dataframe, - trades_dict_to_list, trades_remove_duplicates, trim_dataframe) + trades_dict_to_list, trades_remove_duplicates, + trades_to_ohlcv, trim_dataframe) from freqtrade.data.history import (get_timerange, load_data, load_pair_history, validate_backtest_data) from tests.conftest import log_has @@ -26,6 +29,28 @@ def test_ohlcv_to_dataframe(ohlcv_history_list, caplog): assert log_has('Converting candle (OHLCV) data to dataframe for pair UNITTEST/BTC.', caplog) +def test_trades_to_ohlcv(ohlcv_history_list, caplog): + + caplog.set_level(logging.DEBUG) + with pytest.raises(ValueError, match="Trade-list empty."): + trades_to_ohlcv([], '1m') + + trades = [ + [1570752011620, "13519807", None, "sell", 0.00141342, 23.0, 0.03250866], + [1570752011620, "13519808", None, "sell", 0.00141266, 54.0, 0.07628364], + [1570752017964, "13519809", None, "sell", 0.00141266, 8.0, 0.01130128]] + + df = trades_to_ohlcv(trades, '1m') + assert not df.empty + assert len(df) == 1 + assert 'open' in df.columns + assert 'high' in df.columns + assert 'low' in df.columns + assert 'close' in df.columns + assert df.loc[:, 'high'][0] == 0.00141342 + assert df.loc[:, 'low'][0] == 0.00141266 + + def test_ohlcv_fill_up_missing_data(testdatadir, caplog): data = load_pair_history(datadir=testdatadir, timeframe='1m', From e8e3ca0c3c114637a460fdddeea5fca155bdf534 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 21 Nov 2020 10:57:19 +0100 Subject: [PATCH 3412/3421] Catch ValueError from trade_conversion closes #3967 --- freqtrade/data/converter.py | 2 +- freqtrade/data/history/history_utils.py | 9 ++++++--- tests/data/test_history.py | 6 ++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/freqtrade/data/converter.py b/freqtrade/data/converter.py index 09930950a..d4053abaa 100644 --- a/freqtrade/data/converter.py +++ b/freqtrade/data/converter.py @@ -183,7 +183,7 @@ def trades_to_ohlcv(trades: TradeList, timeframe: str) -> DataFrame: :param trades: List of trades, as returned by ccxt.fetch_trades. :param timeframe: Timeframe to resample data to :return: OHLCV Dataframe. - :raises: Valueerror if no trades are provided + :raises: ValueError if no trades are provided """ from freqtrade.exchange import timeframe_to_minutes timeframe_minutes = timeframe_to_minutes(timeframe) diff --git a/freqtrade/data/history/history_utils.py b/freqtrade/data/history/history_utils.py index a420b9dcc..17b510b92 100644 --- a/freqtrade/data/history/history_utils.py +++ b/freqtrade/data/history/history_utils.py @@ -356,9 +356,12 @@ def convert_trades_to_ohlcv(pairs: List[str], timeframes: List[str], if erase: if data_handler_ohlcv.ohlcv_purge(pair, timeframe): logger.info(f'Deleting existing data for pair {pair}, interval {timeframe}.') - ohlcv = trades_to_ohlcv(trades, timeframe) - # Store ohlcv - data_handler_ohlcv.ohlcv_store(pair, timeframe, data=ohlcv) + try: + ohlcv = trades_to_ohlcv(trades, timeframe) + # Store ohlcv + data_handler_ohlcv.ohlcv_store(pair, timeframe, data=ohlcv) + except ValueError: + logger.exception(f'Could not convert {pair} to OHLCV.') def get_timerange(data: Dict[str, DataFrame]) -> Tuple[arrow.Arrow, arrow.Arrow]: diff --git a/tests/data/test_history.py b/tests/data/test_history.py index 538a0840f..905798041 100644 --- a/tests/data/test_history.py +++ b/tests/data/test_history.py @@ -620,6 +620,12 @@ def test_convert_trades_to_ohlcv(mocker, default_conf, testdatadir, caplog): _clean_test_file(file1) _clean_test_file(file5) + assert not log_has('Could not convert NoDatapair to OHLCV.', caplog) + + convert_trades_to_ohlcv(['NoDatapair'], timeframes=['1m', '5m'], + datadir=testdatadir, timerange=tr, erase=True) + assert log_has('Could not convert NoDatapair to OHLCV.', caplog) + def test_datahandler_ohlcv_get_pairs(testdatadir): pairs = JsonDataHandler.ohlcv_get_pairs(testdatadir, '5m') From 89ea8dbef2a73c050649d45db6185de8fb8cf789 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 21 Nov 2020 11:13:44 +0100 Subject: [PATCH 3413/3421] Update slack invite --- CONTRIBUTING.md | 3 +-- README.md | 2 +- docs/developer.md | 2 +- docs/faq.md | 2 +- docs/index.md | 2 +- docs/strategy-customization.md | 2 -- 6 files changed, 5 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 399588f88..6b4e8adaf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,8 +12,7 @@ Few pointers for contributions: - New features need to contain unit tests, must conform to PEP8 (max-line-length = 100) and should be documented with the introduction PR. - PR's can be declared as `[WIP]` - which signify Work in Progress Pull Requests (which are not finished). -If you are unsure, discuss the feature on our [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) -or in a [issue](https://github.com/freqtrade/freqtrade/issues) before a PR. +If you are unsure, discuss the feature on our [discord server](https://discord.gg/MA9v74M), on [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg) or in a [issue](https://github.com/freqtrade/freqtrade/issues) before a PR. ## Getting started diff --git a/README.md b/README.md index c9f4d0a52..4daa1854a 100644 --- a/README.md +++ b/README.md @@ -171,7 +171,7 @@ to understand the requirements before sending your pull-requests. Coding is not a necessity to contribute - maybe start with improving our documentation? Issues labeled [good first issue](https://github.com/freqtrade/freqtrade/labels/good%20first%20issue) can be good first contributions, and will help get you familiar with the codebase. -**Note** before starting any major new feature work, *please open an issue describing what you are planning to do* or talk to us on [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE). This will ensure that interested parties can give valuable feedback on the feature, and let others know that you are working on it. +**Note** before starting any major new feature work, *please open an issue describing what you are planning to do* or talk to us on [discord](https://discord.gg/MA9v74M) or [Slack](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg). This will ensure that interested parties can give valuable feedback on the feature, and let others know that you are working on it. **Important:** Always create your PR against the `develop` branch, not `stable`. diff --git a/docs/developer.md b/docs/developer.md index 8ef816d5d..c253f4460 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -2,7 +2,7 @@ This page is intended for developers of Freqtrade, people who want to contribute to the Freqtrade codebase or documentation, or people who want to understand the source code of the application they're running. -All contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas are welcome. We [track issues](https://github.com/freqtrade/freqtrade/issues) on [GitHub](https://github.com) and also have a dev channel in [slack](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) where you can ask questions. +All contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas are welcome. We [track issues](https://github.com/freqtrade/freqtrade/issues) on [GitHub](https://github.com) and also have a dev channel on [discord](https://discord.gg/MA9v74M) or [slack](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg) where you can ask questions. ## Documentation diff --git a/docs/faq.md b/docs/faq.md index a775060de..aa33218fb 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -145,7 +145,7 @@ freqtrade hyperopt --hyperop SampleHyperopt --hyperopt-loss SharpeHyperOptLossDa ### Why does it take a long time to run hyperopt? -* Discovering a great strategy with Hyperopt takes time. Study www.freqtrade.io, the Freqtrade Documentation page, join the Freqtrade [Slack community](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) - or the Freqtrade [discord community](https://discord.gg/X89cVG). While you patiently wait for the most advanced, free crypto bot in the world, to hand you a possible golden strategy specially designed just for you. +* Discovering a great strategy with Hyperopt takes time. Study www.freqtrade.io, the Freqtrade Documentation page, join the Freqtrade [Slack community](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg) - or the Freqtrade [discord community](https://discord.gg/X89cVG). While you patiently wait for the most advanced, free crypto bot in the world, to hand you a possible golden strategy specially designed just for you. * If you wonder why it can take from 20 minutes to days to do 1000 epochs here are some answers: diff --git a/docs/index.md b/docs/index.md index 5608587db..c6697d165 100644 --- a/docs/index.md +++ b/docs/index.md @@ -63,7 +63,7 @@ Alternatively For any questions not covered by the documentation or for further information about the bot, we encourage you to join our passionate Slack community. -Click [here](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) to join the Freqtrade Slack channel. +Click [here](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg) to join the Freqtrade Slack channel. Alternatively, check out the newly created [discord server](https://discord.gg/MA9v74M). diff --git a/docs/strategy-customization.md b/docs/strategy-customization.md index 6c7d78864..db007985f 100644 --- a/docs/strategy-customization.md +++ b/docs/strategy-customization.md @@ -770,8 +770,6 @@ To get additional Ideas for strategies, head over to our [strategy repository](h Feel free to use any of them as inspiration for your own strategies. We're happy to accept Pull Requests containing new Strategies to that repo. -We also got a *strategy-sharing* channel in our [Slack community](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE) which is a great place to get and/or share ideas. - ## Next step Now you have a perfect strategy you probably want to backtest it. From 4d60a4cf4e9a850a1c03ac2923e163b6969564fd Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 21 Nov 2020 11:32:46 +0100 Subject: [PATCH 3414/3421] Add warning to StochRSI in sample strategy closes #2961 --- freqtrade/templates/sample_strategy.py | 2 ++ freqtrade/templates/subtemplates/indicators_full.j2 | 2 ++ 2 files changed, 4 insertions(+) diff --git a/freqtrade/templates/sample_strategy.py b/freqtrade/templates/sample_strategy.py index 44590dbbe..b3f9fef07 100644 --- a/freqtrade/templates/sample_strategy.py +++ b/freqtrade/templates/sample_strategy.py @@ -184,6 +184,8 @@ class SampleStrategy(IStrategy): dataframe['fastk'] = stoch_fast['fastk'] # # Stochastic RSI + # Please read https://github.com/freqtrade/freqtrade/issues/2961 before using this. + # STOCHRSI is NOT aligned with tradingview, which may result in non-expected results. # stoch_rsi = ta.STOCHRSI(dataframe) # dataframe['fastd_rsi'] = stoch_rsi['fastd'] # dataframe['fastk_rsi'] = stoch_rsi['fastk'] diff --git a/freqtrade/templates/subtemplates/indicators_full.j2 b/freqtrade/templates/subtemplates/indicators_full.j2 index 60a358bec..57d2ca665 100644 --- a/freqtrade/templates/subtemplates/indicators_full.j2 +++ b/freqtrade/templates/subtemplates/indicators_full.j2 @@ -62,6 +62,8 @@ dataframe['fastd'] = stoch_fast['fastd'] dataframe['fastk'] = stoch_fast['fastk'] # # Stochastic RSI +# Please read https://github.com/freqtrade/freqtrade/issues/2961 before using this. +# STOCHRSI is NOT aligned with tradingview, which may result in non-expected results. # stoch_rsi = ta.STOCHRSI(dataframe) # dataframe['fastd_rsi'] = stoch_rsi['fastd'] # dataframe['fastk_rsi'] = stoch_rsi['fastk'] From 73f0e6e704fc85c57f0b7d982a1ff0df0fae7fa5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 21 Nov 2020 11:40:28 +0100 Subject: [PATCH 3415/3421] Improve wording for discord server fix link to correct docker install guide --- README.md | 10 ++++------ docs/index.md | 13 +++++-------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 4daa1854a..8526b5c91 100644 --- a/README.md +++ b/README.md @@ -132,15 +132,13 @@ The project is currently setup in two main branches: ## Support -### Help / Slack / Discord +### Help / Discord / Slack -For any questions not covered by the documentation or for further information about the bot, we encourage you to join our slack channel. +For any questions not covered by the documentation or for further information about the bot, or to simply engage with like-minded individuals, we encourage you to join our slack channel. -- [Click here to join Slack channel](https://join.slack.com/t/highfrequencybot/shared_invite/enQtNjU5ODcwNjI1MDU3LTU1MTgxMjkzNmYxNWE1MDEzYzQ3YmU4N2MwZjUyNjJjODRkMDVkNjg4YTAyZGYzYzlhOTZiMTE4ZjQ4YzM0OGE). +Please check out our [discord server](https://discord.gg/MA9v74M). -Alternatively, check out the newly created [discord server](https://discord.gg/MA9v74M). - -*Note*: Since the discord server is relatively new, answers to questions might be slightly delayed as currently the user base quite small. +You can also join our [Slack channel](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg). ### [Bugs / Issues](https://github.com/freqtrade/freqtrade/issues?q=is%3Aissue) diff --git a/docs/index.md b/docs/index.md index c6697d165..f63aeb6b8 100644 --- a/docs/index.md +++ b/docs/index.md @@ -59,17 +59,14 @@ Alternatively ## Support -### Help / Slack / Discord +### Help / Discord / Slack -For any questions not covered by the documentation or for further information about the bot, we encourage you to join our passionate Slack community. +For any questions not covered by the documentation or for further information about the bot, or to simply engage with like-minded individuals, we encourage you to join our slack channel. -Click [here](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg) to join the Freqtrade Slack channel. +Please check out our [discord server](https://discord.gg/MA9v74M). -Alternatively, check out the newly created [discord server](https://discord.gg/MA9v74M). - -!!! Note - Since the discord server is relatively new, answers to questions might be slightly delayed as currently the user base quite small. +You can also join our [Slack channel](https://join.slack.com/t/highfrequencybot/shared_invite/zt-jaut7r4m-Y17k4x5mcQES9a9swKuxbg). ## Ready to try? -Begin by reading our installation guide [for docker](docker.md) (recommended), or for [installation without docker](installation.md). +Begin by reading our installation guide [for docker](docker_quickstart.md) (recommended), or for [installation without docker](installation.md). From ec330112552afc3902bef12b6ea3884a39a16193 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Nov 2020 05:50:43 +0000 Subject: [PATCH 3416/3421] Bump ccxt from 1.37.69 to 1.38.13 Bumps [ccxt](https://github.com/ccxt/ccxt) from 1.37.69 to 1.38.13. - [Release notes](https://github.com/ccxt/ccxt/releases) - [Changelog](https://github.com/ccxt/ccxt/blob/master/doc/exchanges-by-country.rst) - [Commits](https://github.com/ccxt/ccxt/compare/1.37.69...1.38.13) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 67b69a5dd..7f2ac98b1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.19.4 pandas==1.1.4 -ccxt==1.37.69 +ccxt==1.38.13 aiohttp==3.7.2 SQLAlchemy==1.3.20 python-telegram-bot==13.0 From 83b4cd7b39f1ea2eba4d820043f47b7a42c96fd7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Nov 2020 05:50:51 +0000 Subject: [PATCH 3417/3421] Bump mkdocs-material from 6.1.5 to 6.1.6 Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 6.1.5 to 6.1.6. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/docs/changelog.md) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/6.1.5...6.1.6) Signed-off-by: dependabot[bot] --- docs/requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index cd294bef6..87bc6dfdd 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1,3 +1,3 @@ -mkdocs-material==6.1.5 +mkdocs-material==6.1.6 mdx_truly_sane_lists==1.2 pymdown-extensions==8.0.1 From be4807d85c24c719f87a3ee43d13012d5988de41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Nov 2020 05:50:52 +0000 Subject: [PATCH 3418/3421] Bump questionary from 1.8.0 to 1.8.1 Bumps [questionary](https://github.com/tmbo/questionary) from 1.8.0 to 1.8.1. - [Release notes](https://github.com/tmbo/questionary/releases) - [Commits](https://github.com/tmbo/questionary/compare/1.8.0...1.8.1) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 67b69a5dd..66fa04824 100644 --- a/requirements.txt +++ b/requirements.txt @@ -35,5 +35,5 @@ flask-cors==3.0.9 # Support for colorized terminal output colorama==0.4.4 # Building config files interactively -questionary==1.8.0 +questionary==1.8.1 prompt-toolkit==3.0.8 From 7c7a8190abf5548ba54cc54141929668492ac56b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Nov 2020 05:50:54 +0000 Subject: [PATCH 3419/3421] Bump python-rapidjson from 0.9.3 to 0.9.4 Bumps [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) from 0.9.3 to 0.9.4. - [Release notes](https://github.com/python-rapidjson/python-rapidjson/releases) - [Changelog](https://github.com/python-rapidjson/python-rapidjson/blob/master/CHANGES.rst) - [Commits](https://github.com/python-rapidjson/python-rapidjson/compare/v0.9.3...v0.9.4) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 67b69a5dd..487b19159 100644 --- a/requirements.txt +++ b/requirements.txt @@ -22,7 +22,7 @@ blosc==1.9.2 py_find_1st==1.1.4 # Load ticker files 30% faster -python-rapidjson==0.9.3 +python-rapidjson==0.9.4 # Notify systemd sdnotify==0.3.2 From 56629d882e1d5fc39c00de14f5995af9ce16ce6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Nov 2020 05:51:03 +0000 Subject: [PATCH 3420/3421] Bump coveralls from 2.1.2 to 2.2.0 Bumps [coveralls](https://github.com/coveralls-clients/coveralls-python) from 2.1.2 to 2.2.0. - [Release notes](https://github.com/coveralls-clients/coveralls-python/releases) - [Changelog](https://github.com/coveralls-clients/coveralls-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/coveralls-clients/coveralls-python/compare/2.1.2...2.2.0) Signed-off-by: dependabot[bot] --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 1c96a880a..e681274c8 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -3,7 +3,7 @@ -r requirements-plot.txt -r requirements-hyperopt.txt -coveralls==2.1.2 +coveralls==2.2.0 flake8==3.8.4 flake8-type-annotations==0.1.0 flake8-tidy-imports==4.1.0 From 1ec99e6b76010c0f0471d009b64e7f3bef0c433d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Nov 2020 08:05:45 +0000 Subject: [PATCH 3421/3421] Bump aiohttp from 3.7.2 to 3.7.3 Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.7.2 to 3.7.3. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.7.2...v3.7.3) Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fa3024e30..7490688d4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ numpy==1.19.4 pandas==1.1.4 ccxt==1.38.13 -aiohttp==3.7.2 +aiohttp==3.7.3 SQLAlchemy==1.3.20 python-telegram-bot==13.0 arrow==0.17.0

              $A|6t6{{N!4b!`2pVt8GJ0vYO| z(e5MNyYFRCFeb`@A+wO!{qso0^3`Bs>bUrMe#^24O&4M(s$-Va7Di<2!x=h?JuuQ; z_He|cOiH-{(&%h`VL;LWNfTU`ws;3>*gaUpI4$0bX5dzaH6h6zQM>U;&t~ra=$GSx zt*2X8jJ5JFUlF-DUN~<=M?JY{OF<-yV0f18Eg?R}eyUqiO~K&4A5m`GR`c4$dqK6_ zolS`eoN&xUllE>wjqAHGU-wIeq5EjZkU13vq03WQF}NXCVr)(N^xjC$6>(3yS!_>PsIeqzr<0mN|yTw#T>hy5y_ zeeqcPa~2=_14}QfO!<>)mAT#Ok*(I##e}aHoV`{$=39QI21Be)XU>mcYn-1(%r(Um?MR+S+z|Auej(}NlZ;obAdObl`RoiW>;!oD^} zL(R1h&J?td<*%N*Jf4%3zxv0Q?r)jAdqVgBi|<`uCjZ(1QLgH__J zDrH)fDY3uG+r?KkV3e3n6QXotvMg5oZS2^Wc0*wEz6NByDJd{AQ@Kk4sdDc_=c z84HmMD_ezYOpxFRUrL6(a>+?3MUU|LK;1&kt#LiL&;Ws&@EuBVk2> zX9*t^$7D$WD0$%%&6@!!IgiuOWD>& zX(I|SAS*c@gwaXHKvH|jhnKK?+Vl{#^75;B$1m&>jeV}!1MhkwRKV7KvnmQ9H+}4D zaYI{gy((MVy45R5ow`efxoAh6Mh?cEU!*1fM&i7<*yg7i={pye`RkxP864$Zjo$1V z_l~0`UC2+;J3%5BclV9Pm0;>V0?JcK#ao?A1w^Q!qd~*9^kXZDz^iWw=)9WA?1BXv30UR}6DOh9{kwVYta6|^*CQ+%vk!e{YP@hY zBcYygN?V1tl?UUeg33}QCz(nqKM{HG@!x9|V|6bCYlqZrDRy4yqUJ8o{p_-$$@<#B zrD{sIeD6PkZxNNd`@w>Q(UkF5PahGrE9)-kf-n!y6<&TftZVri+-_w6_4+W@7woTa z%DJeh3f$lH@sA$U0y*W`Y6XWrXC3Yil@4#DTYFV!dt$N{DgtN&oSm=Rynd`sDE2w~ zPx2xO!c+zft%|~wpZ%j;2Caq?L+O9~>FGN4?H08YNt@kCht{8PX>EVg|E#NAOLuUe zYgC;q+P3XPXXKlEmsQyDV$THEPBx()-u3bc*2K?*|u6@o%hDAhwT=Mp;52zaBEbzs`4y zwtteeG4_y-i;2TIAeMsaO{k(E*yT(S}`a&9O{j7(pm2#}2^Ny=2TTy8?`x}xA`S?H;xo|mY z+rf4ks?_&u&|L{UrINKLFPTAg;OTk1%LGUNuSC0o)`4iPo!K$&-Xf9a~ka$I|1Lw2aKu$GZL;D z*uU)i<8GoLB+kKd*EE91A0wS%^;Ec2tae26rbGv!e{gqq;hUL6W1#5{f1UPDO@+W= z2vr9rlrUm7SEl{(TI~o(`R!a$!~mX}3?ceKgFZ`N3~LUCr}5;71x=;Ow2)1|GxZBB0iZ|g$g>MTREl^nL>iH#j^2ZP?i8h_G40u9EN;LnC8k(bt( z>&~r)#y^^yGe6IlNVV8sR^qt7D{tnh)b|DFAKAzar;(Bh(DI?pYJ~Ibw-NX&5hlGQoXw=8r zAFt`N^(5II-|qi<+c-)jplI{G(%L|yh&HqO*mf4dSnf8~BfNly?IWv#@7~nJ!hYU9 zDUR?p3uVZhxDQmGMpQo)C=<<-7~vigbK++m15gE^q@tL2PP-nKUfc?mGL%)H&h9UN z1fbVCF8QVM^uzRHyvzjv2n%nry?dcK@ugKwoFd_HPGaZ?br4l7Mq$+K>%PCjipUId zV<=}k91nV6P#SzyOVsWr<6Bgj>h%uGUPya9NrW_Ydba1N@p|+dwFG>$3pZJ$aoTo}4l?=K?;VBZu*hvmzW1(_!nde~up~p2DrMN( zC>lJu-_N58pJI=@po*NZfaZfmiHh)q1|`B4;o|xx0&L6%O<*jrn^(a=v{-!T3q*~& zQ@co-7jyScd$o|NgLo~x1mGq^>c${`^5x4)e%CwqJVy8!^jH6I;^ieotmul#Pgys9 zfVqLNd}5G8`?G1NhTqnLw*RGneou;*3IlR=@6hJ>LA1|0?c0tZ6aNu^?f$+0fz6 zts*03PrLdy(^QdjKULIQa}oWDVx2bzSx{#lB>eKTL9bG#5BaY2FUNN1=VYyR`O-F5 zE2a5xSLi~P$_vgR)~b{_@B!Z#R>iPja?{Et*|wclwBI3>Crb-YQ#)dGTvM_D8Ba;> zO5U2Q3J5E?BQ7`&9LTYkb9n9PbWxB5W*W@QeC$C8=`&KadNr33k{)jW+Sn0;J1Q!w zA2RElKs#-**_$UAp1H(CBsB(U%{~(0+v`%B#7Ph9AQYWN7S*;d`l3J#!Bp)l(2PFiiorX7- znQ#vv-^LBA*$lIewo zK3FTO`$#aNhw}U1$GP50g`1)|o7!P0qota>S1G0t98VFB{iDe{nT6<}r&1JQoEo!G zM;S)ZcR-J)#j6)~0{vI@=ey_0j;lE8>$LnAiM8H*1zl#mOVk>3W7aAcoWDX}y=WJG zFwAhpt13JkNXuyB!!-2Jz`$@2O#IfG?|64z%OYV{3fJc|K~WZ4vc9{%{f50@LH*Lu zsk5_Nqe;@1ic0vYNI)8dG)~}>pzcVSyiLfjh0~xnr83G!nGn9PQvU$iIWnfwQ*xbAdEo{cUFD{sW^*H+t^v+zVa?J!?EuWm%9 zgv7bVg+d~>{pM_er?H!0;eDHS4jpt1*6quorg8A zud}QScn2inUi~t=5u!OT^`ie$H#f)IW@SRQrXny6a(j#N2T}DqvuEqT0d;xw*?|wW zf5$#(PCHW7gnq|6D@G+}G5JG~W0KOZfq`qv7v>J>ZsVK<|5R*e{i=*r`cS8&cFkJB zf{sD)M=Kp(e&bx{*Jcf&LdT-`*OQFy!TlJZsKC0oC*>p(K85WjUD#FSx^b-|!pBe_ zO_}V z&e(pZiVTW)joUD~6ja$F(HAmWds0BV_C#b$Mra*DqL3=W3x_cv#Ioyi#`2pZILh}& zi!v(i2=5Q(mDXEXj58O_3I|CQhy#2w-U!q%3^`Q=aM1t!G_6l#S4lIIEh|+Ge4{=mbHUO4TI7zh*+$pz)7t&w z(R$IrTvWuh58Y|+Rc7aM)9=&XqkR&tq4s1Jm)YVs7X#(IcRk+op}xk+u3IUv_-t}) zOqxGHkv{jP@^LYTP#@w5S+=Tu{DhAr8m2n$Ev@Am`qaAHG0B^TFEhX0+t8MCD9ry0 zNKi9OYsO(*;^kh@@6+E$sj87q z9Qxn@B)wP-(rUsu*{LwxIYN-A3ncOc#Gqv2PM$daS(P(iV>MuSIL05!jh$m2KsQ8H zj^##$_nH6DT3iHGsq&}#Hi^5D8UG?Y4PZETD9SL3@t>1#gn!_V<=#qc(`HUzke*Gjp$km5 zn2;rAN|y@<4!!)gUDD;%@ZDA#CMK(jdBaYtyRQaj;6<~G zQj*kYN6%6X5qj4yzU;POb}l!B57UY6%jbpDK}x$f;1i=z4ZI-XwY*-xum5VtTt|fe z`6F_+>3=ojz1wMKNutNAotb}q)wp18j~CzXqbe=cK}$LiwmvG4kh9<0&tp4v9Pg2~ z7@=mrG3WZMcOi+92+IF2dHiY#10ug(Mnz{wlu9RjWg+O*khH*tzo+uzWr8GcN#+V< zCF5E$QollHDxM$=2910E0+DtdgSnG+bIqBYT#?0}G85X<)F2ehGdu%&LSS;|XUzn; zy99^CS8WKNGj|5$Z6s1LF)6jn$Yi~sE0%mPA3@DH=k?-_*Ngfj;T!cfB|}8JGjM<^ zYZ~`@SvZeF&$>5mcHkmquZYC) zXf;>oO6-^8(Iei7DA6zfYj^4R*Di__UDMg^=h$wJq52hSO{nu)?`4mI3u0X&Q7f2R z^6lY+!owdMEy_>>1o1~!tmCZCOF2z~74ve_i#ge*k%G@Qzo{&hOkG1uv3nw?u*&c? z#!P}4Q|{X8dT7nnekY{>f+sylYEtmqt5|!6zm-O&f}W_4*mNw7$PSaJ_FNF`TB)MT z)BmS&4g13A`oLX{HRDlP;Ukz3hi6O=SiSxZU-Lg7@E=3z0Ua7xk4Qm$d2s`-!95n& z&|kdMk&fMbm^(lK!;R?T*?J~&KAh75u|5Re-gLv4&)eb45BV?mDX(fN8*$H~@E?EP za&D6%ob5_~`Mhul%wmQ0P;T4p@Uz_MkXCWPhusb3GYtDisMh~RNt4iDL!I1f31kO# z#Z^Pj5(d#Mj6pC%s_{!V0k^Zf)-xTTLJX;6VUUrzm2EHA|mEx1@La3$d1#K zdi;!A6@KPC1$QQLKF)H-!^8XBV~|AkwK2gmh{>=`=f7b&>xv@bWh2~a2FREl^!1sq?8ti8BC;5yJzb<6Gn zJR;yzrn^GR3BDIS!w+`$MA8x(3Y>DQ0#2P@j)Fr3FXWc7;XNIy{$DyipGMrjCOd+M z57F}B?L3jTCnxpb3AZZn1i=))9Ep}3Se|FaI++upbw7jC(uvgt06b7!6zub4VD@9O4 zZ}|&3&s~}*aKu~A@kXu>;D}Iq&r2GlE!Dqye>J%2b{Om6{3d}UZbT0i|B|GEcv>+P zEZ%q|N)WmZbp4+WXM)fngHODczjGmkTuI3Pigf^qQ%YE}AU>a<=&=Mvk0mI&t$#rx z>6r%GH5nm*O*r4ilVFoOV@i%h$<3}c4LmLx7a1-Y<2yX?lW{6EQ+wWo%JfP6TAmS( zwxszjDgRmNp(&*u`?9rmySe|z4t$vUr$EZ14$?x|lK$4&;ltTHAa)b8v2OL_y{6OW<@xEK;}Q77P{PQV3xE){yu5YHI}e82P0_(9(N>pKMH{S%b} zlxjSRBHRtYR{bBq8^YZ(cW;kPbKcPQN<(k0yt9nzrEEhXJG3=JYNAl(hp(%nc(Bi%5B^w9kc{`R@PefHV^ z!F#P)?|Rl+_r0EeVGP~=AGh4K4^xx`p zXy$xrg<_8U3)rat?%VtSSTchhEOI^{Jt1kMUGuHZHU~UdGKj$&v;rvnV=`~GBQ!AZDID&}T7P-7>Eui}>SI7H6J%L*K^; zd5veA2|ejH6Hq1iE~#8m9`$n#Q>`Wq2h6KjF4Wo)Io%X(*I3;)cl8Pk*>W|rS<$tB zCvBKNu>tmYQm;B4)^1@=*qLku%J^D#km!JDn#F1#C`@|cZD8wFb?YrpXG`Zuz6>D< zya*T6KS#O`V&l3Qr?d(Cy(J*sAul6awLcEw=LiW&)H(gZLq|yvc$y+N*nrcc$77^n zEx^9LDj8`{q)UCdVKEuiJ_f=VXbL+mbXkYL2m+kk7h79px*}W{u5ak%WpeqGT7&5u zd6J%yyf_%n4`EXm9SkbZAMPdAHsK!0eh4QFlAo`^v*Ob4Mnn7&{^BSu!6qz_=PtqN z0w6H<)>~g9-SJS~HZ}>N-JBYPqAvId60^(3o{eWx?^3STwg459B_m_IgIznN6a3l5Myg_nT)mZZH5&H2>nS zXrfW-^>?q;CBc)(pgQZfU`t#G-3jubFD=w4q>Z>&jyd!gW8zKMxhbEjjc6hE#TwL_ zD{+ok!`mG`u`_dimwOfUP%Lv~nc%0T`eM#+HR|2na+*v&&G(ph#ab3>q$=PoZ;j*9`-*t;0_b%bfiBfVnG2X8aUmea1qj{it44PW~?ns0bl~aBmKm8Q@D%h_P%hsxqe1k$$b9}?p0RfM?-iY ziosTuOYP{9^FN^EyS2mV+0yDw1ZqR|qkP?_Ft|l_|EiY9P&hx*rce7bw<#yf=UK5L zGg-0jBs^iFbyW7PrGV(2E3aPy>+_!cK=Ml@HCke7VX6GG zCJ_Zs@aJj!YJ)U!g1n$CiiE-kqsp(k#u)0fuUazgPp`$^`JZU4mGQ*DR-Ic5mSM=L zFc5%rkR0NiUXIDJ34T|Fkf46MEkoA&C(Dq@yeO(EPwLpSz=r|-VCVy0t~K@UFsc9l5t9a<~hek_xh`f+Xd znv-JmcU~vlrRNWqUalT47mC`38yltH^6r=WZn}KenOMUH-^H!ZuDi^Hcq#oHh3{6~ z3erL4UQJH#I`!+ot)hN;eg;H2BVjk>!A7NfXBs4~3vdqw^O#&2vJiPB3k)PjXN-jp6 z)tS8wem?<#uFnONF#2g+?Ju~w$r1Sx2?C3UIk#a`XB=C!^KBbw@e@hQ`J6GU1I>4RAz6?EG@cvN?oH2#3EDlNI9L-}4Tm%oc z9W39O#EO3<*}_PWWWQU5TH}2D6MnOV9h~I=N+$K&X4ERGU$MQnET&b&sJ-Hb z6DWHb;-}nM4?9Jl<7iW_eLMu)T$oW@gL1p{hfo`J@5{{vZkJ;w-*-80u_lx{_NNZx z-Ym8jWNV@Fhm`(-I{Ja=jSI<-;@0QcyM8)%VhKy}C@V&1D^uNwx))YC&p%gCrzp5x zoSr-)Yii9c?X1H`Ab6u}?I z3y0%KN$xG*a2N(Oxry_wrOJX4<;6=EWBV)IL3-iBdcn>+qBExb-|I|4xE)P`(OawH zx1ZYVst&JN--v%R!Fh-6+VyG&?r&APM=$nLV;45Zlw%6{D|&?VjrAeOsd8AL4Ysv91wl64qR3hUwQ92%&ubSlbtGY<` z_s=kI+aJq>s(yzLK`53Kz^)kvjUpQvBC;#EPXrJ^fb)@2?XhkW&W(7I!8O}B>U#jgxrvMJ zwVY4P83jzVq($IrO^WT_hbR$#+|TY%d~Co9er32Q{y?~&QlH`pvX`!VL7;wlR&9TN z#tF{~p!#%h!!YL_Wh3&(JzFj-(5k)!l_KXGqJd`zo0RC0`-D>?>t{pN=f5agSEmi3s zs#on4aR3Yx4m7uFj;Ew41tJKRsonm-%``sV01=$naMDn7^mdByytXZH>OL5kvA;)M zP(dlMg>FY@u;x6_7R&_TN+7}1?Vz$2HybxZz)6)KY*Hcj`5+=-kXVO1gY% zg+o2%^eOfVUiun*Bz<#3YofF70fPpB8wHC4dx|t?Be2i?WlHr!f54y+6Ye_lfB8OA zZ0?sp?M!>Y?aWV6g+@48dHXeO=9^3j`VkI}yhv1FU5h~Q*inx`2VMM59kR8YEs=^N zx~8N#KhPYhqZ;AK8s)A}Iqu5H%I zo-493R*250pgViTUOsPU6-fgv{z~Q$+u_%{Y=|t>AI!nQ?eO+^ zUK`!ci+nNE2tJ8^FHxr_qAbUpIthRb^f!zSJfqD}#W%pNW#J-R!q$(qT5oo?J3o__ zXsm&3x5O|TUjG^7QNNrJoQvM_NBSgQP`T9YPN~&$Y(L0z`dhH!_J%e`=^uYIol}{Y z4;FV*O8Ste-2b!}@y=M^@`o>_PWq?)_^I=%O)2u1F!`iqU`#lEHOV1Hfw-uv_Hf(n&1G?dp|LLjcU_Nw{wR(f)Q8&ep~hY6G$|1@%4A` z5abRVm*w|0_`rh^m^DngwHkGRx~IY3kNk}C%F8W^gm}OR=?%D)WUf28g4LGBjWWpGFP4)^J&2{OCh1m!)@+9-xU+!J;d5pkEiz1YTp5$SAcFYOXZzamTMP zhyme2FnJs3heK}xh}8`_m49Q2M3geG|y4_p10OxeWAN!EG{o!x1`ig_xu=YU9S*U4{!GXoV_~EP} zAuzlaY89b1Fvv%BOig48!CfsXj+(+2wbD-tGO*49Xu%l+_ZM?pQau4B6a{OJ|!ySj?;9;0uq0&>*~j~#)B zm|Z_=V9T059K^6D=%xE|C~zV+Qd74AZ*IyY4xC|ob=)cO%dK!2hZ)1aJn<>C225^w z7~@7ZWm~8O>`q^0h{LW@12L*!*!ZfRcn&h%Qta`$ZBj7KopWyp&}v3+aGC*;eZ(uG zH`dqS?!?9VNn*@7VJkGau))SImq9I8B3HQ2Bq%V9abO=&FbkJgtmG~r7-sLxwOZa9 zLh%a~Q^TvW>ch^rro1z%oHk3Q&NT?AfSnnXfx6J#k+weHPCj#MFhVnt#restZ=>q| zPjj|A=<$-)P6>|0w14}hb7glBdnLOkq5hyaUw-r3_59s9w#~VL_%3bN9EW{+#*%ks z3Fht|aB7WiW0!KZ>$R`)>+z6nt$W*)UO2|ZkKSem7Egvb@fOXZ0`l#p9mCLPIG>Lo zSpJk{adFu>rO(}@xEmklnqi)&NY?X{V@KZMVk7UfPn;MlE*D}9$6$hbC6d%H} zSGv-7R}21-SoHpBmUBs-YXD`|f9#lg0k%2>WH|r^pV08bt6I0f$P(CAKRLJ-R7aA7 zZ=Os^ZH$7Xs<86n^>6+TjWzqMT}NB|PhcduUzFp?55>X)o2P?05m)Q0Uiij*ap!vDSaWTevrbiXX^`p=>z*n(K`rhu*G=V_Gng#Y~O_T0{$9s@VhnK1EU!q)Bf z@xsCd_vvYJe=6|?3>d9bM=&Za5$*j{OOs9(FfqMDhBo5y{CwDs4b+!UWCH0+p{wf^ zs+3@cwkI?=zyDsU2w48!ki^dDVXiOr9Ul={zoC+yucqKHo%4I0hh0McpN6wPkr6%< zi!}r=+n*&NpiIpkqP$c8MvUP_yTk`Z2xB({H2hpG#C_Ub7NQ%CIu73kesG@Tj6W0d zJpP@^V>LFg-0Vtg=;a9^L)*lRZS$;cut=#0RJhJ>|7cRZqBplpBoM5+>eAq`eeCiO zd>TnRx@u4Pyk750BPMxN_R|e8MwlC|x0!7+y|9>0d+EOjVmoVrXTG(WO~QzDrx>Xn zSg4?xOA$9r(jYBXbYh2|G{5f0)0`HAv{+;?bSK@#od5Q0APRTe6@#3~2x6CbfiD-4 zjg}Di;lC(_7T(7dOOcQ0wvw!Y8m>HJ(~j$@wcDPY6`p)`(^=SNo!Pej?jvK8~N0ebq=k6?*-#GLq&=EVk`BaZdJg#wT5rzlncCxLMey zG=Ft`Dxr=P8J`_na&O=-zCd&)mh$PzqyD;vWTUtj9yQG}BGImysV)~PtM}z-z>E6E zFZNq@+>KkuR<@m?+mEQt)L(sJ@$>(2h`Kr6a%snYg9`x-3Rcu$ z&9MGKxA>q_P&fVA3qh8DjrjS0ymDaIKWTGsGBiTE$6i`Qy;Wq8N~IE z|7ZKAf+B0x0jJFEr{%~3` zn@QY00EXgyn+f3UOR$c@br=_Mk%??d7C_6G!sJtZyM!>E>9k^}-Y+@{3P^LQx&NQn zqY9I2?qGgvvNRb1w)pD<}pG|e5;7tQxHD^EZFo9uA% zzno(w7hU`aJMhEWfaj!7%cr70|Gvvp`fmo2U110e$vG7S2QvC4U2oX=mfo-A`%zC# zzX!bXB=~+s_@cC!rsDD2e^dJR-G2DL*kzpwx{hTjbjtoor<2!lU+3zpe5mnzOJgLe8!`*20tUJ|_ zYpn3IVnjWhCyC|>K(|jXz@I=9njNB})B}s$yIH)0J{_eOpT*SciRs}M)XTplNjmMm zJli4ax>jtZ=$rqUBQPw9z%VLY3d7R4gx*gW>c{_v97z3#cK$n*WME<~2W2k+p;d@C zuK!6L(1|-0SA}sU{qpt+&{y}oM|G39q_m@fbeQaWkO~YQOBgm6wlA<>i9Nna`(F@B zl2c1-cU{430WM#8BX zy8n2U>h;~fTJrx(R@h3%dj^k%B|Kj>LxnNcW2DHW+x`e+82DmLWv=}noI6p6IU+QM zHAom^RZyafDTV^Wtk|0i>3&#hse>cj^MK4R zPVlkAaYHS50I>RC!4Mn$SQ|=(2oxv~dDi`3lvMsOFs zWY@^Ne@~NCn%3P*nap|tOe-xr`hRFT0oM2gt``~*n!OW?VlLP;f5CQs?6LRnH?s(^ zGFe28Z^r)e_HG@ea(u{tq4iV6Bu4D!nzk7`j4~3QJ6?F;T0;2L@4xW?*R19XxXdef z=B#(yk?gi`6Lc_P>AiS|7^#DKnofi4Pt&LO&$HD@I*k2#FEMZ}cV8ug(MHlsRe4wN z5m5KF9uC$838TiSPI`fjNjd#&M0L_j6kun^stockCDNX9%Y$FTa$Fu{T@ieyhcN{# z;k07;*Rf##6AAkEk~7+mO|W5I5qm5 z2b08+{`MRh8U+u7+5NL@?0+Ibihm$Os`b*mty^1DWmxs6`-O`F>j_Hp^r({+D0Whx+-CL{srFQijz9`bb#UraXynF%>}cVDc}(0G)FDN0Wc7 zjN4%oeFaj$eb716fb&F~x&X5S3A)x$_qqOyn8m;8Fy1l!(+kEk$~Q!|dDi$P55N3L z0X0VNhAH4A%x&+-dj7xqe#c~%xtISBmEyzXbJlC&+t1oB!Ws(Q{`IFCaL)t<^PL#t z-~JI3_|0sDILv8vA54`BJpF^XV%Zg}#K-QtS05#pjTErK+4^V4xSMP6HoaTrex%|n zz-##yY74o*UmmuQ_9TORLj;>U=hW-3OK|&f1FYWQ8*-XafYDC-|JBl z&R3BXK6TtpTJ@H^F;(z&5ED60d?Hx84>*!tLM+#xW$|T=|OiJy)#B}{s zj=x*}l5C<@&v-jH1^d}du0&40v|`YIvYrxY#a9+7JLO)0F#9j%+EEO5*oVM_GFO$z@7KwWXbP|a?Bg0C0F09T;#pUM zDnA6xT{T^O7Pb}KpYve{6c8(m&mpj5D<08Tf(5#&bf<6|*^0{AfwNdme99+G9?deLz`;)>nT(0jq!iVzMcJalyTFIiZeS<0rB8W@_MP1s;si zudOIk=0v=79oSO{^_;y?miwTK&KH^4dH1_W8iClWXM-5S*Vk_g5COZwO%#o9o^WGv z9@{7yhyNjw^-lzMIgF1gtz`5w@2}Nt>*!(^{WWH>(flzrk(@v6K6TfhNPT+_n#}2$ zdbDN?;inka`0#k>7~qJxA7RV{;$Lr&(t8LE&BnfQP$(lp0_guMENh2#fvQJ z`)AppT*G8;!b|uk2<*o0XlMCt&X=!&a(j*60Jti&h(8XH*MGQn<$F4! z58)KwqBu(Rw`$WcJJIO_+VP#*)hiXd3~$@&7b#|~&eI?0 zSbamF1I*9Z5GxzoQ6M5@G(nzeT>Z&mI5NRM3#vPuUGQ)*J^TKMT0FD+T1#B=_ElnQ z3RES*QR}!feqDs%VeUtkJo7U=1g!Ps`XX&J{2UIQ&K`jNN$_RzXNFW2JZKIJh^jd} zW0md-4|C={IOLt94|giw5_fFpS1$&U&C0nk<^fbuOH2LwPoH9^FX?Ba*l!(h!P@?o`S>Lg#L&J<`F^GU%2b^;@_KO=;?=)qwa ztPVeMT!`#2K<)PBH604KrOyMBwg31h#@J@oF!J=UNzBwHFe9JyU%;X;eMIVO6$aNT% zX-)1Hn-`Rh-jM>8>k&`~31=72WalUNM?;y10g^DwPIB73koEVG}A zPVsP(svyg)xR!46ZR{t@qN`Vim{p1;)t({P?VXc>F2J&tI()8>oO%c}-fQfTENvK-T2Ej+q)hVyGzf=z-D$ugM&#a0)FA8cVWjMZ#uCX|i zkJv7z)jZsp(Lm07?AF505xg1$n#3kQQ$NjNkl|Q9*2|2HS=V&=o^4^+*AG}nGsK(l z9TrI4H+|ClDRH}7;=T%9c_S!3^=qa;FUY<_@n-<1f2k{k{+a;Wn)?G2<=FjP?_g{fF(U9F$&aD%oyLUTV)@~ z8b7m%aNhiL`1k$xDAQ-lseOR}*?md-GA2YO&|>SbFqV20_cn@5u*LfgjNV_v%L_?- zSV!=i7NMJS4l=d`quYB|G_lshJwicj1rkJ9ifT8}1y>6-90KwuqY%6bMY^;V3mMbB z@SJD>r}4fjqI)*JSCEuCnW;mlGW(TQMl#bA!%dRQvuTq;wQXj`7VSjxeV6o)30mOl zsv5;R#p&Zs_FHaJ#1>CkMc<#3{*4m3Yh74v?%M=!l>h22FmXF7|9q0T^t`x6%0aj980l%TZJ)?cYp_79Vt_HCv*v;1ApP`I0HpFxv z^p)6Cf@Kz6um@7{#$q`|5&01ChK^?C#Ix>Q-cgm$zz@NW`$OLlLL|8?j-Qiwlh+2Z zEhDHq@#>pxY9`9=zjFhcmD`psRGeDei>6yKNmcI4b-r7kwIY3U>Z1!Xl0ZEDqVkzK zKReEWdfvPUDOfNq)o)^JCaFk;t4?%HpKzE_k_H-D9vDVd z@f-YVpryC4m_2cPvuPtSGs3RpmC9AY6@xk^6$qrpLZ$NSyIeW%Z6p2nqJH4Wxhb3- zXXmC{P8s3Kzz6XZ61b+R@4gRx0bfvtHZ2&oo1zNtFHeB_mC9+Nd2yL94>t>nP<~a zdS~#$R2Exr%|w_lfds|jx-jou?bVfRZLcq{J!WgXdxkN$rZ3)t+ZUwPGDGG>I00AQ zxRa4|)g+I&S*xg^`*>}RHiAXzR}YWMW?Kq4b6*5-EYHbPsTNY&%(e*0OTh0VnqH3z z8jjaYNU%Zmw%6Cue$Q3x7?Z{xADmUiT~M9s)$N&(z2(f2b=}LBsbeA`P+6+NCPV+> zZ_qn(()+w+EgwCJB_p%m9B_3Tm!ynq3+R8YI{mVn5k^@4>v^jwD5I57O0i;txBS@R z#=k8{Z-T_RM4));WXW-=Q{-Zv`nl=W{JG&wx{A5#&(__;ek{iv1X|2|y({?{#et(@ zAs?$Jwt(M44nGZdv$$gqZcy6ooue5X6#}-b|NR39yCUW_WiGV+9T;y14?tt41E>24m7%p8=}tz4*Bh3@!IklvKb1*qQI%8DxGWNBtUbMUY*)JxC*DmMcTOg z8K;&5o+_?y@c4Nj4K#)~#D8_&fhE(vpAtdc&~1JzS@(R~C-EkA@PzIz-2T+kTPt)u z+dG9<2p{)7Q+Al5@|;<}dR^@A zGwzspjz=~t+|}JVd3;#OK>cjr(3wlgOinh z@_2}dNXt@BoccfvzlYcaJ{M-)C5nn5#aU=T!n^gQ>P-90KsdbRh0)=YFDGB?LJ>2c zVj5mGVE%ct8s3Yy=WyP5qh|!Zc1LOG{oQxazT^I^YV2vNuVj_uj@rX+pBd-zL-t^C z*0d*=e+_4iBioy^t0EIV$ILgGb7mUPOB#0u@lX;7_vOspjCI4XV@$Pzb>i1)PVSOa zhXPUy*j>WgP7kv#1qi*D63H2(^0zgyBEMopbBVa=QlS(bsI<+MC_@hiE+MWg2^%{S z1yH|3KC@q0@)d4`w~(<~8f$O}c;9GidQ%l;B^c0nA2evG%z#?|?qK{X){!v^)g^`x z>ALY!j>c;1&+)-u?tN_eho^?j*z3A?z-y0qz)Dn%hwW;n(WC350WbRttY5=AU*byB)JNx`N9UJoXb>bGG4)0 zII>;?uW%3sHhhp~a?s^-p#1)?7~q;DEn0eBzeU>Fsf?NRsE7jJcwB@C%Lp#l<|7s) z^d9AAITf(&=5W0QUATF+RTkST{Xn$B?tPTBeNeuz z1z+6i2ixby1Q-V_`E4{zxrZR+y4=32L4qp$s8|}m?KO=x!(ZJnw_kUs{_*F?%^&^v zJeL>U36&*&w!uV(nfMqBX-T5EJ`Kq%CZ6!zp0Yi*)}sX|63ljTv=@fg=5P2;!T_A^ z6b>K>D3a0XSY=;x{9DJ3v7Y6W-6`D^2;PK^Ax zCd;ZnZ?AVKP&7Xp5Q~D5c*cbIGaYgKU)IDA&lIf1J@jcbSnC2oBdzHbr$4DDhrTj(uZIU* z$0-j3yMj{LDlH*h`&=%NR$iklfrxjN=~sn38BbzOHNy|(7;LNAeB8R#?Fh2Nen`C} z-D}%w_TxpEsc4w$^X_2-H`+2p=UoQvtAqhPT4_^UdoxsT3l6{h`lQ;3GR{a~Xn> zyH?`;XU~sakq)H+um|tOzAv$?vo332w*2k?WI(*Kz}?Xk{qfj*EEX&Is39PEd5PP| z#Zk8H?~a~vv8@F#bg67vd*g{^PRYR>*~rPCUbMNJ5P~eA)931`!#=)ZW-ICnmTlW( zz`Vim)Geu!cB7+j+vI13$=C83d1Qwkd?#n$tXQ_W6!t7bZev@2W8_q80rVz|@M3Lj zh5Cd7k?n36o3{{*Tt?{ILVY<58r`OU9ptrgY>hayekES081#b6)mkj$qa5K% zaj4VeWMQKly7I3qwT)+Z$68kTMhYHvZ^phWM1-rso2N`@9Gq1kwCDuHndIM;Q9m)C<2 z{e_(9SMFs$WgKNDS%DE{ShW+{0ltOM4SSbIQ8tDY&Io6(;+{3l`QN5g!mcUj_*-N| z-4Kl6!)haRuL_z^-2SEr*R17( zu%m;LgpBbT+S0((z`;0Kb&m-;6>s)VlJvP-gJU1CK;`Hl2ZhX(>AT}{&KA$RE3b_^ z^0m4rS=VvV;lEiK|%j_(w@4~el#apFuF;eW8y{*r{cut?f z-IbIvk`inm3OP`4mh#C;PQC*9OfY3c_e#Xf&khZ0rnm9QxFnP1RMHO7Z#8LNA>RMK zir=4k_s;2U8aq~jBkNvtHG2m04gSBg%gCCq2#@jp@leL6rb?UPl^j)Gdv@?^L`s z!E!9rl>8?1rw!4m<<*Q|d8<0xE*PUgWZ7=SayhmuWgp8G}tI{T()L)rRBp$Jy)Ozs|aw7A9U#ynw9)MxMToqY;(eSfZ^N9&wrU#E-A zpyuY}DK_>dQ~yRTo$8PqE*o`p;+sNd5$ectoq02U{VPsIlD`L6UkE%NWNhs?PAFGY z{}%DIUw?Sl2zg3)!!ckKXb&gynmep^eK9xAzR&O^f?~|JBmA(5b&$0z4%c1wkEOWO z037a=nU4`9>lP)iM2C#sSc$-HEg~)VlON$;v+A|OqKg5RS*lX#hb{77jFNL(2XJjm zH<5k#>xMbIagoKfx7|`kkrVZHRE9y;MySO?61^g?u0|%wahvM4~)WFOl-Mb6oWCujfZQIO2_P)&(ukByLh@@)r0 z0cx1rxk@kOmVV?lHfyR8^TGMl!)Fl<0|qOz>*GC#{8dB&!(~Ot8=Wrj%4GW_e&c&5 z3bvm{)xiVJT9nMMgbY?~!7))LN|#G~vz_Wqz0S>Ra82^iapUbw91==;-A3NlD0=UZ7` zFf+w%+!%3Z?50ZcU=tdTRB-d8#oWlIZfkY>!qf~74fe&Cp!%KSw}a2^y3bIyyE&=j zb8^>`A=1)>KT7&> zNN*Ol8sEH}y{ZpZHE?>=J8wQDZSzm4no7E!{zLh9%s}(E^y8Vl_S%OZmNTZ}7OoOp z0dNJFCg*>vtd^-h-2X&QUfXh~uxB5qolO*gGYH}~*rb>ZjxeP&1lN)tm2kdg|0sis z8ePy$z2xwYS|pl44oQIYMl4o!vnG|(EiZ{hhUL_>qOr|P0g2Y5wv}uaA`oAi8qKb_ zEHah$Yq#=J@N3a1EFyvUGV*^pRc#&NMO9b?p2of zx;nmrmF^|Lg&l?0|#7cU=WPTKXj zajNy$v5Z73A}Lpus?-_XS~iRzrjh(cPr+8yjCH3%-6M2#6Y<2wmH8tQy?Qr_V$V7f?)IDe1DL>S{ut0PcJjObB#RLx`TpUPgUEd=bRn59|eRpavlv;(nnw4v8A6l-X6 zc)caonoVDN2$h5T=Y=;-U?2A^GJTJ0f(jH)5*gAr9?8_Aqm0C^hOE914K*?@HZEH? z?8%GUGf_sEH^gJXsg=4CkPe(Bn{5e@{rh*epY^Xzppt-^oh$U+k>|&A@y7oAh?R(h zb*=uM`u zHx{^`24$JAjQ6T;$5CzU(CiJSZ+*3UkBbe70tzEzkbLFW*qr_-Do%JkTjIsKtl&0- z5&bcxs;-onElwSMqavHhab`*G9HsAw(T*CJ3dm#sc=Oh%W-}T3LC+$y*J9J`7QW#l zK0_o0i*xH(vjN21g_-JuYL~0G>3r8f^^HqSGmFLmOW6!y18Kyf@-hoL(gyWPR%3D_ zJy3pQaRvBZIVV;oEV40ciryN_{79;#EBlGvW*SdAl6{h3aUGvrk2!KF6w8a5nPwUgidrY?xT$jErAl==PeW68zHOt>4qK8CSHhy(5C zBaVH3svCy(Q@-M#2r;2t_xb}quO1^lPTs8YbKUohwZdgF5?{<4xtdy6jn%l zoc1VYPe=S!nA3hu6JSh~YRv$dFE7|xm?P|y?3pqthf^WFR=UZ-hXi6#(j+l);n_<6-*6h@5x=u;2+xP_suO#YOc;2gA&rUvLI>Db-a#0zROp| zk7#_y@?H&V+Qv4!(c%N+WeqdgISV!9t|-*~AtkSJ-+V2UNVS`oMmtv7PU+9z+O{84 zBIsb-_K+BH0&a1j$y|IoZ>_!@s?|F3<6b#2qj}ix=_;w~XxzLaM(H^|5Ubcdx)LDh^}3DFFQP=9i73)ljjNIT7zWYpdl@j z`rYO;@%TG>Nn*;_ZepF$M(t4n-80b&tkGXdk1G-~}VNz2QetCHGRJD<&wqUn;YyY*d}wjNL^ zFgy17ZeMg{fl)j4)<(}Bzz_O}vsx=^rt$U-iu3m<=Fdo3dppE2hWx+fw0c9|3L>~S z#g5H-u3SsIWw6}Ss>1I6-no{Q>VVCFsnZHRb#~r9 zSscVTwK^srpxR5p22{;nZjO}xla{|0lGmXf+JtO=@;(;+)!zWm6`Ko=h8Ty;YMq># zmvbb|2!P!1-_*PKMJcPSnT_8$a|&wW-LH#o!>y~fFzuVM)x%Es*(wGTtJ3N>payJW zI$c86a(Q0(C=r5fJB0?~kvx)OlgSlp_KO9c#pmx_U#+|>5}e&PA)^(bn(7@$FI*_> ze@IgC@(u>+vSfBDpNz=gheeAT9l%{MM6SMHQ~Qh2bZBz?eqf%zQfpiPJ!}fC12(hR zQ9(Wr@d(iZy>sX&(VyE*uKaOQTweExarx99?WCsUK7zZ^1GiVmv=s7C&MsZvbnccF zyym-TFj|b<)iQgV@A>UHYisTL>rJT_fDcd1=A_s|uf1X}m1?%tnO4*%k9x7P>4fiT zzwOBCy3IcRnV&jQ6vs+j?0zlZjVuh`pJwLU65zJ@e8B<)n~-M53R<6Qh_+PCQRzCH zr-B~Y1$!^A>~u`Mj1ds2q=YSI&ho(A{-0*<$8N-4os(24{OCO*pW0~{ir&dGRL_oB z2{W4W%lEpN0U7CzI%6>&@uEatdqUd1{SFh&T@%L)h_`KhdQBuw#ms)zr(eXh;p~u{ zS-MNxJec6PfEufDk&xCdSKu0Vxrg>T#8Gk~h|Rp;Q?Y^G)nHk|rZ(#*i{`Gz&8+K& zhEJfAE(b>?pU-b8doKx>A>X;byFXuzVTk$%-f3OteDo-r3HPB8ylO9}diapViFekl zQakGg4*;XOVgh!x!{e2&>tS@UyH;1^I=<m7+DFxPymt0Q_RlG1l8LNtp}V=g?ZvgsT}`|gQyFB=z(^~)Ni6HUk5 zZNGP#ds?vdHyAN%IG2857m(TLVKA=Gv#WOP;R@(nn#-eAHPyd8@SIJ!l>AtlbDS8k z`ll#suAhG4tK_yz9B|E)T;L`rDk3ThA|f09{Ql=~4(IcH z&VlFoeBRIN_1+JYKJ52DfH-9`7Sw6`5jhM?cOMf!bsrJCVme3RbNhd4OfN-l z-rbrP@4L5O*_Lzh3@*_&548eow{j{;mE&F6$nZc9Xl2=`NqdGUzGY!JiW3BHl-`0_o;JnwI z3@98|Tnoh8VeO39-ap?A)xBJ~Sm8MpiB6*ji#?5OzU!3de#M<|_uv2P@-DVsz~xVQ zGejZZBzn}RJ1s@v5#-Iqe*qnaY}p09cd7Kon}qML#~I%pdYtAD>UOw)d;QTETIQF- z?+0wUG^Ta@9g|xk-r4`;TTsfH36v`*dQFS1f5AuvdHV@3U41nOoqlumdj5_LpPt2t zEV7Q>zgv{(FO5Db{A21OZQ-~8ilJ~Vag3G5B9L}a`I5#2Q(r;B`4g|OYc(?3`hz|;F_h#A2 z<>74(@$y`dm8M-=&*d{W&p%ZT>*TNdy%Z&QVW9ofVFP%>MDs}|AwXO7@1Y9NyXP;D z&a8y0+V)y)V2jE+21^rl|5%Ij;Qwi6Vn)$xu6>){>2YWKmP3#I_bI(ciraSJ&78`# z7Yt9E0kr?_`2zV>*>qxZ?cW`+{NJ%gui~D0SIJ>aSVBx1gem5)hSq+odA4!v8>rIK zAT7C1M8a&QGndMx8$x4}$QKs-n?mb^i=^raQXdlrcjAm@a611T{U)`xDYYS3CjTe= z6U5weHZRd-?%_R8wY*>MX(YpxpLm{grDp5zJy)}dn~ttj_t7l80yx*w<)kr6H1aK4 zwO$NL6*H%^t{Gn5g(9n?|4D2Z-Lv+buGjrx-`o#G%ZXl>36qzUU4FAytGiRP6XveC zet!MGRW0RUIbU+G2K>|VE>|PKP)C=Sa?e_9>1WW*0mTTrv8m}Rgy>*VW7hPziBeb? zK3X#B(=q|)O-%HYx9a56dZfK_4d?%Z*S#RzSR%n zIf8B-%-!|54^+!<8Rg+mzT-!{}PLeajxX#{c$r))Xw;?@g?dI#EF zbvkjGBCBOGwuw);b(dZXQ}XFxYK{?aVQ#UkzNO(#*{7U_BW7)$^aa=kTzR7X z48cWXbhSD=sqI5>%D>_hHp`AFL*G8Kip-6fq{aW%-P{;=-Mi`AO#o3BizQ1NcZ3i9 zYg6CyJm+<%@bOyDj@tg2f6)IEjN{Lf0ffhC%De@-`bJd&IVD5^ViJL`EfF7$5yLPJ zO!BJOcU*hTOO|swGn5>cZE&K;^527}>OeXF(RDI7y1I!dp~4^}*9Sk16+OR*MI7{h zyzSq=ALPy$W{|#b3>~R=fNkr#-OYENBsd}tytK&BE57mVyI<5`+ksTq&@T{y-{Isc*Kre*@$m!ENJw(3A{r1 zwgGbh_{dfGm$P2Vqsd{vLg%G2ejfRZEjHH^zVS19!^fbF*Oy_KlRjs2w5G3ZH{vdW z->0l8!^q@*-Q|V~{s$9lS&lyDZ<2|D&2Rj`fe71m73zPpXoA_C5cB8U9#P|(%ZkOa zyX-0Ej7?SpFK)X1-TsMuO69Y^e1Sf8+f45Ejii}rAD$m=N`oKQ^RKf=8F5m&p>1Dl zTOOx3p1Y#D_Z$s~e|jUb;^)-c{_&5e!U{+Kzqy-aFZ8O_#F?>tdt2k8F)LB$hCNzy z$x$Y{-y-gKv^6a9%a+a=0zm}knjjR_ezJ1^m_3t?T{AzqvGu964q8^hLrsN%0bjAQ zsmSH2cGP0?kHrYUty^Ng8p04?P|VAV!&*&Y>@wdsde zAHx;umpLcpNf5up-00*|%9?TKhT^Qt462$KN>Ukj`hE6#1+P73ahW}dlgrI;wl`bMrt0*ozGyG?2($)TvG4y2E< zg)}g1+}EWdz2k(fJxdUnrgD|`A0ld7=jiPlPWvq-6+Ex?5-Gbmf`XVl#h@?Yfc~vZ zP%SlapVr(h{g(QtuO0poeok5AyX*B$r7E2r!;Kd?upgISR^XA2S=xgX?6a%nuvIT1 z?xoN)Rf_o=JKMTNYCBm>hC-%8)Bw-Jk$vQtLb;-^voi&e^=touyV`dG&cU`dzR&F(s38?pZU4%k|I>gJ={wi)J; z^jCS8j@*xNcK;pNms$S7g#OEr99nc67BX*kcxq&BQZleyIhljms}sc++-e? z_3TXce=$gy`5*tfybd*vV>*8KUZ441fti01L^JEZ|G(tH{-{p3)=$!-w@*@MCo3$? z=_sej2j7~@jPzi7iH^owtNSxfCz+f)wClqD5b48-$F6sbO25{;?<}&57>rZkMeOJ1 z$IM=>l5NM}Oa|kFS>lELSG&`h^Db{$c*fUu0a?%OOp@8$Yr}mH>f>_XU)b~H$g7U- z6CBlwWk$=b;PETxw?=qr1;ql+?CVTv{;`qWZ;=?Uo7iU9b{#r-p#JNi{Z+`pM^{kG^p@Iv^nP=G6?*G_7@wgj0=6f_SG3%Edqw7zn z`iDF5W%(Q&T_%o*&OX~j`{R1fRfO5c#`WKqDt4R;-1ltGK2pu!ZKFL3#3eH!{Lo|W2*{V&c0Tn5&s1k#Uk%`WDX*UlGVEFM=b$EMP7H%%bw2Cj{EFzv zD0nONe%Q3#j_%f$dey&OZ^e2JHNy8dN8~jpo`0UXGT>Dr)Y|Di+kd&$H)Bwwr68st?q)?$4cB_V=B(LF&43AG}iB&jWaOaHgm^x z+fd!!uq=b66d9yvqBiHy5+M*5y-m#IZ3B_hnzcUX6o@;lR41X?Nacf9AZID6K>6-> z;mU%j5E@<>I4Iv+=0X}=50{XUr2Y-E$l`3Df~Hrs?O)c+IozNxkrW17)@<`<)&a%( zW|#2P4%9_ki@pDb=lXg*ce8Tr)Y8R*(0>;OzL^{ZCeKe7W9qEy<5MU>%RiVupTTs% zYKtMoHu7*rkZur;;DrD+3&b9bQJ}xXcS)^~v%~Z@`JgGG4FX$Z^-d}I)C(%~UW-;s z#)NMQP82DRxnD2a3{bv5>+Pc41`T(dTGw3qgx8O_8xg81Ufr#0MK~C-wr&V%Ywehw zg~zy7glA1o+m+8}zdnIbeO^`^@SE5*wp=^3M5DAvj!{#Bjdy_qTKKaULsycdAHDd$ zz0k(?)K9E4mpQz2H(8nZ`wQdp1n1R5fQjtjh2^?9@?KzBkPpmQb}wVnYCk4-$xvmi zu)4ndZac2=43nyM_!IPkqoT>kVHxi22Rn_fsQovQ^KR86YL2R#YH#7Gl9-gW%{huM zq4Mqd;cg8TD{f6ZbEvCLVJgCP?y+ISz$=IH4%GaDmZE$t$fj9oE_BXAX)3i^es8{J zzH;)Mm?XHH&=#J`-TZ=~;v=n2;kDhUF?F9{cAEj}f6g|UMR)c`Y3Vjt+AqJmr-#b; z+6%k(HfQY*V8+{_Raz4Gx``|}esaTpZfWpYyF$E%RCwheE` z=Z;unf7U~_^0pBvupwaFdW)^tx+{e6&-Ey1Nmtss^}w&`pd4(V)q>m1;S0+j;?!rJ zu(TbF73qc%L$9FSVb~YWutUu^%vtFumr$XvYq9u$&6oDe-n!8^TWm@tcek&%0DKK9 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 diff --git a/build_helpers/TA_Lib-0.4.19-cp37-cp37m-win_amd64.whl b/build_helpers/TA_Lib-0.4.19-cp37-cp37m-win_amd64.whl new file mode 100644 index 0000000000000000000000000000000000000000..5adbda8a7e81d37f3c1d387baba2457bc7da5b8f GIT binary patch literal 482390 zcmV)3K+C^SO9KQH0000805%WwP(RLJzKsb00MH!(01*HH0CZt&X<{#5UukY>bYEXC zaCwy(YmeGG_B+4AnyLc26t&x{m9|%v)+8Co5)y7=hIU7zC=<+(osgi!%nY~cf8S#} zFxU?5U8HF_51;ore$dIbyRu>^Ve}RRWY6B~M9~C-*rW2nNKGJiC{Rv$CjBT_Uzg82m#IsNV0mD3Boq3?o`) z6yy}UJ?pUQ@VSHFBlI6tNaYP9AmZIBmQaVjq;$uSD_ESWDl57EC>|9hJ2w!(O;$W0 zRtj4MZ!B43j@Z!(eL;D$yJg zqHJFkqN+URY=ke+?-)dZI|<3c%!Bo;Arh zOlo%6(Vmdp|3!$U7QnXV=`6=w&z-^~odez9A3vj~zoPu9MfKB#0^zD32k43GZfXif z(H2VThZ@d`*87}+8GkAC>4v6{yt`{kxpmJJJ@5&DYF5!?%UfRxRMv@Jicgy4m)j3_ zntu{MKy1IuY2#muw5*O#+TwNbDwofqO;RU}!QePkIY8Yw&S??H-M&$lt->zWXJd{Q zm8Maile1~XUf1kUJ-M9#GAlBc!8Z6OY&jgRH+!}!pCRZo9200DKy&;Pt!fx^aXdIJttpH5 zJkYRT#h@!IS3FuR=+`w5?Q2@ls-Cpm?qJT|XL-gBM=c6c)nV`($c8^AIKE!^7I6bV z_VLV#;<(f2Cx_z^B+un822BlH)~e~x*Hc4#gx_%y@{qBiTlAcsRKo-WIZ`@dt$o-edmmwj*Mk|;t(51x52)JP3bLK3!j9CKlSde z5vD~}A}i2-ok1_heJFkCpnH1i zD46MR#I8#S;jYXI7-STh1LV_}U7n>GgRx%nak$DVI4T14lqFKZP}us0lO>$ogJ(&~ zhG;@79s>&7mYCxRs2wu`&}*a`(4yW*E*ySDil1rNMKCHg-6ceXfaa3*(L8tl@v9U&{p%# z3ZiofI8v>}1S_!RxSj&5%K@C6!_L?FIe6^_YN|X%xEG8+eo*{TjR8=R9{mw2(a>xK zaMBhIm;nXbZ!cCLww0IzsMw6>fdYm>;2Ve_vd(d%K#7B8xe7Q_B-&a@S+)*4Ux|*o zcGXqau2xQqD7M>hGX)nY;M_A-NtDW^1|$qD4V-ImsKXyWC}|HPMP)<+Yhoa-4UD#o zglb5jb+oK3UC#?!DkOkSDTgyu#P%zGNmZ&t9?O+{IWw#jy$T*@kEhL~DOUM(NQZCc zYWD1T;QB=GxH-Z8SOnKM2qB)CA~+IC zG15z6;*KXvP;Q{7Q*6{>gPjF>2}}YQz~i|)b^_fV@YpA=g}qO0o#6VuW8~NMA+5x* zTOFUe*3`^PgB^Y2nKPOJirRLrLR z)JYJKcI$u?l9r%FbI3I;A=>EyC^bzh6Y6G0gnIzvYUx^fS_z&mLOo{$M~kTo z{ifq5;UXetgkavbc(L%^KNilX&@~6lLUb}HXdU`r8)8dXPa8^=rS#$%_GWBsdo#z} z3dy&*fm>Rhjyvj%;LZz|n=D1w#~YS*5^#vJ7g|9WI?7PyImLh+w<2TA`>37d@=0zv zbJ9+ZykM?w^90&extWkiIU(KPwv*0HnS+z!wd&$&m?+uwHJF6pMO*kl^nQE!nunFv z#-_%Zb-d^*-admYi{tv}FBwU424!PsM1)aa7HNUsXpV;UM z-5=nJ>$xLEL`C^q^sRjC=g%?X1}k5Hj9cyN+b%2{(icXHRj-BbR(!eZA2rCgXl8oU zthnqKgp#gMT=P)gIhn{!=fWV7e|7};vSa*QBEe?0@(BImh*Z_Zfb$Xn;LT}OOZSEIO zbN>TSO9KQH0000809SHEQFZRQpamQU003qd03ZMW0CZt&X<{#5bYWj?X<{y8a5Fb8 zcWG{4VQpkKG%j#?WZbGeF6O0-q zX(tJ7sHJKxO9{UGErKCPd>F;wT5G%7+FjdqyKZY+ZL!sEULXnY35dKy5XB558bY-L zD)T$vbMEuZOn{1Ae!HK~pAVUN=6UXO?z!ild+#~to^x)+S5`W*91e$*{t^j?W0gbx zl{-HDpPu1xjK1U#qa81e*m&uxjL^nQtLA>|yG8Tnf9IR?zxM5-hOgay_jeW)ef=9n z^BeCj`qte={u^&8`u2C`d}HFMQ8{h} z_RHrBaryD=4C^K9>(t+JSw3})BTU~<)AzHu`Rw_QIKKPFIyStNg7AyyJ1VbsIEwS~ z9EE?SuPW)eBO~R;Y~3+?*cppECNB8Ky$k63UuWuq5ZdlcFH=NNCeEMpwFO^uI4(Yx z!7v?vrtc~}tz0?%pD4u~i~o_hZT1+dfWD0}L(8>JoF@gjjnr1h@92Bs*i+%n|L*(- zx{fQ_fcB0F=bxtBH}3il6$FhyD@Q3BcS^ZwXQssezyBF#_L4itILyU8^rNZO*|8!0 zUrUu+zvVVxm9gaA7pX+hJQ_52_{{^&Ywycjl?wn%R^x#$T=&(E<}KRt`r-7W>~(F$ zZFFI@yx{Jmr=gZt-78VJdAGK-1P_`&)Rta`3-bl{06#gRExmwlgv?jn=+uhlgtpX$ z5>2nVG1EA-rN@b3`)4E)34d9iUkmm5Tb^?RZ-3dFi~hkdm%72>U8-G6-7foANh|7M zOiYDI3fcx?_dI@>t3!nFv#4v@>`6A+s~sb~rQSU2k}|hP)lYMEi}A!hg~(aWt=O)CYZ< zUYIecg$sOI)y|l|>3BxtD8A{Sn}wONE1HgHHjW?EbS~=5u%6Yo(^YLgUfn@|`I&=S z^{$xHr+MgSb&OzNgQETn7d|ihT*FOe9n)T^4BTxnNVpl>wcqOjkNSDd2Plr>B6^1)Od_x4`K(IQ@6P?Z$@tD!;g!urXM#(a*rBKU7u*6^Pjixc)Y#nF61 zemC8#d4l2M=^Q-OgK^EXTH08*6?}KQHmO}(hD8C?D4gOmTdCM&pV>oC_W88wo%DTx zzTYV8(V8Ds<@{50y6w{g^xRk0+ISysR!u4JnVt0ZeFgMzyEdH~;ire;rV|OR`D4ri z9(r86fvDX6C|5N;9$ih$*A&leyn=aHBU*ZPQGuI4J3mS>uLM(N(`(?D*l^9WjY!)= zFtp}-?q(v?6A@}bgf?y26uK#dpx?QZwPhZ;L4=?ih2ynlpOYK@ z$-2BTT>T!8-yPbrzYu)78q}5@k*n9WWe4SI`>Lm@@E_)Y`qSH^n;DbN#tQ*|G)SVm zCu1%c&*X8Bk9`fzuTsrdt)?F!Q;l7|cBe&!uuX*>AhmM}PaM-}Rs_-e05qRw&gwT~ zF3cPB*GKpF_!2aEx4DA&OSH>4z?|YQ+pRt7`h*6BT5tTOT9Pym&HwbtYk`Lr4Em%6 zMDx&4(>yZtLZ+-O7-P@#IPzGlSjd!x$lp>_(i;8p@kC-3B%J7#xEeKN0ZUo0Z`USf zdyeal`!g4ur_EXmw!P=?=`(w4TzA}4Xqcn^PXjIYOHhaTI4~`1*JidiwPtp3qfWQ} z&+^?$%fCTyRG87A8TXs({AL?T0Jh2U#mfJjyEsE6 zfT9en^R%pAlZ*A87W^x7WkrSv%?th)_{MYY<$U8UZRr@gL0!4jy)uJWWwg(rrVMI% zes}f#V;V6tW)J&|bti_A*RMUiYb4D@)a*UEb&!)%`K#tpEs`exsA2Khx`s*}lwmj{ghg*^AlaPPPQHq3! zQeO54eBR&outfBd+e3Gn-pj;9%rmSx5b*xi!R`D|8~-ZvfiJO%M2QtFyO8j)mVP|J z3}(JZm(RIh6wySO1#|r6|3EGF1LjJ3?>!}(RO`JJYgyoq~4&;WQh!Z(jM{BT@#plnc!ybWG8&5s$o)xn0&pt;RR zv;sTt_9TJ*l0Z`G`z&RHXu5UB{ea{DB3Ig4nJgfJp_o}}Z9 zSiKK&)h)t_5DxG_N)mmiL58$n>a!Xa=9|@Ta${Awq#&KaoiL0#LG!$Awe`<*^O(qp z*Yk3L(MS4LUfmc+$y$unYkoJV(+snffR6iTx(t-;ZV8bPVlHRpz+6pDrr~Iics1Mb z_6E&0En&BtZqkrmDryrwnj4BZHxqs6=F{$0+(e&VxorTl8aFf_hv*2 zOGD;0*Vc|9`LH2lMr5i70^q~8{HIM^qdnqe@$V$MnAV5pXO)Ck2+=lNI1F6|DUZaz zpRn{7phcU--l@X^n&)+*RCqfHDLVqhi?{o=Nn5pL3upqvhS(zd1s05670Aj4(Is0$Al zT(aV%5s+jvnI+XsmJ9uiCl^sd3m$+4>5Zx^nKDPCsu2WuA0b3_Npk@T8p1mu?oS}7 z0N?_&*wdk^&^((4wVDnBxQ?(~jX9LXw}*zKxK{fH0j&R+Mdf9Gb};=x+6_$FPNr$& ze1Ijr61qty<_==*i(22;xw>53*WH<#rwyG=Y#&~&A2kEE%QOLaz09LRV5sciBksys>dW-Xi0rRm9!rhJI4U-0IDtmLA z!SLZCuoot&=+7(`4S&6K8x%1sFrSv zKFiFP(fIdx!4op)xQo--JmoEC>_PP09qBADHKj1Tye^>7$5{+IbsRvj&*H`cxQAOh zo%-A()z~YO&W+s0pe!J}(8ObCBFMr`EM#8cPkoNV1t4=gF1s^Vs3sP24-Cf}bFx@H zFXVR3ak^r6qG7X>gTOi5hF;}y@r#+(i_lhV4lT4ebO$e0%5H*1icKtisGtf)fn=XS z2_gojE~6^kK{g5KQ&z3GU@6SnH$P&Uy!TI%VP;gjAe*9j#UDl(`>@k`| zm93gmWY%fYzG7BnKGc@J!Z((3Ln~T}XZR;KDB!W-km?s@b%hvpxWZN~lPFzX?AxhtvM5u;%T z{aD~GhelG-u+tBlQ!)J@5hd&{3X&cjS(FK(r^B!erMuAckp(>2`rWPyv)h27)Z7|0 z-w456+68lIg?9sNr9toO72egPoRduQPc#vWR>Cr0HP-b#u^UqCiEIkUjHlQWMJdUM z+s`d~V%)YT#%+7zPMIW>y_DrchgcCYC=F3c*b-R{rDQdV575O1Ac7x9qi-sEDI0Ft zj+dWFI>~W})zC>YZ1b(dw)lz3HpSrA3s{5a&g?4fI(K&0oop)g+j8(6)=6X#aF?5o zWEVU4RG2*#=H?2svw}MlJ!@_?lIGGvT^YUi#ICc=rG+xpI$|Zj@iN;`s;h^Vu&!Gx z1g~&O{8&~$#un2b7!CVFW{fdgk|}l>Mm2>gw=+|U@t&D-E0_}YU9sL1Z-Oz2BY}P@ zQ?h;Ze}pqX`fQvTPvy+x=a4f`oMX=X=>Gv{ew5@)?)Mf)vVWZ<^lS$^5>uX@BW(lz z>*vIP-)r&X3FgNi8V&ml^CQOVq0Hn$naYn_nIB(OlVm)VA2*#HKQh5smz9Q0J2#zw zm_T29mfK0phW&~Sq3{jeP!ef}7$R-U#+76vhecMyWpU0a2%SUj0lagzq10>fqS{fK zYw_Zvj<0&QN68l6TiQjJA@d0($TjjoZjaue%oL+psoKw~)V>tD=I^Ist(s>u)zO8aL(~lS zpjhrcs-&0cD$uv{meXr!jZn3nsS28WpZ66t4_@AkVwe<&KI^n)FN)1!Qr9c64rtRi z5r1pVdmTcxd$~8ZgK((4hpBhJ(RiKNynvZxfxoOxkk8#OSjDaY@|UPvenJ}@L64lU zoiI0aGuCSv>rI4CchhTtHWcf~VzH` zckg1we-CeJF&oq0ThYtGdB+ottE?7cPl}tU)$cz|3+?`~n>ZOwyqGoO{pcIjFCBKj z{M8n2;TCR9X(55(*R{HJ*jv(;T}XX#XWN`;zG9CHxl#MMQH(?(6Vtsf)&Nv)V^-P2 zkanq})(+e*^^(}Og@&fEsIxRltueQtX^A;GNUEc;}RqO5RbO$L58_mU&^NWnOqznHOGkhVM{>dQ{0iGdof}lB0|aOLC-{ zveSA*TRJaC_ESC9erkP=SRKm6>QG5P`;A1}PN*YwC$u0c7e2I= zw?phPLR@M@X1aXl_ZKij=I%7G>HazuBg~DaekWmXwDo5uTaaiCL<*by%;0o!nqByP zv5M2}!k7LHyYP1J9X#u8c;?H#RK7eAg*^i9bkvN1Ry)PZP6B%|%ZNdoHlqbA!w_$(hFckw0s@pH_;ZQ@lO*ofB_Q zn?nh~_eraZWixujfEYBPNbWvX?h0Nfjm~?BwY!hE>JG#E9xa{NJS<5B8`=XUyJtr7 zPlmi7!Wl-U@|So8CKm2wb1{3`(%MRx`rum4dK|MA2UDp=B8Y|7Fny-lr-)Br?QM%~9=<-*Yv;X7VeE zx$)c7|Iwc-#uS^!XwYhWY#BO#BJ*V~({;3L{U<#f##?N}>d~yB>QfH^(3+=O>eH8$ ze4JLvB#32&0-ojUT2hU|YZP>1(4@}vI)QvcA#N$7mI4yM`^r`AZ9w}^me#cz#six4 z!f!JXsDl0X-`H3|y25B6^F^g;<&GCcCR|9>)@)Qd%+7^hS_MZu(UZoI+UsMLnTiu~ z8)BPn#esCox=kpwin01#No%5OT8s0?ileAoFHzkJxj7%5i$Qat^e}Pt{h30_a(?qMdBeuKXdMj>; z9Xyehb!dmQqVPgm?`Jk2mMu`M}zo+xtOsbIy_rN&YRr#b|oB$S`*rG`Ee2_%e;A)kRck5gB{O5vA82i#CI%He? z;P=aC5rksHJV8LTrCBUjZ_$>X;M(qTdrFQNEteUQDt9@4R`>52&hv`TXjy<&y~MwEegD*rX3bEs5B*ywKL1T9Ssf&!3Nzzyn1`NZ*yCy*=Jc{c{oSy4!nVXB& zb~$o?llw15%XA%^|1DWGkgJJaZ3nUvV~<`;@LHz32;hPWznN9CCD_)NMda+iugOVb z#WlTL_~zLG|;7d4mhP(YWnPv>PqXUVqtn^S2o-mr#%10WTtRJt5eS zsGjJp3Dv`bTWWtUxYi=_$W`WfR?jUd1@$n1p zxx>)@)M`XVjd~3mP*1cKJdbLZwi*AX6J-i~O&?{$WrwTlENG)iJ}&-|`CM*Ssaz zqHF%Pp^)X@*}?ZP`~rb*+VEGLEBF%_ev!amVZ)DnI(**yZ+h1VnQw*^W8ILc7;73` zNQL0SxeLx`7K=AREqCkYjT2JexCd{rry<^nJJR0y zco9`+hTQYat)Z5gG+!_BRG8Q66=r=wg*mHeO1*obH@QDxw$luBXLo7PbhgfD@sBSy zuPe%GZR*Zwxvr>emV5qwzu7UR-m~yp?Gmh4B+B&!&D^cQh;yrvwZ&)&ZKJsi9^>Vn zDHk-l;Muax5u@)3tu1urOSJmSuJ_FEo>D(y;W+IQhuJ}sPlu7UmMUxyw)oe&%uQ#~_yTmv4c4To$FWO8fM0lQdF{F7(b+P23E;NXT&$G1H<(S!z|Zn=(WA+G_raOa~kGCYi=+d zP5qf911%i3%7wT6Et!~jcwhnkO@=vQ$&_^XK92z4F<4gV`R)X>ou`~EnifOtXqg4R zX^IV*x-Y-ohP@$0e%OVIsxcehlB{i{-PEtzRgUB;t$UTlcx5a#s2CGwZlb3p%UX4~ zc6FI)zcVBrLe?X5S12;}!1D8mv3CYa*501v-=LXUVRrCp!Tfpp^`gL+XyXN=>3Gik z4Xd1L#c&ZRN6I?kvgDVBHd?lRzF2pd&LvFeA^0@3g(9O4;rTjZ;Wop}?dBE1B<2dX zxQ617_z726dVC0CnX-S|sXOlZqG67jKRM|>RgiR_a#-$D>7gPaI4rXh)vavR6ep@^ zMT%83-HEEsS1V@Cf76s%^T(Q)H3u9LCeq_bb2_3i#k!zk?eW>`fA+~yO5NkNeS)YF`DcwUGvK|h!)9G zo>|pmBmMJe-goKhZ%vOF(UqOlNcY3SugVlVsb!W1hHNKQW@xc$;|G^}9QX_Cg zY}83-t%0PoR^0n*cF%gnApsQ zRPQa=R+ElfNv|!eUOq&Rz?$l_!$)?qp?iZv-Af4{*$$HxOm7=2yl+%^J1e}Kf|1-! ziPlKrGPYR3lQYk@SnagpMy82D3jU!P>2V`)fy|3r1uRdT1GEd+0QDq5J91?I5PQ|^lMwkwee3cu z4xjB3^SDHgY&IG?DyUDro2WynH#-e;P0-uv_wEjyCUm6tzaKiX-3q68Q$k1lrnR@Q z$Cp?iC_AV{?q{p&Rj*7K0~YjoS2JI30bf3u&qZ-F*s$SK8PgXjT>3x5nX%8tnfG9arDVt6pv@32uSA=%in@)N8_Mk z2^+dx_H(OM_J)(5K207=0mu7Ix}E|~xY4EC&neU0H1pmD&$t)0Ql&SI+cDS*s$90 zb_XL^j+l(l4XC161Mzj;qqDj*=*QOj{OK;bChe zkZ2VIIiEJYmBWdy6?d{F_AUh1e~{~kH<7s{U-{@XDI}_Rlj~-LeDp@!0Sgvj2@kuF zHwwo@YdJiOBepc1M=K#H1+2|NG-U^y(9w}&I5_Mw4m;Y<7T!G)90so|&Du7|!9`iC znxQY0d3TH}cC9#fO|$m8ZkC~Op~WmStdcgnj3RbP*_?PK-}ds6O`+XH+{byB1z|1> zbcXBH>R z{A`zMSjWQgsi9}BK<{(ddio1}R1eUzO$&$1en=+l0ZUmwFd{QEe2F!_7UzpJ<6rF_ zuolsn)6F}OLMBq>(I;IM?Tq55N^S?!k2}qFh!Qd8ki`v&dgSZ z+7%G5sV`gHrRSE~u2WN)Eqq#i?oBDlxWTd{m|}`_soI zlB|Qe??F4{Nw`ukyu{)-;QqN-9k9N|;!uk@!Kj*k$!WP1)1Ic1HE6sSg63W#@a(-1 z!gxC&Z7x%RY4)y-+hQ?zk&S0YqmOSm>=YW9fo!b7Qz+dly0^G-_$#n_ z$8sXRlh^!sS%%}Dt7!%p^^@OOhK5!|lHPMEeUAFg%ev#9&(TUX;?gmWNPf^@7MB3uukeFlg>8LBhI+SPIh%g66 zgjQ{78Qu0NoLxRaTJu?0YY+dOF50oUG{I~zZr97mEuoJ(@lw)!Fm4J%4zOV?Y{Y{DMBl$O*%hBfRBKbG@%4q(XxvOm7qA#HX z&^IM(#UahwR0A*-VmAj?!Xd4;ikj=Kqz^vtx@5`+{hFIz(j|Kp7^RJ~SIx#Y`A&AL zs-)?9cT0iM(3WWPCDsPaUbY34Gn2Q{n#-mDO3B3>T*;>uC0rn!O znE_N*^SG?}I>g6*6hiIYQV^g)fGF<6E4VGSP#^uh%lQ8*@V_jHKi)=lgujB~vdW`9 zebSzo=J`O{)B88Jr(d;WfIX{gZjN)U*rK-@r6R5g_nI#FV#^CTs$KmMN$7Epdi((c zrHgg)FzsFY;Q@KLdgy)peIO|)>S-{8CgrI#;Xwa>&;$fbV&Y=Q(dxb=NQMMTt@AOZ zjuHQE5>k!EzJyJxphc=1Q%MC%CF$d{2;{RUG>}Fn-rO4*W|i(frSySQOA8&+3ZjsD&JTpn$hSmfzLChBwXPzC$|*!v&2TZO zQ%OA(Fj4&vpt@hHTOWY)0h9f!XG!*Q$0_`II{F7dh)?Z=(-Xc^(L^ZJoz@cpycLkK zdN!}}Ynj~1sjv1785eJ!B{(7KDM+NeV3p-U(uZ45av#n<>po=If3+h|sfjxE-_fI6 zsYiE7k3IwY7nx|Avm&PtF9)ob{i;_|yLy*Ydd5L_ z764PmKbxw@>U5jf zb&Ju|p9LRPDiXr`MMixab3vK43U=QMC)Se?ZIhrJIj@|h$BdfT(Qt;r{K>dEaf z6754e4)c$y@hm2xGvh(EFESxzzwqz6gS{Q89>mG5hCuX(3|3(_(fUuNJtvS1=9&wC z0kPI|m|*Zc`!4Pt@N2U!H|PnpE|4eu0pO3j=HDU2*T8gHa}>AVhV&ZeeFdK)e>>Yo zkeJ4&TD(?yccNXLYAK@b&HJ2D_J;P@bI4$9cBT%CP8fb8g`9dxMofr)vE3_j<+gsf zQel{Q_lr08ej{>Yf#Lm2Fl$Fe){bD-00Htx@|!dG1&knT{Ol(T3MX3#4p<2Gr3@jh zdJlI6jUMGQyCbzbhVollpGaGUg}P7e9h*Y-VBKo2FA4z$N$>I^ot!znP5+eMRux80xBbNaafNT!C*|w`Tgf>(XLF9uc~-g` zJKIf*UeX$E9I#9xcMbrksNt4rM0D{D8xa4c!-1lhx5XVv2a0<$PM3ei_Mf# z5Bpb49Gw;!b_xCLpZGULhFK9|sG~I<_q52c7nDE44l773B|_}o(PL60!5gQq7`&vZPI`xvt6Gs`K{J*XIR-Ze4$`=1NWj<@2^f>T zyX(^e##EMt*HzB$3h(BicYB4m>&yXTyU%67*bXt+o^8Nbhvnz69*Bsa!#PR#(IajS z=P&~}dpVrD6yVnW-NBSpG%4X?Y6EY71@dLACSjw3dy%^H4B=wC&r!J8j+9^=2^TvS zGWQu}f3X}Jo@R?MhmCcnWsskcVRNGqaSnvMZ=`Z#$53vZ87X{n<^KpfeoFkJbWo+u zj{S-qw~BMazH`QohtF01kW--P!d+?5^dwK>xj@q`HasPPe0shQX2nMwcE6^w;`%eN zqP>^A^&Do8Pv-gvHB`Bag66IYb62QryB7K3kl@94t>DFAWJU&dnG2X7b2nRoj9iu) zArXwLA@e3%a)t;-2|whd@LP#5lTm&g!C2*rr$zb2lYxvQQj(opv5P}{aPY6kFUsEH zO*UT+r1IraiL3qZ$1e&d=PrKn6nMIn($nDS$uPzd7IOxzl0(@*ylw`QUN_0;#U~t+ z#;!o|sETC7#ACjmoNfL}2;=T^b6`bE<}QRV!o%DXj1&?=-( zc4)YoesF%__6l!Xg}L7fSgi2w43vCWlBn>$Lk!$zs0N12o(gX-x2g+*n#X972T6Yh zj%T!Yz2&$AxJ78qkcK#(5rJO_=NgH|`;<-b8QzfA^eJend!)oOZcttf>k)jXE&GFt zXKXI!c*eh|#2>ahjnXN+!@e z<(klDF>LiNj`RVglfDTY(WvsFwneY96T$#y&Y+c6JD%Bikqk19TI7(%P8+VoH1;Gt z5qwRrO|V@N+PHI>LffisR#;fe`&IMNh zKO*i%RG;gLeICeZh*#v_gwA?Kr#qSc#Fv`?q?ggz0(3Y5il{zeOrw(jWFdzE`bT0_ z^u_5;-@@UNmo^g{cTY&x#>kBszC>q>^ACzS5jfx>-nf)`gZh7xFo?BXO*Le`>&Pl2-1VY-THI21N_MY_wn7m`UPaT6` zflbSI{LDDY(-_`X!qyRYTNH z`HDwKs7eE55X7Ad(ply3;d@&?3MT9X7vL!}CSIE0A zq&!`%n6NmHyV#-!A%#(qA?;$nsYy;NV~1ZA8mTqv5Ez%M|yV3UeUEc_r+ghfuP6 z34EomuA_Okw)~q}GywK#E9$d^x92jaU!Rrcv%TfL%R_f>sdlwxZ)vw3EWWEB@S4vG`Di7rpX5?cr4iXQPltEn~3Rl#C~)( zWvlN*Sx%UDHpO?o=|J(RXIcCgzt2GNQD<5F&VyMfzVGDO6~Ai&MO0>}x31mfUQy^CGv0B;1kLeCR+~T5zxZ1=Ks;H|Jz>8CB@^A|B zqW;&e0sCw;cO=GMMirPH(d;x#0k%c~`)hF4>?DMDM7uvpB>srmjsU&-iM3+=p3iF{ z9+G7%g^_Mw`PL$bLx0fWxR(CzroU(CZv*{(M1PmjApY568RzzVX^!%p$a9E!H|0Pj z%gD?2-4J0`kdkS9E^ADEezU#8?Dd<+Q-kF2Ol2Bx)t2Y;SxQ~nijlbzBv+jwX5LcE znA<-R7hANY`$x*E{j3!hw`ru9V4u%W*}+~@ry#Y8h4+^@1!*cAUhNz!9@ z_gaw|Z&a9jL*5;?uVgo0C3AS-n-kqszmVJwasBn{2ac zj+j+pji^52lcR!MiWGiMfea6n$&#KAWHK7|^U}dGR@hw~EZeI^Mhj{9e8a?gAqny$ zTO=V7Wgn5nF!vLoLSA}JyTp;C&oo7!o5bhWrVotKTcVF9=>wPIJkTdEl|CE`SKSwz z%k-(CMIKL^UhKc(A2#0ed&Go+*H+yjripJRm^^Qkan7L>^efuKQpSeAtO=^?r zk3K{0Vr_a4pWiaQ4M!o)bh3x)-A{7ZML;{WgWj^?52u;)KF7YzITDZk1A5^yb(4y>A{P+7QV$CPrx@kaL_$Yk8a@ykNsr%-Wz(}d z9HEr`eX7KKbOT#@GaIut&wAFhH=t#|R4HJwWg70)s<6X{twK2KO9aBQ1zFOVA9JRs zS!>ZAm{yQIcp~T0IeverafXazYFIWB_fEIl5t4QganE5sY^TV;q{eT3gnh$%qaH2s$IFJ@Ope zZ+^_AU!ViI`{}&^UO=J0H+XcQUVYrd%cYASqi;YaEFU<+zB7C%66eQ-19Gpn?CTQo zGO<^Cq?h3$saEsa#ydIT@_YCsZbGmOX3q0l#6#jJjlIF>s}4yig^lN4yZY+aW9MtL zwxI3Ujjr3ufhpgRqZ}{#_+dtE+*=O=wT|d)7=x@>t1I6Jlm$l|u?nv4-w1#7^HoET zX;p>6HmS595ZXh*IU2i^R)rXJ{JKE~_7xDtk26kSrPPVh6$^DBB8s=BKd`w6ivdvy zmfS5kic?#5T?QW!HE}PM!4`IX^!{Mu^%jp@k8a>L*cEzN_nlKa}X3xxA3F;RVa3 z&c=8|g6`sF=UGSc6kFStDHfl?5wWX4nF+ReQ?z(%KM#iKk;>o`Mu4fZOz#DpG1l2l zItPK|yChL|v7lrHnZn|o>r%%rCBseA?fcuv7dCnXS%UyO4a3pXO^~>BZWPba0%~4uGT`xttPBJGCLQs#0UhxiRHN(_xpO#_0iee98nrg=#@B6wb~LNP3<)AO`-+R+o1mx(2- zdX}o=jzlg16v;bm9djgtu$3VkrZzd{$P&H@y~UQnt;Ig}=)sg@k8G*i(nri*DGJ*_K5` zEi#VqMSw6jF%&QXqi!^8@wey%@4;!ERM00){v6ft_QE{&&Z_Ga#e^1@ktsJw0QqG_ z1O3c9KScDsgXoKV%Rz6?3~G4fj*OLdd+xfxC38dgeQwPKc4cVIS=2?9=&**e74&&# z1{#7+H`1)=u#OkCc%u7R^(UsVQ`jjps9Zvy&;G~5#CPUmR_K?r`dQZIHt<0VpFD#CjFuJbUS{rs0ihBG1cO%9dkvKz$55V9f#$dF%i#eUT>^n`x3>I> z^D#d6Xe-8_FZpBoEd77<`N}mc`+S*o9GS|r{^zk`8E|E?W#Dc6L@KmBbkQH>v^RZz zE!5|yMcwZ&JGkiDuHj+{=n5zUfz*T6a05#=^dA`Kz1;Z;|qKMIEcZ5P>Y_#|TN`+S5HxBW>(W<(%s?Fm1 zPakWws_oI&9qL?41hG3a=_ACRFzm-8{xags0v8_p&FC}o8mR}%xRtuhAh{0S(HBTb zM;$wx#-QbRQ;#{g7A|1~ZVOl9;vsGM(jZ+9+d2reo-EHeth15o;ev4a+8P^$M{huY zMl_Sn!9FwAs%m^lI6kAkp{9mi1|XW}kZ{!|`= zKZ_!Ya$j@U<}sC8i3@$GdG;x8v4*>yVg3p^#aYI3s9}EyLMZdef=reFq9Y~KOT^0b zLUd5xq9Jp=WO_-S$(79X0&h|H=kZ>$c-K|NiCbbuisM;a{Ow{_rZ}F(lU{lb%L~eg zTaJ0jY#}@r+U?olulnYxu4$zyf>6L^TXe7EGzSYz{!FerS;*2rz&cLjnRn%9^~|%I zbQ;IJD?h7aUX~09_IzrW{+_3%37V<7m*qGvE7MEJr0$fHxU3vf=Ii2}$GEUVqK^Jk ziC%o1a>$pO=*7q9!6s>E@v(1cqL(+U8LXYfn}1elk&xq8M{$k1W1)Q%*Nt=;H2I{( z#k?J}jpT=N!|VupJ0XHR#X5GE`qe7>wE6`-2iB}P2M2tA%uvS12M!Ief&hEKJ1_-wl&5&7VLyU3rHWQg92AD7e~hvWzWH6MZj>?yvP)_%^pkMz zA#wA&m{-Slr1xsq4=V7vhq!As*wFww1evOCBi_Kzu_l2<9#?(rKYmxpIRU|?N7*(U zW(!K)AklI_TbAi$O=r?>ZP{P4*uXYvkGAYxb-7tvb|8xxHzMNXZsOauMAG&5*ENRC z<`u%MV+g^w(D-+>s&R)kDzWHoGtvL+iA^5pE29Srfht^7FBqd$9 zA~OWlup=!wQuA{eQqLo58}9P8^I;Dp#g{7V3TRbpqMgc`hB%w|X@G_AB2K%H-328- z(zw_D5k^Uphr(85hbIc#cubXMw{U_Py#;zRN#wC?U>ju{^d#Z5arZKi)zL}H5pe`w z_EW#GDd_UagcmCOg4&+2=aNn}mmnPmFLJR0XbiD20Sr&7ri0%aRGNfuIitf`Md5tOhd)aqcC^3!t zMNiHX+xDnu=J6&>hfE2?2_IVn8ksi;>_%$Gb~zW%lOZSIrQ}}f)E;T)3SQ+d`&e}q ztr${UH2NFWMY*8G1JpeasP6eZx+Ne3Q~Cx}rCE{CIZn(RkNurCD?#!#(yNM6Q}+>f z%Rh+NsE_LVj^*7;A>`OdkFm(NxVr2YMHTj2p9MM_bAInFlYYJ<& z)f2Ney_QVw)MlT)_n+cRTZdd!8y9{-ax`5`oyOSQY+*CyJNCu_%tNAJhaz`m_!4c9 zZ0Gr5UTkqbZZBAD^ba2#;FHiWl=W-&5D*eqV_(It#INloEG$bH6%s@5WM0?!O&xDe zQ>&0VTEN2@bdrGlj&-ah?sxI)bl<8B=BZAprDMP< zVkIo<7_fHZPzFAoS=fm1WBM+&+&H%?4almSmPBcF9Ic(1(oji%c_^M*_aR9)crb1i zvFbjUOn`aF&NsNvs-&tz4y){BF*jLBRhO(!o$*v^a$#zx)YT=DE~wdQl}?uo(bL7s zcrHiW7gNP~YDnRHze8x-^4PM zE4n+;XGz#@-cNLQTCi~{U?)TEP>-z`p$@CJ@;mL$GR!Ks!Ci$$%_ddDZ@$dRm$%(- zzP2JmTt8eKemr9U7G{_eW<+v(5scTGzPAE;NN92alV!H-wB#l|X}o^-Tq9Dbwpviw z$m+-DO4fkvt+1OAWS!G)uMkWg+*y52Ckhn~MH|?XM)}1V6U7qCXl$7p!0# zE)l`ww>F9V)-Dn6HA!Tv$Ffj*#BRxZO|vu9Uemk`wb!&*?KQ1bdri-(y(U;!TQZ<3 zqDEMcTQW*oqrt=0hSIf%)rL~^8oC;iU*63A+E(lr!Sx@h--qOrFTeFRUzN)J{-QDj zV>zxc4;T%HISqWYdF_2;E%!E*K?*rvxUQDBlXee>x%!Bi}h~nM8IijS*%O{hAh^Qyf9%NqiV`52dq=GSW8-G z6;PKNPnRA}XSs198S~`NlEYepbL{B1X=&NjOaF%K>UO(Ql49#pzz(P5HmY#CX+y&4 zto+rf_;EO$9Zfe!a;uN($#Wo6G?Xam+mN}*Xy~diS0^)Bi;2d&-=9om4VOSZi40M6 zRw8Q-tt-qR_41?Mzw{1N+=eSVIPtfuTJba^)YpaBzX z*c&vr2a#!eHM}rLS}u~q3Vr4Y99S7J*O54}M(25vHQ+ z9P)n1CtJZU0WG%A1AM`)Qt|T1?uYLWH-4oVsbOUm7q^D3#Ju+Dd2Hg%iIs`(7CZrc z?1132BV2u!3qp?F8PMFf#D?=4$!D9h7O{cpun|Y-t>9^dz)kTcyWA8%-1Z8uwYmgJnRN=_N)ok*4=$Ryh z-!Oz1M1x=YA8Ik3Z^;WJbwr<3H`6Haq%C6Py4dGQtKBXcqUu}OexWFUq)@%lZ%O1{ z8WFVS8|Cg>(HWKoD0JjtZmkw4dDq7WmE_aK;x0(J3s4Y}w|6KhHQmR7rT)>_pQ%}| z!fET)!cVDNd+28laVQ40uWQL)&Ze=+ux{!;m#FDDQct|B^zp3Y)vwV!+hKa)pu4Ns zmOENksMY&)x*cD5@w6`IayTpTzy-{vL#f}+(TOp$@KFFYSW zScA+>Mbcv0V4^M2#j2r_F-7>zAI$>EcyKC@&Iiy}1*)%nDupihMdA2ZJxF%5#kfwF zVqXl`@uy>7^zTR(fZ*Xe-rCoIAUO1tz%4R^g|`}s4mG$3jk0~(qyMDN1S}B05?&S& zEmq9YV&xnyR>{#~vpE;aJdr6JN~UlqnZhA{Dp(8U2tZwJXJbWVN0nd2ExF=n@uZ_l z+Pa!9Uu3L@e8K0Kw_ba?^LBK2nIt#WBQLmLL}Qk`Tj}J@_3~e-&GqJI*{$T|XR|O3 z9XHJ8=d*Y_J!Jmu#Vp8PCybUx99Bm%+r6QdKq(1u28kzX3mpTQgnn)LpK>8Ie59>- zIadiI{{sJe49*|sDyd{;uG+74a&C1<1306QdiAQ!budhI`e~YU_kZ;Tjq}H5*5h!d z?DN*;!B)|2F6S1vU0b$O3+<%YA-lH@My0$8;^?}gbP>SjT%*TVwtvxdf6JtjR)5Px z_LOrNKb+^ur) zsvGpi96FU?c-|*agV$@-6FOmTOe8v)edX|KH2rtAI`$c=r}C|M%6UrkVp?ecqM20g z<>FpAhI>A(x{Ggy*KigIDzpv{@8BH+0bs!jZ?r0I=OU14WRN9`q(iyv(}B1?704a> zr$Z_DbSOoi4#krOKt#bLACts@V75?+&AvNe{ZW!aRX(q^7U1iT(1d z8rij&PTxiYiJpO?U}TvbxN>qv#M#OoJbhWBV~=~c8b=X+FE#(Ho_mtWeT=x{s$W)P zVs2wbp&4Th@yS(hRFQ)pez}moKs0U;=o9AcU{eBHy@8d%$c-5YXCR)^0zD+;Q#H4) zG)N|(b-Q9YcLk1e&I>FTSaSi06E4>r;~YmS+^u=FFNUK5yhz@yaF48LRrG9?x4P9^ zr;>C9KeK=!e`5Cf+k~pnoGN-0ReJExkFa}a_R!rdy@pS%fBP>|L_Dk{D|bHSB}l{iWlUddEa z*V+Hczd*XG3B&`+_hI*~5;IeFD-Y{B*apX5d@BoNpnn-(Zc0~DmH;7+qp2rx0^zmNS{8+R za3d$>MxW8VyK(p*CqsA1G7{?(UB0rD5B!oKeoqg`N~Sj!AQnZd%Fah~ee8PhqO65= zNVnSF|H4l-CuSr+>ju5kE{~I2hVlBoC^y_uRq^M+I&HBJjiaCD7M-PB-@F zih@n6U9lhp>Q`>&9wUwNHszYKZsBOIcR1A>^{Jb^+On%u*+d%ffd*tcF!Z7 z&5@$7;8OylzL3ykJI*|l%GKfe*j>SR~TJAB`I>vQ&7qjHp{=*&@x z7d{%naI#m?d;OswvpRUudO>E?c{j0I`0*d}c%n6zGhtyetm{^)Ax+iy`pWh$%J0Ha zwvLikpIk(LIRaF@)zNaXd5rY8mRH@~oCIN0LIh+eWQ#LZ*mQX&W08;LAXg-OR^*B^ zQ#_%IGL=H7OKE32YjqC3&BAN-Agf^2Ygx-f|FNb}4Hv8I_ip6rZ=G84obCKXbhZu_ z*u%$Ih__LIl+N!1b{H<2V}H#+YLY?rumO4$y;b!{=n9`fs=kKtx3*Mp3tqFg7KczLy~P1JT{bHJ)UuXZIB zE^N0^@zXGHb2XOCUuy__QRi@jU4Yk>v*4-}ncAoLbBBd_UM;kZYF>1oY2_uSW*35! zi})dH9AVZX2y!XQHGIcV%1~{e(bP7AuUHj%W`~8%y@Sf9+J|Iae9ekWEh{6nFUqY_ z`6`z$FL+hQzG}Dg=hYxSxbL75RWq9E!q?iz?nL6^89#Is1PF2d1f z(I7U83EIE6$cRiQ4FZxF{>0HjKiLZghh5-^Je282U`Q<d?MJqv0| z_P1tmi=nFMEXT9LvO^RWy#18*_Rx-7vG=K=>Pn#itF_dXeoBbqslx`fb^+ldkNEhTTbn!;T`q<~Ke*4pt+;7rp zJRbn~zZu-3Z)4jds!X!_sN)9M89RO3Xr=F6Sip6|@0768zu(85UEdQM#(2+@xd6*p z7+8;;&p^X`nhUL}9H3sana^dRU&oc^!_$2{RMzNv;B%M<^Gkg!ljdEEqvB+mCh4J; zaoNmxmnxx}>A=d@YF42{_d4LS+E>a-f@mfjCyO^U&&fgdT_{)T*P4`fqilbJ(iI~) za0)IC(nYaP()QP_?qBqM);}P|Yx-67Lbq|>yk2y$-}84JDSTamZ1!t>r)E@yziT@! z?Q6~TO8d&DX*320n5%Y4k)u2*kG)<=;g{b@bp-ix?DFe%Rv|o)fe>;^b6d?v^rV(n z{hB`$G5&(-zU?}iu4#dI^h+lYVcb~2l5}OJlB6;BLz2eoz|KSp0xe&LPXVN{SS}0Yv22xWC<4hB_WJhsvUn?{CzCfwAR%Le zq&|IrP$yk|5H*?XJXe242K9df^_STGWCZf>?OaWm z09C3fKO!2DuW6ixjTM(^*kPGQdVac=1#W#7urV42%ewt$ug^S=SY<8L<1c$-(FFin zEJx_klp^QnEpQjqcLdCJyqVHf%A<)@c#(Vre(L zZHVQ0;K5*1t8V@7cdB%N6%l8*FH*R~h~zFAdLElz&RGBvfdkJZJ|qqkH%=4b&{;>y zg9BU?k+wx?#pnqq1pF1@^t~dp-P@KW!o+$b(U$UlA3cBIP_Ut`WGzzQmWLWTZrAR9 zKN!jHAgYACJ9u0D_Vj#(yMoYTt9Jkrj&Rs2RqC186qcjdHi)wT>ZpUMXNz*G!t|9l zBG}aC3YB#(`n5_hh&?(`S*TvjPBrx%YJcz2UqN4l^A6pSqYmILBta-gB`KbL$N|Ss z)X7&*pyqFt^9ymvt<*KLt~+G{VH2LA~}^Ml41QgTReqe zV|QpvAETfB$XQa>t%bTX6XQ#SV#; zyEkNB{)J!WIgoL3p5Hu<=Myy6k%f#R-C)oOUTK%g&aKV}0Ss@%kXLFi5iOEs_%YX)&HUC-dA@ zkNAi-HpnbPur13qwK&V#IfdOk<{_bgmDy%>tO30Wv7>M@d@80$w(QH9$yA~iJP`*| zptnOsljS4#>#pc5b&U6L>lA8a%Kox=*0e^a&_zirEymMZoKGr}Qd=*Uwi2g6>Q1cKM?dNuLpGY8{eqvG;l8TXbZkS9LqP$Rpr#ngq&wSx} zIZEfgk?JU&c_U?=;i&Hxbx<-^lZuhn$vG;=BByV`vQjcqTvH9pHTCl<$Kq`9NIefZ z7LD{%bU3eob&3xBd6R2Rbw>JHBk|`7lO)<$YdBRwr1~T>JjnLY5qP5v@YFFt3(qh9 zEsrxrqO$_#0L*xx77QWif`IpB{PcNWMkT(c_rzlreVW+BrVkh*RVIZetUQXmi777nVNyh3f06^io$^W9*>CP-0txIOodu!B(c zLbvJo>jy%lEm2S)?KO(yq2Eqhq$Fy0#OW6)SK1;qB6Y^yHpn5&$(C99BhR!-xlX%E zjc}#6ECrw}QzOo}Ou0_GOpUOYslC>T5FN5k&8BI8#p9>NBfs(bvf`Xsn?d4RohPej6knkrIaS{_c`7}w~ zs5Bz^a+svIYi1(7c^4Yyb~Cq9)>CUIug z>N}-?<;aZq|7|hl@Lbo^^a|i-D$|~%5!GrQ-@#%ZLX119R4+!3$b)d>MJ01|74;8R z)^T{pK{Tl;p3s_EYNfWMNUCc%JbcN=c3U8XZsoRANaP||yi`VbG2$wyHJtb)R2pX; zyY_W9&2jb`6gjm$z0#hKPuCtk`T_5A1_P@-J@XB5kp2tgTe{J?@JpOUR=3-h3&-X* z)wIS7=*Rkn=kZY`qv*3M<-ih%X|p+{OE7~(K$2Ehgv?Q2`w0>?S)Dk^;KM4=Z^L*L z@B~vRhB%&)Fo+zS^!O(Z@mY7XnIN^VlkXHu`Plzu?_J=dD$o4!nPh+g6V5~&jTal$MAhn2S2oMhkX=_`zwXNN4xBk1ewXL?; zYcAvlB;kG+0w_)#FELgeE@pnu_j%s;%uEuzY}x;I|J%<;Lvqf0-pljep6mBn0&?BW zlRw;U!o>x_sVb-FVtXZsBcMa+Y?VW_)F_VY`&hTgl}qz}1wkXu(!}lVqMhrP8O2ma z%(?7uSJ6nr^l};n4mkD5lzKQWW-KG5A&=2^9^zwah*zL|NG}1zt-16pOJ=wQ7+*Es zL;#47%5mcHdQok73iLQ5oYjPx36_tg&y^Jv!_V!M- zXmxlyBG#9jVY46kb`4KZ~PwgszYgOw`?h!!QpkFNde1KEYG|WFps1_<7+k+ z_-Dhl9stR0)B1emO>p;Jgm)5hwfT722(6r4rhk)RPd67;>a{4yS| zR;b>^3e~g*LC}!jyAvTnKSv= z?`=pn;u@^WFUrtQ<{b8Q7?$5DH_mXg!^$6ye1>$@Kf2FhtH5-Qmv8d5zawnjR1op* zpc^(Diki&rmO26l`3eTLn6SZ6pxlIi1RT1IA75>F@SgQvo~WHj2Cb16~~o zSX1G_8KRe42Y$EBnwpIdY8qWY5n?`|ChBW?P*g9i1G`{08aL7K!^wKHjfySbhZDhH zXJE^=x{@tneO}2lJtVsbll=u&cK8>1hLRwwOtWN?50)r^-XXb^LEcBp^ zwO^4LcY&-SfG$J|T81vXYP3k=EN7Dp%P^_DkVh-k@5x+|#OG*9JeDg*&s|QX6W)`n z{BSzymsn9U1H>=_5W`RVHHx9%hB4I8tg1~@B5vt`;;gl^C4^-*F_>3ReVp+N**(T- zgBJFRD9*BUH~*egNoOHS`@P>~8GOczEMco82akzBuAvE45`zQmha+b&{CFJVH+bFW zuJ$-0)roNR7Iva66!Tp%8}%k?7YleaA)*ut7~e_50#$-4`IvQcEMj&}wOom?xm!5p zkjOmdzNq(bka*-9`XpH-VjUSc4);q)VmjS+^3E3ezf(B{R-B|icK2X=`oU0_^a)rU z-F6(2>2h!!9KgKjwv$Ln!SCab1&EooX6%~J5P~V4Wd`tFM&?TPkY+gqUcfUUlHdmK z(_nh405{06bLk+0`~k$=Q>s@|zKWB{R_ut6hIO`4Wq_+Vm4+gSWB@yC6v5JrIS5rB z2>JFI)=5^pd_$10Z|+8br{&r^nC4LC63suZXs$rnraKEkXXpdrV-jQXuF>SZtWRZ^ z1z~}ISjhZ>1KMQHA#n;hB;J>RU{2AFKnG^ww^!)5@Ii!pW87GdgB)ndkr@;RxMe9qU3t$gP&6p!wH!B`;154#TKc3 z2W0?fwN4g9RVVCERb9vz0jQL#zc3Cqa1PykTKOP(mUTj-SqVIKaQ=ZV`exQX(2%1x zS0x1+YQc9EV}Afm?l&G`4O(p<%aOIh;v2Q!l7^>uvWIn-Ou=r4!YLH>lys`2yXT8g z_CnWw13p17i`zj|?vRvY_3U)~=DGT(#q15h_=6qYtV1plbukB468|>qkU(nYiSz2! z_ZPF*QG3sM3QR{3@1%1bv3MC6OlYhlctl-@F@uRecrGJds-!)aqd6E<%TYVj$aOep zJ0x3<5BiY`Hu22ugeRA$3Z!5sgPm9&S{!MS+zd}-OIRyWbu&}7Sp$C+QKMqY6@|FXj^6k>3~drq zsFx|!D-`OrDWpn*LNb39TYD={yLZk*Dpf+fQqYyU~$|PfpE7g4+^JP-nt! zOO>=|!^4dTs#>XPhvC6;*MH38kjXGS^SQcZT?z5jI4Uu@vyLcIbsMX|^r?-+-nF%_ zIMqgaM2sk75e6`}OKqdvD?i508k0I>Rv+^}&upAA zWg8s7Pn(TFV@kt2djme2mv1@+sH}lGTE9v{vVuKnuYKdU>ftuxEouc6>)Jp2%?AJT z>7_rbIKW6}H~ZK7MZyJepY#PgCuqz*i01bjtFCl9v|rxLdMRi)*|&W*a&7=CE2)(N zGn=Kr>%4wuze|6eGFIWn#_`YwNH}=!unW%-41_4#$Ym>gP*=0D>Q`JBOz7wpJ@{Ak zz%Oo9ErRR^H=ch!6fCb zC`vm!9DH^F(uL0sEEqUf+Q-Mm{d|1n-a;SsYVb- zJ*19W`Z@P7AGq}YadrJLY^^%e{C43EF8o4wd>)UWLQcW6oq+at2+s)cZ|WGtcZcnw z{D$AY(9K3FoK`Rk0^xQ(C(S&l&MgU9!QBJ&zJcd45G?QkS-cc)_7ytTI^Xb_h=+OokfW zTt3$3@=?B`gD4R)D2d_DPx_ymSs_ORMqyW`7w zXI-N9yI+;6!Um_+?}*RheN~=zG7xunD0MLCgG7wJhf;?FzBsHQqYg`LHeK|7+TN!e zDLGfJCwFWiaU01dBw|dqvLM>%7mcC@Q!5Mj;1s^@(8R-JgZ=Z-!*%q3(F`^6*h zH$sKU`X-fi?+%t#yIE6kBnlM@P>C+k_F%ja8JIOp8-_y;-DRx(`Ebaek^vXCRCJg1 zBx{E&i*U_w(SQ{?m0)`Ba1k4eohl#3=ZA|$xJ)dClG*WydFgNJAd)sia%RV;x@T3gfZsFFl;2xpr`1z(rOpaGZhFx|8<}X1 zl0N4OM$uKV%NV0*eo-0c)~oIfS3|(%e8c0Af!Fu8VGU;)`0FaqPau^cKHHXj7%xx*GC zrn^d&yu@xgC>@^%*{4Dqc~t(q^9JY7lhn>Sf!;{BDp4sSo@%B~Q0S}J)I}2ENJxbH z6|4`JRG8_LlJG6P^tv^9BBdW3OH#V!LX?H)#y^b(q)vVu5Phs0`7;SZI`@3odjg6B z?2U-`t%&z@#CyzdzN@pu1g)vgk^?FI7}Ymb*)2%$30%Zz#cg1j*l_W@fXXcRRfbG; z|GdR>{br3);TvpepiylFY2%+wSugTM?K~zCzftnL$wM$z>_!Y+8E{wanl6zs3ASLQ zLn|Gq;F=2hPz|Ib&q4Rcr$V zdKPFgLMOi8&FtCj^0>2S8v6*rMJVtMhoT=13ishZ@T|3&{QO*@SlXna(q&@A~$|7ocE;fPIcY3kTy-X#w}4OI{3zIqM`$ zz%Yo6;L6Jqx`eWfmW!JO06m9iz=Y8iPaEYRyQ>+VOL*s9#4QCGxt;bhG7pX&PDKj@ zP@auS`4_QIDt2tFfN~9i)DDHdLSa_a@pZau<$QU$qpw|Ny)B` zaplh{zEfgaDW)6orIY$bJa95)P)WNP(*39EB1P`o@8I0jg%MMXJz=vaRNaWIGn|us zw6-b~`e)6QoKNGjBs2RJSt>mfvb$CAeK#UYDPa5gW|~_xhwnvB`ohVYab1di;egl| zO147}?1`ACBj#4l+Ws98=Po@w#-p;g(^VwOeZEFvk8Mzvcu+~Fi`Nke~x;$guMsD$@+l#N~F$JbgOm4>dg4+2v%oR2z!4Y;td+(ym|th zaUqZm_?-q?33)C=z~^8&xKl-$5#`hgu54W}z@X5P;cixv4yxA8)w)xqJ-1q1cVxK7 zn(D$wo^VaGYtV-t{?LODIWvLZ$SW%d)l4XIn%g8B1?*99uq$AzQ`C3r!P~>$S3}jC z!rn8q_RmB?k3HyJ{<&F`C#WI|BPE#GkTQQ|(;tJZU*gZF048f*E$75-*fZvK zb6eExiJILhw?0nc%nLqt0*N z-pW>d-7DF`#$jg?8+Ra^ebXb`sDlgrzU|9Ds=;T)R3?bC${eHn6;W4yQ~)Kh_oCi| zFr9^jxyDK_gLBBTqEaty%I2WihRrh3n9*f_tSJ`&odS@ zz)t}wNeZIY4I62v0Ir?53wS^DPP6ih!`T~Qi1D!T&D#La5jQg5Ee+J=7mdp=O1g^Z zwF}w-cJFbG2_PeKYnHf6M2KHCo2{JT5pz$-ciMRLh(mz`x7wz-?>IO&hA(0shbq!H%WV8TE(L_`UjtwYfzJ$^*!vmdT1=o?1W zWYgy;^>JJJtBnCGtmyL!4R=%eyXF*q_7D87iM|7UHVvZBIKC8j4(bBP)1b)H2J-Al zCryM-q5{9!;B84ZXE%gvTIm3R*huTLp0gPWH(JkF6##sg=r`-Ba7%Urih$DgYdV95 z!~E&@^%?6Hyero$b{5H(3ptS+&Z3DpfJ$-hmB9=e3aQI1wfW4Pq5=C)&?2rwJ~Ok0 z=DlZpKf5wD8V~yz5TcVt+cPn#?$fj{^_iysw$CTYo|ta0NB%^*PQwUG+M1C+aW>zj zKgV6#V66SIN}pKH+1u;1seT2Ap#^Y_){``uktcC(mhxcW#4NteMs#1Wq}{i7`IT(^ zRqhE?Wk6*^3@8Fn)1m4e5p!?Ix7B#`j9j-@dGc`GHrk7H4d1n(rR7q7W-YkrIpt0#;5fw`%1-oZ%0Ue+90uPk@)4tN;%=O>xdR;vtFI>qABsV>WS` zd6le%$`>TsPb7r>tQwc#Pe@!Dml*sBYj>t!&;Lj(b|XW!aWOY>J!_^%yLA(8y9xK; zCXm{&P@ERMEGQ}$61i1j&@aF>UWogYeegnI+KMy6)eRBve)dM)L((+S)U_vU-R=xz zZ(>&8!HjrLmh_=O^}vn$dvLEIuyXRCjl49{*U4RSp=0&PTEROzLt@HLfM4a__T?e` z1CsSksry>spf~VM*TWdl$^k!5D_rmnTS+|dZylvP@NXI=c7H}BulphIdcJ)>I!ayL zmyD7q&0dGP)JKjI&X`?}P$Dr>E^3eHTYBiv*iD%p_~Fitu7F`Ggi68)k|4IAXxAGS5#H@VNcDHX0S9ghr zbHv;w9?ns-BbBhq%IRcx`_)6ZIPW;8;b2JY_kmrU0T)}b)kcdB0KE2y3PX=I;9i+1*oY1xsygPF#p{&YwWky zv&zGt%74d0I9Cbqc)FnUxY3s41|`7b1d>%1_A=~N%MdYd6-RmwJJNFCNsL{Vj#Gh4Rif&QN&DzU4$WqZkwy_6_=>8^4 z`><{my5pY_?V_a5^aP6C`n@tF7Q1Z|U!g3^T;0k+j?%38Q_7{ijrD3mG!@p#6?o>j z83M!hI{?}C-aE-C-o)gbjj&F(sV^y%a896hvwz4EgMPmLJoL1FV@hW{tE4^IQkU~B zHOUccvQwMiM6o!Y*(F+K=gS<@BE4U%Z$iE)T!x9vI>G$--)rNWN63toJ3d8bMRitx zdR*gEBuByXwOjWnsmxy35^=f5Z+=VppmSgu4)Kqw1>l#MS4qiTb%pBfF-{s0#m`*X_~x=|w2D=u(^)mj{7x~kKWseIwnMm*>R|gP9b#1j z%T+f~vuz=z4r0IZX(zNAG;kuN2DKSBEuZ~0_?OQq|1a||FT4Ft7Czq;U9Ou)H%qj* z^PQr_oy*qDMMcFtu&{QREpw`zKg@A|(kZImLORw<=%R09O>L5;!j$jzZyX{r7NqH$ zSYZ`r@h_kD-q?wF2dOa3X(8y*4HLs=1EUz&!k=}6mi=l5>O*8*x~?aR`Fl0v3ER_o zbh+m-zX_HS2E_B|ft`f}{-zfLcPng*UyGknssrkA*thM$l2A3tR+}QiNKrp`hppS3 z*{AdcUZr7xowoG!BFAokPQ?gpVE7B75+o=hGe76qnWYlT&&pJR)||X(`EV{kGdXPd z{5;3v<#pxr>&h3_l`pC*Us_kbtZqH)G1jl-pKJK%TK>77e?G=PALpM>@Xsgt=MVWO z?}zn2<)6>+&u97P2LAbb{#nmIH?ok^6sm5oo4#g#i3o7izh&8YY7YCt-6YFYx0``A z^V9HS%wf0D^SaPo@&Wzrr@zgzyP9--_9yW7L-l8u4`;A3KE~qV$syyjIn~Z=6`%cv zmJW|A>9AW#hc?nG3`Bu2P7m4b{8qXHz>ym~e;yYwm4=`umVrQn_&E2vP&lj?8PDISzc53PrYtE^u zZ5L&gnp)ZGHGAh&?A@ODppB&=~Rb?V5$G^!?V=dm#ZS4R$l?vSCCd;fz(%Ezt{B@ z*!30krRD7r9$jT7pT|7pO$tovjw+VC}4Q z|GHJ!_kOETCZyb6g}rJOvQYPC&&%g}751IuRrpp~?+RpDW%RBfwHO@*x_1S7{SBCC zUW0wI2Jg~qaJ^%|w7&lu9P3f?)ZzF|DKW>bLMKbmz47+y^Qf0Pua(CZavT{OgjeBP zyb8Ysd6B_1tXmVTO1t5t;kebxVRX5xE~h_2$<3i;r*_IgJ{Rqi^Rn$H6|r20gC*N- z_bw~v9k8IBoX=Y940#Vnyh-9#IaK%Z70ka-{jQ6Z=bYyX_A((ErG=e!hGi*099!J< z8`m`6KYQ^^zgerCbw-POe$`H1&T#zP4PXOT|{Om_|{Z)3>X(2Yxbymbs)oAJhDGyNn34B?XyiH&@2SjG&2hNy$?vQsuzF0 zwtkU;o`_I~p1h!<9gw>V4YLDy$GuY}ZaRo|u9Ctw-KmT0-7L89RWDIP2jjnI4{dZ4 z;T?zZ-H({^|5j3;Y@W>6K$;>ftX|CWAAHs>*5V)hMPH6DLkBNW9fT0ai(%{)Ecsm# zpNXm=tmd$-!galp<~$dx!V(=lQhlV8XySal*p~S&wq?F6GCi-=+U!%AgX5~V`P^Hi zl&#{lZP?CxcuRl9?rlEzc5JCyms41aQH9>#n%-Nb$Str{l6o0S(09S$DCknDOAjS8 z6_#I8VTIEWjc{xQe20y7RcY=!B%+=>?;Y)=2|qsV#j{sQvEU8siZy%5((BLcsOTT2 zMMZ0dG9^E3$aZAd8%dTe<=mwKb6+~HV<}5~Kf?{{+hMHzk&@;nvdFiF+2eL&<%4)! zv#e+ivBLk%54RgDzvvX1dxd7NE9pV3hM8pGEba~X_KU@FAw-{vnmrB_Ewy=Lbbw{y zur;-pZHgra*w`6{R}RTYVQ(y2y}9H>)Y}Mou`poW?u=CT1+1^kooeN@XW%JTxwX4z zq}Z+DCpOc8)9Cj#E`9*Z#r73+!MkNE-U003B2E{VM?ZHgLF!!2@z!wPmrJ(S<^KlW z%`M?%1J*{=*SY*L+s~zt#W=QtDcdp)6K+>LWExd~4Q3c5TKR?TW{Soeb;rKVS>_&N ztk`w*GwfNi8XfU)% zQx@BS4p_XNJgg$x7pdNszL-3+n7+zqMx(d`U^?BrY`$pwvnw@GIjf1l5ClsOgpmQG zEduX?B3U~ZKKzD};a$+BR7HhTm3Kkd+k(Yf9MbxtNZk!ZQ`wtfQo&T^Ns!VR6|l}I z(_vsNuamHq|8NGrDZuUkiib-cIwKhBu^b|_N*IwDS|gI<# z1V7jF=}FC}XW)E>%wY|ch<8Awy$;eJ;6Hae5+{ZpdUXYBT;2?udj&q?e64Q53uFnD z1#kyPKkPKtMutlafmq|0(E`N$PZ+Lk^20?(i(8JhFXs=JYmTowlyIuh2dGKthUo+7 z>Md!3_`ajd85;!bZ%WCs*O9Jd(YGm@Pwy!dK~J)zu@MG$sJDz6FKX1)rz`Rt8f8_m zRm0V1{N7qnNi-)BT61PR4P`a!b*M}Z8`gXlQ(JA7Nvnvdi{QC$m61HN$5xqiikQ0F z7E?Ee=&`p+sZ5N^2kT30j7~O@i8XAH{g75p)_WMk`qHeJA3#n8fMd4}7zQimQCmu- z+cisIz8pi^ALac3^CQQEXP}}U)3rg~6skggWHYds#j`tkJ@FK10?NTLoseuzZT?!#tXMhB9VuPd8?A+)2K3 zXk(@$WBvvj)FpJD4}$No{qm=;(CVY!um$r``Xg$&VxgMWGmIHbCu|6@A#Vjs+9Tf6 zL31ZvCZ~y$6t@%EVSejwCsKw?_=FbC!1%mkOlf9ebGn?%oQfDi8+_r^tLx>}qEBFk zD#0VYrC(hp!MR%nHcJedqvW?9W0gaG>$HP5rhftxQ&|9xOILw_ZI*JEvhdX>j()S> zg8B3Q8H?{Ad18?WJ)`=fINf{$J+|DK(w79=N_c0#_G{c;X-NvkYY+DKk#(!Mgd1vGF7=2TPO+_ z*n?JL(Zs=G(L|}x7K?@xZFs{%C~8bWyyETA00|1~ey{v3_d4DW+jTx1V&&k4Dja9A zf^}u3bzLDzH8uBk)Z_6Hxy{?{J_59#(hVZWP$ra7lD*qBY`o9ULkIkT0) z>lnw?bsB5;J5^dJ1hGGKnwuQ)J2V*|ZB5a>-amFKf#-V=1~=n|L04ly0Pyu1k=~Nm z{JuArf6VsoW)Y4JF2!OGSdrENY}|6|_N3W}i>S=_d6Shh6T>lnzKQRj!g&E>!Db|Y zYmZd#o@XrR-S8hj`N??W=bI6?^$yaRUU%bh!$B1k_cz2Y&jugbPvwYr+s2#7j{tR} zDiQTT}HfQINz@EyobWWyezD#HygXGgrrXm%p(-5#>O=!}?e zi+-P>@wb~zwFee`lo*=N(86H0*PU#Gqpot&MF#o3w9t_NZ?|6*D$sL4snQzzLWzN+ z5!ms0BapTtT=Tkf@sD^3P1IIh$j58cjsK)9HX;cYSQ!>rxmbD6MqJGr$sf6Ce+=M% z{wnOfkx%}Y*?R>~f4ct;8e|zvQJ`%YE|&;!HS}Q1IP*3S_ql8p-1^gO#il)${od$c zi?Wq9?e1*M+e+n@NksY_zO=%`(De{Q*Mo%Da}daSrOxx9gCW?8DZa?6E1=xMsCOeo zf>Qr)CHjH5Yrpv#D+r7k?LqTx(G7Ut3|GGpu5JmMo3N`q#*F$%opb{+5F{M5sGtUt zD9uK{w>e-=C`#5NoPj1_(xISlw_(*}i8{gXn;qF5LE!MTvcLYzjzRwV|Lzcfee33e zfe!mFcGyp|PnWBBhHU`%f(QN%_SY|$c!ry{r@z`6AmIQ!0>?9CzS|}K`sEVOkoj&0 zeV2_7GW_+S_lfwL9vsKIwU$BMXrO8u;j>>KFt<{{<$Lt(1?g0@R;&1h5sDz4njpsq z6XXZ)MUc$+D$rvu-=x$LL~QK0=>bf&ZRxL$s`v$>M~sHIDgE6mDSGT3_}zYqU$|*t z{6ZQn26O?mXi&6hV_Gov6g_UP%P;gNTY_~tML=NN=t_k!_+ByA{YKr2SkeKy`R16B zA{UM+PrABDc@}U!jD-QY9R@Fa>dl+R!(ZVbgk6aITqr>ZEylx3I0&J`C~oPwJ1q!7 zeW>@n`cuv~bDP?@7m_6Sn_Kc6zvaNH6*$bY8&kKbhh9H^OJ3@Yx>+S(BLLk5&TT8F zrX2R#wJK2~jX7Jyyi&wdnMXqA+Mk&a!rx;r{f}AdNGEKzx4KXxe zu=Yib_6B$-x@Ff~IRXdK8Ds6mBSg-0xYV)IuSLwal|+ebmwZ&c$PXSXD&_~ow zzsH6CYm|nb^J)5}=Ct#H5gYRI9l#nr{mJDY2~}?nH5_pzFWhh~@!n>A2(Yext1LTy zXT+j2Ii8ECmO{HZbJ&cjc}NQythcZxxh-RX{){UjfUy{|{T{ZT8wG3q^TO*zvL%SzUpTSGLtWtNMzFM;fs zcW=oFZSR7JHa-zDIXm9eL@2wSc+iT-MbN;_YNsO+X{DwZl@Y`yR~<(T(-LU=^CB!0 z?F-jUs*it!;c0X5IH#VudKaFD>lW3!#q};?RYK)jF^WVw*bzqywCyDAgcxb#h~nu3!4_1E+EN zttna52oD#LQPbLJbTqE^a7|+&#&32K2{wgl<`PNNp1|6w-WJG?hpqe;*6>~uHleE+g@MpSelm@G$1x(B#PK|qFJllyP^8=g zV5ba$e$KDQWI1^%Xd7Tswj*{sxtacs5VdL#Jop&1!QKO$hxJC2{tfzGU4DmA3?!PP zf&=hzKFFzh|DQP8+sF$#dfs%fwA)R0)sk8!*u$#WCgOXy=%SpOFX~_vG8$>L`e4}C zWLQ6A8W2G+Tuq^{_mHNGO_7LqZ!kNq_Y;xjf=sfEVU0pPD{Xjb45AT63_2OBhOuP- zA!sF3;_GxJ4=z$&RWy-?0Xr5BBaG$I3)qGbk+HDD6%U{j!;(2ZPQzi$aT*Pc2{@+a zVc~~!^3uiwb$v==2U7pQncs8F_6NxEgQc>;2XCsjepRo^%lX~gHDu{EJkAF4|;zZV2o^_Jv)V*-i zI7x!7@mtFSb)`K!?0EjoI-b9${iH&;N$GRb_^;8Gg~{9x&EyLa6e7V{M}j zW&X+g@cWNwe*d9?{Qg44@9W6tIldk5!|N+u?R>@SFCt$5cQ&t2JU$e*#X)m3Gx|t2 z0*Uohz{|O^JmKnA*bAix5i1|811+wdA#0&Cn!P(}O=#gTX2t!Ro4uPz0!TK{!gGl{ z3pL23D}&Jc)hYfzO1J1?E2lVOwuF4|7>~wzW40n@QFFUL=0}IaRqc?#_f+{^ox_|Njc}|7o;%Z~nhEB?}Qv=q!N|-JNU( zLPHK!*Nk&0&s78yam_}E0=~Gh?q_Lo0MM?|MS%IX2(Snu0Im4cc7V8$xg|sjSjv~? z3y=ctv890dDJkId8Bzd$n34kcPn-WA!HhpLL@JKIAY|tL`)BeT*;n@EpyGrh5lKyMThVQWajHP);^b(nU9Z_ zZx0*Dj;9|i%T!jrdWZ7Hy?asi{)xnobR0nKSmt= z;$m+;5iM-5N4G!VTToxRv~MHx$J>3c+{x{1A#~Sc3xQp@4U<7=(zQU;Y2& zITU9+ta`iQ5VH_7%8Pawba`)1vk!fH2eZze32jF4yMgQ1fT~9AVwl~Q-sKb+OTaYD z*lzA%mipVc|7+?!nr#kSIc)*6Ua`&It%2;l^PsQ)e6K<&Vt)bPjckp(#0>2Dg5Z2s zZ5-m=74Pwx`z)WqoEe5Wb9L?Z<#eq#1+w?UZi(u|PsuZmzB$O>?Bs8@u=a0L?e+)v z&odS@i3SjUP_r1^2<}tcm*n8CZ3L*u=J-f@#aV9KnGX`YoPh7}@-R(ONj>IqkWN`t z%{tIFVn=-Fbc+MlV8DC8pKPMWjN%=N+D|aIwONQwUCzQr2hBUv37$^x)^kViFS`YA z_`}lsW%~E}_oR26?LSE3iQJq>#u@M(T7DA)U{)Lf@sBR~h%h?&ezUV{4H8ltyrGFU&hf>A<3XzSzfzw3R!NLwE>M-Jj3{VUnR7Y%fEW{bZ_W ziz?cBwrbrUuv%gz3w2R(Som8AIL#|S)?lg)M1M5r;C~dBDWUhz7 zZ7_!w@3S`A)4Iz+lT4x;HNE_sY^Euxr#*)q*Hd>!bCv(jE^o4<^lc*BO8g1FbUoBW z>)D?mYoIfG5r~vk`C}M_yF)P@ZkzB%n0Hrb`G6n@0o%9 zhE9rc6UD^zyj5V-81fl-sC^W$bkP zwGIQW2;u58Ve>7H>zK#^9ffS9UNFE3p^cpo)~y}F2|@YF?@=Mu1Dy~Cc_8dO2fp$^ zHtqWmE(mmRvZwqOKciAqyeY}^&XJ=$_vYOB$sg!Dhi>valox{Xl3$>`5G;p1q2h(0 zyyRP>NI^H)3n4vHW9K=E)Yzd@y-G;64%7@Kk<-C*^(C9&6yL>Ymi_I}kZz5b2cUXn z^PS~-tK>Dv`vvR)_8Q3q5$~a(c?Op_Hl}rllkSIp9fln-yF$RW>(et1O8+yb+9J^Ps(tF92IgJaCcvZE)_HAh?+zTmb! zL6@BemBAb032M~FMS1hGvFeEYcG_6AM}B+3Sk>WRk9X)GW;cr8Izp~-ukk+C&iPIE zS1z96H&?B74$K0!Gk%j~G{dgqXvF-H;<9jsJW{#8lm|i;pce!lGM*Q1#H$T0FYL+Grcy0UY%e>Gw8L8>4l5Ba@}BhZ5o1JZJZ13 zSSC0-J9RYs>s&ugb^J>9pQlY##CgwX#j13@2La33^Pod=4hVqrC@z@I1=)SQXheJt zMs_>Z!oH>)u_^~GRVAgB|3=Pv>O1Y2kDWZ+j&~W(j``TnBW%Zf;1C?^%go#xN;dyi zG?GZ)`+La}yKbFwc*iXmP(V8D>t4vd?i1P9y^MX`g)5)K%=$vsX5oH=HcK4dpH(8- zv&soXu1M_xs0?77T#TJT)+aOvvMP~s21#AFgY8)_Pqgh>xSZLZmAvu$+Md-mF)#H- zNwsBn+==wRHLorWGd!Sqie*__FSgWQHG9^~CfJ|)vP6h|g}tVQAJX?btG`+`wB;YO zL=RT4^7cQ?E=y?Bt!3k-{6NCsVdsC0oopcM3e1qd&grkqik<3* zh#N3tEafgAL6pNeMZ)fb#juQ*ntP!0nrL={7b`}_QkdJK=Em5Aze*;1egavCgRmDS z>$6)!)or1MBiYFdx91z25wa9^Ub=5O{N9d`wNlNY2<5~*A}u7<1r27Ixrb9ovU7Lr zN~+w9(MGrd??M4M$WYmURh`t;(Cx(^_~D<1d{*Wb{9PD3zS8Nyw~Ia*HoKA+-b!6D zn^k(~pDM6ZH351x*;7RmefXL@TB}WPh$;%19M)XBebHw^Bu-hbOK{@sBo_MsojBV` zxN1dS7p;%tGqAFO;V~-Mp_t5a5WH{6&@m#f{iA@5RRy0EPZ{y3q14rGi zCFenhL|pfb`uKUmb)#Bv-g(2l{fm~dlxEFvvX)_kn@`9Er-LOp0T=ukQBP_7|MU*G z2s90Xsa%oMMFIiZp?bS?ThY4V@x1i57&Z@gHXKNPlXAt}caahhR}SWoi8*!ise zc&uOVyKnXDeV0bv+=s44yf&`!v&3uP$@#R~94eo7@8EcC=8~&sNxb%Q9k0Du#cK=W ztVDY3gwKvrJ1jg(SZ{}B^-EQ}wp+9MA6N0(g~I9=3=yx54Q9t{doo!4f&r|4eY$cX z)otv4oPz@9B|dG8-lg%suAVtT0=BV4RWfZp1IJ02j4>l==hOZJ8ufDy?EuLEoF>>TFNKCI!rb_~d){fNV!V2$t9 zN)s6YiX!8Ch29_EOQ9YPiSLyG?=|`T@Vz3{g0m8$gWWtF2ENy-ER}Up;d=qknSCRy zX>RIxJ_|89CmGjq7nQCx=((e*+}cREX_>q>Etz7#es!>_VIxa& zGOq^$PT2XCo?)z0#d04IUwPIuaDv*gSt6v4>q{Yisdp;o)TyL#Xd6;!WNw8<7U$I3 zuql&VsrE~WXz%a&9fFNs7yK{!J>u=BV;b-_Uqprv~DE`F))V@2gPozDm!A_f}6^f`i zpYgsz%18kYXTOd21#kO5>oj1U=-p&$vV)q2uh5qJZZ6plcl-SBsRckYbbX%&_A0W0 zy{@#OvcArWrsQHI5=V{(RC8p>^LKB1BK~WT_!31zL`LTep*f8DqIea^eOsT6`89yl z@_`1=8lNIN{yyJc)8p+p>Wk8`v()74C~7Eq(m=oRQ=ngY8ltS{Azl=n3iPW`k{INu zN#hm_5;9LB^JCi7`6YDHo;f|03acz9Z5sO|OkBXqMoNu+1Hj7Q_Rxo%2n`zctBxHZ zNajrP;d#v0Wvu(Lk}{dAT+7!93zidEuquv~l?K@&g=yeln!n48m;36K5E~H%R8wC#P`@qykT8h)XN0Vu7Oh9( z-G^RX$m-Z(yN4^c$XWsNVN3(|g!}^(v~c};ZYwLcAE5t(-NZc?rqbMg*Nx?BtXWV0 zA}D)}TZxlP-74_lpWKQ=p6BL`GOYI3h9h>di{+B59{)A}o7??sc#RBezkm&&W z<{BPPL!oaUbRtG%A8cZlpq_q;WgXac?+MYCABkU{;gU=7>jwN- zfvOLqbUpVl@18kaBE&z-@PLQChW{?*pXKy(IYY>_F;62OvSCC?g?@M@xZlKbW_ z4avS-sGeN-b9wSakw-nb^lf@V{CLR$PFw3xkFQ!lkE7M^gzAEV8vdqH{3;Re>S^>` zqG595zZ6efn(B(Hm;aJi`##zh&}UaIE8+xIK?ggU@C>mPqw>PB@);9wW-lDl{FwR^ zt;Ca6$?X|<0iQ%(pz9Vh$_p+)OGH@#r(?Bvn3_Dp!M$h{pB1VPuwdVnd`#FzR8^r} z%|czxGWyl1ieOPt_wF)^k-HDxcyC91y~{43r=RjCH->6j(3y)6<-={1`mHipkY=t3 zS+_XZp)T)^6*35FJqRC|({QG(Bw_^XS?5h1C=EfqQvq#AW%1#5TF(vT6{2lES77%$evYnVsMM32-1GK@aqEDih zCqEc%SH8dt9~AY>+`z4=ChpjvRNgzey~k7St$g7b-7`>}UO&c9gp5_uXV51*j%+&b z(V5R^0@iB+hHL^BrxUP^35Z?$fGnO;)I{@G`2v1Hs4+6kE~4#Cf9{7WTcwx9TyNzN z&dPxDpQUwM4nsJ4?gwMY#puVT0Q-AVk;({X+OCN4my+kavIWpSMistk$@u0?M(3iT z&kGpW^xmJfXaatT(JvoWWoI?V{&;3IJa&UIxkx=%J@Iqw)LGqBg6#{H!$$Fw%G~`w z!@o0O#KCBXolnmhjdqw(+#S!s#~ zxt#F^*Ee3^I%j1(jC8p6<2jPFXPB@|rp2-QC0k-ecS>BsGg-_@f&W2V0#t?r@Fd_l zwlq}T$DU(b1%@WaR=2B2%ul+&y1r$s9mj_>+(8k&G0K&uKp*6X`f7GcGtHg>NV;Q9 zNkXTHMQ+2<99lj>CmAVuP0S9=D;7iN_qbBGQ=6(o@Ea@9ANaj*h0TsYU4eC{Q-2t# zZiE|IohMw~6t?mkW3{J7JL138!2SViiW7X(Q`}y__<2*%JQnbFLpy&L6z_A483&@( zXRN3*Tz#5uUjMd4(A>fSq3{%_TdAV-_C$P1!-_eSsb48qe!{HfJ5g)0C+dACU`4aT zHLtsFwOomC!|PeJoTgZ=XQ5WV#mfH;u9&;9%872tK4W}CO@oV{@j5F5I7$Whj$S^U z#-kXA5ZvYF_X+*VPoMhb+e$}Tc`gNW60V3|4&+=LFcn}WWPy-x&jaJkR&QeWKDua))Dr; zEs?7cdeFHJ88Vl;f*?nQ_eor*JZ>n`eGHf=4tvlFRDTNRM#k(~@g{iy* zcO`_|)~Cm-L24W$$p|ZvhOXiz9zDBr9i!bjyO+;_D&U8~>n(3;FHS9F(eupbTzapj zK0sEl*$FY&GE~^x_y8;*XSgdGqW;U%O4C7>H;QX_bM0fLZ@60OZO zNj^h}U>ryr_O(CwrBHQq5+G*_x`}u@U?T}x`OQq->W$&-T~W)`h|E0=*)ewCf-noV zyczED#f?mtP3S;~9mqTdVR0K!ba`7m=JQ5ziacNY@;~Zb#9_QJ^2|Ye++8?wG+e=x z4jnzsnPBS*dOmvwcsjI4wY%%mw7}k_skmOouPF?fmu}9_a{!8Ovws85z1TNqWjmff zkIJ`ZXa6$$Ut|B~P(W0L88N{e3vA|E^z}p6qu`=Z>^zQm+NP52s(4Ry2WyZ19fW~aC+7~*06;KwXy+PCA=c?JkhY1J2W^xIb_W*>LwAh zkoUu|e@=Kr#0)~~aN)|QV8g+E^R=f$`aAVw4kqTz(4Jw7_-S5n4gPpTUIoD-4ZB3W ziQ$hQsW%S3Xg&P1jIZws{(T|X2yi3O4M1gT4HUUYfhzP1M0f}NTc{u462b%6YVdC; zTmFrxg5|p492dv|up;_n=`j2eT+td_4|%jT_!w6ce4J|uJ~e{>`6<^Cd`2GDyZN7u z@~~|f|Fd@_|8r0tcFV(F`QXp;FfojEKIbhTB{~5x(DN-sp_OfI zBFU|7lSNGYj0a3YGMWwM0Hf4w0q~#mQu%@AIF&t7uY0j4-f81Mzd58mk#X;4DSKk4 zwkI|ZiT`}USoyD`l!^Ucl=-kwn-AA0K<4hRjqp#U0@Y#lXEhpQ8i^#vN5eYeK{ z$Z){q!d_>~2e=jP<6c@wKM>+fE!wRxYHopBVF+11TEwkT>HBSLBXr84^R-lQzLp9} zsD4YDFJ6Lu@e*micw)YBChYgx7cXJ^;-%8Z?h}Z~51O*2MFT^3q9Xzft-+4|B8SIq z0}-L!eUh`~?>>Camejb;ozLRF0f^9Z2cR8chG}XKMS-c@0;dt%D3{@5Xe03+N=M># zuwL9fG!n042qa#2M#tEI6Bi_2jR#F#`$m=uGE$52IJ+dJ%!*ZFR@@hYQ{+x6Mm>jF z5jN5RW<_|T2Y8j!FGJWA55=QH*}O~t6E<&q_TI;+m}c~D(MCmkRUYX9#=>Bu_a{D# z(c4~^X=XsTPM;qC)X-K%_W-NnNcVfymuB=X{ZAOZ)dCR9;xXY-XK~EabafzoQbRc_AKs4zCER2W54;IGnv5ciQ))D{YKno+k%QP_hGq9rV6?%-J zS^gzHjJrn*5Su1qK#$d^TX;yx}29OSU zUk_Lh&gHCq3L={A-E0uF69D;*YZ?Za8^6r!AxD|_cQb%60IQhEK>R@ty5JNIQ&pRS zXGTE6He=P-mC5nxIeg{6%yA=rV|F)M>MMOEJxdQ0@7=j>bXXDZsa)xjXaY^8^wp%phkcENI0fSh5=&$*e^2? zbQ?e(tF2#@iw<2YqD;;>1=oy*p;?=S%&?o5lp*vYu|dJMw$c)#w$C?;H;IRB6$6QG zj<>)z%>Bft9Vqm3?%>lU^~u)Bb*}HJB}KD*xtirElG|JmlP{48r)7OV=Hg;SCX^W? zy}}Y7FLudW2hEEgxzz_v4t<@IuRTjg^=V|VF;Z7wI$$yq)$dc}g;%p=WvG|Vj^)l4 zVPV=})Q9N*7DhbgHeyR!KhW%O>ub@(2sxKM z@nE0qvf-VZ2f{ng%CJuoFDwqQi&BxClOHe{tyhC^IgiXuiC{9v*4F)eIF|x)6iNzgEHc@ zG0#}=);we33CBZ8Dg39)r0~tU@cAgbQoQy`4p8|dl}|cuJQ|z}#wf#m*a+5jTW64f>86kA90`vNrmSX&Zrt`{?Ry5k8)D2v`lrDb`7* zs-W2y@b-qQUk@dl{nj*RT?8tu97YIBURc>P8f?tdEJP6b%aa%0M2||gN2_-Rty#{H z*&75%2E6J0h-G{j`h%Jqm&QDfEMx7T9MIIX+-l|QiCC^xQ!LlVLe*_y%heU~_1-r! z>T57+zQZT_=7)|@Cs#Z$BH3Qkeg+BLo4gHS>sC*sx_+vav#q3l-g?91?+sbu!kR|c zTgLK3^Nizd^l$4tqxAZQdB(hb^NfGmK@aFYIZUVKfz4FDd!7;BCWUwBuS$J^!u(a{ z7bs07r>_E>u`BGWUuH6DT8Ck^@J4C2gAD70Da~Vcv^_!sNVulQ6}4Pz!VNuHVJp8i zoNS<;*Yz0_vV2VsxXh;bFkh>2YpcHws>=zJ-2@sZpf0 z^mRN?Ok^E}b_X?B=UN8^S18#)<(73rxLn6lA5a?@_#X?X zTo2^w^00M>JDg2Cl0?!7-of=_*DW61>OvkE`pD%8)n%d2=sNZLh=5F(vd+Ubtu7?m z2F{i5U1Qx8h9i$)fj)hl)~wl?yzqzo%SsL&pjTxKR3S1l2eg}NCz!GmG!kUUM)_0c z0-d%CLn_lEbdz(^&llBbsc!Vzv_>_mgtX{4H^xoez}!JEQ6aTf!PGzOxTQJQY*yoBSIqzp&)iVj@D8-T8nvFgSE+2 zEF{bGv;DIKaPV1XsEv2>4DdF9Kk(ID9C@g=!(aA2`4ZS@>_o8IB8!;gf&Jl*Mu0E2@g> zq=&;CyOpW}%b70k8+SZrKvSWD99Qa8R%=D03nTh^QCb`bA;>Yw8VY2$dacjMn+v-E zasMaz@T`>}xL_=5Zbk+mS_2RQyd5F@w<}`qiFkJ?eM6A=k&k7n0;-(iIH%J>8PgB< ztl_hi_>xQe1WUP!B>~1VuEGZ>82>+hFei7WX#p~Tmv#A+yR4S*!5AqYt3g7(Q)J(f zeL<3W5t^gI>{L2cAEU~G0?^Ao_cg;2wr&SRdG5c^?;$Jyl(~$SP)$=m`zAce7uRuovl2N+-Alg}$8+X>?(IF96p z$qY0c8IPdjw~483n-?^$ZJ=N3={l)Bqx>8`>-O7U%pET%D=4@#Kn4B2HludCDtW)> zd0lYPcn`|-Q>A{h{++!j_8%(I&5y8Lz`H3+!_2+l$&cNC&*HoNvJC8uH^l61L&lrW zVHPD2a}1~S9g{$$UDo0f^-PEDHE`r$RfJ2i2E5{{>~#TKb?y!HJ4+HfZ0TgDYLY5j zlnt*9s_ze?H?7GR2?u;QCZg3f$CNYU?5)NlzhiOgIR|(9AN>-|QPplt&wY-Y z_6%!YZzx14*lQ|)Z_;5r{DiKHGr`O}WIXZ$*R+RgGHM@kD7A4R`$tsmGNxZxO*Qs3 zIV8x8=^-PfpYd;i9$xiKa?n&&jY%+7`dCQx47-JUQn9(`9udbjGaWi$y`is-+G(;z zhJBRE^@NqAb^(hZEPRZS4k2U@>2CPBP&{W0yT8tE?o$Dcs^rD;FVj3%4`&+)k1C+v z820N&X;!e&hCT79F^KK~HZEB5K~f`Q&V!Qo)VWm z9h1~_JVs@Du1zvapEPR!0X9(TcAv3o27V0yF=kZ+zf$*i8>{^4*OSJoPvNV(>*w<4 zwx)3|uNwL(nCf1*b?|T|C+yekEBe_43thb9Sm<&|jG^boz0@bI_pKCN+PDM~{X`{s zFv)IJqZ90xIvP4QPEw4`I*yz0Cv*vQc;1$<-HAu1bZiIMKuRa=tJD@G+)F^f@o0y& zJ_cPCSd^S`s6Z=p4G$I;3ATO~az(a8re3DK5_Y+Itxd`kxe{lM@l{WyE-*V0u9e;$=0H`(atqm;@wu_ceMf}c>S zfbV5vUHBB(FybWwCT?_%kFtn`)A=l%{!k02PpHh1#g8c)Lb1Mpi{(mYzYrz2b}NQV zZg#op!Kh7C-n0^`sdG`3lGxhtjuu;g^G-@^O>q&D|MMM>oqu95KXv<^D*FWU71W9_ zR7X+_)tjN}{ZX?QIGYukmjb|KX{4?SeAJ6yzCiO)35Otu&k|&_yis7J4jOCS$}&{w zlt?p-kol;WMk@a4;7DOk%QUOCd87#OA*aqAI#O|1zo1`YMd@iOjxC>{c`C$&rff{8 zpm$K$z)%%4Z?zGO)I=_L^(80L7%9e!P`A5;gr)c;m8L@OcsAkuqX{p>M7Vm3T=PM= zd{fQ3iWs20ELS3G?tu{p8QOP;y}KjkzKHj5&^D-K@vXsZj>9&n zuwkL9oK@FQE^^Ekd!s@_)w7S8E7~fPl+^@Put9`5tw@$s!X^z=Wq;lCefg5kx77}Z zo&097^~F<>W`f}kdTjQK(@{X*Hxt|$!j_~pH(x&}p=>E&x^^i4V@^Jy(@rSMiQ2HE z!Km%vT}!{5)}ROi?Y9GF6tjvgz>63NN{H^c>hu}|kX7uDO~00G*UWLm+%Y6WEPK}a zoKraAG`!TRu9%HlFuya#hy+ub_`J_{afH2RepfI433T@2aF6NNFJ?;(%eoSHJ-0J~ z%i)ZE-K<`_y71W5sh>Zc&3xPfOENON%^37VpSS4YHJerbL6yrOmyffmU6}d!G+z@R z#nU@upkhZXegp2fVtFJtail~1^D_8>+~2P@;M@gXU?iuu^aH*?T0s@r(3;W^zM%}- zb30<9T}9d)IL6FsV05%q@htB9HJeo<#v@NMOYm*s!tUlEUwp#M}El_|5Pge0&|UYRcz%wfR#+dfZJac*Lg5* zVH_U&!CtsO#xKED6G!f`sv_8RX6@taeU@DBS3S3idwAV_OFd{3$s5+UXy_%%VcXDpW28mVrhBGyMRsSP@ z@bQC_Iy#esR5)gYHwCF_jAV& z_DoLEdRZq}kYydTXa@wcK!;;Vu4ET+OCw-N z8~k;yuc!89zB)OW{pyUd*T#aGhCS%<-CpGJO?zvWN zQ(@o|=meQd1+d5hJNRpETJTpILzc#mVgzm)0r6S$jB7SxuRc$MyFY7D4#E%bL-=9i zeV5R?E$Z36`|xwqeZ!e&ADEE_(6$APpZUlJ6n+$Y%DzOb1{g@5tJ-EORL1CRGj zW33}wyj>SEKtMSMfE~?JjO)HEJ`WWc5OPCu?L+W5zXsEGp$nbPVJZ5?`UmN51-dzj zuRq9QaGq1f>TfC4%v#pD!uP%H{@lgqap+46z8HfesNGl%s4)nVn~c@f8u8?F3KIpV z|L-tv-)1Aa&v$6~rO=6DN=mlZdGI^THOO1n^RR=J8YFp+6J4-T{LT{S7>H>sepB#7 zb_f8;W&nn;m0T3ysXvP0Xo&V=|NL%$lEtX95+LC=1kC+@k9nv31_LVi}!nHBF@&zd|aFn z-it+D5lh~V?bJTZSFrj29rjV46Y;i(%*HSs)XDm&^;x%39A`my3_z^_72^4a1h+Gr z#aIiG_Q0HfCGXM}773N^|% zl`Zj4Ai(wB8|Wfu{mjfpKhGdHKp)L)6F{W21`wAfWpOQZ#6Jytc}8P9&eE8CxrG+h zY*xaxg_89!rx>;G^eb27IeL`@>VQUayNyOtsnJM!KG(0%t=WI@&6vmb9}NA?e{d-O z!OoXGAH;t!bT0e{Us?7y|G~fc5B^W|9}N7>f3WX=iT_~Wuit-g(-PZ%@aIeZ+WiMZ zAHaVw@ITgnFz`YA2g@`42lxMH{Rg-Guk#-a{LO#xzs-M;_~&1|0R9;)rTNvR=YW6i z(ERhpv+>VA(ERh`1NrCG1NrAAnf&uV{`c_D>khs*|13y;-(7kx_~)N|>HYcVEq~*m z|9{RuZ}}g{KQHF&Rbf40&7J_P^Ffx+*|KW|Fo zpO=0B{&~^=SpIp@2jQPrIR6^sZ?^mo;GY)_#Xqag=IG8|oYvVyW@ksIIy;U!n>b5n zFCMzHIl8kW?aq#tx(0VvvClis%03?j`@H7AoqgVFv(GK>%|36@+0>o~s6kpbwQE%j zPTp^UG~nB0M7NondPe)54m%hpM?X!_X`{_V9B*^So$x3}|3lTM!r-}M0dreA!;N>d zm3#R2I4|-kW9>Ia2%pVND>1Ko9TIZFdC$RJe{qCjz&}4iNCAGB!&}Nn2xH7lKKSm> zjKJN#mTgmMxgU9y>6kkgaXIm?*TF?@|AtYjT$wKS#&B`^mn1#Zg+s$xO7NR)ek0l* z`}1dvW#6pdO%PIPjTsXSV!OFBOD6ek# z(iaBB=vmZ)+!IInl5OUq406@%zyU^YfHt-hC)3s?mx&`RjxOZ3XwwPMa$xnTXiGMQ ztG7q04^U@Pwy}L|`iuDX8`d1=!y0X&poN!jBe*bnHWeJ0a9vSzS4i-_866tevp_0G z>3@~)lDaz|oRa5D38VNW{JCtDWLowk-S1_BJo82$r^l*l*7>6XjF`-r_eCS+T=iTJ zR6CsOqvVT9P9Vl(jwyGnN&w|Ny0gv5)=Pz%-qkzd65N9XzRI0uM>H@ZF5kBi)mH=paAL8?= zL)fckU}7`0H%%e&{n_vkodEuDBBqP@`5PRm*}8P7*_y2BnbsTltev$t0D3@$zsT+b z;JxY{NW$aWV?6q*=KLFN?4=vC7~mP6)hrq_LKU%p)-(_C^u@$m0knJKRO^Of6ayF& zy$)r^BH7&$YtqDN^df9Fpvn~fQb6V23t9OOtMy5vh0CmG(kJwIum1q!y&_}0XC15X z18}PKv%|*R^RN?^otI#IM$aMxJK+tU|Fci^sKkeEjK!8BczNA$o-{SdNVRm2E^GNFc7v4b1bUaPj@0QNQK4R8-!|h>fGvls>m%Mx z#DGWe-*Kcnq!qI}Y~AJzWMgAaC{ADQ#qTryAe8HaFZVQJfhXbBZ`!vFSdBtvH6}8v zQ6??|VyI@HfpkX#TsUI2{+ykYx%^~`fzX#zhQIS251YYuRn>Kn#dM6`lS z*y>cM!oSH@+`-RO@N2hIaR=Yc9+appifoB$oEWNYH&))8EkV8jI<~%&4EU0C zp(hb*Ruu5PyWA(*IPr>xPEJaqwXHndwKD9IEwSyx7%b>QLv)Ez1sJ(TV|oX~HDh`+^f(-^QLz^#aExt|^qjiXJ}M=5 zSdVk@v*-@XIWBZZO7Uy-433&d=NZ==zdvh{oBlm?{|NYF9!KcWEcluN{&dzcXcofO zEzVG~nJ(lD;K7zhOFh{N1qTF}%;`h+0N<8~F>PPSx2&klShu!cJlsME&M0C*rQE3m z6#?Clb;rkuQ%=eCPQ}_nK=JV23e<4~aCyYnW~|&u@=@4qPhR+U|1sLp^J_a%C;!F{ zGS8mT4l*>dVWGcghqVic7e)fJ`#wfLhrRVV!*So(keU0-=9K%4ozADG-Zjv3O~jAR?*{9|pHlu=mDN7~SdT1l6nLSgi1{aQ2 zR)d_;666|Eu^ArOl`69@oZh-~l{~X2SFV#eIwqqfSHf5Ca;l^3xm;dSE1AYnw1Xa{ zpHql2q|S^cfbKv?zHU=Fo;lZBj(i?Z1hN^tz=Hbk>zlT z6{6RX?!2>A+a$Wh_)yOWmwNg{DyrZ~hXP>7t;H6H(n@3&?G0DAak$7r4i^E;cCiXP z4S+PI5#O7J^^bgrDhHmMV-a&VZHrzuJG4f;dqUnl5pQe6+!ys8V*U-0BR<}PLq?8N zWu;63964fCfYUw#MMV#IOO6})WS_*@dL&e&ibF`MID~|2fW{LFcloyGyAB;SQtQZw z8W|L=>(Q!39X8_b6ToPW8nI(`btX}0N*%WTm9?s@(m$#KMwDJPE2UR;h+dTs#n=3B zqo-e9(hAHb2^!hk&yld8v5xcw@mceJEacl~SSy(SZm>1)dz^LxAex14qBr88BVPJo zH`Ph9AIS|};f8otL?*=B6;6_5IQBbsLLi+Rbay-;YVFBvY++-7R%>VG22EL8CTHZT zaVb~-iaoT%Pq8weicj~TM7f)rxJ4AylO^tEvZS$53U7KCL0M3G@_^K>lQYxUNK1&& zNws1}9%Z)Tk#9X2t$1XfCaahq9p5uKGrP@Dt=NfaGg~Q;ZwoS7QK?=h4@mVYB{N&m zMxax&5N6}Dz(}|P_j>?`z>hJaw47Wh(oz*I>#;Cm^&RQCXlq4?n(|- zW97@`gZ1al#v`w@R-2RUASic@T>Dj>a3!zmg5Bki0@#(TIfy)`mk28F>JEYn2ud)@ z-XImld40fG_0wz>GOnCmUPNOr8IQcojU5pcI(tK?IN(%RQdf*abT&E^2Eh5~O$Xcm zsXILjC7KoyE23in;1l~-|@iv2yG7Df6Ctp7YLiEa>Baye(&Y3aE{ z>DLX^+YysbWAV?Rt*dqL5w*w>7znuFr6hqFRs2}3B_ufAg#@QMOdaD?0VbUY=V3SG zr`?LJMKni%EB15jcO?hvG^zx#Eu0i~Rh5L`gM=+i!g{9N;xDE`jk-7x0=1J=$+0!d zx_Tv3;Vuy<(A8!|e`%5Hpp67xboIu+rssiUh&&vzLA2?$ zX`@SmHf$xR*xEBw=3!SHCOXD#=a6!v*3T2s*>gkML{xQ%wXrJ^pR6Z>V<|YoN8am6 zPuUu~#MbEH=|(dQHb3j2j$F?@Q?4S{bB~rAvi3NfqAMX$P;n)F_b7tJj8*#`f}XHt zgUW8yzyaw^>TzS*xZzl^7DW+!$~ z`;rCh<}JB-+m;}Zw6dxwgsrxj9sid^@lV5&n`rp&NJP9(G6o|pZts$7*y*WQuhrQ+ zE1n2PC^g&%zyu6y$p{Hl;*7aXb*`_g;{-SzA6KUUj@IMqFyLeJ4|R;kq`0a&!nKb5)7tJ1dlzSK6avbVVeTD`ylJk-6pCt{$@ z+;=3<>Q(_1z>BwI=q$a6e;Q4Ef(P?Xj7P~IaS?U&Pd_2SRv6wpsc0)CJDsnBt&EDe zFeLWSIHanpci_+@0IRDvH8iz9d9UKVCVp>f$u(uUS6L+c$hv|brnZ^qDiWoW&+ zh&{C4)X;h}hNir@QUUe$(9+JJ^r6{j!lyp;nUFEG=_eTHVEQ`=<|R@?oBnn}I+{ou zT7*l}2>G7?710aw9bI|=*CJUp1V`YyH4)$lK!bMUJrNGV3MX5_$&Dn?`=56@(f|cY z1HS2yR;MLITCFfe;UzIKA}Vk|mIx2UTAV0;Ooc5MYe}P6P;H zCEl_eEbswy0LKIk8l<6~#y&04ZstGKpsU-<3h%#yTe8eh$547%1bS802+W2 zI2#NlaBeWfO|4gHvTZ?1NlF0Cfh@VoQ0lM;4AE*%)Lv`z4H5TBwH!(UH{Z14w-!`M zMQ;4lEhLDmn5r8eo=P{uB{<1jjn(4~iK)7=>K2HbA2G!1twOxsatuDeTVo4W_NRNk zd6ef{7_xXM!}F~?&GU_C0_|tLCNhi6X^ap6z?IPx~HCmUN-OC2?l@9$`1;C3FFO-sGilNt~&@ zzc=N31lBvR557m(+FS<{8IJhstK&PXVlnYY!& zeiSKRA?~^)aCExU#wIdYo?92N$L3Cr%{^djX*GJJ#!T-cuF)=F*XT*rn36j74)8vz zV*Oce?yo!!JN2#1H3_(!`L>xRH44KMJa?MIXU%-OjrckCn3>F}Z<&M>2WGyVoRRu= zFa>q$+oPQN_B#PnJB}XoCpQOu$F!(^UDYo=l6-liEwG#4%y+7c%p1eiTi$n#`mM1m z*Z+UCKI0#5ea6z)XV3p-?pxras_y(}@_+$C?gYawwWw(u+rhy~8*OPvYX)X?24^(3 zQ4$*--Jr|vQcEpCODRP|BH=PXTdlflTX)y)y8Czk+FjdfUz-Oc;S~}BNq7cCC1C_Y zP#8cm|KIobJLk@w5Ukz0yZ?SFxpVKi=brOBzw`LLzCW99+@H>$$5P_8@F($`UA)e7 zrP$P-@m6!@`wP1o*{mk`nm3xU^M}uq_dM0FM-|=s5;<2eioRArCg%NWtADDtg$6+*JkAH7lz+B0TyZ2x~ z>CeNl{DU|e;f@*9B7VZWRo(lwxpDmR9_t>M_s&5>B)b~yz}{b6$>&Ax~R zwajb{W%j^US`f(`cwhtKA6|3=K=@I+ma5)Z^ByZH&S)*wGY-jUIvLI_@ci2&&WGjC z^r$B{L(sp@@SGi#EJr<5=oHDkr;XaV5@ml;aJ;nOUhnr&#WVQXgO6HSpXKv!^5=Uo zijQ*EXDYf%eM$1qe;K;fj+EMpmx;+&vc_*h|6HxL`ph7*3(sJ;XDOhye&|ULD+Vxv z6If^E6JvlQ}C5Cni9m_eO>(vr{r7XM?T=8NNjAm%}T{o)m#^7YzbdYjtzv>(lt9=jzAW={tW`kI%dx4gVuDilTNFIVNwifU;um;| zeo5F03#3ospw7NLV}+EXr=+_6lIAaW&h$Z*Hah=i3lZ;Tt~5=v0f!C zulj^$etgd0DM0^RgI1&UobVbApPb@N_vC9d-=PD49-ohK)K;l5@>Ud6I! zD6Ndah9C6#8mVv4?&Au_k{+{G>4PkP+(ON1aQd0T{6_!W?@$y!++S;NH&_b=y@~@d zI)&H8??=1K{s14!dz$W3Y&=OX-s7;`>Zc6q__ph;_%_fS`Yk%iwlMy4bqoEs$rUm= zGv?`l@3&%sT-SPD{BujhKi94ObBozOw}hQ$=CjkxVpb8X)G7k)nftQR4AeVB6Tryu zrpT5smx|kv1{m~c>6Tq{Z#bou1J|Cq1iWQVljV;KncwD*8&v+dqkny+BMlONs`grS z2aD=`9mZW-0E&O@KMx5g{&?%w1iE#pNu2$6pn9l&dp@=NRTe_`M9n_)Sin4$(mqsg zoR9Xwj|E;hpMfOcJ7KKlJ;?&a7pG-bGGKMEd~UcicDLJO4#vI*AuY&z?wAeo9%}nX zhxlPu(V6&|>LHi$_|I)>09IAtgXSj4@9?1Ydz+K>p~}`!!{N;2#2stkQ*#JDHBuHA_u3K7c?;b`APPqYdE0Vi8SyZDBEGVSYB(hx=`^`4NG&cpkhh3FOw)fD( zg1-CKIcd+{X7(f}&Zh61O&X?qjZW`peah~Cot-}3e?bg?)m>j?0GzFKeXZ|{0`_|0 z3l@6M;fHT#e~8afnND@@^@p+KwmwyrMC=$KUV;rq3zR>Z4y^`b^w6UFdWN{S}v( z0mceCXgpq>$)}h>bKN0gt)c2;bYCC-9eD4~oHf9LGejk%@0q{cMQLP|3@naf$&JnjVr2f~Q zA4>A6icMa+gU_S!k!j;6<4<35;|NQH}UPom% z!>E6@pNMts>>`?HjfUr)hQ4bu+v(0bRIrgGT23Ntlmkh0Amlr3tcSTUT-gvZ4~D!w zp@t)wVej5hW-me&fqQSZ8?*Nrvv>NF+F$1Bx7~jlBL7iMRVm0 zVGZ{8ozjdlUWTjbS8}uOlo2`Q8(cA&{Thol<9UGq?3Lh%#vjL)`|@XKn4004>hU&U z#hpfErW$I60k@Lb|RnxqoYU6A^elsg0E8NA=hh&z%m<}V*cbUKgEG4lYWeFVksu} zfroS`Y7Us^h=Imv24eo{2mf>%YY%IV*^$0F=r}L+731-joC+2DpLk(8=QkqfiZ=Vs zugGVdM}@|!fy6q((JZ7W{xQX?o9#_ntMZ=tRNp&ui<}~T_ z#*9gDV4*pKaV=<#{yj@7lhp5FJZXXt!x?ljv1W>4P(^uz2nw+77izWeAp=<5s`cXs+S8$r`) z><^Dr-?Fey<9T7bnPy)O6i%AWhxyff=sQN|qjp(}c)nO6nVdpq&b+1|8(k9m>Qs233v_RraiuU;xb+QBIzW7*w z^#!7HcQ%XUIG0)jbmg!C`j70?0GXX?fPR7(C93k#i~KD2cObe7Bc=C)dWwIGTcIq$ zY9Mj~=7l=R*M_Dfsm4gQoY~nTkEO$xEz-WjsbWm8%a)^}OM7d7BpYkS=78A{FnLcl zqBL&NhJX>>3rFh`T&uuN8f$Aa(5eS!^81)5DfgQTd?O=!5Pk{yY zQn>)J!QMb-kKcEJR;CL|;P(42t_WJ-q?{y*6KhSvs>`Y97a$uIjT%n0E7ge>L(1vu zZG-P^N!I%_H-#$uLJe=yGPIq(S&^Jr`yC{xN{`JZ!WpPLP-5cNJanRYDaS7)@8ZG^K{Wj7uc%$4>K?X08?YUyvWDs^C5iC+&(;8 zS)ee&pBp2eD|z3~Rp`%sMLt*3kNC(hEGjHDY8q+5qN|WmgQbgBv@+kK!eXQ5U+EWJ zRTwqT;eID_uI-{Kt1r5Y$DW`I;$f8vFT&~Y5)WrbeJ$TwZf<|{@MtR&ULx5*5)tRZ zGk4HACFI=^irwxOe*wcC8sNMf^)7(D&`wg(3geuS7aHJAp`x8ZV2nIB6?MzwfU|&} z<3<7B$O{#Os_ToRzJ}#5`F4M|C{)?V?(;37SWb(%$=gWh(v&<0Yb>XuvPG!%g(``e z!?fCYW%&KcP0`9tEJw!jTl%t==CXj=qd23O1>V>_NgkAl*}~&OXE((QhcquNdUA+X z!X0K`a^jvx)DX1OMa}UgAJv0J^095W`uDsCK47?BSW4DqI9Y#8G-qvCtXL6!TO^j# zrg9K&lN^L}SKnzfs_U42T8E7Vf+Nf}3`SenyDd`L9`$YuQ|sMoJc*qw5woB6QQ}9%K3+647V-vt_b47vm=)6%k2Z>4 zKZ;YA!ttvvb%Ytmzbp#SYrp#m!x4<#<_uRhhhyKE6s9V17k#G{&hPb0vjT<(J#A1V zgVE2ptttIsqox|HYD~7Y$4#1WsMdeUF=ET8K|;bF zkPwhm1MxgAMIgz_=Wtz?Xd(Z2Qz2|&tW4AAk z!|Y3DhuU~1hRp1xI%TV>wP6O5m#Fizo)v!UDeT{`##oIVixHwSf4tP5l6lgwsCYOXOq1eFx>6EeVA9%%Si+GzN z-mQVm_6O49-@nQFW_Wlc8KEYJ15dYd?X=jo7@i?a=1og;I1kV$c0b6I{6J%|h%U{N z5L!>CLRzcnKqwSajdDZbL5OJEZu)P>pfRsqG@@nwbi`Tz9ZAbdP373&GA++ptNAouj3^mI4(w2OO+=-Zp7Qq%k@zi1)4jZ{uX zMSdZwY~XIYq+94TIxnd+HmR1(>yQLlbn6&MLA9S)IvOtd?>;<(n#{glbGK`Jlx_HD zBc~@VYv-15*};c7X`~;ig+&`!z7ft7^+c=nr(nY&UZ%#(ZLHaBtP7?SFW(|whm9Ws zaC*WDYp364i+=9+p`ZJYpx@h9z90Sm0L}Q&;)VcJI0E^~4bMiddG01AArl2OWMsdx z4mtyYWi38*fm%@pBGw9XZ5847_@7vG&0t+dimQ z@HBs$dr2tgB%rWqx_Hx?E1MPeWM7l9mX8jw4KS=tRBtT-K2aDaibvix_e968rXq0D75pz_YpMeD;@VKPYU}wzIS7&vL)i(5>c+`3Ro%gJaZMbCk$vL2P{<# zOeH`r%3uJOoat;U2vMB{(1#MK`92R8{otXprOaY^-HOBtr$=JB(<8A|AeLvG3dFi* zoSZT2fml3N?~PT5jniZ0xG+tR>FZ;MMP79%yzmlk%~LIPf#0ic31pd9eF3J>dT^dBb#+|z%` zArAjimVv!1DjY7IQQCt1&T#1h7Gj6XirRDx^VQ#Ht5GA3*lKiZ6cCMTepw8V5o??z zHBPeCI7w=pqzhOzPD<4{=~DmyeF7oD@lqIbfsnAqIBNC^ghX2e*?kXkbV^smYy^aa z#%V?dYY=z8#uE2iK+R4&mN-T;Q$5r!rJ1^Qh)uCI&ZQdH$5`UM+_rNL3*%hc)-7!V z*I67#TuB^BZDT&-Ou?)Uk-=hM5oQ8}p6u#hr^fzciq$kqjJwon;kKY~d?C7VA9Z8W zpoL0q;c@C6P0yop%?02%Io>*0gIK?M}it3a{$ z13|#3eOr0F9WvJZ66I=MmUey(D8iukPPEj|=nmz(8OzTGUjZ3ZzcRo@^0<+E@y5v zHh55dp{(GZ;twX!bOY;#W@}}wqY-Ut8{x|s0T%Ow99I(HeD=mFXG6!^}-cspp zyL1J%%rJqY37s0I^r$2~g=hU+iFD_A#qfhFL#>r-wW3@1fY;VL^!QsOwmWkHeu&AY?n z9p*G`E564MYo8}nNhfXiqm0+_1|I)BaWe-pjBmHG_IZc6o`hH|TE!n-0>jpsCCeZ# z6$FdUgetd$eEr|MgZAU&d?>D~C@c_<$51NLCpJQvX_TC-1s69(w4L!0Qr0NV?vLDgHv(1dn~ z2tL(UFeYKWvHD5IB;07MU7LnUC{PwGko;Ay@|vBWE0W24Et%YvE6T`)+H>wpxe7w? zCc5Y=L-=P&#{Vh(BJrtIph7Q!|8TJOIumd+j+7Rr({UmU_{w+5{ z2P)`94HyVD#9dM5bohcYW3pmgM4OHoi1mJ^y?6gn>l_>JOmSEn9R3^fe z+bm2$8;D>4Cm#65=S2#q;|~ypfF;A2g0w+KeCLeVA_!zUeN1p5YPQXaWhJ1-fo5!b z$h$k@-NcxJy&HlxJFC8Eo$*v!p%k8=B-<%*8>P)a6AS?48xRVB4ubsdN38XYgO`UB zEEP;Z9NMjy`~OkiqdE3CN`tTmuKET;VRCuOQb8ogSrAv^uAI|9#Fy?gQ z*mZK*eN|1brOt&6Usl>S5Wflg-N)sYK;q4-r>+4PmjTc!+O1Pz zw`AFnj4M2sK;&%0vyFE_sQ=x+!0N~WzX64yR^G)LNSvJorEPr{^)bjuNLC*gZBO9z zcfji7UuVf7@}xqvoI^)CVzX(+n!|j&-sj-VkoH)qo}2IaBysRs;GoQw^Zqe$IYl&2RY2zu+%dEk*7bswivHgSbP@s2t*DBgCu!l3^Q zVhe|OmqVb#;PBREtP#2yF#JI#;NhwtVUZ|46INLoqgOPZJfBv!ELPXpREMLD>R3q9r)I+_#I44PQ3If&8blIS8Th4 zQRTJxHC8ve<5$SFtPP#1svt1d^V-m;(=MUiogjCY@z^>gDE2N}T=gJP#>@5#`sj8} zi)N#0z^K@R_2KkGb0iqOEJZDrO18y!=ygopdE4G_NQyXyZ)X{CM?6cBtLhnU;ZxwA zCy7i@$(9zD`IAjE>ay0P7E#F^C!loO2Q1(=maupwrDq~xLy{LTNsURjW5AMr6et}p zyq18~OZ8vD0^<;4(v@Bu7>3)Hl>0*#BpnrwaA7wU=8Y>kVBxl1)TPrzlx|*+6>uBv zSXyx7y(Ly3_`)LDc+&RM0fs8QD(k{vD~3+Ut> zyxhf$@Y(Bl)WkEYO+8df$2K)&xUh}b1dbjWk^ysIz!XOS)FjDAiy_SsNMSW39TQ_r zGBsENhdeZFtRPN?FjUrhs!;So{{zg(^)EPx#|sV&V7#pQ7xePogZBClNc|`;&sF^g z2P{#4z&2EuLq_~>xr~U2 z6D~x(95L3K zE|pW{J1!;tKIGzqNA?@%avgn-+@8zclV{KI-|@GeM|ecGhZ>GBN^>h9z}aXmEAPLl`Y8@ z7HtbMlxfYK!41mCmdOr1&vJH^fJzp+mtG-W*vwKbQj_relC1>d3fswhxKMfar??+w zTR2*|b@=0rbes0beG+_3ALG_w8|0LC_#ESPPV7sdn({4HC04<$Tpb^ZsBlGx>#}v> zbuQxm!?jHM!?hHoI+Ut_pLkFYiAnTou;@5?o;PP9{&B${ivB()Mo4^tWP^qL9q1A8 zf-!ruyzv4*gtDMsK5yjx7*h)~^u`9OF&sUQ^8C-s(t>HyHhTXN%<_(6p11Q+6%~3F z|E!c&Q>6$)hmd>_x1owC9~{)`hzizCP>s_WI1DA~sfGBvI#k^_2JgSjYeU|g5-uoc;M#jg7KS(zo@K9kGl@TY-a5WAUk!j%a3-ZYV(fh~(ORCb2}<@b8+6?m(%sc0X| zv4_;{>r3f&sPZgL;69ySE9aEqxkyyLrT$&2j6>3KrpG#1cFQ|-kEs$6>t#hn;e4#W zqr=rLE+M#I;`JwfA4NeC7EsIEiqEu=*nOW&n81Mqa_f7giUz#= zrhV_^O6rj5+!qWyUZD>Z(+7@A3rY_Z;{Z{#kNE_4laLWaLcmfSjPjP?U-uGJ0rsP| zpg3!ZxK%g}VV#OTjixbM-T!p|=QL%@G*!!Vn_rM<^t^lMq9Xd7&@T8KmtK4s(k<36 zzlsiLNw@BQ6&1WJlncI0k5?UFzMY*t;awZ;JT}^`Js^nwQX8V3vwwLyMZS z>}f^5klv~D@CtqAIr+^0k%m0MzgZU~^NmPX!lWx<(uFM2l~|iylws3-Y7np@H#98GHavZC9I&r{aS#>E=|?k= z^sxM0tcd`~IKg(i^6X=$Waih0eFMvL{K-u;xAR7YtD7OP-}Ed!We|(2#-7GG3W3Sj z?l{FO*2HTDb9wKDTXg}}v~^E%z*E%#ADIq0)sbnyDaRqKUN{bwWXN&oY1xQnw`Kfd z*@O9brFLoA!TES4d%8#V{6O8OagxGWAf6+@LD_O#GGlzGDcaWe@G}{F%z|~CPEk1g z_~(kdH626#z5J^D6u_EGax)I4OKX9$ifw4DJ@_>*64s!1BFOY=T zJ#nCs_jl9S9PtaWO8lD;m`-Z-b|b{gDI>)5qLejezY(hJ;mu7M9hNYB^m6f#x}|b} z*NsJDciP+u$@@!n*L)!!qpb;uHB=CNH852b8}GG~`jUGmJbeol&zH zD5(fYM97GDSJb;PoNSyGoBTt|Ps*wMq`KoX1dP*m?@+yrv+x3 zk#dmY+yGW}?C3<#-SL}H-Bhb#+DpowbB7CF+BsWgleo;Jw8|z8S`Je7)H+-+y)t%- zQh>Nd&4WWp$!Ik_3~bcDW7d4)GK1R^HQS;*mKa#GGo)ZrmA?~vNcGx1q?}^y8SWvK zp&n{wMTX@e(!L)#gB#$ z2W4B@@!_Ft^UQDh@KCn*>)F~QT=0OEv9Ewf{`(Hw2xsk&a5}`xPgKi!y8Arh^%bKlCfHb6lcGZz(>#AZ2J55|(0ws+4Y>1waCchhyn z{sD%xR#~T>gt7K^BII7S3M}8BfPt+=KmLY#Jb5qv&EF3*(O&)V%VI@NPY<_o+5D=x zm-wc3GOeOwnSeFsASVJU?Hv%mwokIv<=_CznA&%;NfjB?&XY)!wo9i;Yxh_G4j&or zIa&UsIHw{d_7UZndKAE*M(y9L6mvDxSZ;|67~Gr_((cl#FH^gxicKmTUz#;idzDFF zZmNdDoJWr%z3C?XU6x57jYZ9uHWq;oJTClhTp5Rt8MW_ZuXd?Uo&LD~}Zw%<1J3o5&+(sQSh6kO%I)5xLAIt{8v`gZ7vCtXJ&% z#mYGS4n2PzpE|Ovvg&KJc#PAg+|KwstQ-0E)+*EQZL)gs1E_bnf!f^KILuD`5z9`z zD?Z+CC+^Zz*G;DSrqUtzceb`2pE9IrNxpZ&WC19l$!j?=nXyk{`gB+l`)r*rTHL= z!CJgM{*DBP-}`__1MW6lW;Fv$SRJ>1l=z=%-$YQ;jz8_89id{OjP9`OM&Z2h_CU7xv2wZ;J_drZF$Fe;~Ck$#{BC*vY=mSn7DMq0S`usC$>S%2phd2fYcqEnapeDy{g7+r$ml zrPC~u`z@F1^Wswd9zJtaf5tE7ay&>{pTWWOJuyr2OI$>YCg;U238%tj$}stc))w1r zt<$vWnzl=7+2sA)zmT;qP3DB>8787ykV+D!{+54=0;K$xR{r+Y(APhmwstytu4MpRRo3A#SYOb4L8dSz#!e zGBy;?XLs?%tnyr`t;8F&mH0VrC4O03iR-nMxLsL^4=F3LXwpQ>W`QLrYjHqe5TMfI zK-w?9t?k6q-cH$xZOXi1_Tc|7{Kpqg`S0@|r@kq~j4K%3w(r-!rK2pMr>H~6C zgn< zui`h!q}fNO$nlJ%au2n@+!U`ZI_{6%<)pL4&F~kPy$1+sU6IOW5~_g0V)jS8P0`He z2R85`JPGS;)|GNH%*zBg9PoFKaFrR?!#ZY(my$=Cl69IYd%uFQvMSue#(38 zYVgw+|HI+PtWW2roW8=;-4yfie7o0wFHgCJegsD+0_GqCH@h|0EcDOw&*j+YGsf!g z!=m9kW2|NUw3QzsX{`EsMhYu*^zYD;G^o%!mD;f0p#l_c$q;ov56pJ(9ylsk^hTs^ z5wN-oG)?HT?}2}ZvqxVnCx}S^X+W00%z)2+-fp0s&2ET&7U;R6Pet^yYWz3dJL7NA`R{2@?(k9#7CJP0U9V z`_M$_1_EjxAgW{)Pnt@a4l8bj%e~nhrpAT<2h$cb4@EM!BCOooC3us(ag7-SCWFEl z94i=ueF)RH`gHxL&{N{>!cV2R+l&+j{F!aCL%b?OOCy*KcC_9+{Ymxau}@;E^&cIw zKi!R+&HXzq*!kCoQWHayCe6Rd9RD>x;&s??W^(?efUn;CzJ%b^Z4moeeZbdfHu{ab z>ixck731g^UAM<(IGf-lV5^bsY4>o554J-F6gXrmMEkrnoWBaJwfl_KU!R~L?H5cC zbia1Jl!hm$u$|%wsZ_MQ>fSIxL<7!325|eUCx|_*SnO#A{p>49T0r+ep_Q)fTk%irL=G{`yB^%=L)jGd<$8iBxO?* zRK4TT%6)8C1D?PchL2}$S5?MHrigVm{pJ>BCSy#sPNWdLjG0XIo2&)4^qV{BPf ze$U{ecBvx~ztN^;SNcta$=lSMQqVe;W{O{J+3VV1mQp!O)KEyl09fixxJ7a5)h+bj zUJ3m{0ya@^vf55GbT8e$o zg-Y-_n{rcy70Gj}x=TO_G9^w%GOmhl^RJOXP)!9M?plX!c%j^sJc3YbM!mZ(quJaU zpPABZvaW{nT8^OEbfgi^nMOFR*nFK8n}4eeV;*kS3bn&|hH2Y(3O8!YiR%)>m_4aw zy0%^H6XNd5{K(dbz42KoVoM~iBVi-92!70zcy19pks@{?ZR}3}aU3~d=g3nZ9!Cy- zxEy)F2wbVa5(&#wGs+W>op9|J&EcWAD$6I-*i@W1r$i7!u0*IjHhO;l^VhE;q(g zB+>z$X(Uo+U%_s%tiGBL)0ZITMdeAbXc#Xp`QPS6OG=EATpdCBna@}r|eV_mv{=ESin zP8^fYiTi97%ECCtZL3fg#<5lbtHRXEIL5v*O8)76l7IRyh#N83>l|W<=i{rnNsTWJ zVyLnOD@rV9BPXHW=&j(j`4ncWKA^o!SHQM>?JAjlFEF*w2xn6$g}QWv`f4zNhS1wPM11Qw!%At{^W(XPuG~EXr@y9T4Z(=)lFWZy(5wx;OD=vCS!LMLiajaj2 zV@6Yvr0rCVQS(^|Fs<*uUWEb<|JsdWI+UAYI^3j8JQ4nam=4G5s=LGh_4}0NP~!cB zUfOafuO3!5o!5=puPPH-t=RgyghumrgGS4~ST&t!qbz+lNuVDr=v>L3_$ScBywsh& zY^T|2NJ8P?FR@zG$}Iw(W%*B5su5&B4+iwvBSt+$U~-E#u&raxyP7$ceY5Ht z)SR_4RQXJr-h@~@WSJ_n5mFu;NYK$#N3%tG1rBDvcuO2eq|6z*w8iBXT{{(B*N#Zn zr@4)D+pP*KV456wD3z%44eU1O6Ye!pN{jliBznQt7KNm07R(xY#*!tXcfYAtigC;*0gdevMR zR2gqyXLWz714&y4-b?R5Vps<*rgh+=Lz3QJwgc~7z5_|C1MgWKxTvcgp#w{79T?Op zd)cNs`K)R`cItPm_SdNPU!~hm&41TwK34g69b&O48>#u&-`}~+BH_+CYhmTQBOdSW zz`MHA5gNbN)_CL_{*;~vGdNgMW&_iIo7H|Zo&H?5V!K20{7jC?j4wn7=IDu{7+TF2 zjKH?bOc(TchcyJ-tRavO;5);5!9Y9}o&IDa=ZFa-A`h0AaIzs{@{YeZ;Cq5CAjZ0$ zb7F9rE(RCz81^h-e4a&&&m*yV6>NgxXcCWBfOu9}S%_JS;t{P%M5#)l;cj)vSzfXd zi=sv{bWGD$7S9Q-54-xrFxc*jVR)tgKiF5MyZ;;Ud9uHGJ>m_aNUg5F^$*1xu6&Q< z4OeDyyx}kNbi83ZyZ-;8J(J@NLuO4+CXO3{|3 z1LtR9Gbsfk?-bfvP>Fdu;625z^V70$zG^mR@2k7UPcy2r`Lzs(iWYODqGU6B(L3mR zRxF=`W3Qi6pUaY9{zeXf9LVH$4G!LJl-;`^tDuRco05LG?ZVv8NoR(@Eah@j;BGP z1jie4m8n9*YWnO4smS#KDtgHML28=xL24@aAT@c?Y8t7UX{wrvHmS?cVLA6LPF198 zN8#xoq+!J$q+y{CQd7wXsi|y)nurHSs&9U(uh_HkU^hQlh(mDb(MAqJ0|pFoZyGfZ zUrZ*05`ec-P4XHJ!=AmFudyreJg*PMY8Y56cE>2bv6}yF4Vs;Nu_1_XI=q72C}=WR zLk%0#1jjZnh*N%oubvL-s~-OMIWAlvo-KJb^$wkAdA|H9;Zj_E@C7b1U6<{#$}W^Y zWn8L{|9x3*70aK+@@KmI;h2};0RQ`HfY#%wRNEmo2UQdn8hJ77jC3o(f7tV!eld1f zUhHN0<&j@3Af@HMiquVt)RnpDKX)irTugs^=s#Mv%lhcQ0s1e&xlg;PAkm@~g<;TK z|DpthU$ynOu;l`m9Is!<7LL5`Il0NE?K#aWLO8P7g z49DnE`Srj1b*?ZGs8=-|A(dr*$@mL4%zJS+v&xxfBxzCN%c|obs6RG?qg`hhd29Iw z_%&R85sL5NhHxy(5wFBl0VCKRHa8(C6g7T*1095-tC8Dqs*2lOEw%E%Sh1ULN$lo! z`M}eTRK(?TSbGD%miW!*P}|cge)DOmh{tqx_T9g+1#nL1x{UIJQs2wA`VdT-{myHt z2+k706?K38WxBY2?`tZ8vxHrMKqGpEKh!E8>O)(o+9&u1b_9$Z0=Xkbuph4095uZN z|GF1(0B1ips>}-IoG$UD63Y2%DwOlp{yQwHA5!$;4ji&|pmk8vFywt5-muYnMb>(G zE%82NP1tHd;C%M+SB0!_5RbMivbIY_JY!~OpMPywOtFouZfB~#L#Xe^ucpX4Uz4>D zWUYQxk#)ZI6vMi}AM(hDzWO`Ot=By!)I6gLx7&8e!ZIX#0(aY@&5rkN7NpW7*D!#h> z(pJN>N20`~a1Y0vQj3dGSY~hDocV(~U{>Wc;E-FmnlIi%>Ll-x2;QHLA zzRB4VDx09io>L}aiMaONU&+#P&#zefH1`m~RHy&S3Y@*?SE;~RzcFW{j+~wID-}6A zik5^!@m#KKu~ahW@LD7fzXN`Y0(h_NEx!O-Wk3B(iKtC* z?6Fany&gA=sRK157gVT^*`LL>@T8=NDgJx{=~^3 z33HL;qOoshCQQU006dlB0PD_voZ1T)enyF4`uzBpygtsAV6LTO@MrvD6bl$PjDMIe z)V)`@tL`9Js|r`&g`%;%q3_vDIfmm??W{y0!i@T*3}SKLcj>Wg+d&tNK-6r3XEp7* z)k9g!?~2{_UPE6-I2I`!NY>Aa<(xCy1F;;HX(5aMM!fau`OnJk#<}foobd8+f&HmK z(jEkSZQuQKv+E8dd-Ni;OCCLwe2#-OMmY}{4>pT7Y;HR`xJxi&{3asSzg}Q?_EMv- z`q(ePOB_R;`wQ;eJq7H8NZp^r9{G7+pCqdQR*AAX?m-qfjJa2hqVh{e!9o99<1r?$ zFa0uLy&sDB&C`CfDUKld@u&WSd9u}b42Cg`N8{35Ci1QHdjD6{&32>aNN zNnXAmx_Z*A1K&ER&{$k759@*B4|QC*)-&`8{QlX8pVKldMg?XJM%N+-LX@@CnpvB8dNb2VEL> zVkx`o>#yk3#kHTMyCLJw4wi4eiytO!^t3`uh4&dB9s)j+b&Ykeo<)*Dj~p`KzVR|k zW5Gu_CjF4eLY7b@k`p_3y0er|=d>*4(+OD&FF`_+Oef<9wd!ErUW_ISV=<^TbL5Ze*kfOpRxK&SHSz`fU)+b zD;%8hy4@+Rjy+Bl%0A%=<-#`R3h`qda4NT)!~}6COgNP&e{_Np&zU#3DP-RCuan)x zK${@$Zs3Fc0m!!;L4cfjQ^d*EZ(j7)vV-pIGXd{U9K15W;r+=YvP6qVj-(M=%fb3= z>*)Gdv*h=jd zdzIWn#T-ttM;qF6dpHNvV}mncThp0Lq*po-Mq002YP2Mw%VjcVSiSm?EcRX6V!t@Q`9dhF3e>-{;Vw{vU$N z2Xo_x=Mp!(Ix9<0syd1B=Xih4N~EisG&n3tPo^wJb`Lup>raa{kN6KA=_9;rmPGph zk8|bgDXyfpg(`c)<`8_nSM!!ZEp;$2u9cP!5C_7U>C$Z@!Y%crFHyEQf940cwRQB@ zDK@w!eaA>GC|p!5nNSamfV|ENO$vZrCwQ{u>=_(<-<&=CjWa1aSUawE`nf@N4cS)d zR5~pPI|*%zMLXg5&0FV2R-$tn0oleB2)XV z5;vbjfs?AhZ3w=m-*KbXr!MyzwK%tuAn+pk7e^UUu_t(H>>dK5R6sY z3j?<%&iSWYLE@e`^PgDsUbj-Yhfrq(DUDI$x3J(@o1GynbI7PY?_`4g-wookbDZe( z_Og4bzM{P{mfUT%d5Q4I65^4Y1=!c(5!e9c45snO5{pMp#mCc8m|ZW3qPX8EYlLjQ(Rj=+ZMXXyH6v8qtbI>7 z=g+{MANeQ9tDfDUK{uA%a`ebxOa4j57(VWZ-+~Tt9QL2fGGyv=J-r3N(; z0gc5@h524A37XvF{~bN}eJWVIUPWGO*QTIRaS~-omhR^yqektc4z&N%Czjn@^~IXa zOL!~Df!i69Ef8n0Tj57JvX>uzJ3H>hT{&b z5)};LaN(h`;>?mwL=}G)NQ;r!UpW2AdL3H?8SH5`GXzM+&iX!-+_Y#;565N=1Q-MLvXPrc_tLQag&IB z%~(@Olx0~mvoDmH2*oD5i*^QU&Qwif8SKl?L*xhgBb+bB@eY9@D8xqaF{}Vs(m2-# ziY+!*Zc~$5d^KfH86#d;d?w8w%bU?S^;n;l$62T4G1dvds-`dp15h|cqHM311}Wdf z!W`vfhdBK?>|e)l+WAvBNHr6n6zIw7f5a5!z~N`}l}IQT!J1^%CshBCzE*d#B0pDk zu!9A4)j`nxL+l`@KET6#gN~F6tv&}*MLxissUF#Zb8@*%`jOJ8*ehwTsZV{nPn;R4 z`j{(JeLi8trf~*Zl4Vn|S|ZNE^%1Ng^Okd!GE_V}^1x4}pL+vT?~2JM@$qhp9Dl0@ z*#if}=~^AZZ=K|~x@E?I;-$MC@nz`PU$A@7NsdD9=NGNe>wc>WoWD9$MM5xlR=2eh zlmYTLzgv@}TdKEcas|d-x}1I>if+|p(m7V{nrpab^RX9LD_9>e*GMZ6Pq*1`*3;Eya}BQqzE;0+7ajFh zF~ySuE|x8as{Eg$bw&r(5d69wy{r zs0#;_y0A~F3(KG`EUtTkH;GF%h8CmW zQIuAK{Z}f5zoZl%|Vwf3-8r5S?fT6prM15m@*0P8kt*lF~vCd#1>s@&L2uQ-YtP zH1k-lC;CfZ)$KI1w~Gp5Q`qdXk3rPi8MGvOhb7rNEXlq}OZJ`Y;mc&cYEY>GnAV~O zK(9rx2TiN)wIqAc)RvCdA(FjAlZao2W^!b~emIC>`MRa(c*=Obu=58#jX&Ali>@&ln&x~R8QJA3n zR4zHqK0H5Jcjr>jfLt>Em;RJuXohAVnPxLAzL}wjQZd;rQ;Ta+dH8I}765JbU**cYjj7d&r<1r{*PDbrsZAll<{9Mq;Wy#^QZ$DEp3!{W0WIU zN_IqeP-%4Oz&esrx6_Uasg=4TqC#FysheeA^me9DA*pqA_>2^tK`bC|q)=q4jlkSa z$FvZnbYfN7rR%k_l7AiIUoGkvAE2SqIjmHdG{=@7Nu@=+_Prm9V&?kHC)iuztkOF+ zj#hYuhf})CB}W)>@SrO4Q&lAEu#}*xryijy;2|V97VIjtSQTG9njsCFjM@j}>Y!0u zF3U#RqE_{ zO%HJLygQ`E2Oqa%ZPpuWj&Plv8P$ATbi9TnCb4qDclKkjC5RE?- z6PhF>-pqaN6+hs_0-Z|N*{lj{)fZAFmg_9(W0aXSU(l$fLoYWlypAf=U8LMGFcBX_W&D zH5#>}vxSBJc|MDACk9oTta&HFPj4V!!=Yt&SKUPv4&pt%m&W4;{NGEtzAh1SS(@o`ksdo*i=G_PD6u%Uwasz$T`Al>Y!16k+tGRY4+Lm z;#GJKRSkh_5=%cmC_t2~DD6j5&Ot^uWcZaQco}0=d9>;d!HZ4HyeE@v!BGVb?3*$Vcu zv58u|hgauik*ZlVl_U;%NkoheJk2F9;Zeapwh$s7bJ9Mq>+|$!2J6Sevz^aIwU*>Xq;+ z4i`KuYxj`>)>^c##k8hlPT5GSyA8VYu%yvEGN6`AD>LJffz(2uevEZr_19Fp1r^%C z1uHrslJ2uju!`OCpgZk*T-r^g`FpzuEX`)8F0D12>P)FIFCnfsT40y?>VU)V97zoS zw9M^_qiI<+kBEx(a6%W+I@7}fBcpdwef-p)S;=h`%I^NrX!(? z=+AVdRI}YFl+r_k?}t))n5XO!?%ynnJ?(RyQ$j*jenbv*`ngt?AJ%z~Pbc6_B%#?7JmB&SnK4&xH^>5)N3Dt%m`=StTe`7aC}^Qny5 zk%V3yG~XQ2rPKMw8oWI+M*A)qyaV!}H*N6t$>8lt=puUX_M`@{clh8>|PC1zyE~&hB2tOB#vSLGxG7v+qS?(EQJ}PQmdj3B_g&!B})iY>iuOmPM*^BMCE+ zSeA$7ij@xW9)%`ZnH(7$68a#jHOZ_jbdfI4yEgrZqR05WIG;EHumvh z`UO5~*E~O>>FuUJ*7U|SK|K@k^;Y%u{G36?@VFJ#ea>o^hCqRxF2`lPpfNqtAU)Jf zVE~6`^Ob^EF4B#Rg()LrVXo@s5k{A$UXE;F{IB;CEic5=LL+YF!xrP>6!l1Kr&9(c z7c8udsp(L$-!d_}bdMNR*D^5{G5FbXfrD&U=7Cq0i4m-!#3WV>!v40mR9mLRkUiU5Rvp^=_e0oC&^13zu6N5^$(h+DW%%wQ!3r z4)$P6@z%faq!{t~#E7?;jd;_v5wBPq@k+E2Z@xC-E!IZ7mD-56K^yU&Q%1a(l@YIA z8}TCAyPS=9|M8|a;{D5;+KBhko0en0-QG4kRCz9J?unZ1HJiVkBY*(JPzCcC58z*@ zeqXn-_V1nIx;=>jDIaqxh~IBJ1sI?>1OwRL2z|0HM9dwm97=@h78SaSjz=o@B1zBs zDNcn*))GqAiw1JDLvF?HaN&0BUU#UvFO$~Cb0NS$(ejq8k4=^6nOM%_gM#ry=fIAo zaIf|!;^XMYmZjOm4u0Bi@@6m?e2$Cnj-n#Y_*gEUH7KB^GZIpXD^-chUJ10R40;uD zx%n;^adVLlDS{xG87|--g{m716#NmLNu$24-wTB*H$}aBBHqq$>?=;{NOR_~S+T6G zqE+KM&?*PFY74gt9Os0F3@d`+*}^)q9U(Ez63u}OOxq=3fx-W7H9q`I&=B+u`on`g zuSw&TBKRWo=-aQdQmsE~4g}0C0kgplSc+!|J!lHnY&KTkHI@yw#@gG)O3cK|%0R|? zISlhB#wz>fm1D)RX279BB*u)DeGAq&38EMy$fYp6IgC~P^t11_-w!2WFE%3efjX6g z&)2Zxi`WA&ol?l9E@uk46x9kihP1@qZrIqds|I6bN!WT{;P-F3KWxpP5b z0c@Q?AYXlh*JKOltPLx|kG47V&2Z(8>b|TH7OCCD+fj34)b3Op%V|s2`(u+wf;j86 zL!6BfXMERXA=0)Pfoo)lvoY@j)5Q(3 z^-G*#U9Pl#LF=KA&c++ovJQ88h$3(>2ZRPvg z6}{AFpH7`mjf98WsiQ~yR=%%{5u-=^m*)G*_*3w3o3z`$W#zHs;rdg#0xyXlNViR- z_s&=YReDa(VuS;o9!)3?C*W>aKVH)ugIVxaD;Pw zrL86*vvXu?j?G11=lB}YMgMX+zD7X84Vc1%(OAw9JHkG@EZ0$VhE=YQ(q-6t0>?M( z0a5Q;;mVexoe}evmNyOhc_JFiZ&tRcP;6$Bs_J1gRaSE#w)EL_GXdk`wXu}|!UFXU z?uwJ4^q3?^TLEwTX^%)4QxPUQjcpJW%|LJiABlP9FP%!=HOV1|oMX31^kDTRE&y^V9u|!Bj;O_1JGP_a>79El<^{_+7 zbg@UY_7}n6pke;-eVm;OAV;0UVy1(cJTCoQK2z#(Svr~mVM`0~ZoeSj{b#;&1jM_a zid^O93f%Ku9O_=N(MGnOhi;_936pc)Hu|rbgV784#++UBA8xcSHR#_HuOVfU-Ez-1G(TpC}7j$f(BH$b|1t;jtF=M4Ni?K%$m58_f=2Q7hhzf@D#3KF)#Q=U5Fu?|B z?Z+%(>M^w&PSztalMBjt;VXqX@vmW-zxRDdZKkSToHM7`Mi4jhEP+(SNi;r3yDj#z z5fIs8nlLxR)s6IDgDY&ZG5tt@R*ZE&e@}qQI6d-Op0Er~R>0t7(-@o#aAkbn@zC)H zX=4^c##rePKqyW&ppy}pa^$L;rjKnQl^28qi|;(6<&VIb6egKZ_mIf@oi)6m$19x6#7Y9&Iy4=AiFz(1;uk`rceInX$%-HX|cJpl~6Yo%$xHy!Cr`L4GNDjdNzyEiWwdn{WHQ z{g4bN(J9}UT_3I7?>FB=$`W@dR_2VvZf>Tt{sER&y!DaTjng9DW{J!9Ho)_6ak7#9 z5AzFwheqR?>)UR`qRK^gw7ET&KRRM=1*-4*UWbL>tfi%A`4~@<#qE4FF*7T z<__5T{!RnNsb?B8PW`mw<9&sA(H%8A!e$RK;yBHS?ys^e43Ilthq3lehmw9f94bLW zE6KIYF;oHs_vlx{6k;+cQm zToEas&Q&7i`rMSSC7f#O9m=V8QLdWRmAN9~Niqx)DZiX6?yzu!#l-Wl2zqmFT1JfP z>1W@UwqLZ%l~|J?SAO9SWyH|BHEE8m?GP&^F-AS);6r>W=+QYcU}lnWzy7`bhGTe2 z3@hP<$}cY&<$o;dpR^PhlKFyVO5a0DrsVV&z%`(6)63{fL?^=toAGdEA}DeFDj!C~ z*Q=8dw1h`Y^?N&={JX7a-8OadkLXOlJK$4EBC2-oLi0w-Kd>);hwX5i;KOag=C@?! zAJEU!6A&mV!0rci;5 z=#L)Q@IS(j@ed4W!2H-}*NpV{ANv+W4+=G8Y=K1zv zIS3YNUR>j_2G-7tTQ9?l%ui_!hBMeaHN&2E8V3ot#gQ(HVlyuF8r7V5OdJd&m8FGr zs@xkj_eOl(M(oEKmd7Bo;Q%|CBZ&~5fnZNz@7Y++4!`;263wzr)QM1aUlw%)%IH*2 zlJ&vZ21Ri<7jZWxu>-T|6TD@w;_(Kbs>IG%ec%(WmmKefKxQ{^4-2fM8BS~Q3|KRq zow_GyNN}qivc#X3GsCGC8_e_JOXq3EKz;_tM^895nHuz@?ASM+Wev(*f0au=rk=!) ziJzq(#Es#~#;CU;YW4<;&P2U?ijq<9QDWYPkm^{(Y>#?7xHl~kj!>(U2bW}{t{>*g zxl}PhMgBOjjtYX74AJ!H3+UL5DUC{l zXjBrzKg6cntK=i>HaZ6`8k=)4hs&D-Tg47H7^}4DXuvmz!Q9`j>PVA`jgFdS-(~c3AxKd9P%+5 z6Qt@cya8+ivwOw;4oepjQ-k?&C=4bkf=p&wPv%)6uN6*>KZpS?w+*o2zDKz$Snq1& z`Elw^sYP3l>8%^I*5`&nokVvkD@EMeaIEXHl2cdgms4jw2Xo-FlRqyEPtUFvrl&dn z9m)SIoZ{y~LP&J_#&`ur<*rNF(|z^GEb7krJoo1RvG+FcQI%Kz_zX#4fFyT|9)zinS1YZpO^DI&w0-I zp6@Z{=jzy)%&Vm=-5ws#F0QxAH|?U)cj|hvQ`e6TU)PIWb)7hTT|YKlT`yL39qZKf zVkv8AU2R4mSNFg|fmD#KJ{(&tI?p51Y1n2M>OgR{qRapL_df!<{GX=Khw0L zPmGe&?Mjb2-TLuB)QksvjYx0sjTIMhFnmd8#HJ#}GPP7$Hp=F*RjSgoJM9;{PXzWx zYWAC}4pXaE-aE#Ocbavbr%WWZU0k#vYIT1aO^WK^AE+dH8^H}*J{j%aH zo1?psTh=IUv1&TN<`Hi(f5U+%rjeIf6b^1SHVkGe+g+1mySoW$Wlc*YI(ch9C*f@z z5s6OU%6(MVJ_4Ni1r>oeD*_)>*zZ(i^hN^5Dx%qq;ku(4)RwKi^h`LgG2C=?L^z`{ z9GyNGj<;D2nMD;DgEOL;zeG71dqdG#-i-e1quD>V?93uw?Tl)WTs;|ZvZDP|o{!(x;S9EZ z9S!Gbwxb6(ulQZxB|JTvXkv^F(PWy1*+Fs;=ZwKMUD4@2HBXlReexWcb9Qs2?3~Px zaLw^Z4V|^Ng@ecLyPIc6o32R2nH{@v=uVy;biO`U^CP<}dYw#ZOZ|+y}ahMxRjrvMI%lRah`AH1zXVGmF zA<8rR`C*prufXMfv-B4pn#K=JOY;z)1A$S*s479Ed+)k}=T`Ltcc?@`bsOp*fR3ARaGso(GWDh>|O>_Mw$b0qK*b=}5rG_#|k zrY#a^3P-=_4P`LQd2(Z-J2?83-&2HefXYdHZlMno!VFf@?;L@7#O(V2!@CwXbw8~3 zg|ONe0|7e)D&#_-mKHE(l{dMNSiToAxQTZ;{#je0%MvMG%I2o#b4i$@Ir`T=5q80w z98>gDZc}u8v@%5>2QsPQd6jbhr;;@ursbZ|$|k*OwCEOxJPPjg+-OlUm!{7_telOhad>J)qO?4l_Z_RHa#UI*P&$d>4z z-$sf7SoW5%;UvKTxs7${_0MCrMz0-=I24d7hiKT|qu?Zwz&2WFA`S&4+wW52h0hKD z<0cLl2I|z8CR`ZUR38FoXF1`*9d6r5r`SexIIdq@?J4|^x^TX(gS34KUwaDwmJ4XSYdCC@F-$9lXxGUETRX_O%~CE+9I-9XS6*Ku@6|N-Q6Rc=wAoYWGcE~5yIp| zw&{iN1|h`#Xhd+wpDKbWkh*g(f<5O}1bfc42<}J`!Kf!?P|qxa>2XaTntF6c0@uVY z!RQUx;jd|(lZ(KOKE^mbg)i~V;rN!4cqDMDyktitnt2dsPTn2@2XBaGzlO6OHizgp zy^+9CmCh}ZuZE)pG{feEJB-U;HfFZg4aSZ7zf-ofH7@K^+p;g$(&Pg3d#Dr`{BeroPI>jFLyXU<_8?nBFjVkjH zo(d=V*1L1)@0+emDd0i9!Meh2ElNg#a zDRvvGJxiHwGP#g!CnRL7dQ5|q)Tp_@K4O>|Erq#3N?>ABQlLRfo0F@Wp{wd2wyL9C zRV_|i)r{e)Ix4xUeqB|c6qZ_5)RAFHO#(>*JSome6njF!gU0$n1xtc9WUu4-#^#?w zHvddvKvEe4l4b#rv;cbLA~@?s>-n)lCH>SvC1J)ilxlU0Ej~YV&`1xv&`4Ur`U}gC zIORtZd-KDRn;xRD+6RII@7b*#Xz z#;CjsN+s>k+VpqFs7QbZ$0)WmuZkl0whA67)<}jHjoU|XGX@74rOJw#w3;Nhj_Kml}H;xzx4%E^uIJ0m3;JNjU z?-PH{+4{!YG>QmPxm!>~uXxUhZ@gP@L}>zAuKJS$TGE#HAwA>W+B1GcJmU+JJmZge z8~}$1=N4IP5(~{~oZ<)1iBo)^3r_^6cr1&nN8*>yF3IeJ>;<2GeXb`GVE*BY3iXS;-0>LQ=-WSR1R;>&yB6Y@PCFSGh4?S=OqbduFEst+;^+E zz`GMpZ1#*#m!F&au2!D$q?deF^ltnjnE!U6bFXH~0yo5-hO$4SA@heywrFrKR)Y(|0E7iF z4B|o=XOiz_7=;PCgZvXORsD=q=I6(%F(NmnjtG6dFwL;QM4qpm+hZIb>!ngwl8?0; z4M_N|9e*%ab|P06Ox>dIBP8J<{r8%9geOP`noe9iSGFiOHdpk0S7qhQ;h&&x7Vqz9 z^^hxC8{ztj5g~g(hau#$$KA&@HHr@_kMIlP5k@QmXHm!JI9onm4z?KUANt@UaRhgH z5{};nM@@uz^^iUd9Q>m`4eb15vj2BpiiMfZrdf|&o9kINV)1#T`TtAO{l={O( zDq9$6tH%FNIW;Y(b}X-{4~23)u?s;wG+?YmHAy&27wk`bn10k5NX;b?~ihkXhupEY?WrIWXYs;lyrxIR% zMEQ#_p_NK~R_TjGroYUk*jwbx!lV1%uTKYLlT;%A~i;{I}Wj36tGZsaZ zUaiP2hrymY8H;A{VPu91V@`uTO`Jw%q=qr?R&>XLJbfIN!pBWm3cobSmckYE<@#v; zdsciqX(o}t%U0l>@{-PSdzTf6kw)^q{e+5Gml;+b{d?~noG(k(cx_kv1g$(Tn8wU@ zGuUp_zwAk8A-uJAPLhQX$$WQmLqqhGBt_ta2a{yW{3Osmxx9M|OQJD<v{u28H4DDcMKItj#lU053pEtz6*L5QXy2yy^iI|IUSg+mR?023kBsDf zgf@?*(}La0udE>D>C#jL(pU$9bWbi5Nr02S-k?idxY&qVm=9!ek^ffUk*u15U`NRA zHtiD?v}GBQu269IiU~|fQL;l^wxtbzI4&0#6##EQkiX1tDYrMly5$cAI$$HQ_tnL{ zEA9!`bXL?fhl3sW-W9eRfrSAI;ad6}j(*9H@6r5CI7H$EX)*c1Dw+_hTzDZyp)jlj z!yxDn9A0W)MzP~fyD`v|fu*7{d$Sd9q92zJgln1*VH`m&yOukQZ|n(2v+20HHxk&( zd888d_ZjrqzHq!T-pq-Zs!0Oo@kmmEd0wb2kzm`3z0zrP81@St2RDC82<@Nm-tSev zk9sZ(-9EPWmX`N0r9)-F7ZmbYBU40GLw9Q!S^)kEdm7hax*S@2aE?&i0HBs9?6LnCP zrf@0@nBzpD;T*T56!yMB?SwEsCa-?iv`0b+mqH1EoC6wL61U&2Z(Q*;;MJA|xoR2o z?*4nm_6|0%tu!N+VKoHfZ9p8F!K;?P7@J-~#jdytt+%tVk0u$)m%E@r+ z-lPTKy^5N>wq&A!AU9*+%HoX?`;%BoJ9L-@ff-z$&dq7N6?GQbxrkMaC!sR;Jmdp_&@yJ4`G2m0yP z8M#o=fsC*VWyzM(3wHD2(`Y>KCY#Ayjdd?8N*#u)Ky~k6DxFSa_3ssPPQTXS|7(oSH!>!P zLgx{f#sB;LlZoWRKUEYuy(^}knL_8OAvH{p=gd6?@|-7G8vm%VF{XXe!J62YjQg=f zIlRprZ%4LgkNjXms|RG1KjzOQYk!O_~L6qN@{*PCTe*2yJ6b zsWU!Yg21nRZ1TR0Khv_C)aa|1K zpMNwP5`Cgo<4m|;oe5ivHUA^J;}+I$=`7g9h?k!z`!KCf;b^{qoj!}>VzYD0YI(59 zShGw%9Wm}-B+BbupYus<3uhQu^JTAYj60jA@!$b$TlKqmV_99K@@n2o&sPaT%8S9> z*Y~_ysCh}5ID!3bd41zxBxe_uDMYHIM#*(SO5`~Xw>*d+5H)>APJ!d+AP&$kF~twe z?wzOD?7pLK<0)58f$9lThdjSfr7|5Y3$@>LZjd+KlmKbviKyq`B|f2n2F1_wMTy*< zJNTfk21&*7eMK?>c>N5h;cTjUg!V4EnEoDijSejkK+B{AiTT+hQ{gq^tqqy~t_9W! z5X1OiC1OG^_>`&h{jE`bTL^8W*P{Z&R38HnMRUBm=<3+lgfM5Au67>QbU9b)j^_e6 zpW*qAr|GHzMZkJBTdH#<&z~+si^70#6TeR)Q79sTHhf$O23`Ft-H6z|PQVopioYnJ zh7NVVI5rRC_odU1AD+>b|F~-?>B@Od#Xqhqe(^w3fusJ0539W0gP5qx7oBE?Jo4QNOWPRH1R>#nBmYvo9 zeZ%vcT>5I4EzW3eiJI|ieuTqv4qf{Xx+Xs-9fHfgqzQv6E9}D+cCWqPK9+!b*KMq1 zN|)POkjZa7RVR3mj>RKH=Vn;7qJV_nK8rEk^F}BW`J54=*+1z~dUpuf1fOSxc~xA_ z^}k1TW4Y1mq^ibRVWf3g-i;BWH$3eT9E#*sB#o!RV>Wnu-=_&5>~9c)XCu-dd}qZd z>b(~*C*t1wig9)-wR>>xm||~>sC?c`RZ9nr-s*{`;+)+%&<2nV1}5H^fhZ)a>2OAT z{7>)A;UwRs_O^idO6ci`-5+nVqN~;SR@^WJB!D40`QQywwuj0N*@Gnf*Wi*BvbXb{ zq3E6Q#M5p3go!j!^tfqnkz;(zTXA`K@zk)rEj~U#6)}-B{uw1b&pR+JCfa2@Q)0Mi z#GiZA@PuqS(;*|YJ!^6Oj>Xfhn)XmM^K)3pchc$cB^Ym@Dbl|OSifS5GUOM5sdBXF zck?!5Gkui~gB2boUJ4vsTp6yR<8g&AsU%C$Z(D&~(V5L>(D?UZyk%OPIHjjWqS=Z0FrIqg*N^D=uo5!oo)RA; zWn%^0P2YXQNL=RDB~6gBIk)mD^&xdi#r_|*Pk?>b?hV=9Zod;79p)=k+gq79K<+oz zy^@(A=3#;E%v7-sjhTX{>e5HopV1Gr=wqE(^`6X+->CU9L(dO8Q%$D(Q4Ae4*$Ho7 zwE24mC*?$s{SM6t?p~1{vg^>YP)2hsBSey>45#J6u5u&NRnl1=>{)SM15<@#+2(Zz zu3P6kio>X!MBTKlp$30&x3MAD%Q0eB9MpWvTg6@96b`l+(I0zM0`KQ9&80RrvBI^G zJ{z~bB6(vb!Gu&M3G|wnz^xU#S`0r-Z6o=x;s}}9ZWIq1#k-8+810ukmrP@_-x3xd zq_050d^P;D^nE@e5NNaJ^ct7%Uor}ojLr9qBoXU@a<~)BSo!VIo4nz8qrHjhxqOwo z<-@Mrvan;lepap5VzY4Ajhum(19&-UhBeJVw()k?1R4RMwKZ-%z$iAqaqC;E&&sLK z+Guz~Ag*FCTf-zIxG>f)=a;lr(5e+^j|8@dGP)2?=KnjNOv~!m;vK9S<1>>(Pxmn_ z`8Bk^X~`Jo63m2Q-6-CplDzLie7lK!D&>mXs!h4$sVC=m(SL}0>#J|P?|VvkXmSq# zSrN);Ggd$6;UN#(yEz;*yPZP_+RHP#v^_8cw6e1IRv$81Hu%)IhdxaAN(QS#sA1=l z3pji}kKG*e+T^HFxi2=>^@CBoUDbRmMv(q(_zpr>%?U*e>#_QZ@tNS{|`Pb*>lD({#34KNe(1t*AfZ&&z4#s!FyE;wHfy7 zQ7qhtc!_(PRy!J&ci|Qb>~-veRM-rk3V?*7A!Ll)_)E`OsIsZFYd?7gTj#SOWvCmt=qwbjKEnZ*oP_TRX@(SA4{`NHPnVXrxX$YQz zn=Z*kfVdaIrW{uXrJ%IJZsw@d24)Bk6)oazS)lEC5!#SHso$=_z?Nf_wi0z_m(4BU zUkus%teOGShU#`+C88y7X8#W@FSW1KcdjU)Z9SAhD^@-dXpDm#$2;pg?;D`b zYEg0PT`@L0_(iv<26UjKqGoeA*lBF|1#gc{i5TtW%jj!3db7(lm7%Qb<trg9;c=64_7+(S)_1 zMKfi77CSz=QEG-O9cxyy5;I0CG51_;t{PPH_1TGPzLsglEV#+IvD*xGg^U}UO}nFa zfB(ri24G{ctPlJt5nq7gi#QTE(}$fkKpD9|(sM{0JCRcjJ#ZYqur|m`T z+?!3Uf=>dDq~h}WxXxaFH*oQEih1CE_B6b1to!yDQMefW)F7aGR@-jT9)}9X-%Fx+ zCb678h7UZIUe|$VRLX&;0QWq>nJQMjFZcXbDSb2bJ%1RDHmojM$bQGPo{4(ibR@qcQ?h`r$ zK^@3zx;U-+O1a~$aLx7*2m2zCIs~ND3U(XOBV4^E_yDK-|Zjw-=4wwG-eF~LP_86$`}+bBLCD3jwXYlZWQME5oLaD z<^|W7{kk#xCEDZn3K3}&!!qa6c0d1R0Avvwz$Uv<&SOUP8~iFZitdz``3L4;oIAi)Qr-Y4C!n;xe7_8qxqY@?fT_qgB@4MBrd^rPcLJ?sG zBF%qUo6-LVyLk6`z`3u$`}M>D&rZz}>#=vUfZ1N*r_FzNdwz}bk>0Cf66CfQ|eyJeWb7M5K&kCI2z%$PCdgb>f<{ECH zcX-uhH}hxiaT#n8*~HR&p2*7UoQP4|A9SpJ;HKbS+6M*awc?4uH{zOr1_{hg7IMTQK_Bj!@ zdvt_t-;2kGsqyd|l&+bbKzivW0)uo2XWWeK-tqae!;aX~QKhzSrYP_=<;Ij}u~40_pgG-|g3?SX@#G)S7RbCrXN>Lf@S zHj)3^I3V8Va8Bj%>+pqbt>K!jf;h10V@rj-#|kv@h7`76fQ6;JM!u7fituVgU0Hj1VA475qh{=u5|+7&SN1N7n=$`{5M!o{65-_d8`(f3SgcSb2Ij#_KTc& zr$s3~t(;inY8aOIfzSv)XB(G$FXk*f6PVZaJY@M;0{4BN3sR3&i4UjowwVmAcX|ZC z%W>>#m+&^o;>1hQKX6yXmZFaeq>t#H`p@BYFBiv*@!=6O6RA?JY1E1FTi({oKM zZI>#DJw6D={&P~;fD2^5hvpOyIED%!Uk2HWx0{48C^7!V`lBb)F-Z)|ApvuXI3;B@ zRy3iq$H_{}E~YCS5dNoKApFE??%KcpBKRYARDYEG5qZnNAF-7ABM>PY>@sfXvR7I1 z@y6zs)cqV5FU2UqKKnHJCmDn>&#V?siGWTP^2uD;(GPhN$u`)870*#S`tcmuz!84S z8~Cd^qM!(;1pTlxCy7&{mA>{~m7Y`LbEoH&(5$i!+pMeJNvsmj@H|(ELb{YT(#TI< z)3ek_pCH7cm@ortEvA?F(b5!p33dTpn43012xl>KSSQ3TH0a6>LV{Dwu(!WY35VP5 zbuyiWQ|KnPI@uV8BnOmmxU$pc2SG%ag!X&V@=eI~6uJqH`1*+QgSbNUhVV_CCPXha zKS)xHT^hcLGsW1Y<_E$3ekm_4--KLG!8qzzyR*v=vO%W_tl%_(k)$+%XU-2INz#4k z`6fJR_$GVf;)EnRc|lGiiO37`e?`U=sztl zNHw3Ks)pnRVc9&^*PC>T62Tjtp8Ld?bcz~1RGwUUL42}Ejvh8Ih%fCqYV@#qL8^Ts zqNDw;5=BJEI5#*YCS-JUl8g%f$vbkIs!rlR5&ppqAxBWR%9@i{Z&LVABw>w~))~$O z_Y3Qep5QYC^&%78pCqfptVi=8H$5rf>6mxUI|GRN|&aC z=He5Q4P*-=kA)X-pKHxM@GG6FxAaAPIJjbv3Z|?H7lKG*1`Krhv_bnXYe+P@C*c`chOqKhJ-SkX*{5cU-5Qve9w9({K=u2h79+9ezRn@3 z)G1xduBzoF<2L-vi06PqD#B?zl#~p((sx{}>N?Y@tLd)ny+VOvIy5P&vL@GdKKk?K z)6{mRQ`?!zwKa8hXFAn2)7CfSs&6d0z6`VC`i^rb8keWkms8V9ee*9BNcl~!`p$H6 z-a5U@vqkEgpHyF0&RZ_cS#@-EyA)^3ex1dmMRB&YNG{npM-ROdY%|t(d=v>hHrGnfCZ9UxAc<_IU+zdY^7}P-oS_wZxLq3Wo0hxK(c^cxIaYjb)#z;V`=QUYYP3mWls^J0ynl+&DpYNfhU~iYgvb+=p|5?9zIBv*_)&C+Y3qO&l;qFt^GoGc0eRTW{Z? z8JuS5`Rv#8Iia`DNS)8AwR7S)No{|^AuW7V^4(`2giHQ`6FH=&1NZd}`UE!cC&Z3O zYPzN@d@T|<9*W-SwODU|hWCxs_{_B~e@3hE;2&9!e%mAAnU8xk+qUxd>_B38Xrz19 z6(**eAR!50@&-B3CSmd}lAy|#->AsHon~;SQGcD%;~y10{t(nvxSZ+ryNm~a$*=#J zTa7nX^Uf69SX;~Tm&+P!ACFRSrwXJM4x+w!Dx{KQ9kVBKY?~6++@YjA)ZcxV#}QDu zOSthIBE$3f*Vp>;SgR);o(TizcIc8g1-4R~bByAx{CJ1bnni`r0?!e<1EDi(1ztZq zZxcIM*7opjteFEJ-J<$^W1`<@io+wp9=HRmM&E_tLU=D;+l;>aiS%U;_2ny6%`WQ8 zSC^I7&UE^4aT)qA$JKwa&p2lj`~nJez~+Gv$V}6&E$()KOl8Omge`XLP9k~J!c0NhN^P(OqL+)<`sg!tT1)~4YSzxXKB>DLqiIBC!c25^V= zJ8(1+(cX!`UJT4Qsrt7S8Q+_8@ znsiDsQ+m%%Px(DfQ+`iPGJva>s9e}wJo|LS0E{O(!uZSDm94)B(e)|-P0U9N53rZ9@)#Z_CJ{MBVZ{thyf2|S|0Qa;Wo z-eih4%v%2DSQ~?{P)|I%6*v8iEBK!-;%`M*a(2Yu!)V1x#NTJ573ZH>D|QoqSG)9L zhxl7nHruTi>&gy#hu4c$Cg?Pk9Y!zCKC@ozRQ8OT@eydo4}287-x^?}6G5l5AMe%L zbC;t%xBW5Iew-37h)oQX3bYSe74{%wx^hJ?wn1JuUqHy0fof!rvF?%)3R#>xB8hU7 z^je|Z)S+)jStUMTtbP?LU+{!!L{5}+2Hz8gRh9U;Ob6NWdq53Rz|5H;``z-uu}IAx ztLBYJaF?;+UKSDmMdSN&0K24*m)uPsB?B!fsL;WkUbTtQ>}R0jnT~Z^61oGRYdcD;pUShL7CN0r`2wu1#ODusSwzCn0iPB zx{)-Fyvzf9=irb#2UG719gy%`_nm$TpiRBee?v4|%JoIf%y3;x=8)oj?x#3P!!+{D z0tA=Z9g+@p8i$K7#)h}+zU#s@ZIK!T5F9U1Ka#)28(SQHO+}KA zNt~7>9~T^w{2mSY-!xK=p1cM$Jd>cG{mDpm7X9H!0dr!N;a=f`=>sF>py<=*(0df_ zzfjJh3xWHem5lqx;S#uiMhW_p&Y=a~3C)-kDq5tVfwPgtb#0@#X2LZm!*-01on?INtU&H5NGdFmCUb-L0b8%ZhKcpsQQ)?X06ea)cz(-o#4!GJFnnM5387m{?Y_ zi6eWE-HZ#u_M4Xdz7^=T0)uq0!T1CMGHGJF>@cODN011K_Clg6Jys_hH( z-z$=u1`}Wcqf9bbo#Z^1Ma3HC0M!$H%jbB%DARJYqdUt}?$k7y4l08_snj&Z$*2r; z5h4h59?F*As3?M1@ELa78|$A^Q3M5S|M;oq?!TQCR9rBX*V z^VX9dQ95<16Ri6xzyOfhH*-l@3pTF^>rb-9_WWcuCLD?gpPTC`%O|jK-O>C)&yWTL?F5nHT9Y}gi zVA>-s`^xW!4Ftwv<79li9ft*%Px6x_sibl1@xU55Rsz54QkGo5S6OmB+IHKYu-!h) zL(41G#)G6dKUPumb_j(%Dfb*FCFriAQo11zS!Im8+lwsvyO?)f#b-xDvmgS#^Kh`$ zh-R?JtQQFL4TE8OKdo_10F1)#{30U=cLOnMzsMv^o^o2CKdr>P8kQx0m5x4RZ?9~8 z`}-I|i-o&TY*{|i=s3uxfGx1}0E|kNy|LR(tmSjqF5}blCx49ii{=8%g&-RfTi`?- zKYLVpSj@G>N>NlgcG59oK7_ri@~Fv_x`_T#eFK;PXqc`L$|`h~Rr3;iE4-p{&I%*B zbFTCa+qUDIrB6VltotM!%|1x|V%aZIPelUsSW^GYp#JfS-3(NjUfn;icxn-^f=9#AIUEl+efM)58dpv~_L#rNjxcZ?{TvI~ zXx;eN_vi4b@ooB-Z7OE;x*t&0LZHo>33J%x?Z(WeP_WUc|4Jt3gZjoJY%D7WVzJ!# z%tGhT}4aiG6 zvKe`^iz>0D3jVSoLz?nK_QBrTiPjvTDkCEnZ!L$GS+&>NYZN9m3%m3ebStvaiU_sh zGN%I3-{&l;`3iCm6B4l$K>F^ zswP3Kf{b=vvrs1Q9Km&^+vc`&MU4mlg{_A_lD_{Ym3S9g=^yXkC&OB>FNgUnsbuPQ zSS{ZoQD9$oFUGdlSOfnPO6xWr?BUXY{iP}QEyzix;Eex`ilO>|1ETs}nrs7o|AXF# zVnIK@N!7fIx?>I6hFE=%Rb~auvsabuX&e(pL#n zBx}uJm3bRQEPl%qyN)YROclUjUoMrRcf8Af-M3*v?l&d1_xyJCkdmBZu?uMdk3r9! zH^9Xl-YeZr(yc_N1){?U+2d3Sdm-Yo?9T&2{ypmXQ^uM*p(v89A7oLbH@&_rTzj1e z#`f5C=mCV{w zCdw*>4*KenE9f1|iz>r*>vOQxTE?}^3zFFe;md3>jhWkH1`o}(dvbWc#iI7GC>+tR zc%d~kvXp?6=vQBlacVG7S$SyoBf=q9|U& zb~CM!boeNZL?`+q(d=TeW6-)8ohl@-;7(i3>#-G`Sc?6NRiTVQD>~U&w`Pnd904C-gn(5mxCfs(X{&N>`%S_%xV3R_)IT#}cAs$E0yB?M6A{ znCs8M9+4)dv=x=#_y!NkDvsBth zZd>)lT&G>%QSFk|?A)~rXOxL!@h(GL5ZLr#$Y=94GSaIs;at9FXhT#$`t1BtZcHg1 zOnp|}dxJ(ajAJv>zSxnX;&8l`H{f`a7039;TR^5)Nm_O>YjLcu1lJWkK<&HldR|jY z`TPj|&(E8=ANgYJE604nNa)K-+0p8<-q_i3)pzHhoF||GGt~-?3yOT>8HF_{{;4M4 z__2nHJfXR|AJ!)jQC`^y&bY8*(Qi>op;wIGWvVuoSHRS>ykZQ8MlHm-Pm9%krB~U) z7yUsWLGJiN;t1lX<0;VXuNU|7E5Z)(2cI}~5BoZ~L~*fqje43nOl zuNWlp&Tc5`?rvf}aHVabaBOC4IWj2$@+S@CbXa~!hbTf1_c zd{?IM6~i5eFq9a~QmsBAE8ZhT(_W+bil;Miz*UOK^&C(Z8|#)Sc2?a1>ETZTjk2`O z)P6!)MAf*u2ERPe#g@-P;VfpFOc!UdUpR{=7bQ^^7lE=EeRJ6X>Km{XukZ|ED`x(q zv*j!9V7}rG<}2Qp;49v#_=>miTQy(tF8Xh48opu(PZD1-^O2sGuNVg)Rlg&`R?J5h zZ2w>@rs^G$>RrIqI~%@U;p<`oqUxQjhvupJDx%_Dry(l-x*{sR=yTiU5D{Z>{KGa; zwsJOa%~3?fTba+dF^SK&IfC;MK)fv)oC z-`yVlh8Ju@YQBYik*LXr`Y{gaNs}?NHP~AFb?pCRbm~xKcG*uCpuc7_ZOTXl8s76a zC7lh~zc#U@x5Zn+c83`}u;O32e(arsOR5ZRIZog>h1(EPEXJI{k!z1qe>EVs68{9w z*v@tMXT}^n!D&$*LDim9z=LhE1}@5Rb|pMrE`Q#a*p-FR8pWd}4y^xXr|%A9-M@Qv zGDLW-pfjA#X}riQ`E|;8JNs)M?rz#@y30!rgn~O%c20IfDsrw;`nRMJo~Ok{1*Sb< z29D8qL~1rM{qYEI3jML-45k6}hoiUnAwz|v{tAO|;HXv8X2D+^oz5)6;lL>?BW7j1 zUlGl0ROKZ2l0(sn%;s!nyaW2+I~@LC=9MYyCq0d+lOq@K$qNat@~&rYybJIh9!NMN zBA;XJ(((!CUY;uf=r7R!g&0{sxRb9A*R+@<0MUFTMj~Cmg~^md8CXOzksFlD75=rn z5kef?x#Eb*?MWTv?m0>Bd0Pwr#$$Y&4DfAkok-^6rjVl-`OM$w)SpTfnyGXR8qf?+ z60h(i&5fH?UeXvFNoObDJ>yNg%d|UtORl8#pu@~)9*#*^{x`%ve2Zch4%tUY)q#uheQXGAX$!djk zDtyLCSc##((9xES&`Cem6t|Y2jQAohBS?UObz&#KkuX!Emr? zad}1X4P*6wG%6S~R(E412=*DPJJ=Myu|32c?lA+*0;;mX{P2PtCU~C0RgV;f*j!y6 z{J_{SD+8^1n9c7I(mN|7b~9ij!S)*GIEC zx#tbhqP&Xe}JmwqnX7p6xY3x!Rhwkqt1RLm5;rwpL8%}hh0J%X+QJ= z8wBiSgGknV?QZv#u29s3O_@~SgCXPEX7{zd(VMXRl#$N2%`~pcNxaD19eTA z@X#^`+8W)N6~WE-apX|urXlrcGOlflH-+O(c0b*=0(dEC!tJorw8bvQ33Nf<+*7;- z_TQb4OQ!uUt~SB|7c%BCCu(L<@T3uaN2&Ms_Sz@i{kLmq|NVpXUzpR{rF5U_vF-HA zcGPqbdz{l_dyH%MxUV!Pdh8|DW6rgfM2~G(J(egj`fcj5_mX-n(Nmj;yq|iiU3zLT zsi$I~IcvW=-?Za&YY4VK^c{B%OSmZ~`$aI4HDOYPmibgXd_GSm?m)oi;HRC}h~JjR zTXoh2Gu|GqYxRZWZ9uG%W}2BDuG{F-gNw9Uh+Qz&mw+SOP8__M4=Yp@F{3xdaRA5i z0dtldy+K~K0QH*%ibd#0oFxGoQ!%GcT0P}toKN_?8uarSpI3`wwSp9@>@BveKJ|^Y zcUd(T)bCjQRjY;-on|n`V~q+o9m)Wnsds}v$1`nlk+pbq*xnu=|NZlFXk9IV_f7M7 zKCgnUWsyf^J*qi}Qnm=v8ZD11Xx4eiY}Am^Fv@O={eq`@?6+EVb)HDXm(0=OC1JbI z9bRI%!%ODPmFSY+>FAPQjuB`N=M-!ZhBrp^{KFV^&~F$cC&WVSpj?_7U2&P^vWB7r-X zsFL9#K>orbO8z<}q6Fjn=SP&VQ+1*zeME^bO+-l=y#AjaQIZsxeGVf^5>eU1M3kI1 zD*GdeDA8frX(LL83(HOyQId$u9wwsXG;!JKB1$AMyV^HwM9Jv15hcDqF`^_9oBd}+ zlzh0UJ#0h?CXEwO()(KuBVlXS7XEx(g_J0AC5|Yu0!KC4+zBp;X16)vf;zn9jzoNk zn_sEPcyKcwt%uWz`IXYgmoUE)Y`*Y}OcOugODekLAX_KyU+0zbe<`uVh%Px!L;osX zbIf?~H~gAsxclpsFZ*we;-0>L^XT9b4zGpCFWIf?o*G_KZuskUgmyM&SQYXq9ah05 zJC}TmJAvNt_Ody(U#f3hoQuj#9#DR>eGIx&tUpx{7g+uFL5W>bD$qH0;xflA!caER zEi?p`FT^^T=t*-*9mHL~U?AVquCNltrF3>-C8~oo;VyzUswbYG99H6tNK#ZuVp!6I zm6&X5;j+?(mAJ#L&pxcgsq7?IWpk6mO5By5Fid4r!b(iVXjDBhcW7nLF0AA`A4OP+ zXmRPoNucVnOXnpgoMcx@ILW-ZDFz#fw}!`yxoqtdY2&SN&77~|t!HYD_;X{#AoHv; z$ULPr;tR&;pp!8Pc7C>foE$Ax507)#*hakX zspM)yB^H=_qooM*6(5nt=|9O2UfK2uA;VoMb`e3m3nJJItYP235Zwy`UgbloW`5fP z4218kuwNDkJgdir?BjX&R{+AlXhfH={?Y2F!oq~VUVzir4o2)N;3OS6W!*#3sFhMb1&k9j6Ybazn6UtkoGPvPK!-|#6MJaR_+0AZ`dZrF+kumNnP z|Cl(YTeurFg{Pn20$N%(k&rH&uPaSXv;s*W?r{;q__fg-6^ghQCxvjoYsJQ+`L3I%o{u@!zw2nD3xw4cvm_t_{CWH z(75W){%LX5s&1@e^so~Am{x+RcK3)7I!f?%5keK?4;FS3 zJRnjSQn}jcxHZU#fvlhBKwIr&*KF_8IY8oa?9jvXIUL_o64%j3k-(|)k{uD!*e#_5 zTY-Z&M6+LmB?P-i^qXE#7zt?JZGW9SK|Aa|LHg92;;=L7S1E0E&CqNN8b7L%G3;cq zwt}sSF>D$)auSUf=@>=w6Jr*TziFdnl&S_wS0aDA!Gp7hwTB*|==@zG8$%=Ok8lK4 zJtA;X4Y0$y`XYN6*X)*tES})gEirwt$g)GwsQcK}|t{Lz=R_gLOIN zey!X}l{&Tr@x)cstV%TL;N6MD4@~#@aH3`(hlb11!bJdwGb80E&=vIGtFdKNWsbX; zIE|w@cqo{_vbspc5(^_G$>#)hpPo3(sxgw}m`*cF zECv*PW>0cm3v^uzhplU=tFFaoQ`b_bt_8_;bq>J!1p~=pC91Bdq#17!?NmpWFjd=u zQ1GC!{MxBCx8up?WN92;xj@NlA0G{Q+VdZ9-Wjp}>aaPbsh%q%$`8(nwGXRQ6XN9@*; zgPs&xywGliZppNlfi{=>>qj4C)6Iu0L`<2{P*Dat?lF(3#7S{FuI8Z&(MKVBb9<<0 zmWS2!R$xyNuh6i(sLZst!O6v)&E1b2%<$pETi$!A2Zrt~_TKpTPt*JDmRN(B$RE`3 z0OwWk-`X#P8*cN38@}$pV`HWS{7rQb2mW-3XMKuu^a0uKAk6b7!T~^^Ieaz zZnHNri$v!oS`4lF z1B*WuvD+K8cx`TwcbfJNpm!E=L;5c9NGSax4ZfkqIn&FXkcXiWU%EvF&SCN>HZ@x1 z%%CKqg1gPhuJ-azay&)_DYq5JLiT$h`!H2#d~~MQWFPJ~8dXy9{ungwD=(tEe~VsV zFlYU7y7gMzI_SD}kZ-+a4Bh%W^eS}{hPwAVtKxBLo=W~pqq=exk7_7*h>qfi%7d@3 zxCkAF!+gmBfKpbo9tJ>9Ur(mT;U?z%FB>)UFDwI`Q-&0@P)2XK<}It~)eOtt8Xv#m z-E8W$L9B-#PhWEMx{SUBjCa_obJ4}eSH6p7v>%UsI`NogZ+AZ#A3u$5i_XmGE65Z` zQ>jHuZW*s9v|w3|D!N*njaXVt`^|v%leL)k9uA8tw72$tmAaxq28yI(s-^5XRM`pm z%&(+R+vDR~j%U+yyDdKcH}pY`ZQu7Y1piiwxAp5KIz;PsbhUEhwWtd0u}OQ(!@_-R zC5=Zvz3%eUyl%FB-52q?w!Q$pX`1jo8}-LV@E6uA>t8_*zPpObf)e^^)c1f9B>0w5 zzi9-DwtHxsT#w0EchYCv|1f=smd9!D3P&@yk>0)C3J%^gx+2(S)GdY7Y+ZGD6wRu8 zN5wnqItSxTv?tjufhMXJAvmjXbNLNj9px z*yUv8`RP`_Tn>2)={kNW(naNZ+vz*-;Xtujt>!}l( zm**Ac@HfC0QKO*Hfe)~Ov4b?;UQyF-+1uct2FA1Z=&@`)8=`aK*o-CQwiDZIDXjug z(_7MssiemdQ_9()_G&SL_a8U_1g`a7dLMMH?RIZ`{7?R%2J46Pq5iGKAJYSCx4H+m z?+&kQXpFA6+3L2Qxl(Ao<1pvC6Es4<#Z;rUOonKCB$~g;3U*D0xgHFEXN^ z=?G*T%l!0H{s@F5%E0-{3i&3!PM>Cv;DHPW4=n%J@?g`w)50~4;lR6LyfeF<>S6{O zY2``TAFp6%myws5CkkyZ^M9xi+J-_s=R;63W0##~MfmhPs{cPuAD)e$mq@Foxh&nJ z=3;<#0m5lX)|{5}&1w#Z{>$J;S@CxEN63%z^K3*+U_Gd7{6Z?;4;Az?m~)O+7o$Hd zI)wAZsy7RH<<9Ew&-GX(v?0_l8iB6;pG6r^N%uwUe_5IVZMHwsaBqP<&@h`6w-XMI zxDNwTf82N=e=K$2yT-cgu?kmlVvNF5^pAm^wh>#*tV{??UU`3c32^pVk3X5i{xE+g z!`epNgw~QqRvNayRhCf3=C(lPyo}xj0Bb`~!U5>aMJ=~q z;-K#?`WV<3scCr*!w{Fi+eT~|H7)#&PFERhb0*=;fZH;^84jm>Bw61?Hw|28RA#r) zPnA0uB;?Oz|1X`stFr#%M>z%_%m@^mRJ7Xc&`_EiT!I?`bJaZ|E{@W6;06$SFk%#+{{Su29*TD`cIylv!skr82b?mZ>ylEl4zvWDLJm?cfUw z+2(JpYQ`FhSl(`{uFq@KKXNi2M<|SuM=CL*gpIskVmU3@fhjnpyyO7>eVWy)rAF~l ze0w&eKCBEe>2}^P`Dn@Eba}N139LndwGZG=2mU;Sn;LnO$g5qzg;nxjzPSs39>Xnr z)h$c;qTGmx_u9Sq^CW*?$bU=u?-c%9jEjfx=P6p4iWuu*!OkB`a6Qu_F` ze4IreJLKcS;6Y=QeE)?@^R6M{{WXT%eXb` zM`)N)xo<$lM^5tD`H3n#cTc>5-JBB(&B66~o! zv{pQYy0NHz^{Kvc>D1LHS;n|i*YRgv^=Fl>Va~H?|I^Zi z;o9#@KcXHLjjA6Txg3FqXU+acS63FhyK)`hqKoT7aqm8s=*>#qn@DPZ&5Mtz-mK)_ zL__fiy{ALo^QP3~VgAmZcj{4wn(;(kj=$8Cl}=ACaC)*hsV5H&Xi}7~A}GEJxT>n% zbo2Xgq7*GuI2PudKSe(ea)nCyH;z`PcP*3(RBdM7&MI8ybSuRhokzFPoH;D~4wZ-G zR(kxTzB_L=TWvcyUf%so9|HwJZE$qih{c!T!)x@RNZmMZV{hH7P)n-H1&~IyyKDh> z-n?EY5I=nsUEGe|?&Oc#c}^R1VW!7OWbL4z0aad-Wfb?u0D8FW^+!>_T)ew#KfEV4 zVgaj;f@6vPCF!kvTLSyDCO#@_!d{_os?0i1ewf^7)(vJZFE^uQA8=Ck8~WpP`pG_K zcZH()98W{KD*qb^bRhqAU#vOsmj{N|K`mZWSS+C!G0#Y$os0OCM>j- zbD`{&)1P@4b<_P;u-3PHoGB3MiL#gjM~xNu*!Q5DVY%{OG?!X!M$7T}l21H>MH|ZG z_;1k1c#BQTmIbb+6IXGeM=l*$8rtq=)0RfCG>GRkIYsP zH#&SIWFN-a5}_?&yBAh2MB!A}-4;STV2~<9)Xo%Im5bSqTwec50{X%D>1sL2#C@DF z!&rCR=i%UEwzk8%zSXBSC()ni}+uMxQ-=`0~*`twriVaM# z>rM^@k07*9iY{pcQy{%lAwCkd0ivT&B28dt0s;o0=66kq|q}qWJJ1}C810@z{?JPLXTRG|z$uRNf1bmKtdpt~! z;jO)5Kqw6T5g>Zmx=}5Zf(*&6Mmf%-LiWJ?CJ)FFxj`|Eu>Nky<8_nQGqyA?j zMBln;P<*iTv3k-VXiR!=54)7@5ln_62_~tf2f*ZmfbhBd5&p3e~RMWfB)G@bkJ< zt|Rr-lFK6}p#=td`Gx$#}4x zZHY}D#ut7IUPLe#2PSTMG3%WK1xLv)BN(6fkEcp!m_Rf-G`uoz7PYMfIKdv+{$;W+rmgLZ-lS>lLb=vS|G-Uo- zi2?N*||w=$P+98u%VL#_QB;|FXgho z-LE^y1ZSJ6Qvv~#uUKU!vAaGuecj*J!@%(zlYCtJFWSwnf#55-K22XEyl@$gx5V$?RVOMOHyg`kHz?^b5TMv(gY)Dk*O#Koy7W(GY_V`tXPDuIm zDD9zfCi?yaeRPlq@ix$gDh{{cT}8#l`tQF7gE->nY;5>2vCd*(>;lFhEMjG7rAH}4 zikIeL6{b|YPV>^pst;v~xfP3_QQ3C%makL*g+7IWS8%eTIA|3^1y@_4hQg9Yw}PRr zi)A$Nds0{#eRuex8MLtKO}w+h?yGR2Xr1_Gj?$fHs=%^chJw*gvM$H7ET?uXTMdeA zT9q!u;t@C2mKn^tcKJ1@=vQOy6^3APD+QDLNrN}D_FjK$QluIz6~N_MP&BP1T<$Cv zE>}kkYLtY-J&J*!;_ep9&M7~h>nV>`p3?dqluV|8Fk8a;U=T^9C4%g#Ov zyVJ6CDQK?#Gg8n9N--&3Xu&BgP&v=NlS|6Q0ZB6|BV1u`w`y7>0Xuj?quFg?z`5H( zfdl1s5B0WyVMnX*neLeB1h%kSGT$qkl7L}HYxtMf>Ao3B)Yj-eCf5lmO}X}okgdZz zUohjF%Y!fL0Lv>!qrP^F8Q92jxf62vNIu_+AHy|U&M25>bmD53OyFzthDzoP3A~&! zR5Do^8Pqpuz-r#016WOw%ot0iqB^Z+($h$ul1zSivSjwUC9}^ZnKPW8btDr#n>V1- zQYUxqP|1A5)iOb=r%0wETU9qWEla@FQzSFyDo~KZDU!(rIyX24CZNJ;Br}$f%!Ekt z;Qqf9$u~qKtr`(Yt0o??U$TPl8_{oxNG^fr&u*~-?E*F544GX20S;jt`P)PK+F&HG zr$Qsmcd5u*BuOXLL@!OBKZzS z{i>|L)gA{UUTw+f`<$p>7Ri3MNFM70{lqx|z7L#B)cU}=L#=C=`8#fyIf)`n3^Jx) z=D>_`W(!jqz?0?NTT4&2Q=@0R>sj>60XUotQu0xth$y{ z5qlkLa^)p&Y3dQGRmfh+3wmI8$QIVZa5SHx<ssA0FGI#2QsM84e$v|tY(Bg;b^moKq^Uw$;aa-j?d2;zLaQQ%z z+pF@$0I`C_`a<;RmvKng*Y|sEZ<1jd!#zGOwi3o9TD~wYjA&-6?{R8e)LjGaXv`b= z@Vv(fo9q&E)KndfdAW+llx0wkBh}-4G4&#Ftg&of=+if7;k+=h@Q#y(H;06iU-Tlq zXm8zf`3@poCo?drzR%&Sszjrj)AH=YOa`%vasOPebeYEunE#vFh4w1QHFXs)KC>@` z@ZK!aJKL!~lnSnnU+guUIXHrQ{Wr@D8>8p^_4-anh@H@Y-5j#|9Ns6Dmow=B47*QN zUJCsiKYR2zLbOMfJ&!0Jt-4FRv zoS(mplGxP|z@3QQ*^1uarGui`koh!i5Odzh^@Idi53w(@IJ6R2c*s5&e~U(;%Zfe? z`Gkze?lUFubA}w|{Y62>)kB-EF8X|I0gKRVx2!sa=7YrbLU~4x&|}oII%xylK1ze| zM=`b@`t0Z3*m`?SzBdsD@G{lY$i3wr%=Nn4odGcHk zTYy^6NfrF;i`{asX9A1AKhtnc0($TQC1Zw^=t!7Udyl>512%7p5h8}pmTI$(TogdH zA(mhD=$`JoKe^s=<0Pp!>)b_`#=e4j-=c+63%h>~YMsH> zHm>s{!;6)D=@tuop~tKmfW3X(I+Z00WI$kGUFcODgWRwR?I{X*g-p<5bH`O)fy@?? z{!l`CWrr2qYivM13j{7|BB|eagdMPeI)DkluoZ*JC>*`Pe?v6i6Nyfof@?w;*miw% zGW|4t3X=o2xX1yc)0HnXzb=)(D-$9=FLRm|4TJB`?2=i@y^v(;7 zg)7=TBu5&s&(DiYfHyMS%h>+^1ozSu&dL@JcHcMEs%eh|Hbq2rr>gD_M{n|GyvLJ+ z>I2i?Jo>i`&9I1)yZV0jA&=2Y<0I}z}2?FOShQN6Vioh~J&*zW?7IL8X8vv9$ z%tv(_3(dJ^HR8PAG9I{Y1nfI+8tXnkLXFU;l5+@t+>-*yAIb2(P|+eD*g?kFc9sVZ zmm878<-u21Ok~-TFosakLQW>=yc42pnSq@c&RLu%0>fWv+HacRvs+AKT+?dY+E`KZ zf@yz%LH1kGN-vEjjj9ZOB+wX%PMt!1$;8fPpb6g1Me%0%I2-bdApg{@xxuYQ6k>-j zqwKBG{815mbC{Ib4KJ}m*WwnjCp^Mc7QL<@66kS}mE91{{_aBq05}`PUA)_oMvBe2 zJH*s=)}T?mH)LGfHoL&i zE`pr;Axs63u1ZKOuMievZikE?-hB5z+uPyOcw8?K>Y836)YreX^)P?qN4FmSCA2Tn z@{zUA;TauAXRoz~auxr2*>WadS8+H6AYad+8}6VRY$$4wpn<-?UY*==}oSw~9 z%UPLT&YsQ`=z>Q>7k;ED*c*9lE_&>xTs|$W@Y!EnZf11EvYs2E4B%|w4t9r(NOvf> zd&QMHbPF$&9I8(!O+#u7{4nRuvA<3W^S6q__RI5Ibmk}H)&n}d6HL<$exdJ-kS-JG z7S?gbole)R?(+?~_9J%{dgdpq!#Hf`;NOaZ9p!EgH#=sXYAD>7pn%R+{R~TwhqK0EXB@|7~}Xlpm{ayl%vhYFCF*3@-LP>fPY?2DLr?Jix8( zH0p0qDXba=rmSw)3z@>vp?sSL~BZ3WwmXhfVUcOm2@yWI-BjSlaP1m3j* zUFh?-LbSuV;x|GFR)@g2`Wr279T3)~L~n0R?(Io`YHu6W*+tyd0z$|ya`iL6kvlul z&#YnPVqGj!UCw>GBv*QJ6s~8)%Fn7RbEPZQGei3lT{zPh=J-xn&t3&38IC4X^s2z_ zFh3t!BnrEXk1Mk{3VQ)ZVK3r?%1V!TJs(mB7OW5)`qKB4_w_O4U*6Z~u>bFUH#!XQ z)fILZ$6>nZzyArEd5^K~`(6d(YVam$dU|PeG`+8}u3in|Z(0{`6HU(y(z!9RFSvh2 zJ`+}JMXwaKyA6=|i~i>uIUaZ;ny|$C13lQc3gXR?nhyItdmvKN!k+X^q_L1L6Sg}m zf*r<&W?mQ@!!B0v2l=P2aCC-09Ox$fuY>xPbon<(mv5$3@H?*c%Iep!$fg($_nUa+ zNIgsYvoHP4X?}(t#_IUv;b6yooChy^Q<~f2O>}+5AqYztX)dae;x6wz5r(%(7<_S2 zx|j*RK=GtwFUH>MzpZ6hvTypI9;4^LXl*wo5}stxm!aD$>09tpbE03hyI^PKEyF%0 z^ICQn=o{kxB(VelE>g1tUQlozCAQ&zRNL@}z8|#*2h!fk%esWueBKyBNgX49v zGdl6QiiX=scJi4F@e}*BC;KA$Avj@*yYYkwVZ`=(H|$}4*?JCnEG zmE&=3xsBnP1GFZ^)Xt048%fC!K3k(u?CkQt5#u{sE2S;mcuniq-^M)Cn!3oBSnzVt? zhFYxFrb>WPWibSdFN5@6TeY>7-p{t)ZuZ{VR&A}>6ZWu&Eg~+RFfJh~27%0X{?BvH zJMS!@NOHgL_tWssyPWko=RE8G(e7$4MRN=uh{7oJprzIOOO1Xn@H%_14~^eTn;duezPvDphpSh86q1!7Pxt-I)!DkyA>_!=ZQXZxeaZ#g1K|a9ZQ9)ziyDs*8 zWMQ98sn{K2YP%6`inm_oms|1j>v$Qy@s+RQl)Kq zI38X4uW;HUc3(M8@%o7%aHP+ws$%bzr?aH@%CECH#9P54lZywIZe5mK!;7=H2L*O( z#`C#Z?3_b*?}F)fk#Eb4EOtF9W7m_fh@aspl=vgb?PQ8V`j5Gt#GFt#C9ncW?uzdK zoRsF?K8E4olpk@oa=}q9C-5pcL^p3GM2yFCa%t3O$zku27<+S*h{sUn~*M@tfl|5DReHpNQTRqX({uiqXL`7&?!NUlUg%$z{cIATeh?=hh9jT zGo4yzNt#YC#6k;xo-E2Ljw&Y?S#DE@9 zP|1u*Osifor9DJxzJOSfG--mHqUcc$Byp3HlRB@ENE_ zS>Z9HH3N97zk#dKLpR$)i>s~rj;UjVp)5o%II{@rD>!k$2dRLaoxR$uJ>Vk5Mb%+2 z8#@=|a&Q2s=gzSXw%yNa14q%i@M?lc(`Ib|*f6vq+RCFcvLNA$sy2SSJ&n1-Hu zS^@3;N9}498m*(CJ@{uTgMfuZ10~?xw*Wzn(h~>Z7o7I z>wLST_iNJG;T%R6T=h=XXwdsVs>Y-k-PQRVzrhg%Olo2*z2xN3V3UKn_}jJLs&AaH zp-tra&ADPZJM~^TQHY!6lu~j3-M0`;Q$&GwT}LE zE}(9)WUeK;?{aloPafaV5`{^!Z221|SsX|jNOO&hn^ zFJqSYjnWeDkF&(zD+TYfwa3RNn}J>akj-k3mn?g{UA|b^=*EwEJt4C@(hhM3|h9{ zN9UymKTCx4h_`}S@XMrM6u+F!Awc+~oWSqPGXP17Yc7MG)-?we;ou@1T!cdv0sV3w zd&u4yMf|N7Fau&PVB}H*4|8T7@-7zyjk&OxivbOIb}S7bH=lc7(7iF}Zh?iD&G6#i zo9yZR{W5T}+(vEVziAx2$n7&Rrgnn%7)%HxLe_aw?=G`RQy%H4h^punB29XaZz{uD zu>~-WMf015XifpNNLZ9YG{-Z2mK4ozSEBixES6$f@Mes463ws4lA$D%vshWSOzGP$ z$>LS^fL$W&jLTw70%9nH+p@#hjeBcrSNOqE+KI1hjW;~R& zHQMMkxuh>#0 zo=F);a=OGb>0p7NAWW5a=IXP~JCj_TCGE^wdmI@|}nDLnRfDv$jVDMF|6*pCl&Nc7m>r9Aex$2|54 z8X$C2)aU8fLI|kv8OBL!U2CAaJz(q-+df*yd7rs~KKE|1#nh5BTzbb$pgrt| zI@D`CfN2UCtq5GGCUD(3e)qP3(IyW6d{~nSpvT5=fAav2D8`3jyKob8I(b(gxiA4u zCp3N+9oyCI$VeN?XtT*ri^QulLgVv-fIbr!E?l_8g*cwtaa|x@5a)T`jL_tw>7gva z-ZZ0h(aJJ>H$9YF6f~~UUPRPfwS9VMstbb8DvN7*oAzJ^wzPU67vp@WUnh_4To*aN zj=+>jh?6JC!CXkXmy;9z)Db>d=Dn2QdUm%@tZGWIuC0W22$ye@_-V#&&r$*K)|88<7_ID8|GcCX&`HbOYG*JexlLKc=0y%neklv79x zVMITh1WMvG48-Y@UqqY)h_4Bt5pEp#|J=nvW?7V*Y5Ad z!Uf1vdwhDtKyM4VMjaA4+_%x65r9^~t5Cy_gomAt9Xq;UW=`vGiHy}wcCN};CH)_cH+!k3tr1u>w>G7vA$}|sZVDxc-hmP1OjoF?|x z^^DY`D%}Kg#}KE9TQ-=3W^?1CEXdDMLiOTzl~7&tZcM0FOgQJ0xUI(z9+GKZ z;?k*-U4}gQ+Eb@fEl!nBb)O2X)UEkct$~&LN6V+Gq=$_kIh`sQ|2xIS2DF1fD0|_O zon$V$@+{0nirL?gBA2Q)EtUS!a;ciVN@4E#!r7a9SaM+d%tmV-sh5<@KvT=9DiI!A z3XrLknN-c#%I((JN*QOGI=0er`e4*u$}qD*##YACs6LdCM)ehYTpHC!;?k(@60eD7 zBaJFNO3#!=75Su+<=K5hFVD7|S)OG9??#g%8zn^o^t8OG_vN9JXPbvsp0yU|l=5j@ zan6`nJ4yv52GpC05+l)MGwapn#^q4`4<^i54%N-P%bYfcYKbL7*mjj6tVFG6XL6u) zN#c4=Y#q~PGkLQ=ZYEHD1Z#y7sA|rupSpI8jX+ngS#vG2r@kf5HF6Jkzh$OReLd(t z<_&$@j+Ci52kCqi`=Z4kD^Z+!j~MQ^ZRGhz7Afkqk_uF6Ew_NEn5c z8_A9%s0lemw3QdxiQjH{Uh>;Jfv#6yBJEed;XJB4V8IeY(Iu*XO?&V!RQ=N|N->m} zwt`M3Pit*0(I1e9vL^M?ED`1p=oB}{PwJfwY3BnOrJ6N~pmrs(j%G||J*5fmOV&*2SDkDXLf6YX;dr%~J{LnUdy`)GBAQL`SM8Wha;Q>} zWT<#{Ck@Z4ZaRon5>uL64Eg%lkWZs5rItjd+p%HvVqEJ!h}Je^7$4zbJS2v3yJ+4k zVicrGdofMyNb(*vzROU`f zZ0d)mTWvQhVE2+s$c`nWtlqQno5FYe!t~ zTPE`6tCp0iiXpW4*8&BfV}5dAai}4Ey$rK6b64f)RfvSD;y}AgRiIsNnpDuIeMq3) zVWqF%Yfp@^`&7ypJF~)6QFimKQFcyCl-;`suqzEsZdBoPW+YwA{(}jB2?2GwB=!*q zs2dS9S}34yuPrH{?k6@GPDF7HZH$Yji+i-m8=7v7 zr;B^If#d1c$Hmi?dRk;CT}NUQ%uu>UgwnNeD4pJ*A&#yiBifE=Iu%Fvp0?(-xHvj8 zsLek^2%R}SsPpcpj4f~=|D}q$GM_2~k$FSrUjVfU0eU7;o4@p_cHWD<}habBY;*^+)V7ITZ(d*fdv_PV(-Ue25h<_nH znbqo{8;Qt@#Tde^T-Tm%DhXwklHu?!Ebb zZ@*S?#i}olv5Aje?=^)lN(VsmdvI6w8#@>&7?{|VeK4#%^fOYkHu;Snzq{Mt^h$cb zz0aTi5}1-ui9KL+A(raa?YhwKT@cv)G*0Az4tgk-;B!eM#uFd= zO_yr&3#{p+$Ub-z5^o5J`w&aqrN$vclE646a37+LO0WESOZ|TBfs%2O2&RlwW=NN_RaQ?zXyL zK%H(*M?Z-(Xu}q_&Ze?EuTW09D(|)sxyhk_g7+Hf&<{Ac{p7t1vHev)3F>zeBHWv$ z)%(ebw}1eH2~!$~IFQigo<|$rZfH1jJ9bTP!K^RTMw|9&Khg!7^q&fve699c6QSF zA**!$vPC*49j|VMJ&H-^3|=gmc|9fU(P0y*D2)N)Y$>I4ex4wl>&Z!@Ux^jRhCN$K z>71V@2PD3Z7 zo|MpaQc@->HS`oXTr340RucM4AVL?lYDpS%Fw{&7G43E@yxeXQ;*m2`p#{0USs@gfI-=fqIJk46!XraVg^}10IVD-e4Uv@lXsXfb{a=Tkfj zX9TLZ`lC(ce-qdIXk#FhwMh?6U3DAphf-h3%ElX+4yVV|aE#+RbJReb8g3w_wsa^; z45&AgNMPSb_P!xX?6&TQdxsLmb>C2BT{XtsElaDnLXF@u^^w|L^;VQR?ZNG&4aNkC6lGDV>JvH5Ptmz0UQtP(3eTdDmaguJiNZI{#;z zilc$Cw}%X(2W^p+Si6&1JwVEx9(sPjGzK4#Z>pg}2Kn9_6LAB{RpX270?^p|dFiT= zP*)*4rPDp~Vy|k0lqQ}AseJaPPk`Ec;c|Oo=6W$sMbb5cKYUpN@gLS!2JJjHtW4a^ zV^g(@kOIG0d$mz7b%}-S=@0!FMtE=J(`cO2ys=NToJo@0v}oOK3Vywnaah8w zDVmO#-#yJH;LLhoDTTA%mFg2`#xYrDa?4j+T7CrCpcTzy*tbf`r*Yq8HoieN{=(QY zaOQ4NRvwt*^AK32%>eY2%4nbREmu?|N?2sX2$LEuR`%Y4D&!xzUN{XzQNs$#wui;uD z@j|5b!}W}b$=@hd-Hgruj08SpH@&5l;DNVdO7NJ@=KmKwuf>aoGav3R ze>~PkxH!f#?7*HTE!b4on8{i>il?U}@6gQMd<(hm_mL93&ucUznvv2p7`=YDcN)Fc z1QC=6e%5Rxh-lOvXdeyjS(~;R?((tF`eWLP{~Rrqa*vIUh1QeW?g2R3Lp!&0bX*{P z4Lt6P#p&q@Yr(Kmt$D&rKL24+^k($D**JK=z~9DbQz;qz#x<)S9&1y17`&lxoq}4f z)2ds8ON)EeTD#J+)rHed{n~bdG1@i>$Qs?H)hC07)VQJow)FgxE%inW;E0YTh9 z!~xXT_63z*Z4Yq7p;v2%3>kE9fdFZGzQ~AVX7lV)AG1S+BwM7lq>$t@NNX9C%Zco0 z>ubMa3S}umk}D}Bxg0W2i}H5aDE{Bi-Y&f+H^n)(ScFRzl?)Nh5|pfDy`%=EP&=fE zO8zjlLk2m|#@t@;eh!zHV=0frktsA8&&~33V&&z;%1iKjxs8k_VpWuqlZh>Ua<_A6 za-9E5AkP0K*C~a`{VFz@Tr$ax&tZ*CE+H895>uFjFS&_%KHd@6K;qmtk~H}U1$un- zGl*Wq}Xwa_1s)EOa204B#;W1(b=@yKeDM0fj* zfuMU=FqF~bcb^IvJ^oOs==yupLs`dz?qjfN7=1zaW&i~Fkl>uN!02$(e}>~>+^n;= zdm%FvV?WGCRwT?=F*vYRZRI=CQg`_%@%zr40d3{WbdWk10p;jl+RE+xbAAqfzo)Hi zwsVk+_z%9n17Z_=eC=4;Q9jt}y2f;` z=g?B!SO4aciHZP4$-0wJzqT>frioyVuA;?W)X&Lu zAX??In0iY;vf+uJAkB#irZI*Fr{U%7Gz z#mizLtC7=zGuGtrM>~k!@p>MYk?8+@GF2q{IY>$b)S3hh&&+T_%j{N#10k zt@vD-H#T5G;9_3a_>}~BKl1O$x%rk`^;?8o75aUCBRaMGjbb3t8ks-&?pT|@u+`sC zzm_a4e?g+*fN|V!)ISQ`J!DO*E%F*4_#1o!#@=9q&n2V|e+<8`fe0t6J#b?dgpCv0 zYJZj#C9Vb(7bLUGIRrQ}aN!tY@oO@mvwRildh^4Zzk_LXj+uWUbe5U*4~)e+=rkUn z{xp5XvsVl5Mb_qN7gC6DX&>@33(@1HC13D1e73OB+wd8TX$^HKMBOOd6n?Ljhjv*8 z4IH|wSLw5>#Mp`2CiLVYW%Dgguv>ZJneh%WTuyQ6J{qiUXOsPEO0yho_gA+|hx&&p z0dusy;iBoG@y!&lht$dh+e^W_oO&6|9AEr{5;P-dYpN*2^|mOg|2nPw@^%D5MWY0| zksM`y#nhguc+87@ugh$;e|Lpw2<#OKfIKj4=*L}!%K0+m6D>20$E1oW-bU> zCY@iaF-zfs@n+G7H>mi-8|44+Qp!HOl=8$JV)1Xc_+Kz)WnuAupZI@(05bQ8 z7e()z@UrfCUwi1j5wt5_=$<%6?6XLDeZ^Cs7(>uC;ZKYquc}2E*n*Gvt6RkOn-d7F zbV^60f(-JTZzKc(BzY&naydS$ex00SUl-&1j-ZFDgP))*#r=#rTrQZ6@~fA9f(%9F z$Hi$ypptjyFB0|I7?mO$;1>MF!H#q=ogLtyJ_*gq~$|*Mg zRB@=puHA}o)a>9XS`~r1C_GVo4+KIt*x_g=$Vl^b1&j_+&&?0`#lbJm1rnU1j3V=jP{le_vEtMN zv_vw$jao1|r#N4Fc^A!S_N=FZn(w$Ma;6|kE&ERVb>4|`uvncSRl#vkz$)4XRB3<( zm;R}r=~HyLHA3`UE+ub7)l2 zSzk9-6y}PuFHoZzmZORxJw(GfkA`y|4d)zlIOmzeSzsN`a6hkl(XTL7CTO$bEhs3& zj-YE5VALa6i;s*aI56OhSG>^=yg!1pYC#Y?!k0nQT@;y+4L?7v0?COxb@>*)+9a0L zQC=Rr>y-Bqhc6n7O515!iVX+CMP(;rU&${~6oioV;BxX7r_G;?EapeWg_{GeXSau+ z_y)M83SS>KYv?@hqZT_aJa|4WX%ZkNG@g$^N1HMa(&ZMp{K5QGVRABG6ZaWjA8@yk zu~gUq7b19SpH^`IyLP}hsDqL#KJbxDU4h1z_sDc|nV&tMNMV40%(CwT3y}G5T*&2p zKEVX8S;CvMvy{U6k0GT0SYm#hXAUxEO0-|QEQ+Bxj?NAuWAICJsK3Pebm7KtEjJGN z>-X1={QFg+lt{Wix-r_Jdj{|QqbTt{hmQ{~XRQ-*mNql4w#@7o7xLbf;yo`S zZiAk0<=i{bZ}Psjxj8X|a!Ag&F?TIAG*$4;r;DZAO= z;`xk#BvO#UUb%~iTlN)EWbnFl85ztxt4ndQE@o~iAh<7G1_Xm6CLssBGQI};%<%EG z?*b&lIp)8eL|dKO{eK*cMlq5b7L29wiHa`tJ|=H&(^jq-q%Sfb%H{*9v3JFwl6$UH za!>E2?^+;?OhEf=7*5YFhN z%tMrIXhvu%u(h1Q(Bz!yGNqJweMTr>+`2p`klyHT$jA>EO#s$HB}v((0-^DBG9nBR zR~OS?J0%Gquq@acuTo%HfVi46fS@5p$toe)nvk*Z*%bL1r_Q}f;bYNP4)v7@j8*#p zjaMwC56}eipxtsoA6<-0RK+S2)sCRM#c!funaQZqVklV5Y0QqtzuHGQ24p|utW@*J z=;lRQDxTXo+gicbP0LzA4Aq|GT>@l-U)C}*oDBr4_a#I$%!z@s0rAiaXZ9EEGNJ(l zai)ldm3HaEexIEq8ah66Dk`Xi;u&-m&rl=d85Wt|`La?9olyY{dgykJpwXV*Y_uV? zfgHjS)X<9n20sNg9I^&Ayh=e0m;TQf4r+K;1vR{jpoV}M)PQh;z5s$6en*A{LNDtH zR5u0P-Qvwtfu>i|OWpf|6x|@ciKdEhxbk`#;czzb4V#%ANsMo3<@kmU8Q-ugIlf^9 z!mB8-rG^aCv7i?YbVwRXGtfZ|EiU6=&|piJQ#tavQJBf|%oGQo4EMY~7=7-O;Q5Wl z@HX*7PY0>FIP(ErCF)b^-k4WvbekFw@ygY%&yl9it+ud$ev={#`<7 zAd76{{5i;ONq`69$4#KzKhclv^RESpPZ_1SEJKbXcA_+7vy zBo#CRu#3&~cWF}n^Pg#a)GV_}Tl0_7Bs82&#)>RUV-qt5!KSVFzW5pbu4!Txe4XdW zk^)Ug4{6Tr#eo zU!SI3>D@iBaJ;zpgYo1zvJ0A8@n}J2Aw+bxGew*H(Pj!}6dhSzE(!+5TlF4F#6F|1 za6b%wg~zVBQ`7sd7GhJKD5r~ZsuP@LGGQK~XRs4JX`Qd>Xdl$JW6|(RnJ{|dRHW^aC^hdzu2NJ z{%E_-el4QE^oG|{nLkfkb5)e}vmgV2F%m!{j*KD-j*3wXd!ekATSZNSD@HE#lEhKG zlW-L2wpt|gBYyoGV_v=o`4C9y{v&9LJzata;{*xf@`mQP4`O&GIb^#zTAB*a1kX%7 zlMYSdnfy~@JQFe`iGL}%0@l{gH0j9k?;88sl-VVo$#RWXUAbMZx*ClaSq=Mfd_x1C zNqj;C^u)w7nG@&AG0z^4XTl~eZi%JY;8|~Sm2-{LB(4U?3hY4 zugyFdxjsdn`7c_+TS`7!o_T48EI%RYC{pMfr_VF5&1@stZ02Us261(~_pmJ%Q;8JK#5zJ5-&e{O8j4-!*|Yx4*N_xJlcE6LWkp>R(KgJf(H$0YIGTPPO?T=4G9&# zGxSs_BdqQkl=zWFG|g*l=CpnkDr8(9ZRW0sHwMdNW73LTl?s-}7B_GSUR{y~`#JZR zY*sabPmTT5yvGu#FoL6Qrg$E@-j4gBEJ156K<23nXK>3Qr^Z?@1lIBQLyKM-%B|Dc zIZ65_)Ng0HoSDt>F6h(O4xM?(zi_WF(j^!(9~CrwVr|i4S)%UDldKC10X( z$fkG~DnrJ*fH1Q;-UWmSrGunQg609jr0Fm+-p&SRF~%RLG0yH!MoTS;3wDV$!_qAW zH`Wo?Es4!jBAxvdHcyF+b2)u^h+r(?V3#6GunP*xHeXN#njIt1QE>#y(Jn19d>(l` z5)J&ANp!U&(STd-O4RBWvXg-PZd*%uJUQ_WV3ZoJ9&s?DCrgMWZsVBRcF`G? zvFnjM)*CwEzz>L1D07iAjH6%#2~iNt{kvoijo%Po#bGe7iVtSJg6a-y4>nPCe~;|} zqSo&t66R^^zSs^ucbhG;j3Gd6{SWNV*s+$fL1m|9ziG0ryDwF z_-qy(?ugVuO^gn=167p<@^&7`ExmK)K%NIBKb3L`N*P5ji*F~;x0Zlm%s>tH$wf_3`^Bri) z#lYraEz3*nQB=7Ddg>#0f8{xfocR*CkKF&lvB7PYJCo#QJ4+Q8*Vt&h;|Lsflj7yH6P~Huc3Ex0Il~X_J}nd?Y10hc;3sIiKJ+ z#;mL!YfHazQQZ&b*+V5!&DWfif|XE0;Lhc*d!xo*{ef=mEj9X#qxI{5aDmirKTeuN ze_d-09G*yF_j0Dq<{8vh@6BY5f|*Fy6WpM`Cn>tuWwLsq(I(Xk4`s4A50#5J zd@(36AsZVZ+pn|5GN<|)G+#qjes~P@d3{>2&-4D$&(xi;*Sg$;@LlQ98@?EhgOQuK4kp=CH|daj{he5W@p^^M@R_; zOHMyBlxwqhc|AQ#rt?hDEF50&Z<$23H(m934T~@w%(QGYSS!kV;80Svk7J& zFL=cZ-?G!-1*_Wwo=z=v3uzb|kt2ZQwqrKVdmXyPNqGatZ-BstoDI^f2=G*YC~Ns` zapQY;ANZ-m;^=4K$V%`Ma2nZ}V&oPNsD3fe0d}$dH1B>s_G-I)wc~WfIzD2t{<`Ko z^(sp;zBQ-@ivjuO@%6Zx8@p1EHu_5%iL%2+-HI%bu#E>{50=U z+J4X0CI3#RT4AGDkXVkrcb-&-O#}HV^Kw(lYhH5+_N&D6M>7pl7Yd$i$vCmg+GoL^ z82fs(GhLiO*aysWi0toq0h~JBUSpfp_@2kc_jX_pdbVq;Ur1x)dl8w#o=B6%_n)M} z+~&9y`Jq$@)*x>4*n4ZL7h#dh~{zA{ngvO4Ng(s(nW#l zW`7jha&Aj7l+i+mNQ>XoeBTQ}_x_-<-tX?xZhe*UJHS7cQ&zQ^=?=zfuiQlt3F$0E zIg!w4=YkR9Z`ZsL zw`h~5=EFNilr^~pV^rU`}SbUlwC)_oXzl@KPrEn0!zGu)0heOs)*a}>z6>~BwWJvGiIgL3ky zhEGrp*+kQ`+ob%s1F5^s8$xV&y0jWz02c(s@P0=OFCfSR?yl*g-=Xi=Z(AGd&qT97 z)SHRc-h70*L?ur0zk$~4za)^J7+A5QoDHtt*H2*q32IQ5(!7{^L0-(gK<2v+<~wed zD4k`&>f@AFD=gN6rq)6k5Ej{3T1U<(d$iSy?QAVAB37#0&P?T_HfavM&d%Y1~0gH`9XYr-H_zK(y`J&}4-3h>vrB7nhIiE8)966ajr5C1CST9SDCz-r#I& zQ^Pm%?~(l65!U5%hd;DboS1LgYyaW}d})j~kSO?`o~4%us@wHwdmuEm)o2H8!R<;2 z2jP=n%CZS|ALWW-9OB(2ugP_)?01xcM+_3>U^4@-3w#atS%#e+s)>~M)MUz^R{IXwmK(68rbX^a{dP3B4uy}!ZUe~ zz!!^hnPIrK6;0_Vk#;IL9@qFhJCXRD-GaE#j=NW+&DG?3Iyyw@A zBSaw*jeTob**HZ z^-Y60}Ys6k#=OxPY>{$9)3P#$Q*bc$pl{812gj{QM ziPx6wg`<}k16JBkL9l-4an=AiZxMvp#v?;R@_O=+Ji$W}0B(BXh$M^$0D79y4rtz5 zV&iexru`us)IINLYu25zI0OXQhbRwT z0R=%i=hcbtmpHn-gkmd9e3KEk%GitXYlwXn3|(h$8C(~U=;(g9TzHLk(UV@dajCtA zKT}%`|4I>$b&J^2ea7B^Vxh83zqCA-*Q@Ew=+{<%O}Q-k;(XHno`mRpshyWoF(niI z1l|^ms@K!y)q-7K&u&EPdIjIJy}^l#q6Q~BQsvDie>5ky39&!q=*9=`0po35$m&ae z;IG~)j%P5_cg5t2djq%*-DH(1l$+w^s~}D!_=`WJX zPY;VnSsMi(4SxF_e|1OU_F#1zCdw%|&7ixRIH8N6Q7g~d8;CYWn>jl%0JGSM5P;r6 zPy3Ps)IrKN%AGCnT6$}`jG^cFhi1#-8*K&~s1=Eg&wxEy3Kq zMy8?}2+DNw7C6T}$S#;76-^Q#$4-?bLjTxFU-qyq@uTB$Q0~e`YwpUXUW6_TS>71J zylWYk5^n6G}k)2kG9GZMcv^0h;9}@R!=;%6SJ|r>KhRvK>q@5vf(f=1j$Z#-^ zdS%K8f@=}i19UxOfYjISLs_;PLRq~OnKSkf1f$J`QNOz<=pOWm!_ob^I1%4Uz}xbM zzK7|XJdxBjQaSvdu1#yB^qQ+Uiec_VnBXe__3(=M><(#1U1>>H)3NyLwH3OtlE5Jw zYsZk$w{jP4uL0fDCfy`1Cj0#qhD2cWw~IAbJ2`?^3E_Lz781b4OIcI;UopiIDMD*ML!KBHJ19nN)=ttXRJF)g`pJFW+TLxly(d$)mtfXN$J}CRZ`a*$ zp^YpUBmTa=AO>HEv^3ry+hW7}DQKKHKgvW=1|iU7t3-^E#puH)$;XV5DrwYnrx3#4 zl*rf7o3eh1CQ7AbO_YEX<0s0`IIW~JLrz$~OedMGd z+Ik71>?U&JLu5E4>{ePUJ1GY%7zQ*rR}DH)A2QUq0;6GMqzX-*iNHNB$a`@tSyfKF zJIoYzhk^GqRU+u~GLk$U~2|W{1RgaIo=E<~*EB`4Wj? zagiH|D@b+@(iedPaxpsuTnweySSOd@pKNUO0B^;4U~I}Rc-Jwds-1f*W*1ZpSxi1) z{i@IC@*4Y$y-HX6_XJzv9m_vZl0YUuDUn*-8)I74=hJN*av-&;3$IoJM5eEBePo1S zkQ@sy_6ae}*e)dcuzj46b2fU7?(i2!o{H+}Em8|6Lm^lTWW z2Wv#jk6V*RkVd46^ULqo9{5Tc*_E`_Ur1wXBG6MsT493<^Y!oc< zIq+V%V*cJNA+b!(hmz|laV<`W_Qh%Qa}i0omVRG(NL#hlM)}j)v{h|%^|>uVtP!t` zCt$Btf8xiR1(ERM-SSzpw(4Piwo6;}AV2F7&$6J`Sa`4advM_b>}>hPC{#XaTKG+r zwy=_(_~V}V=}8GaDT{mZIeOxvC*^TZ#?zCrq;b<+lk<_;rv(>k$>y|dDkfinb!V45;}_s}$n zdDxOcW4%#Z)tbSMT#U+t4A#wy9knAMjYcjYkR)x@x(r5rYSC8xSia5?5_tUxh~uK& zqAKy3*w)|V&rWHpZkL}$v{kb+sHsm<7=>uxVQQD_wFpN1q_*nI+@4poRg+}}Pm%`+ zDu5Ht)yH<36}-+Bh_4*70`b`?iP`WBd9L8Ie);-){Q97_YHvEf{*LH>I<;p7IbYp| zK2v+zs6C>`e@y2zfZD1jWx`6JC6WvAJjMq%e9vJ$y&}zeDtFDY`_5R&;XgOvT0yih46PVvixPHMN7O zA1(yHq2=MGubu>viLVN`i_z)u8qK=)lSZ5^4YZ@KrVce^PG@dMFvQ>Fw+D?Lzo%V$ z=m$8w-0xH9%N+8Q{U7m3(A^yn9FnoY)Ss7zzABjEH^|xTf&rivh+@7rpi?6E<-F%@ zy8C)i76z2q{Ef_KR&`=$lF8v4;k_cRG5xxBYX?nvws*5+km;TF-hXm|`vB0e*|y*U z0Dlt!lza32pclXqbSkqrOyUu2lzZ>Ki5j5Gt&h;!wOQbG6WV}8k}X_1iU4J@t0}@` z%bWPSu=sy-#0xvE_!6z~Gv|wH@94G(CDRq?n=2Yw`Gif7PUwk(C*&epb)Le#LY83CbpV=PuRlAI44%j)G z`FQWiq0Y~C6s{71(}pttt1F8_ncq;M%x}c!XM+eBru=NclNjFoY~*D^pd5^u55L~* zG&4l`i6KtG<~K5bwNRYxI zZ^M(k|9K8G=rgII3-^0Dx{`34DN>)16kz&|YbXvC29$ae!NT*jTVD+tSN!BlKz$Y~ zL@?c;owCyE13vc)6e?N$685TMQa6*2UuNIdEL$u~+V>N(q;(Pb{+Ofo{0=-q3TY&d z-ot?^Z9&c-Z4FfMg{H3ZhjQyuX5#GH>)KOWtU${1s7)hqOf> zmNpvOCo-i$cL!evnJDd?)36}u{;(yx4C6kJI&IEqhb1mWkB>`9Q5q-u8Fku}(T;?a z(W6qNjHYa4VVNh5CK}?8ZiIMZp|umIB?6|*5R{;Mzc2lSiQ?>#TDxw}kro&2c-2`& zJIdVZ&@{Y4_ROEbS_=SMMQH9puzO24Wr<553SBdoE|0Es7wQ+i}K2BLhuP7l#Q{{1^;Qw1rejQ1?tBYGRdB zBUDbhR?;%9A>(1$Oi|8KE=MQuO_`b(gM{oY-Mu>`aUmXpQtXbuD)JwUk}D`{ic%|0 zvS#AF3Ufz+66IaJx5*sOBURcJpa;*On_GGVQ3fZ@;nL9t7ncA{YC)tNHI=HGDBX3o zRS6WUjtIRdUIPS*cX3Hp4bUzIYTco8;JDKM2=elI2DLRS23h$-` zQj<^=vl3!KS#c8xG@(p4_Q4WdjuT`~;W3;c^MIQ$H@}!XM*`Iw#6S+x5$_FsJ6h`Q z^oEw&;V5nOKf~;f@`rB6(i){3J8@&~D2LC0x7N+z_V()9v^_|Qf=$@|HYP>Ul zlv4*Robz_4)LFNBJ&m>3u}ZcXQu=}~(T`d95ngZwaduVkP-tI}M?Yp!OwfY!bVi~*`Zg?Bd&h>kkxr=6gQ`|SuJ)6Kk_^=g2#0&c)W1E=Yu8V+3ZhVkj3CbQ3WPE zk7n0vM1Ah#!RkH!>LWqVF72U83UX)@(s;mvcQh!~IyvN243O&Sq4C>G;mQAAz}+ua zS(?A@t#rS!*WdJ3ni%XGLK*GijQv|_X#D>Wp1hdqvOclVZDSd>DT4jEq)&2NI6$*A z_S0JfNpB5U-}3IKBg$!g3;S1E{7cT#P!^Zx20PIHMD?JB33Pz{s zia3Y@QFaYo9O2SOK~qd3o>k3a7lpRb(naAP zqd9;Bnn~FE4=L{NvC)!ITsxZm5;-NvtDFf0N^VL!f;aApPYqIq)FAJzigQtL+Sx^+ z=)l}g#1AP`a1Ie zwbOFgMm*;un{4WCpn413VWLf?#xB8WB2X6Q#XUiHN6@`hFr-_fje00|SSMrh5 z{w2ggr^8Gq!=TS1?O&rc?O#*xD?`F>?zRLj4*|oOP~5pE{p(2)292X3wAyCQY^kx? zU)@q_w2B!N^C%{0DM<7H&him^g2yw%i3DF|< zG%J4vGZX6ip(Ml&LzsWEhkX`?O8D8W2ysIKAwFm`C-x%};!x(E+^xuP1LvOfS3gW- z7%8ys`i(K!myJaxh~*Z?hj#73*GUS)se}`h z0?GS1O$a2(bgXlZj<0yETRxjgi9`_i(II^n_JXEKGr#glQr+LR+~TqzYKc%SNU>@x zXU_$#9!XCqpv1`;U7fTjd!eWypSEl%LBZ%<)VmO|=!_8n$BT6GMkt}ICQ{In!tDrY z{;wPlO!IxcB_y5om=WLII>oksmSfvD_I_IC%4G5`;yiT)X1+&wYf}SdJDuL50p&-4 z2mH24OYj|uxlq(S7xSRlNFEdz$RAOX(P@l71F^w5Kx}@B_=bkKY7_iR z2*@lzH)bI_D985|iNB{fhVePVS=6Sj*FEcN7ZP*kBnuhrAsJ%ZnbuS{5UoXoPI%!D zz?G~f-Ue_ddbCZ*(T@d<3nQN$E7%TW6B9)3EnwGNR*E2fJ84J@=oCd@wM|?drkSfd z9<6o%HV73-d++7QV$tL|ueJhFl&IGnz90F6MG03u(^p;5p~{<`%`Ko4?0O zx5;E0YW~S{mVH0Q+qg3J6xn922=UpK@JYx^C1-UyuXJ7sQR%{jqtgWOyM_ z4u0hEN)f{VND&a!#dyDrHd&%7XFfS_R2I+yBKr0{P}p3v)L@Lhbm?tX=~N#|Re+?p zN|WNc6%LLZ4jWf0Bj@A$gxo3UP_z+Rf}pV%=5N~GJu74`kXK^v8{MRj>J{Fpm)%#E3Sm34PLhA>#&9jHDTFd|7_%XdEqujQAt&^-z8NE?au z3jKq&jN-l+NLSFIuZqsFX3j-WuE@RmPKF#j{>_f1;=t;Gf{q+V8|?6=h0CJTdl`I6OB{Hn zds?;n@7mcNAs`RjYqcwb6P@O#GuR*1`w0j0NMDvds4p}!lY|rca|4SjYrm!&^=Je; zb|Rg?ZgxUt6L|?Sy_A5;;)I$tiu_e)?O;V=JHHTf>csRzVZBRm7kgv{_&DCJ)A_4T z<<<#n?`+Uc3nR(j50oNqVr}g`qHU8bZIc-Jhs7s=IXM82i;Z_zvHR!OlH0u%Rl8KX zsll@O{VG#{Y`GgMP;ypaY-BtW8@P-5IjfOJ>fL}6PCZW4b zwxY;{eL*Th8Y4a0u5|T&AmNusydFL!wKeygig{~7VSm={ntTfQEf^IzE4(p3O;+ju z^td{2*B+0Zx3NPe;e3^<*ip|RA}gdvTg-U+4E#!jZ`o9Q)6FpLk}08jUjXh{VQXX& z9?YJ_XYl$Ao6WOVTiukw@kEU_siXUKhCEn*4)A@0MKay=34LBghm|O;aBT)N9+WN= zXZG9-K3fTxCiK;)XM+~p;Mut35*2ZpC;1OE!*i@@eud*IxB*JhYaCVSOTF%XmBCcI z^_ZE&l%s~sJidJ5*2tV%GKDWE?A49IK=p3%`&CZe8#ML>tJjk|SpoU3Jv4QtkTCC$&p#oR9GbHNrrHmHm_+^@6&pA? zN3&ErKq)4E?w6@3_z^w;pNOSJUjc53Qf-i`%S&Ju;v4y1llo46Q{hPZ$ob(PIV~Tt z$yBzA+sN?+&>`dz62`WrWkEMG8w0iv!78DEJ^gsU4E}(Tt^5O7BGr!kqq(T0e|%#lI%o9*%$de zJG6(cu(Mv9SWfp_rPZ(d-TMO3Rxp29+s5%==ekFF=wv4Rj#+dmgy9XL z?;}gm2H>X!>e|4~RCMrA(_B<`NyxMcg1DP{ITEED!@z8lG=rBK*@`1J7H5;v-0MX)=wYf3p}z)h-hA*H!rZ<7f{JPhT|{ z4P_J)_`d1zJ|%ZEKDz0-443m(-y$Ciu~o7fc5;@1>p{lvv&06x8NN)VMk^Fc1bAN(%J?p-a`)-RZn#Hc){HIEThhyJ*)D|T z6FgjAxK*^!=!5!cD@j2tUikrO2wj^_26J_|g4kF} zBj-0BWy@3$DvW9swMh@%5=Fbb0B=Flf<{N-df7G?jUF`)=ao3`@Eu&%M%mdM8DCg* z1Nn-^ifT8DI#@5d8AeHevBi}H2k&4teHF~d|9)S3rV`3nbK`}U#yl4aOt;B|o7VR4C zuWND8#=4zGwCMv3@s{X>XX%1T%nQq4?@!2ULA>*G_0GfM!f5NgPd!+n9{f;T=tg^Q zwR-X$yxHD+lj%rbZ93A&W`^4GWZEdQ=)4rtK=96{WS0CvR*yklcWxI9>?ORGCzqbAcd8L5ND zUb0cAGEkqvK0TXLb(NgiJ{^1O4EAa3OU@Zq`*h$m_G$j&%=YQLvoK9tI&%ioH0Acm zv6!aKsWIIfd7^NUXsJ%x-$&B^ZpptgF+6+uV3bbs(D>r;FBhDOrZ*>S@Dy)!^Q{E6 zQ=`lHq7ST8381SgGIU3^2mYO6i=x`<27;Sv)K=V`dS6#$d6P^+f_>elt?CUdZ* z-L)eLa}{^qqV1^*M{=&%XhNh)Aj5Rk@;A6qX zqzr})a#SieM+1C8_*YptD}oZ4EGx%<*|>FzdBwCG0=h8%tehYyM_Tu&v-a;eOl%rgJSW-0Smwp2U1 z&;4G)mfj+Y=8_86heyh?YQH1Png0#HjCR78;#8tQJDNu-kD5pg5=1T=iGq5b9~4Vz zqY;iy@VqzLR{v)0=qXpu$004ak7(g~qpd+}7~8v8I*+Mo!JKT2PH>1%jE>&Q!5AP2 zPeu%pt*R;^pNOfS)o+#_zoo`Dud%+=2pi2-cMd$#+2QwYWHUytq1zP*(Ty3>hufdQ zfejpf70h?|;Vt(04ANSox#n6VKkx}L24^hZk%@)Gxkv&k+T};FM+LVOx-shYZ14&> z(c2((+@8)QpH>5{sJ>HDeXPkrA;>u>6AwpF=zmwBMT>M}KNdudL?4+aWJ6kgLLS7* zC@&3tiw=M?pK(;kme>qn4ix(U?F*$wbE&%xyihU4dHo-N8P(VW)yGRi`K=Ha3$S%L zh5Q-h;I=G6$@06KW`w3rk|;+ES>$eR$jHBKEvF~fJv~}zw6sPA^TN8(6UuVIeHf`* zdufb1{6ex+C(dt(+u3t{C?hZE-W{krk`8?@;R0m+Bpwe%950Luv|)kZngA-a&)7yd z0GjJ%?b;pICx;~(j}ZBKz1p?S)@MgTH>QyaR+Oe|*LKB~7^+CuuH9!s@f@+&u0&QT zV#+*Q8J}qUhNN~hY1g&@kf+J$7OxRL5$SI$w?)Pw0PAkikS>G#DoNm(O_0nN`7m4q zQkwSWhkbFwwJ&+Ne$2xafGIn1wB!hN!`6qEq0>9e5jv#v5Sfp5#)c>?hsb=kD>g*k za)@F@dc_!d69%acgF|>lGZCqh(1s>m4Ud<{XE%>eM1#rk?rg7dP>8Rr1B97#H+c&q zB1F)tIEMG|G5k_woZpz4k4BNI>`UU+eYoS)qwPqu=ZdyLNW{({7!)L?7w2^DmjHF7 zCeg#%ENx9ts>K>(>?|a@0`TK>hLh`JIh_#Xwdm)l(mUa#&+C!nxsul{?_sf@W8!|w z{maCYoZvSyJI)(xBjuB^3~A8Pn_~i;s3Y^K^Tx)WNX=L=v|;OL+v_&^1hchX*( z-J+-OB^y+uSjPyIV%W#5Msft_vc;=QU&i{G+^16pb?2C`{+zTE&I!Hp;=%_W7yEQI zDc7^8jrVpAFql(2>;U(C0_ydB3r13q;zHmOw}|3NBM()S^NKx>Ly)T6O35F-DSkvL zg>IX_dPiwB<++9erjZj3mJg7^@I?w2X=1aVRc&~Zf=${3q3eYZ)|kc?KWGn2Lm7=y z#c0XInOo-zO_q8@iDy>^{KDH|dG4oJw9Vp5hezuMZRWe;pB_0l*g;ctZlf4;>KqMc z4Ivndj=>;Ei6>AT_Sy0+WSy(rC;GJ>eG{Ju8L|={_ye3!PMx>H-GuW?2_-J}Vo~s$UMB5j$^mS}S`?R`y0e<hSKiiBtEXzX`Gih-S2rh&dhNj93Ms>vBYqkSOY!((qhRupnR| z7Vd~PmWHx68l8fY<<=p(=?#_HO?ti^z5Xh?_8!GQVlv1>d-K`TGfzg+B%mvc2we30 z(7lfXCB*7N)ruyDs4nsyfdl4O9dZ3i8}e?Ev(EQn82_p>zFUrS=~jR;@ir&ZGj-3w z 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%0DmI|B^Ur#glPP7( zlFL1Clm(ohl|px6M=1N;6F(cEwyy?m4K0#7QRf3}>U==RF+t{GmVD9e@8`%046LN@ zO0ufxt12td&k=fEg9qnY9Fzjx%iMusRf_WkiAQjSxfDmk{8vMGfn+{&yc9jim1GjT z<&vya8|=frI6By-&c5Jy1+SCc_wG(RrP51rZh!o)>XYopMQ^rGU+${T~yVF*w^dh*w#qn+QFyAfj^Q4{g4p@qlYh|3^WiNbEM9WBdlYw&i0G0A{i%yv< z&br;_`&=qI?w#S`q@pI$pme^-zanf^gZqpge1p+`9t_S7iZk^#@%&xQGn|WFC0}g9 zR8I|{x^TLRM<^dlsL_S(#3mG~3Ng2-BefcY+WeJW^jM1}u73$t4a0+P?;i^OOjvy> z6^B+16Jmu`A+N>q{*i_>c%O(z9!{|gSSyJ#E3FFe-ssA00B+a>!pX8{?V+L7jBO1q zZhIC+S;q;sXglG5_!%F&gfW)8;4+3{Pl3^%f#Wi7{wlNrPaIi)RexUFX?&?!t^V>N z_UgKAVu8PX?Salc-6*uZ_QEx)^UYrLkwwgGz-l*lLAhP2tY@8HsLd%n zfK_`P+#y@V>*E=gD#ku|TbQj9av5NhI>>{XDDQ9?4lyj6#BQ?0U;A@LA1>CnD&L%$ zV5uG<9&Z+p3yW13?7EDETKXznU*=%G5pHI9TFi-+Krn)}{#jFf=aF z7(W@CCPVpody?W@K(SHMlVypXSf|jBG~3*^QXp}`7udS$>B|;*#Qv05&+MeSezQoB z+-UwKte2f@4b0kFQ>XM&Y@pXr#n}b~QgZ5y>fXA}ChA-x@1v+ruf*)%gjJMh<$ z!A)k*Ik{XNCDZzfkJL!w8kiEc@WzCKeVI)@Y8Iy01L1&O{YLr?UT z{W#IxLy3Mm9kBmp_iP0JuP_iu3(UmoSdaWrk_Us#+bLDmiu08WPGp8i@cBhs2u9O19lCofSeH;7&1F^e|>u*MMrIzcFGdn! zQ^yT6WFu5dwwo*z985zk0&nudfCHz~WbhgO;uTll!Xu90Wzo?eU z?I@FrR3>i4xvZbDOcwW3%S5j51gOt;%Xd)EKBk|R`^zu&(u-hb$T^WKGZx$!9*p%L6k^efg& zdT^s#IYfW8`Wx<&6XV}Q|Gz8Bnx^7(O~c{Xi1U58j+d;~yUGT)irog$nzad-#t#R` zmYI+qvSrdo3{xjO0+ZXVl;$7H7LJn-($tLxnUodQpZ^8t<#CUnJ#%~Tot`QGiEj!2 z@;v@2^XRjPK1=Ddj6Sc^X9XV4z`uO_%f&zHSf{L{PbGay=(C#V&uNhEL#r8;6a(YV zna(MFV71zs*Y~2|6(um&s=FhI|I>Dh_!y)w+AW32>wl}=GWxb(_h~!W&B0IK#(-jG zGfD0}KRdy~?@%dT`Erb<`Y$IKtZAIJ)Qk(NsXivY{3O*SvTZ!L?YAaA>rglI%e`GB zAIOO*{uI(BB#n1iB%XVp&tVY3o4u_EZ>$FY48fla1>eBI_ub0DpMOmcet575z6!zb zq2R%KUujX_FgO(T)p*zdEyn)2ctDx8Bi16>ctcUNYhChJt?^1Y=Y`qD10q4S1 z!heWd0o%>D@-`2o==VXP6di)xLnIem)H){g_5N(P_G0gu+Z4B%*yBAT* zC^r(;2@!$DT(H z+0r=X_H{TBy*Lpe&oo9zEZs8BfKjU7n$8s^>qJAUx744dnfMwoU$^2bfU=2EoR#?@ zzGlp~>=u=;8~BQJH$&jDnnE^GF7kQ8vt;!5x1LX9|o26#KTE-3chqs1eVmmy^GTj`0hp`!Zet) zX7@ym9fI{(_QD%^^_8!l(f0xRUP|9V`d&ugr|A22 z`o2KlE9jdAXV8TW7y06qWr3STe&=ejnTFWxaHz4VwbqZi_n%npi;>D|UZ$}NDttIS z{;5h*%K0S#9?ZjDt~dKIJ;dwkC|GdbAy#bmb-htevq5yfN)&z!0{0cwPjgQc@ma8l zp?v7LgQcT)3GbpPnnM0qkhVC>}~Z^repV}pE4bLiT%iQ8kE*N zfaRSOslH@TT2#EgNn(|7);#r^tfH(%>NOchSxePx;>}v7UK4lL>*_V}XRT1Ld%`(3 zL;OhR^9S?AcB^^p;-mQT*HZDdOnkjAzE-Gfm1d~l`TT9J0BXUr32A+?2QSZhdJb9$ zQj_Yk`5M4qr#SyjH5m5GlAG0*$$7gFc{`(_C~@;a5dt(*fIcu0pqca7wlD&ZP=R}d z0s8@b6$4XFM#4SbUEoe*T$m~IjIe**EMWKDWQ3IgTbanPiz324Ct#K73=7L=krDP^ zD(u2A*Z^Q360l1n!uAocJ*O}%jH#tY*lZQHYZ&YkfNddQmqmmPrZB8)D#OA)TV{m4 zc$0wL)58e+Bw))MFzo9QVV@MREkv2Efazz1U9Q3|2!nkZu#*Msiiohc2-wY&Mg5uq zbJB=AK*jAChWjjVn>G-2Y(_-jgWVXo+av+Zmgx*5@~IvIxvIMn`FS9(O%TZWCS+^V z$G9JR`vSa-)>X5_iJ{mNi*bkb&nFzAmvviR`RaQ^*e(uU`XszV=u`X#n6gzS#P|jg z;_ERIsdU}w*&^m`5VTE^A!Q`JqMv7{oJkbvp%HZM(#5jv%Tp1kjQ@HgpxOgKTJL*NYxcGh4&Q=d_ zc1#H1z{bfqu<>wLHBSa3Prd=f7F(!j!%ot1?oLUt7#W8Y??mudZ9E20%c~$ylvldq zToi&H0_fccJJlwN264G>3diM#$5AwQhK1dOu>B)OgK~0_-(gw93)&PBAF_{cFxiiH z_C=NrEk4THk&&#cA9h&u%^BGLVtpI8V7FM;O{(>91#bCa?pR0oYCY}i)l=J={b?2T)O;iLanC< zCh$|Ti>z5QYdyVXCO^%Go~fNzUV%*Jk2Q5nt*6)EmN-j^epTL8E5K)WaR4znWIbOS z{|Mu&YxAwI)(#+x0OD98Yme!*0$e?v1H3K*e2`ZwzzcaCKpf0uefr*70p{Jy0al6t zKa8&xpkh1+(6=G6PE;c30kYyl{xV@HV`4jjC+}#S;&-TxNa04Bjd9Zyw9ew|#Uj>s z%l=!$o*Yj)2p}>+OY|1;der8pE0eD#L}x!x*X` zR~eG1qYkdCQ5ot_W`@m=GsA2W4xZdE7-oo3t-bJz*qBfWRVu;r@P;GdKsUBpi(;ZZ*NuYWhVfR`hH#%qLVs@MS+vMrUFMbYU zZ?Tv)Z#+9o+}!g!8!u*OiB|qbkI8fY3OCsDicq#w1ydU-%*npwCEP} z>C=jrbMB~7&L-w7t~EGLdJD(Nzz%SnbX6TEGlb(r_&;{5o{kSccb6f*l# zurYw$DT9pel!D6*W*-%gc-+7f)wkK)JSUwc|5^QO zOvL-a^liEm<#)OkP`?9e`(L3hL^x3zuoH!e>u(Q*d=DX4{AE#{DF4|O_TY)XEbK&? zq?V3wqRbFZ6cm8)qO4H8D6gBmC`(l@$|B)KVXq6nVW5+^lbrpA}89|`O|9z@-tz`F|QHwTot)?*8=2$0y#tT zBA^d40N0k}N_M{pwm_qVGVxBGC-=@I5dh*x2cv@^n50lW1w!`60s0QO}8 z``IMTMHA-q_^`cz4TQng1?+SITiZng*h~StYLezq3UkqnRAFxlgRKYHWC2^-p#<0y zZ5Z~6;hOs^%%P;T6R`W+s<2Z5n*i92ml(FT`wOto3)lmiw=UfMwL*nm6b73J*r@`x zwzCef=>m3}>PE;jd+V}Q+^%7`cHp+SBMX@d=3Gj+ZRDd>Fji?8C^ae?=?jLHp7 z$T;V~vUomOjY~e_(gq>tUx?HJ3jaE5t$*Zpv3@pNGnYFSspj&wqA+v0tVlJNOUIJ& z@c04MT>fM%o6Bz%vAKL4CV$Cysx?CfxzE1NhsbtDWWPHvBAXsOzB$}b@fF{I0H1^c z)EfW5*CdS<D6$PZF=#oz&U-6OYUu7$kh6TMr*;p_L@q&)r~0a8O0K0_MWq7 zrq&0o45n6$FtrY}hN<;CuLkPgN*JSgD(#Ho`vEcQT(oMC=N9V;vc<&GGM-r4fxZ)E z%SJ@rS25~M^n-MFgt!~4-Q{za`|w@5Ay)=Q#RThDvZ0h182fOs7jZauHj<8DUBHWW zqC5*WstlP+-v-yy^|~26jRnXz&xV^zacnN(B_6@OTF7jKoOw26E-eUukb72`ODzrN z5~W?WmSEy^sA(T=-{7%s-h}K82WN!aXfA}zhp6@fM$?TPbim|N7AAwn%mk<=n4Ab)?s)KY%yjFvLJH~^0SFo$#DkdR*d zb2{|mqgSf2na&e72zlRc(Hca0WW6Xw^gF*YUDJzYA-y<%QJ7wwx=7WFr?aW0d-tk( z@o+Zl#o>!sFBXw-aE0oKk%V5Hg~+~y$bNA~)mg#sH-u}IS;em)z)NQ$DYek(b4E7n z#nTT9y(lTp2U@5Z!W^#yBIitG)oQIjibuOCvTzq{ZV^7(on8DM#G9Y7XrtYn!OS=R zVdQ;Whzf5gFa7{wkDrc0_1Z|LN;)hC*11M1`?~o6SOtI&PU~cMjApW?O!i!Jm5jr# zM%Z}~$<&ps4VxPnP@6vMgfv}yJk$U8SMGO3WO5mD$u$hgZLV{_lj|yStq4nqxnGj| zE%(b@HbPN}FzJE{VG?30#U_`qWNiDr*XR5D(|DYn^E}VzInTGf_kPU_czSU-@Md{z zHT{ZkyFLg)TSq6~4(=mvjk$_`esxRXw_Qv0%k~N3UcTBK7YD6JAl*~)Mnwf#$uqs; zcemY*dU{kK|&TKun?9NK@>JygatPeA5{Up-o@l@sW_rQwtle?G=ua75nv!lp`3spNqI$wD zeVwF0^>ch{g}nj4a?;O0xDOJ)c_En*w?u7i9z_w(N5&;xbM=IaScXPCc4v8j^b#8S z!u>(k&McTO;8%9cnQ=Ey=yt07V?m)$DFuH^`MQmdR9~l8n+SStyz0@P_c=j&OyqFz zeC`E)%I9b`$IE~zkyV=Sb9+(er5e#xce%*l<0aRuiLGG+*<>XxB+mb|lU{CK5M;$mJse*O@=e=;|CLpbXXY6)mulv zH?6Z1$rr99Dphh2V{}NTZ5nt?;xCG&l4t6ywtFSIzfHyA~~~PhAB);UV8MLF--qrlamnp%+h^KDP(4W1_9^i@VWD4_jc6| z{B(lG)nhWrHsL6@j?bg>)0L(aP^~Ih+n47Sx7^XWos%o#b ztx8(pO(J_##XOTyW0TCTcR-$hfSHH~qgNkbUNEkzFRw5JeDBa9eYjZGE9HdzcnOs= zX<}x)(gR1?zhEK_^WFoAg*5pXzdA%LBu1!&u?VB#r_TLAu^PsqY$*?9)Q(BInW2_c zGca}~SIiOdkPVb{0`J5i1b|Zp$RjV3dK1ff zE8qTJKlAvs1B2|aVZRY>8=}ix+T^4%WAf9eAx?wXqS)lK+gKalnV;!#+}3Sb@%XqM zv?`_#?cc42$TUXX4wlRU@A#;4kl3Jlfn~Kf{hOA;AzxP*R)v?p_}0cd*q7R|Aew9` z^)fqWOm1eFQIgX!6%YAvDi^GA#)<0u+8vCmrSM3icYV2qb^mC)1H3U4cy4Yp)}&5M z0UdFhgXpJDYS&EJJszgdFz&}l5*o^zS7XN|BZ%D^`AB1F2#A!QXuaX7jK)8!KyNXP zdn`X>87I^rh`5CZF>+4GS$ougEx$Ww{}-HyA#cme~uwPeiCiRb(wgtgPCN`ZG+=ah+x-t8SJ_1+#KJf;)EZ?9iD^` z1#J8-nw-lutE-kl8`!TN_Eum*+9fLmZ>8)?h5ZypcbP&i-VsL+6L77N{5ZbRduDMj z$8e$Os-NX1{0RN9o5yVVv|Sky^{Sk*s)$F4W{aNu2d5+#a!u;0rO^1_9HQ~9Wn{%{ z>})p6_|~BNU6ba`&sms|9Ya0SX60#sQT8fD56DB5Bo8$wg*LWT(`5~YarJZrQQTaOG?!Uh-R^`$ zWoo31EKZ_D*of8$wnt}Qns~ESsw5OL0bdj&PIs%36q~510W&=l{-9&|HN2*E@jIGL zRFWxF4`=Pot8H++Sv1T?ufeH?58_qEKs?YPjhBG)LnPGXK?rr|4Wx_xR!eBT&+$rw zgy~b-H@I;-s!hs%L>+*m)nk}FKB(#D@ye3lDbt+V3Oqy{L3oJv z9v7~cO&%-;=X-*`WtmkeqVa8fIM($tbm_5Xp)l#?NKJd1ya1u#ckS&p+;>R+F}|Ki z2@cXinYG?N*x{Az1B@qN?3cM%$A?)XiHD|XT33hxH$bEgB_l~G@J^rxF(*mKR5W7d zvo-F0qPmE7&tT7-p`Kt-y3JkGBq%aaF4P zS;yfsHc_XXu&!?SRh+K$4ui?jA<8~V2p5I%ZSO+Z;KUi4Piw0ud{?u_-r{#s5g%TS zUBjtE^4XHNO?*5PIu8qH888CUeH5ioG&6VOKsZ{_o_+_Eb$PU!ux) z2=Q(C$hnN8^`)X!-P%RbItk{ zsxXB!*WmBJ+2E2ByUu9i8CFMps>m_Ws!`mjTOfp$jh})EwM&bGRFyQpDuiqMfWu#4 zZ{`B-u!^WjjLA6t_d19(IM8+EsiyXdr)4V>Q`EQy5rQL5!|2TA0` zT+^0N4JXzLK3n+m=Mw($GmMDCc-}H`|VsBTCZB;oDw2< z!^)4#eln!oI_H$@OGF7~lLc)WgiQt(MN?x+YM1KHO=+l;%H9Sx3|g>^4=w7D_HJ5> z_VMHP*KzP5NjGD^I~u`_rQ7MP)n89$Wya`)l`yWxENiIR;}_B~&8j4e#`p{!V}8Q% ze7zU-_Cg#)1Go^b%%5lgs>?s#EE`t+rO^pqI)n?@WO(Y<-V32<;)&0pj!8-1@N_I@1%#^rfdX!n6Pl3$a*rL&9m7jYb zyk{A=x`-g|ry3mPPS#epI&Foen4}p=tAG&v&_zcVc|7G>eMw>jBy5w(wlh)3eQo=| zTC~||HBi!5BK+u34)^}%6{5&02XSEx$Fsc0Y%3PFMD=OjT&%*ZtCH#sAjFzq;QT|d z8U%z;fG*M$p#58R{G_hI9#(CiQ3<1dH?A#oOc3$s8nU~pggdlc=@j_=3wwW4G!>|d?yc1OImfC*V*#p@R)%j1LZQb z!Lf13;K6b2g2Wh8p{DpKY4k+`ZdW7!YKAt-q4djZ9LAT4bXOf=w+tJ^FpZbo&>^J< zSudty+bg|^SHuS#T!s&TeSmS?o)J+7Bgsk`E*dxcJk0!+ zGU76c)*@XdULh(b+?_O86w=O0h+xou(Gp2qFqxPs#LW79L~oRjfHV4BPNl{?svUPS z7w1t&n8ppcAFK2o?3p&K0za86eFa@KZ;m(Pzi=#n9dJjpRhXJMYkPy(mnIv>Y|n-% zGpsIm>yX~$STB}hu=*ViTC*m~&=ox1tZu;Dp0`RF?fC%HJtI{q5%vu)UCGWu{4{jB z{WME(w=Jbb#*tN0eiFUks7ks)^qUS@wZTax`nIMYge>E(&tNLNCU9a+OEI>no2{7| zX(Plo2lOyI(Jnpf?aa7!|E!s|Xu|YK?E@B~*OkWWA{@jkIwTI828c6x(;RghW^v58LXm1mZ5>h@aL9L!b#(H9$pQ?~KbFu8p*$4C!uA9V(dJ}k$mcud0R zKC|TdC(JsVX-v2(T6_wl6)4Fs5pJ$Q)JY;wHk&|N|BjjH328qgKftos@-rfA+?xKV zk$TiYBtsj&b0$33ft`XM#BET|qV@cV+H`cTFDowit#x!<^+JG;&EFAMiN^-vB&zxB*r|DZZg;3%Hbw%pP+8@GLc~F2+6RW zgk7$%l29B*C3DjJjFV8+Cp0pHGgFr}pB3fM&4Gm)02Wr)oQPE3`vi4kpyF{Ln4 zy`uf>EM_=Z@;!Jb_L=~3R!5!0HDmY=;sifd*`2U^EKDDb!ytuREhU`{Zds!APl}v8 z&@%BiL*0}`$KsXIxz%b8SguOapgVV^2sbX?VXS&5p%-HtS0mFYD2a42sf*u_X;O~$ z@cT>gCu-8yPe)=`i&67UnR(JFYs!#CHrd1)=ErElQST6S0>^(18n@GsNfup}8^j#9 zEl=!SHfxHHmOy*1TDmpIjko z*#+W+6v2SUWWSzawCH3%;l|yNC2NgSNSqeYhA#Vo(8F0&a@DcB)KXhLbGpgQMmZqo z9PW4QGLyX25xmRyj{y#I?#a?ec(*^%)|&G5R<@2S{{`0k)mihpO$9XEk>Y>LpZL@n zxGj%ict`Lnm!|!KDL0((lQN-0GP02tlvF}FxOvGQeFa2T|6PWtKNx*Nn>%55aaISR z;xHDYN?IM(AhMLhj5GRvBLsqTYsCyK>}AU_SZY?7KCA7?u$x+dJ$LMPJ&sVRB3sxr zFq^bzn)SCaIvF%Jkukn9!CJr&vc0(cOJNp6BfiGPJ?MP`bfqcNi!p!yJ<2{;04E#3 zNmTfN^Q1{vP7e||DsQn6n>(%&J3<)|$SU$#n+6e+Uf@b8wk>d$(d0#Z&s!5cF70g4 zWhzMfrCOB^{50%l)6!9^S=GbLFC6(3@9OPWIf7{d`9w{B;v$l7JbN%dLH&(koR@P~ z8wFa`=7ep_;L zU4jINhs+31$g7KG7+!CgN{hi!=J7~I5>=rrCQ1fvzK#P`g=!K+SsY?ZRB9Olmu zFpxOESc2ibmO%EYipiEy1_Q;C4b^f--fzL)<~ z%9^t3kR5}T>Ew{a-W5(IV}MJf6Em%KUI=4jnhfaJPu$ZSxPf#RPRm?a@KZ zC6p6V+Du&Z0l7aJ^mNA)wi2A7+a<$+5QoM=$HKD8$PvqZY?bSY-_P6Q6@ve!_e0|V zuZ_-(OoZ(Q;^5s^i7KUR#QJ0zqR*f^V`cT=+_U*dHC9CkttRSTf|<7+e-E={M|+OZ zh9J&PPZ_;lfw7w48y8#lV+d$S?5#t8t=T`0XtC`#;V1CsKbu5%Kl3Ac2Tzb*ALBx2R8JO7fh~M$qy_qs<0+I^)xkh@{_VAA0Zx!Vjts0q1g&IDa&jH&dBC_}jwU^OpKY;iy4zQOt zEAbh3`_6HYypza1=FEr?b<%z_+bYlUox})iB3X|Wcv=}V&RvHTZnJVFzK0#sIM}+xR9Yg-q+JG28-j3f(bdB51ghHBoPGCxB~q*0N<)Cs7Mi zcGbefSaW6#DW(xkRQ*#pR3wpCBmXSlEx;mts>DqE5-7*>^*KS1p9^9h*!eI^oc`EZWz zG`a4Z#VKcEYSt7SDF?YSMAn1|VQqy({(#znsZrd%8fhXHLe#KX@y&3KJDEy80gYR^ zmQVEYC*pJXd1hFxehUpA&_2gbB*=|#W{VWNn9MRSKFva3vOghUe}a=u?ws78_R|V~ zlKS_PPRDkfm-(}l{n_&ur2L_t*>yYXU(EYe5#t{!V*?%>!S(y$ORKN=zw}J>jFT!} zjC~lgUU)N=6;Zd>bxvY2t1-6)EYCOf1va1B(3~qn@I?kTq(iIiMR z_tx<)1Ublx8{0u#bK>60-6y=Iv+Ft@geRq{Fz^KThyd;1MM@ zLZI}9?Uc=r3r9y=AOd?{fWS&LL-Y>&6ru~Yr&>h4YhHY_Ax$?a&mihF3|Uj!-tnU~ zSGz4zbEJ!Fr!PhKeH0tE+2U~f$>lt;_fuLva$s6=9+MPs{GE774IJNx%CBaR<}s?y z&1-%ju{bKyC|mnP!K&NUSl@Vr_Dlq(^0;mfyA!i$rm(>ty=f>mThpLxa3g?_7HzL1 zVrhqMv&6@?r}(AjLCvOoq$!d57I4S>P+KH;q;P`28g5*@v5<1;uhFjO5VI5tcy#r%uQ`p(L@Y|dL3TYA zdWSYr{h%G^RNZS5c8?_bB~>g{xR?k>ii_sl@|@tZ?1t_YDB)oQthd9pS9*oO7M&z9 z@v?1b|5Z?_BU_`}7sp1Ljf>Ga;}KjN%TzIpY-)3y`m@9=MruWvIeJLKP6^t}G3MW@ zkQjNZM64wZmzGy)Hgy<|ibNiihdgkd7vE7#)IFcKx*}NOV|%z=AV=A?aUrieooxW8 ze3-i`;a$~Gu`f+{QUM|?<^>q61TjYw*{6nKF}|jG$`e!HXYw@p3T9#C2eOvpMXTHF z9t6IT2>zYOMBP%&u1NTN`XOpBN2Ddv71AJ*qPTEf!aKcT{hi&h&Y(soYQaulvMvQ| z=LFT^9Q*o$(Xdy|N)`iV1ixN@k^5LJwF*NmC;IC0a}sn-!(Z)&j6}rpTVZ8p!E$kH zz2`RS((WhbAu6~UzQc54oeKWoENkKayU)9X^O*czzM z-(-%yXC!uU<<^M?cmR}OD@Xa;dCuE~yN4Algw)IvGn;y|5-Sh(Ak6YM>O#Q0eGH_z zl^S=ls`uX`7oLXLM|)QwD;H8U&KKCePn;^%$%}kM9#pMGw$28=I$|Z6n2B@!rg#B@D_&@R#1Om?HVI|9zSTA`tRcl~;Zz z>iQ(@!Gr!v4m_5t%53yRgBvAQ-sG}Oadx31hkr^hIx19g?leHF8AiJPn14O=UztDE z*z9HBNPFI#;+&L6HJeI>k=u?wzln!R>GAFeJR1VY>139-X_p)lBb+z>a_V<5%!Vzx z`;%eJQxQwx1LixjZISUKPK-My#??w8?(^2~&6SI)<9v$a!`;|1ykM!RV*N)aX{WuK zc0v6lzAwNjkA`8~T$(cz#JWBj*n=t+=CUkxH!HK|#pY$`-;AZJYPgn*^Kb5%e^ruU zoKl=ei7rdUWR1e?ysz`x-6xgApJ`KRkrhl0Jr6whFh@}HtHWR4(65?{lN_459HHms zi%g?%N}OWc$=KNv^Qb)!G2L^NY24z&i}N4u(_?;D>P5vV-4R&2>Zn|?8A!c;M?;M2 z)3xMqHXLV6{;frsEQ|zxsb<)*kQfR4{fo}^oc6R_T=#>XN|^CGJO(cJ)*NlHF>?$euzDQ0xt&XefDN^jn1;j&eh566n8KJUd#6CZAzGLz@8T1X!A{67h^<}@8%NOs< zq7}Stk5pEk?Afkm!Ng=%NaxppF6{{q#1C>U;gXTMnfVo=p>S znpwC>g=TWLpzpEv$;+WSLT|8jSyWu@9IJP7n33LnkYdD)g*8fY*daMN#@>J*9fVtM zp?WoZ?0I0r?Xy1o(_6CV0qD#mZ~qwF;VJ}zJ~ExHWy&5S;RgTM&PwcFEEh+=w2I4* zLXS{z63)op_m=|WYgzDwLq92EVF2c3SX}p(*&>w#vi7wpf5M$yWZ??OhEFRti^HgC9Y$K8g*b zp=8iq-2SL6PIlKR*@eudE}yIgx%Ahf^vX9`dNP=aUY3gnzR3*1+wVQSlet5KfPDIa zcREEvs|MTKZ%K;uWHhlYuO|=a}V@udUjiChR=@MaZgy&Ax#Xo z{AgeywBaVc2Goa`gxpz6;!Ybqvv;x$cJ&M-5VdMws%?#8`AQaUIzFb_g-NW4my9!K z3^)(bM&VO8Z#PpIA(t>UEQNs}FFWpDDk|jTia0$(x43Sk*Auxq%fj(ji_U1FAT{yqrL;gFetI z{_x@kt?;Puk5gW0poh~nSv`@;$I;L$6u;^!GQcqV&8N!7)L9J!`{bUO3g1zG4G7z$ zT|;A_WOm_&BfE*ONZ?nD!`NOH6E$`h-%Ez2{BtF4Y-c5X`KH|K64PWW3y1HAJkt(%5=sC>gf z;c>aaR(dV0kc_Daw8_ln?r4XCRR`NasxKie_05n% z1^K!i4Si&m8<|V0EsbrI)z0yGSF%(G?Ca-yIUnA-O*BUNogY|N?w4x){Ue5O=5cgv z^mCk5FT>WJ)s0yJA9B&@6NQn&1N%P%Zn5Keo0SNz#8-|y=GNg{eJ^*7tko*_SNt8Z zrzcP2wOm|vM(yl+-m5T{JwE0$1bQJ}E@LX1ZCjvo>&;J|;V!C$vU0fH_&`>STHov7 zN3vh`4VaVPDP03cw)s9~~Ld9l2 zWhx&aC+{G{Vs6EYjSR4Hq$19uA6ZIcX#TATY?cfXS##s2ofZR*nWEelQ7k)?!$ zv(rGOCpg^aPZeW@ie96yq~ zEYI?JexOcSk#Hvr77JMsPPtos54+se9;-hDS-HbwC^`y`!13{?I6okZqbaw8 z?X@nlpgEf^N#LqDq-hB;TNe%EVq05WPCnuIW~B;V{wu)smm#)Z+LMNLF<;kS!J{l; zH`xxVjY_bu@-%paN5JN|JYBx2n;d_hrNo9WJZShnb+G!gYv!kG;HFk;nbIKp2i^Cg z52ER1yk-H{$kJH5APYr$!|qEFzwE}&uy&PR*lt&I>?oPxD$6xbxba&6nfE#AqI$); z_qCC`<2e(w?#nhM#&7B#-22$s8bUV4MQUE`mpsQKOXk~sp0uOzsCr0UGoJa=jjkh( zho-lKi12xH;KxV;{QPKB^54ZXo+$#AF_^-p6*@)POSh1`m#|V>4 z?}9eWF3!f?BvyP+(tLl$ieWeq<|Vy2)bQo|m&yw%TsSxdyTSK7Tq?{}>(=;pdnq%%FS3di+d*4f9`r6xT;qhTAFk|5&pygj|bY(T3D; zJ*tQ>zmAD~?S-{s(2E^q@Qyc60OL-qTfM|Mh(Z{U2h0zPtt}FaST2K~DbP+1w)9sX zE3qb|e%D_NFBbh9T^aPDuro$ZTU|cKD(U+`-nSkra;Z+!r3;E4x49@O*fS z_L-sY*fV&C?(8brAvz;kzAY&|yz1bOu4izY|UAgVIV_0y{ry;AJ-~0OemTVM;I!3-vpwy6L%0Rey z(`C1@e)O@}y6=A*{pOiw4N!q;v;99JH{fCNp^kzK2d0Zc$XXxtz;B$n?N5$T+xynY z9{X|I;8(wR%%^S~d@)!+2~?j-YQAsXaq{mWmUsDL7eveW%`Roj&o3EQ}Fc&+>sf?d@c@>J)FdFTFJBINcvouA?<_D?*O zVPdj~KJ;M31J!NNFZ|R>(bUBImAxfQTh{2|$>%xwg%#(cD~dF=71QKjNsej+of=P% zM|ya@-oMq62YYq+++4jE9yR10U^vTD5Gn5e=-}?&u@KvLX@=Ch4>8djZtVvc@Ak6I zpof1x2`ych6yErXCJ>nGddD*kwY?@jn0c-yPwvb6&G0eN3RNx=_s5^FIjL0fSK{TkIJH%g^flU5@09^NY$yG+trErm601~*>$#DDy!;h-+t zwi-HL!pkd%FFwYI?^~owQFn(V8}{J}Hnz_72_I8D==w+A+aG5~15%_?n)V@lVsTg5 z8snpgtovDkx=LSIu-+M3&d^SM%ko`hQ~aa;#x(b+Kpy-Ln>n^IZ|-x_Oju=OCKakG zku}QoWD=vo-+d}B=2^nvyh(EW$8G*U$t9B-TV9hA&uRH5ihv{Sd4Huss(;=nmUc^A z(a+<8t$=@-@igJ{L^Iw9m1NO+y_5#3%LxpA1L1bI5_neaR{c105Y#o+x)B<3(y=D=~*&9V%Hb6pxb)tlq_9Ip1YaZ^WL z`>DCq+_TQq7g+amw`G^kq+K=Vey#N7uV;7=&%#pUP!$iR#nE}DY(LmVNPkr1{jN%t zW(l^hNUJ2#@foi8#!8Fj(ol=*!0YTE`;KA6r)lLco$cC)yy$Z`5+YrSggfpLm4&Kb z8#<{xC3pwM1SW8Lvzs!DHL`+ss#>*Ul-2d-J)=SDmYoS}K_(r6b@Ja~3k}vre10^fN3ogTO_fN`d6#!=-#Uc z=oy}g^I95lci$L%85Z|BMZR;F=veXA$v5xr@q&1X1MJe5mv$4ztcV}%Z-Z_g#DPyC z!xBC2YC;MP{K${Hp}!l0m^U0wW*J0TIUOa>diCW-{EliX|F%k#wxIG#8yj{?TF&pp zqXs}Vy>n(!mj=g%d)Ar;$0EP16fO2ucJ#74IJu?cx?>u*-u{fWIob^#it;V)Y*>oj)X-4|9=SiPG>Ra;YT8-Tjy+{QoU^K}Gmw0CMzBp-RDIUsO?=u_ z5yQs=mmanaaU(w5u3qi?2sc07^cp+UQgU=QcMjE2)iVFvqn&t6agV#GrG3)KU<=|p zW6NPH>gm??5leHxw6HrvI+}I-@#AhXngli1gBPs9>;4~Oob5bZzF+x#k26?-{A0*} zTP30g8}xc=%`!WvVeTroW8t&p1~ENa$V6<2=AXRB-PwQo?0!0EU4Xc4$n>}*=14qJ zdU<)_uW)E^S%=o3Epq2s(=_(Zo2n&R!Su89Gfv-wW;`r*6ksw5ek3Nb$FAX*pEY;g zP?QqddizGpO`VivP5YxNr@x^mh}1crh2Kwa`paSTn^8sQ6x`PH2qnJUO;EQeNQQ=A z=N$-Jmus}3c)`2QY$PzKu$|^S=FJ^kL_y|K&1u1rUtO;%Lr2uiQ~8=*HI6a)AhbTa zy{2XIX*!#-4L_YO*|JLexSBLQP+ye(c6t#~;3okaXBxdA7qt1eK>3S4Zd!GLV@v_M zoBFXY5t^DZ7$GS6AodlSKXwAlq}=7g^f*}0%5XVaD>*&^?`x%ru3qf_%_4G(@m{K7MS2J6M|SLLp&bni&;u zAE*iatCoe`N4q`|WvY&Ztg*JS4ZS*IyYd~uopNtP1tlwW9LBs?y4rR~mJr&$~~)FPa9ajMY3Y zJ-b@jr*VFL|D8MZRQ&4sA6#g$Uqk%UBhnA?q{>~NXsY5lz4Pu$l+TuDM=!vp>aw7O zRk6zi8{J2H4He~6rA^_4{c)Y*0lDUZJ(k+ulg=HCXDu~Co+~Nj?m>c_|yQs#5x13i{vl%`C1=A z@Chg23vg2+XbUl;0^Amt<<|Yuk3W|-FU9@5g0Y(c(cRVo~!wdn5~I@)O};f>x=#g+8<(v5LzQzRzMcVfpIGr)xF@&zdj- ztvdW%oYU<%f++OVz+!&EwXBA6b2-Xe=W;Cw4n9^prDD6fS`&PdUwTd`)IKJzzB+l6 zbV|Qgo-$VB6?1BJ3jTs%MZ1M*h!J;Is+~VqZKYz^SgN<|6?3*{?~7NAIV4k7`e1&t zcCQ}kOK>rMw0BiVqtWe@r8r^=v$q^+iF{__7{}C-YKSm3SMGl$pxBRxu1=-fHcxrl zI$6;iY#f;iQkp$uxO}pu%i`k`?6SQ6j82$Mz=~f<{efZ3VysPOT+as$#5qN<>nWV$ z28CW+u8$1s*cp5JXm}g9{#W3s9H)Q_49aMm6v?yF$Bo{eCL9(}$BpV~qaL(8uJ|h# z&k9mF$rH8(wDh$a(nSn7`y=v2B*{YMMvK`5Yf_eRSO}Z`Cm!tB+&9(RPnsuw_Vf?1h2B;YTi%Du?(DE`9V`Wde6H_R*3Uq(LY}qb?8AeBSSi0z~?Ou?!mA4{nf4Eux(==AkvE`Tfi@ z3xpQ^wd3toA-0~08_EPg01=M~Dabe#0lthel9azE)*vgE+72{V%RJw6_ zOgwX~X?y8;O#%h?WQR3Z?H~DJE1EQT3TBKnx$0ox5ZSXNmGXZmYshDr)oN}gNW z^hFHohn=XxgjdpIWn;|3NfNK*Mjl}xpXO?G;E$c3j=O(9*zy^3GJ0z`qRQb84fxY6 z6b$p^aqmdGpPDDfaX?W_(;dL16@ATn89buRHfjSFU;9w->m@*_&azdUV-cP zg(R?dO$&JV!t44p>%oH>qq{+lcOs3s52}rSMHJ^{@~KrCQRj2PhhiA;hPGcaNR8cy zXg?xRdF_VQ9mnk-dEnp?zb|X{BgGr1rwEy#o%n~KlXYp2 z{hTf-F?SrMiDh0F(oZ38#j{fC9wHsN-I>5u_xBr+}Uqa_|+qN31d1!9$r4 zM{SMkd^^uEiR6bAv`^#1S|508b(~3UPJSQU z(3;=NicvW+yp);`A~pEgchu}~Ii3>0MNEJ4mu_j!wx3x@h>5dD9s}D|oJLP9n$Jcc zm`G_J2=x}(hQ4Iy_Z5$Ni~E`vkCPrhyjiNe&U-e2%*tk=>eyY-d%@8jt7bI4HIVMN zZNA~Cb|ZBanM9pkL>queqOV+l|JlI=*`hyvHbhc=aCYtTYr{b#rM&Ax((1;YKeF9v zKWul9{FJT%Jqz~7hOngkf#N-ieg!k_)l({XP6_790E~>nXZc866qhe87zW-G4_HC+ z5@t^VO;O7GB`U3uN&S8ad2nk7$q0mrOFQWZqKFVYEok1#zmIsQ$v|FOM8|XWNC%|C zfqC4p{hy9Brh1y088r$;U38wry5f(IE^kdY;tXloDO7Cc5!{^iFtnyU1!n~G)^!Ri zH-6}r7ECejY|48mMi$zupqNk{@aIz~tzhntNMkA53p5RRf();uML-^wU=*_#z!X!YXQOtAW5zU4Y)^W_%e`Dq#5lokkQmZhh#Of zZGgF8BhfGJBT{jlb@Hh2_9=R0EhndV|5awNk+_C@^vOW_kgwwDU$ZPdjP{z}Rj(2cxEXq*R;&q4cgC*$zjCNA{=V zPk{VbvKT=A9Oy4NcUd}BQ< zYVKfD|7KmpYts=vm4t`fO`@XQkxjp7$LXD7I=dqOuT$}dt@Si2u(civN*~h0WQvR$ z5HFG+BOxo?q5+co-qTA}bg5nj0ORTb3|=KxK61 zlql5G27r8ios(8bqcT%QL|4Q~qH(}`M4i*lXqtWn2dC{0+>8m0f1b$W-v8EW6_}jIn#U9dTg}* zBeLNUjgo&AI{U->mQX$IzCxAIsV0Yg=m9^oKRUnyuAekuviuvgScrH18 zH-iFi4NdfO0=viViG%lO*H&m;bc_SfHc0)4j`uA}|CH6bc)^V%KX!mQQN%VN6tsOi4_Qc1@FDwi;1nB9&fTt(?$G}%F>uF4Y zI9)jll%TYv_!r!Ci1mOtom`Z3;RCq&A@UX_bDHQW;T`~c#zRSG{|+CZUdW`nriR7hg{8YilzeUhXJ)KR?*#uNImr4y0KA`3ADgDPBpzd_w;n7!U@^D(E zAsyoOlrzwO5R1pT?%}-wY`oL_RzG5E@rSH*ZQcZ;T*#${fDYhRyAx;sBhHdxXT=(} zDGU#)6X%2KAgDqj2|M56}$MZKeKnQ^6kGk|OaOWK}MR^Ap z%H{#U2wX|b3#c=rx)su#z8%mLnu~_HGEvey2XgzU;!rw14^ssGqagOseh=>s;6vda zy*r7mrG?AWXL}TYk9<0{73h}fEN%8bCciJVu@t;dZDpS|$QnU%09}u*Kk3N)-ze>Q z{+WiQF9{b3cWposrSB;KK2<>1PbN~0?;mwE9NL-x7bk>s^y(xsLzSiirlr%T4y!!i zVE;{>iW)&m)D#fK7wjJLPZ8??KHmV8rvxc(kR5E&AMtMyv;W3UTdJS;B+}&yP4L9cO>Nl6jhbz#|SjN#%YOGKY)@tbTekDqn$IOmQEij_#j`?VgAJ| zEs{-bWjoA8tkC%AOlCOir}&?+?m15)%>j)4ZzXqd0E3jH0 z%*g>}PWne=UOw$CTHMpJ&YUsg=Bgdt0{NdLJ$zd4H$ty zkd57cxd5|bMTg9*v4efEiG7g;tSUj+&oXbz+d>pp4oVFfKCe$FpuXiu+gRRn~)eWGy0fc>OX_jVGp-HmJrop!-K%7sYf_`IKamus;^~FJKEz)?29tZ*i>NFhbx(7s>qL@1v*wSZUh(wuifl`Ou zeQX(EUFiH%Is5uJn4PZB+5|CC%pfbnJ&d~+h1`yDZjlv2HQ^S36yZ;T- z2?=+LJ#h(LS{2>A07~C?HnK$hTf>JJvT3eBm=C{rCTM^lY9a*by0ZFbc92LZ+O7k( z^$z7!Gkt&F%X`Q|-WO`e{#eI))0NI{2~+w9P~5J=@1t(ID;NX2>j6w&ZJ=raMotOH zXNrO1rn+O0yQlsi(3)ooAm+4FDXVs`4Q|NN%i{f?(|Jc$dA*A_0+`&E;8z7O*&u?2 zo=wDmMkn5kx;ph&i*AMmVYj&oNKjh*5QR0Gf={IP+?$<{PVafdv@mUq?gIH?nrDC= z4Ba88lXLt577J%m--{g781EZ&{;%f+jMX$0ZD)vtKeK}sr8leMq}r+fB>tyi4O<2{ z3x(sOben@WAE0HCbDDrSfX#U?d{AREVNh933j|d4P)6D_k@}u}9dELO<)(*eJ=w|e zFAVJw8rg^e!h~>-YSKm3pi8GQ-2_&AM7m4S@YB>?%-X-Dmzj5+m#m_oODj2~xzY)! z{Qo{DZr67b$xmMotOcURz&w^-L<$4z;VqEOg+yvx_R&QBVeY~k>OY^eLH9ZPr~V*2 zX-f1qRTbyGUjufYCHbY;Ra)pnfPn4Bofm=KxnD+K`NM$zX)8#u{hu{} z@06mY6jWzGM zGT9BeP=Hp<>0R5My8+PV$wRMRfHoakk7>ph4PY!Yj5L>`s^35kVg40Q@FT$GbO8QD z)QF->W9i<6lSItf6mLR^K6MU43X&5X*f z`%E9zcFg^b!9V>2?yEn4sG|I-W1CFnreUKk<0b!3)U~%rU$PHraxC@F=a~PbjpsM8 zR9=#YD&C7o=0d9WzwrR@^)Gike?!fAjr>{+VAE`8*lzZpBiL_~K73scV8f?hCj$_t zL&BX})Gn0=Kuj3!XwIPaR|JJjQT_k*XwFHL_lZj?+mt0U8jUq9`iB0^D&qBHN+~Tj z1FtmE0h1ayW(Vek08GE~uKQRYReCgHn?_-^92Xj~_<3uoW*O8*8ZXAFm8efa^dOeKf^f(r=piIz6 z(`;)F(=eRvZM*uPw`2<-5_o}#1;7x zXb=E^%M$+E{jndl2lh_TqxDA;pp&m2RC@2!^ zRX*Hd_Z+!M=@6jJshBI6;r|upEyb;}7Rb%DeHgE4n2hWasy_e^h%FN_#R_Do z`{JtDSVRI%Nm&wfb}no~5)P>j|C}U)zM8tU^SZ(eRTOYPwB*vfVF=>Lyh&^CYZo>! zu1q5ULa9La2_O`-PNSezHo)Y>;f|yXYF7j0ZOXqct&L`LHYC=N2#jbu0zkz2g%}$xj06o|`38 zW#WGT&H22zN2#W1#;X>Za`W#-?Mu;E_z6IoVHuK>K{W`a6t4f5Sf3baHm4#rPkUbPr7U&S(M-Xa{>y-$M2_900sa3C9d9Wrogdkq^PfdNBfT0=8SFmx zAyGaG({OGDc834C(o{`jY8Qa>EhcH9rvS{P|9T=0z)YH!Pzy{cjIhwTjwiIvb28?N zhT!oMPc2Ze-0S}XM_$5)29DiVehkEgiPnT@N=ypVuvxoK%kn;8PLazH0Afl5HTXWI zhUNe@({Irq4oO5)udh?*Xim~hL8AI!FEb$mm}lB{&c$i>9qOZI=qz z&xm@b15`*xTM>FKIB1E z5DnuKK$#%NQf5)){bEu?(m%xr5TE4U-H=`DV92EA(uz%Ec6#~0rBW(rrwSGU$z?4* z2>~=Pt@wB!NYMkJodLFVhP)R$G*`4AQ0-``zAxc;?r=zU4f(Sl$weE?TdoED|5pjQ z!~F>W<68TBlnzER%c1Kct(@E51j;$vnMm|_A5x{2@=f-iw%@(t9q&b`XFd{hLXLXV zaw17Vg7p775mER8X-5+c&h%FT00$rVQndg*jRCS$A(nE@loB<1NPYcpVzc780IW=N z$TfXRIc>crtO2)!Y(3okj#=4leRiIN1@Dozq0YgbPefw;2oo#7_j%zBZ_AXU|2}b> z;u`04p9*HjluX;3cL7H|kbjZmX0P9{us^VIu`9}os#R8wT@r5MB=%zu4M)mMG{TN@O+6y=VGr7y3%`Vd|M%C2sQ+29+n7E7srd!yuASwv?1ee;MPJ-(Frrcl!bkO>juG|a4aF}CBU zN_ISQXj)D-^kI?=3EW<+r-M8$D|lU6Zp3vzBFshi;|f1-vxxQ zNT5HN3@-ku{M(LB6D&iceq_GdKd6S3vd?daeEQW^PPG4=h-Pk5DE{@%n$a@rIlkq= z^Ecn=sY@BpbuW)K8D7?o4>6W=z57kWLZ+kdDMTZ)4W`30s{Hthb?|2bD*tt8i=S#Tr7TONl$^Y_c?gIzkV>JgLU2JPs>486dLm?>U8 zT?~_(M+4pGTH6ZgpeUl!@mZC{!9u6Nbb6qS9o2{*eNcb!F(lTQOHH@8{Z?RN}5X;cY9iV$X>rsjj&BOtNlJb z2IakSI@XpyC)7VjDaPr#dXwVK-dt-_gJnMcymfuG8X=2cd1nhlG%AT1r$(#H{Wr^( zZSYqlR7|U_(fwWb?%!A!BwPJ5swr|T&9<&L-38qO1mz4($rYl}w$6tY zkm#|~?(_6wr1FGrEv25T`$96u- zCOkh^^lv1Ynf;7>ivApO;f2q={snn~W7umianr+o=f*6r?`$u+*1m9^mymvW>6VpV z@{e7O79NN)Rx&%&NC5#?D76NCVYqUms+#nL}xTcmTJg1EUv{DU*B<$lS$FG%?wreNnaYL*`Q zHRPCO!o0;BY){p=4WwJ)zkzAr=m z?n;TWu#o=iUImu-%Celf=@+RHmY%?+3(qX84`UHI4HfI_&Hk~F`T3o^ME2iKGi4<) zboTQ48&-5o=F_}Ay71-GqsAlC<%+vZeu0-)W~~H0&Nm4+@yTSz{%uNlm!8L5n{hq! zLK(wS`~)>OWF7+10Xfdf$_Ocd3ZRnmw?R+4re=xdxKCeh9{OCtZ zn9V~vS*Km?_js*?0g6`=A`|jzEtvYWQ(3x3tpC^bQQy#SrhGm(Ba1!i{_OFo5Bi$C z&mFzTiXF{ddhmUI@|~N%ik;qx?#w_TWS04Z?aYF&`d7Ijc=nXcQ`e(BI&b(grI%IQ zNKt&3e*WIaw!R{^`(4IGJDTrJV>9Yrqu&GzCx=Jejn)4)eueZMl(>G+%_8zv{iMvr zVC}WcYcIFn^1x)XJD)%NbX|3N>^UrXtLV8F_u}&oR}KOszw=w9-wgk85U3ib^gJ!l z5TveA+!Yys0Hvjzfh}+lnj{6zM{&dbOs!thtD!H^6Q(2?VE#W7E2LD_$en@wa#78i zd59=yEXG>twow$qXY{x4c=(gfQk7d%LyIIYSym0dt*3&gogWePHp`!3O@zxXzv$}( zJP1YPE052o#~0N)I-R#)x+Z#T1hl@HS@X=zLiv>S%?)9ZJR*$q;3z5Pw`PlJ*9S6S zcW3(Ilpo(7ZFl(nLgm!WDU^B2W^y?BoYLeVCp}$-Qo-r`58>R06@otYA78UgAC+u_ z1h!P~w+d0@`marKIm$NnpUn~7e`6Vwb?Ej$*hX%^*ix7@g4n#*7dg(NB&=$@u7SnM zGOGP>cGw>+-jEwe3ih^l?`uV|Wn&b@4$V?7rPH%NDK+B#*q3y>OTs~CESoJ%NL(yV z_xPlyjxC0*a9Ksni8ZP2rv&nHgVRXf*`(kF2_=!=>V|q_+-#Ba#g-=<~7j$&e)@(n%%pl9=kXp z<;?Gamhyy`yQOvCpCDUAlim%!Z#P*nwPEo%@Jw7OipeeNrNA0Z9Q;*H{6?NTEe4i1 zB^UAik?jYQD|;&h8ckIFt)d!cxD;S;_{t@?HLCB{XGI+H38=$Z_E4KIor5AZV@1-A!PG|5|n{m-JE7t8scKX;$&e#C}m3F1>1=d+1`gqVtNHo|}Nzm5zN+H&zgIYcv~SMT@>B z;H#My2b8O!A)nf6$dU$=2yibJxPwF}{O#KfEhiG z$yFMQpU!)^q1`nr<*W~7SvMvsDZOJtvd9MRe-Yg zZpXmau>u!J{fF?GN27(@*;{km^La+aYam$Dik{vK?n%H&REJc)To$QBBKr`LW$piy z&#-dKu+p(CUd8!tWqp)SnXTVSpBeV)sxs8wvNPsRoAN$gl|Nss+usmF2}hfPP%|d!YolG)!OzPoeN3;{H@N2J3Spt)8Q9V`xC83RLhU`d zbFH4@yR{$y#Mii5joC zezmD4w-~YXyi@F!gfK(Z9%N)BnM1@L7h|d|Aez3$kPk*V9YULaf`Zr==<}W-x1Yaq z77YuGc%*<%N_jSUt1CDhRu2CbJSQsHK>i%Rmsp5c5pf*}F1*7M*ds&0I2RK&!6S8z zg4y6fimc{jUD>Txap%&#eBqF4SLkFEgMo_2RedXRX#S0W#k@`>xpb6fu?;d1HmiT=e{7cc4%pD*=xNCUM-HG5X<>&E5X5cZX&_kZ6uk3IeI zecR!}&vUT+yH7Y7MwVnztD#ExzeZB{Y)z-$zlr`&t&AQpvMA^e}U5)wIZ08(%bNDA!t;nmT*e^(h=AS0X^LJqdlmfI_&t z;<-3K!_Jwgqj#PN5;86;q9K({`2#b-SZ+_j!it+(64%SoS3k!mA8?^(T-7cmqZf@= zH2xq~e#r;kcPqrbDl=%PQ1G0bOUB)L>IFJpRYSl2D?s>t8HJ4&fLA)@;MRcuxEeX| z{z@Z4M1CS%Toe~7RCcrFhC?S;QP)Dn2UvS_jsb`}xM=t9hSy4-d|<2S04%2TdmV%U zmoRn{#3CsGUA>GVnqPqDiuS^8H3~p+mr;ns^T|${4!AY!RE*890?uop zMgAMEW9N8WbSlr@HC8)Nbw$%9gjnI&Nt~@n(M`w6tDR~$;)(v!@D>3KC&*E_$$Qdj z%5qXOvZ%q&H90|s(WAvl2zTMJ5hy;vuPN$MsXV{JC%NuUKcO!97xq3pK?!!1?ypij z^~T{g8b5zdNila&m{ZE`oa{Yy(uD2poM@N)(}+*vDfe&7A6M6@Unp+y^RxT@V!TW= zIDz3Q^kUPDG722Ug4Q&{5#LVTniQ>aax-eBDpq?0Yd5&mU_2vT;9c7@|pk2Z42Y?I%U4-Yz|{Dy&ONXxT09fn%qID)fc0OeqcC- z?zp(q*>WBqT;DktVO^!e5uitp{AYD<)Y~-x=m{%~Z4En(1(^ zaMMt()qTeR$NNE0;|cL}2Xyf`=j?(-^7?fdQx7%-k3+!ul)dix0o!;hX$Nl}sQ-Cp zXIEa6Mi9*M3tO-*_KoQD-_!KH=QvHOKYdn$Zk$7vn5~|z1tEP(j&uglw`^F9Iqe@a zPE7k6d!!ojD8b(XTU~hAbq62NHGfs~elZGRcpjcB1A4n2CP2u#uZZRf&2w??Z*&AS zPDPgo)Yx12`_ACJKaj8&ZfAFOg-s`}L*>8Bl7A)lHcP@=ps?HHCLl3M0YYjO3XwnT zY?uff@^ucr!rKFT^oaS0!vnf^!MHc`+4V_ggxEGt(9?0kbv7wECklE2=Kn|y?GIK@ zCO((azG8WU;j?d+#^4!GQ2DAjy1bDSNw_&+tMawI z(GBR0UltkvdaY&p;EjT3?)bH?(YBO_#3Bahia!c#oO;%C@_-d;;-G z;UHw+=^1r`y=8as2K_V=NNu?cpR~%xjaBr(ekYzs+jR3O7rc(!unNRxvyy?Uw+O?v z%;>HK=D%$Wsb**3{gXQJuwU5X&>#fIMSsJIi`_GIm$-1kXN*9NrGf;@E)>?s4!`a8 zZBm)n9%Icb2*m=RRKFQiA~xuj70s3%C5c+ojMZ9H)AJu-2i+@i(=c*#Qltmg^bx@U&9=M{ z1NU0d#3lD)Pr)liAHk*^%s@ycmeAuAl#Bxh+|el)H+I$w)PeQ^H3Jji_Rx+{xC$J7 z=I>nlDGH3!$PaiIM|8idt!WsKFcF74j>^Zw-a$%sTYMd-MB`yE%o*68GeP^ElCjt2 zJzGE#!QaS?4ChPO4To~&cMC?d1x9LvQOn716cd@9+Xz^J5!vQ(6faf zL$KSnUZ5=lRBxjsJl7SC1HJBpZ6~RrNf+%vypWrL+Cu$}yngyaM$<~LDm3pKa>$LK*%T@45xX)s}|WyC>WoCB$zM9Ey1jfW|Bn5?{oIbN<5 z^>kb#z-}ir_A>~)Qu=I(Gp_(40wDl(N8-2NDZ*FmU3)VVuRD6O zv@~@9YP;RUjK*F(4RXH-i#ryC_A&_e)KOV2(i}ctk+jIi=XijUswL1-*__b*JQOin z3%~t<9&cSC3D;Wq2s@YM4FW5jN3YrmK&9IKNSXetPVTjT!d(w3Fd=$^GUO!G0}v`V zUIA#=ArSbNd)DU}82WbF=*t&aAl)RAiC52iKIRs^v!+adJtC>{O`O2jwd=r{6nkOa zWC4Oowjk859T)k`UwhW2_76;?XSBI7j%a%EBs7c_eJchf1ATwiGk1&KV#sEl_|?GA z=8H9ocvO{)h~n^M;=FBCvxxu|4ydCY02G8hWE8D4aR&hNR^tSrs_l8#i>I6vVH&0* z`$#7R*w;j6*p%O!cgi1OZeM{qV({8($}HEJY&B*3URverhbnQjOl>p1jIen}IV& zf*$&_T=zdG*P-OA*`)?tpK=azHAVKOs+9yqm){l~k1VZqSsJ@y%rj;^JCw!8@gz9R z?Uf1|VZ8L)>kjVekr0+qUi(vle4yg|2i@{Wgz<%h^)W3&0qD{w3LEN(udCL9`>haQ zqWnG}3>U3s4 z_p9?OEFT;Y^0)oA$4O`k1EER{g>dv@!0{kWj!qLF{dj+;XS+lIt{{>CE1}~cj4PsK z-b%wswt2wyxC|LVe)zhN`8Z*vL6|>~FN|@vAaF%f%m6(!@YUd6gbh73MCBwwmlf>? ztbSSYSWVIMNHD?g@UWVmn~{*gui;X%^G)&UMp~J_j_|zz87{l_E{X=Jmg0<9T=SskU)Ph zi99^E<;3y4dIrlQ$+d zEbrVvSgS{2lkSu8qxXrYjooCIR+>G`O>H4M@n1H^edOO;P5zRZC|mmMhFZ2iA$fR1 zl=BITr!kTbZoHc4#v^^Uc3MWjDn}Ak(ZMctUtui}PxLYVqga)!XI0n|KnT;Tj7|Q9 zS4ckO=jTZDvyt5k^zoe_VUY{f zTh9ZZv?;(P@Oy)BG6IB_ZIq0ne(!d&zmly@?H}u~9<{oRLl<*lm$}>m#+=5}@U04< z?l&$gSYT>opqeIrHqjpVx_75MwOsgcW0gHH4FKB*K*<^Ee(2HgO4V$~Tq(~dWYKSdo) zF%cw8kWsyZ`M9gw2#|7&BAVAWKd0`FB|C7j7Musv)=TLBc@C75s)pVv28!vTWmZhF zi}<3UpH1;86c(Y?qxR~8XaC|5td-9j)DDDu;fcaFzERZe{|KXOd4e7coJac*Z9z5_ z8c4)nVHhutC$K2Sz4rM-Vg>^tMg?Ej<^(h=dZsJNVO}fjb{wezF?cR}bi14lGfrn8 z4q|0dMbEgQ5LiukCHR$b&bAtQF7-T`56FPVIz@Dh?exOUmZm0H{$Nde9O8AdOo+V? zC?MrLnpZ-wXJO|Ib|R55%C0Ddc8C;AeXZhI>CT07Q5k|&@cVX|bsqzI#;OnLaU>f|MAcTb)T8vNu>#l6VW-m^W z0du(##tS0#K7a@tO7yaaV^v!1#a}ywF3*v^1n(*XZ*0vrfLyOm3&Tn{{Qnx;$?Ga?{Tt9oJA* zU;x_RC=Si#aJ=s*?&*k0!jT=haL-eu(2ngW;@mqFBIqREy6rriqy&KrKF`OY6gpvg z0Dp}vDq-8h3PRYkl4iiiJLi5%gR*sc9;7lrZBOF4M1iFt_-17~2A9P;AdVIZ&kBF72;DdE`*Ow-U)OxvlT;(``B-HTcHK#k&=8I4bxOyr z4H00Hx&lxaJ$!IiKF;{40`}rYU{rSYvi}KBLGI$4leakc!RJ7vZB?{REKodm*|YTA zEz!4QM_+yxMIr3&_5_cy;Kr1Iu4mB$L>`~i_$f|WSLDwdZz7$}A=h~me-I9-kDQ0_t zSVGj%8XEX*2R*#nhXL63FHcZ!Ai!gOxB|?jw=T_pbwg#Msp*vGV-|-u?^Gn#o$IvV zk=_W91-WSPYvseB&P}HDsi61UF{{;4n&lHpxEkJ--;<-E!pqw2wv_Ygms+1hO zA9!g4AKsHN z2>S{Xgl5UXTYi6rt>0Hee@zr1TvOpC=vRTwwGbk2G@PI2F{9IOEwr1&6U~4%pHhj3 zS33sfMx0m5O%i#O}P84ogGkImiA=g^>DnW5(=ic zWCk)zQA2ZiRy*)t0grimnzdg>_I`B_6QT#+e{Vc29o3o0F z>&_Qok6;3X&R`&QS1!-0u%=`8vkX8VX9Wn&amiR;y`H-7skp^Y{jl0aPtYG7!BnU+ zUQJyH?pTnDgC$0_)U#B=$hU6>QkA48?18|AwJ&dytO}f;2D}OV)C-$J12)QR;zny_ zuvSyu1<%Q>CqWSq@I%lXFC zE^9hgUX;>Tczuoufs1ix=B#10;t=6*z?w}K1VuP#s+Ux?3mSL@e|zeJePEal(&fTl z`%iCpmNx7|D zOxmg6@7%aJpHx?gANI?N2Zx22+KS6b)n)gKmk=Fp+&8)C*ve~>-K8tlfq2uHOZ@WRnV&9P4Wi!o(8LMi>)zsr#kt%b>U#PNpu^#WE?4( z<6;;uNA{@r{f*Db6mYhI@duSJWE(>?o2j2opu-C!e$m9ZI#{Yijb1QS4RZp0DFW}w z&oJ?J4JG5lhtHfV#C;n2p!-n@lY(Fwx37a@_}TidmoL z$vd+$dC07Mb~nIW<|N`mny@f(ph2yyt zU)}Io)H?mfWoQ6)F7iBjC(;(AThYYIjP?c`t4&cH;#KNH#Crz9=qnV$W9zJ^La-<{ zDJvVh!D9kKnltc#dPAhp$u7ynxF@*NULK&JYbZp45PXZ%9{Xnw=rm;U*5lo<@FjcP zg_l#J3Yud6Hv^lNczHpoUxHQ9_2)p`z#rVg0iN|x$%48j0~Omh1m$$7qJ>{1W8Vql z)^KX*Q@Mf!R|kA%`V-vq#B5*lb8yF{0ayyr6QrbL2O6(vLJ)~l7Lg+x5C(bR$DH?} zRSeJ|2mI&I%AgS*5fQ=9ml8V*ZYnAAOf7l$$?53(TyON}rFTA5%B3YMyyI%? zUh9NN{r=4WI`Gn3kxZwkQ_MF*!rRlnxqgh`r^>@>Bd!yfQkfWxb#-X-RWcbafknK1 z#g{Z@KLnXFfR=(78fPFwn28F*LQF=(EAxkFx!N)!M#?XDkqNBo^!knOB!UHuxHh~! z#^7}SI2JAL>`VH68hktx3jQ43?-JcG6N8vv5@Y#|v589d?}uZtao~om{#!So2U?;X zilJ8+Vklee4Fw@Tmc(qHp(&!n!AD{Zpr%;9xvb$}3HpW$Bv$aBz#<|}s-fY|cw_X^ z%p>nF!BH<>V344qhQ*w5Yk~#zwvcasMt>2y#z!GkZrr)`<sZ0gwPtVL=R z@b=HXHwf>}F#joVW|2Mq=tFe$=T`JiL4N#e^mKbDnfw!Z_#gt3fbO?K7+%=pb^`7_Lz`3<^%Be{>heQ&tX9!P zKN9IcOx=0_IG416p?E0>enCmWoWZ_$2>86H)?2%-8)g1;*dbCHFd296Wa zEKV}RJ84YA+pF3QWn>mGe63hUqOlgiw6ymfN&sJAg;1Y6__e4sy1W?;RygVOxm>*h zYj7#?dcGaYpXZM-Nb*VW6OjYb$E-5qYwm{7$DJ*uqRiqqcU^+>2$(bpZsRPPLDv6gn`&+v=iDcsYIO`aR#t zeR`+scq6Ezwy&1g>j1y*7FMg&B#W$klF@Z6;yZt_OjvYNM*ZfSg|hU-)b%F`;$+Zs8}V87`iQTP$H46!f-DwY`o)ph!=BJf&^c?->-PFJH5IcC#mb~^AS8ywIi`k z%n{Rp5_0(<%<)Lo2b`3d6;HAYPsCWdZQY0sBHbTK7wZ)J<#&2cW27K%>tj{?NBHf8 zIeEMt^%o{RD74q1U5;G7VMTUxFJAZ_QL!wY0?B?3TY8X?VmDVTX;e~M!nO4CXEE^^ zW?L1~_tIAQP{#HZzanUktiGvjyZiTiNw>0J$DIU2sts^;wNhopmS`{ah28Fw7K5<)Z1g7uhcdAD8k(l;??9*tpaaDIR~cdMrQ5Y6E*BMgh z&>4iP@mVJR7`82ubYzUo;(SL!^rCM1ASRZqe>K_FxT~D6kHs@=(O!5TmCx7A(0dU% zSdu>1ABXfv)Hzm4munL=4%fa~{B!K`k4*KsB(W!3db+XcMiB1pmI(RnwY!~2soDd5 zt3|)|6Ue}`n-MW1Th1YDId*N;E1xh_Z~FtypY$;$9bmqnfP9pj@8ESnrpq5RU}8JgbvGj(eBGM9!{(sot2I_4{Ao^o zWk`x(=jmO(c%TlULsq34M5o0^yA@9nc+I*u4j6V~@{kD|czSo(>LNOFZePmDJyf{i zEQJ}ovQUIL*7ltgVFZ(qM$oU8t?1tc(-w`wiiRz@rD}@cosN_$`HigT@9Zh@XoJrT zOUH9Z3cGq2<=I}!g2UWP72_7nq13c8L|O%N4tryat7aqM#WGZ%zlL>Jc{mPjMkL|*zBSd-pn?NaY>`S|Gf&(qt1N?vx%(hGO=C(y}rVX(W{WFCn8op?1#g{3Txm-OpHe$#VxCb9BfB#`z^~?wPKf z%ak*pyBxx{Z)e3%YS(ll53J{rP5ub&?{vu2_XgzdwtFtsM)ff5Zp=3Gfz}*11^+sM zx+l1~bbKnNzqyktC0l2X>!faoY_h)}-ZBej)3RfmRbZ^wdeXgrB)+Lz@a*SCG$Xl2 zHvYgQ++**+UF7sOSwK98>zPAOh)5*!#|IVY z3r4p{6w7*wuE`vIFz3=Dy%-i1 zeGN0Z$iXOa2PDg)&`{`NqVWEW%i#4(LhaNpXR5Hli|-fS7`AWn^>KzXWUSs^`dfd_ zy;2~O1m__oUNU4uUh8YJlHYFflq4vpM3=u^I2rU%>@Uy3hH3_QLAX`hPYY#faFF<( zC#Fk2c8*ZhCpCA1`l_ajXz@NU8dH{MBqHD7*DEz|79&ai^7_o&I@9L#V{>ql{DJGj zZ_OB1a=BG!T31=qJ?HHQhY7}q?{!Udcqx&Qf6JYIxJR>+Lo^t+R)es^+~E8>(B(0n zsfKNdO_go`KcAr8mL!3LKfR}ylv0rU&hwg)^kg5)hhnKrx0#mGEnVY=kqPc&Mn8sP zWHy^&Kiu!rlXn!(E@*x;EXLpi4xR#`exKY_*;12Tp#PCCda~m~$ox_?eRSiC@}1V4 zP9#O(K)K{hJ-xRQdezA3AGfTZj;{FW5>{u*4?H0%xCrPNMQ(-+)iT5fm4zEeJ6*Q zNPJ>e_vaXcsq*6dQEZDgC4Jfuy5Jc)5z>i|f2wP@^X3v}I!)%%I{5pvUZn#w>{H=B zE4e?TUmP{*TO4BLYx7N{U|@ZLjS5Ohub=(d05;>6D4BNPqX))sd-fhPFLJ}k#J^Z_ zx3Jc;8f{tfHG~iUET!tRg-M2{p@~d!cd+8ofr9M}6>gm9TGBFmpSjSmvQNMGS|jLL z;oedCUP!ZhXUK!Rwt{eKnM2`M4v;37+3XK$Q^8`x{j;vQ7{dws5mBM!fyjI8t>29e z9L#X%bU3lA=eo2UpxCd}jw?CM&nUVHL5a0{hB?H2%Rk9+wcw5?%NDr}6nC>?NVO90 z(X&tzOxBG3>v*D1Qtdm9dr{L|9&sCsJiFbKBjk^&hEfS;&YWm22K)7%KO1!hd@;xf3Rk`6 z{z3AO(9+&w8hW}us0?AMc)UYAG9!1FbT+<3mA$yn@xtD0N$|jIT#1vRRl@V1_~e@V@1t5vgbJ44UIGvO zbT_xMj5>}gsbw%>U>x`@f|9D1xkkzGpv@eKXpu}Z=mp=>j0mg_*!^_j||wcd#s zW}^dhI-gNy=08EBhvs(7f!iHSJM`@u@k3CP3) z5h~x(`B^u@k42yE<{8MRgAg$$a-IFb%cIU_k~ar(JD6FQ*zDbYE>T1G?b&E=+S?`EhwOr1T&tgpFuN{~|?-tQXD<`IXrjgh&iRvL7_L zvo2UV;`cEXeyx{*NbeFT=bxn_xq=on04{>~)uBgi%j~$4#Ls-ZnOo<0h%GE8s~E$P zh3Oliq^4S5_9ZO`V#@-zLKVE4$2DDS;B=ep2D{3J{>Yahh9jd1EIIN9itn;^qJ~Io zGIOM$Ns8#4q)Dza9rD|?`J4_q@)cbAs+4#7fl{aD?8w%BFq;a*U+We5%0XBlPs}@) zAW&mfx7VzS@>ZP_ zJG#zN_|z~z+(lnTXTE>;7pwJ;FwTSHTDm#Qt66dzCpx}dn@6^uCPOsC$b$t&ZsWB} zAGax*emBokKw4IMZ>kcKG-HwbrCk9PQ=WZ%*)LTZ#CaxGei1nfs!T2ic}uT0?R3C4lkutsIz0gOFU*e@!jL&M@11-Wt>3)nDb$1Lx6?W*)CZHES6e>FuOKz}MToPw6B&^=py3D1h=RRTgYBBnI zRrJetIbIp6BA|9>c>QKG*%MYLiWh=k8Sp;gzpdl1=EaSxvgf;_;$pwGQVC8k2?9{*0jUj645mqPkha%DEzr*#b2ub zl9QUt5Ho_deV++s*kPm51(mPtH?>gIHXY1_gvDEy zZY=LHQ;7lH>}-sbL+$A6F)5pWKE%4qave~WPa=QY&GWxIO)ll^ghZHs6zkF2wNIk^ zBhOgBqmt-u%a(9niOibwu;W*a0a>TM1@dmhu;aeT!H4U`5T3V|2QBv^9Bn{VgcLz( zt5-5FA2&HJOEx4F#-exli?LNOi)_?bW5bV`&!zz_<0Uhn=8*E>FiU1Id(Gj8PpQLd zf1h+w=2cT6<@SL)1JKdYE$OQ6;M)k&17ZFvghZRpeO-3)@|Ah^_Os;Bj81ptxr4S? zu|6%^8{EEu16|~wZQbrjw|OeAD#bCQ6SFsU)9&8qvSIge>)*dwx;H{k*=3-k;*LbR zRf6g4GIoTk7G~*v1%sKKqLuXtkM8(RhMaU_POeYBwG;-vc&Rzh0%|odNZ!pK<+^X- zYrgT~onoAdK4IR0p?YB`l=;0|%^!AMIq=`7@ULg|%$yb?tFtMWZQs5~Ovx`XoJu+A zsU$m`TVCY35?OI2e%yOfFw0V?@z20D((@psonlqrN$an=q*o(LI<~v_{O){B&c`ot z`LBPcpoY}biVdqm5*J$y6*WZ662F<~6G$P$qp*fA7@uMU+1xi*M%G5|uG?MFHY@k` ztKMOUf3COWrXj7IloJVIiFSz>v>CxCRnFS?#aH$ZG4bojfJxoMnt85LU{Ejo{@M{Z_DwAU1s3TtOm}{&lCYEO)RL=S4w}uB#u5(jnN;|3d zm=B_cPIPo@&39a4CAWWk2qB}MV)9iCcBR0KDg#~7zn^ux%WKY?)oePyI2rS$oMB7M za^Wa&Ofq~6-mP*+-~b$HCBkw2VCU%x>KF6*4Q*C(icc(6P59ur`yp^7%Tr8}iUE5V z!@@PK=N}-7WMi#8G1!mh%dBK?D~2u1Rp1gO+aKUa;{$s3lO5wS-9ev}`bkN#ViBhf zj(|*2ICb#42Q^HU-!yx)dJswC8jGwT-h3(isT?9t_Kp0Dbo|lG#u&3B$FNmusL+t_ zqy~O)F7Y5Me3kxu}qEGwqWs;f^X&Sw|Uf^m{S`nS?DdEsjPMVOg_u6qxn7w z_3z%_H~MosZsQiki}YQUQo7f&v+#^;_9tZNmJ`ugFG8<6JDnJ^Wa{MS__T}8vU`UP z=ZTc$leS^&3Wa20-@N>N1um9HfsdKD8+e7TV^)Xd%j>=K0v-5XMCx`2WE_feO z@Nnsf{mH%Xs~4JuhV~&dBZfXj!!Ku#?(9RKaW9hoN6~f1L;e48dxqkUWJWlI$~@co zUb64ZoSDMeWh8r3A5pTmJDZ&3kS!8ro|#?d*=29P`~7+Mc-;HmpZELqc|BkA`5N%w z&0ZmUPa8wt@Qt27kG*KjR8QWPdA%oA!2_T9Z(>&P+0{`%TMAzSo~ciX<%JnP*&L?xsKKg2D!>`FaZ8Q8cW-;I~zxU(&D#w3YJ(wVuyp zyKpw2N#3Sy9T{|I?xl_a@4kDge(5#Ozx%2B9NNn$;q!vQz3~gJ%3-$!$(m1o&$y$R zXsAXJ6pCDW*9GQdqX}B2Y&Z1N>sIT9f=rGBx37mxqoYGDwtG`w-Px&D>kPX($o7g-E*$_WuDvDpbl-z6}MNkJrS=hXyRnRYV zS^liot1y87Z&isFf7n0E7f3@?vu{-FWg7||yqIpaEW}=L1vmF5H7dcP9R|UnRAR03 z_pt)bgR)+rytKJ-SQ>Vyc!+MMMkcjBuXFGN;PB_i3iE2`kClY?k?Bfed|zi?2wn5; z4(m);x@4#>>-s5S;%1q<6ZMM;`(5!h&P)B{jOxx%*P%mWe)lcwimW?wW3EDVmo~Q# zo36VyI5{6Yd2Jms{rYk2f8Gh#8Cq=JEpzAiHAW=(a=ujmQl2sW{O?n_7sI+-Ze(K+ zZT|M+?NY7~(E5Y8%$Y{6b!Og(M(o0)rEgD4xgPdx9;dl z21xtEax8~gnz$nxnd{${))>lYz5Bg7igU(H*oyeZ5B#aqOxr5NZIK(*yU_X^C^A~- z9coOpMh=-GO{R43I~+|@TMIJ7CJd3zi!2)ET?LJ}WI@r@V!zt#MO-2dER~EKr;Wyy zlRTNaPF7k>1yNtHQSZ%)VCTu6##nz00-dxd*Jmqa@Bz1CsXeh!+1_?H^JJ5Vl`;^G!ovu9OBUr87-Ds%<@^ zLrRkC_>TCw(OJ0dW~0XWCp!`wOANark>O}rV!``IXO!XIq0C-;e7WDA#g*L_H2HAU-Epo3hcg4??f+c3+rJiYY{`$$V z0SUi|Rpq3rXFoToz1~#Nm_O)_H6lj4L~uRC=;N}&n*CUApGDu;{oSwLDk(gE5*U_k z`u6Dctoq@6xnP#XfvK;sU1yI{9%SjH}g+v(Tq ze>QuN+vZd7o~QDdp1e)6%got!sZT7&@-NBNo-_Up+#LTm^63z^isyC{rQO4IGpLO) zhv#*OpS-H7Fp!JT!Lg4_sGA(LP9=MOlT%wWgr3>TLl*cGE-S;`aSZ5_8eq#APmMov&(9h&`? znj;UIpKWjBZwyX~Z})shUB_q}QRi}YJv8C3yei^&`iSmaUHlwS3bU0P=D%Dc2Td7R zUm!_4t7Sh1v#^GgxkstF@%-I+J<#?{>96-TMaYueZ~0lWbLPi)ns$XA1wQQkb7avm z?_-;Hv|R342o5RQYM1i+%72-0+1&Pe81}AsNO(tMw(!tRBuMK>$CvcSn@;EgiV`TcLZ{&`K#*lFMMh& z6}S#Nl55a%>nwUv`8qT29qrSaNtXE)+loY&R&b-o z8_s8mrP=oga(TFM-`SPys#1&1QO@D9Row8{aoCWr3GwqL$7Ve&Z3`;c_@U0+_|yn( z>054*1IyyY{kQyf!NF)jc-YjLRFpbT2j1%92WDx&HS(J9@3n|TExqE6qjfO>XkNkk zE{}q~nBp8#%%Bn^miyRrAg>?sPrAcy`R%$UMyuin{u)XBTatqpS>6MQXWCuBEaJXa zpRj({=kgpAjy7t@0Gn zl|OgRon(Z34a*WpT`WlbeQ~a$+#H|T#2D$Y5P&WdOttibM_-$#lQ^uvba}Jk`#=@_ zFSvXpvJ~nkOKN9Uas(t&JVYfj>KP?CTarRYckKl6Gf?;cbbtQmon;f$Hl!`#qezNS zRqM@MHOK9Q+8Cmm&B)sFh~N;4tHPW7IdUYkNayzz`K99kCKlyBpr(DC;wg6i!Rw9b zoYKkNz2}sFcVf7*9Vh~K_b%mYhg7*0)0W+4gxBEO8)^m#+e(E8^Yk`XLhc=6e03OO zjkFI+3dSk+7!V53Rts$4UQ0QjAFfc|iZG4QUM!-e_AE)@iShpHYPr83Ag!KOFeQ%q zE3WsTW!5sO#N4FNT)(jXIQi@T=jQ>nqnM$BMUZkpTJ9V;q>DxN_q)I1jW!%>U7otR zHrk1EF%FNUE(^czfA?8!1V$s$7JqxoZLEQp_8H2|3s=pv+k}U?z6kjTIQ$oID9~c| za3pXpUd_+UwHMqCIqq@|2&lQ)u4Wb3MHdiV)>IUng&$l^-Sx(}qMx%{0pxW)EvoG< zyJyKp((n1S0$!RjeG2uGpBAI0Nf%vUncDP3CRvE{_q9W>zVTR^@(3r!Nuf zclg$>CgnP}9~-Pnh{$n~O4-e_dgJTegn>zkoym;3kxk5^^6Z`Gr*zzby%*ZLVKx80 zB!(p7p;GM%=I>lF^E^dEv>Y1~n>X477V-~)y>sBJ`G49C7Ad1LNTV}$!4{J%%YZ9m z?f%V<3s^>3=hqQ|7O(6%+Y}q#kgl9wftHVETW+{VgO-I87wKR3Reg(pKQ-a;P=bAp zzd0Fr7r@r2gxeE(Od_ps_x4Qqm+}nRu&?Ham?nOs}%NXcO z7_dJBn<$*<{qI_ShfdGM3r=jUrz6^iNmxBiX&H)b%TqST02*5mSO6 zB88;a=4T2`jCVhMp4ICV>(=@CD-fd^q~kqRw=TA{g!i;DarUzn8lDpvHptl5luCSA zUqDkb{f@_9CE&lxD`q4ypE`j2uG1&U^)C(&+OWrPBw1>3>)o&mEE$cIdH_el&AVYS z*}StmF7(^~ebq0K>vY*MJ-6b{Q^-!QvJC!l^|CNi2gg(RO(Jw$)$oJLVQI?P;$C81 z_f_iQ)id80vp5uPkoKUDL%QQhAC4hh-y`OT7{-VcQ?vO#&aPrQ+VaH^ILykodRiLLs3 zwN$oeLslOPw(9J7w&b`rhz`B?q}W+wO-Jta*ROuj8b!78IsU$!GRy5_1G4o>b&JNkOz}UbUQ}L~ln6tu63b`%JezUxW(~(6g z_v(X@R-P$Ftt|}SCC8Ht`r{PID@Tz$`pjQ;!bB*eMeZ-B=fb4}77xqrx+@%itvltv z`dL+4j5{2eHTidvws;w9>|MH`lKTFnLAoK6?NOtxSKp4;QsC$ znLQv~vKKnCn%+BfcN?cwL-#o1hOdEJV+nA>^m(c(_FUoWq}<}!WIxHpF%x?JA`udP zh^4xFr1qsRYKA$GNiL3P22#xW&=kT^ru6w*lDcoMqn3oQZ@&}S?M@ROOsMO2jmxt- z%+dXl@f*zjU^;R44~7)Jj$}`kc_U4;lWs6?kHXaEf8^=ny1t@L;ZfJ?USD4^>>leA zV_ttc@!Q3~CZ?hxm>joK6a6K#b-|_4kYMWbCn!@C91r2!Yctk?Lnrx2xSASS3yfgw z=R6|ChU=HkHb#S9`O%jBs^^U>F4;RdYcYQhh>q;z{dU__+Dy;tb=T%IUDutjazuv{ zt~*<@>nD}m-s*08TbP5tzcm`6)@@EJV(}7D-nCNTkh?H>^3_CF>GPsV+Rlj0m9tXb zRh~&1bM|ec7KgD1d3x}2__d-;{DQ(vHp~x^O5;uZX?$SnZ5~tBV0{o80$-r7c4<`* z@vjQH8{j~lI5(3+6IjGjB9HLxP@0AuPl*Nute$``I`QV4i{|*WwU+E;<(3kG7E|N* za}zu?BV2QDBhEwvg%rN<4EJ`fsr;&J>BzFZ5n@$n?yj@DZ}WQJ==FZ)P5m9D@nw(& zQy$#1jG67*!Ud@Q{qszAt$PMh>(jG!MxW=pO?ec5>N{nd^2p`9HK}*IvNduTeU`!g zN6(gfL?HARj8es}XuK}z^A}y|T-_;))GI&KLD?7RX_(r;4#6}YE3wbJ;@E9+Se-oNyR1 zAKL5!F_&kXdVMdN9cq{l{UvOR<;|j#@zX?WGub1bw!X8CZ~x96aB!`X+HzdT$H72E zW1vf0{kB0vo1)~;_N(mG?`^RqtNGqyzYpl*^9iLljrHjOBN>49Qn+k&Hbn9>8bK`G#hy@zT zvBFL{6{h;S=$tvf1}g%@U8~=H-^<;o+g44-dP>}u_NoLKx-D!HZ790E@SHN_3Tbj& z-{{f*VOGmdeI2s7yi(nN_%`$ol{tDc$2tJH^Ir{OW9GhX@+I=2pN z^083S7SPq4i|#L|poop2DW4~zttVoFd6G*@si&SY<8$P3)rZ@PY!$U)HPxtIS-uL{ z?zP9264~#}s{O=pUh!`bcy@T;>piz>n_lnP0HdYQN2Fm`(O5Vs`H@w%@-`AX!Nru& zG{+>mPwvZ`7YoZuc=wP4pYe6D?e9aC?#KD@xm5UaV(6`fmha3XSR>E(3;F* z_`5>hJZcyw?@;!3?;| zWx|)!uOlxGN@9PnmvB+SZ;a%lYi};ri>v_&&vOGOoc%o>>jD(a#CboE7-(51@qB%U zEo-NKBOaoYf!?;vgPEIP_K@h2AJ?<>y8afAL8CxpEaaavStNSKL?};Ap7BrEk}V1T zD$7~?av|sZ;s|$p>E#)Cmv(Y|{c(<74y)3M=f<_es2c~6{ry@L@dN2d{qG#EJ^fP2 zv>0Jq?)$V?HF$-Jr1w-+>{!c}?dZyj7EMfghi;UzPa_fa-VCGq;MjovZv(i}UrQd> z#>Vs)&y^~Y2J*)W2mJCbRYcgL8hK$k4tcy{hih8nw~$VGXq-tJEU*-+_yk;*B@GL* z{ip%3rED8zPSk2zbMC{;ez(s`-b<1F=_S(t}Y!vocW!drN zWW^CD^tB_SM5?9mDbR8?B}+q#oKtLOHe;LFNGWtUevTGZNW(AXYNA~F!&1E#^M&9L z{Il$9649|5z125{hOP1QF4CBy(O1^G{HqU-iXMAa=r?49ZknNZ-?5<%Eu5Vt2gr*n z;L<1 zhm;~yik;N>&9!cI_^3kZBR(oHSF8qH9by8?##NyEPWH`AQHi_vySGimzW3h{Yh?td zvSCga)a^EP1jRO4`C>nb$HIHbGbJDbJpRmjq1Cm1L zW}4OCP|)1JT6^jWLO8eYNcBKD8nj@w*3Iubo)zOzYvM(Jt|Dsu2}Nb{nA7dZZ}jcO z%QR_^sVj_$+AcvYwlH)-EZJ6{0?bk^ddMcO!VF4<77nkY35-oSzXY2*@2I8B&ATYq;C*;#+urFzkB z6zN`RW!f6*l)-*FAu#;l>2>xo(lDGm5pQI{7wh=juPm_HdZRorZ;`d7swL>oz@%q zINcT%lLiA;4YU2XGyoh+1lG&m{k@X{$UpAKzspCETgprT>TL|x-rnmi8`s`}rVl&? zI=I-&$uR*a?&6+CdWuBNYcvM-;w5o{N=Ogr(6Ek z@ZS}j#wjWfEQ&v4kl1fMiL$Lw6T9<7;E&TS!(*-zEQ~u6dD|Qw-OLh>B~8UZuaiL< zm6(CuH;1lL!u>CPWjOxnHPLlv$$=Q|{fXB}yx_+`zLvv+NGo4N)6f#O7(k~9MlylC zqCY2DwvNcf8##4=)`aNPdQFVO^gT3Gie{idb!fO!4gV@WD%Ef?f7#(Zt}9$>9#phE zZ8iMaF>-h~2tV{;OwRwTmUOd1>^Dcfnw3LwB?dqYN#lJBFU=ldd(_)|zp&`&naRMx zZG?>4P2gpmwab5=klh_xcyCw6!Dv7mTVRcKr6ri5vw z0X{b&Mxg411}q`by?R>imD&F%xSI@u>gugDF3?80S0~QjzX{M#X%MavLMHYjuoR@T zNJqDse~So;dpy1LE#W|B75d1OFfdtIdZ1WT`tlQEv|oo%jYNRtC-SlRpMwUf*q1^; zQzqK`d5O(#miGbBawZ+zm{tQxd4DJX2$w4t0YQQAaW@di9UOP~rU28!-ZWvF?IbFj zWRL|1bSh1OMrID6*g_P=N&z=txoI+5crAMFzCPoY0Y*RLR0F9y*UGe-biWA!S(m#G zTyjysWg{`AzATV{X-422mX9{N4)SHKNuQ#%XuZnV+pIzM)|}}XJ+mnQNhH<$k`#w) zYQYHOlQdwks6HlbUBfS^4W}@)eGX{A5N02NpIXuac(_{$+z}ieHw-$Vi ze5&L@{_(=_u2-V3g1A8r8!YfDT3BK~0`kBw5-Y2cPwadSDOaWf9>hmsg$jJ(LJEUP zy0ywRhO1|7W@2#7CHCEt6l_N)rj*1p2iWV7=F?`UZC_OnuMJ{2pOMbTu;TF<+aKH_vG*Qn2c7v?#x7C(V35RqR9VpW6x(2+4W~AsN|S`;uRK1B^G$$Hh#`?rBJ(#; zPK31o;AP(6IGh?KW+OL!Ho!Lqm-!3Zx{%#gLEU~JS}6XkVR)<}j}%!ZepcS$1XEe( zj*zNermXIYKEwoyS?i19%bv2BjQ+e)xbf`zTDg$w!Soy#aC#JpU8BUHeMKNY=fOZk zS400YIRX#82?S}a10B%80=8OZKRsc1WvVEAq6jN#1_sN409Ae2$4JeK<4gY9hhjPy zeQ=W|fo?8Tf=>tVN{GOUw&a(F*h1FtlL0VA7;;?_F=~>1<+jEG$7mp)NyE(XANG{1 zK>9h~R@HP5c52o|LHgB3_*Zlw>s)&TauEw^oN<%Db4ANJY|_9bV*aiEr}-$+oet!? zMGrqYRYx*a$GeY_19LtRSnR@Gw7nW+T>%7OW7dF&&vWZJT>W2W^&DN@CA75#lp^q* zI)wLM5qO8s8t~{i1W^TpBK|@cf##_JfHn#17^zJdxq&dLr3DqOGr^%Gk^gas@F^Aq zH890s4T3SH3)dkGjN{c2a#N>1Zr8Qhl`%V68)4Qs9AEr9^Ql-r3D@^$6&jD4YRK* z7YL*M9SfBE%{kVOGTvSXS}jGzWUd2>`ZA@&V2xH=pBVOl#aBl7DmGB?t&aI5wf7(i zP8xV<6Abx^^db&(0jjhx1=m)q`CM$%Tl;lwj@K~xjJ2;V=ng;&8b3~a|A0%}OTm>HnV%&8;2<+R)ky26 ziewDyI`MC=Nc}|$7c2Ux!z*w8*J!XWXe}F=kG6DztWPij#RpMX(@G4ntquViWdS4) z!m#=m7)ZCBH9>S>Z|||h;MUVe$XlrkUo(XE=scom_5%`;&Aad z;OswY>o)}y>sbL|lKLZEh-AEMDTJSIzFtn3af>9@oKqUeJ@P`x7Z%aaoD^_tk}S_j zB1~G8K(%i4@G479WTGkpG{poc?nh%qD1G3a(7|%CL0rM3#0l;qv;i#!ot1+9+JZsv z-HZenmWzg>OVF67ut$U{b%@w_9!PdeAHaSS;W1TIPYiZ~{G4L~bns!=k;?p@T6vJ~ zCIcLNs!kwWHey$@OPUn>%5?lQ7aiB;<)^J7jgCd7NGS*dk2@mKo0lONUYRKQ_72={ zD&IG7Ul0xtOvHW)N6%VJX-?=Ok#Dfr=FGU(J7QuFxzkNHDXcla>D5W+mr>ra+?%l+SHFFN33Jwax89Aq*^0*r7uNzL*Wf zgQkF|WN8xKZX@=a1wlMJqcm*fWsHL`Y^n*Idu{?U}S&iMoI~J&PUJ|kpVs!%VjdELL1FnF@C$1guR8- zpo2AS!11LJ-1!Vfcs-6Vsg?lMZj-?;DDsJhY>@IvFpydsi_P~y?AMmy&~mFM>Jq4j zG>O<|#CoTC>mvaXt>3{^j-)PN<#poLNNbes!7;Ulnb z!x1LsDxfh}D)}CK4N$gJC(N25_Jytkn_Mu$%tHid>;?ePz!EDInscV~&6AbHmrvZ% zQ%g9OomFK?e8kfaCCNULV4DuEAA8GWUqL!_yErvDjy4g?6ptbLa~M6FP6X+1ki+vb zH3+S#2p@enPuuZWY{(@7G)@l8OsOOFv>@x_rsl~Xq>7wNQ=Mkijqm~{YV(I2!0?oa z`F@oO2+U)TASCL68cjd32hc^!#WRLs*>XrYa9CIx=m%+>0RfKnVc0E_ZZc7Uluuj- z*y}kqux1D!3?=EYvEl&({x3~TeH_R{Z>egCX3m;G#9WJrNF|6Dmm7l6@fMVM7`lHh z9xYc(x~X2pMC{Y8N5}&Y1ipwKbl}VkH%4g?fJQ`eJvoTUnHHWXfkA5qLVk{0nEOQR z>2ZHtZm3lgby2kuZ5%d$xHuINpIbrz9yEfGf9-sR_(;O%HiNs^DhvE8k2c{$T_GgU z9FqC#Ca^9OiN%rDdc_0zT*U$>cgLWgGD2=mFawvqqhN_e<@yR`kpn?^*LP94d=@=? zu@WRf7lrL1rvaaolnj-PsrF>RvVv~GkR!~6Xf(g5&gM0E4n;o1&lplZMFC_^#9-5W zF{KE8P`oEId}|6uC}3{H+70Yk+e!=$1ZyXDKQ1B~lg!wp6l}PA{_DZBYY?&Dni$t> zL$J0DO(0}67K`0FIjXI_4S%Pkfh>B6Nd8O@asXRS+1KV1O?V()9+dDc((Blu4pE%3 zF&|CdbCY}2Tk~Mq`BDL8%kkr7@DCki=Qu*9HBSScuy!2uuu^{DKp0-Xu90Y|bQ#Q4 zsZB^sKqUX*19EBA3AWYo2c`6IaTiTOlNrLKRTOmcnsSA6AkzB~}XO%s@_=Z8mrn_U`LD*(TB)7%mARqREFp|sR+l8fz zbQfob&%m{HMn1)ypo>js1OXy-In$QM-l*r-y3@!`y8f;~R~bP#^|!>S>_)^Wo+QX< zDmcb8zo$SEL@gJIRk=jS6hJ{m9+l!#J^lvkxMgTPmuR_yRp_>+838R0ugHQCws>j4 zwTF7Gk~+E={Z?5_X|S%5Or5Bx*R?2Yt8acOIvC>en+47zu1V-7ZJMOF`rYW@DqXj? zvQitd|FWHAQ=Hmxg^W@PE;s**L<+ngZo(8~AIbryX%6t-`CWamA!pOcl&hxGk2KB)NGRi@i)ccLL__4+&mI! z{bEFH%)t*SDUratTw(ocG8t6F$PahLFVu4%WVyi13rkBUNH%Zp|Dk+6M&afU3zkN= zTbdIQyF;@18MxlD_?=ag#t^?d)>$#c!6Y-b#u@Gpd+E0gl z@weB?r??yCOe1kNvKZG7H{bUDgqd$M49Py?PS37lvflXi(fspWAAebb@77B8qN%O* zT&~X;Z=ugYlK9_ov&K5PFkEQ@jj!(u>=5mk#(#1o-S?ROqTGpWEpt4~hcvPr`y(G|96D_xS2eKyF9dMFdzbi*9S+D_KDG}HfhkT-~HH4v*98SHVNiYkwM(PiE zd+SOVs{I@}|CnbqYR-&*Bo0s6AdM<`Ndn$Noe+a%Q-}0m)z2v`(y|T(+=25b*ms64YE}v}B5eoZ1yZ zym=rDXjcS*GO$&uv6ekR!_^31cNYX7Tb-XU&I0LsP{FIg`Di}}NTU@KkPD8*&K2bo zKcOcE#_}PJ%phNneDTkJbfE^Ogjlmev@>53F=M7%s1lwedTPuFFi_tz@frGdR^W&t zhJ&VL8n1z(#{}W;TobX9B=ol61sqKxuo9*i;;Z|Ra%)zAeKZ2=XPQrRbBB~$*_wm8 z{ELnJZQQhhh=7eF&)%dT3ueIfM3lg)91XZ%_s2#NJBkv)TnYpu9hFJAF$S@^|1~y zI;=wozlGSxrD(t}wjlegMG&=UxfDrixaRtMY_#knWGW2_gYJUHK9a$6#59ozB;>O= zGn~owwJ%Z#a?6?xxEv*bC03M=_J?+}hq6K7wX&T>F-G`pGhl@T8{QI3V&$H_tJ5wI z^ht$H&N?upy1S7~siLS(DJ^`fS3S|wA5v~Y4`hPEu}&c*4Xp@@FQbFIyQmW`rW&!g zvqfgLoPN}3N*gUrX^H|6VNhkY(P-7J|BEv@{KO4{HxHE9&nhk?y1syjnZ$uk%mv{r z>oDZWFyfgpGw^^UIME6$c61>mxkwt)W@IWBTLFe2piUW!xQ6Ot68u);$HZr`tkZ8vP(XnL!us_uap4BbB5>#;A zICVmn7)fg@gNn*%;NGt50E4st%aPqab^lB$A5(ytofVj~5dCRM4Nzopn(VLVMGEa- ztF^V9O$TlLjl}wmog7h^-iGgy(0h;-0W!M9k*CU58h+Ts_kxqTei)2zWfDS4! z;$8-Y%HA|+|4RmbI9DSCe)S`KWg*=vG1vhjHZq!z{o4joY?(TXB6T;6Vi7*LTcQD$ zZ$JlC)bRQ^O~Qf^0&nZ~RB9;}D;%AV_7#Ghn$Z9_^B8Qvm@j+>uWae;Kj-`(@ZHx8 zz%J7izD~iWfiVzwwn)HC7(t9Fx2`8uGkU=D(blF$AY>wFjAQjtAfQ2b{{bOWat-8u z%mM(QDC~Ox;Zq<3+A5`j`&X<11J3^CxeXI}pxTW>P>bYUkZi4yPdNoBnDJgI`WqiZ zPCgAvo58)@>?ZKt^(L}HXmKg2ck|6!?qS-&{nDtF9|YurI0BKO3?4vrFEQXa#p@3VTW- zFV7!oV9?Pi*gwnp=#n-Kc-Nw+kE1C(ZzBmCN}XS-CuB6*$SoRR3I<%j;R37nh~$zx zpp;%pILEF=q8}8pZbJc-zoDEqPVs?SG(03>mC-z;hFgQF2f})=bI*iX|Zr28H^^A96$~&SCarjeRV~8V)|^%h{b4vKa}9e{tT27*oXx7fgLp~@ZW@~sPXdnOX!y>^@`ug&0(E76kEpDk<`ljT+yxOmWPG8t&6jVy-`=bAS zjGj2z(hP;a4JW?{`*30oC$unz{m7ij=BnPLC+8=_5|mEIr7)@$+xkHODgiuMmi_`2q2x?5- z$)0}bJ9N~n=$tVLb8e7G6KINN?={B;??$F_*IpZ_v0Q}gKk$V&8lgw>K0=OXlm{LA zwNQ%BXjlFzw{xHI-IIP(;c1NM_HpQ|U++2clf68zZ@A<(z7g)76y?TOJ*p}@ZxW5PDvLuF>7h&^Ia<8snNb zAGP&BV-sJe?U(Hc3qbKTd83dzLc3MYETRX==rarbV-@bbZwYHTJa;6J= zSKk@DaWfeF3xhc$W)Rg%lNinYvu*^Dd7WW}B!rI$Q2nHt3 zlkf4S{;P+M&;LYyGzQbx7=~R2`ai=k*LO6d$kOW`-Y;n`8JZlMG5LRqWw92VW_T{5m4y}huOI1UsJr#9>q(&_D z3iBWQQ-#>{{f){^|)%PU>%QvDS;$8*JaqklC`|%oJ@Ud1~&sx?#qv zp^(&*0L_at@}(KSv2umDbJ{*hFq6SXwWsJljjX)8q*nU!2zd?dU@%Y3jTJ>cJ7M6* z!duAbOL&-tY)Qh}pic0p4vBO7L7Qv-y~ttuzMJBGiYH;v@(2w*wx`Ud#zC(vI^0s( z(-&Xyawn$Tdsjs1s2G0o807xxmwDa4vHO9~KPI>ojV9Y?xcl~G6SJRv^vvNpV_xBEhz!y4YMemk+C+cQAfvESHRJo?z4EqIu&=|xOmR4|jO#S<-K z21D1y^=t-R(xH|2v{uMhw!LWX>$VmT5z61UrmpPq)hJy3dGl1uvEw|QCf)Y|`G~2V zhXh?;#-wkb1GjivdA4@Z$$3d`2=iS(cGHjdIF@J}pIJnvUsgeUdUa4}r|(va@!O}0 zTu*X)HPg$6$tsN>lBl#P@Y2*ic;l(F3YE=6qp0!ExJ#8`PAZgA+S2R+S~5TQ?$b|A z%>LS#o$@+kQV@B-pS(YjVDH6-3XvWXb|OQy^r^=UR28(Wka{-A#Bd&hor_ z*X9_uoDK3xy_S}z5wLd%HZ5reci`W*AMM85rQ4kJm5K5t?voTd*OPk4kfo9feXBKJ zGR^P33HtM;38WfSRKFY>o9F@n*=;@@+OCnZ`;y z1~jZ+npFQZe6Hjuaffm~A001BO$xV~nzuBd89!Cmop?KBFFx>k?paLgh`nzzv;en! zV^z-98ETu2zlJNi3K@Q;ONZ(5dhlF?qzEM){$Fpqx9QYeWrEotWjH_Kk4g8{JYi#)wULl$26ites4wn} z$F@!MM*p>*y$1=%ybob0j!X@L^}ewh`Yfk{f6H3Y^uWH&&2zj~Z*hjT+@*mUd|RS* zY~QgC%u)$ouO!92{r4m$zNRQ z&Lb4wdFZUTAfLViZgD3IiE%f;LDJTAUaE<{&ja@(O+{Rqa?cSN*)_j=Bf3rk6D=q0 z_|ngAt{;{@(M&&LZFhJ`;rK_Uz4@+Odeg{SdNQGLm zPrnbpX3re-2*Y(%5-s@%qwmCBZE&2N5o)M1$n5=}Im-c+mwUAggFe$U7AJl_!wNy$ zr7xkQ4dY)UqTCuhKO`zWyV2unl~lzh@POjP{7Ga_0UrY03ni78SiaxU)Qyj|7yer= z73KFtT-u&Bdm~)?Q-=KaGo;qrBb@X7xmYFjv=%m>EpXgYMn=ACwuleU{;03SVz$WA zh*z#j*u+)J{z2QQuMsI(398{IWlq>1D9l~#7!zg7DU~>WAGA@@bfmm(4*AP(UB(?g z`GY6Dp(V^;nCqTArgCfbvD28GlW$1JM_c3*MF&uNRV7Wwz&kf|BDtTu-xIH z0fW0@CPUIJmtV)`_ojv)YcEo?8vlryvqst%s{G~omj7#q>3ovY=bSQIGrk$c?0PA9 zP6OUw4G5xYt+d?z;gQDj*OvXB!sJ1-E@r}X2)0VH@9za#E!VHnUuAIpaq=c}d@X)Y zJdkYf%`d^Iz_oO9=(yO}*t-?MK96PaiiN*P`mDr>Y3q9ukM;?Z&GJ9L<2@eV6me2A zLPg82*skxDdB@!(hIB@fX#C_!SNpcTbNlvoF*ldn`SW#1Dj1Rg=$)ZFl&=>CQW8`lUp(p3pvZ$>c%)-LF}o#yqi4 zBws%HCo|*dJxRxPu8}^!zVuH5T~V@~)Rk^=N_g)28+(B|=o3k?KM!xAp&Ny+{(}u$ z#x>t(tqL82oQoXZe2iL##W{qZ{^UXpFUw+uoI9J=X`(NS8quyK)moz=GD!T^HX+L6 z4E@7&-clB>Hfqr~AsS};mHBwbIy{t_&EneXUmd2XKq!4EO!VTYFnu}5ee8#AAo;w= zyRQbVr;5=Y$+nEMF|aJv67{&=XTs+)2~qPi?CEFRVVp};dR6=FCL8{}M{W04D55!6 zb<@Rl#QMf_DfY@t+j6>{p4dpnz<#Pq#@OE9n%AEm87Ub4CAg=o-aITp2cf zPJ^50ZP6{AQ~19?@t072rrl5}H?t4*zP>xo%5V}f^Wo0pct4SFtNUphOWx-GbNgek zcLhVmcx^ipQ;|;Rk?-EXMlJ34Gs?iXN8mE#U#)E9U-QdGA_@gW$U`-Iy{pw*l5{3^ zNnB*caqIGv+P%#SI&tr;8lOEkRGn+c`<$u_WlA`*Hiztsn*MEp;6=OCI9gbD13#on zmOaunN79$*mqxw89?z3Txh9Uh);ZoP6)dq|>bI!7WY^UVj*%zb6i%%r}Ww6@Zy=aQENHc{t~xb>}c-{_>LF{FIzy^->Kg+&a5DUKM} z_$F|eOPZANU=6jPP(KC5&+s}4Nf@8+ua2@>9mYSF zxrR^9Z4tkSQO(a-H<85XvcD()_v*Q+GKv4Gor+_h-12wq zYmGmG25y(d9b=*V!mZSEikBP%U!~$wHBB5QsX;s{>Y^Ie`7an(9@hbQvYlCP8|x9jat_k|uR7PCF&HBMKPzOi!J!BF!y zE_;49$uLMb+(NP9Yjx;4#ZLE#D@KddR~OrUcL$a(2QEc~+1^wenQFug{?UT95tpy|4bQQmFnK#s{p9t+wrMD|+cn?sVQS zmG3=eyYJ{XO;M9edylceA;qak+;qN2x4O@dQLOJkl*+Lg?5M3}clguo`d%+omDV`M z&yl~cTrGU^9Y;lK%|&5h-8n_Ew%x-ivYI$zpUZ4+)a2U~kDs`%a#(d=9s{ILeKKR@ z)t&BrL#96ZjBECa_g9|QDl6pW-kUxrTY08+se0e0GUt-Mug{($Adw=yU?yymV9>qU zT|MkDY+qaa*pZfJZ(S;U%_(}alRRDg!L4umD!pg6rjG`L=)8N5?&yhpcl+^Fx=Gr) zznnQePWKWne<_#>5o*)u%HTr~3_&kvM-l%><0}TT2e0{dU5N7S&0i%ms5LO|afoGq z2>B%kHtFlP`^0tjAA%?*wx8ouh;?G^yTM}iBBF_udU>mZ#M8GX84oe;8A%xY<>?GH z*|^^u`=OzAH`H?A=~2ikiBqP#uJ)@y$=mCeU!yE8FIZmZh@M_)-hNqpo$EcTy_!7) zdVf}aEGo2k`7+P&O|YlnH|Fd1Dt9mDZT7GBAAVC5KDZh=_eZ0~u137B3_oB!Q0UBv zGc_r{$X4>LanHMU?9K;{8hhU31cp4!(Gfy6JCSgA(7}1W;LPG$UKd5b*9c6NZD{KB zrbdmnOdIp+SrnrSW}@&mp4B!?PTAS+ac)VC2!7c%{7{@1-OU;{PSJ@Gt?)MOUHQ3x zxo^c@Ae(6Jo(D#CCaZJh4e)0Q7U=61M5{Upud8dGO>Pq9)Uxy6=wK*J2;9m?%0Pym~=hg_3RGe%Wr7J8nnW_X5~4{+S;gvaX*V zx%ix#<*G>h%N-%>ud#XIW(yocAy?nQR_Um=h`r+r&p=X%W#-&`wpu-GdV?Ql_jU}N z{e%(!SB9p_t}+R9nsZusSExYZB+A{J=73z)Py) znlbMB#Kz2#mgCDypopEkcY3^3G21_?|9Je(su$zLJG_I>qTPc%kWM1SZF_2%?Pbr>Gfqn1MK!E2 z#m#=zrM%{Zbp>6;8Ft~7pQ-er%E-wD?JT2{p z@8O%3zxNn&YO{0!vhx6R90 zrBOm=v!b`jd!kjY4amkOAc!Aba@0s|f!uRXbtDeoy=M#(T57%D-V9mE$(Rqz7-UYz zwfD6Lw9M8%F1zU+Y8HJ0+rG{cD4b{1Pf=6Xq|vt#E4t4M4rpY2;ush!es;?7Wc(PG zp7bpxn3Hx%-@e+!^zIAqEA{)+7h{QgpXOxCRRWByykD_LXWtaWZSquzXI-$o&uZYz z_RHnQ4qaK*4(VpoH`vLT-Jon^^ID{WQVd8h0v^H6f%HAIV#8 zFFwP2%~MaA4=z=_&TI>p>lphj){#nh0Ku~vM2#Oy46z3b;(x0}y}WY^?HGReTY4y_ zaEL&&dp6yG-kBf&v70L_6786PzeeA?`9#CJR*$G{A$;)AJJcQdtK;)KfmdUV_`*-5nA3IH z!lCOGHrXQz<1c9?%-##mU!`hWe+{Z$U|2cOQRUSP{lmcfLQa8KoF{+Cn7ej}zU<_( ze&W}n`KpiywdBCdwtF1%mtoo>m5=#OgQJ1Ws&64%OeSyHyJi$^%^O|P_%aRCtctej3OMk6Bd!EfcZ-{X!w?Erd7ZYyn0MGYUI#1IY-8j3IUTYt| zc9$Wr=2xo0)yJoje;!+c9U)y0IQsMN$@g|vc$k@!$PMjs{bXKsacve1X}J6kj6ie0 zqH$!*RWE^g=_g@E#1f`SV0MTBX3mem3>T~Y4RJc=UXE2&#afw)FzcpQm}@=?%n4SQ z+rI{&@3xyrMay*h{!UItC#=Tr(XUYP zF_ppbJ7hP7j&jyQ7opImb4dW|PRQXreh2;Jc~+dfO^(Laqh1Ww*xf%u*T|>PsU1D`uhyXEyZM)Neq@FVz;#-7RbXe*{$Tb zqt%JrR6DAWl4(?hnB@roolA(7*y7Kqkjo~671DSo-^Zd38{H_hX?+w1OAGD^jd-^; z@H4J{*EhKO`QAZAjaaB?^#m&3JcWw6F;LO>i>_iG=d;{$*hS|*wtW6$*3W-rd(7^g ze6Y-jgNpE!236GBL7|JNJ$p)9KL2@w&)nGzM#LVw|Idi1 zmoy^$BE=cMW!su)F0!5HWhX842R`c=_ZYLr&N$Mt={0GIege#DVyWZs7MSb519S2_ z9diN4Dq*L^8q4orkneG5{#amk6_^V@0`sD+K}=iAoRes-vyDQ(lPWLz0{{Ixjx)HS<$Wx< z?dHFa=OH?{q~&}pseMN;=D*j*&)_Uce}CZrarY(gF`eE26Om>}#>6s&TB3rWcG1`q z5}oKoV-JF;E%qQGwQHip71G*5t)=!VwN#_FT3fp!K@qKG(onG`2=hPZJonyt?ra&} zzQ4Dhzt87JW^$f$?|qi<`99~I=Xvm%ri%I*iHvoJnoT(DCsr%|cGCKvUO3#TOShoT zL0y8n26cnl4r~ZI;=O`}yYQcPugAOwcTTRgEsNX=7>V=sp@X9HAp{#!TRc+!; zeE()ww24=#CyfGfG1v?K66>lrxrR-D7V8>ndPhI~er#dADMY1D)(kz5T`AT#z@!TY z-3B2KpSg`bSr>$V5ssU5dF$1x(1f}!dLbvSXsFOl9V(nLb*!hK{!BYPiPg71K31~s z**Ppy#H5?F4pp@nxJRwp=K)6L7;~8}PISSc^c}r~0iWJWFN8+uoBgUyT#Y?t`Y+nV zo&-a!)wxr#1H!+;+Qd)ckH&cYD^pf1b*LM9A;_B=+#4%ZIG*+LHU97By8%=;X{(N{ zhjHwU^i-*5#izQv7CtA`anVkXqEc<4c21kZ>t%I-j}6b`2i^8{Oa>Y-96D88akChx zZ^8OmTuIP=c>`%L2imjTv2DFtfX#Hlc@Rj&RyTPC?WQl1b#v$mH0z*5uyCB7We+?{ z)@68TQ%WlEwS+tk6ub@;dW?>J6SNyQT!g|dP&oUbDJ2EIgj<(~ug0DseckX0P}vAn zHXD>B;zt+@P^oyZJ{mc)u2Zd*Cz~D zk!T2ro`P?MV_891@%y!}Ojy?k;eo=0Gtg_E`g_8g98JRpH3pW0{*KLQNS^JRiv2D* z(Km%2em*(Qji-ZA!KWqmd7Aseb|{+N3FH5T(9|7(_t64*HvZ8MwP7!e(}<$`QM8I) zIAe_K1Am0Bh)?+;Jmnd9N>S(#2<_7lcWUuBxVv$CLGlZ zzZpwHr_xV1VLd6;hE2Z}TOu^!eP5S2k5D1l7i#JxeGN4g%4#YUYATe~)O;2aNY;GR z$P?=bD#z$o_LYeZdI824jQqf$K0&>MdId%H>DAK$1kgyUJ9VXzuQwIa3%>>lIeOuW z(RD1o3RQ*NRZNed-ujAbF8LJv-|W||M;wf8F%Ae-1HJ5iqmC=rff z_4Mg2SBpL=(pRld8s_WOwOdeEs1@KADQ@(TKkA(q=z@E49s@Z3-BNIdfirp1Jrd43#+kMY_;t6&?QS>(x^bh zAhh;2={l@YOXfWTv2m>4bQ-a5&QrRBZq+qT*cXLCNX>35N}iy;;dY~vhI%^Ix*^#B z8k2RMYI%b8iM~Fd!nmtDjgz8j=O(zQvi6XEc-kz1ew*Z#?MZJqfgW|3KEdRIMe9N3 zp2B%&vfJMGL7Uca(2%V8`dy8x;Z@ecD448?s_h9w(=8O9Lc8n`+`AQs=uL;1o=6xK z+Aw6C2Ud%)Qs!&5D(yBrN_InKO$tabr~eY$+_J2%hyc14uzoQ zd+(%{|E{72dIJ&|W2w^6{s*!~0IckVmzrvzKA;umdo%PT|O!`w~Z1TQ;%+*~ki%M;3!4d2orb zLmFStR?_%-@F$J0)CEqDuRxRTFKU$x8{;c)JJoXK3NXHQl!E%bDq&eS!ZI9Rhp;2T zBzG7D>+;1KQn4Obth|eeY1b@@O@d;l zjd?L#F+CNF#A3H;bez@;Pc4eYc^QNw0P<)#YK=s@4*k?Ctrr#TEwwea=-%fVRkGfM zt+kTAD$ahPaZe_XS+p?WFtK}RUHB$dl&B{p`fi2aXA7^^aeZ05$GE6y?fc@r-;X05Q~YOqPyhbS4CC&hEyL>24OUU zv$oqWp~BHHumZvhhR^U5W~7ADI^cCkJ~|SHHK(8N@rbQr#IK$>t!(Wl&M8O3ARgk4 zBvp?VAuzifeHP@;McMDrxdV}!>e5%zP{Bum`<0=4G@+k82|34ReZ`=A;Z20@GYq;1 zFPCxN$RZ8c9Zk?3b!~5RazUb;o`HupF-s-MRlLK=l@;Z}5fUe$01)&!^Qe#OhNW|o z50-I8BSMlK>_SGPXgO=6aoq$+jvWnD7^ig-jmD+%U^KdueyKXLd`XGsn`(fgFa@kv zNW~loph`1UM=bK(G6K-=5iyf>weU-6vPj@rd?{Fglc@U@qc{*-su!B@+7<4!r5ai+O?oM`SO-AweQ!{h zZ~*?M`wYHBF)~`onnP7R*|T6AZ>gFC{|4BHRxDO|}K$KgA za+R1|U6A`7>4l)V4|Tv<$I~Tv>sXH-B)gOW>HxF>Exw3sz-WAKB3>V*Z+Oz!EC&&7 zDMQ7C!!bx@`_>LAY(K)OXfrIjLbM-~9?SM4MY10$qIC!m?Z;HJ z{iw(6heQlSqY==V*ummI$Y_jD=8VQLx@Ai{Mk9rc#xGxSMkAgIv|>ghoo45n92la; zd7iw{2t=cyN23vL%Vt3>w*#oG{m*XHfTA@T{1_aiO>yi^>`krrkmk~0&LvY9vu{C^1%K=B5} zNOe7ep^n+Hm}hepG5RFK=#Nq@tV0vB4$y0Kem6L|Dygz{$Y6=#DoIY2$;rK3Bw7d2 z{qWT!~RL*tS}Mw&wmPN`jXI;>Op$Ptdh+4_7Lxs?Dn+}X956J z&*NvN-K}vcg6q0kOSsl81nfMGH(0_PJ!_b(l{11-u#q+`O$jnX2;G$mB0m2(U#-eY5z+aiiwwOrY5?>GZz{MpCK|KLLy zh6pz89wIo_8M5EUDKe75%xDN8*)5tK5t8K@ghxR_K7b>E8RNeV$iaC(wxKoitxY3! zydT=hC~2x4AvrC=nbRVixb4dYqSN9C>f%AGbM_SI);*7K#B$+0iGqq?v|a=w1eykn ziT-htD==W5l8G`&HIuBzbJk{}qz5(u#e_uRtIXHY&r6A4;n2IsJ;O0QjM3I#^&)4nyEML_Ht{p+-tekp=v4>n6JEKXCg@Ra=T*g2X|9Z#?tPd1 zAIH)EQB)(5Q@5j9BByu1RI7F)Vrj#EhQ|pn4{)Om`;`s2WL>?YqMx|Z7XT~e5U8e5 zt0)>oB8nA_>kCP~k226MVtsg~6~lsU$-9AmrAW;GNkOmlhw3IGc3dbTV(2-ttDLS{+epI z17NQ)*7cPs+tmPE#KMIV3d{|fJ{m!{?(KY&A$ch=I=~P3+fY3sN(>+f0dS;+cZK3R z`XoItB7hO1eU?Ny!bm(hK9gv2RE8lb=Byzp{w(T6J* zLB;a0SOdo#c|KokI2C(=#a=qYk&pF~Ir3*zG#`r|5IJ&pqs)=FN*sBs$biE|j=a*$ zk@butua~?qLZa_k=3@zfUyrk2(erXZ;dyZ__Y(WZt)HoX_ofYZ#0nM)*Gf{?BCd=8z2LlnFTt)E%jmw;?I+xFKoMf$Y-sNf1A& z={I500ixNVbD85Z;kBD~#tV4jAYt~-`E;vOrkl9W+*ytn|2Z2?R>%QHi?xX!vJ>Xu zZ=BdqObqUlV-C`j*pdsJ*a9YYmSoC^s?fQjVQCh+eVlOgYzDpV^s1uZEoS?EI>`yP z;si4#!97f{-*HZ`G$&}31ixei|LY>WfebqUc7cf&@JgZc(b(o(Y)C#uyN;5?PTU6`mB@<7f~;! zZ41+8Qk%88Dzx2C0&VH2tsYIvSo1SGARI*pk2Z0ZWWy)Y&kK zhX`RAdzj5e+kWyzzDdYKEGq?kKy1b$X@%l(_9DCl=}acL8U=Gi!DoUb=#GNb1>n_T zM&?!;kAmb@s%O%j5(TTKdB&5KZ$!=^O)qz}@|fdg{0pozSoz-w5zz|i0-tJ>9;Lan z$h!L#7p=SdO!6qL6z447PxGY-$%2Y7A<>6fd6b?$kwyN1c~5p#y?~>eb10>v*l8w) z4yCVXdZbyJq?or%Qt`dv#td>Oy=xG{&V~s`0lL6Mrb8S1VW7*HlZSq#upBg{x301I z3xYTRAOadcg-NM%$zA0GS24KWf$Q}}chxhv{)VeNe4Yx|I=D{2^#ra8>Fz2U@cEYh zsm~)gYgl?5T7z>X3-(Wa%onRg#eOSUuz$*%FBV9}E|zrGKlM>p+4gp!qUj|$|J1e2 zf51QGU4?=gi_^%oUK!7s)=_lJD|SpP^H0@C;!Nu#DsZ(Vnbr>$Q|CWW7)m`={0LdBH+sRqT&4xo2j$pJJs-_ybY6qf*4|Jzuzf2uH3wo{|@PuD zQ-{0>=XWG1aDKrHPY&mErxoa*DxBe*e=5*c?u&aT&LO2Ai-@tKq*J*s_piQj?#rwP zG;!#6jLU#2<8f7x&Hw8D%8HJ|^|Si}sEv2U9Hf*G;NZhMQE^I!5jE%RTB zQvOQ~cnUH91w?G+zf6_#U#7tDtu)qQ{!30im;W+N3Kn{^G2ffqFPgcpJ)uY7nh#^C z$N4t%U$Qk8`7cvh{)@Ym|1w#b|B{_A=f6xPZthxIng8;PAE@mo+sc3Wm~-B6qsxi> zmyEZ}f2nql#+d04%YPZ|^cchZm#JL-i(-uBrBE%qyz*2TcRb90tNa(c`F9EJISiT} zhqqni90m~Sum3MK%YbH9tpA|2y@#nD*hd+%Qi1?$AdqeyQ`-||W zg`12&?>(`^pG-HxpCT_M{MrB5CjJCY6!B*fQ0%nGI7j&7dym7Pag!wc=@Liyb3K__ ze%uShA6!~zod35?{JDL{0)HA!B>Xv5NW`DbpDOTY?;RO`zMMe#Gp2+Be}+Bc@#plX zHt?s$M;!ieBdcKi(O!5<{AoLt##j1o8eiTcoE~3*KSL&R_@fwK@w2IxAA&V8HoE_I z_+y*@wBxYn=UBYucqjSK`8UR%@jt)7x_P{p@tSK6NBC2vn3Dh8SMZ-WTl}XjhdN3=YQ!Rdo}W3mLhDaj<(1Rq(?K88Sb7G>okeb5roc zlYjC9wa!o*{4l9G#}B#DRWLssdE_nm;nATq#`bSw{+~Whk1^nfzYgd4p<;|>Orl!; zA{+fb*WcDZ7Rgda>oEjE_=#@D!B5a=ykjM-pr!WV2Ya=i^1lvq02I!uD4c490Z<^T zA0OjyM~E^PUQbmrpf?|Mq+9yhsgiJ$?uTI<>`Wr*s;o+mkb6UO{V%AJY1eGSP9#!Z z#GZP6tTS=~J0ThygpMG71@{-b$U5jC?4Xr#9zBFQ=@^qP#|_wT)5AMICR*ICR~TLY!BNV7TY5V+vBI7xh@;c z+9R54j|izf+8n0#h+RwVaWT^A_J}s=st@J5sG>dmCs2E|2hL%9cvb46v~F72Pw7>~ zIw+`r9uMI9=gv`hyTZ=)&&>y&?4N&TkxTpi%~T&pdUEw~n{HXee*Y{pgzKLVNxCSj zkE-LTK6(RVGTyxM5A@H%zghIpPSMmq@BJ6qKj38l>|~_&Sh|tr|MhUXJ)nQii01mIqCFPGQ+u4g1MSh_ z@>}-Lg7WXZ8*}}&2HifZgj4zVulK!W{{4|i%BF3+j%v%jJ6BuX=>h&OVb|bvAH?<_dKNh z`}eMT%K7*E{-nv$pni({`?Da-=ihI=A_f~)^aWn28dXsKz29&7=KT8!{ncXr{gW80 z{QJq6r*4&hAN7fxe}7*q<=;0H_0&##9zz^;Ni22dDz7{+9}7CTG5lgapMQT-E9c)Y zKV^}BfBzFg+0U~?lpPSo<=@AjlJoDwJ|TdeobSN{Z1u}Lz$Qgm<=@|_&mk&@7zO9w zpGethkHAiKd0ZYo?pjL3 zys|NGIDZ~~lIG97?#lD$)|V{j&nhF$pM!2l^XD5EZO)&gdW-YtAAmil)sAsAe-1v) z&7T+bk>=0U7&g5gNv*%`I?kVQk8b0Rvo`0?ZogQ}pF8&^V7h-x1g4Wc74zq7$L0C+ z_q_<3`sFF0Y4!ykn*Q!-WBwdkn*%3qbQL^*uDk0k=g*BR(-^C?h{jkzxYJ_{z-d-* zj{GUcSn3F><+9gcjCDTqmhlyWp9n6#l1J16**T0tJ-ST;jiuk`s%+v&e1^?fWv)_S zXHcWpO+lVluB16Td^gV_$#!I1$i7b>cUJ7MQXIif}el{K>sFmksiais5PcNr?#>X`j#0Vz1qhL>C3T@l2H?Eo@i2$b$DI8pJc zHBb)G%8O6V7;9@qpll75pS3{*O7_56KeJH6;_l@1Z}*2Xlra7ev*Z8h6>|KipA{Yd zg(S!S-fn<=Ek|M~K`+F4Wxu0OcwLA>32m6xCpSIVsu0lV$7$@$G)}kDI21L0Jd$AX zF8N+Gsw)VKctV45*$INhRU|!L3??S_bq-*=_O41>x4 ze@G4yY=7*b%C0O$5ooEz&nU9`ki1kP>M^R&jEYc%2s)nOk#h&r?m-cPbmPUBxHLjW z5@81$Z-^+k--fx*it7nGbyKV-)F(y5yS>mS#TbJGqai6KGe~%7NQ%!e{#0E?w=xF7 z|HxpqYR?>~nV|jaz*b~^ECp;|S|CLm36sCtikRF6fWtiZ4j0J|;dB&rI2IUP$SWfY~L+!dJA z?^!_Q?m@ZiLDFo0afA#q>Y)99*aK*Z-UYTEtmva$laRRWcyV}Z*Mp`^ zgD^S(tyGk)Et+KVf&tuNj0Q@(F@<(xmC3NJDxu|v^m8biToU_2^i13YztM^(+&|}Y z4$w|@wus*5Q=exG>b_^w`DbM~Px@V+vyV7op0oG3NOSh>ofLES^4FAe z_WWPPIeT^oz~2e@w7*g)dvriS{RBy_yyC8su?GNWFk5n`GwC*qHCQxl01nJggK^Cr zdNF9`U*{0F=x&-QS|n`Rm~&I_*pEUory zXwuaerTo%jY2a&8`;$4TaRJQVSM6n%q#Ih2vQTw79m$d; zT^21#H1N^vj%Xw%?`3gh^uu-}di~_Sf?n7Dg*Os&v0zys4t_BG3=xjuTms|Cxz914 zoXJm(=dZ=7G40yN=EeM!SX)U|znEH84Xz4sm4eFyu0n8G`j2`0k}BI5BCgLVF(}#y zga}{^?w-Tet4E&&gL53L%>iTk$_i`K4d(rO1`!0091cCiix%IW(hJ!Zban#e`FJTy zm&MY9sdOTiKJOx?`#iQNJ%-5ec^~Fvz@pbbfucjH=wd9oNHTMI7G|!GmjPy}$caxG zT`Gy37&Rg7wAv_FjA})Vt^A|mS z+%5hYm$+xDwcW%9X(?Z;O`_edc(k<58M_u%=UT@#*Fqz5O27>XOa1&{T z{LMo=hMxd7oAzQDsGZ9ARf&rp*6Z!>A0llnnYM16ws{I|lTe!qAF{!JxZZvO=#|#n zA3NnKuD7p>cT3jPx#%ISx9@ksLtbyc;v+TpEDuBBS(@XstYt32H(zgG$r!l@t$(Iy z{kIq->t73zrbDpsr+LMF{XLvXPn23btsY8N$MyCNP0V+u-XpPu1}0rkQLuWNKOvOn z=SZ^Z+fSlZ#{(UW@q5XtBkl^h;+p%DJ1w%z-u;M-`i^s=QJ<$*tFpdUF}K;;o$~zf z@f{D#759{7mS7fHi6V*>_mpY21jQnE%9&(YYzJaoj0%kGCScew0+V9IixT9pFVWVpt{H3F`IaP@}k7r1iZDpOjm zY6e$-xROgNIRwui*1s`-C{|X%0Lt_P!_$;OhM&BOhFI7<}uQMtRlzEDvV}Uk*Q!6vrd!C?xSgJ{YO&; zt60z-UL%xVW6m(Utl}*3fuK+YtLTA6+fmUa!(>*GL87HYc~-G>7{@AVh4QRo`7mM? z#k$*M73~UO6?K1+S;hPx?XU{q5^MsF=LGQQ2H4^jEA4QLRGZvly#=?h$uE+J`Cf*x zvXwE61+689QAT7K1A$JY1I>W{!|sL&Irupj2nT+4Cz{dQm1u@qJEJ(!j28Moh-UoI zs0!NtV?;B;L8TV{*TetrB37G3tj-m&`hiG0?iz$4fY+ZuMGe1UNE(oiv;#f~;wLrz zCJacYXwN4fO0>gWI|JRLKs$bjpj)3I+EHUB7stsDCZdqeI*K;2hfF)J2%OkOCU(Oh zPWvy&V%ukPVq2KlU6Ogt(T+8YcC3x%gr^0YNx}n3Z~_zb|BMri-~@9e!H!ID^K?$I zE+=S`1ZyzCJ<~YBcQ`?JNsw)Ot^1jO#%pcNf?7#1oe`OBM-@aS9gIP-YaSAjIc*&E zJfDb6Fo>re0>H`cgDl3<@PD?)Q#{Wo*{%Ii$?(6whYY{}DcSH3IcYZhYuoUKKQ9Oj zf9_DSrmr57lWy zd?@{hnGYqTDeNCU%2)6xSuuFtMzUtd2^;KcF4LCTnzVh&Y4cZTtAyHCp|^VVymMnb}rK3n1H!LzSUi6+ZXIs80DddDoxdEE|Pg>Cl}pEt5>$Ch@H@CS7)GDIX&TB`?1+nUGX< z_C;1Tb~9sDO^{XLxk*QYh*kAIF0!f?l-YhPYcCW-Iuy29W=&16Gh)@nOsw{yNKLay z`ZbYQ-Ia({u)H_6D-&x7VpFdXu{sy1AXeZ1z;}gG;)688=MOm+CL95hbvIPFfblxO z@Bp->!Q`4D7k1%XqFPynL0(r;t#XI!X$7_FK3uoqx(3%pxK6=!1g=2%`yjaH!1X;` zSK%sLNv*04S68?`uB=vl2v;k(K7gw(T-7Vv@Yl%sWwesrev;XCEtm7)J`_W1<(x}0 zTb%lqNoHHOP|9fccw!b`H{gPSAJ79-vLBUw63Asfv>|C976~lWfe`06;K9ay+ukb4 z%vSu*UcQ-Yv;R%LnMa`Ge6yh=IluGT76s>-z;z%C;3qe$N6So9k9+f zn{l4YH@osEpSiRT4f)UV&HmVE&Nn-CMD|^Ozr*aie!ZW7KDW8TcO7+9>AMcxA^NWC zHUqrBKBS<0v)!Ayd^3-h626@uVwG=JteLHRvz%sfzS*QKwU}>qsD+eomOg|mY0dW3 zuixE|mh>I8q?ub3`DUZC)Kb1#opl!ZW|Nu|j+QXcD~sU&82)Z1#%oW zPz^8M3&@f9trPiXt>(V@ey=w2(F2Nd(A#JTZID{r$$a$k^PJ2_f1FFs;Zlh#|G73- zU;XKpE_T2++@zb)j04*kk}kxmYyo*aG)I5J{O8U8Kt6ix8jF1NLrtjXMjjA*ZnF<8 z^U*`s$oc3Mn^55;_`GrbhJRN+WMF{3e8{zf zxVhg=f5-Wd^+$5TJNzBwL$3SLI?R0NA(s!?He0mGLkGWMK4h=eln)uUPtJ#I@U3M& zWX?Xyhb;c1ln;4kv(0?SaDOo$a$Q5P!&3%3%7<+94VMo&qp_3^89$h8=ihCq^~dc- z+j$y#gmKL}oB5DWS6Jjj2Ky8IT-zhU&rb~$`H-hp$oY_8HzMpgbY6iy6F2eLbG?C$ ze8?t+Ik@3QSHby^m6G3fznfJw#_lrX=~vz9F$TtSygvs%iZM1bglhTbE*N9MYyY|R zgx;!q(##M=qUh)?^RRZ>LP$Ld@DwFiDtV-g7 zsY=>nmDK;{AFz*|ms!}y)eWeFHvduVpzqeRw2w8G$@cMeeYT$PtfG%*tmpe^(|QHj z$C)l%hqY{v0_@|kSx(x=dCjOj3`3|rru#bG9$+8S8*p7z(H^&3Q+wi~i|akNW4*U1I;7P}{P9CM}WsXYabyKhK;}^v{5`eE(chyP*DQ zeC=-TpO)=WK>s{B!^!^H(3{$$(Fkgf+m)Se59psC)Z_Z6qCG+asXbc4gv;o%>TUX` zaJZ|D*jgSQBtbdl(V2#%m<(-=nB!W%$Hu*{xT@MU2%ls&R#m*?#PZMiVkfBB94rbFZgw~FF6~M&C#zI0~$Rk944pHcqRIJx!?vo zlx-f(@=T@37t276ASo5yqqxC0oYd#3#8gy0{WV7={xy*PYLxyOK!44Y{#uW|l;)rx zyHH-LirI{tmAF2TPcJvGxb19q77(jfN5)Z~G&OaD`K%kXY)Rc<&{pUMFP2N$>{>r5 z619VELL{DCZJpb`RE|XP>Fr{~Nnvm)9vfj9aasvID9Qz$Trs<~HR9I?Yik6i!VmpS z_>mHCGMV82)M)nq$_V!VdOiDpYXBW>?Uq$tid7vj$gwJDM=@A6HB89EU{#73tXhd5 zwi1udbXDOIjzzUIHc`Z?>cV5WrZz(2j{H{WPd`ll^e9lg8~%@g|F??%_4T5EeWmDM zPZj;^DWZRUrd}9L{&n~aJUnhHZc;?^k(lhJ^7n$``}gGU1o^vS=FdVfPWR7HZ!_uQ zXrV?1JbV%DjEzu(ZG_o7{Lqo?dXj=&&4+WoGi^=A=qW`yh8%OdI`^tgxlY}KmQSuCv@#?o33!dMz^eYBhQV4~#- z6iaKo(o^+gQ5H+PvRR6yWv-xDTGlo>mR50_IhNMLkB_Bou7-On4We0$UsFPbQJZlV zGYV%h*O!Q~v;*jl+B%WBqoQbX(lanf>o+C`eoV*=(fYMH3qL+O06#iyg&#dv!jFC_ z@MGvy_^}E4SX!S! zQY=mD_Y4|hCQe6#Kv@-179=Vg?1h*SHq)eYW!j9W?E%x4QC-s3AGMWW+WrRl6iM4f zUtU{ZrY*&!+gX*gWumsbOxrA3+hEjo_!Vip1M;bowiya--I=yjn8z?}8K~_B)7D(p zHUhPcW!kQT{7Ok%6NR=8OxsG6t}N4b7PX}_ZGTsjw2eV+eoPw>gRu3Iw(Kgrwos;R zy-9b%m$V&6ZD*Lam9n;Y)OIDGw4Da|t&+B73T;75+g6iq64Q17wH;&HI?CE6p|;sf z+fk6;joMm*wvQ!k=)NCC{UdBQ*l}OUf1f+P3`RrUt4Yz&&rnrRJ_d`)zp!AgMcUXc zU!up8Hi`5&@;$XGt42PHZjPKQhc5FEdC<;dEV>yar;QnyNIeiqBImxQoUbBm`Em(A zCVQd!UtgL`#9+b!9IivfAPWi;j^JLf&U_b^T2=of%L$C!+`ZHerhsh z%>*5}0czEsaGikbJGj=twF0h1aLt8l23%9%8V6VHCTdkTxTe6h39bupy@IP6VA{uU z#ly7npUPzs1xb#=|>!I z?KKb?*8t?76&=&vMSQW*RBR9yBY&Smy1VzGOm}BcxxrZOJH}ky`b@BWy1abu7_OyE zqLb#2N?TB}`A2}_n0W;$-55ssS`)ewDK+RgQo5QRVVE6Kx{^rgS5-Jt`W+P*&PeHo zhGc$P!)(krV7{4@#r$45QC?rdm*%vn56g!Z-mhI_h1NvEl`Diaw`%5VpJ;a1mT(i{c zt|2Mzh9PNqdUhlETY>wwqWp~@e&Z>B5{9Q!=5?R+qH;>mnqLLydiV0R@9BJbkt8}AE8;~MRWO>ttE{ZgW1-mbip*w4$|fQy z%LDDJK*x`T87aHCS|Vj1EhJLbdA&@^lGd3?*^!DoDJz5bt%vvBq*8XA?859N#f~!l zD%lN`*Eeay?8XEN`<^iAo>xG#0dt@_Ej~Y?R*f$oSI(q6Db~0)&37O!T0)NE^DB0r zum@;{dV#v*<*m)o1Cwq;1v!k|_=FTjo>)l=Bi9&6B=XO?G>SKWjU+N0N#x=ba)obX zz~ledFKSg7Te)<1ro|fA#udq0omnGVt1a)+D%H_wiGH3b8!OXZW~{netbtuIQ(gnR zc`q5O;T06ds{MSvdABm{rL=xG7`6cnh6)#r>KBwv-4p z9sK?uXGN@PIp9tA|Cq`4|5$C_|Km%m{Xf=FyzBW2dH;_uZ14Y3PK0}04)TUL$al=Pz5mB_%l$vf(Fni4QriEcjB@{vMDzY1 zW!e6jY0CXSQWX1tl(Dt{M;6DXxY6ar{vV^?GTznoA&s#O_lMd zfsXK}%`OH0c+TeWXGBRG`18vx4u81ORWSa1H~ek!rwrSFs1J>?-R@40F~Faqr8)dj zj4|(O41X5G7`yQKKZrl;{^aoIX+ONBr<43=*qfiPH<#wCRl*qmd55c;s`R$S9q^x0 z9RAcN=@KIUA-{^o4eMt2^nVxrgqO0*f7eNt`U&lnDWx*ikp zXLr9hqn&)~N`UvD;zvHhWp|F}9m#*qIM=kP}{#!@R&Ew5UD{O7ZOlK(b96{yhEUP5IAw#(x%=`A?!1|5-@*^W!|3 z|0LSxKb{i*0TP^6#3BA1p2+i`ViNuoV)!$e{3M!6^ALZ2NBn6t#Ww#LXUTs&8UL9l z@t>kf{xi~a#i(8cZCqcn~irV5oS2_IQMwb)(r~liYU%<}LZS^7JKa`*2)EGnl zqv7yJF~+;Vy2*c+>gIL|@}G(SF8m4iu*-j%^880#0RL&t^B=V%{7JFl|Kahc z>pl^G8oVj~3?Iw*&lhI?Gu4X!e97=2W;9|l8uE}=BgTt_U~l;ViW1M6`22MhxyNjopr z9!JD+VGvcEDUYkT-|2zU>{ML1N!P)h11BR%?_m|!rwmoxahR(c-;K8oPD{lUHw39D zv-jTK{s>IiEzU*WAHg8+z=Q|E;Vvf>7R-GtZ;a5F!h+9YThidJLqC1^uwaxqET|Rt zK5%CP5?5{`vh~WPh)*sp$&7zT4D->sb9|VuCjrM~+7AZfasFH$QqjT`zsr@DW**_< zcY|0=u1p9gf5p`tlQT(zEt%ju?K#11oS?fTsAGbs!ub3zPEace-eb@?UrDTJAV z_NnBJhyEPRZ#?8*Sjy-a4a%}Rg$Q?~mGG5}yGP5b@=J*ANjndXLs36m2jB1+O13c0 zAxWdSp{-E@T$SW-y&#-54Tv|xuOt(c0iH{ z+GSMS>du&!Xz9Dxhum^$OC{N_L&eUz5I^R1Uwa55b%8d#5VBwSprYUU6bx| zA+^c|==@cJD!0>20G+jCaCIjdAuGT>D(y`1Nf&cu(S9(IWrLy@;jAF#d3?q?30@j_IL3P zu-L`B9=D6PA8u>lWBfXeIQ_f+)Izr&aV?ZbH~Y%V(N^9K&5KBU(h5^UEoBWAL@pRj z%^A>8uSS`-@|I3DMPnLnE9cpI2S4jAz3rS|+Tvvq?)=j6R_B*K3KCw03dcC^yGYC_ zv2lLsOl}o_INMTsG~4u>c5}}zN1p}xGu!l=_9~}zk$SYA#3-hVD9MZF0Kh;$zp)IL5cVfc zr|rGh##(OgJ^Q7*Ds2GXV1-Id0r8|1kU>;oy+C~trhYuA4^1!?VwoVxnkAqsNW1I^ z<|`zUxquslz?Y#3M+%XkHtaZ*`)sVA7StJ0dm6uE#b75Zf1;sud2`jl-lp zV}Y5!5-YK0+T8O5#$>Hi_IR62(KR`XI>mx!S6m!+r}M6k*b5_ZQ~lOpv;TM@EV*ExGIZob$xDmE62-KI`f!1>YH$7PItL`CDJxeTp; z?qoZ|Pt58&BW3l8=SPclTu$s0SQ=oGe3W$91)9k0t3jYU@;(Q;#RzmK*a6*@1iJfP z%5UnER*nixWT1P}gT-q<1JIp0j6X`6lKUd?DCsC$M@d^`{M9jM{3(x;j<=nFBjd4o zr}Ax2Wh{=eCh;$U7s+a5y+p&BR zO&l{61iuMK@W*C-#Rz`aW*oh)k>@V?F<2sBZ+VT!JFPf5mpmDv8IotIB)RLn+~r(% zaWfYHmI>0zg?S9Z->=U}ewXWRV`K8c48LbhwZ`w)N!%KTpl_u`;LxwLx|4pXIP_BDjk~F%-|z?{jwZJdu&g=xJo-h4ien$!3`(>TCN<434*Zg0Y%W3JRm&W=Y6YKa&$slUDR zaZW^9pNve!2$>r5eDuEl zpXH;cE>U9T*d~NmH~!%8swUmNi9O8&iR%46mBIP*?mW9`Gu!@BfsKR?hyn z@=^C3C;8~ndK}0tzHgV0j%~!rjk<4_kGAI>*rE3w@X@8!ILS))9q`d|X?V*Oy`1Kw zE|DA`?R;P2qp7{f7VIIfiN+9zw%}c~1*3Y~XY z3vyFz^U-l;k@+bO_~^%7Wt;JS3fYVb*$SKSx-V}tqOzReqeEN$1AKH~8b>TMA`#cL zPVmvXe6jmfthjT0w9Ah&>K7t|QIhAQxvk&&yvE7ohHqSj#s7Zi@Vz44r?f*p+CH1( zqcy2O8HVqXFR6QV83Xw49r^zaAC3FV9v^k}=Fk5&+U2A3%5ZXj-*wDK$Bwqf%%%dz zM<*>4F>`sOT|Sz1mzd*{7$qP5HO9;yD~=|ZtKP?wJ!5Q z=*m%=a<=hi`Hz>mA+D!e=W6ZeKi-ue)F-VoN#|)<{$nmR-P4hn{}}P_%0D`LhoO>< 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

            d za|BR~W?i-?BW*{dbJlVB+W~1KBrQ**Ck+Y91RgJL#Qv<)LO&H%qd_YGvM)n^^}Qr) zFN!OOSdV7kmr$S>g#Lp?Zf6XWaN)H7z$z&o?x&Y(7xfk$0=cR^3AZd9<8c3w=RMJ2oU5ljmm}wSf z^cFA>5~CxkD&8Q_MR{}tdV*ZSBf@vn&E_mN;=Mpzk8t}w9CQsH6tVZZM`Th{cM6VJ zmuGN9NCBtmF|GoM+;cVgKYrvQ_iQZ*J5l6%?zwl1)!0%BD|p}02(lBG!C zKh;SPbJ|H7V}e=P4TxD^A}C@#40R7QcHKcac2>4<;KtBr?|)Z0FwQmy$Gf&c!21FvZ%2^Rr4V*(3GeM>Aw z#VCp1*TW0;uG)>$3Ndq%tpH-{54>3*g%}QOc3cHq8k0EZSjBi?YL!BPp;J%;>ZBNJ z@jnwrq1#OQvC?3Vp8lT2Q4B(R^qXiHwZdVrM+><|Vmx&XqgeNrFbb_9+=dy#E^!n! zesaW7bauVp_kYe_4J@3Oz1pOm#t!|tK%Vw$b}LOjYk@b|t8)gp+N;}N_&Ds<#U6^i z`qK+Ndv$sNGAnm9a<*6J{^c+&3k)FBa@t?HP0Q^DFfG4-p>MB-FyO9@9QJCM2J}^b z0uP^;`jNum1AFVXv;(r?FQz7vT2l z<`-nIep{9%h1tt+QaA;3jzsqA{3x_nC1$UF0HwCQIN)Tj_I+#ogg0G9O)c718$xje z%vd%o#M*xR<&|n+xQ1Mc49O13jtsF!hTON+`;81#G#)D0UR5LWbXQk0Pg}h7(we8& z%CPl+Dd`MQ1UDA{X_18L&z0*VoXk_Z@v=XXM1I8~mN1AUf;a{#eIZK|%<{fJvqCFSfAB4!ZeT&CNXTTuOaf&R2S|9;P;YN@J1XmIN#8D^y{zVv&>01bmt4K`A=$15XAj`2%!D8oKMvJ^blUwU zIqItrJJ|UWTNCQIVW3PllpolP1UAsL>91MT!^a?Xd@q~^bD5K$g8a)t_8$~WGR_lv zorsP@hr@WeuEUt7qr{Ks;8$8RN$80Mo8hNgjV%qTij5VqrZiQ=!o{S^K>q%izdwq{ zY()#buZ?wxoif{2$4jk9XwxA;F%&7P__5{9kjReF(F&1%f=1`)L7`8CU3iOfIkswG@iw!nE!tfR>slg9AG*CBp|@&ERJW3kGA8w(e|X` zA$j8HxaN23xDzDoxIb(BB=Ogvaj#iuzu*tswtNm%9rPa%Wx;crvmTTrVXrMjVM{8) zrtkD|^^injAI@#<==b3-K6UEDzxc2|Jec-O5=@e?Md`rxeW(MElJe@nP>zil8TN(_ zyzvbkxGr_zg1~Vl*1Vr%XJdw+x;uw$cBceY!-WM{4MmpmHoMSN64oH)+We~9!$NM4 zb5N_1G{M^Xc{-UvOBhrVK^il#5Q9D1nM{XDQrbs-im^Po{|A0|GVwBcI5`ITU z-+McHet_LL%$HF(YH?+8l5`dUq%PqAvjAWZ0`w#RG1*Jo^9Abp6EINSkdUSA`CjkR z^Amk?Z_ST;2)*JVOnuL==kM~+_Ixi8o93-tlq~a7$8f=jv zw z3%Z@bHbro1+?4l7%I&jJ%IpPP%I%FL!GM~&?3u?A2#{GX5YCX8;CS#RJ)Ze0hI;XM zRFm8?KyKx9tYZU{+mh6_v?@0p>KOMP2wfV4E{}!I-iKr5NQNgs;7N|$$2imyJtcR6 z`1dRx7E(Fk35c+R-ov7gUEO3iESehcHWL zD#BcV=_)@7vj{+&A?N^hANNtBK5zT!h1zV0(ociZo}Lw|Veu%mm#hH%;b2&Lk)?jld zUW&Kajavog{RoFP_>ufm;-VyMg9|YI{6qTAqWY5H4r^F4{(-Xh?c@VW8m8HvZO&rX zpa#Y4$Nux)L%Q2HDEDOuY`>nKpBLCBYt+m9e7k;+vR#knSEzUZ1PYh0nyvjZ&DLQy zwsoI_S0O}M`=v(WbqHe)N68l~xVwxGJK$cc3IEh(x5cCDG(HkKbt8dpFD~Da98^{C zKj?=z_6qyDxHEtXyM8(rHUp-hgH+h{&~5u<;|$`DDy%W-Pal}aPshc};w<<$`MGDj z556aI3{|y3Ov@{XT2+#<=0NoIQ9`>0Ut)q0RxC&;I#Ah>qO^}EKlg|)2rcUF^mDn% z&)wn;xPLW3g)x}rG^p?w7kva<{VPuT#%lwK|3F6ZtEl2X_*fG9q4+l?zKT(RgGqCL zWDAO)enLZD#aqwtmJ!}%n7&d7ZyDfyiFmUmWtSJd+;r8X7kZSLMrH%c%;x(bOS>=9 znE^%-pbUVA2`~x(=ObVviEYxFDQx{}wC)z*53juh$C=GY6~zls79z?*Kiz9nntq9E z-Z`7s6DOGtlaEW>F%4yU_BBV_QBM+YIQ4;{{zX8#i_1D=Qniab=;n>SnGj zw}$pRQ_vz&K}!aq<0oL8-5QDQ^kan$j!0_aj#I*MI*4026&-?I@uJ&U+x2X(FQ5i$K2^flNH|?ihhmmV3vD$MLl!!=-CoN%)mYGHr%Z5}S`8 zB((s2>I@A-H72F1MEX=IE6x8ic+->ugk9J)zx%Kn0JXM5Ae2}>K|4I>p#l%%?Y(V( zU>BlVBTfe4*7VXRPQ&GdAGQ4MsdWEI5{KVi2R!1j z_|af0{YvSl_v1^ah)WgxC^-kp0xXVaW591tdJS*gfZrb@vGd=?%?z;29@zHYRb@wi zRzW`uSH!dK!c@BdBSj1a4o9d2uRoH6Kd}Ud^Yfqw3~Zbcr8}P5|D#qq$oX_SLm@f0 z0MKOs0{nEVm!6z$&~Yzq!7byBnW}{7bQtW*?=S1}71=-2xp-Xw^%{y-k;N2EdFF-e z{+02wOJn?Wfda($#5jZRaBR&{-u+=O!bc`Wx`)dL(ND~Vm_^yUHSxXM5m{OMw#LL{ zQbl&v24kKTJ4L)DGr7~J=A#j`<{vL*cU8xdS<4*umshh0WT@nsDjvig_MX$FoT}hQ#k2HVhil^T>>ef>GDyg{me3 z{F7^#-E%k?4hp4lVXX%~=Y&>HI|70zn2pTr76QkFbPVSU zw`Iz4CIBp>1-xEU5-K6!P~E5@s0w^t$s*ToNyG9U{#4y;&zIf>B*u%-KX(WV^Tk1! zeooUm^B_e`0PN<^*nAPdf_muMb6eUu)hsfmh@U~W_Rnzodw@AFJFc%y%U0L+f+=Ec z$k$PU!tO^45);a);#X76v$tToJv^NJ@R2Uu*4oVTHLY}^u#~bsYLXZ(9 z|Bad_sP*(_ZG3>EqI(%iN8sX>O;;JO&O&Zc0o28dT0;LaB%LHvClaqRzD}1GAIK>3Fw-(k&CnJ5wZ<$Z>*|0+rmTA@k-~g$i(|J zAPot3bL^m;iD@7PJ%<(*YBMD4p`p?yINBzs@-@bgFkMi>0gu}}Gr5Tx*WGoEqPxk@ z+pgX6qPxknYhC|YN>JiNCk@Lt4jgC7O#psxq#R>^T6I7ybAXn5??lJwr&1s@vKz?^(6R4v7`Jp5%LN@&!ssAMK)SZyJ z08?8yQZK8i%OG_grdFlPCcnb20W}|l?-ORSEoZr)EqWPVG-*h9NCUeQCb$km3>`pt z<;*T_#Pgd8@wN@N|GgzRQwbA!u7rsMUMM#yK|40Q%l;H`OjSvk!W%0^TrpV^(rA*zn^M}j zQ_D3SpXY6px_2VJvzsGA7DFbJM`Cp|^hi9e0@~RZt8s`xeW%aMQSTu9x9?#`QO|OH z51TzD`mf)^KA!27$9vfOD{5ZT>-E5khtjZ#iJSxU9(M6cntTnFe5Ty*Vc%uZG*?Zo z(KJU3`wHrN*iqNBSTs!))K1d`7EQwhPG{ku2+2w~O_Sd-@}&(%!H9iL zN)!xWfAl*IbTtCTZtQW-OGvH&;2EPd4`MgL{fqkqYbfn_5c}aSM?g)8iTo9}cI6JJ zDTs*m5V1Ue+Zwg6wB@+^V=zloyYcS_Y=G8Ju9Z#OV`tIKw~B|x;Hy$+D$)5rm_{%d zGJHG!g|2g|sgGc*@-4b@l%hBH4zZg;OV)kpCE%%MX?cbhs{+HEJ?79OhKPNzSPqCv zJVI|tS*buq_urMt?ne+J0}SWzKq$_frueIL{~qPZhEhez=0L~$QS~#(9aELbS!xW~ ze~N@)|AEAxV38$@ydMnuU+GN9bLH`?!SDK*^&j+}waIGoZrh$70i4E56p5)Z=7iS_S%it?{l@wkl;tk zTvR{=Ue**9WIFZ25_&{F9&T8^C#qglkYV}Wh{U~dMtUL#R0wN{!{(%LH?uV|0M&&w zx-KvEE?W)<Qob7Q)3Mo zg`H|b1$wt^-FTXY-j9U7bRD{6#%Rdc9x{e+{|!k~pHkd)gHe=w{CFgds34J1pF(o& zb$UU!Gs8O@fzw)X$Y`5}sKE-{39Qp07;~;|0F3=L%lEOKgJ>7S!tS(>!;>)hSeo8- zt|qY5CLgH#xw8v4xBvAX)S=>kJ!RANzvB3OH~(veyQ=@Sc7~Vgf35h6simuJ zQBS~m8G6E#GuqC-4(q-w*8Nkx&R@-@?fmO8b5+cIShw>hvd+)m`*7<2cmKov|IXX{ z|4xy`)74@9KP`9v--LzvRO$c!u>L=s`v3c^|Bs>mdORHa{}SH+(UZ6xmFVQAO8+0u z`ajLb5%0gD|1-RC;ne@%$Ns;B^?!nk{Gaas>Bn9>-Cvxy{!n}2hv;nj2Ws#0Sn|7u zTne#6x00K{NsARUan|$dFpPF0Qycs>uqpSIbGlk4W2*ogBz_8w}l~@!sZoUWUYA!W+*{ zx4%bUh6kW-YR^YINBPaNm$GpLDz*j4z<#`Z2Yo_bZjRVOe76c_fH0;FK?w@{m1TEC zI>vwqyHJF4Ival>t^p35vq=f9I07PsC$)03{gjqvH_QHXw&94`>Q9~XxN`q581NzY zp?_T&hLcBem}M8yPYH~I~rnN{2CB#ISWZ! z_=0(wCqkXX_jWz!-i88(v0mzG17Mtvx`QsIdk~KKk^i6)=$02#M6qX~e~dfL z7e1vjO&db@pTNX5pT$1`QcG-&Pgvjke5u#lck*Xl*O!(W=f~T*7u?>pO#UI8*lL&f&D)r@wst#{Tf+ z!@T-KO)M@ATsDn<0!5vHUaKUj{l}+H+&gIf` z!DZ=AEjsgTH_rGAtJ0U;{7{v?h#v#^A7)WimL4Q2_{shZxGez}FC|fRzUQ<=){DbO ze(fcx{&v=bg}1j0Z&qnekLHfmt*_kmbEaxu^;7UK*ZLXwnChoaJx%?5I?z!+GlpR? z+JLCG{c~LFCnZFwpMlr)>&O2w)sKBZ?)s@sz%NVa)lbo3SU=ZFQ2i{a3-!~~h4;JH zPdhqgQvqv;qN_XOo21#O5x^+93pMsrN#)6$sqDNQ=pa$@b8XFCxW;NOTB$ias#xn0 zmF#^e+4dPU7Q4|L8Vq93&4O8Gi<|N$<}ush!)ka6p67g#=_Tx#pGA7r?fwdV`U{;n z8QiD2>?N=((!LB<-uCmdZG$Nt1uK13RT>a@1p+T(z|&P=gI?fHXvsp+51`WYOWq%iwg!oZ>Ds$0&aX0pOv*nS?2>_#9vXV=t%!PNEss*O`ydq}q(`Ub!&y87Tw;8T1~%L88Smqm&!_Q+^l z|4ek?DUaJu4nd!-5Z)#Cc^j^;(xIC-pA)N=$2qZ*Z#^fLd4=gBuII$M1ZvNJT~eJ} z%(mHvU6sy>ov5U}|Kt*PZfVbn6(?tnSgV$+XKUgv&AleWjw_z6zSw_OE1s>e^h?aC z)#DO*pT6;PJ|{L{t-}MgBZNFq-PY#zK+U}9B_#I(*ogPBlR$PNP zpCJagAT~tA5m}@{Rk}}Op?Dv9{{bdXJo{=jmJY-@ZyIw|^#UN~S)3DP5I@Z0pBvsm(i z7j&rCOe;I!(8`ofC-+k|vn#aC>Y|z*w;fGY_cxKToI#Ao6656lobgy-Tnrie7I2*& zQG#64PRJ1)lpW0S6}wTmK!#v^7rg(A!IvcX7=Rx}@FfAhGQ#hrN0yJ-;`XXit;YD@ zyF~VPFIqEHss1)fLP;cxM>5=(G%F7fvlyLHz!_Jlu(+Y{E%lt25Z4FFOc#RmJ*Qe0 zbpHk8kU$*v!OR!O&c6VMP~=b{fbSDdWc!2>(ARK!PZ8&+x!XbR22>0@c}G_ILCP5= z-?qpv4W+3baDOo2yvzRJ8Mi$42hkJevOk#0XO}6;{-B8&rY_qdiZuv5I!u49s(8WS zh6!?K`*JYE4%@=^@|DPt@IYsW5Dj#;(SF5(m(aPs%Oo8~Rq;ZK11E`@k_Uljr2I78 zF!vDOhY3?U6ZwpmvRP~fk}uSdd$=h(geO66Xut?M-)TrVEx7i|$V7W2o>c}3kq_X; znH_$Gj3C|0C~@AgTe^`JW!mqqi{WLt-<*O9IB$zNOe2t_m@lxS2P5%dH12GrOLWHP ziq2j1yisBbYvnK`(1w#eH9d#oR_ehlIfA;@%YvZgVb_8V3SWcNgd31x#e^t{-x)iS z5{^K^N=&Fl2@hf=VH727f`nf&p*SU+g@oahFdq^|V1hd(?1Y4PN*E6beK8@O9%o*q zCiH}aSWHNzmzi6f^J1^m`Lb8)=ABVD4-0+CU#TktKc?R$%eqr6A2}rer~?9hML=`U zIt|Y3ziDvZ=|=D00MTe7x>G?9W(B~Uq`A$Hjd6>-;ySg*t@sa8#I0(^5s>i|X1w9chPO$69fkkDt+Nr@Ik-BE zcf`Q)K8HMwEdxx-)5b3hNfp^snlRoyF&fHjPswL+As@UVo zL%ek18&r@rfqi_#upd=Sx2M-U;~4f)9;h7*_T~!~2)zFk^y_;042iTP%fkXOu8Goc ze9{>ZzPjYoUtJ=-ElKg%Br|~%nm3B5NpmO$k^9vWSnL*iM-mfk+mEZ^TM4_=J@8ph z!A@M#baytP+(I5>T_Yg-sBD1|3vfJ$n&L>!bxn~PFV#rhV_Hm>7)`K4ZaFf>DGsZf zX^yapF;q(ll!27FCV_NzN|6YRC|=(fX4NFfcH)?$CvEp(eo;~>+i=a$et;qpPl@_m+ije`u! z_avsq1)1$`cy9=w&stdh_L!5x+)UQS0qJF4Vs?U@KA1C|UDn-5%~_pt4pehihn%l*8i76wJ*Ma>FZDV5o+s4_^Tt@3 zFl&R|al%VS<>JHpA77{8T@8mfT7CQe;`}##hWsCN7-$3_E1 z%GoX*R^z4to=d~CXsXlpwfFhR>B1x-hdhUN=3>E?ZVSjMJW#` zy%6PVQ8%PbZ1@KXaG$-i&0?ko1)`alu$jJm&TdPnaJoTTJKKU z7H(A~TAU)bS0yS68Ao8oNtE$~@-II6La zN|{0*8InF$>?4z0A`@BI4^gltz9aytB`CG?(?D%fLFmolj!?>7G%t|PXs|`Tnb&i) zEOHHxZ0O}UX}hr25oXy&&szxk89V<3oL|~rY<6V#bJOl^wk)Xs{^L=H3bBvY)BSXZ z@?pDCI*R?zFqM>{+&fNCxfBFxNc`2Y+k~C%hdith);aHMW#?-*whWs_X}nov@k{D7 z#uzdpr!HXLa<<@y+fSvhCws*T^W<05Bbw&}8-lwwQ^dh)LQP1>!LG8D656W?MIqr8 zjekmL*qL`O0TLcULPkHk@!k=|!l=e9j9Q1)1@q^4Zei?B0Sm*Q&Zaz%;V8+XB-}=n z_wB|*tQxKCaKIVJGnL8;Yu#+f7MSHm140(Zk+()1h{4JK%@{sjqu4t#^9Wqj*++~3 z{V9h0t4B(sfAyIsn8dwcQOoeP$W_Ndb+DW8EWsVH?KTN4&XRmd$~9dk<(e*&dQI1o zyh0}_vi86I9P{)%Y?3@5YR==qx2{-cYx0y-cX&qNQ`NfRod->m4&dY!u8n|5zm(w| z|KRW!wheD%ntU(TWbI(XgZ$RP*U_mp@DHOc>=>o5|(jRej4a-{qUy?6`A z4DdVXrTX&fUZ74?u?tyL#nl@-iW1$@!+MO)yfE>Q_AHh7 z*Li|H-5Oy70Jaywo(ALHBNGq(ipq);Di#50;zq)U=H&Y$|hvS%QObf2mH2D66@nAh$2({ta{EE91{h>It(aSWV2E zs@}`t9H|?G?4zNKpB=!ZsYL)j5fopBCi*M%b|_j>p7;z4&GoDh8C595PRbCG9hfWC zAD#HAG$J+<0}hYTYg*Nn<4W>jTh4mN)W6i- zu~IlAc#qoX zK`)2dsJr4J{*0Z}){^vq3$qfTDThdo>mduIMcQX|>sg4b^1>~{*)mq2(r?HN( z30xA6^&YL_D;VR{d9Ph}Tf191ib@Qoqo}jZP;fKX_CDrO2+jgQJP=qLnE4N|-wdR`{tJIyj?J3V zueagBxAfC0cu)%;RHa{!C=XKLLG{PvuNirowwVD<@dyMBzkq~z^hx9?wU2WPXu0m~ZyjlM2SBDO2@s5KAgpLPR_~a8Bos#%q`FVVqmI61>Fe(~Ogo*q5V(z|~U)xgN;RbvVxUbm^wL3*K6x{@)|269oXkY|5 z*Soc(bA4@oJlBf=Kg*Q3XSU4THr0ugIpEF5;`8kO&S3OhF%SJ~P$NPC@I4{l=P{Ew zmF-!laL+o0`%2X`MWeuzWX?$%z@!*FNe;Boab0PMlVCF%hX>R}T5Si|O?Q@3JJe~+ za}@ISKt2J<>udN5TyuD2ow-JUCJ3JKuR|A~r&Aa2n5g~}$m~Wk@4OSZDOu721~T2> zxSOIgY@XT~mO{ULI!x)GZOYID7(XzdpM|*dGvoO*$JfEfVSG(+d`)p4r>#UOEtayCQ%e;CqefqBb}{@=!w|J+Q+b!XrI zTY+1b<-xg&O*-F<7Gg$TT!^!Q*usC$B1k%6_{%^RenelN5o1PF{?+i-Z3!kdixD$m z_1O%gb}1mmpM0^Mx^~`c!lZh#x+brqJ&R@g#?;(DwsZvADUR6;-~S_PJ@LV&QWYGg zJB^m0QLM79Eb7ZXq``$=W;G$i_(1aUq2*^1Gu!JEH?mVJPN2ko=?UEqUiu%5RDB)8 zE&(+xe=Try2R*vvkMHzVa^$6yleW>e6IkqQN?zueAC)Hu^!tV6@@4=bMsIp#OfhU6 zEnqDa6HD+uYDr&DF8V@P@AEjlm=cY2-1gSEq!O^()_e%XkpsILy5W|9&}X2Y*0eat~q3h$MNrJ|(p1D*>?g32r;K>0Sq;T@E5vGW*7UKb6LyWtvu zg=*$+z+Tmk0#R1O_#L%Km(-)}O=x*6&5g@rIM7?}4kp)p7*4JUvFZVI$#;9luIquB za|mH`0X=(hGp8_*Slp$$kIz`3alaJDj zjWp8zpRgykq>pIiEBHVkVX`lPM}6X42Tfk5)7-?4r#ft66&UAW;@kx|w<6BLzut3x};MGu-ds2?AE!0CrOMVT@TXt zqV(LJu4ax@RWrxDtC*%EIc&a3Rclo`@i0Xgk8VKm4~^w6 zjea3;hp?HmPRn z5lhVt_P3IUOc+%ZMz7#Y--e9dQqN=b~oH4z>M!h1+)VCTroZSt|WKz%H- zq9LCVBeLobWn^$J#sc@}z}-6VbIwJ#?7WnZWT`1lyJ}9@B}3W(2qPX}LCkl;A%xo`Ucn+r(a8e>qmzdQMJJC6j%a01vM9U`I*rx_ zabzGyRVMemU=p7~i;M{IIo&Y|i})UCtG2kJ6uy?5g|FSEciABrX^rCdK}MFQ4vJ0n zzg)xCN?4m?eYGcoJ=gNoRwZnW(m2M-5owg;EgIhXs}eI;Ze?ITfI^rsBugUZ*eU68 z&fg_`ZRr)I%=rn+)>TsYS}ZQpDNOmpGXZ*?xszkJ|623n2=$4p=~#eKCjLr4**sWa zZi;U3LxGFXFWd(rSKaaFjC#{``K9j78VVM6_J2taA+R; zT1kS&WTF0p|j+Bg>7YEdjQ$mGz#kiwLa+~^_~)??_+S$4o;(Xuw<=T@mUll zi|GbpuA`VNe^()p@ld9ZcgIt;cv4z>b%9Qw>ts|q2Ct=^pNh6aUzo{Fg$uBZrp3ZJ~+Lv#~p2-Zp)Y2XK%f_PWuubX%- zpFoZW$cZ31dmji~W0cc^JoY*fJ}66rC2FVenR+tuY#@$7;_l?uK27tq`wuzJ4vAMQ z#QlJ{DH2!KxPRN_Gk6IfH;xVmgf4yifYv_K9MJR)>V;Pk#MWc)-zso@=>7XhPEN9% z*3_OB(+2gl+>emCtOG86kxNa@ibY3dt1(u!Jotw%T^)xU)&Ph4#GyZMh<_**|6ylv z3py!v7Xa^BZY@$T-yzT}lA47=v+>w$4=?$lQB~YFU;RSrE7UwtPekf;tf=Ebuy6bZ zbu>YKh4$ioflET#73e>QgTrQcv`#&T55i^AKY;XSBpu<+Zf{{BSU8W*p289k_uCA= zt&?5dTa|XhpxtC_7eVdzN}p=})k>lrkS8hR4S_rb$#Z*atq|7>{PanYyz){J7*}DX zn9se38J)IJEu{!ZX+TnLWPmY3#MnD86wb7TENZIq9iPOC)9N8L-N zwXuO1?||m>SJ6)Q$3>?AC)q_oHPj=Z8}VVzX{m^DjEJm8u2OssNfSw}OS1@E8htTL zncKczu6GtKwsltKewVmbM23#}oM=A(cs{2+Bi95n528$+r`9fwjy)QYV;Zcq!WXYo z9NvxFnrxFYRfO`FKBrjTT)UB z%NeDT_2dG;OOQitmPRX-PZ7qE2u;pllPC{PzW=bUO-UTZHCoXo-En-}GIptb?u(N0 z776WBu|4l0f0XUlDj#JbGv5|^*H9W+ejvVw#5c))ov8XOJHev18S<^AZxWgXtD0rN za?QkMzdJyu_HQ&-agE=Usmf>OFVq5Mh9+koaCr(`tf0OaK4fCs{S+;-bPWjw;@@jA zp=N#%5I;xanl1_+L%*1!!Yx_BJ+W4{(HAZ+RSspS$0R@3If=t8;58INBPR896a0pHd(O3 zFlg`v>7q+&>bOR14DC~C42`Plv~P^oH2?nx7kPooS+ypqoWErIgUb2hHtuhoa5H4% z17*Ofhn>;ti;Fo%d~Ra30h*z~mh{lRsFuc}v2h9Kd>xl^FE#3~?X)W*v%ISWtYPe= zvt%}Y=H#CksCG!uT`POg&W0g+U11SN;BA#!`IgI8`;rwYOv+CVm-p^B+i8C9SH_RI zB<$c7XbIlGC2%zmfKphlf&&7ySAFDa^`UvQy3Az-aH)k{u5ubq3z6To0v*uTnARY8 zsI&&#XKD@o7b-viKB2yfC#BH(I^=Uk$=)uW4%K&KNPmN!ZagQfcKUAu-qo(#Qi7+qy9z!2P`>L)n@3j zj7rXw#rx4Rm==%W^67NO{koF&VIH21qETTTV`4 zPFv_;6(inXPa|wuiSGXdrc>GdpTM-ChbOL=ZXP)}OPP_dJ}?f@TF~jH>_irfgeE5q ze{8uN1$7jofsslq#3=%2tIQ3}@4MG>FO#v?n|csfRHCBh{fe2~?L1QVdLj5!s+6K?d;S~?a6cCAP{h72|y$!U2Yf_flV^Rv^txhQk zepo|U5W6)jw)mkKx#Unz zIKCT`hLO$4za3lD$EZj!P)qPSA~791)XwED6n)}hy2jY`=tlpbc*iq^PUsA0QOY`L_pAM-P0`ZSly?SFtofzO-KN{oQDPTg3FI>jR++Y0L!55Rn2dD>SB9_(giXZoWr21wUg}mfD5(n>pr&tTcRqr>yjX6ylNL4Lh+1CJoI0+LnQ<`|#3|ki2IWG2QCER6cS@Z3E>FTXDB0xqTENM})w0z$7 zF3Ck9P}*h>scd_cYL51MIZ7Kp-`~sCcPx6frlq;x>7w*ed4^g81prnIUvFiw)JcxUmmKr z8HO!nQO8MzDTU;OB?_Njke;@apO%tRal<3Uz2bSxk~BI#N8F?1bNWxp@fmF9yH(I} z3+TWsc2VHAumkglxBhS#6A&%wVXvC%)Y+tmZ}8lr9Xay`{Ver)LyW4=dlpE&nkDsl zT8ygCE99q3a9Q?m+W9 z(hPB+xyowBhLFzi0rX!W+hs)@{vxxXGi7r%Wgt-gEm0PBmix6LH}jmptw6bNJe_E~ z6q@}&vkYm@I@4S)E7L3mnk7iH$(d#+&=e(_F+ejGX;PeN<|s7nfo3$)^mC>es?byc znvqBo<>@p7O@XGEJOep_Oq6DzkTd01YRcPZ1#YrL`NYFX?z=Lw+`oZrD9SzNOmkkL z`4wn}AkA85nk@=VJkShAnj~kMUw|fw9g(A%h`T%lB4~XgzJS$<9;xEm7D*Rdie@!KXuzapP95ZXS5{@}A zl7(Z6L^N!+ugkqF8jy}`kTa#LzfV~D?xO7j=K;2lc@ym0$G=3uf4!FWh@h_!P`4?q z<5tpU5(GUg>Pef)u^0ZFrG)A>>dXtOk=6EH7kHvPNaZAho;h?y&uq^SB_UUd&DDESr5Ms!2$P% zt#K~9{|v@7n(dyQp2L7`0|B8pLT)s`ZJ*5?RRe+31F~aauGXdE$Seq$m87L`>6E}_ z!34Rn?zl@Xxm=QT`!iP5?dJgxi+>~N1>Jtb>TK_#2sM)^>$vNr@Y)q*Oft$T8lrsd z#R932$$y(%f(5&^GC7Qt$$^@^MvPeIyDVpWfGOD+Y)TFfBENbY$tXazt=a{mRe*H; zgbcI^L}7XVzUe0Mz9~83V2t<%BbwSN7fzK_?w<t+2UPUA)j zv~@9G!5JD%ZWU82W&3fIhJfZuL&{0bjvSaF+nn`@i#+9ySgwz@s}SFLa#|^{hMgA# zcEKFpfnhTUGgty#35{$B=boFHCXYUaOm^9>JYSEryIEw0eP~y_?DOS2)6IM>(s1~| zOUEhmB7tnmu1~k~)p1)&M@3|}6oE!gwf5J(hc2;0FzW7>7Okt|n zl&SVX=JU|#AB=+r&R)J=8pC=lr&yv=IDsyv z-E1@8OW|GuxSv4o*Qwx2V|d_2o4F1i6v~7LN9n;g%7f=e1uh65Y@r7Qln0mLK|Xvi zPlp}dH`S@5Gk%d@Cw27bRC`CqP4m@S#en~c$=t^P_q@ox7KvR34?O8XFL>aO4~o-+ zWaU9)c;JH%a?pcV=>c6TQvsfN?O##ulJ@nOlq*IuV<#ZnN+ z3C)}7_g zD}J*54?0M5~{*3fe1vpQ5<^cwk};X7vGVh8!ur z@|AxV90N5UVFgr75Fbv0@p{nSg%ETs50<6&2B}7r+LUade2U0i-AdtQqxc;wSdgE7 z85>9;rs(5#aQx!JGo}21R=FNi&^wLCr)-Zy*A*O+v2;-#Vy!tpIowNjVUgUu0|l{r z-b(il91^%r*u9N8G&UC;q1F+iHe%6*H$PQI%^4GhrxV-dMVJ7XM>F38WF&wLLIjyb zaxnWJ4PrduAtx7m{C7B_Zs^m1@$^;Ip;3F+yJ>pYnVTh)?AH8^h4QdZ6u@EYipax0 zaZuoT$pEQ#a)Fb>dC$YlIXuXJ-VD}{T zqCfN53*;d_2tvlC6~+(D0@oTDpVPQ(kKNCi$pYF%r`dr z#wIV2zp;@)(l@rPu#WR5p~FGwY!o`o52v)9sKkR{)8c#UfpqTthq-$N_Lomri$#^vg`zqor7f80NHC$c8IU! z*{{iug`vj{fFG*-1V8k^&rL4Yb>v6Ydi?^<42coV%cK1Q_XmB~KFsx^s@PT9%zLS6 z_WH3_7;)2wjUE=tpA;99tAxfd1g z%2pNbIxZLP>gL5hfG{d2r>zE+w3nVJsa<-ab3Z#`zO9*1+$x0CS$$_SJWgUZzQn0g z8U;O|cjGXm%AB$3i`xQPtyM<+1&`QJfyNc>2z$2O0q+@y&hT%^N6Ks z1=%P&(!D0+keOHcU`0cb)|=fPryMox0-W&ZsELFW&!6Xv9a zAF)^90?`5JML}kKskyXO7R*cce<)-HflP;FHkJkC$;h7NL9$8;*|R+Y7l33J7}@1H zM0S+OasZi*$c_S;4OjgpMz)oatt7Hrus;bzwi3vm6ISxVUk@t}Cc}fL_@D`EA2&z- zw0jVXB?@H^pnQy!4H;!4g))pNhbfd{K$(SAG<)JV%3^miSn^4+6*fu`hGGJ(IlCut<^#F zC`EKX61_UVEV>_vK8m7SN)}3NqiiAUtBSz&6CQ{wZ`N+y$!ek{zFJxME)Gf?c0ome zUv6pBtPe7BvG`Ar(G=e{-jj~yRk~YqgB`wM&NxGO% z$K@eO^V0w`+?OnycFv>EYI1%tQQn>HFs!-4zHTm@sWA%gy1@HeuCd@@-!obH>6ltR+6m6Sp<9ey|S zJgqmpK*D|C#ukBTl_NflErV?d9?Vg z`A6U^`K#hKNEKvueWsCbom64we^E(B^JsHZNk+O;N%OKkW&?DJ2Xe_rw*H`e1OHh* z^3CxIwsD`2{MBROzs*OUH{Ky1InORtK60HOd_S3weAeGxKJvJQ0S@`d;X{;sAK9m=l8+of300VneEBbXJ~H1_$w#g+2IrG6!z6!! zlH)9LK5}!|`d;A~%IDwp$$aFJxoH7!I)e-N-cDG+Z9=v3k-7W-ANk0wLI^kcQ3@ZZ zb>V)PErnrX(Qx?Siip7CH>2?$1)Fkf0>xI}g!g>}ku^Mxm2Y5IZ&6dm;$-2CPNIdC zAxA5;taD}jLQ{D%05?lL?75F=!#SBMa3k-*ezlvxG5=;1-un9rO>Zo~6<&1^-lCZJ z2ff?QfoLkkTvn@d4M8aze$xqi}v+(%S*3oi@Ub!t-m|eCcC} z5$_qrxj16mX}VdnEL;{6>#bJQdOYMS5w1n-|p0v<9`J}LTTh|@ZUZ>!T#)vOWSd=z;;%iTRQWEuY zR1nNgygwF^5=RANY-2T}_=6v=S+pc!-bgQ-L&dw+w2+#Pvg3Z{F{S{bzP;=LL|Gc| z93$_k?-W5)BMl?(XO3j1=T)5S8@%aQzvnce{$!oJ8XLndcoCP`1&thbKmnE>-Eq3n zJ*cw{r_FWwW|)qN?>%5+E$}<+>f%1wLANx~Dx2Z#2s`dCnxNqRMPCu_uVXW; z8}6%R0A%h_fQq|@5mX#=!~rT6#eKLK>=^;9W7Nwb+XQYS&dWP8tc@J0z{sXQBaF16 z{liDcW;X#^KBeib0nPl;WNalyOfu$O9@O^#Bq*C8vVNW{v%bkotP2C{XTS1riDH{-JSRgaBVbiVd-#IBykqW7zJecESUPR zG6$2(plruvdQm3cU4=w9nGTxR)=mAx9CY3{KZ@u5t1WQe_bKztW-ar{s=y|(cBcf% zDQm(FOui}+x3VxL^xTNS<;|p<6J7T-X*1AV17dq*nKq5UVPqtGzwm9*}4s= zDwya`$Pt(nZVGD~0~18u2g+u>4~#Kj8&xn0O^`z{>IX%L*%9K)2=s~;7%In_u&Xx< z*$fBb*mlUrh}l?|;D{w;2&EyL#5V|o0L5L09qJx^*-JMH+`zkt7YR4Jfe{ z>B%ULV3~?c@(8>+(>X^`s#`a%zZxcvRRn~CfDtI5n?`s6#z;6v7-0z;@g1zsI<$_D zp}w?)#4CGQ8QjatT4FjXB6pbi07c}n4FWeBMLzV#J-WeAB|89t^Xf!;<#RcF<>z4M zvQVSB(CBAubjw>hVrueNhDa9b8L`YlZHK9)VtwT-0T}Kt3Y+G@W-1NWxl-n2xtJ*y zPwt{L2!;mJu|WlfNMY@!v@%` z#~mc&v_5G9CpjJ@4E8ef5mP}{Be#J@v89uzuDx`R`~hTKQst?u|H-08O!g}ca}~(7 zj*y&ke-5$7OMIZA#Ii7bdG^mz=)+5j)Q<|b{Gl@cQ&9z11&gHwN*6_(usrBvZ$a9H z^sQmit6VLSeOh}d3pU$kSUZ?O-6RPbqY(%fqCV-D4-O!E96{dMuyJP6I&QZP;3ux* zK`drKc~BP~T*L>gj8QM;K?!(p2Ord7F$2m29Xz;>55DqXR;a1;=h6zngWm@R3ps*jCH5dR>jb^A94Y$D zmKmg!u*?k5s9$M&oK4f>G{RwvEc#7g8)cp}ak zLrdnzHv-1LWXnQ-1fh{AbgM>MP_+15>y8NAPy3_&ViDV1JM_a}SpD83M)~l3&{r8| zGc(^pk(d`GHoYT-{^JHVprz8$X&C=HnmT&*HFmU+((LMLfoq7(0=#91@b(OvSzG*9 zX8!31nQ$u*Hb=sLW$VwoXz@Xe_@3TuF8iBR?jx|#`Ff@w_Sas@7>?0w8d5_nL~Wr` z({R4hgFEzqov-*;c7M}(#r;T#`?0naJT_W9XEV&krFalD>KsXju#)l2H2CdMLWDkX zAgdIIxpp@?N(GDCv3QV^qiAaOyuzvBV8mx>#Cui=+$0?FW9CcyjgieKvWu{3o*}aN zKsM%%;z&#EZ{P6J`zjk=Og`H18rlpU`)UP^MFmoBeG|O@hRF#fIYU6sIg%3!a#o<6 zVXQla7@0t1jo!=eNdU4zNLIs>V~HweNu}s(q8jg%?ET$(fp&Kd@6N6Mq?Y62-ae8< ztbK_h?!m5joHIe^vqx`45_>-u+x(*M)vo^yQeH;+)wh<&~)e97K`>nuTBSEWH2wWBl!Zjda zl4AW7zXxnU+uzEa8VR&-kd|;kaspjtmD~>C(R&bF`ERt6&Hh%A3iyJr%cNE$soyD_ zDgq}DIJK<9T>W0UceL0}gPLZk*hL93>S^Z7L;K6r{_%2w6WG~*HGw2xy~EGXXvZV2 z6Nzr4x>~D|E5<%Rn~DcxeW0>z zF8Iu*ou1%eA(3x{j~3~oN4|J3U-pXm0{9bYn3x7{hXf9eiT_XgLq;EW_J<}*Rd$6D zz1-R#R_##HHShHi`$Od&uJ#9Rx9UFJo^2%i!^7KJ_J>xz$WkzVmZSZlb7j?ixZBBE z(4w-lwP0KiUoJKCwub#7yC-oiGs|v&2vBjH!#Hv-9Lpoex3_8C6dXqDCg3T4B+;-9 zZYTSLeks}?wln)fA7Eq|67(_q!}6D(Wq)wK|GexPd;^;IpVRAzWA~pYQ!RD2m-LIL z4tIEh9i9tY7rWu5!xB(?aqcVFw^I-xuF>CBvn<>mM>_-c)krcjNHK4GCm&)gHE7A7^it#JK*aw z*-rRc@kh3?`y*eHACml$D3d=8B{=msqqvjB{EO+1(|7B-%aL z#m58D&CeD_v!OHz5m`71KfpftJ1vZeMWCeIf|r}l{E_{-`cg0if!99>4@sArEu~+& z21c_>%}j1DHOtpdU85;up}_4#0f)7(GJE72piMB9>xP9O;D^7u&>dMS+fGau#kNx( z#sUHkpn%=pES2`0QIWsg%y)yw|KQ_B?j4WC0Luf}K_naH?PTVe#JMT_&}XVq!k?|W zy4ZJSQD?fM-_h#ecO30aB_FaBzoSE`hibBMOVs__+0pNq)y2W@XzXnFJFfqj-|?>E zcQm4ElWnwLCG6sN^!If3JNh?Ze#eYY_#IgwxcI`o-x1aSPx&3QG2d~av)|E#+ft0( z?-=i?@;e&EEarDKiWSiBsD!YifuX0PN&GPbDNFnVmHE7Vt6#Qqpu`@Tc*@TnAL$LMP3 zE}?O956_WhD%)ll*_m~4p0srvrG!C!Qn;hJs1lirLgxvb4!8QkntsujmPV0^U-VuF zI$p(DieJ=YitHDiUtZ--yw(BTi5GqqI0LfYL)N52@GFnM`q8hCU|U*Gi{z!5Uk}g1 z@Yx&MqE4xwO@n7uZcCAHX8uq0vv_zGiqF_}EA!ylI{8_9cvcFZ#n7{{>Swj#SqXfW zO!9iDpB05?A@~f7b(5bpt3CNyCzW&Xv%YDs_Ol)#8h-Fh#m{e*#jtJ(~YJ28jlMAl^YK-@C3q16V9z^3~CLpX})4Xm33J;1ZuO+4Ly;GX>TA)VZB z*W=0E4)|KkIpJ%{VG^rc>qw!3lJ{}+|GD?^0C^wP5pe&n_`ic&{69;L|J%96|6>=b z@qfFI;Qv!ucZUBu>#2A6Up<~`@X;}qmS@w*u2a);dNbR0pU$s%brKJ`AD8e z7X3H`J&$f`Mf)^Sdmg^h zno+Io2<0xP6or~u#}2JTZ6$Jd3mN!yO;Lc)g60hPc(+m<3RPV}&t5XQo`}Xp|8pyL z%A{u_oar@9;ELkbP~6N(1jmESnZCe#=GhuY4ftgRbE3dSM&{Kc5%T?}8qy6fJ@EMnFsA7F< z-KE1-w+au}cfY{l+TZt?Ewi4@LF-lN!-d{CJaM*ntXtvE-chWj8+!+{U-A7j@Y`K; zN8sku;QB*n`r~Ibo#E;p&3rj#^5`~SpxahpdDU*pmegXgctwg!o)ns$7x3 z*&NL;U_=Xtt>scr>fVv-*gb!xdq<`S++dV(O#{Y5vs+E&`uu28q1yatQu%aU{&_~V zNu?Kv8FQ1FR9x$MtJA$SO)5t$Vs*7i#Q^Na-J})c$;S2U8jh>dZ8om|$fUyErnU3y za$GzA!Z&Xz&wt9Kl6mCAN7v85W$xC`O?>}!EeU%!bzuy3dLTZ~U0>!8XZcLpk@;dU zpwtpD#>iy8%Pj$p`Vj2e3~zSh+GzXa@cJh5lKQYzSyJ~+Y)Q3fiVp*DRoM<1lLJs@ zM`(1IY&87NtAZpmwImbvolt# zx}C3DOWn=a=BBRmm9sm|*M_C4`FeWAK40Z&2+u{Buby76^L5=M&)2af%6z3ZX7g37 ziS~TW>&D{0t~k%v?i(oVCsAv@R$^&1!vK-yi-Yc3PJ8~J%$Kml-F!`G;%0xk*po9fWP-lNBnKWTcIMv>v$Ql)5?Y-Yk@3jc6an%$(7gFq{F zLbP}^DkZ|xk{E?$hNX0IfV)S361ZH~X)WyNM1B740`}Q*mGwDuN@0!av%-0nXpvXsTl?TQ>BGjXm(fxs#dE%)(k5h7xZ?gGiug z44il)W&9gd@8hdPrbJ9IB@Y^hW|HLiNye1c<1Fb7>|@d=HKo#v&wmuSg4eO$3j8X0 zY-1a%0fFui8u*fRspoOLudm4OC>2^3#g;R_zyu_!>VOy5!Iud_Vbn3=D@#m$^)$ld zjV5ONAY%5r!fX&Q`x==w{6a>pr?VAnU*^7S={~y?mI2{T97{8fg@|K&g<~P$m;*V! zD8zD!^hrMw7x_hG4$np%D4;Pp;6w1e1jk?;yg}j-EnYYCXOaZ29I{C+S_CkY#D;ob z95_|KjyA9BnP&@X754?Ui*^Yt_x^9_n08HmT?1dHc1mh{O};}E z*4;LN`k#y`p_o~a70E0;!K#7eQ3m2652V&5c_7&n1+D=O0Szb*=2zbPazx;l(Dz6jOR=Dpbq z4{9XVdQ7p<2PhlTT9zK)rP$ih&x6#Da^Xy!lhxC?Qq);VBg+fa%!k!=oQJbuv&^q* z58$jTwS;5Puy=yn$lG=ejb+kd>zYcNbNpO{8OiZWEKlp& zHS$0&&P{1XX~)$ko#m9%DDwbYIe`s*sbY40$Gx(NgY=C|`WhrJ&04(7?;pr{M~pOz4WeZlog|7-_tH-cS#L@Nh{HJU<1|tPg#Ub5_;!;D-E`CBxHke9GwyxeN6Xw6OWb@_+-kBrfJ0}ct-&paTTox`Qi z1H%m2h1$B=aLQWVgxV)ys$zgL#$q?}P=Rw;n>nc3%?Vhb0qiHs&GPnzT}8vW1wH+1 zlys&ZhcCfq2&~UMO}8{bDf=w)y8kR9>f0?xo45<{eVdan54X3L1`ot^`cKz%_0zvY^Y;{&%nE8GXxSw!g z9?2^a&~6qA1aX{{ulIB;;CiH4?Lebf(;NqyV@Na6fyR19Me`fb96_3{d8uX;Jd2mN z&nfWi&UHC4FSE7-mz5GFap?t=w}{e~na_c2ERYSA$!Y`H-ze;99yLt|p!r^=DF8H^ zkmk5dW9F-$k*DU}7=c@cPdD117E+#Gg{O1y>GVAKtEcpU`0j>h!|>TKdUp3Td&b5B z&*IoXGu!4tFeOI#vZ6Uf2+tT!*Huhv%^p5QlUjhy&;|aOnN9x8Ij2>}P8(p?iyb@2 zktdFa!WB?~2VLnFGN=eTF0dZ91Rld^90p+U2K!nd57|}ySOJ=s(==hl;BW=_!MUxI zxKK}y!bkp28ray}6ndO1Q6S$by7u?iB@_j%&Yx1XnhmW!NUe;yH2@SYc<8*-nwPuT zRJ)r8>pGySQq6rScQBdHe+*GoYv{oU8hw5c@0S6iFO=H>Rpn38hE}HP(bQ$XrL6jatpnIxP1|f zB0%L*U|D>{{09^ugn;UoT8@Cqh={3xmjtMc>Ak&WKm~o$MpK0o2~%2P%GuAVO9ys-a(ed6PIC zYbwNj1qT?@ZGFhn{TtSE?IVv4M6xxAKNa*Gup_}+LfHem#OB5&= zKUmrU3!D(Rk@Q+GCkR|Se63S+(t0_KyuZiZIDn^aYH1b_1kzGkXOK7&bpb?W(Dxuu z?{*JXy2Le!m$2Kb_*hjGZ7+gT*J}Anmm%pBF?$@F1DuKlIQ6QL8cs!1mQpmqsm95X zcY-ZPD%&OFbh$>$idkAWb{Hu;ny!%6xUmCX+MY1kI5;UuF%B-Q#t;x+!;TG#OXbG; zN_eWTyLvUCmnFDeHm6k_vG|M0jy8-n6ts~rnuW{|$Vh+h05W#JN04#dJ;+${vnI%h zkU&OV59OeIdQ@H}TZai;cU&g@sG{jbcraQ%DCfensrW2LP{WgL5{;Q34g^z>psWMI zOduFV1Z{v|0ulrWitJ&E>@avb6rVl}P@c9^o)(0seevmu0P>kB4?N&OL)x(DK?&&r ziM|sLTR1+O7l23Y@#@myZDxmezA)wRo^eM$yq8vk!+RBZ?=Br-`yBE56?j!aUQLKs z?&=Pw*3d@shT8oAZm3u@b`15eJG5JY?V1Is&+K|XYaUuV!<0ko3p3wd;zAt=0!FKl z(J{KN+K@KMeqiSfqXQe7lu$Rh6DM$MX#6?coYqb&M`s;|_y3kub`l)hoM?G$N&9hZ zdk+iTI2v0L@ZW;`#MLb1az%4D<30W>%5eH`Lz3}V|j;@_6tRH4iartMCSm} zX(;-(zm{?!8Q`=-5>Y>Pv}e}E=?}-FzF-lh1G}LE^Nn%`lJ{W;%!lL-Bo7t1z1V@C zbh)-?HT8>IB9YNs=n9l(q|8fIP7Pguu)nyDRpl2qNZq6?G&zJ#ZutGjFw63j=E~|` z)nUQzX($hD<6a!tqk{rBo(8t@dx1NHvVZn-fLR+yY4Y{2svh`ii4BdS4{$n1fX&Yh z#v1*rg0Y@BzWHKG{{pFhO_crx0@sVk^}eqr#+o~uVXVNi$|{DAP#uZErZywZD~`^1xcNN?PmhL(`kbRE(D!l4R}IQ z$;f-C3zF)tmKG!Ta-QTp7FQ5HB|sx;}!WOrlj2NhMT3?@mw2p;!Zy zHuUoVnrd2}p{c(r+Of~il69&bepH$fj(o`qzMNFYa*)EyOX4*^#j7wC+N2zR!>tJv zpv5A#T$WnvN_LCZ0p@kvQ(g}LNgJVr|12yg;lGOZS&r8*M$z54WQsZ?TcajaWY(y! zJhW~mE zP0$kv5{cj|An1++mmCP{DFog?&;<#0I1m(72yP7!xK2ng*MWdj2=)L$hZ|D3o1NhL zZh>Rhqb~)5CP>i6J_);b%abq>p4P>uVfLrXm8ZSoX=Qv`kOIAaRvwt(K^}a-ZWtJ% zJP3scx$uF7e0N_|kPvGmL#(~ZDTwvPB^j}1l?B9FoDgft-SW|MzrVnFAfv^^sAqZQ z^hYn-zPjXP+qM(Wt7mBf$Etg6gGLju(J!2R%bx49FqB29E3cgW0^omWop?hk74>$s z9pnrv$7164laOXW_TvoV{sJZWyXCQ-K_mE~uS z^~Y?@bN^yE#{$raECDy3+Tg(aB$PIZwYl<2ZK;xYJyJyvRyj3Hs#y_E8_%wg1p42t zA+hwo3qtUc(*NKdB$Kv9-=wXW(kAPsRFxPLYz#eWIk@Mk%{YD^Mk7Qx*R{-SeBCkr zsZCp@JVUrt+!F8fehMqVF9BCTCWWg^Wh>_tuAEb(|CV8?VzEY+DwbeMUJ*j(D`|xm ztIgscci;+b{ttYlw0QFL6}XjGVTB%GH%inj<%>5sQ?l3sT1rx~7+b+or2}+bxl0zy zEUFF;zW28*Y3;WHw;3g6lY-%t0st~y;)PMq-U|b7_^lMSu4FKj#~_^w=+@YoTaosU znIEA@s|jtkp|q)_O+=O@wE#NQMj;6Tk{w9$-2Y>~>qC7s&yOCZ9l`?ll2MS~`WH^` z(_I4Bk?H@?crVJ>;?MkTY(%YlIFCpUJDOic?&x}j$zWizADJ}P=qO-Bv=dlv7I270 z31$5Wq5kv$R-K4d2(UVVtcv@qqfzek)*R#5QY_nP!_1rxm4<}k>c#c*PPs=W=+PbQ(NbU6 z3u3T9tkz9T>JStAySdoQ>D}lP>qt>0wOCZiJ?Llr5ZC%eU9iK!>f%Ll-l1vM&o5w< zRF8sAwxr6#iif^D!eJfuQ3?h;DXB!IWB5s<>J)xba~rw44Z5PiAeUt*xiPy~DPxd^o9=(=j?OX+zKahkmAVM;{8?uWSC54$N0O zWG*{^%QfVZ(+9h~rz9=x!l4h%{3(ej^re}f4rCq}%k-Vb-NMoe1#IR;qc(I(&@2{vCyo*Hc2jqE?e4>x~TOHBg-M5>6tafeWlVf zl=CN-o=H(}$R8;^)BX$fTW+g}DF9;1p_qXh#b%&qZnxuL=MO}+9hcRqx8wVN$->rk z7r2Tj%tq-N+e*m0oLM1B29nB1($iaW)|SHSvAoZ#>~i@1L*pLo`-jGLu(6pbx^cze z7<>6&%v$k6>RBtQ2)flx;2NW#sv5BeADgwC-QCaH%K-JPZT(XgHVlL{xuz6}`Qa;h z)}|>WErFy3l9bcD8d^61*ZhGz>RD?AjeAn#e9*WPHlD^DEp>|im$UY;fO^)f+hjrO zy9!)C6vSy{p?+-E7Px$T_E}5Ip`Nv|im-4HHV}o)pjx%jA@ZzsR7eT~Ni34Q(#Qy~ zZ#wycY126$r@84oE-o|n1jfCH@xCqsHxe1w^;Dm)>-%ZPzZFyB)PT#btpfKgaTyC- zCL)(NOqX6&s251lElY>)jT#0q8rPlL6~U zJAkl$_o@3ZajIglxUb8F^@m;>uG;f&fyWg-PZ9Ekb;s5(sC7tRXZbd@t0 z!&|nAXl)$-fD!T!3reBXp!URID(X|4;Z0$?A>})|KD$9623sXWPkik)wp^+gH9c-K zaKXxIFX}vZp=oRb6KmJQ;48e8X&n{K)3;5-RJqvDhbFO4AjbDm^mR8Xhasoc!aGW* zB)5I2>z1Ol+91l0^*4&&l_XkNG>VQZ31UYLO%ZNrZuvAc>c>kE5^tv(U2g=R#5shJ&?h?+5=9oG|R z@V0;{WJgQU6&vi2+4x>);%2G1+i6Bq4BfnPaM60xKC+V?BO|)yXiiGY)tmVm9Rw~8 z;a89cd&kXaw3&nHSKXE`D3vxNMoQ2nyq%(3@xWh6r=9y9rPFSDz(|7Gi}be{t{22C z_lq!!!6<<8i$z^`#&JrFW6Ey}700TKV^r>V<_MVJ= zo(F6?=vGHy|IF$yUy0%OoqQ!mju?OCN{pvgl`xy3I7uoDk|tiIPb^1y`o!L?Mf_ZS zgTS@pH2hyq%N0Jc+#BcB&jMCVWMm&~AL5;$khi z9^-Wx6+8gTJEUH?=5b+UTwk<>#bUkDCA8n+CqVheWa|w*YU#0=tPJ>}Ms)5XCrTJ? zogXWevx7IG{u<}Lb%U0o5)m_-d^oBf+Qhz4P!l&SXXbWl}*%kJ(`~ix1|@@ z0Xk<%I_@m}v$Ba?=ciRGck}a2LD%`2QikT|e1Fyae81X0KYy&lLBzFz`MGt>b$))D zs?3jf9_{%lOJ*Uy@M`DzX-TXLw9%TMYU^-*KD4I!sR5m{^mdW{ne#*S5vbPa4wjAo z)@GdJ7C!su>gh8ud61uRSuKgW*Iv9FmxptIwqZ5-YgQ!#Vw;b0i5HT=f`{^<;I`7Mvszpw;6P7NhmpL5;5}hB?9S6FJ zqk=q${iggf`yx{q`@s(E&tkI>Y&J(?Z_A;@p6E&<-C&>-8;6U#U!||{h#UEGw?~{{ zOsVIAI6v9TYJk_1_gjGrJ%w{Pbq#TSjTNjw+Ii#>iCjuign8{f@Rl)Y{e;CY8yy|- zfvFAPF{8|UA%o}Z4(fwkxmc_p93j3ki30*nVnw-9I-r!Xg#mdy)dza?(U(sf=^0ns zcEC7sx1X`+f#{kCM&E^5nV(Odl^x%+S!thB@nk3U2au4u1A93JeiBbamU(H3PJaZ? zYuD%_a61GL6PXg?W1G_#O>jFr&?1sDlf;|Ev>jCIYEBx@arSw>gCoCmS|Uw9j^wyUnjwf(-C!0D5ywzWD%zQAf++}Gh@ zW+u%|qI6eVmPu?F7~S)XvF0A5K4uSeXKbLc=fP;`naIEUS>T=-e~*;ve@CYX=@bDP zkA*%o zC3WtrO6uGrH-}R_9m>Q1Xg!^&d6*$pT~DWkwF&MIF{(N_rE>YI>*>S|GXjW5fX==d zgGXx>@%unl9m0=^l_-zUd*#b~<62awaZy!Kot$1$QJp_8!SdZn{IRGGRoD>61X=|e z;VA0rK;uN42SXGox^vO^f($P*5Mc8;>cRi$O}hafpN7AL9%3sA=m92gtK`q=7w$IN zcH;sJCN83GIdmLw^kKYbB*UMf@>e;1xzxkZ6>F&DOvvUp4!CMSYOv>#NHJZdVzswX-}14-@_mdH$hK8^E{jf*!pQ{8zv@8eWP? zY!rm|oMbSaAeb6{krUrNZ(tqFUWgs6C3VouXPX2r9flBk$eJ?}Po~qBp>J%gtj_Mw zsQTk@ezk53`ZImOHqU4=Ga4^}fcMspPBA#YqQ%E>a9w~?D;-X)gHfR`P00yqQQ{+* z^DyP`YMD#kMp%L zOV+IIA1EJOO<%EtOCkzGq6BZvg9~)9Fq7Cbkjm^RlbBN(<-mDtlt+Elqx=Qgc15;L zcs9yTURt9hx}Hc^0_Y}=l_qh6US=OZiLoE#zIV#by?4w%Uua-{zskp6DJR-48$~#>n%Sfb;0jyx1RTB9C=u6M4*eBIgm-y9g|5 zdC^3U(#aFK`?)-kM3e)G?h{xzh7~N;6N%=@?Glc{eH^Q19wZ18h8H2G(W3^zrkY`F z{5pC3DSf2z^Xl<0LU}b%-f9U+ZsWAZPjq#V?gyfaQY7$-go%BbguUKs2}`hL2W%N7 zNoc7lf#|v*U13T)u#K%xAzKHd%cMt_dEI9!U_~r5CXd7W1~l#uS8&zIaCBJ#_%7@DAvxGTD}gIT0S!&h98-$0!Z# znD!CuxS6mwGLB)`adLo+9Zx-F*ij-X%}%&8WcA?xo`WdqNCSdQuNMfCDZ98ccD%X( zvEy=}%k=eN*pYSTquBA^afBVCQ@qoodmcvv_dy8|h9f%MDE$(KzigL&sR*p;X6%$& zhp`1!xkeCxSi_Ve9Hwwq0G)?J4@IQ3wOLNJe2U0&c}GH)t)8oqg0Bgz>a7?R*45@G;dmdv507WfD`yFh;;ktxBnM7= zKGRFFfp;^B-y=as9*Du0^_JmM_^&CX8KF~yl#tVcuv;zqZ!tAeC7+mBuOf@s z6zi3g%)#HoUeP~@N=YLk4#!f2@Vlt|oNwHPFQXb8UV1o2+>S?;xA7J zyZJmt=TS{%-j*!rx-_~vS+|KNm^i%+*`$x0b+$>r@dETa6M55BQ7O8uRaKU4nb}ar ztQTWen=u>f!fYKfn}W<(tm$xu<-Ott(VOXlwL#)SDn?Jt_5w-ep*`@JYgJ*_fXVCzj?FC@{5RewZP9;-y1Ko9RUlqiyjw1gAk(h^}UR}z0m@s<^s7Mm0WCO;Ebwv~gp zTn^$olDO6&?jQDo8X4#Xg-)aUUuLrx6q;tuYl2tYjIQWDi?dflC%VT-_m=;t{xZL%8~vp&auCh}hwV&% ziT08a<1hDR#7IOrk!Z-L^_OsE5}SC*qYN3(MkzRqvL3Rnf^2I^`pbfsTB9Vo>PVMY zt-oY>%IphEleqq^ntdcTYmLpWO0d4RCVQf5k96BUuD`Tt;YNRHfE?nH!%(Kbczeo| z*eFw;L?RlFL}fp%zpPQ~FFwjZC--Lq-SC-fIxb2s`+46?X}EJ`!|WhW<3q=!YG zNFvHWqFe6umo-lM%XYi|ve8L@Sn_B<$?TBzQSUXo)Q=V#`oT!VFCbL{}N<0{(CHmlZZ2se`A6vJUom^;FScMxp+4 z6~#{RV2VqxR%G;!YWfkyW#dN_m)M*St9Ey_{$pUmy)u^ z!v3JrR>D=NOk0k->*qRpBIQT*yH)8%E%B1-!^ z1k)5&F^gu*a=S1KM`lCMVEuejG<;B900=7T{&`JYt)={Fd>B7-sm+D%!wW;62?iG@M7H12TSfP>qZuUgC1&Yp{M6 z{}FrGU1U8p^TnaZ)6Ym@QRrrH=!AiFV#-0O6IGN>Y+0#vB7t?{PJV|@eDBbST`#B; z+x)2$i;}PtSALc|v8b}Z&A?7z)MJd;mO3#)?!?qr)CqsN6B}R4ohZ*b(G-ZDy`)a8 zXz0+1hh}vrsOWm);73G-XpdoZ~ zcN3n2zaD+{lF~pq2X=S8g}Li9n7jT0bJvsNpf44>U0?E&i~jpvUT? z-Vb;C+@~?LTsrF4ShbFNqRWSL=ha^OcdumjrQ#U-9a(DjIk4F`*ldZ!K3bDK(N#sd zgim|zyEJs8JP6381#?9=!ej1gYSFs8*-$#;LB#$S*f(ye@0{MQ7~aKKvaYFNOA#D< zu`?fc-ygMTz?LI4Bl+2k)Fbm7UuHbPmVvZQe^ZfQOIAJDmglX0YSWjD!vm2(%RnWx zkfI6MC3GKiG9ulDB$6GoA&sQOZI=tAWeJ+i|TI3ob2+>Q{hpqC$- zH6wfKQ=_;)_gcX zec}Y#!C|OFX{h~-6F+zu=|aI2es(E=W0Be^x}!xYdf*_SgIQ_*vZa&16G)cMk zQN`hxl46*c=Fj2==+t4qv-A5AV1^6OEu2w!E9w`b1Q2{_8L&(aAjoesjD5o9Lr6V} z4I5A_0LJAHg~jqKFl1$viGBCI@y$lNfYGy^Qk zF`b!3$8-;Q!2VC0}S;Z%o-a8$XUh-`do{#zU0hR5=G@nN>)|F)>l(p@m1)aNH)rT!@y;Xd5bI!lS}HPTH{ z+xVI(?E9={>~lJ>{|B4pO^0S}CH9Ln*%Mt5(pC6)jKW`a-5k?t$e}WFc*tygy|d(F z`uB6PRfUMErprF~kK6dVDU;YgOCBXRjg7M8J@qK}BHPZ$c8Fx-+kR7PltkAZ>7vy( zz5s>&+6j#Pp}T7K`?1*=Y?fPM-(HhF(TzvC`yaRQeP73ojn9l679xi=%*Ge|NS?$# zXXQyGqQyuQ{%ITELA8yq*duwMeWhTGj63Rq9!AawkaH=?m>GLRYoJ7T80kE`RW`o8 z4`ue%do%Xq9oQemW_PjKVadjqOOrj(-AB4*pRn6~ zpOGh$i2P2By6~@C4uNVAzip+ z_r~3_gX7Hzj(I$k_j_RBq{NWNEJQ(^8G@Ba08M7V|5!}h9wSLKytn!hXb%h77WUFneG( zRXl@Y7#y_~CsZetAcUQAT8*%+I1k-UecUkE|EdPU_CJLP`&MZ}*coI};t$2sQ9X3(-1iVy7B zefnDx9FKZzR012Ay$~RHR2uvzCLMpuAS~XWa(T0T^gm&EktwCzi9HW(5n|%DHT80H z(O&y)(6C-Ot9x1xbo!_a=7)~Dz=9m2(g6#iO$Y#b{6SOlm^5oX`c0I6^P``{F==E* zyg^3Z3m}o#|MV7>4RP|eeI)9b?FM{@YeH3azoB>VB}JvlDS81)P(#0JDl!uzJ1ArO zhe}LCqc9cOSB#9^rp$?Z!`4iOGA|iZ!`E`xuS~jgo-djCfvyg zFPBjfu2Kpg5WfixU z4&0KETLN-p#eLZ8&!lTP@%B}Vmp<`lS&bP@|NV}XnQn|9-Pcs}F-W|;#h=^ZL%RjP z1*S+Jvm2z{*@6~M-SI7?v|#+i^}P1@iN&{kRDF4K1NyQR`@(Jzbib74WlSqXjJdFr zsV%79Or9mHH+gM_#nNl^PhEZjt+ROZWlRPm?1_YrCBk6};Tk0TT6_kC78a&aW0oAI z(a>gykqB$0u0KKBd*ln+o5~GAC1SuZfm>P{!!#-dW0=NLrsz!i1~#b~b4byd@4*a^ zu;P{$c8bvOyG07l_$`uxQxb%k`I|*RQ^Z**B}HibI#r3#=yH?ZZ{2Skw4HWa)USA1 z269;-bGbzpP^SouDK|;7uPphGTiB*AwAqPmHb@Z~MW!kd8nIE)xC?f`4xG!T+0hkL5RI zcr-$aVeNiNjot>~S^V2kRlLWOvs&nl=>9nB9PbgSurDUTZ%+sIg9)`CRmFQu*JMw0 z$B%wG-sAU5ZgjyR1mKU_<2~BnkkR+zgEIOiq6bI+(|C_AH{?-Xky6UOxTqdw9J0-G zOcn33?u^zbi7x*!=XeiWhRpuhV8;IM3u^YmuvzFaRlG-xCVQf*cI?yf9(^jh(FGHb zL(60Kc#pgp@+5XJ%ace%t&jaL;yv;y1Km}V4fM=;^*~1<=h4Sh@gBWSYYmj>#vOBx z_xS6&%)ZJ1#y;MG{TOVv;Fv1jgV$tFbW4tXM!ZMi3T|}4ACSeaWA=EDBiH1K%yr;@ z$b0XAD3a%WcmWrY1wjh9T|Wp)uy?|Z+``^O@SHPvBe>UpZVx|&ZU3LQN2+wwj3+~wnsVcFz9SHBlBi%R21xwmH&@;zEhEoi#a7P86!&pZq!ul!_?X87n zL_6a;k!Ux+jLRpDX+Ir%VE%Jo+QV42Bk8gCX+!xQg=r_2t!15XmO63NPwK?X>KPiLGAHiKITf6I<=9R6|Z1%J&Gnf}P04I}v@AccQkRw2)** zJF!`wg8pNT*oj886Lo1Pieo2wOPwfAIx+Ngn)x1o4fw@;kAGB~Vfa;!pN)r5{H$LDS#Zs?tsWqn!~_Vr;R6fygIJHQ8wUoxYFt9 zi4iJw)2_%-W};1Qof$cbWqx9V5BUGV+6=OMj(?#(!|MykBNXa0EYk=j7Xr>n3_`I! zL$|DgaHn(ThU+tIdTEi08`Nkk)MprUm~n%ZU}4fzpP{k^)@NwF9P2amQ%Ut19GC0Y zXQ)Mbk-9#E8RwVgq0Hw#cCZU}a7j1X!B}+{a{r@F{-*j2zpcJd_&IJ)E03e*bWp4aG8w@J z)IA|!Sn?4ikU=@86Z#m|TvETSB2{lAQ=bV}w@wHcwp>v?%Jn$$a~KBkOGOORU?}8- z4#T>irVK=hE|JS;i=NB<77rL7# zbr{y?49Bpo5e&m}o`jL-qDDLX4nD*S+e;XBwF?;TB^HVpwyz6d*hGu;Vc6pOzXij- z+u<&7|E!2%O?QhJmKO%@and-3m5f%vurK%^WT(@y;xMY>b)<}k5Z{yO5Un5Kq zzvhJ^er^0>!SQQYs6Kw>$)QwVs6m{BU!I{19TprX_+@^=7=F2p5%8<)365VWafn}S zZsMaNYp*Tn(98mIxk;CIsVMcK(SwPu_mer+|?!!P?dn*YyxSm}h6|L-H= z*Qi*;uh!Y+`TwD^{Qnr5|9=BJxU4ni|97Arj8!iq_uuNoZ^W;Ej9u^JxEZx$@yi|2 zvSb_5@5qo?0lVr)DJI*1+}v1w?3yR3FT|?AwUnv93YUe)3fT2%zmj^Ci-`R>?E0L; z0CrsmE$3r(*tIs6V^`8vhFuq9!DNBtpTn++v3ypXThUpmbx04poa1EJReCb|UwL!< zB6dB6k@t$zVb|v49J}6bVc69t4n_`=WDeh7#RvFK3kkdaY6k}UzKJ4s{b&o=b<`w% z*mbYQZ^5qD?wI3DJlr{ipM#4ek*Fcnu+ zh+U?3#Lm+xGnrWLFziMpDq{FY5I~jh} zk4-0j?f$9(!+vEJ;@9)H5`OKRrH@}(Y?biK@34elVY3)ITsuVYt4*vi{0bZ<;Meja z9KV{yB7V)kgpbq2W&jTdhz&S^_~l2Yx8B|Z6u)NJkmu@&k0O4({HBrPSL?%wUuSs_ zeU5PadN)YIuf5TTU(Pl%{Ms=~#INrM5x+iM#17tV3LVVNIvA_I`$MDZ6#F~tVgS5?K*Nz^x_pC#XbxUw*Yg!#6gqY+z4-<&qxmRHwWOomyjL7$ z2&hdwCgdB`j8GaS%Dp(6AwDS!<+8D?; zmG{6xONmdpn74HhHci_zs9bUer>a>W`x zktj4j=C|b=G&(5lOJt9!dbc?K<o7$M(a-gc$&quj|Dg?xi22Y3sK%$ls)CAP2v zu6!CJOJ$94Gz z!=gBG+_#G78=%nc;|Oj0Pa|@yb^(gCI{~@G-1lgxd)nCvry^Ao_vd47! z1`)ea*@I^mvV4OBQ+3M5Q)N3+DZ3v*lodawkZ;h1YSj|0Jl~+dpfT|(YV=H{F&H$~ zKZb_G7sFxd{!Z{djDDwq^WR;qR6~nHzQIt+iSuS4@5hCH#_|m=z1GO{4XR_`>~~IO z)VRYQPK~d7NlX1pcOf;tY9^z`3#N+H_`y!3#y4ZJpGO-2H8x>Aj8z|fOWxpPhVl(| z?ZQr!;hng$n|Gq6t`j+FCth5V`8N%4l$A?FjxrDie*LKNc-O?W z3LIrJPDf8V9UqQR|GzeJlzeEDpS(bh;+t%tig)k%KNRnpwB1m=t4yL0@5;5!c)aV) zTR}K!tC4t@=0|F7(Epea?@A71++fU+bjG`mKf`#}lL;8_`g%`_cO9LeAMXnKu9R;u zXR8$N3ZKA$;@M^b)4@lK#k-bx3h}OO+jzWd+7ZO|wbA%E&8!JXai*S?st(4x<|IPA zs}99>OVXYA58V~xUCHr!@vfd*5z6lJ9{O+NP-fOiig(3rK`4v)Cd1Ps6GSMp+Kf=9 zrX74)13FlWbud=_^0`Je_sDOGcTwzWmquYE9`4cyt|r^K4IN@lZD^)-BC-^M7eD7= z^0?e&$g*&y60)FNZjjp{0v9~5RDFG>e&bqEePOt)DqJ>}sjsf69_4C+TuT{n4O0TH zX2}|5;3|so571&wf$PT>4qOf9G2rTO80-~DvXVXuu`YeYn)I`Xb!Q8ojs`5!uy~CQ zv04LSoq_HFA^~14HAOdj!VisMyqaVLuPUKy2^w>=`bS%&`bTpaUcJTvSE2^G)d759 zYgN;VQ$cNonI%or28GCOGAFTsnwy6yTKzR!+n} zrAU=OzGXvPjLH2L!AU(|1gGjS%3?>1gVV$13gC1B$6kSsySvFr>X!>b>Zc7f!EZ-c!eXr6I+f??G*6IFR3b=_3j35vVE7w)ILq% z_9R5usum&^}%HD6>xm$B6c6z&f-~J@?c6zbas#0*M*T zjP|MNQ;q6zG_g<7q?c8Xx)S>|=Np_ZNxuAM`*Ug|eD!+Hl6v3rRDB7V`uA|zp+kcGiCn6r9_5Z6`Z@b^?u!BY^AWV%JEXHe z<2P{ob2Nn6p9hEFkp#&XEOUUG8zV)fxd&6_u>P2prT}dzE*?xF#3_A{kc;O&%bz-KKpYhPx|f8 zoW4ko$Gu1U<3CHZKbc^Z+oFxzpYDql>`yx!y9pipbqxKe4?Cj$F~xDmJw*HS;w`a1 zhNd|oPAjKlB_7ddF6s}DJSp_0Ww zxe_2Js}Ff=4Oicny@3m5>W{)@4dF6gAF{ZjdX#Gnaz9ZYvi1i91}O%#^a3rcK4j8r zZjdSjGK19TAUvZW`KRkc9$GEc`^rS;X8aPp`jEGvud@1(jc=fd>iFKEi84|j@)C^y zJC2{)r=(TfK2^{%`;?612T3xM6(jJ0%~MXYPaP`3dz$~AMyWnztx8~@%*cQKbbZKz zxqf4P$e`;mIo7>ipw&7TC|a%SF!suaj9abE^A)VtJ)DvAbVds9#2L|)MXTjj5$k{7 zMXQzLC9zs#TK{+ILrz%oe^VcF#0qnjvHFmCZ)tQz95XFv@c<+BA@4jCF1WtT+;Dx! zO$mbJRwikvKIH5JsRIa>&O&|210gJcaN&T-KdKKo;+jUP54riA1+Ne3Ge}n-(w=k% z>h&&@)ra&NB(D$YHHbmcq9x|4$fN^l)rV~2A=HQLvfP~2hrE9vRei|O5CBV6A9Ck1 zsXnB)8?O(Uo#}Ckd~yH-6V~DQQhY24Z$pM#u;@^R@Xrm!V9^17l40L?PTr1AEoAi} z-QA@6kln9qEJf_C&j*~ajAL)_CQ_Ka)KbLWS4`gik0^)unJsZm0_-A_?H%FT%Sxp;f%3j-)U3$(0_(#6{wF6Ag4 zIEA6~`Y5o;Ao=Iw?fI7SSs7T5&dQy+dhzzZ56I%}XWC%=;$V^y|G`+ieL0N0<^f&2 z-E9fS=h=P?pKBk0kuRrcGdu_#9ap-oZ)N6yxnnp>VRj*R}M;+b3rEE%Elc zVdzrSyNlpl!CwUD)iCf82aJQW%}fPw&WF>ngieS5CY+8zMG>60m4d18xr*Ri|0yv) zcijJn;_bGJ48_|IUJ^p+8x|Okw@JLFEJj<*+DAjRA3_GXANavp)mQc=d@?WJ6Wczc~t9&axk zg|Jq613pgq3Ik+xE@7n_Q4Hekg)T$9eFTNIlaI)A<=;dx-X45GFW&xPK4RJ+-b4FP zj%jn8qrDg$Xv9Z5($_& zU&>o7&DMW|#eud4&EBBdo8>Lu2~Zj+$_)oO7c(Kfw49_qxdB!GGDuY47A^~c%d#-_ z6BN~>++2`LFcs5FN9w1SE_k9*PA_c_8p1)tI!XYX=ka;ej^p!)LOVccFv6TddMTYh zniV+#vmz<@A`PJA0J0*>;qc4P@K~ZArHbiOk1!+DV*qqp3mP3M^|&yHQ;!^Dd4?hi1?@-Um}@oK9@G4Y zwG9db)@C}VVHt{<^r=U|!azOZ&l2kKf>96JofJwvt|(HE44I@1MHjC#y0k;)|A%n@ zU&b_OLL$BSJSVYDN_@yz%tim=UXbev+97j_N$MDp`aYAb0I2H&PIEz3TAO>or6r}_tc-lLj5d3uWnG!{z)n)-i zT`^hkXq+H-H&~WbIJ`NLaR-8umnI7i-JF`Bl)!arcINGiN&LJA@(v_yU<8GBIN=6< zwZ0LINqFYb^3=YEU37_fZ#Q8g-nA|)5f4kX0xYY82;gq4-+vYRTAIpAZ)TPZ_-w3GPs76#MhEG=^}5^UDo6R zEjAf~0VMTkXz~JSGC=Knk^oC|ta@X9I!B2b%%8g!U-}cUAfzq>glHVFA2_%*H335Z z-6g+N<3Kv+LGt7sUoc0WhTFeDxZPPRZne?(<>P|6W$(ha+)te<0!cM3z8I13ltfU_0oI!4knc&OQIG2(? zA9u$9E&3ZYbpuW1C@mTh#Nj+@IEQl-@&cjtCW^GkNlQz)YiV75Ky}BDF4`uC}5Lsl9Bj(Ec*9#f+RkbmEMRSQ*;p9jf^4kDs*VLDU_fOq=o0NIk7V8 z^|U9QN+!pTS&Aukr*0dG$9ozA-QqClPtZnoN_08}@|jsVjL!@TeF33h7E>qsKDlWJ z+q!!_cCB&D)yDmp4mE#}J8{+oQImA5BJb8ucd0bARt(IeALRijw44Xn4C6cig-TGX zlw}FNeo*U>z+H_zfPE&hoCmbm=K+7^0UmJwIN<@cOxSQ>KZ~}lt=?E%v|ovOQxhrp z0C&G}kkvz8-o9~A%_kUkAby~StJx30AQ$2+dL1XIe?+X5Ul%qdh}H5H%Ho41Ccj>% zzvhpxw*_p9u-hs2!86SHj1pl-5FP}=6g#09T6bZ?8ct)^f{bj^>>y2J7QnXXHdxqJmT+9xq+;`IstqLxur~Ht1 zjP~oCe%KH(fQC;7Fm7^TI^3k|jGGijw$liI_NVcDj9LKunX-xemT-xNOS&Hs2#Nbt zz1Tr zTg#V8;5%}JVSa=^J%Qey#J6H-)wG@y2o6aV=<~%}R(YG^L_kC-UwdG`ykn(JD-~19LF*Ff6+4BS!dZQCM_=pJWmv&J*+StSZvM^$1$u z*#?id2ldul+D}1RcCi(kxzYZdmVGKOt+zz^AuaPcFQa9f)`GP%*5S$q&GOHtG zfRXDW$g{RIBV|^dM=3EYl-mSyJ{g5LR`?Vt{*pk6+aQ_xV{ln4TvnT@PadhH9_3Df zT=tAc<5)Q^8z5}QLBli9aM>I=K#U)!C7S-6mY`4q2$fSCh+{RdrB+7UP&bJu{rD&+ z-KC?PK2{v%2~cahi>PhKc7o?r93{$S1G#eMLJ+IJq`og($to^We+n)u2bXG~2R)p7&82D9Vioxp?t>u0oP}laKT^Js2%Jp9(Hp2$yYVPRbBP z^(eO#3As`2z#W* zIe4=T()XoMAl<%PWHKLo(hoZL$D_o-Ux&sLp|J?&LJc3TGrSJuK!xKgv5T-k!PV5isu%GvB@`^SmHiF>5+bfha8|oFv&f0qB!YDpC87?&ry9Bf%-~uPw$UKeE_ZsFk zC7)IFnv8exHMDLCOk+89oI)mW$LVTM?l_^46~*uC!8HHTlIB0!V*cYk?l}4AJ5CR5 zz;Rkf1QO7xl7{z6H@piFON9{%gQJ1e{qNY|2(Dr@6&X+vy%Vlp$u2=w7vQn+MrVqy zxZ(L?{N%B^><+sHW&7&FPGMt?)MuR|^%{d^R$ry_#oWkT!}(%gaa;J(FwAOCK8ik7 z+1{d0^#P{F37A25C7-JLc+sc&h{hF!E4ij*a3J8F6Sj}LNlw)xZw03+YBxAl2}RMV zY9EBtUq2I0zh7pUe%HO|R8@{8tZ92$>QqHBe=35VK=ydJovU9d2NNHSEAd?|U<)-^ zm(?^m&FBGT{Jb&!E#~1W0|%6?S1BD(21Lfd0cA$dCmTHCpPf%uwhcX>tk1STaXwkS zvD6=voliDpo9=uvi&%|r-}t3baQBqXCp&Rc5Zg?}6wW8xcuElSr(y=rCyUu32)7$$ zZt#4v3`YdPvVx%g`DEV?3WDZ>p#J$}$LEPY8Jti&nMeLwJoFC zzRlHX+u2Ce_QVIazDKb9(|>Y4S&c@z^U3y;_UQR!&W-SVvNDaN^U3N!ciH)5DI?5< zzO;wF^n|{w#pVq^$_CFT%NL(i47|hp%sWgT$-To?L~mkqC+#EM31x?i2`=B|k=*5L z50XXUd@{!rnv)P(jC+x;DfXL~VC~2*5r`Tqr=!`@W&pS91TkK#i^3wn%$=|Zu$p>( zO^*=!^`-=Reek?#Ke02)euV4o>hCcEoxVE_nbS9ABzO8u9i&)%tPkE++aofk?{Gu$ z&T23|rp`cn_reT%SCaKER{es!KmB2uhnGn%a2wi@bIzmUp9_%9ebRH`u8@lFv)>c}hNa$;Xxa-J5(Ckk5Ydc}zam zn+%>`Ci%;8|I}ZG`$`Gq9Y%7O4iri5008j<+sPfd!W`PteU(Tq$`uB=Euz0XNmBoj zt&rE2sUHNF)q~4MF!g8qD5*y|XOL@Z++Tin%z(e_4H~+E2CIxn{pJnl?DSSg&Q4Lt z3xt{(_m{n8{_>*Xe3Wr#=p?oqAdYevsGR|7LzurD-&<*vC>IQJeMEn`hNM2%1*-l_ ze^I>;T(%J|E6>yiD5^)ftss}l+^E02@~8oSc_e5!2^wOlzw9xLPvZOzd=gRUGzeK{ zNYh{bEc(kWhDqlQ-=qVzl?`+ZXnqHpU6{Wd)=O!iDEA5E@~Z`Z`Q1>i{=_?~etSPr z{W!QR>kdeYVg7PGMfE6`1LO{;;V-v8V!&UX04f|o#RTdvXB^5W(!D*ONEE7s?HKl# zKg;~(C|oOGF7ska1a^t3kIokpRlJCPU#Ohm99`VG@=cB-)c(MIl02kX1jvsK_u zw<7`xLruitz0wWOusc2AvE)vV;_h@GaF_3k?lj#j3iQ*HderD~$1{)GgWY)UQ8PCh zn$JmZcU|@zaF5!XIouW|lEY11@(f?WJpdOQ{q1=Bitv?`KCF^0WDlE4iN?m)g%x>SL) z?nT_`YsAea|GGbO*S?1DpU4XW-!r0{?PG>+wuQ~KEa+wzj%$c+c0~9g@O_V=o9#hV z+K_);$iEqxuad%il~2r9dBxoBXT(<_{z^aMc8|a37BKJ{xZUKNmVL9p-?Rg-VHWwx z{@m@(Xfw?XGZq6QE@RWD(e0kKN5~KF)E6D)Yi?}4vxDSzx7aU;Ria||xObi?i8)3I zVwtJfGnBD6)w$jKsoULjl_30}kIqScB{|7d(0{uixK|MT#0C3O!S@k@;7maT2(2kOXogw)PW;pCO; z3SPXv<6FNfaeOVP{RR}s%rP_*9ZKi^@+A?k4pe+Ej zX;NT)kv{y19bAGM{&4a8thSjJnoRy4RJd6KeDS8d|CJYyzjXLKYu#T-L4tzuu{j|~ zfF3=0MsD<`&xm#8G3e7s(zX*GQ2vQZFU%>06o~XDN%{mxyP`Bi6;f!ppkRDoA|K!! z%jCyO@@GLl7m*Jb4_;(OkS-8kBPWkS*r(Vx?akvAmq0k_2cDR1LnX81rsCYlt_2T^~ ztn0_~9<(2mW&L&wdS*q6l^%TiBy3oq`GPrM^jR%leu@YRk@Xh!;?b&hq{ z#=2?UpSfzUz&2fiUsZuRK%AkN6WE@3i`N)zNXSRz=k2poO(P#4@)<}zJ;|pt`Lre< zck*#2pJ?)VMn0J%?Nk-Wrz81HA)hVebCrCaM%k(ElFwE0IZHmr$>(5{!FYpse$;QO zY0#@DXWzpgQ&+*Ev*;?6LuYIoxnJK{Dt|;fC07CEa)8_=akpefN&UPBRDDb*QGEq; zz~HhaOnqxb^(a?m8_O_EW4C0#2m`@~ipb?bOBu@LbN1j|zDpCfTe9^wAY>q!@JXc@ zd@x?qpdjH_Hu;>=sAurXOWNndHsWmQs8`P*Zkv8RgOgcseNemeSLzwm#~g%hx_Sn= zy||Omy)oM_nTTVrPswPHVffm(ztZsik~7`|A@x|MSkGV}ls~a|T$YY{1}&~@eqTKU zYn&YGX3{CU3V^py#J?M(WTRX)zRMq{d66=i}bNY}8+h^nBVT z0{k1Z{dejaZ0-1eQ_o% z>ioUG+FI)B8N6u5^7jsI{b%(I*3Q?}Gq@crCF-pytxMGFJO&f>W^|S%>dh%FPt=3& zh-)W15|(yjYg+XT#@Yz=41&9GR&r)*s(J<+Ix5vOc+^>{XAq|0^$Z$z;q?qIZbe#L zYcRePMH1m{sJI9)w##dcDkrAa<)pOObv=1I0<*~K8I0FR^$cb&(95s;(g_*BP(I*X zT{r_+U@0vwbn1i*K)qhZ0NRum89-PEWB>~XVIO^;L+_$r(cZ&!8tz%z=S0j)*s{9XjmY>Qa`tho|)qFmc8sp_9e>Ld43^(AELli{*q zTg3Wj9!ly_ZseAqtbexI05q$>M961hz~rI@c3&I zymQg>mFu4+0UocKpU(Pc=QZiCzt|qL|FdnS_0OC{HrQ$$`<9CzG2MBXc_p#GWlzh3`rwtoGyc4)H>7UT8L+DrA%)Vlg-ZP8}guaeh4 zD<-Rd)*5Zr6AbvM&prX0Wksy(vm#jkY_3L?Z%aDspZ%kHDo*YBivjyf@cfVFvNTb6 z|8H&*>Z#0jQ%n;Dxx1V6>#00x$JP6>MY~lVqWUv%+1E`%Jrzeq^(dFT>F4UHxU4r| zhR%VOzc%aYseEk9%}~uc%naq;3{NIV{<(T8=i2gFQM1(Fpk{jYRAz3L)l(Ut1?#B{ zTK9|fRPMmY!#C^dseEt4?NR;O%pUE)k%J_eL#N*OfR=tF*`t2(@LraityoXRJs#{) z*4gQ+r&9K`=6BRnQJJB0kSPpJ)WbTWiFybFf4A255bLQ__mk?Wm=)Bor_yZ#l|6Y8nFYQgKNEZl^&`l%N_PUr4{`L`w@5K#o8&6k29+6=$LdFe~Yb5+S) zv7SopK)re@YnmfI>#Z1 zMIb(vAst-1=|54wT-!oAulqB#p{|WZWC?{Azr;p?Ki_axLKc)Ovr(Tvmy*J&s<>uxR!vHej9cCxmI%yTz*vVH*XcxAc?2E36P=((Qw zz>dEy;Z@`VFw&E>iu`%$1HdaUZTk50#F+H+=d6op{qk7|PR`XtaM}i=tiH)OI2CN5 z08WqaX0M}T5A90#zuiJ`I&vSzJ$(j(Q>9R1L|&Wx+x&UiG(G;Tc1Qa(ArG@pg`0Bw zwCd{{&Y%0Z(LHqwWcI0h9??E+ZjAP64aSz#!8gG^ohDYw5A9QMfJXIk!@p9$T+@`l z5tBF5H{yh|XdrsSz1_ZEus`kVDH#Zq+qGWb{%m%a&gEnNdq0`_zHr%v^@9ERT31Ou z%3WFibN0t(sR8@bAGEw#ud_b~+_?QQtH|unyY=u$_Wv{XXQ>;Xj*^TqcXZOTKfN{x z_NVg-v_G|%{G$CC4FjIGL1%wXH{tfj&XL)lfDJI<(exe6)(IcTAJ-)NQ~eIShpK6c z_9xFBus@HcrqBMQM5o{Wyc>oYFyrQ+{fVh4+Mfw9%EKFs+n<%S73@zx9Qz15_M9DY z>?YUH{?xw>r1_pTZq*$eFK#{c$6Pw*}gt%>EkH`1L<&e_*W-s>)4HDu!7hLSeap zc4(5ot0$I-m>^CbV)*R6{`Shu zG;EaX19J0Cr2=%N3Dmfjyz=w)=L$-_@%})2bHA1jdU8PqYZA0k$`qGAA{;^hWo(MY zkS|dV(`i+@w@x;;#Ke;?@Y`GmZ}!^~hdxyLCVX4%;7Pw-f^UHiqv*HOxCmO6{3Jdt z`JXJXE=v9(PHKD)4A0hTJx`-Di{V+Ybxl&In0lBPMmranC~JWCffViTI&rjfD8*Au zQOIUJ`maS=qxrMBfEM55Dp>sNlX!}01O4bw*{gtdA0`sCD~c(mbFqtV+7tjj+B3*6 zRe(IJNR3|IJA8m}cR&ywsg!cc|HsoU$m)y=SE9(gwS&rcICma^lXU)E+|AC=DXi;w z0)A;l=9m1_iB512I>7^gzti}4ZY_;}mlpBU9j2twdZWeiys9X`=j(Lp14t9= z@FCu{)6WYMpTjuJQY-uxX6U{hnllw(V1MQTEV~M)NH&3E?FZq`^3eMpy5pF$8gbQPdaG@*_ zE`%k*O?S}_E#{`}M^Ls)(Ms<&*Af( zVxOlTCaaRpXR?__d_h$MZD7RfL|wA#<3M4#d|PcAsq>`o4Gev^l!&@AM3D4nlB0ND z>j)tkwKjr`eet=%1+8kc%sB`c1~^aRvUXH<-V8yuSZ!TW=yWcaK(j}W1qgyEwRD0Z zTripno|+~IUKIpGxgcFhux~t85ZodNhH=3`RPf70L2!y7xSk6-Q^D6`1i_AiU^o}d zO$FD9gQ*}0?&X5-Xe#W+_VU1|H>``-$;1zJJ{Rv?mgd4jg|JBVTF8ZkqmuXHnax-} z5p!WHTW3=3v!uDOBii#^*t*u33tQY;%7v{yNS6!ywWgR0+p31SD$;E&T6dRbXpqXE z0&+X}yhf$L=wzia5S`S}=;ZKe#4;^-^M>ZaM#D;a@yoE1z63GMRok&HL9Su1$&a!3 zoo$LWI8S~wi6%c5b~q{B=TdYH+hx$n!7G{Ry$B3ceb$=X1ms?Npol0 zS*UO}$ap=hM5gXros8(h8d&T>J0ZPDoydzd)-|YMvWwqm3!7=-H0QNrPMY(YGwHXz z`W)GGWO9*&R0i9@6|sSbG>4J~{u0R2bUCR&3*wXaSF z>I9h@PBvve!S0(B`{gz1Bb7O_;98ywYg6naxe?PL`dp7Fi-15=wR%ihUt2IG?$cB3 zlWL&0c+mEWYHKcOD+=1a{XlImiF^px)=Q?X8`Tz)V!w=PyARr)QEg_Dwo;&N3)Mz^ zc=u4QEvHOdd#Wuo#omKzyAIm!QEj_waBby5TUV;>E|Cx8+D=v#wKb>O!cy!_skZZ= z?HbkAThdk;v}K{%t`hn6T-!LAHdm@`eTscVb<`FI+RjmJxg>2hK-D$Y!2Yoo6#UgQ^nWA?XFz4a|q@RXrV84gKP$nV4T3RGs_9nrCl#)zkA;@l{*s zC-aL>W)k1FY*o-Nwr+x^oBUc8n;gcQ{7Y&w^eHyk67n@@ zll5E4nrtg;az$lqa#3S!(hr(!Nt%pRN1b9OOYQ4JC}#)afg=<2Ajaq}=YQH5#{XQj zmy8m?7OzuM5^@q9AyppRsS1&ghJ0Q#z2e12x9dQLtM$>%2dTqK{9e3rKuqpOU77(aajXOF0S5YVDTRG9?dQ_O;&*oLIQI9#Y+EPj`7s`c$+*YwN{oSfu zy;U4lzeJ|~30!s>E*r_zmr_)Za_2#=nel*t^K=6NfoGs02{c&KfWW&d+>x!8k2|s` z^b&+lr(KyIHb+VG_@N3P=&dJopgYTo1APvf?N<}c!OUZCP*Q22D3=T5dWivn`I7q0 zEN;_EralQSs|1&oW$GW7P*RU_)j%$z@qoaOsRjZ9FF`|V&=5l-!ka4dd3=+H&m#)8 z1)(X10|Id@mx5NN9|x=F7!^3Ll1Bv=Rpw(4O=SDO%g7E4g~p~qV~#8;5MNyJz)+CW zf}BPd6{zBZW$Ak<>~~EoK42>KtK2-=ujtac_y7z%(gs+_0uvS=pdMK)feI*BZ?+sW zJLdWuDOZ2qNTk{Xe9&^xKuzkq7p%m6_ddC~?~Xzh)*!p<=ZyBUIvx7JH z-R<;!_hHAucdteS5HSLbka`mk@%H8%>4jwdBK&VAqRjfl>4r~MpwM46V6SQXqXh|!8k)h zX?@xL;|SqhOAyMY*foy7mrtWP-C7&td?*Fq@(& z{;YsM?P%@@jqCBfUL9CL7})F8`I%dQ58YN-QTnS^_-kJ2FIx5&E9o03qn zmqYhRFLGeZRqoR05a zfaSKd0KoA@?YenMxR1V#^(0RPSEx=3W|o&LOV7z^taF8&;eRBiG_o{th3bR)LKyv- zV4Fy8XuRq0F|x`+)TtZ?PUUB!{Xw#YYF`HGRJL!-oyx>yD9~?xnf$|?$|qfQPUV_1 zqEnetinKcz+TEm*KRAgQ=pfmH;(rSXF33xn>SKAPdbP5^Z$A?QTtI$j~ zsEekcR1`SD{fMzVSs0w)a{a*xhTqA^tBfKxVfI6Cf)oCx=Dkt_(h0U7Ftm>z+fFHs z)OQq2AE`#60+p}sz=DBIR6DHKSX zRP!b`m*Gv8piM$ap;x7_$v_ublLCLL*$rD&7((Bz0!aK=F1e)NoihS7A660_M9 zyGOU}xNDEQYOln5e8BCLpCCw(;TYX8d!B_QC*i;29K4B<1Jfl&0RBY2YpXIGt)ItG zw6-fEvWTs~4(_fH@?BRJP+}1%_i%-NzUzn5(mC6g8UHIRst8`qnzo= zpUZb`H{Jl*-2qziuGHnbnwRDz%`F>Sw$Hy3@DC*aT)ykQQhZiEtY-C(9Q5*C=d6_F zyDqJdtZ2fxU(9!nhLK0C)aAQcmEx?ZMOL_72e}SH9`rVw$b(|gby;bAN&j441tPQnr{e&f4(A#) z|8Eacputfv6_t7+5h^i^7`>%;-u&<6yPhv@DBpF0myp8Rx2W-a*LwX0;hIH_SiSReYT8MF5!QiPWeTAecV#0x(@b!E}c= zd9Ivqy-~_{ZQ4yQ-*s0JgtaofhgXVnSZjG%%6H9K1YvEUw+zs0-_yrTN?a9PtZ0l)kd)uUXCu%E-P&=CgkYa(bF6sE(khDD_FZ><@Ad53}7 zn)pZYD_;>lD^Cv6S-F!(55FFT$?$97eR}?_&oAOv5R5#-3LSpA6_)Z}tr&ipuYi#U zQG-3V63u_zuFHSjjrp&h%IDwi#{5^$be?~^=(pgPXCHe0?I?QwZDtX_X2Za1uSnzk z+nfsc^$Z_`8FV`QE8=tv3P=3fwhN}hrz_%Dg#mE>?bZJw{IV@%2)_%kN7V&EdM#0qc%3}v7Y=I6& z?VufuRZk%I|LgMq5`JCI&rRu=$<&n2&M5+n3%vgmmI?S(Fq;yK$e38^dMGmI?TEG^>(&lv}y%=kV+LU<3H&23ig-)8W_Dd>p?{n=|~1UIu2%?T_MD z*L-|dDovrYk|&2AemO3e;n$WMh+oNrei6Sqz{p!I*Wp)SUTOccn&DTQsO zL-#*#)a`%XhWnq}E8^FkZMgrrefse0(461ne_coaD~l)M*U*e2eszU`2QN2{U(K>8 z;8zu#j<$3BR-qlwQmt0*pPp|7Vv7_|@H731Cp};u3xQ+Leo| z*B+(nhso6E!0^rz0l&-?)uY_oB|nE>Ir|#GuUw!d^HLpt9nZ<}%Sy%Y%XTT4tz3T; zzn16Zvl7Id-p;mq_~o}$hF>o(B7W8G^NaXZ6h^*!sSdwR=aBaQ&<(Y2k!x|}MXABg zR*dfdS*6?mvjO-2v{b~eJR5NTPmA>7S4!Y-!LR%^(f?Z5k)Hpp67j1P#=n;u$FG@| z3ive*r^A6xhZX$1KzsjzMsrb+w@yo6Yu```d{14$*h`k~Fs@+V0q~ckP?Hh( ze#p?_lP$roxl4@U*XCmaejUon@hfNv;@55me4Lht0X*DUqfsS00Di4%2KWWPlb$c? zNS-TotRjA8cGtr%A3Maam%NAbvU2>&8ZF`1^(=^Atvkx_>*7NZzjE6me%aFwCNGB$ z)?^)wRVO#qs1_~xFX30KtWsU5nQZ+_BLd7r2Us#%EUteXU1MM*O%uN0V%xTDCzs?d zwv&r4cJ5-^wr!gm+qP|clW*Ve*Us!rb%p{(8F$-b*<)V$mUagaM$ojpaoJQ7KMde_x{Cj9`3Ox&E4M-xyO0xQ1heQB5Ld})WB z8`zGW8_+ud#~HKE4OD#Ky@S?wlix5IPu`ZXn|uune(#tj7uJ267W*13+w*PBoZ3$* zECZ5f9&0dLKZA;A*BTiseF$HP`)cmf5UYLKLeCAH7{`-}@sW3+U{#D`M`kC|* zytn-N<5cgi0qm`flh}yn+XXU?e7GPHT{GhM#;ao8InwxoK-s-1UpL<&t+I&la zx*gZbmauWrY5q(KtM-{iS{g!%){z7O@T=wcUOZ>*`k7Nc2>Pk0XP0>qao)jMjw;n8 z>T%UKN~5(!qsnEVP%WGNC~+E5#yskESI!kH1u++LHxy%KFybl;3%g&q%7uDmRRM%d z@WJC`IPp>Hpgl>0D3hWDo3@%N?BpM34&OigqVwuA1JR$A<-6uwyNu!uH$lG#MA&*4 zBv2=NUL+HWVao@@N{%dM$ez$L#a-bqh(^W0hU9d+ts)#7_rt*wX|C+l zpOo`&fg6m|Ja%s*$6v8jkA=w8g3Wi@iAS*1d#F_W!#+n1Jfo!~WM>?phg@nJ(uaLO`OjY(@aeMH(jtQiv&^sc6?%HgEn!(K#!i2t z81a9z(72G{#AX^PO%9-1_mZZ3|BFI#ZGu7}*m|(7TAxYNrjlqqOu4N{k{!p*i2?vZ z!n;AxpbUGOh*-D80_-)(-1w1PYHf_XwaMIQJ%_goRp=@0moR0B^kfRcCw%2}>?$Zg zXMb1yOB%~7`FE>pM?|jh`eZaahk}y9nfw3faz?S_-*IBGpa) zI2NKM5_H0olA1jcFA*pH8G(4z zatq=lsBp(Dk?OQom(yZejjuEtR`{ecV%U@@|8YmQ$HD*1A5W}@jivLoau*iV6H^ov zVqUHxJ*9Gu?2CZ~5FLIc~t7N6K0K$TvYzu@;xp>M&L6KWOV;Pd^CW zUCl2jIFd8sMwN*ZhoT+LM6bHSs`FttJ09-&lLZR5JReHBMj0N5hI}aOTd?v9qi|P- za94^R_VJ12Z|C|)n2PMlZ$m{+UTPHyE$~bB3NK+c&CiAcJ;i1fi5h;$G*Y6ZjgD*e z$dXy!==~~_UdN@WF%vEcmRKvUy~5cnYMhkvNm14d%L;P%N5vm4CS!qbt-kk6Y+YLW zla_ue@v&8VWKEkow9*C(!Ct0xR_<5yHHNfKh9Zd#SYo41ZEsmxRS++1MKroI739x# zDKl_FDt;P^0y9-#og+m3H5&5uxFOy~m9+?tpGA$>u+tSMg=RAl8L_A{`4u4y>brs`ao{Qy|wm;b9Mg_F>rfe1LK0({16E&Rv(qG>0uX9nfiv* z3h&66mI)sfz9M^T?D)xS?SHN)rrsEBFDlyVo2_@7R>w_eE%gka##eM?qGuh1D1K zjtWMj1BffhhHNG&KXssy>DAg|l;N*RzFdj+Nf^!2F9%_yPj(Izn?t1iQOW zZ0mYKJ7r2vUO%p%S9O0O)=W~fDo3^JsY+%+){yF5EaCmAf9fU4&-oYlf)|~YYM54L zuJou953X^K6b+ilRus;uN#ql$a|M#N7{E9?xcSIlXjvQX97m8o1AD>w--q<-h74}T z`p=^*f0eF5jLhIp%)EM%l^GeQ+VOZK$-vQ!7Jl_#P6G-?J#?NDER#G% z{#*RWx7~V;NHmxK40kpOc1G`s)+)I!f@0g8G?Zw7@aEL@O`3uczypMYGzW*_O~=i3 zY;UN44o_?yF%z2EV92_;rFY0Z6uHNnv7UnB6Ho#<6I;LzuF_%6OozSq&K4m`-F?#D z;Ow;!bep4|!%Q z|9d!(UyK}D@;WpWR(X87THmXk|1e(2{s)S*^wlL&IiN6&b@%Ux_SgA z`RJVb)ODpQp$CVS%!gO8KsfAwJydXJUysOB(7!Gwm&QRa|ZkT^OX`UbOT~ zMt|t}gaW2|P(ildD19Kc;Iw;j&&>WYn7B(3f}k-}X5})vL;Bczf2J2*00Pj1vrn|W z+ADxsFeadf4hu~)N_Tz5a4N8eKI?!WpUpm=y(W`hcocW1tpeQh{Dq(2B093~F=${@ zP|HxTlF*)DIz@)it7({ffByzcy3(pRy1QI9N!(dHtm-7hPXjv?1C1maY(1?2InB5(i!+!9riK!j3IC)jtXk?9PrR0XwOF-ldLSbj6gZ&n?9GFRglniPzR zF@=+xH8fVXp_OgG>AW_*LC*5Q2Phla;EbAVb|~AKps)uhUPmH#P;xqX@OZ2A3lL4yTS4x7S+VHKKLx zVwzgJ9^n$|+WFmWMf&|-PeG#jHWx)g(JZcQd;BE-9)hyj5428Ul8BTD`E@p_b)}A< z_9kV&O4C{?sPgsD4VoMAp&bvSr1DiP@ox08eS;NeZo=ya8GmLnc6SV{lEE>8=LuR! z<%|DV>tYN;evs$qoAHYo^cxB|>IVh!-tG}UCxVtjtR%-|lKFxZk6qweA1cM4yt+@{ zn8y1Sm{mX%qJjuhuPcSS0wTnf44OGh+9a%Pl(r!HtAK6$$T4crgot_VuC#M00~+CA zd_M~gVKH{3ZT3h=PJo*oSIodJAoz(OPmq5oEM;2_PiRanZL$*#E0Re(V3t&vI7;X) z(`9%m$$UW%G=zqnQ!WC zJ!Q;rn^{p%C2JZSJl~~AGVbx?)h}-Lg2-Ks^u>A|m^^Mc%HHtsd?g&g-?`+}vN| zf(;7)I0*@X7beRbk3W&8V81ZVFu&SMvHmqZ?#YeVOEGR}08 zCG+YW6@+WTVIft^RJvqvlJTqi7C?V&@#7PE|;V{6Dw9}pf}K@+AtQbU_r%h*U&|w9X>&y58Gw@JUd1#JgWkE ztNKls|0`DcKZ8%tbNO<41qTH)12=O+tBDP`yp2`Z8$$mtzCz}PdBDy?@BkvKZ*K>Q zd(f{MYVy?#?sh$t{ujg#-jKAn+x5u!H-5y@w^aQ6w^?ppTmcKc$6Jj7Qq`w}b{)Zm z(c8A8zPPpHW1mJJTzEt5v=Z0=#=kKMD|y4bVLwQ>Q34lsaVnKvu8x6$&vDR}1>erv^$U36@P^E%#Vz%{Lb4BdB#A@Ggi&~;s zx(k_>kxMK_ey29jwZ(2R(Mp&P-^G4m@3nv}e^%VCSGV}Ed1thwiiD%v;zVw5G186@ zb{n#Id(@HlTYx{N@D|TOv_LJlfRNobH~6->pRO5+x+TFM1^qyf*nNr zEg+(tmnti7T5k`NE(UK8ngk|q{@ZpOK$k-jM;h--$$m?M8O-f^8@KBRmoW<--=&kM zOUN_$wjngD%l@njjwy0?zv~&l^|+M&UWQ-z?Yh)I_uKWM<+wp&y=hHP06xwa#asP% zP)q52Dt~ZY;7vIkd$KVb&AP|U33r2QU;Q!G#@KH;t}z_1?mS#x-c64>zb*W` z5WbC-#|ZGCb)vc(*S-p2eEzMCFleVU+dN%qY=aD#@=9q@DSWxiu2|V?di2FlEF$g_wHUHfK>h%=xmvXoi@|)l|7(a7*}6I6jpI-H z0Xv`qZ5?7_NAV)4?*K!KIhQhv(+(-HMxv%Arne5- z+O}$OH+=9k1ZXI2qJu{06gvxOES2;@ZD1=z7DAtal(_oFO*V25v@u5q_tE+Iw}dJ5 z5vO)?laYlQvJJ7ejtA0!>p@yX;=_NCpYtzOWeZv7rmL^eC69Y8NdbW`mvMVI0KG#H zzt+0p%w@A^`-{!%c;;L5#x%&*G$D%xu;T?-oLyy)9H~D-axE_p{r*^Lp}zX6|7q~i z9CCggu`RD1g3yv7$fnx?LDor=L zk?c_Bps`eu)h}(uoFw3_&Q1BE z=*n+L*}S5(ME5-zyB$!leLqsP8hxYDbr!Ye(@3eNYOnZS!

      2. x_M!XPLE%oRD~2wx0)=+L_}4j? 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�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�Qk$3gocQAho6wcwBsW*0bL|R5~rW)SVwv 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

      d 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